From 181e7f1869a4d6a5a0333f00414f2847db811e6f Mon Sep 17 00:00:00 2001 From: MarcusLongmuir Date: Mon, 27 Jan 2025 17:23:36 +0000 Subject: [PATCH] deploy: e27d50267d8b493d1e9479ec6e755ec982c825b6 --- pull/212/index.html | 1 + .../212/v1/PlayCanvasModeInternal-6JRQ32LR.js | 57531 ++++++++++++++++ .../v1/PlayCanvasModeInternal-6JRQ32LR.js.map | 7 + pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js | 34003 +++++++++ .../v1/ThreeJSModeInternal-OES4PZ5X.js.map | 7 + pull/212/v1/chunk-CPWJBFSW.js | 78 + pull/212/v1/chunk-CPWJBFSW.js.map | 7 + pull/212/v1/chunk-OGDCF6KN.js | 9500 +++ pull/212/v1/chunk-OGDCF6KN.js.map | 7 + pull/212/v1/cloudysky_2k-WS2HEI54.jpg | Bin 0 -> 201967 bytes pull/212/v1/favicon.svg | 5 + pull/212/v1/github-mark-white-DC6LPEI2.svg | 1 + pull/212/v1/index.css | 302 + pull/212/v1/index.css.map | 7 + pull/212/v1/index.html | 10 + pull/212/v1/index.js | 781 + pull/212/v1/index.js.map | 7 + pull/212/v1/mml-logotype-white-YIZ3ZTFD.svg | 8 + 18 files changed, 102262 insertions(+) create mode 100644 pull/212/index.html create mode 100644 pull/212/v1/PlayCanvasModeInternal-6JRQ32LR.js create mode 100644 pull/212/v1/PlayCanvasModeInternal-6JRQ32LR.js.map create mode 100644 pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js create mode 100644 pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js.map create mode 100644 pull/212/v1/chunk-CPWJBFSW.js create mode 100644 pull/212/v1/chunk-CPWJBFSW.js.map create mode 100644 pull/212/v1/chunk-OGDCF6KN.js create mode 100644 pull/212/v1/chunk-OGDCF6KN.js.map create mode 100644 pull/212/v1/cloudysky_2k-WS2HEI54.jpg create mode 100644 pull/212/v1/favicon.svg create mode 100644 pull/212/v1/github-mark-white-DC6LPEI2.svg create mode 100644 pull/212/v1/index.css create mode 100644 pull/212/v1/index.css.map create mode 100644 pull/212/v1/index.html create mode 100644 pull/212/v1/index.js create mode 100644 pull/212/v1/index.js.map create mode 100644 pull/212/v1/mml-logotype-white-YIZ3ZTFD.svg diff --git a/pull/212/index.html b/pull/212/index.html new file mode 100644 index 00000000..e56e1ef7 --- /dev/null +++ b/pull/212/index.html @@ -0,0 +1 @@ + diff --git a/pull/212/v1/PlayCanvasModeInternal-6JRQ32LR.js b/pull/212/v1/PlayCanvasModeInternal-6JRQ32LR.js new file mode 100644 index 00000000..d1b49697 --- /dev/null +++ b/pull/212/v1/PlayCanvasModeInternal-6JRQ32LR.js @@ -0,0 +1,57531 @@ +import { + calculateContentBounds, + envMaps, + parseXYZ +} from "./chunk-CPWJBFSW.js"; +import { + Audio as Audio2, + AudioGraphics, + CanvasText, + ChatProbeGraphics, + CubeGraphics, + CylinderGraphics, + DebugHelperGraphics, + EventHandlerCollection, + FrameGraphics, + FullScreenMMLScene, + Image as Image2, + ImageGraphics, + InteractionGraphics, + LabelGraphics, + LightGraphics, + LinkGraphics, + LoadingInstanceManager, + MELEMENT_PROPERTY_NAME, + MElement, + MElementGraphics, + MMLNetworkSource, + Matr4, + Model, + ModelGraphics, + NetworkedDOMWebsocketStatus, + NetworkedDOMWebsocketStatusToString, + PlaneGraphics, + PositionProbeGraphics, + PromptGraphics, + Quat, + RemoteDocumentGraphics, + SphereGraphics, + StaticFileVideoSource, + StatusUI, + TransformableElement, + TransformableGraphics, + Vect3, + VideoGraphics, + WHEPVideoSource, + ambientLightColorField, + ambientLightField, + backgroundColorField, + calculateContentSize, + cameraFitContents, + cameraFovField, + cameraLookAtField, + cameraModeField, + cameraOrbitDistanceField, + cameraOrbitPitchField, + cameraOrbitSpeedField, + cameraPositionField, + environmentMapField, + getRelativePositionAndRotationRelativeToObject, + parseColorAttribute, + setDebugGlobals +} from "./chunk-OGDCF6KN.js"; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/constants.js +var TRACEID_GPU_TIMINGS = "GpuTimings"; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/core.js +var version = "1.73.5"; +var revision = "26a4396"; +var typeofs = ["undefined", "number", "string", "boolean"]; +var objectTypes = { + "[object Array]": "array", + "[object Object]": "object", + "[object Function]": "function", + "[object Date]": "date", + "[object RegExp]": "regexp", + "[object Float32Array]": "float32array" +}; +function type(obj) { + if (obj === null) { + return "null"; + } + const typeString = typeof obj; + if (typeofs.includes(typeString)) { + return typeString; + } + return objectTypes[Object.prototype.toString.call(obj)]; +} +function extend(target2, ex) { + for (const prop in ex) { + const copy = ex[prop]; + if (type(copy) === "object") { + target2[prop] = extend({}, copy); + } else if (type(copy) === "array") { + target2[prop] = extend([], copy); + } else { + target2[prop] = copy; + } + } + return target2; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/core/event-handle.js +var EventHandle = class { + constructor(handler, name, callback, scope, once = false) { + this.handler = void 0; + this.name = void 0; + this.callback = void 0; + this.scope = void 0; + this._once = void 0; + this._removed = false; + this.handler = handler; + this.name = name; + this.callback = callback; + this.scope = scope; + this._once = once; + } + off() { + if (this._removed) return; + this.handler.off(this.name, this.callback, this.scope); + } + on(name, callback, scope = this) { + return this.handler._addCallback(name, callback, scope, false); + } + once(name, callback, scope = this) { + return this.handler._addCallback(name, callback, scope, true); + } + set removed(value) { + if (!value) return; + this._removed = true; + } + get removed() { + return this._removed; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/event-handler.js +var EventHandler = class { + constructor() { + this._callbacks = /* @__PURE__ */ new Map(); + this._callbackActive = /* @__PURE__ */ new Map(); + } + initEventHandler() { + this._callbacks = /* @__PURE__ */ new Map(); + this._callbackActive = /* @__PURE__ */ new Map(); + } + _addCallback(name, callback, scope, once) { + if (!this._callbacks.has(name)) this._callbacks.set(name, []); + if (this._callbackActive.has(name)) { + const callbackActive = this._callbackActive.get(name); + if (callbackActive && callbackActive === this._callbacks.get(name)) { + this._callbackActive.set(name, callbackActive.slice()); + } + } + const evt = new EventHandle(this, name, callback, scope, once); + this._callbacks.get(name).push(evt); + return evt; + } + on(name, callback, scope = this) { + return this._addCallback(name, callback, scope, false); + } + once(name, callback, scope = this) { + return this._addCallback(name, callback, scope, true); + } + off(name, callback, scope) { + if (name) { + if (this._callbackActive.has(name) && this._callbackActive.get(name) === this._callbacks.get(name)) this._callbackActive.set(name, this._callbackActive.get(name).slice()); + } else { + for (const [key, callbacks] of this._callbackActive) { + if (!this._callbacks.has(key)) continue; + if (this._callbacks.get(key) !== callbacks) continue; + this._callbackActive.set(key, callbacks.slice()); + } + } + if (!name) { + for (const callbacks of this._callbacks.values()) { + for (let i = 0; i < callbacks.length; i++) { + callbacks[i].removed = true; + } + } + this._callbacks.clear(); + } else if (!callback) { + const callbacks = this._callbacks.get(name); + if (callbacks) { + for (let i = 0; i < callbacks.length; i++) { + callbacks[i].removed = true; + } + this._callbacks.delete(name); + } + } else { + const callbacks = this._callbacks.get(name); + if (!callbacks) return this; + for (let i = 0; i < callbacks.length; i++) { + if (callbacks[i].callback !== callback) continue; + if (scope && callbacks[i].scope !== scope) continue; + callbacks[i].removed = true; + callbacks.splice(i, 1); + i--; + } + if (callbacks.length === 0) this._callbacks.delete(name); + } + return this; + } + fire(name, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (!name) return this; + const callbacksInitial = this._callbacks.get(name); + if (!callbacksInitial) return this; + let callbacks; + if (!this._callbackActive.has(name)) { + this._callbackActive.set(name, callbacksInitial); + } else if (this._callbackActive.get(name) !== callbacksInitial) { + callbacks = callbacksInitial.slice(); + } + for (let i = 0; (callbacks || this._callbackActive.get(name)) && i < (callbacks || this._callbackActive.get(name)).length; i++) { + const evt = (callbacks || this._callbackActive.get(name))[i]; + if (!evt.callback) continue; + evt.callback.call(evt.scope, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); + if (evt._once) { + const existingCallback = this._callbacks.get(name); + const ind = existingCallback ? existingCallback.indexOf(evt) : -1; + if (ind !== -1) { + if (this._callbackActive.get(name) === existingCallback) this._callbackActive.set(name, this._callbackActive.get(name).slice()); + const _callbacks = this._callbacks.get(name); + if (!_callbacks) continue; + _callbacks[ind].removed = true; + _callbacks.splice(ind, 1); + if (_callbacks.length === 0) this._callbacks.delete(name); + } + } + } + if (!callbacks) this._callbackActive.delete(name); + return this; + } + hasEvent(name) { + var _this$_callbacks$get; + return !!((_this$_callbacks$get = this._callbacks.get(name)) != null && _this$_callbacks$get.length); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/events.js +var events = { + attach(target2) { + const ev = events; + target2._addCallback = ev._addCallback; + target2.on = ev.on; + target2.off = ev.off; + target2.fire = ev.fire; + target2.once = ev.once; + target2.hasEvent = ev.hasEvent; + EventHandler.prototype.initEventHandler.call(target2); + return target2; + }, + _addCallback: EventHandler.prototype._addCallback, + on: EventHandler.prototype.on, + off: EventHandler.prototype.off, + fire: EventHandler.prototype.fire, + once: EventHandler.prototype.once, + hasEvent: EventHandler.prototype.hasEvent +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/guid.js +var guid = { + create() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c2) { + const r = Math.random() * 16 | 0; + const v = c2 === "x" ? r : r & 3 | 8; + return v.toString(16); + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/path.js +var path = { + delimiter: "/", + join(...sections) { + let result = sections[0]; + for (let i = 0; i < sections.length - 1; i++) { + const one = sections[i]; + const two = sections[i + 1]; + if (two[0] === path.delimiter) { + result = two; + continue; + } + if (one && two && one[one.length - 1] !== path.delimiter && two[0] !== path.delimiter) { + result += path.delimiter + two; + } else { + result += two; + } + } + return result; + }, + normalize(pathname) { + const lead = pathname.startsWith(path.delimiter); + const trail = pathname.endsWith(path.delimiter); + const parts = pathname.split("/"); + let result = ""; + let cleaned = []; + for (let i = 0; i < parts.length; i++) { + if (parts[i] === "") continue; + if (parts[i] === ".") continue; + if (parts[i] === ".." && cleaned.length > 0) { + cleaned = cleaned.slice(0, cleaned.length - 2); + continue; + } + if (i > 0) cleaned.push(path.delimiter); + cleaned.push(parts[i]); + } + result = cleaned.join(""); + if (!lead && result[0] === path.delimiter) { + result = result.slice(1); + } + if (trail && result[result.length - 1] !== path.delimiter) { + result += path.delimiter; + } + return result; + }, + split(pathname) { + const lastDelimiterIndex = pathname.lastIndexOf(path.delimiter); + if (lastDelimiterIndex !== -1) { + return [pathname.substring(0, lastDelimiterIndex), pathname.substring(lastDelimiterIndex + 1)]; + } + return ["", pathname]; + }, + getBasename(pathname) { + return path.split(pathname)[1]; + }, + getDirectory(pathname) { + return path.split(pathname)[0]; + }, + getExtension(pathname) { + const ext = pathname.split("?")[0].split(".").pop(); + if (ext !== pathname) { + return "." + ext; + } + return ""; + }, + isRelativePath(pathname) { + return pathname.charAt(0) !== "/" && pathname.match(/:\/\//) === null; + }, + extractPath(pathname) { + let result = ""; + const parts = pathname.split("/"); + let i = 0; + if (parts.length > 1) { + if (path.isRelativePath(pathname)) { + if (parts[0] === ".") { + for (i = 0; i < parts.length - 1; ++i) { + result += i === 0 ? parts[i] : "/" + parts[i]; + } + } else if (parts[0] === "..") { + for (i = 0; i < parts.length - 1; ++i) { + result += i === 0 ? parts[i] : "/" + parts[i]; + } + } else { + result = "."; + for (i = 0; i < parts.length - 1; ++i) { + result += "/" + parts[i]; + } + } + } else { + for (i = 0; i < parts.length - 1; ++i) { + result += i === 0 ? parts[i] : "/" + parts[i]; + } + } + } + return result; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/platform.js +var _ref; +var _ref2; +var _ref3; +var detectPassiveEvents = () => { + let result = false; + try { + const opts = Object.defineProperty({}, "passive", { + get: function() { + result = true; + return false; + } + }); + window.addEventListener("testpassive", null, opts); + window.removeEventListener("testpassive", null, opts); + } catch (e) { + } + return result; +}; +var ua = typeof navigator !== "undefined" ? navigator.userAgent : ""; +var environment = typeof window !== "undefined" ? "browser" : typeof global !== "undefined" ? "node" : "worker"; +var platformName = /android/i.test(ua) ? "android" : /ip([ao]d|hone)/i.test(ua) ? "ios" : /windows/i.test(ua) ? "windows" : /mac os/i.test(ua) ? "osx" : /linux/i.test(ua) ? "linux" : /cros/i.test(ua) ? "cros" : null; +var browserName = environment !== "browser" ? null : /(Chrome\/|Chromium\/|Edg.*\/)/.test(ua) ? "chrome" : /Safari\//.test(ua) ? "safari" : /Firefox\//.test(ua) ? "firefox" : "other"; +var xbox = /xbox/i.test(ua); +var touch = environment === "browser" && ("ontouchstart" in window || "maxTouchPoints" in navigator && navigator.maxTouchPoints > 0); +var gamepads = environment === "browser" && (!!navigator.getGamepads || !!navigator.webkitGetGamepads); +var workers = typeof Worker !== "undefined"; +var passiveEvents = detectPassiveEvents(); +var platform = { + name: platformName, + environment, + global: (_ref = (_ref2 = (_ref3 = typeof globalThis !== "undefined" && globalThis) != null ? _ref3 : environment === "browser" && window) != null ? _ref2 : environment === "node" && global) != null ? _ref : environment === "worker" && self, + browser: environment === "browser", + worker: environment === "worker", + desktop: ["windows", "osx", "linux", "cros"].includes(platformName), + mobile: ["android", "ios"].includes(platformName), + ios: platformName === "ios", + android: platformName === "android", + xbox, + gamepads, + touch, + workers, + passiveEvents, + browserName +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/string.js +var ASCII_LOWERCASE = "abcdefghijklmnopqrstuvwxyz"; +var ASCII_UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +var ASCII_LETTERS = ASCII_LOWERCASE + ASCII_UPPERCASE; +var HIGH_SURROGATE_BEGIN = 55296; +var HIGH_SURROGATE_END = 56319; +var LOW_SURROGATE_BEGIN = 56320; +var LOW_SURROGATE_END = 57343; +var ZERO_WIDTH_JOINER = 8205; +var REGIONAL_INDICATOR_BEGIN = 127462; +var REGIONAL_INDICATOR_END = 127487; +var FITZPATRICK_MODIFIER_BEGIN = 127995; +var FITZPATRICK_MODIFIER_END = 127999; +var DIACRITICAL_MARKS_BEGIN = 8400; +var DIACRITICAL_MARKS_END = 8447; +var VARIATION_MODIFIER_BEGIN = 65024; +var VARIATION_MODIFIER_END = 65039; +function getCodePointData(string2, i = 0) { + const size = string2.length; + if (i < 0 || i >= size) { + return null; + } + const first = string2.charCodeAt(i); + if (size > 1 && first >= HIGH_SURROGATE_BEGIN && first <= HIGH_SURROGATE_END) { + const second = string2.charCodeAt(i + 1); + if (second >= LOW_SURROGATE_BEGIN && second <= LOW_SURROGATE_END) { + return { + code: (first - HIGH_SURROGATE_BEGIN) * 1024 + second - LOW_SURROGATE_BEGIN + 65536, + long: true + }; + } + } + return { + code: first, + long: false + }; +} +function isCodeBetween(string2, begin, end) { + if (!string2) return false; + const codeData = getCodePointData(string2); + if (codeData) { + const code = codeData.code; + return code >= begin && code <= end; + } + return false; +} +function numCharsToTakeForNextSymbol(string2, index) { + if (index === string2.length - 1) { + return 1; + } + if (isCodeBetween(string2[index], HIGH_SURROGATE_BEGIN, HIGH_SURROGATE_END)) { + const first = string2.substring(index, index + 2); + const second = string2.substring(index + 2, index + 4); + if (isCodeBetween(second, FITZPATRICK_MODIFIER_BEGIN, FITZPATRICK_MODIFIER_END) || isCodeBetween(first, REGIONAL_INDICATOR_BEGIN, REGIONAL_INDICATOR_END) && isCodeBetween(second, REGIONAL_INDICATOR_BEGIN, REGIONAL_INDICATOR_END)) { + return 4; + } + if (isCodeBetween(second, VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) { + return 3; + } + return 2; + } + if (isCodeBetween(string2[index + 1], VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) { + return 2; + } + return 1; +} +var string = { + ASCII_LOWERCASE, + ASCII_UPPERCASE, + ASCII_LETTERS, + format(s, ...args) { + for (let i = 0; i < args.length; i++) { + s = s.replace(`{${i}}`, args[i]); + } + return s; + }, + getCodePoint(string2, i) { + const codePointData = getCodePointData(string2, i); + return codePointData && codePointData.code; + }, + getCodePoints(string2) { + if (typeof string2 !== "string") { + throw new TypeError("Not a string"); + } + let i = 0; + const arr = []; + let codePoint; + while (!!(codePoint = getCodePointData(string2, i))) { + arr.push(codePoint.code); + i += codePoint.long ? 2 : 1; + } + return arr; + }, + getSymbols(string2) { + if (typeof string2 !== "string") { + throw new TypeError("Not a string"); + } + let index = 0; + const length = string2.length; + const output = []; + let take = 0; + let ch; + while (index < length) { + take += numCharsToTakeForNextSymbol(string2, index + take); + ch = string2[index + take]; + if (isCodeBetween(ch, DIACRITICAL_MARKS_BEGIN, DIACRITICAL_MARKS_END)) { + ch = string2[index + take++]; + } + if (isCodeBetween(ch, VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) { + ch = string2[index + take++]; + } + if (ch && ch.charCodeAt(0) === ZERO_WIDTH_JOINER) { + ch = string2[index + take++]; + continue; + } + const char = string2.substring(index, index + take); + output.push(char); + index += take; + take = 0; + } + return output; + }, + fromCodePoint() { + const chars = []; + let current; + let codePoint; + let units; + for (let i = 0; i < arguments.length; ++i) { + current = Number(arguments[i]); + codePoint = current - 65536; + units = current > 65535 ? [(codePoint >> 10) + 55296, codePoint % 1024 + 56320] : [current]; + chars.push(String.fromCharCode.apply(null, units)); + } + return chars.join(""); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/wasm-module.js +var cachedResult = (func) => { + const uninitToken = {}; + let result = uninitToken; + return () => { + if (result === uninitToken) { + result = func(); + } + return result; + }; +}; +var Impl = class _Impl { + static loadScript(url, callback) { + const s = document.createElement("script"); + s.setAttribute("src", url); + s.onload = () => { + callback(null); + }; + s.onerror = () => { + callback(`Failed to load script='${url}'`); + }; + document.body.appendChild(s); + } + static loadWasm(moduleName, config, callback) { + const loadUrl = _Impl.wasmSupported() && config.glueUrl && config.wasmUrl ? config.glueUrl : config.fallbackUrl; + if (loadUrl) { + _Impl.loadScript(loadUrl, (err) => { + if (err) { + callback(err, null); + } else { + const module = window[moduleName]; + window[moduleName] = void 0; + module({ + locateFile: () => config.wasmUrl, + onAbort: () => { + callback("wasm module aborted."); + } + }).then((instance) => { + callback(null, instance); + }); + } + }); + } else { + callback("No supported wasm modules found.", null); + } + } + static getModule(name) { + if (!_Impl.modules.hasOwnProperty(name)) { + _Impl.modules[name] = { + config: null, + initializing: false, + instance: null, + callbacks: [] + }; + } + return _Impl.modules[name]; + } + static initialize(moduleName, module) { + if (module.initializing) { + return; + } + const config = module.config; + if (config.glueUrl || config.wasmUrl || config.fallbackUrl) { + module.initializing = true; + _Impl.loadWasm(moduleName, config, (err, instance) => { + if (err) { + if (config.errorHandler) { + config.errorHandler(err); + } else { + console.error(`failed to initialize module=${moduleName} error=${err}`); + } + } else { + module.instance = instance; + module.callbacks.forEach((callback) => { + callback(instance); + }); + } + }); + } + } +}; +Impl.modules = {}; +Impl.wasmSupported = cachedResult(() => { + try { + if (typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function") { + const module = new WebAssembly.Module(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0)); + if (module instanceof WebAssembly.Module) return new WebAssembly.Instance(module) instanceof WebAssembly.Instance; + } + } catch (e) { + } + return false; +}); +var WasmModule = class { + static setConfig(moduleName, config) { + const module = Impl.getModule(moduleName); + module.config = config; + if (module.callbacks.length > 0) { + Impl.initialize(moduleName, module); + } + } + static getConfig(moduleName) { + var _Impl$modules; + return (_Impl$modules = Impl.modules) == null || (_Impl$modules = _Impl$modules[moduleName]) == null ? void 0 : _Impl$modules.config; + } + static getInstance(moduleName, callback) { + const module = Impl.getModule(moduleName); + if (module.instance) { + callback(module.instance); + } else { + module.callbacks.push(callback); + if (module.config) { + Impl.initialize(moduleName, module); + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/read-stream.js +var ReadStream = class { + constructor(arraybuffer) { + this.arraybuffer = void 0; + this.dataView = void 0; + this.offset = 0; + this.arraybuffer = arraybuffer; + this.dataView = new DataView(arraybuffer); + } + get remainingBytes() { + return this.dataView.byteLength - this.offset; + } + reset(offset = 0) { + this.offset = offset; + } + skip(bytes) { + this.offset += bytes; + } + align(bytes) { + this.offset = this.offset + bytes - 1 & ~(bytes - 1); + } + _inc(amount) { + this.offset += amount; + return this.offset - amount; + } + readChar() { + return String.fromCharCode(this.dataView.getUint8(this.offset++)); + } + readChars(numChars) { + let result = ""; + for (let i = 0; i < numChars; ++i) { + result += this.readChar(); + } + return result; + } + readU8() { + return this.dataView.getUint8(this.offset++); + } + readU16() { + return this.dataView.getUint16(this._inc(2), true); + } + readU32() { + return this.dataView.getUint32(this._inc(4), true); + } + readU64() { + return this.readU32() + 2 ** 32 * this.readU32(); + } + readU32be() { + return this.dataView.getUint32(this._inc(4), false); + } + readArray(result) { + for (let i = 0; i < result.length; ++i) { + result[i] = this.readU8(); + } + } + readLine() { + const view = this.dataView; + let result = ""; + while (true) { + if (this.offset >= view.byteLength) { + break; + } + const c2 = String.fromCharCode(this.readU8()); + if (c2 === "\n") { + break; + } + result += c2; + } + return result; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/tags.js +var Tags = class extends EventHandler { + constructor(parent) { + super(); + this._index = {}; + this._list = []; + this._parent = parent; + } + add(...args) { + let changed = false; + const tags = this._processArguments(args, true); + if (!tags.length) return changed; + for (let i = 0; i < tags.length; i++) { + if (this._index[tags[i]]) continue; + changed = true; + this._index[tags[i]] = true; + this._list.push(tags[i]); + this.fire("add", tags[i], this._parent); + } + if (changed) this.fire("change", this._parent); + return changed; + } + remove(...args) { + let changed = false; + if (!this._list.length) return changed; + const tags = this._processArguments(args, true); + if (!tags.length) return changed; + for (let i = 0; i < tags.length; i++) { + if (!this._index[tags[i]]) continue; + changed = true; + delete this._index[tags[i]]; + this._list.splice(this._list.indexOf(tags[i]), 1); + this.fire("remove", tags[i], this._parent); + } + if (changed) this.fire("change", this._parent); + return changed; + } + clear() { + if (!this._list.length) return; + const tags = this._list.slice(0); + this._list = []; + this._index = {}; + for (let i = 0; i < tags.length; i++) this.fire("remove", tags[i], this._parent); + this.fire("change", this._parent); + } + has(...query) { + if (!this._list.length) return false; + return this._has(this._processArguments(query)); + } + _has(tags) { + if (!this._list.length || !tags.length) return false; + for (let i = 0; i < tags.length; i++) { + if (tags[i].length === 1) { + if (this._index[tags[i][0]]) return true; + } else { + let multiple = true; + for (let t = 0; t < tags[i].length; t++) { + if (this._index[tags[i][t]]) continue; + multiple = false; + break; + } + if (multiple) return true; + } + } + return false; + } + list() { + return this._list.slice(0); + } + _processArguments(args, flat) { + const tags = []; + let tmp = []; + if (!args || !args.length) return tags; + for (let i = 0; i < args.length; i++) { + if (args[i] instanceof Array) { + if (!flat) tmp = []; + for (let t = 0; t < args[i].length; t++) { + if (typeof args[i][t] !== "string") continue; + if (flat) { + tags.push(args[i][t]); + } else { + tmp.push(args[i][t]); + } + } + if (!flat && tmp.length) tags.push(tmp); + } else if (typeof args[i] === "string") { + if (flat) { + tags.push(args[i]); + } else { + tags.push([args[i]]); + } + } + } + return tags; + } + get size() { + return this._list.length; + } +}; +Tags.EVENT_ADD = "add"; +Tags.EVENT_REMOVE = "remove"; +Tags.EVENT_CHANGE = "change"; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/time.js +var now = typeof window !== "undefined" && window.performance && window.performance.now ? performance.now.bind(performance) : Date.now; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/uri.js +var re = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/; +var URI = class { + constructor(uri) { + this.scheme = void 0; + this.authority = void 0; + this.path = void 0; + this.query = void 0; + this.fragment = void 0; + const result = uri.match(re); + this.scheme = result[2]; + this.authority = result[4]; + this.path = result[5]; + this.query = result[7]; + this.fragment = result[9]; + } + toString() { + let s = ""; + if (this.scheme) { + s += this.scheme + ":"; + } + if (this.authority) { + s += "//" + this.authority; + } + s += this.path; + if (this.query) { + s += "?" + this.query; + } + if (this.fragment) { + s += "#" + this.fragment; + } + return s; + } + getQuery() { + const result = {}; + if (this.query) { + const queryParams = decodeURIComponent(this.query).split("&"); + for (const queryParam of queryParams) { + const pair = queryParam.split("="); + result[pair[0]] = pair[1]; + } + } + return result; + } + setQuery(params) { + let q2 = ""; + for (const key in params) { + if (params.hasOwnProperty(key)) { + if (q2 !== "") { + q2 += "&"; + } + q2 += encodeURIComponent(key) + "=" + encodeURIComponent(params[key]); + } + } + this.query = q2; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/tracing.js +var Tracing = class _Tracing { + static set(channel, enabled = true) { + } + static get(channel) { + return _Tracing._traceChannels.has(channel); + } +}; +Tracing._traceChannels = /* @__PURE__ */ new Set(); +Tracing.stack = false; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/math.js +var math = { + DEG_TO_RAD: Math.PI / 180, + RAD_TO_DEG: 180 / Math.PI, + clamp(value, min, max) { + if (value >= max) return max; + if (value <= min) return min; + return value; + }, + intToBytes24(i) { + const r = i >> 16 & 255; + const g = i >> 8 & 255; + const b = i & 255; + return [r, g, b]; + }, + intToBytes32(i) { + const r = i >> 24 & 255; + const g = i >> 16 & 255; + const b = i >> 8 & 255; + const a = i & 255; + return [r, g, b, a]; + }, + bytesToInt24(r, g, b) { + if (r.length) { + b = r[2]; + g = r[1]; + r = r[0]; + } + return r << 16 | g << 8 | b; + }, + bytesToInt32(r, g, b, a) { + if (r.length) { + a = r[3]; + b = r[2]; + g = r[1]; + r = r[0]; + } + return (r << 24 | g << 16 | b << 8 | a) >>> 0; + }, + lerp(a, b, alpha) { + return a + (b - a) * math.clamp(alpha, 0, 1); + }, + lerpAngle(a, b, alpha) { + if (b - a > 180) { + b -= 360; + } + if (b - a < -180) { + b += 360; + } + return math.lerp(a, b, math.clamp(alpha, 0, 1)); + }, + powerOfTwo(x2) { + return x2 !== 0 && !(x2 & x2 - 1); + }, + nextPowerOfTwo(val) { + val--; + val |= val >> 1; + val |= val >> 2; + val |= val >> 4; + val |= val >> 8; + val |= val >> 16; + val++; + return val; + }, + nearestPowerOfTwo(val) { + return Math.pow(2, Math.round(Math.log(val) / Math.log(2))); + }, + random(min, max) { + const diff = max - min; + return Math.random() * diff + min; + }, + smoothstep(min, max, x2) { + if (x2 <= min) return 0; + if (x2 >= max) return 1; + x2 = (x2 - min) / (max - min); + return x2 * x2 * (3 - 2 * x2); + }, + smootherstep(min, max, x2) { + if (x2 <= min) return 0; + if (x2 >= max) return 1; + x2 = (x2 - min) / (max - min); + return x2 * x2 * x2 * (x2 * (x2 * 6 - 15) + 10); + }, + roundUp(numToRound, multiple) { + if (multiple === 0) return numToRound; + return Math.ceil(numToRound / multiple) * multiple; + }, + between(num, a, b, inclusive) { + const min = Math.min(a, b); + const max = Math.max(a, b); + return inclusive ? num >= min && num <= max : num > min && num < max; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/color.js +var _Color; +var Color = class { + constructor(r = 0, g = 0, b = 0, a = 1) { + this.r = void 0; + this.g = void 0; + this.b = void 0; + this.a = void 0; + const length = r.length; + if (length === 3 || length === 4) { + this.r = r[0]; + this.g = r[1]; + this.b = r[2]; + this.a = r[3] !== void 0 ? r[3] : 1; + } else { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + } + clone() { + const cstr = this.constructor; + return new cstr(this.r, this.g, this.b, this.a); + } + copy(rhs) { + this.r = rhs.r; + this.g = rhs.g; + this.b = rhs.b; + this.a = rhs.a; + return this; + } + equals(rhs) { + return this.r === rhs.r && this.g === rhs.g && this.b === rhs.b && this.a === rhs.a; + } + set(r, g, b, a = 1) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + return this; + } + lerp(lhs, rhs, alpha) { + this.r = lhs.r + alpha * (rhs.r - lhs.r); + this.g = lhs.g + alpha * (rhs.g - lhs.g); + this.b = lhs.b + alpha * (rhs.b - lhs.b); + this.a = lhs.a + alpha * (rhs.a - lhs.a); + return this; + } + fromString(hex) { + const i = parseInt(hex.replace("#", "0x"), 16); + let bytes; + if (hex.length > 7) { + bytes = math.intToBytes32(i); + } else { + bytes = math.intToBytes24(i); + bytes[3] = 255; + } + this.set(bytes[0] / 255, bytes[1] / 255, bytes[2] / 255, bytes[3] / 255); + return this; + } + toString(alpha) { + let s = "#" + ((1 << 24) + (Math.round(this.r * 255) << 16) + (Math.round(this.g * 255) << 8) + Math.round(this.b * 255)).toString(16).slice(1); + if (alpha === true) { + const a = Math.round(this.a * 255).toString(16); + if (this.a < 16 / 255) { + s += "0" + a; + } else { + s += a; + } + } + return s; + } +}; +_Color = Color; +Color.BLACK = Object.freeze(new _Color(0, 0, 0, 1)); +Color.BLUE = Object.freeze(new _Color(0, 0, 1, 1)); +Color.CYAN = Object.freeze(new _Color(0, 1, 1, 1)); +Color.GRAY = Object.freeze(new _Color(0.5, 0.5, 0.5, 1)); +Color.GREEN = Object.freeze(new _Color(0, 1, 0, 1)); +Color.MAGENTA = Object.freeze(new _Color(1, 0, 1, 1)); +Color.RED = Object.freeze(new _Color(1, 0, 0, 1)); +Color.WHITE = Object.freeze(new _Color(1, 1, 1, 1)); +Color.YELLOW = Object.freeze(new _Color(1, 1, 0, 1)); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/float-packing.js +var oneDiv255 = 1 / 255; +var floatView = new Float32Array(1); +var int32View = new Int32Array(floatView.buffer); +var FloatPacking = class _FloatPacking { + static float2Half(value) { + floatView[0] = value; + const x2 = int32View[0]; + let bits = x2 >> 16 & 32768; + let m = x2 >> 12 & 2047; + const e = x2 >> 23 & 255; + if (e < 103) { + return bits; + } + if (e > 142) { + bits |= 31744; + bits |= (e === 255 ? 0 : 1) && x2 & 8388607; + return bits; + } + if (e < 113) { + m |= 2048; + bits |= (m >> 114 - e) + (m >> 113 - e & 1); + return bits; + } + bits |= e - 112 << 10 | m >> 1; + bits += m & 1; + return bits; + } + static float2Bytes(value, array2, offset, numBytes) { + const enc1 = 255 * value % 1; + array2[offset + 0] = Math.round((value % 1 - oneDiv255 * enc1) * 255); + if (numBytes > 1) { + const enc2 = 65025 * value % 1; + array2[offset + 1] = Math.round((enc1 - oneDiv255 * enc2) * 255); + if (numBytes > 2) { + const enc3 = 16581375 * value % 1; + array2[offset + 2] = Math.round((enc2 - oneDiv255 * enc3) * 255); + if (numBytes > 3) { + array2[offset + 3] = Math.round(enc3 * 255); + } + } + } + } + static float2BytesRange(value, array2, offset, min, max, numBytes) { + value = math.clamp((value - min) / (max - min), 0, 1); + _FloatPacking.float2Bytes(value, array2, offset, numBytes); + } + static float2MantissaExponent(value, array2, offset, numBytes) { + const exponent = Math.floor(Math.log2(Math.abs(value))) + 1; + value /= Math.pow(2, exponent); + _FloatPacking.float2BytesRange(value, array2, offset, -1, 1, numBytes - 1); + array2[offset + numBytes - 1] = Math.round(exponent + 127); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/vec3.js +var _Vec; +var Vec3 = class { + constructor(x2 = 0, y2 = 0, z2 = 0) { + this.x = void 0; + this.y = void 0; + this.z = void 0; + if (x2.length === 3) { + this.x = x2[0]; + this.y = x2[1]; + this.z = x2[2]; + } else { + this.x = x2; + this.y = y2; + this.z = z2; + } + } + add(rhs) { + this.x += rhs.x; + this.y += rhs.y; + this.z += rhs.z; + return this; + } + add2(lhs, rhs) { + this.x = lhs.x + rhs.x; + this.y = lhs.y + rhs.y; + this.z = lhs.z + rhs.z; + return this; + } + addScalar(scalar) { + this.x += scalar; + this.y += scalar; + this.z += scalar; + return this; + } + addScaled(rhs, scalar) { + this.x += rhs.x * scalar; + this.y += rhs.y * scalar; + this.z += rhs.z * scalar; + return this; + } + clone() { + const cstr = this.constructor; + return new cstr(this.x, this.y, this.z); + } + copy(rhs) { + this.x = rhs.x; + this.y = rhs.y; + this.z = rhs.z; + return this; + } + cross(lhs, rhs) { + const lx = lhs.x; + const ly = lhs.y; + const lz = lhs.z; + const rx = rhs.x; + const ry = rhs.y; + const rz = rhs.z; + this.x = ly * rz - ry * lz; + this.y = lz * rx - rz * lx; + this.z = lx * ry - rx * ly; + return this; + } + distance(rhs) { + const x2 = this.x - rhs.x; + const y2 = this.y - rhs.y; + const z2 = this.z - rhs.z; + return Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2); + } + div(rhs) { + this.x /= rhs.x; + this.y /= rhs.y; + this.z /= rhs.z; + return this; + } + div2(lhs, rhs) { + this.x = lhs.x / rhs.x; + this.y = lhs.y / rhs.y; + this.z = lhs.z / rhs.z; + return this; + } + divScalar(scalar) { + this.x /= scalar; + this.y /= scalar; + this.z /= scalar; + return this; + } + dot(rhs) { + return this.x * rhs.x + this.y * rhs.y + this.z * rhs.z; + } + equals(rhs) { + return this.x === rhs.x && this.y === rhs.y && this.z === rhs.z; + } + equalsApprox(rhs, epsilon3 = 1e-6) { + return Math.abs(this.x - rhs.x) < epsilon3 && Math.abs(this.y - rhs.y) < epsilon3 && Math.abs(this.z - rhs.z) < epsilon3; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + lerp(lhs, rhs, alpha) { + this.x = lhs.x + alpha * (rhs.x - lhs.x); + this.y = lhs.y + alpha * (rhs.y - lhs.y); + this.z = lhs.z + alpha * (rhs.z - lhs.z); + return this; + } + mul(rhs) { + this.x *= rhs.x; + this.y *= rhs.y; + this.z *= rhs.z; + return this; + } + mul2(lhs, rhs) { + this.x = lhs.x * rhs.x; + this.y = lhs.y * rhs.y; + this.z = lhs.z * rhs.z; + return this; + } + mulScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + return this; + } + normalize(src = this) { + const lengthSq = src.x * src.x + src.y * src.y + src.z * src.z; + if (lengthSq > 0) { + const invLength = 1 / Math.sqrt(lengthSq); + this.x = src.x * invLength; + this.y = src.y * invLength; + this.z = src.z * invLength; + } + return this; + } + floor(src = this) { + this.x = Math.floor(src.x); + this.y = Math.floor(src.y); + this.z = Math.floor(src.z); + return this; + } + ceil(src = this) { + this.x = Math.ceil(src.x); + this.y = Math.ceil(src.y); + this.z = Math.ceil(src.z); + return this; + } + round(src = this) { + this.x = Math.round(src.x); + this.y = Math.round(src.y); + this.z = Math.round(src.z); + return this; + } + min(rhs) { + if (rhs.x < this.x) this.x = rhs.x; + if (rhs.y < this.y) this.y = rhs.y; + if (rhs.z < this.z) this.z = rhs.z; + return this; + } + max(rhs) { + if (rhs.x > this.x) this.x = rhs.x; + if (rhs.y > this.y) this.y = rhs.y; + if (rhs.z > this.z) this.z = rhs.z; + return this; + } + project(rhs) { + const a_dot_b = this.x * rhs.x + this.y * rhs.y + this.z * rhs.z; + const b_dot_b = rhs.x * rhs.x + rhs.y * rhs.y + rhs.z * rhs.z; + const s = a_dot_b / b_dot_b; + this.x = rhs.x * s; + this.y = rhs.y * s; + this.z = rhs.z * s; + return this; + } + set(x2, y2, z2) { + this.x = x2; + this.y = y2; + this.z = z2; + return this; + } + sub(rhs) { + this.x -= rhs.x; + this.y -= rhs.y; + this.z -= rhs.z; + return this; + } + sub2(lhs, rhs) { + this.x = lhs.x - rhs.x; + this.y = lhs.y - rhs.y; + this.z = lhs.z - rhs.z; + return this; + } + subScalar(scalar) { + this.x -= scalar; + this.y -= scalar; + this.z -= scalar; + return this; + } + toString() { + return `[${this.x}, ${this.y}, ${this.z}]`; + } +}; +_Vec = Vec3; +Vec3.ZERO = Object.freeze(new _Vec(0, 0, 0)); +Vec3.ONE = Object.freeze(new _Vec(1, 1, 1)); +Vec3.UP = Object.freeze(new _Vec(0, 1, 0)); +Vec3.DOWN = Object.freeze(new _Vec(0, -1, 0)); +Vec3.RIGHT = Object.freeze(new _Vec(1, 0, 0)); +Vec3.LEFT = Object.freeze(new _Vec(-1, 0, 0)); +Vec3.FORWARD = Object.freeze(new _Vec(0, 0, -1)); +Vec3.BACK = Object.freeze(new _Vec(0, 0, 1)); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/mat3.js +var _Mat; +var Mat3 = class { + constructor() { + this.data = new Float32Array(9); + this.data[0] = this.data[4] = this.data[8] = 1; + } + clone() { + const cstr = this.constructor; + return new cstr().copy(this); + } + copy(rhs) { + const src = rhs.data; + const dst = this.data; + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = src[3]; + dst[4] = src[4]; + dst[5] = src[5]; + dst[6] = src[6]; + dst[7] = src[7]; + dst[8] = src[8]; + return this; + } + set(src) { + const dst = this.data; + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = src[3]; + dst[4] = src[4]; + dst[5] = src[5]; + dst[6] = src[6]; + dst[7] = src[7]; + dst[8] = src[8]; + return this; + } + getX(x2 = new Vec3()) { + return x2.set(this.data[0], this.data[1], this.data[2]); + } + getY(y2 = new Vec3()) { + return y2.set(this.data[3], this.data[4], this.data[5]); + } + getZ(z2 = new Vec3()) { + return z2.set(this.data[6], this.data[7], this.data[8]); + } + equals(rhs) { + const l = this.data; + const r = rhs.data; + return l[0] === r[0] && l[1] === r[1] && l[2] === r[2] && l[3] === r[3] && l[4] === r[4] && l[5] === r[5] && l[6] === r[6] && l[7] === r[7] && l[8] === r[8]; + } + isIdentity() { + const m = this.data; + return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 0 && m[4] === 1 && m[5] === 0 && m[6] === 0 && m[7] === 0 && m[8] === 1; + } + setIdentity() { + const m = this.data; + m[0] = 1; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 1; + m[5] = 0; + m[6] = 0; + m[7] = 0; + m[8] = 1; + return this; + } + toString() { + return "[" + this.data.join(", ") + "]"; + } + transpose(src = this) { + const s = src.data; + const t = this.data; + if (s === t) { + let tmp; + tmp = s[1]; + t[1] = s[3]; + t[3] = tmp; + tmp = s[2]; + t[2] = s[6]; + t[6] = tmp; + tmp = s[5]; + t[5] = s[7]; + t[7] = tmp; + } else { + t[0] = s[0]; + t[1] = s[3]; + t[2] = s[6]; + t[3] = s[1]; + t[4] = s[4]; + t[5] = s[7]; + t[6] = s[2]; + t[7] = s[5]; + t[8] = s[8]; + } + return this; + } + setFromMat4(m) { + const src = m.data; + const dst = this.data; + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = src[4]; + dst[4] = src[5]; + dst[5] = src[6]; + dst[6] = src[8]; + dst[7] = src[9]; + dst[8] = src[10]; + return this; + } + setFromQuat(r) { + const qx = r.x; + const qy = r.y; + const qz = r.z; + const qw = r.w; + const x2 = qx + qx; + const y2 = qy + qy; + const z2 = qz + qz; + const xx = qx * x2; + const xy = qx * y2; + const xz = qx * z2; + const yy = qy * y2; + const yz = qy * z2; + const zz = qz * z2; + const wx = qw * x2; + const wy = qw * y2; + const wz = qw * z2; + const m = this.data; + m[0] = 1 - (yy + zz); + m[1] = xy + wz; + m[2] = xz - wy; + m[3] = xy - wz; + m[4] = 1 - (xx + zz); + m[5] = yz + wx; + m[6] = xz + wy; + m[7] = yz - wx; + m[8] = 1 - (xx + yy); + return this; + } + invertMat4(src) { + const s = src.data; + const a0 = s[0]; + const a1 = s[1]; + const a2 = s[2]; + const a4 = s[4]; + const a5 = s[5]; + const a6 = s[6]; + const a8 = s[8]; + const a9 = s[9]; + const a10 = s[10]; + const b11 = a10 * a5 - a6 * a9; + const b21 = -a10 * a1 + a2 * a9; + const b31 = a6 * a1 - a2 * a5; + const b12 = -a10 * a4 + a6 * a8; + const b22 = a10 * a0 - a2 * a8; + const b32 = -a6 * a0 + a2 * a4; + const b13 = a9 * a4 - a5 * a8; + const b23 = -a9 * a0 + a1 * a8; + const b33 = a5 * a0 - a1 * a4; + const det = a0 * b11 + a1 * b12 + a2 * b13; + if (det === 0) { + this.setIdentity(); + } else { + const invDet = 1 / det; + const t = this.data; + t[0] = b11 * invDet; + t[1] = b21 * invDet; + t[2] = b31 * invDet; + t[3] = b12 * invDet; + t[4] = b22 * invDet; + t[5] = b32 * invDet; + t[6] = b13 * invDet; + t[7] = b23 * invDet; + t[8] = b33 * invDet; + } + return this; + } + transformVector(vec2, res = new Vec3()) { + const m = this.data; + const { + x: x2, + y: y2, + z: z2 + } = vec2; + res.x = x2 * m[0] + y2 * m[3] + z2 * m[6]; + res.y = x2 * m[1] + y2 * m[4] + z2 * m[7]; + res.z = x2 * m[2] + y2 * m[5] + z2 * m[8]; + return res; + } +}; +_Mat = Mat3; +Mat3.IDENTITY = Object.freeze(new _Mat()); +Mat3.ZERO = Object.freeze(new _Mat().set([0, 0, 0, 0, 0, 0, 0, 0, 0])); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/vec2.js +var _Vec2; +var Vec2 = class { + constructor(x2 = 0, y2 = 0) { + this.x = void 0; + this.y = void 0; + if (x2.length === 2) { + this.x = x2[0]; + this.y = x2[1]; + } else { + this.x = x2; + this.y = y2; + } + } + add(rhs) { + this.x += rhs.x; + this.y += rhs.y; + return this; + } + add2(lhs, rhs) { + this.x = lhs.x + rhs.x; + this.y = lhs.y + rhs.y; + return this; + } + addScalar(scalar) { + this.x += scalar; + this.y += scalar; + return this; + } + addScaled(rhs, scalar) { + this.x += rhs.x * scalar; + this.y += rhs.y * scalar; + return this; + } + clone() { + const cstr = this.constructor; + return new cstr(this.x, this.y); + } + copy(rhs) { + this.x = rhs.x; + this.y = rhs.y; + return this; + } + cross(rhs) { + return this.x * rhs.y - this.y * rhs.x; + } + distance(rhs) { + const x2 = this.x - rhs.x; + const y2 = this.y - rhs.y; + return Math.sqrt(x2 * x2 + y2 * y2); + } + div(rhs) { + this.x /= rhs.x; + this.y /= rhs.y; + return this; + } + div2(lhs, rhs) { + this.x = lhs.x / rhs.x; + this.y = lhs.y / rhs.y; + return this; + } + divScalar(scalar) { + this.x /= scalar; + this.y /= scalar; + return this; + } + dot(rhs) { + return this.x * rhs.x + this.y * rhs.y; + } + equals(rhs) { + return this.x === rhs.x && this.y === rhs.y; + } + equalsApprox(rhs, epsilon3 = 1e-6) { + return Math.abs(this.x - rhs.x) < epsilon3 && Math.abs(this.y - rhs.y) < epsilon3; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } + lengthSq() { + return this.x * this.x + this.y * this.y; + } + lerp(lhs, rhs, alpha) { + this.x = lhs.x + alpha * (rhs.x - lhs.x); + this.y = lhs.y + alpha * (rhs.y - lhs.y); + return this; + } + mul(rhs) { + this.x *= rhs.x; + this.y *= rhs.y; + return this; + } + mul2(lhs, rhs) { + this.x = lhs.x * rhs.x; + this.y = lhs.y * rhs.y; + return this; + } + mulScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + return this; + } + normalize(src = this) { + const lengthSq = src.x * src.x + src.y * src.y; + if (lengthSq > 0) { + const invLength = 1 / Math.sqrt(lengthSq); + this.x = src.x * invLength; + this.y = src.y * invLength; + } + return this; + } + rotate(degrees) { + const angle = Math.atan2(this.x, this.y) + degrees * math.DEG_TO_RAD; + const len = Math.sqrt(this.x * this.x + this.y * this.y); + this.x = Math.sin(angle) * len; + this.y = Math.cos(angle) * len; + return this; + } + angle() { + return Math.atan2(this.x, this.y) * math.RAD_TO_DEG; + } + angleTo(rhs) { + return Math.atan2(this.x * rhs.y + this.y * rhs.x, this.x * rhs.x + this.y * rhs.y) * math.RAD_TO_DEG; + } + floor(src = this) { + this.x = Math.floor(src.x); + this.y = Math.floor(src.y); + return this; + } + ceil(src = this) { + this.x = Math.ceil(src.x); + this.y = Math.ceil(src.y); + return this; + } + round(src = this) { + this.x = Math.round(src.x); + this.y = Math.round(src.y); + return this; + } + min(rhs) { + if (rhs.x < this.x) this.x = rhs.x; + if (rhs.y < this.y) this.y = rhs.y; + return this; + } + max(rhs) { + if (rhs.x > this.x) this.x = rhs.x; + if (rhs.y > this.y) this.y = rhs.y; + return this; + } + set(x2, y2) { + this.x = x2; + this.y = y2; + return this; + } + sub(rhs) { + this.x -= rhs.x; + this.y -= rhs.y; + return this; + } + sub2(lhs, rhs) { + this.x = lhs.x - rhs.x; + this.y = lhs.y - rhs.y; + return this; + } + subScalar(scalar) { + this.x -= scalar; + this.y -= scalar; + return this; + } + toString() { + return `[${this.x}, ${this.y}]`; + } + static angleRad(lhs, rhs) { + return Math.atan2(lhs.x * rhs.y - lhs.y * rhs.x, lhs.x * rhs.x + lhs.y * rhs.y); + } +}; +_Vec2 = Vec2; +Vec2.ZERO = Object.freeze(new _Vec2(0, 0)); +Vec2.ONE = Object.freeze(new _Vec2(1, 1)); +Vec2.UP = Object.freeze(new _Vec2(0, 1)); +Vec2.DOWN = Object.freeze(new _Vec2(0, -1)); +Vec2.RIGHT = Object.freeze(new _Vec2(1, 0)); +Vec2.LEFT = Object.freeze(new _Vec2(-1, 0)); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/vec4.js +var _Vec3; +var Vec4 = class { + constructor(x2 = 0, y2 = 0, z2 = 0, w = 0) { + this.x = void 0; + this.y = void 0; + this.z = void 0; + this.w = void 0; + if (x2.length === 4) { + this.x = x2[0]; + this.y = x2[1]; + this.z = x2[2]; + this.w = x2[3]; + } else { + this.x = x2; + this.y = y2; + this.z = z2; + this.w = w; + } + } + add(rhs) { + this.x += rhs.x; + this.y += rhs.y; + this.z += rhs.z; + this.w += rhs.w; + return this; + } + add2(lhs, rhs) { + this.x = lhs.x + rhs.x; + this.y = lhs.y + rhs.y; + this.z = lhs.z + rhs.z; + this.w = lhs.w + rhs.w; + return this; + } + addScalar(scalar) { + this.x += scalar; + this.y += scalar; + this.z += scalar; + this.w += scalar; + return this; + } + addScaled(rhs, scalar) { + this.x += rhs.x * scalar; + this.y += rhs.y * scalar; + this.z += rhs.z * scalar; + this.w += rhs.w * scalar; + return this; + } + clone() { + const cstr = this.constructor; + return new cstr(this.x, this.y, this.z, this.w); + } + copy(rhs) { + this.x = rhs.x; + this.y = rhs.y; + this.z = rhs.z; + this.w = rhs.w; + return this; + } + div(rhs) { + this.x /= rhs.x; + this.y /= rhs.y; + this.z /= rhs.z; + this.w /= rhs.w; + return this; + } + div2(lhs, rhs) { + this.x = lhs.x / rhs.x; + this.y = lhs.y / rhs.y; + this.z = lhs.z / rhs.z; + this.w = lhs.w / rhs.w; + return this; + } + divScalar(scalar) { + this.x /= scalar; + this.y /= scalar; + this.z /= scalar; + this.w /= scalar; + return this; + } + dot(rhs) { + return this.x * rhs.x + this.y * rhs.y + this.z * rhs.z + this.w * rhs.w; + } + equals(rhs) { + return this.x === rhs.x && this.y === rhs.y && this.z === rhs.z && this.w === rhs.w; + } + equalsApprox(rhs, epsilon3 = 1e-6) { + return Math.abs(this.x - rhs.x) < epsilon3 && Math.abs(this.y - rhs.y) < epsilon3 && Math.abs(this.z - rhs.z) < epsilon3 && Math.abs(this.w - rhs.w) < epsilon3; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + } + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + } + lerp(lhs, rhs, alpha) { + this.x = lhs.x + alpha * (rhs.x - lhs.x); + this.y = lhs.y + alpha * (rhs.y - lhs.y); + this.z = lhs.z + alpha * (rhs.z - lhs.z); + this.w = lhs.w + alpha * (rhs.w - lhs.w); + return this; + } + mul(rhs) { + this.x *= rhs.x; + this.y *= rhs.y; + this.z *= rhs.z; + this.w *= rhs.w; + return this; + } + mul2(lhs, rhs) { + this.x = lhs.x * rhs.x; + this.y = lhs.y * rhs.y; + this.z = lhs.z * rhs.z; + this.w = lhs.w * rhs.w; + return this; + } + mulScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + return this; + } + normalize(src = this) { + const lengthSq = src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w; + if (lengthSq > 0) { + const invLength = 1 / Math.sqrt(lengthSq); + this.x = src.x * invLength; + this.y = src.y * invLength; + this.z = src.z * invLength; + this.w = src.w * invLength; + } + return this; + } + floor(src = this) { + this.x = Math.floor(src.x); + this.y = Math.floor(src.y); + this.z = Math.floor(src.z); + this.w = Math.floor(src.w); + return this; + } + ceil(src = this) { + this.x = Math.ceil(src.x); + this.y = Math.ceil(src.y); + this.z = Math.ceil(src.z); + this.w = Math.ceil(src.w); + return this; + } + round(src = this) { + this.x = Math.round(src.x); + this.y = Math.round(src.y); + this.z = Math.round(src.z); + this.w = Math.round(src.w); + return this; + } + min(rhs) { + if (rhs.x < this.x) this.x = rhs.x; + if (rhs.y < this.y) this.y = rhs.y; + if (rhs.z < this.z) this.z = rhs.z; + if (rhs.w < this.w) this.w = rhs.w; + return this; + } + max(rhs) { + if (rhs.x > this.x) this.x = rhs.x; + if (rhs.y > this.y) this.y = rhs.y; + if (rhs.z > this.z) this.z = rhs.z; + if (rhs.w > this.w) this.w = rhs.w; + return this; + } + set(x2, y2, z2, w) { + this.x = x2; + this.y = y2; + this.z = z2; + this.w = w; + return this; + } + sub(rhs) { + this.x -= rhs.x; + this.y -= rhs.y; + this.z -= rhs.z; + this.w -= rhs.w; + return this; + } + sub2(lhs, rhs) { + this.x = lhs.x - rhs.x; + this.y = lhs.y - rhs.y; + this.z = lhs.z - rhs.z; + this.w = lhs.w - rhs.w; + return this; + } + subScalar(scalar) { + this.x -= scalar; + this.y -= scalar; + this.z -= scalar; + this.w -= scalar; + return this; + } + toString() { + return `[${this.x}, ${this.y}, ${this.z}, ${this.w}]`; + } +}; +_Vec3 = Vec4; +Vec4.ZERO = Object.freeze(new _Vec3(0, 0, 0, 0)); +Vec4.ONE = Object.freeze(new _Vec3(1, 1, 1, 1)); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/mat4.js +var _Mat2; +var _halfSize = new Vec2(); +var x = new Vec3(); +var y = new Vec3(); +var z = new Vec3(); +var scale = new Vec3(); +var Mat4 = class _Mat4 { + constructor() { + this.data = new Float32Array(16); + this.data[0] = this.data[5] = this.data[10] = this.data[15] = 1; + } + static _getPerspectiveHalfSize(halfSize, fov, aspect, znear, fovIsHorizontal) { + if (fovIsHorizontal) { + halfSize.x = znear * Math.tan(fov * Math.PI / 360); + halfSize.y = halfSize.x / aspect; + } else { + halfSize.y = znear * Math.tan(fov * Math.PI / 360); + halfSize.x = halfSize.y * aspect; + } + } + add2(lhs, rhs) { + const a = lhs.data, b = rhs.data, r = this.data; + r[0] = a[0] + b[0]; + r[1] = a[1] + b[1]; + r[2] = a[2] + b[2]; + r[3] = a[3] + b[3]; + r[4] = a[4] + b[4]; + r[5] = a[5] + b[5]; + r[6] = a[6] + b[6]; + r[7] = a[7] + b[7]; + r[8] = a[8] + b[8]; + r[9] = a[9] + b[9]; + r[10] = a[10] + b[10]; + r[11] = a[11] + b[11]; + r[12] = a[12] + b[12]; + r[13] = a[13] + b[13]; + r[14] = a[14] + b[14]; + r[15] = a[15] + b[15]; + return this; + } + add(rhs) { + return this.add2(this, rhs); + } + clone() { + const cstr = this.constructor; + return new cstr().copy(this); + } + copy(rhs) { + const src = rhs.data, dst = this.data; + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = src[3]; + dst[4] = src[4]; + dst[5] = src[5]; + dst[6] = src[6]; + dst[7] = src[7]; + dst[8] = src[8]; + dst[9] = src[9]; + dst[10] = src[10]; + dst[11] = src[11]; + dst[12] = src[12]; + dst[13] = src[13]; + dst[14] = src[14]; + dst[15] = src[15]; + return this; + } + equals(rhs) { + const l = this.data, r = rhs.data; + return l[0] === r[0] && l[1] === r[1] && l[2] === r[2] && l[3] === r[3] && l[4] === r[4] && l[5] === r[5] && l[6] === r[6] && l[7] === r[7] && l[8] === r[8] && l[9] === r[9] && l[10] === r[10] && l[11] === r[11] && l[12] === r[12] && l[13] === r[13] && l[14] === r[14] && l[15] === r[15]; + } + isIdentity() { + const m = this.data; + return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 0 && m[4] === 0 && m[5] === 1 && m[6] === 0 && m[7] === 0 && m[8] === 0 && m[9] === 0 && m[10] === 1 && m[11] === 0 && m[12] === 0 && m[13] === 0 && m[14] === 0 && m[15] === 1; + } + mul2(lhs, rhs) { + const a = lhs.data; + const b = rhs.data; + const r = this.data; + const a00 = a[0]; + const a01 = a[1]; + const a02 = a[2]; + const a03 = a[3]; + const a10 = a[4]; + const a11 = a[5]; + const a12 = a[6]; + const a13 = a[7]; + const a20 = a[8]; + const a21 = a[9]; + const a22 = a[10]; + const a23 = a[11]; + const a30 = a[12]; + const a31 = a[13]; + const a32 = a[14]; + const a33 = a[15]; + let b0, b1, b2, b3; + b0 = b[0]; + b1 = b[1]; + b2 = b[2]; + b3 = b[3]; + r[0] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3; + r[1] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3; + r[2] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3; + r[3] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + b3 = b[7]; + r[4] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3; + r[5] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3; + r[6] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3; + r[7] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + b3 = b[11]; + r[8] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3; + r[9] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3; + r[10] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3; + r[11] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + b3 = b[15]; + r[12] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3; + r[13] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3; + r[14] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3; + r[15] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3; + return this; + } + mulAffine2(lhs, rhs) { + const a = lhs.data; + const b = rhs.data; + const r = this.data; + const a00 = a[0]; + const a01 = a[1]; + const a02 = a[2]; + const a10 = a[4]; + const a11 = a[5]; + const a12 = a[6]; + const a20 = a[8]; + const a21 = a[9]; + const a22 = a[10]; + const a30 = a[12]; + const a31 = a[13]; + const a32 = a[14]; + let b0, b1, b2; + b0 = b[0]; + b1 = b[1]; + b2 = b[2]; + r[0] = a00 * b0 + a10 * b1 + a20 * b2; + r[1] = a01 * b0 + a11 * b1 + a21 * b2; + r[2] = a02 * b0 + a12 * b1 + a22 * b2; + r[3] = 0; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + r[4] = a00 * b0 + a10 * b1 + a20 * b2; + r[5] = a01 * b0 + a11 * b1 + a21 * b2; + r[6] = a02 * b0 + a12 * b1 + a22 * b2; + r[7] = 0; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + r[8] = a00 * b0 + a10 * b1 + a20 * b2; + r[9] = a01 * b0 + a11 * b1 + a21 * b2; + r[10] = a02 * b0 + a12 * b1 + a22 * b2; + r[11] = 0; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + r[12] = a00 * b0 + a10 * b1 + a20 * b2 + a30; + r[13] = a01 * b0 + a11 * b1 + a21 * b2 + a31; + r[14] = a02 * b0 + a12 * b1 + a22 * b2 + a32; + r[15] = 1; + return this; + } + mul(rhs) { + return this.mul2(this, rhs); + } + transformPoint(vec2, res = new Vec3()) { + const m = this.data; + const { + x: x2, + y: y2, + z: z2 + } = vec2; + res.x = x2 * m[0] + y2 * m[4] + z2 * m[8] + m[12]; + res.y = x2 * m[1] + y2 * m[5] + z2 * m[9] + m[13]; + res.z = x2 * m[2] + y2 * m[6] + z2 * m[10] + m[14]; + return res; + } + transformVector(vec2, res = new Vec3()) { + const m = this.data; + const { + x: x2, + y: y2, + z: z2 + } = vec2; + res.x = x2 * m[0] + y2 * m[4] + z2 * m[8]; + res.y = x2 * m[1] + y2 * m[5] + z2 * m[9]; + res.z = x2 * m[2] + y2 * m[6] + z2 * m[10]; + return res; + } + transformVec4(vec2, res = new Vec4()) { + const m = this.data; + const { + x: x2, + y: y2, + z: z2, + w + } = vec2; + res.x = x2 * m[0] + y2 * m[4] + z2 * m[8] + w * m[12]; + res.y = x2 * m[1] + y2 * m[5] + z2 * m[9] + w * m[13]; + res.z = x2 * m[2] + y2 * m[6] + z2 * m[10] + w * m[14]; + res.w = x2 * m[3] + y2 * m[7] + z2 * m[11] + w * m[15]; + return res; + } + setLookAt(position2, target2, up3) { + z.sub2(position2, target2).normalize(); + y.copy(up3).normalize(); + x.cross(y, z).normalize(); + y.cross(z, x); + const r = this.data; + r[0] = x.x; + r[1] = x.y; + r[2] = x.z; + r[3] = 0; + r[4] = y.x; + r[5] = y.y; + r[6] = y.z; + r[7] = 0; + r[8] = z.x; + r[9] = z.y; + r[10] = z.z; + r[11] = 0; + r[12] = position2.x; + r[13] = position2.y; + r[14] = position2.z; + r[15] = 1; + return this; + } + setFrustum(left, right2, bottom, top, znear, zfar) { + const temp1 = 2 * znear; + const temp2 = right2 - left; + const temp3 = top - bottom; + const temp4 = zfar - znear; + const r = this.data; + r[0] = temp1 / temp2; + r[1] = 0; + r[2] = 0; + r[3] = 0; + r[4] = 0; + r[5] = temp1 / temp3; + r[6] = 0; + r[7] = 0; + r[8] = (right2 + left) / temp2; + r[9] = (top + bottom) / temp3; + r[10] = (-zfar - znear) / temp4; + r[11] = -1; + r[12] = 0; + r[13] = 0; + r[14] = -temp1 * zfar / temp4; + r[15] = 0; + return this; + } + setPerspective(fov, aspect, znear, zfar, fovIsHorizontal) { + _Mat4._getPerspectiveHalfSize(_halfSize, fov, aspect, znear, fovIsHorizontal); + return this.setFrustum(-_halfSize.x, _halfSize.x, -_halfSize.y, _halfSize.y, znear, zfar); + } + setOrtho(left, right2, bottom, top, near, far) { + const r = this.data; + r[0] = 2 / (right2 - left); + r[1] = 0; + r[2] = 0; + r[3] = 0; + r[4] = 0; + r[5] = 2 / (top - bottom); + r[6] = 0; + r[7] = 0; + r[8] = 0; + r[9] = 0; + r[10] = -2 / (far - near); + r[11] = 0; + r[12] = -(right2 + left) / (right2 - left); + r[13] = -(top + bottom) / (top - bottom); + r[14] = -(far + near) / (far - near); + r[15] = 1; + return this; + } + setFromAxisAngle(axis, angle) { + angle *= math.DEG_TO_RAD; + const { + x: x2, + y: y2, + z: z2 + } = axis; + const c2 = Math.cos(angle); + const s = Math.sin(angle); + const t = 1 - c2; + const tx = t * x2; + const ty = t * y2; + const m = this.data; + m[0] = tx * x2 + c2; + m[1] = tx * y2 + s * z2; + m[2] = tx * z2 - s * y2; + m[3] = 0; + m[4] = tx * y2 - s * z2; + m[5] = ty * y2 + c2; + m[6] = ty * z2 + s * x2; + m[7] = 0; + m[8] = tx * z2 + s * y2; + m[9] = ty * z2 - x2 * s; + m[10] = t * z2 * z2 + c2; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return this; + } + setTranslate(x2, y2, z2) { + const m = this.data; + m[0] = 1; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = 1; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = 1; + m[11] = 0; + m[12] = x2; + m[13] = y2; + m[14] = z2; + m[15] = 1; + return this; + } + setScale(x2, y2, z2) { + const m = this.data; + m[0] = x2; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = y2; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = z2; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return this; + } + setViewport(x2, y2, width, height) { + const m = this.data; + m[0] = width * 0.5; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = height * 0.5; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = 0.5; + m[11] = 0; + m[12] = x2 + width * 0.5; + m[13] = y2 + height * 0.5; + m[14] = 0.5; + m[15] = 1; + return this; + } + setReflection(normal, distance) { + const a = normal.x; + const b = normal.y; + const c2 = normal.z; + const data2 = this.data; + data2[0] = 1 - 2 * a * a; + data2[1] = -2 * a * b; + data2[2] = -2 * a * c2; + data2[3] = 0; + data2[4] = -2 * a * b; + data2[5] = 1 - 2 * b * b; + data2[6] = -2 * b * c2; + data2[7] = 0; + data2[8] = -2 * a * c2; + data2[9] = -2 * b * c2; + data2[10] = 1 - 2 * c2 * c2; + data2[11] = 0; + data2[12] = -2 * a * distance; + data2[13] = -2 * b * distance; + data2[14] = -2 * c2 * distance; + data2[15] = 1; + return this; + } + invert(src = this) { + const s = src.data; + const a00 = s[0]; + const a01 = s[1]; + const a02 = s[2]; + const a03 = s[3]; + const a10 = s[4]; + const a11 = s[5]; + const a12 = s[6]; + const a13 = s[7]; + const a20 = s[8]; + const a21 = s[9]; + const a22 = s[10]; + const a23 = s[11]; + const a30 = s[12]; + const a31 = s[13]; + const a32 = s[14]; + const a33 = s[15]; + const b00 = a00 * a11 - a01 * a10; + const b01 = a00 * a12 - a02 * a10; + const b02 = a00 * a13 - a03 * a10; + const b03 = a01 * a12 - a02 * a11; + const b04 = a01 * a13 - a03 * a11; + const b05 = a02 * a13 - a03 * a12; + const b06 = a20 * a31 - a21 * a30; + const b07 = a20 * a32 - a22 * a30; + const b08 = a20 * a33 - a23 * a30; + const b09 = a21 * a32 - a22 * a31; + const b10 = a21 * a33 - a23 * a31; + const b11 = a22 * a33 - a23 * a32; + const det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (det === 0) { + this.setIdentity(); + } else { + const invDet = 1 / det; + const t = this.data; + t[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet; + t[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet; + t[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet; + t[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet; + t[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet; + t[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet; + t[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet; + t[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet; + t[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet; + t[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet; + t[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet; + t[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet; + t[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet; + t[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet; + t[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet; + t[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet; + } + return this; + } + set(src) { + const dst = this.data; + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = src[3]; + dst[4] = src[4]; + dst[5] = src[5]; + dst[6] = src[6]; + dst[7] = src[7]; + dst[8] = src[8]; + dst[9] = src[9]; + dst[10] = src[10]; + dst[11] = src[11]; + dst[12] = src[12]; + dst[13] = src[13]; + dst[14] = src[14]; + dst[15] = src[15]; + return this; + } + setIdentity() { + const m = this.data; + m[0] = 1; + m[1] = 0; + m[2] = 0; + m[3] = 0; + m[4] = 0; + m[5] = 1; + m[6] = 0; + m[7] = 0; + m[8] = 0; + m[9] = 0; + m[10] = 1; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return this; + } + setTRS(t, r, s) { + const qx = r.x; + const qy = r.y; + const qz = r.z; + const qw = r.w; + const sx = s.x; + const sy = s.y; + const sz = s.z; + const x2 = qx + qx; + const y2 = qy + qy; + const z2 = qz + qz; + const xx = qx * x2; + const xy = qx * y2; + const xz = qx * z2; + const yy = qy * y2; + const yz = qy * z2; + const zz = qz * z2; + const wx = qw * x2; + const wy = qw * y2; + const wz = qw * z2; + const m = this.data; + m[0] = (1 - (yy + zz)) * sx; + m[1] = (xy + wz) * sx; + m[2] = (xz - wy) * sx; + m[3] = 0; + m[4] = (xy - wz) * sy; + m[5] = (1 - (xx + zz)) * sy; + m[6] = (yz + wx) * sy; + m[7] = 0; + m[8] = (xz + wy) * sz; + m[9] = (yz - wx) * sz; + m[10] = (1 - (xx + yy)) * sz; + m[11] = 0; + m[12] = t.x; + m[13] = t.y; + m[14] = t.z; + m[15] = 1; + return this; + } + transpose(src = this) { + const s = src.data; + const t = this.data; + if (s === t) { + let tmp; + tmp = s[1]; + t[1] = s[4]; + t[4] = tmp; + tmp = s[2]; + t[2] = s[8]; + t[8] = tmp; + tmp = s[3]; + t[3] = s[12]; + t[12] = tmp; + tmp = s[6]; + t[6] = s[9]; + t[9] = tmp; + tmp = s[7]; + t[7] = s[13]; + t[13] = tmp; + tmp = s[11]; + t[11] = s[14]; + t[14] = tmp; + } else { + t[0] = s[0]; + t[1] = s[4]; + t[2] = s[8]; + t[3] = s[12]; + t[4] = s[1]; + t[5] = s[5]; + t[6] = s[9]; + t[7] = s[13]; + t[8] = s[2]; + t[9] = s[6]; + t[10] = s[10]; + t[11] = s[14]; + t[12] = s[3]; + t[13] = s[7]; + t[14] = s[11]; + t[15] = s[15]; + } + return this; + } + getTranslation(t = new Vec3()) { + return t.set(this.data[12], this.data[13], this.data[14]); + } + getX(x2 = new Vec3()) { + return x2.set(this.data[0], this.data[1], this.data[2]); + } + getY(y2 = new Vec3()) { + return y2.set(this.data[4], this.data[5], this.data[6]); + } + getZ(z2 = new Vec3()) { + return z2.set(this.data[8], this.data[9], this.data[10]); + } + getScale(scale2 = new Vec3()) { + this.getX(x); + this.getY(y); + this.getZ(z); + scale2.set(x.length(), y.length(), z.length()); + return scale2; + } + get scaleSign() { + this.getX(x); + this.getY(y); + this.getZ(z); + x.cross(x, y); + return x.dot(z) < 0 ? -1 : 1; + } + setFromEulerAngles(ex, ey, ez) { + ex *= math.DEG_TO_RAD; + ey *= math.DEG_TO_RAD; + ez *= math.DEG_TO_RAD; + const s1 = Math.sin(-ex); + const c1 = Math.cos(-ex); + const s2 = Math.sin(-ey); + const c2 = Math.cos(-ey); + const s3 = Math.sin(-ez); + const c3 = Math.cos(-ez); + const m = this.data; + m[0] = c2 * c3; + m[1] = -c2 * s3; + m[2] = s2; + m[3] = 0; + m[4] = c1 * s3 + c3 * s1 * s2; + m[5] = c1 * c3 - s1 * s2 * s3; + m[6] = -c2 * s1; + m[7] = 0; + m[8] = s1 * s3 - c1 * c3 * s2; + m[9] = c3 * s1 + c1 * s2 * s3; + m[10] = c1 * c2; + m[11] = 0; + m[12] = 0; + m[13] = 0; + m[14] = 0; + m[15] = 1; + return this; + } + getEulerAngles(eulers = new Vec3()) { + this.getScale(scale); + const sx = scale.x; + const sy = scale.y; + const sz = scale.z; + if (sx === 0 || sy === 0 || sz === 0) return eulers.set(0, 0, 0); + const m = this.data; + const y2 = Math.asin(-m[2] / sx); + const halfPi = Math.PI * 0.5; + let x2, z2; + if (y2 < halfPi) { + if (y2 > -halfPi) { + x2 = Math.atan2(m[6] / sy, m[10] / sz); + z2 = Math.atan2(m[1] / sx, m[0] / sx); + } else { + z2 = 0; + x2 = -Math.atan2(m[4] / sy, m[5] / sy); + } + } else { + z2 = 0; + x2 = Math.atan2(m[4] / sy, m[5] / sy); + } + return eulers.set(x2, y2, z2).mulScalar(math.RAD_TO_DEG); + } + toString() { + return "[" + this.data.join(", ") + "]"; + } +}; +_Mat2 = Mat4; +Mat4.IDENTITY = Object.freeze(new _Mat2()); +Mat4.ZERO = Object.freeze(new _Mat2().set([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/quat.js +var _Quat; +var Quat2 = class { + constructor(x2 = 0, y2 = 0, z2 = 0, w = 1) { + this.x = void 0; + this.y = void 0; + this.z = void 0; + this.w = void 0; + if (x2.length === 4) { + this.x = x2[0]; + this.y = x2[1]; + this.z = x2[2]; + this.w = x2[3]; + } else { + this.x = x2; + this.y = y2; + this.z = z2; + this.w = w; + } + } + clone() { + const cstr = this.constructor; + return new cstr(this.x, this.y, this.z, this.w); + } + conjugate(src = this) { + this.x = src.x * -1; + this.y = src.y * -1; + this.z = src.z * -1; + this.w = src.w; + return this; + } + copy(rhs) { + this.x = rhs.x; + this.y = rhs.y; + this.z = rhs.z; + this.w = rhs.w; + return this; + } + equals(rhs) { + return this.x === rhs.x && this.y === rhs.y && this.z === rhs.z && this.w === rhs.w; + } + equalsApprox(rhs, epsilon3 = 1e-6) { + return Math.abs(this.x - rhs.x) < epsilon3 && Math.abs(this.y - rhs.y) < epsilon3 && Math.abs(this.z - rhs.z) < epsilon3 && Math.abs(this.w - rhs.w) < epsilon3; + } + getAxisAngle(axis) { + let rad = Math.acos(this.w) * 2; + const s = Math.sin(rad / 2); + if (s !== 0) { + axis.x = this.x / s; + axis.y = this.y / s; + axis.z = this.z / s; + if (axis.x < 0 || axis.y < 0 || axis.z < 0) { + axis.x *= -1; + axis.y *= -1; + axis.z *= -1; + rad *= -1; + } + } else { + axis.x = 1; + axis.y = 0; + axis.z = 0; + } + return rad * math.RAD_TO_DEG; + } + getEulerAngles(eulers = new Vec3()) { + let x2, y2, z2; + const qx = this.x; + const qy = this.y; + const qz = this.z; + const qw = this.w; + const a2 = 2 * (qw * qy - qx * qz); + if (a2 <= -0.99999) { + x2 = 2 * Math.atan2(qx, qw); + y2 = -Math.PI / 2; + z2 = 0; + } else if (a2 >= 0.99999) { + x2 = 2 * Math.atan2(qx, qw); + y2 = Math.PI / 2; + z2 = 0; + } else { + x2 = Math.atan2(2 * (qw * qx + qy * qz), 1 - 2 * (qx * qx + qy * qy)); + y2 = Math.asin(a2); + z2 = Math.atan2(2 * (qw * qz + qx * qy), 1 - 2 * (qy * qy + qz * qz)); + } + return eulers.set(x2, y2, z2).mulScalar(math.RAD_TO_DEG); + } + invert(src = this) { + return this.conjugate(src).normalize(); + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + } + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + } + mul(rhs) { + const q1x = this.x; + const q1y = this.y; + const q1z = this.z; + const q1w = this.w; + const q2x = rhs.x; + const q2y = rhs.y; + const q2z = rhs.z; + const q2w = rhs.w; + this.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y; + this.y = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z; + this.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x; + this.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z; + return this; + } + mulScalar(scalar, src = this) { + this.x = src.x * scalar; + this.y = src.y * scalar; + this.z = src.z * scalar; + this.w = src.w * scalar; + return this; + } + mul2(lhs, rhs) { + const q1x = lhs.x; + const q1y = lhs.y; + const q1z = lhs.z; + const q1w = lhs.w; + const q2x = rhs.x; + const q2y = rhs.y; + const q2z = rhs.z; + const q2w = rhs.w; + this.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y; + this.y = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z; + this.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x; + this.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z; + return this; + } + normalize(src = this) { + let len = src.length(); + if (len === 0) { + this.x = this.y = this.z = 0; + this.w = 1; + } else { + len = 1 / len; + this.x = src.x * len; + this.y = src.y * len; + this.z = src.z * len; + this.w = src.w * len; + } + return this; + } + set(x2, y2, z2, w) { + this.x = x2; + this.y = y2; + this.z = z2; + this.w = w; + return this; + } + setFromAxisAngle(axis, angle) { + angle *= 0.5 * math.DEG_TO_RAD; + const sa = Math.sin(angle); + const ca = Math.cos(angle); + this.x = sa * axis.x; + this.y = sa * axis.y; + this.z = sa * axis.z; + this.w = ca; + return this; + } + setFromEulerAngles(ex, ey, ez) { + if (ex instanceof Vec3) { + const vec2 = ex; + ex = vec2.x; + ey = vec2.y; + ez = vec2.z; + } + const halfToRad2 = 0.5 * math.DEG_TO_RAD; + ex *= halfToRad2; + ey *= halfToRad2; + ez *= halfToRad2; + const sx = Math.sin(ex); + const cx = Math.cos(ex); + const sy = Math.sin(ey); + const cy = Math.cos(ey); + const sz = Math.sin(ez); + const cz = Math.cos(ez); + this.x = sx * cy * cz - cx * sy * sz; + this.y = cx * sy * cz + sx * cy * sz; + this.z = cx * cy * sz - sx * sy * cz; + this.w = cx * cy * cz + sx * sy * sz; + return this; + } + setFromMat4(m) { + const d = m.data; + let m00 = d[0]; + let m01 = d[1]; + let m02 = d[2]; + let m10 = d[4]; + let m11 = d[5]; + let m12 = d[6]; + let m20 = d[8]; + let m21 = d[9]; + let m22 = d[10]; + let l; + l = m00 * m00 + m01 * m01 + m02 * m02; + if (l === 0) return this.set(0, 0, 0, 1); + l = 1 / Math.sqrt(l); + m00 *= l; + m01 *= l; + m02 *= l; + l = m10 * m10 + m11 * m11 + m12 * m12; + if (l === 0) return this.set(0, 0, 0, 1); + l = 1 / Math.sqrt(l); + m10 *= l; + m11 *= l; + m12 *= l; + l = m20 * m20 + m21 * m21 + m22 * m22; + if (l === 0) return this.set(0, 0, 0, 1); + l = 1 / Math.sqrt(l); + m20 *= l; + m21 *= l; + m22 *= l; + if (m22 < 0) { + if (m00 > m11) { + this.set(1 + m00 - m11 - m22, m01 + m10, m20 + m02, m12 - m21); + } else { + this.set(m01 + m10, 1 - m00 + m11 - m22, m12 + m21, m20 - m02); + } + } else { + if (m00 < -m11) { + this.set(m20 + m02, m12 + m21, 1 - m00 - m11 + m22, m01 - m10); + } else { + this.set(m12 - m21, m20 - m02, m01 - m10, 1 + m00 + m11 + m22); + } + } + return this.mulScalar(1 / this.length()); + } + setFromDirections(from, to) { + const dotProduct = 1 + from.dot(to); + if (dotProduct < Number.EPSILON) { + if (Math.abs(from.x) > Math.abs(from.y)) { + this.x = -from.z; + this.y = 0; + this.z = from.x; + this.w = 0; + } else { + this.x = 0; + this.y = -from.z; + this.z = from.y; + this.w = 0; + } + } else { + this.x = from.y * to.z - from.z * to.y; + this.y = from.z * to.x - from.x * to.z; + this.z = from.x * to.y - from.y * to.x; + this.w = dotProduct; + } + return this.normalize(); + } + slerp(lhs, rhs, alpha) { + const lx = lhs.x; + const ly = lhs.y; + const lz = lhs.z; + const lw = lhs.w; + let rx = rhs.x; + let ry = rhs.y; + let rz = rhs.z; + let rw = rhs.w; + let cosHalfTheta = lw * rw + lx * rx + ly * ry + lz * rz; + if (cosHalfTheta < 0) { + rw = -rw; + rx = -rx; + ry = -ry; + rz = -rz; + cosHalfTheta = -cosHalfTheta; + } + if (Math.abs(cosHalfTheta) >= 1) { + this.w = lw; + this.x = lx; + this.y = ly; + this.z = lz; + return this; + } + const halfTheta = Math.acos(cosHalfTheta); + const sinHalfTheta = Math.sqrt(1 - cosHalfTheta * cosHalfTheta); + if (Math.abs(sinHalfTheta) < 1e-3) { + this.w = lw * 0.5 + rw * 0.5; + this.x = lx * 0.5 + rx * 0.5; + this.y = ly * 0.5 + ry * 0.5; + this.z = lz * 0.5 + rz * 0.5; + return this; + } + const ratioA = Math.sin((1 - alpha) * halfTheta) / sinHalfTheta; + const ratioB = Math.sin(alpha * halfTheta) / sinHalfTheta; + this.w = lw * ratioA + rw * ratioB; + this.x = lx * ratioA + rx * ratioB; + this.y = ly * ratioA + ry * ratioB; + this.z = lz * ratioA + rz * ratioB; + return this; + } + transformVector(vec2, res = new Vec3()) { + const x2 = vec2.x, y2 = vec2.y, z2 = vec2.z; + const qx = this.x, qy = this.y, qz = this.z, qw = this.w; + const ix = qw * x2 + qy * z2 - qz * y2; + const iy = qw * y2 + qz * x2 - qx * z2; + const iz = qw * z2 + qx * y2 - qy * x2; + const iw = -qx * x2 - qy * y2 - qz * z2; + res.x = ix * qw + iw * -qx + iy * -qz - iz * -qy; + res.y = iy * qw + iw * -qy + iz * -qx - ix * -qz; + res.z = iz * qw + iw * -qz + ix * -qy - iy * -qx; + return res; + } + toString() { + return `[${this.x}, ${this.y}, ${this.z}, ${this.w}]`; + } +}; +_Quat = Quat2; +Quat2.IDENTITY = Object.freeze(new _Quat(0, 0, 0, 1)); +Quat2.ZERO = Object.freeze(new _Quat(0, 0, 0, 0)); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/shape/bounding-box.js +var tmpVecA = new Vec3(); +var tmpVecB = new Vec3(); +var tmpVecC = new Vec3(); +var tmpVecD = new Vec3(); +var tmpVecE = new Vec3(); +var BoundingBox = class _BoundingBox { + constructor(center2 = new Vec3(), halfExtents = new Vec3(0.5, 0.5, 0.5)) { + this.center = void 0; + this.halfExtents = void 0; + this._min = new Vec3(); + this._max = new Vec3(); + this.center = center2; + this.halfExtents = halfExtents; + } + add(other) { + const tc = this.center; + const tcx = tc.x; + const tcy = tc.y; + const tcz = tc.z; + const th = this.halfExtents; + const thx = th.x; + const thy = th.y; + const thz = th.z; + let tminx = tcx - thx; + let tmaxx = tcx + thx; + let tminy = tcy - thy; + let tmaxy = tcy + thy; + let tminz = tcz - thz; + let tmaxz = tcz + thz; + const oc = other.center; + const ocx = oc.x; + const ocy = oc.y; + const ocz = oc.z; + const oh = other.halfExtents; + const ohx = oh.x; + const ohy = oh.y; + const ohz = oh.z; + const ominx = ocx - ohx; + const omaxx = ocx + ohx; + const ominy = ocy - ohy; + const omaxy = ocy + ohy; + const ominz = ocz - ohz; + const omaxz = ocz + ohz; + if (ominx < tminx) tminx = ominx; + if (omaxx > tmaxx) tmaxx = omaxx; + if (ominy < tminy) tminy = ominy; + if (omaxy > tmaxy) tmaxy = omaxy; + if (ominz < tminz) tminz = ominz; + if (omaxz > tmaxz) tmaxz = omaxz; + tc.x = (tminx + tmaxx) * 0.5; + tc.y = (tminy + tmaxy) * 0.5; + tc.z = (tminz + tmaxz) * 0.5; + th.x = (tmaxx - tminx) * 0.5; + th.y = (tmaxy - tminy) * 0.5; + th.z = (tmaxz - tminz) * 0.5; + } + copy(src) { + this.center.copy(src.center); + this.halfExtents.copy(src.halfExtents); + } + clone() { + return new _BoundingBox(this.center.clone(), this.halfExtents.clone()); + } + intersects(other) { + const aMax = this.getMax(); + const aMin = this.getMin(); + const bMax = other.getMax(); + const bMin = other.getMin(); + return aMin.x <= bMax.x && aMax.x >= bMin.x && aMin.y <= bMax.y && aMax.y >= bMin.y && aMin.z <= bMax.z && aMax.z >= bMin.z; + } + _intersectsRay(ray, point) { + const tMin = tmpVecA.copy(this.getMin()).sub(ray.origin); + const tMax = tmpVecB.copy(this.getMax()).sub(ray.origin); + const dir = ray.direction; + if (dir.x === 0) { + tMin.x = tMin.x < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE; + tMax.x = tMax.x < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE; + } else { + tMin.x /= dir.x; + tMax.x /= dir.x; + } + if (dir.y === 0) { + tMin.y = tMin.y < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE; + tMax.y = tMax.y < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE; + } else { + tMin.y /= dir.y; + tMax.y /= dir.y; + } + if (dir.z === 0) { + tMin.z = tMin.z < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE; + tMax.z = tMax.z < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE; + } else { + tMin.z /= dir.z; + tMax.z /= dir.z; + } + const realMin = tmpVecC.set(Math.min(tMin.x, tMax.x), Math.min(tMin.y, tMax.y), Math.min(tMin.z, tMax.z)); + const realMax = tmpVecD.set(Math.max(tMin.x, tMax.x), Math.max(tMin.y, tMax.y), Math.max(tMin.z, tMax.z)); + const minMax = Math.min(Math.min(realMax.x, realMax.y), realMax.z); + const maxMin = Math.max(Math.max(realMin.x, realMin.y), realMin.z); + const intersects = minMax >= maxMin && maxMin >= 0; + if (intersects) point.copy(ray.direction).mulScalar(maxMin).add(ray.origin); + return intersects; + } + _fastIntersectsRay(ray) { + const diff = tmpVecA; + const cross = tmpVecB; + const prod = tmpVecC; + const absDiff = tmpVecD; + const absDir = tmpVecE; + const rayDir = ray.direction; + diff.sub2(ray.origin, this.center); + absDiff.set(Math.abs(diff.x), Math.abs(diff.y), Math.abs(diff.z)); + prod.mul2(diff, rayDir); + if (absDiff.x > this.halfExtents.x && prod.x >= 0) return false; + if (absDiff.y > this.halfExtents.y && prod.y >= 0) return false; + if (absDiff.z > this.halfExtents.z && prod.z >= 0) return false; + absDir.set(Math.abs(rayDir.x), Math.abs(rayDir.y), Math.abs(rayDir.z)); + cross.cross(rayDir, diff); + cross.set(Math.abs(cross.x), Math.abs(cross.y), Math.abs(cross.z)); + if (cross.x > this.halfExtents.y * absDir.z + this.halfExtents.z * absDir.y) return false; + if (cross.y > this.halfExtents.x * absDir.z + this.halfExtents.z * absDir.x) return false; + if (cross.z > this.halfExtents.x * absDir.y + this.halfExtents.y * absDir.x) return false; + return true; + } + intersectsRay(ray, point) { + if (point) { + return this._intersectsRay(ray, point); + } + return this._fastIntersectsRay(ray); + } + setMinMax(min, max) { + this.center.add2(max, min).mulScalar(0.5); + this.halfExtents.sub2(max, min).mulScalar(0.5); + } + getMin() { + return this._min.copy(this.center).sub(this.halfExtents); + } + getMax() { + return this._max.copy(this.center).add(this.halfExtents); + } + containsPoint(point) { + const min = this.getMin(); + const max = this.getMax(); + if (point.x < min.x || point.x > max.x || point.y < min.y || point.y > max.y || point.z < min.z || point.z > max.z) { + return false; + } + return true; + } + setFromTransformedAabb(aabb, m, ignoreScale = false) { + const ac = aabb.center; + const ar = aabb.halfExtents; + const d = m.data; + let mx0 = d[0]; + let mx1 = d[4]; + let mx2 = d[8]; + let my0 = d[1]; + let my1 = d[5]; + let my2 = d[9]; + let mz0 = d[2]; + let mz1 = d[6]; + let mz2 = d[10]; + if (ignoreScale) { + let lengthSq = mx0 * mx0 + mx1 * mx1 + mx2 * mx2; + if (lengthSq > 0) { + const invLength = 1 / Math.sqrt(lengthSq); + mx0 *= invLength; + mx1 *= invLength; + mx2 *= invLength; + } + lengthSq = my0 * my0 + my1 * my1 + my2 * my2; + if (lengthSq > 0) { + const invLength = 1 / Math.sqrt(lengthSq); + my0 *= invLength; + my1 *= invLength; + my2 *= invLength; + } + lengthSq = mz0 * mz0 + mz1 * mz1 + mz2 * mz2; + if (lengthSq > 0) { + const invLength = 1 / Math.sqrt(lengthSq); + mz0 *= invLength; + mz1 *= invLength; + mz2 *= invLength; + } + } + this.center.set(d[12] + mx0 * ac.x + mx1 * ac.y + mx2 * ac.z, d[13] + my0 * ac.x + my1 * ac.y + my2 * ac.z, d[14] + mz0 * ac.x + mz1 * ac.y + mz2 * ac.z); + this.halfExtents.set(Math.abs(mx0) * ar.x + Math.abs(mx1) * ar.y + Math.abs(mx2) * ar.z, Math.abs(my0) * ar.x + Math.abs(my1) * ar.y + Math.abs(my2) * ar.z, Math.abs(mz0) * ar.x + Math.abs(mz1) * ar.y + Math.abs(mz2) * ar.z); + } + static computeMinMax(vertices, min, max, numVerts = vertices.length / 3) { + if (numVerts > 0) { + let minx = vertices[0]; + let miny = vertices[1]; + let minz = vertices[2]; + let maxx = minx; + let maxy = miny; + let maxz = minz; + const n = numVerts * 3; + for (let i = 3; i < n; i += 3) { + const x2 = vertices[i]; + const y2 = vertices[i + 1]; + const z2 = vertices[i + 2]; + if (x2 < minx) minx = x2; + if (y2 < miny) miny = y2; + if (z2 < minz) minz = z2; + if (x2 > maxx) maxx = x2; + if (y2 > maxy) maxy = y2; + if (z2 > maxz) maxz = z2; + } + min.set(minx, miny, minz); + max.set(maxx, maxy, maxz); + } + } + compute(vertices, numVerts) { + _BoundingBox.computeMinMax(vertices, tmpVecA, tmpVecB, numVerts); + this.setMinMax(tmpVecA, tmpVecB); + } + intersectsBoundingSphere(sphere) { + const sq = this._distanceToBoundingSphereSq(sphere); + if (sq <= sphere.radius * sphere.radius) { + return true; + } + return false; + } + _distanceToBoundingSphereSq(sphere) { + const boxMin = this.getMin(); + const boxMax = this.getMax(); + let sq = 0; + const axis = ["x", "y", "z"]; + for (let i = 0; i < 3; ++i) { + let out = 0; + const pn = sphere.center[axis[i]]; + const bMin = boxMin[axis[i]]; + const bMax = boxMax[axis[i]]; + let val = 0; + if (pn < bMin) { + val = bMin - pn; + out += val * val; + } + if (pn > bMax) { + val = pn - bMax; + out += val * val; + } + sq += out; + } + return sq; + } + _expand(expandMin, expandMax) { + tmpVecA.add2(this.getMin(), expandMin); + tmpVecB.add2(this.getMax(), expandMax); + this.setMinMax(tmpVecA, tmpVecB); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/shape/bounding-sphere.js +var tmpVecA2 = new Vec3(); +var tmpVecB2 = new Vec3(); +var BoundingSphere = class { + constructor(center2 = new Vec3(), radius = 0.5) { + this.center = void 0; + this.radius = void 0; + this.center = center2; + this.radius = radius; + } + containsPoint(point) { + const lenSq = tmpVecA2.sub2(point, this.center).lengthSq(); + const r = this.radius; + return lenSq < r * r; + } + intersectsRay(ray, point) { + const m = tmpVecA2.copy(ray.origin).sub(this.center); + const b = m.dot(tmpVecB2.copy(ray.direction).normalize()); + const c2 = m.dot(m) - this.radius * this.radius; + if (c2 > 0 && b > 0) return false; + const discr = b * b - c2; + if (discr < 0) return false; + const t = Math.abs(-b - Math.sqrt(discr)); + if (point) point.copy(ray.direction).mulScalar(t).add(ray.origin); + return true; + } + intersectsBoundingSphere(sphere) { + tmpVecA2.sub2(sphere.center, this.center); + const totalRadius = sphere.radius + this.radius; + if (tmpVecA2.lengthSq() <= totalRadius * totalRadius) { + return true; + } + return false; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/shape/frustum.js +var Frustum = class { + constructor() { + this.planes = []; + for (let i = 0; i < 6; i++) this.planes[i] = []; + } + setFromMat4(matrix2) { + const vpm = matrix2.data; + let plane; + const planes = this.planes; + plane = planes[0]; + plane[0] = vpm[3] - vpm[0]; + plane[1] = vpm[7] - vpm[4]; + plane[2] = vpm[11] - vpm[8]; + plane[3] = vpm[15] - vpm[12]; + let t = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]); + plane[0] /= t; + plane[1] /= t; + plane[2] /= t; + plane[3] /= t; + plane = planes[1]; + plane[0] = vpm[3] + vpm[0]; + plane[1] = vpm[7] + vpm[4]; + plane[2] = vpm[11] + vpm[8]; + plane[3] = vpm[15] + vpm[12]; + t = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]); + plane[0] /= t; + plane[1] /= t; + plane[2] /= t; + plane[3] /= t; + plane = planes[2]; + plane[0] = vpm[3] + vpm[1]; + plane[1] = vpm[7] + vpm[5]; + plane[2] = vpm[11] + vpm[9]; + plane[3] = vpm[15] + vpm[13]; + t = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]); + plane[0] /= t; + plane[1] /= t; + plane[2] /= t; + plane[3] /= t; + plane = planes[3]; + plane[0] = vpm[3] - vpm[1]; + plane[1] = vpm[7] - vpm[5]; + plane[2] = vpm[11] - vpm[9]; + plane[3] = vpm[15] - vpm[13]; + t = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]); + plane[0] /= t; + plane[1] /= t; + plane[2] /= t; + plane[3] /= t; + plane = planes[4]; + plane[0] = vpm[3] - vpm[2]; + plane[1] = vpm[7] - vpm[6]; + plane[2] = vpm[11] - vpm[10]; + plane[3] = vpm[15] - vpm[14]; + t = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]); + plane[0] /= t; + plane[1] /= t; + plane[2] /= t; + plane[3] /= t; + plane = planes[5]; + plane[0] = vpm[3] + vpm[2]; + plane[1] = vpm[7] + vpm[6]; + plane[2] = vpm[11] + vpm[10]; + plane[3] = vpm[15] + vpm[14]; + t = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]); + plane[0] /= t; + plane[1] /= t; + plane[2] /= t; + plane[3] /= t; + } + containsPoint(point) { + let p, plane; + for (p = 0; p < 6; p++) { + plane = this.planes[p]; + if (plane[0] * point.x + plane[1] * point.y + plane[2] * point.z + plane[3] <= 0) { + return false; + } + } + return true; + } + containsSphere(sphere) { + let c2 = 0; + let d; + let p; + const sr = sphere.radius; + const sc = sphere.center; + const scx = sc.x; + const scy = sc.y; + const scz = sc.z; + const planes = this.planes; + let plane; + for (p = 0; p < 6; p++) { + plane = planes[p]; + d = plane[0] * scx + plane[1] * scy + plane[2] * scz + plane[3]; + if (d <= -sr) return 0; + if (d > sr) c2++; + } + return c2 === 6 ? 2 : 1; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/shape/ray.js +var Ray = class { + constructor(origin, direction) { + this.origin = new Vec3(); + this.direction = Vec3.FORWARD.clone(); + if (origin) { + this.origin.copy(origin); + } + if (direction) { + this.direction.copy(direction); + } + } + set(origin, direction) { + this.origin.copy(origin); + this.direction.copy(direction); + return this; + } + copy(src) { + return this.set(src.origin, src.direction); + } + clone() { + return new this.constructor(this.origin, this.direction); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/audio/constants.js +var DISTANCE_LINEAR = "linear"; +var DISTANCE_INVERSE = "inverse"; +var DISTANCE_EXPONENTIAL = "exponential"; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/constants.js +var ADDRESS_REPEAT = 0; +var ADDRESS_CLAMP_TO_EDGE = 1; +var ADDRESS_MIRRORED_REPEAT = 2; +var BLENDMODE_ZERO = 0; +var BLENDMODE_ONE = 1; +var BLENDMODE_SRC_COLOR = 2; +var BLENDMODE_DST_COLOR = 4; +var BLENDMODE_ONE_MINUS_DST_COLOR = 5; +var BLENDMODE_SRC_ALPHA = 6; +var BLENDMODE_ONE_MINUS_SRC_ALPHA = 8; +var BLENDEQUATION_ADD = 0; +var BLENDEQUATION_REVERSE_SUBTRACT = 2; +var BLENDEQUATION_MIN = 3; +var BLENDEQUATION_MAX = 4; +var BUFFERUSAGE_READ = 1; +var BUFFERUSAGE_COPY_DST = 8; +var BUFFERUSAGE_INDEX = 16; +var BUFFERUSAGE_VERTEX = 32; +var BUFFERUSAGE_UNIFORM = 64; +var BUFFERUSAGE_STORAGE = 128; +var BUFFER_STATIC = 0; +var BUFFER_DYNAMIC = 1; +var BUFFER_STREAM = 2; +var BUFFER_GPUDYNAMIC = 3; +var CLEARFLAG_COLOR = 1; +var CLEARFLAG_DEPTH = 2; +var CLEARFLAG_STENCIL = 4; +var CULLFACE_NONE = 0; +var CULLFACE_BACK = 1; +var CULLFACE_FRONT = 2; +var FILTER_NEAREST = 0; +var FILTER_LINEAR = 1; +var FILTER_NEAREST_MIPMAP_NEAREST = 2; +var FILTER_NEAREST_MIPMAP_LINEAR = 3; +var FILTER_LINEAR_MIPMAP_NEAREST = 4; +var FILTER_LINEAR_MIPMAP_LINEAR = 5; +var FUNC_LESS = 1; +var FUNC_LESSEQUAL = 3; +var FUNC_ALWAYS = 7; +var INDEXFORMAT_UINT8 = 0; +var INDEXFORMAT_UINT16 = 1; +var INDEXFORMAT_UINT32 = 2; +var PIXELFORMAT_A8 = 0; +var PIXELFORMAT_L8 = 1; +var PIXELFORMAT_LA8 = 2; +var PIXELFORMAT_RGB565 = 3; +var PIXELFORMAT_RGBA5551 = 4; +var PIXELFORMAT_RGBA4 = 5; +var PIXELFORMAT_RGB8 = 6; +var PIXELFORMAT_RGBA8 = 7; +var PIXELFORMAT_DXT1 = 8; +var PIXELFORMAT_DXT3 = 9; +var PIXELFORMAT_DXT5 = 10; +var PIXELFORMAT_RGB16F = 11; +var PIXELFORMAT_RGBA16F = 12; +var PIXELFORMAT_RGB32F = 13; +var PIXELFORMAT_RGBA32F = 14; +var PIXELFORMAT_R32F = 15; +var PIXELFORMAT_DEPTH = 16; +var PIXELFORMAT_DEPTHSTENCIL = 17; +var PIXELFORMAT_111110F = 18; +var PIXELFORMAT_SRGB = 19; +var PIXELFORMAT_SRGBA = 20; +var PIXELFORMAT_ETC1 = 21; +var PIXELFORMAT_ETC2_RGB = 22; +var PIXELFORMAT_ETC2_RGBA = 23; +var PIXELFORMAT_PVRTC_2BPP_RGB_1 = 24; +var PIXELFORMAT_PVRTC_2BPP_RGBA_1 = 25; +var PIXELFORMAT_PVRTC_4BPP_RGB_1 = 26; +var PIXELFORMAT_PVRTC_4BPP_RGBA_1 = 27; +var PIXELFORMAT_ASTC_4x4 = 28; +var PIXELFORMAT_ATC_RGB = 29; +var PIXELFORMAT_ATC_RGBA = 30; +var PIXELFORMAT_BGRA8 = 31; +var PIXELFORMAT_R8I = 32; +var PIXELFORMAT_R8U = 33; +var PIXELFORMAT_R16I = 34; +var PIXELFORMAT_R16U = 35; +var PIXELFORMAT_R32I = 36; +var PIXELFORMAT_R32U = 37; +var PIXELFORMAT_RG8I = 38; +var PIXELFORMAT_RG8U = 39; +var PIXELFORMAT_RG16I = 40; +var PIXELFORMAT_RG16U = 41; +var PIXELFORMAT_RG32I = 42; +var PIXELFORMAT_RG32U = 43; +var PIXELFORMAT_RGBA8I = 44; +var PIXELFORMAT_RGBA8U = 45; +var PIXELFORMAT_RGBA16I = 46; +var PIXELFORMAT_RGBA16U = 47; +var PIXELFORMAT_RGBA32I = 48; +var PIXELFORMAT_RGBA32U = 49; +var PIXELFORMAT_R16F = 50; +var PIXELFORMAT_RG16F = 51; +var pixelFormatInfo = /* @__PURE__ */ new Map([[PIXELFORMAT_A8, { + name: "A8", + size: 1 +}], [PIXELFORMAT_L8, { + name: "L8", + size: 1 +}], [PIXELFORMAT_LA8, { + name: "LA8", + size: 2 +}], [PIXELFORMAT_RGB565, { + name: "RGB565", + size: 2 +}], [PIXELFORMAT_RGBA5551, { + name: "RGBA5551", + size: 2 +}], [PIXELFORMAT_RGBA4, { + name: "RGBA4", + size: 2 +}], [PIXELFORMAT_RGB8, { + name: "RGB8", + size: 4 +}], [PIXELFORMAT_RGBA8, { + name: "RGBA8", + size: 4 +}], [PIXELFORMAT_R16F, { + name: "R16F", + size: 2 +}], [PIXELFORMAT_RG16F, { + name: "RG16F", + size: 4 +}], [PIXELFORMAT_RGB16F, { + name: "RGB16F", + size: 8 +}], [PIXELFORMAT_RGBA16F, { + name: "RGBA16F", + size: 8 +}], [PIXELFORMAT_RGB32F, { + name: "RGB32F", + size: 16 +}], [PIXELFORMAT_RGBA32F, { + name: "RGBA32F", + size: 16 +}], [PIXELFORMAT_R32F, { + name: "R32F", + size: 4 +}], [PIXELFORMAT_DEPTH, { + name: "DEPTH", + size: 4 +}], [PIXELFORMAT_DEPTHSTENCIL, { + name: "DEPTHSTENCIL", + size: 4 +}], [PIXELFORMAT_111110F, { + name: "111110F", + size: 4 +}], [PIXELFORMAT_SRGB, { + name: "SRGB", + size: 4 +}], [PIXELFORMAT_SRGBA, { + name: "SRGBA", + size: 4 +}], [PIXELFORMAT_BGRA8, { + name: "BGRA8", + size: 4 +}], [PIXELFORMAT_DXT1, { + name: "DXT1", + blockSize: 8 +}], [PIXELFORMAT_DXT3, { + name: "DXT3", + blockSize: 16 +}], [PIXELFORMAT_DXT5, { + name: "DXT5", + blockSize: 16 +}], [PIXELFORMAT_ETC1, { + name: "ETC1", + blockSize: 8 +}], [PIXELFORMAT_ETC2_RGB, { + name: "ETC2_RGB", + blockSize: 8 +}], [PIXELFORMAT_ETC2_RGBA, { + name: "ETC2_RGBA", + blockSize: 16 +}], [PIXELFORMAT_PVRTC_2BPP_RGB_1, { + name: "PVRTC_2BPP_RGB_1", + blockSize: 8 +}], [PIXELFORMAT_PVRTC_2BPP_RGBA_1, { + name: "PVRTC_2BPP_RGBA_1", + blockSize: 8 +}], [PIXELFORMAT_PVRTC_4BPP_RGB_1, { + name: "PVRTC_4BPP_RGB_1", + blockSize: 8 +}], [PIXELFORMAT_PVRTC_4BPP_RGBA_1, { + name: "PVRTC_4BPP_RGBA_1", + blockSize: 8 +}], [PIXELFORMAT_ASTC_4x4, { + name: "ASTC_4x4", + blockSize: 16 +}], [PIXELFORMAT_ATC_RGB, { + name: "ATC_RGB", + blockSize: 8 +}], [PIXELFORMAT_ATC_RGBA, { + name: "ATC_RGBA", + blockSize: 16 +}], [PIXELFORMAT_R8I, { + name: "R8I", + size: 1, + isInt: true +}], [PIXELFORMAT_R8U, { + name: "R8U", + size: 1, + isInt: true +}], [PIXELFORMAT_R16I, { + name: "R16I", + size: 2, + isInt: true +}], [PIXELFORMAT_R16U, { + name: "R16U", + size: 2, + isInt: true +}], [PIXELFORMAT_R32I, { + name: "R32I", + size: 4, + isInt: true +}], [PIXELFORMAT_R32U, { + name: "R32U", + size: 4, + isInt: true +}], [PIXELFORMAT_RG8I, { + name: "RG8I", + size: 2, + isInt: true +}], [PIXELFORMAT_RG8U, { + name: "RG8U", + size: 2, + isInt: true +}], [PIXELFORMAT_RG16I, { + name: "RG16I", + size: 4, + isInt: true +}], [PIXELFORMAT_RG16U, { + name: "RG16U", + size: 4, + isInt: true +}], [PIXELFORMAT_RG32I, { + name: "RG32I", + size: 8, + isInt: true +}], [PIXELFORMAT_RG32U, { + name: "RG32U", + size: 8, + isInt: true +}], [PIXELFORMAT_RGBA8I, { + name: "RGBA8I", + size: 4, + isInt: true +}], [PIXELFORMAT_RGBA8U, { + name: "RGBA8U", + size: 4, + isInt: true +}], [PIXELFORMAT_RGBA16I, { + name: "RGBA16I", + size: 8, + isInt: true +}], [PIXELFORMAT_RGBA16U, { + name: "RGBA16U", + size: 8, + isInt: true +}], [PIXELFORMAT_RGBA32I, { + name: "RGBA32I", + size: 16, + isInt: true +}], [PIXELFORMAT_RGBA32U, { + name: "RGBA32U", + size: 16, + isInt: true +}]]); +var isCompressedPixelFormat = (format) => { + var _pixelFormatInfo$get; + return ((_pixelFormatInfo$get = pixelFormatInfo.get(format)) == null ? void 0 : _pixelFormatInfo$get.blockSize) !== void 0; +}; +var isIntegerPixelFormat = (format) => { + var _pixelFormatInfo$get2; + return ((_pixelFormatInfo$get2 = pixelFormatInfo.get(format)) == null ? void 0 : _pixelFormatInfo$get2.isInt) === true; +}; +var getPixelFormatArrayType = (format) => { + switch (format) { + case PIXELFORMAT_R32F: + case PIXELFORMAT_RGB32F: + case PIXELFORMAT_RGBA32F: + return Float32Array; + case PIXELFORMAT_R32I: + case PIXELFORMAT_RG32I: + case PIXELFORMAT_RGBA32I: + return Int32Array; + case PIXELFORMAT_R32U: + case PIXELFORMAT_RG32U: + case PIXELFORMAT_RGBA32U: + return Uint32Array; + case PIXELFORMAT_R16I: + case PIXELFORMAT_RG16I: + case PIXELFORMAT_RGBA16I: + return Int16Array; + case PIXELFORMAT_R16U: + case PIXELFORMAT_RG16U: + case PIXELFORMAT_RGBA16U: + case PIXELFORMAT_RGB565: + case PIXELFORMAT_RGBA5551: + case PIXELFORMAT_RGBA4: + case PIXELFORMAT_R16F: + case PIXELFORMAT_RG16F: + case PIXELFORMAT_RGB16F: + case PIXELFORMAT_RGBA16F: + return Uint16Array; + case PIXELFORMAT_R8I: + case PIXELFORMAT_RG8I: + case PIXELFORMAT_RGBA8I: + return Int8Array; + default: + return Uint8Array; + } +}; +var PRIMITIVE_POINTS = 0; +var PRIMITIVE_LINES = 1; +var PRIMITIVE_LINELOOP = 2; +var PRIMITIVE_LINESTRIP = 3; +var PRIMITIVE_TRIANGLES = 4; +var PRIMITIVE_TRISTRIP = 5; +var PRIMITIVE_TRIFAN = 6; +var SEMANTIC_POSITION = "POSITION"; +var SEMANTIC_NORMAL = "NORMAL"; +var SEMANTIC_TANGENT = "TANGENT"; +var SEMANTIC_BLENDWEIGHT = "BLENDWEIGHT"; +var SEMANTIC_BLENDINDICES = "BLENDINDICES"; +var SEMANTIC_COLOR = "COLOR"; +var SEMANTIC_TEXCOORD = "TEXCOORD"; +var SEMANTIC_TEXCOORD0 = "TEXCOORD0"; +var SEMANTIC_TEXCOORD1 = "TEXCOORD1"; +var SEMANTIC_TEXCOORD2 = "TEXCOORD2"; +var SEMANTIC_TEXCOORD3 = "TEXCOORD3"; +var SEMANTIC_TEXCOORD4 = "TEXCOORD4"; +var SEMANTIC_TEXCOORD5 = "TEXCOORD5"; +var SEMANTIC_TEXCOORD6 = "TEXCOORD6"; +var SEMANTIC_TEXCOORD7 = "TEXCOORD7"; +var SEMANTIC_ATTR = "ATTR"; +var SEMANTIC_ATTR0 = "ATTR0"; +var SEMANTIC_ATTR1 = "ATTR1"; +var SEMANTIC_ATTR2 = "ATTR2"; +var SEMANTIC_ATTR3 = "ATTR3"; +var SEMANTIC_ATTR4 = "ATTR4"; +var SEMANTIC_ATTR5 = "ATTR5"; +var SEMANTIC_ATTR6 = "ATTR6"; +var SEMANTIC_ATTR7 = "ATTR7"; +var SEMANTIC_ATTR8 = "ATTR8"; +var SEMANTIC_ATTR9 = "ATTR9"; +var SEMANTIC_ATTR10 = "ATTR10"; +var SEMANTIC_ATTR11 = "ATTR11"; +var SEMANTIC_ATTR12 = "ATTR12"; +var SEMANTIC_ATTR13 = "ATTR13"; +var SEMANTIC_ATTR14 = "ATTR14"; +var SEMANTIC_ATTR15 = "ATTR15"; +var SHADERTAG_MATERIAL = 1; +var STENCILOP_KEEP = 0; +var TEXTURELOCK_NONE = 0; +var TEXTURELOCK_READ = 1; +var TEXTURELOCK_WRITE = 2; +var TEXTURETYPE_DEFAULT = "default"; +var TEXTURETYPE_RGBM = "rgbm"; +var TEXTURETYPE_RGBE = "rgbe"; +var TEXTURETYPE_RGBP = "rgbp"; +var TEXTURETYPE_SWIZZLEGGGR = "swizzleGGGR"; +var TEXTUREDIMENSION_2D = "2d"; +var TEXTUREDIMENSION_2D_ARRAY = "2d-array"; +var TEXTUREDIMENSION_CUBE = "cube"; +var TEXTUREDIMENSION_3D = "3d"; +var SAMPLETYPE_FLOAT = 0; +var SAMPLETYPE_UNFILTERABLE_FLOAT = 1; +var SAMPLETYPE_DEPTH = 2; +var SAMPLETYPE_INT = 3; +var SAMPLETYPE_UINT = 4; +var TEXTUREPROJECTION_NONE = "none"; +var TEXTUREPROJECTION_CUBE = "cube"; +var TEXTUREPROJECTION_EQUIRECT = "equirect"; +var TEXTUREPROJECTION_OCTAHEDRAL = "octahedral"; +var SHADERLANGUAGE_WGSL = "wgsl"; +var TYPE_INT8 = 0; +var TYPE_UINT8 = 1; +var TYPE_INT16 = 2; +var TYPE_UINT16 = 3; +var TYPE_INT32 = 4; +var TYPE_UINT32 = 5; +var TYPE_FLOAT32 = 6; +var TYPE_FLOAT16 = 7; +var UNIFORMTYPE_BOOL = 0; +var UNIFORMTYPE_INT = 1; +var UNIFORMTYPE_FLOAT = 2; +var UNIFORMTYPE_VEC2 = 3; +var UNIFORMTYPE_VEC3 = 4; +var UNIFORMTYPE_VEC4 = 5; +var UNIFORMTYPE_IVEC2 = 6; +var UNIFORMTYPE_IVEC3 = 7; +var UNIFORMTYPE_IVEC4 = 8; +var UNIFORMTYPE_BVEC2 = 9; +var UNIFORMTYPE_BVEC3 = 10; +var UNIFORMTYPE_BVEC4 = 11; +var UNIFORMTYPE_MAT2 = 12; +var UNIFORMTYPE_MAT3 = 13; +var UNIFORMTYPE_MAT4 = 14; +var UNIFORMTYPE_TEXTURE2D = 15; +var UNIFORMTYPE_TEXTURECUBE = 16; +var UNIFORMTYPE_FLOATARRAY = 17; +var UNIFORMTYPE_TEXTURE2D_SHADOW = 18; +var UNIFORMTYPE_TEXTURECUBE_SHADOW = 19; +var UNIFORMTYPE_TEXTURE3D = 20; +var UNIFORMTYPE_VEC2ARRAY = 21; +var UNIFORMTYPE_VEC3ARRAY = 22; +var UNIFORMTYPE_VEC4ARRAY = 23; +var UNIFORMTYPE_MAT4ARRAY = 24; +var UNIFORMTYPE_TEXTURE2D_ARRAY = 25; +var UNIFORMTYPE_UINT = 26; +var UNIFORMTYPE_UVEC2 = 27; +var UNIFORMTYPE_UVEC3 = 28; +var UNIFORMTYPE_UVEC4 = 29; +var UNIFORMTYPE_INTARRAY = 30; +var UNIFORMTYPE_UINTARRAY = 31; +var UNIFORMTYPE_BOOLARRAY = 32; +var UNIFORMTYPE_IVEC2ARRAY = 33; +var UNIFORMTYPE_UVEC2ARRAY = 34; +var UNIFORMTYPE_BVEC2ARRAY = 35; +var UNIFORMTYPE_IVEC3ARRAY = 36; +var UNIFORMTYPE_UVEC3ARRAY = 37; +var UNIFORMTYPE_BVEC3ARRAY = 38; +var UNIFORMTYPE_IVEC4ARRAY = 39; +var UNIFORMTYPE_UVEC4ARRAY = 40; +var UNIFORMTYPE_BVEC4ARRAY = 41; +var UNIFORMTYPE_ITEXTURE2D = 42; +var UNIFORMTYPE_UTEXTURE2D = 43; +var UNIFORMTYPE_ITEXTURECUBE = 44; +var UNIFORMTYPE_UTEXTURECUBE = 45; +var UNIFORMTYPE_ITEXTURE3D = 46; +var UNIFORMTYPE_UTEXTURE3D = 47; +var UNIFORMTYPE_ITEXTURE2D_ARRAY = 48; +var UNIFORMTYPE_UTEXTURE2D_ARRAY = 49; +var uniformTypeToName = ["bool", "int", "float", "vec2", "vec3", "vec4", "ivec2", "ivec3", "ivec4", "bvec2", "bvec3", "bvec4", "mat2", "mat3", "mat4", "sampler2D", "samplerCube", "", "sampler2DShadow", "samplerCubeShadow", "sampler3D", "", "", "", "", "sampler2DArray", "uint", "uvec2", "uvec3", "uvec4", "", "", "", "", "", "", "", "", "", "", "", "", "isampler2D", "usampler2D", "isamplerCube", "usamplerCube", "isampler3D", "usampler3D", "isampler2DArray", "usampler2DArray"]; +var uniformTypeToStorage = new Uint8Array([TYPE_INT32, TYPE_INT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_INT32, TYPE_INT32, TYPE_FLOAT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_INT32, TYPE_UINT32, TYPE_UINT32, TYPE_UINT32, TYPE_UINT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_UINT32]); +var DEVICETYPE_WEBGL1 = "webgl1"; +var DEVICETYPE_WEBGL2 = "webgl2"; +var DEVICETYPE_WEBGPU = "webgpu"; +var DEVICETYPE_NULL = "null"; +var SHADERSTAGE_VERTEX = 1; +var SHADERSTAGE_FRAGMENT = 2; +var SHADERSTAGE_COMPUTE = 4; +var BINDGROUP_MESH = 0; +var BINDGROUP_VIEW = 1; +var bindGroupNames = ["mesh", "view"]; +var UNIFORM_BUFFER_DEFAULT_SLOT_NAME = "default"; +var typedArrayTypes = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Uint16Array]; +var typedArrayTypesByteSize = [1, 1, 2, 2, 4, 4, 4, 2]; +var typedArrayIndexFormats = [Uint8Array, Uint16Array, Uint32Array]; +var typedArrayIndexFormatsByteSize = [1, 2, 4]; +var semanticToLocation = {}; +semanticToLocation[SEMANTIC_POSITION] = 0; +semanticToLocation[SEMANTIC_NORMAL] = 1; +semanticToLocation[SEMANTIC_BLENDWEIGHT] = 2; +semanticToLocation[SEMANTIC_BLENDINDICES] = 3; +semanticToLocation[SEMANTIC_COLOR] = 4; +semanticToLocation[SEMANTIC_TEXCOORD0] = 5; +semanticToLocation[SEMANTIC_TEXCOORD1] = 6; +semanticToLocation[SEMANTIC_TEXCOORD2] = 7; +semanticToLocation[SEMANTIC_TEXCOORD3] = 8; +semanticToLocation[SEMANTIC_TEXCOORD4] = 9; +semanticToLocation[SEMANTIC_TEXCOORD5] = 10; +semanticToLocation[SEMANTIC_TEXCOORD6] = 11; +semanticToLocation[SEMANTIC_TEXCOORD7] = 12; +semanticToLocation[SEMANTIC_TANGENT] = 13; +semanticToLocation[SEMANTIC_ATTR0] = 0; +semanticToLocation[SEMANTIC_ATTR1] = 1; +semanticToLocation[SEMANTIC_ATTR2] = 2; +semanticToLocation[SEMANTIC_ATTR3] = 3; +semanticToLocation[SEMANTIC_ATTR4] = 4; +semanticToLocation[SEMANTIC_ATTR5] = 5; +semanticToLocation[SEMANTIC_ATTR6] = 6; +semanticToLocation[SEMANTIC_ATTR7] = 7; +semanticToLocation[SEMANTIC_ATTR8] = 8; +semanticToLocation[SEMANTIC_ATTR9] = 9; +semanticToLocation[SEMANTIC_ATTR10] = 10; +semanticToLocation[SEMANTIC_ATTR11] = 11; +semanticToLocation[SEMANTIC_ATTR12] = 12; +semanticToLocation[SEMANTIC_ATTR13] = 13; +semanticToLocation[SEMANTIC_ATTR14] = 14; +semanticToLocation[SEMANTIC_ATTR15] = 15; + +// ../../node_modules/playcanvas/build/playcanvas/_virtual/_rollupPluginBabelHelpers.js +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function(target2) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target2[key] = source[key]; + } + } + } + return target2; + }; + return _extends.apply(this, arguments); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/bit-packing.js +var BitPacking = { + set(storage, value, shift, mask = 1) { + const data2 = storage & ~(mask << shift); + return data2 | value << shift; + }, + get(storage, shift, mask = 1) { + return storage >> shift & mask; + }, + all(storage, shift, mask = 1) { + const shifted = mask << shift; + return (storage & shifted) === shifted; + }, + any(storage, shift, mask = 1) { + return (storage & mask << shift) !== 0; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/blend-state.js +var _BlendState; +var opMask = 7; +var factorMask = 15; +var colorOpShift = 0; +var colorSrcFactorShift = 3; +var colorDstFactorShift = 7; +var alphaOpShift = 11; +var alphaSrcFactorShift = 14; +var alphaDstFactorShift = 18; +var redWriteShift = 22; +var greenWriteShift = 23; +var blueWriteShift = 24; +var alphaWriteShift = 25; +var blendShift = 26; +var allWriteMasks = 15; +var allWriteShift = redWriteShift; +var BlendState = class { + constructor(blend = false, colorOp = BLENDEQUATION_ADD, colorSrcFactor = BLENDMODE_ONE, colorDstFactor = BLENDMODE_ZERO, alphaOp, alphaSrcFactor, alphaDstFactor, redWrite = true, greenWrite = true, blueWrite = true, alphaWrite = true) { + this.target0 = 0; + this.setColorBlend(colorOp, colorSrcFactor, colorDstFactor); + this.setAlphaBlend(alphaOp != null ? alphaOp : colorOp, alphaSrcFactor != null ? alphaSrcFactor : colorSrcFactor, alphaDstFactor != null ? alphaDstFactor : colorDstFactor); + this.setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite); + this.blend = blend; + } + set blend(value) { + this.target0 = BitPacking.set(this.target0, value ? 1 : 0, blendShift); + } + get blend() { + return BitPacking.all(this.target0, blendShift); + } + setColorBlend(op, srcFactor, dstFactor) { + this.target0 = BitPacking.set(this.target0, op, colorOpShift, opMask); + this.target0 = BitPacking.set(this.target0, srcFactor, colorSrcFactorShift, factorMask); + this.target0 = BitPacking.set(this.target0, dstFactor, colorDstFactorShift, factorMask); + } + setAlphaBlend(op, srcFactor, dstFactor) { + this.target0 = BitPacking.set(this.target0, op, alphaOpShift, opMask); + this.target0 = BitPacking.set(this.target0, srcFactor, alphaSrcFactorShift, factorMask); + this.target0 = BitPacking.set(this.target0, dstFactor, alphaDstFactorShift, factorMask); + } + setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite) { + this.redWrite = redWrite; + this.greenWrite = greenWrite; + this.blueWrite = blueWrite; + this.alphaWrite = alphaWrite; + } + get colorOp() { + return BitPacking.get(this.target0, colorOpShift, opMask); + } + get colorSrcFactor() { + return BitPacking.get(this.target0, colorSrcFactorShift, factorMask); + } + get colorDstFactor() { + return BitPacking.get(this.target0, colorDstFactorShift, factorMask); + } + get alphaOp() { + return BitPacking.get(this.target0, alphaOpShift, opMask); + } + get alphaSrcFactor() { + return BitPacking.get(this.target0, alphaSrcFactorShift, factorMask); + } + get alphaDstFactor() { + return BitPacking.get(this.target0, alphaDstFactorShift, factorMask); + } + set redWrite(value) { + this.target0 = BitPacking.set(this.target0, value ? 1 : 0, redWriteShift); + } + get redWrite() { + return BitPacking.all(this.target0, redWriteShift); + } + set greenWrite(value) { + this.target0 = BitPacking.set(this.target0, value ? 1 : 0, greenWriteShift); + } + get greenWrite() { + return BitPacking.all(this.target0, greenWriteShift); + } + set blueWrite(value) { + this.target0 = BitPacking.set(this.target0, value ? 1 : 0, blueWriteShift); + } + get blueWrite() { + return BitPacking.all(this.target0, blueWriteShift); + } + set alphaWrite(value) { + this.target0 = BitPacking.set(this.target0, value ? 1 : 0, alphaWriteShift); + } + get alphaWrite() { + return BitPacking.all(this.target0, alphaWriteShift); + } + get allWrite() { + return BitPacking.get(this.target0, allWriteShift, allWriteMasks); + } + copy(rhs) { + this.target0 = rhs.target0; + return this; + } + clone() { + const clone = new this.constructor(); + return clone.copy(this); + } + get key() { + return this.target0; + } + equals(rhs) { + return this.target0 === rhs.target0; + } +}; +_BlendState = BlendState; +BlendState.NOBLEND = Object.freeze(new _BlendState()); +BlendState.NOWRITE = Object.freeze(new _BlendState(void 0, void 0, void 0, void 0, void 0, void 0, void 0, false, false, false, false)); +BlendState.ALPHABLEND = Object.freeze(new _BlendState(true, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA)); +BlendState.ADDBLEND = Object.freeze(new _BlendState(true, BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE)); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/string-ids.js +var StringIds = class { + constructor() { + this.map = /* @__PURE__ */ new Map(); + this.id = 0; + } + get(name) { + let value = this.map.get(name); + if (value === void 0) { + value = this.id++; + this.map.set(name, value); + } + return value; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/depth-state.js +var _DepthState; +var stringIds = new StringIds(); +var funcMask = 7; +var funcShift = 0; +var writeShift = 3; +var DepthState = class { + constructor(func = FUNC_LESSEQUAL, write = true) { + this.data = 0; + this._depthBias = 0; + this._depthBiasSlope = 0; + this.key = 0; + this.func = func; + this.write = write; + } + set test(value) { + this.func = value ? FUNC_LESSEQUAL : FUNC_ALWAYS; + this.updateKey(); + } + get test() { + return this.func !== FUNC_ALWAYS; + } + set write(value) { + this.data = BitPacking.set(this.data, value ? 1 : 0, writeShift); + this.updateKey(); + } + get write() { + return BitPacking.all(this.data, writeShift); + } + set func(value) { + this.data = BitPacking.set(this.data, value, funcShift, funcMask); + this.updateKey(); + } + get func() { + return BitPacking.get(this.data, funcShift, funcMask); + } + set depthBias(value) { + this._depthBias = value; + this.updateKey(); + } + get depthBias() { + return this._depthBias; + } + set depthBiasSlope(value) { + this._depthBiasSlope = value; + this.updateKey(); + } + get depthBiasSlope() { + return this._depthBiasSlope; + } + copy(rhs) { + this.data = rhs.data; + this._depthBias = rhs._depthBias; + this._depthBiasSlope = rhs._depthBiasSlope; + this.key = rhs.key; + return this; + } + clone() { + const clone = new this.constructor(); + return clone.copy(this); + } + updateKey() { + const { + data: data2, + _depthBias, + _depthBiasSlope + } = this; + const key = `${data2}-${_depthBias}-${_depthBiasSlope}`; + this.key = stringIds.get(key); + } + equals(rhs) { + return this.key === rhs.key; + } +}; +_DepthState = DepthState; +DepthState.DEFAULT = Object.freeze(new _DepthState()); +DepthState.NODEPTH = Object.freeze(new _DepthState(FUNC_ALWAYS, false)); +DepthState.WRITEDEPTH = Object.freeze(new _DepthState(FUNC_ALWAYS, true)); + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/version.js +var Version = class { + constructor() { + this.globalId = 0; + this.revision = 0; + } + equals(other) { + return this.globalId === other.globalId && this.revision === other.revision; + } + copy(other) { + this.globalId = other.globalId; + this.revision = other.revision; + } + reset() { + this.globalId = 0; + this.revision = 0; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/versioned-object.js +var idCounter = 0; +var VersionedObject = class { + constructor() { + idCounter++; + this.version = new Version(); + this.version.globalId = idCounter; + } + increment() { + this.version.revision++; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/scope-id.js +var ScopeId = class { + constructor(name) { + this.name = name; + this.value = null; + this.versionObject = new VersionedObject(); + } + toJSON(key) { + return void 0; + } + setValue(value) { + this.value = value; + this.versionObject.increment(); + } + getValue() { + return this.value; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/scope-space.js +var ScopeSpace = class { + constructor(name) { + this.name = name; + this.variables = /* @__PURE__ */ new Map(); + } + resolve(name) { + if (!this.variables.has(name)) { + this.variables.set(name, new ScopeId(name)); + } + return this.variables.get(name); + } + removeValue(value) { + for (const uniformName in this.variables) { + const uniform = this.variables[uniformName]; + if (uniform.value === value) { + uniform.value = null; + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/vertex-buffer.js +var id = 0; +var VertexBuffer = class { + constructor(graphicsDevice, format, numVertices, options) { + this.usage = BUFFER_STATIC; + let initialData; + if (typeof options === "object") { + var _options$usage; + this.usage = (_options$usage = options.usage) != null ? _options$usage : BUFFER_STATIC; + initialData = options.data; + } else if (arguments.length > 3) { + var _arguments$; + this.usage = (_arguments$ = arguments[3]) != null ? _arguments$ : BUFFER_STATIC; + initialData = arguments[4]; + } + this.device = graphicsDevice; + this.format = format; + this.numVertices = numVertices; + this.id = id++; + this.impl = graphicsDevice.createVertexBufferImpl(this, format, options); + this.numBytes = format.verticesByteSize ? format.verticesByteSize : format.size * numVertices; + this.adjustVramSizeTracking(graphicsDevice._vram, this.numBytes); + if (initialData) { + this.setData(initialData); + } else { + this.storage = new ArrayBuffer(this.numBytes); + } + this.device.buffers.push(this); + } + destroy() { + const device = this.device; + const idx = device.buffers.indexOf(this); + if (idx !== -1) { + device.buffers.splice(idx, 1); + } + if (this.impl.initialized) { + this.impl.destroy(device); + this.adjustVramSizeTracking(device._vram, -this.storage.byteLength); + } + } + adjustVramSizeTracking(vram, size) { + vram.vb += size; + } + loseContext() { + this.impl.loseContext(); + } + getFormat() { + return this.format; + } + getUsage() { + return this.usage; + } + getNumVertices() { + return this.numVertices; + } + lock() { + return this.storage; + } + unlock() { + this.impl.unlock(this); + } + setData(data2) { + if (data2.byteLength !== this.numBytes) { + return false; + } + this.storage = data2; + this.unlock(); + return true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/hash.js +function hashCode(str) { + let hash = 0; + for (let i = 0, len = str.length; i < len; i++) { + hash = (hash << 5) - hash + str.charCodeAt(i); + hash |= 0; + } + return hash; +} +function hash32Fnv1a(array2) { + const prime = 16777619; + let hash = 2166136261; + for (let i = 0; i < array2.length; i++) { + hash ^= array2[i]; + hash *= prime; + } + return hash >>> 0; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/device-cache.js +var DeviceCache = class { + constructor() { + this._cache = /* @__PURE__ */ new Map(); + } + get(device, onCreate) { + if (!this._cache.has(device)) { + this._cache.set(device, onCreate()); + device.on("destroy", () => { + this.remove(device); + }); + device.on("devicelost", () => { + var _this$_cache$get; + (_this$_cache$get = this._cache.get(device)) == null || _this$_cache$get.loseContext == null || _this$_cache$get.loseContext(device); + }); + } + return this._cache.get(device); + } + remove(device) { + var _this$_cache$get2; + (_this$_cache$get2 = this._cache.get(device)) == null || _this$_cache$get2.destroy == null || _this$_cache$get2.destroy(device); + this._cache.delete(device); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/vertex-format.js +var stringIds2 = new StringIds(); +var webgpuValidElementSizes = [2, 4, 8, 12, 16]; +var deviceCache = new DeviceCache(); +var VertexFormat = class _VertexFormat { + constructor(graphicsDevice, description, vertexCount) { + this.device = graphicsDevice; + this._elements = []; + this.hasUv0 = false; + this.hasUv1 = false; + this.hasColor = false; + this.hasTangents = false; + this.verticesByteSize = 0; + this.vertexCount = vertexCount; + this.interleaved = vertexCount === void 0; + this.instancing = false; + this.size = description.reduce((total, desc) => { + return total + Math.ceil(desc.components * typedArrayTypesByteSize[desc.type] / 4) * 4; + }, 0); + let offset = 0, elementSize; + for (let i = 0, len = description.length; i < len; i++) { + var _elementDesc$asInt, _elementDesc$normaliz; + const elementDesc = description[i]; + elementSize = elementDesc.components * typedArrayTypesByteSize[elementDesc.type]; + if (vertexCount) { + offset = math.roundUp(offset, elementSize); + } + const asInt = (_elementDesc$asInt = elementDesc.asInt) != null ? _elementDesc$asInt : false; + const normalize = asInt ? false : (_elementDesc$normaliz = elementDesc.normalize) != null ? _elementDesc$normaliz : false; + const element = { + name: elementDesc.semantic, + offset: vertexCount ? offset : elementDesc.hasOwnProperty("offset") ? elementDesc.offset : offset, + stride: vertexCount ? elementSize : elementDesc.hasOwnProperty("stride") ? elementDesc.stride : this.size, + dataType: elementDesc.type, + numComponents: elementDesc.components, + normalize, + size: elementSize, + asInt + }; + this._elements.push(element); + if (vertexCount) { + offset += elementSize * vertexCount; + } else { + offset += Math.ceil(elementSize / 4) * 4; + } + if (elementDesc.semantic === SEMANTIC_TEXCOORD0) { + this.hasUv0 = true; + } else if (elementDesc.semantic === SEMANTIC_TEXCOORD1) { + this.hasUv1 = true; + } else if (elementDesc.semantic === SEMANTIC_COLOR) { + this.hasColor = true; + } else if (elementDesc.semantic === SEMANTIC_TANGENT) { + this.hasTangents = true; + } + } + if (vertexCount) { + this.verticesByteSize = offset; + } + this._evaluateHash(); + } + get elements() { + return this._elements; + } + static getDefaultInstancingFormat(graphicsDevice) { + return deviceCache.get(graphicsDevice, () => { + return new _VertexFormat(graphicsDevice, [{ + semantic: SEMANTIC_ATTR12, + components: 4, + type: TYPE_FLOAT32 + }, { + semantic: SEMANTIC_ATTR13, + components: 4, + type: TYPE_FLOAT32 + }, { + semantic: SEMANTIC_ATTR14, + components: 4, + type: TYPE_FLOAT32 + }, { + semantic: SEMANTIC_ATTR15, + components: 4, + type: TYPE_FLOAT32 + }]); + }); + } + static isElementValid(graphicsDevice, elementDesc) { + const elementSize = elementDesc.components * typedArrayTypesByteSize[elementDesc.type]; + if (graphicsDevice.isWebGPU && !webgpuValidElementSizes.includes(elementSize)) return false; + return true; + } + update() { + this._evaluateHash(); + } + _evaluateHash() { + const stringElementsBatch = []; + const stringElementsRender = []; + const len = this._elements.length; + for (let i = 0; i < len; i++) { + const { + name, + dataType, + numComponents, + normalize, + offset, + stride, + size, + asInt + } = this._elements[i]; + const stringElementBatch = name + dataType + numComponents + normalize + asInt; + stringElementsBatch.push(stringElementBatch); + const stringElementRender = stringElementBatch + offset + stride + size; + stringElementsRender.push(stringElementRender); + } + stringElementsBatch.sort(); + const batchingString = stringElementsBatch.join(); + this.batchingHash = hashCode(batchingString); + this.shaderProcessingHashString = batchingString; + this.renderingHashString = stringElementsRender.join("_"); + this.renderingHash = stringIds2.get(this.renderingHashString); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/stencil-parameters.js +var _StencilParameters; +var stringIds3 = new StringIds(); +var StencilParameters = class { + set func(value) { + this._func = value; + this._dirty = true; + } + get func() { + return this._func; + } + set ref(value) { + this._ref = value; + this._dirty = true; + } + get ref() { + return this._ref; + } + set fail(value) { + this._fail = value; + this._dirty = true; + } + get fail() { + return this._fail; + } + set zfail(value) { + this._zfail = value; + this._dirty = true; + } + get zfail() { + return this._zfail; + } + set zpass(value) { + this._zpass = value; + this._dirty = true; + } + get zpass() { + return this._zpass; + } + set readMask(value) { + this._readMask = value; + this._dirty = true; + } + get readMask() { + return this._readMask; + } + set writeMask(value) { + this._writeMask = value; + this._dirty = true; + } + get writeMask() { + return this._writeMask; + } + constructor(options = {}) { + var _options$func, _options$ref, _options$readMask, _options$writeMask, _options$fail, _options$zfail, _options$zpass; + this._func = void 0; + this._ref = void 0; + this._fail = void 0; + this._zfail = void 0; + this._zpass = void 0; + this._readMask = void 0; + this._writeMask = void 0; + this._dirty = true; + this._key = void 0; + this._func = (_options$func = options.func) != null ? _options$func : FUNC_ALWAYS; + this._ref = (_options$ref = options.ref) != null ? _options$ref : 0; + this._readMask = (_options$readMask = options.readMask) != null ? _options$readMask : 255; + this._writeMask = (_options$writeMask = options.writeMask) != null ? _options$writeMask : 255; + this._fail = (_options$fail = options.fail) != null ? _options$fail : STENCILOP_KEEP; + this._zfail = (_options$zfail = options.zfail) != null ? _options$zfail : STENCILOP_KEEP; + this._zpass = (_options$zpass = options.zpass) != null ? _options$zpass : STENCILOP_KEEP; + this._evalKey(); + } + _evalKey() { + const { + _func, + _ref: _ref4, + _fail, + _zfail, + _zpass, + _readMask, + _writeMask + } = this; + const key = `${_func},${_ref4},${_fail},${_zfail},${_zpass},${_readMask},${_writeMask}`; + this._key = stringIds3.get(key); + this._dirty = false; + } + get key() { + if (this._dirty) { + this._evalKey(); + } + return this._key; + } + copy(rhs) { + this._func = rhs._func; + this._ref = rhs._ref; + this._readMask = rhs._readMask; + this._writeMask = rhs._writeMask; + this._fail = rhs._fail; + this._zfail = rhs._zfail; + this._zpass = rhs._zpass; + this._dirty = rhs._dirty; + this._key = rhs._key; + return this; + } + clone() { + const clone = new this.constructor(); + return clone.copy(this); + } +}; +_StencilParameters = StencilParameters; +StencilParameters.DEFAULT = Object.freeze(new _StencilParameters()); + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/graphics-device.js +var GraphicsDevice = class _GraphicsDevice extends EventHandler { + constructor(canvas, options) { + var _this$initOptions, _this$initOptions$dep, _this$initOptions2, _this$initOptions2$st, _this$initOptions3, _this$initOptions3$an, _this$initOptions4, _this$initOptions4$po; + super(); + this.canvas = void 0; + this.backBuffer = null; + this.backBufferSize = new Vec2(); + this.backBufferFormat = void 0; + this.backBufferAntialias = false; + this.isWebGPU = false; + this.isWebGL1 = false; + this.isWebGL2 = false; + this.scope = void 0; + this.boneLimit = void 0; + this.maxAnisotropy = void 0; + this.maxCubeMapSize = void 0; + this.maxTextureSize = void 0; + this.maxVolumeSize = void 0; + this.maxColorAttachments = 1; + this.precision = void 0; + this.samples = void 0; + this.supportsStencil = void 0; + this.supportsMrt = false; + this.supportsVolumeTextures = false; + this.supportsCompute = false; + this.supportsStorageTextureRead = false; + this.renderTarget = null; + this.shaders = []; + this.textures = []; + this.targets = /* @__PURE__ */ new Set(); + this.renderVersion = 0; + this.renderPassIndex = void 0; + this.insideRenderPass = false; + this.supportsInstancing = void 0; + this.supportsUniformBuffers = false; + this.textureFloatRenderable = void 0; + this.textureHalfFloatRenderable = void 0; + this.textureFloatFilterable = false; + this.textureHalfFloatFilterable = false; + this.quadVertexBuffer = void 0; + this.blendState = new BlendState(); + this.depthState = new DepthState(); + this.stencilEnabled = false; + this.stencilFront = new StencilParameters(); + this.stencilBack = new StencilParameters(); + this.dynamicBuffers = void 0; + this.gpuProfiler = void 0; + this.defaultClearOptions = { + color: [0, 0, 0, 1], + depth: 1, + stencil: 0, + flags: CLEARFLAG_COLOR | CLEARFLAG_DEPTH + }; + this.clientRect = { + width: 0, + height: 0 + }; + this.canvas = canvas; + this.initOptions = _extends({}, options); + (_this$initOptions$dep = (_this$initOptions = this.initOptions).depth) != null ? _this$initOptions$dep : _this$initOptions.depth = true; + (_this$initOptions2$st = (_this$initOptions2 = this.initOptions).stencil) != null ? _this$initOptions2$st : _this$initOptions2.stencil = true; + (_this$initOptions3$an = (_this$initOptions3 = this.initOptions).antialias) != null ? _this$initOptions3$an : _this$initOptions3.antialias = true; + (_this$initOptions4$po = (_this$initOptions4 = this.initOptions).powerPreference) != null ? _this$initOptions4$po : _this$initOptions4.powerPreference = "high-performance"; + this._maxPixelRatio = platform.browser ? Math.min(1, window.devicePixelRatio) : 1; + this.buffers = []; + this._vram = { + tex: 0, + vb: 0, + ib: 0, + ub: 0, + sb: 0 + }; + this._shaderStats = { + vsCompiled: 0, + fsCompiled: 0, + linked: 0, + materialShaders: 0, + compileTime: 0 + }; + this.initializeContextCaches(); + this._drawCallsPerFrame = 0; + this._shaderSwitchesPerFrame = 0; + this._primsPerFrame = []; + for (let i = PRIMITIVE_POINTS; i <= PRIMITIVE_TRIFAN; i++) { + this._primsPerFrame[i] = 0; + } + this._renderTargetCreationTime = 0; + this.scope = new ScopeSpace("Device"); + this.textureBias = this.scope.resolve("textureBias"); + this.textureBias.setValue(0); + } + postInit() { + const vertexFormat = new VertexFormat(this, [{ + semantic: SEMANTIC_POSITION, + components: 2, + type: TYPE_FLOAT32 + }]); + const positions = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]); + this.quadVertexBuffer = new VertexBuffer(this, vertexFormat, 4, { + data: positions + }); + } + destroy() { + var _this$quadVertexBuffe, _this$dynamicBuffers, _this$gpuProfiler; + this.fire("destroy"); + (_this$quadVertexBuffe = this.quadVertexBuffer) == null || _this$quadVertexBuffe.destroy(); + this.quadVertexBuffer = null; + (_this$dynamicBuffers = this.dynamicBuffers) == null || _this$dynamicBuffers.destroy(); + this.dynamicBuffers = null; + (_this$gpuProfiler = this.gpuProfiler) == null || _this$gpuProfiler.destroy(); + this.gpuProfiler = null; + } + onDestroyShader(shader) { + this.fire("destroy:shader", shader); + const idx = this.shaders.indexOf(shader); + if (idx !== -1) { + this.shaders.splice(idx, 1); + } + } + postDestroy() { + this.scope = null; + this.canvas = null; + } + loseContext() { + var _this$gpuProfiler2; + this.contextLost = true; + this.backBufferSize.set(-1, -1); + for (const texture of this.textures) { + texture.loseContext(); + } + for (const buffer of this.buffers) { + buffer.loseContext(); + } + for (const target2 of this.targets) { + target2.loseContext(); + } + (_this$gpuProfiler2 = this.gpuProfiler) == null || _this$gpuProfiler2.loseContext(); + } + restoreContext() { + var _this$gpuProfiler3; + this.contextLost = false; + this.initializeRenderState(); + this.initializeContextCaches(); + for (const buffer of this.buffers) { + buffer.unlock(); + } + (_this$gpuProfiler3 = this.gpuProfiler) == null || _this$gpuProfiler3.restoreContext == null || _this$gpuProfiler3.restoreContext(); + } + toJSON(key) { + return void 0; + } + initializeContextCaches() { + this.indexBuffer = null; + this.vertexBuffers = []; + this.shader = null; + this.shaderValid = void 0; + this.shaderAsyncCompile = false; + this.renderTarget = null; + } + initializeRenderState() { + this.blendState = new BlendState(); + this.depthState = new DepthState(); + this.cullMode = CULLFACE_BACK; + this.vx = this.vy = this.vw = this.vh = 0; + this.sx = this.sy = this.sw = this.sh = 0; + this.blendColor = new Color(0, 0, 0, 0); + } + setStencilState(stencilFront, stencilBack) { + } + setBlendState(blendState) { + } + setBlendColor(r, g, b, a) { + } + setDepthState(depthState) { + } + setCullMode(cullMode) { + } + setRenderTarget(renderTarget) { + this.renderTarget = renderTarget; + } + setIndexBuffer(indexBuffer) { + this.indexBuffer = indexBuffer; + } + setVertexBuffer(vertexBuffer) { + if (vertexBuffer) { + this.vertexBuffers.push(vertexBuffer); + } + } + clearVertexBuffer() { + this.vertexBuffers.length = 0; + } + getRenderTarget() { + return this.renderTarget; + } + initRenderTarget(target2) { + if (target2.initialized) return; + target2.init(); + this.targets.add(target2); + } + _isBrowserInterface(texture) { + return this._isImageBrowserInterface(texture) || this._isImageCanvasInterface(texture) || this._isImageVideoInterface(texture); + } + _isImageBrowserInterface(texture) { + return typeof ImageBitmap !== "undefined" && texture instanceof ImageBitmap || typeof HTMLImageElement !== "undefined" && texture instanceof HTMLImageElement; + } + _isImageCanvasInterface(texture) { + return typeof HTMLCanvasElement !== "undefined" && texture instanceof HTMLCanvasElement; + } + _isImageVideoInterface(texture) { + return typeof HTMLVideoElement !== "undefined" && texture instanceof HTMLVideoElement; + } + resizeCanvas(width, height) { + const pixelRatio = Math.min(this._maxPixelRatio, platform.browser ? window.devicePixelRatio : 1); + const w = Math.floor(width * pixelRatio); + const h = Math.floor(height * pixelRatio); + if (w !== this.canvas.width || h !== this.canvas.height) { + this.setResolution(w, h); + } + } + setResolution(width, height) { + this.canvas.width = width; + this.canvas.height = height; + this.fire(_GraphicsDevice.EVENT_RESIZE, width, height); + } + updateClientRect() { + if (platform.worker) { + this.clientRect.width = this.canvas.width; + this.clientRect.height = this.canvas.height; + } else { + const rect = this.canvas.getBoundingClientRect(); + this.clientRect.width = rect.width; + this.clientRect.height = rect.height; + } + } + get width() { + return this.canvas.width; + } + get height() { + return this.canvas.height; + } + set fullscreen(fullscreen) { + } + get fullscreen() { + return false; + } + set maxPixelRatio(ratio) { + this._maxPixelRatio = ratio; + } + get maxPixelRatio() { + return this._maxPixelRatio; + } + get deviceType() { + return this._deviceType; + } + getBoneLimit() { + return this.boneLimit; + } + setBoneLimit(maxBones) { + this.boneLimit = maxBones; + } + startRenderPass(renderPass) { + } + endRenderPass(renderPass) { + } + startComputePass() { + } + endComputePass() { + } + frameStart() { + this.renderPassIndex = 0; + this.renderVersion++; + } + frameEnd() { + } + computeDispatch(computes) { + } + getRenderableHdrFormat(formats = [PIXELFORMAT_111110F, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F], filterable = true) { + for (let i = 0; i < formats.length; i++) { + const format = formats[i]; + switch (format) { + case PIXELFORMAT_111110F: { + if (this.textureRG11B10Renderable) return format; + break; + } + case PIXELFORMAT_RGBA16F: + if (this.textureHalfFloatRenderable && (!filterable || this.textureHalfFloatFilterable)) { + return format; + } + break; + case PIXELFORMAT_RGBA32F: + if (this.textureFloatRenderable && (!filterable || this.textureFloatFilterable)) { + return format; + } + break; + } + } + return void 0; + } +}; +GraphicsDevice.EVENT_RESIZE = "resizecanvas"; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/render-target.js +var id2 = 0; +var RenderTarget = class { + constructor(options = {}) { + var _options$face, _this$_colorBuffer, _this$_depthBuffer, _options$samples, _options$autoResolve, _options$flipY; + this.name = void 0; + this._device = void 0; + this._colorBuffer = void 0; + this._colorBuffers = void 0; + this._depthBuffer = void 0; + this._depth = void 0; + this._stencil = void 0; + this._samples = void 0; + this.autoResolve = void 0; + this._face = void 0; + this.flipY = void 0; + this.id = id2++; + const _arg2 = arguments[1]; + const _arg3 = arguments[2]; + if (options instanceof GraphicsDevice) { + this._colorBuffer = _arg2; + options = _arg3; + } else { + this._colorBuffer = options.colorBuffer; + } + if (this._colorBuffer) { + this._colorBuffers = [this._colorBuffer]; + } + this._depthBuffer = options.depthBuffer; + this._face = (_options$face = options.face) != null ? _options$face : 0; + if (this._depthBuffer) { + const format = this._depthBuffer._format; + if (format === PIXELFORMAT_DEPTH) { + this._depth = true; + this._stencil = false; + } else if (format === PIXELFORMAT_DEPTHSTENCIL) { + this._depth = true; + this._stencil = true; + } else { + this._depth = false; + this._stencil = false; + } + } else { + var _options$depth, _options$stencil; + this._depth = (_options$depth = options.depth) != null ? _options$depth : true; + this._stencil = (_options$stencil = options.stencil) != null ? _options$stencil : false; + } + if (options.colorBuffers) { + if (!this._colorBuffers) { + this._colorBuffers = [...options.colorBuffers]; + this._colorBuffer = options.colorBuffers[0]; + } + } + const device = ((_this$_colorBuffer = this._colorBuffer) == null ? void 0 : _this$_colorBuffer.device) || ((_this$_depthBuffer = this._depthBuffer) == null ? void 0 : _this$_depthBuffer.device) || options.graphicsDevice; + this._device = device; + const { + maxSamples + } = this._device; + this._samples = Math.min((_options$samples = options.samples) != null ? _options$samples : 1, maxSamples); + if (device.isWebGPU) { + this._samples = this._samples > 1 ? maxSamples : 1; + } + this.autoResolve = (_options$autoResolve = options.autoResolve) != null ? _options$autoResolve : true; + this.name = options.name; + if (!this.name) { + var _this$_colorBuffer2; + this.name = (_this$_colorBuffer2 = this._colorBuffer) == null ? void 0 : _this$_colorBuffer2.name; + } + if (!this.name) { + var _this$_depthBuffer2; + this.name = (_this$_depthBuffer2 = this._depthBuffer) == null ? void 0 : _this$_depthBuffer2.name; + } + if (!this.name) { + this.name = "Untitled"; + } + this.flipY = (_options$flipY = options.flipY) != null ? _options$flipY : false; + this.validateMrt(); + this.impl = device.createRenderTargetImpl(this); + } + destroy() { + const device = this._device; + if (device) { + device.targets.delete(this); + if (device.renderTarget === this) { + device.setRenderTarget(null); + } + this.destroyFrameBuffers(); + } + } + destroyFrameBuffers() { + const device = this._device; + if (device) { + this.impl.destroy(device); + } + } + destroyTextureBuffers() { + var _this$_depthBuffer3, _this$_colorBuffers; + (_this$_depthBuffer3 = this._depthBuffer) == null || _this$_depthBuffer3.destroy(); + this._depthBuffer = null; + (_this$_colorBuffers = this._colorBuffers) == null || _this$_colorBuffers.forEach((colorBuffer) => { + colorBuffer.destroy(); + }); + this._colorBuffers = null; + this._colorBuffer = null; + } + resize(width, height) { + if (this.width !== width || this.height !== height) { + var _this$_depthBuffer4, _this$_colorBuffers2; + const device = this._device; + this.destroyFrameBuffers(); + if (device.renderTarget === this) { + device.setRenderTarget(null); + } + (_this$_depthBuffer4 = this._depthBuffer) == null || _this$_depthBuffer4.resize(width, height); + (_this$_colorBuffers2 = this._colorBuffers) == null || _this$_colorBuffers2.forEach((colorBuffer) => { + colorBuffer.resize(width, height); + }); + this.validateMrt(); + this.impl = device.createRenderTargetImpl(this); + } + } + validateMrt() { + } + init() { + this.impl.init(this._device, this); + } + get initialized() { + return this.impl.initialized; + } + get device() { + return this._device; + } + loseContext() { + this.impl.loseContext(); + } + resolve(color = true, depth = !!this._depthBuffer) { + if (this._device && this._samples > 1) { + this.impl.resolve(this._device, this, color, depth); + } + } + copy(source, color, depth) { + if (!this._device) { + if (source._device) { + this._device = source._device; + } else { + return false; + } + } + const success = this._device.copyRenderTarget(source, this, color, depth); + return success; + } + get samples() { + return this._samples; + } + get depth() { + return this._depth; + } + get stencil() { + return this._stencil; + } + get colorBuffer() { + return this._colorBuffer; + } + getColorBuffer(index) { + var _this$_colorBuffers3; + return (_this$_colorBuffers3 = this._colorBuffers) == null ? void 0 : _this$_colorBuffers3[index]; + } + get depthBuffer() { + return this._depthBuffer; + } + get face() { + return this._face; + } + get width() { + var _this$_colorBuffer3, _this$_depthBuffer5; + return ((_this$_colorBuffer3 = this._colorBuffer) == null ? void 0 : _this$_colorBuffer3.width) || ((_this$_depthBuffer5 = this._depthBuffer) == null ? void 0 : _this$_depthBuffer5.width) || this._device.width; + } + get height() { + var _this$_colorBuffer4, _this$_depthBuffer6; + return ((_this$_colorBuffer4 = this._colorBuffer) == null ? void 0 : _this$_colorBuffer4.height) || ((_this$_depthBuffer6 = this._depthBuffer) == null ? void 0 : _this$_depthBuffer6.height) || this._device.height; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-bind-group.js +var WebgpuBindGroup = class { + constructor() { + this.bindGroup = void 0; + } + update(bindGroup) { + this.destroy(); + const device = bindGroup.device; + const descr = this.createDescriptor(device, bindGroup); + this.bindGroup = device.wgpu.createBindGroup(descr); + } + destroy() { + this.bindGroup = null; + } + createDescriptor(device, bindGroup) { + const entries = []; + const format = bindGroup.format; + const uniformBufferFormats = bindGroup.format.uniformBufferFormats; + bindGroup.uniformBuffers.forEach((ub, i) => { + const slot = uniformBufferFormats[i].slot; + const buffer = ub.persistent ? ub.impl.buffer : ub.allocation.gpuBuffer.buffer; + entries.push({ + binding: slot, + resource: { + buffer, + offset: 0, + size: ub.format.byteSize + } + }); + }); + const textureFormats = bindGroup.format.textureFormats; + bindGroup.textures.forEach((tex, textureIndex) => { + const wgpuTexture = tex.impl; + const textureFormat = format.textureFormats[textureIndex]; + const slot = textureFormats[textureIndex].slot; + const view = wgpuTexture.getView(device); + entries.push({ + binding: slot, + resource: view + }); + if (textureFormat.hasSampler) { + const sampler = wgpuTexture.getSampler(device, textureFormat.sampleType); + entries.push({ + binding: slot + 1, + resource: sampler + }); + } + }); + const storageTextureFormats = bindGroup.format.storageTextureFormats; + bindGroup.storageTextures.forEach((tex, textureIndex) => { + const wgpuTexture = tex.impl; + const slot = storageTextureFormats[textureIndex].slot; + const view = wgpuTexture.getView(device); + entries.push({ + binding: slot, + resource: view + }); + }); + const storageBufferFormats = bindGroup.format.storageBufferFormats; + bindGroup.storageBuffers.forEach((buffer, bufferIndex) => { + const wgpuBuffer = buffer.impl.buffer; + const slot = storageBufferFormats[bufferIndex].slot; + entries.push({ + binding: slot, + resource: { + buffer: wgpuBuffer + } + }); + }); + const descr = { + layout: bindGroup.format.impl.bindGroupLayout, + entries + }; + return descr; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-utils.js +var WebgpuUtils = class { + static shaderStage(stage) { + let ret = 0; + if (stage & SHADERSTAGE_VERTEX) ret |= GPUShaderStage.VERTEX; + if (stage & SHADERSTAGE_FRAGMENT) ret |= GPUShaderStage.FRAGMENT; + if (stage & SHADERSTAGE_COMPUTE) ret |= GPUShaderStage.COMPUTE; + return ret; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/constants.js +var gpuTextureFormats = []; +gpuTextureFormats[PIXELFORMAT_A8] = ""; +gpuTextureFormats[PIXELFORMAT_L8] = "r8unorm"; +gpuTextureFormats[PIXELFORMAT_LA8] = "rg8unorm"; +gpuTextureFormats[PIXELFORMAT_RGB565] = ""; +gpuTextureFormats[PIXELFORMAT_RGBA5551] = ""; +gpuTextureFormats[PIXELFORMAT_RGBA4] = ""; +gpuTextureFormats[PIXELFORMAT_RGB8] = "rgba8unorm"; +gpuTextureFormats[PIXELFORMAT_RGBA8] = "rgba8unorm"; +gpuTextureFormats[PIXELFORMAT_DXT1] = "bc1-rgba-unorm"; +gpuTextureFormats[PIXELFORMAT_DXT3] = "bc2-rgba-unorm"; +gpuTextureFormats[PIXELFORMAT_DXT5] = "bc3-rgba-unorm"; +gpuTextureFormats[PIXELFORMAT_RGB16F] = ""; +gpuTextureFormats[PIXELFORMAT_RGBA16F] = "rgba16float"; +gpuTextureFormats[PIXELFORMAT_R16F] = "r16float"; +gpuTextureFormats[PIXELFORMAT_RG16F] = "rg16float"; +gpuTextureFormats[PIXELFORMAT_RGB32F] = ""; +gpuTextureFormats[PIXELFORMAT_RGBA32F] = "rgba32float"; +gpuTextureFormats[PIXELFORMAT_R32F] = "r32float"; +gpuTextureFormats[PIXELFORMAT_DEPTH] = "depth32float"; +gpuTextureFormats[PIXELFORMAT_DEPTHSTENCIL] = "depth24plus-stencil8"; +gpuTextureFormats[PIXELFORMAT_111110F] = "rg11b10ufloat"; +gpuTextureFormats[PIXELFORMAT_SRGB] = ""; +gpuTextureFormats[PIXELFORMAT_SRGBA] = ""; +gpuTextureFormats[PIXELFORMAT_ETC1] = ""; +gpuTextureFormats[PIXELFORMAT_ETC2_RGB] = "etc2-rgb8unorm"; +gpuTextureFormats[PIXELFORMAT_ETC2_RGBA] = "etc2-rgba8unorm"; +gpuTextureFormats[PIXELFORMAT_PVRTC_2BPP_RGB_1] = ""; +gpuTextureFormats[PIXELFORMAT_PVRTC_2BPP_RGBA_1] = ""; +gpuTextureFormats[PIXELFORMAT_PVRTC_4BPP_RGB_1] = ""; +gpuTextureFormats[PIXELFORMAT_PVRTC_4BPP_RGBA_1] = ""; +gpuTextureFormats[PIXELFORMAT_ASTC_4x4] = "astc-4x4-unorm"; +gpuTextureFormats[PIXELFORMAT_ATC_RGB] = ""; +gpuTextureFormats[PIXELFORMAT_ATC_RGBA] = ""; +gpuTextureFormats[PIXELFORMAT_BGRA8] = "bgra8unorm"; +gpuTextureFormats[PIXELFORMAT_R8I] = "r8sint"; +gpuTextureFormats[PIXELFORMAT_R8U] = "r8uint"; +gpuTextureFormats[PIXELFORMAT_R16I] = "r16sint"; +gpuTextureFormats[PIXELFORMAT_R16U] = "r16uint"; +gpuTextureFormats[PIXELFORMAT_R32I] = "r32sint"; +gpuTextureFormats[PIXELFORMAT_R32U] = "r32uint"; +gpuTextureFormats[PIXELFORMAT_RG8I] = "rg8sint"; +gpuTextureFormats[PIXELFORMAT_RG8U] = "rg8uint"; +gpuTextureFormats[PIXELFORMAT_RG16I] = "rg16sint"; +gpuTextureFormats[PIXELFORMAT_RG16U] = "rg16uint"; +gpuTextureFormats[PIXELFORMAT_RG32I] = "rg32sint"; +gpuTextureFormats[PIXELFORMAT_RG32U] = "rg32uint"; +gpuTextureFormats[PIXELFORMAT_RGBA8I] = "rgba8sint"; +gpuTextureFormats[PIXELFORMAT_RGBA8U] = "rgba8uint"; +gpuTextureFormats[PIXELFORMAT_RGBA16I] = "rgba16sint"; +gpuTextureFormats[PIXELFORMAT_RGBA16U] = "rgba16uint"; +gpuTextureFormats[PIXELFORMAT_RGBA32I] = "rgba32sint"; +gpuTextureFormats[PIXELFORMAT_RGBA32U] = "rgba32uint"; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-bind-group-format.js +var samplerTypes = []; +samplerTypes[SAMPLETYPE_FLOAT] = "filtering"; +samplerTypes[SAMPLETYPE_UNFILTERABLE_FLOAT] = "non-filtering"; +samplerTypes[SAMPLETYPE_DEPTH] = "comparison"; +samplerTypes[SAMPLETYPE_INT] = "comparison"; +samplerTypes[SAMPLETYPE_UINT] = "comparison"; +var sampleTypes = []; +sampleTypes[SAMPLETYPE_FLOAT] = "float"; +sampleTypes[SAMPLETYPE_UNFILTERABLE_FLOAT] = "unfilterable-float"; +sampleTypes[SAMPLETYPE_DEPTH] = "depth"; +sampleTypes[SAMPLETYPE_INT] = "sint"; +sampleTypes[SAMPLETYPE_UINT] = "uint"; +var stringIds4 = new StringIds(); +var WebgpuBindGroupFormat = class { + constructor(bindGroupFormat) { + const device = bindGroupFormat.device; + const { + key, + descr + } = this.createDescriptor(bindGroupFormat); + this.key = stringIds4.get(key); + this.bindGroupLayout = device.wgpu.createBindGroupLayout(descr); + } + destroy() { + this.bindGroupLayout = null; + } + loseContext() { + } + createDescriptor(bindGroupFormat) { + const entries = []; + let key = ""; + bindGroupFormat.uniformBufferFormats.forEach((bufferFormat) => { + const visibility = WebgpuUtils.shaderStage(bufferFormat.visibility); + key += `#${bufferFormat.slot}U:${visibility}`; + entries.push({ + binding: bufferFormat.slot, + visibility, + buffer: { + type: "uniform", + hasDynamicOffset: true + } + }); + }); + bindGroupFormat.textureFormats.forEach((textureFormat) => { + const visibility = WebgpuUtils.shaderStage(textureFormat.visibility); + const sampleType = textureFormat.sampleType; + const viewDimension = textureFormat.textureDimension; + const multisampled = false; + const gpuSampleType = sampleTypes[sampleType]; + key += `#${textureFormat.slot}T:${visibility}-${gpuSampleType}-${viewDimension}-${multisampled}`; + entries.push({ + binding: textureFormat.slot, + visibility, + texture: { + sampleType: gpuSampleType, + viewDimension, + multisampled + } + }); + if (textureFormat.hasSampler) { + const gpuSamplerType = samplerTypes[sampleType]; + key += `#${textureFormat.slot + 1}S:${visibility}-${gpuSamplerType}`; + entries.push({ + binding: textureFormat.slot + 1, + visibility, + sampler: { + type: gpuSamplerType + } + }); + } + }); + bindGroupFormat.storageTextureFormats.forEach((textureFormat) => { + const { + format, + textureDimension + } = textureFormat; + const { + read, + write + } = textureFormat; + key += `#${textureFormat.slot}ST:${format}-${textureDimension}-${read ? "r1" : "r0"}-${write ? "w1" : "w0"}`; + entries.push({ + binding: textureFormat.slot, + visibility: GPUShaderStage.COMPUTE, + storageTexture: { + access: read ? write ? "read-write" : "read-only" : "write-only", + format: gpuTextureFormats[format], + viewDimension: textureDimension + } + }); + }); + bindGroupFormat.storageBufferFormats.forEach((bufferFormat) => { + const readOnly = bufferFormat.readOnly; + const visibility = WebgpuUtils.shaderStage(bufferFormat.visibility); + key += `#${bufferFormat.slot}SB:${visibility}-${readOnly ? "ro" : "rw"}`; + entries.push({ + binding: bufferFormat.slot, + visibility, + buffer: { + type: readOnly ? "read-only-storage" : "storage" + } + }); + }); + const descr = { + entries + }; + return { + key, + descr + }; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-buffer.js +var WebgpuBuffer = class { + constructor(usageFlags = 0) { + this.buffer = null; + this.usageFlags = 0; + this.usageFlags = usageFlags; + } + destroy(device) { + if (this.buffer) { + this.buffer.destroy(); + this.buffer = null; + } + } + get initialized() { + return !!this.buffer; + } + loseContext() { + } + allocate(device, size) { + this.buffer = device.wgpu.createBuffer({ + size, + usage: this.usageFlags + }); + } + unlock(device, storage) { + var _storage$byteOffset, _storage$buffer; + const wgpu = device.wgpu; + if (!this.buffer) { + const size = storage.byteLength + 3 & ~3; + this.usageFlags |= GPUBufferUsage.COPY_DST; + this.allocate(device, size); + } + const srcOffset = (_storage$byteOffset = storage.byteOffset) != null ? _storage$byteOffset : 0; + const srcData = new Uint8Array((_storage$buffer = storage.buffer) != null ? _storage$buffer : storage, srcOffset, storage.byteLength); + const data2 = new Uint8Array(this.buffer.size); + data2.set(srcData); + wgpu.queue.writeBuffer(this.buffer, 0, data2, 0, data2.length); + } + read(device, offset, size, data2) { + return device.readStorageBuffer(this, offset, size, data2); + } + write(device, bufferOffset, data2, dataOffset, size) { + device.writeStorageBuffer(this, bufferOffset, data2, dataOffset, size); + } + clear(device, offset, size) { + device.clearStorageBuffer(this, offset, size); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-index-buffer.js +var WebgpuIndexBuffer = class extends WebgpuBuffer { + constructor(indexBuffer, options) { + super(BUFFERUSAGE_INDEX | (options != null && options.storage ? BUFFERUSAGE_STORAGE : 0)); + this.format = null; + this.format = indexBuffer.format === INDEXFORMAT_UINT16 ? "uint16" : "uint32"; + } + unlock(indexBuffer) { + const device = indexBuffer.device; + super.unlock(device, indexBuffer.storage); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/array-utils.js +var array = { + equals(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + for (let i = 0; i < arr1.length; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + return true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-vertex-buffer-layout.js +var gpuVertexFormats = []; +gpuVertexFormats[TYPE_INT8] = "sint8"; +gpuVertexFormats[TYPE_UINT8] = "uint8"; +gpuVertexFormats[TYPE_INT16] = "sint16"; +gpuVertexFormats[TYPE_UINT16] = "uint16"; +gpuVertexFormats[TYPE_INT32] = "sint32"; +gpuVertexFormats[TYPE_UINT32] = "uint32"; +gpuVertexFormats[TYPE_FLOAT32] = "float32"; +gpuVertexFormats[TYPE_FLOAT16] = "float16"; +var gpuVertexFormatsNormalized = []; +gpuVertexFormatsNormalized[TYPE_INT8] = "snorm8"; +gpuVertexFormatsNormalized[TYPE_UINT8] = "unorm8"; +gpuVertexFormatsNormalized[TYPE_INT16] = "snorm16"; +gpuVertexFormatsNormalized[TYPE_UINT16] = "unorm16"; +gpuVertexFormatsNormalized[TYPE_INT32] = "sint32"; +gpuVertexFormatsNormalized[TYPE_UINT32] = "uint32"; +gpuVertexFormatsNormalized[TYPE_FLOAT32] = "float32"; +gpuVertexFormatsNormalized[TYPE_FLOAT16] = "float16"; +var WebgpuVertexBufferLayout = class { + constructor() { + this.cache = /* @__PURE__ */ new Map(); + } + get(vertexFormat0, vertexFormat1 = null) { + const key = this.getKey(vertexFormat0, vertexFormat1); + let layout = this.cache.get(key); + if (!layout) { + layout = this.create(vertexFormat0, vertexFormat1); + this.cache.set(key, layout); + } + return layout; + } + getKey(vertexFormat0, vertexFormat1 = null) { + return `${vertexFormat0 == null ? void 0 : vertexFormat0.renderingHashString}-${vertexFormat1 == null ? void 0 : vertexFormat1.renderingHashString}`; + } + create(vertexFormat0, vertexFormat1) { + const layout = []; + const addFormat = (format) => { + const interleaved = format.interleaved; + const stepMode = format.instancing ? "instance" : "vertex"; + let attributes = []; + const elementCount = format.elements.length; + for (let i = 0; i < elementCount; i++) { + const element = format.elements[i]; + const location = semanticToLocation[element.name]; + const formatTable = element.normalize ? gpuVertexFormatsNormalized : gpuVertexFormats; + attributes.push({ + shaderLocation: location, + offset: interleaved ? element.offset : 0, + format: `${formatTable[element.dataType]}${element.numComponents > 1 ? "x" + element.numComponents : ""}` + }); + if (!interleaved || i === elementCount - 1) { + layout.push({ + attributes, + arrayStride: element.stride, + stepMode + }); + attributes = []; + } + } + }; + if (vertexFormat0) addFormat(vertexFormat0); + if (vertexFormat1) addFormat(vertexFormat1); + return layout; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-pipeline.js +var WebgpuPipeline = class { + constructor(device) { + this.device = device; + } + getPipelineLayout(bindGroupFormats) { + const bindGroupLayouts = []; + bindGroupFormats.forEach((format) => { + bindGroupLayouts.push(format.bindGroupLayout); + }); + const descr = { + bindGroupLayouts + }; + const pipelineLayout = this.device.wgpu.createPipelineLayout(descr); + return pipelineLayout; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-render-pipeline.js +var _primitiveTopology = ["point-list", "line-list", void 0, "line-strip", "triangle-list", "triangle-strip", void 0]; +var _blendOperation = ["add", "subtract", "reverse-subtract", "min", "max"]; +var _blendFactor = ["zero", "one", "src", "one-minus-src", "dst", "one-minus-dst", "src-alpha", "src-alpha-saturated", "one-minus-src-alpha", "dst-alpha", "one-minus-dst-alpha", "constant", "one-minus-constant"]; +var _compareFunction = ["never", "less", "equal", "less-equal", "greater", "not-equal", "greater-equal", "always"]; +var _cullModes = ["none", "back", "front"]; +var _stencilOps = ["keep", "zero", "replace", "increment-clamp", "increment-wrap", "decrement-clamp", "decrement-wrap", "invert"]; +var CacheEntry = class { + constructor() { + this.pipeline = void 0; + this.hashes = void 0; + } +}; +var WebgpuRenderPipeline = class extends WebgpuPipeline { + constructor(device) { + super(device); + this.lookupHashes = new Uint32Array(13); + this.vertexBufferLayout = new WebgpuVertexBufferLayout(); + this.cache = /* @__PURE__ */ new Map(); + } + get(primitive2, vertexFormat0, vertexFormat1, shader, renderTarget, bindGroupFormats, blendState, depthState, cullMode, stencilEnabled, stencilFront, stencilBack) { + var _vertexFormat0$render, _vertexFormat1$render, _bindGroupFormats$0$k, _bindGroupFormats$, _bindGroupFormats$1$k, _bindGroupFormats$2, _bindGroupFormats$2$k, _bindGroupFormats$3; + const lookupHashes = this.lookupHashes; + lookupHashes[0] = primitive2.type; + lookupHashes[1] = shader.id; + lookupHashes[2] = cullMode; + lookupHashes[3] = depthState.key; + lookupHashes[4] = blendState.key; + lookupHashes[5] = (_vertexFormat0$render = vertexFormat0 == null ? void 0 : vertexFormat0.renderingHash) != null ? _vertexFormat0$render : 0; + lookupHashes[6] = (_vertexFormat1$render = vertexFormat1 == null ? void 0 : vertexFormat1.renderingHash) != null ? _vertexFormat1$render : 0; + lookupHashes[7] = renderTarget.impl.key; + lookupHashes[8] = (_bindGroupFormats$0$k = (_bindGroupFormats$ = bindGroupFormats[0]) == null ? void 0 : _bindGroupFormats$.key) != null ? _bindGroupFormats$0$k : 0; + lookupHashes[9] = (_bindGroupFormats$1$k = (_bindGroupFormats$2 = bindGroupFormats[1]) == null ? void 0 : _bindGroupFormats$2.key) != null ? _bindGroupFormats$1$k : 0; + lookupHashes[10] = (_bindGroupFormats$2$k = (_bindGroupFormats$3 = bindGroupFormats[2]) == null ? void 0 : _bindGroupFormats$3.key) != null ? _bindGroupFormats$2$k : 0; + lookupHashes[11] = stencilEnabled ? stencilFront.key : 0; + lookupHashes[12] = stencilEnabled ? stencilBack.key : 0; + const hash = hash32Fnv1a(lookupHashes); + let cacheEntries = this.cache.get(hash); + if (cacheEntries) { + for (let i = 0; i < cacheEntries.length; i++) { + const entry = cacheEntries[i]; + if (array.equals(entry.hashes, lookupHashes)) { + return entry.pipeline; + } + } + } + const primitiveTopology = _primitiveTopology[primitive2.type]; + const pipelineLayout = this.getPipelineLayout(bindGroupFormats); + const vertexBufferLayout = this.vertexBufferLayout.get(vertexFormat0, vertexFormat1); + const cacheEntry = new CacheEntry(); + cacheEntry.hashes = new Uint32Array(lookupHashes); + cacheEntry.pipeline = this.create(primitiveTopology, shader, renderTarget, pipelineLayout, blendState, depthState, vertexBufferLayout, cullMode, stencilEnabled, stencilFront, stencilBack); + if (cacheEntries) { + cacheEntries.push(cacheEntry); + } else { + cacheEntries = [cacheEntry]; + } + this.cache.set(hash, cacheEntries); + return cacheEntry.pipeline; + } + getBlend(blendState) { + let blend; + if (blendState.blend) { + blend = { + color: { + operation: _blendOperation[blendState.colorOp], + srcFactor: _blendFactor[blendState.colorSrcFactor], + dstFactor: _blendFactor[blendState.colorDstFactor] + }, + alpha: { + operation: _blendOperation[blendState.alphaOp], + srcFactor: _blendFactor[blendState.alphaSrcFactor], + dstFactor: _blendFactor[blendState.alphaDstFactor] + } + }; + } + return blend; + } + getDepthStencil(depthState, renderTarget, stencilEnabled, stencilFront, stencilBack) { + let depthStencil; + const { + depth, + stencil + } = renderTarget; + if (depth || stencil) { + depthStencil = { + format: renderTarget.impl.depthFormat + }; + if (depth) { + depthStencil.depthWriteEnabled = depthState.write; + depthStencil.depthCompare = _compareFunction[depthState.func]; + depthStencil.depthBias = depthState.depthBias; + depthStencil.depthBiasSlopeScale = depthState.depthBiasSlope; + } else { + depthStencil.depthWriteEnabled = false; + depthStencil.depthCompare = "always"; + } + if (stencil && stencilEnabled) { + depthStencil.stencilReadMas = stencilFront.readMask; + depthStencil.stencilWriteMask = stencilFront.writeMask; + depthStencil.stencilFront = { + compare: _compareFunction[stencilFront.func], + failOp: _stencilOps[stencilFront.fail], + passOp: _stencilOps[stencilFront.zpass], + depthFailOp: _stencilOps[stencilFront.zfail] + }; + depthStencil.stencilBack = { + compare: _compareFunction[stencilBack.func], + failOp: _stencilOps[stencilBack.fail], + passOp: _stencilOps[stencilBack.zpass], + depthFailOp: _stencilOps[stencilBack.zfail] + }; + } + } + return depthStencil; + } + create(primitiveTopology, shader, renderTarget, pipelineLayout, blendState, depthState, vertexBufferLayout, cullMode, stencilEnabled, stencilFront, stencilBack) { + const wgpu = this.device.wgpu; + const webgpuShader = shader.impl; + const descr = { + vertex: { + module: webgpuShader.getVertexShaderModule(), + entryPoint: webgpuShader.vertexEntryPoint, + buffers: vertexBufferLayout + }, + primitive: { + topology: primitiveTopology, + frontFace: "ccw", + cullMode: _cullModes[cullMode] + }, + depthStencil: this.getDepthStencil(depthState, renderTarget, stencilEnabled, stencilFront, stencilBack), + multisample: { + count: renderTarget.samples + }, + layout: pipelineLayout + }; + descr.fragment = { + module: webgpuShader.getFragmentShaderModule(), + entryPoint: webgpuShader.fragmentEntryPoint, + targets: [] + }; + const colorAttachments = renderTarget.impl.colorAttachments; + if (colorAttachments.length > 0) { + let writeMask = 0; + if (blendState.redWrite) writeMask |= GPUColorWrite.RED; + if (blendState.greenWrite) writeMask |= GPUColorWrite.GREEN; + if (blendState.blueWrite) writeMask |= GPUColorWrite.BLUE; + if (blendState.alphaWrite) writeMask |= GPUColorWrite.ALPHA; + const blend = this.getBlend(blendState); + colorAttachments.forEach((attachment) => { + descr.fragment.targets.push({ + format: attachment.format, + writeMask, + blend + }); + }); + } + const pipeline = wgpu.createRenderPipeline(descr); + return pipeline; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-compute-pipeline.js +var WebgpuComputePipeline = class extends WebgpuPipeline { + get(shader, bindGroupFormat) { + const pipelineLayout = this.getPipelineLayout([bindGroupFormat.impl]); + const pipeline = this.create(shader, pipelineLayout); + return pipeline; + } + create(shader, pipelineLayout) { + const wgpu = this.device.wgpu; + const webgpuShader = shader.impl; + const descr = { + compute: { + module: webgpuShader.getComputeShaderModule(), + entryPoint: webgpuShader.computeEntryPoint + }, + layout: pipelineLayout + }; + const pipeline = wgpu.createComputePipeline(descr); + return pipeline; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-render-target.js +var stringIds5 = new StringIds(); +var ColorAttachment = class { + constructor() { + this.format = void 0; + this.multisampledBuffer = void 0; + } + destroy() { + var _this$multisampledBuf; + (_this$multisampledBuf = this.multisampledBuffer) == null || _this$multisampledBuf.destroy(); + this.multisampledBuffer = null; + } +}; +var WebgpuRenderTarget = class { + constructor(renderTarget) { + this.initialized = false; + this.key = void 0; + this.colorAttachments = []; + this.depthFormat = void 0; + this.hasStencil = void 0; + this.depthTexture = null; + this.depthTextureInternal = false; + this.assignedColorTexture = null; + this.renderPassDescriptor = {}; + this.renderTarget = renderTarget; + if (renderTarget._colorBuffers) { + renderTarget._colorBuffers.forEach((colorBuffer, index) => { + this.setColorAttachment(index, void 0, colorBuffer.impl.format); + }); + } + this.updateKey(); + } + destroy(device) { + this.initialized = false; + if (this.depthTextureInternal) { + var _this$depthTexture; + (_this$depthTexture = this.depthTexture) == null || _this$depthTexture.destroy(); + this.depthTexture = null; + } + this.assignedColorTexture = null; + this.colorAttachments.forEach((colorAttachment) => { + colorAttachment.destroy(); + }); + this.colorAttachments.length = 0; + } + updateKey() { + const rt = this.renderTarget; + let key = `${rt.samples}:${rt.depth ? this.depthFormat : "nodepth"}`; + this.colorAttachments.forEach((colorAttachment) => { + key += `:${colorAttachment.format}`; + }); + this.key = stringIds5.get(key); + } + setDepthFormat(depthFormat) { + this.depthFormat = depthFormat; + this.hasStencil = depthFormat === "depth24plus-stencil8"; + } + assignColorTexture(gpuTexture) { + this.assignedColorTexture = gpuTexture; + const view = gpuTexture.createView(); + const colorAttachment = this.renderPassDescriptor.colorAttachments[0]; + const samples = this.renderTarget.samples; + if (samples > 1) { + colorAttachment.resolveTarget = view; + } else { + colorAttachment.view = view; + } + this.setColorAttachment(0, void 0, gpuTexture.format); + this.updateKey(); + } + setColorAttachment(index, multisampledBuffer, format) { + if (!this.colorAttachments[index]) { + this.colorAttachments[index] = new ColorAttachment(); + } + if (multisampledBuffer) { + this.colorAttachments[index].multisampledBuffer = multisampledBuffer; + } + if (format) { + this.colorAttachments[index].format = format; + } + } + init(device, renderTarget) { + var _renderTarget$_colorB, _renderTarget$_colorB2; + const wgpu = device.wgpu; + this.initDepthStencil(wgpu, renderTarget); + this.renderPassDescriptor.colorAttachments = []; + const count = (_renderTarget$_colorB = (_renderTarget$_colorB2 = renderTarget._colorBuffers) == null ? void 0 : _renderTarget$_colorB2.length) != null ? _renderTarget$_colorB : 1; + for (let i = 0; i < count; ++i) { + var _this$colorAttachment; + const colorAttachment = this.initColor(wgpu, renderTarget, i); + const isDefaultFramebuffer = i === 0 && ((_this$colorAttachment = this.colorAttachments[0]) == null ? void 0 : _this$colorAttachment.format); + if (colorAttachment.view || isDefaultFramebuffer) { + this.renderPassDescriptor.colorAttachments.push(colorAttachment); + } + } + this.initialized = true; + } + initDepthStencil(wgpu, renderTarget) { + const { + samples, + width, + height, + depth, + depthBuffer + } = renderTarget; + if (depth || depthBuffer) { + if (!depthBuffer) { + this.setDepthFormat("depth24plus-stencil8"); + const depthTextureDesc = { + size: [width, height, 1], + dimension: "2d", + sampleCount: samples, + format: this.depthFormat, + usage: GPUTextureUsage.RENDER_ATTACHMENT + }; + if (samples > 1) { + depthTextureDesc.usage |= GPUTextureUsage.TEXTURE_BINDING; + } else { + depthTextureDesc.usage |= GPUTextureUsage.COPY_SRC; + } + this.depthTexture = wgpu.createTexture(depthTextureDesc); + this.depthTextureInternal = true; + } else { + this.depthTexture = depthBuffer.impl.gpuTexture; + this.setDepthFormat(depthBuffer.impl.format); + } + this.renderPassDescriptor.depthStencilAttachment = { + view: this.depthTexture.createView() + }; + } + } + initColor(wgpu, renderTarget, index) { + const colorAttachment = {}; + const { + samples, + width, + height + } = renderTarget; + const colorBuffer = renderTarget.getColorBuffer(index); + let colorView = null; + if (colorBuffer) { + const mipLevelCount = 1; + if (colorBuffer.cubemap) { + colorView = colorBuffer.impl.createView({ + dimension: "2d", + baseArrayLayer: renderTarget.face, + arrayLayerCount: 1, + mipLevelCount + }); + } else { + colorView = colorBuffer.impl.createView({ + mipLevelCount + }); + } + } + if (samples > 1) { + var _this$colorAttachment2, _this$colorAttachment3; + const multisampledTextureDesc = { + size: [width, height, 1], + dimension: "2d", + sampleCount: samples, + format: (_this$colorAttachment2 = (_this$colorAttachment3 = this.colorAttachments[index]) == null ? void 0 : _this$colorAttachment3.format) != null ? _this$colorAttachment2 : colorBuffer.impl.format, + usage: GPUTextureUsage.RENDER_ATTACHMENT + }; + const multisampledColorBuffer = wgpu.createTexture(multisampledTextureDesc); + this.setColorAttachment(index, multisampledColorBuffer, multisampledTextureDesc.format); + colorAttachment.view = multisampledColorBuffer.createView(); + colorAttachment.resolveTarget = colorView; + } else { + colorAttachment.view = colorView; + } + return colorAttachment; + } + setupForRenderPass(renderPass) { + var _this$renderPassDescr, _this$renderPassDescr2; + const count = (_this$renderPassDescr = (_this$renderPassDescr2 = this.renderPassDescriptor.colorAttachments) == null ? void 0 : _this$renderPassDescr2.length) != null ? _this$renderPassDescr : 0; + for (let i = 0; i < count; ++i) { + const colorAttachment = this.renderPassDescriptor.colorAttachments[i]; + const colorOps = renderPass.colorArrayOps[i]; + colorAttachment.clearValue = colorOps.clearValue; + colorAttachment.loadOp = colorOps.clear ? "clear" : "load"; + colorAttachment.storeOp = colorOps.store ? "store" : "discard"; + } + const depthAttachment = this.renderPassDescriptor.depthStencilAttachment; + if (depthAttachment) { + depthAttachment.depthClearValue = renderPass.depthStencilOps.clearDepthValue; + depthAttachment.depthLoadOp = renderPass.depthStencilOps.clearDepth ? "clear" : "load"; + depthAttachment.depthStoreOp = renderPass.depthStencilOps.storeDepth ? "store" : "discard"; + depthAttachment.depthReadOnly = false; + if (this.hasStencil) { + depthAttachment.stencilClearValue = renderPass.depthStencilOps.clearStencilValue; + depthAttachment.stencilLoadOp = renderPass.depthStencilOps.clearStencil ? "clear" : "load"; + depthAttachment.stencilStoreOp = renderPass.depthStencilOps.storeStencil ? "store" : "discard"; + depthAttachment.stencilReadOnly = false; + } + } + } + loseContext() { + this.initialized = false; + } + resolve(device, target2, color, depth) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/uniform-buffer-format.js +var uniformTypeToNumComponents = []; +uniformTypeToNumComponents[UNIFORMTYPE_FLOAT] = 1; +uniformTypeToNumComponents[UNIFORMTYPE_VEC2] = 2; +uniformTypeToNumComponents[UNIFORMTYPE_VEC3] = 3; +uniformTypeToNumComponents[UNIFORMTYPE_VEC4] = 4; +uniformTypeToNumComponents[UNIFORMTYPE_INT] = 1; +uniformTypeToNumComponents[UNIFORMTYPE_IVEC2] = 2; +uniformTypeToNumComponents[UNIFORMTYPE_IVEC3] = 3; +uniformTypeToNumComponents[UNIFORMTYPE_IVEC4] = 4; +uniformTypeToNumComponents[UNIFORMTYPE_BOOL] = 1; +uniformTypeToNumComponents[UNIFORMTYPE_BVEC2] = 2; +uniformTypeToNumComponents[UNIFORMTYPE_BVEC3] = 3; +uniformTypeToNumComponents[UNIFORMTYPE_BVEC4] = 4; +uniformTypeToNumComponents[UNIFORMTYPE_MAT2] = 8; +uniformTypeToNumComponents[UNIFORMTYPE_MAT3] = 12; +uniformTypeToNumComponents[UNIFORMTYPE_MAT4] = 16; +uniformTypeToNumComponents[UNIFORMTYPE_UINT] = 1; +uniformTypeToNumComponents[UNIFORMTYPE_UVEC2] = 2; +uniformTypeToNumComponents[UNIFORMTYPE_UVEC3] = 3; +uniformTypeToNumComponents[UNIFORMTYPE_UVEC4] = 4; +var UniformFormat = class { + get isArrayType() { + return this.count > 0; + } + constructor(name, type2, count = 0) { + this.name = void 0; + this.type = void 0; + this.byteSize = void 0; + this.offset = void 0; + this.scopeId = void 0; + this.count = void 0; + this.numComponents = void 0; + this.shortName = name; + this.name = count ? `${name}[0]` : name; + this.type = type2; + this.numComponents = uniformTypeToNumComponents[type2]; + this.updateType = type2; + if (count > 0) { + switch (type2) { + case UNIFORMTYPE_FLOAT: + this.updateType = UNIFORMTYPE_FLOATARRAY; + break; + case UNIFORMTYPE_INT: + this.updateType = UNIFORMTYPE_INTARRAY; + break; + case UNIFORMTYPE_UINT: + this.updateType = UNIFORMTYPE_UINTARRAY; + break; + case UNIFORMTYPE_BOOL: + this.updateType = UNIFORMTYPE_BOOLARRAY; + break; + case UNIFORMTYPE_VEC2: + this.updateType = UNIFORMTYPE_VEC2ARRAY; + break; + case UNIFORMTYPE_IVEC2: + this.updateType = UNIFORMTYPE_IVEC2ARRAY; + break; + case UNIFORMTYPE_UVEC2: + this.updateType = UNIFORMTYPE_UVEC2ARRAY; + break; + case UNIFORMTYPE_BVEC2: + this.updateType = UNIFORMTYPE_BVEC2ARRAY; + break; + case UNIFORMTYPE_VEC3: + this.updateType = UNIFORMTYPE_VEC3ARRAY; + break; + case UNIFORMTYPE_IVEC3: + this.updateType = UNIFORMTYPE_IVEC3ARRAY; + break; + case UNIFORMTYPE_UVEC3: + this.updateType = UNIFORMTYPE_UVEC3ARRAY; + break; + case UNIFORMTYPE_BVEC3: + this.updateType = UNIFORMTYPE_BVEC3ARRAY; + break; + case UNIFORMTYPE_VEC4: + this.updateType = UNIFORMTYPE_VEC4ARRAY; + break; + case UNIFORMTYPE_IVEC4: + this.updateType = UNIFORMTYPE_IVEC4ARRAY; + break; + case UNIFORMTYPE_UVEC4: + this.updateType = UNIFORMTYPE_UVEC4ARRAY; + break; + case UNIFORMTYPE_BVEC4: + this.updateType = UNIFORMTYPE_BVEC4ARRAY; + break; + case UNIFORMTYPE_MAT4: + this.updateType = UNIFORMTYPE_MAT4ARRAY; + break; + } + } + this.count = count; + let componentSize = this.numComponents; + if (count) { + componentSize = math.roundUp(componentSize, 4); + } + this.byteSize = componentSize * 4; + if (count) this.byteSize *= count; + } + calculateOffset(offset) { + let alignment = this.byteSize <= 8 ? this.byteSize : 16; + if (this.count) alignment = 16; + offset = math.roundUp(offset, alignment); + this.offset = offset / 4; + } +}; +var UniformBufferFormat = class { + constructor(graphicsDevice, uniforms) { + this.byteSize = 0; + this.map = /* @__PURE__ */ new Map(); + this.scope = graphicsDevice.scope; + this.uniforms = uniforms; + let offset = 0; + for (let i = 0; i < uniforms.length; i++) { + const uniform = uniforms[i]; + uniform.calculateOffset(offset); + offset = uniform.offset * 4 + uniform.byteSize; + uniform.scopeId = this.scope.resolve(uniform.name); + this.map.set(uniform.name, uniform); + } + this.byteSize = math.roundUp(offset, 16); + } + get(name) { + return this.map.get(name); + } + getShaderDeclaration(bindGroup, bindIndex) { + const name = bindGroupNames[bindGroup]; + let code = `layout(set = ${bindGroup}, binding = ${bindIndex}, std140) uniform ub_${name} { +`; + this.uniforms.forEach((uniform) => { + const typeString = uniformTypeToName[uniform.type]; + code += ` ${typeString} ${uniform.shortName}${uniform.count ? `[${uniform.count}]` : ""}; +`; + }); + return code + "};\n"; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/bind-group-format.js +var id3 = 0; +var textureDimensionInfo = { + [TEXTUREDIMENSION_2D]: "texture2D", + [TEXTUREDIMENSION_CUBE]: "textureCube", + [TEXTUREDIMENSION_3D]: "texture3D", + [TEXTUREDIMENSION_2D_ARRAY]: "texture2DArray" +}; +var BindBaseFormat = class { + constructor(name, visibility) { + this.slot = -1; + this.scopeId = null; + this.name = name; + this.visibility = visibility; + } +}; +var BindUniformBufferFormat = class extends BindBaseFormat { +}; +var BindStorageBufferFormat = class extends BindBaseFormat { + constructor(name, visibility, readOnly = false) { + super(name, visibility); + this.readOnly = readOnly; + } +}; +var BindTextureFormat = class extends BindBaseFormat { + constructor(name, visibility, textureDimension = TEXTUREDIMENSION_2D, sampleType = SAMPLETYPE_FLOAT, hasSampler = true) { + super(name, visibility); + this.textureDimension = textureDimension; + this.sampleType = sampleType; + this.hasSampler = hasSampler; + } +}; +var BindStorageTextureFormat = class extends BindBaseFormat { + constructor(name, format = PIXELFORMAT_RGBA8, textureDimension = TEXTUREDIMENSION_2D, write = true, read = false) { + super(name, SHADERSTAGE_COMPUTE); + this.format = format; + this.textureDimension = textureDimension; + this.write = write; + this.read = read; + } +}; +var BindGroupFormat = class { + constructor(graphicsDevice, formats) { + this.uniformBufferFormats = []; + this.textureFormats = []; + this.storageTextureFormats = []; + this.storageBufferFormats = []; + this.id = id3++; + let slot = 0; + formats.forEach((format) => { + format.slot = slot++; + if (format instanceof BindTextureFormat && format.hasSampler) { + slot++; + } + if (format instanceof BindUniformBufferFormat) { + this.uniformBufferFormats.push(format); + } else if (format instanceof BindTextureFormat) { + this.textureFormats.push(format); + } else if (format instanceof BindStorageTextureFormat) { + this.storageTextureFormats.push(format); + } else if (format instanceof BindStorageBufferFormat) { + this.storageBufferFormats.push(format); + } else ; + }); + this.device = graphicsDevice; + const scope = graphicsDevice.scope; + this.bufferFormatsMap = /* @__PURE__ */ new Map(); + this.uniformBufferFormats.forEach((bf, i) => this.bufferFormatsMap.set(bf.name, i)); + this.textureFormatsMap = /* @__PURE__ */ new Map(); + this.textureFormats.forEach((tf, i) => { + this.textureFormatsMap.set(tf.name, i); + tf.scopeId = scope.resolve(tf.name); + }); + this.storageTextureFormatsMap = /* @__PURE__ */ new Map(); + this.storageTextureFormats.forEach((tf, i) => { + this.storageTextureFormatsMap.set(tf.name, i); + tf.scopeId = scope.resolve(tf.name); + }); + this.storageBufferFormatsMap = /* @__PURE__ */ new Map(); + this.storageBufferFormats.forEach((bf, i) => { + this.storageBufferFormatsMap.set(bf.name, i); + bf.scopeId = scope.resolve(bf.name); + }); + this.impl = graphicsDevice.createBindGroupFormatImpl(this); + } + destroy() { + this.impl.destroy(); + } + getTexture(name) { + const index = this.textureFormatsMap.get(name); + if (index !== void 0) { + return this.textureFormats[index]; + } + return null; + } + getStorageTexture(name) { + const index = this.storageTextureFormatsMap.get(name); + if (index !== void 0) { + return this.storageTextureFormats[index]; + } + return null; + } + getShaderDeclarationTextures(bindGroup) { + let code = ""; + this.textureFormats.forEach((format) => { + let textureType = textureDimensionInfo[format.textureDimension]; + let namePostfix = ""; + let extraCode = ""; + if (textureType === "texture2DArray") { + namePostfix = "_texture"; + extraCode = `#define ${format.name} sampler2DArray(${format.name}${namePostfix}, ${format.name}_sampler) +`; + } + if (format.sampleType === SAMPLETYPE_INT) { + textureType = `i${textureType}`; + } else if (format.sampleType === SAMPLETYPE_UINT) { + textureType = `u${textureType}`; + } + code += `layout(set = ${bindGroup}, binding = ${format.slot}) uniform ${textureType} ${format.name}${namePostfix}; +`; + if (format.hasSampler) { + code += `layout(set = ${bindGroup}, binding = ${format.slot + 1}) uniform sampler ${format.name}_sampler; +`; + } + code += extraCode; + }); + return code; + } + loseContext() { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-processor.js +var KEYWORD = /[ \t]*(\battribute\b|\bvarying\b|\buniform\b)/g; +var KEYWORD_LINE = /(\battribute\b|\bvarying\b|\bout\b|\buniform\b)[ \t]*([^;]+)([;]+)/g; +var MARKER = "@@@"; +var ARRAY_IDENTIFIER = /([\w-]+)\[(.*?)\]/; +var precisionQualifiers = /* @__PURE__ */ new Set(["highp", "mediump", "lowp"]); +var shadowSamplers = /* @__PURE__ */ new Set(["sampler2DShadow", "samplerCubeShadow", "sampler2DArrayShadow"]); +var textureDimensions = { + sampler2D: TEXTUREDIMENSION_2D, + sampler3D: TEXTUREDIMENSION_3D, + samplerCube: TEXTUREDIMENSION_CUBE, + samplerCubeShadow: TEXTUREDIMENSION_CUBE, + sampler2DShadow: TEXTUREDIMENSION_2D, + sampler2DArray: TEXTUREDIMENSION_2D_ARRAY, + sampler2DArrayShadow: TEXTUREDIMENSION_2D_ARRAY, + isampler2D: TEXTUREDIMENSION_2D, + usampler2D: TEXTUREDIMENSION_2D, + isampler3D: TEXTUREDIMENSION_3D, + usampler3D: TEXTUREDIMENSION_3D, + isamplerCube: TEXTUREDIMENSION_CUBE, + usamplerCube: TEXTUREDIMENSION_CUBE, + isampler2DArray: TEXTUREDIMENSION_2D_ARRAY, + usampler2DArray: TEXTUREDIMENSION_2D_ARRAY +}; +var UniformLine = class { + constructor(line, shader) { + this.line = line; + const words = line.trim().split(/\s+/); + if (precisionQualifiers.has(words[0])) { + this.precision = words.shift(); + } + this.type = words.shift(); + if (line.includes(",")) ; + if (line.includes("[")) { + const rest = words.join(" "); + const match = ARRAY_IDENTIFIER.exec(rest); + this.name = match[1]; + this.arraySize = Number(match[2]); + if (isNaN(this.arraySize)) { + shader.failed = true; + } + } else { + this.name = words.shift(); + this.arraySize = 0; + } + this.isSampler = this.type.indexOf("sampler") !== -1; + this.isSignedInt = this.type.indexOf("isampler") !== -1; + this.isUnsignedInt = this.type.indexOf("usampler") !== -1; + } +}; +var ShaderProcessor = class _ShaderProcessor { + static run(device, shaderDefinition, shader) { + const varyingMap = /* @__PURE__ */ new Map(); + const vertexExtracted = _ShaderProcessor.extract(shaderDefinition.vshader); + const fragmentExtracted = _ShaderProcessor.extract(shaderDefinition.fshader); + const attributesBlock = _ShaderProcessor.processAttributes(vertexExtracted.attributes, shaderDefinition.attributes, shaderDefinition.processingOptions); + const vertexVaryingsBlock = _ShaderProcessor.processVaryings(vertexExtracted.varyings, varyingMap, true); + const fragmentVaryingsBlock = _ShaderProcessor.processVaryings(fragmentExtracted.varyings, varyingMap, false); + const outBlock = _ShaderProcessor.processOuts(fragmentExtracted.outs); + const concatUniforms = vertexExtracted.uniforms.concat(fragmentExtracted.uniforms); + const uniforms = Array.from(new Set(concatUniforms)); + const parsedUniforms = uniforms.map((line) => new UniformLine(line, shader)); + const uniformsData = _ShaderProcessor.processUniforms(device, parsedUniforms, shaderDefinition.processingOptions, shader); + const vBlock = attributesBlock + "\n" + vertexVaryingsBlock + "\n" + uniformsData.code; + const vshader = vertexExtracted.src.replace(MARKER, vBlock); + const fBlock = fragmentVaryingsBlock + "\n" + outBlock + "\n" + uniformsData.code; + const fshader = fragmentExtracted.src.replace(MARKER, fBlock); + return { + vshader, + fshader, + meshUniformBufferFormat: uniformsData.meshUniformBufferFormat, + meshBindGroupFormat: uniformsData.meshBindGroupFormat + }; + } + static extract(src) { + const attributes = []; + const varyings = []; + const outs = []; + const uniforms = []; + let replacement = `${MARKER} +`; + let match; + while ((match = KEYWORD.exec(src)) !== null) { + const keyword = match[1]; + switch (keyword) { + case "attribute": + case "varying": + case "uniform": + case "out": { + KEYWORD_LINE.lastIndex = match.index; + const lineMatch = KEYWORD_LINE.exec(src); + if (keyword === "attribute") { + attributes.push(lineMatch[2]); + } else if (keyword === "varying") { + varyings.push(lineMatch[2]); + } else if (keyword === "out") { + outs.push(lineMatch[2]); + } else if (keyword === "uniform") { + uniforms.push(lineMatch[2]); + } + src = _ShaderProcessor.cutOut(src, match.index, KEYWORD_LINE.lastIndex, replacement); + KEYWORD.lastIndex = match.index + replacement.length; + replacement = ""; + break; + } + } + } + return { + src, + attributes, + varyings, + outs, + uniforms + }; + } + static processUniforms(device, uniforms, processingOptions, shader) { + const uniformLinesSamplers = []; + const uniformLinesNonSamplers = []; + uniforms.forEach((uniform) => { + if (uniform.isSampler) { + uniformLinesSamplers.push(uniform); + } else { + uniformLinesNonSamplers.push(uniform); + } + }); + const meshUniforms = []; + uniformLinesNonSamplers.forEach((uniform) => { + if (!processingOptions.hasUniform(uniform.name)) { + const uniformType = uniformTypeToName.indexOf(uniform.type); + const uniformFormat = new UniformFormat(uniform.name, uniformType, uniform.arraySize); + meshUniforms.push(uniformFormat); + } + }); + const meshUniformBufferFormat = meshUniforms.length ? new UniformBufferFormat(device, meshUniforms) : null; + const uniformBufferFormats = []; + if (meshUniformBufferFormat) { + uniformBufferFormats.push(new BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)); + } + const textureFormats = []; + uniformLinesSamplers.forEach((uniform) => { + if (!processingOptions.hasTexture(uniform.name)) { + let sampleType = SAMPLETYPE_FLOAT; + if (uniform.isSignedInt) { + sampleType = SAMPLETYPE_INT; + } else if (uniform.isUnsignedInt) { + sampleType = SAMPLETYPE_UINT; + } else { + if (uniform.precision === "highp") sampleType = SAMPLETYPE_UNFILTERABLE_FLOAT; + if (shadowSamplers.has(uniform.type)) sampleType = SAMPLETYPE_DEPTH; + } + const dimension = textureDimensions[uniform.type]; + textureFormats.push(new BindTextureFormat(uniform.name, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT, dimension, sampleType)); + } + }); + const meshBindGroupFormat = new BindGroupFormat(device, [...uniformBufferFormats, ...textureFormats]); + let code = ""; + processingOptions.uniformFormats.forEach((format, bindGroupIndex) => { + if (format) { + code += format.getShaderDeclaration(bindGroupIndex, 0); + } + }); + if (meshUniformBufferFormat) { + code += meshUniformBufferFormat.getShaderDeclaration(BINDGROUP_MESH, 0); + } + processingOptions.bindGroupFormats.forEach((format, bindGroupIndex) => { + if (format) { + code += format.getShaderDeclarationTextures(bindGroupIndex); + } + }); + code += meshBindGroupFormat.getShaderDeclarationTextures(BINDGROUP_MESH); + return { + code, + meshUniformBufferFormat, + meshBindGroupFormat + }; + } + static processVaryings(varyingLines, varyingMap, isVertex) { + let block = ""; + const op = isVertex ? "out" : "in"; + varyingLines.forEach((line, index) => { + const words = _ShaderProcessor.splitToWords(line); + const type2 = words[0]; + const name = words[1]; + if (isVertex) { + varyingMap.set(name, index); + } else { + index = varyingMap.get(name); + } + block += `layout(location = ${index}) ${op} ${type2} ${name}; +`; + }); + return block; + } + static processOuts(outsLines) { + let block = ""; + outsLines.forEach((line, index) => { + block += `layout(location = ${index}) out ${line}; +`; + }); + return block; + } + static getTypeCount(type2) { + const lastChar = type2.substring(type2.length - 1); + const num = parseInt(lastChar, 10); + return isNaN(num) ? 1 : num; + } + static processAttributes(attributeLines, shaderDefinitionAttributes, processingOptions) { + let block = ""; + attributeLines.forEach((line) => { + const words = _ShaderProcessor.splitToWords(line); + let type2 = words[0]; + let name = words[1]; + if (shaderDefinitionAttributes.hasOwnProperty(name)) { + const semantic = shaderDefinitionAttributes[name]; + const location = semanticToLocation[semantic]; + let copyCode; + const element = processingOptions.getVertexElement(semantic); + if (element) { + const dataType = element.dataType; + if (dataType !== TYPE_FLOAT32 && dataType !== TYPE_FLOAT16 && !element.normalize && !element.asInt) { + const attribNumElements = _ShaderProcessor.getTypeCount(type2); + const newName = `_private_${name}`; + copyCode = `vec${attribNumElements} ${name} = vec${attribNumElements}(${newName}); +`; + name = newName; + const isSignedType = dataType === TYPE_INT8 || dataType === TYPE_INT16 || dataType === TYPE_INT32; + if (attribNumElements === 1) { + type2 = isSignedType ? "int" : "uint"; + } else { + type2 = isSignedType ? `ivec${attribNumElements}` : `uvec${attribNumElements}`; + } + } + } + block += `layout(location = ${location}) in ${type2} ${name}; +`; + if (copyCode) { + block += copyCode; + } + } + }); + return block; + } + static splitToWords(line) { + line = line.replace(/\s+/g, " ").trim(); + return line.split(" "); + } + static cutOut(src, start, end, replacement) { + return src.substring(0, start) + replacement + src.substring(end); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-shader.js +var WebgpuShader = class { + constructor(shader) { + this._vertexCode = null; + this._fragmentCode = null; + this._computeCode = null; + this.vertexEntryPoint = "main"; + this.fragmentEntryPoint = "main"; + this.computeEntryPoint = "main"; + this.shader = shader; + const definition = shader.definition; + if (definition.shaderLanguage === SHADERLANGUAGE_WGSL) { + var _definition$vshader, _definition$fshader, _definition$cshader; + this._vertexCode = (_definition$vshader = definition.vshader) != null ? _definition$vshader : null; + this._fragmentCode = (_definition$fshader = definition.fshader) != null ? _definition$fshader : null; + this._computeCode = (_definition$cshader = definition.cshader) != null ? _definition$cshader : null; + this.meshUniformBufferFormat = definition.meshUniformBufferFormat; + this.meshBindGroupFormat = definition.meshBindGroupFormat; + this.computeUniformBufferFormats = definition.computeUniformBufferFormats; + this.computeBindGroupFormat = definition.computeBindGroupFormat; + this.vertexEntryPoint = "vertexMain"; + this.fragmentEntryPoint = "fragmentMain"; + shader.ready = true; + } else { + if (definition.processingOptions) { + this.process(); + } + } + } + destroy(shader) { + this._vertexCode = null; + this._fragmentCode = null; + } + createShaderModule(code, shaderType) { + const device = this.shader.device; + const wgpu = device.wgpu; + const shaderModule = wgpu.createShaderModule({ + code + }); + return shaderModule; + } + getVertexShaderModule() { + return this.createShaderModule(this._vertexCode, "Vertex"); + } + getFragmentShaderModule() { + return this.createShaderModule(this._fragmentCode, "Fragment"); + } + getComputeShaderModule() { + return this.createShaderModule(this._computeCode, "Compute"); + } + process() { + const shader = this.shader; + const processed = ShaderProcessor.run(shader.device, shader.definition, shader); + this._vertexCode = this.transpile(processed.vshader, "vertex", shader.definition.vshader); + this._fragmentCode = this.transpile(processed.fshader, "fragment", shader.definition.fshader); + if (!(this._vertexCode && this._fragmentCode)) { + shader.failed = true; + } else { + shader.ready = true; + } + shader.meshUniformBufferFormat = processed.meshUniformBufferFormat; + shader.meshBindGroupFormat = processed.meshBindGroupFormat; + } + transpile(src, shaderType, originalSrc) { + try { + const spirv = this.shader.device.glslang.compileGLSL(src, shaderType); + return this.shader.device.twgsl.convertSpirV2WGSL(spirv); + } catch (err) { + console.error(`Failed to transpile webgl ${shaderType} shader [${this.shader.label}] to WebGPU: [${err.message}] while rendering ${void 0}`, { + processed: src, + original: originalSrc, + shader: this.shader + }); + } + } + get vertexCode() { + return this._vertexCode; + } + get fragmentCode() { + return this._fragmentCode; + } + loseContext() { + } + restoreContext(device, shader) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/texture-utils.js +var TextureUtils = class _TextureUtils { + static calcLevelDimension(dimension, mipLevel) { + return Math.max(dimension >> mipLevel, 1); + } + static calcMipLevelsCount(width, height, depth = 1) { + return 1 + Math.floor(Math.log2(Math.max(width, height, depth))); + } + static calcLevelGpuSize(width, height, depth, format) { + var _pixelFormatInfo$get$, _pixelFormatInfo$get, _formatInfo$blockSize; + const formatInfo = pixelFormatInfo.get(format); + const pixelSize = (_pixelFormatInfo$get$ = (_pixelFormatInfo$get = pixelFormatInfo.get(format)) == null ? void 0 : _pixelFormatInfo$get.size) != null ? _pixelFormatInfo$get$ : 0; + if (pixelSize > 0) { + return width * height * depth * pixelSize; + } + const blockSize = (_formatInfo$blockSize = formatInfo.blockSize) != null ? _formatInfo$blockSize : 0; + let blockWidth = Math.floor((width + 3) / 4); + const blockHeight = Math.floor((height + 3) / 4); + const blockDepth = Math.floor((depth + 3) / 4); + if (format === PIXELFORMAT_PVRTC_2BPP_RGB_1 || format === PIXELFORMAT_PVRTC_2BPP_RGBA_1) { + blockWidth = Math.max(Math.floor(blockWidth / 2), 1); + } + return blockWidth * blockHeight * blockDepth * blockSize; + } + static calcGpuSize(width, height, depth, format, mipmaps, cubemap) { + let result = 0; + while (1) { + result += _TextureUtils.calcLevelGpuSize(width, height, depth, format); + if (!mipmaps || width === 1 && height === 1 && depth === 1) { + break; + } + width = Math.max(width >> 1, 1); + height = Math.max(height >> 1, 1); + depth = Math.max(depth >> 1, 1); + } + return result * (cubemap ? 6 : 1); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-texture.js +var gpuAddressModes = []; +gpuAddressModes[ADDRESS_REPEAT] = "repeat"; +gpuAddressModes[ADDRESS_CLAMP_TO_EDGE] = "clamp-to-edge"; +gpuAddressModes[ADDRESS_MIRRORED_REPEAT] = "mirror-repeat"; +var gpuFilterModes = []; +gpuFilterModes[FILTER_NEAREST] = { + level: "nearest", + mip: "nearest" +}; +gpuFilterModes[FILTER_LINEAR] = { + level: "linear", + mip: "nearest" +}; +gpuFilterModes[FILTER_NEAREST_MIPMAP_NEAREST] = { + level: "nearest", + mip: "nearest" +}; +gpuFilterModes[FILTER_NEAREST_MIPMAP_LINEAR] = { + level: "nearest", + mip: "linear" +}; +gpuFilterModes[FILTER_LINEAR_MIPMAP_NEAREST] = { + level: "linear", + mip: "nearest" +}; +gpuFilterModes[FILTER_LINEAR_MIPMAP_LINEAR] = { + level: "linear", + mip: "linear" +}; +var dummyUse = (thingOne) => { +}; +var WebgpuTexture = class { + constructor(texture) { + this.gpuTexture = void 0; + this.view = void 0; + this.samplers = []; + this.descr = void 0; + this.format = void 0; + this.texture = texture; + this.format = gpuTextureFormats[texture.format]; + this.create(texture.device); + } + create(device) { + const texture = this.texture; + const wgpu = device.wgpu; + const mipLevelCount = texture.requiredMipLevels; + this.descr = { + size: { + width: texture.width, + height: texture.height, + depthOrArrayLayers: texture.cubemap ? 6 : texture.array ? texture.arrayLength : 1 + }, + format: this.format, + mipLevelCount, + sampleCount: 1, + dimension: texture.volume ? "3d" : "2d", + usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | (isCompressedPixelFormat(texture.format) ? 0 : GPUTextureUsage.RENDER_ATTACHMENT) | (texture.storage ? GPUTextureUsage.STORAGE_BINDING : 0) + }; + this.gpuTexture = wgpu.createTexture(this.descr); + let viewDescr; + if (this.texture.format === PIXELFORMAT_DEPTHSTENCIL) { + viewDescr = { + format: "depth24plus", + aspect: "depth-only" + }; + } + this.view = this.createView(viewDescr); + } + destroy(device) { + } + propertyChanged(flag) { + this.samplers.length = 0; + } + getView(device) { + this.uploadImmediate(device, this.texture); + return this.view; + } + createView(viewDescr) { + var _options$format, _options$dimension, _options$aspect, _options$baseMipLevel, _options$mipLevelCoun, _options$baseArrayLay, _options$arrayLayerCo; + const options = viewDescr != null ? viewDescr : {}; + const textureDescr = this.descr; + const texture = this.texture; + const defaultViewDimension = () => { + if (texture.cubemap) return "cube"; + if (texture.volume) return "3d"; + if (texture.array) return "2d-array"; + return "2d"; + }; + const descr = { + format: (_options$format = options.format) != null ? _options$format : textureDescr.format, + dimension: (_options$dimension = options.dimension) != null ? _options$dimension : defaultViewDimension(), + aspect: (_options$aspect = options.aspect) != null ? _options$aspect : "all", + baseMipLevel: (_options$baseMipLevel = options.baseMipLevel) != null ? _options$baseMipLevel : 0, + mipLevelCount: (_options$mipLevelCoun = options.mipLevelCount) != null ? _options$mipLevelCoun : textureDescr.mipLevelCount, + baseArrayLayer: (_options$baseArrayLay = options.baseArrayLayer) != null ? _options$baseArrayLay : 0, + arrayLayerCount: (_options$arrayLayerCo = options.arrayLayerCount) != null ? _options$arrayLayerCo : textureDescr.depthOrArrayLayers + }; + const view = this.gpuTexture.createView(descr); + return view; + } + getSampler(device, sampleType) { + let sampler = this.samplers[sampleType]; + if (!sampler) { + const texture = this.texture; + const descr = { + addressModeU: gpuAddressModes[texture.addressU], + addressModeV: gpuAddressModes[texture.addressV], + addressModeW: gpuAddressModes[texture.addressW] + }; + if (!sampleType && texture.compareOnRead) { + sampleType = SAMPLETYPE_DEPTH; + } + if (sampleType === SAMPLETYPE_DEPTH || sampleType === SAMPLETYPE_INT || sampleType === SAMPLETYPE_UINT) { + descr.compare = "less"; + descr.magFilter = "linear"; + descr.minFilter = "linear"; + } else if (sampleType === SAMPLETYPE_UNFILTERABLE_FLOAT) { + descr.magFilter = "nearest"; + descr.minFilter = "nearest"; + descr.mipmapFilter = "nearest"; + } else { + const forceNearest = !device.textureFloatFilterable && (texture.format === PIXELFORMAT_RGBA32F || texture.format === PIXELFORMAT_RGBA16F); + if (forceNearest || this.texture.format === PIXELFORMAT_DEPTHSTENCIL || isIntegerPixelFormat(this.texture.format)) { + descr.magFilter = "nearest"; + descr.minFilter = "nearest"; + descr.mipmapFilter = "nearest"; + } else { + descr.magFilter = gpuFilterModes[texture.magFilter].level; + descr.minFilter = gpuFilterModes[texture.minFilter].level; + descr.mipmapFilter = gpuFilterModes[texture.minFilter].mip; + } + } + const allLinear = descr.minFilter === "linear" && descr.magFilter === "linear" && descr.mipmapFilter === "linear"; + descr.maxAnisotropy = allLinear ? math.clamp(Math.round(texture._anisotropy), 1, device.maxTextureAnisotropy) : 1; + sampler = device.wgpu.createSampler(descr); + this.samplers[sampleType] = sampler; + } + return sampler; + } + loseContext() { + } + uploadImmediate(device, texture) { + if (texture._needsUpload || texture._needsMipmapsUpload) { + this.uploadData(device); + texture._needsUpload = false; + texture._needsMipmapsUpload = false; + } + } + uploadData(device) { + const texture = this.texture; + if (texture._levels) { + let anyUploads = false; + let anyLevelMissing = false; + const requiredMipLevels = texture.requiredMipLevels; + for (let mipLevel = 0; mipLevel < requiredMipLevels; mipLevel++) { + const mipObject = texture._levels[mipLevel]; + if (mipObject) { + if (texture.cubemap) { + for (let face = 0; face < 6; face++) { + const faceSource = mipObject[face]; + if (faceSource) { + if (this.isExternalImage(faceSource)) { + this.uploadExternalImage(device, faceSource, mipLevel, face); + anyUploads = true; + } else if (ArrayBuffer.isView(faceSource)) { + this.uploadTypedArrayData(device, faceSource, mipLevel, face); + anyUploads = true; + } else ; + } else { + anyLevelMissing = true; + } + } + } else if (texture._volume) ; + else if (texture.array) { + if (texture.arrayLength === mipObject.length) { + for (let index = 0; index < texture._arrayLength; index++) { + const arraySource = mipObject[index]; + if (this.isExternalImage(arraySource)) { + this.uploadExternalImage(device, arraySource, mipLevel, index); + anyUploads = true; + } else if (ArrayBuffer.isView(arraySource)) { + this.uploadTypedArrayData(device, arraySource, mipLevel, index); + anyUploads = true; + } else ; + } + } else { + anyLevelMissing = true; + } + } else { + if (this.isExternalImage(mipObject)) { + this.uploadExternalImage(device, mipObject, mipLevel, 0); + anyUploads = true; + } else if (ArrayBuffer.isView(mipObject)) { + this.uploadTypedArrayData(device, mipObject, mipLevel, 0); + anyUploads = true; + } else ; + } + } else { + anyLevelMissing = true; + } + } + if (anyUploads && anyLevelMissing && texture.mipmaps && !isCompressedPixelFormat(texture.format)) { + device.mipmapRenderer.generate(this); + } + if (texture._gpuSize) { + texture.adjustVramSizeTracking(device._vram, -texture._gpuSize); + } + texture._gpuSize = texture.gpuSize; + texture.adjustVramSizeTracking(device._vram, texture._gpuSize); + } + } + isExternalImage(image) { + return image instanceof ImageBitmap || image instanceof HTMLVideoElement || image instanceof HTMLCanvasElement || image instanceof OffscreenCanvas; + } + uploadExternalImage(device, image, mipLevel, index) { + const src = { + source: image, + origin: [0, 0], + flipY: false + }; + const dst = { + texture: this.gpuTexture, + mipLevel, + origin: [0, 0, index], + aspect: "all" + }; + const copySize = { + width: this.descr.size.width, + height: this.descr.size.height, + depthOrArrayLayers: 1 + }; + device.submit(); + dummyUse(image instanceof HTMLCanvasElement && image.getContext("2d")); + device.wgpu.queue.copyExternalImageToTexture(src, dst, copySize); + } + uploadTypedArrayData(device, data2, mipLevel, index) { + const texture = this.texture; + const wgpu = device.wgpu; + const dest = { + texture: this.gpuTexture, + origin: [0, 0, index], + mipLevel + }; + const width = TextureUtils.calcLevelDimension(texture.width, mipLevel); + const height = TextureUtils.calcLevelDimension(texture.height, mipLevel); + TextureUtils.calcLevelGpuSize(width, height, 1, texture.format); + const formatInfo = pixelFormatInfo.get(texture.format); + let dataLayout; + let size; + if (formatInfo.size) { + dataLayout = { + offset: 0, + bytesPerRow: formatInfo.size * width, + rowsPerImage: height + }; + size = { + width, + height + }; + } else if (formatInfo.blockSize) { + const blockDim = (size2) => { + return Math.floor((size2 + 3) / 4); + }; + dataLayout = { + offset: 0, + bytesPerRow: formatInfo.blockSize * blockDim(width), + rowsPerImage: blockDim(height) + }; + size = { + width: Math.max(4, width), + height: Math.max(4, height) + }; + } else ; + device.submit(); + wgpu.queue.writeTexture(dest, data2, dataLayout, size); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-uniform-buffer.js +var WebgpuUniformBuffer = class extends WebgpuBuffer { + constructor(uniformBuffer) { + super(BUFFERUSAGE_UNIFORM); + } + unlock(uniformBuffer) { + const device = uniformBuffer.device; + super.unlock(device, uniformBuffer.storageInt32.buffer); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-vertex-buffer.js +var WebgpuVertexBuffer = class extends WebgpuBuffer { + constructor(vertexBuffer, format, options) { + super(BUFFERUSAGE_VERTEX | (options != null && options.storage ? BUFFERUSAGE_STORAGE : 0)); + } + unlock(vertexBuffer) { + const device = vertexBuffer.device; + super.unlock(device, vertexBuffer.storage); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/preprocessor.js +var KEYWORD2 = /[ \t]*#(ifn?def|if|endif|else|elif|define|undef|extension|include)/g; +var DEFINE = /define[ \t]+([^\n]+)\r?(?:\n|$)/g; +var EXTENSION = /extension[ \t]+([\w-]+)[ \t]*:[ \t]*(enable|require)/g; +var UNDEF = /undef[ \t]+([^\n]+)\r?(?:\n|$)/g; +var IF = /(ifdef|ifndef|if)[ \t]*([^\r\n]+)\r?\n/g; +var ENDIF = /(endif|else|elif)([ \t]+[^\r\n]+)?\r?(?:\n|$)/g; +var IDENTIFIER = /([\w-]+)/; +var DEFINED = /(!|\s)?defined\(([\w-]+)\)/; +var INVALID = /[><=|&+-]/g; +var INCLUDE = /include[ \t]+"([\w-]+)"\r?(?:\n|$)/g; +var Preprocessor = class _Preprocessor { + static run(source, includes = /* @__PURE__ */ new Map(), stripUnusedColorAttachments = false) { + source = source.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, "$1"); + source = source.split(/\r?\n/).map((line) => line.trimEnd()).join("\n"); + const defines = /* @__PURE__ */ new Map(); + if (stripUnusedColorAttachments) { + const counts = /* @__PURE__ */ new Map(); + const regex = /(pcFragColor[1-8])\b/g; + const matches = source.match(regex); + matches == null || matches.forEach((match) => { + var _counts$get; + const index = parseInt(match.charAt(match.length - 1), 10); + counts.set(index, ((_counts$get = counts.get(index)) != null ? _counts$get : 0) + 1); + }); + counts.forEach((count, index) => { + if (count === 1) { + defines.set(`REMOVE_COLOR_ATTACHMENT_${index}`, ""); + } + }); + } + source = this._preprocess(source, defines, includes); + const intDefines = /* @__PURE__ */ new Map(); + defines.forEach((value, key) => { + if (Number.isInteger(parseFloat(value)) && !value.includes(".")) { + intDefines.set(key, value); + } + }); + source = this.RemoveEmptyLines(source); + source = this.processArraySize(source, intDefines); + return source; + } + static processArraySize(source, intDefines) { + if (source !== null) { + intDefines.forEach((value, key) => { + source = source.replace(new RegExp(`\\[${key}\\]`, "g"), `[${value}]`); + }); + } + return source; + } + static RemoveEmptyLines(source) { + if (source !== null) { + source = source.split(/\r?\n/).map((line) => line.trim() === "" ? "" : line).join("\n"); + source = source.replace(/(\n\n){3,}/gm, "\n\n"); + } + return source; + } + static _preprocess(source, defines = /* @__PURE__ */ new Map(), includes) { + const originalSource = source; + const stack = []; + let error = false; + let match; + while ((match = KEYWORD2.exec(source)) !== null) { + const keyword = match[1]; + switch (keyword) { + case "define": { + DEFINE.lastIndex = match.index; + const define = DEFINE.exec(source); + error || (error = define === null); + const expression = define[1]; + IDENTIFIER.lastIndex = define.index; + const identifierValue = IDENTIFIER.exec(expression); + const identifier = identifierValue[1]; + let value = expression.substring(identifier.length).trim(); + if (value === "") value = "true"; + const keep = _Preprocessor._keep(stack); + if (keep) { + defines.set(identifier, value); + } + KEYWORD2.lastIndex = define.index + define[0].length; + break; + } + case "undef": { + UNDEF.lastIndex = match.index; + const undef = UNDEF.exec(source); + const identifier = undef[1].trim(); + const keep = _Preprocessor._keep(stack); + if (keep) { + defines.delete(identifier); + } + KEYWORD2.lastIndex = undef.index + undef[0].length; + break; + } + case "extension": { + EXTENSION.lastIndex = match.index; + const extension = EXTENSION.exec(source); + error || (error = extension === null); + if (extension) { + const identifier = extension[1]; + const keep = _Preprocessor._keep(stack); + if (keep) { + defines.set(identifier, "true"); + } + } + KEYWORD2.lastIndex = extension.index + extension[0].length; + break; + } + case "ifdef": + case "ifndef": + case "if": { + IF.lastIndex = match.index; + const iff = IF.exec(source); + const expression = iff[2]; + const evaluated = _Preprocessor.evaluate(expression, defines); + error || (error = evaluated.error); + let result = evaluated.result; + if (keyword === "ifndef") { + result = !result; + } + stack.push({ + anyKeep: result, + keep: result, + start: match.index, + end: IF.lastIndex + }); + KEYWORD2.lastIndex = iff.index + iff[0].length; + break; + } + case "endif": + case "else": + case "elif": { + ENDIF.lastIndex = match.index; + const endif = ENDIF.exec(source); + const blockInfo = stack.pop(); + const blockCode = blockInfo.keep ? source.substring(blockInfo.end, match.index) : ""; + source = source.substring(0, blockInfo.start) + blockCode + source.substring(ENDIF.lastIndex); + KEYWORD2.lastIndex = blockInfo.start + blockCode.length; + const endifCommand = endif[1]; + if (endifCommand === "else" || endifCommand === "elif") { + let result = false; + if (!blockInfo.anyKeep) { + if (endifCommand === "else") { + result = !blockInfo.keep; + } else { + const evaluated = _Preprocessor.evaluate(endif[2], defines); + result = evaluated.result; + error || (error = evaluated.error); + } + } + stack.push({ + anyKeep: blockInfo.anyKeep || result, + keep: result, + start: KEYWORD2.lastIndex, + end: KEYWORD2.lastIndex + }); + } + break; + } + case "include": { + INCLUDE.lastIndex = match.index; + const include = INCLUDE.exec(source); + error || (error = include === null); + const identifier = include[1].trim(); + const keep = _Preprocessor._keep(stack); + if (keep) { + const includeSource = includes == null ? void 0 : includes.get(identifier); + if (includeSource) { + source = source.substring(0, include.index - 1) + includeSource + source.substring(INCLUDE.lastIndex); + KEYWORD2.lastIndex = include.index; + } else { + console.error(`Include not found: ${identifier}`); + error = true; + } + } + break; + } + } + } + if (error) { + console.warn("Failed to preprocess shader: ", { + source: originalSource + }); + return originalSource; + } + return source; + } + static _keep(stack) { + for (let i = 0; i < stack.length; i++) { + if (!stack[i].keep) return false; + } + return true; + } + static evaluate(expression, defines) { + const correct = INVALID.exec(expression) === null; + let invert = false; + const defined = DEFINED.exec(expression); + if (defined) { + invert = defined[1] === "!"; + expression = defined[2]; + } + expression = expression.trim(); + let exists = defines.has(expression); + if (invert) { + exists = !exists; + } + return { + result: exists, + error: !correct + }; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader.js +var id4 = 0; +var Shader = class { + constructor(graphicsDevice, definition) { + this.meshUniformBufferFormat = void 0; + this.meshBindGroupFormat = void 0; + this.id = id4++; + this.device = graphicsDevice; + this.definition = definition; + this.name = definition.name || "Untitled"; + this.init(); + if (definition.cshader) ; + else { + definition.vshader = Preprocessor.run(definition.vshader, definition.vincludes); + const stripUnusedColorAttachments = graphicsDevice.isWebGL2 && (platform.name === "osx" || platform.name === "ios"); + definition.fshader = Preprocessor.run(definition.fshader, definition.fincludes, stripUnusedColorAttachments); + } + this.impl = graphicsDevice.createShaderImpl(this); + } + init() { + this.ready = false; + this.failed = false; + } + get label() { + return `Shader Id ${this.id} ${this.name}`; + } + destroy() { + this.device.onDestroyShader(this); + this.impl.destroy(this); + } + loseContext() { + this.init(); + this.impl.loseContext(); + } + restoreContext() { + this.impl.restoreContext(this.device, this); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/bind-group.js +var id5 = 0; +var BindGroup = class { + constructor(graphicsDevice, format, defaultUniformBuffer) { + this.renderVersionUpdated = -1; + this.uniformBuffers = void 0; + this.uniformBufferOffsets = []; + this.id = id5++; + this.device = graphicsDevice; + this.format = format; + this.dirty = true; + this.impl = graphicsDevice.createBindGroupImpl(this); + this.textures = []; + this.storageTextures = []; + this.storageBuffers = []; + this.uniformBuffers = []; + this.defaultUniformBuffer = defaultUniformBuffer; + if (defaultUniformBuffer) { + this.setUniformBuffer(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, defaultUniformBuffer); + } + } + destroy() { + this.impl.destroy(); + this.impl = null; + this.format = null; + this.defaultUniformBuffer = null; + } + setUniformBuffer(name, uniformBuffer) { + const index = this.format.bufferFormatsMap.get(name); + if (this.uniformBuffers[index] !== uniformBuffer) { + this.uniformBuffers[index] = uniformBuffer; + this.dirty = true; + } + } + setStorageBuffer(name, storageBuffer) { + const index = this.format.storageBufferFormatsMap.get(name); + if (this.storageBuffers[index] !== storageBuffer) { + this.storageBuffers[index] = storageBuffer; + this.dirty = true; + } + } + setTexture(name, texture) { + const index = this.format.textureFormatsMap.get(name); + if (this.textures[index] !== texture) { + this.textures[index] = texture; + this.dirty = true; + } else if (this.renderVersionUpdated < texture.renderVersionDirty) { + this.dirty = true; + } + } + setStorageTexture(name, texture) { + const index = this.format.storageTextureFormatsMap.get(name); + if (this.storageTextures[index] !== texture) { + this.storageTextures[index] = texture; + this.dirty = true; + } else if (this.renderVersionUpdated < texture.renderVersionDirty) { + this.dirty = true; + } + } + updateUniformBuffers() { + for (let i = 0; i < this.uniformBuffers.length; i++) { + this.uniformBuffers[i].update(); + } + } + update() { + const { + textureFormats, + storageTextureFormats, + storageBufferFormats + } = this.format; + for (let i = 0; i < textureFormats.length; i++) { + const textureFormat = textureFormats[i]; + const value = textureFormat.scopeId.value; + this.setTexture(textureFormat.name, value); + } + for (let i = 0; i < storageTextureFormats.length; i++) { + const storageTextureFormat = storageTextureFormats[i]; + const value = storageTextureFormat.scopeId.value; + this.setStorageTexture(storageTextureFormat.name, value); + } + for (let i = 0; i < storageBufferFormats.length; i++) { + const storageBufferFormat = storageBufferFormats[i]; + const value = storageBufferFormat.scopeId.value; + this.setStorageBuffer(storageBufferFormat.name, value); + } + this.uniformBufferOffsets.length = this.uniformBuffers.length; + for (let i = 0; i < this.uniformBuffers.length; i++) { + const uniformBuffer = this.uniformBuffers[i]; + this.uniformBufferOffsets[i] = uniformBuffer.offset; + if (this.renderVersionUpdated < uniformBuffer.renderVersionDirty) { + this.dirty = true; + } + } + if (this.dirty) { + this.dirty = false; + this.renderVersionUpdated = this.device.renderVersion; + this.impl.update(this); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/dynamic-buffers.js +var DynamicBuffer = class { + constructor(device) { + this.device = void 0; + this.device = device; + } +}; +var UsedBuffer = class { + constructor() { + this.gpuBuffer = void 0; + this.stagingBuffer = void 0; + this.offset = void 0; + this.size = void 0; + } +}; +var DynamicBufferAllocation = class { + constructor() { + this.storage = void 0; + this.gpuBuffer = void 0; + this.offset = void 0; + } +}; +var DynamicBuffers = class { + constructor(device, bufferSize, bufferAlignment) { + this.bufferSize = void 0; + this.gpuBuffers = []; + this.stagingBuffers = []; + this.usedBuffers = []; + this.activeBuffer = null; + this.device = device; + this.bufferSize = bufferSize; + this.bufferAlignment = bufferAlignment; + } + destroy() { + this.gpuBuffers.forEach((gpuBuffer) => { + gpuBuffer.destroy(this.device); + }); + this.gpuBuffers = null; + this.stagingBuffers.forEach((stagingBuffer) => { + stagingBuffer.destroy(this.device); + }); + this.stagingBuffers = null; + this.usedBuffers = null; + this.activeBuffer = null; + } + alloc(allocation, size) { + if (this.activeBuffer) { + const _alignedStart = math.roundUp(this.activeBuffer.size, this.bufferAlignment); + const space = this.bufferSize - _alignedStart; + if (space < size) { + this.scheduleSubmit(); + } + } + if (!this.activeBuffer) { + let gpuBuffer = this.gpuBuffers.pop(); + if (!gpuBuffer) { + gpuBuffer = this.createBuffer(this.device, this.bufferSize, false); + } + let stagingBuffer = this.stagingBuffers.pop(); + if (!stagingBuffer) { + stagingBuffer = this.createBuffer(this.device, this.bufferSize, true); + } + this.activeBuffer = new UsedBuffer(); + this.activeBuffer.stagingBuffer = stagingBuffer; + this.activeBuffer.gpuBuffer = gpuBuffer; + this.activeBuffer.offset = 0; + this.activeBuffer.size = 0; + } + const activeBuffer = this.activeBuffer; + const alignedStart = math.roundUp(activeBuffer.size, this.bufferAlignment); + allocation.gpuBuffer = activeBuffer.gpuBuffer; + allocation.offset = alignedStart; + allocation.storage = activeBuffer.stagingBuffer.alloc(alignedStart, size); + activeBuffer.size = alignedStart + size; + } + scheduleSubmit() { + if (this.activeBuffer) { + this.usedBuffers.push(this.activeBuffer); + this.activeBuffer = null; + } + } + submit() { + this.scheduleSubmit(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/uniform-buffer.js +var _updateFunctions = []; +_updateFunctions[UNIFORMTYPE_FLOAT] = function(uniformBuffer, value, offset) { + const dst = uniformBuffer.storageFloat32; + dst[offset] = value; +}; +_updateFunctions[UNIFORMTYPE_VEC2] = (uniformBuffer, value, offset) => { + const dst = uniformBuffer.storageFloat32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; +}; +_updateFunctions[UNIFORMTYPE_VEC3] = (uniformBuffer, value, offset) => { + const dst = uniformBuffer.storageFloat32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; + dst[offset + 2] = value[2]; +}; +_updateFunctions[UNIFORMTYPE_VEC4] = (uniformBuffer, value, offset) => { + const dst = uniformBuffer.storageFloat32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; + dst[offset + 2] = value[2]; + dst[offset + 3] = value[3]; +}; +_updateFunctions[UNIFORMTYPE_INT] = function(uniformBuffer, value, offset) { + const dst = uniformBuffer.storageInt32; + dst[offset] = value; +}; +_updateFunctions[UNIFORMTYPE_IVEC2] = function(uniformBuffer, value, offset) { + const dst = uniformBuffer.storageInt32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; +}; +_updateFunctions[UNIFORMTYPE_IVEC3] = function(uniformBuffer, value, offset) { + const dst = uniformBuffer.storageInt32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; + dst[offset + 2] = value[2]; +}; +_updateFunctions[UNIFORMTYPE_IVEC4] = function(uniformBuffer, value, offset) { + const dst = uniformBuffer.storageInt32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; + dst[offset + 2] = value[2]; + dst[offset + 3] = value[3]; +}; +_updateFunctions[UNIFORMTYPE_MAT2] = (uniformBuffer, value, offset) => { + const dst = uniformBuffer.storageFloat32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; + dst[offset + 4] = value[2]; + dst[offset + 5] = value[3]; + dst[offset + 8] = value[4]; + dst[offset + 9] = value[5]; +}; +_updateFunctions[UNIFORMTYPE_MAT3] = (uniformBuffer, value, offset) => { + const dst = uniformBuffer.storageFloat32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; + dst[offset + 2] = value[2]; + dst[offset + 4] = value[3]; + dst[offset + 5] = value[4]; + dst[offset + 6] = value[5]; + dst[offset + 8] = value[6]; + dst[offset + 9] = value[7]; + dst[offset + 10] = value[8]; +}; +_updateFunctions[UNIFORMTYPE_FLOATARRAY] = function(uniformBuffer, value, offset, count) { + const dst = uniformBuffer.storageFloat32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i]; + } +}; +_updateFunctions[UNIFORMTYPE_VEC2ARRAY] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageFloat32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i * 2]; + dst[offset + i * 4 + 1] = value[i * 2 + 1]; + } +}; +_updateFunctions[UNIFORMTYPE_VEC3ARRAY] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageFloat32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i * 3]; + dst[offset + i * 4 + 1] = value[i * 3 + 1]; + dst[offset + i * 4 + 2] = value[i * 3 + 2]; + } +}; +_updateFunctions[UNIFORMTYPE_UINT] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageUint32; + dst[offset] = value; +}; +_updateFunctions[UNIFORMTYPE_UVEC2] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageUint32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; +}; +_updateFunctions[UNIFORMTYPE_UVEC3] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageUint32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; + dst[offset + 2] = value[2]; +}; +_updateFunctions[UNIFORMTYPE_UVEC4] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageUint32; + dst[offset] = value[0]; + dst[offset + 1] = value[1]; + dst[offset + 2] = value[2]; + dst[offset + 3] = value[3]; +}; +_updateFunctions[UNIFORMTYPE_INTARRAY] = function(uniformBuffer, value, offset, count) { + const dst = uniformBuffer.storageInt32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i]; + } +}; +_updateFunctions[UNIFORMTYPE_BOOLARRAY] = _updateFunctions[UNIFORMTYPE_INTARRAY]; +_updateFunctions[UNIFORMTYPE_UINTARRAY] = function(uniformBuffer, value, offset, count) { + const dst = uniformBuffer.storageUint32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i]; + } +}; +_updateFunctions[UNIFORMTYPE_IVEC2ARRAY] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageInt32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i * 2]; + dst[offset + i * 4 + 1] = value[i * 2 + 1]; + } +}; +_updateFunctions[UNIFORMTYPE_BVEC2ARRAY] = _updateFunctions[UNIFORMTYPE_IVEC2ARRAY]; +_updateFunctions[UNIFORMTYPE_UVEC2ARRAY] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageUint32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i * 2]; + dst[offset + i * 4 + 1] = value[i * 2 + 1]; + } +}; +_updateFunctions[UNIFORMTYPE_IVEC3ARRAY] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageInt32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i * 3]; + dst[offset + i * 4 + 1] = value[i * 3 + 1]; + dst[offset + i * 4 + 2] = value[i * 3 + 2]; + } +}; +_updateFunctions[UNIFORMTYPE_BVEC3ARRAY] = _updateFunctions[UNIFORMTYPE_IVEC3ARRAY]; +_updateFunctions[UNIFORMTYPE_UVEC3ARRAY] = (uniformBuffer, value, offset, count) => { + const dst = uniformBuffer.storageUint32; + for (let i = 0; i < count; i++) { + dst[offset + i * 4] = value[i * 3]; + dst[offset + i * 4 + 1] = value[i * 3 + 1]; + dst[offset + i * 4 + 2] = value[i * 3 + 2]; + } +}; +var UniformBuffer = class { + constructor(graphicsDevice, format, persistent = true) { + this.device = void 0; + this.persistent = void 0; + this.allocation = void 0; + this.storageFloat32 = void 0; + this.storageInt32 = void 0; + this.storageUint32 = void 0; + this.renderVersionDirty = 0; + this.device = graphicsDevice; + this.format = format; + this.persistent = persistent; + if (persistent) { + this.impl = graphicsDevice.createUniformBufferImpl(this); + const storage = new ArrayBuffer(format.byteSize); + this.assignStorage(new Int32Array(storage)); + graphicsDevice._vram.ub += this.format.byteSize; + } else { + this.allocation = new DynamicBufferAllocation(); + } + } + destroy() { + if (this.persistent) { + const device = this.device; + this.impl.destroy(device); + device._vram.ub -= this.format.byteSize; + } + } + get offset() { + return this.persistent ? 0 : this.allocation.offset; + } + assignStorage(storage) { + this.storageInt32 = storage; + this.storageUint32 = new Uint32Array(storage.buffer, storage.byteOffset, storage.byteLength / 4); + this.storageFloat32 = new Float32Array(storage.buffer, storage.byteOffset, storage.byteLength / 4); + } + loseContext() { + var _this$impl; + (_this$impl = this.impl) == null || _this$impl.loseContext(); + } + setUniform(uniformFormat) { + const offset = uniformFormat.offset; + const value = uniformFormat.scopeId.value; + if (value !== null && value !== void 0) { + const updateFunction = _updateFunctions[uniformFormat.updateType]; + if (updateFunction) { + updateFunction(this, value, offset, uniformFormat.count); + } else { + this.storageFloat32.set(value, offset); + } + } + } + set(name) { + const uniformFormat = this.format.map.get(name); + if (uniformFormat) { + this.setUniform(uniformFormat); + } + } + update() { + const persistent = this.persistent; + if (!persistent) { + const allocation = this.allocation; + const oldGpuBuffer = allocation.gpuBuffer; + this.device.dynamicBuffers.alloc(allocation, this.format.byteSize); + this.assignStorage(allocation.storage); + if (oldGpuBuffer !== allocation.gpuBuffer) { + this.renderVersionDirty = this.device.renderVersion; + } + } + const uniforms = this.format.uniforms; + for (let i = 0; i < uniforms.length; i++) { + this.setUniform(uniforms[i]); + } + if (persistent) { + this.impl.unlock(this); + } else { + this.storageFloat32 = null; + this.storageInt32 = null; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-clear-renderer.js +var primitive = { + type: PRIMITIVE_TRISTRIP, + base: 0, + count: 4, + indexed: false +}; +var WebgpuClearRenderer = class { + constructor(device) { + const code = ` + + struct ub_mesh { + color : vec4f, + depth: f32 + } + + @group(0) @binding(0) var ubMesh : ub_mesh; + + var pos : array = array( + vec2(-1.0, 1.0), vec2(1.0, 1.0), + vec2(-1.0, -1.0), vec2(1.0, -1.0) + ); + + struct VertexOutput { + @builtin(position) position : vec4f + } + + @vertex + fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput { + var output : VertexOutput; + output.position = vec4(pos[vertexIndex], ubMesh.depth, 1.0); + return output; + } + + @fragment + fn fragmentMain() -> @location(0) vec4f { + return ubMesh.color; + } + `; + this.shader = new Shader(device, { + name: "WebGPUClearRendererShader", + shaderLanguage: SHADERLANGUAGE_WGSL, + vshader: code, + fshader: code + }); + this.uniformBuffer = new UniformBuffer(device, new UniformBufferFormat(device, [new UniformFormat("color", UNIFORMTYPE_VEC4), new UniformFormat("depth", UNIFORMTYPE_FLOAT)]), false); + const bindGroupFormat = new BindGroupFormat(device, [new BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)]); + this.bindGroup = new BindGroup(device, bindGroupFormat, this.uniformBuffer); + this.colorData = new Float32Array(4); + this.colorId = device.scope.resolve("color"); + this.depthId = device.scope.resolve("depth"); + } + destroy() { + this.shader.destroy(); + this.shader = null; + this.uniformBuffer.destroy(); + this.uniformBuffer = null; + this.bindGroup.destroy(); + this.bindGroup = null; + } + clear(device, renderTarget, options, defaultOptions) { + var _options$flags; + options = options || defaultOptions; + const flags = (_options$flags = options.flags) != null ? _options$flags : defaultOptions.flags; + if (flags !== 0) { + if (flags & CLEARFLAG_COLOR && (renderTarget.colorBuffer || renderTarget.impl.assignedColorTexture)) { + var _options$color; + const color = (_options$color = options.color) != null ? _options$color : defaultOptions.color; + this.colorData.set(color); + device.setBlendState(BlendState.NOBLEND); + } else { + device.setBlendState(BlendState.NOWRITE); + } + this.colorId.setValue(this.colorData); + if (flags & CLEARFLAG_DEPTH && renderTarget.depth) { + var _options$depth; + const depth = (_options$depth = options.depth) != null ? _options$depth : defaultOptions.depth; + this.depthId.setValue(depth); + device.setDepthState(DepthState.WRITEDEPTH); + } else { + this.depthId.setValue(1); + device.setDepthState(DepthState.NODEPTH); + } + if (flags & CLEARFLAG_STENCIL && renderTarget.stencil) ; + device.setCullMode(CULLFACE_NONE); + device.setShader(this.shader); + const bindGroup = this.bindGroup; + bindGroup.defaultUniformBuffer.update(); + bindGroup.update(); + device.setBindGroup(BINDGROUP_MESH, bindGroup); + device.draw(primitive); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-mipmap-renderer.js +var WebgpuMipmapRenderer = class { + constructor(device) { + this.device = void 0; + this.device = device; + const code = ` + + var pos : array = array( + vec2(-1.0, 1.0), vec2(1.0, 1.0), + vec2(-1.0, -1.0), vec2(1.0, -1.0) + ); + + struct VertexOutput { + @builtin(position) position : vec4f, + @location(0) texCoord : vec2f + }; + + @vertex + fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput { + var output : VertexOutput; + output.texCoord = pos[vertexIndex] * vec2f(0.5, -0.5) + vec2f(0.5); + output.position = vec4f(pos[vertexIndex], 0, 1); + return output; + } + + @group(0) @binding(0) var imgSampler : sampler; + @group(0) @binding(1) var img : texture_2d; + + @fragment + fn fragmentMain(@location(0) texCoord : vec2f) -> @location(0) vec4f { + return textureSample(img, imgSampler, texCoord); + } + `; + this.shader = new Shader(device, { + name: "WebGPUMipmapRendererShader", + shaderLanguage: SHADERLANGUAGE_WGSL, + vshader: code, + fshader: code + }); + this.minSampler = device.wgpu.createSampler({ + minFilter: "linear" + }); + } + destroy() { + this.shader.destroy(); + this.shader = null; + } + generate(webgpuTexture) { + var _device$commandEncode; + const textureDescr = webgpuTexture.descr; + if (textureDescr.mipLevelCount <= 1) { + return; + } + if (webgpuTexture.texture.volume) { + return; + } + const device = this.device; + const wgpu = device.wgpu; + const webgpuShader = this.shader.impl; + const pipeline = wgpu.createRenderPipeline({ + layout: "auto", + vertex: { + module: webgpuShader.getVertexShaderModule(), + entryPoint: webgpuShader.vertexEntryPoint + }, + fragment: { + module: webgpuShader.getFragmentShaderModule(), + entryPoint: webgpuShader.fragmentEntryPoint, + targets: [{ + format: textureDescr.format + }] + }, + primitive: { + topology: "triangle-strip" + } + }); + const texture = webgpuTexture.texture; + const numFaces = texture.cubemap ? 6 : texture.array ? texture.arrayLength : 1; + const srcViews = []; + for (let face = 0; face < numFaces; face++) { + srcViews.push(webgpuTexture.createView({ + dimension: "2d", + baseMipLevel: 0, + mipLevelCount: 1, + baseArrayLayer: face + })); + } + const commandEncoder = (_device$commandEncode = device.commandEncoder) != null ? _device$commandEncode : wgpu.createCommandEncoder(); + for (let i = 1; i < textureDescr.mipLevelCount; i++) { + for (let face = 0; face < numFaces; face++) { + const dstView = webgpuTexture.createView({ + dimension: "2d", + baseMipLevel: i, + mipLevelCount: 1, + baseArrayLayer: face + }); + const passEncoder = commandEncoder.beginRenderPass({ + colorAttachments: [{ + view: dstView, + loadOp: "clear", + storeOp: "store" + }] + }); + const bindGroup = wgpu.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [{ + binding: 0, + resource: this.minSampler + }, { + binding: 1, + resource: srcViews[face] + }] + }); + passEncoder.setPipeline(pipeline); + passEncoder.setBindGroup(0, bindGroup); + passEncoder.draw(4); + passEncoder.end(); + srcViews[face] = dstView; + } + } + if (!device.commandEncoder) { + const cb = commandEncoder.finish(); + device.addCommandBuffer(cb); + } + device.pipeline = null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-dynamic-buffer.js +var WebgpuDynamicBuffer = class extends DynamicBuffer { + constructor(device, size, isStaging) { + super(device); + this.buffer = null; + this.mappedRange = null; + this.buffer = device.wgpu.createBuffer({ + size, + usage: isStaging ? GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC : GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, + mappedAtCreation: isStaging + }); + if (isStaging) { + this.onAvailable(); + } + device._vram.ub += size; + } + destroy(device) { + device._vram.ub -= this.buffer.size; + this.buffer.destroy(); + this.buffer = null; + } + onAvailable() { + this.mappedRange = this.buffer.getMappedRange(); + } + alloc(offset, size) { + return new Int32Array(this.mappedRange, offset, size / 4); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-dynamic-buffers.js +var WebgpuDynamicBuffers = class extends DynamicBuffers { + constructor(...args) { + super(...args); + this.pendingStagingBuffers = []; + } + createBuffer(device, size, isStaging) { + return new WebgpuDynamicBuffer(device, size, isStaging); + } + submit() { + super.submit(); + const count = this.usedBuffers.length; + if (count) { + const device = this.device; + const gpuBuffers = this.gpuBuffers; + const commandEncoder = device.wgpu.createCommandEncoder(); + for (let i = count - 1; i >= 0; i--) { + const usedBuffer = this.usedBuffers[i]; + const { + stagingBuffer, + gpuBuffer, + offset, + size + } = usedBuffer; + const src = stagingBuffer.buffer; + src.unmap(); + commandEncoder.copyBufferToBuffer(src, offset, gpuBuffer.buffer, offset, size); + gpuBuffers.push(gpuBuffer); + } + const cb = commandEncoder.finish(); + device.addCommandBuffer(cb, true); + for (let i = 0; i < count; i++) { + const stagingBuffer = this.usedBuffers[i].stagingBuffer; + this.pendingStagingBuffers.push(stagingBuffer); + } + this.usedBuffers.length = 0; + } + } + onCommandBuffersSubmitted() { + const count = this.pendingStagingBuffers.length; + if (count) { + for (let i = 0; i < count; i++) { + const stagingBuffer = this.pendingStagingBuffers[i]; + stagingBuffer.buffer.mapAsync(GPUMapMode.WRITE).then(() => { + if (this.stagingBuffers) { + stagingBuffer.onAvailable(); + this.stagingBuffers.push(stagingBuffer); + } + }); + } + this.pendingStagingBuffers.length = 0; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/gpu-profiler.js +var GpuProfiler = class { + constructor() { + this.frameAllocations = []; + this.pastFrameAllocations = /* @__PURE__ */ new Map(); + this._enabled = false; + this._enableRequest = false; + this._frameTime = 0; + } + loseContext() { + this.pastFrameAllocations.clear(); + } + set enabled(value) { + this._enableRequest = value; + } + get enabled() { + return this._enableRequest; + } + processEnableRequest() { + if (this._enableRequest !== this._enabled) { + this._enabled = this._enableRequest; + if (!this._enabled) { + this._frameTime = 0; + } + } + } + request(renderVersion) { + this.pastFrameAllocations.set(renderVersion, this.frameAllocations); + this.frameAllocations = []; + } + report(renderVersion, timings) { + if (timings) { + const allocations = this.pastFrameAllocations.get(renderVersion); + if (timings.length > 0) { + this._frameTime = timings[0]; + } + if (Tracing.get(TRACEID_GPU_TIMINGS)) { + for (let i = 0; i < allocations.length; ++i) { + allocations[i]; + } + } + } + this.pastFrameAllocations.delete(renderVersion); + } + getSlot(name) { + const slot = this.frameAllocations.length; + this.frameAllocations.push(name); + return slot; + } + get slotCount() { + return this.frameAllocations.length; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-query-set.js +var WebgpuQuerySet = class { + constructor(device, isTimestamp, capacity) { + this.querySet = void 0; + this.stagingBuffers = []; + this.activeStagingBuffer = null; + this.bytesPerSlot = void 0; + this.device = device; + this.capacity = capacity; + this.bytesPerSlot = isTimestamp ? 8 : 4; + const wgpu = device.wgpu; + this.querySet = wgpu.createQuerySet({ + type: isTimestamp ? "timestamp" : "occlusion", + count: capacity + }); + this.queryBuffer = wgpu.createBuffer({ + size: this.bytesPerSlot * capacity, + usage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST + }); + } + destroy() { + var _this$querySet, _this$queryBuffer; + (_this$querySet = this.querySet) == null || _this$querySet.destroy(); + this.querySet = null; + (_this$queryBuffer = this.queryBuffer) == null || _this$queryBuffer.destroy(); + this.queryBuffer = null; + this.activeStagingBuffer = null; + this.stagingBuffers.forEach((stagingBuffer) => { + stagingBuffer.destroy(); + }); + this.stagingBuffers = null; + } + getStagingBuffer() { + let stagingBuffer = this.stagingBuffers.pop(); + if (!stagingBuffer) { + stagingBuffer = this.device.wgpu.createBuffer({ + size: this.queryBuffer.size, + usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ + }); + } + return stagingBuffer; + } + resolve(count) { + const device = this.device; + const commandEncoder = device.wgpu.createCommandEncoder(); + commandEncoder.resolveQuerySet(this.querySet, 0, count, this.queryBuffer, 0); + const activeStagingBuffer = this.getStagingBuffer(); + this.activeStagingBuffer = activeStagingBuffer; + commandEncoder.copyBufferToBuffer(this.queryBuffer, 0, activeStagingBuffer, 0, this.bytesPerSlot * count); + const cb = commandEncoder.finish(); + device.addCommandBuffer(cb); + } + request(count, renderVersion) { + const stagingBuffer = this.activeStagingBuffer; + this.activeStagingBuffer = null; + return stagingBuffer.mapAsync(GPUMapMode.READ).then(() => { + var _this$stagingBuffers; + const srcTimings = new BigInt64Array(stagingBuffer.getMappedRange()); + const timings = []; + for (let i = 0; i < count; i++) { + timings.push(Number(srcTimings[i * 2 + 1] - srcTimings[i * 2]) * 1e-6); + } + stagingBuffer.unmap(); + (_this$stagingBuffers = this.stagingBuffers) == null || _this$stagingBuffers.push(stagingBuffer); + return { + renderVersion, + timings + }; + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-gpu-profiler.js +var WebgpuGpuProfiler = class extends GpuProfiler { + constructor(device) { + super(); + this.device = void 0; + this.frameGPUMarkerSlot = void 0; + this.device = device; + this.timestampQueriesSet = device.supportsTimestampQuery ? new WebgpuQuerySet(device, true, 512) : null; + } + destroy() { + var _this$timestampQuerie; + (_this$timestampQuerie = this.timestampQueriesSet) == null || _this$timestampQuerie.destroy(); + this.timestampQueriesSet = null; + } + frameStart() { + this.processEnableRequest(); + } + frameEnd() { + if (this._enabled) { + var _this$timestampQuerie2; + (_this$timestampQuerie2 = this.timestampQueriesSet) == null || _this$timestampQuerie2.resolve(this.slotCount * 2); + } + } + request() { + if (this._enabled) { + var _this$timestampQuerie3; + const renderVersion = this.device.renderVersion; + (_this$timestampQuerie3 = this.timestampQueriesSet) == null || _this$timestampQuerie3.request(this.slotCount, renderVersion).then((results) => { + this.report(results.renderVersion, results.timings); + }); + super.request(renderVersion); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-resolver.js +var WebgpuResolver = class { + constructor(device) { + this.device = void 0; + this.pipelineCache = /* @__PURE__ */ new Map(); + this.device = device; + const code = ` + + var pos : array = array( + vec2(-1.0, 1.0), vec2(1.0, 1.0), vec2(-1.0, -1.0), vec2(1.0, -1.0) + ); + + struct VertexOutput { + @builtin(position) position : vec4f, + }; + + @vertex + fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput { + var output : VertexOutput; + output.position = vec4f(pos[vertexIndex], 0, 1); + return output; + } + + @group(0) @binding(0) var img : texture_depth_multisampled_2d; + + @fragment + fn fragmentMain(@builtin(position) fragColor: vec4f) -> @location(0) vec4f { + // load th depth value from sample index 0 + var depth = textureLoad(img, vec2i(fragColor.xy), 0u); + return vec4(depth, 0.0, 0.0, 0.0); + } + `; + this.shader = new Shader(device, { + name: "WebGPUResolverDepthShader", + shaderLanguage: SHADERLANGUAGE_WGSL, + vshader: code, + fshader: code + }); + } + destroy() { + this.shader.destroy(); + this.shader = null; + this.pipelineCache = null; + } + getPipeline(format) { + let pipeline = this.pipelineCache.get(format); + if (!pipeline) { + pipeline = this.createPipeline(format); + this.pipelineCache.set(format, pipeline); + } + return pipeline; + } + createPipeline(format) { + const webgpuShader = this.shader.impl; + const pipeline = this.device.wgpu.createRenderPipeline({ + layout: "auto", + vertex: { + module: webgpuShader.getVertexShaderModule(), + entryPoint: webgpuShader.vertexEntryPoint + }, + fragment: { + module: webgpuShader.getFragmentShaderModule(), + entryPoint: webgpuShader.fragmentEntryPoint, + targets: [{ + format + }] + }, + primitive: { + topology: "triangle-strip" + } + }); + return pipeline; + } + resolveDepth(commandEncoder, sourceTexture, destinationTexture) { + const device = this.device; + const wgpu = device.wgpu; + const pipeline = this.getPipeline(destinationTexture.format); + const numFaces = sourceTexture.depthOrArrayLayers; + for (let face = 0; face < numFaces; face++) { + const srcView = sourceTexture.createView({ + dimension: "2d", + aspect: "depth-only", + baseMipLevel: 0, + mipLevelCount: 1, + baseArrayLayer: face + }); + const dstView = destinationTexture.createView({ + dimension: "2d", + baseMipLevel: 0, + mipLevelCount: 1, + baseArrayLayer: face + }); + const passEncoder = commandEncoder.beginRenderPass({ + colorAttachments: [{ + view: dstView, + loadOp: "clear", + storeOp: "store" + }] + }); + const bindGroup = wgpu.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [{ + binding: 0, + resource: srcView + }] + }); + passEncoder.setPipeline(pipeline); + passEncoder.setBindGroup(0, bindGroup); + passEncoder.draw(4); + passEncoder.end(); + } + device.pipeline = null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-compute.js +var WebgpuCompute = class { + constructor(compute) { + this.uniformBuffers = []; + this.bindGroup = null; + this.compute = compute; + const { + device, + shader + } = compute; + const { + computeBindGroupFormat, + computeUniformBufferFormats + } = shader.impl; + this.bindGroup = new BindGroup(device, computeBindGroupFormat); + if (computeUniformBufferFormats) { + for (const name in computeUniformBufferFormats) { + if (computeUniformBufferFormats.hasOwnProperty(name)) { + const ub = new UniformBuffer(device, computeUniformBufferFormats[name], true); + this.uniformBuffers.push(ub); + this.bindGroup.setUniformBuffer(name, ub); + } + } + } + this.pipeline = device.computePipeline.get(shader, computeBindGroupFormat); + } + destroy() { + this.uniformBuffers.forEach((ub) => ub.destroy()); + this.uniformBuffers.length = 0; + this.bindGroup.destroy(); + this.bindGroup = null; + } + updateBindGroup() { + const { + bindGroup + } = this; + bindGroup.updateUniformBuffers(); + bindGroup.update(); + } + dispatch(x2, y2, z2) { + const device = this.compute.device; + device.setBindGroup(0, this.bindGroup); + const passEncoder = device.passEncoder; + passEncoder.setPipeline(this.pipeline); + passEncoder.dispatchWorkgroups(x2, y2, z2); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-graphics-device.js +var _uniqueLocations = /* @__PURE__ */ new Map(); +var WebgpuGraphicsDevice = class extends GraphicsDevice { + constructor(canvas, options = {}) { + var _options$alpha, _options$antialias; + super(canvas, options); + this.renderPipeline = new WebgpuRenderPipeline(this); + this.computePipeline = new WebgpuComputePipeline(this); + this.clearRenderer = void 0; + this.mipmapRenderer = void 0; + this.pipeline = void 0; + this.bindGroupFormats = []; + this.commandEncoder = null; + this.commandBuffers = []; + this.limits = void 0; + options = this.initOptions; + options.alpha = (_options$alpha = options.alpha) != null ? _options$alpha : true; + this.backBufferAntialias = (_options$antialias = options.antialias) != null ? _options$antialias : false; + this.isWebGPU = true; + this._deviceType = DEVICETYPE_WEBGPU; + } + destroy() { + this.clearRenderer.destroy(); + this.clearRenderer = null; + this.mipmapRenderer.destroy(); + this.mipmapRenderer = null; + this.resolver.destroy(); + this.resolver = null; + super.destroy(); + } + initDeviceCaps() { + var _this$wgpu; + const limits = (_this$wgpu = this.wgpu) == null ? void 0 : _this$wgpu.limits; + this.limits = limits; + this.precision = "highp"; + this.maxPrecision = "highp"; + this.maxSamples = 4; + this.maxTextures = 16; + this.maxTextureSize = limits.maxTextureDimension2D; + this.maxCubeMapSize = limits.maxTextureDimension2D; + this.maxVolumeSize = limits.maxTextureDimension3D; + this.maxColorAttachments = limits.maxColorAttachments; + this.maxPixelRatio = 1; + this.maxAnisotropy = 16; + this.fragmentUniformsCount = limits.maxUniformBufferBindingSize / 16; + this.vertexUniformsCount = limits.maxUniformBufferBindingSize / 16; + this.supportsInstancing = true; + this.supportsUniformBuffers = true; + this.supportsVolumeTextures = true; + this.supportsBoneTextures = true; + this.supportsMorphTargetTexturesCore = true; + this.supportsAreaLights = true; + this.supportsDepthShadow = true; + this.supportsGpuParticles = true; + this.supportsMrt = true; + this.supportsCompute = true; + this.extUintElement = true; + this.extTextureFloat = true; + this.textureFloatRenderable = true; + this.textureHalfFloatFilterable = true; + this.extTextureHalfFloat = true; + this.textureHalfFloatRenderable = true; + this.textureHalfFloatUpdatable = true; + this.boneLimit = 1024; + this.supportsImageBitmap = true; + this.extStandardDerivatives = true; + this.extBlendMinmax = true; + this.areaLightLutFormat = this.textureFloatFilterable ? PIXELFORMAT_RGBA32F : PIXELFORMAT_RGBA8; + this.supportsTextureFetch = true; + this.samples = this.backBufferAntialias ? 4 : 1; + const wgslFeatures = navigator.gpu.wgslLanguageFeatures; + this.supportsStorageTextureRead = wgslFeatures == null ? void 0 : wgslFeatures.has("readonly_and_readwrite_storage_textures"); + } + async initWebGpu(glslangUrl, twgslUrl) { + var _this$gpuAdapter, _this$wgpu$lost; + if (!window.navigator.gpu) { + throw new Error("Unable to retrieve GPU. Ensure you are using a browser that supports WebGPU rendering."); + } + const buildUrl = (srcPath) => { + return new URL(srcPath, window.location.href).toString(); + }; + const results = await Promise.all([import( + /* @vite-ignore */ + /* webpackIgnore: true */ + `${buildUrl(twgslUrl)}` + ).then((module) => twgsl(twgslUrl.replace(".js", ".wasm"))), import( + /* @vite-ignore */ + /* webpackIgnore: true */ + `${buildUrl(glslangUrl)}` + ).then((module) => module.default())]); + this.twgsl = results[0]; + this.glslang = results[1]; + const adapterOptions = { + powerPreference: this.initOptions.powerPreference !== "default" ? this.initOptions.powerPreference : void 0 + }; + this.gpuAdapter = await window.navigator.gpu.requestAdapter(adapterOptions); + const requiredFeatures = []; + const requireFeature = (feature) => { + const supported = this.gpuAdapter.features.has(feature); + if (supported) { + requiredFeatures.push(feature); + } + return supported; + }; + this.textureFloatFilterable = requireFeature("float32-filterable"); + this.extCompressedTextureS3TC = requireFeature("texture-compression-bc"); + this.extCompressedTextureETC = requireFeature("texture-compression-etc2"); + this.extCompressedTextureASTC = requireFeature("texture-compression-astc"); + this.supportsTimestampQuery = requireFeature("timestamp-query"); + this.supportsDepthClip = requireFeature("depth-clip-control"); + this.supportsDepth32Stencil = requireFeature("depth32float-stencil8"); + this.supportsIndirectFirstInstance = requireFeature("indirect-first-instance"); + this.supportsShaderF16 = requireFeature("shader-f16"); + this.supportsStorageRGBA8 = requireFeature("bgra8unorm-storage"); + this.textureRG11B10Renderable = requireFeature("rg11b10ufloat-renderable"); + const adapterLimits = (_this$gpuAdapter = this.gpuAdapter) == null ? void 0 : _this$gpuAdapter.limits; + const requiredLimits = {}; + if (adapterLimits) { + for (const limitName in adapterLimits) { + if (limitName === "minSubgroupSize" || limitName === "maxSubgroupSize") { + continue; + } + requiredLimits[limitName] = adapterLimits[limitName]; + } + } + const deviceDescr = { + requiredFeatures, + requiredLimits, + defaultQueue: { + label: "Default Queue" + } + }; + this.wgpu = await this.gpuAdapter.requestDevice(deviceDescr); + (_this$wgpu$lost = this.wgpu.lost) == null || _this$wgpu$lost.then((info) => { + if (info.reason !== "destroyed") ; + }); + this.initDeviceCaps(); + this.gpuContext = this.canvas.getContext("webgpu"); + const preferredCanvasFormat = navigator.gpu.getPreferredCanvasFormat(); + this.backBufferFormat = preferredCanvasFormat === "rgba8unorm" ? PIXELFORMAT_RGBA8 : PIXELFORMAT_BGRA8; + this.canvasConfig = { + device: this.wgpu, + colorSpace: "srgb", + alphaMode: this.initOptions.alpha ? "premultiplied" : "opaque", + format: preferredCanvasFormat, + usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST, + viewFormats: [] + }; + this.gpuContext.configure(this.canvasConfig); + this.createBackbuffer(); + this.clearRenderer = new WebgpuClearRenderer(this); + this.mipmapRenderer = new WebgpuMipmapRenderer(this); + this.resolver = new WebgpuResolver(this); + this.postInit(); + return this; + } + postInit() { + super.postInit(); + this.initializeRenderState(); + this.setupPassEncoderDefaults(); + this.gpuProfiler = new WebgpuGpuProfiler(this); + this.dynamicBuffers = new WebgpuDynamicBuffers(this, 1024 * 1024, this.limits.minUniformBufferOffsetAlignment); + } + createBackbuffer() { + this.supportsStencil = this.initOptions.stencil; + this.backBuffer = new RenderTarget({ + name: "WebgpuFramebuffer", + graphicsDevice: this, + depth: this.initOptions.depth, + stencil: this.supportsStencil, + samples: this.samples + }); + } + frameStart() { + super.frameStart(); + this.gpuProfiler.frameStart(); + this.submit(); + const outColorBuffer = this.gpuContext.getCurrentTexture(); + if (this.backBufferSize.x !== outColorBuffer.width || this.backBufferSize.y !== outColorBuffer.height) { + this.backBufferSize.set(outColorBuffer.width, outColorBuffer.height); + this.backBuffer.destroy(); + this.backBuffer = null; + this.createBackbuffer(); + } + const rt = this.backBuffer; + const wrt = rt.impl; + wrt.setColorAttachment(0, void 0, outColorBuffer.format); + this.initRenderTarget(rt); + wrt.assignColorTexture(outColorBuffer); + } + frameEnd() { + super.frameEnd(); + this.gpuProfiler.frameEnd(); + this.submit(); + if (!this.contextLost) { + this.gpuProfiler.request(); + } + } + createBufferImpl(usageFlags) { + return new WebgpuBuffer(usageFlags); + } + createUniformBufferImpl(uniformBuffer) { + return new WebgpuUniformBuffer(uniformBuffer); + } + createVertexBufferImpl(vertexBuffer, format, options) { + return new WebgpuVertexBuffer(vertexBuffer, format, options); + } + createIndexBufferImpl(indexBuffer, options) { + return new WebgpuIndexBuffer(indexBuffer, options); + } + createShaderImpl(shader) { + return new WebgpuShader(shader); + } + createTextureImpl(texture) { + return new WebgpuTexture(texture); + } + createRenderTargetImpl(renderTarget) { + return new WebgpuRenderTarget(renderTarget); + } + createBindGroupFormatImpl(bindGroupFormat) { + return new WebgpuBindGroupFormat(bindGroupFormat); + } + createBindGroupImpl(bindGroup) { + return new WebgpuBindGroup(); + } + createComputeImpl(compute) { + return new WebgpuCompute(compute); + } + setBindGroup(index, bindGroup) { + if (this.passEncoder) { + this.passEncoder.setBindGroup(index, bindGroup.impl.bindGroup, bindGroup.uniformBufferOffsets); + this.bindGroupFormats[index] = bindGroup.format.impl; + } + } + submitVertexBuffer(vertexBuffer, slot) { + const format = vertexBuffer.format; + const { + interleaved, + elements + } = format; + const elementCount = elements.length; + const vbBuffer = vertexBuffer.impl.buffer; + if (interleaved) { + this.passEncoder.setVertexBuffer(slot, vbBuffer); + return 1; + } + for (let i = 0; i < elementCount; i++) { + this.passEncoder.setVertexBuffer(slot + i, vbBuffer, elements[i].offset); + } + return elementCount; + } + validateVBLocations(vb0, vb1) { + const validateVB = (vb) => { + const { + elements + } = vb.format; + for (let i = 0; i < elements.length; i++) { + const name = elements[i].name; + const location = semanticToLocation[name]; + if (_uniqueLocations.has(location)) ; + _uniqueLocations.set(location, name); + } + }; + validateVB(vb0); + validateVB(vb1); + _uniqueLocations.clear(); + } + draw(primitive2, numInstances = 1, keepBuffers) { + if (this.shader.ready && !this.shader.failed) { + const passEncoder = this.passEncoder; + const vb0 = this.vertexBuffers[0]; + const vb1 = this.vertexBuffers[1]; + this.vertexBuffers.length = 0; + if (vb0) { + const vbSlot = this.submitVertexBuffer(vb0, 0); + if (vb1) { + this.submitVertexBuffer(vb1, vbSlot); + } + } + const pipeline = this.renderPipeline.get(primitive2, vb0 == null ? void 0 : vb0.format, vb1 == null ? void 0 : vb1.format, this.shader, this.renderTarget, this.bindGroupFormats, this.blendState, this.depthState, this.cullMode, this.stencilEnabled, this.stencilFront, this.stencilBack); + if (this.pipeline !== pipeline) { + this.pipeline = pipeline; + passEncoder.setPipeline(pipeline); + } + const ib = this.indexBuffer; + if (ib) { + this.indexBuffer = null; + passEncoder.setIndexBuffer(ib.impl.buffer, ib.impl.format); + passEncoder.drawIndexed(primitive2.count, numInstances, primitive2.base, 0, 0); + } else { + passEncoder.draw(primitive2.count, numInstances, primitive2.base, 0); + } + } + } + setShader(shader, asyncCompile = false) { + if (shader !== this.shader) { + this.shader = shader; + } + } + setBlendState(blendState) { + this.blendState.copy(blendState); + } + setDepthState(depthState) { + this.depthState.copy(depthState); + } + setStencilState(stencilFront, stencilBack) { + if (stencilFront || stencilBack) { + this.stencilEnabled = true; + this.stencilFront.copy(stencilFront != null ? stencilFront : StencilParameters.DEFAULT); + this.stencilBack.copy(stencilBack != null ? stencilBack : StencilParameters.DEFAULT); + const ref = this.stencilFront.ref; + if (this.stencilRef !== ref) { + this.stencilRef = ref; + this.passEncoder.setStencilReference(ref); + } + } else { + this.stencilEnabled = false; + } + } + setBlendColor(r, g, b, a) { + const c2 = this.blendColor; + if (r !== c2.r || g !== c2.g || b !== c2.b || a !== c2.a) { + c2.set(r, g, b, a); + this.passEncoder.setBlendConstant(c2); + } + } + setCullMode(cullMode) { + this.cullMode = cullMode; + } + setAlphaToCoverage(state) { + } + initializeContextCaches() { + super.initializeContextCaches(); + } + setupPassEncoderDefaults() { + this.pipeline = null; + this.stencilRef = 0; + this.blendColor.set(0, 0, 0, 0); + } + _uploadDirtyTextures() { + this.textures.forEach((texture) => { + if (texture._needsUpload || texture._needsMipmaps) { + texture.upload(); + } + }); + } + startRenderPass(renderPass) { + this._uploadDirtyTextures(); + const rt = renderPass.renderTarget || this.backBuffer; + this.renderTarget = rt; + const wrt = rt.impl; + this.commandEncoder = this.wgpu.createCommandEncoder(); + if (rt !== this.backBuffer) { + this.initRenderTarget(rt); + } + wrt.setupForRenderPass(renderPass); + const renderPassDesc = wrt.renderPassDescriptor; + if (this.gpuProfiler._enabled) { + if (this.gpuProfiler.timestampQueriesSet) { + const slot = this.gpuProfiler.getSlot(renderPass.name); + renderPassDesc.timestampWrites = { + querySet: this.gpuProfiler.timestampQueriesSet.querySet, + beginningOfPassWriteIndex: slot * 2, + endOfPassWriteIndex: slot * 2 + 1 + }; + } + } + this.passEncoder = this.commandEncoder.beginRenderPass(renderPassDesc); + this.setupPassEncoderDefaults(); + const { + width, + height + } = rt; + this.setViewport(0, 0, width, height); + this.setScissor(0, 0, width, height); + this.insideRenderPass = true; + } + endRenderPass(renderPass) { + this.passEncoder.end(); + this.passEncoder = null; + this.insideRenderPass = false; + this.bindGroupFormats.length = 0; + for (let i = 0; i < renderPass.colorArrayOps.length; i++) { + const colorOps = renderPass.colorArrayOps[i]; + if (colorOps.mipmaps) { + this.mipmapRenderer.generate(renderPass.renderTarget._colorBuffers[i].impl); + } + } + const cb = this.commandEncoder.finish(); + this.addCommandBuffer(cb); + this.commandEncoder = null; + } + startComputePass() { + this.commandEncoder = this.wgpu.createCommandEncoder(); + this.pipeline = null; + this.passEncoder = this.commandEncoder.beginComputePass(); + this.insideRenderPass = true; + } + endComputePass() { + this.passEncoder.end(); + this.passEncoder = null; + this.insideRenderPass = false; + this.bindGroupFormats.length = 0; + const cb = this.commandEncoder.finish(); + this.addCommandBuffer(cb); + this.commandEncoder = null; + } + computeDispatch(computes) { + this.startComputePass(); + for (let i = 0; i < computes.length; i++) { + const compute = computes[i]; + compute.applyParameters(); + compute.impl.updateBindGroup(); + } + for (let i = 0; i < computes.length; i++) { + const compute = computes[i]; + compute.impl.dispatch(compute.countX, compute.countY, compute.countZ); + } + this.endComputePass(); + } + addCommandBuffer(commandBuffer, front = false) { + if (front) { + this.commandBuffers.unshift(commandBuffer); + } else { + this.commandBuffers.push(commandBuffer); + } + } + submit() { + if (this.commandBuffers.length > 0) { + this.dynamicBuffers.submit(); + this.wgpu.queue.submit(this.commandBuffers); + this.commandBuffers.length = 0; + this.dynamicBuffers.onCommandBuffersSubmitted(); + } + } + clear(options) { + if (options.flags) { + this.clearRenderer.clear(this, this.renderTarget, options, this.defaultClearOptions); + } + } + setViewport(x2, y2, w, h) { + if (this.passEncoder) { + if (!this.renderTarget.flipY) { + y2 = this.renderTarget.height - y2 - h; + } + this.vx = x2; + this.vy = y2; + this.vw = w; + this.vh = h; + this.passEncoder.setViewport(x2, y2, w, h, 0, 1); + } + } + setScissor(x2, y2, w, h) { + if (this.passEncoder) { + if (!this.renderTarget.flipY) { + y2 = this.renderTarget.height - y2 - h; + } + this.sx = x2; + this.sy = y2; + this.sw = w; + this.sh = h; + this.passEncoder.setScissorRect(x2, y2, w, h); + } + } + clearStorageBuffer(storageBuffer, offset = 0, size = storageBuffer.byteSize) { + var _this$commandEncoder; + const commandEncoder = (_this$commandEncoder = this.commandEncoder) != null ? _this$commandEncoder : this.wgpu.createCommandEncoder(); + commandEncoder.clearBuffer(storageBuffer.buffer, offset, size); + if (!this.commandEncoder) { + const cb = commandEncoder.finish(); + this.addCommandBuffer(cb); + } + } + readStorageBuffer(storageBuffer, offset = 0, size = storageBuffer.byteSize - offset, data2 = null, immediate = false) { + var _this$commandEncoder2; + const stagingBuffer = this.createBufferImpl(BUFFERUSAGE_READ | BUFFERUSAGE_COPY_DST); + stagingBuffer.allocate(this, size); + const destBuffer = stagingBuffer.buffer; + const commandEncoder = (_this$commandEncoder2 = this.commandEncoder) != null ? _this$commandEncoder2 : this.wgpu.createCommandEncoder(); + commandEncoder.copyBufferToBuffer(storageBuffer.buffer, offset, destBuffer, 0, size); + if (!this.commandEncoder) { + const cb = commandEncoder.finish(); + this.addCommandBuffer(cb); + } + return new Promise((resolve, reject) => { + const read = () => { + destBuffer == null || destBuffer.mapAsync(GPUMapMode.READ).then(() => { + var _data; + (_data = data2) != null ? _data : data2 = new Uint8Array(size); + const copySrc = destBuffer.getMappedRange(0, size); + const srcType = data2.constructor; + data2.set(new srcType(copySrc)); + destBuffer.unmap(); + stagingBuffer.destroy(this); + resolve(data2); + }); + }; + if (immediate) { + this.submit(); + read(); + } else { + setTimeout(() => { + read(); + }); + } + }); + } + writeStorageBuffer(storageBuffer, bufferOffset = 0, data2, dataOffset = 0, size) { + this.wgpu.queue.writeBuffer(storageBuffer.buffer, bufferOffset, data2, dataOffset, size); + } + copyRenderTarget(source, dest, color, depth) { + var _this$commandEncoder3; + const copySize = { + width: source ? source.width : dest.width, + height: source ? source.height : dest.height, + depthOrArrayLayers: 1 + }; + const commandEncoder = (_this$commandEncoder3 = this.commandEncoder) != null ? _this$commandEncoder3 : this.wgpu.createCommandEncoder(); + if (color) { + const copySrc = { + texture: source ? source.colorBuffer.impl.gpuTexture : this.renderTarget.impl.assignedColorTexture, + mipLevel: 0 + }; + const copyDst = { + texture: dest ? dest.colorBuffer.impl.gpuTexture : this.renderTarget.impl.assignedColorTexture, + mipLevel: 0 + }; + commandEncoder.copyTextureToTexture(copySrc, copyDst, copySize); + } + if (depth) { + const sourceRT = source ? source : this.renderTarget; + const sourceTexture = sourceRT.impl.depthTexture; + if (source.samples > 1) { + const destTexture = dest.colorBuffer.impl.gpuTexture; + this.resolver.resolveDepth(commandEncoder, sourceTexture, destTexture); + } else { + const destTexture = dest ? dest.depthBuffer.impl.gpuTexture : this.renderTarget.impl.depthTexture; + const copySrc = { + texture: sourceTexture, + mipLevel: 0 + }; + const copyDst = { + texture: destTexture, + mipLevel: 0 + }; + commandEncoder.copyTextureToTexture(copySrc, copyDst, copySize); + } + } + if (!this.commandEncoder) { + const cb = commandEncoder.finish(); + this.addCommandBuffer(cb); + } + return true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/texture.js +var id6 = 0; +var Texture = class { + constructor(graphicsDevice, options = {}) { + var _options$name, _options$width, _options$height, _options$format, _options$storage, _options$cubemap, _options$fixCubemapSe, _options$flipY, _options$premultiplyA, _ref4, _options$mipmaps, _options$minFilter, _options$magFilter, _options$anisotropy, _options$addressU, _options$addressV, _options$addressW, _options$compareOnRea, _options$compareFunc; + this.name = void 0; + this._gpuSize = 0; + this.id = id6++; + this._invalid = false; + this._lockedLevel = -1; + this._lockedMode = TEXTURELOCK_NONE; + this.renderVersionDirty = 0; + this._storage = false; + this.device = graphicsDevice; + this.name = (_options$name = options.name) != null ? _options$name : ""; + this._width = Math.floor((_options$width = options.width) != null ? _options$width : 4); + this._height = Math.floor((_options$height = options.height) != null ? _options$height : 4); + this._format = (_options$format = options.format) != null ? _options$format : PIXELFORMAT_RGBA8; + this._compressed = isCompressedPixelFormat(this._format); + this._integerFormat = isIntegerPixelFormat(this._format); + if (this._integerFormat) { + options.mipmaps = false; + options.minFilter = FILTER_NEAREST; + options.magFilter = FILTER_NEAREST; + } + if (graphicsDevice.supportsVolumeTextures) { + var _options$volume, _options$depth, _options$arrayLength; + this._volume = (_options$volume = options.volume) != null ? _options$volume : false; + this._depth = Math.floor((_options$depth = options.depth) != null ? _options$depth : 1); + this._arrayLength = Math.floor((_options$arrayLength = options.arrayLength) != null ? _options$arrayLength : 0); + } else { + this._volume = false; + this._depth = 1; + this._arrayLength = 0; + } + this._storage = (_options$storage = options.storage) != null ? _options$storage : false; + this._cubemap = (_options$cubemap = options.cubemap) != null ? _options$cubemap : false; + this.fixCubemapSeams = (_options$fixCubemapSe = options.fixCubemapSeams) != null ? _options$fixCubemapSe : false; + this._flipY = (_options$flipY = options.flipY) != null ? _options$flipY : false; + this._premultiplyAlpha = (_options$premultiplyA = options.premultiplyAlpha) != null ? _options$premultiplyA : false; + this._mipmaps = (_ref4 = (_options$mipmaps = options.mipmaps) != null ? _options$mipmaps : options.autoMipmap) != null ? _ref4 : true; + this._minFilter = (_options$minFilter = options.minFilter) != null ? _options$minFilter : FILTER_LINEAR_MIPMAP_LINEAR; + this._magFilter = (_options$magFilter = options.magFilter) != null ? _options$magFilter : FILTER_LINEAR; + this._anisotropy = (_options$anisotropy = options.anisotropy) != null ? _options$anisotropy : 1; + this._addressU = (_options$addressU = options.addressU) != null ? _options$addressU : ADDRESS_REPEAT; + this._addressV = (_options$addressV = options.addressV) != null ? _options$addressV : ADDRESS_REPEAT; + this._addressW = (_options$addressW = options.addressW) != null ? _options$addressW : ADDRESS_REPEAT; + this._compareOnRead = (_options$compareOnRea = options.compareOnRead) != null ? _options$compareOnRea : false; + this._compareFunc = (_options$compareFunc = options.compareFunc) != null ? _options$compareFunc : FUNC_LESS; + this.type = TEXTURETYPE_DEFAULT; + if (options.hasOwnProperty("type")) { + this.type = options.type; + } else if (options.hasOwnProperty("rgbm")) { + this.type = options.rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT; + } else if (options.hasOwnProperty("swizzleGGGR")) { + this.type = options.swizzleGGGR ? TEXTURETYPE_SWIZZLEGGGR : TEXTURETYPE_DEFAULT; + } + this.projection = TEXTUREPROJECTION_NONE; + if (this._cubemap) { + this.projection = TEXTUREPROJECTION_CUBE; + } else if (options.projection && options.projection !== TEXTUREPROJECTION_CUBE) { + this.projection = options.projection; + } + this.impl = graphicsDevice.createTextureImpl(this); + this.dirtyAll(); + this._levels = options.levels; + if (this._levels) { + this.upload(); + } else { + this._levels = this._cubemap ? [[null, null, null, null, null, null]] : [null]; + } + graphicsDevice.textures.push(this); + } + destroy() { + const device = this.device; + if (device) { + const idx = device.textures.indexOf(this); + if (idx !== -1) { + device.textures.splice(idx, 1); + } + device.scope.removeValue(this); + this.impl.destroy(device); + this.adjustVramSizeTracking(device._vram, -this._gpuSize); + this._levels = null; + this.device = null; + } + } + resize(width, height, depth = 1) { + const device = this.device; + this.adjustVramSizeTracking(device._vram, -this._gpuSize); + this.impl.destroy(device); + this._width = Math.floor(width); + this._height = Math.floor(height); + this._depth = Math.floor(depth); + this.impl = device.createTextureImpl(this); + this.dirtyAll(); + } + loseContext() { + this.impl.loseContext(); + this.dirtyAll(); + } + adjustVramSizeTracking(vram, size) { + vram.tex += size; + } + propertyChanged(flag) { + this.impl.propertyChanged(flag); + this.renderVersionDirty = this.device.renderVersion; + } + get requiredMipLevels() { + return this.mipmaps ? TextureUtils.calcMipLevelsCount(this.width, this.height) : 1; + } + get lockedMode() { + return this._lockedMode; + } + set minFilter(v) { + if (this._minFilter !== v) { + if (isIntegerPixelFormat(this._format)) ; + else { + this._minFilter = v; + this.propertyChanged(1); + } + } + } + get minFilter() { + return this._minFilter; + } + set magFilter(v) { + if (this._magFilter !== v) { + if (isIntegerPixelFormat(this._format)) ; + else { + this._magFilter = v; + this.propertyChanged(2); + } + } + } + get magFilter() { + return this._magFilter; + } + set addressU(v) { + if (this._addressU !== v) { + this._addressU = v; + this.propertyChanged(4); + } + } + get addressU() { + return this._addressU; + } + set addressV(v) { + if (this._addressV !== v) { + this._addressV = v; + this.propertyChanged(8); + } + } + get addressV() { + return this._addressV; + } + set addressW(addressW) { + if (!this.device.supportsVolumeTextures) return; + if (!this._volume) { + return; + } + if (addressW !== this._addressW) { + this._addressW = addressW; + this.propertyChanged(16); + } + } + get addressW() { + return this._addressW; + } + set compareOnRead(v) { + if (this._compareOnRead !== v) { + this._compareOnRead = v; + this.propertyChanged(32); + } + } + get compareOnRead() { + return this._compareOnRead; + } + set compareFunc(v) { + if (this._compareFunc !== v) { + this._compareFunc = v; + this.propertyChanged(64); + } + } + get compareFunc() { + return this._compareFunc; + } + set anisotropy(v) { + if (this._anisotropy !== v) { + this._anisotropy = v; + this.propertyChanged(128); + } + } + get anisotropy() { + return this._anisotropy; + } + set mipmaps(v) { + if (this._mipmaps !== v) { + if (this.device.isWebGPU) ; + else if (isIntegerPixelFormat(this._format)) ; + else { + this._mipmaps = v; + } + if (v) this._needsMipmapsUpload = true; + } + } + get mipmaps() { + return this._mipmaps; + } + get storage() { + return this._storage; + } + get width() { + return this._width; + } + get height() { + return this._height; + } + get depth() { + return this._depth; + } + get format() { + return this._format; + } + get cubemap() { + return this._cubemap; + } + get gpuSize() { + const mips = this.pot && this._mipmaps && !(this._compressed && this._levels.length === 1); + return TextureUtils.calcGpuSize(this._width, this._height, this._depth, this._format, mips, this._cubemap); + } + get array() { + return this._arrayLength > 0; + } + get arrayLength() { + return this._arrayLength; + } + get volume() { + return this._volume; + } + set flipY(flipY) { + if (this._flipY !== flipY) { + this._flipY = flipY; + this._needsUpload = true; + } + } + get flipY() { + return this._flipY; + } + set premultiplyAlpha(premultiplyAlpha) { + if (this._premultiplyAlpha !== premultiplyAlpha) { + this._premultiplyAlpha = premultiplyAlpha; + this._needsUpload = true; + } + } + get premultiplyAlpha() { + return this._premultiplyAlpha; + } + get pot() { + return math.powerOfTwo(this._width) && math.powerOfTwo(this._height); + } + get encoding() { + switch (this.type) { + case TEXTURETYPE_RGBM: + return "rgbm"; + case TEXTURETYPE_RGBE: + return "rgbe"; + case TEXTURETYPE_RGBP: + return "rgbp"; + default: + return this.format === PIXELFORMAT_RGB16F || this.format === PIXELFORMAT_RGB32F || this.format === PIXELFORMAT_RGBA16F || this.format === PIXELFORMAT_RGBA32F || isIntegerPixelFormat(this.format) ? "linear" : "srgb"; + } + } + dirtyAll() { + this._levelsUpdated = this._cubemap ? [[true, true, true, true, true, true]] : [true]; + this._needsUpload = true; + this._needsMipmapsUpload = this._mipmaps; + this._mipmapsUploaded = false; + this.propertyChanged(255); + } + lock(options = {}) { + var _options$level, _options$face, _options$mode; + (_options$level = options.level) != null ? _options$level : options.level = 0; + (_options$face = options.face) != null ? _options$face : options.face = 0; + (_options$mode = options.mode) != null ? _options$mode : options.mode = TEXTURELOCK_WRITE; + this._lockedMode = options.mode; + this._lockedLevel = options.level; + const levels = this.cubemap ? this._levels[options.face] : this._levels; + if (levels[options.level] === null) { + const width = Math.max(1, this._width >> options.level); + const height = Math.max(1, this._height >> options.level); + const depth = Math.max(1, this._depth >> options.level); + const data2 = new ArrayBuffer(TextureUtils.calcLevelGpuSize(width, height, depth, this._format)); + levels[options.level] = new (getPixelFormatArrayType(this._format))(data2); + } + return levels[options.level]; + } + setSource(source, mipLevel = 0) { + let invalid = false; + let width, height; + if (this._cubemap) { + if (source[0]) { + width = source[0].width || 0; + height = source[0].height || 0; + for (let i = 0; i < 6; i++) { + const face = source[i]; + if (!face || face.width !== width || face.height !== height || !this.device._isBrowserInterface(face)) { + invalid = true; + break; + } + } + } else { + invalid = true; + } + if (!invalid) { + for (let i = 0; i < 6; i++) { + if (this._levels[mipLevel][i] !== source[i]) this._levelsUpdated[mipLevel][i] = true; + } + } + } else { + if (!this.device._isBrowserInterface(source)) invalid = true; + if (!invalid) { + if (source !== this._levels[mipLevel]) this._levelsUpdated[mipLevel] = true; + width = source.width; + height = source.height; + } + } + if (invalid) { + this._width = 4; + this._height = 4; + if (this._cubemap) { + for (let i = 0; i < 6; i++) { + this._levels[mipLevel][i] = null; + this._levelsUpdated[mipLevel][i] = true; + } + } else { + this._levels[mipLevel] = null; + this._levelsUpdated[mipLevel] = true; + } + } else { + if (mipLevel === 0) { + this._width = width; + this._height = height; + } + this._levels[mipLevel] = source; + } + if (this._invalid !== invalid || !invalid) { + this._invalid = invalid; + this.upload(); + } + } + getSource(mipLevel = 0) { + return this._levels[mipLevel]; + } + unlock() { + if (this._lockedMode === TEXTURELOCK_NONE) ; + if (this._lockedMode === TEXTURELOCK_WRITE) { + this.upload(); + } + this._lockedLevel = -1; + this._lockedMode = TEXTURELOCK_NONE; + } + upload() { + var _this$impl$uploadImme, _this$impl; + this._needsUpload = true; + this._needsMipmapsUpload = this._mipmaps; + (_this$impl$uploadImme = (_this$impl = this.impl).uploadImmediate) == null || _this$impl$uploadImme.call(_this$impl, this.device, this); + } + async downloadAsync() { + const promises = []; + for (let i = 0; i < (this.cubemap ? 6 : 1); i++) { + var _this$device$readPixe, _this$device; + const renderTarget = new RenderTarget({ + colorBuffer: this, + depth: false, + face: i + }); + this.device.setRenderTarget(renderTarget); + this.device.initRenderTarget(renderTarget); + const levels = this.cubemap ? this._levels[i] : this._levels; + let level = levels[0]; + if (levels[0] && this.device._isBrowserInterface(levels[0])) { + levels[0] = null; + } + level = this.lock({ + face: i + }); + const promise = (_this$device$readPixe = (_this$device = this.device).readPixelsAsync) == null ? void 0 : _this$device$readPixe.call(_this$device, 0, 0, this.width, this.height, level).then(() => renderTarget.destroy()); + promises.push(promise); + } + await Promise.all(promises); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-buffer.js +var WebglBuffer = class { + constructor() { + this.bufferId = null; + } + destroy(device) { + if (this.bufferId) { + device.gl.deleteBuffer(this.bufferId); + this.bufferId = null; + } + } + get initialized() { + return !!this.bufferId; + } + loseContext() { + this.bufferId = null; + } + unlock(device, usage, target2, storage) { + const gl = device.gl; + if (!this.bufferId) { + let glUsage; + switch (usage) { + case BUFFER_STATIC: + glUsage = gl.STATIC_DRAW; + break; + case BUFFER_DYNAMIC: + glUsage = gl.DYNAMIC_DRAW; + break; + case BUFFER_STREAM: + glUsage = gl.STREAM_DRAW; + break; + case BUFFER_GPUDYNAMIC: + glUsage = device.isWebGL2 ? gl.DYNAMIC_COPY : gl.STATIC_DRAW; + break; + } + this.bufferId = gl.createBuffer(); + gl.bindBuffer(target2, this.bufferId); + gl.bufferData(target2, storage, glUsage); + } else { + gl.bindBuffer(target2, this.bufferId); + gl.bufferSubData(target2, 0, storage); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-vertex-buffer.js +var WebglVertexBuffer = class extends WebglBuffer { + constructor(...args) { + super(...args); + this.vao = null; + } + destroy(device) { + super.destroy(device); + device.unbindVertexArray(); + } + loseContext() { + super.loseContext(); + this.vao = null; + } + unlock(vertexBuffer) { + const device = vertexBuffer.device; + super.unlock(device, vertexBuffer.usage, device.gl.ARRAY_BUFFER, vertexBuffer.storage); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-index-buffer.js +var WebglIndexBuffer = class extends WebglBuffer { + constructor(indexBuffer) { + super(); + const gl = indexBuffer.device.gl; + const format = indexBuffer.format; + if (format === INDEXFORMAT_UINT8) { + this.glFormat = gl.UNSIGNED_BYTE; + } else if (format === INDEXFORMAT_UINT16) { + this.glFormat = gl.UNSIGNED_SHORT; + } else if (format === INDEXFORMAT_UINT32) { + this.glFormat = gl.UNSIGNED_INT; + } + } + unlock(indexBuffer) { + const device = indexBuffer.device; + super.unlock(device, indexBuffer.usage, device.gl.ELEMENT_ARRAY_BUFFER, indexBuffer.storage); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-shader-input.js +var WebglShaderInput = class { + constructor(graphicsDevice, name, type2, locationId) { + this.locationId = locationId; + this.scopeId = graphicsDevice.scope.resolve(name); + this.version = new Version(); + if (name.substring(name.length - 3) === "[0]") { + switch (type2) { + case UNIFORMTYPE_FLOAT: + type2 = UNIFORMTYPE_FLOATARRAY; + break; + case UNIFORMTYPE_INT: + type2 = UNIFORMTYPE_INTARRAY; + break; + case UNIFORMTYPE_UINT: + type2 = UNIFORMTYPE_UINTARRAY; + break; + case UNIFORMTYPE_BOOL: + type2 = UNIFORMTYPE_BOOLARRAY; + break; + case UNIFORMTYPE_VEC2: + type2 = UNIFORMTYPE_VEC2ARRAY; + break; + case UNIFORMTYPE_IVEC2: + type2 = UNIFORMTYPE_IVEC2ARRAY; + break; + case UNIFORMTYPE_UVEC2: + type2 = UNIFORMTYPE_UVEC2ARRAY; + break; + case UNIFORMTYPE_BVEC2: + type2 = UNIFORMTYPE_BVEC2ARRAY; + break; + case UNIFORMTYPE_VEC3: + type2 = UNIFORMTYPE_VEC3ARRAY; + break; + case UNIFORMTYPE_IVEC3: + type2 = UNIFORMTYPE_IVEC3ARRAY; + break; + case UNIFORMTYPE_UVEC3: + type2 = UNIFORMTYPE_UVEC3ARRAY; + break; + case UNIFORMTYPE_BVEC3: + type2 = UNIFORMTYPE_BVEC3ARRAY; + break; + case UNIFORMTYPE_VEC4: + type2 = UNIFORMTYPE_VEC4ARRAY; + break; + case UNIFORMTYPE_IVEC4: + type2 = UNIFORMTYPE_IVEC4ARRAY; + break; + case UNIFORMTYPE_UVEC4: + type2 = UNIFORMTYPE_UVEC4ARRAY; + break; + case UNIFORMTYPE_BVEC4: + type2 = UNIFORMTYPE_BVEC4ARRAY; + break; + } + } + this.dataType = type2; + this.value = [null, null, null, null]; + this.array = []; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-shader.js +var _vertexShaderBuiltins = /* @__PURE__ */ new Set(["gl_VertexID", "gl_InstanceID", "gl_DrawID", "gl_BaseVertex", "gl_BaseInstance"]); +var CompiledShaderCache = class { + constructor() { + this.map = /* @__PURE__ */ new Map(); + } + destroy(device) { + this.map.forEach((shader) => { + device.gl.deleteShader(shader); + }); + } + loseContext(device) { + this.map.clear(); + } +}; +var _vertexShaderCache = new DeviceCache(); +var _fragmentShaderCache = new DeviceCache(); +var WebglShader = class { + constructor(shader) { + this.compileDuration = 0; + this.init(); + this.compile(shader.device, shader); + this.link(shader.device, shader); + shader.device.shaders.push(shader); + } + destroy(shader) { + if (this.glProgram) { + shader.device.gl.deleteProgram(this.glProgram); + this.glProgram = null; + } + } + init() { + this.uniforms = []; + this.samplers = []; + this.attributes = []; + this.glProgram = null; + this.glVertexShader = null; + this.glFragmentShader = null; + } + loseContext() { + this.init(); + } + restoreContext(device, shader) { + this.compile(device, shader); + this.link(device, shader); + } + compile(device, shader) { + const definition = shader.definition; + this.glVertexShader = this._compileShaderSource(device, definition.vshader, true); + this.glFragmentShader = this._compileShaderSource(device, definition.fshader, false); + } + link(device, shader) { + if (this.glProgram) return; + const gl = device.gl; + if (gl.isContextLost()) { + return; + } + const glProgram = gl.createProgram(); + this.glProgram = glProgram; + gl.attachShader(glProgram, this.glVertexShader); + gl.attachShader(glProgram, this.glFragmentShader); + const definition = shader.definition; + const attrs = definition.attributes; + if (device.isWebGL2 && definition.useTransformFeedback) { + const outNames = []; + for (const attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + outNames.push("out_" + attr); + } + } + gl.transformFeedbackVaryings(glProgram, outNames, gl.INTERLEAVED_ATTRIBS); + } + for (const attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + const semantic = attrs[attr]; + const loc = semanticToLocation[semantic]; + gl.bindAttribLocation(glProgram, loc, attr); + } + } + gl.linkProgram(glProgram); + } + _compileShaderSource(device, src, isVertexShader) { + const gl = device.gl; + const shaderDeviceCache = isVertexShader ? _vertexShaderCache : _fragmentShaderCache; + const shaderCache = shaderDeviceCache.get(device, () => { + return new CompiledShaderCache(); + }); + let glShader = shaderCache.map.get(src); + if (!glShader) { + glShader = gl.createShader(isVertexShader ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER); + if (!glShader && gl.isContextLost()) { + return glShader; + } + gl.shaderSource(glShader, src); + gl.compileShader(glShader); + shaderCache.map.set(src, glShader); + } + return glShader; + } + finalize(device, shader) { + const gl = device.gl; + if (gl.isContextLost()) { + return true; + } + const glProgram = this.glProgram; + const definition = shader.definition; + const linkStatus = gl.getProgramParameter(glProgram, gl.LINK_STATUS); + if (!linkStatus) { + if (!this._isCompiled(device, shader, this.glVertexShader, definition.vshader, "vertex")) return false; + if (!this._isCompiled(device, shader, this.glFragmentShader, definition.fshader, "fragment")) return false; + const message = "Failed to link shader program. Error: " + gl.getProgramInfoLog(glProgram); + console.error(message); + return false; + } + const numAttributes = gl.getProgramParameter(glProgram, gl.ACTIVE_ATTRIBUTES); + for (let i = 0; i < numAttributes; i++) { + const info = gl.getActiveAttrib(glProgram, i); + const location = gl.getAttribLocation(glProgram, info.name); + if (_vertexShaderBuiltins.has(info.name)) continue; + if (definition.attributes[info.name] === void 0) { + console.error(`Vertex shader attribute "${info.name}" is not mapped to a semantic in shader definition, shader [${shader.label}]`, shader); + shader.failed = true; + } else { + const shaderInput = new WebglShaderInput(device, definition.attributes[info.name], device.pcUniformType[info.type], location); + this.attributes.push(shaderInput); + } + } + const samplerTypes2 = device._samplerTypes; + const numUniforms = gl.getProgramParameter(glProgram, gl.ACTIVE_UNIFORMS); + for (let i = 0; i < numUniforms; i++) { + const info = gl.getActiveUniform(glProgram, i); + const location = gl.getUniformLocation(glProgram, info.name); + const shaderInput = new WebglShaderInput(device, info.name, device.pcUniformType[info.type], location); + if (samplerTypes2.has(info.type)) { + this.samplers.push(shaderInput); + } else { + this.uniforms.push(shaderInput); + } + } + shader.ready = true; + return true; + } + _isCompiled(device, shader, glShader, source, shaderType) { + const gl = device.gl; + if (!gl.getShaderParameter(glShader, gl.COMPILE_STATUS)) { + const infoLog = gl.getShaderInfoLog(glShader); + const [code, error] = this._processError(source, infoLog); + const message = `Failed to compile ${shaderType} shader: + +${infoLog} +${code} while rendering ${void 0}`; + console.error(message); + return false; + } + return true; + } + isLinked(device) { + const { + extParallelShaderCompile + } = device; + if (extParallelShaderCompile) { + return device.gl.getProgramParameter(this.glProgram, extParallelShaderCompile.COMPLETION_STATUS_KHR); + } + return true; + } + _processError(src, infoLog) { + const error = {}; + let code = ""; + if (src) { + const lines = src.split("\n"); + let from = 0; + let to = lines.length; + if (infoLog && infoLog.startsWith("ERROR:")) { + const match = infoLog.match(/^ERROR:\s([0-9]+):([0-9]+):\s*(.+)/); + if (match) { + error.message = match[3]; + error.line = parseInt(match[2], 10); + from = Math.max(0, error.line - 6); + to = Math.min(lines.length, error.line + 5); + } + } + for (let i = from; i < to; i++) { + code += i + 1 + ": " + lines[i] + "\n"; + } + error.source = src; + } + return [code, error]; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-texture.js +function downsampleImage(image, size) { + const srcW = image.width; + const srcH = image.height; + if (srcW > size || srcH > size) { + const scale2 = size / Math.max(srcW, srcH); + const dstW = Math.floor(srcW * scale2); + const dstH = Math.floor(srcH * scale2); + const canvas = document.createElement("canvas"); + canvas.width = dstW; + canvas.height = dstH; + const context = canvas.getContext("2d"); + context.drawImage(image, 0, 0, srcW, srcH, 0, 0, dstW, dstH); + return canvas; + } + return image; +} +var WebglTexture = class { + constructor() { + this._glTexture = null; + this._glTarget = void 0; + this._glFormat = void 0; + this._glInternalFormat = void 0; + this._glPixelType = void 0; + this._glCreated = void 0; + this.dirtyParameterFlags = 0; + } + destroy(device) { + if (this._glTexture) { + for (let i = 0; i < device.textureUnits.length; i++) { + const textureUnit = device.textureUnits[i]; + for (let j = 0; j < textureUnit.length; j++) { + if (textureUnit[j] === this._glTexture) { + textureUnit[j] = null; + } + } + } + device.gl.deleteTexture(this._glTexture); + this._glTexture = null; + } + } + loseContext() { + this._glTexture = null; + } + propertyChanged(flag) { + this.dirtyParameterFlags |= flag; + } + initialize(device, texture) { + const gl = device.gl; + this._glTexture = gl.createTexture(); + this._glTarget = texture._cubemap ? gl.TEXTURE_CUBE_MAP : texture._volume ? gl.TEXTURE_3D : texture.array ? gl.TEXTURE_2D_ARRAY : gl.TEXTURE_2D; + switch (texture._format) { + case PIXELFORMAT_A8: + this._glFormat = gl.ALPHA; + this._glInternalFormat = gl.ALPHA; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_L8: + this._glFormat = gl.LUMINANCE; + this._glInternalFormat = gl.LUMINANCE; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_LA8: + this._glFormat = gl.LUMINANCE_ALPHA; + this._glInternalFormat = gl.LUMINANCE_ALPHA; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_RGB565: + this._glFormat = gl.RGB; + this._glInternalFormat = gl.RGB; + this._glPixelType = gl.UNSIGNED_SHORT_5_6_5; + break; + case PIXELFORMAT_RGBA5551: + this._glFormat = gl.RGBA; + this._glInternalFormat = gl.RGBA; + this._glPixelType = gl.UNSIGNED_SHORT_5_5_5_1; + break; + case PIXELFORMAT_RGBA4: + this._glFormat = gl.RGBA; + this._glInternalFormat = gl.RGBA; + this._glPixelType = gl.UNSIGNED_SHORT_4_4_4_4; + break; + case PIXELFORMAT_RGB8: + this._glFormat = gl.RGB; + this._glInternalFormat = device.isWebGL2 ? gl.RGB8 : gl.RGB; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_RGBA8: + this._glFormat = gl.RGBA; + this._glInternalFormat = device.isWebGL2 ? gl.RGBA8 : gl.RGBA; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_DXT1: + this._glFormat = gl.RGB; + this._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT; + break; + case PIXELFORMAT_DXT3: + this._glFormat = gl.RGBA; + this._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT; + break; + case PIXELFORMAT_DXT5: + this._glFormat = gl.RGBA; + this._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT; + break; + case PIXELFORMAT_ETC1: + this._glFormat = gl.RGB; + this._glInternalFormat = device.extCompressedTextureETC1.COMPRESSED_RGB_ETC1_WEBGL; + break; + case PIXELFORMAT_PVRTC_2BPP_RGB_1: + this._glFormat = gl.RGB; + this._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + break; + case PIXELFORMAT_PVRTC_2BPP_RGBA_1: + this._glFormat = gl.RGBA; + this._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + break; + case PIXELFORMAT_PVRTC_4BPP_RGB_1: + this._glFormat = gl.RGB; + this._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + break; + case PIXELFORMAT_PVRTC_4BPP_RGBA_1: + this._glFormat = gl.RGBA; + this._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + break; + case PIXELFORMAT_ETC2_RGB: + this._glFormat = gl.RGB; + this._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_RGB8_ETC2; + break; + case PIXELFORMAT_ETC2_RGBA: + this._glFormat = gl.RGBA; + this._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_RGBA8_ETC2_EAC; + break; + case PIXELFORMAT_ASTC_4x4: + this._glFormat = gl.RGBA; + this._glInternalFormat = device.extCompressedTextureASTC.COMPRESSED_RGBA_ASTC_4x4_KHR; + break; + case PIXELFORMAT_ATC_RGB: + this._glFormat = gl.RGB; + this._glInternalFormat = device.extCompressedTextureATC.COMPRESSED_RGB_ATC_WEBGL; + break; + case PIXELFORMAT_ATC_RGBA: + this._glFormat = gl.RGBA; + this._glInternalFormat = device.extCompressedTextureATC.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL; + break; + case PIXELFORMAT_R16F: + if (device.isWebGL2) { + this._glFormat = gl.RED; + this._glInternalFormat = gl.R16F; + this._glPixelType = gl.HALF_FLOAT; + } else { + this._glFormat = gl.LUMINANCE; + this._glInternalFormat = gl.LUMINANCE; + this._glPixelType = device.extTextureHalfFloat.HALF_FLOAT_OES; + } + break; + case PIXELFORMAT_RG16F: + if (device.isWebGL2) { + this._glFormat = gl.RG; + this._glInternalFormat = gl.RG16F; + this._glPixelType = gl.HALF_FLOAT; + } else { + this._glFormat = gl.RG; + this._glInternalFormat = gl.RG; + this._glPixelType = device.extTextureHalfFloat.HALF_FLOAT_OES; + } + break; + case PIXELFORMAT_RGB16F: + this._glFormat = gl.RGB; + if (device.isWebGL2) { + this._glInternalFormat = gl.RGB16F; + this._glPixelType = gl.HALF_FLOAT; + } else { + this._glInternalFormat = gl.RGB; + this._glPixelType = device.extTextureHalfFloat.HALF_FLOAT_OES; + } + break; + case PIXELFORMAT_RGBA16F: + this._glFormat = gl.RGBA; + if (device.isWebGL2) { + this._glInternalFormat = gl.RGBA16F; + this._glPixelType = gl.HALF_FLOAT; + } else { + this._glInternalFormat = gl.RGBA; + this._glPixelType = device.extTextureHalfFloat.HALF_FLOAT_OES; + } + break; + case PIXELFORMAT_RGB32F: + this._glFormat = gl.RGB; + if (device.isWebGL2) { + this._glInternalFormat = gl.RGB32F; + } else { + this._glInternalFormat = gl.RGB; + } + this._glPixelType = gl.FLOAT; + break; + case PIXELFORMAT_RGBA32F: + this._glFormat = gl.RGBA; + if (device.isWebGL2) { + this._glInternalFormat = gl.RGBA32F; + } else { + this._glInternalFormat = gl.RGBA; + } + this._glPixelType = gl.FLOAT; + break; + case PIXELFORMAT_R32F: + this._glFormat = gl.RED; + this._glInternalFormat = gl.R32F; + this._glPixelType = gl.FLOAT; + break; + case PIXELFORMAT_DEPTH: + if (device.isWebGL2) { + this._glFormat = gl.DEPTH_COMPONENT; + this._glInternalFormat = gl.DEPTH_COMPONENT32F; + this._glPixelType = gl.FLOAT; + } else { + this._glFormat = gl.DEPTH_COMPONENT; + this._glInternalFormat = gl.DEPTH_COMPONENT; + this._glPixelType = gl.UNSIGNED_SHORT; + } + break; + case PIXELFORMAT_DEPTHSTENCIL: + this._glFormat = gl.DEPTH_STENCIL; + if (device.isWebGL2) { + this._glInternalFormat = gl.DEPTH24_STENCIL8; + this._glPixelType = gl.UNSIGNED_INT_24_8; + } else { + this._glInternalFormat = gl.DEPTH_STENCIL; + this._glPixelType = device.extDepthTexture.UNSIGNED_INT_24_8_WEBGL; + } + break; + case PIXELFORMAT_111110F: + this._glFormat = gl.RGB; + this._glInternalFormat = gl.R11F_G11F_B10F; + this._glPixelType = gl.UNSIGNED_INT_10F_11F_11F_REV; + break; + case PIXELFORMAT_SRGB: + this._glFormat = gl.RGB; + this._glInternalFormat = gl.SRGB8; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_SRGBA: + this._glFormat = gl.RGBA; + this._glInternalFormat = gl.SRGB8_ALPHA8; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_R8I: + this._glFormat = gl.RED_INTEGER; + this._glInternalFormat = gl.R8I; + this._glPixelType = gl.BYTE; + break; + case PIXELFORMAT_R8U: + this._glFormat = gl.RED_INTEGER; + this._glInternalFormat = gl.R8UI; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_R16I: + this._glFormat = gl.RED_INTEGER; + this._glInternalFormat = gl.R16I; + this._glPixelType = gl.SHORT; + break; + case PIXELFORMAT_R16U: + this._glFormat = gl.RED_INTEGER; + this._glInternalFormat = gl.R16UI; + this._glPixelType = gl.UNSIGNED_SHORT; + break; + case PIXELFORMAT_R32I: + this._glFormat = gl.RED_INTEGER; + this._glInternalFormat = gl.R32I; + this._glPixelType = gl.INT; + break; + case PIXELFORMAT_R32U: + this._glFormat = gl.RED_INTEGER; + this._glInternalFormat = gl.R32UI; + this._glPixelType = gl.UNSIGNED_INT; + break; + case PIXELFORMAT_RG8I: + this._glFormat = gl.RG_INTEGER; + this._glInternalFormat = gl.RG8I; + this._glPixelType = gl.BYTE; + break; + case PIXELFORMAT_RG8U: + this._glFormat = gl.RG_INTEGER; + this._glInternalFormat = gl.RG8UI; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_RG16I: + this._glFormat = gl.RG_INTEGER; + this._glInternalFormat = gl.RG16I; + this._glPixelType = gl.SHORT; + break; + case PIXELFORMAT_RG16U: + this._glFormat = gl.RG_INTEGER; + this._glInternalFormat = gl.RG16UI; + this._glPixelType = gl.UNSIGNED_SHORT; + break; + case PIXELFORMAT_RG32I: + this._glFormat = gl.RG_INTEGER; + this._glInternalFormat = gl.RG32I; + this._glPixelType = gl.INT; + break; + case PIXELFORMAT_RG32U: + this._glFormat = gl.RG_INTEGER; + this._glInternalFormat = gl.RG32UI; + this._glPixelType = gl.UNSIGNED_INT; + break; + case PIXELFORMAT_RGBA8I: + this._glFormat = gl.RGBA_INTEGER; + this._glInternalFormat = gl.RGBA8I; + this._glPixelType = gl.BYTE; + break; + case PIXELFORMAT_RGBA8U: + this._glFormat = gl.RGBA_INTEGER; + this._glInternalFormat = gl.RGBA8UI; + this._glPixelType = gl.UNSIGNED_BYTE; + break; + case PIXELFORMAT_RGBA16I: + this._glFormat = gl.RGBA_INTEGER; + this._glInternalFormat = gl.RGBA16I; + this._glPixelType = gl.SHORT; + break; + case PIXELFORMAT_RGBA16U: + this._glFormat = gl.RGBA_INTEGER; + this._glInternalFormat = gl.RGBA16UI; + this._glPixelType = gl.UNSIGNED_SHORT; + break; + case PIXELFORMAT_RGBA32I: + this._glFormat = gl.RGBA_INTEGER; + this._glInternalFormat = gl.RGBA32I; + this._glPixelType = gl.INT; + break; + case PIXELFORMAT_RGBA32U: + this._glFormat = gl.RGBA_INTEGER; + this._glInternalFormat = gl.RGBA32UI; + this._glPixelType = gl.UNSIGNED_INT; + break; + } + this._glCreated = false; + } + upload(device, texture) { + const gl = device.gl; + if (!texture._needsUpload && (texture._needsMipmapsUpload && texture._mipmapsUploaded || !texture.pot)) return; + let mipLevel = 0; + let mipObject; + let resMult; + const requiredMipLevels = texture.requiredMipLevels; + if (texture.array) { + gl.texStorage3D(gl.TEXTURE_2D_ARRAY, requiredMipLevels, this._glInternalFormat, texture._width, texture._height, texture._arrayLength); + } + while (texture._levels[mipLevel] || mipLevel === 0) { + if (!texture._needsUpload && mipLevel === 0) { + mipLevel++; + continue; + } else if (mipLevel && (!texture._needsMipmapsUpload || !texture._mipmaps)) { + break; + } + mipObject = texture._levels[mipLevel]; + resMult = 1 / Math.pow(2, mipLevel); + if (mipLevel === 1 && !texture._compressed && !texture._integerFormat && texture._levels.length < requiredMipLevels) { + gl.generateMipmap(this._glTarget); + texture._mipmapsUploaded = true; + } + if (texture._cubemap) { + let face; + if (device._isBrowserInterface(mipObject[0])) { + for (face = 0; face < 6; face++) { + if (!texture._levelsUpdated[0][face]) continue; + let src = mipObject[face]; + if (device._isImageBrowserInterface(src)) { + if (src.width > device.maxCubeMapSize || src.height > device.maxCubeMapSize) { + src = downsampleImage(src, device.maxCubeMapSize); + if (mipLevel === 0) { + texture._width = src.width; + texture._height = src.height; + } + } + } + device.setUnpackFlipY(false); + device.setUnpackPremultiplyAlpha(texture._premultiplyAlpha); + if (this._glCreated) { + gl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, this._glFormat, this._glPixelType, src); + } else { + gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, this._glFormat, this._glPixelType, src); + } + } + } else { + resMult = 1 / Math.pow(2, mipLevel); + for (face = 0; face < 6; face++) { + if (!texture._levelsUpdated[0][face]) continue; + const texData = mipObject[face]; + if (texture._compressed) { + if (this._glCreated && texData) { + gl.compressedTexSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glInternalFormat, texData); + } else { + gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, texData); + } + } else { + device.setUnpackFlipY(false); + device.setUnpackPremultiplyAlpha(texture._premultiplyAlpha); + if (this._glCreated && texData) { + gl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glFormat, this._glPixelType, texData); + } else { + gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, this._glFormat, this._glPixelType, texData); + } + } + } + } + } else if (texture._volume) { + if (texture._compressed) { + gl.compressedTexImage3D(gl.TEXTURE_3D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), Math.max(texture._depth * resMult, 1), 0, mipObject); + } else { + device.setUnpackFlipY(false); + device.setUnpackPremultiplyAlpha(texture._premultiplyAlpha); + gl.texImage3D(gl.TEXTURE_3D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), Math.max(texture._depth * resMult, 1), 0, this._glFormat, this._glPixelType, mipObject); + } + } else if (texture.array && typeof mipObject === "object") { + if (texture._arrayLength === mipObject.length) { + if (texture._compressed) { + for (let index = 0; index < texture._arrayLength; index++) { + gl.compressedTexSubImage3D(gl.TEXTURE_2D_ARRAY, mipLevel, 0, 0, index, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 1, this._glFormat, mipObject[index]); + } + } else { + for (let index = 0; index < texture._arrayLength; index++) { + gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, mipLevel, 0, 0, index, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 1, this._glFormat, this._glPixelType, mipObject[index]); + } + } + } + } else { + if (device._isBrowserInterface(mipObject)) { + if (device._isImageBrowserInterface(mipObject)) { + if (mipObject.width > device.maxTextureSize || mipObject.height > device.maxTextureSize) { + mipObject = downsampleImage(mipObject, device.maxTextureSize); + if (mipLevel === 0) { + texture._width = mipObject.width; + texture._height = mipObject.height; + } + } + } + const w = mipObject.width || mipObject.videoWidth; + const h = mipObject.height || mipObject.videoHeight; + device.setUnpackFlipY(texture._flipY); + device.setUnpackPremultiplyAlpha(texture._premultiplyAlpha); + if (this._glCreated && texture._width === w && texture._height === h && !device._isImageVideoInterface(mipObject)) { + gl.texSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, this._glFormat, this._glPixelType, mipObject); + } else { + gl.texImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, this._glFormat, this._glPixelType, mipObject); + if (mipLevel === 0) { + texture._width = w; + texture._height = h; + } + } + } else { + resMult = 1 / Math.pow(2, mipLevel); + if (texture._compressed) { + if (this._glCreated && mipObject) { + gl.compressedTexSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), this._glInternalFormat, mipObject); + } else { + gl.compressedTexImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 0, mipObject); + } + } else { + device.setUnpackFlipY(false); + device.setUnpackPremultiplyAlpha(texture._premultiplyAlpha); + if (this._glCreated && mipObject) { + gl.texSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glFormat, this._glPixelType, mipObject); + } else { + gl.texImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, this._glFormat, this._glPixelType, mipObject); + } + } + } + if (mipLevel === 0) { + texture._mipmapsUploaded = false; + } else { + texture._mipmapsUploaded = true; + } + } + mipLevel++; + } + if (texture._needsUpload) { + if (texture._cubemap) { + for (let i = 0; i < 6; i++) texture._levelsUpdated[0][i] = false; + } else { + texture._levelsUpdated[0] = false; + } + } + if (!texture._compressed && !texture._integerFormat && texture._mipmaps && texture._needsMipmapsUpload && (texture.pot || device.isWebGL2) && texture._levels.length === 1) { + gl.generateMipmap(this._glTarget); + texture._mipmapsUploaded = true; + } + if (texture._gpuSize) { + texture.adjustVramSizeTracking(device._vram, -texture._gpuSize); + } + texture._gpuSize = texture.gpuSize; + texture.adjustVramSizeTracking(device._vram, texture._gpuSize); + this._glCreated = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-render-target.js +var FramebufferPair = class { + constructor(msaaFB, resolveFB) { + this.msaaFB = void 0; + this.resolveFB = void 0; + this.msaaFB = msaaFB; + this.resolveFB = resolveFB; + } + destroy(gl) { + if (this.msaaFB) { + gl.deleteRenderbuffer(this.msaaFB); + this.msaaFB = null; + } + if (this.resolveFB) { + gl.deleteRenderbuffer(this.resolveFB); + this.resolveFB = null; + } + } +}; +var WebglRenderTarget = class { + constructor() { + this._glFrameBuffer = null; + this._glDepthBuffer = null; + this._glResolveFrameBuffer = null; + this.colorMrtFramebuffers = null; + this._glMsaaColorBuffers = []; + this._glMsaaDepthBuffer = null; + this.suppliedColorFramebuffer = void 0; + this._isInitialized = false; + } + destroy(device) { + var _this$colorMrtFramebu; + const gl = device.gl; + this._isInitialized = false; + if (this._glFrameBuffer) { + if (this._glFrameBuffer !== this.suppliedColorFramebuffer) gl.deleteFramebuffer(this._glFrameBuffer); + this._glFrameBuffer = null; + } + if (this._glDepthBuffer) { + gl.deleteRenderbuffer(this._glDepthBuffer); + this._glDepthBuffer = null; + } + if (this._glResolveFrameBuffer) { + if (this._glResolveFrameBuffer !== this.suppliedColorFramebuffer) gl.deleteFramebuffer(this._glResolveFrameBuffer); + this._glResolveFrameBuffer = null; + } + this._glMsaaColorBuffers.forEach((buffer) => { + gl.deleteRenderbuffer(buffer); + }); + this._glMsaaColorBuffers.length = 0; + (_this$colorMrtFramebu = this.colorMrtFramebuffers) == null || _this$colorMrtFramebu.forEach((framebuffer) => { + framebuffer.destroy(gl); + }); + this.colorMrtFramebuffers = null; + if (this._glMsaaDepthBuffer) { + gl.deleteRenderbuffer(this._glMsaaDepthBuffer); + this._glMsaaDepthBuffer = null; + } + this.suppliedColorFramebuffer = void 0; + } + get initialized() { + return this._isInitialized; + } + init(device, target2) { + const gl = device.gl; + this._isInitialized = true; + const buffers = []; + if (this.suppliedColorFramebuffer !== void 0) { + this._glFrameBuffer = this.suppliedColorFramebuffer; + } else { + var _target$_colorBuffers, _target$_colorBuffers2, _device$extDrawBuffer, _device$extDrawBuffer2; + this._glFrameBuffer = gl.createFramebuffer(); + device.setFramebuffer(this._glFrameBuffer); + const colorBufferCount = (_target$_colorBuffers = (_target$_colorBuffers2 = target2._colorBuffers) == null ? void 0 : _target$_colorBuffers2.length) != null ? _target$_colorBuffers : 0; + const attachmentBaseConstant = device.isWebGL2 ? gl.COLOR_ATTACHMENT0 : (_device$extDrawBuffer = (_device$extDrawBuffer2 = device.extDrawBuffers) == null ? void 0 : _device$extDrawBuffer2.COLOR_ATTACHMENT0_WEBGL) != null ? _device$extDrawBuffer : gl.COLOR_ATTACHMENT0; + for (let i = 0; i < colorBufferCount; ++i) { + const colorBuffer = target2.getColorBuffer(i); + if (colorBuffer) { + if (!colorBuffer.impl._glTexture) { + colorBuffer._width = Math.min(colorBuffer.width, device.maxRenderBufferSize); + colorBuffer._height = Math.min(colorBuffer.height, device.maxRenderBufferSize); + device.setTexture(colorBuffer, 0); + } + gl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentBaseConstant + i, colorBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target2._face : gl.TEXTURE_2D, colorBuffer.impl._glTexture, 0); + buffers.push(attachmentBaseConstant + i); + } + } + if (device.drawBuffers) { + device.drawBuffers(buffers); + } + const depthBuffer = target2._depthBuffer; + if (depthBuffer) { + if (!depthBuffer.impl._glTexture) { + depthBuffer._width = Math.min(depthBuffer.width, device.maxRenderBufferSize); + depthBuffer._height = Math.min(depthBuffer.height, device.maxRenderBufferSize); + device.setTexture(depthBuffer, 0); + } + if (target2._stencil) { + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, depthBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target2._face : gl.TEXTURE_2D, target2._depthBuffer.impl._glTexture, 0); + } else { + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, depthBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target2._face : gl.TEXTURE_2D, target2._depthBuffer.impl._glTexture, 0); + } + } else if (target2._depth) { + const willRenderMsaa = target2._samples > 1 && device.isWebGL2; + if (!willRenderMsaa) { + if (!this._glDepthBuffer) { + this._glDepthBuffer = gl.createRenderbuffer(); + } + gl.bindRenderbuffer(gl.RENDERBUFFER, this._glDepthBuffer); + if (target2._stencil) { + gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, target2.width, target2.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, this._glDepthBuffer); + } else { + const depthFormat = device.isWebGL2 ? gl.DEPTH_COMPONENT32F : gl.DEPTH_COMPONENT16; + gl.renderbufferStorage(gl.RENDERBUFFER, depthFormat, target2.width, target2.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._glDepthBuffer); + } + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + } + } + } + if (device.isWebGL2 && target2._samples > 1) { + var _target$_colorBuffers3, _target$_colorBuffers4; + this._glResolveFrameBuffer = this._glFrameBuffer; + this._glFrameBuffer = gl.createFramebuffer(); + device.setFramebuffer(this._glFrameBuffer); + const colorBufferCount = (_target$_colorBuffers3 = (_target$_colorBuffers4 = target2._colorBuffers) == null ? void 0 : _target$_colorBuffers4.length) != null ? _target$_colorBuffers3 : 0; + if (this.suppliedColorFramebuffer !== void 0) { + const buffer = gl.createRenderbuffer(); + this._glMsaaColorBuffers.push(buffer); + const internalFormat = device.backBufferFormat === PIXELFORMAT_RGBA8 ? gl.RGBA8 : gl.RGB8; + gl.bindRenderbuffer(gl.RENDERBUFFER, buffer); + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, target2._samples, internalFormat, target2.width, target2.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, buffer); + } else { + for (let i = 0; i < colorBufferCount; ++i) { + const colorBuffer = target2.getColorBuffer(i); + if (colorBuffer) { + const buffer = gl.createRenderbuffer(); + this._glMsaaColorBuffers.push(buffer); + gl.bindRenderbuffer(gl.RENDERBUFFER, buffer); + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, target2._samples, colorBuffer.impl._glInternalFormat, target2.width, target2.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, buffer); + } + } + } + if (target2._depth) { + if (!this._glMsaaDepthBuffer) { + this._glMsaaDepthBuffer = gl.createRenderbuffer(); + } + gl.bindRenderbuffer(gl.RENDERBUFFER, this._glMsaaDepthBuffer); + if (target2._stencil) { + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, target2._samples, gl.DEPTH24_STENCIL8, target2.width, target2.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, this._glMsaaDepthBuffer); + } else { + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, target2._samples, gl.DEPTH_COMPONENT32F, target2.width, target2.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._glMsaaDepthBuffer); + } + } + if (colorBufferCount > 1) { + this._createMsaaMrtFramebuffers(device, target2, colorBufferCount); + device.setFramebuffer(this._glFrameBuffer); + device.drawBuffers(buffers); + } + } + } + _createMsaaMrtFramebuffers(device, target2, colorBufferCount) { + const gl = device.gl; + this.colorMrtFramebuffers = []; + for (let i = 0; i < colorBufferCount; ++i) { + const colorBuffer = target2.getColorBuffer(i); + const srcFramebuffer = gl.createFramebuffer(); + device.setFramebuffer(srcFramebuffer); + const buffer = this._glMsaaColorBuffers[i]; + gl.bindRenderbuffer(gl.RENDERBUFFER, buffer); + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, target2._samples, colorBuffer.impl._glInternalFormat, target2.width, target2.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, buffer); + device.drawBuffers([gl.COLOR_ATTACHMENT0]); + const dstFramebuffer = gl.createFramebuffer(); + device.setFramebuffer(dstFramebuffer); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, colorBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target2._face : gl.TEXTURE_2D, colorBuffer.impl._glTexture, 0); + this.colorMrtFramebuffers[i] = new FramebufferPair(srcFramebuffer, dstFramebuffer); + } + } + _checkFbo(device, target2, type2 = "") { + const gl = device.gl; + const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); + switch (status) { + case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT: + break; + case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: + break; + case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS: + break; + case gl.FRAMEBUFFER_UNSUPPORTED: + break; + } + } + loseContext() { + this._glFrameBuffer = null; + this._glDepthBuffer = null; + this._glResolveFrameBuffer = null; + this._glMsaaColorBuffers.length = 0; + this._glMsaaDepthBuffer = null; + this.colorMrtFramebuffers = null; + this.suppliedColorFramebuffer = void 0; + this._isInitialized = false; + } + internalResolve(device, src, dst, target2, mask) { + device.setScissor(0, 0, target2.width, target2.height); + const gl = device.gl; + gl.bindFramebuffer(gl.READ_FRAMEBUFFER, src); + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dst); + gl.blitFramebuffer(0, 0, target2.width, target2.height, 0, 0, target2.width, target2.height, mask, gl.NEAREST); + } + resolve(device, target2, color, depth) { + if (device.isWebGL2) { + const gl = device.gl; + if (this.colorMrtFramebuffers) { + if (color) { + for (let i = 0; i < this.colorMrtFramebuffers.length; i++) { + const fbPair = this.colorMrtFramebuffers[i]; + this.internalResolve(device, fbPair.msaaFB, fbPair.resolveFB, target2, gl.COLOR_BUFFER_BIT); + } + } + if (depth) { + this.internalResolve(device, this._glFrameBuffer, this._glResolveFrameBuffer, target2, gl.DEPTH_BUFFER_BIT); + } + } else { + this.internalResolve(device, this._glFrameBuffer, this._glResolveFrameBuffer, target2, (color ? gl.COLOR_BUFFER_BIT : 0) | (depth ? gl.DEPTH_BUFFER_BIT : 0)); + } + gl.bindFramebuffer(gl.FRAMEBUFFER, this._glFrameBuffer); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/frag/gles2.js +var gles2PS = ` +#define pcFragColor0 gl_FragData[0] +#if COLOR_ATTACHMENT_1 +#define pcFragColor1 gl_FragData[1] +#endif +#if COLOR_ATTACHMENT_2 +#define pcFragColor2 gl_FragData[2] +#endif +#if COLOR_ATTACHMENT_3 +#define pcFragColor3 gl_FragData[3] +#endif +#if COLOR_ATTACHMENT_4 +#define pcFragColor4 gl_FragData[4] +#endif +#if COLOR_ATTACHMENT_5 +#define pcFragColor5 gl_FragData[5] +#endif +#if COLOR_ATTACHMENT_6 +#define pcFragColor6 gl_FragData[6] +#endif +#if COLOR_ATTACHMENT_7 +#define pcFragColor7 gl_FragData[7] +#endif +#define texture2DBias texture2D +#define itexture2D texture2D +#define utexture2D texture2D +#define SHADOWMAP_PASS(name) name +#define SHADOWMAP_ACCEPT(name) sampler2D name +#define TEXTURE_PASS(name) name +#define TEXTURE_ACCEPT(name) sampler2D name +#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name +#ifndef SUPPORTS_TEXLOD + #define texture2DLodEXT texture2D + #define texture2DProjLodEXT textureProj + #define textureCubeLodEXT textureCube + #define textureShadow texture2D +#else + #define textureShadow(res, uv) texture2DGradEXT(res, uv, vec2(1, 1), vec2(1, 1)) +#endif +#ifdef SUPPORTS_MRT + #define gl_FragColor pcFragColor0 +#endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/vert/gles2.js +var gles2VS = ` +#define TEXTURE_PASS(name) name +#define TEXTURE_ACCEPT(name) sampler2D name +#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/frag/gles3.js +var gles3PS = ` +#ifndef outType_0 +#define outType_0 vec4 +#endif +layout(location = 0) out highp outType_0 pc_fragColor; +#ifndef REMOVE_COLOR_ATTACHMENT_1 +#if COLOR_ATTACHMENT_1 +layout(location = 1) out highp outType_1 pc_fragColor1; +#endif +#endif +#ifndef REMOVE_COLOR_ATTACHMENT_2 +#if COLOR_ATTACHMENT_2 +layout(location = 2) out highp outType_2 pc_fragColor2; +#endif +#endif +#ifndef REMOVE_COLOR_ATTACHMENT_3 +#if COLOR_ATTACHMENT_3 +layout(location = 3) out highp outType_3 pc_fragColor3; +#endif +#endif +#ifndef REMOVE_COLOR_ATTACHMENT_4 +#if COLOR_ATTACHMENT_4 +layout(location = 4) out highp outType_4 pc_fragColor4; +#endif +#endif +#ifndef REMOVE_COLOR_ATTACHMENT_5 +#if COLOR_ATTACHMENT_5 +layout(location = 5) out highp outType_5 pc_fragColor5; +#endif +#endif +#ifndef REMOVE_COLOR_ATTACHMENT_6 +#if COLOR_ATTACHMENT_6 +layout(location = 6) out highp outType_6 pc_fragColor6; +#endif +#endif +#ifndef REMOVE_COLOR_ATTACHMENT_7 +#if COLOR_ATTACHMENT_7 +layout(location = 7) out highp outType_7 pc_fragColor7; +#endif +#endif +#define gl_FragColor pc_fragColor +#define pcFragColor0 pc_fragColor +#define pcFragColor1 pc_fragColor1 +#define pcFragColor2 pc_fragColor2 +#define pcFragColor3 pc_fragColor3 +#define pcFragColor4 pc_fragColor4 +#define pcFragColor5 pc_fragColor5 +#define pcFragColor6 pc_fragColor6 +#define pcFragColor7 pc_fragColor7 +#define varying in +#define texture2D texture +#define texture2DBias texture +#define textureCube texture +#define texture2DProj textureProj +#define texture2DLodEXT textureLod +#define texture2DProjLodEXT textureProjLod +#define textureCubeLodEXT textureLod +#define texture2DGradEXT textureGrad +#define texture2DProjGradEXT textureProjGrad +#define textureCubeGradEXT textureGrad +#define utexture2D texture +#define itexture2D texture +#define textureShadow(res, uv) textureGrad(res, uv, vec2(1, 1), vec2(1, 1)) +#define SHADOWMAP_PASS(name) name +#define SHADOWMAP_ACCEPT(name) sampler2DShadow name +#define TEXTURE_PASS(name) name +#define TEXTURE_ACCEPT(name) sampler2D name +#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name +#define GL2 +#define SUPPORTS_TEXLOD +#define SUPPORTS_MRT +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/vert/gles3.js +var gles3VS = ` +#define attribute in +#define varying out +#define texture2D texture +#define utexture2D texture +#define itexture2D texture +#define GL2 +#define VERTEXSHADER +#define TEXTURE_PASS(name) name +#define TEXTURE_ACCEPT(name) sampler2D name +#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/frag/webgpu.js +var webgpuPS = ` +#extension GL_EXT_samplerless_texture_functions : require +#ifndef outType_0 +#define outType_0 vec4 +#endif +#ifndef outType_1 +#define outType_1 vec4 +#endif +#ifndef outType_2 +#define outType_2 vec4 +#endif +#ifndef outType_3 +#define outType_3 vec4 +#endif +#ifndef outType_4 +#define outType_4 vec4 +#endif +#ifndef outType_5 +#define outType_5 vec4 +#endif +#ifndef outType_6 +#define outType_6 vec4 +#endif +#ifndef outType_7 +#define outType_7 vec4 +#endif +layout(location = 0) out highp outType_0 pc_fragColor; +layout(location = 1) out highp outType_1 pc_fragColor1; +layout(location = 2) out highp outType_2 pc_fragColor2; +layout(location = 3) out highp outType_3 pc_fragColor3; +layout(location = 4) out highp outType_4 pc_fragColor4; +layout(location = 5) out highp outType_5 pc_fragColor5; +layout(location = 6) out highp outType_6 pc_fragColor6; +layout(location = 7) out highp outType_7 pc_fragColor7; +#define gl_FragColor pc_fragColor +#define pcFragColor0 pc_fragColor +#define pcFragColor1 pc_fragColor1 +#define pcFragColor2 pc_fragColor2 +#define pcFragColor3 pc_fragColor3 +#define pcFragColor4 pc_fragColor4 +#define pcFragColor5 pc_fragColor5 +#define pcFragColor6 pc_fragColor6 +#define pcFragColor7 pc_fragColor7 +#define texture2D(res, uv) texture(sampler2D(res, res ## _sampler), uv) +#define texture2DBias(res, uv, bias) texture(sampler2D(res, res ## _sampler), uv, bias) +#define texture2DLodEXT(res, uv, lod) textureLod(sampler2D(res, res ## _sampler), uv, lod) +#define textureCube(res, uv) texture(samplerCube(res, res ## _sampler), uv) +#define textureCubeLodEXT(res, uv, lod) textureLod(samplerCube(res, res ## _sampler), uv, lod) +#define textureShadow(res, uv) textureLod(sampler2DShadow(res, res ## _sampler), uv, 0.0) +#define itexture2D(res, uv) texture(isampler2D(res, res ## _sampler), uv) +#define utexture2D(res, uv) texture(usampler2D(res, res ## _sampler), uv) +#define SHADOWMAP_PASS(name) name, name ## _sampler +#define SHADOWMAP_ACCEPT(name) texture2D name, sampler name ## _sampler +#define TEXTURE_PASS(name) name, name ## _sampler +#define TEXTURE_ACCEPT(name) texture2D name, sampler name ## _sampler +#define TEXTURE_ACCEPT_HIGHP TEXTURE_ACCEPT +#define GL2 +#define WEBGPU +#define SUPPORTS_TEXLOD +#define SUPPORTS_MRT +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/vert/webgpu.js +var webgpuVS = ` +#extension GL_EXT_samplerless_texture_functions : require +#define texture2D(res, uv) texture(sampler2D(res, res ## _sampler), uv) +#define itexture2D(res, uv) texture(isampler2D(res, res ## _sampler), uv) +#define utexture2D(res, uv) texture(usampler2D(res, res ## _sampler), uv) +#define TEXTURE_PASS(name) name, name ## _sampler +#define TEXTURE_ACCEPT(name) texture2D name, sampler name ## _sampler +#define TEXTURE_ACCEPT_HIGHP TEXTURE_ACCEPT +#define GL2 +#define WEBGPU +#define VERTEXSHADER +#define gl_VertexID gl_VertexIndex +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/frag/shared.js +var sharedFS = ` +vec2 getGrabScreenPos(vec4 clipPos) { + vec2 uv = (clipPos.xy / clipPos.w) * 0.5 + 0.5; + #ifdef WEBGPU + uv.y = 1.0 - uv.y; + #endif + return uv; +} +vec2 getImageEffectUV(vec2 uv) { + #ifdef WEBGPU + uv.y = 1.0 - uv.y; + #endif + return uv; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-utils.js +var _attrib2Semantic = { + vertex_position: SEMANTIC_POSITION, + vertex_normal: SEMANTIC_NORMAL, + vertex_tangent: SEMANTIC_TANGENT, + vertex_texCoord0: SEMANTIC_TEXCOORD0, + vertex_texCoord1: SEMANTIC_TEXCOORD1, + vertex_texCoord2: SEMANTIC_TEXCOORD2, + vertex_texCoord3: SEMANTIC_TEXCOORD3, + vertex_texCoord4: SEMANTIC_TEXCOORD4, + vertex_texCoord5: SEMANTIC_TEXCOORD5, + vertex_texCoord6: SEMANTIC_TEXCOORD6, + vertex_texCoord7: SEMANTIC_TEXCOORD7, + vertex_color: SEMANTIC_COLOR, + vertex_boneIndices: SEMANTIC_BLENDINDICES, + vertex_boneWeights: SEMANTIC_BLENDWEIGHT +}; +var ShaderUtils = class _ShaderUtils { + static createDefinition(device, options) { + var _options$name, _options$attributes; + const getDefines = (gpu, gl2, gl1, isVertex, options2) => { + const deviceIntro = device.isWebGPU ? gpu : device.isWebGL2 ? gl2 : _ShaderUtils.gl1Extensions(device, options2) + gl1; + let attachmentsDefine = ""; + if (!isVertex) { + var _options$fragmentOutp; + let fragmentOutputTypes = (_options$fragmentOutp = options2.fragmentOutputTypes) != null ? _options$fragmentOutp : "vec4"; + if (!Array.isArray(fragmentOutputTypes)) { + fragmentOutputTypes = [fragmentOutputTypes]; + } + for (let i = 0; i < device.maxColorAttachments; i++) { + var _fragmentOutputTypes$; + attachmentsDefine += `#define COLOR_ATTACHMENT_${i} +`; + const outType = (_fragmentOutputTypes$ = fragmentOutputTypes[i]) != null ? _fragmentOutputTypes$ : "vec4"; + attachmentsDefine += `#define outType_${i} ${outType} +`; + } + } + return attachmentsDefine + deviceIntro; + }; + const name = (_options$name = options.name) != null ? _options$name : "Untitled"; + const vertCode = _ShaderUtils.versionCode(device) + getDefines(webgpuVS, gles3VS, gles2VS, true, options) + _ShaderUtils.getDefinesCode(options.vertexDefines) + sharedFS + _ShaderUtils.getShaderNameCode(name) + options.vertexCode; + const fragCode = (options.fragmentPreamble || "") + _ShaderUtils.versionCode(device) + getDefines(webgpuPS, gles3PS, gles2PS, false, options) + _ShaderUtils.getDefinesCode(options.fragmentDefines) + _ShaderUtils.precisionCode(device) + "\n" + sharedFS + _ShaderUtils.getShaderNameCode(name) + (options.fragmentCode || _ShaderUtils.dummyFragmentCode()); + const attribs = (_options$attributes = options.attributes) != null ? _options$attributes : _ShaderUtils.collectAttributes(options.vertexCode); + return { + name, + attributes: attribs, + vshader: vertCode, + vincludes: options.vertexIncludes, + fincludes: options.fragmentIncludes, + fshader: fragCode, + useTransformFeedback: options.useTransformFeedback + }; + } + static getDefinesCode(defines) { + let code = ""; + defines == null || defines.forEach((value, key) => { + code += `#define ${key} ${value} +`; + }); + return code; + } + static getShaderNameCode(name) { + return `#define SHADER_NAME ${name} +`; + } + static gl1Extensions(device, options, isVertex) { + let code; + if (isVertex) { + code = options.vertexExtensions ? `${options.vertexExtensions} +` : ""; + } else { + code = options.fragmentExtensions ? `${options.fragmentExtensions} +` : ""; + if (device.extStandardDerivatives) { + code += "#extension GL_OES_standard_derivatives : enable\n"; + } + if (device.extTextureLod) { + code += "#extension GL_EXT_shader_texture_lod : enable\n"; + code += "#define SUPPORTS_TEXLOD\n"; + } + if (device.extDrawBuffers) { + code += "#extension GL_EXT_draw_buffers : require\n"; + code += "#define SUPPORTS_MRT\n"; + } + } + return code; + } + static dummyFragmentCode() { + return "void main(void) {gl_FragColor = vec4(0.0);}"; + } + static versionCode(device) { + if (device.isWebGPU) { + return "#version 450\n"; + } + return device.isWebGL2 ? "#version 300 es\n" : ""; + } + static precisionCode(device, forcePrecision) { + let code = ""; + if (forcePrecision && forcePrecision !== "highp" && forcePrecision !== "mediump" && forcePrecision !== "lowp") { + forcePrecision = null; + } + if (forcePrecision) { + if (forcePrecision === "highp" && device.maxPrecision !== "highp") { + forcePrecision = "mediump"; + } + if (forcePrecision === "mediump" && device.maxPrecision === "lowp") { + forcePrecision = "lowp"; + } + } + const precision = forcePrecision ? forcePrecision : device.precision; + if (!device.isWebGPU) { + code = `precision ${precision} float; +precision ${precision} int;`; + if (device.isWebGL2) { + code += `precision ${precision} sampler2DShadow; +`; + } + } else { + code = `precision ${precision} float; +precision ${precision} int; +`; + } + return code; + } + static collectAttributes(vsCode2) { + const attribs = {}; + let attrs = 0; + let found = vsCode2.indexOf("attribute"); + while (found >= 0) { + if (found > 0 && vsCode2[found - 1] === "/") break; + const endOfLine = vsCode2.indexOf(";", found); + const startOfAttribName = vsCode2.lastIndexOf(" ", endOfLine); + const attribName = vsCode2.substring(startOfAttribName + 1, endOfLine); + if (attribs[attribName]) ; + else { + const semantic = _attrib2Semantic[attribName]; + if (semantic !== void 0) { + attribs[attribName] = semantic; + } else { + attribs[attribName] = "ATTR" + attrs; + attrs++; + } + } + found = vsCode2.indexOf("attribute", found + 1); + } + return attribs; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-gpu-profiler.js +var FrameQueriesInfo = class { + constructor() { + this.renderVersion = void 0; + this.queries = []; + } + destroy(gl) { + this.queries.forEach((query) => gl.deleteQuery(query)); + this.queries = null; + } +}; +var WebglGpuProfiler = class extends GpuProfiler { + constructor(device) { + super(); + this.device = void 0; + this.freeQueries = []; + this.frameQueries = []; + this.previousFrameQueries = []; + this.timings = []; + this.device = device; + this.ext = device.extDisjointTimerQuery; + } + destroy() { + this.freeQueries.forEach((query) => this.device.gl.deleteQuery(query)); + this.frameQueries.forEach((query) => this.device.gl.deleteQuery(query)); + this.previousFrameQueries.forEach((frameQueriesInfo) => frameQueriesInfo.destroy(this.device.gl)); + this.freeQueries = null; + this.frameQueries = null; + this.previousFrameQueries = null; + } + loseContext() { + super.loseContext(); + this.freeQueries = []; + this.frameQueries = []; + this.previousFrameQueries = []; + } + restoreContext() { + this.ext = this.device.extDisjointTimerQuery; + } + getQuery() { + var _this$freeQueries$pop; + return (_this$freeQueries$pop = this.freeQueries.pop()) != null ? _this$freeQueries$pop : this.device.gl.createQuery(); + } + start(name) { + if (this.ext) { + const slot = this.getSlot(name); + const query = this.getQuery(); + this.frameQueries[slot] = query; + this.device.gl.beginQuery(this.ext.TIME_ELAPSED_EXT, query); + return slot; + } + return void 0; + } + end(slot) { + if (slot !== void 0) { + this.device.gl.endQuery(this.ext.TIME_ELAPSED_EXT); + } + } + frameStart() { + this.processEnableRequest(); + if (this._enabled) { + this.frameGPUMarkerSlot = this.start("GpuFrame"); + } + } + frameEnd() { + if (this._enabled) { + this.end(this.frameGPUMarkerSlot); + } + } + request() { + if (this._enabled) { + const ext = this.ext; + const gl = this.device.gl; + const renderVersion = this.device.renderVersion; + const frameQueries = this.frameQueries; + if (frameQueries.length > 0) { + this.frameQueries = []; + const frameQueriesInfo = new FrameQueriesInfo(); + frameQueriesInfo.queries = frameQueries; + frameQueriesInfo.renderVersion = renderVersion; + this.previousFrameQueries.push(frameQueriesInfo); + } + if (this.previousFrameQueries.length > 0) { + const previousQueriesInfo = this.previousFrameQueries[0]; + const previousQueries = previousQueriesInfo.queries; + const lastQuery = previousQueries[previousQueries.length - 1]; + const available = gl.getQueryParameter(lastQuery, gl.QUERY_RESULT_AVAILABLE); + const disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT); + if (available && !disjoint) { + this.previousFrameQueries.shift(); + const timings = this.timings; + timings.length = 0; + for (let i = 0; i < previousQueries.length; i++) { + const query = previousQueries[i]; + const duration = gl.getQueryParameter(query, gl.QUERY_RESULT); + timings[i] = duration * 1e-6; + this.freeQueries.push(query); + } + this.report(previousQueriesInfo.renderVersion, timings); + } + if (disjoint) { + this.previousFrameQueries.forEach((frameQueriesInfo) => { + this.report(frameQueriesInfo.renderVersion, null); + frameQueriesInfo.destroy(gl); + }); + this.previousFrameQueries.length = 0; + } + } + super.request(renderVersion); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-graphics-device.js +var invalidateAttachments = []; +var _fullScreenQuadVS = ` +attribute vec2 vertex_position; +varying vec2 vUv0; +void main(void) +{ + gl_Position = vec4(vertex_position, 0.5, 1.0); + vUv0 = vertex_position.xy*0.5+0.5; +} +`; +var _precisionTest1PS = ` +void main(void) { + gl_FragColor = vec4(2147483648.0); +} +`; +var _precisionTest2PS = ` +uniform sampler2D source; +vec4 packFloat(float depth) { + const vec4 bit_shift = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0); + const vec4 bit_mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0); + vec4 res = mod(depth * bit_shift * vec4(255), vec4(256) ) / vec4(255); + res -= res.xxyz * bit_mask; + return res; +} +void main(void) { + float c = texture2D(source, vec2(0.0)).r; + float diff = abs(c - 2147483648.0) / 2147483648.0; + gl_FragColor = packFloat(diff); +} +`; +var _outputTexture2D = ` +varying vec2 vUv0; +uniform sampler2D source; +void main(void) { + gl_FragColor = texture2D(source, vUv0); +} +`; +function quadWithShader(device, target2, shader) { + const oldRt = device.renderTarget; + device.setRenderTarget(target2); + device.updateBegin(); + device.setCullMode(CULLFACE_NONE); + device.setBlendState(BlendState.NOBLEND); + device.setDepthState(DepthState.NODEPTH); + device.setStencilState(null, null); + device.setVertexBuffer(device.quadVertexBuffer, 0); + device.setShader(shader); + device.draw({ + type: PRIMITIVE_TRISTRIP, + base: 0, + count: 4, + indexed: false + }); + device.updateEnd(); + device.setRenderTarget(oldRt); + device.updateBegin(); +} +function testRenderable(gl, pixelFormat) { + let result = true; + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 2, 2, 0, gl.RGBA, pixelFormat, null); + const framebuffer = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) !== gl.FRAMEBUFFER_COMPLETE) { + result = false; + } + gl.bindTexture(gl.TEXTURE_2D, null); + gl.deleteTexture(texture); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.deleteFramebuffer(framebuffer); + return result; +} +function testTextureHalfFloatUpdatable(gl, pixelFormat) { + let result = true; + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + const data2 = new Uint16Array(4 * 2 * 2); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 2, 2, 0, gl.RGBA, pixelFormat, data2); + if (gl.getError() !== gl.NO_ERROR) { + result = false; + console.log("Above error related to HALF_FLOAT_OES can be ignored, it was triggered by testing half float texture support"); + } + gl.bindTexture(gl.TEXTURE_2D, null); + gl.deleteTexture(texture); + return result; +} +function testTextureFloatHighPrecision(device) { + if (!device.textureFloatRenderable) return false; + const shader1 = new Shader(device, ShaderUtils.createDefinition(device, { + name: "ptest1", + vertexCode: _fullScreenQuadVS, + fragmentCode: _precisionTest1PS + })); + const shader2 = new Shader(device, ShaderUtils.createDefinition(device, { + name: "ptest2", + vertexCode: _fullScreenQuadVS, + fragmentCode: _precisionTest2PS + })); + const textureOptions = { + format: PIXELFORMAT_RGBA32F, + width: 1, + height: 1, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + name: "testFHP" + }; + const tex1 = new Texture(device, textureOptions); + const targ1 = new RenderTarget({ + colorBuffer: tex1, + depth: false + }); + quadWithShader(device, targ1, shader1); + textureOptions.format = PIXELFORMAT_RGBA8; + const tex2 = new Texture(device, textureOptions); + const targ2 = new RenderTarget({ + colorBuffer: tex2, + depth: false + }); + device.constantTexSource.setValue(tex1); + quadWithShader(device, targ2, shader2); + const prevFramebuffer = device.activeFramebuffer; + device.setFramebuffer(targ2.impl._glFrameBuffer); + const pixels = new Uint8Array(4); + device.readPixels(0, 0, 1, 1, pixels); + device.setFramebuffer(prevFramebuffer); + const x2 = pixels[0] / 255; + const y2 = pixels[1] / 255; + const z2 = pixels[2] / 255; + const w = pixels[3] / 255; + const f = x2 / (256 * 256 * 256) + y2 / (256 * 256) + z2 / 256 + w; + tex1.destroy(); + targ1.destroy(); + tex2.destroy(); + targ2.destroy(); + shader1.destroy(); + shader2.destroy(); + return f === 0; +} +var WebglGraphicsDevice = class extends GraphicsDevice { + constructor(canvas, options = {}) { + var _options$antialias; + super(canvas, options); + this.gl = void 0; + this._defaultFramebuffer = null; + this._defaultFramebufferChanged = false; + options = this.initOptions; + this.updateClientRect(); + this.initTextureUnits(); + this.contextLost = false; + this._contextLostHandler = (event) => { + event.preventDefault(); + this.loseContext(); + this.fire("devicelost"); + }; + this._contextRestoredHandler = () => { + this.restoreContext(); + this.fire("devicerestored"); + }; + const ua2 = typeof navigator !== "undefined" && navigator.userAgent; + this.forceDisableMultisampling = ua2 && ua2.includes("AppleWebKit") && (ua2.includes("15.4") || ua2.includes("15_4")); + if (this.forceDisableMultisampling) { + options.antialias = false; + } + if (platform.browserName === "firefox" && platform.name === "windows") { + const _ua = typeof navigator !== "undefined" ? navigator.userAgent : ""; + const match = _ua.match(/Firefox\/(\d+(\.\d+)*)/); + const firefoxVersion = match ? match[1] : null; + if (firefoxVersion) { + const version2 = parseFloat(firefoxVersion); + if (version2 >= 120 || version2 === 115) { + options.antialias = false; + } + } + } + let gl = null; + this.backBufferAntialias = (_options$antialias = options.antialias) != null ? _options$antialias : false; + options.antialias = false; + if (options.gl) { + gl = options.gl; + } else { + const preferWebGl2 = options.preferWebGl2 !== void 0 ? options.preferWebGl2 : true; + const names = preferWebGl2 ? ["webgl2", "webgl", "experimental-webgl"] : ["webgl", "experimental-webgl"]; + for (let i = 0; i < names.length; i++) { + gl = canvas.getContext(names[i], options); + if (gl) { + break; + } + } + } + if (!gl) { + throw new Error("WebGL not supported"); + } + this.gl = gl; + this.isWebGL2 = typeof WebGL2RenderingContext !== "undefined" && gl instanceof WebGL2RenderingContext; + this.isWebGL1 = !this.isWebGL2; + this._deviceType = this.isWebGL2 ? DEVICETYPE_WEBGL2 : DEVICETYPE_WEBGL1; + this.updateBackbufferFormat(null); + const isChrome = platform.browserName === "chrome"; + const isSafari = platform.browserName === "safari"; + const isMac = platform.browser && navigator.appVersion.indexOf("Mac") !== -1; + this._tempEnableSafariTextureUnitWorkaround = isSafari; + this._tempMacChromeBlitFramebufferWorkaround = isMac && isChrome && !options.alpha; + canvas.addEventListener("webglcontextlost", this._contextLostHandler, false); + canvas.addEventListener("webglcontextrestored", this._contextRestoredHandler, false); + this.initializeExtensions(); + this.initializeCapabilities(); + this.initializeRenderState(); + this.initializeContextCaches(); + this.createBackbuffer(null); + this.supportsImageBitmap = !isSafari && typeof ImageBitmap !== "undefined"; + this._samplerTypes = /* @__PURE__ */ new Set([...[gl.SAMPLER_2D, gl.SAMPLER_CUBE], ...this.isWebGL2 ? [gl.UNSIGNED_INT_SAMPLER_2D, gl.INT_SAMPLER_2D, gl.SAMPLER_2D_SHADOW, gl.SAMPLER_CUBE_SHADOW, gl.SAMPLER_3D, gl.INT_SAMPLER_3D, gl.UNSIGNED_INT_SAMPLER_3D, gl.SAMPLER_2D_ARRAY, gl.INT_SAMPLER_2D_ARRAY, gl.UNSIGNED_INT_SAMPLER_2D_ARRAY] : []]); + this.glAddress = [gl.REPEAT, gl.CLAMP_TO_EDGE, gl.MIRRORED_REPEAT]; + this.glBlendEquation = [gl.FUNC_ADD, gl.FUNC_SUBTRACT, gl.FUNC_REVERSE_SUBTRACT, this.isWebGL2 ? gl.MIN : this.extBlendMinmax ? this.extBlendMinmax.MIN_EXT : gl.FUNC_ADD, this.isWebGL2 ? gl.MAX : this.extBlendMinmax ? this.extBlendMinmax.MAX_EXT : gl.FUNC_ADD]; + this.glBlendFunctionColor = [gl.ZERO, gl.ONE, gl.SRC_COLOR, gl.ONE_MINUS_SRC_COLOR, gl.DST_COLOR, gl.ONE_MINUS_DST_COLOR, gl.SRC_ALPHA, gl.SRC_ALPHA_SATURATE, gl.ONE_MINUS_SRC_ALPHA, gl.DST_ALPHA, gl.ONE_MINUS_DST_ALPHA, gl.CONSTANT_COLOR, gl.ONE_MINUS_CONSTANT_COLOR]; + this.glBlendFunctionAlpha = [gl.ZERO, gl.ONE, gl.SRC_COLOR, gl.ONE_MINUS_SRC_COLOR, gl.DST_COLOR, gl.ONE_MINUS_DST_COLOR, gl.SRC_ALPHA, gl.SRC_ALPHA_SATURATE, gl.ONE_MINUS_SRC_ALPHA, gl.DST_ALPHA, gl.ONE_MINUS_DST_ALPHA, gl.CONSTANT_ALPHA, gl.ONE_MINUS_CONSTANT_ALPHA]; + this.glComparison = [gl.NEVER, gl.LESS, gl.EQUAL, gl.LEQUAL, gl.GREATER, gl.NOTEQUAL, gl.GEQUAL, gl.ALWAYS]; + this.glStencilOp = [gl.KEEP, gl.ZERO, gl.REPLACE, gl.INCR, gl.INCR_WRAP, gl.DECR, gl.DECR_WRAP, gl.INVERT]; + this.glClearFlag = [0, gl.COLOR_BUFFER_BIT, gl.DEPTH_BUFFER_BIT, gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT, gl.STENCIL_BUFFER_BIT, gl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT, gl.STENCIL_BUFFER_BIT | gl.DEPTH_BUFFER_BIT, gl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT]; + this.glCull = [0, gl.BACK, gl.FRONT, gl.FRONT_AND_BACK]; + this.glFilter = [gl.NEAREST, gl.LINEAR, gl.NEAREST_MIPMAP_NEAREST, gl.NEAREST_MIPMAP_LINEAR, gl.LINEAR_MIPMAP_NEAREST, gl.LINEAR_MIPMAP_LINEAR]; + this.glPrimitive = [gl.POINTS, gl.LINES, gl.LINE_LOOP, gl.LINE_STRIP, gl.TRIANGLES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN]; + this.glType = [gl.BYTE, gl.UNSIGNED_BYTE, gl.SHORT, gl.UNSIGNED_SHORT, gl.INT, gl.UNSIGNED_INT, gl.FLOAT, gl.HALF_FLOAT]; + this.pcUniformType = {}; + this.pcUniformType[gl.BOOL] = UNIFORMTYPE_BOOL; + this.pcUniformType[gl.INT] = UNIFORMTYPE_INT; + this.pcUniformType[gl.FLOAT] = UNIFORMTYPE_FLOAT; + this.pcUniformType[gl.FLOAT_VEC2] = UNIFORMTYPE_VEC2; + this.pcUniformType[gl.FLOAT_VEC3] = UNIFORMTYPE_VEC3; + this.pcUniformType[gl.FLOAT_VEC4] = UNIFORMTYPE_VEC4; + this.pcUniformType[gl.INT_VEC2] = UNIFORMTYPE_IVEC2; + this.pcUniformType[gl.INT_VEC3] = UNIFORMTYPE_IVEC3; + this.pcUniformType[gl.INT_VEC4] = UNIFORMTYPE_IVEC4; + this.pcUniformType[gl.BOOL_VEC2] = UNIFORMTYPE_BVEC2; + this.pcUniformType[gl.BOOL_VEC3] = UNIFORMTYPE_BVEC3; + this.pcUniformType[gl.BOOL_VEC4] = UNIFORMTYPE_BVEC4; + this.pcUniformType[gl.FLOAT_MAT2] = UNIFORMTYPE_MAT2; + this.pcUniformType[gl.FLOAT_MAT3] = UNIFORMTYPE_MAT3; + this.pcUniformType[gl.FLOAT_MAT4] = UNIFORMTYPE_MAT4; + this.pcUniformType[gl.SAMPLER_2D] = UNIFORMTYPE_TEXTURE2D; + this.pcUniformType[gl.SAMPLER_CUBE] = UNIFORMTYPE_TEXTURECUBE; + this.pcUniformType[gl.UNSIGNED_INT] = UNIFORMTYPE_UINT; + this.pcUniformType[gl.UNSIGNED_INT_VEC2] = UNIFORMTYPE_UVEC2; + this.pcUniformType[gl.UNSIGNED_INT_VEC3] = UNIFORMTYPE_UVEC3; + this.pcUniformType[gl.UNSIGNED_INT_VEC4] = UNIFORMTYPE_UVEC4; + if (this.isWebGL2) { + this.pcUniformType[gl.SAMPLER_2D_SHADOW] = UNIFORMTYPE_TEXTURE2D_SHADOW; + this.pcUniformType[gl.SAMPLER_CUBE_SHADOW] = UNIFORMTYPE_TEXTURECUBE_SHADOW; + this.pcUniformType[gl.SAMPLER_2D_ARRAY] = UNIFORMTYPE_TEXTURE2D_ARRAY; + this.pcUniformType[gl.SAMPLER_3D] = UNIFORMTYPE_TEXTURE3D; + this.pcUniformType[gl.INT_SAMPLER_2D] = UNIFORMTYPE_ITEXTURE2D; + this.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D] = UNIFORMTYPE_UTEXTURE2D; + this.pcUniformType[gl.INT_SAMPLER_CUBE] = UNIFORMTYPE_ITEXTURECUBE; + this.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D] = UNIFORMTYPE_UTEXTURECUBE; + this.pcUniformType[gl.INT_SAMPLER_3D] = UNIFORMTYPE_ITEXTURE3D; + this.pcUniformType[gl.UNSIGNED_INT_SAMPLER_3D] = UNIFORMTYPE_UTEXTURE3D; + this.pcUniformType[gl.INT_SAMPLER_2D_ARRAY] = UNIFORMTYPE_ITEXTURE2D_ARRAY; + this.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D_ARRAY] = UNIFORMTYPE_UTEXTURE2D_ARRAY; + } + this.targetToSlot = {}; + this.targetToSlot[gl.TEXTURE_2D] = 0; + this.targetToSlot[gl.TEXTURE_CUBE_MAP] = 1; + this.targetToSlot[gl.TEXTURE_3D] = 2; + let scopeX, scopeY, scopeZ, scopeW; + let uniformValue; + this.commitFunction = []; + this.commitFunction[UNIFORMTYPE_BOOL] = function(uniform, value) { + if (uniform.value !== value) { + gl.uniform1i(uniform.locationId, value); + uniform.value = value; + } + }; + this.commitFunction[UNIFORMTYPE_INT] = this.commitFunction[UNIFORMTYPE_BOOL]; + this.commitFunction[UNIFORMTYPE_FLOAT] = function(uniform, value) { + if (uniform.value !== value) { + gl.uniform1f(uniform.locationId, value); + uniform.value = value; + } + }; + this.commitFunction[UNIFORMTYPE_VEC2] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) { + gl.uniform2fv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + } + }; + this.commitFunction[UNIFORMTYPE_VEC3] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + scopeZ = value[2]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) { + gl.uniform3fv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + uniformValue[2] = scopeZ; + } + }; + this.commitFunction[UNIFORMTYPE_VEC4] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + scopeZ = value[2]; + scopeW = value[3]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) { + gl.uniform4fv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + uniformValue[2] = scopeZ; + uniformValue[3] = scopeW; + } + }; + this.commitFunction[UNIFORMTYPE_IVEC2] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) { + gl.uniform2iv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + } + }; + this.commitFunction[UNIFORMTYPE_BVEC2] = this.commitFunction[UNIFORMTYPE_IVEC2]; + this.commitFunction[UNIFORMTYPE_IVEC3] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + scopeZ = value[2]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) { + gl.uniform3iv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + uniformValue[2] = scopeZ; + } + }; + this.commitFunction[UNIFORMTYPE_BVEC3] = this.commitFunction[UNIFORMTYPE_IVEC3]; + this.commitFunction[UNIFORMTYPE_IVEC4] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + scopeZ = value[2]; + scopeW = value[3]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) { + gl.uniform4iv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + uniformValue[2] = scopeZ; + uniformValue[3] = scopeW; + } + }; + this.commitFunction[UNIFORMTYPE_BVEC4] = this.commitFunction[UNIFORMTYPE_IVEC4]; + this.commitFunction[UNIFORMTYPE_MAT2] = function(uniform, value) { + gl.uniformMatrix2fv(uniform.locationId, false, value); + }; + this.commitFunction[UNIFORMTYPE_MAT3] = function(uniform, value) { + gl.uniformMatrix3fv(uniform.locationId, false, value); + }; + this.commitFunction[UNIFORMTYPE_MAT4] = function(uniform, value) { + gl.uniformMatrix4fv(uniform.locationId, false, value); + }; + this.commitFunction[UNIFORMTYPE_FLOATARRAY] = function(uniform, value) { + gl.uniform1fv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_VEC2ARRAY] = function(uniform, value) { + gl.uniform2fv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_VEC3ARRAY] = function(uniform, value) { + gl.uniform3fv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_VEC4ARRAY] = function(uniform, value) { + gl.uniform4fv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_UINT] = function(uniform, value) { + if (uniform.value !== value) { + gl.uniform1ui(uniform.locationId, value); + uniform.value = value; + } + }; + this.commitFunction[UNIFORMTYPE_UVEC2] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) { + gl.uniform2uiv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + } + }; + this.commitFunction[UNIFORMTYPE_UVEC3] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + scopeZ = value[2]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) { + gl.uniform3uiv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + uniformValue[2] = scopeZ; + } + }; + this.commitFunction[UNIFORMTYPE_UVEC4] = function(uniform, value) { + uniformValue = uniform.value; + scopeX = value[0]; + scopeY = value[1]; + scopeZ = value[2]; + scopeW = value[3]; + if (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) { + gl.uniform4uiv(uniform.locationId, value); + uniformValue[0] = scopeX; + uniformValue[1] = scopeY; + uniformValue[2] = scopeZ; + uniformValue[3] = scopeW; + } + }; + this.commitFunction[UNIFORMTYPE_INTARRAY] = function(uniform, value) { + gl.uniform1iv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_UINTARRAY] = function(uniform, value) { + gl.uniform1uiv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_BOOLARRAY] = this.commitFunction[UNIFORMTYPE_INTARRAY]; + this.commitFunction[UNIFORMTYPE_IVEC2ARRAY] = function(uniform, value) { + gl.uniform2iv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_UVEC2ARRAY] = function(uniform, value) { + gl.uniform2uiv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_BVEC2ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC2ARRAY]; + this.commitFunction[UNIFORMTYPE_IVEC3ARRAY] = function(uniform, value) { + gl.uniform3iv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_UVEC3ARRAY] = function(uniform, value) { + gl.uniform3uiv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_BVEC3ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC3ARRAY]; + this.commitFunction[UNIFORMTYPE_IVEC4ARRAY] = function(uniform, value) { + gl.uniform4iv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_UVEC4ARRAY] = function(uniform, value) { + gl.uniform4uiv(uniform.locationId, value); + }; + this.commitFunction[UNIFORMTYPE_BVEC4ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC4ARRAY]; + this.commitFunction[UNIFORMTYPE_MAT4ARRAY] = function(uniform, value) { + gl.uniformMatrix4fv(uniform.locationId, false, value); + }; + this.supportsBoneTextures = this.extTextureFloat && this.maxVertexTextures > 0; + let numUniforms = this.vertexUniformsCount; + numUniforms -= 4 * 4; + numUniforms -= 8; + numUniforms -= 1; + numUniforms -= 4 * 4; + this.boneLimit = Math.floor(numUniforms / 3); + this.boneLimit = Math.min(this.boneLimit, 128); + this.constantTexSource = this.scope.resolve("source"); + if (this.extTextureFloat) { + if (this.isWebGL2) { + this.textureFloatRenderable = !!this.extColorBufferFloat; + } else { + this.textureFloatRenderable = testRenderable(gl, gl.FLOAT); + } + } else { + this.textureFloatRenderable = false; + } + if (this.extColorBufferHalfFloat) { + this.textureHalfFloatRenderable = !!this.extColorBufferHalfFloat; + } else if (this.extTextureHalfFloat) { + if (this.isWebGL2) { + this.textureHalfFloatRenderable = !!this.extColorBufferFloat; + } else { + this.textureHalfFloatRenderable = testRenderable(gl, this.extTextureHalfFloat.HALF_FLOAT_OES); + } + } else { + this.textureHalfFloatRenderable = false; + } + this.supportsMorphTargetTexturesCore = this.maxPrecision === "highp" && this.maxVertexTextures >= 2; + this.supportsDepthShadow = this.isWebGL2; + this._textureFloatHighPrecision = void 0; + this._textureHalfFloatUpdatable = void 0; + this.areaLightLutFormat = PIXELFORMAT_RGBA8; + if (this.extTextureHalfFloat && this.textureHalfFloatUpdatable && this.extTextureHalfFloatLinear) { + this.areaLightLutFormat = PIXELFORMAT_RGBA16F; + } else if (this.extTextureFloat && this.extTextureFloatLinear) { + this.areaLightLutFormat = PIXELFORMAT_RGBA32F; + } + this.postInit(); + } + postInit() { + super.postInit(); + this.gpuProfiler = new WebglGpuProfiler(this); + } + destroy() { + super.destroy(); + const gl = this.gl; + if (this.isWebGL2 && this.feedback) { + gl.deleteTransformFeedback(this.feedback); + } + this.clearVertexArrayObjectCache(); + this.canvas.removeEventListener("webglcontextlost", this._contextLostHandler, false); + this.canvas.removeEventListener("webglcontextrestored", this._contextRestoredHandler, false); + this._contextLostHandler = null; + this._contextRestoredHandler = null; + this.gl = null; + super.postDestroy(); + } + createBackbuffer(frameBuffer) { + this.supportsStencil = this.initOptions.stencil; + this.backBuffer = new RenderTarget({ + name: "WebglFramebuffer", + graphicsDevice: this, + depth: this.initOptions.depth, + stencil: this.supportsStencil, + samples: this.samples + }); + this.backBuffer.impl.suppliedColorFramebuffer = frameBuffer; + } + updateBackbufferFormat(framebuffer) { + const gl = this.gl; + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + const alphaBits = this.gl.getParameter(this.gl.ALPHA_BITS); + this.backBufferFormat = alphaBits ? PIXELFORMAT_RGBA8 : PIXELFORMAT_RGB8; + } + updateBackbuffer() { + const resolutionChanged = this.canvas.width !== this.backBufferSize.x || this.canvas.height !== this.backBufferSize.y; + if (this._defaultFramebufferChanged || resolutionChanged) { + if (this._defaultFramebufferChanged) { + this.updateBackbufferFormat(this._defaultFramebuffer); + } + this._defaultFramebufferChanged = false; + this.backBufferSize.set(this.canvas.width, this.canvas.height); + this.backBuffer.destroy(); + this.createBackbuffer(this._defaultFramebuffer); + } + } + createVertexBufferImpl(vertexBuffer, format) { + return new WebglVertexBuffer(); + } + createIndexBufferImpl(indexBuffer) { + return new WebglIndexBuffer(indexBuffer); + } + createShaderImpl(shader) { + return new WebglShader(shader); + } + createTextureImpl(texture) { + return new WebglTexture(); + } + createRenderTargetImpl(renderTarget) { + return new WebglRenderTarget(); + } + getPrecision() { + const gl = this.gl; + let precision = "highp"; + if (gl.getShaderPrecisionFormat) { + const vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT); + const vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT); + const fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT); + const fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT); + if (vertexShaderPrecisionHighpFloat && vertexShaderPrecisionMediumpFloat && fragmentShaderPrecisionHighpFloat && fragmentShaderPrecisionMediumpFloat) { + const highpAvailable = vertexShaderPrecisionHighpFloat.precision > 0 && fragmentShaderPrecisionHighpFloat.precision > 0; + const mediumpAvailable = vertexShaderPrecisionMediumpFloat.precision > 0 && fragmentShaderPrecisionMediumpFloat.precision > 0; + if (!highpAvailable) { + if (mediumpAvailable) { + precision = "mediump"; + } else { + precision = "lowp"; + } + } + } + } + return precision; + } + getExtension() { + for (let i = 0; i < arguments.length; i++) { + if (this.supportedExtensions.indexOf(arguments[i]) !== -1) { + return this.gl.getExtension(arguments[i]); + } + } + return null; + } + get extDisjointTimerQuery() { + if (!this._extDisjointTimerQuery) { + if (this.isWebGL2) { + this._extDisjointTimerQuery = this.getExtension("EXT_disjoint_timer_query_webgl2", "EXT_disjoint_timer_query"); + } + } + return this._extDisjointTimerQuery; + } + initializeExtensions() { + var _gl$getSupportedExten; + const gl = this.gl; + this.supportedExtensions = (_gl$getSupportedExten = gl.getSupportedExtensions()) != null ? _gl$getSupportedExten : []; + this._extDisjointTimerQuery = null; + if (this.isWebGL2) { + this.extBlendMinmax = true; + this.extDrawBuffers = true; + this.drawBuffers = gl.drawBuffers.bind(gl); + this.extInstancing = true; + this.extStandardDerivatives = true; + this.extTextureFloat = true; + this.extTextureHalfFloat = true; + this.textureHalfFloatFilterable = true; + this.extTextureLod = true; + this.extUintElement = true; + this.extVertexArrayObject = true; + this.extColorBufferFloat = this.getExtension("EXT_color_buffer_float"); + this.extDepthTexture = true; + this.textureRG11B10Renderable = true; + } else { + var _this$extDrawBuffers; + this.extBlendMinmax = this.getExtension("EXT_blend_minmax"); + this.extDrawBuffers = this.getExtension("WEBGL_draw_buffers"); + this.extInstancing = this.getExtension("ANGLE_instanced_arrays"); + this.drawBuffers = (_this$extDrawBuffers = this.extDrawBuffers) == null ? void 0 : _this$extDrawBuffers.drawBuffersWEBGL.bind(this.extDrawBuffers); + if (this.extInstancing) { + const ext = this.extInstancing; + gl.drawArraysInstanced = ext.drawArraysInstancedANGLE.bind(ext); + gl.drawElementsInstanced = ext.drawElementsInstancedANGLE.bind(ext); + gl.vertexAttribDivisor = ext.vertexAttribDivisorANGLE.bind(ext); + } + this.extStandardDerivatives = this.getExtension("OES_standard_derivatives"); + this.extTextureFloat = this.getExtension("OES_texture_float"); + this.extTextureLod = this.getExtension("EXT_shader_texture_lod"); + this.extUintElement = this.getExtension("OES_element_index_uint"); + this.extVertexArrayObject = this.getExtension("OES_vertex_array_object"); + if (this.extVertexArrayObject) { + const ext = this.extVertexArrayObject; + gl.createVertexArray = ext.createVertexArrayOES.bind(ext); + gl.deleteVertexArray = ext.deleteVertexArrayOES.bind(ext); + gl.isVertexArray = ext.isVertexArrayOES.bind(ext); + gl.bindVertexArray = ext.bindVertexArrayOES.bind(ext); + } + this.extColorBufferFloat = null; + this.extDepthTexture = gl.getExtension("WEBGL_depth_texture"); + this.extTextureHalfFloat = this.getExtension("OES_texture_half_float"); + this.extTextureHalfFloatLinear = this.getExtension("OES_texture_half_float_linear"); + this.textureHalfFloatFilterable = !!this.extTextureHalfFloatLinear; + } + this.extDebugRendererInfo = this.getExtension("WEBGL_debug_renderer_info"); + this.extTextureFloatLinear = this.getExtension("OES_texture_float_linear"); + this.textureFloatFilterable = !!this.extTextureFloatLinear; + this.extFloatBlend = this.getExtension("EXT_float_blend"); + this.extTextureFilterAnisotropic = this.getExtension("EXT_texture_filter_anisotropic", "WEBKIT_EXT_texture_filter_anisotropic"); + this.extCompressedTextureETC1 = this.getExtension("WEBGL_compressed_texture_etc1"); + this.extCompressedTextureETC = this.getExtension("WEBGL_compressed_texture_etc"); + this.extCompressedTexturePVRTC = this.getExtension("WEBGL_compressed_texture_pvrtc", "WEBKIT_WEBGL_compressed_texture_pvrtc"); + this.extCompressedTextureS3TC = this.getExtension("WEBGL_compressed_texture_s3tc", "WEBKIT_WEBGL_compressed_texture_s3tc"); + this.extCompressedTextureATC = this.getExtension("WEBGL_compressed_texture_atc"); + this.extCompressedTextureASTC = this.getExtension("WEBGL_compressed_texture_astc"); + this.extParallelShaderCompile = this.getExtension("KHR_parallel_shader_compile"); + this.extColorBufferHalfFloat = this.getExtension("EXT_color_buffer_half_float"); + } + initializeCapabilities() { + var _contextAttribs$antia, _contextAttribs$stenc; + const gl = this.gl; + let ext; + const userAgent = typeof navigator !== "undefined" ? navigator.userAgent : ""; + this.maxPrecision = this.precision = this.getPrecision(); + const contextAttribs = gl.getContextAttributes(); + this.supportsMsaa = (_contextAttribs$antia = contextAttribs == null ? void 0 : contextAttribs.antialias) != null ? _contextAttribs$antia : false; + this.supportsStencil = (_contextAttribs$stenc = contextAttribs == null ? void 0 : contextAttribs.stencil) != null ? _contextAttribs$stenc : false; + this.supportsInstancing = !!this.extInstancing; + this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + this.maxCubeMapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE); + this.maxRenderBufferSize = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE); + this.maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + this.maxCombinedTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS); + this.maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS); + this.vertexUniformsCount = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS); + this.fragmentUniformsCount = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS); + if (this.isWebGL2) { + this.maxDrawBuffers = gl.getParameter(gl.MAX_DRAW_BUFFERS); + this.maxColorAttachments = gl.getParameter(gl.MAX_COLOR_ATTACHMENTS); + this.maxVolumeSize = gl.getParameter(gl.MAX_3D_TEXTURE_SIZE); + this.supportsMrt = true; + this.supportsVolumeTextures = true; + } else { + ext = this.extDrawBuffers; + this.supportsMrt = !!ext; + this.maxDrawBuffers = ext ? gl.getParameter(ext.MAX_DRAW_BUFFERS_WEBGL) : 1; + this.maxColorAttachments = ext ? gl.getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 1; + this.maxVolumeSize = 1; + } + ext = this.extDebugRendererInfo; + this.unmaskedRenderer = ext ? gl.getParameter(ext.UNMASKED_RENDERER_WEBGL) : ""; + this.unmaskedVendor = ext ? gl.getParameter(ext.UNMASKED_VENDOR_WEBGL) : ""; + const maliRendererRegex = /\bMali-G52+/; + const samsungModelRegex = /SM-[a-zA-Z0-9]+/; + this.supportsGpuParticles = !(this.unmaskedVendor === "ARM" && userAgent.match(samsungModelRegex)) && !this.unmaskedRenderer.match(maliRendererRegex); + ext = this.extTextureFilterAnisotropic; + this.maxAnisotropy = ext ? gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1; + const antialiasSupported = this.isWebGL2 && !this.forceDisableMultisampling; + this.maxSamples = antialiasSupported ? gl.getParameter(gl.MAX_SAMPLES) : 1; + this.maxSamples = Math.min(this.maxSamples, 4); + this.samples = antialiasSupported && this.backBufferAntialias ? this.maxSamples : 1; + this.supportsAreaLights = this.isWebGL2 || !platform.android; + this.supportsTextureFetch = this.isWebGL2; + if (this.maxTextures <= 8) { + this.supportsAreaLights = false; + } + } + initializeRenderState() { + super.initializeRenderState(); + const gl = this.gl; + gl.disable(gl.BLEND); + gl.blendFunc(gl.ONE, gl.ZERO); + gl.blendEquation(gl.FUNC_ADD); + gl.colorMask(true, true, true, true); + gl.blendColor(0, 0, 0, 0); + gl.enable(gl.CULL_FACE); + this.cullFace = gl.BACK; + gl.cullFace(gl.BACK); + gl.enable(gl.DEPTH_TEST); + gl.depthFunc(gl.LEQUAL); + gl.depthMask(true); + this.stencil = false; + gl.disable(gl.STENCIL_TEST); + this.stencilFuncFront = this.stencilFuncBack = FUNC_ALWAYS; + this.stencilRefFront = this.stencilRefBack = 0; + this.stencilMaskFront = this.stencilMaskBack = 255; + gl.stencilFunc(gl.ALWAYS, 0, 255); + this.stencilFailFront = this.stencilFailBack = STENCILOP_KEEP; + this.stencilZfailFront = this.stencilZfailBack = STENCILOP_KEEP; + this.stencilZpassFront = this.stencilZpassBack = STENCILOP_KEEP; + this.stencilWriteMaskFront = 255; + this.stencilWriteMaskBack = 255; + gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP); + gl.stencilMask(255); + this.alphaToCoverage = false; + this.raster = true; + if (this.isWebGL2) { + gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + gl.disable(gl.RASTERIZER_DISCARD); + } + this.depthBiasEnabled = false; + gl.disable(gl.POLYGON_OFFSET_FILL); + this.clearDepth = 1; + gl.clearDepth(1); + this.clearColor = new Color(0, 0, 0, 0); + gl.clearColor(0, 0, 0, 0); + this.clearStencil = 0; + gl.clearStencil(0); + if (this.isWebGL2) { + gl.hint(gl.FRAGMENT_SHADER_DERIVATIVE_HINT, gl.NICEST); + } else { + if (this.extStandardDerivatives) { + gl.hint(this.extStandardDerivatives.FRAGMENT_SHADER_DERIVATIVE_HINT_OES, gl.NICEST); + } + } + gl.enable(gl.SCISSOR_TEST); + gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE); + this.unpackFlipY = false; + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + this.unpackPremultiplyAlpha = false; + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); + gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1); + } + initTextureUnits(count = 16) { + this.textureUnits = []; + for (let i = 0; i < count; i++) { + this.textureUnits.push([null, null, null]); + } + } + initializeContextCaches() { + super.initializeContextCaches(); + this._vaoMap = /* @__PURE__ */ new Map(); + this.boundVao = null; + this.activeFramebuffer = null; + this.feedback = null; + this.transformFeedbackBuffer = null; + this.textureUnit = 0; + this.initTextureUnits(this.maxCombinedTextures); + } + loseContext() { + super.loseContext(); + for (const shader of this.shaders) { + shader.loseContext(); + } + } + restoreContext() { + this.initializeExtensions(); + this.initializeCapabilities(); + super.restoreContext(); + for (const shader of this.shaders) { + shader.restoreContext(); + } + } + setViewport(x2, y2, w, h) { + if (this.vx !== x2 || this.vy !== y2 || this.vw !== w || this.vh !== h) { + this.gl.viewport(x2, y2, w, h); + this.vx = x2; + this.vy = y2; + this.vw = w; + this.vh = h; + } + } + setScissor(x2, y2, w, h) { + if (this.sx !== x2 || this.sy !== y2 || this.sw !== w || this.sh !== h) { + this.gl.scissor(x2, y2, w, h); + this.sx = x2; + this.sy = y2; + this.sw = w; + this.sh = h; + } + } + setFramebuffer(fb) { + if (this.activeFramebuffer !== fb) { + const gl = this.gl; + gl.bindFramebuffer(gl.FRAMEBUFFER, fb); + this.activeFramebuffer = fb; + } + } + copyRenderTarget(source, dest, color, depth) { + const gl = this.gl; + if (source === this.backBuffer) { + source = null; + } + if (!this.isWebGL2 && depth) { + return false; + } + if (color) { + if (!dest) { + if (!source._colorBuffer) { + return false; + } + } else if (source) { + if (!source._colorBuffer || !dest._colorBuffer) { + return false; + } + if (source._colorBuffer._format !== dest._colorBuffer._format) { + return false; + } + } + } + if (depth && source) { + if (!source._depth) { + if (!source._depthBuffer || !dest._depthBuffer) { + return false; + } + if (source._depthBuffer._format !== dest._depthBuffer._format) { + return false; + } + } + } + if (this.isWebGL2) { + var _this$backBuffer, _this$backBuffer2; + const prevRt = this.renderTarget; + this.renderTarget = dest; + this.updateBegin(); + const src = source ? source.impl._glFrameBuffer : (_this$backBuffer = this.backBuffer) == null ? void 0 : _this$backBuffer.impl._glFrameBuffer; + const dst = dest ? dest.impl._glFrameBuffer : (_this$backBuffer2 = this.backBuffer) == null ? void 0 : _this$backBuffer2.impl._glFrameBuffer; + gl.bindFramebuffer(gl.READ_FRAMEBUFFER, src); + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dst); + const w = source ? source.width : dest ? dest.width : this.width; + const h = source ? source.height : dest ? dest.height : this.height; + gl.blitFramebuffer(0, 0, w, h, 0, 0, w, h, (color ? gl.COLOR_BUFFER_BIT : 0) | (depth ? gl.DEPTH_BUFFER_BIT : 0), gl.NEAREST); + this.renderTarget = prevRt; + gl.bindFramebuffer(gl.FRAMEBUFFER, prevRt ? prevRt.impl._glFrameBuffer : null); + } else { + const shader = this.getCopyShader(); + this.constantTexSource.setValue(source._colorBuffer); + quadWithShader(this, dest, shader); + } + return true; + } + getCopyShader() { + if (!this._copyShader) { + this._copyShader = new Shader(this, ShaderUtils.createDefinition(this, { + name: "outputTex2D", + vertexCode: _fullScreenQuadVS, + fragmentCode: _outputTexture2D + })); + } + return this._copyShader; + } + frameStart() { + super.frameStart(); + this.updateBackbuffer(); + this.gpuProfiler.frameStart(); + } + frameEnd() { + super.frameEnd(); + this.gpuProfiler.frameEnd(); + this.gpuProfiler.request(); + } + startRenderPass(renderPass) { + var _renderPass$renderTar; + const rt = (_renderPass$renderTar = renderPass.renderTarget) != null ? _renderPass$renderTar : this.backBuffer; + this.renderTarget = rt; + this.updateBegin(); + const { + width, + height + } = rt; + this.setViewport(0, 0, width, height); + this.setScissor(0, 0, width, height); + const colorOps = renderPass.colorOps; + const depthStencilOps = renderPass.depthStencilOps; + if (colorOps != null && colorOps.clear || depthStencilOps.clearDepth || depthStencilOps.clearStencil) { + let clearFlags = 0; + const clearOptions = {}; + if (colorOps != null && colorOps.clear) { + clearFlags |= CLEARFLAG_COLOR; + clearOptions.color = [colorOps.clearValue.r, colorOps.clearValue.g, colorOps.clearValue.b, colorOps.clearValue.a]; + } + if (depthStencilOps.clearDepth) { + clearFlags |= CLEARFLAG_DEPTH; + clearOptions.depth = depthStencilOps.clearDepthValue; + } + if (depthStencilOps.clearStencil) { + clearFlags |= CLEARFLAG_STENCIL; + clearOptions.stencil = depthStencilOps.clearStencilValue; + } + clearOptions.flags = clearFlags; + this.clear(clearOptions); + } + this.insideRenderPass = true; + } + endRenderPass(renderPass) { + this.unbindVertexArray(); + const target2 = this.renderTarget; + const colorBufferCount = renderPass.colorArrayOps.length; + if (target2) { + var _renderPass$colorOps; + if (this.isWebGL2) { + invalidateAttachments.length = 0; + const gl = this.gl; + for (let i = 0; i < colorBufferCount; i++) { + const colorOps = renderPass.colorArrayOps[i]; + if (!(colorOps.store || colorOps.resolve)) { + invalidateAttachments.push(gl.COLOR_ATTACHMENT0 + i); + } + } + if (target2 !== this.backBuffer) { + if (!renderPass.depthStencilOps.storeDepth) { + invalidateAttachments.push(gl.DEPTH_ATTACHMENT); + } + if (!renderPass.depthStencilOps.storeStencil) { + invalidateAttachments.push(gl.STENCIL_ATTACHMENT); + } + } + if (invalidateAttachments.length > 0) { + if (renderPass.fullSizeClearRect) { + gl.invalidateFramebuffer(gl.DRAW_FRAMEBUFFER, invalidateAttachments); + } + } + } + if ((_renderPass$colorOps = renderPass.colorOps) != null && _renderPass$colorOps.resolve) { + if (this.isWebGL2 && renderPass.samples > 1 && target2.autoResolve) { + target2.resolve(true, false); + } + } + for (let i = 0; i < colorBufferCount; i++) { + const colorOps = renderPass.colorArrayOps[i]; + if (colorOps.mipmaps) { + const colorBuffer = target2._colorBuffers[i]; + if (colorBuffer && colorBuffer.impl._glTexture && colorBuffer.mipmaps && (colorBuffer.pot || this.isWebGL2)) { + this.activeTexture(this.maxCombinedTextures - 1); + this.bindTexture(colorBuffer); + this.gl.generateMipmap(colorBuffer.impl._glTarget); + } + } + } + } + this.insideRenderPass = false; + } + set defaultFramebuffer(value) { + if (this._defaultFramebuffer !== value) { + this._defaultFramebuffer = value; + this._defaultFramebufferChanged = true; + } + } + get defaultFramebuffer() { + return this._defaultFramebuffer; + } + updateBegin() { + var _this$renderTarget; + this.boundVao = null; + if (this._tempEnableSafariTextureUnitWorkaround) { + for (let unit = 0; unit < this.textureUnits.length; ++unit) { + for (let slot = 0; slot < 3; ++slot) { + this.textureUnits[unit][slot] = null; + } + } + } + const target2 = (_this$renderTarget = this.renderTarget) != null ? _this$renderTarget : this.backBuffer; + const targetImpl = target2.impl; + if (!targetImpl.initialized) { + this.initRenderTarget(target2); + } + this.setFramebuffer(targetImpl._glFrameBuffer); + } + updateEnd() { + this.unbindVertexArray(); + const target2 = this.renderTarget; + if (target2 && target2 !== this.backBuffer) { + if (this.isWebGL2 && target2._samples > 1 && target2.autoResolve) { + target2.resolve(); + } + const colorBuffer = target2._colorBuffer; + if (colorBuffer && colorBuffer.impl._glTexture && colorBuffer.mipmaps && (colorBuffer.pot || this.isWebGL2)) { + this.activeTexture(this.maxCombinedTextures - 1); + this.bindTexture(colorBuffer); + this.gl.generateMipmap(colorBuffer.impl._glTarget); + } + } + } + setUnpackFlipY(flipY) { + if (this.unpackFlipY !== flipY) { + this.unpackFlipY = flipY; + const gl = this.gl; + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); + } + } + setUnpackPremultiplyAlpha(premultiplyAlpha) { + if (this.unpackPremultiplyAlpha !== premultiplyAlpha) { + this.unpackPremultiplyAlpha = premultiplyAlpha; + const gl = this.gl; + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha); + } + } + activeTexture(textureUnit) { + if (this.textureUnit !== textureUnit) { + this.gl.activeTexture(this.gl.TEXTURE0 + textureUnit); + this.textureUnit = textureUnit; + } + } + bindTexture(texture) { + const impl = texture.impl; + const textureTarget = impl._glTarget; + const textureObject = impl._glTexture; + const textureUnit = this.textureUnit; + const slot = this.targetToSlot[textureTarget]; + if (this.textureUnits[textureUnit][slot] !== textureObject) { + this.gl.bindTexture(textureTarget, textureObject); + this.textureUnits[textureUnit][slot] = textureObject; + } + } + bindTextureOnUnit(texture, textureUnit) { + const impl = texture.impl; + const textureTarget = impl._glTarget; + const textureObject = impl._glTexture; + const slot = this.targetToSlot[textureTarget]; + if (this.textureUnits[textureUnit][slot] !== textureObject) { + this.activeTexture(textureUnit); + this.gl.bindTexture(textureTarget, textureObject); + this.textureUnits[textureUnit][slot] = textureObject; + } + } + setTextureParameters(texture) { + const gl = this.gl; + const flags = texture.impl.dirtyParameterFlags; + const target2 = texture.impl._glTarget; + if (flags & 1) { + let filter = texture._minFilter; + if (!texture.pot && !this.isWebGL2 || !texture._mipmaps || texture._compressed && texture._levels.length === 1) { + if (filter === FILTER_NEAREST_MIPMAP_NEAREST || filter === FILTER_NEAREST_MIPMAP_LINEAR) { + filter = FILTER_NEAREST; + } else if (filter === FILTER_LINEAR_MIPMAP_NEAREST || filter === FILTER_LINEAR_MIPMAP_LINEAR) { + filter = FILTER_LINEAR; + } + } + gl.texParameteri(target2, gl.TEXTURE_MIN_FILTER, this.glFilter[filter]); + } + if (flags & 2) { + gl.texParameteri(target2, gl.TEXTURE_MAG_FILTER, this.glFilter[texture._magFilter]); + } + if (flags & 4) { + if (this.isWebGL2) { + gl.texParameteri(target2, gl.TEXTURE_WRAP_S, this.glAddress[texture._addressU]); + } else { + gl.texParameteri(target2, gl.TEXTURE_WRAP_S, this.glAddress[texture.pot ? texture._addressU : ADDRESS_CLAMP_TO_EDGE]); + } + } + if (flags & 8) { + if (this.isWebGL2) { + gl.texParameteri(target2, gl.TEXTURE_WRAP_T, this.glAddress[texture._addressV]); + } else { + gl.texParameteri(target2, gl.TEXTURE_WRAP_T, this.glAddress[texture.pot ? texture._addressV : ADDRESS_CLAMP_TO_EDGE]); + } + } + if (flags & 16) { + if (this.isWebGL2) { + gl.texParameteri(target2, gl.TEXTURE_WRAP_R, this.glAddress[texture._addressW]); + } + } + if (flags & 32) { + if (this.isWebGL2) { + gl.texParameteri(target2, gl.TEXTURE_COMPARE_MODE, texture._compareOnRead ? gl.COMPARE_REF_TO_TEXTURE : gl.NONE); + } + } + if (flags & 64) { + if (this.isWebGL2) { + gl.texParameteri(target2, gl.TEXTURE_COMPARE_FUNC, this.glComparison[texture._compareFunc]); + } + } + if (flags & 128) { + const ext = this.extTextureFilterAnisotropic; + if (ext) { + gl.texParameterf(target2, ext.TEXTURE_MAX_ANISOTROPY_EXT, math.clamp(Math.round(texture._anisotropy), 1, this.maxAnisotropy)); + } + } + } + setTexture(texture, textureUnit) { + const impl = texture.impl; + if (!impl._glTexture) impl.initialize(this, texture); + if (impl.dirtyParameterFlags > 0 || texture._needsUpload || texture._needsMipmapsUpload) { + this.activeTexture(textureUnit); + this.bindTexture(texture); + if (impl.dirtyParameterFlags) { + this.setTextureParameters(texture); + impl.dirtyParameterFlags = 0; + } + if (texture._needsUpload || texture._needsMipmapsUpload) { + impl.upload(this, texture); + texture._needsUpload = false; + texture._needsMipmapsUpload = false; + } + } else { + this.bindTextureOnUnit(texture, textureUnit); + } + } + createVertexArray(vertexBuffers) { + let key, vao; + const useCache = vertexBuffers.length > 1; + if (useCache) { + key = ""; + for (let i = 0; i < vertexBuffers.length; i++) { + const vertexBuffer = vertexBuffers[i]; + key += vertexBuffer.id + vertexBuffer.format.renderingHash; + } + vao = this._vaoMap.get(key); + } + if (!vao) { + const gl = this.gl; + vao = gl.createVertexArray(); + gl.bindVertexArray(vao); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + for (let i = 0; i < vertexBuffers.length; i++) { + const vertexBuffer = vertexBuffers[i]; + gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer.impl.bufferId); + const elements = vertexBuffer.format.elements; + for (let j = 0; j < elements.length; j++) { + const e = elements[j]; + const loc = semanticToLocation[e.name]; + if (e.asInt) { + gl.vertexAttribIPointer(loc, e.numComponents, this.glType[e.dataType], e.stride, e.offset); + } else { + gl.vertexAttribPointer(loc, e.numComponents, this.glType[e.dataType], e.normalize, e.stride, e.offset); + } + gl.enableVertexAttribArray(loc); + if (vertexBuffer.format.instancing) { + gl.vertexAttribDivisor(loc, 1); + } + } + } + gl.bindVertexArray(null); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + if (useCache) { + this._vaoMap.set(key, vao); + } + } + return vao; + } + unbindVertexArray() { + if (this.boundVao) { + this.boundVao = null; + this.gl.bindVertexArray(null); + } + } + setBuffers() { + const gl = this.gl; + let vao; + if (this.vertexBuffers.length === 1) { + const vertexBuffer = this.vertexBuffers[0]; + if (!vertexBuffer.impl.vao) { + vertexBuffer.impl.vao = this.createVertexArray(this.vertexBuffers); + } + vao = vertexBuffer.impl.vao; + } else { + vao = this.createVertexArray(this.vertexBuffers); + } + if (this.boundVao !== vao) { + this.boundVao = vao; + gl.bindVertexArray(vao); + } + this.clearVertexBuffer(); + const bufferId = this.indexBuffer ? this.indexBuffer.impl.bufferId : null; + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, bufferId); + } + draw(primitive2, numInstances, keepBuffers) { + const gl = this.gl; + this.activateShader(this); + if (!this.shaderValid) return; + let sampler, samplerValue, texture, numTextures; + let uniform, scopeId, uniformVersion, programVersion; + const shader = this.shader; + if (!shader) return; + const samplers = shader.impl.samplers; + const uniforms = shader.impl.uniforms; + if (!keepBuffers) { + this.setBuffers(); + } + let textureUnit = 0; + for (let i = 0, len = samplers.length; i < len; i++) { + sampler = samplers[i]; + samplerValue = sampler.scopeId.value; + if (!samplerValue) { + return; + } + if (samplerValue instanceof Texture) { + texture = samplerValue; + this.setTexture(texture, textureUnit); + if (sampler.slot !== textureUnit) { + gl.uniform1i(sampler.locationId, textureUnit); + sampler.slot = textureUnit; + } + textureUnit++; + } else { + sampler.array.length = 0; + numTextures = samplerValue.length; + for (let j = 0; j < numTextures; j++) { + texture = samplerValue[j]; + this.setTexture(texture, textureUnit); + sampler.array[j] = textureUnit; + textureUnit++; + } + gl.uniform1iv(sampler.locationId, sampler.array); + } + } + for (let i = 0, len = uniforms.length; i < len; i++) { + uniform = uniforms[i]; + scopeId = uniform.scopeId; + uniformVersion = uniform.version; + programVersion = scopeId.versionObject.version; + if (uniformVersion.globalId !== programVersion.globalId || uniformVersion.revision !== programVersion.revision) { + uniformVersion.globalId = programVersion.globalId; + uniformVersion.revision = programVersion.revision; + if (scopeId.value !== null) { + this.commitFunction[uniform.dataType](uniform, scopeId.value); + } + } + } + if (this.isWebGL2 && this.transformFeedbackBuffer) { + gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, this.transformFeedbackBuffer.impl.bufferId); + gl.beginTransformFeedback(gl.POINTS); + } + const mode = this.glPrimitive[primitive2.type]; + const count = primitive2.count; + if (primitive2.indexed) { + const indexBuffer = this.indexBuffer; + const format = indexBuffer.impl.glFormat; + const offset = primitive2.base * indexBuffer.bytesPerIndex; + if (numInstances > 0) { + gl.drawElementsInstanced(mode, count, format, offset, numInstances); + } else { + gl.drawElements(mode, count, format, offset); + } + } else { + const first = primitive2.base; + if (numInstances > 0) { + gl.drawArraysInstanced(mode, first, count, numInstances); + } else { + gl.drawArrays(mode, first, count); + } + } + if (this.isWebGL2 && this.transformFeedbackBuffer) { + gl.endTransformFeedback(); + gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, null); + } + this._drawCallsPerFrame++; + } + clear(options) { + var _options$flags; + const defaultOptions = this.defaultClearOptions; + options = options || defaultOptions; + const flags = (_options$flags = options.flags) != null ? _options$flags : defaultOptions.flags; + if (flags !== 0) { + const gl = this.gl; + if (flags & CLEARFLAG_COLOR) { + var _options$color; + const color = (_options$color = options.color) != null ? _options$color : defaultOptions.color; + const r = color[0]; + const g = color[1]; + const b = color[2]; + const a = color[3]; + const c2 = this.clearColor; + if (r !== c2.r || g !== c2.g || b !== c2.b || a !== c2.a) { + this.gl.clearColor(r, g, b, a); + this.clearColor.set(r, g, b, a); + } + this.setBlendState(BlendState.NOBLEND); + } + if (flags & CLEARFLAG_DEPTH) { + var _options$depth; + const depth = (_options$depth = options.depth) != null ? _options$depth : defaultOptions.depth; + if (depth !== this.clearDepth) { + this.gl.clearDepth(depth); + this.clearDepth = depth; + } + this.setDepthState(DepthState.WRITEDEPTH); + } + if (flags & CLEARFLAG_STENCIL) { + var _options$stencil; + const stencil = (_options$stencil = options.stencil) != null ? _options$stencil : defaultOptions.stencil; + if (stencil !== this.clearStencil) { + this.gl.clearStencil(stencil); + this.clearStencil = stencil; + } + gl.stencilMask(255); + this.stencilWriteMaskFront = 255; + this.stencilWriteMaskBack = 255; + } + gl.clear(this.glClearFlag[flags]); + } + } + submit() { + this.gl.flush(); + } + readPixels(x2, y2, w, h, pixels) { + const gl = this.gl; + gl.readPixels(x2, y2, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels); + } + async readPixelsAsync(x2, y2, w, h, pixels) { + var _this$renderTarget$co, _impl$_glFormat, _impl$_glPixelType; + const gl = this.gl; + if (!this.isWebGL2) { + this.readPixels(x2, y2, w, h, pixels); + return; + } + const clientWaitAsync = (flags, interval_ms) => { + const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0); + this.submit(); + return new Promise((resolve, reject) => { + function test() { + const res = gl.clientWaitSync(sync, flags, 0); + if (res === gl.WAIT_FAILED) { + gl.deleteSync(sync); + reject(new Error("webgl clientWaitSync sync failed")); + } else if (res === gl.TIMEOUT_EXPIRED) { + setTimeout(test, interval_ms); + } else { + gl.deleteSync(sync); + resolve(); + } + } + test(); + }); + }; + const impl = (_this$renderTarget$co = this.renderTarget.colorBuffer) == null ? void 0 : _this$renderTarget$co.impl; + const format = (_impl$_glFormat = impl == null ? void 0 : impl._glFormat) != null ? _impl$_glFormat : gl.RGBA; + const pixelType = (_impl$_glPixelType = impl == null ? void 0 : impl._glPixelType) != null ? _impl$_glPixelType : gl.UNSIGNED_BYTE; + const buf = gl.createBuffer(); + gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf); + gl.bufferData(gl.PIXEL_PACK_BUFFER, pixels.byteLength, gl.STREAM_READ); + gl.readPixels(x2, y2, w, h, format, pixelType, 0); + gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null); + await clientWaitAsync(0, 20); + gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf); + gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, pixels); + gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null); + gl.deleteBuffer(buf); + } + setAlphaToCoverage(state) { + if (this.isWebGL1) return; + if (this.alphaToCoverage === state) return; + this.alphaToCoverage = state; + if (state) { + this.gl.enable(this.gl.SAMPLE_ALPHA_TO_COVERAGE); + } else { + this.gl.disable(this.gl.SAMPLE_ALPHA_TO_COVERAGE); + } + } + setTransformFeedbackBuffer(tf) { + if (this.transformFeedbackBuffer === tf) return; + this.transformFeedbackBuffer = tf; + if (this.isWebGL2) { + const gl = this.gl; + if (tf) { + if (!this.feedback) { + this.feedback = gl.createTransformFeedback(); + } + gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, this.feedback); + } else { + gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null); + } + } + } + setRaster(on) { + if (this.raster === on) return; + this.raster = on; + if (this.isWebGL2) { + if (on) { + this.gl.disable(this.gl.RASTERIZER_DISCARD); + } else { + this.gl.enable(this.gl.RASTERIZER_DISCARD); + } + } + } + setStencilTest(enable) { + if (this.stencil !== enable) { + const gl = this.gl; + if (enable) { + gl.enable(gl.STENCIL_TEST); + } else { + gl.disable(gl.STENCIL_TEST); + } + this.stencil = enable; + } + } + setStencilFunc(func, ref, mask) { + if (this.stencilFuncFront !== func || this.stencilRefFront !== ref || this.stencilMaskFront !== mask || this.stencilFuncBack !== func || this.stencilRefBack !== ref || this.stencilMaskBack !== mask) { + this.gl.stencilFunc(this.glComparison[func], ref, mask); + this.stencilFuncFront = this.stencilFuncBack = func; + this.stencilRefFront = this.stencilRefBack = ref; + this.stencilMaskFront = this.stencilMaskBack = mask; + } + } + setStencilFuncFront(func, ref, mask) { + if (this.stencilFuncFront !== func || this.stencilRefFront !== ref || this.stencilMaskFront !== mask) { + const gl = this.gl; + gl.stencilFuncSeparate(gl.FRONT, this.glComparison[func], ref, mask); + this.stencilFuncFront = func; + this.stencilRefFront = ref; + this.stencilMaskFront = mask; + } + } + setStencilFuncBack(func, ref, mask) { + if (this.stencilFuncBack !== func || this.stencilRefBack !== ref || this.stencilMaskBack !== mask) { + const gl = this.gl; + gl.stencilFuncSeparate(gl.BACK, this.glComparison[func], ref, mask); + this.stencilFuncBack = func; + this.stencilRefBack = ref; + this.stencilMaskBack = mask; + } + } + setStencilOperation(fail, zfail, zpass, writeMask) { + if (this.stencilFailFront !== fail || this.stencilZfailFront !== zfail || this.stencilZpassFront !== zpass || this.stencilFailBack !== fail || this.stencilZfailBack !== zfail || this.stencilZpassBack !== zpass) { + this.gl.stencilOp(this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]); + this.stencilFailFront = this.stencilFailBack = fail; + this.stencilZfailFront = this.stencilZfailBack = zfail; + this.stencilZpassFront = this.stencilZpassBack = zpass; + } + if (this.stencilWriteMaskFront !== writeMask || this.stencilWriteMaskBack !== writeMask) { + this.gl.stencilMask(writeMask); + this.stencilWriteMaskFront = writeMask; + this.stencilWriteMaskBack = writeMask; + } + } + setStencilOperationFront(fail, zfail, zpass, writeMask) { + if (this.stencilFailFront !== fail || this.stencilZfailFront !== zfail || this.stencilZpassFront !== zpass) { + this.gl.stencilOpSeparate(this.gl.FRONT, this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]); + this.stencilFailFront = fail; + this.stencilZfailFront = zfail; + this.stencilZpassFront = zpass; + } + if (this.stencilWriteMaskFront !== writeMask) { + this.gl.stencilMaskSeparate(this.gl.FRONT, writeMask); + this.stencilWriteMaskFront = writeMask; + } + } + setStencilOperationBack(fail, zfail, zpass, writeMask) { + if (this.stencilFailBack !== fail || this.stencilZfailBack !== zfail || this.stencilZpassBack !== zpass) { + this.gl.stencilOpSeparate(this.gl.BACK, this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]); + this.stencilFailBack = fail; + this.stencilZfailBack = zfail; + this.stencilZpassBack = zpass; + } + if (this.stencilWriteMaskBack !== writeMask) { + this.gl.stencilMaskSeparate(this.gl.BACK, writeMask); + this.stencilWriteMaskBack = writeMask; + } + } + setBlendState(blendState) { + const currentBlendState = this.blendState; + if (!currentBlendState.equals(blendState)) { + const gl = this.gl; + const { + blend, + colorOp, + alphaOp, + colorSrcFactor, + colorDstFactor, + alphaSrcFactor, + alphaDstFactor + } = blendState; + if (currentBlendState.blend !== blend) { + if (blend) { + gl.enable(gl.BLEND); + } else { + gl.disable(gl.BLEND); + } + } + if (currentBlendState.colorOp !== colorOp || currentBlendState.alphaOp !== alphaOp) { + const glBlendEquation = this.glBlendEquation; + gl.blendEquationSeparate(glBlendEquation[colorOp], glBlendEquation[alphaOp]); + } + if (currentBlendState.colorSrcFactor !== colorSrcFactor || currentBlendState.colorDstFactor !== colorDstFactor || currentBlendState.alphaSrcFactor !== alphaSrcFactor || currentBlendState.alphaDstFactor !== alphaDstFactor) { + gl.blendFuncSeparate(this.glBlendFunctionColor[colorSrcFactor], this.glBlendFunctionColor[colorDstFactor], this.glBlendFunctionAlpha[alphaSrcFactor], this.glBlendFunctionAlpha[alphaDstFactor]); + } + if (currentBlendState.allWrite !== blendState.allWrite) { + this.gl.colorMask(blendState.redWrite, blendState.greenWrite, blendState.blueWrite, blendState.alphaWrite); + } + currentBlendState.copy(blendState); + } + } + setBlendColor(r, g, b, a) { + const c2 = this.blendColor; + if (r !== c2.r || g !== c2.g || b !== c2.b || a !== c2.a) { + this.gl.blendColor(r, g, b, a); + c2.set(r, g, b, a); + } + } + setStencilState(stencilFront, stencilBack) { + if (stencilFront || stencilBack) { + this.setStencilTest(true); + if (stencilFront === stencilBack) { + this.setStencilFunc(stencilFront.func, stencilFront.ref, stencilFront.readMask); + this.setStencilOperation(stencilFront.fail, stencilFront.zfail, stencilFront.zpass, stencilFront.writeMask); + } else { + var _stencilFront, _stencilBack; + (_stencilFront = stencilFront) != null ? _stencilFront : stencilFront = StencilParameters.DEFAULT; + this.setStencilFuncFront(stencilFront.func, stencilFront.ref, stencilFront.readMask); + this.setStencilOperationFront(stencilFront.fail, stencilFront.zfail, stencilFront.zpass, stencilFront.writeMask); + (_stencilBack = stencilBack) != null ? _stencilBack : stencilBack = StencilParameters.DEFAULT; + this.setStencilFuncBack(stencilBack.func, stencilBack.ref, stencilBack.readMask); + this.setStencilOperationBack(stencilBack.fail, stencilBack.zfail, stencilBack.zpass, stencilBack.writeMask); + } + } else { + this.setStencilTest(false); + } + } + setDepthState(depthState) { + const currentDepthState = this.depthState; + if (!currentDepthState.equals(depthState)) { + const gl = this.gl; + const write = depthState.write; + if (currentDepthState.write !== write) { + gl.depthMask(write); + } + let { + func, + test + } = depthState; + if (!test && write) { + test = true; + func = FUNC_ALWAYS; + } + if (currentDepthState.func !== func) { + gl.depthFunc(this.glComparison[func]); + } + if (currentDepthState.test !== test) { + if (test) { + gl.enable(gl.DEPTH_TEST); + } else { + gl.disable(gl.DEPTH_TEST); + } + } + const { + depthBias, + depthBiasSlope + } = depthState; + if (depthBias || depthBiasSlope) { + if (!this.depthBiasEnabled) { + this.depthBiasEnabled = true; + this.gl.enable(this.gl.POLYGON_OFFSET_FILL); + } + gl.polygonOffset(depthBiasSlope, depthBias); + } else { + if (this.depthBiasEnabled) { + this.depthBiasEnabled = false; + this.gl.disable(this.gl.POLYGON_OFFSET_FILL); + } + } + currentDepthState.copy(depthState); + } + } + setCullMode(cullMode) { + if (this.cullMode !== cullMode) { + if (cullMode === CULLFACE_NONE) { + this.gl.disable(this.gl.CULL_FACE); + } else { + if (this.cullMode === CULLFACE_NONE) { + this.gl.enable(this.gl.CULL_FACE); + } + const mode = this.glCull[cullMode]; + if (this.cullFace !== mode) { + this.gl.cullFace(mode); + this.cullFace = mode; + } + } + this.cullMode = cullMode; + } + } + setShader(shader, asyncCompile = false) { + if (shader !== this.shader) { + this.shader = shader; + this.shaderAsyncCompile = asyncCompile; + this.shaderValid = void 0; + } + } + activateShader(device) { + const { + shader + } = this; + const { + impl + } = shader; + if (this.shaderValid === void 0) { + if (shader.failed) { + this.shaderValid = false; + } else if (!shader.ready) { + if (this.shaderAsyncCompile) { + if (impl.isLinked(device)) { + if (!impl.finalize(this, shader)) { + shader.failed = true; + this.shaderValid = false; + } + } else { + this.shaderValid = false; + } + } else { + if (!impl.finalize(this, shader)) { + shader.failed = true; + this.shaderValid = false; + } + } + } + } + if (this.shaderValid === void 0) { + this.gl.useProgram(impl.glProgram); + this.shaderValid = true; + } + } + clearVertexArrayObjectCache() { + const gl = this.gl; + this._vaoMap.forEach((item, key, mapObj) => { + gl.deleteVertexArray(item); + }); + this._vaoMap.clear(); + } + set fullscreen(fullscreen) { + if (fullscreen) { + const canvas = this.gl.canvas; + canvas.requestFullscreen(); + } else { + document.exitFullscreen(); + } + } + get fullscreen() { + return !!document.fullscreenElement; + } + get textureFloatHighPrecision() { + if (this._textureFloatHighPrecision === void 0) { + this._textureFloatHighPrecision = testTextureFloatHighPrecision(this); + } + return this._textureFloatHighPrecision; + } + get textureHalfFloatUpdatable() { + if (this._textureHalfFloatUpdatable === void 0) { + if (this.isWebGL2) { + this._textureHalfFloatUpdatable = true; + } else { + this._textureHalfFloatUpdatable = testTextureHalfFloatUpdatable(this.gl, this.extTextureHalfFloat.HALF_FLOAT_OES); + } + } + return this._textureHalfFloatUpdatable; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-index-buffer.js +var NullIndexBuffer = class { + unlock(indexBuffer) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-render-target.js +var NullRenderTarget = class { + destroy(device) { + } + init(device, renderTarget) { + } + loseContext() { + } + resolve(device, target2, color, depth) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-shader.js +var NullShader = class { + destroy(shader) { + } + loseContext() { + } + restoreContext(device, shader) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-texture.js +var NullTexture = class { + destroy(device) { + } + propertyChanged(flag) { + } + loseContext() { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-vertex-buffer.js +var NullVertexBuffer = class { + destroy(device) { + } + unlock(vertexBuffer) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-graphics-device.js +var NullGraphicsDevice = class extends GraphicsDevice { + constructor(canvas, options = {}) { + super(canvas, options); + options = this.initOptions; + this.isNull = true; + this._deviceType = DEVICETYPE_NULL; + this.samples = 1; + } + destroy() { + super.destroy(); + } + initDeviceCaps() { + this.disableParticleSystem = true; + this.precision = "highp"; + this.maxPrecision = "highp"; + this.maxSamples = 4; + this.maxTextures = 16; + this.maxTextureSize = 4096; + this.maxCubeMapSize = 4096; + this.maxVolumeSize = 4096; + this.maxColorAttachments = 8; + this.maxPixelRatio = 1; + this.maxAnisotropy = 16; + this.supportsInstancing = true; + this.supportsUniformBuffers = false; + this.supportsVolumeTextures = true; + this.supportsBoneTextures = true; + this.supportsMorphTargetTexturesCore = true; + this.supportsAreaLights = true; + this.supportsDepthShadow = true; + this.supportsGpuParticles = false; + this.supportsMrt = true; + this.extUintElement = true; + this.extTextureFloat = true; + this.textureFloatRenderable = true; + this.extTextureHalfFloat = true; + this.textureHalfFloatRenderable = true; + this.textureHalfFloatUpdatable = true; + this.boneLimit = 1024; + this.supportsImageBitmap = true; + this.extStandardDerivatives = true; + this.extBlendMinmax = true; + this.areaLightLutFormat = PIXELFORMAT_RGBA8; + this.supportsTextureFetch = true; + } + postInit() { + super.postInit(); + } + frameStart() { + super.frameStart(); + } + frameEnd() { + super.frameEnd(); + } + updateBegin() { + } + updateEnd() { + } + readPixels(x2, y2, w, h, pixels) { + } + createVertexBufferImpl(vertexBuffer, format) { + return new NullVertexBuffer(vertexBuffer, format); + } + createIndexBufferImpl(indexBuffer) { + return new NullIndexBuffer(indexBuffer); + } + createShaderImpl(shader) { + return new NullShader(shader); + } + createTextureImpl(texture) { + return new NullTexture(texture); + } + createRenderTargetImpl(renderTarget) { + return new NullRenderTarget(renderTarget); + } + draw(primitive2, numInstances = 1, keepBuffers) { + } + setShader(shader, asyncCompile = false) { + } + setBlendState(blendState) { + } + setDepthState(depthState) { + } + setStencilState(stencilFront, stencilBack) { + } + setBlendColor(r, g, b, a) { + } + setCullMode(cullMode) { + } + setAlphaToCoverage(state) { + } + initializeContextCaches() { + super.initializeContextCaches(); + } + clear(options) { + } + setViewport(x2, y2, w, h) { + } + setScissor(x2, y2, w, h) { + } + copyRenderTarget(source, dest, color, depth) { + return true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/graphics-device-create.js +function createGraphicsDevice(canvas, options = {}) { + var _options$deviceTypes; + const deviceTypes = (_options$deviceTypes = options.deviceTypes) != null ? _options$deviceTypes : []; + if (!deviceTypes.includes(DEVICETYPE_WEBGL2)) { + deviceTypes.push(DEVICETYPE_WEBGL2); + } + if (!deviceTypes.includes(DEVICETYPE_WEBGL1)) { + deviceTypes.push(DEVICETYPE_WEBGL1); + } + if (!deviceTypes.includes(DEVICETYPE_NULL)) { + deviceTypes.push(DEVICETYPE_NULL); + } + if (platform.browser && !!navigator.xr) { + var _options$xrCompatible; + (_options$xrCompatible = options.xrCompatible) != null ? _options$xrCompatible : options.xrCompatible = true; + } + const deviceCreateFuncs = []; + for (let i = 0; i < deviceTypes.length; i++) { + var _window; + const deviceType = deviceTypes[i]; + if (deviceType === DEVICETYPE_WEBGPU && (_window = window) != null && (_window = _window.navigator) != null && _window.gpu) { + deviceCreateFuncs.push(() => { + const device = new WebgpuGraphicsDevice(canvas, options); + return device.initWebGpu(options.glslangUrl, options.twgslUrl); + }); + } + if (deviceType === DEVICETYPE_WEBGL1 || deviceType === DEVICETYPE_WEBGL2) { + deviceCreateFuncs.push(() => { + options.preferWebGl2 = deviceType === DEVICETYPE_WEBGL2; + return new WebglGraphicsDevice(canvas, options); + }); + } + if (deviceType === DEVICETYPE_NULL) { + deviceCreateFuncs.push(() => { + return new NullGraphicsDevice(canvas, options); + }); + } + } + return new Promise((resolve, reject) => { + let attempt = 0; + const next = () => { + if (attempt >= deviceCreateFuncs.length) { + reject(new Error("Failed to create a graphics device")); + } else { + Promise.resolve(deviceCreateFuncs[attempt++]()).then((device) => { + if (device) { + resolve(device); + } else { + next(); + } + }).catch((err) => { + console.log(err); + next(); + }); + } + }; + next(); + }); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/index-buffer.js +var id7 = 0; +var IndexBuffer = class { + constructor(graphicsDevice, format, numIndices, usage = BUFFER_STATIC, initialData, options) { + this.device = graphicsDevice; + this.format = format; + this.numIndices = numIndices; + this.usage = usage; + this.id = id7++; + this.impl = graphicsDevice.createIndexBufferImpl(this, options); + const bytesPerIndex = typedArrayIndexFormatsByteSize[format]; + this.bytesPerIndex = bytesPerIndex; + this.numBytes = this.numIndices * bytesPerIndex; + if (initialData) { + this.setData(initialData); + } else { + this.storage = new ArrayBuffer(this.numBytes); + } + this.adjustVramSizeTracking(graphicsDevice._vram, this.numBytes); + this.device.buffers.push(this); + } + destroy() { + const device = this.device; + const idx = device.buffers.indexOf(this); + if (idx !== -1) { + device.buffers.splice(idx, 1); + } + if (this.device.indexBuffer === this) { + this.device.indexBuffer = null; + } + if (this.impl.initialized) { + this.impl.destroy(device); + this.adjustVramSizeTracking(device._vram, -this.storage.byteLength); + } + } + adjustVramSizeTracking(vram, size) { + vram.ib += size; + } + loseContext() { + this.impl.loseContext(); + } + getFormat() { + return this.format; + } + getNumIndices() { + return this.numIndices; + } + lock() { + return this.storage; + } + unlock() { + this.impl.unlock(this); + } + setData(data2) { + if (data2.byteLength !== this.numBytes) { + return false; + } + this.storage = data2; + this.unlock(); + return true; + } + _lockTypedArray() { + const lock = this.lock(); + const indices = this.format === INDEXFORMAT_UINT32 ? new Uint32Array(lock) : this.format === INDEXFORMAT_UINT16 ? new Uint16Array(lock) : new Uint8Array(lock); + return indices; + } + writeData(data2, count) { + const indices = this._lockTypedArray(); + if (data2.length > count) { + if (ArrayBuffer.isView(data2)) { + data2 = data2.subarray(0, count); + indices.set(data2); + } else { + for (let i = 0; i < count; i++) indices[i] = data2[i]; + } + } else { + indices.set(data2); + } + this.unlock(); + } + readData(data2) { + const indices = this._lockTypedArray(); + const count = this.numIndices; + if (ArrayBuffer.isView(data2)) { + data2.set(indices); + } else { + data2.length = 0; + for (let i = 0; i < count; i++) data2[i] = indices[i]; + } + return count; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/render-pass.js +var ColorAttachmentOps = class { + constructor() { + this.clearValue = new Color(0, 0, 0, 1); + this.clear = false; + this.store = false; + this.resolve = true; + this.mipmaps = false; + } +}; +var DepthStencilAttachmentOps = class { + constructor() { + this.clearDepthValue = 1; + this.clearStencilValue = 0; + this.clearDepth = false; + this.clearStencil = false; + this.storeDepth = false; + this.storeStencil = false; + } +}; +var RenderPass = class { + get colorOps() { + return this.colorArrayOps[0]; + } + constructor(graphicsDevice) { + this._name = void 0; + this.device = void 0; + this._enabled = true; + this.executeEnabled = true; + this.renderTarget = void 0; + this._options = void 0; + this.samples = 0; + this.colorArrayOps = []; + this.depthStencilOps = void 0; + this.requiresCubemaps = true; + this.fullSizeClearRect = true; + this.beforePasses = []; + this.afterPasses = []; + this.device = graphicsDevice; + } + set name(value) { + this._name = value; + } + get name() { + if (!this._name) this._name = this.constructor.name; + return this._name; + } + set options(value) { + this._options = value; + if (value) { + var _this$_options$scaleX, _this$_options$scaleY; + this._options.scaleX = (_this$_options$scaleX = this._options.scaleX) != null ? _this$_options$scaleX : 1; + this._options.scaleY = (_this$_options$scaleY = this._options.scaleY) != null ? _this$_options$scaleY : 1; + } + } + get options() { + return this._options; + } + init(renderTarget = null, options = null) { + var _renderTarget$_colorB; + this.options = options; + this.renderTarget = renderTarget; + this.samples = Math.max(this.renderTarget ? this.renderTarget.samples : this.device.samples, 1); + this.depthStencilOps = new DepthStencilAttachmentOps(); + const numColorOps = renderTarget ? (_renderTarget$_colorB = renderTarget._colorBuffers) == null ? void 0 : _renderTarget$_colorB.length : 1; + this.colorArrayOps.length = 0; + for (let i = 0; i < numColorOps; i++) { + var _this$renderTarget; + const colorOps = new ColorAttachmentOps(); + this.colorArrayOps[i] = colorOps; + if (this.samples === 1) { + colorOps.store = true; + colorOps.resolve = false; + } + if ((_this$renderTarget = this.renderTarget) != null && (_this$renderTarget = _this$renderTarget._colorBuffers) != null && _this$renderTarget[i].mipmaps) { + colorOps.mipmaps = true; + } + } + this.postInit(); + } + destroy() { + } + postInit() { + } + frameUpdate() { + if (this._options && this.renderTarget) { + var _this$_options$resize; + const resizeSource = (_this$_options$resize = this._options.resizeSource) != null ? _this$_options$resize : this.device.backBuffer; + const width = Math.floor(resizeSource.width * this._options.scaleX); + const height = Math.floor(resizeSource.height * this._options.scaleY); + this.renderTarget.resize(width, height); + } + } + before() { + } + execute() { + } + after() { + } + onEnable() { + } + onDisable() { + } + set enabled(value) { + if (this._enabled !== value) { + this._enabled = value; + if (value) { + this.onEnable(); + } else { + this.onDisable(); + } + } + } + get enabled() { + return this._enabled; + } + setClearColor(color) { + const count = this.colorArrayOps.length; + for (let i = 0; i < count; i++) { + const colorOps = this.colorArrayOps[i]; + if (color) colorOps.clearValue.copy(color); + colorOps.clear = !!color; + } + } + setClearDepth(depthValue) { + if (depthValue) this.depthStencilOps.clearDepthValue = depthValue; + this.depthStencilOps.clearDepth = depthValue !== void 0; + } + setClearStencil(stencilValue) { + if (stencilValue) this.depthStencilOps.clearStencilValue = stencilValue; + this.depthStencilOps.clearStencil = stencilValue !== void 0; + } + render() { + if (this.enabled) { + const device = this.device; + const realPass = this.renderTarget !== void 0; + this.before(); + if (this.executeEnabled) { + if (realPass) { + device.startRenderPass(this); + } + this.execute(); + if (realPass) { + device.endRenderPass(this); + } + } + this.after(); + device.renderPassIndex++; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-processor-options.js +var ShaderProcessorOptions = class { + constructor(viewUniformFormat, viewBindGroupFormat, vertexFormat) { + this.uniformFormats = []; + this.bindGroupFormats = []; + this.vertexFormat = void 0; + this.uniformFormats[BINDGROUP_VIEW] = viewUniformFormat; + this.bindGroupFormats[BINDGROUP_VIEW] = viewBindGroupFormat; + this.vertexFormat = vertexFormat; + } + hasUniform(name) { + for (let i = 0; i < this.uniformFormats.length; i++) { + const uniformFormat = this.uniformFormats[i]; + if (uniformFormat != null && uniformFormat.get(name)) { + return true; + } + } + return false; + } + hasTexture(name) { + for (let i = 0; i < this.bindGroupFormats.length; i++) { + const groupFormat = this.bindGroupFormats[i]; + if (groupFormat != null && groupFormat.getTexture(name)) { + return true; + } + } + return false; + } + getVertexElement(semantic) { + var _this$vertexFormat; + return (_this$vertexFormat = this.vertexFormat) == null ? void 0 : _this$vertexFormat.elements.find((element) => element.name === semantic); + } + generateKey(device) { + let key = JSON.stringify(this.uniformFormats) + JSON.stringify(this.bindGroupFormats); + if (device.isWebGPU) { + var _this$vertexFormat2; + key += (_this$vertexFormat2 = this.vertexFormat) == null ? void 0 : _this$vertexFormat2.shaderProcessingHashString; + } + return key; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/vertex-iterator.js +function set1(a) { + this.array[this.index] = a; +} +function set2(a, b) { + this.array[this.index] = a; + this.array[this.index + 1] = b; +} +function set3(a, b, c2) { + this.array[this.index] = a; + this.array[this.index + 1] = b; + this.array[this.index + 2] = c2; +} +function set4(a, b, c2, d) { + this.array[this.index] = a; + this.array[this.index + 1] = b; + this.array[this.index + 2] = c2; + this.array[this.index + 3] = d; +} +function arraySet1(index, inputArray, inputIndex) { + this.array[index] = inputArray[inputIndex]; +} +function arraySet2(index, inputArray, inputIndex) { + this.array[index] = inputArray[inputIndex]; + this.array[index + 1] = inputArray[inputIndex + 1]; +} +function arraySet3(index, inputArray, inputIndex) { + this.array[index] = inputArray[inputIndex]; + this.array[index + 1] = inputArray[inputIndex + 1]; + this.array[index + 2] = inputArray[inputIndex + 2]; +} +function arraySet4(index, inputArray, inputIndex) { + this.array[index] = inputArray[inputIndex]; + this.array[index + 1] = inputArray[inputIndex + 1]; + this.array[index + 2] = inputArray[inputIndex + 2]; + this.array[index + 3] = inputArray[inputIndex + 3]; +} +function arrayGet1(offset, outputArray, outputIndex) { + outputArray[outputIndex] = this.array[offset]; +} +function arrayGet2(offset, outputArray, outputIndex) { + outputArray[outputIndex] = this.array[offset]; + outputArray[outputIndex + 1] = this.array[offset + 1]; +} +function arrayGet3(offset, outputArray, outputIndex) { + outputArray[outputIndex] = this.array[offset]; + outputArray[outputIndex + 1] = this.array[offset + 1]; + outputArray[outputIndex + 2] = this.array[offset + 2]; +} +function arrayGet4(offset, outputArray, outputIndex) { + outputArray[outputIndex] = this.array[offset]; + outputArray[outputIndex + 1] = this.array[offset + 1]; + outputArray[outputIndex + 2] = this.array[offset + 2]; + outputArray[outputIndex + 3] = this.array[offset + 3]; +} +var VertexIteratorAccessor = class { + constructor(buffer, vertexElement, vertexFormat) { + this.index = 0; + this.numComponents = vertexElement.numComponents; + if (vertexFormat.interleaved) { + this.array = new typedArrayTypes[vertexElement.dataType](buffer, vertexElement.offset); + } else { + this.array = new typedArrayTypes[vertexElement.dataType](buffer, vertexElement.offset, vertexFormat.vertexCount * vertexElement.numComponents); + } + this.stride = vertexElement.stride / this.array.constructor.BYTES_PER_ELEMENT; + switch (vertexElement.numComponents) { + case 1: + this.set = set1; + this.getToArray = arrayGet1; + this.setFromArray = arraySet1; + break; + case 2: + this.set = set2; + this.getToArray = arrayGet2; + this.setFromArray = arraySet2; + break; + case 3: + this.set = set3; + this.getToArray = arrayGet3; + this.setFromArray = arraySet3; + break; + case 4: + this.set = set4; + this.getToArray = arrayGet4; + this.setFromArray = arraySet4; + break; + } + } + get(offset) { + return this.array[this.index + offset]; + } + set(a, b, c2, d) { + } + getToArray(offset, outputArray, outputIndex) { + } + setFromArray(index, inputArray, inputIndex) { + } +}; +var VertexIterator = class { + constructor(vertexBuffer) { + this.vertexBuffer = vertexBuffer; + this.vertexFormatSize = vertexBuffer.getFormat().size; + this.buffer = this.vertexBuffer.lock(); + this.accessors = []; + this.element = {}; + const vertexFormat = this.vertexBuffer.getFormat(); + for (let i = 0; i < vertexFormat.elements.length; i++) { + const vertexElement = vertexFormat.elements[i]; + this.accessors[i] = new VertexIteratorAccessor(this.buffer, vertexElement, vertexFormat); + this.element[vertexElement.name] = this.accessors[i]; + } + } + next(count = 1) { + let i = 0; + const accessors = this.accessors; + const numAccessors = this.accessors.length; + while (i < numAccessors) { + const accessor = accessors[i++]; + accessor.index += count * accessor.stride; + } + } + end() { + this.vertexBuffer.unlock(); + } + writeData(semantic, data2, numVertices) { + const element = this.element[semantic]; + if (element) { + if (numVertices > this.vertexBuffer.numVertices) { + numVertices = this.vertexBuffer.numVertices; + } + const numComponents = element.numComponents; + if (this.vertexBuffer.getFormat().interleaved) { + let index = 0; + for (let i = 0; i < numVertices; i++) { + element.setFromArray(index, data2, i * numComponents); + index += element.stride; + } + } else { + if (data2.length > numVertices * numComponents) { + const copyCount = numVertices * numComponents; + if (ArrayBuffer.isView(data2)) { + data2 = data2.subarray(0, copyCount); + element.array.set(data2); + } else { + for (let i = 0; i < copyCount; i++) element.array[i] = data2[i]; + } + } else { + element.array.set(data2); + } + } + } + } + readData(semantic, data2) { + const element = this.element[semantic]; + let count = 0; + if (element) { + count = this.vertexBuffer.numVertices; + let i; + const numComponents = element.numComponents; + if (this.vertexBuffer.getFormat().interleaved) { + if (Array.isArray(data2)) data2.length = 0; + element.index = 0; + let offset = 0; + for (i = 0; i < count; i++) { + element.getToArray(offset, data2, i * numComponents); + offset += element.stride; + } + } else { + if (ArrayBuffer.isView(data2)) { + data2.set(element.array); + } else { + data2.length = 0; + const copyCount = count * numComponents; + for (i = 0; i < copyCount; i++) data2[i] = element.array[i]; + } + } + } + return count; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/input/constants.js +var EVENT_MOUSEDOWN = "mousedown"; +var EVENT_MOUSEMOVE = "mousemove"; +var EVENT_MOUSEUP = "mouseup"; +var EVENT_MOUSEWHEEL = "mousewheel"; +var MOUSEBUTTON_NONE = -1; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/input/mouse-event.js +function isMousePointerLocked() { + return !!(document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement); +} +var MouseEvent = class _MouseEvent { + constructor(mouse, event) { + var _event$ctrlKey, _event$altKey, _event$shiftKey, _event$metaKey; + this.x = 0; + this.y = 0; + this.dx = 0; + this.dy = 0; + this.button = MOUSEBUTTON_NONE; + this.wheelDelta = 0; + this.element = void 0; + this.ctrlKey = false; + this.altKey = false; + this.shiftKey = false; + this.metaKey = false; + this.event = void 0; + let coords = { + x: 0, + y: 0 + }; + if (event) { + if (event instanceof _MouseEvent) { + throw Error("Expected MouseEvent"); + } + coords = mouse._getTargetCoords(event); + } else { + event = {}; + } + if (coords) { + this.x = coords.x; + this.y = coords.y; + } else if (isMousePointerLocked()) { + this.x = 0; + this.y = 0; + } else { + return; + } + if (event.type === "wheel") { + if (event.deltaY > 0) { + this.wheelDelta = 1; + } else if (event.deltaY < 0) { + this.wheelDelta = -1; + } + } + if (isMousePointerLocked()) { + this.dx = event.movementX || event.webkitMovementX || event.mozMovementX || 0; + this.dy = event.movementY || event.webkitMovementY || event.mozMovementY || 0; + } else { + this.dx = this.x - mouse._lastX; + this.dy = this.y - mouse._lastY; + } + if (event.type === "mousedown" || event.type === "mouseup") { + this.button = event.button; + } + this.buttons = mouse._buttons.slice(0); + this.element = event.target; + this.ctrlKey = (_event$ctrlKey = event.ctrlKey) != null ? _event$ctrlKey : false; + this.altKey = (_event$altKey = event.altKey) != null ? _event$altKey : false; + this.shiftKey = (_event$shiftKey = event.shiftKey) != null ? _event$shiftKey : false; + this.metaKey = (_event$metaKey = event.metaKey) != null ? _event$metaKey : false; + this.event = event; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/input/mouse.js +var Mouse = class extends EventHandler { + constructor(element) { + super(); + this._lastX = 0; + this._lastY = 0; + this._buttons = [false, false, false]; + this._lastbuttons = [false, false, false]; + this._target = null; + this._attached = false; + this._upHandler = this._handleUp.bind(this); + this._downHandler = this._handleDown.bind(this); + this._moveHandler = this._handleMove.bind(this); + this._wheelHandler = this._handleWheel.bind(this); + this._contextMenuHandler = (event) => { + event.preventDefault(); + }; + this.attach(element); + } + static isPointerLocked() { + return isMousePointerLocked(); + } + attach(element) { + this._target = element; + if (this._attached) return; + this._attached = true; + const passiveOptions = { + passive: false + }; + const options = platform.passiveEvents ? passiveOptions : false; + window.addEventListener("mouseup", this._upHandler, options); + window.addEventListener("mousedown", this._downHandler, options); + window.addEventListener("mousemove", this._moveHandler, options); + window.addEventListener("wheel", this._wheelHandler, options); + } + detach() { + if (!this._attached) return; + this._attached = false; + this._target = null; + const passiveOptions = { + passive: false + }; + const options = platform.passiveEvents ? passiveOptions : false; + window.removeEventListener("mouseup", this._upHandler, options); + window.removeEventListener("mousedown", this._downHandler, options); + window.removeEventListener("mousemove", this._moveHandler, options); + window.removeEventListener("wheel", this._wheelHandler, options); + } + disableContextMenu() { + if (!this._target) return; + this._target.addEventListener("contextmenu", this._contextMenuHandler); + } + enableContextMenu() { + if (!this._target) return; + this._target.removeEventListener("contextmenu", this._contextMenuHandler); + } + enablePointerLock(success, error) { + if (!document.body.requestPointerLock) { + if (error) error(); + return; + } + const s = () => { + success(); + document.removeEventListener("pointerlockchange", s); + }; + const e = () => { + error(); + document.removeEventListener("pointerlockerror", e); + }; + if (success) { + document.addEventListener("pointerlockchange", s, false); + } + if (error) { + document.addEventListener("pointerlockerror", e, false); + } + document.body.requestPointerLock(); + } + disablePointerLock(success) { + if (!document.exitPointerLock) { + return; + } + const s = () => { + success(); + document.removeEventListener("pointerlockchange", s); + }; + if (success) { + document.addEventListener("pointerlockchange", s, false); + } + document.exitPointerLock(); + } + update() { + this._lastbuttons[0] = this._buttons[0]; + this._lastbuttons[1] = this._buttons[1]; + this._lastbuttons[2] = this._buttons[2]; + } + isPressed(button) { + return this._buttons[button]; + } + wasPressed(button) { + return this._buttons[button] && !this._lastbuttons[button]; + } + wasReleased(button) { + return !this._buttons[button] && this._lastbuttons[button]; + } + _handleUp(event) { + this._buttons[event.button] = false; + const e = new MouseEvent(this, event); + if (!e.event) return; + this.fire(EVENT_MOUSEUP, e); + } + _handleDown(event) { + this._buttons[event.button] = true; + const e = new MouseEvent(this, event); + if (!e.event) return; + this.fire(EVENT_MOUSEDOWN, e); + } + _handleMove(event) { + const e = new MouseEvent(this, event); + if (!e.event) return; + this.fire(EVENT_MOUSEMOVE, e); + this._lastX = e.x; + this._lastY = e.y; + } + _handleWheel(event) { + const e = new MouseEvent(this, event); + if (!e.event) return; + this.fire(EVENT_MOUSEWHEEL, e); + } + _getTargetCoords(event) { + const rect = this._target.getBoundingClientRect(); + const left = Math.floor(rect.left); + const top = Math.floor(rect.top); + if (event.clientX < left || event.clientX >= left + this._target.clientWidth || event.clientY < top || event.clientY >= top + this._target.clientHeight) { + return null; + } + return { + x: event.clientX - left, + y: event.clientY - top + }; + } +}; +Mouse.EVENT_MOUSEMOVE = EVENT_MOUSEMOVE; +Mouse.EVENT_MOUSEDOWN = EVENT_MOUSEDOWN; +Mouse.EVENT_MOUSEUP = EVENT_MOUSEUP; +Mouse.EVENT_MOUSEWHEEL = EVENT_MOUSEWHEEL; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/net/http.js +var Http = class _Http { + get(url, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + return this.request("GET", url, options, callback); + } + post(url, data2, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + options.postdata = data2; + return this.request("POST", url, options, callback); + } + put(url, data2, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + options.postdata = data2; + return this.request("PUT", url, options, callback); + } + del(url, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + return this.request("DELETE", url, options, callback); + } + request(method, url, options, callback) { + let uri, query, postdata; + let errored = false; + if (typeof options === "function") { + callback = options; + options = {}; + } + if (options.retry) { + options = Object.assign({ + retries: 0, + maxRetries: 5 + }, options); + } + options.callback = callback; + if (options.async == null) { + options.async = true; + } + if (options.headers == null) { + options.headers = {}; + } + if (options.postdata != null) { + if (options.postdata instanceof Document) { + postdata = options.postdata; + } else if (options.postdata instanceof FormData) { + postdata = options.postdata; + } else if (options.postdata instanceof Object) { + let contentType = options.headers["Content-Type"]; + if (contentType === void 0) { + options.headers["Content-Type"] = _Http.ContentType.FORM_URLENCODED; + contentType = options.headers["Content-Type"]; + } + switch (contentType) { + case _Http.ContentType.FORM_URLENCODED: { + postdata = ""; + let bFirstItem = true; + for (const key in options.postdata) { + if (options.postdata.hasOwnProperty(key)) { + if (bFirstItem) { + bFirstItem = false; + } else { + postdata += "&"; + } + const encodedKey = encodeURIComponent(key); + const encodedValue = encodeURIComponent(options.postdata[key]); + postdata += `${encodedKey}=${encodedValue}`; + } + } + break; + } + default: + case _Http.ContentType.JSON: + if (contentType == null) { + options.headers["Content-Type"] = _Http.ContentType.JSON; + } + postdata = JSON.stringify(options.postdata); + break; + } + } else { + postdata = options.postdata; + } + } + if (options.cache === false) { + const timestamp = now(); + uri = new URI(url); + if (!uri.query) { + uri.query = "ts=" + timestamp; + } else { + uri.query = uri.query + "&ts=" + timestamp; + } + url = uri.toString(); + } + if (options.query) { + uri = new URI(url); + query = extend(uri.getQuery(), options.query); + uri.setQuery(query); + url = uri.toString(); + } + const xhr = new XMLHttpRequest(); + xhr.open(method, url, options.async); + xhr.withCredentials = options.withCredentials !== void 0 ? options.withCredentials : false; + xhr.responseType = options.responseType || this._guessResponseType(url); + for (const header in options.headers) { + if (options.headers.hasOwnProperty(header)) { + xhr.setRequestHeader(header, options.headers[header]); + } + } + xhr.onreadystatechange = () => { + this._onReadyStateChange(method, url, options, xhr); + }; + xhr.onerror = () => { + this._onError(method, url, options, xhr); + errored = true; + }; + try { + xhr.send(postdata); + } catch (e) { + if (!errored) { + options.error(xhr.status, xhr, e); + } + } + return xhr; + } + _guessResponseType(url) { + const uri = new URI(url); + const ext = path.getExtension(uri.path).toLowerCase(); + if (_Http.binaryExtensions.indexOf(ext) >= 0) { + return _Http.ResponseType.ARRAY_BUFFER; + } else if (ext === ".json") { + return _Http.ResponseType.JSON; + } else if (ext === ".xml") { + return _Http.ResponseType.DOCUMENT; + } + return _Http.ResponseType.TEXT; + } + _isBinaryContentType(contentType) { + const binTypes = [_Http.ContentType.BASIS, _Http.ContentType.BIN, _Http.ContentType.DDS, _Http.ContentType.GLB, _Http.ContentType.MP3, _Http.ContentType.MP4, _Http.ContentType.OGG, _Http.ContentType.OPUS, _Http.ContentType.WAV]; + if (binTypes.indexOf(contentType) >= 0) { + return true; + } + return false; + } + _isBinaryResponseType(responseType) { + return responseType === _Http.ResponseType.ARRAY_BUFFER || responseType === _Http.ResponseType.BLOB || responseType === _Http.ResponseType.JSON; + } + _onReadyStateChange(method, url, options, xhr) { + if (xhr.readyState === 4) { + switch (xhr.status) { + case 0: { + if (xhr.responseURL && xhr.responseURL.startsWith("file:///")) { + this._onSuccess(method, url, options, xhr); + } else { + this._onError(method, url, options, xhr); + } + break; + } + case 200: + case 201: + case 206: + case 304: { + this._onSuccess(method, url, options, xhr); + break; + } + default: { + this._onError(method, url, options, xhr); + break; + } + } + } + } + _onSuccess(method, url, options, xhr) { + let response; + let contentType; + const header = xhr.getResponseHeader("Content-Type"); + if (header) { + const parts = header.split(";"); + contentType = parts[0].trim(); + } + try { + if (this._isBinaryContentType(contentType) || this._isBinaryResponseType(xhr.responseType)) { + response = xhr.response; + } else if (contentType === _Http.ContentType.JSON || url.split("?")[0].endsWith(".json")) { + response = JSON.parse(xhr.responseText); + } else if (xhr.responseType === _Http.ResponseType.DOCUMENT || contentType === _Http.ContentType.XML) { + response = xhr.responseXML; + } else { + response = xhr.responseText; + } + options.callback(null, response); + } catch (err) { + options.callback(err); + } + } + _onError(method, url, options, xhr) { + if (options.retrying) { + return; + } + if (options.retry && options.retries < options.maxRetries) { + options.retries++; + options.retrying = true; + const retryDelay = math.clamp(Math.pow(2, options.retries) * _Http.retryDelay, 0, options.maxRetryDelay || 5e3); + console.log(`${method}: ${url} - Error ${xhr.status}. Retrying in ${retryDelay} ms`); + setTimeout(() => { + options.retrying = false; + this.request(method, url, options, options.callback); + }, retryDelay); + } else { + options.callback(xhr.status === 0 ? "Network error" : xhr.status, null); + } + } +}; +Http.ContentType = { + AAC: "audio/aac", + BASIS: "image/basis", + BIN: "application/octet-stream", + DDS: "image/dds", + FORM_URLENCODED: "application/x-www-form-urlencoded", + GIF: "image/gif", + GLB: "model/gltf-binary", + JPEG: "image/jpeg", + JSON: "application/json", + MP3: "audio/mpeg", + MP4: "audio/mp4", + OGG: "audio/ogg", + OPUS: 'audio/ogg; codecs="opus"', + PNG: "image/png", + TEXT: "text/plain", + WAV: "audio/x-wav", + XML: "application/xml" +}; +Http.ResponseType = { + TEXT: "text", + ARRAY_BUFFER: "arraybuffer", + BLOB: "blob", + DOCUMENT: "document", + JSON: "json" +}; +Http.binaryExtensions = [".model", ".wav", ".ogg", ".mp3", ".mp4", ".m4a", ".aac", ".dds", ".basis", ".glb", ".opus"]; +Http.retryDelay = 100; +var http = new Http(); + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/audio/capabilities.js +function hasAudioContext() { + return !!(typeof AudioContext !== "undefined" || typeof webkitAudioContext !== "undefined"); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/audio/channel.js +var Channel = class { + constructor(manager, sound, options = {}) { + var _options$volume, _options$loop, _options$pitch; + this.volume = (_options$volume = options.volume) != null ? _options$volume : 1; + this.loop = (_options$loop = options.loop) != null ? _options$loop : false; + this.pitch = (_options$pitch = options.pitch) != null ? _options$pitch : 1; + this.sound = sound; + this.paused = false; + this.suspended = false; + this.manager = manager; + this.source = null; + if (hasAudioContext()) { + this.startTime = 0; + this.startOffset = 0; + const context = manager.context; + this.gain = context.createGain(); + } else if (sound.audio) { + this.source = sound.audio.cloneNode(false); + this.source.pause(); + } + } + getVolume() { + return this.volume; + } + getLoop() { + return this.loop; + } + setLoop(loop) { + this.loop = loop; + if (this.source) { + this.source.loop = loop; + } + } + getPitch() { + return this.pitch; + } + onManagerVolumeChange() { + this.setVolume(this.getVolume()); + } + onManagerSuspend() { + if (this.isPlaying() && !this.suspended) { + this.suspended = true; + this.pause(); + } + } + onManagerResume() { + if (this.suspended) { + this.suspended = false; + this.unpause(); + } + } + play() { + if (this.source) { + throw new Error("Call stop() before calling play()"); + } + this._createSource(); + if (!this.source) { + return; + } + this.startTime = this.manager.context.currentTime; + this.source.start(0, this.startOffset % this.source.buffer.duration); + this.setVolume(this.volume); + this.setLoop(this.loop); + this.setPitch(this.pitch); + this.manager.on("volumechange", this.onManagerVolumeChange, this); + this.manager.on("suspend", this.onManagerSuspend, this); + this.manager.on("resume", this.onManagerResume, this); + if (this.manager.suspended) this.onManagerSuspend(); + } + pause() { + if (this.source) { + this.paused = true; + this.startOffset += this.manager.context.currentTime - this.startTime; + this.source.stop(0); + this.source = null; + } + } + unpause() { + if (this.source || !this.paused) { + console.warn("Call pause() before unpausing."); + return; + } + this._createSource(); + if (!this.source) { + return; + } + this.startTime = this.manager.context.currentTime; + this.source.start(0, this.startOffset % this.source.buffer.duration); + this.setVolume(this.volume); + this.setLoop(this.loop); + this.setPitch(this.pitch); + this.paused = false; + } + stop() { + if (this.source) { + this.source.stop(0); + this.source = null; + } + this.manager.off("volumechange", this.onManagerVolumeChange, this); + this.manager.off("suspend", this.onManagerSuspend, this); + this.manager.off("resume", this.onManagerResume, this); + } + setVolume(volume) { + volume = math.clamp(volume, 0, 1); + this.volume = volume; + if (this.gain) { + this.gain.gain.value = volume * this.manager.volume; + } + } + setPitch(pitch) { + this.pitch = pitch; + if (this.source) { + this.source.playbackRate.value = pitch; + } + } + isPlaying() { + return !this.paused && this.source.playbackState === this.source.PLAYING_STATE; + } + getDuration() { + return this.source ? this.source.buffer.duration : 0; + } + _createSource() { + const context = this.manager.context; + if (this.sound.buffer) { + this.source = context.createBufferSource(); + this.source.buffer = this.sound.buffer; + this.source.connect(this.gain); + this.gain.connect(context.destination); + if (!this.loop) { + this.source.onended = this.pause.bind(this); + } + } + } +}; +if (!hasAudioContext()) { + Object.assign(Channel.prototype, { + play: function() { + if (this.source) { + this.paused = false; + this.setVolume(this.volume); + this.setLoop(this.loop); + this.setPitch(this.pitch); + this.source.play(); + } + this.manager.on("volumechange", this.onManagerVolumeChange, this); + this.manager.on("suspend", this.onManagerSuspend, this); + this.manager.on("resume", this.onManagerResume, this); + if (this.manager.suspended) this.onManagerSuspend(); + }, + pause: function() { + if (this.source) { + this.paused = true; + this.source.pause(); + } + }, + unpause: function() { + if (this.source) { + this.paused = false; + this.source.play(); + } + }, + stop: function() { + if (this.source) { + this.source.pause(); + } + this.manager.off("volumechange", this.onManagerVolumeChange, this); + this.manager.off("suspend", this.onManagerSuspend, this); + this.manager.off("resume", this.onManagerResume, this); + }, + setVolume: function(volume) { + volume = math.clamp(volume, 0, 1); + this.volume = volume; + if (this.source) { + this.source.volume = volume * this.manager.volume; + } + }, + setPitch: function(pitch) { + this.pitch = pitch; + if (this.source) { + this.source.playbackRate = pitch; + } + }, + getDuration: function() { + return this.source && !isNaN(this.source.duration) ? this.source.duration : 0; + }, + isPlaying: function() { + return !this.source.paused; + } + }); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/audio/channel3d.js +var MAX_DISTANCE = 1e4; +var Channel3d = class extends Channel { + constructor(manager, sound, options) { + super(manager, sound, options); + this.position = new Vec3(); + this.velocity = new Vec3(); + if (hasAudioContext()) { + this.panner = manager.context.createPanner(); + } else { + this.maxDistance = MAX_DISTANCE; + this.minDistance = 1; + this.rollOffFactor = 1; + this.distanceModel = DISTANCE_INVERSE; + } + } + getPosition() { + return this.position; + } + setPosition(position2) { + this.position.copy(position2); + const panner = this.panner; + if ("positionX" in panner) { + panner.positionX.value = position2.x; + panner.positionY.value = position2.y; + panner.positionZ.value = position2.z; + } else if (panner.setPosition) { + panner.setPosition(position2.x, position2.y, position2.z); + } + } + getVelocity() { + return this.velocity; + } + setVelocity(velocity) { + this.velocity.copy(velocity); + } + getMaxDistance() { + return this.panner.maxDistance; + } + setMaxDistance(max) { + this.panner.maxDistance = max; + } + getMinDistance() { + return this.panner.refDistance; + } + setMinDistance(min) { + this.panner.refDistance = min; + } + getRollOffFactor() { + return this.panner.rolloffFactor; + } + setRollOffFactor(factor) { + this.panner.rolloffFactor = factor; + } + getDistanceModel() { + return this.panner.distanceModel; + } + setDistanceModel(distanceModel) { + this.panner.distanceModel = distanceModel; + } + _createSource() { + const context = this.manager.context; + this.source = context.createBufferSource(); + this.source.buffer = this.sound.buffer; + this.source.connect(this.panner); + this.panner.connect(this.gain); + this.gain.connect(context.destination); + if (!this.loop) { + this.source.onended = this.pause.bind(this); + } + } +}; +if (!hasAudioContext()) { + let offset = new Vec3(); + const fallOff = function fallOff2(posOne, posTwo, refDistance, maxDistance, rolloffFactor, distanceModel) { + offset = offset.sub2(posOne, posTwo); + const distance = offset.length(); + if (distance < refDistance) { + return 1; + } else if (distance > maxDistance) { + return 0; + } + let result = 0; + if (distanceModel === DISTANCE_LINEAR) { + result = 1 - rolloffFactor * (distance - refDistance) / (maxDistance - refDistance); + } else if (distanceModel === DISTANCE_INVERSE) { + result = refDistance / (refDistance + rolloffFactor * (distance - refDistance)); + } else if (distanceModel === DISTANCE_EXPONENTIAL) { + result = Math.pow(distance / refDistance, -rolloffFactor); + } + return math.clamp(result, 0, 1); + }; + Object.assign(Channel3d.prototype, { + setPosition: function(position2) { + this.position.copy(position2); + if (this.source) { + const listener = this.manager.listener; + const lpos = listener.getPosition(); + const factor = fallOff(lpos, this.position, this.minDistance, this.maxDistance, this.rollOffFactor, this.distanceModel); + const v = this.getVolume(); + this.source.volume = v * factor; + } + }, + getMaxDistance: function() { + return this.maxDistance; + }, + setMaxDistance: function(max) { + this.maxDistance = max; + }, + getMinDistance: function() { + return this.minDistance; + }, + setMinDistance: function(min) { + this.minDistance = min; + }, + getRollOffFactor: function() { + return this.rollOffFactor; + }, + setRollOffFactor: function(factor) { + this.rollOffFactor = factor; + }, + getDistanceModel: function() { + return this.distanceModel; + }, + setDistanceModel: function(distanceModel) { + this.distanceModel = distanceModel; + } + }); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/sound/listener.js +var Listener = class { + constructor(manager) { + this._manager = void 0; + this.position = new Vec3(); + this.velocity = new Vec3(); + this.orientation = new Mat4(); + this._manager = manager; + } + getPosition() { + return this.position; + } + setPosition(position2) { + this.position.copy(position2); + const listener = this.listener; + if (listener) { + if ("positionX" in listener) { + listener.positionX.value = position2.x; + listener.positionY.value = position2.y; + listener.positionZ.value = position2.z; + } else if (listener.setPosition) { + listener.setPosition(position2.x, position2.y, position2.z); + } + } + } + getVelocity() { + return this.velocity; + } + setVelocity(velocity) { + } + setOrientation(orientation) { + this.orientation.copy(orientation); + const listener = this.listener; + if (listener) { + const m = orientation.data; + if ("forwardX" in listener) { + listener.forwardX.value = -m[8]; + listener.forwardY.value = -m[9]; + listener.forwardZ.value = -m[10]; + listener.upX.value = m[4]; + listener.upY.value = m[5]; + listener.upZ.value = m[6]; + } else if (listener.setOrientation) { + listener.setOrientation(-m[8], -m[9], -m[10], m[4], m[5], m[6]); + } + } + } + getOrientation() { + return this.orientation; + } + get listener() { + const context = this._manager.context; + return context ? context.listener : null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/sound/manager.js +var CONTEXT_STATE_RUNNING = "running"; +var USER_INPUT_EVENTS = ["click", "touchstart", "mousedown"]; +var SoundManager = class extends EventHandler { + constructor() { + super(); + this._context = null; + this.AudioContext = typeof AudioContext !== "undefined" && AudioContext || typeof webkitAudioContext !== "undefined" && webkitAudioContext; + if (!this.AudioContext) ; + this._unlockHandlerFunc = this._unlockHandler.bind(this); + this._userSuspended = false; + this.listener = new Listener(this); + this._volume = 1; + } + set volume(volume) { + volume = math.clamp(volume, 0, 1); + this._volume = volume; + this.fire("volumechange", volume); + } + get volume() { + return this._volume; + } + get suspended() { + return this._userSuspended; + } + get context() { + if (!this._context && this.AudioContext) { + this._context = new this.AudioContext(); + if (this._context.state !== CONTEXT_STATE_RUNNING) { + this._registerUnlockListeners(); + } + } + return this._context; + } + suspend() { + if (!this._userSuspended) { + this._userSuspended = true; + if (this._context && this._context.state === CONTEXT_STATE_RUNNING) { + this._suspend(); + } + } + } + resume() { + if (this._userSuspended) { + this._userSuspended = false; + if (this._context && this._context.state !== CONTEXT_STATE_RUNNING) { + this._resume(); + } + } + } + destroy() { + this.fire("destroy"); + if (this._context) { + var _this$_context; + this._removeUnlockListeners(); + (_this$_context = this._context) == null || _this$_context.close(); + this._context = null; + } + } + playSound(sound, options = {}) { + let channel = null; + if (Channel) { + channel = new Channel(this, sound, options); + channel.play(); + } + return channel; + } + playSound3d(sound, position2, options = {}) { + let channel = null; + if (Channel3d) { + channel = new Channel3d(this, sound, options); + channel.setPosition(position2); + if (options.volume) { + channel.setVolume(options.volume); + } + if (options.loop) { + channel.setLoop(options.loop); + } + if (options.maxDistance) { + channel.setMaxDistance(options.maxDistance); + } + if (options.minDistance) { + channel.setMinDistance(options.minDistance); + } + if (options.rollOffFactor) { + channel.setRollOffFactor(options.rollOffFactor); + } + if (options.distanceModel) { + channel.setDistanceModel(options.distanceModel); + } + channel.play(); + } + return channel; + } + _resume() { + this._context.resume().then(() => { + const source = this._context.createBufferSource(); + source.buffer = this._context.createBuffer(1, 1, this._context.sampleRate); + source.connect(this._context.destination); + source.start(0); + source.onended = (event) => { + source.disconnect(0); + this.fire("resume"); + }; + }, (e) => { + }).catch((e) => { + }); + } + _suspend() { + this._context.suspend().then(() => { + this.fire("suspend"); + }, (e) => { + }).catch((e) => { + }); + } + _unlockHandler() { + this._removeUnlockListeners(); + if (!this._userSuspended && this._context.state !== CONTEXT_STATE_RUNNING) { + this._resume(); + } + } + _registerUnlockListeners() { + USER_INPUT_EVENTS.forEach((eventName) => { + window.addEventListener(eventName, this._unlockHandlerFunc, false); + }); + } + _removeUnlockListeners() { + USER_INPUT_EVENTS.forEach((eventName) => { + window.removeEventListener(eventName, this._unlockHandlerFunc, false); + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/sound/sound.js +var Sound = class { + constructor(resource) { + this.audio = void 0; + this.buffer = void 0; + if (resource instanceof Audio) { + this.audio = resource; + } else { + this.buffer = resource; + } + } + get duration() { + let duration = 0; + if (this.buffer) { + duration = this.buffer.duration; + } else if (this.audio) { + duration = this.audio.duration; + } + return duration || 0; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/sound/instance.js +var STATE_PLAYING = 0; +var STATE_PAUSED = 1; +var STATE_STOPPED = 2; +function capTime(time2, duration) { + return time2 % duration || 0; +} +var SoundInstance = class extends EventHandler { + constructor(manager, sound, options) { + super(); + this.source = null; + this._manager = manager; + this._volume = options.volume !== void 0 ? math.clamp(Number(options.volume) || 0, 0, 1) : 1; + this._pitch = options.pitch !== void 0 ? Math.max(0.01, Number(options.pitch) || 0) : 1; + this._loop = !!(options.loop !== void 0 ? options.loop : false); + this._sound = sound; + this._state = STATE_STOPPED; + this._suspended = false; + this._suspendEndEvent = 0; + this._suspendInstanceEvents = false; + this._playWhenLoaded = true; + this._startTime = Math.max(0, Number(options.startTime) || 0); + this._duration = Math.max(0, Number(options.duration) || 0); + this._startOffset = null; + this._onPlayCallback = options.onPlay; + this._onPauseCallback = options.onPause; + this._onResumeCallback = options.onResume; + this._onStopCallback = options.onStop; + this._onEndCallback = options.onEnd; + if (hasAudioContext()) { + this._startedAt = 0; + this._currentTime = 0; + this._currentOffset = 0; + this._inputNode = null; + this._connectorNode = null; + this._firstNode = null; + this._lastNode = null; + this._waitingContextSuspension = false; + this._initializeNodes(); + this._endedHandler = this._onEnded.bind(this); + } else { + this._isReady = false; + this._loadedMetadataHandler = this._onLoadedMetadata.bind(this); + this._timeUpdateHandler = this._onTimeUpdate.bind(this); + this._endedHandler = this._onEnded.bind(this); + this._createSource(); + } + } + set currentTime(value) { + if (value < 0) return; + if (this._state === STATE_PLAYING) { + const suspend = this._suspendInstanceEvents; + this._suspendInstanceEvents = true; + this.stop(); + this._startOffset = value; + this.play(); + this._suspendInstanceEvents = suspend; + } else { + this._startOffset = value; + this._currentTime = value; + } + } + get currentTime() { + if (this._startOffset !== null) { + return this._startOffset; + } + if (this._state === STATE_PAUSED) { + return this._currentTime; + } + if (this._state === STATE_STOPPED || !this.source) { + return 0; + } + this._updateCurrentTime(); + return this._currentTime; + } + set duration(value) { + this._duration = Math.max(0, Number(value) || 0); + const isPlaying = this._state === STATE_PLAYING; + this.stop(); + if (isPlaying) { + this.play(); + } + } + get duration() { + if (!this._sound) { + return 0; + } + if (this._duration) { + return capTime(this._duration, this._sound.duration); + } + return this._sound.duration; + } + get isPaused() { + return this._state === STATE_PAUSED; + } + get isPlaying() { + return this._state === STATE_PLAYING; + } + get isStopped() { + return this._state === STATE_STOPPED; + } + get isSuspended() { + return this._suspended; + } + set loop(value) { + this._loop = !!value; + if (this.source) { + this.source.loop = this._loop; + } + } + get loop() { + return this._loop; + } + set pitch(pitch) { + this._currentOffset = this.currentTime; + this._startedAt = this._manager.context.currentTime; + this._pitch = Math.max(Number(pitch) || 0, 0.01); + if (this.source) { + this.source.playbackRate.value = this._pitch; + } + } + get pitch() { + return this._pitch; + } + set sound(value) { + this._sound = value; + if (this._state !== STATE_STOPPED) { + this.stop(); + } else { + this._createSource(); + } + } + get sound() { + return this._sound; + } + set startTime(value) { + this._startTime = Math.max(0, Number(value) || 0); + const isPlaying = this._state === STATE_PLAYING; + this.stop(); + if (isPlaying) { + this.play(); + } + } + get startTime() { + return this._startTime; + } + set volume(volume) { + volume = math.clamp(volume, 0, 1); + this._volume = volume; + if (this.gain) { + this.gain.gain.value = volume * this._manager.volume; + } + } + get volume() { + return this._volume; + } + _onPlay() { + this.fire("play"); + if (this._onPlayCallback) this._onPlayCallback(this); + } + _onPause() { + this.fire("pause"); + if (this._onPauseCallback) this._onPauseCallback(this); + } + _onResume() { + this.fire("resume"); + if (this._onResumeCallback) this._onResumeCallback(this); + } + _onStop() { + this.fire("stop"); + if (this._onStopCallback) this._onStopCallback(this); + } + _onEnded() { + if (this._suspendEndEvent > 0) { + this._suspendEndEvent--; + return; + } + this.fire("end"); + if (this._onEndCallback) this._onEndCallback(this); + this.stop(); + } + _onManagerVolumeChange() { + this.volume = this._volume; + } + _onManagerSuspend() { + if (this._state === STATE_PLAYING && !this._suspended) { + this._suspended = true; + this.pause(); + } + } + _onManagerResume() { + if (this._suspended) { + this._suspended = false; + this.resume(); + } + } + _initializeNodes() { + this.gain = this._manager.context.createGain(); + this._inputNode = this.gain; + this._connectorNode = this.gain; + this._connectorNode.connect(this._manager.context.destination); + } + play() { + if (this._state !== STATE_STOPPED) { + this.stop(); + } + this._state = STATE_PLAYING; + this._playWhenLoaded = false; + if (this._waitingContextSuspension) { + return false; + } + if (this._manager.suspended) { + this._manager.once("resume", this._playAudioImmediate, this); + this._waitingContextSuspension = true; + return false; + } + this._playAudioImmediate(); + return true; + } + _playAudioImmediate() { + this._waitingContextSuspension = false; + if (this._state !== STATE_PLAYING) { + return; + } + if (!this.source) { + this._createSource(); + } + let offset = capTime(this._startOffset, this.duration); + offset = capTime(this._startTime + offset, this._sound.duration); + this._startOffset = null; + if (this._duration) { + this.source.start(0, offset, this._duration); + } else { + this.source.start(0, offset); + } + this._startedAt = this._manager.context.currentTime; + this._currentTime = 0; + this._currentOffset = offset; + this.volume = this._volume; + this.loop = this._loop; + this.pitch = this._pitch; + this._manager.on("volumechange", this._onManagerVolumeChange, this); + this._manager.on("suspend", this._onManagerSuspend, this); + this._manager.on("resume", this._onManagerResume, this); + this._manager.on("destroy", this._onManagerDestroy, this); + if (!this._suspendInstanceEvents) { + this._onPlay(); + } + } + pause() { + this._playWhenLoaded = false; + if (this._state !== STATE_PLAYING) return false; + this._state = STATE_PAUSED; + if (this._waitingContextSuspension) { + return true; + } + this._updateCurrentTime(); + this._suspendEndEvent++; + this.source.stop(0); + this.source = null; + this._startOffset = null; + if (!this._suspendInstanceEvents) this._onPause(); + return true; + } + resume() { + if (this._state !== STATE_PAUSED) { + return false; + } + let offset = this.currentTime; + this._state = STATE_PLAYING; + if (this._waitingContextSuspension) { + return true; + } + if (!this.source) { + this._createSource(); + } + if (this._startOffset !== null) { + offset = capTime(this._startOffset, this.duration); + offset = capTime(this._startTime + offset, this._sound.duration); + this._startOffset = null; + } + if (this._duration) { + this.source.start(0, offset, this._duration); + } else { + this.source.start(0, offset); + } + this._startedAt = this._manager.context.currentTime; + this._currentOffset = offset; + this.volume = this._volume; + this.loop = this._loop; + this.pitch = this._pitch; + this._playWhenLoaded = false; + if (!this._suspendInstanceEvents) this._onResume(); + return true; + } + stop() { + this._playWhenLoaded = false; + if (this._state === STATE_STOPPED) return false; + const wasPlaying = this._state === STATE_PLAYING; + this._state = STATE_STOPPED; + if (this._waitingContextSuspension) { + return true; + } + this._manager.off("volumechange", this._onManagerVolumeChange, this); + this._manager.off("suspend", this._onManagerSuspend, this); + this._manager.off("resume", this._onManagerResume, this); + this._manager.off("destroy", this._onManagerDestroy, this); + this._startedAt = 0; + this._currentTime = 0; + this._currentOffset = 0; + this._startOffset = null; + this._suspendEndEvent++; + if (wasPlaying && this.source) { + this.source.stop(0); + } + this.source = null; + if (!this._suspendInstanceEvents) this._onStop(); + return true; + } + setExternalNodes(firstNode, lastNode) { + if (!firstNode) { + console.error("The firstNode must be a valid Audio Node"); + return; + } + if (!lastNode) { + lastNode = firstNode; + } + const speakers = this._manager.context.destination; + if (this._firstNode !== firstNode) { + if (this._firstNode) { + this._connectorNode.disconnect(this._firstNode); + } else { + this._connectorNode.disconnect(speakers); + } + this._firstNode = firstNode; + this._connectorNode.connect(firstNode); + } + if (this._lastNode !== lastNode) { + if (this._lastNode) { + this._lastNode.disconnect(speakers); + } + this._lastNode = lastNode; + this._lastNode.connect(speakers); + } + } + clearExternalNodes() { + const speakers = this._manager.context.destination; + if (this._firstNode) { + this._connectorNode.disconnect(this._firstNode); + this._firstNode = null; + } + if (this._lastNode) { + this._lastNode.disconnect(speakers); + this._lastNode = null; + } + this._connectorNode.connect(speakers); + } + getExternalNodes() { + return [this._firstNode, this._lastNode]; + } + _createSource() { + if (!this._sound) { + return null; + } + const context = this._manager.context; + if (this._sound.buffer) { + this.source = context.createBufferSource(); + this.source.buffer = this._sound.buffer; + this.source.connect(this._inputNode); + this.source.onended = this._endedHandler; + this.source.loopStart = capTime(this._startTime, this.source.buffer.duration); + if (this._duration) { + this.source.loopEnd = Math.max(this.source.loopStart, capTime(this._startTime + this._duration, this.source.buffer.duration)); + } + } + return this.source; + } + _updateCurrentTime() { + this._currentTime = capTime((this._manager.context.currentTime - this._startedAt) * this._pitch + this._currentOffset, this.duration); + } + _onManagerDestroy() { + if (this.source && this._state === STATE_PLAYING) { + this.source.stop(0); + this.source = null; + } + } +}; +SoundInstance.EVENT_PLAY = "play"; +SoundInstance.EVENT_PAUSE = "pause"; +SoundInstance.EVENT_RESUME = "resume"; +SoundInstance.EVENT_STOP = "stop"; +SoundInstance.EVENT_END = "end"; +if (!hasAudioContext()) { + Object.assign(SoundInstance.prototype, { + play: function() { + if (this._state !== STATE_STOPPED) { + this.stop(); + } + if (!this.source) { + if (!this._createSource()) { + return false; + } + } + this.volume = this._volume; + this.pitch = this._pitch; + this.loop = this._loop; + this.source.play(); + this._state = STATE_PLAYING; + this._playWhenLoaded = false; + this._manager.on("volumechange", this._onManagerVolumeChange, this); + this._manager.on("suspend", this._onManagerSuspend, this); + this._manager.on("resume", this._onManagerResume, this); + this._manager.on("destroy", this._onManagerDestroy, this); + if (this._manager.suspended) this._onManagerSuspend(); + if (!this._suspendInstanceEvents) this._onPlay(); + return true; + }, + pause: function() { + if (!this.source || this._state !== STATE_PLAYING) return false; + this._suspendEndEvent++; + this.source.pause(); + this._playWhenLoaded = false; + this._state = STATE_PAUSED; + this._startOffset = null; + if (!this._suspendInstanceEvents) this._onPause(); + return true; + }, + resume: function() { + if (!this.source || this._state !== STATE_PAUSED) return false; + this._state = STATE_PLAYING; + this._playWhenLoaded = false; + if (this.source.paused) { + this.source.play(); + if (!this._suspendInstanceEvents) this._onResume(); + } + return true; + }, + stop: function() { + if (!this.source || this._state === STATE_STOPPED) return false; + this._manager.off("volumechange", this._onManagerVolumeChange, this); + this._manager.off("suspend", this._onManagerSuspend, this); + this._manager.off("resume", this._onManagerResume, this); + this._manager.off("destroy", this._onManagerDestroy, this); + this._suspendEndEvent++; + this.source.pause(); + this._playWhenLoaded = false; + this._state = STATE_STOPPED; + this._startOffset = null; + if (!this._suspendInstanceEvents) this._onStop(); + return true; + }, + setExternalNodes: function() { + }, + clearExternalNodes: function() { + }, + getExternalNodes: function() { + return [null, null]; + }, + _onLoadedMetadata: function() { + this.source.removeEventListener("loadedmetadata", this._loadedMetadataHandler); + this._isReady = true; + let offset = capTime(this._startOffset, this.duration); + offset = capTime(this._startTime + offset, this._sound.duration); + this._startOffset = null; + this.source.currentTime = offset; + }, + _createSource: function() { + if (this._sound && this._sound.audio) { + this._isReady = false; + this.source = this._sound.audio.cloneNode(true); + this.source.addEventListener("loadedmetadata", this._loadedMetadataHandler); + this.source.addEventListener("timeupdate", this._timeUpdateHandler); + this.source.onended = this._endedHandler; + } + return this.source; + }, + _onTimeUpdate: function() { + if (!this._duration) return; + if (this.source.currentTime > capTime(this._startTime + this._duration, this.source.duration)) { + if (this.loop) { + this.source.currentTime = capTime(this._startTime, this.source.duration); + } else { + this.source.removeEventListener("timeupdate", this._timeUpdateHandler); + this.source.pause(); + this._onEnded(); + } + } + }, + _onManagerDestroy: function() { + if (this.source) { + this.source.pause(); + } + } + }); + Object.defineProperty(SoundInstance.prototype, "volume", { + get: function() { + return this._volume; + }, + set: function(volume) { + volume = math.clamp(volume, 0, 1); + this._volume = volume; + if (this.source) { + this.source.volume = volume * this._manager.volume; + } + } + }); + Object.defineProperty(SoundInstance.prototype, "pitch", { + get: function() { + return this._pitch; + }, + set: function(pitch) { + this._pitch = Math.max(Number(pitch) || 0, 0.01); + if (this.source) { + this.source.playbackRate = this._pitch; + } + } + }); + Object.defineProperty(SoundInstance.prototype, "sound", { + get: function() { + return this._sound; + }, + set: function(value) { + this.stop(); + this._sound = value; + } + }); + Object.defineProperty(SoundInstance.prototype, "currentTime", { + get: function() { + if (this._startOffset !== null) { + return this._startOffset; + } + if (this._state === STATE_STOPPED || !this.source) { + return 0; + } + return this.source.currentTime - this._startTime; + }, + set: function(value) { + if (value < 0) return; + this._startOffset = value; + if (this.source && this._isReady) { + this.source.currentTime = capTime(this._startTime + capTime(value, this.duration), this._sound.duration); + this._startOffset = null; + } + } + }); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/platform/sound/instance3d.js +var MAX_DISTANCE2 = 1e4; +var SoundInstance3d = class extends SoundInstance { + constructor(manager, sound, options = {}) { + super(manager, sound, options); + this._position = new Vec3(); + this._velocity = new Vec3(); + if (options.position) this.position = options.position; + this.maxDistance = options.maxDistance !== void 0 ? Number(options.maxDistance) : MAX_DISTANCE2; + this.refDistance = options.refDistance !== void 0 ? Number(options.refDistance) : 1; + this.rollOffFactor = options.rollOffFactor !== void 0 ? Number(options.rollOffFactor) : 1; + this.distanceModel = options.distanceModel !== void 0 ? options.distanceModel : DISTANCE_LINEAR; + } + _initializeNodes() { + this.gain = this._manager.context.createGain(); + this.panner = this._manager.context.createPanner(); + this.panner.connect(this.gain); + this._inputNode = this.panner; + this._connectorNode = this.gain; + this._connectorNode.connect(this._manager.context.destination); + } + set position(value) { + this._position.copy(value); + const panner = this.panner; + if ("positionX" in panner) { + panner.positionX.value = value.x; + panner.positionY.value = value.y; + panner.positionZ.value = value.z; + } else if (panner.setPosition) { + panner.setPosition(value.x, value.y, value.z); + } + } + get position() { + return this._position; + } + set velocity(velocity) { + this._velocity.copy(velocity); + } + get velocity() { + return this._velocity; + } + set maxDistance(value) { + this.panner.maxDistance = value; + } + get maxDistance() { + return this.panner.maxDistance; + } + set refDistance(value) { + this.panner.refDistance = value; + } + get refDistance() { + return this.panner.refDistance; + } + set rollOffFactor(value) { + this.panner.rolloffFactor = value; + } + get rollOffFactor() { + return this.panner.rolloffFactor; + } + set distanceModel(value) { + this.panner.distanceModel = value; + } + get distanceModel() { + return this.panner.distanceModel; + } +}; +if (!hasAudioContext()) { + let offset = new Vec3(); + const fallOff = function fallOff2(posOne, posTwo, refDistance, maxDistance, rollOffFactor, distanceModel) { + offset = offset.sub2(posOne, posTwo); + const distance = offset.length(); + if (distance < refDistance) { + return 1; + } else if (distance > maxDistance) { + return 0; + } + let result = 0; + if (distanceModel === DISTANCE_LINEAR) { + result = 1 - rollOffFactor * (distance - refDistance) / (maxDistance - refDistance); + } else if (distanceModel === DISTANCE_INVERSE) { + result = refDistance / (refDistance + rollOffFactor * (distance - refDistance)); + } else if (distanceModel === DISTANCE_EXPONENTIAL) { + result = Math.pow(distance / refDistance, -rollOffFactor); + } + return math.clamp(result, 0, 1); + }; + Object.defineProperty(SoundInstance3d.prototype, "position", { + get: function() { + return this._position; + }, + set: function(position2) { + this._position.copy(position2); + if (this.source) { + const listener = this._manager.listener; + const lpos = listener.getPosition(); + const factor = fallOff(lpos, this._position, this.refDistance, this.maxDistance, this.rollOffFactor, this.distanceModel); + const v = this.volume; + this.source.volume = v * factor * this._manager.volume; + } + } + }); + Object.defineProperty(SoundInstance3d.prototype, "maxDistance", { + get: function() { + return this._maxDistance; + }, + set: function(value) { + this._maxDistance = value; + } + }); + Object.defineProperty(SoundInstance3d.prototype, "refDistance", { + get: function() { + return this._refDistance; + }, + set: function(value) { + this._refDistance = value; + } + }); + Object.defineProperty(SoundInstance3d.prototype, "rollOffFactor", { + get: function() { + return this._rollOffFactor; + }, + set: function(value) { + this._rollOffFactor = value; + } + }); + Object.defineProperty(SoundInstance3d.prototype, "distanceModel", { + get: function() { + return this._distanceModel; + }, + set: function(value) { + this._distanceModel = value; + } + }); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/constants.js +var BLEND_SUBTRACTIVE = 0; +var BLEND_ADDITIVE = 1; +var BLEND_NORMAL = 2; +var BLEND_NONE = 3; +var BLEND_PREMULTIPLIED = 4; +var BLEND_MULTIPLICATIVE = 5; +var BLEND_ADDITIVEALPHA = 6; +var BLEND_MULTIPLICATIVE2X = 7; +var BLEND_SCREEN = 8; +var BLEND_MIN = 9; +var BLEND_MAX = 10; +var FOG_NONE = "none"; +var FOG_LINEAR = "linear"; +var FRESNEL_SCHLICK = 2; +var LAYER_FX = 2; +var LAYER_WORLD = 15; +var LAYERID_WORLD = 0; +var LAYERID_DEPTH = 1; +var LAYERID_SKYBOX = 2; +var LAYERID_IMMEDIATE = 3; +var LAYERID_UI = 4; +var LIGHTTYPE_DIRECTIONAL = 0; +var LIGHTTYPE_OMNI = 1; +var LIGHTTYPE_SPOT = 2; +var LIGHTSHAPE_PUNCTUAL = 0; +var LIGHTSHAPE_RECT = 1; +var LIGHTSHAPE_DISK = 2; +var LIGHTSHAPE_SPHERE = 3; +var LIGHTFALLOFF_LINEAR = 0; +var LIGHTFALLOFF_INVERSESQUARED = 1; +var SHADOW_PCF3 = 0; +var SHADOW_VSM8 = 1; +var SHADOW_VSM16 = 2; +var SHADOW_VSM32 = 3; +var SHADOW_PCF5 = 4; +var SHADOW_PCF1 = 5; +var SHADOW_PCSS = 6; +var shadowTypeToString = {}; +shadowTypeToString[SHADOW_PCF3] = "PCF3"; +shadowTypeToString[SHADOW_VSM8] = "VSM8"; +shadowTypeToString[SHADOW_VSM16] = "VSM16"; +shadowTypeToString[SHADOW_VSM32] = "VSM32"; +shadowTypeToString[SHADOW_PCF5] = "PCF5"; +shadowTypeToString[SHADOW_PCF1] = "PCF1"; +shadowTypeToString[SHADOW_PCSS] = "PCSS"; +var BLUR_GAUSSIAN = 1; +var PROJECTION_PERSPECTIVE = 0; +var PROJECTION_ORTHOGRAPHIC = 1; +var RENDERSTYLE_SOLID = 0; +var RENDERSTYLE_WIREFRAME = 1; +var RENDERSTYLE_POINTS = 2; +var CUBEPROJ_NONE = 0; +var CUBEPROJ_BOX = 1; +var SPECULAR_PHONG = 0; +var SPECULAR_BLINN = 1; +var DETAILMODE_MUL = "mul"; +var GAMMA_NONE = 0; +var GAMMA_SRGB = 1; +var GAMMA_SRGBFAST = 2; +var GAMMA_SRGBHDR = 3; +var TONEMAP_LINEAR = 0; +var TONEMAP_FILMIC = 1; +var TONEMAP_HEJL = 2; +var TONEMAP_ACES = 3; +var TONEMAP_ACES2 = 4; +var TONEMAP_NEUTRAL = 5; +var SPECOCC_AO = 1; +var SPECOCC_GLOSSDEPENDENT = 2; +var SHADERDEF_NOSHADOW = 1; +var SHADERDEF_SKIN = 2; +var SHADERDEF_UV0 = 4; +var SHADERDEF_UV1 = 8; +var SHADERDEF_VCOLOR = 16; +var SHADERDEF_INSTANCING = 32; +var SHADERDEF_LM = 64; +var SHADERDEF_DIRLM = 128; +var SHADERDEF_SCREENSPACE = 256; +var SHADERDEF_TANGENTS = 512; +var SHADERDEF_MORPH_POSITION = 1024; +var SHADERDEF_MORPH_NORMAL = 2048; +var SHADERDEF_MORPH_TEXTURE_BASED = 4096; +var SHADERDEF_LMAMBIENT = 8192; +var SHADOWUPDATE_NONE = 0; +var SHADOWUPDATE_THISFRAME = 1; +var SHADOWUPDATE_REALTIME = 2; +var SORTKEY_FORWARD = 0; +var SORTKEY_DEPTH = 1; +var MASK_AFFECT_DYNAMIC = 1; +var MASK_AFFECT_LIGHTMAPPED = 2; +var MASK_BAKE = 4; +var SHADER_FORWARD = 0; +var SHADER_FORWARDHDR = 1; +var SHADER_DEPTH = 2; +var SHADER_PICK = 3; +var SHADER_SHADOW = 4; +var SHADER_PREPASS_VELOCITY = 5; +var SPRITE_RENDERMODE_SIMPLE = 0; +var SPRITE_RENDERMODE_SLICED = 1; +var SPRITE_RENDERMODE_TILED = 2; +var BAKE_COLORDIR = 1; +var VIEW_CENTER = 0; +var SORTMODE_NONE = 0; +var SORTMODE_MANUAL = 1; +var SORTMODE_MATERIALMESH = 2; +var SORTMODE_BACK2FRONT = 3; +var SORTMODE_FRONT2BACK = 4; +var SORTMODE_CUSTOM = 5; +var ASPECT_AUTO = 0; +var ASPECT_MANUAL = 1; +var SKYTYPE_INFINITE = "infinite"; +var SKYTYPE_BOX = "box"; +var SKYTYPE_DOME = "dome"; +var DITHER_NONE = "none"; +var DITHER_BAYER8 = "bayer8"; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/alphaTest.js +var alphaTestPS = ` +uniform float alpha_ref; +void alphaTest(float a) { + if (a < alpha_ref) discard; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/ambientConstant.js +var ambientConstantPS = ` +void addAmbient(vec3 worldNormal) { + dDiffuseLight += light_globalAmbient; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/ambientEnv.js +var ambientEnvPS = ` +#ifndef ENV_ATLAS +#define ENV_ATLAS +uniform sampler2D texture_envAtlas; +#endif +void addAmbient(vec3 worldNormal) { + vec3 dir = normalize(cubeMapRotate(worldNormal) * vec3(-1.0, 1.0, 1.0)); + vec2 uv = mapUv(toSphericalUv(dir), vec4(128.0, 256.0 + 128.0, 64.0, 32.0) / atlasSize); + vec4 raw = texture2D(texture_envAtlas, uv); + vec3 linear = $DECODE(raw); + dDiffuseLight += processEnvironment(linear); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/ambientSH.js +var ambientSHPS = ` +uniform vec3 ambientSH[9]; +void addAmbient(vec3 worldNormal) { + vec3 n = cubeMapRotate(worldNormal); + vec3 color = + ambientSH[0] + + ambientSH[1] * n.x + + ambientSH[2] * n.y + + ambientSH[3] * n.z + + ambientSH[4] * n.x * n.z + + ambientSH[5] * n.z * n.y + + ambientSH[6] * n.y * n.x + + ambientSH[7] * (3.0 * n.z * n.z - 1.0) + + ambientSH[8] * (n.x * n.x - n.y * n.y); + dDiffuseLight += processEnvironment(max(color, vec3(0.0))); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/ao.js +var aoPS = ` +void getAO() { + dAo = 1.0; + #ifdef MAPTEXTURE + float aoBase = texture2DBias($SAMPLER, $UV, textureBias).$CH; + dAo *= addAoDetail(aoBase); + #endif + #ifdef MAPVERTEX + dAo *= saturate(vVertexColor.$VC); + #endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/aoDetailMap.js +var aoDetailMapPS = ` +float addAoDetail(float ao) { +#ifdef MAPTEXTURE + float aoDetail = texture2DBias($SAMPLER, $UV, textureBias).$CH; + return detailMode_$DETAILMODE(vec3(ao), vec3(aoDetail)).r; +#else + return ao; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoDiffuseOcc.js +var aoDiffuseOccPS = ` +void occludeDiffuse(float ao) { + dDiffuseLight *= ao; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoSpecOcc.js +var aoSpecOccPS = ` +uniform float material_occludeSpecularIntensity; +void occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) { + float specPow = exp2(gloss * 11.0); + float specOcc = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01*specPow) - 1.0 + ao); + specOcc = mix(1.0, specOcc, material_occludeSpecularIntensity); + dSpecularLight *= specOcc; + dReflection *= specOcc; + +#ifdef LIT_SHEEN + sSpecularLight *= specOcc; + sReflection *= specOcc; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoSpecOccConst.js +var aoSpecOccConstPS = ` +void occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) { + float specPow = exp2(gloss * 11.0); + float specOcc = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01*specPow) - 1.0 + ao); + dSpecularLight *= specOcc; + dReflection *= specOcc; + +#ifdef LIT_SHEEN + sSpecularLight *= specOcc; + sReflection *= specOcc; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoSpecOccConstSimple.js +var aoSpecOccConstSimplePS = ` +void occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) { + dSpecularLight *= ao; + dReflection *= ao; +#ifdef LIT_SHEEN + sSpecularLight *= ao; + sReflection *= ao; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoSpecOccSimple.js +var aoSpecOccSimplePS = ` +uniform float material_occludeSpecularIntensity; +void occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) { + float specOcc = mix(1.0, ao, material_occludeSpecularIntensity); + dSpecularLight *= specOcc; + dReflection *= specOcc; +#ifdef LIT_SHEEN + sSpecularLight *= specOcc; + sReflection *= specOcc; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/base.js +var basePS = ` +uniform vec3 view_position; +uniform vec3 light_globalAmbient; +float square(float x) { + return x*x; +} +float saturate(float x) { + return clamp(x, 0.0, 1.0); +} +vec3 saturate(vec3 x) { + return clamp(x, vec3(0.0), vec3(1.0)); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/base.js +var baseVS = ` +attribute vec3 vertex_position; +attribute vec3 vertex_normal; +attribute vec4 vertex_tangent; +attribute vec2 vertex_texCoord0; +attribute vec2 vertex_texCoord1; +attribute vec4 vertex_color; +uniform mat4 matrix_viewProjection; +uniform mat4 matrix_model; +uniform mat3 matrix_normal; +vec3 dPositionW; +mat4 dModelMatrix; +mat3 dNormalMatrix; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/baseNineSliced.js +var baseNineSlicedPS = ` +#define NINESLICED +varying vec2 vMask; +varying vec2 vTiledUv; +uniform mediump vec4 innerOffset; +uniform mediump vec2 outerScale; +uniform mediump vec4 atlasRect; +vec2 nineSlicedUv; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/baseNineSliced.js +var baseNineSlicedVS = ` +#define NINESLICED +varying vec2 vMask; +varying vec2 vTiledUv; +uniform mediump vec4 innerOffset; +uniform mediump vec2 outerScale; +uniform mediump vec4 atlasRect; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/baseNineSlicedTiled.js +var baseNineSlicedTiledPS = ` +#define NINESLICED +#define NINESLICETILED +varying vec2 vMask; +varying vec2 vTiledUv; +uniform mediump vec4 innerOffset; +uniform mediump vec2 outerScale; +uniform mediump vec4 atlasRect; +vec2 nineSlicedUv; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/bayer.js +var bayerPS = ` +float bayer2(vec2 p) { + return mod(2.0 * p.y + p.x + 1.0, 4.0); +} +float bayer4(vec2 p) { + vec2 p1 = mod(p, 2.0); + vec2 p2 = floor(0.5 * mod(p, 4.0)); + return 4.0 * bayer2(p1) + bayer2(p2); +} +float bayer8(vec2 p) { + vec2 p1 = mod(p, 2.0); + vec2 p2 = floor(0.5 * mod(p, 4.0)); + vec2 p4 = floor(0.25 * mod(p, 8.0)); + return 4.0 * (4.0 * bayer2(p1) + bayer2(p2)) + bayer2(p4); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/biasConst.js +var biasConstPS = ` +#define SHADOWBIAS +#define SHADOW_SAMPLE_Z_BIAS +float getShadowBias(float resolution, float maxBias) { + return maxBias; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/blurVSM.js +var blurVSMPS = ` +varying vec2 vUv0; +uniform sampler2D source; +uniform vec2 pixelOffset; +#ifdef GAUSS +uniform float weight[SAMPLES]; +#endif +#ifdef PACKED +float decodeFloatRG(vec2 rg) { + return rg.y*(1.0/255.0) + rg.x; +} +vec2 encodeFloatRG( float v ) { + vec2 enc = vec2(1.0, 255.0) * v; + enc = fract(enc); + enc -= enc.yy * vec2(1.0/255.0, 1.0/255.0); + return enc; +} +#endif +void main(void) { + vec3 moments = vec3(0.0); + vec2 uv = vUv0 - pixelOffset * (float(SAMPLES) * 0.5); + for (int i=0; i= vAbs.x && vAbs.z >= vAbs.y) { + faceIndex = dir.z < 0.0 ? 5.0 : 4.0; + ma = 0.5 / vAbs.z; + uv = vec2(dir.z < 0.0 ? -dir.x : dir.x, -dir.y); + tileOffset.x = 2.0; + tileOffset.y = dir.z < 0.0 ? 1.0 : 0.0; + } else if(vAbs.y >= vAbs.x) { + faceIndex = dir.y < 0.0 ? 3.0 : 2.0; + ma = 0.5 / vAbs.y; + uv = vec2(dir.x, dir.y < 0.0 ? -dir.z : dir.z); + tileOffset.x = 1.0; + tileOffset.y = dir.y < 0.0 ? 1.0 : 0.0; + } else { + faceIndex = dir.x < 0.0 ? 1.0 : 0.0; + ma = 0.5 / vAbs.x; + uv = vec2(dir.x < 0.0 ? dir.z : -dir.z, -dir.y); + tileOffset.x = 0.0; + tileOffset.y = dir.x < 0.0 ? 1.0 : 0.0; + } + return uv * ma + 0.5; +} +vec2 getCubemapAtlasCoordinates(const vec3 omniAtlasViewport, float shadowEdgePixels, float shadowTextureResolution, const vec3 dir) { + float faceIndex; + vec2 tileOffset; + vec2 uv = getCubemapFaceCoordinates(dir, faceIndex, tileOffset); + float atlasFaceSize = omniAtlasViewport.z; + float tileSize = shadowTextureResolution * atlasFaceSize; + float offset = shadowEdgePixels / tileSize; + uv = uv * vec2(1.0 - offset * 2.0) + vec2(offset * 1.0); + uv *= atlasFaceSize; + uv += tileOffset * atlasFaceSize; + uv += omniAtlasViewport.xy; + return uv; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/clusteredLightCookies.js +var clusteredLightCookiesPS = ` +vec3 _getCookieClustered(TEXTURE_ACCEPT(tex), vec2 uv, float intensity, bool isRgb, vec4 cookieChannel) { + vec4 pixel = mix(vec4(1.0), texture2DLodEXT(tex, uv, 0.0), intensity); + return isRgb == true ? pixel.rgb : vec3(dot(pixel, cookieChannel)); +} +vec3 getCookie2DClustered(TEXTURE_ACCEPT(tex), mat4 transform, vec3 worldPosition, float intensity, bool isRgb, vec4 cookieChannel) { + vec4 projPos = transform * vec4(worldPosition, 1.0); + return _getCookieClustered(TEXTURE_PASS(tex), projPos.xy / projPos.w, intensity, isRgb, cookieChannel); +} +vec3 getCookieCubeClustered(TEXTURE_ACCEPT(tex), vec3 dir, float intensity, bool isRgb, vec4 cookieChannel, float shadowTextureResolution, float shadowEdgePixels, vec3 omniAtlasViewport) { + vec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, dir); + return _getCookieClustered(TEXTURE_PASS(tex), uv, intensity, isRgb, cookieChannel); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/clusteredLightShadows.js +var clusteredLightShadowsPS = ` +void _getShadowCoordPerspZbuffer(mat4 shadowMatrix, vec4 shadowParams, vec3 wPos) { + vec4 projPos = shadowMatrix * vec4(wPos, 1.0); + projPos.xyz /= projPos.w; + dShadowCoord = projPos.xyz; +} +void getShadowCoordPerspZbufferNormalOffset(mat4 shadowMatrix, vec4 shadowParams, vec3 normal) { + vec3 wPos = vPositionW + normal * shadowParams.y; + _getShadowCoordPerspZbuffer(shadowMatrix, shadowParams, wPos); +} +vec3 normalOffsetPointShadow(vec4 shadowParams, vec3 lightPos, inout vec3 lightDir, vec3 lightDirNorm, vec3 normal) { + float distScale = length(lightDir); + vec3 wPos = vPositionW + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale; + vec3 dir = wPos - lightPos; + return dir; +} +#ifdef GL2 + #if defined(CLUSTER_SHADOW_TYPE_PCF1) + float getShadowOmniClusteredPCF1(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) { + float shadowTextureResolution = shadowParams.x; + vec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir); + float shadowZ = length(lightDir) * shadowParams.w + shadowParams.z; + return textureShadow(shadowMap, vec3(uv, shadowZ)); + } + #endif + #if defined(CLUSTER_SHADOW_TYPE_PCF3) + float getShadowOmniClusteredPCF3(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) { + float shadowTextureResolution = shadowParams.x; + vec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir); + float shadowZ = length(lightDir) * shadowParams.w + shadowParams.z; + vec3 shadowCoord = vec3(uv, shadowZ); + return getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams); + } + #endif + #if defined(CLUSTER_SHADOW_TYPE_PCF5) + float getShadowOmniClusteredPCF5(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) { + float shadowTextureResolution = shadowParams.x; + vec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir); + float shadowZ = length(lightDir) * shadowParams.w + shadowParams.z; + vec3 shadowCoord = vec3(uv, shadowZ); + return getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams); + } + #endif +#else + #if defined(CLUSTER_SHADOW_TYPE_PCF1) + float getShadowOmniClusteredPCF1(sampler2D shadowMap, vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) { + float shadowTextureResolution = shadowParams.x; + vec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir); + float depth = unpackFloat(textureShadow(shadowMap, uv)); + float shadowZ = length(lightDir) * shadowParams.w + shadowParams.z; + return depth > shadowZ ? 1.0 : 0.0; + } + #endif + #if defined(CLUSTER_SHADOW_TYPE_PCF3) + float getShadowOmniClusteredPCF3(sampler2D shadowMap, vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) { + float shadowTextureResolution = shadowParams.x; + vec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir); + float shadowZ = length(lightDir) * shadowParams.w + shadowParams.z; + vec3 shadowCoord = vec3(uv, shadowZ); + return getShadowPCF3x3(shadowMap, shadowCoord, shadowParams); + } + #endif + #if defined(CLUSTER_SHADOW_TYPE_PCF5) + float getShadowOmniClusteredPCF5(sampler2D shadowMap, vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) { + float shadowTextureResolution = shadowParams.x; + vec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir); + float shadowZ = length(lightDir) * shadowParams.w + shadowParams.z; + vec3 shadowCoord = vec3(uv, shadowZ); + return getShadowPCF3x3(shadowMap, shadowCoord, shadowParams); + } + #endif +#endif +#ifdef GL2 + #if defined(CLUSTER_SHADOW_TYPE_PCF1) + float getShadowSpotClusteredPCF1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return textureShadow(shadowMap, shadowCoord); + } + #endif + #if defined(CLUSTER_SHADOW_TYPE_PCF3) + float getShadowSpotClusteredPCF3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return getShadowSpotPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams); + } + #endif + #if defined(CLUSTER_SHADOW_TYPE_PCF5) + float getShadowSpotClusteredPCF5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams); + } + #endif +#else + #if defined(CLUSTER_SHADOW_TYPE_PCF1) + float getShadowSpotClusteredPCF1(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) { + float depth = unpackFloat(textureShadow(shadowMap, shadowCoord.xy)); + return depth > shadowCoord.z ? 1.0 : 0.0; + } + #endif + #if defined(CLUSTER_SHADOW_TYPE_PCF3) + float getShadowSpotClusteredPCF3(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) { + return getShadowSpotPCF3x3(shadowMap, shadowCoord, shadowParams); + } + #endif + #if defined(CLUSTER_SHADOW_TYPE_PCF5) + float getShadowSpotClusteredPCF5(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) { + return getShadowSpotPCF3x3(shadowMap, shadowCoord, shadowParams); + } + #endif +#endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/clusteredLight.js +var clusteredLightPS = ` +uniform highp sampler2D clusterWorldTexture; +uniform highp sampler2D lightsTexture8; +uniform highp sampler2D lightsTextureFloat; +#if defined(CLUSTER_COOKIES) + #define CLUSTER_COOKIES_OR_SHADOWS +#endif +#if defined(CLUSTER_SHADOWS) + #define CLUSTER_COOKIES_OR_SHADOWS +#endif +#ifdef CLUSTER_SHADOWS + #ifdef GL2 + uniform sampler2DShadow shadowAtlasTexture; + #else + uniform sampler2D shadowAtlasTexture; + #endif +#endif +#ifdef CLUSTER_COOKIES + uniform sampler2D cookieAtlasTexture; +#endif +#ifdef GL2 + uniform int clusterMaxCells; +#else + uniform float clusterMaxCells; + uniform vec4 lightsTextureInvSize; +#endif +uniform float clusterSkip; +uniform vec3 clusterCellsCountByBoundsSize; +uniform vec3 clusterTextureSize; +uniform vec3 clusterBoundsMin; +uniform vec3 clusterBoundsDelta; +uniform vec3 clusterCellsDot; +uniform vec3 clusterCellsMax; +uniform vec2 clusterCompressionLimit0; +uniform vec2 shadowAtlasParams; +struct ClusterLightData { + vec3 halfWidth; + float lightType; + vec3 halfHeight; + #ifdef GL2 + int lightIndex; + #else + float lightV; + #endif + vec3 position; + float shape; + vec3 direction; + float falloffMode; + vec3 color; + float shadowIntensity; + vec3 omniAtlasViewport; + float range; + vec4 cookieChannelMask; + float shadowBias; + float shadowNormalBias; + float innerConeAngleCos; + float outerConeAngleCos; + float cookie; + float cookieRgb; + float cookieIntensity; + float mask; +}; +mat4 lightProjectionMatrix; +#define isClusteredLightCastShadow(light) ( light.shadowIntensity > 0.0 ) +#define isClusteredLightCookie(light) (light.cookie > 0.5 ) +#define isClusteredLightCookieRgb(light) (light.cookieRgb > 0.5 ) +#define isClusteredLightSpot(light) ( light.lightType > 0.5 ) +#define isClusteredLightFalloffLinear(light) ( light.falloffMode < 0.5 ) +#define isClusteredLightArea(light) ( light.shape > 0.1 ) +#define isClusteredLightRect(light) ( light.shape < 0.3 ) +#define isClusteredLightDisk(light) ( light.shape < 0.6 ) +#ifdef CLUSTER_MESH_DYNAMIC_LIGHTS + #define acceptLightMask(light) ( light.mask < 0.75) +#else + #define acceptLightMask(light) ( light.mask > 0.25) +#endif +vec4 decodeClusterLowRange4Vec4(vec4 d0, vec4 d1, vec4 d2, vec4 d3) { + return vec4( + bytes2floatRange4(d0, -2.0, 2.0), + bytes2floatRange4(d1, -2.0, 2.0), + bytes2floatRange4(d2, -2.0, 2.0), + bytes2floatRange4(d3, -2.0, 2.0) + ); +} +#ifdef GL2 + vec4 sampleLightsTexture8(const ClusterLightData clusterLightData, int index) { + return texelFetch(lightsTexture8, ivec2(index, clusterLightData.lightIndex), 0); + } + vec4 sampleLightTextureF(const ClusterLightData clusterLightData, int index) { + return texelFetch(lightsTextureFloat, ivec2(index, clusterLightData.lightIndex), 0); + } +#else + vec4 sampleLightsTexture8(const ClusterLightData clusterLightData, float index) { + return texture2DLodEXT(lightsTexture8, vec2(index * lightsTextureInvSize.z, clusterLightData.lightV), 0.0); + } + vec4 sampleLightTextureF(const ClusterLightData clusterLightData, float index) { + return texture2DLodEXT(lightsTextureFloat, vec2(index * lightsTextureInvSize.x, clusterLightData.lightV), 0.0); + } +#endif +void decodeClusterLightCore(inout ClusterLightData clusterLightData, float lightIndex) { + #ifdef GL2 + clusterLightData.lightIndex = int(lightIndex); + #else + clusterLightData.lightV = (lightIndex + 0.5) * lightsTextureInvSize.w; + #endif + vec4 lightInfo = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_FLAGS); + clusterLightData.lightType = lightInfo.x; + clusterLightData.shape = lightInfo.y; + clusterLightData.falloffMode = lightInfo.z; + clusterLightData.shadowIntensity = lightInfo.w; + vec4 colorA = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_COLOR_A); + vec4 colorB = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_COLOR_B); + clusterLightData.color = vec3(bytes2float2(colorA.xy), bytes2float2(colorA.zw), bytes2float2(colorB.xy)) * clusterCompressionLimit0.y; + clusterLightData.cookie = colorB.z; + clusterLightData.mask = colorB.w; + #ifdef CLUSTER_TEXTURE_FLOAT + vec4 lightPosRange = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_POSITION_RANGE); + clusterLightData.position = lightPosRange.xyz; + clusterLightData.range = lightPosRange.w; + vec4 lightDir_Unused = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_SPOT_DIRECTION); + clusterLightData.direction = lightDir_Unused.xyz; + #else + vec4 encPosX = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_POSITION_X); + vec4 encPosY = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_POSITION_Y); + vec4 encPosZ = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_POSITION_Z); + clusterLightData.position = vec3(bytes2float4(encPosX), bytes2float4(encPosY), bytes2float4(encPosZ)) * clusterBoundsDelta + clusterBoundsMin; + vec4 encRange = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_RANGE); + clusterLightData.range = bytes2float4(encRange) * clusterCompressionLimit0.x; + vec4 encDirX = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SPOT_DIRECTION_X); + vec4 encDirY = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SPOT_DIRECTION_Y); + vec4 encDirZ = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SPOT_DIRECTION_Z); + clusterLightData.direction = vec3(bytes2float4(encDirX), bytes2float4(encDirY), bytes2float4(encDirZ)) * 2.0 - 1.0; + #endif +} +void decodeClusterLightSpot(inout ClusterLightData clusterLightData) { + vec4 coneAngle = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SPOT_ANGLES); + clusterLightData.innerConeAngleCos = bytes2float2(coneAngle.xy) * 2.0 - 1.0; + clusterLightData.outerConeAngleCos = bytes2float2(coneAngle.zw) * 2.0 - 1.0; +} +void decodeClusterLightOmniAtlasViewport(inout ClusterLightData clusterLightData) { + #ifdef CLUSTER_TEXTURE_FLOAT + clusterLightData.omniAtlasViewport = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_0).xyz; + #else + vec4 viewportA = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_ATLAS_VIEWPORT_A); + vec4 viewportB = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_ATLAS_VIEWPORT_B); + clusterLightData.omniAtlasViewport = vec3(bytes2float2(viewportA.xy), bytes2float2(viewportA.zw), bytes2float2(viewportB.xy)); + #endif +} +void decodeClusterLightAreaData(inout ClusterLightData clusterLightData) { + #ifdef CLUSTER_TEXTURE_FLOAT + clusterLightData.halfWidth = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_AREA_DATA_WIDTH).xyz; + clusterLightData.halfHeight = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_AREA_DATA_HEIGHT).xyz; + #else + vec4 areaWidthX = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_WIDTH_X); + vec4 areaWidthY = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_WIDTH_Y); + vec4 areaWidthZ = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_WIDTH_Z); + clusterLightData.halfWidth = vec3(mantissaExponent2Float(areaWidthX), mantissaExponent2Float(areaWidthY), mantissaExponent2Float(areaWidthZ)); + vec4 areaHeightX = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_HEIGHT_X); + vec4 areaHeightY = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_HEIGHT_Y); + vec4 areaHeightZ = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_HEIGHT_Z); + clusterLightData.halfHeight = vec3(mantissaExponent2Float(areaHeightX), mantissaExponent2Float(areaHeightY), mantissaExponent2Float(areaHeightZ)); + #endif +} +void decodeClusterLightProjectionMatrixData(inout ClusterLightData clusterLightData) { + + #ifdef CLUSTER_TEXTURE_FLOAT + vec4 m0 = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_0); + vec4 m1 = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_1); + vec4 m2 = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_2); + vec4 m3 = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_3); + #else + vec4 m00 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_00); + vec4 m01 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_01); + vec4 m02 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_02); + vec4 m03 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_03); + vec4 m0 = decodeClusterLowRange4Vec4(m00, m01, m02, m03); + vec4 m10 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_10); + vec4 m11 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_11); + vec4 m12 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_12); + vec4 m13 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_13); + vec4 m1 = decodeClusterLowRange4Vec4(m10, m11, m12, m13); + vec4 m20 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_20); + vec4 m21 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_21); + vec4 m22 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_22); + vec4 m23 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_23); + vec4 m2 = decodeClusterLowRange4Vec4(m20, m21, m22, m23); + vec4 m30 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_30); + vec4 m31 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_31); + vec4 m32 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_32); + vec4 m33 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_33); + vec4 m3 = vec4(mantissaExponent2Float(m30), mantissaExponent2Float(m31), mantissaExponent2Float(m32), mantissaExponent2Float(m33)); + #endif + + lightProjectionMatrix = mat4(m0, m1, m2, m3); +} +void decodeClusterLightShadowData(inout ClusterLightData clusterLightData) { + + vec4 biases = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SHADOW_BIAS); + clusterLightData.shadowBias = bytes2floatRange2(biases.xy, -1.0, 20.0), + clusterLightData.shadowNormalBias = bytes2float2(biases.zw); +} +void decodeClusterLightCookieData(inout ClusterLightData clusterLightData) { + vec4 cookieA = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_COOKIE_A); + clusterLightData.cookieIntensity = cookieA.x; + clusterLightData.cookieRgb = cookieA.y; + clusterLightData.cookieChannelMask = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_COOKIE_B); +} +void evaluateLight( + ClusterLightData light, + vec3 worldNormal, + vec3 viewDir, + vec3 reflectionDir, +#if defined(LIT_CLEARCOAT) + vec3 clearcoatReflectionDir, +#endif + float gloss, + vec3 specularity, + vec3 geometricNormal, + mat3 tbn, +#if defined(LIT_IRIDESCENCE) + vec3 iridescenceFresnel, +#endif + vec3 clearcoat_worldNormal, + float clearcoat_gloss, + float sheen_gloss, + float iridescence_intensity +) { + vec3 cookieAttenuation = vec3(1.0); + float diffuseAttenuation = 1.0; + float falloffAttenuation = 1.0; + getLightDirPoint(light.position); + #ifdef CLUSTER_AREALIGHTS + if (isClusteredLightArea(light)) { + decodeClusterLightAreaData(light); + if (isClusteredLightRect(light)) { + calcRectLightValues(light.position, light.halfWidth, light.halfHeight); + } else if (isClusteredLightDisk(light)) { + calcDiskLightValues(light.position, light.halfWidth, light.halfHeight); + } else { + calcSphereLightValues(light.position, light.halfWidth, light.halfHeight); + } + falloffAttenuation = getFalloffWindow(light.range, dLightDirW); + } else + #endif + { + if (isClusteredLightFalloffLinear(light)) + falloffAttenuation = getFalloffLinear(light.range, dLightDirW); + else + falloffAttenuation = getFalloffInvSquared(light.range, dLightDirW); + } + if (falloffAttenuation > 0.00001) { + #ifdef CLUSTER_AREALIGHTS + if (isClusteredLightArea(light)) { + if (isClusteredLightRect(light)) { + diffuseAttenuation = getRectLightDiffuse(worldNormal, viewDir, dLightDirW, dLightDirNormW) * 16.0; + } else if (isClusteredLightDisk(light)) { + diffuseAttenuation = getDiskLightDiffuse(worldNormal, viewDir, dLightDirW, dLightDirNormW) * 16.0; + } else { + diffuseAttenuation = getSphereLightDiffuse(worldNormal, viewDir, dLightDirW, dLightDirNormW) * 16.0; + } + } else + #endif + { + falloffAttenuation *= getLightDiffuse(worldNormal, viewDir, dLightDirW, dLightDirNormW); + } + if (isClusteredLightSpot(light)) { + decodeClusterLightSpot(light); + falloffAttenuation *= getSpotEffect(light.direction, light.innerConeAngleCos, light.outerConeAngleCos, dLightDirNormW); + } + #if defined(CLUSTER_COOKIES_OR_SHADOWS) + if (falloffAttenuation > 0.00001) { + if (isClusteredLightCastShadow(light) || isClusteredLightCookie(light)) { + if (isClusteredLightSpot(light)) { + decodeClusterLightProjectionMatrixData(light); + } else { + decodeClusterLightOmniAtlasViewport(light); + } + float shadowTextureResolution = shadowAtlasParams.x; + float shadowEdgePixels = shadowAtlasParams.y; + #ifdef CLUSTER_COOKIES + if (isClusteredLightCookie(light)) { + decodeClusterLightCookieData(light); + if (isClusteredLightSpot(light)) { + cookieAttenuation = getCookie2DClustered(TEXTURE_PASS(cookieAtlasTexture), lightProjectionMatrix, vPositionW, light.cookieIntensity, isClusteredLightCookieRgb(light), light.cookieChannelMask); + } else { + cookieAttenuation = getCookieCubeClustered(TEXTURE_PASS(cookieAtlasTexture), dLightDirW, light.cookieIntensity, isClusteredLightCookieRgb(light), light.cookieChannelMask, shadowTextureResolution, shadowEdgePixels, light.omniAtlasViewport); + } + } + #endif + #ifdef CLUSTER_SHADOWS + if (isClusteredLightCastShadow(light)) { + decodeClusterLightShadowData(light); + vec4 shadowParams = vec4(shadowTextureResolution, light.shadowNormalBias, light.shadowBias, 1.0 / light.range); + if (isClusteredLightSpot(light)) { + getShadowCoordPerspZbufferNormalOffset(lightProjectionMatrix, shadowParams, geometricNormal); + + #if defined(CLUSTER_SHADOW_TYPE_PCF1) + float shadow = getShadowSpotClusteredPCF1(SHADOWMAP_PASS(shadowAtlasTexture), dShadowCoord, shadowParams); + #elif defined(CLUSTER_SHADOW_TYPE_PCF3) + float shadow = getShadowSpotClusteredPCF3(SHADOWMAP_PASS(shadowAtlasTexture), dShadowCoord, shadowParams); + #elif defined(CLUSTER_SHADOW_TYPE_PCF5) + float shadow = getShadowSpotClusteredPCF5(SHADOWMAP_PASS(shadowAtlasTexture), dShadowCoord, shadowParams); + #elif defined(CLUSTER_SHADOW_TYPE_PCSS) + float shadow = getShadowSpotClusteredPCSS(SHADOWMAP_PASS(shadowAtlasTexture), dShadowCoord, shadowParams); + #endif + falloffAttenuation *= mix(1.0, shadow, light.shadowIntensity); + } else { + vec3 dir = normalOffsetPointShadow(shadowParams, dLightPosW, dLightDirW, dLightDirNormW, geometricNormal); + #if defined(CLUSTER_SHADOW_TYPE_PCF1) + float shadow = getShadowOmniClusteredPCF1(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir); + #elif defined(CLUSTER_SHADOW_TYPE_PCF3) + float shadow = getShadowOmniClusteredPCF3(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir); + #elif defined(CLUSTER_SHADOW_TYPE_PCF5) + float shadow = getShadowOmniClusteredPCF5(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir); + #endif + falloffAttenuation *= mix(1.0, shadow, light.shadowIntensity); + } + } + #endif + } + } + #endif + #ifdef CLUSTER_AREALIGHTS + if (isClusteredLightArea(light)) { + { + vec3 areaDiffuse = (diffuseAttenuation * falloffAttenuation) * light.color * cookieAttenuation; + #if defined(LIT_SPECULAR) + #if defined(LIT_CONSERVE_ENERGY) + areaDiffuse = mix(areaDiffuse, vec3(0), dLTCSpecFres); + #endif + #endif + dDiffuseLight += areaDiffuse; + } + #ifdef LIT_SPECULAR + float areaLightSpecular; + if (isClusteredLightRect(light)) { + areaLightSpecular = getRectLightSpecular(worldNormal, viewDir); + } else if (isClusteredLightDisk(light)) { + areaLightSpecular = getDiskLightSpecular(worldNormal, viewDir); + } else { + areaLightSpecular = getSphereLightSpecular(worldNormal, viewDir); + } + dSpecularLight += dLTCSpecFres * areaLightSpecular * falloffAttenuation * light.color * cookieAttenuation; + #ifdef LIT_CLEARCOAT + float areaLightSpecularCC; + if (isClusteredLightRect(light)) { + areaLightSpecularCC = getRectLightSpecular(clearcoat_worldNormal, viewDir); + } else if (isClusteredLightDisk(light)) { + areaLightSpecularCC = getDiskLightSpecular(clearcoat_worldNormal, viewDir); + } else { + areaLightSpecularCC = getSphereLightSpecular(clearcoat_worldNormal, viewDir); + } + ccSpecularLight += ccLTCSpecFres * areaLightSpecularCC * falloffAttenuation * light.color * cookieAttenuation; + #endif + #endif + } else + #endif + { + { + vec3 punctualDiffuse = falloffAttenuation * light.color * cookieAttenuation; + #if defined(CLUSTER_AREALIGHTS) + #if defined(LIT_SPECULAR) + #if defined(LIT_CONSERVE_ENERGY) + punctualDiffuse = mix(punctualDiffuse, vec3(0), specularity); + #endif + #endif + #endif + dDiffuseLight += punctualDiffuse; + } + + #ifdef LIT_SPECULAR + vec3 halfDir = normalize(-dLightDirNormW + viewDir); + + #ifdef LIT_SPECULAR_FRESNEL + dSpecularLight += + getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dLightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * + getFresnel( + dot(viewDir, halfDir), + gloss, + specularity + #if defined(LIT_IRIDESCENCE) + , iridescenceFresnel, + iridescence_intensity + #endif + ); + #else + dSpecularLight += getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dLightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * specularity; + #endif + #ifdef LIT_CLEARCOAT + #ifdef LIT_SPECULAR_FRESNEL + ccSpecularLight += getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, dLightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * getFresnelCC(dot(viewDir, halfDir)); + #else + ccSpecularLight += getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, dLightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation; + #endif + #endif + #ifdef LIT_SHEEN + sSpecularLight += getLightSpecularSheen(halfDir, worldNormal, viewDir, dLightDirNormW, sheen_gloss) * falloffAttenuation * light.color * cookieAttenuation; + #endif + #endif + } + } + dAtten = falloffAttenuation; + dAttenD = diffuseAttenuation; + dAtten3 = cookieAttenuation; +} +void evaluateClusterLight( + float lightIndex, + vec3 worldNormal, + vec3 viewDir, + vec3 reflectionDir, +#if defined(LIT_CLEARCOAT) + vec3 clearcoatReflectionDir, +#endif + float gloss, + vec3 specularity, + vec3 geometricNormal, + mat3 tbn, +#if defined(LIT_IRIDESCENCE) + vec3 iridescenceFresnel, +#endif + vec3 clearcoat_worldNormal, + float clearcoat_gloss, + float sheen_gloss, + float iridescence_intensity +) { + ClusterLightData clusterLightData; + decodeClusterLightCore(clusterLightData, lightIndex); + if (acceptLightMask(clusterLightData)) + evaluateLight( + clusterLightData, + worldNormal, + viewDir, + reflectionDir, +#if defined(LIT_CLEARCOAT) + clearcoatReflectionDir, +#endif + gloss, + specularity, + geometricNormal, + tbn, +#if defined(LIT_IRIDESCENCE) + iridescenceFresnel, +#endif + clearcoat_worldNormal, + clearcoat_gloss, + sheen_gloss, + iridescence_intensity + ); +} +void addClusteredLights( + vec3 worldNormal, + vec3 viewDir, + vec3 reflectionDir, +#if defined(LIT_CLEARCOAT) + vec3 clearcoatReflectionDir, +#endif + float gloss, + vec3 specularity, + vec3 geometricNormal, + mat3 tbn, +#if defined(LIT_IRIDESCENCE) + vec3 iridescenceFresnel, +#endif + vec3 clearcoat_worldNormal, + float clearcoat_gloss, + float sheen_gloss, + float iridescence_intensity +) { + if (clusterSkip > 0.5) + return; + vec3 cellCoords = floor((vPositionW - clusterBoundsMin) * clusterCellsCountByBoundsSize); + if (!(any(lessThan(cellCoords, vec3(0.0))) || any(greaterThanEqual(cellCoords, clusterCellsMax)))) { + float cellIndex = dot(clusterCellsDot, cellCoords); + float clusterV = floor(cellIndex * clusterTextureSize.y); + float clusterU = cellIndex - (clusterV * clusterTextureSize.x); + #ifdef GL2 + for (int lightCellIndex = 0; lightCellIndex < clusterMaxCells; lightCellIndex++) { + float lightIndex = texelFetch(clusterWorldTexture, ivec2(int(clusterU) + lightCellIndex, clusterV), 0).x; + if (lightIndex <= 0.0) + return; + evaluateClusterLight( + lightIndex * 255.0, + worldNormal, + viewDir, + reflectionDir, +#if defined(LIT_CLEARCOAT) + clearcoatReflectionDir, +#endif + gloss, + specularity, + geometricNormal, + tbn, +#if defined(LIT_IRIDESCENCE) + iridescenceFresnel, +#endif + clearcoat_worldNormal, + clearcoat_gloss, + sheen_gloss, + iridescence_intensity + ); + } + #else + clusterV = (clusterV + 0.5) * clusterTextureSize.z; + const float maxLightCells = 256.0; + for (float lightCellIndex = 0.5; lightCellIndex < maxLightCells; lightCellIndex++) { + float lightIndex = texture2DLodEXT(clusterWorldTexture, vec2(clusterTextureSize.y * (clusterU + lightCellIndex), clusterV), 0.0).x; + if (lightIndex <= 0.0) + return; + + evaluateClusterLight( + lightIndex * 255.0, + worldNormal, + viewDir, + reflectionDir, +#if defined(LIT_CLEARCOAT) + clearcoatReflectionDir, +#endif + gloss, + specularity, + geometricNormal, + tbn, +#if defined(LIT_IRIDESCENCE) + iridescenceFresnel, +#endif + clearcoat_worldNormal, + clearcoat_gloss, + sheen_gloss, + iridescence_intensity + ); + if (lightCellIndex >= clusterMaxCells) { + break; + } + } + #endif + } +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/combine.js +var combinePS = ` +vec3 combineColor(vec3 albedo, vec3 sheenSpecularity, float clearcoatSpecularity) { + vec3 ret = vec3(0); +#ifdef LIT_OLD_AMBIENT + ret += (dDiffuseLight - light_globalAmbient) * albedo + material_ambient * light_globalAmbient; +#else + ret += albedo * dDiffuseLight; +#endif +#ifdef LIT_SPECULAR + ret += dSpecularLight; +#endif +#ifdef LIT_REFLECTIONS + ret += dReflection.rgb * dReflection.a; +#endif +#ifdef LIT_SHEEN + float sheenScaling = 1.0 - max(max(sheenSpecularity.r, sheenSpecularity.g), sheenSpecularity.b) * 0.157; + ret = ret * sheenScaling + (sSpecularLight + sReflection.rgb) * sheenSpecularity; +#endif +#ifdef LIT_CLEARCOAT + float clearCoatScaling = 1.0 - ccFresnel * clearcoatSpecularity; + ret = ret * clearCoatScaling + (ccSpecularLight + ccReflection.rgb) * clearcoatSpecularity; +#endif + return ret; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/cookie.js +var cookiePS = ` +vec4 getCookie2D(sampler2D tex, mat4 transform, float intensity) { + vec4 projPos = transform * vec4(vPositionW, 1.0); + projPos.xy /= projPos.w; + return mix(vec4(1.0), texture2D(tex, projPos.xy), intensity); +} +vec4 getCookie2DClip(sampler2D tex, mat4 transform, float intensity) { + vec4 projPos = transform * vec4(vPositionW, 1.0); + projPos.xy /= projPos.w; + if (projPos.x < 0.0 || projPos.x > 1.0 || projPos.y < 0.0 || projPos.y > 1.0 || projPos.z < 0.0) return vec4(0.0); + return mix(vec4(1.0), texture2D(tex, projPos.xy), intensity); +} +vec4 getCookie2DXform(sampler2D tex, mat4 transform, float intensity, vec4 cookieMatrix, vec2 cookieOffset) { + vec4 projPos = transform * vec4(vPositionW, 1.0); + projPos.xy /= projPos.w; + projPos.xy += cookieOffset; + vec2 uv = mat2(cookieMatrix) * (projPos.xy-vec2(0.5)) + vec2(0.5); + return mix(vec4(1.0), texture2D(tex, uv), intensity); +} +vec4 getCookie2DClipXform(sampler2D tex, mat4 transform, float intensity, vec4 cookieMatrix, vec2 cookieOffset) { + vec4 projPos = transform * vec4(vPositionW, 1.0); + projPos.xy /= projPos.w; + projPos.xy += cookieOffset; + if (projPos.x < 0.0 || projPos.x > 1.0 || projPos.y < 0.0 || projPos.y > 1.0 || projPos.z < 0.0) return vec4(0.0); + vec2 uv = mat2(cookieMatrix) * (projPos.xy-vec2(0.5)) + vec2(0.5); + return mix(vec4(1.0), texture2D(tex, uv), intensity); +} +vec4 getCookieCube(samplerCube tex, mat4 transform, float intensity) { + return mix(vec4(1.0), textureCube(tex, dLightDirNormW * mat3(transform)), intensity); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/cubeMapProjectBox.js +var cubeMapProjectBoxPS = ` +uniform vec3 envBoxMin; +uniform vec3 envBoxMax; +vec3 cubeMapProject(vec3 nrdir) { + nrdir = cubeMapRotate(nrdir); + vec3 rbmax = (envBoxMax - vPositionW) / nrdir; + vec3 rbmin = (envBoxMin - vPositionW) / nrdir; + vec3 rbminmax; + rbminmax.x = nrdir.x>0.0? rbmax.x : rbmin.x; + rbminmax.y = nrdir.y>0.0? rbmax.y : rbmin.y; + rbminmax.z = nrdir.z>0.0? rbmax.z : rbmin.z; + float fa = min(min(rbminmax.x, rbminmax.y), rbminmax.z); + vec3 posonbox = vPositionW + nrdir * fa; + vec3 envBoxPos = (envBoxMin + envBoxMax) * 0.5; + return normalize(posonbox - envBoxPos); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/cubeMapProjectNone.js +var cubeMapProjectNonePS = ` +vec3 cubeMapProject(vec3 dir) { + return cubeMapRotate(dir); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/cubeMapRotate.js +var cubeMapRotatePS = ` +#ifdef CUBEMAP_ROTATION +uniform mat3 cubeMapRotationMatrix; +#endif +vec3 cubeMapRotate(vec3 refDir) { +#ifdef CUBEMAP_ROTATION + return refDir * cubeMapRotationMatrix; +#else + return refDir; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/debug-output.js +var debugOutputPS = ` +#ifdef DEBUG_ALBEDO_PASS +gl_FragColor = vec4(gammaCorrectOutput(dAlbedo), 1.0); +#endif +#ifdef DEBUG_UV0_PASS +gl_FragColor = vec4(litArgs_albedo , 1.0); +#endif +#ifdef DEBUG_WORLD_NORMAL_PASS +gl_FragColor = vec4(litArgs_worldNormal * 0.5 + 0.5, 1.0); +#endif +#ifdef DEBUG_OPACITY_PASS +gl_FragColor = vec4(vec3(litArgs_opacity) , 1.0); +#endif +#ifdef DEBUG_SPECULARITY_PASS +gl_FragColor = vec4(litArgs_specularity, 1.0); +#endif +#ifdef DEBUG_GLOSS_PASS +gl_FragColor = vec4(vec3(litArgs_gloss) , 1.0); +#endif +#ifdef DEBUG_METALNESS_PASS +gl_FragColor = vec4(vec3(litArgs_metalness) , 1.0); +#endif +#ifdef DEBUG_AO_PASS +gl_FragColor = vec4(vec3(litArgs_ao) , 1.0); +#endif +#ifdef DEBUG_EMISSION_PASS +gl_FragColor = vec4(gammaCorrectOutput(litArgs_emission), 1.0); +#endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/debug-process-frontend.js +var debugProcessFrontendPS = ` +#ifdef DEBUG_LIGHTING_PASS +litArgs_albedo = vec3(0.5); +#endif +#ifdef DEBUG_UV0_PASS +#ifdef VARYING_VUV0 +litArgs_albedo = vec3(vUv0, 0); +#else +litArgs_albedo = vec3(0); +#endif +#endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/decode.js +var decodePS = ` +vec3 decodeLinear(vec4 raw) { + return raw.rgb; +} +float decodeGamma(float raw) { + return pow(raw, 2.2); +} +vec3 decodeGamma(vec3 raw) { + return pow(raw, vec3(2.2)); +} +vec3 decodeGamma(vec4 raw) { + return pow(raw.xyz, vec3(2.2)); +} +vec3 decodeRGBM(vec4 raw) { + vec3 color = (8.0 * raw.a) * raw.rgb; + return color * color; +} +vec3 decodeRGBP(vec4 raw) { + vec3 color = raw.rgb * (-raw.a * 7.0 + 8.0); + return color * color; +} +vec3 decodeRGBE(vec4 raw) { + if (raw.a == 0.0) { + return vec3(0.0, 0.0, 0.0); + } else { + return raw.xyz * pow(2.0, raw.w * 255.0 - 128.0); + } +} +vec4 passThrough(vec4 raw) { + return raw; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/detailModes.js +var detailModesPS = ` +vec3 detailMode_mul(vec3 c1, vec3 c2) { + return c1 * c2; +} +vec3 detailMode_add(vec3 c1, vec3 c2) { + return c1 + c2; +} +vec3 detailMode_screen(vec3 c1, vec3 c2) { + return 1.0 - (1.0 - c1)*(1.0 - c2); +} +vec3 detailMode_overlay(vec3 c1, vec3 c2) { + return mix(1.0 - 2.0*(1.0 - c1)*(1.0 - c2), 2.0*c1*c2, step(c1, vec3(0.5))); +} +vec3 detailMode_min(vec3 c1, vec3 c2) { + return min(c1, c2); +} +vec3 detailMode_max(vec3 c1, vec3 c2) { + return max(c1, c2); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/diffuse.js +var diffusePS = ` +#ifdef MAPCOLOR +uniform vec3 material_diffuse; +#endif +void getAlbedo() { + dAlbedo = vec3(1.0); +#ifdef MAPCOLOR + dAlbedo *= material_diffuse.rgb; +#endif +#ifdef MAPTEXTURE + vec3 albedoBase = $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH; + dAlbedo *= addAlbedoDetail(albedoBase); +#endif +#ifdef MAPVERTEX + dAlbedo *= gammaCorrectInput(saturate(vVertexColor.$VC)); +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/diffuseDetailMap.js +var diffuseDetailMapPS = ` +vec3 addAlbedoDetail(vec3 albedo) { +#ifdef MAPTEXTURE + vec3 albedoDetail = $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH; + return detailMode_$DETAILMODE(albedo, albedoDetail); +#else + return albedo; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/emissive.js +var emissivePS = ` +#ifdef MAPCOLOR +uniform vec3 material_emissive; +#endif +#ifdef MAPFLOAT +uniform float material_emissiveIntensity; +#endif +void getEmission() { + dEmission = vec3(1.0); + #ifdef MAPFLOAT + dEmission *= material_emissiveIntensity; + #endif + #ifdef MAPCOLOR + dEmission *= material_emissive; + #endif + #ifdef MAPTEXTURE + dEmission *= $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH; + #endif + #ifdef MAPVERTEX + dEmission *= gammaCorrectInput(saturate(vVertexColor.$VC)); + #endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/encode.js +var encodePS = ` +vec4 encodeLinear(vec3 source) { + return vec4(source, 1.0); +} +vec4 encodeGamma(vec3 source) { + return vec4(pow(source + 0.0000001, vec3(1.0 / 2.2)), 1.0); +} +vec4 encodeRGBM(vec3 source) { + vec4 result; + result.rgb = pow(source.rgb, vec3(0.5)); + result.rgb *= 1.0 / 8.0; + result.a = saturate( max( max( result.r, result.g ), max( result.b, 1.0 / 255.0 ) ) ); + result.a = ceil(result.a * 255.0) / 255.0; + result.rgb /= result.a; + return result; +} +vec4 encodeRGBP(vec3 source) { + vec3 gamma = pow(source, vec3(0.5)); + float maxVal = min(8.0, max(1.0, max(gamma.x, max(gamma.y, gamma.z)))); + float v = 1.0 - ((maxVal - 1.0) / 7.0); + v = ceil(v * 255.0) / 255.0; + return vec4(gamma / (-v * 7.0 + 8.0), v); +} +vec4 encodeRGBE(vec3 source) { + float maxVal = max(source.x, max(source.y, source.z)); + if (maxVal < 1e-32) { + return vec4(0, 0, 0, 0); + } else { + float e = ceil(log2(maxVal)); + return vec4(source / pow(2.0, e), (e + 128.0) / 255.0); + } +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/end.js +var endPS = ` + gl_FragColor.rgb = combineColor(litArgs_albedo, litArgs_sheen_specularity, litArgs_clearcoat_specularity); + gl_FragColor.rgb += litArgs_emission; + gl_FragColor.rgb = addFog(gl_FragColor.rgb); + #ifndef HDR + gl_FragColor.rgb = toneMap(gl_FragColor.rgb); + gl_FragColor.rgb = gammaCorrectOutput(gl_FragColor.rgb); + #endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/end.js +var endVS = ` +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/envAtlas.js +var envAtlasPS = ` +const float atlasSize = 512.0; +const float seamSize = 1.0 / atlasSize; +vec2 mapUv(vec2 uv, vec4 rect) { + return vec2(mix(rect.x + seamSize, rect.x + rect.z - seamSize, uv.x), + mix(rect.y + seamSize, rect.y + rect.w - seamSize, uv.y)); +} +vec2 mapRoughnessUv(vec2 uv, float level) { + float t = 1.0 / exp2(level); + return mapUv(uv, vec4(0, 1.0 - t, t, t * 0.5)); +} +vec2 mapShinyUv(vec2 uv, float level) { + float t = 1.0 / exp2(level); + return mapUv(uv, vec4(1.0 - t, 1.0 - t, t, t * 0.5)); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/envConst.js +var envConstPS = ` +vec3 processEnvironment(vec3 color) { + return color; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/envMultiply.js +var envMultiplyPS = ` +uniform float skyboxIntensity; +vec3 processEnvironment(vec3 color) { + return color * skyboxIntensity; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/extension.js +var extensionPS = ` +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/extension.js +var extensionVS = ` +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/falloffInvSquared.js +var falloffInvSquaredPS = ` +float getFalloffWindow(float lightRadius, vec3 lightDir) { + float sqrDist = dot(lightDir, lightDir); + float invRadius = 1.0 / lightRadius; + return square( saturate( 1.0 - square( sqrDist * square(invRadius) ) ) ); +} +float getFalloffInvSquared(float lightRadius, vec3 lightDir) { + float sqrDist = dot(lightDir, lightDir); + float falloff = 1.0 / (sqrDist + 1.0); + float invRadius = 1.0 / lightRadius; + falloff *= 16.0; + falloff *= square( saturate( 1.0 - square( sqrDist * square(invRadius) ) ) ); + return falloff; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/falloffLinear.js +var falloffLinearPS = ` +float getFalloffLinear(float lightRadius, vec3 lightDir) { + float d = length(lightDir); + return max(((lightRadius - d) / lightRadius), 0.0); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/fixCubemapSeamsNone.js +var fixCubemapSeamsNonePS = ` +vec3 fixSeams(vec3 vec, float mipmapIndex) { + return vec; +} +vec3 fixSeams(vec3 vec) { + return vec; +} +vec3 fixSeamsStatic(vec3 vec, float invRecMipSize) { + return vec; +} +vec3 calcSeam(vec3 vec) { + return vec3(0); +} +vec3 applySeam(vec3 vec, vec3 seam, float scale) { + return vec; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/fixCubemapSeamsStretch.js +var fixCubemapSeamsStretchPS = ` +vec3 fixSeams(vec3 vec, float mipmapIndex) { + vec3 avec = abs(vec); + float scale = 1.0 - exp2(mipmapIndex) / 128.0; + float M = max(max(avec.x, avec.y), avec.z); + if (avec.x != M) vec.x *= scale; + if (avec.y != M) vec.y *= scale; + if (avec.z != M) vec.z *= scale; + return vec; +} +vec3 fixSeams(vec3 vec) { + vec3 avec = abs(vec); + float scale = 1.0 - 1.0 / 128.0; + float M = max(max(avec.x, avec.y), avec.z); + if (avec.x != M) vec.x *= scale; + if (avec.y != M) vec.y *= scale; + if (avec.z != M) vec.z *= scale; + return vec; +} +vec3 fixSeamsStatic(vec3 vec, float invRecMipSize) { + vec3 avec = abs(vec); + float scale = invRecMipSize; + float M = max(max(avec.x, avec.y), avec.z); + if (avec.x != M) vec.x *= scale; + if (avec.y != M) vec.y *= scale; + if (avec.z != M) vec.z *= scale; + return vec; +} +vec3 calcSeam(vec3 vec) { + vec3 avec = abs(vec); + float M = max(avec.x, max(avec.y, avec.z)); + return vec3(avec.x != M ? 1.0 : 0.0, + avec.y != M ? 1.0 : 0.0, + avec.z != M ? 1.0 : 0.0); +} +vec3 applySeam(vec3 vec, vec3 seam, float scale) { + return vec * (seam * -scale + vec3(1.0)); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/float-unpacking.js +var floatUnpackingPS = ` +float bytes2float2(vec2 data) { + return dot(data, vec2(1.0, 1.0 / 255.0)); +} +float bytes2float3(vec3 data) { + return dot(data, vec3(1.0, 1.0 / 255.0, 1.0 / 65025.0)); +} +float bytes2float4(vec4 data) { + return dot(data, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0)); +} +float bytes2floatRange2(vec2 data, float min, float max) { + return mix(min, max, bytes2float2(data)); +} +float bytes2floatRange3(vec3 data, float min, float max) { + return mix(min, max, bytes2float3(data)); +} +float bytes2floatRange4(vec4 data, float min, float max) { + return mix(min, max, bytes2float4(data)); +} +float mantissaExponent2Float(vec4 pack) +{ + float value = bytes2floatRange3(pack.xyz, -1.0, 1.0); + float exponent = floor(pack.w * 255.0 - 127.0); + return value * exp2(exponent); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fogExp.js +var fogExpPS = ` +uniform vec3 fog_color; +uniform float fog_density; +float dBlendModeFogFactor = 1.0; +vec3 addFog(vec3 color) { + float depth = gl_FragCoord.z / gl_FragCoord.w; + float fogFactor = exp(-depth * fog_density); + fogFactor = clamp(fogFactor, 0.0, 1.0); + return mix(fog_color * dBlendModeFogFactor, color, fogFactor); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fogExp2.js +var fogExp2PS = ` +uniform vec3 fog_color; +uniform float fog_density; +float dBlendModeFogFactor = 1.0; +vec3 addFog(vec3 color) { + float depth = gl_FragCoord.z / gl_FragCoord.w; + float fogFactor = exp(-depth * depth * fog_density * fog_density); + fogFactor = clamp(fogFactor, 0.0, 1.0); + return mix(fog_color * dBlendModeFogFactor, color, fogFactor); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fogLinear.js +var fogLinearPS = ` +uniform vec3 fog_color; +uniform float fog_start; +uniform float fog_end; +float dBlendModeFogFactor = 1.0; +vec3 addFog(vec3 color) { + float depth = gl_FragCoord.z / gl_FragCoord.w; + float fogFactor = (fog_end - depth) / (fog_end - fog_start); + fogFactor = clamp(fogFactor, 0.0, 1.0); + return mix(fog_color * dBlendModeFogFactor, color, fogFactor); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fogNone.js +var fogNonePS = ` +float dBlendModeFogFactor = 1.0; +vec3 addFog(vec3 color) { + return color; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fresnelSchlick.js +var fresnelSchlickPS = ` +vec3 getFresnel( + float cosTheta, + float gloss, + vec3 specularity +#if defined(LIT_IRIDESCENCE) + , vec3 iridescenceFresnel, + float iridescenceIntensity +#endif + ) { + float fresnel = pow(1.0 - max(cosTheta, 0.0), 5.0); + float glossSq = gloss * gloss; + vec3 ret = specularity + (max(vec3(glossSq), specularity) - specularity) * fresnel; +#if defined(LIT_IRIDESCENCE) + return mix(ret, iridescenceFresnel, iridescenceIntensity); +#else + return ret; +#endif +} +float getFresnelCC(float cosTheta) { + float fresnel = pow(1.0 - max(cosTheta, 0.0), 5.0); + return 0.04 + (1.0 - 0.04) * fresnel; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/fullscreenQuad.js +var fullscreenQuadPS = ` +varying vec2 vUv0; +uniform sampler2D source; +void main(void) { + gl_FragColor = texture2D(source, vUv0); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/fullscreenQuad.js +var fullscreenQuadVS = ` +attribute vec2 vertex_position; +varying vec2 vUv0; +void main(void) +{ + gl_Position = vec4(vertex_position, 0.5, 1.0); + vUv0 = vertex_position.xy*0.5+0.5; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/gamma1_0.js +var gamma1_0PS = ` +float gammaCorrectInput(float color) { + return color; +} +vec3 gammaCorrectInput(vec3 color) { + return color; +} +vec4 gammaCorrectInput(vec4 color) { + return color; +} +vec3 gammaCorrectOutput(vec3 color) { + return color; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/gamma2_2.js +var gamma2_2PS = ` +float gammaCorrectInput(float color) { + return decodeGamma(color); +} +vec3 gammaCorrectInput(vec3 color) { + return decodeGamma(color); +} +vec4 gammaCorrectInput(vec4 color) { + return vec4(decodeGamma(color.xyz), color.w); +} +vec3 gammaCorrectOutput(vec3 color) { +#ifdef HDR + return color; +#else + return pow(color + 0.0000001, vec3(1.0 / 2.2)); +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/gloss.js +var glossPS = ` +#ifdef MAPFLOAT +uniform float material_gloss; +#endif +void getGlossiness() { + dGlossiness = 1.0; + #ifdef MAPFLOAT + dGlossiness *= material_gloss; + #endif + #ifdef MAPTEXTURE + dGlossiness *= texture2DBias($SAMPLER, $UV, textureBias).$CH; + #endif + #ifdef MAPVERTEX + dGlossiness *= saturate(vVertexColor.$VC); + #endif + #ifdef MAPINVERT + dGlossiness = 1.0 - dGlossiness; + #endif + dGlossiness += 0.0000001; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/iridescenceDiffraction.js +var iridescenceDiffractionPS = ` +uniform float material_iridescenceRefractionIndex; +#ifndef PI +#define PI 3.14159265 +#endif +float iridescence_iorToFresnel(float transmittedIor, float incidentIor) { + return pow((transmittedIor - incidentIor) / (transmittedIor + incidentIor), 2.0); +} +vec3 iridescence_iorToFresnel(vec3 transmittedIor, float incidentIor) { + return pow((transmittedIor - vec3(incidentIor)) / (transmittedIor + vec3(incidentIor)), vec3(2.0)); +} +vec3 iridescence_fresnelToIor(vec3 f0) { + vec3 sqrtF0 = sqrt(f0); + return (vec3(1.0) + sqrtF0) / (vec3(1.0) - sqrtF0); +} +vec3 iridescence_sensitivity(float opd, vec3 shift) { + float phase = 2.0 * PI * opd * 1.0e-9; + const vec3 val = vec3(5.4856e-13, 4.4201e-13, 5.2481e-13); + const vec3 pos = vec3(1.6810e+06, 1.7953e+06, 2.2084e+06); + const vec3 var = vec3(4.3278e+09, 9.3046e+09, 6.6121e+09); + vec3 xyz = val * sqrt(2.0 * PI * var) * cos(pos * phase + shift) * exp(-pow(phase, 2.0) * var); + xyz.x += 9.7470e-14 * sqrt(2.0 * PI * 4.5282e+09) * cos(2.2399e+06 * phase + shift[0]) * exp(-4.5282e+09 * pow(phase, 2.0)); + xyz /= vec3(1.0685e-07); + const mat3 XYZ_TO_REC709 = mat3( + 3.2404542, -0.9692660, 0.0556434, + -1.5371385, 1.8760108, -0.2040259, + -0.4985314, 0.0415560, 1.0572252 + ); + return XYZ_TO_REC709 * xyz; +} +float iridescence_fresnel(float cosTheta, float f0) { + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x2 = x * x; + float x5 = x * x2 * x2; + return f0 + (1.0 - f0) * x5; +} +vec3 iridescence_fresnel(float cosTheta, vec3 f0) { + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x2 = x * x; + float x5 = x * x2 * x2; + return f0 + (vec3(1.0) - f0) * x5; +} +vec3 calcIridescence(float outsideIor, float cosTheta, vec3 base_f0, float iridescenceThickness) { + float iridescenceIor = mix(outsideIor, material_iridescenceRefractionIndex, smoothstep(0.0, 0.03, iridescenceThickness)); + float sinTheta2Sq = pow(outsideIor / iridescenceIor, 2.0) * (1.0 - pow(cosTheta, 2.0)); + float cosTheta2Sq = 1.0 - sinTheta2Sq; + if (cosTheta2Sq < 0.0) { + return vec3(1.0); + } + float cosTheta2 = sqrt(cosTheta2Sq); + float r0 = iridescence_iorToFresnel(iridescenceIor, outsideIor); + float r12 = iridescence_fresnel(cosTheta, r0); + float r21 = r12; + float t121 = 1.0 - r12; + float phi12 = iridescenceIor < outsideIor ? PI : 0.0; + float phi21 = PI - phi12; + vec3 baseIor = iridescence_fresnelToIor(base_f0 + vec3(0.0001)); + vec3 r1 = iridescence_iorToFresnel(baseIor, iridescenceIor); + vec3 r23 = iridescence_fresnel(cosTheta2, r1); + vec3 phi23 = vec3(0.0); + if (baseIor[0] < iridescenceIor) phi23[0] = PI; + if (baseIor[1] < iridescenceIor) phi23[1] = PI; + if (baseIor[2] < iridescenceIor) phi23[2] = PI; + float opd = 2.0 * iridescenceIor * iridescenceThickness * cosTheta2; + vec3 phi = vec3(phi21) + phi23; + vec3 r123Sq = clamp(r12 * r23, 1e-5, 0.9999); + vec3 r123 = sqrt(r123Sq); + vec3 rs = pow(t121, 2.0) * r23 / (1.0 - r123Sq); + vec3 c0 = r12 + rs; + vec3 i = c0; + vec3 cm = rs - t121; + for (int m = 1; m <= 2; m++) { + cm *= r123; + vec3 sm = 2.0 * iridescence_sensitivity(float(m) * opd, float(m) * phi); + i += cm * sm; + } + return max(i, vec3(0.0)); +} +vec3 getIridescence(float cosTheta, vec3 specularity, float iridescenceThickness) { + return calcIridescence(1.0, cosTheta, specularity, iridescenceThickness); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/iridescence.js +var iridescencePS = ` +#ifdef MAPFLOAT +uniform float material_iridescence; +#endif +void getIridescence() { + float iridescence = 1.0; + #ifdef MAPFLOAT + iridescence *= material_iridescence; + #endif + #ifdef MAPTEXTURE + iridescence *= texture2DBias($SAMPLER, $UV, textureBias).$CH; + #endif + dIridescence = iridescence; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/iridescenceThickness.js +var iridescenceThicknessPS = ` +uniform float material_iridescenceThicknessMax; +#ifdef MAPTEXTURE +uniform float material_iridescenceThicknessMin; +#endif +void getIridescenceThickness() { + #ifdef MAPTEXTURE + float blend = texture2DBias($SAMPLER, $UV, textureBias).$CH; + float iridescenceThickness = mix(material_iridescenceThicknessMin, material_iridescenceThicknessMax, blend); + #else + float iridescenceThickness = material_iridescenceThicknessMax; + #endif + dIridescenceThickness = iridescenceThickness; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/instancing.js +var instancingVS = ` +attribute vec4 instance_line1; +attribute vec4 instance_line2; +attribute vec4 instance_line3; +attribute vec4 instance_line4; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/ior.js +var iorPS = ` +#ifdef MAPFLOAT +uniform float material_refractionIndex; +#endif +void getIor() { +#ifdef MAPFLOAT + dIor = material_refractionIndex; +#else + dIor = 1.0 / 1.5; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightDiffuseLambert.js +var lightDiffuseLambertPS = ` +float getLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) { + return max(dot(worldNormal, -lightDirNorm), 0.0); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightDirPoint.js +var lightDirPointPS = ` +void getLightDirPoint(vec3 lightPosW) { + dLightDirW = vPositionW - lightPosW; + dLightDirNormW = normalize(dLightDirW); + dLightPosW = lightPosW; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightmapAdd.js +var lightmapAddPS = ` +void addLightMap( + vec3 lightmap, + vec3 dir, + vec3 worldNormal, + vec3 viewDir, + vec3 reflectionDir, + float gloss, + vec3 specularity, + vec3 vertexNormal, + mat3 tbn +#if defined(LIT_IRIDESCENCE) + vec3 iridescenceFresnel, + float iridescenceIntensity +#endif +) { + dDiffuseLight += lightmap; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightmapDirAdd.js +var lightmapDirAddPS = ` +void addLightMap( + vec3 lightmap, + vec3 dir, + vec3 worldNormal, + vec3 viewDir, + vec3 reflectionDir, + float gloss, + vec3 specularity, + vec3 vertexNormal, + mat3 tbn +#if defined(LIT_IRIDESCENCE) + vec3 iridescenceFresnel, + float iridescenceIntensity +#endif +) { + if (dot(dir, dir) < 0.0001) { + dDiffuseLight += lightmap; + } else { + float vlight = saturate(dot(dir, -vertexNormal)); + float flight = saturate(dot(dir, -worldNormal)); + float nlight = (flight / max(vlight, 0.01)) * 0.5; + dDiffuseLight += lightmap * nlight * 2.0; + vec3 halfDir = normalize(-dir + viewDir); + vec3 specularLight = lightmap * getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dir, gloss, tbn); +#ifdef LIT_SPECULAR_FRESNEL + specularLight *= + getFresnel(dot(viewDir, halfDir), + gloss, + specularity + #if defined(LIT_IRIDESCENCE) + , iridescenceFresnel, + iridescenceIntensity + #endif + ); +#endif + dSpecularLight += specularLight; + } +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/lightmapDir.js +var lightmapDirPS = ` +uniform sampler2D texture_lightMap; +uniform sampler2D texture_dirLightMap; +void getLightMap() { + dLightmap = $DECODE(texture2DBias(texture_lightMap, $UV, textureBias)).$CH; + vec3 dir = texture2DBias(texture_dirLightMap, $UV, textureBias).xyz * 2.0 - 1.0; + float dirDot = dot(dir, dir); + dLightmapDir = (dirDot > 0.001) ? dir / sqrt(dirDot) : vec3(0.0); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/lightmapSingle.js +var lightmapSinglePS = ` +void getLightMap() { + dLightmap = vec3(1.0); + #ifdef MAPTEXTURE + dLightmap *= $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH; + #endif + #ifdef MAPVERTEX + dLightmap *= saturate(vVertexColor.$VC); + #endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightSpecularAnisoGGX.js +var lightSpecularAnisoGGXPS = ` +float calcLightSpecular(float gloss, vec3 worldNormal, vec3 viewDir, vec3 h, vec3 lightDirNorm, mat3 tbn) { + float PI = 3.141592653589793; + float roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001); + float anisotropy = material_anisotropy * roughness; + + float at = max((roughness + anisotropy), roughness / 4.0); + float ab = max((roughness - anisotropy), roughness / 4.0); + float NoH = dot(worldNormal, h); + float ToH = dot(tbn[0], h); + float BoH = dot(tbn[1], h); + float a2 = at * ab; + vec3 v = vec3(ab * ToH, at * BoH, a2 * NoH); + float v2 = dot(v, v); + float w2 = a2 / v2; + float D = a2 * w2 * w2 * (1.0 / PI); + float ToV = dot(tbn[0], viewDir); + float BoV = dot(tbn[1], viewDir); + float ToL = dot(tbn[0], -lightDirNorm); + float BoL = dot(tbn[1], -lightDirNorm); + float NoV = dot(worldNormal, viewDir); + float NoL = dot(worldNormal, -lightDirNorm); + float lambdaV = NoL * length(vec3(at * ToV, ab * BoV, NoV)); + float lambdaL = NoV * length(vec3(at * ToL, ab * BoL, NoL)); + float G = 0.5 / (lambdaV + lambdaL); + return D * G; +} +float getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) { + return calcLightSpecular(gloss, worldNormal, viewDir, h, lightDirNorm, tbn); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightSpecularBlinn.js +var lightSpecularBlinnPS = ` +float calcLightSpecular(float gloss, vec3 worldNormal, vec3 h) { + float nh = max( dot( h, worldNormal ), 0.0 ); + float specPow = exp2(gloss * 11.0); + specPow = max(specPow, 0.0001); + return pow(nh, specPow) * (specPow + 2.0) / 8.0; +} +float getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) { + return calcLightSpecular(gloss, worldNormal, h); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightSpecularPhong.js +var lightSpecularPhongPS = ` +float calcLightSpecular(float gloss, vec3 reflDir, vec3 lightDirNorm) { + float specPow = gloss; + return pow(max(dot(reflDir, -lightDirNorm), 0.0), specPow + 0.0001); +} +float getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) { + return calcLightSpecular(gloss, reflDir, lightDirNorm); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightSheen.js +var lightSheenPS = ` +float sheenD(vec3 normal, vec3 h, float roughness) { + float invR = 1.0 / (roughness * roughness); + float cos2h = max(dot(normal, h), 0.0); + cos2h *= cos2h; + float sin2h = max(1.0 - cos2h, 0.0078125); + return (2.0 + invR) * pow(sin2h, invR * 0.5) / (2.0 * PI); +} +float sheenV(vec3 normal, vec3 viewDir, vec3 light) { + float NoV = max(dot(normal, viewDir), 0.000001); + float NoL = max(dot(normal, light), 0.000001); + return 1.0 / (4.0 * (NoL + NoV - NoL * NoV)); +} +float getLightSpecularSheen(vec3 h, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float sheenGloss) { + float D = sheenD(worldNormal, h, sheenGloss); + float V = sheenV(worldNormal, viewDir, -lightDirNorm); + return D * V; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/linearizeDepth.js +var linearizeDepthPS = ` +#ifndef LINEARIZE_DEPTH +#define LINEARIZE_DEPTH +float linearizeDepth(float z, vec4 cameraParams) { + if (cameraParams.w == 0.0) + return (cameraParams.z * cameraParams.y) / (cameraParams.y + z * (cameraParams.z - cameraParams.y)); + else + return cameraParams.z + z * (cameraParams.y - cameraParams.z); +} +#ifndef CAMERAPLANES +#define CAMERAPLANES +uniform vec4 camera_params; +#endif +#ifdef GL2 +float linearizeDepth(float z) { + return linearizeDepth(z, camera_params); +} +#else +#ifndef UNPACKFLOAT +#define UNPACKFLOAT +float unpackFloat(vec4 rgbaDepth) { + const vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0); + return dot(rgbaDepth, bitShift); +} +#endif +#endif +#endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/litShaderArgs.js +var litShaderArgsPS = ` +vec3 litArgs_albedo; +float litArgs_opacity; +vec3 litArgs_emission; +vec3 litArgs_worldNormal; +float litArgs_ao; +vec3 litArgs_lightmap; +vec3 litArgs_lightmapDir; +float litArgs_metalness; +vec3 litArgs_specularity; +float litArgs_specularityFactor; +float litArgs_gloss; +float litArgs_sheen_gloss; +vec3 litArgs_sheen_specularity; +float litArgs_transmission; +float litArgs_thickness; +float litArgs_ior; +float litArgs_dispersion; +float litArgs_iridescence_intensity; +float litArgs_iridescence_thickness; +vec3 litArgs_clearcoat_worldNormal; +float litArgs_clearcoat_specularity; +float litArgs_clearcoat_gloss; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/ltc.js +var ltcPS = ` +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +struct Coords { + vec3 coord0; + vec3 coord1; + vec3 coord2; + vec3 coord3; +}; +float LTC_EvaluateRect( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in Coords rectCoords) { + vec3 v1 = rectCoords.coord1 - rectCoords.coord0; + vec3 v2 = rectCoords.coord3 - rectCoords.coord0; + + vec3 lightNormal = cross( v1, v2 ); + float factor = sign(-dot( lightNormal, P - rectCoords.coord0 )); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = factor * cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords.coord0 - P ); + coords[ 1 ] = mat * ( rectCoords.coord1 - P ); + coords[ 2 ] = mat * ( rectCoords.coord2 - P ); + coords[ 3 ] = mat * ( rectCoords.coord3 - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return result; +} +Coords dLTCCoords; +Coords getLTCLightCoords(vec3 lightPos, vec3 halfWidth, vec3 halfHeight){ + Coords coords; + coords.coord0 = lightPos + halfWidth - halfHeight; + coords.coord1 = lightPos - halfWidth - halfHeight; + coords.coord2 = lightPos - halfWidth + halfHeight; + coords.coord3 = lightPos + halfWidth + halfHeight; + return coords; +} +float dSphereRadius; +Coords getSphereLightCoords(vec3 lightPos, vec3 halfWidth, vec3 halfHeight){ + dSphereRadius = max(length(halfWidth), length(halfHeight)); + vec3 f = reflect(normalize(lightPos - view_position), vNormalW); + vec3 w = normalize(cross(f, halfHeight)); + vec3 h = normalize(cross(f, w)); + return getLTCLightCoords(lightPos, w * dSphereRadius, h * dSphereRadius); +} +vec2 dLTCUV; +#ifdef LIT_CLEARCOAT +vec2 ccLTCUV; +#endif +vec2 getLTCLightUV(float gloss, vec3 worldNormal, vec3 viewDir) +{ + float roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001); + return LTC_Uv( worldNormal, viewDir, roughness ); +} +vec3 dLTCSpecFres; +#ifdef LIT_CLEARCOAT +vec3 ccLTCSpecFres; +#endif +vec3 getLTCLightSpecFres(vec2 uv, vec3 specularity) +{ + vec4 t2 = texture2DLodEXT(areaLightsLutTex2, uv, 0.0); + #ifdef AREA_R8_G8_B8_A8_LUTS + t2 *= vec4(0.693103,1,1,1); + t2 += vec4(0.306897,0,0,0); + #endif + return specularity * t2.x + ( vec3( 1.0 ) - specularity) * t2.y; +} +void calcLTCLightValues(float gloss, vec3 worldNormal, vec3 viewDir, vec3 specularity, float clearcoatGloss, vec3 clearcoatWorldNormal, float clearcoatSpecularity) +{ + dLTCUV = getLTCLightUV(gloss, worldNormal, viewDir); + dLTCSpecFres = getLTCLightSpecFres(dLTCUV, specularity); +#ifdef LIT_CLEARCOAT + ccLTCUV = getLTCLightUV(clearcoatGloss, clearcoatWorldNormal, viewDir); + ccLTCSpecFres = getLTCLightSpecFres(ccLTCUV, vec3(clearcoatSpecularity)); +#endif +} +void calcRectLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) +{ + dLTCCoords = getLTCLightCoords(lightPos, halfWidth, halfHeight); +} +void calcDiskLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) +{ + calcRectLightValues(lightPos, halfWidth, halfHeight); +} +void calcSphereLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) +{ + dLTCCoords = getSphereLightCoords(lightPos, halfWidth, halfHeight); +} +vec3 SolveCubic(vec4 Coefficient) +{ + float pi = 3.14159; + Coefficient.xyz /= Coefficient.w; + Coefficient.yz /= 3.0; + float A = Coefficient.w; + float B = Coefficient.z; + float C = Coefficient.y; + float D = Coefficient.x; + vec3 Delta = vec3( + -Coefficient.z * Coefficient.z + Coefficient.y, + -Coefficient.y * Coefficient.z + Coefficient.x, + dot(vec2(Coefficient.z, -Coefficient.y), Coefficient.xy) + ); + float Discriminant = dot(vec2(4.0 * Delta.x, -Delta.y), Delta.zy); + vec3 RootsA, RootsD; + vec2 xlc, xsc; + { + float A_a = 1.0; + float C_a = Delta.x; + float D_a = -2.0 * B * Delta.x + Delta.y; + float Theta = atan(sqrt(Discriminant), -D_a) / 3.0; + float x_1a = 2.0 * sqrt(-C_a) * cos(Theta); + float x_3a = 2.0 * sqrt(-C_a) * cos(Theta + (2.0 / 3.0) * pi); + float xl; + if ((x_1a + x_3a) > 2.0 * B) + xl = x_1a; + else + xl = x_3a; + xlc = vec2(xl - B, A); + } + { + float A_d = D; + float C_d = Delta.z; + float D_d = -D * Delta.y + 2.0 * C * Delta.z; + float Theta = atan(D * sqrt(Discriminant), -D_d) / 3.0; + float x_1d = 2.0 * sqrt(-C_d) * cos(Theta); + float x_3d = 2.0 * sqrt(-C_d) * cos(Theta + (2.0 / 3.0) * pi); + float xs; + if (x_1d + x_3d < 2.0 * C) + xs = x_1d; + else + xs = x_3d; + xsc = vec2(-D, xs + C); + } + float E = xlc.y * xsc.y; + float F = -xlc.x * xsc.y - xlc.y * xsc.x; + float G = xlc.x * xsc.x; + vec2 xmc = vec2(C * F - B * G, -B * F + C * E); + vec3 Root = vec3(xsc.x / xsc.y, xmc.x / xmc.y, xlc.x / xlc.y); + if (Root.x < Root.y && Root.x < Root.z) + Root.xyz = Root.yxz; + else if (Root.z < Root.x && Root.z < Root.y) + Root.xyz = Root.xzy; + return Root; +} +float LTC_EvaluateDisk(vec3 N, vec3 V, vec3 P, mat3 Minv, Coords points) +{ + vec3 T1, T2; + T1 = normalize(V - N * dot(V, N)); + T2 = cross(N, T1); + mat3 R = transposeMat3( mat3( T1, T2, N ) ); + vec3 L_[ 3 ]; + L_[ 0 ] = R * ( points.coord0 - P ); + L_[ 1 ] = R * ( points.coord1 - P ); + L_[ 2 ] = R * ( points.coord2 - P ); + vec3 Lo_i = vec3(0); + vec3 C = 0.5 * (L_[0] + L_[2]); + vec3 V1 = 0.5 * (L_[1] - L_[2]); + vec3 V2 = 0.5 * (L_[1] - L_[0]); + C = Minv * C; + V1 = Minv * V1; + V2 = Minv * V2; + float a, b; + float d11 = dot(V1, V1); + float d22 = dot(V2, V2); + float d12 = dot(V1, V2); + if (abs(d12) / sqrt(d11 * d22) > 0.0001) + { + float tr = d11 + d22; + float det = -d12 * d12 + d11 * d22; + det = sqrt(det); + float u = 0.5 * sqrt(tr - 2.0 * det); + float v = 0.5 * sqrt(tr + 2.0 * det); + float e_max = (u + v) * (u + v); + float e_min = (u - v) * (u - v); + vec3 V1_, V2_; + if (d11 > d22) + { + V1_ = d12 * V1 + (e_max - d11) * V2; + V2_ = d12 * V1 + (e_min - d11) * V2; + } + else + { + V1_ = d12*V2 + (e_max - d22)*V1; + V2_ = d12*V2 + (e_min - d22)*V1; + } + a = 1.0 / e_max; + b = 1.0 / e_min; + V1 = normalize(V1_); + V2 = normalize(V2_); + } + else + { + a = 1.0 / dot(V1, V1); + b = 1.0 / dot(V2, V2); + V1 *= sqrt(a); + V2 *= sqrt(b); + } + vec3 V3 = cross(V1, V2); + if (dot(C, V3) < 0.0) + V3 *= -1.0; + float L = dot(V3, C); + float x0 = dot(V1, C) / L; + float y0 = dot(V2, C) / L; + float E1 = inversesqrt(a); + float E2 = inversesqrt(b); + a *= L * L; + b *= L * L; + float c0 = a * b; + float c1 = a * b * (1.0 + x0 * x0 + y0 * y0) - a - b; + float c2 = 1.0 - a * (1.0 + x0 * x0) - b * (1.0 + y0 * y0); + float c3 = 1.0; + vec3 roots = SolveCubic(vec4(c0, c1, c2, c3)); + float e1 = roots.x; + float e2 = roots.y; + float e3 = roots.z; + vec3 avgDir = vec3(a * x0 / (a - e2), b * y0 / (b - e2), 1.0); + mat3 rotate = mat3(V1, V2, V3); + avgDir = rotate * avgDir; + avgDir = normalize(avgDir); + float L1 = sqrt(-e2 / e3); + float L2 = sqrt(-e2 / e1); + float formFactor = L1 * L2 * inversesqrt((1.0 + L1 * L1) * (1.0 + L2 * L2)); + + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + vec2 uv = vec2(avgDir.z * 0.5 + 0.5, formFactor); + uv = uv*LUT_SCALE + LUT_BIAS; + float scale = texture2DLodEXT(areaLightsLutTex2, uv, 0.0).w; + return formFactor*scale; +} +float getRectLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) { + return LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mat3( 1.0 ), dLTCCoords ); +} +float getDiskLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) { + return LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mat3( 1.0 ), dLTCCoords ); +} +float getSphereLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) { + float falloff = dSphereRadius / (dot(lightDir, lightDir) + dSphereRadius); + return getLightDiffuse(worldNormal, viewDir, lightDir, lightDirNorm) * falloff; +} +mat3 getLTCLightInvMat(vec2 uv) +{ + vec4 t1 = texture2DLodEXT(areaLightsLutTex1, uv, 0.0); + #ifdef AREA_R8_G8_B8_A8_LUTS + t1 *= vec4(1.001, 0.3239, 0.60437568, 1.0); + t1 += vec4(0.0, -0.2976, -0.01381, 0.0); + #endif + return mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); +} +float calcRectLightSpecular(vec3 worldNormal, vec3 viewDir, vec2 uv) { + mat3 mInv = getLTCLightInvMat(uv); + return LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mInv, dLTCCoords ); +} +float getRectLightSpecular(vec3 worldNormal, vec3 viewDir) { + return calcRectLightSpecular(worldNormal, viewDir, dLTCUV); +} +float calcDiskLightSpecular(vec3 worldNormal, vec3 viewDir, vec2 uv) { + mat3 mInv = getLTCLightInvMat(uv); + return LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mInv, dLTCCoords ); +} +float getDiskLightSpecular(vec3 worldNormal, vec3 viewDir) { + return calcDiskLightSpecular(worldNormal, viewDir, dLTCUV); +} +float getSphereLightSpecular(vec3 worldNormal, vec3 viewDir) { + return calcDiskLightSpecular(worldNormal, viewDir, dLTCUV); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/metalness.js +var metalnessPS = ` +#ifdef MAPFLOAT +uniform float material_metalness; +#endif +void getMetalness() { + float metalness = 1.0; + #ifdef MAPFLOAT + metalness *= material_metalness; + #endif + #ifdef MAPTEXTURE + metalness *= texture2DBias($SAMPLER, $UV, textureBias).$CH; + #endif + #ifdef MAPVERTEX + metalness *= saturate(vVertexColor.$VC); + #endif + dMetalness = metalness; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/msdf.js +var msdfPS = ` +uniform sampler2D texture_msdfMap; +#ifdef GL_OES_standard_derivatives +#define USE_FWIDTH +#endif +#ifdef GL2 +#define USE_FWIDTH +#endif +float median(float r, float g, float b) { + return max(min(r, g), min(max(r, g), b)); +} +float map (float min, float max, float v) { + return (v - min) / (max - min); +} +uniform float font_sdfIntensity; +uniform float font_pxrange; +uniform float font_textureWidth; +#ifdef UNIFORM_TEXT_PARAMETERS +uniform vec4 outline_color; +uniform float outline_thickness; +uniform vec4 shadow_color; +uniform vec2 shadow_offset; +#else +varying vec4 outline_color; +varying float outline_thickness; +varying vec4 shadow_color; +varying vec2 shadow_offset; +#endif +vec4 applyMsdf(vec4 color) { + vec3 tsample = texture2D(texture_msdfMap, vUv0).rgb; + vec2 uvShdw = vUv0 - shadow_offset; + vec3 ssample = texture2D(texture_msdfMap, uvShdw).rgb; + float sigDist = median(tsample.r, tsample.g, tsample.b); + float sigDistShdw = median(ssample.r, ssample.g, ssample.b); + float smoothingMax = 0.2; + #ifdef USE_FWIDTH + vec2 w = fwidth(vUv0); + float smoothing = clamp(w.x * font_textureWidth / font_pxrange, 0.0, smoothingMax); + #else + float font_size = 16.0; + float smoothing = clamp(font_pxrange / font_size, 0.0, smoothingMax); + #endif + float mapMin = 0.05; + float mapMax = clamp(1.0 - font_sdfIntensity, mapMin, 1.0); + float sigDistInner = map(mapMin, mapMax, sigDist); + float sigDistOutline = map(mapMin, mapMax, sigDist + outline_thickness); + sigDistShdw = map(mapMin, mapMax, sigDistShdw + outline_thickness); + float center = 0.5; + float inside = smoothstep(center-smoothing, center+smoothing, sigDistInner); + float outline = smoothstep(center-smoothing, center+smoothing, sigDistOutline); + float shadow = smoothstep(center-smoothing, center+smoothing, sigDistShdw); + vec4 tcolor = (outline > inside) ? outline * vec4(outline_color.a * outline_color.rgb, outline_color.a) : vec4(0.0); + tcolor = mix(tcolor, color, inside); + vec4 scolor = (shadow > outline) ? shadow * vec4(shadow_color.a * shadow_color.rgb, shadow_color.a) : tcolor; + tcolor = mix(scolor, tcolor, outline); + + return tcolor; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/metalnessModulate.js +var metalnessModulatePS = ` +vec3 getSpecularModulate(in vec3 specularity, in vec3 albedo, in float metalness, in float f0) { + vec3 dielectricF0 = f0 * specularity; + return mix(dielectricF0, albedo, metalness); +} +vec3 getAlbedoModulate(in vec3 albedo, in float metalness) { + return albedo * (1.0 - metalness); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/msdf.js +var msdfVS = ` +attribute vec3 vertex_outlineParameters; +attribute vec3 vertex_shadowParameters; +varying vec4 outline_color; +varying float outline_thickness; +varying vec4 shadow_color; +varying vec2 shadow_offset; +void unpackMsdfParams() { + vec3 little = mod(vertex_outlineParameters, 256.); + vec3 big = (vertex_outlineParameters - little) / 256.; + outline_color.rb = little.xy / 255.; + outline_color.ga = big.xy / 255.; + outline_thickness = little.z / 255. * 0.2; + little = mod(vertex_shadowParameters, 256.); + big = (vertex_shadowParameters - little) / 256.; + shadow_color.rb = little.xy / 255.; + shadow_color.ga = big.xy / 255.; + shadow_offset = (vec2(little.z, big.z) / 127. - 1.) * 0.005; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/normal.js +var normalVS = ` +#ifdef MORPHING_TEXTURE_BASED_NORMAL +uniform highp sampler2D morphNormalTex; +#endif +vec3 getNormal() { + #ifdef SKIN + dNormalMatrix = mat3(dModelMatrix[0].xyz, dModelMatrix[1].xyz, dModelMatrix[2].xyz); + #elif defined(INSTANCING) + dNormalMatrix = mat3(instance_line1.xyz, instance_line2.xyz, instance_line3.xyz); + #else + dNormalMatrix = matrix_normal; + #endif + vec3 tempNormal = vertex_normal; + #ifdef MORPHING + #ifdef MORPHING_NRM03 + tempNormal += morph_weights_a[0] * morph_nrm0; + tempNormal += morph_weights_a[1] * morph_nrm1; + tempNormal += morph_weights_a[2] * morph_nrm2; + tempNormal += morph_weights_a[3] * morph_nrm3; + #endif + #ifdef MORPHING_NRM47 + tempNormal += morph_weights_b[0] * morph_nrm4; + tempNormal += morph_weights_b[1] * morph_nrm5; + tempNormal += morph_weights_b[2] * morph_nrm6; + tempNormal += morph_weights_b[3] * morph_nrm7; + #endif + #endif + #ifdef MORPHING_TEXTURE_BASED_NORMAL + #ifdef WEBGPU + ivec2 morphUV = getTextureMorphCoords(); + vec3 morphNormal = texelFetch(morphNormalTex, ivec2(morphUV), 0).xyz; + #else + vec2 morphUV = getTextureMorphCoords(); + vec3 morphNormal = texture2D(morphNormalTex, morphUV).xyz; + #endif + tempNormal += morphNormal; + #endif + return normalize(dNormalMatrix * tempNormal); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/normalDetailMap.js +var normalDetailMapPS = ` +#ifdef MAPTEXTURE +uniform float material_normalDetailMapBumpiness; +vec3 blendNormals(vec3 n1, vec3 n2) { + n1 += vec3(0, 0, 1); + n2 *= vec3(-1, -1, 1); + return n1 * dot(n1, n2) / n1.z - n2; +} +#endif +vec3 addNormalDetail(vec3 normalMap) { +#ifdef MAPTEXTURE + vec3 normalDetailMap = unpackNormal(texture2DBias($SAMPLER, $UV, textureBias)); + normalDetailMap = mix(vec3(0.0, 0.0, 1.0), normalDetailMap, material_normalDetailMapBumpiness); + return blendNormals(normalMap, normalDetailMap); +#else + return normalMap; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/normalInstanced.js +var normalInstancedVS = ` +vec3 getNormal() { + dNormalMatrix = mat3(instance_line1.xyz, instance_line2.xyz, instance_line3.xyz); + return normalize(dNormalMatrix * vertex_normal); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/normalMap.js +var normalMapPS = ` +#ifdef MAPTEXTURE +uniform float material_bumpiness; +#endif +void getNormal() { +#ifdef MAPTEXTURE + vec3 normalMap = unpackNormal(texture2DBias($SAMPLER, $UV, textureBias)); + normalMap = mix(vec3(0.0, 0.0, 1.0), normalMap, material_bumpiness); + dNormalW = normalize(dTBN * addNormalDetail(normalMap)); +#else + dNormalW = dVertexNormalW; +#endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/normalSkinned.js +var normalSkinnedVS = ` +vec3 getNormal() { + dNormalMatrix = mat3(dModelMatrix[0].xyz, dModelMatrix[1].xyz, dModelMatrix[2].xyz); + return normalize(dNormalMatrix * vertex_normal); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/normalXY.js +var normalXYPS = ` +vec3 unpackNormal(vec4 nmap) { + vec3 normal; + normal.xy = nmap.wy * 2.0 - 1.0; + normal.z = sqrt(1.0 - saturate(dot(normal.xy, normal.xy))); + return normal; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/normalXYZ.js +var normalXYZPS = ` +vec3 unpackNormal(vec4 nmap) { + return nmap.xyz * 2.0 - 1.0; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/opacity.js +var opacityPS = ` +#ifdef MAPFLOAT +uniform float material_opacity; +#endif +void getOpacity() { + dAlpha = 1.0; + #ifdef MAPFLOAT + dAlpha *= material_opacity; + #endif + #ifdef MAPTEXTURE + dAlpha *= texture2DBias($SAMPLER, $UV, textureBias).$CH; + #endif + #ifdef MAPVERTEX + dAlpha *= clamp(vVertexColor.$VC, 0.0, 1.0); + #endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/opacity-dither.js +var opacityDitherPS = ` +uniform vec4 blueNoiseJitter; +#ifdef DITHER_BLUENOISE + uniform sampler2D blueNoiseTex32; +#endif +void opacityDither(float alpha, float id) { + #ifdef DITHER_BAYER8 + float noise = bayer8(floor(mod(gl_FragCoord.xy + blueNoiseJitter.xy + id, 8.0))) / 64.0; + #else + #ifdef DITHER_BLUENOISE + vec2 uv = fract(gl_FragCoord.xy / 32.0 + blueNoiseJitter.xy + id); + float noise = texture2DLodEXT(blueNoiseTex32, uv, 0.0).y; + #endif + #ifdef DITHER_IGNNOISE + vec3 magic = vec3(0.06711056, 0.00583715, 52.9829189); + float noise = fract(magic.z * fract(dot(gl_FragCoord.xy + blueNoiseJitter.xy + id, magic.xy))); + #endif + #endif + if (alpha < noise) + discard; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/output.js +var outputPS = ` +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/outputAlpha.js +var outputAlphaPS = ` +gl_FragColor.a = litArgs_opacity; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/outputAlphaOpaque.js +var outputAlphaOpaquePS = ` + gl_FragColor.a = 1.0; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/outputAlphaPremul.js +var outputAlphaPremulPS = ` +gl_FragColor.rgb *= litArgs_opacity; +gl_FragColor.a = litArgs_opacity; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/outputTex2D.js +var outputTex2DPS = ` +varying vec2 vUv0; +uniform sampler2D source; +void main(void) { + gl_FragColor = texture2D(source, vUv0); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/packDepth.js +var packDepthPS = ` +vec4 packFloat(float depth) { + const vec4 bit_shift = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0); + const vec4 bit_mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0); + vec4 res = mod(depth * bit_shift * vec4(255), vec4(256) ) / vec4(255); + res -= res.xxyz * bit_mask; + return res; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/sheen.js +var sheenPS = ` +#ifdef MAPCOLOR +uniform vec3 material_sheen; +#endif +void getSheen() { + vec3 sheenColor = vec3(1, 1, 1); + #ifdef MAPCOLOR + sheenColor *= material_sheen; + #endif + #ifdef MAPTEXTURE + sheenColor *= $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH; + #endif + #ifdef MAPVERTEX + sheenColor *= saturate(vVertexColor.$VC); + #endif + sSpecularity = sheenColor; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/sheenGloss.js +var sheenGlossPS = ` +#ifdef MAPFLOAT +uniform float material_sheenGloss; +#endif +void getSheenGlossiness() { + float sheenGlossiness = 1.0; + #ifdef MAPFLOAT + sheenGlossiness *= material_sheenGloss; + #endif + #ifdef MAPTEXTURE + sheenGlossiness *= texture2DBias($SAMPLER, $UV, textureBias).$CH; + #endif + #ifdef MAPVERTEX + sheenGlossiness *= saturate(vVertexColor.$VC); + #endif + #ifdef MAPINVERT + sheenGlossiness = 1.0 - sheenGlossiness; + #endif + sheenGlossiness += 0.0000001; + sGlossiness = sheenGlossiness; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/parallax.js +var parallaxPS = ` +uniform float material_heightMapFactor; +void getParallax() { + float parallaxScale = material_heightMapFactor; + float height = texture2DBias($SAMPLER, $UV, textureBias).$CH; + height = height * parallaxScale - parallaxScale*0.5; + vec3 viewDirT = dViewDirW * dTBN; + viewDirT.z += 0.42; + dUvOffset = height * (viewDirT.xy / viewDirT.z); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle.js +var particlePS = ` +varying vec4 texCoordsAlphaLife; +uniform sampler2D colorMap; +uniform sampler2D colorParam; +uniform float graphSampleSize; +uniform float graphNumSamples; +#ifndef CAMERAPLANES +#define CAMERAPLANES +uniform vec4 camera_params; +#endif +uniform float softening; +uniform float colorMult; +float saturate(float x) { + return clamp(x, 0.0, 1.0); +} +#ifndef UNPACKFLOAT +#define UNPACKFLOAT +float unpackFloat(vec4 rgbaDepth) { + const vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0); + float depth = dot(rgbaDepth, bitShift); + return depth; +} +#endif +void main(void) { + vec4 tex = gammaCorrectInput(texture2D(colorMap, vec2(texCoordsAlphaLife.x, 1.0 - texCoordsAlphaLife.y))); + vec4 ramp = gammaCorrectInput(texture2D(colorParam, vec2(texCoordsAlphaLife.w, 0.0))); + ramp.rgb *= colorMult; + ramp.a += texCoordsAlphaLife.z; + vec3 rgb = tex.rgb * ramp.rgb; + float a = tex.a * ramp.a; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle.js +var particleVS = ` +vec3 unpack3NFloats(float src) { + float r = fract(src); + float g = fract(src * 256.0); + float b = fract(src * 65536.0); + return vec3(r, g, b); +} +float saturate(float x) { + return clamp(x, 0.0, 1.0); +} +vec4 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc) { + return mix( texture2D(tex,tc), texture2D(tex,tc + graphSampleSize), fract(tc.x*graphNumSamples) ); +} +vec4 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc, out vec3 w) { + vec4 a = texture2D(tex,tc); + vec4 b = texture2D(tex,tc + graphSampleSize); + float c = fract(tc.x*graphNumSamples); + vec3 unpackedA = unpack3NFloats(a.w); + vec3 unpackedB = unpack3NFloats(b.w); + w = mix(unpackedA, unpackedB, c); + return mix(a, b, c); +} +vec2 rotate(vec2 quadXY, float pRotation, out mat2 rotMatrix) { + float c = cos(pRotation); + float s = sin(pRotation); + mat2 m = mat2(c, -s, s, c); + rotMatrix = m; + return m * quadXY; +} +vec3 billboard(vec3 InstanceCoords, vec2 quadXY) { + #ifdef SCREEN_SPACE + vec3 pos = vec3(-1, 0, 0) * quadXY.x + vec3(0, -1, 0) * quadXY.y; + #else + vec3 pos = -matrix_viewInverse[0].xyz * quadXY.x + -matrix_viewInverse[1].xyz * quadXY.y; + #endif + return pos; +} +vec3 customFace(vec3 InstanceCoords, vec2 quadXY) { + vec3 pos = faceTangent * quadXY.x + faceBinorm * quadXY.y; + return pos; +} +vec2 safeNormalize(vec2 v) { + float l = length(v); + return (l > 1e-06) ? v / l : v; +} +void main(void) { + vec3 meshLocalPos = particle_vertexData.xyz; + float id = floor(particle_vertexData.w); + float rndFactor = fract(sin(id + 1.0 + seed)); + vec3 rndFactor3 = vec3(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0)); + float uv = id / numParticlesPot; + readInput(uv); +#ifdef LOCAL_SPACE + inVel = mat3(matrix_model) * inVel; +#endif + vec2 velocityV = safeNormalize((mat3(matrix_view) * inVel).xy); + float particleLifetime = lifetime; + if (inLife <= 0.0 || inLife > particleLifetime || !inShow) meshLocalPos = vec3(0.0); + vec2 quadXY = meshLocalPos.xy; + float nlife = clamp(inLife / particleLifetime, 0.0, 1.0); + vec3 paramDiv; + vec4 params = tex1Dlod_lerp(TEXTURE_PASS(internalTex2), vec2(nlife, 0), paramDiv); + float scale = params.y; + float scaleDiv = paramDiv.x; + float alphaDiv = paramDiv.z; + scale += (scaleDiv * 2.0 - 1.0) * scaleDivMult * fract(rndFactor*10000.0); +#ifndef USE_MESH + texCoordsAlphaLife = vec4(quadXY * -0.5 + 0.5, (alphaDiv * 2.0 - 1.0) * alphaDivMult * fract(rndFactor*1000.0), nlife); +#else + texCoordsAlphaLife = vec4(particle_uv, (alphaDiv * 2.0 - 1.0) * alphaDivMult * fract(rndFactor*1000.0), nlife); +#endif + vec3 particlePos = inPos; + vec3 particlePosMoved = vec3(0.0); + mat2 rotMatrix; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particleAnimFrameClamp.js +var particleAnimFrameClampVS = ` + float animFrame = min(floor(texCoordsAlphaLife.w * animTexParams.y) + animTexParams.x, animTexParams.z); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particleAnimFrameLoop.js +var particleAnimFrameLoopVS = ` + float animFrame = floor(mod(texCoordsAlphaLife.w * animTexParams.y + animTexParams.x, animTexParams.z + 1.0)); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particleAnimTex.js +var particleAnimTexVS = ` + float animationIndex; + if (animTexIndexParams.y == 1.0) { + animationIndex = floor((animTexParams.w + 1.0) * rndFactor3.z) * (animTexParams.z + 1.0); + } else { + animationIndex = animTexIndexParams.x * (animTexParams.z + 1.0); + } + float atlasX = (animationIndex + animFrame) * animTexTilesParams.x; + float atlasY = 1.0 - floor(atlasX + 1.0) * animTexTilesParams.y; + atlasX = fract(atlasX); + texCoordsAlphaLife.xy *= animTexTilesParams.xy; + texCoordsAlphaLife.xy += vec2(atlasX, atlasY); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleInputFloat.js +var particleInputFloatPS = ` +void readInput(float uv) { + vec4 tex = texture2D(particleTexIN, vec2(uv, 0.25)); + vec4 tex2 = texture2D(particleTexIN, vec2(uv, 0.75)); + inPos = tex.xyz; + inVel = tex2.xyz; + inAngle = (tex.w < 0.0? -tex.w : tex.w) - 1000.0; + inShow = tex.w >= 0.0; + inLife = tex2.w; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleInputRgba8.js +var particleInputRgba8PS = ` +#define PI2 6.283185307179586 +uniform vec3 inBoundsSize; +uniform vec3 inBoundsCenter; +uniform float maxVel; +float decodeFloatRG(vec2 rg) { + return rg.y*(1.0/255.0) + rg.x; +} +float decodeFloatRGBA( vec4 rgba ) { + return dot( rgba, vec4(1.0, 1.0/255.0, 1.0/65025.0, 1.0/160581375.0) ); +} +void readInput(float uv) { + vec4 tex0 = texture2D(particleTexIN, vec2(uv, 0.125)); + vec4 tex1 = texture2D(particleTexIN, vec2(uv, 0.375)); + vec4 tex2 = texture2D(particleTexIN, vec2(uv, 0.625)); + vec4 tex3 = texture2D(particleTexIN, vec2(uv, 0.875)); + inPos = vec3(decodeFloatRG(tex0.rg), decodeFloatRG(tex0.ba), decodeFloatRG(tex1.rg)); + inPos = (inPos - vec3(0.5)) * inBoundsSize + inBoundsCenter; + inVel = tex2.xyz; + inVel = (inVel - vec3(0.5)) * maxVel; + inAngle = decodeFloatRG(tex1.ba) * PI2; + inShow = tex2.a > 0.5; + inLife = decodeFloatRGBA(tex3); + float maxNegLife = max(lifetime, (numParticles - 1.0) * (rate+rateDiv)); + float maxPosLife = lifetime+1.0; + inLife = inLife * (maxNegLife + maxPosLife) - maxNegLife; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleOutputFloat.js +var particleOutputFloatPS = ` +void writeOutput() { + if (gl_FragCoord.y<1.0) { + gl_FragColor = vec4(outPos, (outAngle + 1000.0) * visMode); + } else { + gl_FragColor = vec4(outVel, outLife); + } +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleOutputRgba8.js +var particleOutputRgba8PS = ` +uniform vec3 outBoundsMul; +uniform vec3 outBoundsAdd; +vec2 encodeFloatRG( float v ) { + vec2 enc = vec2(1.0, 255.0) * v; + enc = fract(enc); + enc -= enc.yy * vec2(1.0/255.0, 1.0/255.0); + return enc; +} +vec4 encodeFloatRGBA( float v ) { + vec4 enc = vec4(1.0, 255.0, 65025.0, 160581375.0) * v; + enc = fract(enc); + enc -= enc.yzww * vec4(1.0/255.0,1.0/255.0,1.0/255.0,0.0); + return enc; +} +void writeOutput() { + outPos = outPos * outBoundsMul + outBoundsAdd; + outAngle = fract(outAngle / PI2); + outVel = (outVel / maxVel) + vec3(0.5); + float maxNegLife = max(lifetime, (numParticles - 1.0) * (rate+rateDiv)); + float maxPosLife = lifetime+1.0; + outLife = (outLife + maxNegLife) / (maxNegLife + maxPosLife); + if (gl_FragCoord.y < 1.0) { + gl_FragColor = vec4(encodeFloatRG(outPos.x), encodeFloatRG(outPos.y)); + } else if (gl_FragCoord.y < 2.0) { + gl_FragColor = vec4(encodeFloatRG(outPos.z), encodeFloatRG(outAngle)); + } else if (gl_FragCoord.y < 3.0) { + gl_FragColor = vec4(outVel, visMode*0.5+0.5); + } else { + gl_FragColor = encodeFloatRGBA(outLife); + } +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterAABB.js +var particleUpdaterAABBPS = ` +uniform mat3 spawnBounds; +uniform vec3 spawnPosInnerRatio; +vec3 calcSpawnPosition(vec3 inBounds, float rndFactor) { + vec3 pos = inBounds - vec3(0.5); + vec3 posAbs = abs(pos); + vec3 maxPos = vec3(max(posAbs.x, max(posAbs.y, posAbs.z))); + vec3 edge = maxPos + (vec3(0.5) - maxPos) * spawnPosInnerRatio; + pos.x = edge.x * (maxPos.x == posAbs.x ? sign(pos.x) : 2.0 * pos.x); + pos.y = edge.y * (maxPos.y == posAbs.y ? sign(pos.y) : 2.0 * pos.y); + pos.z = edge.z * (maxPos.z == posAbs.z ? sign(pos.z) : 2.0 * pos.z); +#ifndef LOCAL_SPACE + return emitterPos + spawnBounds * pos; +#else + return spawnBounds * pos; +#endif +} +void addInitialVelocity(inout vec3 localVelocity, vec3 inBounds) { + localVelocity -= vec3(0, 0, initialVelocity); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterEnd.js +var particleUpdaterEndPS = ` + writeOutput(); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterInit.js +var particleUpdaterInitPS = ` +varying vec2 vUv0; +uniform highp sampler2D particleTexIN; +uniform highp sampler2D internalTex0; +uniform highp sampler2D internalTex1; +uniform highp sampler2D internalTex2; +uniform highp sampler2D internalTex3; +uniform mat3 emitterMatrix; +uniform mat3 emitterMatrixInv; +uniform vec3 emitterScale; +uniform vec3 emitterPos; +uniform vec3 frameRandom; +uniform vec3 localVelocityDivMult; +uniform vec3 velocityDivMult; +uniform float delta; +uniform float rate; +uniform float rateDiv; +uniform float lifetime; +uniform float numParticles; +uniform float rotSpeedDivMult; +uniform float radialSpeedDivMult; +uniform float seed; +uniform float startAngle; +uniform float startAngle2; +uniform float initialVelocity; +uniform float graphSampleSize; +uniform float graphNumSamples; +vec3 inPos; +vec3 inVel; +float inAngle; +bool inShow; +float inLife; +float visMode; +vec3 outPos; +vec3 outVel; +float outAngle; +bool outShow; +float outLife; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterNoRespawn.js +var particleUpdaterNoRespawnPS = ` + if (outLife >= lifetime) { + outLife -= max(lifetime, (numParticles - 1.0) * particleRate); + visMode = -1.0; + } +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterOnStop.js +var particleUpdaterOnStopPS = ` + visMode = outLife < 0.0? -1.0: visMode; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterRespawn.js +var particleUpdaterRespawnPS = ` + if (outLife >= lifetime) { + outLife -= max(lifetime, (numParticles - 1.0) * particleRate); + visMode = 1.0; + } + visMode = outLife < 0.0? 1.0: visMode; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterSphere.js +var particleUpdaterSpherePS = ` +uniform float spawnBoundsSphere; +uniform float spawnBoundsSphereInnerRatio; +vec3 calcSpawnPosition(vec3 inBounds, float rndFactor) { + float rnd4 = fract(rndFactor * 1000.0); + vec3 norm = normalize(inBounds.xyz - vec3(0.5)); + float r = rnd4 * (1.0 - spawnBoundsSphereInnerRatio) + spawnBoundsSphereInnerRatio; +#ifndef LOCAL_SPACE + return emitterPos + norm * r * spawnBoundsSphere; +#else + return norm * r * spawnBoundsSphere; +#endif +} +void addInitialVelocity(inout vec3 localVelocity, vec3 inBounds) { + localVelocity += normalize(inBounds - vec3(0.5)) * initialVelocity; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterStart.js +var particleUpdaterStartPS = ` +float saturate(float x) { + return clamp(x, 0.0, 1.0); +} +vec3 unpack3NFloats(float src) { + float r = fract(src); + float g = fract(src * 256.0); + float b = fract(src * 65536.0); + return vec3(r, g, b); +} +vec3 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc, out vec3 w) { + vec4 a = texture2D(tex, tc); + vec4 b = texture2D(tex, tc + graphSampleSize); + float c = fract(tc.x * graphNumSamples); + vec3 unpackedA = unpack3NFloats(a.w); + vec3 unpackedB = unpack3NFloats(b.w); + w = mix(unpackedA, unpackedB, c); + return mix(a.xyz, b.xyz, c); +} +#define HASHSCALE4 vec4(1031, .1030, .0973, .1099) +vec4 hash41(float p) { + vec4 p4 = fract(vec4(p) * HASHSCALE4); + p4 += dot(p4, p4.wzxy+19.19); + return fract(vec4((p4.x + p4.y)*p4.z, (p4.x + p4.z)*p4.y, (p4.y + p4.z)*p4.w, (p4.z + p4.w)*p4.x)); +} +void main(void) { + if (gl_FragCoord.x > numParticles) discard; + readInput(vUv0.x); + visMode = inShow? 1.0 : -1.0; + vec4 rndFactor = hash41(gl_FragCoord.x + seed); + float particleRate = rate + rateDiv * rndFactor.x; + outLife = inLife + delta; + float nlife = clamp(outLife / lifetime, 0.0, 1.0); + vec3 localVelocityDiv; + vec3 velocityDiv; + vec3 paramDiv; + vec3 localVelocity = tex1Dlod_lerp(TEXTURE_PASS(internalTex0), vec2(nlife, 0), localVelocityDiv); + vec3 velocity = tex1Dlod_lerp(TEXTURE_PASS(internalTex1), vec2(nlife, 0), velocityDiv); + vec3 params = tex1Dlod_lerp(TEXTURE_PASS(internalTex2), vec2(nlife, 0), paramDiv); + float rotSpeed = params.x; + float rotSpeedDiv = paramDiv.y; + vec3 radialParams = tex1Dlod_lerp(TEXTURE_PASS(internalTex3), vec2(nlife, 0), paramDiv); + float radialSpeed = radialParams.x; + float radialSpeedDiv = radialParams.y; + bool respawn = inLife <= 0.0 || outLife >= lifetime; + inPos = respawn ? calcSpawnPosition(rndFactor.xyz, rndFactor.x) : inPos; + inAngle = respawn ? mix(startAngle, startAngle2, rndFactor.x) : inAngle; +#ifndef LOCAL_SPACE + vec3 radialVel = inPos - emitterPos; +#else + vec3 radialVel = inPos; +#endif + radialVel = (dot(radialVel, radialVel) > 1.0E-8) ? radialSpeed * normalize(radialVel) : vec3(0.0); + radialVel += (radialSpeedDiv * vec3(2.0) - vec3(1.0)) * radialSpeedDivMult * rndFactor.xyz; + localVelocity += (localVelocityDiv * vec3(2.0) - vec3(1.0)) * localVelocityDivMult * rndFactor.xyz; + velocity += (velocityDiv * vec3(2.0) - vec3(1.0)) * velocityDivMult * rndFactor.xyz; + rotSpeed += (rotSpeedDiv * 2.0 - 1.0) * rotSpeedDivMult * rndFactor.y; + addInitialVelocity(localVelocity, rndFactor.xyz); +#ifndef LOCAL_SPACE + outVel = emitterMatrix * localVelocity + (radialVel + velocity) * emitterScale; +#else + outVel = (localVelocity + radialVel) / emitterScale + emitterMatrixInv * velocity; +#endif + outPos = inPos + outVel * delta; + outAngle = inAngle + rotSpeed * delta; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_billboard.js +var particle_billboardVS = ` + quadXY = rotate(quadXY, inAngle, rotMatrix); + vec3 localPos = billboard(particlePos, quadXY); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_blendAdd.js +var particle_blendAddPS = ` + dBlendModeFogFactor = 0.0; + rgb *= saturate(gammaCorrectInput(max(a, 0.0))); + if ((rgb.r + rgb.g + rgb.b) < 0.000001) discard; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_blendMultiply.js +var particle_blendMultiplyPS = ` + rgb = mix(vec3(1.0), rgb, vec3(a)); + if (rgb.r + rgb.g + rgb.b > 2.99) discard; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_blendNormal.js +var particle_blendNormalPS = ` + if (a < 0.01) discard; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_cpu.js +var particle_cpuVS = ` +attribute vec4 particle_vertexData; +attribute vec4 particle_vertexData2; +attribute vec4 particle_vertexData3; +attribute float particle_vertexData4; +#ifndef USE_MESH +attribute vec2 particle_vertexData5; +#else +attribute vec4 particle_vertexData5; +#endif +uniform mat4 matrix_viewProjection; +uniform mat4 matrix_model; +#ifndef VIEWMATRIX +#define VIEWMATRIX +uniform mat4 matrix_view; +#endif +uniform mat3 matrix_normal; +uniform mat4 matrix_viewInverse; +uniform float numParticles; +uniform float lifetime; +uniform float stretch; +uniform float seed; +uniform vec3 wrapBounds; +uniform vec3 emitterScale; +uniform vec3 faceTangent; +uniform vec3 faceBinorm; +#ifdef PARTICLE_GPU + uniform highp sampler2D internalTex0; + uniform highp sampler2D internalTex1; + uniform highp sampler2D internalTex2; +#endif +uniform vec3 emitterPos; +varying vec4 texCoordsAlphaLife; +vec2 rotate(vec2 quadXY, float pRotation, out mat2 rotMatrix) +{ + float c = cos(pRotation); + float s = sin(pRotation); + mat2 m = mat2(c, -s, s, c); + rotMatrix = m; + return m * quadXY; +} +vec3 billboard(vec3 InstanceCoords, vec2 quadXY) +{ + vec3 pos = -matrix_viewInverse[0].xyz * quadXY.x + -matrix_viewInverse[1].xyz * quadXY.y; + return pos; +} +vec3 customFace(vec3 InstanceCoords, vec2 quadXY) +{ + vec3 pos = faceTangent * quadXY.x + faceBinorm * quadXY.y; + return pos; +} +void main(void) +{ + vec3 particlePos = particle_vertexData.xyz; + vec3 inPos = particlePos; + vec3 vertPos = particle_vertexData3.xyz; + vec3 inVel = vec3(particle_vertexData2.w, particle_vertexData3.w, particle_vertexData5.x); + float id = floor(particle_vertexData4); + float rndFactor = fract(sin(id + 1.0 + seed)); + vec3 rndFactor3 = vec3(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0)); +#ifdef LOCAL_SPACE + inVel = mat3(matrix_model) * inVel; +#endif + vec2 velocityV = normalize((mat3(matrix_view) * inVel).xy); + vec2 quadXY = vertPos.xy; +#ifdef USE_MESH + texCoordsAlphaLife = vec4(particle_vertexData5.zw, particle_vertexData2.z, particle_vertexData.w); +#else + texCoordsAlphaLife = vec4(quadXY * -0.5 + 0.5, particle_vertexData2.z, particle_vertexData.w); +#endif + mat2 rotMatrix; + float inAngle = particle_vertexData2.x; + vec3 particlePosMoved = vec3(0.0); + vec3 meshLocalPos = particle_vertexData3.xyz; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_cpu_end.js +var particle_cpu_endVS = ` + localPos *= particle_vertexData2.y * emitterScale; + localPos += particlePos; + gl_Position = matrix_viewProjection * vec4(localPos, 1.0); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_customFace.js +var particle_customFaceVS = ` + quadXY = rotate(quadXY, inAngle, rotMatrix); + vec3 localPos = customFace(particlePos, quadXY); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_end.js +var particle_endPS = ` + rgb = addFog(rgb); + rgb = toneMap(rgb); + rgb = gammaCorrectOutput(rgb); + gl_FragColor = vec4(rgb, a); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_end.js +var particle_endVS = ` + localPos *= scale * emitterScale; + localPos += particlePos; + #ifdef SCREEN_SPACE + gl_Position = vec4(localPos.x, localPos.y, 0.0, 1.0); + #else + gl_Position = matrix_viewProjection * vec4(localPos.xyz, 1.0); + #endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_halflambert.js +var particle_halflambertPS = ` + vec3 negNormal = normal*0.5+0.5; + vec3 posNormal = -normal*0.5+0.5; + negNormal *= negNormal; + posNormal *= posNormal; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_init.js +var particle_initVS = ` +attribute vec4 particle_vertexData; +#ifdef USE_MESH +attribute vec2 particle_uv; +#endif +uniform mat4 matrix_viewProjection; +uniform mat4 matrix_model; +uniform mat3 matrix_normal; +uniform mat4 matrix_viewInverse; +#ifndef VIEWMATRIX +#define VIEWMATRIX +uniform mat4 matrix_view; +#endif +uniform float numParticles; +uniform float numParticlesPot; +uniform float graphSampleSize; +uniform float graphNumSamples; +uniform float stretch; +uniform vec3 wrapBounds; +uniform vec3 emitterScale; +uniform vec3 emitterPos; +uniform vec3 faceTangent; +uniform vec3 faceBinorm; +uniform float rate; +uniform float rateDiv; +uniform float lifetime; +uniform float deltaRandomnessStatic; +uniform float scaleDivMult; +uniform float alphaDivMult; +uniform float seed; +uniform float delta; +uniform sampler2D particleTexOUT; +uniform sampler2D particleTexIN; +#ifdef PARTICLE_GPU + uniform highp sampler2D internalTex0; + uniform highp sampler2D internalTex1; + uniform highp sampler2D internalTex2; +#endif +#ifndef CAMERAPLANES +#define CAMERAPLANES +uniform vec4 camera_params; +#endif +varying vec4 texCoordsAlphaLife; +vec3 inPos; +vec3 inVel; +float inAngle; +bool inShow; +float inLife; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_lambert.js +var particle_lambertPS = ` + vec3 negNormal = max(normal, vec3(0.0)); + vec3 posNormal = max(-normal, vec3(0.0)); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_lighting.js +var particle_lightingPS = ` + vec3 light = negNormal.x*lightCube[0] + posNormal.x*lightCube[1] + + negNormal.y*lightCube[2] + posNormal.y*lightCube[3] + + negNormal.z*lightCube[4] + posNormal.z*lightCube[5]; + rgb *= light; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_localShift.js +var particle_localShiftVS = ` + particlePos = (matrix_model * vec4(particlePos, 1.0)).xyz; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_mesh.js +var particle_meshVS = ` + vec3 localPos = meshLocalPos; + localPos.xy = rotate(localPos.xy, inAngle, rotMatrix); + localPos.yz = rotate(localPos.yz, inAngle, rotMatrix); + billboard(particlePos, quadXY); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_normal.js +var particle_normalVS = ` + Normal = normalize(localPos + matrix_viewInverse[2].xyz); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_normalMap.js +var particle_normalMapPS = ` + vec3 normalMap = normalize(texture2D(normalMap, vec2(texCoordsAlphaLife.x, 1.0 - texCoordsAlphaLife.y)).xyz * 2.0 - 1.0); + vec3 normal = ParticleMat * normalMap; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_pointAlong.js +var particle_pointAlongVS = ` + inAngle = atan(velocityV.x, velocityV.y); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_soft.js +var particle_softPS = ` + float depth = getLinearScreenDepth(); + float particleDepth = vDepth; + float depthDiff = saturate(abs(particleDepth - depth) * softening); + a *= depthDiff; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_soft.js +var particle_softVS = ` + vDepth = getLinearDepth(localPos); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_stretch.js +var particle_stretchVS = ` + vec3 moveDir = inVel * stretch; + vec3 posPrev = particlePos - moveDir; + posPrev += particlePosMoved; + vec2 centerToVertexV = normalize((mat3(matrix_view) * localPos).xy); + float interpolation = dot(-velocityV, centerToVertexV) * 0.5 + 0.5; + particlePos = mix(particlePos, posPrev, interpolation); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_TBN.js +var particle_TBNVS = ` + mat3 rot3 = mat3(rotMatrix[0][0], rotMatrix[0][1], 0.0, rotMatrix[1][0], rotMatrix[1][1], 0.0, 0.0, 0.0, 1.0); + ParticleMat = mat3(-matrix_viewInverse[0].xyz, -matrix_viewInverse[1].xyz, matrix_viewInverse[2].xyz) * rot3; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_wrap.js +var particle_wrapVS = ` + vec3 origParticlePos = particlePos; + particlePos -= matrix_model[3].xyz; + particlePos = mod(particlePos, wrapBounds) - wrapBounds * 0.5; + particlePos += matrix_model[3].xyz; + particlePosMoved = particlePos - origParticlePos; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflDir.js +var reflDirPS = ` +void getReflDir(vec3 worldNormal, vec3 viewDir, float gloss, mat3 tbn) { + dReflDirW = normalize(-reflect(viewDir, worldNormal)); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflDirAniso.js +var reflDirAnisoPS = ` +void getReflDir(vec3 worldNormal, vec3 viewDir, float gloss, mat3 tbn) { + float roughness = sqrt(1.0 - min(gloss, 1.0)); + float anisotropy = material_anisotropy * roughness; + vec3 anisotropicDirection = anisotropy >= 0.0 ? tbn[1] : tbn[0]; + vec3 anisotropicTangent = cross(anisotropicDirection, viewDir); + vec3 anisotropicNormal = cross(anisotropicTangent, anisotropicDirection); + vec3 bentNormal = normalize(mix(normalize(worldNormal), normalize(anisotropicNormal), anisotropy)); + dReflDirW = reflect(-viewDir, bentNormal); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionCC.js +var reflectionCCPS = ` +#ifdef LIT_CLEARCOAT +void addReflectionCC(vec3 reflDir, float gloss) { + ccReflection += calcReflection(reflDir, gloss); +} +#endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionCube.js +var reflectionCubePS = ` +uniform samplerCube texture_cubeMap; +uniform float material_reflectivity; +vec3 calcReflection(vec3 reflDir, float gloss) { + vec3 lookupVec = fixSeams(cubeMapProject(reflDir)); + lookupVec.x *= -1.0; + return $DECODE(textureCube(texture_cubeMap, lookupVec)); +} +void addReflection(vec3 reflDir, float gloss) { + dReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionEnvHQ.js +var reflectionEnvHQPS = ` +#ifndef ENV_ATLAS +#define ENV_ATLAS +uniform sampler2D texture_envAtlas; +#endif +uniform samplerCube texture_cubeMap; +uniform float material_reflectivity; +vec3 calcReflection(vec3 reflDir, float gloss) { + vec3 dir = cubeMapProject(reflDir) * vec3(-1.0, 1.0, 1.0); + vec2 uv = toSphericalUv(dir); + float level = saturate(1.0 - gloss) * 5.0; + float ilevel = floor(level); + float flevel = level - ilevel; + vec3 sharp = $DECODE_CUBEMAP(textureCube(texture_cubeMap, fixSeams(dir))); + vec3 roughA = $DECODE(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel))); + vec3 roughB = $DECODE(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel + 1.0))); + return processEnvironment(mix(sharp, mix(roughA, roughB, flevel), min(level, 1.0))); +} +void addReflection(vec3 reflDir, float gloss) { + dReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionEnv.js +var reflectionEnvPS = ` +#ifndef ENV_ATLAS +#define ENV_ATLAS +uniform sampler2D texture_envAtlas; +#endif +uniform float material_reflectivity; +float shinyMipLevel(vec2 uv) { + vec2 dx = dFdx(uv); + vec2 dy = dFdy(uv); + vec2 uv2 = vec2(fract(uv.x + 0.5), uv.y); + vec2 dx2 = dFdx(uv2); + vec2 dy2 = dFdy(uv2); + float maxd = min(max(dot(dx, dx), dot(dy, dy)), max(dot(dx2, dx2), dot(dy2, dy2))); + return clamp(0.5 * log2(maxd) - 1.0 + textureBias, 0.0, 5.0); +} +vec3 calcReflection(vec3 reflDir, float gloss) { + vec3 dir = cubeMapProject(reflDir) * vec3(-1.0, 1.0, 1.0); + vec2 uv = toSphericalUv(dir); + float level = saturate(1.0 - gloss) * 5.0; + float ilevel = floor(level); + float level2 = shinyMipLevel(uv * atlasSize); + float ilevel2 = floor(level2); + vec2 uv0, uv1; + float weight; + if (ilevel == 0.0) { + uv0 = mapShinyUv(uv, ilevel2); + uv1 = mapShinyUv(uv, ilevel2 + 1.0); + weight = level2 - ilevel2; + } else { + uv0 = uv1 = mapRoughnessUv(uv, ilevel); + weight = 0.0; + } + vec3 linearA = $DECODE(texture2D(texture_envAtlas, uv0)); + vec3 linearB = $DECODE(texture2D(texture_envAtlas, uv1)); + vec3 linear0 = mix(linearA, linearB, weight); + vec3 linear1 = $DECODE(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel + 1.0))); + return processEnvironment(mix(linear0, linear1, level - ilevel)); +} +void addReflection(vec3 reflDir, float gloss) { + dReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionSphere.js +var reflectionSpherePS = ` +#ifndef VIEWMATRIX +#define VIEWMATRIX +uniform mat4 matrix_view; +#endif +uniform sampler2D texture_sphereMap; +uniform float material_reflectivity; +vec3 calcReflection(vec3 reflDir, float gloss) { + vec3 reflDirV = (mat3(matrix_view) * reflDir).xyz; + float m = 2.0 * sqrt( dot(reflDirV.xy, reflDirV.xy) + (reflDirV.z+1.0)*(reflDirV.z+1.0) ); + vec2 sphereMapUv = reflDirV.xy / m + 0.5; + return $DECODE(texture2D(texture_sphereMap, sphereMapUv)); +} +void addReflection(vec3 reflDir, float gloss) { + dReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionSheen.js +var reflectionSheenPS = ` +void addReflectionSheen(vec3 worldNormal, vec3 viewDir, float gloss) { + float NoV = dot(worldNormal, viewDir); + float alphaG = gloss * gloss; + float a = gloss < 0.25 ? -339.2 * alphaG + 161.4 * gloss - 25.9 : -8.48 * alphaG + 14.3 * gloss - 9.95; + float b = gloss < 0.25 ? 44.0 * alphaG - 23.7 * gloss + 3.26 : 1.97 * alphaG - 3.27 * gloss + 0.72; + float DG = exp( a * NoV + b ) + ( gloss < 0.25 ? 0.0 : 0.1 * ( gloss - 0.25 ) ); + sReflection += calcReflection(worldNormal, 0.0) * saturate(DG); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/refractionCube.js +var refractionCubePS = ` +vec3 refract2(vec3 viewVec, vec3 normal, float IOR) { + float vn = dot(viewVec, normal); + float k = 1.0 - IOR * IOR * (1.0 - vn * vn); + vec3 refrVec = IOR * viewVec - (IOR * vn + sqrt(k)) * normal; + return refrVec; +} +void addRefraction( + vec3 worldNormal, + vec3 viewDir, + float thickness, + float gloss, + vec3 specularity, + vec3 albedo, + float transmission, + float refractionIndex, + float dispersion +#if defined(LIT_IRIDESCENCE) + , vec3 iridescenceFresnel, + float iridescenceIntensity +#endif +) { + vec4 tmpRefl = dReflection; + vec3 reflectionDir = refract2(-viewDir, worldNormal, refractionIndex); + dReflection = vec4(0); + addReflection(reflectionDir, gloss); + dDiffuseLight = mix(dDiffuseLight, dReflection.rgb * albedo, transmission); + dReflection = tmpRefl; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/refractionDynamic.js +var refractionDynamicPS = ` +uniform float material_invAttenuationDistance; +uniform vec3 material_attenuation; +vec3 evalRefractionColor(vec3 refractionVector, float gloss, float refractionIndex) { + vec4 pointOfRefraction = vec4(vPositionW + refractionVector, 1.0); + vec4 projectionPoint = matrix_viewProjection * pointOfRefraction; + vec2 uv = getGrabScreenPos(projectionPoint); + #ifdef SUPPORTS_TEXLOD + float iorToRoughness = (1.0 - gloss) * clamp((1.0 / refractionIndex) * 2.0 - 2.0, 0.0, 1.0); + float refractionLod = log2(uScreenSize.x) * iorToRoughness; + vec3 refraction = texture2DLodEXT(uSceneColorMap, uv, refractionLod).rgb; + #else + vec3 refraction = texture2D(uSceneColorMap, uv).rgb; + #endif + return refraction; +} +void addRefraction( + vec3 worldNormal, + vec3 viewDir, + float thickness, + float gloss, + vec3 specularity, + vec3 albedo, + float transmission, + float refractionIndex, + float dispersion +#if defined(LIT_IRIDESCENCE) + , vec3 iridescenceFresnel, + float iridescenceIntensity +#endif +) { + vec3 modelScale; + modelScale.x = length(vec3(matrix_model[0].xyz)); + modelScale.y = length(vec3(matrix_model[1].xyz)); + modelScale.z = length(vec3(matrix_model[2].xyz)); + vec3 scale = thickness * modelScale; + vec3 refractionVector = normalize(refract(-viewDir, worldNormal, refractionIndex)) * scale; + vec3 refraction = evalRefractionColor(refractionVector, gloss, refractionIndex); + #ifdef DISPERSION + float halfSpread = (1.0 / refractionIndex - 1.0) * 0.025 * dispersion; + float refractionIndexR = refractionIndex - halfSpread; + refractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexR)) * scale; + refraction.r = evalRefractionColor(refractionVector, gloss, refractionIndexR).r; + float refractionIndexB = refractionIndex + halfSpread; + refractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexB)) * scale; + refraction.b = evalRefractionColor(refractionVector, gloss, refractionIndexB).b; + #endif + vec3 transmittance; + if (material_invAttenuationDistance != 0.0) + { + vec3 attenuation = -log(material_attenuation) * material_invAttenuationDistance; + transmittance = exp(-attenuation * length(refractionVector)); + } + else + { + transmittance = refraction; + } + vec3 fresnel = vec3(1.0) - + getFresnel( + dot(viewDir, worldNormal), + gloss, + specularity + #if defined(LIT_IRIDESCENCE) + , iridescenceFresnel, + iridescenceIntensity + #endif + ); + dDiffuseLight = mix(dDiffuseLight, refraction * transmittance * fresnel, transmission); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/reproject.js +var reprojectPS = ` +varying vec2 vUv0; +#ifdef CUBEMAP_SOURCE + uniform samplerCube sourceCube; +#else + uniform sampler2D sourceTex; +#endif +#ifdef USE_SAMPLES_TEX + uniform sampler2D samplesTex; + uniform vec2 samplesTexInverseSize; +#endif +uniform vec3 params; +float targetFace() { return params.x; } +float sourceCubeSeamScale() { return params.y; } +float targetCubeSeamScale() { return params.z; } +float PI = 3.141592653589793; +float saturate(float x) { + return clamp(x, 0.0, 1.0); +} +${decodePS} +${encodePS} +vec3 modifySeams(vec3 dir, float scale) { + vec3 adir = abs(dir); + float M = max(max(adir.x, adir.y), adir.z); + return dir / M * vec3( + adir.x == M ? 1.0 : scale, + adir.y == M ? 1.0 : scale, + adir.z == M ? 1.0 : scale + ); +} +vec2 toSpherical(vec3 dir) { + return vec2(dir.xz == vec2(0.0) ? 0.0 : atan(dir.x, dir.z), asin(dir.y)); +} +vec3 fromSpherical(vec2 uv) { + return vec3(cos(uv.y) * sin(uv.x), + sin(uv.y), + cos(uv.y) * cos(uv.x)); +} +vec3 getDirectionEquirect() { + return fromSpherical((vec2(vUv0.x, 1.0 - vUv0.y) * 2.0 - 1.0) * vec2(PI, PI * 0.5)); +} +float signNotZero(float k){ + return(k >= 0.0) ? 1.0 : -1.0; +} +vec2 signNotZero(vec2 v) { + return vec2(signNotZero(v.x), signNotZero(v.y)); +} +vec3 octDecode(vec2 o) { + vec3 v = vec3(o.x, 1.0 - abs(o.x) - abs(o.y), o.y); + if (v.y < 0.0) { + v.xz = (1.0 - abs(v.zx)) * signNotZero(v.xz); + } + return normalize(v); +} +vec3 getDirectionOctahedral() { + return octDecode(vec2(vUv0.x, 1.0 - vUv0.y) * 2.0 - 1.0); +} +vec2 octEncode(in vec3 v) { + float l1norm = abs(v.x) + abs(v.y) + abs(v.z); + vec2 result = v.xz * (1.0 / l1norm); + if (v.y < 0.0) { + result = (1.0 - abs(result.yx)) * signNotZero(result.xy); + } + return result; +} +#ifdef CUBEMAP_SOURCE + vec4 sampleCubemap(vec3 dir) { + return textureCube(sourceCube, modifySeams(dir, 1.0 - sourceCubeSeamScale())); + } + vec4 sampleCubemap(vec2 sph) { + return sampleCubemap(fromSpherical(sph)); +} + vec4 sampleCubemap(vec3 dir, float mipLevel) { + return textureCubeLodEXT(sourceCube, modifySeams(dir, 1.0 - exp2(mipLevel) * sourceCubeSeamScale()), mipLevel); + } + vec4 sampleCubemap(vec2 sph, float mipLevel) { + return sampleCubemap(fromSpherical(sph), mipLevel); + } +#else + vec4 sampleEquirect(vec2 sph) { + vec2 uv = sph / vec2(PI * 2.0, PI) + 0.5; + return texture2D(sourceTex, vec2(uv.x, 1.0 - uv.y)); + } + vec4 sampleEquirect(vec3 dir) { + return sampleEquirect(toSpherical(dir)); + } + vec4 sampleEquirect(vec2 sph, float mipLevel) { + vec2 uv = sph / vec2(PI * 2.0, PI) + 0.5; + return texture2DLodEXT(sourceTex, vec2(uv.x, 1.0 - uv.y), mipLevel); + } + vec4 sampleEquirect(vec3 dir, float mipLevel) { + return sampleEquirect(toSpherical(dir), mipLevel); + } + vec4 sampleOctahedral(vec3 dir) { + vec2 uv = octEncode(dir) * 0.5 + 0.5; + return texture2D(sourceTex, vec2(uv.x, 1.0 - uv.y)); + } + vec4 sampleOctahedral(vec2 sph) { + return sampleOctahedral(fromSpherical(sph)); + } + vec4 sampleOctahedral(vec3 dir, float mipLevel) { + vec2 uv = octEncode(dir) * 0.5 + 0.5; + return texture2DLodEXT(sourceTex, vec2(uv.x, 1.0 - uv.y), mipLevel); + } + vec4 sampleOctahedral(vec2 sph, float mipLevel) { + return sampleOctahedral(fromSpherical(sph), mipLevel); + } +#endif +vec3 getDirectionCubemap() { + vec2 st = vUv0 * 2.0 - 1.0; + float face = targetFace(); + vec3 vec; + if (face == 0.0) { + vec = vec3(1, -st.y, -st.x); + } else if (face == 1.0) { + vec = vec3(-1, -st.y, st.x); + } else if (face == 2.0) { + vec = vec3(st.x, 1, st.y); + } else if (face == 3.0) { + vec = vec3(st.x, -1, -st.y); + } else if (face == 4.0) { + vec = vec3(st.x, -st.y, 1); + } else { + vec = vec3(-st.x, -st.y, -1); + } + return normalize(modifySeams(vec, 1.0 / (1.0 - targetCubeSeamScale()))); +} +mat3 matrixFromVector(vec3 n) { + float a = 1.0 / (1.0 + n.z); + float b = -n.x * n.y * a; + vec3 b1 = vec3(1.0 - n.x * n.x * a, b, -n.x); + vec3 b2 = vec3(b, 1.0 - n.y * n.y * a, -n.y); + return mat3(b1, b2, n); +} +mat3 matrixFromVectorSlow(vec3 n) { + vec3 up = (1.0 - abs(n.y) <= 0.0000001) ? vec3(0.0, 0.0, n.y > 0.0 ? 1.0 : -1.0) : vec3(0.0, 1.0, 0.0); + vec3 x = normalize(cross(up, n)); + vec3 y = cross(n, x); + return mat3(x, y, n); +} +vec4 reproject() { + if (NUM_SAMPLES <= 1) { + return ENCODE_FUNC(DECODE_FUNC(SOURCE_FUNC(TARGET_FUNC()))); + } else { + vec3 t = TARGET_FUNC(); + vec3 tu = dFdx(t); + vec3 tv = dFdy(t); + vec3 result = vec3(0.0); + for (float u = 0.0; u < NUM_SAMPLES_SQRT; ++u) { + for (float v = 0.0; v < NUM_SAMPLES_SQRT; ++v) { + result += DECODE_FUNC(SOURCE_FUNC(normalize(t + + tu * (u / NUM_SAMPLES_SQRT - 0.5) + + tv * (v / NUM_SAMPLES_SQRT - 0.5)))); + } + } + return ENCODE_FUNC(result / (NUM_SAMPLES_SQRT * NUM_SAMPLES_SQRT)); + } +} +vec4 unpackFloat = vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0); +#ifdef USE_SAMPLES_TEX + void unpackSample(int i, out vec3 L, out float mipLevel) { + float u = (float(i * 4) + 0.5) * samplesTexInverseSize.x; + float v = (floor(u) + 0.5) * samplesTexInverseSize.y; + vec4 raw; + raw.x = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x; + raw.y = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x; + raw.z = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x; + raw.w = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); + L.xyz = raw.xyz * 2.0 - 1.0; + mipLevel = raw.w * 8.0; + } + vec4 prefilterSamples() { + mat3 vecSpace = matrixFromVectorSlow(TARGET_FUNC()); + vec3 L; + float mipLevel; + vec3 result = vec3(0.0); + float totalWeight = 0.0; + for (int i = 0; i < NUM_SAMPLES; ++i) { + unpackSample(i, L, mipLevel); + result += DECODE_FUNC(SOURCE_FUNC(vecSpace * L, mipLevel)) * L.z; + totalWeight += L.z; + } + return ENCODE_FUNC(result / totalWeight); + } + vec4 prefilterSamplesUnweighted() { + mat3 vecSpace = matrixFromVectorSlow(TARGET_FUNC()); + vec3 L; + float mipLevel; + vec3 result = vec3(0.0); + float totalWeight = 0.0; + for (int i = 0; i < NUM_SAMPLES; ++i) { + unpackSample(i, L, mipLevel); + result += DECODE_FUNC(SOURCE_FUNC(vecSpace * L, mipLevel)); + } + return ENCODE_FUNC(result / float(NUM_SAMPLES)); + } +#endif +void main(void) { + gl_FragColor = PROCESS_FUNC(); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/sampleCatmullRom.js +var sampleCatmullRomPS = ` +vec4 SampleTextureCatmullRom(TEXTURE_ACCEPT(tex), vec2 uv, vec2 texSize) { + vec2 samplePos = uv * texSize; + vec2 texPos1 = floor(samplePos - 0.5) + 0.5; + vec2 f = samplePos - texPos1; + vec2 w0 = f * (-0.5 + f * (1.0 - 0.5 * f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5 * f); + vec2 w2 = f * (0.5 + f * (2.0 - 1.5 * f)); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / (w1 + w2); + vec2 texPos0 = (texPos1 - 1.0) / texSize; + vec2 texPos3 = (texPos1 + 2.0) / texSize; + vec2 texPos12 = (texPos1 + offset12) / texSize; + vec4 result = vec4(0.0); + result += texture2DLodEXT(tex, vec2(texPos0.x, texPos0.y), 0.0) * w0.x * w0.y; + result += texture2DLodEXT(tex, vec2(texPos12.x, texPos0.y), 0.0) * w12.x * w0.y; + result += texture2DLodEXT(tex, vec2(texPos3.x, texPos0.y), 0.0) * w3.x * w0.y; + result += texture2DLodEXT(tex, vec2(texPos0.x, texPos12.y), 0.0) * w0.x * w12.y; + result += texture2DLodEXT(tex, vec2(texPos12.x, texPos12.y), 0.0) * w12.x * w12.y; + result += texture2DLodEXT(tex, vec2(texPos3.x, texPos12.y), 0.0) * w3.x * w12.y; + result += texture2DLodEXT(tex, vec2(texPos0.x, texPos3.y), 0.0) * w0.x * w3.y; + result += texture2DLodEXT(tex, vec2(texPos12.x, texPos3.y), 0.0) * w12.x * w3.y; + result += texture2DLodEXT(tex, vec2(texPos3.x, texPos3.y), 0.0) * w3.x * w3.y; + return result; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/screenDepth.js +var screenDepthPS = ` +uniform highp sampler2D uSceneDepthMap; +#ifndef SCREENSIZE +#define SCREENSIZE +uniform vec4 uScreenSize; +#endif +#ifndef VIEWMATRIX +#define VIEWMATRIX +uniform mat4 matrix_view; +#endif +#ifndef LINEARIZE_DEPTH +#ifndef CAMERAPLANES +#define CAMERAPLANES +uniform vec4 camera_params; +#endif +#define LINEARIZE_DEPTH +#ifdef GL2 +float linearizeDepth(float z) { + if (camera_params.w == 0.0) + return (camera_params.z * camera_params.y) / (camera_params.y + z * (camera_params.z - camera_params.y)); + else + return camera_params.z + z * (camera_params.y - camera_params.z); +} +#else +#ifndef UNPACKFLOAT +#define UNPACKFLOAT +float unpackFloat(vec4 rgbaDepth) { + const vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0); + return dot(rgbaDepth, bitShift); +} +#endif +#endif +#endif +float getLinearScreenDepth(vec2 uv) { + #ifdef GL2 + return linearizeDepth(texture2D(uSceneDepthMap, uv).r); + #else + return unpackFloat(texture2D(uSceneDepthMap, uv)) * camera_params.y; + #endif +} +#ifndef VERTEXSHADER +float getLinearScreenDepth() { + vec2 uv = gl_FragCoord.xy * uScreenSize.zw; + return getLinearScreenDepth(uv); +} +#endif +float getLinearDepth(vec3 pos) { + return -(matrix_view * vec4(pos, 1.0)).z; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowCascades.js +var shadowCascadesPS = ` +const float maxCascades = 4.0; +mat4 cascadeShadowMat; +void getShadowCascadeMatrix(mat4 shadowMatrixPalette[4], float shadowCascadeDistances[4], float shadowCascadeCount) { + float depth = 1.0 / gl_FragCoord.w; + float cascadeIndex = 0.0; + for (float i = 0.0; i < maxCascades; i++) { + if (depth < shadowCascadeDistances[int(i)]) { + cascadeIndex = i; + break; + } + } + cascadeIndex = min(cascadeIndex, shadowCascadeCount - 1.0); + #ifdef GL2 + cascadeShadowMat = shadowMatrixPalette[int(cascadeIndex)]; + #else + if (cascadeIndex == 0.0) { + cascadeShadowMat = shadowMatrixPalette[0]; + } + else if (cascadeIndex == 1.0) { + cascadeShadowMat = shadowMatrixPalette[1]; + } + else if (cascadeIndex == 2.0) { + cascadeShadowMat = shadowMatrixPalette[2]; + } + else { + cascadeShadowMat = shadowMatrixPalette[3]; + } + #endif +} +void fadeShadow(float shadowCascadeDistances[4]) { + float depth = 1.0 / gl_FragCoord.w; + if (depth > shadowCascadeDistances[int(maxCascades - 1.0)]) { + dShadowCoord.z = -9999999.0; + } +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowEVSM.js +var shadowEVSMPS = ` +float VSM$(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) { + vec3 moments = texture2D(tex, texCoords).xyz; + return calculateEVSM(moments, Z, vsmBias, exponent); +} +float getShadowVSM$(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) { + return VSM$(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent); +} +float getShadowSpotVSM$(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) { + return VSM$(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, length(lightDir) * shadowParams.w + shadowParams.z, shadowParams.y, exponent); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowEVSMn.js +var shadowEVSMnPS = ` +float VSM$(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) { + float pixelSize = 1.0 / resolution; + texCoords -= vec2(pixelSize); + vec3 s00 = texture2D(tex, texCoords).xyz; + vec3 s10 = texture2D(tex, texCoords + vec2(pixelSize, 0)).xyz; + vec3 s01 = texture2D(tex, texCoords + vec2(0, pixelSize)).xyz; + vec3 s11 = texture2D(tex, texCoords + vec2(pixelSize)).xyz; + vec2 fr = fract(texCoords * resolution); + vec3 h0 = mix(s00, s10, fr.x); + vec3 h1 = mix(s01, s11, fr.x); + vec3 moments = mix(h0, h1, fr.y); + return calculateEVSM(moments, Z, vsmBias, exponent); +} +float getShadowVSM$(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) { + return VSM$(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent); +} +float getShadowSpotVSM$(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) { + return VSM$(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, length(lightDir) * shadowParams.w + shadowParams.z, shadowParams.y, exponent); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowPCSS.js +var shadowPCSSPS = ` +#define PCSS_SAMPLE_COUNT 16 +uniform float pcssDiskSamples[PCSS_SAMPLE_COUNT]; +uniform float pcssSphereSamples[PCSS_SAMPLE_COUNT]; +vec2 vogelDisk(int sampleIndex, float count, float phi, float r) { + const float GoldenAngle = 2.4; + float theta = float(sampleIndex) * GoldenAngle + phi; + float sine = sin(theta); + float cosine = cos(theta); + return vec2(r * cosine, r * sine); +} +vec3 vogelSphere(int sampleIndex, float count, float phi, float r) { + const float GoldenAngle = 2.4; + float theta = float(sampleIndex) * GoldenAngle + phi; + float weight = float(sampleIndex) / count; + return vec3(cos(theta) * r, weight, sin(theta) * r); +} +float noise(vec2 screenPos) { + const float PHI = 1.61803398874989484820459; + return fract(sin(dot(screenPos * PHI, screenPos)) * screenPos.x); +} +#ifndef UNPACKFLOAT +#define UNPACKFLOAT +float unpackFloat(vec4 rgbaDepth) { + const vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0); + return dot(rgbaDepth, bitShift); +} +#endif +float viewSpaceDepth(float depth, mat4 invProjection) { + float z = depth * 2.0 - 1.0; + vec4 clipSpace = vec4(0.0, 0.0, z, 1.0); + vec4 viewSpace = invProjection * clipSpace; + return viewSpace.z; +} +float PCSSBlockerDistance(TEXTURE_ACCEPT(shadowMap), vec2 sampleCoords[PCSS_SAMPLE_COUNT], vec2 shadowCoords, vec2 searchSize, float z) { + float blockers = 0.0; + float averageBlocker = 0.0; + for (int i = 0; i < PCSS_SAMPLE_COUNT; i++) { + vec2 offset = sampleCoords[i] * searchSize; + vec2 sampleUV = shadowCoords + offset; + #ifdef GL2 + float blocker = textureLod(shadowMap, sampleUV, 0.0).r; + #else + float blocker = unpackFloat(texture2D(shadowMap, sampleUV)); + #endif + float isBlocking = step(blocker, z); + blockers += isBlocking; + averageBlocker += blocker * isBlocking; + } + if (blockers > 0.0) + return averageBlocker /= blockers; + return -1.0; +} +float PCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoords, vec4 cameraParams, vec2 shadowSearchArea) { + float receiverDepth = shadowCoords.z; +#ifndef GL2 + receiverDepth *= 1.0 / (cameraParams.y - cameraParams.z); +#endif + vec2 samplePoints[PCSS_SAMPLE_COUNT]; + float noise = noise( gl_FragCoord.xy ) * 2.0 * PI; + for (int i = 0; i < PCSS_SAMPLE_COUNT; i++) { + float pcssPresample = pcssDiskSamples[i]; + samplePoints[i] = vogelDisk(i, float(PCSS_SAMPLE_COUNT), noise, pcssPresample); + } + float averageBlocker = PCSSBlockerDistance(TEXTURE_PASS(shadowMap), samplePoints, shadowCoords.xy, shadowSearchArea, receiverDepth); + if (averageBlocker == -1.0) { + return 1.0; + } else { + vec2 filterRadius = ((receiverDepth - averageBlocker) / averageBlocker) * shadowSearchArea * cameraParams.x; + float shadow = 0.0; + for (int i = 0; i < PCSS_SAMPLE_COUNT; i ++) + { + vec2 sampleUV = samplePoints[i] * filterRadius; + sampleUV = shadowCoords.xy + sampleUV; + #ifdef GL2 + float depth = textureLod(shadowMap, sampleUV, 0.0).r; + #else + float depth = unpackFloat(texture2D(shadowMap, sampleUV)); + #endif + shadow += step(receiverDepth, depth); + } + return shadow / float(PCSS_SAMPLE_COUNT); + } +} +float PCSSCubeBlockerDistance(samplerCube shadowMap, vec3 lightDirNorm, vec3 samplePoints[PCSS_SAMPLE_COUNT], float z, float shadowSearchArea) { + float blockers = 0.0; + float averageBlocker = 0.0; + for (int i = 0; i < PCSS_SAMPLE_COUNT; i++) { + vec3 sampleDir = lightDirNorm + samplePoints[i] * shadowSearchArea; + sampleDir = normalize(sampleDir); + #ifdef GL2 + float blocker = textureCubeLodEXT(shadowMap, sampleDir, 0.0).r; + #else + float blocker = unpackFloat(textureCube(shadowMap, sampleDir)); + #endif + float isBlocking = step(blocker, z); + blockers += isBlocking; + averageBlocker += blocker * isBlocking; + } + if (blockers > 0.0) + return averageBlocker /= float(blockers); + return -1.0; +} +float PCSSCube(samplerCube shadowMap, vec4 shadowParams, vec3 shadowCoords, vec4 cameraParams, float shadowSearchArea, vec3 lightDir) { + + vec3 samplePoints[PCSS_SAMPLE_COUNT]; + float noise = noise( gl_FragCoord.xy ) * 2.0 * PI; + for (int i = 0; i < PCSS_SAMPLE_COUNT; i++) { + float r = pcssSphereSamples[i]; + samplePoints[i] = vogelSphere(i, float(PCSS_SAMPLE_COUNT), noise, r); + } + float receiverDepth = length(lightDir) * shadowParams.w + shadowParams.z; + vec3 lightDirNorm = normalize(lightDir); + + float averageBlocker = PCSSCubeBlockerDistance(shadowMap, lightDirNorm, samplePoints, receiverDepth, shadowSearchArea); + if (averageBlocker == -1.0) { + return 1.0; + } else { + float filterRadius = ((receiverDepth - averageBlocker) / averageBlocker) * shadowSearchArea; + float shadow = 0.0; + for (int i = 0; i < PCSS_SAMPLE_COUNT; i++) + { + vec3 offset = samplePoints[i] * filterRadius; + vec3 sampleDir = lightDirNorm + offset; + sampleDir = normalize(sampleDir); + #ifdef GL2 + float depth = textureCubeLodEXT(shadowMap, sampleDir, 0.0).r; + #else + float depth = unpackFloat(textureCube(shadowMap, sampleDir)); + #endif + shadow += step(receiverDepth, depth); + } + return shadow / float(PCSS_SAMPLE_COUNT); + } +} +float getShadowPointPCSS(samplerCube shadowMap, vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) { + return PCSSCube(shadowMap, shadowParams, shadowCoord, cameraParams, shadowSearchArea.x, lightDir); +} +float getShadowSpotPCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) { + return PCSS(TEXTURE_PASS(shadowMap), shadowCoord, cameraParams, shadowSearchArea); +} +float getShadowPCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) { + return PCSS(TEXTURE_PASS(shadowMap), shadowCoord, cameraParams, shadowSearchArea); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowSampleCoord.js +var shadowSampleCoordPS = ` +vec3 getShadowSampleCoord$LIGHT(mat4 shadowTransform, vec4 shadowParams, vec3 worldPosition, vec3 lightPos, inout vec3 lightDir, vec3 lightDirNorm, vec3 normal) { + vec3 surfacePosition = worldPosition; +#ifdef SHADOW_SAMPLE_POINT + #ifdef SHADOW_SAMPLE_NORMAL_OFFSET + float distScale = length(lightDir); + surfacePosition = worldPosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale; + lightDir = surfacePosition - lightPos; + return lightDir; + #endif +#else + #ifdef SHADOW_SAMPLE_SOURCE_ZBUFFER + #ifdef SHADOW_SAMPLE_NORMAL_OFFSET + surfacePosition = worldPosition + normal * shadowParams.y; + #endif + #else + #ifdef SHADOW_SAMPLE_NORMAL_OFFSET + #ifdef SHADOW_SAMPLE_ORTHO + float distScale = 1.0; + #else + float distScale = abs(dot(vPositionW - lightPos, lightDirNorm)); + #endif + surfacePosition = worldPosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale; + #endif + #endif + vec4 positionInShadowSpace = shadowTransform * vec4(surfacePosition, 1.0); + #ifdef SHADOW_SAMPLE_ORTHO + positionInShadowSpace.z = saturate(positionInShadowSpace.z) - 0.0001; + #else + #ifdef SHADOW_SAMPLE_SOURCE_ZBUFFER + positionInShadowSpace.xyz /= positionInShadowSpace.w; + #else + positionInShadowSpace.xy /= positionInShadowSpace.w; + positionInShadowSpace.z = length(lightDir) * shadowParams.w; + #endif + #endif + #ifdef SHADOW_SAMPLE_Z_BIAS + positionInShadowSpace.z += getShadowBias(shadowParams.x, shadowParams.z); + #endif + surfacePosition = positionInShadowSpace.xyz; +#endif + return surfacePosition; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowStandard.js +var shadowStandardPS = ` +vec3 lessThan2(vec3 a, vec3 b) { + return clamp((b - a)*1000.0, 0.0, 1.0); +} +#ifndef UNPACKFLOAT +#define UNPACKFLOAT + float unpackFloat(vec4 rgbaDepth) { + const vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0); + return dot(rgbaDepth, bitShift); + } +#endif +#ifdef GL2 +float _getShadowPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec3 shadowParams) { + float z = shadowCoord.z; + vec2 uv = shadowCoord.xy * shadowParams.x; + float shadowMapSizeInv = 1.0 / shadowParams.x; + vec2 base_uv = floor(uv + 0.5); + float s = (uv.x + 0.5 - base_uv.x); + float t = (uv.y + 0.5 - base_uv.y); + base_uv -= vec2(0.5); + base_uv *= shadowMapSizeInv; + float sum = 0.0; + float uw0 = (3.0 - 2.0 * s); + float uw1 = (1.0 + 2.0 * s); + float u0 = (2.0 - s) / uw0 - 1.0; + float u1 = s / uw1 + 1.0; + float vw0 = (3.0 - 2.0 * t); + float vw1 = (1.0 + 2.0 * t); + float v0 = (2.0 - t) / vw0 - 1.0; + float v1 = t / vw1 + 1.0; + u0 = u0 * shadowMapSizeInv + base_uv.x; + v0 = v0 * shadowMapSizeInv + base_uv.y; + u1 = u1 * shadowMapSizeInv + base_uv.x; + v1 = v1 * shadowMapSizeInv + base_uv.y; + sum += uw0 * vw0 * textureShadow(shadowMap, vec3(u0, v0, z)); + sum += uw1 * vw0 * textureShadow(shadowMap, vec3(u1, v0, z)); + sum += uw0 * vw1 * textureShadow(shadowMap, vec3(u0, v1, z)); + sum += uw1 * vw1 * textureShadow(shadowMap, vec3(u1, v1, z)); + sum *= 1.0f / 16.0; + return sum; +} +float getShadowPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return _getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz); +} +float getShadowSpotPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return _getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz); +} +float getShadowPCF1x1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return textureShadow(shadowMap, shadowCoord); +} +float getShadowSpotPCF1x1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return textureShadow(shadowMap, shadowCoord); +} +#else +float _xgetShadowPCF3x3(mat3 depthKernel, vec3 shadowCoord, sampler2D shadowMap, vec3 shadowParams) { + mat3 shadowKernel; + vec3 shadowZ = vec3(shadowCoord.z); + shadowKernel[0] = vec3(greaterThan(depthKernel[0], shadowZ)); + shadowKernel[1] = vec3(greaterThan(depthKernel[1], shadowZ)); + shadowKernel[2] = vec3(greaterThan(depthKernel[2], shadowZ)); + vec2 fractionalCoord = fract( shadowCoord.xy * shadowParams.x ); + shadowKernel[0] = mix(shadowKernel[0], shadowKernel[1], fractionalCoord.x); + shadowKernel[1] = mix(shadowKernel[1], shadowKernel[2], fractionalCoord.x); + vec4 shadowValues; + shadowValues.x = mix(shadowKernel[0][0], shadowKernel[0][1], fractionalCoord.y); + shadowValues.y = mix(shadowKernel[0][1], shadowKernel[0][2], fractionalCoord.y); + shadowValues.z = mix(shadowKernel[1][0], shadowKernel[1][1], fractionalCoord.y); + shadowValues.w = mix(shadowKernel[1][1], shadowKernel[1][2], fractionalCoord.y); + return dot( shadowValues, vec4( 1.0 ) ) * 0.25; +} +float _getShadowPCF3x3(sampler2D shadowMap, vec3 shadowCoord, vec3 shadowParams) { + float xoffset = 1.0 / shadowParams.x; + float dx0 = -xoffset; + float dx1 = xoffset; + mat3 depthKernel; + depthKernel[0][0] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx0, dx0))); + depthKernel[0][1] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx0, 0.0))); + depthKernel[0][2] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx0, dx1))); + depthKernel[1][0] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(0.0, dx0))); + depthKernel[1][1] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy)); + depthKernel[1][2] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(0.0, dx1))); + depthKernel[2][0] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx1, dx0))); + depthKernel[2][1] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx1, 0.0))); + depthKernel[2][2] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx1, dx1))); + return _xgetShadowPCF3x3(depthKernel, shadowCoord, shadowMap, shadowParams); +} +float getShadowPCF3x3(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) { + return _getShadowPCF3x3(shadowMap, shadowCoord, shadowParams.xyz); +} +float getShadowSpotPCF3x3(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) { + return _getShadowPCF3x3(shadowMap, shadowCoord, shadowParams.xyz); +} +float _getShadowPCF1x1(sampler2D shadowMap, vec3 shadowCoord) { + float shadowSample = unpackFloat(textureShadow(shadowMap, shadowCoord.xy)); + return shadowSample > shadowCoord.z ? 1.0 : 0.0; +} +float getShadowPCF1x1(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) { + return _getShadowPCF1x1(shadowMap, shadowCoord); +} +float getShadowSpotPCF1x1(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) { + return _getShadowPCF1x1(shadowMap, shadowCoord); +} +#endif +#ifndef WEBGPU +float _getShadowPoint(samplerCube shadowMap, vec4 shadowParams, vec3 dir) { + vec3 tc = normalize(dir); + vec3 tcAbs = abs(tc); + vec4 dirX = vec4(1,0,0, tc.x); + vec4 dirY = vec4(0,1,0, tc.y); + float majorAxisLength = tc.z; + if ((tcAbs.x > tcAbs.y) && (tcAbs.x > tcAbs.z)) { + dirX = vec4(0,0,1, tc.z); + dirY = vec4(0,1,0, tc.y); + majorAxisLength = tc.x; + } else if ((tcAbs.y > tcAbs.x) && (tcAbs.y > tcAbs.z)) { + dirX = vec4(1,0,0, tc.x); + dirY = vec4(0,0,1, tc.z); + majorAxisLength = tc.y; + } + float shadowParamsInFaceSpace = ((1.0/shadowParams.x) * 2.0) * abs(majorAxisLength); + vec3 xoffset = (dirX.xyz * shadowParamsInFaceSpace); + vec3 yoffset = (dirY.xyz * shadowParamsInFaceSpace); + vec3 dx0 = -xoffset; + vec3 dy0 = -yoffset; + vec3 dx1 = xoffset; + vec3 dy1 = yoffset; + mat3 shadowKernel; + mat3 depthKernel; + depthKernel[0][0] = unpackFloat(textureCube(shadowMap, tc + dx0 + dy0)); + depthKernel[0][1] = unpackFloat(textureCube(shadowMap, tc + dx0)); + depthKernel[0][2] = unpackFloat(textureCube(shadowMap, tc + dx0 + dy1)); + depthKernel[1][0] = unpackFloat(textureCube(shadowMap, tc + dy0)); + depthKernel[1][1] = unpackFloat(textureCube(shadowMap, tc)); + depthKernel[1][2] = unpackFloat(textureCube(shadowMap, tc + dy1)); + depthKernel[2][0] = unpackFloat(textureCube(shadowMap, tc + dx1 + dy0)); + depthKernel[2][1] = unpackFloat(textureCube(shadowMap, tc + dx1)); + depthKernel[2][2] = unpackFloat(textureCube(shadowMap, tc + dx1 + dy1)); + vec3 shadowZ = vec3(length(dir) * shadowParams.w + shadowParams.z); + shadowKernel[0] = vec3(lessThan2(depthKernel[0], shadowZ)); + shadowKernel[1] = vec3(lessThan2(depthKernel[1], shadowZ)); + shadowKernel[2] = vec3(lessThan2(depthKernel[2], shadowZ)); + vec2 uv = (vec2(dirX.w, dirY.w) / abs(majorAxisLength)) * 0.5; + vec2 fractionalCoord = fract( uv * shadowParams.x ); + shadowKernel[0] = mix(shadowKernel[0], shadowKernel[1], fractionalCoord.x); + shadowKernel[1] = mix(shadowKernel[1], shadowKernel[2], fractionalCoord.x); + vec4 shadowValues; + shadowValues.x = mix(shadowKernel[0][0], shadowKernel[0][1], fractionalCoord.y); + shadowValues.y = mix(shadowKernel[0][1], shadowKernel[0][2], fractionalCoord.y); + shadowValues.z = mix(shadowKernel[1][0], shadowKernel[1][1], fractionalCoord.y); + shadowValues.w = mix(shadowKernel[1][1], shadowKernel[1][2], fractionalCoord.y); + return 1.0 - dot( shadowValues, vec4( 1.0 ) ) * 0.25; +} +float getShadowPointPCF3x3(samplerCube shadowMap, vec3 shadowCoord, vec4 shadowParams, vec3 lightDir) { + return _getShadowPoint(shadowMap, shadowParams, lightDir); +} +#endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowStandardGL2.js +var shadowStandardGL2PS = ` +float _getShadowPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec3 shadowParams) { + float z = shadowCoord.z; + vec2 uv = shadowCoord.xy * shadowParams.x; + float shadowMapSizeInv = 1.0 / shadowParams.x; + vec2 base_uv = floor(uv + 0.5); + float s = (uv.x + 0.5 - base_uv.x); + float t = (uv.y + 0.5 - base_uv.y); + base_uv -= vec2(0.5); + base_uv *= shadowMapSizeInv; + float uw0 = (4.0 - 3.0 * s); + float uw1 = 7.0; + float uw2 = (1.0 + 3.0 * s); + float u0 = (3.0 - 2.0 * s) / uw0 - 2.0; + float u1 = (3.0 + s) / uw1; + float u2 = s / uw2 + 2.0; + float vw0 = (4.0 - 3.0 * t); + float vw1 = 7.0; + float vw2 = (1.0 + 3.0 * t); + float v0 = (3.0 - 2.0 * t) / vw0 - 2.0; + float v1 = (3.0 + t) / vw1; + float v2 = t / vw2 + 2.0; + float sum = 0.0; + u0 = u0 * shadowMapSizeInv + base_uv.x; + v0 = v0 * shadowMapSizeInv + base_uv.y; + u1 = u1 * shadowMapSizeInv + base_uv.x; + v1 = v1 * shadowMapSizeInv + base_uv.y; + u2 = u2 * shadowMapSizeInv + base_uv.x; + v2 = v2 * shadowMapSizeInv + base_uv.y; + sum += uw0 * vw0 * textureShadow(shadowMap, vec3(u0, v0, z)); + sum += uw1 * vw0 * textureShadow(shadowMap, vec3(u1, v0, z)); + sum += uw2 * vw0 * textureShadow(shadowMap, vec3(u2, v0, z)); + sum += uw0 * vw1 * textureShadow(shadowMap, vec3(u0, v1, z)); + sum += uw1 * vw1 * textureShadow(shadowMap, vec3(u1, v1, z)); + sum += uw2 * vw1 * textureShadow(shadowMap, vec3(u2, v1, z)); + sum += uw0 * vw2 * textureShadow(shadowMap, vec3(u0, v2, z)); + sum += uw1 * vw2 * textureShadow(shadowMap, vec3(u1, v2, z)); + sum += uw2 * vw2 * textureShadow(shadowMap, vec3(u2, v2, z)); + sum *= 1.0f / 144.0; + sum = saturate(sum); + return sum; +} +float getShadowPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return _getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz); +} +float getShadowSpotPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) { + return _getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowVSM8.js +var shadowVSM8PS = ` +float calculateVSM8(vec3 moments, float Z, float vsmBias) { + float VSMBias = vsmBias; + float depthScale = VSMBias * Z; + float minVariance1 = depthScale * depthScale; + return chebyshevUpperBound(moments.xy, Z, minVariance1, 0.1); +} +float decodeFloatRG(vec2 rg) { + return rg.y*(1.0/255.0) + rg.x; +} +float VSM8(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) { + vec4 c = texture2D(tex, texCoords); + vec3 moments = vec3(decodeFloatRG(c.xy), decodeFloatRG(c.zw), 0.0); + return calculateVSM8(moments, Z, vsmBias); +} +float getShadowVSM8(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) { + return VSM8(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, 0.0); +} +float getShadowSpotVSM8(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) { + return VSM8(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, length(lightDir) * shadowParams.w + shadowParams.z, shadowParams.y, 0.0); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowVSM_common.js +var shadowVSM_commonPS = ` +float linstep(float a, float b, float v) { + return saturate((v - a) / (b - a)); +} +float reduceLightBleeding(float pMax, float amount) { + return linstep(amount, 1.0, pMax); +} +float chebyshevUpperBound(vec2 moments, float mean, float minVariance, float lightBleedingReduction) { + float variance = moments.y - (moments.x * moments.x); + variance = max(variance, minVariance); + float d = mean - moments.x; + float pMax = variance / (variance + (d * d)); + pMax = reduceLightBleeding(pMax, lightBleedingReduction); + return (mean <= moments.x ? 1.0 : pMax); +} +float calculateEVSM(vec3 moments, float Z, float vsmBias, float exponent) { + Z = 2.0 * Z - 1.0; + float warpedDepth = exp(exponent * Z); + moments.xy += vec2(warpedDepth, warpedDepth*warpedDepth) * (1.0 - moments.z); + float VSMBias = vsmBias; + float depthScale = VSMBias * exponent * warpedDepth; + float minVariance1 = depthScale * depthScale; + return chebyshevUpperBound(moments.xy, warpedDepth, minVariance1, 0.1); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/skinBatchConst.js +var skinBatchConstVS = ` +attribute float vertex_boneIndices; +uniform vec4 matrix_pose[BONE_LIMIT * 3]; +mat4 getBoneMatrix(const in float i) { + vec4 v1 = matrix_pose[int(3.0 * i)]; + vec4 v2 = matrix_pose[int(3.0 * i + 1.0)]; + vec4 v3 = matrix_pose[int(3.0 * i + 2.0)]; + return mat4( + v1.x, v2.x, v3.x, 0, + v1.y, v2.y, v3.y, 0, + v1.z, v2.z, v3.z, 0, + v1.w, v2.w, v3.w, 1 + ); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/skinBatchTex.js +var skinBatchTexVS = ` +attribute float vertex_boneIndices; +uniform highp sampler2D texture_poseMap; +uniform vec4 texture_poseMapSize; +mat4 getBoneMatrix(const in float i) { + float j = i * 3.0; + float dx = texture_poseMapSize.z; + float dy = texture_poseMapSize.w; + float y = floor(j * dx); + float x = j - (y * texture_poseMapSize.x); + y = dy * (y + 0.5); + vec4 v1 = texture2D(texture_poseMap, vec2(dx * (x + 0.5), y)); + vec4 v2 = texture2D(texture_poseMap, vec2(dx * (x + 1.5), y)); + vec4 v3 = texture2D(texture_poseMap, vec2(dx * (x + 2.5), y)); + return mat4( + v1.x, v2.x, v3.x, 0, + v1.y, v2.y, v3.y, 0, + v1.z, v2.z, v3.z, 0, + v1.w, v2.w, v3.w, 1 + ); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/skinConst.js +var skinConstVS = ` +attribute vec4 vertex_boneWeights; +attribute vec4 vertex_boneIndices; +uniform vec4 matrix_pose[BONE_LIMIT * 3]; +void getBoneMatrix(const in float i, out vec4 v1, out vec4 v2, out vec4 v3) { + v1 = matrix_pose[int(3.0 * i)]; + v2 = matrix_pose[int(3.0 * i + 1.0)]; + v3 = matrix_pose[int(3.0 * i + 2.0)]; +} +mat4 getSkinMatrix(const in vec4 indices, const in vec4 weights) { + vec4 a1, a2, a3; + getBoneMatrix(indices.x, a1, a2, a3); + vec4 b1, b2, b3; + getBoneMatrix(indices.y, b1, b2, b3); + vec4 c1, c2, c3; + getBoneMatrix(indices.z, c1, c2, c3); + vec4 d1, d2, d3; + getBoneMatrix(indices.w, d1, d2, d3); + vec4 v1 = a1 * weights.x + b1 * weights.y + c1 * weights.z + d1 * weights.w; + vec4 v2 = a2 * weights.x + b2 * weights.y + c2 * weights.z + d2 * weights.w; + vec4 v3 = a3 * weights.x + b3 * weights.y + c3 * weights.z + d3 * weights.w; + float one = dot(weights, vec4(1.0)); + return mat4( + v1.x, v2.x, v3.x, 0, + v1.y, v2.y, v3.y, 0, + v1.z, v2.z, v3.z, 0, + v1.w, v2.w, v3.w, one + ); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/skinTex.js +var skinTexVS = ` +attribute vec4 vertex_boneWeights; +attribute vec4 vertex_boneIndices; +uniform highp sampler2D texture_poseMap; +uniform vec4 texture_poseMapSize; +void getBoneMatrix(const in float index, out vec4 v1, out vec4 v2, out vec4 v3) { + float i = float(index); + float j = i * 3.0; + float dx = texture_poseMapSize.z; + float dy = texture_poseMapSize.w; + + float y = floor(j * dx); + float x = j - (y * texture_poseMapSize.x); + y = dy * (y + 0.5); + v1 = texture2D(texture_poseMap, vec2(dx * (x + 0.5), y)); + v2 = texture2D(texture_poseMap, vec2(dx * (x + 1.5), y)); + v3 = texture2D(texture_poseMap, vec2(dx * (x + 2.5), y)); +} +mat4 getSkinMatrix(const in vec4 indices, const in vec4 weights) { + vec4 a1, a2, a3; + getBoneMatrix(indices.x, a1, a2, a3); + vec4 b1, b2, b3; + getBoneMatrix(indices.y, b1, b2, b3); + vec4 c1, c2, c3; + getBoneMatrix(indices.z, c1, c2, c3); + vec4 d1, d2, d3; + getBoneMatrix(indices.w, d1, d2, d3); + vec4 v1 = a1 * weights.x + b1 * weights.y + c1 * weights.z + d1 * weights.w; + vec4 v2 = a2 * weights.x + b2 * weights.y + c2 * weights.z + d2 * weights.w; + vec4 v3 = a3 * weights.x + b3 * weights.y + c3 * weights.z + d3 * weights.w; + float one = dot(weights, vec4(1.0)); + return mat4( + v1.x, v2.x, v3.x, 0, + v1.y, v2.y, v3.y, 0, + v1.z, v2.z, v3.z, 0, + v1.w, v2.w, v3.w, one + ); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/skybox/frag/skyboxEnv.js +var skyboxEnvPS = ` +varying vec3 vViewDir; +uniform sampler2D texture_envAtlas; +uniform float mipLevel; +void main(void) { + vec3 dir = vViewDir * vec3(-1.0, 1.0, 1.0); + vec2 uv = toSphericalUv(normalize(dir)); + vec3 linear = SKYBOX_DECODE_FNC(texture2D(texture_envAtlas, mapRoughnessUv(uv, mipLevel))); + gl_FragColor = vec4(gammaCorrectOutput(toneMap(processEnvironment(linear))), 1.0); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/skybox/frag/skyboxHDR.js +var skyboxHDRPS = ` +varying vec3 vViewDir; +uniform samplerCube texture_cubeMap; +#ifdef SKYMESH + varying vec3 vWorldPos; + uniform mat3 cubeMapRotationMatrix; + uniform vec3 projectedSkydomeCenter; +#endif +void main(void) { + #ifdef SKYMESH + vec3 envDir = normalize(vWorldPos - projectedSkydomeCenter); + vec3 dir = envDir * cubeMapRotationMatrix; + #else + vec3 dir = vViewDir; + #endif + dir.x *= -1.0; + vec3 linear = SKYBOX_DECODE_FNC(textureCube(texture_cubeMap, fixSeamsStatic(dir, SKYBOX_MIP))); + gl_FragColor = vec4(gammaCorrectOutput(toneMap(processEnvironment(linear))), 1.0); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/skybox/vert/skybox.js +var skyboxVS = ` +attribute vec3 aPosition; +#ifndef VIEWMATRIX +#define VIEWMATRIX +uniform mat4 matrix_view; +#endif +uniform mat4 matrix_projectionSkybox; +uniform mat3 cubeMapRotationMatrix; +varying vec3 vViewDir; +#ifdef SKYMESH + uniform mat4 matrix_model; + varying vec3 vWorldPos; +#endif +void main(void) { + mat4 view = matrix_view; + #ifdef SKYMESH + vec4 worldPos = matrix_model * vec4(aPosition, 1.0); + vWorldPos = worldPos.xyz; + gl_Position = matrix_projectionSkybox * view * worldPos; + #else + view[3][0] = view[3][1] = view[3][2] = 0.0; + gl_Position = matrix_projectionSkybox * view * vec4(aPosition, 1.0); + vViewDir = aPosition * cubeMapRotationMatrix; + #endif + gl_Position.z = gl_Position.w - 1.0e-7; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/specular.js +var specularPS = ` +#ifdef MAPCOLOR +uniform vec3 material_specular; +#endif +void getSpecularity() { + vec3 specularColor = vec3(1,1,1); + #ifdef MAPCOLOR + specularColor *= material_specular; + #endif + #ifdef MAPTEXTURE + specularColor *= $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH; + #endif + #ifdef MAPVERTEX + specularColor *= saturate(vVertexColor.$VC); + #endif + dSpecularity = specularColor; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/spherical.js +var sphericalPS = ` +const float PI = 3.141592653589793; +vec2 toSpherical(vec3 dir) { + return vec2(dir.xz == vec2(0.0) ? 0.0 : atan(dir.x, dir.z), asin(dir.y)); +} +vec2 toSphericalUv(vec3 dir) { + vec2 uv = toSpherical(dir) / vec2(PI * 2.0, PI) + 0.5; + return vec2(uv.x, 1.0 - uv.y); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/specularityFactor.js +var specularityFactorPS = ` +#ifdef MAPFLOAT +uniform float material_specularityFactor; +#endif +void getSpecularityFactor() { + float specularityFactor = 1.0; + #ifdef MAPFLOAT + specularityFactor *= material_specularityFactor; + #endif + #ifdef MAPTEXTURE + specularityFactor *= texture2DBias($SAMPLER, $UV, textureBias).$CH; + #endif + #ifdef MAPVERTEX + specularityFactor *= saturate(vVertexColor.$VC); + #endif + dSpecularityFactor = specularityFactor; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/spot.js +var spotPS = ` +float getSpotEffect(vec3 lightSpotDir, float lightInnerConeAngle, float lightOuterConeAngle, vec3 lightDirNorm) { + float cosAngle = dot(lightDirNorm, lightSpotDir); + return smoothstep(lightOuterConeAngle, lightInnerConeAngle, cosAngle); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/start.js +var startPS = ` +void main(void) { + dReflection = vec4(0); + #ifdef LIT_CLEARCOAT + ccSpecularLight = vec3(0); + ccReflection = vec3(0); + #endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/start.js +var startVS = ` +void main(void) { + gl_Position = getPosition(); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/startNineSliced.js +var startNineSlicedPS = ` + nineSlicedUv = vUv0; + nineSlicedUv.y = 1.0 - nineSlicedUv.y; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/startNineSlicedTiled.js +var startNineSlicedTiledPS = ` + vec2 tileMask = step(vMask, vec2(0.99999)); + vec2 tileSize = 0.5 * (innerOffset.xy + innerOffset.zw); + vec2 tileScale = vec2(1.0) / (vec2(1.0) - tileSize); + vec2 clampedUv = mix(innerOffset.xy * 0.5, vec2(1.0) - innerOffset.zw * 0.5, fract((vTiledUv - tileSize) * tileScale)); + clampedUv = clampedUv * atlasRect.zw + atlasRect.xy; + nineSlicedUv = vUv0 * tileMask + clampedUv * (vec2(1.0) - tileMask); + nineSlicedUv.y = 1.0 - nineSlicedUv.y; + +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/storeEVSM.js +var storeEVSMPS = ` +float exponent = VSM_EXPONENT; +depth = 2.0 * depth - 1.0; +depth = exp(exponent * depth); +gl_FragColor = vec4(depth, depth*depth, 1.0, 1.0); +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/tangentBinormal.js +var tangentBinormalVS = ` +vec3 getTangent() { + return normalize(dNormalMatrix * vertex_tangent.xyz); +} +vec3 getBinormal() { + return cross(vNormalW, vTangentW) * vertex_tangent.w; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/TBN.js +var TBNPS = ` +void getTBN(vec3 tangent, vec3 binormal, vec3 normal) { + dTBN = mat3(normalize(tangent), normalize(binormal), normalize(normal)); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/TBNderivative.js +var TBNderivativePS = ` +uniform float tbnBasis; +void getTBN(vec3 tangent, vec3 binormal, vec3 normal) { + vec2 uv = $UV; + vec3 dp1 = dFdx( vPositionW ); + vec3 dp2 = dFdy( vPositionW ); + vec2 duv1 = dFdx( uv ); + vec2 duv2 = dFdy( uv ); + vec3 dp2perp = cross( dp2, normal ); + vec3 dp1perp = cross( normal, dp1 ); + vec3 T = dp2perp * duv1.x + dp1perp * duv2.x; + vec3 B = dp2perp * duv1.y + dp1perp * duv2.y; + float denom = max( dot(T,T), dot(B,B) ); + float invmax = (denom == 0.0) ? 0.0 : tbnBasis / sqrt( denom ); + dTBN = mat3(T * invmax, -B * invmax, normal ); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/TBNfast.js +var TBNfastPS = ` +void getTBN(vec3 tangent, vec3 binormal, vec3 normal) { + dTBN = mat3(tangent, binormal, normal); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/TBNObjectSpace.js +var TBNObjectSpacePS = ` +void getTBN(vec3 tangent, vec3 binormal, vec3 normal) { + vec3 B = cross(normal, vObjectSpaceUpW); + vec3 T = cross(normal, B); + if (dot(B,B)==0.0) + { + float major=max(max(normal.x, normal.y), normal.z); + if (normal.x == major) + { + B=cross(normal, vec3(0,1,0)); + T=cross(normal, B); + } + else if (normal.y == major) + { + B=cross(normal, vec3(0,0,1)); + T=cross(normal, B); + } + else if (normal.z == major) + { + B=cross(normal, vec3(1,0,0)); + T=cross(normal, B); + } + } + dTBN = mat3(normalize(T), normalize(B), normalize(normal)); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/textureSample.js +var textureSamplePS = ` +vec4 texture2DSRGB(sampler2D tex, vec2 uv) { + return gammaCorrectInput(texture2D(tex, uv)); +} +vec4 texture2DSRGB(sampler2D tex, vec2 uv, float bias) { + return gammaCorrectInput(texture2D(tex, uv, bias)); +} +vec3 texture2DRGBM(sampler2D tex, vec2 uv) { + return decodeRGBM(texture2D(tex, uv)); +} +vec3 texture2DRGBM(sampler2D tex, vec2 uv, float bias) { + return decodeRGBM(texture2D(tex, uv, bias)); +} +vec3 texture2DRGBE(sampler2D tex, vec2 uv) { + return decodeRGBM(texture2D(tex, uv)); +} +vec3 texture2DRGBE(sampler2D tex, vec2 uv, float bias) { + return decodeRGBM(texture2D(tex, uv, bias)); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/thickness.js +var thicknessPS = ` +#ifdef MAPFLOAT +uniform float material_thickness; +#endif +void getThickness() { + dThickness = 1.0; + #ifdef MAPFLOAT + dThickness *= material_thickness; + #endif + #ifdef MAPTEXTURE + dThickness *= texture2DBias($SAMPLER, $UV, textureBias).$CH; + #endif + #ifdef MAPVERTEX + dThickness *= saturate(vVertexColor.$VC); + #endif +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingAces.js +var tonemappingAcesPS = ` +uniform float exposure; +vec3 toneMap(vec3 color) { + float tA = 2.51; + float tB = 0.03; + float tC = 2.43; + float tD = 0.59; + float tE = 0.14; + vec3 x = color * exposure; + return (x*(tA*x+tB))/(x*(tC*x+tD)+tE); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingAces2.js +var tonemappingAces2PS = ` +uniform float exposure; +const mat3 ACESInputMat = mat3( + 0.59719, 0.35458, 0.04823, + 0.07600, 0.90834, 0.01566, + 0.02840, 0.13383, 0.83777 +); +const mat3 ACESOutputMat = mat3( + 1.60475, -0.53108, -0.07367, + -0.10208, 1.10813, -0.00605, + -0.00327, -0.07276, 1.07602 +); +vec3 RRTAndODTFit(vec3 v) { + vec3 a = v * (v + 0.0245786) - 0.000090537; + vec3 b = v * (0.983729 * v + 0.4329510) + 0.238081; + return a / b; +} +vec3 toneMap(vec3 color) { + color *= exposure / 0.6; + color = color * ACESInputMat; + color = RRTAndODTFit(color); + color = color * ACESOutputMat; + color = clamp(color, 0.0, 1.0); + return color; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingFilmic.js +var tonemappingFilmicPS = ` +const float A = 0.15; +const float B = 0.50; +const float C = 0.10; +const float D = 0.20; +const float E = 0.02; +const float F = 0.30; +const float W = 11.2; +uniform float exposure; +vec3 uncharted2Tonemap(vec3 x) { + return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F; +} +vec3 toneMap(vec3 color) { + color = uncharted2Tonemap(color * exposure); + vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W,W,W)); + color = color * whiteScale; + return color; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingHejl.js +var tonemappingHejlPS = ` +uniform float exposure; +vec3 toneMap(vec3 color) { + color *= exposure; + const float A = 0.22, B = 0.3, C = .1, D = 0.2, E = .01, F = 0.3; + const float Scl = 1.25; + vec3 h = max( vec3(0.0), color - vec3(0.004) ); + return (h*((Scl*A)*h+Scl*vec3(C*B,C*B,C*B))+Scl*vec3(D*E,D*E,D*E)) / (h*(A*h+vec3(B,B,B))+vec3(D*F,D*F,D*F)) - Scl*vec3(E/F,E/F,E/F); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingLinear.js +var tonemappingLinearPS = ` +uniform float exposure; +vec3 toneMap(vec3 color) { + return color * exposure; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingNeutral.js +var tonemappingNeutralPS = ` +uniform float exposure; +vec3 toneMap(vec3 color) { + color *= exposure; + float startCompression = 0.8 - 0.04; + float desaturation = 0.15; + float x = min(color.r, min(color.g, color.b)); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + float d = 1. - startCompression; + float newPeak = 1. - d * d / (peak + d - startCompression); + color *= newPeak / peak; + float g = 1. - 1. / (desaturation * (peak - newPeak) + 1.); + return mix(color, newPeak * vec3(1, 1, 1), g); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingNone.js +var tonemappingNonePS = ` +vec3 toneMap(vec3 color) { + return color; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/transform.js +var transformVS = ` +#ifdef PIXELSNAP +uniform vec4 uScreenSize; +#endif +#ifdef SCREENSPACE +uniform float projectionFlipY; +#endif +#ifdef MORPHING +uniform vec4 morph_weights_a; +uniform vec4 morph_weights_b; +#endif +#ifdef MORPHING_TEXTURE_BASED + uniform vec4 morph_tex_params; + #ifdef WEBGPU + ivec2 getTextureMorphCoords() { + ivec2 textureSize = ivec2(morph_tex_params.xy); + int morphGridV = int(morph_vertex_id / textureSize.x); + int morphGridU = int(morph_vertex_id - (morphGridV * textureSize.x)); + morphGridV = textureSize.y - morphGridV - 1; + return ivec2(morphGridU, morphGridV); + } + #else + vec2 getTextureMorphCoords() { + vec2 textureSize = morph_tex_params.xy; + vec2 invTextureSize = morph_tex_params.zw; + float morphGridV = floor(morph_vertex_id * invTextureSize.x); + float morphGridU = morph_vertex_id - (morphGridV * textureSize.x); + return vec2(morphGridU, morphGridV) * invTextureSize + (0.5 * invTextureSize); + } + #endif +#endif +#ifdef MORPHING_TEXTURE_BASED_POSITION +uniform highp sampler2D morphPositionTex; +#endif +mat4 getModelMatrix() { + #ifdef DYNAMICBATCH + return getBoneMatrix(vertex_boneIndices); + #elif defined(SKIN) + return matrix_model * getSkinMatrix(vertex_boneIndices, vertex_boneWeights); + #elif defined(INSTANCING) + return mat4(instance_line1, instance_line2, instance_line3, instance_line4); + #else + return matrix_model; + #endif +} +vec4 getPosition() { + dModelMatrix = getModelMatrix(); + vec3 localPos = vertex_position; + #ifdef NINESLICED + localPos.xz *= outerScale; + vec2 positiveUnitOffset = clamp(vertex_position.xz, vec2(0.0), vec2(1.0)); + vec2 negativeUnitOffset = clamp(-vertex_position.xz, vec2(0.0), vec2(1.0)); + localPos.xz += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy; + vTiledUv = (localPos.xz - outerScale + innerOffset.xy) * -0.5 + 1.0; + localPos.xz *= -0.5; + localPos = localPos.xzy; + #endif + #ifdef MORPHING + #ifdef MORPHING_POS03 + localPos.xyz += morph_weights_a[0] * morph_pos0; + localPos.xyz += morph_weights_a[1] * morph_pos1; + localPos.xyz += morph_weights_a[2] * morph_pos2; + localPos.xyz += morph_weights_a[3] * morph_pos3; + #endif + #ifdef MORPHING_POS47 + localPos.xyz += morph_weights_b[0] * morph_pos4; + localPos.xyz += morph_weights_b[1] * morph_pos5; + localPos.xyz += morph_weights_b[2] * morph_pos6; + localPos.xyz += morph_weights_b[3] * morph_pos7; + #endif + #endif + #ifdef MORPHING_TEXTURE_BASED_POSITION + #ifdef WEBGPU + ivec2 morphUV = getTextureMorphCoords(); + vec3 morphPos = texelFetch(morphPositionTex, ivec2(morphUV), 0).xyz; + #else + vec2 morphUV = getTextureMorphCoords(); + vec3 morphPos = texture2D(morphPositionTex, morphUV).xyz; + #endif + localPos += morphPos; + #endif + vec4 posW = dModelMatrix * vec4(localPos, 1.0); + #ifdef SCREENSPACE + posW.zw = vec2(0.0, 1.0); + #endif + dPositionW = posW.xyz; + vec4 screenPos; + #ifdef UV1LAYOUT + screenPos = vec4(vertex_texCoord1.xy * 2.0 - 1.0, 0.5, 1); + #ifdef WEBGPU + screenPos.y *= -1.0; + #endif + #else + #ifdef SCREENSPACE + screenPos = posW; + screenPos.y *= projectionFlipY; + #else + screenPos = matrix_viewProjection * posW; + #endif + #ifdef PIXELSNAP + screenPos.xy = (screenPos.xy * 0.5) + 0.5; + screenPos.xy *= uScreenSize.xy; + screenPos.xy = floor(screenPos.xy); + screenPos.xy *= uScreenSize.zw; + screenPos.xy = (screenPos.xy * 2.0) - 1.0; + #endif + #endif + return screenPos; +} +vec3 getWorldPosition() { + return dPositionW; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/transformDecl.js +var transformDeclVS = ` +attribute vec3 vertex_position; +uniform mat4 matrix_model; +uniform mat4 matrix_viewProjection; +vec3 dPositionW; +mat4 dModelMatrix; +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/transmission.js +var transmissionPS = ` +#ifdef MAPFLOAT +uniform float material_refraction; +#endif +void getRefraction() { + float refraction = 1.0; + #ifdef MAPFLOAT + refraction = material_refraction; + #endif + #ifdef MAPTEXTURE + refraction *= texture2DBias($SAMPLER, $UV, textureBias).$CH; + #endif + #ifdef MAPVERTEX + refraction *= saturate(vVertexColor.$VC); + #endif + dTransmission = refraction; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/twoSidedLighting.js +var twoSidedLightingPS = ` +uniform float twoSidedLightingNegScaleFactor; +void handleTwoSidedLighting() { + dTBN[2] *= gl_FrontFacing ? twoSidedLightingNegScaleFactor : -twoSidedLightingNegScaleFactor; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/uv0.js +var uv0VS = ` +#ifdef NINESLICED +vec2 getUv0() { + vec2 uv = vertex_position.xz; + vec2 positiveUnitOffset = clamp(vertex_position.xz, vec2(0.0), vec2(1.0)); + vec2 negativeUnitOffset = clamp(-vertex_position.xz, vec2(0.0), vec2(1.0)); + uv += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy; + uv = uv * -0.5 + 0.5; + uv = uv * atlasRect.zw + atlasRect.xy; + vMask = vertex_texCoord0.xy; + return uv; +} +#else +vec2 getUv0() { + return vertex_texCoord0; +} +#endif +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/uv1.js +var uv1VS = ` +vec2 getUv1() { + return vertex_texCoord1; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/viewDir.js +var viewDirPS = ` +void getViewDir() { + dViewDirW = normalize(view_position - vPositionW); +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/viewNormal.js +var viewNormalVS = ` +#ifndef VIEWMATRIX +#define VIEWMATRIX +uniform mat4 matrix_view; +#endif +vec3 getViewNormal() { + return mat3(matrix_view) * vNormalW; +} +`; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/chunks.js +var shaderChunks = { + alphaTestPS, + ambientConstantPS, + ambientEnvPS, + ambientSHPS, + aoPS, + aoDetailMapPS, + aoDiffuseOccPS, + aoSpecOccPS, + aoSpecOccConstPS, + aoSpecOccConstSimplePS, + aoSpecOccSimplePS, + basePS, + baseVS, + baseNineSlicedPS, + baseNineSlicedVS, + baseNineSlicedTiledPS, + bayerPS, + biasConstPS, + blurVSMPS, + clearCoatPS, + clearCoatGlossPS, + clearCoatNormalPS, + clusteredLightCookiesPS, + clusteredLightShadowsPS, + clusteredLightUtilsPS, + clusteredLightPS, + combinePS, + cookiePS, + cubeMapProjectBoxPS, + cubeMapProjectNonePS, + cubeMapRotatePS, + debugOutputPS, + debugProcessFrontendPS, + detailModesPS, + diffusePS, + diffuseDetailMapPS, + decodePS, + emissivePS, + encodePS, + endPS, + endVS, + envAtlasPS, + envConstPS, + envMultiplyPS, + extensionPS, + extensionVS, + falloffInvSquaredPS, + falloffLinearPS, + fixCubemapSeamsNonePS, + fixCubemapSeamsStretchPS, + floatUnpackingPS, + fogExpPS, + fogExp2PS, + fogLinearPS, + fogNonePS, + fresnelSchlickPS, + fullscreenQuadPS, + fullscreenQuadVS, + gamma1_0PS, + gamma2_2PS, + gles2PS, + gles2VS, + gles3PS, + gles3VS, + glossPS, + iridescenceDiffractionPS, + iridescencePS, + iridescenceThicknessPS, + instancingVS, + iorPS, + lightDiffuseLambertPS, + lightDirPointPS, + lightmapAddPS, + lightmapDirAddPS, + lightmapDirPS, + lightmapSinglePS, + lightSpecularAnisoGGXPS, + lightSpecularBlinnPS, + lightSpecularPhongPS, + lightSheenPS, + linearizeDepthPS, + litShaderArgsPS, + ltcPS, + metalnessPS, + metalnessModulatePS, + msdfPS, + msdfVS, + normalVS, + normalDetailMapPS, + normalInstancedVS, + normalMapPS, + normalSkinnedVS, + normalXYPS, + normalXYZPS, + opacityPS, + opacityDitherPS, + outputPS, + outputAlphaPS, + outputAlphaOpaquePS, + outputAlphaPremulPS, + outputTex2DPS, + packDepthPS, + sheenPS, + sheenGlossPS, + parallaxPS, + particlePS, + particleVS, + particleAnimFrameClampVS, + particleAnimFrameLoopVS, + particleAnimTexVS, + particleInputFloatPS, + particleInputRgba8PS, + particleOutputFloatPS, + particleOutputRgba8PS, + particleUpdaterAABBPS, + particleUpdaterEndPS, + particleUpdaterInitPS, + particleUpdaterNoRespawnPS, + particleUpdaterOnStopPS, + particleUpdaterRespawnPS, + particleUpdaterSpherePS, + particleUpdaterStartPS, + particle_billboardVS, + particle_blendAddPS, + particle_blendMultiplyPS, + particle_blendNormalPS, + particle_cpuVS, + particle_cpu_endVS, + particle_customFaceVS, + particle_endPS, + particle_endVS, + particle_halflambertPS, + particle_initVS, + particle_lambertPS, + particle_lightingPS, + particle_localShiftVS, + particle_meshVS, + particle_normalVS, + particle_normalMapPS, + particle_pointAlongVS, + particle_softPS, + particle_softVS, + particle_stretchVS, + particle_TBNVS, + particle_wrapVS, + reflDirPS, + reflDirAnisoPS, + reflectionCCPS, + reflectionCubePS, + reflectionEnvHQPS, + reflectionEnvPS, + reflectionSpherePS, + reflectionSheenPS, + refractionCubePS, + refractionDynamicPS, + reprojectPS, + sampleCatmullRomPS, + screenDepthPS, + shadowCascadesPS, + shadowEVSMPS, + shadowEVSMnPS, + shadowPCSSPS, + shadowSampleCoordPS, + shadowStandardPS, + shadowStandardGL2PS, + shadowVSM8PS, + shadowVSM_commonPS, + skinBatchConstVS, + skinBatchTexVS, + skinConstVS, + skinTexVS, + skyboxEnvPS, + skyboxHDRPS, + skyboxVS, + specularPS, + sphericalPS, + specularityFactorPS, + spotPS, + startPS, + startVS, + startNineSlicedPS, + startNineSlicedTiledPS, + storeEVSMPS, + tangentBinormalVS, + TBNPS, + TBNderivativePS, + TBNfastPS, + TBNObjectSpacePS, + textureSamplePS, + thicknessPS, + tonemappingAcesPS, + tonemappingAces2PS, + tonemappingFilmicPS, + tonemappingHejlPS, + tonemappingLinearPS, + tonemappingNeutralPS, + tonemappingNonePS, + transformVS, + transformDeclVS, + transmissionPS, + twoSidedLightingPS, + uv0VS, + uv1VS, + viewDirPS, + viewNormalVS, + webgpuPS, + webgpuVS +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/get-program-library.js +var programLibraryDeviceCache = new DeviceCache(); +function getProgramLibrary(device) { + const library = programLibraryDeviceCache.get(device); + return library; +} +function setProgramLibrary(device, library) { + programLibraryDeviceCache.get(device, () => { + return library; + }); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/shader-generator.js +var ShaderGenerator = class { + static begin() { + return "void main(void)\n{\n"; + } + static end() { + return "}\n"; + } + static skinCode(device, chunks = shaderChunks) { + if (device.supportsBoneTextures) { + return chunks.skinTexVS; + } + return "#define BONE_LIMIT " + device.getBoneLimit() + "\n" + chunks.skinConstVS; + } + static fogCode(value, chunks = shaderChunks) { + if (value === "linear") { + return chunks.fogLinearPS ? chunks.fogLinearPS : shaderChunks.fogLinearPS; + } else if (value === "exp") { + return chunks.fogExpPS ? chunks.fogExpPS : shaderChunks.fogExpPS; + } else if (value === "exp2") { + return chunks.fogExp2PS ? chunks.fogExp2PS : shaderChunks.fogExp2PS; + } + return chunks.fogNonePS ? chunks.fogNonePS : shaderChunks.fogNonePS; + } + static gammaCode(value, chunks = shaderChunks) { + if (value === GAMMA_SRGB || value === GAMMA_SRGBFAST) { + return chunks.gamma2_2PS ? chunks.gamma2_2PS : shaderChunks.gamma2_2PS; + } else if (value === GAMMA_SRGBHDR) { + return "#define HDR\n" + (chunks.gamma2_2PS ? chunks.gamma2_2PS : shaderChunks.gamma2_2PS); + } + return chunks.gamma1_0PS ? chunks.gamma1_0PS : shaderChunks.gamma1_0PS; + } + static tonemapCode(value, chunks = shaderChunks) { + var _chunks$tonemappingFi, _chunks$tonemappingLi, _chunks$tonemappingHe, _chunks$tonemappingAc, _chunks$tonemappingAc2, _chunks$tonemappingNe, _chunks$tonemapingNon; + switch (value) { + case TONEMAP_FILMIC: + return (_chunks$tonemappingFi = chunks.tonemappingFilmicPS) != null ? _chunks$tonemappingFi : shaderChunks.tonemappingFilmicPS; + case TONEMAP_LINEAR: + return (_chunks$tonemappingLi = chunks.tonemappingLinearPS) != null ? _chunks$tonemappingLi : shaderChunks.tonemappingLinearPS; + case TONEMAP_HEJL: + return (_chunks$tonemappingHe = chunks.tonemappingHejlPS) != null ? _chunks$tonemappingHe : shaderChunks.tonemappingHejlPS; + case TONEMAP_ACES: + return (_chunks$tonemappingAc = chunks.tonemappingAcesPS) != null ? _chunks$tonemappingAc : shaderChunks.tonemappingAcesPS; + case TONEMAP_ACES2: + return (_chunks$tonemappingAc2 = chunks.tonemappingAces2PS) != null ? _chunks$tonemappingAc2 : shaderChunks.tonemappingAces2PS; + case TONEMAP_NEUTRAL: + return (_chunks$tonemappingNe = chunks.tonemappingNeutralPS) != null ? _chunks$tonemappingNe : shaderChunks.tonemappingNeutralPS; + } + return (_chunks$tonemapingNon = chunks.tonemapingNonePS) != null ? _chunks$tonemapingNon : shaderChunks.tonemappingNonePS; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/utils.js +function createShader(device, vsName, fsName, useTransformFeedback = false, shaderDefinitionOptions = {}) { + if (typeof useTransformFeedback === "boolean") { + shaderDefinitionOptions.useTransformFeedback = useTransformFeedback; + } else if (typeof useTransformFeedback === "object") { + shaderDefinitionOptions = _extends({}, shaderDefinitionOptions, useTransformFeedback); + } + return new Shader(device, ShaderUtils.createDefinition(device, _extends({}, shaderDefinitionOptions, { + name: `${vsName}_${fsName}`, + vertexCode: shaderChunks[vsName], + fragmentCode: shaderChunks[fsName] + }))); +} +function createShaderFromCode(device, vsCode2, fsCode, uniqueName, attributes, useTransformFeedback = false, shaderDefinitionOptions = {}) { + if (typeof useTransformFeedback === "boolean") { + shaderDefinitionOptions.useTransformFeedback = useTransformFeedback; + } else if (typeof useTransformFeedback === "object") { + shaderDefinitionOptions = _extends({}, shaderDefinitionOptions, useTransformFeedback); + } + const programLibrary = getProgramLibrary(device); + let shader = programLibrary.getCachedShader(uniqueName); + if (!shader) { + shader = new Shader(device, ShaderUtils.createDefinition(device, _extends({}, shaderDefinitionOptions, { + name: uniqueName, + vertexCode: vsCode2, + fragmentCode: fsCode, + attributes + }))); + programLibrary.setCachedShader(uniqueName, shader); + } + return shader; +} +var ShaderGeneratorPassThrough = class extends ShaderGenerator { + constructor(key, shaderDefinition) { + super(); + this.key = key; + this.shaderDefinition = shaderDefinition; + } + generateKey(options) { + return this.key; + } + createShaderDefinition(device, options) { + return this.shaderDefinition; + } +}; +function processShader(shader, processingOptions) { + var _shaderDefinition$nam; + const shaderDefinition = shader.definition; + const name = (_shaderDefinition$nam = shaderDefinition.name) != null ? _shaderDefinition$nam : "shader"; + const key = `${name}-id-${shader.id}`; + const materialGenerator = new ShaderGeneratorPassThrough(key, shaderDefinition); + const libraryModuleName = "shader"; + const library = getProgramLibrary(shader.device); + library.register(libraryModuleName, materialGenerator); + const variant = library.getProgram(libraryModuleName, {}, processingOptions); + if (shader.definition.shaderLanguage === SHADERLANGUAGE_WGSL) { + variant.meshUniformBufferFormat = shaderDefinition.meshUniformBufferFormat; + variant.meshBindGroupFormat = shaderDefinition.meshBindGroupFormat; + } + library.unregister(libraryModuleName); + return variant; +} +shaderChunks.createShader = createShader; +shaderChunks.createShaderFromCode = createShaderFromCode; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/quad-render.js +var _quadPrimitive = { + type: PRIMITIVE_TRISTRIP, + base: 0, + count: 4, + indexed: false +}; +var _tempViewport = new Vec4(); +var _tempScissor = new Vec4(); +var QuadRender = class { + constructor(shader) { + this.uniformBuffer = void 0; + this.bindGroup = void 0; + const device = shader.device; + this.shader = shader; + if (device.supportsUniformBuffers) { + const processingOptions = new ShaderProcessorOptions(); + this.shader = processShader(shader, processingOptions); + const ubFormat = this.shader.meshUniformBufferFormat; + if (ubFormat) { + this.uniformBuffer = new UniformBuffer(device, ubFormat, false); + } + const bindGroupFormat = this.shader.meshBindGroupFormat; + this.bindGroup = new BindGroup(device, bindGroupFormat, this.uniformBuffer); + } + } + destroy() { + var _this$uniformBuffer, _this$bindGroup; + (_this$uniformBuffer = this.uniformBuffer) == null || _this$uniformBuffer.destroy(); + this.uniformBuffer = null; + (_this$bindGroup = this.bindGroup) == null || _this$bindGroup.destroy(); + this.bindGroup = null; + } + render(viewport, scissor) { + const device = this.shader.device; + if (viewport) { + var _scissor2; + _tempViewport.set(device.vx, device.vy, device.vw, device.vh); + _tempScissor.set(device.sx, device.sy, device.sw, device.sh); + scissor = (_scissor2 = scissor) != null ? _scissor2 : viewport; + device.setViewport(viewport.x, viewport.y, viewport.z, viewport.w); + device.setScissor(scissor.x, scissor.y, scissor.z, scissor.w); + } + device.setVertexBuffer(device.quadVertexBuffer, 0); + const shader = this.shader; + device.setShader(shader); + if (device.supportsUniformBuffers) { + var _bindGroup$defaultUni; + const bindGroup = this.bindGroup; + (_bindGroup$defaultUni = bindGroup.defaultUniformBuffer) == null || _bindGroup$defaultUni.update(); + bindGroup.update(); + device.setBindGroup(BINDGROUP_MESH, bindGroup); + } + device.draw(_quadPrimitive); + if (viewport) { + device.setViewport(_tempViewport.x, _tempViewport.y, _tempViewport.z, _tempViewport.w); + device.setScissor(_tempScissor.x, _tempScissor.y, _tempScissor.z, _tempScissor.w); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/render-pass-quad.js +var RenderPassQuad = class extends RenderPass { + constructor(device, quad, rect, scissorRect) { + super(device); + this.quad = quad; + this.rect = rect; + this.scissorRect = scissorRect; + } + execute() { + const { + device + } = this; + device.setCullMode(CULLFACE_NONE); + device.setDepthState(DepthState.NODEPTH); + device.setStencilState(null, null); + this.quad.render(this.rect, this.scissorRect); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/quad-render-utils.js +var _tempRect = new Vec4(); +function drawQuadWithShader(device, target2, shader, rect, scissorRect) { + const quad = new QuadRender(shader); + if (!rect) { + rect = _tempRect; + rect.x = 0; + rect.y = 0; + rect.z = target2 ? target2.width : device.width; + rect.w = target2 ? target2.height : device.height; + } + const renderPass = new RenderPassQuad(device, quad, rect, scissorRect); + renderPass.init(target2); + renderPass.colorOps.clear = false; + renderPass.depthStencilOps.clearDepth = false; + if (device.isWebGPU && target2 === null && device.samples > 1) { + renderPass.colorOps.store = true; + } + renderPass.render(); + quad.destroy(); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-pass.js +var shaderPassDeviceCache = new DeviceCache(); +var ShaderPassInfo = class { + constructor(name, index, options = {}) { + this.index = void 0; + this.name = void 0; + this.shaderDefines = void 0; + this.name = name; + this.index = index; + Object.assign(this, options); + this.shaderDefines = this.buildShaderDefines(); + } + buildShaderDefines() { + let keyword; + if (this.isShadow) { + keyword = "SHADOW"; + } else if (this.isForward) { + keyword = "FORWARD"; + } else if (this.index === SHADER_DEPTH) { + keyword = "DEPTH"; + } else if (this.index === SHADER_PICK) { + keyword = "PICK"; + } + const define1 = keyword ? `#define ${keyword}_PASS +` : ""; + const define2 = `#define ${this.name.toUpperCase()}_PASS +`; + return define1 + define2; + } +}; +var ShaderPass = class _ShaderPass { + constructor() { + this.passesNamed = /* @__PURE__ */ new Map(); + this.passesIndexed = []; + this.nextIndex = 0; + const add = (name, index, options) => { + this.allocate(name, options); + }; + add("forward", SHADER_FORWARD, { + isForward: true + }); + add("forward_hdr", SHADER_FORWARDHDR, { + isForward: true + }); + add("depth"); + add("pick"); + add("shadow"); + add("prepass"); + } + static get(device) { + return shaderPassDeviceCache.get(device, () => { + return new _ShaderPass(); + }); + } + allocate(name, options) { + let info = this.passesNamed.get(name); + if (info === void 0) { + info = new ShaderPassInfo(name, this.nextIndex, options); + this.passesNamed.set(info.name, info); + this.passesIndexed[info.index] = info; + this.nextIndex++; + } + return info; + } + getByIndex(index) { + const info = this.passesIndexed[index]; + return info; + } + getByName(name) { + return this.passesNamed.get(name); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/basic.js +var vShader = ` + + #include "shaderPassDefines" + #include "transformDeclVS" + + #ifdef SKIN + #include "skinCode" + #endif + + #include "transformVS" + + #ifdef VERTEX_COLORS + attribute vec4 vertex_color; + varying vec4 vColor; + #endif + + #ifdef DIFFUSE_MAP + attribute vec2 vertex_texCoord0; + varying vec2 vUv0; + #endif + + #ifdef DEPTH_PASS + varying float vDepth; + + #ifndef VIEWMATRIX + #define VIEWMATRIX + uniform mat4 matrix_view; + #endif + + #ifndef CAMERAPLANES + #define CAMERAPLANES + uniform vec4 camera_params; + #endif + #endif + + void main(void) { + gl_Position = getPosition(); + + #ifdef DEPTH_PASS + vDepth = -(matrix_view * vec4(getWorldPosition(),1.0)).z * camera_params.x; + #endif + + #ifdef VERTEX_COLORS + vColor = vertex_color; + #endif + + #ifdef DIFFUSE_MAP + vUv0 = vertex_texCoord0; + #endif + } +`; +var fShader = ` + + #include "shaderPassDefines" + + #ifdef VERTEX_COLORS + varying vec4 vColor; + #else + uniform vec4 uColor; + #endif + + #ifdef DIFFUSE_MAP + varying vec2 vUv0; + uniform sampler2D texture_diffuseMap; + #endif + + #ifdef FOG + #include "fogCode" + #endif + + #ifdef ALPHA_TEST + #include "alphaTestPS" + #endif + + #ifdef DEPTH_PASS + varying float vDepth; + #include "packDepthPS" + #endif + + void main(void) { + + #ifdef VERTEX_COLORS + gl_FragColor = vColor; + #else + gl_FragColor = uColor; + #endif + + #ifdef DIFFUSE_MAP + gl_FragColor *= texture2D(texture_diffuseMap, vUv0); + #endif + + #ifdef ALPHA_TEST + alphaTest(gl_FragColor.a); + #endif + + #ifndef PICK_PASS + + #ifdef DEPTH_PASS + gl_FragColor = packFloat(vDepth); + #else + #ifdef FOG + glFragColor.rgb = addFog(gl_FragColor.rgb); + #endif + #endif + #endif + } +`; +var ShaderGeneratorBasic = class extends ShaderGenerator { + generateKey(options) { + let key = "basic"; + if (options.fog) key += "_fog"; + if (options.alphaTest) key += "_atst"; + if (options.vertexColors) key += "_vcol"; + if (options.diffuseMap) key += "_diff"; + if (options.skin) key += "_skin"; + if (options.screenSpace) key += "_ss"; + if (options.useInstancing) key += "_inst"; + if (options.useMorphPosition) key += "_morphp"; + if (options.useMorphNormal) key += "_morphn"; + if (options.useMorphTextureBased) key += "_morpht"; + key += "_" + options.pass; + return key; + } + createAttributesDefinition(definitionOptions, options) { + const attributes = { + vertex_position: SEMANTIC_POSITION + }; + if (options.skin) { + attributes.vertex_boneWeights = SEMANTIC_BLENDWEIGHT; + attributes.vertex_boneIndices = SEMANTIC_BLENDINDICES; + } + if (options.vertexColors) { + attributes.vertex_color = SEMANTIC_COLOR; + } + if (options.diffuseMap) { + attributes.vertex_texCoord0 = SEMANTIC_TEXCOORD0; + } + definitionOptions.attributes = attributes; + } + createVertexDefinition(device, definitionOptions, options, shaderPassInfo) { + const includes = /* @__PURE__ */ new Map(); + const defines = /* @__PURE__ */ new Map(); + includes.set("shaderPassDefines", shaderPassInfo.shaderDefines); + includes.set("transformDeclVS", shaderChunks.transformDeclVS); + includes.set("transformVS", shaderChunks.transformVS); + includes.set("skinCode", ShaderGenerator.skinCode(device)); + if (options.skin) defines.set("SKIN", true); + if (options.vertexColors) defines.set("VERTEX_COLORS", true); + if (options.diffuseMap) defines.set("DIFFUSE_MAP", true); + definitionOptions.vertexCode = vShader; + definitionOptions.vertexIncludes = includes; + definitionOptions.vertexDefines = defines; + } + createFragmentDefinition(definitionOptions, options, shaderPassInfo) { + const includes = /* @__PURE__ */ new Map(); + const defines = /* @__PURE__ */ new Map(); + includes.set("shaderPassDefines", shaderPassInfo.shaderDefines); + includes.set("fogCode", ShaderGenerator.fogCode(options.fog)); + includes.set("alphaTestPS", shaderChunks.alphaTestPS); + includes.set("packDepthPS", shaderChunks.packDepthPS); + if (options.vertexColors) defines.set("VERTEX_COLORS", true); + if (options.diffuseMap) defines.set("DIFFUSE_MAP", true); + if (options.fog) defines.set("FOG", true); + if (options.alphaTest) defines.set("ALPHA_TEST", true); + definitionOptions.fragmentCode = fShader; + definitionOptions.fragmentIncludes = includes; + definitionOptions.fragmentDefines = defines; + } + createShaderDefinition(device, options) { + const definitionOptions = { + name: "BasicShader" + }; + const shaderPassInfo = ShaderPass.get(device).getByIndex(options.pass); + this.createAttributesDefinition(definitionOptions, options); + this.createVertexDefinition(device, definitionOptions, options, shaderPassInfo); + this.createFragmentDefinition(definitionOptions, options, shaderPassInfo); + return ShaderUtils.createDefinition(device, definitionOptions); + } +}; +var basic = new ShaderGeneratorBasic(); + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/materials/default-material.js +var defaultMaterialDeviceCache = new DeviceCache(); +function getDefaultMaterial(device) { + const material = defaultMaterialDeviceCache.get(device); + return material; +} +function setDefaultMaterial(device, material) { + defaultMaterialDeviceCache.get(device, () => { + return material; + }); +} + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/materials/material.js +var blendModes = []; +blendModes[BLEND_SUBTRACTIVE] = { + src: BLENDMODE_ONE, + dst: BLENDMODE_ONE, + op: BLENDEQUATION_REVERSE_SUBTRACT +}; +blendModes[BLEND_NONE] = { + src: BLENDMODE_ONE, + dst: BLENDMODE_ZERO, + op: BLENDEQUATION_ADD +}; +blendModes[BLEND_NORMAL] = { + src: BLENDMODE_SRC_ALPHA, + dst: BLENDMODE_ONE_MINUS_SRC_ALPHA, + op: BLENDEQUATION_ADD +}; +blendModes[BLEND_PREMULTIPLIED] = { + src: BLENDMODE_ONE, + dst: BLENDMODE_ONE_MINUS_SRC_ALPHA, + op: BLENDEQUATION_ADD +}; +blendModes[BLEND_ADDITIVE] = { + src: BLENDMODE_ONE, + dst: BLENDMODE_ONE, + op: BLENDEQUATION_ADD +}; +blendModes[BLEND_ADDITIVEALPHA] = { + src: BLENDMODE_SRC_ALPHA, + dst: BLENDMODE_ONE, + op: BLENDEQUATION_ADD +}; +blendModes[BLEND_MULTIPLICATIVE2X] = { + src: BLENDMODE_DST_COLOR, + dst: BLENDMODE_SRC_COLOR, + op: BLENDEQUATION_ADD +}; +blendModes[BLEND_SCREEN] = { + src: BLENDMODE_ONE_MINUS_DST_COLOR, + dst: BLENDMODE_ONE, + op: BLENDEQUATION_ADD +}; +blendModes[BLEND_MULTIPLICATIVE] = { + src: BLENDMODE_DST_COLOR, + dst: BLENDMODE_ZERO, + op: BLENDEQUATION_ADD +}; +blendModes[BLEND_MIN] = { + src: BLENDMODE_ONE, + dst: BLENDMODE_ONE, + op: BLENDEQUATION_MIN +}; +blendModes[BLEND_MAX] = { + src: BLENDMODE_ONE, + dst: BLENDMODE_ONE, + op: BLENDEQUATION_MAX +}; +var id8 = 0; +var Material = class { + constructor() { + this._shader = null; + this.meshInstances = []; + this.name = "Untitled"; + this.userId = ""; + this.id = id8++; + this.variants = /* @__PURE__ */ new Map(); + this.parameters = {}; + this.alphaTest = 0; + this.alphaToCoverage = false; + this._blendState = new BlendState(); + this._depthState = new DepthState(); + this.cull = CULLFACE_BACK; + this.stencilFront = null; + this.stencilBack = null; + this._shaderVersion = 0; + this._scene = null; + this.dirty = true; + } + set depthBias(value) { + this._depthState.depthBias = value; + } + get depthBias() { + return this._depthState.depthBias; + } + set slopeDepthBias(value) { + this._depthState.depthBiasSlope = value; + } + get slopeDepthBias() { + return this._depthState.depthBiasSlope; + } + set redWrite(value) { + this._blendState.redWrite = value; + } + get redWrite() { + return this._blendState.redWrite; + } + set greenWrite(value) { + this._blendState.greenWrite = value; + } + get greenWrite() { + return this._blendState.greenWrite; + } + set blueWrite(value) { + this._blendState.blueWrite = value; + } + get blueWrite() { + return this._blendState.blueWrite; + } + set alphaWrite(value) { + this._blendState.alphaWrite = value; + } + get alphaWrite() { + return this._blendState.alphaWrite; + } + set shader(shader) { + this._shader = shader; + } + get shader() { + return this._shader; + } + get transparent() { + return this._blendState.blend; + } + _updateTransparency() { + const transparent = this.transparent; + const meshInstances = this.meshInstances; + for (let i = 0; i < meshInstances.length; i++) { + meshInstances[i].transparent = transparent; + } + } + set blendState(value) { + this._blendState.copy(value); + this._updateTransparency(); + } + get blendState() { + return this._blendState; + } + set blendType(type2) { + const blendMode = blendModes[type2]; + this._blendState.setColorBlend(blendMode.op, blendMode.src, blendMode.dst); + this._blendState.setAlphaBlend(blendMode.op, blendMode.src, blendMode.dst); + const blend = type2 !== BLEND_NONE; + if (this._blendState.blend !== blend) { + this._blendState.blend = blend; + this._updateTransparency(); + } + this._updateMeshInstanceKeys(); + } + get blendType() { + if (!this.transparent) { + return BLEND_NONE; + } + const { + colorOp, + colorSrcFactor, + colorDstFactor, + alphaOp, + alphaSrcFactor, + alphaDstFactor + } = this._blendState; + for (let i = 0; i < blendModes.length; i++) { + const blendMode = blendModes[i]; + if (blendMode.src === colorSrcFactor && blendMode.dst === colorDstFactor && blendMode.op === colorOp && blendMode.src === alphaSrcFactor && blendMode.dst === alphaDstFactor && blendMode.op === alphaOp) { + return i; + } + } + return BLEND_NORMAL; + } + set depthState(value) { + this._depthState.copy(value); + } + get depthState() { + return this._depthState; + } + set depthTest(value) { + this._depthState.test = value; + } + get depthTest() { + return this._depthState.test; + } + set depthFunc(value) { + this._depthState.func = value; + } + get depthFunc() { + return this._depthState.func; + } + set depthWrite(value) { + this._depthState.write = value; + } + get depthWrite() { + return this._depthState.write; + } + copy(source) { + var _source$stencilFront; + this.name = source.name; + this._shader = source._shader; + this.alphaTest = source.alphaTest; + this.alphaToCoverage = source.alphaToCoverage; + this._blendState.copy(source._blendState); + this._depthState.copy(source._depthState); + this.cull = source.cull; + this.stencilFront = (_source$stencilFront = source.stencilFront) == null ? void 0 : _source$stencilFront.clone(); + if (source.stencilBack) { + this.stencilBack = source.stencilFront === source.stencilBack ? this.stencilFront : source.stencilBack.clone(); + } + return this; + } + clone() { + const clone = new this.constructor(); + return clone.copy(this); + } + _updateMeshInstanceKeys() { + const meshInstances = this.meshInstances; + for (let i = 0; i < meshInstances.length; i++) { + meshInstances[i].updateKey(); + } + } + updateUniforms(device, scene2) { + } + getShaderVariant(device, scene2, objDefs, unused, pass, sortedLights, viewUniformFormat, viewBindGroupFormat, vertexFormat) { + const processingOptions = new ShaderProcessorOptions(viewUniformFormat, viewBindGroupFormat, vertexFormat); + return processShader(this._shader, processingOptions); + } + update() { + this.dirty = true; + if (this._shader) this._shader.failed = false; + } + clearParameters() { + this.parameters = {}; + } + getParameters() { + return this.parameters; + } + clearVariants() { + this.variants.clear(); + const meshInstances = this.meshInstances; + const count = meshInstances.length; + for (let i = 0; i < count; i++) { + meshInstances[i].clearShaders(); + } + } + getParameter(name) { + return this.parameters[name]; + } + setParameter(name, data2) { + if (data2 === void 0 && typeof name === "object") { + const uniformObject = name; + if (uniformObject.length) { + for (let i = 0; i < uniformObject.length; i++) { + this.setParameter(uniformObject[i]); + } + return; + } + name = uniformObject.name; + data2 = uniformObject.value; + } + const param = this.parameters[name]; + if (param) { + param.data = data2; + } else { + this.parameters[name] = { + scopeId: null, + data: data2 + }; + } + } + deleteParameter(name) { + if (this.parameters[name]) { + delete this.parameters[name]; + } + } + setParameters(device, names) { + const parameters = this.parameters; + if (names === void 0) names = parameters; + for (const paramName in names) { + const parameter = parameters[paramName]; + if (parameter) { + if (!parameter.scopeId) { + parameter.scopeId = device.scope.resolve(paramName); + } + parameter.scopeId.setValue(parameter.data); + } + } + } + destroy() { + this.variants.clear(); + this._shader = null; + for (let i = 0; i < this.meshInstances.length; i++) { + const meshInstance = this.meshInstances[i]; + meshInstance.clearShaders(); + meshInstance._material = null; + if (meshInstance.mesh) { + const defaultMaterial = getDefaultMaterial(meshInstance.mesh.device); + if (this !== defaultMaterial) { + meshInstance.material = defaultMaterial; + } + } + } + this.meshInstances.length = 0; + } + addMeshInstanceRef(meshInstance) { + this.meshInstances.push(meshInstance); + } + removeMeshInstanceRef(meshInstance) { + const meshInstances = this.meshInstances; + const i = meshInstances.indexOf(meshInstance); + if (i !== -1) { + meshInstances.splice(i, 1); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/materials/basic-material.js +var BasicMaterial = class extends Material { + constructor(...args) { + super(...args); + this.color = new Color(1, 1, 1, 1); + this.colorUniform = new Float32Array(4); + this.colorMap = null; + this.vertexColors = false; + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.colorMap = source.colorMap; + this.vertexColors = source.vertexColors; + return this; + } + updateUniforms(device, scene2) { + this.clearParameters(); + this.colorUniform[0] = this.color.r; + this.colorUniform[1] = this.color.g; + this.colorUniform[2] = this.color.b; + this.colorUniform[3] = this.color.a; + this.setParameter("uColor", this.colorUniform); + if (this.colorMap) { + this.setParameter("texture_diffuseMap", this.colorMap); + } + } + getShaderVariant(device, scene2, objDefs, unused, pass, sortedLights, viewUniformFormat, viewBindGroupFormat, vertexFormat) { + const options = { + skin: objDefs && (objDefs & SHADERDEF_SKIN) !== 0, + screenSpace: objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0, + useInstancing: objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0, + useMorphPosition: objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0, + useMorphNormal: objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0, + useMorphTextureBased: objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED) !== 0, + alphaTest: this.alphaTest > 0, + vertexColors: this.vertexColors, + diffuseMap: !!this.colorMap, + pass + }; + const processingOptions = new ShaderProcessorOptions(viewUniformFormat, viewBindGroupFormat, vertexFormat); + const library = getProgramLibrary(device); + library.register("basic", basic); + return library.getProgram("basic", options, processingOptions, this.userId); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/batching/batch.js +var Batch = class { + constructor(meshInstances, dynamic, batchGroupId) { + this._aabb = new BoundingBox(); + this.origMeshInstances = void 0; + this.meshInstance = null; + this.dynamic = void 0; + this.batchGroupId = void 0; + this.origMeshInstances = meshInstances; + this.dynamic = dynamic; + this.batchGroupId = batchGroupId; + } + destroy(scene2, layers) { + if (this.meshInstance) { + this.removeFromLayers(scene2, layers); + this.meshInstance.destroy(); + this.meshInstance = null; + } + } + addToLayers(scene2, layers) { + for (let i = 0; i < layers.length; i++) { + const layer = scene2.layers.getLayerById(layers[i]); + if (layer) { + layer.addMeshInstances([this.meshInstance]); + } + } + } + removeFromLayers(scene2, layers) { + for (let i = 0; i < layers.length; i++) { + const layer = scene2.layers.getLayerById(layers[i]); + if (layer) { + layer.removeMeshInstances([this.meshInstance]); + } + } + } + updateBoundingBox() { + this._aabb.copy(this.origMeshInstances[0].aabb); + for (let i = 1; i < this.origMeshInstances.length; i++) { + this._aabb.add(this.origMeshInstances[i].aabb); + } + this.meshInstance.aabb = this._aabb; + this.meshInstance._aabbVer = 0; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/batching/batch-group.js +var BatchGroup = class { + constructor(id12, name, dynamic, maxAabbSize, layers = [LAYERID_WORLD]) { + this._ui = false; + this._sprite = false; + this._obj = { + model: [], + element: [], + sprite: [], + render: [] + }; + this.id = void 0; + this.name = void 0; + this.dynamic = void 0; + this.maxAabbSize = void 0; + this.layers = void 0; + this.id = id12; + this.name = name; + this.dynamic = dynamic; + this.maxAabbSize = maxAabbSize; + this.layers = layers; + } +}; +BatchGroup.MODEL = "model"; +BatchGroup.ELEMENT = "element"; +BatchGroup.SPRITE = "sprite"; +BatchGroup.RENDER = "render"; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/skin-instance.js +var _invMatrix = new Mat4(); +var SkinInstance = class { + constructor(skin) { + this.bones = void 0; + this.boneTextureSize = void 0; + this._dirty = true; + this._rootBone = null; + this._skinUpdateIndex = -1; + this._updateBeforeCull = true; + if (skin) { + this.initSkin(skin); + } + } + set rootBone(rootBone) { + this._rootBone = rootBone; + } + get rootBone() { + return this._rootBone; + } + init(device, numBones) { + if (device.supportsBoneTextures) { + const numPixels = numBones * 3; + let width = Math.ceil(Math.sqrt(numPixels)); + width = math.roundUp(width, 3); + const height = Math.ceil(numPixels / width); + this.boneTexture = new Texture(device, { + width, + height, + format: PIXELFORMAT_RGBA32F, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + name: "skin" + }); + this.boneTextureSize = [width, height, 1 / width, 1 / height]; + this.matrixPalette = this.boneTexture.lock({ + mode: TEXTURELOCK_READ + }); + this.boneTexture.unlock(); + } else { + this.matrixPalette = new Float32Array(numBones * 12); + } + } + destroy() { + if (this.boneTexture) { + this.boneTexture.destroy(); + this.boneTexture = null; + } + } + resolve(rootBone, entity) { + this.rootBone = rootBone; + const skin = this.skin; + const bones = []; + for (let j = 0; j < skin.boneNames.length; j++) { + const boneName = skin.boneNames[j]; + let bone = rootBone.findByName(boneName); + if (!bone) { + bone = entity; + } + bones.push(bone); + } + this.bones = bones; + } + initSkin(skin) { + this.skin = skin; + this.bones = []; + const numBones = skin.inverseBindPose.length; + this.init(skin.device, numBones); + this.matrices = []; + for (let i = 0; i < numBones; i++) { + this.matrices[i] = new Mat4(); + } + } + uploadBones(device) { + if (device.supportsBoneTextures) { + this.boneTexture.lock(); + this.boneTexture.unlock(); + } + } + _updateMatrices(rootNode, skinUpdateIndex) { + if (this._skinUpdateIndex !== skinUpdateIndex) { + this._skinUpdateIndex = skinUpdateIndex; + _invMatrix.copy(rootNode.getWorldTransform()).invert(); + for (let i = this.bones.length - 1; i >= 0; i--) { + this.matrices[i].mulAffine2(_invMatrix, this.bones[i].getWorldTransform()); + this.matrices[i].mulAffine2(this.matrices[i], this.skin.inverseBindPose[i]); + } + } + } + updateMatrices(rootNode, skinUpdateIndex) { + if (this._updateBeforeCull) { + this._updateMatrices(rootNode, skinUpdateIndex); + } + } + updateMatrixPalette(rootNode, skinUpdateIndex) { + this._updateMatrices(rootNode, skinUpdateIndex); + const mp = this.matrixPalette; + const count = this.bones.length; + for (let i = 0; i < count; i++) { + const pe = this.matrices[i].data; + const base = i * 12; + mp[base] = pe[0]; + mp[base + 1] = pe[4]; + mp[base + 2] = pe[8]; + mp[base + 3] = pe[12]; + mp[base + 4] = pe[1]; + mp[base + 5] = pe[5]; + mp[base + 6] = pe[9]; + mp[base + 7] = pe[13]; + mp[base + 8] = pe[2]; + mp[base + 9] = pe[6]; + mp[base + 10] = pe[10]; + mp[base + 11] = pe[14]; + } + this.uploadBones(this.skin.device); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/ref-counted-object.js +var RefCountedObject = class { + constructor() { + this._refCount = 0; + } + incRefCount() { + this._refCount++; + } + decRefCount() { + this._refCount--; + } + get refCount() { + return this._refCount; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/mesh.js +var id9 = 0; +var GeometryData = class { + constructor() { + this.initDefaults(); + } + initDefaults() { + this.recreate = false; + this.verticesUsage = BUFFER_STATIC; + this.indicesUsage = BUFFER_STATIC; + this.maxVertices = 0; + this.maxIndices = 0; + this.vertexCount = 0; + this.indexCount = 0; + this.vertexStreamsUpdated = false; + this.indexStreamUpdated = false; + this.vertexStreamDictionary = {}; + this.indices = null; + } + _changeVertexCount(count, semantic) { + if (!this.vertexCount) { + this.vertexCount = count; + } + } +}; +GeometryData.DEFAULT_COMPONENTS_POSITION = 3; +GeometryData.DEFAULT_COMPONENTS_NORMAL = 3; +GeometryData.DEFAULT_COMPONENTS_UV = 2; +GeometryData.DEFAULT_COMPONENTS_COLORS = 4; +var GeometryVertexStream = class { + constructor(data2, componentCount, dataType, dataTypeNormalize, asInt) { + this.data = data2; + this.componentCount = componentCount; + this.dataType = dataType; + this.dataTypeNormalize = dataTypeNormalize; + this.asInt = asInt; + } +}; +var Mesh = class _Mesh extends RefCountedObject { + constructor(graphicsDevice, options) { + super(); + this._aabbVer = 0; + this._aabb = new BoundingBox(); + this._storageVertex = false; + this._storageIndex = false; + this.id = id9++; + this.device = graphicsDevice; + this._storageIndex = (options == null ? void 0 : options.storageIndex) || false; + this._storageVertex = (options == null ? void 0 : options.storageVertex) || false; + this.vertexBuffer = null; + this.indexBuffer = [null]; + this.primitive = [{ + type: 0, + base: 0, + count: 0 + }]; + this.skin = null; + this._morph = null; + this._geometryData = null; + this.boneAabb = null; + } + static fromGeometry(graphicsDevice, geometry, options = {}) { + const mesh = new _Mesh(graphicsDevice, options); + const { + positions, + normals, + tangents, + colors, + uvs, + uvs1, + blendIndices, + blendWeights, + indices + } = geometry; + if (positions) { + mesh.setPositions(positions); + } + if (normals) { + mesh.setNormals(normals); + } + if (tangents) { + mesh.setVertexStream(SEMANTIC_TANGENT, tangents, 4); + } + if (colors) { + mesh.setColors32(colors); + } + if (uvs) { + mesh.setUvs(0, uvs); + } + if (uvs1) { + mesh.setUvs(1, uvs1); + } + if (blendIndices) { + mesh.setVertexStream(SEMANTIC_BLENDINDICES, blendIndices, 4, blendIndices.length / 4, TYPE_UINT8); + } + if (blendWeights) { + mesh.setVertexStream(SEMANTIC_BLENDWEIGHT, blendWeights, 4); + } + if (indices) { + mesh.setIndices(indices); + } + mesh.update(); + return mesh; + } + set morph(morph) { + if (morph !== this._morph) { + if (this._morph) { + this._morph.decRefCount(); + } + this._morph = morph; + if (morph) { + morph.incRefCount(); + } + } + } + get morph() { + return this._morph; + } + set aabb(aabb) { + this._aabb = aabb; + this._aabbVer++; + } + get aabb() { + return this._aabb; + } + destroy() { + const morph = this.morph; + if (morph) { + this.morph = null; + if (morph.refCount < 1) { + morph.destroy(); + } + } + if (this.vertexBuffer) { + this.vertexBuffer.destroy(); + this.vertexBuffer = null; + } + for (let j = 0; j < this.indexBuffer.length; j++) { + this._destroyIndexBuffer(j); + } + this.indexBuffer.length = 0; + this._geometryData = null; + } + _destroyIndexBuffer(index) { + if (this.indexBuffer[index]) { + this.indexBuffer[index].destroy(); + this.indexBuffer[index] = null; + } + } + _initBoneAabbs(morphTargets) { + this.boneAabb = []; + this.boneUsed = []; + let x2, y2, z2; + let bMax, bMin; + const boneMin = []; + const boneMax = []; + const boneUsed = this.boneUsed; + const numBones = this.skin.boneNames.length; + let maxMorphX, maxMorphY, maxMorphZ; + for (let i = 0; i < numBones; i++) { + boneMin[i] = new Vec3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE); + boneMax[i] = new Vec3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE); + } + const iterator = new VertexIterator(this.vertexBuffer); + const posElement = iterator.element[SEMANTIC_POSITION]; + const weightsElement = iterator.element[SEMANTIC_BLENDWEIGHT]; + const indicesElement = iterator.element[SEMANTIC_BLENDINDICES]; + const numVerts = this.vertexBuffer.numVertices; + for (let j = 0; j < numVerts; j++) { + for (let k = 0; k < 4; k++) { + const boneWeight = weightsElement.array[weightsElement.index + k]; + if (boneWeight > 0) { + const boneIndex = indicesElement.array[indicesElement.index + k]; + boneUsed[boneIndex] = true; + x2 = posElement.array[posElement.index]; + y2 = posElement.array[posElement.index + 1]; + z2 = posElement.array[posElement.index + 2]; + bMax = boneMax[boneIndex]; + bMin = boneMin[boneIndex]; + if (bMin.x > x2) bMin.x = x2; + if (bMin.y > y2) bMin.y = y2; + if (bMin.z > z2) bMin.z = z2; + if (bMax.x < x2) bMax.x = x2; + if (bMax.y < y2) bMax.y = y2; + if (bMax.z < z2) bMax.z = z2; + if (morphTargets) { + let minMorphX = maxMorphX = x2; + let minMorphY = maxMorphY = y2; + let minMorphZ = maxMorphZ = z2; + for (let l = 0; l < morphTargets.length; l++) { + const target2 = morphTargets[l]; + const dx = target2.deltaPositions[j * 3]; + const dy = target2.deltaPositions[j * 3 + 1]; + const dz = target2.deltaPositions[j * 3 + 2]; + if (dx < 0) { + minMorphX += dx; + } else { + maxMorphX += dx; + } + if (dy < 0) { + minMorphY += dy; + } else { + maxMorphY += dy; + } + if (dz < 0) { + minMorphZ += dz; + } else { + maxMorphZ += dz; + } + } + if (bMin.x > minMorphX) bMin.x = minMorphX; + if (bMin.y > minMorphY) bMin.y = minMorphY; + if (bMin.z > minMorphZ) bMin.z = minMorphZ; + if (bMax.x < maxMorphX) bMax.x = maxMorphX; + if (bMax.y < maxMorphY) bMax.y = maxMorphY; + if (bMax.z < maxMorphZ) bMax.z = maxMorphZ; + } + } + } + iterator.next(); + } + const positionElement = this.vertexBuffer.getFormat().elements.find((e) => e.name === SEMANTIC_POSITION); + if (positionElement && positionElement.normalize) { + const func = (() => { + switch (positionElement.dataType) { + case TYPE_INT8: + return (x3) => Math.max(x3 / 127, -1); + case TYPE_UINT8: + return (x3) => x3 / 255; + case TYPE_INT16: + return (x3) => Math.max(x3 / 32767, -1); + case TYPE_UINT16: + return (x3) => x3 / 65535; + default: + return (x3) => x3; + } + })(); + for (let i = 0; i < numBones; i++) { + if (boneUsed[i]) { + const min = boneMin[i]; + const max = boneMax[i]; + min.set(func(min.x), func(min.y), func(min.z)); + max.set(func(max.x), func(max.y), func(max.z)); + } + } + } + for (let i = 0; i < numBones; i++) { + const aabb = new BoundingBox(); + aabb.setMinMax(boneMin[i], boneMax[i]); + this.boneAabb.push(aabb); + } + } + _initGeometryData() { + if (!this._geometryData) { + this._geometryData = new GeometryData(); + if (this.vertexBuffer) { + this._geometryData.vertexCount = this.vertexBuffer.numVertices; + this._geometryData.maxVertices = this.vertexBuffer.numVertices; + } + if (this.indexBuffer.length > 0 && this.indexBuffer[0]) { + this._geometryData.indexCount = this.indexBuffer[0].numIndices; + this._geometryData.maxIndices = this.indexBuffer[0].numIndices; + } + } + } + clear(verticesDynamic, indicesDynamic, maxVertices = 0, maxIndices = 0) { + this._initGeometryData(); + this._geometryData.initDefaults(); + this._geometryData.recreate = true; + this._geometryData.maxVertices = maxVertices; + this._geometryData.maxIndices = maxIndices; + this._geometryData.verticesUsage = verticesDynamic ? BUFFER_STATIC : BUFFER_DYNAMIC; + this._geometryData.indicesUsage = indicesDynamic ? BUFFER_STATIC : BUFFER_DYNAMIC; + } + setVertexStream(semantic, data2, componentCount, numVertices, dataType = TYPE_FLOAT32, dataTypeNormalize = false, asInt = false) { + this._initGeometryData(); + const vertexCount = numVertices || data2.length / componentCount; + this._geometryData._changeVertexCount(vertexCount, semantic); + this._geometryData.vertexStreamsUpdated = true; + this._geometryData.vertexStreamDictionary[semantic] = new GeometryVertexStream(data2, componentCount, dataType, dataTypeNormalize, asInt); + } + getVertexStream(semantic, data2) { + let count = 0; + let done = false; + if (this._geometryData) { + const stream = this._geometryData.vertexStreamDictionary[semantic]; + if (stream) { + done = true; + count = this._geometryData.vertexCount; + if (ArrayBuffer.isView(data2)) { + data2.set(stream.data); + } else { + data2.length = 0; + data2.push(stream.data); + } + } + } + if (!done) { + if (this.vertexBuffer) { + const iterator = new VertexIterator(this.vertexBuffer); + count = iterator.readData(semantic, data2); + } + } + return count; + } + setPositions(positions, componentCount = GeometryData.DEFAULT_COMPONENTS_POSITION, numVertices) { + this.setVertexStream(SEMANTIC_POSITION, positions, componentCount, numVertices, TYPE_FLOAT32, false); + } + setNormals(normals, componentCount = GeometryData.DEFAULT_COMPONENTS_NORMAL, numVertices) { + this.setVertexStream(SEMANTIC_NORMAL, normals, componentCount, numVertices, TYPE_FLOAT32, false); + } + setUvs(channel, uvs, componentCount = GeometryData.DEFAULT_COMPONENTS_UV, numVertices) { + this.setVertexStream(SEMANTIC_TEXCOORD + channel, uvs, componentCount, numVertices, TYPE_FLOAT32, false); + } + setColors(colors, componentCount = GeometryData.DEFAULT_COMPONENTS_COLORS, numVertices) { + this.setVertexStream(SEMANTIC_COLOR, colors, componentCount, numVertices, TYPE_FLOAT32, false); + } + setColors32(colors, numVertices) { + this.setVertexStream(SEMANTIC_COLOR, colors, GeometryData.DEFAULT_COMPONENTS_COLORS, numVertices, TYPE_UINT8, true); + } + setIndices(indices, numIndices) { + this._initGeometryData(); + this._geometryData.indexStreamUpdated = true; + this._geometryData.indices = indices; + this._geometryData.indexCount = numIndices || indices.length; + } + getPositions(positions) { + return this.getVertexStream(SEMANTIC_POSITION, positions); + } + getNormals(normals) { + return this.getVertexStream(SEMANTIC_NORMAL, normals); + } + getUvs(channel, uvs) { + return this.getVertexStream(SEMANTIC_TEXCOORD + channel, uvs); + } + getColors(colors) { + return this.getVertexStream(SEMANTIC_COLOR, colors); + } + getIndices(indices) { + let count = 0; + if (this._geometryData && this._geometryData.indices) { + const streamIndices = this._geometryData.indices; + count = this._geometryData.indexCount; + if (ArrayBuffer.isView(indices)) { + indices.set(streamIndices); + } else { + indices.length = 0; + for (let i = 0, il = streamIndices.length; i < il; i++) { + indices.push(streamIndices[i]); + } + } + } else { + if (this.indexBuffer.length > 0 && this.indexBuffer[0]) { + const indexBuffer = this.indexBuffer[0]; + count = indexBuffer.readData(indices); + } + } + return count; + } + update(primitiveType = PRIMITIVE_TRIANGLES, updateBoundingBox = true) { + if (this._geometryData) { + if (updateBoundingBox) { + const stream = this._geometryData.vertexStreamDictionary[SEMANTIC_POSITION]; + if (stream) { + if (stream.componentCount === 3) { + this._aabb.compute(stream.data, this._geometryData.vertexCount); + this._aabbVer++; + } + } + } + let destroyVB = this._geometryData.recreate; + if (this._geometryData.vertexCount > this._geometryData.maxVertices) { + destroyVB = true; + this._geometryData.maxVertices = this._geometryData.vertexCount; + } + if (destroyVB) { + if (this.vertexBuffer) { + this.vertexBuffer.destroy(); + this.vertexBuffer = null; + } + } + let destroyIB = this._geometryData.recreate; + if (this._geometryData.indexCount > this._geometryData.maxIndices) { + destroyIB = true; + this._geometryData.maxIndices = this._geometryData.indexCount; + } + if (destroyIB) { + if (this.indexBuffer.length > 0 && this.indexBuffer[0]) { + this.indexBuffer[0].destroy(); + this.indexBuffer[0] = null; + } + } + if (this._geometryData.vertexStreamsUpdated) { + this._updateVertexBuffer(); + } + if (this._geometryData.indexStreamUpdated) { + this._updateIndexBuffer(); + } + this.primitive[0].type = primitiveType; + if (this.indexBuffer.length > 0 && this.indexBuffer[0]) { + if (this._geometryData.indexStreamUpdated) { + this.primitive[0].count = this._geometryData.indexCount; + this.primitive[0].indexed = true; + } + } else { + if (this._geometryData.vertexStreamsUpdated) { + this.primitive[0].count = this._geometryData.vertexCount; + this.primitive[0].indexed = false; + } + } + this._geometryData.vertexCount = 0; + this._geometryData.indexCount = 0; + this._geometryData.vertexStreamsUpdated = false; + this._geometryData.indexStreamUpdated = false; + this._geometryData.recreate = false; + this.updateRenderStates(); + } + } + _buildVertexFormat(vertexCount) { + const vertexDesc = []; + for (const semantic in this._geometryData.vertexStreamDictionary) { + const stream = this._geometryData.vertexStreamDictionary[semantic]; + vertexDesc.push({ + semantic, + components: stream.componentCount, + type: stream.dataType, + normalize: stream.dataTypeNormalize, + asInt: stream.asInt + }); + } + return new VertexFormat(this.device, vertexDesc, vertexCount); + } + _updateVertexBuffer() { + if (!this.vertexBuffer) { + const allocateVertexCount = this._geometryData.maxVertices; + const format = this._buildVertexFormat(allocateVertexCount); + this.vertexBuffer = new VertexBuffer(this.device, format, allocateVertexCount, { + usage: this._geometryData.verticesUsage, + storage: this._storageVertex + }); + } + const iterator = new VertexIterator(this.vertexBuffer); + const numVertices = this._geometryData.vertexCount; + for (const semantic in this._geometryData.vertexStreamDictionary) { + const stream = this._geometryData.vertexStreamDictionary[semantic]; + iterator.writeData(semantic, stream.data, numVertices); + delete this._geometryData.vertexStreamDictionary[semantic]; + } + iterator.end(); + } + _updateIndexBuffer() { + if (this.indexBuffer.length <= 0 || !this.indexBuffer[0]) { + const maxVertices = this._geometryData.maxVertices; + const createFormat = maxVertices > 65535 || maxVertices === 0 ? INDEXFORMAT_UINT32 : INDEXFORMAT_UINT16; + const options = this._storageIndex ? { + storage: true + } : void 0; + this.indexBuffer[0] = new IndexBuffer(this.device, createFormat, this._geometryData.maxIndices, this._geometryData.indicesUsage, void 0, options); + } + const srcIndices = this._geometryData.indices; + if (srcIndices) { + const indexBuffer = this.indexBuffer[0]; + indexBuffer.writeData(srcIndices, this._geometryData.indexCount); + this._geometryData.indices = null; + } + } + prepareRenderState(renderStyle) { + if (renderStyle === RENDERSTYLE_WIREFRAME) { + this.generateWireframe(); + } else if (renderStyle === RENDERSTYLE_POINTS) { + this.primitive[RENDERSTYLE_POINTS] = { + type: PRIMITIVE_POINTS, + base: 0, + count: this.vertexBuffer ? this.vertexBuffer.numVertices : 0, + indexed: false + }; + } + } + updateRenderStates() { + if (this.primitive[RENDERSTYLE_POINTS]) { + this.prepareRenderState(RENDERSTYLE_POINTS); + } + if (this.primitive[RENDERSTYLE_WIREFRAME]) { + this.prepareRenderState(RENDERSTYLE_WIREFRAME); + } + } + generateWireframe() { + this._destroyIndexBuffer(RENDERSTYLE_WIREFRAME); + const numVertices = this.vertexBuffer.numVertices; + const lines = []; + let format; + if (this.indexBuffer.length > 0 && this.indexBuffer[0]) { + const offsets = [[0, 1], [1, 2], [2, 0]]; + const base = this.primitive[RENDERSTYLE_SOLID].base; + const count = this.primitive[RENDERSTYLE_SOLID].count; + const indexBuffer = this.indexBuffer[RENDERSTYLE_SOLID]; + const srcIndices = new typedArrayIndexFormats[indexBuffer.format](indexBuffer.storage); + const seen = /* @__PURE__ */ new Set(); + for (let j = base; j < base + count; j += 3) { + for (let k = 0; k < 3; k++) { + const i1 = srcIndices[j + offsets[k][0]]; + const i2 = srcIndices[j + offsets[k][1]]; + const hash = i1 > i2 ? i2 * numVertices + i1 : i1 * numVertices + i2; + if (!seen.has(hash)) { + seen.add(hash); + lines.push(i1, i2); + } + } + } + format = indexBuffer.format; + } else { + for (let i = 0; i < numVertices; i += 3) { + lines.push(i, i + 1, i + 1, i + 2, i + 2, i); + } + format = lines.length > 65535 ? INDEXFORMAT_UINT32 : INDEXFORMAT_UINT16; + } + const wireBuffer = new IndexBuffer(this.vertexBuffer.device, format, lines.length); + const dstIndices = new typedArrayIndexFormats[wireBuffer.format](wireBuffer.storage); + dstIndices.set(lines); + wireBuffer.unlock(); + this.primitive[RENDERSTYLE_WIREFRAME] = { + type: PRIMITIVE_LINES, + base: 0, + count: lines.length, + indexed: true + }; + this.indexBuffer[RENDERSTYLE_WIREFRAME] = wireBuffer; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graph-node.js +var scaleCompensatePosTransform = new Mat4(); +var scaleCompensatePos = new Vec3(); +var scaleCompensateRot = new Quat2(); +var scaleCompensateRot2 = new Quat2(); +var scaleCompensateScale = new Vec3(); +var scaleCompensateScaleForParent = new Vec3(); +var tmpMat4 = new Mat4(); +var tmpQuat = new Quat2(); +var position = new Vec3(); +var invParentWtm = new Mat4(); +var rotation = new Quat2(); +var invParentRot = new Quat2(); +var matrix = new Mat4(); +var target = new Vec3(); +var up = new Vec3(); +function createTest(attr, value) { + if (attr instanceof Function) { + return attr; + } + return (node) => { + let x2 = node[attr]; + if (x2 instanceof Function) { + x2 = x2(); + } + return x2 === value; + }; +} +function findNode(node, test) { + if (test(node)) return node; + const children = node._children; + const len = children.length; + for (let i = 0; i < len; ++i) { + const result = findNode(children[i], test); + if (result) return result; + } + return null; +} +var GraphNode = class extends EventHandler { + constructor(name = "Untitled") { + super(); + this.name = void 0; + this.tags = new Tags(this); + this._labels = {}; + this.localPosition = new Vec3(); + this.localRotation = new Quat2(); + this.localScale = new Vec3(1, 1, 1); + this.localEulerAngles = new Vec3(); + this.position = new Vec3(); + this.rotation = new Quat2(); + this.eulerAngles = new Vec3(); + this._scale = null; + this.localTransform = new Mat4(); + this._dirtyLocal = false; + this._aabbVer = 0; + this._frozen = false; + this.worldTransform = new Mat4(); + this._dirtyWorld = false; + this._worldScaleSign = 0; + this._normalMatrix = new Mat3(); + this._dirtyNormal = true; + this._right = null; + this._up = null; + this._forward = null; + this._parent = null; + this._children = []; + this._graphDepth = 0; + this._enabled = true; + this._enabledInHierarchy = false; + this.scaleCompensation = false; + this.name = name; + } + get right() { + if (!this._right) { + this._right = new Vec3(); + } + return this.getWorldTransform().getX(this._right).normalize(); + } + get up() { + if (!this._up) { + this._up = new Vec3(); + } + return this.getWorldTransform().getY(this._up).normalize(); + } + get forward() { + if (!this._forward) { + this._forward = new Vec3(); + } + return this.getWorldTransform().getZ(this._forward).normalize().mulScalar(-1); + } + get normalMatrix() { + const normalMat = this._normalMatrix; + if (this._dirtyNormal) { + normalMat.invertMat4(this.getWorldTransform()).transpose(); + this._dirtyNormal = false; + } + return normalMat; + } + set enabled(enabled) { + if (this._enabled !== enabled) { + var _this$_parent; + this._enabled = enabled; + if (enabled && (_this$_parent = this._parent) != null && _this$_parent.enabled || !enabled) { + this._notifyHierarchyStateChanged(this, enabled); + } + } + } + get enabled() { + return this._enabled && this._enabledInHierarchy; + } + get parent() { + return this._parent; + } + get path() { + let node = this._parent; + if (!node) { + return ""; + } + let result = this.name; + while (node && node._parent) { + result = `${node.name}/${result}`; + node = node._parent; + } + return result; + } + get root() { + let result = this; + while (result._parent) { + result = result._parent; + } + return result; + } + get children() { + return this._children; + } + get graphDepth() { + return this._graphDepth; + } + _notifyHierarchyStateChanged(node, enabled) { + node._onHierarchyStateChanged(enabled); + const c2 = node._children; + for (let i = 0, len = c2.length; i < len; i++) { + if (c2[i]._enabled) this._notifyHierarchyStateChanged(c2[i], enabled); + } + } + _onHierarchyStateChanged(enabled) { + this._enabledInHierarchy = enabled; + if (enabled && !this._frozen) this._unfreezeParentToRoot(); + } + _cloneInternal(clone) { + clone.name = this.name; + const tags = this.tags._list; + clone.tags.clear(); + for (let i = 0; i < tags.length; i++) clone.tags.add(tags[i]); + clone._labels = Object.assign({}, this._labels); + clone.localPosition.copy(this.localPosition); + clone.localRotation.copy(this.localRotation); + clone.localScale.copy(this.localScale); + clone.localEulerAngles.copy(this.localEulerAngles); + clone.position.copy(this.position); + clone.rotation.copy(this.rotation); + clone.eulerAngles.copy(this.eulerAngles); + clone.localTransform.copy(this.localTransform); + clone._dirtyLocal = this._dirtyLocal; + clone.worldTransform.copy(this.worldTransform); + clone._dirtyWorld = this._dirtyWorld; + clone._dirtyNormal = this._dirtyNormal; + clone._aabbVer = this._aabbVer + 1; + clone._enabled = this._enabled; + clone.scaleCompensation = this.scaleCompensation; + clone._enabledInHierarchy = false; + } + clone() { + const clone = new this.constructor(); + this._cloneInternal(clone); + return clone; + } + copy(source) { + source._cloneInternal(this); + return this; + } + destroy() { + this.remove(); + const children = this._children; + while (children.length) { + const child = children.pop(); + child._parent = null; + child.destroy(); + } + this.fire("destroy", this); + this.off(); + } + find(attr, value) { + const results = []; + const test = createTest(attr, value); + this.forEach((node) => { + if (test(node)) results.push(node); + }); + return results; + } + findOne(attr, value) { + const test = createTest(attr, value); + return findNode(this, test); + } + findByTag() { + const query = arguments; + const results = []; + const queryNode = (node, checkNode) => { + if (checkNode && node.tags.has(...query)) { + results.push(node); + } + for (let i = 0; i < node._children.length; i++) { + queryNode(node._children[i], true); + } + }; + queryNode(this, false); + return results; + } + findByName(name) { + return this.findOne("name", name); + } + findByPath(path2) { + const parts = Array.isArray(path2) ? path2 : path2.split("/"); + let result = this; + for (let i = 0, imax = parts.length; i < imax; ++i) { + result = result.children.find((c2) => c2.name === parts[i]); + if (!result) { + return null; + } + } + return result; + } + forEach(callback, thisArg) { + callback.call(thisArg, this); + const children = this._children; + const len = children.length; + for (let i = 0; i < len; ++i) { + children[i].forEach(callback, thisArg); + } + } + isDescendantOf(node) { + let parent = this._parent; + while (parent) { + if (parent === node) return true; + parent = parent._parent; + } + return false; + } + isAncestorOf(node) { + return node.isDescendantOf(this); + } + getEulerAngles() { + this.getWorldTransform().getEulerAngles(this.eulerAngles); + return this.eulerAngles; + } + getLocalEulerAngles() { + this.localRotation.getEulerAngles(this.localEulerAngles); + return this.localEulerAngles; + } + getLocalPosition() { + return this.localPosition; + } + getLocalRotation() { + return this.localRotation; + } + getLocalScale() { + return this.localScale; + } + getLocalTransform() { + if (this._dirtyLocal) { + this.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale); + this._dirtyLocal = false; + } + return this.localTransform; + } + getPosition() { + this.getWorldTransform().getTranslation(this.position); + return this.position; + } + getRotation() { + this.rotation.setFromMat4(this.getWorldTransform()); + return this.rotation; + } + getScale() { + if (!this._scale) { + this._scale = new Vec3(); + } + return this.getWorldTransform().getScale(this._scale); + } + getWorldTransform() { + if (!this._dirtyLocal && !this._dirtyWorld) return this.worldTransform; + if (this._parent) this._parent.getWorldTransform(); + this._sync(); + return this.worldTransform; + } + get worldScaleSign() { + if (this._worldScaleSign === 0) { + this._worldScaleSign = this.getWorldTransform().scaleSign; + } + return this._worldScaleSign; + } + remove() { + var _this$_parent2; + (_this$_parent2 = this._parent) == null || _this$_parent2.removeChild(this); + } + reparent(parent, index) { + this.remove(); + if (parent) { + if (index >= 0) { + parent.insertChild(this, index); + } else { + parent.addChild(this); + } + } + } + setLocalEulerAngles(x2, y2, z2) { + this.localRotation.setFromEulerAngles(x2, y2, z2); + if (!this._dirtyLocal) this._dirtifyLocal(); + } + setLocalPosition(x2, y2, z2) { + if (x2 instanceof Vec3) { + this.localPosition.copy(x2); + } else { + this.localPosition.set(x2, y2, z2); + } + if (!this._dirtyLocal) this._dirtifyLocal(); + } + setLocalRotation(x2, y2, z2, w) { + if (x2 instanceof Quat2) { + this.localRotation.copy(x2); + } else { + this.localRotation.set(x2, y2, z2, w); + } + if (!this._dirtyLocal) this._dirtifyLocal(); + } + setLocalScale(x2, y2, z2) { + if (x2 instanceof Vec3) { + this.localScale.copy(x2); + } else { + this.localScale.set(x2, y2, z2); + } + if (!this._dirtyLocal) this._dirtifyLocal(); + } + _dirtifyLocal() { + if (!this._dirtyLocal) { + this._dirtyLocal = true; + if (!this._dirtyWorld) this._dirtifyWorld(); + } + } + _unfreezeParentToRoot() { + let p = this._parent; + while (p) { + p._frozen = false; + p = p._parent; + } + } + _dirtifyWorld() { + if (!this._dirtyWorld) this._unfreezeParentToRoot(); + this._dirtifyWorldInternal(); + } + _dirtifyWorldInternal() { + if (!this._dirtyWorld) { + this._frozen = false; + this._dirtyWorld = true; + for (let i = 0; i < this._children.length; i++) { + if (!this._children[i]._dirtyWorld) this._children[i]._dirtifyWorldInternal(); + } + } + this._dirtyNormal = true; + this._worldScaleSign = 0; + this._aabbVer++; + } + setPosition(x2, y2, z2) { + if (x2 instanceof Vec3) { + position.copy(x2); + } else { + position.set(x2, y2, z2); + } + if (this._parent === null) { + this.localPosition.copy(position); + } else { + invParentWtm.copy(this._parent.getWorldTransform()).invert(); + invParentWtm.transformPoint(position, this.localPosition); + } + if (!this._dirtyLocal) this._dirtifyLocal(); + } + setRotation(x2, y2, z2, w) { + if (x2 instanceof Quat2) { + rotation.copy(x2); + } else { + rotation.set(x2, y2, z2, w); + } + if (this._parent === null) { + this.localRotation.copy(rotation); + } else { + const parentRot = this._parent.getRotation(); + invParentRot.copy(parentRot).invert(); + this.localRotation.copy(invParentRot).mul(rotation); + } + if (!this._dirtyLocal) this._dirtifyLocal(); + } + setEulerAngles(x2, y2, z2) { + this.localRotation.setFromEulerAngles(x2, y2, z2); + if (this._parent !== null) { + const parentRot = this._parent.getRotation(); + invParentRot.copy(parentRot).invert(); + this.localRotation.mul2(invParentRot, this.localRotation); + } + if (!this._dirtyLocal) this._dirtifyLocal(); + } + addChild(node) { + this._prepareInsertChild(node); + this._children.push(node); + this._onInsertChild(node); + } + addChildAndSaveTransform(node) { + const wPos = node.getPosition(); + const wRot = node.getRotation(); + this._prepareInsertChild(node); + node.setPosition(tmpMat4.copy(this.worldTransform).invert().transformPoint(wPos)); + node.setRotation(tmpQuat.copy(this.getRotation()).invert().mul(wRot)); + this._children.push(node); + this._onInsertChild(node); + } + insertChild(node, index) { + this._prepareInsertChild(node); + this._children.splice(index, 0, node); + this._onInsertChild(node); + } + _prepareInsertChild(node) { + node.remove(); + } + _fireOnHierarchy(name, nameHierarchy, parent) { + this.fire(name, parent); + for (let i = 0; i < this._children.length; i++) { + this._children[i]._fireOnHierarchy(nameHierarchy, nameHierarchy, parent); + } + } + _onInsertChild(node) { + node._parent = this; + const enabledInHierarchy = node._enabled && this.enabled; + if (node._enabledInHierarchy !== enabledInHierarchy) { + node._enabledInHierarchy = enabledInHierarchy; + node._notifyHierarchyStateChanged(node, enabledInHierarchy); + } + node._updateGraphDepth(); + node._dirtifyWorld(); + if (this._frozen) node._unfreezeParentToRoot(); + node._fireOnHierarchy("insert", "inserthierarchy", this); + if (this.fire) this.fire("childinsert", node); + } + _updateGraphDepth() { + this._graphDepth = this._parent ? this._parent._graphDepth + 1 : 0; + for (let i = 0, len = this._children.length; i < len; i++) { + this._children[i]._updateGraphDepth(); + } + } + removeChild(child) { + const index = this._children.indexOf(child); + if (index === -1) { + return; + } + this._children.splice(index, 1); + child._parent = null; + child._fireOnHierarchy("remove", "removehierarchy", this); + this.fire("childremove", child); + } + _sync() { + if (this._dirtyLocal) { + this.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale); + this._dirtyLocal = false; + } + if (this._dirtyWorld) { + if (this._parent === null) { + this.worldTransform.copy(this.localTransform); + } else { + if (this.scaleCompensation) { + let parentWorldScale; + const parent = this._parent; + let scale2 = this.localScale; + let parentToUseScaleFrom = parent; + if (parentToUseScaleFrom) { + while (parentToUseScaleFrom && parentToUseScaleFrom.scaleCompensation) { + parentToUseScaleFrom = parentToUseScaleFrom._parent; + } + if (parentToUseScaleFrom) { + parentToUseScaleFrom = parentToUseScaleFrom._parent; + if (parentToUseScaleFrom) { + parentWorldScale = parentToUseScaleFrom.worldTransform.getScale(); + scaleCompensateScale.mul2(parentWorldScale, this.localScale); + scale2 = scaleCompensateScale; + } + } + } + scaleCompensateRot2.setFromMat4(parent.worldTransform); + scaleCompensateRot.mul2(scaleCompensateRot2, this.localRotation); + let tmatrix = parent.worldTransform; + if (parent.scaleCompensation) { + scaleCompensateScaleForParent.mul2(parentWorldScale, parent.getLocalScale()); + scaleCompensatePosTransform.setTRS(parent.worldTransform.getTranslation(scaleCompensatePos), scaleCompensateRot2, scaleCompensateScaleForParent); + tmatrix = scaleCompensatePosTransform; + } + tmatrix.transformPoint(this.localPosition, scaleCompensatePos); + this.worldTransform.setTRS(scaleCompensatePos, scaleCompensateRot, scale2); + } else { + this.worldTransform.mulAffine2(this._parent.worldTransform, this.localTransform); + } + } + this._dirtyWorld = false; + } + } + syncHierarchy() { + if (!this._enabled) return; + if (this._frozen) return; + this._frozen = true; + if (this._dirtyLocal || this._dirtyWorld) { + this._sync(); + } + const children = this._children; + for (let i = 0, len = children.length; i < len; i++) { + children[i].syncHierarchy(); + } + } + lookAt(x2, y2, z2, ux = 0, uy = 1, uz = 0) { + if (x2 instanceof Vec3) { + target.copy(x2); + if (y2 instanceof Vec3) { + up.copy(y2); + } else { + up.copy(Vec3.UP); + } + } else if (z2 === void 0) { + return; + } else { + target.set(x2, y2, z2); + up.set(ux, uy, uz); + } + matrix.setLookAt(this.getPosition(), target, up); + rotation.setFromMat4(matrix); + this.setRotation(rotation); + } + translate(x2, y2, z2) { + if (x2 instanceof Vec3) { + position.copy(x2); + } else { + position.set(x2, y2, z2); + } + position.add(this.getPosition()); + this.setPosition(position); + } + translateLocal(x2, y2, z2) { + if (x2 instanceof Vec3) { + position.copy(x2); + } else { + position.set(x2, y2, z2); + } + this.localRotation.transformVector(position, position); + this.localPosition.add(position); + if (!this._dirtyLocal) this._dirtifyLocal(); + } + rotate(x2, y2, z2) { + rotation.setFromEulerAngles(x2, y2, z2); + if (this._parent === null) { + this.localRotation.mul2(rotation, this.localRotation); + } else { + const rot = this.getRotation(); + const parentRot = this._parent.getRotation(); + invParentRot.copy(parentRot).invert(); + rotation.mul2(invParentRot, rotation); + this.localRotation.mul2(rotation, rot); + } + if (!this._dirtyLocal) this._dirtifyLocal(); + } + rotateLocal(x2, y2, z2) { + rotation.setFromEulerAngles(x2, y2, z2); + this.localRotation.mul(rotation); + if (!this._dirtyLocal) this._dirtifyLocal(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/ref-counted-cache.js +var RefCountedCache = class { + constructor() { + this.cache = /* @__PURE__ */ new Map(); + } + destroy() { + this.cache.forEach((refCount, object) => { + object.destroy(); + }); + this.cache.clear(); + } + incRef(object) { + const refCount = (this.cache.get(object) || 0) + 1; + this.cache.set(object, refCount); + } + decRef(object) { + if (object) { + let refCount = this.cache.get(object); + if (refCount) { + refCount--; + if (refCount === 0) { + this.cache.delete(object); + object.destroy(); + } else { + this.cache.set(object, refCount); + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/lightmap-cache.js +var LightmapCache = class { + static incRef(texture) { + this.cache.incRef(texture); + } + static decRef(texture) { + this.cache.decRef(texture); + } + static destroy() { + this.cache.destroy(); + } +}; +LightmapCache.cache = new RefCountedCache(); + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/mesh-instance.js +var id10 = 0; +var _tmpAabb = new BoundingBox(); +var _tempBoneAabb = new BoundingBox(); +var _tempSphere = new BoundingSphere(); +var _meshSet = /* @__PURE__ */ new Set(); +var InstancingData = class { + constructor(numObjects) { + this.vertexBuffer = null; + this.count = numObjects; + } +}; +var ShaderInstance = class { + constructor() { + this.shader = void 0; + this.bindGroup = null; + } + getBindGroup(device) { + if (!this.bindGroup) { + const shader = this.shader; + const ubFormat = shader.meshUniformBufferFormat; + const uniformBuffer = new UniformBuffer(device, ubFormat, false); + const bindGroupFormat = shader.meshBindGroupFormat; + this.bindGroup = new BindGroup(device, bindGroupFormat, uniformBuffer); + } + return this.bindGroup; + } + destroy() { + const group = this.bindGroup; + if (group) { + var _group$defaultUniform; + (_group$defaultUniform = group.defaultUniformBuffer) == null || _group$defaultUniform.destroy(); + group.destroy(); + this.bindGroup = null; + } + } +}; +var ShaderCacheEntry = class { + constructor() { + this.shaderInstances = /* @__PURE__ */ new Map(); + } + destroy() { + this.shaderInstances.forEach((instance) => instance.destroy()); + this.shaderInstances.clear(); + } +}; +var MeshInstance = class _MeshInstance { + constructor(mesh, material, node = null) { + this.visible = true; + this.castShadow = false; + this.transparent = false; + this._material = null; + this._shaderCache = []; + this.id = id10++; + this.pick = true; + if (mesh instanceof GraphNode) { + const temp = mesh; + mesh = material; + material = node; + node = temp; + } + this._key = [0, 0]; + this.node = node; + this._mesh = mesh; + mesh.incRefCount(); + this.material = material; + this._shaderDefs = MASK_AFFECT_DYNAMIC << 16; + if (mesh.vertexBuffer) { + const format = mesh.vertexBuffer.format; + this._shaderDefs |= format.hasUv0 ? SHADERDEF_UV0 : 0; + this._shaderDefs |= format.hasUv1 ? SHADERDEF_UV1 : 0; + this._shaderDefs |= format.hasColor ? SHADERDEF_VCOLOR : 0; + this._shaderDefs |= format.hasTangents ? SHADERDEF_TANGENTS : 0; + } + this.layer = LAYER_WORLD; + this._renderStyle = RENDERSTYLE_SOLID; + this._receiveShadow = true; + this._screenSpace = false; + this.cull = true; + this._updateAabb = true; + this._updateAabbFunc = null; + this._calculateSortDistance = null; + this.updateKey(); + this._skinInstance = null; + this._morphInstance = null; + this.gsplatInstance = null; + this.instancingData = null; + this._customAabb = null; + this.aabb = new BoundingBox(); + this._aabbVer = -1; + this._aabbMeshVer = -1; + this.drawOrder = 0; + this.visibleThisFrame = false; + this.isVisibleFunc = null; + this.parameters = {}; + this.stencilFront = null; + this.stencilBack = null; + this.flipFacesFactor = 1; + } + set renderStyle(renderStyle) { + this._renderStyle = renderStyle; + this.mesh.prepareRenderState(renderStyle); + } + get renderStyle() { + return this._renderStyle; + } + set mesh(mesh) { + if (mesh === this._mesh) return; + if (this._mesh) { + this._mesh.decRefCount(); + } + this._mesh = mesh; + if (mesh) { + mesh.incRefCount(); + } + } + get mesh() { + return this._mesh; + } + set aabb(aabb) { + this._aabb = aabb; + } + get aabb() { + if (!this._updateAabb) { + return this._aabb; + } + if (this._updateAabbFunc) { + return this._updateAabbFunc(this._aabb); + } + let localAabb = this._customAabb; + let toWorldSpace = !!localAabb; + if (!localAabb) { + localAabb = _tmpAabb; + if (this.skinInstance) { + if (!this.mesh.boneAabb) { + const morphTargets = this._morphInstance ? this._morphInstance.morph._targets : null; + this.mesh._initBoneAabbs(morphTargets); + } + const boneUsed = this.mesh.boneUsed; + let first = true; + for (let i = 0; i < this.mesh.boneAabb.length; i++) { + if (boneUsed[i]) { + _tempBoneAabb.setFromTransformedAabb(this.mesh.boneAabb[i], this.skinInstance.matrices[i]); + if (first) { + first = false; + localAabb.center.copy(_tempBoneAabb.center); + localAabb.halfExtents.copy(_tempBoneAabb.halfExtents); + } else { + localAabb.add(_tempBoneAabb); + } + } + } + toWorldSpace = true; + } else if (this.node._aabbVer !== this._aabbVer || this.mesh._aabbVer !== this._aabbMeshVer) { + if (this.mesh) { + localAabb.center.copy(this.mesh.aabb.center); + localAabb.halfExtents.copy(this.mesh.aabb.halfExtents); + } else { + localAabb.center.set(0, 0, 0); + localAabb.halfExtents.set(0, 0, 0); + } + if (this.mesh && this.mesh.morph) { + const morphAabb = this.mesh.morph.aabb; + localAabb._expand(morphAabb.getMin(), morphAabb.getMax()); + } + toWorldSpace = true; + this._aabbVer = this.node._aabbVer; + this._aabbMeshVer = this.mesh._aabbVer; + } + } + if (toWorldSpace) { + this._aabb.setFromTransformedAabb(localAabb, this.node.getWorldTransform()); + } + return this._aabb; + } + clearShaders() { + const shaderCache = this._shaderCache; + for (let i = 0; i < shaderCache.length; i++) { + var _shaderCache$i; + (_shaderCache$i = shaderCache[i]) == null || _shaderCache$i.destroy(); + shaderCache[i] = null; + } + } + getShaderInstance(shaderPass, lightHash, scene2, viewUniformFormat, viewBindGroupFormat, sortedLights) { + let shaderInstance; + let passEntry = this._shaderCache[shaderPass]; + if (passEntry) { + shaderInstance = passEntry.shaderInstances.get(lightHash); + } else { + passEntry = new ShaderCacheEntry(); + this._shaderCache[shaderPass] = passEntry; + } + if (!shaderInstance) { + const mat = this._material; + const shaderDefs = this._shaderDefs; + const variantKey = shaderPass + "_" + shaderDefs + "_" + lightHash; + shaderInstance = new ShaderInstance(); + shaderInstance.shader = mat.variants.get(variantKey); + if (!shaderInstance.shader) { + var _this$_mesh$vertexBuf; + const shader = mat.getShaderVariant(this.mesh.device, scene2, shaderDefs, null, shaderPass, sortedLights, viewUniformFormat, viewBindGroupFormat, (_this$_mesh$vertexBuf = this._mesh.vertexBuffer) == null ? void 0 : _this$_mesh$vertexBuf.format); + mat.variants.set(variantKey, shader); + shaderInstance.shader = shader; + } + passEntry.shaderInstances.set(lightHash, shaderInstance); + } + return shaderInstance; + } + set material(material) { + this.clearShaders(); + const prevMat = this._material; + if (prevMat) { + prevMat.removeMeshInstanceRef(this); + } + this._material = material; + if (material) { + material.addMeshInstanceRef(this); + this.transparent = material.transparent; + this.updateKey(); + } + } + get material() { + return this._material; + } + set layer(layer) { + this._layer = layer; + this.updateKey(); + } + get layer() { + return this._layer; + } + _updateShaderDefs(shaderDefs) { + if (shaderDefs !== this._shaderDefs) { + this._shaderDefs = shaderDefs; + this.clearShaders(); + } + } + set calculateSortDistance(calculateSortDistance) { + this._calculateSortDistance = calculateSortDistance; + } + get calculateSortDistance() { + return this._calculateSortDistance; + } + set receiveShadow(val) { + if (this._receiveShadow !== val) { + this._receiveShadow = val; + this._updateShaderDefs(val ? this._shaderDefs & ~SHADERDEF_NOSHADOW : this._shaderDefs | SHADERDEF_NOSHADOW); + } + } + get receiveShadow() { + return this._receiveShadow; + } + set skinInstance(val) { + this._skinInstance = val; + this._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_SKIN : this._shaderDefs & ~SHADERDEF_SKIN); + this._setupSkinUpdate(); + } + get skinInstance() { + return this._skinInstance; + } + set morphInstance(val) { + var _this$_morphInstance; + (_this$_morphInstance = this._morphInstance) == null || _this$_morphInstance.destroy(); + this._morphInstance = val; + let shaderDefs = this._shaderDefs; + shaderDefs = val && val.morph.useTextureMorph ? shaderDefs | SHADERDEF_MORPH_TEXTURE_BASED : shaderDefs & ~SHADERDEF_MORPH_TEXTURE_BASED; + shaderDefs = val && val.morph.morphPositions ? shaderDefs | SHADERDEF_MORPH_POSITION : shaderDefs & ~SHADERDEF_MORPH_POSITION; + shaderDefs = val && val.morph.morphNormals ? shaderDefs | SHADERDEF_MORPH_NORMAL : shaderDefs & ~SHADERDEF_MORPH_NORMAL; + this._updateShaderDefs(shaderDefs); + } + get morphInstance() { + return this._morphInstance; + } + set screenSpace(val) { + if (this._screenSpace !== val) { + this._screenSpace = val; + this._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_SCREENSPACE : this._shaderDefs & ~SHADERDEF_SCREENSPACE); + } + } + get screenSpace() { + return this._screenSpace; + } + set key(val) { + this._key[SORTKEY_FORWARD] = val; + } + get key() { + return this._key[SORTKEY_FORWARD]; + } + set mask(val) { + const toggles = this._shaderDefs & 65535; + this._updateShaderDefs(toggles | val << 16); + } + get mask() { + return this._shaderDefs >> 16; + } + set instancingCount(value) { + if (this.instancingData) this.instancingData.count = value; + } + get instancingCount() { + return this.instancingData ? this.instancingData.count : 0; + } + destroy() { + var _this$_skinInstance, _this$morphInstance; + const mesh = this.mesh; + if (mesh) { + this.mesh = null; + if (mesh.refCount < 1) { + mesh.destroy(); + } + } + this.setRealtimeLightmap(_MeshInstance.lightmapParamNames[0], null); + this.setRealtimeLightmap(_MeshInstance.lightmapParamNames[1], null); + (_this$_skinInstance = this._skinInstance) == null || _this$_skinInstance.destroy(); + this._skinInstance = null; + (_this$morphInstance = this.morphInstance) == null || _this$morphInstance.destroy(); + this.morphInstance = null; + this.clearShaders(); + this.material = null; + } + static _prepareRenderStyleForArray(meshInstances, renderStyle) { + if (meshInstances) { + for (let i = 0; i < meshInstances.length; i++) { + meshInstances[i]._renderStyle = renderStyle; + const mesh = meshInstances[i].mesh; + if (!_meshSet.has(mesh)) { + _meshSet.add(mesh); + mesh.prepareRenderState(renderStyle); + } + } + _meshSet.clear(); + } + } + _isVisible(camera) { + if (this.visible) { + if (this.isVisibleFunc) { + return this.isVisibleFunc(camera); + } + _tempSphere.center = this.aabb.center; + _tempSphere.radius = this._aabb.halfExtents.length(); + return camera.frustum.containsSphere(_tempSphere); + } + return false; + } + updateKey() { + const material = this.material; + const blendType = material.alphaToCoverage || material.alphaTest ? BLEND_NORMAL : material.blendType; + this._key[SORTKEY_FORWARD] = (this.layer & 15) << 27 | (blendType === BLEND_NONE ? 1 : 0) << 26 | (material.id & 33554431) << 0; + } + setInstancing(vertexBuffer, cull = false) { + if (vertexBuffer) { + this.instancingData = new InstancingData(vertexBuffer.numVertices); + this.instancingData.vertexBuffer = vertexBuffer; + vertexBuffer.format.instancing = true; + this.cull = cull; + } else { + this.instancingData = null; + this.cull = true; + } + this._updateShaderDefs(vertexBuffer ? this._shaderDefs | SHADERDEF_INSTANCING : this._shaderDefs & ~SHADERDEF_INSTANCING); + } + ensureMaterial(device) { + if (!this.material) { + this.material = getDefaultMaterial(device); + } + } + clearParameters() { + this.parameters = {}; + } + getParameters() { + return this.parameters; + } + getParameter(name) { + return this.parameters[name]; + } + setParameter(name, data2, passFlags = -262141) { + if (data2 === void 0 && typeof name === "object") { + const uniformObject = name; + if (uniformObject.length) { + for (let i = 0; i < uniformObject.length; i++) { + this.setParameter(uniformObject[i]); + } + return; + } + name = uniformObject.name; + data2 = uniformObject.value; + } + const param = this.parameters[name]; + if (param) { + param.data = data2; + param.passFlags = passFlags; + } else { + this.parameters[name] = { + scopeId: null, + data: data2, + passFlags + }; + } + } + setRealtimeLightmap(name, texture) { + const old = this.getParameter(name); + if (old === texture) return; + if (old) { + LightmapCache.decRef(old.data); + } + if (texture) { + LightmapCache.incRef(texture); + this.setParameter(name, texture); + } else { + this.deleteParameter(name); + } + } + deleteParameter(name) { + if (this.parameters[name]) { + delete this.parameters[name]; + } + } + setParameters(device, passFlag) { + const parameters = this.parameters; + for (const paramName in parameters) { + const parameter = parameters[paramName]; + if (parameter.passFlags & passFlag) { + if (!parameter.scopeId) { + parameter.scopeId = device.scope.resolve(paramName); + } + parameter.scopeId.setValue(parameter.data); + } + } + } + setLightmapped(value) { + if (value) { + this.mask = (this.mask | MASK_AFFECT_LIGHTMAPPED) & ~(MASK_AFFECT_DYNAMIC | MASK_BAKE); + } else { + this.setRealtimeLightmap(_MeshInstance.lightmapParamNames[0], null); + this.setRealtimeLightmap(_MeshInstance.lightmapParamNames[1], null); + this._shaderDefs &= ~(SHADERDEF_LM | SHADERDEF_DIRLM | SHADERDEF_LMAMBIENT); + this.mask = (this.mask | MASK_AFFECT_DYNAMIC) & ~(MASK_AFFECT_LIGHTMAPPED | MASK_BAKE); + } + } + setCustomAabb(aabb) { + if (aabb) { + if (this._customAabb) { + this._customAabb.copy(aabb); + } else { + this._customAabb = aabb.clone(); + } + } else { + this._customAabb = null; + this._aabbVer = -1; + } + this._setupSkinUpdate(); + } + _setupSkinUpdate() { + if (this._skinInstance) { + this._skinInstance._updateBeforeCull = !this._customAabb; + } + } +}; +MeshInstance.lightmapParamNames = ["texture_lightMap", "texture_dirLightMap"]; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/render-pass-color-grab.js +var _colorUniformNames = ["uSceneColorMap", "texture_grabPass"]; +var RenderPassColorGrab = class extends RenderPass { + constructor(...args) { + super(...args); + this.colorRenderTarget = null; + this.source = null; + } + destroy() { + super.destroy(); + this.releaseRenderTarget(this.colorRenderTarget); + } + shouldReallocate(targetRT, sourceTexture, sourceFormat) { + const targetFormat = targetRT == null ? void 0 : targetRT.colorBuffer.format; + if (targetFormat !== sourceFormat) return true; + const width = (sourceTexture == null ? void 0 : sourceTexture.width) || this.device.width; + const height = (sourceTexture == null ? void 0 : sourceTexture.height) || this.device.height; + return !targetRT || width !== targetRT.width || height !== targetRT.height; + } + allocateRenderTarget(renderTarget, sourceRenderTarget, device, format) { + const mipmaps = device.isWebGL2; + const texture = new Texture(device, { + name: _colorUniformNames[0], + format, + width: sourceRenderTarget ? sourceRenderTarget.colorBuffer.width : device.width, + height: sourceRenderTarget ? sourceRenderTarget.colorBuffer.height : device.height, + mipmaps, + minFilter: mipmaps ? FILTER_LINEAR_MIPMAP_LINEAR : FILTER_LINEAR, + magFilter: FILTER_LINEAR, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + if (renderTarget) { + renderTarget.destroyFrameBuffers(); + renderTarget._colorBuffer = texture; + renderTarget._colorBuffers = [texture]; + } else { + renderTarget = new RenderTarget({ + name: "ColorGrabRT", + colorBuffer: texture, + depth: false, + stencil: false, + autoResolve: false + }); + } + return renderTarget; + } + releaseRenderTarget(rt) { + if (rt) { + rt.destroyTextureBuffers(); + rt.destroy(); + } + } + frameUpdate() { + var _sourceRt$colorBuffer; + const device = this.device; + const sourceRt = this.source; + const sourceFormat = (_sourceRt$colorBuffer = sourceRt == null ? void 0 : sourceRt.colorBuffer.format) != null ? _sourceRt$colorBuffer : this.device.backBufferFormat; + if (this.shouldReallocate(this.colorRenderTarget, sourceRt == null ? void 0 : sourceRt.colorBuffer, sourceFormat)) { + this.releaseRenderTarget(this.colorRenderTarget); + this.colorRenderTarget = this.allocateRenderTarget(this.colorRenderTarget, sourceRt, device, sourceFormat); + } + const colorBuffer = this.colorRenderTarget.colorBuffer; + _colorUniformNames.forEach((name) => device.scope.resolve(name).setValue(colorBuffer)); + } + execute() { + const device = this.device; + const sourceRt = this.source; + const colorBuffer = this.colorRenderTarget.colorBuffer; + if (device.isWebGPU) { + device.copyRenderTarget(sourceRt, this.colorRenderTarget, true, false); + device.mipmapRenderer.generate(this.colorRenderTarget.colorBuffer.impl); + } else if (device.isWebGL2) { + device.copyRenderTarget(sourceRt, this.colorRenderTarget, true, false); + device.activeTexture(device.maxCombinedTextures - 1); + device.bindTexture(colorBuffer); + device.gl.generateMipmap(colorBuffer.impl._glTarget); + } else { + if (!colorBuffer.impl._glTexture) { + colorBuffer.impl.initialize(device, colorBuffer); + } + device.bindTexture(colorBuffer); + const gl = device.gl; + gl.copyTexImage2D(gl.TEXTURE_2D, 0, colorBuffer.impl._glFormat, 0, 0, colorBuffer.width, colorBuffer.height, 0); + colorBuffer._needsUpload = false; + colorBuffer._needsMipmapsUpload = false; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/render-pass-depth-grab.js +var _depthUniformNames = ["uSceneDepthMap", "uDepthMap"]; +var RenderPassDepthGrab = class extends RenderPass { + constructor(device, camera) { + super(device); + this.depthRenderTarget = null; + this.camera = null; + this.camera = camera; + } + destroy() { + super.destroy(); + this.releaseRenderTarget(this.depthRenderTarget); + } + shouldReallocate(targetRT, sourceTexture) { + const width = (sourceTexture == null ? void 0 : sourceTexture.width) || this.device.width; + const height = (sourceTexture == null ? void 0 : sourceTexture.height) || this.device.height; + return !targetRT || width !== targetRT.width || height !== targetRT.height; + } + allocateRenderTarget(renderTarget, sourceRenderTarget, device, format, isDepth) { + const texture = new Texture(device, { + name: _depthUniformNames[0], + format, + width: sourceRenderTarget ? sourceRenderTarget.colorBuffer.width : device.width, + height: sourceRenderTarget ? sourceRenderTarget.colorBuffer.height : device.height, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + if (renderTarget) { + renderTarget.destroyFrameBuffers(); + if (isDepth) { + renderTarget._depthBuffer = texture; + } else { + renderTarget._colorBuffer = texture; + renderTarget._colorBuffers = [texture]; + } + } else { + renderTarget = new RenderTarget({ + name: "DepthGrabRT", + colorBuffer: isDepth ? null : texture, + depthBuffer: isDepth ? texture : null, + depth: !isDepth, + stencil: device.supportsStencil, + autoResolve: false + }); + } + return renderTarget; + } + releaseRenderTarget(rt) { + if (rt) { + rt.destroyTextureBuffers(); + rt.destroy(); + } + } + before() { + var _camera$renderTarget, _camera$renderTarget$, _camera$renderTarget2, _camera$renderTarget3; + const camera = this.camera; + const device = this.device; + const destinationRt = (_camera$renderTarget = camera == null ? void 0 : camera.renderTarget) != null ? _camera$renderTarget : device.backBuffer; + let useDepthBuffer = true; + let format = destinationRt.stencil ? PIXELFORMAT_DEPTHSTENCIL : PIXELFORMAT_DEPTH; + if (device.isWebGPU) { + const numSamples = destinationRt.samples; + if (numSamples > 1) { + format = PIXELFORMAT_R32F; + useDepthBuffer = false; + } + } + const sourceTexture = (_camera$renderTarget$ = (_camera$renderTarget2 = camera.renderTarget) == null ? void 0 : _camera$renderTarget2.depthBuffer) != null ? _camera$renderTarget$ : (_camera$renderTarget3 = camera.renderTarget) == null ? void 0 : _camera$renderTarget3.colorBuffer; + if (this.shouldReallocate(this.depthRenderTarget, sourceTexture)) { + this.releaseRenderTarget(this.depthRenderTarget); + this.depthRenderTarget = this.allocateRenderTarget(this.depthRenderTarget, camera.renderTarget, device, format, useDepthBuffer); + } + const colorBuffer = useDepthBuffer ? this.depthRenderTarget.depthBuffer : this.depthRenderTarget.colorBuffer; + _depthUniformNames.forEach((name) => device.scope.resolve(name).setValue(colorBuffer)); + } + execute() { + const device = this.device; + if (device.isWebGL2 && device.renderTarget.samples > 1) { + const src = device.renderTarget.impl._glFrameBuffer; + const dest = this.depthRenderTarget; + device.renderTarget = dest; + device.updateBegin(); + this.depthRenderTarget.impl.internalResolve(device, src, dest.impl._glFrameBuffer, this.depthRenderTarget, device.gl.DEPTH_BUFFER_BIT); + } else { + device.copyRenderTarget(device.renderTarget, this.depthRenderTarget, false, true); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/render-pass-depth.js +var webgl1DepthClearColor = new Color(254 / 255, 254 / 255, 254 / 255, 254 / 255); +var tempMeshInstances = []; +var lights = [[], [], []]; +var _depthUniformNames2 = ["uSceneDepthMap", "uDepthMap"]; +var RenderPassDepth = class extends RenderPass { + constructor(device, renderer, camera) { + super(device); + this.renderer = renderer; + this.camera = camera; + this.setupRenderTarget(); + } + destroy() { + super.destroy(); + if (this.renderTarget) { + this.renderTarget.destroyTextureBuffers(); + this.renderTarget.destroy(); + this.renderTarget = null; + } + } + update(scene2) { + this.scene = scene2; + } + setupRenderTarget() { + const texture = new Texture(this.device, { + name: _depthUniformNames2[0], + format: PIXELFORMAT_RGBA8, + width: 4, + height: 4, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + const renderTarget = new RenderTarget({ + name: `${_depthUniformNames2[0]}RT}`, + colorBuffer: texture, + depth: true, + stencil: false + }); + this.init(renderTarget, {}); + this.setClearColor(webgl1DepthClearColor); + this.setClearDepth(1); + } + before() { + const device = this.device; + const colorBuffer = this.renderTarget.colorBuffer; + _depthUniformNames2.forEach((name) => device.scope.resolve(name).setValue(colorBuffer)); + } + execute() { + const { + device, + renderer, + camera, + scene: scene2, + renderTarget + } = this; + const layers = scene2.layers.layerList; + const subLayerEnabled = scene2.layers.subLayerEnabled; + const isTransparent = scene2.layers.subLayerList; + for (let i = 0; i < layers.length; i++) { + const layer = layers[i]; + if (layer.enabled && subLayerEnabled[i]) { + if (layer.camerasSet.has(camera)) { + if (layer.id === LAYERID_DEPTH) break; + const culledInstances = layer.getCulledInstances(camera); + const meshInstances = isTransparent[i] ? culledInstances.transparent : culledInstances.opaque; + for (let j = 0; j < meshInstances.length; j++) { + var _meshInstance$materia; + const meshInstance = meshInstances[j]; + if ((_meshInstance$materia = meshInstance.material) != null && _meshInstance$materia.depthWrite) { + tempMeshInstances.push(meshInstance); + } + } + renderer.setCameraUniforms(camera, renderTarget); + renderer.renderForward(camera, tempMeshInstances, lights, SHADER_DEPTH, (meshInstance) => { + device.setBlendState(BlendState.NOBLEND); + }, layer); + tempMeshInstances.length = 0; + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/camera.js +var _deviceCoord = new Vec3(); +var _halfSize2 = new Vec3(); +var _point = new Vec3(); +var _invViewProjMat = new Mat4(); +var _frustumPoints = [new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3()]; +var Camera = class _Camera { + constructor() { + this.shaderPassInfo = null; + this.renderPassColorGrab = null; + this.renderPassDepthGrab = null; + this.renderPasses = []; + this.jitter = 0; + this._aspectRatio = 16 / 9; + this._aspectRatioMode = ASPECT_AUTO; + this._calculateProjection = null; + this._calculateTransform = null; + this._clearColor = new Color(0.75, 0.75, 0.75, 1); + this._clearColorBuffer = true; + this._clearDepth = 1; + this._clearDepthBuffer = true; + this._clearStencil = 0; + this._clearStencilBuffer = true; + this._cullFaces = true; + this._farClip = 1e3; + this._flipFaces = false; + this._fov = 45; + this._frustumCulling = true; + this._horizontalFov = false; + this._layers = [LAYERID_WORLD, LAYERID_DEPTH, LAYERID_SKYBOX, LAYERID_UI, LAYERID_IMMEDIATE]; + this._layersSet = new Set(this._layers); + this._nearClip = 0.1; + this._node = null; + this._orthoHeight = 10; + this._projection = PROJECTION_PERSPECTIVE; + this._rect = new Vec4(0, 0, 1, 1); + this._renderTarget = null; + this._scissorRect = new Vec4(0, 0, 1, 1); + this._scissorRectClear = false; + this._aperture = 16; + this._shutter = 1 / 1e3; + this._sensitivity = 1e3; + this._projMat = new Mat4(); + this._projMatDirty = true; + this._projMatSkybox = new Mat4(); + this._viewMat = new Mat4(); + this._viewMatDirty = true; + this._viewProjMat = new Mat4(); + this._viewProjMatDirty = true; + this._shaderMatricesVersion = 0; + this._viewProjInverse = new Mat4(); + this._viewProjCurrent = null; + this._viewProjPrevious = new Mat4(); + this._jitters = [0, 0, 0, 0]; + this.frustum = new Frustum(); + this._xr = null; + this._xrProperties = { + horizontalFov: this._horizontalFov, + fov: this._fov, + aspectRatio: this._aspectRatio, + farClip: this._farClip, + nearClip: this._nearClip + }; + } + destroy() { + var _this$renderPassColor, _this$renderPassDepth; + (_this$renderPassColor = this.renderPassColorGrab) == null || _this$renderPassColor.destroy(); + this.renderPassColorGrab = null; + (_this$renderPassDepth = this.renderPassDepthGrab) == null || _this$renderPassDepth.destroy(); + this.renderPassDepthGrab = null; + this.renderPasses.length = 0; + } + _storeShaderMatrices(viewProjMat2, jitterX, jitterY, renderVersion) { + if (this._shaderMatricesVersion !== renderVersion) { + var _this$_viewProjCurren, _this$_viewProjCurren2; + this._shaderMatricesVersion = renderVersion; + this._viewProjPrevious.copy((_this$_viewProjCurren = this._viewProjCurrent) != null ? _this$_viewProjCurren : viewProjMat2); + (_this$_viewProjCurren2 = this._viewProjCurrent) != null ? _this$_viewProjCurren2 : this._viewProjCurrent = new Mat4(); + this._viewProjCurrent.copy(viewProjMat2); + this._viewProjInverse.invert(viewProjMat2); + this._jitters[2] = this._jitters[0]; + this._jitters[3] = this._jitters[1]; + this._jitters[0] = jitterX; + this._jitters[1] = jitterY; + } + } + get fullSizeClearRect() { + const rect = this._scissorRectClear ? this.scissorRect : this._rect; + return rect.x === 0 && rect.y === 0 && rect.z === 1 && rect.w === 1; + } + set aspectRatio(newValue) { + if (this._aspectRatio !== newValue) { + this._aspectRatio = newValue; + this._projMatDirty = true; + } + } + get aspectRatio() { + var _this$xr; + return (_this$xr = this.xr) != null && _this$xr.active ? this._xrProperties.aspectRatio : this._aspectRatio; + } + set aspectRatioMode(newValue) { + if (this._aspectRatioMode !== newValue) { + this._aspectRatioMode = newValue; + this._projMatDirty = true; + } + } + get aspectRatioMode() { + return this._aspectRatioMode; + } + set calculateProjection(newValue) { + this._calculateProjection = newValue; + this._projMatDirty = true; + } + get calculateProjection() { + return this._calculateProjection; + } + set calculateTransform(newValue) { + this._calculateTransform = newValue; + } + get calculateTransform() { + return this._calculateTransform; + } + set clearColor(newValue) { + this._clearColor.copy(newValue); + } + get clearColor() { + return this._clearColor; + } + set clearColorBuffer(newValue) { + this._clearColorBuffer = newValue; + } + get clearColorBuffer() { + return this._clearColorBuffer; + } + set clearDepth(newValue) { + this._clearDepth = newValue; + } + get clearDepth() { + return this._clearDepth; + } + set clearDepthBuffer(newValue) { + this._clearDepthBuffer = newValue; + } + get clearDepthBuffer() { + return this._clearDepthBuffer; + } + set clearStencil(newValue) { + this._clearStencil = newValue; + } + get clearStencil() { + return this._clearStencil; + } + set clearStencilBuffer(newValue) { + this._clearStencilBuffer = newValue; + } + get clearStencilBuffer() { + return this._clearStencilBuffer; + } + set cullFaces(newValue) { + this._cullFaces = newValue; + } + get cullFaces() { + return this._cullFaces; + } + set farClip(newValue) { + if (this._farClip !== newValue) { + this._farClip = newValue; + this._projMatDirty = true; + } + } + get farClip() { + var _this$xr2; + return (_this$xr2 = this.xr) != null && _this$xr2.active ? this._xrProperties.farClip : this._farClip; + } + set flipFaces(newValue) { + this._flipFaces = newValue; + } + get flipFaces() { + return this._flipFaces; + } + set fov(newValue) { + if (this._fov !== newValue) { + this._fov = newValue; + this._projMatDirty = true; + } + } + get fov() { + var _this$xr3; + return (_this$xr3 = this.xr) != null && _this$xr3.active ? this._xrProperties.fov : this._fov; + } + set frustumCulling(newValue) { + this._frustumCulling = newValue; + } + get frustumCulling() { + return this._frustumCulling; + } + set horizontalFov(newValue) { + if (this._horizontalFov !== newValue) { + this._horizontalFov = newValue; + this._projMatDirty = true; + } + } + get horizontalFov() { + var _this$xr4; + return (_this$xr4 = this.xr) != null && _this$xr4.active ? this._xrProperties.horizontalFov : this._horizontalFov; + } + set layers(newValue) { + this._layers = newValue.slice(0); + this._layersSet = new Set(this._layers); + } + get layers() { + return this._layers; + } + get layersSet() { + return this._layersSet; + } + set nearClip(newValue) { + if (this._nearClip !== newValue) { + this._nearClip = newValue; + this._projMatDirty = true; + } + } + get nearClip() { + var _this$xr5; + return (_this$xr5 = this.xr) != null && _this$xr5.active ? this._xrProperties.nearClip : this._nearClip; + } + set node(newValue) { + this._node = newValue; + } + get node() { + return this._node; + } + set orthoHeight(newValue) { + if (this._orthoHeight !== newValue) { + this._orthoHeight = newValue; + this._projMatDirty = true; + } + } + get orthoHeight() { + return this._orthoHeight; + } + set projection(newValue) { + if (this._projection !== newValue) { + this._projection = newValue; + this._projMatDirty = true; + } + } + get projection() { + return this._projection; + } + get projectionMatrix() { + this._evaluateProjectionMatrix(); + return this._projMat; + } + set rect(newValue) { + this._rect.copy(newValue); + } + get rect() { + return this._rect; + } + set renderTarget(newValue) { + this._renderTarget = newValue; + } + get renderTarget() { + return this._renderTarget; + } + set scissorRect(newValue) { + this._scissorRect.copy(newValue); + } + get scissorRect() { + return this._scissorRect; + } + get viewMatrix() { + if (this._viewMatDirty) { + const wtm = this._node.getWorldTransform(); + this._viewMat.copy(wtm).invert(); + this._viewMatDirty = false; + } + return this._viewMat; + } + set aperture(newValue) { + this._aperture = newValue; + } + get aperture() { + return this._aperture; + } + set sensitivity(newValue) { + this._sensitivity = newValue; + } + get sensitivity() { + return this._sensitivity; + } + set shutter(newValue) { + this._shutter = newValue; + } + get shutter() { + return this._shutter; + } + set xr(newValue) { + if (this._xr !== newValue) { + this._xr = newValue; + this._projMatDirty = true; + } + } + get xr() { + return this._xr; + } + clone() { + return new _Camera().copy(this); + } + copy(other) { + this._aspectRatio = other._aspectRatio; + this._farClip = other._farClip; + this._fov = other._fov; + this._horizontalFov = other._horizontalFov; + this._nearClip = other._nearClip; + this._xrProperties.aspectRatio = other._xrProperties.aspectRatio; + this._xrProperties.farClip = other._xrProperties.farClip; + this._xrProperties.fov = other._xrProperties.fov; + this._xrProperties.horizontalFov = other._xrProperties.horizontalFov; + this._xrProperties.nearClip = other._xrProperties.nearClip; + this.aspectRatioMode = other.aspectRatioMode; + this.calculateProjection = other.calculateProjection; + this.calculateTransform = other.calculateTransform; + this.clearColor = other.clearColor; + this.clearColorBuffer = other.clearColorBuffer; + this.clearDepth = other.clearDepth; + this.clearDepthBuffer = other.clearDepthBuffer; + this.clearStencil = other.clearStencil; + this.clearStencilBuffer = other.clearStencilBuffer; + this.cullFaces = other.cullFaces; + this.flipFaces = other.flipFaces; + this.frustumCulling = other.frustumCulling; + this.layers = other.layers; + this.orthoHeight = other.orthoHeight; + this.projection = other.projection; + this.rect = other.rect; + this.renderTarget = other.renderTarget; + this.scissorRect = other.scissorRect; + this.aperture = other.aperture; + this.shutter = other.shutter; + this.sensitivity = other.sensitivity; + this.shaderPassInfo = other.shaderPassInfo; + this.jitter = other.jitter; + this._projMatDirty = true; + return this; + } + _enableRenderPassColorGrab(device, enable) { + if (enable) { + if (!this.renderPassColorGrab) { + this.renderPassColorGrab = new RenderPassColorGrab(device); + } + } else { + var _this$renderPassColor2; + (_this$renderPassColor2 = this.renderPassColorGrab) == null || _this$renderPassColor2.destroy(); + this.renderPassColorGrab = null; + } + } + _enableRenderPassDepthGrab(device, renderer, enable) { + if (enable) { + if (!this.renderPassDepthGrab) { + this.renderPassDepthGrab = device.isWebGL1 ? new RenderPassDepth(device, renderer, this) : new RenderPassDepthGrab(device, this); + } + } else { + var _this$renderPassDepth2; + (_this$renderPassDepth2 = this.renderPassDepthGrab) == null || _this$renderPassDepth2.destroy(); + this.renderPassDepthGrab = null; + } + } + _updateViewProjMat() { + if (this._projMatDirty || this._viewMatDirty || this._viewProjMatDirty) { + this._viewProjMat.mul2(this.projectionMatrix, this.viewMatrix); + this._viewProjMatDirty = false; + } + } + worldToScreen(worldCoord, cw, ch, screenCoord = new Vec3()) { + this._updateViewProjMat(); + this._viewProjMat.transformPoint(worldCoord, screenCoord); + const vpm = this._viewProjMat.data; + const w = worldCoord.x * vpm[3] + worldCoord.y * vpm[7] + worldCoord.z * vpm[11] + 1 * vpm[15]; + screenCoord.x = (screenCoord.x / w + 1) * 0.5 * cw; + screenCoord.y = (1 - screenCoord.y / w) * 0.5 * ch; + return screenCoord; + } + screenToWorld(x2, y2, z2, cw, ch, worldCoord = new Vec3()) { + const range = this.farClip - this.nearClip; + _deviceCoord.set(x2 / cw, (ch - y2) / ch, z2 / range); + _deviceCoord.mulScalar(2); + _deviceCoord.sub(Vec3.ONE); + if (this._projection === PROJECTION_PERSPECTIVE) { + Mat4._getPerspectiveHalfSize(_halfSize2, this.fov, this.aspectRatio, this.nearClip, this.horizontalFov); + _halfSize2.x *= _deviceCoord.x; + _halfSize2.y *= _deviceCoord.y; + const invView = this._node.getWorldTransform(); + _halfSize2.z = -this.nearClip; + invView.transformPoint(_halfSize2, _point); + const cameraPos = this._node.getPosition(); + worldCoord.sub2(_point, cameraPos); + worldCoord.normalize(); + worldCoord.mulScalar(z2); + worldCoord.add(cameraPos); + } else { + this._updateViewProjMat(); + _invViewProjMat.copy(this._viewProjMat).invert(); + _invViewProjMat.transformPoint(_deviceCoord, worldCoord); + } + return worldCoord; + } + _evaluateProjectionMatrix() { + if (this._projMatDirty) { + if (this._projection === PROJECTION_PERSPECTIVE) { + this._projMat.setPerspective(this.fov, this.aspectRatio, this.nearClip, this.farClip, this.horizontalFov); + this._projMatSkybox.copy(this._projMat); + } else { + const y2 = this._orthoHeight; + const x2 = y2 * this.aspectRatio; + this._projMat.setOrtho(-x2, x2, -y2, y2, this.nearClip, this.farClip); + this._projMatSkybox.setPerspective(this.fov, this.aspectRatio, this.nearClip, this.farClip); + } + this._projMatDirty = false; + } + } + getProjectionMatrixSkybox() { + this._evaluateProjectionMatrix(); + return this._projMatSkybox; + } + getExposure() { + const ev100 = Math.log2(this._aperture * this._aperture / this._shutter * 100 / this._sensitivity); + return 1 / (Math.pow(2, ev100) * 1.2); + } + getScreenSize(sphere) { + if (this._projection === PROJECTION_PERSPECTIVE) { + const distance = this._node.getPosition().distance(sphere.center); + if (distance < sphere.radius) { + return 1; + } + const viewAngle = Math.asin(sphere.radius / distance); + const sphereViewHeight = Math.tan(viewAngle); + const screenViewHeight = Math.tan(this.fov / 2 * math.DEG_TO_RAD); + return Math.min(sphereViewHeight / screenViewHeight, 1); + } + return math.clamp(sphere.radius / this._orthoHeight, 0, 1); + } + getFrustumCorners(near = this.nearClip, far = this.farClip) { + const fov = this.fov * Math.PI / 180; + let y2 = this._projection === PROJECTION_PERSPECTIVE ? Math.tan(fov / 2) * near : this._orthoHeight; + let x2 = y2 * this.aspectRatio; + const points = _frustumPoints; + points[0].x = x2; + points[0].y = -y2; + points[0].z = -near; + points[1].x = x2; + points[1].y = y2; + points[1].z = -near; + points[2].x = -x2; + points[2].y = y2; + points[2].z = -near; + points[3].x = -x2; + points[3].y = -y2; + points[3].z = -near; + if (this._projection === PROJECTION_PERSPECTIVE) { + y2 = Math.tan(fov / 2) * far; + x2 = y2 * this.aspectRatio; + } + points[4].x = x2; + points[4].y = -y2; + points[4].z = -far; + points[5].x = x2; + points[5].y = y2; + points[5].z = -far; + points[6].x = -x2; + points[6].y = y2; + points[6].z = -far; + points[7].x = -x2; + points[7].y = -y2; + points[7].z = -far; + return points; + } + setXrProperties(properties2) { + Object.assign(this._xrProperties, properties2); + this._projMatDirty = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/lit-shader-options.js +var LitShaderOptions = class { + constructor() { + this.hasTangents = false; + this.chunks = {}; + this.pass = 0; + this.alphaTest = false; + this.blendType = BLEND_NONE; + this.separateAmbient = false; + this.screenSpace = false; + this.skin = false; + this.useInstancing = false; + this.useMorphPosition = false; + this.useMorphNormal = false; + this.useMorphTextureBased = false; + this.nineSlicedMode = 0; + this.clusteredLightingEnabled = true; + this.clusteredLightingCookiesEnabled = false; + this.clusteredLightingShadowsEnabled = false; + this.clusteredLightingShadowType = 0; + this.clusteredLightingAreaLightsEnabled = false; + this.vertexColors = false; + this.lightMapEnabled = false; + this.dirLightMapEnabled = false; + this.useHeights = false; + this.useNormals = false; + this.useClearCoatNormals = false; + this.useAo = false; + this.diffuseMapEnabled = false; + this.useAmbientTint = false; + this.customFragmentShader = null; + this.pixelSnap = false; + this.shadingModel = 0; + this.ambientSH = false; + this.fastTbn = false; + this.twoSidedLighting = false; + this.occludeDirect = false; + this.occludeSpecular = 0; + this.occludeSpecularFloat = false; + this.useMsdf = false; + this.msdfTextAttribute = false; + this.alphaToCoverage = false; + this.opacityFadesSpecular = false; + this.opacityDither = DITHER_NONE; + this.opacityShadowDither = DITHER_NONE; + this.cubeMapProjection = 0; + this.conserveEnergy = false; + this.useSpecular = false; + this.useSpecularityFactor = false; + this.enableGGXSpecular = false; + this.fresnelModel = 0; + this.useRefraction = false; + this.useClearCoat = false; + this.useSheen = false; + this.useIridescence = false; + this.useMetalness = false; + this.useDynamicRefraction = false; + this.dispersion = false; + this.fog = FOG_NONE; + this.gamma = GAMMA_NONE; + this.toneMap = -1; + this.fixSeams = false; + this.reflectionSource = null; + this.reflectionEncoding = null; + this.reflectionCubemapEncoding = null; + this.ambientSource = "constant"; + this.ambientEncoding = null; + this.skyboxIntensity = 1; + this.useCubeMapRotation = false; + this.lightMapWithoutAmbient = false; + this.lights = []; + this.noShadow = false; + this.lightMaskDynamic = 0; + this.userAttributes = {}; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/materials/lit-material-options-builder.js +var LitMaterialOptionsBuilder = class _LitMaterialOptionsBuilder { + static update(litOptions, material, scene2, objDefs, pass, sortedLights) { + _LitMaterialOptionsBuilder.updateSharedOptions(litOptions, material, scene2, objDefs, pass); + _LitMaterialOptionsBuilder.updateMaterialOptions(litOptions, material); + _LitMaterialOptionsBuilder.updateEnvOptions(litOptions, material, scene2); + _LitMaterialOptionsBuilder.updateLightingOptions(litOptions, material, objDefs, sortedLights); + if (pass === SHADER_FORWARDHDR) { + litOptions.gamma = GAMMA_SRGBHDR; + litOptions.toneMap = TONEMAP_LINEAR; + } + } + static updateSharedOptions(litOptions, material, scene2, objDefs, pass) { + litOptions.chunks = material.chunks; + litOptions.pass = pass; + litOptions.alphaTest = material.alphaTest > 0; + litOptions.blendType = material.blendType; + litOptions.screenSpace = objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0; + litOptions.skin = objDefs && (objDefs & SHADERDEF_SKIN) !== 0; + litOptions.useInstancing = objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0; + litOptions.useMorphPosition = objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0; + litOptions.useMorphNormal = objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0; + litOptions.useMorphTextureBased = objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED) !== 0; + litOptions.hasTangents = objDefs && (objDefs & SHADERDEF_TANGENTS) !== 0; + litOptions.nineSlicedMode = material.nineSlicedMode || SPRITE_RENDERMODE_SIMPLE; + if (material.useLighting && scene2.clusteredLightingEnabled) { + litOptions.clusteredLightingEnabled = true; + litOptions.clusteredLightingCookiesEnabled = scene2.lighting.cookiesEnabled; + litOptions.clusteredLightingShadowsEnabled = scene2.lighting.shadowsEnabled; + litOptions.clusteredLightingShadowType = scene2.lighting.shadowType; + litOptions.clusteredLightingAreaLightsEnabled = scene2.lighting.areaLightsEnabled; + } else { + litOptions.clusteredLightingEnabled = false; + litOptions.clusteredLightingCookiesEnabled = false; + litOptions.clusteredLightingShadowsEnabled = false; + litOptions.clusteredLightingAreaLightsEnabled = false; + } + } + static updateMaterialOptions(litOptions, material) { + litOptions.useAmbientTint = false; + litOptions.separateAmbient = false; + litOptions.customFragmentShader = null; + litOptions.pixelSnap = material.pixelSnap; + litOptions.shadingModel = material.shadingModel; + litOptions.ambientSH = material.ambientSH; + litOptions.fastTbn = material.fastTbn; + litOptions.twoSidedLighting = material.twoSidedLighting; + litOptions.occludeDirect = material.occludeDirect; + litOptions.occludeSpecular = material.occludeSpecular; + litOptions.occludeSpecularFloat = material.occludeSpecularIntensity !== 1; + litOptions.useMsdf = false; + litOptions.msdfTextAttribute = false; + litOptions.alphaToCoverage = material.alphaToCoverage; + litOptions.opacityFadesSpecular = material.opacityFadesSpecular; + litOptions.opacityDither = material.opacityDither; + litOptions.cubeMapProjection = CUBEPROJ_NONE; + litOptions.conserveEnergy = material.conserveEnergy && material.shadingModel === SPECULAR_BLINN; + litOptions.useSpecular = material.hasSpecular; + litOptions.useSpecularityFactor = material.hasSpecularityFactor; + litOptions.enableGGXSpecular = material.ggxSpecular; + litOptions.fresnelModel = material.fresnelModel; + litOptions.useRefraction = material.hasRefraction; + litOptions.useClearCoat = material.hasClearCoat; + litOptions.useSheen = material.hasSheen; + litOptions.useIridescence = material.hasIrridescence; + litOptions.useMetalness = material.hasMetalness; + litOptions.useDynamicRefraction = material.dynamicRefraction; + litOptions.dispersion = material.dispersion > 0; + litOptions.vertexColors = false; + litOptions.lightMapEnabled = material.hasLighting; + litOptions.dirLightMapEnabled = material.dirLightMap; + litOptions.useHeights = material.hasHeights; + litOptions.useNormals = material.hasNormals; + litOptions.useClearCoatNormals = material.hasClearCoatNormals; + litOptions.useAo = material.hasAo; + litOptions.diffuseMapEnabled = material.hasDiffuseMap; + } + static updateEnvOptions(litOptions, material, scene2) { + litOptions.fog = material.useFog ? scene2.fog : "none"; + litOptions.gamma = material.useGammaTonemap ? scene2.gammaCorrection : GAMMA_NONE; + litOptions.toneMap = material.useGammaTonemap ? scene2.toneMapping : -1; + litOptions.fixSeams = false; + if (material.useSkybox && scene2.envAtlas && scene2.skybox) { + litOptions.reflectionSource = "envAtlasHQ"; + litOptions.reflectionEncoding = scene2.envAtlas.encoding; + litOptions.reflectionCubemapEncoding = scene2.skybox.encoding; + } else if (material.useSkybox && scene2.envAtlas) { + litOptions.reflectionSource = "envAtlas"; + litOptions.reflectionEncoding = scene2.envAtlas.encoding; + } else if (material.useSkybox && scene2.skybox) { + litOptions.reflectionSource = "cubeMap"; + litOptions.reflectionEncoding = scene2.skybox.encoding; + } else { + litOptions.reflectionSource = null; + litOptions.reflectionEncoding = null; + } + if (material.ambientSH) { + litOptions.ambientSource = "ambientSH"; + litOptions.ambientEncoding = null; + } else if (litOptions.reflectionSource && scene2.envAtlas) { + litOptions.ambientSource = "envAtlas"; + litOptions.ambientEncoding = scene2.envAtlas.encoding; + } else { + litOptions.ambientSource = "constant"; + litOptions.ambientEncoding = null; + } + const hasSkybox = !!litOptions.reflectionSource; + litOptions.skyboxIntensity = hasSkybox; + litOptions.useCubeMapRotation = hasSkybox && scene2._skyboxRotationShaderInclude; + } + static updateLightingOptions(litOptions, material, objDefs, sortedLights) { + litOptions.lightMapWithoutAmbient = false; + if (material.useLighting) { + const lightsFiltered = []; + const mask = objDefs ? objDefs >> 16 : MASK_AFFECT_DYNAMIC; + litOptions.lightMaskDynamic = !!(mask & MASK_AFFECT_DYNAMIC); + litOptions.lightMapWithoutAmbient = false; + if (sortedLights) { + _LitMaterialOptionsBuilder.collectLights(LIGHTTYPE_DIRECTIONAL, sortedLights[LIGHTTYPE_DIRECTIONAL], lightsFiltered, mask); + _LitMaterialOptionsBuilder.collectLights(LIGHTTYPE_OMNI, sortedLights[LIGHTTYPE_OMNI], lightsFiltered, mask); + _LitMaterialOptionsBuilder.collectLights(LIGHTTYPE_SPOT, sortedLights[LIGHTTYPE_SPOT], lightsFiltered, mask); + } + litOptions.lights = lightsFiltered; + } else { + litOptions.lights = []; + } + if (litOptions.lights.length === 0 || (objDefs & SHADERDEF_NOSHADOW) !== 0) { + litOptions.noShadow = true; + } + } + static collectLights(lType, lights2, lightsFiltered, mask) { + for (let i = 0; i < lights2.length; i++) { + const light = lights2[i]; + if (light.enabled) { + if (light.mask & mask) { + lightsFiltered.push(light); + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunk-builder.js +var ChunkBuilder = class { + constructor() { + this.code = ""; + } + append(...chunks) { + chunks.forEach((chunk) => { + if (chunk.endsWith("\n")) { + this.code += chunk; + } else { + this.code += chunk + "\n"; + } + }); + } + prepend(...chunks) { + chunks.forEach((chunk) => { + if (chunk.endsWith("\n")) { + this.code = chunk + this.code; + } else { + this.code = chunk + "\n" + this.code; + } + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunk-utils.js +var decodeTable = { + "linear": "decodeLinear", + "srgb": "decodeGamma", + "rgbm": "decodeRGBM", + "rgbe": "decodeRGBE", + "rgbp": "decodeRGBP" +}; +var encodeTable = { + "linear": "encodeLinear", + "srgb": "encodeGamma", + "rgbm": "encodeRGBM", + "rgbe": "encodeRGBE", + "rgbp": "encodeRGBP" +}; +var ChunkUtils = class { + static decodeFunc(encoding) { + return decodeTable[encoding] || "decodeGamma"; + } + static encodeFunc(encoding) { + return encodeTable[encoding] || "encodeGamma"; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/light-camera.js +var _viewMat = new Mat4(); +var _viewProjMat = new Mat4(); +var _viewportMatrix = new Mat4(); +var LightCamera = class _LightCamera { + static create(name, lightType, face) { + const camera = new Camera(); + camera.node = new GraphNode(name); + camera.aspectRatio = 1; + camera.aspectRatioMode = ASPECT_MANUAL; + camera._scissorRectClear = true; + switch (lightType) { + case LIGHTTYPE_OMNI: + camera.node.setRotation(_LightCamera.pointLightRotations[face]); + camera.fov = 90; + camera.projection = PROJECTION_PERSPECTIVE; + break; + case LIGHTTYPE_SPOT: + camera.projection = PROJECTION_PERSPECTIVE; + break; + case LIGHTTYPE_DIRECTIONAL: + camera.projection = PROJECTION_ORTHOGRAPHIC; + break; + } + return camera; + } + static evalSpotCookieMatrix(light) { + let cookieCamera = _LightCamera._spotCookieCamera; + if (!cookieCamera) { + cookieCamera = _LightCamera.create("SpotCookieCamera", LIGHTTYPE_SPOT); + _LightCamera._spotCookieCamera = cookieCamera; + } + cookieCamera.fov = light._outerConeAngle * 2; + const cookieNode = cookieCamera._node; + cookieNode.setPosition(light._node.getPosition()); + cookieNode.setRotation(light._node.getRotation()); + cookieNode.rotateLocal(-90, 0, 0); + _viewMat.setTRS(cookieNode.getPosition(), cookieNode.getRotation(), Vec3.ONE).invert(); + _viewProjMat.mul2(cookieCamera.projectionMatrix, _viewMat); + const cookieMatrix = light.cookieMatrix; + const rectViewport = light.atlasViewport; + _viewportMatrix.setViewport(rectViewport.x, rectViewport.y, rectViewport.z, rectViewport.w); + cookieMatrix.mul2(_viewportMatrix, _viewProjMat); + return cookieMatrix; + } +}; +LightCamera.pointLightRotations = [new Quat2().setFromEulerAngles(0, 90, 180), new Quat2().setFromEulerAngles(0, -90, 180), new Quat2().setFromEulerAngles(90, 0, 0), new Quat2().setFromEulerAngles(-90, 0, 0), new Quat2().setFromEulerAngles(0, 180, 180), new Quat2().setFromEulerAngles(0, 0, 180)]; +LightCamera._spotCookieCamera = null; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/lighting/lights-buffer.js +var epsilon = 1e-6; +var tempVec3 = new Vec3(); +var tempAreaLightSizes = new Float32Array(6); +var areaHalfAxisWidth = new Vec3(-0.5, 0, 0); +var areaHalfAxisHeight = new Vec3(0, 0, 0.5); +var TextureIndex8 = { + FLAGS: 0, + COLOR_A: 1, + COLOR_B: 2, + SPOT_ANGLES: 3, + SHADOW_BIAS: 4, + COOKIE_A: 5, + COOKIE_B: 6, + COUNT_ALWAYS: 7, + POSITION_X: 7, + POSITION_Y: 8, + POSITION_Z: 9, + RANGE: 10, + SPOT_DIRECTION_X: 11, + SPOT_DIRECTION_Y: 12, + SPOT_DIRECTION_Z: 13, + PROJ_MAT_00: 14, + ATLAS_VIEWPORT_A: 14, + PROJ_MAT_01: 15, + ATLAS_VIEWPORT_B: 15, + PROJ_MAT_02: 16, + PROJ_MAT_03: 17, + PROJ_MAT_10: 18, + PROJ_MAT_11: 19, + PROJ_MAT_12: 20, + PROJ_MAT_13: 21, + PROJ_MAT_20: 22, + PROJ_MAT_21: 23, + PROJ_MAT_22: 24, + PROJ_MAT_23: 25, + PROJ_MAT_30: 26, + PROJ_MAT_31: 27, + PROJ_MAT_32: 28, + PROJ_MAT_33: 29, + AREA_DATA_WIDTH_X: 30, + AREA_DATA_WIDTH_Y: 31, + AREA_DATA_WIDTH_Z: 32, + AREA_DATA_HEIGHT_X: 33, + AREA_DATA_HEIGHT_Y: 34, + AREA_DATA_HEIGHT_Z: 35, + COUNT: 36 +}; +var TextureIndexFloat = { + POSITION_RANGE: 0, + SPOT_DIRECTION: 1, + PROJ_MAT_0: 2, + ATLAS_VIEWPORT: 2, + PROJ_MAT_1: 3, + PROJ_MAT_2: 4, + PROJ_MAT_3: 5, + AREA_DATA_WIDTH: 6, + AREA_DATA_HEIGHT: 7, + COUNT: 8 +}; +var FORMAT_FLOAT = 0; +var FORMAT_8BIT = 1; +var shaderDefinesDeviceCache = new DeviceCache(); +var LightsBuffer = class _LightsBuffer { + static getLightTextureFormat(device) { + return device.extTextureFloat && device.maxTextures > 8 ? FORMAT_FLOAT : FORMAT_8BIT; + } + static getShaderDefines(device) { + return shaderDefinesDeviceCache.get(device, () => { + const buildShaderDefines = (device2, object, prefix, floatOffset2) => { + return Object.keys(object).map((key) => `#define ${prefix}${key} ${object[key]}${floatOffset2}`).join("\n"); + }; + const lightTextureFormat = _LightsBuffer.getLightTextureFormat(device); + const clusterTextureFormat = lightTextureFormat === FORMAT_FLOAT ? "FLOAT" : "8BIT"; + const floatOffset = device.supportsTextureFetch ? "" : ".5"; + return ` + +#define CLUSTER_TEXTURE_${clusterTextureFormat} + ${buildShaderDefines(device, TextureIndex8, "CLUSTER_TEXTURE_8_", floatOffset)} + ${buildShaderDefines(device, TextureIndexFloat, "CLUSTER_TEXTURE_F_", floatOffset)} + `; + }); + } + constructor(device) { + this.device = device; + this.cookiesEnabled = false; + this.shadowsEnabled = false; + this.areaLightsEnabled = false; + this.maxLights = 255; + let pixelsPerLight8 = TextureIndex8.COUNT_ALWAYS; + let pixelsPerLightFloat = 0; + this.lightTextureFormat = _LightsBuffer.getLightTextureFormat(device); + if (this.lightTextureFormat === FORMAT_FLOAT) { + pixelsPerLightFloat = TextureIndexFloat.COUNT; + } else { + pixelsPerLight8 = TextureIndex8.COUNT; + } + this.lights8 = new Uint8ClampedArray(4 * pixelsPerLight8 * this.maxLights); + this.lightsTexture8 = this.createTexture(this.device, pixelsPerLight8, this.maxLights, PIXELFORMAT_RGBA8, "LightsTexture8"); + this._lightsTexture8Id = this.device.scope.resolve("lightsTexture8"); + if (pixelsPerLightFloat) { + this.lightsFloat = new Float32Array(4 * pixelsPerLightFloat * this.maxLights); + this.lightsTextureFloat = this.createTexture(this.device, pixelsPerLightFloat, this.maxLights, PIXELFORMAT_RGBA32F, "LightsTextureFloat"); + this._lightsTextureFloatId = this.device.scope.resolve("lightsTextureFloat"); + } else { + this.lightsFloat = null; + this.lightsTextureFloat = null; + this._lightsTextureFloatId = void 0; + } + this._lightsTextureInvSizeId = this.device.scope.resolve("lightsTextureInvSize"); + this._lightsTextureInvSizeData = new Float32Array(4); + this._lightsTextureInvSizeData[0] = pixelsPerLightFloat ? 1 / this.lightsTextureFloat.width : 0; + this._lightsTextureInvSizeData[1] = pixelsPerLightFloat ? 1 / this.lightsTextureFloat.height : 0; + this._lightsTextureInvSizeData[2] = 1 / this.lightsTexture8.width; + this._lightsTextureInvSizeData[3] = 1 / this.lightsTexture8.height; + this.invMaxColorValue = 0; + this.invMaxAttenuation = 0; + this.boundsMin = new Vec3(); + this.boundsDelta = new Vec3(); + } + destroy() { + if (this.lightsTexture8) { + this.lightsTexture8.destroy(); + this.lightsTexture8 = null; + } + if (this.lightsTextureFloat) { + this.lightsTextureFloat.destroy(); + this.lightsTextureFloat = null; + } + } + createTexture(device, width, height, format, name) { + const tex = new Texture(device, { + name, + width, + height, + mipmaps: false, + format, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + type: TEXTURETYPE_DEFAULT, + magFilter: FILTER_NEAREST, + minFilter: FILTER_NEAREST, + anisotropy: 1 + }); + return tex; + } + setCompressionRanges(maxAttenuation, maxColorValue) { + this.invMaxColorValue = 1 / maxColorValue; + this.invMaxAttenuation = 1 / maxAttenuation; + } + setBounds(min, delta) { + this.boundsMin.copy(min); + this.boundsDelta.copy(delta); + } + uploadTextures() { + if (this.lightsTextureFloat) { + this.lightsTextureFloat.lock().set(this.lightsFloat); + this.lightsTextureFloat.unlock(); + } + this.lightsTexture8.lock().set(this.lights8); + this.lightsTexture8.unlock(); + } + updateUniforms() { + this._lightsTexture8Id.setValue(this.lightsTexture8); + if (this.lightTextureFormat === FORMAT_FLOAT) { + this._lightsTextureFloatId.setValue(this.lightsTextureFloat); + } + this._lightsTextureInvSizeId.setValue(this._lightsTextureInvSizeData); + } + getSpotDirection(direction, spot) { + const mat = spot._node.getWorldTransform(); + mat.getY(direction).mulScalar(-1); + direction.normalize(); + } + getLightAreaSizes(light) { + const mat = light._node.getWorldTransform(); + mat.transformVector(areaHalfAxisWidth, tempVec3); + tempAreaLightSizes[0] = tempVec3.x; + tempAreaLightSizes[1] = tempVec3.y; + tempAreaLightSizes[2] = tempVec3.z; + mat.transformVector(areaHalfAxisHeight, tempVec3); + tempAreaLightSizes[3] = tempVec3.x; + tempAreaLightSizes[4] = tempVec3.y; + tempAreaLightSizes[5] = tempVec3.z; + return tempAreaLightSizes; + } + addLightDataFlags(data8, index, light, isSpot, castShadows, shadowIntensity) { + data8[index + 0] = isSpot ? 255 : 0; + data8[index + 1] = light._shape * 64; + data8[index + 2] = light._falloffMode * 255; + data8[index + 3] = castShadows ? shadowIntensity * 255 : 0; + } + addLightDataColor(data8, index, light, gammaCorrection, isCookie) { + const invMaxColorValue = this.invMaxColorValue; + const color = gammaCorrection ? light._linearFinalColor : light._finalColor; + FloatPacking.float2Bytes(color[0] * invMaxColorValue, data8, index + 0, 2); + FloatPacking.float2Bytes(color[1] * invMaxColorValue, data8, index + 2, 2); + FloatPacking.float2Bytes(color[2] * invMaxColorValue, data8, index + 4, 2); + data8[index + 6] = isCookie ? 255 : 0; + const isDynamic = !!(light.mask & MASK_AFFECT_DYNAMIC); + const isLightmapped = !!(light.mask & MASK_AFFECT_LIGHTMAPPED); + data8[index + 7] = isDynamic && isLightmapped ? 127 : isLightmapped ? 255 : 0; + } + addLightDataSpotAngles(data8, index, light) { + FloatPacking.float2Bytes(light._innerConeAngleCos * (0.5 - epsilon) + 0.5, data8, index + 0, 2); + FloatPacking.float2Bytes(light._outerConeAngleCos * (0.5 - epsilon) + 0.5, data8, index + 2, 2); + } + addLightDataShadowBias(data8, index, light) { + const lightRenderData = light.getRenderData(null, 0); + const biases = light._getUniformBiasValues(lightRenderData); + FloatPacking.float2BytesRange(biases.bias, data8, index, -1, 20, 2); + FloatPacking.float2Bytes(biases.normalBias, data8, index + 2, 2); + } + addLightDataPositionRange(data8, index, light, pos) { + const normPos = tempVec3.sub2(pos, this.boundsMin).div(this.boundsDelta); + FloatPacking.float2Bytes(normPos.x, data8, index + 0, 4); + FloatPacking.float2Bytes(normPos.y, data8, index + 4, 4); + FloatPacking.float2Bytes(normPos.z, data8, index + 8, 4); + FloatPacking.float2Bytes(light.attenuationEnd * this.invMaxAttenuation, data8, index + 12, 4); + } + addLightDataSpotDirection(data8, index, light) { + this.getSpotDirection(tempVec3, light); + FloatPacking.float2Bytes(tempVec3.x * (0.5 - epsilon) + 0.5, data8, index + 0, 4); + FloatPacking.float2Bytes(tempVec3.y * (0.5 - epsilon) + 0.5, data8, index + 4, 4); + FloatPacking.float2Bytes(tempVec3.z * (0.5 - epsilon) + 0.5, data8, index + 8, 4); + } + addLightDataLightProjMatrix(data8, index, lightProjectionMatrix) { + const matData = lightProjectionMatrix.data; + for (let m = 0; m < 12; m++) FloatPacking.float2BytesRange(matData[m], data8, index + 4 * m, -2, 2, 4); + for (let m = 12; m < 16; m++) { + FloatPacking.float2MantissaExponent(matData[m], data8, index + 4 * m, 4); + } + } + addLightDataCookies(data8, index, light) { + const isRgb = light._cookieChannel === "rgb"; + data8[index + 0] = Math.floor(light.cookieIntensity * 255); + data8[index + 1] = isRgb ? 255 : 0; + if (!isRgb) { + const channel = light._cookieChannel; + data8[index + 4] = channel === "rrr" ? 255 : 0; + data8[index + 5] = channel === "ggg" ? 255 : 0; + data8[index + 6] = channel === "bbb" ? 255 : 0; + data8[index + 7] = channel === "aaa" ? 255 : 0; + } + } + addLightAtlasViewport(data8, index, atlasViewport) { + FloatPacking.float2Bytes(atlasViewport.x, data8, index + 0, 2); + FloatPacking.float2Bytes(atlasViewport.y, data8, index + 2, 2); + FloatPacking.float2Bytes(atlasViewport.z / 3, data8, index + 4, 2); + } + addLightAreaSizes(data8, index, light) { + const areaSizes = this.getLightAreaSizes(light); + for (let i = 0; i < 6; i++) { + FloatPacking.float2MantissaExponent(areaSizes[i], data8, index + 4 * i, 4); + } + } + addLightData(light, lightIndex, gammaCorrection) { + const isSpot = light._type === LIGHTTYPE_SPOT; + const hasAtlasViewport = light.atlasViewportAllocated; + const isCookie = this.cookiesEnabled && !!light._cookie && hasAtlasViewport; + const isArea = this.areaLightsEnabled && light.shape !== LIGHTSHAPE_PUNCTUAL; + const castShadows = this.shadowsEnabled && light.castShadows && hasAtlasViewport; + const pos = light._node.getPosition(); + let lightProjectionMatrix = null; + let atlasViewport = null; + if (isSpot) { + if (castShadows) { + const lightRenderData = light.getRenderData(null, 0); + lightProjectionMatrix = lightRenderData.shadowMatrix; + } else if (isCookie) { + lightProjectionMatrix = LightCamera.evalSpotCookieMatrix(light); + } + } else { + if (castShadows || isCookie) { + atlasViewport = light.atlasViewport; + } + } + const data8 = this.lights8; + const data8Start = lightIndex * this.lightsTexture8.width * 4; + this.addLightDataFlags(data8, data8Start + 4 * TextureIndex8.FLAGS, light, isSpot, castShadows, light.shadowIntensity); + this.addLightDataColor(data8, data8Start + 4 * TextureIndex8.COLOR_A, light, gammaCorrection, isCookie); + if (isSpot) { + this.addLightDataSpotAngles(data8, data8Start + 4 * TextureIndex8.SPOT_ANGLES, light); + } + if (light.castShadows) { + this.addLightDataShadowBias(data8, data8Start + 4 * TextureIndex8.SHADOW_BIAS, light); + } + if (isCookie) { + this.addLightDataCookies(data8, data8Start + 4 * TextureIndex8.COOKIE_A, light); + } + if (this.lightTextureFormat === FORMAT_FLOAT) { + const dataFloat = this.lightsFloat; + const dataFloatStart = lightIndex * this.lightsTextureFloat.width * 4; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 0] = pos.x; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 1] = pos.y; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 2] = pos.z; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 3] = light.attenuationEnd; + if (isSpot) { + this.getSpotDirection(tempVec3, light); + dataFloat[dataFloatStart + 4 * TextureIndexFloat.SPOT_DIRECTION + 0] = tempVec3.x; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.SPOT_DIRECTION + 1] = tempVec3.y; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.SPOT_DIRECTION + 2] = tempVec3.z; + } + if (lightProjectionMatrix) { + const matData = lightProjectionMatrix.data; + for (let m = 0; m < 16; m++) dataFloat[dataFloatStart + 4 * TextureIndexFloat.PROJ_MAT_0 + m] = matData[m]; + } + if (atlasViewport) { + dataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 0] = atlasViewport.x; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 1] = atlasViewport.y; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 2] = atlasViewport.z / 3; + } + if (isArea) { + const areaSizes = this.getLightAreaSizes(light); + dataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 0] = areaSizes[0]; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 1] = areaSizes[1]; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 2] = areaSizes[2]; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 0] = areaSizes[3]; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 1] = areaSizes[4]; + dataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 2] = areaSizes[5]; + } + } else { + this.addLightDataPositionRange(data8, data8Start + 4 * TextureIndex8.POSITION_X, light, pos); + if (isSpot) { + this.addLightDataSpotDirection(data8, data8Start + 4 * TextureIndex8.SPOT_DIRECTION_X, light); + } + if (lightProjectionMatrix) { + this.addLightDataLightProjMatrix(data8, data8Start + 4 * TextureIndex8.PROJ_MAT_00, lightProjectionMatrix); + } + if (atlasViewport) { + this.addLightAtlasViewport(data8, data8Start + 4 * TextureIndex8.ATLAS_VIEWPORT_A, atlasViewport); + } + if (isArea) { + this.addLightAreaSizes(data8, data8Start + 4 * TextureIndex8.AREA_DATA_WIDTH_X, light); + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/lit-shader.js +var builtinAttributes = { + vertex_normal: SEMANTIC_NORMAL, + vertex_tangent: SEMANTIC_TANGENT, + vertex_texCoord0: SEMANTIC_TEXCOORD0, + vertex_texCoord1: SEMANTIC_TEXCOORD1, + vertex_color: SEMANTIC_COLOR, + vertex_boneWeights: SEMANTIC_BLENDWEIGHT, + vertex_boneIndices: SEMANTIC_BLENDINDICES +}; +var builtinVaryings = { + vVertexColor: "vec4", + vPositionW: "vec3", + vNormalV: "vec3", + vNormalW: "vec3", + vTangentW: "vec3", + vBinormalW: "vec3", + vObjectSpaceUpW: "vec3", + vUv0: "vec2", + vUv1: "vec2" +}; +var LitShader = class { + constructor(device, options) { + this.device = device; + this.options = options; + this.attributes = { + vertex_position: SEMANTIC_POSITION + }; + if (options.userAttributes) { + for (const [semantic, name] of Object.entries(options.userAttributes)) { + this.attributes[name] = semantic; + } + } + if (options.chunks) { + const userChunks = options.chunks; + this.chunks = Object.create(shaderChunks); + for (const chunkName in shaderChunks) { + if (userChunks.hasOwnProperty(chunkName)) { + const chunk = userChunks[chunkName]; + for (const a in builtinAttributes) { + if (builtinAttributes.hasOwnProperty(a) && chunk.indexOf(a) >= 0) { + this.attributes[a] = builtinAttributes[a]; + } + } + this.chunks[chunkName] = chunk; + } + } + } else { + this.chunks = shaderChunks; + } + this.shaderPassInfo = ShaderPass.get(this.device).getByIndex(options.pass); + this.shadowPass = this.shaderPassInfo.isShadow; + this.lighting = options.lights.length > 0 || options.dirLightMapEnabled || options.clusteredLightingEnabled; + this.reflections = !!options.reflectionSource; + this.needsNormal = this.lighting || this.reflections || options.useSpecular || options.ambientSH || options.useHeights || options.enableGGXSpecular || options.clusteredLightingEnabled && !this.shadowPass || options.useClearCoatNormals; + this.needsNormal = this.needsNormal && !this.shadowPass; + this.needsSceneColor = options.useDynamicRefraction; + this.needsScreenSize = options.useDynamicRefraction; + this.needsTransforms = options.useDynamicRefraction; + this.varyings = ""; + this.varyingDefines = ""; + this.vshader = null; + this.frontendDecl = null; + this.frontendCode = null; + this.frontendFunc = null; + this.lightingUv = null; + this.defines = []; + this.fshader = null; + } + _vsAddBaseCode(code, chunks, options) { + code += chunks.baseVS; + if (options.nineSlicedMode === SPRITE_RENDERMODE_SLICED || options.nineSlicedMode === SPRITE_RENDERMODE_TILED) { + code += chunks.baseNineSlicedVS; + } + return code; + } + _vsAddTransformCode(code, device, chunks, options) { + code += this.chunks.transformVS; + return code; + } + _setMapTransform(codes, name, id12, uv) { + const checkId = id12 + uv * 100; + if (!codes[3][checkId]) { + const varName = `texture_${name}MapTransform`; + codes[0] += `uniform vec3 ${varName}0; +`; + codes[0] += `uniform vec3 ${varName}1; +`; + codes[1] += `varying vec2 vUV${uv}_${id12}; +`; + codes[2] += ` vUV${uv}_${id12} = vec2(dot(vec3(uv${uv}, 1), ${varName}0), dot(vec3(uv${uv}, 1), ${varName}1)); +`; + codes[3][checkId] = true; + } + return codes; + } + _fsGetBaseCode() { + const options = this.options; + const chunks = this.chunks; + let result = this.chunks.basePS; + if (options.nineSlicedMode === SPRITE_RENDERMODE_SLICED) { + result += chunks.baseNineSlicedPS; + } else if (options.nineSlicedMode === SPRITE_RENDERMODE_TILED) { + result += chunks.baseNineSlicedTiledPS; + } + return result; + } + _fsGetStartCode(code, device, chunks, options) { + let result = chunks.startPS; + if (options.nineSlicedMode === SPRITE_RENDERMODE_SLICED) { + result += chunks.startNineSlicedPS; + } else if (options.nineSlicedMode === SPRITE_RENDERMODE_TILED) { + result += chunks.startNineSlicedTiledPS; + } + return result; + } + _getLightSourceShapeString(shape2) { + switch (shape2) { + case LIGHTSHAPE_RECT: + return "Rect"; + case LIGHTSHAPE_DISK: + return "Disk"; + case LIGHTSHAPE_SPHERE: + return "Sphere"; + default: + return ""; + } + } + generateVertexShader(useUv, useUnmodifiedUv, mapTransforms) { + const device = this.device; + const options = this.options; + const chunks = this.chunks; + let code = ""; + let codeBody = ""; + code = this._vsAddBaseCode(code, chunks, options); + codeBody += " vPositionW = getWorldPosition();\n"; + if (this.options.pass === SHADER_DEPTH || this.options.pass === SHADER_PREPASS_VELOCITY) { + code += "varying float vDepth;\n"; + code += "#ifndef VIEWMATRIX\n"; + code += "#define VIEWMATRIX\n"; + code += "uniform mat4 matrix_view;\n"; + code += "#endif\n"; + code += "#ifndef CAMERAPLANES\n"; + code += "#define CAMERAPLANES\n"; + code += "uniform vec4 camera_params;\n\n"; + code += "#endif\n"; + codeBody += " vDepth = -(matrix_view * vec4(vPositionW,1.0)).z * camera_params.x;\n"; + } + if (this.options.pass === SHADER_PREPASS_VELOCITY) ; + if (this.options.useInstancing) { + this.attributes.instance_line1 = SEMANTIC_ATTR12; + this.attributes.instance_line2 = SEMANTIC_ATTR13; + this.attributes.instance_line3 = SEMANTIC_ATTR14; + this.attributes.instance_line4 = SEMANTIC_ATTR15; + code += chunks.instancingVS; + } + if (this.needsNormal) { + this.attributes.vertex_normal = SEMANTIC_NORMAL; + codeBody += " vNormalW = getNormal();\n"; + if (options.reflectionSource === "sphereMap" && device.fragmentUniformsCount <= 16) { + code += chunks.viewNormalVS; + codeBody += " vNormalV = getViewNormal();\n"; + } + if (options.hasTangents && (options.useHeights || options.useNormals || options.enableGGXSpecular)) { + this.attributes.vertex_tangent = SEMANTIC_TANGENT; + code += chunks.tangentBinormalVS; + codeBody += " vTangentW = getTangent();\n"; + codeBody += " vBinormalW = getBinormal();\n"; + } else if (options.enableGGXSpecular || !device.extStandardDerivatives) { + codeBody += " vObjectSpaceUpW = normalize(dNormalMatrix * vec3(0, 1, 0));\n"; + } + } + const maxUvSets = 2; + for (let i = 0; i < maxUvSets; i++) { + if (useUv[i]) { + this.attributes["vertex_texCoord" + i] = "TEXCOORD" + i; + code += chunks["uv" + i + "VS"]; + codeBody += " vec2 uv" + i + " = getUv" + i + "();\n"; + } + if (useUnmodifiedUv[i]) { + codeBody += " vUv" + i + " = uv" + i + ";\n"; + } + } + const codes = [code, this.varyings, codeBody, []]; + mapTransforms.forEach((mapTransform) => { + this._setMapTransform(codes, mapTransform.name, mapTransform.id, mapTransform.uv); + }); + code = codes[0]; + this.varyings = codes[1]; + codeBody = codes[2]; + if (options.vertexColors) { + this.attributes.vertex_color = SEMANTIC_COLOR; + codeBody += " vVertexColor = vertex_color;\n"; + } + if (options.useMsdf && options.msdfTextAttribute) { + this.attributes.vertex_outlineParameters = SEMANTIC_ATTR8; + this.attributes.vertex_shadowParameters = SEMANTIC_ATTR9; + codeBody += " unpackMsdfParams();\n"; + code += chunks.msdfVS; + } + if (options.useMorphPosition || options.useMorphNormal) { + if (options.useMorphTextureBased) { + code += "#define MORPHING_TEXTURE_BASED\n"; + if (options.useMorphPosition) { + code += "#define MORPHING_TEXTURE_BASED_POSITION\n"; + } + if (options.useMorphNormal) { + code += "#define MORPHING_TEXTURE_BASED_NORMAL\n"; + } + this.attributes.morph_vertex_id = SEMANTIC_ATTR15; + const morphIdType = device.isWebGPU ? "uint" : "float"; + code += `attribute ${morphIdType} morph_vertex_id; +`; + } else { + code += "#define MORPHING\n"; + if (options.useMorphPosition) { + this.attributes.morph_pos0 = SEMANTIC_ATTR8; + this.attributes.morph_pos1 = SEMANTIC_ATTR9; + this.attributes.morph_pos2 = SEMANTIC_ATTR10; + this.attributes.morph_pos3 = SEMANTIC_ATTR11; + code += "#define MORPHING_POS03\n"; + code += "attribute vec3 morph_pos0;\n"; + code += "attribute vec3 morph_pos1;\n"; + code += "attribute vec3 morph_pos2;\n"; + code += "attribute vec3 morph_pos3;\n"; + } else if (options.useMorphNormal) { + this.attributes.morph_nrm0 = SEMANTIC_ATTR8; + this.attributes.morph_nrm1 = SEMANTIC_ATTR9; + this.attributes.morph_nrm2 = SEMANTIC_ATTR10; + this.attributes.morph_nrm3 = SEMANTIC_ATTR11; + code += "#define MORPHING_NRM03\n"; + code += "attribute vec3 morph_nrm0;\n"; + code += "attribute vec3 morph_nrm1;\n"; + code += "attribute vec3 morph_nrm2;\n"; + code += "attribute vec3 morph_nrm3;\n"; + } + if (!options.useMorphNormal) { + this.attributes.morph_pos4 = SEMANTIC_ATTR12; + this.attributes.morph_pos5 = SEMANTIC_ATTR13; + this.attributes.morph_pos6 = SEMANTIC_ATTR14; + this.attributes.morph_pos7 = SEMANTIC_ATTR15; + code += "#define MORPHING_POS47\n"; + code += "attribute vec3 morph_pos4;\n"; + code += "attribute vec3 morph_pos5;\n"; + code += "attribute vec3 morph_pos6;\n"; + code += "attribute vec3 morph_pos7;\n"; + } else { + this.attributes.morph_nrm4 = SEMANTIC_ATTR12; + this.attributes.morph_nrm5 = SEMANTIC_ATTR13; + this.attributes.morph_nrm6 = SEMANTIC_ATTR14; + this.attributes.morph_nrm7 = SEMANTIC_ATTR15; + code += "#define MORPHING_NRM47\n"; + code += "attribute vec3 morph_nrm4;\n"; + code += "attribute vec3 morph_nrm5;\n"; + code += "attribute vec3 morph_nrm6;\n"; + code += "attribute vec3 morph_nrm7;\n"; + } + } + } + if (options.skin) { + this.attributes.vertex_boneWeights = SEMANTIC_BLENDWEIGHT; + this.attributes.vertex_boneIndices = SEMANTIC_BLENDINDICES; + code += ShaderGenerator.skinCode(device, chunks); + code += "#define SKIN\n"; + } else if (options.useInstancing) { + code += "#define INSTANCING\n"; + } + if (options.screenSpace) { + code += "#define SCREENSPACE\n"; + } + if (options.pixelSnap) { + code += "#define PIXELSNAP\n"; + } + code = this._vsAddTransformCode(code, device, chunks, options); + if (this.needsNormal) { + code += chunks.normalVS; + } + code += "\n"; + code += chunks.startVS; + code += codeBody; + code += chunks.endVS; + code += "}"; + Object.keys(builtinVaryings).forEach((v) => { + if (code.indexOf(v) >= 0) { + this.varyings += `varying ${builtinVaryings[v]} ${v}; +`; + this.varyingDefines += `#define VARYING_${v.toUpperCase()} +`; + } + }); + const shaderPassDefines = this.shaderPassInfo.shaderDefines; + this.vshader = shaderPassDefines + this.varyings + code; + } + _fsGetBeginCode() { + let code = this.shaderPassInfo.shaderDefines; + for (let i = 0; i < this.defines.length; i++) { + code += `#define ${this.defines[i]} +`; + } + return code; + } + _fsGetPickPassCode() { + let code = this._fsGetBeginCode(); + code += "uniform vec4 uColor;\n"; + code += this.varyings; + code += this.varyingDefines; + code += this.frontendDecl; + code += this.frontendCode; + code += ShaderGenerator.begin(); + code += this.frontendFunc; + code += " gl_FragColor = uColor;\n"; + code += ShaderGenerator.end(); + return code; + } + _fsGetDepthPassCode() { + const chunks = this.chunks; + let code = this._fsGetBeginCode(); + code += "varying float vDepth;\n"; + code += this.varyings; + code += this.varyingDefines; + code += chunks.packDepthPS; + code += this.frontendDecl; + code += this.frontendCode; + code += ShaderGenerator.begin(); + code += this.frontendFunc; + code += " gl_FragColor = packFloat(vDepth);\n"; + code += ShaderGenerator.end(); + return code; + } + _fsGetPrePassVelocityCode() { + return this._fsGetDepthPassCode(); + } + _fsGetShadowPassCode() { + const device = this.device; + const options = this.options; + const chunks = this.chunks; + const varyings = this.varyings; + const lightType = this.shaderPassInfo.lightType; + let shadowType = this.shaderPassInfo.shadowType; + if (lightType !== LIGHTTYPE_DIRECTIONAL && options.clusteredLightingEnabled) { + if (shadowType === SHADOW_VSM8 || shadowType === SHADOW_VSM16 || shadowType === SHADOW_VSM32 || shadowType === SHADOW_PCSS) { + shadowType = SHADOW_PCF3; + } + } + let code = this._fsGetBeginCode(); + if (device.extStandardDerivatives && device.isWebGL1) { + code += "uniform vec2 polygonOffset;\n"; + } + if (shadowType === SHADOW_VSM32) { + if (device.textureFloatHighPrecision) { + code += "#define VSM_EXPONENT 15.0\n\n"; + } else { + code += "#define VSM_EXPONENT 5.54\n\n"; + } + } else if (shadowType === SHADOW_VSM16) { + code += "#define VSM_EXPONENT 5.54\n\n"; + } + if (lightType !== LIGHTTYPE_DIRECTIONAL) { + code += "uniform vec3 view_position;\n"; + code += "uniform float light_radius;\n"; + } + code += varyings; + code += this.varyingDefines; + code += this.frontendDecl; + code += this.frontendCode; + const mayPackDepth = shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3 || shadowType === SHADOW_PCF5 || shadowType === SHADOW_PCSS; + const mustPackDepth = lightType === LIGHTTYPE_OMNI && shadowType !== SHADOW_PCSS && !options.clusteredLightingEnabled; + const usePackedDepth = mayPackDepth && !device.supportsDepthShadow || mustPackDepth; + if (usePackedDepth) { + code += chunks.packDepthPS; + } else if (shadowType === SHADOW_VSM8) { + code += "vec2 encodeFloatRG( float v ) {\n"; + code += " vec2 enc = vec2(1.0, 255.0) * v;\n"; + code += " enc = fract(enc);\n"; + code += " enc -= enc.yy * vec2(1.0/255.0, 1.0/255.0);\n"; + code += " return enc;\n"; + code += "}\n\n"; + } + if (shadowType === SHADOW_PCSS) { + code += shaderChunks.linearizeDepthPS; + } + code += ShaderGenerator.begin(); + code += this.frontendFunc; + const isVsm = shadowType === SHADOW_VSM8 || shadowType === SHADOW_VSM16 || shadowType === SHADOW_VSM32; + const applySlopeScaleBias = device.isWebGL1 && device.extStandardDerivatives; + const usePerspectiveDepth = lightType === LIGHTTYPE_DIRECTIONAL || !isVsm && lightType === LIGHTTYPE_SPOT; + let hasModifiedDepth = false; + if (usePerspectiveDepth) { + code += " float depth = gl_FragCoord.z;\n"; + } else { + code += " float depth = min(distance(view_position, vPositionW) / light_radius, 0.99999);\n"; + hasModifiedDepth = true; + } + if (applySlopeScaleBias) { + code += " float minValue = 2.3374370500153186e-10; //(1.0 / 255.0) / (256.0 * 256.0 * 256.0);\n"; + code += " depth += polygonOffset.x * max(abs(dFdx(depth)), abs(dFdy(depth))) + minValue * polygonOffset.y;\n"; + hasModifiedDepth = true; + } + if (usePackedDepth) { + code += " gl_FragColor = packFloat(depth);\n"; + } else if (!isVsm) { + const exportR32 = shadowType === SHADOW_PCSS; + if (exportR32) { + code += " gl_FragColor.r = depth;\n"; + } else { + if (hasModifiedDepth) { + code += " gl_FragDepth = depth;\n"; + } + code += " gl_FragColor = vec4(1.0);\n"; + } + } else if (shadowType === SHADOW_VSM8) { + code += " gl_FragColor = vec4(encodeFloatRG(depth), encodeFloatRG(depth*depth));\n"; + } else { + code += chunks.storeEVSMPS; + } + code += ShaderGenerator.end(); + return code; + } + _fsGetLitPassCode() { + const device = this.device; + const options = this.options; + const chunks = this.chunks; + const decl = new ChunkBuilder(); + const func = new ChunkBuilder(); + const backend = new ChunkBuilder(); + const code = new ChunkBuilder(); + if (options.opacityFadesSpecular === false) { + decl.append("uniform float material_alphaFade;"); + } + if (options.useSpecular) { + this.defines.push("LIT_SPECULAR"); + if (this.reflections) { + this.defines.push("LIT_REFLECTIONS"); + } + if (options.useClearCoat) { + this.defines.push("LIT_CLEARCOAT"); + } + if (options.fresnelModel > 0) { + this.defines.push("LIT_SPECULAR_FRESNEL"); + } + if (options.conserveEnergy) { + this.defines.push("LIT_CONSERVE_ENERGY"); + } + if (options.useSheen) { + this.defines.push("LIT_SHEEN"); + } + if (options.useIridescence) { + this.defines.push("LIT_IRIDESCENCE"); + } + } + const shadowTypeUsed = []; + let numShadowLights = 0; + let shadowedDirectionalLightUsed = false; + let useVsm = false; + let usePcss = false; + let hasAreaLights = options.lights.some(function(light) { + return light._shape && light._shape !== LIGHTSHAPE_PUNCTUAL; + }); + if (options.clusteredLightingEnabled && options.clusteredLightingAreaLightsEnabled) { + hasAreaLights = true; + } + if (hasAreaLights || options.clusteredLightingEnabled) { + let areaLutsPrecision = "highp"; + if (device.areaLightLutFormat === PIXELFORMAT_RGBA8) { + decl.append("#define AREA_R8_G8_B8_A8_LUTS"); + areaLutsPrecision = "lowp"; + } + decl.append("#define AREA_LIGHTS"); + decl.append(`uniform ${areaLutsPrecision} sampler2D areaLightsLutTex1;`); + decl.append(`uniform ${areaLutsPrecision} sampler2D areaLightsLutTex2;`); + } + for (let i = 0; i < options.lights.length; i++) { + const light = options.lights[i]; + const lightType = light._type; + if (options.clusteredLightingEnabled && lightType !== LIGHTTYPE_DIRECTIONAL) continue; + const lightShape = hasAreaLights && light._shape ? light._shape : LIGHTSHAPE_PUNCTUAL; + decl.append("uniform vec3 light" + i + "_color;"); + if (light._shadowType === SHADOW_PCSS && light.castShadows && !options.noShadow) { + decl.append(`uniform float light${i}_shadowSearchArea;`); + decl.append(`uniform vec4 light${i}_cameraParams;`); + } + if (lightType === LIGHTTYPE_DIRECTIONAL) { + decl.append("uniform vec3 light" + i + "_direction;"); + } else { + decl.append("uniform vec3 light" + i + "_position;"); + decl.append("uniform float light" + i + "_radius;"); + if (lightType === LIGHTTYPE_SPOT) { + decl.append("uniform vec3 light" + i + "_direction;"); + decl.append("uniform float light" + i + "_innerConeAngle;"); + decl.append("uniform float light" + i + "_outerConeAngle;"); + } + } + if (lightShape !== LIGHTSHAPE_PUNCTUAL) { + if (lightType === LIGHTTYPE_DIRECTIONAL) { + decl.append("uniform vec3 light" + i + "_position;"); + } + decl.append("uniform vec3 light" + i + "_halfWidth;"); + decl.append("uniform vec3 light" + i + "_halfHeight;"); + } + if (light.castShadows && !options.noShadow) { + decl.append("uniform mat4 light" + i + "_shadowMatrix;"); + decl.append("uniform float light" + i + "_shadowIntensity;"); + if (lightType === LIGHTTYPE_DIRECTIONAL) { + decl.append("uniform mat4 light" + i + "_shadowMatrixPalette[4];"); + decl.append("uniform float light" + i + "_shadowCascadeDistances[4];"); + decl.append("uniform float light" + i + "_shadowCascadeCount;"); + } + decl.append("uniform vec4 light" + i + "_shadowParams;"); + if (lightType === LIGHTTYPE_DIRECTIONAL) { + shadowedDirectionalLightUsed = true; + } + if (lightType === LIGHTTYPE_OMNI) { + decl.append("uniform samplerCube light" + i + "_shadowMap;"); + } else { + if (light._isPcf && device.supportsDepthShadow) { + decl.append("uniform sampler2DShadow light" + i + "_shadowMap;"); + } else { + decl.append("uniform sampler2D light" + i + "_shadowMap;"); + } + } + numShadowLights++; + shadowTypeUsed[light._shadowType] = true; + if (light._isVsm) useVsm = true; + if (light._shadowType === SHADOW_PCSS) usePcss = true; + } + if (light._cookie) { + if (light._cookie._cubemap) { + if (lightType === LIGHTTYPE_OMNI) { + decl.append("uniform samplerCube light" + i + "_cookie;"); + decl.append("uniform float light" + i + "_cookieIntensity;"); + if (!light.castShadows || options.noShadow) { + decl.append("uniform mat4 light" + i + "_shadowMatrix;"); + } + } + } else { + if (lightType === LIGHTTYPE_SPOT) { + decl.append("uniform sampler2D light" + i + "_cookie;"); + decl.append("uniform float light" + i + "_cookieIntensity;"); + if (!light.castShadows || options.noShadow) { + decl.append("uniform mat4 light" + i + "_shadowMatrix;"); + } + if (light._cookieTransform) { + decl.append("uniform vec4 light" + i + "_cookieMatrix;"); + decl.append("uniform vec2 light" + i + "_cookieOffset;"); + } + } + } + } + } + const hasTBN = this.needsNormal && (options.useNormals || options.useClearCoatNormals || options.enableGGXSpecular && !options.useHeights); + if (hasTBN) { + if (options.hasTangents) { + func.append(options.fastTbn ? chunks.TBNfastPS : chunks.TBNPS); + } else { + if (device.extStandardDerivatives && (options.useNormals || options.useClearCoatNormals)) { + func.append(chunks.TBNderivativePS.replace(/\$UV/g, this.lightingUv)); + } else { + func.append(chunks.TBNObjectSpacePS); + } + } + if (options.twoSidedLighting) { + func.append(chunks.twoSidedLightingPS); + } + } + func.append(chunks.sphericalPS); + func.append(chunks.decodePS); + func.append(ShaderGenerator.gammaCode(options.gamma, chunks)); + func.append(ShaderGenerator.tonemapCode(options.toneMap, chunks)); + func.append(ShaderGenerator.fogCode(options.fog, chunks)); + func.append(this.frontendCode); + if (options.useCubeMapRotation) { + decl.append("#define CUBEMAP_ROTATION"); + } + if (this.needsNormal) { + func.append(chunks.cubeMapRotatePS); + func.append(options.cubeMapProjection > 0 ? chunks.cubeMapProjectBoxPS : chunks.cubeMapProjectNonePS); + func.append(options.skyboxIntensity ? chunks.envMultiplyPS : chunks.envConstPS); + } + if (this.lighting && options.useSpecular || this.reflections) { + if (options.useMetalness) { + func.append(chunks.metalnessModulatePS); + } + if (options.fresnelModel === FRESNEL_SCHLICK) { + func.append(chunks.fresnelSchlickPS); + } + if (options.useIridescence) { + func.append(chunks.iridescenceDiffractionPS); + } + } + if (options.useAo) { + func.append(chunks.aoDiffuseOccPS); + switch (options.occludeSpecular) { + case SPECOCC_AO: + func.append(options.occludeSpecularFloat ? chunks.aoSpecOccSimplePS : chunks.aoSpecOccConstSimplePS); + break; + case SPECOCC_GLOSSDEPENDENT: + func.append(options.occludeSpecularFloat ? chunks.aoSpecOccPS : chunks.aoSpecOccConstPS); + break; + } + } + if (options.reflectionSource === "envAtlasHQ") { + func.append(options.fixSeams ? chunks.fixCubemapSeamsStretchPS : chunks.fixCubemapSeamsNonePS); + func.append(chunks.envAtlasPS); + func.append(chunks.reflectionEnvHQPS.replace(/\$DECODE_CUBEMAP/g, ChunkUtils.decodeFunc(options.reflectionCubemapEncoding)).replace(/\$DECODE/g, ChunkUtils.decodeFunc(options.reflectionEncoding))); + } else if (options.reflectionSource === "envAtlas") { + func.append(chunks.envAtlasPS); + func.append(chunks.reflectionEnvPS.replace(/\$DECODE/g, ChunkUtils.decodeFunc(options.reflectionEncoding))); + } else if (options.reflectionSource === "cubeMap") { + func.append(options.fixSeams ? chunks.fixCubemapSeamsStretchPS : chunks.fixCubemapSeamsNonePS); + func.append(chunks.reflectionCubePS.replace(/\$DECODE/g, ChunkUtils.decodeFunc(options.reflectionEncoding))); + } else if (options.reflectionSource === "sphereMap") { + func.append(chunks.reflectionSpherePS.replace(/\$DECODE/g, ChunkUtils.decodeFunc(options.reflectionEncoding))); + } + if (this.reflections) { + if (options.useClearCoat) { + func.append(chunks.reflectionCCPS); + } + if (options.useSheen) { + func.append(chunks.reflectionSheenPS); + } + } + if (options.useRefraction) { + if (options.useDynamicRefraction) { + if (options.dispersion) { + decl.append("uniform float material_dispersion;"); + decl.append("#define DISPERSION\n"); + } + func.append(chunks.refractionDynamicPS); + } else if (this.reflections) { + func.append(chunks.refractionCubePS); + } + } + if (options.useSheen) { + func.append(chunks.lightSheenPS); + } + if (options.clusteredLightingEnabled) { + func.append(chunks.clusteredLightUtilsPS); + if (options.clusteredLightingCookiesEnabled) func.append(chunks.clusteredLightCookiesPS); + if (options.clusteredLightingShadowsEnabled && !options.noShadow) { + shadowTypeUsed[SHADOW_PCF3] = true; + shadowTypeUsed[SHADOW_PCF5] = true; + shadowTypeUsed[SHADOW_PCSS] = true; + } + } + if (numShadowLights > 0 || options.clusteredLightingEnabled) { + if (shadowedDirectionalLightUsed) { + func.append(chunks.shadowCascadesPS); + } + if (shadowTypeUsed[SHADOW_PCF1] || shadowTypeUsed[SHADOW_PCF3]) { + func.append(chunks.shadowStandardPS); + } + if (shadowTypeUsed[SHADOW_PCF5] && !device.isWebGL1) { + func.append(chunks.shadowStandardGL2PS); + } + if (useVsm) { + func.append(chunks.shadowVSM_commonPS); + if (shadowTypeUsed[SHADOW_VSM8]) { + func.append(chunks.shadowVSM8PS); + } + if (shadowTypeUsed[SHADOW_VSM16]) { + func.append(device.extTextureHalfFloatLinear ? chunks.shadowEVSMPS.replace(/\$/g, "16") : chunks.shadowEVSMnPS.replace(/\$/g, "16")); + } + if (shadowTypeUsed[SHADOW_VSM32]) { + func.append(device.extTextureFloatLinear ? chunks.shadowEVSMPS.replace(/\$/g, "32") : chunks.shadowEVSMnPS.replace(/\$/g, "32")); + } + } + if (usePcss) { + func.append(chunks.linearizeDepthPS); + func.append(chunks.shadowPCSSPS); + } + if (!(device.isWebGL2 || device.isWebGPU || device.extStandardDerivatives)) { + func.append(chunks.biasConstPS); + } + } + if (options.enableGGXSpecular) func.append("uniform float material_anisotropy;"); + if (this.lighting) { + func.append(chunks.lightDiffuseLambertPS); + if (hasAreaLights || options.clusteredLightingAreaLightsEnabled) { + func.append(chunks.ltcPS); + } + } + let useOldAmbient = false; + if (options.useSpecular) { + if (this.lighting) { + func.append(options.shadingModel === SPECULAR_PHONG ? chunks.lightSpecularPhongPS : options.enableGGXSpecular ? chunks.lightSpecularAnisoGGXPS : chunks.lightSpecularBlinnPS); + } + if (!options.fresnelModel && !this.reflections && !options.diffuseMapEnabled) { + decl.append("uniform vec3 material_ambient;"); + decl.append("#define LIT_OLD_AMBIENT"); + useOldAmbient = true; + } + } + func.append(chunks.combinePS); + if (options.lightMapEnabled) { + func.append(options.useSpecular && options.dirLightMapEnabled ? chunks.lightmapDirAddPS : chunks.lightmapAddPS); + } + const addAmbient = !options.lightMapEnabled || options.lightMapWithoutAmbient; + if (addAmbient) { + if (options.ambientSource === "ambientSH") { + func.append(chunks.ambientSHPS); + } else if (options.ambientSource === "envAtlas") { + if (options.reflectionSource !== "envAtlas" && options.reflectionSource !== "envAtlasHQ") { + func.append(chunks.envAtlasPS); + } + func.append(chunks.ambientEnvPS.replace(/\$DECODE/g, ChunkUtils.decodeFunc(options.ambientEncoding))); + } else { + func.append(chunks.ambientConstantPS); + } + } + if (options.useAmbientTint && !useOldAmbient) { + decl.append("uniform vec3 material_ambient;"); + } + if (options.useMsdf) { + if (!options.msdfTextAttribute) { + decl.append("#define UNIFORM_TEXT_PARAMETERS"); + } + func.append(chunks.msdfPS); + } + if (this.needsNormal) { + func.append(chunks.viewDirPS); + if (options.useSpecular) { + func.append(options.enableGGXSpecular ? chunks.reflDirAnisoPS : chunks.reflDirPS); + } + } + let hasPointLights = false; + let usesLinearFalloff = false; + let usesInvSquaredFalloff = false; + let usesSpot = false; + let usesCookie = false; + let usesCookieNow; + if (options.clusteredLightingEnabled && this.lighting) { + usesSpot = true; + hasPointLights = true; + usesLinearFalloff = true; + usesCookie = true; + func.append(chunks.floatUnpackingPS); + if (options.lightMaskDynamic) decl.append("#define CLUSTER_MESH_DYNAMIC_LIGHTS"); + if (options.clusteredLightingCookiesEnabled) decl.append("#define CLUSTER_COOKIES"); + if (options.clusteredLightingShadowsEnabled && !options.noShadow) { + decl.append("#define CLUSTER_SHADOWS"); + decl.append("#define CLUSTER_SHADOW_TYPE_" + shadowTypeToString[options.clusteredLightingShadowType]); + } + if (options.clusteredLightingAreaLightsEnabled) decl.append("#define CLUSTER_AREALIGHTS"); + decl.append(LightsBuffer.getShaderDefines(device)); + if (options.clusteredLightingShadowsEnabled && !options.noShadow) { + func.append(chunks.clusteredLightShadowsPS); + } + func.append(chunks.clusteredLightPS); + } + code.append(this._fsGetStartCode(code, device, chunks, options)); + if (this.needsNormal) { + code.append(" dVertexNormalW = normalize(vNormalW);"); + if ((options.useHeights || options.useNormals) && options.hasTangents) { + code.append(" dTangentW = vTangentW;"); + code.append(" dBinormalW = vBinormalW;"); + } + code.append(" getViewDir();"); + if (hasTBN) { + code.append(" getTBN(dTangentW, dBinormalW, dVertexNormalW);"); + if (options.twoSidedLighting) { + code.append(" handleTwoSidedLighting();"); + } + } + } + code.append(this.frontendFunc); + if (this.needsNormal) { + if (options.useSpecular) { + backend.append(" getReflDir(litArgs_worldNormal, dViewDirW, litArgs_gloss, dTBN);"); + } + if (options.useClearCoat) { + backend.append(" ccReflDirW = normalize(-reflect(dViewDirW, litArgs_clearcoat_worldNormal));"); + } + } + if (this.lighting && options.useSpecular || this.reflections) { + if (options.useMetalness) { + backend.append(" float f0 = 1.0 / litArgs_ior; f0 = (f0 - 1.0) / (f0 + 1.0); f0 *= f0;"); + backend.append(" litArgs_specularity = getSpecularModulate(litArgs_specularity, litArgs_albedo, litArgs_metalness, f0);"); + backend.append(" litArgs_albedo = getAlbedoModulate(litArgs_albedo, litArgs_metalness);"); + } + if (options.useIridescence) { + backend.append(" vec3 iridescenceFresnel = getIridescence(saturate(dot(dViewDirW, litArgs_worldNormal)), litArgs_specularity, litArgs_iridescence_thickness);"); + } + } + if (addAmbient) { + backend.append(" addAmbient(litArgs_worldNormal);"); + if (options.conserveEnergy && options.useSpecular) { + backend.append(` dDiffuseLight = dDiffuseLight * (1.0 - litArgs_specularity);`); + } + if (options.separateAmbient) { + backend.append(` + vec3 dAmbientLight = dDiffuseLight; + dDiffuseLight = vec3(0); + `); + } + } + if (options.useAmbientTint && !useOldAmbient) { + backend.append(" dDiffuseLight *= material_ambient;"); + } + if (options.useAo && !options.occludeDirect) { + backend.append(" occludeDiffuse(litArgs_ao);"); + } + if (options.lightMapEnabled) { + backend.append(` addLightMap( + litArgs_lightmap, + litArgs_lightmapDir, + litArgs_worldNormal, + dViewDirW, + dReflDirW, + litArgs_gloss, + litArgs_specularity, + dVertexNormalW, + dTBN + #if defined(LIT_IRIDESCENCE) + , iridescenceFresnel, + litArgs_iridescence_intensity + #endif + );`); + } + if (this.lighting || this.reflections) { + if (this.reflections) { + if (options.useClearCoat) { + backend.append(" addReflectionCC(ccReflDirW, litArgs_clearcoat_gloss);"); + if (options.fresnelModel > 0) { + backend.append(" ccFresnel = getFresnelCC(dot(dViewDirW, litArgs_clearcoat_worldNormal));"); + backend.append(" ccReflection.rgb *= ccFresnel;"); + } else { + backend.append(" ccFresnel = 0.0;"); + } + } + if (options.useSpecularityFactor) { + backend.append(" ccReflection.rgb *= litArgs_specularityFactor;"); + } + if (options.useSheen) { + backend.append(" addReflectionSheen(litArgs_worldNormal, dViewDirW, litArgs_sheen_gloss);"); + } + backend.append(" addReflection(dReflDirW, litArgs_gloss);"); + if (options.fresnelModel > 0) { + backend.append(` dReflection.rgb *= + getFresnel( + dot(dViewDirW, litArgs_worldNormal), + litArgs_gloss, + litArgs_specularity + #if defined(LIT_IRIDESCENCE) + , iridescenceFresnel, + litArgs_iridescence_intensity + #endif + );`); + } else { + backend.append(" dReflection.rgb *= litArgs_specularity;"); + } + if (options.useSpecularityFactor) { + backend.append(" dReflection.rgb *= litArgs_specularityFactor;"); + } + } + if (hasAreaLights) { + backend.append(" dSpecularLight *= litArgs_specularity;"); + if (options.useSpecular) { + backend.append(" calcLTCLightValues(litArgs_gloss, litArgs_worldNormal, dViewDirW, litArgs_specularity, litArgs_clearcoat_gloss, litArgs_clearcoat_worldNormal, litArgs_clearcoat_specularity);"); + } + } + for (let i = 0; i < options.lights.length; i++) { + const light = options.lights[i]; + const lightType = light._type; + if (options.clusteredLightingEnabled && lightType !== LIGHTTYPE_DIRECTIONAL) { + continue; + } + usesCookieNow = false; + const lightShape = hasAreaLights && light._shape ? light.shape : LIGHTSHAPE_PUNCTUAL; + const shapeString = hasAreaLights && light._shape ? this._getLightSourceShapeString(lightShape) : ""; + if (lightShape !== LIGHTSHAPE_PUNCTUAL) { + backend.append(" calc" + shapeString + "LightValues(light" + i + "_position, light" + i + "_halfWidth, light" + i + "_halfHeight);"); + } + if (lightType === LIGHTTYPE_DIRECTIONAL) { + backend.append(" dLightDirNormW = light" + i + "_direction;"); + backend.append(" dAtten = 1.0;"); + } else { + if (light._cookie) { + if (lightType === LIGHTTYPE_SPOT && !light._cookie._cubemap) { + usesCookie = true; + usesCookieNow = true; + } else if (lightType === LIGHTTYPE_OMNI && light._cookie._cubemap) { + usesCookie = true; + usesCookieNow = true; + } + } + backend.append(" getLightDirPoint(light" + i + "_position);"); + hasPointLights = true; + if (usesCookieNow) { + if (lightType === LIGHTTYPE_SPOT) { + backend.append(" dAtten3 = getCookie2D" + (light._cookieFalloff ? "" : "Clip") + (light._cookieTransform ? "Xform" : "") + "(light" + i + "_cookie, light" + i + "_shadowMatrix, light" + i + "_cookieIntensity" + (light._cookieTransform ? ", light" + i + "_cookieMatrix, light" + i + "_cookieOffset" : "") + ")." + light._cookieChannel + ";"); + } else { + backend.append(" dAtten3 = getCookieCube(light" + i + "_cookie, light" + i + "_shadowMatrix, light" + i + "_cookieIntensity)." + light._cookieChannel + ";"); + } + } + if (lightShape === LIGHTSHAPE_PUNCTUAL) { + if (light._falloffMode === LIGHTFALLOFF_LINEAR) { + backend.append(" dAtten = getFalloffLinear(light" + i + "_radius, dLightDirW);"); + usesLinearFalloff = true; + } else { + backend.append(" dAtten = getFalloffInvSquared(light" + i + "_radius, dLightDirW);"); + usesInvSquaredFalloff = true; + } + } else { + backend.append(" dAtten = getFalloffWindow(light" + i + "_radius, dLightDirW);"); + usesInvSquaredFalloff = true; + } + backend.append(" if (dAtten > 0.00001) {"); + if (lightType === LIGHTTYPE_SPOT) { + if (!(usesCookieNow && !light._cookieFalloff)) { + backend.append(" dAtten *= getSpotEffect(light" + i + "_direction, light" + i + "_innerConeAngle, light" + i + "_outerConeAngle, dLightDirNormW);"); + usesSpot = true; + } + } + } + if (lightShape !== LIGHTSHAPE_PUNCTUAL) { + if (lightType === LIGHTTYPE_DIRECTIONAL) { + backend.append(" dAttenD = getLightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirW, dLightDirNormW);"); + } else { + backend.append(" dAttenD = get" + shapeString + "LightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirW, dLightDirNormW) * 16.0;"); + } + } else { + backend.append(" dAtten *= getLightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirW, dLightDirNormW);"); + } + if (light.castShadows && !options.noShadow) { + const pcssShadows = light._shadowType === SHADOW_PCSS; + const vsmShadows = light._shadowType === SHADOW_VSM8 || light._shadowType === SHADOW_VSM16 || light._shadowType === SHADOW_VSM32; + const pcfShadows = light._shadowType === SHADOW_PCF1 || light._shadowType === SHADOW_PCF3 || light._shadowType === SHADOW_PCF5; + let shadowReadMode = null; + let evsmExp; + switch (light._shadowType) { + case SHADOW_VSM8: + shadowReadMode = "VSM8"; + evsmExp = "0.0"; + break; + case SHADOW_VSM16: + shadowReadMode = "VSM16"; + evsmExp = "5.54"; + break; + case SHADOW_VSM32: + shadowReadMode = "VSM32"; + if (device.textureFloatHighPrecision) { + evsmExp = "15.0"; + } else { + evsmExp = "5.54"; + } + break; + case SHADOW_PCF1: + shadowReadMode = "PCF1x1"; + break; + case SHADOW_PCF5: + shadowReadMode = "PCF5x5"; + break; + case SHADOW_PCSS: + shadowReadMode = "PCSS"; + break; + case SHADOW_PCF3: + default: + shadowReadMode = "PCF3x3"; + break; + } + if (shadowReadMode !== null) { + if (light._normalOffsetBias && !light._isVsm) { + func.append("#define SHADOW_SAMPLE_NORMAL_OFFSET"); + } + if (lightType === LIGHTTYPE_DIRECTIONAL) { + func.append("#define SHADOW_SAMPLE_ORTHO"); + } + if ((pcfShadows || pcssShadows) && device.isWebGL2 || device.isWebGPU || device.extStandardDerivatives) { + func.append("#define SHADOW_SAMPLE_SOURCE_ZBUFFER"); + } + if (lightType === LIGHTTYPE_OMNI) { + func.append("#define SHADOW_SAMPLE_POINT"); + } + const coordCode = chunks.shadowSampleCoordPS; + func.append(coordCode.replace("$LIGHT", i)); + func.append("#undef SHADOW_SAMPLE_NORMAL_OFFSET"); + func.append("#undef SHADOW_SAMPLE_ORTHO"); + func.append("#undef SHADOW_SAMPLE_SOURCE_ZBUFFER"); + func.append("#undef SHADOW_SAMPLE_POINT"); + let shadowMatrix = `light${i}_shadowMatrix`; + if (lightType === LIGHTTYPE_DIRECTIONAL && light.numCascades > 1) { + backend.append(` getShadowCascadeMatrix(light${i}_shadowMatrixPalette, light${i}_shadowCascadeDistances, light${i}_shadowCascadeCount);`); + shadowMatrix = `cascadeShadowMat`; + } + backend.append(` dShadowCoord = getShadowSampleCoord${i}(${shadowMatrix}, light${i}_shadowParams, vPositionW, dLightPosW, dLightDirW, dLightDirNormW, dVertexNormalW);`); + if (lightType === LIGHTTYPE_DIRECTIONAL) { + backend.append(` fadeShadow(light${i}_shadowCascadeDistances);`); + } + var shadowCoordArgs = `SHADOWMAP_PASS(light${i}_shadowMap), dShadowCoord, light${i}_shadowParams`; + if (vsmShadows) { + shadowCoordArgs = `${shadowCoordArgs}, ${evsmExp}, dLightDirW`; + } else if (pcssShadows) { + let penumbraSizeArg = `vec2(light${i}_shadowSearchArea)`; + if (lightShape !== LIGHTSHAPE_PUNCTUAL) { + penumbraSizeArg = `vec2(length(light${i}_halfWidth), length(light${i}_halfHeight)) * light${i}_shadowSearchArea`; + } + shadowCoordArgs = `${shadowCoordArgs}, light${i}_cameraParams, ${penumbraSizeArg}, dLightDirW`; + } + if (lightType === LIGHTTYPE_OMNI) { + shadowReadMode = `Point${shadowReadMode}`; + if (!pcssShadows) { + shadowCoordArgs = `${shadowCoordArgs}, dLightDirW`; + } + } else if (lightType === LIGHTTYPE_SPOT) { + shadowReadMode = `Spot${shadowReadMode}`; + } + backend.append(` float shadow${i} = getShadow${shadowReadMode}(${shadowCoordArgs});`); + backend.append(` dAtten *= mix(1.0, shadow${i}, light${i}_shadowIntensity);`); + } + } + if (lightShape !== LIGHTSHAPE_PUNCTUAL) { + if (options.conserveEnergy && options.useSpecular) { + backend.append(" dDiffuseLight += ((dAttenD * dAtten) * light" + i + "_color" + (usesCookieNow ? " * dAtten3" : "") + ") * (1.0 - dLTCSpecFres);"); + } else { + backend.append(" dDiffuseLight += (dAttenD * dAtten) * light" + i + "_color" + (usesCookieNow ? " * dAtten3" : "") + ";"); + } + } else { + if (hasAreaLights && options.conserveEnergy && options.useSpecular) { + backend.append(" dDiffuseLight += (dAtten * light" + i + "_color" + (usesCookieNow ? " * dAtten3" : "") + ") * (1.0 - litArgs_specularity);"); + } else { + backend.append(" dDiffuseLight += dAtten * light" + i + "_color" + (usesCookieNow ? " * dAtten3" : "") + ";"); + } + } + if (options.useSpecular) { + backend.append(" dHalfDirW = normalize(-dLightDirNormW + dViewDirW);"); + } + if (light.affectSpecularity) { + if (lightShape !== LIGHTSHAPE_PUNCTUAL) { + if (options.useClearCoat) { + backend.append(` ccSpecularLight += ccLTCSpecFres * get${shapeString}LightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * light${i}_color` + (usesCookieNow ? " * dAtten3" : "") + ";"); + } + if (options.useSpecular) { + backend.append(` dSpecularLight += dLTCSpecFres * get${shapeString}LightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * light${i}_color` + (usesCookieNow ? " * dAtten3" : "") + ";"); + } + } else { + var calcFresnel = false; + if (lightType === LIGHTTYPE_DIRECTIONAL && options.fresnelModel > 0) { + calcFresnel = true; + } + if (options.useClearCoat) { + backend.append(` ccSpecularLight += getLightSpecular(dHalfDirW, ccReflDirW, litArgs_clearcoat_worldNormal, dViewDirW, dLightDirNormW, litArgs_clearcoat_gloss, dTBN) * dAtten * light${i}_color` + (usesCookieNow ? " * dAtten3" : "") + (calcFresnel ? " * getFresnelCC(dot(dViewDirW, dHalfDirW));" : ";")); + } + if (options.useSheen) { + backend.append(` sSpecularLight += getLightSpecularSheen(dHalfDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_sheen_gloss) * dAtten * light${i}_color` + (usesCookieNow ? " * dAtten3;" : ";")); + } + if (options.useSpecular) { + backend.append(` dSpecularLight += getLightSpecular(dHalfDirW, dReflDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_gloss, dTBN) * dAtten * light${i}_color` + (usesCookieNow ? " * dAtten3" : "") + (calcFresnel ? ` + * getFresnel( + dot(dViewDirW, dHalfDirW), + litArgs_gloss, + litArgs_specularity + #if defined(LIT_IRIDESCENCE) + , iridescenceFresnel, + litArgs_iridescence_intensity + #endif + );` : `* litArgs_specularity;`)); + } + } + } + if (lightType !== LIGHTTYPE_DIRECTIONAL) { + backend.append(" }"); + } + } + if (options.clusteredLightingEnabled && this.lighting) { + usesLinearFalloff = true; + usesInvSquaredFalloff = true; + hasPointLights = true; + backend.append(` addClusteredLights( + litArgs_worldNormal, + dViewDirW, + dReflDirW, + #if defined(LIT_CLEARCOAT) + ccReflDirW, + #endif + litArgs_gloss, + litArgs_specularity, + dVertexNormalW, + dTBN, + #if defined(LIT_IRIDESCENCE) + iridescenceFresnel, + #endif + litArgs_clearcoat_worldNormal, + litArgs_clearcoat_gloss, + litArgs_sheen_gloss, + litArgs_iridescence_intensity + );`); + } + if (hasAreaLights) { + if (options.useClearCoat) { + backend.append(" litArgs_clearcoat_specularity = 1.0;"); + } + if (options.useSpecular) { + backend.append(" litArgs_specularity = vec3(1);"); + } + } + if (options.useRefraction) { + backend.append(` addRefraction( + litArgs_worldNormal, + dViewDirW, + litArgs_thickness, + litArgs_gloss, + litArgs_specularity, + litArgs_albedo, + litArgs_transmission, + litArgs_ior, + litArgs_dispersion + #if defined(LIT_IRIDESCENCE) + , iridescenceFresnel, + litArgs_iridescence_intensity + #endif + );`); + } + } + if (options.useAo) { + if (options.occludeDirect) { + backend.append(" occludeDiffuse(litArgs_ao);"); + } + if (options.occludeSpecular === SPECOCC_AO || options.occludeSpecular === SPECOCC_GLOSSDEPENDENT) { + backend.append(" occludeSpecular(litArgs_gloss, litArgs_ao, litArgs_worldNormal, dViewDirW);"); + } + } + if (options.useSpecularityFactor) { + backend.append(" dSpecularLight *= litArgs_specularityFactor;"); + } + if (options.opacityFadesSpecular === false) { + if (options.blendType === BLEND_NORMAL || options.blendType === BLEND_PREMULTIPLIED) { + backend.append("float specLum = dot((dSpecularLight + dReflection.rgb * dReflection.a), vec3( 0.2126, 0.7152, 0.0722 ));"); + backend.append("#ifdef LIT_CLEARCOAT\n specLum += dot(ccSpecularLight * litArgs_clearcoat_specularity + ccReflection.rgb * litArgs_clearcoat_specularity, vec3( 0.2126, 0.7152, 0.0722 ));\n#endif"); + backend.append("litArgs_opacity = clamp(litArgs_opacity + gammaCorrectInput(specLum), 0.0, 1.0);"); + } + backend.append("litArgs_opacity *= material_alphaFade;"); + } + backend.append(chunks.endPS); + if (options.blendType === BLEND_NORMAL || options.blendType === BLEND_ADDITIVEALPHA || options.alphaToCoverage) { + backend.append(chunks.outputAlphaPS); + } else if (options.blendType === BLEND_PREMULTIPLIED) { + backend.append(chunks.outputAlphaPremulPS); + } else { + backend.append(chunks.outputAlphaOpaquePS); + } + if (options.useMsdf) { + backend.append(" gl_FragColor = applyMsdf(gl_FragColor);"); + } + backend.append(chunks.outputPS); + backend.append(chunks.debugOutputPS); + if (hasPointLights) { + func.prepend(chunks.lightDirPointPS); + } + if (usesLinearFalloff) { + func.prepend(chunks.falloffLinearPS); + } + if (usesInvSquaredFalloff) { + func.prepend(chunks.falloffInvSquaredPS); + } + if (usesSpot) { + func.prepend(chunks.spotPS); + } + if (usesCookie && !options.clusteredLightingEnabled) { + func.prepend(chunks.cookiePS); + } + let structCode = ""; + const backendCode = `void evaluateBackend() { +${backend.code} +}`; + func.append(backendCode); + code.append(chunks.debugProcessFrontendPS); + code.append(" evaluateBackend();"); + code.append(ShaderGenerator.end()); + const mergedCode = decl.code + func.code + code.code; + if (mergedCode.includes("dTBN")) structCode += "mat3 dTBN;\n"; + if (mergedCode.includes("dVertexNormalW")) structCode += "vec3 dVertexNormalW;\n"; + if (mergedCode.includes("dTangentW")) structCode += "vec3 dTangentW;\n"; + if (mergedCode.includes("dBinormalW")) structCode += "vec3 dBinormalW;\n"; + if (mergedCode.includes("dViewDirW")) structCode += "vec3 dViewDirW;\n"; + if (mergedCode.includes("dReflDirW")) structCode += "vec3 dReflDirW;\n"; + if (mergedCode.includes("dHalfDirW")) structCode += "vec3 dHalfDirW;\n"; + if (mergedCode.includes("ccReflDirW")) structCode += "vec3 ccReflDirW;\n"; + if (mergedCode.includes("dLightDirNormW")) structCode += "vec3 dLightDirNormW;\n"; + if (mergedCode.includes("dLightDirW")) structCode += "vec3 dLightDirW;\n"; + if (mergedCode.includes("dLightPosW")) structCode += "vec3 dLightPosW;\n"; + if (mergedCode.includes("dShadowCoord")) structCode += "vec3 dShadowCoord;\n"; + if (mergedCode.includes("dReflection")) structCode += "vec4 dReflection;\n"; + if (mergedCode.includes("dDiffuseLight")) structCode += "vec3 dDiffuseLight;\n"; + if (mergedCode.includes("dSpecularLight")) structCode += "vec3 dSpecularLight;\n"; + if (mergedCode.includes("dAtten")) structCode += "float dAtten;\n"; + if (mergedCode.includes("dAttenD")) structCode += "float dAttenD;\n"; + if (mergedCode.includes("dAtten3")) structCode += "vec3 dAtten3;\n"; + if (mergedCode.includes("dMsdf")) structCode += "vec4 dMsdf;\n"; + if (mergedCode.includes("ccFresnel")) structCode += "float ccFresnel;\n"; + if (mergedCode.includes("ccReflection")) structCode += "vec3 ccReflection;\n"; + if (mergedCode.includes("ccSpecularLight")) structCode += "vec3 ccSpecularLight;\n"; + if (mergedCode.includes("ccSpecularityNoFres")) structCode += "float ccSpecularityNoFres;\n"; + if (mergedCode.includes("sSpecularLight")) structCode += "vec3 sSpecularLight;\n"; + if (mergedCode.includes("sReflection")) structCode += "vec3 sReflection;\n"; + const result = this._fsGetBeginCode() + this.varyings + this.varyingDefines + this._fsGetBaseCode() + structCode + this.frontendDecl + mergedCode; + return result; + } + generateFragmentShader(frontendDecl, frontendCode, frontendFunc, lightingUv) { + var _this$handleCompatibi; + const options = this.options; + this.frontendDecl = frontendDecl; + this.frontendCode = frontendCode; + this.frontendFunc = frontendFunc; + this.lightingUv = lightingUv; + if (options.pass === SHADER_PICK) { + this.fshader = this._fsGetPickPassCode(); + } else if (options.pass === SHADER_DEPTH) { + this.fshader = this._fsGetDepthPassCode(); + } else if (options.pass === SHADER_PREPASS_VELOCITY) { + this.fshader = this._fsGetPrePassVelocityCode(); + } else if (this.shadowPass) { + this.fshader = this._fsGetShadowPassCode(); + } else if (options.customFragmentShader) { + this.fshader = this._fsGetBeginCode() + options.customFragmentShader; + } else { + this.fshader = this._fsGetLitPassCode(); + } + (_this$handleCompatibi = this.handleCompatibility) == null || _this$handleCompatibi.call(this); + } + getDefinition() { + const definition = ShaderUtils.createDefinition(this.device, { + name: "LitShader", + attributes: this.attributes, + vertexCode: this.vshader, + fragmentCode: this.fshader + }); + if (this.shaderPassInfo.isForward) { + definition.tag = SHADERTAG_MATERIAL; + } + return definition; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/lit-options-utils.js +var LitOptionsUtils = { + generateKey(options) { + return "lit" + Object.keys(options).sort().map((key) => { + if (key === "chunks") { + return LitOptionsUtils.generateChunksKey(options); + } else if (key === "lights") { + return LitOptionsUtils.generateLightsKey(options); + } + return key + options[key]; + }).join("\n"); + }, + generateLightsKey(options) { + return "lights:" + options.lights.map((light) => { + return !options.clusteredLightingEnabled || light._type === LIGHTTYPE_DIRECTIONAL ? `${light.key},` : ""; + }).join(""); + }, + generateChunksKey(options) { + var _options$chunks; + return "chunks:\n" + Object.keys((_options$chunks = options.chunks) != null ? _options$chunks : {}).sort().map((key) => key + options.chunks[key]).join(""); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/lighting/world-clusters.js +var tempVec32 = new Vec3(); +var tempMin3 = new Vec3(); +var tempMax3 = new Vec3(); +var tempBox = new BoundingBox(); +var epsilon2 = 1e-6; +var ClusterLight = class { + constructor() { + this.light = null; + this.min = new Vec3(); + this.max = new Vec3(); + } +}; +var WorldClusters = class { + constructor(device) { + this.clusterTexture = void 0; + this.device = device; + this.name = "Untitled"; + this.reportCount = 0; + this.boundsMin = new Vec3(); + this.boundsMax = new Vec3(); + this.boundsDelta = new Vec3(); + this._cells = new Vec3(1, 1, 1); + this._cellsLimit = new Vec3(); + this.cells = this._cells; + this.maxCellLightCount = 4; + this._maxAttenuation = 0; + this._maxColorValue = 0; + this._usedLights = []; + this._usedLights.push(new ClusterLight()); + this.lightsBuffer = new LightsBuffer(device); + this.registerUniforms(device); + } + set maxCellLightCount(count) { + if (count !== this._maxCellLightCount) { + this._maxCellLightCount = count; + this._cellsDirty = true; + } + } + get maxCellLightCount() { + return this._maxCellLightCount; + } + set cells(value) { + tempVec32.copy(value).floor(); + if (!this._cells.equals(tempVec32)) { + this._cells.copy(tempVec32); + this._cellsLimit.copy(tempVec32).sub(Vec3.ONE); + this._cellsDirty = true; + } + } + get cells() { + return this._cells; + } + destroy() { + this.lightsBuffer.destroy(); + this.releaseClusterTexture(); + } + releaseClusterTexture() { + if (this.clusterTexture) { + this.clusterTexture.destroy(); + this.clusterTexture = null; + } + } + registerUniforms(device) { + this._clusterSkipId = device.scope.resolve("clusterSkip"); + this._clusterMaxCellsId = device.scope.resolve("clusterMaxCells"); + this._clusterWorldTextureId = device.scope.resolve("clusterWorldTexture"); + this._clusterTextureSizeId = device.scope.resolve("clusterTextureSize"); + this._clusterTextureSizeData = new Float32Array(3); + this._clusterBoundsMinId = device.scope.resolve("clusterBoundsMin"); + this._clusterBoundsMinData = new Float32Array(3); + this._clusterBoundsDeltaId = device.scope.resolve("clusterBoundsDelta"); + this._clusterBoundsDeltaData = new Float32Array(3); + this._clusterCellsCountByBoundsSizeId = device.scope.resolve("clusterCellsCountByBoundsSize"); + this._clusterCellsCountByBoundsSizeData = new Float32Array(3); + this._clusterCellsDotId = device.scope.resolve("clusterCellsDot"); + this._clusterCellsDotData = new Float32Array(3); + this._clusterCellsMaxId = device.scope.resolve("clusterCellsMax"); + this._clusterCellsMaxData = new Float32Array(3); + this._clusterCompressionLimit0Id = device.scope.resolve("clusterCompressionLimit0"); + this._clusterCompressionLimit0Data = new Float32Array(2); + } + updateParams(lightingParams) { + if (lightingParams) { + this.cells = lightingParams.cells; + this.maxCellLightCount = lightingParams.maxLightsPerCell; + this.lightsBuffer.cookiesEnabled = lightingParams.cookiesEnabled; + this.lightsBuffer.shadowsEnabled = lightingParams.shadowsEnabled; + this.lightsBuffer.areaLightsEnabled = lightingParams.areaLightsEnabled; + } + } + updateCells() { + if (this._cellsDirty) { + this._cellsDirty = false; + const cx = this._cells.x; + const cy = this._cells.y; + const cz = this._cells.z; + const numCells = cx * cy * cz; + const totalPixels = this.maxCellLightCount * numCells; + let width = Math.ceil(Math.sqrt(totalPixels)); + width = math.roundUp(width, this.maxCellLightCount); + const height = Math.ceil(totalPixels / width); + this._clusterCellsMaxData[0] = cx; + this._clusterCellsMaxData[1] = cy; + this._clusterCellsMaxData[2] = cz; + this._clusterCellsDotData[0] = this.maxCellLightCount; + this._clusterCellsDotData[1] = cx * cz * this.maxCellLightCount; + this._clusterCellsDotData[2] = cx * this.maxCellLightCount; + this.clusters = new Uint8ClampedArray(totalPixels); + this.counts = new Int32Array(numCells); + this._clusterTextureSizeData[0] = width; + this._clusterTextureSizeData[1] = 1 / width; + this._clusterTextureSizeData[2] = 1 / height; + this.releaseClusterTexture(); + this.clusterTexture = this.lightsBuffer.createTexture(this.device, width, height, PIXELFORMAT_L8, "ClusterTexture"); + } + } + uploadTextures() { + this.clusterTexture.lock().set(this.clusters); + this.clusterTexture.unlock(); + this.lightsBuffer.uploadTextures(); + } + updateUniforms() { + this._clusterSkipId.setValue(this._usedLights.length > 1 ? 0 : 1); + this.lightsBuffer.updateUniforms(); + this._clusterWorldTextureId.setValue(this.clusterTexture); + this._clusterMaxCellsId.setValue(this.maxCellLightCount); + const boundsDelta = this.boundsDelta; + this._clusterCellsCountByBoundsSizeData[0] = this._cells.x / boundsDelta.x; + this._clusterCellsCountByBoundsSizeData[1] = this._cells.y / boundsDelta.y; + this._clusterCellsCountByBoundsSizeData[2] = this._cells.z / boundsDelta.z; + this._clusterCellsCountByBoundsSizeId.setValue(this._clusterCellsCountByBoundsSizeData); + this._clusterBoundsMinData[0] = this.boundsMin.x; + this._clusterBoundsMinData[1] = this.boundsMin.y; + this._clusterBoundsMinData[2] = this.boundsMin.z; + this._clusterBoundsDeltaData[0] = boundsDelta.x; + this._clusterBoundsDeltaData[1] = boundsDelta.y; + this._clusterBoundsDeltaData[2] = boundsDelta.z; + this._clusterCompressionLimit0Data[0] = this._maxAttenuation; + this._clusterCompressionLimit0Data[1] = this._maxColorValue; + this._clusterTextureSizeId.setValue(this._clusterTextureSizeData); + this._clusterBoundsMinId.setValue(this._clusterBoundsMinData); + this._clusterBoundsDeltaId.setValue(this._clusterBoundsDeltaData); + this._clusterCellsDotId.setValue(this._clusterCellsDotData); + this._clusterCellsMaxId.setValue(this._clusterCellsMaxData); + this._clusterCompressionLimit0Id.setValue(this._clusterCompressionLimit0Data); + } + evalLightCellMinMax(clusteredLight, min, max) { + min.copy(clusteredLight.min); + min.sub(this.boundsMin); + min.div(this.boundsDelta); + min.mul2(min, this.cells); + min.floor(); + max.copy(clusteredLight.max); + max.sub(this.boundsMin); + max.div(this.boundsDelta); + max.mul2(max, this.cells); + max.ceil(); + min.max(Vec3.ZERO); + max.min(this._cellsLimit); + } + collectLights(lights2) { + const maxLights = this.lightsBuffer.maxLights; + const usedLights = this._usedLights; + let lightIndex = 1; + lights2.forEach((light) => { + const runtimeLight = !!(light.mask & (MASK_AFFECT_DYNAMIC | MASK_AFFECT_LIGHTMAPPED)); + const zeroAngleSpotlight = light.type === LIGHTTYPE_SPOT && light._outerConeAngle === 0; + if (light.enabled && light.type !== LIGHTTYPE_DIRECTIONAL && light.visibleThisFrame && light.intensity > 0 && runtimeLight && !zeroAngleSpotlight) { + if (lightIndex < maxLights) { + let clusteredLight; + if (lightIndex < usedLights.length) { + clusteredLight = usedLights[lightIndex]; + } else { + clusteredLight = new ClusterLight(); + usedLights.push(clusteredLight); + } + clusteredLight.light = light; + light.getBoundingBox(tempBox); + clusteredLight.min.copy(tempBox.getMin()); + clusteredLight.max.copy(tempBox.getMax()); + lightIndex++; + } + } + }); + usedLights.length = lightIndex; + } + evaluateBounds() { + const usedLights = this._usedLights; + const min = this.boundsMin; + const max = this.boundsMax; + if (usedLights.length > 1) { + min.copy(usedLights[1].min); + max.copy(usedLights[1].max); + for (let i = 2; i < usedLights.length; i++) { + min.min(usedLights[i].min); + max.max(usedLights[i].max); + } + } else { + min.set(0, 0, 0); + max.set(1, 1, 1); + } + this.boundsDelta.sub2(max, min); + this.lightsBuffer.setBounds(min, this.boundsDelta); + } + evaluateCompressionLimits(gammaCorrection) { + let maxAttenuation = 0; + let maxColorValue = 0; + const usedLights = this._usedLights; + for (let i = 1; i < usedLights.length; i++) { + const light = usedLights[i].light; + maxAttenuation = Math.max(light.attenuationEnd, maxAttenuation); + const color = gammaCorrection ? light._linearFinalColor : light._finalColor; + maxColorValue = Math.max(color[0], maxColorValue); + maxColorValue = Math.max(color[1], maxColorValue); + maxColorValue = Math.max(color[2], maxColorValue); + } + this._maxAttenuation = maxAttenuation + epsilon2; + this._maxColorValue = maxColorValue + epsilon2; + this.lightsBuffer.setCompressionRanges(this._maxAttenuation, this._maxColorValue); + } + updateClusters(gammaCorrection) { + this.counts.fill(0); + this.clusters.fill(0); + const divX = this._cells.x; + const divZ = this._cells.z; + const counts = this.counts; + const limit = this._maxCellLightCount; + const clusters = this.clusters; + const pixelsPerCellCount = this.maxCellLightCount; + const usedLights = this._usedLights; + for (let i = 1; i < usedLights.length; i++) { + const clusteredLight = usedLights[i]; + const light = clusteredLight.light; + this.lightsBuffer.addLightData(light, i, gammaCorrection); + this.evalLightCellMinMax(clusteredLight, tempMin3, tempMax3); + const xStart = tempMin3.x; + const xEnd = tempMax3.x; + const yStart = tempMin3.y; + const yEnd = tempMax3.y; + const zStart = tempMin3.z; + const zEnd = tempMax3.z; + for (let x2 = xStart; x2 <= xEnd; x2++) { + for (let z2 = zStart; z2 <= zEnd; z2++) { + for (let y2 = yStart; y2 <= yEnd; y2++) { + const clusterIndex = x2 + divX * (z2 + y2 * divZ); + const count = counts[clusterIndex]; + if (count < limit) { + clusters[pixelsPerCellCount * clusterIndex + count] = i; + counts[clusterIndex] = count + 1; + } + } + } + } + } + } + update(lights2, gammaCorrection, lightingParams) { + this.updateParams(lightingParams); + this.updateCells(); + this.collectLights(lights2); + this.evaluateBounds(); + this.evaluateCompressionLimits(gammaCorrection); + this.updateClusters(gammaCorrection); + this.uploadTextures(); + } + activate() { + this.updateUniforms(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-map.js +var ShadowMap = class _ShadowMap { + constructor(texture, targets) { + this.texture = texture; + this.cached = false; + this.renderTargets = targets; + } + destroy() { + if (this.texture) { + this.texture.destroy(); + this.texture = null; + } + const targets = this.renderTargets; + for (let i = 0; i < targets.length; i++) { + targets[i].destroy(); + } + this.renderTargets.length = 0; + } + static getShadowFormat(device, shadowType) { + if (shadowType === SHADOW_VSM32) { + return PIXELFORMAT_RGBA32F; + } else if (shadowType === SHADOW_VSM16) { + return PIXELFORMAT_RGBA16F; + } else if (shadowType === SHADOW_PCF5) { + return PIXELFORMAT_DEPTH; + } else if ((shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3) && device.supportsDepthShadow) { + return PIXELFORMAT_DEPTH; + } else if (shadowType === SHADOW_PCSS && !device.isWebGL1) { + return PIXELFORMAT_R32F; + } + return PIXELFORMAT_RGBA8; + } + static getShadowFiltering(device, shadowType) { + if ((shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3 || shadowType === SHADOW_PCSS) && !device.supportsDepthShadow) { + return FILTER_NEAREST; + } else if (shadowType === SHADOW_VSM32) { + return device.extTextureFloatLinear ? FILTER_LINEAR : FILTER_NEAREST; + } else if (shadowType === SHADOW_VSM16) { + return device.extTextureHalfFloatLinear ? FILTER_LINEAR : FILTER_NEAREST; + } + return FILTER_LINEAR; + } + static create(device, light) { + let shadowMap = null; + if (light._type === LIGHTTYPE_OMNI) { + shadowMap = this.createCubemap(device, light._shadowResolution, light._shadowType); + } else { + shadowMap = this.create2dMap(device, light._shadowResolution, light._shadowType); + } + return shadowMap; + } + static createAtlas(device, resolution, shadowType) { + const shadowMap = this.create2dMap(device, resolution, shadowType); + const targets = shadowMap.renderTargets; + const rt = targets[0]; + for (let i = 0; i < 5; i++) { + targets.push(rt); + } + return shadowMap; + } + static create2dMap(device, size, shadowType) { + const format = this.getShadowFormat(device, shadowType); + const filter = this.getShadowFiltering(device, shadowType); + const texture = new Texture(device, { + format, + width: size, + height: size, + mipmaps: false, + minFilter: filter, + magFilter: filter, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + name: "ShadowMap2D" + }); + let target2 = null; + if (shadowType === SHADOW_PCF5 || (shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3) && device.supportsDepthShadow) { + texture.compareOnRead = true; + texture.compareFunc = FUNC_LESS; + target2 = new RenderTarget({ + depthBuffer: texture + }); + } else { + target2 = new RenderTarget({ + colorBuffer: texture, + depth: true + }); + } + if (device.isWebGPU) { + target2.flipY = true; + } + return new _ShadowMap(texture, [target2]); + } + static createCubemap(device, size, shadowType) { + const format = shadowType === SHADOW_PCSS && !device.isWebGL1 ? PIXELFORMAT_R32F : PIXELFORMAT_RGBA8; + const cubemap = new Texture(device, { + format, + width: size, + height: size, + cubemap: true, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + name: "ShadowMapCube" + }); + const targets = []; + for (let i = 0; i < 6; i++) { + const target2 = new RenderTarget({ + colorBuffer: cubemap, + face: i, + depth: true + }); + targets.push(target2); + } + return new _ShadowMap(cubemap, targets); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/lighting/light-texture-atlas.js +var _tempArray = []; +var _tempArray2 = []; +var _viewport = new Vec4(); +var _scissor = new Vec4(); +var Slot = class { + constructor(rect) { + this.size = Math.floor(rect.w * 1024); + this.used = false; + this.lightId = -1; + this.rect = rect; + } +}; +var LightTextureAtlas = class { + constructor(device) { + this.device = device; + this.version = 1; + this.shadowAtlasResolution = 2048; + this.shadowAtlas = null; + this.shadowEdgePixels = 3; + this.cookieAtlasResolution = 4; + this.cookieAtlas = new Texture(this.device, { + name: "CookieAtlas", + width: this.cookieAtlasResolution, + height: this.cookieAtlasResolution, + format: PIXELFORMAT_RGBA8, + cubemap: false, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + this.cookieRenderTarget = new RenderTarget({ + colorBuffer: this.cookieAtlas, + depth: false, + flipY: true + }); + this.slots = []; + this.atlasSplit = []; + this.cubeSlotsOffsets = [new Vec2(0, 0), new Vec2(0, 1), new Vec2(1, 0), new Vec2(1, 1), new Vec2(2, 0), new Vec2(2, 1)]; + this.scissorVec = new Vec4(); + this.allocateShadowAtlas(1); + this.allocateCookieAtlas(1); + this.allocateUniforms(); + } + destroy() { + this.destroyShadowAtlas(); + this.destroyCookieAtlas(); + } + destroyShadowAtlas() { + var _this$shadowAtlas; + (_this$shadowAtlas = this.shadowAtlas) == null || _this$shadowAtlas.destroy(); + this.shadowAtlas = null; + } + destroyCookieAtlas() { + var _this$cookieAtlas, _this$cookieRenderTar; + (_this$cookieAtlas = this.cookieAtlas) == null || _this$cookieAtlas.destroy(); + this.cookieAtlas = null; + (_this$cookieRenderTar = this.cookieRenderTarget) == null || _this$cookieRenderTar.destroy(); + this.cookieRenderTarget = null; + } + allocateShadowAtlas(resolution) { + if (!this.shadowAtlas || this.shadowAtlas.texture.width !== resolution) { + this.version++; + this.destroyShadowAtlas(); + this.shadowAtlas = ShadowMap.createAtlas(this.device, resolution, SHADOW_PCF3); + this.shadowAtlas.cached = true; + const scissorOffset = 4 / this.shadowAtlasResolution; + this.scissorVec.set(scissorOffset, scissorOffset, -2 * scissorOffset, -2 * scissorOffset); + } + } + allocateCookieAtlas(resolution) { + if (this.cookieAtlas.width !== resolution) { + this.cookieRenderTarget.resize(resolution, resolution); + this.version++; + } + } + allocateUniforms() { + this._shadowAtlasTextureId = this.device.scope.resolve("shadowAtlasTexture"); + this._shadowAtlasParamsId = this.device.scope.resolve("shadowAtlasParams"); + this._shadowAtlasParams = new Float32Array(2); + this._cookieAtlasTextureId = this.device.scope.resolve("cookieAtlasTexture"); + } + updateUniforms() { + const isShadowFilterPcf = true; + const rt = this.shadowAtlas.renderTargets[0]; + const isDepthShadow = !this.device.isWebGL1 && isShadowFilterPcf; + const shadowBuffer = isDepthShadow ? rt.depthBuffer : rt.colorBuffer; + this._shadowAtlasTextureId.setValue(shadowBuffer); + this._shadowAtlasParams[0] = this.shadowAtlasResolution; + this._shadowAtlasParams[1] = this.shadowEdgePixels; + this._shadowAtlasParamsId.setValue(this._shadowAtlasParams); + this._cookieAtlasTextureId.setValue(this.cookieAtlas); + } + subdivide(numLights, lightingParams) { + let atlasSplit = lightingParams.atlasSplit; + if (!atlasSplit) { + const gridSize = Math.ceil(Math.sqrt(numLights)); + atlasSplit = _tempArray2; + atlasSplit[0] = gridSize; + atlasSplit.length = 1; + } + const arraysEqual2 = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]); + if (!arraysEqual2(atlasSplit, this.atlasSplit)) { + this.version++; + this.slots.length = 0; + this.atlasSplit.length = 0; + this.atlasSplit.push(...atlasSplit); + const splitCount = this.atlasSplit[0]; + if (splitCount > 1) { + const invSize = 1 / splitCount; + for (let i = 0; i < splitCount; i++) { + for (let j = 0; j < splitCount; j++) { + const rect = new Vec4(i * invSize, j * invSize, invSize, invSize); + const nextLevelSplit = this.atlasSplit[1 + i * splitCount + j]; + if (nextLevelSplit > 1) { + for (let x2 = 0; x2 < nextLevelSplit; x2++) { + for (let y2 = 0; y2 < nextLevelSplit; y2++) { + const invSizeNext = invSize / nextLevelSplit; + const rectNext = new Vec4(rect.x + x2 * invSizeNext, rect.y + y2 * invSizeNext, invSizeNext, invSizeNext); + this.slots.push(new Slot(rectNext)); + } + } + } else { + this.slots.push(new Slot(rect)); + } + } + } + } else { + this.slots.push(new Slot(new Vec4(0, 0, 1, 1))); + } + this.slots.sort((a, b) => { + return b.size - a.size; + }); + } + } + collectLights(localLights, lightingParams) { + const cookiesEnabled = lightingParams.cookiesEnabled; + const shadowsEnabled = lightingParams.shadowsEnabled; + let needsShadowAtlas = false; + let needsCookieAtlas = false; + const lights2 = _tempArray; + lights2.length = 0; + const processLights = (list) => { + for (let i = 0; i < list.length; i++) { + const light = list[i]; + if (light.visibleThisFrame) { + const lightShadow = shadowsEnabled && light.castShadows; + const lightCookie = cookiesEnabled && !!light.cookie; + needsShadowAtlas || (needsShadowAtlas = lightShadow); + needsCookieAtlas || (needsCookieAtlas = lightCookie); + if (lightShadow || lightCookie) { + lights2.push(light); + } + } + } + }; + if (cookiesEnabled || shadowsEnabled) { + processLights(localLights); + } + lights2.sort((a, b) => { + return b.maxScreenSize - a.maxScreenSize; + }); + if (needsShadowAtlas) { + this.allocateShadowAtlas(this.shadowAtlasResolution); + } + if (needsCookieAtlas) { + this.allocateCookieAtlas(this.cookieAtlasResolution); + } + if (needsShadowAtlas || needsCookieAtlas) { + this.subdivide(lights2.length, lightingParams); + } + return lights2; + } + setupSlot(light, rect) { + light.atlasViewport.copy(rect); + const faceCount = light.numShadowFaces; + for (let face = 0; face < faceCount; face++) { + if (light.castShadows || light._cookie) { + _viewport.copy(rect); + _scissor.copy(rect); + if (light._type === LIGHTTYPE_SPOT) { + _viewport.add(this.scissorVec); + } + if (light._type === LIGHTTYPE_OMNI) { + const smallSize = _viewport.z / 3; + const offset = this.cubeSlotsOffsets[face]; + _viewport.x += smallSize * offset.x; + _viewport.y += smallSize * offset.y; + _viewport.z = smallSize; + _viewport.w = smallSize; + _scissor.copy(_viewport); + } + if (light.castShadows) { + const lightRenderData = light.getRenderData(null, face); + lightRenderData.shadowViewport.copy(_viewport); + lightRenderData.shadowScissor.copy(_scissor); + } + } + } + } + assignSlot(light, slotIndex, slotReassigned) { + light.atlasViewportAllocated = true; + const slot = this.slots[slotIndex]; + slot.lightId = light.id; + slot.used = true; + if (slotReassigned) { + light.atlasSlotUpdated = true; + light.atlasVersion = this.version; + light.atlasSlotIndex = slotIndex; + } + } + update(localLights, lightingParams) { + this.shadowAtlasResolution = lightingParams.shadowAtlasResolution; + this.cookieAtlasResolution = lightingParams.cookieAtlasResolution; + const lights2 = this.collectLights(localLights, lightingParams); + if (lights2.length > 0) { + const slots = this.slots; + for (let i = 0; i < slots.length; i++) { + slots[i].used = false; + } + const assignCount = Math.min(lights2.length, slots.length); + for (let i = 0; i < assignCount; i++) { + const light = lights2[i]; + if (light.castShadows) light._shadowMap = this.shadowAtlas; + const previousSlot = slots[light.atlasSlotIndex]; + if (light.atlasVersion === this.version && light.id === (previousSlot == null ? void 0 : previousSlot.lightId)) { + const _previousSlot = slots[light.atlasSlotIndex]; + if (_previousSlot.size === slots[i].size && !_previousSlot.used) { + this.assignSlot(light, light.atlasSlotIndex, false); + } + } + } + let usedCount = 0; + for (let i = 0; i < assignCount; i++) { + while (usedCount < slots.length && slots[usedCount].used) usedCount++; + const light = lights2[i]; + if (!light.atlasViewportAllocated) { + this.assignSlot(light, usedCount, true); + } + const slot = slots[light.atlasSlotIndex]; + this.setupSlot(light, slot.rect); + } + } + this.updateUniforms(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/light-cube.js +var lightCubeDir = [new Vec3(-1, 0, 0), new Vec3(1, 0, 0), new Vec3(0, -1, 0), new Vec3(0, 1, 0), new Vec3(0, 0, -1), new Vec3(0, 0, 1)]; +var LightCube = class { + constructor() { + this.colors = new Float32Array(6 * 3); + } + update(ambientLight, lights2) { + const colors = this.colors; + const { + r, + g, + b + } = ambientLight; + for (let j = 0; j < 6; j++) { + colors[j * 3] = r; + colors[j * 3 + 1] = g; + colors[j * 3 + 2] = b; + } + for (let j = 0; j < lights2.length; j++) { + const light = lights2[j]; + if (light._type === LIGHTTYPE_DIRECTIONAL) { + for (let c2 = 0; c2 < 6; c2++) { + const weight = Math.max(lightCubeDir[c2].dot(light._direction), 0) * light._intensity; + const lightColor = light._color; + colors[c2 * 3] += lightColor.r * weight; + colors[c2 * 3 + 1] += lightColor.g * weight; + colors[c2 * 3 + 2] += lightColor.b * weight; + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-map-cache.js +var ShadowMapCache = class { + constructor() { + this.cache = /* @__PURE__ */ new Map(); + } + destroy() { + this.clear(); + this.cache = null; + } + clear() { + this.cache.forEach((shadowMaps) => { + shadowMaps.forEach((shadowMap) => { + shadowMap.destroy(); + }); + }); + this.cache.clear(); + } + getKey(light) { + const isCubeMap = light._type === LIGHTTYPE_OMNI; + const shadowType = light._shadowType; + const resolution = light._shadowResolution; + return `${isCubeMap}-${shadowType}-${resolution}`; + } + get(device, light) { + const key = this.getKey(light); + const shadowMaps = this.cache.get(key); + if (shadowMaps && shadowMaps.length) { + return shadowMaps.pop(); + } + const shadowMap = ShadowMap.create(device, light); + shadowMap.cached = true; + return shadowMap; + } + add(light, shadowMap) { + const key = this.getKey(light); + const shadowMaps = this.cache.get(key); + if (shadowMaps) { + shadowMaps.push(shadowMap); + } else { + this.cache.set(key, [shadowMap]); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-shadow-local-non-clustered.js +var RenderPassShadowLocalNonClustered = class extends RenderPass { + constructor(device, shadowRenderer, light, face, applyVsm) { + super(device); + this.requiresCubemaps = false; + this.shadowRenderer = shadowRenderer; + this.light = light; + this.face = face; + this.applyVsm = applyVsm; + this.shadowCamera = shadowRenderer.prepareFace(light, null, face); + shadowRenderer.setupRenderPass(this, this.shadowCamera, true); + } + execute() { + this.shadowRenderer.renderFace(this.light, null, this.face, false); + } + after() { + if (this.applyVsm) { + this.shadowRenderer.renderVsm(this.light, this.shadowCamera); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-renderer-local.js +var ShadowRendererLocal = class { + constructor(renderer, shadowRenderer) { + this.shadowLights = []; + this.renderer = void 0; + this.shadowRenderer = void 0; + this.device = void 0; + this.renderer = renderer; + this.shadowRenderer = shadowRenderer; + this.device = renderer.device; + } + cull(light, comp, casters = null) { + const isClustered = this.renderer.scene.clusteredLightingEnabled; + light.visibleThisFrame = true; + if (!isClustered) { + if (!light._shadowMap) { + light._shadowMap = ShadowMap.create(this.device, light); + } + } + const type2 = light._type; + const faceCount = type2 === LIGHTTYPE_SPOT ? 1 : 6; + for (let face = 0; face < faceCount; face++) { + const lightRenderData = light.getRenderData(null, face); + const shadowCam = lightRenderData.shadowCamera; + shadowCam.nearClip = light.attenuationEnd / 1e3; + shadowCam.farClip = light.attenuationEnd; + lightRenderData.depthRangeCompensation = shadowCam.farClip - shadowCam.nearClip; + const shadowCamNode = shadowCam._node; + const lightNode = light._node; + shadowCamNode.setPosition(lightNode.getPosition()); + if (type2 === LIGHTTYPE_SPOT) { + shadowCam.fov = light._outerConeAngle * 2; + shadowCamNode.setRotation(lightNode.getRotation()); + shadowCamNode.rotateLocal(-90, 0, 0); + } else if (type2 === LIGHTTYPE_OMNI) { + if (isClustered) { + const tileSize = this.shadowRenderer.lightTextureAtlas.shadowAtlasResolution * light.atlasViewport.z / 3; + const texelSize = 2 / tileSize; + const filterSize = texelSize * this.shadowRenderer.lightTextureAtlas.shadowEdgePixels; + shadowCam.fov = Math.atan(1 + filterSize) * math.RAD_TO_DEG * 2; + } else { + shadowCam.fov = 90; + } + } + this.renderer.updateCameraFrustum(shadowCam); + this.shadowRenderer.cullShadowCasters(comp, light, lightRenderData.visibleCasters, shadowCam, casters); + } + } + prepareLights(shadowLights, lights2) { + let shadowCamera; + for (let i = 0; i < lights2.length; i++) { + const light = lights2[i]; + if (this.shadowRenderer.needsShadowRendering(light) && light.atlasViewportAllocated) { + shadowLights.push(light); + for (let face = 0; face < light.numShadowFaces; face++) { + shadowCamera = this.shadowRenderer.prepareFace(light, null, face); + } + } + } + return shadowCamera; + } + buildNonClusteredRenderPasses(frameGraph, localLights) { + for (let i = 0; i < localLights.length; i++) { + const light = localLights[i]; + if (this.shadowRenderer.needsShadowRendering(light)) { + const applyVsm = light._type === LIGHTTYPE_SPOT; + const faceCount = light.numShadowFaces; + for (let face = 0; face < faceCount; face++) { + const renderPass = new RenderPassShadowLocalNonClustered(this.device, this.shadowRenderer, light, face, applyVsm); + frameGraph.addRenderPass(renderPass); + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-shadow-directional.js +var RenderPassShadowDirectional = class extends RenderPass { + constructor(device, shadowRenderer, light, camera, allCascadesRendering) { + super(device); + this.shadowRenderer = shadowRenderer; + this.light = light; + this.camera = camera; + this.allCascadesRendering = allCascadesRendering; + } + execute() { + const { + light, + camera, + shadowRenderer, + allCascadesRendering + } = this; + const faceCount = light.numShadowFaces; + const shadowUpdateOverrides = light.shadowUpdateOverrides; + for (let face = 0; face < faceCount; face++) { + if ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[face]) !== SHADOWUPDATE_NONE) { + shadowRenderer.renderFace(light, camera, face, !allCascadesRendering); + } + if ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[face]) === SHADOWUPDATE_THISFRAME) { + shadowUpdateOverrides[face] = SHADOWUPDATE_NONE; + } + } + } + after() { + this.shadowRenderer.renderVsm(this.light, this.camera); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-renderer-directional.js +var visibleSceneAabb = new BoundingBox(); +var center = new Vec3(); +var shadowCamView = new Mat4(); +var aabbPoints = [new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3()]; +var _depthRange = { + min: 0, + max: 0 +}; +function getDepthRange(cameraViewMatrix, aabbMin, aabbMax) { + aabbPoints[0].x = aabbPoints[1].x = aabbPoints[2].x = aabbPoints[3].x = aabbMin.x; + aabbPoints[1].y = aabbPoints[3].y = aabbPoints[7].y = aabbPoints[5].y = aabbMin.y; + aabbPoints[2].z = aabbPoints[3].z = aabbPoints[6].z = aabbPoints[7].z = aabbMin.z; + aabbPoints[4].x = aabbPoints[5].x = aabbPoints[6].x = aabbPoints[7].x = aabbMax.x; + aabbPoints[0].y = aabbPoints[2].y = aabbPoints[4].y = aabbPoints[6].y = aabbMax.y; + aabbPoints[0].z = aabbPoints[1].z = aabbPoints[4].z = aabbPoints[5].z = aabbMax.z; + let minz = 9999999999; + let maxz = -9999999999; + for (let i = 0; i < 8; ++i) { + cameraViewMatrix.transformPoint(aabbPoints[i], aabbPoints[i]); + const z2 = aabbPoints[i].z; + if (z2 < minz) minz = z2; + if (z2 > maxz) maxz = z2; + } + _depthRange.min = minz; + _depthRange.max = maxz; + return _depthRange; +} +var ShadowRendererDirectional = class { + constructor(renderer, shadowRenderer) { + this.renderer = void 0; + this.shadowRenderer = void 0; + this.device = void 0; + this.renderer = renderer; + this.shadowRenderer = shadowRenderer; + this.device = renderer.device; + } + cull(light, comp, camera, casters = null) { + light.visibleThisFrame = true; + if (!light._shadowMap) { + light._shadowMap = ShadowMap.create(this.device, light); + } + const nearDist = camera._nearClip; + this.generateSplitDistances(light, nearDist, Math.min(camera._farClip, light.shadowDistance)); + const shadowUpdateOverrides = light.shadowUpdateOverrides; + for (let cascade = 0; cascade < light.numCascades; cascade++) { + if ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[cascade]) === SHADOWUPDATE_NONE) { + break; + } + const lightRenderData = light.getRenderData(camera, cascade); + const shadowCam = lightRenderData.shadowCamera; + shadowCam.renderTarget = light._shadowMap.renderTargets[0]; + lightRenderData.shadowViewport.copy(light.cascades[cascade]); + lightRenderData.shadowScissor.copy(light.cascades[cascade]); + const shadowCamNode = shadowCam._node; + const lightNode = light._node; + shadowCamNode.setPosition(lightNode.getPosition()); + shadowCamNode.setRotation(lightNode.getRotation()); + shadowCamNode.rotateLocal(-90, 0, 0); + const frustumNearDist = cascade === 0 ? nearDist : light._shadowCascadeDistances[cascade - 1]; + const frustumFarDist = light._shadowCascadeDistances[cascade]; + const frustumPoints = camera.getFrustumCorners(frustumNearDist, frustumFarDist); + center.set(0, 0, 0); + const cameraWorldMat = camera.node.getWorldTransform(); + for (let i = 0; i < 8; i++) { + cameraWorldMat.transformPoint(frustumPoints[i], frustumPoints[i]); + center.add(frustumPoints[i]); + } + center.mulScalar(1 / 8); + let radius = 0; + for (let i = 0; i < 8; i++) { + const dist = frustumPoints[i].sub(center).length(); + if (dist > radius) radius = dist; + } + const right2 = shadowCamNode.right; + const up3 = shadowCamNode.up; + const lightDir = shadowCamNode.forward; + const sizeRatio = 0.25 * light._shadowResolution / radius; + const x2 = Math.ceil(center.dot(up3) * sizeRatio) / sizeRatio; + const y2 = Math.ceil(center.dot(right2) * sizeRatio) / sizeRatio; + const scaledUp = up3.mulScalar(x2); + const scaledRight = right2.mulScalar(y2); + const dot = center.dot(lightDir); + const scaledDir = lightDir.mulScalar(dot); + center.add2(scaledUp, scaledRight).add(scaledDir); + shadowCamNode.setPosition(center); + shadowCamNode.translateLocal(0, 0, 1e6); + shadowCam.nearClip = 0.01; + shadowCam.farClip = 2e6; + shadowCam.orthoHeight = radius; + this.renderer.updateCameraFrustum(shadowCam); + this.shadowRenderer.cullShadowCasters(comp, light, lightRenderData.visibleCasters, shadowCam, casters); + let emptyAabb = true; + const visibleCasters = lightRenderData.visibleCasters; + for (let i = 0; i < visibleCasters.length; i++) { + const meshInstance = visibleCasters[i]; + if (emptyAabb) { + emptyAabb = false; + visibleSceneAabb.copy(meshInstance.aabb); + } else { + visibleSceneAabb.add(meshInstance.aabb); + } + } + shadowCamView.copy(shadowCamNode.getWorldTransform()).invert(); + const depthRange = getDepthRange(shadowCamView, visibleSceneAabb.getMin(), visibleSceneAabb.getMax()); + shadowCamNode.translateLocal(0, 0, depthRange.max + 0.1); + shadowCam.farClip = depthRange.max - depthRange.min + 0.2; + lightRenderData.depthRangeCompensation = shadowCam.farClip; + lightRenderData.projectionCompensation = radius; + } + } + generateSplitDistances(light, nearDist, farDist) { + light._shadowCascadeDistances.fill(farDist); + for (let i = 1; i < light.numCascades; i++) { + const fraction = i / light.numCascades; + const linearDist = nearDist + (farDist - nearDist) * fraction; + const logDist = nearDist * (farDist / nearDist) ** fraction; + const dist = math.lerp(linearDist, logDist, light.cascadeDistribution); + light._shadowCascadeDistances[i - 1] = dist; + } + } + getLightRenderPass(light, camera) { + let renderPass = null; + if (this.shadowRenderer.needsShadowRendering(light)) { + const faceCount = light.numShadowFaces; + const shadowUpdateOverrides = light.shadowUpdateOverrides; + let allCascadesRendering = true; + let shadowCamera; + for (let face = 0; face < faceCount; face++) { + if ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[face]) === SHADOWUPDATE_NONE) allCascadesRendering = false; + shadowCamera = this.shadowRenderer.prepareFace(light, camera, face); + } + renderPass = new RenderPassShadowDirectional(this.device, this.shadowRenderer, light, camera, allCascadesRendering); + this.shadowRenderer.setupRenderPass(renderPass, shadowCamera, allCascadesRendering); + } + return renderPass; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-renderer.js +function gauss(x2, sigma) { + return Math.exp(-(x2 * x2) / (2 * sigma * sigma)); +} +function gaussWeights(kernelSize) { + const sigma = (kernelSize - 1) / (2 * 3); + const halfWidth = (kernelSize - 1) * 0.5; + const values = new Array(kernelSize); + let sum = 0; + for (let i = 0; i < kernelSize; ++i) { + values[i] = gauss(i - halfWidth, sigma); + sum += values[i]; + } + for (let i = 0; i < kernelSize; ++i) { + values[i] /= sum; + } + return values; +} +var tempSet = /* @__PURE__ */ new Set(); +var shadowCamView2 = new Mat4(); +var shadowCamViewProj = new Mat4(); +var pixelOffset = new Float32Array(2); +var blurScissorRect = new Vec4(1, 1, 0, 0); +var viewportMatrix = new Mat4(); +var ShadowRenderer = class _ShadowRenderer { + constructor(renderer, lightTextureAtlas) { + this.shadowPassCache = []; + this.device = renderer.device; + this.renderer = renderer; + this.lightTextureAtlas = lightTextureAtlas; + const scope = this.device.scope; + this.polygonOffsetId = scope.resolve("polygonOffset"); + this.polygonOffset = new Float32Array(2); + this.sourceId = scope.resolve("source"); + this.pixelOffsetId = scope.resolve("pixelOffset"); + this.weightId = scope.resolve("weight[0]"); + this.blurVsmShaderCode = [shaderChunks.blurVSMPS, "#define GAUSS\n" + shaderChunks.blurVSMPS]; + const packed = "#define PACKED\n"; + this.blurPackedVsmShaderCode = [packed + this.blurVsmShaderCode[0], packed + this.blurVsmShaderCode[1]]; + this.blurVsmShader = [{}, {}]; + this.blurPackedVsmShader = [{}, {}]; + this.blurVsmWeights = {}; + this.shadowMapLightRadiusId = scope.resolve("light_radius"); + this.viewUniformFormat = null; + this.viewBindGroupFormat = null; + this.blendStateWrite = new BlendState(); + this.blendStateNoWrite = new BlendState(); + this.blendStateNoWrite.setColorWrite(false, false, false, false); + } + static createShadowCamera(device, shadowType, type2, face) { + const shadowCam = LightCamera.create("ShadowCamera", type2, face); + if (shadowType >= SHADOW_VSM8 && shadowType <= SHADOW_VSM32) { + shadowCam.clearColor = new Color(0, 0, 0, 0); + } else { + shadowCam.clearColor = new Color(1, 1, 1, 1); + } + shadowCam.clearDepthBuffer = true; + shadowCam.clearStencilBuffer = false; + return shadowCam; + } + static setShadowCameraSettings(shadowCam, device, shadowType, type2, isClustered) { + let hwPcf = shadowType === SHADOW_PCF5 || (shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3) && device.supportsDepthShadow; + if (type2 === LIGHTTYPE_OMNI && !isClustered) { + hwPcf = false; + } + shadowCam.clearColorBuffer = !hwPcf; + } + _cullShadowCastersInternal(meshInstances, visible, camera) { + const numInstances = meshInstances.length; + for (let i = 0; i < numInstances; i++) { + const meshInstance = meshInstances[i]; + if (meshInstance.castShadow) { + if (!meshInstance.cull || meshInstance._isVisible(camera)) { + meshInstance.visibleThisFrame = true; + visible.push(meshInstance); + } + } + } + } + cullShadowCasters(comp, light, visible, camera, casters) { + visible.length = 0; + if (casters) { + this._cullShadowCastersInternal(casters, visible, camera); + } else { + const layers = comp.layerList; + const len = layers.length; + for (let i = 0; i < len; i++) { + const layer = layers[i]; + if (layer._lightsSet.has(light)) { + if (!tempSet.has(layer)) { + tempSet.add(layer); + this._cullShadowCastersInternal(layer.shadowCasters, visible, camera); + } + } + } + tempSet.clear(); + } + visible.sort(this.renderer.sortCompareDepth); + } + setupRenderState(device, light) { + if (device.isWebGL1 && device.extStandardDerivatives) { + if (light._type === LIGHTTYPE_OMNI) { + this.polygonOffset[0] = 0; + this.polygonOffset[1] = 0; + this.polygonOffsetId.setValue(this.polygonOffset); + } else { + this.polygonOffset[0] = light.shadowBias * -1e3; + this.polygonOffset[1] = light.shadowBias * -1e3; + this.polygonOffsetId.setValue(this.polygonOffset); + } + } + const isClustered = this.renderer.scene.clusteredLightingEnabled; + const gpuOrGl2 = device.isWebGL2 || device.isWebGPU; + const useShadowSampler = isClustered ? light._isPcf && gpuOrGl2 : light._isPcf && gpuOrGl2 && light._type !== LIGHTTYPE_OMNI; + device.setBlendState(useShadowSampler ? this.blendStateNoWrite : this.blendStateWrite); + device.setDepthState(light.shadowDepthState); + device.setStencilState(null, null); + } + dispatchUniforms(light, shadowCam, lightRenderData, face) { + const shadowCamNode = shadowCam._node; + if (light._type !== LIGHTTYPE_DIRECTIONAL) { + this.renderer.dispatchViewPos(shadowCamNode.getPosition()); + this.shadowMapLightRadiusId.setValue(light.attenuationEnd); + } + shadowCamView2.setTRS(shadowCamNode.getPosition(), shadowCamNode.getRotation(), Vec3.ONE).invert(); + shadowCamViewProj.mul2(shadowCam.projectionMatrix, shadowCamView2); + const rectViewport = lightRenderData.shadowViewport; + shadowCam.rect = rectViewport; + shadowCam.scissorRect = lightRenderData.shadowScissor; + viewportMatrix.setViewport(rectViewport.x, rectViewport.y, rectViewport.z, rectViewport.w); + lightRenderData.shadowMatrix.mul2(viewportMatrix, shadowCamViewProj); + if (light._type === LIGHTTYPE_DIRECTIONAL) { + light._shadowMatrixPalette.set(lightRenderData.shadowMatrix.data, face * 16); + } + } + getShadowPass(light) { + var _this$shadowPassCache; + const lightType = light._type; + const shadowType = light._shadowType; + let shadowPassInfo = (_this$shadowPassCache = this.shadowPassCache[lightType]) == null ? void 0 : _this$shadowPassCache[shadowType]; + if (!shadowPassInfo) { + const shadowPassName = `ShadowPass_${lightType}_${shadowType}`; + shadowPassInfo = ShaderPass.get(this.device).allocate(shadowPassName, { + isShadow: true, + lightType, + shadowType + }); + if (!this.shadowPassCache[lightType]) this.shadowPassCache[lightType] = []; + this.shadowPassCache[lightType][shadowType] = shadowPassInfo; + } + return shadowPassInfo.index; + } + submitCasters(visibleCasters, light) { + const device = this.device; + const renderer = this.renderer; + const scene2 = renderer.scene; + const passFlags = 1 << SHADER_SHADOW; + const shadowPass = this.getShadowPass(light); + const count = visibleCasters.length; + for (let i = 0; i < count; i++) { + const meshInstance = visibleCasters[i]; + const mesh = meshInstance.mesh; + meshInstance.ensureMaterial(device); + const material = meshInstance.material; + renderer.setBaseConstants(device, material); + renderer.setSkinning(device, meshInstance); + if (material.dirty) { + material.updateUniforms(device, scene2); + material.dirty = false; + } + if (material.chunks) { + renderer.setupCullMode(true, 1, meshInstance); + material.setParameters(device); + meshInstance.setParameters(device, passFlags); + } + const shaderInstance = meshInstance.getShaderInstance(shadowPass, 0, scene2, this.viewUniformFormat, this.viewBindGroupFormat); + const shadowShader = shaderInstance.shader; + meshInstance._key[SORTKEY_DEPTH] = shadowShader.id; + device.setShader(shadowShader); + renderer.setVertexBuffers(device, mesh); + renderer.setMorphing(device, meshInstance.morphInstance); + this.renderer.setupMeshUniformBuffers(shaderInstance, meshInstance); + const style = meshInstance.renderStyle; + device.setIndexBuffer(mesh.indexBuffer[style]); + renderer.drawInstance(device, meshInstance, mesh, style); + renderer._shadowDrawCalls++; + } + } + needsShadowRendering(light) { + const needs = light.enabled && light.castShadows && light.shadowUpdateMode !== SHADOWUPDATE_NONE && light.visibleThisFrame; + if (light.shadowUpdateMode === SHADOWUPDATE_THISFRAME) { + light.shadowUpdateMode = SHADOWUPDATE_NONE; + } + if (needs) { + this.renderer._shadowMapUpdates += light.numShadowFaces; + } + return needs; + } + getLightRenderData(light, camera, face) { + return light.getRenderData(light._type === LIGHTTYPE_DIRECTIONAL ? camera : null, face); + } + setupRenderPass(renderPass, shadowCamera, clearRenderTarget) { + const rt = shadowCamera.renderTarget; + renderPass.init(rt); + renderPass.depthStencilOps.clearDepthValue = 1; + renderPass.depthStencilOps.clearDepth = clearRenderTarget; + if (rt.depthBuffer) { + renderPass.depthStencilOps.storeDepth = true; + } else { + renderPass.colorOps.clearValue.copy(shadowCamera.clearColor); + renderPass.colorOps.clear = clearRenderTarget; + renderPass.depthStencilOps.storeDepth = false; + } + renderPass.requiresCubemaps = false; + } + prepareFace(light, camera, face) { + const type2 = light._type; + const shadowType = light._shadowType; + const isClustered = this.renderer.scene.clusteredLightingEnabled; + const lightRenderData = this.getLightRenderData(light, camera, face); + const shadowCam = lightRenderData.shadowCamera; + _ShadowRenderer.setShadowCameraSettings(shadowCam, this.device, shadowType, type2, isClustered); + const renderTargetIndex = type2 === LIGHTTYPE_DIRECTIONAL ? 0 : face; + shadowCam.renderTarget = light._shadowMap.renderTargets[renderTargetIndex]; + return shadowCam; + } + renderFace(light, camera, face, clear, insideRenderPass = true) { + const device = this.device; + const lightRenderData = this.getLightRenderData(light, camera, face); + const shadowCam = lightRenderData.shadowCamera; + this.dispatchUniforms(light, shadowCam, lightRenderData, face); + const rt = shadowCam.renderTarget; + const renderer = this.renderer; + renderer.setCameraUniforms(shadowCam, rt); + if (device.supportsUniformBuffers) { + renderer.setupViewUniformBuffers(lightRenderData.viewBindGroups, this.viewUniformFormat, this.viewBindGroupFormat, 1); + } + if (insideRenderPass) { + renderer.setupViewport(shadowCam, rt); + if (clear) { + renderer.clear(shadowCam); + } + } else { + renderer.clearView(shadowCam, rt, true, false); + } + this.setupRenderState(device, light); + this.submitCasters(lightRenderData.visibleCasters, light); + } + render(light, camera, insideRenderPass = true) { + if (this.needsShadowRendering(light)) { + const faceCount = light.numShadowFaces; + for (let face = 0; face < faceCount; face++) { + this.prepareFace(light, camera, face); + this.renderFace(light, camera, face, true, insideRenderPass); + } + this.renderVsm(light, camera); + } + } + renderVsm(light, camera) { + if (light._isVsm && light._vsmBlurSize > 1) { + const isClustered = this.renderer.scene.clusteredLightingEnabled; + if (!isClustered || light._type === LIGHTTYPE_DIRECTIONAL) { + this.applyVsmBlur(light, camera); + } + } + } + getVsmBlurShader(isVsm8, blurMode, filterSize) { + let blurShader = (isVsm8 ? this.blurPackedVsmShader : this.blurVsmShader)[blurMode][filterSize]; + if (!blurShader) { + this.blurVsmWeights[filterSize] = gaussWeights(filterSize); + const blurVS = shaderChunks.fullscreenQuadVS; + let blurFS = "#define SAMPLES " + filterSize + "\n"; + if (isVsm8) { + blurFS += this.blurPackedVsmShaderCode[blurMode]; + } else { + blurFS += this.blurVsmShaderCode[blurMode]; + } + const blurShaderName = "blurVsm" + blurMode + filterSize + isVsm8; + blurShader = createShaderFromCode(this.device, blurVS, blurFS, blurShaderName); + if (isVsm8) { + this.blurPackedVsmShader[blurMode][filterSize] = blurShader; + } else { + this.blurVsmShader[blurMode][filterSize] = blurShader; + } + } + return blurShader; + } + applyVsmBlur(light, camera) { + const device = this.device; + device.setBlendState(BlendState.NOBLEND); + const lightRenderData = light.getRenderData(light._type === LIGHTTYPE_DIRECTIONAL ? camera : null, 0); + const shadowCam = lightRenderData.shadowCamera; + const origShadowMap = shadowCam.renderTarget; + const tempShadowMap = this.renderer.shadowMapCache.get(device, light); + const tempRt = tempShadowMap.renderTargets[0]; + const isVsm8 = light._shadowType === SHADOW_VSM8; + const blurMode = light.vsmBlurMode; + const filterSize = light._vsmBlurSize; + const blurShader = this.getVsmBlurShader(isVsm8, blurMode, filterSize); + blurScissorRect.z = light._shadowResolution - 2; + blurScissorRect.w = blurScissorRect.z; + this.sourceId.setValue(origShadowMap.colorBuffer); + pixelOffset[0] = 1 / light._shadowResolution; + pixelOffset[1] = 0; + this.pixelOffsetId.setValue(pixelOffset); + if (blurMode === BLUR_GAUSSIAN) this.weightId.setValue(this.blurVsmWeights[filterSize]); + drawQuadWithShader(device, tempRt, blurShader, null, blurScissorRect); + this.sourceId.setValue(tempRt.colorBuffer); + pixelOffset[1] = pixelOffset[0]; + pixelOffset[0] = 0; + this.pixelOffsetId.setValue(pixelOffset); + drawQuadWithShader(device, origShadowMap, blurShader, null, blurScissorRect); + this.renderer.shadowMapCache.add(light, tempShadowMap); + } + initViewBindGroupFormat() { + if (this.device.supportsUniformBuffers && !this.viewUniformFormat) { + this.viewUniformFormat = new UniformBufferFormat(this.device, [new UniformFormat("matrix_viewProjection", UNIFORMTYPE_MAT4)]); + this.viewBindGroupFormat = new BindGroupFormat(this.device, [new BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)]); + } + } + frameUpdate() { + this.initViewBindGroupFormat(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/world-clusters-allocator.js +var tempClusterArray = []; +var WorldClustersAllocator = class { + constructor(graphicsDevice) { + this._empty = null; + this._allocated = []; + this._clusters = /* @__PURE__ */ new Map(); + this.device = graphicsDevice; + } + destroy() { + if (this._empty) { + this._empty.destroy(); + this._empty = null; + } + this._allocated.forEach((cluster) => { + cluster.destroy(); + }); + this._allocated.length = 0; + } + get count() { + return this._allocated.length; + } + get empty() { + if (!this._empty) { + const empty = new WorldClusters(this.device); + empty.name = "ClusterEmpty"; + empty.update([], false, null); + this._empty = empty; + } + return this._empty; + } + assign(renderPasses) { + const empty = this.empty; + tempClusterArray.push(...this._allocated); + this._allocated.length = 0; + this._clusters.clear(); + const passCount = renderPasses.length; + for (let p = 0; p < passCount; p++) { + const renderPass = renderPasses[p]; + const renderActions = renderPass.renderActions; + if (renderActions) { + const count = renderActions.length; + for (let i = 0; i < count; i++) { + const ra = renderActions[i]; + ra.lightClusters = null; + const layer = ra.layer; + if (layer.hasClusteredLights && layer.meshInstances.length) { + const hash = layer.getLightIdHash(); + const existingRenderAction = this._clusters.get(hash); + let clusters = existingRenderAction == null ? void 0 : existingRenderAction.lightClusters; + if (!clusters) { + var _tempClusterArray$pop; + clusters = (_tempClusterArray$pop = tempClusterArray.pop()) != null ? _tempClusterArray$pop : new WorldClusters(this.device); + this._allocated.push(clusters); + this._clusters.set(hash, ra); + } + ra.lightClusters = clusters; + } + if (!ra.lightClusters) { + ra.lightClusters = empty; + } + } + } + } + tempClusterArray.forEach((item) => item.destroy()); + tempClusterArray.length = 0; + } + update(renderPasses, gammaCorrection, lighting) { + this.assign(renderPasses); + this._clusters.forEach((renderAction) => { + const layer = renderAction.layer; + const cluster = renderAction.lightClusters; + cluster.update(layer.clusteredLightsSet, gammaCorrection, lighting); + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-cookie-renderer.js +var textureBlitVertexShader = ` + attribute vec2 vertex_position; + varying vec2 uv0; + void main(void) { + gl_Position = vec4(vertex_position, 0.5, 1.0); + uv0 = vertex_position.xy * 0.5 + 0.5; + #ifndef WEBGPU + uv0.y = 1.0 - uv0.y; + #endif + }`; +var textureBlitFragmentShader = ` + varying vec2 uv0; + uniform sampler2D blitTexture; + void main(void) { + gl_FragColor = texture2D(blitTexture, uv0); + }`; +var textureCubeBlitFragmentShader = ` + varying vec2 uv0; + uniform samplerCube blitTexture; + uniform mat4 invViewProj; + void main(void) { + vec4 projPos = vec4(uv0 * 2.0 - 1.0, 0.5, 1.0); + vec4 worldPos = invViewProj * projPos; + gl_FragColor = textureCube(blitTexture, worldPos.xyz); + }`; +var _viewport2 = new Vec4(); +var _invViewProjMatrices = []; +var RenderPassCookieRenderer = class _RenderPassCookieRenderer extends RenderPass { + constructor(device, cubeSlotsOffsets) { + super(device); + this._quadRenderer2D = null; + this._quadRendererCube = null; + this._filteredLights = []; + this._cubeSlotsOffsets = cubeSlotsOffsets; + this.requiresCubemaps = false; + this.blitTextureId = device.scope.resolve("blitTexture"); + this.invViewProjId = device.scope.resolve("invViewProj"); + } + destroy() { + var _this$_quadRenderer2D, _this$_quadRendererCu; + (_this$_quadRenderer2D = this._quadRenderer2D) == null || _this$_quadRenderer2D.destroy(); + this._quadRenderer2D = null; + (_this$_quadRendererCu = this._quadRendererCube) == null || _this$_quadRendererCu.destroy(); + this._quadRendererCube = null; + } + static create(renderTarget, cubeSlotsOffsets) { + const renderPass = new _RenderPassCookieRenderer(renderTarget.device, cubeSlotsOffsets); + renderPass.init(renderTarget); + renderPass.colorOps.clear = false; + renderPass.depthStencilOps.clearDepth = false; + return renderPass; + } + update(lights2) { + const filteredLights = this._filteredLights; + this.filter(lights2, filteredLights); + this.executeEnabled = filteredLights.length > 0; + } + filter(lights2, filteredLights) { + for (let i = 0; i < lights2.length; i++) { + const light = lights2[i]; + if (light._type === LIGHTTYPE_DIRECTIONAL) continue; + if (!light.atlasViewportAllocated) continue; + if (!light.atlasSlotUpdated) continue; + if (light.enabled && light.cookie && light.visibleThisFrame) { + filteredLights.push(light); + } + } + } + initInvViewProjMatrices() { + if (!_invViewProjMatrices.length) { + for (let face = 0; face < 6; face++) { + const camera = LightCamera.create(null, LIGHTTYPE_OMNI, face); + const projMat = camera.projectionMatrix; + const viewMat2 = camera.node.getLocalTransform().clone().invert(); + _invViewProjMatrices[face] = new Mat4().mul2(projMat, viewMat2).invert(); + } + } + } + get quadRenderer2D() { + if (!this._quadRenderer2D) { + const shader = createShaderFromCode(this.device, textureBlitVertexShader, textureBlitFragmentShader, `cookieRenderer2d`); + this._quadRenderer2D = new QuadRender(shader); + } + return this._quadRenderer2D; + } + get quadRendererCube() { + if (!this._quadRendererCube) { + const shader = createShaderFromCode(this.device, textureBlitVertexShader, textureCubeBlitFragmentShader, `cookieRendererCube`); + this._quadRendererCube = new QuadRender(shader); + } + return this._quadRendererCube; + } + execute() { + const device = this.device; + device.setBlendState(BlendState.NOBLEND); + device.setCullMode(CULLFACE_NONE); + device.setDepthState(DepthState.NODEPTH); + device.setStencilState(); + const renderTargetWidth = this.renderTarget.colorBuffer.width; + const cubeSlotsOffsets = this._cubeSlotsOffsets; + const filteredLights = this._filteredLights; + for (let i = 0; i < filteredLights.length; i++) { + const light = filteredLights[i]; + const faceCount = light.numShadowFaces; + const quad = faceCount > 1 ? this.quadRendererCube : this.quadRenderer2D; + if (faceCount > 1) { + this.initInvViewProjMatrices(); + } + this.blitTextureId.setValue(light.cookie); + for (let face = 0; face < faceCount; face++) { + _viewport2.copy(light.atlasViewport); + if (faceCount > 1) { + const smallSize = _viewport2.z / 3; + const offset = cubeSlotsOffsets[face]; + _viewport2.x += smallSize * offset.x; + _viewport2.y += smallSize * offset.y; + _viewport2.z = smallSize; + _viewport2.w = smallSize; + this.invViewProjId.setValue(_invViewProjMatrices[face].data); + } + _viewport2.mulScalar(renderTargetWidth); + quad.render(_viewport2); + } + } + filteredLights.length = 0; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-shadow-local-clustered.js +var RenderPassShadowLocalClustered = class extends RenderPass { + constructor(device, shadowRenderer, shadowRendererLocal) { + super(device); + this.requiresCubemaps = false; + this.shadowRenderer = shadowRenderer; + this.shadowRendererLocal = shadowRendererLocal; + } + update(localLights) { + const shadowLights = this.shadowRendererLocal.shadowLights; + const shadowCamera = this.shadowRendererLocal.prepareLights(shadowLights, localLights); + const count = shadowLights.length; + this.enabled = count > 0; + if (count) { + this.shadowRenderer.setupRenderPass(this, shadowCamera, false); + } + } + execute() { + const shadowLights = this.shadowRendererLocal.shadowLights; + const count = shadowLights.length; + for (let i = 0; i < count; i++) { + const light = shadowLights[i]; + for (let face = 0; face < light.numShadowFaces; face++) { + this.shadowRenderer.renderFace(light, null, face, true); + } + } + shadowLights.length = 0; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-update-clustered.js +var RenderPassUpdateClustered = class extends RenderPass { + constructor(device, renderer, shadowRenderer, shadowRendererLocal, lightTextureAtlas) { + super(device); + this.renderer = renderer; + this.frameGraph = null; + this.cookiesRenderPass = RenderPassCookieRenderer.create(lightTextureAtlas.cookieRenderTarget, lightTextureAtlas.cubeSlotsOffsets); + this.beforePasses.push(this.cookiesRenderPass); + this.shadowRenderPass = new RenderPassShadowLocalClustered(device, shadowRenderer, shadowRendererLocal); + this.beforePasses.push(this.shadowRenderPass); + } + update(frameGraph, shadowsEnabled, cookiesEnabled, lights2, localLights) { + this.frameGraph = frameGraph; + this.cookiesRenderPass.enabled = cookiesEnabled; + if (cookiesEnabled) { + this.cookiesRenderPass.update(lights2); + } + this.shadowRenderPass.enabled = shadowsEnabled; + if (shadowsEnabled) { + this.shadowRenderPass.update(localLights); + } + } + destroy() { + this.cookiesRenderPass.destroy(); + this.cookiesRenderPass = null; + } + execute() { + const { + renderer + } = this; + const { + scene: scene2 + } = renderer; + renderer.worldClustersAllocator.update(this.frameGraph.renderPasses, scene2.gammaCorrection, scene2.lighting); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/blue-noise.js +var base64String = "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"; +var data = null; +var initData = () => { + if (!data) { + const binaryString = atob(base64String); + data = Uint8Array.from(binaryString, (char) => char.charCodeAt(0)); + } +}; +var blueNoiseData = () => { + initData(); + return data; +}; +var BlueNoise = class { + constructor(seed = 0) { + this.seed = 0; + this.seed = seed * 4; + initData(); + } + _next() { + this.seed = (this.seed + 4) % data.length; + } + value() { + this._next(); + return data[this.seed] / 255; + } + vec4(dest = new Vec4()) { + this._next(); + return dest.set(data[this.seed], data[this.seed + 1], data[this.seed + 2], data[this.seed + 3]).mulScalar(1 / 255); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/noise-textures.js +var createTexture = (device, namePrefix, size, data2) => { + const texture = new Texture(device, { + name: `${namePrefix}${size}`, + width: size, + height: size, + format: PIXELFORMAT_RGBA8, + addressU: ADDRESS_REPEAT, + addressV: ADDRESS_REPEAT, + type: TEXTURETYPE_DEFAULT, + magFilter: FILTER_NEAREST, + minFilter: FILTER_NEAREST, + anisotropy: 1, + mipmaps: false + }); + texture.lock().set(data2); + texture.unlock(); + return texture; +}; +var deviceCacheBlueNoise = new DeviceCache(); +var getBlueNoiseTexture = (device) => { + return deviceCacheBlueNoise.get(device, () => { + const data2 = blueNoiseData(); + const size = Math.sqrt(data2.length / 4); + return createTexture(device, "BlueNoise", size, data2); + }); +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/renderer.js +var _skinUpdateIndex = 0; +var viewProjMat = new Mat4(); +var viewInvMat = new Mat4(); +var viewMat = new Mat4(); +var viewMat3 = new Mat3(); +var tempSphere = new BoundingSphere(); +var _flipYMat = new Mat4().setScale(1, -1, 1); +var _tempLightSet = /* @__PURE__ */ new Set(); +var _tempLayerSet = /* @__PURE__ */ new Set(); +var _fixProjRangeMat = new Mat4().set([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 1]); +var _haltonSequence = [new Vec2(0.5, 0.333333), new Vec2(0.25, 0.666667), new Vec2(0.75, 0.111111), new Vec2(0.125, 0.444444), new Vec2(0.625, 0.777778), new Vec2(0.375, 0.222222), new Vec2(0.875, 0.555556), new Vec2(0.0625, 0.888889), new Vec2(0.5625, 0.037037), new Vec2(0.3125, 0.37037), new Vec2(0.8125, 0.703704), new Vec2(0.1875, 0.148148), new Vec2(0.6875, 0.481481), new Vec2(0.4375, 0.814815), new Vec2(0.9375, 0.259259), new Vec2(0.03125, 0.592593)]; +var _tempProjMat0 = new Mat4(); +var _tempProjMat1 = new Mat4(); +var _tempProjMat2 = new Mat4(); +var _tempProjMat3 = new Mat4(); +var _tempProjMat4 = new Mat4(); +var _tempProjMat5 = new Mat4(); +var _tempSet = /* @__PURE__ */ new Set(); +var _tempMeshInstances = []; +var _tempMeshInstancesSkinned = []; +var Renderer = class { + constructor(graphicsDevice) { + this.clustersDebugRendered = false; + this.processingMeshInstances = /* @__PURE__ */ new Set(); + this.worldClustersAllocator = void 0; + this.lights = []; + this.localLights = []; + this.cameraDirShadowLights = /* @__PURE__ */ new Map(); + this.dirLightShadows = /* @__PURE__ */ new Map(); + this.blueNoise = new BlueNoise(123); + this.device = graphicsDevice; + this.scene = null; + this.worldClustersAllocator = new WorldClustersAllocator(graphicsDevice); + this.lightTextureAtlas = new LightTextureAtlas(graphicsDevice); + this.shadowMapCache = new ShadowMapCache(); + this.shadowRenderer = new ShadowRenderer(this, this.lightTextureAtlas); + this._shadowRendererLocal = new ShadowRendererLocal(this, this.shadowRenderer); + this._shadowRendererDirectional = new ShadowRendererDirectional(this, this.shadowRenderer); + this._renderPassUpdateClustered = new RenderPassUpdateClustered(this.device, this, this.shadowRenderer, this._shadowRendererLocal, this.lightTextureAtlas); + this.viewUniformFormat = null; + this.viewBindGroupFormat = null; + this._skinTime = 0; + this._morphTime = 0; + this._cullTime = 0; + this._shadowMapTime = 0; + this._lightClustersTime = 0; + this._layerCompositionUpdateTime = 0; + this._shadowDrawCalls = 0; + this._skinDrawCalls = 0; + this._instancedDrawCalls = 0; + this._shadowMapUpdates = 0; + this._numDrawCallsCulled = 0; + this._camerasRendered = 0; + this._lightClusters = 0; + const scope = graphicsDevice.scope; + this.boneTextureId = scope.resolve("texture_poseMap"); + this.boneTextureSizeId = scope.resolve("texture_poseMapSize"); + this.poseMatrixId = scope.resolve("matrix_pose[0]"); + this.modelMatrixId = scope.resolve("matrix_model"); + this.normalMatrixId = scope.resolve("matrix_normal"); + this.viewInvId = scope.resolve("matrix_viewInverse"); + this.viewPos = new Float32Array(3); + this.viewPosId = scope.resolve("view_position"); + this.projId = scope.resolve("matrix_projection"); + this.projSkyboxId = scope.resolve("matrix_projectionSkybox"); + this.viewId = scope.resolve("matrix_view"); + this.viewId3 = scope.resolve("matrix_view3"); + this.viewProjId = scope.resolve("matrix_viewProjection"); + this.flipYId = scope.resolve("projectionFlipY"); + this.tbnBasis = scope.resolve("tbnBasis"); + this.nearClipId = scope.resolve("camera_near"); + this.farClipId = scope.resolve("camera_far"); + this.cameraParams = new Float32Array(4); + this.cameraParamsId = scope.resolve("camera_params"); + this.viewIndexId = scope.resolve("view_index"); + this.blueNoiseJitterVersion = 0; + this.blueNoiseJitterVec = new Vec4(); + this.blueNoiseJitterData = new Float32Array(4); + this.blueNoiseJitterId = scope.resolve("blueNoiseJitter"); + this.blueNoiseTextureId = scope.resolve("blueNoiseTex32"); + this.alphaTestId = scope.resolve("alpha_ref"); + this.opacityMapId = scope.resolve("texture_opacityMap"); + this.exposureId = scope.resolve("exposure"); + this.twoSidedLightingNegScaleFactorId = scope.resolve("twoSidedLightingNegScaleFactor"); + this.twoSidedLightingNegScaleFactorId.setValue(0); + this.morphWeightsA = scope.resolve("morph_weights_a"); + this.morphWeightsB = scope.resolve("morph_weights_b"); + this.morphPositionTex = scope.resolve("morphPositionTex"); + this.morphNormalTex = scope.resolve("morphNormalTex"); + this.morphTexParams = scope.resolve("morph_tex_params"); + this.lightCube = new LightCube(); + this.constantLightCube = scope.resolve("lightCube[0]"); + } + destroy() { + this.shadowRenderer = null; + this._shadowRendererLocal = null; + this._shadowRendererDirectional = null; + this.shadowMapCache.destroy(); + this.shadowMapCache = null; + this._renderPassUpdateClustered.destroy(); + this._renderPassUpdateClustered = null; + this.lightTextureAtlas.destroy(); + this.lightTextureAtlas = null; + } + sortCompare(drawCallA, drawCallB) { + if (drawCallA.layer === drawCallB.layer) { + if (drawCallA.drawOrder && drawCallB.drawOrder) { + return drawCallA.drawOrder - drawCallB.drawOrder; + } else if (drawCallA.zdist && drawCallB.zdist) { + return drawCallB.zdist - drawCallA.zdist; + } else if (drawCallA.zdist2 && drawCallB.zdist2) { + return drawCallA.zdist2 - drawCallB.zdist2; + } + } + return drawCallB._key[SORTKEY_FORWARD] - drawCallA._key[SORTKEY_FORWARD]; + } + sortCompareMesh(drawCallA, drawCallB) { + if (drawCallA.layer === drawCallB.layer) { + if (drawCallA.drawOrder && drawCallB.drawOrder) { + return drawCallA.drawOrder - drawCallB.drawOrder; + } else if (drawCallA.zdist && drawCallB.zdist) { + return drawCallB.zdist - drawCallA.zdist; + } + } + const keyA = drawCallA._key[SORTKEY_FORWARD]; + const keyB = drawCallB._key[SORTKEY_FORWARD]; + if (keyA === keyB && drawCallA.mesh && drawCallB.mesh) { + return drawCallB.mesh.id - drawCallA.mesh.id; + } + return keyB - keyA; + } + sortCompareDepth(drawCallA, drawCallB) { + const keyA = drawCallA._key[SORTKEY_DEPTH]; + const keyB = drawCallB._key[SORTKEY_DEPTH]; + if (keyA === keyB && drawCallA.mesh && drawCallB.mesh) { + return drawCallB.mesh.id - drawCallA.mesh.id; + } + return keyB - keyA; + } + setupViewport(camera, renderTarget) { + const device = this.device; + const pixelWidth = renderTarget ? renderTarget.width : device.width; + const pixelHeight = renderTarget ? renderTarget.height : device.height; + const rect = camera.rect; + let x2 = Math.floor(rect.x * pixelWidth); + let y2 = Math.floor(rect.y * pixelHeight); + let w = Math.floor(rect.z * pixelWidth); + let h = Math.floor(rect.w * pixelHeight); + device.setViewport(x2, y2, w, h); + if (camera._scissorRectClear) { + const scissorRect = camera.scissorRect; + x2 = Math.floor(scissorRect.x * pixelWidth); + y2 = Math.floor(scissorRect.y * pixelHeight); + w = Math.floor(scissorRect.z * pixelWidth); + h = Math.floor(scissorRect.w * pixelHeight); + } + device.setScissor(x2, y2, w, h); + } + setCameraUniforms(camera, target2) { + const flipY = target2 == null ? void 0 : target2.flipY; + let viewCount = 1; + if (camera.xr && camera.xr.session) { + var _camera$_node; + const transform = ((_camera$_node = camera._node) == null || (_camera$_node = _camera$_node.parent) == null ? void 0 : _camera$_node.getWorldTransform()) || null; + const views = camera.xr.views; + viewCount = views.list.length; + for (let v = 0; v < viewCount; v++) { + const view = views.list[v]; + view.updateTransforms(transform); + camera.frustum.setFromMat4(view.projViewOffMat); + } + } else { + let projMat = camera.projectionMatrix; + if (camera.calculateProjection) { + camera.calculateProjection(projMat, VIEW_CENTER); + } + let projMatSkybox = camera.getProjectionMatrixSkybox(); + if (flipY) { + projMat = _tempProjMat0.mul2(_flipYMat, projMat); + projMatSkybox = _tempProjMat1.mul2(_flipYMat, projMatSkybox); + } + if (this.device.isWebGPU) { + projMat = _tempProjMat2.mul2(_fixProjRangeMat, projMat); + projMatSkybox = _tempProjMat3.mul2(_fixProjRangeMat, projMatSkybox); + } + const { + jitter + } = camera; + let jitterX = 0; + let jitterY = 0; + if (jitter > 0) { + const targetWidth = target2 ? target2.width : this.device.width; + const targetHeight = target2 ? target2.height : this.device.height; + const offset = _haltonSequence[this.device.renderVersion % _haltonSequence.length]; + jitterX = jitter * (offset.x * 2 - 1) / targetWidth; + jitterY = jitter * (offset.y * 2 - 1) / targetHeight; + projMat = _tempProjMat4.copy(projMat); + projMat.data[8] = jitterX; + projMat.data[9] = jitterY; + projMatSkybox = _tempProjMat5.copy(projMatSkybox); + projMatSkybox.data[8] = jitterX; + projMatSkybox.data[9] = jitterY; + if (this.blueNoiseJitterVersion !== this.device.renderVersion) { + this.blueNoiseJitterVersion = this.device.renderVersion; + this.blueNoise.vec4(this.blueNoiseJitterVec); + } + } + const jitterVec = jitter > 0 ? this.blueNoiseJitterVec : Vec4.ZERO; + this.blueNoiseJitterData[0] = jitterVec.x; + this.blueNoiseJitterData[1] = jitterVec.y; + this.blueNoiseJitterData[2] = jitterVec.z; + this.blueNoiseJitterData[3] = jitterVec.w; + this.blueNoiseJitterId.setValue(this.blueNoiseJitterData); + this.projId.setValue(projMat.data); + this.projSkyboxId.setValue(projMatSkybox.data); + if (camera.calculateTransform) { + camera.calculateTransform(viewInvMat, VIEW_CENTER); + } else { + const pos = camera._node.getPosition(); + const rot = camera._node.getRotation(); + viewInvMat.setTRS(pos, rot, Vec3.ONE); + } + this.viewInvId.setValue(viewInvMat.data); + viewMat.copy(viewInvMat).invert(); + this.viewId.setValue(viewMat.data); + viewMat3.setFromMat4(viewMat); + this.viewId3.setValue(viewMat3.data); + viewProjMat.mul2(projMat, viewMat); + this.viewProjId.setValue(viewProjMat.data); + camera._storeShaderMatrices(viewProjMat, jitterX, jitterY, this.device.renderVersion); + this.flipYId.setValue(flipY ? -1 : 1); + this.dispatchViewPos(camera._node.getPosition()); + camera.frustum.setFromMat4(viewProjMat); + } + this.tbnBasis.setValue(flipY ? -1 : 1); + const n = camera._nearClip; + const f = camera._farClip; + this.nearClipId.setValue(n); + this.farClipId.setValue(f); + this.cameraParams[0] = 1 / f; + this.cameraParams[1] = f; + this.cameraParams[2] = n; + this.cameraParams[3] = camera.projection === PROJECTION_ORTHOGRAPHIC ? 1 : 0; + this.cameraParamsId.setValue(this.cameraParams); + this.exposureId.setValue(this.scene.physicalUnits ? camera.getExposure() : this.scene.exposure); + return viewCount; + } + clear(camera, clearColor, clearDepth, clearStencil) { + const flags = ((clearColor != null ? clearColor : camera._clearColorBuffer) ? CLEARFLAG_COLOR : 0) | ((clearDepth != null ? clearDepth : camera._clearDepthBuffer) ? CLEARFLAG_DEPTH : 0) | ((clearStencil != null ? clearStencil : camera._clearStencilBuffer) ? CLEARFLAG_STENCIL : 0); + if (flags) { + const device = this.device; + device.clear({ + color: [camera._clearColor.r, camera._clearColor.g, camera._clearColor.b, camera._clearColor.a], + depth: camera._clearDepth, + stencil: camera._clearStencil, + flags + }); + } + } + setCamera(camera, target2, clear, renderAction = null) { + this.setCameraUniforms(camera, target2); + this.clearView(camera, target2, clear, false); + } + clearView(camera, target2, clear, forceWrite) { + const device = this.device; + device.setRenderTarget(target2); + device.updateBegin(); + if (forceWrite) { + device.setColorWrite(true, true, true, true); + device.setDepthWrite(true); + } + this.setupViewport(camera, target2); + if (clear) { + const options = camera._clearOptions; + device.clear(options ? options : { + color: [camera._clearColor.r, camera._clearColor.g, camera._clearColor.b, camera._clearColor.a], + depth: camera._clearDepth, + flags: (camera._clearColorBuffer ? CLEARFLAG_COLOR : 0) | (camera._clearDepthBuffer ? CLEARFLAG_DEPTH : 0) | (camera._clearStencilBuffer ? CLEARFLAG_STENCIL : 0), + stencil: camera._clearStencil + }); + } + } + setupCullMode(cullFaces, flipFactor, drawCall) { + const material = drawCall.material; + let mode = CULLFACE_NONE; + if (cullFaces) { + let flipFaces = 1; + if (material.cull === CULLFACE_FRONT || material.cull === CULLFACE_BACK) { + flipFaces = flipFactor * drawCall.flipFacesFactor * drawCall.node.worldScaleSign; + } + if (flipFaces < 0) { + mode = material.cull === CULLFACE_FRONT ? CULLFACE_BACK : CULLFACE_FRONT; + } else { + mode = material.cull; + } + } + this.device.setCullMode(mode); + if (mode === CULLFACE_NONE && material.cull === CULLFACE_NONE) { + this.twoSidedLightingNegScaleFactorId.setValue(drawCall.node.worldScaleSign); + } + } + updateCameraFrustum(camera) { + if (camera.xr && camera.xr.views.list.length) { + const view = camera.xr.views.list[0]; + viewProjMat.mul2(view.projMat, view.viewOffMat); + camera.frustum.setFromMat4(viewProjMat); + return; + } + const projMat = camera.projectionMatrix; + if (camera.calculateProjection) { + camera.calculateProjection(projMat, VIEW_CENTER); + } + if (camera.calculateTransform) { + camera.calculateTransform(viewInvMat, VIEW_CENTER); + } else { + const pos = camera._node.getPosition(); + const rot = camera._node.getRotation(); + viewInvMat.setTRS(pos, rot, Vec3.ONE); + this.viewInvId.setValue(viewInvMat.data); + } + viewMat.copy(viewInvMat).invert(); + viewProjMat.mul2(projMat, viewMat); + camera.frustum.setFromMat4(viewProjMat); + } + setBaseConstants(device, material) { + device.setCullMode(material.cull); + if (material.opacityMap) { + this.opacityMapId.setValue(material.opacityMap); + } + if (material.opacityMap || material.alphaTest > 0) { + this.alphaTestId.setValue(material.alphaTest); + } + } + updateCpuSkinMatrices(drawCalls) { + _skinUpdateIndex++; + const drawCallsCount = drawCalls.length; + if (drawCallsCount === 0) return; + for (let i = 0; i < drawCallsCount; i++) { + const si = drawCalls[i].skinInstance; + if (si) { + si.updateMatrices(drawCalls[i].node, _skinUpdateIndex); + si._dirty = true; + } + } + } + updateGpuSkinMatrices(drawCalls) { + for (const drawCall of drawCalls) { + const skin = drawCall.skinInstance; + if (skin && skin._dirty) { + skin.updateMatrixPalette(drawCall.node, _skinUpdateIndex); + skin._dirty = false; + } + } + } + updateMorphing(drawCalls) { + for (const drawCall of drawCalls) { + const morphInst = drawCall.morphInstance; + if (morphInst && morphInst._dirty) { + morphInst.update(); + } + } + } + updateGSplats(drawCalls) { + for (const drawCall of drawCalls) { + var _drawCall$gsplatInsta; + (_drawCall$gsplatInsta = drawCall.gsplatInstance) == null || _drawCall$gsplatInsta.update(); + } + } + gpuUpdate(drawCalls) { + this.updateGpuSkinMatrices(drawCalls); + this.updateMorphing(drawCalls); + this.updateGSplats(drawCalls); + } + setVertexBuffers(device, mesh) { + device.setVertexBuffer(mesh.vertexBuffer); + } + setMorphing(device, morphInstance) { + if (morphInstance) { + if (morphInstance.morph.useTextureMorph) { + device.setVertexBuffer(morphInstance.morph.vertexBufferIds); + this.morphPositionTex.setValue(morphInstance.texturePositions); + this.morphNormalTex.setValue(morphInstance.textureNormals); + this.morphTexParams.setValue(morphInstance._textureParams); + } else { + for (let t = 0; t < morphInstance._activeVertexBuffers.length; t++) { + const vb = morphInstance._activeVertexBuffers[t]; + if (vb) { + const semantic = SEMANTIC_ATTR + (t + 8); + vb.format.elements[0].name = semantic; + vb.format.elements[0].scopeId = device.scope.resolve(semantic); + vb.format.update(); + device.setVertexBuffer(vb); + } + } + this.morphWeightsA.setValue(morphInstance._shaderMorphWeightsA); + this.morphWeightsB.setValue(morphInstance._shaderMorphWeightsB); + } + } + } + setSkinning(device, meshInstance) { + const skinInstance = meshInstance.skinInstance; + if (skinInstance) { + this._skinDrawCalls++; + if (device.supportsBoneTextures) { + const boneTexture = skinInstance.boneTexture; + this.boneTextureId.setValue(boneTexture); + this.boneTextureSizeId.setValue(skinInstance.boneTextureSize); + } else { + this.poseMatrixId.setValue(skinInstance.matrixPalette); + } + } + } + dispatchViewPos(position2) { + const vp = this.viewPos; + vp[0] = position2.x; + vp[1] = position2.y; + vp[2] = position2.z; + this.viewPosId.setValue(vp); + } + initViewBindGroupFormat(isClustered) { + if (this.device.supportsUniformBuffers && !this.viewUniformFormat) { + const uniforms = [new UniformFormat("matrix_viewProjection", UNIFORMTYPE_MAT4), new UniformFormat("cubeMapRotationMatrix", UNIFORMTYPE_MAT3), new UniformFormat("view_position", UNIFORMTYPE_VEC3), new UniformFormat("skyboxIntensity", UNIFORMTYPE_FLOAT), new UniformFormat("exposure", UNIFORMTYPE_FLOAT), new UniformFormat("textureBias", UNIFORMTYPE_FLOAT)]; + if (isClustered) { + uniforms.push(...[new UniformFormat("clusterCellsCountByBoundsSize", UNIFORMTYPE_VEC3), new UniformFormat("clusterTextureSize", UNIFORMTYPE_VEC3), new UniformFormat("clusterBoundsMin", UNIFORMTYPE_VEC3), new UniformFormat("clusterBoundsDelta", UNIFORMTYPE_VEC3), new UniformFormat("clusterCellsDot", UNIFORMTYPE_VEC3), new UniformFormat("clusterCellsMax", UNIFORMTYPE_VEC3), new UniformFormat("clusterCompressionLimit0", UNIFORMTYPE_VEC2), new UniformFormat("shadowAtlasParams", UNIFORMTYPE_VEC2), new UniformFormat("clusterMaxCells", UNIFORMTYPE_INT), new UniformFormat("clusterSkip", UNIFORMTYPE_FLOAT)]); + } + this.viewUniformFormat = new UniformBufferFormat(this.device, uniforms); + const formats = [new BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT), new BindTextureFormat("lightsTextureFloat", SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_UNFILTERABLE_FLOAT), new BindTextureFormat("lightsTexture8", SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_UNFILTERABLE_FLOAT), new BindTextureFormat("shadowAtlasTexture", SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_DEPTH), new BindTextureFormat("cookieAtlasTexture", SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_FLOAT), new BindTextureFormat("areaLightsLutTex1", SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_FLOAT), new BindTextureFormat("areaLightsLutTex2", SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_FLOAT)]; + if (isClustered) { + formats.push(...[new BindTextureFormat("clusterWorldTexture", SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_UNFILTERABLE_FLOAT)]); + } + this.viewBindGroupFormat = new BindGroupFormat(this.device, formats); + } + } + setupViewUniformBuffers(viewBindGroups, viewUniformFormat, viewBindGroupFormat, viewCount) { + const device = this.device; + while (viewBindGroups.length < viewCount) { + const ub = new UniformBuffer(device, viewUniformFormat, false); + const bg = new BindGroup(device, viewBindGroupFormat, ub); + viewBindGroups.push(bg); + } + const viewBindGroup = viewBindGroups[0]; + viewBindGroup.defaultUniformBuffer.update(); + viewBindGroup.update(); + device.setBindGroup(BINDGROUP_VIEW, viewBindGroup); + } + setupMeshUniformBuffers(shaderInstance, meshInstance) { + const device = this.device; + if (device.supportsUniformBuffers) { + this.modelMatrixId.setValue(meshInstance.node.worldTransform.data); + this.normalMatrixId.setValue(meshInstance.node.normalMatrix.data); + const meshBindGroup = shaderInstance.getBindGroup(device); + meshBindGroup.defaultUniformBuffer.update(); + meshBindGroup.update(); + device.setBindGroup(BINDGROUP_MESH, meshBindGroup); + } + } + drawInstance(device, meshInstance, mesh, style, normal) { + const modelMatrix = meshInstance.node.worldTransform; + this.modelMatrixId.setValue(modelMatrix.data); + if (normal) { + this.normalMatrixId.setValue(meshInstance.node.normalMatrix.data); + } + const instancingData = meshInstance.instancingData; + if (instancingData) { + if (instancingData.count > 0) { + this._instancedDrawCalls++; + device.setVertexBuffer(instancingData.vertexBuffer); + device.draw(mesh.primitive[style], instancingData.count); + } else { + device.clearVertexBuffer(); + } + } else { + device.draw(mesh.primitive[style]); + } + } + drawInstance2(device, meshInstance, mesh, style) { + const instancingData = meshInstance.instancingData; + if (instancingData) { + if (instancingData.count > 0) { + this._instancedDrawCalls++; + device.draw(mesh.primitive[style], instancingData.count, true); + } else { + device.clearVertexBuffer(); + } + } else { + device.draw(mesh.primitive[style], void 0, true); + } + } + cull(camera, drawCalls, culledInstances) { + const opaque = culledInstances.opaque; + opaque.length = 0; + const transparent = culledInstances.transparent; + transparent.length = 0; + const doCull = camera.frustumCulling; + const count = drawCalls.length; + for (let i = 0; i < count; i++) { + const drawCall = drawCalls[i]; + if (drawCall.visible) { + const visible = !doCull || !drawCall.cull || drawCall._isVisible(camera); + if (visible) { + drawCall.visibleThisFrame = true; + const bucket = drawCall.transparent ? transparent : opaque; + bucket.push(drawCall); + if (drawCall.skinInstance || drawCall.morphInstance || drawCall.gsplatInstance) { + this.processingMeshInstances.add(drawCall); + if (drawCall.gsplatInstance) { + drawCall.gsplatInstance.cameras.push(camera); + } + } + } + } + } + } + collectLights(comp) { + this.lights.length = 0; + this.localLights.length = 0; + const stats = this.scene._stats; + const count = comp.layerList.length; + for (let i = 0; i < count; i++) { + const layer = comp.layerList[i]; + if (!_tempLayerSet.has(layer)) { + _tempLayerSet.add(layer); + const lights2 = layer._lights; + for (let j = 0; j < lights2.length; j++) { + const light = lights2[j]; + if (!_tempLightSet.has(light)) { + _tempLightSet.add(light); + this.lights.push(light); + if (light._type !== LIGHTTYPE_DIRECTIONAL) { + this.localLights.push(light); + } + } + } + } + } + stats.lights = this.lights.length; + _tempLightSet.clear(); + _tempLayerSet.clear(); + } + cullLights(camera, lights2) { + const clusteredLightingEnabled = this.scene.clusteredLightingEnabled; + const physicalUnits = this.scene.physicalUnits; + for (let i = 0; i < lights2.length; i++) { + const light = lights2[i]; + if (light.enabled) { + if (light._type !== LIGHTTYPE_DIRECTIONAL) { + light.getBoundingSphere(tempSphere); + if (camera.frustum.containsSphere(tempSphere)) { + light.visibleThisFrame = true; + light.usePhysicalUnits = physicalUnits; + const screenSize = camera.getScreenSize(tempSphere); + light.maxScreenSize = Math.max(light.maxScreenSize, screenSize); + } else { + if (!clusteredLightingEnabled) { + if (light.castShadows && !light.shadowMap) { + light.visibleThisFrame = true; + } + } + } + } else { + light.usePhysicalUnits = this.scene.physicalUnits; + } + } + } + } + cullShadowmaps(comp) { + const isClustered = this.scene.clusteredLightingEnabled; + for (let i = 0; i < this.localLights.length; i++) { + const light = this.localLights[i]; + if (light._type !== LIGHTTYPE_DIRECTIONAL) { + if (isClustered) { + if (light.atlasSlotUpdated && light.shadowUpdateMode === SHADOWUPDATE_NONE) { + light.shadowUpdateMode = SHADOWUPDATE_THISFRAME; + } + } else { + if (light.shadowUpdateMode === SHADOWUPDATE_NONE && light.castShadows) { + if (!light.getRenderData(null, 0).shadowCamera.renderTarget) { + light.shadowUpdateMode = SHADOWUPDATE_THISFRAME; + } + } + } + if (light.visibleThisFrame && light.castShadows && light.shadowUpdateMode !== SHADOWUPDATE_NONE) { + this._shadowRendererLocal.cull(light, comp); + } + } + } + this.cameraDirShadowLights.clear(); + const cameras = comp.cameras; + for (let i = 0; i < cameras.length; i++) { + const cameraComponent = cameras[i]; + if (cameraComponent.enabled) { + const camera = cameraComponent.camera; + let lightList; + const cameraLayers = camera.layers; + for (let l = 0; l < cameraLayers.length; l++) { + const cameraLayer = comp.getLayerById(cameraLayers[l]); + if (cameraLayer) { + const layerDirLights = cameraLayer.splitLights[LIGHTTYPE_DIRECTIONAL]; + for (let j = 0; j < layerDirLights.length; j++) { + const light = layerDirLights[j]; + if (light.castShadows && !_tempSet.has(light)) { + var _lightList; + _tempSet.add(light); + lightList = (_lightList = lightList) != null ? _lightList : []; + lightList.push(light); + this._shadowRendererDirectional.cull(light, comp, camera); + } + } + } + } + if (lightList) { + this.cameraDirShadowLights.set(camera, lightList); + } + _tempSet.clear(); + } + } + } + cullComposition(comp) { + this.processingMeshInstances.clear(); + const numCameras = comp.cameras.length; + for (let i = 0; i < numCameras; i++) { + const camera = comp.cameras[i]; + let currentRenderTarget; + let cameraChanged = true; + this._camerasRendered++; + const layerIds = camera.layers; + for (let j = 0; j < layerIds.length; j++) { + const layer = comp.getLayerById(layerIds[j]); + if (layer && layer.enabled) { + var _camera$renderTarget; + const renderTarget = (_camera$renderTarget = camera.renderTarget) != null ? _camera$renderTarget : layer.renderTarget; + if (cameraChanged || renderTarget !== currentRenderTarget) { + cameraChanged = false; + currentRenderTarget = renderTarget; + camera.frameUpdate(renderTarget); + this.updateCameraFrustum(camera.camera); + } + this.cullLights(camera.camera, layer._lights); + layer.onPreCull == null || layer.onPreCull(comp.camerasMap.get(camera)); + const culledInstances = layer.getCulledInstances(camera.camera); + this.cull(camera.camera, layer.meshInstances, culledInstances); + layer.onPostCull == null || layer.onPostCull(comp.camerasMap.get(camera)); + } + } + } + if (this.scene.clusteredLightingEnabled) { + this.updateLightTextureAtlas(); + } + this.cullShadowmaps(comp); + } + updateShaders(drawCalls, onlyLitShaders) { + const count = drawCalls.length; + for (let i = 0; i < count; i++) { + const mat = drawCalls[i].material; + if (mat) { + if (!_tempSet.has(mat)) { + _tempSet.add(mat); + if (mat.getShaderVariant !== Material.prototype.getShaderVariant) { + if (onlyLitShaders) { + if (!mat.useLighting || mat.emitter && !mat.emitter.lighting) continue; + } + mat.clearVariants(); + } + } + } + } + _tempSet.clear(); + } + updateFrameUniforms() { + this.blueNoiseTextureId.setValue(getBlueNoiseTexture(this.device)); + } + beginFrame(comp) { + const scene2 = this.scene; + const updateShaders = scene2.updateShaders; + const layers = comp.layerList; + const layerCount = layers.length; + for (let i = 0; i < layerCount; i++) { + const layer = layers[i]; + const meshInstances = layer.meshInstances; + const count = meshInstances.length; + for (let j = 0; j < count; j++) { + const meshInst = meshInstances[j]; + meshInst.visibleThisFrame = false; + if (updateShaders) { + _tempMeshInstances.push(meshInst); + } + if (meshInst.skinInstance) { + _tempMeshInstancesSkinned.push(meshInst); + } + } + } + if (updateShaders) { + const onlyLitShaders = !scene2.updateShaders; + this.updateShaders(_tempMeshInstances, onlyLitShaders); + scene2.updateShaders = false; + scene2._shaderVersion++; + } + this.updateFrameUniforms(); + this.updateCpuSkinMatrices(_tempMeshInstancesSkinned); + _tempMeshInstances.length = 0; + _tempMeshInstancesSkinned.length = 0; + const lights2 = this.lights; + const lightCount = lights2.length; + for (let i = 0; i < lightCount; i++) { + lights2[i].beginFrame(); + } + } + updateLightTextureAtlas() { + this.lightTextureAtlas.update(this.localLights, this.scene.lighting); + } + updateLayerComposition(comp) { + const len = comp.layerList.length; + for (let i = 0; i < len; i++) { + comp.layerList[i]._postRenderCounter = 0; + } + const scene2 = this.scene; + const shaderVersion = scene2._shaderVersion; + for (let i = 0; i < len; i++) { + const layer = comp.layerList[i]; + layer._shaderVersion = shaderVersion; + layer._preRenderCalledForCameras = 0; + layer._postRenderCalledForCameras = 0; + const transparent = comp.subLayerList[i]; + if (transparent) { + layer._postRenderCounter |= 2; + } else { + layer._postRenderCounter |= 1; + } + layer._postRenderCounterMax = layer._postRenderCounter; + } + comp._update(); + } + frameUpdate() { + this.clustersDebugRendered = false; + this.initViewBindGroupFormat(this.scene.clusteredLightingEnabled); + this.dirLightShadows.clear(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/composition/render-action.js +var RenderAction = class { + constructor() { + this.layer = null; + this.transparent = false; + this.camera = null; + this.renderTarget = null; + this.lightClusters = null; + this.clearColor = false; + this.clearDepth = false; + this.clearStencil = false; + this.triggerPostprocess = false; + this.firstCameraUse = false; + this.lastCameraUse = false; + this.viewBindGroups = []; + this.useCameraPasses = false; + } + destroy() { + this.viewBindGroups.forEach((bg) => { + bg.defaultUniformBuffer.destroy(); + bg.destroy(); + }); + this.viewBindGroups.length = 0; + } + setupClears(camera, layer) { + this.clearColor = (camera == null ? void 0 : camera.clearColorBuffer) || layer.clearColorBuffer; + this.clearDepth = (camera == null ? void 0 : camera.clearDepthBuffer) || layer.clearDepthBuffer; + this.clearStencil = (camera == null ? void 0 : camera.clearStencilBuffer) || layer.clearStencilBuffer; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-forward.js +var RenderPassForward = class extends RenderPass { + constructor(device, layerComposition, scene2, renderer) { + super(device); + this.layerComposition = void 0; + this.scene = void 0; + this.renderer = void 0; + this.renderActions = []; + this.noDepthClear = false; + this.layerComposition = layerComposition; + this.scene = scene2; + this.renderer = renderer; + } + addRenderAction(renderAction) { + this.renderActions.push(renderAction); + } + addLayer(cameraComponent, layer, transparent, autoClears = true) { + const ra = new RenderAction(); + ra.renderTarget = this.renderTarget; + ra.camera = cameraComponent; + ra.layer = layer; + ra.transparent = transparent; + if (autoClears) { + const firstRa = this.renderActions.length === 0; + ra.setupClears(firstRa ? cameraComponent : void 0, layer); + } + this.addRenderAction(ra); + } + addLayers(composition, cameraComponent, startIndex, firstLayerClears, lastLayerId, lastLayerIsTransparent = true) { + const { + layerList, + subLayerEnabled, + subLayerList + } = composition; + let clearRenderTarget = firstLayerClears; + let index = startIndex; + while (index < layerList.length) { + const layer = layerList[index]; + const isTransparent = subLayerList[index]; + const enabled = layer.enabled && subLayerEnabled[index]; + const renderedbyCamera = cameraComponent.camera.layersSet.has(layer.id); + if (enabled && renderedbyCamera) { + this.addLayer(cameraComponent, layer, isTransparent, clearRenderTarget); + clearRenderTarget = false; + } + index++; + if (layer.id === lastLayerId && isTransparent === lastLayerIsTransparent) { + break; + } + } + return index; + } + updateDirectionalShadows() { + const { + renderer, + renderActions + } = this; + for (let i = 0; i < renderActions.length; i++) { + const renderAction = renderActions[i]; + const cameraComp = renderAction.camera; + const camera = cameraComp.camera; + const shadowDirLights = this.renderer.cameraDirShadowLights.get(camera); + if (shadowDirLights) { + for (let l = 0; l < shadowDirLights.length; l++) { + const light = shadowDirLights[l]; + if (renderer.dirLightShadows.get(light) !== camera) { + renderer.dirLightShadows.set(light, camera); + const shadowPass = renderer._shadowRendererDirectional.getLightRenderPass(light, camera); + if (shadowPass) { + this.beforePasses.push(shadowPass); + } + } + } + } + } + } + updateClears() { + const renderAction = this.renderActions[0]; + if (renderAction) { + const cameraComponent = renderAction.camera; + const camera = cameraComponent.camera; + const fullSizeClearRect = camera.fullSizeClearRect; + this.setClearColor(fullSizeClearRect && renderAction.clearColor ? camera.clearColor : void 0); + this.setClearDepth(fullSizeClearRect && renderAction.clearDepth && !this.noDepthClear ? camera.clearDepth : void 0); + this.setClearStencil(fullSizeClearRect && renderAction.clearStencil ? camera.clearStencil : void 0); + } + } + frameUpdate() { + super.frameUpdate(); + this.updateDirectionalShadows(); + this.updateClears(); + } + before() { + const { + renderActions + } = this; + if (renderActions.length) { + const ra = renderActions[0]; + if (ra.camera.onPreRender && ra.firstCameraUse) { + ra.camera.onPreRender(); + } + } + } + execute() { + const { + layerComposition, + renderActions + } = this; + for (let i = 0; i < renderActions.length; i++) { + const ra = renderActions[i]; + if (layerComposition.isEnabled(ra.layer, ra.transparent)) { + this.renderRenderAction(ra, i === 0); + } + } + } + after() { + const { + renderActions + } = this; + if (renderActions.length) { + const ra = renderActions[renderActions.length - 1]; + if (ra.camera.onPostRender && ra.lastCameraUse) { + ra.camera.onPostRender(); + } + } + this.beforePasses.length = 0; + } + renderRenderAction(renderAction, firstRenderAction) { + const { + renderer, + layerComposition + } = this; + const device = renderer.device; + const { + layer, + transparent, + camera + } = renderAction; + const cameraPass = layerComposition.camerasMap.get(camera); + if (!transparent && layer.onPreRenderOpaque) { + layer.onPreRenderOpaque(cameraPass); + } else if (transparent && layer.onPreRenderTransparent) { + layer.onPreRenderTransparent(cameraPass); + } + if (!(layer._preRenderCalledForCameras & 1 << cameraPass)) { + if (layer.onPreRender) { + layer.onPreRender(cameraPass); + } + layer._preRenderCalledForCameras |= 1 << cameraPass; + } + if (camera) { + var _camera$camera$shader, _camera$camera$shader2; + const options = { + lightClusters: renderAction.lightClusters + }; + const shaderPass = (_camera$camera$shader = (_camera$camera$shader2 = camera.camera.shaderPassInfo) == null ? void 0 : _camera$camera$shader2.index) != null ? _camera$camera$shader : layer.shaderPass; + if (!firstRenderAction || !camera.camera.fullSizeClearRect) { + options.clearColor = renderAction.clearColor; + options.clearDepth = renderAction.clearDepth; + options.clearStencil = renderAction.clearStencil; + } + renderer.renderForwardLayer(camera.camera, renderAction.renderTarget, layer, transparent, shaderPass, renderAction.viewBindGroups, options); + device.setBlendState(BlendState.NOBLEND); + device.setStencilState(null, null); + device.setAlphaToCoverage(false); + } + if (!transparent && layer.onPostRenderOpaque) { + layer.onPostRenderOpaque(cameraPass); + } else if (transparent && layer.onPostRenderTransparent) { + layer.onPostRenderTransparent(cameraPass); + } + if (layer.onPostRender && !(layer._postRenderCalledForCameras & 1 << cameraPass)) { + layer._postRenderCounter &= ~(transparent ? 2 : 1); + if (layer._postRenderCounter === 0) { + layer.onPostRender(cameraPass); + layer._postRenderCalledForCameras |= 1 << cameraPass; + layer._postRenderCounter = layer._postRenderCounterMax; + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-postprocessing.js +var RenderPassPostprocessing = class extends RenderPass { + constructor(device, renderer, renderAction) { + super(device); + this.renderer = renderer; + this.renderAction = renderAction; + this.requiresCubemaps = false; + } + execute() { + const renderAction = this.renderAction; + const camera = renderAction.camera; + camera.onPostprocessing(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/forward-renderer.js +var _noLights = [[], [], []]; +var _drawCallList = { + drawCalls: [], + shaderInstances: [], + isNewMaterial: [], + lightMaskChanged: [], + clear: function() { + this.drawCalls.length = 0; + this.shaderInstances.length = 0; + this.isNewMaterial.length = 0; + this.lightMaskChanged.length = 0; + } +}; +function vogelDiskPrecalculationSamples(numSamples) { + const samples = []; + for (let i = 0; i < numSamples; ++i) { + const r = Math.sqrt(i + 0.5) / Math.sqrt(numSamples); + samples.push(r); + } + return samples; +} +function vogelSpherePrecalculationSamples(numSamples) { + const samples = []; + for (let i = 0; i < numSamples; i++) { + const weight = i / numSamples; + const radius = Math.sqrt(1 - weight * weight); + samples.push(radius); + } + return samples; +} +var ForwardRenderer = class extends Renderer { + constructor(graphicsDevice) { + super(graphicsDevice); + const device = this.device; + this._forwardDrawCalls = 0; + this._materialSwitches = 0; + this._depthMapTime = 0; + this._forwardTime = 0; + this._sortTime = 0; + const scope = device.scope; + this.fogColorId = scope.resolve("fog_color"); + this.fogStartId = scope.resolve("fog_start"); + this.fogEndId = scope.resolve("fog_end"); + this.fogDensityId = scope.resolve("fog_density"); + this.ambientId = scope.resolve("light_globalAmbient"); + this.skyboxIntensityId = scope.resolve("skyboxIntensity"); + this.cubeMapRotationMatrixId = scope.resolve("cubeMapRotationMatrix"); + this.pcssDiskSamplesId = scope.resolve("pcssDiskSamples[0]"); + this.pcssSphereSamplesId = scope.resolve("pcssSphereSamples[0]"); + this.lightColorId = []; + this.lightDir = []; + this.lightDirId = []; + this.lightShadowMapId = []; + this.lightShadowMatrixId = []; + this.lightShadowParamsId = []; + this.lightShadowIntensity = []; + this.lightRadiusId = []; + this.lightPos = []; + this.lightPosId = []; + this.lightWidth = []; + this.lightWidthId = []; + this.lightHeight = []; + this.lightHeightId = []; + this.lightInAngleId = []; + this.lightOutAngleId = []; + this.lightCookieId = []; + this.lightCookieIntId = []; + this.lightCookieMatrixId = []; + this.lightCookieOffsetId = []; + this.lightShadowSearchAreaId = []; + this.lightCameraParamsId = []; + this.shadowMatrixPaletteId = []; + this.shadowCascadeDistancesId = []; + this.shadowCascadeCountId = []; + this.screenSizeId = scope.resolve("uScreenSize"); + this._screenSize = new Float32Array(4); + this.fogColor = new Float32Array(3); + this.ambientColor = new Float32Array(3); + this.pcssDiskSamples = vogelDiskPrecalculationSamples(16); + this.pcssSphereSamples = vogelSpherePrecalculationSamples(16); + } + destroy() { + super.destroy(); + } + dispatchGlobalLights(scene2) { + this.ambientColor[0] = scene2.ambientLight.r; + this.ambientColor[1] = scene2.ambientLight.g; + this.ambientColor[2] = scene2.ambientLight.b; + if (scene2.gammaCorrection) { + for (let i = 0; i < 3; i++) { + this.ambientColor[i] = Math.pow(this.ambientColor[i], 2.2); + } + } + if (scene2.physicalUnits) { + for (let i = 0; i < 3; i++) { + this.ambientColor[i] *= scene2.ambientLuminance; + } + } + this.ambientId.setValue(this.ambientColor); + this.skyboxIntensityId.setValue(scene2.physicalUnits ? scene2.skyboxLuminance : scene2.skyboxIntensity); + this.cubeMapRotationMatrixId.setValue(scene2._skyboxRotationMat3.data); + } + _resolveLight(scope, i) { + const light = "light" + i; + this.lightColorId[i] = scope.resolve(light + "_color"); + this.lightDir[i] = new Float32Array(3); + this.lightDirId[i] = scope.resolve(light + "_direction"); + this.lightShadowMapId[i] = scope.resolve(light + "_shadowMap"); + this.lightShadowMatrixId[i] = scope.resolve(light + "_shadowMatrix"); + this.lightShadowParamsId[i] = scope.resolve(light + "_shadowParams"); + this.lightShadowIntensity[i] = scope.resolve(light + "_shadowIntensity"); + this.lightShadowSearchAreaId[i] = scope.resolve(light + "_shadowSearchArea"); + this.lightRadiusId[i] = scope.resolve(light + "_radius"); + this.lightPos[i] = new Float32Array(3); + this.lightPosId[i] = scope.resolve(light + "_position"); + this.lightWidth[i] = new Float32Array(3); + this.lightWidthId[i] = scope.resolve(light + "_halfWidth"); + this.lightHeight[i] = new Float32Array(3); + this.lightHeightId[i] = scope.resolve(light + "_halfHeight"); + this.lightInAngleId[i] = scope.resolve(light + "_innerConeAngle"); + this.lightOutAngleId[i] = scope.resolve(light + "_outerConeAngle"); + this.lightCookieId[i] = scope.resolve(light + "_cookie"); + this.lightCookieIntId[i] = scope.resolve(light + "_cookieIntensity"); + this.lightCookieMatrixId[i] = scope.resolve(light + "_cookieMatrix"); + this.lightCookieOffsetId[i] = scope.resolve(light + "_cookieOffset"); + this.lightCameraParamsId[i] = scope.resolve(light + "_cameraParams"); + this.shadowMatrixPaletteId[i] = scope.resolve(light + "_shadowMatrixPalette[0]"); + this.shadowCascadeDistancesId[i] = scope.resolve(light + "_shadowCascadeDistances[0]"); + this.shadowCascadeCountId[i] = scope.resolve(light + "_shadowCascadeCount"); + } + setLTCDirectionalLight(wtm, cnt, dir, campos, far) { + this.lightPos[cnt][0] = campos.x - dir.x * far; + this.lightPos[cnt][1] = campos.y - dir.y * far; + this.lightPos[cnt][2] = campos.z - dir.z * far; + this.lightPosId[cnt].setValue(this.lightPos[cnt]); + const hWidth = wtm.transformVector(new Vec3(-0.5, 0, 0)); + this.lightWidth[cnt][0] = hWidth.x * far; + this.lightWidth[cnt][1] = hWidth.y * far; + this.lightWidth[cnt][2] = hWidth.z * far; + this.lightWidthId[cnt].setValue(this.lightWidth[cnt]); + const hHeight = wtm.transformVector(new Vec3(0, 0, 0.5)); + this.lightHeight[cnt][0] = hHeight.x * far; + this.lightHeight[cnt][1] = hHeight.y * far; + this.lightHeight[cnt][2] = hHeight.z * far; + this.lightHeightId[cnt].setValue(this.lightHeight[cnt]); + } + dispatchDirectLights(dirs, scene2, mask, camera) { + let cnt = 0; + const scope = this.device.scope; + for (let i = 0; i < dirs.length; i++) { + if (!(dirs[i].mask & mask)) continue; + const directional = dirs[i]; + const wtm = directional._node.getWorldTransform(); + if (!this.lightColorId[cnt]) { + this._resolveLight(scope, cnt); + } + this.lightColorId[cnt].setValue(scene2.gammaCorrection ? directional._linearFinalColor : directional._finalColor); + wtm.getY(directional._direction).mulScalar(-1); + directional._direction.normalize(); + this.lightDir[cnt][0] = directional._direction.x; + this.lightDir[cnt][1] = directional._direction.y; + this.lightDir[cnt][2] = directional._direction.z; + this.lightDirId[cnt].setValue(this.lightDir[cnt]); + if (directional.shape !== LIGHTSHAPE_PUNCTUAL) { + this.setLTCDirectionalLight(wtm, cnt, directional._direction, camera._node.getPosition(), camera.farClip); + } + if (directional.castShadows) { + const lightRenderData = directional.getRenderData(camera, 0); + const biases = directional._getUniformBiasValues(lightRenderData); + this.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer); + this.lightShadowMatrixId[cnt].setValue(lightRenderData.shadowMatrix.data); + this.shadowMatrixPaletteId[cnt].setValue(directional._shadowMatrixPalette); + this.shadowCascadeDistancesId[cnt].setValue(directional._shadowCascadeDistances); + this.shadowCascadeCountId[cnt].setValue(directional.numCascades); + this.lightShadowIntensity[cnt].setValue(directional.shadowIntensity); + const projectionCompensation = 50 / lightRenderData.projectionCompensation; + const pixelsPerMeter = directional.penumbraSize / lightRenderData.shadowCamera.renderTarget.width; + this.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter * projectionCompensation); + const cameraParams = directional._shadowCameraParams; + cameraParams.length = 4; + cameraParams[0] = lightRenderData.depthRangeCompensation; + cameraParams[1] = lightRenderData.shadowCamera._farClip; + cameraParams[2] = lightRenderData.shadowCamera._nearClip; + cameraParams[3] = 1; + this.lightCameraParamsId[cnt].setValue(cameraParams); + const params = directional._shadowRenderParams; + params.length = 4; + params[0] = directional._shadowResolution; + params[1] = biases.normalBias; + params[2] = biases.bias; + params[3] = 0; + this.lightShadowParamsId[cnt].setValue(params); + } + cnt++; + } + return cnt; + } + setLTCPositionalLight(wtm, cnt) { + const hWidth = wtm.transformVector(new Vec3(-0.5, 0, 0)); + this.lightWidth[cnt][0] = hWidth.x; + this.lightWidth[cnt][1] = hWidth.y; + this.lightWidth[cnt][2] = hWidth.z; + this.lightWidthId[cnt].setValue(this.lightWidth[cnt]); + const hHeight = wtm.transformVector(new Vec3(0, 0, 0.5)); + this.lightHeight[cnt][0] = hHeight.x; + this.lightHeight[cnt][1] = hHeight.y; + this.lightHeight[cnt][2] = hHeight.z; + this.lightHeightId[cnt].setValue(this.lightHeight[cnt]); + } + dispatchOmniLight(scene2, scope, omni, cnt) { + const wtm = omni._node.getWorldTransform(); + if (!this.lightColorId[cnt]) { + this._resolveLight(scope, cnt); + } + this.lightRadiusId[cnt].setValue(omni.attenuationEnd); + this.lightColorId[cnt].setValue(scene2.gammaCorrection ? omni._linearFinalColor : omni._finalColor); + wtm.getTranslation(omni._position); + this.lightPos[cnt][0] = omni._position.x; + this.lightPos[cnt][1] = omni._position.y; + this.lightPos[cnt][2] = omni._position.z; + this.lightPosId[cnt].setValue(this.lightPos[cnt]); + if (omni.shape !== LIGHTSHAPE_PUNCTUAL) { + this.setLTCPositionalLight(wtm, cnt); + } + if (omni.castShadows) { + const lightRenderData = omni.getRenderData(null, 0); + this.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer); + const biases = omni._getUniformBiasValues(lightRenderData); + const params = omni._shadowRenderParams; + params.length = 4; + params[0] = omni._shadowResolution; + params[1] = biases.normalBias; + params[2] = biases.bias; + params[3] = 1 / omni.attenuationEnd; + this.lightShadowParamsId[cnt].setValue(params); + this.lightShadowIntensity[cnt].setValue(omni.shadowIntensity); + const pixelsPerMeter = omni.penumbraSize / lightRenderData.shadowCamera.renderTarget.width; + this.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter); + const cameraParams = omni._shadowCameraParams; + cameraParams.length = 4; + cameraParams[0] = lightRenderData.depthRangeCompensation; + cameraParams[1] = lightRenderData.shadowCamera._farClip; + cameraParams[2] = lightRenderData.shadowCamera._nearClip; + cameraParams[3] = 0; + this.lightCameraParamsId[cnt].setValue(cameraParams); + } + if (omni._cookie) { + this.lightCookieId[cnt].setValue(omni._cookie); + this.lightShadowMatrixId[cnt].setValue(wtm.data); + this.lightCookieIntId[cnt].setValue(omni.cookieIntensity); + } + } + dispatchSpotLight(scene2, scope, spot, cnt) { + const wtm = spot._node.getWorldTransform(); + if (!this.lightColorId[cnt]) { + this._resolveLight(scope, cnt); + } + this.lightInAngleId[cnt].setValue(spot._innerConeAngleCos); + this.lightOutAngleId[cnt].setValue(spot._outerConeAngleCos); + this.lightRadiusId[cnt].setValue(spot.attenuationEnd); + this.lightColorId[cnt].setValue(scene2.gammaCorrection ? spot._linearFinalColor : spot._finalColor); + wtm.getTranslation(spot._position); + this.lightPos[cnt][0] = spot._position.x; + this.lightPos[cnt][1] = spot._position.y; + this.lightPos[cnt][2] = spot._position.z; + this.lightPosId[cnt].setValue(this.lightPos[cnt]); + if (spot.shape !== LIGHTSHAPE_PUNCTUAL) { + this.setLTCPositionalLight(wtm, cnt); + } + wtm.getY(spot._direction).mulScalar(-1); + spot._direction.normalize(); + this.lightDir[cnt][0] = spot._direction.x; + this.lightDir[cnt][1] = spot._direction.y; + this.lightDir[cnt][2] = spot._direction.z; + this.lightDirId[cnt].setValue(this.lightDir[cnt]); + if (spot.castShadows) { + const lightRenderData = spot.getRenderData(null, 0); + this.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer); + this.lightShadowMatrixId[cnt].setValue(lightRenderData.shadowMatrix.data); + const biases = spot._getUniformBiasValues(lightRenderData); + const params = spot._shadowRenderParams; + params.length = 4; + params[0] = spot._shadowResolution; + params[1] = biases.normalBias; + params[2] = biases.bias; + params[3] = 1 / spot.attenuationEnd; + this.lightShadowParamsId[cnt].setValue(params); + this.lightShadowIntensity[cnt].setValue(spot.shadowIntensity); + const pixelsPerMeter = spot.penumbraSize / lightRenderData.shadowCamera.renderTarget.width; + const fov = lightRenderData.shadowCamera._fov * Math.PI / 180; + const fovRatio = 1 / Math.tan(fov / 2); + this.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter * fovRatio); + const cameraParams = spot._shadowCameraParams; + cameraParams.length = 4; + cameraParams[0] = lightRenderData.depthRangeCompensation; + cameraParams[1] = lightRenderData.shadowCamera._farClip; + cameraParams[2] = lightRenderData.shadowCamera._nearClip; + cameraParams[3] = 0; + this.lightCameraParamsId[cnt].setValue(cameraParams); + } + if (spot._cookie) { + if (!spot.castShadows) { + const cookieMatrix = LightCamera.evalSpotCookieMatrix(spot); + this.lightShadowMatrixId[cnt].setValue(cookieMatrix.data); + } + this.lightCookieId[cnt].setValue(spot._cookie); + this.lightCookieIntId[cnt].setValue(spot.cookieIntensity); + if (spot._cookieTransform) { + spot._cookieTransformUniform[0] = spot._cookieTransform.x; + spot._cookieTransformUniform[1] = spot._cookieTransform.y; + spot._cookieTransformUniform[2] = spot._cookieTransform.z; + spot._cookieTransformUniform[3] = spot._cookieTransform.w; + this.lightCookieMatrixId[cnt].setValue(spot._cookieTransformUniform); + spot._cookieOffsetUniform[0] = spot._cookieOffset.x; + spot._cookieOffsetUniform[1] = spot._cookieOffset.y; + this.lightCookieOffsetId[cnt].setValue(spot._cookieOffsetUniform); + } + } + } + dispatchLocalLights(sortedLights, scene2, mask, usedDirLights) { + let cnt = usedDirLights; + const scope = this.device.scope; + const omnis = sortedLights[LIGHTTYPE_OMNI]; + const numOmnis = omnis.length; + for (let i = 0; i < numOmnis; i++) { + const omni = omnis[i]; + if (!(omni.mask & mask)) continue; + this.dispatchOmniLight(scene2, scope, omni, cnt); + cnt++; + } + const spts = sortedLights[LIGHTTYPE_SPOT]; + const numSpts = spts.length; + for (let i = 0; i < numSpts; i++) { + const spot = spts[i]; + if (!(spot.mask & mask)) continue; + this.dispatchSpotLight(scene2, scope, spot, cnt); + cnt++; + } + } + renderForwardPrepareMaterials(camera, drawCalls, sortedLights, layer, pass) { + var _layer$getLightHash; + const addCall = (drawCall, shaderInstance, isNewMaterial, lightMaskChanged) => { + _drawCallList.drawCalls.push(drawCall); + _drawCallList.shaderInstances.push(shaderInstance); + _drawCallList.isNewMaterial.push(isNewMaterial); + _drawCallList.lightMaskChanged.push(lightMaskChanged); + }; + _drawCallList.clear(); + const device = this.device; + const scene2 = this.scene; + const clusteredLightingEnabled = scene2.clusteredLightingEnabled; + const lightHash = (_layer$getLightHash = layer == null ? void 0 : layer.getLightHash(clusteredLightingEnabled)) != null ? _layer$getLightHash : 0; + let prevMaterial = null, prevObjDefs, prevLightMask; + const drawCallsCount = drawCalls.length; + for (let i = 0; i < drawCallsCount; i++) { + const drawCall = drawCalls[i]; + drawCall.ensureMaterial(device); + const material = drawCall.material; + const objDefs = drawCall._shaderDefs; + const lightMask = drawCall.mask; + if (material && material === prevMaterial && objDefs !== prevObjDefs) { + prevMaterial = null; + } + if (material !== prevMaterial) { + this._materialSwitches++; + material._scene = scene2; + if (material.dirty) { + material.updateUniforms(device, scene2); + material.dirty = false; + } + } + const shaderInstance = drawCall.getShaderInstance(pass, lightHash, scene2, this.viewUniformFormat, this.viewBindGroupFormat, sortedLights); + addCall(drawCall, shaderInstance, material !== prevMaterial, !prevMaterial || lightMask !== prevLightMask); + prevMaterial = material; + prevObjDefs = objDefs; + prevLightMask = lightMask; + } + return _drawCallList; + } + renderForwardInternal(camera, preparedCalls, sortedLights, pass, drawCallback, flipFaces) { + const device = this.device; + const scene2 = this.scene; + const passFlag = 1 << pass; + const flipFactor = flipFaces ? -1 : 1; + const clusteredLightingEnabled = this.scene.clusteredLightingEnabled; + const preparedCallsCount = preparedCalls.drawCalls.length; + for (let i = 0; i < preparedCallsCount; i++) { + var _drawCall$stencilFron, _drawCall$stencilBack; + const drawCall = preparedCalls.drawCalls[i]; + const newMaterial = preparedCalls.isNewMaterial[i]; + const lightMaskChanged = preparedCalls.lightMaskChanged[i]; + const shaderInstance = preparedCalls.shaderInstances[i]; + const material = drawCall.material; + const lightMask = drawCall.mask; + if (newMaterial) { + const asyncCompile = false; + device.setShader(shaderInstance.shader, asyncCompile); + material.setParameters(device); + if (lightMaskChanged) { + const usedDirLights = this.dispatchDirectLights(sortedLights[LIGHTTYPE_DIRECTIONAL], scene2, lightMask, camera); + if (!clusteredLightingEnabled) { + this.dispatchLocalLights(sortedLights, scene2, lightMask, usedDirLights); + } + } + this.alphaTestId.setValue(material.alphaTest); + device.setBlendState(material.blendState); + device.setDepthState(material.depthState); + device.setAlphaToCoverage(material.alphaToCoverage); + } + this.setupCullMode(camera._cullFaces, flipFactor, drawCall); + const stencilFront = (_drawCall$stencilFron = drawCall.stencilFront) != null ? _drawCall$stencilFron : material.stencilFront; + const stencilBack = (_drawCall$stencilBack = drawCall.stencilBack) != null ? _drawCall$stencilBack : material.stencilBack; + device.setStencilState(stencilFront, stencilBack); + const mesh = drawCall.mesh; + drawCall.setParameters(device, passFlag); + this.setVertexBuffers(device, mesh); + this.setMorphing(device, drawCall.morphInstance); + this.setSkinning(device, drawCall); + this.setupMeshUniformBuffers(shaderInstance, drawCall); + const style = drawCall.renderStyle; + device.setIndexBuffer(mesh.indexBuffer[style]); + drawCallback == null || drawCallback(drawCall, i); + if (camera.xr && camera.xr.session && camera.xr.views.list.length) { + const views = camera.xr.views; + for (let v = 0; v < views.list.length; v++) { + const view = views.list[v]; + device.setViewport(view.viewport.x, view.viewport.y, view.viewport.z, view.viewport.w); + this.projId.setValue(view.projMat.data); + this.projSkyboxId.setValue(view.projMat.data); + this.viewId.setValue(view.viewOffMat.data); + this.viewInvId.setValue(view.viewInvOffMat.data); + this.viewId3.setValue(view.viewMat3.data); + this.viewProjId.setValue(view.projViewOffMat.data); + this.viewPosId.setValue(view.positionData); + this.viewIndexId.setValue(v); + if (v === 0) { + this.drawInstance(device, drawCall, mesh, style, true); + } else { + this.drawInstance2(device, drawCall, mesh, style); + } + this._forwardDrawCalls++; + } + } else { + this.drawInstance(device, drawCall, mesh, style, true); + this._forwardDrawCalls++; + } + if (i < preparedCallsCount - 1 && !preparedCalls.isNewMaterial[i + 1]) { + material.setParameters(device, drawCall.parameters); + } + } + } + renderForward(camera, allDrawCalls, sortedLights, pass, drawCallback, layer, flipFaces) { + const preparedCalls = this.renderForwardPrepareMaterials(camera, allDrawCalls, sortedLights, layer, pass); + this.renderForwardInternal(camera, preparedCalls, sortedLights, pass, drawCallback, flipFaces); + _drawCallList.clear(); + } + renderForwardLayer(camera, renderTarget, layer, transparent, shaderPass, viewBindGroups, options = {}) { + var _options$clearColor, _options$clearDepth, _options$clearStencil; + const { + scene: scene2, + device + } = this; + const clusteredLightingEnabled = scene2.clusteredLightingEnabled; + this.setupViewport(camera, renderTarget); + const clearColor = (_options$clearColor = options.clearColor) != null ? _options$clearColor : false; + const clearDepth = (_options$clearDepth = options.clearDepth) != null ? _options$clearDepth : false; + const clearStencil = (_options$clearStencil = options.clearStencil) != null ? _options$clearStencil : false; + if (clearColor || clearDepth || clearStencil) { + this.clear(camera, clearColor, clearDepth, clearStencil); + } + let visible, splitLights; + if (layer) { + layer.sortVisible(camera, transparent); + const culledInstances = layer.getCulledInstances(camera); + visible = transparent ? culledInstances.transparent : culledInstances.opaque; + scene2.immediate.onPreRenderLayer(layer, visible, transparent); + if (layer.requiresLightCube) { + this.lightCube.update(scene2.ambientLight, layer._lights); + this.constantLightCube.setValue(this.lightCube.colors); + } + splitLights = layer.splitLights; + } else { + var _options$splitLights; + visible = options.meshInstances; + splitLights = (_options$splitLights = options.splitLights) != null ? _options$splitLights : _noLights; + } + if (clusteredLightingEnabled) { + var _options$lightCluster; + const lightClusters = (_options$lightCluster = options.lightClusters) != null ? _options$lightCluster : this.worldClustersAllocator.empty; + lightClusters.activate(); + if (layer) { + if (!this.clustersDebugRendered && scene2.lighting.debugLayer === layer.id) { + this.clustersDebugRendered = true; + } + } + } + scene2._activeCamera = camera; + const viewCount = this.setCameraUniforms(camera, renderTarget); + if (device.supportsUniformBuffers) { + this.setupViewUniformBuffers(viewBindGroups, this.viewUniformFormat, this.viewBindGroupFormat, viewCount); + } + const flipFaces = !!(camera._flipFaces ^ (renderTarget == null ? void 0 : renderTarget.flipY)); + const forwardDrawCalls = this._forwardDrawCalls; + this.renderForward(camera, visible, splitLights, shaderPass, layer == null ? void 0 : layer.onDrawCall, layer, flipFaces); + if (layer) layer._forwardDrawCalls += this._forwardDrawCalls - forwardDrawCalls; + } + setSceneConstants() { + const scene2 = this.scene; + this.dispatchGlobalLights(scene2); + if (scene2.fog !== FOG_NONE) { + this.fogColor[0] = scene2.fogColor.r; + this.fogColor[1] = scene2.fogColor.g; + this.fogColor[2] = scene2.fogColor.b; + if (scene2.gammaCorrection) { + for (let i = 0; i < 3; i++) { + this.fogColor[i] = Math.pow(this.fogColor[i], 2.2); + } + } + this.fogColorId.setValue(this.fogColor); + if (scene2.fog === FOG_LINEAR) { + this.fogStartId.setValue(scene2.fogStart); + this.fogEndId.setValue(scene2.fogEnd); + } else { + this.fogDensityId.setValue(scene2.fogDensity); + } + } + const device = this.device; + this._screenSize[0] = device.width; + this._screenSize[1] = device.height; + this._screenSize[2] = 1 / device.width; + this._screenSize[3] = 1 / device.height; + this.screenSizeId.setValue(this._screenSize); + this.pcssDiskSamplesId.setValue(this.pcssDiskSamples); + this.pcssSphereSamplesId.setValue(this.pcssSphereSamples); + } + buildFrameGraph(frameGraph, layerComposition) { + const scene2 = this.scene; + const webgl1 = this.device.isWebGL1; + frameGraph.reset(); + this.update(layerComposition); + if (scene2.clusteredLightingEnabled) { + const { + shadowsEnabled, + cookiesEnabled + } = scene2.lighting; + this._renderPassUpdateClustered.update(frameGraph, shadowsEnabled, cookiesEnabled, this.lights, this.localLights); + frameGraph.addRenderPass(this._renderPassUpdateClustered); + } else { + this._shadowRendererLocal.buildNonClusteredRenderPasses(frameGraph, this.localLights); + } + let startIndex = 0; + let newStart = true; + let renderTarget = null; + const renderActions = layerComposition._renderActions; + for (let i = startIndex; i < renderActions.length; i++) { + const renderAction = renderActions[i]; + const { + layer, + camera + } = renderAction; + if (renderAction.useCameraPasses) { + camera.camera.renderPasses.forEach((renderPass) => { + frameGraph.addRenderPass(renderPass); + }); + } else { + const depthPass = camera.camera.renderPassDepthGrab; + if (depthPass && webgl1 && renderAction.firstCameraUse) { + depthPass.options.resizeSource = camera.camera.renderTarget; + depthPass.update(this.scene); + frameGraph.addRenderPass(depthPass); + } + const isDepthLayer = layer.id === LAYERID_DEPTH; + if (webgl1 && isDepthLayer && !camera.renderSceneColorMap) continue; + const isGrabPass = isDepthLayer && (camera.renderSceneColorMap || camera.renderSceneDepthMap); + if (newStart) { + newStart = false; + startIndex = i; + renderTarget = renderAction.renderTarget; + } + const nextRenderAction = renderActions[i + 1]; + const isNextLayerDepth = nextRenderAction ? nextRenderAction.layer.id === LAYERID_DEPTH : false; + const isNextLayerGrabPass = isNextLayerDepth && (camera.renderSceneColorMap || camera.renderSceneDepthMap) && !webgl1; + const nextNeedDirShadows = nextRenderAction ? nextRenderAction.firstCameraUse && this.cameraDirShadowLights.has(nextRenderAction.camera.camera) : false; + if (!nextRenderAction || nextRenderAction.renderTarget !== renderTarget || nextNeedDirShadows || isNextLayerGrabPass || isGrabPass) { + const isDepthOnly = isDepthLayer && startIndex === i; + if (!isDepthOnly) { + this.addMainRenderPass(frameGraph, layerComposition, renderTarget, startIndex, i); + } + if (isDepthLayer) { + if (camera.renderSceneColorMap) { + const colorGrabPass = camera.camera.renderPassColorGrab; + colorGrabPass.source = camera.renderTarget; + frameGraph.addRenderPass(colorGrabPass); + } + if (camera.renderSceneDepthMap && !webgl1) { + frameGraph.addRenderPass(camera.camera.renderPassDepthGrab); + } + } + if (renderAction.triggerPostprocess && camera != null && camera.onPostprocessing) { + const renderPass = new RenderPassPostprocessing(this.device, this, renderAction); + frameGraph.addRenderPass(renderPass); + } + newStart = true; + } + } + } + } + addMainRenderPass(frameGraph, layerComposition, renderTarget, startIndex, endIndex) { + const renderPass = new RenderPassForward(this.device, layerComposition, this.scene, this); + renderPass.init(renderTarget); + const renderActions = layerComposition._renderActions; + for (let i = startIndex; i <= endIndex; i++) { + renderPass.addRenderAction(renderActions[i]); + } + frameGraph.addRenderPass(renderPass); + } + update(comp) { + this.frameUpdate(); + this.shadowRenderer.frameUpdate(); + this.scene._updateSkyMesh(); + this.updateLayerComposition(comp); + this.collectLights(comp); + this.beginFrame(comp); + this.setSceneConstants(); + this.cullComposition(comp); + this.gpuUpdate(this.processingMeshInstances); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/layer.js +function sortManual(drawCallA, drawCallB) { + return drawCallA.drawOrder - drawCallB.drawOrder; +} +function sortMaterialMesh(drawCallA, drawCallB) { + const keyA = drawCallA._key[SORTKEY_FORWARD]; + const keyB = drawCallB._key[SORTKEY_FORWARD]; + if (keyA === keyB && drawCallA.mesh && drawCallB.mesh) { + return drawCallB.mesh.id - drawCallA.mesh.id; + } + return keyB - keyA; +} +function sortBackToFront(drawCallA, drawCallB) { + return drawCallB.zdist - drawCallA.zdist; +} +function sortFrontToBack(drawCallA, drawCallB) { + return drawCallA.zdist - drawCallB.zdist; +} +var sortCallbacks = [null, sortManual, sortMaterialMesh, sortBackToFront, sortFrontToBack]; +var layerCounter = 0; +var lightKeys = []; +var _tempMaterials = /* @__PURE__ */ new Set(); +var CulledInstances = class { + constructor() { + this.opaque = []; + this.transparent = []; + } +}; +var Layer = class { + constructor(options = {}) { + var _options$enabled, _options$opaqueSortMo, _options$transparentS, _options$shaderPass; + this.meshInstances = []; + this.meshInstancesSet = /* @__PURE__ */ new Set(); + this.shadowCasters = []; + this.shadowCastersSet = /* @__PURE__ */ new Set(); + this._visibleInstances = /* @__PURE__ */ new WeakMap(); + this._lights = []; + this._lightsSet = /* @__PURE__ */ new Set(); + this._clusteredLightsSet = /* @__PURE__ */ new Set(); + this._splitLights = [[], [], []]; + this._splitLightsDirty = true; + this.requiresLightCube = false; + this.cameras = []; + this.camerasSet = /* @__PURE__ */ new Set(); + this._dirtyComposition = false; + if (options.id !== void 0) { + this.id = options.id; + layerCounter = Math.max(this.id + 1, layerCounter); + } else { + this.id = layerCounter++; + } + this.name = options.name; + this._enabled = (_options$enabled = options.enabled) != null ? _options$enabled : true; + this._refCounter = this._enabled ? 1 : 0; + this.opaqueSortMode = (_options$opaqueSortMo = options.opaqueSortMode) != null ? _options$opaqueSortMo : SORTMODE_MATERIALMESH; + this.transparentSortMode = (_options$transparentS = options.transparentSortMode) != null ? _options$transparentS : SORTMODE_BACK2FRONT; + if (options.renderTarget) { + this.renderTarget = options.renderTarget; + } + this.shaderPass = (_options$shaderPass = options.shaderPass) != null ? _options$shaderPass : SHADER_FORWARD; + this._clearColorBuffer = !!options.clearColorBuffer; + this._clearDepthBuffer = !!options.clearDepthBuffer; + this._clearStencilBuffer = !!options.clearStencilBuffer; + this.onPreCull = options.onPreCull; + this.onPreRender = options.onPreRender; + this.onPreRenderOpaque = options.onPreRenderOpaque; + this.onPreRenderTransparent = options.onPreRenderTransparent; + this.onPostCull = options.onPostCull; + this.onPostRender = options.onPostRender; + this.onPostRenderOpaque = options.onPostRenderOpaque; + this.onPostRenderTransparent = options.onPostRenderTransparent; + this.onDrawCall = options.onDrawCall; + this.onEnable = options.onEnable; + this.onDisable = options.onDisable; + if (this._enabled && this.onEnable) { + this.onEnable(); + } + this.layerReference = options.layerReference; + this.customSortCallback = null; + this.customCalculateSortValues = null; + this._lightHash = 0; + this._lightHashDirty = false; + this._lightIdHash = 0; + this._lightIdHashDirty = false; + this._shaderVersion = -1; + } + set enabled(val) { + if (val !== this._enabled) { + this._dirtyComposition = true; + this._enabled = val; + if (val) { + this.incrementCounter(); + if (this.onEnable) this.onEnable(); + } else { + this.decrementCounter(); + if (this.onDisable) this.onDisable(); + } + } + } + get enabled() { + return this._enabled; + } + set clearColorBuffer(val) { + this._clearColorBuffer = val; + this._dirtyComposition = true; + } + get clearColorBuffer() { + return this._clearColorBuffer; + } + set clearDepthBuffer(val) { + this._clearDepthBuffer = val; + this._dirtyComposition = true; + } + get clearDepthBuffer() { + return this._clearDepthBuffer; + } + set clearStencilBuffer(val) { + this._clearStencilBuffer = val; + this._dirtyComposition = true; + } + get clearStencilBuffer() { + return this._clearStencilBuffer; + } + get hasClusteredLights() { + return this._clusteredLightsSet.size > 0; + } + get clusteredLightsSet() { + return this._clusteredLightsSet; + } + incrementCounter() { + if (this._refCounter === 0) { + this._enabled = true; + if (this.onEnable) this.onEnable(); + } + this._refCounter++; + } + decrementCounter() { + if (this._refCounter === 1) { + this._enabled = false; + if (this.onDisable) this.onDisable(); + } else if (this._refCounter === 0) { + return; + } + this._refCounter--; + } + addMeshInstances(meshInstances, skipShadowCasters) { + const destMeshInstances = this.meshInstances; + const destMeshInstancesSet = this.meshInstancesSet; + for (let i = 0; i < meshInstances.length; i++) { + const mi = meshInstances[i]; + if (!destMeshInstancesSet.has(mi)) { + destMeshInstances.push(mi); + destMeshInstancesSet.add(mi); + _tempMaterials.add(mi.material); + } + } + if (!skipShadowCasters) { + this.addShadowCasters(meshInstances); + } + if (_tempMaterials.size > 0) { + const sceneShaderVer = this._shaderVersion; + _tempMaterials.forEach((mat) => { + if (sceneShaderVer >= 0 && mat._shaderVersion !== sceneShaderVer) { + if (mat.getShaderVariant !== Material.prototype.getShaderVariant) { + mat.clearVariants(); + } + mat._shaderVersion = sceneShaderVer; + } + }); + _tempMaterials.clear(); + } + } + removeMeshInstances(meshInstances, skipShadowCasters) { + const destMeshInstances = this.meshInstances; + const destMeshInstancesSet = this.meshInstancesSet; + for (let i = 0; i < meshInstances.length; i++) { + const mi = meshInstances[i]; + if (destMeshInstancesSet.has(mi)) { + destMeshInstancesSet.delete(mi); + const j = destMeshInstances.indexOf(mi); + if (j >= 0) { + destMeshInstances.splice(j, 1); + } + } + } + if (!skipShadowCasters) { + this.removeShadowCasters(meshInstances); + } + } + addShadowCasters(meshInstances) { + const shadowCasters = this.shadowCasters; + const shadowCastersSet = this.shadowCastersSet; + for (let i = 0; i < meshInstances.length; i++) { + const mi = meshInstances[i]; + if (mi.castShadow && !shadowCastersSet.has(mi)) { + shadowCastersSet.add(mi); + shadowCasters.push(mi); + } + } + } + removeShadowCasters(meshInstances) { + const shadowCasters = this.shadowCasters; + const shadowCastersSet = this.shadowCastersSet; + for (let i = 0; i < meshInstances.length; i++) { + const mi = meshInstances[i]; + if (shadowCastersSet.has(mi)) { + shadowCastersSet.delete(mi); + const j = shadowCasters.indexOf(mi); + if (j >= 0) { + shadowCasters.splice(j, 1); + } + } + } + } + clearMeshInstances(skipShadowCasters = false) { + this.meshInstances.length = 0; + this.meshInstancesSet.clear(); + if (!skipShadowCasters) { + this.shadowCasters.length = 0; + this.shadowCastersSet.clear(); + } + } + markLightsDirty() { + this._lightHashDirty = true; + this._lightIdHashDirty = true; + this._splitLightsDirty = true; + } + addLight(light) { + const l = light.light; + if (!this._lightsSet.has(l)) { + this._lightsSet.add(l); + this._lights.push(l); + this.markLightsDirty(); + } + if (l.type !== LIGHTTYPE_DIRECTIONAL) { + this._clusteredLightsSet.add(l); + } + } + removeLight(light) { + const l = light.light; + if (this._lightsSet.has(l)) { + this._lightsSet.delete(l); + this._lights.splice(this._lights.indexOf(l), 1); + this.markLightsDirty(); + } + if (l.type !== LIGHTTYPE_DIRECTIONAL) { + this._clusteredLightsSet.delete(l); + } + } + clearLights() { + this._lightsSet.forEach((light) => light.removeLayer(this)); + this._lightsSet.clear(); + this._clusteredLightsSet.clear(); + this._lights.length = 0; + this.markLightsDirty(); + } + get splitLights() { + if (this._splitLightsDirty) { + this._splitLightsDirty = false; + const splitLights = this._splitLights; + for (let i = 0; i < splitLights.length; i++) splitLights[i].length = 0; + const lights2 = this._lights; + for (let i = 0; i < lights2.length; i++) { + const light = lights2[i]; + if (light.enabled) { + splitLights[light._type].push(light); + } + } + for (let i = 0; i < splitLights.length; i++) splitLights[i].sort((a, b) => a.key - b.key); + } + return this._splitLights; + } + evaluateLightHash(localLights, directionalLights, useIds) { + let hash = 0; + const lights2 = this._lights; + for (let i = 0; i < lights2.length; i++) { + const isLocalLight = lights2[i].type !== LIGHTTYPE_DIRECTIONAL; + if (localLights && isLocalLight || directionalLights && !isLocalLight) { + lightKeys.push(useIds ? lights2[i].id : lights2[i].key); + } + } + if (lightKeys.length > 0) { + lightKeys.sort(); + hash = hash32Fnv1a(lightKeys); + lightKeys.length = 0; + } + return hash; + } + getLightHash(isClustered) { + if (this._lightHashDirty) { + this._lightHashDirty = false; + this._lightHash = this.evaluateLightHash(!isClustered, true, false); + } + return this._lightHash; + } + getLightIdHash() { + if (this._lightIdHashDirty) { + this._lightIdHashDirty = false; + this._lightIdHash = this.evaluateLightHash(true, false, true); + } + return this._lightIdHash; + } + addCamera(camera) { + if (!this.camerasSet.has(camera.camera)) { + this.camerasSet.add(camera.camera); + this.cameras.push(camera); + this._dirtyComposition = true; + } + } + removeCamera(camera) { + if (this.camerasSet.has(camera.camera)) { + this.camerasSet.delete(camera.camera); + const index = this.cameras.indexOf(camera); + this.cameras.splice(index, 1); + this._dirtyComposition = true; + } + } + clearCameras() { + this.cameras.length = 0; + this.camerasSet.clear(); + this._dirtyComposition = true; + } + _calculateSortDistances(drawCalls, drawCallsCount, camPos, camFwd) { + for (let i = 0; i < drawCallsCount; i++) { + const drawCall = drawCalls[i]; + if (drawCall.layer <= LAYER_FX) continue; + if (drawCall.calculateSortDistance) { + drawCall.zdist = drawCall.calculateSortDistance(drawCall, camPos, camFwd); + continue; + } + const meshPos = drawCall.aabb.center; + const tempx = meshPos.x - camPos.x; + const tempy = meshPos.y - camPos.y; + const tempz = meshPos.z - camPos.z; + drawCall.zdist = tempx * camFwd.x + tempy * camFwd.y + tempz * camFwd.z; + } + } + getCulledInstances(camera) { + let instances = this._visibleInstances.get(camera); + if (!instances) { + instances = new CulledInstances(); + this._visibleInstances.set(camera, instances); + } + return instances; + } + sortVisible(camera, transparent) { + const sortMode = transparent ? this.transparentSortMode : this.opaqueSortMode; + if (sortMode === SORTMODE_NONE) return; + const culledInstances = this.getCulledInstances(camera); + const instances = transparent ? culledInstances.transparent : culledInstances.opaque; + const cameraNode = camera.node; + if (sortMode === SORTMODE_CUSTOM) { + const sortPos = cameraNode.getPosition(); + const sortDir = cameraNode.forward; + if (this.customCalculateSortValues) { + this.customCalculateSortValues(instances, instances.length, sortPos, sortDir); + } + if (this.customSortCallback) { + instances.sort(this.customSortCallback); + } + } else { + if (sortMode === SORTMODE_BACK2FRONT || sortMode === SORTMODE_FRONT2BACK) { + const sortPos = cameraNode.getPosition(); + const sortDir = cameraNode.forward; + this._calculateSortDistances(instances, instances.length, sortPos, sortDir); + } + instances.sort(sortCallbacks[sortMode]); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/sort.js +var cmpPriority = (a, b) => a.priority - b.priority; +var sortPriority = (arr) => arr.sort(cmpPriority); + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/composition/layer-composition.js +var LayerComposition = class extends EventHandler { + constructor(name = "Untitled") { + super(); + this.layerList = []; + this.layerIdMap = /* @__PURE__ */ new Map(); + this.layerNameMap = /* @__PURE__ */ new Map(); + this.layerOpaqueIndexMap = /* @__PURE__ */ new Map(); + this.layerTransparentIndexMap = /* @__PURE__ */ new Map(); + this.subLayerList = []; + this.subLayerEnabled = []; + this.cameras = []; + this.camerasMap = /* @__PURE__ */ new Map(); + this._renderActions = []; + this._dirty = false; + this.name = name; + this._opaqueOrder = {}; + this._transparentOrder = {}; + } + destroy() { + this.destroyRenderActions(); + } + destroyRenderActions() { + this._renderActions.forEach((ra) => ra.destroy()); + this._renderActions.length = 0; + } + _update() { + const len = this.layerList.length; + if (!this._dirty) { + for (let i = 0; i < len; i++) { + if (this.layerList[i]._dirtyComposition) { + this._dirty = true; + break; + } + } + } + if (this._dirty) { + this._dirty = false; + this.cameras.length = 0; + for (let i = 0; i < len; i++) { + const layer = this.layerList[i]; + layer._dirtyComposition = false; + for (let j = 0; j < layer.cameras.length; j++) { + const camera = layer.cameras[j]; + const index = this.cameras.indexOf(camera); + if (index < 0) { + this.cameras.push(camera); + } + } + } + if (this.cameras.length > 1) { + sortPriority(this.cameras); + } + this.camerasMap.clear(); + for (let i = 0; i < this.cameras.length; i++) { + this.camerasMap.set(this.cameras[i], i); + } + let renderActionCount = 0; + this.destroyRenderActions(); + for (let i = 0; i < this.cameras.length; i++) { + const camera = this.cameras[i]; + if (camera.camera.renderPasses.length > 0) { + this.addDummyRenderAction(renderActionCount, camera); + renderActionCount++; + continue; + } + let cameraFirstRenderAction = true; + const cameraFirstRenderActionIndex = renderActionCount; + let lastRenderAction = null; + let postProcessMarked = false; + for (let j = 0; j < len; j++) { + const layer = this.layerList[j]; + const isLayerEnabled = layer.enabled && this.subLayerEnabled[j]; + if (isLayerEnabled) { + if (layer.cameras.length > 0) { + if (camera.layers.indexOf(layer.id) >= 0) { + if (!postProcessMarked && layer.id === camera.disablePostEffectsLayer) { + postProcessMarked = true; + if (lastRenderAction) { + lastRenderAction.triggerPostprocess = true; + } + } + const isTransparent = this.subLayerList[j]; + lastRenderAction = this.addRenderAction(renderActionCount, layer, isTransparent, camera, cameraFirstRenderAction, postProcessMarked); + renderActionCount++; + cameraFirstRenderAction = false; + } + } + } + } + if (cameraFirstRenderActionIndex < renderActionCount) { + lastRenderAction.lastCameraUse = true; + } + if (!postProcessMarked && lastRenderAction) { + lastRenderAction.triggerPostprocess = true; + } + if (camera.renderTarget && camera.postEffectsEnabled) { + this.propagateRenderTarget(cameraFirstRenderActionIndex - 1, camera); + } + } + this._logRenderActions(); + } + } + getNextRenderAction(renderActionIndex) { + const renderAction = new RenderAction(); + this._renderActions.push(renderAction); + return renderAction; + } + addDummyRenderAction(renderActionIndex, camera) { + const renderAction = this.getNextRenderAction(renderActionIndex); + renderAction.camera = camera; + renderAction.useCameraPasses = true; + } + addRenderAction(renderActionIndex, layer, isTransparent, camera, cameraFirstRenderAction, postProcessMarked) { + let rt = layer.renderTarget; + if (camera && camera.renderTarget) { + if (layer.id !== LAYERID_DEPTH) { + rt = camera.renderTarget; + } + } + let used = false; + const renderActions = this._renderActions; + for (let i = renderActionIndex - 1; i >= 0; i--) { + if (renderActions[i].camera === camera && renderActions[i].renderTarget === rt) { + used = true; + break; + } + } + if (postProcessMarked && camera.postEffectsEnabled) { + rt = null; + } + const renderAction = this.getNextRenderAction(renderActionIndex); + renderAction.triggerPostprocess = false; + renderAction.layer = layer; + renderAction.transparent = isTransparent; + renderAction.camera = camera; + renderAction.renderTarget = rt; + renderAction.firstCameraUse = cameraFirstRenderAction; + renderAction.lastCameraUse = false; + const needsCameraClear = cameraFirstRenderAction || !used; + const needsLayerClear = layer.clearColorBuffer || layer.clearDepthBuffer || layer.clearStencilBuffer; + if (needsCameraClear || needsLayerClear) { + renderAction.setupClears(needsCameraClear ? camera : void 0, layer); + } + return renderAction; + } + propagateRenderTarget(startIndex, fromCamera) { + for (let a = startIndex; a >= 0; a--) { + const ra = this._renderActions[a]; + const layer = ra.layer; + if (ra.renderTarget && layer.id !== LAYERID_DEPTH) { + break; + } + if (layer.id === LAYERID_DEPTH) { + continue; + } + if (ra.useCameraPasses) { + break; + } + const thisCamera = ra == null ? void 0 : ra.camera.camera; + if (thisCamera) { + if (!fromCamera.camera.rect.equals(thisCamera.rect) || !fromCamera.camera.scissorRect.equals(thisCamera.scissorRect)) { + break; + } + } + ra.renderTarget = fromCamera.renderTarget; + } + } + _logRenderActions() { + } + _isLayerAdded(layer) { + const found = this.layerIdMap.get(layer.id) === layer; + return found; + } + _isSublayerAdded(layer, transparent) { + const map = transparent ? this.layerTransparentIndexMap : this.layerOpaqueIndexMap; + if (map.get(layer) !== void 0) { + return true; + } + return false; + } + push(layer) { + if (this._isLayerAdded(layer)) return; + this.layerList.push(layer); + this.layerList.push(layer); + this._opaqueOrder[layer.id] = this.subLayerList.push(false) - 1; + this._transparentOrder[layer.id] = this.subLayerList.push(true) - 1; + this.subLayerEnabled.push(true); + this.subLayerEnabled.push(true); + this._updateLayerMaps(); + this._dirty = true; + this.fire("add", layer); + } + insert(layer, index) { + if (this._isLayerAdded(layer)) return; + this.layerList.splice(index, 0, layer, layer); + this.subLayerList.splice(index, 0, false, true); + const count = this.layerList.length; + this._updateOpaqueOrder(index, count - 1); + this._updateTransparentOrder(index, count - 1); + this.subLayerEnabled.splice(index, 0, true, true); + this._updateLayerMaps(); + this._dirty = true; + this.fire("add", layer); + } + remove(layer) { + let id12 = this.layerList.indexOf(layer); + delete this._opaqueOrder[id12]; + delete this._transparentOrder[id12]; + while (id12 >= 0) { + this.layerList.splice(id12, 1); + this.subLayerList.splice(id12, 1); + this.subLayerEnabled.splice(id12, 1); + id12 = this.layerList.indexOf(layer); + this._dirty = true; + this.fire("remove", layer); + } + const count = this.layerList.length; + this._updateOpaqueOrder(0, count - 1); + this._updateTransparentOrder(0, count - 1); + this._updateLayerMaps(); + } + pushOpaque(layer) { + if (this._isSublayerAdded(layer, false)) return; + this.layerList.push(layer); + this._opaqueOrder[layer.id] = this.subLayerList.push(false) - 1; + this.subLayerEnabled.push(true); + this._updateLayerMaps(); + this._dirty = true; + this.fire("add", layer); + } + insertOpaque(layer, index) { + if (this._isSublayerAdded(layer, false)) return; + this.layerList.splice(index, 0, layer); + this.subLayerList.splice(index, 0, false); + const count = this.subLayerList.length; + this._updateOpaqueOrder(index, count - 1); + this.subLayerEnabled.splice(index, 0, true); + this._updateLayerMaps(); + this._dirty = true; + this.fire("add", layer); + } + removeOpaque(layer) { + for (let i = 0, len = this.layerList.length; i < len; i++) { + if (this.layerList[i] === layer && !this.subLayerList[i]) { + this.layerList.splice(i, 1); + this.subLayerList.splice(i, 1); + len--; + this._updateOpaqueOrder(i, len - 1); + this.subLayerEnabled.splice(i, 1); + this._dirty = true; + if (this.layerList.indexOf(layer) < 0) { + this.fire("remove", layer); + } + break; + } + } + this._updateLayerMaps(); + } + pushTransparent(layer) { + if (this._isSublayerAdded(layer, true)) return; + this.layerList.push(layer); + this._transparentOrder[layer.id] = this.subLayerList.push(true) - 1; + this.subLayerEnabled.push(true); + this._updateLayerMaps(); + this._dirty = true; + this.fire("add", layer); + } + insertTransparent(layer, index) { + if (this._isSublayerAdded(layer, true)) return; + this.layerList.splice(index, 0, layer); + this.subLayerList.splice(index, 0, true); + const count = this.subLayerList.length; + this._updateTransparentOrder(index, count - 1); + this.subLayerEnabled.splice(index, 0, true); + this._updateLayerMaps(); + this._dirty = true; + this.fire("add", layer); + } + removeTransparent(layer) { + for (let i = 0, len = this.layerList.length; i < len; i++) { + if (this.layerList[i] === layer && this.subLayerList[i]) { + this.layerList.splice(i, 1); + this.subLayerList.splice(i, 1); + len--; + this._updateTransparentOrder(i, len - 1); + this.subLayerEnabled.splice(i, 1); + this._dirty = true; + if (this.layerList.indexOf(layer) < 0) { + this.fire("remove", layer); + } + break; + } + } + this._updateLayerMaps(); + } + getOpaqueIndex(layer) { + var _this$layerOpaqueInde; + return (_this$layerOpaqueInde = this.layerOpaqueIndexMap.get(layer)) != null ? _this$layerOpaqueInde : -1; + } + getTransparentIndex(layer) { + var _this$layerTransparen; + return (_this$layerTransparen = this.layerTransparentIndexMap.get(layer)) != null ? _this$layerTransparen : -1; + } + isEnabled(layer, transparent) { + const index = transparent ? this.getTransparentIndex(layer) : this.getOpaqueIndex(layer); + return this.subLayerEnabled[index]; + } + _updateLayerMaps() { + this.layerIdMap.clear(); + this.layerNameMap.clear(); + this.layerOpaqueIndexMap.clear(); + this.layerTransparentIndexMap.clear(); + for (let i = 0; i < this.layerList.length; i++) { + const layer = this.layerList[i]; + this.layerIdMap.set(layer.id, layer); + this.layerNameMap.set(layer.name, layer); + const subLayerIndexMap = this.subLayerList[i] ? this.layerTransparentIndexMap : this.layerOpaqueIndexMap; + subLayerIndexMap.set(layer, i); + } + } + getLayerById(id12) { + var _this$layerIdMap$get; + return (_this$layerIdMap$get = this.layerIdMap.get(id12)) != null ? _this$layerIdMap$get : null; + } + getLayerByName(name) { + var _this$layerNameMap$ge; + return (_this$layerNameMap$ge = this.layerNameMap.get(name)) != null ? _this$layerNameMap$ge : null; + } + _updateOpaqueOrder(startIndex, endIndex) { + for (let i = startIndex; i <= endIndex; i++) { + if (this.subLayerList[i] === false) { + this._opaqueOrder[this.layerList[i].id] = i; + } + } + } + _updateTransparentOrder(startIndex, endIndex) { + for (let i = startIndex; i <= endIndex; i++) { + if (this.subLayerList[i] === true) { + this._transparentOrder[this.layerList[i].id] = i; + } + } + } + _sortLayersDescending(layersA, layersB, order) { + let topLayerA = -1; + let topLayerB = -1; + for (let i = 0, len = layersA.length; i < len; i++) { + const id12 = layersA[i]; + if (order.hasOwnProperty(id12)) { + topLayerA = Math.max(topLayerA, order[id12]); + } + } + for (let i = 0, len = layersB.length; i < len; i++) { + const id12 = layersB[i]; + if (order.hasOwnProperty(id12)) { + topLayerB = Math.max(topLayerB, order[id12]); + } + } + if (topLayerA === -1 && topLayerB !== -1) { + return 1; + } else if (topLayerB === -1 && topLayerA !== -1) { + return -1; + } + return topLayerB - topLayerA; + } + sortTransparentLayers(layersA, layersB) { + return this._sortLayersDescending(layersA, layersB, this._transparentOrder); + } + sortOpaqueLayers(layersA, layersB) { + return this._sortLayersDescending(layersA, layersB, this._opaqueOrder); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/light.js +var tmpVec = new Vec3(); +var tmpBiases = { + bias: 0, + normalBias: 0 +}; +var chanId = { + r: 0, + g: 1, + b: 2, + a: 3 +}; +var lightTypes = { + "directional": LIGHTTYPE_DIRECTIONAL, + "omni": LIGHTTYPE_OMNI, + "point": LIGHTTYPE_OMNI, + "spot": LIGHTTYPE_SPOT +}; +var directionalCascades = [[new Vec4(0, 0, 1, 1)], [new Vec4(0, 0, 0.5, 0.5), new Vec4(0, 0.5, 0.5, 0.5)], [new Vec4(0, 0, 0.5, 0.5), new Vec4(0, 0.5, 0.5, 0.5), new Vec4(0.5, 0, 0.5, 0.5)], [new Vec4(0, 0, 0.5, 0.5), new Vec4(0, 0.5, 0.5, 0.5), new Vec4(0.5, 0, 0.5, 0.5), new Vec4(0.5, 0.5, 0.5, 0.5)]]; +var id11 = 0; +var LightRenderData = class { + constructor(device, camera, face, light) { + this.light = light; + this.camera = camera; + this.shadowCamera = ShadowRenderer.createShadowCamera(device, light._shadowType, light._type, face); + this.shadowMatrix = new Mat4(); + this.shadowViewport = new Vec4(0, 0, 1, 1); + this.shadowScissor = new Vec4(0, 0, 1, 1); + this.depthRangeCompensation = 0; + this.projectionCompensation = 0; + this.face = face; + this.visibleCasters = []; + this.viewBindGroups = []; + } + destroy() { + this.viewBindGroups.forEach((bg) => { + bg.defaultUniformBuffer.destroy(); + bg.destroy(); + }); + this.viewBindGroups.length = 0; + } + get shadowBuffer() { + const rt = this.shadowCamera.renderTarget; + if (rt) { + const light = this.light; + if (light._type === LIGHTTYPE_OMNI) { + return rt.colorBuffer; + } + return light._isPcf && light.device.supportsDepthShadow ? rt.depthBuffer : rt.colorBuffer; + } + return null; + } +}; +var Light = class _Light { + constructor(graphicsDevice, clusteredLighting) { + this.layers = /* @__PURE__ */ new Set(); + this.clusteredLighting = void 0; + this.shadowDepthState = DepthState.DEFAULT.clone(); + this.device = graphicsDevice; + this.clusteredLighting = clusteredLighting; + this.id = id11++; + this._type = LIGHTTYPE_DIRECTIONAL; + this._color = new Color(0.8, 0.8, 0.8); + this._intensity = 1; + this._affectSpecularity = true; + this._luminance = 0; + this._castShadows = false; + this._enabled = false; + this._mask = MASK_AFFECT_DYNAMIC; + this.isStatic = false; + this.key = 0; + this.bakeDir = true; + this.bakeNumSamples = 1; + this.bakeArea = 0; + this.attenuationStart = 10; + this.attenuationEnd = 10; + this._falloffMode = LIGHTFALLOFF_LINEAR; + this._shadowType = SHADOW_PCF3; + this._vsmBlurSize = 11; + this.vsmBlurMode = BLUR_GAUSSIAN; + this.vsmBias = 0.01 * 0.25; + this._cookie = null; + this.cookieIntensity = 1; + this._cookieFalloff = true; + this._cookieChannel = "rgb"; + this._cookieTransform = null; + this._cookieTransformUniform = new Float32Array(4); + this._cookieOffset = null; + this._cookieOffsetUniform = new Float32Array(2); + this._cookieTransformSet = false; + this._cookieOffsetSet = false; + this._innerConeAngle = 40; + this._outerConeAngle = 45; + this.cascades = null; + this._shadowMatrixPalette = null; + this._shadowCascadeDistances = null; + this.numCascades = 1; + this.cascadeDistribution = 0.5; + this._shape = LIGHTSHAPE_PUNCTUAL; + this._finalColor = new Float32Array([0.8, 0.8, 0.8]); + const c2 = Math.pow(this._finalColor[0], 2.2); + this._linearFinalColor = new Float32Array([c2, c2, c2]); + this._position = new Vec3(0, 0, 0); + this._direction = new Vec3(0, 0, 0); + this._innerConeAngleCos = Math.cos(this._innerConeAngle * Math.PI / 180); + this._updateOuterAngle(this._outerConeAngle); + this._usePhysicalUnits = void 0; + this._shadowMap = null; + this._shadowRenderParams = []; + this._shadowCameraParams = []; + this.shadowDistance = 40; + this._shadowResolution = 1024; + this._shadowBias = -5e-4; + this.shadowIntensity = 1; + this._normalOffsetBias = 0; + this.shadowUpdateMode = SHADOWUPDATE_REALTIME; + this.shadowUpdateOverrides = null; + this._penumbraSize = 1; + this._isVsm = false; + this._isPcf = true; + this._cookieMatrix = null; + this._atlasViewport = null; + this.atlasViewportAllocated = false; + this.atlasVersion = 0; + this.atlasSlotIndex = 0; + this.atlasSlotUpdated = false; + this._node = null; + this._renderData = []; + this.visibleThisFrame = false; + this.maxScreenSize = 0; + this._updateShadowBias(); + } + destroy() { + this._destroyShadowMap(); + this.releaseRenderData(); + this._renderData = null; + } + releaseRenderData() { + if (this._renderData) { + for (let i = 0; i < this._renderData.length; i++) { + this._renderData[i].destroy(); + } + this._renderData.length = 0; + } + } + addLayer(layer) { + this.layers.add(layer); + } + removeLayer(layer) { + this.layers.delete(layer); + } + set shadowBias(value) { + if (this._shadowBias !== value) { + this._shadowBias = value; + this._updateShadowBias(); + } + } + get shadowBias() { + return this._shadowBias; + } + set numCascades(value) { + if (!this.cascades || this.numCascades !== value) { + this.cascades = directionalCascades[value - 1]; + this._shadowMatrixPalette = new Float32Array(4 * 16); + this._shadowCascadeDistances = new Float32Array(4); + this._destroyShadowMap(); + this.updateKey(); + } + } + get numCascades() { + return this.cascades.length; + } + set shadowMap(shadowMap) { + if (this._shadowMap !== shadowMap) { + this._destroyShadowMap(); + this._shadowMap = shadowMap; + } + } + get shadowMap() { + return this._shadowMap; + } + set mask(value) { + if (this._mask !== value) { + this._mask = value; + this.updateKey(); + } + } + get mask() { + return this._mask; + } + get numShadowFaces() { + const type2 = this._type; + if (type2 === LIGHTTYPE_DIRECTIONAL) { + return this.numCascades; + } else if (type2 === LIGHTTYPE_OMNI) { + return 6; + } + return 1; + } + set type(value) { + if (this._type === value) return; + this._type = value; + this._destroyShadowMap(); + this._updateShadowBias(); + this.updateKey(); + const stype = this._shadowType; + this._shadowType = null; + this.shadowUpdateOverrides = null; + this.shadowType = stype; + } + get type() { + return this._type; + } + set shape(value) { + if (this._shape === value) return; + this._shape = value; + this._destroyShadowMap(); + this.updateKey(); + const stype = this._shadowType; + this._shadowType = null; + this.shadowType = stype; + } + get shape() { + return this._shape; + } + set usePhysicalUnits(value) { + if (this._usePhysicalUnits !== value) { + this._usePhysicalUnits = value; + this._updateFinalColor(); + } + } + get usePhysicalUnits() { + return this._usePhysicalUnits; + } + set shadowType(value) { + if (this._shadowType === value) return; + const device = this.device; + if (this._type === LIGHTTYPE_OMNI && value !== SHADOW_PCF3 && value !== SHADOW_PCSS) value = SHADOW_PCF3; + const supportsDepthShadow = device.supportsDepthShadow; + if (value === SHADOW_PCF5 && !supportsDepthShadow) { + value = SHADOW_PCF3; + } + if (value === SHADOW_VSM32 && (!device.textureFloatRenderable || !device.textureFloatFilterable)) value = SHADOW_VSM16; + if (value === SHADOW_VSM16 && !device.textureHalfFloatRenderable) value = SHADOW_VSM8; + this._isVsm = value >= SHADOW_VSM8 && value <= SHADOW_VSM32; + this._isPcf = value === SHADOW_PCF1 || value === SHADOW_PCF3 || value === SHADOW_PCF5; + this._shadowType = value; + this._destroyShadowMap(); + this.updateKey(); + } + get shadowType() { + return this._shadowType; + } + set enabled(value) { + if (this._enabled !== value) { + this._enabled = value; + this.layersDirty(); + } + } + get enabled() { + return this._enabled; + } + set castShadows(value) { + if (this._castShadows !== value) { + this._castShadows = value; + this._destroyShadowMap(); + this.layersDirty(); + this.updateKey(); + } + } + get castShadows() { + return this._castShadows && this._mask !== MASK_BAKE && this._mask !== 0; + } + set shadowResolution(value) { + if (this._shadowResolution !== value) { + if (this._type === LIGHTTYPE_OMNI) { + value = Math.min(value, this.device.maxCubeMapSize); + } else { + value = Math.min(value, this.device.maxTextureSize); + } + this._shadowResolution = value; + this._destroyShadowMap(); + } + } + get shadowResolution() { + return this._shadowResolution; + } + set vsmBlurSize(value) { + if (this._vsmBlurSize === value) return; + if (value % 2 === 0) value++; + this._vsmBlurSize = value; + } + get vsmBlurSize() { + return this._vsmBlurSize; + } + set normalOffsetBias(value) { + if (this._normalOffsetBias === value) return; + if (!this._normalOffsetBias && value || this._normalOffsetBias && !value) { + this.updateKey(); + } + this._normalOffsetBias = value; + } + get normalOffsetBias() { + return this._normalOffsetBias; + } + set falloffMode(value) { + if (this._falloffMode === value) return; + this._falloffMode = value; + this.updateKey(); + } + get falloffMode() { + return this._falloffMode; + } + set innerConeAngle(value) { + if (this._innerConeAngle === value) return; + this._innerConeAngle = value; + this._innerConeAngleCos = Math.cos(value * Math.PI / 180); + if (this._usePhysicalUnits) { + this._updateFinalColor(); + } + } + get innerConeAngle() { + return this._innerConeAngle; + } + set outerConeAngle(value) { + if (this._outerConeAngle === value) return; + this._outerConeAngle = value; + this._updateOuterAngle(value); + if (this._usePhysicalUnits) { + this._updateFinalColor(); + } + } + get outerConeAngle() { + return this._outerConeAngle; + } + set penumbraSize(value) { + this._penumbraSize = value; + } + get penumbraSize() { + return this._penumbraSize; + } + _updateOuterAngle(angle) { + const radAngle = angle * Math.PI / 180; + this._outerConeAngleCos = Math.cos(radAngle); + this._outerConeAngleSin = Math.sin(radAngle); + } + set intensity(value) { + if (this._intensity !== value) { + this._intensity = value; + this._updateFinalColor(); + } + } + get intensity() { + return this._intensity; + } + set affectSpecularity(value) { + if (this._type === LIGHTTYPE_DIRECTIONAL) { + this._affectSpecularity = value; + this.updateKey(); + } + } + get affectSpecularity() { + return this._affectSpecularity; + } + set luminance(value) { + if (this._luminance !== value) { + this._luminance = value; + this._updateFinalColor(); + } + } + get luminance() { + return this._luminance; + } + get cookieMatrix() { + if (!this._cookieMatrix) { + this._cookieMatrix = new Mat4(); + } + return this._cookieMatrix; + } + get atlasViewport() { + if (!this._atlasViewport) { + this._atlasViewport = new Vec4(0, 0, 1, 1); + } + return this._atlasViewport; + } + set cookie(value) { + if (this._cookie === value) return; + this._cookie = value; + this.updateKey(); + } + get cookie() { + return this._cookie; + } + set cookieFalloff(value) { + if (this._cookieFalloff === value) return; + this._cookieFalloff = value; + this.updateKey(); + } + get cookieFalloff() { + return this._cookieFalloff; + } + set cookieChannel(value) { + if (this._cookieChannel === value) return; + if (value.length < 3) { + const chr = value.charAt(value.length - 1); + const addLen = 3 - value.length; + for (let i = 0; i < addLen; i++) value += chr; + } + this._cookieChannel = value; + this.updateKey(); + } + get cookieChannel() { + return this._cookieChannel; + } + set cookieTransform(value) { + if (this._cookieTransform === value) return; + this._cookieTransform = value; + this._cookieTransformSet = !!value; + if (value && !this._cookieOffset) { + this.cookieOffset = new Vec2(); + this._cookieOffsetSet = false; + } + this.updateKey(); + } + get cookieTransform() { + return this._cookieTransform; + } + set cookieOffset(value) { + if (this._cookieOffset === value) return; + const xformNew = !!(this._cookieTransformSet || value); + if (xformNew && !value && this._cookieOffset) { + this._cookieOffset.set(0, 0); + } else { + this._cookieOffset = value; + } + this._cookieOffsetSet = !!value; + if (value && !this._cookieTransform) { + this.cookieTransform = new Vec4(1, 1, 0, 0); + this._cookieTransformSet = false; + } + this.updateKey(); + } + get cookieOffset() { + return this._cookieOffset; + } + beginFrame() { + this.visibleThisFrame = this._type === LIGHTTYPE_DIRECTIONAL && this._enabled; + this.maxScreenSize = 0; + this.atlasViewportAllocated = false; + this.atlasSlotUpdated = false; + } + _destroyShadowMap() { + this.releaseRenderData(); + if (this._shadowMap) { + if (!this._shadowMap.cached) { + this._shadowMap.destroy(); + } + this._shadowMap = null; + } + if (this.shadowUpdateMode === SHADOWUPDATE_NONE) { + this.shadowUpdateMode = SHADOWUPDATE_THISFRAME; + } + if (this.shadowUpdateOverrides) { + for (let i = 0; i < this.shadowUpdateOverrides.length; i++) { + if (this.shadowUpdateOverrides[i] === SHADOWUPDATE_NONE) { + this.shadowUpdateOverrides[i] = SHADOWUPDATE_THISFRAME; + } + } + } + } + getRenderData(camera, face) { + for (let i = 0; i < this._renderData.length; i++) { + const current = this._renderData[i]; + if (current.camera === camera && current.face === face) { + return current; + } + } + const rd = new LightRenderData(this.device, camera, face, this); + this._renderData.push(rd); + return rd; + } + clone() { + const clone = new _Light(this.device, this.clusteredLighting); + clone.type = this._type; + clone.setColor(this._color); + clone.intensity = this._intensity; + clone.affectSpecularity = this._affectSpecularity; + clone.luminance = this._luminance; + clone.castShadows = this.castShadows; + clone._enabled = this._enabled; + clone.attenuationStart = this.attenuationStart; + clone.attenuationEnd = this.attenuationEnd; + clone.falloffMode = this._falloffMode; + clone.shadowType = this._shadowType; + clone.vsmBlurSize = this._vsmBlurSize; + clone.vsmBlurMode = this.vsmBlurMode; + clone.vsmBias = this.vsmBias; + clone.penumbraSize = this.penumbraSize; + clone.shadowUpdateMode = this.shadowUpdateMode; + clone.mask = this.mask; + if (this.shadowUpdateOverrides) { + clone.shadowUpdateOverrides = this.shadowUpdateOverrides.slice(); + } + clone.innerConeAngle = this._innerConeAngle; + clone.outerConeAngle = this._outerConeAngle; + clone.numCascades = this.numCascades; + clone.cascadeDistribution = this.cascadeDistribution; + clone.shape = this._shape; + clone.shadowDepthState.copy(this.shadowDepthState); + clone.shadowBias = this.shadowBias; + clone.normalOffsetBias = this._normalOffsetBias; + clone.shadowResolution = this._shadowResolution; + clone.shadowDistance = this.shadowDistance; + clone.shadowIntensity = this.shadowIntensity; + return clone; + } + static getLightUnitConversion(type2, outerAngle = Math.PI / 4, innerAngle = 0) { + switch (type2) { + case LIGHTTYPE_SPOT: { + const falloffEnd = Math.cos(outerAngle); + const falloffStart = Math.cos(innerAngle); + return 2 * Math.PI * (1 - falloffStart + (falloffStart - falloffEnd) / 2); + } + case LIGHTTYPE_OMNI: + return 4 * Math.PI; + case LIGHTTYPE_DIRECTIONAL: + return 1; + } + } + _getUniformBiasValues(lightRenderData) { + const farClip = lightRenderData.shadowCamera._farClip; + switch (this._type) { + case LIGHTTYPE_OMNI: + tmpBiases.bias = this.shadowBias; + tmpBiases.normalBias = this._normalOffsetBias; + break; + case LIGHTTYPE_SPOT: + if (this._isVsm) { + tmpBiases.bias = -1e-5 * 20; + } else { + tmpBiases.bias = this.shadowBias * 20; + if (this.device.isWebGL1 && this.device.extStandardDerivatives) tmpBiases.bias *= -100; + } + tmpBiases.normalBias = this._isVsm ? this.vsmBias / (this.attenuationEnd / 7) : this._normalOffsetBias; + break; + case LIGHTTYPE_DIRECTIONAL: + if (this._isVsm) { + tmpBiases.bias = -1e-5 * 20; + } else { + tmpBiases.bias = this.shadowBias / farClip * 100; + if (this.device.isWebGL1 && this.device.extStandardDerivatives) tmpBiases.bias *= -100; + } + tmpBiases.normalBias = this._isVsm ? this.vsmBias / (farClip / 7) : this._normalOffsetBias; + break; + } + return tmpBiases; + } + getColor() { + return this._color; + } + getBoundingSphere(sphere) { + if (this._type === LIGHTTYPE_SPOT) { + const size = this.attenuationEnd; + const angle = this._outerConeAngle; + const cosAngle = this._outerConeAngleCos; + const node = this._node; + tmpVec.copy(node.up); + if (angle > 45) { + sphere.radius = size * this._outerConeAngleSin; + tmpVec.mulScalar(-size * cosAngle); + } else { + sphere.radius = size / (2 * cosAngle); + tmpVec.mulScalar(-sphere.radius); + } + sphere.center.add2(node.getPosition(), tmpVec); + } else if (this._type === LIGHTTYPE_OMNI) { + sphere.center = this._node.getPosition(); + sphere.radius = this.attenuationEnd; + } + } + getBoundingBox(box) { + if (this._type === LIGHTTYPE_SPOT) { + const range = this.attenuationEnd; + const angle = this._outerConeAngle; + const node = this._node; + const scl = Math.abs(Math.sin(angle * math.DEG_TO_RAD) * range); + box.center.set(0, -range * 0.5, 0); + box.halfExtents.set(scl, range * 0.5, scl); + box.setFromTransformedAabb(box, node.getWorldTransform(), true); + } else if (this._type === LIGHTTYPE_OMNI) { + box.center.copy(this._node.getPosition()); + box.halfExtents.set(this.attenuationEnd, this.attenuationEnd, this.attenuationEnd); + } + } + _updateShadowBias() { + const device = this.device; + if (device.isWebGL2 || device.isWebGPU) { + if (this._type === LIGHTTYPE_OMNI && !this.clusteredLighting) { + this.shadowDepthState.depthBias = 0; + this.shadowDepthState.depthBiasSlope = 0; + } else { + const bias = this.shadowBias * -1e3; + this.shadowDepthState.depthBias = bias; + this.shadowDepthState.depthBiasSlope = bias; + } + } + } + _updateFinalColor() { + const color = this._color; + const r = color.r; + const g = color.g; + const b = color.b; + let i = this._intensity; + if (this._usePhysicalUnits) { + i = this._luminance / _Light.getLightUnitConversion(this._type, this._outerConeAngle * math.DEG_TO_RAD, this._innerConeAngle * math.DEG_TO_RAD); + } + const finalColor = this._finalColor; + const linearFinalColor = this._linearFinalColor; + finalColor[0] = r * i; + finalColor[1] = g * i; + finalColor[2] = b * i; + if (i >= 1) { + linearFinalColor[0] = Math.pow(r, 2.2) * i; + linearFinalColor[1] = Math.pow(g, 2.2) * i; + linearFinalColor[2] = Math.pow(b, 2.2) * i; + } else { + linearFinalColor[0] = Math.pow(finalColor[0], 2.2); + linearFinalColor[1] = Math.pow(finalColor[1], 2.2); + linearFinalColor[2] = Math.pow(finalColor[2], 2.2); + } + } + setColor() { + if (arguments.length === 1) { + this._color.set(arguments[0].r, arguments[0].g, arguments[0].b); + } else if (arguments.length === 3) { + this._color.set(arguments[0], arguments[1], arguments[2]); + } + this._updateFinalColor(); + } + layersDirty() { + this.layers.forEach((layer) => { + layer.markLightsDirty(); + }); + } + updateKey() { + let key = this._type << 29 | (this._castShadows ? 1 : 0) << 28 | this._shadowType << 25 | this._falloffMode << 23 | (this._normalOffsetBias !== 0 ? 1 : 0) << 22 | (this._cookie ? 1 : 0) << 21 | (this._cookieFalloff ? 1 : 0) << 20 | chanId[this._cookieChannel.charAt(0)] << 18 | (this._cookieTransform ? 1 : 0) << 12 | this._shape << 10 | this.numCascades - 1 << 8 | (this.affectSpecularity ? 1 : 0) << 7 | this.mask << 6; + if (this._cookieChannel.length === 3) { + key |= chanId[this._cookieChannel.charAt(1)] << 16; + key |= chanId[this._cookieChannel.charAt(2)] << 14; + } + if (key !== this.key) { + this.layersDirty(); + } + this.key = key; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/lighting/lighting-params.js +var LightingParams = class { + constructor(supportsAreaLights, maxTextureSize, dirtyLightsFnc) { + this._areaLightsEnabled = false; + this._cells = new Vec3(10, 3, 10); + this._maxLightsPerCell = 255; + this._shadowsEnabled = true; + this._shadowType = SHADOW_PCF3; + this._shadowAtlasResolution = 2048; + this._cookiesEnabled = false; + this._cookieAtlasResolution = 2048; + this.debugLayer = void 0; + this.atlasSplit = null; + this._supportsAreaLights = supportsAreaLights; + this._maxTextureSize = maxTextureSize; + this._dirtyLightsFnc = dirtyLightsFnc; + } + applySettings(render) { + var _render$lightingShado, _render$lightingCooki, _render$lightingAreaL, _render$lightingShado2, _render$lightingCooki2, _render$lightingMaxLi, _render$lightingShado3; + this.shadowsEnabled = (_render$lightingShado = render.lightingShadowsEnabled) != null ? _render$lightingShado : this.shadowsEnabled; + this.cookiesEnabled = (_render$lightingCooki = render.lightingCookiesEnabled) != null ? _render$lightingCooki : this.cookiesEnabled; + this.areaLightsEnabled = (_render$lightingAreaL = render.lightingAreaLightsEnabled) != null ? _render$lightingAreaL : this.areaLightsEnabled; + this.shadowAtlasResolution = (_render$lightingShado2 = render.lightingShadowAtlasResolution) != null ? _render$lightingShado2 : this.shadowAtlasResolution; + this.cookieAtlasResolution = (_render$lightingCooki2 = render.lightingCookieAtlasResolution) != null ? _render$lightingCooki2 : this.cookieAtlasResolution; + this.maxLightsPerCell = (_render$lightingMaxLi = render.lightingMaxLightsPerCell) != null ? _render$lightingMaxLi : this.maxLightsPerCell; + this.shadowType = (_render$lightingShado3 = render.lightingShadowType) != null ? _render$lightingShado3 : this.shadowType; + if (render.lightingCells) this.cell = new Vec3(render.lightingCells); + } + set cells(value) { + this._cells.copy(value); + } + get cells() { + return this._cells; + } + set maxLightsPerCell(value) { + this._maxLightsPerCell = math.clamp(value, 1, 255); + } + get maxLightsPerCell() { + return this._maxLightsPerCell; + } + set cookieAtlasResolution(value) { + this._cookieAtlasResolution = math.clamp(value, 32, this._maxTextureSize); + } + get cookieAtlasResolution() { + return this._cookieAtlasResolution; + } + set shadowAtlasResolution(value) { + this._shadowAtlasResolution = math.clamp(value, 32, this._maxTextureSize); + } + get shadowAtlasResolution() { + return this._shadowAtlasResolution; + } + set shadowType(value) { + if (this._shadowType !== value) { + this._shadowType = value; + this._dirtyLightsFnc(); + } + } + get shadowType() { + return this._shadowType; + } + set cookiesEnabled(value) { + if (this._cookiesEnabled !== value) { + this._cookiesEnabled = value; + this._dirtyLightsFnc(); + } + } + get cookiesEnabled() { + return this._cookiesEnabled; + } + set areaLightsEnabled(value) { + if (this._supportsAreaLights) { + if (this._areaLightsEnabled !== value) { + this._areaLightsEnabled = value; + this._dirtyLightsFnc(); + } + } + } + get areaLightsEnabled() { + return this._areaLightsEnabled; + } + set shadowsEnabled(value) { + if (this._shadowsEnabled !== value) { + this._shadowsEnabled = value; + this._dirtyLightsFnc(); + } + } + get shadowsEnabled() { + return this._shadowsEnabled; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/morph-instance.js +var textureMorphVertexShader = ` + attribute vec2 vertex_position; + varying vec2 uv0; + void main(void) { + gl_Position = vec4(vertex_position, 0.5, 1.0); + uv0 = vertex_position.xy * 0.5 + 0.5; + } + `; +var blendStateAdditive = new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE); +var MorphInstance = class _MorphInstance { + constructor(morph) { + this.morph = morph; + morph.incRefCount(); + this.device = morph.device; + this._weights = []; + this._weightMap = /* @__PURE__ */ new Map(); + for (let v = 0; v < morph._targets.length; v++) { + const target2 = morph._targets[v]; + if (target2.name) { + this._weightMap.set(target2.name, v); + } + this.setWeight(v, target2.defaultWeight); + } + this._activeTargets = []; + if (morph.useTextureMorph) { + this.shaderCache = {}; + this.maxSubmitCount = this.device.maxTextures; + this._shaderMorphWeights = new Float32Array(this.maxSubmitCount); + const createRT = (name, textureVar) => { + this[textureVar] = morph._createTexture(name, morph._renderTextureFormat); + return new RenderTarget({ + colorBuffer: this[textureVar], + depth: false + }); + }; + if (morph.morphPositions) { + this.rtPositions = createRT("MorphRTPos", "texturePositions"); + } + if (morph.morphNormals) { + this.rtNormals = createRT("MorphRTNrm", "textureNormals"); + } + this._textureParams = new Float32Array([morph.morphTextureWidth, morph.morphTextureHeight, 1 / morph.morphTextureWidth, 1 / morph.morphTextureHeight]); + for (let i = 0; i < this.maxSubmitCount; i++) { + this["morphBlendTex" + i] = this.device.scope.resolve("morphBlendTex" + i); + } + this.morphFactor = this.device.scope.resolve("morphFactor[0]"); + this.zeroTextures = false; + } else { + this.maxSubmitCount = 8; + this._shaderMorphWeights = new Float32Array(this.maxSubmitCount); + this._shaderMorphWeightsA = new Float32Array(this._shaderMorphWeights.buffer, 0, 4); + this._shaderMorphWeightsB = new Float32Array(this._shaderMorphWeights.buffer, 4 * 4, 4); + this._activeVertexBuffers = new Array(this.maxSubmitCount); + } + } + destroy() { + this.shader = null; + const morph = this.morph; + if (morph) { + this.morph = null; + morph.decRefCount(); + if (morph.refCount < 1) { + morph.destroy(); + } + } + if (this.rtPositions) { + this.rtPositions.destroy(); + this.rtPositions = null; + } + if (this.texturePositions) { + this.texturePositions.destroy(); + this.texturePositions = null; + } + if (this.rtNormals) { + this.rtNormals.destroy(); + this.rtNormals = null; + } + if (this.textureNormals) { + this.textureNormals.destroy(); + this.textureNormals = null; + } + } + clone() { + return new _MorphInstance(this.morph); + } + _getWeightIndex(key) { + if (typeof key === "string") { + const index = this._weightMap.get(key); + return index; + } + return key; + } + getWeight(key) { + const index = this._getWeightIndex(key); + return this._weights[index]; + } + setWeight(key, weight) { + const index = this._getWeightIndex(key); + this._weights[index] = weight; + this._dirty = true; + } + _getFragmentShader(numTextures) { + let fragmentShader = ""; + if (numTextures > 0) { + fragmentShader += "varying vec2 uv0;\nuniform highp float morphFactor[" + numTextures + "];\n"; + } + for (let i = 0; i < numTextures; i++) { + fragmentShader += "uniform highp sampler2D morphBlendTex" + i + ";\n"; + } + fragmentShader += "void main (void) {\n highp vec4 color = vec4(0, 0, 0, 1);\n"; + for (let i = 0; i < numTextures; i++) { + fragmentShader += " color.xyz += morphFactor[" + i + "] * texture2D(morphBlendTex" + i + ", uv0).xyz;\n"; + } + fragmentShader += " gl_FragColor = color;\n}\n"; + return fragmentShader; + } + _getShader(count) { + let shader = this.shaderCache[count]; + if (!shader) { + const fs = this._getFragmentShader(count); + shader = createShaderFromCode(this.device, textureMorphVertexShader, fs, "textureMorph" + count); + this.shaderCache[count] = shader; + } + return shader; + } + _updateTextureRenderTarget(renderTarget, srcTextureName) { + const device = this.device; + const submitBatch = (usedCount2, blending2) => { + this.morphFactor.setValue(this._shaderMorphWeights); + device.setBlendState(blending2 ? blendStateAdditive : BlendState.NOBLEND); + const shader = this._getShader(usedCount2); + drawQuadWithShader(device, renderTarget, shader); + }; + let usedCount = 0; + let blending = false; + const count = this._activeTargets.length; + for (let i = 0; i < count; i++) { + const activeTarget = this._activeTargets[i]; + const tex = activeTarget.target[srcTextureName]; + if (tex) { + this["morphBlendTex" + usedCount].setValue(tex); + this._shaderMorphWeights[usedCount] = activeTarget.weight; + usedCount++; + if (usedCount >= this.maxSubmitCount) { + submitBatch(usedCount, blending); + usedCount = 0; + blending = true; + } + } + } + if (usedCount > 0 || count === 0 && !this.zeroTextures) { + submitBatch(usedCount, blending); + } + } + _updateTextureMorph() { + this.device; + if (this._activeTargets.length > 0 || !this.zeroTextures) { + if (this.rtPositions) this._updateTextureRenderTarget(this.rtPositions, "texturePositions"); + if (this.rtNormals) this._updateTextureRenderTarget(this.rtNormals, "textureNormals"); + this.zeroTextures = this._activeTargets.length === 0; + } + } + _updateVertexMorph() { + const count = this.maxSubmitCount; + for (let i = 0; i < count; i++) { + this._shaderMorphWeights[i] = 0; + this._activeVertexBuffers[i] = null; + } + let posIndex = 0; + let nrmIndex = this.morph.morphPositions ? 4 : 0; + for (let i = 0; i < this._activeTargets.length; i++) { + const target2 = this._activeTargets[i].target; + if (target2._vertexBufferPositions) { + this._activeVertexBuffers[posIndex] = target2._vertexBufferPositions; + this._shaderMorphWeights[posIndex] = this._activeTargets[i].weight; + posIndex++; + } + if (target2._vertexBufferNormals) { + this._activeVertexBuffers[nrmIndex] = target2._vertexBufferNormals; + this._shaderMorphWeights[nrmIndex] = this._activeTargets[i].weight; + nrmIndex++; + } + } + } + update() { + this._dirty = false; + const targets = this.morph._targets; + let activeCount = 0; + const epsilon3 = 1e-5; + for (let i = 0; i < targets.length; i++) { + const absWeight = Math.abs(this.getWeight(i)); + if (absWeight > epsilon3) { + if (this._activeTargets.length <= activeCount) { + this._activeTargets[activeCount] = {}; + } + const activeTarget = this._activeTargets[activeCount++]; + activeTarget.absWeight = absWeight; + activeTarget.weight = this.getWeight(i); + activeTarget.target = targets[i]; + } + } + this._activeTargets.length = activeCount; + const maxActiveTargets = this.morph.maxActiveTargets; + if (this._activeTargets.length > maxActiveTargets) { + this._activeTargets.sort(function(l, r) { + return l.absWeight < r.absWeight ? 1 : r.absWeight < l.absWeight ? -1 : 0; + }); + this._activeTargets.length = maxActiveTargets; + } + if (this.morph.useTextureMorph) { + this._updateTextureMorph(); + } else { + this._updateVertexMorph(); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/model.js +var Model2 = class _Model { + constructor() { + this.graph = null; + this.meshInstances = []; + this.skinInstances = []; + this.morphInstances = []; + this.cameras = []; + this.lights = []; + this._shadersVersion = 0; + this._immutable = false; + } + getGraph() { + return this.graph; + } + setGraph(graph) { + this.graph = graph; + } + getCameras() { + return this.cameras; + } + setCameras(cameras) { + this.cameras = cameras; + } + getLights() { + return this.lights; + } + setLights(lights2) { + this.lights = lights2; + } + getMaterials() { + const materials = []; + for (let i = 0; i < this.meshInstances.length; i++) { + const meshInstance = this.meshInstances[i]; + if (materials.indexOf(meshInstance.material) === -1) { + materials.push(meshInstance.material); + } + } + return materials; + } + clone() { + const srcNodes = []; + const cloneNodes = []; + const _duplicate = function _duplicate2(node) { + const newNode = node.clone(); + srcNodes.push(node); + cloneNodes.push(newNode); + for (let idx = 0; idx < node._children.length; idx++) { + newNode.addChild(_duplicate2(node._children[idx])); + } + return newNode; + }; + const cloneGraph = _duplicate(this.graph); + const cloneMeshInstances = []; + const cloneSkinInstances = []; + const cloneMorphInstances = []; + for (let i = 0; i < this.skinInstances.length; i++) { + const skin = this.skinInstances[i].skin; + const cloneSkinInstance = new SkinInstance(skin); + const bones = []; + for (let j = 0; j < skin.boneNames.length; j++) { + const boneName = skin.boneNames[j]; + const bone = cloneGraph.findByName(boneName); + bones.push(bone); + } + cloneSkinInstance.bones = bones; + cloneSkinInstances.push(cloneSkinInstance); + } + for (let i = 0; i < this.morphInstances.length; i++) { + const morph = this.morphInstances[i].morph; + const cloneMorphInstance = new MorphInstance(morph); + cloneMorphInstances.push(cloneMorphInstance); + } + for (let i = 0; i < this.meshInstances.length; i++) { + const meshInstance = this.meshInstances[i]; + const nodeIndex = srcNodes.indexOf(meshInstance.node); + const cloneMeshInstance = new MeshInstance(meshInstance.mesh, meshInstance.material, cloneNodes[nodeIndex]); + if (meshInstance.skinInstance) { + const skinInstanceIndex = this.skinInstances.indexOf(meshInstance.skinInstance); + cloneMeshInstance.skinInstance = cloneSkinInstances[skinInstanceIndex]; + } + if (meshInstance.morphInstance) { + const morphInstanceIndex = this.morphInstances.indexOf(meshInstance.morphInstance); + cloneMeshInstance.morphInstance = cloneMorphInstances[morphInstanceIndex]; + } + cloneMeshInstances.push(cloneMeshInstance); + } + const clone = new _Model(); + clone.graph = cloneGraph; + clone.meshInstances = cloneMeshInstances; + clone.skinInstances = cloneSkinInstances; + clone.morphInstances = cloneMorphInstances; + clone.getGraph().syncHierarchy(); + return clone; + } + destroy() { + const meshInstances = this.meshInstances; + for (let i = 0; i < meshInstances.length; i++) { + meshInstances[i].destroy(); + } + this.meshInstances.length = 0; + } + generateWireframe() { + MeshInstance._prepareRenderStyleForArray(this.meshInstances, RENDERSTYLE_WIREFRAME); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/morph.js +var Morph = class extends RefCountedObject { + constructor(targets, graphicsDevice, { + preferHighPrecision = false + } = {}) { + super(); + this._aabb = void 0; + this.preferHighPrecision = void 0; + this.device = graphicsDevice; + this.preferHighPrecision = preferHighPrecision; + this._targets = targets.slice(); + const device = this.device; + if (device.supportsMorphTargetTexturesCore) { + const renderableHalf = device.extTextureHalfFloat && device.textureHalfFloatRenderable ? PIXELFORMAT_RGBA16F : void 0; + const renderableFloat = device.extTextureFloat && device.textureFloatRenderable ? PIXELFORMAT_RGBA32F : void 0; + this._renderTextureFormat = this.preferHighPrecision ? renderableFloat != null ? renderableFloat : renderableHalf : renderableHalf != null ? renderableHalf : renderableFloat; + const textureHalf = device.extTextureHalfFloat && device.textureHalfFloatUpdatable ? PIXELFORMAT_RGBA16F : void 0; + const textureFloat = device.extTextureFloat ? PIXELFORMAT_RGB32F : void 0; + this._textureFormat = this.preferHighPrecision ? textureFloat != null ? textureFloat : textureHalf : textureHalf != null ? textureHalf : textureFloat; + if (this._renderTextureFormat !== void 0 && this._textureFormat !== void 0) { + this._useTextureMorph = true; + } + } + this._init(); + this._updateMorphFlags(); + } + get aabb() { + if (!this._aabb) { + const min = new Vec3(); + const max = new Vec3(); + for (let i = 0; i < this._targets.length; i++) { + const targetAabb = this._targets[i].aabb; + min.min(targetAabb.getMin()); + max.max(targetAabb.getMax()); + } + this._aabb = new BoundingBox(); + this._aabb.setMinMax(min, max); + } + return this._aabb; + } + get morphPositions() { + return this._morphPositions; + } + get morphNormals() { + return this._morphNormals; + } + get maxActiveTargets() { + if (this._useTextureMorph) return this._targets.length; + return this._morphPositions && this._morphNormals ? 4 : 8; + } + get useTextureMorph() { + return this._useTextureMorph; + } + _init() { + if (this._useTextureMorph) { + this._useTextureMorph = this._initTextureBased(); + } + if (!this._useTextureMorph) { + for (let i = 0; i < this._targets.length; i++) { + this._targets[i]._initVertexBuffers(this.device); + } + } + for (let i = 0; i < this._targets.length; i++) { + this._targets[i]._postInit(); + } + } + _findSparseSet(deltaArrays, ids2, usedDataIndices, floatRounding) { + let freeIndex = 1; + const dataCount = deltaArrays[0].length; + for (let v = 0; v < dataCount; v += 3) { + let vertexUsed = false; + for (let i = 0; i < deltaArrays.length; i++) { + const data2 = deltaArrays[i]; + if (data2[v] !== 0 || data2[v + 1] !== 0 || data2[v + 2] !== 0) { + vertexUsed = true; + break; + } + } + if (vertexUsed) { + ids2.push(freeIndex + floatRounding); + usedDataIndices.push(v / 3); + freeIndex++; + } else { + ids2.push(0 + floatRounding); + } + } + return freeIndex; + } + _initTextureBased() { + const useUintIds = this.device.isWebGPU; + const floatRounding = useUintIds ? 0 : 0.2; + const deltaArrays = [], deltaInfos = []; + for (let i = 0; i < this._targets.length; i++) { + const target2 = this._targets[i]; + if (target2.options.deltaPositions) { + deltaArrays.push(target2.options.deltaPositions); + deltaInfos.push({ + target: target2, + name: "texturePositions" + }); + } + if (target2.options.deltaNormals) { + deltaArrays.push(target2.options.deltaNormals); + deltaInfos.push({ + target: target2, + name: "textureNormals" + }); + } + } + const ids2 = [], usedDataIndices = []; + const freeIndex = this._findSparseSet(deltaArrays, ids2, usedDataIndices, floatRounding); + const maxTextureSize = Math.min(this.device.maxTextureSize, 4096); + let morphTextureWidth = Math.ceil(Math.sqrt(freeIndex)); + morphTextureWidth = Math.min(morphTextureWidth, maxTextureSize); + const morphTextureHeight = Math.ceil(freeIndex / morphTextureWidth); + if (morphTextureHeight > maxTextureSize) { + return false; + } + this.morphTextureWidth = morphTextureWidth; + this.morphTextureHeight = morphTextureHeight; + let halfFloat = false; + let numComponents = 3; + const float2Half = FloatPacking.float2Half; + if (this._textureFormat === PIXELFORMAT_RGBA16F) { + halfFloat = true; + numComponents = 4; + } + const textures = []; + for (let i = 0; i < deltaArrays.length; i++) { + textures.push(this._createTexture("MorphTarget", this._textureFormat)); + } + for (let i = 0; i < deltaArrays.length; i++) { + const data2 = deltaArrays[i]; + const texture = textures[i]; + const textureData = texture.lock(); + if (halfFloat) { + for (let v = 0; v < usedDataIndices.length; v++) { + const index = usedDataIndices[v] * 3; + const dstIndex = v * numComponents + numComponents; + textureData[dstIndex] = float2Half(data2[index]); + textureData[dstIndex + 1] = float2Half(data2[index + 1]); + textureData[dstIndex + 2] = float2Half(data2[index + 2]); + } + } else { + for (let v = 0; v < usedDataIndices.length; v++) { + const index = usedDataIndices[v] * 3; + const dstIndex = v * numComponents + numComponents; + textureData[dstIndex] = data2[index]; + textureData[dstIndex + 1] = data2[index + 1]; + textureData[dstIndex + 2] = data2[index + 2]; + } + } + texture.unlock(); + const target2 = deltaInfos[i].target; + target2._setTexture(deltaInfos[i].name, texture); + } + const formatDesc = [{ + semantic: SEMANTIC_ATTR15, + components: 1, + type: useUintIds ? TYPE_UINT32 : TYPE_FLOAT32 + }]; + this.vertexBufferIds = new VertexBuffer(this.device, new VertexFormat(this.device, formatDesc, ids2.length), ids2.length, { + data: useUintIds ? new Uint32Array(ids2) : new Float32Array(ids2) + }); + return true; + } + destroy() { + var _this$vertexBufferIds; + (_this$vertexBufferIds = this.vertexBufferIds) == null || _this$vertexBufferIds.destroy(); + this.vertexBufferIds = null; + for (let i = 0; i < this._targets.length; i++) { + this._targets[i].destroy(); + } + this._targets.length = 0; + } + get targets() { + return this._targets; + } + _updateMorphFlags() { + this._morphPositions = false; + this._morphNormals = false; + for (let i = 0; i < this._targets.length; i++) { + const target2 = this._targets[i]; + if (target2.morphPositions) { + this._morphPositions = true; + } + if (target2.morphNormals) { + this._morphNormals = true; + } + } + } + _createTexture(name, format) { + return new Texture(this.device, { + width: this.morphTextureWidth, + height: this.morphTextureHeight, + format, + cubemap: false, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + name + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/morph-target.js +var MorphTarget = class _MorphTarget { + constructor(options) { + this.used = false; + if (arguments.length === 2) { + options = arguments[1]; + } + this.options = options; + this._name = options.name; + this._defaultWeight = options.defaultWeight || 0; + this._aabb = options.aabb; + this.deltaPositions = options.deltaPositions; + } + destroy() { + var _this$_vertexBufferPo, _this$_vertexBufferNo, _this$texturePosition, _this$textureNormals; + (_this$_vertexBufferPo = this._vertexBufferPositions) == null || _this$_vertexBufferPo.destroy(); + this._vertexBufferPositions = null; + (_this$_vertexBufferNo = this._vertexBufferNormals) == null || _this$_vertexBufferNo.destroy(); + this._vertexBufferNormals = null; + (_this$texturePosition = this.texturePositions) == null || _this$texturePosition.destroy(); + this.texturePositions = null; + (_this$textureNormals = this.textureNormals) == null || _this$textureNormals.destroy(); + this.textureNormals = null; + } + get name() { + return this._name; + } + get defaultWeight() { + return this._defaultWeight; + } + get aabb() { + if (!this._aabb) { + this._aabb = new BoundingBox(); + if (this.deltaPositions) this._aabb.compute(this.deltaPositions); + } + return this._aabb; + } + get morphPositions() { + return !!this._vertexBufferPositions || !!this.texturePositions; + } + get morphNormals() { + return !!this._vertexBufferNormals || !!this.textureNormals; + } + clone() { + return new _MorphTarget(this.options); + } + _postInit() { + if (!this.options.preserveData) { + this.options = null; + } + this.used = true; + } + _initVertexBuffers(graphicsDevice) { + const options = this.options; + this._vertexBufferPositions = this._createVertexBuffer(graphicsDevice, options.deltaPositions, options.deltaPositionsType); + this._vertexBufferNormals = this._createVertexBuffer(graphicsDevice, options.deltaNormals, options.deltaNormalsType); + if (this._vertexBufferPositions) { + this.deltaPositions = this._vertexBufferPositions.lock(); + } + } + _createVertexBuffer(device, data2, dataType = TYPE_FLOAT32) { + if (data2) { + const formatDesc = [{ + semantic: SEMANTIC_ATTR0, + components: 3, + type: dataType + }]; + return new VertexBuffer(device, new VertexFormat(device, formatDesc), data2.length / 3, { + data: data2 + }); + } + return null; + } + _setTexture(name, texture) { + this[name] = texture; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/skybox.js +var mip2size = [128, 64, 16, 8, 4, 2]; +var fShader2 = ` + #include "decodePS" + #include "gamma" + #include "tonemapping" + #include "envMultiplyPS" + + #ifdef SKY_CUBEMAP + #include "cubemapSeams" + #include "skyboxHDRPS" + #else + #include "sphericalPS" + #include "envAtlasPS" + #include "skyboxEnvPS" + #endif +`; +var ShaderGeneratorSkybox = class extends ShaderGenerator { + generateKey(options) { + const sharedKey = `skybox-${options.type}-${options.encoding}-${options.gamma}-${options.toneMapping}-${options.skymesh}`; + return sharedKey + (options.type === "cubemap" ? `-${options.mip}` : ""); + } + createShaderDefinition(device, options) { + const defines = /* @__PURE__ */ new Map(); + defines.set("SKYBOX_DECODE_FNC", ChunkUtils.decodeFunc(options.encoding)); + if (options.skymesh !== SKYTYPE_INFINITE) defines.set("SKYMESH", ""); + if (options.type === "cubemap") { + defines.set("SKY_CUBEMAP", ""); + defines.set("SKYBOX_MIP", (1 - 1 / mip2size[options.mip]).toString()); + } + const includes = /* @__PURE__ */ new Map(); + includes.set("decodePS", shaderChunks.decodePS); + includes.set("gamma", ShaderGenerator.gammaCode(options.gamma)); + includes.set("tonemapping", ShaderGenerator.tonemapCode(options.toneMapping)); + includes.set("envMultiplyPS", shaderChunks.envMultiplyPS); + if (options.type === "cubemap") { + includes.set("cubemapSeams", options.mip ? shaderChunks.fixCubemapSeamsStretchPS : shaderChunks.fixCubemapSeamsNonePS); + includes.set("skyboxHDRPS", shaderChunks.skyboxHDRPS); + } else { + includes.set("sphericalPS", shaderChunks.sphericalPS); + includes.set("envAtlasPS", shaderChunks.envAtlasPS); + includes.set("skyboxEnvPS", shaderChunks.skyboxEnvPS); + } + return ShaderUtils.createDefinition(device, { + name: "SkyboxShader", + attributes: { + aPosition: SEMANTIC_POSITION + }, + vertexCode: shaderChunks.skyboxVS, + vertexDefines: defines, + fragmentCode: fShader2, + fragmentDefines: defines, + fragmentIncludes: includes + }); + } +}; +var skybox = new ShaderGeneratorSkybox(); + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/geometry-utils.js +var calculateNormals = (positions, indices) => { + const triangleCount = indices.length / 3; + const vertexCount = positions.length / 3; + const p12 = new Vec3(); + const p22 = new Vec3(); + const p3 = new Vec3(); + const p1p2 = new Vec3(); + const p1p3 = new Vec3(); + const faceNormal = new Vec3(); + const normals = []; + for (let i = 0; i < positions.length; i++) { + normals[i] = 0; + } + for (let i = 0; i < triangleCount; i++) { + const i1 = indices[i * 3]; + const i2 = indices[i * 3 + 1]; + const i3 = indices[i * 3 + 2]; + p12.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]); + p22.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]); + p3.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]); + p1p2.sub2(p22, p12); + p1p3.sub2(p3, p12); + faceNormal.cross(p1p2, p1p3).normalize(); + normals[i1 * 3] += faceNormal.x; + normals[i1 * 3 + 1] += faceNormal.y; + normals[i1 * 3 + 2] += faceNormal.z; + normals[i2 * 3] += faceNormal.x; + normals[i2 * 3 + 1] += faceNormal.y; + normals[i2 * 3 + 2] += faceNormal.z; + normals[i3 * 3] += faceNormal.x; + normals[i3 * 3 + 1] += faceNormal.y; + normals[i3 * 3 + 2] += faceNormal.z; + } + for (let i = 0; i < vertexCount; i++) { + const nx = normals[i * 3]; + const ny = normals[i * 3 + 1]; + const nz = normals[i * 3 + 2]; + const invLen = 1 / Math.sqrt(nx * nx + ny * ny + nz * nz); + normals[i * 3] *= invLen; + normals[i * 3 + 1] *= invLen; + normals[i * 3 + 2] *= invLen; + } + return normals; +}; +var calculateTangents = (positions, normals, uvs, indices) => { + const triangleCount = indices.length / 3; + const vertexCount = positions.length / 3; + const v1 = new Vec3(); + const v22 = new Vec3(); + const v32 = new Vec3(); + const w1 = new Vec2(); + const w2 = new Vec2(); + const w3 = new Vec2(); + const sdir = new Vec3(); + const tdir = new Vec3(); + const tan1 = new Float32Array(vertexCount * 3); + const tan2 = new Float32Array(vertexCount * 3); + const tangents = []; + for (let i = 0; i < triangleCount; i++) { + const i1 = indices[i * 3]; + const i2 = indices[i * 3 + 1]; + const i3 = indices[i * 3 + 2]; + v1.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]); + v22.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]); + v32.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]); + w1.set(uvs[i1 * 2], uvs[i1 * 2 + 1]); + w2.set(uvs[i2 * 2], uvs[i2 * 2 + 1]); + w3.set(uvs[i3 * 2], uvs[i3 * 2 + 1]); + const x1 = v22.x - v1.x; + const x2 = v32.x - v1.x; + const y1 = v22.y - v1.y; + const y2 = v32.y - v1.y; + const z1 = v22.z - v1.z; + const z2 = v32.z - v1.z; + const s1 = w2.x - w1.x; + const s2 = w3.x - w1.x; + const _t = w2.y - w1.y; + const _t2 = w3.y - w1.y; + const area = s1 * _t2 - s2 * _t; + if (area === 0) { + sdir.set(0, 1, 0); + tdir.set(1, 0, 0); + } else { + const r = 1 / area; + sdir.set((_t2 * x1 - _t * x2) * r, (_t2 * y1 - _t * y2) * r, (_t2 * z1 - _t * z2) * r); + tdir.set((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r); + } + tan1[i1 * 3 + 0] += sdir.x; + tan1[i1 * 3 + 1] += sdir.y; + tan1[i1 * 3 + 2] += sdir.z; + tan1[i2 * 3 + 0] += sdir.x; + tan1[i2 * 3 + 1] += sdir.y; + tan1[i2 * 3 + 2] += sdir.z; + tan1[i3 * 3 + 0] += sdir.x; + tan1[i3 * 3 + 1] += sdir.y; + tan1[i3 * 3 + 2] += sdir.z; + tan2[i1 * 3 + 0] += tdir.x; + tan2[i1 * 3 + 1] += tdir.y; + tan2[i1 * 3 + 2] += tdir.z; + tan2[i2 * 3 + 0] += tdir.x; + tan2[i2 * 3 + 1] += tdir.y; + tan2[i2 * 3 + 2] += tdir.z; + tan2[i3 * 3 + 0] += tdir.x; + tan2[i3 * 3 + 1] += tdir.y; + tan2[i3 * 3 + 2] += tdir.z; + } + const t1 = new Vec3(); + const t2 = new Vec3(); + const n = new Vec3(); + const temp = new Vec3(); + for (let i = 0; i < vertexCount; i++) { + n.set(normals[i * 3], normals[i * 3 + 1], normals[i * 3 + 2]); + t1.set(tan1[i * 3], tan1[i * 3 + 1], tan1[i * 3 + 2]); + t2.set(tan2[i * 3], tan2[i * 3 + 1], tan2[i * 3 + 2]); + const ndott = n.dot(t1); + temp.copy(n).mulScalar(ndott); + temp.sub2(t1, temp).normalize(); + tangents[i * 4] = temp.x; + tangents[i * 4 + 1] = temp.y; + tangents[i * 4 + 2] = temp.z; + temp.cross(n, t1); + tangents[i * 4 + 3] = temp.dot(t2) < 0 ? -1 : 1; + } + return tangents; +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/geometry.js +var Geometry = class { + constructor() { + this.positions = void 0; + this.normals = void 0; + this.colors = void 0; + this.uvs = void 0; + this.uvs1 = void 0; + this.blendIndices = void 0; + this.blendWeights = void 0; + this.tangents = void 0; + this.indices = void 0; + } + calculateNormals() { + this.normals = calculateNormals(this.positions, this.indices); + } + calculateTangents() { + this.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/box-geometry.js +var primitiveUv1Padding = 4 / 64; +var primitiveUv1PaddingScale = 1 - primitiveUv1Padding * 2; +var BoxGeometry = class extends Geometry { + constructor(opts = {}) { + var _opts$halfExtents, _opts$widthSegments, _opts$lengthSegments, _opts$heightSegments, _opts$yOffset; + super(); + const he = (_opts$halfExtents = opts.halfExtents) != null ? _opts$halfExtents : new Vec3(0.5, 0.5, 0.5); + const ws = (_opts$widthSegments = opts.widthSegments) != null ? _opts$widthSegments : 1; + const ls = (_opts$lengthSegments = opts.lengthSegments) != null ? _opts$lengthSegments : 1; + const hs = (_opts$heightSegments = opts.heightSegments) != null ? _opts$heightSegments : 1; + const yOffset = (_opts$yOffset = opts.yOffset) != null ? _opts$yOffset : 0; + const minY = -he.y + yOffset; + const maxY = he.y + yOffset; + const corners = [new Vec3(-he.x, minY, he.z), new Vec3(he.x, minY, he.z), new Vec3(he.x, maxY, he.z), new Vec3(-he.x, maxY, he.z), new Vec3(he.x, minY, -he.z), new Vec3(-he.x, minY, -he.z), new Vec3(-he.x, maxY, -he.z), new Vec3(he.x, maxY, -he.z)]; + const faceAxes = [[0, 1, 3], [4, 5, 7], [3, 2, 6], [1, 0, 4], [1, 4, 2], [5, 0, 6]]; + const faceNormals = [[0, 0, 1], [0, 0, -1], [0, 1, 0], [0, -1, 0], [1, 0, 0], [-1, 0, 0]]; + const sides = { + FRONT: 0, + BACK: 1, + TOP: 2, + BOTTOM: 3, + RIGHT: 4, + LEFT: 5 + }; + const positions = []; + const normals = []; + const uvs = []; + const indices = []; + let vcounter = 0; + const generateFace = (side, uSegments, vSegments) => { + const temp1 = new Vec3(); + const temp2 = new Vec3(); + const temp3 = new Vec3(); + const r = new Vec3(); + for (let i = 0; i <= uSegments; i++) { + for (let j = 0; j <= vSegments; j++) { + temp1.lerp(corners[faceAxes[side][0]], corners[faceAxes[side][1]], i / uSegments); + temp2.lerp(corners[faceAxes[side][0]], corners[faceAxes[side][2]], j / vSegments); + temp3.sub2(temp2, corners[faceAxes[side][0]]); + r.add2(temp1, temp3); + let u = i / uSegments; + let v = j / vSegments; + positions.push(r.x, r.y, r.z); + normals.push(faceNormals[side][0], faceNormals[side][1], faceNormals[side][2]); + uvs.push(u, 1 - v); + u = u * primitiveUv1PaddingScale + primitiveUv1Padding; + v = v * primitiveUv1PaddingScale + primitiveUv1Padding; + u /= 3; + v /= 3; + u += side % 3 / 3; + v += Math.floor(side / 3) / 3; + if (i < uSegments && j < vSegments) { + indices.push(vcounter + vSegments + 1, vcounter + 1, vcounter); + indices.push(vcounter + vSegments + 1, vcounter + vSegments + 2, vcounter + 1); + } + vcounter++; + } + } + }; + generateFace(sides.FRONT, ws, hs); + generateFace(sides.BACK, ws, hs); + generateFace(sides.TOP, ws, ls); + generateFace(sides.BOTTOM, ws, ls); + generateFace(sides.RIGHT, ls, hs); + generateFace(sides.LEFT, ls, hs); + this.positions = positions; + this.normals = normals; + this.uvs = uvs; + this.uvs1 = uvs; + this.indices = indices; + if (opts.calculateTangents) { + this.tangents = calculateTangents(positions, normals, uvs, indices); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/sphere-geometry.js +var SphereGeometry = class extends Geometry { + constructor(opts = {}) { + var _opts$radius, _opts$latitudeBands, _opts$longitudeBands; + super(); + const radius = (_opts$radius = opts.radius) != null ? _opts$radius : 0.5; + const latitudeBands = (_opts$latitudeBands = opts.latitudeBands) != null ? _opts$latitudeBands : 16; + const longitudeBands = (_opts$longitudeBands = opts.longitudeBands) != null ? _opts$longitudeBands : 16; + const positions = []; + const normals = []; + const uvs = []; + const indices = []; + for (let lat = 0; lat <= latitudeBands; lat++) { + const theta = lat * Math.PI / latitudeBands; + const sinTheta = Math.sin(theta); + const cosTheta = Math.cos(theta); + for (let lon = 0; lon <= longitudeBands; lon++) { + const phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2; + const sinPhi = Math.sin(phi); + const cosPhi = Math.cos(phi); + const x2 = cosPhi * sinTheta; + const y2 = cosTheta; + const z2 = sinPhi * sinTheta; + const u = 1 - lon / longitudeBands; + const v = 1 - lat / latitudeBands; + positions.push(x2 * radius, y2 * radius, z2 * radius); + normals.push(x2, y2, z2); + uvs.push(u, 1 - v); + } + } + for (let lat = 0; lat < latitudeBands; ++lat) { + for (let lon = 0; lon < longitudeBands; ++lon) { + const first = lat * (longitudeBands + 1) + lon; + const second = first + longitudeBands + 1; + indices.push(first + 1, second, first); + indices.push(first + 1, second + 1, second); + } + } + this.positions = positions; + this.normals = normals; + this.uvs = uvs; + this.uvs1 = uvs; + this.indices = indices; + if (opts.calculateTangents) { + this.tangents = calculateTangents(positions, normals, uvs, indices); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/dome-geometry.js +var DomeGeometry = class extends SphereGeometry { + constructor(opts = {}) { + var _opts$latitudeBands, _opts$longitudeBands; + const radius = 0.5; + const latitudeBands = (_opts$latitudeBands = opts.latitudeBands) != null ? _opts$latitudeBands : 16; + const longitudeBands = (_opts$longitudeBands = opts.longitudeBands) != null ? _opts$longitudeBands : 16; + super({ + radius, + latitudeBands, + longitudeBands + }); + const bottomLimit = 0.1; + const curvatureRadius = 0.95; + const curvatureRadiusSq = curvatureRadius * curvatureRadius; + const positions = this.positions; + for (let i = 0; i < positions.length; i += 3) { + const x2 = positions[i] / radius; + let y2 = positions[i + 1] / radius; + const z2 = positions[i + 2] / radius; + if (y2 < 0) { + y2 *= 0.3; + if (x2 * x2 + z2 * z2 < curvatureRadiusSq) { + y2 = -bottomLimit; + } + } + y2 += bottomLimit; + y2 *= radius; + positions[i + 1] = y2; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/skybox/sky-geometry.js +var SkyGeometry = class _SkyGeometry { + static create(device, type2) { + switch (type2) { + case SKYTYPE_BOX: + return _SkyGeometry.box(device); + case SKYTYPE_DOME: + return _SkyGeometry.dome(device); + } + return _SkyGeometry.infinite(device); + } + static infinite(device) { + return Mesh.fromGeometry(device, new BoxGeometry(device)); + } + static box(device) { + return Mesh.fromGeometry(device, new BoxGeometry({ + yOffset: 0.5 + })); + } + static dome(device) { + const geom = new DomeGeometry({ + latitudeBands: 50, + longitudeBands: 50 + }); + geom.normals = void 0; + geom.uvs = void 0; + return Mesh.fromGeometry(device, geom); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/skybox/sky-mesh.js +var SkyMesh = class { + constructor(device, scene2, node, texture, type2) { + this.meshInstance = null; + const material = new Material(); + material.name = "SkyMaterial"; + material.getShaderVariant = function(dev, sc, defs, unused, pass, sortedLights, viewUniformFormat, viewBindGroupFormat) { + const options = { + pass, + encoding: texture.encoding, + gamma: pass === SHADER_FORWARDHDR ? scene2.gammaCorrection ? GAMMA_SRGBHDR : GAMMA_NONE : scene2.gammaCorrection, + toneMapping: pass === SHADER_FORWARDHDR ? TONEMAP_LINEAR : scene2.toneMapping, + skymesh: type2 + }; + if (texture.cubemap) { + options.type = "cubemap"; + options.mip = texture.fixCubemapSeams ? scene2.skyboxMip : 0; + options.fixSeams = texture.fixCubemapSeams; + } else { + options.type = "envAtlas"; + } + const processingOptions = new ShaderProcessorOptions(viewUniformFormat, viewBindGroupFormat); + const library = getProgramLibrary(device); + library.register("skybox", skybox); + return library.getProgram("skybox", options, processingOptions); + }; + if (texture.cubemap) { + material.setParameter("texture_cubeMap", texture); + } else { + material.setParameter("texture_envAtlas", texture); + material.setParameter("mipLevel", scene2._skyboxMip); + } + material.cull = CULLFACE_FRONT; + material.depthWrite = false; + const skyLayer = scene2.layers.getLayerById(LAYERID_SKYBOX); + if (skyLayer) { + const mesh = SkyGeometry.create(device, type2); + const meshInstance = new MeshInstance(mesh, material, node); + this.meshInstance = meshInstance; + meshInstance.cull = false; + meshInstance.pick = false; + skyLayer.addMeshInstances([meshInstance]); + this.skyLayer = skyLayer; + } + } + destroy() { + if (this.meshInstance) { + if (this.skyLayer) { + this.skyLayer.removeMeshInstances([this.meshInstance]); + } + this.meshInstance.destroy(); + this.meshInstance = null; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/skybox/sky.js +var Sky = class { + constructor(scene2) { + this._type = SKYTYPE_INFINITE; + this._center = new Vec3(0, 1, 0); + this.skyMesh = null; + this.node = new GraphNode("SkyMeshNode"); + this.device = scene2.device; + this.scene = scene2; + this.center = new Vec3(0, 1, 0); + this.centerArray = new Float32Array(3); + this.projectedSkydomeCenterId = this.device.scope.resolve("projectedSkydomeCenter"); + } + applySettings(render) { + var _render$skyType, _render$skyMeshPositi, _render$skyMeshRotati, _render$skyMeshScale; + this.type = (_render$skyType = render.skyType) != null ? _render$skyType : SKYTYPE_INFINITE; + this.node.setLocalPosition(new Vec3((_render$skyMeshPositi = render.skyMeshPosition) != null ? _render$skyMeshPositi : [0, 0, 0])); + this.node.setLocalEulerAngles(new Vec3((_render$skyMeshRotati = render.skyMeshRotation) != null ? _render$skyMeshRotati : [0, 0, 0])); + this.node.setLocalScale(new Vec3((_render$skyMeshScale = render.skyMeshScale) != null ? _render$skyMeshScale : [1, 1, 1])); + if (render.skyCenter) { + this._center = new Vec3(render.skyCenter); + } + } + set type(value) { + if (this._type !== value) { + this._type = value; + this.scene.updateShaders = true; + this.updateSkyMesh(); + } + } + get type() { + return this._type; + } + set center(value) { + this._center.copy(value); + } + get center() { + return this._center; + } + updateSkyMesh() { + const texture = this.scene._getSkyboxTex(); + if (texture) { + this.resetSkyMesh(); + this.skyMesh = new SkyMesh(this.device, this.scene, this.node, texture, this.type); + this.scene.fire("set:skybox", texture); + } + } + resetSkyMesh() { + var _this$skyMesh; + (_this$skyMesh = this.skyMesh) == null || _this$skyMesh.destroy(); + this.skyMesh = null; + } + update() { + if (this.type !== SKYTYPE_INFINITE) { + const { + center: center2, + centerArray + } = this; + const temp = new Vec3(); + this.node.getWorldTransform().transformPoint(center2, temp); + centerArray[0] = temp.x; + centerArray[1] = temp.y; + centerArray[2] = temp.z; + this.projectedSkydomeCenterId.setValue(centerArray); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/immediate/immediate-batch.js +var identityGraphNode = new GraphNode(); +identityGraphNode.worldTransform = Mat4.IDENTITY; +identityGraphNode._dirtyWorld = identityGraphNode._dirtyNormal = false; +var ImmediateBatch = class { + constructor(device, material, layer) { + this.material = material; + this.layer = layer; + this.positions = []; + this.colors = []; + this.mesh = new Mesh(device); + this.meshInstance = null; + } + addLines(positions, color) { + const destPos = this.positions; + const count = positions.length; + for (let i = 0; i < count; i++) { + const pos = positions[i]; + destPos.push(pos.x, pos.y, pos.z); + } + const destCol = this.colors; + if (color.length) { + for (let i = 0; i < count; i++) { + const col = color[i]; + destCol.push(col.r, col.g, col.b, col.a); + } + } else { + for (let i = 0; i < count; i++) { + destCol.push(color.r, color.g, color.b, color.a); + } + } + } + addLinesArrays(positions, color) { + const destPos = this.positions; + for (let i = 0; i < positions.length; i += 3) { + destPos.push(positions[i], positions[i + 1], positions[i + 2]); + } + const destCol = this.colors; + if (color.length) { + for (let i = 0; i < color.length; i += 4) { + destCol.push(color[i], color[i + 1], color[i + 2], color[i + 3]); + } + } else { + const count = positions.length / 3; + for (let i = 0; i < count; i++) { + destCol.push(color.r, color.g, color.b, color.a); + } + } + } + onPreRender(visibleList, transparent) { + if (this.positions.length > 0 && this.material.transparent === transparent) { + this.mesh.setPositions(this.positions); + this.mesh.setColors(this.colors); + this.mesh.update(PRIMITIVE_LINES, false); + if (!this.meshInstance) { + this.meshInstance = new MeshInstance(this.mesh, this.material, identityGraphNode); + } + visibleList.push(this.meshInstance); + } + } + clear() { + this.positions.length = 0; + this.colors.length = 0; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/immediate/immediate-batches.js +var ImmediateBatches = class { + constructor(device) { + this.device = device; + this.map = /* @__PURE__ */ new Map(); + } + getBatch(material, layer) { + let batch = this.map.get(material); + if (!batch) { + batch = new ImmediateBatch(this.device, material, layer); + this.map.set(material, batch); + } + return batch; + } + onPreRender(visibleList, transparent) { + this.map.forEach((batch) => { + batch.onPreRender(visibleList, transparent); + }); + } + clear() { + this.map.forEach((batch) => batch.clear()); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/immediate/immediate.js +var tempPoints = []; +var vec = new Vec3(); +var Immediate = class { + constructor(device) { + this.device = device; + this.quadMesh = null; + this.textureShader = null; + this.depthTextureShader = null; + this.cubeLocalPos = null; + this.cubeWorldPos = null; + this.batchesMap = /* @__PURE__ */ new Map(); + this.allBatches = /* @__PURE__ */ new Set(); + this.updatedLayers = /* @__PURE__ */ new Set(); + this._materialDepth = null; + this._materialNoDepth = null; + this.layerMeshInstances = /* @__PURE__ */ new Map(); + } + createMaterial(depthTest) { + const material = new BasicMaterial(); + material.vertexColors = true; + material.blendType = BLEND_NORMAL; + material.depthTest = depthTest; + material.update(); + return material; + } + get materialDepth() { + if (!this._materialDepth) { + this._materialDepth = this.createMaterial(true); + } + return this._materialDepth; + } + get materialNoDepth() { + if (!this._materialNoDepth) { + this._materialNoDepth = this.createMaterial(false); + } + return this._materialNoDepth; + } + getBatch(layer, depthTest) { + let batches = this.batchesMap.get(layer); + if (!batches) { + batches = new ImmediateBatches(this.device); + this.batchesMap.set(layer, batches); + } + this.allBatches.add(batches); + const material = depthTest ? this.materialDepth : this.materialNoDepth; + return batches.getBatch(material, layer); + } + getShader(id12, fragment) { + if (!this[id12]) { + const vertex = ` + attribute vec2 vertex_position; + uniform mat4 matrix_model; + varying vec2 uv0; + void main(void) { + gl_Position = matrix_model * vec4(vertex_position, 0, 1); + uv0 = vertex_position.xy + 0.5; + } + `; + this[id12] = createShaderFromCode(this.device, vertex, fragment, `DebugShader:${id12}`); + } + return this[id12]; + } + getTextureShader() { + return this.getShader("textureShader", ` + varying vec2 uv0; + uniform sampler2D colorMap; + void main (void) { + gl_FragColor = vec4(texture2D(colorMap, uv0).xyz, 1); + } + `); + } + getUnfilterableTextureShader() { + return this.getShader("textureShaderUnfilterable", ` + varying vec2 uv0; + uniform highp sampler2D colorMap; + void main (void) { + ivec2 uv = ivec2(uv0 * textureSize(colorMap, 0)); + gl_FragColor = vec4(texelFetch(colorMap, uv, 0).xyz, 1); + } + `); + } + getDepthTextureShader() { + return this.getShader("depthTextureShader", ` + ${shaderChunks.screenDepthPS} + varying vec2 uv0; + void main() { + float depth = getLinearScreenDepth(getImageEffectUV(uv0)) * camera_params.x; + gl_FragColor = vec4(vec3(depth), 1.0); + } + `); + } + getQuadMesh() { + if (!this.quadMesh) { + this.quadMesh = new Mesh(this.device); + this.quadMesh.setPositions([-0.5, -0.5, 0, 0.5, -0.5, 0, -0.5, 0.5, 0, 0.5, 0.5, 0]); + this.quadMesh.update(PRIMITIVE_TRISTRIP); + } + return this.quadMesh; + } + drawMesh(material, matrix2, mesh, meshInstance, layer) { + if (!meshInstance) { + const graphNode = this.getGraphNode(matrix2); + meshInstance = new MeshInstance(mesh, material, graphNode); + } + let layerMeshInstances = this.layerMeshInstances.get(layer); + if (!layerMeshInstances) { + layerMeshInstances = []; + this.layerMeshInstances.set(layer, layerMeshInstances); + } + layerMeshInstances.push(meshInstance); + } + drawWireAlignedBox(min, max, color, depthTest, layer, mat) { + if (mat) { + const mulPoint = (x2, y2, z2) => { + vec.set(x2, y2, z2); + mat.transformPoint(vec, vec); + tempPoints.push(vec.x, vec.y, vec.z); + }; + mulPoint(min.x, min.y, min.z); + mulPoint(min.x, max.y, min.z); + mulPoint(min.x, max.y, min.z); + mulPoint(max.x, max.y, min.z); + mulPoint(max.x, max.y, min.z); + mulPoint(max.x, min.y, min.z); + mulPoint(max.x, min.y, min.z); + mulPoint(min.x, min.y, min.z); + mulPoint(min.x, min.y, max.z); + mulPoint(min.x, max.y, max.z); + mulPoint(min.x, max.y, max.z); + mulPoint(max.x, max.y, max.z); + mulPoint(max.x, max.y, max.z); + mulPoint(max.x, min.y, max.z); + mulPoint(max.x, min.y, max.z); + mulPoint(min.x, min.y, max.z); + mulPoint(min.x, min.y, min.z); + mulPoint(min.x, min.y, max.z); + mulPoint(min.x, max.y, min.z); + mulPoint(min.x, max.y, max.z); + mulPoint(max.x, max.y, min.z); + mulPoint(max.x, max.y, max.z); + mulPoint(max.x, min.y, min.z); + mulPoint(max.x, min.y, max.z); + } else { + tempPoints.push(min.x, min.y, min.z, min.x, max.y, min.z, min.x, max.y, min.z, max.x, max.y, min.z, max.x, max.y, min.z, max.x, min.y, min.z, max.x, min.y, min.z, min.x, min.y, min.z, min.x, min.y, max.z, min.x, max.y, max.z, min.x, max.y, max.z, max.x, max.y, max.z, max.x, max.y, max.z, max.x, min.y, max.z, max.x, min.y, max.z, min.x, min.y, max.z, min.x, min.y, min.z, min.x, min.y, max.z, min.x, max.y, min.z, min.x, max.y, max.z, max.x, max.y, min.z, max.x, max.y, max.z, max.x, min.y, min.z, max.x, min.y, max.z); + } + const batch = this.getBatch(layer, depthTest); + batch.addLinesArrays(tempPoints, color); + tempPoints.length = 0; + } + drawWireSphere(center2, radius, color, numSegments, depthTest, layer) { + const step = 2 * Math.PI / numSegments; + let angle = 0; + for (let i = 0; i < numSegments; i++) { + const sin0 = Math.sin(angle); + const cos0 = Math.cos(angle); + angle += step; + const sin1 = Math.sin(angle); + const cos1 = Math.cos(angle); + tempPoints.push(center2.x + radius * sin0, center2.y, center2.z + radius * cos0); + tempPoints.push(center2.x + radius * sin1, center2.y, center2.z + radius * cos1); + tempPoints.push(center2.x + radius * sin0, center2.y + radius * cos0, center2.z); + tempPoints.push(center2.x + radius * sin1, center2.y + radius * cos1, center2.z); + tempPoints.push(center2.x, center2.y + radius * sin0, center2.z + radius * cos0); + tempPoints.push(center2.x, center2.y + radius * sin1, center2.z + radius * cos1); + } + const batch = this.getBatch(layer, depthTest); + batch.addLinesArrays(tempPoints, color); + tempPoints.length = 0; + } + getGraphNode(matrix2) { + const graphNode = new GraphNode("ImmediateDebug"); + graphNode.worldTransform = matrix2; + graphNode._dirtyWorld = graphNode._dirtyNormal = false; + return graphNode; + } + onPreRenderLayer(layer, visibleList, transparent) { + this.batchesMap.forEach((batches, batchLayer) => { + if (batchLayer === layer) { + batches.onPreRender(visibleList, transparent); + } + }); + if (!this.updatedLayers.has(layer)) { + this.updatedLayers.add(layer); + const meshInstances = this.layerMeshInstances.get(layer); + if (meshInstances) { + for (let i = 0; i < meshInstances.length; i++) { + visibleList.push(meshInstances[i]); + } + meshInstances.length = 0; + } + } + } + onPostRender() { + this.allBatches.forEach((batch) => batch.clear()); + this.allBatches.clear(); + this.updatedLayers.clear(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/math/random.js +var _goldenAngle = 2.399963229728653; +var random = { + circlePoint(point) { + const r = Math.sqrt(Math.random()); + const theta = Math.random() * 2 * Math.PI; + point.x = r * Math.cos(theta); + point.y = r * Math.sin(theta); + }, + circlePointDeterministic(point, index, numPoints) { + const theta = index * _goldenAngle; + const r = Math.sqrt(index) / Math.sqrt(numPoints); + point.x = r * Math.cos(theta); + point.y = r * Math.sin(theta); + }, + spherePointDeterministic(point, index, numPoints, start = 0, end = 1) { + start = 1 - 2 * start; + end = 1 - 2 * end; + const y2 = math.lerp(start, end, index / numPoints); + const radius = Math.sqrt(1 - y2 * y2); + const theta = _goldenAngle * index; + point.x = Math.cos(theta) * radius; + point.y = y2; + point.z = Math.sin(theta) * radius; + }, + radicalInverse(i) { + let bits = (i << 16 | i >>> 16) >>> 0; + bits = ((bits & 1431655765) << 1 | (bits & 2863311530) >>> 1) >>> 0; + bits = ((bits & 858993459) << 2 | (bits & 3435973836) >>> 2) >>> 0; + bits = ((bits & 252645135) << 4 | (bits & 4042322160) >>> 4) >>> 0; + bits = ((bits & 16711935) << 8 | (bits & 4278255360) >>> 8) >>> 0; + return bits * 23283064365386963e-26; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/reproject-texture.js +var getProjectionName = (projection) => { + switch (projection) { + case TEXTUREPROJECTION_CUBE: + return "Cubemap"; + case TEXTUREPROJECTION_OCTAHEDRAL: + return "Octahedral"; + default: + return "Equirect"; + } +}; +var packFloat32ToRGBA8 = (value, array2, offset) => { + if (value <= 0) { + array2[offset + 0] = 0; + array2[offset + 1] = 0; + array2[offset + 2] = 0; + array2[offset + 3] = 0; + } else if (value >= 1) { + array2[offset + 0] = 255; + array2[offset + 1] = 0; + array2[offset + 2] = 0; + array2[offset + 3] = 0; + } else { + let encX = 1 * value % 1; + let encY = 255 * value % 1; + let encZ = 65025 * value % 1; + const encW = 16581375 * value % 1; + encX -= encY / 255; + encY -= encZ / 255; + encZ -= encW / 255; + array2[offset + 0] = Math.min(255, Math.floor(encX * 256)); + array2[offset + 1] = Math.min(255, Math.floor(encY * 256)); + array2[offset + 2] = Math.min(255, Math.floor(encZ * 256)); + array2[offset + 3] = Math.min(255, Math.floor(encW * 256)); + } +}; +var packSamples = (samples) => { + const numSamples = samples.length; + const w = Math.min(numSamples, 512); + const h = Math.ceil(numSamples / w); + const data2 = new Uint8Array(w * h * 4); + let off = 0; + for (let i = 0; i < numSamples; i += 4) { + packFloat32ToRGBA8(samples[i + 0] * 0.5 + 0.5, data2, off + 0); + packFloat32ToRGBA8(samples[i + 1] * 0.5 + 0.5, data2, off + 4); + packFloat32ToRGBA8(samples[i + 2] * 0.5 + 0.5, data2, off + 8); + packFloat32ToRGBA8(samples[i + 3] / 8, data2, off + 12); + off += 16; + } + return { + width: w, + height: h, + data: data2 + }; +}; +var hemisphereSamplePhong = (dstVec, x2, y2, specularPower) => { + const phi = y2 * 2 * Math.PI; + const cosTheta = Math.pow(1 - x2, 1 / (specularPower + 1)); + const sinTheta = Math.sqrt(1 - cosTheta * cosTheta); + dstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize(); +}; +var hemisphereSampleLambert = (dstVec, x2, y2) => { + const phi = y2 * 2 * Math.PI; + const cosTheta = Math.sqrt(1 - x2); + const sinTheta = Math.sqrt(x2); + dstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize(); +}; +var hemisphereSampleGGX = (dstVec, x2, y2, a) => { + const phi = y2 * 2 * Math.PI; + const cosTheta = Math.sqrt((1 - x2) / (1 + (a * a - 1) * x2)); + const sinTheta = Math.sqrt(1 - cosTheta * cosTheta); + dstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize(); +}; +var D_GGX = (NoH, linearRoughness) => { + const a = NoH * linearRoughness; + const k = linearRoughness / (1 - NoH * NoH + a * a); + return k * k * (1 / Math.PI); +}; +var generatePhongSamples = (numSamples, specularPower) => { + const H = new Vec3(); + const result = []; + for (let i = 0; i < numSamples; ++i) { + hemisphereSamplePhong(H, i / numSamples, random.radicalInverse(i), specularPower); + result.push(H.x, H.y, H.z, 0); + } + return result; +}; +var generateLambertSamples = (numSamples, sourceTotalPixels) => { + const pixelsPerSample = sourceTotalPixels / numSamples; + const H = new Vec3(); + const result = []; + for (let i = 0; i < numSamples; ++i) { + hemisphereSampleLambert(H, i / numSamples, random.radicalInverse(i)); + const pdf = H.z / Math.PI; + const mipLevel = 0.5 * Math.log2(pixelsPerSample / pdf); + result.push(H.x, H.y, H.z, mipLevel); + } + return result; +}; +var requiredSamplesGGX = { + "16": { + "2": 26, + "8": 20, + "32": 17, + "128": 16, + "512": 16 + }, + "32": { + "2": 53, + "8": 40, + "32": 34, + "128": 32, + "512": 32 + }, + "128": { + "2": 214, + "8": 163, + "32": 139, + "128": 130, + "512": 128 + }, + "1024": { + "2": 1722, + "8": 1310, + "32": 1114, + "128": 1041, + "512": 1025 + } +}; +var getRequiredSamplesGGX = (numSamples, specularPower) => { + const table = requiredSamplesGGX[numSamples]; + return table && table[specularPower] || numSamples; +}; +var generateGGXSamples = (numSamples, specularPower, sourceTotalPixels) => { + const pixelsPerSample = sourceTotalPixels / numSamples; + const roughness = 1 - Math.log2(specularPower) / 11; + const a = roughness * roughness; + const H = new Vec3(); + const L = new Vec3(); + const N = new Vec3(0, 0, 1); + const result = []; + const requiredSamples = getRequiredSamplesGGX(numSamples, specularPower); + for (let i = 0; i < requiredSamples; ++i) { + hemisphereSampleGGX(H, i / requiredSamples, random.radicalInverse(i), a); + const NoH = H.z; + L.set(H.x, H.y, H.z).mulScalar(2 * NoH).sub(N); + if (L.z > 0) { + const pdf = D_GGX(Math.min(1, NoH), a) / 4 + 1e-3; + const mipLevel = 0.5 * Math.log2(pixelsPerSample / pdf); + result.push(L.x, L.y, L.z, mipLevel); + } + } + while (result.length < numSamples * 4) { + result.push(0, 0, 0, 0); + } + return result; +}; +var createSamplesTex = (device, name, samples) => { + const packedSamples = packSamples(samples); + return new Texture(device, { + name, + width: packedSamples.width, + height: packedSamples.height, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + levels: [packedSamples.data] + }); +}; +var SimpleCache = class { + constructor(destroyContent = true) { + this.map = /* @__PURE__ */ new Map(); + this.destroyContent = destroyContent; + } + destroy() { + if (this.destroyContent) { + this.map.forEach((value, key) => { + value.destroy(); + }); + } + } + get(key, missFunc) { + if (!this.map.has(key)) { + const result = missFunc(); + this.map.set(key, result); + return result; + } + return this.map.get(key); + } +}; +var samplesCache = new SimpleCache(false); +var deviceCache2 = new DeviceCache(); +var getCachedTexture = (device, key, getSamplesFnc) => { + const cache = deviceCache2.get(device, () => { + return new SimpleCache(); + }); + return cache.get(key, () => { + return createSamplesTex(device, key, samplesCache.get(key, getSamplesFnc)); + }); +}; +var generateLambertSamplesTex = (device, numSamples, sourceTotalPixels) => { + const key = `lambert-samples-${numSamples}-${sourceTotalPixels}`; + return getCachedTexture(device, key, () => { + return generateLambertSamples(numSamples, sourceTotalPixels); + }); +}; +var generatePhongSamplesTex = (device, numSamples, specularPower) => { + const key = `phong-samples-${numSamples}-${specularPower}`; + return getCachedTexture(device, key, () => { + return generatePhongSamples(numSamples, specularPower); + }); +}; +var generateGGXSamplesTex = (device, numSamples, specularPower, sourceTotalPixels) => { + const key = `ggx-samples-${numSamples}-${specularPower}-${sourceTotalPixels}`; + return getCachedTexture(device, key, () => { + return generateGGXSamples(numSamples, specularPower, sourceTotalPixels); + }); +}; +var vsCode = ` +attribute vec2 vertex_position; + +uniform vec4 uvMod; + +varying vec2 vUv0; + +void main(void) { + gl_Position = vec4(vertex_position, 0.5, 1.0); + vUv0 = getImageEffectUV((vertex_position.xy * 0.5 + 0.5) * uvMod.xy + uvMod.zw); +} +`; +function reprojectTexture(source, target2, options = {}) { + var _options$seamPixels, _options$rect$z, _options$rect, _options$rect$w, _options$rect2; + if (source instanceof GraphicsDevice) { + source = arguments[1]; + target2 = arguments[2]; + options = {}; + if (arguments[3] !== void 0) { + options.specularPower = arguments[3]; + } + if (arguments[4] !== void 0) { + options.numSamples = arguments[4]; + } + } + const seamPixels = (_options$seamPixels = options.seamPixels) != null ? _options$seamPixels : 0; + const innerWidth = ((_options$rect$z = (_options$rect = options.rect) == null ? void 0 : _options$rect.z) != null ? _options$rect$z : target2.width) - seamPixels * 2; + const innerHeight = ((_options$rect$w = (_options$rect2 = options.rect) == null ? void 0 : _options$rect2.w) != null ? _options$rect$w : target2.height) - seamPixels * 2; + if (innerWidth < 1 || innerHeight < 1) { + return false; + } + const funcNames = { + "none": "reproject", + "lambert": "prefilterSamplesUnweighted", + "phong": "prefilterSamplesUnweighted", + "ggx": "prefilterSamples" + }; + const specularPower = options.hasOwnProperty("specularPower") ? options.specularPower : 1; + const face = options.hasOwnProperty("face") ? options.face : null; + const distribution = options.hasOwnProperty("distribution") ? options.distribution : specularPower === 1 ? "none" : "phong"; + const processFunc = funcNames[distribution] || "reproject"; + const prefilterSamples = processFunc.startsWith("prefilterSamples"); + const decodeFunc = ChunkUtils.decodeFunc(source.encoding); + const encodeFunc = ChunkUtils.encodeFunc(target2.encoding); + const sourceFunc = `sample${getProjectionName(source.projection)}`; + const targetFunc = `getDirection${getProjectionName(target2.projection)}`; + const numSamples = options.hasOwnProperty("numSamples") ? options.numSamples : 1024; + const shaderKey = `${processFunc}_${decodeFunc}_${encodeFunc}_${sourceFunc}_${targetFunc}_${numSamples}`; + const device = source.device; + let shader = getProgramLibrary(device).getCachedShader(shaderKey); + if (!shader) { + const defines = `#define PROCESS_FUNC ${processFunc} +` + (prefilterSamples ? `#define USE_SAMPLES_TEX +` : "") + (source.cubemap ? `#define CUBEMAP_SOURCE +` : "") + `#define DECODE_FUNC ${decodeFunc} +#define ENCODE_FUNC ${encodeFunc} +#define SOURCE_FUNC ${sourceFunc} +#define TARGET_FUNC ${targetFunc} +#define NUM_SAMPLES ${numSamples} +#define NUM_SAMPLES_SQRT ${Math.round(Math.sqrt(numSamples)).toFixed(1)} +`; + shader = createShaderFromCode(device, vsCode, `${defines} +${shaderChunks.reprojectPS}`, shaderKey); + } + device.setBlendState(BlendState.NOBLEND); + const constantSource = device.scope.resolve(source.cubemap ? "sourceCube" : "sourceTex"); + constantSource.setValue(source); + const constantParams = device.scope.resolve("params"); + device.scope.resolve("params2"); + const uvModParam = device.scope.resolve("uvMod"); + if (seamPixels > 0) { + uvModParam.setValue([(innerWidth + seamPixels * 2) / innerWidth, (innerHeight + seamPixels * 2) / innerHeight, -seamPixels / innerWidth, -seamPixels / innerHeight]); + } else { + uvModParam.setValue([1, 1, 0, 0]); + } + const params = [0, source.fixCubemapSeams ? 1 / source.width : 0, target2.fixCubemapSeams ? 1 / target2.width : 0]; + if (prefilterSamples) { + const sourceTotalPixels = source.width * source.height * (source.cubemap ? 6 : 1); + const samplesTex = distribution === "ggx" ? generateGGXSamplesTex(device, numSamples, specularPower, sourceTotalPixels) : distribution === "lambert" ? generateLambertSamplesTex(device, numSamples, sourceTotalPixels) : generatePhongSamplesTex(device, numSamples, specularPower); + device.scope.resolve("samplesTex").setValue(samplesTex); + device.scope.resolve("samplesTexInverseSize").setValue([1 / samplesTex.width, 1 / samplesTex.height]); + } + for (let f = 0; f < (target2.cubemap ? 6 : 1); f++) { + if (face === null || f === face) { + var _options; + const renderTarget = new RenderTarget({ + colorBuffer: target2, + face: f, + depth: false, + flipY: device.isWebGPU + }); + params[0] = f; + constantParams.setValue(params); + drawQuadWithShader(device, renderTarget, shader, (_options = options) == null ? void 0 : _options.rect); + renderTarget.destroy(); + } + } + return true; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/env-lighting.js +var fixCubemapSeams = true; +var calcLevels = (width, height = 0) => { + return 1 + Math.floor(Math.log2(Math.max(width, height))); +}; +var supportsFloat16 = (device) => { + return device.extTextureHalfFloat && device.textureHalfFloatRenderable; +}; +var supportsFloat32 = (device) => { + return device.extTextureFloat && device.textureFloatRenderable; +}; +var lightingSourcePixelFormat = (device) => { + return supportsFloat16(device) ? PIXELFORMAT_RGBA16F : supportsFloat32(device) ? PIXELFORMAT_RGBA32F : PIXELFORMAT_RGBA8; +}; +var lightingPixelFormat = (device) => { + return PIXELFORMAT_RGBA8; +}; +var createCubemap = (device, size, format, mipmaps) => { + return new Texture(device, { + name: `lighting-${size}`, + cubemap: true, + width: size, + height: size, + format, + type: format === PIXELFORMAT_RGBA8 ? TEXTURETYPE_RGBP : TEXTURETYPE_DEFAULT, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + fixCubemapSeams, + mipmaps: !!mipmaps + }); +}; +var EnvLighting = class { + static generateSkyboxCubemap(source, size) { + const device = source.device; + const result = createCubemap(device, size || (source.cubemap ? source.width : source.width / 4), PIXELFORMAT_RGBA8, false); + reprojectTexture(source, result, { + numSamples: 1024 + }); + return result; + } + static generateLightingSource(source, options) { + const device = source.device; + const format = lightingSourcePixelFormat(device); + const result = (options == null ? void 0 : options.target) || new Texture(device, { + name: `lighting-source`, + cubemap: true, + width: (options == null ? void 0 : options.size) || 128, + height: (options == null ? void 0 : options.size) || 128, + format, + type: format === PIXELFORMAT_RGBA8 ? TEXTURETYPE_RGBP : TEXTURETYPE_DEFAULT, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + fixCubemapSeams: false, + mipmaps: true + }); + reprojectTexture(source, result, { + numSamples: source.mipmaps ? 1 : 1024 + }); + return result; + } + static generateAtlas(source, options) { + const device = source.device; + const format = lightingPixelFormat(); + const result = (options == null ? void 0 : options.target) || new Texture(device, { + name: "envAtlas", + width: (options == null ? void 0 : options.size) || 512, + height: (options == null ? void 0 : options.size) || 512, + format, + type: TEXTURETYPE_RGBP, + projection: TEXTUREPROJECTION_EQUIRECT, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + mipmaps: false + }); + const s = result.width / 512; + const rect = new Vec4(0, 0, 512 * s, 256 * s); + const levels = calcLevels(256) - calcLevels(4); + for (let i = 0; i < levels; ++i) { + reprojectTexture(source, result, { + numSamples: 1, + rect, + seamPixels: s + }); + rect.x += rect.w; + rect.y += rect.w; + rect.z = Math.max(1, Math.floor(rect.z * 0.5)); + rect.w = Math.max(1, Math.floor(rect.w * 0.5)); + } + rect.set(0, 256 * s, 256 * s, 128 * s); + for (let i = 1; i < 7; ++i) { + reprojectTexture(source, result, { + numSamples: (options == null ? void 0 : options.numReflectionSamples) || 1024, + distribution: (options == null ? void 0 : options.distribution) || "ggx", + specularPower: Math.max(1, 2048 >> i * 2), + rect, + seamPixels: s + }); + rect.y += rect.w; + rect.z = Math.max(1, Math.floor(rect.z * 0.5)); + rect.w = Math.max(1, Math.floor(rect.w * 0.5)); + } + rect.set(128 * s, (256 + 128) * s, 64 * s, 32 * s); + reprojectTexture(source, result, { + numSamples: (options == null ? void 0 : options.numAmbientSamples) || 2048, + distribution: "lambert", + rect, + seamPixels: s + }); + return result; + } + static generatePrefilteredAtlas(sources, options) { + const device = sources[0].device; + const format = sources[0].format; + const type2 = sources[0].type; + const result = (options == null ? void 0 : options.target) || new Texture(device, { + name: "envPrefilteredAtlas", + width: (options == null ? void 0 : options.size) || 512, + height: (options == null ? void 0 : options.size) || 512, + format, + type: type2, + projection: TEXTUREPROJECTION_EQUIRECT, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + mipmaps: false + }); + const s = result.width / 512; + const rect = new Vec4(0, 0, 512 * s, 256 * s); + const levels = calcLevels(512); + for (let i = 0; i < levels; ++i) { + reprojectTexture(sources[0], result, { + numSamples: 1, + rect, + seamPixels: s + }); + rect.x += rect.w; + rect.y += rect.w; + rect.z = Math.max(1, Math.floor(rect.z * 0.5)); + rect.w = Math.max(1, Math.floor(rect.w * 0.5)); + } + rect.set(0, 256 * s, 256 * s, 128 * s); + for (let i = 1; i < sources.length; ++i) { + reprojectTexture(sources[i], result, { + numSamples: 1, + rect, + seamPixels: s + }); + rect.y += rect.w; + rect.z = Math.max(1, Math.floor(rect.z * 0.5)); + rect.w = Math.max(1, Math.floor(rect.w * 0.5)); + } + rect.set(128 * s, (256 + 128) * s, 64 * s, 32 * s); + if (options != null && options.legacyAmbient) { + reprojectTexture(sources[5], result, { + numSamples: 1, + rect, + seamPixels: s + }); + } else { + reprojectTexture(sources[0], result, { + numSamples: (options == null ? void 0 : options.numSamples) || 2048, + distribution: "lambert", + rect, + seamPixels: s + }); + } + return result; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/scene.js +var Scene = class extends EventHandler { + constructor(graphicsDevice) { + super(); + this.ambientBake = false; + this.ambientBakeOcclusionBrightness = 0; + this.ambientBakeOcclusionContrast = 0; + this.ambientLight = new Color(0, 0, 0); + this.ambientLuminance = 0; + this.exposure = 1; + this.fogColor = new Color(0, 0, 0); + this.fogDensity = 0; + this.fogEnd = 1e3; + this.fogStart = 1; + this.lightmapSizeMultiplier = 1; + this.lightmapMaxResolution = 2048; + this.lightmapMode = BAKE_COLORDIR; + this.lightmapFilterEnabled = false; + this.lightmapHDR = false; + this.root = null; + this.physicalUnits = false; + this._envAtlas = null; + this._skyboxCubeMap = null; + this.device = graphicsDevice; + this._gravity = new Vec3(0, -9.8, 0); + this._layers = null; + this._fog = FOG_NONE; + this._gammaCorrection = GAMMA_SRGB; + this._toneMapping = 0; + this._prefilteredCubemaps = []; + this._internalEnvAtlas = null; + this._skyboxIntensity = 1; + this._skyboxLuminance = 0; + this._skyboxMip = 0; + this._skyboxRotationShaderInclude = false; + this._skyboxRotation = new Quat2(); + this._skyboxRotationMat3 = new Mat3(); + this._skyboxRotationMat4 = new Mat4(); + this._ambientBakeNumSamples = 1; + this._ambientBakeSpherePart = 0.4; + this._lightmapFilterRange = 10; + this._lightmapFilterSmoothness = 0.2; + this._clusteredLightingEnabled = true; + this._lightingParams = new LightingParams(this.device.supportsAreaLights, this.device.maxTextureSize, () => { + this.updateShaders = true; + }); + this._sky = new Sky(this); + this._stats = { + meshInstances: 0, + lights: 0, + dynamicLights: 0, + bakedLights: 0, + updateShadersTime: 0 + }; + this.updateShaders = true; + this._shaderVersion = 0; + this.immediate = new Immediate(this.device); + } + get defaultDrawLayer() { + return this.layers.getLayerById(LAYERID_IMMEDIATE); + } + set ambientBakeNumSamples(value) { + this._ambientBakeNumSamples = math.clamp(Math.floor(value), 1, 255); + } + get ambientBakeNumSamples() { + return this._ambientBakeNumSamples; + } + set ambientBakeSpherePart(value) { + this._ambientBakeSpherePart = math.clamp(value, 1e-3, 1); + } + get ambientBakeSpherePart() { + return this._ambientBakeSpherePart; + } + set clusteredLightingEnabled(value) { + if (this.device.isWebGPU && !value) { + return; + } + if (!this._clusteredLightingEnabled && value) { + console.error("Turning on disabled clustered lighting is not currently supported"); + return; + } + this._clusteredLightingEnabled = value; + } + get clusteredLightingEnabled() { + return this._clusteredLightingEnabled; + } + set envAtlas(value) { + if (value !== this._envAtlas) { + this._envAtlas = value; + if (value) { + value.addressU = ADDRESS_CLAMP_TO_EDGE; + value.addressV = ADDRESS_CLAMP_TO_EDGE; + value.minFilter = FILTER_LINEAR; + value.magFilter = FILTER_LINEAR; + value.mipmaps = false; + } + this._prefilteredCubemaps = []; + if (this._internalEnvAtlas) { + this._internalEnvAtlas.destroy(); + this._internalEnvAtlas = null; + } + this._resetSkyMesh(); + } + } + get envAtlas() { + return this._envAtlas; + } + set fog(type2) { + if (type2 !== this._fog) { + this._fog = type2; + this.updateShaders = true; + } + } + get fog() { + return this._fog; + } + set gammaCorrection(value) { + if (value !== this._gammaCorrection) { + this._gammaCorrection = value; + this.updateShaders = true; + } + } + get gammaCorrection() { + return this._gammaCorrection; + } + set layers(layers) { + const prev = this._layers; + this._layers = layers; + this.fire("set:layers", prev, layers); + } + get layers() { + return this._layers; + } + get sky() { + return this._sky; + } + get lighting() { + return this._lightingParams; + } + set lightmapFilterRange(value) { + this._lightmapFilterRange = Math.max(value, 1e-3); + } + get lightmapFilterRange() { + return this._lightmapFilterRange; + } + set lightmapFilterSmoothness(value) { + this._lightmapFilterSmoothness = Math.max(value, 1e-3); + } + get lightmapFilterSmoothness() { + return this._lightmapFilterSmoothness; + } + set prefilteredCubemaps(value) { + value = value || []; + const cubemaps = this._prefilteredCubemaps; + const changed = cubemaps.length !== value.length || cubemaps.some((c2, i) => c2 !== value[i]); + if (changed) { + const complete = value.length === 6 && value.every((c2) => !!c2); + if (complete) { + this._internalEnvAtlas = EnvLighting.generatePrefilteredAtlas(value, { + target: this._internalEnvAtlas + }); + this._envAtlas = this._internalEnvAtlas; + } else { + if (this._internalEnvAtlas) { + this._internalEnvAtlas.destroy(); + this._internalEnvAtlas = null; + } + this._envAtlas = null; + } + this._prefilteredCubemaps = value.slice(); + this._resetSkyMesh(); + } + } + get prefilteredCubemaps() { + return this._prefilteredCubemaps; + } + set skybox(value) { + if (value !== this._skyboxCubeMap) { + this._skyboxCubeMap = value; + this._resetSkyMesh(); + } + } + get skybox() { + return this._skyboxCubeMap; + } + set skyboxIntensity(value) { + if (value !== this._skyboxIntensity) { + this._skyboxIntensity = value; + this._resetSkyMesh(); + } + } + get skyboxIntensity() { + return this._skyboxIntensity; + } + set skyboxLuminance(value) { + if (value !== this._skyboxLuminance) { + this._skyboxLuminance = value; + this._resetSkyMesh(); + } + } + get skyboxLuminance() { + return this._skyboxLuminance; + } + set skyboxMip(value) { + if (value !== this._skyboxMip) { + this._skyboxMip = value; + this._resetSkyMesh(); + } + } + get skyboxMip() { + return this._skyboxMip; + } + set skyboxRotation(value) { + if (!this._skyboxRotation.equals(value)) { + const isIdentity = value.equals(Quat2.IDENTITY); + this._skyboxRotation.copy(value); + if (isIdentity) { + this._skyboxRotationMat3.setIdentity(); + } else { + this._skyboxRotationMat4.setTRS(Vec3.ZERO, value, Vec3.ONE); + this._skyboxRotationMat3.invertMat4(this._skyboxRotationMat4); + } + if (!this._skyboxRotationShaderInclude && !isIdentity) { + this._skyboxRotationShaderInclude = true; + this._resetSkyMesh(); + } + } + } + get skyboxRotation() { + return this._skyboxRotation; + } + set toneMapping(value) { + if (value !== this._toneMapping) { + this._toneMapping = value; + this.updateShaders = true; + } + } + get toneMapping() { + return this._toneMapping; + } + destroy() { + this._resetSkyMesh(); + this.root = null; + this.off(); + } + drawLine(start, end, color = Color.WHITE, depthTest = true, layer = this.defaultDrawLayer) { + const batch = this.immediate.getBatch(layer, depthTest); + batch.addLines([start, end], [color, color]); + } + drawLines(positions, colors, depthTest = true, layer = this.defaultDrawLayer) { + const batch = this.immediate.getBatch(layer, depthTest); + batch.addLines(positions, colors); + } + drawLineArrays(positions, colors, depthTest = true, layer = this.defaultDrawLayer) { + const batch = this.immediate.getBatch(layer, depthTest); + batch.addLinesArrays(positions, colors); + } + applySettings(settings) { + var _render$skyboxIntensi, _render$skyboxLuminan, _render$skyboxMip, _render$clusteredLigh; + const physics = settings.physics; + const render = settings.render; + this._gravity.set(physics.gravity[0], physics.gravity[1], physics.gravity[2]); + this.ambientLight.set(render.global_ambient[0], render.global_ambient[1], render.global_ambient[2]); + this.ambientLuminance = render.ambientLuminance; + this._fog = render.fog; + this.fogColor.set(render.fog_color[0], render.fog_color[1], render.fog_color[2]); + this.fogStart = render.fog_start; + this.fogEnd = render.fog_end; + this.fogDensity = render.fog_density; + this._gammaCorrection = render.gamma_correction; + this._toneMapping = render.tonemapping; + this.lightmapSizeMultiplier = render.lightmapSizeMultiplier; + this.lightmapMaxResolution = render.lightmapMaxResolution; + this.lightmapMode = render.lightmapMode; + this.exposure = render.exposure; + this._skyboxIntensity = (_render$skyboxIntensi = render.skyboxIntensity) != null ? _render$skyboxIntensi : 1; + this._skyboxLuminance = (_render$skyboxLuminan = render.skyboxLuminance) != null ? _render$skyboxLuminan : 2e4; + this._skyboxMip = (_render$skyboxMip = render.skyboxMip) != null ? _render$skyboxMip : 0; + if (render.skyboxRotation) { + this.skyboxRotation = new Quat2().setFromEulerAngles(render.skyboxRotation[0], render.skyboxRotation[1], render.skyboxRotation[2]); + } + this.sky.applySettings(render); + this.clusteredLightingEnabled = (_render$clusteredLigh = render.clusteredLightingEnabled) != null ? _render$clusteredLigh : false; + this.lighting.applySettings(render); + ["lightmapFilterEnabled", "lightmapFilterRange", "lightmapFilterSmoothness", "ambientBake", "ambientBakeNumSamples", "ambientBakeSpherePart", "ambientBakeOcclusionBrightness", "ambientBakeOcclusionContrast"].forEach((setting) => { + if (render.hasOwnProperty(setting)) { + this[setting] = render[setting]; + } + }); + this._resetSkyMesh(); + } + _getSkyboxTex() { + const cubemaps = this._prefilteredCubemaps; + if (this._skyboxMip) { + const skyboxMapping = [0, 1, 3, 4, 5, 6]; + return cubemaps[skyboxMapping[this._skyboxMip]] || this._envAtlas || cubemaps[0] || this._skyboxCubeMap; + } + return this._skyboxCubeMap || cubemaps[0] || this._envAtlas; + } + _updateSkyMesh() { + if (!this.sky.skyMesh) { + this.sky.updateSkyMesh(); + } + this.sky.update(); + } + _resetSkyMesh() { + this.sky.resetSkyMesh(); + this.updateShaders = true; + } + setSkybox(cubemaps) { + if (!cubemaps) { + this.skybox = null; + this.envAtlas = null; + } else { + this.skybox = cubemaps[0] || null; + if (cubemaps[1] && !cubemaps[1].cubemap) { + this.envAtlas = cubemaps[1]; + } else { + this.prefilteredCubemaps = cubemaps.slice(1); + } + } + } + get lightmapPixelFormat() { + return this.lightmapHDR && this.device.getRenderableHdrFormat() || PIXELFORMAT_RGBA8; + } +}; +Scene.EVENT_SETLAYERS = "set:layers"; +Scene.EVENT_SETSKYBOX = "set:skybox"; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/skin.js +var Skin = class { + constructor(graphicsDevice, ibp, boneNames) { + this.device = graphicsDevice; + this.inverseBindPose = ibp; + this.boneNames = boneNames; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/materials/standard-material-options.js +var StandardMaterialOptions = class { + constructor() { + this.forceUv1 = false; + this.ambientTint = false; + this.diffuseTint = false; + this.specularTint = false; + this.metalnessTint = false; + this.glossTint = false; + this.emissiveTint = false; + this.opacityTint = false; + this.emissiveEncoding = "linear"; + this.lightMapEncoding = "linear"; + this.packedNormal = false; + this.glossInvert = false; + this.sheenGlossInvert = false; + this.clearCoatGlossInvert = false; + this.litOptions = new LitShaderOptions(); + } + get pass() { + return this.litOptions.pass; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/standard.js +var _matTex2D = []; +var buildPropertiesList = (options) => { + return Object.keys(options).filter((key) => key !== "litOptions").sort(); +}; +var ShaderGeneratorStandard = class extends ShaderGenerator { + constructor(...args) { + super(...args); + this.optionsContext = new StandardMaterialOptions(); + this.optionsContextMin = new StandardMaterialOptions(); + } + generateKey(options) { + let props; + if (options === this.optionsContextMin) { + if (!this.propsMin) this.propsMin = buildPropertiesList(options); + props = this.propsMin; + } else if (options === this.optionsContext) { + if (!this.props) this.props = buildPropertiesList(options); + props = this.props; + } else { + props = buildPropertiesList(options); + } + const key = "standard:\n" + props.map((prop) => prop + options[prop]).join("\n") + LitOptionsUtils.generateKey(options.litOptions); + return key; + } + _getUvSourceExpression(transformPropName, uVPropName, options) { + const transformId = options[transformPropName]; + const uvChannel = options[uVPropName]; + const isMainPass = options.litOptions.pass === SHADER_FORWARD || options.litOptions.pass === SHADER_FORWARDHDR; + let expression; + if (isMainPass && options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_SLICED) { + expression = "nineSlicedUv"; + } else if (isMainPass && options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_TILED) { + expression = "nineSlicedUv"; + } else { + if (transformId === 0) { + expression = "vUv" + uvChannel; + } else { + expression = "vUV" + uvChannel + "_" + transformId; + } + if (options.heightMap && transformPropName !== "heightMapTransform") { + expression += " + dUvOffset"; + } + } + return expression; + } + _addMapDef(name, enabled) { + return enabled ? `#define ${name} +` : `#undef ${name} +`; + } + _addMapDefs(float, color, vertex, map, invert) { + return this._addMapDef("MAPFLOAT", float) + this._addMapDef("MAPCOLOR", color) + this._addMapDef("MAPVERTEX", vertex) + this._addMapDef("MAPTEXTURE", map) + this._addMapDef("MAPINVERT", invert); + } + _addMap(propName, chunkName, options, chunks, mapping, encoding = null) { + const mapPropName = propName + "Map"; + const uVPropName = mapPropName + "Uv"; + const identifierPropName = mapPropName + "Identifier"; + const transformPropName = mapPropName + "Transform"; + const channelPropName = mapPropName + "Channel"; + const vertexColorChannelPropName = propName + "VertexColorChannel"; + const tintPropName = propName + "Tint"; + const vertexColorPropName = propName + "VertexColor"; + const detailModePropName = propName + "Mode"; + const invertName = propName + "Invert"; + const tintOption = options[tintPropName]; + const vertexColorOption = options[vertexColorPropName]; + const textureOption = options[mapPropName]; + const textureIdentifier = options[identifierPropName]; + const detailModeOption = options[detailModePropName]; + let subCode = chunks[chunkName]; + if (textureOption) { + const uv = this._getUvSourceExpression(transformPropName, uVPropName, options); + subCode = subCode.replace(/\$UV/g, uv).replace(/\$CH/g, options[channelPropName]); + if (mapping && subCode.search(/\$SAMPLER/g) !== -1) { + let samplerName = "texture_" + mapPropName; + const alias = mapping[textureIdentifier]; + if (alias) { + samplerName = alias; + } else { + mapping[textureIdentifier] = samplerName; + } + subCode = subCode.replace(/\$SAMPLER/g, samplerName); + } + if (encoding) { + if (options[channelPropName] === "aaa") { + subCode = subCode.replace(/\$DECODE/g, "passThrough"); + } else { + subCode = subCode.replace(/\$DECODE/g, ChunkUtils.decodeFunc(!options.litOptions.gamma && encoding === "srgb" ? "linear" : encoding)); + } + if (subCode.indexOf("$texture2DSAMPLE")) { + const decodeTable2 = { + linear: "texture2D", + srgb: "texture2DSRGB", + rgbm: "texture2DRGBM", + rgbe: "texture2DRGBE" + }; + subCode = subCode.replace(/\$texture2DSAMPLE/g, decodeTable2[encoding] || "texture2D"); + } + } + } + if (vertexColorOption) { + subCode = subCode.replace(/\$VC/g, options[vertexColorChannelPropName]); + } + if (detailModeOption) { + subCode = subCode.replace(/\$DETAILMODE/g, detailModeOption); + } + const isFloatTint = !!(tintOption & 1); + const isVecTint = !!(tintOption & 2); + const invertOption = !!options[invertName]; + subCode = this._addMapDefs(isFloatTint, isVecTint, vertexColorOption, textureOption, invertOption) + subCode; + return subCode.replace(/\$/g, ""); + } + _correctChannel(p, chan, _matTex2D2) { + if (_matTex2D2[p] > 0) { + if (_matTex2D2[p] < chan.length) { + return chan.substring(0, _matTex2D2[p]); + } else if (_matTex2D2[p] > chan.length) { + let str = chan; + const chr = str.charAt(str.length - 1); + const addLen = _matTex2D2[p] - str.length; + for (let i = 0; i < addLen; i++) str += chr; + return str; + } + return chan; + } + } + createShaderDefinition(device, options) { + const shaderPassInfo = ShaderPass.get(device).getByIndex(options.litOptions.pass); + const isForwardPass = shaderPassInfo.isForward; + const litShader = new LitShader(device, options.litOptions); + const useUv = []; + const useUnmodifiedUv = []; + const mapTransforms = []; + const maxUvSets = 2; + const textureMapping = {}; + for (const p in _matTex2D) { + const mname = p + "Map"; + if (options[p + "VertexColor"]) { + const cname = p + "VertexColorChannel"; + options[cname] = this._correctChannel(p, options[cname], _matTex2D); + } + if (options[mname]) { + const cname = mname + "Channel"; + const tname = mname + "Transform"; + const uname = mname + "Uv"; + options[uname] = Math.min(options[uname], maxUvSets - 1); + options[cname] = this._correctChannel(p, options[cname], _matTex2D); + const uvSet = options[uname]; + useUv[uvSet] = true; + useUnmodifiedUv[uvSet] = useUnmodifiedUv[uvSet] || options[mname] && !options[tname]; + if (options[tname]) { + mapTransforms.push({ + name: p, + id: options[tname], + uv: options[uname] + }); + } + } + } + if (options.forceUv1) { + useUv[1] = true; + useUnmodifiedUv[1] = useUnmodifiedUv[1] !== void 0 ? useUnmodifiedUv[1] : true; + } + litShader.generateVertexShader(useUv, useUnmodifiedUv, mapTransforms); + if (options.litOptions.shadingModel === SPECULAR_PHONG) { + options.litOptions.fresnelModel = 0; + options.litOptions.ambientSH = false; + } else { + options.litOptions.fresnelModel = options.litOptions.fresnelModel === 0 ? FRESNEL_SCHLICK : options.litOptions.fresnelModel; + } + const decl = new ChunkBuilder(); + const code = new ChunkBuilder(); + const func = new ChunkBuilder(); + const args = new ChunkBuilder(); + let lightingUv = ""; + if (options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_TILED) { + decl.append(`const float textureBias = -1000.0;`); + } else { + decl.append(`uniform float textureBias;`); + } + if (isForwardPass) { + if (options.heightMap) { + decl.append("vec2 dUvOffset;"); + code.append(this._addMap("height", "parallaxPS", options, litShader.chunks, textureMapping)); + func.append("getParallax();"); + } + if (options.litOptions.blendType !== BLEND_NONE || options.litOptions.alphaTest || options.litOptions.alphaToCoverage || options.litOptions.opacityDither !== DITHER_NONE) { + decl.append("float dAlpha;"); + code.append(this._addMap("opacity", "opacityPS", options, litShader.chunks, textureMapping)); + func.append("getOpacity();"); + args.append("litArgs_opacity = dAlpha;"); + if (options.litOptions.alphaTest) { + code.append(litShader.chunks.alphaTestPS); + func.append("alphaTest(dAlpha);"); + } + const opacityDither = options.litOptions.opacityDither; + if (opacityDither !== DITHER_NONE) { + if (opacityDither === DITHER_BAYER8) decl.append(litShader.chunks.bayerPS); + decl.append(`#define DITHER_${opacityDither.toUpperCase()} +`); + decl.append(litShader.chunks.opacityDitherPS); + func.append("opacityDither(dAlpha, 0.0);"); + } + } else { + decl.append("float dAlpha = 1.0;"); + } + if (litShader.needsNormal) { + if (options.normalMap || options.clearCoatNormalMap) { + code.append(options.packedNormal ? litShader.chunks.normalXYPS : litShader.chunks.normalXYZPS); + if (!options.litOptions.hasTangents) { + const baseName = options.normalMap ? "normalMap" : "clearCoatNormalMap"; + lightingUv = this._getUvSourceExpression(`${baseName}Transform`, `${baseName}Uv`, options); + } + } + decl.append("vec3 dNormalW;"); + code.append(this._addMap("normalDetail", "normalDetailMapPS", options, litShader.chunks, textureMapping)); + code.append(this._addMap("normal", "normalMapPS", options, litShader.chunks, textureMapping)); + func.append("getNormal();"); + args.append("litArgs_worldNormal = dNormalW;"); + } + if (litShader.needsSceneColor) { + decl.append("uniform sampler2D uSceneColorMap;"); + } + if (litShader.needsScreenSize) { + decl.append("uniform vec4 uScreenSize;"); + } + if (litShader.needsTransforms) { + decl.append("uniform mat4 matrix_viewProjection;"); + decl.append("uniform mat4 matrix_model;"); + } + if (options.diffuseDetail || options.aoDetail) { + code.append(litShader.chunks.detailModesPS); + } + decl.append("vec3 dAlbedo;"); + if (options.diffuseDetail) { + code.append(this._addMap("diffuseDetail", "diffuseDetailMapPS", options, litShader.chunks, textureMapping, options.diffuseDetailEncoding)); + } + code.append(this._addMap("diffuse", "diffusePS", options, litShader.chunks, textureMapping, options.diffuseEncoding)); + func.append("getAlbedo();"); + args.append("litArgs_albedo = dAlbedo;"); + if (options.litOptions.useRefraction) { + decl.append("float dTransmission;"); + code.append(this._addMap("refraction", "transmissionPS", options, litShader.chunks, textureMapping)); + func.append("getRefraction();"); + args.append("litArgs_transmission = dTransmission;"); + decl.append("float dThickness;"); + code.append(this._addMap("thickness", "thicknessPS", options, litShader.chunks, textureMapping)); + func.append("getThickness();"); + args.append("litArgs_thickness = dThickness;"); + if (options.litOptions.dispersion) { + args.append("litArgs_dispersion = material_dispersion;"); + } + } + if (options.litOptions.useIridescence) { + decl.append("float dIridescence;"); + code.append(this._addMap("iridescence", "iridescencePS", options, litShader.chunks, textureMapping)); + func.append("getIridescence();"); + args.append("litArgs_iridescence_intensity = dIridescence;"); + decl.append("float dIridescenceThickness;"); + code.append(this._addMap("iridescenceThickness", "iridescenceThicknessPS", options, litShader.chunks, textureMapping)); + func.append("getIridescenceThickness();"); + args.append("litArgs_iridescence_thickness = dIridescenceThickness;"); + } + if (litShader.lighting && options.litOptions.useSpecular || litShader.reflections) { + decl.append("vec3 dSpecularity;"); + decl.append("float dGlossiness;"); + if (options.litOptions.useSheen) { + decl.append("vec3 sSpecularity;"); + code.append(this._addMap("sheen", "sheenPS", options, litShader.chunks, textureMapping, options.sheenEncoding)); + func.append("getSheen();"); + args.append("litArgs_sheen_specularity = sSpecularity;"); + decl.append("float sGlossiness;"); + code.append(this._addMap("sheenGloss", "sheenGlossPS", options, litShader.chunks, textureMapping)); + func.append("getSheenGlossiness();"); + args.append("litArgs_sheen_gloss = sGlossiness;"); + } + if (options.litOptions.useMetalness) { + decl.append("float dMetalness;"); + code.append(this._addMap("metalness", "metalnessPS", options, litShader.chunks, textureMapping)); + func.append("getMetalness();"); + args.append("litArgs_metalness = dMetalness;"); + decl.append("float dIor;"); + code.append(this._addMap("ior", "iorPS", options, litShader.chunks, textureMapping)); + func.append("getIor();"); + args.append("litArgs_ior = dIor;"); + } + if (options.litOptions.useSpecularityFactor) { + decl.append("float dSpecularityFactor;"); + code.append(this._addMap("specularityFactor", "specularityFactorPS", options, litShader.chunks, textureMapping)); + func.append("getSpecularityFactor();"); + args.append("litArgs_specularityFactor = dSpecularityFactor;"); + } + if (options.useSpecularColor) { + code.append(this._addMap("specular", "specularPS", options, litShader.chunks, textureMapping, options.specularEncoding)); + } else { + code.append("void getSpecularity() { dSpecularity = vec3(1); }"); + } + code.append(this._addMap("gloss", "glossPS", options, litShader.chunks, textureMapping)); + func.append("getGlossiness();"); + func.append("getSpecularity();"); + args.append("litArgs_specularity = dSpecularity;"); + args.append("litArgs_gloss = dGlossiness;"); + } else { + decl.append("vec3 dSpecularity = vec3(0.0);"); + decl.append("float dGlossiness = 0.0;"); + } + if (options.aoDetail) { + code.append(this._addMap("aoDetail", "aoDetailMapPS", options, litShader.chunks, textureMapping)); + } + if (options.aoMap || options.aoVertexColor) { + decl.append("float dAo;"); + code.append(this._addMap("ao", "aoPS", options, litShader.chunks, textureMapping)); + func.append("getAO();"); + args.append("litArgs_ao = dAo;"); + } + decl.append("vec3 dEmission;"); + code.append(this._addMap("emissive", "emissivePS", options, litShader.chunks, textureMapping, options.emissiveEncoding)); + func.append("getEmission();"); + args.append("litArgs_emission = dEmission;"); + if (options.litOptions.useClearCoat) { + decl.append("float ccSpecularity;"); + decl.append("float ccGlossiness;"); + decl.append("vec3 ccNormalW;"); + code.append(this._addMap("clearCoat", "clearCoatPS", options, litShader.chunks, textureMapping)); + code.append(this._addMap("clearCoatGloss", "clearCoatGlossPS", options, litShader.chunks, textureMapping)); + code.append(this._addMap("clearCoatNormal", "clearCoatNormalPS", options, litShader.chunks, textureMapping)); + func.append("getClearCoat();"); + func.append("getClearCoatGlossiness();"); + func.append("getClearCoatNormal();"); + args.append("litArgs_clearcoat_specularity = ccSpecularity;"); + args.append("litArgs_clearcoat_gloss = ccGlossiness;"); + args.append("litArgs_clearcoat_worldNormal = ccNormalW;"); + } + if (options.lightMap || options.lightVertexColor) { + const lightmapDir = options.dirLightMap && options.litOptions.useSpecular; + const lightmapChunkPropName = lightmapDir ? "lightmapDirPS" : "lightmapSinglePS"; + decl.append("vec3 dLightmap;"); + if (lightmapDir) { + decl.append("vec3 dLightmapDir;"); + } + code.append(this._addMap("light", lightmapChunkPropName, options, litShader.chunks, textureMapping, options.lightMapEncoding)); + func.append("getLightMap();"); + args.append("litArgs_lightmap = dLightmap;"); + if (lightmapDir) { + args.append("litArgs_lightmapDir = dLightmapDir;"); + } + } + if (code.code.indexOf("texture2DSRGB") !== -1 || code.code.indexOf("texture2DRGBM") !== -1 || code.code.indexOf("texture2DRGBE") !== -1) { + code.prepend(litShader.chunks.textureSamplePS); + } + } else { + const opacityShadowDither = options.litOptions.opacityShadowDither; + if (options.litOptions.alphaTest || opacityShadowDither) { + decl.append("float dAlpha;"); + code.append(this._addMap("opacity", "opacityPS", options, litShader.chunks, textureMapping)); + func.append("getOpacity();"); + args.append("litArgs_opacity = dAlpha;"); + if (options.litOptions.alphaTest) { + code.append(litShader.chunks.alphaTestPS); + func.append("alphaTest(dAlpha);"); + } + if (opacityShadowDither !== DITHER_NONE) { + if (opacityShadowDither === DITHER_BAYER8) decl.append(litShader.chunks.bayerPS); + decl.append(`#define DITHER_${opacityShadowDither.toUpperCase()} +`); + decl.append(litShader.chunks.opacityDitherPS); + func.append("opacityDither(dAlpha, 0.0);"); + } + } + } + decl.append(litShader.chunks.litShaderArgsPS); + code.append(`void evaluateFrontend() { +${func.code} +${args.code} + } +`); + func.code = `evaluateFrontend();`; + for (const texture in textureMapping) { + decl.append(`uniform sampler2D ${textureMapping[texture]};`); + } + func.code = ` +${func.code.split("\n").map((l) => ` ${l}`).join("\n")} + +`; + litShader.generateFragmentShader(decl.code, code.code, func.code, lightingUv); + return litShader.getDefinition(); + } +}; +var standard = new ShaderGeneratorStandard(); + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/materials/standard-material-options-builder.js +var arraysEqual = (a, b) => { + if (a.length !== b.length) { + return false; + } + for (let i = 0; i < a.length; ++i) { + if (a[i] !== b[i]) { + return false; + } + } + return true; +}; +var notWhite = (color) => { + return color.r !== 1 || color.g !== 1 || color.b !== 1; +}; +var notBlack = (color) => { + return color.r !== 0 || color.g !== 0 || color.b !== 0; +}; +var StandardMaterialOptionsBuilder = class { + constructor() { + this._mapXForms = null; + } + updateMinRef(options, scene2, stdMat, objDefs, pass, sortedLights) { + this._updateSharedOptions(options, scene2, stdMat, objDefs, pass); + this._updateMinOptions(options, stdMat, pass); + this._updateUVOptions(options, stdMat, objDefs, true); + } + updateRef(options, scene2, stdMat, objDefs, pass, sortedLights) { + this._updateSharedOptions(options, scene2, stdMat, objDefs, pass); + this._updateEnvOptions(options, stdMat, scene2); + this._updateMaterialOptions(options, stdMat); + if (pass === SHADER_FORWARDHDR) { + if (options.litOptions.gamma) options.litOptions.gamma = GAMMA_SRGBHDR; + options.litOptions.toneMap = TONEMAP_LINEAR; + } + options.litOptions.hasTangents = objDefs && (objDefs & SHADERDEF_TANGENTS) !== 0; + this._updateLightOptions(options, scene2, stdMat, objDefs, sortedLights); + this._updateUVOptions(options, stdMat, objDefs, false); + } + _updateSharedOptions(options, scene2, stdMat, objDefs, pass) { + options.forceUv1 = stdMat.forceUv1; + if (stdMat.userAttributes) { + options.litOptions.userAttributes = Object.fromEntries(stdMat.userAttributes.entries()); + } + options.litOptions.chunks = stdMat.chunks || {}; + options.litOptions.pass = pass; + options.litOptions.alphaTest = stdMat.alphaTest > 0; + options.litOptions.blendType = stdMat.blendType; + options.litOptions.screenSpace = objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0; + options.litOptions.skin = objDefs && (objDefs & SHADERDEF_SKIN) !== 0; + options.litOptions.useInstancing = objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0; + options.litOptions.useMorphPosition = objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0; + options.litOptions.useMorphNormal = objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0; + options.litOptions.useMorphTextureBased = objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED) !== 0; + options.litOptions.nineSlicedMode = stdMat.nineSlicedMode || 0; + if (scene2.clusteredLightingEnabled && stdMat.useLighting) { + options.litOptions.clusteredLightingEnabled = true; + options.litOptions.clusteredLightingCookiesEnabled = scene2.lighting.cookiesEnabled; + options.litOptions.clusteredLightingShadowsEnabled = scene2.lighting.shadowsEnabled; + options.litOptions.clusteredLightingShadowType = scene2.lighting.shadowType; + options.litOptions.clusteredLightingAreaLightsEnabled = scene2.lighting.areaLightsEnabled; + } else { + options.litOptions.clusteredLightingEnabled = false; + options.litOptions.clusteredLightingCookiesEnabled = false; + options.litOptions.clusteredLightingShadowsEnabled = false; + options.litOptions.clusteredLightingAreaLightsEnabled = false; + } + } + _updateUVOptions(options, stdMat, objDefs, minimalOptions) { + let hasUv0 = false; + let hasUv1 = false; + let hasVcolor = false; + if (objDefs) { + hasUv0 = (objDefs & SHADERDEF_UV0) !== 0; + hasUv1 = (objDefs & SHADERDEF_UV1) !== 0; + hasVcolor = (objDefs & SHADERDEF_VCOLOR) !== 0; + } + options.litOptions.vertexColors = false; + this._mapXForms = []; + const uniqueTextureMap = {}; + for (const p in _matTex2D) { + this._updateTexOptions(options, stdMat, p, hasUv0, hasUv1, hasVcolor, minimalOptions, uniqueTextureMap); + } + this._mapXForms = null; + options.litOptions.lightMapEnabled = options.lightMap; + options.litOptions.dirLightMapEnabled = options.dirLightMap; + options.litOptions.useHeights = options.heightMap; + options.litOptions.useNormals = options.normalMap; + options.litOptions.useClearCoatNormals = options.clearCoatNormalMap; + options.litOptions.useAo = options.aoMap || options.aoVertexColor; + options.litOptions.diffuseMapEnabled = options.diffuseMap; + } + _updateTexOptions(options, stdMat, p, hasUv0, hasUv1, hasVcolor, minimalOptions, uniqueTextureMap) { + const isOpacity = p === "opacity"; + if (!minimalOptions || isOpacity) { + const mname = p + "Map"; + const vname = p + "VertexColor"; + const vcname = p + "VertexColorChannel"; + const cname = mname + "Channel"; + const tname = mname + "Transform"; + const uname = mname + "Uv"; + const iname = mname + "Identifier"; + if (p !== "light") { + options[mname] = false; + options[iname] = void 0; + options[cname] = ""; + options[tname] = 0; + options[uname] = 0; + } + options[vname] = false; + options[vcname] = ""; + if (isOpacity && stdMat.blendType === BLEND_NONE && stdMat.alphaTest === 0 && !stdMat.alphaToCoverage && stdMat.opacityDither === DITHER_NONE) { + return; + } + if (p !== "height" && stdMat[vname]) { + if (hasVcolor) { + options[vname] = stdMat[vname]; + options[vcname] = stdMat[vcname]; + options.litOptions.vertexColors = true; + } + } + if (stdMat[mname]) { + let allow = true; + if (stdMat[uname] === 0 && !hasUv0) allow = false; + if (stdMat[uname] === 1 && !hasUv1) allow = false; + if (allow) { + const mapId = stdMat[mname].id; + let identifier = uniqueTextureMap[mapId]; + if (identifier === void 0) { + uniqueTextureMap[mapId] = p; + identifier = p; + } + options[mname] = !!stdMat[mname]; + options[iname] = identifier; + options[tname] = this._getMapTransformID(stdMat.getUniform(tname), stdMat[uname]); + options[cname] = stdMat[cname]; + options[uname] = stdMat[uname]; + } + } + } + } + _updateMinOptions(options, stdMat, pass) { + options.opacityTint = stdMat.blendType !== BLEND_NONE || stdMat.opacityShadowDither !== DITHER_NONE; + const isPrepass = pass === SHADER_PREPASS_VELOCITY; + options.litOptions.opacityShadowDither = isPrepass ? stdMat.opacityDither : stdMat.opacityShadowDither; + options.litOptions.lights = []; + } + _updateMaterialOptions(options, stdMat) { + var _stdMat$diffuseMap, _stdMat$diffuseDetail, _stdMat$emissiveMap, _stdMat$lightMap; + const diffuseTint = stdMat.diffuseTint || !stdMat.diffuseMap && !stdMat.diffuseVertexColor; + const useSpecular = !!(stdMat.useMetalness || stdMat.specularMap || stdMat.sphereMap || stdMat.cubeMap || notBlack(stdMat.specular) || stdMat.specularityFactor > 0 && stdMat.useMetalness || stdMat.enableGGXSpecular || stdMat.clearCoat > 0); + const useSpecularColor = !stdMat.useMetalness || stdMat.useMetalnessSpecularColor; + const specularTint = useSpecular && (stdMat.specularTint || !stdMat.specularMap && !stdMat.specularVertexColor) && notWhite(stdMat.specular); + const specularityFactorTint = useSpecular && stdMat.useMetalnessSpecularColor && (stdMat.specularityFactorTint || stdMat.specularityFactor < 1 && !stdMat.specularityFactorMap); + const emissiveTintColor = !stdMat.emissiveMap || notWhite(stdMat.emissive) && stdMat.emissiveTint; + const emissiveTintIntensity = stdMat.emissiveIntensity !== 1; + const isPackedNormalMap = stdMat.normalMap ? stdMat.normalMap.format === PIXELFORMAT_DXT5 || stdMat.normalMap.type === TEXTURETYPE_SWIZZLEGGGR : false; + options.opacityTint = stdMat.blendType !== BLEND_NONE || stdMat.alphaTest > 0 || stdMat.opacityDither !== DITHER_NONE ? 1 : 0; + options.ambientTint = stdMat.ambientTint; + options.diffuseTint = diffuseTint ? 2 : 0; + options.specularTint = specularTint ? 2 : 0; + options.specularityFactorTint = specularityFactorTint ? 1 : 0; + options.metalnessTint = stdMat.useMetalness && stdMat.metalness < 1 ? 1 : 0; + options.glossTint = 1; + options.emissiveTint = (emissiveTintColor ? 2 : 0) + (emissiveTintIntensity ? 1 : 0); + options.diffuseEncoding = (_stdMat$diffuseMap = stdMat.diffuseMap) == null ? void 0 : _stdMat$diffuseMap.encoding; + options.diffuseDetailEncoding = (_stdMat$diffuseDetail = stdMat.diffuseDetailMap) == null ? void 0 : _stdMat$diffuseDetail.encoding; + options.emissiveEncoding = (_stdMat$emissiveMap = stdMat.emissiveMap) == null ? void 0 : _stdMat$emissiveMap.encoding; + options.lightMapEncoding = (_stdMat$lightMap = stdMat.lightMap) == null ? void 0 : _stdMat$lightMap.encoding; + options.packedNormal = isPackedNormalMap; + options.refractionTint = stdMat.refraction !== 1 ? 1 : 0; + options.refractionIndexTint = stdMat.refractionIndex !== 1 / 1.5 ? 1 : 0; + options.thicknessTint = stdMat.useDynamicRefraction && stdMat.thickness !== 1 ? 1 : 0; + options.specularEncoding = stdMat.specularEncoding || "linear"; + options.sheenEncoding = stdMat.sheenEncoding || "linear"; + options.aoMapUv = stdMat.aoUvSet; + options.aoDetail = !!stdMat.aoMap; + options.diffuseDetail = !!stdMat.diffuseMap; + options.normalDetail = !!stdMat.normalMap; + options.diffuseDetailMode = stdMat.diffuseDetailMode; + options.aoDetailMode = stdMat.aoDetailMode; + options.clearCoatTint = stdMat.clearCoat !== 1 ? 1 : 0; + options.clearCoatGloss = !!stdMat.clearCoatGloss; + options.clearCoatGlossTint = stdMat.clearCoatGloss !== 1 ? 1 : 0; + options.iorTint = stdMat.refractionIndex !== 1 / 1.5 ? 1 : 0; + options.iridescenceTint = stdMat.iridescence !== 1 ? 1 : 0; + options.sheenTint = stdMat.useSheen && notWhite(stdMat.sheen) ? 2 : 0; + options.sheenGlossTint = 1; + options.glossInvert = stdMat.glossInvert; + options.sheenGlossInvert = stdMat.sheenGlossInvert; + options.clearCoatGlossInvert = stdMat.clearCoatGlossInvert; + options.useSpecularColor = useSpecularColor; + options.litOptions.separateAmbient = false; + options.litOptions.useAmbientTint = stdMat.ambientTint; + options.litOptions.customFragmentShader = stdMat.customFragmentShader; + options.litOptions.pixelSnap = stdMat.pixelSnap; + options.litOptions.shadingModel = stdMat.shadingModel; + options.litOptions.ambientSH = !!stdMat.ambientSH; + options.litOptions.fastTbn = stdMat.fastTbn; + options.litOptions.twoSidedLighting = stdMat.twoSidedLighting; + options.litOptions.occludeSpecular = stdMat.occludeSpecular; + options.litOptions.occludeSpecularFloat = stdMat.occludeSpecularIntensity !== 1; + options.litOptions.useMsdf = !!stdMat.msdfMap; + options.litOptions.msdfTextAttribute = !!stdMat.msdfTextAttribute; + options.litOptions.alphaToCoverage = stdMat.alphaToCoverage; + options.litOptions.opacityFadesSpecular = stdMat.opacityFadesSpecular; + options.litOptions.opacityDither = stdMat.opacityDither; + options.litOptions.cubeMapProjection = stdMat.cubeMapProjection; + options.litOptions.occludeDirect = stdMat.occludeDirect; + options.litOptions.conserveEnergy = stdMat.conserveEnergy && stdMat.shadingModel !== SPECULAR_PHONG; + options.litOptions.useSpecular = useSpecular; + options.litOptions.useSpecularityFactor = (specularityFactorTint || !!stdMat.specularityFactorMap) && stdMat.useMetalnessSpecularColor; + options.litOptions.enableGGXSpecular = stdMat.enableGGXSpecular; + options.litOptions.fresnelModel = stdMat.fresnelModel; + options.litOptions.useRefraction = (stdMat.refraction || !!stdMat.refractionMap) && (stdMat.useDynamicRefraction || !!options.litOptions.reflectionSource); + options.litOptions.useClearCoat = !!stdMat.clearCoat; + options.litOptions.useSheen = stdMat.useSheen; + options.litOptions.useIridescence = stdMat.useIridescence && stdMat.iridescence !== 0; + options.litOptions.useMetalness = stdMat.useMetalness; + options.litOptions.useDynamicRefraction = stdMat.useDynamicRefraction; + options.litOptions.dispersion = stdMat.dispersion > 0; + } + _updateEnvOptions(options, stdMat, scene2) { + options.litOptions.fog = stdMat.useFog ? scene2.fog : "none"; + options.litOptions.gamma = stdMat.useGammaTonemap ? scene2.gammaCorrection : GAMMA_NONE; + options.litOptions.toneMap = stdMat.useGammaTonemap ? scene2.toneMapping : -1; + options.litOptions.fixSeams = stdMat.cubeMap ? stdMat.cubeMap.fixCubemapSeams : false; + const isPhong = stdMat.shadingModel === SPECULAR_PHONG; + let usingSceneEnv = false; + if (stdMat.envAtlas && stdMat.cubeMap && !isPhong) { + options.litOptions.reflectionSource = "envAtlasHQ"; + options.litOptions.reflectionEncoding = stdMat.envAtlas.encoding; + options.litOptions.reflectionCubemapEncoding = stdMat.cubeMap.encoding; + } else if (stdMat.envAtlas && !isPhong) { + options.litOptions.reflectionSource = "envAtlas"; + options.litOptions.reflectionEncoding = stdMat.envAtlas.encoding; + } else if (stdMat.cubeMap) { + options.litOptions.reflectionSource = "cubeMap"; + options.litOptions.reflectionEncoding = stdMat.cubeMap.encoding; + } else if (stdMat.sphereMap) { + options.litOptions.reflectionSource = "sphereMap"; + options.litOptions.reflectionEncoding = stdMat.sphereMap.encoding; + } else if (stdMat.useSkybox && scene2.envAtlas && scene2.skybox && !isPhong) { + options.litOptions.reflectionSource = "envAtlasHQ"; + options.litOptions.reflectionEncoding = scene2.envAtlas.encoding; + options.litOptions.reflectionCubemapEncoding = scene2.skybox.encoding; + usingSceneEnv = true; + } else if (stdMat.useSkybox && scene2.envAtlas && !isPhong) { + options.litOptions.reflectionSource = "envAtlas"; + options.litOptions.reflectionEncoding = scene2.envAtlas.encoding; + usingSceneEnv = true; + } else if (stdMat.useSkybox && scene2.skybox) { + options.litOptions.reflectionSource = "cubeMap"; + options.litOptions.reflectionEncoding = scene2.skybox.encoding; + usingSceneEnv = true; + } else { + options.litOptions.reflectionSource = null; + options.litOptions.reflectionEncoding = null; + } + if (stdMat.ambientSH && !isPhong) { + options.litOptions.ambientSource = "ambientSH"; + options.litOptions.ambientEncoding = null; + } else { + const envAtlas = stdMat.envAtlas || (stdMat.useSkybox && scene2.envAtlas ? scene2.envAtlas : null); + if (envAtlas && !isPhong) { + options.litOptions.ambientSource = "envAtlas"; + options.litOptions.ambientEncoding = envAtlas.encoding; + } else { + options.litOptions.ambientSource = "constant"; + options.litOptions.ambientEncoding = null; + } + } + options.litOptions.skyboxIntensity = usingSceneEnv; + options.litOptions.useCubeMapRotation = usingSceneEnv && scene2._skyboxRotationShaderInclude; + } + _updateLightOptions(options, scene2, stdMat, objDefs, sortedLights) { + options.lightMap = false; + options.lightMapChannel = ""; + options.lightMapUv = 0; + options.lightMapTransform = 0; + options.litOptions.lightMapWithoutAmbient = false; + options.dirLightMap = false; + if (objDefs) { + options.litOptions.noShadow = (objDefs & SHADERDEF_NOSHADOW) !== 0; + if ((objDefs & SHADERDEF_LM) !== 0) { + options.lightMapEncoding = scene2.lightmapPixelFormat === PIXELFORMAT_RGBA8 ? "rgbm" : "linear"; + options.lightMap = true; + options.lightMapChannel = "rgb"; + options.lightMapUv = 1; + options.lightMapTransform = 0; + options.litOptions.lightMapWithoutAmbient = !stdMat.lightMap; + if ((objDefs & SHADERDEF_DIRLM) !== 0) { + options.dirLightMap = true; + } + if ((objDefs & SHADERDEF_LMAMBIENT) !== 0) { + options.litOptions.lightMapWithoutAmbient = false; + } + } + } + if (stdMat.useLighting) { + const lightsFiltered = []; + const mask = objDefs ? objDefs >> 16 : MASK_AFFECT_DYNAMIC; + options.litOptions.lightMaskDynamic = !!(mask & MASK_AFFECT_DYNAMIC); + if (sortedLights) { + LitMaterialOptionsBuilder.collectLights(LIGHTTYPE_DIRECTIONAL, sortedLights[LIGHTTYPE_DIRECTIONAL], lightsFiltered, mask); + LitMaterialOptionsBuilder.collectLights(LIGHTTYPE_OMNI, sortedLights[LIGHTTYPE_OMNI], lightsFiltered, mask); + LitMaterialOptionsBuilder.collectLights(LIGHTTYPE_SPOT, sortedLights[LIGHTTYPE_SPOT], lightsFiltered, mask); + } + options.litOptions.lights = lightsFiltered; + } else { + options.litOptions.lights = []; + } + if (options.litOptions.lights.length === 0) { + options.litOptions.noShadow = true; + } + } + _getMapTransformID(xform, uv) { + if (!xform) return 0; + let xforms = this._mapXForms[uv]; + if (!xforms) { + xforms = []; + this._mapXForms[uv] = xforms; + } + for (let i = 0; i < xforms.length; i++) { + if (arraysEqual(xforms[i][0].value, xform[0].value) && arraysEqual(xforms[i][1].value, xform[1].value)) { + return i + 1; + } + } + return xforms.push(xform); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/materials/standard-material-parameters.js +function _textureParameter(name, channel = true, vertexColor = true) { + const result = {}; + result[`${name}Map`] = "texture"; + result[`${name}MapTiling`] = "vec2"; + result[`${name}MapOffset`] = "vec2"; + result[`${name}MapRotation`] = "number"; + result[`${name}MapUv`] = "number"; + if (channel) { + result[`${name}MapChannel`] = "string"; + if (vertexColor) { + result[`${name}VertexColor`] = "boolean"; + result[`${name}VertexColorChannel`] = "string"; + } + } + return result; +} +var standardMaterialParameterTypes = _extends({ + name: "string", + chunks: "chunks", + mappingFormat: "string", + _engine: "boolean", + ambient: "rgb", + ambientTint: "boolean" +}, _textureParameter("ao"), _textureParameter("aoDetail", true, false), { + aoDetailMode: "string", + diffuse: "rgb", + diffuseTint: "boolean" +}, _textureParameter("diffuse"), _textureParameter("diffuseDetail", true, false), { + diffuseDetailMode: "string", + specular: "rgb", + specularTint: "boolean" +}, _textureParameter("specular"), { + occludeSpecular: "enum:occludeSpecular", + specularityFactor: "number", + specularityFactorTint: "boolean" +}, _textureParameter("specularityFactor"), { + useMetalness: "boolean", + metalness: "number", + enableGGXSpecular: "boolean", + anisotropy: "number", + metalnessTint: "boolean" +}, _textureParameter("metalness"), { + useMetalnessSpecularColor: "boolean", + conserveEnergy: "boolean", + shininess: "number", + gloss: "number", + glossInvert: "boolean" +}, _textureParameter("gloss"), { + clearCoat: "number" +}, _textureParameter("clearCoat"), { + clearCoatGloss: "number", + clearCoatGlossInvert: "boolean" +}, _textureParameter("clearCoatGloss"), { + clearCoatBumpiness: "number" +}, _textureParameter("clearCoatNormal", false), { + useSheen: "boolean", + sheen: "rgb", + sheenTint: "boolean" +}, _textureParameter("sheen"), { + sheenGloss: "number", + sheenGlossTint: "boolean", + sheenGlossInvert: "boolean" +}, _textureParameter("sheenGloss"), { + fresnelModel: "number", + emissive: "rgb", + emissiveTint: "boolean" +}, _textureParameter("emissive"), { + emissiveIntensity: "number" +}, _textureParameter("normal", false), { + bumpiness: "number" +}, _textureParameter("normalDetail", false), { + normalDetailMapBumpiness: "number" +}, _textureParameter("height", true, false), { + heightMapFactor: "number", + alphaToCoverage: "boolean", + alphaTest: "number", + alphaFade: "number", + opacity: "number" +}, _textureParameter("opacity"), { + opacityFadesSpecular: "boolean", + opacityDither: "string", + opacityShadowDither: "string", + reflectivity: "number", + refraction: "number", + refractionTint: "boolean" +}, _textureParameter("refraction"), { + refractionIndex: "number", + dispersion: "number", + thickness: "number", + thicknessTint: "boolean" +}, _textureParameter("thickness"), { + attenuation: "rgb", + attenuationDistance: "number", + useDynamicRefraction: "boolean", + sphereMap: "texture", + cubeMap: "cubemap", + cubeMapProjection: "number", + cubeMapProjectionBox: "boundingbox", + useIridescence: "boolean", + iridescence: "number", + iridescenceTint: "boolean" +}, _textureParameter("iridescence"), { + iridescenceThicknessTint: "boolean", + iridescenceThicknessMin: "number", + iridescenceThicknessMax: "number", + iridescenceRefractionIndex: "number" +}, _textureParameter("iridescenceThickness"), _textureParameter("light"), { + depthTest: "boolean", + depthFunc: "enum:depthFunc", + depthWrite: "boolean", + depthBias: "number", + slopeDepthBias: "number", + cull: "enum:cull", + blendType: "enum:blendType", + shadingModel: "enum:shadingModel", + useFog: "boolean", + useLighting: "boolean", + useSkybox: "boolean", + useGammaTonemap: "boolean", + envAtlas: "texture", + twoSidedLighting: "boolean" +}); +var standardMaterialTextureParameters = []; +for (const key in standardMaterialParameterTypes) { + const type2 = standardMaterialParameterTypes[key]; + if (type2 === "texture") { + standardMaterialTextureParameters.push(key); + } +} +var standardMaterialCubemapParameters = []; +for (const key in standardMaterialParameterTypes) { + const type2 = standardMaterialParameterTypes[key]; + if (type2 === "cubemap") { + standardMaterialCubemapParameters.push(key); + } +} + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/materials/standard-material.js +var _props = {}; +var _uniforms = {}; +var _params = /* @__PURE__ */ new Set(); +var StandardMaterial = class extends Material { + constructor() { + super(); + this.userAttributes = /* @__PURE__ */ new Map(); + this._dirtyShader = true; + this._assetReferences = {}; + this._activeParams = /* @__PURE__ */ new Set(); + this._activeLightingParams = /* @__PURE__ */ new Set(); + this.shaderOptBuilder = new StandardMaterialOptionsBuilder(); + this.reset(); + } + reset() { + Object.keys(_props).forEach((name) => { + this[`_${name}`] = _props[name].value(); + }); + this._chunks = {}; + this._uniformCache = {}; + } + set shader(shader) { + } + get shader() { + return null; + } + set chunks(value) { + this._dirtyShader = true; + this._chunks = value; + } + get chunks() { + this._dirtyShader = true; + return this._chunks; + } + copy(source) { + super.copy(source); + Object.keys(_props).forEach((k) => { + this[k] = source[k]; + }); + for (const p in source._chunks) { + if (source._chunks.hasOwnProperty(p)) this._chunks[p] = source._chunks[p]; + } + return this; + } + setAttribute(name, semantic) { + this.userAttributes.set(semantic, name); + } + _setParameter(name, value) { + _params.add(name); + this.setParameter(name, value); + } + _setParameters(parameters) { + parameters.forEach((v) => { + this._setParameter(v.name, v.value); + }); + } + _processParameters(paramsName) { + const prevParams = this[paramsName]; + prevParams.forEach((param) => { + if (!_params.has(param)) { + delete this.parameters[param]; + } + }); + this[paramsName] = _params; + _params = prevParams; + _params.clear(); + } + _updateMap(p) { + const mname = p + "Map"; + const map = this[mname]; + if (map) { + this._setParameter("texture_" + mname, map); + const tname = mname + "Transform"; + const uniform = this.getUniform(tname); + if (uniform) { + this._setParameters(uniform); + } + } + } + _allocUniform(name, allocFunc) { + let uniform = this._uniformCache[name]; + if (!uniform) { + uniform = allocFunc(); + this._uniformCache[name] = uniform; + } + return uniform; + } + getUniform(name, device, scene2) { + return _uniforms[name](this, device, scene2); + } + updateUniforms(device, scene2) { + const getUniform = (name) => { + return this.getUniform(name, device, scene2); + }; + this._setParameter("material_ambient", getUniform("ambient")); + if (!this.diffuseMap || this.diffuseTint) { + this._setParameter("material_diffuse", getUniform("diffuse")); + } + if (this.useMetalness) { + if (!this.metalnessMap || this.metalness < 1) { + this._setParameter("material_metalness", this.metalness); + } + if (!this.specularMap || this.specularTint) { + this._setParameter("material_specular", getUniform("specular")); + } + if (!this.specularityFactorMap || this.specularityFactorTint) { + this._setParameter("material_specularityFactor", this.specularityFactor); + } + if (!this.sheenMap || this.sheenTint) { + this._setParameter("material_sheen", getUniform("sheen")); + } + if (!this.sheenGlossMap || this.sheenGlossTint) { + this._setParameter("material_sheenGloss", this.sheenGloss); + } + this._setParameter("material_refractionIndex", this.refractionIndex); + } else { + if (!this.specularMap || this.specularTint) { + this._setParameter("material_specular", getUniform("specular")); + } + } + if (this.enableGGXSpecular) { + this._setParameter("material_anisotropy", this.anisotropy); + } + if (this.clearCoat > 0) { + this._setParameter("material_clearCoat", this.clearCoat); + this._setParameter("material_clearCoatGloss", this.clearCoatGloss); + this._setParameter("material_clearCoatBumpiness", this.clearCoatBumpiness); + } + this._setParameter("material_gloss", getUniform("gloss")); + if (!this.emissiveMap || this.emissiveTint) { + this._setParameter("material_emissive", getUniform("emissive")); + } + if (this.emissiveIntensity !== 1) { + this._setParameter("material_emissiveIntensity", this.emissiveIntensity); + } + if (this.refraction > 0) { + this._setParameter("material_refraction", this.refraction); + } + if (this.dispersion > 0) { + this._setParameter("material_dispersion", this.dispersion); + } + if (this.useDynamicRefraction) { + this._setParameter("material_thickness", this.thickness); + this._setParameter("material_attenuation", getUniform("attenuation")); + this._setParameter("material_invAttenuationDistance", this.attenuationDistance === 0 ? 0 : 1 / this.attenuationDistance); + } + if (this.useIridescence) { + this._setParameter("material_iridescence", this.iridescence); + this._setParameter("material_iridescenceRefractionIndex", this.iridescenceRefractionIndex); + this._setParameter("material_iridescenceThicknessMin", this.iridescenceThicknessMin); + this._setParameter("material_iridescenceThicknessMax", this.iridescenceThicknessMax); + } + this._setParameter("material_opacity", this.opacity); + if (this.opacityFadesSpecular === false) { + this._setParameter("material_alphaFade", this.alphaFade); + } + if (this.occludeSpecular) { + this._setParameter("material_occludeSpecularIntensity", this.occludeSpecularIntensity); + } + if (this.cubeMapProjection === CUBEPROJ_BOX) { + this._setParameter(getUniform("cubeMapProjectionBox")); + } + for (const p in _matTex2D) { + this._updateMap(p); + } + if (this.ambientSH) { + this._setParameter("ambientSH[0]", this.ambientSH); + } + if (this.normalMap) { + this._setParameter("material_bumpiness", this.bumpiness); + } + if (this.normalMap && this.normalDetailMap) { + this._setParameter("material_normalDetailMapBumpiness", this.normalDetailMapBumpiness); + } + if (this.heightMap) { + this._setParameter("material_heightMapFactor", getUniform("heightMapFactor")); + } + const isPhong = this.shadingModel === SPECULAR_PHONG; + if (this.envAtlas && this.cubeMap && !isPhong) { + this._setParameter("texture_envAtlas", this.envAtlas); + this._setParameter("texture_cubeMap", this.cubeMap); + } else if (this.envAtlas && !isPhong) { + this._setParameter("texture_envAtlas", this.envAtlas); + } else if (this.cubeMap) { + this._setParameter("texture_cubeMap", this.cubeMap); + } else if (this.sphereMap) { + this._setParameter("texture_sphereMap", this.sphereMap); + } + this._setParameter("material_reflectivity", this.reflectivity); + this._processParameters("_activeParams"); + if (this._dirtyShader) { + this.clearVariants(); + } + } + updateEnvUniforms(device, scene2) { + const isPhong = this.shadingModel === SPECULAR_PHONG; + const hasLocalEnvOverride = this.envAtlas && !isPhong || this.cubeMap || this.sphereMap; + if (!hasLocalEnvOverride && this.useSkybox) { + if (scene2.envAtlas && scene2.skybox && !isPhong) { + this._setParameter("texture_envAtlas", scene2.envAtlas); + this._setParameter("texture_cubeMap", scene2.skybox); + } else if (scene2.envAtlas && !isPhong) { + this._setParameter("texture_envAtlas", scene2.envAtlas); + } else if (scene2.skybox) { + this._setParameter("texture_cubeMap", scene2.skybox); + } + } + this._processParameters("_activeLightingParams"); + } + getShaderVariant(device, scene2, objDefs, unused, pass, sortedLights, viewUniformFormat, viewBindGroupFormat, vertexFormat) { + this.updateEnvUniforms(device, scene2); + const shaderPassInfo = ShaderPass.get(device).getByIndex(pass); + const minimalOptions = pass === SHADER_DEPTH || pass === SHADER_PICK || pass === SHADER_PREPASS_VELOCITY || shaderPassInfo.isShadow; + let options = minimalOptions ? standard.optionsContextMin : standard.optionsContext; + if (minimalOptions) this.shaderOptBuilder.updateMinRef(options, scene2, this, objDefs, pass, sortedLights); + else this.shaderOptBuilder.updateRef(options, scene2, this, objDefs, pass, sortedLights); + if (this.onUpdateShader) { + options = this.onUpdateShader(options); + } + const processingOptions = new ShaderProcessorOptions(viewUniformFormat, viewBindGroupFormat, vertexFormat); + const library = getProgramLibrary(device); + library.register("standard", standard); + const shader = library.getProgram("standard", options, processingOptions, this.userId); + this._dirtyShader = false; + return shader; + } + destroy() { + for (const asset2 in this._assetReferences) { + this._assetReferences[asset2]._unbind(); + } + this._assetReferences = null; + super.destroy(); + } +}; +StandardMaterial.TEXTURE_PARAMETERS = standardMaterialTextureParameters; +StandardMaterial.CUBEMAP_PARAMETERS = standardMaterialCubemapParameters; +var defineUniform = (name, getUniformFunc) => { + _uniforms[name] = getUniformFunc; +}; +var definePropInternal = (name, constructorFunc, setterFunc, getterFunc) => { + Object.defineProperty(StandardMaterial.prototype, name, { + get: getterFunc || function() { + return this[`_${name}`]; + }, + set: setterFunc + }); + _props[name] = { + value: constructorFunc + }; +}; +var defineValueProp = (prop) => { + const internalName = `_${prop.name}`; + const dirtyShaderFunc = prop.dirtyShaderFunc || (() => true); + const setterFunc = function setterFunc2(value) { + const oldValue = this[internalName]; + if (oldValue !== value) { + this._dirtyShader = this._dirtyShader || dirtyShaderFunc(oldValue, value); + this[internalName] = value; + } + }; + definePropInternal(prop.name, () => prop.defaultValue, setterFunc, prop.getterFunc); +}; +var defineAggProp = (prop) => { + const internalName = `_${prop.name}`; + const dirtyShaderFunc = prop.dirtyShaderFunc || (() => true); + const setterFunc = function setterFunc2(value) { + const oldValue = this[internalName]; + if (!oldValue.equals(value)) { + this._dirtyShader = this._dirtyShader || dirtyShaderFunc(oldValue, value); + this[internalName] = oldValue.copy(value); + } + }; + definePropInternal(prop.name, () => prop.defaultValue.clone(), setterFunc, prop.getterFunc); +}; +var defineProp = (prop) => { + return prop.defaultValue && prop.defaultValue.clone ? defineAggProp(prop) : defineValueProp(prop); +}; +function _defineTex2D(name, channel = "rgb", vertexColor = true, uv = 0) { + _matTex2D[name] = channel.length || -1; + defineProp({ + name: `${name}Map`, + defaultValue: null, + dirtyShaderFunc: (oldValue, newValue) => { + return !!oldValue !== !!newValue || oldValue && (oldValue.type !== newValue.type || oldValue.fixCubemapSeams !== newValue.fixCubemapSeams || oldValue.format !== newValue.format); + } + }); + defineProp({ + name: `${name}MapTiling`, + defaultValue: new Vec2(1, 1) + }); + defineProp({ + name: `${name}MapOffset`, + defaultValue: new Vec2(0, 0) + }); + defineProp({ + name: `${name}MapRotation`, + defaultValue: 0 + }); + defineProp({ + name: `${name}MapUv`, + defaultValue: uv + }); + if (channel) { + defineProp({ + name: `${name}MapChannel`, + defaultValue: channel + }); + if (vertexColor) { + defineProp({ + name: `${name}VertexColor`, + defaultValue: false + }); + defineProp({ + name: `${name}VertexColorChannel`, + defaultValue: channel + }); + } + } + const mapTiling = `${name}MapTiling`; + const mapOffset = `${name}MapOffset`; + const mapRotation = `${name}MapRotation`; + const mapTransform = `${name}MapTransform`; + defineUniform(mapTransform, (material, device, scene2) => { + const tiling = material[mapTiling]; + const offset = material[mapOffset]; + const rotation2 = material[mapRotation]; + if (tiling.x === 1 && tiling.y === 1 && offset.x === 0 && offset.y === 0 && rotation2 === 0) { + return null; + } + const uniform = material._allocUniform(mapTransform, () => { + return [{ + name: `texture_${mapTransform}0`, + value: new Float32Array(3) + }, { + name: `texture_${mapTransform}1`, + value: new Float32Array(3) + }]; + }); + const cr = Math.cos(rotation2 * math.DEG_TO_RAD); + const sr = Math.sin(rotation2 * math.DEG_TO_RAD); + const uniform0 = uniform[0].value; + uniform0[0] = cr * tiling.x; + uniform0[1] = -sr * tiling.y; + uniform0[2] = offset.x; + const uniform1 = uniform[1].value; + uniform1[0] = sr * tiling.x; + uniform1[1] = cr * tiling.y; + uniform1[2] = 1 - tiling.y - offset.y; + return uniform; + }); +} +function _defineColor(name, defaultValue) { + defineProp({ + name, + defaultValue, + getterFunc: function() { + this._dirtyShader = true; + return this[`_${name}`]; + } + }); + defineUniform(name, (material, device, scene2) => { + const uniform = material._allocUniform(name, () => new Float32Array(3)); + const color = material[name]; + const gamma = material.useGammaTonemap && scene2.gammaCorrection; + if (gamma) { + uniform[0] = Math.pow(color.r, 2.2); + uniform[1] = Math.pow(color.g, 2.2); + uniform[2] = Math.pow(color.b, 2.2); + } else { + uniform[0] = color.r; + uniform[1] = color.g; + uniform[2] = color.b; + } + return uniform; + }); +} +function _defineFloat(name, defaultValue, getUniformFunc) { + defineProp({ + name, + defaultValue, + dirtyShaderFunc: (oldValue, newValue) => { + return (oldValue === 0 || oldValue === 1) !== (newValue === 0 || newValue === 1); + } + }); + defineUniform(name, getUniformFunc); +} +function _defineObject(name, getUniformFunc) { + defineProp({ + name, + defaultValue: null, + dirtyShaderFunc: (oldValue, newValue) => { + return !!oldValue === !!newValue; + } + }); + defineUniform(name, getUniformFunc); +} +function _defineFlag(name, defaultValue) { + defineProp({ + name, + defaultValue + }); +} +function _defineMaterialProps() { + _defineColor("ambient", new Color(0.7, 0.7, 0.7)); + _defineColor("diffuse", new Color(1, 1, 1)); + _defineColor("specular", new Color(0, 0, 0)); + _defineColor("emissive", new Color(0, 0, 0)); + _defineColor("sheen", new Color(1, 1, 1)); + _defineColor("attenuation", new Color(1, 1, 1)); + _defineFloat("emissiveIntensity", 1); + _defineFloat("specularityFactor", 1); + _defineFloat("sheenGloss", 0); + _defineFloat("gloss", 0.25, (material, device, scene2) => { + return material.shadingModel === SPECULAR_PHONG ? Math.pow(2, material.gloss * 11) : material.gloss; + }); + _defineFloat("heightMapFactor", 1, (material, device, scene2) => { + return material.heightMapFactor * 0.025; + }); + _defineFloat("opacity", 1); + _defineFloat("alphaFade", 1); + _defineFloat("alphaTest", 0); + _defineFloat("bumpiness", 1); + _defineFloat("normalDetailMapBumpiness", 1); + _defineFloat("reflectivity", 1); + _defineFloat("occludeSpecularIntensity", 1); + _defineFloat("refraction", 0); + _defineFloat("refractionIndex", 1 / 1.5); + _defineFloat("dispersion", 0); + _defineFloat("thickness", 0); + _defineFloat("attenuationDistance", 0); + _defineFloat("metalness", 1); + _defineFloat("anisotropy", 0); + _defineFloat("clearCoat", 0); + _defineFloat("clearCoatGloss", 1); + _defineFloat("clearCoatBumpiness", 1); + _defineFloat("aoUvSet", 0, null); + _defineFloat("iridescence", 0); + _defineFloat("iridescenceRefractionIndex", 1 / 1.5); + _defineFloat("iridescenceThicknessMin", 0); + _defineFloat("iridescenceThicknessMax", 0); + _defineObject("ambientSH"); + _defineObject("cubeMapProjectionBox", (material, device, scene2) => { + const uniform = material._allocUniform("cubeMapProjectionBox", () => { + return [{ + name: "envBoxMin", + value: new Float32Array(3) + }, { + name: "envBoxMax", + value: new Float32Array(3) + }]; + }); + const bboxMin = material.cubeMapProjectionBox.getMin(); + const minUniform = uniform[0].value; + minUniform[0] = bboxMin.x; + minUniform[1] = bboxMin.y; + minUniform[2] = bboxMin.z; + const bboxMax = material.cubeMapProjectionBox.getMax(); + const maxUniform = uniform[1].value; + maxUniform[0] = bboxMax.x; + maxUniform[1] = bboxMax.y; + maxUniform[2] = bboxMax.z; + return uniform; + }); + _defineFlag("ambientTint", false); + _defineFlag("diffuseTint", false); + _defineFlag("sheenTint", false); + _defineFlag("specularTint", false); + _defineFlag("specularityFactorTint", false); + _defineFlag("emissiveTint", false); + _defineFlag("fastTbn", false); + _defineFlag("useMetalness", false); + _defineFlag("useMetalnessSpecularColor", false); + _defineFlag("useSheen", false); + _defineFlag("enableGGXSpecular", false); + _defineFlag("occludeDirect", false); + _defineFlag("normalizeNormalMap", true); + _defineFlag("conserveEnergy", true); + _defineFlag("opacityFadesSpecular", true); + _defineFlag("occludeSpecular", SPECOCC_AO); + _defineFlag("shadingModel", SPECULAR_BLINN); + _defineFlag("fresnelModel", FRESNEL_SCHLICK); + _defineFlag("useDynamicRefraction", false); + _defineFlag("cubeMapProjection", CUBEPROJ_NONE); + _defineFlag("customFragmentShader", null); + _defineFlag("useFog", true); + _defineFlag("useLighting", true); + _defineFlag("useGammaTonemap", true); + _defineFlag("useSkybox", true); + _defineFlag("forceUv1", false); + _defineFlag("pixelSnap", false); + _defineFlag("twoSidedLighting", false); + _defineFlag("nineSlicedMode", void 0); + _defineFlag("msdfTextAttribute", false); + _defineFlag("useIridescence", false); + _defineFlag("glossInvert", false); + _defineFlag("sheenGlossInvert", false); + _defineFlag("clearCoatGlossInvert", false); + _defineFlag("opacityDither", DITHER_NONE); + _defineFlag("opacityShadowDither", DITHER_NONE); + _defineTex2D("diffuse"); + _defineTex2D("specular"); + _defineTex2D("emissive"); + _defineTex2D("thickness", "g"); + _defineTex2D("specularityFactor", "g"); + _defineTex2D("normal", ""); + _defineTex2D("metalness", "g"); + _defineTex2D("gloss", "g"); + _defineTex2D("opacity", "a"); + _defineTex2D("refraction", "g"); + _defineTex2D("height", "g", false); + _defineTex2D("ao", "g"); + _defineTex2D("light", "rgb", true, 1); + _defineTex2D("msdf", ""); + _defineTex2D("diffuseDetail", "rgb", false); + _defineTex2D("normalDetail", ""); + _defineTex2D("aoDetail", "g", false); + _defineTex2D("clearCoat", "g"); + _defineTex2D("clearCoatGloss", "g"); + _defineTex2D("clearCoatNormal", ""); + _defineTex2D("sheen", "rgb"); + _defineTex2D("sheenGloss", "g"); + _defineTex2D("iridescence", "g"); + _defineTex2D("iridescenceThickness", "g"); + _defineFlag("diffuseDetailMode", DETAILMODE_MUL); + _defineFlag("aoDetailMode", DETAILMODE_MUL); + _defineObject("cubeMap"); + _defineObject("sphereMap"); + _defineObject("envAtlas"); + const getterFunc = function getterFunc2() { + return this._prefilteredCubemaps; + }; + const setterFunc = function setterFunc2(value) { + const cubemaps = this._prefilteredCubemaps; + value = value || []; + let changed = false; + let complete = true; + for (let i = 0; i < 6; ++i) { + const v = value[i] || null; + if (cubemaps[i] !== v) { + cubemaps[i] = v; + changed = true; + } + complete = complete && !!cubemaps[i]; + } + if (changed) { + if (complete) { + this.envAtlas = EnvLighting.generatePrefilteredAtlas(cubemaps, { + target: this.envAtlas + }); + } else { + if (this.envAtlas) { + this.envAtlas.destroy(); + this.envAtlas = null; + } + } + this._dirtyShader = true; + } + }; + const empty = [null, null, null, null, null, null]; + definePropInternal("prefilteredCubemaps", () => empty.slice(), setterFunc, getterFunc); +} +_defineMaterialProps(); + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/animation/animation.js +var Key = class { + constructor(time2, position2, rotation2, scale2) { + this.time = time2; + this.position = position2; + this.rotation = rotation2; + this.scale = scale2; + } +}; +var Node = class { + constructor() { + this._name = ""; + this._keys = []; + } +}; +var Animation = class { + constructor() { + this.name = ""; + this.duration = 0; + this._nodes = []; + this._nodeDict = {}; + } + getNode(name) { + return this._nodeDict[name]; + } + addNode(node) { + this._nodes.push(node); + this._nodeDict[node._name] = node; + } + get nodes() { + return this._nodes; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/animation/skeleton.js +var InterpolatedKey = class { + constructor() { + this._written = false; + this._name = ""; + this._keyFrames = []; + this._quat = new Quat2(); + this._pos = new Vec3(); + this._scale = new Vec3(); + this._targetNode = null; + } + getTarget() { + return this._targetNode; + } + setTarget(node) { + this._targetNode = node; + } +}; +var Skeleton = class { + constructor(graph) { + this.looping = true; + this._animation = null; + this._time = 0; + this._interpolatedKeys = []; + this._interpolatedKeyDict = {}; + this._currKeyIndices = {}; + this.graph = null; + const addInterpolatedKeys = (node) => { + const interpKey = new InterpolatedKey(); + interpKey._name = node.name; + this._interpolatedKeys.push(interpKey); + this._interpolatedKeyDict[node.name] = interpKey; + this._currKeyIndices[node.name] = 0; + for (let i = 0; i < node._children.length; i++) addInterpolatedKeys(node._children[i]); + }; + addInterpolatedKeys(graph); + } + set animation(value) { + this._animation = value; + this.currentTime = 0; + } + get animation() { + return this._animation; + } + set currentTime(value) { + this._time = value; + const numNodes = this._interpolatedKeys.length; + for (let i = 0; i < numNodes; i++) { + const node = this._interpolatedKeys[i]; + const nodeName = node._name; + this._currKeyIndices[nodeName] = 0; + } + this.addTime(0); + this.updateGraph(); + } + get currentTime() { + return this._time; + } + get numNodes() { + return this._interpolatedKeys.length; + } + addTime(delta) { + if (this._animation !== null) { + const nodes = this._animation._nodes; + const duration = this._animation.duration; + if (this._time === duration && !this.looping) { + return; + } + this._time += delta; + if (this._time > duration) { + this._time = this.looping ? 0 : duration; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + const nodeName = node._name; + this._currKeyIndices[nodeName] = 0; + } + } else if (this._time < 0) { + this._time = this.looping ? duration : 0; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + const nodeName = node._name; + this._currKeyIndices[nodeName] = node._keys.length - 2; + } + } + const offset = delta >= 0 ? 1 : -1; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + const nodeName = node._name; + const keys = node._keys; + const interpKey = this._interpolatedKeyDict[nodeName]; + if (interpKey === void 0) { + continue; + } + let foundKey = false; + if (keys.length !== 1) { + for (let currKeyIndex = this._currKeyIndices[nodeName]; currKeyIndex < keys.length - 1 && currKeyIndex >= 0; currKeyIndex += offset) { + const k1 = keys[currKeyIndex]; + const k2 = keys[currKeyIndex + 1]; + if (k1.time <= this._time && k2.time >= this._time) { + const alpha = (this._time - k1.time) / (k2.time - k1.time); + interpKey._pos.lerp(k1.position, k2.position, alpha); + interpKey._quat.slerp(k1.rotation, k2.rotation, alpha); + interpKey._scale.lerp(k1.scale, k2.scale, alpha); + interpKey._written = true; + this._currKeyIndices[nodeName] = currKeyIndex; + foundKey = true; + break; + } + } + } + if (keys.length === 1 || !foundKey && this._time === 0 && this.looping) { + interpKey._pos.copy(keys[0].position); + interpKey._quat.copy(keys[0].rotation); + interpKey._scale.copy(keys[0].scale); + interpKey._written = true; + } + } + } + } + blend(skel1, skel2, alpha) { + const numNodes = this._interpolatedKeys.length; + for (let i = 0; i < numNodes; i++) { + const key1 = skel1._interpolatedKeys[i]; + const key2 = skel2._interpolatedKeys[i]; + const dstKey = this._interpolatedKeys[i]; + if (key1._written && key2._written) { + dstKey._quat.slerp(key1._quat, skel2._interpolatedKeys[i]._quat, alpha); + dstKey._pos.lerp(key1._pos, skel2._interpolatedKeys[i]._pos, alpha); + dstKey._scale.lerp(key1._scale, key2._scale, alpha); + dstKey._written = true; + } else if (key1._written) { + dstKey._quat.copy(key1._quat); + dstKey._pos.copy(key1._pos); + dstKey._scale.copy(key1._scale); + dstKey._written = true; + } else if (key2._written) { + dstKey._quat.copy(key2._quat); + dstKey._pos.copy(key2._pos); + dstKey._scale.copy(key2._scale); + dstKey._written = true; + } + } + } + setGraph(graph) { + this.graph = graph; + if (graph) { + for (let i = 0; i < this._interpolatedKeys.length; i++) { + const interpKey = this._interpolatedKeys[i]; + const graphNode = graph.findByName(interpKey._name); + this._interpolatedKeys[i].setTarget(graphNode); + } + } else { + for (let i = 0; i < this._interpolatedKeys.length; i++) { + this._interpolatedKeys[i].setTarget(null); + } + } + } + updateGraph() { + if (this.graph) { + for (let i = 0; i < this._interpolatedKeys.length; i++) { + const interpKey = this._interpolatedKeys[i]; + if (interpKey._written) { + const transform = interpKey.getTarget(); + transform.localPosition.copy(interpKey._pos); + transform.localRotation.copy(interpKey._quat); + transform.localScale.copy(interpKey._scale); + if (!transform._dirtyLocal) transform._dirtifyLocal(); + interpKey._written = false; + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/cone-base-geometry.js +var primitiveUv1Padding2 = 4 / 64; +var primitiveUv1PaddingScale2 = 1 - primitiveUv1Padding2 * 2; +var ConeBaseGeometry = class extends Geometry { + constructor(baseRadius, peakRadius, height, heightSegments, capSegments, roundedCaps) { + super(); + const pos = new Vec3(); + const bottomToTop = new Vec3(); + const norm = new Vec3(); + const top = new Vec3(); + const bottom = new Vec3(); + const tangent = new Vec3(); + const positions = []; + const normals = []; + const uvs = []; + const uvs1 = []; + const indices = []; + let offset; + if (height > 0) { + for (let i = 0; i <= heightSegments; i++) { + for (let j = 0; j <= capSegments; j++) { + const theta = j / capSegments * 2 * Math.PI - Math.PI; + const sinTheta = Math.sin(theta); + const cosTheta = Math.cos(theta); + bottom.set(sinTheta * baseRadius, -height / 2, cosTheta * baseRadius); + top.set(sinTheta * peakRadius, height / 2, cosTheta * peakRadius); + pos.lerp(bottom, top, i / heightSegments); + bottomToTop.sub2(top, bottom).normalize(); + tangent.set(cosTheta, 0, -sinTheta); + norm.cross(tangent, bottomToTop).normalize(); + positions.push(pos.x, pos.y, pos.z); + normals.push(norm.x, norm.y, norm.z); + let u = j / capSegments; + let v = i / heightSegments; + uvs.push(u, 1 - v); + const _v = v; + v = u; + u = _v; + u = u * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + v = v * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + u /= 3; + uvs1.push(u, 1 - v); + if (i < heightSegments && j < capSegments) { + const first = i * (capSegments + 1) + j; + const second = i * (capSegments + 1) + (j + 1); + const third = (i + 1) * (capSegments + 1) + j; + const fourth = (i + 1) * (capSegments + 1) + (j + 1); + indices.push(first, second, third); + indices.push(second, fourth, third); + } + } + } + } + if (roundedCaps) { + const latitudeBands = Math.floor(capSegments / 2); + const longitudeBands = capSegments; + const capOffset = height / 2; + for (let lat = 0; lat <= latitudeBands; lat++) { + const theta = lat * Math.PI * 0.5 / latitudeBands; + const sinTheta = Math.sin(theta); + const cosTheta = Math.cos(theta); + for (let lon = 0; lon <= longitudeBands; lon++) { + const phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2; + const sinPhi = Math.sin(phi); + const cosPhi = Math.cos(phi); + const x2 = cosPhi * sinTheta; + const y2 = cosTheta; + const z2 = sinPhi * sinTheta; + let u = 1 - lon / longitudeBands; + let v = 1 - lat / latitudeBands; + positions.push(x2 * peakRadius, y2 * peakRadius + capOffset, z2 * peakRadius); + normals.push(x2, y2, z2); + uvs.push(u, 1 - v); + u = u * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + v = v * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + u /= 3; + v /= 3; + u += 1 / 3; + uvs1.push(u, 1 - v); + } + } + offset = (heightSegments + 1) * (capSegments + 1); + for (let lat = 0; lat < latitudeBands; ++lat) { + for (let lon = 0; lon < longitudeBands; ++lon) { + const first = lat * (longitudeBands + 1) + lon; + const second = first + longitudeBands + 1; + indices.push(offset + first + 1, offset + second, offset + first); + indices.push(offset + first + 1, offset + second + 1, offset + second); + } + } + for (let lat = 0; lat <= latitudeBands; lat++) { + const theta = Math.PI * 0.5 + lat * Math.PI * 0.5 / latitudeBands; + const sinTheta = Math.sin(theta); + const cosTheta = Math.cos(theta); + for (let lon = 0; lon <= longitudeBands; lon++) { + const phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2; + const sinPhi = Math.sin(phi); + const cosPhi = Math.cos(phi); + const x2 = cosPhi * sinTheta; + const y2 = cosTheta; + const z2 = sinPhi * sinTheta; + let u = 1 - lon / longitudeBands; + let v = 1 - lat / latitudeBands; + positions.push(x2 * peakRadius, y2 * peakRadius - capOffset, z2 * peakRadius); + normals.push(x2, y2, z2); + uvs.push(u, 1 - v); + u = u * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + v = v * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + u /= 3; + v /= 3; + u += 2 / 3; + uvs1.push(u, 1 - v); + } + } + offset = (heightSegments + 1) * (capSegments + 1) + (longitudeBands + 1) * (latitudeBands + 1); + for (let lat = 0; lat < latitudeBands; ++lat) { + for (let lon = 0; lon < longitudeBands; ++lon) { + const first = lat * (longitudeBands + 1) + lon; + const second = first + longitudeBands + 1; + indices.push(offset + first + 1, offset + second, offset + first); + indices.push(offset + first + 1, offset + second + 1, offset + second); + } + } + } else { + offset = (heightSegments + 1) * (capSegments + 1); + if (baseRadius > 0) { + for (let i = 0; i < capSegments; i++) { + const theta = i / capSegments * 2 * Math.PI; + const x2 = Math.sin(theta); + const y2 = -height / 2; + const z2 = Math.cos(theta); + let u = 1 - (x2 + 1) / 2; + let v = (z2 + 1) / 2; + positions.push(x2 * baseRadius, y2, z2 * baseRadius); + normals.push(0, -1, 0); + uvs.push(u, 1 - v); + u = u * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + v = v * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + u /= 3; + v /= 3; + u += 1 / 3; + uvs1.push(u, 1 - v); + if (i > 1) { + indices.push(offset, offset + i, offset + i - 1); + } + } + } + offset += capSegments; + if (peakRadius > 0) { + for (let i = 0; i < capSegments; i++) { + const theta = i / capSegments * 2 * Math.PI; + const x2 = Math.sin(theta); + const y2 = height / 2; + const z2 = Math.cos(theta); + let u = 1 - (x2 + 1) / 2; + let v = (z2 + 1) / 2; + positions.push(x2 * peakRadius, y2, z2 * peakRadius); + normals.push(0, 1, 0); + uvs.push(u, 1 - v); + u = u * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + v = v * primitiveUv1PaddingScale2 + primitiveUv1Padding2; + u /= 3; + v /= 3; + u += 2 / 3; + uvs1.push(u, 1 - v); + if (i > 1) { + indices.push(offset, offset + i - 1, offset + i); + } + } + } + } + this.positions = positions; + this.normals = normals; + this.uvs = uvs; + this.uvs1 = uvs1; + this.indices = indices; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/capsule-geometry.js +var CapsuleGeometry = class extends ConeBaseGeometry { + constructor(opts = {}) { + var _opts$radius, _opts$height, _opts$heightSegments, _opts$sides; + const radius = (_opts$radius = opts.radius) != null ? _opts$radius : 0.3; + const height = (_opts$height = opts.height) != null ? _opts$height : 1; + const heightSegments = (_opts$heightSegments = opts.heightSegments) != null ? _opts$heightSegments : 1; + const sides = (_opts$sides = opts.sides) != null ? _opts$sides : 20; + super(radius, radius, height - 2 * radius, heightSegments, sides, true); + if (opts.calculateTangents) { + this.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/cone-geometry.js +var ConeGeometry = class extends ConeBaseGeometry { + constructor(opts = {}) { + var _opts$baseRadius, _opts$peakRadius, _opts$height, _opts$heightSegments, _opts$capSegments; + const baseRadius = (_opts$baseRadius = opts.baseRadius) != null ? _opts$baseRadius : 0.5; + const peakRadius = (_opts$peakRadius = opts.peakRadius) != null ? _opts$peakRadius : 0; + const height = (_opts$height = opts.height) != null ? _opts$height : 1; + const heightSegments = (_opts$heightSegments = opts.heightSegments) != null ? _opts$heightSegments : 5; + const capSegments = (_opts$capSegments = opts.capSegments) != null ? _opts$capSegments : 18; + super(baseRadius, peakRadius, height, heightSegments, capSegments, false); + if (opts.calculateTangents) { + this.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/cylinder-geometry.js +var CylinderGeometry = class extends ConeBaseGeometry { + constructor(opts = {}) { + var _opts$radius, _opts$height, _opts$heightSegments, _opts$capSegments; + const radius = (_opts$radius = opts.radius) != null ? _opts$radius : 0.5; + const height = (_opts$height = opts.height) != null ? _opts$height : 1; + const heightSegments = (_opts$heightSegments = opts.heightSegments) != null ? _opts$heightSegments : 5; + const capSegments = (_opts$capSegments = opts.capSegments) != null ? _opts$capSegments : 20; + super(radius, radius, height, heightSegments, capSegments, false); + if (opts.calculateTangents) { + this.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/plane-geometry.js +var PlaneGeometry = class extends Geometry { + constructor(opts = {}) { + var _opts$halfExtents, _opts$widthSegments, _opts$lengthSegments; + super(); + const he = (_opts$halfExtents = opts.halfExtents) != null ? _opts$halfExtents : new Vec2(0.5, 0.5); + const ws = (_opts$widthSegments = opts.widthSegments) != null ? _opts$widthSegments : 5; + const ls = (_opts$lengthSegments = opts.lengthSegments) != null ? _opts$lengthSegments : 5; + const positions = []; + const normals = []; + const uvs = []; + const indices = []; + let vcounter = 0; + for (let i = 0; i <= ws; i++) { + for (let j = 0; j <= ls; j++) { + const x2 = -he.x + 2 * he.x * i / ws; + const y2 = 0; + const z2 = -(-he.y + 2 * he.y * j / ls); + const u = i / ws; + const v = j / ls; + positions.push(x2, y2, z2); + normals.push(0, 1, 0); + uvs.push(u, 1 - v); + if (i < ws && j < ls) { + indices.push(vcounter + ls + 1, vcounter + 1, vcounter); + indices.push(vcounter + ls + 1, vcounter + ls + 2, vcounter + 1); + } + vcounter++; + } + } + this.positions = positions; + this.normals = normals; + this.uvs = uvs; + this.uvs1 = uvs; + this.indices = indices; + if (opts.calculateTangents) { + this.tangents = calculateTangents(positions, normals, uvs, indices); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/torus-geometry.js +var TorusGeometry = class extends Geometry { + constructor(opts = {}) { + var _opts$tubeRadius, _opts$ringRadius, _opts$sectorAngle, _opts$segments, _opts$sides; + super(); + const rc = (_opts$tubeRadius = opts.tubeRadius) != null ? _opts$tubeRadius : 0.2; + const rt = (_opts$ringRadius = opts.ringRadius) != null ? _opts$ringRadius : 0.3; + const sectorAngle = ((_opts$sectorAngle = opts.sectorAngle) != null ? _opts$sectorAngle : 360) * math.DEG_TO_RAD; + const segments = (_opts$segments = opts.segments) != null ? _opts$segments : 30; + const sides = (_opts$sides = opts.sides) != null ? _opts$sides : 20; + const positions = []; + const normals = []; + const uvs = []; + const indices = []; + for (let i = 0; i <= sides; i++) { + for (let j = 0; j <= segments; j++) { + const x2 = Math.cos(sectorAngle * j / segments) * (rt + rc * Math.cos(2 * Math.PI * i / sides)); + const y2 = Math.sin(2 * Math.PI * i / sides) * rc; + const z2 = Math.sin(sectorAngle * j / segments) * (rt + rc * Math.cos(2 * Math.PI * i / sides)); + const nx = Math.cos(sectorAngle * j / segments) * Math.cos(2 * Math.PI * i / sides); + const ny = Math.sin(2 * Math.PI * i / sides); + const nz = Math.sin(sectorAngle * j / segments) * Math.cos(2 * Math.PI * i / sides); + const u = i / sides; + const v = 1 - j / segments; + positions.push(x2, y2, z2); + normals.push(nx, ny, nz); + uvs.push(u, 1 - v); + if (i < sides && j < segments) { + const first = i * (segments + 1) + j; + const second = (i + 1) * (segments + 1) + j; + const third = i * (segments + 1) + (j + 1); + const fourth = (i + 1) * (segments + 1) + (j + 1); + indices.push(first, second, third); + indices.push(second, fourth, third); + } + } + } + this.positions = positions; + this.normals = normals; + this.uvs = uvs; + this.uvs1 = uvs; + this.indices = indices; + if (opts.calculateTangents) { + this.tangents = calculateTangents(positions, normals, uvs, indices); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/program-library.js +var ProgramLibrary = class { + constructor(device, standardMaterial) { + this.processedCache = /* @__PURE__ */ new Map(); + this.definitionsCache = /* @__PURE__ */ new Map(); + this._generators = /* @__PURE__ */ new Map(); + this._device = device; + this._isClearingCache = false; + this._precached = false; + this._programsCollection = []; + this._defaultStdMatOption = new StandardMaterialOptions(); + this._defaultStdMatOptionMin = new StandardMaterialOptions(); + standardMaterial.shaderOptBuilder.updateRef(this._defaultStdMatOption, {}, standardMaterial, null, [], SHADER_FORWARD, null); + standardMaterial.shaderOptBuilder.updateMinRef(this._defaultStdMatOptionMin, {}, standardMaterial, null, SHADER_SHADOW, null); + device.on("destroy:shader", (shader) => { + this.removeFromCache(shader); + }); + } + destroy() { + this.clearCache(); + } + register(name, generator) { + if (!this._generators.has(name)) { + this._generators.set(name, generator); + } + } + unregister(name) { + if (this._generators.has(name)) { + this._generators.delete(name); + } + } + isRegistered(name) { + return this._generators.has(name); + } + generateShaderDefinition(generator, name, key, options) { + let def = this.definitionsCache.get(key); + if (!def) { + var _options$litOptions, _options$litOptions2, _def$name; + let lights2; + if ((_options$litOptions = options.litOptions) != null && _options$litOptions.lights) { + lights2 = options.litOptions.lights; + options.litOptions.lights = lights2.map(function(l) { + const lcopy = l.clone ? l.clone() : l; + lcopy.key = l.key; + return lcopy; + }); + } + this.storeNewProgram(name, options); + if ((_options$litOptions2 = options.litOptions) != null && _options$litOptions2.lights) options.litOptions.lights = lights2; + if (this._precached) ; + const device = this._device; + def = generator.createShaderDefinition(device, options); + def.name = (_def$name = def.name) != null ? _def$name : options.pass ? `${name}-pass:${options.pass}` : name; + this.definitionsCache.set(key, def); + } + return def; + } + getCachedShader(key) { + return this.processedCache.get(key); + } + setCachedShader(key, shader) { + this.processedCache.set(key, shader); + } + getProgram(name, options, processingOptions, userMaterialId) { + const generator = this._generators.get(name); + if (!generator) { + return null; + } + const generationKeyString = generator.generateKey(options); + const generationKey = hashCode(generationKeyString); + const processingKeyString = processingOptions.generateKey(this._device); + const processingKey = hashCode(processingKeyString); + const totalKey = `${generationKey}#${processingKey}`; + let processedShader = this.getCachedShader(totalKey); + if (!processedShader) { + const generatedShaderDef = this.generateShaderDefinition(generator, name, generationKey, options); + let passName = ""; + let shaderPassInfo; + if (options.pass !== void 0) { + shaderPassInfo = ShaderPass.get(this._device).getByIndex(options.pass); + passName = `-${shaderPassInfo.name}`; + } + this._device.fire("shader:generate", { + userMaterialId, + shaderPassInfo, + definition: generatedShaderDef + }); + const shaderDefinition = { + name: `${generatedShaderDef.name}${passName}-proc`, + attributes: generatedShaderDef.attributes, + vshader: generatedShaderDef.vshader, + vincludes: generatedShaderDef.vincludes, + fincludes: generatedShaderDef.fincludes, + fshader: generatedShaderDef.fshader, + processingOptions, + shaderLanguage: generatedShaderDef.shaderLanguage + }; + processedShader = new Shader(this._device, shaderDefinition); + this.setCachedShader(totalKey, processedShader); + } + return processedShader; + } + storeNewProgram(name, options) { + let opt = {}; + if (name === "standard") { + const defaultMat = this._getDefaultStdMatOptions(options.pass); + for (const p in options) { + if (options.hasOwnProperty(p) && defaultMat[p] !== options[p] || p === "pass") opt[p] = options[p]; + } + for (const p in options.litOptions) { + opt[p] = options.litOptions[p]; + } + } else { + opt = options; + } + this._programsCollection.push(JSON.stringify({ + name, + options: opt + })); + } + dumpPrograms() { + let text = "let device = pc.app ? pc.app.graphicsDevice : pc.Application.getApplication().graphicsDevice;\n"; + text += "let shaders = ["; + if (this._programsCollection[0]) text += "\n " + this._programsCollection[0]; + for (let i = 1; i < this._programsCollection.length; ++i) { + text += ",\n " + this._programsCollection[i]; + } + text += "\n];\n"; + text += "device.getProgramLibrary().precompile(shaders);\n"; + text += 'if (pc.version != "' + version + '" || pc.revision != "' + revision + '")\n'; + text += ' console.warn("precompile-shaders.js: engine version mismatch, rebuild shaders lib with current engine");'; + const element = document.createElement("a"); + element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(text)); + element.setAttribute("download", "precompile-shaders.js"); + element.style.display = "none"; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + } + clearCache() { + this._isClearingCache = true; + this.processedCache.forEach((shader) => { + shader.destroy(); + }); + this.processedCache.clear(); + this._isClearingCache = false; + } + removeFromCache(shader) { + if (this._isClearingCache) return; + this.processedCache.forEach((cachedShader, key) => { + if (shader === cachedShader) { + this.processedCache.delete(key); + } + }); + } + _getDefaultStdMatOptions(pass) { + const shaderPassInfo = ShaderPass.get(this._device).getByIndex(pass); + return pass === SHADER_DEPTH || pass === SHADER_PICK || pass === SHADER_PREPASS_VELOCITY || shaderPassInfo.isShadow ? this._defaultStdMatOptionMin : this._defaultStdMatOption; + } + precompile(cache) { + if (cache) { + const shaders = new Array(cache.length); + for (let i = 0; i < cache.length; i++) { + if (cache[i].name === "standard") { + const opt = cache[i].options; + const defaultMat = this._getDefaultStdMatOptions(opt.pass); + for (const p in defaultMat) { + if (defaultMat.hasOwnProperty(p) && opt[p] === void 0) opt[p] = defaultMat[p]; + } + } + shaders[i] = this.getProgram(cache[i].name, cache[i].options); + } + } + this._precached = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/constants.js +var FILLMODE_NONE = "NONE"; +var FILLMODE_FILL_WINDOW = "FILL_WINDOW"; +var FILLMODE_KEEP_ASPECT = "KEEP_ASPECT"; +var RESOLUTION_AUTO = "AUTO"; +var RESOLUTION_FIXED = "FIXED"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/globals.js +var currentApplication; +function getApplication() { + return currentApplication; +} +function setApplication(app2) { + currentApplication = app2; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/script/script-types.js +var ScriptTypes = class _ScriptTypes { + static push(Type, isLegacy) { + if (isLegacy && _ScriptTypes._types.length > 0) { + console.assert("Script Ordering Error. Contact support@playcanvas.com"); + } else { + _ScriptTypes._types.push(Type); + } + } +}; +ScriptTypes._types = []; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/script.js +var _legacy = false; +var _createdLoadingScreen = false; +var script = { + app: null, + create(name, callback) { + if (!_legacy) return; + const ScriptType = callback(script.app); + ScriptType._pcScriptName = name; + ScriptTypes.push(ScriptType, _legacy); + this.fire("created", name, callback); + }, + attribute(name, type2, defaultValue, options) { + }, + createLoadingScreen(callback) { + if (_createdLoadingScreen) return; + _createdLoadingScreen = true; + const app2 = getApplication(); + callback(app2); + } +}; +Object.defineProperty(script, "legacy", { + get: function() { + return _legacy; + }, + set: function(value) { + _legacy = value; + } +}); +events.attach(script); + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/frame-graph.js +var FrameGraph = class { + constructor() { + this.renderPasses = []; + this.renderTargetMap = /* @__PURE__ */ new Map(); + } + addRenderPass(renderPass) { + renderPass.frameUpdate(); + const beforePasses = renderPass.beforePasses; + for (let i = 0; i < beforePasses.length; i++) { + const pass = beforePasses[i]; + if (pass.enabled) { + this.addRenderPass(pass); + } + } + if (renderPass.enabled) { + this.renderPasses.push(renderPass); + } + const afterPasses = renderPass.afterPasses; + for (let i = 0; i < afterPasses.length; i++) { + const pass = afterPasses[i]; + if (pass.enabled) { + this.addRenderPass(pass); + } + } + } + reset() { + this.renderPasses.length = 0; + } + compile() { + const renderTargetMap = this.renderTargetMap; + const renderPasses = this.renderPasses; + for (let i = 0; i < renderPasses.length; i++) { + const renderPass = renderPasses[i]; + const renderTarget = renderPass.renderTarget; + if (renderTarget !== void 0) { + const prevPass = renderTargetMap.get(renderTarget); + if (prevPass) { + const count = renderPass.colorArrayOps.length; + for (let j = 0; j < count; j++) { + const colorOps = renderPass.colorArrayOps[j]; + if (!colorOps.clear) { + prevPass.colorArrayOps[j].store = true; + } + } + if (!renderPass.depthStencilOps.clearDepth) { + prevPass.depthStencilOps.storeDepth = true; + } + if (!renderPass.depthStencilOps.clearStencil) { + prevPass.depthStencilOps.storeStencil = true; + } + } + renderTargetMap.set(renderTarget, renderPass); + } + } + let lastCubeTexture = null; + let lastCubeRenderPass = null; + for (let i = 0; i < renderPasses.length; i++) { + const renderPass = renderPasses[i]; + const renderTarget = renderPass.renderTarget; + const thisTexture = renderTarget == null ? void 0 : renderTarget.colorBuffer; + if (thisTexture != null && thisTexture.cubemap) { + if (lastCubeTexture === thisTexture) { + const count = lastCubeRenderPass.colorArrayOps.length; + for (let j = 0; j < count; j++) { + lastCubeRenderPass.colorArrayOps[j].mipmaps = false; + } + } + lastCubeTexture = renderTarget.colorBuffer; + lastCubeRenderPass = renderPass; + } else if (renderPass.requiresCubemaps) { + lastCubeTexture = null; + lastCubeRenderPass = null; + } + } + renderTargetMap.clear(); + } + render(device) { + this.compile(); + const renderPasses = this.renderPasses; + for (let i = 0; i < renderPasses.length; i++) { + renderPasses[i].render(); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/area-light-luts.js +var AreaLightCacheEntry = class { + constructor(texture0, texture1) { + this.texture0 = texture0; + this.texture1 = texture1; + } + destroy() { + var _this$texture, _this$texture2; + (_this$texture = this.texture0) == null || _this$texture.destroy(); + (_this$texture2 = this.texture1) == null || _this$texture2.destroy(); + } +}; +var deviceCache3 = new DeviceCache(); +var AreaLightLuts = class _AreaLightLuts { + static createTexture(device, format, size, postfix = "") { + const tex = new Texture(device, { + name: `AreaLightLUT${postfix}`, + width: size, + height: size, + format, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE, + type: TEXTURETYPE_DEFAULT, + magFilter: FILTER_LINEAR, + minFilter: FILTER_NEAREST, + anisotropy: 1, + mipmaps: false + }); + return tex; + } + static applyTextures(device, texture1, texture2) { + deviceCache3.remove(device); + deviceCache3.get(device, () => { + return new AreaLightCacheEntry(texture1, texture1 === texture2 ? null : texture2); + }); + device.scope.resolve("areaLightsLutTex1").setValue(texture1); + device.scope.resolve("areaLightsLutTex2").setValue(texture2); + } + static createPlaceholder(device) { + const texture = _AreaLightLuts.createTexture(device, device.areaLightLutFormat, 2, "placeholder"); + const pixels = texture.lock(); + pixels.fill(0); + texture.unlock(); + _AreaLightLuts.applyTextures(device, texture, texture); + } + static set(device, ltcMat1, ltcMat2) { + function buildTexture(device2, data3, format2) { + const texture = _AreaLightLuts.createTexture(device2, format2, 64); + texture.lock().set(data3); + texture.unlock(); + return texture; + } + function offsetScale(data3, offset, scale2) { + const count = data3.length; + const ret = new Float32Array(count); + for (let i = 0; i < count; i++) { + const n = i % 4; + ret[i] = (data3[i] + offset[n]) * scale2[n]; + } + return ret; + } + function convertToHalfFloat(data3) { + const count = data3.length; + const ret = new Uint16Array(count); + const float2Half = FloatPacking.float2Half; + for (let i = 0; i < count; i++) { + ret[i] = float2Half(data3[i]); + } + return ret; + } + function convertToUint(data3) { + const count = data3.length; + const ret = new Uint8ClampedArray(count); + for (let i = 0; i < count; i++) { + ret[i] = data3[i] * 255; + } + return ret; + } + const srcData1 = ltcMat1; + const srcData2 = ltcMat2; + let data1, data2; + const format = device.areaLightLutFormat; + if (format === PIXELFORMAT_RGBA32F) { + data1 = srcData1; + data2 = srcData2; + } else if (format === PIXELFORMAT_RGBA16F) { + data1 = convertToHalfFloat(srcData1); + data2 = convertToHalfFloat(srcData2); + } else { + const o1 = [0, 0.2976, 0.01381, 0]; + const s1 = [0.999, 3.08737, 1.6546, 0.603249]; + const o2 = [-0.306897, 0, 0, 0]; + const s2 = [1.442787, 1, 1, 1]; + data1 = convertToUint(offsetScale(srcData1, o1, s1)); + data2 = convertToUint(offsetScale(srcData2, o2, s2)); + } + const tex1 = buildTexture(device, data1, format); + const tex2 = buildTexture(device, data2, format); + _AreaLightLuts.applyTextures(device, tex1, tex2); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/i18n/constants.js +var DEFAULT_LOCALE = "en-US"; +var DEFAULT_LOCALE_FALLBACKS = { + "en": "en-US", + "es": "en-ES", + "zh": "zh-CN", + "zh-HK": "zh-TW", + "zh-TW": "zh-HK", + "zh-MO": "zh-HK", + "fr": "fr-FR", + "de": "de-DE", + "it": "it-IT", + "ru": "ru-RU", + "ja": "ja-JP" +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/i18n/utils.js +var PLURALS = {}; +function definePluralFn(locales, fn) { + for (let i = 0, len = locales.length; i < len; i++) { + PLURALS[locales[i]] = fn; + } +} +function getLang(locale) { + const idx = locale.indexOf("-"); + if (idx !== -1) { + return locale.substring(0, idx); + } + return locale; +} +function replaceLang(locale, desiredLang) { + const idx = locale.indexOf("-"); + if (idx !== -1) { + return desiredLang + locale.substring(idx); + } + return desiredLang; +} +function findAvailableLocale(desiredLocale, availableLocales) { + if (availableLocales[desiredLocale]) { + return desiredLocale; + } + let fallback = DEFAULT_LOCALE_FALLBACKS[desiredLocale]; + if (fallback && availableLocales[fallback]) { + return fallback; + } + const lang = getLang(desiredLocale); + fallback = DEFAULT_LOCALE_FALLBACKS[lang]; + if (availableLocales[fallback]) { + return fallback; + } + if (availableLocales[lang]) { + return lang; + } + return DEFAULT_LOCALE; +} +definePluralFn(["ja", "ko", "th", "vi", "zh", "id"], function(n) { + return 0; +}); +definePluralFn(["fa", "hi"], function(n) { + if (n >= 0 && n <= 1) { + return 0; + } + return 1; +}); +definePluralFn(["fr", "pt"], function(n) { + if (n >= 0 && n < 2) { + return 0; + } + return 1; +}); +definePluralFn(["da"], function(n) { + if (n === 1 || !Number.isInteger(n) && n >= 0 && n <= 1) { + return 0; + } + return 1; +}); +definePluralFn(["de", "en", "it", "el", "es", "tr", "fi", "sv", "nb", "no", "ur"], function(n) { + if (n === 1) { + return 0; + } + return 1; +}); +definePluralFn(["ru", "uk"], function(n) { + if (Number.isInteger(n)) { + const mod10 = n % 10; + const mod100 = n % 100; + if (mod10 === 1 && mod100 !== 11) { + return 0; + } else if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) { + return 1; + } else if (mod10 === 0 || mod10 >= 5 && mod10 <= 9 || mod100 >= 11 && mod100 <= 14) { + return 2; + } + } + return 3; +}); +definePluralFn(["pl"], function(n) { + if (Number.isInteger(n)) { + if (n === 1) { + return 0; + } + const mod10 = n % 10; + const mod100 = n % 100; + if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) { + return 1; + } else if (mod10 >= 0 && mod10 <= 1 || mod10 >= 5 && mod10 <= 9 || mod100 >= 12 && mod100 <= 14) { + return 2; + } + } + return 3; +}); +definePluralFn(["ar"], function(n) { + if (n === 0) { + return 0; + } else if (n === 1) { + return 1; + } else if (n === 2) { + return 2; + } + if (Number.isInteger(n)) { + const mod100 = n % 100; + if (mod100 >= 3 && mod100 <= 10) { + return 3; + } else if (mod100 >= 11 && mod100 <= 99) { + return 4; + } + } + return 5; +}); +var DEFAULT_PLURAL_FN = PLURALS[getLang(DEFAULT_LOCALE)]; +function getPluralFn(lang) { + return PLURALS[lang] || DEFAULT_PLURAL_FN; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/asset/constants.js +var ABSOLUTE_URL = new RegExp("^\\s*(?:(?:[a-z]+[a-z0-9\\-\\+\\.]*:)?//|data:|blob:)", "i"); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/asset/asset-file.js +var AssetFile = class { + constructor(url = "", filename = "", hash = null, size = null, opt = null, contents = null) { + this.url = url; + this.filename = filename; + this.hash = hash; + this.size = size; + this.opt = opt; + this.contents = contents; + } + equals(other) { + return this.url === other.url && this.filename === other.filename && this.hash === other.hash && this.size === other.size && this.opt === other.opt && this.contents === other.contents; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/asset/asset.js +var assetIdCounter = -1; +var VARIANT_SUPPORT = { + pvr: "extCompressedTexturePVRTC", + dxt: "extCompressedTextureS3TC", + etc2: "extCompressedTextureETC", + etc1: "extCompressedTextureETC1", + basis: "canvas" +}; +var VARIANT_DEFAULT_PRIORITY = ["pvr", "dxt", "etc2", "etc1", "basis"]; +var Asset = class extends EventHandler { + constructor(name, type2, file, data2, options) { + super(); + this._id = assetIdCounter--; + this._name = name || ""; + this.type = type2; + this.tags = new Tags(this); + this._preload = false; + this._file = null; + this._data = data2 || {}; + this.options = options || {}; + this._resources = []; + this.urlObject = null; + this._i18n = {}; + this.loaded = false; + this.loading = false; + this.registry = null; + if (file) this.file = file; + } + set id(value) { + this._id = value; + } + get id() { + return this._id; + } + set name(value) { + if (this._name === value) return; + const old = this._name; + this._name = value; + this.fire("name", this, this._name, old); + } + get name() { + return this._name; + } + set file(value) { + if (value && value.variants && ["texture", "textureatlas", "bundle"].indexOf(this.type) !== -1) { + var _this$registry; + const app2 = ((_this$registry = this.registry) == null || (_this$registry = _this$registry._loader) == null ? void 0 : _this$registry._app) || getApplication(); + const device = app2 == null ? void 0 : app2.graphicsDevice; + if (device) { + for (let i = 0, len = VARIANT_DEFAULT_PRIORITY.length; i < len; i++) { + const variant = VARIANT_DEFAULT_PRIORITY[i]; + if (value.variants[variant] && device[VARIANT_SUPPORT[variant]]) { + value = value.variants[variant]; + break; + } + if (app2.enableBundles) { + const bundles = app2.bundles.listBundlesForAsset(this); + if (bundles && bundles.find((b) => { + var _b$file; + return b == null || (_b$file = b.file) == null ? void 0 : _b$file.variants[variant]; + })) { + break; + } + } + } + } + } + const oldFile = this._file; + const newFile = value ? new AssetFile(value.url, value.filename, value.hash, value.size, value.opt, value.contents) : null; + if (!!newFile !== !!oldFile || newFile && !newFile.equals(oldFile)) { + this._file = newFile; + this.fire("change", this, "file", newFile, oldFile); + this.reload(); + } + } + get file() { + return this._file; + } + set data(value) { + const old = this._data; + this._data = value; + if (value !== old) { + this.fire("change", this, "data", value, old); + if (this.loaded) this.registry._loader.patch(this, this.registry); + } + } + get data() { + return this._data; + } + set resource(value) { + const _old = this._resources[0]; + this._resources[0] = value; + this.fire("change", this, "resource", value, _old); + } + get resource() { + return this._resources[0]; + } + set resources(value) { + const _old = this._resources; + this._resources = value; + this.fire("change", this, "resources", value, _old); + } + get resources() { + return this._resources; + } + set preload(value) { + value = !!value; + if (this._preload === value) return; + this._preload = value; + if (this._preload && !this.loaded && !this.loading && this.registry) this.registry.load(this); + } + get preload() { + return this._preload; + } + set loadFaces(value) { + value = !!value; + if (!this.hasOwnProperty("_loadFaces") || value !== this._loadFaces) { + this._loadFaces = value; + if (this.loaded) this.registry._loader.patch(this, this.registry); + } + } + get loadFaces() { + return this._loadFaces; + } + getFileUrl() { + const file = this.file; + if (!file || !file.url) return null; + let url = file.url; + if (this.registry && this.registry.prefix && !ABSOLUTE_URL.test(url)) url = this.registry.prefix + url; + if (this.type !== "script" && file.hash) { + const separator = url.indexOf("?") !== -1 ? "&" : "?"; + url += separator + "t=" + file.hash; + } + return url; + } + getAbsoluteUrl(relativePath) { + if (relativePath.startsWith("blob:") || relativePath.startsWith("data:")) { + return relativePath; + } + const base = path.getDirectory(this.file.url); + return path.join(base, relativePath); + } + getLocalizedAssetId(locale) { + locale = findAvailableLocale(locale, this._i18n); + return this._i18n[locale] || null; + } + addLocalizedAssetId(locale, assetId) { + this._i18n[locale] = assetId; + this.fire("add:localized", locale, assetId); + } + removeLocalizedAssetId(locale) { + const assetId = this._i18n[locale]; + if (assetId) { + delete this._i18n[locale]; + this.fire("remove:localized", locale, assetId); + } + } + ready(callback, scope) { + scope = scope || this; + if (this.loaded) { + callback.call(scope, this); + } else { + this.once("load", function(asset2) { + callback.call(scope, asset2); + }); + } + } + reload() { + if (this.loaded) { + this.loaded = false; + this.registry.load(this); + } + } + unload() { + if (!this.loaded && this._resources.length === 0) return; + this.fire("unload", this); + this.registry.fire("unload:" + this.id, this); + const old = this._resources; + if (this.urlObject) { + URL.revokeObjectURL(this.urlObject); + this.urlObject = null; + } + this.resources = []; + this.loaded = false; + if (this.file) { + this.registry._loader.clearCache(this.getFileUrl(), this.type); + } + for (let i = 0; i < old.length; ++i) { + const resource = old[i]; + if (resource && resource.destroy) { + resource.destroy(); + } + } + } + static fetchArrayBuffer(loadUrl, callback, asset2, maxRetries = 0) { + var _asset$file; + if (asset2 != null && (_asset$file = asset2.file) != null && _asset$file.contents) { + setTimeout(() => { + callback(null, asset2.file.contents); + }); + } else { + http.get(loadUrl, { + cache: true, + responseType: "arraybuffer", + retry: maxRetries > 0, + maxRetries + }, callback); + } + } +}; +Asset.EVENT_LOAD = "load"; +Asset.EVENT_UNLOAD = "unload"; +Asset.EVENT_REMOVE = "remove"; +Asset.EVENT_ERROR = "error"; +Asset.EVENT_CHANGE = "change"; +Asset.EVENT_ADDLOCALIZED = "add:localized"; +Asset.EVENT_REMOVELOCALIZED = "remove:localized"; + +// ../../node_modules/playcanvas/build/playcanvas/src/core/tags-cache.js +var TagsCache = class { + constructor(key = null) { + this._index = {}; + this._key = void 0; + this._key = key; + } + addItem(item) { + const tags = item.tags._list; + for (const tag of tags) this.add(tag, item); + } + removeItem(item) { + const tags = item.tags._list; + for (const tag of tags) this.remove(tag, item); + } + add(tag, item) { + if (this._index[tag] && this._index[tag].list.indexOf(item) !== -1) return; + if (!this._index[tag]) { + this._index[tag] = { + list: [] + }; + if (this._key) this._index[tag].keys = {}; + } + this._index[tag].list.push(item); + if (this._key) this._index[tag].keys[item[this._key]] = item; + } + remove(tag, item) { + if (!this._index[tag]) return; + if (this._key) { + if (!this._index[tag].keys[item[this._key]]) return; + } + const ind = this._index[tag].list.indexOf(item); + if (ind === -1) return; + this._index[tag].list.splice(ind, 1); + if (this._key) delete this._index[tag].keys[item[this._key]]; + if (this._index[tag].list.length === 0) delete this._index[tag]; + } + find(args) { + const index = {}; + const items = []; + let item, tag, tags, tagsRest, missingIndex; + const sort = (a, b) => { + return this._index[a].list.length - this._index[b].list.length; + }; + for (let i = 0; i < args.length; i++) { + tag = args[i]; + if (tag instanceof Array) { + if (tag.length === 0) continue; + if (tag.length === 1) { + tag = tag[0]; + } else { + missingIndex = false; + for (let t = 0; t < tag.length; t++) { + if (!this._index[tag[t]]) { + missingIndex = true; + break; + } + } + if (missingIndex) continue; + tags = tag.slice(0).sort(sort); + tagsRest = tags.slice(1); + if (tagsRest.length === 1) tagsRest = tagsRest[0]; + for (let n = 0; n < this._index[tags[0]].list.length; n++) { + item = this._index[tags[0]].list[n]; + if ((this._key ? !index[item[this._key]] : items.indexOf(item) === -1) && item.tags.has(tagsRest)) { + if (this._key) index[item[this._key]] = true; + items.push(item); + } + } + continue; + } + } + if (tag && typeof tag === "string" && this._index[tag]) { + for (let n = 0; n < this._index[tag].list.length; n++) { + item = this._index[tag].list[n]; + if (this._key) { + if (!index[item[this._key]]) { + index[item[this._key]] = true; + items.push(item); + } + } else if (items.indexOf(item) === -1) { + items.push(item); + } + } + } + } + return items; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/asset/asset-registry.js +var AssetRegistry = class extends EventHandler { + constructor(loader) { + super(); + this._assets = /* @__PURE__ */ new Set(); + this._idToAsset = /* @__PURE__ */ new Map(); + this._urlToAsset = /* @__PURE__ */ new Map(); + this._nameToAsset = /* @__PURE__ */ new Map(); + this._tags = new TagsCache("_id"); + this.prefix = null; + this.bundles = null; + this._loader = loader; + } + list(filters = {}) { + const assets = Array.from(this._assets); + if (filters.preload !== void 0) { + return assets.filter((asset2) => asset2.preload === filters.preload); + } + return assets; + } + add(asset2) { + var _asset$file, _asset$file2; + if (this._assets.has(asset2)) return; + this._assets.add(asset2); + this._idToAsset.set(asset2.id, asset2); + if ((_asset$file = asset2.file) != null && _asset$file.url) { + this._urlToAsset.set(asset2.file.url, asset2); + } + if (!this._nameToAsset.has(asset2.name)) this._nameToAsset.set(asset2.name, /* @__PURE__ */ new Set()); + this._nameToAsset.get(asset2.name).add(asset2); + asset2.on("name", this._onNameChange, this); + asset2.registry = this; + this._tags.addItem(asset2); + asset2.tags.on("add", this._onTagAdd, this); + asset2.tags.on("remove", this._onTagRemove, this); + this.fire("add", asset2); + this.fire("add:" + asset2.id, asset2); + if ((_asset$file2 = asset2.file) != null && _asset$file2.url) { + this.fire("add:url:" + asset2.file.url, asset2); + } + if (asset2.preload) this.load(asset2); + } + remove(asset2) { + var _asset$file3, _asset$file4; + if (!this._assets.has(asset2)) return false; + this._assets.delete(asset2); + this._idToAsset.delete(asset2.id); + if ((_asset$file3 = asset2.file) != null && _asset$file3.url) { + this._urlToAsset.delete(asset2.file.url); + } + asset2.off("name", this._onNameChange, this); + if (this._nameToAsset.has(asset2.name)) { + const items = this._nameToAsset.get(asset2.name); + items.delete(asset2); + if (items.size === 0) { + this._nameToAsset.delete(asset2.name); + } + } + this._tags.removeItem(asset2); + asset2.tags.off("add", this._onTagAdd, this); + asset2.tags.off("remove", this._onTagRemove, this); + asset2.fire("remove", asset2); + this.fire("remove", asset2); + this.fire("remove:" + asset2.id, asset2); + if ((_asset$file4 = asset2.file) != null && _asset$file4.url) { + this.fire("remove:url:" + asset2.file.url, asset2); + } + return true; + } + get(id12) { + return this._idToAsset.get(Number(id12)); + } + getByUrl(url) { + return this._urlToAsset.get(url); + } + load(asset2, options) { + if ((asset2.loading || asset2.loaded) && !(options != null && options.force)) { + return; + } + const file = asset2.file; + const _fireLoad = () => { + this.fire("load", asset2); + this.fire("load:" + asset2.id, asset2); + if (file && file.url) this.fire("load:url:" + file.url, asset2); + asset2.fire("load", asset2); + }; + const _opened = (resource) => { + if (resource instanceof Array) { + asset2.resources = resource; + } else { + asset2.resource = resource; + } + this._loader.patch(asset2, this); + if (asset2.type === "bundle") { + const assetIds = asset2.data.assets; + for (let i = 0; i < assetIds.length; i++) { + const assetInBundle = this._idToAsset.get(assetIds[i]); + if (assetInBundle && !assetInBundle.loaded) { + this.load(assetInBundle, { + force: true + }); + } + } + if (asset2.resource.loaded) { + _fireLoad(); + } else { + this.fire("load:start", asset2); + this.fire("load:start:" + asset2.id, asset2); + if (file && file.url) this.fire("load:start:url:" + file.url, asset2); + asset2.fire("load:start", asset2); + asset2.resource.on("load", _fireLoad); + } + } else { + _fireLoad(); + } + }; + const _loaded = (err, resource, extra) => { + asset2.loaded = true; + asset2.loading = false; + if (err) { + this.fire("error", err, asset2); + this.fire("error:" + asset2.id, err, asset2); + asset2.fire("error", err, asset2); + } else { + if (!script.legacy && asset2.type === "script") { + const handler = this._loader.getHandler("script"); + if (handler._cache[asset2.id] && handler._cache[asset2.id].parentNode === document.head) { + document.head.removeChild(handler._cache[asset2.id]); + } + handler._cache[asset2.id] = extra; + } + _opened(resource); + } + }; + if (file || asset2.type === "cubemap") { + this.fire("load:start", asset2); + this.fire("load:" + asset2.id + ":start", asset2); + asset2.loading = true; + const fileUrl = asset2.getFileUrl(); + if (asset2.type === "bundle") { + const assetIds = asset2.data.assets; + for (let i = 0; i < assetIds.length; i++) { + const assetInBundle = this._idToAsset.get(assetIds[i]); + if (!assetInBundle) continue; + if (assetInBundle.loaded || assetInBundle.resource || assetInBundle.loading) continue; + assetInBundle.loading = true; + } + } + this._loader.load(fileUrl, asset2.type, _loaded, asset2, options); + } else { + const resource = this._loader.open(asset2.type, asset2.data); + asset2.loaded = true; + _opened(resource); + } + } + loadFromUrl(url, type2, callback) { + this.loadFromUrlAndFilename(url, null, type2, callback); + } + loadFromUrlAndFilename(url, filename, type2, callback) { + const name = path.getBasename(filename || url); + const file = { + filename: filename || name, + url + }; + let asset2 = this.getByUrl(url); + if (!asset2) { + asset2 = new Asset(name, type2, file); + this.add(asset2); + } else if (asset2.loaded) { + callback(asset2.loadFromUrlError || null, asset2); + return; + } + const startLoad = (asset3) => { + asset3.once("load", (loadedAsset) => { + if (type2 === "material") { + this._loadTextures(loadedAsset, (err, textures) => { + callback(err, loadedAsset); + }); + } else { + callback(null, loadedAsset); + } + }); + asset3.once("error", (err) => { + if (err) { + this.loadFromUrlError = err; + } + callback(err, asset3); + }); + this.load(asset3); + }; + if (asset2.resource) { + callback(null, asset2); + } else if (type2 === "model") { + this._loadModel(asset2, startLoad); + } else { + startLoad(asset2); + } + } + _loadModel(modelAsset, continuation) { + const url = modelAsset.getFileUrl(); + const ext = path.getExtension(url); + if (ext === ".json" || ext === ".glb") { + const dir = path.getDirectory(url); + const basename = path.getBasename(url); + const mappingUrl = path.join(dir, basename.replace(ext, ".mapping.json")); + this._loader.load(mappingUrl, "json", (err, data2) => { + if (err) { + modelAsset.data = { + mapping: [] + }; + continuation(modelAsset); + } else { + this._loadMaterials(modelAsset, data2, (e, materials) => { + modelAsset.data = data2; + continuation(modelAsset); + }); + } + }); + } else { + continuation(modelAsset); + } + } + _loadMaterials(modelAsset, mapping, callback) { + const materials = []; + let count = 0; + const onMaterialLoaded = (err, materialAsset) => { + this._loadTextures(materialAsset, (err2, textures) => { + materials.push(materialAsset); + if (materials.length === count) { + callback(null, materials); + } + }); + }; + for (let i = 0; i < mapping.mapping.length; i++) { + const path2 = mapping.mapping[i].path; + if (path2) { + count++; + const url = modelAsset.getAbsoluteUrl(path2); + this.loadFromUrl(url, "material", onMaterialLoaded); + } + } + if (count === 0) { + callback(null, materials); + } + } + _loadTextures(materialAsset, callback) { + const textures = []; + let count = 0; + const data2 = materialAsset.data; + if (data2.mappingFormat !== "path") { + callback(null, textures); + return; + } + const onTextureLoaded = (err, texture) => { + if (err) console.error(err); + textures.push(texture); + if (textures.length === count) { + callback(null, textures); + } + }; + const texParams = standardMaterialTextureParameters; + for (let i = 0; i < texParams.length; i++) { + const path2 = data2[texParams[i]]; + if (path2 && typeof path2 === "string") { + count++; + const url = materialAsset.getAbsoluteUrl(path2); + this.loadFromUrl(url, "texture", onTextureLoaded); + } + } + if (count === 0) { + callback(null, textures); + } + } + _onTagAdd(tag, asset2) { + this._tags.add(tag, asset2); + } + _onTagRemove(tag, asset2) { + this._tags.remove(tag, asset2); + } + _onNameChange(asset2, name, nameOld) { + if (this._nameToAsset.has(nameOld)) { + const items = this._nameToAsset.get(nameOld); + items.delete(asset2); + if (items.size === 0) { + this._nameToAsset.delete(nameOld); + } + } + if (!this._nameToAsset.has(asset2.name)) this._nameToAsset.set(asset2.name, /* @__PURE__ */ new Set()); + this._nameToAsset.get(asset2.name).add(asset2); + } + findByTag() { + return this._tags.find(arguments); + } + filter(callback) { + return Array.from(this._assets).filter((asset2) => callback(asset2)); + } + find(name, type2) { + const items = this._nameToAsset.get(name); + if (!items) return null; + for (const asset2 of items) { + if (!type2 || asset2.type === type2) { + return asset2; + } + } + return null; + } + findAll(name, type2) { + const items = this._nameToAsset.get(name); + if (!items) return []; + const results = Array.from(items); + if (!type2) return results; + return results.filter((asset2) => asset2.type === type2); + } +}; +AssetRegistry.EVENT_LOAD = "load"; +AssetRegistry.EVENT_ADD = "add"; +AssetRegistry.EVENT_REMOVE = "remove"; +AssetRegistry.EVENT_ERROR = "error"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/bundle/bundle-registry.js +var BundleRegistry = class { + constructor(assets) { + this._idToBundle = /* @__PURE__ */ new Map(); + this._assetToBundles = /* @__PURE__ */ new Map(); + this._urlsToBundles = /* @__PURE__ */ new Map(); + this._fileRequests = /* @__PURE__ */ new Map(); + this._assets = assets; + this._assets.bundles = this; + this._assets.on("add", this._onAssetAdd, this); + this._assets.on("remove", this._onAssetRemove, this); + } + _onAssetAdd(asset2) { + if (asset2.type === "bundle") { + this._idToBundle.set(asset2.id, asset2); + this._assets.on(`load:start:${asset2.id}`, this._onBundleLoadStart, this); + this._assets.on(`load:${asset2.id}`, this._onBundleLoad, this); + this._assets.on(`error:${asset2.id}`, this._onBundleError, this); + const assetIds = asset2.data.assets; + for (let i = 0; i < assetIds.length; i++) { + this._indexAssetInBundle(assetIds[i], asset2); + } + } else { + if (this._assetToBundles.has(asset2.id)) { + this._indexAssetFileUrls(asset2); + } + } + } + _unbindAssetEvents(id12) { + this._assets.off("load:start:" + id12, this._onBundleLoadStart, this); + this._assets.off("load:" + id12, this._onBundleLoad, this); + this._assets.off("error:" + id12, this._onBundleError, this); + } + _indexAssetInBundle(id12, bundle) { + let bundles = this._assetToBundles.get(id12); + if (!bundles) { + bundles = /* @__PURE__ */ new Set(); + this._assetToBundles.set(id12, bundles); + } + bundles.add(bundle); + const asset2 = this._assets.get(id12); + if (asset2) this._indexAssetFileUrls(asset2); + } + _indexAssetFileUrls(asset2) { + const urls = this._getAssetFileUrls(asset2); + if (!urls) return; + for (let i = 0; i < urls.length; i++) { + const bundles = this._assetToBundles.get(asset2.id); + if (!bundles) continue; + this._urlsToBundles.set(urls[i], bundles); + } + } + _getAssetFileUrls(asset2) { + let url = asset2.getFileUrl(); + if (!url) return null; + url = url.split("?")[0]; + const urls = [url]; + if (asset2.type === "font") { + const numFiles = asset2.data.info.maps.length; + for (let i = 1; i < numFiles; i++) { + urls.push(url.replace(".png", i + ".png")); + } + } + return urls; + } + _onAssetRemove(asset2) { + if (asset2.type === "bundle") { + this._idToBundle.delete(asset2.id); + this._unbindAssetEvents(asset2.id); + const assetIds = asset2.data.assets; + for (let i = 0; i < assetIds.length; i++) { + const bundles = this._assetToBundles.get(assetIds[i]); + if (!bundles) continue; + bundles.delete(asset2); + if (bundles.size === 0) { + this._assetToBundles.delete(assetIds[i]); + for (const [url, otherBundles] of this._urlsToBundles) { + if (otherBundles !== bundles) continue; + this._urlsToBundles.delete(url); + } + } + } + this._onBundleError(`Bundle ${asset2.id} was removed`); + } else { + const bundles = this._assetToBundles.get(asset2.id); + if (!bundles) return; + this._assetToBundles.delete(asset2.id); + const urls = this._getAssetFileUrls(asset2); + if (!urls) return; + for (let i = 0; i < urls.length; i++) { + this._urlsToBundles.delete(urls[i]); + } + } + } + _onBundleLoadStart(asset2) { + asset2.resource.on("add", (url, data2) => { + const callbacks = this._fileRequests.get(url); + if (!callbacks) return; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, data2); + } + this._fileRequests.delete(url); + }); + } + _onBundleLoad(asset2) { + if (!asset2.resource) { + this._onBundleError(`Bundle ${asset2.id} failed to load`); + return; + } + if (!this._fileRequests) return; + for (const [url, requests] of this._fileRequests) { + const bundles = this._urlsToBundles.get(url); + if (!bundles || !bundles.has(asset2)) continue; + const decodedUrl = decodeURIComponent(url); + let err, data2; + if (asset2.resource.has(decodedUrl)) { + data2 = asset2.resource.get(decodedUrl); + } else if (asset2.resource.loaded) { + err = `Bundle ${asset2.id} does not contain URL ${url}`; + } else { + continue; + } + for (let i = 0; i < requests.length; i++) { + requests[i](err, err || data2); + } + this._fileRequests.delete(url); + } + } + _onBundleError(err) { + for (const [url, requests] of this._fileRequests) { + const bundle = this._findLoadedOrLoadingBundleForUrl(url); + if (!bundle) { + for (let i = 0; i < requests.length; i++) requests[i](err); + this._fileRequests.delete(url); + } + } + } + _findLoadedOrLoadingBundleForUrl(url) { + const bundles = this._urlsToBundles.get(url); + if (!bundles) return null; + let candidate = null; + for (const bundle of bundles) { + if (bundle.loaded && bundle.resource) { + return bundle; + } else if (bundle.loading) { + candidate = bundle; + } + } + return candidate; + } + listBundlesForAsset(asset2) { + const bundles = this._assetToBundles.get(asset2.id); + if (bundles) return Array.from(bundles); + return null; + } + list() { + return Array.from(this._idToBundle.values()); + } + hasUrl(url) { + return this._urlsToBundles.has(url); + } + urlIsLoadedOrLoading(url) { + return !!this._findLoadedOrLoadingBundleForUrl(url); + } + loadUrl(url, callback) { + const bundle = this._findLoadedOrLoadingBundleForUrl(url); + if (!bundle) { + callback(`URL ${url} not found in any bundles`); + return; + } + if (bundle.loaded) { + const decodedUrl = decodeURIComponent(url); + if (bundle.resource.has(decodedUrl)) { + callback(null, bundle.resource.get(decodedUrl)); + return; + } else if (bundle.resource.loaded) { + callback(`Bundle ${bundle.id} does not contain URL ${url}`); + return; + } + } + let callbacks = this._fileRequests.get(url); + if (!callbacks) { + callbacks = []; + this._fileRequests.set(url, callbacks); + } + callbacks.push(callback); + } + destroy() { + this._assets.off("add", this._onAssetAdd, this); + this._assets.off("remove", this._onAssetRemove, this); + for (const id12 of this._idToBundle.keys()) { + this._unbindAssetEvents(id12); + } + this._assets = null; + this._idToBundle.clear(); + this._idToBundle = null; + this._assetToBundles.clear(); + this._assetToBundles = null; + this._urlsToBundles.clear(); + this._urlsToBundles = null; + this._fileRequests.clear(); + this._fileRequests = null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/registry.js +var ComponentSystemRegistry = class extends EventHandler { + constructor() { + super(); + this.anim = void 0; + this.animation = void 0; + this.audiolistener = void 0; + this.audiosource = void 0; + this.button = void 0; + this.camera = void 0; + this.collision = void 0; + this.element = void 0; + this.joint = void 0; + this.layoutchild = void 0; + this.layoutgroup = void 0; + this.light = void 0; + this.model = void 0; + this.particlesystem = void 0; + this.render = void 0; + this.rigidbody = void 0; + this.screen = void 0; + this.script = void 0; + this.scrollbar = void 0; + this.scrollview = void 0; + this.sound = void 0; + this.sprite = void 0; + this.zone = void 0; + this.list = []; + } + add(system) { + const id12 = system.id; + if (this[id12]) { + throw new Error(`ComponentSystem name '${id12}' already registered or not allowed`); + } + this[id12] = system; + this.list.push(system); + } + remove(system) { + const id12 = system.id; + if (!this[id12]) { + throw new Error(`No ComponentSystem named '${id12}' registered`); + } + delete this[id12]; + const index = this.list.indexOf(this[id12]); + if (index !== -1) { + this.list.splice(index, 1); + } + } + destroy() { + this.off(); + for (let i = 0; i < this.list.length; i++) { + this.list[i].destroy(); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/bundle/bundle.js +var Bundle = class extends EventHandler { + constructor(...args) { + super(...args); + this._index = /* @__PURE__ */ new Map(); + this._loaded = false; + } + addFile(url, data2) { + if (this._index.has(url)) return; + this._index.set(url, data2); + this.fire("add", url, data2); + } + has(url) { + return this._index.has(url); + } + get(url) { + return this._index.get(url) || null; + } + destroy() { + this._index.clear(); + } + set loaded(value) { + if (!value || this._loaded) return; + this._loaded = true; + this.fire("load"); + } + get loaded() { + return this._loaded; + } +}; +Bundle.EVENT_ADD = "add"; +Bundle.EVENT_LOAD = "load"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/untar.js +var Untar = class extends EventHandler { + constructor(fetchPromise, assetsPrefix = "") { + super(); + this.headerSize = 512; + this.paddingSize = 512; + this.bytesRead = 0; + this.bytesReceived = 0; + this.headerRead = false; + this.reader = null; + this.data = new Uint8Array(0); + this.decoder = null; + this.prefix = ""; + this.fileName = ""; + this.fileSize = 0; + this.fileType = ""; + this.ustarFormat = ""; + this.prefix = assetsPrefix || ""; + this.reader = fetchPromise.body.getReader(); + this.reader.read().then((res) => { + this.pump(res.done, res.value); + }).catch((err) => { + this.fire("error", err); + }); + } + pump(done, value) { + if (done) { + this.fire("done"); + return null; + } + this.bytesReceived += value.byteLength; + const data2 = new Uint8Array(this.data.length + value.length); + data2.set(this.data); + data2.set(value, this.data.length); + this.data = data2; + while (this.readFile()) ; + return this.reader.read().then((res) => { + this.pump(res.done, res.value); + }).catch((err) => { + this.fire("error", err); + }); + } + readFile() { + if (!this.headerRead && this.bytesReceived > this.bytesRead + this.headerSize) { + var _this$decoder; + this.headerRead = true; + const view = new DataView(this.data.buffer, this.bytesRead, this.headerSize); + (_this$decoder = this.decoder) != null ? _this$decoder : this.decoder = new TextDecoder("windows-1252"); + const headers = this.decoder.decode(view); + this.fileName = headers.substring(0, 100).replace(/\0/g, ""); + this.fileSize = parseInt(headers.substring(124, 136), 8); + this.fileType = headers.substring(156, 157); + this.ustarFormat = headers.substring(257, 263); + if (this.ustarFormat.indexOf("ustar") !== -1) { + const prefix = headers.substring(345, 500).replace(/\0/g, ""); + if (prefix.length > 0) { + this.fileName = prefix.trim() + this.fileName.trim(); + } + } + this.bytesRead += 512; + } + if (this.headerRead) { + if (this.bytesReceived < this.bytesRead + this.fileSize) { + return false; + } + if (this.fileType === "" || this.fileType === "0") { + const dataView = new DataView(this.data.buffer, this.bytesRead, this.fileSize); + const file = { + name: this.prefix + this.fileName, + size: this.fileSize, + data: dataView + }; + this.fire("file", file); + } + this.bytesRead += this.fileSize; + this.headerRead = false; + const bytesRemained = this.bytesRead % this.paddingSize; + if (bytesRemained !== 0) this.bytesRead += this.paddingSize - bytesRemained; + return true; + } + return false; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/handler.js +var ResourceHandler = class { + constructor(app2, handlerType) { + this.handlerType = ""; + this._app = void 0; + this._maxRetries = 0; + this._app = app2; + this.handlerType = handlerType; + } + set maxRetries(value) { + this._maxRetries = value; + } + get maxRetries() { + return this._maxRetries; + } + load(url, callback, asset2) { + } + open(url, data2, asset2) { + return data2; + } + patch(asset2, assets) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/bundle.js +var BundleHandler = class extends ResourceHandler { + constructor(app2) { + super(app2, "bundle"); + this._assets = app2.assets; + } + _fetchRetries(url, options, retries = 0) { + return new Promise((resolve, reject) => { + const tryFetch = () => { + fetch(url, options).then(resolve).catch((err) => { + retries++; + if (retries < this.maxRetries) { + tryFetch(); + } else { + reject(err); + } + }); + }; + tryFetch(); + }); + } + load(url, callback) { + if (typeof url === "string") { + url = { + load: url, + original: url + }; + } + this._fetchRetries(url.load, { + mode: "cors", + credentials: "include" + }, this.maxRetries).then((res) => { + const bundle = new Bundle(); + callback(null, bundle); + const untar = new Untar(res, this._assets.prefix); + untar.on("file", (file) => { + bundle.addFile(file.name, file.data); + }); + untar.on("done", () => { + bundle.loaded = true; + }); + untar.on("error", (err) => { + callback(err); + }); + }).catch((err) => { + callback(err); + }); + } + open(url, bundle) { + return bundle; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/loader.js +var ResourceLoader = class _ResourceLoader { + constructor(app2) { + this._handlers = {}; + this._requests = {}; + this._cache = {}; + this._app = app2; + } + addHandler(type2, handler) { + this._handlers[type2] = handler; + handler._loader = this; + } + removeHandler(type2) { + delete this._handlers[type2]; + } + getHandler(type2) { + return this._handlers[type2]; + } + static makeKey(url, type2) { + return `${url}-${type2}`; + } + load(url, type2, callback, asset2, options) { + const handler = this._handlers[type2]; + if (!handler) { + const err = `No resource handler for asset type: '${type2}' when loading [${url}]`; + callback(err); + return; + } + if (!url) { + this._loadNull(handler, callback, asset2); + return; + } + const key = _ResourceLoader.makeKey(url, type2); + if (this._cache[key] !== void 0) { + callback(null, this._cache[key]); + } else if (this._requests[key]) { + this._requests[key].push(callback); + } else { + this._requests[key] = [callback]; + const self2 = this; + const handleLoad = function handleLoad2(err, urlObj) { + if (err) { + self2._onFailure(key, err); + return; + } + if (urlObj.load instanceof DataView) { + if (handler.openBinary) { + if (!self2._requests[key]) return; + try { + const data2 = handler.openBinary(urlObj.load); + self2._onSuccess(key, data2); + } catch (err2) { + self2._onFailure(key, err2); + } + return; + } + urlObj.load = URL.createObjectURL(new Blob([urlObj.load])); + if (asset2) { + if (asset2.urlObject) URL.revokeObjectURL(asset2.urlObject); + asset2.urlObject = urlObj.load; + } + } + handler.load(urlObj, function(err2, data2, extra) { + if (!self2._requests[key]) { + return; + } + if (err2) { + self2._onFailure(key, err2); + return; + } + try { + self2._onSuccess(key, handler.open(urlObj.original, data2, asset2), extra); + } catch (e) { + self2._onFailure(key, e); + } + }, asset2); + }; + const normalizedUrl = url.split("?")[0]; + if (this._app.enableBundles && this._app.bundles.hasUrl(normalizedUrl) && !(options && options.bundlesIgnore)) { + if (!this._app.bundles.urlIsLoadedOrLoading(normalizedUrl)) { + var _this$_app$assets; + const bundles = this._app.bundles.listBundlesForAsset(asset2); + let bundle; + if (options && options.bundlesFilter) { + bundle = options.bundlesFilter(bundles); + } + if (!bundle) { + bundles == null || bundles.sort((a, b) => { + return a.file.size - b.file.size; + }); + bundle = bundles == null ? void 0 : bundles[0]; + } + if (bundle) (_this$_app$assets = this._app.assets) == null || _this$_app$assets.load(bundle); + } + this._app.bundles.loadUrl(normalizedUrl, function(err, fileUrlFromBundle) { + handleLoad(err, { + load: fileUrlFromBundle, + original: normalizedUrl + }); + }); + } else { + handleLoad(null, { + load: url, + original: asset2 && asset2.file.filename || url + }); + } + } + } + _loadNull(handler, callback, asset2) { + const onLoad = function onLoad2(err, data2, extra) { + if (err) { + callback(err); + } else { + try { + callback(null, handler.open(null, data2, asset2), extra); + } catch (e) { + callback(e); + } + } + }; + handler.load(null, onLoad, asset2); + } + _onSuccess(key, result, extra) { + if (result !== null) { + this._cache[key] = result; + } else { + delete this._cache[key]; + } + for (let i = 0; i < this._requests[key].length; i++) { + this._requests[key][i](null, result, extra); + } + delete this._requests[key]; + } + _onFailure(key, err) { + console.error(err); + if (this._requests[key]) { + for (let i = 0; i < this._requests[key].length; i++) { + this._requests[key][i](err); + } + delete this._requests[key]; + } + } + open(type2, data2) { + const handler = this._handlers[type2]; + if (!handler) { + console.warn("No resource handler found for: " + type2); + return data2; + } + return handler.open(null, data2); + } + patch(asset2, assets) { + const handler = this._handlers[asset2.type]; + if (!handler) { + console.warn("No resource handler found for: " + asset2.type); + return; + } + if (handler.patch) { + handler.patch(asset2, assets); + } + } + clearCache(url, type2) { + const key = _ResourceLoader.makeKey(url, type2); + delete this._cache[key]; + } + getFromCache(url, type2) { + const key = _ResourceLoader.makeKey(url, type2); + if (this._cache[key]) { + return this._cache[key]; + } + return void 0; + } + enableRetry(maxRetries = 5) { + maxRetries = Math.max(0, maxRetries) || 0; + for (const key in this._handlers) { + this._handlers[key].maxRetries = maxRetries; + } + } + disableRetry() { + for (const key in this._handlers) { + this._handlers[key].maxRetries = 0; + } + } + destroy() { + this._handlers = {}; + this._requests = {}; + this._cache = {}; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/i18n/i18n-parser.js +var I18nParser = class { + _validate(data2) { + if (!data2.header) { + throw new Error('pc.I18n#addData: Missing "header" field'); + } + if (!data2.header.version) { + throw new Error('pc.I18n#addData: Missing "header.version" field'); + } + if (data2.header.version !== 1) { + throw new Error('pc.I18n#addData: Invalid "header.version" field'); + } + if (!data2.data) { + throw new Error('pc.I18n#addData: Missing "data" field'); + } else if (!Array.isArray(data2.data)) { + throw new Error('pc.I18n#addData: "data" field must be an array'); + } + for (let i = 0, len = data2.data.length; i < len; i++) { + const entry = data2.data[i]; + if (!entry.info) { + throw new Error(`pc.I18n#addData: missing "data[${i}].info" field`); + } + if (!entry.info.locale) { + throw new Error(`pc.I18n#addData: missing "data[${i}].info.locale" field`); + } + if (typeof entry.info.locale !== "string") { + throw new Error(`pc.I18n#addData: "data[${i}].info.locale" must be a string`); + } + if (!entry.messages) { + throw new Error(`pc.I18n#addData: missing "data[${i}].messages" field`); + } + } + } + parse(data2) { + return data2.data; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/i18n/i18n.js +var I18n = class extends EventHandler { + constructor(app2) { + super(); + this.locale = DEFAULT_LOCALE; + this._translations = {}; + this._availableLangs = {}; + this._app = app2; + this._assets = []; + this._parser = new I18nParser(); + } + set assets(value) { + const index = {}; + for (let _i = 0, len = value.length; _i < len; _i++) { + const id12 = value[_i] instanceof Asset ? value[_i].id : value[_i]; + index[id12] = true; + } + let i = this._assets.length; + while (i--) { + const id12 = this._assets[i]; + if (!index[id12]) { + this._app.assets.off("add:" + id12, this._onAssetAdd, this); + const asset2 = this._app.assets.get(id12); + if (asset2) { + this._onAssetRemove(asset2); + } + this._assets.splice(i, 1); + } + } + for (const id12 in index) { + const idNum = parseInt(id12, 10); + if (this._assets.indexOf(idNum) !== -1) continue; + this._assets.push(idNum); + const asset2 = this._app.assets.get(idNum); + if (!asset2) { + this._app.assets.once("add:" + idNum, this._onAssetAdd, this); + } else { + this._onAssetAdd(asset2); + } + } + } + get assets() { + return this._assets; + } + set locale(value) { + if (this._locale === value) { + return; + } + let lang = getLang(value); + if (lang === "in") { + lang = "id"; + value = replaceLang(value, lang); + if (this._locale === value) { + return; + } + } + const old = this._locale; + this._locale = value; + this._lang = lang; + this._pluralFn = getPluralFn(this._lang); + this.fire("set:locale", value, old); + } + get locale() { + return this._locale; + } + static findAvailableLocale(desiredLocale, availableLocales) { + return findAvailableLocale(desiredLocale, availableLocales); + } + findAvailableLocale(desiredLocale) { + if (this._translations[desiredLocale]) { + return desiredLocale; + } + const lang = getLang(desiredLocale); + return this._findFallbackLocale(desiredLocale, lang); + } + getText(key, locale) { + let result = key; + let lang; + if (!locale) { + locale = this._locale; + lang = this._lang; + } + let translations = this._translations[locale]; + if (!translations) { + if (!lang) { + lang = getLang(locale); + } + locale = this._findFallbackLocale(locale, lang); + translations = this._translations[locale]; + } + if (translations && translations.hasOwnProperty(key)) { + result = translations[key]; + if (Array.isArray(result)) { + result = result[0]; + } + if (result === null || result === void 0) { + result = key; + } + } + return result; + } + getPluralText(key, n, locale) { + let result = key; + let lang; + let pluralFn; + if (!locale) { + locale = this._locale; + lang = this._lang; + pluralFn = this._pluralFn; + } else { + lang = getLang(locale); + pluralFn = getPluralFn(lang); + } + let translations = this._translations[locale]; + if (!translations) { + locale = this._findFallbackLocale(locale, lang); + lang = getLang(locale); + pluralFn = getPluralFn(lang); + translations = this._translations[locale]; + } + if (translations && translations[key] && pluralFn) { + const index = pluralFn(n); + result = translations[key][index]; + if (result === null || result === void 0) { + result = key; + } + } + return result; + } + addData(data2) { + let parsed; + try { + parsed = this._parser.parse(data2); + } catch (err) { + console.error(err); + return; + } + for (let i = 0, len = parsed.length; i < len; i++) { + const entry = parsed[i]; + const locale = entry.info.locale; + const messages = entry.messages; + if (!this._translations[locale]) { + this._translations[locale] = {}; + const lang = getLang(locale); + if (!this._availableLangs[lang]) { + this._availableLangs[lang] = locale; + } + } + Object.assign(this._translations[locale], messages); + this.fire("data:add", locale, messages); + } + } + removeData(data2) { + let parsed; + try { + parsed = this._parser.parse(data2); + } catch (err) { + console.error(err); + return; + } + for (let i = 0, len = parsed.length; i < len; i++) { + const entry = parsed[i]; + const locale = entry.info.locale; + const translations = this._translations[locale]; + if (!translations) continue; + const messages = entry.messages; + for (const key in messages) { + delete translations[key]; + } + if (Object.keys(translations).length === 0) { + delete this._translations[locale]; + delete this._availableLangs[getLang(locale)]; + } + this.fire("data:remove", locale, messages); + } + } + destroy() { + this._translations = null; + this._availableLangs = null; + this._assets = null; + this._parser = null; + this.off(); + } + _findFallbackLocale(locale, lang) { + let result = DEFAULT_LOCALE_FALLBACKS[locale]; + if (result && this._translations[result]) { + return result; + } + result = DEFAULT_LOCALE_FALLBACKS[lang]; + if (result && this._translations[result]) { + return result; + } + result = this._availableLangs[lang]; + if (result && this._translations[result]) { + return result; + } + return DEFAULT_LOCALE; + } + _onAssetAdd(asset2) { + asset2.on("load", this._onAssetLoad, this); + asset2.on("change", this._onAssetChange, this); + asset2.on("remove", this._onAssetRemove, this); + asset2.on("unload", this._onAssetUnload, this); + if (asset2.resource) { + this._onAssetLoad(asset2); + } + } + _onAssetLoad(asset2) { + this.addData(asset2.resource); + } + _onAssetChange(asset2) { + if (asset2.resource) { + this.addData(asset2.resource); + } + } + _onAssetRemove(asset2) { + asset2.off("load", this._onAssetLoad, this); + asset2.off("change", this._onAssetChange, this); + asset2.off("remove", this._onAssetRemove, this); + asset2.off("unload", this._onAssetUnload, this); + if (asset2.resource) { + this.removeData(asset2.resource); + } + this._app.assets.once("add:" + asset2.id, this._onAssetAdd, this); + } + _onAssetUnload(asset2) { + if (asset2.resource) { + this.removeData(asset2.resource); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/script/script-registry.js +var ScriptRegistry = class extends EventHandler { + constructor(app2) { + super(); + this._scripts = {}; + this._list = []; + this.app = app2; + } + destroy() { + this.app = null; + this.off(); + } + add(script2) { + const scriptName = script2.__name; + if (this._scripts.hasOwnProperty(scriptName)) { + setTimeout(() => { + if (script2.prototype.swap) { + const old = this._scripts[scriptName]; + const ind = this._list.indexOf(old); + this._list[ind] = script2; + this._scripts[scriptName] = script2; + this.fire("swap", scriptName, script2); + this.fire("swap:" + scriptName, script2); + } else { + console.warn(`script registry already has '${scriptName}' script, define 'swap' method for new script type to enable code hot swapping`); + } + }); + return false; + } + this._scripts[scriptName] = script2; + this._list.push(script2); + this.fire("add", scriptName, script2); + this.fire("add:" + scriptName, script2); + setTimeout(() => { + if (!this._scripts.hasOwnProperty(scriptName)) return; + if (!this.app || !this.app.systems || !this.app.systems.script) { + return; + } + const components = this.app.systems.script._components; + let attributes; + const scriptInstances = []; + const scriptInstancesInitialized = []; + for (components.loopIndex = 0; components.loopIndex < components.length; components.loopIndex++) { + const component = components.items[components.loopIndex]; + if (component._scriptsIndex[scriptName] && component._scriptsIndex[scriptName].awaiting) { + if (component._scriptsData && component._scriptsData[scriptName]) attributes = component._scriptsData[scriptName].attributes; + const scriptInstance = component.create(scriptName, { + preloading: true, + ind: component._scriptsIndex[scriptName].ind, + attributes + }); + if (scriptInstance) scriptInstances.push(scriptInstance); + } + } + for (let i = 0; i < scriptInstances.length; i++) scriptInstances[i].__initializeAttributes(); + for (let i = 0; i < scriptInstances.length; i++) { + if (scriptInstances[i].enabled) { + scriptInstances[i]._initialized = true; + scriptInstancesInitialized.push(scriptInstances[i]); + if (scriptInstances[i].initialize) scriptInstances[i].initialize(); + } + } + for (let i = 0; i < scriptInstancesInitialized.length; i++) { + if (!scriptInstancesInitialized[i].enabled || scriptInstancesInitialized[i]._postInitialized) { + continue; + } + scriptInstancesInitialized[i]._postInitialized = true; + if (scriptInstancesInitialized[i].postInitialize) scriptInstancesInitialized[i].postInitialize(); + } + }); + return true; + } + remove(nameOrType) { + let scriptType = nameOrType; + let scriptName = nameOrType; + if (typeof scriptName !== "string") { + scriptName = scriptType.__name; + } else { + scriptType = this.get(scriptName); + } + if (this.get(scriptName) !== scriptType) return false; + delete this._scripts[scriptName]; + const ind = this._list.indexOf(scriptType); + this._list.splice(ind, 1); + this.fire("remove", scriptName, scriptType); + this.fire("remove:" + scriptName, scriptType); + return true; + } + get(name) { + return this._scripts[name] || null; + } + has(nameOrType) { + if (typeof nameOrType === "string") { + return this._scripts.hasOwnProperty(nameOrType); + } + if (!nameOrType) return false; + const scriptName = nameOrType.__name; + return this._scripts[scriptName] === nameOrType; + } + list() { + return this._list; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/entity.js +var _enableList = []; +var Entity = class _Entity extends GraphNode { + constructor(name, app2 = getApplication()) { + super(name); + this.anim = void 0; + this.animation = void 0; + this.audiolistener = void 0; + this.button = void 0; + this.camera = void 0; + this.collision = void 0; + this.element = void 0; + this.gsplat = void 0; + this.layoutchild = void 0; + this.layoutgroup = void 0; + this.light = void 0; + this.model = void 0; + this.particlesystem = void 0; + this.render = void 0; + this.rigidbody = void 0; + this.screen = void 0; + this.script = void 0; + this.scrollbar = void 0; + this.scrollview = void 0; + this.sound = void 0; + this.sprite = void 0; + this.c = {}; + this._app = void 0; + this._destroying = false; + this._guid = null; + this._template = false; + this._app = app2; + } + addComponent(type2, data2) { + const system = this._app.systems[type2]; + if (!system) { + return null; + } + if (this.c[type2]) { + return null; + } + return system.addComponent(this, data2); + } + removeComponent(type2) { + const system = this._app.systems[type2]; + if (!system) { + return; + } + if (!this.c[type2]) { + return; + } + system.removeComponent(this); + } + findComponent(type2) { + const entity = this.findOne(function(node) { + return node.c && node.c[type2]; + }); + return entity && entity.c[type2]; + } + findComponents(type2) { + const entities = this.find(function(node) { + return node.c && node.c[type2]; + }); + return entities.map(function(entity) { + return entity.c[type2]; + }); + } + findScript(nameOrType) { + const entity = this.findOne((node) => { + var _node$c; + return (_node$c = node.c) == null || (_node$c = _node$c.script) == null ? void 0 : _node$c.has(nameOrType); + }); + return entity == null ? void 0 : entity.c.script.get(nameOrType); + } + findScripts(nameOrType) { + const entities = this.find((node) => { + var _node$c2; + return (_node$c2 = node.c) == null || (_node$c2 = _node$c2.script) == null ? void 0 : _node$c2.has(nameOrType); + }); + return entities.map((entity) => entity.c.script.get(nameOrType)); + } + getGuid() { + if (!this._guid) { + this.setGuid(guid.create()); + } + return this._guid; + } + setGuid(guid2) { + const index = this._app._entityIndex; + if (this._guid) { + delete index[this._guid]; + } + this._guid = guid2; + index[this._guid] = this; + } + _notifyHierarchyStateChanged(node, enabled) { + let enableFirst = false; + if (node === this && _enableList.length === 0) enableFirst = true; + node._beingEnabled = true; + node._onHierarchyStateChanged(enabled); + if (node._onHierarchyStatePostChanged) _enableList.push(node); + const c2 = node._children; + for (let i = 0, len = c2.length; i < len; i++) { + if (c2[i]._enabled) this._notifyHierarchyStateChanged(c2[i], enabled); + } + node._beingEnabled = false; + if (enableFirst) { + for (let i = 0; i < _enableList.length; i++) { + _enableList[i]._onHierarchyStatePostChanged(); + } + _enableList.length = 0; + } + } + _onHierarchyStateChanged(enabled) { + super._onHierarchyStateChanged(enabled); + const components = this.c; + for (const type2 in components) { + if (components.hasOwnProperty(type2)) { + const component = components[type2]; + if (component.enabled) { + if (enabled) { + component.onEnable(); + } else { + component.onDisable(); + } + } + } + } + } + _onHierarchyStatePostChanged() { + const components = this.c; + for (const type2 in components) { + if (components.hasOwnProperty(type2)) components[type2].onPostStateChange(); + } + } + findByGuid(guid2) { + if (this._guid === guid2) return this; + const e = this._app._entityIndex[guid2]; + if (e && (e === this || e.isDescendantOf(this))) { + return e; + } + return null; + } + destroy() { + this._destroying = true; + for (const name in this.c) { + this.c[name].enabled = false; + } + for (const name in this.c) { + this.c[name].system.removeComponent(this); + } + super.destroy(); + if (this._guid) { + delete this._app._entityIndex[this._guid]; + } + this._destroying = false; + } + clone() { + const duplicatedIdsMap = {}; + const clone = this._cloneRecursively(duplicatedIdsMap); + duplicatedIdsMap[this.getGuid()] = clone; + resolveDuplicatedEntityReferenceProperties(this, this, clone, duplicatedIdsMap); + return clone; + } + _cloneRecursively(duplicatedIdsMap) { + const clone = new this.constructor(void 0, this._app); + super._cloneInternal(clone); + for (const type2 in this.c) { + const component = this.c[type2]; + component.system.cloneComponent(this, clone); + } + for (let i = 0; i < this._children.length; i++) { + const oldChild = this._children[i]; + if (oldChild instanceof _Entity) { + const newChild = oldChild._cloneRecursively(duplicatedIdsMap); + clone.addChild(newChild); + duplicatedIdsMap[oldChild.getGuid()] = newChild; + } + } + return clone; + } +}; +Entity.EVENT_DESTROY = "destroy"; +function resolveDuplicatedEntityReferenceProperties(oldSubtreeRoot, oldEntity, newEntity, duplicatedIdsMap) { + if (oldEntity instanceof Entity) { + const components = oldEntity.c; + for (const componentName in components) { + const component = components[componentName]; + const entityProperties = component.system.getPropertiesOfType("entity"); + for (let i = 0, len = entityProperties.length; i < len; i++) { + const propertyDescriptor = entityProperties[i]; + const propertyName = propertyDescriptor.name; + const oldEntityReferenceId = component[propertyName]; + const entityIsWithinOldSubtree = !!oldSubtreeRoot.findByGuid(oldEntityReferenceId); + if (entityIsWithinOldSubtree) { + const newEntityReferenceId = duplicatedIdsMap[oldEntityReferenceId].getGuid(); + if (newEntityReferenceId) { + newEntity.c[componentName][propertyName] = newEntityReferenceId; + } + } + } + } + if (components.script && !newEntity._app.useLegacyScriptAttributeCloning) { + newEntity.script.resolveDuplicatedEntityReferenceProperties(components.script, duplicatedIdsMap); + } + if (components.render) { + newEntity.render.resolveDuplicatedEntityReferenceProperties(components.render, duplicatedIdsMap); + } + if (components.anim) { + newEntity.anim.resolveDuplicatedEntityReferenceProperties(components.anim, duplicatedIdsMap); + } + const _old = oldEntity.children.filter(function(e) { + return e instanceof Entity; + }); + const _new = newEntity.children.filter(function(e) { + return e instanceof Entity; + }); + for (let i = 0, len = _old.length; i < len; i++) { + resolveDuplicatedEntityReferenceProperties(oldSubtreeRoot, _old[i], _new[i], duplicatedIdsMap); + } + } +} + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/scene-registry-item.js +var SceneRegistryItem = class { + constructor(name, url) { + this.name = void 0; + this.url = void 0; + this.data = null; + this._loading = false; + this._onLoadedCallbacks = []; + this.name = name; + this.url = url; + } + get loaded() { + return !!this.data; + } + get loading() { + return this._loading; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/scene-registry.js +var SceneRegistry = class { + constructor(app2) { + this._app = void 0; + this._list = []; + this._index = {}; + this._urlIndex = {}; + this._app = app2; + } + destroy() { + this._app = null; + } + list() { + return this._list; + } + add(name, url) { + if (this._index.hasOwnProperty(name)) { + return false; + } + const item = new SceneRegistryItem(name, url); + const i = this._list.push(item); + this._index[item.name] = i - 1; + this._urlIndex[item.url] = i - 1; + return true; + } + find(name) { + if (this._index.hasOwnProperty(name)) { + return this._list[this._index[name]]; + } + return null; + } + findByUrl(url) { + if (this._urlIndex.hasOwnProperty(url)) { + return this._list[this._urlIndex[url]]; + } + return null; + } + remove(name) { + if (this._index.hasOwnProperty(name)) { + const idx = this._index[name]; + let item = this._list[idx]; + delete this._urlIndex[item.url]; + delete this._index[name]; + this._list.splice(idx, 1); + for (let i = 0; i < this._list.length; i++) { + item = this._list[i]; + this._index[item.name] = i; + this._urlIndex[item.url] = i; + } + } + } + _loadSceneData(sceneItem, storeInCache, callback) { + const app2 = this._app; + let url = sceneItem; + if (typeof sceneItem === "string") { + sceneItem = this.findByUrl(url) || this.find(url) || new SceneRegistryItem("Untitled", url); + } + url = sceneItem.url; + if (!url) { + callback("Cannot find scene to load"); + return; + } + if (sceneItem.loaded) { + callback(null, sceneItem); + return; + } + if (app2.assets && app2.assets.prefix && !ABSOLUTE_URL.test(url)) { + url = path.join(app2.assets.prefix, url); + } + sceneItem._onLoadedCallbacks.push(callback); + if (!sceneItem._loading) { + const handler = app2.loader.getHandler("hierarchy"); + handler.load(url, (err, data2) => { + sceneItem.data = data2; + sceneItem._loading = false; + for (let i = 0; i < sceneItem._onLoadedCallbacks.length; i++) { + sceneItem._onLoadedCallbacks[i](err, sceneItem); + } + if (!storeInCache) { + sceneItem.data = null; + } + sceneItem._onLoadedCallbacks.length = 0; + }); + } + sceneItem._loading = true; + } + loadSceneData(sceneItem, callback) { + this._loadSceneData(sceneItem, true, callback); + } + unloadSceneData(sceneItem) { + if (typeof sceneItem === "string") { + sceneItem = this.findByUrl(sceneItem); + } + if (sceneItem) { + sceneItem.data = null; + } + } + _loadSceneHierarchy(sceneItem, onBeforeAddHierarchy, callback) { + this._loadSceneData(sceneItem, false, (err, sceneItem2) => { + if (err) { + if (callback) { + callback(err); + } + return; + } + if (onBeforeAddHierarchy) { + onBeforeAddHierarchy(sceneItem2); + } + const app2 = this._app; + const _loaded = () => { + const handler = app2.loader.getHandler("hierarchy"); + app2.systems.script.preloading = true; + const entity = handler.open(sceneItem2.url, sceneItem2.data); + app2.systems.script.preloading = false; + app2.loader.clearCache(sceneItem2.url, "hierarchy"); + app2.root.addChild(entity); + app2.systems.fire("initialize", entity); + app2.systems.fire("postInitialize", entity); + app2.systems.fire("postPostInitialize", entity); + if (callback) callback(null, entity); + }; + app2._preloadScripts(sceneItem2.data, _loaded); + }); + } + loadSceneHierarchy(sceneItem, callback) { + this._loadSceneHierarchy(sceneItem, null, callback); + } + loadSceneSettings(sceneItem, callback) { + this._loadSceneData(sceneItem, false, (err, sceneItem2) => { + if (!err) { + this._app.applySceneSettings(sceneItem2.data.settings); + if (callback) { + callback(null); + } + } else { + if (callback) { + callback(err); + } + } + }); + } + changeScene(sceneItem, callback) { + const app2 = this._app; + const onBeforeAddHierarchy = (sceneItem2) => { + const { + children + } = app2.root; + while (children.length) { + children[0].destroy(); + } + app2.applySceneSettings(sceneItem2.data.settings); + }; + this._loadSceneHierarchy(sceneItem, onBeforeAddHierarchy, callback); + } + loadScene(url, callback) { + const app2 = this._app; + const handler = app2.loader.getHandler("scene"); + if (app2.assets && app2.assets.prefix && !ABSOLUTE_URL.test(url)) { + url = path.join(app2.assets.prefix, url); + } + handler.load(url, (err, data2) => { + if (!err) { + const _loaded = () => { + app2.systems.script.preloading = true; + const scene2 = handler.open(url, data2); + const sceneItem = this.findByUrl(url); + if (sceneItem && !sceneItem.loaded) { + sceneItem.data = data2; + } + app2.systems.script.preloading = false; + app2.loader.clearCache(url, "scene"); + app2.loader.patch({ + resource: scene2, + type: "scene" + }, app2.assets); + app2.root.addChild(scene2.root); + if (app2.systems.rigidbody && typeof Ammo !== "undefined") { + app2.systems.rigidbody.gravity.set(scene2._gravity.x, scene2._gravity.y, scene2._gravity.z); + } + if (callback) { + callback(null, scene2); + } + }; + app2._preloadScripts(data2, _loaded); + } else { + if (callback) { + callback(err); + } + } + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/stats.js +var ApplicationStats = class { + constructor(device) { + this.frame = { + fps: 0, + ms: 0, + dt: 0, + updateStart: 0, + updateTime: 0, + renderStart: 0, + renderTime: 0, + physicsStart: 0, + physicsTime: 0, + cullTime: 0, + sortTime: 0, + skinTime: 0, + morphTime: 0, + instancingTime: 0, + triangles: 0, + otherPrimitives: 0, + shaders: 0, + materials: 0, + cameras: 0, + shadowMapUpdates: 0, + shadowMapTime: 0, + depthMapTime: 0, + forwardTime: 0, + lightClustersTime: 0, + lightClusters: 0, + _timeToCountFrames: 0, + _fpsAccum: 0 + }; + this.drawCalls = { + forward: 0, + depth: 0, + shadow: 0, + immediate: 0, + misc: 0, + total: 0, + skinned: 0, + instanced: 0, + removedByInstancing: 0 + }; + this.misc = { + renderTargetCreationTime: 0 + }; + this.particles = { + updatesPerFrame: 0, + _updatesPerFrame: 0, + frameTime: 0, + _frameTime: 0 + }; + this.shaders = device._shaderStats; + this.vram = device._vram; + Object.defineProperty(this.vram, "totalUsed", { + get: function() { + return this.tex + this.vb + this.ib; + } + }); + Object.defineProperty(this.vram, "geom", { + get: function() { + return this.vb + this.ib; + } + }); + } + get scene() { + return getApplication().scene._stats; + } + get lightmapper() { + var _getApplication$light; + return (_getApplication$light = getApplication().lightmapper) == null ? void 0 : _getApplication$light.stats; + } + get batcher() { + const batcher = getApplication()._batcher; + return batcher ? batcher._stats : null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/app-base.js +var Progress = class { + constructor(length) { + this.length = length; + this.count = 0; + } + inc() { + this.count++; + } + done() { + return this.count === this.length; + } +}; +var app = null; +var AppBase = class _AppBase extends EventHandler { + constructor(canvas) { + super(); + this.frameRequestId = void 0; + _AppBase._applications[canvas.id] = this; + setApplication(this); + app = this; + this._destroyRequested = false; + this._inFrameUpdate = false; + this._time = 0; + this.timeScale = 1; + this.maxDeltaTime = 0.1; + this.frame = 0; + this.autoRender = true; + this.renderNextFrame = false; + this.useLegacyScriptAttributeCloning = script.legacy; + this._librariesLoaded = false; + this._fillMode = FILLMODE_KEEP_ASPECT; + this._resolutionMode = RESOLUTION_FIXED; + this._allowResize = true; + this.context = this; + } + init(appOptions) { + const device = appOptions.graphicsDevice; + this.graphicsDevice = device; + this._initDefaultMaterial(); + this._initProgramLibrary(); + this.stats = new ApplicationStats(device); + this._soundManager = appOptions.soundManager; + this.loader = new ResourceLoader(this); + this._entityIndex = {}; + this.scene = new Scene(device); + this._registerSceneImmediate(this.scene); + this.root = new Entity(); + this.root._enabledInHierarchy = true; + this.assets = new AssetRegistry(this.loader); + if (appOptions.assetPrefix) this.assets.prefix = appOptions.assetPrefix; + this.bundles = new BundleRegistry(this.assets); + this.enableBundles = typeof TextDecoder !== "undefined"; + this.scriptsOrder = appOptions.scriptsOrder || []; + this.scripts = new ScriptRegistry(this); + this.i18n = new I18n(this); + this.scenes = new SceneRegistry(this); + this.defaultLayerWorld = new Layer({ + name: "World", + id: LAYERID_WORLD + }); + this.defaultLayerDepth = new Layer({ + name: "Depth", + id: LAYERID_DEPTH, + enabled: false, + opaqueSortMode: SORTMODE_NONE + }); + this.defaultLayerSkybox = new Layer({ + name: "Skybox", + id: LAYERID_SKYBOX, + opaqueSortMode: SORTMODE_NONE + }); + this.defaultLayerUi = new Layer({ + name: "UI", + id: LAYERID_UI, + transparentSortMode: SORTMODE_MANUAL + }); + this.defaultLayerImmediate = new Layer({ + name: "Immediate", + id: LAYERID_IMMEDIATE, + opaqueSortMode: SORTMODE_NONE + }); + const defaultLayerComposition = new LayerComposition("default"); + defaultLayerComposition.pushOpaque(this.defaultLayerWorld); + defaultLayerComposition.pushOpaque(this.defaultLayerDepth); + defaultLayerComposition.pushOpaque(this.defaultLayerSkybox); + defaultLayerComposition.pushTransparent(this.defaultLayerWorld); + defaultLayerComposition.pushOpaque(this.defaultLayerImmediate); + defaultLayerComposition.pushTransparent(this.defaultLayerImmediate); + defaultLayerComposition.pushTransparent(this.defaultLayerUi); + this.scene.layers = defaultLayerComposition; + AreaLightLuts.createPlaceholder(device); + this.renderer = new ForwardRenderer(device); + this.renderer.scene = this.scene; + this.frameGraph = new FrameGraph(); + this.lightmapper = null; + if (appOptions.lightmapper) { + this.lightmapper = new appOptions.lightmapper(device, this.root, this.scene, this.renderer, this.assets); + this.once("prerender", this._firstBake, this); + } + this._batcher = null; + if (appOptions.batchManager) { + this._batcher = new appOptions.batchManager(device, this.root, this.scene); + this.once("prerender", this._firstBatch, this); + } + this.keyboard = appOptions.keyboard || null; + this.mouse = appOptions.mouse || null; + this.touch = appOptions.touch || null; + this.gamepads = appOptions.gamepads || null; + this.elementInput = appOptions.elementInput || null; + if (this.elementInput) this.elementInput.app = this; + this.xr = appOptions.xr ? new appOptions.xr(this) : null; + if (this.elementInput) this.elementInput.attachSelectEvents(); + this._inTools = false; + this._skyboxAsset = null; + this._scriptPrefix = appOptions.scriptPrefix || ""; + if (this.enableBundles) { + this.loader.addHandler("bundle", new BundleHandler(this)); + } + appOptions.resourceHandlers.forEach((resourceHandler) => { + const handler = new resourceHandler(this); + this.loader.addHandler(handler.handlerType, handler); + }); + this.systems = new ComponentSystemRegistry(); + appOptions.componentSystems.forEach((componentSystem) => { + this.systems.add(new componentSystem(this)); + }); + this._visibilityChangeHandler = this.onVisibilityChange.bind(this); + if (typeof document !== "undefined") { + if (document.hidden !== void 0) { + this._hiddenAttr = "hidden"; + document.addEventListener("visibilitychange", this._visibilityChangeHandler, false); + } else if (document.mozHidden !== void 0) { + this._hiddenAttr = "mozHidden"; + document.addEventListener("mozvisibilitychange", this._visibilityChangeHandler, false); + } else if (document.msHidden !== void 0) { + this._hiddenAttr = "msHidden"; + document.addEventListener("msvisibilitychange", this._visibilityChangeHandler, false); + } else if (document.webkitHidden !== void 0) { + this._hiddenAttr = "webkitHidden"; + document.addEventListener("webkitvisibilitychange", this._visibilityChangeHandler, false); + } + } + this.tick = makeTick(this); + } + static getApplication(id12) { + return id12 ? _AppBase._applications[id12] : getApplication(); + } + _initDefaultMaterial() { + const material = new StandardMaterial(); + material.name = "Default Material"; + material.shadingModel = SPECULAR_BLINN; + setDefaultMaterial(this.graphicsDevice, material); + } + _initProgramLibrary() { + const library = new ProgramLibrary(this.graphicsDevice, new StandardMaterial()); + setProgramLibrary(this.graphicsDevice, library); + } + get soundManager() { + return this._soundManager; + } + get batcher() { + return this._batcher; + } + get fillMode() { + return this._fillMode; + } + get resolutionMode() { + return this._resolutionMode; + } + configure(url, callback) { + http.get(url, (err, response) => { + if (err) { + callback(err); + return; + } + const props = response.application_properties; + const scenes = response.scenes; + const assets = response.assets; + this._parseApplicationProperties(props, (err2) => { + this._parseScenes(scenes); + this._parseAssets(assets); + if (!err2) { + callback(null); + } else { + callback(err2); + } + }); + }); + } + preload(callback) { + this.fire("preload:start"); + const assets = this.assets.list({ + preload: true + }); + const progress = new Progress(assets.length); + let _done = false; + const done = () => { + if (!this.graphicsDevice) { + return; + } + if (!_done && progress.done()) { + _done = true; + this.fire("preload:end"); + callback(); + } + }; + const total = assets.length; + if (progress.length) { + const onAssetLoad = (asset2) => { + progress.inc(); + this.fire("preload:progress", progress.count / total); + if (progress.done()) done(); + }; + const onAssetError = (err, asset2) => { + progress.inc(); + this.fire("preload:progress", progress.count / total); + if (progress.done()) done(); + }; + for (let i = 0; i < assets.length; i++) { + if (!assets[i].loaded) { + assets[i].once("load", onAssetLoad); + assets[i].once("error", onAssetError); + this.assets.load(assets[i]); + } else { + progress.inc(); + this.fire("preload:progress", progress.count / total); + if (progress.done()) done(); + } + } + } else { + done(); + } + } + _preloadScripts(sceneData, callback) { + if (!script.legacy) { + callback(); + return; + } + this.systems.script.preloading = true; + const scripts = this._getScriptReferences(sceneData); + const l = scripts.length; + const progress = new Progress(l); + const regex = /^http(s)?:\/\//; + if (l) { + const onLoad = (err, ScriptType) => { + if (err) console.error(err); + progress.inc(); + if (progress.done()) { + this.systems.script.preloading = false; + callback(); + } + }; + for (let i = 0; i < l; i++) { + let scriptUrl = scripts[i]; + if (!regex.test(scriptUrl.toLowerCase()) && this._scriptPrefix) scriptUrl = path.join(this._scriptPrefix, scripts[i]); + this.loader.load(scriptUrl, "script", onLoad); + } + } else { + this.systems.script.preloading = false; + callback(); + } + } + _parseApplicationProperties(props, callback) { + if (typeof props.maxAssetRetries === "number" && props.maxAssetRetries > 0) { + this.loader.enableRetry(props.maxAssetRetries); + } + if (!props.useDevicePixelRatio) props.useDevicePixelRatio = props.use_device_pixel_ratio; + if (!props.resolutionMode) props.resolutionMode = props.resolution_mode; + if (!props.fillMode) props.fillMode = props.fill_mode; + this._width = props.width; + this._height = props.height; + if (props.useDevicePixelRatio) { + this.graphicsDevice.maxPixelRatio = window.devicePixelRatio; + } + this.setCanvasResolution(props.resolutionMode, this._width, this._height); + this.setCanvasFillMode(props.fillMode, this._width, this._height); + if (props.layers && props.layerOrder) { + const composition = new LayerComposition("application"); + const layers = {}; + for (const key in props.layers) { + const data2 = props.layers[key]; + data2.id = parseInt(key, 10); + data2.enabled = data2.id !== LAYERID_DEPTH; + layers[key] = new Layer(data2); + } + for (let i = 0, len = props.layerOrder.length; i < len; i++) { + const sublayer = props.layerOrder[i]; + const layer = layers[sublayer.layer]; + if (!layer) continue; + if (sublayer.transparent) { + composition.pushTransparent(layer); + } else { + composition.pushOpaque(layer); + } + composition.subLayerEnabled[i] = sublayer.enabled; + } + this.scene.layers = composition; + } + if (props.batchGroups) { + const batcher = this.batcher; + if (batcher) { + for (let i = 0, len = props.batchGroups.length; i < len; i++) { + const grp = props.batchGroups[i]; + batcher.addGroup(grp.name, grp.dynamic, grp.maxAabbSize, grp.id, grp.layers); + } + } + } + if (props.i18nAssets) { + this.i18n.assets = props.i18nAssets; + } + this._loadLibraries(props.libraries, callback); + } + _loadLibraries(urls, callback) { + const len = urls.length; + let count = len; + const regex = /^http(s)?:\/\//; + if (len) { + const onLoad = (err, script2) => { + count--; + if (err) { + callback(err); + } else if (count === 0) { + this.onLibrariesLoaded(); + callback(null); + } + }; + for (let i = 0; i < len; ++i) { + let url = urls[i]; + if (!regex.test(url.toLowerCase()) && this._scriptPrefix) url = path.join(this._scriptPrefix, url); + this.loader.load(url, "script", onLoad); + } + } else { + this.onLibrariesLoaded(); + callback(null); + } + } + _parseScenes(scenes) { + if (!scenes) return; + for (let i = 0; i < scenes.length; i++) { + this.scenes.add(scenes[i].name, scenes[i].url); + } + } + _parseAssets(assets) { + const list = []; + const scriptsIndex = {}; + const bundlesIndex = {}; + if (!script.legacy) { + for (let i = 0; i < this.scriptsOrder.length; i++) { + const id12 = this.scriptsOrder[i]; + if (!assets[id12]) continue; + scriptsIndex[id12] = true; + list.push(assets[id12]); + } + if (this.enableBundles) { + for (const id12 in assets) { + if (assets[id12].type === "bundle") { + bundlesIndex[id12] = true; + list.push(assets[id12]); + } + } + } + for (const id12 in assets) { + if (scriptsIndex[id12] || bundlesIndex[id12]) continue; + list.push(assets[id12]); + } + } else { + if (this.enableBundles) { + for (const id12 in assets) { + if (assets[id12].type === "bundle") { + bundlesIndex[id12] = true; + list.push(assets[id12]); + } + } + } + for (const id12 in assets) { + if (bundlesIndex[id12]) continue; + list.push(assets[id12]); + } + } + for (let i = 0; i < list.length; i++) { + const data2 = list[i]; + const asset2 = new Asset(data2.name, data2.type, data2.file, data2.data); + asset2.id = parseInt(data2.id, 10); + asset2.preload = data2.preload ? data2.preload : false; + asset2.loaded = data2.type === "script" && data2.data && data2.data.loadingType > 0; + asset2.tags.add(data2.tags); + if (data2.i18n) { + for (const locale in data2.i18n) { + asset2.addLocalizedAssetId(locale, data2.i18n[locale]); + } + } + this.assets.add(asset2); + } + } + _getScriptReferences(scene2) { + let priorityScripts = []; + if (scene2.settings.priority_scripts) { + priorityScripts = scene2.settings.priority_scripts; + } + const _scripts = []; + const _index = {}; + for (let i = 0; i < priorityScripts.length; i++) { + _scripts.push(priorityScripts[i]); + _index[priorityScripts[i]] = true; + } + const entities = scene2.entities; + for (const key in entities) { + if (!entities[key].components.script) { + continue; + } + const scripts = entities[key].components.script.scripts; + for (let i = 0; i < scripts.length; i++) { + if (_index[scripts[i].url]) continue; + _scripts.push(scripts[i].url); + _index[scripts[i].url] = true; + } + } + return _scripts; + } + start() { + this.frame = 0; + this.fire("start", { + timestamp: now(), + target: this + }); + if (!this._librariesLoaded) { + this.onLibrariesLoaded(); + } + this.systems.fire("initialize", this.root); + this.fire("initialize"); + this.systems.fire("postInitialize", this.root); + this.systems.fire("postPostInitialize", this.root); + this.fire("postinitialize"); + this.tick(); + } + inputUpdate(dt) { + if (this.controller) { + this.controller.update(dt); + } + if (this.mouse) { + this.mouse.update(); + } + if (this.keyboard) { + this.keyboard.update(); + } + if (this.gamepads) { + this.gamepads.update(); + } + } + update(dt) { + this.frame++; + this.graphicsDevice.updateClientRect(); + if (script.legacy) this.systems.fire("fixedUpdate", 1 / 60); + this.systems.fire(this._inTools ? "toolsUpdate" : "update", dt); + this.systems.fire("animationUpdate", dt); + this.systems.fire("postUpdate", dt); + this.fire("update", dt); + this.inputUpdate(dt); + } + frameStart() { + this.graphicsDevice.frameStart(); + } + frameEnd() { + this.graphicsDevice.frameEnd(); + } + render() { + this.fire("prerender"); + this.root.syncHierarchy(); + if (this._batcher) { + this._batcher.updateAll(); + } + this.renderComposition(this.scene.layers); + this.fire("postrender"); + } + renderComposition(layerComposition) { + this.renderer.buildFrameGraph(this.frameGraph, layerComposition); + this.frameGraph.render(this.graphicsDevice); + } + _fillFrameStatsBasic(now2, dt, ms) { + const stats = this.stats.frame; + stats.dt = dt; + stats.ms = ms; + if (now2 > stats._timeToCountFrames) { + stats.fps = stats._fpsAccum; + stats._fpsAccum = 0; + stats._timeToCountFrames = now2 + 1e3; + } else { + stats._fpsAccum++; + } + this.stats.drawCalls.total = this.graphicsDevice._drawCallsPerFrame; + this.graphicsDevice._drawCallsPerFrame = 0; + } + _fillFrameStats() { + let stats = this.stats.frame; + stats.cameras = this.renderer._camerasRendered; + stats.materials = this.renderer._materialSwitches; + stats.shaders = this.graphicsDevice._shaderSwitchesPerFrame; + stats.shadowMapUpdates = this.renderer._shadowMapUpdates; + stats.shadowMapTime = this.renderer._shadowMapTime; + stats.depthMapTime = this.renderer._depthMapTime; + stats.forwardTime = this.renderer._forwardTime; + const prims = this.graphicsDevice._primsPerFrame; + stats.triangles = prims[PRIMITIVE_TRIANGLES] / 3 + Math.max(prims[PRIMITIVE_TRISTRIP] - 2, 0) + Math.max(prims[PRIMITIVE_TRIFAN] - 2, 0); + stats.cullTime = this.renderer._cullTime; + stats.sortTime = this.renderer._sortTime; + stats.skinTime = this.renderer._skinTime; + stats.morphTime = this.renderer._morphTime; + stats.lightClusters = this.renderer._lightClusters; + stats.lightClustersTime = this.renderer._lightClustersTime; + stats.otherPrimitives = 0; + for (let i = 0; i < prims.length; i++) { + if (i < PRIMITIVE_TRIANGLES) { + stats.otherPrimitives += prims[i]; + } + prims[i] = 0; + } + this.renderer._camerasRendered = 0; + this.renderer._materialSwitches = 0; + this.renderer._shadowMapUpdates = 0; + this.graphicsDevice._shaderSwitchesPerFrame = 0; + this.renderer._cullTime = 0; + this.renderer._layerCompositionUpdateTime = 0; + this.renderer._lightClustersTime = 0; + this.renderer._sortTime = 0; + this.renderer._skinTime = 0; + this.renderer._morphTime = 0; + this.renderer._shadowMapTime = 0; + this.renderer._depthMapTime = 0; + this.renderer._forwardTime = 0; + stats = this.stats.drawCalls; + stats.forward = this.renderer._forwardDrawCalls; + stats.culled = this.renderer._numDrawCallsCulled; + stats.depth = 0; + stats.shadow = this.renderer._shadowDrawCalls; + stats.skinned = this.renderer._skinDrawCalls; + stats.immediate = 0; + stats.instanced = 0; + stats.removedByInstancing = 0; + stats.misc = stats.total - (stats.forward + stats.shadow); + this.renderer._depthDrawCalls = 0; + this.renderer._shadowDrawCalls = 0; + this.renderer._forwardDrawCalls = 0; + this.renderer._numDrawCallsCulled = 0; + this.renderer._skinDrawCalls = 0; + this.renderer._immediateRendered = 0; + this.renderer._instancedDrawCalls = 0; + this.stats.misc.renderTargetCreationTime = this.graphicsDevice.renderTargetCreationTime; + stats = this.stats.particles; + stats.updatesPerFrame = stats._updatesPerFrame; + stats.frameTime = stats._frameTime; + stats._updatesPerFrame = 0; + stats._frameTime = 0; + } + setCanvasFillMode(mode, width, height) { + this._fillMode = mode; + this.resizeCanvas(width, height); + } + setCanvasResolution(mode, width, height) { + this._resolutionMode = mode; + if (mode === RESOLUTION_AUTO && width === void 0) { + width = this.graphicsDevice.canvas.clientWidth; + height = this.graphicsDevice.canvas.clientHeight; + } + this.graphicsDevice.resizeCanvas(width, height); + } + isHidden() { + return document[this._hiddenAttr]; + } + onVisibilityChange() { + if (this.isHidden()) { + if (this._soundManager) { + this._soundManager.suspend(); + } + } else { + if (this._soundManager) { + this._soundManager.resume(); + } + } + } + resizeCanvas(width, height) { + if (!this._allowResize) return void 0; + if (this.xr && this.xr.session) return void 0; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + if (this._fillMode === FILLMODE_KEEP_ASPECT) { + const r = this.graphicsDevice.canvas.width / this.graphicsDevice.canvas.height; + const winR = windowWidth / windowHeight; + if (r > winR) { + width = windowWidth; + height = width / r; + } else { + height = windowHeight; + width = height * r; + } + } else if (this._fillMode === FILLMODE_FILL_WINDOW) { + width = windowWidth; + height = windowHeight; + } + this.graphicsDevice.canvas.style.width = width + "px"; + this.graphicsDevice.canvas.style.height = height + "px"; + this.updateCanvasSize(); + return { + width, + height + }; + } + updateCanvasSize() { + var _this$xr; + if (!this._allowResize || (_this$xr = this.xr) != null && _this$xr.active) { + return; + } + if (this._resolutionMode === RESOLUTION_AUTO) { + const canvas = this.graphicsDevice.canvas; + this.graphicsDevice.resizeCanvas(canvas.clientWidth, canvas.clientHeight); + } + } + onLibrariesLoaded() { + this._librariesLoaded = true; + if (this.systems.rigidbody) { + this.systems.rigidbody.onLibraryLoaded(); + } + } + applySceneSettings(settings) { + let asset2; + if (this.systems.rigidbody && typeof Ammo !== "undefined") { + const gravity = settings.physics.gravity; + this.systems.rigidbody.gravity.set(gravity[0], gravity[1], gravity[2]); + } + this.scene.applySettings(settings); + if (settings.render.hasOwnProperty("skybox")) { + if (settings.render.skybox) { + asset2 = this.assets.get(settings.render.skybox); + if (asset2) { + this.setSkybox(asset2); + } else { + this.assets.once("add:" + settings.render.skybox, this.setSkybox, this); + } + } else { + this.setSkybox(null); + } + } + } + setAreaLightLuts(ltcMat1, ltcMat2) { + if (ltcMat1 && ltcMat2) { + AreaLightLuts.set(this.graphicsDevice, ltcMat1, ltcMat2); + } + } + setSkybox(asset2) { + if (asset2 !== this._skyboxAsset) { + const onSkyboxRemoved = () => { + this.setSkybox(null); + }; + const onSkyboxChanged = () => { + this.scene.setSkybox(this._skyboxAsset ? this._skyboxAsset.resources : null); + }; + if (this._skyboxAsset) { + this.assets.off("load:" + this._skyboxAsset.id, onSkyboxChanged, this); + this.assets.off("remove:" + this._skyboxAsset.id, onSkyboxRemoved, this); + this._skyboxAsset.off("change", onSkyboxChanged, this); + } + this._skyboxAsset = asset2; + if (this._skyboxAsset) { + this.assets.on("load:" + this._skyboxAsset.id, onSkyboxChanged, this); + this.assets.once("remove:" + this._skyboxAsset.id, onSkyboxRemoved, this); + this._skyboxAsset.on("change", onSkyboxChanged, this); + if (this.scene.skyboxMip === 0 && !this._skyboxAsset.loadFaces) { + this._skyboxAsset.loadFaces = true; + } + this.assets.load(this._skyboxAsset); + } + onSkyboxChanged(); + } + } + _firstBake() { + var _this$lightmapper; + (_this$lightmapper = this.lightmapper) == null || _this$lightmapper.bake(null, this.scene.lightmapMode); + } + _firstBatch() { + var _this$batcher; + (_this$batcher = this.batcher) == null || _this$batcher.generate(); + } + _processTimestamp(timestamp) { + return timestamp; + } + drawLine(start, end, color, depthTest, layer) { + this.scene.drawLine(start, end, color, depthTest, layer); + } + drawLines(positions, colors, depthTest = true, layer = this.scene.defaultDrawLayer) { + this.scene.drawLines(positions, colors, depthTest, layer); + } + drawLineArrays(positions, colors, depthTest = true, layer = this.scene.defaultDrawLayer) { + this.scene.drawLineArrays(positions, colors, depthTest, layer); + } + drawWireSphere(center2, radius, color = Color.WHITE, segments = 20, depthTest = true, layer = this.scene.defaultDrawLayer) { + this.scene.immediate.drawWireSphere(center2, radius, color, segments, depthTest, layer); + } + drawWireAlignedBox(minPoint, maxPoint, color = Color.WHITE, depthTest = true, layer = this.scene.defaultDrawLayer, mat) { + this.scene.immediate.drawWireAlignedBox(minPoint, maxPoint, color, depthTest, layer, mat); + } + drawMeshInstance(meshInstance, layer = this.scene.defaultDrawLayer) { + this.scene.immediate.drawMesh(null, null, null, meshInstance, layer); + } + drawMesh(mesh, material, matrix2, layer = this.scene.defaultDrawLayer) { + this.scene.immediate.drawMesh(material, matrix2, mesh, null, layer); + } + drawQuad(matrix2, material, layer = this.scene.defaultDrawLayer) { + this.scene.immediate.drawMesh(material, matrix2, this.scene.immediate.getQuadMesh(), null, layer); + } + drawTexture(x2, y2, width, height, texture, material, layer = this.scene.defaultDrawLayer, filterable = true) { + if (filterable === false && !this.graphicsDevice.isWebGPU) return; + const matrix2 = new Mat4(); + matrix2.setTRS(new Vec3(x2, y2, 0), Quat2.IDENTITY, new Vec3(width, -height, 0)); + if (!material) { + material = new Material(); + material.cull = CULLFACE_NONE; + material.setParameter("colorMap", texture); + material.shader = filterable ? this.scene.immediate.getTextureShader() : this.scene.immediate.getUnfilterableTextureShader(); + material.update(); + } + this.drawQuad(matrix2, material, layer); + } + drawDepthTexture(x2, y2, width, height, layer = this.scene.defaultDrawLayer) { + const material = new Material(); + material.cull = CULLFACE_NONE; + material.shader = this.scene.immediate.getDepthTextureShader(); + material.update(); + this.drawTexture(x2, y2, width, height, null, material, layer); + } + destroy() { + var _this$lightmapper2, _this$xr2, _this$xr3, _this$_soundManager; + if (this._inFrameUpdate) { + this._destroyRequested = true; + return; + } + const canvasId = this.graphicsDevice.canvas.id; + this.fire("destroy", this); + this.off("librariesloaded"); + if (typeof document !== "undefined") { + document.removeEventListener("visibilitychange", this._visibilityChangeHandler, false); + document.removeEventListener("mozvisibilitychange", this._visibilityChangeHandler, false); + document.removeEventListener("msvisibilitychange", this._visibilityChangeHandler, false); + document.removeEventListener("webkitvisibilitychange", this._visibilityChangeHandler, false); + } + this._visibilityChangeHandler = null; + this.root.destroy(); + this.root = null; + if (this.mouse) { + this.mouse.off(); + this.mouse.detach(); + this.mouse = null; + } + if (this.keyboard) { + this.keyboard.off(); + this.keyboard.detach(); + this.keyboard = null; + } + if (this.touch) { + this.touch.off(); + this.touch.detach(); + this.touch = null; + } + if (this.elementInput) { + this.elementInput.detach(); + this.elementInput = null; + } + if (this.gamepads) { + this.gamepads.destroy(); + this.gamepads = null; + } + if (this.controller) { + this.controller = null; + } + this.systems.destroy(); + if (this.scene.layers) { + this.scene.layers.destroy(); + } + const assets = this.assets.list(); + for (let i = 0; i < assets.length; i++) { + assets[i].unload(); + assets[i].off(); + } + this.assets.off(); + this.bundles.destroy(); + this.bundles = null; + this.i18n.destroy(); + this.i18n = null; + const scriptHandler = this.loader.getHandler("script"); + scriptHandler == null || scriptHandler.clearCache(); + this.loader.destroy(); + this.loader = null; + this.scene.destroy(); + this.scene = null; + this.systems = null; + this.context = null; + this.scripts.destroy(); + this.scripts = null; + this.scenes.destroy(); + this.scenes = null; + (_this$lightmapper2 = this.lightmapper) == null || _this$lightmapper2.destroy(); + this.lightmapper = null; + if (this._batcher) { + this._batcher.destroy(); + this._batcher = null; + } + this._entityIndex = {}; + this.defaultLayerDepth.onPreRenderOpaque = null; + this.defaultLayerDepth.onPostRenderOpaque = null; + this.defaultLayerDepth.onDisable = null; + this.defaultLayerDepth.onEnable = null; + this.defaultLayerDepth = null; + this.defaultLayerWorld = null; + (_this$xr2 = this.xr) == null || _this$xr2.end(); + (_this$xr3 = this.xr) == null || _this$xr3.destroy(); + this.renderer.destroy(); + this.renderer = null; + this.graphicsDevice.destroy(); + this.graphicsDevice = null; + this.tick = null; + this.off(); + (_this$_soundManager = this._soundManager) == null || _this$_soundManager.destroy(); + this._soundManager = null; + script.app = null; + _AppBase._applications[canvasId] = null; + if (getApplication() === this) { + setApplication(null); + } + _AppBase.cancelTick(this); + } + static cancelTick(app2) { + if (app2.frameRequestId) { + window.cancelAnimationFrame(app2.frameRequestId); + app2.frameRequestId = void 0; + } + } + getEntityFromIndex(guid2) { + return this._entityIndex[guid2]; + } + _registerSceneImmediate(scene2) { + this.on("postrender", scene2.immediate.onPostRender, scene2.immediate); + } +}; +AppBase._applications = {}; +var _frameEndData = {}; +var makeTick = function makeTick2(_app) { + const application = _app; + return function(timestamp, frame) { + var _application$xr2; + if (!application.graphicsDevice) return; + if (application.frameRequestId) { + var _application$xr; + (_application$xr = application.xr) == null || (_application$xr = _application$xr.session) == null || _application$xr.cancelAnimationFrame(application.frameRequestId); + cancelAnimationFrame(application.frameRequestId); + application.frameRequestId = null; + } + application._inFrameUpdate = true; + setApplication(application); + app = application; + const currentTime = application._processTimestamp(timestamp) || now(); + const ms = currentTime - (application._time || currentTime); + let dt = ms / 1e3; + dt = math.clamp(dt, 0, application.maxDeltaTime); + dt *= application.timeScale; + application._time = currentTime; + if ((_application$xr2 = application.xr) != null && _application$xr2.session) { + application.frameRequestId = application.xr.session.requestAnimationFrame(application.tick); + } else { + application.frameRequestId = platform.browser || platform.worker ? requestAnimationFrame(application.tick) : null; + } + if (application.graphicsDevice.contextLost) return; + application._fillFrameStatsBasic(currentTime, dt, ms); + application.fire("frameupdate", ms); + let shouldRenderFrame = true; + if (frame) { + var _application$xr3; + shouldRenderFrame = (_application$xr3 = application.xr) == null ? void 0 : _application$xr3.update(frame); + application.graphicsDevice.defaultFramebuffer = frame.session.renderState.baseLayer.framebuffer; + } else { + application.graphicsDevice.defaultFramebuffer = null; + } + if (shouldRenderFrame) { + application.update(dt); + application.fire("framerender"); + if (application.autoRender || application.renderNextFrame) { + application.updateCanvasSize(); + application.frameStart(); + application.render(); + application.frameEnd(); + application.renderNextFrame = false; + } + _frameEndData.timestamp = now(); + _frameEndData.target = application; + application.fire("frameend", _frameEndData); + } + application._inFrameUpdate = false; + if (application._destroyRequested) { + application.destroy(); + } + }; +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/app-options.js +var AppOptions = class { + constructor() { + this.elementInput = void 0; + this.keyboard = void 0; + this.mouse = void 0; + this.touch = void 0; + this.gamepads = void 0; + this.scriptPrefix = void 0; + this.assetPrefix = void 0; + this.scriptsOrder = void 0; + this.soundManager = void 0; + this.graphicsDevice = void 0; + this.lightmapper = void 0; + this.batchManager = void 0; + this.xr = void 0; + this.componentSystems = []; + this.resourceHandlers = []; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/component.js +var Component = class _Component extends EventHandler { + constructor(system, entity) { + super(); + this.system = void 0; + this.entity = void 0; + this.system = system; + this.entity = entity; + if (this.system.schema && !this._accessorsBuilt) { + this.buildAccessors(this.system.schema); + } + this.on("set", function(name, oldValue, newValue) { + this.fire("set_" + name, name, oldValue, newValue); + }); + this.on("set_enabled", this.onSetEnabled, this); + } + static _buildAccessors(obj, schema) { + schema.forEach(function(descriptor) { + const name = typeof descriptor === "object" ? descriptor.name : descriptor; + Object.defineProperty(obj, name, { + get: function() { + return this.data[name]; + }, + set: function(value) { + const data2 = this.data; + const oldValue = data2[name]; + data2[name] = value; + this.fire("set", name, oldValue, value); + }, + configurable: true + }); + }); + obj._accessorsBuilt = true; + } + buildAccessors(schema) { + _Component._buildAccessors(this, schema); + } + onSetEnabled(name, oldValue, newValue) { + if (oldValue !== newValue) { + if (this.entity.enabled) { + if (newValue) { + this.onEnable(); + } else { + this.onDisable(); + } + } + } + } + onEnable() { + } + onDisable() { + } + onPostStateChange() { + } + get data() { + const record = this.system.store[this.entity.getGuid()]; + return record ? record.data : null; + } + set enabled(arg) { + } + get enabled() { + return true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/system.js +var ComponentSystem = class extends EventHandler { + constructor(app2) { + super(); + this.app = app2; + this.store = {}; + this.schema = []; + } + addComponent(entity, data2 = {}) { + const component = new this.ComponentType(this, entity); + const componentData = new this.DataType(); + this.store[entity.getGuid()] = { + entity, + data: componentData + }; + entity[this.id] = component; + entity.c[this.id] = component; + this.initializeComponentData(component, data2, []); + this.fire("add", entity, component); + return component; + } + removeComponent(entity) { + const record = this.store[entity.getGuid()]; + const component = entity.c[this.id]; + this.fire("beforeremove", entity, component); + delete this.store[entity.getGuid()]; + entity[this.id] = void 0; + delete entity.c[this.id]; + this.fire("remove", entity, record.data); + } + cloneComponent(entity, clone) { + const src = this.store[entity.getGuid()]; + return this.addComponent(clone, src.data); + } + initializeComponentData(component, data2 = {}, properties2) { + for (let i = 0, len = properties2.length; i < len; i++) { + const descriptor = properties2[i]; + let name, type2; + if (typeof descriptor === "object") { + name = descriptor.name; + type2 = descriptor.type; + } else { + name = descriptor; + type2 = void 0; + } + let value = data2[name]; + if (value !== void 0) { + if (type2 !== void 0) { + value = convertValue(value, type2); + } + component[name] = value; + } else { + component[name] = component.data[name]; + } + } + if (component.enabled && component.entity.enabled) { + component.onEnable(); + } + } + getPropertiesOfType(type2) { + const matchingProperties = []; + const schema = this.schema || []; + schema.forEach(function(descriptor) { + if (descriptor && typeof descriptor === "object" && descriptor.type === type2) { + matchingProperties.push(descriptor); + } + }); + return matchingProperties; + } + destroy() { + this.off(); + } +}; +function convertValue(value, type2) { + if (!value) { + return value; + } + switch (type2) { + case "rgb": + if (value instanceof Color) { + return value.clone(); + } + return new Color(value[0], value[1], value[2]); + case "rgba": + if (value instanceof Color) { + return value.clone(); + } + return new Color(value[0], value[1], value[2], value[3]); + case "vec2": + if (value instanceof Vec2) { + return value.clone(); + } + return new Vec2(value[0], value[1]); + case "vec3": + if (value instanceof Vec3) { + return value.clone(); + } + return new Vec3(value[0], value[1], value[2]); + case "vec4": + if (value instanceof Vec4) { + return value.clone(); + } + return new Vec4(value[0], value[1], value[2], value[3]); + case "boolean": + case "number": + case "string": + return value; + case "entity": + return value; + default: + throw new Error("Could not convert unhandled type: " + type2); + } +} + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/constants.js +var INTERPOLATION_STEP = 0; +var INTERPOLATION_LINEAR = 1; +var INTERPOLATION_CUBIC = 2; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-cache.js +var AnimCache = class { + constructor() { + this._left = Infinity; + this._right = -Infinity; + this._len = 0; + this._recip = 0; + this._p0 = 0; + this._p1 = 0; + this._t = 0; + this._hermite = { + valid: false, + p0: 0, + m0: 0, + p1: 0, + m1: 0 + }; + } + update(time2, input2) { + if (time2 < this._left || time2 >= this._right) { + const len = input2.length; + if (!len) { + this._left = -Infinity; + this._right = Infinity; + this._len = 0; + this._recip = 0; + this._p0 = this._p1 = 0; + } else { + if (time2 < input2[0]) { + this._left = -Infinity; + this._right = input2[0]; + this._len = 0; + this._recip = 0; + this._p0 = this._p1 = 0; + } else if (time2 >= input2[len - 1]) { + this._left = input2[len - 1]; + this._right = Infinity; + this._len = 0; + this._recip = 0; + this._p0 = this._p1 = len - 1; + } else { + const index = this._findKey(time2, input2); + this._left = input2[index]; + this._right = input2[index + 1]; + this._len = this._right - this._left; + const diff = 1 / this._len; + this._recip = isFinite(diff) ? diff : 0; + this._p0 = index; + this._p1 = index + 1; + } + } + } + this._t = this._recip === 0 ? 0 : (time2 - this._left) * this._recip; + this._hermite.valid = false; + } + _findKey(time2, input2) { + let index = 0; + while (time2 >= input2[index + 1]) { + index++; + } + return index; + } + eval(result, interpolation, output) { + const data2 = output._data; + const comp = output._components; + const idx0 = this._p0 * comp; + if (interpolation === INTERPOLATION_STEP) { + for (let i = 0; i < comp; ++i) { + result[i] = data2[idx0 + i]; + } + } else { + const t = this._t; + const idx1 = this._p1 * comp; + switch (interpolation) { + case INTERPOLATION_LINEAR: + for (let i = 0; i < comp; ++i) { + result[i] = math.lerp(data2[idx0 + i], data2[idx1 + i], t); + } + break; + case INTERPOLATION_CUBIC: { + const hermite = this._hermite; + if (!hermite.valid) { + const t2 = t * t; + const twot = t + t; + const omt = 1 - t; + const omt2 = omt * omt; + hermite.valid = true; + hermite.p0 = (1 + twot) * omt2; + hermite.m0 = t * omt2; + hermite.p1 = t2 * (3 - twot); + hermite.m1 = t2 * (t - 1); + } + const p0 = (this._p0 * 3 + 1) * comp; + const m0 = (this._p0 * 3 + 2) * comp; + const p12 = (this._p1 * 3 + 1) * comp; + const m1 = (this._p1 * 3 + 0) * comp; + for (let i = 0; i < comp; ++i) { + result[i] = hermite.p0 * data2[p0 + i] + hermite.m0 * data2[m0 + i] * this._len + hermite.p1 * data2[p12 + i] + hermite.m1 * data2[m1 + i] * this._len; + } + break; + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-snapshot.js +var AnimSnapshot = class { + constructor(animTrack) { + this._name = animTrack.name + "Snapshot"; + this._time = -1; + this._cache = []; + this._results = []; + for (let i = 0; i < animTrack._inputs.length; ++i) { + this._cache[i] = new AnimCache(); + } + const curves = animTrack._curves; + const outputs = animTrack._outputs; + for (let i = 0; i < curves.length; ++i) { + const curve = curves[i]; + const output = outputs[curve._output]; + const storage = []; + for (let j = 0; j < output._components; ++j) { + storage[j] = 0; + } + this._results[i] = storage; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-clip.js +var AnimClip = class _AnimClip { + constructor(track, time2, speed, playing, loop, eventHandler) { + this._name = track.name; + this._track = track; + this._snapshot = new AnimSnapshot(track); + this._playing = playing; + this._time = time2; + this._speed = speed; + this._loop = loop; + this._blendWeight = 1; + this._blendOrder = 0; + this._eventHandler = eventHandler; + this.alignCursorToCurrentTime(); + } + set name(name) { + this._name = name; + } + get name() { + return this._name; + } + set track(track) { + this._track = track; + this._snapshot = new AnimSnapshot(track); + } + get track() { + return this._track; + } + get snapshot() { + return this._snapshot; + } + set time(time2) { + this._time = time2; + this.alignCursorToCurrentTime(); + } + get time() { + return this._time; + } + set speed(speed) { + const signChanged = Math.sign(speed) !== Math.sign(this._speed); + this._speed = speed; + if (signChanged) { + this.alignCursorToCurrentTime(); + } + } + get speed() { + return this._speed; + } + set loop(loop) { + this._loop = loop; + } + get loop() { + return this._loop; + } + set blendWeight(blendWeight) { + this._blendWeight = blendWeight; + } + get blendWeight() { + return this._blendWeight; + } + set blendOrder(blendOrder) { + this._blendOrder = blendOrder; + } + get blendOrder() { + return this._blendOrder; + } + set eventCursor(value) { + this._eventCursor = value; + } + get eventCursor() { + return this._eventCursor; + } + get eventCursorEnd() { + return this.isReverse ? 0 : this._track.events.length - 1; + } + get nextEvent() { + return this._track.events[this._eventCursor]; + } + get isReverse() { + return this._speed < 0; + } + nextEventAheadOfTime(time2) { + if (!this.nextEvent) return false; + return this.isReverse ? this.nextEvent.time <= time2 : this.nextEvent.time >= time2; + } + nextEventBehindTime(time2) { + if (!this.nextEvent) return false; + if (time2 === this.track.duration) { + return this.isReverse ? this.nextEvent.time >= time2 : this.nextEvent.time <= time2; + } + return this.isReverse ? this.nextEvent.time > time2 : this.nextEvent.time < time2; + } + resetEventCursor() { + this._eventCursor = this.isReverse ? this._track.events.length - 1 : 0; + } + moveEventCursor() { + this._eventCursor += this.isReverse ? -1 : 1; + if (this._eventCursor >= this.track.events.length) { + this._eventCursor = 0; + } else if (this._eventCursor < 0) { + this._eventCursor = this.track.events.length - 1; + } + } + clipFrameTime(frameEndTime) { + const eventFrame = _AnimClip.eventFrame; + eventFrame.start = 0; + eventFrame.end = frameEndTime; + eventFrame.residual = 0; + if (this.isReverse) { + if (frameEndTime < 0) { + eventFrame.start = this.track.duration; + eventFrame.end = 0; + eventFrame.residual = frameEndTime + this.track.duration; + } + } else { + if (frameEndTime > this.track.duration) { + eventFrame.start = 0; + eventFrame.end = this.track.duration; + eventFrame.residual = frameEndTime - this.track.duration; + } + } + } + alignCursorToCurrentTime() { + this.resetEventCursor(); + while (this.nextEventBehindTime(this._time) && this._eventCursor !== this.eventCursorEnd) { + this.moveEventCursor(); + } + } + fireNextEvent() { + this._eventHandler.fire(this.nextEvent.name, _extends({ + track: this.track + }, this.nextEvent)); + this.moveEventCursor(); + } + fireNextEventInFrame(frameStartTime, frameEndTime) { + if (this.nextEventAheadOfTime(frameStartTime) && this.nextEventBehindTime(frameEndTime)) { + this.fireNextEvent(); + return true; + } + return false; + } + activeEventsForFrame(frameStartTime, frameEndTime) { + const eventFrame = _AnimClip.eventFrame; + this.clipFrameTime(frameEndTime); + const initialCursor = this.eventCursor; + while (this.fireNextEventInFrame(frameStartTime, eventFrame.end)) { + if (initialCursor === this.eventCursor) { + break; + } + } + if (this.loop && Math.abs(eventFrame.residual) > 0) { + this.activeEventsForFrame(eventFrame.start, eventFrame.residual); + } + } + progressForTime(time2) { + return time2 * this._speed / this._track.duration; + } + _update(deltaTime) { + if (this._playing) { + let time2 = this._time; + const duration = this._track.duration; + const speed = this._speed; + const loop = this._loop; + if (this._track.events.length > 0 && duration > 0) { + this.activeEventsForFrame(time2, time2 + speed * deltaTime); + } + time2 += speed * deltaTime; + if (speed >= 0) { + if (time2 > duration) { + if (loop) { + time2 = time2 % duration || 0; + } else { + time2 = this._track.duration; + this.pause(); + } + } + } else { + if (time2 < 0) { + if (loop) { + time2 = duration + (time2 % duration || 0); + } else { + time2 = 0; + this.pause(); + } + } + } + this._time = time2; + } + if (this._time !== this._snapshot._time) { + this._track.eval(this._time, this._snapshot); + } + } + play() { + this._playing = true; + this._time = 0; + } + stop() { + this._playing = false; + this._time = 0; + } + pause() { + this._playing = false; + } + resume() { + this._playing = true; + } + reset() { + this._time = 0; + } +}; +AnimClip.eventFrame = { + start: 0, + end: 0, + residual: 0 +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/constants.js +var ANIM_INTERRUPTION_NONE = "NONE"; +var ANIM_INTERRUPTION_PREV = "PREV_STATE"; +var ANIM_INTERRUPTION_NEXT = "NEXT_STATE"; +var ANIM_INTERRUPTION_PREV_NEXT = "PREV_STATE_NEXT_STATE"; +var ANIM_INTERRUPTION_NEXT_PREV = "NEXT_STATE_PREV_STATE"; +var ANIM_GREATER_THAN = "GREATER_THAN"; +var ANIM_LESS_THAN = "LESS_THAN"; +var ANIM_GREATER_THAN_EQUAL_TO = "GREATER_THAN_EQUAL_TO"; +var ANIM_LESS_THAN_EQUAL_TO = "LESS_THAN_EQUAL_TO"; +var ANIM_EQUAL_TO = "EQUAL_TO"; +var ANIM_NOT_EQUAL_TO = "NOT_EQUAL_TO"; +var ANIM_PARAMETER_INTEGER = "INTEGER"; +var ANIM_PARAMETER_FLOAT = "FLOAT"; +var ANIM_PARAMETER_BOOLEAN = "BOOLEAN"; +var ANIM_PARAMETER_TRIGGER = "TRIGGER"; +var ANIM_BLEND_1D = "1D"; +var ANIM_BLEND_2D_DIRECTIONAL = "2D_DIRECTIONAL"; +var ANIM_BLEND_2D_CARTESIAN = "2D_CARTESIAN"; +var ANIM_BLEND_DIRECT = "DIRECT"; +var ANIM_STATE_START = "START"; +var ANIM_STATE_END = "END"; +var ANIM_STATE_ANY = "ANY"; +var ANIM_CONTROL_STATES = [ANIM_STATE_START, ANIM_STATE_END, ANIM_STATE_ANY]; +var ANIM_LAYER_OVERWRITE = "OVERWRITE"; +var ANIM_LAYER_ADDITIVE = "ADDITIVE"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-blend.js +var AnimBlend = class _AnimBlend { + static dot(a, b) { + const len = a.length; + let result = 0; + for (let i = 0; i < len; ++i) { + result += a[i] * b[i]; + } + return result; + } + static normalize(a) { + let l = _AnimBlend.dot(a, a); + if (l > 0) { + l = 1 / Math.sqrt(l); + const len = a.length; + for (let i = 0; i < len; ++i) { + a[i] *= l; + } + } + } + static set(a, b, type2) { + const len = a.length; + if (type2 === "quaternion") { + let l = _AnimBlend.dot(b, b); + if (l > 0) { + l = 1 / Math.sqrt(l); + } + for (let i = 0; i < len; ++i) { + a[i] = b[i] * l; + } + } else { + for (let i = 0; i < len; ++i) { + a[i] = b[i]; + } + } + } + static blendVec(a, b, t, additive) { + const it = additive ? 1 : 1 - t; + const len = a.length; + for (let i = 0; i < len; ++i) { + a[i] = a[i] * it + b[i] * t; + } + } + static blendQuat(a, b, t, additive) { + const len = a.length; + const it = additive ? 1 : 1 - t; + if (_AnimBlend.dot(a, b) < 0) { + t = -t; + } + for (let i = 0; i < len; ++i) { + a[i] = a[i] * it + b[i] * t; + } + if (!additive) { + _AnimBlend.normalize(a); + } + } + static blend(a, b, t, type2, additive) { + if (type2 === "quaternion") { + _AnimBlend.blendQuat(a, b, t, additive); + } else { + _AnimBlend.blendVec(a, b, t, additive); + } + } + static stableSort(a, lessFunc) { + const len = a.length; + for (let i = 0; i < len - 1; ++i) { + for (let j = i + 1; j < len; ++j) { + if (lessFunc(a[j], a[i])) { + const tmp = a[i]; + a[i] = a[j]; + a[j] = tmp; + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-target-value.js +var AnimTargetValue = class _AnimTargetValue { + constructor(component, type2) { + this._component = component; + this.mask = new Int8Array(component.layers.length); + this.weights = new Float32Array(component.layers.length); + this.totalWeight = 0; + this.counter = 0; + this.layerCounter = 0; + this.valueType = type2; + this.dirty = true; + this.value = type2 === _AnimTargetValue.TYPE_QUAT ? [0, 0, 0, 1] : [0, 0, 0]; + this.baseValue = null; + this.setter = null; + } + get _normalizeWeights() { + return this._component.normalizeWeights; + } + getWeight(index) { + if (this.dirty) this.updateWeights(); + if (this._normalizeWeights && this.totalWeight === 0 || !this.mask[index]) { + return 0; + } else if (this._normalizeWeights) { + return this.weights[index] / this.totalWeight; + } + return math.clamp(this.weights[index], 0, 1); + } + _layerBlendType(index) { + return this._component.layers[index].blendType; + } + setMask(index, value) { + this.mask[index] = value; + if (this._normalizeWeights) { + if (this._component.layers[index].blendType === ANIM_LAYER_OVERWRITE) { + this.mask = this.mask.fill(0, 0, index); + } + this.dirty = true; + } + } + updateWeights() { + this.totalWeight = 0; + for (let i = 0; i < this.weights.length; i++) { + this.weights[i] = this._component.layers[i].weight; + this.totalWeight += this.mask[i] * this.weights[i]; + } + this.dirty = false; + } + updateValue(index, value) { + if (this.counter === 0) { + AnimBlend.set(this.value, _AnimTargetValue.IDENTITY_QUAT_ARR, this.valueType); + if (!this._normalizeWeights) { + AnimBlend.blend(this.value, this.baseValue, 1, this.valueType); + } + } + if (!this.mask[index] || this.getWeight(index) === 0) return; + if (this._layerBlendType(index) === ANIM_LAYER_ADDITIVE && !this._normalizeWeights) { + if (this.valueType === _AnimTargetValue.TYPE_QUAT) { + const v = _AnimTargetValue.q1.set(this.value[0], this.value[1], this.value[2], this.value[3]); + const aV1 = _AnimTargetValue.q2.set(this.baseValue[0], this.baseValue[1], this.baseValue[2], this.baseValue[3]); + const aV2 = _AnimTargetValue.q3.set(value[0], value[1], value[2], value[3]); + const aV = aV1.invert().mul(aV2); + aV.slerp(Quat2.IDENTITY, aV, this.getWeight(index)); + v.mul(aV); + _AnimTargetValue.quatArr[0] = v.x; + _AnimTargetValue.quatArr[1] = v.y; + _AnimTargetValue.quatArr[2] = v.z; + _AnimTargetValue.quatArr[3] = v.w; + AnimBlend.set(this.value, _AnimTargetValue.quatArr, this.valueType); + } else { + _AnimTargetValue.vecArr[0] = value[0] - this.baseValue[0]; + _AnimTargetValue.vecArr[1] = value[1] - this.baseValue[1]; + _AnimTargetValue.vecArr[2] = value[2] - this.baseValue[2]; + AnimBlend.blend(this.value, _AnimTargetValue.vecArr, this.getWeight(index), this.valueType, true); + } + } else { + AnimBlend.blend(this.value, value, this.getWeight(index), this.valueType); + } + if (this.setter) this.setter(this.value); + } + unbind() { + if (this.setter) { + this.setter(this.baseValue); + } + } +}; +AnimTargetValue.TYPE_QUAT = "quaternion"; +AnimTargetValue.TYPE_VEC3 = "vector3"; +AnimTargetValue.q1 = new Quat2(); +AnimTargetValue.q2 = new Quat2(); +AnimTargetValue.q3 = new Quat2(); +AnimTargetValue.quatArr = [0, 0, 0, 1]; +AnimTargetValue.vecArr = [0, 0, 0]; +AnimTargetValue.IDENTITY_QUAT_ARR = [0, 0, 0, 1]; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-evaluator.js +var AnimEvaluator = class { + constructor(binder) { + this._binder = binder; + this._clips = []; + this._inputs = []; + this._outputs = []; + this._targets = {}; + } + get clips() { + return this._clips; + } + addClip(clip) { + const targets = this._targets; + const binder = this._binder; + const curves = clip.track.curves; + const snapshot = clip.snapshot; + const inputs = []; + const outputs = []; + for (let i = 0; i < curves.length; ++i) { + const curve = curves[i]; + const paths = curve.paths; + for (let j = 0; j < paths.length; ++j) { + const path2 = paths[j]; + const resolved = binder.resolve(path2); + let target2 = targets[resolved && resolved.targetPath || null]; + if (!target2 && resolved) { + target2 = { + target: resolved, + value: [], + curves: 0, + blendCounter: 0 + }; + for (let k = 0; k < target2.target.components; ++k) { + target2.value.push(0); + } + targets[resolved.targetPath] = target2; + if (binder.animComponent) { + if (!binder.animComponent.targets[resolved.targetPath]) { + let type2; + if (resolved.targetPath.substring(resolved.targetPath.length - 13) === "localRotation") { + type2 = AnimTargetValue.TYPE_QUAT; + } else { + type2 = AnimTargetValue.TYPE_VEC3; + } + binder.animComponent.targets[resolved.targetPath] = new AnimTargetValue(binder.animComponent, type2); + } + binder.animComponent.targets[resolved.targetPath].layerCounter++; + binder.animComponent.targets[resolved.targetPath].setMask(binder.layerIndex, 1); + } + } + if (target2) { + target2.curves++; + inputs.push(snapshot._results[i]); + outputs.push(target2); + } + } + } + this._clips.push(clip); + this._inputs.push(inputs); + this._outputs.push(outputs); + } + removeClip(index) { + const targets = this._targets; + const binder = this._binder; + const clips = this._clips; + const clip = clips[index]; + const curves = clip.track.curves; + for (let i = 0; i < curves.length; ++i) { + const curve = curves[i]; + const paths = curve.paths; + for (let j = 0; j < paths.length; ++j) { + const path2 = paths[j]; + const target2 = this._binder.resolve(path2); + if (target2) { + target2.curves--; + if (target2.curves === 0) { + binder.unresolve(path2); + delete targets[target2.targetPath]; + if (binder.animComponent) { + binder.animComponent.targets[target2.targetPath].layerCounter--; + } + } + } + } + } + clips.splice(index, 1); + this._inputs.splice(index, 1); + this._outputs.splice(index, 1); + } + removeClips() { + while (this._clips.length > 0) { + this.removeClip(0); + } + } + updateClipTrack(name, animTrack) { + this._clips.forEach((clip) => { + if (clip.name.includes(name)) { + clip.track = animTrack; + } + }); + this.rebind(); + } + findClip(name) { + const clips = this._clips; + for (let i = 0; i < clips.length; ++i) { + const clip = clips[i]; + if (clip.name === name) { + return clip; + } + } + return null; + } + rebind() { + this._binder.rebind(); + this._targets = {}; + const clips = [...this.clips]; + this.removeClips(); + clips.forEach((clip) => { + this.addClip(clip); + }); + } + assignMask(mask) { + return this._binder.assignMask(mask); + } + update(deltaTime, outputAnimation = true) { + const clips = this._clips; + const order = clips.map(function(c2, i) { + return i; + }); + AnimBlend.stableSort(order, function(a, b) { + return clips[a].blendOrder < clips[b].blendOrder; + }); + for (let i = 0; i < order.length; ++i) { + const index = order[i]; + const clip = clips[index]; + const inputs = this._inputs[index]; + const outputs = this._outputs[index]; + const blendWeight = clip.blendWeight; + if (blendWeight > 0) { + clip._update(deltaTime); + } + if (!outputAnimation) break; + let input2; + let output; + let value; + if (blendWeight >= 1) { + for (let j = 0; j < inputs.length; ++j) { + input2 = inputs[j]; + output = outputs[j]; + value = output.value; + AnimBlend.set(value, input2, output.target.type); + output.blendCounter++; + } + } else if (blendWeight > 0) { + for (let j = 0; j < inputs.length; ++j) { + input2 = inputs[j]; + output = outputs[j]; + value = output.value; + if (output.blendCounter === 0) { + AnimBlend.set(value, input2, output.target.type); + } else { + AnimBlend.blend(value, input2, blendWeight, output.target.type); + } + output.blendCounter++; + } + } + } + const targets = this._targets; + const binder = this._binder; + for (const path2 in targets) { + if (targets.hasOwnProperty(path2)) { + const target2 = targets[path2]; + if (binder.animComponent && target2.target.isTransform) { + const animTarget = binder.animComponent.targets[path2]; + if (animTarget.counter === animTarget.layerCounter) { + animTarget.counter = 0; + } + if (!animTarget.path) { + animTarget.path = path2; + animTarget.baseValue = target2.target.get(); + animTarget.setter = target2.target.set; + } + animTarget.updateValue(binder.layerIndex, target2.value); + animTarget.counter++; + } else { + target2.target.set(target2.value); + } + target2.blendCounter = 0; + } + } + this._binder.update(deltaTime); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-events.js +var AnimEvents = class { + constructor(events2) { + this._events = [...events2]; + this._events.sort((a, b) => a.time - b.time); + } + get events() { + return this._events; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-track.js +var _AnimTrack; +var AnimTrack = class { + constructor(name, duration, inputs, outputs, curves, animEvents = new AnimEvents([])) { + this._name = name; + this._duration = duration; + this._inputs = inputs; + this._outputs = outputs; + this._curves = curves; + this._animEvents = animEvents; + } + get name() { + return this._name; + } + get duration() { + return this._duration; + } + get inputs() { + return this._inputs; + } + get outputs() { + return this._outputs; + } + get curves() { + return this._curves; + } + set events(animEvents) { + this._animEvents = animEvents; + } + get events() { + return this._animEvents.events; + } + eval(time2, snapshot) { + snapshot._time = time2; + const inputs = this._inputs; + const outputs = this._outputs; + const curves = this._curves; + const cache = snapshot._cache; + const results = snapshot._results; + for (let i = 0; i < inputs.length; ++i) { + cache[i].update(time2, inputs[i]._data); + } + for (let i = 0; i < curves.length; ++i) { + const curve = curves[i]; + const output = outputs[curve._output]; + const result = results[i]; + cache[curve._input].eval(result, curve._interpolation, output); + } + } +}; +_AnimTrack = AnimTrack; +AnimTrack.EMPTY = Object.freeze(new _AnimTrack("empty", Number.MAX_VALUE, [], [], [])); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/binder/anim-binder.js +var AnimBinder = class { + static joinPath(pathSegments, character) { + character = character || "."; + const escape2 = function escape3(string2) { + return string2.replace(/\\/g, "\\\\").replace(new RegExp("\\" + character, "g"), "\\" + character); + }; + return pathSegments.map(escape2).join(character); + } + static splitPath(path2, character) { + character = character || "."; + const result = []; + let curr = ""; + let i = 0; + while (i < path2.length) { + let c2 = path2[i++]; + if (c2 === "\\" && i < path2.length) { + c2 = path2[i++]; + if (c2 === "\\" || c2 === character) { + curr += c2; + } else { + curr += "\\" + c2; + } + } else if (c2 === character) { + result.push(curr); + curr = ""; + } else { + curr += c2; + } + } + if (curr.length > 0) { + result.push(curr); + } + return result; + } + static encode(entityPath, component, propertyPath) { + return `${Array.isArray(entityPath) ? entityPath.join("/") : entityPath}/${component}/${Array.isArray(propertyPath) ? propertyPath.join("/") : propertyPath}`; + } + resolve(path2) { + return null; + } + unresolve(path2) { + } + update(deltaTime) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-target.js +var AnimTarget = class { + constructor(func, type2, components, targetPath) { + if (func.set) { + this._set = func.set; + this._get = func.get; + } else { + this._set = func; + } + this._type = type2; + this._components = components; + this._targetPath = targetPath; + this._isTransform = this._targetPath.substring(this._targetPath.length - 13) === "localRotation" || this._targetPath.substring(this._targetPath.length - 13) === "localPosition" || this._targetPath.substring(this._targetPath.length - 10) === "localScale"; + } + get set() { + return this._set; + } + get get() { + return this._get; + } + get type() { + return this._type; + } + get components() { + return this._components; + } + get targetPath() { + return this._targetPath; + } + get isTransform() { + return this._isTransform; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/binder/default-anim-binder.js +var DefaultAnimBinder = class _DefaultAnimBinder { + constructor(graph) { + this._isPathInMask = (path2, checkMaskValue) => { + const maskItem = this._mask[path2]; + if (!maskItem) return false; + else if (maskItem.children || checkMaskValue && maskItem.value !== false) return true; + return false; + }; + this.graph = graph; + if (!graph) return; + this._mask = null; + const nodes = {}; + const flatten = function flatten2(node) { + nodes[node.name] = node; + for (let i = 0; i < node.children.length; ++i) { + flatten2(node.children[i]); + } + }; + flatten(graph); + this.nodes = nodes; + this.targetCache = {}; + const findMeshInstances = function findMeshInstances2(node) { + let object = node; + while (object && !(object instanceof Entity)) { + object = object.parent; + } + let meshInstances; + if (object) { + if (object.render) { + meshInstances = object.render.meshInstances; + } else if (object.model) { + meshInstances = object.model.meshInstances; + } + } + return meshInstances; + }; + this.nodeCounts = {}; + this.activeNodes = []; + this.handlers = { + "localPosition": function(node) { + const object = node.localPosition; + const func = function func2(value) { + object.set(...value); + }; + return _DefaultAnimBinder.createAnimTarget(func, "vector", 3, node, "localPosition"); + }, + "localRotation": function(node) { + const object = node.localRotation; + const func = function func2(value) { + object.set(...value); + }; + return _DefaultAnimBinder.createAnimTarget(func, "quaternion", 4, node, "localRotation"); + }, + "localScale": function(node) { + const object = node.localScale; + const func = function func2(value) { + object.set(...value); + }; + return _DefaultAnimBinder.createAnimTarget(func, "vector", 3, node, "localScale"); + }, + "weight": function(node, weightName) { + if (weightName.indexOf("name.") === 0) { + weightName = weightName.replace("name.", ""); + } else { + weightName = Number(weightName); + } + const meshInstances = findMeshInstances(node); + let setters; + if (meshInstances) { + for (let i = 0; i < meshInstances.length; ++i) { + if (meshInstances[i].node.name === node.name && meshInstances[i].morphInstance) { + const morphInstance = meshInstances[i].morphInstance; + const func = (value) => { + morphInstance.setWeight(weightName, value[0]); + }; + if (!setters) setters = []; + setters.push(func); + } + } + } + if (setters) { + const callSetters = (value) => { + for (let i = 0; i < setters.length; ++i) { + setters[i](value); + } + }; + return _DefaultAnimBinder.createAnimTarget(callSetters, "number", 1, node, `weight.${weightName}`); + } + return null; + }, + "materialTexture": (node, textureName) => { + const meshInstances = findMeshInstances(node); + if (meshInstances) { + let meshInstance; + for (let i = 0; i < meshInstances.length; ++i) { + if (meshInstances[i].node.name === node.name) { + meshInstance = meshInstances[i]; + break; + } + } + if (meshInstance) { + const func = (value) => { + const textureAsset = this.animComponent.system.app.assets.get(value[0]); + if (textureAsset && textureAsset.resource && textureAsset.type === "texture") { + meshInstance.material[textureName] = textureAsset.resource; + meshInstance.material.update(); + } + }; + return _DefaultAnimBinder.createAnimTarget(func, "vector", 1, node, "materialTexture", "material"); + } + } + return null; + } + }; + } + _isPathActive(path2) { + if (!this._mask) return true; + const rootNodeNames = [path2.entityPath[0], this.graph.name]; + for (let j = 0; j < rootNodeNames.length; ++j) { + let currEntityPath = rootNodeNames[j]; + if (this._isPathInMask(currEntityPath, path2.entityPath.length === 1)) return true; + for (let i = 1; i < path2.entityPath.length; i++) { + currEntityPath += "/" + path2.entityPath[i]; + if (this._isPathInMask(currEntityPath, i === path2.entityPath.length - 1)) return true; + } + } + return false; + } + findNode(path2) { + if (!this._isPathActive(path2)) { + return null; + } + let node; + if (this.graph) { + node = this.graph.findByPath(path2.entityPath); + if (!node) { + node = this.graph.findByPath(path2.entityPath.slice(1)); + } + } + if (!node) { + node = this.nodes[path2.entityPath[path2.entityPath.length - 1] || ""]; + } + return node; + } + static createAnimTarget(func, type2, valueCount, node, propertyPath, componentType) { + const targetPath = AnimBinder.encode(node.path, componentType ? componentType : "entity", propertyPath); + return new AnimTarget(func, type2, valueCount, targetPath); + } + resolve(path2) { + const encodedPath = AnimBinder.encode(path2.entityPath, path2.component, path2.propertyPath); + let target2 = this.targetCache[encodedPath]; + if (target2) return target2; + const node = this.findNode(path2); + if (!node) { + return null; + } + const handler = this.handlers[path2.propertyPath]; + if (!handler) { + return null; + } + target2 = handler(node); + if (!target2) { + return null; + } + this.targetCache[encodedPath] = target2; + if (!this.nodeCounts[node.path]) { + this.activeNodes.push(node); + this.nodeCounts[node.path] = 1; + } else { + this.nodeCounts[node.path]++; + } + return target2; + } + unresolve(path2) { + if (path2.component !== "graph") return; + const node = this.nodes[path2.entityPath[path2.entityPath.length - 1] || ""]; + this.nodeCounts[node.path]--; + if (this.nodeCounts[node.path] === 0) { + const activeNodes = this.activeNodes; + const i = activeNodes.indexOf(node.node); + const len = activeNodes.length; + if (i < len - 1) { + activeNodes[i] = activeNodes[len - 1]; + } + activeNodes.pop(); + } + } + update(deltaTime) { + const activeNodes = this.activeNodes; + for (let i = 0; i < activeNodes.length; ++i) { + activeNodes[i]._dirtifyLocal(); + } + } + assignMask(mask) { + if (mask !== this._mask) { + this._mask = mask; + return true; + } + return false; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-node.js +var AnimNode = class { + constructor(state, parent, name, point, speed = 1) { + this._state = state; + this._parent = parent; + this._name = name; + if (Array.isArray(point)) { + this._point = new Vec2(point[0], point[1]); + this._pointLength = this._point.length(); + } else { + this._point = point; + this._pointLength = point; + } + this._speed = speed; + this._weightedSpeed = 1; + this._weight = 1; + this._animTrack = null; + } + get parent() { + return this._parent; + } + get name() { + return this._name; + } + get path() { + return this._parent ? this._parent.path + "." + this._name : this._name; + } + get point() { + return this._point; + } + get pointLength() { + return this._pointLength; + } + set weight(value) { + this._weight = value; + } + get weight() { + return this._parent ? this._parent.weight * this._weight : this._weight; + } + get normalizedWeight() { + const totalWeight = this._state.totalWeight; + if (totalWeight === 0) return 0; + return this.weight / totalWeight; + } + get speed() { + return this._weightedSpeed * this._speed; + } + get absoluteSpeed() { + return Math.abs(this._speed); + } + set weightedSpeed(weightedSpeed) { + this._weightedSpeed = weightedSpeed; + } + get weightedSpeed() { + return this._weightedSpeed; + } + set animTrack(value) { + this._animTrack = value; + } + get animTrack() { + return this._animTrack; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree.js +var AnimBlendTree = class _AnimBlendTree extends AnimNode { + constructor(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter) { + super(state, parent, name, point); + this._parameters = parameters; + this._parameterValues = new Array(parameters.length); + this._children = []; + this._findParameter = findParameter; + this._syncAnimations = syncAnimations !== false; + this._pointCache = {}; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.children) { + this._children.push(createTree(child.type, state, this, child.name, 1, child.parameter ? [child.parameter] : child.parameters, child.children, child.syncAnimations, createTree, findParameter)); + } else { + this._children.push(new AnimNode(state, this, child.name, child.point, child.speed)); + } + } + } + get weight() { + this.calculateWeights(); + return this._parent ? this._parent.weight * this._weight : this._weight; + } + get syncAnimations() { + return this._syncAnimations; + } + getChild(name) { + for (let i = 0; i < this._children.length; i++) { + if (this._children[i].name === name) return this._children[i]; + } + return null; + } + updateParameterValues() { + let paramsEqual = true; + for (let i = 0; i < this._parameterValues.length; i++) { + const updatedParameter = this._findParameter(this._parameters[i]).value; + if (this._parameterValues[i] !== updatedParameter) { + this._parameterValues[i] = updatedParameter; + paramsEqual = false; + } + } + return paramsEqual; + } + getNodeWeightedDuration(i) { + return this._children[i].animTrack.duration / this._children[i].speedMultiplier * this._children[i].weight; + } + getNodeCount() { + let count = 0; + for (let i = 0; i < this._children.length; i++) { + const child = this._children[i]; + if (child.constructor === _AnimBlendTree) { + count += this._children[i].getNodeCount(); + } else { + count++; + } + } + return count; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree-1d.js +var AnimBlendTree1D = class extends AnimBlendTree { + constructor(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter) { + children.sort((a, b) => a.point - b.point); + super(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter); + } + calculateWeights() { + if (this.updateParameterValues()) return; + let weightedDurationSum = 0; + this._children[0].weight = 0; + for (let i = 0; i < this._children.length; i++) { + const c1 = this._children[i]; + if (i !== this._children.length - 1) { + const c2 = this._children[i + 1]; + if (c1.point === c2.point) { + c1.weight = 0.5; + c2.weight = 0.5; + } else if (math.between(this._parameterValues[0], c1.point, c2.point, true)) { + const child2Distance = Math.abs(c1.point - c2.point); + const parameterDistance = Math.abs(c1.point - this._parameterValues[0]); + const weight = (child2Distance - parameterDistance) / child2Distance; + c1.weight = weight; + c2.weight = 1 - weight; + } else { + c2.weight = 0; + } + } + if (this._syncAnimations) { + weightedDurationSum += c1.animTrack.duration / c1.absoluteSpeed * c1.weight; + } + } + if (this._syncAnimations) { + for (let i = 0; i < this._children.length; i++) { + const child = this._children[i]; + child.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum; + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree-2d-cartesian.js +var AnimBlendTreeCartesian2D = class _AnimBlendTreeCartesian2D extends AnimBlendTree { + pointDistanceCache(i, j) { + const pointKey = `${i}${j}`; + if (!this._pointCache[pointKey]) { + this._pointCache[pointKey] = this._children[j].point.clone().sub(this._children[i].point); + } + return this._pointCache[pointKey]; + } + calculateWeights() { + if (this.updateParameterValues()) return; + let weightSum, weightedDurationSum; + _AnimBlendTreeCartesian2D._p.set(...this._parameterValues); + weightSum = 0; + weightedDurationSum = 0; + for (let i = 0; i < this._children.length; i++) { + const child = this._children[i]; + const pi = child.point; + _AnimBlendTreeCartesian2D._pip.set(_AnimBlendTreeCartesian2D._p.x, _AnimBlendTreeCartesian2D._p.y).sub(pi); + let minj = Number.MAX_VALUE; + for (let j = 0; j < this._children.length; j++) { + if (i === j) continue; + const pipj = this.pointDistanceCache(i, j); + const result = math.clamp(1 - _AnimBlendTreeCartesian2D._pip.dot(pipj) / pipj.lengthSq(), 0, 1); + if (result < minj) minj = result; + } + child.weight = minj; + weightSum += minj; + if (this._syncAnimations) { + weightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight; + } + } + for (let i = 0; i < this._children.length; i++) { + const child = this._children[i]; + child.weight = child._weight / weightSum; + if (this._syncAnimations) { + child.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum; + } + } + } +}; +AnimBlendTreeCartesian2D._p = new Vec2(); +AnimBlendTreeCartesian2D._pip = new Vec2(); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree-2d-directional.js +var AnimBlendTreeDirectional2D = class _AnimBlendTreeDirectional2D extends AnimBlendTree { + pointCache(i, j) { + const pointKey = `${i}${j}`; + if (!this._pointCache[pointKey]) { + this._pointCache[pointKey] = new Vec2((this._children[j].pointLength - this._children[i].pointLength) / ((this._children[j].pointLength + this._children[i].pointLength) / 2), Vec2.angleRad(this._children[i].point, this._children[j].point) * 2); + } + return this._pointCache[pointKey]; + } + calculateWeights() { + if (this.updateParameterValues()) return; + let weightSum, weightedDurationSum; + _AnimBlendTreeDirectional2D._p.set(...this._parameterValues); + const pLength = _AnimBlendTreeDirectional2D._p.length(); + weightSum = 0; + weightedDurationSum = 0; + for (let i = 0; i < this._children.length; i++) { + const child = this._children[i]; + const pi = child.point; + const piLength = child.pointLength; + let minj = Number.MAX_VALUE; + for (let j = 0; j < this._children.length; j++) { + if (i === j) continue; + const pipj = this.pointCache(i, j); + const pjLength = this._children[j].pointLength; + _AnimBlendTreeDirectional2D._pip.set((pLength - piLength) / ((pjLength + piLength) / 2), Vec2.angleRad(pi, _AnimBlendTreeDirectional2D._p) * 2); + const result = math.clamp(1 - Math.abs(_AnimBlendTreeDirectional2D._pip.dot(pipj) / pipj.lengthSq()), 0, 1); + if (result < minj) minj = result; + } + child.weight = minj; + weightSum += minj; + if (this._syncAnimations) { + weightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight; + } + } + for (let i = 0; i < this._children.length; i++) { + const child = this._children[i]; + child.weight = child._weight / weightSum; + if (this._syncAnimations) { + const weightedChildDuration = child.animTrack.duration / weightedDurationSum * weightSum; + child.weightedSpeed = child.absoluteSpeed * weightedChildDuration; + } + } + } +}; +AnimBlendTreeDirectional2D._p = new Vec2(); +AnimBlendTreeDirectional2D._pip = new Vec2(); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree-direct.js +var AnimBlendTreeDirect = class extends AnimBlendTree { + calculateWeights() { + if (this.updateParameterValues()) return; + let weightSum = 0; + let weightedDurationSum = 0; + for (let i = 0; i < this._children.length; i++) { + weightSum += Math.max(this._parameterValues[i], 0); + if (this._syncAnimations) { + const child = this._children[i]; + weightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight; + } + } + for (let i = 0; i < this._children.length; i++) { + const child = this._children[i]; + const weight = Math.max(this._parameterValues[i], 0); + if (weightSum) { + child.weight = weight / weightSum; + if (this._syncAnimations) { + child.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum; + } + } else { + child.weight = 0; + if (this._syncAnimations) { + child.weightedSpeed = 0; + } + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-state.js +var AnimState = class { + constructor(controller, name, speed = 1, loop = true, blendTree) { + this._animations = {}; + this._animationList = []; + this._controller = controller; + this._name = name; + this._speed = speed; + this._loop = loop; + this._hasAnimations = false; + if (blendTree) { + this._blendTree = this._createTree(blendTree.type, this, null, name, 1, blendTree.parameter ? [blendTree.parameter] : blendTree.parameters, blendTree.children, blendTree.syncAnimations, this._createTree, this._controller.findParameter); + } else { + this._blendTree = new AnimNode(this, null, name, 1, speed); + } + } + _createTree(type2, state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter) { + switch (type2) { + case ANIM_BLEND_1D: + return new AnimBlendTree1D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter); + case ANIM_BLEND_2D_CARTESIAN: + return new AnimBlendTreeCartesian2D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter); + case ANIM_BLEND_2D_DIRECTIONAL: + return new AnimBlendTreeDirectional2D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter); + case ANIM_BLEND_DIRECT: + return new AnimBlendTreeDirect(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter); + } + return void 0; + } + _getNodeFromPath(path2) { + let currNode = this._blendTree; + for (let i = 1; i < path2.length; i++) { + currNode = currNode.getChild(path2[i]); + } + return currNode; + } + addAnimation(path2, animTrack) { + const pathString = path2.join("."); + const indexOfAnimation = this._animationList.findIndex(function(animation) { + return animation.path === pathString; + }); + if (indexOfAnimation >= 0) { + this._animationList[indexOfAnimation].animTrack = animTrack; + } else { + const node = this._getNodeFromPath(path2); + node.animTrack = animTrack; + this._animationList.push(node); + } + this._updateHasAnimations(); + } + _updateHasAnimations() { + this._hasAnimations = this._animationList.length > 0 && this._animationList.every((animation) => animation.animTrack && animation.animTrack !== AnimTrack.EMPTY); + } + get name() { + return this._name; + } + set animations(value) { + this._animationList = value; + this._updateHasAnimations(); + } + get animations() { + return this._animationList; + } + get hasAnimations() { + return this._hasAnimations; + } + set speed(value) { + this._speed = value; + } + get speed() { + return this._speed; + } + set loop(value) { + this._loop = value; + } + get loop() { + return this._loop; + } + get nodeCount() { + if (!this._blendTree || this._blendTree.constructor === AnimNode) return 1; + return this._blendTree.getNodeCount(); + } + get playable() { + return ANIM_CONTROL_STATES.indexOf(this.name) !== -1 || this.animations.length === this.nodeCount; + } + get looping() { + if (this.animations.length > 0) { + const trackClipName = this.name + "." + this.animations[0].animTrack.name; + const trackClip = this._controller.animEvaluator.findClip(trackClipName); + if (trackClip) { + return trackClip.loop; + } + } + return false; + } + get totalWeight() { + let sum = 0; + for (let i = 0; i < this.animations.length; i++) { + sum += this.animations[i].weight; + } + return sum; + } + get timelineDuration() { + let duration = 0; + for (let i = 0; i < this.animations.length; i++) { + const animation = this.animations[i]; + if (animation.animTrack.duration > duration) { + duration = animation.animTrack.duration; + } + } + return duration; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-transition.js +var AnimTransition = class { + constructor({ + from, + to, + time: time2 = 0, + priority = 0, + conditions = [], + exitTime = null, + transitionOffset = null, + interruptionSource = ANIM_INTERRUPTION_NONE + }) { + this._from = from; + this._to = to; + this._time = time2; + this._priority = priority; + this._conditions = conditions; + this._exitTime = exitTime; + this._transitionOffset = transitionOffset; + this._interruptionSource = interruptionSource; + } + get from() { + return this._from; + } + set to(value) { + this._to = value; + } + get to() { + return this._to; + } + get time() { + return this._time; + } + get priority() { + return this._priority; + } + get conditions() { + return this._conditions; + } + get exitTime() { + return this._exitTime; + } + get transitionOffset() { + return this._transitionOffset; + } + get interruptionSource() { + return this._interruptionSource; + } + get hasExitTime() { + return !!this.exitTime; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-controller.js +var AnimController = class { + constructor(animEvaluator, states, transitions, activate, eventHandler, findParameter, consumeTrigger) { + this._states = {}; + this._stateNames = []; + this._findTransitionsFromStateCache = {}; + this._findTransitionsBetweenStatesCache = {}; + this._previousStateName = null; + this._activeStateName = ANIM_STATE_START; + this._activeStateDuration = 0; + this._activeStateDurationDirty = true; + this._playing = false; + this._activate = void 0; + this._transitions = void 0; + this._currTransitionTime = 1; + this._totalTransitionTime = 1; + this._isTransitioning = false; + this._transitionInterruptionSource = ANIM_INTERRUPTION_NONE; + this._transitionPreviousStates = []; + this._timeInState = 0; + this._timeInStateBefore = 0; + this.findParameter = (name) => { + return this._findParameter(name); + }; + this._animEvaluator = animEvaluator; + this._eventHandler = eventHandler; + this._findParameter = findParameter; + this._consumeTrigger = consumeTrigger; + for (let i = 0; i < states.length; i++) { + this._states[states[i].name] = new AnimState(this, states[i].name, states[i].speed, states[i].loop, states[i].blendTree); + this._stateNames.push(states[i].name); + } + this._transitions = transitions.map((transition) => { + return new AnimTransition(_extends({}, transition)); + }); + this._activate = activate; + } + get animEvaluator() { + return this._animEvaluator; + } + set activeState(stateName) { + this._activeStateName = stateName; + } + get activeState() { + return this._findState(this._activeStateName); + } + get activeStateName() { + return this._activeStateName; + } + get activeStateAnimations() { + return this.activeState.animations; + } + set previousState(stateName) { + this._previousStateName = stateName; + } + get previousState() { + return this._findState(this._previousStateName); + } + get previousStateName() { + return this._previousStateName; + } + get playable() { + let playable = true; + for (let i = 0; i < this._stateNames.length; i++) { + if (!this._states[this._stateNames[i]].playable) { + playable = false; + } + } + return playable; + } + set playing(value) { + this._playing = value; + } + get playing() { + return this._playing; + } + get activeStateProgress() { + return this._getActiveStateProgressForTime(this._timeInState); + } + get activeStateDuration() { + if (this._activeStateDurationDirty) { + let maxDuration = 0; + for (let i = 0; i < this.activeStateAnimations.length; i++) { + const activeClip = this._animEvaluator.findClip(this.activeStateAnimations[i].name); + if (activeClip) { + maxDuration = Math.max(maxDuration, activeClip.track.duration); + } + } + this._activeStateDuration = maxDuration; + this._activeStateDurationDirty = false; + } + return this._activeStateDuration; + } + set activeStateCurrentTime(time2) { + this._timeInStateBefore = time2; + this._timeInState = time2; + for (let i = 0; i < this.activeStateAnimations.length; i++) { + const clip = this.animEvaluator.findClip(this.activeStateAnimations[i].name); + if (clip) { + clip.time = time2; + } + } + } + get activeStateCurrentTime() { + return this._timeInState; + } + get transitioning() { + return this._isTransitioning; + } + get transitionProgress() { + return this._currTransitionTime / this._totalTransitionTime; + } + get states() { + return this._stateNames; + } + assignMask(mask) { + return this._animEvaluator.assignMask(mask); + } + _findState(stateName) { + return this._states[stateName]; + } + _getActiveStateProgressForTime(time2) { + if (this.activeStateName === ANIM_STATE_START || this.activeStateName === ANIM_STATE_END || this.activeStateName === ANIM_STATE_ANY) return 1; + const activeClip = this._animEvaluator.findClip(this.activeStateAnimations[0].name); + if (activeClip) { + return activeClip.progressForTime(time2); + } + return null; + } + _findTransitionsFromState(stateName) { + let transitions = this._findTransitionsFromStateCache[stateName]; + if (!transitions) { + transitions = this._transitions.filter(function(transition) { + return transition.from === stateName; + }); + sortPriority(transitions); + this._findTransitionsFromStateCache[stateName] = transitions; + } + return transitions; + } + _findTransitionsBetweenStates(sourceStateName, destinationStateName) { + let transitions = this._findTransitionsBetweenStatesCache[sourceStateName + "->" + destinationStateName]; + if (!transitions) { + transitions = this._transitions.filter(function(transition) { + return transition.from === sourceStateName && transition.to === destinationStateName; + }); + sortPriority(transitions); + this._findTransitionsBetweenStatesCache[sourceStateName + "->" + destinationStateName] = transitions; + } + return transitions; + } + _transitionHasConditionsMet(transition) { + const conditions = transition.conditions; + for (let i = 0; i < conditions.length; i++) { + const condition = conditions[i]; + const parameter = this._findParameter(condition.parameterName); + switch (condition.predicate) { + case ANIM_GREATER_THAN: + if (!(parameter.value > condition.value)) return false; + break; + case ANIM_LESS_THAN: + if (!(parameter.value < condition.value)) return false; + break; + case ANIM_GREATER_THAN_EQUAL_TO: + if (!(parameter.value >= condition.value)) return false; + break; + case ANIM_LESS_THAN_EQUAL_TO: + if (!(parameter.value <= condition.value)) return false; + break; + case ANIM_EQUAL_TO: + if (!(parameter.value === condition.value)) return false; + break; + case ANIM_NOT_EQUAL_TO: + if (!(parameter.value !== condition.value)) return false; + break; + } + } + return true; + } + _findTransition(from, to) { + let transitions = []; + if (from && to) { + transitions = transitions.concat(this._findTransitionsBetweenStates(from, to)); + } else { + if (!this._isTransitioning) { + transitions = transitions.concat(this._findTransitionsFromState(this._activeStateName)); + transitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY)); + } else { + switch (this._transitionInterruptionSource) { + case ANIM_INTERRUPTION_PREV: + transitions = transitions.concat(this._findTransitionsFromState(this._previousStateName)); + transitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY)); + break; + case ANIM_INTERRUPTION_NEXT: + transitions = transitions.concat(this._findTransitionsFromState(this._activeStateName)); + transitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY)); + break; + case ANIM_INTERRUPTION_PREV_NEXT: + transitions = transitions.concat(this._findTransitionsFromState(this._previousStateName)); + transitions = transitions.concat(this._findTransitionsFromState(this._activeStateName)); + transitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY)); + break; + case ANIM_INTERRUPTION_NEXT_PREV: + transitions = transitions.concat(this._findTransitionsFromState(this._activeStateName)); + transitions = transitions.concat(this._findTransitionsFromState(this._previousStateName)); + transitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY)); + break; + } + } + } + transitions = transitions.filter((transition) => { + if (transition.to === this.activeStateName) { + return false; + } + if (transition.hasExitTime) { + let progressBefore = this._getActiveStateProgressForTime(this._timeInStateBefore); + let progress = this._getActiveStateProgressForTime(this._timeInState); + if (transition.exitTime < 1 && this.activeState.loop) { + progressBefore -= Math.floor(progressBefore); + progress -= Math.floor(progress); + } + if (progress === progressBefore) { + if (progress !== transition.exitTime) { + return null; + } + } else if (!(transition.exitTime > progressBefore && transition.exitTime <= progress)) { + return null; + } + } + return this._transitionHasConditionsMet(transition); + }); + if (transitions.length > 0) { + const transition = transitions[0]; + if (transition.to === ANIM_STATE_END) { + const startTransition = this._findTransitionsFromState(ANIM_STATE_START)[0]; + transition.to = startTransition.to; + } + return transition; + } + return null; + } + updateStateFromTransition(transition) { + let state; + let animation; + let clip; + this.previousState = transition.from ? this.activeStateName : null; + this.activeState = transition.to; + this._activeStateDurationDirty = true; + for (let i = 0; i < transition.conditions.length; i++) { + const condition = transition.conditions[i]; + const parameter = this._findParameter(condition.parameterName); + if (parameter.type === ANIM_PARAMETER_TRIGGER) { + this._consumeTrigger(condition.parameterName); + } + } + if (this.previousState) { + if (!this._isTransitioning) { + this._transitionPreviousStates = []; + } + this._transitionPreviousStates.push({ + name: this._previousStateName, + weight: 1 + }); + const interpolatedTime = Math.min(this._totalTransitionTime !== 0 ? this._currTransitionTime / this._totalTransitionTime : 1, 1); + for (let i = 0; i < this._transitionPreviousStates.length; i++) { + if (!this._isTransitioning) { + this._transitionPreviousStates[i].weight = 1; + } else if (i !== this._transitionPreviousStates.length - 1) { + this._transitionPreviousStates[i].weight *= 1 - interpolatedTime; + } else { + this._transitionPreviousStates[i].weight = interpolatedTime; + } + state = this._findState(this._transitionPreviousStates[i].name); + for (let j = 0; j < state.animations.length; j++) { + animation = state.animations[j]; + clip = this._animEvaluator.findClip(animation.name + ".previous." + i); + if (!clip) { + clip = this._animEvaluator.findClip(animation.name); + clip.name = animation.name + ".previous." + i; + } + if (i !== this._transitionPreviousStates.length - 1) { + clip.pause(); + } + } + } + } + this._isTransitioning = true; + this._totalTransitionTime = transition.time; + this._currTransitionTime = 0; + this._transitionInterruptionSource = transition.interruptionSource; + const activeState = this.activeState; + const hasTransitionOffset = transition.transitionOffset && transition.transitionOffset > 0 && transition.transitionOffset < 1; + let timeInState = 0; + let timeInStateBefore = 0; + if (hasTransitionOffset) { + const offsetTime = activeState.timelineDuration * transition.transitionOffset; + timeInState = offsetTime; + timeInStateBefore = offsetTime; + } + this._timeInState = timeInState; + this._timeInStateBefore = timeInStateBefore; + for (let i = 0; i < activeState.animations.length; i++) { + clip = this._animEvaluator.findClip(activeState.animations[i].name); + if (!clip) { + const speed = Number.isFinite(activeState.animations[i].speed) ? activeState.animations[i].speed : activeState.speed; + clip = new AnimClip(activeState.animations[i].animTrack, this._timeInState, speed, true, activeState.loop, this._eventHandler); + clip.name = activeState.animations[i].name; + this._animEvaluator.addClip(clip); + } else { + clip.reset(); + } + if (transition.time > 0) { + clip.blendWeight = 0; + } else { + clip.blendWeight = activeState.animations[i].normalizedWeight; + } + clip.play(); + if (hasTransitionOffset) { + clip.time = activeState.timelineDuration * transition.transitionOffset; + } else { + const startTime = activeState.speed >= 0 ? 0 : this.activeStateDuration; + clip.time = startTime; + } + } + } + _transitionToState(newStateName) { + if (!this._findState(newStateName)) { + return; + } + let transition = this._findTransition(this._activeStateName, newStateName); + if (!transition) { + this._animEvaluator.removeClips(); + transition = new AnimTransition({ + from: null, + to: newStateName + }); + } + this.updateStateFromTransition(transition); + } + assignAnimation(pathString, animTrack, speed, loop) { + const path2 = pathString.split("."); + let state = this._findState(path2[0]); + if (!state) { + state = new AnimState(this, path2[0], speed); + this._states[path2[0]] = state; + this._stateNames.push(path2[0]); + } + state.addAnimation(path2, animTrack); + this._animEvaluator.updateClipTrack(state.name, animTrack); + if (speed !== void 0) { + state.speed = speed; + } + if (loop !== void 0) { + state.loop = loop; + } + if (!this._playing && this._activate && this.playable) { + this.play(); + } + this._activeStateDurationDirty = true; + } + removeNodeAnimations(nodeName) { + if (ANIM_CONTROL_STATES.indexOf(nodeName) !== -1) { + return false; + } + const state = this._findState(nodeName); + if (!state) { + return false; + } + state.animations = []; + return true; + } + play(stateName) { + if (stateName) { + this._transitionToState(stateName); + } + this._playing = true; + } + pause() { + this._playing = false; + } + reset() { + this._previousStateName = null; + this._activeStateName = ANIM_STATE_START; + this._playing = false; + this._currTransitionTime = 1; + this._totalTransitionTime = 1; + this._isTransitioning = false; + this._timeInState = 0; + this._timeInStateBefore = 0; + this._animEvaluator.removeClips(); + } + rebind() { + this._animEvaluator.rebind(); + } + update(dt) { + if (!this._playing) { + return; + } + let state; + let animation; + let clip; + if (this.activeState.loop || this._timeInState < this.activeStateDuration) { + this._timeInStateBefore = this._timeInState; + this._timeInState += dt * this.activeState.speed; + if (!this.activeState.loop && this._timeInState > this.activeStateDuration) { + this._timeInState = this.activeStateDuration; + dt = this.activeStateDuration - this._timeInStateBefore; + } + } + const transition = this._findTransition(this._activeStateName); + if (transition) this.updateStateFromTransition(transition); + if (this._isTransitioning) { + this._currTransitionTime += dt; + if (this._currTransitionTime <= this._totalTransitionTime) { + const interpolatedTime = this._totalTransitionTime !== 0 ? this._currTransitionTime / this._totalTransitionTime : 1; + for (let i = 0; i < this._transitionPreviousStates.length; i++) { + state = this._findState(this._transitionPreviousStates[i].name); + const stateWeight = this._transitionPreviousStates[i].weight; + for (let j = 0; j < state.animations.length; j++) { + animation = state.animations[j]; + clip = this._animEvaluator.findClip(animation.name + ".previous." + i); + if (clip) { + clip.blendWeight = (1 - interpolatedTime) * animation.normalizedWeight * stateWeight; + } + } + } + state = this.activeState; + for (let i = 0; i < state.animations.length; i++) { + animation = state.animations[i]; + this._animEvaluator.findClip(animation.name).blendWeight = interpolatedTime * animation.normalizedWeight; + } + } else { + this._isTransitioning = false; + const activeClips = this.activeStateAnimations.length; + const totalClips = this._animEvaluator.clips.length; + for (let i = 0; i < totalClips - activeClips; i++) { + this._animEvaluator.removeClip(0); + } + this._transitionPreviousStates = []; + state = this.activeState; + for (let i = 0; i < state.animations.length; i++) { + animation = state.animations[i]; + clip = this._animEvaluator.findClip(animation.name); + if (clip) { + clip.blendWeight = animation.normalizedWeight; + } + } + } + } else { + if (this.activeState._blendTree.constructor !== AnimNode) { + state = this.activeState; + for (let i = 0; i < state.animations.length; i++) { + animation = state.animations[i]; + clip = this._animEvaluator.findClip(animation.name); + if (clip) { + clip.blendWeight = animation.normalizedWeight; + if (animation.parent.syncAnimations) { + clip.speed = animation.speed; + } + } + } + } + } + this._animEvaluator.update(dt, this.activeState.hasAnimations); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/component-binder.js +var v2 = new Vec2(); +var v3 = new Vec3(); +var v4 = new Vec4(); +var c = new Color(); +var q = new Quat2(); +var AnimComponentBinder = class _AnimComponentBinder extends DefaultAnimBinder { + constructor(animComponent, graph, layerName, mask, layerIndex) { + super(graph); + this.animComponent = animComponent; + this._mask = mask; + this.layerName = layerName; + this.layerIndex = layerIndex; + } + static _packFloat(values) { + return values[0]; + } + static _packBoolean(values) { + return !!values[0]; + } + static _packVec2(values) { + v2.x = values[0]; + v2.y = values[1]; + return v2; + } + static _packVec3(values) { + v3.x = values[0]; + v3.y = values[1]; + v3.z = values[2]; + return v3; + } + static _packVec4(values) { + v4.x = values[0]; + v4.y = values[1]; + v4.z = values[2]; + v4.w = values[3]; + return v4; + } + static _packColor(values) { + c.r = values[0]; + c.g = values[1]; + c.b = values[2]; + c.a = values[3]; + return c; + } + static _packQuat(values) { + q.x = values[0]; + q.y = values[1]; + q.z = values[2]; + q.w = values[3]; + return q; + } + resolve(path2) { + const encodedPath = AnimBinder.encode(path2.entityPath, path2.component, path2.propertyPath); + let target2 = this.targetCache[encodedPath]; + if (target2) return target2; + let entity; + let propertyComponent; + let targetPath; + switch (path2.component) { + case "entity": + entity = this._getEntityFromHierarchy(path2.entityPath); + targetPath = AnimBinder.encode(entity.path, "entity", path2.propertyPath); + propertyComponent = entity; + break; + case "graph": + propertyComponent = this.findNode(path2); + if (!propertyComponent) return null; + targetPath = AnimBinder.encode(propertyComponent.path, "graph", path2.propertyPath); + break; + default: + entity = this._getEntityFromHierarchy(path2.entityPath); + propertyComponent = entity.findComponent(path2.component); + if (!propertyComponent) return null; + targetPath = AnimBinder.encode(entity.path, path2.component, path2.propertyPath); + break; + } + target2 = this._createAnimTargetForProperty(propertyComponent, path2.propertyPath, targetPath); + this.targetCache[encodedPath] = target2; + return target2; + } + update(deltaTime) { + const activeNodes = this.activeNodes; + if (activeNodes) { + for (let i = 0; i < activeNodes.length; i++) { + activeNodes[i]._dirtifyLocal(); + } + } + } + _getEntityFromHierarchy(entityHierarchy) { + if (!this.animComponent.entity.name === entityHierarchy[0]) { + return null; + } + const currEntity = this.animComponent.entity; + if (entityHierarchy.length === 1) { + return currEntity; + } + return currEntity._parent.findByPath(entityHierarchy); + } + _resolvePath(object, path2, resolveLeaf) { + const steps = path2.length - (resolveLeaf ? 0 : 1); + for (let i = 0; i < steps; i++) { + object = object[path2[i]]; + } + return object; + } + _setter(object, path2, packFunc) { + const obj = this._resolvePath(object, path2); + const key = path2[path2.length - 1]; + const setterFuncName = "set" + key.substring(0, 1).toUpperCase() + key.substring(1); + if (obj[setterFuncName]) { + const getterFunc = obj["get" + key.substring(0, 1).toUpperCase() + key.substring(1)].bind(obj); + let baseValues = getterFunc(); + baseValues = [baseValues.x, baseValues.y, baseValues.z, baseValues.w]; + const setterFunc = obj[setterFuncName].bind(obj); + return { + set: (values) => { + setterFunc(packFunc(values)); + }, + get: () => baseValues + }; + } + const prop = obj[key]; + if (typeof prop === "object" && prop.hasOwnProperty("copy")) { + return function(values) { + prop.copy(packFunc(values)); + }; + } + if ([Vec2, Vec3, Vec4, Color, Quat2].indexOf(obj.constructor) !== -1 && path2.length > 1) { + const parent = path2.length > 2 ? this._resolvePath(object, path2.slice(0, -1)) : object; + const objKey = path2[path2.length - 2]; + return function(values) { + obj[key] = packFunc(values); + parent[objKey] = obj; + }; + } + return function(values) { + obj[key] = packFunc(values); + }; + } + _createAnimTargetForProperty(propertyComponent, propertyHierarchy, targetPath) { + if (this.handlers && propertyHierarchy[0].startsWith("weight.")) { + return this.handlers.weight(propertyComponent, propertyHierarchy[0].replace("weight.", "")); + } else if (this.handlers && propertyHierarchy[0] === "material" && propertyHierarchy.length === 2) { + const materialPropertyName = propertyHierarchy[1]; + if (materialPropertyName.endsWith("Map")) { + return this.handlers.materialTexture(propertyComponent, materialPropertyName); + } + } + const property = this._resolvePath(propertyComponent, propertyHierarchy, true); + if (typeof property === "undefined") return null; + let setter; + let animDataType; + let animDataComponents; + if (typeof property === "number") { + setter = this._setter(propertyComponent, propertyHierarchy, _AnimComponentBinder._packFloat); + animDataType = "vector"; + animDataComponents = 1; + } else if (typeof property === "boolean") { + setter = this._setter(propertyComponent, propertyHierarchy, _AnimComponentBinder._packBoolean); + animDataType = "vector"; + animDataComponents = 1; + } else if (typeof property === "object") { + switch (property.constructor) { + case Vec2: + setter = this._setter(propertyComponent, propertyHierarchy, _AnimComponentBinder._packVec2); + animDataType = "vector"; + animDataComponents = 2; + break; + case Vec3: + setter = this._setter(propertyComponent, propertyHierarchy, _AnimComponentBinder._packVec3); + animDataType = "vector"; + animDataComponents = 3; + break; + case Vec4: + setter = this._setter(propertyComponent, propertyHierarchy, _AnimComponentBinder._packVec4); + animDataType = "vector"; + animDataComponents = 4; + break; + case Color: + setter = this._setter(propertyComponent, propertyHierarchy, _AnimComponentBinder._packColor); + animDataType = "vector"; + animDataComponents = 4; + break; + case Quat2: + setter = this._setter(propertyComponent, propertyHierarchy, _AnimComponentBinder._packQuat); + animDataType = "quaternion"; + animDataComponents = 4; + break; + default: + return null; + } + } + if (propertyHierarchy.indexOf("material") !== -1) { + return new AnimTarget(function(values) { + setter(values); + propertyComponent.material.update(); + }, animDataType, animDataComponents, targetPath); + } + return new AnimTarget(setter, animDataType, animDataComponents, targetPath); + } + rebind() { + this.targetCache = {}; + if (this.animComponent.rootBone) { + this.graph = this.animComponent.rootBone; + } else { + this.graph = this.animComponent.entity; + } + const nodes = {}; + const flatten = function flatten2(node) { + nodes[node.name] = node; + for (let i = 0; i < node.children.length; ++i) { + flatten2(node.children[i]); + } + }; + flatten(this.graph); + this.nodes = nodes; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/component-layer.js +var AnimComponentLayer = class { + constructor(name, controller, component, weight = 1, blendType = ANIM_LAYER_OVERWRITE) { + this._name = void 0; + this._controller = void 0; + this._component = void 0; + this._weight = void 0; + this._blendType = void 0; + this._mask = null; + this._blendTime = 0; + this._blendTimeElapsed = 0; + this._startingWeight = 0; + this._targetWeight = 0; + this._name = name; + this._controller = controller; + this._component = component; + this._weight = weight; + this._blendType = blendType; + } + get name() { + return this._name; + } + set playing(value) { + this._controller.playing = value; + } + get playing() { + return this._controller.playing; + } + get playable() { + return this._controller.playable; + } + get activeState() { + return this._controller.activeStateName; + } + get previousState() { + return this._controller.previousStateName; + } + get activeStateProgress() { + return this._controller.activeStateProgress; + } + get activeStateDuration() { + return this._controller.activeStateDuration; + } + set activeStateCurrentTime(time2) { + const controller = this._controller; + const layerPlaying = controller.playing; + controller.playing = true; + controller.activeStateCurrentTime = time2; + if (!layerPlaying) { + controller.update(0); + } + controller.playing = layerPlaying; + } + get activeStateCurrentTime() { + return this._controller.activeStateCurrentTime; + } + get transitioning() { + return this._controller.transitioning; + } + get transitionProgress() { + if (this.transitioning) { + return this._controller.transitionProgress; + } + return null; + } + get states() { + return this._controller.states; + } + set weight(value) { + this._weight = value; + this._component.dirtifyTargets(); + } + get weight() { + return this._weight; + } + set blendType(value) { + if (value !== this._blendType) { + this._blendType = value; + if (this._controller.normalizeWeights) { + this._component.rebind(); + } + } + } + get blendType() { + return this._blendType; + } + set mask(value) { + if (this._controller.assignMask(value)) { + this._component.rebind(); + } + this._mask = value; + } + get mask() { + return this._mask; + } + play(name) { + this._controller.play(name); + } + pause() { + this._controller.pause(); + } + reset() { + this._controller.reset(); + } + rebind() { + this._controller.rebind(); + } + update(dt) { + if (this._blendTime) { + if (this._blendTimeElapsed < this._blendTime) { + this.weight = math.lerp(this._startingWeight, this._targetWeight, this._blendTimeElapsed / this._blendTime); + this._blendTimeElapsed += dt; + } else { + this.weight = this._targetWeight; + this._blendTime = 0; + this._blendTimeElapsed = 0; + this._startingWeight = 0; + this._targetWeight = 0; + } + } + this._controller.update(dt); + } + blendToWeight(weight, time2) { + this._startingWeight = this.weight; + this._targetWeight = weight; + this._blendTime = Math.max(0, time2); + this._blendTimeElapsed = 0; + } + assignMask(mask) { + if (this._controller.assignMask(mask)) { + this._component.rebind(); + } + this._mask = mask; + } + assignAnimation(nodePath, animTrack, speed, loop) { + if (!(animTrack instanceof AnimTrack)) { + return; + } + this._controller.assignAnimation(nodePath, animTrack, speed, loop); + if (this._controller._transitions.length === 0) { + this._controller._transitions.push(new AnimTransition({ + from: "START", + to: nodePath + })); + } + if (this._component.activate && this._component.playable) { + this._component.playing = true; + } + } + removeNodeAnimations(nodeName) { + if (this._controller.removeNodeAnimations(nodeName)) { + this._component.playing = false; + } + } + getAnimationAsset(stateName) { + return this._component.animationAssets[`${this.name}:${stateName}`]; + } + transition(to, time2 = 0, transitionOffset = null) { + this._controller.updateStateFromTransition(new AnimTransition({ + from: this._controller.activeStateName, + to, + time: time2, + transitionOffset + })); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/state-graph/anim-state-graph.js +var AnimStateGraph = class { + constructor(data2) { + this._layers = []; + this._parameters = {}; + if (!Array.isArray(data2.layers)) { + for (const layerId in data2.layers) { + const dataLayer = data2.layers[layerId]; + const layer = { + name: dataLayer.name, + blendType: dataLayer.blendType, + weight: dataLayer.weight, + states: [], + transitions: [] + }; + for (let i = 0; i < dataLayer.states.length; i++) { + layer.states.push(data2.states[dataLayer.states[i]]); + } + for (let i = 0; i < dataLayer.transitions.length; i++) { + const dataLayerTransition = data2.transitions[dataLayer.transitions[i]]; + if (dataLayerTransition.conditions && !Array.isArray(dataLayerTransition.conditions)) { + const conditionKeys = Object.keys(dataLayerTransition.conditions); + const conditions = []; + for (let j = 0; j < conditionKeys.length; j++) { + const condition = dataLayerTransition.conditions[conditionKeys[j]]; + if (condition.parameterName) { + conditions.push(condition); + } + } + dataLayerTransition.conditions = conditions; + } + if (Number.isInteger(dataLayerTransition.from)) { + dataLayerTransition.from = data2.states[dataLayerTransition.from].name; + } + if (Number.isInteger(dataLayerTransition.to)) { + dataLayerTransition.to = data2.states[dataLayerTransition.to].name; + } + layer.transitions.push(dataLayerTransition); + } + this._layers.push(layer); + } + } else { + this._layers = data2.layers; + } + for (const paramId in data2.parameters) { + const param = data2.parameters[paramId]; + this._parameters[param.name] = { + type: param.type, + value: param.value + }; + } + } + get parameters() { + return Object.assign({}, this._parameters); + } + get layers() { + return this._layers; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/component.js +var AnimComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + this.findParameter = (name) => { + return this._parameters[name]; + }; + this.consumeTrigger = (name) => { + this._consumedTriggers.add(name); + }; + this._stateGraphAsset = null; + this._animationAssets = {}; + this._speed = 1; + this._activate = true; + this._playing = false; + this._rootBone = null; + this._stateGraph = null; + this._layers = []; + this._layerIndices = {}; + this._parameters = {}; + this._targets = {}; + this._consumedTriggers = /* @__PURE__ */ new Set(); + this._normalizeWeights = false; + } + set stateGraphAsset(value) { + if (value === null) { + this.removeStateGraph(); + return; + } + if (this._stateGraphAsset) { + const stateGraphAsset = this.system.app.assets.get(this._stateGraphAsset); + stateGraphAsset.off("change", this._onStateGraphAssetChangeEvent, this); + } + let _id; + let _asset; + if (value instanceof Asset) { + _id = value.id; + _asset = this.system.app.assets.get(_id); + if (!_asset) { + this.system.app.assets.add(value); + _asset = this.system.app.assets.get(_id); + } + } else { + _id = value; + _asset = this.system.app.assets.get(_id); + } + if (!_asset || this._stateGraphAsset === _id) { + return; + } + if (_asset.resource) { + this._stateGraph = _asset.resource; + this.loadStateGraph(this._stateGraph); + _asset.on("change", this._onStateGraphAssetChangeEvent, this); + } else { + _asset.once("load", (asset2) => { + this._stateGraph = asset2.resource; + this.loadStateGraph(this._stateGraph); + }); + _asset.on("change", this._onStateGraphAssetChangeEvent, this); + this.system.app.assets.load(_asset); + } + this._stateGraphAsset = _id; + } + get stateGraphAsset() { + return this._stateGraphAsset; + } + set normalizeWeights(value) { + this._normalizeWeights = value; + this.unbind(); + } + get normalizeWeights() { + return this._normalizeWeights; + } + set animationAssets(value) { + this._animationAssets = value; + this.loadAnimationAssets(); + } + get animationAssets() { + return this._animationAssets; + } + set speed(value) { + this._speed = value; + } + get speed() { + return this._speed; + } + set activate(value) { + this._activate = value; + } + get activate() { + return this._activate; + } + set playing(value) { + this._playing = value; + } + get playing() { + return this._playing; + } + set rootBone(value) { + if (typeof value === "string") { + const entity = this.entity.root.findByGuid(value); + this._rootBone = entity; + } else if (value instanceof Entity) { + this._rootBone = value; + } else { + this._rootBone = null; + } + this.rebind(); + } + get rootBone() { + return this._rootBone; + } + set stateGraph(value) { + this._stateGraph = value; + } + get stateGraph() { + return this._stateGraph; + } + get layers() { + return this._layers; + } + set layerIndices(value) { + this._layerIndices = value; + } + get layerIndices() { + return this._layerIndices; + } + set parameters(value) { + this._parameters = value; + } + get parameters() { + return this._parameters; + } + set targets(value) { + this._targets = value; + } + get targets() { + return this._targets; + } + get playable() { + for (let i = 0; i < this._layers.length; i++) { + if (!this._layers[i].playable) { + return false; + } + } + return true; + } + get baseLayer() { + if (this._layers.length > 0) { + return this._layers[0]; + } + return null; + } + _onStateGraphAssetChangeEvent(asset2) { + const prevAnimationAssets = this.animationAssets; + const prevMasks = this.layers.map((layer) => layer.mask); + this.removeStateGraph(); + this._stateGraph = new AnimStateGraph(asset2._data); + this.loadStateGraph(this._stateGraph); + this.animationAssets = prevAnimationAssets; + this.loadAnimationAssets(); + this.layers.forEach((layer, i) => { + layer.mask = prevMasks[i]; + }); + this.rebind(); + } + dirtifyTargets() { + const targets = Object.values(this._targets); + for (let i = 0; i < targets.length; i++) { + targets[i].dirty = true; + } + } + _addLayer({ + name, + states, + transitions, + weight, + mask, + blendType + }) { + let graph; + if (this.rootBone) { + graph = this.rootBone; + } else { + graph = this.entity; + } + const layerIndex = this._layers.length; + const animBinder = new AnimComponentBinder(this, graph, name, mask, layerIndex); + const animEvaluator = new AnimEvaluator(animBinder); + const controller = new AnimController(animEvaluator, states, transitions, this._activate, this, this.findParameter, this.consumeTrigger); + this._layers.push(new AnimComponentLayer(name, controller, this, weight, blendType)); + this._layerIndices[name] = layerIndex; + return this._layers[layerIndex]; + } + addLayer(name, weight, mask, blendType) { + const layer = this.findAnimationLayer(name); + if (layer) return layer; + const states = [{ + "name": "START", + "speed": 1 + }]; + const transitions = []; + return this._addLayer({ + name, + states, + transitions, + weight, + mask, + blendType + }); + } + _assignParameters(stateGraph) { + this._parameters = {}; + const paramKeys = Object.keys(stateGraph.parameters); + for (let i = 0; i < paramKeys.length; i++) { + const paramKey = paramKeys[i]; + this._parameters[paramKey] = { + type: stateGraph.parameters[paramKey].type, + value: stateGraph.parameters[paramKey].value + }; + } + } + loadStateGraph(stateGraph) { + this._stateGraph = stateGraph; + this._assignParameters(stateGraph); + this._layers = []; + let containsBlendTree = false; + for (let i = 0; i < stateGraph.layers.length; i++) { + const layer = stateGraph.layers[i]; + this._addLayer(_extends({}, layer)); + if (layer.states.some((state) => state.blendTree)) { + containsBlendTree = true; + } + } + if (!containsBlendTree) { + this.setupAnimationAssets(); + } + } + setupAnimationAssets() { + for (let i = 0; i < this._layers.length; i++) { + const layer = this._layers[i]; + const layerName = layer.name; + for (let j = 0; j < layer.states.length; j++) { + const stateName = layer.states[j]; + if (ANIM_CONTROL_STATES.indexOf(stateName) === -1) { + const stateKey = layerName + ":" + stateName; + if (!this._animationAssets[stateKey]) { + this._animationAssets[stateKey] = { + asset: null + }; + } + } + } + } + this.loadAnimationAssets(); + } + loadAnimationAssets() { + for (let i = 0; i < this._layers.length; i++) { + const layer = this._layers[i]; + for (let j = 0; j < layer.states.length; j++) { + const stateName = layer.states[j]; + if (ANIM_CONTROL_STATES.indexOf(stateName) !== -1) continue; + const animationAsset = this._animationAssets[layer.name + ":" + stateName]; + if (!animationAsset || !animationAsset.asset) { + this.findAnimationLayer(layer.name).assignAnimation(stateName, AnimTrack.EMPTY); + continue; + } + const assetId = animationAsset.asset; + const asset2 = this.system.app.assets.get(assetId); + if (asset2) { + if (asset2.resource) { + this.onAnimationAssetLoaded(layer.name, stateName, asset2); + } else { + asset2.once("load", function(layerName, stateName2) { + return function(asset3) { + this.onAnimationAssetLoaded(layerName, stateName2, asset3); + }.bind(this); + }.bind(this)(layer.name, stateName)); + this.system.app.assets.load(asset2); + } + } + } + } + } + onAnimationAssetLoaded(layerName, stateName, asset2) { + this.findAnimationLayer(layerName).assignAnimation(stateName, asset2.resource); + } + removeStateGraph() { + this._stateGraph = null; + this._stateGraphAsset = null; + this._animationAssets = {}; + this._layers = []; + this._layerIndices = {}; + this._parameters = {}; + this._playing = false; + this.unbind(); + this._targets = {}; + } + reset() { + this._assignParameters(this._stateGraph); + for (let i = 0; i < this._layers.length; i++) { + const layerPlaying = this._layers[i].playing; + this._layers[i].reset(); + this._layers[i].playing = layerPlaying; + } + } + unbind() { + if (!this._normalizeWeights) { + Object.keys(this._targets).forEach((targetKey) => { + this._targets[targetKey].unbind(); + }); + } + } + rebind() { + this._targets = {}; + for (let i = 0; i < this._layers.length; i++) { + this._layers[i].rebind(); + } + } + findAnimationLayer(name) { + const layerIndex = this._layerIndices[name]; + return this._layers[layerIndex] || null; + } + addAnimationState(nodeName, animTrack, speed = 1, loop = true, layerName = "Base") { + if (!this._stateGraph) { + this.loadStateGraph(new AnimStateGraph({ + "layers": [{ + "name": layerName, + "states": [{ + "name": "START", + "speed": 1 + }, { + "name": nodeName, + "speed": speed, + "loop": loop, + "defaultState": true + }], + "transitions": [{ + "from": "START", + "to": nodeName + }] + }], + "parameters": {} + })); + } + const layer = this.findAnimationLayer(layerName); + if (layer) { + layer.assignAnimation(nodeName, animTrack, speed, loop); + } else { + var _this$addLayer; + (_this$addLayer = this.addLayer(layerName)) == null || _this$addLayer.assignAnimation(nodeName, animTrack, speed, loop); + } + } + assignAnimation(nodePath, animTrack, layerName, speed = 1, loop = true) { + if (!this._stateGraph && nodePath.indexOf(".") === -1) { + this.loadStateGraph(new AnimStateGraph({ + "layers": [{ + "name": "Base", + "states": [{ + "name": "START", + "speed": 1 + }, { + "name": nodePath, + "speed": speed, + "loop": loop, + "defaultState": true + }], + "transitions": [{ + "from": "START", + "to": nodePath + }] + }], + "parameters": {} + })); + this.baseLayer.assignAnimation(nodePath, animTrack); + return; + } + const layer = layerName ? this.findAnimationLayer(layerName) : this.baseLayer; + if (!layer) { + return; + } + layer.assignAnimation(nodePath, animTrack, speed, loop); + } + removeNodeAnimations(nodeName, layerName) { + const layer = layerName ? this.findAnimationLayer(layerName) : this.baseLayer; + if (!layer) { + return; + } + layer.removeNodeAnimations(nodeName); + } + getParameterValue(name, type2) { + const param = this._parameters[name]; + if (param && param.type === type2) { + return param.value; + } + return void 0; + } + setParameterValue(name, type2, value) { + const param = this._parameters[name]; + if (param && param.type === type2) { + param.value = value; + return; + } + } + getFloat(name) { + return this.getParameterValue(name, ANIM_PARAMETER_FLOAT); + } + setFloat(name, value) { + this.setParameterValue(name, ANIM_PARAMETER_FLOAT, value); + } + getInteger(name) { + return this.getParameterValue(name, ANIM_PARAMETER_INTEGER); + } + setInteger(name, value) { + if (typeof value === "number" && value % 1 === 0) { + this.setParameterValue(name, ANIM_PARAMETER_INTEGER, value); + } + } + getBoolean(name) { + return this.getParameterValue(name, ANIM_PARAMETER_BOOLEAN); + } + setBoolean(name, value) { + this.setParameterValue(name, ANIM_PARAMETER_BOOLEAN, !!value); + } + getTrigger(name) { + return this.getParameterValue(name, ANIM_PARAMETER_TRIGGER); + } + setTrigger(name, singleFrame = false) { + this.setParameterValue(name, ANIM_PARAMETER_TRIGGER, true); + if (singleFrame) { + this._consumedTriggers.add(name); + } + } + resetTrigger(name) { + this.setParameterValue(name, ANIM_PARAMETER_TRIGGER, false); + } + onBeforeRemove() { + if (Number.isFinite(this._stateGraphAsset)) { + const stateGraphAsset = this.system.app.assets.get(this._stateGraphAsset); + stateGraphAsset.off("change", this._onStateGraphAssetChangeEvent, this); + } + } + update(dt) { + for (let i = 0; i < this.layers.length; i++) { + this.layers[i].update(dt * this.speed); + } + this._consumedTriggers.forEach((trigger) => { + this.parameters[trigger].value = false; + }); + this._consumedTriggers.clear(); + } + resolveDuplicatedEntityReferenceProperties(oldAnim, duplicatedIdsMap) { + if (oldAnim.rootBone && duplicatedIdsMap[oldAnim.rootBone.getGuid()]) { + this.rootBone = duplicatedIdsMap[oldAnim.rootBone.getGuid()]; + } else { + this.rebind(); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/data.js +var AnimComponentData = class { + constructor() { + this.enabled = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/system.js +var _schema = ["enabled"]; +var AnimComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.id = "anim"; + this.ComponentType = AnimComponent; + this.DataType = AnimComponentData; + this.schema = _schema; + this.on("beforeremove", this.onBeforeRemove, this); + this.app.systems.on("animationUpdate", this.onAnimationUpdate, this); + } + initializeComponentData(component, data2, properties2) { + super.initializeComponentData(component, data2, _schema); + const complexProperties = ["animationAssets", "stateGraph", "layers", "masks"]; + Object.keys(data2).forEach((key) => { + if (complexProperties.includes(key)) return; + component[key] = data2[key]; + }); + if (data2.stateGraph) { + component.stateGraph = data2.stateGraph; + component.loadStateGraph(component.stateGraph); + } + if (data2.layers) { + data2.layers.forEach((layer, i) => { + layer._controller.states.forEach((stateKey) => { + layer._controller._states[stateKey]._animationList.forEach((node) => { + if (!node.animTrack || node.animTrack === AnimTrack.EMPTY) { + const animationAsset = this.app.assets.get(layer._component._animationAssets[layer.name + ":" + node.name].asset); + if (animationAsset && !animationAsset.loaded) { + animationAsset.once("load", () => { + component.layers[i].assignAnimation(node.name, animationAsset.resource); + }); + } + } else { + component.layers[i].assignAnimation(node.name, node.animTrack); + } + }); + }); + }); + } + if (data2.animationAssets) { + component.animationAssets = Object.assign(component.animationAssets, data2.animationAssets); + } + if (data2.masks) { + Object.keys(data2.masks).forEach((key) => { + if (component.layers[key]) { + const maskData = data2.masks[key].mask; + const mask = {}; + Object.keys(maskData).forEach((maskKey) => { + mask[decodeURI(maskKey)] = maskData[maskKey]; + }); + component.layers[key].mask = mask; + } + }); + } + } + onAnimationUpdate(dt) { + const components = this.store; + for (const id12 in components) { + if (components.hasOwnProperty(id12)) { + const component = components[id12].entity.anim; + const componentData = component.data; + if (componentData.enabled && component.entity.enabled && component.playing) { + component.update(dt); + } + } + } + } + cloneComponent(entity, clone) { + let masks; + if (!entity.anim.rootBone || entity.anim.rootBone === entity) { + masks = {}; + entity.anim.layers.forEach((layer, i) => { + if (layer.mask) { + const mask = {}; + Object.keys(layer.mask).forEach((path2) => { + const pathArr = path2.split("/"); + pathArr.shift(); + const clonePath = [clone.name, ...pathArr].join("/"); + mask[clonePath] = layer.mask[path2]; + }); + masks[i] = { + mask + }; + } + }); + } + const data2 = { + stateGraphAsset: entity.anim.stateGraphAsset, + animationAssets: entity.anim.animationAssets, + speed: entity.anim.speed, + activate: entity.anim.activate, + playing: entity.anim.playing, + rootBone: entity.anim.rootBone, + stateGraph: entity.anim.stateGraph, + layers: entity.anim.layers, + layerIndices: entity.anim.layerIndices, + parameters: entity.anim.parameters, + normalizeWeights: entity.anim.normalizeWeights, + masks + }; + return this.addComponent(clone, data2); + } + onBeforeRemove(entity, component) { + component.onBeforeRemove(); + } + destroy() { + super.destroy(); + this.app.systems.off("animationUpdate", this.onAnimationUpdate, this); + } +}; +Component._buildAccessors(AnimComponent.prototype, _schema); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/audio-listener/component.js +var AudioListenerComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + } + setCurrentListener() { + if (this.enabled && this.entity.audiolistener && this.entity.enabled) { + this.system.current = this.entity; + const position2 = this.system.current.getPosition(); + this.system.manager.listener.setPosition(position2); + } + } + onEnable() { + this.setCurrentListener(); + } + onDisable() { + if (this.system.current === this.entity) { + this.system.current = null; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/audio-listener/data.js +var AudioListenerComponentData = class { + constructor() { + this.enabled = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/audio-listener/system.js +var _schema2 = ["enabled"]; +var AudioListenerComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.id = "audiolistener"; + this.ComponentType = AudioListenerComponent; + this.DataType = AudioListenerComponentData; + this.schema = _schema2; + this.manager = app2.soundManager; + this.current = null; + this.app.systems.on("update", this.onUpdate, this); + } + initializeComponentData(component, data2, properties2) { + properties2 = ["enabled"]; + super.initializeComponentData(component, data2, properties2); + } + onUpdate(dt) { + if (this.current) { + const position2 = this.current.getPosition(); + this.manager.listener.setPosition(position2); + const wtm = this.current.getWorldTransform(); + this.manager.listener.setOrientation(wtm); + } + } + destroy() { + super.destroy(); + this.app.systems.off("update", this.onUpdate, this); + } +}; +Component._buildAccessors(AudioListenerComponent.prototype, _schema2); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/utils/entity-reference.js +var EntityReference = class extends EventHandler { + constructor(parentComponent, entityPropertyName, eventConfig) { + super(); + if (!parentComponent || !(parentComponent instanceof Component)) { + throw new Error("The parentComponent argument is required and must be a Component"); + } else if (!entityPropertyName || typeof entityPropertyName !== "string") { + throw new Error("The propertyName argument is required and must be a string"); + } else if (eventConfig && typeof eventConfig !== "object") { + throw new Error("If provided, the eventConfig argument must be an object"); + } + this._parentComponent = parentComponent; + this._entityPropertyName = entityPropertyName; + this._entity = null; + this._app = parentComponent.system.app; + this._configureEventListeners(eventConfig || {}, { + "entity#destroy": this._onEntityDestroy + }); + this._toggleLifecycleListeners("on"); + } + _configureEventListeners(externalEventConfig, internalEventConfig) { + const externalEventListenerConfigs = this._parseEventListenerConfig(externalEventConfig, "external", this._parentComponent); + const internalEventListenerConfigs = this._parseEventListenerConfig(internalEventConfig, "internal", this); + this._eventListenerConfigs = externalEventListenerConfigs.concat(internalEventListenerConfigs); + this._listenerStatusFlags = {}; + this._gainListeners = {}; + this._loseListeners = {}; + } + _parseEventListenerConfig(eventConfig, prefix, scope) { + return Object.keys(eventConfig).map(function(listenerDescription, index) { + const listenerDescriptionParts = listenerDescription.split("#"); + const sourceName = listenerDescriptionParts[0]; + const eventName = listenerDescriptionParts[1]; + const callback = eventConfig[listenerDescription]; + if (listenerDescriptionParts.length !== 2 || typeof sourceName !== "string" || sourceName.length === 0 || typeof eventName !== "string" || eventName.length === 0) { + throw new Error("Invalid event listener description: `" + listenerDescription + "`"); + } + if (typeof callback !== "function") { + throw new Error("Invalid or missing callback for event listener `" + listenerDescription + "`"); + } + return { + id: prefix + "_" + index + "_" + listenerDescription, + sourceName, + eventName, + callback, + scope + }; + }, this); + } + _toggleLifecycleListeners(onOrOff) { + this._parentComponent[onOrOff]("set_" + this._entityPropertyName, this._onSetEntity, this); + this._parentComponent.system[onOrOff]("beforeremove", this._onParentComponentRemove, this); + this._app.systems[onOrOff]("postPostInitialize", this._updateEntityReference, this); + this._app[onOrOff]("tools:sceneloaded", this._onSceneLoaded, this); + const allComponentSystems = []; + for (let i = 0; i < this._eventListenerConfigs.length; ++i) { + const config = this._eventListenerConfigs[i]; + const componentSystem = this._app.systems[config.sourceName]; + if (componentSystem) { + if (allComponentSystems.indexOf(componentSystem) === -1) { + allComponentSystems.push(componentSystem); + } + if (componentSystem && config.eventName === "gain") { + this._gainListeners[config.sourceName] = config; + } + if (componentSystem && config.eventName === "lose") { + this._loseListeners[config.sourceName] = config; + } + } + } + for (let i = 0; i < allComponentSystems.length; ++i) { + allComponentSystems[i][onOrOff]("add", this._onComponentAdd, this); + allComponentSystems[i][onOrOff]("beforeremove", this._onComponentRemove, this); + } + } + _onSetEntity(name, oldValue, newValue) { + if (newValue instanceof Entity) { + this._updateEntityReference(); + } else { + if (newValue !== null && newValue !== void 0 && typeof newValue !== "string") { + console.warn("Entity field `" + this._entityPropertyName + "` was set to unexpected type '" + typeof newValue + "'"); + return; + } + if (oldValue !== newValue) { + this._updateEntityReference(); + } + } + } + onParentComponentEnable() { + if (!this._entity) { + this._updateEntityReference(); + } + } + _onSceneLoaded() { + this._updateEntityReference(); + } + _updateEntityReference() { + let nextEntityGuid = this._parentComponent.data[this._entityPropertyName]; + let nextEntity; + if (nextEntityGuid instanceof Entity) { + nextEntity = nextEntityGuid; + nextEntityGuid = nextEntity.getGuid(); + this._parentComponent.data[this._entityPropertyName] = nextEntityGuid; + } else { + const root = this._parentComponent.system.app.root; + const isOnSceneGraph = this._parentComponent.entity.isDescendantOf(root); + nextEntity = isOnSceneGraph && nextEntityGuid ? root.findByGuid(nextEntityGuid) : null; + } + const hasChanged = this._entity !== nextEntity; + if (hasChanged) { + if (this._entity) { + this._onBeforeEntityChange(); + } + this._entity = nextEntity; + if (this._entity) { + this._onAfterEntityChange(); + } + this.fire("set:entity", this._entity); + } + } + _onBeforeEntityChange() { + this._toggleEntityListeners("off"); + this._callAllGainOrLoseListeners(this._loseListeners); + } + _onAfterEntityChange() { + this._toggleEntityListeners("on"); + this._callAllGainOrLoseListeners(this._gainListeners); + } + _onComponentAdd(entity, component) { + const componentName = component.system.id; + if (entity === this._entity) { + this._callGainOrLoseListener(componentName, this._gainListeners); + this._toggleComponentListeners("on", componentName); + } + } + _onComponentRemove(entity, component) { + const componentName = component.system.id; + if (entity === this._entity) { + this._callGainOrLoseListener(componentName, this._loseListeners); + this._toggleComponentListeners("off", componentName, true); + } + } + _callAllGainOrLoseListeners(listenerMap) { + for (const componentName in this._entity.c) { + this._callGainOrLoseListener(componentName, listenerMap); + } + } + _callGainOrLoseListener(componentName, listenerMap) { + if (this._entity.c.hasOwnProperty(componentName) && listenerMap[componentName]) { + const config = listenerMap[componentName]; + config.callback.call(config.scope); + } + } + _toggleEntityListeners(onOrOff, isDestroying) { + if (this._entity) { + for (let i = 0; i < this._eventListenerConfigs.length; ++i) { + this._safeToggleListener(onOrOff, this._eventListenerConfigs[i], isDestroying); + } + } + } + _toggleComponentListeners(onOrOff, componentName, isDestroying) { + for (let i = 0; i < this._eventListenerConfigs.length; ++i) { + const config = this._eventListenerConfigs[i]; + if (config.sourceName === componentName) { + this._safeToggleListener(onOrOff, config, isDestroying); + } + } + } + _safeToggleListener(onOrOff, config, isDestroying) { + const isAdding = onOrOff === "on"; + if (isAdding && this._listenerStatusFlags[config.id]) { + return; + } + const source = this._getEventSource(config.sourceName, isDestroying); + if (source) { + source[onOrOff](config.eventName, config.callback, config.scope); + this._listenerStatusFlags[config.id] = isAdding; + } + } + _getEventSource(sourceName, isDestroying) { + if (sourceName === "entity") { + return this._entity; + } + const component = this._entity[sourceName]; + if (component) { + return component; + } + if (!isDestroying) { + console.warn("Entity has no component with name " + sourceName); + } + return null; + } + _onEntityDestroy(entity) { + if (this._entity === entity) { + this._toggleEntityListeners("off", true); + this._entity = null; + } + } + _onParentComponentRemove(entity, component) { + if (component === this._parentComponent) { + this._toggleLifecycleListeners("off"); + this._toggleEntityListeners("off", true); + } + } + hasComponent(componentName) { + return this._entity && this._entity.c ? !!this._entity.c[componentName] : false; + } + get entity() { + return this._entity; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/collision/component.js +var _vec3 = new Vec3(); +var _quat = new Quat2(); +var CollisionComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + this._compoundParent = null; + this._hasOffset = false; + this.entity.on("insert", this._onInsert, this); + this.on("set_type", this.onSetType, this); + this.on("set_convexHull", this.onSetModel, this); + this.on("set_halfExtents", this.onSetHalfExtents, this); + this.on("set_linearOffset", this.onSetOffset, this); + this.on("set_angularOffset", this.onSetOffset, this); + this.on("set_radius", this.onSetRadius, this); + this.on("set_height", this.onSetHeight, this); + this.on("set_axis", this.onSetAxis, this); + this.on("set_asset", this.onSetAsset, this); + this.on("set_renderAsset", this.onSetRenderAsset, this); + this.on("set_model", this.onSetModel, this); + this.on("set_render", this.onSetRender, this); + } + get data() { + const record = this.system.store[this.entity.getGuid()]; + return record ? record.data : null; + } + set enabled(arg) { + this._setValue("enabled", arg); + } + get enabled() { + return this.data.enabled; + } + set type(arg) { + this._setValue("type", arg); + } + get type() { + return this.data.type; + } + set halfExtents(arg) { + this._setValue("halfExtents", arg); + } + get halfExtents() { + return this.data.halfExtents; + } + set linearOffset(arg) { + this._setValue("linearOffset", arg); + } + get linearOffset() { + return this.data.linearOffset; + } + set angularOffset(arg) { + this._setValue("angularOffset", arg); + } + get angularOffset() { + return this.data.angularOffset; + } + set radius(arg) { + this._setValue("radius", arg); + } + get radius() { + return this.data.radius; + } + set axis(arg) { + this._setValue("axis", arg); + } + get axis() { + return this.data.axis; + } + set height(arg) { + this._setValue("height", arg); + } + get height() { + return this.data.height; + } + set asset(arg) { + this._setValue("asset", arg); + } + get asset() { + return this.data.asset; + } + set renderAsset(arg) { + this._setValue("renderAsset", arg); + } + get renderAsset() { + return this.data.renderAsset; + } + set convexHull(arg) { + this._setValue("convexHull", arg); + } + get convexHull() { + return this.data.convexHull; + } + set shape(arg) { + this._setValue("shape", arg); + } + get shape() { + return this.data.shape; + } + set model(arg) { + this._setValue("model", arg); + } + get model() { + return this.data.model; + } + set render(arg) { + this._setValue("render", arg); + } + get render() { + return this.data.render; + } + set checkVertexDuplicates(arg) { + this._setValue("checkVertexDuplicates", arg); + } + get checkVertexDuplicates() { + return this.data.checkVertexDuplicates; + } + _setValue(name, value) { + const data2 = this.data; + const oldValue = data2[name]; + data2[name] = value; + this.fire("set", name, oldValue, value); + } + onSetType(name, oldValue, newValue) { + if (oldValue !== newValue) { + this.system.changeType(this, oldValue, newValue); + } + } + onSetHalfExtents(name, oldValue, newValue) { + const t = this.data.type; + if (this.data.initialized && t === "box") { + this.system.recreatePhysicalShapes(this); + } + } + onSetOffset(name, oldValue, newValue) { + this._hasOffset = !this.data.linearOffset.equals(Vec3.ZERO) || !this.data.angularOffset.equals(Quat2.IDENTITY); + if (this.data.initialized) { + this.system.recreatePhysicalShapes(this); + } + } + onSetRadius(name, oldValue, newValue) { + const t = this.data.type; + if (this.data.initialized && (t === "sphere" || t === "capsule" || t === "cylinder" || t === "cone")) { + this.system.recreatePhysicalShapes(this); + } + } + onSetHeight(name, oldValue, newValue) { + const t = this.data.type; + if (this.data.initialized && (t === "capsule" || t === "cylinder" || t === "cone")) { + this.system.recreatePhysicalShapes(this); + } + } + onSetAxis(name, oldValue, newValue) { + const t = this.data.type; + if (this.data.initialized && (t === "capsule" || t === "cylinder" || t === "cone")) { + this.system.recreatePhysicalShapes(this); + } + } + onSetAsset(name, oldValue, newValue) { + const assets = this.system.app.assets; + if (oldValue) { + const asset2 = assets.get(oldValue); + if (asset2) { + asset2.off("remove", this.onAssetRemoved, this); + } + } + if (newValue) { + if (newValue instanceof Asset) { + this.data.asset = newValue.id; + } + const asset2 = assets.get(this.data.asset); + if (asset2) { + asset2.off("remove", this.onAssetRemoved, this); + asset2.on("remove", this.onAssetRemoved, this); + } + } + if (this.data.initialized && this.data.type === "mesh") { + if (!newValue) { + this.data.model = null; + } + this.system.recreatePhysicalShapes(this); + } + } + onSetRenderAsset(name, oldValue, newValue) { + const assets = this.system.app.assets; + if (oldValue) { + const asset2 = assets.get(oldValue); + if (asset2) { + asset2.off("remove", this.onRenderAssetRemoved, this); + } + } + if (newValue) { + if (newValue instanceof Asset) { + this.data.renderAsset = newValue.id; + } + const asset2 = assets.get(this.data.renderAsset); + if (asset2) { + asset2.off("remove", this.onRenderAssetRemoved, this); + asset2.on("remove", this.onRenderAssetRemoved, this); + } + } + if (this.data.initialized && this.data.type === "mesh") { + if (!newValue) { + this.data.render = null; + } + this.system.recreatePhysicalShapes(this); + } + } + onSetModel(name, oldValue, newValue) { + if (this.data.initialized && this.data.type === "mesh") { + this.system.implementations.mesh.doRecreatePhysicalShape(this); + } + } + onSetRender(name, oldValue, newValue) { + this.onSetModel(name, oldValue, newValue); + } + onAssetRemoved(asset2) { + asset2.off("remove", this.onAssetRemoved, this); + if (this.data.asset === asset2.id) { + this.asset = null; + } + } + onRenderAssetRemoved(asset2) { + asset2.off("remove", this.onRenderAssetRemoved, this); + if (this.data.renderAsset === asset2.id) { + this.renderAsset = null; + } + } + _getCompoundChildShapeIndex(shape2) { + const compound = this.data.shape; + const shapes = compound.getNumChildShapes(); + for (let i = 0; i < shapes; i++) { + const childShape = compound.getChildShape(i); + if (childShape.ptr === shape2.ptr) { + return i; + } + } + return null; + } + _onInsert(parent) { + if (typeof Ammo === "undefined") { + return; + } + if (this._compoundParent) { + this.system.recreatePhysicalShapes(this); + } else if (!this.entity.rigidbody) { + let ancestor = this.entity.parent; + while (ancestor) { + if (ancestor.collision && ancestor.collision.type === "compound") { + if (ancestor.collision.shape.getNumChildShapes() === 0) { + this.system.recreatePhysicalShapes(ancestor.collision); + } else { + this.system.recreatePhysicalShapes(this); + } + break; + } + ancestor = ancestor.parent; + } + } + } + _updateCompound() { + const entity = this.entity; + if (entity._dirtyWorld) { + let dirty = entity._dirtyLocal; + let parent = entity; + while (parent && !dirty) { + if (parent.collision && parent.collision === this._compoundParent) { + break; + } + if (parent._dirtyLocal) { + dirty = true; + } + parent = parent.parent; + } + if (dirty) { + entity.forEach(this.system.implementations.compound._updateEachDescendantTransform, entity); + const bodyComponent = this._compoundParent.entity.rigidbody; + if (bodyComponent) { + bodyComponent.activate(); + } + } + } + } + getShapePosition() { + const pos = this.entity.getPosition(); + if (this._hasOffset) { + const rot = this.entity.getRotation(); + const lo = this.data.linearOffset; + _quat.copy(rot).transformVector(lo, _vec3); + return _vec3.add(pos); + } + return pos; + } + getShapeRotation() { + const rot = this.entity.getRotation(); + if (this._hasOffset) { + return _quat.copy(rot).mul(this.data.angularOffset); + } + return rot; + } + onEnable() { + if (this.data.type === "mesh" && (this.data.asset || this.data.renderAsset) && this.data.initialized) { + const asset2 = this.system.app.assets.get(this.data.asset || this.data.renderAsset); + if (asset2 && (!asset2.resource || !this.data.shape)) { + this.system.recreatePhysicalShapes(this); + return; + } + } + if (this.entity.rigidbody) { + if (this.entity.rigidbody.enabled) { + this.entity.rigidbody.enableSimulation(); + } + } else if (this._compoundParent && this !== this._compoundParent) { + if (this._compoundParent.shape.getNumChildShapes() === 0) { + this.system.recreatePhysicalShapes(this._compoundParent); + } else { + const transform = this.system._getNodeTransform(this.entity, this._compoundParent.entity); + this._compoundParent.shape.addChildShape(transform, this.data.shape); + Ammo.destroy(transform); + if (this._compoundParent.entity.rigidbody) { + this._compoundParent.entity.rigidbody.activate(); + } + } + } else if (this.entity.trigger) { + this.entity.trigger.enable(); + } + } + onDisable() { + if (this.entity.rigidbody) { + this.entity.rigidbody.disableSimulation(); + } else if (this._compoundParent && this !== this._compoundParent) { + if (!this._compoundParent.entity._destroying) { + this.system._removeCompoundChild(this._compoundParent, this.data.shape); + if (this._compoundParent.entity.rigidbody) { + this._compoundParent.entity.rigidbody.activate(); + } + } + } else if (this.entity.trigger) { + this.entity.trigger.disable(); + } + } + onBeforeRemove() { + if (this.asset) { + this.asset = null; + } + if (this.renderAsset) { + this.renderAsset = null; + } + this.entity.off("insert", this._onInsert, this); + this.off(); + } +}; +CollisionComponent.EVENT_CONTACT = "contact"; +CollisionComponent.EVENT_COLLISIONSTART = "collisionstart"; +CollisionComponent.EVENT_COLLISIONEND = "collisionend"; +CollisionComponent.EVENT_TRIGGERENTER = "triggerenter"; +CollisionComponent.EVENT_TRIGGERLEAVE = "triggerleave"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/collision/data.js +var CollisionComponentData = class { + constructor() { + this.enabled = true; + this.type = "box"; + this.halfExtents = new Vec3(0.5, 0.5, 0.5); + this.linearOffset = new Vec3(); + this.angularOffset = new Quat2(); + this.radius = 0.5; + this.axis = 1; + this.height = 2; + this.convexHull = false; + this.asset = null; + this.renderAsset = null; + this.checkVertexDuplicates = true; + this.shape = null; + this.model = null; + this.render = null; + this.initialized = false; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/rigid-body/constants.js +var BODYTYPE_STATIC = "static"; +var BODYTYPE_DYNAMIC = "dynamic"; +var BODYTYPE_KINEMATIC = "kinematic"; +var BODYFLAG_KINEMATIC_OBJECT = 2; +var BODYFLAG_NORESPONSE_OBJECT = 4; +var BODYSTATE_ACTIVE_TAG = 1; +var BODYSTATE_DISABLE_DEACTIVATION = 4; +var BODYSTATE_DISABLE_SIMULATION = 5; +var BODYGROUP_DYNAMIC = 1; +var BODYGROUP_STATIC = 2; +var BODYGROUP_KINEMATIC = 4; +var BODYGROUP_TRIGGER = 16; +var BODYMASK_ALL = 65535; +var BODYMASK_NOT_STATIC = 65535 ^ 2; +var BODYMASK_NOT_STATIC_KINEMATIC = 65535 ^ (2 | 4); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/collision/trigger.js +var _ammoVec1; +var _ammoQuat; +var _ammoTransform; +var Trigger = class { + constructor(app2, component, data2) { + this.entity = component.entity; + this.component = component; + this.app = app2; + if (typeof Ammo !== "undefined" && !_ammoVec1) { + _ammoVec1 = new Ammo.btVector3(); + _ammoQuat = new Ammo.btQuaternion(); + _ammoTransform = new Ammo.btTransform(); + } + this.initialize(data2); + } + initialize(data2) { + const entity = this.entity; + const shape2 = data2.shape; + if (shape2 && typeof Ammo !== "undefined") { + if (entity.trigger) { + entity.trigger.destroy(); + } + const mass = 1; + const component = this.component; + if (component) { + const bodyPos = component.getShapePosition(); + const bodyRot = component.getShapeRotation(); + _ammoVec1.setValue(bodyPos.x, bodyPos.y, bodyPos.z); + _ammoQuat.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w); + } else { + const pos = entity.getPosition(); + const rot = entity.getRotation(); + _ammoVec1.setValue(pos.x, pos.y, pos.z); + _ammoQuat.setValue(rot.x, rot.y, rot.z, rot.w); + } + _ammoTransform.setOrigin(_ammoVec1); + _ammoTransform.setRotation(_ammoQuat); + const body = this.app.systems.rigidbody.createBody(mass, shape2, _ammoTransform); + body.setRestitution(0); + body.setFriction(0); + body.setDamping(0, 0); + _ammoVec1.setValue(0, 0, 0); + body.setLinearFactor(_ammoVec1); + body.setAngularFactor(_ammoVec1); + body.setCollisionFlags(body.getCollisionFlags() | BODYFLAG_NORESPONSE_OBJECT); + body.entity = entity; + this.body = body; + if (this.component.enabled && entity.enabled) { + this.enable(); + } + } + } + destroy() { + const body = this.body; + if (!body) return; + this.disable(); + this.app.systems.rigidbody.destroyBody(body); + } + _getEntityTransform(transform) { + const component = this.component; + if (component) { + const bodyPos = component.getShapePosition(); + const bodyRot = component.getShapeRotation(); + _ammoVec1.setValue(bodyPos.x, bodyPos.y, bodyPos.z); + _ammoQuat.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w); + } else { + const pos = this.entity.getPosition(); + const rot = this.entity.getRotation(); + _ammoVec1.setValue(pos.x, pos.y, pos.z); + _ammoQuat.setValue(rot.x, rot.y, rot.z, rot.w); + } + transform.setOrigin(_ammoVec1); + transform.setRotation(_ammoQuat); + } + updateTransform() { + this._getEntityTransform(_ammoTransform); + const body = this.body; + body.setWorldTransform(_ammoTransform); + body.activate(); + } + enable() { + const body = this.body; + if (!body) return; + const systems = this.app.systems; + systems.rigidbody.addBody(body, BODYGROUP_TRIGGER, BODYMASK_NOT_STATIC ^ BODYGROUP_TRIGGER); + systems.rigidbody._triggers.push(this); + body.forceActivationState(BODYSTATE_ACTIVE_TAG); + this.updateTransform(); + } + disable() { + const body = this.body; + if (!body) return; + const systems = this.app.systems; + const idx = systems.rigidbody._triggers.indexOf(this); + if (idx > -1) { + systems.rigidbody._triggers.splice(idx, 1); + } + systems.rigidbody.removeBody(body); + body.forceActivationState(BODYSTATE_DISABLE_SIMULATION); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/collision/system.js +var mat4 = new Mat4(); +var p1 = new Vec3(); +var p2 = new Vec3(); +var quat = new Quat2(); +var tempGraphNode = new GraphNode(); +var _schema3 = ["enabled", "type", "halfExtents", "linearOffset", "angularOffset", "radius", "axis", "height", "convexHull", "asset", "renderAsset", "shape", "model", "render", "checkVertexDuplicates"]; +var CollisionSystemImpl = class { + constructor(system) { + this.system = system; + } + beforeInitialize(component, data2) { + data2.shape = null; + data2.model = new Model2(); + data2.model.graph = new GraphNode(); + } + afterInitialize(component, data2) { + this.recreatePhysicalShapes(component); + component.data.initialized = true; + } + reset(component, data2) { + this.beforeInitialize(component, data2); + this.afterInitialize(component, data2); + } + recreatePhysicalShapes(component) { + const entity = component.entity; + const data2 = component.data; + if (typeof Ammo !== "undefined") { + if (entity.trigger) { + entity.trigger.destroy(); + delete entity.trigger; + } + if (data2.shape) { + if (component._compoundParent) { + this.system._removeCompoundChild(component._compoundParent, data2.shape); + if (component._compoundParent.entity.rigidbody) component._compoundParent.entity.rigidbody.activate(); + } + this.destroyShape(data2); + } + data2.shape = this.createPhysicalShape(component.entity, data2); + const firstCompoundChild = !component._compoundParent; + if (data2.type === "compound" && (!component._compoundParent || component === component._compoundParent)) { + component._compoundParent = component; + entity.forEach(this._addEachDescendant, component); + } else if (data2.type !== "compound") { + if (component._compoundParent && component === component._compoundParent) { + entity.forEach(this.system.implementations.compound._updateEachDescendant, component); + } + if (!component.rigidbody) { + component._compoundParent = null; + let parent = entity.parent; + while (parent) { + if (parent.collision && parent.collision.type === "compound") { + component._compoundParent = parent.collision; + break; + } + parent = parent.parent; + } + } + } + if (component._compoundParent) { + if (component !== component._compoundParent) { + if (firstCompoundChild && component._compoundParent.shape.getNumChildShapes() === 0) { + this.system.recreatePhysicalShapes(component._compoundParent); + } else { + this.system.updateCompoundChildTransform(entity); + if (component._compoundParent.entity.rigidbody) component._compoundParent.entity.rigidbody.activate(); + } + } + } + if (entity.rigidbody) { + entity.rigidbody.disableSimulation(); + entity.rigidbody.createBody(); + if (entity.enabled && entity.rigidbody.enabled) { + entity.rigidbody.enableSimulation(); + } + } else if (!component._compoundParent) { + if (!entity.trigger) { + entity.trigger = new Trigger(this.system.app, component, data2); + } else { + entity.trigger.initialize(data2); + } + } + } + } + createPhysicalShape(entity, data2) { + return void 0; + } + updateTransform(component, position2, rotation2, scale2) { + if (component.entity.trigger) { + component.entity.trigger.updateTransform(); + } + } + destroyShape(data2) { + if (data2.shape) { + Ammo.destroy(data2.shape); + data2.shape = null; + } + } + beforeRemove(entity, component) { + if (component.data.shape) { + if (component._compoundParent && !component._compoundParent.entity._destroying) { + this.system._removeCompoundChild(component._compoundParent, component.data.shape); + if (component._compoundParent.entity.rigidbody) component._compoundParent.entity.rigidbody.activate(); + } + component._compoundParent = null; + this.destroyShape(component.data); + } + } + remove(entity, data2) { + if (entity.rigidbody && entity.rigidbody.body) { + entity.rigidbody.disableSimulation(); + } + if (entity.trigger) { + entity.trigger.destroy(); + delete entity.trigger; + } + } + clone(entity, clone) { + const src = this.system.store[entity.getGuid()]; + const data2 = { + enabled: src.data.enabled, + type: src.data.type, + halfExtents: [src.data.halfExtents.x, src.data.halfExtents.y, src.data.halfExtents.z], + linearOffset: [src.data.linearOffset.x, src.data.linearOffset.y, src.data.linearOffset.z], + angularOffset: [src.data.angularOffset.x, src.data.angularOffset.y, src.data.angularOffset.z, src.data.angularOffset.w], + radius: src.data.radius, + axis: src.data.axis, + height: src.data.height, + convexHull: src.data.convexHull, + asset: src.data.asset, + renderAsset: src.data.renderAsset, + model: src.data.model, + render: src.data.render, + checkVertexDuplicates: src.data.checkVertexDuplicates + }; + return this.system.addComponent(clone, data2); + } +}; +var CollisionBoxSystemImpl = class extends CollisionSystemImpl { + createPhysicalShape(entity, data2) { + if (typeof Ammo !== "undefined") { + const he = data2.halfExtents; + const ammoHe = new Ammo.btVector3(he ? he.x : 0.5, he ? he.y : 0.5, he ? he.z : 0.5); + const shape2 = new Ammo.btBoxShape(ammoHe); + Ammo.destroy(ammoHe); + return shape2; + } + return void 0; + } +}; +var CollisionSphereSystemImpl = class extends CollisionSystemImpl { + createPhysicalShape(entity, data2) { + if (typeof Ammo !== "undefined") { + return new Ammo.btSphereShape(data2.radius); + } + return void 0; + } +}; +var CollisionCapsuleSystemImpl = class extends CollisionSystemImpl { + createPhysicalShape(entity, data2) { + var _data$axis, _data$radius, _data$height; + const axis = (_data$axis = data2.axis) != null ? _data$axis : 1; + const radius = (_data$radius = data2.radius) != null ? _data$radius : 0.5; + const height = Math.max(((_data$height = data2.height) != null ? _data$height : 2) - 2 * radius, 0); + let shape2 = null; + if (typeof Ammo !== "undefined") { + switch (axis) { + case 0: + shape2 = new Ammo.btCapsuleShapeX(radius, height); + break; + case 1: + shape2 = new Ammo.btCapsuleShape(radius, height); + break; + case 2: + shape2 = new Ammo.btCapsuleShapeZ(radius, height); + break; + } + } + return shape2; + } +}; +var CollisionCylinderSystemImpl = class extends CollisionSystemImpl { + createPhysicalShape(entity, data2) { + var _data$axis2, _data$radius2, _data$height2; + const axis = (_data$axis2 = data2.axis) != null ? _data$axis2 : 1; + const radius = (_data$radius2 = data2.radius) != null ? _data$radius2 : 0.5; + const height = (_data$height2 = data2.height) != null ? _data$height2 : 1; + let halfExtents = null; + let shape2 = null; + if (typeof Ammo !== "undefined") { + switch (axis) { + case 0: + halfExtents = new Ammo.btVector3(height * 0.5, radius, radius); + shape2 = new Ammo.btCylinderShapeX(halfExtents); + break; + case 1: + halfExtents = new Ammo.btVector3(radius, height * 0.5, radius); + shape2 = new Ammo.btCylinderShape(halfExtents); + break; + case 2: + halfExtents = new Ammo.btVector3(radius, radius, height * 0.5); + shape2 = new Ammo.btCylinderShapeZ(halfExtents); + break; + } + } + if (halfExtents) Ammo.destroy(halfExtents); + return shape2; + } +}; +var CollisionConeSystemImpl = class extends CollisionSystemImpl { + createPhysicalShape(entity, data2) { + var _data$axis3, _data$radius3, _data$height3; + const axis = (_data$axis3 = data2.axis) != null ? _data$axis3 : 1; + const radius = (_data$radius3 = data2.radius) != null ? _data$radius3 : 0.5; + const height = (_data$height3 = data2.height) != null ? _data$height3 : 1; + let shape2 = null; + if (typeof Ammo !== "undefined") { + switch (axis) { + case 0: + shape2 = new Ammo.btConeShapeX(radius, height); + break; + case 1: + shape2 = new Ammo.btConeShape(radius, height); + break; + case 2: + shape2 = new Ammo.btConeShapeZ(radius, height); + break; + } + } + return shape2; + } +}; +var CollisionMeshSystemImpl = class extends CollisionSystemImpl { + beforeInitialize(component, data2) { + } + createAmmoHull(mesh, node, shape2, scale2) { + const hull = new Ammo.btConvexHullShape(); + const point = new Ammo.btVector3(); + const positions = []; + mesh.getPositions(positions); + for (let i = 0; i < positions.length; i += 3) { + point.setValue(positions[i] * scale2.x, positions[i + 1] * scale2.y, positions[i + 2] * scale2.z); + hull.addPoint(point, false); + } + Ammo.destroy(point); + hull.recalcLocalAabb(); + hull.setMargin(0.01); + shape2.addChildShape(this.system._getNodeTransform(node), hull); + } + createAmmoMesh(mesh, node, shape2, scale2, checkDupes = true) { + const system = this.system; + let triMesh; + if (system._triMeshCache[mesh.id]) { + triMesh = system._triMeshCache[mesh.id]; + } else { + const vb = mesh.vertexBuffer; + const format = vb.getFormat(); + let stride, positions; + for (let _i = 0; _i < format.elements.length; _i++) { + const element = format.elements[_i]; + if (element.name === SEMANTIC_POSITION) { + positions = new Float32Array(vb.lock(), element.offset); + stride = element.stride / 4; + break; + } + } + const indices = []; + mesh.getIndices(indices); + const numTriangles = mesh.primitive[0].count / 3; + const v1 = new Ammo.btVector3(); + let i1, i2, i3; + const base = mesh.primitive[0].base; + triMesh = new Ammo.btTriangleMesh(); + system._triMeshCache[mesh.id] = triMesh; + const vertexCache = /* @__PURE__ */ new Map(); + const indexedArray = triMesh.getIndexedMeshArray(); + indexedArray.at(0).m_numTriangles = numTriangles; + const sx = scale2 ? scale2.x : 1; + const sy = scale2 ? scale2.y : 1; + const sz = scale2 ? scale2.z : 1; + const addVertex = (index) => { + const x2 = positions[index * stride] * sx; + const y2 = positions[index * stride + 1] * sy; + const z2 = positions[index * stride + 2] * sz; + let idx; + if (checkDupes) { + const str = `${x2}:${y2}:${z2}`; + idx = vertexCache.get(str); + if (idx !== void 0) { + return idx; + } + v1.setValue(x2, y2, z2); + idx = triMesh.findOrAddVertex(v1, false); + vertexCache.set(str, idx); + } else { + v1.setValue(x2, y2, z2); + idx = triMesh.findOrAddVertex(v1, false); + } + return idx; + }; + for (var i = 0; i < numTriangles; i++) { + i1 = addVertex(indices[base + i * 3]); + i2 = addVertex(indices[base + i * 3 + 1]); + i3 = addVertex(indices[base + i * 3 + 2]); + triMesh.addIndex(i1); + triMesh.addIndex(i2); + triMesh.addIndex(i3); + } + Ammo.destroy(v1); + } + const triMeshShape = new Ammo.btBvhTriangleMeshShape(triMesh, true); + if (!scale2) { + const scaling = system._getNodeScaling(node); + triMeshShape.setLocalScaling(scaling); + Ammo.destroy(scaling); + } + const transform = system._getNodeTransform(node); + shape2.addChildShape(transform, triMeshShape); + Ammo.destroy(transform); + } + createPhysicalShape(entity, data2) { + if (typeof Ammo === "undefined") return void 0; + if (data2.model || data2.render) { + const shape2 = new Ammo.btCompoundShape(); + const entityTransform = entity.getWorldTransform(); + const scale2 = entityTransform.getScale(); + if (data2.model) { + const meshInstances = data2.model.meshInstances; + for (let i = 0; i < meshInstances.length; i++) { + this.createAmmoMesh(meshInstances[i].mesh, meshInstances[i].node, shape2, null, data2.checkVertexDuplicates); + } + const vec2 = new Ammo.btVector3(scale2.x, scale2.y, scale2.z); + shape2.setLocalScaling(vec2); + Ammo.destroy(vec2); + } else if (data2.render) { + const meshes = data2.render.meshes; + for (let i = 0; i < meshes.length; i++) { + if (data2.convexHull) { + this.createAmmoHull(meshes[i], tempGraphNode, shape2, scale2); + } else { + this.createAmmoMesh(meshes[i], tempGraphNode, shape2, scale2, data2.checkVertexDuplicates); + } + } + } + return shape2; + } + return void 0; + } + recreatePhysicalShapes(component) { + const data2 = component.data; + if (data2.renderAsset || data2.asset) { + if (component.enabled && component.entity.enabled) { + this.loadAsset(component, data2.renderAsset || data2.asset, data2.renderAsset ? "render" : "model"); + return; + } + } + this.doRecreatePhysicalShape(component); + } + loadAsset(component, id12, property) { + const data2 = component.data; + const assets = this.system.app.assets; + const previousPropertyValue = data2[property]; + const onAssetFullyReady = (asset3) => { + if (data2[property] !== previousPropertyValue) { + return; + } + data2[property] = asset3.resource; + this.doRecreatePhysicalShape(component); + }; + const loadAndHandleAsset = (asset3) => { + asset3.ready((asset4) => { + if (asset4.data.containerAsset) { + const containerAsset = assets.get(asset4.data.containerAsset); + if (containerAsset.loaded) { + onAssetFullyReady(asset4); + } else { + containerAsset.ready(() => { + onAssetFullyReady(asset4); + }); + assets.load(containerAsset); + } + } else { + onAssetFullyReady(asset4); + } + }); + assets.load(asset3); + }; + const asset2 = assets.get(id12); + if (asset2) { + loadAndHandleAsset(asset2); + } else { + assets.once("add:" + id12, loadAndHandleAsset); + } + } + doRecreatePhysicalShape(component) { + const entity = component.entity; + const data2 = component.data; + if (data2.model || data2.render) { + this.destroyShape(data2); + data2.shape = this.createPhysicalShape(entity, data2); + if (entity.rigidbody) { + entity.rigidbody.disableSimulation(); + entity.rigidbody.createBody(); + if (entity.enabled && entity.rigidbody.enabled) { + entity.rigidbody.enableSimulation(); + } + } else { + if (!entity.trigger) { + entity.trigger = new Trigger(this.system.app, component, data2); + } else { + entity.trigger.initialize(data2); + } + } + } else { + this.beforeRemove(entity, component); + this.remove(entity, data2); + } + } + updateTransform(component, position2, rotation2, scale2) { + if (component.shape) { + const entityTransform = component.entity.getWorldTransform(); + const worldScale = entityTransform.getScale(); + const previousScale = component.shape.getLocalScaling(); + if (worldScale.x !== previousScale.x() || worldScale.y !== previousScale.y() || worldScale.z !== previousScale.z()) { + this.doRecreatePhysicalShape(component); + } + } + super.updateTransform(component, position2, rotation2, scale2); + } + destroyShape(data2) { + if (!data2.shape) return; + const numShapes = data2.shape.getNumChildShapes(); + for (let i = 0; i < numShapes; i++) { + const shape2 = data2.shape.getChildShape(i); + Ammo.destroy(shape2); + } + Ammo.destroy(data2.shape); + data2.shape = null; + } +}; +var CollisionCompoundSystemImpl = class extends CollisionSystemImpl { + createPhysicalShape(entity, data2) { + if (typeof Ammo !== "undefined") { + return new Ammo.btCompoundShape(); + } + return void 0; + } + _addEachDescendant(entity) { + if (!entity.collision || entity.rigidbody) return; + entity.collision._compoundParent = this; + if (entity !== this.entity) { + entity.collision.system.recreatePhysicalShapes(entity.collision); + } + } + _updateEachDescendant(entity) { + if (!entity.collision) return; + if (entity.collision._compoundParent !== this) return; + entity.collision._compoundParent = null; + if (entity !== this.entity && !entity.rigidbody) { + entity.collision.system.recreatePhysicalShapes(entity.collision); + } + } + _updateEachDescendantTransform(entity) { + if (!entity.collision || entity.collision._compoundParent !== this.collision._compoundParent) return; + this.collision.system.updateCompoundChildTransform(entity); + } +}; +var CollisionComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.id = "collision"; + this.ComponentType = CollisionComponent; + this.DataType = CollisionComponentData; + this.schema = _schema3; + this.implementations = {}; + this._triMeshCache = {}; + this.on("beforeremove", this.onBeforeRemove, this); + this.on("remove", this.onRemove, this); + } + initializeComponentData(component, _data, properties2) { + properties2 = ["type", "halfExtents", "radius", "axis", "height", "convexHull", "shape", "model", "asset", "render", "renderAsset", "enabled", "linearOffset", "angularOffset", "checkVertexDuplicates"]; + const data2 = {}; + for (let i = 0, len = properties2.length; i < len; i++) { + const property = properties2[i]; + data2[property] = _data[property]; + } + let idx; + if (_data.hasOwnProperty("asset")) { + idx = properties2.indexOf("model"); + if (idx !== -1) { + properties2.splice(idx, 1); + } + idx = properties2.indexOf("render"); + if (idx !== -1) { + properties2.splice(idx, 1); + } + } else if (_data.hasOwnProperty("model")) { + idx = properties2.indexOf("asset"); + if (idx !== -1) { + properties2.splice(idx, 1); + } + } + if (!data2.type) { + data2.type = component.data.type; + } + component.data.type = data2.type; + if (Array.isArray(data2.halfExtents)) { + data2.halfExtents = new Vec3(data2.halfExtents); + } + if (Array.isArray(data2.linearOffset)) { + data2.linearOffset = new Vec3(data2.linearOffset); + } + if (Array.isArray(data2.angularOffset)) { + const values = data2.angularOffset; + if (values.length === 3) { + data2.angularOffset = new Quat2().setFromEulerAngles(values[0], values[1], values[2]); + } else { + data2.angularOffset = new Quat2(data2.angularOffset); + } + } + const impl = this._createImplementation(data2.type); + impl.beforeInitialize(component, data2); + super.initializeComponentData(component, data2, properties2); + impl.afterInitialize(component, data2); + } + _createImplementation(type2) { + if (this.implementations[type2] === void 0) { + let impl; + switch (type2) { + case "box": + impl = new CollisionBoxSystemImpl(this); + break; + case "sphere": + impl = new CollisionSphereSystemImpl(this); + break; + case "capsule": + impl = new CollisionCapsuleSystemImpl(this); + break; + case "cylinder": + impl = new CollisionCylinderSystemImpl(this); + break; + case "cone": + impl = new CollisionConeSystemImpl(this); + break; + case "mesh": + impl = new CollisionMeshSystemImpl(this); + break; + case "compound": + impl = new CollisionCompoundSystemImpl(this); + break; + } + this.implementations[type2] = impl; + } + return this.implementations[type2]; + } + _getImplementation(entity) { + return this.implementations[entity.collision.data.type]; + } + cloneComponent(entity, clone) { + return this._getImplementation(entity).clone(entity, clone); + } + onBeforeRemove(entity, component) { + this.implementations[component.data.type].beforeRemove(entity, component); + component.onBeforeRemove(); + } + onRemove(entity, data2) { + this.implementations[data2.type].remove(entity, data2); + } + updateCompoundChildTransform(entity) { + this._removeCompoundChild(entity.collision._compoundParent, entity.collision.data.shape); + if (entity.enabled && entity.collision.enabled) { + const transform = this._getNodeTransform(entity, entity.collision._compoundParent.entity); + entity.collision._compoundParent.shape.addChildShape(transform, entity.collision.data.shape); + Ammo.destroy(transform); + } + } + _removeCompoundChild(collision, shape2) { + if (collision.shape.removeChildShape) { + collision.shape.removeChildShape(shape2); + } else { + const ind = collision._getCompoundChildShapeIndex(shape2); + if (ind !== null) { + collision.shape.removeChildShapeByIndex(ind); + } + } + } + onTransformChanged(component, position2, rotation2, scale2) { + this.implementations[component.data.type].updateTransform(component, position2, rotation2, scale2); + } + changeType(component, previousType, newType) { + this.implementations[previousType].beforeRemove(component.entity, component); + this.implementations[previousType].remove(component.entity, component.data); + this._createImplementation(newType).reset(component, component.data); + } + recreatePhysicalShapes(component) { + this.implementations[component.data.type].recreatePhysicalShapes(component); + } + _calculateNodeRelativeTransform(node, relative) { + if (node === relative) { + const scale2 = node.getWorldTransform().getScale(); + mat4.setScale(scale2.x, scale2.y, scale2.z); + } else { + this._calculateNodeRelativeTransform(node.parent, relative); + mat4.mul(node.getLocalTransform()); + } + } + _getNodeScaling(node) { + const wtm = node.getWorldTransform(); + const scl = wtm.getScale(); + return new Ammo.btVector3(scl.x, scl.y, scl.z); + } + _getNodeTransform(node, relative) { + let pos, rot; + if (relative) { + this._calculateNodeRelativeTransform(node, relative); + pos = p1; + rot = quat; + mat4.getTranslation(pos); + rot.setFromMat4(mat4); + } else { + pos = node.getPosition(); + rot = node.getRotation(); + } + const ammoQuat = new Ammo.btQuaternion(); + const transform = new Ammo.btTransform(); + transform.setIdentity(); + const origin = transform.getOrigin(); + const component = node.collision; + if (component && component._hasOffset) { + const lo = component.data.linearOffset; + const ao = component.data.angularOffset; + const newOrigin = p2; + quat.copy(rot).transformVector(lo, newOrigin); + newOrigin.add(pos); + quat.copy(rot).mul(ao); + origin.setValue(newOrigin.x, newOrigin.y, newOrigin.z); + ammoQuat.setValue(quat.x, quat.y, quat.z, quat.w); + } else { + origin.setValue(pos.x, pos.y, pos.z); + ammoQuat.setValue(rot.x, rot.y, rot.z, rot.w); + } + transform.setRotation(ammoQuat); + Ammo.destroy(ammoQuat); + Ammo.destroy(origin); + return transform; + } + destroy() { + for (const key in this._triMeshCache) { + Ammo.destroy(this._triMeshCache[key]); + } + this._triMeshCache = null; + super.destroy(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/graphics/primitive-cache.js +var shapePrimitives = []; +function getShapePrimitive(device, type2) { + let primData = null; + for (let i = 0; i < shapePrimitives.length; i++) { + if (shapePrimitives[i].type === type2 && shapePrimitives[i].device === device) { + primData = shapePrimitives[i].primData; + } + } + if (!primData) { + let mesh, area; + switch (type2) { + case "box": + mesh = Mesh.fromGeometry(device, new BoxGeometry()); + area = { + x: 2, + y: 2, + z: 2, + uv: 2 / 3 + }; + break; + case "capsule": + mesh = Mesh.fromGeometry(device, new CapsuleGeometry({ + radius: 0.5, + height: 2 + })); + area = { + x: Math.PI * 2, + y: Math.PI, + z: Math.PI * 2, + uv: 1 / 3 + 1 / 3 / 3 * 2 + }; + break; + case "cone": + mesh = Mesh.fromGeometry(device, new ConeGeometry({ + baseRadius: 0.5, + peakRadius: 0, + height: 1 + })); + area = { + x: 2.54, + y: 2.54, + z: 2.54, + uv: 1 / 3 + 1 / 3 / 3 + }; + break; + case "cylinder": + mesh = Mesh.fromGeometry(device, new CylinderGeometry({ + radius: 0.5, + height: 1 + })); + area = { + x: Math.PI, + y: 0.79 * 2, + z: Math.PI, + uv: 1 / 3 + 1 / 3 / 3 * 2 + }; + break; + case "plane": + mesh = Mesh.fromGeometry(device, new PlaneGeometry({ + halfExtents: new Vec2(0.5, 0.5), + widthSegments: 1, + lengthSegments: 1 + })); + area = { + x: 0, + y: 1, + z: 0, + uv: 1 + }; + break; + case "sphere": + mesh = Mesh.fromGeometry(device, new SphereGeometry({ + radius: 0.5 + })); + area = { + x: Math.PI, + y: Math.PI, + z: Math.PI, + uv: 1 + }; + break; + case "torus": + mesh = Mesh.fromGeometry(device, new TorusGeometry({ + tubeRadius: 0.2, + ringRadius: 0.3 + })); + area = { + x: Math.PI * 0.5 * 0.5 - Math.PI * 0.1 * 0.1, + y: 0.4, + z: 0.4, + uv: 1 + }; + break; + default: + throw new Error("Invalid primitive type: " + type2); + } + mesh.incRefCount(); + primData = { + mesh, + area + }; + shapePrimitives.push({ + type: type2, + device, + primData + }); + } + return primData; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/model/component.js +var ModelComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + this._type = "asset"; + this._asset = null; + this._model = null; + this._mapping = {}; + this._castShadows = true; + this._receiveShadows = true; + this._materialAsset = null; + this._material = void 0; + this._castShadowsLightmap = true; + this._lightmapped = false; + this._lightmapSizeMultiplier = 1; + this.isStatic = false; + this._layers = [LAYERID_WORLD]; + this._batchGroupId = -1; + this._customAabb = null; + this._area = null; + this._materialEvents = null; + this._clonedModel = false; + this._material = system.defaultMaterial; + entity.on("remove", this.onRemoveChild, this); + entity.on("removehierarchy", this.onRemoveChild, this); + entity.on("insert", this.onInsertChild, this); + entity.on("inserthierarchy", this.onInsertChild, this); + } + set meshInstances(value) { + if (!this._model) return; + this._model.meshInstances = value; + } + get meshInstances() { + if (!this._model) return null; + return this._model.meshInstances; + } + set customAabb(value) { + this._customAabb = value; + if (this._model) { + const mi = this._model.meshInstances; + if (mi) { + for (let i = 0; i < mi.length; i++) { + mi[i].setCustomAabb(this._customAabb); + } + } + } + } + get customAabb() { + return this._customAabb; + } + set type(value) { + if (this._type === value) return; + this._area = null; + this._type = value; + if (value === "asset") { + if (this._asset !== null) { + this._bindModelAsset(this._asset); + } else { + this.model = null; + } + } else { + const primData = getShapePrimitive(this.system.app.graphicsDevice, value); + this._area = primData.area; + const mesh = primData.mesh; + const node = new GraphNode(); + const model = new Model2(); + model.graph = node; + model.meshInstances = [new MeshInstance(mesh, this._material, node)]; + this.model = model; + this._asset = null; + } + } + get type() { + return this._type; + } + set asset(value) { + const assets = this.system.app.assets; + let _id = value; + if (value instanceof Asset) { + _id = value.id; + } + if (this._asset !== _id) { + if (this._asset) { + assets.off("add:" + this._asset, this._onModelAssetAdded, this); + const _prev = assets.get(this._asset); + if (_prev) { + this._unbindModelAsset(_prev); + } + } + this._asset = _id; + if (this._asset) { + const asset2 = assets.get(this._asset); + if (!asset2) { + this.model = null; + assets.on("add:" + this._asset, this._onModelAssetAdded, this); + } else { + this._bindModelAsset(asset2); + } + } else { + this.model = null; + } + } + } + get asset() { + return this._asset; + } + set model(value) { + if (this._model === value) return; + if (value && value._immutable) { + return; + } + if (this._model) { + this._model._immutable = false; + this.removeModelFromLayers(); + this._model.getGraph().destroy(); + delete this._model._entity; + if (this._clonedModel) { + this._model.destroy(); + this._clonedModel = false; + } + } + this._model = value; + if (this._model) { + this._model._immutable = true; + const meshInstances = this._model.meshInstances; + for (let i = 0; i < meshInstances.length; i++) { + meshInstances[i].castShadow = this._castShadows; + meshInstances[i].receiveShadow = this._receiveShadows; + meshInstances[i].setCustomAabb(this._customAabb); + } + this.lightmapped = this._lightmapped; + this.entity.addChild(this._model.graph); + if (this.enabled && this.entity.enabled) { + this.addModelToLayers(); + } + this._model._entity = this.entity; + if (this.entity.animation) this.entity.animation.setModel(this._model); + if (this.entity.anim) { + this.entity.anim.rebind(); + } + if (this.type === "asset") { + this.mapping = this._mapping; + } else { + this._unsetMaterialEvents(); + } + } + } + get model() { + return this._model; + } + set lightmapped(value) { + if (value !== this._lightmapped) { + this._lightmapped = value; + if (this._model) { + const mi = this._model.meshInstances; + for (let i = 0; i < mi.length; i++) { + mi[i].setLightmapped(value); + } + } + } + } + get lightmapped() { + return this._lightmapped; + } + set castShadows(value) { + if (this._castShadows === value) return; + const model = this._model; + if (model) { + const layers = this.layers; + const scene2 = this.system.app.scene; + if (this._castShadows && !value) { + for (let i = 0; i < layers.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(this.layers[i]); + if (!layer) continue; + layer.removeShadowCasters(model.meshInstances); + } + } + const meshInstances = model.meshInstances; + for (let i = 0; i < meshInstances.length; i++) { + meshInstances[i].castShadow = value; + } + if (!this._castShadows && value) { + for (let i = 0; i < layers.length; i++) { + const layer = scene2.layers.getLayerById(layers[i]); + if (!layer) continue; + layer.addShadowCasters(model.meshInstances); + } + } + } + this._castShadows = value; + } + get castShadows() { + return this._castShadows; + } + set receiveShadows(value) { + if (this._receiveShadows === value) return; + this._receiveShadows = value; + if (this._model) { + const meshInstances = this._model.meshInstances; + for (let i = 0, len = meshInstances.length; i < len; i++) { + meshInstances[i].receiveShadow = value; + } + } + } + get receiveShadows() { + return this._receiveShadows; + } + set castShadowsLightmap(value) { + this._castShadowsLightmap = value; + } + get castShadowsLightmap() { + return this._castShadowsLightmap; + } + set lightmapSizeMultiplier(value) { + this._lightmapSizeMultiplier = value; + } + get lightmapSizeMultiplier() { + return this._lightmapSizeMultiplier; + } + set layers(value) { + const layers = this.system.app.scene.layers; + if (this.meshInstances) { + for (let i = 0; i < this._layers.length; i++) { + const layer = layers.getLayerById(this._layers[i]); + if (!layer) continue; + layer.removeMeshInstances(this.meshInstances); + } + } + this._layers.length = 0; + for (let i = 0; i < value.length; i++) { + this._layers[i] = value[i]; + } + if (!this.enabled || !this.entity.enabled || !this.meshInstances) return; + for (let i = 0; i < this._layers.length; i++) { + const layer = layers.getLayerById(this._layers[i]); + if (!layer) continue; + layer.addMeshInstances(this.meshInstances); + } + } + get layers() { + return this._layers; + } + set batchGroupId(value) { + if (this._batchGroupId === value) return; + if (this.entity.enabled && this._batchGroupId >= 0) { + var _this$system$app$batc; + (_this$system$app$batc = this.system.app.batcher) == null || _this$system$app$batc.remove(BatchGroup.MODEL, this.batchGroupId, this.entity); + } + if (this.entity.enabled && value >= 0) { + var _this$system$app$batc2; + (_this$system$app$batc2 = this.system.app.batcher) == null || _this$system$app$batc2.insert(BatchGroup.MODEL, value, this.entity); + } + if (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) { + this.addModelToLayers(); + } + this._batchGroupId = value; + } + get batchGroupId() { + return this._batchGroupId; + } + set materialAsset(value) { + let _id = value; + if (value instanceof Asset) { + _id = value.id; + } + const assets = this.system.app.assets; + if (_id !== this._materialAsset) { + if (this._materialAsset) { + assets.off("add:" + this._materialAsset, this._onMaterialAssetAdd, this); + const _prev = assets.get(this._materialAsset); + if (_prev) { + this._unbindMaterialAsset(_prev); + } + } + this._materialAsset = _id; + if (this._materialAsset) { + const asset2 = assets.get(this._materialAsset); + if (!asset2) { + this._setMaterial(this.system.defaultMaterial); + assets.on("add:" + this._materialAsset, this._onMaterialAssetAdd, this); + } else { + this._bindMaterialAsset(asset2); + } + } else { + this._setMaterial(this.system.defaultMaterial); + } + } + } + get materialAsset() { + return this._materialAsset; + } + set material(value) { + if (this._material === value) return; + this.materialAsset = null; + this._setMaterial(value); + } + get material() { + return this._material; + } + set mapping(value) { + if (this._type !== "asset") return; + this._unsetMaterialEvents(); + if (!value) value = {}; + this._mapping = value; + if (!this._model) return; + const meshInstances = this._model.meshInstances; + const modelAsset = this.asset ? this.system.app.assets.get(this.asset) : null; + const assetMapping = modelAsset ? modelAsset.data.mapping : null; + let asset2 = null; + for (let i = 0, len = meshInstances.length; i < len; i++) { + if (value[i] !== void 0) { + if (value[i]) { + asset2 = this.system.app.assets.get(value[i]); + this._loadAndSetMeshInstanceMaterial(asset2, meshInstances[i], i); + } else { + meshInstances[i].material = this.system.defaultMaterial; + } + } else if (assetMapping) { + if (assetMapping[i] && (assetMapping[i].material || assetMapping[i].path)) { + if (assetMapping[i].material !== void 0) { + asset2 = this.system.app.assets.get(assetMapping[i].material); + } else if (assetMapping[i].path !== void 0) { + const url = this._getMaterialAssetUrl(assetMapping[i].path); + if (url) { + asset2 = this.system.app.assets.getByUrl(url); + } + } + this._loadAndSetMeshInstanceMaterial(asset2, meshInstances[i], i); + } else { + meshInstances[i].material = this.system.defaultMaterial; + } + } + } + } + get mapping() { + return this._mapping; + } + addModelToLayers() { + const layers = this.system.app.scene.layers; + for (let i = 0; i < this._layers.length; i++) { + const layer = layers.getLayerById(this._layers[i]); + if (layer) { + layer.addMeshInstances(this.meshInstances); + } + } + } + removeModelFromLayers() { + const layers = this.system.app.scene.layers; + for (let i = 0; i < this._layers.length; i++) { + const layer = layers.getLayerById(this._layers[i]); + if (!layer) continue; + layer.removeMeshInstances(this.meshInstances); + } + } + onRemoveChild() { + if (this._model) this.removeModelFromLayers(); + } + onInsertChild() { + if (this._model && this.enabled && this.entity.enabled) this.addModelToLayers(); + } + onRemove() { + this.asset = null; + this.model = null; + this.materialAsset = null; + this._unsetMaterialEvents(); + this.entity.off("remove", this.onRemoveChild, this); + this.entity.off("insert", this.onInsertChild, this); + } + onLayersChanged(oldComp, newComp) { + this.addModelToLayers(); + oldComp.off("add", this.onLayerAdded, this); + oldComp.off("remove", this.onLayerRemoved, this); + newComp.on("add", this.onLayerAdded, this); + newComp.on("remove", this.onLayerRemoved, this); + } + onLayerAdded(layer) { + const index = this.layers.indexOf(layer.id); + if (index < 0) return; + layer.addMeshInstances(this.meshInstances); + } + onLayerRemoved(layer) { + const index = this.layers.indexOf(layer.id); + if (index < 0) return; + layer.removeMeshInstances(this.meshInstances); + } + _setMaterialEvent(index, event, id12, handler) { + const evt = event + ":" + id12; + this.system.app.assets.on(evt, handler, this); + if (!this._materialEvents) this._materialEvents = []; + if (!this._materialEvents[index]) this._materialEvents[index] = {}; + this._materialEvents[index][evt] = { + id: id12, + handler + }; + } + _unsetMaterialEvents() { + const assets = this.system.app.assets; + const events2 = this._materialEvents; + if (!events2) return; + for (let i = 0, len = events2.length; i < len; i++) { + if (!events2[i]) continue; + const evt = events2[i]; + for (const key in evt) { + assets.off(key, evt[key].handler, this); + } + } + this._materialEvents = null; + } + _getAssetByIdOrPath(idOrPath) { + let asset2 = null; + const isPath = isNaN(parseInt(idOrPath, 10)); + if (!isPath) { + asset2 = this.system.app.assets.get(idOrPath); + } else if (this.asset) { + const url = this._getMaterialAssetUrl(idOrPath); + if (url) asset2 = this.system.app.assets.getByUrl(url); + } + return asset2; + } + _getMaterialAssetUrl(path2) { + if (!this.asset) return null; + const modelAsset = this.system.app.assets.get(this.asset); + return modelAsset ? modelAsset.getAbsoluteUrl(path2) : null; + } + _loadAndSetMeshInstanceMaterial(materialAsset, meshInstance, index) { + const assets = this.system.app.assets; + if (!materialAsset) return; + if (materialAsset.resource) { + meshInstance.material = materialAsset.resource; + this._setMaterialEvent(index, "remove", materialAsset.id, function() { + meshInstance.material = this.system.defaultMaterial; + }); + } else { + this._setMaterialEvent(index, "load", materialAsset.id, function(asset2) { + meshInstance.material = asset2.resource; + this._setMaterialEvent(index, "remove", materialAsset.id, function() { + meshInstance.material = this.system.defaultMaterial; + }); + }); + if (this.enabled && this.entity.enabled) assets.load(materialAsset); + } + } + onEnable() { + const app2 = this.system.app; + const scene2 = app2.scene; + scene2.on("set:layers", this.onLayersChanged, this); + if (scene2.layers) { + scene2.layers.on("add", this.onLayerAdded, this); + scene2.layers.on("remove", this.onLayerRemoved, this); + } + const isAsset = this._type === "asset"; + let asset2; + if (this._model) { + this.addModelToLayers(); + } else if (isAsset && this._asset) { + asset2 = app2.assets.get(this._asset); + if (asset2 && asset2.resource !== this._model) { + this._bindModelAsset(asset2); + } + } + if (this._materialAsset) { + asset2 = app2.assets.get(this._materialAsset); + if (asset2 && asset2.resource !== this._material) { + this._bindMaterialAsset(asset2); + } + } + if (isAsset) { + if (this._mapping) { + for (const index in this._mapping) { + if (this._mapping[index]) { + asset2 = this._getAssetByIdOrPath(this._mapping[index]); + if (asset2 && !asset2.resource) { + app2.assets.load(asset2); + } + } + } + } + } + if (this._batchGroupId >= 0) { + var _app$batcher; + (_app$batcher = app2.batcher) == null || _app$batcher.insert(BatchGroup.MODEL, this.batchGroupId, this.entity); + } + } + onDisable() { + const app2 = this.system.app; + const scene2 = app2.scene; + scene2.off("set:layers", this.onLayersChanged, this); + if (scene2.layers) { + scene2.layers.off("add", this.onLayerAdded, this); + scene2.layers.off("remove", this.onLayerRemoved, this); + } + if (this._batchGroupId >= 0) { + var _app$batcher2; + (_app$batcher2 = app2.batcher) == null || _app$batcher2.remove(BatchGroup.MODEL, this.batchGroupId, this.entity); + } + if (this._model) { + this.removeModelFromLayers(); + } + } + hide() { + if (this._model) { + const instances = this._model.meshInstances; + for (let i = 0, l = instances.length; i < l; i++) { + instances[i].visible = false; + } + } + } + show() { + if (this._model) { + const instances = this._model.meshInstances; + for (let i = 0, l = instances.length; i < l; i++) { + instances[i].visible = true; + } + } + } + _bindMaterialAsset(asset2) { + asset2.on("load", this._onMaterialAssetLoad, this); + asset2.on("unload", this._onMaterialAssetUnload, this); + asset2.on("remove", this._onMaterialAssetRemove, this); + asset2.on("change", this._onMaterialAssetChange, this); + if (asset2.resource) { + this._onMaterialAssetLoad(asset2); + } else { + if (!this.enabled || !this.entity.enabled) return; + this.system.app.assets.load(asset2); + } + } + _unbindMaterialAsset(asset2) { + asset2.off("load", this._onMaterialAssetLoad, this); + asset2.off("unload", this._onMaterialAssetUnload, this); + asset2.off("remove", this._onMaterialAssetRemove, this); + asset2.off("change", this._onMaterialAssetChange, this); + } + _onMaterialAssetAdd(asset2) { + this.system.app.assets.off("add:" + asset2.id, this._onMaterialAssetAdd, this); + if (this._materialAsset === asset2.id) { + this._bindMaterialAsset(asset2); + } + } + _onMaterialAssetLoad(asset2) { + this._setMaterial(asset2.resource); + } + _onMaterialAssetUnload(asset2) { + this._setMaterial(this.system.defaultMaterial); + } + _onMaterialAssetRemove(asset2) { + this._onMaterialAssetUnload(asset2); + } + _onMaterialAssetChange(asset2) { + } + _bindModelAsset(asset2) { + this._unbindModelAsset(asset2); + asset2.on("load", this._onModelAssetLoad, this); + asset2.on("unload", this._onModelAssetUnload, this); + asset2.on("change", this._onModelAssetChange, this); + asset2.on("remove", this._onModelAssetRemove, this); + if (asset2.resource) { + this._onModelAssetLoad(asset2); + } else { + if (!this.enabled || !this.entity.enabled) return; + this.system.app.assets.load(asset2); + } + } + _unbindModelAsset(asset2) { + asset2.off("load", this._onModelAssetLoad, this); + asset2.off("unload", this._onModelAssetUnload, this); + asset2.off("change", this._onModelAssetChange, this); + asset2.off("remove", this._onModelAssetRemove, this); + } + _onModelAssetAdded(asset2) { + this.system.app.assets.off("add:" + asset2.id, this._onModelAssetAdded, this); + if (asset2.id === this._asset) { + this._bindModelAsset(asset2); + } + } + _onModelAssetLoad(asset2) { + this.model = asset2.resource.clone(); + this._clonedModel = true; + } + _onModelAssetUnload(asset2) { + this.model = null; + } + _onModelAssetChange(asset2, attr, _new, _old) { + if (attr === "data") { + this.mapping = this._mapping; + } + } + _onModelAssetRemove(asset2) { + this.model = null; + } + _setMaterial(material) { + if (this._material === material) return; + this._material = material; + const model = this._model; + if (model && this._type !== "asset") { + const meshInstances = model.meshInstances; + for (let i = 0, len = meshInstances.length; i < len; i++) { + meshInstances[i].material = material; + } + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/model/data.js +var ModelComponentData = class { + constructor() { + this.enabled = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/model/system.js +var _schema4 = ["enabled"]; +var ModelComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.id = "model"; + this.ComponentType = ModelComponent; + this.DataType = ModelComponentData; + this.schema = _schema4; + this.defaultMaterial = getDefaultMaterial(app2.graphicsDevice); + this.on("beforeremove", this.onRemove, this); + } + initializeComponentData(component, _data, properties2) { + properties2 = ["material", "materialAsset", "asset", "castShadows", "receiveShadows", "castShadowsLightmap", "lightmapped", "lightmapSizeMultiplier", "type", "mapping", "layers", "isStatic", "batchGroupId"]; + if (_data.batchGroupId === null || _data.batchGroupId === void 0) { + _data.batchGroupId = -1; + } + if (_data.layers && _data.layers.length) { + _data.layers = _data.layers.slice(0); + } + for (let i = 0; i < properties2.length; i++) { + if (_data.hasOwnProperty(properties2[i])) { + component[properties2[i]] = _data[properties2[i]]; + } + } + if (_data.aabbCenter && _data.aabbHalfExtents) { + component.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents)); + } + super.initializeComponentData(component, _data, ["enabled"]); + } + cloneComponent(entity, clone) { + const data2 = { + type: entity.model.type, + asset: entity.model.asset, + castShadows: entity.model.castShadows, + receiveShadows: entity.model.receiveShadows, + castShadowsLightmap: entity.model.castShadowsLightmap, + lightmapped: entity.model.lightmapped, + lightmapSizeMultiplier: entity.model.lightmapSizeMultiplier, + isStatic: entity.model.isStatic, + enabled: entity.model.enabled, + layers: entity.model.layers, + batchGroupId: entity.model.batchGroupId, + mapping: extend({}, entity.model.mapping) + }; + let materialAsset = entity.model.materialAsset; + if (!(materialAsset instanceof Asset) && materialAsset != null) { + materialAsset = this.app.assets.get(materialAsset); + } + const material = entity.model.material; + if (!material || material === this.defaultMaterial || !materialAsset || material === materialAsset.resource) { + data2.materialAsset = materialAsset; + } + const component = this.addComponent(clone, data2); + if (entity.model.model && entity.model.type === "asset" && !entity.model.asset) { + component.model = entity.model.model.clone(); + component._clonedModel = true; + } + if (!data2.materialAsset) component.material = material; + if (entity.model.model) { + const meshInstances = entity.model.model.meshInstances; + const meshInstancesClone = component.model.meshInstances; + for (let i = 0; i < meshInstances.length; i++) { + meshInstancesClone[i].mask = meshInstances[i].mask; + meshInstancesClone[i].material = meshInstances[i].material; + meshInstancesClone[i].layer = meshInstances[i].layer; + meshInstancesClone[i].receiveShadow = meshInstances[i].receiveShadow; + } + } + if (entity.model.customAabb) { + component.customAabb = entity.model.customAabb.clone(); + } + return component; + } + onRemove(entity, component) { + component.onRemove(); + } +}; +Component._buildAccessors(ModelComponent.prototype, _schema4); + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/skin-instance-cache.js +var SkinInstanceCachedObject = class extends RefCountedObject { + constructor(skin, skinInstance) { + super(); + this.skin = skin; + this.skinInstance = skinInstance; + } +}; +var SkinInstanceCache = class _SkinInstanceCache { + static createCachedSkinInstance(skin, rootBone, entity) { + let skinInst = _SkinInstanceCache.getCachedSkinInstance(skin, rootBone); + if (!skinInst) { + skinInst = new SkinInstance(skin); + skinInst.resolve(rootBone, entity); + _SkinInstanceCache.addCachedSkinInstance(skin, rootBone, skinInst); + } + return skinInst; + } + static getCachedSkinInstance(skin, rootBone) { + let skinInstance = null; + const cachedObjArray = _SkinInstanceCache._skinInstanceCache.get(rootBone); + if (cachedObjArray) { + const cachedObj = cachedObjArray.find((element) => element.skin === skin); + if (cachedObj) { + cachedObj.incRefCount(); + skinInstance = cachedObj.skinInstance; + } + } + return skinInstance; + } + static addCachedSkinInstance(skin, rootBone, skinInstance) { + let cachedObjArray = _SkinInstanceCache._skinInstanceCache.get(rootBone); + if (!cachedObjArray) { + cachedObjArray = []; + _SkinInstanceCache._skinInstanceCache.set(rootBone, cachedObjArray); + } + let cachedObj = cachedObjArray.find((element) => element.skin === skin); + if (!cachedObj) { + cachedObj = new SkinInstanceCachedObject(skin, skinInstance); + cachedObjArray.push(cachedObj); + } + cachedObj.incRefCount(); + } + static removeCachedSkinInstance(skinInstance) { + if (skinInstance) { + const rootBone = skinInstance.rootBone; + if (rootBone) { + const cachedObjArray = _SkinInstanceCache._skinInstanceCache.get(rootBone); + if (cachedObjArray) { + const cachedObjIndex = cachedObjArray.findIndex((element) => element.skinInstance === skinInstance); + if (cachedObjIndex >= 0) { + const cachedObj = cachedObjArray[cachedObjIndex]; + cachedObj.decRefCount(); + if (cachedObj.refCount === 0) { + cachedObjArray.splice(cachedObjIndex, 1); + if (!cachedObjArray.length) { + _SkinInstanceCache._skinInstanceCache.delete(rootBone); + } + if (skinInstance) { + skinInstance.destroy(); + cachedObj.skinInstance = null; + } + } + } + } + } + } + } +}; +SkinInstanceCache._skinInstanceCache = /* @__PURE__ */ new Map(); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/asset/asset-reference.js +var AssetReference = class { + constructor(propertyName, parent, registry, callbacks, scope) { + this.propertyName = propertyName; + this.parent = parent; + this._scope = scope; + this._registry = registry; + this.id = null; + this.url = null; + this.asset = null; + this._onAssetLoad = callbacks.load; + this._onAssetAdd = callbacks.add; + this._onAssetRemove = callbacks.remove; + this._onAssetUnload = callbacks.unload; + } + set id(value) { + if (this.url) throw Error("Can't set id and url"); + this._unbind(); + this._id = value; + this.asset = this._registry.get(this._id); + this._bind(); + } + get id() { + return this._id; + } + set url(value) { + if (this.id) throw Error("Can't set id and url"); + this._unbind(); + this._url = value; + this.asset = this._registry.getByUrl(this._url); + this._bind(); + } + get url() { + return this._url; + } + _bind() { + if (this.id) { + if (this._onAssetLoad) this._registry.on("load:" + this.id, this._onLoad, this); + if (this._onAssetAdd) this._registry.once("add:" + this.id, this._onAdd, this); + if (this._onAssetRemove) this._registry.on("remove:" + this.id, this._onRemove, this); + if (this._onAssetUnload) this._registry.on("unload:" + this.id, this._onUnload, this); + } + if (this.url) { + if (this._onAssetLoad) this._registry.on("load:url:" + this.url, this._onLoad, this); + if (this._onAssetAdd) this._registry.once("add:url:" + this.url, this._onAdd, this); + if (this._onAssetRemove) this._registry.on("remove:url:" + this.url, this._onRemove, this); + } + } + _unbind() { + if (this.id) { + if (this._onAssetLoad) this._registry.off("load:" + this.id, this._onLoad, this); + if (this._onAssetAdd) this._registry.off("add:" + this.id, this._onAdd, this); + if (this._onAssetRemove) this._registry.off("remove:" + this.id, this._onRemove, this); + if (this._onAssetUnload) this._registry.off("unload:" + this.id, this._onUnload, this); + } + if (this.url) { + if (this._onAssetLoad) this._registry.off("load:" + this.url, this._onLoad, this); + if (this._onAssetAdd) this._registry.off("add:" + this.url, this._onAdd, this); + if (this._onAssetRemove) this._registry.off("remove:" + this.url, this._onRemove, this); + } + } + _onLoad(asset2) { + this._onAssetLoad.call(this._scope, this.propertyName, this.parent, asset2); + } + _onAdd(asset2) { + this.asset = asset2; + this._onAssetAdd.call(this._scope, this.propertyName, this.parent, asset2); + } + _onRemove(asset2) { + this._onAssetRemove.call(this._scope, this.propertyName, this.parent, asset2); + this.asset = null; + } + _onUnload(asset2) { + this._onAssetUnload.call(this._scope, this.propertyName, this.parent, asset2); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/render/component.js +var RenderComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + this._type = "asset"; + this._castShadows = true; + this._receiveShadows = true; + this._castShadowsLightmap = true; + this._lightmapped = false; + this._lightmapSizeMultiplier = 1; + this.isStatic = false; + this._batchGroupId = -1; + this._layers = [LAYERID_WORLD]; + this._renderStyle = RENDERSTYLE_SOLID; + this._meshInstances = []; + this._customAabb = null; + this._area = null; + this._assetReference = void 0; + this._materialReferences = []; + this._material = void 0; + this._rootBone = void 0; + this._rootBone = new EntityReference(this, "rootBone"); + this._rootBone.on("set:entity", this._onSetRootBone, this); + this._assetReference = new AssetReference("asset", this, system.app.assets, { + add: this._onRenderAssetAdded, + load: this._onRenderAssetLoad, + remove: this._onRenderAssetRemove, + unload: this._onRenderAssetUnload + }, this); + this._material = system.defaultMaterial; + entity.on("remove", this.onRemoveChild, this); + entity.on("removehierarchy", this.onRemoveChild, this); + entity.on("insert", this.onInsertChild, this); + entity.on("inserthierarchy", this.onInsertChild, this); + } + set renderStyle(renderStyle) { + if (this._renderStyle !== renderStyle) { + this._renderStyle = renderStyle; + MeshInstance._prepareRenderStyleForArray(this._meshInstances, renderStyle); + } + } + get renderStyle() { + return this._renderStyle; + } + set customAabb(value) { + this._customAabb = value; + const mi = this._meshInstances; + if (mi) { + for (let i = 0; i < mi.length; i++) { + mi[i].setCustomAabb(this._customAabb); + } + } + } + get customAabb() { + return this._customAabb; + } + set type(value) { + if (this._type !== value) { + this._area = null; + this._type = value; + this.destroyMeshInstances(); + if (value !== "asset") { + let material = this._material; + if (!material || material === this.system.defaultMaterial) { + material = this._materialReferences[0] && this._materialReferences[0].asset && this._materialReferences[0].asset.resource; + } + const primData = getShapePrimitive(this.system.app.graphicsDevice, value); + this._area = primData.area; + this.meshInstances = [new MeshInstance(primData.mesh, material || this.system.defaultMaterial, this.entity)]; + } + } + } + get type() { + return this._type; + } + set meshInstances(value) { + this.destroyMeshInstances(); + this._meshInstances = value; + if (this._meshInstances) { + const mi = this._meshInstances; + for (let i = 0; i < mi.length; i++) { + if (!mi[i].node) { + mi[i].node = this.entity; + } + mi[i].castShadow = this._castShadows; + mi[i].receiveShadow = this._receiveShadows; + mi[i].renderStyle = this._renderStyle; + mi[i].setLightmapped(this._lightmapped); + mi[i].setCustomAabb(this._customAabb); + } + if (this.enabled && this.entity.enabled) { + this.addToLayers(); + } + } + } + get meshInstances() { + return this._meshInstances; + } + set lightmapped(value) { + if (value !== this._lightmapped) { + this._lightmapped = value; + const mi = this._meshInstances; + if (mi) { + for (let i = 0; i < mi.length; i++) { + mi[i].setLightmapped(value); + } + } + } + } + get lightmapped() { + return this._lightmapped; + } + set castShadows(value) { + if (this._castShadows !== value) { + const mi = this._meshInstances; + if (mi) { + const layers = this.layers; + const scene2 = this.system.app.scene; + if (this._castShadows && !value) { + for (let i = 0; i < layers.length; i++) { + const layer = scene2.layers.getLayerById(this.layers[i]); + if (layer) { + layer.removeShadowCasters(mi); + } + } + } + for (let i = 0; i < mi.length; i++) { + mi[i].castShadow = value; + } + if (!this._castShadows && value) { + for (let i = 0; i < layers.length; i++) { + const layer = scene2.layers.getLayerById(layers[i]); + if (layer) { + layer.addShadowCasters(mi); + } + } + } + } + this._castShadows = value; + } + } + get castShadows() { + return this._castShadows; + } + set receiveShadows(value) { + if (this._receiveShadows !== value) { + this._receiveShadows = value; + const mi = this._meshInstances; + if (mi) { + for (let i = 0; i < mi.length; i++) { + mi[i].receiveShadow = value; + } + } + } + } + get receiveShadows() { + return this._receiveShadows; + } + set castShadowsLightmap(value) { + this._castShadowsLightmap = value; + } + get castShadowsLightmap() { + return this._castShadowsLightmap; + } + set lightmapSizeMultiplier(value) { + this._lightmapSizeMultiplier = value; + } + get lightmapSizeMultiplier() { + return this._lightmapSizeMultiplier; + } + set layers(value) { + const layers = this.system.app.scene.layers; + let layer; + if (this._meshInstances) { + for (let i = 0; i < this._layers.length; i++) { + layer = layers.getLayerById(this._layers[i]); + if (layer) { + layer.removeMeshInstances(this._meshInstances); + } + } + } + this._layers.length = 0; + for (let i = 0; i < value.length; i++) { + this._layers[i] = value[i]; + } + if (!this.enabled || !this.entity.enabled || !this._meshInstances) return; + for (let i = 0; i < this._layers.length; i++) { + layer = layers.getLayerById(this._layers[i]); + if (layer) { + layer.addMeshInstances(this._meshInstances); + } + } + } + get layers() { + return this._layers; + } + set batchGroupId(value) { + if (this._batchGroupId !== value) { + if (this.entity.enabled && this._batchGroupId >= 0) { + var _this$system$app$batc; + (_this$system$app$batc = this.system.app.batcher) == null || _this$system$app$batc.remove(BatchGroup.RENDER, this.batchGroupId, this.entity); + } + if (this.entity.enabled && value >= 0) { + var _this$system$app$batc2; + (_this$system$app$batc2 = this.system.app.batcher) == null || _this$system$app$batc2.insert(BatchGroup.RENDER, value, this.entity); + } + if (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) { + this.addToLayers(); + } + this._batchGroupId = value; + } + } + get batchGroupId() { + return this._batchGroupId; + } + set material(value) { + if (this._material !== value) { + this._material = value; + if (this._meshInstances && this._type !== "asset") { + for (let i = 0; i < this._meshInstances.length; i++) { + this._meshInstances[i].material = value; + } + } + } + } + get material() { + return this._material; + } + set materialAssets(value = []) { + if (this._materialReferences.length > value.length) { + for (let i = value.length; i < this._materialReferences.length; i++) { + this._materialReferences[i].id = null; + } + this._materialReferences.length = value.length; + } + for (let i = 0; i < value.length; i++) { + if (!this._materialReferences[i]) { + this._materialReferences.push(new AssetReference(i, this, this.system.app.assets, { + add: this._onMaterialAdded, + load: this._onMaterialLoad, + remove: this._onMaterialRemove, + unload: this._onMaterialUnload + }, this)); + } + if (value[i]) { + const id12 = value[i] instanceof Asset ? value[i].id : value[i]; + if (this._materialReferences[i].id !== id12) { + this._materialReferences[i].id = id12; + } + if (this._materialReferences[i].asset) { + this._onMaterialAdded(i, this, this._materialReferences[i].asset); + } + } else { + this._materialReferences[i].id = null; + if (this._meshInstances[i]) { + this._meshInstances[i].material = this.system.defaultMaterial; + } + } + } + } + get materialAssets() { + return this._materialReferences.map(function(ref) { + return ref.id; + }); + } + set asset(value) { + const id12 = value instanceof Asset ? value.id : value; + if (this._assetReference.id === id12) return; + if (this._assetReference.asset && this._assetReference.asset.resource) { + this._onRenderAssetRemove(); + } + this._assetReference.id = id12; + if (this._assetReference.asset) { + this._onRenderAssetAdded(); + } + } + get asset() { + return this._assetReference.id; + } + assignAsset(asset2) { + const id12 = asset2 instanceof Asset ? asset2.id : asset2; + this._assetReference.id = id12; + } + _onSetRootBone(entity) { + if (entity) { + this._onRootBoneChanged(); + } + } + _onRootBoneChanged() { + this._clearSkinInstances(); + if (this.enabled && this.entity.enabled) { + this._cloneSkinInstances(); + } + } + destroyMeshInstances() { + const meshInstances = this._meshInstances; + if (meshInstances) { + this.removeFromLayers(); + this._clearSkinInstances(); + for (let i = 0; i < meshInstances.length; i++) { + meshInstances[i].destroy(); + } + this._meshInstances.length = 0; + } + } + addToLayers() { + const layers = this.system.app.scene.layers; + for (let i = 0; i < this._layers.length; i++) { + const layer = layers.getLayerById(this._layers[i]); + if (layer) { + layer.addMeshInstances(this._meshInstances); + } + } + } + removeFromLayers() { + if (this._meshInstances && this._meshInstances.length) { + const layers = this.system.app.scene.layers; + for (let i = 0; i < this._layers.length; i++) { + const layer = layers.getLayerById(this._layers[i]); + if (layer) { + layer.removeMeshInstances(this._meshInstances); + } + } + } + } + onRemoveChild() { + this.removeFromLayers(); + } + onInsertChild() { + if (this._meshInstances && this.enabled && this.entity.enabled) { + this.addToLayers(); + } + } + onRemove() { + this.destroyMeshInstances(); + this.asset = null; + this.materialAsset = null; + this._assetReference.id = null; + for (let i = 0; i < this._materialReferences.length; i++) { + this._materialReferences[i].id = null; + } + this.entity.off("remove", this.onRemoveChild, this); + this.entity.off("insert", this.onInsertChild, this); + } + onLayersChanged(oldComp, newComp) { + this.addToLayers(); + oldComp.off("add", this.onLayerAdded, this); + oldComp.off("remove", this.onLayerRemoved, this); + newComp.on("add", this.onLayerAdded, this); + newComp.on("remove", this.onLayerRemoved, this); + } + onLayerAdded(layer) { + const index = this.layers.indexOf(layer.id); + if (index < 0) return; + layer.addMeshInstances(this._meshInstances); + } + onLayerRemoved(layer) { + const index = this.layers.indexOf(layer.id); + if (index < 0) return; + layer.removeMeshInstances(this._meshInstances); + } + onEnable() { + const app2 = this.system.app; + const scene2 = app2.scene; + this._rootBone.onParentComponentEnable(); + this._cloneSkinInstances(); + scene2.on("set:layers", this.onLayersChanged, this); + if (scene2.layers) { + scene2.layers.on("add", this.onLayerAdded, this); + scene2.layers.on("remove", this.onLayerRemoved, this); + } + const isAsset = this._type === "asset"; + if (this._meshInstances && this._meshInstances.length) { + this.addToLayers(); + } else if (isAsset && this.asset) { + this._onRenderAssetAdded(); + } + for (let i = 0; i < this._materialReferences.length; i++) { + if (this._materialReferences[i].asset) { + this.system.app.assets.load(this._materialReferences[i].asset); + } + } + if (this._batchGroupId >= 0) { + var _app$batcher; + (_app$batcher = app2.batcher) == null || _app$batcher.insert(BatchGroup.RENDER, this.batchGroupId, this.entity); + } + } + onDisable() { + const app2 = this.system.app; + const scene2 = app2.scene; + scene2.off("set:layers", this.onLayersChanged, this); + if (scene2.layers) { + scene2.layers.off("add", this.onLayerAdded, this); + scene2.layers.off("remove", this.onLayerRemoved, this); + } + if (this._batchGroupId >= 0) { + var _app$batcher2; + (_app$batcher2 = app2.batcher) == null || _app$batcher2.remove(BatchGroup.RENDER, this.batchGroupId, this.entity); + } + this.removeFromLayers(); + } + hide() { + if (this._meshInstances) { + for (let i = 0; i < this._meshInstances.length; i++) { + this._meshInstances[i].visible = false; + } + } + } + show() { + if (this._meshInstances) { + for (let i = 0; i < this._meshInstances.length; i++) { + this._meshInstances[i].visible = true; + } + } + } + _onRenderAssetAdded() { + if (!this._assetReference.asset) return; + if (this._assetReference.asset.resource) { + this._onRenderAssetLoad(); + } else if (this.enabled && this.entity.enabled) { + this.system.app.assets.load(this._assetReference.asset); + } + } + _onRenderAssetLoad() { + this.destroyMeshInstances(); + if (this._assetReference.asset) { + const render = this._assetReference.asset.resource; + render.off("set:meshes", this._onSetMeshes, this); + render.on("set:meshes", this._onSetMeshes, this); + if (render.meshes) { + this._onSetMeshes(render.meshes); + } + } + } + _onSetMeshes(meshes) { + this._cloneMeshes(meshes); + } + _clearSkinInstances() { + for (let i = 0; i < this._meshInstances.length; i++) { + const meshInstance = this._meshInstances[i]; + SkinInstanceCache.removeCachedSkinInstance(meshInstance.skinInstance); + meshInstance.skinInstance = null; + } + } + _cloneSkinInstances() { + if (this._meshInstances.length && this._rootBone.entity instanceof GraphNode) { + for (let i = 0; i < this._meshInstances.length; i++) { + const meshInstance = this._meshInstances[i]; + const mesh = meshInstance.mesh; + if (mesh.skin && !meshInstance.skinInstance) { + meshInstance.skinInstance = SkinInstanceCache.createCachedSkinInstance(mesh.skin, this._rootBone.entity, this.entity); + } + } + } + } + _cloneMeshes(meshes) { + if (meshes && meshes.length) { + const meshInstances = []; + for (let i = 0; i < meshes.length; i++) { + const mesh = meshes[i]; + const material = this._materialReferences[i] && this._materialReferences[i].asset && this._materialReferences[i].asset.resource; + const meshInst = new MeshInstance(mesh, material || this.system.defaultMaterial, this.entity); + meshInstances.push(meshInst); + if (mesh.morph) { + meshInst.morphInstance = new MorphInstance(mesh.morph); + } + } + this.meshInstances = meshInstances; + this._cloneSkinInstances(); + } + } + _onRenderAssetUnload() { + if (this._type === "asset") { + this.destroyMeshInstances(); + } + } + _onRenderAssetRemove() { + if (this._assetReference.asset && this._assetReference.asset.resource) { + this._assetReference.asset.resource.off("set:meshes", this._onSetMeshes, this); + } + this._onRenderAssetUnload(); + } + _onMaterialAdded(index, component, asset2) { + if (asset2.resource) { + this._onMaterialLoad(index, component, asset2); + } else { + if (this.enabled && this.entity.enabled) { + this.system.app.assets.load(asset2); + } + } + } + _updateMainMaterial(index, material) { + if (index === 0) { + this.material = material; + } + } + _onMaterialLoad(index, component, asset2) { + if (this._meshInstances[index]) { + this._meshInstances[index].material = asset2.resource; + } + this._updateMainMaterial(index, asset2.resource); + } + _onMaterialRemove(index, component, asset2) { + if (this._meshInstances[index]) { + this._meshInstances[index].material = this.system.defaultMaterial; + } + this._updateMainMaterial(index, this.system.defaultMaterial); + } + _onMaterialUnload(index, component, asset2) { + if (this._meshInstances[index]) { + this._meshInstances[index].material = this.system.defaultMaterial; + } + this._updateMainMaterial(index, this.system.defaultMaterial); + } + resolveDuplicatedEntityReferenceProperties(oldRender, duplicatedIdsMap) { + if (oldRender.rootBone && duplicatedIdsMap[oldRender.rootBone]) { + this.rootBone = duplicatedIdsMap[oldRender.rootBone]; + } + this._clearSkinInstances(); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/render/data.js +var RenderComponentData = class { + constructor() { + this.enabled = true; + this.rootBone = null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/render/system.js +var _schema5 = [{ + name: "rootBone", + type: "entity" +}, "enabled"]; +var _properties = ["material", "meshInstances", "asset", "materialAssets", "castShadows", "receiveShadows", "castShadowsLightmap", "lightmapped", "lightmapSizeMultiplier", "renderStyle", "type", "layers", "isStatic", "batchGroupId"]; +var RenderComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.id = "render"; + this.ComponentType = RenderComponent; + this.DataType = RenderComponentData; + this.schema = _schema5; + this.defaultMaterial = getDefaultMaterial(app2.graphicsDevice); + this.on("beforeremove", this.onRemove, this); + } + initializeComponentData(component, _data, properties2) { + if (_data.batchGroupId === null || _data.batchGroupId === void 0) { + _data.batchGroupId = -1; + } + if (_data.layers && _data.layers.length) { + _data.layers = _data.layers.slice(0); + } + for (let i = 0; i < _properties.length; i++) { + if (_data.hasOwnProperty(_properties[i])) { + component[_properties[i]] = _data[_properties[i]]; + } + } + if (_data.aabbCenter && _data.aabbHalfExtents) { + component.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents)); + } + super.initializeComponentData(component, _data, _schema5); + } + cloneComponent(entity, clone) { + const data2 = {}; + for (let i = 0; i < _properties.length; i++) { + data2[_properties[i]] = entity.render[_properties[i]]; + } + data2.enabled = entity.render.enabled; + delete data2.meshInstances; + const component = this.addComponent(clone, data2); + const srcMeshInstances = entity.render.meshInstances; + const meshes = srcMeshInstances.map((mi) => mi.mesh); + component._onSetMeshes(meshes); + for (let m = 0; m < srcMeshInstances.length; m++) { + component.meshInstances[m].material = srcMeshInstances[m].material; + } + if (entity.render.customAabb) { + component.customAabb = entity.render.customAabb.clone(); + } + return component; + } + onRemove(entity, component) { + component.onRemove(); + } +}; +Component._buildAccessors(RenderComponent.prototype, _schema5); + +// ../../node_modules/playcanvas/build/playcanvas/src/core/object-pool.js +var ObjectPool = class { + constructor(constructorFunc, size) { + this._constructor = void 0; + this._pool = []; + this._count = 0; + this._constructor = constructorFunc; + this._resize(size); + } + _resize(size) { + if (size > this._pool.length) { + for (let i = this._pool.length; i < size; i++) { + this._pool[i] = new this._constructor(); + } + } + } + allocate() { + if (this._count >= this._pool.length) { + this._resize(this._pool.length * 2); + } + return this._pool[this._count++]; + } + freeAll() { + this._count = 0; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/rigid-body/component.js +var _ammoTransform2; +var _ammoVec12; +var _ammoVec2; +var _ammoQuat2; +var _quat1 = new Quat2(); +var _quat2 = new Quat2(); +var _vec32 = new Vec3(); +var RigidBodyComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + this._angularDamping = 0; + this._angularFactor = new Vec3(1, 1, 1); + this._angularVelocity = new Vec3(); + this._body = null; + this._friction = 0.5; + this._group = BODYGROUP_STATIC; + this._linearDamping = 0; + this._linearFactor = new Vec3(1, 1, 1); + this._linearVelocity = new Vec3(); + this._mask = BODYMASK_NOT_STATIC; + this._mass = 1; + this._restitution = 0; + this._rollingFriction = 0; + this._simulationEnabled = false; + this._type = BODYTYPE_STATIC; + } + static onLibraryLoaded() { + if (typeof Ammo !== "undefined") { + _ammoTransform2 = new Ammo.btTransform(); + _ammoVec12 = new Ammo.btVector3(); + _ammoVec2 = new Ammo.btVector3(); + _ammoQuat2 = new Ammo.btQuaternion(); + } + } + set angularDamping(damping) { + if (this._angularDamping !== damping) { + this._angularDamping = damping; + if (this._body) { + this._body.setDamping(this._linearDamping, damping); + } + } + } + get angularDamping() { + return this._angularDamping; + } + set angularFactor(factor) { + if (!this._angularFactor.equals(factor)) { + this._angularFactor.copy(factor); + if (this._body && this._type === BODYTYPE_DYNAMIC) { + _ammoVec12.setValue(factor.x, factor.y, factor.z); + this._body.setAngularFactor(_ammoVec12); + } + } + } + get angularFactor() { + return this._angularFactor; + } + set angularVelocity(velocity) { + if (this._body && this._type === BODYTYPE_DYNAMIC) { + this._body.activate(); + _ammoVec12.setValue(velocity.x, velocity.y, velocity.z); + this._body.setAngularVelocity(_ammoVec12); + this._angularVelocity.copy(velocity); + } + } + get angularVelocity() { + if (this._body && this._type === BODYTYPE_DYNAMIC) { + const velocity = this._body.getAngularVelocity(); + this._angularVelocity.set(velocity.x(), velocity.y(), velocity.z()); + } + return this._angularVelocity; + } + set body(body) { + if (this._body !== body) { + this._body = body; + if (body && this._simulationEnabled) { + body.activate(); + } + } + } + get body() { + return this._body; + } + set friction(friction) { + if (this._friction !== friction) { + this._friction = friction; + if (this._body) { + this._body.setFriction(friction); + } + } + } + get friction() { + return this._friction; + } + set group(group) { + if (this._group !== group) { + this._group = group; + if (this.enabled && this.entity.enabled) { + this.disableSimulation(); + this.enableSimulation(); + } + } + } + get group() { + return this._group; + } + set linearDamping(damping) { + if (this._linearDamping !== damping) { + this._linearDamping = damping; + if (this._body) { + this._body.setDamping(damping, this._angularDamping); + } + } + } + get linearDamping() { + return this._linearDamping; + } + set linearFactor(factor) { + if (!this._linearFactor.equals(factor)) { + this._linearFactor.copy(factor); + if (this._body && this._type === BODYTYPE_DYNAMIC) { + _ammoVec12.setValue(factor.x, factor.y, factor.z); + this._body.setLinearFactor(_ammoVec12); + } + } + } + get linearFactor() { + return this._linearFactor; + } + set linearVelocity(velocity) { + if (this._body && this._type === BODYTYPE_DYNAMIC) { + this._body.activate(); + _ammoVec12.setValue(velocity.x, velocity.y, velocity.z); + this._body.setLinearVelocity(_ammoVec12); + this._linearVelocity.copy(velocity); + } + } + get linearVelocity() { + if (this._body && this._type === BODYTYPE_DYNAMIC) { + const velocity = this._body.getLinearVelocity(); + this._linearVelocity.set(velocity.x(), velocity.y(), velocity.z()); + } + return this._linearVelocity; + } + set mask(mask) { + if (this._mask !== mask) { + this._mask = mask; + if (this.enabled && this.entity.enabled) { + this.disableSimulation(); + this.enableSimulation(); + } + } + } + get mask() { + return this._mask; + } + set mass(mass) { + if (this._mass !== mass) { + this._mass = mass; + if (this._body && this._type === BODYTYPE_DYNAMIC) { + const enabled = this.enabled && this.entity.enabled; + if (enabled) { + this.disableSimulation(); + } + this._body.getCollisionShape().calculateLocalInertia(mass, _ammoVec12); + this._body.setMassProps(mass, _ammoVec12); + this._body.updateInertiaTensor(); + if (enabled) { + this.enableSimulation(); + } + } + } + } + get mass() { + return this._mass; + } + set restitution(restitution) { + if (this._restitution !== restitution) { + this._restitution = restitution; + if (this._body) { + this._body.setRestitution(restitution); + } + } + } + get restitution() { + return this._restitution; + } + set rollingFriction(friction) { + if (this._rollingFriction !== friction) { + this._rollingFriction = friction; + if (this._body) { + this._body.setRollingFriction(friction); + } + } + } + get rollingFriction() { + return this._rollingFriction; + } + set type(type2) { + if (this._type !== type2) { + this._type = type2; + this.disableSimulation(); + switch (type2) { + case BODYTYPE_DYNAMIC: + this._group = BODYGROUP_DYNAMIC; + this._mask = BODYMASK_ALL; + break; + case BODYTYPE_KINEMATIC: + this._group = BODYGROUP_KINEMATIC; + this._mask = BODYMASK_ALL; + break; + case BODYTYPE_STATIC: + default: + this._group = BODYGROUP_STATIC; + this._mask = BODYMASK_NOT_STATIC; + break; + } + this.createBody(); + } + } + get type() { + return this._type; + } + createBody() { + const entity = this.entity; + let shape2; + if (entity.collision) { + shape2 = entity.collision.shape; + if (entity.trigger) { + entity.trigger.destroy(); + delete entity.trigger; + } + } + if (shape2) { + if (this._body) { + this.system.removeBody(this._body); + this.system.destroyBody(this._body); + this._body = null; + } + const mass = this._type === BODYTYPE_DYNAMIC ? this._mass : 0; + this._getEntityTransform(_ammoTransform2); + const body = this.system.createBody(mass, shape2, _ammoTransform2); + body.setRestitution(this._restitution); + body.setFriction(this._friction); + body.setRollingFriction(this._rollingFriction); + body.setDamping(this._linearDamping, this._angularDamping); + if (this._type === BODYTYPE_DYNAMIC) { + const linearFactor = this._linearFactor; + _ammoVec12.setValue(linearFactor.x, linearFactor.y, linearFactor.z); + body.setLinearFactor(_ammoVec12); + const angularFactor = this._angularFactor; + _ammoVec12.setValue(angularFactor.x, angularFactor.y, angularFactor.z); + body.setAngularFactor(_ammoVec12); + } else if (this._type === BODYTYPE_KINEMATIC) { + body.setCollisionFlags(body.getCollisionFlags() | BODYFLAG_KINEMATIC_OBJECT); + body.setActivationState(BODYSTATE_DISABLE_DEACTIVATION); + } + body.entity = entity; + this.body = body; + if (this.enabled && entity.enabled) { + this.enableSimulation(); + } + } + } + isActive() { + return this._body ? this._body.isActive() : false; + } + activate() { + if (this._body) { + this._body.activate(); + } + } + enableSimulation() { + const entity = this.entity; + if (entity.collision && entity.collision.enabled && !this._simulationEnabled) { + const body = this._body; + if (body) { + this.system.addBody(body, this._group, this._mask); + switch (this._type) { + case BODYTYPE_DYNAMIC: + this.system._dynamic.push(this); + body.forceActivationState(BODYSTATE_ACTIVE_TAG); + this.syncEntityToBody(); + break; + case BODYTYPE_KINEMATIC: + this.system._kinematic.push(this); + body.forceActivationState(BODYSTATE_DISABLE_DEACTIVATION); + break; + case BODYTYPE_STATIC: + body.forceActivationState(BODYSTATE_ACTIVE_TAG); + this.syncEntityToBody(); + break; + } + if (entity.collision.type === "compound") { + this.system._compounds.push(entity.collision); + } + body.activate(); + this._simulationEnabled = true; + } + } + } + disableSimulation() { + const body = this._body; + if (body && this._simulationEnabled) { + const system = this.system; + let idx = system._compounds.indexOf(this.entity.collision); + if (idx > -1) { + system._compounds.splice(idx, 1); + } + idx = system._dynamic.indexOf(this); + if (idx > -1) { + system._dynamic.splice(idx, 1); + } + idx = system._kinematic.indexOf(this); + if (idx > -1) { + system._kinematic.splice(idx, 1); + } + system.removeBody(body); + body.forceActivationState(BODYSTATE_DISABLE_SIMULATION); + this._simulationEnabled = false; + } + } + applyForce(x2, y2, z2, px, py, pz) { + const body = this._body; + if (body) { + body.activate(); + if (x2 instanceof Vec3) { + _ammoVec12.setValue(x2.x, x2.y, x2.z); + } else { + _ammoVec12.setValue(x2, y2, z2); + } + if (y2 instanceof Vec3) { + _ammoVec2.setValue(y2.x, y2.y, y2.z); + } else if (px !== void 0) { + _ammoVec2.setValue(px, py, pz); + } else { + _ammoVec2.setValue(0, 0, 0); + } + body.applyForce(_ammoVec12, _ammoVec2); + } + } + applyTorque(x2, y2, z2) { + const body = this._body; + if (body) { + body.activate(); + if (x2 instanceof Vec3) { + _ammoVec12.setValue(x2.x, x2.y, x2.z); + } else { + _ammoVec12.setValue(x2, y2, z2); + } + body.applyTorque(_ammoVec12); + } + } + applyImpulse(x2, y2, z2, px, py, pz) { + const body = this._body; + if (body) { + body.activate(); + if (x2 instanceof Vec3) { + _ammoVec12.setValue(x2.x, x2.y, x2.z); + } else { + _ammoVec12.setValue(x2, y2, z2); + } + if (y2 instanceof Vec3) { + _ammoVec2.setValue(y2.x, y2.y, y2.z); + } else if (px !== void 0) { + _ammoVec2.setValue(px, py, pz); + } else { + _ammoVec2.setValue(0, 0, 0); + } + body.applyImpulse(_ammoVec12, _ammoVec2); + } + } + applyTorqueImpulse(x2, y2, z2) { + const body = this._body; + if (body) { + body.activate(); + if (x2 instanceof Vec3) { + _ammoVec12.setValue(x2.x, x2.y, x2.z); + } else { + _ammoVec12.setValue(x2, y2, z2); + } + body.applyTorqueImpulse(_ammoVec12); + } + } + isStatic() { + return this._type === BODYTYPE_STATIC; + } + isStaticOrKinematic() { + return this._type === BODYTYPE_STATIC || this._type === BODYTYPE_KINEMATIC; + } + isKinematic() { + return this._type === BODYTYPE_KINEMATIC; + } + _getEntityTransform(transform) { + const entity = this.entity; + const component = entity.collision; + if (component) { + const bodyPos = component.getShapePosition(); + const bodyRot = component.getShapeRotation(); + _ammoVec12.setValue(bodyPos.x, bodyPos.y, bodyPos.z); + _ammoQuat2.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w); + } else { + const pos = entity.getPosition(); + const rot = entity.getRotation(); + _ammoVec12.setValue(pos.x, pos.y, pos.z); + _ammoQuat2.setValue(rot.x, rot.y, rot.z, rot.w); + } + transform.setOrigin(_ammoVec12); + transform.setRotation(_ammoQuat2); + } + syncEntityToBody() { + const body = this._body; + if (body) { + this._getEntityTransform(_ammoTransform2); + body.setWorldTransform(_ammoTransform2); + if (this._type === BODYTYPE_KINEMATIC) { + const motionState = body.getMotionState(); + if (motionState) { + motionState.setWorldTransform(_ammoTransform2); + } + } + body.activate(); + } + } + _updateDynamic() { + const body = this._body; + if (body.isActive()) { + const motionState = body.getMotionState(); + if (motionState) { + const entity = this.entity; + motionState.getWorldTransform(_ammoTransform2); + const p = _ammoTransform2.getOrigin(); + const q2 = _ammoTransform2.getRotation(); + const component = entity.collision; + if (component && component._hasOffset) { + const lo = component.data.linearOffset; + const ao = component.data.angularOffset; + const invertedAo = _quat2.copy(ao).invert(); + const entityRot = _quat1.set(q2.x(), q2.y(), q2.z(), q2.w()).mul(invertedAo); + entityRot.transformVector(lo, _vec32); + entity.setPosition(p.x() - _vec32.x, p.y() - _vec32.y, p.z() - _vec32.z); + entity.setRotation(entityRot); + } else { + entity.setPosition(p.x(), p.y(), p.z()); + entity.setRotation(q2.x(), q2.y(), q2.z(), q2.w()); + } + } + } + } + _updateKinematic() { + const motionState = this._body.getMotionState(); + if (motionState) { + this._getEntityTransform(_ammoTransform2); + motionState.setWorldTransform(_ammoTransform2); + } + } + teleport(x2, y2, z2, rx, ry, rz) { + if (x2 instanceof Vec3) { + this.entity.setPosition(x2); + } else { + this.entity.setPosition(x2, y2, z2); + } + if (y2 instanceof Quat2) { + this.entity.setRotation(y2); + } else if (y2 instanceof Vec3) { + this.entity.setEulerAngles(y2); + } else if (rx !== void 0) { + this.entity.setEulerAngles(rx, ry, rz); + } + this.syncEntityToBody(); + } + onEnable() { + if (!this._body) { + this.createBody(); + } + this.enableSimulation(); + } + onDisable() { + this.disableSimulation(); + } +}; +RigidBodyComponent.EVENT_CONTACT = "contact"; +RigidBodyComponent.EVENT_COLLISIONSTART = "collisionstart"; +RigidBodyComponent.EVENT_COLLISIONEND = "collisionend"; +RigidBodyComponent.EVENT_TRIGGERENTER = "triggerenter"; +RigidBodyComponent.EVENT_TRIGGERLEAVE = "triggerleave"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/rigid-body/data.js +var RigidBodyComponentData = class { + constructor() { + this.enabled = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/rigid-body/system.js +var ammoRayStart; +var ammoRayEnd; +var RaycastResult = class { + constructor(entity, point, normal, hitFraction) { + this.entity = void 0; + this.point = void 0; + this.normal = void 0; + this.hitFraction = void 0; + this.entity = entity; + this.point = point; + this.normal = normal; + this.hitFraction = hitFraction; + } +}; +var SingleContactResult = class { + constructor(a, b, contactPoint) { + this.a = void 0; + this.b = void 0; + this.impulse = void 0; + this.localPointA = void 0; + this.localPointB = void 0; + this.pointA = void 0; + this.pointB = void 0; + this.normal = void 0; + if (arguments.length !== 0) { + this.a = a; + this.b = b; + this.impulse = contactPoint.impulse; + this.localPointA = contactPoint.localPoint; + this.localPointB = contactPoint.localPointOther; + this.pointA = contactPoint.point; + this.pointB = contactPoint.pointOther; + this.normal = contactPoint.normal; + } else { + this.a = null; + this.b = null; + this.impulse = 0; + this.localPointA = new Vec3(); + this.localPointB = new Vec3(); + this.pointA = new Vec3(); + this.pointB = new Vec3(); + this.normal = new Vec3(); + } + } +}; +var ContactPoint = class { + constructor(localPoint = new Vec3(), localPointOther = new Vec3(), point = new Vec3(), pointOther = new Vec3(), normal = new Vec3(), impulse = 0) { + this.localPoint = void 0; + this.localPointOther = void 0; + this.point = void 0; + this.pointOther = void 0; + this.normal = void 0; + this.impulse = void 0; + this.localPoint = localPoint; + this.localPointOther = localPointOther; + this.point = point; + this.pointOther = pointOther; + this.normal = normal; + this.impulse = impulse; + } +}; +var ContactResult = class { + constructor(other, contacts) { + this.other = void 0; + this.contacts = void 0; + this.other = other; + this.contacts = contacts; + } +}; +var _schema6 = ["enabled"]; +var RigidBodyComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.maxSubSteps = 10; + this.fixedTimeStep = 1 / 60; + this.gravity = new Vec3(0, -9.81, 0); + this._gravityFloat32 = new Float32Array(3); + this._dynamic = []; + this._kinematic = []; + this._triggers = []; + this._compounds = []; + this.id = "rigidbody"; + this._stats = app2.stats.frame; + this.ComponentType = RigidBodyComponent; + this.DataType = RigidBodyComponentData; + this.contactPointPool = null; + this.contactResultPool = null; + this.singleContactResultPool = null; + this.schema = _schema6; + this.collisions = {}; + this.frameCollisions = {}; + this.on("beforeremove", this.onBeforeRemove, this); + } + onLibraryLoaded() { + if (typeof Ammo !== "undefined") { + this.collisionConfiguration = new Ammo.btDefaultCollisionConfiguration(); + this.dispatcher = new Ammo.btCollisionDispatcher(this.collisionConfiguration); + this.overlappingPairCache = new Ammo.btDbvtBroadphase(); + this.solver = new Ammo.btSequentialImpulseConstraintSolver(); + this.dynamicsWorld = new Ammo.btDiscreteDynamicsWorld(this.dispatcher, this.overlappingPairCache, this.solver, this.collisionConfiguration); + if (this.dynamicsWorld.setInternalTickCallback) { + const checkForCollisionsPointer = Ammo.addFunction(this._checkForCollisions.bind(this), "vif"); + this.dynamicsWorld.setInternalTickCallback(checkForCollisionsPointer); + } + ammoRayStart = new Ammo.btVector3(); + ammoRayEnd = new Ammo.btVector3(); + RigidBodyComponent.onLibraryLoaded(); + this.contactPointPool = new ObjectPool(ContactPoint, 1); + this.contactResultPool = new ObjectPool(ContactResult, 1); + this.singleContactResultPool = new ObjectPool(SingleContactResult, 1); + this.app.systems.on("update", this.onUpdate, this); + } else { + this.app.systems.off("update", this.onUpdate, this); + } + } + initializeComponentData(component, data2, properties2) { + const props = ["mass", "linearDamping", "angularDamping", "linearFactor", "angularFactor", "friction", "rollingFriction", "restitution", "type", "group", "mask"]; + for (const property of props) { + if (data2.hasOwnProperty(property)) { + const value = data2[property]; + if (Array.isArray(value)) { + component[property] = new Vec3(value[0], value[1], value[2]); + } else { + component[property] = value; + } + } + } + super.initializeComponentData(component, data2, ["enabled"]); + } + cloneComponent(entity, clone) { + const rigidbody = entity.rigidbody; + const data2 = { + enabled: rigidbody.enabled, + mass: rigidbody.mass, + linearDamping: rigidbody.linearDamping, + angularDamping: rigidbody.angularDamping, + linearFactor: [rigidbody.linearFactor.x, rigidbody.linearFactor.y, rigidbody.linearFactor.z], + angularFactor: [rigidbody.angularFactor.x, rigidbody.angularFactor.y, rigidbody.angularFactor.z], + friction: rigidbody.friction, + rollingFriction: rigidbody.rollingFriction, + restitution: rigidbody.restitution, + type: rigidbody.type, + group: rigidbody.group, + mask: rigidbody.mask + }; + return this.addComponent(clone, data2); + } + onBeforeRemove(entity, component) { + if (component.enabled) { + component.enabled = false; + } + if (component.body) { + this.destroyBody(component.body); + component.body = null; + } + } + addBody(body, group, mask) { + if (group !== void 0 && mask !== void 0) { + this.dynamicsWorld.addRigidBody(body, group, mask); + } else { + this.dynamicsWorld.addRigidBody(body); + } + } + removeBody(body) { + this.dynamicsWorld.removeRigidBody(body); + } + createBody(mass, shape2, transform) { + const localInertia = new Ammo.btVector3(0, 0, 0); + if (mass !== 0) { + shape2.calculateLocalInertia(mass, localInertia); + } + const motionState = new Ammo.btDefaultMotionState(transform); + const bodyInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, shape2, localInertia); + const body = new Ammo.btRigidBody(bodyInfo); + Ammo.destroy(bodyInfo); + Ammo.destroy(localInertia); + return body; + } + destroyBody(body) { + const motionState = body.getMotionState(); + if (motionState) { + Ammo.destroy(motionState); + } + Ammo.destroy(body); + } + raycastFirst(start, end, options = {}) { + if (options.filterTags || options.filterCallback) { + options.sort = true; + return this.raycastAll(start, end, options)[0] || null; + } + let result = null; + ammoRayStart.setValue(start.x, start.y, start.z); + ammoRayEnd.setValue(end.x, end.y, end.z); + const rayCallback = new Ammo.ClosestRayResultCallback(ammoRayStart, ammoRayEnd); + if (typeof options.filterCollisionGroup === "number") { + rayCallback.set_m_collisionFilterGroup(options.filterCollisionGroup); + } + if (typeof options.filterCollisionMask === "number") { + rayCallback.set_m_collisionFilterMask(options.filterCollisionMask); + } + this.dynamicsWorld.rayTest(ammoRayStart, ammoRayEnd, rayCallback); + if (rayCallback.hasHit()) { + const collisionObj = rayCallback.get_m_collisionObject(); + const body = Ammo.castObject(collisionObj, Ammo.btRigidBody); + if (body) { + const point = rayCallback.get_m_hitPointWorld(); + const normal = rayCallback.get_m_hitNormalWorld(); + result = new RaycastResult(body.entity, new Vec3(point.x(), point.y(), point.z()), new Vec3(normal.x(), normal.y(), normal.z()), rayCallback.get_m_closestHitFraction()); + } + } + Ammo.destroy(rayCallback); + return result; + } + raycastAll(start, end, options = {}) { + const results = []; + ammoRayStart.setValue(start.x, start.y, start.z); + ammoRayEnd.setValue(end.x, end.y, end.z); + const rayCallback = new Ammo.AllHitsRayResultCallback(ammoRayStart, ammoRayEnd); + if (typeof options.filterCollisionGroup === "number") { + rayCallback.set_m_collisionFilterGroup(options.filterCollisionGroup); + } + if (typeof options.filterCollisionMask === "number") { + rayCallback.set_m_collisionFilterMask(options.filterCollisionMask); + } + this.dynamicsWorld.rayTest(ammoRayStart, ammoRayEnd, rayCallback); + if (rayCallback.hasHit()) { + const collisionObjs = rayCallback.get_m_collisionObjects(); + const points = rayCallback.get_m_hitPointWorld(); + const normals = rayCallback.get_m_hitNormalWorld(); + const hitFractions = rayCallback.get_m_hitFractions(); + const numHits = collisionObjs.size(); + for (let i = 0; i < numHits; i++) { + const body = Ammo.castObject(collisionObjs.at(i), Ammo.btRigidBody); + if (body && body.entity) { + if (options.filterTags && !body.entity.tags.has(...options.filterTags) || options.filterCallback && !options.filterCallback(body.entity)) { + continue; + } + const point = points.at(i); + const normal = normals.at(i); + const result = new RaycastResult(body.entity, new Vec3(point.x(), point.y(), point.z()), new Vec3(normal.x(), normal.y(), normal.z()), hitFractions.at(i)); + results.push(result); + } + } + if (options.sort) { + results.sort((a, b) => a.hitFraction - b.hitFraction); + } + } + Ammo.destroy(rayCallback); + return results; + } + _storeCollision(entity, other) { + let isNewCollision = false; + const guid2 = entity.getGuid(); + this.collisions[guid2] = this.collisions[guid2] || { + others: [], + entity + }; + if (this.collisions[guid2].others.indexOf(other) < 0) { + this.collisions[guid2].others.push(other); + isNewCollision = true; + } + this.frameCollisions[guid2] = this.frameCollisions[guid2] || { + others: [], + entity + }; + this.frameCollisions[guid2].others.push(other); + return isNewCollision; + } + _createContactPointFromAmmo(contactPoint) { + const localPointA = contactPoint.get_m_localPointA(); + const localPointB = contactPoint.get_m_localPointB(); + const positionWorldOnA = contactPoint.getPositionWorldOnA(); + const positionWorldOnB = contactPoint.getPositionWorldOnB(); + const normalWorldOnB = contactPoint.get_m_normalWorldOnB(); + const contact = this.contactPointPool.allocate(); + contact.localPoint.set(localPointA.x(), localPointA.y(), localPointA.z()); + contact.localPointOther.set(localPointB.x(), localPointB.y(), localPointB.z()); + contact.point.set(positionWorldOnA.x(), positionWorldOnA.y(), positionWorldOnA.z()); + contact.pointOther.set(positionWorldOnB.x(), positionWorldOnB.y(), positionWorldOnB.z()); + contact.normal.set(normalWorldOnB.x(), normalWorldOnB.y(), normalWorldOnB.z()); + contact.impulse = contactPoint.getAppliedImpulse(); + return contact; + } + _createReverseContactPointFromAmmo(contactPoint) { + const localPointA = contactPoint.get_m_localPointA(); + const localPointB = contactPoint.get_m_localPointB(); + const positionWorldOnA = contactPoint.getPositionWorldOnA(); + const positionWorldOnB = contactPoint.getPositionWorldOnB(); + const normalWorldOnB = contactPoint.get_m_normalWorldOnB(); + const contact = this.contactPointPool.allocate(); + contact.localPointOther.set(localPointA.x(), localPointA.y(), localPointA.z()); + contact.localPoint.set(localPointB.x(), localPointB.y(), localPointB.z()); + contact.pointOther.set(positionWorldOnA.x(), positionWorldOnA.y(), positionWorldOnA.z()); + contact.point.set(positionWorldOnB.x(), positionWorldOnB.y(), positionWorldOnB.z()); + contact.normal.set(normalWorldOnB.x(), normalWorldOnB.y(), normalWorldOnB.z()); + contact.impulse = contactPoint.getAppliedImpulse(); + return contact; + } + _createSingleContactResult(a, b, contactPoint) { + const result = this.singleContactResultPool.allocate(); + result.a = a; + result.b = b; + result.localPointA = contactPoint.localPoint; + result.localPointB = contactPoint.localPointOther; + result.pointA = contactPoint.point; + result.pointB = contactPoint.pointOther; + result.normal = contactPoint.normal; + result.impulse = contactPoint.impulse; + return result; + } + _createContactResult(other, contacts) { + const result = this.contactResultPool.allocate(); + result.other = other; + result.contacts = contacts; + return result; + } + _cleanOldCollisions() { + for (const guid2 in this.collisions) { + if (this.collisions.hasOwnProperty(guid2)) { + const frameCollision = this.frameCollisions[guid2]; + const collision = this.collisions[guid2]; + const entity = collision.entity; + const entityCollision = entity.collision; + const entityRigidbody = entity.rigidbody; + const others = collision.others; + const length = others.length; + let i = length; + while (i--) { + const other = others[i]; + if (!frameCollision || frameCollision.others.indexOf(other) < 0) { + others.splice(i, 1); + if (entity.trigger) { + if (entityCollision) { + entityCollision.fire("triggerleave", other); + } + if (other.rigidbody) { + other.rigidbody.fire("triggerleave", entity); + } + } else if (!other.trigger) { + if (entityRigidbody) { + entityRigidbody.fire("collisionend", other); + } + if (entityCollision) { + entityCollision.fire("collisionend", other); + } + } + } + } + if (others.length === 0) { + delete this.collisions[guid2]; + } + } + } + } + _hasContactEvent(entity) { + const c2 = entity.collision; + if (c2 && (c2.hasEvent("collisionstart") || c2.hasEvent("collisionend") || c2.hasEvent("contact"))) { + return true; + } + const r = entity.rigidbody; + return r && (r.hasEvent("collisionstart") || r.hasEvent("collisionend") || r.hasEvent("contact")); + } + _checkForCollisions(world, timeStep) { + const dynamicsWorld = Ammo.wrapPointer(world, Ammo.btDynamicsWorld); + const dispatcher = dynamicsWorld.getDispatcher(); + const numManifolds = dispatcher.getNumManifolds(); + this.frameCollisions = {}; + for (let i = 0; i < numManifolds; i++) { + const manifold = dispatcher.getManifoldByIndexInternal(i); + const body0 = manifold.getBody0(); + const body1 = manifold.getBody1(); + const wb0 = Ammo.castObject(body0, Ammo.btRigidBody); + const wb1 = Ammo.castObject(body1, Ammo.btRigidBody); + const e0 = wb0.entity; + const e1 = wb1.entity; + if (!e0 || !e1) { + continue; + } + const flags0 = wb0.getCollisionFlags(); + const flags1 = wb1.getCollisionFlags(); + const numContacts = manifold.getNumContacts(); + const forwardContacts = []; + const reverseContacts = []; + let newCollision; + if (numContacts > 0) { + if (flags0 & BODYFLAG_NORESPONSE_OBJECT || flags1 & BODYFLAG_NORESPONSE_OBJECT) { + const e0Events = e0.collision && (e0.collision.hasEvent("triggerenter") || e0.collision.hasEvent("triggerleave")); + const e1Events = e1.collision && (e1.collision.hasEvent("triggerenter") || e1.collision.hasEvent("triggerleave")); + const e0BodyEvents = e0.rigidbody && (e0.rigidbody.hasEvent("triggerenter") || e0.rigidbody.hasEvent("triggerleave")); + const e1BodyEvents = e1.rigidbody && (e1.rigidbody.hasEvent("triggerenter") || e1.rigidbody.hasEvent("triggerleave")); + if (e0Events) { + newCollision = this._storeCollision(e0, e1); + if (newCollision && !(flags1 & BODYFLAG_NORESPONSE_OBJECT)) { + e0.collision.fire("triggerenter", e1); + } + } + if (e1Events) { + newCollision = this._storeCollision(e1, e0); + if (newCollision && !(flags0 & BODYFLAG_NORESPONSE_OBJECT)) { + e1.collision.fire("triggerenter", e0); + } + } + if (e0BodyEvents) { + if (!newCollision) { + newCollision = this._storeCollision(e1, e0); + } + if (newCollision) { + e0.rigidbody.fire("triggerenter", e1); + } + } + if (e1BodyEvents) { + if (!newCollision) { + newCollision = this._storeCollision(e0, e1); + } + if (newCollision) { + e1.rigidbody.fire("triggerenter", e0); + } + } + } else { + const e0Events = this._hasContactEvent(e0); + const e1Events = this._hasContactEvent(e1); + const globalEvents = this.hasEvent("contact"); + if (globalEvents || e0Events || e1Events) { + for (let j = 0; j < numContacts; j++) { + const btContactPoint = manifold.getContactPoint(j); + const contactPoint = this._createContactPointFromAmmo(btContactPoint); + if (e0Events || e1Events) { + forwardContacts.push(contactPoint); + const reverseContactPoint = this._createReverseContactPointFromAmmo(btContactPoint); + reverseContacts.push(reverseContactPoint); + } + if (globalEvents) { + const result = this._createSingleContactResult(e0, e1, contactPoint); + this.fire("contact", result); + } + } + if (e0Events) { + const forwardResult = this._createContactResult(e1, forwardContacts); + newCollision = this._storeCollision(e0, e1); + if (e0.collision) { + e0.collision.fire("contact", forwardResult); + if (newCollision) { + e0.collision.fire("collisionstart", forwardResult); + } + } + if (e0.rigidbody) { + e0.rigidbody.fire("contact", forwardResult); + if (newCollision) { + e0.rigidbody.fire("collisionstart", forwardResult); + } + } + } + if (e1Events) { + const reverseResult = this._createContactResult(e0, reverseContacts); + newCollision = this._storeCollision(e1, e0); + if (e1.collision) { + e1.collision.fire("contact", reverseResult); + if (newCollision) { + e1.collision.fire("collisionstart", reverseResult); + } + } + if (e1.rigidbody) { + e1.rigidbody.fire("contact", reverseResult); + if (newCollision) { + e1.rigidbody.fire("collisionstart", reverseResult); + } + } + } + } + } + } + } + this._cleanOldCollisions(); + this.contactPointPool.freeAll(); + this.contactResultPool.freeAll(); + this.singleContactResultPool.freeAll(); + } + onUpdate(dt) { + let i, len; + this._gravityFloat32[0] = this.gravity.x; + this._gravityFloat32[1] = this.gravity.y; + this._gravityFloat32[2] = this.gravity.z; + const gravity = this.dynamicsWorld.getGravity(); + if (gravity.x() !== this._gravityFloat32[0] || gravity.y() !== this._gravityFloat32[1] || gravity.z() !== this._gravityFloat32[2]) { + gravity.setValue(this.gravity.x, this.gravity.y, this.gravity.z); + this.dynamicsWorld.setGravity(gravity); + } + const triggers = this._triggers; + for (i = 0, len = triggers.length; i < len; i++) { + triggers[i].updateTransform(); + } + const compounds = this._compounds; + for (i = 0, len = compounds.length; i < len; i++) { + compounds[i]._updateCompound(); + } + const kinematic = this._kinematic; + for (i = 0, len = kinematic.length; i < len; i++) { + kinematic[i]._updateKinematic(); + } + this.dynamicsWorld.stepSimulation(dt, this.maxSubSteps, this.fixedTimeStep); + const dynamic = this._dynamic; + for (i = 0, len = dynamic.length; i < len; i++) { + dynamic[i]._updateDynamic(); + } + if (!this.dynamicsWorld.setInternalTickCallback) this._checkForCollisions(Ammo.getPointer(this.dynamicsWorld), dt); + } + destroy() { + super.destroy(); + this.app.systems.off("update", this.onUpdate, this); + if (typeof Ammo !== "undefined") { + Ammo.destroy(this.dynamicsWorld); + Ammo.destroy(this.solver); + Ammo.destroy(this.overlappingPairCache); + Ammo.destroy(this.dispatcher); + Ammo.destroy(this.collisionConfiguration); + this.dynamicsWorld = null; + this.solver = null; + this.overlappingPairCache = null; + this.dispatcher = null; + this.collisionConfiguration = null; + } + } +}; +RigidBodyComponentSystem.EVENT_CONTACT = "contact"; +Component._buildAccessors(RigidBodyComponent.prototype, _schema6); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/sound/slot.js +var instanceOptions = { + volume: 0, + pitch: 0, + loop: false, + startTime: 0, + duration: 0, + position: new Vec3(), + maxDistance: 0, + refDistance: 0, + rollOffFactor: 0, + distanceModel: 0, + onPlay: null, + onPause: null, + onResume: null, + onStop: null, + onEnd: null +}; +var SoundSlot = class extends EventHandler { + constructor(component, name = "Untitled", options = {}) { + super(); + this.name = void 0; + this.instances = []; + this._component = component; + this._assets = component.system.app.assets; + this._manager = component.system.manager; + this.name = name; + this._volume = options.volume !== void 0 ? math.clamp(Number(options.volume) || 0, 0, 1) : 1; + this._pitch = options.pitch !== void 0 ? Math.max(0.01, Number(options.pitch) || 0) : 1; + this._loop = !!(options.loop !== void 0 ? options.loop : false); + this._duration = options.duration > 0 ? options.duration : null; + this._startTime = Math.max(0, Number(options.startTime) || 0); + this._overlap = !!options.overlap; + this._autoPlay = !!options.autoPlay; + this._firstNode = null; + this._lastNode = null; + this._asset = options.asset; + if (this._asset instanceof Asset) { + this._asset = this._asset.id; + } + this._onInstancePlayHandler = this._onInstancePlay.bind(this); + this._onInstancePauseHandler = this._onInstancePause.bind(this); + this._onInstanceResumeHandler = this._onInstanceResume.bind(this); + this._onInstanceStopHandler = this._onInstanceStop.bind(this); + this._onInstanceEndHandler = this._onInstanceEnd.bind(this); + } + play() { + if (!this.overlap) { + this.stop(); + } + if (!this.isLoaded && !this._hasAsset()) { + return void 0; + } + const instance = this._createInstance(); + this.instances.push(instance); + if (!this.isLoaded) { + const onLoad = function onLoad2(sound) { + const playWhenLoaded = instance._playWhenLoaded; + instance.sound = sound; + if (playWhenLoaded) { + instance.play(); + } + }; + this.off("load", onLoad); + this.once("load", onLoad); + this.load(); + } else { + instance.play(); + } + return instance; + } + pause() { + let paused = false; + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + if (instances[i].pause()) { + paused = true; + } + } + return paused; + } + resume() { + let resumed = false; + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + if (instances[i].resume()) resumed = true; + } + return resumed; + } + stop() { + let stopped = false; + const instances = this.instances; + let i = instances.length; + while (i--) { + instances[i].stop(); + stopped = true; + } + instances.length = 0; + return stopped; + } + load() { + if (!this._hasAsset()) return; + const asset2 = this._assets.get(this._asset); + if (!asset2) { + this._assets.off("add:" + this._asset, this._onAssetAdd, this); + this._assets.once("add:" + this._asset, this._onAssetAdd, this); + return; + } + asset2.off("remove", this._onAssetRemoved, this); + asset2.on("remove", this._onAssetRemoved, this); + if (!asset2.resource) { + asset2.off("load", this._onAssetLoad, this); + asset2.once("load", this._onAssetLoad, this); + this._assets.load(asset2); + return; + } + this.fire("load", asset2.resource); + } + setExternalNodes(firstNode, lastNode) { + if (!firstNode) { + console.error("The firstNode must have a valid AudioNode"); + return; + } + if (!lastNode) { + lastNode = firstNode; + } + this._firstNode = firstNode; + this._lastNode = lastNode; + if (!this._overlap) { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i].setExternalNodes(firstNode, lastNode); + } + } + } + clearExternalNodes() { + this._firstNode = null; + this._lastNode = null; + if (!this._overlap) { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i].clearExternalNodes(); + } + } + } + getExternalNodes() { + return [this._firstNode, this._lastNode]; + } + _hasAsset() { + return this._asset != null; + } + _createInstance() { + let instance = null; + const component = this._component; + let sound = null; + if (this._hasAsset()) { + const asset2 = this._assets.get(this._asset); + if (asset2) { + sound = asset2.resource; + } + } + const data2 = instanceOptions; + data2.volume = this._volume * component.volume; + data2.pitch = this._pitch * component.pitch; + data2.loop = this._loop; + data2.startTime = this._startTime; + data2.duration = this._duration; + data2.onPlay = this._onInstancePlayHandler; + data2.onPause = this._onInstancePauseHandler; + data2.onResume = this._onInstanceResumeHandler; + data2.onStop = this._onInstanceStopHandler; + data2.onEnd = this._onInstanceEndHandler; + if (component.positional) { + data2.position.copy(component.entity.getPosition()); + data2.maxDistance = component.maxDistance; + data2.refDistance = component.refDistance; + data2.rollOffFactor = component.rollOffFactor; + data2.distanceModel = component.distanceModel; + instance = new SoundInstance3d(this._manager, sound, data2); + } else { + instance = new SoundInstance(this._manager, sound, data2); + } + if (this._firstNode) { + instance.setExternalNodes(this._firstNode, this._lastNode); + } + return instance; + } + _onInstancePlay(instance) { + this.fire("play", instance); + this._component.fire("play", this, instance); + } + _onInstancePause(instance) { + this.fire("pause", instance); + this._component.fire("pause", this, instance); + } + _onInstanceResume(instance) { + this.fire("resume", instance); + this._component.fire("resume", this, instance); + } + _onInstanceStop(instance) { + const idx = this.instances.indexOf(instance); + if (idx !== -1) { + this.instances.splice(idx, 1); + } + this.fire("stop", instance); + this._component.fire("stop", this, instance); + } + _onInstanceEnd(instance) { + const idx = this.instances.indexOf(instance); + if (idx !== -1) { + this.instances.splice(idx, 1); + } + this.fire("end", instance); + this._component.fire("end", this, instance); + } + _onAssetAdd(asset2) { + this.load(); + } + _onAssetLoad(asset2) { + this.load(); + } + _onAssetRemoved(asset2) { + asset2.off("remove", this._onAssetRemoved, this); + this._assets.off("add:" + asset2.id, this._onAssetAdd, this); + this.stop(); + } + updatePosition(position2) { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i].position = position2; + } + } + set asset(value) { + const old = this._asset; + if (old) { + this._assets.off("add:" + old, this._onAssetAdd, this); + const oldAsset = this._assets.get(old); + if (oldAsset) { + oldAsset.off("remove", this._onAssetRemoved, this); + } + } + this._asset = value; + if (this._asset instanceof Asset) { + this._asset = this._asset.id; + } + if (this._hasAsset() && this._component.enabled && this._component.entity.enabled) { + this.load(); + } + } + get asset() { + return this._asset; + } + set autoPlay(value) { + this._autoPlay = !!value; + } + get autoPlay() { + return this._autoPlay; + } + set duration(value) { + this._duration = Math.max(0, Number(value) || 0) || null; + if (!this._overlap) { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i].duration = this._duration; + } + } + } + get duration() { + let assetDuration = 0; + if (this._hasAsset()) { + const asset2 = this._assets.get(this._asset); + assetDuration = asset2 != null && asset2.resource ? asset2.resource.duration : 0; + } + if (this._duration != null) { + return this._duration % (assetDuration || 1); + } + return assetDuration; + } + get isLoaded() { + if (this._hasAsset()) { + const asset2 = this._assets.get(this._asset); + if (asset2) { + return !!asset2.resource; + } + } + return false; + } + get isPaused() { + const instances = this.instances; + const len = instances.length; + if (len === 0) return false; + for (let i = 0; i < len; i++) { + if (!instances[i].isPaused) return false; + } + return true; + } + get isPlaying() { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + if (instances[i].isPlaying) return true; + } + return false; + } + get isStopped() { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + if (!instances[i].isStopped) return false; + } + return true; + } + set loop(value) { + this._loop = !!value; + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i].loop = this._loop; + } + } + get loop() { + return this._loop; + } + set overlap(value) { + this._overlap = !!value; + } + get overlap() { + return this._overlap; + } + set pitch(value) { + this._pitch = Math.max(Number(value) || 0, 0.01); + if (!this._overlap) { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i].pitch = this.pitch * this._component.pitch; + } + } + } + get pitch() { + return this._pitch; + } + set startTime(value) { + this._startTime = Math.max(0, Number(value) || 0); + if (!this._overlap) { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i].startTime = this._startTime; + } + } + } + get startTime() { + return this._startTime; + } + set volume(value) { + this._volume = math.clamp(Number(value) || 0, 0, 1); + if (!this._overlap) { + const instances = this.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i].volume = this._volume * this._component.volume; + } + } + } + get volume() { + return this._volume; + } +}; +SoundSlot.EVENT_PLAY = "play"; +SoundSlot.EVENT_PAUSE = "pause"; +SoundSlot.EVENT_RESUME = "resume"; +SoundSlot.EVENT_STOP = "stop"; +SoundSlot.EVENT_LOAD = "load"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/sound/component.js +var SoundComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + this._volume = 1; + this._pitch = 1; + this._positional = true; + this._refDistance = 1; + this._maxDistance = 1e4; + this._rollOffFactor = 1; + this._distanceModel = DISTANCE_LINEAR; + this._slots = {}; + this._playingBeforeDisable = {}; + } + _updateSoundInstances(property, value, isFactor) { + const slots = this._slots; + for (const key in slots) { + const slot = slots[key]; + if (!slot.overlap) { + const instances = slot.instances; + for (let i = 0, len = instances.length; i < len; i++) { + instances[i][property] = isFactor ? slot[property] * value : value; + } + } + } + } + set distanceModel(value) { + this._distanceModel = value; + this._updateSoundInstances("distanceModel", value, false); + } + get distanceModel() { + return this._distanceModel; + } + set maxDistance(value) { + this._maxDistance = value; + this._updateSoundInstances("maxDistance", value, false); + } + get maxDistance() { + return this._maxDistance; + } + set refDistance(value) { + this._refDistance = value; + this._updateSoundInstances("refDistance", value, false); + } + get refDistance() { + return this._refDistance; + } + set rollOffFactor(value) { + this._rollOffFactor = value; + this._updateSoundInstances("rollOffFactor", value, false); + } + get rollOffFactor() { + return this._rollOffFactor; + } + set pitch(value) { + this._pitch = value; + this._updateSoundInstances("pitch", value, true); + } + get pitch() { + return this._pitch; + } + set volume(value) { + this._volume = value; + this._updateSoundInstances("volume", value, true); + } + get volume() { + return this._volume; + } + set positional(newValue) { + this._positional = newValue; + const slots = this._slots; + for (const key in slots) { + const slot = slots[key]; + if (!slot.overlap) { + const instances = slot.instances; + const oldLength = instances.length; + for (let i = oldLength - 1; i >= 0; i--) { + const isPlaying = instances[i].isPlaying || instances[i].isSuspended; + const currentTime = instances[i].currentTime; + if (isPlaying) instances[i].stop(); + const instance = slot._createInstance(); + if (isPlaying) { + instance.play(); + instance.currentTime = currentTime; + } + instances.push(instance); + } + } + } + } + get positional() { + return this._positional; + } + set slots(newValue) { + const oldValue = this._slots; + if (oldValue) { + for (const key in oldValue) { + oldValue[key].stop(); + } + } + const slots = {}; + for (const key in newValue) { + if (!(newValue[key] instanceof SoundSlot)) { + if (newValue[key].name) { + slots[newValue[key].name] = new SoundSlot(this, newValue[key].name, newValue[key]); + } + } else { + slots[newValue[key].name] = newValue[key]; + } + } + this._slots = slots; + if (this.enabled && this.entity.enabled) this.onEnable(); + } + get slots() { + return this._slots; + } + onEnable() { + if (this.system._inTools) { + return; + } + const slots = this._slots; + const playingBeforeDisable = this._playingBeforeDisable; + for (const key in slots) { + const slot = slots[key]; + if (slot.autoPlay && slot.isStopped) { + slot.play(); + } else if (playingBeforeDisable[key]) { + slot.resume(); + } else if (!slot.isLoaded) { + slot.load(); + } + } + } + onDisable() { + const slots = this._slots; + const playingBeforeDisable = {}; + for (const key in slots) { + if (!slots[key].overlap) { + if (slots[key].isPlaying) { + slots[key].pause(); + playingBeforeDisable[key] = true; + } + } + } + this._playingBeforeDisable = playingBeforeDisable; + } + onRemove() { + this.off(); + } + addSlot(name, options) { + const slots = this._slots; + if (slots[name]) { + return null; + } + const slot = new SoundSlot(this, name, options); + slots[name] = slot; + if (slot.autoPlay && this.enabled && this.entity.enabled) { + slot.play(); + } + return slot; + } + removeSlot(name) { + const slots = this._slots; + if (slots[name]) { + slots[name].stop(); + delete slots[name]; + } + } + slot(name) { + return this._slots[name]; + } + _getSlotProperty(name, property) { + if (!this.enabled || !this.entity.enabled) { + return void 0; + } + const slot = this._slots[name]; + if (!slot) { + return void 0; + } + return slot[property]; + } + isPlaying(name) { + return this._getSlotProperty(name, "isPlaying") || false; + } + isLoaded(name) { + return this._getSlotProperty(name, "isLoaded") || false; + } + isPaused(name) { + return this._getSlotProperty(name, "isPaused") || false; + } + isStopped(name) { + return this._getSlotProperty(name, "isStopped") || false; + } + play(name) { + if (!this.enabled || !this.entity.enabled) { + return null; + } + const slot = this._slots[name]; + if (!slot) { + return null; + } + return slot.play(); + } + pause(name) { + const slots = this._slots; + if (name) { + const slot = slots[name]; + if (!slot) { + return; + } + slot.pause(); + } else { + for (const key in slots) { + slots[key].pause(); + } + } + } + resume(name) { + const slots = this._slots; + if (name) { + const slot = slots[name]; + if (!slot) { + return; + } + if (slot.isPaused) { + slot.resume(); + } + } else { + for (const key in slots) { + slots[key].resume(); + } + } + } + stop(name) { + const slots = this._slots; + if (name) { + const slot = slots[name]; + if (!slot) { + return; + } + slot.stop(); + } else { + for (const key in slots) { + slots[key].stop(); + } + } + } +}; +SoundComponent.EVENT_PLAY = "play"; +SoundComponent.EVENT_PAUSE = "pause"; +SoundComponent.EVENT_RESUME = "resume"; +SoundComponent.EVENT_STOP = "stop"; +SoundComponent.EVENT_END = "end"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/sound/data.js +var SoundComponentData = class { + constructor() { + this.enabled = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/sound/system.js +var _schema7 = ["enabled"]; +var SoundComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.id = "sound"; + this.ComponentType = SoundComponent; + this.DataType = SoundComponentData; + this.schema = _schema7; + this.manager = app2.soundManager; + this.app.systems.on("update", this.onUpdate, this); + this.on("beforeremove", this.onBeforeRemove, this); + } + set volume(volume) { + this.manager.volume = volume; + } + get volume() { + return this.manager.volume; + } + get context() { + if (!hasAudioContext()) { + return null; + } + return this.manager.context; + } + initializeComponentData(component, data2, properties2) { + properties2 = ["volume", "pitch", "positional", "refDistance", "maxDistance", "rollOffFactor", "distanceModel", "slots"]; + for (let i = 0; i < properties2.length; i++) { + if (data2.hasOwnProperty(properties2[i])) { + component[properties2[i]] = data2[properties2[i]]; + } + } + super.initializeComponentData(component, data2, ["enabled"]); + } + cloneComponent(entity, clone) { + const srcComponent = entity.sound; + const srcSlots = srcComponent.slots; + const slots = {}; + for (const key in srcSlots) { + const srcSlot = srcSlots[key]; + slots[key] = { + name: srcSlot.name, + volume: srcSlot.volume, + pitch: srcSlot.pitch, + loop: srcSlot.loop, + duration: srcSlot.duration, + startTime: srcSlot.startTime, + overlap: srcSlot.overlap, + autoPlay: srcSlot.autoPlay, + asset: srcSlot.asset + }; + } + const cloneData = { + distanceModel: srcComponent.distanceModel, + enabled: srcComponent.enabled, + maxDistance: srcComponent.maxDistance, + pitch: srcComponent.pitch, + positional: srcComponent.positional, + refDistance: srcComponent.refDistance, + rollOffFactor: srcComponent.rollOffFactor, + slots, + volume: srcComponent.volume + }; + return this.addComponent(clone, cloneData); + } + onUpdate(dt) { + const store = this.store; + for (const id12 in store) { + if (store.hasOwnProperty(id12)) { + const item = store[id12]; + const entity = item.entity; + if (entity.enabled) { + const component = entity.sound; + if (component.enabled && component.positional) { + const position2 = entity.getPosition(); + const slots = component.slots; + for (const key in slots) { + slots[key].updatePosition(position2); + } + } + } + } + } + } + onBeforeRemove(entity, component) { + const slots = component.slots; + for (const key in slots) { + if (!slots[key].overlap) { + slots[key].stop(); + } + } + component.onRemove(); + } + destroy() { + super.destroy(); + this.app.systems.off("update", this.onUpdate, this); + } +}; +Component._buildAccessors(SoundComponent.prototype, _schema7); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/camera/post-effect-queue.js +var PostEffectEntry = class { + constructor(effect, inputTarget) { + this.effect = effect; + this.inputTarget = inputTarget; + this.outputTarget = null; + this.name = effect.constructor.name; + } +}; +var PostEffectQueue = class { + constructor(app2, camera) { + this.app = app2; + this.camera = camera; + this.destinationRenderTarget = null; + this.effects = []; + this.enabled = false; + this.depthTarget = null; + camera.on("set:rect", this.onCameraRectChanged, this); + } + _allocateColorBuffer(format, name) { + var _renderTarget$width, _renderTarget$height; + const rect = this.camera.rect; + const renderTarget = this.destinationRenderTarget; + const device = this.app.graphicsDevice; + const width = Math.floor(rect.z * ((_renderTarget$width = renderTarget == null ? void 0 : renderTarget.width) != null ? _renderTarget$width : device.width)); + const height = Math.floor(rect.w * ((_renderTarget$height = renderTarget == null ? void 0 : renderTarget.height) != null ? _renderTarget$height : device.height)); + const colorBuffer = new Texture(device, { + name, + format, + width, + height, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + return colorBuffer; + } + _createOffscreenTarget(useDepth, hdr) { + const device = this.app.graphicsDevice; + const format = hdr && device.getRenderableHdrFormat([PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F], true) || PIXELFORMAT_RGBA8; + const name = this.camera.entity.name + "-posteffect-" + this.effects.length; + const colorBuffer = this._allocateColorBuffer(format, name); + return new RenderTarget({ + colorBuffer, + depth: useDepth, + stencil: useDepth && this.app.graphicsDevice.supportsStencil, + samples: useDepth ? device.samples : 1 + }); + } + _resizeOffscreenTarget(rt) { + const format = rt.colorBuffer.format; + const name = rt.colorBuffer.name; + rt.destroyFrameBuffers(); + rt.destroyTextureBuffers(); + rt._colorBuffer = this._allocateColorBuffer(format, name); + rt._colorBuffers = [rt._colorBuffer]; + } + _destroyOffscreenTarget(rt) { + rt.destroyTextureBuffers(); + rt.destroy(); + } + addEffect(effect) { + const effects = this.effects; + const isFirstEffect = effects.length === 0; + const inputTarget = this._createOffscreenTarget(isFirstEffect, effect.hdr); + const newEntry = new PostEffectEntry(effect, inputTarget); + effects.push(newEntry); + this._sourceTarget = newEntry.inputTarget; + if (effects.length > 1) { + effects[effects.length - 2].outputTarget = newEntry.inputTarget; + } + this._newPostEffect = effect; + if (effect.needsDepthBuffer) { + this._requestDepthMap(); + } + this.enable(); + this._newPostEffect = void 0; + } + removeEffect(effect) { + let index = -1; + for (let i = 0, len = this.effects.length; i < len; i++) { + if (this.effects[i].effect === effect) { + index = i; + break; + } + } + if (index >= 0) { + if (index > 0) { + this.effects[index - 1].outputTarget = index + 1 < this.effects.length ? this.effects[index + 1].inputTarget : null; + } else { + if (this.effects.length > 1) { + if (!this.effects[1].inputTarget._depth) { + this._destroyOffscreenTarget(this.effects[1].inputTarget); + this.effects[1].inputTarget = this._createOffscreenTarget(true, this.effects[1].hdr); + this._sourceTarget = this.effects[1].inputTarget; + } + this.camera.renderTarget = this.effects[1].inputTarget; + } + } + this._destroyOffscreenTarget(this.effects[index].inputTarget); + this.effects.splice(index, 1); + } + if (this.enabled) { + if (effect.needsDepthBuffer) { + this._releaseDepthMap(); + } + } + if (this.effects.length === 0) { + this.disable(); + } + } + _requestDepthMaps() { + for (let i = 0, len = this.effects.length; i < len; i++) { + const effect = this.effects[i].effect; + if (this._newPostEffect === effect) continue; + if (effect.needsDepthBuffer) { + this._requestDepthMap(); + } + } + } + _releaseDepthMaps() { + for (let i = 0, len = this.effects.length; i < len; i++) { + const effect = this.effects[i].effect; + if (effect.needsDepthBuffer) { + this._releaseDepthMap(); + } + } + } + _requestDepthMap() { + const depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH); + if (depthLayer) { + depthLayer.incrementCounter(); + this.camera.requestSceneDepthMap(true); + } + } + _releaseDepthMap() { + const depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH); + if (depthLayer) { + depthLayer.decrementCounter(); + this.camera.requestSceneDepthMap(false); + } + } + destroy() { + for (let i = 0, len = this.effects.length; i < len; i++) { + this.effects[i].inputTarget.destroy(); + } + this.effects.length = 0; + this.disable(); + } + enable() { + if (!this.enabled && this.effects.length) { + this.enabled = true; + this._requestDepthMaps(); + this.app.graphicsDevice.on("resizecanvas", this._onCanvasResized, this); + this.destinationRenderTarget = this.camera.renderTarget; + this.camera.renderTarget = this.effects[0].inputTarget; + this.camera.onPostprocessing = () => { + if (this.enabled) { + let rect = null; + const len = this.effects.length; + if (len) { + for (let i = 0; i < len; i++) { + const fx = this.effects[i]; + let destTarget = fx.outputTarget; + if (i === len - 1) { + rect = this.camera.rect; + if (this.destinationRenderTarget) { + destTarget = this.destinationRenderTarget; + } + } + fx.effect.render(fx.inputTarget, destTarget, rect); + } + } + } + }; + } + } + disable() { + if (this.enabled) { + this.enabled = false; + this.app.graphicsDevice.off("resizecanvas", this._onCanvasResized, this); + this._releaseDepthMaps(); + this._destroyOffscreenTarget(this._sourceTarget); + this.camera.renderTarget = null; + this.camera.onPostprocessing = null; + } + } + _onCanvasResized(width, height) { + var _renderTarget$width2, _renderTarget$height2; + const rect = this.camera.rect; + const renderTarget = this.destinationRenderTarget; + width = (_renderTarget$width2 = renderTarget == null ? void 0 : renderTarget.width) != null ? _renderTarget$width2 : width; + height = (_renderTarget$height2 = renderTarget == null ? void 0 : renderTarget.height) != null ? _renderTarget$height2 : height; + this.camera.camera.aspectRatio = width * rect.z / (height * rect.w); + this.resizeRenderTargets(); + } + resizeRenderTargets() { + var _renderTarget$width3, _renderTarget$height3; + const device = this.app.graphicsDevice; + const renderTarget = this.destinationRenderTarget; + const width = (_renderTarget$width3 = renderTarget == null ? void 0 : renderTarget.width) != null ? _renderTarget$width3 : device.width; + const height = (_renderTarget$height3 = renderTarget == null ? void 0 : renderTarget.height) != null ? _renderTarget$height3 : device.height; + const rect = this.camera.rect; + const desiredWidth = Math.floor(rect.z * width); + const desiredHeight = Math.floor(rect.w * height); + const effects = this.effects; + for (let i = 0, len = effects.length; i < len; i++) { + const fx = effects[i]; + if (fx.inputTarget.width !== desiredWidth || fx.inputTarget.height !== desiredHeight) { + this._resizeOffscreenTarget(fx.inputTarget); + } + } + } + onCameraRectChanged(name, oldValue, newValue) { + if (this.enabled) { + this.resizeRenderTargets(); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/camera/component.js +var CameraComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + this.onPostprocessing = null; + this.onPreRender = null; + this.onPostRender = null; + this._renderSceneDepthMap = 0; + this._renderSceneColorMap = 0; + this._sceneDepthMapRequested = false; + this._sceneColorMapRequested = false; + this._priority = 0; + this._disablePostEffectsLayer = LAYERID_UI; + this._camera = new Camera(); + this._camera.node = entity; + this._postEffects = new PostEffectQueue(system.app, this); + } + setShaderPass(name) { + const shaderPass = ShaderPass.get(this.system.app.graphicsDevice); + const shaderPassInfo = name ? shaderPass.allocate(name, { + isForward: true + }) : null; + this._camera.shaderPassInfo = shaderPassInfo; + return shaderPassInfo.index; + } + getShaderPass() { + var _this$_camera$shaderP; + return (_this$_camera$shaderP = this._camera.shaderPassInfo) == null ? void 0 : _this$_camera$shaderP.name; + } + set renderPasses(passes) { + this._camera.renderPasses = passes; + } + get renderPasses() { + return this._camera.renderPasses; + } + set aperture(value) { + this._camera.aperture = value; + } + get aperture() { + return this._camera.aperture; + } + set aspectRatio(value) { + this._camera.aspectRatio = value; + } + get aspectRatio() { + return this._camera.aspectRatio; + } + set aspectRatioMode(value) { + this._camera.aspectRatioMode = value; + } + get aspectRatioMode() { + return this._camera.aspectRatioMode; + } + set calculateProjection(value) { + this._camera.calculateProjection = value; + } + get calculateProjection() { + return this._camera.calculateProjection; + } + set calculateTransform(value) { + this._camera.calculateTransform = value; + } + get calculateTransform() { + return this._camera.calculateTransform; + } + get camera() { + return this._camera; + } + set clearColor(value) { + this._camera.clearColor = value; + } + get clearColor() { + return this._camera.clearColor; + } + set clearColorBuffer(value) { + this._camera.clearColorBuffer = value; + this.dirtyLayerCompositionCameras(); + } + get clearColorBuffer() { + return this._camera.clearColorBuffer; + } + set clearDepthBuffer(value) { + this._camera.clearDepthBuffer = value; + this.dirtyLayerCompositionCameras(); + } + get clearDepthBuffer() { + return this._camera.clearDepthBuffer; + } + set clearStencilBuffer(value) { + this._camera.clearStencilBuffer = value; + this.dirtyLayerCompositionCameras(); + } + get clearStencilBuffer() { + return this._camera.clearStencilBuffer; + } + set cullFaces(value) { + this._camera.cullFaces = value; + } + get cullFaces() { + return this._camera.cullFaces; + } + set disablePostEffectsLayer(layer) { + this._disablePostEffectsLayer = layer; + this.dirtyLayerCompositionCameras(); + } + get disablePostEffectsLayer() { + return this._disablePostEffectsLayer; + } + set farClip(value) { + this._camera.farClip = value; + } + get farClip() { + return this._camera.farClip; + } + set flipFaces(value) { + this._camera.flipFaces = value; + } + get flipFaces() { + return this._camera.flipFaces; + } + set fov(value) { + this._camera.fov = value; + } + get fov() { + return this._camera.fov; + } + get frustum() { + return this._camera.frustum; + } + set frustumCulling(value) { + this._camera.frustumCulling = value; + } + get frustumCulling() { + return this._camera.frustumCulling; + } + set horizontalFov(value) { + this._camera.horizontalFov = value; + } + get horizontalFov() { + return this._camera.horizontalFov; + } + set layers(newValue) { + const layers = this._camera.layers; + for (let i = 0; i < layers.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(layers[i]); + if (!layer) continue; + layer.removeCamera(this); + } + this._camera.layers = newValue; + if (!this.enabled || !this.entity.enabled) return; + for (let i = 0; i < newValue.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(newValue[i]); + if (!layer) continue; + layer.addCamera(this); + } + } + get layers() { + return this._camera.layers; + } + get layersSet() { + return this._camera.layersSet; + } + set jitter(value) { + this._camera.jitter = value; + } + get jitter() { + return this._camera.jitter; + } + set nearClip(value) { + this._camera.nearClip = value; + } + get nearClip() { + return this._camera.nearClip; + } + set orthoHeight(value) { + this._camera.orthoHeight = value; + } + get orthoHeight() { + return this._camera.orthoHeight; + } + get postEffects() { + return this._postEffects; + } + get postEffectsEnabled() { + return this._postEffects.enabled; + } + set priority(newValue) { + this._priority = newValue; + this.dirtyLayerCompositionCameras(); + } + get priority() { + return this._priority; + } + set projection(value) { + this._camera.projection = value; + } + get projection() { + return this._camera.projection; + } + get projectionMatrix() { + return this._camera.projectionMatrix; + } + set rect(value) { + this._camera.rect = value; + this.fire("set:rect", this._camera.rect); + } + get rect() { + return this._camera.rect; + } + set renderSceneColorMap(value) { + if (value && !this._sceneColorMapRequested) { + this.requestSceneColorMap(true); + this._sceneColorMapRequested = true; + } else if (this._sceneColorMapRequested) { + this.requestSceneColorMap(false); + this._sceneColorMapRequested = false; + } + } + get renderSceneColorMap() { + return this._renderSceneColorMap > 0; + } + set renderSceneDepthMap(value) { + if (value && !this._sceneDepthMapRequested) { + this.requestSceneDepthMap(true); + this._sceneDepthMapRequested = true; + } else if (this._sceneDepthMapRequested) { + this.requestSceneDepthMap(false); + this._sceneDepthMapRequested = false; + } + } + get renderSceneDepthMap() { + return this._renderSceneDepthMap > 0; + } + set renderTarget(value) { + this._camera.renderTarget = value; + this.dirtyLayerCompositionCameras(); + } + get renderTarget() { + return this._camera.renderTarget; + } + set scissorRect(value) { + this._camera.scissorRect = value; + } + get scissorRect() { + return this._camera.scissorRect; + } + set sensitivity(value) { + this._camera.sensitivity = value; + } + get sensitivity() { + return this._camera.sensitivity; + } + set shutter(value) { + this._camera.shutter = value; + } + get shutter() { + return this._camera.shutter; + } + get viewMatrix() { + return this._camera.viewMatrix; + } + _enableDepthLayer(value) { + const hasDepthLayer = this.layers.find((layerId) => layerId === LAYERID_DEPTH); + if (hasDepthLayer) { + const depthLayer = this.system.app.scene.layers.getLayerById(LAYERID_DEPTH); + if (value) { + depthLayer == null || depthLayer.incrementCounter(); + } else { + depthLayer == null || depthLayer.decrementCounter(); + } + } else if (value) { + return false; + } + return true; + } + requestSceneColorMap(enabled) { + this._renderSceneColorMap += enabled ? 1 : -1; + this._enableDepthLayer(enabled); + this.camera._enableRenderPassColorGrab(this.system.app.graphicsDevice, this.renderSceneColorMap); + } + requestSceneDepthMap(enabled) { + this._renderSceneDepthMap += enabled ? 1 : -1; + this._enableDepthLayer(enabled); + this.camera._enableRenderPassDepthGrab(this.system.app.graphicsDevice, this.system.app.renderer, this.renderSceneDepthMap); + } + dirtyLayerCompositionCameras() { + const layerComp = this.system.app.scene.layers; + layerComp._dirty = true; + } + screenToWorld(screenx, screeny, cameraz, worldCoord) { + const device = this.system.app.graphicsDevice; + const w = device.clientRect.width; + const h = device.clientRect.height; + return this._camera.screenToWorld(screenx, screeny, cameraz, w, h, worldCoord); + } + worldToScreen(worldCoord, screenCoord) { + const device = this.system.app.graphicsDevice; + const w = device.clientRect.width; + const h = device.clientRect.height; + return this._camera.worldToScreen(worldCoord, w, h, screenCoord); + } + onAppPrerender() { + this._camera._viewMatDirty = true; + this._camera._viewProjMatDirty = true; + } + addCameraToLayers() { + const layers = this.layers; + for (let i = 0; i < layers.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(layers[i]); + if (layer) { + layer.addCamera(this); + } + } + } + removeCameraFromLayers() { + const layers = this.layers; + for (let i = 0; i < layers.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(layers[i]); + if (layer) { + layer.removeCamera(this); + } + } + } + onLayersChanged(oldComp, newComp) { + this.addCameraToLayers(); + oldComp.off("add", this.onLayerAdded, this); + oldComp.off("remove", this.onLayerRemoved, this); + newComp.on("add", this.onLayerAdded, this); + newComp.on("remove", this.onLayerRemoved, this); + } + onLayerAdded(layer) { + const index = this.layers.indexOf(layer.id); + if (index < 0) return; + layer.addCamera(this); + } + onLayerRemoved(layer) { + const index = this.layers.indexOf(layer.id); + if (index < 0) return; + layer.removeCamera(this); + } + onEnable() { + const system = this.system; + const scene2 = system.app.scene; + const layers = scene2.layers; + system.addCamera(this); + scene2.on("set:layers", this.onLayersChanged, this); + if (layers) { + layers.on("add", this.onLayerAdded, this); + layers.on("remove", this.onLayerRemoved, this); + } + if (this.enabled && this.entity.enabled) { + this.addCameraToLayers(); + } + this.postEffects.enable(); + } + onDisable() { + const system = this.system; + const scene2 = system.app.scene; + const layers = scene2.layers; + this.postEffects.disable(); + this.removeCameraFromLayers(); + scene2.off("set:layers", this.onLayersChanged, this); + if (layers) { + layers.off("add", this.onLayerAdded, this); + layers.off("remove", this.onLayerRemoved, this); + } + system.removeCamera(this); + } + onRemove() { + this.onDisable(); + this.off(); + this.camera.destroy(); + } + calculateAspectRatio(rt) { + const device = this.system.app.graphicsDevice; + const width = rt ? rt.width : device.width; + const height = rt ? rt.height : device.height; + return width * this.rect.z / (height * this.rect.w); + } + frameUpdate(rt) { + if (this.aspectRatioMode === ASPECT_AUTO) { + this.aspectRatio = this.calculateAspectRatio(rt); + } + } + startXr(type2, spaceType, options) { + this.system.app.xr.start(this, type2, spaceType, options); + } + endXr(callback) { + if (!this._camera.xr) { + if (callback) callback(new Error("Camera is not in XR")); + return; + } + this._camera.xr.end(callback); + } + copy(source) { + this.aperture = source.aperture; + this.aspectRatio = source.aspectRatio; + this.aspectRatioMode = source.aspectRatioMode; + this.calculateProjection = source.calculateProjection; + this.calculateTransform = source.calculateTransform; + this.clearColor = source.clearColor; + this.clearColorBuffer = source.clearColorBuffer; + this.clearDepthBuffer = source.clearDepthBuffer; + this.clearStencilBuffer = source.clearStencilBuffer; + this.cullFaces = source.cullFaces; + this.disablePostEffectsLayer = source.disablePostEffectsLayer; + this.farClip = source.farClip; + this.flipFaces = source.flipFaces; + this.fov = source.fov; + this.frustumCulling = source.frustumCulling; + this.horizontalFov = source.horizontalFov; + this.layers = source.layers; + this.nearClip = source.nearClip; + this.orthoHeight = source.orthoHeight; + this.priority = source.priority; + this.projection = source.projection; + this.rect = source.rect; + this.renderTarget = source.renderTarget; + this.scissorRect = source.scissorRect; + this.sensitivity = source.sensitivity; + this.shutter = source.shutter; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/camera/data.js +var CameraComponentData = class { + constructor() { + this.enabled = true; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/camera/system.js +var _schema8 = ["enabled"]; +var CameraComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.cameras = []; + this.id = "camera"; + this.ComponentType = CameraComponent; + this.DataType = CameraComponentData; + this.schema = _schema8; + this.on("beforeremove", this.onBeforeRemove, this); + this.app.on("prerender", this.onAppPrerender, this); + this.app.systems.on("update", this.onUpdate, this); + } + initializeComponentData(component, data2, properties2) { + properties2 = ["aspectRatio", "aspectRatioMode", "calculateProjection", "calculateTransform", "clearColor", "clearColorBuffer", "clearDepthBuffer", "clearStencilBuffer", "renderSceneColorMap", "renderSceneDepthMap", "cullFaces", "farClip", "flipFaces", "fov", "frustumCulling", "horizontalFov", "layers", "renderTarget", "nearClip", "orthoHeight", "projection", "priority", "rect", "scissorRect", "aperture", "shutter", "sensitivity"]; + for (let i = 0; i < properties2.length; i++) { + const property = properties2[i]; + if (data2.hasOwnProperty(property)) { + const value = data2[property]; + switch (property) { + case "rect": + case "scissorRect": + if (Array.isArray(value)) { + component[property] = new Vec4(value[0], value[1], value[2], value[3]); + } else { + component[property] = value; + } + break; + case "clearColor": + if (Array.isArray(value)) { + component[property] = new Color(value[0], value[1], value[2], value[3]); + } else { + component[property] = value; + } + break; + default: + component[property] = value; + break; + } + } + } + super.initializeComponentData(component, data2, ["enabled"]); + } + cloneComponent(entity, clone) { + const c2 = entity.camera; + return this.addComponent(clone, { + aspectRatio: c2.aspectRatio, + aspectRatioMode: c2.aspectRatioMode, + calculateProjection: c2.calculateProjection, + calculateTransform: c2.calculateTransform, + clearColor: c2.clearColor, + clearColorBuffer: c2.clearColorBuffer, + clearDepthBuffer: c2.clearDepthBuffer, + clearStencilBuffer: c2.clearStencilBuffer, + renderSceneDepthMap: c2.renderSceneDepthMap, + renderSceneColorMap: c2.renderSceneColorMap, + cullFaces: c2.cullFaces, + enabled: c2.enabled, + farClip: c2.farClip, + flipFaces: c2.flipFaces, + fov: c2.fov, + frustumCulling: c2.frustumCulling, + horizontalFov: c2.horizontalFov, + layers: c2.layers, + renderTarget: c2.renderTarget, + nearClip: c2.nearClip, + orthoHeight: c2.orthoHeight, + projection: c2.projection, + priority: c2.priority, + rect: c2.rect, + scissorRect: c2.scissorRect, + aperture: c2.aperture, + sensitivity: c2.sensitivity, + shutter: c2.shutter + }); + } + onBeforeRemove(entity, component) { + this.removeCamera(component); + component.onRemove(); + } + onUpdate(dt) { + } + onAppPrerender() { + for (let i = 0, len = this.cameras.length; i < len; i++) { + this.cameras[i].onAppPrerender(); + } + } + addCamera(camera) { + this.cameras.push(camera); + sortPriority(this.cameras); + } + removeCamera(camera) { + const index = this.cameras.indexOf(camera); + if (index >= 0) { + this.cameras.splice(index, 1); + sortPriority(this.cameras); + } + } + destroy() { + super.destroy(); + this.app.systems.off("update", this.onUpdate, this); + } +}; +Component._buildAccessors(CameraComponent.prototype, _schema8); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/light/data.js +var LightComponentData = class { + constructor() { + this.enabled = true; + this.light = void 0; + this.type = "directional"; + this.color = new Color(1, 1, 1); + this.intensity = 1; + this.luminance = 0; + this.shape = LIGHTSHAPE_PUNCTUAL; + this.affectSpecularity = true; + this.castShadows = false; + this.shadowDistance = 40; + this.shadowIntensity = 1; + this.shadowResolution = 1024; + this.shadowBias = 0.05; + this.numCascades = 1; + this.bakeNumSamples = 1; + this.bakeArea = 0; + this.cascadeDistribution = 0.5; + this.normalOffsetBias = 0; + this.range = 10; + this.innerConeAngle = 40; + this.outerConeAngle = 45; + this.falloffMode = LIGHTFALLOFF_LINEAR; + this.shadowType = SHADOW_PCF3; + this.vsmBlurSize = 11; + this.vsmBlurMode = BLUR_GAUSSIAN; + this.vsmBias = 0.01 * 0.25; + this.cookieAsset = null; + this.cookie = null; + this.cookieIntensity = 1; + this.cookieFalloff = true; + this.cookieChannel = "rgb"; + this.cookieAngle = 0; + this.cookieScale = null; + this.cookieOffset = null; + this.shadowUpdateMode = SHADOWUPDATE_REALTIME; + this.mask = 1; + this.affectDynamic = true; + this.affectLightmapped = false; + this.bake = false; + this.bakeDir = true; + this.isStatic = false; + this.layers = [LAYERID_WORLD]; + this.penumbraSize = 1; + } +}; +var properties = Object.keys(new LightComponentData()); + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/light/component.js +var LightComponent = class extends Component { + constructor(system, entity) { + super(system, entity); + this._cookieAsset = null; + this._cookieAssetId = null; + this._cookieAssetAdd = false; + this._cookieMatrix = null; + } + get data() { + const record = this.system.store[this.entity.getGuid()]; + return record ? record.data : null; + } + set enabled(arg) { + this._setValue("enabled", arg, function(newValue, oldValue) { + this.onSetEnabled(null, oldValue, newValue); + }); + } + get enabled() { + return this.data.enabled; + } + set light(arg) { + this._setValue("light", arg); + } + get light() { + return this.data.light; + } + set type(arg) { + this._setValue("type", arg, function(newValue, oldValue) { + this.system.changeType(this, oldValue, newValue); + this.refreshProperties(); + }); + } + get type() { + return this.data.type; + } + set color(arg) { + this._setValue("color", arg, function(newValue, oldValue) { + this.light.setColor(newValue); + }, true); + } + get color() { + return this.data.color; + } + set intensity(arg) { + this._setValue("intensity", arg, function(newValue, oldValue) { + this.light.intensity = newValue; + }); + } + get intensity() { + return this.data.intensity; + } + set luminance(arg) { + this._setValue("luminance", arg, function(newValue, oldValue) { + this.light.luminance = newValue; + }); + } + get luminance() { + return this.data.luminance; + } + set shape(arg) { + this._setValue("shape", arg, function(newValue, oldValue) { + this.light.shape = newValue; + }); + } + get shape() { + return this.data.shape; + } + set affectSpecularity(arg) { + this._setValue("affectSpecularity", arg, function(newValue, oldValue) { + this.light.affectSpecularity = newValue; + }); + } + get affectSpecularity() { + return this.data.affectSpecularity; + } + set castShadows(arg) { + this._setValue("castShadows", arg, function(newValue, oldValue) { + this.light.castShadows = newValue; + }); + } + get castShadows() { + return this.data.castShadows; + } + set shadowDistance(arg) { + this._setValue("shadowDistance", arg, function(newValue, oldValue) { + this.light.shadowDistance = newValue; + }); + } + get shadowDistance() { + return this.data.shadowDistance; + } + set shadowIntensity(arg) { + this._setValue("shadowIntensity", arg, function(newValue, oldValue) { + this.light.shadowIntensity = newValue; + }); + } + get shadowIntensity() { + return this.data.shadowIntensity; + } + set shadowResolution(arg) { + this._setValue("shadowResolution", arg, function(newValue, oldValue) { + this.light.shadowResolution = newValue; + }); + } + get shadowResolution() { + return this.data.shadowResolution; + } + set shadowBias(arg) { + this._setValue("shadowBias", arg, function(newValue, oldValue) { + this.light.shadowBias = -0.01 * math.clamp(newValue, 0, 1); + }); + } + get shadowBias() { + return this.data.shadowBias; + } + set numCascades(arg) { + this._setValue("numCascades", arg, function(newValue, oldValue) { + this.light.numCascades = math.clamp(Math.floor(newValue), 1, 4); + }); + } + get numCascades() { + return this.data.numCascades; + } + set bakeNumSamples(arg) { + this._setValue("bakeNumSamples", arg, function(newValue, oldValue) { + this.light.bakeNumSamples = math.clamp(Math.floor(newValue), 1, 255); + }); + } + get bakeNumSamples() { + return this.data.bakeNumSamples; + } + set bakeArea(arg) { + this._setValue("bakeArea", arg, function(newValue, oldValue) { + this.light.bakeArea = math.clamp(newValue, 0, 180); + }); + } + get bakeArea() { + return this.data.bakeArea; + } + set cascadeDistribution(arg) { + this._setValue("cascadeDistribution", arg, function(newValue, oldValue) { + this.light.cascadeDistribution = math.clamp(newValue, 0, 1); + }); + } + get cascadeDistribution() { + return this.data.cascadeDistribution; + } + set normalOffsetBias(arg) { + this._setValue("normalOffsetBias", arg, function(newValue, oldValue) { + this.light.normalOffsetBias = math.clamp(newValue, 0, 1); + }); + } + get normalOffsetBias() { + return this.data.normalOffsetBias; + } + set range(arg) { + this._setValue("range", arg, function(newValue, oldValue) { + this.light.attenuationEnd = newValue; + }); + } + get range() { + return this.data.range; + } + set innerConeAngle(arg) { + this._setValue("innerConeAngle", arg, function(newValue, oldValue) { + this.light.innerConeAngle = newValue; + }); + } + get innerConeAngle() { + return this.data.innerConeAngle; + } + set outerConeAngle(arg) { + this._setValue("outerConeAngle", arg, function(newValue, oldValue) { + this.light.outerConeAngle = newValue; + }); + } + get outerConeAngle() { + return this.data.outerConeAngle; + } + set falloffMode(arg) { + this._setValue("falloffMode", arg, function(newValue, oldValue) { + this.light.falloffMode = newValue; + }); + } + get falloffMode() { + return this.data.falloffMode; + } + set shadowType(arg) { + this._setValue("shadowType", arg, function(newValue, oldValue) { + this.light.shadowType = newValue; + }); + } + get shadowType() { + return this.data.shadowType; + } + set vsmBlurSize(arg) { + this._setValue("vsmBlurSize", arg, function(newValue, oldValue) { + this.light.vsmBlurSize = newValue; + }); + } + get vsmBlurSize() { + return this.data.vsmBlurSize; + } + set vsmBlurMode(arg) { + this._setValue("vsmBlurMode", arg, function(newValue, oldValue) { + this.light.vsmBlurMode = newValue; + }); + } + get vsmBlurMode() { + return this.data.vsmBlurMode; + } + set vsmBias(arg) { + this._setValue("vsmBias", arg, function(newValue, oldValue) { + this.light.vsmBias = math.clamp(newValue, 0, 1); + }); + } + get vsmBias() { + return this.data.vsmBias; + } + set cookieAsset(arg) { + this._setValue("cookieAsset", arg, function(newValue, oldValue) { + if (this._cookieAssetId && (newValue instanceof Asset && newValue.id === this._cookieAssetId || newValue === this._cookieAssetId)) return; + this.onCookieAssetRemove(); + this._cookieAssetId = null; + if (newValue instanceof Asset) { + this.data.cookieAsset = newValue.id; + this._cookieAssetId = newValue.id; + this.onCookieAssetAdd(newValue); + } else if (typeof newValue === "number") { + this._cookieAssetId = newValue; + const asset2 = this.system.app.assets.get(newValue); + if (asset2) { + this.onCookieAssetAdd(asset2); + } else { + this._cookieAssetAdd = true; + this.system.app.assets.on("add:" + this._cookieAssetId, this.onCookieAssetAdd, this); + } + } + }); + } + get cookieAsset() { + return this.data.cookieAsset; + } + set cookie(arg) { + this._setValue("cookie", arg, function(newValue, oldValue) { + this.light.cookie = newValue; + }); + } + get cookie() { + return this.data.cookie; + } + set cookieIntensity(arg) { + this._setValue("cookieIntensity", arg, function(newValue, oldValue) { + this.light.cookieIntensity = math.clamp(newValue, 0, 1); + }); + } + get cookieIntensity() { + return this.data.cookieIntensity; + } + set cookieFalloff(arg) { + this._setValue("cookieFalloff", arg, function(newValue, oldValue) { + this.light.cookieFalloff = newValue; + }); + } + get cookieFalloff() { + return this.data.cookieFalloff; + } + set cookieChannel(arg) { + this._setValue("cookieChannel", arg, function(newValue, oldValue) { + this.light.cookieChannel = newValue; + }); + } + get cookieChannel() { + return this.data.cookieChannel; + } + set cookieAngle(arg) { + this._setValue("cookieAngle", arg, function(newValue, oldValue) { + if (newValue !== 0 || this.cookieScale !== null) { + if (!this._cookieMatrix) this._cookieMatrix = new Vec4(); + let scx = 1; + let scy = 1; + if (this.cookieScale) { + scx = this.cookieScale.x; + scy = this.cookieScale.y; + } + const c2 = Math.cos(newValue * math.DEG_TO_RAD); + const s = Math.sin(newValue * math.DEG_TO_RAD); + this._cookieMatrix.set(c2 / scx, -s / scx, s / scy, c2 / scy); + this.light.cookieTransform = this._cookieMatrix; + } else { + this.light.cookieTransform = null; + } + }); + } + get cookieAngle() { + return this.data.cookieAngle; + } + set cookieScale(arg) { + this._setValue("cookieScale", arg, function(newValue, oldValue) { + if (newValue !== null || this.cookieAngle !== 0) { + if (!this._cookieMatrix) this._cookieMatrix = new Vec4(); + const scx = newValue.x; + const scy = newValue.y; + const c2 = Math.cos(this.cookieAngle * math.DEG_TO_RAD); + const s = Math.sin(this.cookieAngle * math.DEG_TO_RAD); + this._cookieMatrix.set(c2 / scx, -s / scx, s / scy, c2 / scy); + this.light.cookieTransform = this._cookieMatrix; + } else { + this.light.cookieTransform = null; + } + }, true); + } + get cookieScale() { + return this.data.cookieScale; + } + set cookieOffset(arg) { + this._setValue("cookieOffset", arg, function(newValue, oldValue) { + this.light.cookieOffset = newValue; + }, true); + } + get cookieOffset() { + return this.data.cookieOffset; + } + set shadowUpdateMode(arg) { + this._setValue("shadowUpdateMode", arg, function(newValue, oldValue) { + this.light.shadowUpdateMode = newValue; + }, true); + } + get shadowUpdateMode() { + return this.data.shadowUpdateMode; + } + set mask(arg) { + this._setValue("mask", arg, function(newValue, oldValue) { + this.light.mask = newValue; + }); + } + get mask() { + return this.data.mask; + } + set affectDynamic(arg) { + this._setValue("affectDynamic", arg, function(newValue, oldValue) { + if (newValue) { + this.light.mask |= MASK_AFFECT_DYNAMIC; + } else { + this.light.mask &= ~MASK_AFFECT_DYNAMIC; + } + this.light.layersDirty(); + }); + } + get affectDynamic() { + return this.data.affectDynamic; + } + set affectLightmapped(arg) { + this._setValue("affectLightmapped", arg, function(newValue, oldValue) { + if (newValue) { + this.light.mask |= MASK_AFFECT_LIGHTMAPPED; + if (this.bake) this.light.mask &= ~MASK_BAKE; + } else { + this.light.mask &= ~MASK_AFFECT_LIGHTMAPPED; + if (this.bake) this.light.mask |= MASK_BAKE; + } + }); + } + get affectLightmapped() { + return this.data.affectLightmapped; + } + set bake(arg) { + this._setValue("bake", arg, function(newValue, oldValue) { + if (newValue) { + this.light.mask |= MASK_BAKE; + if (this.affectLightmapped) this.light.mask &= ~MASK_AFFECT_LIGHTMAPPED; + } else { + this.light.mask &= ~MASK_BAKE; + if (this.affectLightmapped) this.light.mask |= MASK_AFFECT_LIGHTMAPPED; + } + this.light.layersDirty(); + }); + } + get bake() { + return this.data.bake; + } + set bakeDir(arg) { + this._setValue("bakeDir", arg, function(newValue, oldValue) { + this.light.bakeDir = newValue; + }); + } + get bakeDir() { + return this.data.bakeDir; + } + set isStatic(arg) { + this._setValue("isStatic", arg, function(newValue, oldValue) { + this.light.isStatic = newValue; + }); + } + get isStatic() { + return this.data.isStatic; + } + set layers(arg) { + this._setValue("layers", arg, function(newValue, oldValue) { + for (let i = 0; i < oldValue.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(oldValue[i]); + if (!layer) continue; + layer.removeLight(this); + this.light.removeLayer(layer); + } + for (let i = 0; i < newValue.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(newValue[i]); + if (!layer) continue; + if (this.enabled && this.entity.enabled) { + layer.addLight(this); + this.light.addLayer(layer); + } + } + }); + } + get layers() { + return this.data.layers; + } + set shadowUpdateOverrides(values) { + this.light.shadowUpdateOverrides = values; + } + get shadowUpdateOverrides() { + return this.light.shadowUpdateOverrides; + } + set penumbraSize(value) { + this.light.penumbraSize = value; + } + get penumbraSize() { + return this.light.penumbraSize; + } + _setValue(name, value, setFunc, skipEqualsCheck) { + const data2 = this.data; + const oldValue = data2[name]; + if (!skipEqualsCheck && oldValue === value) return; + data2[name] = value; + if (setFunc) setFunc.call(this, value, oldValue); + } + addLightToLayers() { + for (let i = 0; i < this.layers.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(this.layers[i]); + if (layer) { + layer.addLight(this); + this.light.addLayer(layer); + } + } + } + removeLightFromLayers() { + for (let i = 0; i < this.layers.length; i++) { + const layer = this.system.app.scene.layers.getLayerById(this.layers[i]); + if (layer) { + layer.removeLight(this); + this.light.removeLayer(layer); + } + } + } + onLayersChanged(oldComp, newComp) { + if (this.enabled && this.entity.enabled) { + this.addLightToLayers(); + } + oldComp.off("add", this.onLayerAdded, this); + oldComp.off("remove", this.onLayerRemoved, this); + newComp.on("add", this.onLayerAdded, this); + newComp.on("remove", this.onLayerRemoved, this); + } + onLayerAdded(layer) { + const index = this.layers.indexOf(layer.id); + if (index >= 0 && this.enabled && this.entity.enabled) { + layer.addLight(this); + this.light.addLayer(layer); + } + } + onLayerRemoved(layer) { + const index = this.layers.indexOf(layer.id); + if (index >= 0) { + layer.removeLight(this); + this.light.removeLayer(layer); + } + } + refreshProperties() { + for (let i = 0; i < properties.length; i++) { + const name = properties[i]; + this[name] = this[name]; + } + if (this.enabled && this.entity.enabled) { + this.onEnable(); + } + } + onCookieAssetSet() { + let forceLoad = false; + if (this._cookieAsset.type === "cubemap" && !this._cookieAsset.loadFaces) { + this._cookieAsset.loadFaces = true; + forceLoad = true; + } + if (!this._cookieAsset.resource || forceLoad) this.system.app.assets.load(this._cookieAsset); + if (this._cookieAsset.resource) { + this.onCookieAssetLoad(); + } + } + onCookieAssetAdd(asset2) { + if (this._cookieAssetId !== asset2.id) return; + this._cookieAsset = asset2; + if (this.light.enabled) { + this.onCookieAssetSet(); + } + this._cookieAsset.on("load", this.onCookieAssetLoad, this); + this._cookieAsset.on("remove", this.onCookieAssetRemove, this); + } + onCookieAssetLoad() { + if (!this._cookieAsset || !this._cookieAsset.resource) { + return; + } + this.cookie = this._cookieAsset.resource; + } + onCookieAssetRemove() { + if (!this._cookieAssetId) { + return; + } + if (this._cookieAssetAdd) { + this.system.app.assets.off("add:" + this._cookieAssetId, this.onCookieAssetAdd, this); + this._cookieAssetAdd = false; + } + if (this._cookieAsset) { + this._cookieAsset.off("load", this.onCookieAssetLoad, this); + this._cookieAsset.off("remove", this.onCookieAssetRemove, this); + this._cookieAsset = null; + } + this.cookie = null; + } + onEnable() { + this.light.enabled = true; + this.system.app.scene.on("set:layers", this.onLayersChanged, this); + if (this.system.app.scene.layers) { + this.system.app.scene.layers.on("add", this.onLayerAdded, this); + this.system.app.scene.layers.on("remove", this.onLayerRemoved, this); + } + if (this.enabled && this.entity.enabled) { + this.addLightToLayers(); + } + if (this._cookieAsset && !this.cookie) { + this.onCookieAssetSet(); + } + } + onDisable() { + this.light.enabled = false; + this.system.app.scene.off("set:layers", this.onLayersChanged, this); + if (this.system.app.scene.layers) { + this.system.app.scene.layers.off("add", this.onLayerAdded, this); + this.system.app.scene.layers.off("remove", this.onLayerRemoved, this); + } + this.removeLightFromLayers(); + } + onRemove() { + this.onDisable(); + this.light.destroy(); + this.cookieAsset = null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/components/light/system.js +var LightComponentSystem = class extends ComponentSystem { + constructor(app2) { + super(app2); + this.id = "light"; + this.ComponentType = LightComponent; + this.DataType = LightComponentData; + this.on("beforeremove", this._onRemoveComponent, this); + } + initializeComponentData(component, _data) { + const data2 = _extends({}, _data); + if (!data2.type) data2.type = component.data.type; + component.data.type = data2.type; + if (data2.layers && Array.isArray(data2.layers)) { + data2.layers = data2.layers.slice(0); + } + if (data2.color && Array.isArray(data2.color)) data2.color = new Color(data2.color[0], data2.color[1], data2.color[2]); + if (data2.cookieOffset && data2.cookieOffset instanceof Array) data2.cookieOffset = new Vec2(data2.cookieOffset[0], data2.cookieOffset[1]); + if (data2.cookieScale && data2.cookieScale instanceof Array) data2.cookieScale = new Vec2(data2.cookieScale[0], data2.cookieScale[1]); + if (data2.enable) { + console.warn("WARNING: enable: Property is deprecated. Set enabled property instead."); + data2.enabled = data2.enable; + } + if (!data2.shape) { + data2.shape = LIGHTSHAPE_PUNCTUAL; + } + const light = new Light(this.app.graphicsDevice, this.app.scene.clusteredLightingEnabled); + light.type = lightTypes[data2.type]; + light._node = component.entity; + component.data.light = light; + super.initializeComponentData(component, data2, properties); + } + _onRemoveComponent(entity, component) { + component.onRemove(); + } + cloneComponent(entity, clone) { + const light = entity.light; + const data2 = []; + let name; + for (let i = 0; i < properties.length; i++) { + name = properties[i]; + if (name === "light") { + continue; + } + if (light[name] && light[name].clone) { + data2[name] = light[name].clone(); + } else { + data2[name] = light[name]; + } + } + return this.addComponent(clone, data2); + } + changeType(component, oldValue, newValue) { + if (oldValue !== newValue) { + component.light.type = lightTypes[newValue]; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/scene/render.js +var Render = class extends EventHandler { + constructor() { + super(); + this._meshes = null; + } + set meshes(value) { + this.decRefMeshes(); + this._meshes = value; + this.incRefMeshes(); + this.fire("set:meshes", value); + } + get meshes() { + return this._meshes; + } + destroy() { + this.meshes = null; + } + decRefMeshes() { + if (this._meshes) { + const count = this._meshes.length; + for (let i = 0; i < count; i++) { + const mesh = this._meshes[i]; + if (mesh) { + mesh.decRefCount(); + if (mesh.refCount < 1) { + mesh.destroy(); + this._meshes[i] = null; + } + } + } + } + } + incRefMeshes() { + if (this._meshes) { + const count = this._meshes.length; + for (let i = 0; i < count; i++) { + if (this._meshes[i]) { + this._meshes[i].incRefCount(); + } + } + } + } +}; +Render.EVENT_SETMESHES = "set:meshes"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-curve.js +var AnimCurve = class { + constructor(paths, input2, output, interpolation) { + this._paths = paths; + this._input = input2; + this._output = output; + this._interpolation = interpolation; + } + get paths() { + return this._paths; + } + get input() { + return this._input; + } + get output() { + return this._output; + } + get interpolation() { + return this._interpolation; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-data.js +var AnimData = class { + constructor(components, data2) { + this._components = components; + this._data = data2; + } + get components() { + return this._components; + } + get data() { + return this._data; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/draco-worker.js +function DracoWorker(jsUrl, wasmUrl) { + let draco; + const POSITION_ATTRIBUTE = 0; + const NORMAL_ATTRIBUTE = 1; + const wrap = (typedArray, dataType) => { + switch (dataType) { + case draco.DT_INT8: + return new Int8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); + case draco.DT_INT16: + return new Int16Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 2); + case draco.DT_INT32: + return new Int32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4); + case draco.DT_UINT8: + return new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); + case draco.DT_UINT16: + return new Uint16Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 2); + case draco.DT_UINT32: + return new Uint32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4); + case draco.DT_FLOAT32: + return new Float32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4); + } + return null; + }; + const componentSizeInBytes = (dataType) => { + switch (dataType) { + case draco.DT_INT8: + return 1; + case draco.DT_INT16: + return 2; + case draco.DT_INT32: + return 4; + case draco.DT_UINT8: + return 1; + case draco.DT_UINT16: + return 2; + case draco.DT_UINT32: + return 4; + case draco.DT_FLOAT32: + return 4; + } + return 1; + }; + const attributeSizeInBytes = (attribute) => { + return attribute.num_components() * componentSizeInBytes(attribute.data_type()); + }; + const attributeOrder2 = { + 0: 0, + 1: 1, + 5: 2, + 2: 3, + 7: 4, + 8: 5, + 4: 6, + 3: 7 + }; + const generateNormals2 = (vertices, indices) => { + const subtract = (dst, a2, b2) => { + dst[0] = a2[0] - b2[0]; + dst[1] = a2[1] - b2[1]; + dst[2] = a2[2] - b2[2]; + }; + const cross = (dst, a2, b2) => { + dst[0] = a2[1] * b2[2] - b2[1] * a2[2]; + dst[1] = a2[2] * b2[0] - b2[2] * a2[0]; + dst[2] = a2[0] * b2[1] - b2[0] * a2[1]; + }; + const normalize = (dst, offset) => { + const a2 = dst[offset + 0]; + const b2 = dst[offset + 1]; + const c3 = dst[offset + 2]; + const l = 1 / Math.sqrt(a2 * a2 + b2 * b2 + c3 * c3); + dst[offset + 0] *= l; + dst[offset + 1] *= l; + dst[offset + 2] *= l; + }; + const copy = (dst, src, srcOffset) => { + for (let i = 0; i < 3; ++i) { + dst[i] = src[srcOffset + i]; + } + }; + const numTriangles = indices.length / 3; + const numVertices = vertices.length / 3; + const result = new Float32Array(vertices.length); + const a = [0, 0, 0], b = [0, 0, 0], c2 = [0, 0, 0], t1 = [0, 0, 0], t2 = [0, 0, 0], n = [0, 0, 0]; + for (let i = 0; i < numTriangles; ++i) { + const v0 = indices[i * 3 + 0] * 3; + const v1 = indices[i * 3 + 1] * 3; + const v22 = indices[i * 3 + 2] * 3; + copy(a, vertices, v0); + copy(b, vertices, v1); + copy(c2, vertices, v22); + subtract(t1, b, a); + subtract(t2, c2, a); + cross(n, t1, t2); + normalize(n, 0); + for (let j = 0; j < 3; ++j) { + result[v0 + j] += n[j]; + result[v1 + j] += n[j]; + result[v22 + j] += n[j]; + } + } + for (let i = 0; i < numVertices; ++i) { + normalize(result, i * 3); + } + return new Uint8Array(result.buffer); + }; + const decodeMesh = (inputBuffer) => { + const result = {}; + const buffer = new draco.DecoderBuffer(); + buffer.Init(inputBuffer, inputBuffer.length); + const decoder = new draco.Decoder(); + if (decoder.GetEncodedGeometryType(buffer) !== draco.TRIANGULAR_MESH) { + result.error = "Failed to decode draco mesh: not a mesh"; + return result; + } + const mesh = new draco.Mesh(); + const status = decoder.DecodeBufferToMesh(buffer, mesh); + if (!status || !status.ok() || mesh.ptr === 0) { + result.error = "Failed to decode draco asset"; + return result; + } + const numIndices = mesh.num_faces() * 3; + const shortIndices = mesh.num_points() <= 65535; + const indicesSize = numIndices * (shortIndices ? 2 : 4); + const indicesPtr = draco._malloc(indicesSize); + if (shortIndices) { + decoder.GetTrianglesUInt16Array(mesh, indicesSize, indicesPtr); + result.indices = new Uint16Array(draco.HEAPU16.buffer, indicesPtr, numIndices).slice().buffer; + } else { + decoder.GetTrianglesUInt32Array(mesh, indicesSize, indicesPtr); + result.indices = new Uint32Array(draco.HEAPU32.buffer, indicesPtr, numIndices).slice().buffer; + } + draco._free(indicesPtr); + const attributes = []; + for (let i = 0; i < mesh.num_attributes(); ++i) { + attributes.push(decoder.GetAttribute(mesh, i)); + } + attributes.sort((a, b) => { + var _attributeOrder$a$att, _attributeOrder$b$att; + return ((_attributeOrder$a$att = attributeOrder2[a.attribute_type()]) != null ? _attributeOrder$a$att : attributeOrder2.length) - ((_attributeOrder$b$att = attributeOrder2[b.attribute_type()]) != null ? _attributeOrder$b$att : attributeOrder2.length); + }); + result.attributes = attributes.map((a) => a.unique_id()); + let totalVertexSize = 0; + const offsets = attributes.map((a) => { + const offset = totalVertexSize; + totalVertexSize += Math.ceil(attributeSizeInBytes(a) / 4) * 4; + return offset; + }); + const hasNormals = attributes.some((a) => a.attribute_type() === NORMAL_ATTRIBUTE); + const normalOffset = offsets[1]; + if (!hasNormals) { + for (let i = 1; i < offsets.length; ++i) { + offsets[i] += 12; + } + totalVertexSize += 12; + } + result.vertices = new ArrayBuffer(mesh.num_points() * totalVertexSize); + const dst = new Uint8Array(result.vertices); + for (let i = 0; i < mesh.num_attributes(); ++i) { + const attribute = attributes[i]; + const sizeInBytes = attributeSizeInBytes(attribute); + const ptrSize = mesh.num_points() * sizeInBytes; + const ptr = draco._malloc(ptrSize); + decoder.GetAttributeDataArrayForAllPoints(mesh, attribute, attribute.data_type(), ptrSize, ptr); + const src = new Uint8Array(draco.HEAPU8.buffer, ptr, ptrSize); + for (let j = 0; j < mesh.num_points(); ++j) { + for (let c2 = 0; c2 < sizeInBytes; ++c2) { + dst[j * totalVertexSize + offsets[i] + c2] = src[j * sizeInBytes + c2]; + } + } + if (!hasNormals && attribute.attribute_type() === POSITION_ATTRIBUTE) { + const normals = generateNormals2(wrap(src, attribute.data_type()), shortIndices ? new Uint16Array(result.indices) : new Uint32Array(result.indices)); + for (let j = 0; j < mesh.num_points(); ++j) { + for (let c2 = 0; c2 < 12; ++c2) { + dst[j * totalVertexSize + normalOffset + c2] = normals[j * 12 + c2]; + } + } + } + draco._free(ptr); + } + draco.destroy(mesh); + draco.destroy(decoder); + draco.destroy(buffer); + return result; + }; + const decode = (data2) => { + const result = decodeMesh(new Uint8Array(data2.buffer)); + self.postMessage({ + jobId: data2.jobId, + error: result.error, + indices: result.indices, + vertices: result.vertices, + attributes: result.attributes + }, [result.indices, result.vertices].filter((t) => t != null)); + }; + const workQueue = []; + self.onmessage = (message) => { + const data2 = message.data; + switch (data2.type) { + case "init": + self.DracoDecoderModule({ + instantiateWasm: (imports, successCallback) => { + WebAssembly.instantiate(data2.module, imports).then((result) => successCallback(result)).catch((reason) => console.error("instantiate failed + " + reason)); + return {}; + } + }).then((instance) => { + draco = instance; + workQueue.forEach((data3) => decode(data3)); + }); + break; + case "decodeMesh": + if (draco) { + decode(data2); + } else { + workQueue.push(data2); + } + break; + } + }; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/draco-decoder.js +var downloadMaxRetries = 3; +var JobQueue = class { + constructor() { + this.workers = [[], [], []]; + this.jobId = 0; + this.jobQueue = []; + this.jobCallbacks = /* @__PURE__ */ new Map(); + this.run = (worker, job) => { + worker.postMessage({ + type: "decodeMesh", + jobId: job.jobId, + buffer: job.buffer + }, [job.buffer]); + }; + } + init(workers2) { + workers2.forEach((worker) => { + worker.addEventListener("message", (message) => { + const data2 = message.data; + const callback = this.jobCallbacks.get(data2.jobId); + if (callback) { + callback(data2.error, { + indices: data2.indices, + vertices: data2.vertices, + attributes: data2.attributes + }); + } + this.jobCallbacks.delete(data2.jobId); + if (this.jobQueue.length > 0) { + const job = this.jobQueue.shift(); + this.run(worker, job); + } else { + const index2 = this.workers[2].indexOf(worker); + if (index2 !== -1) { + this.workers[2].splice(index2, 1); + this.workers[1].push(worker); + } else { + const index1 = this.workers[1].indexOf(worker); + if (index1 !== -1) { + this.workers[1].splice(index1, 1); + this.workers[0].push(worker); + } + } + } + }); + }); + this.workers[0] = workers2; + while (this.jobQueue.length && (this.workers[0].length || this.workers[1].length)) { + const job = this.jobQueue.shift(); + if (this.workers[0].length > 0) { + const worker = this.workers[0].shift(); + this.workers[1].push(worker); + this.run(worker, job); + } else { + const worker = this.workers[1].shift(); + this.workers[2].push(worker); + this.run(worker, job); + } + } + } + enqueueJob(buffer, callback) { + const job = { + jobId: this.jobId++, + buffer + }; + this.jobCallbacks.set(job.jobId, callback); + if (this.workers[0].length > 0) { + const worker = this.workers[0].shift(); + this.workers[1].push(worker); + this.run(worker, job); + } else if (this.workers[1].length > 0) { + const worker = this.workers[1].shift(); + this.workers[2].push(worker); + this.run(worker, job); + } else { + this.jobQueue.push(job); + } + } +}; +var downloadScript = (url) => { + return new Promise((resolve, reject) => { + const options = { + cache: true, + responseType: "text", + retry: downloadMaxRetries > 0, + maxRetries: downloadMaxRetries + }; + http.get(url, options, (err, response) => { + if (err) { + reject(err); + } else { + resolve(response); + } + }); + }); +}; +var compileModule = (url) => { + const compileManual = () => { + return fetch(url).then((result) => result.arrayBuffer()).then((buffer) => WebAssembly.compile(buffer)); + }; + const compileStreaming = () => { + return WebAssembly.compileStreaming(fetch(url)).catch((err) => { + return compileManual(); + }); + }; + return WebAssembly.compileStreaming ? compileStreaming() : compileManual(); +}; +var defaultNumWorkers = 1; +var jobQueue; +var lazyConfig; +var initializeWorkers = (config) => { + if (jobQueue) { + return true; + } + if (!config) { + if (lazyConfig) { + config = lazyConfig; + } else { + const moduleConfig = WasmModule.getConfig("DracoDecoderModule"); + if (moduleConfig) { + config = { + jsUrl: moduleConfig.glueUrl, + wasmUrl: moduleConfig.wasmUrl, + numWorkers: moduleConfig.numWorkers + }; + } else { + config = { + jsUrl: "draco.wasm.js", + wasmUrl: "draco.wasm.wasm", + numWorkers: defaultNumWorkers + }; + } + } + } + if (!config.jsUrl || !config.wasmUrl) { + return false; + } + jobQueue = new JobQueue(); + Promise.all([downloadScript(config.jsUrl), compileModule(config.wasmUrl)]).then(([dracoSource, dracoModule]) => { + const code = ["/* draco */", dracoSource, "/* worker */", `( +${DracoWorker.toString()} +)() + +`].join("\n"); + const blob = new Blob([code], { + type: "application/javascript" + }); + const workerUrl = URL.createObjectURL(blob); + const numWorkers = Math.max(1, Math.min(16, config.numWorkers || defaultNumWorkers)); + const workers2 = []; + for (let i = 0; i < numWorkers; ++i) { + const worker = new Worker(workerUrl); + worker.postMessage({ + type: "init", + module: dracoModule + }); + workers2.push(worker); + } + jobQueue.init(workers2); + }); + return true; +}; +var dracoDecode = (buffer, callback) => { + if (!initializeWorkers()) { + return false; + } + jobQueue.enqueueJob(buffer, callback); + return true; +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/glb-parser.js +var GlbResources = class { + constructor() { + this.gltf = void 0; + this.nodes = void 0; + this.scenes = void 0; + this.animations = void 0; + this.textures = void 0; + this.materials = void 0; + this.variants = void 0; + this.meshVariants = void 0; + this.meshDefaultMaterials = void 0; + this.renders = void 0; + this.skins = void 0; + this.lights = void 0; + this.cameras = void 0; + } + destroy() { + if (this.renders) { + this.renders.forEach((render) => { + render.meshes = null; + }); + } + } +}; +var isDataURI = (uri) => { + return /^data:.*,.*$/i.test(uri); +}; +var getDataURIMimeType = (uri) => { + return uri.substring(uri.indexOf(":") + 1, uri.indexOf(";")); +}; +var getNumComponents = (accessorType) => { + switch (accessorType) { + case "SCALAR": + return 1; + case "VEC2": + return 2; + case "VEC3": + return 3; + case "VEC4": + return 4; + case "MAT2": + return 4; + case "MAT3": + return 9; + case "MAT4": + return 16; + default: + return 3; + } +}; +var getComponentType = (componentType) => { + switch (componentType) { + case 5120: + return TYPE_INT8; + case 5121: + return TYPE_UINT8; + case 5122: + return TYPE_INT16; + case 5123: + return TYPE_UINT16; + case 5124: + return TYPE_INT32; + case 5125: + return TYPE_UINT32; + case 5126: + return TYPE_FLOAT32; + default: + return 0; + } +}; +var getComponentSizeInBytes = (componentType) => { + switch (componentType) { + case 5120: + return 1; + case 5121: + return 1; + case 5122: + return 2; + case 5123: + return 2; + case 5124: + return 4; + case 5125: + return 4; + case 5126: + return 4; + default: + return 0; + } +}; +var getComponentDataType = (componentType) => { + switch (componentType) { + case 5120: + return Int8Array; + case 5121: + return Uint8Array; + case 5122: + return Int16Array; + case 5123: + return Uint16Array; + case 5124: + return Int32Array; + case 5125: + return Uint32Array; + case 5126: + return Float32Array; + default: + return null; + } +}; +var gltfToEngineSemanticMap = { + "POSITION": SEMANTIC_POSITION, + "NORMAL": SEMANTIC_NORMAL, + "TANGENT": SEMANTIC_TANGENT, + "COLOR_0": SEMANTIC_COLOR, + "JOINTS_0": SEMANTIC_BLENDINDICES, + "WEIGHTS_0": SEMANTIC_BLENDWEIGHT, + "TEXCOORD_0": SEMANTIC_TEXCOORD0, + "TEXCOORD_1": SEMANTIC_TEXCOORD1, + "TEXCOORD_2": SEMANTIC_TEXCOORD2, + "TEXCOORD_3": SEMANTIC_TEXCOORD3, + "TEXCOORD_4": SEMANTIC_TEXCOORD4, + "TEXCOORD_5": SEMANTIC_TEXCOORD5, + "TEXCOORD_6": SEMANTIC_TEXCOORD6, + "TEXCOORD_7": SEMANTIC_TEXCOORD7 +}; +var attributeOrder = { + [SEMANTIC_POSITION]: 0, + [SEMANTIC_NORMAL]: 1, + [SEMANTIC_TANGENT]: 2, + [SEMANTIC_COLOR]: 3, + [SEMANTIC_BLENDINDICES]: 4, + [SEMANTIC_BLENDWEIGHT]: 5, + [SEMANTIC_TEXCOORD0]: 6, + [SEMANTIC_TEXCOORD1]: 7, + [SEMANTIC_TEXCOORD2]: 8, + [SEMANTIC_TEXCOORD3]: 9, + [SEMANTIC_TEXCOORD4]: 10, + [SEMANTIC_TEXCOORD5]: 11, + [SEMANTIC_TEXCOORD6]: 12, + [SEMANTIC_TEXCOORD7]: 13 +}; +var getDequantizeFunc = (srcType) => { + switch (srcType) { + case TYPE_INT8: + return (x2) => Math.max(x2 / 127, -1); + case TYPE_UINT8: + return (x2) => x2 / 255; + case TYPE_INT16: + return (x2) => Math.max(x2 / 32767, -1); + case TYPE_UINT16: + return (x2) => x2 / 65535; + default: + return (x2) => x2; + } +}; +var dequantizeArray = (dstArray, srcArray, srcType) => { + const convFunc = getDequantizeFunc(srcType); + const len = srcArray.length; + for (let i = 0; i < len; ++i) { + dstArray[i] = convFunc(srcArray[i]); + } + return dstArray; +}; +var getAccessorData = (gltfAccessor, bufferViews, flatten = false) => { + const numComponents = getNumComponents(gltfAccessor.type); + const dataType = getComponentDataType(gltfAccessor.componentType); + if (!dataType) { + return null; + } + let result; + if (gltfAccessor.sparse) { + const sparse = gltfAccessor.sparse; + const indicesAccessor = { + count: sparse.count, + type: "SCALAR" + }; + const indices = getAccessorData(Object.assign(indicesAccessor, sparse.indices), bufferViews, true); + const valuesAccessor = { + count: sparse.count, + type: gltfAccessor.type, + componentType: gltfAccessor.componentType + }; + const values = getAccessorData(Object.assign(valuesAccessor, sparse.values), bufferViews, true); + if (gltfAccessor.hasOwnProperty("bufferView")) { + const baseAccessor = { + bufferView: gltfAccessor.bufferView, + byteOffset: gltfAccessor.byteOffset, + componentType: gltfAccessor.componentType, + count: gltfAccessor.count, + type: gltfAccessor.type + }; + result = getAccessorData(baseAccessor, bufferViews, true).slice(); + } else { + result = new dataType(gltfAccessor.count * numComponents); + } + for (let i = 0; i < sparse.count; ++i) { + const targetIndex = indices[i]; + for (let j = 0; j < numComponents; ++j) { + result[targetIndex * numComponents + j] = values[i * numComponents + j]; + } + } + } else { + if (gltfAccessor.hasOwnProperty("bufferView")) { + const bufferView = bufferViews[gltfAccessor.bufferView]; + if (flatten && bufferView.hasOwnProperty("byteStride")) { + const bytesPerElement = numComponents * dataType.BYTES_PER_ELEMENT; + const storage = new ArrayBuffer(gltfAccessor.count * bytesPerElement); + const tmpArray = new Uint8Array(storage); + let dstOffset = 0; + for (let i = 0; i < gltfAccessor.count; ++i) { + let srcOffset = (gltfAccessor.byteOffset || 0) + i * bufferView.byteStride; + for (let b = 0; b < bytesPerElement; ++b) { + tmpArray[dstOffset++] = bufferView[srcOffset++]; + } + } + result = new dataType(storage); + } else { + result = new dataType(bufferView.buffer, bufferView.byteOffset + (gltfAccessor.byteOffset || 0), gltfAccessor.count * numComponents); + } + } else { + result = new dataType(gltfAccessor.count * numComponents); + } + } + return result; +}; +var getAccessorDataFloat32 = (gltfAccessor, bufferViews) => { + const data2 = getAccessorData(gltfAccessor, bufferViews, true); + if (data2 instanceof Float32Array || !gltfAccessor.normalized) { + return data2; + } + const float32Data = new Float32Array(data2.length); + dequantizeArray(float32Data, data2, getComponentType(gltfAccessor.componentType)); + return float32Data; +}; +var getAccessorBoundingBox = (gltfAccessor) => { + let min = gltfAccessor.min; + let max = gltfAccessor.max; + if (!min || !max) { + return null; + } + if (gltfAccessor.normalized) { + const ctype = getComponentType(gltfAccessor.componentType); + min = dequantizeArray([], min, ctype); + max = dequantizeArray([], max, ctype); + } + return new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5)); +}; +var getPrimitiveType = (primitive2) => { + if (!primitive2.hasOwnProperty("mode")) { + return PRIMITIVE_TRIANGLES; + } + switch (primitive2.mode) { + case 0: + return PRIMITIVE_POINTS; + case 1: + return PRIMITIVE_LINES; + case 2: + return PRIMITIVE_LINELOOP; + case 3: + return PRIMITIVE_LINESTRIP; + case 4: + return PRIMITIVE_TRIANGLES; + case 5: + return PRIMITIVE_TRISTRIP; + case 6: + return PRIMITIVE_TRIFAN; + default: + return PRIMITIVE_TRIANGLES; + } +}; +var generateIndices = (numVertices) => { + const dummyIndices = new Uint16Array(numVertices); + for (let i = 0; i < numVertices; i++) { + dummyIndices[i] = i; + } + return dummyIndices; +}; +var generateNormals = (sourceDesc, indices) => { + const p = sourceDesc[SEMANTIC_POSITION]; + if (!p || p.components !== 3) { + return; + } + let positions; + if (p.size !== p.stride) { + const srcStride = p.stride / typedArrayTypesByteSize[p.type]; + const src = new typedArrayTypes[p.type](p.buffer, p.offset, p.count * srcStride); + positions = new typedArrayTypes[p.type](p.count * 3); + for (let i = 0; i < p.count; ++i) { + positions[i * 3 + 0] = src[i * srcStride + 0]; + positions[i * 3 + 1] = src[i * srcStride + 1]; + positions[i * 3 + 2] = src[i * srcStride + 2]; + } + } else { + positions = new typedArrayTypes[p.type](p.buffer, p.offset, p.count * 3); + } + const numVertices = p.count; + if (!indices) { + indices = generateIndices(numVertices); + } + const normalsTemp = calculateNormals(positions, indices); + const normals = new Float32Array(normalsTemp.length); + normals.set(normalsTemp); + sourceDesc[SEMANTIC_NORMAL] = { + buffer: normals.buffer, + size: 12, + offset: 0, + stride: 12, + count: numVertices, + components: 3, + type: TYPE_FLOAT32 + }; +}; +var flipTexCoordVs = (vertexBuffer) => { + let i, j; + const floatOffsets = []; + const shortOffsets = []; + const byteOffsets = []; + for (i = 0; i < vertexBuffer.format.elements.length; ++i) { + const element = vertexBuffer.format.elements[i]; + if (element.name === SEMANTIC_TEXCOORD0 || element.name === SEMANTIC_TEXCOORD1) { + switch (element.dataType) { + case TYPE_FLOAT32: + floatOffsets.push({ + offset: element.offset / 4 + 1, + stride: element.stride / 4 + }); + break; + case TYPE_UINT16: + shortOffsets.push({ + offset: element.offset / 2 + 1, + stride: element.stride / 2 + }); + break; + case TYPE_UINT8: + byteOffsets.push({ + offset: element.offset + 1, + stride: element.stride + }); + break; + } + } + } + const flip = (offsets, type2, one) => { + const typedArray = new type2(vertexBuffer.storage); + for (i = 0; i < offsets.length; ++i) { + let index = offsets[i].offset; + const stride = offsets[i].stride; + for (j = 0; j < vertexBuffer.numVertices; ++j) { + typedArray[index] = one - typedArray[index]; + index += stride; + } + } + }; + if (floatOffsets.length > 0) { + flip(floatOffsets, Float32Array, 1); + } + if (shortOffsets.length > 0) { + flip(shortOffsets, Uint16Array, 65535); + } + if (byteOffsets.length > 0) { + flip(byteOffsets, Uint8Array, 255); + } +}; +var cloneTexture = (texture) => { + const shallowCopyLevels = (texture2) => { + const result2 = []; + for (let mip = 0; mip < texture2._levels.length; ++mip) { + let level = []; + if (texture2.cubemap) { + for (let face = 0; face < 6; ++face) { + level.push(texture2._levels[mip][face]); + } + } else { + level = texture2._levels[mip]; + } + result2.push(level); + } + return result2; + }; + const result = new Texture(texture.device, texture); + result._levels = shallowCopyLevels(texture); + return result; +}; +var cloneTextureAsset = (src) => { + const result = new Asset(src.name + "_clone", src.type, src.file, src.data, src.options); + result.loaded = true; + result.resource = cloneTexture(src.resource); + src.registry.add(result); + return result; +}; +var createVertexBufferInternal = (device, sourceDesc, flipV) => { + const positionDesc = sourceDesc[SEMANTIC_POSITION]; + if (!positionDesc) { + return null; + } + const numVertices = positionDesc.count; + const vertexDesc = []; + for (const semantic in sourceDesc) { + if (sourceDesc.hasOwnProperty(semantic)) { + const element = { + semantic, + components: sourceDesc[semantic].components, + type: sourceDesc[semantic].type, + normalize: !!sourceDesc[semantic].normalize + }; + if (!VertexFormat.isElementValid(device, element)) { + element.components++; + } + vertexDesc.push(element); + } + } + vertexDesc.sort((lhs, rhs) => { + return attributeOrder[lhs.semantic] - attributeOrder[rhs.semantic]; + }); + let i, j, k; + let source, target2, sourceOffset; + const vertexFormat = new VertexFormat(device, vertexDesc); + let isCorrectlyInterleaved = true; + for (i = 0; i < vertexFormat.elements.length; ++i) { + target2 = vertexFormat.elements[i]; + source = sourceDesc[target2.name]; + sourceOffset = source.offset - positionDesc.offset; + if (source.buffer !== positionDesc.buffer || source.stride !== target2.stride || source.size !== target2.size || sourceOffset !== target2.offset) { + isCorrectlyInterleaved = false; + break; + } + } + const vertexBuffer = new VertexBuffer(device, vertexFormat, numVertices); + const vertexData = vertexBuffer.lock(); + const targetArray = new Uint32Array(vertexData); + let sourceArray; + if (isCorrectlyInterleaved) { + sourceArray = new Uint32Array(positionDesc.buffer, positionDesc.offset, numVertices * vertexBuffer.format.size / 4); + targetArray.set(sourceArray); + } else { + let targetStride, sourceStride; + for (i = 0; i < vertexBuffer.format.elements.length; ++i) { + target2 = vertexBuffer.format.elements[i]; + targetStride = target2.stride / 4; + source = sourceDesc[target2.name]; + sourceStride = source.stride / 4; + sourceArray = new Uint32Array(source.buffer, source.offset, (source.count - 1) * sourceStride + (source.size + 3) / 4); + let src = 0; + let dst = target2.offset / 4; + const kend = Math.floor((source.size + 3) / 4); + for (j = 0; j < numVertices; ++j) { + for (k = 0; k < kend; ++k) { + targetArray[dst + k] = sourceArray[src + k]; + } + src += sourceStride; + dst += targetStride; + } + } + } + if (flipV) { + flipTexCoordVs(vertexBuffer); + } + vertexBuffer.unlock(); + return vertexBuffer; +}; +var createVertexBuffer = (device, attributes, indices, accessors, bufferViews, flipV, vertexBufferDict) => { + const useAttributes = {}; + const attribIds = []; + for (const attrib in attributes) { + if (attributes.hasOwnProperty(attrib) && gltfToEngineSemanticMap.hasOwnProperty(attrib)) { + useAttributes[attrib] = attributes[attrib]; + attribIds.push(attrib + ":" + attributes[attrib]); + } + } + attribIds.sort(); + const vbKey = attribIds.join(); + let vb = vertexBufferDict[vbKey]; + if (!vb) { + const sourceDesc = {}; + for (const attrib in useAttributes) { + const accessor = accessors[attributes[attrib]]; + const accessorData = getAccessorData(accessor, bufferViews); + const bufferView = bufferViews[accessor.bufferView]; + const semantic = gltfToEngineSemanticMap[attrib]; + const size = getNumComponents(accessor.type) * getComponentSizeInBytes(accessor.componentType); + const stride = bufferView && bufferView.hasOwnProperty("byteStride") ? bufferView.byteStride : size; + sourceDesc[semantic] = { + buffer: accessorData.buffer, + size, + offset: accessorData.byteOffset, + stride, + count: accessor.count, + components: getNumComponents(accessor.type), + type: getComponentType(accessor.componentType), + normalize: accessor.normalized + }; + } + if (!sourceDesc.hasOwnProperty(SEMANTIC_NORMAL)) { + generateNormals(sourceDesc, indices); + } + vb = createVertexBufferInternal(device, sourceDesc, flipV); + vertexBufferDict[vbKey] = vb; + } + return vb; +}; +var createSkin = (device, gltfSkin, accessors, bufferViews, nodes, glbSkins) => { + let i, j, bindMatrix; + const joints = gltfSkin.joints; + const numJoints = joints.length; + const ibp = []; + if (gltfSkin.hasOwnProperty("inverseBindMatrices")) { + const inverseBindMatrices = gltfSkin.inverseBindMatrices; + const ibmData = getAccessorData(accessors[inverseBindMatrices], bufferViews, true); + const ibmValues = []; + for (i = 0; i < numJoints; i++) { + for (j = 0; j < 16; j++) { + ibmValues[j] = ibmData[i * 16 + j]; + } + bindMatrix = new Mat4(); + bindMatrix.set(ibmValues); + ibp.push(bindMatrix); + } + } else { + for (i = 0; i < numJoints; i++) { + bindMatrix = new Mat4(); + ibp.push(bindMatrix); + } + } + const boneNames = []; + for (i = 0; i < numJoints; i++) { + boneNames[i] = nodes[joints[i]].name; + } + const key = boneNames.join("#"); + let skin = glbSkins.get(key); + if (!skin) { + skin = new Skin(device, ibp, boneNames); + glbSkins.set(key, skin); + } + return skin; +}; +var createDracoMesh = (device, primitive2, accessors, bufferViews, meshVariants, meshDefaultMaterials, promises) => { + var _primitive$extensions; + const result = new Mesh(device); + result.aabb = getAccessorBoundingBox(accessors[primitive2.attributes.POSITION]); + const vertexDesc = []; + for (const [name, index] of Object.entries(primitive2.attributes)) { + var _accessor$normalized; + const accessor = accessors[index]; + const semantic = gltfToEngineSemanticMap[name]; + const componentType = getComponentType(accessor.componentType); + vertexDesc.push({ + semantic, + components: getNumComponents(accessor.type), + type: componentType, + normalize: (_accessor$normalized = accessor.normalized) != null ? _accessor$normalized : semantic === SEMANTIC_COLOR && (componentType === TYPE_UINT8 || componentType === TYPE_UINT16) + }); + } + promises.push(new Promise((resolve, reject) => { + const dracoExt = primitive2.extensions.KHR_draco_mesh_compression; + dracoDecode(bufferViews[dracoExt.bufferView].slice().buffer, (err, decompressedData) => { + if (err) { + console.log(err); + reject(err); + } else { + var _primitive$attributes; + const order = {}; + for (const [name, index] of Object.entries(dracoExt.attributes)) { + order[gltfToEngineSemanticMap[name]] = decompressedData.attributes.indexOf(index); + } + vertexDesc.sort((a, b) => { + return order[a.semantic] - order[b.semantic]; + }); + if (!((_primitive$attributes = primitive2.attributes) != null && _primitive$attributes.NORMAL)) { + vertexDesc.splice(1, 0, { + semantic: "NORMAL", + components: 3, + type: TYPE_FLOAT32 + }); + } + const vertexFormat = new VertexFormat(device, vertexDesc); + const numVertices = decompressedData.vertices.byteLength / vertexFormat.size; + const indexFormat = numVertices <= 65535 ? INDEXFORMAT_UINT16 : INDEXFORMAT_UINT32; + const numIndices = decompressedData.indices.byteLength / (numVertices <= 65535 ? 2 : 4); + const vertexBuffer = new VertexBuffer(device, vertexFormat, numVertices, { + data: decompressedData.vertices + }); + const indexBuffer = new IndexBuffer(device, indexFormat, numIndices, BUFFER_STATIC, decompressedData.indices); + result.vertexBuffer = vertexBuffer; + result.indexBuffer[0] = indexBuffer; + result.primitive[0].type = getPrimitiveType(primitive2); + result.primitive[0].base = 0; + result.primitive[0].count = indexBuffer ? numIndices : numVertices; + result.primitive[0].indexed = !!indexBuffer; + resolve(); + } + }); + })); + if (primitive2 != null && (_primitive$extensions = primitive2.extensions) != null && _primitive$extensions.KHR_materials_variants) { + const variants = primitive2.extensions.KHR_materials_variants; + const tempMapping = {}; + variants.mappings.forEach((mapping) => { + mapping.variants.forEach((variant) => { + tempMapping[variant] = mapping.material; + }); + }); + meshVariants[result.id] = tempMapping; + } + meshDefaultMaterials[result.id] = primitive2.material; + return result; +}; +var createMesh = (device, gltfMesh, accessors, bufferViews, flipV, vertexBufferDict, meshVariants, meshDefaultMaterials, assetOptions, promises) => { + const meshes = []; + gltfMesh.primitives.forEach((primitive2) => { + var _primitive$extensions2; + if ((_primitive$extensions2 = primitive2.extensions) != null && _primitive$extensions2.KHR_draco_mesh_compression) { + meshes.push(createDracoMesh(device, primitive2, accessors, bufferViews, meshVariants, meshDefaultMaterials, promises)); + } else { + let indices = primitive2.hasOwnProperty("indices") ? getAccessorData(accessors[primitive2.indices], bufferViews, true) : null; + const vertexBuffer = createVertexBuffer(device, primitive2.attributes, indices, accessors, bufferViews, flipV, vertexBufferDict); + const primitiveType = getPrimitiveType(primitive2); + const mesh = new Mesh(device); + mesh.vertexBuffer = vertexBuffer; + mesh.primitive[0].type = primitiveType; + mesh.primitive[0].base = 0; + mesh.primitive[0].indexed = indices !== null; + if (indices !== null) { + let indexFormat; + if (indices instanceof Uint8Array) { + indexFormat = INDEXFORMAT_UINT8; + } else if (indices instanceof Uint16Array) { + indexFormat = INDEXFORMAT_UINT16; + } else { + indexFormat = INDEXFORMAT_UINT32; + } + if (indexFormat === INDEXFORMAT_UINT32 && !device.extUintElement) { + indexFormat = INDEXFORMAT_UINT16; + indices = new Uint16Array(indices); + } + if (indexFormat === INDEXFORMAT_UINT8 && device.isWebGPU) { + indexFormat = INDEXFORMAT_UINT16; + indices = new Uint16Array(indices); + } + const indexBuffer = new IndexBuffer(device, indexFormat, indices.length, BUFFER_STATIC, indices); + mesh.indexBuffer[0] = indexBuffer; + mesh.primitive[0].count = indices.length; + } else { + mesh.primitive[0].count = vertexBuffer.numVertices; + } + if (primitive2.hasOwnProperty("extensions") && primitive2.extensions.hasOwnProperty("KHR_materials_variants")) { + const variants = primitive2.extensions.KHR_materials_variants; + const tempMapping = {}; + variants.mappings.forEach((mapping) => { + mapping.variants.forEach((variant) => { + tempMapping[variant] = mapping.material; + }); + }); + meshVariants[mesh.id] = tempMapping; + } + meshDefaultMaterials[mesh.id] = primitive2.material; + let accessor = accessors[primitive2.attributes.POSITION]; + mesh.aabb = getAccessorBoundingBox(accessor); + if (primitive2.hasOwnProperty("targets")) { + const targets = []; + primitive2.targets.forEach((target2, index) => { + const options = {}; + if (target2.hasOwnProperty("POSITION")) { + accessor = accessors[target2.POSITION]; + options.deltaPositions = getAccessorDataFloat32(accessor, bufferViews); + options.deltaPositionsType = TYPE_FLOAT32; + options.aabb = getAccessorBoundingBox(accessor); + } + if (target2.hasOwnProperty("NORMAL")) { + accessor = accessors[target2.NORMAL]; + options.deltaNormals = getAccessorDataFloat32(accessor, bufferViews); + options.deltaNormalsType = TYPE_FLOAT32; + } + if (gltfMesh.hasOwnProperty("extras") && gltfMesh.extras.hasOwnProperty("targetNames")) { + options.name = gltfMesh.extras.targetNames[index]; + } else { + options.name = index.toString(10); + } + if (gltfMesh.hasOwnProperty("weights")) { + options.defaultWeight = gltfMesh.weights[index]; + } + options.preserveData = assetOptions.morphPreserveData; + targets.push(new MorphTarget(options)); + }); + mesh.morph = new Morph(targets, device, { + preferHighPrecision: assetOptions.morphPreferHighPrecision + }); + } + meshes.push(mesh); + } + }); + return meshes; +}; +var extractTextureTransform = (source, material, maps) => { + var _source$extensions; + let map; + const texCoord = source.texCoord; + if (texCoord) { + for (map = 0; map < maps.length; ++map) { + material[maps[map] + "MapUv"] = texCoord; + } + } + const zeros = [0, 0]; + const ones = [1, 1]; + const textureTransform = (_source$extensions = source.extensions) == null ? void 0 : _source$extensions.KHR_texture_transform; + if (textureTransform) { + const offset = textureTransform.offset || zeros; + const scale2 = textureTransform.scale || ones; + const rotation2 = textureTransform.rotation ? -textureTransform.rotation * math.RAD_TO_DEG : 0; + const tilingVec = new Vec2(scale2[0], scale2[1]); + const offsetVec = new Vec2(offset[0], 1 - scale2[1] - offset[1]); + for (map = 0; map < maps.length; ++map) { + material[`${maps[map]}MapTiling`] = tilingVec; + material[`${maps[map]}MapOffset`] = offsetVec; + material[`${maps[map]}MapRotation`] = rotation2; + } + } +}; +var extensionPbrSpecGlossiness = (data2, material, textures) => { + let color, texture; + if (data2.hasOwnProperty("diffuseFactor")) { + color = data2.diffuseFactor; + material.diffuse.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2)); + material.opacity = color[3]; + } else { + material.diffuse.set(1, 1, 1); + material.opacity = 1; + } + if (data2.hasOwnProperty("diffuseTexture")) { + const diffuseTexture = data2.diffuseTexture; + texture = textures[diffuseTexture.index]; + material.diffuseMap = texture; + material.diffuseMapChannel = "rgb"; + material.opacityMap = texture; + material.opacityMapChannel = "a"; + extractTextureTransform(diffuseTexture, material, ["diffuse", "opacity"]); + } + material.useMetalness = false; + if (data2.hasOwnProperty("specularFactor")) { + color = data2.specularFactor; + material.specular.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2)); + } else { + material.specular.set(1, 1, 1); + } + if (data2.hasOwnProperty("glossinessFactor")) { + material.gloss = data2.glossinessFactor; + } else { + material.gloss = 1; + } + if (data2.hasOwnProperty("specularGlossinessTexture")) { + const specularGlossinessTexture = data2.specularGlossinessTexture; + material.specularEncoding = "srgb"; + material.specularMap = material.glossMap = textures[specularGlossinessTexture.index]; + material.specularMapChannel = "rgb"; + material.glossMapChannel = "a"; + extractTextureTransform(specularGlossinessTexture, material, ["gloss", "metalness"]); + } +}; +var extensionClearCoat = (data2, material, textures) => { + if (data2.hasOwnProperty("clearcoatFactor")) { + material.clearCoat = data2.clearcoatFactor * 0.25; + } else { + material.clearCoat = 0; + } + if (data2.hasOwnProperty("clearcoatTexture")) { + const clearcoatTexture = data2.clearcoatTexture; + material.clearCoatMap = textures[clearcoatTexture.index]; + material.clearCoatMapChannel = "r"; + extractTextureTransform(clearcoatTexture, material, ["clearCoat"]); + } + if (data2.hasOwnProperty("clearcoatRoughnessFactor")) { + material.clearCoatGloss = data2.clearcoatRoughnessFactor; + } else { + material.clearCoatGloss = 0; + } + if (data2.hasOwnProperty("clearcoatRoughnessTexture")) { + const clearcoatRoughnessTexture = data2.clearcoatRoughnessTexture; + material.clearCoatGlossMap = textures[clearcoatRoughnessTexture.index]; + material.clearCoatGlossMapChannel = "g"; + extractTextureTransform(clearcoatRoughnessTexture, material, ["clearCoatGloss"]); + } + if (data2.hasOwnProperty("clearcoatNormalTexture")) { + const clearcoatNormalTexture = data2.clearcoatNormalTexture; + material.clearCoatNormalMap = textures[clearcoatNormalTexture.index]; + extractTextureTransform(clearcoatNormalTexture, material, ["clearCoatNormal"]); + if (clearcoatNormalTexture.hasOwnProperty("scale")) { + material.clearCoatBumpiness = clearcoatNormalTexture.scale; + } + } + material.clearCoatGlossInvert = true; +}; +var extensionUnlit = (data2, material, textures) => { + material.useLighting = false; + material.emissive.copy(material.diffuse); + material.emissiveTint = material.diffuseTint; + material.emissiveMap = material.diffuseMap; + material.emissiveMapUv = material.diffuseMapUv; + material.emissiveMapTiling.copy(material.diffuseMapTiling); + material.emissiveMapOffset.copy(material.diffuseMapOffset); + material.emissiveMapRotation = material.diffuseMapRotation; + material.emissiveMapChannel = material.diffuseMapChannel; + material.emissiveVertexColor = material.diffuseVertexColor; + material.emissiveVertexColorChannel = material.diffuseVertexColorChannel; + material.useLighting = false; + material.useSkybox = false; + material.diffuse.set(0, 0, 0); + material.diffuseTint = false; + material.diffuseMap = null; + material.diffuseVertexColor = false; +}; +var extensionSpecular = (data2, material, textures) => { + material.useMetalnessSpecularColor = true; + if (data2.hasOwnProperty("specularColorTexture")) { + material.specularEncoding = "srgb"; + material.specularMap = textures[data2.specularColorTexture.index]; + material.specularMapChannel = "rgb"; + extractTextureTransform(data2.specularColorTexture, material, ["specular"]); + } + if (data2.hasOwnProperty("specularColorFactor")) { + const color = data2.specularColorFactor; + material.specular.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2)); + } else { + material.specular.set(1, 1, 1); + } + if (data2.hasOwnProperty("specularFactor")) { + material.specularityFactor = data2.specularFactor; + } else { + material.specularityFactor = 1; + } + if (data2.hasOwnProperty("specularTexture")) { + material.specularityFactorMapChannel = "a"; + material.specularityFactorMap = textures[data2.specularTexture.index]; + extractTextureTransform(data2.specularTexture, material, ["specularityFactor"]); + } +}; +var extensionIor = (data2, material, textures) => { + if (data2.hasOwnProperty("ior")) { + material.refractionIndex = 1 / data2.ior; + } +}; +var extensionDispersion = (data2, material, textures) => { + if (data2.hasOwnProperty("dispersion")) { + material.dispersion = data2.dispersion; + } +}; +var extensionTransmission = (data2, material, textures) => { + material.blendType = BLEND_NORMAL; + material.useDynamicRefraction = true; + if (data2.hasOwnProperty("transmissionFactor")) { + material.refraction = data2.transmissionFactor; + } + if (data2.hasOwnProperty("transmissionTexture")) { + material.refractionMapChannel = "r"; + material.refractionMap = textures[data2.transmissionTexture.index]; + extractTextureTransform(data2.transmissionTexture, material, ["refraction"]); + } +}; +var extensionSheen = (data2, material, textures) => { + material.useSheen = true; + if (data2.hasOwnProperty("sheenColorFactor")) { + const color = data2.sheenColorFactor; + material.sheen.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2)); + } else { + material.sheen.set(1, 1, 1); + } + if (data2.hasOwnProperty("sheenColorTexture")) { + material.sheenMap = textures[data2.sheenColorTexture.index]; + material.sheenEncoding = "srgb"; + extractTextureTransform(data2.sheenColorTexture, material, ["sheen"]); + } + if (data2.hasOwnProperty("sheenRoughnessFactor")) { + material.sheenGloss = data2.sheenRoughnessFactor; + } else { + material.sheenGloss = 0; + } + if (data2.hasOwnProperty("sheenRoughnessTexture")) { + material.sheenGlossMap = textures[data2.sheenRoughnessTexture.index]; + material.sheenGlossMapChannel = "a"; + extractTextureTransform(data2.sheenRoughnessTexture, material, ["sheenGloss"]); + } + material.sheenGlossInvert = true; +}; +var extensionVolume = (data2, material, textures) => { + material.blendType = BLEND_NORMAL; + material.useDynamicRefraction = true; + if (data2.hasOwnProperty("thicknessFactor")) { + material.thickness = data2.thicknessFactor; + } + if (data2.hasOwnProperty("thicknessTexture")) { + material.thicknessMap = textures[data2.thicknessTexture.index]; + material.thicknessMapChannel = "g"; + extractTextureTransform(data2.thicknessTexture, material, ["thickness"]); + } + if (data2.hasOwnProperty("attenuationDistance")) { + material.attenuationDistance = data2.attenuationDistance; + } + if (data2.hasOwnProperty("attenuationColor")) { + const color = data2.attenuationColor; + material.attenuation.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2)); + } +}; +var extensionEmissiveStrength = (data2, material, textures) => { + if (data2.hasOwnProperty("emissiveStrength")) { + material.emissiveIntensity = data2.emissiveStrength; + } +}; +var extensionIridescence = (data2, material, textures) => { + material.useIridescence = true; + if (data2.hasOwnProperty("iridescenceFactor")) { + material.iridescence = data2.iridescenceFactor; + } + if (data2.hasOwnProperty("iridescenceTexture")) { + material.iridescenceMapChannel = "r"; + material.iridescenceMap = textures[data2.iridescenceTexture.index]; + extractTextureTransform(data2.iridescenceTexture, material, ["iridescence"]); + } + if (data2.hasOwnProperty("iridescenceIor")) { + material.iridescenceRefractionIndex = data2.iridescenceIor; + } + if (data2.hasOwnProperty("iridescenceThicknessMinimum")) { + material.iridescenceThicknessMin = data2.iridescenceThicknessMinimum; + } + if (data2.hasOwnProperty("iridescenceThicknessMaximum")) { + material.iridescenceThicknessMax = data2.iridescenceThicknessMaximum; + } + if (data2.hasOwnProperty("iridescenceThicknessTexture")) { + material.iridescenceThicknessMapChannel = "g"; + material.iridescenceThicknessMap = textures[data2.iridescenceThicknessTexture.index]; + extractTextureTransform(data2.iridescenceThicknessTexture, material, ["iridescenceThickness"]); + } +}; +var createMaterial = (gltfMaterial, textures, flipV) => { + const material = new StandardMaterial(); + material.occludeSpecular = SPECOCC_AO; + material.diffuseTint = true; + material.diffuseVertexColor = true; + material.specularTint = true; + material.specularVertexColor = true; + if (gltfMaterial.hasOwnProperty("name")) { + material.name = gltfMaterial.name; + } + let color, texture; + if (gltfMaterial.hasOwnProperty("pbrMetallicRoughness")) { + const pbrData = gltfMaterial.pbrMetallicRoughness; + if (pbrData.hasOwnProperty("baseColorFactor")) { + color = pbrData.baseColorFactor; + material.diffuse.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2)); + material.opacity = color[3]; + } else { + material.diffuse.set(1, 1, 1); + material.opacity = 1; + } + if (pbrData.hasOwnProperty("baseColorTexture")) { + const baseColorTexture = pbrData.baseColorTexture; + texture = textures[baseColorTexture.index]; + material.diffuseMap = texture; + material.diffuseMapChannel = "rgb"; + material.opacityMap = texture; + material.opacityMapChannel = "a"; + extractTextureTransform(baseColorTexture, material, ["diffuse", "opacity"]); + } + material.useMetalness = true; + material.specular.set(1, 1, 1); + if (pbrData.hasOwnProperty("metallicFactor")) { + material.metalness = pbrData.metallicFactor; + } else { + material.metalness = 1; + } + if (pbrData.hasOwnProperty("roughnessFactor")) { + material.gloss = pbrData.roughnessFactor; + } else { + material.gloss = 1; + } + material.glossInvert = true; + if (pbrData.hasOwnProperty("metallicRoughnessTexture")) { + const metallicRoughnessTexture = pbrData.metallicRoughnessTexture; + material.metalnessMap = material.glossMap = textures[metallicRoughnessTexture.index]; + material.metalnessMapChannel = "b"; + material.glossMapChannel = "g"; + extractTextureTransform(metallicRoughnessTexture, material, ["gloss", "metalness"]); + } + } + if (gltfMaterial.hasOwnProperty("normalTexture")) { + const normalTexture = gltfMaterial.normalTexture; + material.normalMap = textures[normalTexture.index]; + extractTextureTransform(normalTexture, material, ["normal"]); + if (normalTexture.hasOwnProperty("scale")) { + material.bumpiness = normalTexture.scale; + } + } + if (gltfMaterial.hasOwnProperty("occlusionTexture")) { + const occlusionTexture = gltfMaterial.occlusionTexture; + material.aoMap = textures[occlusionTexture.index]; + material.aoMapChannel = "r"; + extractTextureTransform(occlusionTexture, material, ["ao"]); + } + if (gltfMaterial.hasOwnProperty("emissiveFactor")) { + color = gltfMaterial.emissiveFactor; + material.emissive.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2)); + material.emissiveTint = true; + } else { + material.emissive.set(0, 0, 0); + material.emissiveTint = false; + } + if (gltfMaterial.hasOwnProperty("emissiveTexture")) { + const emissiveTexture = gltfMaterial.emissiveTexture; + material.emissiveMap = textures[emissiveTexture.index]; + extractTextureTransform(emissiveTexture, material, ["emissive"]); + } + if (gltfMaterial.hasOwnProperty("alphaMode")) { + switch (gltfMaterial.alphaMode) { + case "MASK": + material.blendType = BLEND_NONE; + if (gltfMaterial.hasOwnProperty("alphaCutoff")) { + material.alphaTest = gltfMaterial.alphaCutoff; + } else { + material.alphaTest = 0.5; + } + break; + case "BLEND": + material.blendType = BLEND_NORMAL; + material.depthWrite = false; + break; + default: + case "OPAQUE": + material.blendType = BLEND_NONE; + break; + } + } else { + material.blendType = BLEND_NONE; + } + if (gltfMaterial.hasOwnProperty("doubleSided")) { + material.twoSidedLighting = gltfMaterial.doubleSided; + material.cull = gltfMaterial.doubleSided ? CULLFACE_NONE : CULLFACE_BACK; + } else { + material.twoSidedLighting = false; + material.cull = CULLFACE_BACK; + } + const extensions = { + "KHR_materials_clearcoat": extensionClearCoat, + "KHR_materials_emissive_strength": extensionEmissiveStrength, + "KHR_materials_ior": extensionIor, + "KHR_materials_dispersion": extensionDispersion, + "KHR_materials_iridescence": extensionIridescence, + "KHR_materials_pbrSpecularGlossiness": extensionPbrSpecGlossiness, + "KHR_materials_sheen": extensionSheen, + "KHR_materials_specular": extensionSpecular, + "KHR_materials_transmission": extensionTransmission, + "KHR_materials_unlit": extensionUnlit, + "KHR_materials_volume": extensionVolume + }; + if (gltfMaterial.hasOwnProperty("extensions")) { + for (const key in gltfMaterial.extensions) { + const extensionFunc = extensions[key]; + if (extensionFunc !== void 0) { + extensionFunc(gltfMaterial.extensions[key], material, textures); + } + } + } + material.update(); + return material; +}; +var createAnimation = (gltfAnimation, animationIndex, gltfAccessors, bufferViews, nodes, meshes, gltfNodes) => { + const createAnimData = (gltfAccessor) => { + return new AnimData(getNumComponents(gltfAccessor.type), getAccessorDataFloat32(gltfAccessor, bufferViews)); + }; + const interpMap = { + "STEP": INTERPOLATION_STEP, + "LINEAR": INTERPOLATION_LINEAR, + "CUBICSPLINE": INTERPOLATION_CUBIC + }; + const inputMap = {}; + const outputMap = {}; + const curveMap = {}; + let outputCounter = 1; + let i; + for (i = 0; i < gltfAnimation.samplers.length; ++i) { + const sampler = gltfAnimation.samplers[i]; + if (!inputMap.hasOwnProperty(sampler.input)) { + inputMap[sampler.input] = createAnimData(gltfAccessors[sampler.input]); + } + if (!outputMap.hasOwnProperty(sampler.output)) { + outputMap[sampler.output] = createAnimData(gltfAccessors[sampler.output]); + } + const interpolation = sampler.hasOwnProperty("interpolation") && interpMap.hasOwnProperty(sampler.interpolation) ? interpMap[sampler.interpolation] : INTERPOLATION_LINEAR; + const curve = { + paths: [], + input: sampler.input, + output: sampler.output, + interpolation + }; + curveMap[i] = curve; + } + const quatArrays = []; + const transformSchema = { + "translation": "localPosition", + "rotation": "localRotation", + "scale": "localScale" + }; + const constructNodePath = (node) => { + const path2 = []; + while (node) { + path2.unshift(node.name); + node = node.parent; + } + return path2; + }; + const createMorphTargetCurves = (curve, gltfNode, entityPath) => { + const out = outputMap[curve.output]; + if (!out) { + return; + } + let targetNames; + if (meshes && meshes[gltfNode.mesh]) { + const mesh = meshes[gltfNode.mesh]; + if (mesh.hasOwnProperty("extras") && mesh.extras.hasOwnProperty("targetNames")) { + targetNames = mesh.extras.targetNames; + } + } + const outData = out.data; + const morphTargetCount = outData.length / inputMap[curve.input].data.length; + const keyframeCount = outData.length / morphTargetCount; + const singleBufferSize = keyframeCount * 4; + const buffer = new ArrayBuffer(singleBufferSize * morphTargetCount); + for (let j = 0; j < morphTargetCount; j++) { + var _targetNames; + const morphTargetOutput = new Float32Array(buffer, singleBufferSize * j, keyframeCount); + for (let k = 0; k < keyframeCount; k++) { + morphTargetOutput[k] = outData[k * morphTargetCount + j]; + } + const output = new AnimData(1, morphTargetOutput); + const weightName = (_targetNames = targetNames) != null && _targetNames[j] ? `name.${targetNames[j]}` : j; + outputMap[-outputCounter] = output; + const morphCurve = { + paths: [{ + entityPath, + component: "graph", + propertyPath: [`weight.${weightName}`] + }], + input: curve.input, + output: -outputCounter, + interpolation: curve.interpolation + }; + outputCounter++; + curveMap[`morphCurve-${i}-${j}`] = morphCurve; + } + }; + for (i = 0; i < gltfAnimation.channels.length; ++i) { + const channel = gltfAnimation.channels[i]; + const target2 = channel.target; + const curve = curveMap[channel.sampler]; + const node = nodes[target2.node]; + const gltfNode = gltfNodes[target2.node]; + const entityPath = constructNodePath(node); + if (target2.path.startsWith("weights")) { + createMorphTargetCurves(curve, gltfNode, entityPath); + curveMap[channel.sampler].morphCurve = true; + } else { + curve.paths.push({ + entityPath, + component: "graph", + propertyPath: [transformSchema[target2.path]] + }); + } + } + const inputs = []; + const outputs = []; + const curves = []; + for (const inputKey in inputMap) { + inputs.push(inputMap[inputKey]); + inputMap[inputKey] = inputs.length - 1; + } + for (const outputKey in outputMap) { + outputs.push(outputMap[outputKey]); + outputMap[outputKey] = outputs.length - 1; + } + for (const curveKey in curveMap) { + const curveData = curveMap[curveKey]; + if (curveData.morphCurve) { + continue; + } + curves.push(new AnimCurve(curveData.paths, inputMap[curveData.input], outputMap[curveData.output], curveData.interpolation)); + if (curveData.paths.length > 0 && curveData.paths[0].propertyPath[0] === "localRotation" && curveData.interpolation !== INTERPOLATION_CUBIC) { + quatArrays.push(curves[curves.length - 1].output); + } + } + quatArrays.sort(); + let prevIndex = null; + let data2; + for (i = 0; i < quatArrays.length; ++i) { + const index = quatArrays[i]; + if (i === 0 || index !== prevIndex) { + data2 = outputs[index]; + if (data2.components === 4) { + const d = data2.data; + const len = d.length - 4; + for (let j = 0; j < len; j += 4) { + const dp = d[j + 0] * d[j + 4] + d[j + 1] * d[j + 5] + d[j + 2] * d[j + 6] + d[j + 3] * d[j + 7]; + if (dp < 0) { + d[j + 4] *= -1; + d[j + 5] *= -1; + d[j + 6] *= -1; + d[j + 7] *= -1; + } + } + } + prevIndex = index; + } + } + let duration = 0; + for (i = 0; i < inputs.length; i++) { + data2 = inputs[i]._data; + duration = Math.max(duration, data2.length === 0 ? 0 : data2[data2.length - 1]); + } + return new AnimTrack(gltfAnimation.hasOwnProperty("name") ? gltfAnimation.name : "animation_" + animationIndex, duration, inputs, outputs, curves); +}; +var tempMat = new Mat4(); +var tempVec = new Vec3(); +var createNode = (gltfNode, nodeIndex) => { + const entity = new GraphNode(); + if (gltfNode.hasOwnProperty("name") && gltfNode.name.length > 0) { + entity.name = gltfNode.name; + } else { + entity.name = "node_" + nodeIndex; + } + if (gltfNode.hasOwnProperty("matrix")) { + tempMat.data.set(gltfNode.matrix); + tempMat.getTranslation(tempVec); + entity.setLocalPosition(tempVec); + tempMat.getEulerAngles(tempVec); + entity.setLocalEulerAngles(tempVec); + tempMat.getScale(tempVec); + entity.setLocalScale(tempVec); + } + if (gltfNode.hasOwnProperty("rotation")) { + const r = gltfNode.rotation; + entity.setLocalRotation(r[0], r[1], r[2], r[3]); + } + if (gltfNode.hasOwnProperty("translation")) { + const t = gltfNode.translation; + entity.setLocalPosition(t[0], t[1], t[2]); + } + if (gltfNode.hasOwnProperty("scale")) { + const s = gltfNode.scale; + entity.setLocalScale(s[0], s[1], s[2]); + } + return entity; +}; +var createCamera = (gltfCamera, node) => { + const projection = gltfCamera.type === "orthographic" ? PROJECTION_ORTHOGRAPHIC : PROJECTION_PERSPECTIVE; + const gltfProperties = projection === PROJECTION_ORTHOGRAPHIC ? gltfCamera.orthographic : gltfCamera.perspective; + const componentData = { + enabled: false, + projection, + nearClip: gltfProperties.znear, + aspectRatioMode: ASPECT_AUTO + }; + if (gltfProperties.zfar) { + componentData.farClip = gltfProperties.zfar; + } + if (projection === PROJECTION_ORTHOGRAPHIC) { + componentData.orthoHeight = 0.5 * gltfProperties.ymag; + if (gltfProperties.ymag) { + componentData.aspectRatioMode = ASPECT_MANUAL; + componentData.aspectRatio = gltfProperties.xmag / gltfProperties.ymag; + } + } else { + componentData.fov = gltfProperties.yfov * math.RAD_TO_DEG; + if (gltfProperties.aspectRatio) { + componentData.aspectRatioMode = ASPECT_MANUAL; + componentData.aspectRatio = gltfProperties.aspectRatio; + } + } + const cameraEntity = new Entity(gltfCamera.name); + cameraEntity.addComponent("camera", componentData); + return cameraEntity; +}; +var createLight = (gltfLight, node) => { + const lightProps = { + enabled: false, + type: gltfLight.type === "point" ? "omni" : gltfLight.type, + color: gltfLight.hasOwnProperty("color") ? new Color(gltfLight.color) : Color.WHITE, + range: gltfLight.hasOwnProperty("range") ? gltfLight.range : 9999, + falloffMode: LIGHTFALLOFF_INVERSESQUARED, + intensity: gltfLight.hasOwnProperty("intensity") ? math.clamp(gltfLight.intensity, 0, 2) : 1 + }; + if (gltfLight.hasOwnProperty("spot")) { + lightProps.innerConeAngle = gltfLight.spot.hasOwnProperty("innerConeAngle") ? gltfLight.spot.innerConeAngle * math.RAD_TO_DEG : 0; + lightProps.outerConeAngle = gltfLight.spot.hasOwnProperty("outerConeAngle") ? gltfLight.spot.outerConeAngle * math.RAD_TO_DEG : Math.PI / 4; + } + if (gltfLight.hasOwnProperty("intensity")) { + lightProps.luminance = gltfLight.intensity * Light.getLightUnitConversion(lightTypes[lightProps.type], lightProps.outerConeAngle, lightProps.innerConeAngle); + } + const lightEntity = new Entity(node.name); + lightEntity.rotateLocal(90, 0, 0); + lightEntity.addComponent("light", lightProps); + return lightEntity; +}; +var createSkins = (device, gltf, nodes, bufferViews) => { + if (!gltf.hasOwnProperty("skins") || gltf.skins.length === 0) { + return []; + } + const glbSkins = /* @__PURE__ */ new Map(); + return gltf.skins.map((gltfSkin) => { + return createSkin(device, gltfSkin, gltf.accessors, bufferViews, nodes, glbSkins); + }); +}; +var createMeshes = (device, gltf, bufferViews, flipV, options) => { + var _gltf$meshes, _gltf$accessors, _gltf$bufferViews; + const vertexBufferDict = {}; + const meshVariants = {}; + const meshDefaultMaterials = {}; + const promises = []; + const valid = !options.skipMeshes && (gltf == null || (_gltf$meshes = gltf.meshes) == null ? void 0 : _gltf$meshes.length) && (gltf == null || (_gltf$accessors = gltf.accessors) == null ? void 0 : _gltf$accessors.length) && (gltf == null || (_gltf$bufferViews = gltf.bufferViews) == null ? void 0 : _gltf$bufferViews.length); + const meshes = valid ? gltf.meshes.map((gltfMesh) => { + return createMesh(device, gltfMesh, gltf.accessors, bufferViews, flipV, vertexBufferDict, meshVariants, meshDefaultMaterials, options, promises); + }) : []; + return { + meshes, + meshVariants, + meshDefaultMaterials, + promises + }; +}; +var createMaterials = (gltf, textures, options, flipV) => { + var _options$material, _options$material$pro, _options$material2, _options$material3; + if (!gltf.hasOwnProperty("materials") || gltf.materials.length === 0) { + return []; + } + const preprocess = options == null || (_options$material = options.material) == null ? void 0 : _options$material.preprocess; + const process = (_options$material$pro = options == null || (_options$material2 = options.material) == null ? void 0 : _options$material2.process) != null ? _options$material$pro : createMaterial; + const postprocess = options == null || (_options$material3 = options.material) == null ? void 0 : _options$material3.postprocess; + return gltf.materials.map((gltfMaterial) => { + if (preprocess) { + preprocess(gltfMaterial); + } + const material = process(gltfMaterial, textures, flipV); + if (postprocess) { + postprocess(gltfMaterial, material); + } + return material; + }); +}; +var createVariants = (gltf) => { + if (!gltf.hasOwnProperty("extensions") || !gltf.extensions.hasOwnProperty("KHR_materials_variants")) return null; + const data2 = gltf.extensions.KHR_materials_variants.variants; + const variants = {}; + for (let i = 0; i < data2.length; i++) { + variants[data2[i].name] = i; + } + return variants; +}; +var createAnimations = (gltf, nodes, bufferViews, options) => { + var _options$animation, _options$animation2; + if (!gltf.hasOwnProperty("animations") || gltf.animations.length === 0) { + return []; + } + const preprocess = options == null || (_options$animation = options.animation) == null ? void 0 : _options$animation.preprocess; + const postprocess = options == null || (_options$animation2 = options.animation) == null ? void 0 : _options$animation2.postprocess; + return gltf.animations.map((gltfAnimation, index) => { + if (preprocess) { + preprocess(gltfAnimation); + } + const animation = createAnimation(gltfAnimation, index, gltf.accessors, bufferViews, nodes, gltf.meshes, gltf.nodes); + if (postprocess) { + postprocess(gltfAnimation, animation); + } + return animation; + }); +}; +var createNodes = (gltf, options) => { + var _options$node, _options$node$process, _options$node2, _options$node3; + if (!gltf.hasOwnProperty("nodes") || gltf.nodes.length === 0) { + return []; + } + const preprocess = options == null || (_options$node = options.node) == null ? void 0 : _options$node.preprocess; + const process = (_options$node$process = options == null || (_options$node2 = options.node) == null ? void 0 : _options$node2.process) != null ? _options$node$process : createNode; + const postprocess = options == null || (_options$node3 = options.node) == null ? void 0 : _options$node3.postprocess; + const nodes = gltf.nodes.map((gltfNode, index) => { + if (preprocess) { + preprocess(gltfNode); + } + const node = process(gltfNode, index); + if (postprocess) { + postprocess(gltfNode, node); + } + return node; + }); + for (let i = 0; i < gltf.nodes.length; ++i) { + const gltfNode = gltf.nodes[i]; + if (gltfNode.hasOwnProperty("children")) { + const parent = nodes[i]; + const uniqueNames = {}; + for (let j = 0; j < gltfNode.children.length; ++j) { + const child = nodes[gltfNode.children[j]]; + if (!child.parent) { + if (uniqueNames.hasOwnProperty(child.name)) { + child.name += uniqueNames[child.name]++; + } else { + uniqueNames[child.name] = 1; + } + parent.addChild(child); + } + } + } + } + return nodes; +}; +var createScenes = (gltf, nodes) => { + var _gltf$scenes$0$nodes; + const scenes = []; + const count = gltf.scenes.length; + if (count === 1 && ((_gltf$scenes$0$nodes = gltf.scenes[0].nodes) == null ? void 0 : _gltf$scenes$0$nodes.length) === 1) { + const nodeIndex = gltf.scenes[0].nodes[0]; + scenes.push(nodes[nodeIndex]); + } else { + for (let i = 0; i < count; i++) { + const scene2 = gltf.scenes[i]; + if (scene2.nodes) { + const sceneRoot = new GraphNode(scene2.name); + for (let n = 0; n < scene2.nodes.length; n++) { + const childNode = nodes[scene2.nodes[n]]; + sceneRoot.addChild(childNode); + } + scenes.push(sceneRoot); + } + } + } + return scenes; +}; +var createCameras = (gltf, nodes, options) => { + let cameras = null; + if (gltf.hasOwnProperty("nodes") && gltf.hasOwnProperty("cameras") && gltf.cameras.length > 0) { + var _options$camera, _options$camera$proce, _options$camera2, _options$camera3; + const preprocess = options == null || (_options$camera = options.camera) == null ? void 0 : _options$camera.preprocess; + const process = (_options$camera$proce = options == null || (_options$camera2 = options.camera) == null ? void 0 : _options$camera2.process) != null ? _options$camera$proce : createCamera; + const postprocess = options == null || (_options$camera3 = options.camera) == null ? void 0 : _options$camera3.postprocess; + gltf.nodes.forEach((gltfNode, nodeIndex) => { + if (gltfNode.hasOwnProperty("camera")) { + const gltfCamera = gltf.cameras[gltfNode.camera]; + if (gltfCamera) { + if (preprocess) { + preprocess(gltfCamera); + } + const camera = process(gltfCamera, nodes[nodeIndex]); + if (postprocess) { + postprocess(gltfCamera, camera); + } + if (camera) { + if (!cameras) cameras = /* @__PURE__ */ new Map(); + cameras.set(gltfNode, camera); + } + } + } + }); + } + return cameras; +}; +var createLights = (gltf, nodes, options) => { + let lights2 = null; + if (gltf.hasOwnProperty("nodes") && gltf.hasOwnProperty("extensions") && gltf.extensions.hasOwnProperty("KHR_lights_punctual") && gltf.extensions.KHR_lights_punctual.hasOwnProperty("lights")) { + const gltfLights = gltf.extensions.KHR_lights_punctual.lights; + if (gltfLights.length) { + var _options$light, _options$light$proces, _options$light2, _options$light3; + const preprocess = options == null || (_options$light = options.light) == null ? void 0 : _options$light.preprocess; + const process = (_options$light$proces = options == null || (_options$light2 = options.light) == null ? void 0 : _options$light2.process) != null ? _options$light$proces : createLight; + const postprocess = options == null || (_options$light3 = options.light) == null ? void 0 : _options$light3.postprocess; + gltf.nodes.forEach((gltfNode, nodeIndex) => { + if (gltfNode.hasOwnProperty("extensions") && gltfNode.extensions.hasOwnProperty("KHR_lights_punctual") && gltfNode.extensions.KHR_lights_punctual.hasOwnProperty("light")) { + const lightIndex = gltfNode.extensions.KHR_lights_punctual.light; + const gltfLight = gltfLights[lightIndex]; + if (gltfLight) { + if (preprocess) { + preprocess(gltfLight); + } + const light = process(gltfLight, nodes[nodeIndex]); + if (postprocess) { + postprocess(gltfLight, light); + } + if (light) { + if (!lights2) lights2 = /* @__PURE__ */ new Map(); + lights2.set(gltfNode, light); + } + } + } + }); + } + } + return lights2; +}; +var linkSkins = (gltf, renders, skins) => { + gltf.nodes.forEach((gltfNode) => { + if (gltfNode.hasOwnProperty("mesh") && gltfNode.hasOwnProperty("skin")) { + const meshGroup = renders[gltfNode.mesh].meshes; + meshGroup.forEach((mesh) => { + mesh.skin = skins[gltfNode.skin]; + }); + } + }); +}; +var createResources = async (device, gltf, bufferViews, textures, options) => { + var _options$global, _options$global2; + const preprocess = options == null || (_options$global = options.global) == null ? void 0 : _options$global.preprocess; + const postprocess = options == null || (_options$global2 = options.global) == null ? void 0 : _options$global2.postprocess; + if (preprocess) { + preprocess(gltf); + } + const flipV = gltf.asset && gltf.asset.generator === "PlayCanvas"; + const nodes = createNodes(gltf, options); + const scenes = createScenes(gltf, nodes); + const lights2 = createLights(gltf, nodes, options); + const cameras = createCameras(gltf, nodes, options); + const variants = createVariants(gltf); + const bufferViewData = await Promise.all(bufferViews); + const { + meshes, + meshVariants, + meshDefaultMaterials, + promises + } = createMeshes(device, gltf, bufferViewData, flipV, options); + const animations = createAnimations(gltf, nodes, bufferViewData, options); + const textureAssets = await Promise.all(textures); + const textureInstances = textureAssets.map((t) => t.resource); + const materials = createMaterials(gltf, textureInstances, options, flipV); + const skins = createSkins(device, gltf, nodes, bufferViewData); + const renders = []; + for (let i = 0; i < meshes.length; i++) { + renders[i] = new Render(); + renders[i].meshes = meshes[i]; + } + linkSkins(gltf, renders, skins); + const result = new GlbResources(); + result.gltf = gltf; + result.nodes = nodes; + result.scenes = scenes; + result.animations = animations; + result.textures = textureAssets; + result.materials = materials; + result.variants = variants; + result.meshVariants = meshVariants; + result.meshDefaultMaterials = meshDefaultMaterials; + result.renders = renders; + result.skins = skins; + result.lights = lights2; + result.cameras = cameras; + if (postprocess) { + postprocess(gltf, result); + } + await Promise.all(promises); + return result; +}; +var applySampler = (texture, gltfSampler) => { + const getFilter = (filter, defaultValue) => { + switch (filter) { + case 9728: + return FILTER_NEAREST; + case 9729: + return FILTER_LINEAR; + case 9984: + return FILTER_NEAREST_MIPMAP_NEAREST; + case 9985: + return FILTER_LINEAR_MIPMAP_NEAREST; + case 9986: + return FILTER_NEAREST_MIPMAP_LINEAR; + case 9987: + return FILTER_LINEAR_MIPMAP_LINEAR; + default: + return defaultValue; + } + }; + const getWrap = (wrap, defaultValue) => { + switch (wrap) { + case 33071: + return ADDRESS_CLAMP_TO_EDGE; + case 33648: + return ADDRESS_MIRRORED_REPEAT; + case 10497: + return ADDRESS_REPEAT; + default: + return defaultValue; + } + }; + if (texture) { + var _gltfSampler; + gltfSampler = (_gltfSampler = gltfSampler) != null ? _gltfSampler : {}; + texture.minFilter = getFilter(gltfSampler.minFilter, FILTER_LINEAR_MIPMAP_LINEAR); + texture.magFilter = getFilter(gltfSampler.magFilter, FILTER_LINEAR); + texture.addressU = getWrap(gltfSampler.wrapS, ADDRESS_REPEAT); + texture.addressV = getWrap(gltfSampler.wrapT, ADDRESS_REPEAT); + } +}; +var gltfTextureUniqueId = 0; +var createImages = (gltf, bufferViews, urlBase, registry, options) => { + var _options$image, _options$image2, _options$image3; + if (!gltf.images || gltf.images.length === 0) { + return []; + } + const preprocess = options == null || (_options$image = options.image) == null ? void 0 : _options$image.preprocess; + const processAsync = options == null || (_options$image2 = options.image) == null ? void 0 : _options$image2.processAsync; + const postprocess = options == null || (_options$image3 = options.image) == null ? void 0 : _options$image3.postprocess; + const mimeTypeFileExtensions = { + "image/png": "png", + "image/jpeg": "jpg", + "image/basis": "basis", + "image/ktx": "ktx", + "image/ktx2": "ktx2", + "image/vnd-ms.dds": "dds" + }; + const loadTexture = (gltfImage, url, bufferView, mimeType, options2) => { + return new Promise((resolve, reject) => { + const continuation = (bufferViewData) => { + const name = (gltfImage.name || "gltf-texture") + "-" + gltfTextureUniqueId++; + const file = { + url: url || name + }; + if (bufferViewData) { + file.contents = bufferViewData.slice(0).buffer; + } + if (mimeType) { + const extension = mimeTypeFileExtensions[mimeType]; + if (extension) { + file.filename = file.url + "." + extension; + } + } + const asset2 = new Asset(name, "texture", file, null, options2); + asset2.on("load", (asset3) => resolve(asset3)); + asset2.on("error", (err) => reject(err)); + registry.add(asset2); + registry.load(asset2); + }; + if (bufferView) { + bufferView.then((bufferViewData) => continuation(bufferViewData)); + } else { + continuation(null); + } + }); + }; + return gltf.images.map((gltfImage, i) => { + if (preprocess) { + preprocess(gltfImage); + } + let promise; + if (processAsync) { + promise = new Promise((resolve, reject) => { + processAsync(gltfImage, (err, textureAsset) => { + if (err) reject(err); + else resolve(textureAsset); + }); + }); + } else { + promise = new Promise((resolve) => { + resolve(null); + }); + } + promise = promise.then((textureAsset) => { + if (textureAsset) { + return textureAsset; + } else if (gltfImage.hasOwnProperty("uri")) { + if (isDataURI(gltfImage.uri)) { + return loadTexture(gltfImage, gltfImage.uri, null, getDataURIMimeType(gltfImage.uri), null); + } + return loadTexture(gltfImage, ABSOLUTE_URL.test(gltfImage.uri) ? gltfImage.uri : path.join(urlBase, gltfImage.uri), null, null, { + crossOrigin: "anonymous" + }); + } else if (gltfImage.hasOwnProperty("bufferView") && gltfImage.hasOwnProperty("mimeType")) { + return loadTexture(gltfImage, null, bufferViews[gltfImage.bufferView], gltfImage.mimeType, null); + } + return Promise.reject(new Error(`Invalid image found in gltf (neither uri or bufferView found). index=${i}`)); + }); + if (postprocess) { + promise = promise.then((textureAsset) => { + postprocess(gltfImage, textureAsset); + return textureAsset; + }); + } + return promise; + }); +}; +var createTextures = (gltf, images, options) => { + var _gltf$images, _gltf$textures, _options$texture, _options$texture2, _options$texture3; + if (!(gltf != null && (_gltf$images = gltf.images) != null && _gltf$images.length) || !(gltf != null && (_gltf$textures = gltf.textures) != null && _gltf$textures.length)) { + return []; + } + const preprocess = options == null || (_options$texture = options.texture) == null ? void 0 : _options$texture.preprocess; + const processAsync = options == null || (_options$texture2 = options.texture) == null ? void 0 : _options$texture2.processAsync; + const postprocess = options == null || (_options$texture3 = options.texture) == null ? void 0 : _options$texture3.postprocess; + const seenImages = /* @__PURE__ */ new Set(); + return gltf.textures.map((gltfTexture) => { + if (preprocess) { + preprocess(gltfTexture); + } + let promise; + if (processAsync) { + promise = new Promise((resolve, reject) => { + processAsync(gltfTexture, gltf.images, (err, gltfImageIndex) => { + if (err) reject(err); + else resolve(gltfImageIndex); + }); + }); + } else { + promise = new Promise((resolve) => { + resolve(null); + }); + } + promise = promise.then((gltfImageIndex) => { + var _ref4, _ref22, _gltfImageIndex, _gltfTexture$extensio, _gltfTexture$extensio2; + gltfImageIndex = (_ref4 = (_ref22 = (_gltfImageIndex = gltfImageIndex) != null ? _gltfImageIndex : gltfTexture == null || (_gltfTexture$extensio = gltfTexture.extensions) == null || (_gltfTexture$extensio = _gltfTexture$extensio.KHR_texture_basisu) == null ? void 0 : _gltfTexture$extensio.source) != null ? _ref22 : gltfTexture == null || (_gltfTexture$extensio2 = gltfTexture.extensions) == null || (_gltfTexture$extensio2 = _gltfTexture$extensio2.EXT_texture_webp) == null ? void 0 : _gltfTexture$extensio2.source) != null ? _ref4 : gltfTexture.source; + const cloneAsset = seenImages.has(gltfImageIndex); + seenImages.add(gltfImageIndex); + return images[gltfImageIndex].then((imageAsset) => { + var _gltf$samplers; + const asset2 = cloneAsset ? cloneTextureAsset(imageAsset) : imageAsset; + applySampler(asset2.resource, ((_gltf$samplers = gltf.samplers) != null ? _gltf$samplers : [])[gltfTexture.sampler]); + return asset2; + }); + }); + if (postprocess) { + promise = promise.then((textureAsset) => { + postprocess(gltfTexture, textureAsset); + return textureAsset; + }); + } + return promise; + }); +}; +var loadBuffers = (gltf, binaryChunk, urlBase, options) => { + var _options$buffer, _options$buffer2, _options$buffer3; + if (!gltf.buffers || gltf.buffers.length === 0) { + return []; + } + const preprocess = options == null || (_options$buffer = options.buffer) == null ? void 0 : _options$buffer.preprocess; + const processAsync = options == null || (_options$buffer2 = options.buffer) == null ? void 0 : _options$buffer2.processAsync; + const postprocess = options == null || (_options$buffer3 = options.buffer) == null ? void 0 : _options$buffer3.postprocess; + return gltf.buffers.map((gltfBuffer, i) => { + if (preprocess) { + preprocess(gltfBuffer); + } + let promise; + if (processAsync) { + promise = new Promise((resolve, reject) => { + processAsync(gltfBuffer, (err, arrayBuffer) => { + if (err) reject(err); + else resolve(arrayBuffer); + }); + }); + } else { + promise = new Promise((resolve) => { + resolve(null); + }); + } + promise = promise.then((arrayBuffer) => { + if (arrayBuffer) { + return arrayBuffer; + } else if (gltfBuffer.hasOwnProperty("uri")) { + if (isDataURI(gltfBuffer.uri)) { + const byteString = atob(gltfBuffer.uri.split(",")[1]); + const binaryArray = new Uint8Array(byteString.length); + for (let j = 0; j < byteString.length; j++) { + binaryArray[j] = byteString.charCodeAt(j); + } + return binaryArray; + } + return new Promise((resolve, reject) => { + http.get(ABSOLUTE_URL.test(gltfBuffer.uri) ? gltfBuffer.uri : path.join(urlBase, gltfBuffer.uri), { + cache: true, + responseType: "arraybuffer", + retry: false + }, (err, result) => { + if (err) reject(err); + else resolve(new Uint8Array(result)); + }); + }); + } + return binaryChunk; + }); + if (postprocess) { + promise = promise.then((buffer) => { + postprocess(gltf.buffers[i], buffer); + return buffer; + }); + } + return promise; + }); +}; +var parseGltf = (gltfChunk, callback) => { + const decodeBinaryUtf8 = (array2) => { + if (typeof TextDecoder !== "undefined") { + return new TextDecoder().decode(array2); + } + let str = ""; + for (let i = 0; i < array2.length; i++) { + str += String.fromCharCode(array2[i]); + } + return decodeURIComponent(escape(str)); + }; + const gltf = JSON.parse(decodeBinaryUtf8(gltfChunk)); + if (gltf.asset && gltf.asset.version && parseFloat(gltf.asset.version) < 2) { + callback(`Invalid gltf version. Expected version 2.0 or above but found version '${gltf.asset.version}'.`); + return; + } + callback(null, gltf); +}; +var parseGlb = (glbData, callback) => { + const data2 = glbData instanceof ArrayBuffer ? new DataView(glbData) : new DataView(glbData.buffer, glbData.byteOffset, glbData.byteLength); + const magic = data2.getUint32(0, true); + const version2 = data2.getUint32(4, true); + const length = data2.getUint32(8, true); + if (magic !== 1179937895) { + callback("Invalid magic number found in glb header. Expected 0x46546C67, found 0x" + magic.toString(16)); + return; + } + if (version2 !== 2) { + callback("Invalid version number found in glb header. Expected 2, found " + version2); + return; + } + if (length <= 0 || length > data2.byteLength) { + callback("Invalid length found in glb header. Found " + length); + return; + } + const chunks = []; + let offset = 12; + while (offset < length) { + const chunkLength = data2.getUint32(offset, true); + if (offset + chunkLength + 8 > data2.byteLength) { + callback(`Invalid chunk length found in glb. Found ${chunkLength}`); + } + const chunkType = data2.getUint32(offset + 4, true); + const chunkData = new Uint8Array(data2.buffer, data2.byteOffset + offset + 8, chunkLength); + chunks.push({ + length: chunkLength, + type: chunkType, + data: chunkData + }); + offset += chunkLength + 8; + } + if (chunks.length !== 1 && chunks.length !== 2) { + callback("Invalid number of chunks found in glb file."); + return; + } + if (chunks[0].type !== 1313821514) { + callback(`Invalid chunk type found in glb file. Expected 0x4E4F534A, found 0x${chunks[0].type.toString(16)}`); + return; + } + if (chunks.length > 1 && chunks[1].type !== 5130562) { + callback(`Invalid chunk type found in glb file. Expected 0x004E4942, found 0x${chunks[1].type.toString(16)}`); + return; + } + callback(null, { + gltfChunk: chunks[0].data, + binaryChunk: chunks.length === 2 ? chunks[1].data : null + }); +}; +var parseChunk = (filename, data2, callback) => { + const hasGlbHeader = () => { + const u8 = new Uint8Array(data2); + return u8[0] === 103 && u8[1] === 108 && u8[2] === 84 && u8[3] === 70; + }; + if (filename && filename.toLowerCase().endsWith(".glb") || hasGlbHeader()) { + parseGlb(data2, callback); + } else { + callback(null, { + gltfChunk: data2, + binaryChunk: null + }); + } +}; +var createBufferViews = (gltf, buffers, options) => { + var _options$bufferView, _options$bufferView2, _options$bufferView3, _gltf$bufferViews2; + const result = []; + const preprocess = options == null || (_options$bufferView = options.bufferView) == null ? void 0 : _options$bufferView.preprocess; + const processAsync = options == null || (_options$bufferView2 = options.bufferView) == null ? void 0 : _options$bufferView2.processAsync; + const postprocess = options == null || (_options$bufferView3 = options.bufferView) == null ? void 0 : _options$bufferView3.postprocess; + if (!((_gltf$bufferViews2 = gltf.bufferViews) != null && _gltf$bufferViews2.length)) { + return result; + } + for (let i = 0; i < gltf.bufferViews.length; ++i) { + const gltfBufferView = gltf.bufferViews[i]; + if (preprocess) { + preprocess(gltfBufferView); + } + let promise; + if (processAsync) { + promise = new Promise((resolve, reject) => { + processAsync(gltfBufferView, buffers, (err, result2) => { + if (err) reject(err); + else resolve(result2); + }); + }); + } else { + promise = new Promise((resolve) => { + resolve(null); + }); + } + promise = promise.then((buffer) => { + if (buffer) { + return buffer; + } + return buffers[gltfBufferView.buffer].then((buffer2) => { + return new Uint8Array(buffer2.buffer, buffer2.byteOffset + (gltfBufferView.byteOffset || 0), gltfBufferView.byteLength); + }); + }); + if (gltfBufferView.hasOwnProperty("byteStride")) { + promise = promise.then((typedArray) => { + typedArray.byteStride = gltfBufferView.byteStride; + return typedArray; + }); + } + if (postprocess) { + promise = promise.then((typedArray) => { + postprocess(gltfBufferView, typedArray); + return typedArray; + }); + } + result.push(promise); + } + return result; +}; +var GlbParser = class { + static parse(filename, urlBase, data2, device, registry, options, callback) { + parseChunk(filename, data2, (err, chunks) => { + if (err) { + callback(err); + return; + } + parseGltf(chunks.gltfChunk, (err2, gltf) => { + if (err2) { + callback(err2); + return; + } + const buffers = loadBuffers(gltf, chunks.binaryChunk, urlBase, options); + const bufferViews = createBufferViews(gltf, buffers, options); + const images = createImages(gltf, bufferViews, urlBase, registry, options); + const textures = createTextures(gltf, images, options); + createResources(device, gltf, bufferViews, textures, options).then((result) => callback(null, result)).catch((err3) => callback(err3)); + }); + }); + } + static createDefaultMaterial() { + return createMaterial({ + name: "defaultGlbMaterial" + }, []); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/animation.js +var AnimationHandler = class extends ResourceHandler { + constructor(app2) { + super(app2, "animation"); + this.device = app2.graphicsDevice; + this.assets = app2.assets; + } + load(url, callback, asset2) { + if (typeof url === "string") { + url = { + load: url, + original: url + }; + } + const options = { + retry: this.maxRetries > 0, + maxRetries: this.maxRetries + }; + if (url.load.startsWith("blob:") || url.load.startsWith("data:")) { + if (path.getExtension(url.original).toLowerCase() === ".glb") { + options.responseType = Http.ResponseType.ARRAY_BUFFER; + } else { + options.responseType = Http.ResponseType.JSON; + } + } + http.get(url.load, options, (err, response) => { + if (err) { + callback(`Error loading animation resource: ${url.original} [${err}]`); + } else { + if (path.getExtension(url.original).toLowerCase() === ".glb") { + var _asset$options; + GlbParser.parse("filename.glb", "", response, this.device, this.assets, (_asset$options = asset2 == null ? void 0 : asset2.options) != null ? _asset$options : {}, (err2, parseResult) => { + if (err2) { + callback(err2); + } else { + var _asset$data; + const animations = parseResult.animations; + if (asset2 != null && (_asset$data = asset2.data) != null && _asset$data.events) { + for (let i = 0; i < animations.length; i++) { + animations[i].events = new AnimEvents(Object.values(asset2.data.events)); + } + } + parseResult.destroy(); + callback(null, animations); + } + }); + } else { + callback(null, this["_parseAnimationV" + response.animation.version](response)); + } + } + }); + } + open(url, data2, asset2) { + return data2; + } + _parseAnimationV3(data2) { + const animData = data2.animation; + const anim2 = new Animation(); + anim2.name = animData.name; + anim2.duration = animData.duration; + for (let i = 0; i < animData.nodes.length; i++) { + const node = new Node(); + const n = animData.nodes[i]; + node._name = n.name; + for (let j = 0; j < n.keys.length; j++) { + const k = n.keys[j]; + const t = k.time; + const p = k.pos; + const r = k.rot; + const s = k.scale; + const pos = new Vec3(p[0], p[1], p[2]); + const rot = new Quat2().setFromEulerAngles(r[0], r[1], r[2]); + const scl = new Vec3(s[0], s[1], s[2]); + const key = new Key(t, pos, rot, scl); + node._keys.push(key); + } + anim2.addNode(node); + } + return anim2; + } + _parseAnimationV4(data2) { + const animData = data2.animation; + const anim2 = new Animation(); + anim2.name = animData.name; + anim2.duration = animData.duration; + for (let i = 0; i < animData.nodes.length; i++) { + const node = new Node(); + const n = animData.nodes[i]; + node._name = n.name; + const defPos = n.defaults.p; + const defRot = n.defaults.r; + const defScl = n.defaults.s; + for (let j = 0; j < n.keys.length; j++) { + const k = n.keys[j]; + const t = k.t; + const p = defPos ? defPos : k.p; + const r = defRot ? defRot : k.r; + const s = defScl ? defScl : k.s; + const pos = new Vec3(p[0], p[1], p[2]); + const rot = new Quat2().setFromEulerAngles(r[0], r[1], r[2]); + const scl = new Vec3(s[0], s[1], s[2]); + const key = new Key(t, pos, rot, scl); + node._keys.push(key); + } + anim2.addNode(node); + } + return anim2; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/audio.js +var ie = function() { + if (typeof window === "undefined") { + return false; + } + const ua2 = window.navigator.userAgent; + const msie = ua2.indexOf("MSIE "); + if (msie > 0) { + return parseInt(ua2.substring(msie + 5, ua2.indexOf(".", msie)), 10); + } + const trident = ua2.indexOf("Trident/"); + if (trident > 0) { + const rv = ua2.indexOf("rv:"); + return parseInt(ua2.substring(rv + 3, ua2.indexOf(".", rv)), 10); + } + return false; +}(); +var supportedExtensions = [".ogg", ".mp3", ".wav", ".mp4a", ".m4a", ".mp4", ".aac", ".opus"]; +var AudioHandler = class extends ResourceHandler { + constructor(app2) { + super(app2, "audio"); + this.manager = app2.soundManager; + } + _isSupported(url) { + const ext = path.getExtension(url); + return supportedExtensions.indexOf(ext) > -1; + } + load(url, callback) { + if (typeof url === "string") { + url = { + load: url, + original: url + }; + } + const success = function success2(resource) { + callback(null, new Sound(resource)); + }; + const error = function error2(err) { + let msg = "Error loading audio url: " + url.original; + if (err) { + msg += ": " + (err.message || err); + } + console.warn(msg); + callback(msg); + }; + if (this._createSound) { + if (!this._isSupported(url.original)) { + error(`Audio format for ${url.original} not supported`); + return; + } + this._createSound(url.load, success, error); + } else { + error(null); + } + } + _createSound(url, success, error) { + if (hasAudioContext()) { + const manager = this.manager; + if (!manager.context) { + error("Audio manager has no audio context"); + return; + } + const options = { + retry: this.maxRetries > 0, + maxRetries: this.maxRetries + }; + if (url.startsWith("blob:") || url.startsWith("data:")) { + options.responseType = Http.ResponseType.ARRAY_BUFFER; + } + http.get(url, options, function(err, response) { + if (err) { + error(err); + return; + } + manager.context.decodeAudioData(response, success, error); + }); + } else { + let audio2 = null; + try { + audio2 = new Audio(); + } catch (e) { + error("No support for Audio element"); + return; + } + if (ie) { + document.body.appendChild(audio2); + } + const onReady = function onReady2() { + audio2.removeEventListener("canplaythrough", onReady2); + if (ie) { + document.body.removeChild(audio2); + } + success(audio2); + }; + audio2.onerror = function() { + audio2.onerror = null; + if (ie) { + document.body.removeChild(audio2); + } + error(); + }; + audio2.addEventListener("canplaythrough", onReady); + audio2.src = url; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/glb-container-resource.js +var GlbContainerResource = class _GlbContainerResource { + constructor(data2, asset2, assets, defaultMaterial) { + const createAsset = function createAsset2(type2, resource, index) { + const subAsset = _GlbContainerResource.createAsset(asset2.name, type2, resource, index); + assets.add(subAsset); + return subAsset; + }; + const renders = []; + for (let i = 0; i < data2.renders.length; ++i) { + renders.push(createAsset("render", data2.renders[i], i)); + } + const materials = []; + for (let i = 0; i < data2.materials.length; ++i) { + materials.push(createAsset("material", data2.materials[i], i)); + } + const animations = []; + for (let i = 0; i < data2.animations.length; ++i) { + animations.push(createAsset("animation", data2.animations[i], i)); + } + this.data = data2; + this._model = null; + this._assetName = asset2.name; + this._assets = assets; + this._defaultMaterial = defaultMaterial; + this.renders = renders; + this.materials = materials; + this.textures = data2.textures; + this.animations = animations; + } + get model() { + if (!this._model) { + const model = _GlbContainerResource.createModel(this.data, this._defaultMaterial); + const modelAsset = _GlbContainerResource.createAsset(this._assetName, "model", model, 0); + this._assets.add(modelAsset); + this._model = modelAsset; + } + return this._model; + } + static createAsset(assetName, type2, resource, index) { + const subAsset = new Asset(assetName + "/" + type2 + "/" + index, type2, { + url: "" + }); + subAsset.resource = resource; + subAsset.loaded = true; + return subAsset; + } + instantiateModelEntity(options) { + const entity = new Entity(); + entity.addComponent("model", Object.assign({ + type: "asset", + asset: this.model + }, options)); + return entity; + } + instantiateRenderEntity(options) { + const defaultMaterial = this._defaultMaterial; + const skinnedMeshInstances = []; + const createMeshInstance = function createMeshInstance2(root, entity, mesh, materials, meshDefaultMaterials, skins, gltfNode) { + const materialIndex = meshDefaultMaterials[mesh.id]; + const material = materialIndex === void 0 ? defaultMaterial : materials[materialIndex]; + const meshInstance = new MeshInstance(mesh, material); + if (mesh.morph) { + meshInstance.morphInstance = new MorphInstance(mesh.morph); + } + if (gltfNode.hasOwnProperty("skin")) { + skinnedMeshInstances.push({ + meshInstance, + rootBone: root, + entity + }); + } + return meshInstance; + }; + const cloneHierarchy = (root, node, glb) => { + const entity = new Entity(); + node._cloneInternal(entity); + if (!root) root = entity; + let attachedMi = null; + let renderAsset = null; + for (let i = 0; i < glb.nodes.length; i++) { + const glbNode = glb.nodes[i]; + if (glbNode === node) { + const gltfNode = glb.gltf.nodes[i]; + if (gltfNode.hasOwnProperty("mesh")) { + const meshGroup = glb.renders[gltfNode.mesh].meshes; + renderAsset = this.renders[gltfNode.mesh]; + for (let mi = 0; mi < meshGroup.length; mi++) { + const mesh = meshGroup[mi]; + if (mesh) { + const cloneMi = createMeshInstance(root, entity, mesh, glb.materials, glb.meshDefaultMaterials, glb.skins, gltfNode); + if (!attachedMi) { + attachedMi = []; + } + attachedMi.push(cloneMi); + } + } + } + if (glb.lights) { + const lightEntity = glb.lights.get(gltfNode); + if (lightEntity) { + entity.addChild(lightEntity.clone()); + } + } + if (glb.cameras) { + const cameraEntity = glb.cameras.get(gltfNode); + if (cameraEntity) { + cameraEntity.camera.system.cloneComponent(cameraEntity, entity); + } + } + } + } + if (attachedMi) { + entity.addComponent("render", Object.assign({ + type: "asset", + meshInstances: attachedMi, + rootBone: root + }, options)); + entity.render.assignAsset(renderAsset); + } + const children = node.children; + for (let i = 0; i < children.length; i++) { + const childClone = cloneHierarchy(root, children[i], glb); + entity.addChild(childClone); + } + return entity; + }; + const sceneClones = []; + for (const scene2 of this.data.scenes) { + sceneClones.push(cloneHierarchy(null, scene2, this.data)); + } + skinnedMeshInstances.forEach((data2) => { + data2.meshInstance.skinInstance = SkinInstanceCache.createCachedSkinInstance(data2.meshInstance.mesh.skin, data2.rootBone, data2.entity); + }); + return _GlbContainerResource.createSceneHierarchy(sceneClones, Entity); + } + getMaterialVariants() { + return this.data.variants ? Object.keys(this.data.variants) : []; + } + applyMaterialVariant(entity, name) { + const variant = name ? this.data.variants[name] : null; + if (variant === void 0) { + return; + } + const renders = entity.findComponents("render"); + for (let i = 0; i < renders.length; i++) { + const renderComponent = renders[i]; + this._applyMaterialVariant(variant, renderComponent.meshInstances); + } + } + applyMaterialVariantInstances(instances, name) { + const variant = name ? this.data.variants[name] : null; + if (variant === void 0) { + return; + } + this._applyMaterialVariant(variant, instances); + } + _applyMaterialVariant(variant, instances) { + instances.forEach((instance) => { + if (variant === null) { + instance.material = this._defaultMaterial; + } else { + const meshVariants = this.data.meshVariants[instance.mesh.id]; + if (meshVariants) { + instance.material = this.data.materials[meshVariants[variant]]; + } + } + }); + } + static createSceneHierarchy(sceneNodes, nodeType) { + let root = null; + if (sceneNodes.length === 1) { + root = sceneNodes[0]; + } else { + root = new nodeType("SceneGroup"); + for (const scene2 of sceneNodes) { + root.addChild(scene2); + } + } + return root; + } + static createModel(glb, defaultMaterial) { + const createMeshInstance = function createMeshInstance2(model2, mesh, skins, skinInstances2, materials, node, gltfNode) { + const materialIndex = glb.meshDefaultMaterials[mesh.id]; + const material = materialIndex === void 0 ? defaultMaterial : materials[materialIndex]; + const meshInstance = new MeshInstance(mesh, material, node); + if (mesh.morph) { + const morphInstance = new MorphInstance(mesh.morph); + meshInstance.morphInstance = morphInstance; + model2.morphInstances.push(morphInstance); + } + if (gltfNode.hasOwnProperty("skin")) { + const skinIndex = gltfNode.skin; + const skin = skins[skinIndex]; + mesh.skin = skin; + const skinInstance = skinInstances2[skinIndex]; + meshInstance.skinInstance = skinInstance; + model2.skinInstances.push(skinInstance); + } + model2.meshInstances.push(meshInstance); + }; + const model = new Model2(); + const skinInstances = []; + for (const skin of glb.skins) { + const skinInstance = new SkinInstance(skin); + skinInstance.bones = skin.bones; + skinInstances.push(skinInstance); + } + model.graph = _GlbContainerResource.createSceneHierarchy(glb.scenes, GraphNode); + for (let i = 0; i < glb.nodes.length; i++) { + const node = glb.nodes[i]; + if (node.root === model.graph) { + const gltfNode = glb.gltf.nodes[i]; + if (gltfNode.hasOwnProperty("mesh")) { + const meshGroup = glb.renders[gltfNode.mesh].meshes; + for (let mi = 0; mi < meshGroup.length; mi++) { + const mesh = meshGroup[mi]; + if (mesh) { + createMeshInstance(model, mesh, glb.skins, skinInstances, glb.materials, node, gltfNode); + } + } + } + } + } + return model; + } + destroy() { + const registry = this._assets; + const destroyAsset = function destroyAsset2(asset2) { + registry.remove(asset2); + asset2.unload(); + }; + const destroyAssets = function destroyAssets2(assets) { + assets.forEach(function(asset2) { + destroyAsset(asset2); + }); + }; + if (this.animations) { + destroyAssets(this.animations); + this.animations = null; + } + if (this.textures) { + destroyAssets(this.textures); + this.textures = null; + } + if (this.materials) { + destroyAssets(this.materials); + this.materials = null; + } + if (this.renders) { + destroyAssets(this.renders); + this.renders = null; + } + if (this._model) { + destroyAsset(this._model); + this._model = null; + } + this.data = null; + this.assets = null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/glb-container-parser.js +var GlbContainerParser = class { + constructor(device, assets, maxRetries) { + this._device = device; + this._assets = assets; + this._defaultMaterial = GlbParser.createDefaultMaterial(); + this.maxRetries = maxRetries; + } + _getUrlWithoutParams(url) { + return url.indexOf("?") >= 0 ? url.split("?")[0] : url; + } + load(url, callback, asset2) { + Asset.fetchArrayBuffer(url.load, (err, result) => { + if (err) { + callback(err); + } else { + GlbParser.parse(this._getUrlWithoutParams(url.original), path.extractPath(url.load), result, this._device, asset2.registry, asset2.options, (err2, result2) => { + if (err2) { + callback(err2); + } else { + callback(null, new GlbContainerResource(result2, asset2, this._assets, this._defaultMaterial)); + } + }); + } + }, asset2, this.maxRetries); + } + open(url, data2, asset2) { + return data2; + } + patch(asset2, assets) { + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/container.js +var ContainerHandler = class extends ResourceHandler { + constructor(app2) { + super(app2, "container"); + this.glbContainerParser = new GlbContainerParser(app2.graphicsDevice, app2.assets, 0); + this.parsers = {}; + } + set maxRetries(value) { + this.glbContainerParser.maxRetries = value; + for (const parser in this.parsers) { + if (this.parsers.hasOwnProperty(parser)) { + this.parsers[parser].maxRetries = value; + } + } + } + get maxRetries() { + return this.glbContainerParser.maxRetries; + } + _getUrlWithoutParams(url) { + return url.indexOf("?") >= 0 ? url.split("?")[0] : url; + } + _getParser(url) { + const ext = url ? path.getExtension(this._getUrlWithoutParams(url)).toLowerCase().replace(".", "") : null; + return this.parsers[ext] || this.glbContainerParser; + } + load(url, callback, asset2) { + if (typeof url === "string") { + url = { + load: url, + original: url + }; + } + this._getParser(url.original).load(url, callback, asset2); + } + open(url, data2, asset2) { + return this._getParser(url).open(url, data2, asset2); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/glb-model.js +var GlbModelParser = class { + constructor(modelHandler) { + this._device = modelHandler.device; + this._defaultMaterial = modelHandler.defaultMaterial; + this._assets = modelHandler.assets; + } + parse(data2, callback, asset2) { + var _asset$options; + GlbParser.parse("filename.glb", "", data2, this._device, this._assets, (_asset$options = asset2 == null ? void 0 : asset2.options) != null ? _asset$options : {}, (err, result) => { + if (err) { + callback(err); + } else { + const model = GlbContainerResource.createModel(result, this._defaultMaterial); + result.destroy(); + callback(null, model); + } + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/json-model.js +var JSON_PRIMITIVE_TYPE = { + "points": PRIMITIVE_POINTS, + "lines": PRIMITIVE_LINES, + "lineloop": PRIMITIVE_LINELOOP, + "linestrip": PRIMITIVE_LINESTRIP, + "triangles": PRIMITIVE_TRIANGLES, + "trianglestrip": PRIMITIVE_TRISTRIP, + "trianglefan": PRIMITIVE_TRIFAN +}; +var JSON_VERTEX_ELEMENT_TYPE = { + "int8": TYPE_INT8, + "uint8": TYPE_UINT8, + "int16": TYPE_INT16, + "uint16": TYPE_UINT16, + "int32": TYPE_INT32, + "uint32": TYPE_UINT32, + "float32": TYPE_FLOAT32 +}; +var JsonModelParser = class { + constructor(modelHandler) { + this._device = modelHandler.device; + this._defaultMaterial = modelHandler.defaultMaterial; + } + parse(data2, callback) { + const modelData = data2.model; + if (!modelData) { + callback(null, null); + return; + } + if (modelData.version <= 1) { + callback("JsonModelParser#parse: Trying to parse unsupported model format."); + return; + } + const nodes = this._parseNodes(data2); + const skins = this._parseSkins(data2, nodes); + const vertexBuffers = this._parseVertexBuffers(data2); + const indices = this._parseIndexBuffers(data2, vertexBuffers); + const morphs = this._parseMorphs(data2, nodes, vertexBuffers); + const meshes = this._parseMeshes(data2, skins.skins, morphs.morphs, vertexBuffers, indices.buffer, indices.data); + const meshInstances = this._parseMeshInstances(data2, nodes, meshes, skins.skins, skins.instances, morphs.morphs, morphs.instances); + const model = new Model2(); + model.graph = nodes[0]; + model.meshInstances = meshInstances; + model.skinInstances = skins.instances; + model.morphInstances = morphs.instances; + model.getGraph().syncHierarchy(); + callback(null, model); + } + _parseNodes(data2) { + const modelData = data2.model; + const nodes = []; + let i; + for (i = 0; i < modelData.nodes.length; i++) { + const nodeData = modelData.nodes[i]; + const node = new GraphNode(nodeData.name); + node.setLocalPosition(nodeData.position[0], nodeData.position[1], nodeData.position[2]); + node.setLocalEulerAngles(nodeData.rotation[0], nodeData.rotation[1], nodeData.rotation[2]); + node.setLocalScale(nodeData.scale[0], nodeData.scale[1], nodeData.scale[2]); + node.scaleCompensation = !!nodeData.scaleCompensation; + nodes.push(node); + } + for (i = 1; i < modelData.parents.length; i++) { + nodes[modelData.parents[i]].addChild(nodes[i]); + } + return nodes; + } + _parseSkins(data2, nodes) { + const modelData = data2.model; + const skins = []; + const skinInstances = []; + let i, j; + for (i = 0; i < modelData.skins.length; i++) { + const skinData = modelData.skins[i]; + const inverseBindMatrices = []; + for (j = 0; j < skinData.inverseBindMatrices.length; j++) { + const ibm = skinData.inverseBindMatrices[j]; + inverseBindMatrices[j] = new Mat4().set(ibm); + } + const skin = new Skin(this._device, inverseBindMatrices, skinData.boneNames); + skins.push(skin); + const skinInstance = new SkinInstance(skin); + const bones = []; + for (j = 0; j < skin.boneNames.length; j++) { + const boneName = skin.boneNames[j]; + const bone = nodes[0].findByName(boneName); + bones.push(bone); + } + skinInstance.bones = bones; + skinInstances.push(skinInstance); + } + return { + skins, + instances: skinInstances + }; + } + _getMorphVertexCount(modelData, morphIndex, vertexBuffers) { + for (let i = 0; i < modelData.meshes.length; i++) { + const meshData = modelData.meshes[i]; + if (meshData.morph === morphIndex) { + const vertexBuffer = vertexBuffers[meshData.vertices]; + return vertexBuffer.numVertices; + } + } + return void 0; + } + _parseMorphs(data2, nodes, vertexBuffers) { + const modelData = data2.model; + const morphs = []; + const morphInstances = []; + let i, j, vertexCount; + let targets, morphTarget, morphTargetArray; + if (modelData.morphs) { + const sparseToFull = function sparseToFull2(data3, indices, totalCount) { + const full = new Float32Array(totalCount * 3); + for (let s = 0; s < indices.length; s++) { + const dstIndex = indices[s] * 3; + full[dstIndex] = data3[s * 3]; + full[dstIndex + 1] = data3[s * 3 + 1]; + full[dstIndex + 2] = data3[s * 3 + 2]; + } + return full; + }; + for (i = 0; i < modelData.morphs.length; i++) { + targets = modelData.morphs[i].targets; + morphTargetArray = []; + vertexCount = this._getMorphVertexCount(modelData, i, vertexBuffers); + for (j = 0; j < targets.length; j++) { + const targetAabb = targets[j].aabb; + const min = targetAabb.min; + const max = targetAabb.max; + const aabb = new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5)); + const indices = targets[j].indices; + let deltaPositions = targets[j].deltaPositions; + let deltaNormals = targets[j].deltaNormals; + if (indices) { + deltaPositions = sparseToFull(deltaPositions, indices, vertexCount); + deltaNormals = sparseToFull(deltaNormals, indices, vertexCount); + } + morphTarget = new MorphTarget({ + deltaPositions, + deltaNormals, + name: targets[j].name, + aabb + }); + morphTargetArray.push(morphTarget); + } + const morph = new Morph(morphTargetArray, this._device); + morphs.push(morph); + const morphInstance = new MorphInstance(morph); + morphInstances.push(morphInstance); + } + } + return { + morphs, + instances: morphInstances + }; + } + _parseVertexBuffers(data2) { + const modelData = data2.model; + const vertexBuffers = []; + const attributeMap = { + position: SEMANTIC_POSITION, + normal: SEMANTIC_NORMAL, + tangent: SEMANTIC_TANGENT, + blendWeight: SEMANTIC_BLENDWEIGHT, + blendIndices: SEMANTIC_BLENDINDICES, + color: SEMANTIC_COLOR, + texCoord0: SEMANTIC_TEXCOORD0, + texCoord1: SEMANTIC_TEXCOORD1, + texCoord2: SEMANTIC_TEXCOORD2, + texCoord3: SEMANTIC_TEXCOORD3, + texCoord4: SEMANTIC_TEXCOORD4, + texCoord5: SEMANTIC_TEXCOORD5, + texCoord6: SEMANTIC_TEXCOORD6, + texCoord7: SEMANTIC_TEXCOORD7 + }; + for (let i = 0; i < modelData.vertices.length; i++) { + const vertexData = modelData.vertices[i]; + const formatDesc = []; + for (const attributeName in vertexData) { + const attribute = vertexData[attributeName]; + formatDesc.push({ + semantic: attributeMap[attributeName], + components: attribute.components, + type: JSON_VERTEX_ELEMENT_TYPE[attribute.type], + normalize: attributeMap[attributeName] === SEMANTIC_COLOR + }); + } + const vertexFormat = new VertexFormat(this._device, formatDesc); + const numVertices = vertexData.position.data.length / vertexData.position.components; + const vertexBuffer = new VertexBuffer(this._device, vertexFormat, numVertices); + const iterator = new VertexIterator(vertexBuffer); + for (let j = 0; j < numVertices; j++) { + for (const attributeName in vertexData) { + const attribute = vertexData[attributeName]; + switch (attribute.components) { + case 1: + iterator.element[attributeMap[attributeName]].set(attribute.data[j]); + break; + case 2: + iterator.element[attributeMap[attributeName]].set(attribute.data[j * 2], 1 - attribute.data[j * 2 + 1]); + break; + case 3: + iterator.element[attributeMap[attributeName]].set(attribute.data[j * 3], attribute.data[j * 3 + 1], attribute.data[j * 3 + 2]); + break; + case 4: + iterator.element[attributeMap[attributeName]].set(attribute.data[j * 4], attribute.data[j * 4 + 1], attribute.data[j * 4 + 2], attribute.data[j * 4 + 3]); + break; + } + } + iterator.next(); + } + iterator.end(); + vertexBuffers.push(vertexBuffer); + } + return vertexBuffers; + } + _parseIndexBuffers(data2, vertexBuffers) { + const modelData = data2.model; + let indexBuffer = null; + let indexData = null; + let i; + let numIndices = 0; + for (i = 0; i < modelData.meshes.length; i++) { + const meshData = modelData.meshes[i]; + if (meshData.indices !== void 0) { + numIndices += meshData.indices.length; + } + } + let maxVerts = 0; + for (i = 0; i < vertexBuffers.length; i++) { + maxVerts = Math.max(maxVerts, vertexBuffers[i].numVertices); + } + if (numIndices > 0) { + if (maxVerts > 65535 && this._device.extUintElement) { + indexBuffer = new IndexBuffer(this._device, INDEXFORMAT_UINT32, numIndices); + indexData = new Uint32Array(indexBuffer.lock()); + } else { + indexBuffer = new IndexBuffer(this._device, INDEXFORMAT_UINT16, numIndices); + indexData = new Uint16Array(indexBuffer.lock()); + } + } + return { + buffer: indexBuffer, + data: indexData + }; + } + _parseMeshes(data2, skins, morphs, vertexBuffers, indexBuffer, indexData) { + const modelData = data2.model; + const meshes = []; + let indexBase = 0; + for (let i = 0; i < modelData.meshes.length; i++) { + const meshData = modelData.meshes[i]; + const meshAabb = meshData.aabb; + const min = meshAabb.min; + const max = meshAabb.max; + const aabb = new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5)); + const indexed = meshData.indices !== void 0; + const mesh = new Mesh(this._device); + mesh.vertexBuffer = vertexBuffers[meshData.vertices]; + mesh.indexBuffer[0] = indexed ? indexBuffer : null; + mesh.primitive[0].type = JSON_PRIMITIVE_TYPE[meshData.type]; + mesh.primitive[0].base = indexed ? meshData.base + indexBase : meshData.base; + mesh.primitive[0].count = meshData.count; + mesh.primitive[0].indexed = indexed; + mesh.skin = meshData.skin !== void 0 ? skins[meshData.skin] : null; + mesh.morph = meshData.morph !== void 0 ? morphs[meshData.morph] : null; + mesh.aabb = aabb; + if (indexed) { + indexData.set(meshData.indices, indexBase); + indexBase += meshData.indices.length; + } + meshes.push(mesh); + } + if (indexBuffer !== null) { + indexBuffer.unlock(); + } + return meshes; + } + _parseMeshInstances(data2, nodes, meshes, skins, skinInstances, morphs, morphInstances) { + const modelData = data2.model; + const meshInstances = []; + let i; + for (i = 0; i < modelData.meshInstances.length; i++) { + const meshInstanceData = modelData.meshInstances[i]; + const node = nodes[meshInstanceData.node]; + const mesh = meshes[meshInstanceData.mesh]; + const meshInstance = new MeshInstance(mesh, this._defaultMaterial, node); + if (mesh.skin) { + const skinIndex = skins.indexOf(mesh.skin); + meshInstance.skinInstance = skinInstances[skinIndex]; + } + if (mesh.morph) { + const morphIndex = morphs.indexOf(mesh.morph); + meshInstance.morphInstance = morphInstances[morphIndex]; + } + meshInstances.push(meshInstance); + } + return meshInstances; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/model.js +var ModelHandler = class extends ResourceHandler { + constructor(app2) { + super(app2, "model"); + this._parsers = []; + this.device = app2.graphicsDevice; + this.assets = app2.assets; + this.defaultMaterial = getDefaultMaterial(this.device); + this.addParser(new JsonModelParser(this), function(url, data2) { + return path.getExtension(url) === ".json"; + }); + this.addParser(new GlbModelParser(this), function(url, data2) { + return path.getExtension(url) === ".glb"; + }); + } + load(url, callback, asset2) { + if (typeof url === "string") { + url = { + load: url, + original: url + }; + } + const options = { + retry: this.maxRetries > 0, + maxRetries: this.maxRetries + }; + if (url.load.startsWith("blob:") || url.load.startsWith("data:")) { + if (path.getExtension(url.original).toLowerCase() === ".glb") { + options.responseType = Http.ResponseType.ARRAY_BUFFER; + } else { + options.responseType = Http.ResponseType.JSON; + } + } + http.get(url.load, options, (err, response) => { + if (!callback) return; + if (!err) { + for (let i = 0; i < this._parsers.length; i++) { + const p = this._parsers[i]; + if (p.decider(url.original, response)) { + p.parser.parse(response, (err2, parseResult) => { + if (err2) { + callback(err2); + } else { + callback(null, parseResult); + } + }, asset2); + return; + } + } + callback("No parsers found"); + } else { + callback(`Error loading model: ${url.original} [${err}]`); + } + }); + } + open(url, data2) { + return data2; + } + patch(asset2, assets) { + if (!asset2.resource) return; + const data2 = asset2.data; + const self2 = this; + asset2.resource.meshInstances.forEach(function(meshInstance, i) { + if (data2.mapping) { + const handleMaterial = function handleMaterial2(asset3) { + if (asset3.resource) { + meshInstance.material = asset3.resource; + } else { + asset3.once("load", handleMaterial2); + assets.load(asset3); + } + asset3.once("remove", function(asset4) { + if (meshInstance.material === asset4.resource) { + meshInstance.material = self2.defaultMaterial; + } + }); + }; + if (!data2.mapping[i]) { + meshInstance.material = self2.defaultMaterial; + return; + } + const id12 = data2.mapping[i].material; + const url = data2.mapping[i].path; + let material; + if (id12 !== void 0) { + if (!id12) { + meshInstance.material = self2.defaultMaterial; + } else { + material = assets.get(id12); + if (material) { + handleMaterial(material); + } else { + assets.once("add:" + id12, handleMaterial); + } + } + } else if (url) { + const path2 = asset2.getAbsoluteUrl(data2.mapping[i].path); + material = assets.getByUrl(path2); + if (material) { + handleMaterial(material); + } else { + assets.once("add:url:" + path2, handleMaterial); + } + } + } + }); + } + addParser(parser, decider) { + this._parsers.push({ + parser, + decider + }); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/basis-worker.js +function BasisWorker() { + const BASIS_FORMAT = { + cTFETC1: 0, + cTFETC2: 1, + cTFBC1: 2, + cTFBC3: 3, + cTFPVRTC1_4_RGB: 8, + cTFPVRTC1_4_RGBA: 9, + cTFASTC_4x4: 10, + cTFATC_RGB: 11, + cTFATC_RGBA_INTERPOLATED_ALPHA: 12, + cTFRGBA32: 13, + cTFRGB565: 14, + cTFRGBA4444: 16 + }; + const opaqueMapping = { + astc: BASIS_FORMAT.cTFASTC_4x4, + dxt: BASIS_FORMAT.cTFBC1, + etc1: BASIS_FORMAT.cTFETC1, + etc2: BASIS_FORMAT.cTFETC1, + pvr: BASIS_FORMAT.cTFPVRTC1_4_RGB, + atc: BASIS_FORMAT.cTFATC_RGB, + none: BASIS_FORMAT.cTFRGB565 + }; + const alphaMapping = { + astc: BASIS_FORMAT.cTFASTC_4x4, + dxt: BASIS_FORMAT.cTFBC3, + etc1: BASIS_FORMAT.cTFRGBA4444, + etc2: BASIS_FORMAT.cTFETC2, + pvr: BASIS_FORMAT.cTFPVRTC1_4_RGBA, + atc: BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA, + none: BASIS_FORMAT.cTFRGBA4444 + }; + const PIXEL_FORMAT = { + ETC1: 21, + ETC2_RGB: 22, + ETC2_RGBA: 23, + DXT1: 8, + DXT5: 10, + PVRTC_4BPP_RGB_1: 26, + PVRTC_4BPP_RGBA_1: 27, + ASTC_4x4: 28, + ATC_RGB: 29, + ATC_RGBA: 30, + R8_G8_B8_A8: 7, + R5_G6_B5: 3, + R4_G4_B4_A4: 5 + }; + const basisToEngineMapping = (basisFormat, deviceDetails2) => { + switch (basisFormat) { + case BASIS_FORMAT.cTFETC1: + return deviceDetails2.formats.etc1 ? PIXEL_FORMAT.ETC1 : PIXEL_FORMAT.ETC2_RGB; + case BASIS_FORMAT.cTFETC2: + return PIXEL_FORMAT.ETC2_RGBA; + case BASIS_FORMAT.cTFBC1: + return PIXEL_FORMAT.DXT1; + case BASIS_FORMAT.cTFBC3: + return PIXEL_FORMAT.DXT5; + case BASIS_FORMAT.cTFPVRTC1_4_RGB: + return PIXEL_FORMAT.PVRTC_4BPP_RGB_1; + case BASIS_FORMAT.cTFPVRTC1_4_RGBA: + return PIXEL_FORMAT.PVRTC_4BPP_RGBA_1; + case BASIS_FORMAT.cTFASTC_4x4: + return PIXEL_FORMAT.ASTC_4x4; + case BASIS_FORMAT.cTFATC_RGB: + return PIXEL_FORMAT.ATC_RGB; + case BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA: + return PIXEL_FORMAT.ATC_RGBA; + case BASIS_FORMAT.cTFRGBA32: + return PIXEL_FORMAT.R8_G8_B8_A8; + case BASIS_FORMAT.cTFRGB565: + return PIXEL_FORMAT.R5_G6_B5; + case BASIS_FORMAT.cTFRGBA4444: + return PIXEL_FORMAT.R4_G4_B4_A4; + } + }; + const unswizzleGGGR = (data2) => { + const genB = function genB2(R, G) { + const r = R * (2 / 255) - 1; + const g = G * (2 / 255) - 1; + const b = Math.sqrt(1 - Math.min(1, r * r + g * g)); + return Math.max(0, Math.min(255, Math.floor((b + 1) * 0.5 * 255))); + }; + for (let offset = 0; offset < data2.length; offset += 4) { + const R = data2[offset + 3]; + const G = data2[offset + 1]; + data2[offset + 0] = R; + data2[offset + 2] = genB(R, G); + data2[offset + 3] = 255; + } + return data2; + }; + const pack565 = (data2) => { + const result = new Uint16Array(data2.length / 4); + for (let offset = 0; offset < data2.length; offset += 4) { + const R = data2[offset + 0]; + const G = data2[offset + 1]; + const B = data2[offset + 2]; + result[offset / 4] = (R & 248) << 8 | (G & 252) << 3 | B >> 3; + } + return result; + }; + const isPOT = (width, height) => { + return (width & width - 1) === 0 && (height & height - 1) === 0; + }; + const performanceNow = () => { + return typeof performance !== "undefined" ? performance.now() : 0; + }; + let basis; + let rgbPriority; + let rgbaPriority; + const chooseTargetFormat = (deviceDetails2, hasAlpha, isUASTC) => { + if (isUASTC) { + if (deviceDetails2.formats.astc) { + return "astc"; + } + } else { + if (hasAlpha) { + if (deviceDetails2.formats.etc2) { + return "etc2"; + } + } else { + if (deviceDetails2.formats.etc1 || deviceDetails2.formats.etc2) { + return "etc1"; + } + } + } + const testInOrder = (priority) => { + for (let i = 0; i < priority.length; ++i) { + const format = priority[i]; + if (deviceDetails2.formats[format]) { + return format; + } + } + return "none"; + }; + return testInOrder(hasAlpha ? rgbaPriority : rgbPriority); + }; + const dimensionsValid = (width, height, format, webgl2) => { + switch (format) { + case BASIS_FORMAT.cTFETC1: + case BASIS_FORMAT.cTFETC2: + return true; + case BASIS_FORMAT.cTFBC1: + case BASIS_FORMAT.cTFBC3: + return (width & 3) === 0 && (height & 3) === 0; + case BASIS_FORMAT.cTFPVRTC1_4_RGB: + case BASIS_FORMAT.cTFPVRTC1_4_RGBA: + return isPOT(width, height) && (width === height || webgl2); + case BASIS_FORMAT.cTFASTC_4x4: + return true; + case BASIS_FORMAT.cTFATC_RGB: + case BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA: + return true; + } + return false; + }; + const transcodeKTX2 = (url, data2, options) => { + if (!basis.KTX2File) { + throw new Error("Basis transcoder module does not include support for KTX2."); + } + const funcStart = performanceNow(); + const basisFile = new basis.KTX2File(new Uint8Array(data2)); + const width = basisFile.getWidth(); + const height = basisFile.getHeight(); + const levels = basisFile.getLevels(); + const hasAlpha = !!basisFile.getHasAlpha(); + const isUASTC = basisFile.isUASTC && basisFile.isUASTC(); + if (!width || !height || !levels) { + basisFile.close(); + basisFile.delete(); + throw new Error(`Invalid image dimensions url=${url} width=${width} height=${height} levels=${levels}`); + } + const format = chooseTargetFormat(options.deviceDetails, hasAlpha, isUASTC); + const unswizzle = !!options.isGGGR && format === "pvr"; + let basisFormat; + if (unswizzle) { + basisFormat = BASIS_FORMAT.cTFRGBA32; + } else { + basisFormat = hasAlpha ? alphaMapping[format] : opaqueMapping[format]; + if (!dimensionsValid(width, height, basisFormat, options.deviceDetails.webgl2)) { + basisFormat = hasAlpha ? BASIS_FORMAT.cTFRGBA32 : BASIS_FORMAT.cTFRGB565; + } + } + if (!basisFile.startTranscoding()) { + basisFile.close(); + basisFile.delete(); + throw new Error("Failed to start transcoding url=" + url); + } + let i; + const levelData = []; + for (let mip = 0; mip < levels; ++mip) { + const dstSize = basisFile.getImageTranscodedSizeInBytes(mip, 0, 0, basisFormat); + const dst = new Uint8Array(dstSize); + if (!basisFile.transcodeImage(dst, mip, 0, 0, basisFormat, 0, -1, -1)) { + basisFile.close(); + basisFile.delete(); + throw new Error("Failed to transcode image url=" + url); + } + const is16BitFormat = basisFormat === BASIS_FORMAT.cTFRGB565 || basisFormat === BASIS_FORMAT.cTFRGBA4444; + levelData.push(is16BitFormat ? new Uint16Array(dst.buffer) : dst); + } + basisFile.close(); + basisFile.delete(); + if (unswizzle) { + basisFormat = BASIS_FORMAT.cTFRGB565; + for (i = 0; i < levelData.length; ++i) { + levelData[i] = pack565(unswizzleGGGR(levelData[i])); + } + } + return { + format: basisToEngineMapping(basisFormat, options.deviceDetails), + width, + height, + levels: levelData, + cubemap: false, + transcodeTime: performanceNow() - funcStart, + url, + unswizzledGGGR: unswizzle + }; + }; + const transcodeBasis = (url, data2, options) => { + const funcStart = performanceNow(); + const basisFile = new basis.BasisFile(new Uint8Array(data2)); + const width = basisFile.getImageWidth(0, 0); + const height = basisFile.getImageHeight(0, 0); + const images = basisFile.getNumImages(); + const levels = basisFile.getNumLevels(0); + const hasAlpha = !!basisFile.getHasAlpha(); + const isUASTC = basisFile.isUASTC && basisFile.isUASTC(); + if (!width || !height || !images || !levels) { + basisFile.close(); + basisFile.delete(); + throw new Error(`Invalid image dimensions url=${url} width=${width} height=${height} images=${images} levels=${levels}`); + } + const format = chooseTargetFormat(options.deviceDetails, hasAlpha, isUASTC); + const unswizzle = !!options.isGGGR && format === "pvr"; + let basisFormat; + if (unswizzle) { + basisFormat = BASIS_FORMAT.cTFRGBA32; + } else { + basisFormat = hasAlpha ? alphaMapping[format] : opaqueMapping[format]; + if (!dimensionsValid(width, height, basisFormat, options.deviceDetails.webgl2)) { + basisFormat = hasAlpha ? BASIS_FORMAT.cTFRGBA32 : BASIS_FORMAT.cTFRGB565; + } + } + if (!basisFile.startTranscoding()) { + basisFile.close(); + basisFile.delete(); + throw new Error("Failed to start transcoding url=" + url); + } + let i; + const levelData = []; + for (let mip = 0; mip < levels; ++mip) { + const dstSize = basisFile.getImageTranscodedSizeInBytes(0, mip, basisFormat); + const dst = new Uint8Array(dstSize); + if (!basisFile.transcodeImage(dst, 0, mip, basisFormat, 0, 0)) { + if (mip === levels - 1 && dstSize === levelData[mip - 1].buffer.byteLength) { + dst.set(new Uint8Array(levelData[mip - 1].buffer)); + console.warn("Failed to transcode last mipmap level, using previous level instead url=" + url); + } else { + basisFile.close(); + basisFile.delete(); + throw new Error("Failed to transcode image url=" + url); + } + } + const is16BitFormat = basisFormat === BASIS_FORMAT.cTFRGB565 || basisFormat === BASIS_FORMAT.cTFRGBA4444; + levelData.push(is16BitFormat ? new Uint16Array(dst.buffer) : dst); + } + basisFile.close(); + basisFile.delete(); + if (unswizzle) { + basisFormat = BASIS_FORMAT.cTFRGB565; + for (i = 0; i < levelData.length; ++i) { + levelData[i] = pack565(unswizzleGGGR(levelData[i])); + } + } + return { + format: basisToEngineMapping(basisFormat, options.deviceDetails), + width, + height, + levels: levelData, + cubemap: false, + transcodeTime: performanceNow() - funcStart, + url, + unswizzledGGGR: unswizzle + }; + }; + const transcode = (url, data2, options) => { + return options.isKTX2 ? transcodeKTX2(url, data2, options) : transcodeBasis(url, data2, options); + }; + const workerTranscode = (url, data2, options) => { + try { + const result = transcode(url, data2, options); + result.levels = result.levels.map((v) => v.buffer); + self.postMessage({ + url, + data: result + }, result.levels); + } catch (err) { + self.postMessage({ + url, + err + }, null); + } + }; + const workerInit = (config, callback) => { + const instantiateWasmFunc = (imports, successCallback) => { + WebAssembly.instantiate(config.module, imports).then((result) => { + successCallback(result); + }).catch((reason) => { + console.error("instantiate failed + " + reason); + }); + return {}; + }; + self.BASIS(config.module ? { + instantiateWasm: instantiateWasmFunc + } : null).then((instance) => { + instance.initializeBasis(); + basis = instance; + rgbPriority = config.rgbPriority; + rgbaPriority = config.rgbaPriority; + callback(null); + }); + }; + const queue2 = []; + self.onmessage = (message) => { + const data2 = message.data; + switch (data2.type) { + case "init": + workerInit(data2.config, () => { + for (let i = 0; i < queue2.length; ++i) { + workerTranscode(queue2[i].url, queue2[i].data, queue2[i].options); + } + queue2.length = 0; + }); + break; + case "transcode": + if (basis) { + workerTranscode(data2.url, data2.data, data2.options); + } else { + queue2.push(data2); + } + break; + } + }; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/basis.js +var getCompressionFormats = (device) => { + return { + astc: !!device.extCompressedTextureASTC, + atc: !!device.extCompressedTextureATC, + dxt: !!device.extCompressedTextureS3TC, + etc1: !!device.extCompressedTextureETC1, + etc2: !!device.extCompressedTextureETC, + pvr: !!device.extCompressedTexturePVRTC + }; +}; +var prepareWorkerModules = (config, callback) => { + const getWorkerBlob = (basisCode) => { + const code = ["/* basis */", basisCode, "", "(" + BasisWorker.toString() + ")()\n\n"].join("\n"); + return new Blob([code], { + type: "application/javascript" + }); + }; + const wasmSupported = () => { + try { + if (typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function") { + const module = new WebAssembly.Module(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0)); + if (module instanceof WebAssembly.Module) return new WebAssembly.Instance(module) instanceof WebAssembly.Instance; + } + } catch (e) { + } + return false; + }; + const sendResponse = (basisCode, module) => { + callback(null, { + workerUrl: URL.createObjectURL(getWorkerBlob(basisCode)), + module, + rgbPriority: config.rgbPriority, + rgbaPriority: config.rgbaPriority + }); + }; + const options = { + cache: true, + responseType: "text", + retry: config.maxRetries > 0, + maxRetries: config.maxRetries + }; + if (config.glueUrl && config.wasmUrl && wasmSupported()) { + let basisCode = null; + let module = null; + http.get(config.glueUrl, options, (err, response) => { + if (err) { + callback(err); + } else { + if (module) { + sendResponse(response, module); + } else { + basisCode = response; + } + } + }); + const fetchPromise = fetch(config.wasmUrl); + const compileManual = () => { + fetchPromise.then((result) => result.arrayBuffer()).then((buffer) => WebAssembly.compile(buffer)).then((module_) => { + if (basisCode) { + sendResponse(basisCode, module_); + } else { + module = module_; + } + }).catch((err) => { + callback(err, null); + }); + }; + if (WebAssembly.compileStreaming) { + WebAssembly.compileStreaming(fetchPromise).then((module_) => { + if (basisCode) { + sendResponse(basisCode, module_); + } else { + module = module_; + } + }).catch((err) => { + compileManual(); + }); + } else { + compileManual(); + } + } else { + http.get(config.fallbackUrl, options, (err, response) => { + if (err) { + callback(err, null); + } else { + sendResponse(response, null); + } + }); + } +}; +var BasisQueue = class { + constructor() { + this.callbacks = {}; + this.queue = []; + this.clients = []; + } + enqueueJob(url, data2, callback, options) { + if (this.callbacks.hasOwnProperty(url)) { + this.callbacks[url].push(callback); + } else { + this.callbacks[url] = [callback]; + const job = { + url, + data: data2, + options + }; + if (this.clients.length > 0) { + this.clients.shift().run(job); + } else { + this.queue.push(job); + } + } + } + enqueueClient(client) { + if (this.queue.length > 0) { + client.run(this.queue.shift()); + } else { + this.clients.push(client); + } + } + handleResponse(url, err, data2) { + const callback = this.callbacks[url]; + if (err) { + for (let i = 0; i < callback.length; ++i) { + callback[i](err); + } + } else { + if (data2.format === PIXELFORMAT_RGB565 || data2.format === PIXELFORMAT_RGBA4) { + data2.levels = data2.levels.map(function(v) { + return new Uint16Array(v); + }); + } else { + data2.levels = data2.levels.map(function(v) { + return new Uint8Array(v); + }); + } + for (let i = 0; i < callback.length; ++i) { + callback[i](null, data2); + } + } + delete this.callbacks[url]; + } +}; +var BasisClient = class { + constructor(queue2, config, eager) { + this.queue = queue2; + this.worker = new Worker(config.workerUrl); + this.worker.addEventListener("message", (message) => { + const data2 = message.data; + this.queue.handleResponse(data2.url, data2.err, data2.data); + if (!this.eager) { + this.queue.enqueueClient(this); + } + }); + this.worker.postMessage({ + type: "init", + config + }); + this.eager = eager; + } + run(job) { + const transfer = []; + if (job.data instanceof ArrayBuffer) { + transfer.push(job.data); + } + this.worker.postMessage({ + type: "transcode", + url: job.url, + format: job.format, + data: job.data, + options: job.options + }, transfer); + if (this.eager) { + this.queue.enqueueClient(this); + } + } +}; +var defaultNumWorkers2 = 1; +var defaultRgbPriority = ["etc1", "etc2", "astc", "dxt", "pvr", "atc"]; +var defaultRgbaPriority = ["astc", "dxt", "etc2", "pvr", "atc"]; +var defaultMaxRetries = 5; +var queue = new BasisQueue(); +var lazyConfig2 = null; +var initializing = false; +function basisInitialize(config) { + if (initializing) { + return; + } + if (!config) { + config = lazyConfig2 || {}; + } else if (config.lazyInit) { + lazyConfig2 = config; + return; + } + if (!config.glueUrl || !config.wasmUrl || !config.fallbackUrl) { + const moduleConfig = WasmModule.getConfig("BASIS"); + if (moduleConfig) { + config = { + glueUrl: moduleConfig.glueUrl, + wasmUrl: moduleConfig.wasmUrl, + fallbackUrl: moduleConfig.fallbackUrl, + numWorkers: moduleConfig.numWorkers + }; + } + } + if (config.glueUrl || config.wasmUrl || config.fallbackUrl) { + initializing = true; + const numWorkers = Math.max(1, Math.min(16, config.numWorkers || defaultNumWorkers2)); + const eagerWorkers = config.numWorkers === 1 || (config.hasOwnProperty("eagerWorkers") ? config.eagerWorkers : true); + config.rgbPriority = config.rgbPriority || defaultRgbPriority; + config.rgbaPriority = config.rgbaPriority || defaultRgbaPriority; + config.maxRetries = config.hasOwnProperty("maxRetries") ? config.maxRetries : defaultMaxRetries; + prepareWorkerModules(config, (err, clientConfig) => { + if (err) { + console.error(`failed to initialize basis worker: ${err}`); + } else { + for (let i = 0; i < numWorkers; ++i) { + queue.enqueueClient(new BasisClient(queue, clientConfig, eagerWorkers)); + } + } + }); + } +} +var deviceDetails = null; +function basisTranscode(device, url, data2, callback, options) { + basisInitialize(); + if (!deviceDetails) { + deviceDetails = { + webgl2: device.isWebGL2, + formats: getCompressionFormats(device) + }; + } + queue.enqueueJob(url, data2, callback, { + deviceDetails, + isGGGR: !!(options != null && options.isGGGR), + isKTX2: !!(options != null && options.isKTX2) + }); + return initializing; +} + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/texture.js +var TextureParser = class { + load(url, callback, asset2) { + throw new Error("not implemented"); + } + open(url, data2, device) { + throw new Error("not implemented"); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/basis.js +var BasisParser = class extends TextureParser { + constructor(registry, device) { + super(); + this.device = device; + this.maxRetries = 0; + } + load(url, callback, asset2) { + const device = this.device; + const transcode = (data2) => { + var _asset$file; + const basisModuleFound = basisTranscode(device, url.load, data2, callback, { + isGGGR: ((asset2 == null || (_asset$file = asset2.file) == null || (_asset$file = _asset$file.variants) == null || (_asset$file = _asset$file.basis) == null ? void 0 : _asset$file.opt) & 8) !== 0 + }); + if (!basisModuleFound) { + callback(`Basis module not found. Asset '${asset2.name}' basis texture variant will not be loaded.`); + } + }; + Asset.fetchArrayBuffer(url.load, (err, result) => { + if (err) { + callback(err); + } else { + transcode(result); + } + }, asset2, this.maxRetries); + } + open(url, data2, device, textureOptions = {}) { + const texture = new Texture(device, _extends({ + name: url, + addressU: data2.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT, + addressV: data2.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT, + width: data2.width, + height: data2.height, + format: data2.format, + cubemap: data2.cubemap, + levels: data2.levels + }, textureOptions)); + texture.upload(); + return texture; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/img.js +var ImgParser = class extends TextureParser { + constructor(registry, device) { + super(); + this.crossOrigin = registry.prefix ? "anonymous" : null; + this.maxRetries = 0; + this.device = device; + } + load(url, callback, asset2) { + var _asset$file; + const hasContents = !!(asset2 != null && (_asset$file = asset2.file) != null && _asset$file.contents); + if (hasContents) { + if (this.device.supportsImageBitmap) { + this._loadImageBitmapFromBlob(new Blob([asset2.file.contents]), callback); + return; + } + url = { + load: URL.createObjectURL(new Blob([asset2.file.contents])), + original: url.original + }; + } + const handler = (err, result) => { + if (hasContents) { + URL.revokeObjectURL(url.load); + } + callback(err, result); + }; + let crossOrigin; + if (asset2 && asset2.options && asset2.options.hasOwnProperty("crossOrigin")) { + crossOrigin = asset2.options.crossOrigin; + } else if (ABSOLUTE_URL.test(url.load)) { + crossOrigin = this.crossOrigin; + } + if (this.device.supportsImageBitmap) { + this._loadImageBitmap(url.load, url.original, crossOrigin, handler); + } else { + this._loadImage(url.load, url.original, crossOrigin, handler); + } + } + open(url, data2, device, textureOptions = {}) { + const texture = new Texture(device, _extends({ + name: url, + width: data2.width, + height: data2.height, + format: PIXELFORMAT_RGBA8 + }, textureOptions)); + texture.setSource(data2); + return texture; + } + _loadImage(url, originalUrl, crossOrigin, callback) { + const image = new Image(); + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + let retries = 0; + const maxRetries = this.maxRetries; + let retryTimeout; + image.onload = function() { + callback(null, image); + }; + image.onerror = function() { + if (retryTimeout) return; + if (maxRetries > 0 && ++retries <= maxRetries) { + const retryDelay = Math.pow(2, retries) * 100; + console.log(`Error loading Texture from: '${originalUrl}' - Retrying in ${retryDelay}ms...`); + const idx = url.indexOf("?"); + const separator = idx >= 0 ? "&" : "?"; + retryTimeout = setTimeout(function() { + image.src = url + separator + "retry=" + Date.now(); + retryTimeout = null; + }, retryDelay); + } else { + callback(`Error loading Texture from: '${originalUrl}'`); + } + }; + image.src = url; + } + _loadImageBitmap(url, originalUrl, crossOrigin, callback) { + const options = { + cache: true, + responseType: "blob", + retry: this.maxRetries > 0, + maxRetries: this.maxRetries + }; + http.get(url, options, (err, blob) => { + if (err) { + callback(err); + } else { + this._loadImageBitmapFromBlob(blob, callback); + } + }); + } + _loadImageBitmapFromBlob(blob, callback) { + createImageBitmap(blob, { + premultiplyAlpha: "none", + colorSpaceConversion: "none" + }).then((imageBitmap) => callback(null, imageBitmap)).catch((e) => callback(e)); + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/ktx.js +var IDENTIFIER2 = [1481919403, 3140563232, 169478669]; +var KNOWN_FORMATS = { + 33776: PIXELFORMAT_DXT1, + 33778: PIXELFORMAT_DXT3, + 33779: PIXELFORMAT_DXT5, + 36196: PIXELFORMAT_ETC1, + 37492: PIXELFORMAT_ETC2_RGB, + 37496: PIXELFORMAT_ETC2_RGBA, + 35840: PIXELFORMAT_PVRTC_4BPP_RGB_1, + 35841: PIXELFORMAT_PVRTC_2BPP_RGB_1, + 35842: PIXELFORMAT_PVRTC_4BPP_RGBA_1, + 35843: PIXELFORMAT_PVRTC_2BPP_RGBA_1, + 32849: PIXELFORMAT_RGB8, + 32856: PIXELFORMAT_RGBA8, + 35905: PIXELFORMAT_SRGB, + 35907: PIXELFORMAT_SRGBA, + 35898: PIXELFORMAT_111110F, + 34843: PIXELFORMAT_RGB16F, + 34842: PIXELFORMAT_RGBA16F +}; +function createContainer(pixelFormat, buffer, byteOffset, byteSize) { + return pixelFormat === PIXELFORMAT_111110F ? new Uint32Array(buffer, byteOffset, byteSize / 4) : new Uint8Array(buffer, byteOffset, byteSize); +} +var KtxParser = class extends TextureParser { + constructor(registry) { + super(); + this.maxRetries = 0; + } + load(url, callback, asset2) { + Asset.fetchArrayBuffer(url.load, callback, asset2, this.maxRetries); + } + open(url, data2, device, textureOptions = {}) { + const textureData = this.parse(data2); + if (!textureData) { + return null; + } + const texture = new Texture(device, _extends({ + name: url, + addressU: textureData.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT, + addressV: textureData.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT, + width: textureData.width, + height: textureData.height, + format: textureData.format, + cubemap: textureData.cubemap, + levels: textureData.levels + }, textureOptions)); + texture.upload(); + return texture; + } + parse(data2) { + const dataU32 = new Uint32Array(data2); + if (IDENTIFIER2[0] !== dataU32[0] || IDENTIFIER2[1] !== dataU32[1] || IDENTIFIER2[2] !== dataU32[2]) { + return null; + } + const header = { + endianness: dataU32[3], + glType: dataU32[4], + glTypeSize: dataU32[5], + glFormat: dataU32[6], + glInternalFormat: dataU32[7], + glBaseInternalFormat: dataU32[8], + pixelWidth: dataU32[9], + pixelHeight: dataU32[10], + pixelDepth: dataU32[11], + numberOfArrayElements: dataU32[12], + numberOfFaces: dataU32[13], + numberOfMipmapLevels: dataU32[14], + bytesOfKeyValueData: dataU32[15] + }; + if (header.pixelDepth > 1) { + return null; + } + if (header.numberOfArrayElements !== 0) { + return null; + } + const format = KNOWN_FORMATS[header.glInternalFormat]; + if (format === void 0) { + return null; + } + let offset = 16 + header.bytesOfKeyValueData / 4; + const isCubemap = header.numberOfFaces > 1; + const levels = []; + for (let mipmapLevel = 0; mipmapLevel < (header.numberOfMipmapLevels || 1); mipmapLevel++) { + const imageSizeInBytes = dataU32[offset++]; + if (isCubemap) { + levels.push([]); + } + const target2 = isCubemap ? levels[mipmapLevel] : levels; + for (let face = 0; face < (isCubemap ? 6 : 1); ++face) { + target2.push(createContainer(format, data2, offset * 4, imageSizeInBytes)); + offset += imageSizeInBytes + 3 >> 2; + } + } + return { + format, + width: header.pixelWidth, + height: header.pixelHeight, + levels, + cubemap: isCubemap + }; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/ktx2.js +var KHRConstants = { + KHR_DF_MODEL_ETC1S: 163, + KHR_DF_MODEL_UASTC: 166 +}; +var Ktx2Parser = class extends TextureParser { + constructor(registry, device) { + super(); + this.maxRetries = 0; + this.device = device; + } + load(url, callback, asset2) { + Asset.fetchArrayBuffer(url.load, (err, result) => { + if (err) { + callback(err, result); + } else { + this.parse(result, url, callback, asset2); + } + }, asset2, this.maxRetries); + } + open(url, data2, device, textureOptions = {}) { + const texture = new Texture(device, _extends({ + name: url, + addressU: data2.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT, + addressV: data2.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT, + width: data2.width, + height: data2.height, + format: data2.format, + cubemap: data2.cubemap, + levels: data2.levels + }, textureOptions)); + texture.upload(); + return texture; + } + parse(arraybuffer, url, callback, asset2) { + const rs = new ReadStream(arraybuffer); + const magic = [rs.readU32be(), rs.readU32be(), rs.readU32be()]; + if (magic[0] !== 2873840728 || magic[1] !== 540160187 || magic[2] !== 218765834) { + return null; + } + const header = { + vkFormat: rs.readU32(), + typeSize: rs.readU32(), + pixelWidth: rs.readU32(), + pixelHeight: rs.readU32(), + pixelDepth: rs.readU32(), + layerCount: rs.readU32(), + faceCount: rs.readU32(), + levelCount: rs.readU32(), + supercompressionScheme: rs.readU32() + }; + const index = { + dfdByteOffset: rs.readU32(), + dfdByteLength: rs.readU32(), + kvdByteOffset: rs.readU32(), + kvdByteLength: rs.readU32(), + sgdByteOffset: rs.readU64(), + sgdByteLength: rs.readU64() + }; + const levels = []; + for (let i = 0; i < Math.max(1, header.levelCount); ++i) { + levels.push({ + byteOffset: rs.readU64(), + byteLength: rs.readU64(), + uncompressedByteLength: rs.readU64() + }); + } + const dfdTotalSize = rs.readU32(); + if (dfdTotalSize !== index.kvdByteOffset - index.dfdByteOffset) { + return null; + } + rs.skip(8); + const colorModel = rs.readU8(); + rs.skip(index.dfdByteLength - 9); + rs.skip(index.kvdByteLength); + if (header.supercompressionScheme === 1 || colorModel === KHRConstants.KHR_DF_MODEL_UASTC) { + var _asset$file; + const basisModuleFound = basisTranscode(this.device, url.load, arraybuffer, callback, { + isGGGR: ((asset2 == null || (_asset$file = asset2.file) == null || (_asset$file = _asset$file.variants) == null || (_asset$file = _asset$file.basis) == null ? void 0 : _asset$file.opt) & 8) !== 0, + isKTX2: true + }); + if (!basisModuleFound) { + callback('Basis module not found. Asset "' + asset2.name + '" basis texture variant will not be loaded.'); + } + } else { + callback("unsupported KTX2 pixel format"); + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/dds.js +var DdsParser = class extends TextureParser { + constructor(registry) { + super(); + this.maxRetries = 0; + } + load(url, callback, asset2) { + Asset.fetchArrayBuffer(url.load, callback, asset2, this.maxRetries); + } + open(url, data2, device, textureOptions = {}) { + const header = new Uint32Array(data2, 0, 128 / 4); + const width = header[4]; + const height = header[3]; + const mips = Math.max(header[7], 1); + const isFourCc = header[20] === 4; + const fcc = header[21]; + const bpp = header[22]; + const isCubemap = header[28] === 65024; + const FCC_DXT1 = 827611204; + const FCC_DXT5 = 894720068; + const FCC_FP16 = 113; + const FCC_FP32 = 116; + const FCC_ETC1 = 826496069; + const FCC_PVRTC_2BPP_RGB_1 = 825438800; + const FCC_PVRTC_2BPP_RGBA_1 = 825504336; + const FCC_PVRTC_4BPP_RGB_1 = 825439312; + const FCC_PVRTC_4BPP_RGBA_1 = 825504848; + let compressed = false; + let etc1 = false; + let pvrtc2 = false; + let pvrtc4 = false; + let format = null; + let componentSize = 1; + let texture; + if (isFourCc) { + if (fcc === FCC_DXT1) { + format = PIXELFORMAT_DXT1; + compressed = true; + } else if (fcc === FCC_DXT5) { + format = PIXELFORMAT_DXT5; + compressed = true; + } else if (fcc === FCC_FP16) { + format = PIXELFORMAT_RGBA16F; + componentSize = 2; + } else if (fcc === FCC_FP32) { + format = PIXELFORMAT_RGBA32F; + componentSize = 4; + } else if (fcc === FCC_ETC1) { + format = PIXELFORMAT_ETC1; + compressed = true; + etc1 = true; + } else if (fcc === FCC_PVRTC_2BPP_RGB_1 || fcc === FCC_PVRTC_2BPP_RGBA_1) { + format = fcc === FCC_PVRTC_2BPP_RGB_1 ? PIXELFORMAT_PVRTC_2BPP_RGB_1 : PIXELFORMAT_PVRTC_2BPP_RGBA_1; + compressed = true; + pvrtc2 = true; + } else if (fcc === FCC_PVRTC_4BPP_RGB_1 || fcc === FCC_PVRTC_4BPP_RGBA_1) { + format = fcc === FCC_PVRTC_4BPP_RGB_1 ? PIXELFORMAT_PVRTC_4BPP_RGB_1 : PIXELFORMAT_PVRTC_4BPP_RGBA_1; + compressed = true; + pvrtc4 = true; + } + } else { + if (bpp === 32) { + format = PIXELFORMAT_RGBA8; + } + } + if (!format) { + texture = new Texture(device, { + width: 4, + height: 4, + format: PIXELFORMAT_RGB8, + name: "dds-legacy-empty" + }); + return texture; + } + texture = new Texture(device, _extends({ + name: url, + addressU: isCubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT, + addressV: isCubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT, + width, + height, + format, + cubemap: isCubemap, + mipmaps: mips > 1 + }, textureOptions)); + let offset = 128; + const faces = isCubemap ? 6 : 1; + let mipSize; + const DXT_BLOCK_WIDTH = 4; + const DXT_BLOCK_HEIGHT = 4; + const blockSize = fcc === FCC_DXT1 ? 8 : 16; + let numBlocksAcross, numBlocksDown, numBlocks; + for (let face = 0; face < faces; face++) { + let mipWidth = width; + let mipHeight = height; + for (let i = 0; i < mips; i++) { + if (compressed) { + if (etc1) { + mipSize = Math.floor((mipWidth + 3) / 4) * Math.floor((mipHeight + 3) / 4) * 8; + } else if (pvrtc2) { + mipSize = Math.max(mipWidth, 16) * Math.max(mipHeight, 8) / 4; + } else if (pvrtc4) { + mipSize = Math.max(mipWidth, 8) * Math.max(mipHeight, 8) / 2; + } else { + numBlocksAcross = Math.floor((mipWidth + DXT_BLOCK_WIDTH - 1) / DXT_BLOCK_WIDTH); + numBlocksDown = Math.floor((mipHeight + DXT_BLOCK_HEIGHT - 1) / DXT_BLOCK_HEIGHT); + numBlocks = numBlocksAcross * numBlocksDown; + mipSize = numBlocks * blockSize; + } + } else { + mipSize = mipWidth * mipHeight * 4; + } + const mipBuff = format === PIXELFORMAT_RGBA32F ? new Float32Array(data2, offset, mipSize) : format === PIXELFORMAT_RGBA16F ? new Uint16Array(data2, offset, mipSize) : new Uint8Array(data2, offset, mipSize); + if (!isCubemap) { + texture._levels[i] = mipBuff; + } else { + if (!texture._levels[i]) texture._levels[i] = []; + texture._levels[i][face] = mipBuff; + } + offset += mipSize * componentSize; + mipWidth = Math.max(mipWidth * 0.5, 1); + mipHeight = Math.max(mipHeight * 0.5, 1); + } + } + texture.upload(); + return texture; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/hdr.js +var HdrParser = class extends TextureParser { + constructor(registry) { + super(); + this.maxRetries = 0; + } + load(url, callback, asset2) { + Asset.fetchArrayBuffer(url.load, callback, asset2, this.maxRetries); + } + open(url, data2, device, textureOptions = {}) { + const textureData = this.parse(data2); + if (!textureData) { + return null; + } + const texture = new Texture(device, _extends({ + name: url, + addressU: ADDRESS_REPEAT, + addressV: ADDRESS_CLAMP_TO_EDGE, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + width: textureData.width, + height: textureData.height, + levels: textureData.levels, + format: PIXELFORMAT_RGBA8, + type: TEXTURETYPE_RGBE, + mipmaps: false + }, textureOptions)); + texture.upload(); + return texture; + } + parse(data2) { + const readStream = new ReadStream(data2); + const magic = readStream.readLine(); + if (!magic.startsWith("#?RADIANCE")) { + return null; + } + const variables = {}; + while (true) { + const line = readStream.readLine(); + if (line.length === 0) { + break; + } else { + const parts = line.split("="); + if (parts.length === 2) { + variables[parts[0]] = parts[1]; + } + } + } + if (!variables.hasOwnProperty("FORMAT")) { + return null; + } + const resolution = readStream.readLine().split(" "); + if (resolution.length !== 4) { + return null; + } + const height = parseInt(resolution[1], 10); + const width = parseInt(resolution[3], 10); + const pixels = this._readPixels(readStream, width, height, resolution[0] === "-Y"); + if (!pixels) { + return null; + } + return { + width, + height, + levels: [pixels] + }; + } + _readPixels(readStream, width, height, flipY) { + if (width < 8 || width > 32767) { + return this._readPixelsFlat(readStream, width, height); + } + const rgbe = [0, 0, 0, 0]; + readStream.readArray(rgbe); + if (rgbe[0] !== 2 || rgbe[1] !== 2 || (rgbe[2] & 128) !== 0) { + readStream.skip(-4); + return this._readPixelsFlat(readStream, width, height); + } + const buffer = new ArrayBuffer(width * height * 4); + const view = new Uint8Array(buffer); + let scanstart = flipY ? 0 : width * 4 * (height - 1); + let x2, y2, i, channel, count, value; + for (y2 = 0; y2 < height; ++y2) { + if (y2) { + readStream.readArray(rgbe); + } + if ((rgbe[2] << 8) + rgbe[3] !== width) { + return null; + } + for (channel = 0; channel < 4; ++channel) { + x2 = 0; + while (x2 < width) { + count = readStream.readU8(); + if (count > 128) { + count -= 128; + if (x2 + count > width) { + return null; + } + value = readStream.readU8(); + for (i = 0; i < count; ++i) { + view[scanstart + channel + 4 * x2++] = value; + } + } else { + if (count === 0 || x2 + count > width) { + return null; + } + for (i = 0; i < count; ++i) { + view[scanstart + channel + 4 * x2++] = readStream.readU8(); + } + } + } + } + scanstart += width * 4 * (flipY ? 1 : -1); + } + return view; + } + _readPixelsFlat(readStream, width, height) { + return readStream.remainingBytes === width * height * 4 ? new Uint8Array(readStream.arraybuffer, readStream.offset) : null; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/texture.js +var JSON_ADDRESS_MODE = { + "repeat": ADDRESS_REPEAT, + "clamp": ADDRESS_CLAMP_TO_EDGE, + "mirror": ADDRESS_MIRRORED_REPEAT +}; +var JSON_FILTER_MODE = { + "nearest": FILTER_NEAREST, + "linear": FILTER_LINEAR, + "nearest_mip_nearest": FILTER_NEAREST_MIPMAP_NEAREST, + "linear_mip_nearest": FILTER_LINEAR_MIPMAP_NEAREST, + "nearest_mip_linear": FILTER_NEAREST_MIPMAP_LINEAR, + "linear_mip_linear": FILTER_LINEAR_MIPMAP_LINEAR +}; +var JSON_TEXTURE_TYPE = { + "default": TEXTURETYPE_DEFAULT, + "rgbm": TEXTURETYPE_RGBM, + "rgbe": TEXTURETYPE_RGBE, + "rgbp": TEXTURETYPE_RGBP, + "swizzleGGGR": TEXTURETYPE_SWIZZLEGGGR +}; +var _completePartialMipmapChain = function _completePartialMipmapChain2(texture) { + const requiredMipLevels = TextureUtils.calcMipLevelsCount(texture._width, texture._height); + const isHtmlElement = function isHtmlElement2(object) { + return object instanceof HTMLCanvasElement || object instanceof HTMLImageElement || object instanceof HTMLVideoElement; + }; + if (!(texture._format === PIXELFORMAT_RGBA8 || texture._format === PIXELFORMAT_RGBA32F) || texture._volume || texture._compressed || texture._levels.length === 1 || texture._levels.length === requiredMipLevels || isHtmlElement(texture._cubemap ? texture._levels[0][0] : texture._levels[0])) { + return; + } + const downsample = function downsample2(width, height, data2) { + const sampledWidth = Math.max(1, width >> 1); + const sampledHeight = Math.max(1, height >> 1); + const sampledData = new data2.constructor(sampledWidth * sampledHeight * 4); + const xs = Math.floor(width / sampledWidth); + const ys = Math.floor(height / sampledHeight); + const xsys = xs * ys; + for (let y2 = 0; y2 < sampledHeight; ++y2) { + for (let x2 = 0; x2 < sampledWidth; ++x2) { + for (let e = 0; e < 4; ++e) { + let sum = 0; + for (let sy = 0; sy < ys; ++sy) { + for (let sx = 0; sx < xs; ++sx) { + sum += data2[(x2 * xs + sx + (y2 * ys + sy) * width) * 4 + e]; + } + } + sampledData[(x2 + y2 * sampledWidth) * 4 + e] = sum / xsys; + } + } + } + return sampledData; + }; + for (let level = texture._levels.length; level < requiredMipLevels; ++level) { + const width = Math.max(1, texture._width >> level - 1); + const height = Math.max(1, texture._height >> level - 1); + if (texture._cubemap) { + const mips = []; + for (let face = 0; face < 6; ++face) { + mips.push(downsample(width, height, texture._levels[level - 1][face])); + } + texture._levels.push(mips); + } else { + texture._levels.push(downsample(width, height, texture._levels[level - 1])); + } + } + texture._levelsUpdated = texture._cubemap ? [[true, true, true, true, true, true]] : [true]; +}; +var TextureHandler = class extends ResourceHandler { + constructor(app2) { + super(app2, "texture"); + const assets = app2.assets; + const device = app2.graphicsDevice; + this._device = device; + this._assets = assets; + this.imgParser = new ImgParser(assets, device); + this.parsers = { + dds: new DdsParser(assets), + ktx: new KtxParser(assets), + ktx2: new Ktx2Parser(assets, device), + basis: new BasisParser(assets, device), + hdr: new HdrParser(assets) + }; + } + set crossOrigin(value) { + this.imgParser.crossOrigin = value; + } + get crossOrigin() { + return this.imgParser.crossOrigin; + } + set maxRetries(value) { + this.imgParser.maxRetries = value; + for (const parser in this.parsers) { + if (this.parsers.hasOwnProperty(parser)) { + this.parsers[parser].maxRetries = value; + } + } + } + get maxRetries() { + return this.imgParser.maxRetries; + } + _getUrlWithoutParams(url) { + return url.indexOf("?") >= 0 ? url.split("?")[0] : url; + } + _getParser(url) { + const ext = path.getExtension(this._getUrlWithoutParams(url)).toLowerCase().replace(".", ""); + return this.parsers[ext] || this.imgParser; + } + _getTextureOptions(asset2) { + const options = {}; + if (asset2) { + var _asset$name; + if (((_asset$name = asset2.name) == null ? void 0 : _asset$name.length) > 0) { + options.name = asset2.name; + } + const assetData = asset2.data; + if (assetData.hasOwnProperty("minfilter")) { + options.minFilter = JSON_FILTER_MODE[assetData.minfilter]; + } + if (assetData.hasOwnProperty("magfilter")) { + options.magFilter = JSON_FILTER_MODE[assetData.magfilter]; + } + if (assetData.hasOwnProperty("addressu")) { + options.addressU = JSON_ADDRESS_MODE[assetData.addressu]; + } + if (assetData.hasOwnProperty("addressv")) { + options.addressV = JSON_ADDRESS_MODE[assetData.addressv]; + } + if (assetData.hasOwnProperty("mipmaps")) { + options.mipmaps = assetData.mipmaps; + } + if (assetData.hasOwnProperty("anisotropy")) { + options.anisotropy = assetData.anisotropy; + } + if (assetData.hasOwnProperty("flipY")) { + options.flipY = !!assetData.flipY; + } + if (assetData.hasOwnProperty("type")) { + options.type = JSON_TEXTURE_TYPE[assetData.type]; + } else if (assetData.hasOwnProperty("rgbm") && assetData.rgbm) { + options.type = TEXTURETYPE_RGBM; + } else if (asset2.file && (asset2.file.opt & 8) !== 0) { + options.type = TEXTURETYPE_SWIZZLEGGGR; + } + } + return options; + } + load(url, callback, asset2) { + if (typeof url === "string") { + url = { + load: url, + original: url + }; + } + this._getParser(url.original).load(url, callback, asset2); + } + open(url, data2, asset2) { + if (!url) return void 0; + const textureOptions = this._getTextureOptions(asset2); + let texture = this._getParser(url).open(url, data2, this._device, textureOptions); + if (texture === null) { + texture = new Texture(this._device, { + width: 4, + height: 4, + format: PIXELFORMAT_RGB8 + }); + } else { + _completePartialMipmapChain(texture); + if (data2.unswizzledGGGR) { + asset2.file.variants.basis.opt &= ~8; + } + } + return texture; + } + patch(asset2, assets) { + const texture = asset2.resource; + if (!texture) { + return; + } + const options = this._getTextureOptions(asset2); + for (const key of Object.keys(options)) { + texture[key] = options[key]; + } + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/xr/constants.js +var XRHAND_LEFT = "left"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/xr/xr-finger.js +var XrFinger = class { + constructor(index, hand) { + this._index = void 0; + this._hand = void 0; + this._joints = []; + this._tip = null; + this._index = index; + this._hand = hand; + this._hand._fingers.push(this); + } + get index() { + return this._index; + } + get hand() { + return this._hand; + } + get joints() { + return this._joints; + } + get tip() { + return this._tip; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/xr/xr-joint.js +var tipJointIds = platform.browser && window.XRHand ? ["thumb-tip", "index-finger-tip", "middle-finger-tip", "ring-finger-tip", "pinky-finger-tip"] : []; +var tipJointIdsIndex = {}; +for (let i = 0; i < tipJointIds.length; i++) { + tipJointIdsIndex[tipJointIds[i]] = true; +} +var XrJoint = class { + constructor(index, id12, hand, finger = null) { + this._index = void 0; + this._id = void 0; + this._hand = void 0; + this._finger = void 0; + this._wrist = void 0; + this._tip = void 0; + this._radius = null; + this._localTransform = new Mat4(); + this._worldTransform = new Mat4(); + this._localPosition = new Vec3(); + this._localRotation = new Quat2(); + this._position = new Vec3(); + this._rotation = new Quat2(); + this._dirtyLocal = true; + this._index = index; + this._id = id12; + this._hand = hand; + this._finger = finger; + this._wrist = id12 === "wrist"; + this._tip = this._finger && !!tipJointIdsIndex[id12]; + } + update(pose) { + this._dirtyLocal = true; + this._radius = pose.radius; + this._localPosition.copy(pose.transform.position); + this._localRotation.copy(pose.transform.orientation); + } + _updateTransforms() { + if (this._dirtyLocal) { + this._dirtyLocal = false; + this._localTransform.setTRS(this._localPosition, this._localRotation, Vec3.ONE); + } + const manager = this._hand._manager; + const parent = manager.camera.parent; + if (parent) { + this._worldTransform.mul2(parent.getWorldTransform(), this._localTransform); + } else { + this._worldTransform.copy(this._localTransform); + } + } + getPosition() { + this._updateTransforms(); + this._worldTransform.getTranslation(this._position); + return this._position; + } + getRotation() { + this._updateTransforms(); + this._rotation.setFromMat4(this._worldTransform); + return this._rotation; + } + get index() { + return this._index; + } + get hand() { + return this._hand; + } + get finger() { + return this._finger; + } + get wrist() { + return this._wrist; + } + get tip() { + return this._tip; + } + get radius() { + return this._radius || 5e-3; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/xr/xr-hand.js +var fingerJointIds = []; +var vecA = new Vec3(); +var vecB = new Vec3(); +var vecC = new Vec3(); +if (platform.browser && window.XRHand) { + fingerJointIds = [["thumb-metacarpal", "thumb-phalanx-proximal", "thumb-phalanx-distal", "thumb-tip"], ["index-finger-metacarpal", "index-finger-phalanx-proximal", "index-finger-phalanx-intermediate", "index-finger-phalanx-distal", "index-finger-tip"], ["middle-finger-metacarpal", "middle-finger-phalanx-proximal", "middle-finger-phalanx-intermediate", "middle-finger-phalanx-distal", "middle-finger-tip"], ["ring-finger-metacarpal", "ring-finger-phalanx-proximal", "ring-finger-phalanx-intermediate", "ring-finger-phalanx-distal", "ring-finger-tip"], ["pinky-finger-metacarpal", "pinky-finger-phalanx-proximal", "pinky-finger-phalanx-intermediate", "pinky-finger-phalanx-distal", "pinky-finger-tip"]]; +} +var XrHand = class extends EventHandler { + constructor(inputSource) { + super(); + this._manager = void 0; + this._inputSource = void 0; + this._tracking = false; + this._fingers = []; + this._joints = []; + this._jointsById = {}; + this._tips = []; + this._wrist = null; + const xrHand = inputSource._xrInputSource.hand; + this._manager = inputSource._manager; + this._inputSource = inputSource; + if (xrHand.get("wrist")) { + const joint = new XrJoint(0, "wrist", this, null); + this._wrist = joint; + this._joints.push(joint); + this._jointsById.wrist = joint; + } + for (let f = 0; f < fingerJointIds.length; f++) { + const finger = new XrFinger(f, this); + for (let j = 0; j < fingerJointIds[f].length; j++) { + const jointId = fingerJointIds[f][j]; + if (!xrHand.get(jointId)) continue; + const joint = new XrJoint(j, jointId, this, finger); + this._joints.push(joint); + this._jointsById[jointId] = joint; + if (joint.tip) { + this._tips.push(joint); + finger._tip = joint; + } + finger._joints.push(joint); + } + } + } + update(frame) { + const xrInputSource = this._inputSource._xrInputSource; + for (let j = 0; j < this._joints.length; j++) { + const joint = this._joints[j]; + const jointSpace = xrInputSource.hand.get(joint._id); + if (jointSpace) { + let pose; + if (frame.session.visibilityState !== "hidden") pose = frame.getJointPose(jointSpace, this._manager._referenceSpace); + if (pose) { + joint.update(pose); + if (joint.wrist && !this._tracking) { + this._tracking = true; + this.fire("tracking"); + } + } else if (joint.wrist) { + if (this._tracking) { + this._tracking = false; + this.fire("trackinglost"); + } + break; + } + } + } + const j1 = this._jointsById["thumb-metacarpal"]; + const j4 = this._jointsById["thumb-tip"]; + const j6 = this._jointsById["index-finger-phalanx-proximal"]; + const j9 = this._jointsById["index-finger-tip"]; + const j16 = this._jointsById["ring-finger-phalanx-proximal"]; + const j21 = this._jointsById["pinky-finger-phalanx-proximal"]; + if (j1 && j4 && j6 && j9 && j16 && j21) { + this._inputSource._dirtyRay = true; + this._inputSource._rayLocal.origin.lerp(j4._localPosition, j9._localPosition, 0.5); + let jointL = j1; + let jointR = j21; + if (this._inputSource.handedness === XRHAND_LEFT) { + const t = jointL; + jointL = jointR; + jointR = t; + } + vecA.sub2(jointL._localPosition, this._wrist._localPosition); + vecB.sub2(jointR._localPosition, this._wrist._localPosition); + vecC.cross(vecA, vecB).normalize(); + vecA.lerp(j6._localPosition, j16._localPosition, 0.5); + vecA.sub(this._wrist._localPosition).normalize(); + this._inputSource._rayLocal.direction.lerp(vecC, vecA, 0.5).normalize(); + } + const squeezing = this._fingerIsClosed(1) && this._fingerIsClosed(2) && this._fingerIsClosed(3) && this._fingerIsClosed(4); + if (squeezing) { + if (!this._inputSource._squeezing) { + this._inputSource._squeezing = true; + this._inputSource.fire("squeezestart"); + this._manager.input.fire("squeezestart", this._inputSource); + } + } else { + if (this._inputSource._squeezing) { + this._inputSource._squeezing = false; + this._inputSource.fire("squeeze"); + this._manager.input.fire("squeeze", this._inputSource); + this._inputSource.fire("squeezeend"); + this._manager.input.fire("squeezeend", this._inputSource); + } + } + } + _fingerIsClosed(index) { + const finger = this._fingers[index]; + vecA.sub2(finger.joints[0]._localPosition, finger.joints[1]._localPosition).normalize(); + vecB.sub2(finger.joints[2]._localPosition, finger.joints[3]._localPosition).normalize(); + return vecA.dot(vecB) < -0.8; + } + getJointById(id12) { + return this._jointsById[id12] || null; + } + get fingers() { + return this._fingers; + } + get joints() { + return this._joints; + } + get tips() { + return this._tips; + } + get wrist() { + return this._wrist; + } + get tracking() { + return this._tracking; + } +}; +XrHand.EVENT_TRACKING = "tracking"; +XrHand.EVENT_TRACKINGLOST = "trackinglost"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/xr/xr-input-source.js +var vec3A = new Vec3(); +var quat2 = new Quat2(); +var ids = 0; +var XrInputSource = class extends EventHandler { + constructor(manager, xrInputSource) { + super(); + this._id = void 0; + this._manager = void 0; + this._xrInputSource = void 0; + this._ray = new Ray(); + this._rayLocal = new Ray(); + this._grip = false; + this._hand = null; + this._velocitiesAvailable = false; + this._velocitiesTimestamp = now(); + this._localTransform = null; + this._worldTransform = null; + this._position = new Vec3(); + this._rotation = new Quat2(); + this._localPosition = null; + this._localPositionLast = null; + this._localRotation = null; + this._linearVelocity = null; + this._dirtyLocal = true; + this._dirtyRay = false; + this._selecting = false; + this._squeezing = false; + this._elementInput = true; + this._elementEntity = null; + this._hitTestSources = []; + this._id = ++ids; + this._manager = manager; + this._xrInputSource = xrInputSource; + if (xrInputSource.hand) this._hand = new XrHand(this); + } + get id() { + return this._id; + } + get inputSource() { + return this._xrInputSource; + } + get targetRayMode() { + return this._xrInputSource.targetRayMode; + } + get handedness() { + return this._xrInputSource.handedness; + } + get profiles() { + return this._xrInputSource.profiles; + } + get grip() { + return this._grip; + } + get hand() { + return this._hand; + } + get gamepad() { + return this._xrInputSource.gamepad || null; + } + get selecting() { + return this._selecting; + } + get squeezing() { + return this._squeezing; + } + set elementInput(value) { + if (this._elementInput === value) return; + this._elementInput = value; + if (!this._elementInput) this._elementEntity = null; + } + get elementInput() { + return this._elementInput; + } + get elementEntity() { + return this._elementEntity; + } + get hitTestSources() { + return this._hitTestSources; + } + update(frame) { + if (this._hand) { + this._hand.update(frame); + } else { + const gripSpace = this._xrInputSource.gripSpace; + if (gripSpace) { + const gripPose = frame.getPose(gripSpace, this._manager._referenceSpace); + if (gripPose) { + if (!this._grip) { + this._grip = true; + this._localTransform = new Mat4(); + this._worldTransform = new Mat4(); + this._localPositionLast = new Vec3(); + this._localPosition = new Vec3(); + this._localRotation = new Quat2(); + this._linearVelocity = new Vec3(); + } + const timestamp = now(); + const dt = (timestamp - this._velocitiesTimestamp) / 1e3; + this._velocitiesTimestamp = timestamp; + this._dirtyLocal = true; + this._localPositionLast.copy(this._localPosition); + this._localPosition.copy(gripPose.transform.position); + this._localRotation.copy(gripPose.transform.orientation); + this._velocitiesAvailable = true; + if (this._manager.input.velocitiesSupported && gripPose.linearVelocity) { + this._linearVelocity.copy(gripPose.linearVelocity); + } else if (dt > 0) { + vec3A.sub2(this._localPosition, this._localPositionLast).divScalar(dt); + this._linearVelocity.lerp(this._linearVelocity, vec3A, 0.15); + } + } else { + this._velocitiesAvailable = false; + } + } + const targetRayPose = frame.getPose(this._xrInputSource.targetRaySpace, this._manager._referenceSpace); + if (targetRayPose) { + this._dirtyRay = true; + this._rayLocal.origin.copy(targetRayPose.transform.position); + this._rayLocal.direction.set(0, 0, -1); + quat2.copy(targetRayPose.transform.orientation); + quat2.transformVector(this._rayLocal.direction, this._rayLocal.direction); + } + } + } + _updateTransforms() { + if (this._dirtyLocal) { + this._dirtyLocal = false; + this._localTransform.setTRS(this._localPosition, this._localRotation, Vec3.ONE); + } + const parent = this._manager.camera.parent; + if (parent) { + this._worldTransform.mul2(parent.getWorldTransform(), this._localTransform); + } else { + this._worldTransform.copy(this._localTransform); + } + } + _updateRayTransforms() { + const dirty = this._dirtyRay; + this._dirtyRay = false; + const parent = this._manager.camera.parent; + if (parent) { + const parentTransform = this._manager.camera.parent.getWorldTransform(); + parentTransform.getTranslation(this._position); + this._rotation.setFromMat4(parentTransform); + this._rotation.transformVector(this._rayLocal.origin, this._ray.origin); + this._ray.origin.add(this._position); + this._rotation.transformVector(this._rayLocal.direction, this._ray.direction); + } else if (dirty) { + this._ray.origin.copy(this._rayLocal.origin); + this._ray.direction.copy(this._rayLocal.direction); + } + } + getPosition() { + if (!this._position) return null; + this._updateTransforms(); + this._worldTransform.getTranslation(this._position); + return this._position; + } + getLocalPosition() { + return this._localPosition; + } + getRotation() { + if (!this._rotation) return null; + this._updateTransforms(); + this._rotation.setFromMat4(this._worldTransform); + return this._rotation; + } + getLocalRotation() { + return this._localRotation; + } + getLinearVelocity() { + if (!this._velocitiesAvailable) return null; + return this._linearVelocity; + } + getOrigin() { + this._updateRayTransforms(); + return this._ray.origin; + } + getDirection() { + this._updateRayTransforms(); + return this._ray.direction; + } + hitTestStart(options = {}) { + options.inputSource = this; + options.profile = this._xrInputSource.profiles[0]; + const callback = options.callback; + options.callback = (err, hitTestSource) => { + if (hitTestSource) this.onHitTestSourceAdd(hitTestSource); + if (callback) callback(err, hitTestSource); + }; + this._manager.hitTest.start(options); + } + onHitTestSourceAdd(hitTestSource) { + this._hitTestSources.push(hitTestSource); + this.fire("hittest:add", hitTestSource); + hitTestSource.on("result", (position2, rotation2, inputSource, hitTestResult) => { + if (inputSource !== this) return; + this.fire("hittest:result", hitTestSource, position2, rotation2, hitTestResult); + }); + hitTestSource.once("remove", () => { + this.onHitTestSourceRemove(hitTestSource); + this.fire("hittest:remove", hitTestSource); + }); + } + onHitTestSourceRemove(hitTestSource) { + const ind = this._hitTestSources.indexOf(hitTestSource); + if (ind !== -1) this._hitTestSources.splice(ind, 1); + } +}; +XrInputSource.EVENT_REMOVE = "remove"; +XrInputSource.EVENT_SELECT = "select"; +XrInputSource.EVENT_SELECTSTART = "selectstart"; +XrInputSource.EVENT_SELECTEND = "selectend"; +XrInputSource.EVENT_SQUEEZE = "squeeze"; +XrInputSource.EVENT_SQUEEZESTART = "squeezestart"; +XrInputSource.EVENT_SQUEEZEEND = "squeezeend"; +XrInputSource.EVENT_HITTESTADD = "hittest:add"; +XrInputSource.EVENT_HITTESTREMOVE = "hittest:remove"; +XrInputSource.EVENT_HITTESTRESULT = "hittest:result"; + +// ../../node_modules/playcanvas/build/playcanvas/src/framework/input/element-input.js +var targetX; +var targetY; +var vecA2 = new Vec3(); +var vecB2 = new Vec3(); +var rayA = new Ray(); +var rayB = new Ray(); +var rayC = new Ray(); +rayA.end = new Vec3(); +rayB.end = new Vec3(); +rayC.end = new Vec3(); +var _pq = new Vec3(); +var _pa = new Vec3(); +var _pb = new Vec3(); +var _pc = new Vec3(); +var _pd = new Vec3(); +var _m = new Vec3(); +var _au = new Vec3(); +var _bv = new Vec3(); +var _cw = new Vec3(); +var _ir = new Vec3(); +var _sct = new Vec3(); +var _accumulatedScale = new Vec3(); +var _paddingTop = new Vec3(); +var _paddingBottom = new Vec3(); +var _paddingLeft = new Vec3(); +var _paddingRight = new Vec3(); +var _cornerBottomLeft = new Vec3(); +var _cornerBottomRight = new Vec3(); +var _cornerTopRight = new Vec3(); +var _cornerTopLeft = new Vec3(); +var ZERO_VEC4 = new Vec4(); +function scalarTriple(p12, p22, p3) { + return _sct.cross(p12, p22).dot(p3); +} +function intersectLineQuad(p, q2, corners) { + _pq.sub2(q2, p); + _pa.sub2(corners[0], p); + _pb.sub2(corners[1], p); + _pc.sub2(corners[2], p); + _m.cross(_pc, _pq); + let v = _pa.dot(_m); + let u; + let w; + if (v >= 0) { + u = -_pb.dot(_m); + if (u < 0) return -1; + w = scalarTriple(_pq, _pb, _pa); + if (w < 0) return -1; + const denom = 1 / (u + v + w); + _au.copy(corners[0]).mulScalar(u * denom); + _bv.copy(corners[1]).mulScalar(v * denom); + _cw.copy(corners[2]).mulScalar(w * denom); + _ir.copy(_au).add(_bv).add(_cw); + } else { + _pd.sub2(corners[3], p); + u = _pd.dot(_m); + if (u < 0) return -1; + w = scalarTriple(_pq, _pa, _pd); + if (w < 0) return -1; + v = -v; + const denom = 1 / (u + v + w); + _au.copy(corners[0]).mulScalar(u * denom); + _bv.copy(corners[3]).mulScalar(v * denom); + _cw.copy(corners[2]).mulScalar(w * denom); + _ir.copy(_au).add(_bv).add(_cw); + } + if (_pq.sub2(corners[0], corners[2]).lengthSq() < 1e-4 * 1e-4) return -1; + if (_pq.sub2(corners[1], corners[3]).lengthSq() < 1e-4 * 1e-4) return -1; + return _ir.sub(p).lengthSq(); +} +var ElementInputEvent = class { + constructor(event, element, camera) { + this.event = event; + this.element = element; + this.camera = camera; + this._stopPropagation = false; + } + stopPropagation() { + this._stopPropagation = true; + if (this.event) { + this.event.stopImmediatePropagation(); + this.event.stopPropagation(); + } + } +}; +var ElementMouseEvent = class extends ElementInputEvent { + constructor(event, element, camera, x2, y2, lastX, lastY) { + super(event, element, camera); + this.x = x2; + this.y = y2; + this.ctrlKey = event.ctrlKey || false; + this.altKey = event.altKey || false; + this.shiftKey = event.shiftKey || false; + this.metaKey = event.metaKey || false; + this.button = event.button; + if (Mouse.isPointerLocked()) { + this.dx = event.movementX || event.webkitMovementX || event.mozMovementX || 0; + this.dy = event.movementY || event.webkitMovementY || event.mozMovementY || 0; + } else { + this.dx = x2 - lastX; + this.dy = y2 - lastY; + } + this.wheelDelta = 0; + if (event.type === "wheel") { + if (event.deltaY > 0) { + this.wheelDelta = 1; + } else if (event.deltaY < 0) { + this.wheelDelta = -1; + } + } + } +}; +var ElementTouchEvent = class extends ElementInputEvent { + constructor(event, element, camera, x2, y2, touch2) { + super(event, element, camera); + this.touches = event.touches; + this.changedTouches = event.changedTouches; + this.x = x2; + this.y = y2; + this.touch = touch2; + } +}; +var ElementSelectEvent = class extends ElementInputEvent { + constructor(event, element, camera, inputSource) { + super(event, element, camera); + this.inputSource = inputSource; + } +}; +var ElementInput = class _ElementInput { + constructor(domElement, options) { + this._app = null; + this._attached = false; + this._target = null; + this._enabled = true; + this._lastX = 0; + this._lastY = 0; + this._upHandler = this._handleUp.bind(this); + this._downHandler = this._handleDown.bind(this); + this._moveHandler = this._handleMove.bind(this); + this._wheelHandler = this._handleWheel.bind(this); + this._touchstartHandler = this._handleTouchStart.bind(this); + this._touchendHandler = this._handleTouchEnd.bind(this); + this._touchcancelHandler = this._touchendHandler; + this._touchmoveHandler = this._handleTouchMove.bind(this); + this._sortHandler = this._sortElements.bind(this); + this._elements = []; + this._hoveredElement = null; + this._pressedElement = null; + this._touchedElements = {}; + this._touchesForWhichTouchLeaveHasFired = {}; + this._selectedElements = {}; + this._selectedPressedElements = {}; + this._useMouse = !options || options.useMouse !== false; + this._useTouch = !options || options.useTouch !== false; + this._useXr = !options || options.useXr !== false; + this._selectEventsAttached = false; + if (platform.touch) this._clickedEntities = {}; + this.attach(domElement); + } + set enabled(value) { + this._enabled = value; + } + get enabled() { + return this._enabled; + } + set app(value) { + this._app = value; + } + get app() { + return this._app || getApplication(); + } + attach(domElement) { + if (this._attached) { + this._attached = false; + this.detach(); + } + this._target = domElement; + this._attached = true; + const opts = platform.passiveEvents ? { + passive: true + } : false; + if (this._useMouse) { + window.addEventListener("mouseup", this._upHandler, opts); + window.addEventListener("mousedown", this._downHandler, opts); + window.addEventListener("mousemove", this._moveHandler, opts); + window.addEventListener("wheel", this._wheelHandler, opts); + } + if (this._useTouch && platform.touch) { + this._target.addEventListener("touchstart", this._touchstartHandler, opts); + this._target.addEventListener("touchend", this._touchendHandler, false); + this._target.addEventListener("touchmove", this._touchmoveHandler, false); + this._target.addEventListener("touchcancel", this._touchcancelHandler, false); + } + this.attachSelectEvents(); + } + attachSelectEvents() { + if (!this._selectEventsAttached && this._useXr && this.app && this.app.xr && this.app.xr.supported) { + if (!this._clickedEntities) this._clickedEntities = {}; + this._selectEventsAttached = true; + this.app.xr.on("start", this._onXrStart, this); + } + } + detach() { + if (!this._attached) return; + this._attached = false; + const opts = platform.passiveEvents ? { + passive: true + } : false; + if (this._useMouse) { + window.removeEventListener("mouseup", this._upHandler, opts); + window.removeEventListener("mousedown", this._downHandler, opts); + window.removeEventListener("mousemove", this._moveHandler, opts); + window.removeEventListener("wheel", this._wheelHandler, opts); + } + if (this._useTouch) { + this._target.removeEventListener("touchstart", this._touchstartHandler, opts); + this._target.removeEventListener("touchend", this._touchendHandler, false); + this._target.removeEventListener("touchmove", this._touchmoveHandler, false); + this._target.removeEventListener("touchcancel", this._touchcancelHandler, false); + } + if (this._selectEventsAttached) { + this._selectEventsAttached = false; + this.app.xr.off("start", this._onXrStart, this); + this.app.xr.off("end", this._onXrEnd, this); + this.app.xr.off("update", this._onXrUpdate, this); + this.app.xr.input.off("selectstart", this._onSelectStart, this); + this.app.xr.input.off("selectend", this._onSelectEnd, this); + this.app.xr.input.off("remove", this._onXrInputRemove, this); + } + this._target = null; + } + addElement(element) { + if (this._elements.indexOf(element) === -1) this._elements.push(element); + } + removeElement(element) { + const idx = this._elements.indexOf(element); + if (idx !== -1) this._elements.splice(idx, 1); + } + _handleUp(event) { + if (!this._enabled) return; + if (Mouse.isPointerLocked()) return; + this._calcMouseCoords(event); + this._onElementMouseEvent("mouseup", event); + } + _handleDown(event) { + if (!this._enabled) return; + if (Mouse.isPointerLocked()) return; + this._calcMouseCoords(event); + this._onElementMouseEvent("mousedown", event); + } + _handleMove(event) { + if (!this._enabled) return; + this._calcMouseCoords(event); + this._onElementMouseEvent("mousemove", event); + this._lastX = targetX; + this._lastY = targetY; + } + _handleWheel(event) { + if (!this._enabled) return; + this._calcMouseCoords(event); + this._onElementMouseEvent("mousewheel", event); + } + _determineTouchedElements(event) { + const touchedElements = {}; + const cameras = this.app.systems.camera.cameras; + for (let i = cameras.length - 1; i >= 0; i--) { + const camera = cameras[i]; + let done = 0; + const len = event.changedTouches.length; + for (let j = 0; j < len; j++) { + if (touchedElements[event.changedTouches[j].identifier]) { + done++; + continue; + } + const coords = this._calcTouchCoords(event.changedTouches[j]); + const element = this._getTargetElementByCoords(camera, coords.x, coords.y); + if (element) { + done++; + touchedElements[event.changedTouches[j].identifier] = { + element, + camera, + x: coords.x, + y: coords.y + }; + } + } + if (done === len) { + break; + } + } + return touchedElements; + } + _handleTouchStart(event) { + if (!this._enabled) return; + const newTouchedElements = this._determineTouchedElements(event); + for (let i = 0, len = event.changedTouches.length; i < len; i++) { + const touch2 = event.changedTouches[i]; + const newTouchInfo = newTouchedElements[touch2.identifier]; + const oldTouchInfo = this._touchedElements[touch2.identifier]; + if (newTouchInfo && (!oldTouchInfo || newTouchInfo.element !== oldTouchInfo.element)) { + this._fireEvent(event.type, new ElementTouchEvent(event, newTouchInfo.element, newTouchInfo.camera, newTouchInfo.x, newTouchInfo.y, touch2)); + this._touchesForWhichTouchLeaveHasFired[touch2.identifier] = false; + } + } + for (const touchId in newTouchedElements) { + this._touchedElements[touchId] = newTouchedElements[touchId]; + } + } + _handleTouchEnd(event) { + if (!this._enabled) return; + const cameras = this.app.systems.camera.cameras; + for (const key in this._clickedEntities) { + delete this._clickedEntities[key]; + } + for (let i = 0, len = event.changedTouches.length; i < len; i++) { + const touch2 = event.changedTouches[i]; + const touchInfo = this._touchedElements[touch2.identifier]; + if (!touchInfo) continue; + const element = touchInfo.element; + const camera = touchInfo.camera; + const x2 = touchInfo.x; + const y2 = touchInfo.y; + delete this._touchedElements[touch2.identifier]; + delete this._touchesForWhichTouchLeaveHasFired[touch2.identifier]; + const coords = this._calcTouchCoords(touch2); + for (let c2 = cameras.length - 1; c2 >= 0; c2--) { + const hovered = this._getTargetElementByCoords(cameras[c2], coords.x, coords.y); + if (hovered === element) { + if (!this._clickedEntities[element.entity.getGuid()]) { + this._fireEvent("click", new ElementTouchEvent(event, element, camera, x2, y2, touch2)); + this._clickedEntities[element.entity.getGuid()] = Date.now(); + } + } + } + this._fireEvent(event.type, new ElementTouchEvent(event, element, camera, x2, y2, touch2)); + } + } + _handleTouchMove(event) { + event.preventDefault(); + if (!this._enabled) return; + const newTouchedElements = this._determineTouchedElements(event); + for (let i = 0, len = event.changedTouches.length; i < len; i++) { + const touch2 = event.changedTouches[i]; + const newTouchInfo = newTouchedElements[touch2.identifier]; + const oldTouchInfo = this._touchedElements[touch2.identifier]; + if (oldTouchInfo) { + const coords = this._calcTouchCoords(touch2); + if ((!newTouchInfo || newTouchInfo.element !== oldTouchInfo.element) && !this._touchesForWhichTouchLeaveHasFired[touch2.identifier]) { + this._fireEvent("touchleave", new ElementTouchEvent(event, oldTouchInfo.element, oldTouchInfo.camera, coords.x, coords.y, touch2)); + this._touchesForWhichTouchLeaveHasFired[touch2.identifier] = true; + } + this._fireEvent("touchmove", new ElementTouchEvent(event, oldTouchInfo.element, oldTouchInfo.camera, coords.x, coords.y, touch2)); + } + } + } + _onElementMouseEvent(eventType, event) { + let element = null; + const lastHovered = this._hoveredElement; + this._hoveredElement = null; + const cameras = this.app.systems.camera.cameras; + let camera; + for (let i = cameras.length - 1; i >= 0; i--) { + camera = cameras[i]; + element = this._getTargetElementByCoords(camera, targetX, targetY); + if (element) break; + } + this._hoveredElement = element; + if ((eventType === "mousemove" || eventType === "mouseup") && this._pressedElement) { + this._fireEvent(eventType, new ElementMouseEvent(event, this._pressedElement, camera, targetX, targetY, this._lastX, this._lastY)); + } else if (element) { + this._fireEvent(eventType, new ElementMouseEvent(event, element, camera, targetX, targetY, this._lastX, this._lastY)); + if (eventType === "mousedown") { + this._pressedElement = element; + } + } + if (lastHovered !== this._hoveredElement) { + if (lastHovered) { + this._fireEvent("mouseleave", new ElementMouseEvent(event, lastHovered, camera, targetX, targetY, this._lastX, this._lastY)); + } + if (this._hoveredElement) { + this._fireEvent("mouseenter", new ElementMouseEvent(event, this._hoveredElement, camera, targetX, targetY, this._lastX, this._lastY)); + } + } + if (eventType === "mouseup" && this._pressedElement) { + if (this._pressedElement === this._hoveredElement) { + const guid2 = this._hoveredElement.entity.getGuid(); + let fireClick = !this._clickedEntities; + if (this._clickedEntities) { + const lastTouchUp = this._clickedEntities[guid2] || 0; + const dt = Date.now() - lastTouchUp; + fireClick = dt > 300; + delete this._clickedEntities[guid2]; + } + if (fireClick) { + this._fireEvent("click", new ElementMouseEvent(event, this._hoveredElement, camera, targetX, targetY, this._lastX, this._lastY)); + } + } + this._pressedElement = null; + } + } + _onXrStart() { + this.app.xr.on("end", this._onXrEnd, this); + this.app.xr.on("update", this._onXrUpdate, this); + this.app.xr.input.on("selectstart", this._onSelectStart, this); + this.app.xr.input.on("selectend", this._onSelectEnd, this); + this.app.xr.input.on("remove", this._onXrInputRemove, this); + } + _onXrEnd() { + this.app.xr.off("update", this._onXrUpdate, this); + this.app.xr.input.off("selectstart", this._onSelectStart, this); + this.app.xr.input.off("selectend", this._onSelectEnd, this); + this.app.xr.input.off("remove", this._onXrInputRemove, this); + } + _onXrUpdate() { + if (!this._enabled) return; + const inputSources = this.app.xr.input.inputSources; + for (let i = 0; i < inputSources.length; i++) { + this._onElementSelectEvent("selectmove", inputSources[i], null); + } + } + _onXrInputRemove(inputSource) { + const hovered = this._selectedElements[inputSource.id]; + if (hovered) { + inputSource._elementEntity = null; + this._fireEvent("selectleave", new ElementSelectEvent(null, hovered, null, inputSource)); + } + delete this._selectedElements[inputSource.id]; + delete this._selectedPressedElements[inputSource.id]; + } + _onSelectStart(inputSource, event) { + if (!this._enabled) return; + this._onElementSelectEvent("selectstart", inputSource, event); + } + _onSelectEnd(inputSource, event) { + if (!this._enabled) return; + this._onElementSelectEvent("selectend", inputSource, event); + } + _onElementSelectEvent(eventType, inputSource, event) { + let element; + const hoveredBefore = this._selectedElements[inputSource.id]; + let hoveredNow; + const cameras = this.app.systems.camera.cameras; + let camera; + if (inputSource.elementInput) { + rayC.set(inputSource.getOrigin(), inputSource.getDirection()); + for (let i = cameras.length - 1; i >= 0; i--) { + camera = cameras[i]; + element = this._getTargetElementByRay(rayC, camera); + if (element) break; + } + } + inputSource._elementEntity = element || null; + if (element) { + this._selectedElements[inputSource.id] = element; + hoveredNow = element; + } else { + delete this._selectedElements[inputSource.id]; + } + if (hoveredBefore !== hoveredNow) { + if (hoveredBefore) this._fireEvent("selectleave", new ElementSelectEvent(event, hoveredBefore, camera, inputSource)); + if (hoveredNow) this._fireEvent("selectenter", new ElementSelectEvent(event, hoveredNow, camera, inputSource)); + } + const pressed = this._selectedPressedElements[inputSource.id]; + if (eventType === "selectmove" && pressed) { + this._fireEvent("selectmove", new ElementSelectEvent(event, pressed, camera, inputSource)); + } + if (eventType === "selectstart") { + this._selectedPressedElements[inputSource.id] = hoveredNow; + if (hoveredNow) this._fireEvent("selectstart", new ElementSelectEvent(event, hoveredNow, camera, inputSource)); + } + if (!inputSource.elementInput && pressed) { + delete this._selectedPressedElements[inputSource.id]; + if (hoveredBefore) { + this._fireEvent("selectend", new ElementSelectEvent(event, pressed, camera, inputSource)); + } + } + if (eventType === "selectend" && inputSource.elementInput) { + delete this._selectedPressedElements[inputSource.id]; + if (pressed) { + this._fireEvent("selectend", new ElementSelectEvent(event, pressed, camera, inputSource)); + } + if (pressed && pressed === hoveredBefore) { + this._fireEvent("click", new ElementSelectEvent(event, pressed, camera, inputSource)); + } + } + } + _fireEvent(name, evt) { + let element = evt.element; + while (true) { + element.fire(name, evt); + if (evt._stopPropagation) break; + if (!element.entity.parent) break; + element = element.entity.parent.element; + if (!element) break; + } + } + _calcMouseCoords(event) { + const rect = this._target.getBoundingClientRect(); + const left = Math.floor(rect.left); + const top = Math.floor(rect.top); + targetX = event.clientX - left; + targetY = event.clientY - top; + } + _calcTouchCoords(touch2) { + let totalOffsetX = 0; + let totalOffsetY = 0; + let target2 = touch2.target; + while (!(target2 instanceof HTMLElement)) { + target2 = target2.parentNode; + } + let currentElement = target2; + do { + totalOffsetX += currentElement.offsetLeft - currentElement.scrollLeft; + totalOffsetY += currentElement.offsetTop - currentElement.scrollTop; + currentElement = currentElement.offsetParent; + } while (currentElement); + return { + x: touch2.pageX - totalOffsetX, + y: touch2.pageY - totalOffsetY + }; + } + _sortElements(a, b) { + const layerOrder = this.app.scene.layers.sortTransparentLayers(a.layers, b.layers); + if (layerOrder !== 0) return layerOrder; + if (a.screen && !b.screen) return -1; + if (!a.screen && b.screen) return 1; + if (!a.screen && !b.screen) return 0; + if (a.screen.screen.screenSpace && !b.screen.screen.screenSpace) return -1; + if (b.screen.screen.screenSpace && !a.screen.screen.screenSpace) return 1; + return b.drawOrder - a.drawOrder; + } + _getTargetElementByCoords(camera, x2, y2) { + const rayScreen = this._calculateRayScreen(x2, y2, camera, rayA) ? rayA : null; + const ray3d = this._calculateRay3d(x2, y2, camera, rayB) ? rayB : null; + return this._getTargetElement(camera, rayScreen, ray3d); + } + _getTargetElementByRay(ray, camera) { + rayA.origin.copy(ray.origin); + rayA.direction.copy(ray.direction); + rayA.end.copy(rayA.direction).mulScalar(camera.farClip * 2).add(rayA.origin); + const ray3d = rayA; + const screenPos = camera.worldToScreen(ray3d.origin, vecA2); + const rayScreen = this._calculateRayScreen(screenPos.x, screenPos.y, camera, rayB) ? rayB : null; + return this._getTargetElement(camera, rayScreen, ray3d); + } + _getTargetElement(camera, rayScreen, ray3d) { + let result = null; + let closestDistance3d = Infinity; + this._elements.sort(this._sortHandler); + for (let i = 0, len = this._elements.length; i < len; i++) { + const element = this._elements[i]; + if (!element.layers.some((v) => camera.layersSet.has(v))) { + continue; + } + if (element.screen && element.screen.screen.screenSpace) { + if (!rayScreen) { + continue; + } + const currentDistance = this._checkElement(rayScreen, element, true); + if (currentDistance >= 0) { + result = element; + break; + } + } else { + if (!ray3d) { + continue; + } + const currentDistance = this._checkElement(ray3d, element, false); + if (currentDistance >= 0) { + if (currentDistance < closestDistance3d) { + result = element; + closestDistance3d = currentDistance; + } + if (element.screen) { + result = element; + break; + } + } + } + } + return result; + } + _calculateRayScreen(x2, y2, camera, ray) { + const sw = this.app.graphicsDevice.width; + const sh = this.app.graphicsDevice.height; + const cameraWidth = camera.rect.z * sw; + const cameraHeight = camera.rect.w * sh; + const cameraLeft = camera.rect.x * sw; + const cameraRight = cameraLeft + cameraWidth; + const cameraBottom = (1 - camera.rect.y) * sh; + const cameraTop = cameraBottom - cameraHeight; + let _x = x2 * sw / this._target.clientWidth; + let _y = y2 * sh / this._target.clientHeight; + if (_x >= cameraLeft && _x <= cameraRight && _y <= cameraBottom && _y >= cameraTop) { + _x = sw * (_x - cameraLeft) / cameraWidth; + _y = sh * (_y - cameraTop) / cameraHeight; + _y = sh - _y; + ray.origin.set(_x, _y, 1); + ray.direction.set(0, 0, -1); + ray.end.copy(ray.direction).mulScalar(2).add(ray.origin); + return true; + } + return false; + } + _calculateRay3d(x2, y2, camera, ray) { + const sw = this._target.clientWidth; + const sh = this._target.clientHeight; + const cameraWidth = camera.rect.z * sw; + const cameraHeight = camera.rect.w * sh; + const cameraLeft = camera.rect.x * sw; + const cameraRight = cameraLeft + cameraWidth; + const cameraBottom = (1 - camera.rect.y) * sh; + const cameraTop = cameraBottom - cameraHeight; + let _x = x2; + let _y = y2; + if (x2 >= cameraLeft && x2 <= cameraRight && y2 <= cameraBottom && _y >= cameraTop) { + _x = sw * (_x - cameraLeft) / cameraWidth; + _y = sh * (_y - cameraTop) / cameraHeight; + camera.screenToWorld(_x, _y, camera.nearClip, vecA2); + camera.screenToWorld(_x, _y, camera.farClip, vecB2); + ray.origin.copy(vecA2); + ray.direction.set(0, 0, -1); + ray.end.copy(vecB2); + return true; + } + return false; + } + _checkElement(ray, element, screen) { + if (element.maskedBy) { + if (this._checkElement(ray, element.maskedBy.element, screen) < 0) { + return -1; + } + } + let scale2; + if (screen) { + scale2 = _ElementInput.calculateScaleToScreen(element); + } else { + scale2 = _ElementInput.calculateScaleToWorld(element); + } + const corners = _ElementInput.buildHitCorners(element, screen ? element.screenCorners : element.worldCorners, scale2); + return intersectLineQuad(ray.origin, ray.end, corners); + } + static buildHitCorners(element, screenOrWorldCorners, scale2) { + let hitCorners = screenOrWorldCorners; + const button = element.entity && element.entity.button; + if (button) { + const hitPadding = element.entity.button.hitPadding || ZERO_VEC4; + _paddingTop.copy(element.entity.up); + _paddingBottom.copy(_paddingTop).mulScalar(-1); + _paddingRight.copy(element.entity.right); + _paddingLeft.copy(_paddingRight).mulScalar(-1); + _paddingTop.mulScalar(hitPadding.w * scale2.y); + _paddingBottom.mulScalar(hitPadding.y * scale2.y); + _paddingRight.mulScalar(hitPadding.z * scale2.x); + _paddingLeft.mulScalar(hitPadding.x * scale2.x); + _cornerBottomLeft.copy(hitCorners[0]).add(_paddingBottom).add(_paddingLeft); + _cornerBottomRight.copy(hitCorners[1]).add(_paddingBottom).add(_paddingRight); + _cornerTopRight.copy(hitCorners[2]).add(_paddingTop).add(_paddingRight); + _cornerTopLeft.copy(hitCorners[3]).add(_paddingTop).add(_paddingLeft); + hitCorners = [_cornerBottomLeft, _cornerBottomRight, _cornerTopRight, _cornerTopLeft]; + } + if (scale2.x < 0) { + const left = hitCorners[2].x; + const right2 = hitCorners[0].x; + hitCorners[0].x = left; + hitCorners[1].x = right2; + hitCorners[2].x = right2; + hitCorners[3].x = left; + } + if (scale2.y < 0) { + const bottom = hitCorners[2].y; + const top = hitCorners[0].y; + hitCorners[0].y = bottom; + hitCorners[1].y = bottom; + hitCorners[2].y = top; + hitCorners[3].y = top; + } + if (scale2.z < 0) { + const x2 = hitCorners[2].x; + const y2 = hitCorners[2].y; + const z2 = hitCorners[2].z; + hitCorners[2].x = hitCorners[0].x; + hitCorners[2].y = hitCorners[0].y; + hitCorners[2].z = hitCorners[0].z; + hitCorners[0].x = x2; + hitCorners[0].y = y2; + hitCorners[0].z = z2; + } + return hitCorners; + } + static calculateScaleToScreen(element) { + let current = element.entity; + const screenScale = element.screen.screen.scale; + _accumulatedScale.set(screenScale, screenScale, screenScale); + while (current && !current.screen) { + _accumulatedScale.mul(current.getLocalScale()); + current = current.parent; + } + return _accumulatedScale; + } + static calculateScaleToWorld(element) { + let current = element.entity; + _accumulatedScale.set(1, 1, 1); + while (current) { + _accumulatedScale.mul(current.getLocalScale()); + current = current.parent; + } + return _accumulatedScale; + } +}; + +// ../../node_modules/playcanvas/build/playcanvas/src/deprecated/deprecated.js +var LINEBATCH_OVERLAY = 1; +string.endsWith = function(s, subs) { + return s.endsWith(subs); +}; +string.startsWith = function(s, subs) { + return s.startsWith(subs); +}; +Object.defineProperty(Color.prototype, "data", { + get: function() { + if (!this._data) { + this._data = new Float32Array(4); + } + this._data[0] = this.r; + this._data[1] = this.g; + this._data[2] = this.b; + this._data[3] = this.a; + return this._data; + } +}); +Object.defineProperty(Color.prototype, "data3", { + get: function() { + if (!this._data3) { + this._data3 = new Float32Array(3); + } + this._data3[0] = this.r; + this._data3[1] = this.g; + this._data3[2] = this.b; + return this._data3; + } +}); +math.INV_LOG2 = Math.LOG2E; +math.intToBytes = math.intToBytes32; +math.bytesToInt = math.bytesToInt32; +Object.defineProperty(Vec2.prototype, "data", { + get: function() { + if (!this._data) { + this._data = new Float32Array(2); + } + this._data[0] = this.x; + this._data[1] = this.y; + return this._data; + } +}); +Vec2.prototype.scale = Vec2.prototype.mulScalar; +Object.defineProperty(Vec3.prototype, "data", { + get: function() { + if (!this._data) { + this._data = new Float32Array(3); + } + this._data[0] = this.x; + this._data[1] = this.y; + this._data[2] = this.z; + return this._data; + } +}); +Vec3.prototype.scale = Vec3.prototype.mulScalar; +Object.defineProperty(Vec4.prototype, "data", { + get: function() { + if (!this._data) { + this._data = new Float32Array(4); + } + this._data[0] = this.x; + this._data[1] = this.y; + this._data[2] = this.z; + this._data[3] = this.w; + return this._data; + } +}); +Vec4.prototype.scale = Vec4.prototype.mulScalar; +BoundingSphere.prototype.intersectRay = BoundingSphere.prototype.intersectsRay; +Frustum.prototype.update = function(projectionMatrix, viewMatrix) { + const viewProj = new Mat4(); + viewProj.mul2(projectionMatrix, viewMatrix); + this.setFromMat4(viewProj); +}; +var PIXELFORMAT_R8_G8_B8 = PIXELFORMAT_RGB8; +function UnsupportedBrowserError(message) { + this.name = "UnsupportedBrowserError"; + this.message = message || ""; +} +UnsupportedBrowserError.prototype = Error.prototype; +function ContextCreationError(message) { + this.name = "ContextCreationError"; + this.message = message || ""; +} +ContextCreationError.prototype = Error.prototype; +var programlib = { + begin: ShaderGenerator.begin, + dummyFragmentCode: ShaderUtils.dummyFragmentCode, + end: ShaderGenerator.end, + fogCode: ShaderGenerator.fogCode, + gammaCode: ShaderGenerator.gammaCode, + precisionCode: ShaderUtils.precisionCode, + skinCode: ShaderGenerator.skinCode, + tonemapCode: ShaderGenerator.tonemapCode, + versionCode: ShaderUtils.versionCode +}; +var _viewport3 = new Vec4(); +Object.defineProperty(shaderChunks, "transformSkinnedVS", { + get: function() { + return "#define SKIN\n" + shaderChunks.transformVS; + } +}); +var deprecatedChunks = { + "ambientPrefilteredCube.frag": "ambientEnv.frag", + "ambientPrefilteredCubeLod.frag": "ambientEnv.frag", + "dpAtlasQuad.frag": null, + "genParaboloid.frag": null, + "prefilterCubemap.frag": null, + "reflectionDpAtlas.frag": "reflectionEnv.frag", + "reflectionPrefilteredCube.frag": "reflectionEnv.frag", + "reflectionPrefilteredCubeLod.frag": "reflectionEnv.frag" +}; +Object.keys(deprecatedChunks).forEach((chunkName) => { + Object.defineProperty(shaderChunks, chunkName, { + get: function() { + return null; + }, + set: function() { + } + }); +}); +Object.defineProperties(RenderTarget.prototype, { + _glFrameBuffer: { + get: function() { + return this.impl._glFrameBuffer; + }, + set: function(rgbm) { + } + } +}); +Object.defineProperty(VertexFormat, "defaultInstancingFormat", { + get: function() { + return null; + } +}); +Object.defineProperties(Texture.prototype, { + rgbm: { + get: function() { + return this.type === TEXTURETYPE_RGBM; + }, + set: function(rgbm) { + this.type = rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT; + } + }, + swizzleGGGR: { + get: function() { + return this.type === TEXTURETYPE_SWIZZLEGGGR; + }, + set: function(swizzleGGGR) { + this.type = swizzleGGGR ? TEXTURETYPE_SWIZZLEGGGR : TEXTURETYPE_DEFAULT; + } + }, + _glTexture: { + get: function() { + return this.impl._glTexture; + } + }, + autoMipmap: { + get: function() { + return this._mipmaps; + }, + set: function(value) { + this._mipmaps = value; + } + } +}); +Object.defineProperty(GraphicsDevice.prototype, "webgl2", { + get: function() { + return this.isWebGL2; + } +}); +GraphicsDevice.prototype.getProgramLibrary = function() { + return getProgramLibrary(this); +}; +GraphicsDevice.prototype.setProgramLibrary = function(lib) { + setProgramLibrary(this, lib); +}; +GraphicsDevice.prototype.removeShaderFromCache = function(shader) { + getProgramLibrary(this).removeFromCache(shader); +}; +BlendState.DEFAULT = Object.freeze(new BlendState()); +var _tempBlendState = new BlendState(); +var _tempDepthState = new DepthState(); +GraphicsDevice.prototype.setBlendFunction = function(blendSrc, blendDst) { + const currentBlendState = this.blendState; + _tempBlendState.copy(currentBlendState); + _tempBlendState.setColorBlend(currentBlendState.colorOp, blendSrc, blendDst); + _tempBlendState.setAlphaBlend(currentBlendState.alphaOp, blendSrc, blendDst); + this.setBlendState(_tempBlendState); +}; +GraphicsDevice.prototype.setBlendFunctionSeparate = function(blendSrc, blendDst, blendSrcAlpha, blendDstAlpha) { + const currentBlendState = this.blendState; + _tempBlendState.copy(currentBlendState); + _tempBlendState.setColorBlend(currentBlendState.colorOp, blendSrc, blendDst); + _tempBlendState.setAlphaBlend(currentBlendState.alphaOp, blendSrcAlpha, blendDstAlpha); + this.setBlendState(_tempBlendState); +}; +GraphicsDevice.prototype.setBlendEquation = function(blendEquation) { + const currentBlendState = this.blendState; + _tempBlendState.copy(currentBlendState); + _tempBlendState.setColorBlend(blendEquation, currentBlendState.colorSrcFactor, currentBlendState.colorDstFactor); + _tempBlendState.setAlphaBlend(blendEquation, currentBlendState.alphaSrcFactor, currentBlendState.alphaDstFactor); + this.setBlendState(_tempBlendState); +}; +GraphicsDevice.prototype.setBlendEquationSeparate = function(blendEquation, blendAlphaEquation) { + const currentBlendState = this.blendState; + _tempBlendState.copy(currentBlendState); + _tempBlendState.setColorBlend(blendEquation, currentBlendState.colorSrcFactor, currentBlendState.colorDstFactor); + _tempBlendState.setAlphaBlend(blendAlphaEquation, currentBlendState.alphaSrcFactor, currentBlendState.alphaDstFactor); + this.setBlendState(_tempBlendState); +}; +GraphicsDevice.prototype.setColorWrite = function(redWrite, greenWrite, blueWrite, alphaWrite) { + const currentBlendState = this.blendState; + _tempBlendState.copy(currentBlendState); + _tempBlendState.setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite); + this.setBlendState(_tempBlendState); +}; +GraphicsDevice.prototype.getBlending = function() { + return this.blendState.blend; +}; +GraphicsDevice.prototype.setBlending = function(blending) { + _tempBlendState.copy(this.blendState); + _tempBlendState.blend = blending; + this.setBlendState(_tempBlendState); +}; +GraphicsDevice.prototype.setDepthWrite = function(write) { + _tempDepthState.copy(this.depthState); + _tempDepthState.write = write; + this.setDepthState(_tempDepthState); +}; +GraphicsDevice.prototype.setDepthFunc = function(func) { + _tempDepthState.copy(this.depthState); + _tempDepthState.func = func; + this.setDepthState(_tempDepthState); +}; +GraphicsDevice.prototype.setDepthTest = function(test) { + _tempDepthState.copy(this.depthState); + _tempDepthState.test = test; + this.setDepthState(_tempDepthState); +}; +GraphicsDevice.prototype.getCullMode = function() { + return this.cullMode; +}; +Object.defineProperty(Scene.prototype, "defaultMaterial", { + get: function() { + return getDefaultMaterial(getApplication().graphicsDevice); + } +}); +Object.defineProperty(LayerComposition.prototype, "_meshInstances", { + get: function() { + return null; + } +}); +Object.defineProperty(Scene.prototype, "drawCalls", { + get: function() { + return null; + } +}); +["128", "64", "32", "16", "8", "4"].forEach((size, index) => { + Object.defineProperty(Scene.prototype, `skyboxPrefiltered${size}`, { + get: function() { + return this._prefilteredCubemaps[index]; + }, + set: function(value) { + this._prefilteredCubemaps[index] = value; + this.updateShaders = true; + } + }); +}); +Object.defineProperty(Scene.prototype, "models", { + get: function() { + if (!this._models) { + this._models = []; + } + return this._models; + } +}); +Object.defineProperty(Layer.prototype, "renderTarget", { + set: function(rt) { + this._renderTarget = rt; + this._dirtyComposition = true; + }, + get: function() { + return this._renderTarget; + } +}); +Scene.prototype.addModel = function(model) { + if (this.containsModel(model)) return; + const layer = this.layers.getLayerById(LAYERID_WORLD); + if (!layer) return; + layer.addMeshInstances(model.meshInstances); + this.models.push(model); +}; +Scene.prototype.addShadowCaster = function(model) { + const layer = this.layers.getLayerById(LAYERID_WORLD); + if (!layer) return; + layer.addShadowCasters(model.meshInstances); +}; +Scene.prototype.removeModel = function(model) { + const index = this.models.indexOf(model); + if (index !== -1) { + const layer = this.layers.getLayerById(LAYERID_WORLD); + if (!layer) return; + layer.removeMeshInstances(model.meshInstances); + this.models.splice(index, 1); + } +}; +Scene.prototype.removeShadowCasters = function(model) { + const layer = this.layers.getLayerById(LAYERID_WORLD); + if (!layer) return; + layer.removeShadowCasters(model.meshInstances); +}; +Scene.prototype.containsModel = function(model) { + return this.models.indexOf(model) >= 0; +}; +Scene.prototype.getModels = function(model) { + return this.models; +}; +Object.defineProperty(Batch.prototype, "model", { + get: function() { + return null; + } +}); +ForwardRenderer.prototype.renderComposition = function(comp) { + getApplication().renderComposition(comp); +}; +MeshInstance.prototype.syncAabb = function() { +}; +Morph.prototype.getTarget = function(index) { + return this.targets[index]; +}; +GraphNode.prototype._dirtify = function(local) { + if (local) this._dirtifyLocal(); + else this._dirtifyWorld(); +}; +GraphNode.prototype.addLabel = function(label) { + this._labels[label] = true; +}; +GraphNode.prototype.getLabels = function() { + return Object.keys(this._labels); +}; +GraphNode.prototype.hasLabel = function(label) { + return !!this._labels[label]; +}; +GraphNode.prototype.removeLabel = function(label) { + delete this._labels[label]; +}; +GraphNode.prototype.findByLabel = function(label, results = []) { + if (this.hasLabel(label)) { + results.push(this); + } + for (let i = 0; i < this._children.length; ++i) { + results = this._children[i].findByLabel(label, results); + } + return results; +}; +GraphNode.prototype.getChildren = function() { + return this.children; +}; +GraphNode.prototype.getName = function() { + return this.name; +}; +GraphNode.prototype.getPath = function() { + return this.path; +}; +GraphNode.prototype.getRoot = function() { + return this.root; +}; +GraphNode.prototype.getParent = function() { + return this.parent; +}; +GraphNode.prototype.setName = function(name) { + this.name = name; +}; +Material.prototype.getName = function() { + return this.name; +}; +Material.prototype.setName = function(name) { + this.name = name; +}; +Material.prototype.getShader = function() { + return this.shader; +}; +Material.prototype.setShader = function(shader) { + this.shader = shader; +}; +Object.defineProperty(Material.prototype, "blend", { + set: function(value) { + this.blendState.blend = value; + }, + get: function() { + return this.blendState.blend; + } +}); +Object.defineProperty(Material.prototype, "blendSrc", { + set: function(value) { + const currentBlendState = this.blendState; + _tempBlendState.copy(currentBlendState); + _tempBlendState.setColorBlend(currentBlendState.colorOp, value, currentBlendState.colorDstFactor); + _tempBlendState.setAlphaBlend(currentBlendState.alphaOp, value, currentBlendState.alphaDstFactor); + this.blendState = _tempBlendState; + }, + get: function() { + return this.blendState.colorSrcFactor; + } +}); +Object.defineProperty(Material.prototype, "blendDst", { + set: function(value) { + const currentBlendState = this.blendState; + _tempBlendState.copy(currentBlendState); + _tempBlendState.setColorBlend(currentBlendState.colorOp, currentBlendState.colorSrcFactor, value); + _tempBlendState.setAlphaBlend(currentBlendState.alphaOp, currentBlendState.alphaSrcFactor, value); + this.blendState = _tempBlendState; + }, + get: function() { + return this.blendState.colorDstFactor; + } +}); +Object.defineProperty(StandardMaterial.prototype, "shininess", { + get: function() { + return this.gloss * 100; + }, + set: function(value) { + this.gloss = value * 0.01; + } +}); +function _defineAlias(newName, oldName) { + Object.defineProperty(StandardMaterial.prototype, oldName, { + get: function() { + return this[newName]; + }, + set: function(value) { + this[newName] = value; + } + }); +} +_defineAlias("diffuseTint", "diffuseMapTint"); +_defineAlias("specularTint", "specularMapTint"); +_defineAlias("emissiveTint", "emissiveMapTint"); +_defineAlias("aoVertexColor", "aoMapVertexColor"); +_defineAlias("diffuseVertexColor", "diffuseMapVertexColor"); +_defineAlias("specularVertexColor", "specularMapVertexColor"); +_defineAlias("emissiveVertexColor", "emissiveMapVertexColor"); +_defineAlias("metalnessVertexColor", "metalnessMapVertexColor"); +_defineAlias("glossVertexColor", "glossMapVertexColor"); +_defineAlias("opacityVertexColor", "opacityMapVertexColor"); +_defineAlias("lightVertexColor", "lightMapVertexColor"); +_defineAlias("sheenGloss", "sheenGlossiess"); +_defineAlias("clearCoatGloss", "clearCostGlossiness"); +function _defineOption(name, newName) { + if (name !== "pass") { + Object.defineProperty(StandardMaterialOptions.prototype, name, { + get: function() { + return this.litOptions[newName || name]; + }, + set: function(value) { + this.litOptions[newName || name] = value; + } + }); + } +} +_defineOption("refraction", "useRefraction"); +var tempOptions = new LitShaderOptions(); +var litOptionProperties = Object.getOwnPropertyNames(tempOptions); +for (const litOption in litOptionProperties) { + _defineOption(litOptionProperties[litOption]); +} +Animation.prototype.getDuration = function() { + return this.duration; +}; +Animation.prototype.getName = function() { + return this.name; +}; +Animation.prototype.getNodes = function() { + return this.nodes; +}; +Animation.prototype.setDuration = function(duration) { + this.duration = duration; +}; +Animation.prototype.setName = function(name) { + this.name = name; +}; +Skeleton.prototype.getAnimation = function() { + return this.animation; +}; +Skeleton.prototype.getCurrentTime = function() { + return this.currentTime; +}; +Skeleton.prototype.getLooping = function() { + return this.looping; +}; +Skeleton.prototype.getNumNodes = function() { + return this.numNodes; +}; +Skeleton.prototype.setAnimation = function(animation) { + this.animation = animation; +}; +Skeleton.prototype.setCurrentTime = function(time2) { + this.currentTime = time2; +}; +Skeleton.prototype.setLooping = function(looping) { + this.looping = looping; +}; +SoundManager.prototype.getListener = function() { + return this.listener; +}; +SoundManager.prototype.getVolume = function() { + return this.volume; +}; +SoundManager.prototype.setVolume = function(volume) { + this.volume = volume; +}; +AssetRegistry.prototype.getAssetById = function(id12) { + return this.get(id12); +}; +Object.defineProperty(XrInputSource.prototype, "ray", { + get: function() { + return this._rayLocal; + } +}); +Object.defineProperty(XrInputSource.prototype, "position", { + get: function() { + return this._localPosition; + } +}); +Object.defineProperty(XrInputSource.prototype, "rotation", { + get: function() { + return this._localRotation; + } +}); +Object.defineProperty(ElementInput.prototype, "wheel", { + get: function() { + return this.wheelDelta * -2; + } +}); +Object.defineProperty(MouseEvent.prototype, "wheel", { + get: function() { + return this.wheelDelta * -2; + } +}); +AppBase.prototype.isFullscreen = function() { + return !!document.fullscreenElement; +}; +AppBase.prototype.enableFullscreen = function(element, success, error) { + element = element || this.graphicsDevice.canvas; + const s = function s2() { + success(); + document.removeEventListener("fullscreenchange", s2); + }; + const e = function e2() { + error(); + document.removeEventListener("fullscreenerror", e2); + }; + if (success) { + document.addEventListener("fullscreenchange", s, false); + } + if (error) { + document.addEventListener("fullscreenerror", e, false); + } + if (element.requestFullscreen) { + element.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } else { + error(); + } +}; +AppBase.prototype.disableFullscreen = function(success) { + const s = function s2() { + success(); + document.removeEventListener("fullscreenchange", s2); + }; + if (success) { + document.addEventListener("fullscreenchange", s, false); + } + document.exitFullscreen(); +}; +AppBase.prototype.getSceneUrl = function(name) { + const entry = this.scenes.find(name); + if (entry) { + return entry.url; + } + return null; +}; +AppBase.prototype.loadScene = function(url, callback) { + this.scenes.loadScene(url, callback); +}; +AppBase.prototype.loadSceneHierarchy = function(url, callback) { + this.scenes.loadSceneHierarchy(url, callback); +}; +AppBase.prototype.loadSceneSettings = function(url, callback) { + this.scenes.loadSceneSettings(url, callback); +}; +AppBase.prototype.renderMeshInstance = function(meshInstance, options) { + const layer = options != null && options.layer ? options.layer : this.scene.defaultDrawLayer; + this.scene.immediate.drawMesh(null, null, null, meshInstance, layer); +}; +AppBase.prototype.renderMesh = function(mesh, material, matrix2, options) { + const layer = options != null && options.layer ? options.layer : this.scene.defaultDrawLayer; + this.scene.immediate.drawMesh(material, matrix2, mesh, null, layer); +}; +AppBase.prototype._addLines = function(positions, colors, options) { + const layer = options && options.layer ? options.layer : this.scene.layers.getLayerById(LAYERID_IMMEDIATE); + const depthTest = options && options.depthTest !== void 0 ? options.depthTest : true; + const batch = this.scene.immediate.getBatch(layer, depthTest); + batch.addLines(positions, colors); +}; +AppBase.prototype.renderLine = function(start, end, color) { + let endColor = color; + let options; + const arg3 = arguments[3]; + const arg4 = arguments[4]; + if (arg3 instanceof Color) { + endColor = arg3; + if (typeof arg4 === "number") { + if (arg4 === LINEBATCH_OVERLAY) { + options = { + layer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE), + depthTest: false + }; + } else { + options = { + layer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE), + depthTest: true + }; + } + } else { + options = arg4; + } + } else if (typeof arg3 === "number") { + endColor = color; + if (arg3 === LINEBATCH_OVERLAY) { + options = { + layer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE), + depthTest: false + }; + } else { + options = { + layer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE), + depthTest: true + }; + } + } else if (arg3) { + options = arg3; + } + this._addLines([start, end], [color, endColor], options); +}; +AppBase.prototype.renderLines = function(position2, color, options) { + if (!options) { + options = { + layer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE), + depthTest: true + }; + } else if (typeof options === "number") { + if (options === LINEBATCH_OVERLAY) { + options = { + layer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE), + depthTest: false + }; + } else { + options = { + layer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE), + depthTest: true + }; + } + } + const multiColor = !!color.length; + if (multiColor) { + if (position2.length !== color.length) { + console.error("renderLines: position/color arrays have different lengths"); + return; + } + } + if (position2.length % 2 !== 0) { + console.error("renderLines: array length is not divisible by 2"); + return; + } + this._addLines(position2, color, options); +}; +AppBase.prototype.enableVr = function() { +}; +Object.defineProperty(CameraComponent.prototype, "node", { + get: function() { + return this.entity; + } +}); +Object.defineProperty(LightComponent.prototype, "enable", { + get: function() { + return this.enabled; + }, + set: function(value) { + this.enabled = value; + } +}); +ModelComponent.prototype.setVisible = function(visible) { + this.enabled = visible; +}; +Object.defineProperty(ModelComponent.prototype, "aabb", { + get: function() { + return null; + }, + set: function(type2) { + } +}); +Object.defineProperty(RenderComponent.prototype, "aabb", { + get: function() { + return null; + }, + set: function(type2) { + } +}); +Object.defineProperty(RigidBodyComponent.prototype, "bodyType", { + get: function() { + return this.type; + }, + set: function(type2) { + this.type = type2; + } +}); +RigidBodyComponent.prototype.syncBodyToEntity = function() { + this._updateDynamic(); +}; +RigidBodyComponentSystem.prototype.setGravity = function() { + if (arguments.length === 1) { + this.gravity.copy(arguments[0]); + } else { + this.gravity.set(arguments[0], arguments[1], arguments[2]); + } +}; + +// ../../node_modules/@mml-io/mml-web-playcanvas/build/index.js +var mouseMovePixelsThreshold = 10; +var mouseMoveTimeThresholdMilliseconds = 500; +var PlayCanvasClickTrigger = class _PlayCanvasClickTrigger { + constructor(playcanvasApp, clickTarget, camera) { + this.playcanvasApp = playcanvasApp; + this.clickTarget = clickTarget; + this.camera = camera; + this.eventHandlerCollection = new EventHandlerCollection(); + this.mouseDownTime = null; + this.mouseMoveDelta = 0; + this.eventHandlerCollection.add(clickTarget, "mousedown", this.handleMouseDown.bind(this)); + this.eventHandlerCollection.add(clickTarget, "mouseup", this.handleMouseUp.bind(this)); + this.eventHandlerCollection.add(clickTarget, "mousemove", this.handleMouseMove.bind(this)); + } + static init(playcanvasApp, clickTarget, camera) { + return new _PlayCanvasClickTrigger(playcanvasApp, clickTarget, camera); + } + handleMouseDown() { + this.mouseDownTime = Date.now(); + this.mouseMoveDelta = 0; + } + handleMouseUp(event) { + if (!this.mouseDownTime) { + return; + } + const duration = Date.now() - this.mouseDownTime; + this.mouseDownTime = null; + if (this.mouseMoveDelta < mouseMovePixelsThreshold && duration < mouseMoveTimeThresholdMilliseconds) { + this.handleClick(event); + } + } + handleMouseMove(event) { + if (this.mouseDownTime) { + this.mouseMoveDelta += Math.abs(event.movementX) + Math.abs(event.movementY); + } + } + handleClick(event) { + if (event.detail.element) { + return; + } + let x2 = 0; + let y2 = 0; + if (!document.pointerLockElement) { + x2 = event.offsetX; + y2 = event.offsetY; + } + const cameraEntity = this.camera; + const from = cameraEntity.getPosition(); + const cameraComponent = cameraEntity.camera; + if (!cameraComponent) { + console.warn("No camera component found on the camera entity. Cannot raycast."); + return; + } + const to = cameraComponent.screenToWorld(x2, y2, cameraComponent.farClip); + const rigidbodySystem = this.playcanvasApp.systems.rigidbody; + if (!rigidbodySystem) { + console.warn("No rigidbody system found in the PlayCanvas app. Cannot raycast."); + return; + } + const result = rigidbodySystem.raycastFirst(from, to); + if (result) { + const hitEntity = result.entity; + let mElement; + for (let entity = hitEntity; entity; entity = entity.parent) { + mElement = MElement.getMElementFromObject(entity); + if (mElement) { + break; + } + } + if (mElement && mElement instanceof TransformableElement && mElement.isClickable()) { + const elementRelative = getRelativePositionAndRotationRelativeToObject( + { + position: result.point, + rotation: { + x: 0, + y: 0, + z: 0 + } + }, + mElement + ); + mElement.dispatchEvent( + new CustomEvent("click", { + bubbles: true, + detail: { + position: { + ...elementRelative.position + } + } + }) + ); + return; + } + } + } + dispose() { + this.eventHandlerCollection.clear(); + } +}; +var _PlayCanvasAudio = class _PlayCanvasAudio2 extends AudioGraphics { + constructor(audio2) { + super(audio2); + this.audio = audio2; + this.srcLoadingInstanceManager = new LoadingInstanceManager(`${Audio2.tagName}.src`); + this.latestSrcAudioPromise = null; + this.loadedState = null; + this.delayedStartTimer = null; + this.delayedPauseTimer = null; + const audioEntity = this.audio.getContainer(); + this.soundComponent = audioEntity.addComponent("sound", { + positional: true, + distanceModel: "inverse", + volume: audio2.props.volume + }); + } + getPlayCanvasApp() { + return this.audio.getScene().getGraphicsAdapter().getPlayCanvasApp(); + } + setSrc(src) { + if (this.loadedState !== null) { + this.soundComponent.removeSlot("slot"); + this.loadedState.asset.unload(); + this.loadedState = null; + } + if (!src) { + this.srcLoadingInstanceManager.abortIfLoading(); + return; + } + const contentSrc = this.audio.contentSrcToContentAddress(src); + const srcAudioPromise = this.asyncLoadSourceAsset( + contentSrc, + this.getAudioContext(), + (loaded, total) => { + this.srcLoadingInstanceManager.setProgress(loaded / total); + } + ); + this.srcLoadingInstanceManager.start(this.audio.getLoadingProgressManager(), contentSrc); + this.latestSrcAudioPromise = srcAudioPromise; + srcAudioPromise.then((asset2) => { + if (this.latestSrcAudioPromise !== srcAudioPromise || !this.audio.isConnected) { + return; + } + this.latestSrcAudioPromise = null; + this.loadedState = { + asset: asset2 + }; + const sound = asset2; + this.soundComponent.addSlot("slot", { + volume: 1, + pitch: 1, + asset: sound.id, + loop: true, + overlap: false, + autoPlay: false + }); + const slot = this.soundComponent.slot("slot"); + if (slot) { + slot.stop(); + slot.overlap = false; + this.syncAudioTime(); + } + this.srcLoadingInstanceManager.finish(); + }).catch((err) => { + console.error("Error loading m-audio.src", err); + this.srcLoadingInstanceManager.error(err); + }); + } + setStartTime() { + this.syncAudioTime(); + } + setPauseTime() { + this.syncAudioTime(); + } + setLoopDuration() { + this.syncAudioTime(); + } + syncAudioTime() { + if (this.delayedStartTimer) { + clearTimeout(this.delayedStartTimer); + this.delayedStartTimer = null; + } + if (this.delayedPauseTimer !== null) { + clearTimeout(this.delayedPauseTimer); + this.delayedPauseTimer = null; + } + if (!this.audio.props.src) { + return; + } + const slot = this.soundComponent.slot("slot"); + if (slot) { + if (!this.audio.props.enabled || this.audio.isDisabled()) { + slot.stop(); + return; + } + if (slot.loop !== this.audio.props.loop) { + slot.loop = this.audio.props.loop; + } + const documentTime = this.audio.getDocumentTime(); + if (this.audio.props.pauseTime !== null) { + if (documentTime !== null && this.audio.props.pauseTime > documentTime) { + const delayedPauseTimer = setTimeout(() => { + if (this.delayedPauseTimer === delayedPauseTimer) { + this.delayedPauseTimer = null; + } + this.syncAudioTime(); + }, this.audio.props.pauseTime - documentTime); + this.delayedPauseTimer = delayedPauseTimer; + } else { + slot.pause(); + return; + } + } + let currentTime; + if (documentTime) { + currentTime = (documentTime - this.audio.props.startTime) / 1e3; + } else { + currentTime = (this.audio.props.startTime ? this.audio.props.startTime : 0) / 1e3; + } + const asset2 = slot._assets.get(slot.asset); + const assetDuration = (asset2 == null ? void 0 : asset2.resource.duration) || null; + let targetDuration = assetDuration; + if (this.audio.props.loopDuration !== null && this.audio.props.loop) { + const loopDuration = this.audio.props.loopDuration / 1e3; + if (assetDuration !== null && loopDuration > assetDuration) { + asset2.resource.buffer = extendAudioToDuration( + this.getAudioContext(), + asset2.resource.buffer, + loopDuration + ); + slot.pause(); + slot.duration = loopDuration; + } + targetDuration = loopDuration; + } + if (targetDuration !== null && slot.duration !== targetDuration) { + slot.pause(); + slot.duration = targetDuration; + } + let desiredAudioTime; + if (currentTime < 0) { + slot.pause(); + const delayedStartTimer = setTimeout(() => { + if (this.delayedStartTimer === delayedStartTimer) { + this.delayedStartTimer = null; + } + this.syncAudioTime(); + }, -currentTime * 1e3); + this.delayedStartTimer = delayedStartTimer; + return; + } else if (this.audio.props.loop) { + const slotDuration = slot.duration; + desiredAudioTime = currentTime % slotDuration; + } else { + desiredAudioTime = currentTime; + } + if (desiredAudioTime >= slot.duration) { + slot.pause(); + return; + } else { + } + if (slot.isLoaded && (slot.isPaused || slot.isStopped)) { + slot.play(); + } + const soundInstance = slot.instances[0]; + let delta = desiredAudioTime - soundInstance.currentTime; + if (this.audio.props.loop) { + const loopedDelta = delta - slot.duration; + if (Math.abs(delta) > Math.abs(loopedDelta)) { + delta = loopedDelta; + } + } + if (Math.abs(delta) < 0.1) { + slot.pitch = 1; + } else if (Math.abs(delta) > 0.5) { + slot.pitch = 1; + slot.pause(); + soundInstance.currentTime = desiredAudioTime; + slot.resume(); + return; + } else { + if (delta > 0) { + slot.pitch = 1.02; + } else { + slot.pitch = 0.98; + } + } + } + } + getAudioContext() { + const playcanvasApp = this.getPlayCanvasApp(); + const soundSystem = playcanvasApp.systems.sound; + if (!soundSystem) { + throw new Error("Playcanvas sound system not enabled"); + } + return soundSystem.context; + } + enable() { + } + disable() { + } + setLoop() { + this.syncAudioTime(); + } + setEnabled() { + } + setVolume() { + this.soundComponent.volume = this.audio.props.volume; + } + setConeAngle() { + } + setConeFalloffAngle() { + } + setDebug() { + } + async asyncLoadSourceAsset(url, audioContext, onProgress) { + return new Promise((resolve, reject) => { + if (url.startsWith("data:")) { + const base64 = url.split(",", 2)[1]; + if (!base64) { + reject(new Error("Invalid data URL")); + return; + } + let arrayBuffer; + try { + const binary = atob(base64); + const uint8Array = new Uint8Array(binary.length); + for (let i = 0; i < binary.length; i++) { + uint8Array[i] = binary.charCodeAt(i); + } + arrayBuffer = uint8Array.buffer; + } catch (e) { + console.error("Failed to decode base64 data URL", e); + return; + } + audioContext.decodeAudioData(arrayBuffer).then((audioBuffer) => { + const soundComp = new Sound(audioBuffer); + const asset22 = new Asset( + "dataAudioFile-" + _PlayCanvasAudio2.dataAudioFileCount++, + "audio", + { url }, + base64 + ); + asset22.resource = soundComp; + asset22.loaded = true; + this.getPlayCanvasApp().assets.add(asset22); + resolve(asset22); + }).catch((e) => { + console.error("Failed to decode data URI audio data", e); + }); + return; + } + const asset2 = new Asset(url, "audio", { url }); + this.getPlayCanvasApp().assets.add(asset2); + this.getPlayCanvasApp().assets.load(asset2); + asset2.ready((asset22) => { + resolve(asset22); + }); + asset2.on("error", (err) => { + console.error("Error loading audio asset", err); + reject(err); + }); + }); + } + dispose() { + if (this.delayedPauseTimer) { + clearTimeout(this.delayedPauseTimer); + this.delayedPauseTimer = null; + } + if (this.delayedStartTimer) { + clearTimeout(this.delayedStartTimer); + this.delayedStartTimer = null; + } + const audioEntity = this.audio.getContainer(); + audioEntity.removeComponent("sound"); + } +}; +_PlayCanvasAudio.dataAudioFileCount = 0; +var PlayCanvasAudio = _PlayCanvasAudio; +function extendAudioToDuration(context, buffer, seconds) { + const updatedBuffer = context.createBuffer( + buffer.numberOfChannels, + Math.ceil(seconds * buffer.sampleRate), + buffer.sampleRate + ); + for (let channelNumber = 0; channelNumber < buffer.numberOfChannels; channelNumber++) { + const channelData = buffer.getChannelData(channelNumber); + const updatedChannelData = updatedBuffer.getChannelData(channelNumber); + updatedChannelData.set(channelData, 0); + } + return updatedBuffer; +} +var PlayCanvasChatProbe = class extends ChatProbeGraphics { + constructor(chatProbe) { + super(chatProbe); + this.chatProbe = chatProbe; + this.entity = null; + this.debugMaterial = null; + this.updateDebugVisualisation(); + } + disable() { + } + enable() { + } + setRange() { + this.updateDebugVisualisation(); + } + setDebug() { + this.updateDebugVisualisation(); + } + clearDebugVisualisation() { + if (this.entity) { + this.entity.destroy(); + this.entity = null; + } + if (this.debugMaterial) { + this.debugMaterial.destroy(); + this.debugMaterial = null; + } + } + updateDebugVisualisation() { + var _a; + if (!this.chatProbe.props.debug) { + this.clearDebugVisualisation(); + } else { + if (this.chatProbe.isConnected && !this.entity) { + this.entity = new Entity( + "chat-probe-internal", + this.chatProbe.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + if (!this.debugMaterial) { + this.debugMaterial = new BasicMaterial(); + this.debugMaterial.color = new Color(1, 1, 0); + } + this.entity.addComponent("model", { + type: "sphere", + material: this.debugMaterial + }); + (_a = this.entity.model) == null ? void 0 : _a.model.meshInstances.forEach((mi) => { + mi.renderStyle = RENDERSTYLE_WIREFRAME; + mi.castShadow = false; + }); + this.chatProbe.getContainer().addChild(this.entity); + } + if (this.entity) { + this.entity.setLocalScale( + this.chatProbe.props.range * 2, + this.chatProbe.props.range * 2, + this.chatProbe.props.range * 2 + ); + } + } + } + dispose() { + this.clearDebugVisualisation(); + } +}; +var PlayCanvasCube = class extends CubeGraphics { + constructor(cube) { + super(cube); + this.cube = cube; + this.material = new StandardMaterial(); + this.entity = new Entity( + "cube-internal", + cube.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + this.entity[MELEMENT_PROPERTY_NAME] = cube; + this.renderComponent = this.entity.addComponent("render", { + type: "box", + material: this.material + }); + this.entity.addComponent("collision", { + type: "box", + halfExtents: new Vec3(0.5, 0.5, 0.5) + }); + cube.getContainer().addChild(this.entity); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.entity; + } + setColor(color) { + this.material.diffuse.set(color.r, color.g, color.b); + this.material.metalness = 0; + this.material.useMetalness = true; + this.material.update(); + } + updateSize(mCubeProps) { + this.entity.setLocalScale(mCubeProps.width, mCubeProps.height, mCubeProps.depth); + if (this.entity.collision) { + this.entity.collision.halfExtents.set( + mCubeProps.width / 2, + mCubeProps.height / 2, + mCubeProps.depth / 2 + ); + this.entity.collision.onSetHalfExtents(); + } + } + setWidth(width, mCubeProps) { + this.updateSize(mCubeProps); + } + setHeight(height, mCubeProps) { + this.updateSize(mCubeProps); + } + setDepth(depth, mCubeProps) { + this.updateSize(mCubeProps); + } + setCastShadows(castShadows) { + this.renderComponent.castShadows = castShadows; + } + setOpacity(opacity) { + if (opacity === 1) { + this.material.blendType = BLEND_NONE; + } else { + this.material.blendType = BLEND_NORMAL; + } + this.material.opacity = opacity; + this.material.update(); + } + dispose() { + this.entity.destroy(); + } +}; +var PlayCanvasCylinder = class extends CylinderGraphics { + constructor(cylinder) { + super(cylinder); + this.cylinder = cylinder; + this.material = new StandardMaterial(); + this.entity = new Entity( + "cylinder-internal", + cylinder.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + this.entity[MELEMENT_PROPERTY_NAME] = cylinder; + this.renderComponent = this.entity.addComponent("render", { + type: "cylinder", + material: this.material + }); + const collisionComponent = this.entity.addComponent("collision", { + type: "cylinder" + }); + collisionComponent.radius = 0.5; + collisionComponent.height = 1; + cylinder.getContainer().addChild(this.entity); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.entity; + } + setColor(color) { + this.material.diffuse.set(color.r, color.g, color.b); + this.material.metalness = 0; + this.material.useMetalness = true; + this.material.update(); + } + updateSize(mCylinderProps) { + this.entity.setLocalScale( + mCylinderProps.radius * 2, + mCylinderProps.height, + mCylinderProps.radius * 2 + ); + if (this.entity.collision) { + this.entity.collision.radius = mCylinderProps.radius; + this.entity.collision.height = mCylinderProps.height; + this.entity.collision.onSetHalfExtents(); + } + } + setRadius(radius, mCylinderProps) { + this.updateSize(mCylinderProps); + } + setHeight(height, mCylinderProps) { + this.updateSize(mCylinderProps); + } + setCastShadows(castShadows) { + this.renderComponent.castShadows = castShadows; + } + setOpacity(opacity) { + if (opacity === 1) { + this.material.blendType = BLEND_NONE; + } else { + this.material.blendType = BLEND_NORMAL; + } + this.material.opacity = opacity; + this.material.update(); + } + dispose() { + this.entity.destroy(); + } +}; +function createPlayCanvasDebugBoundingBox(graphicsAdapter, material) { + var _a; + const entity = new Entity("bounding-box", graphicsAdapter.getPlayCanvasApp()); + entity.addComponent("model", { + type: "box", + material + }); + (_a = entity.model) == null ? void 0 : _a.model.meshInstances.forEach((mi) => { + mi.renderStyle = RENDERSTYLE_WIREFRAME; + mi.castShadow = false; + }); + return entity; +} +var PlayCanvasDebugHelper = class extends DebugHelperGraphics { + constructor(debugHelper) { + super(debugHelper); + this.debugHelper = debugHelper; + this.debugAxes = null; + const graphicsAdapter = this.debugHelper.element.getScene().getGraphicsAdapter(); + const playcanvasApp = graphicsAdapter.getPlayCanvasApp(); + const playcanvasEntity = this.debugHelper.getContainer(); + this.debugAxes = new Entity("axes", playcanvasApp); + playcanvasEntity.addChild(this.debugAxes); + const xMaterial = new BasicMaterial(); + xMaterial.color = new Color(1, 0, 0); + const xAxis = createPlayCanvasDebugBoundingBox(graphicsAdapter, xMaterial); + xAxis.setLocalScale(0.5, 0, 0); + xAxis.setLocalPosition(0.25, 0, 0); + this.debugAxes.addChild(xAxis); + const yMaterial = new BasicMaterial(); + yMaterial.color = new Color(0, 1, 0); + const yAxis = createPlayCanvasDebugBoundingBox(graphicsAdapter, yMaterial); + yAxis.setLocalScale(0, 0.5, 0); + yAxis.setLocalPosition(0, 0.25, 0); + this.debugAxes.addChild(yAxis); + const zMaterial = new BasicMaterial(); + zMaterial.color = new Color(0, 0, 1); + const zAxis = createPlayCanvasDebugBoundingBox(graphicsAdapter, zMaterial); + zAxis.setLocalScale(0, 0, 0.5); + zAxis.setLocalPosition(0, 0, 0.25); + this.debugAxes.addChild(zAxis); + } + dispose() { + if (this.debugAxes) { + this.debugHelper.getContainer().removeChild(this.debugAxes); + this.debugAxes.destroy(); + } + this.debugAxes = null; + } +}; +function setEntityToBoundingBox(debugBoxConstraintMesh, minX, maxX, minY, maxY, minZ, maxZ) { + debugBoxConstraintMesh.setLocalPosition((maxX + minX) / 2, (maxY + minY) / 2, (maxZ + minZ) / 2); + debugBoxConstraintMesh.setLocalScale(-(maxX - minX), maxY - minY, maxZ - minZ); +} +var PlayCanvasFrame = class extends FrameGraphics { + constructor(frame) { + super(frame); + this.frame = frame; + this.debugMaterial = null; + this.loadRangeMaterial = null; + this.unloadRangeMaterial = null; + this.debugMeshes = null; + this.updateDebugVisualisation(); + } + setSrc() { + } + setDebug() { + this.updateDebugVisualisation(); + } + setLoadRange() { + this.updateDebugVisualisation(); + } + setUnloadRange() { + this.updateDebugVisualisation(); + } + setMinX() { + this.updateDebugVisualisation(); + } + setMaxX() { + this.updateDebugVisualisation(); + } + setMinY() { + this.updateDebugVisualisation(); + } + setMaxY() { + this.updateDebugVisualisation(); + } + setMinZ() { + this.updateDebugVisualisation(); + } + setMaxZ() { + this.updateDebugVisualisation(); + } + disable() { + } + enable() { + } + dispose() { + this.clearDebugVisualisation(); + } + clearDebugVisualisation() { + if (this.debugMeshes) { + this.debugMeshes.debugBoxConstraintMesh.destroy(); + this.debugMeshes.debugBoxLoadRangeMesh.destroy(); + this.debugMeshes.debugBoxUnloadRangeMesh.destroy(); + this.debugMeshes = null; + } + if (this.debugMaterial) { + this.debugMaterial.destroy(); + this.debugMaterial = null; + } + if (this.loadRangeMaterial) { + this.loadRangeMaterial.destroy(); + this.loadRangeMaterial = null; + } + if (this.unloadRangeMaterial) { + this.unloadRangeMaterial.destroy(); + this.unloadRangeMaterial = null; + } + } + updateDebugVisualisation() { + if (!this.frame.props.debug) { + this.clearDebugVisualisation(); + } else { + if (!this.frame.isConnected) { + return; + } + if (!this.debugMeshes) { + if (!this.debugMaterial) { + this.debugMaterial = new BasicMaterial(); + this.debugMaterial.color = new Color(1, 0, 0); + } + if (!this.loadRangeMaterial) { + this.loadRangeMaterial = new BasicMaterial(); + this.loadRangeMaterial.color = new Color(0, 1, 0); + } + if (!this.unloadRangeMaterial) { + this.unloadRangeMaterial = new BasicMaterial(); + this.unloadRangeMaterial.color = new Color(0, 0, 1); + } + const graphicsAdapter = this.frame.getScene().getGraphicsAdapter(); + this.debugMeshes = { + debugBoxConstraintMesh: createPlayCanvasDebugBoundingBox( + graphicsAdapter, + this.debugMaterial + ), + debugBoxLoadRangeMesh: createPlayCanvasDebugBoundingBox( + graphicsAdapter, + this.loadRangeMaterial + ), + debugBoxUnloadRangeMesh: createPlayCanvasDebugBoundingBox( + graphicsAdapter, + this.unloadRangeMaterial + ) + }; + this.frame.getContainer().addChild(this.debugMeshes.debugBoxConstraintMesh); + this.frame.getContainer().addChild(this.debugMeshes.debugBoxLoadRangeMesh); + this.frame.getContainer().addChild(this.debugMeshes.debugBoxUnloadRangeMesh); + } + let boxBounds = this.frame.getDefinedBoxBounds(); + if (!boxBounds) { + boxBounds = [0, 0, 0, 0, 0, 0]; + } + const [minX, maxX, minY, maxY, minZ, maxZ] = boxBounds; + this.debugMeshes.debugBoxConstraintMesh.enabled = true; + setEntityToBoundingBox( + this.debugMeshes.debugBoxConstraintMesh, + minX, + maxX, + minY, + maxY, + minZ, + maxZ + ); + if (this.frame.props.loadRange === null) { + this.debugMeshes.debugBoxLoadRangeMesh.enabled = false; + this.debugMeshes.debugBoxUnloadRangeMesh.enabled = false; + } else { + this.debugMeshes.debugBoxLoadRangeMesh.enabled = true; + this.debugMeshes.debugBoxUnloadRangeMesh.enabled = true; + setEntityToBoundingBox( + this.debugMeshes.debugBoxLoadRangeMesh, + minX - this.frame.props.loadRange, + maxX + this.frame.props.loadRange, + minY - this.frame.props.loadRange, + maxY + this.frame.props.loadRange, + minZ - this.frame.props.loadRange, + maxZ + this.frame.props.loadRange + ); + setEntityToBoundingBox( + this.debugMeshes.debugBoxUnloadRangeMesh, + minX - this.frame.props.loadRange - this.frame.props.unloadRange, + maxX + this.frame.props.loadRange + this.frame.props.unloadRange, + minY - this.frame.props.loadRange - this.frame.props.unloadRange, + maxY + this.frame.props.loadRange + this.frame.props.unloadRange, + minZ - this.frame.props.loadRange - this.frame.props.unloadRange, + maxZ + this.frame.props.loadRange + this.frame.props.unloadRange + ); + } + } + } +}; +function createPlaneMesh(app2) { + const vertices = [ + // First triangle + // bottom left + -0.5, + -0.5, + 0, + // bottom right + 0.5, + -0.5, + 0, + // top left + -0.5, + 0.5, + 0, + // Second triangle + // bottom right + 0.5, + -0.5, + 0, + // top right + 0.5, + 0.5, + 0, + // top left + -0.5, + 0.5, + 0, + // First triangle + // top left + -0.5, + 0.5, + 0, + // bottom right + 0.5, + -0.5, + 0, + // bottom left + -0.5, + -0.5, + 0, + // Second triangle + // top left + -0.5, + 0.5, + 0, + // top right + 0.5, + 0.5, + 0, + // bottom right + 0.5, + -0.5, + 0 + ]; + const uvs = [ + // First triangle + // bottom left + 0, + 1, + // bottom right + 1, + 1, + // top left + 0, + 0, + // Second triangle + // bottom right + 1, + 1, + // top right + 1, + 0, + // top left + 0, + 0, + // First triangle + // top left + 0, + 0, + // bottom right + 1, + 1, + // bottom left + 0, + 1, + // Second triangle + // top left + 0, + 0, + // top right + 1, + 0, + // bottom right + 1, + 1 + ]; + const normals = Array.from({ length: vertices.length / 3 }).flatMap((value, index) => { + return index < 6 ? [0, 0, 1] : [0, 0, -1]; + }); + const mesh = new Mesh(app2.graphicsDevice); + mesh.setPositions(vertices); + mesh.setUvs(0, uvs); + mesh.setNormals(normals); + mesh.update(); + return mesh; +} +function createPlaneModel(app2, material) { + const mesh = createPlaneMesh(app2); + const rootNode = new GraphNode(); + const meshInstance = new MeshInstance(mesh, material, rootNode); + meshInstance.renderStyle = RENDERSTYLE_SOLID; + const model = new Model2(); + model.graph = rootNode; + model.meshInstances.push(meshInstance); + return { model, meshInstance }; +} +var PlayCanvasImage = class extends ImageGraphics { + constructor(image, updateMeshCallback) { + super(image, updateMeshCallback); + this.image = image; + this.updateMeshCallback = updateMeshCallback; + this.srcLoadingInstanceManager = new LoadingInstanceManager(`${Image2.tagName}.src`); + this.latestSrcImagePromise = null; + this.material = new StandardMaterial(); + this.loadedState = null; + this.entity = image.getContainer(); + this.internalEntity = new Entity( + "image-internal", + image.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + this.internalEntity[MELEMENT_PROPERTY_NAME] = image; + const { model } = createPlaneModel(this.getPlayCanvasApp(), this.material); + this.modelComponent = this.internalEntity.addComponent( + "model", + {} + ); + this.modelComponent.model = model; + this.entity.addComponent("collision", { + type: "box", + halfExtents: new Vec3(0.5, 0, 0.5) + }); + this.entity.addChild(this.internalEntity); + } + disable() { + } + enable() { + } + getWidthAndHeight() { + return { + width: this.internalEntity.getLocalScale().x, + height: this.internalEntity.getLocalScale().y + }; + } + getCollisionElement() { + return this.entity; + } + getPlayCanvasApp() { + return this.image.getScene().getGraphicsAdapter().getPlayCanvasApp(); + } + updateWidthAndHeight() { + var _a; + const loadedImage = (_a = this.loadedState) == null ? void 0 : _a.asset.resource; + const { width, height } = calculateContentSize({ + content: loadedImage ? { width: loadedImage.width, height: loadedImage.height } : void 0, + width: this.image.props.width, + height: this.image.props.height + }); + this.internalEntity.setLocalScale(width, height, 1); + if (this.entity.collision) { + this.entity.collision.halfExtents.set(width / 2, height / 2, 0); + this.entity.collision.onSetHalfExtents(); + } + this.updateMeshCallback(); + } + setWidth() { + this.updateWidthAndHeight(); + } + setHeight() { + this.updateWidthAndHeight(); + } + clearImage() { + if (this.material) { + this.material.diffuseMap = null; + this.material.opacityMap = null; + this.material.emissiveMap = null; + this.material.update(); + } + this.updateWidthAndHeight(); + } + setSrc(src) { + if (this.loadedState !== null) { + this.loadedState.asset.unload(); + this.loadedState = null; + } + if (!src) { + this.clearImage(); + this.srcLoadingInstanceManager.abortIfLoading(); + return; + } + const contentSrc = this.image.contentSrcToContentAddress(src); + const srcImagePromise = this.asyncLoadSourceAsset(contentSrc, (loaded, total) => { + this.srcLoadingInstanceManager.setProgress(loaded / total); + }); + this.srcLoadingInstanceManager.start(this.image.getLoadingProgressManager(), contentSrc); + this.latestSrcImagePromise = srcImagePromise; + srcImagePromise.then((asset2) => { + if (this.latestSrcImagePromise !== srcImagePromise || !this.image.isConnected) { + return; + } + this.latestSrcImagePromise = null; + this.loadedState = { + asset: asset2 + }; + const texture = asset2.resource; + texture.premultiplyAlpha = true; + this.material.diffuseMap = texture; + this.material.blendType = BLEND_NORMAL; + this.material.opacityMap = texture; + this.material.update(); + this.updateWidthAndHeight(); + this.updateMaterialEmissiveIntensity(); + this.srcLoadingInstanceManager.finish(); + }).catch((err) => { + console.error("Error loading m-image.src", err); + this.clearImage(); + this.srcLoadingInstanceManager.error(err); + }); + } + setCastShadows(castShadows) { + this.modelComponent.castShadows = castShadows; + } + setOpacity(opacity) { + if (opacity === 1) { + this.material.blendType = BLEND_NONE; + } else { + this.material.blendType = BLEND_NORMAL; + } + this.material.opacity = opacity; + this.material.update(); + } + setEmissive() { + this.updateMaterialEmissiveIntensity(); + } + updateMaterialEmissiveIntensity() { + if (this.image.props.emissive) { + this.material.emissiveMap = this.material.diffuseMap; + this.material.emissiveIntensity = this.image.props.emissive; + } else { + this.material.emissiveMap = null; + this.material.emissiveIntensity = 0; + } + this.material.update(); + } + async asyncLoadSourceAsset(url, onProgress) { + return new Promise((resolve, reject) => { + const asset2 = new Asset(url, "texture", { url }); + this.getPlayCanvasApp().assets.add(asset2); + this.getPlayCanvasApp().assets.load(asset2); + asset2.ready((asset22) => { + resolve(asset22); + }); + asset2.on("error", (err) => { + reject(err); + }); + }); + } + dispose() { + if (this.loadedState) { + this.loadedState.asset.unload(); + this.loadedState = null; + } + this.internalEntity.destroy(); + } +}; +var PlayCanvasInteraction = class extends InteractionGraphics { + constructor(positionProbe) { + super(positionProbe); + this.positionProbe = positionProbe; + this.entity = null; + this.debugMaterial = null; + this.updateDebugVisualisation(); + } + disable() { + } + enable() { + } + setRange() { + this.updateDebugVisualisation(); + } + setInFocus() { + } + setLineOfSight() { + } + setPriority() { + } + setPrompt() { + } + setDebug() { + this.updateDebugVisualisation(); + } + clearDebugVisualisation() { + if (this.entity) { + this.entity.destroy(); + this.entity = null; + } + if (this.debugMaterial) { + this.debugMaterial.destroy(); + this.debugMaterial = null; + } + } + updateDebugVisualisation() { + var _a; + if (!this.positionProbe.props.debug) { + this.clearDebugVisualisation(); + } else { + if (this.positionProbe.isConnected && !this.entity) { + this.entity = new Entity( + "interaction-internal", + this.positionProbe.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + if (!this.debugMaterial) { + this.debugMaterial = new BasicMaterial(); + this.debugMaterial.color = new Color(0, 1, 0); + } + this.entity.addComponent("model", { + type: "sphere", + material: this.debugMaterial + }); + (_a = this.entity.model) == null ? void 0 : _a.model.meshInstances.forEach((mi) => { + mi.renderStyle = RENDERSTYLE_WIREFRAME; + mi.castShadow = false; + }); + this.positionProbe.getContainer().addChild(this.entity); + } + if (this.entity) { + this.entity.setLocalScale( + this.positionProbe.props.range * 2, + this.positionProbe.props.range * 2, + this.positionProbe.props.range * 2 + ); + } + } + } + dispose() { + this.clearDebugVisualisation(); + } +}; +var PlayCanvasLabel = class extends LabelGraphics { + constructor(label) { + super(label); + this.label = label; + this.material = new StandardMaterial(); + this.canvasText = new CanvasText(); + this.entity = new Entity( + "label-internal", + label.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + this.entity[MELEMENT_PROPERTY_NAME] = label; + this.renderComponent = this.entity.addComponent("render", { + type: "plane", + material: this.material, + castShadows: this.label.props.castShadows + }); + this.entity.rotate(90, 0, 0); + this.entity.addComponent("collision", { + type: "box", + halfExtents: new Vec3(0.5, 0, 0.5) + }); + label.getContainer().addChild(this.entity); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.entity; + } + updateSize(mLabelProps) { + this.entity.setLocalScale(mLabelProps.width, 1, mLabelProps.height); + if (this.entity.collision) { + this.entity.collision.halfExtents.set(mLabelProps.width / 2, 0, mLabelProps.height / 2); + this.entity.collision.onSetHalfExtents(); + } + } + setWidth(width, mLabelProps) { + this.updateSize(mLabelProps); + this.redrawText(); + } + setHeight(height, mLabelProps) { + this.updateSize(mLabelProps); + this.redrawText(); + } + setContent() { + this.redrawText(); + } + setAlignment() { + this.redrawText(); + } + setFontSize() { + this.redrawText(); + } + setPadding() { + this.redrawText(); + } + setColor() { + this.redrawText(); + } + setFontColor() { + this.redrawText(); + } + setEmissive() { + this.updateMaterialEmissiveIntensity(); + } + updateMaterialEmissiveIntensity() { + if (this.label.props.emissive) { + this.material.emissiveMap = this.material.diffuseMap; + this.material.emissiveIntensity = this.label.props.emissive; + } else { + this.material.emissiveMap = null; + this.material.emissiveIntensity = 0; + } + this.material.update(); + } + redrawText() { + if (!this.material) { + return; + } + const canvas = this.canvasText.renderText(this.label.props.content, { + bold: true, + fontSize: this.label.props.fontSize * 2, + paddingPx: this.label.props.padding, + textColorRGB255A1: { + r: this.label.props.fontColor.r * 255, + g: this.label.props.fontColor.g * 255, + b: this.label.props.fontColor.b * 255, + a: this.label.props.fontColor.a ?? 1 + }, + backgroundColorRGB255A1: { + r: this.label.props.color.r * 255, + g: this.label.props.color.g * 255, + b: this.label.props.color.b * 255, + a: this.label.props.color.a ?? 1 + }, + dimensions: { + width: this.label.props.width * 200, + height: this.label.props.height * 200 + }, + alignment: this.label.props.alignment + }); + const texture = new Texture( + this.label.getScene().getGraphicsAdapter().getPlayCanvasApp().graphicsDevice, + { + width: canvas.width, + height: canvas.height + } + ); + texture.setSource(canvas); + this.material.diffuseMap = texture; + if ((this.label.props.color.a ?? 1) < 1) { + this.material.blendType = BLEND_NORMAL; + this.material.opacityMap = texture; + } else { + this.material.blendType = BLEND_NONE; + this.material.opacityMap = null; + } + this.material.update(); + this.updateMaterialEmissiveIntensity(); + texture.destroy(); + } + setCastShadows(castShadows) { + this.renderComponent.castShadows = castShadows; + } + dispose() { + this.entity.destroy(); + } +}; +var lightIntensityFactor = 1 / 100; +var lightLuminanceFactor = 4e3; +var PlayCanvasLight = class extends LightGraphics { + constructor(light) { + super(light); + this.light = light; + this.createLight(); + } + createLight() { + const lightEntity = this.light.getContainer(); + if (this.lightComponent) { + lightEntity.removeComponent("light"); + } + const { r, g, b } = this.light.props.color; + if (this.light.props.type === "spotlight") { + this.lightComponent = lightEntity.addComponent("light", { + type: "spot", + luminance: this.light.props.intensity * lightLuminanceFactor, + intensity: this.light.props.intensity * lightIntensityFactor, + castShadows: this.light.props.castShadows, + color: new Color(r, g, b), + shadowBias: 1e-3, + normalOffsetBias: 1e-3, + shape: LIGHTSHAPE_DISK, + innerConeAngle: this.light.props.angleDeg, + outerConeAngle: this.light.props.angleDeg, + range: this.light.props.distance ?? 100, + falloffMode: LIGHTFALLOFF_INVERSESQUARED, + enabled: this.light.props.enabled + }); + } else { + this.lightComponent = lightEntity.addComponent("light", { + type: "point", + luminance: this.light.props.intensity * lightLuminanceFactor, + intensity: this.light.props.intensity * lightIntensityFactor, + castShadows: this.light.props.castShadows, + color: new Color(r, g, b), + shadowBias: 1e-3, + normalOffsetBias: 1e-3, + range: this.light.props.distance ?? 100, + falloffMode: LIGHTFALLOFF_INVERSESQUARED, + enabled: this.light.props.enabled + }); + } + } + disable() { + } + enable() { + } + setEnabled(enabled) { + this.lightComponent.enabled = enabled; + } + setCastShadows(castShadows) { + this.lightComponent.castShadows = castShadows; + this.lightComponent.refreshProperties(); + } + setAngle(angle) { + if (this.lightComponent.type !== "spot") { + return; + } + this.lightComponent.innerConeAngle = angle; + this.lightComponent.outerConeAngle = angle; + this.lightComponent.refreshProperties(); + } + setIntensity(intensity) { + this.lightComponent.luminance = intensity * lightLuminanceFactor; + this.lightComponent.intensity = intensity * lightIntensityFactor; + this.lightComponent.refreshProperties(); + } + setDistance(distance) { + this.lightComponent.range = distance ?? 100; + this.lightComponent.refreshProperties(); + } + setType() { + this.createLight(); + } + setDebug() { + } + setColor(color) { + this.lightComponent.color.set(color.r, color.g, color.b); + this.lightComponent.refreshProperties(); + } + dispose() { + const lightEntity = this.light.getContainer(); + lightEntity.removeComponent("light"); + } +}; +var PlayCanvasLink = class extends LinkGraphics { + constructor(link) { + super(link); + this.link = link; + } + disable() { + } + enable() { + } + setHref() { + } + setTarget() { + } + dispose() { + } +}; +var PlayCanvasMElement = class extends MElementGraphics { + constructor(element) { + super(element); + this.element = element; + this.currentParentContainer = null; + this.container = new Entity( + element.constructor.name, + element.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + this.container[MELEMENT_PROPERTY_NAME] = element; + if (this.currentParentContainer !== null) { + throw new Error("Already connected to a parent"); + } + const mElementParent = this.element.getMElementParent(); + if (mElementParent) { + this.currentParentContainer = mElementParent.getContainer(); + this.currentParentContainer.addChild(this.container); + return; + } + const scene2 = this.element.getScene(); + this.currentParentContainer = scene2.getRootContainer(); + this.currentParentContainer.addChild(this.container); + } + getContainer() { + return this.container; + } + dispose() { + if (this.currentParentContainer === null) { + throw new Error("Was not connected to a parent"); + } + this.currentParentContainer.removeChild(this.container); + this.currentParentContainer = null; + this.container.destroy(); + } +}; +var PlayCanvasModel = class extends ModelGraphics { + constructor(model, updateMeshCallback) { + super(model, updateMeshCallback); + this.model = model; + this.updateMeshCallback = updateMeshCallback; + this.srcLoadingInstanceManager = new LoadingInstanceManager(`${Model.tagName}.src`); + this.animLoadingInstanceManager = new LoadingInstanceManager(`${Model.tagName}.anim`); + this.latestSrcModelPromise = null; + this.debugMaterial = null; + this.latestAnimPromise = null; + this.documentTimeTickListener = null; + this.attachments = /* @__PURE__ */ new Map(); + this.registeredParentAttachment = null; + this.socketChildrenByBone = /* @__PURE__ */ new Map(); + this.debugBoundingBox = null; + this.loadedState = null; + this.animState = null; + } + getPlayCanvasApp() { + return this.model.getScene().getGraphicsAdapter().getPlayCanvasApp(); + } + hasLoadedModel() { + var _a; + return !!((_a = this.loadedState) == null ? void 0 : _a.renderEntity); + } + hasLoadedAnimation() { + var _a; + return !!((_a = this.animState) == null ? void 0 : _a.animAsset); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.model.getContainer(); + } + setDebug() { + this.updateDebugVisualisation(); + } + setCastShadows() { + } + registerAttachment(attachment) { + let animState = null; + if (this.animState) { + const attachmentLoadedState = attachment.modelGraphics.loadedState; + if (!attachmentLoadedState) { + throw new Error("Attachment must be loaded before registering"); + } + const playcanvasEntity = attachmentLoadedState.renderEntity; + const animComponent = playcanvasEntity.addComponent("anim", {}); + animComponent.assignAnimation("SingleAnimation", this.animState.animAsset.resource); + animState = { + animComponent + }; + } + this.attachments.set(attachment, animState); + } + unregisterAttachment(attachment) { + const animState = this.attachments.get(attachment); + if (animState) { + animState.animComponent.reset(); + animState.animComponent.unbind(); + animState.animComponent.entity.removeComponent("anim"); + } + this.attachments.delete(attachment); + } + getBoundingBox() { + if (this.loadedState) { + return { + centerOffset: this.loadedState.boundingBox.center, + size: this.loadedState.boundingBox.halfExtents + }; + } + return null; + } + setAnim(anim2) { + if (this.animState) { + if (this.animState.animComponent) { + this.animState.animComponent.reset(); + this.animState.animComponent.unbind(); + this.animState.animComponent.entity.removeComponent("anim"); + } + this.animState = null; + for (const [attachment, animState] of this.attachments) { + if (animState) { + animState.animComponent.reset(); + animState.animComponent.unbind(); + animState.animComponent.entity.removeComponent("anim"); + } + this.attachments.set(attachment, null); + } + } + if (!anim2) { + this.latestAnimPromise = null; + if (this.loadedState && !this.registeredParentAttachment) { + const parent = this.model.parentElement; + if (parent instanceof Model) { + this.registeredParentAttachment = parent; + parent.modelGraphics.registerAttachment(this.model); + } + } + return; + } + const animSrc = this.model.contentSrcToContentAddress(anim2); + const animPromise = this.asyncLoadAnimAsset(animSrc, (loaded, total) => { + this.animLoadingInstanceManager.setProgress(loaded / total); + }); + this.animLoadingInstanceManager.start(this.model.getLoadingProgressManager(), anim2); + this.latestAnimPromise = animPromise; + animPromise.then((asset2) => { + if (this.latestAnimPromise !== animPromise || !this.model.isConnected) { + return; + } + this.latestAnimPromise = null; + this.animState = { + animAsset: asset2, + animComponent: null + }; + this.connectAnimationToModel(); + for (const [attachment] of this.attachments) { + const playcanvasEntity = attachment.getContainer(); + const animComponent = playcanvasEntity.addComponent( + "anim", + {} + ); + animComponent.assignAnimation("SingleAnimation", this.animState.animAsset.resource); + const animState = { + animComponent + }; + this.attachments.set(attachment, animState); + } + if (!this.documentTimeTickListener) { + this.documentTimeTickListener = this.model.addDocumentTimeTickListener( + (documentTime) => { + this.updateAnimation(documentTime); + } + ); + } + this.animLoadingInstanceManager.finish(); + }).catch((err) => { + console.error("Error loading m-model.anim", err); + this.animLoadingInstanceManager.error(err); + }); + } + connectAnimationToModel() { + if (this.animState && this.loadedState) { + const playcanvasEntity = this.loadedState.renderEntity; + const animComponent = playcanvasEntity.addComponent("anim", {}); + animComponent.assignAnimation("SingleAnimation", this.animState.animAsset.resource); + this.animState.animComponent = animComponent; + } + } + registerSocketChild(child, socketName) { + let children = this.socketChildrenByBone.get(socketName); + if (!children) { + children = /* @__PURE__ */ new Set(); + this.socketChildrenByBone.set(socketName, children); + } + children.add(child); + if (this.loadedState) { + const bone = this.loadedState.bones.get(socketName); + if (bone) { + bone.addChild(child.getContainer()); + } else { + this.model.getContainer().addChild(child.getContainer()); + } + } + } + unregisterSocketChild(child, socketName, addToRoot = true) { + const socketChildren = this.socketChildrenByBone.get(socketName); + if (socketChildren) { + socketChildren.delete(child); + if (addToRoot) { + this.model.getContainer().addChild(child.getContainer()); + } + if (socketChildren.size === 0) { + this.socketChildrenByBone.delete(socketName); + } + } + } + setAnimEnabled() { + } + setAnimLoop() { + } + setAnimStartTime() { + } + setAnimPauseTime() { + } + transformed() { + var _a; + const scale2 = (_a = this.loadedState) == null ? void 0 : _a.renderEntity.getWorldTransform().getScale(); + if (scale2 && this.loadedState) { + if (Math.abs(this.loadedState.collisionWorldScale.x - scale2.x) > 1e-3 || Math.abs(this.loadedState.collisionWorldScale.y - scale2.y) > 1e-3 || Math.abs(this.loadedState.collisionWorldScale.z - scale2.z) > 1e-3) { + this.loadedState.collisionWorldScale = { x: scale2.x, y: scale2.y, z: scale2.z }; + const collisionComponent = this.loadedState.renderEntity.collision; + if (collisionComponent) { + for (const mesh of collisionComponent.data.render.meshes) { + const triMesh = collisionComponent.system._triMeshCache[mesh.id]; + if (triMesh) { + window.Ammo.destroy(triMesh); + delete collisionComponent.system._triMeshCache[mesh.id]; + } + } + collisionComponent.onSetModel(); + } + } + } + } + setSrc(src) { + const playcanvasEntity = this.model.getContainer(); + if (this.loadedState !== null) { + this.loadedState.renderEntity.remove(); + this.loadedState = null; + if (this.animState) { + this.animState.animComponent = null; + } + if (this.registeredParentAttachment) { + this.registeredParentAttachment.modelGraphics.unregisterAttachment( + this.model + ); + this.registeredParentAttachment = null; + } + this.updateMeshCallback(); + this.updateDebugVisualisation(); + } + if (!src) { + this.srcLoadingInstanceManager.abortIfLoading(); + this.socketChildrenByBone.forEach((children) => { + children.forEach((child) => { + this.model.getContainer().addChild(child.getContainer()); + }); + }); + this.updateMeshCallback(); + this.updateDebugVisualisation(); + return; + } + const contentSrc = this.model.contentSrcToContentAddress(src); + const srcModelPromise = this.asyncLoadSourceAsset(contentSrc, (loaded, total) => { + this.srcLoadingInstanceManager.setProgress(loaded / total); + }); + this.srcLoadingInstanceManager.start(this.model.getLoadingProgressManager(), contentSrc); + this.latestSrcModelPromise = srcModelPromise; + srcModelPromise.then((asset2) => { + if (this.latestSrcModelPromise !== srcModelPromise || !this.model.isConnected) { + return; + } + this.latestSrcModelPromise = null; + const renderEntity = asset2.resource.instantiateRenderEntity(); + let boundingBox = null; + const renders = renderEntity.findComponents("render"); + for (const render of renders) { + for (const meshInstance of render.meshInstances) { + if (boundingBox) { + boundingBox.add(meshInstance.aabb); + } else { + boundingBox = meshInstance.aabb.clone(); + } + } + render.entity.addComponent("collision", { + type: "mesh", + renderAsset: render.asset + }); + } + if (!boundingBox) { + boundingBox = new BoundingBox( + new Vec3(0, 0, 0), + new Vec3(0, 0, 0) + ); + } + boundingBox.halfExtents.mulScalar(2); + const bones = /* @__PURE__ */ new Map(); + renderEntity.forEach((node) => { + bones.set(node.name, node); + }); + this.loadedState = { + renderEntity, + boundingBox, + collisionWorldScale: { x: 1, y: 1, z: 1 }, + bones + }; + playcanvasEntity.addChild(renderEntity); + this.transformed(); + for (const [boneName, children] of this.socketChildrenByBone) { + const bone = bones.get(boneName); + if (bone) { + children.forEach((child) => { + bone.addChild(child.getContainer()); + }); + } + } + this.connectAnimationToModel(); + this.updateMeshCallback(); + const parent = this.model.parentElement; + if (parent instanceof Model) { + if (!this.latestAnimPromise && !this.animState) { + this.registeredParentAttachment = parent; + parent.modelGraphics.registerAttachment(this.model); + } + } + this.srcLoadingInstanceManager.finish(); + this.updateDebugVisualisation(); + }).catch((err) => { + console.error("Error loading m-model.src", err); + this.srcLoadingInstanceManager.error(err); + }); + } + updateDebugVisualisation() { + if (!this.model.props.debug) { + this.clearDebugVisualisation(); + } else { + if (!this.debugBoundingBox) { + const graphicsAdapter = this.model.getScene().getGraphicsAdapter(); + if (!this.debugMaterial) { + this.debugMaterial = new BasicMaterial(); + this.debugMaterial.color = new Color(1, 0, 0); + } + this.debugBoundingBox = createPlayCanvasDebugBoundingBox( + graphicsAdapter, + this.debugMaterial + ); + this.model.getContainer().addChild(this.debugBoundingBox); + } + if (this.loadedState) { + const boundingBox = this.loadedState.boundingBox; + this.debugBoundingBox.setLocalPosition(boundingBox.center); + this.debugBoundingBox.setLocalScale(boundingBox.halfExtents); + } else { + this.debugBoundingBox.setLocalScale(0, 0, 0); + } + } + } + clearDebugVisualisation() { + if (this.debugBoundingBox) { + this.debugBoundingBox.remove(); + this.debugBoundingBox = null; + } + if (this.debugMaterial) { + this.debugMaterial.destroy(); + this.debugMaterial = null; + } + } + async asyncLoadSourceAsset(url, onProgress) { + return new Promise((resolve, reject) => { + const rewrittenUrl = new URL(url); + rewrittenUrl.hash = Math.random().toString(10); + const asset2 = new Asset(url, "container", { url: rewrittenUrl.toString() }); + this.getPlayCanvasApp().assets.add(asset2); + this.getPlayCanvasApp().assets.load(asset2); + asset2.ready((asset22) => { + resolve(asset22); + }); + asset2.on("error", (err) => { + reject(err); + }); + }); + } + async asyncLoadAnimAsset(url, onProgress) { + return new Promise((resolve, reject) => { + const asset2 = new Asset(url, "animation", { url }); + this.getPlayCanvasApp().assets.add(asset2); + this.getPlayCanvasApp().assets.load(asset2); + asset2.ready((asset22) => { + resolve(asset22); + }); + asset2.on("error", (err) => { + reject(err); + }); + }); + } + dispose() { + var _a, _b; + if (this.documentTimeTickListener) { + this.documentTimeTickListener.remove(); + this.documentTimeTickListener = null; + } + if (this.registeredParentAttachment) { + (_b = (_a = this.registeredParentAttachment) == null ? void 0 : _a.modelGraphics) == null ? void 0 : _b.unregisterAttachment( + this.model + ); + this.registeredParentAttachment = null; + } + if (this.loadedState) { + this.loadedState.renderEntity.destroy(); + this.loadedState = null; + } + this.clearDebugVisualisation(); + this.animLoadingInstanceManager.dispose(); + this.srcLoadingInstanceManager.dispose(); + } + triggerSocketedChildrenTransformed() { + this.socketChildrenByBone.forEach((children) => { + children.forEach((child) => { + if (child instanceof TransformableElement) { + child.didUpdateTransformation(); + } + }); + }); + } + updateAnimation(docTimeMs) { + var _a; + let animationTimeMs = docTimeMs - this.model.props.animStartTime; + if (docTimeMs < this.model.props.animStartTime) { + animationTimeMs = 0; + } else if (this.model.props.animPauseTime !== null) { + if (docTimeMs > this.model.props.animPauseTime) { + animationTimeMs = this.model.props.animPauseTime - this.model.props.animStartTime; + } + } + const animComponent = (_a = this.animState) == null ? void 0 : _a.animComponent; + if (animComponent) { + if (!this.model.props.animEnabled) { + animComponent.playing = false; + this.triggerSocketedChildrenTransformed(); + } else { + animComponent.playing = true; + const clip = animComponent.baseLayer._controller._animEvaluator.clips[0]; + if (clip) { + clip.time = animationTimeMs / 1e3; + } + } + } + for (const [model, animState] of this.attachments) { + if (animState) { + animState.animComponent.playing = this.model.props.animEnabled; + const clip = animState.animComponent.baseLayer._controller._animEvaluator.clips[0]; + if (clip) { + clip.time = animationTimeMs / 1e3; + model.modelGraphics.triggerSocketedChildrenTransformed(); + } + } + } + this.triggerSocketedChildrenTransformed(); + } +}; +var PlayCanvasPlane = class extends PlaneGraphics { + constructor(plane) { + super(plane); + this.plane = plane; + this.material = new StandardMaterial(); + this.entity = new Entity( + "plane-internal", + plane.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + this.entity[MELEMENT_PROPERTY_NAME] = plane; + this.renderComponent = this.entity.addComponent("render", { + type: "plane", + material: this.material + }); + this.entity.rotate(90, 0, 0); + this.entity.addComponent("collision", { + type: "box", + halfExtents: new Vec3(0.5, 0, 0.5) + }); + plane.getContainer().addChild(this.entity); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.entity; + } + setColor(color) { + this.material.diffuse.set(color.r, color.g, color.b); + this.material.update(); + } + updateSize(mPlaneProps) { + this.entity.setLocalScale(mPlaneProps.width, 1, mPlaneProps.height); + if (this.entity.collision) { + this.entity.collision.halfExtents.set(mPlaneProps.width / 2, 0, mPlaneProps.height / 2); + this.entity.collision.onSetHalfExtents(); + } + } + setWidth(width, mPlaneProps) { + this.updateSize(mPlaneProps); + } + setHeight(height, mPlaneProps) { + this.updateSize(mPlaneProps); + } + setCastShadows(castShadows) { + this.renderComponent.castShadows = castShadows; + } + setOpacity(opacity) { + if (opacity === 1) { + this.material.blendType = BLEND_NONE; + } else { + this.material.blendType = BLEND_NORMAL; + } + this.material.opacity = opacity; + this.material.update(); + } + dispose() { + this.entity.destroy(); + } +}; +var PlayCanvasPositionProbe = class extends PositionProbeGraphics { + constructor(positionProbe) { + super(positionProbe); + this.positionProbe = positionProbe; + this.entity = null; + this.debugMaterial = null; + this.updateDebugVisualisation(); + } + disable() { + } + enable() { + } + setRange() { + this.updateDebugVisualisation(); + } + setDebug() { + this.updateDebugVisualisation(); + } + clearDebugVisualisation() { + if (this.entity) { + this.entity.destroy(); + this.entity = null; + } + if (this.debugMaterial) { + this.debugMaterial.destroy(); + this.debugMaterial = null; + } + } + updateDebugVisualisation() { + var _a; + if (!this.positionProbe.props.debug) { + this.clearDebugVisualisation(); + } else { + if (this.positionProbe.isConnected && !this.entity) { + this.entity = new Entity( + "position-probe-internal", + this.positionProbe.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + if (!this.debugMaterial) { + this.debugMaterial = new BasicMaterial(); + this.debugMaterial.color = new Color(0, 1, 0); + } + this.entity.addComponent("model", { + type: "sphere", + material: this.debugMaterial + }); + (_a = this.entity.model) == null ? void 0 : _a.model.meshInstances.forEach((mi) => { + mi.renderStyle = RENDERSTYLE_WIREFRAME; + mi.castShadow = false; + }); + this.positionProbe.getContainer().addChild(this.entity); + } + if (this.entity) { + this.entity.setLocalScale( + this.positionProbe.props.range * 2, + this.positionProbe.props.range * 2, + this.positionProbe.props.range * 2 + ); + } + } + } + dispose() { + this.clearDebugVisualisation(); + } +}; +var PlayCanvasPrompt = class extends PromptGraphics { + constructor(prompt) { + super(prompt); + this.prompt = prompt; + } + disable() { + } + enable() { + } + setMessage() { + } + setPlaceholder() { + } + setPrefill() { + } + setDebug() { + } + dispose() { + } +}; +function createReconnectingStatus(playCanvasApp) { + const canvas = new CanvasText().renderText("Reconnecting", { + bold: true, + fontSize: 32, + paddingPx: 10, + textColorRGB255A1: { + r: 255, + g: 0, + b: 0, + a: 1 + }, + backgroundColorRGB255A1: { + r: 255, + g: 255, + b: 255, + a: 1 + }, + alignment: "center" + }); + const texture = new Texture(playCanvasApp.graphicsDevice, { + width: canvas.width, + height: canvas.height + }); + texture.setSource(canvas); + const material = new StandardMaterial(); + material.useLighting = false; + material.emissiveMap = texture; + material.update(); + texture.destroy(); + const width = canvas.width; + const height = canvas.height; + return { material, width: width / 100, height: height / 100 }; +} +var reconnectingStatus = null; +function getPlayCanvasReconnectingStatus(playCanvasApp) { + if (!reconnectingStatus) { + reconnectingStatus = createReconnectingStatus(playCanvasApp); + } + return reconnectingStatus; +} +var PlayCanvasRemoteDocument = class extends RemoteDocumentGraphics { + constructor(element) { + super(element); + this.element = element; + this.statusUI = null; + } + showError(showError) { + if (!showError) { + if (this.statusUI !== null) { + this.element.getContainer().removeChild(this.statusUI); + this.statusUI = null; + } + } else { + if (this.statusUI === null) { + const playCanvasApp = this.element.getScene().getGraphicsAdapter().getPlayCanvasApp(); + this.statusUI = new Entity("label-internal", playCanvasApp); + this.statusUI.rotate(90, 0, 0); + const { material, width, height } = getPlayCanvasReconnectingStatus(playCanvasApp); + this.statusUI.addComponent("render", { + type: "plane", + material + }); + this.statusUI.setLocalScale(width, 1, height); + this.statusUI.setPosition(0, height / 2, 0); + this.element.getContainer().addChild(this.statusUI); + } + } + } + dispose() { + } +}; +var PlayCanvasSphere = class extends SphereGraphics { + constructor(sphere) { + super(sphere); + this.sphere = sphere; + this.material = new StandardMaterial(); + this.entity = new Entity( + "sphere-internal", + sphere.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + this.entity[MELEMENT_PROPERTY_NAME] = sphere; + this.renderComponent = this.entity.addComponent("render", { + type: "sphere", + material: this.material + }); + this.entity.addComponent("collision", { + type: "sphere" + }); + if (this.entity.collision) { + this.entity.collision.radius = 1; + } + sphere.getContainer().addChild(this.entity); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.entity; + } + setColor(color) { + this.material.diffuse.set(color.r, color.g, color.b); + this.material.metalness = 0; + this.material.useMetalness = true; + this.material.update(); + } + updateSize(mSphereProps) { + this.entity.setLocalScale( + mSphereProps.radius * 2, + mSphereProps.radius * 2, + mSphereProps.radius * 2 + ); + if (this.entity.collision) { + this.entity.collision.radius = mSphereProps.radius; + this.entity.collision.onSetRadius(); + } + } + setRadius(radius, mSphereProps) { + this.updateSize(mSphereProps); + } + setCastShadows(castShadows) { + this.renderComponent.castShadows = castShadows; + } + setOpacity(opacity) { + if (opacity === 1) { + this.material.blendType = BLEND_NONE; + } else { + this.material.blendType = BLEND_NORMAL; + } + this.material.opacity = opacity; + this.material.update(); + } + dispose() { + this.entity.destroy(); + } +}; +var halfToRad = 0.5 * math.DEG_TO_RAD; +function xyzDegreesToQuaternion(x2, y2, z2) { + x2 *= halfToRad; + y2 *= halfToRad; + z2 *= halfToRad; + const cx = Math.cos(x2); + const cy = Math.cos(y2); + const cz = Math.cos(z2); + const sx = Math.sin(x2); + const sy = Math.sin(y2); + const sz = Math.sin(z2); + return [ + sx * cy * cz + cx * sy * sz, + // x + cx * sy * cz - sx * cy * sz, + // y + cx * cy * sz + sx * sy * cz, + // z + cx * cy * cz - sx * sy * sz + // w + ]; +} +var PlayCanvasTransformable = class extends TransformableGraphics { + constructor(transformableElement) { + super(transformableElement); + this.transformableElement = transformableElement; + this.socketName = null; + this.registeredSocketParent = null; + } + getWorldMatrix() { + return new Matr4(this.getPlayCanvasEntity().getWorldTransform().data); + } + setSocket(socketName) { + if (this.socketName !== socketName) { + if (this.socketName !== null && this.registeredSocketParent) { + this.registeredSocketParent.unregisterSocketChild( + this.transformableElement, + this.socketName + ); + } + this.socketName = socketName; + if (socketName !== null) { + this.registerWithParentModel(socketName); + } + } else { + this.socketName = socketName; + } + } + registerWithParentModel(socketName) { + var _a; + if ((_a = this.transformableElement.parentElement) == null ? void 0 : _a.isModel) { + const parentModel = this.transformableElement.parentElement; + this.registeredSocketParent = parentModel.modelGraphics; + this.registeredSocketParent.registerSocketChild(this.transformableElement, socketName); + } + } + setVisible(visible) { + this.getPlayCanvasEntity().enabled = visible; + } + updatePosition(x2, y2, z2) { + this.getPlayCanvasEntity().setLocalPosition(x2, y2, z2); + } + setX(x2, transformableElementProps) { + this.updatePosition( + transformableElementProps.x, + transformableElementProps.y, + transformableElementProps.z + ); + } + setY(y2, transformableElementProps) { + this.updatePosition( + transformableElementProps.x, + transformableElementProps.y, + transformableElementProps.z + ); + } + setZ(z2, transformableElementProps) { + this.updatePosition( + transformableElementProps.x, + transformableElementProps.y, + transformableElementProps.z + ); + } + getPlayCanvasEntity() { + return this.transformableElement.getContainer(); + } + updateRotation(rx, ry, rz) { + this.getPlayCanvasEntity().setLocalRotation(...xyzDegreesToQuaternion(rx, ry, rz)); + } + setRotationX(rotationX, transformableElementProps) { + this.updateRotation( + transformableElementProps.rx, + transformableElementProps.ry, + transformableElementProps.rz + ); + } + setRotationY(rotationY, transformableElementProps) { + this.updateRotation( + transformableElementProps.rx, + transformableElementProps.ry, + transformableElementProps.rz + ); + } + setRotationZ(rotationZ, transformableElementProps) { + this.updateRotation( + transformableElementProps.rx, + transformableElementProps.ry, + transformableElementProps.rz + ); + } + updateScale(sx, sy, sz) { + this.getPlayCanvasEntity().setLocalScale(sx, sy, sz); + } + setScaleX(scaleX, transformableElementProps) { + this.updateScale( + transformableElementProps.sx, + transformableElementProps.sy, + transformableElementProps.sz + ); + } + setScaleY(scaleY, transformableElementProps) { + this.updateScale( + transformableElementProps.sx, + transformableElementProps.sy, + transformableElementProps.sz + ); + } + setScaleZ(scaleZ, transformableElementProps) { + this.updateScale( + transformableElementProps.sx, + transformableElementProps.sy, + transformableElementProps.sz + ); + } + dispose() { + if (this.socketName && this.registeredSocketParent !== null) { + this.registeredSocketParent.unregisterSocketChild( + this.transformableElement, + this.socketName, + false + ); + } + } +}; +var audioRefDistance = 1; +var audioRolloffFactor = 1; +var PlayCanvasVideo = class extends VideoGraphics { + constructor(video, updateMeshCallback) { + super(video, updateMeshCallback); + this.video = video; + this.updateMeshCallback = updateMeshCallback; + this.videoSource = null; + this.videoMaterial = new StandardMaterial(); + this.disabledVideoMaterial = new StandardMaterial(); + this.loadedVideoState = null; + this.eventCollection = new EventHandlerCollection(); + this.disabledVideoMaterial.diffuse = new Color(0, 0, 0); + this.documentTimeTickListener = this.video.addDocumentTimeTickListener(() => { + this.tick(); + }); + this.eventCollection.add(this.getAudioContext(), "statechange", () => { + this.syncVideoTime(); + }); + this.entity = new Entity( + "video-internal", + video.getScene().getGraphicsAdapter().getPlayCanvasApp() + ); + this.entity[MELEMENT_PROPERTY_NAME] = video; + const { model, meshInstance } = createPlaneModel( + this.video.getScene().getGraphicsAdapter().getPlayCanvasApp(), + this.disabledVideoMaterial + ); + this.modelComponent = this.entity.addComponent("model", {}); + this.modelComponent.model = model; + this.meshInstance = meshInstance; + this.entity.addComponent("collision", { + type: "box", + halfExtents: new Vec3(0.5, 0, 0.5) + }); + video.getContainer().addChild(this.entity); + } + getPlayCanvasApp() { + return this.video.getScene().getGraphicsAdapter().getPlayCanvasApp(); + } + getWidthAndHeight() { + return { + width: this.entity.getLocalScale().x, + height: this.entity.getLocalScale().y + }; + } + getAudioContext() { + const playcanvasApp = this.getPlayCanvasApp(); + const soundSystem = playcanvasApp.systems.sound; + if (!soundSystem) { + throw new Error("Playcanvas sound system not enabled"); + } + return soundSystem.context; + } + syncVideoTime() { + if (this.loadedVideoState) { + const videoTag = this.loadedVideoState.video; + if (videoTag.readyState === 0) { + return; + } + const audioContext = this.getAudioContext(); + if (audioContext.state === "running") { + videoTag.muted = false; + } + if (this.video.isDisabled()) { + videoTag.muted = true; + } + if (this.videoSource) { + this.videoSource.syncVideoSource(this.video.props); + } + } + } + enable() { + this.updateVideo(); + } + disable() { + this.updateVideo(); + } + setSrc() { + this.updateVideo(); + } + setWidth() { + this.updateWidthAndHeight(); + } + setHeight() { + this.updateWidthAndHeight(); + } + setEnabled() { + this.updateVideo(); + } + setCastShadows() { + this.updateVideo(); + } + setLoop() { + this.updateVideo(); + } + setVolume() { + var _a; + if ((_a = this.loadedVideoState) == null ? void 0 : _a.audio) { + this.loadedVideoState.audio.gainNode.gain.value = this.video.props.volume; + } + } + setEmissive() { + this.updateMaterialEmissiveIntensity(); + } + setStartTime() { + this.updateVideo(); + } + setPauseTime() { + this.updateVideo(); + } + updateVideo() { + if (!this.video.isConnected) { + return; + } + if (!this.video.props.enabled) { + this.clearSource(); + return; + } + if (!this.video.props.src) { + this.clearSource(); + } else { + const contentAddress = this.video.contentSrcToContentAddress(this.video.props.src); + if (this.videoSource === null || this.videoSource.getContentAddress() !== contentAddress) { + this.clearSource(); + const video = document.createElement("video"); + video.playsInline = true; + video.muted = true; + video.autoplay = true; + video.crossOrigin = "anonymous"; + const videoLoadEventCollection = new EventHandlerCollection(); + this.loadedVideoState = { + video, + videoLoadEventCollection, + videoTexture: null, + audio: null + }; + video.loop = this.video.props.loop; + const url = new URL(contentAddress); + if (WHEPVideoSource.isWHEPURL(url)) { + this.videoSource = new WHEPVideoSource(url, video); + } else { + this.videoSource = new StaticFileVideoSource(url, video, this.video.props, () => { + return this.video.getDocumentTime(); + }); + } + videoLoadEventCollection.add(video, "loadeddata", () => { + if (!this.loadedVideoState || this.loadedVideoState.video !== video) { + return; + } + this.loadedVideoState.videoTexture = new Texture( + this.getPlayCanvasApp().graphicsDevice, + { + format: PIXELFORMAT_R8_G8_B8, + mipmaps: false, + width: video.videoWidth, + height: video.videoHeight + } + ); + this.loadedVideoState.videoTexture.setSource(this.loadedVideoState.video); + this.videoMaterial.diffuseMap = this.loadedVideoState.videoTexture; + this.videoMaterial.update(); + this.meshInstance.material = this.videoMaterial; + this.syncVideoTime(); + this.updateWidthAndHeight(); + this.updateMaterialEmissiveIntensity(); + const audioContext = this.getAudioContext(); + const pos = this.entity.getPosition(); + const orientationX = 1; + const orientationY = 0; + const orientationZ = 0; + const panner = new PannerNode(audioContext, { + panningModel: "HRTF", + distanceModel: "inverse", + positionX: pos.x, + positionY: pos.y, + positionZ: pos.z, + orientationX, + orientationY, + orientationZ, + refDistance: audioRefDistance, + rolloffFactor: audioRolloffFactor + }); + const gainNode = audioContext.createGain(); + gainNode.gain.value = this.video.props.volume; + const stereoPanner = new StereoPannerNode(audioContext, { pan: 0 }); + const audioNode = audioContext.createMediaElementSource(video); + audioNode.connect(gainNode).connect(stereoPanner).connect(panner).connect(audioContext.destination); + this.loadedVideoState.audio = { gainNode, audioNode, panner }; + }); + } + } + if (this.videoSource) { + this.syncVideoTime(); + } + } + tick() { + var _a, _b; + const videoTexture = (_a = this.loadedVideoState) == null ? void 0 : _a.videoTexture; + if (videoTexture) { + videoTexture.upload(); + } + const audio2 = (_b = this.loadedVideoState) == null ? void 0 : _b.audio; + if (audio2) { + const pos = this.entity.getPosition(); + const rotation2 = this.entity.getEulerAngles(); + audio2.panner.positionX.value = pos.x; + audio2.panner.positionY.value = pos.y; + audio2.panner.positionZ.value = pos.z; + audio2.panner.orientationX.value = Math.cos(rotation2.y); + audio2.panner.orientationY.value = 0; + audio2.panner.orientationZ.value = Math.sin(rotation2.y); + } + } + clearSource() { + if (this.videoSource) { + this.videoSource.dispose(); + this.videoSource = null; + } + if (this.loadedVideoState) { + const tag = this.loadedVideoState.video; + tag.pause(); + tag.src = ""; + tag.load(); + if (this.loadedVideoState.audio) { + this.loadedVideoState.audio.audioNode.disconnect(); + this.loadedVideoState.audio = null; + } + if (this.loadedVideoState.videoTexture) { + this.loadedVideoState.videoTexture.destroy(); + this.loadedVideoState.videoTexture = null; + } + this.loadedVideoState.videoLoadEventCollection.clear(); + this.loadedVideoState = null; + this.meshInstance.material = this.disabledVideoMaterial; + this.updateWidthAndHeight(); + } + } + updateMaterialEmissiveIntensity() { + var _a; + if (((_a = this.loadedVideoState) == null ? void 0 : _a.videoTexture) && this.video.props.emissive) { + this.videoMaterial.emissiveMap = this.loadedVideoState.videoTexture; + this.videoMaterial.emissiveIntensity = this.video.props.emissive; + } else { + this.videoMaterial.emissiveMap = null; + this.videoMaterial.emissiveIntensity = 0; + } + this.videoMaterial.update(); + } + dispose() { + this.clearSource(); + this.documentTimeTickListener.remove(); + this.eventCollection.clear(); + this.entity.destroy(); + } + getCollisionElement() { + return this.entity; + } + updateWidthAndHeight() { + const { width, height } = calculateContentSize({ + content: this.loadedVideoState ? { + width: this.loadedVideoState.video.videoWidth, + height: this.loadedVideoState.video.videoHeight + } : void 0, + width: this.video.props.width, + height: this.video.props.height + }); + this.entity.setLocalScale(width, height, 1); + if (this.entity.collision) { + this.entity.collision.halfExtents.set(width / 2, height / 2, 0); + this.entity.collision.onSetHalfExtents(); + } + this.updateMeshCallback(); + } +}; +var PlayCanvasGraphicsInterface = { + MElementGraphicsInterface: (element) => new PlayCanvasMElement(element), + MMLDebugHelperGraphicsInterface: (debugHelper) => new PlayCanvasDebugHelper(debugHelper), + MMLAudioGraphicsInterface: (element) => new PlayCanvasAudio(element), + MMLChatProbeGraphicsInterface: (element) => new PlayCanvasChatProbe(element), + MMLCubeGraphicsInterface: (element) => new PlayCanvasCube(element), + MMLCylinderGraphicsInterface: (element) => new PlayCanvasCylinder(element), + MMLFrameGraphicsInterface: (element) => new PlayCanvasFrame(element), + MMLImageGraphicsInterface: (element, updateMeshCallback) => new PlayCanvasImage(element, updateMeshCallback), + MMLInteractionGraphicsInterface: (element) => new PlayCanvasInteraction(element), + MMLLabelGraphicsInterface: (element) => new PlayCanvasLabel(element), + MMLLightGraphicsInterface: (element) => new PlayCanvasLight(element), + MMLLinkGraphicsInterface: (element) => new PlayCanvasLink(element), + MMLModelGraphicsInterface: (element, updateMeshCallback) => new PlayCanvasModel(element, updateMeshCallback), + MMLPlaneGraphicsInterface: (element) => new PlayCanvasPlane(element), + MMLPositionProbeGraphicsInterface: (element) => new PlayCanvasPositionProbe(element), + MMLPromptGraphicsInterface: (element) => new PlayCanvasPrompt(element), + MMLSphereGraphicsInterface: (element) => new PlayCanvasSphere(element), + MMLTransformableGraphicsInterface: (element) => new PlayCanvasTransformable(element), + MMLVideoGraphicsInterface: (element, updateMeshCallback) => new PlayCanvasVideo(element, updateMeshCallback), + RemoteDocumentGraphicsInterface: (element) => new PlayCanvasRemoteDocument(element) +}; +var PlayCanvasInteractionAdapter = class _PlayCanvasInteractionAdapter { + static interactionShouldShowDistance(interaction, cameraEntity, cameraComponent, app2) { + const worldPos = interaction.getContainer().getPosition(); + const cameraPos = cameraEntity.getPosition(); + const distance = cameraPos.distance(worldPos); + if (distance > interaction.props.range) { + return null; + } + if (interaction.props.inFocus) { + if (!cameraComponent.frustum.containsPoint(worldPos)) { + return null; + } + } + if (interaction.props.lineOfSight) { + const rigidbodySystem = app2.systems.rigidbody; + if (!rigidbodySystem) { + console.warn("Rigidbody system not found. Line of sight check will not work."); + } else { + const raycastResults = rigidbodySystem.raycastAll(cameraPos, worldPos); + if (raycastResults.length > 0) { + for (const result of raycastResults) { + if (!_PlayCanvasInteractionAdapter.hasAncestor(result.entity, interaction.getContainer())) { + return null; + } + } + } + } + } + return distance; + } + static hasAncestor(object, ancestor) { + let parent = object.parent; + while (parent !== null) { + if (parent === ancestor) { + return true; + } + parent = parent.parent; + } + return false; + } +}; + +// ../../node_modules/@mml-io/mml-web-playcanvas-standalone/build/index.js +var up2 = { x: 0, y: 1, z: 0 }; +var right = { x: 1, y: 0, z: 0 }; +var quaternion = new Quat(); +var qPitch = new Quat(); +var qYaw = new Quat(); +var PlayCanvasDragFlyCameraControls = class { + constructor(camera, domElement, speed = 15) { + this.type = "drag-fly"; + this.enabled = false; + this.yaw = 0; + this.pitch = 0; + this.forward = false; + this.backward = false; + this.left = false; + this.right = false; + this.up = false; + this.down = false; + this.minPolarAngle = 0 * (Math.PI / 180); + this.maxPolarAngle = 180 * (Math.PI / 180); + this.invertedMouseY = false; + this.eventHandlerCollection = new EventHandlerCollection(); + this.mouseDown = false; + this.camera = camera; + this.domElement = domElement; + this.domElement.style.userSelect = "none"; + this.speed = speed; + } + fitContent(boundingBox) { + var _a, _b; + const center2 = { + x: (boundingBox.min.x + boundingBox.max.x) / 2, + y: (boundingBox.min.y + boundingBox.max.y) / 2, + z: (boundingBox.min.z + boundingBox.max.z) / 2 + }; + const size = { + x: boundingBox.max.x - boundingBox.min.x, + y: boundingBox.max.y - boundingBox.min.y, + z: boundingBox.max.z - boundingBox.min.z + }; + const fov = ((_b = (_a = this.camera) == null ? void 0 : _a.camera) == null ? void 0 : _b.fov) || 1; + const maximumDimension = Math.max(size.x, size.y, size.z); + const distance = Math.abs(maximumDimension / 4 / Math.tan(fov / 2)); + const currentCameraRay = this.camera.forward.clone().normalize(); + currentCameraRay.mulScalar(-distance); + this.camera.setLocalPosition( + center2.x + currentCameraRay.x, + center2.y + currentCameraRay.y, + center2.z + currentCameraRay.z + ); + this.setLookAt(center2.x, center2.y, center2.z); + } + enable() { + if (this.enabled) { + return; + } + this.enabled = true; + this.eventHandlerCollection.add(document, "keydown", this.onKeyDown.bind(this)); + this.eventHandlerCollection.add(document, "keyup", this.onKeyUp.bind(this)); + this.eventHandlerCollection.add(window, "blur", this.onBlur.bind(this)); + this.eventHandlerCollection.add(document, "mousemove", this.onMouseMove.bind(this)); + this.eventHandlerCollection.add(this.domElement, "mousedown", this.onMouseDown.bind(this)); + this.eventHandlerCollection.add(document, "mouseup", this.onMouseUp.bind(this)); + this.eventHandlerCollection.add(document, "wheel", this.onMouseWheel.bind(this)); + } + disable() { + if (!this.enabled) { + return; + } + this.eventHandlerCollection.clear(); + this.enabled = false; + } + setInvert(invert) { + this.invertedMouseY = invert; + } + dispose() { + this.disable(); + } + setCameraPosition(x2, y2, z2) { + this.camera.setLocalPosition(x2, y2, z2); + } + setLookAt(x2, y2, z2) { + this.camera.lookAt(x2, y2, z2); + const { yaw, pitch } = getYawPitchFromQuaternion(this.camera.getRotation()); + this.yaw = yaw; + this.pitch = pitch; + this.updateCameraFromYawAndPitch(); + } + update(dt) { + if (!this.mouseDown) { + return; + } + this.camera.translateLocal( + (Number(this.right) - Number(this.left)) * dt * 30, + (Number(this.up) - Number(this.down)) * dt * 30, + (Number(this.backward) - Number(this.forward)) * dt * 30 + ); + } + onKeyDown(event) { + if (!this.mouseDown) { + return; + } + switch (event.code) { + case "ArrowUp": + case "KeyW": + this.forward = true; + break; + case "ArrowLeft": + case "KeyA": + this.left = true; + break; + case "ArrowDown": + case "KeyS": + this.backward = true; + break; + case "ArrowRight": + case "KeyD": + this.right = true; + break; + case "Space": + this.up = true; + break; + case "ShiftLeft": + this.down = true; + break; + } + event.preventDefault(); + } + onKeyUp(event) { + switch (event.code) { + case "ArrowUp": + case "KeyW": + this.forward = false; + break; + case "ArrowLeft": + case "KeyA": + this.left = false; + break; + case "ArrowDown": + case "KeyS": + this.backward = false; + break; + case "ArrowRight": + case "KeyD": + this.right = false; + break; + case "Space": + this.up = false; + break; + case "ShiftLeft": + this.down = false; + break; + } + } + onBlur() { + this.mouseDown = false; + this.forward = false; + this.left = false; + this.backward = false; + this.right = false; + this.up = false; + this.down = false; + } + onMouseDown() { + this.mouseDown = true; + } + onMouseMove(event) { + if (!this.mouseDown) { + return; + } + const movementX = event.movementX; + let movementY = event.movementY; + if (this.invertedMouseY) { + movementY *= -1; + } + this.yaw += movementX * -2e-3; + this.pitch += movementY * -2e-3; + this.updateCameraFromYawAndPitch(); + } + updateCameraFromYawAndPitch() { + this.yaw = this.yaw % (Math.PI * 2); + this.pitch = this.pitch % (Math.PI * 2); + this.pitch = Math.max( + Math.PI / 2 - this.maxPolarAngle, + Math.min(Math.PI / 2 - this.minPolarAngle, this.pitch) + ); + qPitch.setFromAxisAngle(right, this.pitch); + qYaw.setFromAxisAngle(up2, this.yaw); + quaternion.set(0, 0, 0, 1); + quaternion.multiply(qYaw); + quaternion.multiply(qPitch); + this.camera.setLocalRotation(quaternion.x, quaternion.y, quaternion.z, quaternion.w); + } + onMouseUp() { + this.mouseDown = false; + } + onMouseWheel(event) { + if (!this.mouseDown) { + return; + } + this.speed -= event.deltaY * 0.1; + this.speed = Math.max(5, Math.min(this.speed, 1e3)); + } +}; +function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); +} +function getYawPitchFromQuaternion(quaternion2) { + const matr4 = new Matr4(); + matr4.setRotationFromQuaternion(quaternion2); + const d = matr4.data; + const m11 = d[0]; + const m13 = d[8]; + const m23 = d[9]; + const m31 = d[2]; + const m33 = d[10]; + const yaw = Math.abs(m23) < 0.9999999 ? Math.atan2(m13, m33) : Math.atan2(-m31, m11); + const pitch = Math.asin(-clamp(m23, -1, 1)); + return { yaw, pitch }; +} +var PlayCanvasOrbitCameraControls = class { + constructor(camera, domElement, distance = 15) { + this.camera = camera; + this.domElement = domElement; + this.distance = distance; + this.type = "orbit"; + this.enabled = false; + this.degreesPerSecond = 10; + this.yaw = 0; + this.pitch = Math.PI * 0.4; + this.minPolarAngle = -89.9999 * (Math.PI / 180); + this.maxPolarAngle = 89.9999 * (Math.PI / 180); + this.invertedMouseY = false; + this.eventHandlerCollection = new EventHandlerCollection(); + this.mouseDown = false; + this.cameraLookAt = new Vect3(); + this.domElement.style.userSelect = "none"; + } + fitContent(boundingBox) { + var _a, _b; + const center2 = { + x: (boundingBox.min.x + boundingBox.max.x) / 2, + y: (boundingBox.min.y + boundingBox.max.y) / 2, + z: (boundingBox.min.z + boundingBox.max.z) / 2 + }; + const size = { + x: boundingBox.max.x - boundingBox.min.x, + y: boundingBox.max.y - boundingBox.min.y, + z: boundingBox.max.z - boundingBox.min.z + }; + const fov = ((_b = (_a = this.camera) == null ? void 0 : _a.camera) == null ? void 0 : _b.fov) || 1; + const maximumDimension = Math.max(size.x, size.y, size.z); + this.distance = Math.abs(maximumDimension / 4 / Math.tan(fov / 2)); + this.setLookAt(center2.x, center2.y, center2.z); + this.update(); + } + enable() { + if (this.enabled) { + return; + } + this.enabled = true; + this.eventHandlerCollection.add(window, "blur", this.onBlur.bind(this)); + this.eventHandlerCollection.add(document, "mousemove", this.onMouseMove.bind(this)); + this.eventHandlerCollection.add(this.domElement, "mousedown", this.onMouseDown.bind(this)); + this.eventHandlerCollection.add(document, "mouseup", this.onMouseUp.bind(this)); + this.eventHandlerCollection.add(document, "wheel", this.onMouseWheel.bind(this)); + } + disable() { + if (!this.enabled) { + return; + } + this.eventHandlerCollection.clear(); + this.enabled = false; + } + setInvert(invert) { + this.invertedMouseY = invert; + } + dispose() { + this.disable(); + } + getBaseYaw() { + return -(Date.now() / 1e3 * this.degreesPerSecond) % 360 * (Math.PI / 180); + } + update() { + const baseYaw = this.getBaseYaw(); + const yaw = baseYaw + this.yaw; + const sinPhiRadius = Math.sin(this.pitch) * this.distance; + const x2 = sinPhiRadius * Math.sin(yaw); + const y2 = Math.cos(this.pitch) * this.distance; + const z2 = sinPhiRadius * Math.cos(yaw); + this.camera.setPosition(x2, y2, z2); + this.camera.translate(this.cameraLookAt.x, this.cameraLookAt.y, this.cameraLookAt.z); + this.camera.lookAt(this.cameraLookAt.x, this.cameraLookAt.y, this.cameraLookAt.z); + } + onBlur() { + this.mouseDown = false; + } + onMouseDown() { + this.mouseDown = true; + } + setDegreesPerSecond(degreesPerSecond) { + this.degreesPerSecond = degreesPerSecond; + } + setLookAt(x2, y2, z2) { + this.cameraLookAt.set(x2, y2, z2); + } + setDistance(distance) { + this.distance = distance; + } + setPitchDegrees(pitch) { + this.pitch = pitch * (Math.PI / 180); + this.pitch = this.pitch % (Math.PI * 2); + } + onMouseMove(event) { + if (!this.mouseDown) { + return; + } + const movementX = event.movementX; + let movementY = event.movementY; + if (this.invertedMouseY) { + movementY *= -1; + } + this.yaw += movementX * -2e-3; + this.pitch += movementY * -2e-3; + this.yaw = this.yaw % (Math.PI * 2); + this.pitch = this.pitch % (Math.PI * 2); + this.pitch = Math.max( + Math.PI / 2 - this.maxPolarAngle, + Math.min(Math.PI / 2 - this.minPolarAngle, this.pitch) + ); + } + onMouseUp() { + this.mouseDown = false; + } + onMouseWheel(event) { + this.distance += event.deltaY * 0.1; + this.distance = Math.max(0.01, Math.min(this.distance, 1e3)); + } +}; +var ammo_wasm_default = "Ly8gVGhpcyBpcyBhbW1vLmpzLCBhIHBvcnQgb2YgQnVsbGV0IFBoeXNpY3MgdG8gSmF2YVNjcmlwdC4gemxpYiBsaWNlbnNlZC4KCnZhciBBbW1vID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIF9zY3JpcHREaXIgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgPyBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyA6IHVuZGVmaW5lZDsKICAgIGlmICh0eXBlb2YgX19maWxlbmFtZSAhPT0gJ3VuZGVmaW5lZCcpCiAgICAgIF9zY3JpcHREaXIgPSBfc2NyaXB0RGlyIHx8IF9fZmlsZW5hbWU7CiAgICByZXR1cm4gKGZ1bmN0aW9uKEFtbW8pIHsKICAgICAgICBBbW1vID0gQW1tbyB8fCB7fTsKCiAgICAgICAgdmFyIGI7CiAgICAgICAgYiB8fCAoYiA9IHR5cGVvZiBBbW1vICE9PSAndW5kZWZpbmVkJyA/IEFtbW8gOiB7fSk7CiAgICAgICAgdmFyIGFhID0ge30sIGJhOwogICAgICAgIGZvciAoYmEgaW4gYikKICAgICAgICAgIGIuaGFzT3duUHJvcGVydHkoYmEpICYmIChhYVtiYV0gPSBiW2JhXSk7CiAgICAgICAgdmFyIGNhID0gITEKICAgICAgICAgICwgZGEgPSAhMQogICAgICAgICAgLCBlYSA9ICExCiAgICAgICAgICAsIGZhID0gITE7CiAgICAgICAgY2EgPSAib2JqZWN0IiA9PT0gdHlwZW9mIHdpbmRvdzsKICAgICAgICBkYSA9ICJmdW5jdGlvbiIgPT09IHR5cGVvZiBpbXBvcnRTY3JpcHRzOwogICAgICAgIGVhID0gIm9iamVjdCIgPT09IHR5cGVvZiBwcm9jZXNzICYmICJvYmplY3QiID09PSB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyAmJiAic3RyaW5nIiA9PT0gdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZTsKICAgICAgICBmYSA9ICFjYSAmJiAhZWEgJiYgIWRhOwogICAgICAgIHZhciBoYSA9ICIiLCBqYSwga2EsIGxhLCBtYTsKICAgICAgICBpZiAoZWEpCiAgICAgICAgICBoYSA9IGRhID8gcmVxdWlyZSgicGF0aCIpLmRpcm5hbWUoaGEpICsgIi8iIDogX19kaXJuYW1lICsgIi8iLAogICAgICAgICAgICBqYSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgICBsYSB8fCAobGEgPSByZXF1aXJlKCJmcyIpKTsKICAgICAgICAgICAgICBtYSB8fCAobWEgPSByZXF1aXJlKCJwYXRoIikpOwogICAgICAgICAgICAgIGEgPSBtYS5ub3JtYWxpemUoYSk7CiAgICAgICAgICAgICAgcmV0dXJuIGxhLnJlYWRGaWxlU3luYyhhLCBjID8gbnVsbCA6ICJ1dGY4IikKICAgICAgICAgICAgfQogICAgICAgICAgICAsCiAgICAgICAgICAgIGthID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgIGEgPSBqYShhLCAhMCk7CiAgICAgICAgICAgICAgYS5idWZmZXIgfHwgKGEgPSBuZXcgVWludDhBcnJheShhKSk7CiAgICAgICAgICAgICAgYXNzZXJ0KGEuYnVmZmVyKTsKICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICB9CiAgICAgICAgICAgICwKICAgICAgICAgIDEgPCBwcm9jZXNzLmFyZ3YubGVuZ3RoICYmIHByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCAiLyIpLAogICAgICAgICAgICBwcm9jZXNzLmFyZ3Yuc2xpY2UoMiksCiAgICAgICAgICAgIHByb2Nlc3Mub24oInVuY2F1Z2h0RXhjZXB0aW9uIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgIHRocm93IGE7CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBwcm9jZXNzLm9uKCJ1bmhhbmRsZWRSZWplY3Rpb24iLCBuYSksCiAgICAgICAgICAgIGIuaW5zcGVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHJldHVybiAiW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF0iCiAgICAgICAgICAgIH0KICAgICAgICAgIDsKICAgICAgICBlbHNlIGlmIChmYSkKICAgICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiByZWFkICYmIChqYSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICByZXR1cm4gcmVhZChhKQogICAgICAgICAgICB9CiAgICAgICAgICApLAogICAgICAgICAgICBrYSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PT0gdHlwZW9mIHJlYWRidWZmZXIpCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVhZGJ1ZmZlcihhKSk7CiAgICAgICAgICAgICAgYSA9IHJlYWQoYSwgImJpbmFyeSIpOwogICAgICAgICAgICAgIGFzc2VydCgib2JqZWN0IiA9PT0gdHlwZW9mIGEpOwogICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgInVuZGVmaW5lZCIgIT09IHR5cGVvZiBwcmludCAmJiAoInVuZGVmaW5lZCIgPT09IHR5cGVvZiBjb25zb2xlICYmIChjb25zb2xlID0ge30pLAogICAgICAgICAgICBjb25zb2xlLmxvZyA9IHByaW50LAogICAgICAgICAgICBjb25zb2xlLndhcm4gPSBjb25zb2xlLmVycm9yID0gInVuZGVmaW5lZCIgIT09IHR5cGVvZiBwcmludEVyciA/IHByaW50RXJyIDogcHJpbnQpOwogICAgICAgIGVsc2UgaWYgKGNhIHx8IGRhKQogICAgICAgICAgZGEgPyBoYSA9IHNlbGYubG9jYXRpb24uaHJlZiA6IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgJiYgKGhhID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLAogICAgICAgICAgX3NjcmlwdERpciAmJiAoaGEgPSBfc2NyaXB0RGlyKSwKICAgICAgICAgICAgaGEgPSAwICE9PSBoYS5pbmRleE9mKCJibG9iOiIpID8gaGEuc3Vic3RyKDAsIGhhLmxhc3RJbmRleE9mKCIvIikgKyAxKSA6ICIiLAogICAgICAgICAgICBqYSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICB2YXIgYyA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKICAgICAgICAgICAgICBjLm9wZW4oIkdFVCIsIGEsICExKTsKICAgICAgICAgICAgICBjLnNlbmQobnVsbCk7CiAgICAgICAgICAgICAgcmV0dXJuIGMucmVzcG9uc2VUZXh0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgZGEgJiYgKGthID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgIHZhciBjID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogICAgICAgICAgICAgIGMub3BlbigiR0VUIiwgYSwgITEpOwogICAgICAgICAgICAgIGMucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKICAgICAgICAgICAgICBjLnNlbmQobnVsbCk7CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGMucmVzcG9uc2UpCiAgICAgICAgICAgIH0KICAgICAgICAgICk7CiAgICAgICAgdmFyIG9hID0gYi5wcmludCB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpCiAgICAgICAgICAsIHBhID0gYi5wcmludEVyciB8fCBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTsKICAgICAgICBmb3IgKGJhIGluIGFhKQogICAgICAgICAgYWEuaGFzT3duUHJvcGVydHkoYmEpICYmIChiW2JhXSA9IGFhW2JhXSk7CiAgICAgICAgYWEgPSBudWxsOwogICAgICAgIHZhciBxYSA9IFtdLCByYSwgc2E7CiAgICAgICAgYi53YXNtQmluYXJ5ICYmIChzYSA9IGIud2FzbUJpbmFyeSk7CiAgICAgICAgdmFyIG5vRXhpdFJ1bnRpbWU7CiAgICAgICAgYi5ub0V4aXRSdW50aW1lICYmIChub0V4aXRSdW50aW1lID0gYi5ub0V4aXRSdW50aW1lKTsKICAgICAgICAib2JqZWN0IiAhPT0gdHlwZW9mIFdlYkFzc2VtYmx5ICYmIHBhKCJubyBuYXRpdmUgd2FzbSBzdXBwb3J0IGRldGVjdGVkIik7CiAgICAgICAgdmFyIHRhLCB1YSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7CiAgICAgICAgICBpbml0aWFsOiA5MzUsCiAgICAgICAgICBtYXhpbXVtOiA5NTUsCiAgICAgICAgICBlbGVtZW50OiAiYW55ZnVuYyIKICAgICAgICB9KSwgdmEgPSAhMTsKICAgICAgICBmdW5jdGlvbiBhc3NlcnQoYSwgYykgewogICAgICAgICAgYSB8fCBuYSgiQXNzZXJ0aW9uIGZhaWxlZDogIiArIGMpCiAgICAgICAgfQogICAgICAgIHZhciB3YSA9ICJ1bmRlZmluZWQiICE9PSB0eXBlb2YgVGV4dERlY29kZXIgPyBuZXcgVGV4dERlY29kZXIoInV0ZjgiKSA6IHZvaWQgMDsKICAgICAgICBmdW5jdGlvbiB4YShhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IGMgKyBkOwogICAgICAgICAgZm9yIChkID0gYzsgYVtkXSAmJiAhKGQgPj0gZSk7ICkKICAgICAgICAgICAgKytkOwogICAgICAgICAgaWYgKDE2IDwgZCAtIGMgJiYgYS5zdWJhcnJheSAmJiB3YSkKICAgICAgICAgICAgcmV0dXJuIHdhLmRlY29kZShhLnN1YmFycmF5KGMsIGQpKTsKICAgICAgICAgIGZvciAoZSA9ICIiOyBjIDwgZDsgKSB7CiAgICAgICAgICAgIHZhciBmID0gYVtjKytdOwogICAgICAgICAgICBpZiAoZiAmIDEyOCkgewogICAgICAgICAgICAgIHZhciBtID0gYVtjKytdICYgNjM7CiAgICAgICAgICAgICAgaWYgKDE5MiA9PSAoZiAmIDIyNCkpCiAgICAgICAgICAgICAgICBlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGYgJiAzMSkgPDwgNiB8IG0pOwogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIEMgPSBhW2MrK10gJiA2MzsKICAgICAgICAgICAgICAgIGYgPSAyMjQgPT0gKGYgJiAyNDApID8gKGYgJiAxNSkgPDwgMTIgfCBtIDw8IDYgfCBDIDogKGYgJiA3KSA8PCAxOCB8IG0gPDwgMTIgfCBDIDw8IDYgfCBhW2MrK10gJiA2MzsKICAgICAgICAgICAgICAgIDY1NTM2ID4gZiA/IGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShmKSA6IChmIC09IDY1NTM2LAogICAgICAgICAgICAgICAgICBlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYgfCBmID4+IDEwLCA1NjMyMCB8IGYgJiAxMDIzKSkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgIGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShmKQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9CiAgICAgICAgInVuZGVmaW5lZCIgIT09IHR5cGVvZiBUZXh0RGVjb2RlciAmJiBuZXcgVGV4dERlY29kZXIoInV0Zi0xNmxlIik7CiAgICAgICAgdmFyIHlhLCB6YSwgQWEsIEJhLCBDYSwgRGEsIEVhID0gYi5JTklUSUFMX01FTU9SWSB8fCA2NzEwODg2NDsKICAgICAgICBpZiAodGEgPSBiLndhc21NZW1vcnkgPyBiLndhc21NZW1vcnkgOiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsKICAgICAgICAgIGluaXRpYWw6IEVhIC8gNjU1MzYsCiAgICAgICAgICBtYXhpbXVtOiBFYSAvIDY1NTM2CiAgICAgICAgfSkpCiAgICAgICAgICB5YSA9IHRhLmJ1ZmZlcjsKICAgICAgICBFYSA9IHlhLmJ5dGVMZW5ndGg7CiAgICAgICAgdmFyIEZhID0geWE7CiAgICAgICAgeWEgPSBGYTsKICAgICAgICBiLkhFQVA4ID0gemEgPSBuZXcgSW50OEFycmF5KEZhKTsKICAgICAgICBiLkhFQVAxNiA9IG5ldyBJbnQxNkFycmF5KEZhKTsKICAgICAgICBiLkhFQVAzMiA9IEJhID0gbmV3IEludDMyQXJyYXkoRmEpOwogICAgICAgIGIuSEVBUFU4ID0gQWEgPSBuZXcgVWludDhBcnJheShGYSk7CiAgICAgICAgYi5IRUFQVTE2ID0gbmV3IFVpbnQxNkFycmF5KEZhKTsKICAgICAgICBiLkhFQVBVMzIgPSBuZXcgVWludDMyQXJyYXkoRmEpOwogICAgICAgIGIuSEVBUEYzMiA9IENhID0gbmV3IEZsb2F0MzJBcnJheShGYSk7CiAgICAgICAgYi5IRUFQRjY0ID0gRGEgPSBuZXcgRmxvYXQ2NEFycmF5KEZhKTsKICAgICAgICBCYVs4MDgwXSA9IDUyNzUzNjA7CiAgICAgICAgZnVuY3Rpb24gR2EoYSkgewogICAgICAgICAgZm9yICg7IDAgPCBhLmxlbmd0aDsgKSB7CiAgICAgICAgICAgIHZhciBjID0gYS5zaGlmdCgpOwogICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYykKICAgICAgICAgICAgICBjKGIpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB2YXIgZCA9IGMuS3k7CiAgICAgICAgICAgICAgIm51bWJlciIgPT09IHR5cGVvZiBkID8gdm9pZCAwID09PSBjLnZ5ID8gYi5keW5DYWxsX3YoZCkgOiBiLmR5bkNhbGxfdmkoZCwgYy52eSkgOiBkKHZvaWQgMCA9PT0gYy52eSA/IG51bGwgOiBjLnZ5KQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBIYSA9IFtdCiAgICAgICAgICAsIElhID0gW10KICAgICAgICAgICwgSmEgPSBbXQogICAgICAgICAgLCBLYSA9IFtdCiAgICAgICAgICAsIExhID0gITE7CiAgICAgICAgZnVuY3Rpb24gTWEoKSB7CiAgICAgICAgICB2YXIgYSA9IGIucHJlUnVuLnNoaWZ0KCk7CiAgICAgICAgICBIYS51bnNoaWZ0KGEpCiAgICAgICAgfQogICAgICAgIHZhciBOYSA9IDAKICAgICAgICAgICwgT2EgPSBudWxsCiAgICAgICAgICAsIFBhID0gbnVsbDsKICAgICAgICBiLnByZWxvYWRlZEltYWdlcyA9IHt9OwogICAgICAgIGIucHJlbG9hZGVkQXVkaW9zID0ge307CiAgICAgICAgZnVuY3Rpb24gbmEoYSkgewogICAgICAgICAgaWYgKGIub25BYm9ydCkKICAgICAgICAgICAgYi5vbkFib3J0KGEpOwogICAgICAgICAgYSArPSAiIjsKICAgICAgICAgIG9hKGEpOwogICAgICAgICAgcGEoYSk7CiAgICAgICAgICB2YSA9ICEwOwogICAgICAgICAgdGhyb3cgbmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcigiYWJvcnQoIiArIGEgKyAiKS4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4iKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gUWEoKSB7CiAgICAgICAgICB2YXIgYSA9IFJhOwogICAgICAgICAgcmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA/IGEuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpIDogMCA9PT0gYS5pbmRleE9mKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIikKICAgICAgICB9CiAgICAgICAgdmFyIFJhID0gImFtbW8ud2FzbS53YXNtIjsKICAgICAgICBpZiAoIVFhKCkpIHsKICAgICAgICAgIHZhciBTYSA9IFJhOwogICAgICAgICAgUmEgPSBiLmxvY2F0ZUZpbGUgPyBiLmxvY2F0ZUZpbGUoU2EsIGhhKSA6IGhhICsgU2EKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gVGEoKSB7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoc2EpCiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHNhKTsKICAgICAgICAgICAgaWYgKGthKQogICAgICAgICAgICAgIHJldHVybiBrYShSYSk7CiAgICAgICAgICAgIHRocm93ICJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCI7CiAgICAgICAgICB9IGNhdGNoIChhKSB7CiAgICAgICAgICAgIG5hKGEpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIFVhKCkgewogICAgICAgICAgcmV0dXJuIHNhIHx8ICFjYSAmJiAhZGEgfHwgImZ1bmN0aW9uIiAhPT0gdHlwZW9mIGZldGNoID8gbmV3IFByb21pc2UoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgIGEoVGEoKSkKICAgICAgICAgICAgfQogICAgICAgICAgKSA6IGZldGNoKFJhLCB7CiAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iCiAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgaWYgKCFhLm9rKQogICAgICAgICAgICAgIHRocm93ICJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICciICsgUmEgKyAiJyI7CiAgICAgICAgICAgIHJldHVybiBhLmFycmF5QnVmZmVyKCkKICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gVGEoKQogICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgdmFyIFZhID0gewogICAgICAgICAgMTg2NDogZnVuY3Rpb24oYSwgYywgZCwgZSwgZiwgbSwgQywgUCkgewogICAgICAgICAgICBhID0gYi5nZXRDYWNoZShiLkNvbmNyZXRlQ29udGFjdFJlc3VsdENhbGxiYWNrKVthXTsKICAgICAgICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KCJhZGRTaW5nbGVSZXN1bHQiKSkKICAgICAgICAgICAgICB0aHJvdyAiYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgQ29uY3JldGVDb250YWN0UmVzdWx0Q2FsbGJhY2s6OmFkZFNpbmdsZVJlc3VsdC4iOwogICAgICAgICAgICByZXR1cm4gYS5hZGRTaW5nbGVSZXN1bHQoYywgZCwgZSwgZiwgbSwgQywgUCkKICAgICAgICAgIH0sCiAgICAgICAgICAyNDI0OiBmdW5jdGlvbihhLCBjLCBkLCBlKSB7CiAgICAgICAgICAgIGEgPSBiLmdldENhY2hlKGIuRGVidWdEcmF3ZXIpW2FdOwogICAgICAgICAgICBpZiAoIWEuaGFzT3duUHJvcGVydHkoImRyYXdMaW5lIikpCiAgICAgICAgICAgICAgdGhyb3cgImEgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpkcmF3TGluZS4iOwogICAgICAgICAgICBhLmRyYXdMaW5lKGMsIGQsIGUpCiAgICAgICAgICB9LAogICAgICAgICAgMjY0OTogZnVuY3Rpb24oYSwgYywgZCwgZSwgZiwgbSkgewogICAgICAgICAgICBhID0gYi5nZXRDYWNoZShiLkRlYnVnRHJhd2VyKVthXTsKICAgICAgICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KCJkcmF3Q29udGFjdFBvaW50IikpCiAgICAgICAgICAgICAgdGhyb3cgImEgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpkcmF3Q29udGFjdFBvaW50LiI7CiAgICAgICAgICAgIGEuZHJhd0NvbnRhY3RQb2ludChjLCBkLCBlLCBmLCBtKQogICAgICAgICAgfSwKICAgICAgICAgIDI5MDY6IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgYSA9IGIuZ2V0Q2FjaGUoYi5EZWJ1Z0RyYXdlcilbYV07CiAgICAgICAgICAgIGlmICghYS5oYXNPd25Qcm9wZXJ0eSgicmVwb3J0RXJyb3JXYXJuaW5nIikpCiAgICAgICAgICAgICAgdGhyb3cgImEgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpyZXBvcnRFcnJvcldhcm5pbmcuIjsKICAgICAgICAgICAgYS5yZXBvcnRFcnJvcldhcm5pbmcoYykKICAgICAgICAgIH0sCiAgICAgICAgICAzMTUzOiBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICAgIGEgPSBiLmdldENhY2hlKGIuRGVidWdEcmF3ZXIpW2FdOwogICAgICAgICAgICBpZiAoIWEuaGFzT3duUHJvcGVydHkoImRyYXczZFRleHQiKSkKICAgICAgICAgICAgICB0aHJvdyAiYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgRGVidWdEcmF3ZXI6OmRyYXczZFRleHQuIjsKICAgICAgICAgICAgYS5kcmF3M2RUZXh0KGMsIGQpCiAgICAgICAgICB9LAogICAgICAgICAgMzM4MDogZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICBhID0gYi5nZXRDYWNoZShiLkRlYnVnRHJhd2VyKVthXTsKICAgICAgICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KCJzZXREZWJ1Z01vZGUiKSkKICAgICAgICAgICAgICB0aHJvdyAiYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgRGVidWdEcmF3ZXI6OnNldERlYnVnTW9kZS4iOwogICAgICAgICAgICBhLnNldERlYnVnTW9kZShjKQogICAgICAgICAgfSwKICAgICAgICAgIDM2MDY6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgYSA9IGIuZ2V0Q2FjaGUoYi5EZWJ1Z0RyYXdlcilbYV07CiAgICAgICAgICAgIGlmICghYS5oYXNPd25Qcm9wZXJ0eSgiZ2V0RGVidWdNb2RlIikpCiAgICAgICAgICAgICAgdGhyb3cgImEgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpnZXREZWJ1Z01vZGUuIjsKICAgICAgICAgICAgcmV0dXJuIGEuZ2V0RGVidWdNb2RlKCkKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIElhLnB1c2goewogICAgICAgICAgS3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBXYSgpCiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIFhhID0gW251bGwsIFtdLCBbXV07CiAgICAgICAgZnVuY3Rpb24gWWEoYSwgYykgewogICAgICAgICAgWmEgfHwgKFphID0gW10pOwogICAgICAgICAgdmFyIGQgPSBaYTsKICAgICAgICAgIGQubGVuZ3RoID0gMDsKICAgICAgICAgIGZvciAodmFyIGU7IGUgPSBBYVthKytdOyApCiAgICAgICAgICAgIDEwMCA9PT0gZSB8fCAxMDIgPT09IGUgPyAoYyA9IGMgKyA3ICYgLTgsCiAgICAgICAgICAgICAgZC5wdXNoKERhW2MgPj4gM10pLAogICAgICAgICAgICAgIGMgKz0gOCkgOiAoYyA9IGMgKyAzICYgLTQsCiAgICAgICAgICAgICAgZC5wdXNoKEJhW2MgPj4gMl0pLAogICAgICAgICAgICAgIGMgKz0gNCk7CiAgICAgICAgICByZXR1cm4gZAogICAgICAgIH0KICAgICAgICB2YXIgWmEsICRhID0gewogICAgICAgICAgaTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG5hKCkKICAgICAgICAgIH0sCiAgICAgICAgICBkOiBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICAgIGMgPSBZYShjLCBkKTsKICAgICAgICAgICAgcmV0dXJuIFZhW2FdLmFwcGx5KG51bGwsIGMpCiAgICAgICAgICB9LAogICAgICAgICAgYTogZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgICBjID0gWWEoYywgZCk7CiAgICAgICAgICAgIHJldHVybiBWYVthXS5hcHBseShudWxsLCBjKQogICAgICAgICAgfSwKICAgICAgICAgIGY6IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgICAgQWEuY29weVdpdGhpbihhLCBjLCBjICsgZCkKICAgICAgICAgIH0sCiAgICAgICAgICBnOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgbmEoIk9PTSIpCiAgICAgICAgICB9LAogICAgICAgICAgaDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICB9LAogICAgICAgICAgZTogZnVuY3Rpb24oKSB7fSwKICAgICAgICAgIGM6IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgZiA9IDAsIG0gPSAwOyBtIDwgZDsgbSsrKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgQyA9IEJhW2MgKyA4ICogbSA+PiAyXSwgUCA9IEJhW2MgKyAoOCAqIG0gKyA0KSA+PiAyXSwgaWEgPSAwOyBpYSA8IFA7IGlhKyspIHsKICAgICAgICAgICAgICAgIHZhciBuYiA9IEFhW0MgKyBpYV0KICAgICAgICAgICAgICAgICAgLCBXYiA9IFhhW2FdOwogICAgICAgICAgICAgICAgMCA9PT0gbmIgfHwgMTAgPT09IG5iID8gKCgxID09PSBhID8gb2EgOiBwYSkoeGEoV2IsIDApKSwKICAgICAgICAgICAgICAgICAgV2IubGVuZ3RoID0gMCkgOiBXYi5wdXNoKG5iKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmICs9IFAKICAgICAgICAgICAgfQogICAgICAgICAgICBCYVtlID4+IDJdID0gZjsKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgIH0sCiAgICAgICAgICBiOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBjID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgQmFbYSA+PiAyXSA9IGMgLyAxRTMgfCAwOwogICAgICAgICAgICBCYVthICsgNCA+PiAyXSA9IGMgJSAxRTMgKiAxRTMgfCAwOwogICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgfSwKICAgICAgICAgIG1lbW9yeTogdGEsCiAgICAgICAgICB0YWJsZTogdWEKICAgICAgICB9LCBhYiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZnVuY3Rpb24gYShmKSB7CiAgICAgICAgICAgIGIuYXNtID0gZi5leHBvcnRzOwogICAgICAgICAgICBOYS0tOwogICAgICAgICAgICBiLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMgJiYgYi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKE5hKTsKICAgICAgICAgICAgMCA9PSBOYSAmJiAobnVsbCAhPT0gT2EgJiYgKGNsZWFySW50ZXJ2YWwoT2EpLAogICAgICAgICAgICAgIE9hID0gbnVsbCksCiAgICAgICAgICAgIFBhICYmIChmID0gUGEsCiAgICAgICAgICAgICAgUGEgPSBudWxsLAogICAgICAgICAgICAgIGYoKSkpCiAgICAgICAgICB9CiAgICAgICAgICBmdW5jdGlvbiBjKGYpIHsKICAgICAgICAgICAgYShmLmluc3RhbmNlKQogICAgICAgICAgfQogICAgICAgICAgZnVuY3Rpb24gZChmKSB7CiAgICAgICAgICAgIHJldHVybiBVYSgpLnRoZW4oZnVuY3Rpb24obSkgewogICAgICAgICAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShtLCBlKQogICAgICAgICAgICB9KS50aGVuKGYsIGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgICBwYSgiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIiArIG0pOwogICAgICAgICAgICAgIG5hKG0pCiAgICAgICAgICAgIH0pCiAgICAgICAgICB9CiAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgYTogJGEKICAgICAgICAgIH07CiAgICAgICAgICBOYSsrOwogICAgICAgICAgYi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzICYmIGIubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhOYSk7CiAgICAgICAgICBpZiAoYi5pbnN0YW50aWF0ZVdhc20pCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmV0dXJuIGIuaW5zdGFudGlhdGVXYXNtKGUsIGEpCiAgICAgICAgICAgIH0gY2F0Y2ggKGYpIHsKICAgICAgICAgICAgICByZXR1cm4gcGEoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIgKyBmKSwKICAgICAgICAgICAgICAgICExCiAgICAgICAgICAgIH0KICAgICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBpZiAoc2EgfHwgImZ1bmN0aW9uIiAhPT0gdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nIHx8IFFhKCkgfHwgImZ1bmN0aW9uIiAhPT0gdHlwZW9mIGZldGNoKQogICAgICAgICAgICAgICAgcmV0dXJuIGQoYyk7CiAgICAgICAgICAgICAgZmV0Y2goUmEsIHsKICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iCiAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbihmKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZiwgZSkudGhlbihjLCBmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAgIHBhKCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIiArIG0pOwogICAgICAgICAgICAgICAgICBwYSgiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKTsKICAgICAgICAgICAgICAgICAgZChjKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICApKCk7CiAgICAgICAgICByZXR1cm4ge30KICAgICAgICB9KCk7CiAgICAgICAgYi5hc20gPSBhYjsKICAgICAgICB2YXIgV2EgPSBiLl9fX3dhc21fY2FsbF9jdG9ycyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdhID0gYi5fX193YXNtX2NhbGxfY3RvcnMgPSBiLmFzbS5qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0RGlzcGF0Y2hlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBiLmFzbS5rKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfcmF5VGVzdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoY2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9yYXlUZXN0XzMgPSBiLmFzbS5sKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0UGFpckNhY2hlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2dldFBhaXJDYWNoZV8wID0gYi5hc20ubSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2dldERpc3BhdGNoSW5mb18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9nZXREaXNwYXRjaEluZm9fMCA9IGIuYXNtLm4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5vKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGdiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2FkZENvbGxpc2lvbk9iamVjdF8yID0gYi5hc20ucCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2FkZENvbGxpc2lvbk9iamVjdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMyA9IGIuYXNtLnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9yZW1vdmVDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGliID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfcmVtb3ZlQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5yKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0QnJvYWRwaGFzZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoamIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9nZXRCcm9hZHBoYXNlXzAgPSBiLmFzbS5zKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfY29udmV4U3dlZXBUZXN0XzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2NvbnZleFN3ZWVwVGVzdF81ID0gYi5hc20udCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2NvbnRhY3RQYWlyVGVzdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9jb250YWN0UGFpclRlc3RfMyA9IGIuYXNtLnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9jb250YWN0VGVzdF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9jb250YWN0VGVzdF8yID0gYi5hc20udikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX3VwZGF0ZVNpbmdsZUFhYmJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9iID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gYi5hc20udykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBiLmFzbS54KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0RGVidWdEcmF3ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0RGVidWdEcmF3ZXJfMCA9IGIuYXNtLnkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9kZWJ1Z0RyYXdXb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9kZWJ1Z0RyYXdXb3JsZF8wID0gYi5hc20ueikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2RlYnVnRHJhd09iamVjdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9kZWJ1Z0RyYXdPYmplY3RfMyA9IGIuYXNtLkEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uQikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1YiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvblNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25TaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLkMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25TaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5EKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3YiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvblNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gYi5hc20uRSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4YiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvblNoYXBlX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25TaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLkYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25TaGFwZV9nZXRNYXJnaW5fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHliID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfZ2V0TWFyZ2luXzAgPSBiLmFzbS5HKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLkgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gYi5hc20uSSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRDb2xsaXNpb25TaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfZ2V0Q29sbGlzaW9uU2hhcGVfMCA9IGIuYXNtLkopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENvbnRhY3RQcm9jZXNzaW5nVGhyZXNob2xkXzEgPSBiLmFzbS5LKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldEFjdGl2YXRpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0QWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS5MKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEViID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9mb3JjZUFjdGl2YXRpb25TdGF0ZV8xID0gYi5hc20uTSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9hY3RpdmF0ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfYWN0aXZhdGVfMCA9IGIuYXNtLk4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfYWN0aXZhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2FjdGl2YXRlXzEgPSBiLmFzbS5PKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2lzQWN0aXZlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9pc0FjdGl2ZV8wID0gYi5hc20uUCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9pc0tpbmVtYXRpY09iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfaXNLaW5lbWF0aWNPYmplY3RfMCA9IGIuYXNtLlEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfaXNTdGF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2lzU3RhdGljT2JqZWN0XzAgPSBiLmFzbS5SKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2lzU3RhdGljT3JLaW5lbWF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2lzU3RhdGljT3JLaW5lbWF0aWNPYmplY3RfMCA9IGIuYXNtLlMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfZ2V0UmVzdGl0dXRpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFJlc3RpdHV0aW9uXzAgPSBiLmFzbS5UKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1iID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldEZyaWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRGcmljdGlvbl8wID0gYi5hc20uVSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRSb2xsaW5nRnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5iID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFJvbGxpbmdGcmljdGlvbl8wID0gYi5hc20uVikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9zZXRSZXN0aXR1dGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0UmVzdGl0dXRpb25fMSA9IGIuYXNtLlcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0RnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldEZyaWN0aW9uXzEgPSBiLmFzbS5YKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldFJvbGxpbmdGcmljdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Um9sbGluZ0ZyaWN0aW9uXzEgPSBiLmFzbS5ZKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFdvcmxkVHJhbnNmb3JtXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRXb3JsZFRyYW5zZm9ybV8wID0gYi5hc20uWikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRDb2xsaXNpb25GbGFnc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGIuYXNtLl8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFRiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENvbGxpc2lvbkZsYWdzXzEgPSBiLmFzbS4kKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFViID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldFdvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9zZXRXb3JsZFRyYW5zZm9ybV8xID0gYi5hc20uYWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFZiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENvbGxpc2lvblNoYXBlXzEgPSBiLmFzbS5iYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9zZXRDY2RNb3Rpb25UaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gYi5hc20uY2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFliID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENjZFN3ZXB0U3BoZXJlUmFkaXVzXzEgPSBiLmFzbS5kYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRVc2VySW5kZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFVzZXJJbmRleF8wID0gYi5hc20uZWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0VXNlckluZGV4XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9zZXRVc2VySW5kZXhfMSA9IGIuYXNtLmZhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFVzZXJQb2ludGVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRVc2VyUG9pbnRlcl8wID0gYi5hc20uZ2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0VXNlclBvaW50ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldFVzZXJQb2ludGVyXzEgPSBiLmFzbS5oYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBiLmFzbS5pYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfX19kZXN0cm95X19fMCA9IGIuYXNtLmphKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRBY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRBY3Rpb25fMSA9IGIuYXNtLmthKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9yZW1vdmVBY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9yZW1vdmVBY3Rpb25fMSA9IGIuYXNtLmxhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXRTb2x2ZXJJbmZvXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfZ2V0U29sdmVySW5mb18wID0gYi5hc20ubWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMSA9IGIuYXNtLm5hKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoamMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzIgPSBiLmFzbS5vYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18zID0gYi5hc20ucGEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2dldERpc3BhdGNoZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBiLmFzbS5xYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfcmF5VGVzdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX3JheVRlc3RfMyA9IGIuYXNtLnJhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXRQYWlyQ2FjaGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXRQYWlyQ2FjaGVfMCA9IGIuYXNtLnNhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG9jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaEluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaEluZm9fMCA9IGIuYXNtLnRhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHBjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMSA9IGIuYXNtLnVhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMiA9IGIuYXNtLnZhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMyA9IGIuYXNtLndhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9yZW1vdmVDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9yZW1vdmVDb2xsaXNpb25PYmplY3RfMSA9IGIuYXNtLnhhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXRCcm9hZHBoYXNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0YyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfZ2V0QnJvYWRwaGFzZV8wID0gYi5hc20ueWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnZleFN3ZWVwVGVzdF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnZleFN3ZWVwVGVzdF81ID0gYi5hc20uemEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnRhY3RQYWlyVGVzdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnRhY3RQYWlyVGVzdF8zID0gYi5hc20uQWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnRhY3RUZXN0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3YyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfY29udGFjdFRlc3RfMiA9IGIuYXNtLkJhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF91cGRhdGVTaW5nbGVBYWJiXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4YyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gYi5hc20uQ2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5YyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfc2V0RGVidWdEcmF3ZXJfMSA9IGIuYXNtLkRhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXREZWJ1Z0RyYXdlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoemMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2dldERlYnVnRHJhd2VyXzAgPSBiLmFzbS5FYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfZGVidWdEcmF3V29ybGRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdXb3JsZF8wID0gYi5hc20uRmEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2RlYnVnRHJhd09iamVjdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2RlYnVnRHJhd09iamVjdF8zID0gYi5hc20uR2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfX19kZXN0cm95X19fMCA9IGIuYXNtLkhhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHlwZWRDb25zdHJhaW50X2VuYWJsZUZlZWRiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFR5cGVkQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gYi5hc20uSWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUeXBlZENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFR5cGVkQ29uc3RyYWludF9nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMCA9IGIuYXNtLkphKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHlwZWRDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUeXBlZENvbnN0cmFpbnRfc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzEgPSBiLmFzbS5LYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFR5cGVkQ29uc3RyYWludF9nZXRQYXJhbV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUeXBlZENvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGIuYXNtLkxhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHlwZWRDb25zdHJhaW50X3NldFBhcmFtXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFR5cGVkQ29uc3RyYWludF9zZXRQYXJhbV8zID0gYi5hc20uTWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUeXBlZENvbnN0cmFpbnRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEljID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHlwZWRDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBiLmFzbS5OYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmNhdmVTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uY2F2ZVNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uT2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25jYXZlU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmNhdmVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLlBhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uY2F2ZVNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25jYXZlU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5RYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmNhdmVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25jYXZlU2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLlJhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2J0Q2Fwc3VsZVNoYXBlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9idENhcHN1bGVTaGFwZV8yID0gYi5hc20uU2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfc2V0TWFyZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLlRhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFBjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfZ2V0TWFyZ2luXzAgPSBiLmFzbS5VYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9nZXRVcEF4aXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldFVwQXhpc18wID0gYi5hc20uVmEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfZ2V0UmFkaXVzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9nZXRSYWRpdXNfMCA9IGIuYXNtLldhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldEhhbGZIZWlnaHRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldEhhbGZIZWlnaHRfMCA9IGIuYXNtLlhhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5ZYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20uWmEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLl9hKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uJGEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJRGVidWdEcmF3X2RyYXdMaW5lXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfZHJhd0xpbmVfMyA9IGIuYXNtLmFiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFljID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SURlYnVnRHJhd19kcmF3Q29udGFjdFBvaW50XzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfZHJhd0NvbnRhY3RQb2ludF81ID0gYi5hc20uYmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJRGVidWdEcmF3X3JlcG9ydEVycm9yV2FybmluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJRGVidWdEcmF3X3JlcG9ydEVycm9yV2FybmluZ18xID0gYi5hc20uY2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJRGVidWdEcmF3X2RyYXczZFRleHRfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SURlYnVnRHJhd19kcmF3M2RUZXh0XzIgPSBiLmFzbS5kYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfc2V0RGVidWdNb2RlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfc2V0RGVidWdNb2RlXzEgPSBiLmFzbS5lYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfZ2V0RGVidWdNb2RlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChiZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfZ2V0RGVidWdNb2RlXzAgPSBiLmFzbS5mYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SURlYnVnRHJhd19fX2Rlc3Ryb3lfX18wID0gYi5hc20uZ2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbl9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uX2J0RGVmYXVsdENvbGxpc2lvbkNvbmZpZ3VyYXRpb25fMCA9IGIuYXNtLmhiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdENvbGxpc2lvbkNvbmZpZ3VyYXRpb25fYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbl9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uXzEgPSBiLmFzbS5pYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uX19fZGVzdHJveV9fXzAgPSBiLmFzbS5qYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLmtiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaFNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20ubGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGlkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5tYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaFNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaFNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5uYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2J0R2hvc3RPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfYnRHaG9zdE9iamVjdF8wID0gYi5hc20ub2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXROdW1PdmVybGFwcGluZ09iamVjdHNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzXzAgPSBiLmFzbS5wYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2dldE92ZXJsYXBwaW5nT2JqZWN0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2dldE92ZXJsYXBwaW5nT2JqZWN0XzEgPSBiLmFzbS5xYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBuZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldEFuaXNvdHJvcGljRnJpY3Rpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gYi5hc20ucmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRDb2xsaXNpb25TaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRDb2xsaXNpb25TaGFwZV8wID0gYi5hc20uc2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gYi5hc20udGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRBY3RpdmF0aW9uU3RhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0QWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS51YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCByZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS52YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2FjdGl2YXRlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChzZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2FjdGl2YXRlXzAgPSBiLmFzbS53YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2FjdGl2YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2FjdGl2YXRlXzEgPSBiLmFzbS54YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzQWN0aXZlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzQWN0aXZlXzAgPSBiLmFzbS55YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzS2luZW1hdGljT2JqZWN0XzAgPSBiLmFzbS56YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzU3RhdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzU3RhdGljT2JqZWN0XzAgPSBiLmFzbS5BYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzU3RhdGljT3JLaW5lbWF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfaXNTdGF0aWNPcktpbmVtYXRpY09iamVjdF8wID0gYi5hc20uQmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRSZXN0aXR1dGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRSZXN0aXR1dGlvbl8wID0gYi5hc20uQ2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgemQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRGcmljdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoemQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRGcmljdGlvbl8wID0gYi5hc20uRGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRSb2xsaW5nRnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBiLmFzbS5FYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldFJlc3RpdHV0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldFJlc3RpdHV0aW9uXzEgPSBiLmFzbS5GYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldEZyaWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldEZyaWN0aW9uXzEgPSBiLmFzbS5HYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldFJvbGxpbmdGcmljdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGIuYXNtLkhiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGIuYXNtLkliKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGIuYXNtLkpiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGIuYXNtLktiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGIuYXNtLkxiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGIuYXNtLk1iKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEpkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q2NkTW90aW9uVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gYi5hc20uTmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gYi5hc20uT2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRVc2VySW5kZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0VXNlckluZGV4XzAgPSBiLmFzbS5QYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldFVzZXJJbmRleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRVc2VySW5kZXhfMSA9IGIuYXNtLlFiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0VXNlclBvaW50ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0VXNlclBvaW50ZXJfMCA9IGIuYXNtLlJiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0VXNlclBvaW50ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0VXNlclBvaW50ZXJfMSA9IGIuYXNtLlNiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFBkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0QnJvYWRwaGFzZUhhbmRsZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBiLmFzbS5UYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X19fZGVzdHJveV9fXzAgPSBiLmFzbS5VYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZV9idENvbmVTaGFwZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVfYnRDb25lU2hhcGVfMiA9IGIuYXNtLlZiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5XYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFRkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20uWGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLlliKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uWmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRBY3Rpb25JbnRlcmZhY2VfdXBkYXRlQWN0aW9uXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEFjdGlvbkludGVyZmFjZV91cGRhdGVBY3Rpb25fMiA9IGIuYXNtLl9iKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QWN0aW9uSW50ZXJmYWNlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEFjdGlvbkludGVyZmFjZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uJGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2J0VmVjdG9yM18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2J0VmVjdG9yM18wID0gYi5hc20uYWMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWmQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2J0VmVjdG9yM18zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2J0VmVjdG9yM18zID0gYi5hc20uYmMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2xlbmd0aF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2xlbmd0aF8wID0gYi5hc20uY2MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3hfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM194XzAgPSBiLmFzbS5kYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfeV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3lfMCA9IGIuYXNtLmVjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM196XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfel8wID0gYi5hc20uZmMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3NldFhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19zZXRYXzEgPSBiLmFzbS5nYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfc2V0WV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3NldFlfMSA9IGIuYXNtLmhjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19zZXRaXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfc2V0Wl8xID0gYi5hc20uaWMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ2UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3NldFZhbHVlXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfc2V0VmFsdWVfMyA9IGIuYXNtLmpjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19ub3JtYWxpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19ub3JtYWxpemVfMCA9IGIuYXNtLmtjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19yb3RhdGVfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19yb3RhdGVfMiA9IGIuYXNtLmxjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19kb3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19kb3RfMSA9IGIuYXNtLm1jKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9tdWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9tdWxfMSA9IGIuYXNtLm5jKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGxlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9hZGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9hZGRfMSA9IGIuYXNtLm9jKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9zdWJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG1lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9zdWJfMSA9IGIuYXNtLnBjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX19fZGVzdHJveV9fXzAgPSBiLmFzbS5xYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJfY2FzdFJheV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlUmF5Y2FzdGVyX2Nhc3RSYXlfMyA9IGIuYXNtLnJjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3Rlcl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlUmF5Y2FzdGVyX19fZGVzdHJveV9fXzAgPSBiLmFzbS5zYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3hfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfeF8wID0gYi5hc20udGMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF95XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3lfMCA9IGIuYXNtLnVjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfel8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc2UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF96XzAgPSBiLmFzbS52YykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0ZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3dfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfd18wID0gYi5hc20ud2MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF9zZXRYXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1ZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3NldFhfMSA9IGIuYXNtLnhjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfc2V0WV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF9zZXRZXzEgPSBiLmFzbS55YykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3ZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3NldFpfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfc2V0Wl8xID0gYi5hc20uemMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF9zZXRXXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4ZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3NldFdfMSA9IGIuYXNtLkFjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfX19kZXN0cm95X19fMCA9IGIuYXNtLkJjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9idEN5bGluZGVyU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9idEN5bGluZGVyU2hhcGVfMSA9IGIuYXNtLkNjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLkRjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9nZXRNYXJnaW5fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9nZXRNYXJnaW5fMCA9IGIuYXNtLkVjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLkZjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLkdjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLkhjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5JYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR2UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfNCA9IGIuYXNtLkpjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldEdyYXZpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldEdyYXZpdHlfMSA9IGIuYXNtLktjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2dldEdyYXZpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2dldEdyYXZpdHlfMCA9IGIuYXNtLkxjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZFJpZ2lkQm9keV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzEgPSBiLmFzbS5NYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9hZGRSaWdpZEJvZHlfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZFJpZ2lkQm9keV8zID0gYi5hc20uTmMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfcmVtb3ZlUmlnaWRCb2R5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9yZW1vdmVSaWdpZEJvZHlfMSA9IGIuYXNtLk9jKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMSA9IGIuYXNtLlBjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMiA9IGIuYXNtLlFjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3JlbW92ZUNvbnN0cmFpbnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3JlbW92ZUNvbnN0cmFpbnRfMSA9IGIuYXNtLlJjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFBlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3N0ZXBTaW11bGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zdGVwU2ltdWxhdGlvbl8xID0gYi5hc20uU2MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc3RlcFNpbXVsYXRpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3N0ZXBTaW11bGF0aW9uXzIgPSBiLmFzbS5UYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zdGVwU2ltdWxhdGlvbl8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc3RlcFNpbXVsYXRpb25fMyA9IGIuYXNtLlVjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldENvbnRhY3RBZGRlZENhbGxiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zZXRDb250YWN0QWRkZWRDYWxsYmFja18xID0gYi5hc20uVmMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0Q29udGFjdFByb2Nlc3NlZENhbGxiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zZXRDb250YWN0UHJvY2Vzc2VkQ2FsbGJhY2tfMSA9IGIuYXNtLldjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldENvbnRhY3REZXN0cm95ZWRDYWxsYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0Q29udGFjdERlc3Ryb3llZENhbGxiYWNrXzEgPSBiLmFzbS5YYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBiLmFzbS5ZYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9yYXlUZXN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9yYXlUZXN0XzMgPSBiLmFzbS5aYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXRQYWlyQ2FjaGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2dldFBhaXJDYWNoZV8wID0gYi5hc20uX2MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZ2V0RGlzcGF0Y2hJbmZvXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaEluZm9fMCA9IGIuYXNtLiRjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbGxpc2lvbk9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5hZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbGxpc2lvbk9iamVjdF8yID0gYi5hc20uYmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMyA9IGIuYXNtLmNkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3JlbW92ZUNvbGxpc2lvbk9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfcmVtb3ZlQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5kZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXRCcm9hZHBoYXNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXRCcm9hZHBoYXNlXzAgPSBiLmFzbS5lZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9jb252ZXhTd2VlcFRlc3RfNSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2NvbnZleFN3ZWVwVGVzdF81ID0gYi5hc20uZmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfY29udGFjdFBhaXJUZXN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9jb250YWN0UGFpclRlc3RfMyA9IGIuYXNtLmdkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2NvbnRhY3RUZXN0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9jb250YWN0VGVzdF8yID0gYi5hc20uaGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gYi5hc20uaWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0RGVidWdEcmF3ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBiLmFzbS5qZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXREZWJ1Z0RyYXdlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoamYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZ2V0RGVidWdEcmF3ZXJfMCA9IGIuYXNtLmtkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2RlYnVnRHJhd1dvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdXb3JsZF8wID0gYi5hc20ubGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZGVidWdEcmF3T2JqZWN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChsZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdPYmplY3RfMyA9IGIuYXNtLm1kKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1mID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZEFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYWRkQWN0aW9uXzEgPSBiLmFzbS5uZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBuZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9yZW1vdmVBY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5mID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3JlbW92ZUFjdGlvbl8xID0gYi5hc20ub2QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZ2V0U29sdmVySW5mb18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZ2V0U29sdmVySW5mb18wID0gYi5hc20ucGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHBmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzEgPSBiLmFzbS5xZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMiA9IGIuYXNtLnJkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18zID0gYi5hc20uc2QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX19fZGVzdHJveV9fXzAgPSBiLmFzbS50ZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0ZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLnVkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4U2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1ZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20udmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4U2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS53ZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3ZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFNoYXBlX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAod2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLnhkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4U2hhcGVfZ2V0TWFyZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4ZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFNoYXBlX2dldE1hcmdpbl8wID0gYi5hc20ueWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uemQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgemYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVyX2dldE51bU1hbmlmb2xkc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoemYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVyX2dldE51bU1hbmlmb2xkc18wID0gYi5hc20uQWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVyX2dldE1hbmlmb2xkQnlJbmRleEludGVybmFsXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChBZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJfZ2V0TWFuaWZvbGRCeUluZGV4SW50ZXJuYWxfMSA9IGIuYXNtLkJkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlcl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVyX19fZGVzdHJveV9fXzAgPSBiLmFzbS5DZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfMyA9IGIuYXNtLkRkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50XzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF81ID0gYi5hc20uRWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0TGluZWFyTG93ZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0TGluZWFyTG93ZXJMaW1pdF8xID0gYi5hc20uRmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0TGluZWFyVXBwZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0TGluZWFyVXBwZXJMaW1pdF8xID0gYi5hc20uR2QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0QW5ndWxhckxvd2VyTGltaXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X3NldEFuZ3VsYXJMb3dlckxpbWl0XzEgPSBiLmFzbS5IZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9zZXRBbmd1bGFyVXBwZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0QW5ndWxhclVwcGVyTGltaXRfMSA9IGIuYXNtLklkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2dldEZyYW1lT2Zmc2V0QV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfZ2V0RnJhbWVPZmZzZXRBXzAgPSBiLmFzbS5KZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLktkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5MZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20uTWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1mID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5OZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLk9kKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9mID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uUGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTdHJpZGluZ01lc2hJbnRlcmZhY2Vfc2V0U2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTdHJpZGluZ01lc2hJbnRlcmZhY2Vfc2V0U2NhbGluZ18xID0gYi5hc20uUWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTdHJpZGluZ01lc2hJbnRlcmZhY2VfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFFmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3RyaWRpbmdNZXNoSW50ZXJmYWNlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5SZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX2dldFdvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX2dldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS5TZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX3NldFdvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX3NldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS5UZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5VZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db252ZXhSZXN1bHRDYWxsYmFja19oYXNIaXRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2hhc0hpdF8wID0gYi5hc20uVmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFZmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBiLmFzbS5XZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMSA9IGIuYXNtLlhkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGIuYXNtLllkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFlmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMSA9IGIuYXNtLlpkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFpmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uXzAgPSBiLmFzbS5fZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gYi5hc20uJGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29udmV4UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGFnID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBiLmFzbS5hZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db250YWN0UmVzdWx0Q2FsbGJhY2tfYWRkU2luZ2xlUmVzdWx0XzcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChiZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db250YWN0UmVzdWx0Q2FsbGJhY2tfYWRkU2luZ2xlUmVzdWx0XzcgPSBiLmFzbS5iZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db250YWN0UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNnID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnRhY3RSZXN1bHRDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gYi5hc20uY2UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVNvbHZlcl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVNvbHZlcl9fX2Rlc3Ryb3lfX18wID0gYi5hc20uZGUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19oYXNIaXRfMCA9IGIuYXNtLmVlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8wID0gYi5hc20uZmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS5nZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzAgPSBiLmFzbS5oZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBiLmFzbS5pZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGpnID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gYi5hc20uamUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb25fMSA9IGIuYXNtLmtlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGxnID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uT2JqZWN0XzAgPSBiLmFzbS5sZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG1nID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gYi5hc20ubWUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbmcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5nID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBiLmFzbS5uZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hdHJpeDN4M19zZXRFdWxlclpZWF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYXRyaXgzeDNfc2V0RXVsZXJaWVhfMyA9IGIuYXNtLm9lKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWF0cml4M3gzX2dldFJvdGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hdHJpeDN4M19nZXRSb3RhdGlvbl8xID0gYi5hc20ucGUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYXRyaXgzeDNfZ2V0Um93XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hdHJpeDN4M19nZXRSb3dfMSA9IGIuYXNtLnFlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWF0cml4M3gzX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hdHJpeDN4M19fX2Rlc3Ryb3lfX18wID0gYi5hc20ucmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTY2FsYXJBcnJheV9zaXplXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChzZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNjYWxhckFycmF5X3NpemVfMCA9IGIuYXNtLnNlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2NhbGFyQXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2NhbGFyQXJyYXlfYXRfMSA9IGIuYXNtLnRlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2NhbGFyQXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2NhbGFyQXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLnVlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tMU1RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tMU1RfMCA9IGIuYXNtLnZlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tMU1RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tMU1RfMSA9IGIuYXNtLndlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tBU1RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tBU1RfMCA9IGIuYXNtLnhlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHlnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tBU1RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHlnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tBU1RfMSA9IGIuYXNtLnllKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tWU1RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tWU1RfMCA9IGIuYXNtLnplKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tWU1RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tWU1RfMSA9IGIuYXNtLkFlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2ZsYWdzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9NYXRlcmlhbF9nZXRfbV9mbGFnc18wID0gYi5hc20uQmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTWF0ZXJpYWxfc2V0X21fZmxhZ3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2ZsYWdzXzEgPSBiLmFzbS5DZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9NYXRlcmlhbF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTWF0ZXJpYWxfX19kZXN0cm95X19fMCA9IGIuYXNtLkRlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdGltZVN0ZXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdGltZVN0ZXBfMCA9IGIuYXNtLkVlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdGltZVN0ZXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdGltZVN0ZXBfMSA9IGIuYXNtLkZlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fc3RlcENvdW50XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX3N0ZXBDb3VudF8wID0gYi5hc20uR2UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV9zdGVwQ291bnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fc3RlcENvdW50XzEgPSBiLmFzbS5IZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX2Rpc3BhdGNoRnVuY18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV9kaXNwYXRjaEZ1bmNfMCA9IGIuYXNtLkllKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEpnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fZGlzcGF0Y2hGdW5jXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2Rpc3BhdGNoRnVuY18xID0gYi5hc20uSmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV90aW1lT2ZJbXBhY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdGltZU9mSW1wYWN0XzAgPSBiLmFzbS5LZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX3RpbWVPZkltcGFjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV90aW1lT2ZJbXBhY3RfMSA9IGIuYXNtLkxlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1nID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdXNlQ29udGludW91c18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV91c2VDb250aW51b3VzXzAgPSBiLmFzbS5NZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX3VzZUNvbnRpbnVvdXNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5nID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdXNlQ29udGludW91c18xID0gYi5hc20uTmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV9lbmFibGVTYXRDb252ZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9nID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fZW5hYmxlU2F0Q29udmV4XzAgPSBiLmFzbS5PZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2VuYWJsZVNhdENvbnZleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV9lbmFibGVTYXRDb252ZXhfMSA9IGIuYXNtLlBlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fZW5hYmxlU1BVXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX2VuYWJsZVNQVV8wID0gYi5hc20uUWUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUmcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV9lbmFibGVTUFVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fZW5hYmxlU1BVXzEgPSBiLmFzbS5SZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX3VzZUVwYV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV91c2VFcGFfMCA9IGIuYXNtLlNlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdXNlRXBhXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX3VzZUVwYV8xID0gYi5hc20uVGUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV9hbGxvd2VkQ2NkUGVuZXRyYXRpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fYWxsb3dlZENjZFBlbmV0cmF0aW9uXzAgPSBiLmFzbS5VZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2FsbG93ZWRDY2RQZW5ldHJhdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVmcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV9hbGxvd2VkQ2NkUGVuZXRyYXRpb25fMSA9IGIuYXNtLlZlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdXNlQ29udmV4Q29uc2VydmF0aXZlRGlzdGFuY2VVdGlsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX3VzZUNvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVXRpbF8wID0gYi5hc20uV2UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV91c2VDb252ZXhDb25zZXJ2YXRpdmVEaXN0YW5jZVV0aWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdXNlQ29udmV4Q29uc2VydmF0aXZlRGlzdGFuY2VVdGlsXzEgPSBiLmFzbS5YZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkXzAgPSBiLmFzbS5ZZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChaZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkXzEgPSBiLmFzbS5aZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX19fZGVzdHJveV9fXzAgPSBiLmFzbS5fZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25DU18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX2dldF9tX2NoYXNzaXNDb25uZWN0aW9uQ1NfMCA9IGIuYXNtLiRlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9jaGFzc2lzQ29ubmVjdGlvbkNTXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChiaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25DU18xID0gYi5hc20uYWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX2dldF9tX3doZWVsRGlyZWN0aW9uQ1NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV93aGVlbERpcmVjdGlvbkNTXzAgPSBiLmFzbS5iZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxEaXJlY3Rpb25DU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3doZWVsRGlyZWN0aW9uQ1NfMSA9IGIuYXNtLmNmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV93aGVlbEF4bGVDU18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX2dldF9tX3doZWVsQXhsZUNTXzAgPSBiLmFzbS5kZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxBeGxlQ1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV93aGVlbEF4bGVDU18xID0gYi5hc20uZWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX2dldF9tX3N1c3BlbnNpb25SZXN0TGVuZ3RoXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGhfMCA9IGIuYXNtLmZmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9zdXNwZW5zaW9uUmVzdExlbmd0aF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3N1c3BlbnNpb25SZXN0TGVuZ3RoXzEgPSBiLmFzbS5nZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzAgPSBiLmFzbS5oZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzEgPSBiLmFzbS5qZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBraCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fd2hlZWxSYWRpdXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV93aGVlbFJhZGl1c18wID0gYi5hc20ua2YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3doZWVsUmFkaXVzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChsaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxSYWRpdXNfMSA9IGIuYXNtLmxmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1oID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18wID0gYi5hc20ubWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3N1c3BlbnNpb25TdGlmZm5lc3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5oID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzXzEgPSBiLmFzbS5uZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzAgPSBiLmFzbS5vZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzEgPSBiLmFzbS5wZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV93aGVlbHNEYW1waW5nUmVsYXhhdGlvbl8wID0gYi5hc20ucWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3doZWVsc0RhbXBpbmdSZWxheGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb25fMSA9IGIuYXNtLnJmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGIuYXNtLnNmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9mcmljdGlvblNsaXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9mcmljdGlvblNsaXBfMSA9IGIuYXNtLnRmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGIuYXNtLnVmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGIuYXNtLnZmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9iSXNGcm9udFdoZWVsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3aCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fYklzRnJvbnRXaGVlbF8wID0gYi5hc20ud2YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX2JJc0Zyb250V2hlZWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9iSXNGcm9udFdoZWVsXzEgPSBiLmFzbS54ZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5aCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHloID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20ueWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgemggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6aCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfMSA9IGIuYXNtLnpmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlXzIgPSBiLmFzbS5BZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLkJmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20uQ2YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5EZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBFaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLkVmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfZ2V0TWFyZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX2dldE1hcmdpbl8wID0gYi5hc20uRmYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uR2YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCcm9hZHBoYXNlSW50ZXJmYWNlX2dldE92ZXJsYXBwaW5nUGFpckNhY2hlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VJbnRlcmZhY2VfZ2V0T3ZlcmxhcHBpbmdQYWlyQ2FjaGVfMCA9IGIuYXNtLkhmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEloID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnJvYWRwaGFzZUludGVyZmFjZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCcm9hZHBoYXNlSW50ZXJmYWNlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5JZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvXzMgPSBiLmFzbS5KZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvXzQgPSBiLmFzbS5LZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fbGluZWFyRGFtcGluZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2xpbmVhckRhbXBpbmdfMCA9IGIuYXNtLkxmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1oID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9saW5lYXJEYW1waW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fbGluZWFyRGFtcGluZ18xID0gYi5hc20uTWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2FuZ3VsYXJEYW1waW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYW5ndWxhckRhbXBpbmdfMCA9IGIuYXNtLk5mKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9oID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9hbmd1bGFyRGFtcGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2FuZ3VsYXJEYW1waW5nXzEgPSBiLmFzbS5PZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fZnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9mcmljdGlvbl8wID0gYi5hc20uUGYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2ZyaWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fZnJpY3Rpb25fMSA9IGIuYXNtLlFmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9yb2xsaW5nRnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9yb2xsaW5nRnJpY3Rpb25fMCA9IGIuYXNtLlJmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9yb2xsaW5nRnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9yb2xsaW5nRnJpY3Rpb25fMSA9IGIuYXNtLlNmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9yZXN0aXR1dGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX3Jlc3RpdHV0aW9uXzAgPSBiLmFzbS5UZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fcmVzdGl0dXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9yZXN0aXR1dGlvbl8xID0gYi5hc20uVWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2xpbmVhclNsZWVwaW5nVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fbGluZWFyU2xlZXBpbmdUaHJlc2hvbGRfMCA9IGIuYXNtLlZmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9saW5lYXJTbGVlcGluZ1RocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2xpbmVhclNsZWVwaW5nVGhyZXNob2xkXzEgPSBiLmFzbS5XZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYW5ndWxhclNsZWVwaW5nVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYW5ndWxhclNsZWVwaW5nVGhyZXNob2xkXzAgPSBiLmFzbS5YZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYW5ndWxhclNsZWVwaW5nVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYW5ndWxhclNsZWVwaW5nVGhyZXNob2xkXzEgPSBiLmFzbS5ZZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbERhbXBpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFpoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9hZGRpdGlvbmFsRGFtcGluZ18wID0gYi5hc20uWmYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2FkZGl0aW9uYWxEYW1waW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbERhbXBpbmdfMSA9IGIuYXNtLl9mKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9hZGRpdGlvbmFsRGFtcGluZ0ZhY3Rvcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2FkZGl0aW9uYWxEYW1waW5nRmFjdG9yXzAgPSBiLmFzbS4kZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbERhbXBpbmdGYWN0b3JfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9hZGRpdGlvbmFsRGFtcGluZ0ZhY3Rvcl8xID0gYi5hc20uYWcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY2kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2FkZGl0aW9uYWxMaW5lYXJEYW1waW5nVGhyZXNob2xkU3FyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbExpbmVhckRhbXBpbmdUaHJlc2hvbGRTcXJfMCA9IGIuYXNtLmJnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9hZGRpdGlvbmFsTGluZWFyRGFtcGluZ1RocmVzaG9sZFNxcl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2FkZGl0aW9uYWxMaW5lYXJEYW1waW5nVGhyZXNob2xkU3FyXzEgPSBiLmFzbS5jZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nVGhyZXNob2xkU3FyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nVGhyZXNob2xkU3FyXzAgPSBiLmFzbS5kZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nVGhyZXNob2xkU3FyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nVGhyZXNob2xkU3FyXzEgPSBiLmFzbS5lZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nRmFjdG9yXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nRmFjdG9yXzAgPSBiLmFzbS5mZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nRmFjdG9yXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nRmFjdG9yXzEgPSBiLmFzbS5nZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGlpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20uaGcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgamkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Db25maWd1cmF0aW9uX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkNvbmZpZ3VyYXRpb25fX19kZXN0cm95X19fMCA9IGIuYXNtLmlnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGVyc2lzdGVudE1hbmlmb2xkX2J0UGVyc2lzdGVudE1hbmlmb2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChraSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9idFBlcnNpc3RlbnRNYW5pZm9sZF8wID0gYi5hc20uamcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQZXJzaXN0ZW50TWFuaWZvbGRfZ2V0Qm9keTBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGVyc2lzdGVudE1hbmlmb2xkX2dldEJvZHkwXzAgPSBiLmFzbS5rZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9nZXRCb2R5MV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQZXJzaXN0ZW50TWFuaWZvbGRfZ2V0Qm9keTFfMCA9IGIuYXNtLmxnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5pID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGVyc2lzdGVudE1hbmlmb2xkX2dldE51bUNvbnRhY3RzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChuaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9nZXROdW1Db250YWN0c18wID0gYi5hc20ubWcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQZXJzaXN0ZW50TWFuaWZvbGRfZ2V0Q29udGFjdFBvaW50XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9nZXRDb250YWN0UG9pbnRfMSA9IGIuYXNtLm5nKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGVyc2lzdGVudE1hbmlmb2xkX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9fX2Rlc3Ryb3lfX18wID0gYi5hc20ub2cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2J0Q29tcG91bmRTaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2J0Q29tcG91bmRTaGFwZV8wID0gYi5hc20ucGcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2J0Q29tcG91bmRTaGFwZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2J0Q29tcG91bmRTaGFwZV8xID0gYi5hc20ucWcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc2kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2FkZENoaWxkU2hhcGVfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9hZGRDaGlsZFNoYXBlXzIgPSBiLmFzbS5yZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0aSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbXBvdW5kU2hhcGVfcmVtb3ZlQ2hpbGRTaGFwZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX3JlbW92ZUNoaWxkU2hhcGVfMSA9IGIuYXNtLnNnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9yZW1vdmVDaGlsZFNoYXBlQnlJbmRleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX3JlbW92ZUNoaWxkU2hhcGVCeUluZGV4XzEgPSBiLmFzbS50ZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2aSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbXBvdW5kU2hhcGVfZ2V0TnVtQ2hpbGRTaGFwZXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXROdW1DaGlsZFNoYXBlc18wID0gYi5hc20udWcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd2kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2dldENoaWxkU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRDaGlsZFNoYXBlXzEgPSBiLmFzbS52ZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4aSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbXBvdW5kU2hhcGVfdXBkYXRlQ2hpbGRUcmFuc2Zvcm1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV91cGRhdGVDaGlsZFRyYW5zZm9ybV8yID0gYi5hc20ud2cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX3VwZGF0ZUNoaWxkVHJhbnNmb3JtXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5aSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbXBvdW5kU2hhcGVfdXBkYXRlQ2hpbGRUcmFuc2Zvcm1fMyA9IGIuYXNtLnhnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHppID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHppID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLnlnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRNYXJnaW5fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRNYXJnaW5fMCA9IGIuYXNtLnpnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLkFnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLkJnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLkNnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5EZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrXzIgPSBiLmFzbS5FZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBiLmFzbS5GZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29udmV4RnJvbVdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29udmV4RnJvbVdvcmxkXzAgPSBiLmFzbS5HZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29udmV4RnJvbVdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29udmV4RnJvbVdvcmxkXzEgPSBiLmFzbS5IZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29udmV4VG9Xb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbnZleFRvV29ybGRfMCA9IGIuYXNtLklnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jb252ZXhUb1dvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29udmV4VG9Xb3JsZF8xID0gYi5hc20uSmcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2hpdE5vcm1hbFdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0Tm9ybWFsV29ybGRfMCA9IGIuYXNtLktnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1pID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9oaXROb3JtYWxXb3JsZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2hpdE5vcm1hbFdvcmxkXzEgPSBiLmFzbS5MZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0UG9pbnRXb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2hpdFBvaW50V29ybGRfMCA9IGIuYXNtLk1nKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9pID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9oaXRQb2ludFdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21faGl0UG9pbnRXb3JsZF8xID0gYi5hc20uTmcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMCA9IGIuYXNtLk9nKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS5QZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGIuYXNtLlFnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18xID0gYi5hc20uUmcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gYi5hc20uU2cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gYi5hc20uVGcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGIuYXNtLlVnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfMiA9IGIuYXNtLlZnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19oYXNIaXRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19oYXNIaXRfMCA9IGIuYXNtLldnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jb2xsaXNpb25PYmplY3RzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uT2JqZWN0c18wID0gYi5hc20uWGcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdHNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFppID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25PYmplY3RzXzEgPSBiLmFzbS5ZZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5RnJvbVdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5RnJvbVdvcmxkXzAgPSBiLmFzbS5aZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5RnJvbVdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5RnJvbVdvcmxkXzEgPSBiLmFzbS5fZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5VG9Xb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX3JheVRvV29ybGRfMCA9IGIuYXNtLiRnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9yYXlUb1dvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5VG9Xb3JsZF8xID0gYi5hc20uYWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdE5vcm1hbFdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0Tm9ybWFsV29ybGRfMCA9IGIuYXNtLmJoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9oaXROb3JtYWxXb3JsZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2hpdE5vcm1hbFdvcmxkXzEgPSBiLmFzbS5jaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0UG9pbnRXb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdFBvaW50V29ybGRfMCA9IGIuYXNtLmRoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGdqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9oaXRQb2ludFdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21faGl0UG9pbnRXb3JsZF8xID0gYi5hc20uZWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdEZyYWN0aW9uc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdEZyYWN0aW9uc18wID0gYi5hc20uZmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2hpdEZyYWN0aW9uc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2hpdEZyYWN0aW9uc18xID0gYi5hc20uZ2gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgamogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMCA9IGIuYXNtLmhoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoa2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS5paCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGIuYXNtLmpoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1qID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18xID0gYi5hc20ua2gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gYi5hc20ubGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gYi5hc20ubWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gYi5hc20ubmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gYi5hc20ub2gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGIuYXNtLnBoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNqID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RNYXRlcmlhbEFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNqID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RNYXRlcmlhbEFycmF5X3NpemVfMCA9IGIuYXNtLnFoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRqID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RNYXRlcmlhbEFycmF5X2F0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0aiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90TWF0ZXJpYWxBcnJheV9hdF8xID0gYi5hc20ucmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfdE1hdGVyaWFsQXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RNYXRlcmlhbEFycmF5X19fZGVzdHJveV9fXzAgPSBiLmFzbS5zaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2aiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRWZWhpY2xlUmF5Y2FzdGVyX2J0RGVmYXVsdFZlaGljbGVSYXljYXN0ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFZlaGljbGVSYXljYXN0ZXJfYnREZWZhdWx0VmVoaWNsZVJheWNhc3Rlcl8xID0gYi5hc20udGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0VmVoaWNsZVJheWNhc3Rlcl9jYXN0UmF5XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3aiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRWZWhpY2xlUmF5Y2FzdGVyX2Nhc3RSYXlfMyA9IGIuYXNtLnVoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFZlaGljbGVSYXljYXN0ZXJfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFZlaGljbGVSYXljYXN0ZXJfX19kZXN0cm95X19fMCA9IGIuYXNtLnZoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHlqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9idEVtcHR5U2hhcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHlqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9idEVtcHR5U2hhcGVfMCA9IGIuYXNtLndoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLnhoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLnloKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLnpoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRFbXB0eVNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5BaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0cmFpbnRTZXR0aW5nX2J0Q29uc3RyYWludFNldHRpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfYnRDb25zdHJhaW50U2V0dGluZ18wID0gYi5hc20uQmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19nZXRfbV90YXVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfZ2V0X21fdGF1XzAgPSBiLmFzbS5DaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0cmFpbnRTZXR0aW5nX3NldF9tX3RhdV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19zZXRfbV90YXVfMSA9IGIuYXNtLkRoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfZ2V0X21fZGFtcGluZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19nZXRfbV9kYW1waW5nXzAgPSBiLmFzbS5FaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0cmFpbnRTZXR0aW5nX3NldF9tX2RhbXBpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfc2V0X21fZGFtcGluZ18xID0gYi5hc20uRmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19nZXRfbV9pbXB1bHNlQ2xhbXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfZ2V0X21faW1wdWxzZUNsYW1wXzAgPSBiLmFzbS5HaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0cmFpbnRTZXR0aW5nX3NldF9tX2ltcHVsc2VDbGFtcF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19zZXRfbV9pbXB1bHNlQ2xhbXBfMSA9IGIuYXNtLkhoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfX19kZXN0cm95X19fMCA9IGIuYXNtLkloKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsU2hhcGVJbmZvX2dldF9tX3NoYXBlUGFydF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fZ2V0X21fc2hhcGVQYXJ0XzAgPSBiLmFzbS5KaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbFNoYXBlSW5mb19zZXRfbV9zaGFwZVBhcnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1qID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsU2hhcGVJbmZvX3NldF9tX3NoYXBlUGFydF8xID0gYi5hc20uS2gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fZ2V0X21fdHJpYW5nbGVJbmRleF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fZ2V0X21fdHJpYW5nbGVJbmRleF8wID0gYi5hc20uTGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fc2V0X21fdHJpYW5nbGVJbmRleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fc2V0X21fdHJpYW5nbGVJbmRleF8xID0gYi5hc20uTWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsU2hhcGVJbmZvX19fZGVzdHJveV9fXzAgPSBiLmFzbS5OaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9idFJpZ2lkQm9keV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYnRSaWdpZEJvZHlfMSA9IGIuYXNtLk9oKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldENlbnRlck9mTWFzc1RyYW5zZm9ybV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0Q2VudGVyT2ZNYXNzVHJhbnNmb3JtXzAgPSBiLmFzbS5QaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDZW50ZXJPZk1hc3NUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldENlbnRlck9mTWFzc1RyYW5zZm9ybV8xID0gYi5hc20uUWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0U2xlZXBpbmdUaHJlc2hvbGRzXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRTbGVlcGluZ1RocmVzaG9sZHNfMiA9IGIuYXNtLlJoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldExpbmVhckRhbXBpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldExpbmVhckRhbXBpbmdfMCA9IGIuYXNtLlNoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEFuZ3VsYXJEYW1waW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRBbmd1bGFyRGFtcGluZ18wID0gYi5hc20uVGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0RGFtcGluZ18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0RGFtcGluZ18yID0gYi5hc20uVWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0TWFzc1Byb3BzXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRNYXNzUHJvcHNfMiA9IGIuYXNtLlZoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldExpbmVhckZhY3Rvcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0TGluZWFyRmFjdG9yXzAgPSBiLmFzbS5XaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRMaW5lYXJGYWN0b3JfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFpqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldExpbmVhckZhY3Rvcl8xID0gYi5hc20uWGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlUb3JxdWVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGFrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5VG9ycXVlXzEgPSBiLmFzbS5ZaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUxvY2FsVG9ycXVlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChiayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUxvY2FsVG9ycXVlXzEgPSBiLmFzbS5aaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUZvcmNlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUZvcmNlXzIgPSBiLmFzbS5faCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUNlbnRyYWxGb3JjZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlDZW50cmFsRm9yY2VfMSA9IGIuYXNtLiRoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5Q2VudHJhbExvY2FsRm9yY2VfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5Q2VudHJhbExvY2FsRm9yY2VfMSA9IGIuYXNtLmFpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5VG9ycXVlSW1wdWxzZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlUb3JxdWVJbXB1bHNlXzEgPSBiLmFzbS5iaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUltcHVsc2VfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5SW1wdWxzZV8yID0gYi5hc20uY2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlDZW50cmFsSW1wdWxzZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlDZW50cmFsSW1wdWxzZV8xID0gYi5hc20uZGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfdXBkYXRlSW5lcnRpYVRlbnNvcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfdXBkYXRlSW5lcnRpYVRlbnNvcl8wID0gYi5hc20uZWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgamsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0TGluZWFyVmVsb2NpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGprID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldExpbmVhclZlbG9jaXR5XzAgPSBiLmFzbS5maSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRBbmd1bGFyVmVsb2NpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEFuZ3VsYXJWZWxvY2l0eV8wID0gYi5hc20uZ2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0TGluZWFyVmVsb2NpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldExpbmVhclZlbG9jaXR5XzEgPSBiLmFzbS5oaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRBbmd1bGFyVmVsb2NpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG1rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEFuZ3VsYXJWZWxvY2l0eV8xID0gYi5hc20uaWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0TW90aW9uU3RhdGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldE1vdGlvblN0YXRlXzAgPSBiLmFzbS5qaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRNb3Rpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0TW90aW9uU3RhdGVfMSA9IGIuYXNtLmtpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEFuZ3VsYXJGYWN0b3JfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHBrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEFuZ3VsYXJGYWN0b3JfMCA9IGIuYXNtLmxpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEFuZ3VsYXJGYWN0b3JfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEFuZ3VsYXJGYWN0b3JfMSA9IGIuYXNtLm1pKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3VwY2FzdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfdXBjYXN0XzEgPSBiLmFzbS5uaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRBYWJiXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChzayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRBYWJiXzIgPSBiLmFzbS5vaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0ayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUdyYXZpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5R3Jhdml0eV8wID0gYi5hc20ucGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0R3Jhdml0eV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0R3Jhdml0eV8wID0gYi5hc20ucWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0R3Jhdml0eV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0R3Jhdml0eV8xID0gYi5hc20ucmkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0QnJvYWRwaGFzZVByb3h5XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3ayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRCcm9hZHBoYXNlUHJveHlfMCA9IGIuYXNtLnNpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2NsZWFyRm9yY2VzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4ayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9jbGVhckZvcmNlc18wID0gYi5hc20udGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gYi5hc20udWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgemsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0Q29sbGlzaW9uU2hhcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHprID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldENvbGxpc2lvblNoYXBlXzAgPSBiLmFzbS52aSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGRfMSA9IGIuYXNtLndpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEFjdGl2YXRpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0QWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS54aSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9mb3JjZUFjdGl2YXRpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZm9yY2VBY3RpdmF0aW9uU3RhdGVfMSA9IGIuYXNtLnlpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FjdGl2YXRlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hY3RpdmF0ZV8wID0gYi5hc20uemkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYWN0aXZhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FjdGl2YXRlXzEgPSBiLmFzbS5BaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9pc0FjdGl2ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfaXNBY3RpdmVfMCA9IGIuYXNtLkJpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2lzS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9pc0tpbmVtYXRpY09iamVjdF8wID0gYi5hc20uQ2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfaXNTdGF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2lzU3RhdGljT2JqZWN0XzAgPSBiLmFzbS5EaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0XzAgPSBiLmFzbS5FaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRSZXN0aXR1dGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0UmVzdGl0dXRpb25fMCA9IGIuYXNtLkZpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEZyaWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRGcmljdGlvbl8wID0gYi5hc20uR2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRSb2xsaW5nRnJpY3Rpb25fMCA9IGIuYXNtLkhpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldFJlc3RpdHV0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRSZXN0aXR1dGlvbl8xID0gYi5hc20uSWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0RnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEZyaWN0aW9uXzEgPSBiLmFzbS5KaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldFJvbGxpbmdGcmljdGlvbl8xID0gYi5hc20uS2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldFdvcmxkVHJhbnNmb3JtXzAgPSBiLmFzbS5MaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRDb2xsaXNpb25GbGFnc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGIuYXNtLk1pKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldENvbGxpc2lvbkZsYWdzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDb2xsaXNpb25GbGFnc18xID0gYi5hc20uTmkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS5PaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDb2xsaXNpb25TaGFwZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGIuYXNtLlBpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0Q2NkTW90aW9uVGhyZXNob2xkXzEgPSBiLmFzbS5RaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXNfMSA9IGIuYXNtLlJpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldFVzZXJJbmRleF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0VXNlckluZGV4XzAgPSBiLmFzbS5TaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRVc2VySW5kZXhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldFVzZXJJbmRleF8xID0gYi5hc20uVGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0VXNlclBvaW50ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFlrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldFVzZXJQb2ludGVyXzAgPSBiLmFzbS5VaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRVc2VyUG9pbnRlcl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0VXNlclBvaW50ZXJfMSA9IGIuYXNtLlZpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICRrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEJyb2FkcGhhc2VIYW5kbGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEJyb2FkcGhhc2VIYW5kbGVfMCA9IGIuYXNtLldpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uWGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaEFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW5kZXhlZE1lc2hBcnJheV9zaXplXzAgPSBiLmFzbS5ZaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEluZGV4ZWRNZXNoQXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW5kZXhlZE1lc2hBcnJheV9hdF8xID0gYi5hc20uWmkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaEFycmF5X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEluZGV4ZWRNZXNoQXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLl9pKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGJ2dEJyb2FkcGhhc2VfYnREYnZ0QnJvYWRwaGFzZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREYnZ0QnJvYWRwaGFzZV9idERidnRCcm9hZHBoYXNlXzAgPSBiLmFzbS4kaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERidnRCcm9hZHBoYXNlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERidnRCcm9hZHBoYXNlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5haikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhlaWdodGZpZWxkVGVycmFpblNoYXBlX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfOSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV85ID0gYi5hc20uYmopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfc2V0TWFyZ2luXzEgPSBiLmFzbS5jaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhlaWdodGZpZWxkVGVycmFpblNoYXBlX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV9nZXRNYXJnaW5fMCA9IGIuYXNtLmRqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhlaWdodGZpZWxkVGVycmFpblNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uZWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5maikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhlaWdodGZpZWxkVGVycmFpblNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLmdqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG1sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLmhqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFNvZnRCb2R5U29sdmVyX2J0RGVmYXVsdFNvZnRCb2R5U29sdmVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChubCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRTb2Z0Qm9keVNvbHZlcl9idERlZmF1bHRTb2Z0Qm9keVNvbHZlcl8wID0gYi5hc20uaWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0U29mdEJvZHlTb2x2ZXJfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFNvZnRCb2R5U29sdmVyX19fZGVzdHJveV9fXzAgPSBiLmFzbS5qaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfYnRDb2xsaXNpb25EaXNwYXRjaGVyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfYnRDb2xsaXNpb25EaXNwYXRjaGVyXzEgPSBiLmFzbS5raikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfZ2V0TnVtTWFuaWZvbGRzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfZ2V0TnVtTWFuaWZvbGRzXzAgPSBiLmFzbS5saikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBybCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfZ2V0TWFuaWZvbGRCeUluZGV4SW50ZXJuYWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uRGlzcGF0Y2hlcl9nZXRNYW5pZm9sZEJ5SW5kZXhJbnRlcm5hbF8xID0gYi5hc20ubWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25EaXNwYXRjaGVyX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChzbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfX19kZXN0cm95X19fMCA9IGIuYXNtLm5qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfMiA9IGIuYXNtLm9qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfMyA9IGIuYXNtLnBqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfNCA9IGIuYXNtLnFqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfNSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfNSA9IGIuYXNtLnJqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRBeGlzU3dlZXAzX19fZGVzdHJveV9fXzAgPSBiLmFzbS5zaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5bCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5bCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzAgPSBiLmFzbS50aikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB6bCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX2J0U29mdEJvZHlXb3JsZEluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fYnRTb2Z0Qm9keVdvcmxkSW5mb18wID0gYi5hc20udWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfYWlyX2RlbnNpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X2Fpcl9kZW5zaXR5XzAgPSBiLmFzbS52aikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF9haXJfZGVuc2l0eV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19zZXRfYWlyX2RlbnNpdHlfMSA9IGIuYXNtLndqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X3dhdGVyX2RlbnNpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X3dhdGVyX2RlbnNpdHlfMCA9IGIuYXNtLnhqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X3dhdGVyX2RlbnNpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X3dhdGVyX2RlbnNpdHlfMSA9IGIuYXNtLnlqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X3dhdGVyX29mZnNldF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfd2F0ZXJfb2Zmc2V0XzAgPSBiLmFzbS56aikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF93YXRlcl9vZmZzZXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X3dhdGVyX29mZnNldF8xID0gYi5hc20uQWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfbV9tYXhEaXNwbGFjZW1lbnRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X21fbWF4RGlzcGxhY2VtZW50XzAgPSBiLmFzbS5CaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF9tX21heERpc3BsYWNlbWVudF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19zZXRfbV9tYXhEaXNwbGFjZW1lbnRfMSA9IGIuYXNtLkNqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X3dhdGVyX25vcm1hbF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfd2F0ZXJfbm9ybWFsXzAgPSBiLmFzbS5EaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF93YXRlcl9ub3JtYWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X3dhdGVyX25vcm1hbF8xID0gYi5hc20uRWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfbV9icm9hZHBoYXNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX2dldF9tX2Jyb2FkcGhhc2VfMCA9IGIuYXNtLkZqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X21fYnJvYWRwaGFzZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19zZXRfbV9icm9hZHBoYXNlXzEgPSBiLmFzbS5HaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX2dldF9tX2Rpc3BhdGNoZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X21fZGlzcGF0Y2hlcl8wID0gYi5hc20uSGopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19zZXRfbV9kaXNwYXRjaGVyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChObCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF9tX2Rpc3BhdGNoZXJfMSA9IGIuYXNtLklqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X21fZ3Jhdml0eV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfbV9ncmF2aXR5XzAgPSBiLmFzbS5KaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF9tX2dyYXZpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X21fZ3Jhdml0eV8xID0gYi5hc20uS2opLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20uTGopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2J0Q29uZVR3aXN0Q29uc3RyYWludF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2J0Q29uZVR3aXN0Q29uc3RyYWludF8yID0gYi5hc20uTWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2J0Q29uZVR3aXN0Q29uc3RyYWludF80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2J0Q29uZVR3aXN0Q29uc3RyYWludF80ID0gYi5hc20uTmopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldExpbWl0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TGltaXRfMiA9IGIuYXNtLk9qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9zZXRBbmd1bGFyT25seV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldEFuZ3VsYXJPbmx5XzEgPSBiLmFzbS5QaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0RGFtcGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldERhbXBpbmdfMSA9IGIuYXNtLlFqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9lbmFibGVNb3Rvcl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2VuYWJsZU1vdG9yXzEgPSBiLmFzbS5SaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TWF4TW90b3JJbXB1bHNlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TWF4TW90b3JJbXB1bHNlXzEgPSBiLmFzbS5TaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TWF4TW90b3JJbXB1bHNlTm9ybWFsaXplZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldE1heE1vdG9ySW1wdWxzZU5vcm1hbGl6ZWRfMSA9IGIuYXNtLlRqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFpsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9zZXRNb3RvclRhcmdldF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldE1vdG9yVGFyZ2V0XzEgPSBiLmFzbS5VaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TW90b3JUYXJnZXRJbkNvbnN0cmFpbnRTcGFjZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldE1vdG9yVGFyZ2V0SW5Db25zdHJhaW50U3BhY2VfMSA9IGIuYXNtLlZqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2VuYWJsZUZlZWRiYWNrXzEgPSBiLmFzbS5XaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBibSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChibSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5YaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzEgPSBiLmFzbS5ZaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9nZXRQYXJhbV8yID0gYi5hc20uWmopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldFBhcmFtXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLl9qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBiLmFzbS4kaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9idEhpbmdlQ29uc3RyYWludF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfYnRIaW5nZUNvbnN0cmFpbnRfMiA9IGIuYXNtLmFrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2J0SGluZ2VDb25zdHJhaW50XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChobSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9idEhpbmdlQ29uc3RyYWludF8zID0gYi5hc20uYmspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfYnRIaW5nZUNvbnN0cmFpbnRfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGltID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2J0SGluZ2VDb25zdHJhaW50XzQgPSBiLmFzbS5jaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9idEhpbmdlQ29uc3RyYWludF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoam0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfYnRIaW5nZUNvbnN0cmFpbnRfNSA9IGIuYXNtLmRrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGttID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2J0SGluZ2VDb25zdHJhaW50XzYgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9idEhpbmdlQ29uc3RyYWludF82ID0gYi5hc20uZWspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfYnRIaW5nZUNvbnN0cmFpbnRfNyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2J0SGluZ2VDb25zdHJhaW50XzcgPSBiLmFzbS5maykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRMaW1pdF80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfc2V0TGltaXRfNCA9IGIuYXNtLmdrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5tID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldExpbWl0XzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChubSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRMaW1pdF81ID0gYi5hc20uaGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZW5hYmxlQW5ndWxhck1vdG9yXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9lbmFibGVBbmd1bGFyTW90b3JfMyA9IGIuYXNtLmlrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldEFuZ3VsYXJPbmx5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRBbmd1bGFyT25seV8xID0gYi5hc20uamspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZW5hYmxlTW90b3JfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2VuYWJsZU1vdG9yXzEgPSBiLmFzbS5raykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBybSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRNYXhNb3RvckltcHVsc2VfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldE1heE1vdG9ySW1wdWxzZV8xID0gYi5hc20ubGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfc2V0TW90b3JUYXJnZXRfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldE1vdG9yVGFyZ2V0XzIgPSBiLmFzbS5taykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0bSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLm5rKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5vaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3bSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20ucGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5xaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5bSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLnJrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHptID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6bSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uc2spLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2J0Q29uZVNoYXBlWl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2J0Q29uZVNoYXBlWl8yID0gYi5hc20udGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20udWspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2dldExvY2FsU2NhbGluZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20udmspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gYi5hc20ud2spLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZVpfX19kZXN0cm95X19fMCA9IGIuYXNtLnhrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9idENvbmVTaGFwZVhfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9idENvbmVTaGFwZVhfMiA9IGIuYXNtLnlrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLnprKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLkFrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEltID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEltID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLkJrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEptID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVYX19fZGVzdHJveV9fXzAgPSBiLmFzbS5DaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9idFRyaWFuZ2xlTWVzaF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfYnRUcmlhbmdsZU1lc2hfMCA9IGIuYXNtLkRrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX2J0VHJpYW5nbGVNZXNoXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9idFRyaWFuZ2xlTWVzaF8xID0gYi5hc20uRWspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfYnRUcmlhbmdsZU1lc2hfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1tID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX2J0VHJpYW5nbGVNZXNoXzIgPSBiLmFzbS5GaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBObSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9hZGRUcmlhbmdsZV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfYWRkVHJpYW5nbGVfMyA9IGIuYXNtLkdrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9tID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX2FkZFRyaWFuZ2xlXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9hZGRUcmlhbmdsZV80ID0gYi5hc20uSGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfZmluZE9yQWRkVmVydGV4XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9maW5kT3JBZGRWZXJ0ZXhfMiA9IGIuYXNtLklrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX2FkZEluZGV4XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9hZGRJbmRleF8xID0gYi5hc20uSmspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfZ2V0SW5kZXhlZE1lc2hBcnJheV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfZ2V0SW5kZXhlZE1lc2hBcnJheV8wID0gYi5hc20uS2spLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfc2V0U2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfc2V0U2NhbGluZ18xID0gYi5hc20uTGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFRtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX19fZGVzdHJveV9fXzAgPSBiLmFzbS5NaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9idENvbnZleEh1bGxTaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfYnRDb252ZXhIdWxsU2hhcGVfMCA9IGIuYXNtLk5rKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2J0Q29udmV4SHVsbFNoYXBlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9idENvbnZleEh1bGxTaGFwZV8xID0gYi5hc20uT2spLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfYnRDb252ZXhIdWxsU2hhcGVfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2J0Q29udmV4SHVsbFNoYXBlXzIgPSBiLmFzbS5QaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9hZGRQb2ludF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfYWRkUG9pbnRfMSA9IGIuYXNtLlFrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFltID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2FkZFBvaW50XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9hZGRQb2ludF8yID0gYi5hc20uUmspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfc2V0TWFyZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChabSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLlNrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICRtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfZ2V0TWFyZ2luXzAgPSBiLmFzbS5UaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9nZXROdW1WZXJ0aWNlc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfZ2V0TnVtVmVydGljZXNfMCA9IGIuYXNtLlVrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2luaXRpYWxpemVQb2x5aGVkcmFsRmVhdHVyZXNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2luaXRpYWxpemVQb2x5aGVkcmFsRmVhdHVyZXNfMSA9IGIuYXNtLlZrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX3JlY2FsY0xvY2FsQWFiYl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoY24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfcmVjYWxjTG9jYWxBYWJiXzAgPSBiLmFzbS5XaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9nZXRDb252ZXhQb2x5aGVkcm9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9nZXRDb252ZXhQb2x5aGVkcm9uXzAgPSBiLmFzbS5YaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uWWspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLlprKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGduID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5faykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBobiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLiRrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19idFZlaGljbGVUdW5pbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19idFZlaGljbGVUdW5pbmdfMCA9IGIuYXNtLmFsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18wID0gYi5hc20uYmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlVHVuaW5nX3NldF9tX3N1c3BlbnNpb25TdGlmZm5lc3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzXzEgPSBiLmFzbS5jbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfZ2V0X21fc3VzcGVuc2lvbkNvbXByZXNzaW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfZ2V0X21fc3VzcGVuc2lvbkNvbXByZXNzaW9uXzAgPSBiLmFzbS5kbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBubiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfc2V0X21fc3VzcGVuc2lvbkNvbXByZXNzaW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChubiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfc2V0X21fc3VzcGVuc2lvbkNvbXByZXNzaW9uXzEgPSBiLmFzbS5lbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfZ2V0X21fc3VzcGVuc2lvbkRhbXBpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9uID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9zdXNwZW5zaW9uRGFtcGluZ18wID0gYi5hc20uZmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlVHVuaW5nX3NldF9tX3N1c3BlbnNpb25EYW1waW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfc2V0X21fc3VzcGVuc2lvbkRhbXBpbmdfMSA9IGIuYXNtLmdsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMCA9IGIuYXNtLmhsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMSA9IGIuYXNtLmlsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGIuYXNtLmpsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9mcmljdGlvblNsaXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9mcmljdGlvblNsaXBfMSA9IGIuYXNtLmtsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGIuYXNtLmxsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGIuYXNtLm1sKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHduID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0V3JhcHBlcl9nZXRXb3JsZFRyYW5zZm9ybV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAod24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RXcmFwcGVyX2dldFdvcmxkVHJhbnNmb3JtXzAgPSBiLmFzbS5ubCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4biA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdFdyYXBwZXJfZ2V0Q29sbGlzaW9uT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4biA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdFdyYXBwZXJfZ2V0Q29sbGlzaW9uT2JqZWN0XzAgPSBiLmFzbS5vbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5biA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdFdyYXBwZXJfZ2V0Q29sbGlzaW9uU2hhcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHluID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0V3JhcHBlcl9nZXRDb2xsaXNpb25TaGFwZV8wID0gYi5hc20ucGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgem4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTaGFwZUh1bGxfYnRTaGFwZUh1bGxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2hhcGVIdWxsX2J0U2hhcGVIdWxsXzEgPSBiLmFzbS5xbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNoYXBlSHVsbF9idWlsZEh1bGxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2hhcGVIdWxsX2J1aWxkSHVsbF8xID0gYi5hc20ucmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTaGFwZUh1bGxfbnVtVmVydGljZXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2hhcGVIdWxsX251bVZlcnRpY2VzXzAgPSBiLmFzbS5zbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNoYXBlSHVsbF9nZXRWZXJ0ZXhQb2ludGVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNoYXBlSHVsbF9nZXRWZXJ0ZXhQb2ludGVyXzAgPSBiLmFzbS50bCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNoYXBlSHVsbF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTaGFwZUh1bGxfX19kZXN0cm95X19fMCA9IGIuYXNtLnVsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX2J0RGVmYXVsdE1vdGlvblN0YXRlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9idERlZmF1bHRNb3Rpb25TdGF0ZV8wID0gYi5hc20udmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0TW90aW9uU3RhdGVfYnREZWZhdWx0TW90aW9uU3RhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX2J0RGVmYXVsdE1vdGlvblN0YXRlXzEgPSBiLmFzbS53bCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9idERlZmF1bHRNb3Rpb25TdGF0ZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0TW90aW9uU3RhdGVfYnREZWZhdWx0TW90aW9uU3RhdGVfMiA9IGIuYXNtLnhsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX2dldFdvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9nZXRXb3JsZFRyYW5zZm9ybV8xID0gYi5hc20ueWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0TW90aW9uU3RhdGVfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEluID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX3NldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS56bCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9nZXRfbV9ncmFwaGljc1dvcmxkVHJhbnNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX2dldF9tX2dyYXBoaWNzV29ybGRUcmFuc18wID0gYi5hc20uQWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0TW90aW9uU3RhdGVfc2V0X21fZ3JhcGhpY3NXb3JsZFRyYW5zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9zZXRfbV9ncmFwaGljc1dvcmxkVHJhbnNfMSA9IGIuYXNtLkJsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uQ2wpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fYnRXaGVlbEluZm9fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1uID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2J0V2hlZWxJbmZvXzEgPSBiLmFzbS5EbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBObiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRTdXNwZW5zaW9uUmVzdExlbmd0aF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0U3VzcGVuc2lvblJlc3RMZW5ndGhfMCA9IGIuYXNtLkVsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9uID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3VwZGF0ZVdoZWVsXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb191cGRhdGVXaGVlbF8yID0gYi5hc20uRmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18wID0gYi5hc20uR2wpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18xID0gYi5hc20uSGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fZnJpY3Rpb25TbGlwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGIuYXNtLklsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2ZyaWN0aW9uU2xpcF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fZnJpY3Rpb25TbGlwXzEgPSBiLmFzbS5KbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9lbmdpbmVGb3JjZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fZW5naW5lRm9yY2VfMCA9IGIuYXNtLktsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2VuZ2luZUZvcmNlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9lbmdpbmVGb3JjZV8xID0gYi5hc20uTGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fcm9sbEluZmx1ZW5jZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fcm9sbEluZmx1ZW5jZV8wID0gYi5hc20uTWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fcm9sbEluZmx1ZW5jZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fcm9sbEluZmx1ZW5jZV8xID0gYi5hc20uTmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGgxXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9zdXNwZW5zaW9uUmVzdExlbmd0aDFfMCA9IGIuYXNtLk9sKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFluID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3N1c3BlbnNpb25SZXN0TGVuZ3RoMV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGgxXzEgPSBiLmFzbS5QbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBabiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV93aGVlbHNSYWRpdXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3doZWVsc1JhZGl1c18wID0gYi5hc20uUWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxzUmFkaXVzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93aGVlbHNSYWRpdXNfMSA9IGIuYXNtLlJsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzAgPSBiLmFzbS5TbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBibyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93aGVlbHNEYW1waW5nQ29tcHJlc3Npb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbl8xID0gYi5hc20uVGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3doZWVsc0RhbXBpbmdSZWxheGF0aW9uXzAgPSBiLmFzbS5VbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93aGVlbHNEYW1waW5nUmVsYXhhdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb25fMSA9IGIuYXNtLlZsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3N0ZWVyaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9zdGVlcmluZ18wID0gYi5hc20uV2wpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc3RlZXJpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3N0ZWVyaW5nXzEgPSBiLmFzbS5YbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBobyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX21heFN1c3BlbnNpb25Gb3JjZV8wID0gYi5hc20uWWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fbWF4U3VzcGVuc2lvbkZvcmNlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGIuYXNtLlpsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX21heFN1c3BlbnNpb25UcmF2ZWxDbV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoam8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzAgPSBiLmFzbS5fbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX21heFN1c3BlbnNpb25UcmF2ZWxDbV8xID0gYi5hc20uJGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxzU3VzcGVuc2lvbkZvcmNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChsbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV93aGVlbHNTdXNwZW5zaW9uRm9yY2VfMCA9IGIuYXNtLmFtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1vID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3doZWVsc1N1c3BlbnNpb25Gb3JjZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxzU3VzcGVuc2lvbkZvcmNlXzEgPSBiLmFzbS5ibSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBubyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9iSXNGcm9udFdoZWVsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChubyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9iSXNGcm9udFdoZWVsXzAgPSBiLmFzbS5jbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9iSXNGcm9udFdoZWVsXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9iSXNGcm9udFdoZWVsXzEgPSBiLmFzbS5kbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9yYXljYXN0SW5mb18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fcmF5Y2FzdEluZm9fMCA9IGIuYXNtLmVtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3JheWNhc3RJbmZvXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9yYXljYXN0SW5mb18xID0gYi5hc20uZm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25Qb2ludENTXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChybyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9jaGFzc2lzQ29ubmVjdGlvblBvaW50Q1NfMCA9IGIuYXNtLmdtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2NoYXNzaXNDb25uZWN0aW9uUG9pbnRDU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25Qb2ludENTXzEgPSBiLmFzbS5obSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0byA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV93b3JsZFRyYW5zZm9ybV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd29ybGRUcmFuc2Zvcm1fMCA9IGIuYXNtLmltKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3dvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1byA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93b3JsZFRyYW5zZm9ybV8xID0gYi5hc20uam0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxEaXJlY3Rpb25DU18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxEaXJlY3Rpb25DU18wID0gYi5hc20ua20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxEaXJlY3Rpb25DU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAod28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxEaXJlY3Rpb25DU18xID0gYi5hc20ubG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxBeGxlQ1NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3doZWVsQXhsZUNTXzAgPSBiLmFzbS5tbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5byA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93aGVlbEF4bGVDU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxBeGxlQ1NfMSA9IGIuYXNtLm5tKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3JvdGF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6byA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9yb3RhdGlvbl8wID0gYi5hc20ub20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fcm90YXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3JvdGF0aW9uXzEgPSBiLmFzbS5wbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9kZWx0YVJvdGF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9kZWx0YVJvdGF0aW9uXzAgPSBiLmFzbS5xbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9kZWx0YVJvdGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9kZWx0YVJvdGF0aW9uXzEgPSBiLmFzbS5ybSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9icmFrZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fYnJha2VfMCA9IGIuYXNtLnNtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2JyYWtlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9icmFrZV8xID0gYi5hc20udG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9jbGlwcGVkSW52Q29udGFjdERvdFN1c3BlbnNpb25fMCA9IGIuYXNtLnVtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2NsaXBwZWRJbnZDb250YWN0RG90U3VzcGVuc2lvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uXzEgPSBiLmFzbS52bSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9zdXNwZW5zaW9uUmVsYXRpdmVWZWxvY2l0eV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc3VzcGVuc2lvblJlbGF0aXZlVmVsb2NpdHlfMCA9IGIuYXNtLndtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3N1c3BlbnNpb25SZWxhdGl2ZVZlbG9jaXR5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9zdXNwZW5zaW9uUmVsYXRpdmVWZWxvY2l0eV8xID0gYi5hc20ueG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc2tpZEluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3NraWRJbmZvXzAgPSBiLmFzbS55bSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9za2lkSW5mb18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc2tpZEluZm9fMSA9IGIuYXNtLnptKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20uQW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF8wID0gYi5hc20uQm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF80ID0gYi5hc20uQ20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3dfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9vID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF93XzAgPSBiLmFzbS5EbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfc2V0VmFsdWVfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF9zZXRWYWx1ZV80ID0gYi5hc20uRW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2xlbmd0aF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2xlbmd0aF8wID0gYi5hc20uRm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3hfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF94XzAgPSBiLmFzbS5HbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfeV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3lfMCA9IGIuYXNtLkhtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF96XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfel8wID0gYi5hc20uSW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3NldFhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF9zZXRYXzEgPSBiLmFzbS5KbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfc2V0WV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3NldFlfMSA9IGIuYXNtLkttKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF9zZXRaXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfc2V0Wl8xID0gYi5hc20uTG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X25vcm1hbGl6ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X25vcm1hbGl6ZV8wID0gYi5hc20uTW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3JvdGF0ZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3JvdGF0ZV8yID0gYi5hc20uTm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2RvdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2RvdF8xID0gYi5hc20uT20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX211bF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX211bF8xID0gYi5hc20uUG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX2FkZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX2FkZF8xID0gYi5hc20uUW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX3N1Yl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX3N1Yl8xID0gYi5hc20uUm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfX19kZXN0cm95X19fMCA9IGIuYXNtLlNtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdENvbGxpc2lvbkNvbnN0cnVjdGlvbkluZm9fYnREZWZhdWx0Q29sbGlzaW9uQ29uc3RydWN0aW9uSW5mb18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0Q29sbGlzaW9uQ29uc3RydWN0aW9uSW5mb19idERlZmF1bHRDb2xsaXNpb25Db25zdHJ1Y3Rpb25JbmZvXzAgPSBiLmFzbS5UbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25zdHJ1Y3Rpb25JbmZvX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25zdHJ1Y3Rpb25JbmZvX19fZGVzdHJveV9fXzAgPSBiLmFzbS5VbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fbm9kZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX25vZGVfMCA9IGIuYXNtLlZtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGdwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9ub2RlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChncCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3Jfc2V0X21fbm9kZV8xID0gYi5hc20uV20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2xvY2FsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChocCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fbG9jYWxfMCA9IGIuYXNtLlhtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGlwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9sb2NhbF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2xvY2FsXzEgPSBiLmFzbS5ZbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fYm9keV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoanAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2JvZHlfMCA9IGIuYXNtLlptKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9ib2R5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3Jfc2V0X21fYm9keV8xID0gYi5hc20uX20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2luZmx1ZW5jZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2luZmx1ZW5jZV8wID0gYi5hc20uJG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2luZmx1ZW5jZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2luZmx1ZW5jZV8xID0gYi5hc20uYW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2MwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChucCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fYzBfMCA9IGIuYXNtLmJuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG9wID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9jMF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2MwXzEgPSBiLmFzbS5jbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fYzFfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHBwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9nZXRfbV9jMV8wID0gYi5hc20uZG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2MxXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3Jfc2V0X21fYzFfMSA9IGIuYXNtLmVuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9nZXRfbV9jMl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2MyXzAgPSBiLmFzbS5mbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3Jfc2V0X21fYzJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9jMl8xID0gYi5hc20uZ24pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfX19kZXN0cm95X19fMCA9IGIuYXNtLmhuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9nZXRfbV9oaXRQb2ludEluV29ybGRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9nZXRfbV9oaXRQb2ludEluV29ybGRfMCA9IGIuYXNtLmpuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9zZXRfbV9oaXRQb2ludEluV29ybGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9zZXRfbV9oaXRQb2ludEluV29ybGRfMSA9IGIuYXNtLmtuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9nZXRfbV9oaXROb3JtYWxJbldvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfZ2V0X21faGl0Tm9ybWFsSW5Xb3JsZF8wID0gYi5hc20ubG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlUmF5Y2FzdGVyUmVzdWx0X3NldF9tX2hpdE5vcm1hbEluV29ybGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9zZXRfbV9oaXROb3JtYWxJbldvcmxkXzEgPSBiLmFzbS5tbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfZ2V0X21fZGlzdEZyYWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfZ2V0X21fZGlzdEZyYWN0aW9uXzAgPSBiLmFzbS5ubikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB6cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfc2V0X21fZGlzdEZyYWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfc2V0X21fZGlzdEZyYWN0aW9uXzEgPSBiLmFzbS5vbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9fX2Rlc3Ryb3lfX18wID0gYi5hc20ucG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzQXJyYXlfc2l6ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzQXJyYXlfc2l6ZV8wID0gYi5hc20ucW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzQXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM0FycmF5X2F0XzEgPSBiLmFzbS5ybikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNBcnJheV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzQXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLnNuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNvbHZlcl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U29sdmVyX19fZGVzdHJveV9fXzAgPSBiLmFzbS50bikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2J0UmF5Y2FzdFZlaGljbGVfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfYnRSYXljYXN0VmVoaWNsZV8zID0gYi5hc20udW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9hcHBseUVuZ2luZUZvcmNlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2FwcGx5RW5naW5lRm9yY2VfMiA9IGIuYXNtLnZuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfc2V0U3RlZXJpbmdWYWx1ZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRTdGVlcmluZ1ZhbHVlXzIgPSBiLmFzbS53bikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFdoZWVsVHJhbnNmb3JtV1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0V2hlZWxUcmFuc2Zvcm1XU18xID0gYi5hc20ueG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVXaGVlbFRyYW5zZm9ybV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVXaGVlbFRyYW5zZm9ybV8yID0gYi5hc20ueW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9hZGRXaGVlbF83ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9hZGRXaGVlbF83ID0gYi5hc20uem4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXROdW1XaGVlbHNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0TnVtV2hlZWxzXzAgPSBiLmFzbS5BbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFJpZ2lkQm9keV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRSaWdpZEJvZHlfMCA9IGIuYXNtLkJuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5wID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0V2hlZWxJbmZvXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFdoZWVsSW5mb18xID0gYi5hc20uQ24pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRCcmFrZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRCcmFrZV8yID0gYi5hc20uRG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRDb29yZGluYXRlU3lzdGVtXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3NldENvb3JkaW5hdGVTeXN0ZW1fMyA9IGIuYXNtLkVuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0Q3VycmVudFNwZWVkS21Ib3VyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldEN1cnJlbnRTcGVlZEttSG91cl8wID0gYi5hc20uRm4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRDaGFzc2lzV29ybGRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0Q2hhc3Npc1dvcmxkVHJhbnNmb3JtXzAgPSBiLmFzbS5HbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3JheUNhc3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfcmF5Q2FzdF8xID0gYi5hc20uSG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVWZWhpY2xlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3VwZGF0ZVZlaGljbGVfMSA9IGIuYXNtLkluKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfcmVzZXRTdXNwZW5zaW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3Jlc2V0U3VzcGVuc2lvbl8wID0gYi5hc20uSm4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRTdGVlcmluZ1ZhbHVlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFN0ZWVyaW5nVmFsdWVfMSA9IGIuYXNtLktuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1NfMSA9IGIuYXNtLkxuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1NfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1NfMiA9IGIuYXNtLk1uKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfc2V0UGl0Y2hDb250cm9sXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3NldFBpdGNoQ29udHJvbF8xID0gYi5hc20uTm4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVTdXNwZW5zaW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChacCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3VwZGF0ZVN1c3BlbnNpb25fMSA9IGIuYXNtLk9uKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICRwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlRnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlRnJpY3Rpb25fMSA9IGIuYXNtLlBuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0UmlnaHRBeGlzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFJpZ2h0QXhpc18wID0gYi5hc20uUW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRVcEF4aXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0VXBBeGlzXzAgPSBiLmFzbS5SbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldEZvcndhcmRBeGlzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldEZvcndhcmRBeGlzXzAgPSBiLmFzbS5TbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldEZvcndhcmRWZWN0b3JfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0Rm9yd2FyZFZlY3Rvcl8wID0gYi5hc20uVG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRVc2VyQ29uc3RyYWludFR5cGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0VXNlckNvbnN0cmFpbnRUeXBlXzAgPSBiLmFzbS5VbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3NldFVzZXJDb25zdHJhaW50VHlwZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRVc2VyQ29uc3RyYWludFR5cGVfMSA9IGIuYXNtLlZuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGdxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfc2V0VXNlckNvbnN0cmFpbnRJZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRVc2VyQ29uc3RyYWludElkXzEgPSBiLmFzbS5XbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBocSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFVzZXJDb25zdHJhaW50SWRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0VXNlckNvbnN0cmFpbnRJZF8wID0gYi5hc20uWG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVBY3Rpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGlxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlQWN0aW9uXzIgPSBiLmFzbS5ZbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5abikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVYX2J0Q3lsaW5kZXJTaGFwZVhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfYnRDeWxpbmRlclNoYXBlWF8xID0gYi5hc20uX24pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWF9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfc2V0TWFyZ2luXzEgPSBiLmFzbS4kbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVYX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWF9nZXRNYXJnaW5fMCA9IGIuYXNtLmFvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5xID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChucSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVYX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uYm8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9xID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5jbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVYX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLmVvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfX19kZXN0cm95X19fMCA9IGIuYXNtLmZvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVpfYnRDeWxpbmRlclNoYXBlWl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9idEN5bGluZGVyU2hhcGVaXzEgPSBiLmFzbS5nbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVaX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9zZXRNYXJnaW5fMSA9IGIuYXNtLmhvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVpfZ2V0TWFyZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0cSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVaX2dldE1hcmdpbl8wID0gYi5hc20uaW8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVpfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5qbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2cSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVaX2dldExvY2FsU2NhbGluZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLmtvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVpfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3cSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVaX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gYi5hc20ubG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9fX2Rlc3Ryb3lfX18wID0gYi5hc20ubW8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhQb2x5aGVkcm9uX2dldF9tX3ZlcnRpY2VzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5cSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFBvbHloZWRyb25fZ2V0X21fdmVydGljZXNfMCA9IGIuYXNtLm5vKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4UG9seWhlZHJvbl9zZXRfbV92ZXJ0aWNlc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoenEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhQb2x5aGVkcm9uX3NldF9tX3ZlcnRpY2VzXzEgPSBiLmFzbS5vbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFBvbHloZWRyb25fZ2V0X21fZmFjZXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4UG9seWhlZHJvbl9nZXRfbV9mYWNlc18wID0gYi5hc20ucG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhQb2x5aGVkcm9uX3NldF9tX2ZhY2VzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFBvbHloZWRyb25fc2V0X21fZmFjZXNfMSA9IGIuYXNtLnFvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4UG9seWhlZHJvbl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhQb2x5aGVkcm9uX19fZGVzdHJveV9fXzAgPSBiLmFzbS5ybykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNlcXVlbnRpYWxJbXB1bHNlQ29uc3RyYWludFNvbHZlcl9idFNlcXVlbnRpYWxJbXB1bHNlQ29uc3RyYWludFNvbHZlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTZXF1ZW50aWFsSW1wdWxzZUNvbnN0cmFpbnRTb2x2ZXJfYnRTZXF1ZW50aWFsSW1wdWxzZUNvbnN0cmFpbnRTb2x2ZXJfMCA9IGIuYXNtLnNvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2VxdWVudGlhbEltcHVsc2VDb25zdHJhaW50U29sdmVyX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNlcXVlbnRpYWxJbXB1bHNlQ29uc3RyYWludFNvbHZlcl9fX2Rlc3Ryb3lfX18wID0gYi5hc20udG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfdEFuY2hvckFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9zaXplXzAgPSBiLmFzbS51bykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90QW5jaG9yQXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9hdF8xID0gYi5hc20udm8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfdEFuY2hvckFycmF5X2NsZWFyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90QW5jaG9yQXJyYXlfY2xlYXJfMCA9IGIuYXNtLndvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9wdXNoX2JhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9wdXNoX2JhY2tfMSA9IGIuYXNtLnhvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEpxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9wb3BfYmFja18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfdEFuY2hvckFycmF5X3BvcF9iYWNrXzAgPSBiLmFzbS55bykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90QW5jaG9yQXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uem8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fY29udGFjdE5vcm1hbFdTXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV9jb250YWN0Tm9ybWFsV1NfMCA9IGIuYXNtLkFvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1xID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX2NvbnRhY3ROb3JtYWxXU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fY29udGFjdE5vcm1hbFdTXzEgPSBiLmFzbS5CbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV9jb250YWN0UG9pbnRXU18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fY29udGFjdFBvaW50V1NfMCA9IGIuYXNtLkNvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9xID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX2NvbnRhY3RQb2ludFdTXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19zZXRfbV9jb250YWN0UG9pbnRXU18xID0gYi5hc20uRG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fc3VzcGVuc2lvbkxlbmd0aF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fc3VzcGVuc2lvbkxlbmd0aF8wID0gYi5hc20uRW8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fc3VzcGVuc2lvbkxlbmd0aF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fc3VzcGVuc2lvbkxlbmd0aF8xID0gYi5hc20uRm8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21faGFyZFBvaW50V1NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX2dldF9tX2hhcmRQb2ludFdTXzAgPSBiLmFzbS5HbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19zZXRfbV9oYXJkUG9pbnRXU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21faGFyZFBvaW50V1NfMSA9IGIuYXNtLkhvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX2dldF9tX3doZWVsRGlyZWN0aW9uV1NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX2dldF9tX3doZWVsRGlyZWN0aW9uV1NfMCA9IGIuYXNtLklvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX3doZWVsRGlyZWN0aW9uV1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX3doZWVsRGlyZWN0aW9uV1NfMSA9IGIuYXNtLkpvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX2dldF9tX3doZWVsQXhsZVdTXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV93aGVlbEF4bGVXU18wID0gYi5hc20uS28pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fd2hlZWxBeGxlV1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX3doZWVsQXhsZVdTXzEgPSBiLmFzbS5MbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV9pc0luQ29udGFjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21faXNJbkNvbnRhY3RfMCA9IGIuYXNtLk1vKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX2lzSW5Db250YWN0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19zZXRfbV9pc0luQ29udGFjdF8xID0gYi5hc20uTm8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fZ3JvdW5kT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChacSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV9ncm91bmRPYmplY3RfMCA9IGIuYXNtLk9vKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX2dyb3VuZE9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fZ3JvdW5kT2JqZWN0XzEgPSBiLmFzbS5QbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fX19kZXN0cm95X19fMCA9IGIuYXNtLlFvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9idE11bHRpU3BoZXJlU2hhcGVfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9idE11bHRpU3BoZXJlU2hhcGVfMyA9IGIuYXNtLlJvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLlNvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLlRvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLlVvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNdWx0aVNwaGVyZVNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5WbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2J0U29mdEJvZHlfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYnRTb2Z0Qm9keV80ID0gYi5hc20uV28pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9jaGVja0xpbmtfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfY2hlY2tMaW5rXzIgPSBiLmFzbS5YbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2NoZWNrRmFjZV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9jaGVja0ZhY2VfMyA9IGIuYXNtLllvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kTWF0ZXJpYWxfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGpyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kTWF0ZXJpYWxfMCA9IGIuYXNtLlpvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kTm9kZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoa3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hcHBlbmROb2RlXzIgPSBiLmFzbS5fbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FwcGVuZExpbmtfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kTGlua180ID0gYi5hc20uJG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hcHBlbmRGYWNlXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FwcGVuZEZhY2VfNCA9IGIuYXNtLmFwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5yID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kVGV0cmFfNSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5yID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kVGV0cmFfNSA9IGIuYXNtLmJwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG9yID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kQW5jaG9yXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FwcGVuZEFuY2hvcl80ID0gYi5hc20uY3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRGb3JjZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRGb3JjZV8xID0gYi5hc20uZHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRGb3JjZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRGb3JjZV8yID0gYi5hc20uZXApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRBZXJvRm9yY2VUb05vZGVfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYWRkQWVyb0ZvcmNlVG9Ob2RlXzIgPSBiLmFzbS5mcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2dldFRvdGFsTWFzc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRUb3RhbE1hc3NfMCA9IGIuYXNtLmdwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0VG90YWxNYXNzXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0ciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFRvdGFsTWFzc18yID0gYi5hc20uaHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRNYXNzXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1ciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldE1hc3NfMiA9IGIuYXNtLmlwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfdHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2ciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3RyYW5zZm9ybV8xID0gYi5hc20uanApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV90cmFuc2xhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfdHJhbnNsYXRlXzEgPSBiLmFzbS5rcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4ciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3JvdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9yb3RhdGVfMSA9IGIuYXNtLmxwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHlyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2NhbGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHlyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2NhbGVfMSA9IGIuYXNtLm1wKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2VuZXJhdGVDbHVzdGVyc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoenIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZW5lcmF0ZUNsdXN0ZXJzXzEgPSBiLmFzbS5ucCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2dlbmVyYXRlQ2x1c3RlcnNfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2VuZXJhdGVDbHVzdGVyc18yID0gYi5hc20ub3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZW5lcmF0ZUJlbmRpbmdDb25zdHJhaW50c18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZW5lcmF0ZUJlbmRpbmdDb25zdHJhaW50c18yID0gYi5hc20ucHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV91cGNhc3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfdXBjYXN0XzEgPSBiLmFzbS5xcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldEFuaXNvdHJvcGljRnJpY3Rpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gYi5hc20ucnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRDb2xsaXNpb25TaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRDb2xsaXNpb25TaGFwZV8wID0gYi5hc20uc3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gYi5hc20udHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRBY3RpdmF0aW9uU3RhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0QWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS51cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS52cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FjdGl2YXRlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FjdGl2YXRlXzAgPSBiLmFzbS53cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FjdGl2YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FjdGl2YXRlXzEgPSBiLmFzbS54cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzQWN0aXZlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzQWN0aXZlXzAgPSBiLmFzbS55cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzS2luZW1hdGljT2JqZWN0XzAgPSBiLmFzbS56cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzU3RhdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzU3RhdGljT2JqZWN0XzAgPSBiLmFzbS5BcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzU3RhdGljT3JLaW5lbWF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5yID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfaXNTdGF0aWNPcktpbmVtYXRpY09iamVjdF8wID0gYi5hc20uQnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRSZXN0aXR1dGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRSZXN0aXR1dGlvbl8wID0gYi5hc20uQ3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRGcmljdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRGcmljdGlvbl8wID0gYi5hc20uRHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRSb2xsaW5nRnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFFyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBiLmFzbS5FcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFJlc3RpdHV0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFJlc3RpdHV0aW9uXzEgPSBiLmFzbS5GcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldEZyaWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldEZyaWN0aW9uXzEgPSBiLmFzbS5HcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFJvbGxpbmdGcmljdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGIuYXNtLkhwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGIuYXNtLklwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFZyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGIuYXNtLkpwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGIuYXNtLktwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGIuYXNtLkxwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFlyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGIuYXNtLk1wKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFpyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q2NkTW90aW9uVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChaciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gYi5hc20uTnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gYi5hc20uT3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRVc2VySW5kZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGFzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0VXNlckluZGV4XzAgPSBiLmFzbS5QcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBicyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFVzZXJJbmRleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRVc2VySW5kZXhfMSA9IGIuYXNtLlFwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0VXNlclBvaW50ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0VXNlclBvaW50ZXJfMCA9IGIuYXNtLlJwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0VXNlclBvaW50ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0VXNlclBvaW50ZXJfMSA9IGIuYXNtLlNwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0QnJvYWRwaGFzZUhhbmRsZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBiLmFzbS5UcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBncyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2dldF9tX2NmZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9jZmdfMCA9IGIuYXNtLlVwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0X21fY2ZnXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChocyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldF9tX2NmZ18xID0gYi5hc20uVnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9ub2Rlc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9ub2Rlc18wID0gYi5hc20uV3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwganMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRfbV9ub2Rlc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoanMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRfbV9ub2Rlc18xID0gYi5hc20uWHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9tYXRlcmlhbHNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0X21fbWF0ZXJpYWxzXzAgPSBiLmFzbS5ZcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBscyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldF9tX21hdGVyaWFsc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRfbV9tYXRlcmlhbHNfMSA9IGIuYXNtLlpwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1zID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0X21fYW5jaG9yc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9hbmNob3JzXzAgPSBiLmFzbS5fcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBucyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldF9tX2FuY2hvcnNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5zID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0X21fYW5jaG9yc18xID0gYi5hc20uJHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uYXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbnRBcnJheV9zaXplXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEludEFycmF5X3NpemVfMCA9IGIuYXNtLmJxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW50QXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW50QXJyYXlfYXRfMSA9IGIuYXNtLmNxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW50QXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW50QXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLmRxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa1ZDRl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rVkNGXzAgPSBiLmFzbS5lcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1cyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tWQ0ZfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa1ZDRl8xID0gYi5hc20uZnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rRFBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa0RQXzAgPSBiLmFzbS5ncSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4cyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tEUF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rRFBfMSA9IGIuYXNtLmhxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHlzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa0RHXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5cyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tER18wID0gYi5hc20uaXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgenMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rREdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0RHXzEgPSBiLmFzbS5qcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tMRl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rTEZfMCA9IGIuYXNtLmtxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0xGXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tMRl8xID0gYi5hc20ubHEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rUFJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa1BSXzAgPSBiLmFzbS5tcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tQUl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rUFJfMSA9IGIuYXNtLm5xKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa1ZDXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tWQ18wID0gYi5hc20ub3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rVkNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa1ZDXzEgPSBiLmFzbS5wcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tERl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rREZfMCA9IGIuYXNtLnFxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0RGXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tERl8xID0gYi5hc20ucnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rTVRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa01UXzAgPSBiLmFzbS5zcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tNVF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rTVRfMSA9IGIuYXNtLnRxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa0NIUl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rQ0hSXzAgPSBiLmFzbS51cSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tDSFJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0NIUl8xID0gYi5hc20udnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rS0hSXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tLSFJfMCA9IGIuYXNtLndxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5zID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0tIUl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rS0hSXzEgPSBiLmFzbS54cSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tTSFJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9zID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa1NIUl8wID0gYi5hc20ueXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0hSXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tTSFJfMSA9IGIuYXNtLnpxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa0FIUl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rQUhSXzAgPSBiLmFzbS5BcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBScyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tBSFJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0FIUl8xID0gYi5hc20uQnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1JIUl9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1JIUl9DTF8wID0gYi5hc20uQ3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1JIUl9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1JIUl9DTF8xID0gYi5hc20uRHEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU0tIUl9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU0tIUl9DTF8wID0gYi5hc20uRXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0tIUl9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0tIUl9DTF8xID0gYi5hc20uRnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1NIUl9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1NIUl9DTF8wID0gYi5hc20uR3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1NIUl9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1NIUl9DTF8xID0gYi5hc20uSHEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1JfU1BMVF9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1JfU1BMVF9DTF8wID0gYi5hc20uSXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1JfU1BMVF9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1JfU1BMVF9DTF8xID0gYi5hc20uSnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU0tfU1BMVF9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU0tfU1BMVF9DTF8wID0gYi5hc20uS3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0tfU1BMVF9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0tfU1BMVF9DTF8xID0gYi5hc20uTHEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1NfU1BMVF9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1NfU1BMVF9DTF8wID0gYi5hc20uTXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1NfU1BMVF9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoY3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1NfU1BMVF9DTF8xID0gYi5hc20uTnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9tYXh2b2x1bWVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfbWF4dm9sdW1lXzAgPSBiLmFzbS5PcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBldCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X21heHZvbHVtZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9tYXh2b2x1bWVfMSA9IGIuYXNtLlBxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfdGltZXNjYWxlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3RpbWVzY2FsZV8wID0gYi5hc20uUXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF90aW1lc2NhbGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGd0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfdGltZXNjYWxlXzEgPSBiLmFzbS5ScSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBodCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3ZpdGVyYXRpb25zXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChodCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3ZpdGVyYXRpb25zXzAgPSBiLmFzbS5TcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X3ZpdGVyYXRpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X3ZpdGVyYXRpb25zXzEgPSBiLmFzbS5UcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3BpdGVyYXRpb25zXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3BpdGVyYXRpb25zXzAgPSBiLmFzbS5VcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X3BpdGVyYXRpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X3BpdGVyYXRpb25zXzEgPSBiLmFzbS5WcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2RpdGVyYXRpb25zXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChsdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2RpdGVyYXRpb25zXzAgPSBiLmFzbS5XcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2RpdGVyYXRpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2RpdGVyYXRpb25zXzEgPSBiLmFzbS5YcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBudCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2NpdGVyYXRpb25zXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChudCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2NpdGVyYXRpb25zXzAgPSBiLmFzbS5ZcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2NpdGVyYXRpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2NpdGVyYXRpb25zXzEgPSBiLmFzbS5acSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2NvbGxpc2lvbnNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfY29sbGlzaW9uc18wID0gYi5hc20uX3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9jb2xsaXNpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2NvbGxpc2lvbnNfMSA9IGIuYXNtLiRxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX19fZGVzdHJveV9fXzAgPSBiLmFzbS5hcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX2dldF9tX3hfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfZ2V0X21feF8wID0gYi5hc20uYnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV94XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX3NldF9tX3hfMSA9IGIuYXNtLmNyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHV0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfZ2V0X21fcV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9xXzAgPSBiLmFzbS5kcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX3NldF9tX3FfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfc2V0X21fcV8xID0gYi5hc20uZXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV92XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX2dldF9tX3ZfMCA9IGIuYXNtLmZyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHh0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfc2V0X21fdl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV92XzEgPSBiLmFzbS5ncikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX2dldF9tX2ZfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHl0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfZ2V0X21fZl8wID0gYi5hc20uaHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgenQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV9mXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX3NldF9tX2ZfMSA9IGIuYXNtLmlyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEF0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfZ2V0X21fbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9uXzAgPSBiLmFzbS5qcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX3NldF9tX25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfc2V0X21fbl8xID0gYi5hc20ua3IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9pbV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9pbV8wID0gYi5hc20ubHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV9pbV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV9pbV8xID0gYi5hc20ubXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9hcmVhXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX2dldF9tX2FyZWFfMCA9IGIuYXNtLm5yKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfc2V0X21fYXJlYV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV9hcmVhXzEgPSBiLmFzbS5vcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5wcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0UGFpckNhbGxiYWNrX2J0R2hvc3RQYWlyQ2FsbGJhY2tfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEh0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RQYWlyQ2FsbGJhY2tfYnRHaG9zdFBhaXJDYWxsYmFja18wID0gYi5hc20ucXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdFBhaXJDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdFBhaXJDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gYi5hc20ucnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRPdmVybGFwcGluZ1BhaXJDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRPdmVybGFwcGluZ1BhaXJDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gYi5hc20uc3IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl8zID0gYi5hc20udHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl80ID0gYi5hc20udXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFVwQXhpc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFVwQXhpc18xID0gYi5hc20udnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFdhbGtEaXJlY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE50ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRXYWxrRGlyZWN0aW9uXzEgPSBiLmFzbS53cikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfc2V0VmVsb2NpdHlGb3JUaW1lSW50ZXJ2YWxfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE90ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRWZWxvY2l0eUZvclRpbWVJbnRlcnZhbF8yID0gYi5hc20ueHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3dhcnBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFB0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl93YXJwXzEgPSBiLmFzbS55cikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfcHJlU3RlcF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3ByZVN0ZXBfMSA9IGIuYXNtLnpyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9wbGF5ZXJTdGVwXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfcGxheWVyU3RlcF8yID0gYi5hc20uQXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEZhbGxTcGVlZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEZhbGxTcGVlZF8xID0gYi5hc20uQnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEp1bXBTcGVlZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEp1bXBTcGVlZF8xID0gYi5hc20uQ3IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldE1heEp1bXBIZWlnaHRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFV0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRNYXhKdW1wSGVpZ2h0XzEgPSBiLmFzbS5EcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfY2FuSnVtcF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2Nhbkp1bXBfMCA9IGIuYXNtLkVyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFd0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9qdW1wXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfanVtcF8wID0gYi5hc20uRnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEdyYXZpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFh0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRHcmF2aXR5XzEgPSBiLmFzbS5HcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfZ2V0R3Jhdml0eV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2dldEdyYXZpdHlfMCA9IGIuYXNtLkhyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFp0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRNYXhTbG9wZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldE1heFNsb3BlXzEgPSBiLmFzbS5JcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfZ2V0TWF4U2xvcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCR0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9nZXRNYXhTbG9wZV8wID0gYi5hc20uSnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2dldEdob3N0T2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfZ2V0R2hvc3RPYmplY3RfMCA9IGIuYXNtLktyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJ1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRVc2VHaG9zdFN3ZWVwVGVzdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFVzZUdob3N0U3dlZXBUZXN0XzEgPSBiLmFzbS5McikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfb25Hcm91bmRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGN1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9vbkdyb3VuZF8wID0gYi5hc20uTXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFVwSW50ZXJwb2xhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRVcEludGVycG9sYXRlXzEgPSBiLmFzbS5OcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBldSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfdXBkYXRlQWN0aW9uXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChldSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfdXBkYXRlQWN0aW9uXzIgPSBiLmFzbS5PcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZ1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9fX2Rlc3Ryb3lfX18wID0gYi5hc20uUHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGd1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlBcnJheV9zaXplXzAgPSBiLmFzbS5RcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBodSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5QXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGh1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlBcnJheV9hdF8xID0gYi5hc20uUnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUFycmF5X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5QXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLlNyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGp1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZUFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGp1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZUFycmF5X3NpemVfMCA9IGIuYXNtLlRyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGt1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZUFycmF5X2F0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZhY2VBcnJheV9hdF8xID0gYi5hc20uVXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGYWNlQXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGx1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZUFycmF5X19fZGVzdHJveV9fXzAgPSBiLmFzbS5WcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfYnRTdGF0aWNQbGFuZVNoYXBlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfYnRTdGF0aWNQbGFuZVNoYXBlXzIgPSBiLmFzbS5XcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBudSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChudSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5YcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5ZcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5acikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHF1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3RhdGljUGxhbmVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uX3IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcnUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRPdmVybGFwcGluZ1BhaXJDYWNoZV9zZXRJbnRlcm5hbEdob3N0UGFpckNhbGxiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChydSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE92ZXJsYXBwaW5nUGFpckNhY2hlX3NldEludGVybmFsR2hvc3RQYWlyQ2FsbGJhY2tfMSA9IGIuYXNtLiRyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHN1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0T3ZlcmxhcHBpbmdQYWlyQ2FjaGVfZ2V0TnVtT3ZlcmxhcHBpbmdQYWlyc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRPdmVybGFwcGluZ1BhaXJDYWNoZV9nZXROdW1PdmVybGFwcGluZ1BhaXJzXzAgPSBiLmFzbS5hcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE92ZXJsYXBwaW5nUGFpckNhY2hlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE92ZXJsYXBwaW5nUGFpckNhY2hlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5icykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEluZGV4ZWRNZXNoX2dldF9tX251bVRyaWFuZ2xlc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaF9nZXRfbV9udW1UcmlhbmdsZXNfMCA9IGIuYXNtLmNzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZ1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW5kZXhlZE1lc2hfc2V0X21fbnVtVHJpYW5nbGVzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEluZGV4ZWRNZXNoX3NldF9tX251bVRyaWFuZ2xlc18xID0gYi5hc20uZHMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAod3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uZXMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF81ID0gYi5hc20uZnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2FkZFNvZnRCb2R5XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkU29mdEJvZHlfMyA9IGIuYXNtLmdzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHp1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9yZW1vdmVTb2Z0Qm9keV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoenUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JlbW92ZVNvZnRCb2R5XzEgPSBiLmFzbS5ocykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfcmVtb3ZlQ29sbGlzaW9uT2JqZWN0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChBdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfcmVtb3ZlQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5pcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0V29ybGRJbmZvXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0V29ybGRJbmZvXzAgPSBiLmFzbS5qcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0U29mdEJvZHlBcnJheV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2dldFNvZnRCb2R5QXJyYXlfMCA9IGIuYXNtLmtzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIER1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0RGlzcGF0Y2hlcl8wID0gYi5hc20ubHMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JheVRlc3RfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEV1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9yYXlUZXN0XzMgPSBiLmFzbS5tcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0UGFpckNhY2hlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0UGFpckNhY2hlXzAgPSBiLmFzbS5ucykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0RGlzcGF0Y2hJbmZvXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0RGlzcGF0Y2hJbmZvXzAgPSBiLmFzbS5vcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5wcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzIgPSBiLmFzbS5xcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzMgPSBiLmFzbS5ycykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0QnJvYWRwaGFzZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2dldEJyb2FkcGhhc2VfMCA9IGIuYXNtLnNzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEx1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb252ZXhTd2VlcFRlc3RfNSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEx1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb252ZXhTd2VlcFRlc3RfNSA9IGIuYXNtLnRzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE11ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb250YWN0UGFpclRlc3RfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE11ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb250YWN0UGFpclRlc3RfMyA9IGIuYXNtLnVzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE51ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb250YWN0VGVzdF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2NvbnRhY3RUZXN0XzIgPSBiLmFzbS52cykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3VwZGF0ZVNpbmdsZUFhYmJfMSA9IGIuYXNtLndzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFB1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXREZWJ1Z0RyYXdlcl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBiLmFzbS54cykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0RGVidWdEcmF3ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFF1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9nZXREZWJ1Z0RyYXdlcl8wID0gYi5hc20ueXMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUnUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2RlYnVnRHJhd1dvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZGVidWdEcmF3V29ybGRfMCA9IGIuYXNtLnpzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFN1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdPYmplY3RfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFN1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdPYmplY3RfMyA9IGIuYXNtLkFzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFR1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXRHcmF2aXR5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc2V0R3Jhdml0eV8xID0gYi5hc20uQnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2dldEdyYXZpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFV1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9nZXRHcmF2aXR5XzAgPSBiLmFzbS5DcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzEgPSBiLmFzbS5EcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzMgPSBiLmFzbS5FcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfcmVtb3ZlUmlnaWRCb2R5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfcmVtb3ZlUmlnaWRCb2R5XzEgPSBiLmFzbS5GcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29uc3RyYWludF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMSA9IGIuYXNtLkdzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFp1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9hZGRDb25zdHJhaW50XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChadSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29uc3RyYWludF8yID0gYi5hc20uSHMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JlbW92ZUNvbnN0cmFpbnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCR1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9yZW1vdmVDb25zdHJhaW50XzEgPSBiLmFzbS5JcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc3RlcFNpbXVsYXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGF2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zdGVwU2ltdWxhdGlvbl8xID0gYi5hc20uSnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3N0ZXBTaW11bGF0aW9uXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChidiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc3RlcFNpbXVsYXRpb25fMiA9IGIuYXNtLktzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGN2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zdGVwU2ltdWxhdGlvbl8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoY3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3N0ZXBTaW11bGF0aW9uXzMgPSBiLmFzbS5McykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc2V0Q29udGFjdEFkZGVkQ2FsbGJhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXRDb250YWN0QWRkZWRDYWxsYmFja18xID0gYi5hc20uTXMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldENvbnRhY3RQcm9jZXNzZWRDYWxsYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldENvbnRhY3RQcm9jZXNzZWRDYWxsYmFja18xID0gYi5hc20uTnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldENvbnRhY3REZXN0cm95ZWRDYWxsYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldENvbnRhY3REZXN0cm95ZWRDYWxsYmFja18xID0gYi5hc20uT3MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2FkZEFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2FkZEFjdGlvbl8xID0gYi5hc20uUHMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JlbW92ZUFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JlbW92ZUFjdGlvbl8xID0gYi5hc20uUXMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2dldFNvbHZlckluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGl2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9nZXRTb2x2ZXJJbmZvXzAgPSBiLmFzbS5ScykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGp2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18xID0gYi5hc20uU3MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMiA9IGIuYXNtLlRzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGx2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzMgPSBiLmFzbS5VcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG12ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uVnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfYnRGaXhlZENvbnN0cmFpbnRfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG52ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X2J0Rml4ZWRDb25zdHJhaW50XzQgPSBiLmFzbS5XcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZpeGVkQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLlhzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHB2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5ZcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZpeGVkQ29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHF2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20uWnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJ2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5fcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZpeGVkQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLiRzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHR2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZpeGVkQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uYXQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fYnRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHV2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX2J0VHJhbnNmb3JtXzAgPSBiLmFzbS5idCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9idFRyYW5zZm9ybV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fYnRUcmFuc2Zvcm1fMiA9IGIuYXNtLmN0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHd2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX3NldElkZW50aXR5XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRJZGVudGl0eV8wID0gYi5hc20uZHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fc2V0T3JpZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRPcmlnaW5fMSA9IGIuYXNtLmV0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHl2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX3NldFJvdGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRSb3RhdGlvbl8xID0gYi5hc20uZnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgenYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fZ2V0T3JpZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9nZXRPcmlnaW5fMCA9IGIuYXNtLmd0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEF2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX2dldFJvdGF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChBdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9nZXRSb3RhdGlvbl8wID0gYi5hc20uaHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fZ2V0QmFzaXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX2dldEJhc2lzXzAgPSBiLmFzbS5pdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRGcm9tT3BlbkdMTWF0cml4XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRGcm9tT3BlbkdMTWF0cml4XzEgPSBiLmFzbS5qdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9pbnZlcnNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9pbnZlcnNlXzAgPSBiLmFzbS5rdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBFdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9vcF9tdWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEV2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX29wX211bF8xID0gYi5hc20ubHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZ2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX19fZGVzdHJveV9fXzAgPSBiLmFzbS5tdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrXzIgPSBiLmFzbS5udCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBiLmFzbS5vdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5RnJvbVdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5RnJvbVdvcmxkXzAgPSBiLmFzbS5wdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5RnJvbVdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5RnJvbVdvcmxkXzEgPSBiLmFzbS5xdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5VG9Xb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX3JheVRvV29ybGRfMCA9IGIuYXNtLnJ0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEx2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9yYXlUb1dvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5VG9Xb3JsZF8xID0gYi5hc20uc3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdE5vcm1hbFdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0Tm9ybWFsV29ybGRfMCA9IGIuYXNtLnR0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE52ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9oaXROb3JtYWxXb3JsZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2hpdE5vcm1hbFdvcmxkXzEgPSBiLmFzbS51dCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0UG9pbnRXb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdFBvaW50V29ybGRfMCA9IGIuYXNtLnZ0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFB2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9oaXRQb2ludFdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21faGl0UG9pbnRXb3JsZF8xID0gYi5hc20ud3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMCA9IGIuYXNtLnh0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJ2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS55dCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGIuYXNtLnp0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFR2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18xID0gYi5hc20uQXQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gYi5hc20uQnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gYi5hc20uQ3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gYi5hc20uRHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gYi5hc20uRXQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGIuYXNtLkZ0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFp2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uX2J0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChadiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5UmlnaWRCb2R5Q29sbGlzaW9uQ29uZmlndXJhdGlvbl9idFNvZnRCb2R5UmlnaWRCb2R5Q29sbGlzaW9uQ29uZmlndXJhdGlvbl8wID0gYi5hc20uR3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVJpZ2lkQm9keUNvbGxpc2lvbkNvbmZpZ3VyYXRpb25fYnRTb2Z0Qm9keVJpZ2lkQm9keUNvbGxpc2lvbkNvbmZpZ3VyYXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCR2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uX2J0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uXzEgPSBiLmFzbS5IdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5UmlnaWRCb2R5Q29sbGlzaW9uQ29uZmlndXJhdGlvbl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVJpZ2lkQm9keUNvbGxpc2lvbkNvbmZpZ3VyYXRpb25fX19kZXN0cm95X19fMCA9IGIuYXNtLkl0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmNyZXRlQ29udGFjdFJlc3VsdENhbGxiYWNrX0NvbmNyZXRlQ29udGFjdFJlc3VsdENhbGxiYWNrXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChidyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFja19Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFja18wID0gYi5hc20uSnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uY3JldGVDb250YWN0UmVzdWx0Q2FsbGJhY2tfYWRkU2luZ2xlUmVzdWx0XzcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFja19hZGRTaW5nbGVSZXN1bHRfNyA9IGIuYXNtLkt0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGR3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmNyZXRlQ29udGFjdFJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gYi5hc20uTHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChldyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX2J0QnZoVHJpYW5nbGVNZXNoU2hhcGVfMiA9IGIuYXNtLk10KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnZoVHJpYW5nbGVNZXNoU2hhcGVfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlXzMgPSBiLmFzbS5OdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBndyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLk90KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGh3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnZoVHJpYW5nbGVNZXNoU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChodyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20uUHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnZoVHJpYW5nbGVNZXNoU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5RdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5SdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0Q29sbGlzaW9uT2JqZWN0QXJyYXlfc2l6ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoa3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdENvbGxpc2lvbk9iamVjdEFycmF5X3NpemVfMCA9IGIuYXNtLlN0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGx3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RDb2xsaXNpb25PYmplY3RBcnJheV9hdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdENvbGxpc2lvbk9iamVjdEFycmF5X2F0XzEgPSBiLmFzbS5UdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0Q29sbGlzaW9uT2JqZWN0QXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG13ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RDb2xsaXNpb25PYmplY3RBcnJheV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uVXQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF8zID0gYi5hc20uVnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF81ID0gYi5hc20uV3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldExvd2VyTGluTGltaXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9zZXRMb3dlckxpbkxpbWl0XzEgPSBiLmFzbS5YdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfc2V0VXBwZXJMaW5MaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldFVwcGVyTGluTGltaXRfMSA9IGIuYXNtLll0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9zZXRMb3dlckFuZ0xpbWl0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChydyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfc2V0TG93ZXJBbmdMaW1pdF8xID0gYi5hc20uWnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldFVwcGVyQW5nTGltaXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9zZXRVcHBlckFuZ0xpbWl0XzEgPSBiLmFzbS5fdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0dyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHR3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gYi5hc20uJHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gYi5hc20uYXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20uYnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2dldFBhcmFtXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3dyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGIuYXNtLmN1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHh3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldFBhcmFtXzMgPSBiLmFzbS5kdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5dyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uZXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgencgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoencgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF8wID0gYi5hc20uZnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldEFuaXNvdHJvcGljRnJpY3Rpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEF3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRBbmlzb3Ryb3BpY0ZyaWN0aW9uXzIgPSBiLmFzbS5ndSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0Q29sbGlzaW9uU2hhcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRDb2xsaXNpb25TaGFwZV8wID0gYi5hc20uaHUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENvbnRhY3RQcm9jZXNzaW5nVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGRfMSA9IGIuYXNtLml1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIER3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRBY3RpdmF0aW9uU3RhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKER3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRBY3RpdmF0aW9uU3RhdGVfMSA9IGIuYXNtLmp1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEV3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9mb3JjZUFjdGl2YXRpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS5rdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfYWN0aXZhdGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9hY3RpdmF0ZV8wID0gYi5hc20ubHUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2FjdGl2YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfYWN0aXZhdGVfMSA9IGIuYXNtLm11KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEh3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9pc0FjdGl2ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2lzQWN0aXZlXzAgPSBiLmFzbS5udSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfaXNLaW5lbWF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9pc0tpbmVtYXRpY09iamVjdF8wID0gYi5hc20ub3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2lzU3RhdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfaXNTdGF0aWNPYmplY3RfMCA9IGIuYXNtLnB1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEt3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfaXNTdGF0aWNPcktpbmVtYXRpY09iamVjdF8wID0gYi5hc20ucXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldFJlc3RpdHV0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0UmVzdGl0dXRpb25fMCA9IGIuYXNtLnJ1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE13ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRGcmljdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldEZyaWN0aW9uXzAgPSBiLmFzbS5zdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBiLmFzbS50dSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0UmVzdGl0dXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE93ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRSZXN0aXR1dGlvbl8xID0gYi5hc20udXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldEZyaWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0RnJpY3Rpb25fMSA9IGIuYXNtLnZ1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFF3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFF3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGIuYXNtLnd1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRXb3JsZFRyYW5zZm9ybV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldFdvcmxkVHJhbnNmb3JtXzAgPSBiLmFzbS54dSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFN3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRDb2xsaXNpb25GbGFnc18wID0gYi5hc20ueXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENvbGxpc2lvbkZsYWdzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGIuYXNtLnp1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFV3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRXb3JsZFRyYW5zZm9ybV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS5BdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFZ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRDb2xsaXNpb25TaGFwZV8xID0gYi5hc20uQnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gYi5hc20uQ3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENjZFN3ZXB0U3BoZXJlUmFkaXVzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXNfMSA9IGIuYXNtLkR1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRVc2VySW5kZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRVc2VySW5kZXhfMCA9IGIuYXNtLkV1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFp3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRVc2VySW5kZXhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFp3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRVc2VySW5kZXhfMSA9IGIuYXNtLkZ1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICR3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRVc2VyUG9pbnRlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldFVzZXJQb2ludGVyXzAgPSBiLmFzbS5HdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBheCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0VXNlclBvaW50ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGF4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRVc2VyUG9pbnRlcl8xID0gYi5hc20uSHUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldEJyb2FkcGhhc2VIYW5kbGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBiLmFzbS5JdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzXzAgPSBiLmFzbS5KdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0T3ZlcmxhcHBpbmdPYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRPdmVybGFwcGluZ09iamVjdF8xID0gYi5hc20uS3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChleCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfX19kZXN0cm95X19fMCA9IGIuYXNtLkx1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRQb3NpdGlvbldvcmxkT25BXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0UG9zaXRpb25Xb3JsZE9uQV8wID0gYi5hc20uTXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldFBvc2l0aW9uV29ybGRPbkJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGd4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRQb3NpdGlvbldvcmxkT25CXzAgPSBiLmFzbS5OdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0QXBwbGllZEltcHVsc2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRBcHBsaWVkSW1wdWxzZV8wID0gYi5hc20uT3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldERpc3RhbmNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0RGlzdGFuY2VfMCA9IGIuYXNtLlB1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGp4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRfbV9sb2NhbFBvaW50QV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoanggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX2xvY2FsUG9pbnRBXzAgPSBiLmFzbS5RdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBreCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfc2V0X21fbG9jYWxQb2ludEFfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGt4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9zZXRfbV9sb2NhbFBvaW50QV8xID0gYi5hc20uUnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX2xvY2FsUG9pbnRCXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChseCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0X21fbG9jYWxQb2ludEJfMCA9IGIuYXNtLlN1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG14ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9zZXRfbV9sb2NhbFBvaW50Ql8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X3NldF9tX2xvY2FsUG9pbnRCXzEgPSBiLmFzbS5UdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBueCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0X21fcG9zaXRpb25Xb3JsZE9uQl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX3Bvc2l0aW9uV29ybGRPbkJfMCA9IGIuYXNtLlV1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG94ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9zZXRfbV9wb3NpdGlvbldvcmxkT25CXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChveCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfc2V0X21fcG9zaXRpb25Xb3JsZE9uQl8xID0gYi5hc20uVnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX3Bvc2l0aW9uV29ybGRPbkFfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRfbV9wb3NpdGlvbldvcmxkT25BXzAgPSBiLmFzbS5XdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfc2V0X21fcG9zaXRpb25Xb3JsZE9uQV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X3NldF9tX3Bvc2l0aW9uV29ybGRPbkFfMSA9IGIuYXNtLlh1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRfbV9ub3JtYWxXb3JsZE9uQl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX25vcm1hbFdvcmxkT25CXzAgPSBiLmFzbS5ZdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfc2V0X21fbm9ybWFsV29ybGRPbkJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9zZXRfbV9ub3JtYWxXb3JsZE9uQl8xID0gYi5hc20uWnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX3VzZXJQZXJzaXN0ZW50RGF0YV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX3VzZXJQZXJzaXN0ZW50RGF0YV8wID0gYi5hc20uX3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X3NldF9tX3VzZXJQZXJzaXN0ZW50RGF0YV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X3NldF9tX3VzZXJQZXJzaXN0ZW50RGF0YV8xID0gYi5hc20uJHUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2eCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfX19kZXN0cm95X19fMCA9IGIuYXNtLmF2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHd4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2J0UG9pbnQyUG9pbnRDb25zdHJhaW50XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3eCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9idFBvaW50MlBvaW50Q29uc3RyYWludF8yID0gYi5hc20uYnYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2J0UG9pbnQyUG9pbnRDb25zdHJhaW50XzQgPSBiLmFzbS5jdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5eCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9zZXRQaXZvdEFfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHl4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X3NldFBpdm90QV8xID0gYi5hc20uZHYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgenggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfc2V0UGl2b3RCXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6eCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9zZXRQaXZvdEJfMSA9IGIuYXNtLmV2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEF4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldFBpdm90SW5BXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChBeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9nZXRQaXZvdEluQV8wID0gYi5hc20uZnYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfZ2V0UGl2b3RJbkJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldFBpdm90SW5CXzAgPSBiLmFzbS5ndikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLmh2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIER4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5pdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBFeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEV4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20uanYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5rdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLmx2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldF9tX3NldHRpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldF9tX3NldHRpbmdfMCA9IGIuYXNtLm12KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEl4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X3NldF9tX3NldHRpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEl4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X3NldF9tX3NldHRpbmdfMSA9IGIuYXNtLm52KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEp4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20ub3YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfYnRTb2Z0Qm9keUhlbHBlcnNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEt4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlIZWxwZXJzX2J0U29mdEJvZHlIZWxwZXJzXzAgPSBiLmFzbS5wdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVSb3BlXzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVSb3BlXzUgPSBiLmFzbS5xdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVQYXRjaF85ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfQ3JlYXRlUGF0Y2hfOSA9IGIuYXNtLnJ2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE54ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlIZWxwZXJzX0NyZWF0ZVBhdGNoVVZfMTAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVQYXRjaFVWXzEwID0gYi5hc20uc3YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfQ3JlYXRlRWxsaXBzb2lkXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVFbGxpcHNvaWRfNCA9IGIuYXNtLnR2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFB4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlIZWxwZXJzX0NyZWF0ZUZyb21UcmlNZXNoXzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVGcm9tVHJpTWVzaF81ID0gYi5hc20udXYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfQ3JlYXRlRnJvbUNvbnZleEh1bGxfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFF4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlIZWxwZXJzX0NyZWF0ZUZyb21Db252ZXhIdWxsXzQgPSBiLmFzbS52dikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfX19kZXN0cm95X19fMCA9IGIuYXNtLnd2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFN4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnJvYWRwaGFzZVByb3h5X2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9nZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8wID0gYi5hc20ueHYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCcm9hZHBoYXNlUHJveHlfc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFR4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnJvYWRwaGFzZVByb3h5X3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS55dikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzAgPSBiLmFzbS56dikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBiLmFzbS5BdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCcm9hZHBoYXNlUHJveHlfX19kZXN0cm95X19fMCA9IGIuYXNtLkJ2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX3ROb2RlQXJyYXlfc2l6ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfdE5vZGVBcnJheV9zaXplXzAgPSBiLmFzbS5DdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90Tm9kZUFycmF5X2F0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90Tm9kZUFycmF5X2F0XzEgPSBiLmFzbS5EdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90Tm9kZUFycmF5X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChaeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90Tm9kZUFycmF5X19fZGVzdHJveV9fXzAgPSBiLmFzbS5FdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJveFNoYXBlX2J0Qm94U2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCR4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfYnRCb3hTaGFwZV8xID0gYi5hc20uRnYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCb3hTaGFwZV9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGF5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfc2V0TWFyZ2luXzEgPSBiLmFzbS5HdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBieSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJveFNoYXBlX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCb3hTaGFwZV9nZXRNYXJnaW5fMCA9IGIuYXNtLkh2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGN5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJveFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uSXYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZHkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCb3hTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5KdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBleSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJveFNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCb3hTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLkt2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLkx2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGd5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZV9nZXRfbV9pbmRpY2VzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChneSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZhY2VfZ2V0X21faW5kaWNlc18wID0gYi5hc20uTXYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGYWNlX3NldF9tX2luZGljZXNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGh5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZV9zZXRfbV9pbmRpY2VzXzEgPSBiLmFzbS5OdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZhY2VfZ2V0X21fcGxhbmVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGl5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZV9nZXRfbV9wbGFuZV8xID0gYi5hc20uT3YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgankgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGYWNlX3NldF9tX3BsYW5lXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZhY2Vfc2V0X21fcGxhbmVfMiA9IGIuYXNtLlB2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGt5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoa3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGYWNlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5RdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBseSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9EZWJ1Z0RyYXdlcl9EZWJ1Z0RyYXdlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfRGVidWdEcmF3ZXJfMCA9IGIuYXNtLlJ2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG15ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX2RyYXdMaW5lXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChteSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9EZWJ1Z0RyYXdlcl9kcmF3TGluZV8zID0gYi5hc20uU3YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfZHJhd0NvbnRhY3RQb2ludF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfZHJhd0NvbnRhY3RQb2ludF81ID0gYi5hc20uVHYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfcmVwb3J0RXJyb3JXYXJuaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChveSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9EZWJ1Z0RyYXdlcl9yZXBvcnRFcnJvcldhcm5pbmdfMSA9IGIuYXNtLlV2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHB5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX2RyYXczZFRleHRfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX2RyYXczZFRleHRfMiA9IGIuYXNtLlZ2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHF5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX3NldERlYnVnTW9kZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfc2V0RGVidWdNb2RlXzEgPSBiLmFzbS5XdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCByeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9EZWJ1Z0RyYXdlcl9nZXREZWJ1Z01vZGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX2dldERlYnVnTW9kZV8wID0gYi5hc20uWHYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX19fZGVzdHJveV9fXzAgPSBiLmFzbS5ZdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfYnRDYXBzdWxlU2hhcGVYXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfYnRDYXBzdWxlU2hhcGVYXzIgPSBiLmFzbS5adikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfc2V0TWFyZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfc2V0TWFyZ2luXzEgPSBiLmFzbS5fdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0TWFyZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0TWFyZ2luXzAgPSBiLmFzbS4kdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0VXBBeGlzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0VXBBeGlzXzAgPSBiLmFzbS5hdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0UmFkaXVzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0UmFkaXVzXzAgPSBiLmFzbS5idykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0SGFsZkhlaWdodF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVYX2dldEhhbGZIZWlnaHRfMCA9IGIuYXNtLmN3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHp5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHp5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLmR3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEF5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEF5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLmV3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLmZ3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEN5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVYX19fZGVzdHJveV9fXzAgPSBiLmFzbS5ndykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fYnRRdWF0ZXJuaW9uXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fYnRRdWF0ZXJuaW9uXzQgPSBiLmFzbS5odykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBFeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fc2V0VmFsdWVfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEV5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRWYWx1ZV80ID0gYi5hc20uaXcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldEV1bGVyWllYXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fc2V0RXVsZXJaWVhfMyA9IGIuYXNtLmp3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEd5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRSb3RhdGlvbl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldFJvdGF0aW9uXzIgPSBiLmFzbS5rdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fbm9ybWFsaXplXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fbm9ybWFsaXplXzAgPSBiLmFzbS5sdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fbGVuZ3RoMl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2xlbmd0aDJfMCA9IGIuYXNtLm13KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEp5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9sZW5ndGhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEp5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9sZW5ndGhfMCA9IGIuYXNtLm53KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEt5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9kb3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEt5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9kb3RfMSA9IGIuYXNtLm93KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEx5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9ub3JtYWxpemVkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fbm9ybWFsaXplZF8wID0gYi5hc20ucHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2dldEF4aXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE15ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9nZXRBeGlzXzAgPSBiLmFzbS5xdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25faW52ZXJzZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2ludmVyc2VfMCA9IGIuYXNtLnJ3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE95ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9nZXRBbmdsZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2dldEFuZ2xlXzAgPSBiLmFzbS5zdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fZ2V0QW5nbGVTaG9ydGVzdFBhdGhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFB5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9nZXRBbmdsZVNob3J0ZXN0UGF0aF8wID0gYi5hc20udHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2FuZ2xlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChReSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fYW5nbGVfMSA9IGIuYXNtLnV3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9hbmdsZVNob3J0ZXN0UGF0aF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2FuZ2xlU2hvcnRlc3RQYXRoXzEgPSBiLmFzbS52dykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfYWRkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfYWRkXzEgPSBiLmFzbS53dykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3Bfc3ViXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3Bfc3ViXzEgPSBiLmFzbS54dykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfbXVsXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfbXVsXzEgPSBiLmFzbS55dykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfbXVscV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX29wX211bHFfMSA9IGIuYXNtLnp3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFd5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9vcF9kaXZfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFd5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9vcF9kaXZfMSA9IGIuYXNtLkF3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFh5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl94XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25feF8wID0gYi5hc20uQncpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3lfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFl5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl95XzAgPSBiLmFzbS5DdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fel8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3pfMCA9IGIuYXNtLkR3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICR5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl93XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fd18wID0gYi5hc20uRXcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldFhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGF6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRYXzEgPSBiLmFzbS5GdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBieiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fc2V0WV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldFlfMSA9IGIuYXNtLkd3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGN6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRaXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fc2V0Wl8xID0gYi5hc20uSHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldFdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRXXzEgPSBiLmFzbS5JdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBleiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGV6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9fX2Rlc3Ryb3lfX18wID0gYi5hc20uSncpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2J0Q2Fwc3VsZVNoYXBlWl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2J0Q2Fwc3VsZVNoYXBlWl8yID0gYi5hc20uS3cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX3NldE1hcmdpbl8xID0gYi5hc20uTHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldE1hcmdpbl8wID0gYi5hc20uTXcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldFVwQXhpc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldFVwQXhpc18wID0gYi5hc20uTncpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwganogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldFJhZGl1c18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoanogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldFJhZGl1c18wID0gYi5hc20uT3cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldEhhbGZIZWlnaHRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGt6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWl9nZXRIYWxmSGVpZ2h0XzAgPSBiLmFzbS5QdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBseiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChseiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5RdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBteiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChteiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5SdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBueiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChueiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5TdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBveiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG96ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWl9fX2Rlc3Ryb3lfX18wID0gYi5hc20uVHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19nZXRfbV9zcGxpdEltcHVsc2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fZ2V0X21fc3BsaXRJbXB1bHNlXzAgPSBiLmFzbS5VdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnRhY3RTb2x2ZXJJbmZvX3NldF9tX3NwbGl0SW1wdWxzZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19zZXRfbV9zcGxpdEltcHVsc2VfMSA9IGIuYXNtLlZ3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJ6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fZ2V0X21fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJ6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fZ2V0X21fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGRfMCA9IGIuYXNtLld3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHN6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fc2V0X21fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fc2V0X21fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGRfMSA9IGIuYXNtLlh3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHR6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fZ2V0X21fbnVtSXRlcmF0aW9uc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19nZXRfbV9udW1JdGVyYXRpb25zXzAgPSBiLmFzbS5ZdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1eiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnRhY3RTb2x2ZXJJbmZvX3NldF9tX251bUl0ZXJhdGlvbnNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHV6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fc2V0X21fbnVtSXRlcmF0aW9uc18xID0gYi5hc20uWncpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20uX3cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHd6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50XzMgPSBiLmFzbS4kdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4eiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfNSA9IGIuYXNtLmF4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHl6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2VuYWJsZVNwcmluZ18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZW5hYmxlU3ByaW5nXzIgPSBiLmFzbS5ieCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB6eiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9zZXRTdGlmZm5lc3NfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHp6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X3NldFN0aWZmbmVzc18yID0gYi5hc20uY3gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RGFtcGluZ18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RGFtcGluZ18yID0gYi5hc20uZHgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8wID0gYi5hc20uZXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8xID0gYi5hc20uZngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8yID0gYi5hc20uZ3gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0TGluZWFyTG93ZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0TGluZWFyTG93ZXJMaW1pdF8xID0gYi5hc20uaHgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0TGluZWFyVXBwZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0TGluZWFyVXBwZXJMaW1pdF8xID0gYi5hc20uaXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0QW5ndWxhckxvd2VyTGltaXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEd6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X3NldEFuZ3VsYXJMb3dlckxpbWl0XzEgPSBiLmFzbS5qeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9zZXRBbmd1bGFyVXBwZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0QW5ndWxhclVwcGVyTGltaXRfMSA9IGIuYXNtLmt4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEl6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2dldEZyYW1lT2Zmc2V0QV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZ2V0RnJhbWVPZmZzZXRBXzAgPSBiLmFzbS5seCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLm14KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEt6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5ueCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEx6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20ub3gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE16ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5weCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLnF4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE96ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20ucngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTcGhlcmVTaGFwZV9idFNwaGVyZVNoYXBlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX2J0U3BoZXJlU2hhcGVfMSA9IGIuYXNtLnN4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFF6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3BoZXJlU2hhcGVfc2V0TWFyZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChReiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX3NldE1hcmdpbl8xID0gYi5hc20udHgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTcGhlcmVTaGFwZV9nZXRNYXJnaW5fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJ6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3BoZXJlU2hhcGVfZ2V0TWFyZ2luXzAgPSBiLmFzbS51eCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTcGhlcmVTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLnZ4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFR6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3BoZXJlU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20ud3gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTcGhlcmVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFV6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3BoZXJlU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS54eCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS55eCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9Mb2NhbENvbnZleFJlc3VsdF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfTG9jYWxDb252ZXhSZXN1bHRfNSA9IGIuYXNtLnp4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFh6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X2dldF9tX2hpdENvbGxpc2lvbk9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfZ2V0X21faGl0Q29sbGlzaW9uT2JqZWN0XzAgPSBiLmFzbS5BeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9oaXRDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFl6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X3NldF9tX2hpdENvbGxpc2lvbk9iamVjdF8xID0gYi5hc20uQngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfZ2V0X21fbG9jYWxTaGFwZUluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFp6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X2dldF9tX2xvY2FsU2hhcGVJbmZvXzAgPSBiLmFzbS5DeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9sb2NhbFNoYXBlSW5mb18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfc2V0X21fbG9jYWxTaGFwZUluZm9fMSA9IGIuYXNtLkR4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFBID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X2dldF9tX2hpdE5vcm1hbExvY2FsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9nZXRfbV9oaXROb3JtYWxMb2NhbF8wID0gYi5hc20uRXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYkEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfc2V0X21faGl0Tm9ybWFsTG9jYWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJBID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X3NldF9tX2hpdE5vcm1hbExvY2FsXzEgPSBiLmFzbS5GeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9nZXRfbV9oaXRQb2ludExvY2FsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9nZXRfbV9oaXRQb2ludExvY2FsXzAgPSBiLmFzbS5HeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9oaXRQb2ludExvY2FsXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9oaXRQb2ludExvY2FsXzEgPSBiLmFzbS5IeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9nZXRfbV9oaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZUEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfZ2V0X21faGl0RnJhY3Rpb25fMCA9IGIuYXNtLkl4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZBID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X3NldF9tX2hpdEZyYWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9oaXRGcmFjdGlvbl8xID0gYi5hc20uSngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ0EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdBID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X19fZGVzdHJveV9fXzAgPSBiLmFzbS5LeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9idENvbnN0cmFpbnRQYXJhbXNfQlRfQ09OU1RSQUlOVF9FUlAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9idENvbnN0cmFpbnRQYXJhbXNfQlRfQ09OU1RSQUlOVF9FUlAgPSBiLmFzbS5MeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9idENvbnN0cmFpbnRQYXJhbXNfQlRfQ09OU1RSQUlOVF9TVE9QX0VSUCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGlBID0gYi5fZW1zY3JpcHRlbl9lbnVtX2J0Q29uc3RyYWludFBhcmFtc19CVF9DT05TVFJBSU5UX1NUT1BfRVJQID0gYi5hc20uTXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgakEgPSBiLl9lbXNjcmlwdGVuX2VudW1fYnRDb25zdHJhaW50UGFyYW1zX0JUX0NPTlNUUkFJTlRfQ0ZNID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoakEgPSBiLl9lbXNjcmlwdGVuX2VudW1fYnRDb25zdHJhaW50UGFyYW1zX0JUX0NPTlNUUkFJTlRfQ0ZNID0gYi5hc20uTngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga0EgPSBiLl9lbXNjcmlwdGVuX2VudW1fYnRDb25zdHJhaW50UGFyYW1zX0JUX0NPTlNUUkFJTlRfU1RPUF9DRk0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9idENvbnN0cmFpbnRQYXJhbXNfQlRfQ09OU1RSQUlOVF9TVE9QX0NGTSA9IGIuYXNtLk94KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGxBID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9GTE9BVCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxBID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9GTE9BVCA9IGIuYXNtLlB4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1BID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9ET1VCTEUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9QSFlfU2NhbGFyVHlwZV9QSFlfRE9VQkxFID0gYi5hc20uUXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbkEgPSBiLl9lbXNjcmlwdGVuX2VudW1fUEhZX1NjYWxhclR5cGVfUEhZX0lOVEVHRVIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChuQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9QSFlfU2NhbGFyVHlwZV9QSFlfSU5URUdFUiA9IGIuYXNtLlJ4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG9BID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9TSE9SVCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9BID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9TSE9SVCA9IGIuYXNtLlN4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBBID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9GSVhFRFBPSU5UODggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9QSFlfU2NhbGFyVHlwZV9QSFlfRklYRURQT0lOVDg4ID0gYi5hc20uVHgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcUEgPSBiLl9lbXNjcmlwdGVuX2VudW1fUEhZX1NjYWxhclR5cGVfUEhZX1VDSEFSID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocUEgPSBiLl9lbXNjcmlwdGVuX2VudW1fUEhZX1NjYWxhclR5cGVfUEhZX1VDSEFSID0gYi5hc20uVXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYi5fbWFsbG9jID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gKGIuX21hbGxvYyA9IGIuYXNtLlZ4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLl9mcmVlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gKGIuX2ZyZWUgPSBiLmFzbS5XeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYi5keW5DYWxsX3ZpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gKGIuZHluQ2FsbF92aSA9IGIuYXNtLlh4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLmR5bkNhbGxfdiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIChiLmR5bkNhbGxfdiA9IGIuYXNtLll4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLmFzbSA9IGFiOwogICAgICAgIGIuVVRGOFRvU3RyaW5nID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgcmV0dXJuIGEgPyB4YShBYSwgYSwgYykgOiAiIgogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYi5hZGRGdW5jdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIGlmICghcmEpIHsKICAgICAgICAgICAgcmEgPSBuZXcgV2Vha01hcDsKICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCB1YS5sZW5ndGg7IGQrKykgewogICAgICAgICAgICAgIHZhciBlID0gdWEuZ2V0KGQpOwogICAgICAgICAgICAgIGUgJiYgcmEuc2V0KGUsIGQpCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChyYS5oYXMoYSkpCiAgICAgICAgICAgIGEgPSByYS5nZXQoYSk7CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKHFhLmxlbmd0aCkKICAgICAgICAgICAgICBkID0gcWEucG9wKCk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGQgPSB1YS5sZW5ndGg7CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHVhLmdyb3coMSkKICAgICAgICAgICAgICB9IGNhdGNoIChQKSB7CiAgICAgICAgICAgICAgICBpZiAoIShQIGluc3RhbmNlb2YgUmFuZ2VFcnJvcikpCiAgICAgICAgICAgICAgICAgIHRocm93IFA7CiAgICAgICAgICAgICAgICB0aHJvdyAiVW5hYmxlIHRvIGdyb3cgd2FzbSB0YWJsZS4gU2V0IEFMTE9XX1RBQkxFX0dST1dUSC4iOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIHVhLnNldChkLCBhKQogICAgICAgICAgICB9IGNhdGNoIChQKSB7CiAgICAgICAgICAgICAgaWYgKCEoUCBpbnN0YW5jZW9mIFR5cGVFcnJvcikpCiAgICAgICAgICAgICAgICB0aHJvdyBQOwogICAgICAgICAgICAgIGFzc2VydCgidW5kZWZpbmVkIiAhPT0gdHlwZW9mIGMsICJNaXNzaW5nIHNpZ25hdHVyZSBhcmd1bWVudCB0byBhZGRGdW5jdGlvbiIpOwogICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09PSB0eXBlb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgIHZhciBmID0gewogICAgICAgICAgICAgICAgICBpOiAiaTMyIiwKICAgICAgICAgICAgICAgICAgajogImk2NCIsCiAgICAgICAgICAgICAgICAgIGY6ICJmMzIiLAogICAgICAgICAgICAgICAgICBkOiAiZjY0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAsIG0gPSB7CiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFtdLAogICAgICAgICAgICAgICAgICByZXN1bHRzOiAidiIgPT0gY1swXSA/IFtdIDogW2ZbY1swXV1dCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZm9yIChlID0gMTsgZSA8IGMubGVuZ3RoOyArK2UpCiAgICAgICAgICAgICAgICAgIG0ucGFyYW1ldGVycy5wdXNoKGZbY1tlXV0pOwogICAgICAgICAgICAgICAgYyA9IG5ldyBXZWJBc3NlbWJseS5GdW5jdGlvbihtLGEpCiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGYgPSBbMSwgMCwgMSwgOTZdOwogICAgICAgICAgICAgICAgbSA9IGMuc2xpY2UoMCwgMSk7CiAgICAgICAgICAgICAgICBjID0gYy5zbGljZSgxKTsKICAgICAgICAgICAgICAgIHZhciBDID0gewogICAgICAgICAgICAgICAgICBpOiAxMjcsCiAgICAgICAgICAgICAgICAgIGo6IDEyNiwKICAgICAgICAgICAgICAgICAgZjogMTI1LAogICAgICAgICAgICAgICAgICBkOiAxMjQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBmLnB1c2goYy5sZW5ndGgpOwogICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IGMubGVuZ3RoOyArK2UpCiAgICAgICAgICAgICAgICAgIGYucHVzaChDW2NbZV1dKTsKICAgICAgICAgICAgICAgICJ2IiA9PSBtID8gZi5wdXNoKDApIDogZiA9IGYuY29uY2F0KFsxLCBDW21dXSk7CiAgICAgICAgICAgICAgICBmWzFdID0gZi5sZW5ndGggLSAyOwogICAgICAgICAgICAgICAgYyA9IG5ldyBVaW50OEFycmF5KFswLCA5NywgMTE1LCAxMDksIDEsIDAsIDAsIDBdLmNvbmNhdChmLCBbMiwgNywgMSwgMSwgMTAxLCAxLCAxMDIsIDAsIDAsIDcsIDUsIDEsIDEsIDEwMiwgMCwgMF0pKTsKICAgICAgICAgICAgICAgIGMgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGMpOwogICAgICAgICAgICAgICAgYyA9IChuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoYyx7CiAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICBmOiBhCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKS5leHBvcnRzLmYKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdWEuc2V0KGQsIGMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYSA9IHJhW2FdID0gZAogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHZhciByQTsKICAgICAgICBiLnRoZW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICBpZiAockEpCiAgICAgICAgICAgIGEoYik7CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIGMgPSBiLm9uUnVudGltZUluaXRpYWxpemVkOwogICAgICAgICAgICBiLm9uUnVudGltZUluaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgYyAmJiBjKCk7CiAgICAgICAgICAgICAgYShiKQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYgogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUGEgPSBmdW5jdGlvbiBzQSgpIHsKICAgICAgICAgIHJBIHx8IHRBKCk7CiAgICAgICAgICByQSB8fCAoUGEgPSBzQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHRBKCkgewogICAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgICAgaWYgKCFyQSAmJiAockEgPSAhMCwKICAgICAgICAgICAgICBiLmNhbGxlZFJ1biA9ICEwLAogICAgICAgICAgICAgICF2YSkpIHsKICAgICAgICAgICAgICBMYSA9ICEwOwogICAgICAgICAgICAgIEdhKElhKTsKICAgICAgICAgICAgICBHYShKYSk7CiAgICAgICAgICAgICAgaWYgKGIub25SdW50aW1lSW5pdGlhbGl6ZWQpCiAgICAgICAgICAgICAgICBiLm9uUnVudGltZUluaXRpYWxpemVkKCk7CiAgICAgICAgICAgICAgaWYgKGIucG9zdFJ1bikKICAgICAgICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYi5wb3N0UnVuICYmIChiLnBvc3RSdW4gPSBbYi5wb3N0UnVuXSk7IGIucG9zdFJ1bi5sZW5ndGg7ICkgewogICAgICAgICAgICAgICAgICB2YXIgYyA9IGIucG9zdFJ1bi5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBLYS51bnNoaWZ0KGMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgR2EoS2EpCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmICghKDAgPCBOYSkpIHsKICAgICAgICAgICAgaWYgKGIucHJlUnVuKQogICAgICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYi5wcmVSdW4gJiYgKGIucHJlUnVuID0gW2IucHJlUnVuXSk7IGIucHJlUnVuLmxlbmd0aDsgKQogICAgICAgICAgICAgICAgTWEoKTsKICAgICAgICAgICAgR2EoSGEpOwogICAgICAgICAgICAwIDwgTmEgfHwgKGIuc2V0U3RhdHVzID8gKGIuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksCiAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgIGIuc2V0U3RhdHVzKCIiKQogICAgICAgICAgICAgICAgfSwgMSk7CiAgICAgICAgICAgICAgICBhKCkKICAgICAgICAgICAgICB9LCAxKSkgOiBhKCkpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGIucnVuID0gdEE7CiAgICAgICAgaWYgKGIucHJlSW5pdCkKICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYi5wcmVJbml0ICYmIChiLnByZUluaXQgPSBbYi5wcmVJbml0XSk7IDAgPCBiLnByZUluaXQubGVuZ3RoOyApCiAgICAgICAgICAgIGIucHJlSW5pdC5wb3AoKSgpOwogICAgICAgIG5vRXhpdFJ1bnRpbWUgPSAhMDsKICAgICAgICB0QSgpOwogICAgICAgIGZ1bmN0aW9uIGcoKSB7fQogICAgICAgIGcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgZy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnOwogICAgICAgIGcucHJvdG90eXBlLiR4ID0gZzsKICAgICAgICBnLmF5ID0ge307CiAgICAgICAgYi5XcmFwcGVyT2JqZWN0ID0gZzsKICAgICAgICBmdW5jdGlvbiBoKGEpIHsKICAgICAgICAgIHJldHVybiAoYSB8fCBnKS5heQogICAgICAgIH0KICAgICAgICBiLmdldENhY2hlID0gaDsKICAgICAgICBmdW5jdGlvbiBrKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gaChjKQogICAgICAgICAgICAsIGUgPSBkW2FdOwogICAgICAgICAgaWYgKGUpCiAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgZSA9IE9iamVjdC5jcmVhdGUoKGMgfHwgZykucHJvdG90eXBlKTsKICAgICAgICAgIGUuWnggPSBhOwogICAgICAgICAgcmV0dXJuIGRbYV0gPSBlCiAgICAgICAgfQogICAgICAgIGIud3JhcFBvaW50ZXIgPSBrOwogICAgICAgIGIuY2FzdE9iamVjdCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHJldHVybiBrKGEuWngsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLk5VTEwgPSBrKDApOwogICAgICAgIGIuZGVzdHJveSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIGlmICghYS5fX2Rlc3Ryb3lfXykKICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBDYW5ub3QgZGVzdHJveSBvYmplY3QuIChEaWQgeW91IGNyZWF0ZSBpdCB5b3Vyc2VsZj8pIjsKICAgICAgICAgIGEuX19kZXN0cm95X18oKTsKICAgICAgICAgIGRlbGV0ZSBoKGEuJHgpW2EuWnhdCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLmNvbXBhcmUgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICByZXR1cm4gYS5aeCA9PT0gYy5aeAogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYi5nZXRQb2ludGVyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgcmV0dXJuIGEuWngKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGIuZ2V0Q2xhc3MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICByZXR1cm4gYS4keAogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdmFyIHVBID0gMAogICAgICAgICAgLCB2QSA9IDAKICAgICAgICAgICwgd0EgPSAwCiAgICAgICAgICAsIHhBID0gW10KICAgICAgICAgICwgeUEgPSAwOwogICAgICAgIGZ1bmN0aW9uIHpBKCkgewogICAgICAgICAgaWYgKHlBKSB7CiAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgeEEubGVuZ3RoOyBhKyspCiAgICAgICAgICAgICAgYi5fZnJlZSh4QVthXSk7CiAgICAgICAgICAgIHhBLmxlbmd0aCA9IDA7CiAgICAgICAgICAgIGIuX2ZyZWUodUEpOwogICAgICAgICAgICB1QSA9IDA7CiAgICAgICAgICAgIHZBICs9IHlBOwogICAgICAgICAgICB5QSA9IDAKICAgICAgICAgIH0KICAgICAgICAgIHVBIHx8ICh2QSArPSAxMjgsCiAgICAgICAgICAgIHVBID0gYi5fbWFsbG9jKHZBKSwKICAgICAgICAgICAgYXNzZXJ0KHVBKSk7CiAgICAgICAgICB3QSA9IDAKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gQUEoYSwgYykgewogICAgICAgICAgYXNzZXJ0KHVBKTsKICAgICAgICAgIGEgPSBhLmxlbmd0aCAqIGMuQllURVNfUEVSX0VMRU1FTlQ7CiAgICAgICAgICBhID0gYSArIDcgJiAtODsKICAgICAgICAgIHdBICsgYSA+PSB2QSA/IChhc3NlcnQoMCA8IGEpLAogICAgICAgICAgICB5QSArPSBhLAogICAgICAgICAgICBjID0gYi5fbWFsbG9jKGEpLAogICAgICAgICAgICB4QS5wdXNoKGMpKSA6IChjID0gdUEgKyB3QSwKICAgICAgICAgICAgd0EgKz0gYSk7CiAgICAgICAgICByZXR1cm4gYwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBCQShhLCBjLCBkKSB7CiAgICAgICAgICBkID4+Pj0gMDsKICAgICAgICAgIHN3aXRjaCAoYy5CWVRFU19QRVJfRUxFTUVOVCkgewogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgZCA+Pj49IDE7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBkID4+Pj0gMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgIGQgPj4+PSAzCiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IGEubGVuZ3RoOyBlKyspCiAgICAgICAgICAgIGNbZCArIGVdID0gYVtlXQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBDQShhKSB7CiAgICAgICAgICBpZiAoInN0cmluZyIgPT09IHR5cGVvZiBhKSB7CiAgICAgICAgICAgIGZvciAodmFyIGMgPSAwLCBkID0gMDsgZCA8IGEubGVuZ3RoOyArK2QpIHsKICAgICAgICAgICAgICB2YXIgZSA9IGEuY2hhckNvZGVBdChkKTsKICAgICAgICAgICAgICA1NTI5NiA8PSBlICYmIDU3MzQzID49IGUgJiYgKGUgPSA2NTUzNiArICgoZSAmIDEwMjMpIDw8IDEwKSB8IGEuY2hhckNvZGVBdCgrK2QpICYgMTAyMyk7CiAgICAgICAgICAgICAgMTI3ID49IGUgPyArK2MgOiBjID0gMjA0NyA+PSBlID8gYyArIDIgOiA2NTUzNSA+PSBlID8gYyArIDMgOiBjICsgNAogICAgICAgICAgICB9CiAgICAgICAgICAgIGMgPSBBcnJheShjICsgMSk7CiAgICAgICAgICAgIGUgPSBjLmxlbmd0aDsKICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgICAgIGlmICgwIDwgZSkgewogICAgICAgICAgICAgIGUgPSBkICsgZSAtIDE7CiAgICAgICAgICAgICAgZm9yICh2YXIgZiA9IDA7IGYgPCBhLmxlbmd0aDsgKytmKSB7CiAgICAgICAgICAgICAgICB2YXIgbSA9IGEuY2hhckNvZGVBdChmKTsKICAgICAgICAgICAgICAgIGlmICg1NTI5NiA8PSBtICYmIDU3MzQzID49IG0pIHsKICAgICAgICAgICAgICAgICAgdmFyIEMgPSBhLmNoYXJDb2RlQXQoKytmKTsKICAgICAgICAgICAgICAgICAgbSA9IDY1NTM2ICsgKChtICYgMTAyMykgPDwgMTApIHwgQyAmIDEwMjMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgxMjcgPj0gbSkgewogICAgICAgICAgICAgICAgICBpZiAoZCA+PSBlKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICBjW2QrK10gPSBtCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBpZiAoMjA0NyA+PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQgKyAxID49IGUpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjW2QrK10gPSAxOTIgfCBtID4+IDYKICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoNjU1MzUgPj0gbSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGQgKyAyID49IGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgY1tkKytdID0gMjI0IHwgbSA+PiAxMgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZCArIDMgPj0gZSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjW2QrK10gPSAyNDAgfCBtID4+IDE4OwogICAgICAgICAgICAgICAgICAgICAgY1tkKytdID0gMTI4IHwgbSA+PiAxMiAmIDYzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNbZCsrXSA9IDEyOCB8IG0gPj4gNiAmIDYzCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY1tkKytdID0gMTI4IHwgbSAmIDYzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNbZF0gPSAwCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYSA9IEFBKGMsIHphKTsKICAgICAgICAgICAgQkEoYywgemEsIGEpCiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBEQShhKSB7CiAgICAgICAgICBpZiAoIm9iamVjdCIgPT09IHR5cGVvZiBhKSB7CiAgICAgICAgICAgIHZhciBjID0gQUEoYSwgQ2EpOwogICAgICAgICAgICBCQShhLCBDYSwgYyk7CiAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBFQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb2xsaXNpb25Xb3JsZCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgRUEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgRUEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRUE7CiAgICAgICAgRUEucHJvdG90eXBlLiR4ID0gRUE7CiAgICAgICAgRUEuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29sbGlzaW9uV29ybGQgPSBFQTsKICAgICAgICBFQS5wcm90b3R5cGUuZ2V0RGlzcGF0Y2hlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoYmIodGhpcy5aeCksIEZBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLnJheVRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBjYihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmdldFBhaXJDYWNoZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZGIodGhpcy5aeCksIEdBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmdldERpc3BhdGNoSW5mbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZWIodGhpcy5aeCksIGwpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUuYWRkQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gZmIoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBnYihlLCBhLCBjKSA6IGhiKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUucmVtb3ZlQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGliKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUuZ2V0QnJvYWRwaGFzZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoamIodGhpcy5aeCksIEhBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmNvbnZleFN3ZWVwVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIHZhciBtID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAga2IobSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVBLnByb3RvdHlwZS5jb250YWN0UGFpclRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBsYihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmNvbnRhY3RUZXN0ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBtYihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLnVwZGF0ZVNpbmdsZUFhYmIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgb2IoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVBLnByb3RvdHlwZS5zZXREZWJ1Z0RyYXdlciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBwYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmdldERlYnVnRHJhd2VyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhxYih0aGlzLlp4KSwgSUEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUuZGVidWdEcmF3V29ybGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJiKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUuZGVidWdEcmF3T2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgc2IoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVBLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgdGIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0Q29sbGlzaW9uU2hhcGUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIG4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBuOwogICAgICAgIG4ucHJvdG90eXBlLiR4ID0gbjsKICAgICAgICBuLmF5ID0ge307CiAgICAgICAgYi5idENvbGxpc2lvblNoYXBlID0gbjsKICAgICAgICBuLnByb3RvdHlwZS5zZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdWIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIG4ucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodmIodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBuLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHdiKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBuLnByb3RvdHlwZS5zZXRNYXJnaW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeGIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIG4ucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHliKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBuLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgemIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHEoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0Q29sbGlzaW9uT2JqZWN0LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBxLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIHEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gcTsKICAgICAgICBxLnByb3RvdHlwZS4keCA9IHE7CiAgICAgICAgcS5heSA9IHt9OwogICAgICAgIGIuYnRDb2xsaXNpb25PYmplY3QgPSBxOwogICAgICAgIHEucHJvdG90eXBlLnNldEFuaXNvdHJvcGljRnJpY3Rpb24gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEFiKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5nZXRDb2xsaXNpb25TaGFwZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQmIodGhpcy5aeCksIG4pCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBDYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuc2V0QWN0aXZhdGlvblN0YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIERiKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5mb3JjZUFjdGl2YXRpb25TdGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBFYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuYWN0aXZhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdm9pZCAwID09PSBhID8gRmIoYykgOiBHYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuaXNBY3RpdmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUhiKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5pc0tpbmVtYXRpY09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhSWIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLmlzU3RhdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFKYih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuaXNTdGF0aWNPcktpbmVtYXRpY09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhS2IodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLmdldFJlc3RpdHV0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gTGIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLmdldEZyaWN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gTWIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLmdldFJvbGxpbmdGcmljdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE5iKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5zZXRSZXN0aXR1dGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBPYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuc2V0RnJpY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUGIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLnNldFJvbGxpbmdGcmljdGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBRYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuZ2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFJiKHRoaXMuWngpLCByKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuZ2V0Q29sbGlzaW9uRmxhZ3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBTYih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuc2V0Q29sbGlzaW9uRmxhZ3MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVGIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLnNldFdvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFViKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5zZXRDb2xsaXNpb25TaGFwZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBWYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuc2V0Q2NkTW90aW9uVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFhiKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5zZXRDY2RTd2VwdFNwaGVyZVJhZGl1cyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBZYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuZ2V0VXNlckluZGV4ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gWmIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLnNldFVzZXJJbmRleCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICAkYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuZ2V0VXNlclBvaW50ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGFjKHRoaXMuWngpLCBKQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLnNldFVzZXJQb2ludGVyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGJjKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5nZXRCcm9hZHBoYXNlSGFuZGxlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhjYyh0aGlzLlp4KSwgdCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBkYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gdSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnREeW5hbWljc1dvcmxkLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB1LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRUEucHJvdG90eXBlKTsKICAgICAgICB1LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHU7CiAgICAgICAgdS5wcm90b3R5cGUuJHggPSB1OwogICAgICAgIHUuYXkgPSB7fTsKICAgICAgICBiLmJ0RHluYW1pY3NXb3JsZCA9IHU7CiAgICAgICAgdS5wcm90b3R5cGUuYWRkQWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGVjKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5yZW1vdmVBY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZmMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmdldFNvbHZlckluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGhjKHRoaXMuWngpLCB2KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2sgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGMgPyBpYyhlLCBhKSA6IHZvaWQgMCA9PT0gZCA/IGpjKGUsIGEsIGMpIDoga2MoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmdldERpc3BhdGNoZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGxjKHRoaXMuWngpLCBGQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLnJheVRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBtYyhlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuZ2V0UGFpckNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhuYyh0aGlzLlp4KSwgR0EpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5nZXREaXNwYXRjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKG9jKHRoaXMuWngpLCBsKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuYWRkQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gcGMoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBxYyhlLCBhLCBjKSA6IHJjKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5yZW1vdmVDb2xsaXNpb25PYmplY3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgc2MoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmdldEJyb2FkcGhhc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHRjKHRoaXMuWngpLCBIQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmNvbnZleFN3ZWVwVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIHZhciBtID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgdWMobSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmNvbnRhY3RQYWlyVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHZjKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5jb250YWN0VGVzdCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgd2MoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLnVwZGF0ZVNpbmdsZUFhYmIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeGMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLnNldERlYnVnRHJhd2VyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHljKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5nZXREZWJ1Z0RyYXdlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoemModGhpcy5aeCksIElBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuZGVidWdEcmF3V29ybGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEFjKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5kZWJ1Z0RyYXdPYmplY3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBCYyhlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIENjKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBLQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRUeXBlZENvbnN0cmFpbnQsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIEtBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEtBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEtBOwogICAgICAgIEtBLnByb3RvdHlwZS4keCA9IEtBOwogICAgICAgIEtBLmF5ID0ge307CiAgICAgICAgYi5idFR5cGVkQ29uc3RyYWludCA9IEtBOwogICAgICAgIEtBLnByb3RvdHlwZS5lbmFibGVGZWVkYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBEYyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgS0EucHJvdG90eXBlLmdldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEVjKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBLQS5wcm90b3R5cGUuc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZjKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBLQS5wcm90b3R5cGUuZ2V0UGFyYW0gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiBHYyhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgS0EucHJvdG90eXBlLnNldFBhcmFtID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgSGMoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEtBLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgSWModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIExBKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidENvbmNhdmVTaGFwZSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgTEEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgTEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTEE7CiAgICAgICAgTEEucHJvdG90eXBlLiR4ID0gTEE7CiAgICAgICAgTEEuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29uY2F2ZVNoYXBlID0gTEE7CiAgICAgICAgTEEucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBKYyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTEEucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoS2ModGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMQS5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBMYyhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTEEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBNYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gTUEoYSwgYykgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gTmMoYSwgYyk7CiAgICAgICAgICBoKE1BKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgTUEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgTUEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTUE7CiAgICAgICAgTUEucHJvdG90eXBlLiR4ID0gTUE7CiAgICAgICAgTUEuYXkgPSB7fTsKICAgICAgICBiLmJ0Q2Fwc3VsZVNoYXBlID0gTUE7CiAgICAgICAgTUEucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBPYyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFBjKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNQS5wcm90b3R5cGUuZ2V0VXBBeGlzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUWModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE1BLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBSYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLmdldEhhbGZIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBTYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBUYyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoVWModGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNQS5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBWYyhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBXYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gSUEoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0SURlYnVnRHJhdywgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgSUEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgSUEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSUE7CiAgICAgICAgSUEucHJvdG90eXBlLiR4ID0gSUE7CiAgICAgICAgSUEuYXkgPSB7fTsKICAgICAgICBiLmJ0SURlYnVnRHJhdyA9IElBOwogICAgICAgIElBLnByb3RvdHlwZS5kcmF3TGluZSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIFhjKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJQS5wcm90b3R5cGUuZHJhd0NvbnRhY3RQb2ludCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIHZhciBtID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgWWMobSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElBLnByb3RvdHlwZS5yZXBvcnRFcnJvcldhcm5pbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgYSA9IGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhID8gYS5aeCA6IENBKGEpOwogICAgICAgICAgWmMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElBLnByb3RvdHlwZS5kcmF3M2RUZXh0ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgekEoKTsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjID0gYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgPyBjLlp4IDogQ0EoYyk7CiAgICAgICAgICAkYyhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSUEucHJvdG90eXBlLnNldERlYnVnTW9kZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBhZChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSUEucHJvdG90eXBlLmdldERlYnVnTW9kZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGJkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGNkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBOQShhKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gYSA/IGRkKCkgOiBlZChhKTsKICAgICAgICAgIGgoTkEpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBOQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBOQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBOQTsKICAgICAgICBOQS5wcm90b3R5cGUuJHggPSBOQTsKICAgICAgICBOQS5heSA9IHt9OwogICAgICAgIGIuYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbiA9IE5BOwogICAgICAgIE5BLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZmQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIE9BKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidFRyaWFuZ2xlTWVzaFNoYXBlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBPQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExBLnByb3RvdHlwZSk7CiAgICAgICAgT0EucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gT0E7CiAgICAgICAgT0EucHJvdG90eXBlLiR4ID0gT0E7CiAgICAgICAgT0EuYXkgPSB7fTsKICAgICAgICBiLmJ0VHJpYW5nbGVNZXNoU2hhcGUgPSBPQTsKICAgICAgICBPQS5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGdkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPQS5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhoZCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9BLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGlkKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGpkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiB3KCkgewogICAgICAgICAgdGhpcy5aeCA9IGtkKCk7CiAgICAgICAgICBoKHcpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICB3LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocS5wcm90b3R5cGUpOwogICAgICAgIHcucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdzsKICAgICAgICB3LnByb3RvdHlwZS4keCA9IHc7CiAgICAgICAgdy5heSA9IHt9OwogICAgICAgIGIuYnRHaG9zdE9iamVjdCA9IHc7CiAgICAgICAgdy5wcm90b3R5cGUuZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbGQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmdldE92ZXJsYXBwaW5nT2JqZWN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKG1kKGMsIGEpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0QW5pc290cm9waWNGcmljdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgbmQoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmdldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhvZCh0aGlzLlp4KSwgbikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLnNldENvbnRhY3RQcm9jZXNzaW5nVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHBkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5zZXRBY3RpdmF0aW9uU3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcWQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmZvcmNlQWN0aXZhdGlvblN0YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5hY3RpdmF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGEgPyBzZChjKSA6IHRkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5pc0FjdGl2ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhdWQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmlzS2luZW1hdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISF2ZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuaXNTdGF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIXdkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISF4ZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuZ2V0UmVzdGl0dXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB5ZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuZ2V0RnJpY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB6ZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuZ2V0Um9sbGluZ0ZyaWN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gQWQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLnNldFJlc3RpdHV0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEJkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5zZXRGcmljdGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBDZChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0Um9sbGluZ0ZyaWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIERkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5nZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoRWQodGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5nZXRDb2xsaXNpb25GbGFncyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEZkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5zZXRDb2xsaXNpb25GbGFncyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBHZChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSGQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLnNldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIElkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5zZXRDY2RNb3Rpb25UaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSmQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLnNldENjZFN3ZXB0U3BoZXJlUmFkaXVzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEtkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5nZXRVc2VySW5kZXggPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0VXNlckluZGV4ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE1kKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5nZXRVc2VyUG9pbnRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTmQodGhpcy5aeCksIEpBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0VXNlclBvaW50ZXIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgT2QoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmdldEJyb2FkcGhhc2VIYW5kbGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFBkKHRoaXMuWngpLCB0KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFFkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBQQShhLCBjKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBSZChhLCBjKTsKICAgICAgICAgIGgoUEEpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBQQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKTsKICAgICAgICBQQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBQQTsKICAgICAgICBQQS5wcm90b3R5cGUuJHggPSBQQTsKICAgICAgICBQQS5heSA9IHt9OwogICAgICAgIGIuYnRDb25lU2hhcGUgPSBQQTsKICAgICAgICBQQS5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFNkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBQQS5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhUZCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFBBLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIFVkKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBQQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFZkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBRQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRBY3Rpb25JbnRlcmZhY2UsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFFBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFFBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFFBOwogICAgICAgIFFBLnByb3RvdHlwZS4keCA9IFFBOwogICAgICAgIFFBLmF5ID0ge307CiAgICAgICAgYi5idEFjdGlvbkludGVyZmFjZSA9IFFBOwogICAgICAgIFFBLnByb3RvdHlwZS51cGRhdGVBY3Rpb24gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIFdkKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBRQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFhkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBwKGEsIGMsIGQpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGEgPyBZZCgpIDogdm9pZCAwID09PSBjID8gX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfYnRWZWN0b3IzXzEoYSkgOiB2b2lkIDAgPT09IGQgPyBfZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19idFZlY3RvcjNfMihhLCBjKSA6IFpkKGEsIGMsIGQpOwogICAgICAgICAgaChwKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgcC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBwLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHA7CiAgICAgICAgcC5wcm90b3R5cGUuJHggPSBwOwogICAgICAgIHAuYXkgPSB7fTsKICAgICAgICBiLmJ0VmVjdG9yMyA9IHA7CiAgICAgICAgcC5wcm90b3R5cGUubGVuZ3RoID0gcC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gJGQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnggPSBwLnByb3RvdHlwZS54ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gYWUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnkgPSBwLnByb3RvdHlwZS55ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gYmUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnogPSBwLnByb3RvdHlwZS56ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gY2UodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZGUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZWUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZmUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnNldFZhbHVlID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZ2UoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLm5vcm1hbGl6ZSA9IHAucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgaGUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnJvdGF0ZSA9IHAucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuIGsoaWUoZCwgYSwgYyksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5kb3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGplKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5vcF9tdWwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoa2UoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5vcF9hZGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsobGUoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5vcF9zdWIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsobWUoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgbmUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIFJBKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidFZlaGljbGVSYXljYXN0ZXIsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFJBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFJBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJBOwogICAgICAgIFJBLnByb3RvdHlwZS4keCA9IFJBOwogICAgICAgIFJBLmF5ID0ge307CiAgICAgICAgYi5idFZlaGljbGVSYXljYXN0ZXIgPSBSQTsKICAgICAgICBSQS5wcm90b3R5cGUuY2FzdFJheSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIG9lKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHBlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBTQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRRdWFkV29yZCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgU0EucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgU0EucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU0E7CiAgICAgICAgU0EucHJvdG90eXBlLiR4ID0gU0E7CiAgICAgICAgU0EuYXkgPSB7fTsKICAgICAgICBiLmJ0UXVhZFdvcmQgPSBTQTsKICAgICAgICBTQS5wcm90b3R5cGUueCA9IFNBLnByb3RvdHlwZS54ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gcWUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFNBLnByb3RvdHlwZS55ID0gU0EucHJvdG90eXBlLnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiByZSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgU0EucHJvdG90eXBlLnogPSBTQS5wcm90b3R5cGUueiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHNlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTQS5wcm90b3R5cGUudyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHRlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTQS5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB1ZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgU0EucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdmUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFNBLnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHdlKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTQS5wcm90b3R5cGUuc2V0VyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB4ZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgU0EucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB5ZSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gVEEoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB6ZShhKTsKICAgICAgICAgIGgoVEEpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBUQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKTsKICAgICAgICBUQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUQTsKICAgICAgICBUQS5wcm90b3R5cGUuJHggPSBUQTsKICAgICAgICBUQS5heSA9IHt9OwogICAgICAgIGIuYnRDeWxpbmRlclNoYXBlID0gVEE7CiAgICAgICAgVEEucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBBZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVEEucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEJlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBUQS5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIENlKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBUQS5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhEZSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFRBLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEVlKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBUQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEZlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiB4KGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gR2UoYSwgYywgZCwgZSk7CiAgICAgICAgICBoKHgpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICB4LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodS5wcm90b3R5cGUpOwogICAgICAgIHgucHJvdG90eXBlLmNvbnN0cnVjdG9yID0geDsKICAgICAgICB4LnByb3RvdHlwZS4keCA9IHg7CiAgICAgICAgeC5heSA9IHt9OwogICAgICAgIGIuYnREaXNjcmV0ZUR5bmFtaWNzV29ybGQgPSB4OwogICAgICAgIHgucHJvdG90eXBlLnNldEdyYXZpdHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSGUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmdldEdyYXZpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEllKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuYWRkUmlnaWRCb2R5ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gSmUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBfZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZFJpZ2lkQm9keV8yKGUsIGEsIGMpIDogS2UoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLnJlbW92ZVJpZ2lkQm9keSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBMZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gTWUoZCwgYSkgOiBOZShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUucmVtb3ZlQ29uc3RyYWludCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBPZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuc3RlcFNpbXVsYXRpb24gPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBjID8gUGUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBRZShlLCBhLCBjKSA6IFJlKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5zZXRDb250YWN0QWRkZWRDYWxsYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuc2V0Q29udGFjdFByb2Nlc3NlZENhbGxiYWNrID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFRlKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5zZXRDb250YWN0RGVzdHJveWVkQ2FsbGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVWUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmdldERpc3BhdGNoZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFZlKHRoaXMuWngpLCBGQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLnJheVRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBXZShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuZ2V0UGFpckNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhYZSh0aGlzLlp4KSwgR0EpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5nZXREaXNwYXRjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFllKHRoaXMuWngpLCBsKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuYWRkQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gWmUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyAkZShlLCBhLCBjKSA6IGFmKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5yZW1vdmVDb2xsaXNpb25PYmplY3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYmYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmdldEJyb2FkcGhhc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGNmKHRoaXMuWngpLCBIQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmNvbnZleFN3ZWVwVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIHZhciBtID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgZGYobSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmNvbnRhY3RQYWlyVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGVmKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5jb250YWN0VGVzdCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZmYoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLnVwZGF0ZVNpbmdsZUFhYmIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ2YoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLnNldERlYnVnRHJhd2VyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGhmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5nZXREZWJ1Z0RyYXdlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoamYodGhpcy5aeCksIElBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuZGVidWdEcmF3V29ybGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGtmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5kZWJ1Z0RyYXdPYmplY3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBsZihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuYWRkQWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG1mKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5yZW1vdmVBY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbmYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmdldFNvbHZlckluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKG9mKHRoaXMuWngpLCB2KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2sgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGMgPyBwZihlLCBhKSA6IHZvaWQgMCA9PT0gZCA/IHFmKGUsIGEsIGMpIDogcmYoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBzZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gVUEoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0Q29udmV4U2hhcGUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFVBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpOwogICAgICAgIFVBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFVBOwogICAgICAgIFVBLnByb3RvdHlwZS4keCA9IFVBOwogICAgICAgIFVBLmF5ID0ge307CiAgICAgICAgYi5idENvbnZleFNoYXBlID0gVUE7CiAgICAgICAgVUEucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0ZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVUEucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodWYodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVQS5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB2ZihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVUEucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB3ZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVUEucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHhmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHlmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBGQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnREaXNwYXRjaGVyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBGQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBGQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBGQTsKICAgICAgICBGQS5wcm90b3R5cGUuJHggPSBGQTsKICAgICAgICBGQS5heSA9IHt9OwogICAgICAgIGIuYnREaXNwYXRjaGVyID0gRkE7CiAgICAgICAgRkEucHJvdG90eXBlLmdldE51bU1hbmlmb2xkcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHpmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGQS5wcm90b3R5cGUuZ2V0TWFuaWZvbGRCeUluZGV4SW50ZXJuYWwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoQWYoYywgYSksIFZBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRkEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBCZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gV0EoYSwgYywgZCwgZSwgZikgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBlID8gQ2YoYSwgYywgZCkgOiB2b2lkIDAgPT09IGYgPyBfZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50XzQoYSwgYywgZCwgZSkgOiBEZihhLCBjLCBkLCBlLCBmKTsKICAgICAgICAgIGgoV0EpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBXQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEtBLnByb3RvdHlwZSk7CiAgICAgICAgV0EucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gV0E7CiAgICAgICAgV0EucHJvdG90eXBlLiR4ID0gV0E7CiAgICAgICAgV0EuYXkgPSB7fTsKICAgICAgICBiLmJ0R2VuZXJpYzZEb2ZDb25zdHJhaW50ID0gV0E7CiAgICAgICAgV0EucHJvdG90eXBlLnNldExpbmVhckxvd2VyTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRWYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdBLnByb3RvdHlwZS5zZXRMaW5lYXJVcHBlckxpbWl0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQS5wcm90b3R5cGUuc2V0QW5ndWxhckxvd2VyTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgR2YoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdBLnByb3RvdHlwZS5zZXRBbmd1bGFyVXBwZXJMaW1pdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBIZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0EucHJvdG90eXBlLmdldEZyYW1lT2Zmc2V0QSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoSWYodGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQS5wcm90b3R5cGUuZW5hYmxlRmVlZGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSmYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdBLnByb3RvdHlwZS5nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBLZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0EucHJvdG90eXBlLnNldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBMZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0EucHJvdG90eXBlLmdldFBhcmFtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICByZXR1cm4gTWYoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdBLnByb3RvdHlwZS5zZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIE5mKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIE9mKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBYQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRTdHJpZGluZ01lc2hJbnRlcmZhY2UsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFhBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFhBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFhBOwogICAgICAgIFhBLnByb3RvdHlwZS4keCA9IFhBOwogICAgICAgIFhBLmF5ID0ge307CiAgICAgICAgYi5idFN0cmlkaW5nTWVzaEludGVyZmFjZSA9IFhBOwogICAgICAgIFhBLnByb3RvdHlwZS5zZXRTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFBmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFFmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBZQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRNb3Rpb25TdGF0ZSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgWUEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgWUEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gWUE7CiAgICAgICAgWUEucHJvdG90eXBlLiR4ID0gWUE7CiAgICAgICAgWUEuYXkgPSB7fTsKICAgICAgICBiLmJ0TW90aW9uU3RhdGUgPSBZQTsKICAgICAgICBZQS5wcm90b3R5cGUuZ2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUmYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFlBLnByb3RvdHlwZS5zZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWUEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBUZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24geSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgQ29udmV4UmVzdWx0Q2FsbGJhY2ssIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIHkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB5OwogICAgICAgIHkucHJvdG90eXBlLiR4ID0geTsKICAgICAgICB5LmF5ID0ge307CiAgICAgICAgYi5Db252ZXhSZXN1bHRDYWxsYmFjayA9IHk7CiAgICAgICAgeS5wcm90b3R5cGUuaGFzSGl0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFVZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeS5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXAgPSB5LnByb3RvdHlwZS5ieSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFZmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB5LnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cCA9IHkucHJvdG90eXBlLmR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFdmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsICJtX2NvbGxpc2lvbkZpbHRlckdyb3VwIiwgewogICAgICAgICAgZ2V0OiB5LnByb3RvdHlwZS5ieSwKICAgICAgICAgIHNldDogeS5wcm90b3R5cGUuZHkKICAgICAgICB9KTsKICAgICAgICB5LnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrID0geS5wcm90b3R5cGUuY3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBYZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeS5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uRmlsdGVyTWFzayA9IHkucHJvdG90eXBlLmV5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFlmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsICJtX2NvbGxpc2lvbkZpbHRlck1hc2siLCB7CiAgICAgICAgICBnZXQ6IHkucHJvdG90eXBlLmN5LAogICAgICAgICAgc2V0OiB5LnByb3RvdHlwZS5leQogICAgICAgIH0pOwogICAgICAgIHkucHJvdG90eXBlLmdldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbiA9IHkucHJvdG90eXBlLmZ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gWmYodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHkucHJvdG90eXBlLnNldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbiA9IHkucHJvdG90eXBlLmd5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgICRmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsICJtX2Nsb3Nlc3RIaXRGcmFjdGlvbiIsIHsKICAgICAgICAgIGdldDogeS5wcm90b3R5cGUuZnksCiAgICAgICAgICBzZXQ6IHkucHJvdG90eXBlLmd5CiAgICAgICAgfSk7CiAgICAgICAgeS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGFnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBaQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgQ29udGFjdFJlc3VsdENhbGxiYWNrLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBaQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBaQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBaQTsKICAgICAgICBaQS5wcm90b3R5cGUuJHggPSBaQTsKICAgICAgICBaQS5heSA9IHt9OwogICAgICAgIGIuQ29udGFjdFJlc3VsdENhbGxiYWNrID0gWkE7CiAgICAgICAgWkEucHJvdG90eXBlLmFkZFNpbmdsZVJlc3VsdCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYsIG0sIEMpIHsKICAgICAgICAgIHZhciBQID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgbSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIG0gJiYgKG0gPSBtLlp4KTsKICAgICAgICAgIEMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBDICYmIChDID0gQy5aeCk7CiAgICAgICAgICByZXR1cm4gYmcoUCwgYSwgYywgZCwgZSwgZiwgbSwgQykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFpBLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgY2codGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uICRBKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidFNvZnRCb2R5U29sdmVyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICAkQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICAkQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkQTsKICAgICAgICAkQS5wcm90b3R5cGUuJHggPSAkQTsKICAgICAgICAkQS5heSA9IHt9OwogICAgICAgIGIuYnRTb2Z0Qm9keVNvbHZlciA9ICRBOwogICAgICAgICRBLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZGcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHooKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIFJheVJlc3VsdENhbGxiYWNrLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB6LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIHoucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gejsKICAgICAgICB6LnByb3RvdHlwZS4keCA9IHo7CiAgICAgICAgei5heSA9IHt9OwogICAgICAgIGIuUmF5UmVzdWx0Q2FsbGJhY2sgPSB6OwogICAgICAgIHoucHJvdG90eXBlLmhhc0hpdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhZWcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHoucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwID0gei5wcm90b3R5cGUuYnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBmZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgei5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXAgPSB6LnByb3RvdHlwZS5keSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBnZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCAibV9jb2xsaXNpb25GaWx0ZXJHcm91cCIsIHsKICAgICAgICAgIGdldDogei5wcm90b3R5cGUuYnksCiAgICAgICAgICBzZXQ6IHoucHJvdG90eXBlLmR5CiAgICAgICAgfSk7CiAgICAgICAgei5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFzayA9IHoucHJvdG90eXBlLmN5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gaGcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHoucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbkZpbHRlck1hc2sgPSB6LnByb3RvdHlwZS5leSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBpZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCAibV9jb2xsaXNpb25GaWx0ZXJNYXNrIiwgewogICAgICAgICAgZ2V0OiB6LnByb3RvdHlwZS5jeSwKICAgICAgICAgIHNldDogei5wcm90b3R5cGUuZXkKICAgICAgICB9KTsKICAgICAgICB6LnByb3RvdHlwZS5nZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb24gPSB6LnByb3RvdHlwZS5meSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGpnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB6LnByb3RvdHlwZS5zZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb24gPSB6LnByb3RvdHlwZS5neSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBrZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCAibV9jbG9zZXN0SGl0RnJhY3Rpb24iLCB7CiAgICAgICAgICBnZXQ6IHoucHJvdG90eXBlLmZ5LAogICAgICAgICAgc2V0OiB6LnByb3RvdHlwZS5neQogICAgICAgIH0pOwogICAgICAgIHoucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbk9iamVjdCA9IHoucHJvdG90eXBlLmh5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhsZyh0aGlzLlp4KSwgcSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHoucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbk9iamVjdCA9IHoucHJvdG90eXBlLm95ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG1nKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsICJtX2NvbGxpc2lvbk9iamVjdCIsIHsKICAgICAgICAgIGdldDogei5wcm90b3R5cGUuaHksCiAgICAgICAgICBzZXQ6IHoucHJvdG90eXBlLm95CiAgICAgICAgfSk7CiAgICAgICAgei5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIG5nKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBhQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRNYXRyaXgzeDMsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIGFCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIGFCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGFCOwogICAgICAgIGFCLnByb3RvdHlwZS4keCA9IGFCOwogICAgICAgIGFCLmF5ID0ge307CiAgICAgICAgYi5idE1hdHJpeDN4MyA9IGFCOwogICAgICAgIGFCLnByb3RvdHlwZS5zZXRFdWxlclpZWCA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIG9nKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBhQi5wcm90b3R5cGUuZ2V0Um90YXRpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcGcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGFCLnByb3RvdHlwZS5nZXRSb3cgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsocWcoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBhQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBiQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRTY2FsYXJBcnJheSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgYkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgYkIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gYkI7CiAgICAgICAgYkIucHJvdG90eXBlLiR4ID0gYkI7CiAgICAgICAgYkIuYXkgPSB7fTsKICAgICAgICBiLmJ0U2NhbGFyQXJyYXkgPSBiQjsKICAgICAgICBiQi5wcm90b3R5cGUuc2l6ZSA9IGJCLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gc2codGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJCLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gdGcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgdWcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEEoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIE1hdGVyaWFsLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQTsKICAgICAgICBBLnByb3RvdHlwZS4keCA9IEE7CiAgICAgICAgQS5heSA9IHt9OwogICAgICAgIGIuTWF0ZXJpYWwgPSBBOwogICAgICAgIEEucHJvdG90eXBlLmdldF9tX2tMU1QgPSBBLnByb3RvdHlwZS5qQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHZnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBBLnByb3RvdHlwZS5zZXRfbV9rTFNUID0gQS5wcm90b3R5cGUuUUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgd2coYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwgIm1fa0xTVCIsIHsKICAgICAgICAgIGdldDogQS5wcm90b3R5cGUuakEsCiAgICAgICAgICBzZXQ6IEEucHJvdG90eXBlLlFDCiAgICAgICAgfSk7CiAgICAgICAgQS5wcm90b3R5cGUuZ2V0X21fa0FTVCA9IEEucHJvdG90eXBlLmlBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4geGcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEEucHJvdG90eXBlLnNldF9tX2tBU1QgPSBBLnByb3RvdHlwZS5QQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB5ZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAibV9rQVNUIiwgewogICAgICAgICAgZ2V0OiBBLnByb3RvdHlwZS5pQSwKICAgICAgICAgIHNldDogQS5wcm90b3R5cGUuUEMKICAgICAgICB9KTsKICAgICAgICBBLnByb3RvdHlwZS5nZXRfbV9rVlNUID0gQS5wcm90b3R5cGUua0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB6Zyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQS5wcm90b3R5cGUuc2V0X21fa1ZTVCA9IEEucHJvdG90eXBlLlJDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEFnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICJtX2tWU1QiLCB7CiAgICAgICAgICBnZXQ6IEEucHJvdG90eXBlLmtBLAogICAgICAgICAgc2V0OiBBLnByb3RvdHlwZS5SQwogICAgICAgIH0pOwogICAgICAgIEEucHJvdG90eXBlLmdldF9tX2ZsYWdzID0gQS5wcm90b3R5cGUuUnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBCZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQS5wcm90b3R5cGUuc2V0X21fZmxhZ3MgPSBBLnByb3RvdHlwZS54QyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBDZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAibV9mbGFncyIsIHsKICAgICAgICAgIGdldDogQS5wcm90b3R5cGUuUnosCiAgICAgICAgICBzZXQ6IEEucHJvdG90eXBlLnhDCiAgICAgICAgfSk7CiAgICAgICAgQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIERnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBsKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidERpc3BhdGNoZXJJbmZvLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIGwucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbDsKICAgICAgICBsLnByb3RvdHlwZS4keCA9IGw7CiAgICAgICAgbC5heSA9IHt9OwogICAgICAgIGIuYnREaXNwYXRjaGVySW5mbyA9IGw7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fdGltZVN0ZXAgPSBsLnByb3RvdHlwZS5YQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEVnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV90aW1lU3RlcCA9IGwucHJvdG90eXBlLkREID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX3RpbWVTdGVwIiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5YQSwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUuREQKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5nZXRfbV9zdGVwQ291bnQgPSBsLnByb3RvdHlwZS5PQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEdnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV9zdGVwQ291bnQgPSBsLnByb3RvdHlwZS51RCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBIZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGwucHJvdG90eXBlLCAibV9zdGVwQ291bnQiLCB7CiAgICAgICAgICBnZXQ6IGwucHJvdG90eXBlLk9BLAogICAgICAgICAgc2V0OiBsLnByb3RvdHlwZS51RAogICAgICAgIH0pOwogICAgICAgIGwucHJvdG90eXBlLmdldF9tX2Rpc3BhdGNoRnVuYyA9IGwucHJvdG90eXBlLkp6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSWcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGwucHJvdG90eXBlLnNldF9tX2Rpc3BhdGNoRnVuYyA9IGwucHJvdG90eXBlLnBDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEpnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX2Rpc3BhdGNoRnVuYyIsIHsKICAgICAgICAgIGdldDogbC5wcm90b3R5cGUuSnosCiAgICAgICAgICBzZXQ6IGwucHJvdG90eXBlLnBDCiAgICAgICAgfSk7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fdGltZU9mSW1wYWN0ID0gbC5wcm90b3R5cGUuV0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBLZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgbC5wcm90b3R5cGUuc2V0X21fdGltZU9mSW1wYWN0ID0gbC5wcm90b3R5cGUuQ0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTGcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSwgIm1fdGltZU9mSW1wYWN0IiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5XQSwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUuQ0QKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5nZXRfbV91c2VDb250aW51b3VzID0gbC5wcm90b3R5cGUuWkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIU1nKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV91c2VDb250aW51b3VzID0gbC5wcm90b3R5cGUuRkQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTmcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSwgIm1fdXNlQ29udGludW91cyIsIHsKICAgICAgICAgIGdldDogbC5wcm90b3R5cGUuWkEsCiAgICAgICAgICBzZXQ6IGwucHJvdG90eXBlLkZECiAgICAgICAgfSk7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fZW5hYmxlU2F0Q29udmV4ID0gbC5wcm90b3R5cGUuTnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIU9nKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV9lbmFibGVTYXRDb252ZXggPSBsLnByb3RvdHlwZS50QyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGwucHJvdG90eXBlLCAibV9lbmFibGVTYXRDb252ZXgiLCB7CiAgICAgICAgICBnZXQ6IGwucHJvdG90eXBlLk56LAogICAgICAgICAgc2V0OiBsLnByb3RvdHlwZS50QwogICAgICAgIH0pOwogICAgICAgIGwucHJvdG90eXBlLmdldF9tX2VuYWJsZVNQVSA9IGwucHJvdG90eXBlLk16ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFRZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgbC5wcm90b3R5cGUuc2V0X21fZW5hYmxlU1BVID0gbC5wcm90b3R5cGUuc0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUmcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSwgIm1fZW5hYmxlU1BVIiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5NeiwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUuc0MKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5nZXRfbV91c2VFcGEgPSBsLnByb3RvdHlwZS5hQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhU2codGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGwucHJvdG90eXBlLnNldF9tX3VzZUVwYSA9IGwucHJvdG90eXBlLkhEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFRnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX3VzZUVwYSIsIHsKICAgICAgICAgIGdldDogbC5wcm90b3R5cGUuYUIsCiAgICAgICAgICBzZXQ6IGwucHJvdG90eXBlLkhECiAgICAgICAgfSk7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fYWxsb3dlZENjZFBlbmV0cmF0aW9uID0gbC5wcm90b3R5cGUubHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBVZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgbC5wcm90b3R5cGUuc2V0X21fYWxsb3dlZENjZFBlbmV0cmF0aW9uID0gbC5wcm90b3R5cGUuVEIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVmcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSwgIm1fYWxsb3dlZENjZFBlbmV0cmF0aW9uIiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5seiwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUuVEIKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5nZXRfbV91c2VDb252ZXhDb25zZXJ2YXRpdmVEaXN0YW5jZVV0aWwgPSBsLnByb3RvdHlwZS4kQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhV2codGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGwucHJvdG90eXBlLnNldF9tX3VzZUNvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVXRpbCA9IGwucHJvdG90eXBlLkdEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFhnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX3VzZUNvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVXRpbCIsIHsKICAgICAgICAgIGdldDogbC5wcm90b3R5cGUuJEEsCiAgICAgICAgICBzZXQ6IGwucHJvdG90eXBlLkdECiAgICAgICAgfSk7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fY29udmV4Q29uc2VydmF0aXZlRGlzdGFuY2VUaHJlc2hvbGQgPSBsLnByb3RvdHlwZS5FeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFlnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV9jb252ZXhDb25zZXJ2YXRpdmVEaXN0YW5jZVRocmVzaG9sZCA9IGwucHJvdG90eXBlLmtDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFpnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkIiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5FeiwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUua0MKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgJGcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEIoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mbywgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEI7CiAgICAgICAgQi5wcm90b3R5cGUuJHggPSBCOwogICAgICAgIEIuYXkgPSB7fTsKICAgICAgICBiLmJ0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mbyA9IEI7CiAgICAgICAgQi5wcm90b3R5cGUuZ2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25DUyA9IEIucHJvdG90eXBlLnl6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhhaCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEIucHJvdG90eXBlLnNldF9tX2NoYXNzaXNDb25uZWN0aW9uQ1MgPSBCLnByb3RvdHlwZS5lQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBiaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9jaGFzc2lzQ29ubmVjdGlvbkNTIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS55eiwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUuZUMKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5nZXRfbV93aGVlbERpcmVjdGlvbkNTID0gQi5wcm90b3R5cGUuQXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGNoKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fd2hlZWxEaXJlY3Rpb25DUyA9IEIucHJvdG90eXBlLkh5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGRoKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsICJtX3doZWVsRGlyZWN0aW9uQ1MiLCB7CiAgICAgICAgICBnZXQ6IEIucHJvdG90eXBlLkF5LAogICAgICAgICAgc2V0OiBCLnByb3RvdHlwZS5IeQogICAgICAgIH0pOwogICAgICAgIEIucHJvdG90eXBlLmdldF9tX3doZWVsQXhsZUNTID0gQi5wcm90b3R5cGUuenkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGVoKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fd2hlZWxBeGxlQ1MgPSBCLnByb3RvdHlwZS5HeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBmaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV93aGVlbEF4bGVDUyIsIHsKICAgICAgICAgIGdldDogQi5wcm90b3R5cGUuenksCiAgICAgICAgICBzZXQ6IEIucHJvdG90eXBlLkd5CiAgICAgICAgfSk7CiAgICAgICAgQi5wcm90b3R5cGUuZ2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGggPSBCLnByb3RvdHlwZS5UQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGdoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCLnByb3RvdHlwZS5zZXRfbV9zdXNwZW5zaW9uUmVzdExlbmd0aCA9IEIucHJvdG90eXBlLnpEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGhoKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25SZXN0TGVuZ3RoIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS5UQSwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUuekQKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5nZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20gPSBCLnByb3RvdHlwZS5teSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGloKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCLnByb3RvdHlwZS5zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20gPSBCLnByb3RvdHlwZS50eSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBqaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20iLCB7CiAgICAgICAgICBnZXQ6IEIucHJvdG90eXBlLm15LAogICAgICAgICAgc2V0OiBCLnByb3RvdHlwZS50eQogICAgICAgIH0pOwogICAgICAgIEIucHJvdG90eXBlLmdldF9tX3doZWVsUmFkaXVzID0gQi5wcm90b3R5cGUuZ0IgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBraCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fd2hlZWxSYWRpdXMgPSBCLnByb3RvdHlwZS5ORCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBsaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV93aGVlbFJhZGl1cyIsIHsKICAgICAgICAgIGdldDogQi5wcm90b3R5cGUuZ0IsCiAgICAgICAgICBzZXQ6IEIucHJvdG90eXBlLk5ECiAgICAgICAgfSk7CiAgICAgICAgQi5wcm90b3R5cGUuZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzcyA9IEIucHJvdG90eXBlLm55ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbWgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEIucHJvdG90eXBlLnNldF9tX3N1c3BlbnNpb25TdGlmZm5lc3MgPSBCLnByb3RvdHlwZS51eSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBuaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9zdXNwZW5zaW9uU3RpZmZuZXNzIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS5ueSwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUudXkKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5nZXRfbV93aGVlbHNEYW1waW5nQ29tcHJlc3Npb24gPSBCLnByb3RvdHlwZS5CeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIG9oKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCLnByb3RvdHlwZS5zZXRfbV93aGVlbHNEYW1waW5nQ29tcHJlc3Npb24gPSBCLnByb3RvdHlwZS5JeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBwaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV93aGVlbHNEYW1waW5nQ29tcHJlc3Npb24iLCB7CiAgICAgICAgICBnZXQ6IEIucHJvdG90eXBlLkJ5LAogICAgICAgICAgc2V0OiBCLnByb3RvdHlwZS5JeQogICAgICAgIH0pOwogICAgICAgIEIucHJvdG90eXBlLmdldF9tX3doZWVsc0RhbXBpbmdSZWxheGF0aW9uID0gQi5wcm90b3R5cGUuQ3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBxaCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb24gPSBCLnByb3RvdHlwZS5KeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV93aGVlbHNEYW1waW5nUmVsYXhhdGlvbiIsIHsKICAgICAgICAgIGdldDogQi5wcm90b3R5cGUuQ3ksCiAgICAgICAgICBzZXQ6IEIucHJvdG90eXBlLkp5CiAgICAgICAgfSk7CiAgICAgICAgQi5wcm90b3R5cGUuZ2V0X21fZnJpY3Rpb25TbGlwID0gQi5wcm90b3R5cGUuaXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBzaCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fZnJpY3Rpb25TbGlwID0gQi5wcm90b3R5cGUucHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLnByb3RvdHlwZSwgIm1fZnJpY3Rpb25TbGlwIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS5peSwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUucHkKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2UgPSBCLnByb3RvdHlwZS5seSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHVoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCLnByb3RvdHlwZS5zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2UgPSBCLnByb3RvdHlwZS5zeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2aChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9tYXhTdXNwZW5zaW9uRm9yY2UiLCB7CiAgICAgICAgICBnZXQ6IEIucHJvdG90eXBlLmx5LAogICAgICAgICAgc2V0OiBCLnByb3RvdHlwZS5zeQogICAgICAgIH0pOwogICAgICAgIEIucHJvdG90eXBlLmdldF9tX2JJc0Zyb250V2hlZWwgPSBCLnByb3RvdHlwZS53eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhd2godGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEIucHJvdG90eXBlLnNldF9tX2JJc0Zyb250V2hlZWwgPSBCLnByb3RvdHlwZS5EeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB4aChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9iSXNGcm9udFdoZWVsIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS53eSwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUuRHkKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgeWgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGNCKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gYyA/IHpoKGEpIDogQWgoYSwgYyk7CiAgICAgICAgICBoKGNCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgY0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShVQS5wcm90b3R5cGUpOwogICAgICAgIGNCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNCOwogICAgICAgIGNCLnByb3RvdHlwZS4keCA9IGNCOwogICAgICAgIGNCLmF5ID0ge307CiAgICAgICAgYi5idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlID0gY0I7CiAgICAgICAgY0IucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBCaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgY0IucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQ2godGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBEaChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgY0IucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBFaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgY0IucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEZoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEdoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBIQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRCcm9hZHBoYXNlSW50ZXJmYWNlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBIQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBIQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBIQTsKICAgICAgICBIQS5wcm90b3R5cGUuJHggPSBIQTsKICAgICAgICBIQS5heSA9IHt9OwogICAgICAgIGIuYnRCcm9hZHBoYXNlSW50ZXJmYWNlID0gSEE7CiAgICAgICAgSEEucHJvdG90eXBlLmdldE92ZXJsYXBwaW5nUGFpckNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhIaCh0aGlzLlp4KSwgR0EpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBIQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEloKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBEKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBlID8gSmgoYSwgYywgZCkgOiBLaChhLCBjLCBkLCBlKTsKICAgICAgICAgIGgoRClbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIEQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgRC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEOwogICAgICAgIEQucHJvdG90eXBlLiR4ID0gRDsKICAgICAgICBELmF5ID0ge307CiAgICAgICAgYi5idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm8gPSBEOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX2xpbmVhckRhbXBpbmcgPSBELnByb3RvdHlwZS5sQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIExoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9saW5lYXJEYW1waW5nID0gRC5wcm90b3R5cGUuU0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTWgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwgIm1fbGluZWFyRGFtcGluZyIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUubEEsCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLlNDCiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuZ2V0X21fYW5ndWxhckRhbXBpbmcgPSBELnByb3RvdHlwZS5ueiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE5oKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9hbmd1bGFyRGFtcGluZyA9IEQucHJvdG90eXBlLlZCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE9oKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX2FuZ3VsYXJEYW1waW5nIiwgewogICAgICAgICAgZ2V0OiBELnByb3RvdHlwZS5ueiwKICAgICAgICAgIHNldDogRC5wcm90b3R5cGUuVkIKICAgICAgICB9KTsKICAgICAgICBELnByb3RvdHlwZS5nZXRfbV9mcmljdGlvbiA9IEQucHJvdG90eXBlLlN6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUGgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2ZyaWN0aW9uID0gRC5wcm90b3R5cGUueUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUWgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwgIm1fZnJpY3Rpb24iLCB7CiAgICAgICAgICBnZXQ6IEQucHJvdG90eXBlLlN6LAogICAgICAgICAgc2V0OiBELnByb3RvdHlwZS55QwogICAgICAgIH0pOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX3JvbGxpbmdGcmljdGlvbiA9IEQucHJvdG90eXBlLkdBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUmgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX3JvbGxpbmdGcmljdGlvbiA9IEQucHJvdG90eXBlLm1EID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFNoKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX3JvbGxpbmdGcmljdGlvbiIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUuR0EsCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLm1ECiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuZ2V0X21fcmVzdGl0dXRpb24gPSBELnByb3RvdHlwZS5FQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFRoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9yZXN0aXR1dGlvbiA9IEQucHJvdG90eXBlLmtEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFVoKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX3Jlc3RpdHV0aW9uIiwgewogICAgICAgICAgZ2V0OiBELnByb3RvdHlwZS5FQSwKICAgICAgICAgIHNldDogRC5wcm90b3R5cGUua0QKICAgICAgICB9KTsKICAgICAgICBELnByb3RvdHlwZS5nZXRfbV9saW5lYXJTbGVlcGluZ1RocmVzaG9sZCA9IEQucHJvdG90eXBlLm1BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVmgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2xpbmVhclNsZWVwaW5nVGhyZXNob2xkID0gRC5wcm90b3R5cGUuVEMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV2goYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwgIm1fbGluZWFyU2xlZXBpbmdUaHJlc2hvbGQiLCB7CiAgICAgICAgICBnZXQ6IEQucHJvdG90eXBlLm1BLAogICAgICAgICAgc2V0OiBELnByb3RvdHlwZS5UQwogICAgICAgIH0pOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX2FuZ3VsYXJTbGVlcGluZ1RocmVzaG9sZCA9IEQucHJvdG90eXBlLm96ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gWGgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2FuZ3VsYXJTbGVlcGluZ1RocmVzaG9sZCA9IEQucHJvdG90eXBlLldCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFloKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX2FuZ3VsYXJTbGVlcGluZ1RocmVzaG9sZCIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUub3osCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLldCCiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuZ2V0X21fYWRkaXRpb25hbERhbXBpbmcgPSBELnByb3RvdHlwZS5peiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhWmgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2FkZGl0aW9uYWxEYW1waW5nID0gRC5wcm90b3R5cGUuUUIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJGgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwgIm1fYWRkaXRpb25hbERhbXBpbmciLCB7CiAgICAgICAgICBnZXQ6IEQucHJvdG90eXBlLml6LAogICAgICAgICAgc2V0OiBELnByb3RvdHlwZS5RQgogICAgICAgIH0pOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX2FkZGl0aW9uYWxEYW1waW5nRmFjdG9yID0gRC5wcm90b3R5cGUuanogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBhaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRC5wcm90b3R5cGUuc2V0X21fYWRkaXRpb25hbERhbXBpbmdGYWN0b3IgPSBELnByb3RvdHlwZS5SQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBiaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEQucHJvdG90eXBlLCAibV9hZGRpdGlvbmFsRGFtcGluZ0ZhY3RvciIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUuanosCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLlJCCiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuZ2V0X21fYWRkaXRpb25hbExpbmVhckRhbXBpbmdUaHJlc2hvbGRTcXIgPSBELnByb3RvdHlwZS5reiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGNpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9hZGRpdGlvbmFsTGluZWFyRGFtcGluZ1RocmVzaG9sZFNxciA9IEQucHJvdG90eXBlLlNCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGRpKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX2FkZGl0aW9uYWxMaW5lYXJEYW1waW5nVGhyZXNob2xkU3FyIiwgewogICAgICAgICAgZ2V0OiBELnByb3RvdHlwZS5reiwKICAgICAgICAgIHNldDogRC5wcm90b3R5cGUuU0IKICAgICAgICB9KTsKICAgICAgICBELnByb3RvdHlwZS5nZXRfbV9hZGRpdGlvbmFsQW5ndWxhckRhbXBpbmdUaHJlc2hvbGRTcXIgPSBELnByb3RvdHlwZS5oeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGVpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9hZGRpdGlvbmFsQW5ndWxhckRhbXBpbmdUaHJlc2hvbGRTcXIgPSBELnByb3RvdHlwZS5QQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBmaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEQucHJvdG90eXBlLCAibV9hZGRpdGlvbmFsQW5ndWxhckRhbXBpbmdUaHJlc2hvbGRTcXIiLCB7CiAgICAgICAgICBnZXQ6IEQucHJvdG90eXBlLmh6LAogICAgICAgICAgc2V0OiBELnByb3RvdHlwZS5QQgogICAgICAgIH0pOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX2FkZGl0aW9uYWxBbmd1bGFyRGFtcGluZ0ZhY3RvciA9IEQucHJvdG90eXBlLmd6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gZ2kodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2FkZGl0aW9uYWxBbmd1bGFyRGFtcGluZ0ZhY3RvciA9IEQucHJvdG90eXBlLk9CID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGhpKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX2FkZGl0aW9uYWxBbmd1bGFyRGFtcGluZ0ZhY3RvciIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUuZ3osCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLk9CCiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGlpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBkQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb2xsaXNpb25Db25maWd1cmF0aW9uLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBkQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBkQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBkQjsKICAgICAgICBkQi5wcm90b3R5cGUuJHggPSBkQjsKICAgICAgICBkQi5heSA9IHt9OwogICAgICAgIGIuYnRDb2xsaXNpb25Db25maWd1cmF0aW9uID0gZEI7CiAgICAgICAgZEIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBqaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gVkEoKSB7CiAgICAgICAgICB0aGlzLlp4ID0ga2koKTsKICAgICAgICAgIGgoVkEpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBWQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBWQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBWQTsKICAgICAgICBWQS5wcm90b3R5cGUuJHggPSBWQTsKICAgICAgICBWQS5heSA9IHt9OwogICAgICAgIGIuYnRQZXJzaXN0ZW50TWFuaWZvbGQgPSBWQTsKICAgICAgICBWQS5wcm90b3R5cGUuZ2V0Qm9keTAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGxpKHRoaXMuWngpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkEucHJvdG90eXBlLmdldEJvZHkxID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhtaSh0aGlzLlp4KSwgcSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFZBLnByb3RvdHlwZS5nZXROdW1Db250YWN0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIG5pKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWQS5wcm90b3R5cGUuZ2V0Q29udGFjdFBvaW50ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKG9pKGMsIGEpLCBFKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBwaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gZUIoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGEgPyBxaSgpIDogcmkoYSk7CiAgICAgICAgICBoKGVCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgZUIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgZUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZUI7CiAgICAgICAgZUIucHJvdG90eXBlLiR4ID0gZUI7CiAgICAgICAgZUIuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29tcG91bmRTaGFwZSA9IGVCOwogICAgICAgIGVCLnByb3RvdHlwZS5hZGRDaGlsZFNoYXBlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBzaShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLnJlbW92ZUNoaWxkU2hhcGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGVCLnByb3RvdHlwZS5yZW1vdmVDaGlsZFNoYXBlQnlJbmRleCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB1aShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLmdldE51bUNoaWxkU2hhcGVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gdmkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGVCLnByb3RvdHlwZS5nZXRDaGlsZFNoYXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKHdpKGMsIGEpLCBuKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLnVwZGF0ZUNoaWxkVHJhbnNmb3JtID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBkID8geGkoZSwgYSwgYykgOiB5aShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB6aShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEFpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBlQi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEJpKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBlQi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhDaSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGVCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIERpKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBlQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEVpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBGKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IEZpKGEsIGMpOwogICAgICAgICAgaChGKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgRi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHkucHJvdG90eXBlKTsKICAgICAgICBGLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEY7CiAgICAgICAgRi5wcm90b3R5cGUuJHggPSBGOwogICAgICAgIEYuYXkgPSB7fTsKICAgICAgICBiLkNsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFjayA9IEY7CiAgICAgICAgRi5wcm90b3R5cGUuaGFzSGl0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFHaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuZ2V0X21fY29udmV4RnJvbVdvcmxkID0gRi5wcm90b3R5cGUuRnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEhpKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuc2V0X21fY29udmV4RnJvbVdvcmxkID0gRi5wcm90b3R5cGUubEMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSWkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwgIm1fY29udmV4RnJvbVdvcmxkIiwgewogICAgICAgICAgZ2V0OiBGLnByb3RvdHlwZS5GeiwKICAgICAgICAgIHNldDogRi5wcm90b3R5cGUubEMKICAgICAgICB9KTsKICAgICAgICBGLnByb3RvdHlwZS5nZXRfbV9jb252ZXhUb1dvcmxkID0gRi5wcm90b3R5cGUuR3ogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEppKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuc2V0X21fY29udmV4VG9Xb3JsZCA9IEYucHJvdG90eXBlLm1DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEtpKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsICJtX2NvbnZleFRvV29ybGQiLCB7CiAgICAgICAgICBnZXQ6IEYucHJvdG90eXBlLkd6LAogICAgICAgICAgc2V0OiBGLnByb3RvdHlwZS5tQwogICAgICAgIH0pOwogICAgICAgIEYucHJvdG90eXBlLmdldF9tX2hpdE5vcm1hbFdvcmxkID0gRi5wcm90b3R5cGUuankgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKExpKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuc2V0X21faGl0Tm9ybWFsV29ybGQgPSBGLnByb3RvdHlwZS5xeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBNaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEYucHJvdG90eXBlLCAibV9oaXROb3JtYWxXb3JsZCIsIHsKICAgICAgICAgIGdldDogRi5wcm90b3R5cGUuanksCiAgICAgICAgICBzZXQ6IEYucHJvdG90eXBlLnF5CiAgICAgICAgfSk7CiAgICAgICAgRi5wcm90b3R5cGUuZ2V0X21faGl0UG9pbnRXb3JsZCA9IEYucHJvdG90eXBlLmt5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhOaSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEYucHJvdG90eXBlLnNldF9tX2hpdFBvaW50V29ybGQgPSBGLnByb3RvdHlwZS5yeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBPaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEYucHJvdG90eXBlLCAibV9oaXRQb2ludFdvcmxkIiwgewogICAgICAgICAgZ2V0OiBGLnByb3RvdHlwZS5reSwKICAgICAgICAgIHNldDogRi5wcm90b3R5cGUucnkKICAgICAgICB9KTsKICAgICAgICBGLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cCA9IEYucHJvdG90eXBlLmJ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUGkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEYucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwID0gRi5wcm90b3R5cGUuZHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUWkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uRmlsdGVyR3JvdXAiLCB7CiAgICAgICAgICBnZXQ6IEYucHJvdG90eXBlLmJ5LAogICAgICAgICAgc2V0OiBGLnByb3RvdHlwZS5keQogICAgICAgIH0pOwogICAgICAgIEYucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbkZpbHRlck1hc2sgPSBGLnByb3RvdHlwZS5jeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFJpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGLnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrID0gRi5wcm90b3R5cGUuZXkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgU2koYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uRmlsdGVyTWFzayIsIHsKICAgICAgICAgIGdldDogRi5wcm90b3R5cGUuY3ksCiAgICAgICAgICBzZXQ6IEYucHJvdG90eXBlLmV5CiAgICAgICAgfSk7CiAgICAgICAgRi5wcm90b3R5cGUuZ2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uID0gRi5wcm90b3R5cGUuZnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBUaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuc2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uID0gRi5wcm90b3R5cGUuZ3kgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVWkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwgIm1fY2xvc2VzdEhpdEZyYWN0aW9uIiwgewogICAgICAgICAgZ2V0OiBGLnByb3RvdHlwZS5meSwKICAgICAgICAgIHNldDogRi5wcm90b3R5cGUuZ3kKICAgICAgICB9KTsKICAgICAgICBGLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgVmkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEcoYSwgYykgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gV2koYSwgYyk7CiAgICAgICAgICBoKEcpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBHLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoei5wcm90b3R5cGUpOwogICAgICAgIEcucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRzsKICAgICAgICBHLnByb3RvdHlwZS4keCA9IEc7CiAgICAgICAgRy5heSA9IHt9OwogICAgICAgIGIuQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrID0gRzsKICAgICAgICBHLnByb3RvdHlwZS5oYXNIaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIVhpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25PYmplY3RzID0gRy5wcm90b3R5cGUuQnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFlpKHRoaXMuWngpLCBmQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEcucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbk9iamVjdHMgPSBHLnByb3RvdHlwZS5oQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBaaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEcucHJvdG90eXBlLCAibV9jb2xsaXNpb25PYmplY3RzIiwgewogICAgICAgICAgZ2V0OiBHLnByb3RvdHlwZS5CeiwKICAgICAgICAgIHNldDogRy5wcm90b3R5cGUuaEMKICAgICAgICB9KTsKICAgICAgICBHLnByb3RvdHlwZS5nZXRfbV9yYXlGcm9tV29ybGQgPSBHLnByb3RvdHlwZS54eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoJGkodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5zZXRfbV9yYXlGcm9tV29ybGQgPSBHLnByb3RvdHlwZS5FeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBhaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEcucHJvdG90eXBlLCAibV9yYXlGcm9tV29ybGQiLCB7CiAgICAgICAgICBnZXQ6IEcucHJvdG90eXBlLnh5LAogICAgICAgICAgc2V0OiBHLnByb3RvdHlwZS5FeQogICAgICAgIH0pOwogICAgICAgIEcucHJvdG90eXBlLmdldF9tX3JheVRvV29ybGQgPSBHLnByb3RvdHlwZS55eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoYmoodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5zZXRfbV9yYXlUb1dvcmxkID0gRy5wcm90b3R5cGUuRnkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgY2ooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLnByb3RvdHlwZSwgIm1fcmF5VG9Xb3JsZCIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUueXksCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLkZ5CiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21faGl0Tm9ybWFsV29ybGQgPSBHLnByb3RvdHlwZS5qeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZGoodGhpcy5aeCksIGdCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRy5wcm90b3R5cGUuc2V0X21faGl0Tm9ybWFsV29ybGQgPSBHLnByb3RvdHlwZS5xeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBlaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEcucHJvdG90eXBlLCAibV9oaXROb3JtYWxXb3JsZCIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUuanksCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLnF5CiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21faGl0UG9pbnRXb3JsZCA9IEcucHJvdG90eXBlLmt5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhmaih0aGlzLlp4KSwgZ0IpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5zZXRfbV9oaXRQb2ludFdvcmxkID0gRy5wcm90b3R5cGUucnkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ2ooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLnByb3RvdHlwZSwgIm1faGl0UG9pbnRXb3JsZCIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUua3ksCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLnJ5CiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21faGl0RnJhY3Rpb25zID0gRy5wcm90b3R5cGUuWnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGhqKHRoaXMuWngpLCBiQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEcucHJvdG90eXBlLnNldF9tX2hpdEZyYWN0aW9ucyA9IEcucHJvdG90eXBlLkZDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGlqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJtX2hpdEZyYWN0aW9ucyIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUuWnosCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLkZDCiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXAgPSBHLnByb3RvdHlwZS5ieSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGpqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cCA9IEcucHJvdG90eXBlLmR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGtqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJtX2NvbGxpc2lvbkZpbHRlckdyb3VwIiwgewogICAgICAgICAgZ2V0OiBHLnByb3RvdHlwZS5ieSwKICAgICAgICAgIHNldDogRy5wcm90b3R5cGUuZHkKICAgICAgICB9KTsKICAgICAgICBHLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrID0gRy5wcm90b3R5cGUuY3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBsaih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRy5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uRmlsdGVyTWFzayA9IEcucHJvdG90eXBlLmV5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG1qKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJtX2NvbGxpc2lvbkZpbHRlck1hc2siLCB7CiAgICAgICAgICBnZXQ6IEcucHJvdG90eXBlLmN5LAogICAgICAgICAgc2V0OiBHLnByb3RvdHlwZS5leQogICAgICAgIH0pOwogICAgICAgIEcucHJvdG90eXBlLmdldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbiA9IEcucHJvdG90eXBlLmZ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbmoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEcucHJvdG90eXBlLnNldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbiA9IEcucHJvdG90eXBlLmd5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG9qKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJtX2Nsb3Nlc3RIaXRGcmFjdGlvbiIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUuZnksCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLmd5CiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uT2JqZWN0ID0gRy5wcm90b3R5cGUuaHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHBqKHRoaXMuWngpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRy5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uT2JqZWN0ID0gRy5wcm90b3R5cGUub3kgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcWooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uT2JqZWN0IiwgewogICAgICAgICAgZ2V0OiBHLnByb3RvdHlwZS5oeSwKICAgICAgICAgIHNldDogRy5wcm90b3R5cGUub3kKICAgICAgICB9KTsKICAgICAgICBHLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGhCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSB0TWF0ZXJpYWxBcnJheSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgaEIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgaEIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gaEI7CiAgICAgICAgaEIucHJvdG90eXBlLiR4ID0gaEI7CiAgICAgICAgaEIuYXkgPSB7fTsKICAgICAgICBiLnRNYXRlcmlhbEFycmF5ID0gaEI7CiAgICAgICAgaEIucHJvdG90eXBlLnNpemUgPSBoQi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHNqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBoQi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsodGooYywgYSksIEEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBoQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHVqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBpQihhKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZqKGEpOwogICAgICAgICAgaChpQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIGlCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUkEucHJvdG90eXBlKTsKICAgICAgICBpQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBpQjsKICAgICAgICBpQi5wcm90b3R5cGUuJHggPSBpQjsKICAgICAgICBpQi5heSA9IHt9OwogICAgICAgIGIuYnREZWZhdWx0VmVoaWNsZVJheWNhc3RlciA9IGlCOwogICAgICAgIGlCLnByb3RvdHlwZS5jYXN0UmF5ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgd2ooZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGlCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgeGoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGpCKCkgewogICAgICAgICAgdGhpcy5aeCA9IHlqKCk7CiAgICAgICAgICBoKGpCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgakIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMQS5wcm90b3R5cGUpOwogICAgICAgIGpCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGpCOwogICAgICAgIGpCLnByb3RvdHlwZS4keCA9IGpCOwogICAgICAgIGpCLmF5ID0ge307CiAgICAgICAgYi5idEVtcHR5U2hhcGUgPSBqQjsKICAgICAgICBqQi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHpqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBqQi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhBaih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGpCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEJqKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBqQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIENqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBIKCkgewogICAgICAgICAgdGhpcy5aeCA9IERqKCk7CiAgICAgICAgICBoKEgpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBILnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEgucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSDsKICAgICAgICBILnByb3RvdHlwZS4keCA9IEg7CiAgICAgICAgSC5heSA9IHt9OwogICAgICAgIGIuYnRDb25zdHJhaW50U2V0dGluZyA9IEg7CiAgICAgICAgSC5wcm90b3R5cGUuZ2V0X21fdGF1ID0gSC5wcm90b3R5cGUuVkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBFaih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSC5wcm90b3R5cGUuc2V0X21fdGF1ID0gSC5wcm90b3R5cGUuQkQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRmooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShILnByb3RvdHlwZSwgIm1fdGF1IiwgewogICAgICAgICAgZ2V0OiBILnByb3RvdHlwZS5WQSwKICAgICAgICAgIHNldDogSC5wcm90b3R5cGUuQkQKICAgICAgICB9KTsKICAgICAgICBILnByb3RvdHlwZS5nZXRfbV9kYW1waW5nID0gSC5wcm90b3R5cGUuSHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBHaih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSC5wcm90b3R5cGUuc2V0X21fZGFtcGluZyA9IEgucHJvdG90eXBlLm5DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEhqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSC5wcm90b3R5cGUsICJtX2RhbXBpbmciLCB7CiAgICAgICAgICBnZXQ6IEgucHJvdG90eXBlLkh6LAogICAgICAgICAgc2V0OiBILnByb3RvdHlwZS5uQwogICAgICAgIH0pOwogICAgICAgIEgucHJvdG90eXBlLmdldF9tX2ltcHVsc2VDbGFtcCA9IEgucHJvdG90eXBlLmVBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSWoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEgucHJvdG90eXBlLnNldF9tX2ltcHVsc2VDbGFtcCA9IEgucHJvdG90eXBlLkxDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEpqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSC5wcm90b3R5cGUsICJtX2ltcHVsc2VDbGFtcCIsIHsKICAgICAgICAgIGdldDogSC5wcm90b3R5cGUuZUEsCiAgICAgICAgICBzZXQ6IEgucHJvdG90eXBlLkxDCiAgICAgICAgfSk7CiAgICAgICAgSC5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEtqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBrQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgTG9jYWxTaGFwZUluZm8sIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIGtCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIGtCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGtCOwogICAgICAgIGtCLnByb3RvdHlwZS4keCA9IGtCOwogICAgICAgIGtCLmF5ID0ge307CiAgICAgICAgYi5Mb2NhbFNoYXBlSW5mbyA9IGtCOwogICAgICAgIGtCLnByb3RvdHlwZS5nZXRfbV9zaGFwZVBhcnQgPSBrQi5wcm90b3R5cGUuSkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMaih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAga0IucHJvdG90eXBlLnNldF9tX3NoYXBlUGFydCA9IGtCLnByb3RvdHlwZS5wRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBNaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGtCLnByb3RvdHlwZSwgIm1fc2hhcGVQYXJ0IiwgewogICAgICAgICAgZ2V0OiBrQi5wcm90b3R5cGUuSkEsCiAgICAgICAgICBzZXQ6IGtCLnByb3RvdHlwZS5wRAogICAgICAgIH0pOwogICAgICAgIGtCLnByb3RvdHlwZS5nZXRfbV90cmlhbmdsZUluZGV4ID0ga0IucHJvdG90eXBlLllBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gTmoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGtCLnByb3RvdHlwZS5zZXRfbV90cmlhbmdsZUluZGV4ID0ga0IucHJvdG90eXBlLkVEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE9qKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoa0IucHJvdG90eXBlLCAibV90cmlhbmdsZUluZGV4IiwgewogICAgICAgICAgZ2V0OiBrQi5wcm90b3R5cGUuWUEsCiAgICAgICAgICBzZXQ6IGtCLnByb3RvdHlwZS5FRAogICAgICAgIH0pOwogICAgICAgIGtCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgUGoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEkoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBRaihhKTsKICAgICAgICAgIGgoSSlbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIEkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShxLnByb3RvdHlwZSk7CiAgICAgICAgSS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBJOwogICAgICAgIEkucHJvdG90eXBlLiR4ID0gSTsKICAgICAgICBJLmF5ID0ge307CiAgICAgICAgYi5idFJpZ2lkQm9keSA9IEk7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0Q2VudGVyT2ZNYXNzVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhSaih0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldENlbnRlck9mTWFzc1RyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0U2xlZXBpbmdUaHJlc2hvbGRzID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBUaihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0TGluZWFyRGFtcGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFVqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRBbmd1bGFyRGFtcGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFZqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXREYW1waW5nID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBXaihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0TWFzc1Byb3BzID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBYaihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0TGluZWFyRmFjdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhZaih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldExpbmVhckZhY3RvciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBaaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuYXBwbHlUb3JxdWUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmFwcGx5TG9jYWxUb3JxdWUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYmsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmFwcGx5Rm9yY2UgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGNrKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5hcHBseUNlbnRyYWxGb3JjZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBkayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuYXBwbHlDZW50cmFsTG9jYWxGb3JjZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBlayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuYXBwbHlUb3JxdWVJbXB1bHNlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGZrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5hcHBseUltcHVsc2UgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGdrKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5hcHBseUNlbnRyYWxJbXB1bHNlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGhrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS51cGRhdGVJbmVydGlhVGVuc29yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBpayh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0TGluZWFyVmVsb2NpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGprKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0QW5ndWxhclZlbG9jaXR5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhrayh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldExpbmVhclZlbG9jaXR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGxrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRBbmd1bGFyVmVsb2NpdHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldE1vdGlvblN0YXRlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhuayh0aGlzLlp4KSwgWUEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRNb3Rpb25TdGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBvayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0QW5ndWxhckZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsocGsodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRBbmd1bGFyRmFjdG9yID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHFrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS51cGNhc3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsocmsoYywgYSksIEkpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRBYWJiID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBzayhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuYXBwbHlHcmF2aXR5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB0ayh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0R3Jhdml0eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodWsodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRHcmF2aXR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHZrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRCcm9hZHBoYXNlUHJveHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHdrKHRoaXMuWngpLCB0KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuY2xlYXJGb3JjZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHhrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRBbmlzb3Ryb3BpY0ZyaWN0aW9uID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB5ayhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0Q29sbGlzaW9uU2hhcGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHprKHRoaXMuWngpLCBuKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldEFjdGl2YXRpb25TdGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBCayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZm9yY2VBY3RpdmF0aW9uU3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQ2soYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmFjdGl2YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYSA/IERrKGMpIDogRWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmlzQWN0aXZlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFGayh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuaXNLaW5lbWF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUdrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5pc1N0YXRpY09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhSGsodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmlzU3RhdGljT3JLaW5lbWF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUlrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRSZXN0aXR1dGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEprKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRGcmljdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEtrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRSb2xsaW5nRnJpY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMayh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0UmVzdGl0dXRpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldEZyaWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE5rKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRSb2xsaW5nRnJpY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgT2soYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldFdvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhQayh0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldENvbGxpc2lvbkZsYWdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUWsodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldENvbGxpc2lvbkZsYWdzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFJrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0Q29sbGlzaW9uU2hhcGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVGsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldENjZE1vdGlvblRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBVayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVmsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldFVzZXJJbmRleCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFdrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRVc2VySW5kZXggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWGsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldFVzZXJQb2ludGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhZayh0aGlzLlp4KSwgSkEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRVc2VyUG9pbnRlciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBaayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0QnJvYWRwaGFzZUhhbmRsZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoJGsodGhpcy5aeCksIHQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgYWwodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGxCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidEluZGV4ZWRNZXNoQXJyYXksIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIGxCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIGxCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGxCOwogICAgICAgIGxCLnByb3RvdHlwZS4keCA9IGxCOwogICAgICAgIGxCLmF5ID0ge307CiAgICAgICAgYi5idEluZGV4ZWRNZXNoQXJyYXkgPSBsQjsKICAgICAgICBsQi5wcm90b3R5cGUuc2l6ZSA9IGxCLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gYmwodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGxCLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhjbChjLCBhKSwgbUIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGRsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBuQigpIHsKICAgICAgICAgIHRoaXMuWnggPSBlbCgpOwogICAgICAgICAgaChuQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIG5CLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIG5CLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IG5COwogICAgICAgIG5CLnByb3RvdHlwZS4keCA9IG5COwogICAgICAgIG5CLmF5ID0ge307CiAgICAgICAgYi5idERidnRCcm9hZHBoYXNlID0gbkI7CiAgICAgICAgbkIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBmbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gb0IoYSwgYywgZCwgZSwgZiwgbSwgQywgUCwgaWEpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgbSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIG0gJiYgKG0gPSBtLlp4KTsKICAgICAgICAgIEMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBDICYmIChDID0gQy5aeCk7CiAgICAgICAgICBQICYmICJvYmplY3QiID09PSB0eXBlb2YgUCAmJiAoUCA9IFAuWngpOwogICAgICAgICAgaWEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBpYSAmJiAoaWEgPSBpYS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gZ2woYSwgYywgZCwgZSwgZiwgbSwgQywgUCwgaWEpOwogICAgICAgICAgaChvQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIG9CLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTEEucHJvdG90eXBlKTsKICAgICAgICBvQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBvQjsKICAgICAgICBvQi5wcm90b3R5cGUuJHggPSBvQjsKICAgICAgICBvQi5heSA9IHt9OwogICAgICAgIGIuYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZSA9IG9COwogICAgICAgIG9CLnByb3RvdHlwZS5zZXRNYXJnaW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgaGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIG9CLnByb3RvdHlwZS5nZXRNYXJnaW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBpbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgb0IucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBqbChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgb0IucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoa2wodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBvQi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBsbChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgb0IucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBtbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gcEIoKSB7CiAgICAgICAgICB0aGlzLlp4ID0gbmwoKTsKICAgICAgICAgIGgocEIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBwQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCRBLnByb3RvdHlwZSk7CiAgICAgICAgcEIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gcEI7CiAgICAgICAgcEIucHJvdG90eXBlLiR4ID0gcEI7CiAgICAgICAgcEIuYXkgPSB7fTsKICAgICAgICBiLmJ0RGVmYXVsdFNvZnRCb2R5U29sdmVyID0gcEI7CiAgICAgICAgcEIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBvbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gcUIoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBwbChhKTsKICAgICAgICAgIGgocUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBxQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEZBLnByb3RvdHlwZSk7CiAgICAgICAgcUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gcUI7CiAgICAgICAgcUIucHJvdG90eXBlLiR4ID0gcUI7CiAgICAgICAgcUIuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29sbGlzaW9uRGlzcGF0Y2hlciA9IHFCOwogICAgICAgIHFCLnByb3RvdHlwZS5nZXROdW1NYW5pZm9sZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBxbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcUIucHJvdG90eXBlLmdldE1hbmlmb2xkQnlJbmRleEludGVybmFsID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKHJsKGMsIGEpLCBWQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHFCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgc2wodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHJCKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gZCA/IHRsKGEsIGMpIDogdm9pZCAwID09PSBlID8gdWwoYSwgYywgZCkgOiB2b2lkIDAgPT09IGYgPyB2bChhLCBjLCBkLCBlKSA6IHdsKGEsIGMsIGQsIGUsIGYpOwogICAgICAgICAgaChyQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIHJCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIHJCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHJCOwogICAgICAgIHJCLnByb3RvdHlwZS4keCA9IHJCOwogICAgICAgIHJCLmF5ID0ge307CiAgICAgICAgYi5idEF4aXNTd2VlcDMgPSByQjsKICAgICAgICByQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHhsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBKQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgVm9pZFB0ciwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgSkEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgSkEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSkE7CiAgICAgICAgSkEucHJvdG90eXBlLiR4ID0gSkE7CiAgICAgICAgSkEuYXkgPSB7fTsKICAgICAgICBiLlZvaWRQdHIgPSBKQTsKICAgICAgICBKQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHlsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBKKCkgewogICAgICAgICAgdGhpcy5aeCA9IHpsKCk7CiAgICAgICAgICBoKEopW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBKLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEoucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSjsKICAgICAgICBKLnByb3RvdHlwZS4keCA9IEo7CiAgICAgICAgSi5heSA9IHt9OwogICAgICAgIGIuYnRTb2Z0Qm9keVdvcmxkSW5mbyA9IEo7CiAgICAgICAgSi5wcm90b3R5cGUuZ2V0X2Fpcl9kZW5zaXR5ID0gSi5wcm90b3R5cGUuTHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBBbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X2Fpcl9kZW5zaXR5ID0gSi5wcm90b3R5cGUuc0IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQmwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgImFpcl9kZW5zaXR5IiwgewogICAgICAgICAgZ2V0OiBKLnByb3RvdHlwZS5MeSwKICAgICAgICAgIHNldDogSi5wcm90b3R5cGUuc0IKICAgICAgICB9KTsKICAgICAgICBKLnByb3RvdHlwZS5nZXRfd2F0ZXJfZGVuc2l0eSA9IEoucHJvdG90eXBlLnBCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gQ2wodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEoucHJvdG90eXBlLnNldF93YXRlcl9kZW5zaXR5ID0gSi5wcm90b3R5cGUuV0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgIndhdGVyX2RlbnNpdHkiLCB7CiAgICAgICAgICBnZXQ6IEoucHJvdG90eXBlLnBCLAogICAgICAgICAgc2V0OiBKLnByb3RvdHlwZS5XRAogICAgICAgIH0pOwogICAgICAgIEoucHJvdG90eXBlLmdldF93YXRlcl9vZmZzZXQgPSBKLnByb3RvdHlwZS5yQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEVsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBKLnByb3RvdHlwZS5zZXRfd2F0ZXJfb2Zmc2V0ID0gSi5wcm90b3R5cGUuWUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRmwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgIndhdGVyX29mZnNldCIsIHsKICAgICAgICAgIGdldDogSi5wcm90b3R5cGUuckIsCiAgICAgICAgICBzZXQ6IEoucHJvdG90eXBlLllECiAgICAgICAgfSk7CiAgICAgICAgSi5wcm90b3R5cGUuZ2V0X21fbWF4RGlzcGxhY2VtZW50ID0gSi5wcm90b3R5cGUuc0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBHbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X21fbWF4RGlzcGxhY2VtZW50ID0gSi5wcm90b3R5cGUuWkMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgIm1fbWF4RGlzcGxhY2VtZW50IiwgewogICAgICAgICAgZ2V0OiBKLnByb3RvdHlwZS5zQSwKICAgICAgICAgIHNldDogSi5wcm90b3R5cGUuWkMKICAgICAgICB9KTsKICAgICAgICBKLnByb3RvdHlwZS5nZXRfd2F0ZXJfbm9ybWFsID0gSi5wcm90b3R5cGUucUIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKElsKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X3dhdGVyX25vcm1hbCA9IEoucHJvdG90eXBlLlhEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEpsKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsICJ3YXRlcl9ub3JtYWwiLCB7CiAgICAgICAgICBnZXQ6IEoucHJvdG90eXBlLnFCLAogICAgICAgICAgc2V0OiBKLnByb3RvdHlwZS5YRAogICAgICAgIH0pOwogICAgICAgIEoucHJvdG90eXBlLmdldF9tX2Jyb2FkcGhhc2UgPSBKLnByb3RvdHlwZS5zeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoS2wodGhpcy5aeCksIEhBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X21fYnJvYWRwaGFzZSA9IEoucHJvdG90eXBlLiRCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIExsKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsICJtX2Jyb2FkcGhhc2UiLCB7CiAgICAgICAgICBnZXQ6IEoucHJvdG90eXBlLnN6LAogICAgICAgICAgc2V0OiBKLnByb3RvdHlwZS4kQgogICAgICAgIH0pOwogICAgICAgIEoucHJvdG90eXBlLmdldF9tX2Rpc3BhdGNoZXIgPSBKLnByb3RvdHlwZS5LeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTWwodGhpcy5aeCksIEZBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X21fZGlzcGF0Y2hlciA9IEoucHJvdG90eXBlLnFDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE5sKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsICJtX2Rpc3BhdGNoZXIiLCB7CiAgICAgICAgICBnZXQ6IEoucHJvdG90eXBlLkt6LAogICAgICAgICAgc2V0OiBKLnByb3RvdHlwZS5xQwogICAgICAgIH0pOwogICAgICAgIEoucHJvdG90eXBlLmdldF9tX2dyYXZpdHkgPSBKLnByb3RvdHlwZS5VeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoT2wodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBKLnByb3RvdHlwZS5zZXRfbV9ncmF2aXR5ID0gSi5wcm90b3R5cGUuQUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgIm1fZ3Jhdml0eSIsIHsKICAgICAgICAgIGdldDogSi5wcm90b3R5cGUuVXosCiAgICAgICAgICBzZXQ6IEoucHJvdG90eXBlLkFDCiAgICAgICAgfSk7CiAgICAgICAgSi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFFsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBzQihhLCBjLCBkLCBlKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gZCA/IFJsKGEsIGMpIDogdm9pZCAwID09PSBlID8gX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfYnRDb25lVHdpc3RDb25zdHJhaW50XzMoYSwgYywgZCkgOiBTbChhLCBjLCBkLCBlKTsKICAgICAgICAgIGgoc0IpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBzQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEtBLnByb3RvdHlwZSk7CiAgICAgICAgc0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc0I7CiAgICAgICAgc0IucHJvdG90eXBlLiR4ID0gc0I7CiAgICAgICAgc0IuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29uZVR3aXN0Q29uc3RyYWludCA9IHNCOwogICAgICAgIHNCLnByb3RvdHlwZS5zZXRMaW1pdCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgVGwoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5zZXRBbmd1bGFyT25seSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBVbChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldERhbXBpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVmwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5lbmFibGVNb3RvciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBXbChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldE1heE1vdG9ySW1wdWxzZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBYbChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldE1heE1vdG9ySW1wdWxzZU5vcm1hbGl6ZWQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWWwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5zZXRNb3RvclRhcmdldCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBabChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldE1vdG9yVGFyZ2V0SW5Db25zdHJhaW50U3BhY2UgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5lbmFibGVGZWVkYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBhbShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLmdldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGJtKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBzQi5wcm90b3R5cGUuc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGNtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBzQi5wcm90b3R5cGUuZ2V0UGFyYW0gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiBkbShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldFBhcmFtID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZW0oZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZm0odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHRCKGEsIGMsIGQsIGUsIGYsIG0sIEMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgbSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIG0gJiYgKG0gPSBtLlp4KTsKICAgICAgICAgIEMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBDICYmIChDID0gQy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBkID8gZ20oYSwgYykgOiB2b2lkIDAgPT09IGUgPyBobShhLCBjLCBkKSA6IHZvaWQgMCA9PT0gZiA/IGltKGEsIGMsIGQsIGUpIDogdm9pZCAwID09PSBtID8gam0oYSwgYywgZCwgZSwgZikgOiB2b2lkIDAgPT09IEMgPyBrbShhLCBjLCBkLCBlLCBmLCBtKSA6IGxtKGEsIGMsIGQsIGUsIGYsIG0sIEMpOwogICAgICAgICAgaCh0QilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIHRCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoS0EucHJvdG90eXBlKTsKICAgICAgICB0Qi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0QjsKICAgICAgICB0Qi5wcm90b3R5cGUuJHggPSB0QjsKICAgICAgICB0Qi5heSA9IHt9OwogICAgICAgIGIuYnRIaW5nZUNvbnN0cmFpbnQgPSB0QjsKICAgICAgICB0Qi5wcm90b3R5cGUuc2V0TGltaXQgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICB2YXIgbSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gZiA/IG1tKG0sIGEsIGMsIGQsIGUpIDogbm0obSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5lbmFibGVBbmd1bGFyTW90b3IgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBvbShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdEIucHJvdG90eXBlLnNldEFuZ3VsYXJPbmx5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHBtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB0Qi5wcm90b3R5cGUuZW5hYmxlTW90b3IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcW0oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5zZXRNYXhNb3RvckltcHVsc2UgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcm0oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5zZXRNb3RvclRhcmdldCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgc20oZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5lbmFibGVGZWVkYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0bShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdEIucHJvdG90eXBlLmdldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHVtKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB0Qi5wcm90b3R5cGUuc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHdtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB0Qi5wcm90b3R5cGUuZ2V0UGFyYW0gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiB4bShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdEIucHJvdG90eXBlLnNldFBhcmFtID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgeW0oZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgem0odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHVCKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IEFtKGEsIGMpOwogICAgICAgICAgaCh1QilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIHVCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUEEucHJvdG90eXBlKTsKICAgICAgICB1Qi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB1QjsKICAgICAgICB1Qi5wcm90b3R5cGUuJHggPSB1QjsKICAgICAgICB1Qi5heSA9IHt9OwogICAgICAgIGIuYnRDb25lU2hhcGVaID0gdUI7CiAgICAgICAgdUIucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBCbShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdUIucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQ20odGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1Qi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBEbShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdUIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBFbSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gdkIoYSwgYykgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gRm0oYSwgYyk7CiAgICAgICAgICBoKHZCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgdkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQQS5wcm90b3R5cGUpOwogICAgICAgIHZCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHZCOwogICAgICAgIHZCLnByb3RvdHlwZS4keCA9IHZCOwogICAgICAgIHZCLmF5ID0ge307CiAgICAgICAgYi5idENvbmVTaGFwZVggPSB2QjsKICAgICAgICB2Qi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEdtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB2Qi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhIbSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHZCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEltKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB2Qi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEptKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiB3QihhLCBjKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGEgPyBLbSgpIDogdm9pZCAwID09PSBjID8gTG0oYSkgOiBNbShhLCBjKTsKICAgICAgICAgIGgod0IpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICB3Qi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFhBLnByb3RvdHlwZSk7CiAgICAgICAgd0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gd0I7CiAgICAgICAgd0IucHJvdG90eXBlLiR4ID0gd0I7CiAgICAgICAgd0IuYXkgPSB7fTsKICAgICAgICBiLmJ0VHJpYW5nbGVNZXNoID0gd0I7CiAgICAgICAgd0IucHJvdG90eXBlLmFkZFRyaWFuZ2xlID0gZnVuY3Rpb24oYSwgYywgZCwgZSkgewogICAgICAgICAgdmFyIGYgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gZSA/IE5tKGYsIGEsIGMsIGQpIDogT20oZiwgYSwgYywgZCwgZSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHdCLnByb3RvdHlwZS5maW5kT3JBZGRWZXJ0ZXggPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiBQbShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgd0IucHJvdG90eXBlLmFkZEluZGV4ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFFtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3Qi5wcm90b3R5cGUuZ2V0SW5kZXhlZE1lc2hBcnJheSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoUm0odGhpcy5aeCksIGxCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgd0IucHJvdG90eXBlLnNldFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgU20oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHdCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgVG0odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHhCKGEsIGMpIHsKICAgICAgICAgIHpBKCk7CiAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgYSAmJiAoYSA9IERBKGEpKTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBhID8gVW0oKSA6IHZvaWQgMCA9PT0gYyA/IFZtKGEpIDogV20oYSwgYyk7CiAgICAgICAgICBoKHhCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgeEIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgeEIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0geEI7CiAgICAgICAgeEIucHJvdG90eXBlLiR4ID0geEI7CiAgICAgICAgeEIuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29udmV4SHVsbFNoYXBlID0geEI7CiAgICAgICAgeEIucHJvdG90eXBlLmFkZFBvaW50ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGMgPyBYbShkLCBhKSA6IFltKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuc2V0TWFyZ2luID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFptKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuZ2V0TWFyZ2luID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gJG0odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHhCLnByb3RvdHlwZS5nZXROdW1WZXJ0aWNlcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGFuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuaW5pdGlhbGl6ZVBvbHloZWRyYWxGZWF0dXJlcyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gISFibihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeEIucHJvdG90eXBlLnJlY2FsY0xvY2FsQWFiYiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgY24odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHhCLnByb3RvdHlwZS5nZXRDb252ZXhQb2x5aGVkcm9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhkbih0aGlzLlp4KSwgeUIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGVuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhmbih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHhCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGduKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGhuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBLKCkgewogICAgICAgICAgdGhpcy5aeCA9IGpuKCk7CiAgICAgICAgICBoKEspW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBLLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSzsKICAgICAgICBLLnByb3RvdHlwZS4keCA9IEs7CiAgICAgICAgSy5heSA9IHt9OwogICAgICAgIGIuYnRWZWhpY2xlVHVuaW5nID0gSzsKICAgICAgICBLLnByb3RvdHlwZS5nZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzID0gSy5wcm90b3R5cGUubnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrbih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSy5wcm90b3R5cGUuc2V0X21fc3VzcGVuc2lvblN0aWZmbmVzcyA9IEsucHJvdG90eXBlLnV5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGxuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25TdGlmZm5lc3MiLCB7CiAgICAgICAgICBnZXQ6IEsucHJvdG90eXBlLm55LAogICAgICAgICAgc2V0OiBLLnByb3RvdHlwZS51eQogICAgICAgIH0pOwogICAgICAgIEsucHJvdG90eXBlLmdldF9tX3N1c3BlbnNpb25Db21wcmVzc2lvbiA9IEsucHJvdG90eXBlLlBBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbW4odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEsucHJvdG90eXBlLnNldF9tX3N1c3BlbnNpb25Db21wcmVzc2lvbiA9IEsucHJvdG90eXBlLnZEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG5uKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25Db21wcmVzc2lvbiIsIHsKICAgICAgICAgIGdldDogSy5wcm90b3R5cGUuUEEsCiAgICAgICAgICBzZXQ6IEsucHJvdG90eXBlLnZECiAgICAgICAgfSk7CiAgICAgICAgSy5wcm90b3R5cGUuZ2V0X21fc3VzcGVuc2lvbkRhbXBpbmcgPSBLLnByb3RvdHlwZS5RQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIG9uKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBLLnByb3RvdHlwZS5zZXRfbV9zdXNwZW5zaW9uRGFtcGluZyA9IEsucHJvdG90eXBlLndEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHBuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25EYW1waW5nIiwgewogICAgICAgICAgZ2V0OiBLLnByb3RvdHlwZS5RQSwKICAgICAgICAgIHNldDogSy5wcm90b3R5cGUud0QKICAgICAgICB9KTsKICAgICAgICBLLnByb3RvdHlwZS5nZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20gPSBLLnByb3RvdHlwZS5teSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHFuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBLLnByb3RvdHlwZS5zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20gPSBLLnByb3RvdHlwZS50eSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBybihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEsucHJvdG90eXBlLCAibV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20iLCB7CiAgICAgICAgICBnZXQ6IEsucHJvdG90eXBlLm15LAogICAgICAgICAgc2V0OiBLLnByb3RvdHlwZS50eQogICAgICAgIH0pOwogICAgICAgIEsucHJvdG90eXBlLmdldF9tX2ZyaWN0aW9uU2xpcCA9IEsucHJvdG90eXBlLml5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gc24odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEsucHJvdG90eXBlLnNldF9tX2ZyaWN0aW9uU2xpcCA9IEsucHJvdG90eXBlLnB5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsICJtX2ZyaWN0aW9uU2xpcCIsIHsKICAgICAgICAgIGdldDogSy5wcm90b3R5cGUuaXksCiAgICAgICAgICBzZXQ6IEsucHJvdG90eXBlLnB5CiAgICAgICAgfSk7CiAgICAgICAgSy5wcm90b3R5cGUuZ2V0X21fbWF4U3VzcGVuc2lvbkZvcmNlID0gSy5wcm90b3R5cGUubHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB1bih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSy5wcm90b3R5cGUuc2V0X21fbWF4U3VzcGVuc2lvbkZvcmNlID0gSy5wcm90b3R5cGUuc3kgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdm4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLLnByb3RvdHlwZSwgIm1fbWF4U3VzcGVuc2lvbkZvcmNlIiwgewogICAgICAgICAgZ2V0OiBLLnByb3RvdHlwZS5seSwKICAgICAgICAgIHNldDogSy5wcm90b3R5cGUuc3kKICAgICAgICB9KTsKICAgICAgICBmdW5jdGlvbiB6QigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb2xsaXNpb25PYmplY3RXcmFwcGVyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB6Qi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICB6Qi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB6QjsKICAgICAgICB6Qi5wcm90b3R5cGUuJHggPSB6QjsKICAgICAgICB6Qi5heSA9IHt9OwogICAgICAgIGIuYnRDb2xsaXNpb25PYmplY3RXcmFwcGVyID0gekI7CiAgICAgICAgekIucHJvdG90eXBlLmdldFdvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh3bih0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHpCLnByb3RvdHlwZS5nZXRDb2xsaXNpb25PYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHhuKHRoaXMuWngpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgekIucHJvdG90eXBlLmdldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh5bih0aGlzLlp4KSwgbikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEFCKGEpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gem4oYSk7CiAgICAgICAgICBoKEFCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgQUIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgQUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQUI7CiAgICAgICAgQUIucHJvdG90eXBlLiR4ID0gQUI7CiAgICAgICAgQUIuYXkgPSB7fTsKICAgICAgICBiLmJ0U2hhcGVIdWxsID0gQUI7CiAgICAgICAgQUIucHJvdG90eXBlLmJ1aWxkSHVsbCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gISFBbihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQUIucHJvdG90eXBlLm51bVZlcnRpY2VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gQm4odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEFCLnByb3RvdHlwZS5nZXRWZXJ0ZXhQb2ludGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhDbih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEFCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgRG4odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEJCKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gYSA/IEVuKCkgOiB2b2lkIDAgPT09IGMgPyBGbihhKSA6IEduKGEsIGMpOwogICAgICAgICAgaChCQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIEJCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoWUEucHJvdG90eXBlKTsKICAgICAgICBCQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCQjsKICAgICAgICBCQi5wcm90b3R5cGUuJHggPSBCQjsKICAgICAgICBCQi5heSA9IHt9OwogICAgICAgIGIuYnREZWZhdWx0TW90aW9uU3RhdGUgPSBCQjsKICAgICAgICBCQi5wcm90b3R5cGUuZ2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSG4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEJCLnByb3RvdHlwZS5zZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBJbihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQkIucHJvdG90eXBlLmdldF9tX2dyYXBoaWNzV29ybGRUcmFucyA9IEJCLnByb3RvdHlwZS5UeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoSm4odGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCQi5wcm90b3R5cGUuc2V0X21fZ3JhcGhpY3NXb3JsZFRyYW5zID0gQkIucHJvdG90eXBlLnpDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEtuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQkIucHJvdG90eXBlLCAibV9ncmFwaGljc1dvcmxkVHJhbnMiLCB7CiAgICAgICAgICBnZXQ6IEJCLnByb3RvdHlwZS5UeiwKICAgICAgICAgIHNldDogQkIucHJvdG90eXBlLnpDCiAgICAgICAgfSk7CiAgICAgICAgQkIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBMbih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gTChhKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGhpcy5aeCA9IE1uKGEpOwogICAgICAgICAgaChMKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgTC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBMLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEw7CiAgICAgICAgTC5wcm90b3R5cGUuJHggPSBMOwogICAgICAgIEwuYXkgPSB7fTsKICAgICAgICBiLmJ0V2hlZWxJbmZvID0gTDsKICAgICAgICBMLnByb3RvdHlwZS5nZXRTdXNwZW5zaW9uUmVzdExlbmd0aCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE5uKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS51cGRhdGVXaGVlbCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgT24oZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3N1c3BlbnNpb25TdGlmZm5lc3MgPSBMLnByb3RvdHlwZS5ueSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFBuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzID0gTC5wcm90b3R5cGUudXkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUW4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fc3VzcGVuc2lvblN0aWZmbmVzcyIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUubnksCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLnV5CiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fZnJpY3Rpb25TbGlwID0gTC5wcm90b3R5cGUuaXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBSbih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fZnJpY3Rpb25TbGlwID0gTC5wcm90b3R5cGUucHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgU24oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fZnJpY3Rpb25TbGlwIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5peSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUucHkKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9lbmdpbmVGb3JjZSA9IEwucHJvdG90eXBlLk96ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVG4odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX2VuZ2luZUZvcmNlID0gTC5wcm90b3R5cGUudUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVW4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fZW5naW5lRm9yY2UiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLk96LAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS51QwogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3JvbGxJbmZsdWVuY2UgPSBMLnByb3RvdHlwZS5GQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFZuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV9yb2xsSW5mbHVlbmNlID0gTC5wcm90b3R5cGUubEQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV24oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fcm9sbEluZmx1ZW5jZSIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuRkEsCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLmxECiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGgxID0gTC5wcm90b3R5cGUuVUEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBYbih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGgxID0gTC5wcm90b3R5cGUuQUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWW4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fc3VzcGVuc2lvblJlc3RMZW5ndGgxIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5VQSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuQUQKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV93aGVlbHNSYWRpdXMgPSBMLnByb3RvdHlwZS5oQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFpuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV93aGVlbHNSYWRpdXMgPSBMLnByb3RvdHlwZS5PRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICAkbihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV93aGVlbHNSYWRpdXMiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLmhCLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5PRAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbiA9IEwucHJvdG90eXBlLkJ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gYW8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbiA9IEwucHJvdG90eXBlLkl5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGJvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbiIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuQnksCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLkl5CiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb24gPSBMLnByb3RvdHlwZS5DeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGNvKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV93aGVlbHNEYW1waW5nUmVsYXhhdGlvbiA9IEwucHJvdG90eXBlLkp5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGVvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3doZWVsc0RhbXBpbmdSZWxheGF0aW9uIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5DeSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuSnkKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9zdGVlcmluZyA9IEwucHJvdG90eXBlLk5BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gZm8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX3N0ZWVyaW5nID0gTC5wcm90b3R5cGUudEQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ28oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fc3RlZXJpbmciLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLk5BLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS50RAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX21heFN1c3BlbnNpb25Gb3JjZSA9IEwucHJvdG90eXBlLmx5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gaG8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX21heFN1c3BlbnNpb25Gb3JjZSA9IEwucHJvdG90eXBlLnN5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGlvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX21heFN1c3BlbnNpb25Gb3JjZSIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUubHksCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLnN5CiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtID0gTC5wcm90b3R5cGUubXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBqbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtID0gTC5wcm90b3R5cGUudHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAga28oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fbWF4U3VzcGVuc2lvblRyYXZlbENtIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5teSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUudHkKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV93aGVlbHNTdXNwZW5zaW9uRm9yY2UgPSBMLnByb3RvdHlwZS5pQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGxvKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV93aGVlbHNTdXNwZW5zaW9uRm9yY2UgPSBMLnByb3RvdHlwZS5QRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBtbyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV93aGVlbHNTdXNwZW5zaW9uRm9yY2UiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLmlCLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5QRAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX2JJc0Zyb250V2hlZWwgPSBMLnByb3RvdHlwZS53eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhbm8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX2JJc0Zyb250V2hlZWwgPSBMLnByb3RvdHlwZS5EeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBvbyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV9iSXNGcm9udFdoZWVsIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS53eSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuRHkKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9yYXljYXN0SW5mbyA9IEwucHJvdG90eXBlLkRBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhwbyh0aGlzLlp4KSwgTSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX3JheWNhc3RJbmZvID0gTC5wcm90b3R5cGUuakQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcW8oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fcmF5Y2FzdEluZm8iLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLkRBLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5qRAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX2NoYXNzaXNDb25uZWN0aW9uUG9pbnRDUyA9IEwucHJvdG90eXBlLnp6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhybyh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX2NoYXNzaXNDb25uZWN0aW9uUG9pbnRDUyA9IEwucHJvdG90eXBlLmZDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHNvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX2NoYXNzaXNDb25uZWN0aW9uUG9pbnRDUyIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuenosCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLmZDCiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fd29ybGRUcmFuc2Zvcm0gPSBMLnByb3RvdHlwZS5qQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodG8odGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV93b3JsZFRyYW5zZm9ybSA9IEwucHJvdG90eXBlLlFEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHVvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3dvcmxkVHJhbnNmb3JtIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5qQiwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuUUQKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV93aGVlbERpcmVjdGlvbkNTID0gTC5wcm90b3R5cGUuQXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHZvKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fd2hlZWxEaXJlY3Rpb25DUyA9IEwucHJvdG90eXBlLkh5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHdvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3doZWVsRGlyZWN0aW9uQ1MiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLkF5LAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5IeQogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3doZWVsQXhsZUNTID0gTC5wcm90b3R5cGUuenkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHhvKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fd2hlZWxBeGxlQ1MgPSBMLnByb3RvdHlwZS5HeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB5byhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV93aGVlbEF4bGVDUyIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuenksCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLkd5CiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fcm90YXRpb24gPSBMLnByb3RvdHlwZS5IQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHpvKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV9yb3RhdGlvbiA9IEwucHJvdG90eXBlLm5EID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEFvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3JvdGF0aW9uIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5IQSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUubkQKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9kZWx0YVJvdGF0aW9uID0gTC5wcm90b3R5cGUuSXogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBCbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fZGVsdGFSb3RhdGlvbiA9IEwucHJvdG90eXBlLm9DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIENvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX2RlbHRhUm90YXRpb24iLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLkl6LAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5vQwogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX2JyYWtlID0gTC5wcm90b3R5cGUucnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBEbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fYnJha2UgPSBMLnByb3RvdHlwZS5aQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBFbyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV9icmFrZSIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUucnosCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLlpCCiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uID0gTC5wcm90b3R5cGUuQXogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBGbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uID0gTC5wcm90b3R5cGUuZ0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgR28oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5BeiwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuZ0MKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9zdXNwZW5zaW9uUmVsYXRpdmVWZWxvY2l0eSA9IEwucHJvdG90eXBlLlNBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSG8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX3N1c3BlbnNpb25SZWxhdGl2ZVZlbG9jaXR5ID0gTC5wcm90b3R5cGUueUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSW8oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fc3VzcGVuc2lvblJlbGF0aXZlVmVsb2NpdHkiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLlNBLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS55RAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3NraWRJbmZvID0gTC5wcm90b3R5cGUuS0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBKbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fc2tpZEluZm8gPSBMLnByb3RvdHlwZS5xRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBLbyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV9za2lkSW5mbyIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuS0EsCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLnFECiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIExvKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBOKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBhID8gTW8oKSA6IHZvaWQgMCA9PT0gYyA/IF9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF8xKGEpIDogdm9pZCAwID09PSBkID8gX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfYnRWZWN0b3I0XzIoYSwgYykgOiB2b2lkIDAgPT09IGUgPyBfZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF9idFZlY3RvcjRfMyhhLCBjLCBkKSA6IE5vKGEsIGMsIGQsIGUpOwogICAgICAgICAgaChOKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgTi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHAucHJvdG90eXBlKTsKICAgICAgICBOLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE47CiAgICAgICAgTi5wcm90b3R5cGUuJHggPSBOOwogICAgICAgIE4uYXkgPSB7fTsKICAgICAgICBiLmJ0VmVjdG9yNCA9IE47CiAgICAgICAgTi5wcm90b3R5cGUudyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE9vKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5zZXRWYWx1ZSA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIHZhciBmID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBQbyhmLCBhLCBjLCBkLCBlKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTi5wcm90b3R5cGUubGVuZ3RoID0gTi5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUW8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnggPSBOLnByb3RvdHlwZS54ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUm8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnkgPSBOLnByb3RvdHlwZS55ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gU28odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnogPSBOLnByb3RvdHlwZS56ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVG8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVW8oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVm8oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV28oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLm5vcm1hbGl6ZSA9IE4ucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgWG8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnJvdGF0ZSA9IE4ucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuIGsoWW8oZCwgYSwgYyksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5kb3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIFpvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5vcF9tdWwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoJG8oYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5vcF9hZGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoYXAoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5vcF9zdWIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoYnAoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgY3AodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIENCKCkgewogICAgICAgICAgdGhpcy5aeCA9IGRwKCk7CiAgICAgICAgICBoKENCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgQ0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgQ0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ0I7CiAgICAgICAgQ0IucHJvdG90eXBlLiR4ID0gQ0I7CiAgICAgICAgQ0IuYXkgPSB7fTsKICAgICAgICBiLmJ0RGVmYXVsdENvbGxpc2lvbkNvbnN0cnVjdGlvbkluZm8gPSBDQjsKICAgICAgICBDQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGVwKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBPKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBBbmNob3IsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIE8ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgTy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBPOwogICAgICAgIE8ucHJvdG90eXBlLiR4ID0gTzsKICAgICAgICBPLmF5ID0ge307CiAgICAgICAgYi5BbmNob3IgPSBPOwogICAgICAgIE8ucHJvdG90eXBlLmdldF9tX25vZGUgPSBPLnByb3RvdHlwZS51QSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZnAodGhpcy5aeCksIE5vZGUpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPLnByb3RvdHlwZS5zZXRfbV9ub2RlID0gTy5wcm90b3R5cGUuYUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ3AoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLnByb3RvdHlwZSwgIm1fbm9kZSIsIHsKICAgICAgICAgIGdldDogTy5wcm90b3R5cGUudUEsCiAgICAgICAgICBzZXQ6IE8ucHJvdG90eXBlLmFECiAgICAgICAgfSk7CiAgICAgICAgTy5wcm90b3R5cGUuZ2V0X21fbG9jYWwgPSBPLnByb3RvdHlwZS5uQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoaHAodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPLnByb3RvdHlwZS5zZXRfbV9sb2NhbCA9IE8ucHJvdG90eXBlLlVDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGlwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTy5wcm90b3R5cGUsICJtX2xvY2FsIiwgewogICAgICAgICAgZ2V0OiBPLnByb3RvdHlwZS5uQSwKICAgICAgICAgIHNldDogTy5wcm90b3R5cGUuVUMKICAgICAgICB9KTsKICAgICAgICBPLnByb3RvdHlwZS5nZXRfbV9ib2R5ID0gTy5wcm90b3R5cGUucXogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGpwKHRoaXMuWngpLCBJKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTy5wcm90b3R5cGUuc2V0X21fYm9keSA9IE8ucHJvdG90eXBlLllCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGtwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTy5wcm90b3R5cGUsICJtX2JvZHkiLCB7CiAgICAgICAgICBnZXQ6IE8ucHJvdG90eXBlLnF6LAogICAgICAgICAgc2V0OiBPLnByb3RvdHlwZS5ZQgogICAgICAgIH0pOwogICAgICAgIE8ucHJvdG90eXBlLmdldF9tX2luZmx1ZW5jZSA9IE8ucHJvdG90eXBlLmdBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbHAodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE8ucHJvdG90eXBlLnNldF9tX2luZmx1ZW5jZSA9IE8ucHJvdG90eXBlLk5DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG1wKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTy5wcm90b3R5cGUsICJtX2luZmx1ZW5jZSIsIHsKICAgICAgICAgIGdldDogTy5wcm90b3R5cGUuZ0EsCiAgICAgICAgICBzZXQ6IE8ucHJvdG90eXBlLk5DCiAgICAgICAgfSk7CiAgICAgICAgTy5wcm90b3R5cGUuZ2V0X21fYzAgPSBPLnByb3RvdHlwZS51eiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsobnAodGhpcy5aeCksIGFCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTy5wcm90b3R5cGUuc2V0X21fYzAgPSBPLnByb3RvdHlwZS5hQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBvcChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8ucHJvdG90eXBlLCAibV9jMCIsIHsKICAgICAgICAgIGdldDogTy5wcm90b3R5cGUudXosCiAgICAgICAgICBzZXQ6IE8ucHJvdG90eXBlLmFDCiAgICAgICAgfSk7CiAgICAgICAgTy5wcm90b3R5cGUuZ2V0X21fYzEgPSBPLnByb3RvdHlwZS52eiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsocHAodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPLnByb3RvdHlwZS5zZXRfbV9jMSA9IE8ucHJvdG90eXBlLmJDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHFwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTy5wcm90b3R5cGUsICJtX2MxIiwgewogICAgICAgICAgZ2V0OiBPLnByb3RvdHlwZS52eiwKICAgICAgICAgIHNldDogTy5wcm90b3R5cGUuYkMKICAgICAgICB9KTsKICAgICAgICBPLnByb3RvdHlwZS5nZXRfbV9jMiA9IE8ucHJvdG90eXBlLnd6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gcnAodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE8ucHJvdG90eXBlLnNldF9tX2MyID0gTy5wcm90b3R5cGUuY0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgc3AoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLnByb3RvdHlwZSwgIm1fYzIiLCB7CiAgICAgICAgICBnZXQ6IE8ucHJvdG90eXBlLnd6LAogICAgICAgICAgc2V0OiBPLnByb3RvdHlwZS5jQwogICAgICAgIH0pOwogICAgICAgIE8ucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB0cCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gUSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRWZWhpY2xlUmF5Y2FzdGVyUmVzdWx0LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBRLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUTsKICAgICAgICBRLnByb3RvdHlwZS4keCA9IFE7CiAgICAgICAgUS5heSA9IHt9OwogICAgICAgIGIuYnRWZWhpY2xlUmF5Y2FzdGVyUmVzdWx0ID0gUTsKICAgICAgICBRLnByb3RvdHlwZS5nZXRfbV9oaXRQb2ludEluV29ybGQgPSBRLnByb3RvdHlwZS5iQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodXAodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBRLnByb3RvdHlwZS5zZXRfbV9oaXRQb2ludEluV29ybGQgPSBRLnByb3RvdHlwZS5JQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2cChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFEucHJvdG90eXBlLCAibV9oaXRQb2ludEluV29ybGQiLCB7CiAgICAgICAgICBnZXQ6IFEucHJvdG90eXBlLmJBLAogICAgICAgICAgc2V0OiBRLnByb3RvdHlwZS5JQwogICAgICAgIH0pOwogICAgICAgIFEucHJvdG90eXBlLmdldF9tX2hpdE5vcm1hbEluV29ybGQgPSBRLnByb3RvdHlwZS4keiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsod3AodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBRLnByb3RvdHlwZS5zZXRfbV9oaXROb3JtYWxJbldvcmxkID0gUS5wcm90b3R5cGUuR0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeHAoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLnByb3RvdHlwZSwgIm1faGl0Tm9ybWFsSW5Xb3JsZCIsIHsKICAgICAgICAgIGdldDogUS5wcm90b3R5cGUuJHosCiAgICAgICAgICBzZXQ6IFEucHJvdG90eXBlLkdDCiAgICAgICAgfSk7CiAgICAgICAgUS5wcm90b3R5cGUuZ2V0X21fZGlzdEZyYWN0aW9uID0gUS5wcm90b3R5cGUuTHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB5cCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUS5wcm90b3R5cGUuc2V0X21fZGlzdEZyYWN0aW9uID0gUS5wcm90b3R5cGUuckMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgenAoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLnByb3RvdHlwZSwgIm1fZGlzdEZyYWN0aW9uIiwgewogICAgICAgICAgZ2V0OiBRLnByb3RvdHlwZS5MeiwKICAgICAgICAgIHNldDogUS5wcm90b3R5cGUuckMKICAgICAgICB9KTsKICAgICAgICBRLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgQXAodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGdCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidFZlY3RvcjNBcnJheSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgZ0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgZ0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ0I7CiAgICAgICAgZ0IucHJvdG90eXBlLiR4ID0gZ0I7CiAgICAgICAgZ0IuYXkgPSB7fTsKICAgICAgICBiLmJ0VmVjdG9yM0FycmF5ID0gZ0I7CiAgICAgICAgZ0IucHJvdG90eXBlLnNpemUgPSBnQi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEJwKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBnQi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoQ3AoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBnQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIERwKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBEQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb25zdHJhaW50U29sdmVyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBEQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBEQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEQjsKICAgICAgICBEQi5wcm90b3R5cGUuJHggPSBEQjsKICAgICAgICBEQi5heSA9IHt9OwogICAgICAgIGIuYnRDb25zdHJhaW50U29sdmVyID0gREI7CiAgICAgICAgREIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBFcCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gUihhLCBjLCBkKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gRnAoYSwgYywgZCk7CiAgICAgICAgICBoKFIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBSLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUUEucHJvdG90eXBlKTsKICAgICAgICBSLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFI7CiAgICAgICAgUi5wcm90b3R5cGUuJHggPSBSOwogICAgICAgIFIuYXkgPSB7fTsKICAgICAgICBiLmJ0UmF5Y2FzdFZlaGljbGUgPSBSOwogICAgICAgIFIucHJvdG90eXBlLmFwcGx5RW5naW5lRm9yY2UgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEdwKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5zZXRTdGVlcmluZ1ZhbHVlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBIcChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0V2hlZWxUcmFuc2Zvcm1XUyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhJcChjLCBhKSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnVwZGF0ZVdoZWVsVHJhbnNmb3JtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBKcChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuYWRkV2hlZWwgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmLCBtLCBDKSB7CiAgICAgICAgICB2YXIgUCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIG0gJiYgIm9iamVjdCIgPT09IHR5cGVvZiBtICYmIChtID0gbS5aeCk7CiAgICAgICAgICBDICYmICJvYmplY3QiID09PSB0eXBlb2YgQyAmJiAoQyA9IEMuWngpOwogICAgICAgICAgcmV0dXJuIGsoS3AoUCwgYSwgYywgZCwgZSwgZiwgbSwgQyksIEwpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXROdW1XaGVlbHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMcCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0UmlnaWRCb2R5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhNcCh0aGlzLlp4KSwgSSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLmdldFdoZWVsSW5mbyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhOcChjLCBhKSwgTCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnNldEJyYWtlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBPcChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuc2V0Q29vcmRpbmF0ZVN5c3RlbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIFBwKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRDdXJyZW50U3BlZWRLbUhvdXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBRcCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0Q2hhc3Npc1dvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhScCh0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnJheUNhc3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIFNwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS51cGRhdGVWZWhpY2xlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFRwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5yZXNldFN1c3BlbnNpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFVwKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRTdGVlcmluZ1ZhbHVlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBWcChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUudXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1MgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYyA/IFdwKGQsIGEpIDogWHAoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnNldFBpdGNoQ29udHJvbCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBZcChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUudXBkYXRlU3VzcGVuc2lvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBacChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUudXBkYXRlRnJpY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJHAoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLmdldFJpZ2h0QXhpcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGFxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRVcEF4aXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBicSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0Rm9yd2FyZEF4aXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBjcSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0Rm9yd2FyZFZlY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZHEodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRVc2VyQ29uc3RyYWludFR5cGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBlcSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuc2V0VXNlckNvbnN0cmFpbnRUeXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGZxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5zZXRVc2VyQ29uc3RyYWludElkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGdxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRVc2VyQ29uc3RyYWludElkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gaHEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnVwZGF0ZUFjdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgaXEoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBqcSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gRUIoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBrcShhKTsKICAgICAgICAgIGgoRUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBFQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFRBLnByb3RvdHlwZSk7CiAgICAgICAgRUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRUI7CiAgICAgICAgRUIucHJvdG90eXBlLiR4ID0gRUI7CiAgICAgICAgRUIuYXkgPSB7fTsKICAgICAgICBiLmJ0Q3lsaW5kZXJTaGFwZVggPSBFQjsKICAgICAgICBFQi5wcm90b3R5cGUuc2V0TWFyZ2luID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGxxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQi5wcm90b3R5cGUuZ2V0TWFyZ2luID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbXEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVCLnByb3RvdHlwZS5zZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbnEoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVCLnByb3RvdHlwZS5nZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKG9xKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUIucHJvdG90eXBlLmNhbGN1bGF0ZUxvY2FsSW5lcnRpYSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcHEoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcXEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEZCKGEpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gcnEoYSk7CiAgICAgICAgICBoKEZCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgRkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShUQS5wcm90b3R5cGUpOwogICAgICAgIEZCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEZCOwogICAgICAgIEZCLnByb3RvdHlwZS4keCA9IEZCOwogICAgICAgIEZCLmF5ID0ge307CiAgICAgICAgYi5idEN5bGluZGVyU2hhcGVaID0gRkI7CiAgICAgICAgRkIucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBzcShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRkIucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHRxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGQi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHVxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGQi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh2cSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEZCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHdxKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHhxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiB5QigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb252ZXhQb2x5aGVkcm9uLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB5Qi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICB5Qi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB5QjsKICAgICAgICB5Qi5wcm90b3R5cGUuJHggPSB5QjsKICAgICAgICB5Qi5heSA9IHt9OwogICAgICAgIGIuYnRDb252ZXhQb2x5aGVkcm9uID0geUI7CiAgICAgICAgeUIucHJvdG90eXBlLmdldF9tX3ZlcnRpY2VzID0geUIucHJvdG90eXBlLmRCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh5cSh0aGlzLlp4KSwgZ0IpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB5Qi5wcm90b3R5cGUuc2V0X21fdmVydGljZXMgPSB5Qi5wcm90b3R5cGUuS0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgenEoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5Qi5wcm90b3R5cGUsICJtX3ZlcnRpY2VzIiwgewogICAgICAgICAgZ2V0OiB5Qi5wcm90b3R5cGUuZEIsCiAgICAgICAgICBzZXQ6IHlCLnByb3RvdHlwZS5LRAogICAgICAgIH0pOwogICAgICAgIHlCLnByb3RvdHlwZS5nZXRfbV9mYWNlcyA9IHlCLnByb3RvdHlwZS5ReiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQXEodGhpcy5aeCksIEdCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeUIucHJvdG90eXBlLnNldF9tX2ZhY2VzID0geUIucHJvdG90eXBlLndDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEJxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeUIucHJvdG90eXBlLCAibV9mYWNlcyIsIHsKICAgICAgICAgIGdldDogeUIucHJvdG90eXBlLlF6LAogICAgICAgICAgc2V0OiB5Qi5wcm90b3R5cGUud0MKICAgICAgICB9KTsKICAgICAgICB5Qi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIENxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBIQigpIHsKICAgICAgICAgIHRoaXMuWnggPSBEcSgpOwogICAgICAgICAgaChIQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIEhCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEhCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEhCOwogICAgICAgIEhCLnByb3RvdHlwZS4keCA9IEhCOwogICAgICAgIEhCLmF5ID0ge307CiAgICAgICAgYi5idFNlcXVlbnRpYWxJbXB1bHNlQ29uc3RyYWludFNvbHZlciA9IEhCOwogICAgICAgIEhCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgRXEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIElCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSB0QW5jaG9yQXJyYXksIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIElCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIElCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IElCOwogICAgICAgIElCLnByb3RvdHlwZS4keCA9IElCOwogICAgICAgIElCLmF5ID0ge307CiAgICAgICAgYi50QW5jaG9yQXJyYXkgPSBJQjsKICAgICAgICBJQi5wcm90b3R5cGUuc2l6ZSA9IElCLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gRnEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhHcShjLCBhKSwgTykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5jbGVhciA9IElCLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgSHEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5wdXNoX2JhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSXEoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5wb3BfYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgSnEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgS3EodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIE0oKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIFJheWNhc3RJbmZvLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBNLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIE0ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTTsKICAgICAgICBNLnByb3RvdHlwZS4keCA9IE07CiAgICAgICAgTS5heSA9IHt9OwogICAgICAgIGIuUmF5Y2FzdEluZm8gPSBNOwogICAgICAgIE0ucHJvdG90eXBlLmdldF9tX2NvbnRhY3ROb3JtYWxXUyA9IE0ucHJvdG90eXBlLkN6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhMcSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE0ucHJvdG90eXBlLnNldF9tX2NvbnRhY3ROb3JtYWxXUyA9IE0ucHJvdG90eXBlLmlDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE1xKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTS5wcm90b3R5cGUsICJtX2NvbnRhY3ROb3JtYWxXUyIsIHsKICAgICAgICAgIGdldDogTS5wcm90b3R5cGUuQ3osCiAgICAgICAgICBzZXQ6IE0ucHJvdG90eXBlLmlDCiAgICAgICAgfSk7CiAgICAgICAgTS5wcm90b3R5cGUuZ2V0X21fY29udGFjdFBvaW50V1MgPSBNLnByb3RvdHlwZS5EeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTnEodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNLnByb3RvdHlwZS5zZXRfbV9jb250YWN0UG9pbnRXUyA9IE0ucHJvdG90eXBlLmpDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE9xKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTS5wcm90b3R5cGUsICJtX2NvbnRhY3RQb2ludFdTIiwgewogICAgICAgICAgZ2V0OiBNLnByb3RvdHlwZS5EeiwKICAgICAgICAgIHNldDogTS5wcm90b3R5cGUuakMKICAgICAgICB9KTsKICAgICAgICBNLnByb3RvdHlwZS5nZXRfbV9zdXNwZW5zaW9uTGVuZ3RoID0gTS5wcm90b3R5cGUuUkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBQcSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTS5wcm90b3R5cGUuc2V0X21fc3VzcGVuc2lvbkxlbmd0aCA9IE0ucHJvdG90eXBlLnhEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFFxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTS5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25MZW5ndGgiLCB7CiAgICAgICAgICBnZXQ6IE0ucHJvdG90eXBlLlJBLAogICAgICAgICAgc2V0OiBNLnByb3RvdHlwZS54RAogICAgICAgIH0pOwogICAgICAgIE0ucHJvdG90eXBlLmdldF9tX2hhcmRQb2ludFdTID0gTS5wcm90b3R5cGUuV3ogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFJxKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTS5wcm90b3R5cGUuc2V0X21faGFyZFBvaW50V1MgPSBNLnByb3RvdHlwZS5DQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTcShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE0ucHJvdG90eXBlLCAibV9oYXJkUG9pbnRXUyIsIHsKICAgICAgICAgIGdldDogTS5wcm90b3R5cGUuV3osCiAgICAgICAgICBzZXQ6IE0ucHJvdG90eXBlLkNDCiAgICAgICAgfSk7CiAgICAgICAgTS5wcm90b3R5cGUuZ2V0X21fd2hlZWxEaXJlY3Rpb25XUyA9IE0ucHJvdG90eXBlLmZCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhUcSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE0ucHJvdG90eXBlLnNldF9tX3doZWVsRGlyZWN0aW9uV1MgPSBNLnByb3RvdHlwZS5NRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBVcShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE0ucHJvdG90eXBlLCAibV93aGVlbERpcmVjdGlvbldTIiwgewogICAgICAgICAgZ2V0OiBNLnByb3RvdHlwZS5mQiwKICAgICAgICAgIHNldDogTS5wcm90b3R5cGUuTUQKICAgICAgICB9KTsKICAgICAgICBNLnByb3RvdHlwZS5nZXRfbV93aGVlbEF4bGVXUyA9IE0ucHJvdG90eXBlLmVCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhWcSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE0ucHJvdG90eXBlLnNldF9tX3doZWVsQXhsZVdTID0gTS5wcm90b3R5cGUuTEQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV3EoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLnByb3RvdHlwZSwgIm1fd2hlZWxBeGxlV1MiLCB7CiAgICAgICAgICBnZXQ6IE0ucHJvdG90eXBlLmVCLAogICAgICAgICAgc2V0OiBNLnByb3RvdHlwZS5MRAogICAgICAgIH0pOwogICAgICAgIE0ucHJvdG90eXBlLmdldF9tX2lzSW5Db250YWN0ID0gTS5wcm90b3R5cGUuaEEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIVhxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNLnByb3RvdHlwZS5zZXRfbV9pc0luQ29udGFjdCA9IE0ucHJvdG90eXBlLk9DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFlxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTS5wcm90b3R5cGUsICJtX2lzSW5Db250YWN0IiwgewogICAgICAgICAgZ2V0OiBNLnByb3RvdHlwZS5oQSwKICAgICAgICAgIHNldDogTS5wcm90b3R5cGUuT0MKICAgICAgICB9KTsKICAgICAgICBNLnByb3RvdHlwZS5nZXRfbV9ncm91bmRPYmplY3QgPSBNLnByb3RvdHlwZS5WeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFpxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNLnByb3RvdHlwZS5zZXRfbV9ncm91bmRPYmplY3QgPSBNLnByb3RvdHlwZS5CQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICAkcShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE0ucHJvdG90eXBlLCAibV9ncm91bmRPYmplY3QiLCB7CiAgICAgICAgICBnZXQ6IE0ucHJvdG90eXBlLlZ6LAogICAgICAgICAgc2V0OiBNLnByb3RvdHlwZS5CQwogICAgICAgIH0pOwogICAgICAgIE0ucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBhcih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gSkIoYSwgYywgZCkgewogICAgICAgICAgekEoKTsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgYyAmJiAoYyA9IERBKGMpKTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gYnIoYSwgYywgZCk7CiAgICAgICAgICBoKEpCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgSkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgSkIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSkI7CiAgICAgICAgSkIucHJvdG90eXBlLiR4ID0gSkI7CiAgICAgICAgSkIuYXkgPSB7fTsKICAgICAgICBiLmJ0TXVsdGlTcGhlcmVTaGFwZSA9IEpCOwogICAgICAgIEpCLnByb3RvdHlwZS5zZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgY3IoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEpCLnByb3RvdHlwZS5nZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGRyKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSkIucHJvdG90eXBlLmNhbGN1bGF0ZUxvY2FsSW5lcnRpYSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZXIoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEpCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZnIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIFMoYSwgYywgZCwgZSkgewogICAgICAgICAgekEoKTsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBlICYmIChlID0gREEoZSkpOwogICAgICAgICAgdGhpcy5aeCA9IGdyKGEsIGMsIGQsIGUpOwogICAgICAgICAgaChTKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgUy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHEucHJvdG90eXBlKTsKICAgICAgICBTLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFM7CiAgICAgICAgUy5wcm90b3R5cGUuJHggPSBTOwogICAgICAgIFMuYXkgPSB7fTsKICAgICAgICBiLmJ0U29mdEJvZHkgPSBTOwogICAgICAgIFMucHJvdG90eXBlLmNoZWNrTGluayA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuICEhaHIoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmNoZWNrRmFjZSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHJldHVybiAhIWlyKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5hcHBlbmRNYXRlcmlhbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoanIodGhpcy5aeCksIEEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5hcHBlbmROb2RlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBrcihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuYXBwZW5kTGluayA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIHZhciBmID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBscihmLCBhLCBjLCBkLCBlKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuYXBwZW5kRmFjZSA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIHZhciBmID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBtcihmLCBhLCBjLCBkLCBlKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuYXBwZW5kVGV0cmEgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICB2YXIgbSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIG5yKG0sIGEsIGMsIGQsIGUsIGYpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5hcHBlbmRBbmNob3IgPSBmdW5jdGlvbihhLCBjLCBkLCBlKSB7CiAgICAgICAgICB2YXIgZiA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgb3IoZiwgYSwgYywgZCwgZSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmFkZEZvcmNlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGMgPyBwcihkLCBhKSA6IHFyKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5hZGRBZXJvRm9yY2VUb05vZGUgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJyKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRUb3RhbE1hc3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBzcih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0VG90YWxNYXNzID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0cihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0TWFzcyA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdXIoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnRyYW5zZm9ybSA9IFMucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2cihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUudHJhbnNsYXRlID0gUy5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHdyKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5yb3RhdGUgPSBTLnByb3RvdHlwZS5yb3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeHIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNjYWxlID0gUy5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeXIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdlbmVyYXRlQ2x1c3RlcnMgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGMgPyB6cihkLCBhKSA6IEFyKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZW5lcmF0ZUJlbmRpbmdDb25zdHJhaW50cyA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuIEJyKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS51cGNhc3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoQ3IoYywgYSksIFMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRBbmlzb3Ryb3BpY0ZyaWN0aW9uID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBEcihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuZ2V0Q29sbGlzaW9uU2hhcGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEVyKHRoaXMuWngpLCBuKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRnIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldEFjdGl2YXRpb25TdGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBHcihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuZm9yY2VBY3RpdmF0aW9uU3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSHIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmFjdGl2YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYSA/IElyKGMpIDogSnIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmlzQWN0aXZlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFLcih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuaXNLaW5lbWF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUxyKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5pc1N0YXRpY09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhTXIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmlzU3RhdGljT3JLaW5lbWF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIU5yKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRSZXN0aXR1dGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE9yKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRGcmljdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFByKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRSb2xsaW5nRnJpY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBRcih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0UmVzdGl0dXRpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUnIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldEZyaWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFNyKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRSb2xsaW5nRnJpY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVHIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdldFdvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhVcih0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdldENvbGxpc2lvbkZsYWdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVnIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldENvbGxpc2lvbkZsYWdzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFdyKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBYcihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0Q29sbGlzaW9uU2hhcGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWXIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldENjZE1vdGlvblRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBacihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJHIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdldFVzZXJJbmRleCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGFzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRVc2VySW5kZXggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYnMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdldFVzZXJQb2ludGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhjcyh0aGlzLlp4KSwgSkEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRVc2VyUG9pbnRlciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBkcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuZ2V0QnJvYWRwaGFzZUhhbmRsZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZXModGhpcy5aeCksIHQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRfbV9jZmcgPSBTLnByb3RvdHlwZS54eiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZ3ModGhpcy5aeCksIFQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRfbV9jZmcgPSBTLnByb3RvdHlwZS5kQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBocyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFMucHJvdG90eXBlLCAibV9jZmciLCB7CiAgICAgICAgICBnZXQ6IFMucHJvdG90eXBlLnh6LAogICAgICAgICAgc2V0OiBTLnByb3RvdHlwZS5kQwogICAgICAgIH0pOwogICAgICAgIFMucHJvdG90eXBlLmdldF9tX25vZGVzID0gUy5wcm90b3R5cGUudkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGlzKHRoaXMuWngpLCBLQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldF9tX25vZGVzID0gUy5wcm90b3R5cGUuYkQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAganMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLnByb3RvdHlwZSwgIm1fbm9kZXMiLCB7CiAgICAgICAgICBnZXQ6IFMucHJvdG90eXBlLnZBLAogICAgICAgICAgc2V0OiBTLnByb3RvdHlwZS5iRAogICAgICAgIH0pOwogICAgICAgIFMucHJvdG90eXBlLmdldF9tX21hdGVyaWFscyA9IFMucHJvdG90eXBlLnJBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhrcyh0aGlzLlp4KSwgaEIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRfbV9tYXRlcmlhbHMgPSBTLnByb3RvdHlwZS5ZQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBscyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFMucHJvdG90eXBlLCAibV9tYXRlcmlhbHMiLCB7CiAgICAgICAgICBnZXQ6IFMucHJvdG90eXBlLnJBLAogICAgICAgICAgc2V0OiBTLnByb3RvdHlwZS5ZQwogICAgICAgIH0pOwogICAgICAgIFMucHJvdG90eXBlLmdldF9tX2FuY2hvcnMgPSBTLnByb3RvdHlwZS5teiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsobXModGhpcy5aeCksIElCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0X21fYW5jaG9ycyA9IFMucHJvdG90eXBlLlVCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG5zKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUy5wcm90b3R5cGUsICJtX2FuY2hvcnMiLCB7CiAgICAgICAgICBnZXQ6IFMucHJvdG90eXBlLm16LAogICAgICAgICAgc2V0OiBTLnByb3RvdHlwZS5VQgogICAgICAgIH0pOwogICAgICAgIFMucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBwcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gTEIoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0SW50QXJyYXksIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIExCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIExCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExCOwogICAgICAgIExCLnByb3RvdHlwZS4keCA9IExCOwogICAgICAgIExCLmF5ID0ge307CiAgICAgICAgYi5idEludEFycmF5ID0gTEI7CiAgICAgICAgTEIucHJvdG90eXBlLnNpemUgPSBMQi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHFzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMQi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIHJzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHNzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBUKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBDb25maWcsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgVC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUOwogICAgICAgIFQucHJvdG90eXBlLiR4ID0gVDsKICAgICAgICBULmF5ID0ge307CiAgICAgICAgYi5Db25maWcgPSBUOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rVkNGID0gVC5wcm90b3R5cGUuZnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB0cyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tWQ0YgPSBULnByb3RvdHlwZS5OQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB1cyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia1ZDRiIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuZnosCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLk5CCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tEUCA9IFQucHJvdG90eXBlLlR5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gdnModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rRFAgPSBULnByb3RvdHlwZS5BQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB4cyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia0RQIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5UeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuQUIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa0RHID0gVC5wcm90b3R5cGUuU3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB5cyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tERyA9IFQucHJvdG90eXBlLnpCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHpzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrREciLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLlN5LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS56QgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rTEYgPSBULnByb3RvdHlwZS5WeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEFzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa0xGID0gVC5wcm90b3R5cGUuQ0IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQnMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtMRiIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuVnksCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLkNCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tQUiA9IFQucHJvdG90eXBlLlh5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gQ3ModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rUFIgPSBULnByb3RvdHlwZS5FQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBEcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia1BSIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5YeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuRUIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa1ZDID0gVC5wcm90b3R5cGUuZXogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBFcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tWQyA9IFQucHJvdG90eXBlLk1CID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrVkMiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLmV6LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS5NQgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rREYgPSBULnByb3RvdHlwZS5SeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEdzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa0RGID0gVC5wcm90b3R5cGUueUIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSHMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtERiIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuUnksCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLnlCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tNVCA9IFQucHJvdG90eXBlLld5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSXModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rTVQgPSBULnByb3RvdHlwZS5EQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBKcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia01UIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5XeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuREIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa0NIUiA9IFQucHJvdG90eXBlLlF5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gS3ModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rQ0hSID0gVC5wcm90b3R5cGUueEIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTHMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtDSFIiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLlF5LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS54QgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rS0hSID0gVC5wcm90b3R5cGUuVXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBNcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tLSFIgPSBULnByb3RvdHlwZS5CQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBOcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia0tIUiIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuVXksCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLkJCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tTSFIgPSBULnByb3RvdHlwZS5ZeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE9zKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa1NIUiA9IFQucHJvdG90eXBlLkZCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFBzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrU0hSIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5ZeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuRkIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa0FIUiA9IFQucHJvdG90eXBlLlB5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUXModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rQUhSID0gVC5wcm90b3R5cGUud0IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUnMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtBSFIiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLlB5LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS53QgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rU1JIUl9DTCA9IFQucHJvdG90eXBlLmF6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gU3ModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rU1JIUl9DTCA9IFQucHJvdG90eXBlLklCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFRzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrU1JIUl9DTCIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuYXosCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLklCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tTS0hSX0NMID0gVC5wcm90b3R5cGUuWnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBVcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tTS0hSX0NMID0gVC5wcm90b3R5cGUuR0IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVnMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtTS0hSX0NMIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5aeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuR0IKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa1NTSFJfQ0wgPSBULnByb3RvdHlwZS5jeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFdzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa1NTSFJfQ0wgPSBULnByb3RvdHlwZS5LQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBYcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia1NTSFJfQ0wiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLmN6LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS5LQgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rU1JfU1BMVF9DTCA9IFQucHJvdG90eXBlLmJ6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gWXModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rU1JfU1BMVF9DTCA9IFQucHJvdG90eXBlLkpCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFpzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrU1JfU1BMVF9DTCIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuYnosCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLkpCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tTS19TUExUX0NMID0gVC5wcm90b3R5cGUuJHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAkcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tTS19TUExUX0NMID0gVC5wcm90b3R5cGUuSEIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYXQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtTS19TUExUX0NMIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS4keSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuSEIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa1NTX1NQTFRfQ0wgPSBULnByb3RvdHlwZS5keiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGJ0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa1NTX1NQTFRfQ0wgPSBULnByb3RvdHlwZS5MQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia1NTX1NQTFRfQ0wiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLmR6LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS5MQgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9tYXh2b2x1bWUgPSBULnByb3RvdHlwZS5sQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGR0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfbWF4dm9sdW1lID0gVC5wcm90b3R5cGUuU0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZXQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgIm1heHZvbHVtZSIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUubEIsCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLlNECiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X3RpbWVzY2FsZSA9IFQucHJvdG90eXBlLm5CID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gZnQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF90aW1lc2NhbGUgPSBULnByb3RvdHlwZS5VRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBndChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAidGltZXNjYWxlIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5uQiwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuVUQKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfdml0ZXJhdGlvbnMgPSBULnByb3RvdHlwZS5vQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGh0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfdml0ZXJhdGlvbnMgPSBULnByb3RvdHlwZS5WRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBpdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAidml0ZXJhdGlvbnMiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLm9CLAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS5WRAogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9waXRlcmF0aW9ucyA9IFQucHJvdG90eXBlLm1CID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4ganQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9waXRlcmF0aW9ucyA9IFQucHJvdG90eXBlLlREID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGt0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJwaXRlcmF0aW9ucyIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUubUIsCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLlRECiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2RpdGVyYXRpb25zID0gVC5wcm90b3R5cGUuT3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBsdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2RpdGVyYXRpb25zID0gVC5wcm90b3R5cGUudkIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbXQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImRpdGVyYXRpb25zIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5PeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUudkIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfY2l0ZXJhdGlvbnMgPSBULnByb3RvdHlwZS5NeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIG50KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfY2l0ZXJhdGlvbnMgPSBULnByb3RvdHlwZS50QiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBvdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAiY2l0ZXJhdGlvbnMiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLk15LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS50QgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9jb2xsaXNpb25zID0gVC5wcm90b3R5cGUuTnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBwdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2NvbGxpc2lvbnMgPSBULnByb3RvdHlwZS51QiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBxdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAiY29sbGlzaW9ucyIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuTnksCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLnVCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJ0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBOb2RlKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBOb2RlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIE5vZGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTm9kZTsKICAgICAgICBOb2RlLnByb3RvdHlwZS4keCA9IE5vZGU7CiAgICAgICAgTm9kZS5heSA9IHt9OwogICAgICAgIGIuTm9kZSA9IE5vZGU7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuZ2V0X21feCA9IE5vZGUucHJvdG90eXBlLmtCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhzdCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE5vZGUucHJvdG90eXBlLnNldF9tX3ggPSBOb2RlLnByb3RvdHlwZS5SRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0dChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAibV94IiwgewogICAgICAgICAgZ2V0OiBOb2RlLnByb3RvdHlwZS5rQiwKICAgICAgICAgIHNldDogTm9kZS5wcm90b3R5cGUuUkQKICAgICAgICB9KTsKICAgICAgICBOb2RlLnByb3RvdHlwZS5nZXRfbV9xID0gTm9kZS5wcm90b3R5cGUuQ0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHV0KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuc2V0X21fcSA9IE5vZGUucHJvdG90eXBlLmlEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHZ0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJtX3EiLCB7CiAgICAgICAgICBnZXQ6IE5vZGUucHJvdG90eXBlLkNBLAogICAgICAgICAgc2V0OiBOb2RlLnByb3RvdHlwZS5pRAogICAgICAgIH0pOwogICAgICAgIE5vZGUucHJvdG90eXBlLmdldF9tX3YgPSBOb2RlLnByb3RvdHlwZS5jQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsod3QodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOb2RlLnByb3RvdHlwZS5zZXRfbV92ID0gTm9kZS5wcm90b3R5cGUuSkQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeHQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgIm1fdiIsIHsKICAgICAgICAgIGdldDogTm9kZS5wcm90b3R5cGUuY0IsCiAgICAgICAgICBzZXQ6IE5vZGUucHJvdG90eXBlLkpECiAgICAgICAgfSk7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuZ2V0X21fZiA9IE5vZGUucHJvdG90eXBlLlB6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh5dCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE5vZGUucHJvdG90eXBlLnNldF9tX2YgPSBOb2RlLnByb3RvdHlwZS52QyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB6dChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAibV9mIiwgewogICAgICAgICAgZ2V0OiBOb2RlLnByb3RvdHlwZS5QeiwKICAgICAgICAgIHNldDogTm9kZS5wcm90b3R5cGUudkMKICAgICAgICB9KTsKICAgICAgICBOb2RlLnByb3RvdHlwZS5nZXRfbV9uID0gTm9kZS5wcm90b3R5cGUudEEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEF0KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuc2V0X21fbiA9IE5vZGUucHJvdG90eXBlLiRDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEJ0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJtX24iLCB7CiAgICAgICAgICBnZXQ6IE5vZGUucHJvdG90eXBlLnRBLAogICAgICAgICAgc2V0OiBOb2RlLnByb3RvdHlwZS4kQwogICAgICAgIH0pOwogICAgICAgIE5vZGUucHJvdG90eXBlLmdldF9tX2ltID0gTm9kZS5wcm90b3R5cGUuZEEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBDdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuc2V0X21faW0gPSBOb2RlLnByb3RvdHlwZS5LQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBEdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAibV9pbSIsIHsKICAgICAgICAgIGdldDogTm9kZS5wcm90b3R5cGUuZEEsCiAgICAgICAgICBzZXQ6IE5vZGUucHJvdG90eXBlLktDCiAgICAgICAgfSk7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuZ2V0X21fYXJlYSA9IE5vZGUucHJvdG90eXBlLnB6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gRXQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE5vZGUucHJvdG90eXBlLnNldF9tX2FyZWEgPSBOb2RlLnByb3RvdHlwZS5YQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBGdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAibV9hcmVhIiwgewogICAgICAgICAgZ2V0OiBOb2RlLnByb3RvdHlwZS5weiwKICAgICAgICAgIHNldDogTm9kZS5wcm90b3R5cGUuWEIKICAgICAgICB9KTsKICAgICAgICBOb2RlLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgR3QodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIE1CKCkgewogICAgICAgICAgdGhpcy5aeCA9IEh0KCk7CiAgICAgICAgICBoKE1CKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgTUIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgTUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTUI7CiAgICAgICAgTUIucHJvdG90eXBlLiR4ID0gTUI7CiAgICAgICAgTUIuYXkgPSB7fTsKICAgICAgICBiLmJ0R2hvc3RQYWlyQ2FsbGJhY2sgPSBNQjsKICAgICAgICBNQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEl0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBOQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRPdmVybGFwcGluZ1BhaXJDYWxsYmFjaywgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgTkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgTkIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTkI7CiAgICAgICAgTkIucHJvdG90eXBlLiR4ID0gTkI7CiAgICAgICAgTkIuYXkgPSB7fTsKICAgICAgICBiLmJ0T3ZlcmxhcHBpbmdQYWlyQ2FsbGJhY2sgPSBOQjsKICAgICAgICBOQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEp0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBVKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBlID8gS3QoYSwgYywgZCkgOiBMdChhLCBjLCBkLCBlKTsKICAgICAgICAgIGgoVSlbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIFUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShRQS5wcm90b3R5cGUpOwogICAgICAgIFUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVTsKICAgICAgICBVLnByb3RvdHlwZS4keCA9IFU7CiAgICAgICAgVS5heSA9IHt9OwogICAgICAgIGIuYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyID0gVTsKICAgICAgICBVLnByb3RvdHlwZS5zZXRVcEF4aXMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTXQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldFdhbGtEaXJlY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTnQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldFZlbG9jaXR5Rm9yVGltZUludGVydmFsID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBPdChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUud2FycCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUucHJlU3RlcCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBRdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUucGxheWVyU3RlcCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgUnQoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldEZhbGxTcGVlZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUuc2V0SnVtcFNwZWVkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFR0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVLnByb3RvdHlwZS5zZXRNYXhKdW1wSGVpZ2h0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFV0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVLnByb3RvdHlwZS5jYW5KdW1wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFWdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUuanVtcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgV3QodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldEdyYXZpdHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWHQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLmdldEdyYXZpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBZdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUuc2V0TWF4U2xvcGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWnQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLmdldE1heFNsb3BlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gJHQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLmdldEdob3N0T2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhhdSh0aGlzLlp4KSwgVikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldFVzZUdob3N0U3dlZXBUZXN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGJ1KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVLnByb3RvdHlwZS5vbkdyb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhY3UodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldFVwSW50ZXJwb2xhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZHUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnVwZGF0ZUFjdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZXUoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBmdSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gT0IoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0U29mdEJvZHlBcnJheSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgT0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgT0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gT0I7CiAgICAgICAgT0IucHJvdG90eXBlLiR4ID0gT0I7CiAgICAgICAgT0IuYXkgPSB7fTsKICAgICAgICBiLmJ0U29mdEJvZHlBcnJheSA9IE9COwogICAgICAgIE9CLnByb3RvdHlwZS5zaXplID0gT0IucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBndSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT0IucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKGh1KGMsIGEpLCBTKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT0IucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBpdSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gR0IoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0RmFjZUFycmF5LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBHQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBHQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBHQjsKICAgICAgICBHQi5wcm90b3R5cGUuJHggPSBHQjsKICAgICAgICBHQi5heSA9IHt9OwogICAgICAgIGIuYnRGYWNlQXJyYXkgPSBHQjsKICAgICAgICBHQi5wcm90b3R5cGUuc2l6ZSA9IEdCLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4ganUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEdCLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhrdShjLCBhKSwgUEIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGx1KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBRQihhLCBjKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBtdShhLCBjKTsKICAgICAgICAgIGgoUUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBRQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExBLnByb3RvdHlwZSk7CiAgICAgICAgUUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUUI7CiAgICAgICAgUUIucHJvdG90eXBlLiR4ID0gUUI7CiAgICAgICAgUUIuYXkgPSB7fTsKICAgICAgICBiLmJ0U3RhdGljUGxhbmVTaGFwZSA9IFFCOwogICAgICAgIFFCLnByb3RvdHlwZS5zZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbnUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFFCLnByb3RvdHlwZS5nZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKG91KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUUIucHJvdG90eXBlLmNhbGN1bGF0ZUxvY2FsSW5lcnRpYSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcHUoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFFCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcXUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEdBKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidE92ZXJsYXBwaW5nUGFpckNhY2hlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBHQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBHQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBHQTsKICAgICAgICBHQS5wcm90b3R5cGUuJHggPSBHQTsKICAgICAgICBHQS5heSA9IHt9OwogICAgICAgIGIuYnRPdmVybGFwcGluZ1BhaXJDYWNoZSA9IEdBOwogICAgICAgIEdBLnByb3RvdHlwZS5zZXRJbnRlcm5hbEdob3N0UGFpckNhbGxiYWNrID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJ1KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHQS5wcm90b3R5cGUuZ2V0TnVtT3ZlcmxhcHBpbmdQYWlycyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHN1KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHR1KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBtQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRJbmRleGVkTWVzaCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgbUIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgbUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbUI7CiAgICAgICAgbUIucHJvdG90eXBlLiR4ID0gbUI7CiAgICAgICAgbUIuYXkgPSB7fTsKICAgICAgICBiLmJ0SW5kZXhlZE1lc2ggPSBtQjsKICAgICAgICBtQi5wcm90b3R5cGUuZ2V0X21fbnVtVHJpYW5nbGVzID0gbUIucHJvdG90eXBlLnlBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gdXUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIG1CLnByb3RvdHlwZS5zZXRfbV9udW1UcmlhbmdsZXMgPSBtQi5wcm90b3R5cGUuZUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdnUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtQi5wcm90b3R5cGUsICJtX251bVRyaWFuZ2xlcyIsIHsKICAgICAgICAgIGdldDogbUIucHJvdG90eXBlLnlBLAogICAgICAgICAgc2V0OiBtQi5wcm90b3R5cGUuZUQKICAgICAgICB9KTsKICAgICAgICBtQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHd1KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBXKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHh1KGEsIGMsIGQsIGUsIGYpOwogICAgICAgICAgaChXKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgVy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHgucHJvdG90eXBlKTsKICAgICAgICBXLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFc7CiAgICAgICAgVy5wcm90b3R5cGUuJHggPSBXOwogICAgICAgIFcuYXkgPSB7fTsKICAgICAgICBiLmJ0U29mdFJpZ2lkRHluYW1pY3NXb3JsZCA9IFc7CiAgICAgICAgVy5wcm90b3R5cGUuYWRkU29mdEJvZHkgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB5dShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUucmVtb3ZlU29mdEJvZHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgenUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnJlbW92ZUNvbGxpc2lvbk9iamVjdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBBdShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZ2V0V29ybGRJbmZvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhCdSh0aGlzLlp4KSwgSikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmdldFNvZnRCb2R5QXJyYXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEN1KHRoaXMuWngpLCBPQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmdldERpc3BhdGNoZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKER1KHRoaXMuWngpLCBGQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnJheVRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBFdShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZ2V0UGFpckNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhGdSh0aGlzLlp4KSwgR0EpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5nZXREaXNwYXRjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEd1KHRoaXMuWngpLCBsKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuYWRkQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gSHUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBJdShlLCBhLCBjKSA6IEp1KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5nZXRCcm9hZHBoYXNlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhLdSh0aGlzLlp4KSwgSEEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5jb252ZXhTd2VlcFRlc3QgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICB2YXIgbSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIEx1KG0sIGEsIGMsIGQsIGUsIGYpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5jb250YWN0UGFpclRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBNdShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuY29udGFjdFRlc3QgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIE51KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS51cGRhdGVTaW5nbGVBYWJiID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE91KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5zZXREZWJ1Z0RyYXdlciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQdShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZ2V0RGVidWdEcmF3ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFF1KHRoaXMuWngpLCBJQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmRlYnVnRHJhd1dvcmxkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBSdSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZGVidWdEcmF3T2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgU3UoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnNldEdyYXZpdHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVHUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmdldEdyYXZpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFV1KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuYWRkUmlnaWRCb2R5ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gVnUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBfZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9hZGRSaWdpZEJvZHlfMihlLCBhLCBjKSA6IFd1KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5yZW1vdmVSaWdpZEJvZHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWHUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmFkZENvbnN0cmFpbnQgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYyA/IFl1KGQsIGEpIDogWnUoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJHUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnN0ZXBTaW11bGF0aW9uID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gYyA/IGF2KGUsIGEpIDogdm9pZCAwID09PSBkID8gYnYoZSwgYSwgYykgOiBjdihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuc2V0Q29udGFjdEFkZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZHYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnNldENvbnRhY3RQcm9jZXNzZWRDYWxsYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBldihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuc2V0Q29udGFjdERlc3Ryb3llZENhbGxiYWNrID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGZ2KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5hZGRBY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ3YoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnJlbW92ZUFjdGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBodihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZ2V0U29sdmVySW5mbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoaXYodGhpcy5aeCksIHYpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5zZXRJbnRlcm5hbFRpY2tDYWxsYmFjayA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYyA/IGp2KGUsIGEpIDogdm9pZCAwID09PSBkID8ga3YoZSwgYSwgYykgOiBsdihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIG12KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBSQihhLCBjLCBkLCBlKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgdGhpcy5aeCA9IG52KGEsIGMsIGQsIGUpOwogICAgICAgICAgaChSQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIFJCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoS0EucHJvdG90eXBlKTsKICAgICAgICBSQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBSQjsKICAgICAgICBSQi5wcm90b3R5cGUuJHggPSBSQjsKICAgICAgICBSQi5heSA9IHt9OwogICAgICAgIGIuYnRGaXhlZENvbnN0cmFpbnQgPSBSQjsKICAgICAgICBSQi5wcm90b3R5cGUuZW5hYmxlRmVlZGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgb3YoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFJCLnByb3RvdHlwZS5nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBwdih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUkIucHJvdG90eXBlLnNldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBxdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUkIucHJvdG90eXBlLmdldFBhcmFtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICByZXR1cm4gcnYoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFJCLnByb3RvdHlwZS5zZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHN2KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHR2KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiByKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gYSA/IHV2KCkgOiB2b2lkIDAgPT09IGMgPyBfZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX2J0VHJhbnNmb3JtXzEoYSkgOiB2dihhLCBjKTsKICAgICAgICAgIGgocilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIHIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSByOwogICAgICAgIHIucHJvdG90eXBlLiR4ID0gcjsKICAgICAgICByLmF5ID0ge307CiAgICAgICAgYi5idFRyYW5zZm9ybSA9IHI7CiAgICAgICAgci5wcm90b3R5cGUuc2V0SWRlbnRpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHd2KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICByLnByb3RvdHlwZS5zZXRPcmlnaW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeHYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHIucHJvdG90eXBlLnNldFJvdGF0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHl2KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICByLnByb3RvdHlwZS5nZXRPcmlnaW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHp2KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUuZ2V0Um90YXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEF2KHRoaXMuWngpLCBYKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUuZ2V0QmFzaXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEJ2KHRoaXMuWngpLCBhQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHIucHJvdG90eXBlLnNldEZyb21PcGVuR0xNYXRyaXggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIGEgJiYgKGEgPSBEQShhKSk7CiAgICAgICAgICBDdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUuaW52ZXJzZSA9IHIucHJvdG90eXBlLmludmVyc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKER2KHRoaXMuWngpLCByKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUub3BfbXVsID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKEV2KGMsIGEpLCByKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEZ2KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBZKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IEd2KGEsIGMpOwogICAgICAgICAgaChZKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgWS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHoucHJvdG90eXBlKTsKICAgICAgICBZLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFk7CiAgICAgICAgWS5wcm90b3R5cGUuJHggPSBZOwogICAgICAgIFkuYXkgPSB7fTsKICAgICAgICBiLkNsb3Nlc3RSYXlSZXN1bHRDYWxsYmFjayA9IFk7CiAgICAgICAgWS5wcm90b3R5cGUuaGFzSGl0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFIdih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuZ2V0X21fcmF5RnJvbVdvcmxkID0gWS5wcm90b3R5cGUueHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEl2KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuc2V0X21fcmF5RnJvbVdvcmxkID0gWS5wcm90b3R5cGUuRXkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSnYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwgIm1fcmF5RnJvbVdvcmxkIiwgewogICAgICAgICAgZ2V0OiBZLnByb3RvdHlwZS54eSwKICAgICAgICAgIHNldDogWS5wcm90b3R5cGUuRXkKICAgICAgICB9KTsKICAgICAgICBZLnByb3RvdHlwZS5nZXRfbV9yYXlUb1dvcmxkID0gWS5wcm90b3R5cGUueXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEt2KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuc2V0X21fcmF5VG9Xb3JsZCA9IFkucHJvdG90eXBlLkZ5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEx2KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWS5wcm90b3R5cGUsICJtX3JheVRvV29ybGQiLCB7CiAgICAgICAgICBnZXQ6IFkucHJvdG90eXBlLnl5LAogICAgICAgICAgc2V0OiBZLnByb3RvdHlwZS5GeQogICAgICAgIH0pOwogICAgICAgIFkucHJvdG90eXBlLmdldF9tX2hpdE5vcm1hbFdvcmxkID0gWS5wcm90b3R5cGUuankgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKE12KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuc2V0X21faGl0Tm9ybWFsV29ybGQgPSBZLnByb3RvdHlwZS5xeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBOdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCAibV9oaXROb3JtYWxXb3JsZCIsIHsKICAgICAgICAgIGdldDogWS5wcm90b3R5cGUuanksCiAgICAgICAgICBzZXQ6IFkucHJvdG90eXBlLnF5CiAgICAgICAgfSk7CiAgICAgICAgWS5wcm90b3R5cGUuZ2V0X21faGl0UG9pbnRXb3JsZCA9IFkucHJvdG90eXBlLmt5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhPdih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFkucHJvdG90eXBlLnNldF9tX2hpdFBvaW50V29ybGQgPSBZLnByb3RvdHlwZS5yeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCAibV9oaXRQb2ludFdvcmxkIiwgewogICAgICAgICAgZ2V0OiBZLnByb3RvdHlwZS5reSwKICAgICAgICAgIHNldDogWS5wcm90b3R5cGUucnkKICAgICAgICB9KTsKICAgICAgICBZLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cCA9IFkucHJvdG90eXBlLmJ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUXYodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFkucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwID0gWS5wcm90b3R5cGUuZHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUnYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uRmlsdGVyR3JvdXAiLCB7CiAgICAgICAgICBnZXQ6IFkucHJvdG90eXBlLmJ5LAogICAgICAgICAgc2V0OiBZLnByb3RvdHlwZS5keQogICAgICAgIH0pOwogICAgICAgIFkucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbkZpbHRlck1hc2sgPSBZLnByb3RvdHlwZS5jeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFN2KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBZLnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrID0gWS5wcm90b3R5cGUuZXkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVHYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uRmlsdGVyTWFzayIsIHsKICAgICAgICAgIGdldDogWS5wcm90b3R5cGUuY3ksCiAgICAgICAgICBzZXQ6IFkucHJvdG90eXBlLmV5CiAgICAgICAgfSk7CiAgICAgICAgWS5wcm90b3R5cGUuZ2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uID0gWS5wcm90b3R5cGUuZnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBVdih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuc2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uID0gWS5wcm90b3R5cGUuZ3kgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVnYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwgIm1fY2xvc2VzdEhpdEZyYWN0aW9uIiwgewogICAgICAgICAgZ2V0OiBZLnByb3RvdHlwZS5meSwKICAgICAgICAgIHNldDogWS5wcm90b3R5cGUuZ3kKICAgICAgICB9KTsKICAgICAgICBZLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25PYmplY3QgPSBZLnByb3RvdHlwZS5oeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoV3YodGhpcy5aeCksIHEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBZLnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25PYmplY3QgPSBZLnByb3RvdHlwZS5veSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBYdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCAibV9jb2xsaXNpb25PYmplY3QiLCB7CiAgICAgICAgICBnZXQ6IFkucHJvdG90eXBlLmh5LAogICAgICAgICAgc2V0OiBZLnByb3RvdHlwZS5veQogICAgICAgIH0pOwogICAgICAgIFkucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBZdih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gU0IoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGEgPyBadigpIDogJHYoYSk7CiAgICAgICAgICBoKFNCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgU0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShOQS5wcm90b3R5cGUpOwogICAgICAgIFNCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNCOwogICAgICAgIFNCLnByb3RvdHlwZS4keCA9IFNCOwogICAgICAgIFNCLmF5ID0ge307CiAgICAgICAgYi5idFNvZnRCb2R5UmlnaWRCb2R5Q29sbGlzaW9uQ29uZmlndXJhdGlvbiA9IFNCOwogICAgICAgIFNCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgYXcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIFRCKCkgewogICAgICAgICAgdGhpcy5aeCA9IGJ3KCk7CiAgICAgICAgICBoKFRCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgVEIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShaQS5wcm90b3R5cGUpOwogICAgICAgIFRCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRCOwogICAgICAgIFRCLnByb3RvdHlwZS4keCA9IFRCOwogICAgICAgIFRCLmF5ID0ge307CiAgICAgICAgYi5Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFjayA9IFRCOwogICAgICAgIFRCLnByb3RvdHlwZS5hZGRTaW5nbGVSZXN1bHQgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmLCBtLCBDKSB7CiAgICAgICAgICB2YXIgUCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIG0gJiYgIm9iamVjdCIgPT09IHR5cGVvZiBtICYmIChtID0gbS5aeCk7CiAgICAgICAgICBDICYmICJvYmplY3QiID09PSB0eXBlb2YgQyAmJiAoQyA9IEMuWngpOwogICAgICAgICAgcmV0dXJuIGN3KFAsIGEsIGMsIGQsIGUsIGYsIG0sIEMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBUQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGR3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBVQihhLCBjLCBkKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBkID8gZXcoYSwgYykgOiBmdyhhLCBjLCBkKTsKICAgICAgICAgIGgoVUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBVQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9BLnByb3RvdHlwZSk7CiAgICAgICAgVUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVUI7CiAgICAgICAgVUIucHJvdG90eXBlLiR4ID0gVUI7CiAgICAgICAgVUIuYXkgPSB7fTsKICAgICAgICBiLmJ0QnZoVHJpYW5nbGVNZXNoU2hhcGUgPSBVQjsKICAgICAgICBVQi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGd3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVQi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhodyh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFVCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGl3KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGp3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBmQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb25zdENvbGxpc2lvbk9iamVjdEFycmF5LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBmQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBmQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBmQjsKICAgICAgICBmQi5wcm90b3R5cGUuJHggPSBmQjsKICAgICAgICBmQi5heSA9IHt9OwogICAgICAgIGIuYnRDb25zdENvbGxpc2lvbk9iamVjdEFycmF5ID0gZkI7CiAgICAgICAgZkIucHJvdG90eXBlLnNpemUgPSBmQi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGt3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmQi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsobHcoYywgYSksIHEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIG13KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBWQihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGUgPyBudyhhLCBjLCBkKSA6IHZvaWQgMCA9PT0gZiA/IF9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF80KGEsIGMsIGQsIGUpIDogb3coYSwgYywgZCwgZSwgZik7CiAgICAgICAgICBoKFZCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgVkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShLQS5wcm90b3R5cGUpOwogICAgICAgIFZCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFZCOwogICAgICAgIFZCLnByb3RvdHlwZS4keCA9IFZCOwogICAgICAgIFZCLmF5ID0ge307CiAgICAgICAgYi5idFNsaWRlckNvbnN0cmFpbnQgPSBWQjsKICAgICAgICBWQi5wcm90b3R5cGUuc2V0TG93ZXJMaW5MaW1pdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBwdyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkIucHJvdG90eXBlLnNldFVwcGVyTGluTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcXcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFZCLnByb3RvdHlwZS5zZXRMb3dlckFuZ0xpbWl0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJ3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWQi5wcm90b3R5cGUuc2V0VXBwZXJBbmdMaW1pdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBzdyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkIucHJvdG90eXBlLmVuYWJsZUZlZWRiYWNrID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHR3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWQi5wcm90b3R5cGUuZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gdXcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFZCLnByb3RvdHlwZS5zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdncoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFZCLnByb3RvdHlwZS5nZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuIHd3KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWQi5wcm90b3R5cGUuc2V0UGFyYW0gPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB4dyhlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB5dyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gVigpIHsKICAgICAgICAgIHRoaXMuWnggPSB6dygpOwogICAgICAgICAgaChWKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgVi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHcucHJvdG90eXBlKTsKICAgICAgICBWLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFY7CiAgICAgICAgVi5wcm90b3R5cGUuJHggPSBWOwogICAgICAgIFYuYXkgPSB7fTsKICAgICAgICBiLmJ0UGFpckNhY2hpbmdHaG9zdE9iamVjdCA9IFY7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0QW5pc290cm9waWNGcmljdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgQXcoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmdldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhCdyh0aGlzLlp4KSwgbikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLnNldENvbnRhY3RQcm9jZXNzaW5nVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEN3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5zZXRBY3RpdmF0aW9uU3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRHcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmZvcmNlQWN0aXZhdGlvblN0YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEV3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5hY3RpdmF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGEgPyBGdyhjKSA6IEd3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5pc0FjdGl2ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhSHcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmlzS2luZW1hdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFJdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuaXNTdGF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUp3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFLdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuZ2V0UmVzdGl0dXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuZ2V0RnJpY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBNdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuZ2V0Um9sbGluZ0ZyaWN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gTncodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLnNldFJlc3RpdHV0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE93KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5zZXRGcmljdGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQdyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0Um9sbGluZ0ZyaWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFF3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5nZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoUncodGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5nZXRDb2xsaXNpb25GbGFncyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFN3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5zZXRDb2xsaXNpb25GbGFncyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBUdyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVXcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLnNldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFZ3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5zZXRDY2RNb3Rpb25UaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV3coYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLnNldENjZFN3ZXB0U3BoZXJlUmFkaXVzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFh3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5nZXRVc2VySW5kZXggPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBZdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0VXNlckluZGV4ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFp3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5nZXRVc2VyUG9pbnRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoJHcodGhpcy5aeCksIEpBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0VXNlclBvaW50ZXIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYXgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmdldEJyb2FkcGhhc2VIYW5kbGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGJ4KHRoaXMuWngpLCB0KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gY3godGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmdldE92ZXJsYXBwaW5nT2JqZWN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKGR4KGMsIGEpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGV4KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBFKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidE1hbmlmb2xkUG9pbnQsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIEUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgRS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBFOwogICAgICAgIEUucHJvdG90eXBlLiR4ID0gRTsKICAgICAgICBFLmF5ID0ge307CiAgICAgICAgYi5idE1hbmlmb2xkUG9pbnQgPSBFOwogICAgICAgIEUucHJvdG90eXBlLmdldFBvc2l0aW9uV29ybGRPbkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGZ4KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuZ2V0UG9zaXRpb25Xb3JsZE9uQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZ3godGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFLnByb3RvdHlwZS5nZXRBcHBsaWVkSW1wdWxzZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGh4KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFLnByb3RvdHlwZS5nZXREaXN0YW5jZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGl4KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFLnByb3RvdHlwZS5nZXRfbV9sb2NhbFBvaW50QSA9IEUucHJvdG90eXBlLm9BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhqeCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEUucHJvdG90eXBlLnNldF9tX2xvY2FsUG9pbnRBID0gRS5wcm90b3R5cGUuVkMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAga3goYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFLnByb3RvdHlwZSwgIm1fbG9jYWxQb2ludEEiLCB7CiAgICAgICAgICBnZXQ6IEUucHJvdG90eXBlLm9BLAogICAgICAgICAgc2V0OiBFLnByb3RvdHlwZS5WQwogICAgICAgIH0pOwogICAgICAgIEUucHJvdG90eXBlLmdldF9tX2xvY2FsUG9pbnRCID0gRS5wcm90b3R5cGUucEEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGx4KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuc2V0X21fbG9jYWxQb2ludEIgPSBFLnByb3RvdHlwZS5XQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBteChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEUucHJvdG90eXBlLCAibV9sb2NhbFBvaW50QiIsIHsKICAgICAgICAgIGdldDogRS5wcm90b3R5cGUucEEsCiAgICAgICAgICBzZXQ6IEUucHJvdG90eXBlLldDCiAgICAgICAgfSk7CiAgICAgICAgRS5wcm90b3R5cGUuZ2V0X21fcG9zaXRpb25Xb3JsZE9uQiA9IEUucHJvdG90eXBlLkJBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhueCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEUucHJvdG90eXBlLnNldF9tX3Bvc2l0aW9uV29ybGRPbkIgPSBFLnByb3RvdHlwZS5oRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBveChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEUucHJvdG90eXBlLCAibV9wb3NpdGlvbldvcmxkT25CIiwgewogICAgICAgICAgZ2V0OiBFLnByb3RvdHlwZS5CQSwKICAgICAgICAgIHNldDogRS5wcm90b3R5cGUuaEQKICAgICAgICB9KTsKICAgICAgICBFLnByb3RvdHlwZS5nZXRfbV9wb3NpdGlvbldvcmxkT25BID0gRS5wcm90b3R5cGUuQUEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHB4KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuc2V0X21fcG9zaXRpb25Xb3JsZE9uQSA9IEUucHJvdG90eXBlLmdEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHF4KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRS5wcm90b3R5cGUsICJtX3Bvc2l0aW9uV29ybGRPbkEiLCB7CiAgICAgICAgICBnZXQ6IEUucHJvdG90eXBlLkFBLAogICAgICAgICAgc2V0OiBFLnByb3RvdHlwZS5nRAogICAgICAgIH0pOwogICAgICAgIEUucHJvdG90eXBlLmdldF9tX25vcm1hbFdvcmxkT25CID0gRS5wcm90b3R5cGUud0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHJ4KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuc2V0X21fbm9ybWFsV29ybGRPbkIgPSBFLnByb3RvdHlwZS5jRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBzeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEUucHJvdG90eXBlLCAibV9ub3JtYWxXb3JsZE9uQiIsIHsKICAgICAgICAgIGdldDogRS5wcm90b3R5cGUud0EsCiAgICAgICAgICBzZXQ6IEUucHJvdG90eXBlLmNECiAgICAgICAgfSk7CiAgICAgICAgRS5wcm90b3R5cGUuZ2V0X21fdXNlclBlcnNpc3RlbnREYXRhID0gRS5wcm90b3R5cGUuYkIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB0eCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuc2V0X21fdXNlclBlcnNpc3RlbnREYXRhID0gRS5wcm90b3R5cGUuSUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdXgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFLnByb3RvdHlwZSwgIm1fdXNlclBlcnNpc3RlbnREYXRhIiwgewogICAgICAgICAgZ2V0OiBFLnByb3RvdHlwZS5iQiwKICAgICAgICAgIHNldDogRS5wcm90b3R5cGUuSUQKICAgICAgICB9KTsKICAgICAgICBFLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgdngodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIFdCKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBkID8gd3goYSwgYykgOiB2b2lkIDAgPT09IGUgPyBfZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2J0UG9pbnQyUG9pbnRDb25zdHJhaW50XzMoYSwgYywgZCkgOiB4eChhLCBjLCBkLCBlKTsKICAgICAgICAgIGgoV0IpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBXQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEtBLnByb3RvdHlwZSk7CiAgICAgICAgV0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gV0I7CiAgICAgICAgV0IucHJvdG90eXBlLiR4ID0gV0I7CiAgICAgICAgV0IuYXkgPSB7fTsKICAgICAgICBiLmJ0UG9pbnQyUG9pbnRDb25zdHJhaW50ID0gV0I7CiAgICAgICAgV0IucHJvdG90eXBlLnNldFBpdm90QSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB5eChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0IucHJvdG90eXBlLnNldFBpdm90QiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB6eChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0IucHJvdG90eXBlLmdldFBpdm90SW5BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhBeCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdCLnByb3RvdHlwZS5nZXRQaXZvdEluQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQngodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQi5wcm90b3R5cGUuZW5hYmxlRmVlZGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQ3goYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdCLnByb3RvdHlwZS5nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBEeCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0IucHJvdG90eXBlLnNldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBFeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0IucHJvdG90eXBlLmdldFBhcmFtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICByZXR1cm4gRngoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdCLnByb3RvdHlwZS5zZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIEd4KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQi5wcm90b3R5cGUuZ2V0X21fc2V0dGluZyA9IFdCLnByb3RvdHlwZS5JQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoSHgodGhpcy5aeCksIEgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQi5wcm90b3R5cGUuc2V0X21fc2V0dGluZyA9IFdCLnByb3RvdHlwZS5vRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBJeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdCLnByb3RvdHlwZSwgIm1fc2V0dGluZyIsIHsKICAgICAgICAgIGdldDogV0IucHJvdG90eXBlLklBLAogICAgICAgICAgc2V0OiBXQi5wcm90b3R5cGUub0QKICAgICAgICB9KTsKICAgICAgICBXQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEp4KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBYQigpIHsKICAgICAgICAgIHRoaXMuWnggPSBLeCgpOwogICAgICAgICAgaChYQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIFhCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFhCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFhCOwogICAgICAgIFhCLnByb3RvdHlwZS4keCA9IFhCOwogICAgICAgIFhCLmF5ID0ge307CiAgICAgICAgYi5idFNvZnRCb2R5SGVscGVycyA9IFhCOwogICAgICAgIFhCLnByb3RvdHlwZS5DcmVhdGVSb3BlID0gZnVuY3Rpb24oYSwgYywgZCwgZSwgZikgewogICAgICAgICAgdmFyIG0gPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICByZXR1cm4gayhMeChtLCBhLCBjLCBkLCBlLCBmKSwgUykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFhCLnByb3RvdHlwZS5DcmVhdGVQYXRjaCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYsIG0sIEMsIFAsIGlhKSB7CiAgICAgICAgICB2YXIgbmIgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICBtICYmICJvYmplY3QiID09PSB0eXBlb2YgbSAmJiAobSA9IG0uWngpOwogICAgICAgICAgQyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIEMgJiYgKEMgPSBDLlp4KTsKICAgICAgICAgIFAgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBQICYmIChQID0gUC5aeCk7CiAgICAgICAgICBpYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGlhICYmIChpYSA9IGlhLlp4KTsKICAgICAgICAgIHJldHVybiBrKE14KG5iLCBhLCBjLCBkLCBlLCBmLCBtLCBDLCBQLCBpYSksIFMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYQi5wcm90b3R5cGUuQ3JlYXRlUGF0Y2hVViA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYsIG0sIEMsIFAsIGlhLCBuYikgewogICAgICAgICAgdmFyIFdiID0gdGhpcy5aeDsKICAgICAgICAgIHpBKCk7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIG0gJiYgIm9iamVjdCIgPT09IHR5cGVvZiBtICYmIChtID0gbS5aeCk7CiAgICAgICAgICBDICYmICJvYmplY3QiID09PSB0eXBlb2YgQyAmJiAoQyA9IEMuWngpOwogICAgICAgICAgUCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIFAgJiYgKFAgPSBQLlp4KTsKICAgICAgICAgIGlhICYmICJvYmplY3QiID09PSB0eXBlb2YgaWEgJiYgKGlhID0gaWEuWngpOwogICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIG5iICYmIChuYiA9IERBKG5iKSk7CiAgICAgICAgICByZXR1cm4gayhOeChXYiwgYSwgYywgZCwgZSwgZiwgbSwgQywgUCwgaWEsIG5iKSwgUykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFhCLnByb3RvdHlwZS5DcmVhdGVFbGxpcHNvaWQgPSBmdW5jdGlvbihhLCBjLCBkLCBlKSB7CiAgICAgICAgICB2YXIgZiA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgcmV0dXJuIGsoT3goZiwgYSwgYywgZCwgZSksIFMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYQi5wcm90b3R5cGUuQ3JlYXRlRnJvbVRyaU1lc2ggPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICB2YXIgbSA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBjICYmIChjID0gREEoYykpOwogICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCkgewogICAgICAgICAgICB2YXIgQyA9IEFBKGQsIEJhKTsKICAgICAgICAgICAgQkEoZCwgQmEsIEMpOwogICAgICAgICAgICBkID0gQwogICAgICAgICAgfQogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICByZXR1cm4gayhQeChtLCBhLCBjLCBkLCBlLCBmKSwgUykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFhCLnByb3RvdHlwZS5DcmVhdGVGcm9tQ29udmV4SHVsbCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIHZhciBmID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICByZXR1cm4gayhReChmLCBhLCBjLCBkLCBlKSwgUykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFhCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgUngodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0QnJvYWRwaGFzZVByb3h5LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdDsKICAgICAgICB0LnByb3RvdHlwZS4keCA9IHQ7CiAgICAgICAgdC5heSA9IHt9OwogICAgICAgIGIuYnRCcm9hZHBoYXNlUHJveHkgPSB0OwogICAgICAgIHQucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwID0gdC5wcm90b3R5cGUuYnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBTeCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdC5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXAgPSB0LnByb3RvdHlwZS5keSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBUeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCAibV9jb2xsaXNpb25GaWx0ZXJHcm91cCIsIHsKICAgICAgICAgIGdldDogdC5wcm90b3R5cGUuYnksCiAgICAgICAgICBzZXQ6IHQucHJvdG90eXBlLmR5CiAgICAgICAgfSk7CiAgICAgICAgdC5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFzayA9IHQucHJvdG90eXBlLmN5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVXgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHQucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbkZpbHRlck1hc2sgPSB0LnByb3RvdHlwZS5leSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBWeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCAibV9jb2xsaXNpb25GaWx0ZXJNYXNrIiwgewogICAgICAgICAgZ2V0OiB0LnByb3RvdHlwZS5jeSwKICAgICAgICAgIHNldDogdC5wcm90b3R5cGUuZXkKICAgICAgICB9KTsKICAgICAgICB0LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgV3godGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEtCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSB0Tm9kZUFycmF5LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBLQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBLQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBLQjsKICAgICAgICBLQi5wcm90b3R5cGUuJHggPSBLQjsKICAgICAgICBLQi5heSA9IHt9OwogICAgICAgIGIudE5vZGVBcnJheSA9IEtCOwogICAgICAgIEtCLnByb3RvdHlwZS5zaXplID0gS0IucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBYeCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgS0IucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKFl4KGMsIGEpLCBOb2RlKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgS0IucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBaeCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gWUIoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSAkeChhKTsKICAgICAgICAgIGgoWUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBZQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKTsKICAgICAgICBZQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBZQjsKICAgICAgICBZQi5wcm90b3R5cGUuJHggPSBZQjsKICAgICAgICBZQi5heSA9IHt9OwogICAgICAgIGIuYnRCb3hTaGFwZSA9IFlCOwogICAgICAgIFlCLnByb3RvdHlwZS5zZXRNYXJnaW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYXkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFlCLnByb3RvdHlwZS5nZXRNYXJnaW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBieSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWUIucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjeShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWUIucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZHkodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBZQi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBleShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWUIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBmeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gUEIoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0RmFjZSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgUEIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgUEIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUEI7CiAgICAgICAgUEIucHJvdG90eXBlLiR4ID0gUEI7CiAgICAgICAgUEIuYXkgPSB7fTsKICAgICAgICBiLmJ0RmFjZSA9IFBCOwogICAgICAgIFBCLnByb3RvdHlwZS5nZXRfbV9pbmRpY2VzID0gUEIucHJvdG90eXBlLmZBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhneSh0aGlzLlp4KSwgTEIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBQQi5wcm90b3R5cGUuc2V0X21faW5kaWNlcyA9IFBCLnByb3RvdHlwZS5NQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBoeShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBCLnByb3RvdHlwZSwgIm1faW5kaWNlcyIsIHsKICAgICAgICAgIGdldDogUEIucHJvdG90eXBlLmZBLAogICAgICAgICAgc2V0OiBQQi5wcm90b3R5cGUuTUMKICAgICAgICB9KTsKICAgICAgICBQQi5wcm90b3R5cGUuZ2V0X21fcGxhbmUgPSBQQi5wcm90b3R5cGUuekEgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGl5KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBQQi5wcm90b3R5cGUuc2V0X21fcGxhbmUgPSBQQi5wcm90b3R5cGUuZkQgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBqeShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBCLnByb3RvdHlwZSwgIm1fcGxhbmUiLCB7CiAgICAgICAgICBnZXQ6IFBCLnByb3RvdHlwZS56QSwKICAgICAgICAgIHNldDogUEIucHJvdG90eXBlLmZECiAgICAgICAgfSk7CiAgICAgICAgUEIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBreSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gWkIoKSB7CiAgICAgICAgICB0aGlzLlp4ID0gbHkoKTsKICAgICAgICAgIGgoWkIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBaQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElBLnByb3RvdHlwZSk7CiAgICAgICAgWkIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gWkI7CiAgICAgICAgWkIucHJvdG90eXBlLiR4ID0gWkI7CiAgICAgICAgWkIuYXkgPSB7fTsKICAgICAgICBiLkRlYnVnRHJhd2VyID0gWkI7CiAgICAgICAgWkIucHJvdG90eXBlLmRyYXdMaW5lID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgbXkoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFpCLnByb3RvdHlwZS5kcmF3Q29udGFjdFBvaW50ID0gZnVuY3Rpb24oYSwgYywgZCwgZSwgZikgewogICAgICAgICAgdmFyIG0gPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICBueShtLCBhLCBjLCBkLCBlLCBmKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWkIucHJvdG90eXBlLnJlcG9ydEVycm9yV2FybmluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIHpBKCk7CiAgICAgICAgICBhID0gYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgPyBhLlp4IDogQ0EoYSk7CiAgICAgICAgICBveShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWkIucHJvdG90eXBlLmRyYXczZFRleHQgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgPSBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyA/IGMuWnggOiBDQShjKTsKICAgICAgICAgIHB5KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBaQi5wcm90b3R5cGUuc2V0RGVidWdNb2RlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHF5KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBaQi5wcm90b3R5cGUuZ2V0RGVidWdNb2RlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gcnkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFpCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgc3kodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uICRCKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHR5KGEsIGMpOwogICAgICAgICAgaCgkQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgICRCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTUEucHJvdG90eXBlKTsKICAgICAgICAkQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkQjsKICAgICAgICAkQi5wcm90b3R5cGUuJHggPSAkQjsKICAgICAgICAkQi5heSA9IHt9OwogICAgICAgIGIuYnRDYXBzdWxlU2hhcGVYID0gJEI7CiAgICAgICAgJEIucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB1eShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHZ5KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICAkQi5wcm90b3R5cGUuZ2V0VXBBeGlzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gd3kodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgICRCLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB4eSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLmdldEhhbGZIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB5eSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB6eShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQXkodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICAkQi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBCeShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBDeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gWChhLCBjLCBkLCBlKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgdGhpcy5aeCA9IER5KGEsIGMsIGQsIGUpOwogICAgICAgICAgaChYKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgWC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNBLnByb3RvdHlwZSk7CiAgICAgICAgWC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBYOwogICAgICAgIFgucHJvdG90eXBlLiR4ID0gWDsKICAgICAgICBYLmF5ID0ge307CiAgICAgICAgYi5idFF1YXRlcm5pb24gPSBYOwogICAgICAgIFgucHJvdG90eXBlLnNldFZhbHVlID0gZnVuY3Rpb24oYSwgYywgZCwgZSkgewogICAgICAgICAgdmFyIGYgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIEV5KGYsIGEsIGMsIGQsIGUpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRFdWxlclpZWCA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIEZ5KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRSb3RhdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgR3koZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFgucHJvdG90eXBlLm5vcm1hbGl6ZSA9IFgucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgSHkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFgucHJvdG90eXBlLmxlbmd0aDIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBJeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUubGVuZ3RoID0gWC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSnkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFgucHJvdG90eXBlLmRvdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gS3koYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFgucHJvdG90eXBlLm5vcm1hbGl6ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEx5KHRoaXMuWngpLCBYKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUuZ2V0QXhpcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTXkodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5pbnZlcnNlID0gWC5wcm90b3R5cGUuaW52ZXJzZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTnkodGhpcy5aeCksIFgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5nZXRBbmdsZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE95KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5nZXRBbmdsZVNob3J0ZXN0UGF0aCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFB5KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5hbmdsZSA9IFgucHJvdG90eXBlLmFuZ2xlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBReShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUuYW5nbGVTaG9ydGVzdFBhdGggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIFJ5KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5vcF9hZGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoU3koYywgYSksIFgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5vcF9zdWIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoVHkoYywgYSksIFgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5vcF9tdWwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoVXkoYywgYSksIFgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5vcF9tdWxxID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKFZ5KGMsIGEpLCBYKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUub3BfZGl2ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKFd5KGMsIGEpLCBYKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUueCA9IFgucHJvdG90eXBlLnggPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBYeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUueSA9IFgucHJvdG90eXBlLnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBZeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUueiA9IFgucHJvdG90eXBlLnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBaeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUudyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICR5KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRYID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGF6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGJ6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGN6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRXID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGR6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZXoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGFDKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IGZ6KGEsIGMpOwogICAgICAgICAgaChhQylbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIGFDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTUEucHJvdG90eXBlKTsKICAgICAgICBhQy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBhQzsKICAgICAgICBhQy5wcm90b3R5cGUuJHggPSBhQzsKICAgICAgICBhQy5heSA9IHt9OwogICAgICAgIGIuYnRDYXBzdWxlU2hhcGVaID0gYUM7CiAgICAgICAgYUMucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBneihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGh6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBhQy5wcm90b3R5cGUuZ2V0VXBBeGlzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gaXoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGFDLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBqeih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLmdldEhhbGZIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBreih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBseihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsobXoodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBhQy5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBueihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBveih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gdigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb250YWN0U29sdmVySW5mbywgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgdi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICB2LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHY7CiAgICAgICAgdi5wcm90b3R5cGUuJHggPSB2OwogICAgICAgIHYuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29udGFjdFNvbHZlckluZm8gPSB2OwogICAgICAgIHYucHJvdG90eXBlLmdldF9tX3NwbGl0SW1wdWxzZSA9IHYucHJvdG90eXBlLkxBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFweih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdi5wcm90b3R5cGUuc2V0X21fc3BsaXRJbXB1bHNlID0gdi5wcm90b3R5cGUuckQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcXooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LnByb3RvdHlwZSwgIm1fc3BsaXRJbXB1bHNlIiwgewogICAgICAgICAgZ2V0OiB2LnByb3RvdHlwZS5MQSwKICAgICAgICAgIHNldDogdi5wcm90b3R5cGUuckQKICAgICAgICB9KTsKICAgICAgICB2LnByb3RvdHlwZS5nZXRfbV9zcGxpdEltcHVsc2VQZW5ldHJhdGlvblRocmVzaG9sZCA9IHYucHJvdG90eXBlLk1BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gcnoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHYucHJvdG90eXBlLnNldF9tX3NwbGl0SW1wdWxzZVBlbmV0cmF0aW9uVGhyZXNob2xkID0gdi5wcm90b3R5cGUuc0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgc3ooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LnByb3RvdHlwZSwgIm1fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGQiLCB7CiAgICAgICAgICBnZXQ6IHYucHJvdG90eXBlLk1BLAogICAgICAgICAgc2V0OiB2LnByb3RvdHlwZS5zRAogICAgICAgIH0pOwogICAgICAgIHYucHJvdG90eXBlLmdldF9tX251bUl0ZXJhdGlvbnMgPSB2LnByb3RvdHlwZS54QSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHR6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB2LnByb3RvdHlwZS5zZXRfbV9udW1JdGVyYXRpb25zID0gdi5wcm90b3R5cGUuZEQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdXooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LnByb3RvdHlwZSwgIm1fbnVtSXRlcmF0aW9ucyIsIHsKICAgICAgICAgIGdldDogdi5wcm90b3R5cGUueEEsCiAgICAgICAgICBzZXQ6IHYucHJvdG90eXBlLmRECiAgICAgICAgfSk7CiAgICAgICAgdi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHZ6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBiQyhhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGUgPyB3eihhLCBjLCBkKSA6IHZvaWQgMCA9PT0gZiA/IF9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfNChhLCBjLCBkLCBlKSA6IHh6KGEsIGMsIGQsIGUsIGYpOwogICAgICAgICAgaChiQylbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIGJDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoV0EucHJvdG90eXBlKTsKICAgICAgICBiQy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBiQzsKICAgICAgICBiQy5wcm90b3R5cGUuJHggPSBiQzsKICAgICAgICBiQy5heSA9IHt9OwogICAgICAgIGIuYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnQgPSBiQzsKICAgICAgICBiQy5wcm90b3R5cGUuZW5hYmxlU3ByaW5nID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB5eihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLnNldFN0aWZmbmVzcyA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgenooZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5zZXREYW1waW5nID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBBeihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLnNldEVxdWlsaWJyaXVtUG9pbnQgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYSA/IEJ6KGQpIDogdm9pZCAwID09PSBjID8gQ3ooZCwgYSkgOiBEeihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLnNldExpbmVhckxvd2VyTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRXooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5zZXRMaW5lYXJVcHBlckxpbWl0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZ6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiQy5wcm90b3R5cGUuc2V0QW5ndWxhckxvd2VyTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgR3ooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5zZXRBbmd1bGFyVXBwZXJMaW1pdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBIeihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLmdldEZyYW1lT2Zmc2V0QSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoSXoodGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiQy5wcm90b3R5cGUuZW5hYmxlRmVlZGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSnooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBLeih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLnNldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBMeihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLmdldFBhcmFtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICByZXR1cm4gTXooZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5zZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIE56KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiQy5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIE96KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBjQyhhKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGhpcy5aeCA9IFB6KGEpOwogICAgICAgICAgaChjQylbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIGNDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpOwogICAgICAgIGNDLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNDOwogICAgICAgIGNDLnByb3RvdHlwZS4keCA9IGNDOwogICAgICAgIGNDLmF5ID0ge307CiAgICAgICAgYi5idFNwaGVyZVNoYXBlID0gY0M7CiAgICAgICAgY0MucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBReihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgY0MucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFJ6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQy5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFN6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQy5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhUeih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGNDLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIFV6KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQy5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFZ6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBaKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgdGhpcy5aeCA9IFd6KGEsIGMsIGQsIGUsIGYpOwogICAgICAgICAgaChaKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgWi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBaLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFo7CiAgICAgICAgWi5wcm90b3R5cGUuJHggPSBaOwogICAgICAgIFouYXkgPSB7fTsKICAgICAgICBiLkxvY2FsQ29udmV4UmVzdWx0ID0gWjsKICAgICAgICBaLnByb3RvdHlwZS5nZXRfbV9oaXRDb2xsaXNpb25PYmplY3QgPSBaLnByb3RvdHlwZS5YeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoWHoodGhpcy5aeCksIHEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBaLnByb3RvdHlwZS5zZXRfbV9oaXRDb2xsaXNpb25PYmplY3QgPSBaLnByb3RvdHlwZS5EQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBZeihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCAibV9oaXRDb2xsaXNpb25PYmplY3QiLCB7CiAgICAgICAgICBnZXQ6IFoucHJvdG90eXBlLlh6LAogICAgICAgICAgc2V0OiBaLnByb3RvdHlwZS5EQwogICAgICAgIH0pOwogICAgICAgIFoucHJvdG90eXBlLmdldF9tX2xvY2FsU2hhcGVJbmZvID0gWi5wcm90b3R5cGUucUEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFp6KHRoaXMuWngpLCBrQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFoucHJvdG90eXBlLnNldF9tX2xvY2FsU2hhcGVJbmZvID0gWi5wcm90b3R5cGUuWEMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJHooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLnByb3RvdHlwZSwgIm1fbG9jYWxTaGFwZUluZm8iLCB7CiAgICAgICAgICBnZXQ6IFoucHJvdG90eXBlLnFBLAogICAgICAgICAgc2V0OiBaLnByb3RvdHlwZS5YQwogICAgICAgIH0pOwogICAgICAgIFoucHJvdG90eXBlLmdldF9tX2hpdE5vcm1hbExvY2FsID0gWi5wcm90b3R5cGUuYUEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGFBKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWi5wcm90b3R5cGUuc2V0X21faGl0Tm9ybWFsTG9jYWwgPSBaLnByb3RvdHlwZS5IQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBiQShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCAibV9oaXROb3JtYWxMb2NhbCIsIHsKICAgICAgICAgIGdldDogWi5wcm90b3R5cGUuYUEsCiAgICAgICAgICBzZXQ6IFoucHJvdG90eXBlLkhDCiAgICAgICAgfSk7CiAgICAgICAgWi5wcm90b3R5cGUuZ2V0X21faGl0UG9pbnRMb2NhbCA9IFoucHJvdG90eXBlLmNBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhjQSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFoucHJvdG90eXBlLnNldF9tX2hpdFBvaW50TG9jYWwgPSBaLnByb3RvdHlwZS5KQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBkQShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCAibV9oaXRQb2ludExvY2FsIiwgewogICAgICAgICAgZ2V0OiBaLnByb3RvdHlwZS5jQSwKICAgICAgICAgIHNldDogWi5wcm90b3R5cGUuSkMKICAgICAgICB9KTsKICAgICAgICBaLnByb3RvdHlwZS5nZXRfbV9oaXRGcmFjdGlvbiA9IFoucHJvdG90eXBlLll6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gZUEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFoucHJvdG90eXBlLnNldF9tX2hpdEZyYWN0aW9uID0gWi5wcm90b3R5cGUuRUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZkEoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLnByb3RvdHlwZSwgIm1faGl0RnJhY3Rpb24iLCB7CiAgICAgICAgICBnZXQ6IFoucHJvdG90eXBlLll6LAogICAgICAgICAgc2V0OiBaLnByb3RvdHlwZS5FQwogICAgICAgIH0pOwogICAgICAgIFoucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBnQSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiBhKCkgewogICAgICAgICAgICAgIGIuQlRfQ09OU1RSQUlOVF9FUlAgPSBoQSgpOwogICAgICAgICAgICAgIGIuQlRfQ09OU1RSQUlOVF9TVE9QX0VSUCA9IGlBKCk7CiAgICAgICAgICAgICAgYi5CVF9DT05TVFJBSU5UX0NGTSA9IGpBKCk7CiAgICAgICAgICAgICAgYi5CVF9DT05TVFJBSU5UX1NUT1BfQ0ZNID0ga0EoKTsKICAgICAgICAgICAgICBiLlBIWV9GTE9BVCA9IGxBKCk7CiAgICAgICAgICAgICAgYi5QSFlfRE9VQkxFID0gbUEoKTsKICAgICAgICAgICAgICBiLlBIWV9JTlRFR0VSID0gbkEoKTsKICAgICAgICAgICAgICBiLlBIWV9TSE9SVCA9IG9BKCk7CiAgICAgICAgICAgICAgYi5QSFlfRklYRURQT0lOVDg4ID0gcEEoKTsKICAgICAgICAgICAgICBiLlBIWV9VQ0hBUiA9IHFBKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBMYSA/IGEoKSA6IEphLnVuc2hpZnQoYSkKICAgICAgICAgIH0KICAgICAgICApKCk7CiAgICAgICAgdGhpcy5BbW1vID0gYjsKCiAgICAgICAgcmV0dXJuIEFtbW8KICAgICAgfQogICAgKTsKICB9CikoKTsKaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKICBtb2R1bGUuZXhwb3J0cyA9IEFtbW87CmVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lWydhbWQnXSkKICBkZWZpbmUoW10sIGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEFtbW87CiAgfSk7CmVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykKICBleHBvcnRzWyJBbW1vIl0gPSBBbW1vOwo="; +var ammo_wasm_default2 = "AGFzbQEAAAABlgdpYAF/AGABfwF/YAJ/fwBgAn9/AX9gBH9/f38AYAN/f38AYAF/AX1gA39/fwF/YAJ/fQBgBX9/f39/AGAEf39/fwF/YAN/f30AYAZ/f39/f38AYAN/f38BfWAAAX9gBH9/f30AYAN/fX8AYAN/fX0AYAV/f39/fwF/YAZ/f39/f30AYAZ/f39/f38Bf2ACf38BfWAAAGAEf399fwBgAX0BfWALf39/f319fX1/f30AYAV/f39/fwF9YAp/f39/f39/f39/AGADf399AX9gB39/f39/f38AYAx/f39/fX19fX1/fX8AYAZ/fX1/f38AYAl/f39/f39/f38Bf2ACf30Bf2ACfX0Bf2AKf39/f39/f39/fwF9YAp/f39/f39/f39/AX9gBH99f30Bf2AGf39/fX9/AGAEf31/fwBgBH99fX0AYAd/f39/f39/AX9gCH9/f39/f39/AX1gCX9/f39/f39/fwF9YAl/f39/f39/f38AYAV/f39/fQBgBH9/fX0AYAZ/fX19fX0AYAR/f39/AX1gBn9/f31/fwF9YAV/f31/fwF9YAJ/fQF9YAJ9fQF9YAt/f39/f39/f319fQBgCn9/f399fX1/f38AYAV/f399fwBgBX9/fX9/AGAEf35+fwBgBX99f39/AGAFf319fX0AYAV/f39/fQF/YAh/f39/fX1/fwF/YAZ/fH9/f38Bf2ACfn8Bf2AEfX19fQF/YAF8AX1gAX8BfGACfH8BfGAIf39/f39/f38AYAl/f39/f39/f30AYAh/f39/f39/fQBgCn9/f39/f399f30AYAh/f39/f399fQBgCX9/f39/fX9/fwBgCH9/f39/fX1/AGAHf39/f319fwBgBn99f39/fwBgB399f399f38AYAZ/fX19f38AYAh/f39/f39/fwF/YAt/f39/f39/f39/fwF/YA1/f39/f39/f39/f39/AX9gB39/f39/f30Bf2AIf39/f39/fX8Bf2AGf39/f399AX9gCX9/f39/fX1/fwF/YAR/f399AX9gBX9/f31/AX9gCX9/f319fX9/fwF/YAR/f31/AX9gA399fwF/YAN+f38Bf2ABfQF/YAJ9fwF/YAN9f38Bf2AEfX9/fwF/YAN9fX0Bf2ADf35/AX5gBn9/f39/fwF9YAZ/f39/f30BfWAFf39/f30B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ZAA8AiRkADsCYWUADAJiZQDsAwJjZQAMAmRlAAwCZWUAsgICZmUAsAICZ2UArwICaGUArgICaWUArQICamUAPAJrZQA7AmxlAMoBAm1lAMkBAm5lAAwCb2UAuQoCcGUAqQoCcWUAmQoCcmUAHgJzZQAyAnRlAJEKAnVlAEACdmUAPAJ3ZQA7AnhlAKEBAnllAKABAnplAJ8BAkFlAJ4BAkJlAI0KAkNlAIwKAkRlAB4CRWUAxQECRmUAxAECR2UA+wECSGUAnwICSWUAygECSmUAyQECS2UAnwECTGUAngECTWUAiwoCTmUAigoCT2UAiQoCUGUAiAoCUWUAhwoCUmUAhgoCU2UAhQoCVGUAhAoCVWUA0wMCVmUA0gMCV2UAgwoCWGUAggoCWWUA0QMCWmUA0AMCX2UAHgIkZQAwAmFmAMMBAmJmAJ0BAmNmAJwBAmRmAM8DAmVmAM4DAmZmAM0DAmdmAMwDAmhmAMsDAmpmAMoDAmtmAMkDAmxmAMgDAm1mAMcDAm5mAMYDAm9mAMUDAnBmAMQDAnFmAMMDAnJmAMIDAnNmAMEDAnRmAMADAnVmAL8DAnZmAL4DAndmAIEKAnhmAIAKAnlmAB4CemYA/wkCQWYA/gkCQmYAGwJDZgAaAkRmABkCRWYALQJGZgAsAkdmAAwCSGYAvAICSWYADAJKZgD9CQJLZgD8CQJMZgCdAgJNZgCcAgJOZgD7CQJPZgD6CQJQZgD5CQJRZgD4CQJSZgD3CQJTZgD2CQJUZgD1CQJVZgD0CQJWZgDyCQJXZgDxCQJYZgDwCQJZZgDvCQJaZgDuCQJfZgDtCQIkZgDsCQJhZwDrCQJiZwDqCQJjZwDpCQJkZwDoCQJlZwDnCQJmZwDmCQJnZwDlCQJoZwAeAmlnAAwCamcA5AkCa2cA4wkCbGcA4gkCbWcA4QkCbmcA4AkCb2cArQECcGcA3wkCcWcA3gkCcmcA3QkCc2cAvAECdGcA3AkCdWcA2wkCdmcA2QkCd2cA1wkCeGcA1gkCeWcALQJ6ZwAsAkFnABsCQmcAGgJDZwAZAkRnAAwCRWcA1QkCRmcA/wMCR2cA1w0CSGcA0gkCSWcAngMCSmcA0QkCS2cA0AkCTGcAzwkCTWcAzgkCTmcAzQkCT2cA/AMCUGcA+QMCUWcA9wMCUmcA9AMCU2cAPAJUZwA7AlVnAAwC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jAECRnAAiwECR3AAiQECSHAAiAECSXAAdAJKcACHAQJLcACGAQJMcACFAQJNcABcAk5wAIQBAk9wAIMBAlBwADgCUXAANwJScAA4AlNwADcCVHAAcQJVcAC9BwJWcAC8BwJXcAC6BwJYcAC5BwJZcAC2BwJacAC1BwJfcAC0BwIkcACzBwJhcQCCAQJicQAyAmNxAMEBAmRxAEACZXEAPAJmcQA7AmdxAKEBAmhxAKABAmlxAJ8BAmpxAJ4BAmtxAJQDAmxxALEDAm1xALADAm5xAK8DAm9xAKsDAnBxAKoDAnFxANMDAnJxANIDAnNxAJMCAnRxAJICAnVxANEDAnZxANADAndxAJwDAnhxAJsDAnlxALAHAnpxAK8HAkFxAM0DAkJxAMwDAkNxAMsDAkRxAMoDAkVxAMkDAkZxAMgDAkdxAMcDAkhxAMYDAklxAMUDAkpxAMQDAktxAMMDAkxxAMIDAk1xAMEDAk5xAMADAk9xAL8DAlBxAL4DAlFxAK4HAlJxAK0HAlNxAOgHAlRxAKwHAlVxAKkDAlZxAJ0DAldxAKsHAlhxAKoHAllxAKkHAlpxAKgHAl9xAKcHAiRxAKYHAmFyAKUHAmJyAPsEAmNyAJoDAmRyAJECAmVyAJkDAmZyAJsCAmdyAJoCAmhyALoDAmlyALkDAmpyALgDAmtyAKMHAmxyAKIHAm1yAKEHAm5yAJ0CAm9yAJwCAnByAB4CcXIAoAcCcnIADAJzcgAMAnRyAJ4HAnVyAJ0HAnZyAJwHAndyAKgBAnhyAJoHAnlyAJkHAnpyAJgHAkFyAJcHAkJyAJYHAkNyAJUHAkRyAJQHAkVyAJMHAkZyAJIHAkdyAJEHAkhyAJAHAklyAI8HAkpyAI4HAktyAI0HAkxyAIwHAk1yAIsHAk5yAIoHAk9yAOgCAlByAAwCUXIAMgJScgDBAQJTcgBAAlRyADICVXIAiQcCVnIAiAcCV3IAhQcCWHIAGwJZcgAaAlpyABkCX3IADAIkcgC/AgJhcwCEBwJicwAMAmNzAMABAmRzAL8BAmVzAK0BAmZzAIMHAmdzAIIHAmhzAIEHAmlzAPkBAmpzAIAHAmtzAP8GAmxzAPoBAm1zAMgBAm5zAMIBAm9zAL4BAnBzAKAEAnFzAJwEAnJzALgBAnNzAPYBAnRzAO0BAnVzAOkBAnZzAOUBAndzAOEBAnhzAKgBAnlzAN0BAnpzANcBAkFzANABAkJzAMAEAkNzAP4GAkRzAL4EAkVzALwEAkZzALoEAkdzALYEAkhzALQEAklzAL8CAkpzALEEAktzAK8EAkxzAK0EAk1zAKsEAk5zAKYEAk9zAKMEAlBzALwBAlFzAI8CAlJzAI4CAlNzAI0CAlRzAIoCAlVzAIkCAlZzAAwCV3MA/QYCWHMATwJZcwBOAlpzAE0CX3MATAIkcwBLAmF0AAwCYnQA/AYCY3QA+wYCZHQA+AYCZXQA9gYCZnQA9QYCZ3QA2AECaHQA8wYCaXQA8QYCanQA8AYCa3QA7QYCbHQA6wYCbXQAHgJudADoBgJvdACyAgJwdAC7AwJxdADmBgJydACkAwJzdACjAwJ0dACiAwJ1dAChAwJ2dACgAwJ3dACfAwJ4dACwAgJ5dACvAgJ6dACuAgJBdACtAgJCdAA8AkN0ADsCRHQAygECRXQAyQECRnQADAJHdADlBgJIdADkBgJJdAAMAkp0AOMGAkt0AOwDAkx0AAwCTXQA4QYCTnQA4AYCT3QAGwJQdAAaAlF0ABkCUnQADAJTdAAyAlR0AMEBAlV0AEACVnQA3wYCV3QA3gYCWHQAdgJZdADdBgJadADcBgJfdADaBgIkdABPAmF1AE4CYnUATQJjdQBMAmR1AEsCZXUADAJmdQDYBgJndQCaAQJodQCZAQJpdQB2Amp1AJgBAmt1AJYBAmx1AJUBAm11AJQBAm51AJMBAm91AJIBAnB1AJEBAnF1AJABAnJ1AI8BAnN1AI0BAnR1AIwBAnV1AIsBAnZ1AIkBAnd1AIgBAnh1AHQCeXUAhwECenUAhgECQXUAhQECQnUAXAJDdQCEAQJEdQCDAQJFdQA4AkZ1ADcCR3UAOAJIdQA3Akl1AHECSnUA7wICS3UAiwUCTHUAggECTXUA2AECTnUA1wYCT3UA1gYCUHUA1QYCUXUAMAJSdQDDAQJTdQCdAQJUdQCcAQJVdQDPAwJWdQDOAwJXdQC5CwJYdQCMAgJZdQDUBgJadQDTBgJfdQDSBgIkdQDRBgJhdgAeAmJ2ANAGAmN2AM8GAmR2AM4GAmV2AMwGAmZ2AMoGAmd2AMkGAmh2AE8CaXYATgJqdgBNAmt2AEwCbHYASwJtdgC0CQJudgDIBgJvdgAMAnB2AMcGAnF2AMYGAnJ2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AA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCACQQFIBEAgACECDAELIABBA3FFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANPDQEgAkEDcQ0ACwsCQCADQXxxIgRBwABJDQAgAiAEQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyADQXxqIgQgAEkEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAAC/MBAQN/IwBBEGsiAyQAAkAgAEGI0gEoAgAiAigCAEYEQCACIQEMAQsCQCACKAIYIgEEQANAIAEoAgAgAEYNAiABKAIcIgENAAsLQSQQEiIBQgA3AgQgASAANgIAIAFBADYCICABQgA3AhggASACNgIUIAFCADcCDCABEMsBIAEgAigCGDYCHCACIAE2AhgLQYjSASABNgIACyABIAEoAgRBAWo2AgQgASABKAIQIgBBAWo2AhAgAEUEQCADQQhqQQAQARogASADKAIMQbj3ASgCACIAKAIEayADKAIIIAAoAgBrQcCEPWxqNgIMCyADQRBqJAALMQEBfyMAQRBrIgMkACADIAE2AgwgAyACNgIIIAAgAygCDCADKAIIEIIDIANBEGokAAsEACAAC0UBAX8jAEEQayIDJAAgAyAANgIMIAMgATgCCCADIAI2AgQgAygCDCIAIAMqAgggAygCBCAAKAIAKAIgERAAIANBEGokAAsxAQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAgACgCACgCHBEB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AMwBQQJxGw0AIAAoAgghAyAEQQhqQQBB9AEQCxogAEEEaiAEQQhqENUEIAEgAhCUDiABIAM2AtQBDAELIAAoArwBIgNBf0oNACAAIAAoAgg2ArwBIARBCGpBAEH0ARALGiAAQQRqIARBCGoQ1QQiAUIANwJYIAFCADcCUCABQgA3AkggAUIANwJAIAFCADcCkAEgAUIANwKYASABQgA3AqABIAFCADcCqAEgAUIANwIEIAFBgICA/AM2AgAgAUIANwIMIAFCADcCGCABQYCAgPwDNgIUIAFCADcCICABQgA3AiwgAUGAgID8AzYCKCABQgA3AjQgAUEANgI8IAFCADcCiAEgAUEANgLwASABQgA3AoABIAFCgICA/AM3AnggAUKAgID8g4CAwD83AnAgAUKAgID8AzcCaCABQoCAgPyDgIDAPzcCYCABQgA3AugBIAFCADcC4AEgAUIANwLYASABQgA3AtABIAFCADcCyAEgAUIANwLAASABQgA3ArgBIAFCADcCsAEgACgCvAEhAwsgBEGAAmokACADC1YAIABBADYCLCAAQoCAgICgs+bMPjcCJCAAIAM2AiAgACACNgIcIABBfzYCGCAAQQE7ARQgAEH////7BzYCECAAQn83AgggAEGQwQA2AgAgACABNgIEC3cBAX8jAEEgayIDJAAgAyABNgIcIAMgAjYCGCADIAMoAhwqAgAgAygCGCoCAJM4AhQgAyADKAIcKgIEIAMoAhgqAgSTOAIQIAMgAygCHCoCCCADKAIYKgIIkzgCDCAAIANBFGogA0EQaiADQQxqEAkgA0EgaiQAC0gBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACoCACACKAIIKgIAlCAAKgIEIAIoAggqAgSUkiAAKgIIIAIoAggqAgiUkgsEAEEAC1EBAX8jAEEQayIEJAAgBCAANgIMIAQgATYCCCAEIAI4AgQgBCADNgIAIAQoAgwiACAEKAIIIAQqAgQgBCgCACAAKAIAKAIcERcAIARBEGokAAtLAgF/AX0jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCDCIAIAMoAgggAygCBCAAKAIAKAIgEQ0AIQQgA0EQaiQAIAQLTAEBfyMAQRBrIgIkACACIAA2AgwgAiABOAIIIAIqAgghASMAQRBrIgAgAigC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CiAFNgIYIAogBjYCFCAKIAc2AhAgCiAINgIMIAogCTYCCCAKKAIsIgAgCigCKCAKKAIkIAooAiAQCSAAQRBqIAooAhwgCigCGCAKKAIUEAkgAEEgaiAKKAIQIAooAgwgCigCCBAJIApBMGokAAtHAQF/IAAgARDOARogACgCBCICBEBB7PcBQez3ASgCAEEBajYCACACQZDSASgCABEAAAsgACABNgIEIAAgACgCDEF/ajYCDAuDAQEEfwJAIAAgARDOASIDRQRAQQAhAwwBCyAAKAIIIgVBAE4EQCAFRQ0BA0AgAygCICIGRQ0CIAYhAyAFIARBAWoiBEcNAAsMAQsgACgCACEDCyABIAIpAgA3AgAgASACKQIYNwIYIAEgAikCEDcCECABIAIpAgg3AgggACADIAEQzQEL9QMBCX8jAEEgayIEJAACQCAAKAIMIAEgAUF/TBsiAUEBSA0AIAAoAgAiAkUNAANAQQAhBiACQShqIgcoAgAEQANAAkAgAigCICIDIAJNBEAgAiEDDAELIAMoAigiBSACRiEJIAMgAiAFR0ECdCIKaigCJCEIAn8gACADKAIgIgVFDQAaIAUgBSgCKCADRkECdGpBJGoLIAI2AgAgCCACNgIgIAMgAjYCICACIAU2AiAgAyACKAIkNgIkIAMgBygCADYCKCACKAIkIAM2AiAgBygCACADNgIgIAJBJGoiBSAJQQJ0aiADNgIAIAUgCmogCDYCACAEIANBGGopAgA3AxggBCADQRBqKQIANwMQIAQgA0EIaikCADcDCCAEIAMpAgA3AwAgAyACQRhqKQIANwIYIAMgAkEQaikCADcCECADIAJBCGopAgA3AgggAyACKQIANwIAIAIgBCkDGDcCGCACIAQpAxA3AhAgAiAEKQMINwIIIAIgBCkDADcCAAsgACgCECAGdiECIAZBAWpBH3EhBiADIAJBAXFBAnRqKAIkIgJBKGoiBygCAA0ACwsgAAJ/QQAgACACEM4BRQ0AGiAAKAIACyACEM0BIAAgACgCEEEBajYCECABQX9qIgFFDQEgACgCACECDAAACwALIARBIGokAAueAQEBfyAAKAIAIgEEQCAAIAEQzwELIAAoAgQiAQRAQez3AUHs9wEoAgBBAWo2AgAgAUGQ0gEoAgARAAALIABCgICAgHA3AgQgACgCICIBBEAgAC0AJARAIAEEQEHs9wFB7PcBKAIAQQFqNgIAIAFBkNIBKAIAEQAACwsgAEEANgIgCyAAQQA2AiAgAEIANwIYIABBADYCECAAQQE6ACQLqAEBCH0gACAAKAIAKAIwEQYAIQIgACAAKAIAKAIwEQYAIQMgACAAKAIAKAIwEQYAIQQgACABOAIsIAAqAiQhASAAKgIgIQUgACoCHCEGIAAgACgCACgCMBEGACEHIAAgACgCACgCMBEGACEIIAAgACgCACgCMBEGACEJIABBADYCKCAAIAMgBZIgCJM4AiAgACACIAaSIAeTOAIcIAAgBCABkiAJkzgCJAs5AQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCIAIAIoAgggACgCACgCEBECACACQRBqJAALxgEBBH8gASgCvAEiAwRAIAAoAkQiAiACKAIAKAIkEQEAIgIgAyAAKAIYIAIoAgAoAigRBQAgACgCRCICIAMgACgCGCACKAIAKAIMEQUAIAFBADYCvAELAkAgACgCCCICQQFIDQAgACgCECEEQQAhAwNAIAEgBCADQQJ0aiIFKAIARwRAIANBAWoiAyACRw0BDAILCyADIAJODQAgBSAEIAJBf2oiA0ECdCICaigCADYCACAAKAIQIAJqIAE2AgAgACADNgIICwvxAQAgAEIANwK8ASAAQoCAgICw7YKv3QA3ArQBIABCgICA/IOAgMA/NwKkASAAQeTKADYCACAAQYCAgPwDNgL0ASAAQgE3AuwBIABCADcC5AEgAEKAgICAgICAgD83AtwBIABC/////x83AtQBIABCgYCAgHA3AswBIABCADcC+AEgAEGAgID8AzYCBCAAQoCAgPwDNwKsASAAQgA3AsQBIABCADcCgAIgAEIANwIIIABCADcCECAAQgA3AiQgAEGAgID8AzYCGCAAQgA3AhwgAEFAa0EANgIAIABBgICA/AM2AiwgAEIANwI4IABCADcCMAulCAIBfxh9IAQgBC0AEEFwcSIFOgAQIAMqAgAiGyABKgIAIgyTIhAgACoCACILIAyTIgaUIAMqAgQiHCABKgIEIg2TIhEgACoCBCIJIA2TIgeUkiADKgIIIh0gASoCCCIOkyISIAAqAggiEyAOkyIIlJIhCiAEAn0CQCACKgIAIhggDJMiFCAGlCACKgIEIhkgDZMiFSAH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EGsiAiQAIAIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCACAAIAEoAhg2AhggACABKQIQNwIQIAAgASkCCDcCCCAAQRxqIAIoAghBHGoQgwIgACACKAIIIgEpAkw3AkwgACABKAJcNgJcIAAgASkCVDcCVCACQRBqJAALGAEBfyMAQRBrIgEgADYCDCABKAIMQRhqCyQBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgCIAsYAQF/IwBBEGsiASAANgIMIAEoAgwqAiALGAEBfyMAQRBrIgEgADYCDCABKAIMQQRqC2cBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIgEpAgA3AgAgACABKQIINwIIIAAgAigCCCIBKQIQNwIQIAAgASkCGDcCGCAAIAIoAggiASkCIDcCICAAIAEpAig3AigLUQEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIgAgAygCCBCDAiAAIAMoAgQiASkCADcCMCAAIAEpAgg3AjggA0EQaiQAC34BAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQjAEEQayIBIAMoAgwiADYCDCABKAIMQdQLNgIAIABBgAs2AgAgAEEEaiADKAIIEIoBIABBxABqIAMoAgQQigEgAEGEAWogAygCCBCKASAAQQA2AsQBIANBEGokAAt8AQN/IwBBIGsiACQAAkBB0NgBLQAAQQFxDQBB0NgBEBBFDQAQxQghASAAQwAAAAA4AgwgAEMAAAAAOAIIIABDAAAAADgCBCAAQRBqIgIgAEEMaiAAQQhqIABBBGoQCUGQ2AEgASACEJYCQdDYARAPCyAAQSBqJABBkNgBCy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQxwkgAkEQaiQACzUBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIgEpAgA3AiggACABKQIINwIwCxgBAX8jAEEQayIBIAA2AgwgASgCDEEoagskAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AlwLGAEBfyMAQRBrIgEgADYCDCABKAIMKgJcC1YBAX8jAEEQayIBJAAgASAANgIMIAEoAgwiABD3BiAB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NgJ4IAEgACgCcDYCfCABIAAoAnQ2AoABIAEgACgCeDYChAEgASAAKAJ8NgKIASABIAAoAoABNgKMASABIAAoAoQBNgKQASABIAAoAogBNgKUASABIAAoAowBNgKYASABIAAoApABNgKcASABIAAoApQBNgKgASABIAAoApgBNgKkASABIAAoApwBNgKoASABIAAoAqABNgKsASABIAAoAqQBNgKwASABIAAoAqgBNgK0ASABIAAoAqwBNgK4ASABIAAoArABNgK8ASABIAAoArQBNgLgASAAKAK4ASEDIAFBADYCACABIAM2AsABIAIgACgCwAEgAigCACgCHBEDACEDIAFBADYCCCABIAM2AgQgASAAKALMATYC5AEgASAAKALQATYC6AEgASAAKALUATYC7AEgASAAKALYATYC8AEgASAAKALcATYCxAEgASAAKALgATYCyAEgASAAKALoATYCzAEgASAAKALkATYC0AEgASAAKALsATYC9AEgASACIAIgACACKAIAKAIoEQMAIgMgAigCACgCHBEDACIENgIMIAQEQCACIAMgAigCACgCMBECAAsgASAAKAL0ATYC1AEgASAAKAL4ATYC2AEgASAAKAL8ATYC3AEgASAAKAKAAjYC+AFBgMsACzsCAX8BfSMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDEEMaioCACECIAFBEGokACACC+ADAQJ/AkACQAJAAkACQAJAIAAoAgAiAkEETgRAIAEtAABBCHEEQCACIQMMAgsgACACQX9qIgM2AgAgACAAIANBBHRqIgIpAgw3AjwgACACKQIENwI0IAAgAikCVDcChAEgACACKQJcNwKMASAAIAIpAqwBNwLcASAAIAIpAqQBNwLUAQwBC0EDIQMgAkEDRw0BCyABLQAAQQRxDQEgACADQX9qIgM2AgAgACAAIANBBHRqIgIpAgw3AiwgACACKQIENwIkIAAgAikCVDcCdCAAIAIpAlw3AnwgACACKQKsATcCzAEgACACKQKkATcCxAEMAQtBAiEDIAJBAkgNAQsgAS0AAEECcQ0BIAAgA0F/aiIDNgIAIAAgACADQQR0aiICKQIMNwIcIAAgAikCBDcCFCAAIAIpAlQ3AmQgACACKQJcNwJsIAAgAikCrAE3ArwBIAAgAikCpAE3ArQB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Qez3AUHs9wEoAgBBAWo2AgAgBEGQ0gEoAgARAAALCyAAIAE2AvQIIABBAToA+AggACAHNgLwCAsgASACakEAIAcgAmsQCxogACgC2AghCAsgACAHNgLsCCAIQQFIDQAgAEH0CGooAgAhBSAAQeAIaigCACEAQQAhCgNAIAAgCkECdGooAgAiASAKNgL8AiABKAIYIgJBACACQQBKGyEHQQAhBgNAIAUgBiAIbCAKamoCfyACQQFOBEAgACAGQQJ0aigCACILKAIYIQRBACEJA0AgBEEBTgRAIAEoAiAgCUECdGooAgAhDCALKAIgIQ1BACEDA0BBASAMIA0gA0ECdGooAgBGDQQaIANBAWoiAyAESA0ACwsgCUEBaiIJIAdHDQALC0EACzoAACAGQQFqIgYgCEcNAAsgCkEBaiIKIAhHDQALCyAOQRBqJAAgCAuvBAEHfyMAQUBqIQJB9+8OIQYgACgC3AUiBUEBTgRAA0AgAiAAKALkBSIBIARBNGxqIgMiB0EwaigCADYCOCACIAMpAig3AzAgAiADKQIgNwMoIAIgAykCGDcDICACIAMpAhA3AxggAiADKQIINwMQIAIgAykCADcDCCADIAEgBkGNzOUAbEHf5rvjA2oiBiAFcEE0bGoiASkCADcCACAHIAEoAjA2AjAgAyABKQIoNwIoIAMgASkCIDcCICADIAEpAhg3AhggAyABKQIQNwIQIAMgASkCCDcCCCABIAIoAjg2AjAgASACKQMwNwIoIAEgAikDKDcCICABIAIpAyA3AhggASACKQMYNwIQIAEgAikDEDcCCCABIAIpAwg3AgAgBEEBaiIEIAVHDQALCyAAKALwBSIFQQFOBEBBACEEA0AgAiAAKAL4BSIBIARBLGxqIgMiB0EoaigCADYCMCACIAMpAiA3AyggAiADKQIYNwMgIAIgAykCEDcDGCACIAMpAgg3AxAgAiADKQIANwMIIAMgASAGQY3M5QBsQd/mu+MDaiIGIAVwQSxsaiIBKQIANwIAIAcgASgCKDYCKCADIAEpAiA3AiAgAyABKQIYNwIYIAMgASkCEDcCECADIAEpAgg3AgggASACKAIwNgIoIAEgAikDKDcCICABIAIpAyA3AhggASACKQMYNwIQIAEgAikDEDcCCCABIAIpAwg3AgAgBEEBaiIEIAVHDQALCwuHCQID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BSAEQX9MBEAgASAFmjkDAEEAIAJrIQIMAQsgASAFOQMACyADQRBqJAAgAgukAgACQAJAIAFBFEsNACABQXdqIgFBCUsNAAJAAkACQAJAAkACQAJAAkAgAUEBaw4JAQIJAwQFBgkHAAsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgACACQZMHEQIACw8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAAtKAQN/IAAoAgAsAABBUGpBCkkEQANAIAAoAgAiASwAACEDIAAgAUEBajYCACADIAJBCmxqQVBqIQIgASwAAUFQakEKSQ0ACwsgAgt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARDcAyEAIAEoAgBBQGoLNgIAIAAPCyABIAJBgnhqNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALCxIAIABFBEBBAA8LIAAgARCzCgv5AwIJfwR+IwBBMGsiByQAAkAgAigCCCIIRQRADAELIAghCgNAIAooAhQgACgCZEoEQCAKKAIMIggoAlwhCyAIKAJgIQwgAigCWCENIAgoAlghCCACKAJcIQ4gAigCYCEPIAdBfzYCLCAHIAwgD2siDDYCKCAHIAsgDmsiCzYCJCAHIAggDWsiCDYCICALrCIQIAQpAwh+IAisIhIgBCkDAH58IAysIhMgBCkDEH58IRECfyAFKQMIIBB+IAUpAwAgEn58IAUpAxAgE358IhBCAVkEQCAHIBA3AwggB0EBNgIYQX8hC0F/DAELIBBCf1cEQCAHQX82AhggB0IAIBB9NwMIQQEhC0F/DAELIAdCADcDCCAHQQA2AhhBACELQQALIQgCQAJAAkAgByARQgBXBH4gEUJ/VQ0BIAcgCzYCGEIAIBF9BSARCzcDEAwBCyAHQgA3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AUEBOgBkIAFCADcCRCABQQA2AmAgAUEBOgB4IAFCADcCWCABQQA2AnQgAUEBOgCMASABQgA3AmwgAUEANgKIASABQQE6AKQBIAFBADYCkAEgAUIANwKAASABQQA2AqABIAFCADcCmAEgAUEANgKoASABQv////sHNwIcIAFC////+/f//7//ADcCFCABQv////sPNwIMIAFC////+////79/NwIEIAAoAjghAiABAn8gAwRAIAEgAkEIdEGAgPwHcSACQRh0ciACQQh2QYD+A3EgAkEYdnJyNgI4IAEgAC0ABzoABCABIAAtAAY6AAUgASAALQAFOgAGIAEgAC0ABDoAByABIAAtAAs6AAggASAALQAKOgAJIAEgAC0ACToACiABIAAtAAg6AAsgASAALQAPOgAMIAEgAC0ADjoADSABIAAtAA06AA4gASAALQAMOgAPIAEgAC0AEzoAECABIAAtABI6ABEgASAALQAROgASIAEgAC0AEDoAEyABIAAtABc6ABQgASAALQAWOgAVIAEgAC0AFToAFiABIAAtABQ6ABcgASAALQAbOgAYIAEgAC0AGjoAGSABIAAtABk6ABogASAALQAYOgAbIAEgAC0AHzoAHCABIAAtAB46AB0gASAALQAdOgAeIAEgAC0AHDoAHyABIAAtACM6ACAgASAALQAiOgAhIAEgAC0AIToAIiABIAAtACA6ACMgASAALQAnOgAkIAEgAC0AJjoAJSABIAAtACU6ACYgASAALQAkOgAnIAEgAC0AKzoAKCABIAAtACo6ACkgASAALQApOgAqIAEgAC0AKDoAKyABIAAtAC86ACwgASAALQAuOgAtIAEgAC0ALToALiABIAAtACw6AC8gASAALQAzOgAwIAEgAC0AMjoAMSABIAAtADE6ADIgASAALQAwOgAzIAEgACgCkAEiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgKQASAAKAKoASICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIMAQsgASACNgI4IAEgACkCDDcCDCABIAApAgQ3AgQgASAAKQIcNwIcIAEgACkCFDcCFCABIAApAiw3AiwgASAAKQIkNwIkIAEgACgCkAE2ApABIAAoAqgBCzYCqAEgASAALQA8OgA8IAFBrAFqIQcgACgC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akEANgIAIABBADoA0AcgAEGAgNicBDYC9AcgAEKAgICA0Jmz5j03AuwHIABBiAhqQgA3AgAgAEGACGpCgICAgNCZs6Y+NwIAIABCgICA/IOAgMC/fzcC5AcgAEGcCGpBADYCACAAQoCAgPyDgICAPzcC+AcgAEGUCGpBADYCACAAQQA6AJwKIABBADYCmAogAEEBOgCVCiAAIAU6AJQKIABBkAhqQQA6AAAgACAAKAIcQQRqIAAoAiBBBGoQsgELAwABCw0AIABBkMEANgIAIAALgQIBA38gACgCCCIDQQFOBEADQCAAKAIQIARBAnRqKAIAIgItAOwBQQJxBEAgASABIAIgAigCACgCEBEBAEEBIAEoAgAoAhARBwAiAyACIAMoAgggASACKAIAKAIUEQcAQdKEkcoFIAIgASgCACgCFBEJACAAKAIIIQMLIARBAWoiBCADSA0ACwsgACgC1AFBAU4EQEEAIQQDQCABIAEgACgC3AEgBEECdGooAgAiAiACKAIAKAIkEQEAQQEgASgCACgCEBEHACIDIAIgAygCCCABIAIoAgAoAigRBwBBw565mgUgAiABKAIAKAIUEQkAIARBAWoiBCAAKALUAUgNAAsLCxEAIAAoAtwBIAFBAnRqKAIAC2ABA39B8joQFiAAKALoASICQQFOBEADQCAAKALwASADQQJ0aigCACIELQDMAUEDcUUEQCAEIAEQjA8gBCABIARBxABqEPIBIAAoAugBIQILIANBAWoiAyACSA0ACwsQEwuYBAEDfyAAKAIIIgIgACgCICIBBH8gACgCKAVBAAsgASAAKAI0IgEEfyAAKAI8BUEACyABAn9BACAAKAJIIgFFDQAaIAAoAlALIAEgACgCBCAAKAIUIAAoAhggAigCACgCDBEjABogACgCICICQX9MBEAgACgCJEF/TARAIAAoAigiAQRAIAAtACwEQCABBEBB7PcBQez3ASgCAEEBajYCACABQZDSASgCABEAAAsLIABBADYCKAsgAEIANwIkIABBAToALAsDQCAAKAIoIAJBAnRqQQA2AgAgAkEBaiIBIAJPIQMgASECIAMNAAsLIABBADYCICAAKAI0IgJBf0wEQCAAKAI4QX9MBEAgACgCPCIBBEAgAEFAay0AAARAIAEEQEHs9wFB7PcBKAIAQQFqNgIAIAFBkNIBKAIAEQAACwsgAEEANgI8CyAAQgA3AjggAEFAa0EBOgAACwNAIAAoAjwgAkECdGpBADYCACACQQFqIgEgAk8hAyABIQIgAw0ACwsgAEEANgI0IAAoAkgiAkF/TARAIAAoAkxBf0wEQCAAKAJQIgEEQCAALQBUBEAgAQRAQez3AUHs9wEoAgBBAWo2AgAgAUGQ0gEoAgARAAALCyAAQQA2AlALIABCADcCTCAAQQE6AFQLA0AgACgCUCACQQJ0akEANgIAIAJBAWoiASACTyEDIAEhAiADDQALCyAAQQA2AkgLkgIBDH8DQCAAKAIMIgcgAiIIIANqQQJtQQJ0aigCACEJIAMhBSACIQYDQCAJKAIcKALQASICIAkoAiAoAtABIAJBf0obIQoDQCAGIgJBAWohBiAHIAJBAnRqIg0oAgAiCygCHCgC0AEiBCALKAIgKALQASAEQX9KGyAKSA0ACwNAIAUiBEF/aiEFIAogByAEQQJ0Ig5qKAIAIgwoAhwoAtABIg8gDCgCICgC0AEgD0F/ShtIDQALAn8gAiAETARAIA0gDDYCACAAKAIMIA5qIAs2AgAgBSEEIAYhAgsgAiAETAsEQCAAKAIMIQcgBCEFIAIhBgwBCwsgBCAISgRAIAAgASAIIAQQ7gQLIAIgA0gNAAsLEQAgACABIAAoAgAoAkQRAgALEQAgACABIAAoAgAoAkARAgALIwEBfyMAQRBrIgEkACABIAA2AgwgASgCDBDqDiABQRBqJAALLQACQCABRQ0AIAEoAuwBQQJxRQ0AIAAgASAAKAIAKAJcEQIADwsgACABEKkBC4gCAQJ/Qd44EBYgACgCVCICBEAgACABIAIRCAALIAAgASAAKAIAKAKMAREIAEEAIQIgAEEANgIgIAAgATgCHCAAIAAgACgCACgCFBEBADYCMCAAIAEQ/A4gACAAKAIAKAIsEQAAIAAgACgCACgClAERAAAgACABOAJoIAAgAEHcAGogACgCACgCmAERAgAgACABIAAoAgAoApABEQgAQfs4EBYgACgCmAJBAU4EQANAIAAoAqACIAJBAnRqKAIAIgMgACABIAMoAgAoAggRCwAgAkEBaiICIAAoApgCSA0ACwsQEyAAIAEgACgCACgCnAERCAAgACgCUCICBEAgACABIAIRCAALEBMLqAIBA39BqDgQFiAAELMEAkAgACAAKAIAKAIUEQEARQ0AIAAgACgCACgCFBEBACIBIAEoAgAoAjARAQBBgDBxRQ0AIAAgACgCACgCaBEBACICQQFIDQADQCAAIAAgAkF/aiIBIAAoAgAoAmwRAwAQgQ8gAkEBSiEDIAEhAiADDQALCwJAIAAgACgCACgCFBEBAEUNACAAIAAoAgAoAhQRAQAiASABKAIAKAIwEQEAQYOAAXFFDQAgACAAKAIAKAIUEQEARQ0AIAAgACgCACgCFBEBACIBIAEoAgAoAjARAQBFDQAgACgCmAJBAUgNAEEAIQIDQCAAKAKgAiACQQJ0aigCACIBIAAoAkggASgCACgCDBECACACQQFqIgIgACgCmAJIDQALCxATC48FACAAIAEgAhCBDSAAQpqz5vSTkaLEPDcCZCAAQpqz5viDgIDAPzcCXCAAQQA2AlggAEIANwJQIABCzZmz8tOZs6Y/NwJ8IABCgICAgKABNwJsIABCgICglqTZ/KTxADcCqAEgAEGAATYCpAEgAEKEgoCAIDcCnAEgAEKAgICAoLPmrD83ApQBIABCiq6P6duZs+Y9NwKMASAAQoCAgIAQNwKEASAAQoCAgI2EgIDAPzcCdCAAQQE6AMABIABB9DY2AgAgAEEANgK8ASAAQgA3ArQBIABBAToA4AEgACADNgLIASAAQQA2AsQBIABCADcC1AEgAEEANgLcASAAQQE6APQBIABBADsBkgIgAEEANgLwASAAQgA3AugBIABCgICAgICAgJBBNwL4ASAAQgA3AoACIABCADcCiAIgAEEBOgCkAiAAQQA2AqgCIABBADYCoAIgAEIANwKYAiAAQQE6AMACIABBAToArAIgAEEANgK8AiAAQgA3ArQCIAAgAwR/QQAFAn9B6PcBQej3ASgCAEEBajYCAEHEAUEQQYzSASgCABEDACICCxDaBCAAIAI2AsgBQQELOgCRAgJ/Qej3AUHo9wEoAgBBAWo2AgBBxABBEEGM0gEoAgARAwAiAgsQpA0gAEEBOgCQAiAAIAI2AswBQej3AUHo9wEoAgBBAWo2AgBB2ABBEEGM0gEoAgARAwAhAiAAKALIASEDIAJBAToALCACIAE2AhggAkEANgIUIAJCADcCDCACIAM2AgggAkEANgIEIAJB9Ds2AgAgAkEANgIoIAJBAToAQCACQgA3AiAgAkEANgI8IAJBAToAVCACQgA3AjQgAkEANgJQIAJCADcCSCAAIAI2AsQBC38BBH8CQCAAKALoAyICQQFIDQAgACgC8AMhBANAIAEgBCADQQJ0aiIFKAIARwRAIANBAWoiAyACRw0BDAILCyADIAJODQAgBSAEIAJBf2oiAkECdCIDaigCADYCACAAKALwAyADaiABNgIAIAAgAjYC6AMLIAAgAkEASjYCgAIL0QIBBX8CQAJAIAAoAugDIgJBAUgNACAAKALwAyEEA0AgASAEIANBAnRqKAIARwRAIANBAWoiAyACRw0BDAILCyACIANHDQELAkAgAiAAKALsA0cNACACIAJBAXRBASACGyIETg0AAn8gBARAQej3AUHo9wEoAgBBAWo2AgAgBEECdEEQQYzSASgCABEDACEFIAAoAugDIQILIAJBAU4LBEBBACEDA0AgBSADQQJ0IgZqIAAoAvADIAZqKAIANgIAIANBAWoiAyACRw0ACwsgACgC8AMiAwRAIAAtAPQDBEAgAwRAQez3AUHs9wEoAgBBAWo2AgAgA0GQ0gEoAgARAAALIAAoAugDIQILIABBADYC8AMLIAAgBTYC8AMgACAENgLsAyAAQQE6APQDCyAAKALwAyACQQJ0aiABNgIAIAAgAkEBajYC6AMLIABBATYCgAILXQAgAC0AzAFBA3FFBEAgACAAKgLsAiAAKgLcApQgACoCnAOSOAKcAyAAIAAqAvACIAAqAuAClCAAKgKgA5I4AqADIAAgACoC9AIgACoC5AKUIAAqAqQDkjgCpAMLC5gCAgF/AX4jAEGQAWsiAiQAIAAQqgEgAEEBOgD0AyAAQaA2NgIAIABBADYC8AMgAEIANwLoAyACQQA2AkggAkEANgIEIAJDAAAAADgCACACIAEpAgg3AlQgASkCACEDIAJCADcCDCACQgA3AhQgAkGAgID8AzYCHCACQgA3AyggAkIANwMgIAJBgICA/AM2AjAgAkEANgJEIAJCADcCPCACQgA3AjQgAiADNwJMIAJCiq6P4aPh9ZE8NwKEASACQoquj92j4fWRPDcCfCACQQA6AHggAkGAgID8AzYCdCACQoCAgIDQmbOmPzcCbCACQoCAgPgDNwJkIAJCADcCXCACQYCAgPwDNgIIIAAgAhD6BCACQZABaiQAC5YJAgN/BH0jAEEQayICJAAgAEIA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IABCADcClAcgAEIANwKMByAAQgA3AoQHIABCADcC/AYgAEIANwIQIABBgICA/AM2AgQgAEIANwIIIABCADcCJCAAQYCAgPwDNgIYIABCADcCHCAAQUBrQQA2AgAgAEGAgID8AzYCLCAAQgA3AjggAEIANwIwIAAQqAVB6PcBQej3ASgCAEEBajYCAEEUQRBBjNIBKAIAEQMAIgEiAkIjNwIEIAJBADYCDCACQaCbATYCACABIAA2AhAgAUEgNgIEIAFBuCc2AgAgACABNgLAASABQYCAgPQDNgIMIABBgAlqQgA3AgAgAEGAgID8AzYC/AggAEGICWpCADcCACAAQZQJakIANwIAIABBkAlqQYCAgPwDNgIAIABBnAlqQgA3AgAgAEGoCWpCADcCACAAQaQJakGAgID8AzYCACAAQbAJakIANwIAIABBuAlqQgA3AgAgAEHACWpCADcCACAAQcgJakKAgICAgICAwD83AgALJgAgASgCACIAQZwBIAAoAgAoAjgRAwAiACABIAIgA0EBEIIFIAALJgAgASgCACIAQZwBIAAoAgAoAjgRAwAiACABIAIgA0EAEIIFIAALRQAgASgCACICQRQgAigCACgCOBEDACIDIQIgAC0ABCEAIAJBhLMBNgIAIAIgASgCADYCBCACIAA6ABAgAkGALTYCACADCzcAIAEoAgAiAEEYIAAoAgAoAjgRAwAiACICIgNBhLMBNgIAIAMgASgCADYCBCACQdg1NgIAIAALLAEBfyMAQRBrIgEkACABIAA2AgxB3AAQEiIAIAEoAgwQxgIgAUEQaiQAIAALfQEBfwJAIAFBIEciAw0AIAJBIEcNACAAKAJcDwsCQAJAAkAgA0UEQCACQRNKDQEgACgCYA8LIAFBE0oNASACQSBHDQEgACgCZA8LIAJBa2pBCEsNASAAKAJoDwsgAUFrakEISw0AIAJBIEcNACAAKAJsDwsgACABIAIQwQQLuAIBAX8gAEGUHzYCACAAKAJcIgEgASgCACgCABEBABogACgCXCIBBEBB7PcBQez3ASgCAEEBajYCACABQZDSASgCABEAAAsgACgCYCIBIAEoAgAoAgARAQAaIAAoAmAiAQRAQez3AUHs9wEoAgBBAWo2AgAgAUGQ0gEoAgARAAALIAAoAmQiASABKAIAKAIAEQEAGiAAKAJkIgEE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BzYCECAKIAg2AgwgCiAJOgALIAooAiggCigCJCAKKAIgIAooAhwgCigCGCAKKAIUIAooAhAgCigCDCAKLQALQQFxEJQPIQAgCkEwaiQAIAALXgEBfyMAQSBrIgYkACAGIAA2AhwgBiABNgIYIAYgAjYCFCAGIAM2AhAgBiAENgIMIAYgBTYCCCAGKAIYIAYoAhQgBigCECAGKAIMIAYoAggQlQ8hACAGQSBqJAAgAAsGAEEBEBILNwEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcC3AIgACABKAIINgLkAgs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMQbwCaiEAIAFBEGokACAACzcBAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgxBrAJqIQAgAUEQaiQAIAALNwEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCvAIgACABKQIINwLEAgsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEMsGIAJBEGokAAs3AQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCIBKQIANwKsAiAAIAEpAgg3ArQCCy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQzQYgAkEQaiQAC1ABAX8jAEEQayIEJAAgBCAANgIMIAQgATYCCCAEIAI2AgQgBCADNgIAQegCEA0iACAEKAIMIAQoAgggBCgCBCAEKAIAEMIOIARBEGokACAACzgBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCEHoAhANIgAgAigCDCACKAIIEMEOIAJBEGokACAACyQBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwgAigCCDYCcAsYAQF/IwBBEGsiASAANgIMIAEoAgwoAnALNQEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCQCAAIAEpAgg3AkgLGAEBfyMAQRBrIgEgADYCDCABKAIMQUBrCzkCAX8BfCMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDCoCULshAiABQRBqJAAgAgs5AgF/AXwjAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAni7IQIgAUEQaiQAIAILNgEBfyMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDEEgaiEAIAFBEGokACAACxABAX9BoAIQDSIAENINIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAiABOAIIIAIoAgwgAioCCBDaATgCxAEgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIAIqAggQ2QYgAkEQaiQACzMBAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIAIqAggQ2gE4AsABIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIENsGIAJBEGokAAtNAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAioCCCEBIwBBEGsiACACKAIMNgIMIAAgATgCCCAAKAIMIAAqAgg4ArwBIAJBEGokAAtfAQF/IwBBIGsiBSQAIAUgADYCHCAFIAE2AhggBSACNgIUIAUgAzYCECAFIAQ6AA9B6AgQDSIAIAUoAhwgBSgCGCAFKAIUIAUoAhAgBS0AD0EBcRC2DiAFQSBqJAAgAAtHAQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACOgAHQegIEA0iACADKAIMIAMoAgggAy0AB0EBcRC1DiADQRBqJAAgAAtKAQF/IwBBEGsiAyQAIAMgADYCDCADIAE6AAsgAyACOgAKQcwAEA0iACADKAIMIAMtAAtBAXEgAy0ACkEBcRCXBCADQRBqJAAgAAs9AQF/IwBBEGsiAiQAIAIgADYCDCACIAE6AAtBzAAQDSIAIAIoAgwgAi0AC0EBcUEBEJcEIAJBEGokACAAC1EBAn8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMIgI2AgwgACgCDCIAQbgONgIAIABBATsBBCAAQf//AzsBBiACQcANNgIAIAFBEGokAAsWAQF/QQgQEiIAQgA3AwAgABDiBiAACywBAX8jAEEQayIBJAAgASAANgIMQfAAEBIiACABKAIMEPQCIAFBEGokACAACy4BA38jAEEgayIAJABB8AAQEiEBIABBCGoiAhCBAiABIAIQ9AIgAEEgaiQAIAELNQEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCFCAAIAEpAgg3AhwLiAEBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCDCIAELwDIABB7Aw2AgAgACADKAIIIgEpAgA3AhQgACABKQIINwIcIAAgAygCBCIBKQIANwIkIAAgASkCCDcCLCMAQRBrIABBNGo2AgwjAEEQayAAQcQAajYCDCADQRBqJAALOAEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIQdQAEBIiACACKAIMIAIoAggQ5wYgAkEQaiQAIAAL6QEBAX8jAEEwayICJAAgAiAANgIsIAIgATYCKCACIAIoAiggAigCLCIAEG84AiQgAiACKAIoIAAQbjgCICACIAIoAiggABBtOAIcIAIgAigCKCAAQRBqEG84AhggAiACKAIoIABBEGoQbjgCFCACIAIoAiggAEEQahBtOAIQIAIgAigCKCAAQSBqEG84AgwgAiACKAIoIABBIGoQbjgCCCACIAIoAiggAEEgahBtOAIEIAAgAkEkaiACQSBqIAJBHGogAkEYaiACQRRqIAJBEGogAkEMaiACQQhqIAJBBGoQogEgAkEwaiQAC1ABAX8jAEEgayICJAAgAiAANgIcIAIgATYCGCACQQhqIgEgAigCHCIAIAIoAhhBMGoQESAAQTBqIAEQPxogACACKAIYEOkGIAJBIGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQ6gYhACACQRBqJAAgAAuEAgEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAACfyMAQRBrIgEgAigCCCIANgIMIAEoAgwLAn8jAEEQayIBIABBEGo2AgwgASgCDAsCfyMAQRBrIgEgAEEgajYCDCABKAIMCwJ/IwBBEGsiASAANgIMIAEoAgxBBGoLAn8jAEEQayIBIABBEGo2AgwgASgCDEEEagsCfyMAQRBrIgEgAEEgajYCDCABKAIMQQRqCwJ/IwBBEGsiASAANgIMIAEoAgxBCGoLAn8jAEEQayIBIABBEGo2AgwgASgCDEEIagsCfyMAQRBrIgEgAEEgajYCDCABKAIMQQhqCxCEAiACQRBqJAALXQEBfyMAQdAAayIBJAAgASAANgJMAkBB0NcBLQAAQQFxDQBB0NcBEBBFDQBBkNcBEJsBQdDXARAPCyABQQhqIgAgASgCTBCVA0GQ1wEgABBzIAFB0ABqJABBkNcBC34BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCACKAIIQRBqIAIoAghBIGoQCSAAQRBqIAIoAghBBGogAigCCEEUaiACKAIIQSRqEAkgAEEgaiACKAIIQQhqIAIoAghBGGogAigCCEEoahAJIAJBEGokAAtQAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCIAIAIoAggQ7gYgAEEwaiACKAIIQTBqIAIoAghBNGogAigCCEE4ahAJIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEO8GIAJBEGokAAszAQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMIQAgAUEQaiQAIAALLQEBfyMAQRBrIgIkACACIAE2AgwgAigCDCEBIAAQLxogASAAECYgAkEQaiQAC2sBAX8jAEEgayIBJAAgASAANgIcAkBBjNcBLQAAQQFxDQBBjNcBEBBFDQBB/NYBEC8aQYzXARAPCyABQQhqIgAgASgCHBDyBkH81gEgACkCADcCAEGE1wEgACkCCDcCACABQSBqJABB/NYBCy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQlgMgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQ9AYgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQjAIgAkEQaiQAC64BAQF/IwBBMGsiASQAIAEgADYCLCABKAIsIQAgAUMAAIA/OAIoIAFDAAAAADgCJCABQwAAAAA4AiAgAUMAAAAAOAIcIAFDAACAPzgCGCABQwAAAAA4AhQgAUMAAAAAOAIQIAFDAAAAADgCDCABQwAAgD84AgggACABQShqIAFBJGogAUEgaiABQRxqIAFBGGogAUEUaiABQRBqIAFBDGogAUEIahCiASABQTBqJAALIwEBfyMAQRBrIgEkACABIAA2AgwgASgCDBCeAiABQRBqJAALYAEDfyMAQRBrIgIkACACIAA2AgggAiABNgIEIAIgAigCCCIANgIMIABBMGohAyAAIQEDQCMAQRBrIAE2AgwgAUEQaiIEIQEgAyAERw0ACyAAIAIoAgQQlgMgAkEQaiQAC1EBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCDCIAIAMoAggQ+QYgACADKAIEIgEpAgA3AjAgACABKQIINwI4IANBEGokAAs4AQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AghBwAAQEiIAIAIoAgwgAigCCBD6BiACQRBqJAAgAAsQAQF/QcAAEBIiABCbASAAC1ABAX8jAEEQayIEJAAgBCAANgIMIAQgATYCCCAEIAI2AgQgBCADNgIAQeAAEA0iACAEKAIMIAQoAgggBCgCBCAEKAIAEN4OIARBEGokACAAC3gBAX8jAEEgayIBJAAgASAANgIcAkBB+NYBLQAAQQFxDQBB+NYBEBBFDQAjAEEQa0Ho1gE2AgxB+NYBEA8LIAFBCGogASgCHCIAIAAoAgAoAkwRAgBB6NYBIAEpAgg3AgBB8NYBIAEpAhA3AgAgAUEgaiQAQejWAQs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMQcQCaiEAIAFBEGokACAACzcBAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgxB4AJqIQAgAUEQaiQAIAALLwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwgAigCCBCkDyACQRBqJAALRwEBfyMAQRBrIgQkACAEIAA2AgwgBCABNgIIIAQgAjsBBiAEIAM7AQQgBCgCDCAEKAIIIAQuAQYgBC4BBBClDyAEQRBqJAALVwEBfyMAQSBrIgUkACAFIAA2AhwgBSABNgIYIAUgAjYCFCAFIAM2AhAgBSAENgIMQcwDEA0iACAFKAIcIAUoAhggBSgCFCAFKAIMEKkPIAVBIGokACAACzQCAX8BfSMAQRBrIgEkACABIAA2AgwgASgCDCIAIAAoAgAoAiQRAQCyIQIgAUEQaiQAIAILOAEBfyMAQRBrIgIkACACIAA2AgwgAiABOAIIQdQAEA0iACACKAIMIAIqAggQ9AsgAkEQaiQAIAALRQECfyMAQRBrIgEkACABIAA2AgwgASgCDCIAAn8jAEEQayICIAA2AgwgAigCDCgCBAsQ+QIgABBQIAAQvQEgAUEQaiQACyMBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQhgcgAUEQaiQACy4BAX8jAEEQayIBJAAgASAANgIMIAEoAgwiAARAIAAQhwcgABAOCyABQRBqJAALVAEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgghASMAQRBrIgAgAigCDDYCDCAAIAE2AgggACgCDCgCDCAAKAIIQSRsaiEAIAJBEGokACAACzwBAX8jAEEQayICJAAgAiAANgIMIAIgAToACyACKAIMIgAgAi0AC0EBcSAAKAIAKAI0EQIAIAJBEGokAAs0AQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAgACgCACgCMBEBAEEBcSEAIAFBEGokACAAC1MBAX8jAEEQayICJAAgAiAANgIMIAIgAToACyACLQALQQFxIQEjAEEQayIAIAIoAgw2AgwgACABOgALIAAoAgwgAC0AC0EBcToAqgEgAkEQaiQACyMBAX8jAEEQayIBJAAgASAANgIMIAFBEGokACABKAIMKAIICyMBAX8jAEEQayIBJAAgASAANgIMIAFBEGokACABKAIMKgIkCzwBAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIgAgAioCCCIBOAIkIAAgARAdOAIoIAJBEGokAAsjAQF/IwBBEGsiASQAIAEgADYCDCABQRBqJAAgASgCDCoCLAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIOAIsIAJBEGokAAstAQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAgACgCACgCLBEAACABQRBqJAALNAEBfyMAQRBrIgEkACABIAA2AgwgASgCDCIAIAAoAgAoAigRAQBBAXEhACABQRBqJAAgAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIOAIgIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIOAIcIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIOAIYIAJBEGokAAtFAQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACOAIEIAMoAgwiACADKAIIIAMqAgQgACgCACgCJBELACADQRBqJAALOQEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIAAoAgAoAiARAgAgAkEQaiQACzkBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCAAKAIAKAIcEQIAIAJBEGokAAtFAQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACOAIEIAMoAgwiACADKAIIIAMqAgQgACgCACgCFBELACADQRBqJAALTQEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCEAIAIoAghBAEgEQCACQQA2AggLIAIoAghBAkoEQCACQQI2AggLIAAgAigCCDYCsAELLwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwgAigCCBCbByACQRBqJAALUAEBfyMAQRBrIgQkACAEIAA2AgwgBCABNgIIIAQgAjgCBCAEIAM2AgBBuAEQDSIAIAQoAgwgBCgCCCAEKgIEIAQoAgAQ0AQgBEEQaiQAIAALRgEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjgCBEG4ARANIgAgAygCDCADKAIIIAMqAgRBARDQBCADQRBqJAAgAAs/AQJ/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDCICNgIMIAAoAgxB0Aw2AgAgAkHsCzYCACABQRBqJAALDwEBf0EEEBIiABCfByAACyQBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgCWAsYAQF/IwBBEGsiASAANgIMIAEoAgwqAlgLNQEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCSCAAIAEpAgg3AlALOAEBfyMAQRBrIgEkACABIAA2AgwgASgCDCIAQZABahA5IABB/ABqEDkgAEHoAGoQOSABQRBqJAALLgEBfyMAQRBrIgEkACABIAA2AgwgASgCDCIABEAgABCkByAAEA4LIAFBEGokAAskAQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIAIoAgg2AmQLGAEBfyMAQRBrIgEgADYCDCABKAIMKAJkCyQBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwgAigCCDYCYAsYAQF/IwBBEGsiASAANgIMIAEoAgwoAmALJAEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCACKAIINgJcCxgBAX8jAEEQayIBIAA2AgwgASgCDCgCXAskAQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIAIoAgg2AlQLJAEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOAJQCxgBAX8jAEEQayIBIAA2AgwgASgCDCoCUAskAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AiwLGAEBfyMAQRBrIgEgADYCDCABKAIMKgIsC3gBAX8jAEHwAGsiAiQAIAIgADYCbCACIAE2AmggAigCbCEAIwBBEGsiASACKAJoNgIMIAIgASgCDCgCBDYCZCACKAJkIQEgAkEAQeAAEAsaIAIQqAMgACABIAIQvwUgAigCaCACKAJkIAAoAgwQ+AIgAkHwAGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIELEHIAJBEGokAAszAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDEGUBmogAigCCBCyByACQRBqJAALGQEBfyMAQRBrIgEgADYCDCABKAIMQZQGagsyAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDEHkBmogAigCCBB1IAJBEGokAAsZAQF/IwBBEGsiASAANgIMIAEoAgxB5AZqC30BAn8jAEGAAWsiAiQAIAIgADYCfCACIAE2AnggAigCfCEAIwBBEGsiASACKAJ4NgIMIAIgASgCDCgCBDYCdCACKAJ0IQMgAkEIaiIBQQBB6AAQCxogARDFBSAAIAMgARDEBSACKAJ4IAIoAnQgACgCDBD2AiACQYABaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQtwcgAkEQaiQACzMBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQcQFaiACKAIIELgHIAJBEGokAAsZAQF/IwBBEGsiASAANgIMIAEoAgxBxAVqC2cBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAgAigCCEHoABAVGiAAQegAaiACKAIIQegAahB1IABB/ABqIAIoAghB/ABqEHUgAEGQAWogAigCCEGQAWoQdSACQRBqJAALMwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgxBoAJqIAIoAggQuwcgAkEQaiQACxkBAX8jAEEQayIBIAA2AgwgASgCDEGgAmoLVwEBfyMAQRBrIgEkACABIAA2AggCQAJ/IwBBEGsiACABKAIINgIMIAAoAgwoAuwBQQhGCwRAIAEgASgCCDYCDAwBCyABQQA2AgwLIAFBEGokACABKAIMCy4BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIIEL4HIQAgAkEQaiQAIAALPwEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBBCPBSEAIANBEGokACAACz8BAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCDCADKAIIIAMoAgQQ7AIhACADQRBqJAAgAAs3AQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIQYDAABDsAiEAIAJBEGokACAACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQkAUgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQkQUgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQkgUgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQ/gEgAkEQaiQAC2QBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI4AgQgAygCDCIAKALQBSADKAIIQegAbGpDAACAPyADKgIEIgKVQwAAAAAgAkMAAAAAXhs4AlggAEEBOgCcByADQRBqJAALPgEBfyMAQRBrIgMkACADIAA2AgwgAyABOAIIIAMgAjoAByADKAIMIAMqAgggAy0AB0EBcRCVBSADQRBqJAALKQIBfwF9IwBBEGsiASQAIAEgADYCDCABKAIMEJYFIQIgAUEQaiQAIAILOwEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBBDuAiADQRBqJAALOwEBfyMA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AgAoAhQRCAAgAkEQaiQACyoBAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMEPwNIAJBEGokAAtMAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAioCCCEBIwBBEGsiACACKAIMNgIMIAAgATgCCCAAKAIMIAAqAgg4AmggAkEQaiQACz4BAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI6AAcgAygCDCADKAIIIAMtAAdBAXEQrwEgA0EQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAghBARCvASACQRBqJAALOQEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAJBEGokACACKAIMKAKQASACKAIIQZwCbGoqAugBCyMBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQ/g0gAUEQaiQACzkBAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIgAgAioCCCAAKAIAKAIQEQgAIAJBEGokAAs1AgF/AX0jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQ0gQhAyACQRBqJAAgAwsmAQF/IwBBEGsiASQAIAEgADYCDCABQRBqJAAgASgCDCgCdEEEags4AgF/AX0jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAnAhAiABQRBqJAAgAgtRAQF/IwBBEGsiBCQAIAQgADYCDCAEIAE2AgggBCACNgIEIAQgAzYCACAEKAIMIgAgBCgCCCAEKAIEIAQoAgAgACgCACgCGBEEACAEQRBqJAALRQEBfyMAQRBrIgMkACADIAA2AgwgAyABOAIIIAMgAjYCBCADKAIMKAKQASADKAIEQZwCbGogAyoCCDgCgAIgA0EQaiQACzUBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACQRBqJAAgAigCDCgCkAEgAigCCEGcAmxqCzYBAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwoAnQhACABQRBqJAAgAAs6AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDEGEAWo2AgwgACgCDCgCBCEAIAFBEGokACAACycBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQ/gchACABQRBqJAAgAAt+AQF/IwBBIGsiCCQAIAggADYCHCAIIAE2AhggCCACNgIUIAggAzYCECAIIAQ4AgwgCCAFOAIIIAggBjYCBCAIIAc6AAMgCCgCHCAIKAIYIAgoAhQgCCgCECAIKgIMIAgqAgggCCgCBCAILQADQQFxEP8NIQAgCEEgaiQAIAALPgEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjoAByADKAIMIAMoAgggAy0AB0EBcRDQAiADQRBqJAALOQEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAJBEGokACACKAIMKAKQASACKAIIQZwCbGpB3ABqC0UBAX8jAEEQayIDJAAgAyAANgIMIAMgATgCCCADIAI2AgQgAygCDCgCkAEgAygCBEGcAmxqIAMqAgg4AugBIANBEGokAAtFAQF/IwBBEGsiAyQAIAMgADYCDCADIAE4AgggAyACNgIEIAMoAgwoApABIAMoAgRBnAJsaiADKgIIOAL8ASADQRBqJAALPwEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBEGYARASIgAgAygCCCADKAIEEIEOIANBEGokACAAC1QBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIIIQEjAEEQayIAIAIoAgw2AgwgACABNgIIIAAoAgwoAgwgACgCCEEEdGohACACQRBqJAAgAAs1AQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCIBKQIANwJMIAAgASkCCDcCVAsZAQF/IwBBEGsiASAANgIMIAEoAgxBzABqCzIBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQRxqIAIoAggQlQIgAkEQaiQACw8BAX9BGBASIgAQgQIgAAuDAQEBfyMAQSBrIgMkACADIAA2AhwgAyABNgIYIAMgAjgCFAJAQezVAS0AAEEBcQ0AQezVARAQRQ0AIwBBEGtB3NUBNgIMQezVARAPCyADIAMoAhwgAygCGCADKgIUEOUEQdzVASADKQIANwIAQeTVASADKQIINwIAIANBIGokAEHc1QELXAEBfyMAQSBrIgUkACAFIAA2AhwgBSABNgIYIAUgAjYCFCAFIAM2AhAgBSAENgIMIAUoAhwiACAFKAIYIAUoAhQgBSgCEBAJIAAgBSgCDCoCADgCDCAFQSBqJAALTAECfyMAQRBrIgQkACAEIAA4AgwgBCABOAIIIAQgAjgCBCAEIAM4AgBBEBANIgUgBEEMaiAEQQhqIARBBGogBBCMCCAEQRBqJAAgBQsPAQF/QRAQDSIAEC8aIAALJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOAKYAgsZAQF/IwBBEGsiASAANgIMIAEoAgwqApgCCyUBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgCkAILGQEBfyMAQRBrIgEgADYCDCABKAIMKgKQAgslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AowCCxkBAX8jAEEQayIBIAA2AgwgASgCDCoCjAILJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOAKAAgsZAQF/IwBBEGsiASAANgIMIAEoAgwqAoACCyUBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgC8AELGQEBfyMAQRBrIgEgADYCDCABKAIMKgLwAQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AuwBCzYBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwiACAAKAKEAkEBajYChAIgACACKgIIOALoAQsZAQF/IwBBEGsiASAANgIMIAEoAgwqAuwBCzcBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIgEpAgA3ArwBIAAgASkCCDcCxAELGQEBfyMAQRBrIgEgADYCDCABKAIMQbwBags3AQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCIBKQIANwKsASAAIAEpAgg3ArQBCxkBAX8jAEEQayIBIAA2AgwgASgCDEGsAWoLMgEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgxB3ABqIAIoAggQcyACQRBqJAALNwEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCnAEgACABKQIINwKkAQsZAQF/IwBBEGsiASAANgIMIAEoAgxBnAFqCzIBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAghB3AAQFRogAkEQaiQACygBAX8jAEEQayICIAA2AgwgAiABOgALIAIoAgwgAi0AC0EBcToAhAILHAEBfyMAQRBrIgEgADYCDCABKAIMLQCEAkEBcQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4ApQCCxkBAX8jAEEQayIBIAA2AgwgASgCDCoClAILJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOALQAQsZAQF/IwBBEGsiASAANgIMIAEoAgwqAtABCyUBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgC+AELGQEBfyMAQRBrIgEgADYCDCABKAIMKgL4AQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AugBCyUBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgC4AELJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOALcAQs2AQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIgAgACgChAJBAWo2AoQCIAAgAioCCDgC4AELGQEBfyMAQRBrIgEgADYCDCABKAIMKgLcAQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AtQBCxkBAX8jAEEQayIBIAA2AgwgASgCDCoC1AELJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOALMAQsZAQF/IwBBEGsiASAANgIMIAEoAgwqAswBCyUBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgC9AELGQEBfyMAQRBrIgEgADYCDCABKAIMKgL0AQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AvwBCxkBAX8jAEEQayIBIAA2AgwgASgCDCoC/AELJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOALkAQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AtgBCxkBAX8jAEEQayIBIAA2AgwgASgCDCoC2AELNgEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAggQhQ4gA0EQaiQACyQBAX8jAEEQayIBJAAgASAANgIMIAFBEGokACAB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IwBBEGsiACABKAIMNgIMIAAoAgxBoARqIQAgAUEQaiQAIAALUgEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwiACACKAIINgLgAyAAKALgAwRAIAIoAggiASAAQQRqIAEoAgAoAggRAgALIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEJwJIAJBEGokAAs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMKALgAyEAIAFBEGokACAAC0YBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACAAKAKEAkEBajYChAIgACACKAIIIgEpAgA3AsgCIAAgASkCCDcC0AILLwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwgAigCCBCfCSACQRBqJAALRgEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAAoAoQCQQFqNgKEAiAAIAIoAggiASkCADcCuAIgACABKQIINwLAAgsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEKEJIAJBEGokAAs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMQcgCaiEAIAFBEGokACAACzcBAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgxBuAJqIQAgAUEQaiQAIAALIwEBfyMAQRBrIgEkACABIAA2AgwgASgCDBDeAiABQRBqJAALLwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwgAigCCBC0AyACQRBqJAALOgEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBBArIANBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIELUDIAJBEGokAAthAQN/IwBBEGsiASQAIAEgADYCDEEAIQACfyMAQRBrIgIgASgCDCIDNgIMIAIoAgwoAtgBQQJHCwRAIwBBEGsiACADNgIMIAAoAgwoAtgBQQVHIQALIAFBEGokACAAQQFxC2gBAn8jAEEwayICJAAgAiAANgIsIAIgATYCKCACQQhqIgECfyMAQRBrIgMgAigCLCIAQQRqNgIMIAMoAgwLIAIoAigQESACQRhqIgMgASAAQdwCahBRIABBnANqIAMQPxogAkEwaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQqgkgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQtgMgAkEQaiQAC2MBAX8jAEEwayIDJAAgAyAANgIsIAMgATYCKCADIAI2AiQgAygCLCIAIAMoAigQtgMgAygCJCEBIAMgAygCKCAAQdwCahBRIANBEGoiAiABIAMQsAEgACACELcDIANBMGokAAs7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACNgIEIAMoAgwgAygCCCADKAIEEK0JIANBEGokAAtoAQJ/IwBBMGsiAiQAIAIgADYCLCACIAE2AiggAkEIaiIBAn8jAEEQayIDIAIoAiwiAEEEajYCDCADKAIMCyACKAIoEBEgAkEYaiIDIAEgAEGgBGoQUSAAQawDaiADED8aIAJBMGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEK8JIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIELcDIAJBEGokAAttAQF/IwBBIGsiAiQAIAIgADYCHCACIAE2AhggAigCHCIAIAIoAhgiASkCADcC3AIgACABKQIINwLkAiACQQhqIgEgAEHcAmogAEHYAmoQISAAIAEpAgA3ArAEIAAgASkCCDcCuAQgAkEgaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQsgkgAkEQaiQACxkBAX8jAEEQayIBIAA2AgwgASgCDEHcAmoLNwEBfyMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDEHcAmohACABQRBqJAAgAAs7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE4AgggAyACNgIEIAMoAgwgAyoCCCADKAIEEN0CIANBEGokAAs7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE4AgggAyACOAIEIAMoAgwgAyoCCCADKgIEEI4PIANBEGokAAs5AgF/AX0jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAsADIQIgAUEQaiQAIAILOQIBfwF9IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMKgK8AyECIAFBEGokACACCzkBAX8jAEEQayIDIAA2AgwgAyABOAIIIAMgAjgCBCADKAIMIgAgAyoCCDgC2AMgACADKgIEOALcAws7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE4AgggAyACOAIEIAMoAgwgAyoCCCADKgIEELoJIANBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIENwCIAJBEGokAAssAQF/IwBBEGsiASQAIAEgADYCDEHoBBANIgAgASgCDBCPDyABQRBqJAAgAAs9AQN/QQwQEiIBIQAjAEEQayICIAA2AgwgAigCDCIAQ5qZmT44AgAgAEMAAIA/OAIEIABDAAAAADgCCCABCzUBA39BIBANIgIiACIBQiM3AgQgAUEANgIMIAFBoJsBNgIAIABBGzYCBCAAQYSPATYCACACC1EBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCMAQRBrIgEgAigCDCIANgIMIAEoAgxBzAo2AgAgAEH4xgA2AgAgACACKAIINgIEIAJBEGokAAsrAQF/IwBBEGsiASQAIAEgADYCDEEIEBIiACABKAIMEMAJIAFBEGokACAAC3EBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIQAjAEEQayIBIAIoAgg2AgwgAiABKAIMKAIENgIEIAIoAgQhASACQwAAAAA4AgAgACABIAIQzAUgAigCCCACKAIEIAAoAgwQhAMgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQwgkgAkEQaiQACzMBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQfAAaiACKAIIEMMJIAJBEGokAAsZAQF/IwBBEGsiASAANgIMIAEoAgxB8ABqCzMBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQdwAaiACKAIIEJkCIAJBEGokAAtxAQF/IwBBIGsiAiQAIAIgADYCHCACIAE2AhggAigCHCEAIwBBEGsiASACKAIYNgIMIAIgASgC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ABAuBEAgASACIAMQowIPCyAAKAIMIQQgAEEQaiIFIAEgAiADENYDAkAgBEECSA0AIAUgBEEDdGohBCAAQRhqIQADQCAAIAEgAiADENYDIAEtADYNASAAQQhqIgAgBEkNAAsLCzIAIAAgASgCCEEAEC4EQCABIAIgAxCjAg8LIAAoAggiACABIAIgAyAAKAIAKAIcEQQACxkAIAAgASgCCEEAEC4EQCABIAIgAxCjAgsLqwIBBH8jAEFAaiIBJAAgACgCACICQXxqKAIAIQMgAkF4aigCACEEIAFBADYCFCABQdzPATYCECABIAA2AgwgAUGM0AE2AghBACECIAFBGGpBAEEnEAsaIAAgBGohAAJAIANBjNABQQAQLgRAIAFBATYCOCADIAFBCGogACAAQQFBACADKAIAKAIUEQwAIABBACABKAIgQQFGGyECDAELIAMgAUEIaiAAQQFBACADKAIAKAIYEQkAIAEoAiwiAEEBSw0AIABBAWsEQCABKAIcQQAgASgCKEEBRhtBACABKAIkQQFGG0EAIAEoAjBBAUYbIQIMAQsgASgCIEEBRwRAIAEoAjANASABKAIkQQFHDQEgASgCKEEBRw0BCyABKAIYIQILIAFBQGskACACC54BAQF/IwBBQGoiAyQAAn9BASAAIAFBABAuDQAaQQAgAUUNABpBACABEJ0KIgFFDQAaIANBfzYCFCADIAA2AhAgA0EANgIMIAMgATYCCCADQRhqQQBBJxALGiADQQE2AjggASADQQhqIAIoAgBBASABKAIAKAIcEQQAQQAgAygCIEEBRw0AGiACIAMoAhg2AgBBAQshACADQUBrJAAgAAtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawsKAEGCzwEQ1wMACzIBAX8jAEEQayIBJAAgASAAKAIENgIIIAEoAghBAToAACAAKAIIQQE6AAAgAUEQaiQACzUBAn8CQCAAKAIIIgAtAAAiAkEBRwR/IAJBAnENASAAQQI6AABBAQVBAAsPC0HMzgEQ1wMACzgBAn8jAEEQayIBJAACfyABIAAoAgQ2AgggASgCCC0AAEEBRwsEQCAAEKIKIQILIAFBEGokACACC0IBAX8jAEEQayID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gIB4CzYCACADQQFqIQMMAQsgE6pBgICAgHggE5lEAAAAAAAA4EFjGyECIAYhCAsgBUHgA2ogA0ECdGogAjYCAAtEAAAAAAAA8D8gCBDGASETIANBAE4EQCADIQIDQCAFIAJBA3RqIBMgBUHgA2ogAkECdGooAgC3ojkDACATRAAAAAAAAHA+oiETQQAhACACQQBKIQQgAkF/aiECIAQNAAsgAyEEA0AgDCAAIAwgAEkbIQYgAyAEayEIQQAhAkQAAAAAAAAAACETA0AgEyACQQN0QbDNAWorAwAgBSACIARqQQN0aisDAKKgIRMgAiAGRyEHIAJBAWohAiAHDQALIAVBoAFqIAhBA3RqIBM5AwAgBEF/aiEEIAAgA0chAiAAQQFqIQAgAg0ACwtEAAAAAAAAAAAhEyADQQBOBEADQCATIAVBoAFqIANBA3RqKwMAoCETIANBAEohACADQX9qIQMgAA0ACwsgASATmiATIAobOQMAIAVBsARqJAAgCUEHcQsuAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIECYgAkEQaiQAC9kDAgJ/An4jAEEgayICJAACQCABQv///////////wCDIgVCgICAgICAwP9DfCAFQoCAgICAgMCAvH98VARAIAFCBIYgAEI8iIQhBCAAQv//////////D4MiAEKBgICAgICAgAhaBEAgBEKBgICAgICAgMAAfCEEDAILIARCgICAgICAgIBAfSEEIABCgICAgICAgIAIhUIAUg0BIARCAYMgBHwhBAwBCyAAUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQQMAQtCgICAgICAgPj/ACEEIAVC////////v//DAFYNAEIAIQQgBUIwiKciA0GR9wBJDQAgAkEQaiAAIAFC////////P4NCgICAgICAwACEIgQgA0H/iH9qEKwKIAIgACAEQYH4ACADaxCrCiACKQMIQgSGIAIpAwAiAEI8iIQhBCACKQMQIAIpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIARCAXwhBAwBCyAAQoCAgICAgICACIVCAFINACAEQgGDIAR8IQQLIAJBIGokACAEIAFCgICAgICA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AzgCACAEKAIMIAQqAgggBCoCBCAEKgIAELQKIARBEGokAAv6FQIXfwd+IwBBgAFrIgMkAAJAIAIoAgRFDQAgASgCBEUEQCABIAIpAgA3AgAgASACKQIINwIIDAELIAAgACgCZEF/ajYCZCADQQA2AnwgA0EANgJ4An8gASACIANB/ABqIANB+ABqELsKBEAgAygCfCISKAJcIQ0gAygCeCIPKAJcIQogEigCYCEGIA8oAmAhBCASKAJYIQsgDygCWCEHIANBfzYCXCADIAQgBmsiBTYCWCADIAogDWsiAjYCVCADIAcgC2siCTYCUCASKAIIIQEgA0EANgIgIAWsIhogAqwiH34hHEEAIAlrrCIbIAmsfiAfIB9+fSEdQgAgGiAbfn0hICABBEAgASECA0ACQCACKAIMIgUoAlwgDWusIh4gG35CACAfIAUoAlggC2usIhp+fVINACAcIB5+IBogIH58IB0gBSgCYCAGa6x+fEIBUw0AIAgEQCADQn83A0AgA0IANwM4IAggAiADQdAAaiADQThqEKgCQQFHDQELIAIhCAsgAigCACICIAFHDQALIAMgCDYCIAsgDygCCCEFQQAhASADQQA2AgggBQRAIAUhAgNAAkAgAigCDCIJKAJcIAprrCIeIBt+QgAgHyAJKAJYIAdrrCIafn1SDQAgHCAefiAaICB+fCAdIAkoAmAgBGusfnxCAVMNACABBEAgA0J/NwNAIANCADcDOCABIAIgA0HQAGogA0E4ahCoAkECRw0BCyACIQELIAIoAgAiAiAFRw0ACyADIAE2AggLAkAgASAIckUNACAAIBIgDyADQSBqIANBCGoQ3wMgAygCICIBBEAgAyABKAIMIhI2AnwLIAMoAggiAUUNACADIAEoAgwiDzYCeAsgDygCYEEBaiEVIA8oAlghFiAPKAJcDAELIAMoAngiDygCWEEBaiEWIA8oAmAhFSADKAJ8IRIgDygCXAshFyAPIQIgEiEBQQAhC0EAIQhBASEZQQAhBEEAIQcDQCACKAJgIQYgASgCYCEMIAEoAlwhDSACKAJcIQkgASgCWCEKIAIoAlghBSADQX82AnQgAyAJIA1rIhg2AmwgAyAGIAxrIg42AnAgAyAFIAprIgY2AmggAyAXIA1rIgkgDmwgFSAMayIFIBhsa6wiGzcDUCADIAUgBmwgFiAK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IAIgAygCACgCCBEEACAAKAIEIgAgASAAKAIAKAIYEQIAIARBIGokAAsTACAAIAEgAiABKAIAKAJEEQUACzcBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIgEpAgA3AqgFIAAgASkCCDcCsAULBgBBrIgBC10BAn8gACgCOCICBEAgASABIAIgAigCACgCCBEBAEEBIAEoAgAoAhARBwAiAiAAKAI4IgMgAigCCCABIAMoAgAoAgwRBwBB1JqFggUgACgCOCABKAIAKAIUEQkACwtdAQJ/IAAoAjQiAgRAIAEgASACIAIoAgAoAgwRAQBBASABKAIAKAIQEQcAIgIgACgCNCIDIAIoAgggASADKAIAKAIQEQcAQdGE2cIEIAAoAjQgASgCACgCFBEJAAsLsgMBAn8gACABIAIQPRogACgCMCIDIAFBDGogAiADKAIAKAI4EQcAGiABIAAoAgw2AjQCQAJAIAAoAjRFDQAgAiACKAIAKAI0EQEAQQFxDQAgAiAAKAI0IAIoAgAoAhgRAwAiAwRAIAFBADYCLCABIAM2AigMAgsgAiAAKAI0IAIoAgAoAhwRAwAhAyABQQA2AiwgASADNgIoIAIgAiAAKAI0IgMgAygCACgCDBEBAEEBIAIoAgAoAhARBwAiAyAAKAI0IgQgAygCCCACIAQoAgAoAhARBwBB0YTZwgQgACgCNCACKAIAKAIUEQkADAELIAFCADcCKAsCQCAAKAI4RQ0AIAIgAigCACgCNBEBAEECcQ0AIAIgACgCOCACKAIAKAIYEQMAIgMEQCABIAM2AjBBoIQBDwsgASACIAAoAjggAigCACgCHBEDADYCMCACIAIgACgCOCIBIAEoAgAoAggRAQBBASACKAIAKAIQEQcAIgEgACgCOCIDIAEoAgggAiADKAIAKAIMEQcAQdSahYIFIAAoAjggAigCACgCFBEJAEGghAEPCyABQQA2AjBBoIQBC+wBAgF/AX0gACAAKAIAKAIcEQEAIgIqAgAgASoCAJMiAyADlCACKgIEIAEqAgSTIgMgA5SSIAIqAgggASoCCJMiAyADlJJDAAAANF5BAXNFBEAgACABEJMEIAAtAD0EQCAAKAI0IgEgASgCACgCABEBABogACgCNCIBBEBB7PcBQez3ASgCAEEBajYCACABQZDSASgCABEA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AiQ2AiQgAyAEKAIoNgIoIAMgBCgCLDYCLCADIAQoAjA2AjAgAyAEKAI0NgI0IAMgBCgCODYCOCADIAQoAjw2AjwgA0HMAGohAyAGQQFqIgYgASgCEEgNAAsLIAIgB0HU/ABBwaSFygUgBygCCCACKAIAKAIUEQkAC0Ht/AALgQUCBX8GfSMAQZABayICJAAgACgCEEEBTgRAIAJBQGshBANAIAIgBkHQAGwiBSAAKAIYaiIDKQIINwMYIAIgAykCADcDECACIAMpAhg3AiggAiADKQIQNwIgIAIgAykCKDcCOCACIAMpAiA3AjAgBCADKQI4NwIIIAQgAykCMDcCACACIAMoAkAiAyADKAIAKAIcEQEAIgMoAgg2AgggAiADKQIANwMAIAAqAlAhByABKgIEIQggACoCTCEJIAEqAgAhCiACIAIqAgggASoCCJQgACoCVJU4AgggAkEANgIMIAIgCiACKgIAlCAJlTgCACACIAggAioCBJQgB5U4AgQgACgCGCAFaigCQCIDIAIgAygCACgCGBECACAAKgJMIQcgASoCACEIIAAqAlAhCSABKgIEIQogACoCVCELIAEqAgghDCACQQA2AkwgAiAMIAIqAkiUIAuVOAJIIAIgCiACKgJElCAJlTgCRCACIAggAioCQJQgB5U4AkAgACgCGCAFaiIDIAIpAxA3AgAgAyACKQMYNwIIIAMgAikCKDcCGCADIAIpAiA3AhAgAyACKQI4NwIoIAMgAikCMDcCICADIAQpAgg3AjggAyAEKQIANwIwIAAoAkAEQCAAKAIYIAVqKAJAIgMgAkEQaiACQYABaiACQfAAaiADKAIAKAIIEQQAIAIgAikDiAE3A1ggAiACKQOAATcDUCACIAIpA3g3AmggAiACKQNwNwJgIAAoAkAgACgCGCAFaigCTCACQdAAahCkAQsgBkEBaiIGIAAoAhBIDQALCyAAIAEpAgA3AkwgACABKQIINwJUIAAgACgCACgCRBEAACACQZABaiQAC4sCAgF/BH0jAEHgAGsiAyQAIANCADcCLCADQgA3AzggA0GAgID8AzYCNCADQgA3AkwgA0GAgID8AzYCSCADQgA3AlQgA0EANgJcIANCADcCJCADQYCAgPwDNgIgIANCADcDQCAAIANBIGogA0EQaiADIAAoAgAoAggRBAAgAyoCGCEE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Rw0ACwsCQCAAKAKoASICIAZODQAgACgCrAEgBk4NAAJAIAZFBEBBACEBDAELQej3AUHo9wEoAgBBAWo2AgAgBkEDdEEQQYzSASgCABEDACEBIAAoAqgBIQILIAJBAU4EQEEAIQgDQCABIAhBA3QiCWogACgCsAEgCWopAgA3AgAgCEEBaiIIIAJHDQALCyAAKAKwASICBEAgAC0AtAEEQCACBEBB7PcBQez3ASgCAEEBajYCACACQZDSASgCABEAAAsLIABBADYCsAELIAAgATYCsAEgACAGNgKsASAAQQE6ALQBCyAAIAY2AqgBQQAhASAGQQFOBEBBACEIA0AgACgCsAEhCiAFIAhBAnRqIgwoAgAiAigCLCIJBEAgCUIANwIAIAlCADcCOCAJQgA3AjAgCUIANwIoIAlCADcCICAJQgA3AhggCUIANwIQIAlCADcCCCAMKAIAIQILIAogCEEDdGohCQJ/IAItABQEQCACIAkgAigCACgCEBECACAJKAIADAELIAlBADYCACAJQQA2AgRBAAsgAWohASAIQQFqIgggBkcNAAsLAkAgACgCMCICIAFODQAgACgCNCABTg0AAkAgAUUEQEEAIQoMAQtB6PcBQej3ASgCAEEBajYCACABQZgBbEEQQYzSASgCABEDACEKIAAoAjAhAgsgAkEBTgRAQQAhCANAIAogCEGYAWwiCWogACgCOCAJakGYARAVGiAIQQFqIgggAkcNAAsLIAAoAjgiAgRAIAAtADwEQCACBEBB7PcBQez3ASgCAEEBajYCACACQZDSASgCABEAAAsLIABBADYCOAsgACAKNgI4IAAgATYCNCAAQQE6ADwLIAAgATYCMCAGQQFOBEAgACgCsAEhCEEAIQ8DQCAIIBJBA3QiFWoiESgCAARAIAUgEkECdGoiEygCACIQKAIgIQIgACgCOCEBIAAgECgCHCIIIAcqAgwQRiEKIAAgAiAHKgIMEEYhDCAAKAIQIQ0gECgCGCIJIAcoAhQgCUEAShsiFCAAKAK4AUoEQCAAIBQ2ArgBCyAPQZgBbCABaiEOQQAhASARKAIAQQFOBEADQCAOIAFBmAFsakEAQZgBEAsiCUL////7////v/8ANwJ4IAkgDDYClAEgCSAKNgKQASAJQgA3AmAgCSAUNgKIASABQQFqIgEgESgCAEgNAAsLIA0g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IQcgASoCjAIhCCABKgKcAiEJIAEqAqwCIQogASoCiAIhCyAAIAEqAqwDIgMgASoCkAKUIAEqArADIgQgASoCoAKUkiABKgK0AyIFIAEqArAClJIgApQ4AugBIAAgAyAIlCAEIAmUkiAFIAqUkiAClDgC5AEgACALIAOUIAYgBJSSIAcgBZSSIAKUOALgAQwBCyAAQgA3AgQgAEGAgID8AzYCACAAQgA3AiAgAEEANgLwASAAQgA3AoABIABCgICA/IOAgMA/NwJwIABCgICA/IOAgMA/NwJgIABCADcCsAEgAEIANwIMIABCADcCGCAAQYCAgPwDNgIUIABCADcCLCAAQYCAgPwDNgIoIABCADcCNCAAQQA2AjwgAEIANwKIASAAQoCAgPwDNwJ4IABCgICA/AM3AmggAEEANgLoASAAQgA3AuABIABCADcC2AEgAEIANwLQASAAQgA3AsgBIABCADcCwAEgAEIANwK4AQsgAEEANgLsAQspACAAENkEIgAEQEHs9wFB7PcBKAIAQQFqNgIAIABBkNIBKAIAEQAACwv4AwAgACABIAIQZBogASAAKAKoBDYCNCABIAAoAqwENgI4IAEgACgCsAQ2AjwgASAAKAK0BDYCQCABIAAoArgENgJEIAEgACgCvAQ2AkggASAAKALABDYCTCABIAAoAsQENgJQIAEgACgCyAQ2AlQgASAAKALMBDYCWCABIAAoAtAENgJcIAEgACgC1AQ2AmAgASAAKALYBDYCZCABIAAoAtwENgJoIAEgACgC4AQ2AmwgASAAKALkBDYCcCABIAAoAugENgJ0IAEgACgC7AQ2AnggASAAKALwBDYCfCABIAAoAvQENgKAASABIAAoAvgENgKEASABIAAoAvwENgKIASABIAAoAoAFNgKMASABIAAoAoQFNgKQASABIAAoAogFNgKUASABIAAoAowFNgKYASABIAAoApAFNgKcASABIAAoApQFNgKgASABIAAoApgFNgKkASABIAAoApwFNgKoASABIAAoAqAFNgKsASABIAAoAqQFNgKwASABIAAtAOAFNgK4ASABIAAtAOEFNgK8ASABIAAoAqwFNgLEASABIAAoAqgFNgLAASABIAAtAOQFNgK0ASABIABBsAVqIgIQ6gE4AsgBIAEgAhDrATgCzAEgASAAKAK4BTYC0AEgASAA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ByAAKAIgIgAqAogClCAKIAAqApgClJIgCSAAKgKoApSSlCAKIAcgACoCjAKUIAogACoCnAKUkiAJIAAqAqwClJKUkiAJIAcgACoCkAKUIAogACoCoAKUkiAJIAAqArAClJKUkpKVOALQBQsgA0GwAWokAAvQAwAgACABIAIQZBogASAAKAKsAjYCNCABIAAoArACNgI4IAEgACgCtAI2AjwgASAAKAK4AjYCQCABIAAoArwCNgJEIAEgACgCwAI2AkggASAAKALEAjYCTCABIAAoAsgCNgJQIAEgACgCzAI2AlQgASAAKALQAjYCWCABIAAoAtQCNgJcIAEgACgC2AI2AmAgASAAKALcAjYCZCABIAAoAuACNgJoIAEgACgC5AI2AmwgASAAKALoAjYCcCABIAAoAuwCNgJ0IAEgACgC8AI2AnggASAAKAL0AjYCfCABIAAoAvgCNgKAASABIAAoAvwCNgKEASABIAAoAoADNgKIASABIAAoAoQDNgKMASABIAAoAogDNgKQASABIAAoAowDNgKUASABIAAoApADNgKYASABIAAoApQDNgKcASABIAAoApgDNgKgASABIAAoApwDNgKkASABIAAoAqADNgKoASABIAAoAqQDNgKsASABIAAoAqgDNgKwASABIAAoArwDNgK0ASABIAAoAsADNgK4ASABIAAoAsQDNgK8ASABIAAoAqwDNgLAASABIAAoArADNgLEASABIAAoArQDNgLIASABIAAoArgDNgLMAUHowwALBQBB1AELvwEAIAAgASkCADcCrAIgACABKQIINwK0AiAAIAEpAhg3AsQCIAAgASkCEDcCvAIgACABKQIoNwLUAiAAIAEpAiA3AswCIAAgASkCODcC5AIgACABKQIwNwLcAiAAIAIpAgg3AvQCIAAgAikCADcC7AIgACACKQIQNwL8AiAAIAIpAhg3AoQDIAAgAikCIDcCjAMgACACKQIoNwKUAyAAIAIpAjg3AqQDIAAgAikCMDcCnAMgACAAKAIAKAIIEQAAC2YBAX0CQCABQX9qIgFBA0sNAAJAAkAgAUECaw4CAQEACyACQQJNBEAgACoC2AQPCyACQX1qQQJLDQEgACoCsAMPCyACQQJNBEAgACoC1AQPCyACQX1qQQJLDQAgACoC3AQhAwsgAwt/ACABQX9qIgFBA00EQAJA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IAAgAykCCDcCtAIgACAEKQIANwK8AiAAIAQpAgg3AsQCIABBADYC5AIgAEKas+b0g4CAwD83AtwCIABBADoA2AIgAEEANgLMAgvuBgAgACABIAIQZBogASAAKAIwNgI0IAEgACgCNDYCOCABIAAoAjg2AjwgASAAKAI8NgJAIAEgAEFAaygCADYCRCABIAAoAkQ2AkggASAAKAJINgJMIAEgACgCTDYCUCABIAAoAlA2AlQgASAAKAJUNgJYIAEgACgCWDYCXCABIAAoAlw2AmAgASAAKAJgNgJkIAEgACgCZDYCaCABIAAoAmg2AmwgASAAKAJsNgJwIAEgACgCcDYCdCABIAAoAnQ2AnggASAAKAJ4NgJ8IAEgACgCfDYCgAEgASAAKAKAATYChAEgASAAKAKEATYCiAEgASAAKAKIATYCjAEgASAAKAKMATYCkAEgASAAKAKQATYClAEgASAAKAKUATYCmAEgASAAKAKYATYCnAEgASAAKAKcATYCoAEgASAAKAKgATYCpAEgASAAKAKkATYCqAEgASAAKAKoATYCrAEgASAAKAKsATYCsAEgASAAKALkBjYC5AEgASAAKALoBjYC1AEgASAAKAKoBTYCxAEgASAAKAK4BTYCtAEgASAAKAKkBzYC6AEgASAAKAKoBzYC2AEgASAAKAKsBTYCyAEgASAAKAK8BTYCuAEgASAAKALkBzYC7AEgASAAKALoBzYC3AEgASAAKAKwBTYCzAEgASAAKALABTYCvAEgASAALQCUCjYC9AEgASAALQCVCjYC+AEgASAAKAKkCjYClAIgASAAKALUCjYCxAIgASAALQCdCjYC/AEgASAAKAK8CjYCrAIgASAAQagKaigCADYCmAIgASAAQdgKaigCADYCyAIgASAAQZ4Kai0AADYCgAIgASAAQcAKaigCADYCsAIgASAAQawKaigCADYCnAIgASAAQdwKaigCADYCzAIgASAAQZ8Kai0AADYChAIgASAAQcQKaigCADYCtAIgASAAQbAKaigCADYCoAIgASAAQeAKaigCADYC0AIgASAAQaAKai0AADYCiAIgASAAQcgKaigCADYCuAIgASAAQbQKaigCADYCpAIgASAAQeQKaigCADYC1AIgASAAQaEKai0AADYCjAIgASAAQcwKaigCADYCvAIgASAAQbgKaigC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CmogAEGsCWopAgA3AgALMwEBfyAAIAFqIgNBnQpqIAI6AAAgAUECTARAIAMgAjoAlAYPCyABQQZ0IABqIAI6ANAFC6oBACAAIAEgAiADEOYEIABBnQpqQQA2AAAgAEEJNgIEIABBhD82AgAgAEGhCmpBADsAACAAQaQKakIANwIAIABBrApqQgA3AgAgAEG0CmpCADcCACAAQbwKakIANwIAIABBxApqQgA3AgAgAEHMCmpCADcCACAAQeQKakKAgID8g4CAwD83AgAgAEHcCmpCgICA/IOAgMA/NwIAIABCgICA/IOAgMA/NwLUCguuAQAgACABIAIgAyAEIAUQ5wQgAEGdCmpBADYAACAAQQk2AgQgAEGEPzYCACAAQaEKakEAOwAAIABBpApqQgA3AgAgAEGsCmpCADcCACAAQbQKakIANwIAIABBvApqQgA3AgAgAEHECmpCADcCACAAQcwKakIANwIAIABB5ApqQoCAgPyDgIDAPzcCACAAQdwKakKAgID8g4CAwD83AgAgAEKAgID8g4CAwD83AtQKC5IEACAAIAEgAhBkGiABIAAoAjA2AjQgASAAKAI0NgI4IAEgACgCODYCPCABIAAoAjw2AkAgASAAQUBrKAIANgJEIAEgACgCRDYCSCABIAAoAkg2AkwgASAAKAJMNgJQIAEgACgCUDYCVCABIAAoAlQ2AlggASAAKAJYNgJcIAEgACgCXDYCYCABIAAoAmA2AmQgASAAKAJkNgJoIAEgACgCaDYCbCABIAAoAmw2AnAgASAAKAJwNgJ0IAEgACgCdDYCeCABIAAoAng2AnwgASAAKAJ8NgKAASABIAAoAoABNgKEASABIAAoAoQBNgKIASABIAAoAogBNgKMASABIAAoAowBNgKQASABIAAoApABNgKUASABIAAoApQBNgKYASABIAAoApgBNgKcASABIAAoApwBNgKgASABIAAoAqABNgKkASABIAAoAqQBNgKoASABIAAoAqgBNgKsASABIAAoAqwBNgKwASABIAAoAuQGNgLkASABIAAoAugGNgLUASABIAAoAqgFNgLEASABIAAoArgFNgK0ASABIAAoAqQHNgLoASABIAAoAqgHNgLYASABIAAoAqwFNgLIASABIAAoArwFNgK4ASABIAAoAuQHNgLsASABIAAoAugHNgLcASABIAAoArAFNgLMASABIAAoAsAFNgK8ASABIAAtAJQKNgL0ASABIAAtAJUKNgL4AUHgPgsFAEH8AQuxAQEBfSACQQJNBEAgAUF+aiIBQQJLBEBDAAAAAA8LAkACQAJAIAFBAWsOAgIBAAsgACACQQJ0aioC9AUPCyAAIAJBAnRqKgKEBg8LIAAgAkECdGoqAuQFDwsCQCACQX1qIgJBAksNACABQX5qIgFBAksNAAJAAkACQCABQQFrDgICAQALIAAgAkEGdGoqAoQHDwsgACACQQZ0aioCiAcPCyAAIAJBBnRqKgKAByEDCyADC5ICAQF/AkACQAJAIANBAk0EQCABQX5qIgFBAksNAQJAAkACQCABQQFrDgICAQALIAAgA0ECdGogAjgC9AUMBAsgACADQQJ0aiACOAKEBgwECyAAIANBAnRqIAI4AuQFIAAgACgCmApBASADQQNsdHI2ApgKDwsgA0F9aiIEQQJLDQAgAUF+aiIBQQJLDQACQAJAAkAgAUEBaw4CAgEACyAAIARBBnRqIAI4AoQHDAMLIAAgBEEGdGogAjgCiAcMAwsgACAEQQZ0aiACOAKAByAAIAAoApgKQQEgA0EDbHRyNgKYCgsPCyAAIAAoApgKQQQgA0EDbHRyNgKYCg8LIAAgACgCmApBAiADQQNsdHI2ApgKC6gBAQJ9QwAAgD8hASAAKAIgKgLYAiICQwAAAABcBEAgACgCHCoC2AIiASABIAKSlSEBCyAAQZAKakEANgIAIABBjApqIAEgAEHgCGoqAgCUQwAAgD8gAZMiAiAAQaAJaioCAJSSOAIAIABBiApqIAEgAEHcCGoqAgCUIAIgAEGcCWoqAgCUkjgCACAAIAEgAEHYCGoqAgCUIAIgAEGYCWoqAgCUkjgChAoLqQIBAn8CQCAALQCcCgRAIAFCADcCAAwBCyAAIAAoAhxBBGogACgCIEEEahCyASABQoCAgIDgADcCAAJ/AkAgACgC2AYNACAALQCUBg0AQQYhAkEADAELIAFCgYCAgNAANwIAQQUhAkEBCyEDQQAgACgC3AZFIAAtAJUGG0UEQCABIAJBf2oiAjYCBCABIANBAWoiAzYCAAtBACAAKALgBkUgAC0AlgYbRQRAIAEgAkF/ajYCBCABIANBAWo2AgALIABBABB/BEAgASABKAIAQQFqNgIAIAEgASgCBEF/ajYCBAsgAEEBEH8EQCABIAEoAgBBAWo2AgAgASABKAIEQX9qNgIECyAAQQIQf0UNACABIAEoAgBBAWo2AgAgASABKAIEQX9qNgIECwvLBQEEfyMAQTBrIgEkAAJAIAAtAJwKRQ0AIABBoAhqQQA2AgAgAEEANgLgByAAQQA2AqAHIABCADcCyAUgAEIANwLQBSAAIAAoAhxBBGogACgCIEEEahCyASAAIAAoAgAoAiwRAAAgASAAQYwKaiICKQIANwMoIAEgACkChAo3AyAgASACKQIANwMYIAEgACkChAo3AxAgACoCuAUgACoCqAVgQQFzRQRAIABBqAhqIABB6AhqIAAtAJQKIgIbKAIAIQMgAEG4CGogAEH4CGogAhsoAgAhBCAAQcgIaiAAQYgJaiACGygCACECIAFBADYCDCABIAI2AgggASAENgIEIAEgAzYCACAAIABBsAFqIAEgAUEgaiABQRBqENkCCyAAKgK8BSAAKgKsBWBBAXNFBEAgAEGsCGogAEHsCGogAC0AlAoiAhsoAgAhAyAAQbwIaiAAQfwIaiACGygCACEEIABBzAhqIABBjAlqIAIbKAIAIQIgAUEANgIMIAEgAjYCCCABIAQ2AgQgASADNgIAIAAgAEGEAmogASABQSBqIAFBEGoQ2QILIAAqAsAFIAAqArAFYEEBc0UEQCAAQbAIaiAAQfAIaiAALQCUCiICGygCACEDIABBwAhqIABBgAlqIAIbKAIAIQQgAEHQCGogAEGQCWogAhsoAgAhAiABQQA2AgwgASACNgIIIAEgBDYCBCABIAM2AgAgACAAQdgCaiABIAFBIGogAUEQahDZAgsgAEEAEH8EQCABIABBwAlqKQIANwMIIAEgACkCuAk3AwAgACAAQawDaiABENgCCyAAQQEQfwRAIAEgAEHQCWopAgA3AwggASAAQcgJaikCADcDACAAIABBgARqIAEQ2AILIABBAhB/RQ0AIAEgAEHgCWopAgA3AwggASAAQdgJaikCADcDACAAIABB1ARqIAEQ2AILIAFBMGokAAu5BQEQfSAAQfQJakEANgIAIABB8AlqIABBoAlqKgIAIABB4AhqKgIAkyIMIABBvAhqKgIAIgYgACoCqAgiApQgAEG4CGoqAgAiByAAQawIaioCACIDlJNDAACAPyAGIABB0AhqKgIAIgiU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CGogACgC8AEgCGooAgA2AgAgBUEBaiIFIARHDQALCyAAKALwASIFBEAgAC0A9AEEQCAFBEBB7PcBQez3ASgCAEEBajYCACAFQZDSASgCABEAAAsgACgC6AEhBAsgAEEANgLwAQsgACAHNgLwASAAIAY2AuwBIABBAToA9AELIAAoAvABIARBAnRqIAE2AgAgACAEQQFqNgLoAQwBCyABKALYAUF+cUEERwRAIAFBAjYC2AELCyAAIAEgAiADIAAoAgAoAiQRBAALC4MDAQV/AkAgAS0AzAFBA3ENACABLQD4A0EBcQ0AIAEgAEH4AWoQ8AELIAEoAsABBEACQCABLQDMAUEBcUUEQAJAIAAoAugBIgIgACgC7AFHDQAgAiACQQF0QQEgAhsiBE4NAAJ/IAQEQEHo9wFB6PcBKAIAQQFqNgIAIARBAnRBEEGM0gEoAgARAwAhBSAAKALoASECCyACQQFOCwRAA0AgBSADQQJ0IgZqIAAoAvABIAZqKAIANgIAIANBAWoiAyACRw0ACwsgACgC8AEiAwRAIAAtAPQBBEAgAwRAQez3AUHs9wEoAgBBAWo2AgAgA0GQ0gEoAgARAAALIAAoAugBIQILIABBADYC8AELIAAgBTYC8AEgACAENgLsASAAQQE6APQBCyAAKALwASACQQJ0aiABNgIAIAAgAkEBajYC6AEMAQsgASgC2AFBfnFBBEcEQCABQQI2AtgBCwsgACABQQJBASABKALMAUEDcSIBG0F9QX8gARsgACgCACgCJBEEAAsLewEEfwJAIAAoAugBIgNBAUgNACAAKALwASEEA0AgASAEIAJBAnRqIgUoAgBHBEAgAkEBaiICIANHDQEMAgsLIAIgA04NACAFIAQgA0F/aiICQQJ0IgNqKAIANgIAIAAoAvABIANqIAE2AgAgACACNgLoAQsgACABEKkBCw0AIAAgASACIAMQwgILGAAgACABKQL4ATcCACAAIAEpAoACNwIIC0MBAX8jAEEQayIEJAAgBCAANgIMIAQgATgCCCAEIAI4AgQgBCADOAIAIAQoAgwgBEEIaiAEQQRqIAQQCSAEQRBqJAALgAEBBH8gACABKQIANwL4ASAAIAEpAgg3AoACIAAoAugBIgNBAU4EQANAAkACQCAAKALwASACQQJ0aigCACIEKALYAUF+aiIFQQNLDQAg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DCARIBiUIA0gGpSSIBAgG5SSIRggESAclCANICCUkiAQICGUkiEPICIgEZQgIyANlJIgJCAQlJIhDiASIBSUCyERIAMqAjQhDSADKgI4IRAgAyoCPCESIAJBADYCrAEgAkEANgKcASACIB44ApgBIAIgEzgClAEgAiAKOAKQASACQQA2AowBIAIgJTgCiAEgAiALOAKEASACIAw4AoABIAJBADYCfCACIBg4AnggAiAPOAJ0IAIgDjgCcCACIBIgFyARkpI4AqgBIAIgGSAQkjgCpAEgAiANIB2SOAKgASACIAQpAgg3A1ggAiAEKQIANwNQIAJBADYCTCACIAo4AkggAiAMOAJEIAIgDjgCQCACQQA2AjwgAiATOAI4IAIgCzgCNCACIA84AjAgACAAKAIAKAIUEQEAIQAgAkIANwMoIAJCADcDICAAIAJB0ABqIAJBQGsgAkEwaiAfIB8gFYwgFpMgFiAVkyACQSBqQQFDAAAgQSAAKAIAKAI8ERkADAILIAIgAUGwCGopAgA3A3ggAiABQagIaiIDKQIANwNwIAIgAUHACGopAgA3A4gBIAIgAUG4CGoiBikCADcDgAEgAiABQdAIaikCADcDmAEgAiABQcgIaiIIKQIANwOQASACIAFB4AhqKQIANwOoASACIAFB2AhqIgcpAgA3A6ABAkAgBARAIAAgACgCACgCFBEBACIEIAJB8ABqIB8gBCgCACgCOBELACACIAFB8AhqKQIANwN4IAIgAUHoCGopAgA3A3AgAiABQYAJaikCADcCiAEgAiABQfgIaikCADcCgAEgAiABQZAJaikCADcCmAEgAiABQYgJaikCADcCkAEgAiABQaAJaikCADcCqAEgAiABQZgJaikCADcCoAEgACAAKAIAKAIUEQEAIgQgAkHwAGogHyAEKAIAKAI4EQsADAELIAIgAUHwCGopAgA3A3ggAiABQegIaikCADcDcCACIAFBgAlqKQIANwKIASACIAFB+AhqKQIANwKAASACIAFBkAlqKQIANwKYASACIAFBiAlqKQIANwKQASACIAFBoAlqKQIANwKoASACIAFBmAlqKQIANwKgAQsgBUUNASACIAMpAgg3A3ggAiADKQIANwNwIAIgBikCCDcCiAEgAiAGKQIANwKAASACIAgpAgg3ApgBIAIgCCkCADcCkAEgAiAHKQIINwKoASACIAcpAgA3AqABIAIgAigCeDYCYCACIAIoAogBNgJkIAJBADYCbCACIAIoApgBNgJoIAIgAigCcDYCUCACIAIoAoABNgJUIAJBADYCXCACIAIoApABNgJYIAEqAugHIQogASoC5AchCyABKgKoByEMIAEqAqQHIQ8gACAAKAIAKAIUEQEAIQUgAkIANwNIIAJCADcDQCAFIAFBmAlqIgQgAkHgAGogAkHQAGogH0NmZmY/lCAPIAwgCyAKIAJBQGtDAAAgQUEBIAUoAgAoAkARHgAgAkEANgJcIAIgAigClAE2AlggAiACKAKEATYCVCACIAIoAnQ2AlAgAUGsCWoqAgAhDCACKgJQIQogAUGwCWoqAgAiDhAcIQsgAiACKgJUIg8gDhAdIg6UIAsgCpSTOAJEIAIgCiAOIAwQHCIRlJQgDyARIAuUlJIgAioCWCINIAwQHSIMlJI4AkggAiAKIAwgDpSUIA8gDCALlJSSIBEgDZSTOAJAIAIgAUHwCGopAgA3A3ggAiABQegIaikCADcDcCACIAFBgAlqKQIANwKIASACIAFB+AhqKQIANwKAASACIAFBkAlqKQIANwKYASACIAFBiAlqKQIANwKQASACIAQpAgA3AqABIAIgAUGgCWopAgA3AqgBIAJBADYCPCACIAIqApABjDgCOCACIAIqAoABjDgCNCACIAIqAnCMOAIwAkAgASoC5AYiCiABKgLoBiILXkEBc0UEQCAAIAAoAgAoAhQRAQAhBSACQgA3AyggAkIANwMgIAUgBCACQTBqIAJBQGsgHyAfQ9sPScBD2w9JQCACQSBqQQBDAAAgQSAFKAIAKAI8ERkADAELIAogC11BAXMNACAAIAAoAgAoAhQRAQAhBSACQgA3AyggAkIANwMgIAUgBCACQTBqIAJBQGsgHyAfIAogCyACQSBqQQFDAAAgQSAFKAIAKAI8ERkACyACIAMpAgg3A3ggAiADKQIANwNwIAIgBikCCDcCiAEgAiAGKQIANwKAASACIAgpAgg3ApgBIAIgCCkCADcCkAEgAiAHKQIINwKoASACIAcpAgA3AqABIAIgASkCsAU3AyggAiABKQKoBTcDICACIAEpAsAFNwMYIAIgASkCuAU3AxAgACAAKAIAKAIUEQEAIQAgAkIANwMIIAJCADcDACAAIAJBIGog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NwIAQbDYAUH02AEpAgA3AgBBuNgBQfzYASkCADcCAEHQ2AEQDwsgACgCHCgCDCEBIAJCADcDUCACQoCAgPwDNwNIIAJB2AJqIAQgASACQcgAaiACQaACahDJBEUNACACQgA3AlwgAkIANwJUIAJCADcCTCACQQA6AOABIAJBkCY2AkggAkIANwI8IAIgAzYCOCACIAAoAhwoAggiATYCMCACQQA2AiggASgC7AEhAyACQQA2AiAgAiABNgIQIAIgASADQR50QR91cTYCLCACIAIpAzg3AxggAiACKQMoNwMIIAAgAkGgAmogAkEYaiACQQhqIAJByABqEIQFRQ0AAn9B6PcBQej3ASgCAEEBajYCAEHYAUEQQYzSASgCABEDACIBQQRqC0EAQdQBEAshAyABQZAmNgIAIAMgAkHIAGpBBHJB5AAQFRogASACKQO4ATcCcCABIAIpA7ABNwJoIAEgAikDyAE3AoABIAEgAikDwAE3AnggASACKQPQATcCiAEgASACKQPYATcCkAEgASACLQDgAToAmAEgASACKAKcAjYC1AEgASACKQKUAjcCzAEgASACKQKMAjcCxAEgASACKQKEAjcCvAEgASACKQL8ATcCtAEgASACKQL0ATcCrAEgASACKQLsATcCpAEgASACKQLkATcCnAECQCAAKAIYIgMoAtQGIgQgAygC2AZHDQAgBCAEQQF0QQEgBBsiBk4NAAJ/IAYEQEHo9wFB6PcBKAIAQQFqNgIAIAZBAnRBEEGM0gEoAgARAwAhByADKALUBiEECyAEQQFOCwRAA0AgByAFQQJ0IghqIAMoAtwGIAhqKAIANgIAIAVBAWoiBSAERw0ACwsgAygC3AYiBQRAIAMtAOAGBEAgBQRAQez3AUHs9wEoAgBBAWo2AgAgBUGQ0gEoAgARAAALIAMoAtQGIQQLIANBADYC3AYLIAMgBzYC3AYgAyAGNgLYBiADQQE6AOAGCyADKALcBiAEQQJ0aiABNgIAIAMgBEEBajYC1AYgACgCGCEDIAECfyAAKAIcKAIILQDMAUEDcQRAIAEgAyoC2AIgASoCQJQ4AkAgA0HkAmoMAQsgASADKgLUAiABKgJAlDgCQCADQeACagsqAgAgASoCRJQ4AkQLIAJBkANqJAALjQQBBn8CQCAAKAIEIgQgACgCCEcNACAEIARBAXRB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AiEEIAEgAzYCkAMgASAENgKUAyABIAAoAtQCNgL4AiABIAAoAtgCNgL8AiABIAAoAtwCNgKAAyABIAAoAuACNgKEAyABIAAoAuQCNgKIAyABIAAoAugCNgKMAyABIAIgAEHYA2oiCyACKAIAKAIcEQMANgKAAiACQcABQQEgAigCACgCEBEHACIMKAIIIgMgACgC+AQ2AmAgAyAAKAL8BDYCZCADIAAoAoAFNgJoIAMgACgChAU2AmwgAyAAKAKIBTYCcCADIAAoAowFNgJ0IAMgACgCkAU2AnggAyAAKAKUBTYCfCADIAAoApgFNgKAASADIAAoApwFNgKEASADIAAoAqAFNgKIASADIAAoAqQFNgKMASADIAAtANkDNgK0ASADIAAtANgDNgKwASADIAAoAogENgKQASADIAAoAowENgKUASADIAAoApAENgKYASADIAAoApQENgKcASADIAAoAuQDIgQ2AqgBAkAgBEUEQCADQQA2AqABDAELIAMgAiAAKALsAyACKAIAKAIcEQMANgKgASADKAKoASIERQ0AIAJBECAEIAIoAgAoAhARBwAhCSAAKALsAyEKIARBAU4EQCAJKAIIIQVBACEHA0AgBSAKIAdBBHRqIgYoAgA2AgAgBSAGKAIENgIEIAUgBigCCDYCCCAFIAYoAgw2AgwgBUEQaiEFIAdBAWoiByAERw0ACwsgAiAJQYAlQcGkhcoFIAogAigCACgCFBEJAAsgAyAAKALcAzYCuAEgAyAAKAKYBDYCACADIAAoApwENgIEIAMgACgCoAQ2AgggAyAAKAKkBDYCDCADIAAoAqgENgIQIAMgACgCrAQ2AhQgAyAAKAKwBDYCGCADIAAoArQENgIcIAMgACgCuAQ2AiAgAyAAKAK8BDYCJCADIAAoAsAENgIoIAMgACgCxAQ2AiwgAyAAKALIBDYCMCADIAAoAswENgI0IAMgACgC0AQ2AjggAyAAKALUBDYCPCADQUBrIAAoAtgENgIAIAMgACgC3AQ2AkQgAyAAKALgBDYCSCADIAAoAuQENgJMIAMgACgC6AQ2AlAgAyAAKALsBDYCVCADIAAoAvAENgJYIAMgACgC9AQ2AlwgAyAAKAL4AyIENgKsAQJAIARFBEAgA0EANgKkAQwBCyADIAIgACgCgAQgAigCACgCHBEDADYCpAEgAygCrAEiBEUNACACQQQgBCACKAIAKAIQEQcAIQYgACgCgAQhByAEQQFOBEAgBigCCCEDQQAhBQNAIAMgByAFQQJ0aigCADYCACADQQRqIQMgBUEBaiIFIARHDQALCyACIAZBkyVBwaSFygUgByACKAIAKAIUEQkACyACIAxBmSVBwaSFygUgCyACKAIAKAIUEQkAIAEgAEHYCGooAgAiAzYCvAICQCADRQRAIAFBADYCnAIMAQsgASACIABB4AhqKAIAKAIAIAIoAgAoAhwRAwA2ApwCIAEoArwCIglFDQAgAkHcAiAJIAIoAgAoAhARBwAhCyAAKALgCCEDIAlBAU4EQCALKAIIIQRBACEKA0AgBCADIApBAnQiB2ooAgAiAygC6AI2AsACIAQgAygCzAI2AoACIAQgAygC0AI2AoQCIAQgAygC1AI2AogCIAQgAygC2AI2AowCIAQgAygC/AI2AtgCIAQgAy0A+QI2AtQCIAQgAygC5AE2AqABIAQgAygC6AE2AqQBIAQgAygC7AE2AqgBIAQgAygC8AE2AqwBIAQgAy0A+AI2AtACIAQgAygClAI2AtABIAQgAygCmAI2AtQBIAQgAygCnAI2AtgBIAQgAygCoAI2AtwBIAQgAygCpAI2AuABIAQgAygCqAI2AuQBIAQgAygCrAI2AugBIAQgAygCsAI2AuwBIAQgAygCPDYCACAEIANBQGsoAgA2AgQgBCADKAJENgIIIAQgAygCSDYCDCAEIAMoAkw2AhAgBCADKAJQNgIUIAQgAygCVDYCGCAEIAMoAlg2AhwgBCADKAJcNgIgIAQgAygCYDYCJCAEIAMoAmQ2AiggBCADKAJoNgIsIAQgAygCbDYCMCAEIAMoAnA2AjQgBCADKAJ0NgI4IAQgAygCeDYCPCAEIAMoAnw2AqgCIAQgAygCgAE2AqwCIAQgAygCtAE2AnAgBCADKAK4ATYCdCAEIAMoArwBNgJ4IAQgAygCwAE2AnwgBCADKALEATYCgAEgBCADKALIATYChAEgBCADKALMATYCiAEgBCADKALQATYCjAEgBCADKALUATYCkAEgBCADKALYATYClAEgBCADKALcATYCmAEgBCADKALgATYCnAEgBCADKALkAjYCvAIgBCADKAKEATYCQCAEIAMoAogBNgJEIAQgAygCjAE2AkggBCADKAKQ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Y3RQb2ludCcpKSB0aHJvdyAnYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgRGVidWdEcmF3ZXI6OmRyYXdDb250YWN0UG9pbnQuJzsgc2VsZlsnZHJhd0NvbnRhY3RQb2ludCddKCQxLCQyLCQzLCQ0LCQ1KTsgfQBpaWlkaWkAeyB2YXIgc2VsZiA9IE1vZHVsZVsnZ2V0Q2FjaGUnXShNb2R1bGVbJ0RlYnVnRHJhd2VyJ10pWyQwXTsgaWYgKCFzZWxmLmhhc093blByb3BlcnR5KCdyZXBvcnRFcnJvcldhcm5pbmcnKSkgdGhyb3cgJ2EgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpyZXBvcnRFcnJvcldhcm5pbmcuJzsgc2VsZlsncmVwb3J0RXJyb3JXYXJuaW5nJ10oJDEpOyB9AGlpAHsgdmFyIHNlbGYgPSBNb2R1bGVbJ2dldENhY2hlJ10oTW9kdWxlWydEZWJ1Z0RyYXdlciddKVskMF07IGlmICghc2VsZi5oYXNPd25Qcm9wZXJ0eSgnZHJhdzNkVGV4dCcpKSB0aHJvdyAnYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgRGVidWdEcmF3ZXI6OmRyYXczZFRleHQuJzsgc2VsZlsnZHJhdzNkVGV4dCddKCQxLCQyKTsgfQBpaWkAeyB2YXIgc2VsZiA9IE1vZHVsZVsnZ2V0Q2FjaGUnXShNb2R1bGVbJ0RlYnVnRHJhd2VyJ10pWyQwXTsgaWYgKCFzZWxmLmhhc093blByb3BlcnR5KCdzZXREZWJ1Z01vZGUnKSkgdGhyb3cgJ2EgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpzZXREZWJ1Z01vZGUuJzsgc2VsZlsnc2V0RGVidWdNb2RlJ10oJDEpOyB9AHsgdmFyIHNlbGYgPSBNb2R1bGVbJ2dldENhY2hlJ10oTW9kdWxlWydEZWJ1Z0RyYXdlciddKVskMF07IGlmICghc2VsZi5oYXNPd25Qcm9wZXJ0eSgnZ2V0RGVidWdNb2RlJykpIHRocm93ICdhIEpTSW1wbGVtZW50YXRpb24gbXVzdCBpbXBsZW1lbnQgYWxsIGZ1bmN0aW9ucywgeW91IGZvcmdvdCBEZWJ1Z0RyYXdlcjo6Z2V0RGVidWdNb2RlLic7IHJldHVybiBzZWxmWydnZXREZWJ1Z01vZGUnXSgpOyB9AGkAAAAAAACADwAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAADIzYnREZWZhdWx0U29mdEJvZHlTb2x2ZXIAMTZidFNvZnRCb2R5U29sdmVyAAAAACBoAABiDwAASGgAAEgPAAB4DwAAAAAAANgPAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAAA0MWJ0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uAEhoAACsDwAAdCoAAAAAAABQEAAAVQAAAFYAAABXAAAATjI4YnRTb2Z0U29mdENvbGxpc2lvbkFsZ29yaXRobTEwQ3JlYXRlRnVuY0UAMzBidENvbGxpc2lvbkFsZ29yaXRobUNyZWF0ZUZ1bmMAAAAgaAAAJRAAAEhoAAD4DwAASBAAAAAAAACgEAAAVQAAAFgAAABZAAAATjI5YnRTb2Z0UmlnaWRDb2xsaXNpb25BbGdvcml0aG0xMENyZWF0ZUZ1bmNFAAAASGgAAHAQAABIEAAAAAAAAPQQAABVAAAAWgAAAFsAAABOMzVidFNvZnRCb2R5Q29uY2F2ZUNvbGxpc2lvbkFsZ29yaXRobTEwQ3JlYXRlRnVuY0UASGgAAMAQAABIEAAAAAAAAFARAABVAAAAXAAAAF0AAABOMzVidFNvZnRCb2R5Q29uY2F2ZUNvbGxpc2lvbkFsZ29yaXRobTE3U3dhcHBlZENyZWF0ZUZ1bmNFAABIaAAAFBEAAEgQAAAAAAAAXBMAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAAAAAAKQTAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAEG0IwuAegEAAAACAAAAAAAAAAEAAAADAAAAAQAAAAIAAAADAAAAAAAAAAIAAAADAAAAVXBkYXRlQ2x1c3RlcnMAQXBwbHlDbHVzdGVycwBTb2Z0Qm9keSBhcHBseUZvcmNlcwBTb2Z0Qm9keU1hdGVyaWFsRGF0YQBTb2Z0Qm9keU5vZGVEYXRhAFNvZnRCb2R5TGlua0RhdGEAU29mdEJvZHlGYWNlRGF0YQBTb2Z0Qm9keVRldHJhRGF0YQBTb2Z0UmlnaWRBbmNob3JEYXRhAGJ0VmVjdG9yM0Zsb2F0RGF0YQBmbG9hdABTb2Z0Qm9keVBvc2VEYXRhAGludABTb2Z0Qm9keUNsdXN0ZXJEYXRhAGJ0U29mdEJvZHlKb2ludERhdGEAYnRTb2Z0Qm9keUZsb2F0RGF0YQBOMTBidFNvZnRCb2R5NUpvaW50RQAAIGgAAOoSAAAAAAAAQBMAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAE4xMGJ0U29mdEJvZHk2Q0pvaW50RQAAAEhoAAAoEwAAABMAADEwYnRTb2Z0Qm9keQAAAABIaAAATBMAALAlAABOMTBidFNvZnRCb2R5MTVSYXlGcm9tVG9DYXN0ZXJFAE42YnREYnZ0OElDb2xsaWRlRQAAIGgAAIgTAABIaAAAaBMAAJwTAAAAAAAAGBQAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAIAAAACBAAAAggAAAIMAAACEAAAAMjRidFNvZnRCb2R5Q29sbGlzaW9uU2hhcGUAAEhoAAD8EwAA+E0AAFNvZnRCb2R5AAAAAAAAAAB4FAAAZwAAAIUAAABpAAAAhgAAAGsAAABsAAAAbQAAAE4xNWJ0U29mdENvbGxpZGVyczEzQ29sbGlkZVNERl9SU0UAAEhoAABUFAAAnBMAAAAAAAD4FAAAZwAAAIcAAABpAAAAiAAAAGsAAABsAAAAbQAAAE4xNWJ0U29mdENvbGxpZGVyczEyQ29sbGlkZUNMX1JTRQBOMTVidFNvZnRDb2xsaWRlcnMxMUNsdXN0ZXJCYXNlRQAASGgAAMoUAACcEwAASGgAAKgUAADsFAAAAAAAAIwVAACJAAAAigAAAIsAAAB3AAAAeAAAAHkAAACMAAAAjQAAAI4AAACPAAAAfgAAAJAAAACRAAAAkgAAAJMAAACDAAAA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aW11bGF0aW9uAGludGVybmFsU2luZ2xlU3RlcFNpbXVsYXRpb24AdXBkYXRlQWN0aW9ucwB1cGRhdGVBY3RpdmF0aW9uU3RhdGUAc29sdmVDb25zdHJhaW50cwBjYWxjdWxhdGVTaW11bGF0aW9uSXNsYW5kcwBjcmVhdGVQcmVkaWN0aXZlQ29udGFjdHMAcmVsZWFzZSBwcmVkaWN0aXZlIGNvbnRhY3QgbWFuaWZvbGRzAHByZWRpY3RpdmUgY29udmV4U3dlZXBUZXN0AGludGVncmF0ZVRyYW5zZm9ybXMAQ0NEIG1vdGlvbiBjbGFtcGluZwBhcHBseSBzcGVjdWxhdGl2ZSBjb250YWN0IHJlc3RpdHV0aW9uAHByZWRpY3RVbmNvbnN0cmFpbnRNb3Rpb24AYnREeW5hbWljc1dvcmxkRmxvYXREYXRhADIzYnREaXNjcmV0ZUR5bmFtaWNzV29ybGQAMTVidER5bmFtaWNzV29ybGQAAAAASGgAAL8dAAAwMwAASGgAAKUdAADUHQAAAAAAAFQeAAAUAQAAFQEAABYBAAAyN0lucGxhY2VTb2x2ZXJJc2xhbmRDYWxsYmFjawBOMjVidFNpbXVsYXRpb25Jc2xhbmRNYW5hZ2VyMTRJc2xhbmRDYWxsYmFja0UAIGgAAB4eAABIaAAAAB4AAEweAAAAAAAAoB4AAAUAAAAXAQAAGAEAABkBAAAzNGJ0Q2xvc2VzdE5vdE1lQ29udmV4UmVzdWx0Q2FsbGJhY2sAAAAASGgAAHgeAACEBAAAAAAAAPQeAAAaAQAAGwEAABwBAAAdAQAAHgEAAB8BAAAgAQAAIQEAACIBAAAjAQAAJAEAADE3YnRGaXhlZENvbnN0cmFpbnQASGgAAOAeAAAEIQAAAAAAAFQfAAAlAQAAJgEAACcBAAAdAQAAKAEAACkBAAAgAQAAKgEAACsBAAAsAQAALQEAAC4BAAAyM2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50AAAASGgAADgfAAAEIQAAYnRHZW5lcmljNkRvZkNvbnN0cmFpbnREYXRhAAAAAADYHwAAJQEAAC8BAAAnAQAAHQEAACgBAAAwAQAAIAEAACoBAAArAQAAMQEAADIBAAAuAQAAMwEAADI5YnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnQA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blBhaXJDYWxsYmFjawAxN2J0T3ZlcmxhcENhbGxiYWNrAAAAIGgAAO4mAABIaAAA1CYAAAQnAAAAAAAAeCcAAKMBAACkAQAApQEAADMwYnRHamtFcGFQZW5ldHJhdGlvbkRlcHRoU29sdmVyADMwYnRDb252ZXhQZW5ldHJhdGlvbkRlcHRoU29sdmVyAAAAIGgAAE0nAABIaAAALCcAAHAnAAAAAAAA3CcAAKYBAACnAQAAqAEAADE3YnRHamtQYWlyRGV0ZWN0b3IAMzZidERpc2NyZXRlQ29sbGlzaW9uRGV0ZWN0b3JJbnRlcmZhY2UAACBoAACsJwAASGgAAJgnAADUJwAAAAAAACAoAACjAQAAqQEAAKoBAAAzM2J0TWlua293c2tpUGVuZXRyYXRpb25EZXB0aFNvbHZlcgBIaAAA/CcAAHAnAAAAAAAALCkAAKsBAACsAQAArQEAAK4BAACvAQAAWk4zM2J0TWlua293c2tpUGVuZXRyYXRpb25EZXB0aFNvbHZlcjEyY2FsY1BlbkRlcHRoRVIyMmJ0Vm9yb25vaVNpbXBsZXhTb2x2ZXJQSzEzYnRDb252ZXhTaGFwZVM0X1JLMTFidFRyYW5zZm9ybVM3X1I5YnRWZWN0b3IzUzlfUzlfUDEyYnRJRGVidWdEcmF3RTIwYnRJbnRlcm1lZGlhdGVSZXN1bHQATjM2YnREaXNjcmV0ZUNvbGxpc2lvbkRldGVjdG9ySW50ZXJmYWNlNlJlc3VsdEUAACBoAADzKAAASGgAAEgoAAAkKQAAAAAAAGgpAACwAQAAsQEAALIBAACzAQAAtAEAADE2YnRFbXB0eUFsZ29yaXRobQAASGgAAFQpAADMFgAAAAAAALQpAAC1AQAAtgEAAAcAAAAHAAAABwAAADMwYnRBY3RpdmF0aW5nQ29sbGlzaW9uQWxnb3JpdGhtAAAAAEhoAACQKQAAzBYAAAAAAAAAKgAAtwEAALgBAAC5AQAAugEAALsBAAAzMmJ0U3BoZXJlU3BoZXJlQ29sbGlzaW9uQWxnb3JpdGhtAABIaAAA3CkAALQpAAAAAAAAdCoAALwBAAC9AQAAUQAAAFIAAAC+AQAAVAAAADMxYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbgAyNGJ0Q29sbGlzaW9uQ29uZmlndXJhdGlvbgAAAAAgaAAATioAAEhoAAAsKgAAbCoAAAAAAADIKgAAVQAAAL8BAADAAQAATjMzYnRDb252ZXhDb25jYXZlQ29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAAAEhoAACUKgAASBAAAAAAAAAkKwAAVQAAAMEBAADCAQAATjMzYnRDb252ZXhDb25jYXZlQ29sbGlzaW9uQWxnb3JpdGhtMTdTd2FwcGVkQ3JlYXRlRnVuY0UAAAAASGgAAOgqAABIEAAAAAAAAHQrAABVAAAAwwEAAMQBAABOMjhidENvbXBvdW5kQ29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAAAABIaAAARCsAAEgQAAAAAAAAzCsAAFUAAADFAQAAxgEAAE4zNmJ0Q29tcG91bmRDb21wb3VuZENvbGxpc2lvbkFsZ29yaXRobTEwQ3JlYXRlRnVuY0UAAAAASGgAAJQrAABIEAAAAAAAACAsAABVAAAAxwEAAMgBAABOMjhidENvbXBvdW5kQ29sbGlzaW9uQWxnb3JpdGhtMTdTd2FwcGVkQ3JlYXRlRnVuY0UASGgAAOwrAABIEAAAAAAAAGQsAABVAAAAyQEAAMoBAABOMTZidEVtcHR5QWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAAAABIaAAAQCwAAEgQAAAAAAAAuCwAAFUAAADLAQAAzAEAAE4zMmJ0U3BoZXJlU3BoZXJlQ29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAAAABIaAAAhCwAAEgQAAAAAAAADC0AAFUAAADNAQAAzgEAAE4zNGJ0U3BoZXJlVHJpYW5nbGVDb2xsaXNpb25BbGdvcml0aG0xMENyZWF0ZUZ1bmNFAABIaAAA2CwAAEgQAAAAAAAAWC0AAFUAAADPAQAA0AEAAE4yNmJ0Qm94Qm94Q29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAASGgAACwtAABIEAAAAAAAAKgtAABVAAAA0QEAANIBAABOMzFidENvbnZleFBsYW5lQ29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQBIaAAAeC0AAEgQAAAAAAAAFC4AANMBAADUAQAA1QEAANYBAABpc2xhbmRVbmlvbkZpbmRBbmRRdWlja1NvcnQAcHJvY2Vzc0lzbGFuZHMAMjVidFNpbXVsYXRpb25Jc2xhbmRNYW5hZ2VyAAAgaAAA9y0AAAAAAABcLgAA1wEAANgBAADZAQAA2gEAANsBAAAzMWJ0Q29udmV4UGxhbmVDb2xsaXNpb25BbGdvcml0aG0AAABIaAAAOC4AAMwWAAAAAAAAvC4AANwBAADdAQAA3gEAAN8BAADgAQAAAAAAAOQuAADhAQAA4gEAAOMBAAAzM2J0Q29udmV4Q29uY2F2ZUNvbGxpc2lvbkFsZ29yaXRobQBIaAAAmC4AALQpAAAyNGJ0Q29udmV4VHJpYW5nbGVDYWxsYmFjawAASGgAAMguAACoSgAAAAAAAKQvAACyAAAA5AEAAOUBAABaTjMzYnRDb252ZXhDb25jYXZlQ29sbGlzaW9uQWxnb3JpdGhtMjFjYWxjdWxhdGVUaW1lT2ZJbXBhY3RFUDE3YnRDb2xsaXNpb25PYmplY3RTMV9SSzE2YnREaXNwYXRjaGVySW5mb1AxNmJ0TWFuaWZvbGRSZXN1bHRFMzFMb2NhbFRyaWFuZ2xlU3BoZXJlQ2FzdENhbGxiYWNrAAAASGgAAAQvAACoSgAAAAAAANgvAACmAQAA5gEAAOcBAAAxNmJ0Qm94Qm94RGV0ZWN0b3IAAEhoAADELwAA1CcAAAAAAAAgMAAA6AEAAOkBAADqAQAA6wEAAOwBAAAyNmJ0Qm94Qm94Q29sbGlzaW9uQWxnb3JpdGhtAAAAAEhoAAAAMAAAtCkAAAAAAABcMAAAqwEAAO0BAADuAQAA7wEAAPABAAAxNmJ0TWFuaWZvbGRSZXN1bHQAAEhoAABIMAAAJCkAAAAAAACQMAAAfgEAAPEBAADyAQAAMTVidEdqa0NvbnZleENhc3QAAABIaAAAfDAAACQlAAAAAAAAzDAAAKsBAADzAQAA9AEAAPUBAAD2AQAAMTZidFBvaW50Q29sbGVjdG9yAABIaAAAuDAAACQpAAAAAAAADDEAAH4BAAD3AQAA+AEAADI3YnRDb250aW51b3VzQ29udmV4Q29sbGlzaW9uAAAASGgAAOwwAAAkJQAAAAAAAGQxAACyAAAA+QEAAPoBAAAHAAAAAAAAAJAxAACyAAAA+wEAAPwBAAAHAAAAMjVidFRyaWFuZ2xlUmF5Y2FzdENhbGxiYWNrAEhoAABIMQAAqEoAADI4YnRUcmlhbmdsZUNvbnZleGNhc3RDYWxsYmFjawAASGgAAHAxAACoSgAAAAAAADAzAAD9AQAA/gEAANEAAADSAAAA0wAAANQAAAD/AQAA1gAAAA4BAAAAAgAAAQIAANoAAAACAgAAT3ZlcmZsb3cgaW4gQUFCQiwgb2JqZWN0IHJlbW92ZWQgZnJvbSBzaW11bGF0aW9uAElmIHlvdSBjYW4gcmVwcm9kdWNlIHRoaXMsIHBsZWFzZSBlbWFpbCBidWdzQGNvbnRpbnVvdXNwaHlzaWNzLmNvbQoAUGxlYXNlIGluY2x1ZGUgYWJvdmUgaW5mb3JtYXRpb24sIHlvdXIgUGxhdGZvcm0sIHZlcnNpb24gb2YgT1MuCgBUaGFua3MuCgB1cGRhdGVBYWJicwBjYWxjdWxhdGVPdmVybGFwcGluZ1BhaXJzAHBlcmZvcm1EaXNjcmV0ZUNvbGxpc2lvbkRldGVjdGlvbgBkaXNwYXRjaEFsbENvbGxpc2lvblBhaXJzAGNvbnZleFN3ZWVwQ29tcG91bmQAY29udmV4U3dlZXBUZXN0ADE2YnRDb2xsaXNpb25Xb3JsZAAgaAAAHTMAAAAAAADkMwAAsgAAAAMCAAD6AQAABAIAAFpOMTZidENvbGxpc2lvbldvcmxkMjFyYXlUZXN0U2luZ2xlSW50ZXJuYWxFUksxMWJ0VHJhbnNmb3JtUzJfUEsyNGJ0Q29sbGlzaW9uT2JqZWN0V3JhcHBlclJOU18xN1JheVJlc3VsdENhbGxiYWNrRUUyOUJyaWRnZVRyaWFuZ2xlUmF5Y2FzdENhbGxiYWNrAABIaAAAUDMAAGQxAAAAAAAAoDQAALIAAAAFAgAA+gEAAAYCAABaTjE2YnRDb2xsaXNpb25Xb3JsZDIxcmF5VGVzdFNpbmdsZUludGVybmFsRVJLMTFidFRyYW5zZm9ybVMyX1BLMjRidENvbGxpc2lvbk9iamVjdFdyYXBwZXJSTlNfMTdSYXlSZXN1bHRDYWxsYmFja0VFMjlCcmlkZ2VUcmlhbmdsZVJheWNhc3RDYWxsYmFja18wAAAAAEhoAAAINAAAZDEAAAAAAABQNQAAZwAAAAcCAABpAAAACAIAAGsAAABsAAAAbQAAAFpOMTZidENvbGxpc2lvbldvcmxkMjFyYXlUZXN0U2luZ2xlSW50ZXJuYWxFUksxMWJ0VHJhbnNmb3JtUzJfUEsyNGJ0Q29sbGlzaW9uT2JqZWN0V3JhcHBlclJOU18xN1JheVJlc3VsdENhbGxiYWNrRUU5UmF5VGVzdGVyAAAASGgAANA0AACcEwAAAAAAAPw1AAAMAAAACQIAAAoCAAALAgAAWk4xNmJ0Q29sbGlzaW9uV29ybGQyMXJheVRlc3RTaW5nbGVJbnRlcm5hbEVSSzExYnRUcmFuc2Zvcm1TMl9QSzI0YnRDb2xsaXNpb25PYmplY3RXcmFwcGVyUk5TXzE3UmF5UmVzdWx0Q2FsbGJhY2tFRTE1TG9jYWxJbmZvQWRkZXIyAAAAAEhoAAB0NQAAGAUAAAAAAADQNgAAsgAAAAwCAAD8AQAADQIAAFpOMTZidENvbGxpc2lvbldvcmxkMjVvYmplY3RRdWVyeVNpbmdsZUludGVybmFsRVBLMTNidENvbnZleFNoYXBlUksxMWJ0VHJhbnNmb3JtUzVfUEsyNGJ0Q29sbGlzaW9uT2JqZWN0V3JhcHBlclJOU18yMENvbnZleFJlc3VsdENhbGxiYWNrRWZFMzJCcmlkZ2VUcmlhbmdsZUNvbnZleGNhc3RDYWxsYmFjawAASGgAACA2AACQMQAAAAAAAKg3AACyAAAADgIAAPwBAAAPAgAAWk4xNmJ0Q29sbGlzaW9uV29ybGQyNW9iamVjdFF1ZXJ5U2luZ2xlSW50ZXJuYWxFUEsxM2J0Q29udmV4U2hhcGVSSzExYnRUcmFuc2Zvcm1TNV9QSzI0YnRDb2xsaXNpb25PYmplY3RXcmFwcGVyUk5TXzIwQ29udmV4UmVzdWx0Q2FsbGJhY2tFZkUzMkJyaWRnZVRyaWFuZ2xlQ29udmV4Y2FzdENhbGxiYWNrXzAAAAAASGgAAPQ2AACQMQAAAAAAAGw4AAAFAAAAEAIAABECAAASAgAAWk4xNmJ0Q29sbGlzaW9uV29ybGQyNW9iamVjdFF1ZXJ5U2luZ2xlSW50ZXJuYWxFUEsxM2J0Q29udmV4U2hhcGVSSzExYnRUcmFuc2Zvcm1TNV9QSzI0YnRDb2xsaXNpb25PYmplY3RXcmFwcGVyUk5TXzIwQ29udmV4UmVzdWx0Q2FsbGJhY2tFZkUxNExvY2FsSW5mb0FkZGVyAAAAAEhoAADMNwAA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"; +var draco_wasm_default = "dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGspe3ZhciBuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG48ay5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6a1tuKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oayl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChrKX19OyRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGspe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmtbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwoayk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGspfTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTsKJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihrKXtrPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsaywib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIG49MDtuPGsubGVuZ3RoOysrbil7dmFyIGw9a1tuXTtpZihsJiZsLk1hdGg9PU1hdGgpcmV0dXJuIGx9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOwokanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihrLG4sbCl7aWYoaz09QXJyYXkucHJvdG90eXBlfHxrPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBrO2tbbl09bC52YWx1ZTtyZXR1cm4ga307JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTskanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjsKdmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGssbil7dmFyIGw9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbbl07aWYobnVsbD09bClyZXR1cm4ga1tuXTtsPWtbbF07cmV0dXJuIHZvaWQgMCE9PWw/bDprW25dfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGssbixsLHApe24mJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChrLG4sbCxwKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChrLG4sbCxwKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihrLG4sbCxwKXtsPSRqc2NvbXAuZ2xvYmFsO2s9ay5zcGxpdCgiLiIpO2ZvcihwPTA7cDxrLmxlbmd0aC0xO3ArKyl7dmFyIGg9a1twXTtpZighKGggaW4gbCkpcmV0dXJuO2w9bFtoXX1rPWtbay5sZW5ndGgtMV07cD1sW2tdO249bihwKTtuIT1wJiZudWxsIT1uJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGwsayx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm59KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihrLG4sbCxwKXt2YXIgaD1rLnNwbGl0KCIuIik7az0xPT09aC5sZW5ndGg7cD1oWzBdO3A9IWsmJnAgaW4gJGpzY29tcC5wb2x5ZmlsbHM/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBBPTA7QTxoLmxlbmd0aC0xO0ErKyl7dmFyIGY9aFtBXTtpZighKGYgaW4gcCkpcmV0dXJuO3A9cFtmXX1oPWhbaC5sZW5ndGgtMV07bD0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09bD9wW2hdOm51bGw7bj1uKGwpO251bGwhPW4mJihrPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsaCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm59KTpuIT09bCYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdJiYobD0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woaCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrbCsiJCIraCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShwLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bn0pKSl9OwokanNjb21wLnBvbHlmaWxsKCJQcm9taXNlIixmdW5jdGlvbihrKXtmdW5jdGlvbiBuKCl7dGhpcy5iYXRjaF89bnVsbH1mdW5jdGlvbiBsKGYpe3JldHVybiBmIGluc3RhbmNlb2YgaD9mOm5ldyBoKGZ1bmN0aW9uKHEsdil7cShmKX0pfWlmKGsmJighKCRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRXx8JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTiYmInVuZGVmaW5lZCI9PT10eXBlb2YgJGpzY29tcC5nbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KXx8ISRqc2NvbXAuZ2xvYmFsLlByb21pc2V8fC0xPT09JGpzY29tcC5nbG9iYWwuUHJvbWlzZS50b1N0cmluZygpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGs7bi5wcm90b3R5cGUuYXN5bmNFeGVjdXRlPWZ1bmN0aW9uKGYpe2lmKG51bGw9PXRoaXMuYmF0Y2hfKXt0aGlzLmJhdGNoXz1bXTt2YXIgcT10aGlzO3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXtxLmV4ZWN1dGVCYXRjaF8oKX0pfXRoaXMuYmF0Y2hfLnB1c2goZil9Owp2YXIgcD0kanNjb21wLmdsb2JhbC5zZXRUaW1lb3V0O24ucHJvdG90eXBlLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uPWZ1bmN0aW9uKGYpe3AoZiwwKX07bi5wcm90b3R5cGUuZXhlY3V0ZUJhdGNoXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5iYXRjaF8mJnRoaXMuYmF0Y2hfLmxlbmd0aDspe3ZhciBmPXRoaXMuYmF0Y2hfO3RoaXMuYmF0Y2hfPVtdO2Zvcih2YXIgcT0wO3E8Zi5sZW5ndGg7KytxKXt2YXIgdj1mW3FdO2ZbcV09bnVsbDt0cnl7digpfWNhdGNoKHope3RoaXMuYXN5bmNUaHJvd18oeil9fX10aGlzLmJhdGNoXz1udWxsfTtuLnByb3RvdHlwZS5hc3luY1Rocm93Xz1mdW5jdGlvbihmKXt0aGlzLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uKGZ1bmN0aW9uKCl7dGhyb3cgZjt9KX07dmFyIGg9ZnVuY3Rpb24oZil7dGhpcy5zdGF0ZV89MDt0aGlzLnJlc3VsdF89dm9pZCAwO3RoaXMub25TZXR0bGVkQ2FsbGJhY2tzXz1bXTt0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF89ITE7dmFyIHE9dGhpcy5jcmVhdGVSZXNvbHZlQW5kUmVqZWN0XygpOwp0cnl7ZihxLnJlc29sdmUscS5yZWplY3QpfWNhdGNoKHYpe3EucmVqZWN0KHYpfX07aC5wcm90b3R5cGUuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKHope3JldHVybiBmdW5jdGlvbihPKXt2fHwodj0hMCx6LmNhbGwocSxPKSl9fXZhciBxPXRoaXMsdj0hMTtyZXR1cm57cmVzb2x2ZTpmKHRoaXMucmVzb2x2ZVRvXykscmVqZWN0OmYodGhpcy5yZWplY3RfKX19O2gucHJvdG90eXBlLnJlc29sdmVUb189ZnVuY3Rpb24oZil7aWYoZj09PXRoaXMpdGhpcy5yZWplY3RfKG5ldyBUeXBlRXJyb3IoIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk7ZWxzZSBpZihmIGluc3RhbmNlb2YgaCl0aGlzLnNldHRsZVNhbWVBc1Byb21pc2VfKGYpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGYpe2Nhc2UgIm9iamVjdCI6dmFyIHE9bnVsbCE9ZjticmVhayBhO2Nhc2UgImZ1bmN0aW9uIjpxPSEwO2JyZWFrIGE7ZGVmYXVsdDpxPSExfXE/dGhpcy5yZXNvbHZlVG9Ob25Qcm9taXNlT2JqXyhmKToKdGhpcy5mdWxmaWxsXyhmKX19O2gucHJvdG90eXBlLnJlc29sdmVUb05vblByb21pc2VPYmpfPWZ1bmN0aW9uKGYpe3ZhciBxPXZvaWQgMDt0cnl7cT1mLnRoZW59Y2F0Y2godil7dGhpcy5yZWplY3RfKHYpO3JldHVybn0iZnVuY3Rpb24iPT10eXBlb2YgcT90aGlzLnNldHRsZVNhbWVBc1RoZW5hYmxlXyhxLGYpOnRoaXMuZnVsZmlsbF8oZil9O2gucHJvdG90eXBlLnJlamVjdF89ZnVuY3Rpb24oZil7dGhpcy5zZXR0bGVfKDIsZil9O2gucHJvdG90eXBlLmZ1bGZpbGxfPWZ1bmN0aW9uKGYpe3RoaXMuc2V0dGxlXygxLGYpfTtoLnByb3RvdHlwZS5zZXR0bGVfPWZ1bmN0aW9uKGYscSl7aWYoMCE9dGhpcy5zdGF0ZV8pdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIitmKyIsICIrcSsiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuc3RhdGVfKTt0aGlzLnN0YXRlXz1mO3RoaXMucmVzdWx0Xz1xOzI9PT10aGlzLnN0YXRlXyYmdGhpcy5zY2hlZHVsZVVuaGFuZGxlZFJlamVjdGlvbkNoZWNrXygpOwp0aGlzLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfKCl9O2gucHJvdG90eXBlLnNjaGVkdWxlVW5oYW5kbGVkUmVqZWN0aW9uQ2hlY2tfPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcztwKGZ1bmN0aW9uKCl7aWYoZi5ub3RpZnlVbmhhbmRsZWRSZWplY3Rpb25fKCkpe3ZhciBxPSRqc2NvbXAuZ2xvYmFsLmNvbnNvbGU7InVuZGVmaW5lZCIhPT10eXBlb2YgcSYmcS5lcnJvcihmLnJlc3VsdF8pfX0sMSl9O2gucHJvdG90eXBlLm5vdGlmeVVuaGFuZGxlZFJlamVjdGlvbl89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF8pcmV0dXJuITE7dmFyIGY9JGpzY29tcC5nbG9iYWwuQ3VzdG9tRXZlbnQscT0kanNjb21wLmdsb2JhbC5FdmVudCx2PSRqc2NvbXAuZ2xvYmFsLmRpc3BhdGNoRXZlbnQ7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgdilyZXR1cm4hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGY/Zj1uZXcgZigidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOgoiZnVuY3Rpb24iPT09dHlwZW9mIHE/Zj1uZXcgcSgidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOihmPSRqc2NvbXAuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpLGYuaW5pdEN1c3RvbUV2ZW50KCJ1bmhhbmRsZWRyZWplY3Rpb24iLCExLCEwLGYpKTtmLnByb21pc2U9dGhpcztmLnJlYXNvbj10aGlzLnJlc3VsdF87cmV0dXJuIHYoZil9O2gucHJvdG90eXBlLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5vblNldHRsZWRDYWxsYmFja3NfKXtmb3IodmFyIGY9MDtmPHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5sZW5ndGg7KytmKUEuYXN5bmNFeGVjdXRlKHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzX1tmXSk7dGhpcy5vblNldHRsZWRDYWxsYmFja3NfPW51bGx9fTt2YXIgQT1uZXcgbjtoLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNQcm9taXNlXz1mdW5jdGlvbihmKXt2YXIgcT10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7CmYuY2FsbFdoZW5TZXR0bGVkXyhxLnJlc29sdmUscS5yZWplY3QpfTtoLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNUaGVuYWJsZV89ZnVuY3Rpb24oZixxKXt2YXIgdj10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7dHJ5e2YuY2FsbChxLHYucmVzb2x2ZSx2LnJlamVjdCl9Y2F0Y2goeil7di5yZWplY3Qoeil9fTtoLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGYscSl7ZnVuY3Rpb24gdih0LHgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKEQpe3RyeXt6KHQoRCkpfWNhdGNoKFIpe08oUil9fTp4fXZhciB6LE8sYmE9bmV3IGgoZnVuY3Rpb24odCx4KXt6PXQ7Tz14fSk7dGhpcy5jYWxsV2hlblNldHRsZWRfKHYoZix6KSx2KHEsTykpO3JldHVybiBiYX07aC5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZil9O2gucHJvdG90eXBlLmNhbGxXaGVuU2V0dGxlZF89ZnVuY3Rpb24oZixxKXtmdW5jdGlvbiB2KCl7c3dpdGNoKHouc3RhdGVfKXtjYXNlIDE6Zih6LnJlc3VsdF8pOwpicmVhaztjYXNlIDI6cSh6LnJlc3VsdF8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuZXhwZWN0ZWQgc3RhdGU6ICIrei5zdGF0ZV8pO319dmFyIHo9dGhpcztudWxsPT10aGlzLm9uU2V0dGxlZENhbGxiYWNrc18/QS5hc3luY0V4ZWN1dGUodik6dGhpcy5vblNldHRsZWRDYWxsYmFja3NfLnB1c2godik7dGhpcy5pc1JlamVjdGlvbkhhbmRsZWRfPSEwfTtoLnJlc29sdmU9bDtoLnJlamVjdD1mdW5jdGlvbihmKXtyZXR1cm4gbmV3IGgoZnVuY3Rpb24ocSx2KXt2KGYpfSl9O2gucmFjZT1mdW5jdGlvbihmKXtyZXR1cm4gbmV3IGgoZnVuY3Rpb24ocSx2KXtmb3IodmFyIHo9JGpzY29tcC5tYWtlSXRlcmF0b3IoZiksTz16Lm5leHQoKTshTy5kb25lO089ei5uZXh0KCkpbChPLnZhbHVlKS5jYWxsV2hlblNldHRsZWRfKHEsdil9KX07aC5hbGw9ZnVuY3Rpb24oZil7dmFyIHE9JGpzY29tcC5tYWtlSXRlcmF0b3IoZiksdj1xLm5leHQoKTtyZXR1cm4gdi5kb25lP2woW10pOm5ldyBoKGZ1bmN0aW9uKHosCk8pe2Z1bmN0aW9uIGJhKEQpe3JldHVybiBmdW5jdGlvbihSKXt0W0RdPVI7eC0tOzA9PXgmJnoodCl9fXZhciB0PVtdLHg9MDtkbyB0LnB1c2godm9pZCAwKSx4KyssbCh2LnZhbHVlKS5jYWxsV2hlblNldHRsZWRfKGJhKHQubGVuZ3RoLTEpLE8pLHY9cS5uZXh0KCk7d2hpbGUoIXYuZG9uZSl9KX07cmV0dXJuIGh9LCJlczYiLCJlczMiKTskanNjb21wLm93bnM9ZnVuY3Rpb24oayxuKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGssbil9OyRqc2NvbXAuYXNzaWduPSRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUyYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihrLG4pe2Zvcih2YXIgbD0xO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspe3ZhciBwPWFyZ3VtZW50c1tsXTtpZihwKWZvcih2YXIgaCBpbiBwKSRqc2NvbXAub3ducyhwLGgpJiYoa1toXT1wW2hdKX1yZXR1cm4ga307CiRqc2NvbXAucG9seWZpbGwoIk9iamVjdC5hc3NpZ24iLGZ1bmN0aW9uKGspe3JldHVybiBrfHwkanNjb21wLmFzc2lnbn0sImVzNiIsImVzMyIpOyRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzPWZ1bmN0aW9uKGssbixsKXtpZihudWxsPT1rKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSAndGhpcycgdmFsdWUgZm9yIFN0cmluZy5wcm90b3R5cGUuIitsKyIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTtpZihuIGluc3RhbmNlb2YgUmVnRXhwKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuIitsKyIgbXVzdCBub3QgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24iKTtyZXR1cm4gaysiIn07CiRqc2NvbXAucG9seWZpbGwoIlN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCIsZnVuY3Rpb24oayl7cmV0dXJuIGs/azpmdW5jdGlvbihuLGwpe3ZhciBwPSRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzKHRoaXMsbiwic3RhcnRzV2l0aCIpO24rPSIiO3ZhciBoPXAubGVuZ3RoLEE9bi5sZW5ndGg7bD1NYXRoLm1heCgwLE1hdGgubWluKGx8MCxwLmxlbmd0aCkpO2Zvcih2YXIgZj0wO2Y8QSYmbDxoOylpZihwW2wrK10hPW5bZisrXSlyZXR1cm4hMTtyZXR1cm4gZj49QX19LCJlczYiLCJlczMiKTsKJGpzY29tcC5wb2x5ZmlsbCgiQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGZ1bmN0aW9uKGspe2Z1bmN0aW9uIG4obCl7bD1OdW1iZXIobCk7cmV0dXJuIEluZmluaXR5PT09bHx8LUluZmluaXR5PT09bD9sOmx8MH1yZXR1cm4gaz9rOmZ1bmN0aW9uKGwscCxoKXt2YXIgQT10aGlzLmxlbmd0aDtsPW4obCk7cD1uKHApO2g9dm9pZCAwPT09aD9BOm4oaCk7bD0wPmw/TWF0aC5tYXgoQStsLDApOk1hdGgubWluKGwsQSk7cD0wPnA/TWF0aC5tYXgoQStwLDApOk1hdGgubWluKHAsQSk7aD0wPmg/TWF0aC5tYXgoQStoLDApOk1hdGgubWluKGgsQSk7aWYobDxwKWZvcig7cDxoOylwIGluIHRoaXM/dGhpc1tsKytdPXRoaXNbcCsrXTooZGVsZXRlIHRoaXNbbCsrXSxwKyspO2Vsc2UgZm9yKGg9TWF0aC5taW4oaCxBK3AtbCksbCs9aC1wO2g+cDspLS1oIGluIHRoaXM/dGhpc1stLWxdPXRoaXNbaF06ZGVsZXRlIHRoaXNbLS1sXTtyZXR1cm4gdGhpc319LCJlczYiLCJlczMiKTsKJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbj1mdW5jdGlvbihrKXtyZXR1cm4gaz9rOkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGlufTskanNjb21wLnBvbHlmaWxsKCJJbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIlVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIlVpbnQ4Q2xhbXBlZEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIiwkanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTskanNjb21wLnBvbHlmaWxsKCJJbnQxNkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIiwkanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTsKJGpzY29tcC5wb2x5ZmlsbCgiVWludDE2QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIkludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIlVpbnQzMkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIiwkanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTskanNjb21wLnBvbHlmaWxsKCJGbG9hdDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIkZsb2F0NjRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7CnZhciBEcmFjb0RlY29kZXJNb2R1bGU9ZnVuY3Rpb24oKXt2YXIgaz0idW5kZWZpbmVkIiE9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzp2b2lkIDA7InVuZGVmaW5lZCIhPT10eXBlb2YgX19maWxlbmFtZSYmKGs9a3x8X19maWxlbmFtZSk7cmV0dXJuIGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGEubG9jYXRlRmlsZT9hLmxvY2F0ZUZpbGUoZSxVKTpVK2V9ZnVuY3Rpb24gcChlLGIsYyl7dmFyIGQ9YitjO2ZvcihjPWI7ZVtjXSYmIShjPj1kKTspKytjO2lmKDE2PGMtYiYmZS5idWZmZXImJnZhKXJldHVybiB2YS5kZWNvZGUoZS5zdWJhcnJheShiLGMpKTtmb3IoZD0iIjtiPGM7KXt2YXIgZz1lW2IrK107aWYoZyYxMjgpe3ZhciB1PWVbYisrXSY2MztpZigxOTI9PShnJjIyNCkpZCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoZyYzMSk8PDZ8dSk7ZWxzZXt2YXIgWD1lW2IrK10mNjM7Zz0yMjQ9PQooZyYyNDApPyhnJjE1KTw8MTJ8dTw8NnxYOihnJjcpPDwxOHx1PDwxMnxYPDw2fGVbYisrXSY2Mzs2NTUzNj5nP2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk6KGctPTY1NTM2LGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Zz4+MTAsNTYzMjB8ZyYxMDIzKSl9fWVsc2UgZCs9U3RyaW5nLmZyb21DaGFyQ29kZShnKX1yZXR1cm4gZH1mdW5jdGlvbiBoKGUsYil7cmV0dXJuIGU/cChlYSxlLGIpOiIifWZ1bmN0aW9uIEEoKXt2YXIgZT1qYS5idWZmZXI7YS5IRUFQOD1ZPW5ldyBJbnQ4QXJyYXkoZSk7YS5IRUFQMTY9bmV3IEludDE2QXJyYXkoZSk7YS5IRUFQMzI9Y2E9bmV3IEludDMyQXJyYXkoZSk7YS5IRUFQVTg9ZWE9bmV3IFVpbnQ4QXJyYXkoZSk7YS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShlKTthLkhFQVBVMzI9Vj1uZXcgVWludDMyQXJyYXkoZSk7YS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSk7YS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9ZnVuY3Rpb24gZihlKXtpZihhLm9uQWJvcnQpYS5vbkFib3J0KGUpOwplPSJBYm9ydGVkKCIrZSsiKSI7ZGEoZSk7d2E9ITA7ZT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUrIi4gQnVpbGQgd2l0aCAtc0FTU0VSVElPTlMgZm9yIG1vcmUgaW5mby4iKTtrYShlKTt0aHJvdyBlO31mdW5jdGlvbiBxKGUpe3RyeXtpZihlPT1QJiZmYSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZmEpO2lmKG1hKXJldHVybiBtYShlKTt0aHJvdyJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCI7fWNhdGNoKGIpe2YoYil9fWZ1bmN0aW9uIHYoKXtpZighZmEmJih4YXx8aGEpKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZmV0Y2gmJiFQLnN0YXJ0c1dpdGgoImZpbGU6Ly8iKSlyZXR1cm4gZmV0Y2goUCx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oZSl7aWYoIWUub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitQKyInIjtyZXR1cm4gZS5hcnJheUJ1ZmZlcigpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gcShQKX0pOwppZihuYSlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSxiKXtuYShQLGZ1bmN0aW9uKGMpe2UobmV3IFVpbnQ4QXJyYXkoYykpfSxiKX0pfXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHEoUCl9KX1mdW5jdGlvbiB6KGUpe2Zvcig7MDxlLmxlbmd0aDspZS5zaGlmdCgpKGEpfWZ1bmN0aW9uIE8oZSl7dGhpcy5leGNQdHI9ZTt0aGlzLnB0cj1lLTI0O3RoaXMuc2V0X3R5cGU9ZnVuY3Rpb24oYil7Vlt0aGlzLnB0cis0Pj4yXT1ifTt0aGlzLmdldF90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIFZbdGhpcy5wdHIrND4+Ml19O3RoaXMuc2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oYil7Vlt0aGlzLnB0cis4Pj4yXT1ifTt0aGlzLmdldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIFZbdGhpcy5wdHIrOD4+Ml19O3RoaXMuc2V0X3JlZmNvdW50PWZ1bmN0aW9uKGIpe2NhW3RoaXMucHRyPj4yXT1ifTt0aGlzLnNldF9jYXVnaHQ9ZnVuY3Rpb24oYil7WVt0aGlzLnB0cisKMTI+PjBdPWI/MTowfTt0aGlzLmdldF9jYXVnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9WVt0aGlzLnB0cisxMj4+MF19O3RoaXMuc2V0X3JldGhyb3duPWZ1bmN0aW9uKGIpe1lbdGhpcy5wdHIrMTM+PjBdPWI/MTowfTt0aGlzLmdldF9yZXRocm93bj1mdW5jdGlvbigpe3JldHVybiAwIT1ZW3RoaXMucHRyKzEzPj4wXX07dGhpcy5pbml0PWZ1bmN0aW9uKGIsYyl7dGhpcy5zZXRfYWRqdXN0ZWRfcHRyKDApO3RoaXMuc2V0X3R5cGUoYik7dGhpcy5zZXRfZGVzdHJ1Y3RvcihjKTt0aGlzLnNldF9yZWZjb3VudCgwKTt0aGlzLnNldF9jYXVnaHQoITEpO3RoaXMuc2V0X3JldGhyb3duKCExKX07dGhpcy5hZGRfcmVmPWZ1bmN0aW9uKCl7Y2FbdGhpcy5wdHI+PjJdKz0xfTt0aGlzLnJlbGVhc2VfcmVmPWZ1bmN0aW9uKCl7dmFyIGI9Y2FbdGhpcy5wdHI+PjJdO2NhW3RoaXMucHRyPj4yXT1iLTE7cmV0dXJuIDE9PT1ifTt0aGlzLnNldF9hZGp1c3RlZF9wdHI9ZnVuY3Rpb24oYil7Vlt0aGlzLnB0cisKMTY+PjJdPWJ9O3RoaXMuZ2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbigpe3JldHVybiBWW3RoaXMucHRyKzE2Pj4yXX07dGhpcy5nZXRfZXhjZXB0aW9uX3B0cj1mdW5jdGlvbigpe2lmKHlhKHRoaXMuZ2V0X3R5cGUoKSkpcmV0dXJuIFZbdGhpcy5leGNQdHI+PjJdO3ZhciBiPXRoaXMuZ2V0X2FkanVzdGVkX3B0cigpO3JldHVybiAwIT09Yj9iOnRoaXMuZXhjUHRyfX1mdW5jdGlvbiBiYSgpe2Z1bmN0aW9uIGUoKXtpZighbGEmJihsYT0hMCxhLmNhbGxlZFJ1bj0hMCwhd2EpKXt6YT0hMDt6KG9hKTtBYShhKTtpZihhLm9uUnVudGltZUluaXRpYWxpemVkKWEub25SdW50aW1lSW5pdGlhbGl6ZWQoKTtpZihhLnBvc3RSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2EucG9zdFJ1bi5sZW5ndGg7KUJhLnVuc2hpZnQoYS5wb3N0UnVuLnNoaWZ0KCkpO3ooQmEpfX1pZighKDA8YWEpKXtpZihhLnByZVJ1bilmb3IoImZ1bmN0aW9uIj09CnR5cGVvZiBhLnByZVJ1biYmKGEucHJlUnVuPVthLnByZVJ1bl0pO2EucHJlUnVuLmxlbmd0aDspQ2EudW5zaGlmdChhLnByZVJ1bi5zaGlmdCgpKTt6KENhKTswPGFhfHwoYS5zZXRTdGF0dXM/KGEuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnNldFN0YXR1cygiIil9LDEpO2UoKX0sMSkpOmUoKSl9fWZ1bmN0aW9uIHQoKXt9ZnVuY3Rpb24geChlKXtyZXR1cm4oZXx8dCkuX19jYWNoZV9ffWZ1bmN0aW9uIEQoZSxiKXt2YXIgYz14KGIpLGQ9Y1tlXTtpZihkKXJldHVybiBkO2Q9T2JqZWN0LmNyZWF0ZSgoYnx8dCkucHJvdG90eXBlKTtkLnB0cj1lO3JldHVybiBjW2VdPWR9ZnVuY3Rpb24gUihlKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXtmb3IodmFyIGI9MCxjPTA7YzxlLmxlbmd0aDsrK2Mpe3ZhciBkPWUuY2hhckNvZGVBdChjKTsxMjc+PWQ/YisrOjIwNDc+PWQ/Yis9Mjo1NTI5Njw9ZCYmNTczNDM+PQpkPyhiKz00LCsrYyk6Yis9M31iPUFycmF5KGIrMSk7Yz0wO2Q9Yi5sZW5ndGg7aWYoMDxkKXtkPWMrZC0xO2Zvcih2YXIgZz0wO2c8ZS5sZW5ndGg7KytnKXt2YXIgdT1lLmNoYXJDb2RlQXQoZyk7aWYoNTUyOTY8PXUmJjU3MzQzPj11KXt2YXIgWD1lLmNoYXJDb2RlQXQoKytnKTt1PTY1NTM2KygodSYxMDIzKTw8MTApfFgmMTAyM31pZigxMjc+PXUpe2lmKGM+PWQpYnJlYWs7YltjKytdPXV9ZWxzZXtpZigyMDQ3Pj11KXtpZihjKzE+PWQpYnJlYWs7YltjKytdPTE5Mnx1Pj42fWVsc2V7aWYoNjU1MzU+PXUpe2lmKGMrMj49ZClicmVhaztiW2MrK109MjI0fHU+PjEyfWVsc2V7aWYoYyszPj1kKWJyZWFrO2JbYysrXT0yNDB8dT4+MTg7YltjKytdPTEyOHx1Pj4xMiY2M31iW2MrK109MTI4fHU+PjYmNjN9YltjKytdPTEyOHx1JjYzfX1iW2NdPTB9ZT1yLmFsbG9jKGIsWSk7ci5jb3B5KGIsWSxlKTtyZXR1cm4gZX1yZXR1cm4gZX1mdW5jdGlvbiBwYShlKXtpZigib2JqZWN0Ij09PXR5cGVvZiBlKXt2YXIgYj0Kci5hbGxvYyhlLFkpO3IuY29weShlLFksYik7cmV0dXJuIGJ9cmV0dXJuIGV9ZnVuY3Rpb24gWigpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBWb2lkUHRyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiO31mdW5jdGlvbiBTKCl7dGhpcy5wdHI9RGEoKTt4KFMpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFEoKXt0aGlzLnB0cj1FYSgpO3goUSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gVygpe3RoaXMucHRyPUZhKCk7eChXKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiB3KCl7dGhpcy5wdHI9R2EoKTt4KHcpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEMoKXt0aGlzLnB0cj1IYSgpO3goQylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gRigpe3RoaXMucHRyPUlhKCk7eChGKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBHKCl7dGhpcy5wdHI9SmEoKTt4KEcpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEUoKXt0aGlzLnB0cj1LYSgpO3goRSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gVCgpe3RoaXMucHRyPQpMYSgpO3goVClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gQigpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBTdGF0dXMsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fWZ1bmN0aW9uIEgoKXt0aGlzLnB0cj1NYSgpO3goSClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gSSgpe3RoaXMucHRyPU5hKCk7eChJKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBKKCl7dGhpcy5wdHI9T2EoKTt4KEopW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEsoKXt0aGlzLnB0cj1QYSgpO3goSylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gTCgpe3RoaXMucHRyPVFhKCk7eChMKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBNKCl7dGhpcy5wdHI9UmEoKTt4KE0pW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIE4oKXt0aGlzLnB0cj1TYSgpO3goTilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24geSgpe3RoaXMucHRyPVRhKCk7eCh5KVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBtKCl7dGhpcy5wdHI9VWEoKTt4KG0pW3RoaXMucHRyXT0KdGhpc31uPXZvaWQgMD09PW4/e306bjt2YXIgYT0idW5kZWZpbmVkIiE9dHlwZW9mIG4/bjp7fSxBYSxrYTthLnJlYWR5PW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsYil7QWE9ZTtrYT1ifSk7dmFyIFZhPSExLFdhPSExO2Eub25SdW50aW1lSW5pdGlhbGl6ZWQ9ZnVuY3Rpb24oKXtWYT0hMDtpZihXYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLm9uTW9kdWxlTG9hZGVkKWEub25Nb2R1bGVMb2FkZWQoYSl9O2Eub25Nb2R1bGVQYXJzZWQ9ZnVuY3Rpb24oKXtXYT0hMDtpZihWYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLm9uTW9kdWxlTG9hZGVkKWEub25Nb2R1bGVMb2FkZWQoYSl9O2EuaXNWZXJzaW9uU3VwcG9ydGVkPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciIT09dHlwZW9mIGUpcmV0dXJuITE7ZT1lLnNwbGl0KCIuIik7cmV0dXJuIDI+ZS5sZW5ndGh8fDM8ZS5sZW5ndGg/ITE6MT09ZVswXSYmMDw9ZVsxXSYmNT49ZVsxXT8hMDowIT1lWzBdfHwxMDxlWzFdPyExOiEwfTt2YXIgWGE9Ck9iamVjdC5hc3NpZ24oe30sYSkseGE9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3csaGE9ImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMsWWE9Im9iamVjdCI9PXR5cGVvZiBwcm9jZXNzJiYib2JqZWN0Ij09dHlwZW9mIHByb2Nlc3MudmVyc2lvbnMmJiJzdHJpbmciPT10eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLFU9IiI7aWYoWWEpe3ZhciBaYT1yZXF1aXJlKCJmcyIpLHFhPXJlcXVpcmUoInBhdGgiKTtVPWhhP3FhLmRpcm5hbWUoVSkrIi8iOl9fZGlybmFtZSsiLyI7dmFyICRhPWZ1bmN0aW9uKGUsYil7ZT1lLnN0YXJ0c1dpdGgoImZpbGU6Ly8iKT9uZXcgVVJMKGUpOnFhLm5vcm1hbGl6ZShlKTtyZXR1cm4gWmEucmVhZEZpbGVTeW5jKGUsYj92b2lkIDA6InV0ZjgiKX07dmFyIG1hPWZ1bmN0aW9uKGUpe2U9JGEoZSwhMCk7ZS5idWZmZXJ8fChlPW5ldyBVaW50OEFycmF5KGUpKTtyZXR1cm4gZX07dmFyIG5hPWZ1bmN0aW9uKGUsYixjKXtlPWUuc3RhcnRzV2l0aCgiZmlsZTovLyIpPwpuZXcgVVJMKGUpOnFhLm5vcm1hbGl6ZShlKTtaYS5yZWFkRmlsZShlLGZ1bmN0aW9uKGQsZyl7ZD9jKGQpOmIoZy5idWZmZXIpfSl9OzE8cHJvY2Vzcy5hcmd2Lmxlbmd0aCYmcHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcL2csIi8iKTtwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7YS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIn19ZWxzZSBpZih4YXx8aGEpaGE/VT1zZWxmLmxvY2F0aW9uLmhyZWY6InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmKFU9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLGsmJihVPWspLFU9MCE9PVUuaW5kZXhPZigiYmxvYjoiKT9VLnN1YnN0cigwLFUucmVwbGFjZSgvWz8jXS4qLywiIikubGFzdEluZGV4T2YoIi8iKSsxKToiIiwkYT1mdW5jdGlvbihlKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJHRVQiLGUsITEpO2Iuc2VuZChudWxsKTsKcmV0dXJuIGIucmVzcG9uc2VUZXh0fSxoYSYmKG1hPWZ1bmN0aW9uKGUpe3ZhciBiPW5ldyBYTUxIdHRwUmVxdWVzdDtiLm9wZW4oIkdFVCIsZSwhMSk7Yi5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjtiLnNlbmQobnVsbCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGIucmVzcG9uc2UpfSksbmE9ZnVuY3Rpb24oZSxiLGMpe3ZhciBkPW5ldyBYTUxIdHRwUmVxdWVzdDtkLm9wZW4oIkdFVCIsZSwhMCk7ZC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjtkLm9ubG9hZD1mdW5jdGlvbigpezIwMD09ZC5zdGF0dXN8fDA9PWQuc3RhdHVzJiZkLnJlc3BvbnNlP2IoZC5yZXNwb25zZSk6YygpfTtkLm9uZXJyb3I9YztkLnNlbmQobnVsbCl9O3ZhciB1ZD1hLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLGRhPWEucHJpbnRFcnJ8fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oYSxYYSk7WGE9bnVsbDt2YXIgZmE7YS53YXNtQmluYXJ5JiYoZmE9YS53YXNtQmluYXJ5KTsKIm9iamVjdCIhPXR5cGVvZiBXZWJBc3NlbWJseSYmZigibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBqYSx3YT0hMSx2YT0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnZvaWQgMCxZLGVhLGNhLFYsQ2E9W10sb2E9W10sQmE9W10semE9ITEsYWE9MCxyYT1udWxsLGlhPW51bGw7dmFyIFA9ImRyYWNvX2RlY29kZXIud2FzbSI7UC5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIil8fChQPWwoUCkpO3ZhciB2ZD0wLHdkPVtudWxsLFtdLFtdXSx4ZD17YjpmdW5jdGlvbihlLGIsYyl7KG5ldyBPKGUpKS5pbml0KGIsYyk7dmQrKzt0aHJvdyBlO30sYTpmdW5jdGlvbigpe2YoIiIpfSxnOmZ1bmN0aW9uKGUsYixjKXtlYS5jb3B5V2l0aGluKGUsYixiK2MpfSxlOmZ1bmN0aW9uKGUpe3ZhciBiPWVhLmxlbmd0aDtlPj4+PTA7aWYoMjE0NzQ4MzY0ODxlKXJldHVybiExO2Zvcih2YXIgYz0KMTs0Pj1jO2MqPTIpe3ZhciBkPWIqKDErLjIvYyk7ZD1NYXRoLm1pbihkLGUrMTAwNjYzMjk2KTt2YXIgZz1NYXRoO2Q9TWF0aC5tYXgoZSxkKTtnPWcubWluLmNhbGwoZywyMTQ3NDgzNjQ4LGQrKDY1NTM2LWQlNjU1MzYpJTY1NTM2KTthOntkPWphLmJ1ZmZlcjt0cnl7amEuZ3JvdyhnLWQuYnl0ZUxlbmd0aCs2NTUzNT4+PjE2KTtBKCk7dmFyIHU9MTticmVhayBhfWNhdGNoKFgpe311PXZvaWQgMH1pZih1KXJldHVybiEwfXJldHVybiExfSxmOmZ1bmN0aW9uKGUpe3JldHVybiA1Mn0sZDpmdW5jdGlvbihlLGIsYyxkLGcpe3JldHVybiA3MH0sYzpmdW5jdGlvbihlLGIsYyxkKXtmb3IodmFyIGc9MCx1PTA7dTxjO3UrKyl7dmFyIFg9VltiPj4yXSxhYj1WW2IrND4+Ml07Yis9ODtmb3IodmFyIHNhPTA7c2E8YWI7c2ErKyl7dmFyIHRhPWVhW1grc2FdLHVhPXdkW2VdOzA9PT10YXx8MTA9PT10YT8oKDE9PT1lP3VkOmRhKShwKHVhLDApKSx1YS5sZW5ndGg9MCk6dWEucHVzaCh0YSl9Zys9CmFifVZbZD4+Ml09ZztyZXR1cm4gMH19OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZyx1KXthLmFzbT1nLmV4cG9ydHM7amE9YS5hc20uaDtBKCk7b2EudW5zaGlmdChhLmFzbS5pKTthYS0tO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmYS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKGFhKTswPT1hYSYmKG51bGwhPT1yYSYmKGNsZWFySW50ZXJ2YWwocmEpLHJhPW51bGwpLGlhJiYoZz1pYSxpYT1udWxsLGcoKSkpfWZ1bmN0aW9uIGIoZyl7ZShnLmluc3RhbmNlKX1mdW5jdGlvbiBjKGcpe3JldHVybiB2KCkudGhlbihmdW5jdGlvbih1KXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodSxkKX0pLnRoZW4oZnVuY3Rpb24odSl7cmV0dXJuIHV9KS50aGVuKGcsZnVuY3Rpb24odSl7ZGEoImZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICIrdSk7Zih1KX0pfXZhciBkPXthOnhkfTthYSsrO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmYS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKGFhKTsKaWYoYS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBhLmluc3RhbnRpYXRlV2FzbShkLGUpfWNhdGNoKGcpe2RhKCJNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAiK2cpLGthKGcpfShmdW5jdGlvbigpe3JldHVybiBmYXx8ImZ1bmN0aW9uIiE9dHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nfHxQLnN0YXJ0c1dpdGgoImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiKXx8UC5zdGFydHNXaXRoKCJmaWxlOi8vIil8fFlhfHwiZnVuY3Rpb24iIT10eXBlb2YgZmV0Y2g/YyhiKTpmZXRjaChQLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihnKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZyxkKS50aGVuKGIsZnVuY3Rpb24odSl7ZGEoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK3UpO2RhKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpOwpyZXR1cm4gYyhiKX0pfSl9KSgpLmNhdGNoKGthKTtyZXR1cm57fX0pKCk7dmFyIGJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYmI9YS5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMD1hLmFzbS5rKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyQnVmZmVyX0RlY29kZXJCdWZmZXJfMD1mdW5jdGlvbigpe3JldHVybihEYT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9EZWNvZGVyQnVmZmVyXzA9YS5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjYj1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9Jbml0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oY2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfSW5pdF8yPWEuYXNtLm0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD0KZnVuY3Rpb24oKXtyZXR1cm4oZGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD1hLmFzbS5uKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEVhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1mdW5jdGlvbigpe3JldHVybihFYT1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9YS5hc20ubykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV90cmFuc2Zvcm1fdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGViPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX3RyYW5zZm9ybV90eXBlXzA9YS5hc20ucCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9fX2Rlc3Ryb3lfX18wPQpmdW5jdGlvbigpe3JldHVybihmYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9fX2Rlc3Ryb3lfX18wPWEuYXNtLnEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRmE9YS5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX0dlb21ldHJ5QXR0cmlidXRlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRmE9YS5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX0dlb21ldHJ5QXR0cmlidXRlXzA9YS5hc20ucikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxnYj1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihnYj1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1hLmFzbS5zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdhPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9Qb2ludEF0dHJpYnV0ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdhPQphLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfUG9pbnRBdHRyaWJ1dGVfMD1hLmFzbS50KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3NpemVfMD1hLmFzbS51KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGliPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaWI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1hLmFzbS52KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPQphLmFzbS53KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9kYXRhX3R5cGVfMD1mdW5jdGlvbigpe3JldHVybihrYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfZGF0YV90eXBlXzA9YS5hc20ueCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbnVtX2NvbXBvbmVudHNfMD1mdW5jdGlvbigpe3JldHVybihsYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbnVtX2NvbXBvbmVudHNfMD1hLmFzbS55KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1iPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ub3JtYWxpemVkXzA9ZnVuY3Rpb24oKXtyZXR1cm4obWI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX25vcm1hbGl6ZWRfMD1hLmFzbS56KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5iPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX3N0cmlkZV8wPQpmdW5jdGlvbigpe3JldHVybihuYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYnl0ZV9zdHJpZGVfMD1hLmFzbS5BKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX29mZnNldF8wPWZ1bmN0aW9uKCl7cmV0dXJuKG9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX29mZnNldF8wPWEuYXNtLkIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3VuaXF1ZV9pZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV91bmlxdWVfaWRfMD1hLmFzbS5DKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHFiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPQphLmFzbS5EKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGE9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fMD1hLmFzbS5FKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1mdW5jdGlvbigpe3JldHVybihyYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9YS5hc20uRikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9CmZ1bmN0aW9uKCl7cmV0dXJuKHNiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1hLmFzbS5HKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fbWluX3ZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4odGI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9taW5fdmFsdWVfMT1hLmFzbS5IKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHViPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcmFuZ2VfMD1mdW5jdGlvbigpe3JldHVybih1Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3JhbmdlXzA9YS5hc20uSSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9CmZ1bmN0aW9uKCl7cmV0dXJuKHZiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1hLmFzbS5KKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fMD1mdW5jdGlvbigpe3JldHVybihJYT1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtXzA9YS5hc20uSykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9YS5hc20uTCkuYXBwbHkobnVsbCwKYXJndW1lbnRzKX0seGI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1mdW5jdGlvbigpe3JldHVybih4Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPWEuYXNtLk0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih5Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPWEuYXNtLk4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmE9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfUG9pbnRDbG91ZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEphPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX1BvaW50Q2xvdWRfMD1hLmFzbS5PKS5hcHBseShudWxsLAphcmd1bWVudHMpfSx6Yj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fYXR0cmlidXRlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKHpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9hdHRyaWJ1dGVzXzA9YS5hc20uUCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fcG9pbnRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfbnVtX3BvaW50c18wPWEuYXNtLlEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihCYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9fX2Rlc3Ryb3lfX18wPWEuYXNtLlIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2E9YS5fZW1zY3JpcHRlbl9iaW5kX01lc2hfTWVzaF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEthPQphLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9NZXNoXzA9YS5hc20uUykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fZmFjZXNfMD1mdW5jdGlvbigpe3JldHVybihDYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fZmFjZXNfMD1hLmFzbS5UKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9hdHRyaWJ1dGVzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRGI9YS5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2F0dHJpYnV0ZXNfMD1hLmFzbS5VKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEViPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybihFYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fcG9pbnRzXzA9YS5hc20uVikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEZiPQphLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPWEuYXNtLlcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGE9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTGE9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9YS5hc20uWCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihHYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1hLmFzbS5ZKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWEuYXNtLlopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWI9YS5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19va18wPWZ1bmN0aW9uKCl7cmV0dXJuKEliPQphLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX29rXzA9YS5hc20uXykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxKYj1hLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX2Vycm9yX21zZ18wPWZ1bmN0aW9uKCl7cmV0dXJuKEpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfZXJyb3JfbXNnXzA9YS5hc20uJCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYj1hLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oS2I9YS5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19fX2Rlc3Ryb3lfX18wPWEuYXNtLmFhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE1hPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9EcmFjb0Zsb2F0MzJBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1hPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9EcmFjb0Zsb2F0MzJBcnJheV8wPWEuYXNtLmJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LApMYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihMYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfR2V0VmFsdWVfMT1hLmFzbS5jYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9zaXplXzA9YS5hc20uZGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X19fZGVzdHJveV9fXzA9YS5hc20uZWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0RyYWNvSW50OEFycmF5XzA9CmZ1bmN0aW9uKCl7cmV0dXJuKE5hPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9EcmFjb0ludDhBcnJheV8wPWEuYXNtLmZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPWEuYXNtLmdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD1hLmFzbS5oYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihRYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD0KYS5hc20uaWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT2E9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9EcmFjb1VJbnQ4QXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihPYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0RyYWNvVUludDhBcnJheV8wPWEuYXNtLmphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihSYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0dldFZhbHVlXzE9YS5hc20ua2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oU2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9YS5hc20ubGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9fX2Rlc3Ryb3lfX18wPQpmdW5jdGlvbigpe3JldHVybihUYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X19fZGVzdHJveV9fXzA9YS5hc20ubWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUGE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9EcmFjb0ludDE2QXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihQYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0RyYWNvSW50MTZBcnJheV8wPWEuYXNtLm5hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFViPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihVYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0dldFZhbHVlXzE9YS5hc20ub2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9zaXplXzA9CmEuYXNtLnBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihXYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X19fZGVzdHJveV9fXzA9YS5hc20ucWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfRHJhY29VSW50MTZBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFFhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0RyYWNvVUludDE2QXJyYXlfMD1hLmFzbS5yYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0dldFZhbHVlXzE9YS5hc20uc2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sClliPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihZYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9zaXplXzA9YS5hc20udGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihaYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWEuYXNtLnVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfRHJhY29JbnQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oUmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD1hLmFzbS52YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0dldFZhbHVlXzE9CmZ1bmN0aW9uKCl7cmV0dXJuKCRiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfR2V0VmFsdWVfMT1hLmFzbS53YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhYz1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihhYz1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X3NpemVfMD1hLmFzbS54YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiYz1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWEuYXNtLnlhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0RyYWNvVUludDMyQXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihTYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9EcmFjb1VJbnQzMkFycmF5XzA9CmEuYXNtLnphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oY2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfR2V0VmFsdWVfMT1hLmFzbS5BYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkYz1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfc2l6ZV8wPWEuYXNtLkJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS5DYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxUYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPQpmdW5jdGlvbigpe3JldHVybihUYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPWEuYXNtLkRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfSGFzRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihmYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0hhc0VudHJ5XzI9YS5hc20uRWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2M9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRJbnRFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlfMj1hLmFzbS5GYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxoYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybihoYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz0KYS5hc20uR2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXREb3VibGVFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGljPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RG91YmxlRW50cnlfMj1hLmFzbS5IYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldFN0cmluZ0VudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4oamM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRTdHJpbmdFbnRyeV8yPWEuYXNtLklhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTnVtRW50cmllc18xPWZ1bmN0aW9uKCl7cmV0dXJuKGtjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTnVtRW50cmllc18xPWEuYXNtLkphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LApsYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEVudHJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGxjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RW50cnlOYW1lXzI9YS5hc20uS2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKG1jPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfX19kZXN0cm95X19fMD1hLmFzbS5MYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVYT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVyXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2Rlcl8wPWEuYXNtLk1hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9ZnVuY3Rpb24oKXtyZXR1cm4obmM9CmEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9YS5hc20uTmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQXJyYXlUb01lc2hfMz1mdW5jdGlvbigpe3JldHVybihvYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvTWVzaF8zPWEuYXNtLk9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkXzI9ZnVuY3Rpb24oKXtyZXR1cm4ocGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRfMj1hLmFzbS5QYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHFjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlOYW1lXzI9CmEuYXNtLlFhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlNZXRhZGF0YUVudHJ5XzM9ZnVuY3Rpb24oKXtyZXR1cm4ocmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnlfMz1hLmFzbS5SYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVfMj1mdW5jdGlvbigpe3JldHVybihzYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVfMj1hLmFzbS5TYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx0Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkXzI9ZnVuY3Rpb24oKXtyZXR1cm4odGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlQnlVbmlxdWVJZF8yPWEuYXNtLlRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LAp1Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRNZXRhZGF0YV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldE1ldGFkYXRhXzE9YS5hc20uVWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlTWV0YWRhdGFfMj1mdW5jdGlvbigpe3JldHVybih2Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVNZXRhZGF0YV8yPWEuYXNtLlZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKHdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWEuYXNtLldhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2hfMj0KZnVuY3Rpb24oKXtyZXR1cm4oeGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaF8yPWEuYXNtLlhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQxNkFycmF5XzM9ZnVuY3Rpb24oKXtyZXR1cm4oeWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDE2QXJyYXlfMz1hLmFzbS5ZYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZXNVSW50MzJBcnJheV8zPWZ1bmN0aW9uKCl7cmV0dXJuKHpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9YS5hc20uWmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRfMz1mdW5jdGlvbigpe3JldHVybihBYz0KYS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRfMz1hLmFzbS5fYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxCYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKEJjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzXzM9YS5hc20uJGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oQ2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzXzM9YS5hc20uYWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKERjPQphLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzXzM9YS5hc20uYmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihFYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50c18zPWEuYXNtLmNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oRmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHNfMz1hLmFzbS5kYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz0KZnVuY3Rpb24oKXtyZXR1cm4oR2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzXzM9YS5hc20uZWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihIYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50c18zPWEuYXNtLmZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKEljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50c18zPWEuYXNtLmdiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50c181PQpmdW5jdGlvbigpe3JldHVybihKYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVEYXRhQXJyYXlGb3JBbGxQb2ludHNfNT1hLmFzbS5oYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9Ta2lwQXR0cmlidXRlVHJhbnNmb3JtXzE9ZnVuY3Rpb24oKXtyZXR1cm4oS2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybV8xPWEuYXNtLmliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZF8xPWZ1bmN0aW9uKCl7cmV0dXJuKExjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZF8xPWEuYXNtLmpiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE1jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZF8yPQpmdW5jdGlvbigpe3JldHVybihNYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWRfMj1hLmFzbS5rYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1mdW5jdGlvbigpe3JldHVybihOYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1hLmFzbS5sYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKE9jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX19fZGVzdHJveV9fXzA9YS5hc20ubWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUGM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX0lOVkFMSURfVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKFBjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT0KYS5hc20ubmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX05PX1RSQU5TRk9STT1mdW5jdGlvbigpe3JldHVybihRYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPWEuYXNtLm9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKFJjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPWEuYXNtLnBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT0KZnVuY3Rpb24oKXtyZXR1cm4oU2M9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX09DVEFIRURST05fVFJBTlNGT1JNPWEuYXNtLnFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0lOVkFMSUQ9ZnVuY3Rpb24oKXtyZXR1cm4oVGM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfSU5WQUxJRD1hLmFzbS5yYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9QT1NJVElPTj1mdW5jdGlvbigpe3JldHVybihVYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9QT1NJVElPTj1hLmFzbS5zYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9OT1JNQUw9CmZ1bmN0aW9uKCl7cmV0dXJuKFZjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX05PUk1BTD1hLmFzbS50YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1mdW5jdGlvbigpe3JldHVybihXYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1hLmFzbS51YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9URVhfQ09PUkQ9ZnVuY3Rpb24oKXtyZXR1cm4oWGM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfVEVYX0NPT1JEPWEuYXNtLnZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFljPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9CmZ1bmN0aW9uKCl7cmV0dXJuKFljPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9YS5hc20ud2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfSU5WQUxJRF9HRU9NRVRSWV9UWVBFPWZ1bmN0aW9uKCl7cmV0dXJuKFpjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX0lOVkFMSURfR0VPTUVUUllfVFlQRT1hLmFzbS54YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9QT0lOVF9DTE9VRD1mdW5jdGlvbigpe3JldHVybigkYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9QT0lOVF9DTE9VRD1hLmFzbS55YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9UUklBTkdVTEFSX01FU0g9CmZ1bmN0aW9uKCl7cmV0dXJuKGFkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1RSSUFOR1VMQVJfTUVTSD1hLmFzbS56YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5WQUxJRD1mdW5jdGlvbigpe3JldHVybihiZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5WQUxJRD1hLmFzbS5BYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UOD1mdW5jdGlvbigpe3JldHVybihjZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UOD1hLmFzbS5CYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDg9ZnVuY3Rpb24oKXtyZXR1cm4oZGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ4PQphLmFzbS5DYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oZWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDE2PWEuYXNtLkRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oZmQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQxNj1hLmFzbS5FYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxnZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4oZ2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDMyPWEuYXNtLkZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9CmZ1bmN0aW9uKCl7cmV0dXJuKGhkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9YS5hc20uR2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDY0PWZ1bmN0aW9uKCl7cmV0dXJuKGlkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ2ND1hLmFzbS5IYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDY0PWZ1bmN0aW9uKCl7cmV0dXJuKGpkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UNjQ9YS5hc20uSWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUMzI9ZnVuY3Rpb24oKXtyZXR1cm4oa2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUMzI9YS5hc20uSmIpLmFwcGx5KG51bGwsCmFyZ3VtZW50cyl9LGxkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9GTE9BVDY0PWZ1bmN0aW9uKCl7cmV0dXJuKGxkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9GTE9BVDY0PWEuYXNtLktiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9CT09MPWZ1bmN0aW9uKCl7cmV0dXJuKG1kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9CT09MPWEuYXNtLkxiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9UWVBFU19DT1VOVD1mdW5jdGlvbigpe3JldHVybihuZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVFlQRVNfQ09VTlQ9YS5hc20uTWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfT0s9ZnVuY3Rpb24oKXtyZXR1cm4ob2Q9CmEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX09LPWEuYXNtLk5iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKHBkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPWEuYXNtLk9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKHFkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPWEuYXNtLlBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPWZ1bmN0aW9uKCl7cmV0dXJuKHJkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPQphLmFzbS5RYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9VTlNVUFBPUlRFRF9WRVJTSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKHNkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOU1VQUE9SVEVEX1ZFUlNJT049YS5hc20uUmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5LTk9XTl9WRVJTSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKHRkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOS05PV05fVkVSU0lPTj1hLmFzbS5TYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTthLl9tYWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oYS5fbWFsbG9jPWEuYXNtLlRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O2EuX2ZyZWU9ZnVuY3Rpb24oKXtyZXR1cm4oYS5fZnJlZT1hLmFzbS5VYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTsKdmFyIHlhPWZ1bmN0aW9uKCl7cmV0dXJuKHlhPWEuYXNtLlZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O2EuX19fc3RhcnRfZW1fanM9MTU4NTY7YS5fX19zdG9wX2VtX2pzPTE1OTU0O3ZhciBsYTtpYT1mdW5jdGlvbiBiKCl7bGF8fGJhKCk7bGF8fChpYT1iKX07aWYoYS5wcmVJbml0KWZvcigiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVJbml0JiYoYS5wcmVJbml0PVthLnByZUluaXRdKTswPGEucHJlSW5pdC5sZW5ndGg7KWEucHJlSW5pdC5wb3AoKSgpO2JhKCk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7dC5wcm90b3R5cGUuY29uc3RydWN0b3I9dDt0LnByb3RvdHlwZS5fX2NsYXNzX189dDt0Ll9fY2FjaGVfXz17fTthLldyYXBwZXJPYmplY3Q9dDthLmdldENhY2hlPXg7YS53cmFwUG9pbnRlcj1EO2EuY2FzdE9iamVjdD1mdW5jdGlvbihiLGMpe3JldHVybiBEKGIucHRyLGMpfTthLk5VTEw9RCgwKTthLmRlc3Ryb3k9ZnVuY3Rpb24oYil7aWYoIWIuX19kZXN0cm95X18pdGhyb3ciRXJyb3I6IENhbm5vdCBkZXN0cm95IG9iamVjdC4gKERpZCB5b3UgY3JlYXRlIGl0IHlvdXJzZWxmPykiOwpiLl9fZGVzdHJveV9fKCk7ZGVsZXRlIHgoYi5fX2NsYXNzX18pW2IucHRyXX07YS5jb21wYXJlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIucHRyPT09Yy5wdHJ9O2EuZ2V0UG9pbnRlcj1mdW5jdGlvbihiKXtyZXR1cm4gYi5wdHJ9O2EuZ2V0Q2xhc3M9ZnVuY3Rpb24oYil7cmV0dXJuIGIuX19jbGFzc19ffTt2YXIgcj17YnVmZmVyOjAsc2l6ZTowLHBvczowLHRlbXBzOltdLG5lZWRlZDowLHByZXBhcmU6ZnVuY3Rpb24oKXtpZihyLm5lZWRlZCl7Zm9yKHZhciBiPTA7YjxyLnRlbXBzLmxlbmd0aDtiKyspYS5fZnJlZShyLnRlbXBzW2JdKTtyLnRlbXBzLmxlbmd0aD0wO2EuX2ZyZWUoci5idWZmZXIpO3IuYnVmZmVyPTA7ci5zaXplKz1yLm5lZWRlZDtyLm5lZWRlZD0wfXIuYnVmZmVyfHwoci5zaXplKz0xMjgsci5idWZmZXI9YS5fbWFsbG9jKHIuc2l6ZSksci5idWZmZXJ8fGYodm9pZCAwKSk7ci5wb3M9MH0sYWxsb2M6ZnVuY3Rpb24oYixjKXtyLmJ1ZmZlcnx8Zih2b2lkIDApO2I9CmIubGVuZ3RoKmMuQllURVNfUEVSX0VMRU1FTlQ7Yj1iKzcmLTg7ci5wb3MrYj49ci5zaXplPygwPGJ8fGYodm9pZCAwKSxyLm5lZWRlZCs9YixjPWEuX21hbGxvYyhiKSxyLnRlbXBzLnB1c2goYykpOihjPXIuYnVmZmVyK3IucG9zLHIucG9zKz1iKTtyZXR1cm4gY30sY29weTpmdW5jdGlvbihiLGMsZCl7ZD4+Pj0wO3N3aXRjaChjLkJZVEVTX1BFUl9FTEVNRU5UKXtjYXNlIDI6ZD4+Pj0xO2JyZWFrO2Nhc2UgNDpkPj4+PTI7YnJlYWs7Y2FzZSA4OmQ+Pj49M31mb3IodmFyIGc9MDtnPGIubGVuZ3RoO2crKyljW2QrZ109YltnXX19O1oucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO1oucHJvdG90eXBlLmNvbnN0cnVjdG9yPVo7Wi5wcm90b3R5cGUuX19jbGFzc19fPVo7Wi5fX2NhY2hlX189e307YS5Wb2lkUHRyPVo7Wi5wcm90b3R5cGUuX19kZXN0cm95X189Wi5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtiYih0aGlzLnB0cil9O1MucHJvdG90eXBlPQpPYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtTLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TO1MucHJvdG90eXBlLl9fY2xhc3NfXz1TO1MuX19jYWNoZV9fPXt9O2EuRGVjb2RlckJ1ZmZlcj1TO1MucHJvdG90eXBlLkluaXQ9Uy5wcm90b3R5cGUuSW5pdD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpOyJvYmplY3QiPT10eXBlb2YgYiYmKGI9cGEoYikpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtjYihkLGIsYyl9O1MucHJvdG90eXBlLl9fZGVzdHJveV9fPVMucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7ZGIodGhpcy5wdHIpfTtRLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtRLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RO1EucHJvdG90eXBlLl9fY2xhc3NfXz1RO1EuX19jYWNoZV9fPXt9O2EuQXR0cmlidXRlVHJhbnNmb3JtRGF0YT1RO1EucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPVEucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPQpmdW5jdGlvbigpe3JldHVybiBlYih0aGlzLnB0cil9O1EucHJvdG90eXBlLl9fZGVzdHJveV9fPVEucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7ZmIodGhpcy5wdHIpfTtXLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtXLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1XO1cucHJvdG90eXBlLl9fY2xhc3NfXz1XO1cuX19jYWNoZV9fPXt9O2EuR2VvbWV0cnlBdHRyaWJ1dGU9VztXLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1XLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2diKHRoaXMucHRyKX07dy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7dy5wcm90b3R5cGUuY29uc3RydWN0b3I9dzt3LnByb3RvdHlwZS5fX2NsYXNzX189dzt3Ll9fY2FjaGVfXz17fTthLlBvaW50QXR0cmlidXRlPXc7dy5wcm90b3R5cGUuc2l6ZT13LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIGhiKHRoaXMucHRyKX07dy5wcm90b3R5cGUuR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YT0Kdy5wcm90b3R5cGUuR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YT1mdW5jdGlvbigpe3JldHVybiBEKGliKHRoaXMucHRyKSxRKX07dy5wcm90b3R5cGUuYXR0cmlidXRlX3R5cGU9dy5wcm90b3R5cGUuYXR0cmlidXRlX3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gamIodGhpcy5wdHIpfTt3LnByb3RvdHlwZS5kYXRhX3R5cGU9dy5wcm90b3R5cGUuZGF0YV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIGtiKHRoaXMucHRyKX07dy5wcm90b3R5cGUubnVtX2NvbXBvbmVudHM9dy5wcm90b3R5cGUubnVtX2NvbXBvbmVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gbGIodGhpcy5wdHIpfTt3LnByb3RvdHlwZS5ub3JtYWxpemVkPXcucHJvdG90eXBlLm5vcm1hbGl6ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIW1iKHRoaXMucHRyKX07dy5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9dy5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmIodGhpcy5wdHIpfTt3LnByb3RvdHlwZS5ieXRlX29mZnNldD0Kdy5wcm90b3R5cGUuYnl0ZV9vZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gb2IodGhpcy5wdHIpfTt3LnByb3RvdHlwZS51bmlxdWVfaWQ9dy5wcm90b3R5cGUudW5pcXVlX2lkPWZ1bmN0aW9uKCl7cmV0dXJuIHBiKHRoaXMucHRyKX07dy5wcm90b3R5cGUuX19kZXN0cm95X189dy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtxYih0aGlzLnB0cil9O0MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO0MucHJvdG90eXBlLmNvbnN0cnVjdG9yPUM7Qy5wcm90b3R5cGUuX19jbGFzc19fPUM7Qy5fX2NhY2hlX189e307YS5BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm09QztDLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1DLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuISFyYihjLGIpfTtDLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz0KQy5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gc2IodGhpcy5wdHIpfTtDLnByb3RvdHlwZS5taW5fdmFsdWU9Qy5wcm90b3R5cGUubWluX3ZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gdGIoYyxiKX07Qy5wcm90b3R5cGUucmFuZ2U9Qy5wcm90b3R5cGUucmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdWIodGhpcy5wdHIpfTtDLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1DLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3ZiKHRoaXMucHRyKX07Ri5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Ri5wcm90b3R5cGUuY29uc3RydWN0b3I9RjtGLnByb3RvdHlwZS5fX2NsYXNzX189RjtGLl9fY2FjaGVfXz17fTthLkF0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm09RjtGLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1GLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT0KZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiEhd2IoYyxiKX07Ri5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9Ri5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9ZnVuY3Rpb24oKXtyZXR1cm4geGIodGhpcy5wdHIpfTtGLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1GLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3liKHRoaXMucHRyKX07Ry5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Ry5wcm90b3R5cGUuY29uc3RydWN0b3I9RztHLnByb3RvdHlwZS5fX2NsYXNzX189RztHLl9fY2FjaGVfXz17fTthLlBvaW50Q2xvdWQ9RztHLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1HLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiB6Yih0aGlzLnB0cil9O0cucHJvdG90eXBlLm51bV9wb2ludHM9Ry5wcm90b3R5cGUubnVtX3BvaW50cz1mdW5jdGlvbigpe3JldHVybiBBYih0aGlzLnB0cil9OwpHLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1HLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0JiKHRoaXMucHRyKX07RS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7RS5wcm90b3R5cGUuY29uc3RydWN0b3I9RTtFLnByb3RvdHlwZS5fX2NsYXNzX189RTtFLl9fY2FjaGVfXz17fTthLk1lc2g9RTtFLnByb3RvdHlwZS5udW1fZmFjZXM9RS5wcm90b3R5cGUubnVtX2ZhY2VzPWZ1bmN0aW9uKCl7cmV0dXJuIENiKHRoaXMucHRyKX07RS5wcm90b3R5cGUubnVtX2F0dHJpYnV0ZXM9RS5wcm90b3R5cGUubnVtX2F0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gRGIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5udW1fcG9pbnRzPUUucHJvdG90eXBlLm51bV9wb2ludHM9ZnVuY3Rpb24oKXtyZXR1cm4gRWIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1FLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0ZiKHRoaXMucHRyKX07VC5wcm90b3R5cGU9Ck9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO1QucHJvdG90eXBlLmNvbnN0cnVjdG9yPVQ7VC5wcm90b3R5cGUuX19jbGFzc19fPVQ7VC5fX2NhY2hlX189e307YS5NZXRhZGF0YT1UO1QucHJvdG90eXBlLl9fZGVzdHJveV9fPVQucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7R2IodGhpcy5wdHIpfTtCLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtCLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1CO0IucHJvdG90eXBlLl9fY2xhc3NfXz1CO0IuX19jYWNoZV9fPXt9O2EuU3RhdHVzPUI7Qi5wcm90b3R5cGUuY29kZT1CLnByb3RvdHlwZS5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIEhiKHRoaXMucHRyKX07Qi5wcm90b3R5cGUub2s9Qi5wcm90b3R5cGUub2s9ZnVuY3Rpb24oKXtyZXR1cm4hIUliKHRoaXMucHRyKX07Qi5wcm90b3R5cGUuZXJyb3JfbXNnPUIucHJvdG90eXBlLmVycm9yX21zZz1mdW5jdGlvbigpe3JldHVybiBoKEpiKHRoaXMucHRyKSl9OwpCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1CLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0tiKHRoaXMucHRyKX07SC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7SC5wcm90b3R5cGUuY29uc3RydWN0b3I9SDtILnByb3RvdHlwZS5fX2NsYXNzX189SDtILl9fY2FjaGVfXz17fTthLkRyYWNvRmxvYXQzMkFycmF5PUg7SC5wcm90b3R5cGUuR2V0VmFsdWU9SC5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBMYihjLGIpfTtILnByb3RvdHlwZS5zaXplPUgucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gTWIodGhpcy5wdHIpfTtILnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1ILnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe05iKHRoaXMucHRyKX07SS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7SS5wcm90b3R5cGUuY29uc3RydWN0b3I9Ckk7SS5wcm90b3R5cGUuX19jbGFzc19fPUk7SS5fX2NhY2hlX189e307YS5EcmFjb0ludDhBcnJheT1JO0kucHJvdG90eXBlLkdldFZhbHVlPUkucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gT2IoYyxiKX07SS5wcm90b3R5cGUuc2l6ZT1JLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFBiKHRoaXMucHRyKX07SS5wcm90b3R5cGUuX19kZXN0cm95X189SS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtRYih0aGlzLnB0cil9O0oucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO0oucHJvdG90eXBlLmNvbnN0cnVjdG9yPUo7Si5wcm90b3R5cGUuX19jbGFzc19fPUo7Si5fX2NhY2hlX189e307YS5EcmFjb1VJbnQ4QXJyYXk9SjtKLnByb3RvdHlwZS5HZXRWYWx1ZT1KLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz0KdGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBSYihjLGIpfTtKLnByb3RvdHlwZS5zaXplPUoucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gU2IodGhpcy5wdHIpfTtKLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1KLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1RiKHRoaXMucHRyKX07Sy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Sy5wcm90b3R5cGUuY29uc3RydWN0b3I9SztLLnByb3RvdHlwZS5fX2NsYXNzX189SztLLl9fY2FjaGVfXz17fTthLkRyYWNvSW50MTZBcnJheT1LO0sucHJvdG90eXBlLkdldFZhbHVlPUsucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gVWIoYyxiKX07Sy5wcm90b3R5cGUuc2l6ZT1LLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFZiKHRoaXMucHRyKX07CksucHJvdG90eXBlLl9fZGVzdHJveV9fPUsucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7V2IodGhpcy5wdHIpfTtMLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtMLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MO0wucHJvdG90eXBlLl9fY2xhc3NfXz1MO0wuX19jYWNoZV9fPXt9O2EuRHJhY29VSW50MTZBcnJheT1MO0wucHJvdG90eXBlLkdldFZhbHVlPUwucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gWGIoYyxiKX07TC5wcm90b3R5cGUuc2l6ZT1MLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFliKHRoaXMucHRyKX07TC5wcm90b3R5cGUuX19kZXN0cm95X189TC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtaYih0aGlzLnB0cil9O00ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO00ucHJvdG90eXBlLmNvbnN0cnVjdG9yPQpNO00ucHJvdG90eXBlLl9fY2xhc3NfXz1NO00uX19jYWNoZV9fPXt9O2EuRHJhY29JbnQzMkFycmF5PU07TS5wcm90b3R5cGUuR2V0VmFsdWU9TS5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiAkYihjLGIpfTtNLnByb3RvdHlwZS5zaXplPU0ucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gYWModGhpcy5wdHIpfTtNLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1NLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2JjKHRoaXMucHRyKX07Ti5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Ti5wcm90b3R5cGUuY29uc3RydWN0b3I9TjtOLnByb3RvdHlwZS5fX2NsYXNzX189TjtOLl9fY2FjaGVfXz17fTthLkRyYWNvVUludDMyQXJyYXk9TjtOLnByb3RvdHlwZS5HZXRWYWx1ZT1OLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz0KdGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBjYyhjLGIpfTtOLnByb3RvdHlwZS5zaXplPU4ucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gZGModGhpcy5wdHIpfTtOLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1OLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2VjKHRoaXMucHRyKX07eS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7eS5wcm90b3R5cGUuY29uc3RydWN0b3I9eTt5LnByb3RvdHlwZS5fX2NsYXNzX189eTt5Ll9fY2FjaGVfXz17fTthLk1ldGFkYXRhUXVlcmllcj15O3kucHJvdG90eXBlLkhhc0VudHJ5PXkucHJvdG90eXBlLkhhc0VudHJ5PWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7ci5wcmVwYXJlKCk7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLnB0cjpSKGMpO3JldHVybiEhZmMoZCxiLGMpfTt5LnByb3RvdHlwZS5HZXRJbnRFbnRyeT0KeS5wcm90b3R5cGUuR2V0SW50RW50cnk9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtyLnByZXBhcmUoKTtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7cmV0dXJuIGdjKGQsYixjKX07eS5wcm90b3R5cGUuR2V0SW50RW50cnlBcnJheT15LnByb3RvdHlwZS5HZXRJbnRFbnRyeUFycmF5PWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtyLnByZXBhcmUoKTtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO2hjKGcsYixjLGQpfTt5LnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT15LnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPQpjJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7cmV0dXJuIGljKGQsYixjKX07eS5wcm90b3R5cGUuR2V0U3RyaW5nRW50cnk9eS5wcm90b3R5cGUuR2V0U3RyaW5nRW50cnk9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtyLnByZXBhcmUoKTtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7cmV0dXJuIGgoamMoZCxiLGMpKX07eS5wcm90b3R5cGUuTnVtRW50cmllcz15LnByb3RvdHlwZS5OdW1FbnRyaWVzPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4ga2MoYyxiKX07eS5wcm90b3R5cGUuR2V0RW50cnlOYW1lPXkucHJvdG90eXBlLkdldEVudHJ5TmFtZT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz0KYy5wdHIpO3JldHVybiBoKGxjKGQsYixjKSl9O3kucHJvdG90eXBlLl9fZGVzdHJveV9fPXkucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7bWModGhpcy5wdHIpfTttLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTttLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1tO20ucHJvdG90eXBlLl9fY2xhc3NfXz1tO20uX19jYWNoZV9fPXt9O2EuRGVjb2Rlcj1tO20ucHJvdG90eXBlLkRlY29kZUFycmF5VG9Qb2ludENsb3VkPW0ucHJvdG90eXBlLkRlY29kZUFycmF5VG9Qb2ludENsb3VkPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtyLnByZXBhcmUoKTsib2JqZWN0Ij09dHlwZW9mIGImJihiPXBhKGIpKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiBEKG5jKGcsYixjLGQpLEIpfTttLnByb3RvdHlwZS5EZWNvZGVBcnJheVRvTWVzaD1tLnByb3RvdHlwZS5EZWNvZGVBcnJheVRvTWVzaD0KZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO3IucHJlcGFyZSgpOyJvYmplY3QiPT10eXBlb2YgYiYmKGI9cGEoYikpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuIEQob2MoZyxiLGMsZCksQil9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtyZXR1cm4gcGMoZCxiLGMpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/CmMucHRyOlIoYyk7cmV0dXJuIHFjKGQsYixjKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5wdHI6UihkKTtyZXR1cm4gcmMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZT1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGU9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBEKHNjKGQsYixjKSx3KX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZD1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkPQpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7cmV0dXJuIEQodGMoZCxiLGMpLHcpfTttLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1tLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIEQodWMoYyxiKSxUKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBEKHZjKGQsYixjKSxUKX07bS5wcm90b3R5cGUuR2V0RmFjZUZyb21NZXNoPW0ucHJvdG90eXBlLkdldEZhY2VGcm9tTWVzaD1mdW5jdGlvbihiLApjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhd2MoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2g9bS5wcm90b3R5cGUuR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7cmV0dXJuIHhjKGQsYixjKX07bS5wcm90b3R5cGUuR2V0VHJpYW5nbGVzVUludDE2QXJyYXk9bS5wcm90b3R5cGUuR2V0VHJpYW5nbGVzVUludDE2QXJyYXk9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7CmQmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIXljKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1tLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISF6YyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhQWMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzPQptLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFCYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFDYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50cz1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzPQpmdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFEYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhRWMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjsKYiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFGYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFHYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJgooYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIUhjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIUljKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVEYXRhQXJyYXlGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkLGcsdSl7dmFyIFg9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJgoib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO2cmJiJvYmplY3QiPT09dHlwZW9mIGcmJihnPWcucHRyKTt1JiYib2JqZWN0Ij09PXR5cGVvZiB1JiYodT11LnB0cik7cmV0dXJuISFKYyhYLGIsYyxkLGcsdSl9O20ucHJvdG90eXBlLlNraXBBdHRyaWJ1dGVUcmFuc2Zvcm09bS5wcm90b3R5cGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7S2MoYyxiKX07bS5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkPW0ucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZD1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIExjKGMsYil9O20ucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZD0KbS5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9Qb2ludENsb3VkPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtyZXR1cm4gRChNYyhkLGIsYyksQil9O20ucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvTWVzaD1tLnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb01lc2g9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBEKE5jKGQsYixjKSxCKX07bS5wcm90b3R5cGUuX19kZXN0cm95X189bS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtPYyh0aGlzLnB0cil9OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXthLkFUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1QYygpO2EuQVRUUklCVVRFX05PX1RSQU5TRk9STT1RYygpOwphLkFUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPVJjKCk7YS5BVFRSSUJVVEVfT0NUQUhFRFJPTl9UUkFOU0ZPUk09U2MoKTthLklOVkFMSUQ9VGMoKTthLlBPU0lUSU9OPVVjKCk7YS5OT1JNQUw9VmMoKTthLkNPTE9SPVdjKCk7YS5URVhfQ09PUkQ9WGMoKTthLkdFTkVSSUM9WWMoKTthLklOVkFMSURfR0VPTUVUUllfVFlQRT1aYygpO2EuUE9JTlRfQ0xPVUQ9JGMoKTthLlRSSUFOR1VMQVJfTUVTSD1hZCgpO2EuRFRfSU5WQUxJRD1iZCgpO2EuRFRfSU5UOD1jZCgpO2EuRFRfVUlOVDg9ZGQoKTthLkRUX0lOVDE2PWVkKCk7YS5EVF9VSU5UMTY9ZmQoKTthLkRUX0lOVDMyPWdkKCk7YS5EVF9VSU5UMzI9aGQoKTthLkRUX0lOVDY0PWlkKCk7YS5EVF9VSU5UNjQ9amQoKTthLkRUX0ZMT0FUMzI9a2QoKTthLkRUX0ZMT0FUNjQ9bGQoKTthLkRUX0JPT0w9bWQoKTthLkRUX1RZUEVTX0NPVU5UPW5kKCk7YS5PSz1vZCgpO2EuRFJBQ09fRVJST1I9cGQoKTthLklPX0VSUk9SPXFkKCk7CmEuSU5WQUxJRF9QQVJBTUVURVI9cmQoKTthLlVOU1VQUE9SVEVEX1ZFUlNJT049c2QoKTthLlVOS05PV05fVkVSU0lPTj10ZCgpfXphP2IoKTpvYS51bnNoaWZ0KGIpfSkoKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEub25Nb2R1bGVQYXJzZWQpYS5vbk1vZHVsZVBhcnNlZCgpO2EuRGVjb2Rlci5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZT1mdW5jdGlvbihiKXtpZihiLl9fY2xhc3NfXyYmYi5fX2NsYXNzX189PT1hLkRlY29kZXJCdWZmZXIpcmV0dXJuIGEuRGVjb2Rlci5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkKGIpO2lmKDg+Yi5ieXRlTGVuZ3RoKXJldHVybiBhLklOVkFMSURfR0VPTUVUUllfVFlQRTtzd2l0Y2goYls3XSl7Y2FzZSAwOnJldHVybiBhLlBPSU5UX0NMT1VEO2Nhc2UgMTpyZXR1cm4gYS5UUklBTkdVTEFSX01FU0g7ZGVmYXVsdDpyZXR1cm4gYS5JTlZBTElEX0dFT01FVFJZX1RZUEV9fTtyZXR1cm4gbi5yZWFkeX19KCk7CiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1EcmFjb0RlY29kZXJNb2R1bGU6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGZ1bmN0aW9uKCl7cmV0dXJuIERyYWNvRGVjb2Rlck1vZHVsZX0pOiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHMmJihleHBvcnRzLkRyYWNvRGVjb2Rlck1vZHVsZT1EcmFjb0RlY29kZXJNb2R1bGUpOwo="; +var draco_wasm_default2 = "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IARBEGokAA8LECAAC74CAQZ/IAIgAWsiBUECdSIGIAAoAggiAyAAKAIAIgRrQQJ1TQRAIAEgACgCBCAEayIFaiIDIAIgBiAFQQJ1IghLGyIFIAFrIQcgASAFRwRAIAQgASAHEA4aCyAGIAhLBEAgACgCBCEBIAIgBUcEQANAIAEgAygCADYCACABQQRqIQEgA0EEaiIDIAJHDQALCyAAIAE2AgQPCyAAIAQgB2o2AgQPCyAEBEAgACAENgIEIAQQByAAQQA2AgggAEIANwIAQQAhAwsCQCAFQQBIDQBB/////wMgA0EBdiIEIAYgBCAGSxsgA0H8////B08bIgNBgICAgARPDQAgACADQQJ0IgQQCCIDNgIAIAAgAyAEajYCCCAAIAEgAkcEfyADIAEgBUEEa0F8cUEEaiIAEAkgAGoFIAMLNgIEDwsQCwALeQEDfyAALQAMIQMCQCAAKAIIIgFB/x9LDQAgACgCBCICQQBMDQAgACACQQFrIgI2AgQgACgCACACai0AACABQQh0ciEBCyAAQQAgA2tB/wFxIgAgAUEIdmwiAyABQf8BcSICaiABIAAgA2prIAAgAksiABs2AgggAAsJAEGMCRCIAgALBABBAQttAgN/AX4CQCAAQQVLDQAgAikDECIGIAIpAwhZDQAgAigCACAGp2otAAAhBCACIAZCAXw3AxAgASAEwCIFQQBIBH8gAEEBaiABIAIQF0UNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADC4EBAQJ/AkACQCACQQRPBEAgACABckEDcQ0BA0AgACgCACABKAIARw0CIAFBBGohASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCwNAIAAtAAAiAyABLQAAIgRGBEAgAUEBaiEBIABBAWohACACQQFrIgINAQwCCwsgAyAEaw8LQQALegECfyAABEAgACgCWCEBIABBADYCWCABBEAgASgCCCICBEAgASACNgIMIAIQBwsgARAHCyAAKAJEIgEEQCAAIAE2AkggARAHCyAAKAJAIQEgAEEANgJAIAEEQCABKAIAIgIEQCABIAI2AgQgAhAHCyABEAcLIAAQBwsLNQAgAEIANwMIIABBADYCACAAQgA3AxAgAEEANgIgIABCADcCGCAAQQA7ASYgAEEAOgAkIAALkwEAIABBfzYCACAAQgA3AgQgAEIANwIgIABBAToAHCAAQgA3AhQgAEIANwIMIABCADcCKCAAQgA3AjAgAEIANwI4IABCADcCQCAAQgA3AkwgAEIANwJUIABCADcCXCAAIABBBGo2AkggAEIANwJoIABBAToAZCAAQgA3AnAgAEIANwJ4IABCADcCgAEgAEIANwKIAQsEAEEAC+8BAQZ/IAAoAgQiAiAAKAIIRwRAIAIgASgCADYCACAAIAJBBGo2AgQPCwJAIAIgACgCACIFayIDQQJ1IgdBAWoiBEGAgICABEkEQEH/////AyADQQF2IgYgBCAEIAZJGyADQfz///8HTxsiBAR/IARBgICAgARPDQIgBEECdBAIBUEACyIGIAdBAnRqIgMgASgCADYCACADQQRqIQEgAiAFRwRAA0AgA0EEayIDIAJBBGsiAigCADYCACACIAVHDQALCyAAIAYgBEECdGo2AgggACABNgIEIAAgAzYCACAFBEAgBRAHCw8LEAsACxAPAAsGACAAEAcLaQEDfwJAIAAiAUEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrCwkAQdAJEIACAAvtAgEDfyMAQRBrIgQkACAAQQA2AgQCQAJAIAFFDQACQCABIAAoAggiA0EFdCIFTQRAIAAgATYCBAwBCyAEQQA2AgggBEIANwMAIAFBAEgNAiAEIAVB/v///wNNBH8gA0EGdCIDIAFBH2pBYHEiBSADIAVLGwVB/////wcLED4gACgCACEDIAAgBCgCADYCACAEIAM2AgAgACgCBCEFIAAgATYCBCAEIAU2AgQgACgCCCEFIAAgBCgCCDYCCCAEIAU2AgggA0UNACADEAcLIAFBBXYhAyAAKAIAIQAgAi0AAARAIAFBIE8EQCAAQf8BIANBAnQQChoLIAFBYHEgAUYNASAAIANBAnRqIgAgACgCAEF/QSAgAUEfcWt2cjYCAAwBCyABQSBPBEAgAEEAIANBAnQQChoLIAFBYHEgAUYNACAAIANBAnRqIgAgACgCAEF/QSAgAUEfcWt2QX9zcTYCAAsgBEEQaiQADwsQCwALmgQBCH8gASAAKAIIIgMgACgCBCIEa0ECdU0EQAJAIAFFDQAgBCEDIAFBB3EiBgRAA0AgAyACKAIANgIAIANBBGohAyAIQQFqIgggBkcNAAsLIAFBAnQgBGohBCABQQFrQf////8DcUEHSQ0AA0AgAyACKAIANgIAIAMgAigCADYCBCADIAIoAgA2AgggAyACKAIANgIMIAMgAigCADYCECADIAIoAgA2AhQgAyACKAIANgIYIAMgAigCADYCHCADQSBqIgMgBEcNAAsLIAAgBDYCBA8LAkAgBCAAKAIAIgdrIgpBAnUiBiABaiIFQYCAgIAESQRAQf////8DIAMgB2siA0EBdiIEIAUgBCAFSxsgA0H8////B08bIgUEQCAFQYCAgIAETw0CIAVBAnQQCCEJCyAJIAZBAnRqIgYhAyABQQdxIgQEQANAIAMgAigCADYCACADQQRqIQMgCEEBaiIIIARHDQALCyAGIAFBAnRqIQQgAUEBa0H/////A3FBB08EQANAIAMgAigCADYCACADIAIoAgA2AgQgAyACKAIANgIIIAMgAigCADYCDCADIAIoAgA2AhAgAyACKAIANgIUIAMgAigCADYCGCADIAIoAgA2AhwgA0EgaiIDIARHDQALCyAJIAcgChAOIQEgACAENgIEIAAgATYCACAAIAEgBUECdGo2AgggBwRAIAcQBwsPCxALAAsQDwALRAAgAQRAIAAgASgCABAjIAAgASgCBBAjIAEoAhwiAARAIAEgADYCICAAEAcLIAEsABtBAEgEQCABKAIQEAcLIAEQBwsLWwAgAQRAIAAgASgCABAkIAAgASgCBBAkIAEoAhwhACABQQA2AhwgAARAIABBDGogACgCEBAkIAAgACgCBBAjIAAQBwsgASwAG0EASARAIAEoAhAQBwsgARAHCwuLDwQFfwJ9AnwBfgJAIANFDQACfwJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHEEBaw4LAAECAwQFBgcICQoMCyAALQAYIgQgAkH/AXEiBSAEIAVJGwRAIAAoAgAiBCgCACAAKQMwIAApAyggAa1+fKdqIQEgBCgCBCEHA0AgASAHTw0NIAMgBkEDdGogATAAADcDACABQQFqIQEgBkEBaiIGIAAtABgiBCAFIAQgBUkbSQ0ACwsgBCAFTw0LIAMgBEEDdGohAyACQf8BcSAEawwKCyAALQAYIgQgAkH/AXEi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ACADKAIANgIAIAMgBTYCACAAKAIEIQYgACADKAIENgIEIAMgBjYCBCAAKAIIIQYgACADKAIINgIIIAMgBjYCCCAFRQ0AIAUQBwsgBEUNASACBEAgASABKAIAQX8gAnRBf0EgIAJrIgAgACAEIAAgBEkbIgBrdnFBf3NxNgIAIAQgAGshBCABQQRqIQELIARBBXYhACAEQSBPBEAgAUEAIABBAnQQChoLIAQgBEFgcUYNASABIABBAnRqIgAgACgCAEF/QSAgBEEfcWt2QX9zcTYCAAwBCyAAIAE2AgQLIANBEGokAA8LEAsAC20CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhAqRQ0BIAVB/wBxIAEoAgBBB3RyBSAECzYCAEEBIQMLIAMLdAEBfyACRQRAIAAoAgQgASgCBEYPCyAAIAFGBEBBAQ8LIAEoAgQiAi0AACEBAkAgACgCBCIDLQAAIgBFDQAgACABRw0AA0AgAi0AASEBIAMtAAEiAEUNASACQQFqIQIgA0EBaiEDIAAgAUYNAAsLIAAgAUYLJwEBfyAAQQA2AhAgACAAKAIAIgE2AgQgACABNgIMIAEEQCABEAcLCwQAQQAL4ggBBH8jAEEQayIEJAAgACABNgIMIABBADYCCCAAQgA3AgAgAEEQaiIDQgA3AgAgA0IANwAFIANBEGoiAkIANwIAIAJCADcABSADQSBqIgJCADcCACACQgA3AAUgA0EwaiICQgA3AgAgAkIANwAFIANBQGsiAkIANwIAIAJCADcABSADQdAAaiICQgA3AgAgAkIANwAFIANB4ABqIgJCADcCACACQgA3AAUgA0HwAGoiAkIANwIAIAJCADcABSADQYABaiICQgA3AgAgAkIANwAFIANBkAFqIgJCADcCACACQgA3AAUgA0GgAWoiAkIANwIAIAJCADcABSADQbABaiICQgA3AgAgAkIANwAFIANBwAFqIgJCADcCACACQgA3AAUgA0HQAWoiAkIANwIAIAJCADcABSADQeABaiICQgA3AgAgAkIANwAFIANB8AFqIgJCADcCACACQgA3AAUgA0GAAmoiAkIANwIAIAJCADcABSADQZACaiICQgA3AgAgAkIANwAFIANBoAJqIgJCADcCACACQgA3AAUgA0GwAmoiAkIANwIAIAJCADcABSADQcACaiICQgA3AgAgAkIANwAFIANB0AJqIgJCADcCACACQgA3AAUgA0HgAmoiAkIANwIAIAJCADcABSADQfACaiICQgA3AgAgAkIANwAFIANBgANqIgJCADcCACACQgA3AAUgA0GQA2oiAkIANwIAIAJCADcABSADQaADaiICQgA3AgAgAkIANwAFIANBsANqIgJCADcCACACQgA3AAUgA0HAA2oiAkIANwIAIAJCADcABSADQdADaiICQgA3AgAgAkIANwAFIANB4ANqIgJCADcCACACQgA3AAUgA0HwA2oiA0IANwIAIANCADcABSAAQgA3ApAEIABCADcAlQQgAEIANwKgBCAAQQA2ArAEIABCADcCqAQgAEIANwK0BCAAQQA2AsQEIABCADcCvAQgAEIANwLIBCAAQQA2AtgEIABCADcC0AQgAEEANgLkBCAAQgA3AtwEIABB9ARqAn8CQCABBEAgAUGAgICABEkNARALAAsgAEIANwLoBCAAQQA2AvAEIARBADYCCCAEQgA3AwBBAQwBCyAAIAFBAnQiAxAIIgI2AtwEIAAgAiADaiIFNgLkBCACQQAgAxAKGiAAQQA2AvAEIABCADcC6AQgACAFNgLgBCAAIAMQCCICNgLoBCAAIAIgA2oiBTYC8AQgAkEAIAMQChogACAFNgLsBCAEIAMQCCICNgIAIAQgAiADaiIFNgIIIAJBACADEAoaIAQgBTYCBCABQQV0QQFyCyICIAQQQiAEKAIAIgMEQCAEIAM2AgQgAxAHCyAEQQA2AgggBEIANwMAIAEEQCAEIAFBAnQiARAIIgM2AgAgBCABIANqIgU2AgggA0EAIAEQChogBCAFNgIECyAAQYAFaiACIAQQQiAEKAIAIgEEQCAEIAE2AgQgARAHCyAEQRBqJAAgAAv+AQEEfyAAKAKABSIDBEAgAyECIAMgACgChAUiAUcEQANAIAFBDGsiAigCACIEBEAgAUEIayAENgIAIAQQBwsgAiIBIANHDQALIAAoAoAFIQILIAAgAzYChAUgAhAHCyAAKAL0BCIDBEAgAyECIAMgACgC+AQiAUcEQANAIAFBDGsiAigCACIEBEAgAUEIayAENgIAIAQQBwsgAiIBIANHDQALIAAoAvQEIQILIAAgAzYC+AQgAhAHCyAAKALoBCIBBEAgACABNgLsBCABEAcLIAAoAtwEIgEEQCAAIAE2AuAEIAEQBwsgAEHIBGoQLCAAQbQEahAsIABBoARqECwL2QEBBn8gACgCACIAKAIEIgIgACgCCCIESQRAIAIgASgCADYCACAAIAJBBGo2AgQPCwJAIAIgACgCACICayIGQQJ1IgVBAWoiA0GAgICABEkEQEH/////AyAEIAJrIgRBAXYiByADIAMgB0kbIARB/P///wdPGyIDBH8gA0GAgICABE8NAiADQQJ0EAgFQQALIgQgBUECdGoiBSABKAIANgIAIAAgBCACIAYQDiIBIANBAnRqNgIIIAAgBUEEajYCBCAAIAE2AgAgAgRAIAIQBwsPCxALAAsQDwALjgEBAX8gAARAIAAoAkwiAQRAIAAgATYCUCABEAcLIABBQGsoAgAiAQRAIAAgATYCRCABEAcLIAAoAjAiAQRAIAAgATYCNCABEAcLIAAoAhgiAQRAIAAgATYCHCABEAcLIAAoAgwiAQRAIAAgATYCECABEAcLIAAoAgAiAQRAIAAgATYCBCABEAcLIAAQBwsLBwAgACgCBAsHACAAKAIcCwMAAAt3AgF+An8CQCAAQQpLDQAgAikDECIDIAIpAwhZDQAgAigCACADp2osAAAhBSACIANCAXw3AxAgBa0hAyABAn4gBUEASARAIABBAWogASACEDVFDQIgA0L/AIMgASkDAEIHhoQMAQsgA0L/AYMLNwMAQQEhBAsgBAttAgN/AX4CQCAAQQVLDQAgAikDECIGIAIpAwhZDQAgAigCACAGp2otAAAhBCACIAZCAXw3AxAgASAEwCIFQQBIBH8gAEEBaiABIAIQNkUNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADC28BAX8jAEGAAmsiBSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgAUH/AXEgAiADayIDQYACIANBgAJJIgEbEAoaIAFFBEADQCAAIAVBgAIQSSADQYACayIDQf8BSw0ACwsgACAFIAMQSQsgBUGAAmokAAvAAgEIfyABKAIAIgEoAgghBSABKAIEIQcgASgCACEIIAAoAgAiAygCBCIBIAMoAggiAkkEQCABIAU2AgggASAHNgIEIAEgCDYCACADIAFBDGo2AgQPCwJA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GCADQThqECUgAUEBaiIFIAFBAmsgBUEDcBshBkF/QQIgAUEDcBsgAWohBwJAAkADQCAGIQQCfyAHIAAoAhxFDQAaIAFBAWoiBSABQQJrIAVBA3AbIQQgAUEBayABQQNwDQAaIAFBAmoLIQUgBEF/RgRAIAAoAhQhAQwDCyAAKAIQKAIAIARBAnRqKAIAIgQgACgCFCIBKAIEIAEoAgAiCGtBAnVPDQIgACgCCCAIIARBAnRqKAIAQQJ0aigCACEEIAAoAgQiAS0AVEUEQCABKAJEIARBAnRqKAIAIQQLIANCADcDMCADQgA3AyggA0IANwMgIAEgBCABLAAYIANBIGoQJSAFQX9GBEAgACgCFCEBDAILIAAoAhAoAgAgBUECdGooAgAiBSAAKAIUIgEoAgQgASgCACIEa0ECdU8NASAAKAIIIAQgBUECdGooAgBBAnRqKAIAIQQgACgCBCIBLQBURQRAIAEoAkQgBEECdGooAgAhBAsgA0IANwMYIANCADcDECADQgA3AwggASAEIAEsABggA0EIahAlIAogAykDCCADKQM4Igp9IgkgAykDKCADKQNAIgt9Igx+fSADKQMQIAt9IgsgAykDICAKfSIPfnwhCiANIAkgAykDMCADKQNIIg19IhB+fCADKQMYIA19IgkgD359IQ0gDiALIBB+fSAJIAx+fCEOIANB0ABqEHkgAygCWCIBQX9HDQALIA4gDkI/hyIJhSAJfSEJQv///////////wAhCyANIA1CP4ciDIUgDH0iDEL///////////8AhSEPAkAgCgJ+IAAoAhxFBEAgCSAPVg0CQoCAgIBwIAkgDHwiCSAKIApCP4ciC4UgC30iC3xCIIYgCSALQv///////////wCFVhsiCUKBgICAgICAgCBTDQIgCUI9iAwBCwJAIAkgD1YNACAJIAx8IgkgCiAKQj+HIgyFIAx9IgxC////////////AIVWDQAgCSAMfCILQoGAgIACVA0CCyALQh2ICyIJfyEKIA0gCX8hDSAOIAl/IQ4LIAIgCj4CCCACIA0+AgQgAiAOPgIAIANB4ABqJAAPCxAVAAsQFQALEBUACxYAIAFBAU0EQCAAIAE2AhwLIAFBAkkLlQsCBX8JfiMAQeAAayIEJAAgACgCECEDIARBAToAXCAEIAE2AlggBCABNgJUIAQgAzYCUAJAAkAgAygCHCABQQJ0aigCACIDIAAoAhQiBSgCBCAFKAIAIgVrQQJ1SQRAIAAoAgggBSADQQJ0aigCAEECdGooAgAhAyAAKAIEIgUtAFRFBEAgBSgCRCADQQJ0aigCACEDCyAEQgA3A0ggBEFAa0IANwMAIARCADcDOCAFIAMgBSwAGCAEQThqECUgAUF/RwRAIAFBAWoiAyABQQJrIANBA3AbIQVBf0ECIAFBA3AbIAFqIQcDQCAFIQMCfyAHIAAoAhxFDQAaIAFBAWoiAyABQQJrIANBA3AbIQMgAUEBayABQQNwDQAaIAFBAmoLIQYgACgCECgCHCADQQJ0aigCACIBIAAoAhQiAygCBCADKAIAIgNrQQJ1Tw0DIAAoAgggAyABQQJ0aigCAEECdGooAgAhAyAAKAIEIgEtAFRFBEAgASgCRCADQQJ0aigCACEDCyAEQgA3AzAgBEIANwMoIARCADcDICABIAMgASwAGCAEQSBqECUgACgCECgCHCAGQQJ0aigCACIBIAAoAhQiAygCBCADKAIAIgNrQQJ1Tw0EIAAoAgggAyABQQJ0aigCAEECdGooAgAhAyAAKAIEIgEtAFRFBEAgASgCRCADQQJ0aigCACEDCyAEQgA3AxggBEIANwMQIARCADcDCCABIAMgASwAGCAEQQhqECUgCSAEKQMIIAQpAzgiCX0iCCAEKQMoIAQpA0AiCn0iC359IAQpAxAgCn0iCiAEKQMgIAl9Ig5+fCEJIAwgCCAEKQMwIAQpA0giD30iEH58IAQpAxggD30iCCAOfn0hDCANIAogEH59IAggC358IQ0gBCgCWCEBIAQoAlAhAwJAIAQtAFwEQAJAAkACQAJAIAFBf0YNACABQQFqIgYgAUECayAGQQNwGyIBQX9GDQAgAygCACABQQN2Qfz///8BcWooAgAgAXZBAXENACADKAJAKAIMIAFBAnRqKAIAIgFBf0cNAQsgBEF/NgJYDAELIAQgAUEBaiIGIAFBAmsgBkEDcBsiATYCWCABQX9HDQELAn9BfyAEKAJUIgFBf0YNABoCQCABQQNwBEAgAUEBayEBDAELQX8gAUECaiIBQX9GDQEaC0F/IAMoAgAgAUEDdkH8////AXFqKAIAIAF2QQFxDQAaQX8gAygCQCgCDCABQQJ0aigCACIBQX9GDQAaIAFBAWsgAUEDcA0AGiABQQJqCyEBIARBADoAXCAEIAE2AlgMAgsgASAEKAJURw0BIARBfzYCWAwBCyAEAn9BfyABQX9GDQAaAkAgAUEDcARAIAFBAWshAQwBC0F/IAFBAmoiAUF/Rg0BGgtBfyADKAIAIAFBA3ZB/P///wFxaigCACABdkEBcQ0AGkF/IAMoAkAoAgwgAUECdGooAgAiAUF/Rg0AGiABQQFrIAFBA3ANABogAUECags2AlgLIAQoAlgiAUF/Rw0ACwsgDSANQj+HIgiFIAh9IQhC////////////ACEKIAwgDEI/hyILhSALfSILQv///////////wCFIQ4CQCAJAn4gACgCHEUEQCAIIA5WDQJCgICAgHAgCCALfCIIIAkgCUI/hyIKhSAKfSIKfEIghiAIIApC////////////AIVWGyIIQoGAgICAgICAIFMNAiAIQj2IDAELAkAgCCAOVg0AIAggC3wiCCAJIAlCP4ciC4UgC30iC0L///////////8AhVYNACAIIAt8IgpCgYCAgAJUDQILIApCHYgLIgh/IQkgDCAIfyEMIA0gCH8hDQsgAiAJPgIIIAIgDD4CBCACIA0+AgAgBEHgAGokAA8LEBUACxAVAAsQFQALBABBBgsrAQF/AkAgACgCLEUNACAAKAIwRQ0AIAAoAjRFDQAgACgCOEEARyEBCyABCwQAQQALkgIBBX8gACgCBCICIAAoAghHBEAgAiABKQIANwIAIAIgASgCCDYCCCAAIAJBDGo2AgQPCwJAIAIgACgCACIGa0EMbSIDQQFqIgRB1qrVqgFJBEBB1arVqgEgA0EBdCIFIAQgBCAFSRsgA0Gq1arVAE8bIgQEfyAEQdaq1aoBTw0CIARBDGwQCAVBAAsiBSADQQxsaiIDIAEpAgA3AgAgAyABKAIINgIIIANBDGohASACIAZHBEADQCADQQxrIgMgAkEMayICKQIANwIAIAMgAigCCDYCCCACIAZHDQALIAAoAgAhAgsgACAFIARBDGxqNgIIIAAgATYCBCAAIAM2AgAgAgRAIAIQBwsPCxALAAsQDwALlAQBA38gASAAIAFGIgI6AAwCQCACDQADQCABKAIIIgItAAwNAQJAIAIgAigCCCIDKAIAIgRGBEACQCADKAIEIgRFDQAgBC0ADA0ADAILAkAgASACKAIARgRAIAIhAQwBCyACIAIoAgQiASgCACIANgIEIAEgAAR/IAAgAjYCCCACKAIIBSADCzYCCCACKAIIIgAgACgCACACR0ECdGogATYCACABIAI2AgAgAiABNgIIIAEoAggiAygCACECCyABQQE6AAwgA0EAOgAMIAMgAigCBCIANgIAIAAEQCAAIAM2AggLIAIgAygCCDYCCCADKAIIIgAgACgCACADR0ECdGogAjYCACACIAM2AgQgAyACNgIIDwsCQCAERQ0AIAQtAAwNAAwBCwJAIAEgAigCAEcEQCACIQEMAQsgAiABKAIEIgA2AgAgASAABH8gACACNgIIIAIoAggFIAMLNgIIIAIoAggiACAAKAIAIAJHQQJ0aiABNgIAIAEgAjYCBCACIAE2AgggASgCCCEDCyABQQE6AAwgA0EAOgAMIAMgAygCBCIAKAIAIgE2AgQgAQRAIAEgAzYCCAsgACADKAIINgIIIAMoAggiASABKAIAIANHQQJ0aiAANgIAIAAgAzYCACADIAA2AggMAgsgBEEMaiEBIAJBAToADCADIAAgA0Y6AAwgAUEBOgAAIAMiASAARw0ACwsLBABBAgslAQF/IABByBk2AgAgACgCICIBBEAgACABNgIkIAEQBwsgABAHC/MCAQd/IAEgACgCCCIEIAAoAgQiAmtBAnVNBEAgACABBH8gAkEAIAFBAnQiABAKIABqBSACCzYCBA8LAkACQAJAIAIgACgCACIGa0ECdSIFIAFqIgNBgICAgARJBEBB/////wMgBCAGayIEQQF2IgcgAyADIAdJGyAEQfz///8HTxsiAwRAIANBgICAgARPDQIgA0ECdBAIIQgLIAggBUECdGoiBEEAIAFBAnQiARAKIgcgAWohBSAIIANBAnRqIQEgAiAGRg0CA0AgAkEEayICKAIAIQMgAkEANgIAIARBBGsiBCADNgIAIAIgBkcNAAsgACABNgIIIAAoAgQhASAAIAU2AgQgACgCACECIAAgBDYCACABIAJGDQMDQCABQQRrIgEoAgAhACABQQA2AgAgAARAIAAgACgCACgCBBECAAsgASACRw0ACwwDCxALAAsQDwALIAAgATYCCCAAIAU2AgQgACAHNgIACyACBEAgAhAHCwvKBAEHfyADIAJrIgdBAEwEQA8LAkAgACgCCCIEIAAoAgQiCGsgB04E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AjggAEIANwMwIAAgBTcDKCAAIAQ6ACAgACADNgIcIAAgAjoAGAuCAQEDfyABEB8iAkHw////B0kEQAJAAkAgAkELTwRAIAJBD3JBAWoiAxAIIQQgACADQYCAgIB4cjYCCCAAIAQ2AgAgACACNgIEIAIgBGohAwwBCyAAIAI6AAsgACACaiEDIAAhBCACRQ0BCyAEIAEgAhAOGgsgA0EAOgAAIAAPCxAgAAuxCwICfwJ+IwBBMGsiAyQAIANBpugAKQEANwEmIANBoOgAKQMANwMgIANBmOgAKQMANwMYIANBkOgAKQMANwMQAkACQCABKQMIIAEpAxAiBUIFfFMEQCADQRBqEB8iBEHw////B08NAgJAAkAgBEELTwRAIARBD3JBAWoiARAIIQIgAyABQYCAgIB4cjYCCCADIAI2AgAgAyAENgIEIAIgBGohAQwBCyADIAQ6AAsgAyAEaiEBIAMhAiAERQ0BCyACIANBEGogBBAJGgsgAUEAOgAAIABBfjYCACAAQQRqIQAgAywAC0EATgRAIAAgAykDADcCACAAIAMoAgg2AggMAgsgACADKAIAIAMoAgQQEiADLAALQQBODQEgAygCABAHDAELIAIgASgCACAFp2oiBCgAADYAACACIAQtAAQ6AAQgASABKQMQQgV8IgU3AxAgAkHsCUEFEBgEQEEgEAgiAUEAOgARIAFB2AstAAA6ABAgAUHQCykAADcACCABQcgLKQAANwAAIABBfzYCACAAQQRqIAFBERASIAEQBwwBCyAFIAEpAwhZBEAgA0EQahAfIgRB8P///wdPDQICQAJAIARBC08EQCAEQQ9yQQFqIgEQCCECIAMgAUGAgICAeHI2AgggAyACNgIAIAMgBDYCBCACIARqIQEMAQsgAyAEOgALIAMgBGohASADIQIgBEUNAQsgAiADQRBqIAQQCRoLIAFBADoAACAAQX42AgAgAEEEaiEAIAMsAAtBAE4EQCAAIAMpAwA3AgAgACADKAIINgIIDAILIAAgAygCACADKAIEEBIgAywAC0EATg0BIAMoAgAQBwwBCyACIAEoAgAgBadqLQAAOgAFIAEgASkDEEIBfCIFNwMQIAUgASkDCFkEQCADQRBqEB8iBEHw////B08NAgJAAkAgBEELTwRAIARBD3JBAWoiARAIIQIgAyABQYCAgIB4cjYCCCADIAI2AgAgAyAENgIEIAIgBGohAQwBCyADIAQ6AAsgAyAEaiEBIAMhAiAERQ0BCyACIANBEGogBBAJGgsgAUEAOgAAIABBfjYCACAAQQRqIQAgAywAC0EATgRAIAAgAykDADcCACAAIAMoAgg2AggMAgsgACADKAIAIAMoAgQQEiADLAALQQBODQEgAygCABAHDAELIAIgASgCACAFp2otAAA6AAYgASABKQMQQgF8IgU3AxAgBSABKQMIWQRAIANBEGoQHyIEQfD///8HTw0CAkACQCAEQQtPBEAgBEEPckEBaiIBEAghAiADIAFBgICAgHhyNgIIIAMgAjYCACADIAQ2AgQgAiAEaiEBDAELIAMgBDoACyADIARqIQEgAyECIARFDQELIAIgA0EQaiAEEAkaCyABQQA6AAAgAEF+NgIAIABBBGohACADLAALQQBOBEAgACADKQMANwIAIAAgAygCCDYCCAwCCyAAIAMoAgAgAygCBBASIAMsAAtBAE4NASADKAIAEAcMAQsgAiABKAIAIAWnai0AADoAByABIAEpAxBCAXwiBTcDECAFIAEpAwhZBEAgAyADQRBqEHEhASAAQX42AgAgAEEEaiEAIAEsAAtBAE4EQCAAIAEpAgA3AgAgACABKAIINgIIDAILIAAgASgCACABKAIEEBIgASwAC0EATg0BIAEoAgAQBwwBCyACIAEoAgAgBadqLQAAOgAIIAEgASkDECIFQgF8IgY3AxAgASkDCCAFQgN8UwRAIAMgA0EQahBxIQEgAEF+NgIAIABBBGohACABLAALQQBOBEAgACABKQIANwIAIAAgASgCCDYCCAwCCyAAIAEoAgAgASgCBBASIAEsAAtBAE4NASABKAIAEAcMAQsgAiABKAIAIAanai8AADsBCiABIAEpAxBCAnw3AxAgAEIANwIIIABCADcCAAsgA0EwaiQADwsQIAALiQEBAX8gACgCVCIBBEAgACABNgJYIAEQBwsgACgCSCIBBEAgACABNgJMIAEQBwsgACgCNCIBBEAgACABNgI4IAEQBwsgACgCKCIBBEAgACABNgIsIAEQBwsgACgCHCIBBEAgACABNgIgIAEQBwsgACgCDCIBBEAgARAHCyAAKAIAIgAEQCAAEAcLC64BAQd/IAFFBEAgAkEANgIADwtBACAALQAMa0H/AXEhBiAAKAIEIQUgACgCCCEDIAAoAgAhCANAIARBAXQhBAJAIANB/x9LDQAgBUEATA0AIAAgBUEBayIFNgIEIAUgCGotAAAgA0EIdHIhAwsgACADQQh2IAZsIgcgA0H/AXEiCWogAyAGIAdqayAGIAlLIgcbIgM2AgggBCAHciEEIAFBAWsiAQ0ACyACIAQ2AgALpgYBCX8gAiACKAIEIAEoAhAiCmsiB61CIIYgAigCACAKayIErYQ3AgACQCABKAIQIgsgByAHQR91IgVzIAVrIAQgBEEfdSIFcyAFa2pPIgwEQCAHIQUMAQsCQAJAIARBAE4EQEEBIQZBASEIIAdBAE4NAkEBIQlBfyEGQX8hCCAEDQEMAgtBfyEJQX8hBkF/IQggB0EATA0BC0F/QQEgB0EATBshBiAJIQgLIAIgBiALbCIJQQAgBEEBdCAIIAtsIgRrIgVrIAUgBiAIbEEATiIGG2pBAm0iBTYCBCACIARBACAHQQF0IAlrIgRrIAQgBhtqQQJtIgQ2AgALAkACfwJAAkACQAJAAkAgBARAIARBAEgNASAFQQBODQIMBQsgBQ0CQQEhCEEAIQZBACEFQQAhCQwGC0EBIQggBUEASg0CQQNBACAFQQBKGyEJIAUhBiAEIQUMBQtBACAFayEGQQAgBGshBUECDAMLIAVBAEwNAQtBACAFayEFIAQhBkEDDAELQQAgBGshBkEBCyEJIAIgBa0gBq1CIIaENwIAQQAhCAsCQCABKAIQIgcgAygCACAFaiIESARAIAQgASgCBGshBAwBCyAEQQAgB2tODQAgASgCBCAEaiEECwJAIAMoAgQgBmoiAiAHSgRAIAIgASgCBGshAgwBCyACQQAgB2tODQAgASgCBCACaiECCwJAIAgEQCACIQEMAQsgAiEBAkACQAJAQQQgCWsiA0EAIAlrIANBBEkbQQFrDgMAAQIDC0EAIARrIQEgAiEEDAILQQAgAmshAUEAIARrIQQMAQsgBCEBQQAgAmshBAsCQCAMBEAgASECDAELAkACQCAEQQBOBEBBASECQQEhBSABQQBODQJBASEDQX8hAkF/IQUgBA0BDAILQX8hA0F/IQJBfyEFIAFBAEwNAQtBf0EBIAFBAEwbIQIgAyEFCyACIAdsIgZBACAEQQF0IAUgB2wiBGsiA2sgAyACIAVsQQBOIgMbakECbSECQQAgAUEBdCAGayIBayABIAMbIARqQQJtIQQLIAAgBCAKaq0gAiAKaq1CIIaENwIAC6UEAQh/IAIgAigCBCABKAIQIgprIgetQiCGIAIoAgAgCmsiBK2ENwIAAkAgASgCECIGIAcgB0EfdSIFcyAFayAEIARBH3UiBXMgBWtqTyILBEAgByEFDAELAkACQCAEQQBOBEBBASEFQQEhCCAHQQBODQJBASEJQX8hBUF/IQggBA0BDAILQX8hCUF/IQVBfyEIIAdBAEwNAQtBf0EBIAdBAEwbIQUgCSEICyACIAUgBmwiCUEAIARBAXQgBiAIbCIGayIEayAEIAUgCGxBAE4iCBtqQQJtIgU2AgQgAkEAIAdBAXQgCWsiAmsgAiAIGyAGakECbSIENgIAIAEoAhAhBgsgAygCBCAFaiECAkAgAygCACAEaiIEIAZKBEAgBCABKAIEayEEDAELIARBACAGa04NACABKAIEIARqIQQLAkAgAiAGSgRAIAIgASgCBGshAgwBCyACQQAgBmtODQAgASgCBCACaiECCwJAIAsEQCACIQYMAQsCQAJAIARBAE4EQEEBIQFBASEFIAJBAE4NAkEBIQNBfyEBQX8hBSAEDQEMAgtBfyEDQX8hAUF/IQUgAkEATA0BC0F/QQEgAkEATBshASADIQULIAEgBmwiA0EAIARBAXQgBSAGbCIHayIGayAGIAEgBWxBAE4iARtqQQJtIQZBACACQQF0IANrIgJrIAIgARsgB2pBAm0hBAsgACAEIApqrSAGIApqrUIghoQ3AgALJQEBfwJAIAEoAjgNACABLQAYQQNHDQAgACABNgIwQQEhAgsgAgtDAQF/AkAgACgCMEUNACAAKAI0RQ0AIAAoAhxFDQAgACgCIEUNACAAKAIkRQ0AIAAoAihFDQAgACgCTEF/RyEBCyABC+gCAQN/IAAoAgghASAAKAIAIQMCQCAALQAMBEACQAJAAkACQCABQX9GDQAgAUEBaiICIAFBAmsgAkEDcBsiAUF/Rg0AIAMoAgwgAUECdGooAgAiAUF/Rw0BCyAAQX82AggMAQsgACABQQFqIgIgAUECayACQQNwGyIBNgIIIAFBf0cNAQsCf0F/IAAoAgQiAkF/Rg0AGgJAIAJBA3AEQCACQQFrIQIMAQtBfyACQQJqIgJBf0YNARoLQX8gAygCDCACQQJ0aigCACICQX9GDQAaIAJBAWsgAkEDcA0AGiACQQJqCyEBIABBADoADCAAIAE2AggPCyABIAAoAgRHDQEgAEF/NgIIDwsgAAJ/QX8gAUF/Rg0AGgJAIAFBA3AEQCABQQFrIQEMAQtBfyABQQJqIgFBf0YNARoLQX8gAygCDCABQQJ0aigCACIBQX9GDQAaIAFBAWsgAUEDcA0AGiABQQJqCzYCCAsLKgEBfwJAIAFFDQAgASgCOA0AIAEtABhBA0cNACAAIAE2AjxBASECCyACCzMBAX8CQCAAKAI8RQ0AIAAoAixFDQAgACgCMEUNACAAKAI0RQ0AIAAoAjhBAEchAQsgAQs6AQJ+IAIpAwgiBCACKQMQIgNVBEAgAigCACADp2otAAAhASACIANCAXw3AxAgACABNgIECyADIARTCy4BAX8gACgCECIBBEAgACABNgIUIAEQBwsgACgCACIBBEAgACABNgIEIAEQBwsLDAAgABC2ARogABAHC7cEAQd/IABCADcCECAAQQA2AgggAEIANwIAIABBADYCGCABKAIEIgQgASgCACIGayIFQRRtIQICQCAEIAZGBEAMAQsCQCACQc2Zs+YASQRAIAAgBRAIIgQ2AhQgACAENgIQIAAgBCACQRRsajYCGCABKAIAIgIgASgCBCIGRg0CIAQhAQNAIAEgAikCADcCACABIAIoAhA2AhAgASACKQIINwIIIAFBFGohASACQRRqIgIgBkcNAAtBACEGIABBADYCHCAAIAE2AhQgASAERwRAQQEgASAEa0EUbSIBIAFBAU0bIgVBA3EhB0EAIQFBACECIAVBAWtBA08EQCAFQXxxIQhBACEFA0AgAiAEIAFBFGxqIgMoAhAgAygCDGwiAyACIANLGyICIAQgAUEBckEUbGoiAygCECADKAIMbCIDIAIgA0sbIgIgBCABQQJyQRRsaiIDKAIQIAMoAgxsIgMgAiADSxsiAiAEIAFBA3JBFGxqIgMoAhAgAygCDGwiAyACIANLGyECIAFBBGohASAFQQRqIgUgCEcNAAsLIAcEQANAIAIgBCABQRRsaiIFKAIQIAUoAgxsIgUgAiAFSxshAiABQQFqIQEgBkEBaiIGIAdHDQALCyACRQRAIABBADYCDCAADwsgAkEASA0CIAAgAhAIIgZBACACEAoiASACaiIE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QQxqIAFB1OoAEIkBAkAgACgCICAAKAIYIgNrQQJ1IAJPDQAgAkGAgICABE8NAiAAKAIcIQEgAkECdCICEAgiBCACaiEGIAQgASADa0F8cWoiBCECIAEgA0cEQANAIAJBBGsiAiABQQRrIgEoAgA2AgAgASADRw0ACwsgACAGNgIgIAAgBDYCHCAAIAI2AhggA0UNACADEAcLIABCADcCUCAAKAJMIQEgAEEANgJMIAEEQCABEAcLIABCADcCRCAAQUBrIgEoAgAhACABQQA2AgAgAEUNACAAEAcLIAUPCxALAAvvAQECfyAAIAAoAgQiAiABaiIDNgIEIAJBACADQQFrIAJBAWtzQSBJG0UEQCAAKAIAIANBAWtBBXZBACADQSFPG0ECdGpBADYCAAsCQCABRQ0AIAAoAgAgAkEDdkH8////AXFqIQAgAkEfcSICBEAgACAAKAIAQX8gAnRBf0EgIAJrIgIgAiABIAEgAksbIgJrdnFBf3NxNgIAIAEgAmshASAAQQRqIQALIAFBBXYhAiABQSBPBEAgAEEAIAJBAnQQChoLIAEgAUFgcUYNACAAIAJBAnRqIgAgACgCAEF/QSAgAUEfcWt2QX9zcTYCAAsLBABBAgsrACABBEAgACABKAIAEI0BIAAgASgCBBCNASABQRRqIAEoAhgQUyABEAcLC24CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhCOAUUNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADCxAAIAAoAgQgACgCAGtBAnULBwAgACgCUAsLACAABEAgABAHCwvHAQEEfwJAIAAgARA8IgEgAEEEakYNACABQRxqIgAoAgAgACABLAAnQQBIGyEBA0AgASIAQQFqIQEgACwAACICQSBGIAJBCWtBBUlyDQALAkACQAJAIAAsAAAiAkEraw4DAQIAAgtBASEECyABLAAAIQIgASEACyACQTBrQQpJBEADQCADQQpsIAAsAABrQTBqIQMgACwAASEBIABBAWohACABQTBrQQpJDQALCyADQQAgA2sgBBsiAEF/Rg0AIABBAEchBQsgBQuIAQEDfyAABEAgACgCGCIDBEAgACgCHCICIAMiAUcEQANAIAJBBGsiAigCACEBIAJBADYCACABBEAgAUEMaiABKAIQECQgASABKAIEECMgARAHCyACIANHDQALIAAoAhghAQsgACADNgIcIAEQBwsgAEEMaiAAKAIQECQgACAAKAIEECMgABAHCws3ACAAQQA2AiggAEIANwIEIABB4OcANgIAIABCADcCDCAAQgA3AhQgAEIANwIcIABBADsBJCAAC4ABAQN/IABB4OcANgIAIAAoAhQiAgRAIAAgAjYCGCACEAcLIAAoAggiAgRAIAAoAgwiAyACIgFHBEADQCADQQRrIgMoAgAhASADQQA2AgAgAQRAIAEgASgCACgCBBECAAsgAiADRw0ACyAAKAIIIQELIAAgAjYCDCABEAcLIAAQBwttAQJ/QSgQCCICQX82AgAgAkEIaiIDQgA3AxAgA0EANgIIIANCADcDACADQgA3AxggACACIAAoAgAoAhARBAAgASgCWCEAIAEgAjYCWCAABEAgACgCCCIBBEAgACABNgIMIAEQBwsgABAHC0EBC5oBAQR/IAAoAgAiBARAIAQhAyAEIAAoAgQiAUcEQANAIAFBkAFrIgMoAoQBIgIEQCABQQhrIAI2AgAgAhAHCyABQRxrKAIAIgIEQCABQRhrIAI2AgAgAhAHCyABQShrKAIAIgIEQCABQSRrIAI2AgAgAhAHCyABQYwBaxBzIAMiASAERw0ACyAAKAIAIQMLIAAgBDYCBCADEAcLCwcAIAAoAggLsgEBA38CQCAAKAIEIgIgACgCCCIEQQV0RgRAIAJBAWpBAEgNAUH/////ByEDIAAgAkH+////A00EfyAEQQZ0IgMgAkFgcUEgaiICIAIgA0kbBUH/////BwsQPiAAKAIEIQILIAAgAkEBajYCBEEBIAJ0IQMgACgCACACQQN2Qfz///8BcWohACABLQAABEAgACAAKAIAIANyNgIADwsgACAAKAIAIANBf3NxNgIADwsQCwALxBQCEX8BfiMAQSBrIgUkACAAKAIEKAIsIQcgACgCCCIDKAIAIQIgAygCBCEDIAVBADYCGCAFQgA3AxACQCADIAJrQQJ1QQNuIgQgBygCZCAHKAJgIgNrQQxtIgJLBEAgBCACayIGIAcoAmgiBCAHKAJkIgJrQQxtTQRAAkAgBkUNACACIQMgBkEMbEEMayIIQQxuQQFqQQNxIgQE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/wMgBCADayIEQQF2IgogBSAFIApJGyAEQfz///8HTxsiBQR/IAVBgICAgARPDQggBUECdBAIBUEACyIEIAZBAnRqIgYgCDYCACACIAQgAyAJEA4iBDYChAEgAiAGQQRqNgKIASACIAQgBUECdGo2AowBIANFDQAgAxAHCyABQQFqIgEgACgC3AEgACgC2AFrQZABbUkNAQwDCwsQCwALQQAhASAAKALYASICIAAoAtwBRg0AA0ACQCACIAFBkAFsaiICKAKIASIDIAIoAowBIgRJBEAgAyAINgIAIAIgA0EEajYCiAEMAQsgAyACKAKEASIDayIJQQJ1IgZBAWoiBUGAgICABE8NBEH/////AyAEIANrIgRBAXYiCiAFIAUgCkkbIARB/P///wdPGyIFBH8gBUGAgICABE8NBiAFQQJ0EAgFQQALIgQgBkECdGoiBiAINgIAIAIgBCADIAkQDiIENgKEASACIAZBBGo2AogBIAIgBCAFQQJ0ajYCjAEgA0UNACADEAcLIAFBAWoiASAAKALcASAAKALYASICa0GQAW1JDQALCyALQQFqIgtBA0cNAAsgB0EQaiQAQQEPCxALAAsQDwAL5gsBBn8gASAAKAIEIgIgACgCACIGa0GQAW0iA0sEQAJAIAEgA2siAyAAIgEoAggiBiAAKAIEIgJrQZABbU0EQAJAIANFDQAgAiEAIANBB3EiBgRAA0AgABAbIABBkAFqIQAgBEEBaiIEIAZHDQALCyADQZABbCACaiECIANBAWtB/////wBxQQdJDQADQCAAEBsgAEGQAWoQGyAAQaACahAbIABBsANqEBsgAEHABGoQGyAAQdAFahAbIABB4AZqEBsgAEHwB2oQGyAAQYAJaiIAIAJHDQALCyABIAI2AgQMAQsCQAJAAkAgAiABKAIAIgJrQZABbSIHIANqIgBB8ricDkkEQEHxuJwOIAYgAmtBkAFtIgJBAXQiBiAAIAAgBkkbIAJBuJyOB08bIgYEQCAGQfK4nA5PDQIgBkGQAWwQCCEFCyAHQZABbCAFaiICIQAgA0EHcSIHBEADQCAAEBsgAEGQAWohACAEQQFqIgQgB0cNAAsLIANBkAFsIAJqIQcgA0EBa0H/////AHFBB08EQANAIAAQGyAAQZABahAbIABBoAJqEBsgAEGwA2oQGyAAQcAEahAbIABB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AgAgA0UNAiADEAcMAgsgASAETw0BIAAgASADajYCBAwBC0EAIAJCAFMNAhoCQCAAKAIEIgYgACgCACIEayIFrSACWQ0AIAKnIgMgBUsEQCADIAVrIgcgACgCCCIIIAZrTQRAIAAgBkEAIAcQCiAHajYCBAwCCyADQQBIDQNB/////wcgCCAEayIGQQF0IgggAyADIAhJGyAGQf////8DTxsiBhAIIgggBWpBACAHEAoaIAAgCCAEIAUQDiIFIAZqNgIIIAAgAyAFajYCBCAAIAU2AgAgBEUNASAEEAcMAQsgAyAFTw0AIAAgAyAEajYCBAsgAqciA0UNACAAKAIAIAEgAxAOGgsgACAAKQMYQgF8NwMYQQEMAQsQCwALC7MNAQp/IwBBIGsiCCQAIAEgAzYCICABIAI2AiggASAENgIEIAAgAyAIQRBqEHICQCAAKAIADQAgACwAD0EASARAIAAoAgQQBwsgCC0AFyIEIAEgASgCACgCCBEAAEcEQEHAABAIIgFBADoAMiABQaIKLwAAOwAwIAFBmgopAAA3ACggAUGSCikAADcAICABQYoKKQAANwAYIAFBggopAAA3ABAgAUH6CSkAADcACCABQfIJKQAANwAAIABBfzYCACAAQQRqIAFBMhASIAEQBwwBCyABIAgtABUiAjoAJCABIAgtABYiAzoAJSACQQNrQf8BcUH9AU0EQEEgEAgiAUEAOgAWIAFBjwspAAA3AA4gAUGJCykAADcACCABQYELKQAANwAAIABBezYCACAAQQRqIAFBFhASIAEQBwwBCwJAIAJBAkcNAEECQQMgBBsgA08NAEEgEAgiAUEAOgAWIAFB+AopAAA3AA4gAUHyCikAADcACCABQeoKKQAANwAAIABBezYCACAAQQRqIAFBFhASIAEQBwwBCyABKAIgIAJBCHQgA3IiAjsBJgJAIAJB//8DcUGDAkkNACAILgEaQQBODQAjAEEQayIEJABBJBAIIgJCADcCBCACQgA3AhggAkEQaiIDQgA3AgAgAiACQQRqNgIAIAJBADYCICACIAM2AgwgBEEANgIAIAEoAiAhAyMAQRBrIgkkAAJ/QQAgAkUNABogBCADNgIAIAlBADYCDEEAQQEgCUEMaiADEEpFDQAaIAkoAgwiDQRAA0ACQEEBIAlBCGogBCgCABBKBEBBHBAIIgNCADcCBCADQRBqIgdCADcCACADIANBBGo2AgAgAyAHNgIMIAMgCSgCCDYCGCAEIAMQ1AENASADQQxqIAMoAhAQJCADIAMoAgQQIyADEAcLQQAMAwsjAEEQayIHJAAgByADNgIIAkAgA0UNAAJAIAIoAhwiBSACKAIgSQRAIAdBADYCCCAFIAM2AgAgAiAFQQRqNgIcDAELQQAhAwJAAkACQCACKAIcIAIoAhgiBmtBAnUiC0EBaiIFQYCAgIAESQRAQf////8DIAIoAiAgBmsiBkEBdiIKIAUgBSAKSRsgBkH8////B08bIgYEQCAGQYCAgIAETw0CIAZBAnQQCCEDCyAHKAIIIQogB0EANgIIIAMgC0ECdGoiBSAKNgIAIAMgBkECdGohBiAFQQRqIQsgAigCHCIDIAIoAhgiCkYNAgNAIANBBGsiAygCACEOIANBADYCACAFQQRrIgUgDjYCACADIApHDQALIAIgBjYCICACKAIcIQYgAiALNgIcIAIoAhghAyACIAU2AhggAyAGRg0DA0AgBkEEayIGKAIAIQUgBkEANgIAIAUEQCAFQQxqIAUoAhAQJCAFIAUoAgQQIyAFEAcLIAMgBkcNAAsMAwsQCwALEA8ACyACIAY2AiAgAiALNgIcIAIgBTYCGAsgAwRAIAMQBwsLIAcoAgghAyAHQQA2AgggA0UNACADQQxqIAMoAhAQJCADIAMoAgQQIyADEAcLIAdBEGokACAMQQFqIgwgDUcNAAsLIAQgAhDUAQshAyAJQRBqJAACQCADBEAgASgCBCIHKAIEIQMgByACNgIEIAMEQCADEJMBCyAAQgA3AgAgAEIANwIIDAELQSAQCCIDQQA6ABogA0GrDC8AADsAGCADQaMMKQAANwAQIANBmwwpAAA3AAggA0GTDCkAADcAACAAQX82AgAgAEEEaiADQRoQEiADEAcgBEEANgIIIAIQkwELIARBEGokACAAKAIADQEgACwAD0EATg0AIAAoAgQQBwsgASABKAIAKAIMEQAARQRAQTAQCCIBQQA6ACEgAUHoCi0AADoAICABQeAKKQAANwAYIAFB2AopAAA3ABAgAUHQCikAADcACCABQcgKKQAANwAAIABBfzYCACAAQQRqIAFBIRASIAEQBwwBCyABIAEoAgAoAhQRAABFBEAgCEGuDBBxIQEgAEF/NgIAIABBBGohACABLAALQQBOBEAgACABKQIANwIAIAAgASgCCDYCCAwCCyAAIAEoAgAgASgCBBASIAEsAAtBAE4NASABKAIAEAcMAQsgASABKAIAKAIYEQAARQRAIAhBpQoQcSEBIABBfzYCACAAQQRqIQAgASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggMAgsgACABKAIAIAEoAgQQEiABLAALQQBODQEgASgCABAHDAELIABCADcCACAAQgA3AggLIAhBIGokAAuDAgEHfyABIAAoAggiAiAAKAIEIgNrQQJ1TQRAIAAgAQR/IANBACABQQJ0IgAQCiAAagUgAws2AgQPCwJAIAMgACgCACIFa0ECdSIHIAFqIgRBgICAgARJBEBB/////wMgAiAFayICQQF2IgggBCAEIAhJGyACQfz///8HTxsiBARAIARBgICAgARPDQIgBEECdBAIIQYLIAdBAnQgBmoiAkEAIAFBAnQiARAKIAFqIQEgAyAFRwRAA0AgAkEEayICIANBBGsiAygCADYCACADIAVHDQALCyAAIAYgBEECdGo2AgggACABNgIEIAAgAjYCACAFBEAgBRAHCw8LEAsACxAPAAuGAgEGf0HAABAIIQRBDBAIIgIgACgCBCgCUDYCCCACQaDnADYCACACQQA2AgQgBCACEKoBIQQCQAJAIAFBAEgEQCAEIQIMAQsgAEEIaiEHAkAgACgCDCICIAAoAggiBWtBAnUiBiABSg0AIAFBAWohAyABIAZPBEAgByADIAZrEF4MAQsgAyAGTw0AIAUgA0ECdGoiBSACRwRAA0AgAkEEayICKAIAIQMgAkEANgIAIAMEQCADIAMoAgAoAgQRAgALIAIgBUcNAAsLIAAgBTYCDAsgBygCACABQQJ0aiIAKAIAIQIgACAENgIAIAJFDQELIAIgAigCACgCBBECAAsgAUF/c0EfdgvHCwEJfyABQX9GBEBBAQ8LIAAoAhggAUEDbiIDQQN2Qfz///8AcWooAgAgA3ZBAXFFBEAgACAAKAIwIgI2AjQCQCAAKAI4IAJHBEAgAiABNgIAIAAgAkEEajYCNAwBC0EEEAgiBCABNgIAIAAgBEEEaiIFNgI4IAAgBTYCNCAAIAQ2AjAgAkUNACACEAcLIAAoAgQoAhwiBCABQQFqIgIgAUECayACQQNwGyIF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ASgCACEEIAEoAgQhASADQQA6AA8gAEEYaiABIARrQQJ1QQNuIANBD2oQISAAKAIEIgEoAjghBCABKAI0IQEgA0EAOgAOIABBJGogBCABa0ECdSADQQ5qECEgACACKQIINwIQIAAgAikCADcCCCADQRBqJAALggICA38CfgJAIAAoAgwiBCAAKAIIIgNrQQJ1IgUgAS0AGCIBSQRAIABBCGogASAFaxARIAAoAgghAyAAKAIMIQQMAQsgASAFTw0AIAAgAyABQQJ0aiIENgIMC0EAIQECQCACKQMIIAIpAxAiBiAEIANrIgStIgd8Uw0AIAMgAigCACAGp2ogBBAJGiACIAIpAxAgB3wiBjcDECACKQMIIAZCBHxTDQAgACACKAIAIAanaigAADYCFCACIAIpAxAiB0IEfCIGNwMQIAIpAwggBlcNACACKAIAIAanai0AACEDIAIgB0IFfDcDECADQQFrQR1LDQAgACADNgIEQQEhAQsgAQsZACAAEJQBIgBBADYCLCAAQazXADYCACAAC7QMAg5/A34jAEFAaiIEJAAgBEEANgI4IARCADcDMCAEQgA3AyggBEIANwMgIARCADcDGCAEQgA3AxAgBEIANwMIAkACfyAEQQhqIQUCQCABLwEmIgNFDQACQCADQf8DTQRAIAEpAwggASkDECIRQgR8Uw0CIAUgASgCACARp2ooAAAiCDYCDCABIAEpAxBCBHwiETcDEAwBC0EBIAVBDGogARA2RQ0BIAEpAxAhESAFKAIMIQgLIAhBBnatIAEpAwggEX1VDQACQCAFKAIEIAUoAgAiCWtBAnUiAyAISQRAIAUgCCADaxARIAUoAgwhCAwBCyADIAhNDQAgBSAJIAhBAnRqNgIEC0EBIAhFDQEaIAEpAxAhESAFKAIAIQsgASkDCCESQQAhCQNAQQAgESASWQ0CGiABKAIAIgogEadqLQAAIQYgASARQgF8IhE3AxAgBkECdiEDQQAhBwJAAkACQAJAIAZBA3EiDQ4EAgEBAAELQQAgCCADIAlqIgNNDQUaIAsgCUECdGpBACAGQfwBcUEEahAKGiADIQkMAgsDQCARIBJRDQQgCiARp2otAAAhCCABIBFCAXwiETcDECAIIAdBA3RBBnJ0IANyIQMgB0EBaiIHIA1HDQALCyALIAlBAnRqIAM2AgALIAlBAWoi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AQMCBAUHC0E8EAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0PIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABBhBQ2AgAMBgtBPBAIIgAgAzYCBCAAQcgZNgIAIAAgAikCADcCCCAAIAIpAgg3AhAgACACKQIQNwIYIABBADYCKCAAQgA3AiAgAigCHCIFIAIoAhgiA0cEQCAFIANrIgZBAEgNDiAAIAYQCCIBNgIgIAAgASAGQXxxajYCKANAIAEgAygCADYCACABQQRqIQEgA0EEaiIDIAVHDQALIAAgATYCJAsgACAEKQIANwIsIAAgBCkCCDcCNCAAQYAaNgIADAULQfAAEAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0NIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABCADcCPCAAQewbNgIAIABCADcCRCAAQgA3AkwgAEIANwJUIABCADcCXCAAQgA3AmQgAEEANgJsDAQLQdwAEAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0MIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABCADcCPCAAQeQdNgIAIABCADcCRCAAQgA3AkwgAEEANgJUIAAgCTYCWAwDC0HoABAIIgAgAzYCBCAAQcgZNgIAIAAgAikCADcCCCAAIAIpAgg3AhAgACACKQIQNwIYIABBADYCKCAAQgA3AiAgAigCHCIFIAIoAhgiA0cEQCAFIANrIgZBAEgNCyAAIAYQCCIBNgIgIAAgASAGQXxxajYCKANAIAEgAygCADYCACABQQRqIQEgA0EEaiIDIAVHDQALIAAgATYCJAsgACAEKQIANwIsIAAgBCkCCDcCNCAAQQA2AlQgAEIANwJMIABCADcCPCAAQcgfNgIAIAAgBCkCADcCWCAAIAQpAgg3AmAMAgsCf0GAARAIIgAgAzYCBCAAQcgZNgIAIAAgAikCADcCCCAAIAIpAgg3AhAgACACKQIQNwIYIABBADYCKCAAQgA3AiACQCACKAIcIgEgAigCGCIDRwRAIAEgA2siA0EASA0BIAAgAxAIIgE2AiQgACABNgIgIAAgASADQXxxajYCKCACKAIYIgMgAigCHCIFRwRAA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsLIAAgATYCJAsgAEGQGTYCACAAIAQpAgA3AiwgACAEKQIINwI0IABBQGtCADcCACAAQagmNgI8IABBtCE2AgAgACAEKQIANwJIIAAgBCkCCDcCUCAAQoCAgPxzNwJoIABCfzcCYCAAQoGAgIBwNwJYIABBoCM2AjwgAEIANwJwIABCADcAdSAADAELDAoLIQAMAQsACwwBCyAEKAIsIQAgByAKNgIMIAcgADYCCCAHIAU2AhQgByAFQQxqNgIQIAdBCGohBEEAIQACQAJAAkACQAJAAkACQAJAIAFBAWsOBgABAwIEBQcLQTwQCCIAIAM2AgQgAEHIGTYCACAAIAIpAgA3AgggACACKQIINwIQIAAgAikCEDcCGCAAQQA2AiggAEIANwIgIAIoAhwiBSACKAIYIgNHBEAgBSADayIGQQBIDQ4gACAGEAgiATYCICAAIAEgBkF8cWo2AigDQCABIAMoAgA2AgAgAUEEaiEBIANBBGoiAyAFRw0ACyAAIAE2AiQLIAAgBCkCADcCLCAAIAQpAgg3AjQgAEHEJjYCAAwGC0E8EAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0NIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABB7Ck2AgAMBQtB8AAQCCIAIAM2AgQgAEHIGTYCACAAIAIpAgA3AgggACACKQIINwIQIAAgAikCEDcCGCAAQQA2AiggAEIANwIgIAIoAhwiBSACKAIYIgNHBEAgBSADayIGQQBIDQwgACAGEAgiATYCICAAIAEgBkF8cWo2AigDQCABIAMoAgA2AgAgAUEEaiEBIANBBGoiAyAFRw0ACyAAIAE2AiQLIAAgBCkCADcCLCAAIAQpAgg3AjQgAEIANwI8IABBzCs2AgAgAEIANwJEIABCADcCTCAAQgA3AlQgAEIANwJcIABCADcCZCAAQQA2AmwMBAtB3AAQCCIAIAM2AgQgAEHIGTYCACAAIAIpAgA3AgggACACKQIINwIQIAAgAikCEDcCGCAAQQA2AiggAEIANwIgIAIoAhwiBSACKAIYIgNHBEAgBSADayIGQQBIDQsgACAGEAgiATYCICAAIAEgBkF8cWo2AigDQCABIAMoAgA2AgAgAUEEaiEBIANBBGoiAyAFRw0ACyAAIAE2AiQLIAAgBCkCADcCLCAAIAQpAgg3AjQgAEIANwI8IABBuC02AgAgAEIANwJEIABCADcCTCAAQQA2AlQgACAJNgJYDAMLQegAEAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0KIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABBADYCVCAAQgA3AkwgAEIANwI8IABBkC82AgAgACAEKQIANwJYIAAgBCkCCDcCYAwCCwJ/QYABEAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCIAJAIAIoAhwiASACKAIYIgNHBEAgASADayIDQQBIDQEgACADEAgiATYCJCAAIAE2AiAgACABIANBfHFqNgIoIAIoAhgiAyACKAIcIgVHBEADQCABIAMoAgA2AgAg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RQ0AIAAgACgCACgCLBEAACECCyACCwQAQQULMwAgAARAIAAsACdBAEgEQCAAKAIcEAcLIABBDGogACgCEBCNASAAIAAoAgQQUyAAEAcLC7oBAQR/IwBBEGsiAyQAIAMgACABIAIQ+gEgACADKAIANgIYAkAgAEEYaiIFIANGDQAgAEEcaiEBIANBBHIhAiADLQAPIgbAIQQgACwAJ0EATgRAIARBAE4EQCABIAIpAgA3AgAgASACKAIINgIIDAILIAEgAygCBCADKAIIEGAMAQsgASADKAIEIAIgBEEASCIAGyADKAIIIAYgABsQYQsgAywAD0EASARAIAMoAgQQBwsgA0EQaiQAIAULugEBBH8jAEEQayIDJAAgAyAAIAEgAhD7ASAAIAMoAgA2AhgCQCAAQRhqIgUgA0YNACAAQRxqIQEgA0EEciECIAMtAA8iBsAhBCAALAAnQQBOBEAgBEEATgRAIAEgAikCADcCACABIAIoAgg2AggMAgsgASADKAIEIAMoAggQYAwBCyABIAMoAgQgAiAEQQBIIgAbIAMoAgggBiAAGxBhCyADLAAPQQBIBEAgAygCBBAHCyADQRBqJAAgBQvVAwEEfyMAQSBrIgMkACADQQhqIQIjAEHQAGsiACQAIAAgASkDIDcDSCAAQUBrIAEpAxg3AwAgACABKQMQNwM4IAAgASkDCDcDMCAAIAEpAwA3AyggAEEIaiAAQShqIABBGGoQcgJAIAAoAggiAQRAIAIgATYCACACQQRqIQEgACwAF0EATgRAIAEgAEEIakEEciICKQIANwIAIAEgAigCCDYCCAwCCyABIAAoAgwgACgCEBASIAAsABdBAE4NASAAKAIMEAcMAQsgACwAF0EASARAIAAoAgwQBwsgAC0AHyIBQQJPBEBBIBAIIgFBADoAGiABQcULLwAAOwAYIAFBvQspAAA3ABAgAUG1CykAADcACCABQa0LKQAANwAAIABBfzYCCCAAQQhqQQRyIgQgAUEaEBIgACwAFyEFIAIgACgCCDYCACACQQRqIQIgBUEATgRAIAIgBCkCADcCACACIAQoAgg2AgggARAHDAILIAIgACgCDCAAKAIQEBIgACwAF0EASARAIAAoAgwQBwsgARAHDAELIAJCADcCACACIAE2AhAgAkIANwIICyAAQdAAaiQAIAMoAhghACAD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IAYgAEECcmotAAA6AAIgBCADKAIAaiAGIABBA3JqLQAAOgADIABBBGohACAEQQRqIQQgCkEEaiIKIAhHDQALCyAHBEADQCADKAIAIARqIAAgBmotAAA6AAAgAEEBaiEAIARBAWohBCABQQFqIgEgB0cNAAsLIAVBAWoiBSALTyEBIAUgC0cNAAsMAwsQCwALEAsACyAGRQ0BCyAGEAcLIAxBEGokACABQQFxC5AGAQl/IwBBEGsiDCQAIAEoAlAiCyACLQAYIgVsIQACQAJAAkACQAJAIAIoAhwiAUEBRyABQQJHcQ0AIAItAFRFDQAgAigCMCEBIAIoAgAoAgAhAiAMQQA2AgggDEIANwMAIAAEQCAAQQBIDQIgABAIIgYgASACaiAAEAkgAGohBAsgAygCACIABEAgAyAANgIEIAAQBwsgAyAENgIIIAMgBDYCBCADIAY2AgBBASEBDAQLIAUEQCAFEAgiBkEAIAUQChoLAkACQCADKAIEIgggAygCACIBayIHIABJBEAgACAHayIKIAMoAggiCSAIa00EQCADIAhBACAKEAogCmo2AgQMAgsgAEEASA0CQf////8HIAkgAWsiCEEBdCIJIAAgACAJSRsgCEH/////A08bIggQCCIJIAdqQQAgChAKGiADIAkgASAHEA4iByAIajYCCCADIAAgB2o2AgQgAyAHNgIAIAFFDQEgARAHDAELIAAgB08NACADIAAgAWo2AgQLIAtFBEBBASEBDAMLIAVFBEBBACEBQQAhAANAIAIgAi0AVAR/IAAFIAIoAkQgAEECdGooAgALIAIsABggBhBtRQ0EIABBAWoiACALTyEBIAAgC0cNAAsMAwsgBUH8AXEhCCAFQQNxIQdBACEBIAVBBEkhCUEAIQUDQCACIAItAFQEfyAFBSACKAJEIAVBAnRqKAIACyACLAAYIAYQbUUNA0EAIQFBACEAQQAhCiAJRQRAA0AgAygCACAEaiAAIAZqLQAAOgAAIAQgAygCAGogBiAAQQFyai0AADoAASAEIAMoAgBqIAYgAEECcmotAAA6AAIgBCADKAIAaiAGIABBA3JqLQAAOgADIABBBGohACAEQQRqIQQgCkEEaiIKIAhHDQALCyAHBEADQCADKAIAIARqIAAgBmotAAA6AAAgAEEBaiEAIARBAWohBCABQQFqIgEgB0cN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ACIHcSISBEACQCAGKAIcIgIgBigCIEcEQCACQX82AgAgBiACQQRqNgIcDAELIAIgCygCACIBayIFQQJ1Ig9BAWoiB0GAgICABE8NCUH/////AyAFQQF2IhAgByAHIBBJGyAFQfz///8HTxsiBwR/IAdBgICAgARPDQcgB0ECdBAIBUEACyIQIA9BAnRqIgVBfzYCACAFQQRqIQ8gASACRwRAA0AgBUEEayIFIAJBBGsiAigCADYCACABIAJHDQALCyAGIBAgB0ECdGo2AiAgBiAPNgIcIAYgBTYCGCABRQ0AIAEQBwsCQCAGKAI0IgIgBigCOEcEQCACIAA2AgAgBiACQQRqNgI0DAELIAIgBigCMCIBayIFQQJ1Ig9BAWoiB0GAgICABE8NCUH/////AyAFQQF2IhAgByAHIBBJGyAFQfz///8HTxsiBwR/IAdBgICAgARPDQcgB0ECdBAIBUEACyIQIA9BAnRqIgUgADYCACAFQQRqIQAgASACRwRAA0AgBUEEayIFIAJBBGsiAigCADYCACABIAJHDQALCyAGIBAgB0ECdGo2AjggBiAANgI0IAYgBTYCMCABRQ0AIAEQBwsgCCgCFCICIAgoAhgiAEEFdEYEQCACQQFqQQBIDQkgCEEQaiACQf7///8DTQR/IABBBnQiACACQWBxQSBqIgEgACABSxsFQf////8HCxA+IAgoAhQhAgsgCCACQQFqNgIUIAgoAhAiBSACQQN2Qfz///8BcWoiACAAKAIAQX4gAndxNgIAQQEgA3QhAiAFIANBBXYiAUECdGooAgAhByADIgBBAWohAwsgBSABQQJ0aiACIAdyNgIAIAYoAhggAEECdGohDyAGKAIMIQUgBigCACEBIAgoAgAhByAEIQICQAJAAkADQCACQX9GDQEgByACQQN2Qfz///8BcWoiECAQKAIAQQEgAnRyNgIAIA8gAjYCACASBEAgASACQQJ0aiAANgIACyAEAn9BfyACQQFqIhAgAkECayAQQQNwGyICQX9GDQAaQX8gBSACQQJ0aigCACICQX9GDQAaIAJBAWoiECACQQJrIBBBA3AbCyICRw0ACyAEQX9HDQJBASECDAELIARBA3AEQCAEQQFrIQIMAQsgBEECaiICQX9GDQELIAUgAkECdGooAgAiAkF/Rg0AAkAgAkEDcARAIAJBAWsh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A1kEQCABKAIAIAWnaigAACECIAEgAzcDECAAKAIEIAI2AlALIAMgBFcLqQIBBn9ByAAQCCICQgA3AgQgAkHADzYCACACQgA3AgwgAkIANwIUIAJCADcCHCACQgA3AiQgAkHQEDYCACACQgA3AiwgAkIANwI0IAJCADcCPCACQQA2AkQgAiEFAkACQCABQQBIBEAMAQsgAEEIaiEGAkAgACgCDCICIAAoAggiB2tBAnUiAyABSg0AIAFBAWohBCABIANPBEAgBiAEIANrEF4MAQsgAyAETQ0AIAcgBEECdGoiBCACRwRAA0AgAkEEayICKAIAIQMgAkEANgIAIAMEQCADIAMoAgAoAgQRAgALIAIgBEcNAAsLIAAgBDYCDAsgBigCACABQQJ0aiIAKAIAIQIgACAFNgIAIAJFDQELIAIgAigCACgCBBECAAsgAUF/c0EfdgtQAgJ/An4Cf0EAIAAoAiAiASkDCCABKQMQIgNCBHwiBFMNABogASgCACADp2ooAAAhAiABIAQ3AxBBACACQQBIDQAaIAAoAgQgAjYCUEEBCwtGAQN/IAAoAggiASAAKAIMIgNGBEBBAQ8LA0AgASgCACICIAAoAiAgAigCACgCEBEBACICBEAgAUEEaiIBIANHDQELCyACC9IDAgp/AX4CQAJ/QQAgACgCICICKQMIIAIpAxAiC1cNABogAigCACALp2otAAAhBCACIAtCAXw3AxACQCAERQ0AA0AgACABIAAoAgAoAhARAQAEQCAEIAFBAWoiAUcNAQwCCwtBAA8LIAAoAggiASAAKAIMIgJHBEADQCABKAIAIgMgACAAKAIEIAMoAgAoAggRAwBFDQMgAUEEaiIBIAJHDQALCwJAIARFDQBBACEBA0AgACgCCCABQQJ0aigCACICIAAoAiAgAigCACgCDBEBAEUNAyABQQFqIgEgBEcNAAsgBEUNACAAQRRqIQdBACECA0BBACEBIAJBAnQiCSAAKAIIaigCACIDIAMoAgAoAhgRAAAiCkEASgRAA0ACQCAAKAIIIAlqKAIAIgMgASADKAIAKAIUEQEAIgggACgCGCAAKAIUIgNrQQJ1IgVJDQAgBSAIQQFqIgZJBEAgByAGIAVrEBEgBygCACEDDAELIAUgBk0NACAAIAMgBkECdGo2AhgLIAMgCEECdGogAjYCACABQQFq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AgALIABB4OcANgIAIAAoAhQiAQRAIAAgATYCGCABEAcLIAAoAggiAQRAIAAoAgwiAyABIgJHBEADQCADQQRrIgMoAgAhAiADQQA2AgAgAgRAIAIgAigCACgCBBECAAsgASADRw0ACyAAKAIIIQILIAAgATYCDCACEAcLIAALFAAgACgCMCIAIAAoAgAoAhwRAAALFAAgACgCMCIAIAAoAgAoAhgRAAAL/AcCAn8BfiAAKAIgIgEpAwggASkDECIDVQR/IAEoAgAgA6dqLQAAIQIgASADQgF8NwMQIAAoAjAhASAAQQA2AjAgAQRAIAEgASgCACgCBBECAAsCQAJAAn8CQAJAAkAgAg4DAAECBAtBgAMQCCIBQfjYADYCACABQQRqQQBB0AAQChogAUIANwNgIAFBfzYCXCABQn83AlQgAUIANwNoIAFCADcDcCABQgA3A3ggAUIANwOAASABQgA3A4gBIAFCADcDkAEgAUIANwKcASABQYCAgPwDNgKYASABQgA3AqQBIAFCADcCrAEgAUIANwK0ASABQgA3ArwBIAFCADcCxAEgAUIANwLMASABQv////8PNwLUASABQgA3AtwBIAFB6AFqEBoaIAFBkAJqEBoaIAFBuAJqIgJCADcCACACQgA3AAUgAUHIAmoQGhogAUEANgL4AiABQgA3A/ACIAEMAgtBqAMQCCIBQazZADYCACABQQRqQQBB0AAQChogAUIANwNgIAFBfzYCXCABQn83AlQgAUIANwNoIAFCADcDcCABQgA3A3ggAUIANwOAASABQgA3A4gBIAFCADcDkAEgAUIANwKcASABQYCAgPwDNgKYASABQgA3AqQBIAFCADcCrAEgAUIANwK0ASABQgA3ArwBIAFCADcCxAEgAUIANwLMASABQv////8PNwLUASABQgA3AtwBIAFB6AFqEBoaIAFBkAJqEBoaIAFBuAJqIgJCADcCACACQgA3AAUgAUHIAmoQGhogAUIANwOIAyABQgA3A4ADIAFCADcD+AIgAUIANwPwAiABQZADaiICQgA3AgAgAkIANwAFIAFCfzcDoAMgAQwBC0G4AxAIIgFB3NkANgIAIAFBBGpBAEHQABAKGiABQgA3A2AgAUF/NgJcIAFCfzcCVCABQgA3A2ggAUIANwNwIAFCADcDeCABQgA3A4ABIAFCADcDiAEgAUIANwOQASABQgA3ApwBIAFBgICA/AM2ApgBIAFCADcCpAEgAUIANwKsASABQgA3ArQBIAFCADcCvAEgAUIANwLEASABQgA3AswBIAFC/////w83AtQBIAFCADcC3AEgAUHoAWoQGhogAUGQAmoQGhogAUG4AmoiAkIANwIAIAJCADcABSABQcgCahAaGiABQgA3A4gDIAFCADcDgAMgAUIANwP4AiABQgA3A/ACIAFCADcDoAMgAUKCgICA8AA3A5gDIAFCfzcDkAMgAUIANwOoAyABQgA3A7ADIAELIQEgACgCMCECIAAgATYCMCACRQ0BIAIgAigCACgCBBECAAsgACgCMCIBDQBBAA8LIAEgACABKAIAKAIIEQEABUEACwsWACAAKAIwIgAgASAAKAIAKAIUEQEAC34BA38gAEHg5wA2AgAgACgCFCICBEAgACACNgIYIAIQBwsgACgCCCICBEAgACgCDCIDIAIiAUcEQANAIANBBGsiAygCACEBIANBADYCACABBEAgASABKAIAKAIEEQIACyACIANHDQALIAAoAgghAQsgACACNgIMIAEQBwsgAAsbACAAKAIsRQRAQQAPCyAAIAAoAgAoAjARAAALjwECAn8BfiMAQRBrIgIkAAJAIAAoAgQiA0F/Rg0AIAEpAxBCAFUNACABIAEoAgQgACgCCCAAKAIMEF8gASkDEEIAVQ0AIAEgASgCBCAAQRRqIABBGGoQXyABKQMQIQQgAiAAKAIEOgAPIARCAFUNACABIAEoAgQgAkEPaiACQRBqEF8LIAJBEGokACADQX9HC+8VARh/IwBBEGsiDiQAIA4gATYCDCAOQSAQCCIBNgIAIA5CmICAgICEgICAfzcCBCABQbIJKQAANwAQIAFBqgkpAAA3AAggAUGiCSkAADcAACABQQA6ABgjAEEwayIMJAAgDigCDCEFAkACQCAAIgFBEGoiAygCACICRQ0AIAMhAANAIAAgAiACKAIQIAVIIgQbIQAgAkEEaiACIAQbKAIAIgINAAsgACADRg0AIAUgACgCEE4NAQsgDEIANwIcIAwgDEEYaiIYQQRyNgIYIAxBEGoiAEIANwMAIAwgBTYCCCAMIAA2AgwgDEEIaiIWIQIjAEEQayIXJAAgDAJ/AkAgAUEMaiIUKAIEIgBFBEAgFEEEaiIKIQEMAQsgAigC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AEZhaWxlZCB0byBkZWNvZGUgbWV0YWRhdGEuAEZhaWxlZCB0byBkZWNvZGUgZ2VvbWV0cnkgZGF0YS4AKG51bGwpAFB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsZWQhAEtkVHJlZUF0dHJpYnV0ZXNEZWNvZGVyOiBjb21wcmVzc2lvbiBsZXZlbCAlaSBub3Qgc3VwcG9ydGVkLgoARmxvYXRQb2ludHNUcmVlRGVjb2RlcjogY29tcHJlc3Npb24gbGV2ZWwgJWkgbm90IHN1cHBvcnRlZC4KAFZlcnNpb24gbm90IHN1cHBvcnRlZC4gCgBNZXRob2Qgbm90IHN1cHBvcnRlZC4gCgAAAAAAAIQHAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAALAAAAGAAAABkAAABONWRyYWNvMzBBdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1FAAAAABg7AABYBwAAsAcAAE41ZHJhY28xOEF0dHJpYnV0ZVRyYW5zZm9ybUUAAAAA8DoAAJAHAAAAAAAAPAgAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAAE41ZHJhY28xN0F0dHJpYnV0ZXNEZWNvZGVyRQBONWRyYWNvMjZBdHRyaWJ1dGVzRGVjb2RlckludGVyZmFjZUUAAAAA8DoAAAwIAAAYOwAA8AcAADQIAAAAAAAApAgAACYAAAAnAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACgAAAApAAAAKgAAAE41ZHJhY28yM0tkVHJlZUF0dHJpYnV0ZXNEZWNvZGVyRQAAABg7AACACAAAPAgAAAAAAAAECQAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAATjVkcmFjbzI2U2VxdWVudGlhbEF0dHJpYnV0ZURlY29kZXJFAAAAAPA6AADcCAAA/////wAAAAB8CQAANAAAADUAAAAcAAAANgAAADcAAAAfAAAAIAAAACEAAAA4AAAAOQAAADoAAAA7AAAAPAAAAE41ZHJhY28zN1NlcXVlbnRpYWxBdHRyaWJ1dGVEZWNvZGVyc0NvbnRyb2xsZXJFABg7AABMCQAAPAgAAAAAAADwCQAAPQAAAD4AAAA/AAAALgAAAC8AAAAwAAAAQAAAADIAAABBAAAAQgAAAEMAAABEAAAARQAAAE41ZHJhY28zM1NlcXVlbnRpYWxJbnRlZ2VyQXR0cmlidXRlRGVjb2RlckUAGDsAAMQJAAAECQAAAAAAAHwMAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABONWRyYWNvNDBNZXNoUHJlZGljdGlvblNjaGVtZVBhcmFsbGVsb2dyYW1EZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzIzUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFRUUATjVkcmFjbzM3UHJlZGljdGlvblNjaGVtZVR5cGVkRGVjb2RlckludGVyZmFjZUlpaUVFAE41ZHJhY28zMlByZWRpY3Rpb25TY2hlbWVEZWNvZGVySW50ZXJmYWNlRQBONWRyYWNvMjVQcmVkaWN0aW9uU2NoZW1lSW50ZXJmYWNlRQDwOgAAIAwAABg7AAD1CwAARAwAABg7AADBCwAATAwAABg7AABtCwAAWAwAABg7AADXCgAAZAwAABg7AAA0CgAAcAwAAAAAAABwDAAARgAAAFIAAAAjAAAASQAAACMAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAAAjAAAAAAAAAGQMAABGAAAAUwAAACMAAABJAAAAIwAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAACMAAAAAAAAA2A0AAEYAAABUAAAAVQAAAEkAAABWAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAVwAAAE41ZHJhY280NU1lc2hQcmVkaWN0aW9uU2NoZW1lTXVsdGlQYXJhbGxlbG9ncmFtRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFABg7AAAwDQAAcAwAAAAAAADQDgAAWAAAAFkAAABaAAAASQAAAFsAAABLAAAATAAAAE0AAABOAAAATwAAAFwAAABdAAAATjVkcmFjbzU2TWVzaFByZWRpY3Rpb25TY2hlbWVDb25zdHJhaW5lZE11bHRpUGFyYWxsZWxvZ3JhbURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAAGDsAABwOAABwDAAAAAAAALQPAABeAAAAXwAAAGAAAABJAAAAYQAAAGIAAABjAAAAZAAAAE4AAABPAAAAZQAAAGYAAABONWRyYWNvMzZNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc0RlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAAGDsAABQPAABwDAAAAAAAAKAQAABnAAAAaAAAAGkAAABJAAAAagAAAGsAAABsAAAAbQAAAE4AAABPAAAAbgAAAG8AAABONWRyYWNvNDRNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc1BvcnRhYmxlRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAAAYOwAA+A8AAHAMAAAAAAAAjBEAAHAAAABxAAAAcgAAAEkAAABzAAAAdAAAAHUAAAB2AAAATgAAAE8AAAB3AAAAeAAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAAAAABg7AADkEAAAcAwAAAAAAAAUEwAAeQAAAHoAAAB7AAAAfAAAAH0AAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckJhc2VJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAAAPA6AABfEgAAGDsAALQRAAAMEwAAAAAAAAwTAAB5AAAAfgAAACMAAAB8AAAAIwAAAAAAAACgFAAARgAAAH8AAACAAAAASQAAAIEAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAACCAAAATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQAAGDsAAAoUAABkDAAAGDsAAHQTAACUFAAAAAAAAJQUAABGAAAAgwAAACMAAABJAAAAIwAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAACMAAAAAAAAAuBUAAEYAAACEAAAAhQAAAEkAAACGAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAhwAAAE41ZHJhY280NU1lc2hQcmVkaWN0aW9uU2NoZW1lTXVsdGlQYXJhbGxlbG9ncmFtRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAABg7AAAcFQAAlBQAAAAAAACkFgAAiAAAAIkAAACKAAAASQAAAIsAAABLAAAATAAAAE0AAABOAAAATwAAAIwAAACNAAAATjVkcmFjbzU2TWVzaFByZWRpY3Rpb25TY2hlbWVDb25zdHJhaW5lZE11bHRpUGFyYWxsZWxvZ3JhbURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAAGDsAAPwVAACUFAAAAAAAAHwXAACOAAAAjwAAAJAAAABJAAAAkQAAAJIAAACTAAAAlAAAAE4AAABPAAAAlQAAAJYAAABONWRyYWNvMzZNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc0RlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAAGDsAAOgWAACUFAAAAAAAAFwYAACXAAAAmAAAAJkAAABJAAAAmgAAAJsAAACcAAAAnQAAAE4AAABPAAAAngAAAJ8AAABONWRyYWNvNDRNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc1BvcnRhYmxlRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAAAAYOwAAwBcAAJQUAAAAAAAAOBkAAKAAAAChAAAAogAAAEkAAACjAAAApAAAAKUAAACmAAAATgAAAE8AAACnAAAAqAAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAGDsAAKAYAACUFAAAAAAAAKQaAACpAAAAqgAAAKsAAACsAAAArQAAAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQXJlYUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQDwOgAA/hkAABg7AABgGQAAnBoAAAAAAACcGgAAqQAAAK4AAAAjAAAArAAAACMAAAAAAAAAYBsAAEYAAACvAAAAsAAAAEkAAACxAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAsgAAAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFRUUAAAAAGDsAAAQbAABkDAAAAAAAANQbAACzAAAAtAAAALUAAAAuAAAALwAAALYAAABAAAAAMgAAAEEAAAC3AAAAuAAAALkAAAC6AAAATjVkcmFjbzMyU2VxdWVudGlhbE5vcm1hbEF0dHJpYnV0ZURlY29kZXJFAAAYOwAAqBsAAPAJAAAAAAAA4B0AALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfNDlQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkRlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU180OVByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjNQcmVkaWN0aW9uU2NoZW1lRGVjb2RlcklpTlNfNDlQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkRlY29kaW5nVHJhbnNmb3JtSWlFRUVFABg7AABpHQAAWAwAABg7AADIHAAAyB0AABg7AAAYHAAA1B0AAAAAAAB8HwAAxwAAAMgAAADJAAAAygAAAMsAAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzQ5UHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25EZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfNDlQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkRlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUA8DoAAL4eAAAYOwAACB4AAHQfAAAAAAAABCEAAMwAAADNAAAAzgAAAL4AAADPAAAA0AAAANEAAADSAAAAwwAAAMQAAADTAAAA1AAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfNDlQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkRlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzQ5UHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25EZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAABg7AABjIAAAyB0AABg7AADAHwAA+CAAAAAAAACIIgAA1QAAANYAAADXAAAA2AAAANkAAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzQ5UHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25EZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU180OVByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAA8DoAANUhAAAYOwAALCEAAIAiAAAAAAAAMCMAANoAAADbAAAA3AAAAL4AAADdAAAA3gAAAN8AAADgAAAAwwAAAMQAAADhAAAA4gAAAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YURlY29kZXJJaU5TXzQ5UHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25EZWNvZGluZ1RyYW5zZm9ybUlpRUVFRQAYOwAAzCIAAMgdAAAAAAAAZCUAAOMAAADkAAAA5QAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY28yN01lc2hQcmVkaWN0aW9uU2NoZW1lRGVjb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY28yM1ByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRUVFAAAYOwAA3yQAAFgMAAAYOwAAMSQAAEwlAAAYOwAAdCMAAFglAAAAAAAAHCcAAO8AAADwAAAA8QAAAPIAAADzAAAATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUAAADwOgAATyYAABg7AACMJQAAFCcAAAAAAADAKAAA9AAAAPUAAAD2AAAA5gAAAPcAAAD4AAAA+QAAAPoAAADrAAAA7AAAAPsAAAD8AAAATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxEZWNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAAABg7AAAQKAAATCUAABg7AABgJwAAtCgAAAAAAABcKgAA/QAAAP4AAAD/AAAAAAEAAAEBAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUA8DoAAJ4pAAAYOwAA6CgAAFQqAAAAAAAAFCsAANoAAAACAQAAAwEAAOYAAAAEAQAABQEAAAYBAAAHAQAA6wAAAOwAAAAIAQAACQEAAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YURlY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFRUUAAAAAGDsAAKAqAABMJQAAAAAAAJgrAAAKAQAACwEAAAwBAAAuAAAALwAAAA0BAABAAAAAMgAAAEEAAAAOAQAAQwAAAEQAAAAPAQAAEAEAABEBAABONWRyYWNvMzhTZXF1ZW50aWFsUXVhbnRpemF0aW9uQXR0cmlidXRlRGVjb2RlckUAAAAAGDsAAGQrAADwCQAAAAAAAPgrAAASAQAAEwEAABQBAAAVAQAAIwAAABYBAAAXAQAAGAEAABkBAAAaAQAAGwEAABwBAAAjAAAATjVkcmFjbzExTWVzaERlY29kZXJFAAAAGDsAAOArAABMNAAAAAAAAGQsAAAdAQAAHgEAABQBAAAfAQAAIAEAABYBAAAXAQAAGAEAACEBAAAiAQAAIwEAACQBAAAlAQAATjVkcmFjbzIyTWVzaEVkZ2VicmVha2VyRGVjb2RlckUAAAAAGDsAAEAsAAD4KwAAAAAAAIgtAAAmAQAAJwEAACgBAAApAQAAKgEAACsBAAAsAQAALQEAAC4BAAAvAQAA/////wAAAADsLQAAMAEAADEBAAAyAQAAMwEAADQBAAA1AQAANgEAADcBAAA4AQAAOQEAAAAAAABMLgAAOgEAADsBAAA8AQAAPQEAAD4BAAA/AQAAQAEAAEEBAABCAQAAQwEAAE41ZHJhY28yNk1lc2hFZGdlYnJlYWtlckRlY29kZXJJbXBsSU5TXzMxTWVzaEVkZ2VicmVha2VyVHJhdmVyc2FsRGVjb2RlckVFRQBONWRyYWNvMzVNZXNoRWRnZWJyZWFrZXJEZWNvZGVySW1wbEludGVyZmFjZUUAAADwOgAAUC0AABg7AAAELQAAgC0AAE41ZHJhY28yNk1lc2hFZGdlYnJlYWtlckRlY29kZXJJbXBsSU5TXzQxTWVzaEVkZ2VicmVha2VyVHJhdmVyc2FsUHJlZGljdGl2ZURlY29kZXJFRUUAAAAYOwAAlC0AAIAtAABONWRyYWNvMjZNZXNoRWRnZWJyZWFrZXJEZWNvZGVySW1wbElOU18zOE1lc2hFZGdlYnJlYWtlclRyYXZlcnNhbFZhbGVuY2VEZWNvZGVyRUVFAAAYOwAA+C0AAIAtAAAAAAAASC8AAEQBAABFAQAARgEAAE41ZHJhY28xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQBONWRyYWNvMTNUcmF2ZXJzZXJCYXNlSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUA8DoAANkuAAAYOwAAbC4AAEAvAAAAAAAAQC8AAEcBAABIAQAARgEAQfTeAAu2BwEAAAADAAAABQAAAAcAAAAAAAAASDAAAEkBAABKAQAASwEAAEwBAABONWRyYWNvMjJNZXNoVHJhdmVyc2FsU2VxdWVuY2VySU5TXzI4TWF4UHJlZGljdGlvbkRlZ3JlZVRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMyX0VFRUVFRQBONWRyYWNvMTVQb2ludHNTZXF1ZW5jZXJFAAAAAPA6AAAjMAAAGDsAAJwvAABAMAAA/////wAAAAA4MQAATQEAAE4BAABPAQAATjVkcmFjbzI4TWF4UHJlZGljdGlvbkRlZ3JlZVRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzEzVHJhdmVyc2VyQmFzZUlOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUAAPA6AADVMAAAGDsAAGwwAAAwMQAAAAAAADAxAABQAQAAUQEAAE8BAAAAAAAA8DEAAFIBAABTAQAAVAEAAFUBAABONWRyYWNvMjJNZXNoVHJhdmVyc2FsU2VxdWVuY2VySU5TXzE5RGVwdGhGaXJzdFRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMyX0VFRUVFRQAAABg7AABwMQAAQDAAAAAAAABwMgAAVgEAAFcBAABPAQAATjVkcmFjbzE5RGVwdGhGaXJzdFRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUAGDsAABAyAAAwMQAAAAAAACAzAABYAQAAWQEAAFoBAABbAQAATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzJfRUVFRUVFAAAYOwAAlDIAAEAwAEG05gALzgGMMwAAEgEAAFwBAAAUAQAAFQEAAF0BAAAWAQAAFwEAABgBAAAZAQAAGgEAABsBAAAcAQAAXgEAAE41ZHJhY28yMU1lc2hTZXF1ZW50aWFsRGVjb2RlckUAGDsAAGwzAAD4KwAAAAAAAMwzAABfAQAAYAEAAGEBAABiAQAATjVkcmFjbzE1TGluZWFyU2VxdWVuY2VyRQAAABg7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"; +var glslang_default = "bGV0IE1vZHVsZSA9IChmdW5jdGlvbiAoKSB7CiAgbGV0IF9zY3JpcHREaXIgPQogICAgdHlwZW9mIGRvY3VtZW50ICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0CiAgICAgID8gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMKICAgICAgOiB1bmRlZmluZWQ7CgogIHJldHVybiBmdW5jdGlvbiAoTW9kdWxlKSB7CiAgICBNb2R1bGUgPSBNb2R1bGUgfHwge307CgogICAgbGV0IGM7CiAgICBjIHx8IChjID0gdHlwZW9mIE1vZHVsZSAhPT0gInVuZGVmaW5lZCIgPyBNb2R1bGUgOiB7fSk7CiAgICBjLmNvbXBpbGVHTFNMWmVyb0NvcHkgPSBmdW5jdGlvbiAoYSwgYiwgZCwgZSkgewogICAgICBkID0gISFkOwogICAgICBzd2l0Y2ggKGIpIHsKICAgICAgICBjYXNlICJ2ZXJ0ZXgiOgogICAgICAgICAgdmFyIGcgPSAwOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiZnJhZ21lbnQiOgogICAgICAgICAgZyA9IDQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJjb21wdXRlIjoKICAgICAgICAgIGcgPSA1OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHRocm93IEVycm9yKCJzaGFkZXJfc3RhZ2UgbXVzdCBiZSAndmVydGV4JywgJ2ZyYWdtZW50Jywgb3IgJ2NvbXB1dGUnLiIpOwogICAgICB9CiAgICAgIHN3aXRjaCAoZSB8fCAiMS4wIikgewogICAgICAgIGNhc2UgIjEuMCI6CiAgICAgICAgICB2YXIgZiA9IDY1NTM2OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiMS4xIjoKICAgICAgICAgIGYgPSA2NTc5MjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIjEuMiI6CiAgICAgICAgICBmID0gNjYwNDg7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICIxLjMiOgogICAgICAgICAgZiA9IDY2MzA0OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiMS40IjoKICAgICAgICAgIGYgPSA2NjU2MDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIjEuNSI6CiAgICAgICAgICBmID0gNjY4MTY7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgdGhyb3cgRXJyb3IoInNwaXJ2X3ZlcnNpb24gbXVzdCBiZSAnMS4wJyB+ICcxLjUnLiIpOwogICAgICB9CiAgICAgIGUgPSBjLl9tYWxsb2MoNCk7CiAgICAgIGIgPSBjLl9tYWxsb2MoNCk7CiAgICAgIGxldCBoID0gYWEoW2EsIGcsIGQsIGYsIGUsIGJdKTsKICAgICAgZCA9IGsoZSk7CiAgICAgIGEgPSBrKGIpOwogICAgICBjLl9mcmVlKGUpOwogICAgICBjLl9mcmVlKGIpOwogICAgICBpZiAoMCA9PT0gaCkgdGhyb3cgRXJyb3IoIkdMU0wgY29tcGlsYXRpb24gZmFpbGVkIik7CiAgICAgIGUgPSB7fTsKICAgICAgZCAvPSA0OwogICAgICBlLmRhdGEgPSBjLkhFQVBVMzIuc3ViYXJyYXkoZCwgZCArIGEpOwogICAgICBlLmZyZWUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgYy5fZGVzdHJveV9vdXRwdXRfYnVmZmVyKGgpOwogICAgICB9OwogICAgICByZXR1cm4gZTsKICAgIH07CiAgICBjLmNvbXBpbGVHTFNMID0gZnVuY3Rpb24gKGEsIGIsIGQsIGUpIHsKICAgICAgYSA9IGMuY29tcGlsZUdMU0xaZXJvQ29weShhLCBiLCBkLCBlKTsKICAgICAgYiA9IGEuZGF0YS5zbGljZSgpOwogICAgICBhLmZyZWUoKTsKICAgICAgcmV0dXJuIGI7CiAgICB9OwogICAgbGV0IHAgPSB7fSwKICAgICAgcTsKICAgIGZvciAocSBpbiBjKSBjLmhhc093blByb3BlcnR5KHEpICYmIChwW3FdID0gY1txXSk7CiAgICBsZXQgciA9ICIuL3RoaXMucHJvZ3JhbSIsCiAgICAgIHQgPSAhMSwKICAgICAgdSA9ICExOwogICAgdCA9ICJvYmplY3QiID09PSB0eXBlb2Ygd2luZG93OwogICAgdSA9ICJmdW5jdGlvbiIgPT09IHR5cGVvZiBpbXBvcnRTY3JpcHRzOwogICAgbGV0IHYgPSAiIiwKICAgICAgdzsKICAgIGlmICh0IHx8IHUpCiAgICAgIHUgPyAodiA9IHNlbGYubG9jYXRpb24uaHJlZikgOiBkb2N1bWVudC5jdXJyZW50U2NyaXB0ICYmICh2ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLAogICAgICAgIF9zY3JpcHREaXIgJiYgKHYgPSBfc2NyaXB0RGlyKSwKICAgICAgICAwICE9PSB2LmluZGV4T2YoImJsb2I6IikgPyAodiA9IHYuc3Vic3RyKDAsIHYubGFzdEluZGV4T2YoIi8iKSArIDEpKSA6ICh2ID0gIiIpLAogICAgICAgIHUgJiYKICAgICAgICAgICh3ID0gZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgbGV0IGIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgICAgYi5vcGVuKCJHRVQiLCBhLCAhMSk7CiAgICAgICAgICAgIGIucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKICAgICAgICAgICAgYi5zZW5kKG51bGwpOwogICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYi5yZXNwb25zZSk7CiAgICAgICAgICB9KTsKICAgIGxldCB4ID0gYy5wcmludCB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICB5ID0gYy5wcmludEVyciB8fCBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTsKICAgIGZvciAocSBpbiBwKSBwLmhhc093blByb3BlcnR5KHEpICYmIChjW3FdID0gcFtxXSk7CiAgICBwID0gbnVsbDsKICAgIGMudGhpc1Byb2dyYW0gJiYgKHIgPSBjLnRoaXNQcm9ncmFtKTsKICAgIGxldCBBOwogICAgYy53YXNtQmluYXJ5ICYmIChBID0gYy53YXNtQmluYXJ5KTsKICAgICJvYmplY3QiICE9PSB0eXBlb2YgV2ViQXNzZW1ibHkgJiYgeSgibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpOwogICAgZnVuY3Rpb24gayhhKSB7CiAgICAgIGxldCBiID0gImkzMiI7CiAgICAgICIqIiA9PT0gYi5jaGFyQXQoYi5sZW5ndGggLSAxKSAmJiAoYiA9ICJpMzIiKTsKICAgICAgc3dpdGNoIChiKSB7CiAgICAgICAgY2FzZSAiaTEiOgogICAgICAgICAgcmV0dXJuIEJbYSA+PiAwXTsKICAgICAgICBjYXNlICJpOCI6CiAgICAgICAgICByZXR1cm4gQlthID4+IDBdOwogICAgICAgIGNhc2UgImkxNiI6CiAgICAgICAgICByZXR1cm4gYmFbYSA+PiAxXTsKICAgICAgICBjYXNlICJpMzIiOgogICAgICAgICAgcmV0dXJuIENbYSA+PiAyXTsKICAgICAgICBjYXNlICJpNjQiOgogICAgICAgICAgcmV0dXJuIENbYSA+PiAyXTsKICAgICAgICBjYXNlICJmbG9hdCI6CiAgICAgICAgICByZXR1cm4gY2FbYSA+PiAyXTsKICAgICAgICBjYXNlICJkb3VibGUiOgogICAgICAgICAgcmV0dXJuIGRhW2EgPj4gM107CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIEQoImludmFsaWQgdHlwZSBmb3IgZ2V0VmFsdWU6ICIgKyBiKTsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGxldCBFLAogICAgICBlYSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7IGluaXRpYWw6IDg1OSwgbWF4aW11bTogODU5LCBlbGVtZW50OiAiYW55ZnVuYyIgfSksCiAgICAgIGZhID0gITE7CiAgICBmdW5jdGlvbiBoYSgpIHsKICAgICAgbGV0IGEgPSBjLl9jb252ZXJ0X2dsc2xfdG9fc3BpcnY7CiAgICAgIGEgfHwKICAgICAgICBEKAogICAgICAgICAgIkFzc2VydGlvbiBmYWlsZWQ6IENhbm5vdCBjYWxsIHVua25vd24gZnVuY3Rpb24gY29udmVydF9nbHNsX3RvX3NwaXJ2LCBtYWtlIHN1cmUgaXQgaXMgZXhwb3J0ZWQiLAogICAgICAgICk7CiAgICAgIHJldHVybiBhOwogICAgfQogICAgZnVuY3Rpb24gYWEoYSkgewogICAgICBsZXQgYiA9ICJzdHJpbmcgbnVtYmVyIGJvb2xlYW4gbnVtYmVyIG51bWJlciBudW1iZXIiLnNwbGl0KCIgIiksCiAgICAgICAgZCA9IHsKICAgICAgICAgIHN0cmluZyhhKSB7CiAgICAgICAgICAgIGxldCBiID0gMDsKICAgICAgICAgICAgaWYgKG51bGwgIT09IGEgJiYgdm9pZCAwICE9PSBhICYmIDAgIT09IGEpIHsKICAgICAgICAgICAgICBsZXQgZCA9IChhLmxlbmd0aCA8PCAyKSArIDE7CiAgICAgICAgICAgICAgYiA9IEcoZCk7CiAgICAgICAgICAgICAgaWEoYSwgSCwgYiwgZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGI7CiAgICAgICAgICB9LAogICAgICAgICAgYXJyYXkoYSkgewogICAgICAgICAgICBsZXQgYiA9IEcoYS5sZW5ndGgpOwogICAgICAgICAgICBCLnNldChhLCBiKTsKICAgICAgICAgICAgcmV0dXJuIGI7CiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgZSA9IGhhKCksCiAgICAgICAgZyA9IFtdLAogICAgICAgIGYgPSAwOwogICAgICBpZiAoYSkKICAgICAgICBmb3IgKGxldCBoID0gMDsgaCA8IGEubGVuZ3RoOyBoKyspIHsKICAgICAgICAgIGxldCBuID0gZFtiW2hdXTsKICAgICAgICAgIG4gPyAoMCA9PT0gZiAmJiAoZiA9IGphKCkpLCAoZ1toXSA9IG4oYVtoXSkpKSA6IChnW2hdID0gYVtoXSk7CiAgICAgICAgfQogICAgICBhID0gZS5hcHBseShudWxsLCBnKTsKICAgICAgMCAhPT0gZiAmJiBrYShmKTsKICAgICAgcmV0dXJuIGE7CiAgICB9CiAgICBsZXQgbGEgPSAidW5kZWZpbmVkIiAhPT0gdHlwZW9mIFRleHREZWNvZGVyID8gbmV3IFRleHREZWNvZGVyKCJ1dGY4IikgOiB2b2lkIDA7CiAgICBmdW5jdGlvbiBJKGEsIGIsIGQpIHsKICAgICAgbGV0IGUgPSBiICsgZDsKICAgICAgZm9yIChkID0gYjsgYVtkXSAmJiAhKGQgPj0gZSk7ICkgKytkOwogICAgICBpZiAoMTYgPCBkIC0gYiAmJiBhLnN1YmFycmF5ICYmIGxhKSByZXR1cm4gbGEuZGVjb2RlKGEuc3ViYXJyYXkoYiwgZCkpOwogICAgICBmb3IgKGUgPSAiIjsgYiA8IGQ7ICkgewogICAgICAgIGxldCBnID0gYVtiKytdOwogICAgICAgIGlmIChnICYgMTI4KSB7CiAgICAgICAgICBsZXQgZiA9IGFbYisrXSAmIDYzOwogICAgICAgICAgaWYgKDE5MiA9PSAoZyAmIDIyNCkpIGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGcgJiAzMSkgPDwgNikgfCBmKTsKICAgICAgICAgIGVsc2UgewogICAgICAgICAgICBsZXQgaCA9IGFbYisrXSAmIDYzOwogICAgICAgICAgICBnID0KICAgICAgICAgICAgICAyMjQgPT0gKGcgJiAyNDApCiAgICAgICAgICAgICAgICA/ICgoZyAmIDE1KSA8PCAxMikgfCAoZiA8PCA2KSB8IGgKICAgICAgICAgICAgICAgIDogKChnICYgNykgPDwgMTgpIHwgKGYgPDwgMTIpIHwgKGggPDwgNikgfCAoYVtiKytdICYgNjMpOwogICAgICAgICAgICA2NTUzNiA+IGcKICAgICAgICAgICAgICA/IChlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZykpCiAgICAgICAgICAgICAgOiAoKGcgLT0gNjU1MzYpLCAoZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2IHwgKGcgPj4gMTApLCA1NjMyMCB8IChnICYgMTAyMykpKSk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShnKTsKICAgICAgfQogICAgICByZXR1cm4gZTsKICAgIH0KICAgIGZ1bmN0aW9uIGlhKGEsIGIsIGQsIGUpIHsKICAgICAgaWYgKDAgPCBlKSB7CiAgICAgICAgZSA9IGQgKyBlIC0gMTsKICAgICAgICBmb3IgKGxldCBnID0gMDsgZyA8IGEubGVuZ3RoOyArK2cpIHsKICAgICAgICAgIGxldCBmID0gYS5jaGFyQ29kZUF0KGcpOwogICAgICAgICAgaWYgKDU1Mjk2IDw9IGYgJiYgNTczNDMgPj0gZikgewogICAgICAgICAgICBsZXQgaCA9IGEuY2hhckNvZGVBdCgrK2cpOwogICAgICAgICAgICBmID0gKDY1NTM2ICsgKChmICYgMTAyMykgPDwgMTApKSB8IChoICYgMTAyMyk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoMTI3ID49IGYpIHsKICAgICAgICAgICAgaWYgKGQgPj0gZSkgYnJlYWs7CiAgICAgICAgICAgIGJbZCsrXSA9IGY7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoMjA0NyA+PSBmKSB7CiAgICAgICAgICAgICAgaWYgKGQgKyAxID49IGUpIGJyZWFrOwogICAgICAgICAgICAgIGJbZCsrXSA9IDE5MiB8IChmID4+IDYpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGlmICg2NTUzNSA+PSBmKSB7CiAgICAgICAgICAgICAgICBpZiAoZCArIDIgPj0gZSkgYnJlYWs7CiAgICAgICAgICAgICAgICBiW2QrK10gPSAyMjQgfCAoZiA+PiAxMik7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChkICsgMyA+PSBlKSBicmVhazsKICAgICAgICAgICAgICAgIGJbZCsrXSA9IDI0MCB8IChmID4+IDE4KTsKICAgICAgICAgICAgICAgIGJbZCsrXSA9IDEyOCB8ICgoZiA+PiAxMikgJiA2Myk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJbZCsrXSA9IDEyOCB8ICgoZiA+PiA2KSAmIDYzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiW2QrK10gPSAxMjggfCAoZiAmIDYzKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYltkXSA9IDA7CiAgICAgIH0KICAgIH0KICAgICJ1bmRlZmluZWQiICE9PSB0eXBlb2YgVGV4dERlY29kZXIgJiYgbmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpOwogICAgbGV0IEosIEIsIEgsIGJhLCBDLCBjYSwgZGE7CiAgICBmdW5jdGlvbiBtYShhKSB7CiAgICAgIEogPSBhOwogICAgICBjLkhFQVA4ID0gQiA9IG5ldyBJbnQ4QXJyYXkoYSk7CiAgICAgIGMuSEVBUDE2ID0gYmEgPSBuZXcgSW50MTZBcnJheShhKTsKICAgICAgYy5IRUFQMzIgPSBDID0gbmV3IEludDMyQXJyYXkoYSk7CiAgICAgIGMuSEVBUFU4ID0gSCA9IG5ldyBVaW50OEFycmF5KGEpOwogICAgICBjLkhFQVBVMTYgPSBuZXcgVWludDE2QXJyYXkoYSk7CiAgICAgIGMuSEVBUFUzMiA9IG5ldyBVaW50MzJBcnJheShhKTsKICAgICAgYy5IRUFQRjMyID0gY2EgPSBuZXcgRmxvYXQzMkFycmF5KGEpOwogICAgICBjLkhFQVBGNjQgPSBkYSA9IG5ldyBGbG9hdDY0QXJyYXkoYSk7CiAgICB9CiAgICBsZXQgbmEgPSBjLlRPVEFMX01FTU9SWSB8fCAxNjc3NzIxNjsKICAgIGMud2FzbU1lbW9yeSA/IChFID0gYy53YXNtTWVtb3J5KSA6IChFID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IG5hIC8gNjU1MzYgfSkpOwogICAgRSAmJiAoSiA9IEUuYnVmZmVyKTsKICAgIG5hID0gSi5ieXRlTGVuZ3RoOwogICAgbWEoSik7CiAgICBDWzg0OTE2XSA9IDU1ODI3MDQ7CiAgICBmdW5jdGlvbiBLKGEpIHsKICAgICAgZm9yICg7IDAgPCBhLmxlbmd0aDsgKSB7CiAgICAgICAgbGV0IGIgPSBhLnNoaWZ0KCk7CiAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT09IHR5cGVvZiBiKSBiKCk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBsZXQgZCA9IGIuSjsKICAgICAgICAgICJudW1iZXIiID09PSB0eXBlb2YgZAogICAgICAgICAgICA/IHZvaWQgMCA9PT0gYi5ICiAgICAgICAgICAgICAgPyBjLmR5bkNhbGxfdihkKQogICAgICAgICAgICAgIDogYy5keW5DYWxsX3ZpKGQsIGIuSCkKICAgICAgICAgICAgOiBkKHZvaWQgMCA9PT0gYi5IID8gbnVsbCA6IGIuSCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBsZXQgb2EgPSBbXSwKICAgICAgcGEgPSBbXSwKICAgICAgcWEgPSBbXSwKICAgICAgcmEgPSBbXTsKICAgIGZ1bmN0aW9uIHNhKCkgewogICAgICBsZXQgYSA9IGMucHJlUnVuLnNoaWZ0KCk7CiAgICAgIG9hLnVuc2hpZnQoYSk7CiAgICB9CiAgICBsZXQgTCA9IDAsCiAgICAgIE0gPSBudWxsLAogICAgICBOID0gbnVsbDsKICAgIGMucHJlbG9hZGVkSW1hZ2VzID0ge307CiAgICBjLnByZWxvYWRlZEF1ZGlvcyA9IHt9OwogICAgZnVuY3Rpb24gRChhKSB7CiAgICAgIGlmIChjLm9uQWJvcnQpIGMub25BYm9ydChhKTsKICAgICAgeChhKTsKICAgICAgeShhKTsKICAgICAgZmEgPSAhMDsKICAgICAgdGhyb3cgbmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcigKICAgICAgICAiYWJvcnQoIiArIGEgKyAiKS4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4iLAogICAgICApOwogICAgfQogICAgZnVuY3Rpb24gdGEoKSB7CiAgICAgIGxldCBhID0gTzsKICAgICAgcmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aAogICAgICAgID8gYS5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIikKICAgICAgICA6IDAgPT09IGEuaW5kZXhPZigiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpOwogICAgfQogICAgdmFyIE8gPSAiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LEFHRnpiUUVBQUFBQjhnTS9ZQUYvQVg5Z0FuOS9BR0FHZjM5L2YzOS9BR0FDZjM4QmYyQUVmMzkvZndCZ0FYOEFZQU4vZjM4QVlBTi9mMzhCZjJBRmYzOS9mMzhBWUFSL2YzOS9BWDlnQlg5L2YzOS9BWDlnQm45L2YzOS9md0YvWUFBQVlBQUJmMkFJZjM5L2YzOS9mMzhCZjJBSGYzOS9mMzkvZndCZ0IzOS9mMzkvZjM4QmYyQUJmQUY4WUFoL2YzOS9mMzkvZndCZ0JYOStmbjUrQUdBS2YzOS9mMzkvZjM5L2Z3Ri9ZQUovZmdCZ0NuOS9mMzkvZjM5L2YzOEFZQVYvZjM5L2ZnRi9ZQU4vZm44QmYyQUVmMzkvZndGK1lBVi9mMzUvZndCZ0JIOStmbjhBWUFKOGZBRjhZQXQvZjM5L2YzOS9mMzkvZndCZ0QzOS9mMzkvZjM5L2YzOS9mMzkvZndCZ0EzOS9mZ0JnQW45OEFHQUxmMzkvZjM5L2YzOS9mMzhCZjJBTWYzOS9mMzkvZjM5L2YzOS9BWDlnQjM5L2YzOS9mbjRCZjJBR2YzOS9mMzUrQVg5Z0JYOS9mMzk4QVg5Z0EzOTlmd0YvWUFaL2ZIOS9mMzhCZjJBQ2ZuOEJmMkFDZm40QmYyQUVmMzkvZmdGK1lBTi9mbjhCZm1BQ2YzOEJmR0FDZkg4QmZHQURmSHgvQVh4Z0EzOStmZ0JnQW45OUFHQURmM3gvQUdBRWYzOStmd0YvWUFOL2ZIOEJmMkFGZjN4L2YzOEJmMkFEZm45L0FYOWdCSDUrZm40QmYyQUJmQUYvWUFKOGZ3Ri9ZQUovZndGK1lBSi9md0Y5WUFOL2YzOEJmV0FDZm40QmZXQURmMzkvQVh4Z0FuNStBWHdDOWdFUkEyVnVkZ0ZoQUFVRFpXNTJBV0lBREFObGJuWUJZd0FERm5kaGMybGZjMjVoY0hOb2IzUmZjSEpsZG1sbGR6RUJaQUFERm5kaGMybGZjMjVoY0hOb2IzUmZjSEpsZG1sbGR6RUJaUUFEQTJWdWRnRm1BQVVXZDJGemFWOXpibUZ3YzJodmRGOXdjbVYyYVdWM01RRm5BQWtXZDJGemFWOXpibUZ3YzJodmRGOXdjbVYyYVdWM01RRm9BQUFEWlc1MkFXa0FBeFozWVhOcFgzTnVZWEJ6YUc5MFgzQnlaWFpwWlhjeEFXb0FDZ05sYm5ZQmF3QUhBMlZ1ZGdGc0FBQURaVzUyQVcwQUNnTmxibllCYmdBREEyVnVkZ0Z2QUFBRFpXNTJCbTFsYlc5eWVRSUFnQUlEWlc1MkJYUmhZbXhsQVhBQTJ3WUR5eHJKR2dNREF3TUFBd1lBQmdBQUJBQUdCQU1BQUFFREFBQUFBQWtDQXdVREF5QUJBd0FEQUFBREFBVUFBd0VEQUFBSEJRTUFBUUVBQUJBQUFRTUJCQUFCQVFBQ0F3a0RBd1lBQkFBR0JSVVZBUUFBQUFBQUF3RUFBUUFEQVFNQUF3RUJEQUlJQVFFRkJ3Y0JBUVFCQXdBQkFRQU5CZ0FNQlFFQUJ3TURBd0FUQVFNQUFRQUhBUUFCQXdBQUJRY0FBQUVGQndBQUF3WUdBd0FEQUFBRkNnQUpCUUFKQXdjR0NBTUFBZ01GQXdBR0FRQURBd01BQUFjREFBRURBd01CRFFBSkFBTUFEd1FCQVFBREFBQUZBQVVCQndNRUN3RUdDQUVCQUF3R0FRVUFBQU1LQkFNRkFBWUFBd01iQ1FZQUFBc0FBd01BQmdBREFRY0JBUUFBQUFnQUNRRUFBQU1BQVFNQUFBTURBQUFGRXdNQkFRRUhBd01KQXdBQUFBRUJBUVVCQUFBQUFBVUZCUWNEQUFBSEFRTUFCd0VFRWdBQUJRY0FBQUVCQUFBSEJnQUdBZ2tBQUFBQUF3QUFBUUVIRlFFR0NRTUFDUUFCQUFjRkFRRUFBUUFEQ1FRSEFBQUpCUVVETHdrSkpnQUZBd0FCQmdFQkFBQUZBQUFCQUFVRkJ3QUJBd1VBQlFBQUFRRUtCZ29KQUFNZ0J3Y0pBUUFEQndFQUJ3c0RCUWNBQUFFRkJ3RUFBQUFEQ3dZQUF3QUJMUTRPQ3dRQkJBa3pBd2NBQXdNREF3QUZBUU1LQVFVQkF3TU5BQUVHQUFZSEF3UUFCUVlEQVFVR0FBRUFBUUVCQUFRRkJBRUpCQW9CQndrSEF3VVlCZ01EQUFBR0FRTURBd0FOQUFNR0JRQUZCUUFBQndFSEFBTUdBQUFHQmdZQUJnTUZCd01IQUFBQUJBRTJCZ01BQVFvREpnTURCd2NCQmdFS0F3a0JBUUFBRUFrREFBVUJBQUVBQlFZQUFBQUFBQUVBQUFFQUFBRUJBUUFFQVFjQkFBTUJBd0FBQVFBQkFRWURBeFFBRkFBQkFCc29BQUFKQ2drRENRQUFBd1lBQUFFREFBTURBQVFBQlFBQUFBVUhDUVlEQUFBQUF3UUJCZ2NBQUFjS0F3WUFCUUFBQndZR0FBQUZCZ1VBQUFBQUFBTUJDUU1EQVFBSUJRQUdBQVVBQndRS0FBRUFBQU1FQXdNRkFRRUJBd2NBQVFVR0F3WUFMaHdIQ1FBQkNRVUdCelFHQUFrREJ3TVlCd2NKQUFVREJnQUtBd01BQUFNQUFBVUZBQVVBQVFNQUFBQUhBUUFHQUFNQUJBRUJBUWtEQXdRQUNBUUdDQVlBQ2drQUFRQUZBZ2NGQlFNQkF5d0JCd1lEQXdNREJRRUFBUWNEQlFNSkNBVUJCZ0FCQVFVQkFRQUFBUThIRHdNUUF4QUFCUWtGQXdBK0J3TURBQUVFQ2dvR0NRVURBd01IQkFBREFBTUxBd01PQXdNREJRTURBUUFFQVFBQkJnY0dCUUFCQUFBQUFBTUdBQUFHQndVSkNnb05Bd1lGQVFNSEFRa0RBQThBQVE0QkJRRURCUUFBQ1FNRkFBQUhCZ0FBQUFBSEFBRUJBUU1CQndFQkJBWUFDQUFFQkFRR0JnVUVBZ1VKQmdZQUFBQUxCUWdHQndFQkJRa0hCQWdBQmdNQUFBa0JBd1lBQlFBQUFBTUJBd0FCQXdNQkFnWUVCZ1VCQ0FZQUJ3b0ZCQWNpQ0FjaUNBUVpBeE1GQUFBQUFCRTRCeW9IQVJBQkFRZ0FCUVVKQVFrS0F3QURBQUVMQ2djSEFBQUFDUUVCQlFZRENnTURBd0FEQVFFREJRUUFCZ2NEQXdBSEJnY0JDd2NEQndjSEF3TUFBQUFHQXdBQUJnRUFCUWtGQVFNRkFCVUdCZ01KQndBQUJRQUJBQUVCQUFrR0JnWUFCUWtBQUFNQUF3a0JBQmdHQVFvS0FBRUZDd1VKQ2dNQUFRVUFBQUFFQXdBQkFRRUJBQVVHQlFFQkJRVUFBUU1BQUFBQUFBa0FCUVlBQlFjREF3WUhBUWNHQUFFQUFBTVNCQU1CQXdZREFRRUJCUVVCQlFvRkJnVUdBUU1CQlFZRkF3RUJBd1FHQUFjSkFnQUdBQUFBQkFZRUFRUUhCZ1lEQkFVSEF3UUdBUVlJQlFjSkJBVURCd1FEQUFrQUJBRUFBUUVBQUFBQUFBRUZDZ29CQkFrQUJRRUlBUU1EQXdFREF3TURBd01EQXdFREFBVUFBUWtKQXdNREF3TURBd01EQXdNREF3TUJBQU1EQndFRkJRQUFBQUFCQVFBQUFBQUFBUU1CQlFFRkFRRUdBUUVOQUFZQkJnUUFBUk1CQkFFSUJSSUdBUklIQlFFR0JRTU5CUUVBQUFBQUNnNEFCd0VGQlFVQURRRUZCUUFBQVFZSEJ4NFdCeDRXQUFBRkFTRUJBd0FBQmdFaEFRVUJCUUVDQlFnQ0FnUUlBZ0lBQVE4SER3c0JBQWNFUFRzWkF3a0xDUmtKQXdZREF4a0FDUUFGQXdNQUF3QUhIenc1QkJNYkV3QUFBUUVBQlFBQUF3RUFBd0FEQUFBRkJRTUJBQWNSRVM0QUFBTURBeW9BQmdjRUFBb3RBQUFERFEwREJRWUFBd0VEQUFFRkJnVUdBUUFCQlFBQUFRUUFFQWdFQmdVR0NoUUVBd1lHQ1FvREJRWVFBQUF5QndzRENRWURBUUVBQWdVRkFRTUFCUU1BQUFBS0F3b0tBQU1EQmdNQkJRTUdCd0VEQVFjQkF3TUVBd2dEQVFNQUFBUURBd01JQ0FNRkFRRUJCUVFFQXdrUUF3RURBQU1EQXdZREJnTURBd0VEQXdNQkFRRUJDUUVHQUFFR0FBTUZCUUFIQUFZQUJ3TUFBd1VCQVFVRkJRVUJBQUVCQXdBRkJnVUZBUUFKQVFFREF3VUJCUVVBQVFVQUFBRURBQUVEQkFjREFBVUJBUUVIQUFFREFBY0FDd01CQXdBS0FRRUlDZ1lIR0FVREF3WURCZ01HQVFnQkJnRUFBQUFFQXdVSkF3QURBQU1BQVFZQkJ3RURBQUVCQmdVQkJ3RURBUUVGQlFVSUFRUUJDQUVKQlFFQkFBMEJBd1VBQVFFQkF4UUFBQUFBQXdBRkFBRUJBd0FCQlFFQUJRVUJBQVVKQXdFQUFRTUZCd2tIQVFVQUFRVUVBQVVHQVFNRUJRUUhBUVFBQUFZQUFBQUFBQUVCQlFBQUFBQUFBd0FEQUFBQUFBQUZBQUFBQUFBQUFBQUFBQUFHQVFFQUFRVUJDUUFIQVFFQkJRa0pEUTBCQndrSkRRRURBd2NLRFFjRUJ3RUpBUUVCQVFjR0NBZ0hDUWdEQXdNRENRTUpBUVFBQkFJQ0JnWUVBUUVCQVFFSkJ3Y0dCQVVHQWdZR0NRa0JCZ0VCQVFFREFBY0dCQWdGQUFRQkFRTUNDZ1FBQXdnQUJnWUVBQVVCQkFRRUJBWUhCQVFKQmdjRUFRUUJCZ0VKQ1FrSkF3Y0hCZ1FKQmdrTENRa0hDQWtFQWdFR0JnRUpCZ2tHQmdBSkFRVVNCUjBkQ0FjREFBRUNBZ0lDRHdFRUFRRUFBd0FEQVFNQUFBQUFBQUFBQXdBRENBd0FCd01KQVFBRkFRUUJBUWNCQmdrRkF3TURBd01EQXdNREF3TURBd01EQXdFQkFBQUFOd0VIQmdZR0JnWUdCZ1lHQndjQUFBVUFBUVVGQ0FVQUFBQUFBQUFBQUFBQUFBRUZBUUVCQVFVQkFRRUJBUVVEQXdZR0JnWUJBd2NCQUFBRkJnVUJCUUFOS1JFREFnSUNDQWdJQkFRRUFBY01EQjhWQmdZR0JnWUdCZ1lCQVFFQkNBRUhCd0VHQlFVQkJRa0FBd0VGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUXdBQlF3QUJRY01BQVVNQUFVTUFBVU1BQUVCQVFFQkFRQUJBQVVGQndvTERnc0JEZ2NLQ3c0TERnQUpCZ29BQUFvTERnb0JEZ1VLQ2djSkJ3TUhBd1VLQndrSEF3Y0RDUWtKQndVRkFRVU5CUVVGQVF3TURBd0VCQUlDQVFjSEN5TUxBQ01IQmhBR0ZoQUhCaEFXRUFFSENnSVFCeEFJQ0FnQkFnUUlDQWdJQ0FnRURnc0xDd3NMQ0FnSUFnUUlDQWdJQ0FnRURnc0xDd3NMQVFFS0pDVVhDaGNLQXdvS0pDVVhDZ01YQ2dvREF3c0tDd29MQ2dzS0N3b0tDd29MQndvTEN3c0tDd29MQ2dzS0N3b0tDd29MQXdvTEF3c0hCQW9IQmdRS0JBWXNPZ29KQndjTkFRd0hCd01IRHdJcE1BRUZDUU1EQlFBREFRTUZBQWNEQUFjRUdnVUZCUWNKQnh3Y0VSRVJFUkVKQXdNREF3TUJBQUFIQUFVckFRRW5OU2dGQndBckJRVUFEQTBIQXdRQkFBQUlBd1FFRFFFQkFRRUVCUWNCQmdjQkFBVUZBUUVEQkFRQkJRQUhBQVVCQmdRTkJnTUZCUVVCQlFVSUFRRUJBUUVCQlFVRkJRRUFCUVlTQ1FFQkJ3b0hCQVVEQndrQkJ3VURBUXNEQkFRSkJ3a0RDQU1LQUFFQUF3TUFBdzRIQXdvSkJnWUFBQUVGQlFVSkJBTUFBd2NGQVFVRkFBVUJCQWNFQkFFQkFRUUFCd0VCQ1FNRkFRRUVBUUVCQVFFSEF3TUhCZ1FFQVFRQkFBRUtBUUVCQlFZSkJnb0dBd1FGQmdzSkFRY0VBUUVCQVFRQUFRa0RCUU1KQnc4QkFRa0ZBZ0VEQ2djREF3QURBd01EQndRSUJ3RUNBUVFFQkFRREFRWURBUU1GQ0FFREJ3Y0hCd3NKQXdFQkFRRUhCUVVBQndvREF3Y0pBd2dHQmdjQkF3WURBUVVEQVFZQkF3VUpCZ0VCQXdFSEJ3Y0JCUU1IQVFRR0J3TUdBd0VCQkFRQkFRSUlCd2NIQndFQkJRRURBUWdCQmdZQkNnWUVCZ2NCQlFFRUFRa0RBQU1FQXdBREF3RUJCd01BQXdVQkF3VURBd0VCQlFFRkF3TUFCQWdhQlFVQUJnVUFCZ0VCQmdBR0FRRUVCQVlGQlFVR0JnVUJBUUVFQUFFSkF3RUVBUVlBQndNQkJRQUJCd0VJQndnRkJRVUJCUVVBQXdVREFRRUlCd2dCQVFFRUJ3RUZCZ2tEQUFNRkFRTURBd01EQlFFREFRTUFBd0VCQkFJREF3a0JBd0FBQUFBREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TUdBd1VLQVFjRUFRQUJDUU1CQkFFSkJnUURCQVlFQmdRREJRQUFCQUVCQUFZQkFRQUJBUWdJQVFBREJBY0RBd0VCQ1FFRENRTUdBd1VBQVFFQkFRY0dCQVFFQkFjR0JBUUJCZ1FFQmdZRUJnUUdCZ1lEQ1FFSEF3RUhCQWNIQndFSEJ3Y0JNUUVIQUFjSEJ3RUlBUVlFQmdZR0JnUUVCQVFBQkFRRUJBUUVCQVFFQkFRQUFBQUVCZ1lHQVFrR0JBY0RBd2dJQ2dnSUJnRUlCUUVCQmdFQkF3Y0VCZ0FIQVFRSEFRUUJBUUVQQVFFQkFRQUFCZ0FBQUFBRkFBVUFCUUFBQVFBQkFRWUdBUUFCQXdNQUFRUUFBUUVBQlFZQUFBRUJBd0FEQlFRR0FBVUZBUUVHQmdJR0JRSUNBd2dIQ0FFQkJRQUpCUUVCQVFFSUJRVUZDUUVJQUFFR0JRUUNDd3NHQkFZTENBWUJCUVFBQVFVQkFRa0JBUUVEQXdBRkJRVUFBd01FQmdVRkJRWURGQVVVQVFBTUFBRUhCUUVCQkFBQkJBa0RBd0VHQkFnSEF3TURBUUVCQlFRREJ3WUVCQUVGQmdFQkFRQUFCQVVBQUFBR0F3TUFBd01EQndNSEJRRUZBQUFBQUFBQUFBTUFBUUFBQUFBQUFRRUZBQUFBQUFBQUFBQUFCUVVCQVFVQkFBRUJCUXNNQmdrQmZ3RkIwTjNVQWdzSE1nb0JjQURYR2dGeEFOWWFBWElBMVJvQmN3Q2JBUUYwQUNvQmRRQ0dFUUYyQUlVUkFYY0FoQkVCZUFDREVRRjVBSUlSQ2RNTUFRQkJBUXZhQnZvTitnM1FBMnFEQVpVUmhBT2FBbzhEMEFQUUE1NEVuZ1NlQko0RW5nU2VCSjRFbEE2RUF5WG9HTmNaMFJteUdhNFo5aGdscWhCcVpHUmtaR1JrWkdSa1pHUnFaR1JrWkdSa1pHUmtaR1RlQklRRDV4QmVYdVlRdkFxOEN1QVQ1UkRrRU9NUTRoRGhFT0FRM3hEZUVOMFEzQkJxYW9RRGp3UGRFY29SNnhCa2FtUnFhcHNDNmhCcWFwc0MwQU5xYXIwSzZCRGNCOU1IOGhCcWFyc0syeERUQjZBQzJ3ZWdBdkVRYW1xNkN0a1EwUkRIRVBBUWFtcmFCN2tLdUFxckJyY0s1UlB2RUdwcTJnZTVDcXNHcXdicUUrNFFhbXEyQ3RnUW9BTGJCOXNIMXhEV0VOVVExQkNRQXBBQzdCQnFhdG9IMHdmVEVLc0c2UkJxYXBzQ3RRcTBDb1FEL0FtRUErSVkzaGpkR05zWTJoalpHTmdZMXhqV0dOVVkzQmpTR05FWTN4alFHTThZeUJqT0dNc1l3aGpOR01vWXdSak1HTWtZeEJpK0dNVVl3eGkvR01jWXhoaTlHTHdZdXhpNkdMa1l1QmlJRUljUWhoQ0ZFSjRQblErY0Q1c1BtZytaRDVnUGxnK1VENFFLZ3dxQUVKTVAwQVBRQTRrUWhCQ0NDb0lRL3duckUvZ092QW55RHZFT3ZBbnNEdjBKK3cvNkQ5QVB6dy9BRC9jUCtRL1NEOUVQN3crM0QycURBVFhOR3N3YTJnNjJDY3NhK0ErUUVOa08yUTRiRzlnTzF3N1dEc29heVJySUdzY2EwUW5SQ2RJYTFBN1VEdE1PeGhyU0R0QU9oQWJGR3NRYXd4ckNHc0Vhenc3T0RzME92eHErR3IwYXZCcTdHcmthekE2NEdyY2F0aHExR3JRYXN4cXlHckVhYW9RRDB3bThBY0VPMGdKa1pHUmtaTThFMlFla0dxTWFvaHFoR3FBYXFnNlFHbXFiQW9RSnNSbUVDZWtONlEyWENlNFprd25sR2FNRnl4bHFnd0dHQ2J3WmFtUmswd25aQjdzWnVobUVBN2taWko0WjVnMm9HWkVaa0JscWF0ME4zUTJ0R1k4WmpobU1HWW9aaVJtSUdZQUpoeG1HR1lVWmhCbURHWUlaZ1JtQUdmOFkvaGpjRGR3Tm9obmZEWnNaYW1wZVhxOFptaG5jQjl3SG1SbTRDcmNLbUJtWEdaWVpsQm1UR1pJWlpKc0NhdHNOMnczOUdQd1kreGlzR2JVS3RBcTREL3NKaEFPUEE2c1lyUml5R0xFWXJoaXdHS29ZcVJpb0dJOERwaGlsR0tRWWp3T2hHSjhZandQd0Y0OEQ3UmVQQSt3WGp3UHFGK3dJeWhmTUY4MFh0QmV6RjhJWHdSZEl3QmUvRjZnRHZoZTlGN3dYdXhlNkY3a1h1QmUzRjdZWHRSZHFzaGV4RjdBWHJRMllGNXNYb2dXYkFwMGFseGVXRi9nR213S2JBbXFEQVpvWG9nV2JBbVRCRm1Sa3BBMkZGNFFYZ3hlQ0Y0RVgveGJ3Qlo0TjloYjFGdjRIeVF1NkU3a1Rnd0h6RnFJRm13TDZCdElXK1FhUkRkQVd6eGIvQjlVTHZ4TytFL2NHemhiUUE5SVF6UmJMRm1Sa3d4UEtGc0lUeVJiQUU4Z1doQU9EQVlNTm93MmlEWU1Cc3hhaUJac0Nnd0d4RnFJRm13S3dGcThXeHdpYkZwb1dtQmFYRnBZV2xSYVBBNFlXaFJiSUNJTVdnaGFCRm9BVy94WEVDUElWOFJYdEZld1Y1aFhpRmQ0VjFoWFVGZE1WL1FMUEZZUUpsQlNlQ05vVW5RaWRGSUVNbVJTQURKZ1U5eFB6RTRNQjV4UG1FK2dUNGhQaEUyVGZFOXdUZ0FqSEU4VVR4Qk9pQmRZTDFndUJDTFVUN0FUSUU2d1RLcHNDa2hLUEV0TVIwQkhORWNrUnhoSERFY0VSdnhHOUVic1J1UkczRWJVUnN4SHhDcFVTa0JMckNvTVNnaEtCRW9BUy94SEhDZjRSL1JIOEVmY0sraEg1RWZZUjlCSHpFV1R4RWU0UjVncmdFZDRSM0JIYkVka1IxeEhsQ3Q4UjJRZjJHZG9SMkJIV0VXcURBWU1CamhLTkVvd1NpeEtLRW9rU2lCS0hFc2NKaGhLRkVvUVNnd0hxQ3VvSzhBZjRCdmdHK3hINEJvTUI3UkhyRWZBSFpHVHBFZWNLZ3dIbkVlUVI4QWRrWk9JUjV3cURBWU1CYW9NQm9CT2ZFNTBUYW9NQm5CT2JFNW9UZ3dHWkU1Y1RsQk9TRTZvTHFndVBFNDBUaXhPSkU0Y1Rnd0dHRTRVVGdoT0FFNkFMb0F2OUV2c1MrUkwzRXZVU2d3SHlFdkVTOEJMdUV1MFM3QkxyRXVvU2d3SHBFdWNTNWhMbEV1UVM0eExpRXVFU2FvTUJtd3ZlRXQwUzNCTGJFdG9TMlJMVkVjOFJ5Qkc2RWJZUndoRytFV3FEQVpzTHpCTExFc29TeVJMSUVzY1MwaEhNRWNVUnVCRzBFY0FSdkJIdUIrTUt1Ukx1QitNS3R4S0RBYjBHdlFicUErb0Q2Z09QQzJUcEEra0Rnd0c5QnIwRzZnUHFBK29Eand0azZRUHBBNE1CdkFhOEJ1b0R1d2E3Qm8wTFpPa0Q2UU9EQWJ3R3ZBYnFBN3NHdXdhTkMyVHBBK2tEZ3dHeUVyQVNnd0d0RXFvU2d3R25FcVVTZ3dHa0VxTVNnd0g2Q3A4UzBBT0RBZm9LbmhMUUEycUVBMnFEQVpzQ213S1VFWW9SalJHU0VZTUJpeEdPRVpFUmd3R01FWThSa0JFS3ArUW15Um9NQUNBQUtBSUVJQUVReEFFTEN3QWdBQ0FCRUxvRElBQUxEUUFnQUNnQ0FDQUJRUUowYWdzT0FDQUFJQUVnQVJDZ0FSQ2dCd3NTQUNBQUVNRUJCRUFnQUNnQ0FBOExJQUFMUlFFQmZ5TUFRU0JySWdJa0FDQUNJQUVRekFFMkFoQVE1d0VnQWtFWWFpQUFJQUVnQWtFUWFpQUNRUWhxRUo0UUlBSkJHR29RUkNFQUlBSkJJR29rQUNBQVFRUnFDeXdCQVg4Z0FCQVdCRUFEUUNBQUlBTVFFU2dDQUNBQklBSVFwaGtnQTBFQmFpSURJQUFRRmtrTkFBc0xDeEFBSUFBb0FnUWdBQ2dDQUd0QkFuVUxPQUFnQUNBQkVORWFJQUJCQkdvUWlnTWdBQ0lCUVFocUVJa0RJQUlFUUNBQklBRXBBZ3hDUUlOQ0FZUTNBZ3dMSUFCQlBHb1EwQm9MQ2dBZ0FCREJBaERjRGdzZEFDQUFFTUVCQkVBZ0FCQWpHaUFBS0FJQUdpQUFFTUlFR2dzZ0FBc3VBUUYvSUFBUUZnUkFBMEFnQUNBRUVCRW9BZ0FnQVNBQ0lBTVFwUmtnQkVFQmFpSUVJQUFRRmtrTkFBc0xDd2NBSUFCQkNHb0xaZ0VCZnlNQVFSQnJJZ01rQUNBQ0lBTWdBQkFpSWdKQkFFRUFFS3dCSVFBZ0FoQVpHaUFBQkVBZ0FDQUFLQUlBS0FJMEVRQUFJZ0FnQUNnQ0FDZ0NLQkVBQUNJQUlBRkJCblJCd1A4QmNhMGdBQ2tDQkVLL2dINkRoRGNDQkFzZ0EwRVFhaVFBQzBJQkFYOGpBRUVRYXlJRUpBQWdBQ0FFSUFFUUlpSUJRUUJCQUJDc0FTRUFJQUVRR1JvZ0FBUkFJQUFnQWlBRElBQW9BZ0FvQWtBUkJnQUxJQVJCRUdva0FBc01BQ0FBSUFFUWx3SkJBWE1MRlFBZ0FCREJBUVJBSUFBb0FnUVBDeUFBTFFBTEN4OEJBWDhnQUJEQkFRUkFJQUFvQWdBaEFTQUFFTUlFR2lBQkVDb0xJQUFMS3dFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FpQUFRZGdBYWlBQ1FReHFFTmNKSUFKQkVHb2tBQXNWQUNBQUVQc05JQUFnQVNBQkVLQUJFSTBKSUFBTEJ3QWdBRUVNYWdzS0FDQUFFTUVDRU9BT0N3Y0FJQUJCQkdvTE1RRUNmeUFBUVFFZ0FCc2hBQU5BQWtBZ0FCQ2JBU0lCRFFCQnpOa1VLQUlBSWdKRkRRQWdBaEVNQUF3QkN3c2dBUXNxQVFGL0l3QkJFR3NpQkNRQUlBUWdBellDRENBQUlBRWdBaUFERU5VRklRQWdCRUVRYWlRQUlBQUxNZ0VCZnlNQVFSQnJJZ1lrQUNBR0lBUTJBZ3dnQUNBQklBSWdBeUFFUVFCSElBWkJER29nQlJEUkFTQUdRUkJxSkFBTFJRRUJmeU1BUVNCcklnSWtBQ0FDSUFFUXpBRTJBaEFRNXdFZ0FrRVlhaUFBSUFFZ0FrRVFhaUFDUVFocUVPRVlJQUpCR0dvUVZ5RUFJQUpCSUdva0FDQUFRUkJxQzZvTkFRZC9Ba0FnQUVVTkFDQUFRWGhxSWdNZ0FFRjhhaWdDQUNJQlFYaHhJZ0JxSVFVQ1FDQUJRUUZ4RFFBZ0FVRURjVVVOQVNBRElBTW9BZ0FpQW1zaUEwSGcyUlFvQWdBaUJFa05BU0FBSUFKcUlRQWdBMEhrMlJRb0FnQkhCRUFnQWtIL0FVMEVRQ0FES0FJSUlnUWdBa0VEZGlJQ1FRTjBRZmpaRkdwSEdpQUVJQU1vQWd3aUFVWUVRRUhRMlJSQjBOa1VLQUlBUVg0Z0FuZHhOZ0lBREFNTElBUWdBVFlDRENBQklBUTJBZ2dNQWdzZ0F5Z0NHQ0VHQWtBZ0F5QURLQUlNSWdGSEJFQWdCQ0FES0FJSUlnSk5CRUFnQWlnQ0RCb0xJQUlnQVRZQ0RDQUJJQUkyQWdnTUFRc0NRQ0FEUVJScUlnSW9BZ0FpQkEwQUlBTkJFR29pQWlnQ0FDSUVEUUJCQUNFQkRBRUxBMEFnQWlFSElBUWlBVUVVYWlJQ0tBSUFJZ1FOQUNBQlFSQnFJUUlnQVNnQ0VDSUVEUUFMSUFkQkFEWUNBQXNnQmtVTkFRSkFJQU1nQXlnQ0hDSUNRUUowUVlEY0ZHb2lCQ2dDQUVZRVFDQUVJQUUyQWdBZ0FRMEJRZFRaRkVIVTJSUW9BZ0JCZmlBQ2QzRTJBZ0FNQXdzZ0JrRVFRUlFnQmlnQ0VDQURSaHRxSUFFMkFnQWdBVVVOQWdzZ0FTQUdOZ0lZSUFNb0FoQWlBZ1JBSUFFZ0FqWUNFQ0FDSUFFMkFoZ0xJQU1vQWhRaUFrVU5BU0FCSUFJMkFoUWdBaUFCTmdJWURBRUxJQVVvQWdRaUFVRURjVUVEUncwQVFkalpGQ0FBTmdJQUlBVWdBVUYrY1RZQ0JDQURJQUJCQVhJMkFnUWdBQ0FEYWlBQU5nSUFEd3NnQlNBRFRRMEFJQVVvQWdRaUFVRUJjVVVOQUFKQUlBRkJBbkZGQkVBZ0JVSG8yUlFvQWdCR0JFQkI2TmtVSUFNMkFnQkIzTmtVUWR6WkZDZ0NBQ0FBYWlJQU5nSUFJQU1nQUVFQmNqWUNCQ0FEUWVUWkZDZ0NBRWNOQTBIWTJSUkJBRFlDQUVIazJSUkJBRFlDQUE4TElBVkI1TmtVS0FJQVJnUkFRZVRaRkNBRE5nSUFRZGpaRkVIWTJSUW9BZ0FnQUdvaUFEWUNBQ0FESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBRHdzZ0FVRjRjU0FBYWlFQUFrQWdBVUgvQVUwRVFDQUZLQUlNSVFJZ0JTZ0NDQ0lFSUFGQkEzWWlBVUVEZEVINDJSUnFJZ2RIQkVCQjROa1VLQUlBR2dzZ0FpQUVSZ1JBUWREWkZFSFEyUlFvQWdCQmZpQUJkM0UyQWdBTUFnc2dBaUFIUndSQVFlRFpGQ2dDQUJvTElBUWdBallDRENBQ0lBUTJBZ2dNQVFzZ0JTZ0NHQ0VHQWtBZ0JTQUZLQUlNSWdGSEJFQkI0TmtVS0FJQUlBVW9BZ2dpQWswRVFDQUNLQUlNR2dzZ0FpQUJOZ0lNSUFFZ0FqWUNDQXdCQ3dKQUlBVkJGR29pQWlnQ0FDSUVEUUFnQlVFUWFpSUNLQUlBSWdRTkFFRUFJUUVNQVFzRFFDQUNJUWNnQkNJQlFSUnFJZ0lvQWdBaUJBMEFJQUZCRUdvaEFpQUJLQUlRSWdRTkFBc2dCMEVBTmdJQUN5QUdSUTBBQWtBZ0JTQUZLQUljSWdKQkFuUkJnTndVYWlJRUtBSUFSZ1JBSUFRZ0FUWUNBQ0FCRFFGQjFOa1VRZFRaRkNnQ0FFRitJQUozY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFWR0cyb2dBVFlDQUNBQlJRMEJDeUFCSUFZMkFoZ2dCU2dDRUNJQ0JFQWdBU0FDTmdJUUlBSWdBVFlDR0FzZ0JTZ0NGQ0lDUlEwQUlBRWdBallDRkNBQ0lBRTJBaGdMSUFNZ0FFRUJjallDQkNBQUlBTnFJQUEyQWdBZ0EwSGsyUlFvQWdCSERRRkIyTmtVSUFBMkFnQVBDeUFGSUFGQmZuRTJBZ1FnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUFzZ0FFSC9BVTBFUUNBQVFRTjJJZ0ZCQTNSQitOa1VhaUVBQW45QjBOa1VLQUlBSWdKQkFTQUJkQ0lCY1VVRVFFSFEyUlFnQVNBQ2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFJZ0FDQUROZ0lJSUFJZ0F6WUNEQ0FESUFBMkFnd2dBeUFDTmdJSUR3c2dBMElBTndJUUlBTUNmMEVBSUFCQkNIWWlBVVVOQUJwQkh5QUFRZi8vL3dkTERRQWFJQUVnQVVHQS9qOXFRUkIyUVFoeElnRjBJZ0lnQWtHQTRCOXFRUkIyUVFSeElnSjBJZ1FnQkVHQWdBOXFRUkIyUVFKeElnUjBRUTkySUFFZ0FuSWdCSEpySWdGQkFYUWdBQ0FCUVJWcWRrRUJjWEpCSEdvTElnSTJBaHdnQWtFQ2RFR0EzQlJxSVFFQ1FBSkFBa0JCMU5rVUtBSUFJZ1JCQVNBQ2RDSUhjVVVFUUVIVTJSUWdCQ0FIY2pZQ0FDQUJJQU0yQWdBZ0F5QUJOZ0lZREFFTElBQkJBRUVaSUFKQkFYWnJJQUpCSDBZYmRDRUNJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBSkJIWFloQVNBQ1FRRjBJUUlnQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUROZ0lRSUFNZ0JEWUNHQXNnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFFS0FJSUlnQWdBellDRENBRUlBTTJBZ2dnQTBFQU5nSVlJQU1nQkRZQ0RDQURJQUEyQWdnTFFmRFpGRUh3MlJRb0FnQkJmMm9pQURZQ0FDQUFEUUJCbU4wVUlRTURRQ0FES0FJQUlnQkJDR29oQXlBQURRQUxRZkRaRkVGL05nSUFDd3NpQVFGL0lBRVFvQUVpQWlBQUVCOUdCSDhnQUVGL0lBRWdBaENiQjBVRlFRQUxDdzBBSUFBb0FnQWdBVUVEZEdvTEVBQWdBRUVDTmdJSUlBQWdBVGtEQUFzMUFRRi9Jd0JCRUdzaUFpUUFJQUlnQUNnQ0FEWUNEQ0FBSUFFb0FnQTJBZ0FnQVNBQ1FReHFLQUlBTmdJQUlBSkJFR29rQUFzT0FDQUFRUkJxSUFFUUVTZ0NBQXNKQUNBQUVMUUZJQUFMQ3dBZ0FDQUJOZ0lBSUFBTENRQWdBQ2dDQkJCaEN3b0FJQUFvQWdoQkNFWUxLQUVCZnlBQklBRkJmMm9pQW5GRkJFQWdBQ0FDY1E4TElBQWdBVThFZnlBQUlBRndCU0FBQ3dzTkFDQUFRZGlTRHpZQ0FDQUFDeXdCQVg4Z0FCREZCQ0FBS0FJQUJFQWdBQkR1Q2lBQUVCc2FJQUFvQWdBaEFTQUFFTGNDR2lBQkVDb0xDeEFBSUFBb0FnUWdBQ2dDQUd0QkZHMExEUUFnQUNnQ0FDQUJRUlJzYWdzN0FRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFRUkJxSUFKQkRHb1FSeUFDUVFFNkFBc2dBRUVjYWlBQ1FRdHFFTlVNSUFKQkVHb2tBQXNuQVFGL0l3QkJFR3NpQWlRQUlBSWdBVFlDRENBQUlBSkJER29RclFJZ0FrRVFhaVFBSUFBTENRQWdBRUVJYWhBbEN3a0FJQUFRSlNnQ0FBdURCQUVEZnlBQ1FZREFBRThFUUNBQUlBRWdBaEFLR2lBQUR3c2dBQ0FDYWlFREFrQWdBQ0FCYzBFRGNVVUVRQUpBSUFKQkFVZ0VRQ0FBSVFJTUFRc2dBRUVEY1VVRVFDQUFJUUlNQVFzZ0FDRUNBMEFnQWlBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVFGcUlnSWdBMDhOQVNBQ1FRTnhEUUFMQ3dKQUlBTkJmSEVpQkVIQUFFa05BQ0FDSUFSQlFHb2lCVXNOQUFOQUlBSWdBU2dDQURZQ0FDQUNJQUVvQWdRMkFnUWdBaUFCS0FJSU5nSUlJQUlnQVNnQ0REWUNEQ0FDSUFFb0FoQTJBaEFnQWlBQktBSVVOZ0lVSUFJZ0FTZ0NHRFlDR0NBQ0lBRW9BaHcyQWh3Z0FpQUJLQUlnTmdJZ0lBSWdBU2dDSkRZQ0pDQUNJQUVvQWlnMkFpZ2dBaUFCS0FJc05nSXNJQUlnQVNnQ01EWUNNQ0FDSUFFb0FqUTJBalFnQWlBQktBSTROZ0k0SUFJZ0FTZ0NQRFlDUENBQlFVQnJJUUVnQWtGQWF5SUNJQVZORFFBTEN5QUNJQVJQRFFFRFFDQUNJQUVvQWdBMkFnQWdBVUVFYWlFQklBSkJCR29pQWlBRVNRMEFDd3dCQ3lBRFFRUkpCRUFnQUNFQ0RBRUxJQU5CZkdvaUJDQUFTUVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBaUFCTFFBQk9nQUJJQUlnQVMwQUFqb0FBaUFDSUFFdEFBTTZBQU1nQVVFRWFpRUJJQUpCQkdvaUFpQUVUUTBBQ3dzZ0FpQURTUVJBQTBBZ0FpQUJMUUFBT2dBQUlBRkJBV29oQVNBQ1FRRnFJZ0lnQTBjTkFBc0xJQUFMQ1FBZ0FFRUFFUHdOQzBrQkFYOGpBRUVnYXlJQ0pBQWdBaUFCRU13Qk5nSVFFT2NCSUFKQkdHb2dBQ0FCUWVEYkVTQUNRUkJxSUFKQkNHb1Fvd3dnQWtFWWFoQkVJUUFnQWtFZ2FpUUFJQUJCQkdvTENRQWdBQ2dDQUJCaEMwc0JBWDhqQUVFUWF5SUNKQUFDUUNBQUtBSUVJQUFRR3lnQ0FFa0VRQ0FBRUJzZ0FDZ0NCQ0FCRVBrQklBQWdBQ2dDQkVFRWFqWUNCQXdCQ3lBQUlBRVExQXdMSUFKQkVHb2tBQXN4QVFGL0l3QkJJR3NpQWlRQUlBSkJDR29nQUVFc2FpQUNRUkJxSUFFUWFTSUFFTkVOSUFBUUlCb2dBa0VnYWlRQUN3Y0FJQUJCRUdvTENnQWdBQ2dDQUVFSWFndVJBUUFnQUVIWWtnODJBZ0FnQUVFQU5nSlFJQUJDQURjQ1BDQUFRZ0EzQWtRZ0FDQUFLQUlFUVlDQWdINXhJQVZCRUhSQmdJQThjU0FFUVF4MFFZRGdBM0VnQTBFSWRFR0FIbkVnQVVIL0FYRnljbkpCZ0lEQUFFRUFJQVliUVFBZ0EwRUJSaHR5Y2pZQ0JDQUFRY3dBYWhDS0F5QUFRUWhxRUlrRElBQWdBa0UvY2EwZ0FDa0NERUpBZzRRM0Fnd2dBQXNLQUJEVkF5QUFFSlFDQzBzQkFYOGpBRUVRYXlJQ0pBQUNRQ0FBS0FJRUlBQVFHeWdDQUVjRVFDQUFFQnNnQUNnQ0JDQUJFUGtCSUFBZ0FDZ0NCRUVFYWpZQ0JBd0JDeUFBSUFFUTFBd0xJQUpCRUdva0FBc0hBQ0FBSUFGeUN3d0FJQUFvQWdBZ0FSQVNHZ3N0QUNBQ0lBQW9BZ2dpQW5GRkJFQWdBQ0FCUWFtZkVDQURJQUlRakE1QkFDQUFLQUlBS0FLZ0FSRUNBQXNMQ0FBZ0FFSG9BR29MT3dFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFRVFhaUFDUVF4cUVFY2dBa0VBT2dBTElBQkJIR29nQWtFTGFoRFZEQ0FDUVJCcUpBQUxDUUFnQUNBQkVLUVJDdzRBSUFBUTZnRWdBQkRxQVNBQUMwMEFJQUFRaWdNZ0FDQUFLQUlBUVlDQW9IOXhJQUZCL3dGeElBSkJDSFJCZ1A0RGNYSkJnSUFFUVFBZ0F4dHlRWUNBQ0VFQUlBUWJja0dBZ0JCQkFDQUZHM0p5UVlDQXdBQnlOZ0lBQ3drQUlBQVFFeUFCYWdzNUFDQUFJQU0yQWd3Z0FDQUNOZ0lJSUFBZ0FUWUNCQ0FBUVpUYkVUWUNBQ0FBUVJCcUVEQWFJQUJCSEdvUTFnd2dBRUVBTmdJb0lBQUxDUUFnQUNBQkVMWVFDMU1CQW45QmZ5RUNBa0FnQUVIQUFXb2lBeEM0QWcwQUEwQWdBeENRQVNnQ0FDSUNJQUVnQWlnQ0FDZ0NDQkVEQUNJQ1FYOUhEUUZCZnlFQ0lBTVF1QUlOQVNBQUVKUU5JQU1RdUFKRkRRQUxDeUFDQ3ljQUlBQWdBQzhCa0FGQmdPQURjU0FDUVFoMFFZQWVjU0FCUVFSMFFmQUJjWEp5T3dHUUFRc1ZBQ0FBSUFBb0FvZ0JRUUZxSWdBMkFvZ0JJQUFMc0FFQkFuOGpBRUVRYXlJRkpBQWdBeUFGSUFBUUlpSURRUUJCQUJDc0FTRUFJQU1RR1JvQ1FDQUFSUTBBSUFBZ0FDZ0NBQ2dDTkJFQUFDZ0NRQ0lBRURkQkFVZ05BQU5BSUFBZ0JCQTRLQUlBSWdNZ0F5Z0NBQ2dDR0JFQUFDQUJFSWNCUlFSQUlBQWdCQkE0S0FJQUlnQWdBQ2dDQUNnQ0tCRUFBQ0lBSUFKQkJuUkJ3UDhCY2EwZ0FDa0NCRUsvZ0g2RGhEY0NCQXdDQ3lBRVFRRnFJZ1FnQUJBM1NBMEFDd3NnQlVFUWFpUUFDd29BSUFBb0FnQkJFR29MT3dBZ0FVRUNFSzBESUFGQnZKY1JFQkFnQUNnQ0FCRFREUkFRUWNXWEVSQVFJQUlRRUVIT2x4RVFFQm9nQUNBQUtBTFFBMEVCYWpZQzBBTUxDZ0FnQUNnQ0FCRE5CUXNRQUNBQVFRczJBZ2dnQUNBQk53TUFDeEFBSUFCQkNqWUNDQ0FBSUFFM0F3QUxEQUFnQUNBQlFSeHFFTGdHQ3hzQkFYOUJDaUVCSUFBUXdRRUVmeUFBRU1JRVFYOXFCU0FCQ3dzSEFDQUFRUlJxQ3hRQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkN4VUFJQUFvQWdRaUFFVUVRRUVBRHdzZ0FCQ2FBUXNrQVFGL0l3QkJFR3NpQVNRQUlBRkJDR29nQUJBeEtBSUFJUUFnQVVFUWFpUUFJQUFMRFFBZ0FFSG9BR29nQVJDOEZRc1pBQ0FBSUFBdkFaQUJRWURnQTNFZ0FVRVBjWEk3QVpBQkN3UUFRUUFMRUFBZ0FFRUlOZ0lJSUFBZ0FUWUNBQXNSQUNBQUlBQW9BZ0JCQkdvMkFnQWdBQXNPQUNBQUlBRW9BZ0EyQWdBZ0FBc09BQ0FBSUFFZ0FSQ2dBUkR0QndzVkFDQUFFT29CSUFBZ0FTQUJFS0FCRUxVR0lBQUxCQUFnQUFzTkFDQUFLQUlBSUFGQkdHeHFDeEFBSUFCQkJEWUNDQ0FBSUFFNkFBQUxFQUFnQUVFSk5nSUlJQUFnQVRZQ0FBc0dBQkNDQVFBTFN3QWdBQkNLQXlBQUlBQW9BZ0JCZ0lCQWNTQUJRZjhCY1NBQ1FRaDBRWUQrQTNGeVFZQ0FCRUVBSUFNYmNrR0FnQWhCQUNBRUczSkJnSUFRUVFBZ0JSdHlja0dBZ0NCeU5nSUFDendBSUFBUWlnTWdBQ0FBS0FJQVFZQ0FZSEVnQWtFSWRFR0EvZ054SUFGQi93Rnhja0dBZ0FSQkFDQURHM0pCZ0lBUVFRQWdCQnR5Y2pZQ0FBc1FBQ0FBUVFjMkFnZ2dBQ0FCT3dFQUN4QUFJQUJCQmpZQ0NDQUFJQUU3QVFBTFJRQWdBRUVBTmdLVUFTQUFRWmdCYWhENEF5QUFRUUEyQXFRQklBQkJxQUZxRVBnRElBQkJBRG9BdkFFZ0FFSUFOd0swQVNBQVFjUUJhaEN1Q0NBQVFRQTJBc0FCQ3hJQUlBQWdBRUVnRU1rQklBRWdBaER6QkFzU0FDQUFJQUkyQWdRZ0FDQUJPZ0FBSUFBTEVBQWdBRUVGTmdJSUlBQWdBVG9BQUFzUUFDQUFRUXcyQWdnZ0FDQUJPZ0FBQzFzQkFuOGpBRUVRYXlJRkpBQWdBa0gvLy8vL0IwY0VRRUVzRUNaQnh3QVF0d0VpQkNBQkVEa2dCQ0FDRUV3Z0EwRUFUZ1JBSUFRZ0F4Qk1DeUFBUVlRQ2FpQUZRUWhxSUFRUU9pSUFFSDBnQUJBK0N5QUZRUkJxSkFBTERnQWdBQ0FCSUFFUXRRc1FuUkVMU2dFQ2Z3SkFJQUF0QUFBaUFrVWdBaUFCTFFBQUlnTkhjZzBBQTBBZ0FTMEFBU0VESUFBdEFBRWlBa1VOQVNBQlFRRnFJUUVnQUVFQmFpRUFJQUlnQTBZTkFBc0xJQUlnQTJzTHdnRUNBMzhCZmdKQUFrQWdBQ2tEY0NJRVVFVUVRQ0FBS1FONElBUlpEUUVMSUFBUTJoTWlBa0YvU2cwQkN5QUFRUUEyQW1oQmZ3OExJQUFvQWdnaEFRSkFBa0FnQUNrRGNDSUVVQTBBSUFRZ0FDa0RlRUovaFh3aUJDQUJJQUFvQWdRaUEydXNXUTBBSUFBZ0F5QUVwMm8yQW1nTUFRc2dBQ0FCTmdKb0N3SkFJQUZGQkVBZ0FDZ0NCQ0VBREFFTElBQWdBQ2tEZUNBQklBQW9BZ1FpQUd0QkFXcXNmRGNEZUFzZ0FFRi9haUlBTFFBQUlBSkhCRUFnQUNBQ09nQUFDeUFDQ3pBQkFYOGdBU2dDQUNFQ0lBQkJCR29nQVJCOUlBSWdBQkNzQmlBQ0tBSUVCRUFnQUNnQ05DZ0NCQ0FDRUl3QkN3dExBUUYvSXdCQkVHc2lBaVFBQWtBZ0FDZ0NCQ0FBRUJzb0FnQkpCRUFnQUJBYklBQW9BZ1FnQVJDM0NDQUFJQUFvQWdSQkJHbzJBZ1FNQVFzZ0FDQUJFTkVWQ3lBQ1FSQnFKQUFMSndFQmZ5TUFRUkJySWdFa0FDQUJRUWhxSUFBUWdRRVFNU2dDQUNFQUlBRkJFR29rQUNBQUN6TUFBa0JCNU1vVUxRQUFRUUZ4RFFCQjVNb1VFSzRCUlEwQVFlREtGQkNwRXpZQ0FFSGt5aFFRclFFTFFlREtGQ2dDQUFzc0FRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dvZ0FTQUNJQUlRaXhBZ0FDQURRUWhxRU5jRUlBTkJFR29rQUFzbUFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCQWxFREVvQWdBaEFDQUJRUkJxSkFBZ0FBc0ZBQkFCQUFzR0FDQUFFQ29MU3dFQmZ5TUFRUkJySWdJa0FBSkFJQUFvQWdRZ0FCQWJLQUlBUndSQUlBQVFHeUFBS0FJRUlBRVFwUVVnQUNBQUtBSUVRUWhxTmdJRURBRUxJQUFnQVJDaURnc2dBa0VRYWlRQUN3MEFJQUF0QUFaQklIRkJCWFlMSHdBZ0FVVWdBa0gvLy8vL0IwWnlSUVJBSUFBZ0FTQUNRWDhRZUFzZ0FRc1FBQ0FBUVg4Z0FTQUJFS0FCRUpzSEN3Z0FJQUFnQVJBZUN3OEFJQUFnQVJBVElBRVFIeENnQndzTkFDQUFMUUFDUVFSeFFRSjJDNTRMQWdWL0QzNGpBRUhnQUdzaUJTUUFJQVJDTDRZZ0EwSVJpSVFoRHlBQ1FpQ0dJQUZDSUlpRUlRMGdCRUwvLy8vLy8vOC9neUlPUWcrR0lBTkNNWWlFSVJBZ0FpQUVoVUtBZ0lDQWdJQ0FnSUIvZ3lFS0lBNUNFWWdoRVNBQ1F2Ly8vLy8vL3orRElndENJSWdoRWlBRVFqQ0lwMEgvL3dGeElRY0NRQUovSUFKQ01JaW5RZi8vQVhFaUNVRi9ha0g5L3dGTkJFQkJBQ0FIUVg5cVFmNy9BVWtOQVJvTElBRlFJQUpDLy8vLy8vLy8vLy8vQUlNaURFS0FnSUNBZ0lEQS8vOEFWQ0FNUW9DQWdJQ0FnTUQvL3dCUkcwVUVRQ0FDUW9DQWdJQ0FnQ0NFSVFvTUFnc2dBMUFnQkVMLy8vLy8vLy8vLy84QWd5SUNRb0NBZ0lDQWdNRC8vd0JVSUFKQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFSQ2dJQ0FnSUNBSUlRaENpQURJUUVNQWdzZ0FTQU1Rb0NBZ0lDQWdNRC8vd0NGaEZBRVFDQUNJQU9FVUFSQVFvQ0FnSUNBZ09ELy93QWhDa0lBSVFFTUF3c2dDa0tBZ0lDQWdJREEvLzhBaENFS1FnQWhBUXdDQ3lBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQUlBRWdESVFoQWtJQUlRRWdBbEFFUUVLQWdJQ0FnSURnLy84QUlRb01Bd3NnQ2tLQWdJQ0FnSURBLy84QWhDRUtEQUlMSUFFZ0RJUlFCRUJDQUNFQkRBSUxJQUlnQTRSUUJFQkNBQ0VCREFJTElBeEMvLy8vLy8vL1AxZ0VRQ0FGUWRBQWFpQUJJQXNnQVNBTElBdFFJZ1liZVNBR1FRWjByWHluSWdaQmNXb1E5d0VnQlNrRFdDSUxRaUNHSUFVcEExQWlBVUlnaUlRaERTQUxRaUNJSVJKQkVDQUdheUVHQ3lBR0lBSkMvLy8vLy8vL1AxWU5BQm9nQlVGQWF5QURJQTRnQXlBT0lBNVFJZ2diZVNBSVFRWjByWHluSWdoQmNXb1E5d0VnQlNrRFNDSUNRZytHSUFVcEEwQWlBMEl4aUlRaEVDQUNRaStHSUFOQ0VZaUVJUThnQWtJUmlDRVJJQVlnQ0d0QkVHb0xJUVlnRDBMLy8vLy9ENE1pQWlBQlF2Ly8vLzhQZ3lJQmZpSVBJQU5DRDRaQ2dJRCsvdytESWdNZ0RVTC8vLy8vRDRNaURINThJZ1JDSUlZaURpQUJJQU4rZkNJTklBNVVyU0FDSUF4K0loVWdBeUFMUXYvLy8vOFBneUlMZm53aUV5QVFRdi8vLy84UGd5SU9JQUYrZkNJUUlBUWdEMVN0UWlDR0lBUkNJSWlFZkNJVUlBSWdDMzRpRmlBRElCSkNnSUFFaENJUGZud2lBeUFNSUE1K2ZDSVNJQUVnRVVMLy8vLy9CNE5DZ0lDQWdBaUVJZ0YrZkNJUlFpQ0dmQ0lYZkNFRUlBY2dDV29nQm1wQmdZQi9haUVHQWtBZ0N5QU9maUlZSUFJZ0QzNThJZ0lnR0ZTdElBSWdBU0FNZm53aURDQUNWSzE4SUF3Z0V5QVZWSzBnRUNBVFZLMThmQ0lDSUF4VXJYd2dBU0FQZm53Z0FTQUxmaUlMSUE0Z0QzNThJZ0VnQzFTdFFpQ0dJQUZDSUlpRWZDQUNJQUZDSUlaOElnRWdBbFN0ZkNBQklCRWdFbFN0SUFNZ0ZsU3RJQklnQTFTdGZIeENJSVlnRVVJZ2lJUjhJZ01nQVZTdGZDQURJQlFnRUZTdElCY2dGRlN0Zkh3aUFpQURWSzE4SWdGQ2dJQ0FnSUNBd0FDRFVFVUVRQ0FHUVFGcUlRWU1BUXNnRFVJL2lDRURJQUZDQVlZZ0FrSS9pSVFoQVNBQ1FnR0dJQVJDUDRpRUlRSWdEVUlCaGlFTklBTWdCRUlCaG9RaEJBc2dCa0gvL3dGT0JFQWdDa0tBZ0lDQWdJREEvLzhBaENFS1FnQWhBUXdCQ3dKK0lBWkJBRXdFUUVFQklBWnJJZ2RCL3dCTkJFQWdCVUVRYWlBTklBUWdCeER0QkNBRlFTQnFJQUlnQVNBR1FmOEFhaUlHRVBjQklBVkJNR29nRFNBRUlBWVE5d0VnQlNBQ0lBRWdCeER0QkNBRktRTXdJQVVwQXppRVFnQlNyU0FGS1FNZ0lBVXBBeENFaENFTklBVXBBeWdnQlNrREdJUWhCQ0FGS1FNQUlRSWdCU2tEQ0F3Q0MwSUFJUUVNQWdzZ0FVTC8vLy8vLy84L2d5QUdyVUl3aG9RTElBcUVJUW9nRFZBZ0JFSi9WU0FFUW9DQWdJQ0FnSUNBZ0g5UkcwVUVRQ0FLSUFKQ0FYd2lBU0FDVksxOElRb01BUXNnRFNBRVFvQ0FnSUNBZ0lDQWdIK0ZoRkJGQkVBZ0FpRUJEQUVMSUFvZ0FpQUNRZ0dEZkNJQklBSlVyWHdoQ2dzZ0FDQUJOd01BSUFBZ0NqY0RDQ0FGUWVBQWFpUUFDeTBCQVg4Z0FTZ0NCQ0lDSUFCQkVHb2lBQkFXVHdSQUlBQWdBa0VRYWhEQURBc2dBQ0FDRUJFZ0FUWUNBQXRMQVFGL0l3QkJJR3NpQWlRQUlBSWdBRUhFQUdvaUFDQUNRUWhxSUFFUWFTSUJFSU1FTmdJWUlBSWdBQkNCQVRZQ0FDQUNRUmhxSUFJUUhpRUFJQUVRSUJvZ0FrRWdhaVFBSUFBTGNBRUNmeUFBRU5vQklnSkJmMGNFUUNBQUtBSVlJQUFvQWhCQkJIUnFJZ0VnQVNnQ0RFRUJhallDRENBQUlBQW9BakJCQVdvMkFqQWdBa0VLUmdSQUlBRWdBU2dDQ0VFQmFqWUNDQ0FBUVFBMkFqQWdBQ0FBS0FJc1FRRnFOZ0lzSUFGQkFEWUNEQXNnQUJDbUVBc2dBZ3Y0QVFFQmZ5QUFJQUV0QUFRZ0FDZ0NCRUdBZm5GeUlnSTJBZ1FnQUNBQktBSk1OZ0pNSUFCQkNHb2dBVUVJYWtFMEVEMGFJQUFnQVNnQ0JFR0FIbkVnQWtIL1lYRnlJZ0kyQWdRZ0FDQUNRZitmZkhFZ0FTZ0NCRUdBNEFOeGNpSUNOZ0lFSUFBZ0FrSC8vME54SUFFb0FnUkJnSUE4Y1hJaUFqWUNCQ0FBSUFKQi8vKy9mM0VnQVNnQ0JFR0FnTUFBY1hJMkFnUWdBQ0FCS0FJOE5nSThJQUFnQVNnQ1JEWUNSQ0FBSUFFb0FrZzJBa2dnQUNBQUtBSUFLQUtJQVJFQUFCb2dBQ0FCS0FKQU5nSkFJQUFnQVNnQ1VEWUNVQ0FCRUlVQklRRWdBQ0FBS0FJRVFmLy8vMzV4UVlDQWdBRkJBQ0FCRzNJMkFnUUxDZ0FnQUNnQ0JFRjhhZ3N4QVFGL0l3QkJFR3NpQXlRQUlBTWdBVFlDRENBQUlBTkJER29RWnhvZ0FDQUNLUUlBTndJRUlBTkJFR29rQUNBQUN3a0FJQUFnQVJBU0dnc0pBQ0FBRVAwSElBQUxEQUFnQUNBQkxRQUFPZ0FBQ3lrQkFYOGpBRUVRYXlJQ0pBQWdBaUFCRUlRT0lBQWdBaERHQ2lBQ0VCa2FJQUpCRUdva0FDQUFDd2tBSUFBUTdSQWdBQXRaQVFKL0l3QkJJR3NpQVNRQUlBRkJBRFlDRENBQlFkWUVOZ0lJSUFFZ0FTa0RDRGNEQUNBQUFuOGdBVUVRYWlJQ0lBRXBBZ0EzQWdRZ0FpQUFOZ0lBSUFJTEVKRVNJQUFvQWdRaEFDQUJRU0JxSkFBZ0FFRi9hZ3NiQUNBQVFRQTJBZ1FnQUVHVTZoSTJBZ0FnQUVIc3Z4STJBZ0FMRWdBZ0FDQUNOZ0lFSUFBZ0FUWUNBQ0FBQ3hBQUlBQW9BZ1FnQUNnQ0FHdEJBM1VMeWk0QkMzOGpBRUVRYXlJTEpBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCME5rVUtBSUFJZ1pCRUNBQVFRdHFRWGh4SUFCQkMwa2JJZ1ZCQTNZaUFIWWlBVUVEY1FSQUlBRkJmM05CQVhFZ0FHb2lBa0VEZENJRVFZRGFGR29vQWdBaUFVRUlhaUVBQWtBZ0FTZ0NDQ0lESUFSQitOa1VhaUlFUmdSQVFkRFpGQ0FHUVg0Z0FuZHhOZ0lBREFFTFFlRFpGQ2dDQUJvZ0F5QUVOZ0lNSUFRZ0F6WUNDQXNnQVNBQ1FRTjBJZ0pCQTNJMkFnUWdBU0FDYWlJQklBRW9BZ1JCQVhJMkFnUU1EQXNnQlVIWTJSUW9BZ0FpQ0UwTkFTQUJCRUFDUUVFQ0lBQjBJZ0pCQUNBQ2EzSWdBU0FBZEhFaUFFRUFJQUJyY1VGL2FpSUFJQUJCREhaQkVIRWlBSFlpQVVFRmRrRUljU0lDSUFCeUlBRWdBbllpQUVFQ2RrRUVjU0lCY2lBQUlBRjJJZ0JCQVhaQkFuRWlBWElnQUNBQmRpSUFRUUYyUVFGeElnRnlJQUFnQVhacUlnSkJBM1FpQTBHQTJoUnFLQUlBSWdFb0FnZ2lBQ0FEUWZqWkZHb2lBMFlFUUVIUTJSUWdCa0YrSUFKM2NTSUdOZ0lBREFFTFFlRFpGQ2dDQUJvZ0FDQUROZ0lNSUFNZ0FEWUNDQXNnQVVFSWFpRUFJQUVnQlVFRGNqWUNCQ0FCSUFWcUlnY2dBa0VEZENJQ0lBVnJJZ05CQVhJMkFnUWdBU0FDYWlBRE5nSUFJQWdFUUNBSVFRTjJJZ1JCQTNSQitOa1VhaUVCUWVUWkZDZ0NBQ0VDQW44Z0JrRUJJQVIwSWdSeFJRUkFRZERaRkNBRUlBWnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEJDQUJJQUkyQWdnZ0JDQUNOZ0lNSUFJZ0FUWUNEQ0FDSUFRMkFnZ0xRZVRaRkNBSE5nSUFRZGpaRkNBRE5nSUFEQXdMUWRUWkZDZ0NBQ0lLUlEwQklBcEJBQ0FLYTNGQmYyb2lBQ0FBUVF4MlFSQnhJZ0IySWdGQkJYWkJDSEVpQWlBQWNpQUJJQUoySWdCQkFuWkJCSEVpQVhJZ0FDQUJkaUlBUVFGMlFRSnhJZ0Z5SUFBZ0FYWWlBRUVCZGtFQmNTSUJjaUFBSUFGMmFrRUNkRUdBM0JScUtBSUFJZ0VvQWdSQmVIRWdCV3NoQXlBQklRSURRQUpBSUFJb0FoQWlBRVVFUUNBQ0tBSVVJZ0JGRFFFTElBQW9BZ1JCZUhFZ0JXc2lBaUFESUFJZ0Ewa2lBaHNoQXlBQUlBRWdBaHNoQVNBQUlRSU1BUXNMSUFFb0FoZ2hDU0FCSUFFb0Fnd2lCRWNFUUVIZzJSUW9BZ0FnQVNnQ0NDSUFUUVJBSUFBb0Fnd2FDeUFBSUFRMkFnd2dCQ0FBTmdJSURBc0xJQUZCRkdvaUFpZ0NBQ0lBUlFSQUlBRW9BaEFpQUVVTkF5QUJRUkJxSVFJTEEwQWdBaUVISUFBaUJFRVVhaUlDS0FJQUlnQU5BQ0FFUVJCcUlRSWdCQ2dDRUNJQURRQUxJQWRCQURZQ0FBd0tDMEYvSVFVZ0FFRy9mMHNOQUNBQVFRdHFJZ0JCZUhFaEJVSFUyUlFvQWdBaUIwVU5BRUVBSUFWcklRSUNRQUpBQWtBQ2YwRUFJQUJCQ0hZaUFFVU5BQnBCSHlBRlFmLy8vd2RMRFFBYUlBQWdBRUdBL2o5cVFSQjJRUWh4SWdCMElnRWdBVUdBNEI5cVFSQjJRUVJ4SWdGMElnTWdBMEdBZ0E5cVFSQjJRUUp4SWdOMFFROTJJQUFnQVhJZ0EzSnJJZ0JCQVhRZ0JTQUFRUlZxZGtFQmNYSkJIR29MSWdoQkFuUkJnTndVYWlnQ0FDSURSUVJBUVFBaEFBd0JDeUFGUVFCQkdTQUlRUUYyYXlBSVFSOUdHM1FoQVVFQUlRQURRQUpBSUFNb0FnUkJlSEVnQldzaUJpQUNUdzBBSUFNaEJDQUdJZ0lOQUVFQUlRSWdBeUVBREFNTElBQWdBeWdDRkNJR0lBWWdBeUFCUVIxMlFRUnhhaWdDRUNJRFJoc2dBQ0FHR3lFQUlBRWdBMEVBUjNRaEFTQUREUUFMQ3lBQUlBUnlSUVJBUVFJZ0NIUWlBRUVBSUFCcmNpQUhjU0lBUlEwRElBQkJBQ0FBYTNGQmYyb2lBQ0FBUVF4MlFSQnhJZ0IySWdGQkJYWkJDSEVpQXlBQWNpQUJJQU4ySWdCQkFuWkJCSEVpQVhJZ0FDQUJkaUlBUVFGMlFRSnhJZ0Z5SUFBZ0FYWWlBRUVCZGtFQmNTSUJjaUFBSUFGMmFrRUNkRUdBM0JScUtBSUFJUUFMSUFCRkRRRUxBMEFnQUNnQ0JFRjRjU0FGYXlJRElBSkpJUUVnQXlBQ0lBRWJJUUlnQUNBRUlBRWJJUVFnQUNnQ0VDSUJCSDhnQVFVZ0FDZ0NGQXNpQUEwQUN3c2dCRVVOQUNBQ1FkalpGQ2dDQUNBRmEwOE5BQ0FFS0FJWUlRZ2dCQ0FFS0FJTUlnRkhCRUJCNE5rVUtBSUFJQVFvQWdnaUFFMEVRQ0FBS0FJTUdnc2dBQ0FCTmdJTUlBRWdBRFlDQ0F3SkN5QUVRUlJxSWdNb0FnQWlBRVVFUUNBRUtBSVFJZ0JGRFFNZ0JFRVFhaUVEQ3dOQUlBTWhCaUFBSWdGQkZHb2lBeWdDQUNJQURRQWdBVUVRYWlFRElBRW9BaEFpQUEwQUN5QUdRUUEyQWdBTUNBdEIyTmtVS0FJQUlnRWdCVThFUUVIazJSUW9BZ0FoQUFKQUlBRWdCV3NpQWtFUVR3UkFRZGpaRkNBQ05nSUFRZVRaRkNBQUlBVnFJZ00yQWdBZ0F5QUNRUUZ5TmdJRUlBQWdBV29nQWpZQ0FDQUFJQVZCQTNJMkFnUU1BUXRCNU5rVVFRQTJBZ0JCMk5rVVFRQTJBZ0FnQUNBQlFRTnlOZ0lFSUFBZ0FXb2lBU0FCS0FJRVFRRnlOZ0lFQ3lBQVFRaHFJUUFNQ2d0QjNOa1VLQUlBSWdFZ0JVc0VRRUhjMlJRZ0FTQUZheUlCTmdJQVFlalpGRUhvMlJRb0FnQWlBQ0FGYWlJQ05nSUFJQUlnQVVFQmNqWUNCQ0FBSUFWQkEzSTJBZ1FnQUVFSWFpRUFEQW9MUVFBaEFDQUZRUzlxSWdRQ2YwR28zUlFvQWdBRVFFR3czUlFvQWdBTUFRdEJ0TjBVUW44M0FnQkJyTjBVUW9DZ2dJQ0FnQVEzQWdCQnFOMFVJQXRCREdwQmNIRkIyS3JWcWdWek5nSUFRYnpkRkVFQU5nSUFRWXpkRkVFQU5nSUFRWUFnQ3lJQ2FpSUdRUUFnQW1zaUIzRWlBaUFGVFEwSlFZamRGQ2dDQUNJREJFQkJnTjBVS0FJQUlnZ2dBbW9pQ1NBSVRTQUpJQU5MY2cwS0MwR00zUlF0QUFCQkJIRU5CQUpBQWtCQjZOa1VLQUlBSWdNRVFFR1EzUlFoQUFOQUlBQW9BZ0FpQ0NBRFRRUkFJQWdnQUNnQ0JHb2dBMHNOQXdzZ0FDZ0NDQ0lBRFFBTEMwRUFFS0VFSWdGQmYwWU5CU0FDSVFaQnJOMFVLQUlBSWdCQmYyb2lBeUFCY1FSQUlBSWdBV3NnQVNBRGFrRUFJQUJyY1dvaEJnc2dCaUFGVFNBR1FmNy8vLzhIUzNJTkJVR0kzUlFvQWdBaUFBUkFRWURkRkNnQ0FDSURJQVpxSWdjZ0EwMGdCeUFBUzNJTkJnc2dCaENoQkNJQUlBRkhEUUVNQndzZ0JpQUJheUFIY1NJR1FmNy8vLzhIU3cwRUlBWVFvUVFpQVNBQUtBSUFJQUFvQWdScVJnMERJQUVoQUFzZ0JVRXdhaUFHVFNBR1FmNy8vLzhIUzNJZ0FDSUJRWDlHY2tVRVFFR3czUlFvQWdBaUFDQUVJQVpyYWtFQUlBQnJjU0lBUWY3Ly8vOEhTdzBHSUFBUW9RUkJmMGNFUUNBQUlBWnFJUVlNQnd0QkFDQUdheENoQkJvTUJBc2dBVUYvUncwRkRBTUxRUUFoQkF3SEMwRUFJUUVNQlFzZ0FVRi9SdzBDQzBHTTNSUkJqTjBVS0FJQVFRUnlOZ0lBQ3lBQ1FmNy8vLzhIU3cwQklBSVFvUVFpQVVFQUVLRUVJZ0JQSUFGQmYwWnlJQUJCZjBaeURRRWdBQ0FCYXlJR0lBVkJLR3BORFFFTFFZRGRGRUdBM1JRb0FnQWdCbW9pQURZQ0FDQUFRWVRkRkNnQ0FFc0VRRUdFM1JRZ0FEWUNBQXNDUUFKQUFrQkI2TmtVS0FJQUlnTUVRRUdRM1JRaEFBTkFJQUVnQUNnQ0FDSUNJQUFvQWdRaUJHcEdEUUlnQUNnQ0NDSUFEUUFMREFJTFFlRFpGQ2dDQUNJQVFRQWdBU0FBVHh0RkJFQkI0TmtVSUFFMkFnQUxRUUFoQUVHVTNSUWdCallDQUVHUTNSUWdBVFlDQUVIdzJSUkJmellDQUVIMDJSUkJxTjBVS0FJQU5nSUFRWnpkRkVFQU5nSUFBMEFnQUVFRGRDSUNRWURhRkdvZ0FrSDQyUlJxSWdNMkFnQWdBa0dFMmhScUlBTTJBZ0FnQUVFQmFpSUFRU0JIRFFBTFFkelpGQ0FHUVZocUlnQkJlQ0FCYTBFSGNVRUFJQUZCQ0dwQkIzRWJJZ0pySWdNMkFnQkI2TmtVSUFFZ0Ftb2lBallDQUNBQ0lBTkJBWEkyQWdRZ0FDQUJha0VvTmdJRVFlelpGRUc0M1JRb0FnQTJBZ0FNQWdzZ0FDMEFERUVJY1NBQklBTk5jaUFDSUFOTGNnMEFJQUFnQkNBR2FqWUNCRUhvMlJRZ0EwRjRJQU5yUVFkeFFRQWdBMEVJYWtFSGNSc2lBR29pQVRZQ0FFSGMyUlJCM05rVUtBSUFJQVpxSWdJZ0FHc2lBRFlDQUNBQklBQkJBWEkyQWdRZ0FpQURha0VvTmdJRVFlelpGRUc0M1JRb0FnQTJBZ0FNQVFzZ0FVSGcyUlFvQWdBaUJFa0VRRUhnMlJRZ0FUWUNBQ0FCSVFRTElBRWdCbW9oQWtHUTNSUWhBQUpBQWtBQ1FBSkFBa0FDUUFOQUlBSWdBQ2dDQUVjRVFDQUFLQUlJSWdBTkFRd0NDd3NnQUMwQURFRUljVVVOQVF0QmtOMFVJUUFEUUNBQUtBSUFJZ0lnQTAwRVFDQUNJQUFvQWdScUlnUWdBMHNOQXdzZ0FDZ0NDQ0VBREFBQUN3QUxJQUFnQVRZQ0FDQUFJQUFvQWdRZ0JtbzJBZ1FnQVVGNElBRnJRUWR4UVFBZ0FVRUlha0VIY1J0cUlna2dCVUVEY2pZQ0JDQUNRWGdnQW10QkIzRkJBQ0FDUVFocVFRZHhHMm9pQVNBSmF5QUZheUVBSUFVZ0NXb2hCeUFCSUFOR0JFQkI2TmtVSUFjMkFnQkIzTmtVUWR6WkZDZ0NBQ0FBYWlJQU5nSUFJQWNnQUVFQmNqWUNCQXdEQ3lBQlFlVFpGQ2dDQUVZRVFFSGsyUlFnQnpZQ0FFSFkyUlJCMk5rVUtBSUFJQUJxSWdBMkFnQWdCeUFBUVFGeU5nSUVJQUFnQjJvZ0FEWUNBQXdEQ3lBQktBSUVJZ0pCQTNGQkFVWUVRQ0FDUVhoeElRb0NRQ0FDUWY4QlRRUkFJQUVvQWdnaUF5QUNRUU4ySWdSQkEzUkIrTmtVYWtjYUlBTWdBU2dDRENJQ1JnUkFRZERaRkVIUTJSUW9BZ0JCZmlBRWQzRTJBZ0FNQWdzZ0F5QUNOZ0lNSUFJZ0F6WUNDQXdCQ3lBQktBSVlJUWdDUUNBQklBRW9BZ3dpQmtjRVFDQUVJQUVvQWdnaUFrMEVRQ0FDS0FJTUdnc2dBaUFHTmdJTUlBWWdBallDQ0F3QkN3SkFJQUZCRkdvaUF5Z0NBQ0lGRFFBZ0FVRVFhaUlES0FJQUlnVU5BRUVBSVFZTUFRc0RRQ0FESVFJZ0JTSUdRUlJxSWdNb0FnQWlCUTBBSUFaQkVHb2hBeUFHS0FJUUlnVU5BQXNnQWtFQU5nSUFDeUFJUlEwQUFrQWdBU0FCS0FJY0lnSkJBblJCZ053VWFpSURLQUlBUmdSQUlBTWdCallDQUNBR0RRRkIxTmtVUWRUWkZDZ0NBRUYrSUFKM2NUWUNBQXdDQ3lBSVFSQkJGQ0FJS0FJUUlBRkdHMm9nQmpZQ0FDQUdSUTBCQ3lBR0lBZzJBaGdnQVNnQ0VDSUNCRUFnQmlBQ05nSVFJQUlnQmpZQ0dBc2dBU2dDRkNJQ1JRMEFJQVlnQWpZQ0ZDQUNJQVkyQWhnTElBRWdDbW9oQVNBQUlBcHFJUUFMSUFFZ0FTZ0NCRUYrY1RZQ0JDQUhJQUJCQVhJMkFnUWdBQ0FIYWlBQU5nSUFJQUJCL3dGTkJFQWdBRUVEZGlJQlFRTjBRZmpaRkdvaEFBSi9RZERaRkNnQ0FDSUNRUUVnQVhRaUFYRkZCRUJCME5rVUlBRWdBbkkyQWdBZ0FBd0JDeUFBS0FJSUN5RUJJQUFnQnpZQ0NDQUJJQWMyQWd3Z0J5QUFOZ0lNSUFjZ0FUWUNDQXdEQ3lBSEFuOUJBQ0FBUVFoMklnRkZEUUFhUVI4Z0FFSC8vLzhIU3cwQUdpQUJJQUZCZ1A0L2FrRVFka0VJY1NJQmRDSUNJQUpCZ09BZmFrRVFka0VFY1NJQ2RDSURJQU5CZ0lBUGFrRVFka0VDY1NJRGRFRVBkaUFCSUFKeUlBTnlheUlCUVFGMElBQWdBVUVWYW5aQkFYRnlRUnhxQ3lJQk5nSWNJQWRDQURjQ0VDQUJRUUowUVlEY0ZHb2hBZ0pBUWRUWkZDZ0NBQ0lEUVFFZ0FYUWlCSEZGQkVCQjFOa1VJQU1nQkhJMkFnQWdBaUFITmdJQURBRUxJQUJCQUVFWklBRkJBWFpySUFGQkgwWWJkQ0VESUFJb0FnQWhBUU5BSUFFaUFpZ0NCRUY0Y1NBQVJnMERJQU5CSFhZaEFTQURRUUYwSVFNZ0FpQUJRUVJ4YWlJRUtBSVFJZ0VOQUFzZ0JDQUhOZ0lRQ3lBSElBSTJBaGdnQnlBSE5nSU1JQWNnQnpZQ0NBd0NDMEhjMlJRZ0JrRllhaUlBUVhnZ0FXdEJCM0ZCQUNBQlFRaHFRUWR4R3lJQ2F5SUhOZ0lBUWVqWkZDQUJJQUpxSWdJMkFnQWdBaUFIUVFGeU5nSUVJQUFnQVdwQktEWUNCRUhzMlJSQnVOMFVLQUlBTmdJQUlBTWdCRUVuSUFSclFRZHhRUUFnQkVGWmFrRUhjUnRxUVZGcUlnQWdBQ0FEUVJCcVNSc2lBa0ViTmdJRUlBSkJtTjBVS1FJQU53SVFJQUpCa04wVUtRSUFOd0lJUVpqZEZDQUNRUWhxTmdJQVFaVGRGQ0FHTmdJQVFaRGRGQ0FCTmdJQVFaemRGRUVBTmdJQUlBSkJHR29oQUFOQUlBQkJCellDQkNBQVFRaHFJUUVnQUVFRWFpRUFJQVFnQVVzTkFBc2dBaUFEUmcwRElBSWdBaWdDQkVGK2NUWUNCQ0FESUFJZ0Eyc2lCRUVCY2pZQ0JDQUNJQVEyQWdBZ0JFSC9BVTBFUUNBRVFRTjJJZ0ZCQTNSQitOa1VhaUVBQW45QjBOa1VLQUlBSWdKQkFTQUJkQ0lCY1VVRVFFSFEyUlFnQVNBQ2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFFZ0FDQUROZ0lJSUFFZ0F6WUNEQ0FESUFBMkFnd2dBeUFCTmdJSURBUUxJQU5DQURjQ0VDQURBbjlCQUNBRVFRaDJJZ0JGRFFBYVFSOGdCRUgvLy84SFN3MEFHaUFBSUFCQmdQNC9ha0VRZGtFSWNTSUFkQ0lCSUFGQmdPQWZha0VRZGtFRWNTSUJkQ0lDSUFKQmdJQVBha0VRZGtFQ2NTSUNkRUVQZGlBQUlBRnlJQUp5YXlJQVFRRjBJQVFnQUVFVmFuWkJBWEZ5UVJ4cUN5SUFOZ0ljSUFCQkFuUkJnTndVYWlFQkFrQkIxTmtVS0FJQUlnSkJBU0FBZENJR2NVVUVRRUhVMlJRZ0FpQUdjallDQUNBQklBTTJBZ0FnQXlBQk5nSVlEQUVMSUFSQkFFRVpJQUJCQVhacklBQkJIMFliZENFQUlBRW9BZ0FoQVFOQUlBRWlBaWdDQkVGNGNTQUVSZzBFSUFCQkhYWWhBU0FBUVFGMElRQWdBaUFCUVFSeGFpSUdLQUlRSWdFTkFBc2dCaUFETmdJUUlBTWdBallDR0FzZ0F5QUROZ0lNSUFNZ0F6WUNDQXdEQ3lBQ0tBSUlJZ0FnQnpZQ0RDQUNJQWMyQWdnZ0IwRUFOZ0lZSUFjZ0FqWUNEQ0FISUFBMkFnZ0xJQWxCQ0dvaEFBd0ZDeUFDS0FJSUlnQWdBellDRENBQ0lBTTJBZ2dnQTBFQU5nSVlJQU1nQWpZQ0RDQURJQUEyQWdnTFFkelpGQ2dDQUNJQUlBVk5EUUJCM05rVUlBQWdCV3NpQVRZQ0FFSG8yUlJCNk5rVUtBSUFJZ0FnQldvaUFqWUNBQ0FDSUFGQkFYSTJBZ1FnQUNBRlFRTnlOZ0lFSUFCQkNHb2hBQXdEQzBIWXdCUkJNRFlDQUVFQUlRQU1BZ3NDUUNBSVJRMEFBa0FnQkNnQ0hDSUFRUUowUVlEY0ZHb2lBeWdDQUNBRVJnUkFJQU1nQVRZQ0FDQUJEUUZCMU5rVUlBZEJmaUFBZDNFaUJ6WUNBQXdDQ3lBSVFSQkJGQ0FJS0FJUUlBUkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBZzJBaGdnQkNnQ0VDSUFCRUFnQVNBQU5nSVFJQUFnQVRZQ0dBc2dCQ2dDRkNJQVJRMEFJQUVnQURZQ0ZDQUFJQUUyQWhnTEFrQWdBa0VQVFFSQUlBUWdBaUFGYWlJQVFRTnlOZ0lFSUFBZ0JHb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBUWdCVUVEY2pZQ0JDQUVJQVZxSWdNZ0FrRUJjallDQkNBQ0lBTnFJQUkyQWdBZ0FrSC9BVTBFUUNBQ1FRTjJJZ0ZCQTNSQitOa1VhaUVBQW45QjBOa1VLQUlBSWdKQkFTQUJkQ0lCY1VVRVFFSFEyUlFnQVNBQ2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFFZ0FDQUROZ0lJSUFFZ0F6WUNEQ0FESUFBMkFnd2dBeUFCTmdJSURBRUxJQU1DZjBFQUlBSkJDSFlpQUVVTkFCcEJIeUFDUWYvLy93ZExEUUFhSUFBZ0FFR0EvajlxUVJCMlFRaHhJZ0IwSWdFZ0FVR0E0QjlxUVJCMlFRUnhJZ0YwSWdVZ0JVR0FnQTlxUVJCMlFRSnhJZ1YwUVE5MklBQWdBWElnQlhKcklnQkJBWFFnQWlBQVFSVnFka0VCY1hKQkhHb0xJZ0EyQWh3Z0EwSUFOd0lRSUFCQkFuUkJnTndVYWlFQkFrQUNRQ0FIUVFFZ0FIUWlCWEZGQkVCQjFOa1VJQVVnQjNJMkFnQWdBU0FETmdJQURBRUxJQUpCQUVFWklBQkJBWFpySUFCQkgwWWJkQ0VBSUFFb0FnQWhCUU5BSUFVaUFTZ0NCRUY0Y1NBQ1JnMENJQUJCSFhZaEJTQUFRUUYwSVFBZ0FTQUZRUVJ4YWlJR0tBSVFJZ1VOQUFzZ0JpQUROZ0lRQ3lBRElBRTJBaGdnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFCS0FJSUlnQWdBellDRENBQklBTTJBZ2dnQTBFQU5nSVlJQU1nQVRZQ0RDQURJQUEyQWdnTElBUkJDR29oQUF3QkN3SkFJQWxGRFFBQ1FDQUJLQUljSWdCQkFuUkJnTndVYWlJQ0tBSUFJQUZHQkVBZ0FpQUVOZ0lBSUFRTkFVSFUyUlFnQ2tGK0lBQjNjVFlDQUF3Q0N5QUpRUkJCRkNBSktBSVFJQUZHRzJvZ0JEWUNBQ0FFUlEwQkN5QUVJQWsyQWhnZ0FTZ0NFQ0lBQkVBZ0JDQUFOZ0lRSUFBZ0JEWUNHQXNnQVNnQ0ZDSUFSUTBBSUFRZ0FEWUNGQ0FBSUFRMkFoZ0xBa0FnQTBFUFRRUkFJQUVnQXlBRmFpSUFRUU55TmdJRUlBQWdBV29pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQUVnQlVFRGNqWUNCQ0FCSUFWcUlnUWdBMEVCY2pZQ0JDQURJQVJxSUFNMkFnQWdDQVJBSUFoQkEzWWlCVUVEZEVINDJSUnFJUUJCNU5rVUtBSUFJUUlDZjBFQklBVjBJZ1VnQm5GRkJFQkIwTmtVSUFVZ0JuSTJBZ0FnQUF3QkN5QUFLQUlJQ3lFRklBQWdBallDQ0NBRklBSTJBZ3dnQWlBQU5nSU1JQUlnQlRZQ0NBdEI1TmtVSUFRMkFnQkIyTmtVSUFNMkFnQUxJQUZCQ0dvaEFBc2dDMEVRYWlRQUlBQUxmd0VDZnlNQVFSQnJJZ0lrQUNBQUVMa0dJQUpCQ0dvZ0FCQTZJUUJCME5jVUVCWWdBVTBFUUNBQlFRRnFFSllTQzBIUTF4UWdBUkFSS0FJQUJFQkIwTmNVSUFFUUVTZ0NBQkROQlFzZ0FCQmZJUU5CME5jVUlBRVFFU0FETmdJQUlBQW9BZ0FoQVNBQVFRQTJBZ0FnQVFSQUlBRVF6UVVMSUFKQkVHb2tBQXNKQUNBQVFRQVF4Z0VMS1FFQmZ5TUFRUkJySWdNa0FDQURJQUUyQWd3Z0FDQURRUXhxSUFJUXpnb2dBMEVRYWlRQUlBQUxFQUFnQUNnQ0FCRFFDMEVZZEVFWWRRdVBBUUVEZnlBQUlRRUNRQUpBSUFCQkEzRkZEUUFnQUMwQUFFVUVRQXdDQ3dOQUlBRkJBV29pQVVFRGNVVU5BU0FCTFFBQURRQUxEQUVMQTBBZ0FTSUNRUVJxSVFFZ0FpZ0NBQ0lEUVg5eklBTkIvLzM3ZDJweFFZQ0Jnb1I0Y1VVTkFBc2dBMEgvQVhGRkJFQWdBaUVCREFFTEEwQWdBaTBBQVNFRElBSkJBV29pQVNFQ0lBTU5BQXNMSUFFZ0FHc0x1UUlCQlg4akFFRkFhaUlDSkFBZ0FFRTRhaUlERUlRTUlRVWdBa0VJYWlBREVMNENJQUlnQWlnQ09EWUNQQ0FDUVFocUVMZ0JJQUpCQ0dvZ0FSRGtBU0FDSUFKQlBHb2dBa0VJYWhENkF5QUNRUWhxSUFNUXZnSWdBaWdDTkNFRUlBSkJDR29RdUFFZ0FSQ0dCQ0VHSUFNZ0FSRCtCQ0FBSUFFZ0FTZ0NBQ2dDTEJFQUFCRDdBeUFGSUFBZ0FrRThhaEM4Q0VGM2NTQUFJQUpCUEdvUS93UWdCQ0FHY2hDRkRDRUVBa0FnQVNBQktBSUFLQUljRVFBQVFReEhEUUFnQXlBRkVQMEVCRUFnQlNBREVQb0NJZ0JHRFFFZ0EwR3JBU0FBSUFRZ0EwRUFRUUFRZEJDcUFTRUVEQUVMSUFNZ0JSREpBMFVOQUNBRElBVVF5QU1oQVNBRklBTWdBeEQ2QWlBQkVMRUJJZ1pHRFFBZ0EwR3JBU0FHSUFRZ0FDQURRUUJCQUJCMElBRVFvUUlRcWdFaEJBc2dBa0ZBYXlRQUlBUUxGZ0FnQUNBQktBSUFOZ0lBSUFBZ0FpMEFBRG9BQkFzcEFDQUFLQUpNRUJoRkJFQWdBQ0FCUWVHVUNpQUNRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd3NKQUNBQUlBRVF2aEFMQ2dBZ0FDZ0NBQkRMQ3dzSkFDQUFJQUVRZ3hVTEVBQWdBQ2dDQkNBQUtBSUFhMEVNYlFzUUFDQUFLQUlFSUFBb0FnQnJRUVIxQ3c4QUlBQWdBQ2dDQUJDZUdqWUNBQXVhQVFFQ2Z5TUFRVEJySWdVa0FBSkFJQUF0QUpBQkJFQWdCVUVnYWtFQ0VKTUlJZ1pCQUJBUklBTTJBZ0FnQmtFQkVCRWdCRFlDQUNBQUlBRWdBaUFHSUFWQkVHb1FNQ0lCRUtzRUlRQWdBUkEySUFZUU5nd0JDMEVzRUNZZ0FCQlZJQUlnQVJCUklnRWdBeEE1SUFFZ0JCQTVJQUFvQW9RQklBVkJDR29nQVJBNklnQVFmQ0FBRUQ0Z0FTZ0NCQ0VBQ3lBRlFUQnFKQUFnQUFzaEFDQUFRWDlxSWdCQkNFMEVRQ0FBUVFKMFFkaklDMm9vQWdBUEMwSFl1d3NMZUFFRWZ5QUFFTUVDSVFVRFFBSkFJQWNnQUNBRklnUVFFU2dDQUMwQUdHb2hCeUFBSUFRUUVTZ0NBQ0FCRUl3S0lRWWdCRUVCU0EwQUlBUkJmMm9oQlNBR1JRMEJDd3NnQWdSQUlBSWdCQkRnRGpvQUFBc2dBd1JBSUFNZ0FCREJBaERjRGdSL1FRRUZJQUFRd1FJZ0JFWUxPZ0FBQ3lBR0N4WUFJQUJCQURZQ0FDQUFJQUFvQWdCQkFYSTJBZ0FMRFFBZ0FDMEFBRUVBUjBFQmN3dWVBUUVCZnlNQVFUQnJJZ1FrQUNBRUlBTTJBaWdnQkNBQk5nSXNBa0FnQUMwQWtBRUVRQ0FBUWRFQUlBSWdCRUVZYWtFQklBUkJMR29ReFFNaUFTQUVRUWhxUVFFZ0JFRW9haERGQXlJQ0VLc0VJUUFnQWhBMklBRVFOZ3dCQzBFc0VDWWdBQkJWSUFKQjBRQVFVU0lDSUFFUU9TQUNJQU1RVENBQUtBS0VBU0FFSUFJUU9pSUFFSHdnQUJBK0lBSW9BZ1FoQUFzZ0JFRXdhaVFBSUFBTEN3QWdBQ0FCUVFBUW5nTUwvQUVCQkg4akFFRVFheUlESkFBZ0EwRVhOZ0lJQWtBZ0FFSGNBbW9pQlNBRFFRaHFFRDhRRmtFQlRnUkFBMEFnQTBFWE5nSUlJQU1nQlNBRFFRaHFFRDhnQkJBUktBSUFJZ1kyQWd3Z0JrRUFFQzhnQVVZRVFDQURLQUlNUVFFUUx5QUNSZzBEQ3lBRFFSYzJBZ2dnQkVFQmFpSUVJQVVnQTBFSWFoQS9FQlpJRFFBTEMwRXNFQ1lpQmlBQUVGVkJBRUVYRUZFaEJDQURJQVkyQWd3Z0JDQUJFRGtnQkNBQ0VFd2dBMEVYTmdJSUlBVWdBMEVJYWhBL0lBTkJER29RUnlBQVFaQUNhaUFEUVFocUlBTW9BZ3dRT2lJQkVIMGdBUkErSUFCQjZBQnFJQU1vQWd3UWpBRUxJQU1vQWd3b0FnUWhBQ0FEUVJCcUpBQWdBQXNUQUNBQUtBSUVJQUpKQkVBZ0FDQUJFRUlMQzZ3QkFRTi9Jd0JCRUdzaUJpUUFJQUFnQmlBQkVDSWlBVUVBUVFBUXJBRWhBQ0FCRUJrYUFrQWdBRVVOQUNBQUlBQW9BZ0FvQWlRUkFBQWlBQ0FBS0FJQUtBSWtFUUFBSWdFZ0FTZ0NBQ2dDTUJFQUFDZ0NRQ0lCRURkQkFVZ05BQU5BSUFFZ0JSQTRLQUlBSWdjZ0J5Z0NBQ2dDR0JFQUFDQUNFSWNCUlFSQUlBQWdCU0FESUFRZ0FDZ0NBQ2dDZUJFRUFBd0NDeUFGUVFGcUlnVWdBUkEzU0EwQUN3c2dCa0VRYWlRQUN6MEJBWDhqQUVFUWF5SUNKQUFnQWlBQVFkQUdhaUlBSUFFUWd3UTJBZ2dnQWlBQUVJRUJOZ0lBSUFKQkNHb2dBaEFlSVFBZ0FrRVFhaVFBSUFBTERRQWdBQ2dDQUJET0N4b2dBQXR0QVFKL0l3QkJFR3NpQnlRQVFTd1FKa0VRRUxjQklnWWdBU2dDREJBNUlBWWdBaEJNSUFOQkFFNEVRQ0FHSUFNUVRBc2dCRUVBVGdSQUlBWWdCQkJNQ3lBRlFRQk9CRUFnQmlBRkVFd0xJQUJCN0FGcUlBZEJDR29nQmhBNklnQVFmU0FBRUQ0Z0IwRVFhaVFBQ3pJQUlBQWdBVFlDRENBQVFnQTNBZ1FnQUVHVTJ4RTJBZ0FnQUVFUWFoQXdHaUFBUVJ4cUVOWU1JQUJCQURZQ0tDQUFDeEFBSUFCQkZHb1FOaUFBUVFScUVEWUxDd0FnQUNBQkVNWUtJQUFMRVFBZ0FDQUFRWDlxY1VVZ0FFRUNTM0VMR1FBZ0FDQUJFSzBESUFBZ0FoQzZBeUFBUWJyS0R4QzZBd3NKQUNBQUlBRTJBZ1FMRFFBZ0FDZ0NBQkRLQ3hvZ0FBc0pBQ0FBSUFFUTBRc0xId0FnQUNBQklBRVF1UlVnQVNBQktBSUFLQUlzRVFBQVFRQkJBQkRoQmdzTUFDQUFJQUVRb3dKQkFYTUxDZ0FnQUN3QUMwRUFTQXNPQUJEVkEwRVFFSlFDSUFBUUlnc1NBQ0FBSUFJNkFBUWdBQ0FCTmdJQUlBQUxEUUFnQUNnQ0FDQUJRUVIwYWd2a0FRRUVmeU1BUVJCcklnRWtBQUpBQWtBZ0FDQUFLQUlBS0FJY0VRQUFRUTlIQkVBZ0FDQUFLQUlBS0FJY0VRQUFRUkJIRFFFTElBRWdBQ2dDUUJCQU5nSUlJQUVnQUNnQ1FCQXlOZ0lBSUFGQkNHb2dBUkFlUlEwQkEwQWdBU2dDQ0NnQ0FCREZBU0VESUFGQkNHb2lCQ2dDQUJvZ0JCQzBBaUFCSUFBb0FrQVFNallDQUNBQ0lBTnFJUUlnQVVFSWFpQUJFQjROQUFzTUFRc2dBQ2dDQkNJQ1FSQjBRUngxSWdNRVFDQURJQUpCREhSQkhIVnNJUUlNQVFzZ0FrRVVkRUVjZFNFQ0N5QUFLQUk4SWdBRVFDQUFFTlVPSUFKc0lRSUxJQUZCRUdva0FDQUNDeU1CQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FpQUFFQ1VvQWdBUkJRQUxDd2tBSUFBZ0FSRE1Dd3NOQUNBQUlBQWdBUkJpRU1nREN3c0FJQUFnQVVFQUVKc0lDL1FVQWdSL0FYNGpBRUhRQUdzaUFpUUFJQUlnQUJEVkFTSUVOZ0pJSUFJZ0JEWUNRQ0FDSUFRMkFqZ0NRQ0FCUVFocUlnTVE2d0pGRFFBZ0FpQURRVFFRUFNJQUlBQXBBeGhDZ0lDQWdQQUJoRGNER0NBQUVPc0NSUTBBSUFCQnlBQnFRWWlWRHhCSkFrQWdBeENPQkVVTkFDQUFRY2dBYWtHUWxROFFTU0FBUVVCcklBRW9BaHhCL3g5eEVPb0NJQU1Rc2dNRVFDQUFRY2dBYWtHYmxROFFTU0FBUVVCcklBRW9BaHhCREhaQkIzRVE2Z0lMSUFNUXpnUkZEUUFnQUVISUFHcEJwNVVQRUVrZ0FFRkFheUFCTFFBaUVPb0NDeUFERUtzRkJFQWdBRUhJQUdwQnI1VVBFRWtnQUVGQWF5QUJLQUljUVE5MlFmOEFjUkRxQWdzZ0F4RHBBZ1JBSUFCQnlBQnFRYldWRHhCSklBQkJRR3NnQVM4QklCRHFBZ3NnQXhDeEF3UkFJQUJCeUFCcVFiK1ZEeEJKSUFCQlFHc2dBUzBBSXhEcUFnc2dBeEROQkFSQUlBQkJ5QUJxUWNpVkR4QkpJQUJCeUFCcUlBRXBBZ3hDTklpblFRZHhFS3dKRUVrTElBTVFoZ01FUUNBQVFjZ0Fha0hJbFE4UVNTQUFRY2dBYWlBQktRSU1RamVJcDBFUGNSQ3FCUkJKQ3lBREVKWUNCRUFnQUVISUFHcEJ5cFVQRUVrZ0FFRTRhaUFCS0FJVUVNd0VDeUFERU5rREJFQWdBRUhJQUdwQjA1VVBFRWtnQUVFNGFpQUJLQUlZRU13RUN5QURFSjhIQkVBZ0FFSElBR3BCeUpVUEVFa2dBRUhJQUdvZ0FTMEFMQkRMQkJCSkN3SkFJQU1RbFFKRkRRQWdBeENGQTBVTkFDQUFRY2dBYWtIYmxROFFTU0FBUVVCcklBRW9BaVJCRDNFUTZnSUxJQU1RaFFNRVFDQUFRY2dBYWtIb2xROFFTU0FBUVVCcklBRXBBaUJDTW9pblFmOC9jUkRxQWdzZ0F4Q0NCZ1JBSUFCQnlBQnFRZldWRHhCSklBQkJRR3NnQVNrQ0lFSWtpS2RCLy84QWNSRHFBZ3NnQXhES0JBUkFJQUJCeUFCcVFZS1dEeEJKSUFCQlFHc2dBUzBBS0JEcUFnc2dBeENwQlFSQUlBQkJ5QUJxUVp1V0R4QkpJQUJCUUdzZ0FTZ0NLRUVJZGtIL0QzRVE2Z0lMSUFFdEFDMEVRQ0FBUWNnQWFrR3BsZzhRU1FzZ0FTMEFMZ1JBSUFCQnlBQnFRYmlXRHhCSkN5QURFS3NKQkVBZ0FFSElBR3BCeXBZUEVFa2dBRUZBYTBFQklBRW9BaWhCRTNaQlAzRjBFT29DQ3lBQkxRQXZCRUFnQUVISUFHcEI0NVlQRUVrTElBRXRBREFFUUNBQVFjZ0Fha0h3bGc4UVNRc2dBU2dDTkVHQWNFY0VRQ0FBUWNnQWFrR0lsdzhRU1NBQVFUaHFJQUVvQWpRUXpBUUxJQUV0QURnRVFDQUFRY2dBYWtHd2x3OFFTUXNnQUVISUFHcEIvTlVPRUVrTEFuOENmd0ovQW44Q2Z3Si9BbjhDZndKL0FuOENmd0ovQW44Q2Z3Si9BbjhDZndKL0FuOENmd0ovQW44Q2Z5QUJLUUlNSWdaQ2dJQ0F3QUNEVUVVRVFDQUNRY2dBYWtIQWx3OFFTU0FCS1FJTUlRWUxJQVpDZ0lDQWdDQ0RVRVVMQkVBZ0FrSElBR3BCeTVjUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lBQmcxQkZDd1JBSUFKQnlBQnFRZHFYRHhCSklBRXBBZ3doQmdzZ0JrS0FnSUNBQW9OUVJRc0VRQ0FDUWNnQWFrSGtsdzhRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnQVNEVUVVTEJFQWdBa0hJQUdwQjdKY1BFRWtnQVNrQ0RDRUdDeUFHUW9DQWdJREFBSU5RUlFzRVFDQUNRY2dBYWtIeWx3OFFTU0FCS1FJTUlRWUxJQVpDZ0lDQWdJQUJnMUJGQ3dSQUlBSkJ5QUJxUVlHWUR4QkpJQUVwQWd3aEJnc2dCa0tBZ0lDQWdBS0RVRVVMQkVBZ0FrSElBR3BCbHBnUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQUJJTlFSUXNFUUNBQ1FjZ0Fha0dqbUE4UVNTQUJLUUlNSVFZTElBWkNnSUNBZ0lBSWcxQkZDd1JBSUFKQnlBQnFRYk9ZRHhCSklBRXBBZ3doQmdzZ0JrS0FnSUNBZ0JDRFVFVUxCRUFnQWtISUFHcEJ2cGdQRUVrZ0FTa0NEQ0VHQ3lBR1FvQ0FnSUNBSUlOUVJRc0VRQ0FDUWNnQWFrSEdtQThRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnSURBQUlOUVJRc0VRQ0FDUWNnQWFrSE5tQThRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnSUNBQ0lOUVJRc0VRQ0FDUWNnQWFrSFZtQThRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnSUNBSUlOUVJRc0VRQ0FDUWNnQWFrSGZtQThRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnSUNBd0FDRFVFVUxCRUFnQWtISUFHcEI3NWdQRUVrZ0FTa0NEQ0VHQ3lBR1FvQ0FnSUNBZ0lBQmcxQkZDd1JBSUFKQnlBQnFRWVNaRHhCSklBRXBBZ3doQmdzZ0JrS0FnSUNBZ0lDQUFvTlFSUXNFUUNBQ1FjZ0Fha0dYbVE4UVNTQUJLUUlNSVFZTElBWkNnSUNBZ0lDQWdBU0RVRVVMQkVBZ0FrSElBR3BCcVprUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQWdCQ0RVRVVMQkVBZ0FrSElBR3BCdFprUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQWdBR0RVRVVMQkVBZ0FrSElBR3BCdjVrUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQWdBS0RVRVVMQkVBZ0FrSElBR3BCeVprUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQWdBU0RVRVVMQkVBZ0FrSElBR3BCMDVrUEVFa2dBU2tDRENFR0N5QUdwMEYvVEFzRWZpQUNRY2dBYWtIZW1ROFFTU0FCS1FJTUJTQUdDMEtBZ0lDQUVJTlFSUVJBSUFKQnlBQnFRZmVaRHhCSkN5QUNRY2dBYWtISWxROFFTU0FDUWNnQWFpQUJFTWtFRUVrQ1FDQUJJQUVvQWdBb0FuQVJBQUJGRFFBZ0FTZ0NQQkJnUVFGSURRQkJBQ0VBQTBBZ0FrSElBR29DZnlBQktBSThJQUFRMWdFaUF5QUFja1VFUUVHRG1nOGdBU2dDUEMwQURBMEJHZ3NnQWtFNGFnSi9JQU5GQkVBZ0FrSElBR3BCbTVvUEVFbEJwSm9QSUFBTkFob2dBa0hJQUdwQnlKVVBFRWtnQVNnQ1BDZ0NDQXdCQ3lBQ1FjZ0Fha0hJbFE4UVNTQUJLQUk4SUFBUTFnRUxFTXdFUWFTYUR3c1FTU0FBUVFGcUlnQWdBU2dDUEJCZ1NBMEFDd3NnQVNBQktBSUFLQUtzQVJFQUFBUkFJQUpCeUFCcVFlK1pEaEJKUVFBaEFDQUJLQUpRRUdCQkFFb0VRQU5BSUFKQk9Hb2dBU2dDVUNBQUVOWUJFTXdFSUFFb0FsQVFZRUYvYWlBQVJ3UkFJQUpCeUFCcVFiYWFEeEJKQ3lBQVFRRnFJZ0FnQVNnQ1VCQmdTQTBBQ3dzZ0FrSElBR3BCOFprT0VFa0xJQUV0QUE5QkIzRUVRQ0FDUWNnQWFrSElsUThRU1NBQ1FjZ0FhaUFCRUw0T0VFa0xBa0FnQWtFNGFnSi9JQUVnQVNnQ0FDZ0NiQkVBQUFSQUlBSkJ5QUJxUWNpVkR4QkpJQUpCT0dvZ0FTZ0NCRUVRZEVFY2RSRE1CQ0FDUWNnQWFrRzVtZzhRU1VHN21nOGhBRUVNSVFNZ0FVRUVhZ3dCQ3lBQklBRW9BZ0FvQW1nUkFBQkZEUUVnQWtISUFHcEJ5SlVQRUVsQnhwb1BJUUJCRkNFRElBRkJCR29MS0FJQUlBTjBRUngxRU13RUlBSkJ5QUJxSUFBUVNRc2dBa0hJQUdwQnlKVVBFRWtnQWlBQkVLa0NJQVFnQWhDSkFSb2dBaEFaR2lBQkx3RU1RY0QvQVhFRVFDQUNRY2dBYWtISWxROFFTU0FDUWNnQWFnSi9JQUVvQWd4QkJuWkIvd054SWdCQjl3Qk5CRUFnQUVFQ2RFRzB0ZzlxS0FJQURBRUxRZFN0RHdzUVNRc0NRQ0FCSUFFb0FnQW9Bb2dCRVFBQVJRMEFJQUVvQWtCRkRRQWdBa0hJQUdwQjI1b1BFRWtnQVNnQ1FCQTNCRUJCQUNFQVFRRWhBd05BSUFFb0FrQWdBQkE0S0FJQUlnVWdCU2dDQUNnQ0RCRUFBRVVFUUNBRFFRRnhSUVJBSUFKQnlBQnFRYmFhRHhCSkN5QUNJQUVvQWtBZ0FCQTRLQUlBRU1vQklBUWdBaENKQVJvZ0FoQVpHaUFFUWNpVkR4QVNHaUFFSUFFb0FrQWdBQkE0S0FJQUlnTWdBeWdDQUNnQ0dCRUFBQkNKQVJwQkFDRURDeUFBUVFGcUlnQWdBU2dDUUJBM1NRMEFDd3NnQWtISUFHcEIzWm9QRUVrTElBSkIwQUJxSkFBTEpBRUNmeU1BUVJCcklnQWtBQ0FBUVFocVFRQVFNU2dDQUNFQklBQkJFR29rQUNBQkN5VUJBWDhqQUVFUWF5SUJKQUFnQVVFSWFpQUFFSW9LS0FJQUlRQWdBVUVRYWlRQUlBQUx0UUlBSUFCQjJKSVBOZ0lBSUFFZ0FTZ0NBQ2dDY0JFQUFBUkFJQUFnQVJDUEFTQUJJQUVvQWdBb0Frd1JBQUFRWUVFQlJnUkFJQUJCQURZQ1BDQUFEd3RCRUJCR0lnTVFzd01oQWlBQUlBTTJBandnQVNnQ1BDSUJFR0JCQWs0RVFDQUNJQUVRa2hBTElBQVBDeUFCTFFBRVFYRnFRUUZOQkVBZ0FDQUJLQUpBSUFJUU9DZ0NBQkNQQVNBQUR3c2dBQ0FCRUk4QkFrQWdBQ2dDQkNJQlFSQjBRWUNBZ0lBQlRnUkFJQUFnQVVFRVFRZ2dBeHQyUVlBZWNTSUNJQUZCLzJGeGNpSUJRZitmUUhFMkFnUWdBa0dBQWtjTkFTQUFJQUZCLzUrQWYzRkJnSURBQUhJMkFnUWdBQThMSUFBZ0FDZ0NBQ2dDYUJFQUFBUkFJQUFnQUNnQ0JFSC80YjkvY1VHQUFuSTJBZ1FnQUE4TElBQVFoUUZGRFFBZ0FFRUFOZ0pRSUFBZ0FDZ0NCRUgvLy85K2NUWUNCQXNnQUFzU0FRRi9JQUFvQWdBaEFTQUFFR1lhSUFFTEVBQWdBRUhvQUdvZ0FSQXZRUUFRTHdzUUFDQUFLQUlJSUFBb0FnUnJRUUoxQzRzQ0FRTi9Jd0JCUUdvaUJ5UUFBa0FnQUNnQ0NDQUNjVVVOQUNBRFFRRklCSDlCQUFVZ0FDZ0NFQ0FEVGdzaEFpQUVRUUZPQkVCQkFDRURBMEFnQUNBRklBTkJBblJxSWdnb0FnQWdBQ2dDQUNnQ0hCRURBRUYvYWlJSlFRSk5CRUFnQ1VFQ2EwVUVRQ0FBS0FJTUlRSWdCMEVRYWlBSElBZ29BZ0FRSWlJSUVOSU5JQWRCSUdvZ0IwRVFha0hWbnhBUTJBTWdCMEV3YWlBSFFTQnFJQVlRMkFNZ0FrRUJJQWRCTUdvUUV5QUJFTllFSUFkQk1Hb1FHUm9nQjBFZ2FoQVpHaUFIUVJCcUVCa2FJQWdRR1JvTFFRRWhBZ3NnQTBFQmFpSURJQVJIRFFBTEN5QUNEUUFnQUNBQlFlbWZFQ0FHUWFLZ0VFRUFJQUFvQWdBb0FxQUJFUUlBQ3lBSFFVQnJKQUFMTUFBZ0FpQUFLQUlVSWdKMlFRRnhSUVJBSUFBZ0FVR01ueEFnQXlBQ0VOTU5RUUFnQUNnQ0FDZ0NvQUVSQWdBTEN5QUFJQUFRc0JrZ0FDQUJLQUlJTmdJSUlBQWdBU2tDQURjQ0FDQUJFT29CQ3drQUlBQWdBVG9BQ3dzT0FDQUFFUHNOSUFBUTZnRWdBQXNKQUNBQUlBRVFyQVVMQ2dBZ0FDZ0NSQkQ2Q1F1N0FRRUNmeUFBS0FJa0VNSUJJUUVnQUNnQ0hDZ0NBQ0FCTmdJUVFkMEVJUUlDUUNBQUxRQUtEUUFnQUNnQ0JDZ0NUQ0FBS0FJY0tBSUFLQUlRUVFCQkFCQ3NBU0VCSUFBb0Fod29BZ0FnQVRZQ0dDQUFMUUFJRFFBZ0FDMEFDUTBBSUFBb0Fod29BZ0FvQWhnaUFVVU5BQ0FCSUFFb0FnQW9BaVFSQUFBaUFVVU5BQ0FCSUFFb0FnQW9BbGdSQUFCRkRRQWdBU0FCS0FJQUtBSXdFUUFBRVBRQkJFQWdBQzBBQ3cwQkN5QUFRUUU2QUFoQjNnUWhBZ3NnQWd0YUFRUi9Jd0JCRUdzaUFTUUFJQUFvQWdRb0Frd1FKRVVFUUNBQUtBSWtJUUlnQUNnQ0JDSURLQUlBS0FLZ0FTRUVJQUZCbGI0Sk5nSUFJQU1nQUVFTWFrRzN5QWtnQWtHVnZna2dBU0FFRVFJQUN5QUJRUkJxSkFBTGJRRUVmd0pBQWtBZ0FDZ0NFQ0lCSUFBb0FnUWlBMDRFUUNBQVFRRTZBRFVNQVFzZ0FDZ0NEQ0VFSUFBb0FoUWhBZ05BSUFJZ0JDQUJRUUowYWlnQ0FFa05Ba0VBSVFJZ0FVRUJhaUlCSUFOSERRQUxDMEYvRHdzZ0FDZ0NDQ0FCUVFKMGFpZ0NBQ0FDYWkwQUFBc2xBQ0FBRU1VRUlBQW9BZ0FFUUNBQUVMSUtJQUFRT3hvZ0FDZ0NBQm9nQUJDM0Fob0xDMHNCQVg4akFFRVFheUlDSkFBQ1FDQUFLQUlFSUFBUUd5Z0NBRWNFUUNBQUVEc2dBQ2dDQkNBQkVKY0RJQUFnQUNnQ0JFRUVhallDQkF3QkN5QUFJQUVReHd3TElBSkJFR29rQUF2ekFnSUNmd0YrQWtBZ0FrVU5BQ0FBSUFKcUlnTkJmMm9nQVRvQUFDQUFJQUU2QUFBZ0FrRURTUTBBSUFOQmZtb2dBVG9BQUNBQUlBRTZBQUVnQTBGOWFpQUJPZ0FBSUFBZ0FUb0FBaUFDUVFkSkRRQWdBMEY4YWlBQk9nQUFJQUFnQVRvQUF5QUNRUWxKRFFBZ0FFRUFJQUJyUVFOeElnUnFJZ01nQVVIL0FYRkJnWUtFQ0d3aUFUWUNBQ0FESUFJZ0JHdEJmSEVpQkdvaUFrRjhhaUFCTmdJQUlBUkJDVWtOQUNBRElBRTJBZ2dnQXlBQk5nSUVJQUpCZUdvZ0FUWUNBQ0FDUVhScUlBRTJBZ0FnQkVFWlNRMEFJQU1nQVRZQ0dDQURJQUUyQWhRZ0F5QUJOZ0lRSUFNZ0FUWUNEQ0FDUVhCcUlBRTJBZ0FnQWtGc2FpQUJOZ0lBSUFKQmFHb2dBVFlDQUNBQ1FXUnFJQUUyQWdBZ0JDQURRUVJ4UVJoeUlnUnJJZ0pCSUVrTkFDQUJyU0lGUWlDR0lBV0VJUVVnQXlBRWFpRUJBMEFnQVNBRk53TVlJQUVnQlRjREVDQUJJQVUzQXdnZ0FTQUZOd01BSUFGQklHb2hBU0FDUVdCcUlnSkJIMHNOQUFzTElBQUxFUUFnQUNBQklBQW9BZ0FvQWh3UkF3QUxiQUVCZnlNQVFSQnJJZ1FrQUNBRElBUWdBQkFpSWdOQkFFRUFFS3dCSVFBZ0F4QVpHaUFBQkVBZ0FDQUFLQUlBS0FJMEVRQUFJZ0FnQUNnQ0FDZ0NLQkVBQUNJQUlBSkJCblJCd1A4QmNTQUJRVDl4Y3EwZ0FDa0NCRUtBZ0g2RGhEY0NCQXNnQkVFUWFpUUFDN0lEQVFKL0l3QkJNR3NpQmlRQUlBQWdBU0FDSUFRZ0JDZ0NBQ2dDREJFQUFDQUFLQUlBS0FMd0FSRUVBQ0FBSUFFZ0FpQUZJQVVvQWdBb0Fnd1JBQUFnQUNnQ0FDZ0M4QUVSQkFCQkFTRUhBa0FnQTBIYmZtcEJBMHNOQUNBRUlBUW9BZ0FvQXFnQkVRQUFCRUFnQlNBRktBSUFLQUtvQVJFQUFBMEJDMEVBSVFjTEFrQUNRQUpBSUFRZ0JDZ0NBQ2dDZUJFQUFCQ3dBa1VFUUNBRklBVW9BZ0FvQW5nUkFBQVFzQUpGRFFFTElBQWdBQ2dDQUNnQ1RCRUFBRVVOQVFzQ1FDQUVJQVFvQWdBb0FuZ1JBQUFRcndKRkJFQWdCU0FGS0FJQUtBSjRFUUFBRUs4Q1JRMEJDeUFBSUFBb0FnQW9BbGdSQUFCRkRRRUxBa0FDUUNBRUlBUW9BZ0FvQW5nUkFBQVF4Z0pGQkVBZ0JTQUZLQUlBS0FKNEVRQUFFTVlDUlEwQkN5QUFJQUFvQWdBb0FtUVJBQUFnQjNFTkFRd0NDeUFIUlEwQkN5QUFLQUlvSVFjZ0JpQUJLUUlJTndNSUlBWWdBU2tDQURjREFDQUhJQU1nQkNBRklBWVF6d01pQXcwQkN5QUdRU0JxSUFRUXFnSWdCa0VRYWlBRkVLb0NJQUFnQVNBQ0lBWkJJR29nQmtFUWFoREdCeUFHUVJCcUVCa2FJQVpCSUdvUUdScEJBQ0VEQ3lBR1FUQnFKQUFnQXdzSkFDQUFJQUUyQWdBTEdBQWdBQzBBQUVFZ2NVVUVRQ0FCSUFJZ0FCQ0dDQm9MQzJFQkFuOGpBRUVRYXlJR0pBQWdBMEgvLy8vL0IwY0VRRUVzRUNaQnlBQVF0d0VpQlNBQkVEa2dCU0FDRUV3Z0JTQURFRXdnQkVFQVRnUkFJQVVnQkJCTUN5QUFRWVFDYWlBR1FRaHFJQVVRT2lJQUVIMGdBQkErQ3lBR1FSQnFKQUFMOGdJQkFuOGdBQkNCQlNJQUlBRWdBU2dDQUNnQ0xCRUFBQ2tDQkVJdGlLZEJBWEVnQUMwQUFFSCtBWEZ5T2dBQUlBQWdBU0FCS0FJQUtBSXNFUUFBS1FJRVFpNklwMEVDY1NBQUxRQUFRZjBCY1hJNkFBQWdBQ0FCSUFFb0FnQW9BaXdSQUFBcEFnUkNMb2luUVFSeElBQXRBQUJCK3dGeGNqb0FBRUVJSVFJZ0FDQUJJQUVvQWdBb0Fpd1JBQUF0QUFwQkFuRUVmeUFDQlNBQklBRW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0IxRkJBM1FMSUFBdEFBQkI5d0Z4Y2pvQUFDQUFJQUVnQVNnQ0FDZ0NMQkVBQUNrQ0JFSXVpS2RCRUhFZ0FDMEFBRUh2QVhGeU9nQUFJQUFnQVNBQktBSUFLQUlzRVFBQUxRQUpRY0FBY1NBQUxRQUFRYjhCY1hJNkFBQWdBU0FCS0FJQUtBSXNFUUFBSVFNZ0FDQUFMUUFBSWdKQjN3RnhRU0FnQWtFQmRrRWdjU0FDUVI5eEcwRWdJQU1wQWdSQ2dJQ0FnSUNBZ0FTRFVCdHlPZ0FBSUFFZ0FTZ0NBQ2dDSEJFQUFDRUJJQUFnQUMwQUFFSC9BSEVnQVVFT1JrRUhkSEk2QUFBTENnQWdBQ0FCTmdLRUFRc0tBQ0FBS0FJRVFSOTJDeFFCQVg4akFFRVFheUlBSkFBZ0FFRVFhaVFBQ3hBQUlBSUVRQ0FBSUFFZ0FoQTlHZ3NMRUFBZ0FDQUJRWUNBZ0lCNGNqWUNDQXNRQUNBQVFnQTNBZ0FnQUVFQU5nSUlDeE1BSUFBcEFnUkNnSUNBZ0lIaUFJTkNBRklMSmdFQmZ5TUFRUkJySWdFa0FDQUJRUWhxSUFBUUV4QXhLQUlBSVFBZ0FVRVFhaVFBSUFBTFV3RUNmeU1BUVJCcklnSWtBQ0FBSUFKQkNHb1E3UVVoQXdKQUlBRVF3UUZGQkVBZ0F5QUJLQUlJTmdJSUlBTWdBU2tDQURjQ0FBd0JDeUFBSUFFb0FnQWdBU2dDQkJDMUJnc2dBa0VRYWlRQUlBQUxSUUVCZnlNQVFSQnJJZ1VrQUNBRklBSTJBZ3dnQlNBRU5nSUlJQVVnQlVFTWFoRDFBaUVDSUFBZ0FTQURJQVVvQWdnUTFRVWhBQ0FDRVBRQ0lBVkJFR29rQUNBQUM2TUJBUUovQWtBZ0FCQWZSUTBBSUFFZ0FoQytCaUFDUVh4cUlRUWdBQkFUSWdJZ0FCQWZhaUVGQTBBQ1FDQUNMQUFBSVFBZ0FTQUVUdzBBQWtBZ0FFRUJTQ0FBUWY4QVRuSU5BQ0FCS0FJQUlBSXNBQUJHRFFBZ0EwRUVOZ0lBRHdzZ0FrRUJhaUFDSUFVZ0FtdEJBVW9iSVFJZ0FVRUVhaUVCREFFTEN5QUFRUUZJSUFCQi93Qk9jZzBBSUFRb0FnQkJmMm9nQWl3QUFFa05BQ0FEUVFRMkFnQUxDd3dBSUFBZ0FSRFJDMEVCY3dzUEFDQUFJQUFvQWdBb0FnUTJBZ0FMQ2dBZ0FFRVVhaEQwQVF0K0FDQUFRUkJxSWdBZ0FTQUJLQUlBS0FJQUVRQUFLQUlFRUpVQlFmU1RFUkFRR2dKQUlBRWdBU2dDQUNnQ0FCRUFBQ2dDQ0FSQUlBQWdBU0FCS0FJQUtBSUFFUUFBS0FJSUVKVUJHZ3dCQ3lBQVFmYVRFUkFRR2dzZ0FrRUJUZ1JBUVFBaEFRTkFJQUJCK1pNUkVCQWFJQUZCQVdvaUFTQUNSdzBBQ3dzTEVnQWdBQ0FBS0FJQUtBSWNFUUFBUVJKR0N6RUJBWDhnQUVHVXNBODJBZ0FnQVVVRVFDQUFRUUEyQWdRZ0FBOExRUkFRUmlJQ0lBRVFyQW9nQUNBQ05nSUVJQUFMREFBZ0FDQUJFTXdMUVFGekMxQUJBWDRDUUNBRFFjQUFjUVJBSUFFZ0EwRkFhcTJHSVFKQ0FDRUJEQUVMSUFORkRRQWdBaUFEclNJRWhpQUJRY0FBSUFOcnJZaUVJUUlnQVNBRWhpRUJDeUFBSUFFM0F3QWdBQ0FDTndNSUM0b0JBUUYvSXdCQk1Hc2lCQ1FBSUFRZ0F6WUNMQUpBSUFBdEFKQUJCRUFnQUNBQklBSWdCRUVnYWtFQklBUkJMR29ReFFNaUFTQUVRUkJxRURBaUFoQ3JCQ0VBSUFJUU5pQUJFRFlNQVF0QkxCQW1JQUFRVlNBQ0lBRVFVU0lCSUFNUU9TQUFLQUtFQVNBRVFRaHFJQUVRT2lJQUVId2dBQkErSUFFb0FnUWhBQXNnQkVFd2FpUUFJQUFMQ1FBZ0FTQUNFSjhDQ3dzQUlBQkJqTXNVRUpzREN3Y0FJQUFRSDBVTHZnRUJBWDhqQUVFZ2F5SUdKQUFDUUNBREJFQWdCQ0FFS0FJQUtBSU1FUUFBSWdCRkJFQkJBQ0VEREFJTElBQWdBQ2dDQUNnQ0ZCRUFBQVJBSUFBZ0FDZ0NBQ2dDRkJFQUFDSUJJQUlnQlNBQktBSUFLQUs4QVJFSEFDSUREUUlMSUFZZ0FDQUFLQUlBS0FJQUVRQUFJZ0VwQWdnM0F3Z2dCaUFCS1FJQU53TUFJQUlnQUNBR0lBVVE0Z2doQXd3QkN5QUdJQUVwQWdnM0F4Z2dCaUFCS1FJQU53TVFJQVFnQWlBRklBWkJFR29RcEFJaEF3c2dCa0VnYWlRQUlBTUxEZ0FnQUMwQUFVRUlkRUdBREVZTENRQWdBQ0FCRU9JWkMxOEJBbjhqQUVFUWF5SUNKQUFnQWtFSWFpQUJFQ01RclFJZ0FDQUNRUWhxRUswSklRTUNRQ0FCRU1FQlJRUkFJQU1nQVNnQ0NEWUNDQ0FESUFFcEFnQTNBZ0FNQVFzZ0FDQUJLQUlBSUFFb0FnUVFqUWtMSUFKQkVHb2tBQ0FBQ3c4QUlBQW9BaFJCL3g5eFFmOGZSd3NUQUNBQUlBRVFsUU1nQUVFRWFpQUNFREVhQ3hrQVFmLy8vLzhESUFCSkJFQVFnZ0VBQ3lBQVFRSjBFQ1lMRGdBZ0FDQUJRUUowYWlnQzRBTUxHQUFnQUNBQklBQW9BZ0JxUVg5cVFRQWdBV3R4TmdJQUN4QUFJQUFnQVNBQ0lBSVFvQUVRbXdjTEZ3QWdBQ0FCUndSQUlBQWdBUkFUSUFFUUh4RHRCd3NMRVFBZ0FDQUJJQUVvQWdBb0FoUVJBUUFMRHdBZ0FDQUFLQUlBS0FJUUVRQUFDd3NBSUFCQmhNc1VFSnNEQytZTUFRaC9Jd0JCRUdzaUJDUUFJQVFnQURZQ0RBSkFJQUJCMHdGTkJFQkJzSkFTUWZDUkVpQUVRUXhxRU5rTEtBSUFJUUFNQVFzZ0JDQUFJQUJCMGdGdUlnWkIwZ0ZzSWdOck5nSUlRZkNSRWtHd2t4SWdCRUVJYWhEWkMwSHdrUkpyUVFKMUlRVUNRQU5BSUFWQkFuUkI4SkVTYWlnQ0FDQURhaUVBUVFVaEF3SkFBa0FDUUFOQUlBTkJMMFlOQVNBQUlBY2dBQ0FEUVFKMFFiQ1FFbW9vQWdBaUFXNGlBaUFCU1NJSUd5RUhJQU5CQVdvaEEwRUJRUWRCQUNBQUlBRWdBbXhHR3lBSUd5SUJSUTBBQ3lBQlFYeHFJZ05CQTBzTkJDQURRUUZyRGdNRUJBRUFDMEhUQVNFREEwQWdBQ0FEYmlJQklBTkpEUUlnQUNBQklBTnNSZzBCSUFBZ0EwRUthaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRU1haUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRVFhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRVNhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRVdhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRWNhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRWVhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRWthaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRW9haUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRXFhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRXVhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRTBhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRTZhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRThhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwSENBR29pQVc0aUFpQUJTUTBDSUFBZ0FTQUNiRVlOQVNBQUlBTkJ4Z0JxSWdGdUlnSWdBVWtOQWlBQUlBRWdBbXhHRFFFZ0FDQURRY2dBYWlJQmJpSUNJQUZKRFFJZ0FDQUJJQUpzUmcwQklBQWdBMEhPQUdvaUFXNGlBaUFCU1EwQ0lBQWdBU0FDYkVZTkFTQUFJQU5CMGdCcUlnRnVJZ0lnQVVrTkFpQUFJQUVnQW14R0RRRWdBQ0FEUWRnQWFpSUJiaUlDSUFGSkRRSWdBQ0FCSUFKc1JnMEJJQUFnQTBIZ0FHb2lBVzRpQWlBQlNRMENJQUFnQVNBQ2JFWU5BU0FBSUFOQjVBQnFJZ0Z1SWdJZ0FVa05BaUFBSUFFZ0FteEdEUUVnQUNBRFFlWUFhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwSHFBR29pQVc0aUFpQUJTUTBDSUFBZ0FTQUNiRVlOQVNBQUlBTkI3QUJxSWdGdUlnSWdBVWtOQWlBQUlBRWdBbXhHRFFFZ0FDQURRZkFBYWlJQmJpSUNJQUZKRFFJZ0FDQUJJQUpzUmcwQklBQWdBMEg0QUdvaUFXNGlBaUFCU1EwQ0lBQWdBU0FDYkVZTkFTQUFJQU5CL2dCcUlnRnVJZ0lnQVVrTkFpQUFJQUVnQW14R0RRRWdBQ0FEUVlJQmFpSUJiaUlDSUFGSkRRSWdBQ0FCSUFKc1JnMEJJQUFnQTBHSUFXb2lBVzRpQWlBQlNRMENJQUFnQVNBQ2JFWU5BU0FBSUFOQmlnRnFJZ0Z1SWdJZ0FVa05BaUFBSUFFZ0FteEdEUUVnQUNBRFFZNEJhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwR1VBV29pQVc0aUFpQUJTUTBDSUFBZ0FTQUNiRVlOQVNBQUlBTkJsZ0ZxSWdGdUlnSWdBVWtOQWlBQUlBRWdBbXhHRFFFZ0FDQURRWndCYWlJQmJpSUNJQUZKRFFJZ0FDQUJJQUpzUmcwQklBQWdBMEdpQVdvaUFXNGlBaUFCU1EwQ0lBQWdBU0FDYkVZTkFTQUFJQU5CcGdGcUlnRnVJZ0lnQVVrTkFpQUFJQUVnQW14R0RRRWdBQ0FEUWFnQmFpSUJiaUlDSUFGSkRRSWdBQ0FCSUFKc1JnMEJJQUFnQTBHc0FXb2lBVzRpQWlBQlNRMENJQUFnQVNBQ2JFWU5BU0FBSUFOQnNnRnFJZ0Z1SWdJZ0FVa05BaUFBSUFFZ0FteEdEUUVnQUNBRFFiUUJhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRzZBV29pQVc0aUFpQUJTUTBDSUFBZ0FTQUNiRVlOQVNBQUlBTkJ2Z0ZxSWdGdUlnSWdBVWtOQWlBQUlBRWdBbXhHRFFFZ0FDQURRY0FCYWlJQmJpSUNJQUZKRFFJZ0FDQUJJQUpzUmcwQklBQWdBMEhFQVdvaUFXNGlBaUFCU1EwQ0lBQWdBU0FDYkVZTkFTQUFJQU5CeGdGcUlnRnVJZ0lnQVVrTkFpQUFJQUVnQW14R0RRRWdBQ0FEUWRBQmFpSUJiaUlDSUFGSkRRSWdBMEhTQVdvaEF5QUFJQUVnQW14SERRQUxDMEVBSUFWQkFXb2lBQ0FBUVRCR0lnQWJJUVVnQUNBR2FpSUdRZElCYkNFRERBRUxDeUFFSUFBMkFnd01BUXNnQkNBQU5nSU1JQWNoQUFzZ0JFRVFhaVFBSUFBTGVRRUJmeU1BUVlBQ2F5SUZKQUFnQkVHQXdBUnhJQUlnQTB4eVJRUkFJQVVnQVNBQ0lBTnJJZ1JCZ0FJZ0JFR0FBa2tpQVJzUTNRRWFJQUFnQlNBQkJIOGdCQVVnQWlBRGF5RUJBMEFnQUNBRlFZQUNFT0lCSUFSQmdINXFJZ1JCL3dGTERRQUxJQUZCL3dGeEN4RGlBUXNnQlVHQUFtb2tBQXNuQVFGL0l3QkJFR3NpQVNRQUlBRkJDR29nQUNnQ0JCQXhLQUlBSVFBZ0FVRVFhaVFBSUFBTHFRRUJCWDhnQUVIb0FHb2hCZ05BQWtBZ0JpQUJFQzhpQkNnQ0RDSUZRV3RxSWdkQkMwc05BQUpBQWtBQ1FBSkFBa0FnQjBFQ2F3NEtCQVFGQlFVRUJBQUZBd0VMSUFRUXZBSkJBRXdOQWtFQUlRRU1BUXNnQWlBRlJ3MEJJQVJCQUJBdklBTkdEd3NEUUNBQUlBUWdBUkF2SUFJZ0F4Q05Ba1VFUUNBQlFRRnFJZ0VnQkJDOEFrZ05BUXdDQ3d0QkFTRUlDeUFJRHdzZ0FDQUJFTEFCSVFFTUFRc0xJQUlnQlVZTEVnQWdBQ0FCTmdLVUFTQUFRUUU2QUx3QkN4Z0JBWDlCQVNFQklBQVFvUU1FZnlBQkJTQUFFT1lCQ3dzSUFDQUFRWUFCYWdzWUFDQUFJQUVvQWdBMkFnQWdBQ0FCS0FJRU5nSUVJQUFMRUFBZ0FDZ0NCQ0FBS0FJQWEwRVliUXNtQVFGL0l3QkJFR3NpQWlRQUlBQWdBaUFCRUdraUFCQzRHU0FBRUNBYUlBSkJFR29rQUF2cEFRRURmeUFBSUFBb0FpaEJBV28yQWlnZ0FDQUFLQUlzSUFGcU5nSXNJQUVnQUNnQ0VDSUNhaUlFSUFBb0FnQWlBMDBFUUNBQUlBQW9BZ2dpQVNBRWFpQUJRWDl6Y1RZQ0VDQUFLQUlZSUFKcUR3c2dBQ2dDRENBQmFpSUNJQU5MQkVBZ0FoQW1JZ0VnQUNnQ0dDQUNJQU5xUVg5cUlBTnVFSmtCR2lBQUlBRTJBaGdnQUNBQUtBSUFOZ0lRSUFFZ0FDZ0NER29QQ3dKQUlBQW9BaFFpQWdSQUlBQWdBaWdDQURZQ0ZBd0JDeUFERUNZaEFnc2dBQ0FDSUFBb0FoaEJBUkNaQVRZQ0dDQUFJQUFvQWdnaUF5QUJJQUFvQWd3aUFHcHFJQU5CZjNOeE5nSVFJQUFnQW1vTEZ3QWdBQ2tDR0VLQWdJQ0E4QUdEUW9DQWdJRHdBVklMQ2dBZ0FDZ0NERUYvUndzTkFDQUFLQUlBSUFFb0FnQkdDMm9CQW44Q1FDQUFFQjhpQWlBQkVCOUhEUUFnQUJBVElRTWdBUkFUSVFFQ1FDQUFFTUVCUlFSQUlBSU5BVUVCRHdzZ0F5QUJJQUlRaXdkRkR3c0RRQ0FETFFBQUlBRXRBQUJIRFFFZ0FVRUJhaUVCSUFOQkFXb2hBeUFDUVg5cUlnSU5BQXRCQVE4TFFRQUxFZ0FnQUNrQ0JFS0FnSUNBeGdHRFFnQlNDeFFBSUFCQnpBMDJBZ0FnQUVFUWFoRGJBU0FBQ3dNQUFRdklDUUlFZndSK0l3QkI4QUJySWdVa0FDQUVRdi8vLy8vLy8vLy8vd0NESVFvQ1FBSkFJQUZDZjN3aUMwSi9VU0FDUXYvLy8vLy8vLy8vL3dDRElna2dDeUFCVksxOFFuOThJZ3RDLy8vLy8vLy92Ly8vQUZZZ0MwTC8vLy8vLy8rLy8vOEFVUnRGQkVBZ0EwSi9mQ0lMUW45U0lBb2dDeUFEVksxOFFuOThJZ3RDLy8vLy8vLy92Ly8vQUZRZ0MwTC8vLy8vLy8rLy8vOEFVUnNOQVFzZ0FWQWdDVUtBZ0lDQWdJREEvLzhBVkNBSlFvQ0FnSUNBZ01ELy93QlJHMFVFUUNBQ1FvQ0FnSUNBZ0NDRUlRUWdBU0VEREFJTElBTlFJQXBDZ0lDQWdJQ0F3UC8vQUZRZ0NrS0FnSUNBZ0lEQS8vOEFVUnRGQkVBZ0JFS0FnSUNBZ0lBZ2hDRUVEQUlMSUFFZ0NVS0FnSUNBZ0lEQS8vOEFoWVJRQkVCQ2dJQ0FnSUNBNFAvL0FDQUNJQUVnQTRVZ0FpQUVoVUtBZ0lDQWdJQ0FnSUIvaFlSUUlnWWJJUVJDQUNBQklBWWJJUU1NQWdzZ0F5QUtRb0NBZ0lDQWdNRC8vd0NGaEZBTkFTQUJJQW1FVUFSQUlBTWdDb1JDQUZJTkFpQUJJQU9ESVFNZ0FpQUVneUVFREFJTElBTWdDb1JRUlEwQUlBRWhBeUFDSVFRTUFRc2dBeUFCSUFNZ0FWWWdDaUFKVmlBSklBcFJHeUlIR3lFS0lBUWdBaUFIR3lJTFF2Ly8vLy8vL3orRElRa2dBaUFFSUFjYklnSkNNSWluUWYvL0FYRWhDQ0FMUWpDSXAwSC8vd0Z4SWdaRkJFQWdCVUhnQUdvZ0NpQUpJQW9nQ1NBSlVDSUdHM2tnQmtFR2RLMThweUlHUVhGcUVQY0JJQVVwQTJnaENTQUZLUU5nSVFwQkVDQUdheUVHQ3lBQklBTWdCeHNoQXlBQ1F2Ly8vLy8vL3orRElRRWdDQVIrSUFFRklBVkIwQUJxSUFNZ0FTQURJQUVnQVZBaUJ4dDVJQWRCQm5TdGZLY2lCMEZ4YWhEM0FVRVFJQWRySVFnZ0JTa0RVQ0VESUFVcEExZ0xRZ09HSUFOQ1BZaUVRb0NBZ0lDQWdJQUVoQ0VFSUFsQ0E0WWdDa0k5aUlRaEFTQUNJQXVGSVF3Q2ZpQURRZ09HSWdNZ0JpQUlheUlIUlEwQUdpQUhRZjhBU3dSQVFnQWhCRUlCREFFTElBVkJRR3NnQXlBRVFZQUJJQWRyRVBjQklBVkJNR29nQXlBRUlBY1E3UVFnQlNrRE9DRUVJQVVwQXpBZ0JTa0RRQ0FGS1FOSWhFSUFVcTJFQ3lFRElBRkNnSUNBZ0lDQWdBU0VJUWtnQ2tJRGhpRUNBa0FnREVKL1Z3UkFJQUlnQTMwaUFTQUpJQVI5SUFJZ0ExU3RmU0lEaEZBRVFFSUFJUU5DQUNFRURBTUxJQU5DLy8vLy8vLy8vd05XRFFFZ0JVRWdhaUFCSUFNZ0FTQURJQU5RSWdjYmVTQUhRUVowclh5blFYUnFJZ2NROXdFZ0JpQUhheUVHSUFVcEF5Z2hBeUFGS1FNZ0lRRU1BUXNnQWlBRGZDSUJJQU5VclNBRUlBbDhmQ0lEUW9DQWdJQ0FnSUFJZzFBTkFDQUJRZ0dESUFOQ1A0WWdBVUlCaUlTRUlRRWdCa0VCYWlFR0lBTkNBWWdoQXdzZ0MwS0FnSUNBZ0lDQWdJQi9neUVDSUFaQi8vOEJUZ1JBSUFKQ2dJQ0FnSUNBd1AvL0FJUWhCRUlBSVFNTUFRdEJBQ0VIQWtBZ0JrRUFTZ1JBSUFZaEJ3d0JDeUFGUVJCcUlBRWdBeUFHUWY4QWFoRDNBU0FGSUFFZ0EwRUJJQVpyRU8wRUlBVXBBd0FnQlNrREVDQUZLUU1ZaEVJQVVxMkVJUUVnQlNrRENDRURDeUFEUWoyR0lBRkNBNGlFSWdRZ0FhZEJCM0VpQmtFRVM2MThJZ0VnQkZTdElBTkNBNGhDLy8vLy8vLy9QNE1nQW9RZ0I2MUNNSWFFZkNBQklBRkNBWU5DQUNBR1FRUkdHeUlCZkNJRElBRlVyWHdoQkFzZ0FDQUROd01BSUFBZ0JEY0RDQ0FGUWZBQWFpUUFDeEVBSUFBZ0FTQUFLQUlBS0FJc0VRTUFDNTBCQVFSL0l3QkJFR3NpQWlRQUlBQW9BZ2doQkNBQUtBSUVJUVVnQWlBQVFSQnFJZ01RRmtFQ1FRRWdCQnRxSUFWQkFFZHFRUkIwSUFBb0FneHlOZ0lNSUFFZ0FrRU1haEJCSUFBb0FnZ0VRQ0FCSUFCQkNHb1FSd3NnQUVFRWFpSUFLQUlBQkVBZ0FTQUFFRWNMUVFBaEFDQURFQlpCQUVvRVFBTkFJQUVnQXlBQUVCRVFSeUFBUVFGcUlnQWdBeEFXU0EwQUN3c2dBa0VRYWlRQUN3d0FJQUFnQVNnQ0FEWUNBQXNKQUNBQUlBRTJBbWdMY1FFRGZ5TUFRUkJySWdNa0FDQURJQUUyQWd3Z0FnUkFJQUJCT0dvaUJDQUVJQUVRWWlBQ0VMRUJJUVZCQUNFQklBTVFNQ0VBSUFKQkFFb0VRQU5BSUFBZ0EwRU1haEJISUFGQkFXb2lBU0FDUncwQUN3c2dCQ0FGSUFCQkFCRDFBeUVCSUFBUU5nc2dBMEVRYWlRQUlBRUxDd0FnQUNBQlFRRVFtd2dMSmdFQmZ3SkFJQUFnQVJEbEJrVU5BQ0FBSUFFUTNneEZEUUFnQUNBQkVPVVZJUUlMSUFJTDFRRUJBbjhqQUVFUWF5SUZKQUFnQlNBQU5nSU1Ba0FnQUFSQUlBQWdBQ2dDQUNnQ0dCRUFBQ0lBQkVBZ0FDZ0NhRVVOQWd0QnFBRVFSaUlFRVAwRElnQWdCQ2dDQUNnQ3ZBRVJBQUFnQlVFTWFoRGNBU0FES0FJSURRRWdBeUFGS0FJTUlnUWdCQ2dDQUNnQ0FCRUFBQ0lFS1FJQU53SUFJQU1nQkNrQ0NEY0NDQXdCQzBHb0FSQkdFUDBESVFBTElBQWdBU0FBS0FJQUtBSzRBUkVCQUNBREtBSUlCRUFnQUNBRElBQW9BZ0FvQWdRUkFRQUxJQUFnQWlBQUtBSUFLQUowRVFFQUlBQVF4QkFoQUNBRlFSQnFKQUFnQUFzUUFDQUFRUnhxSUFFUUVTZ0NBQkFUQ3hnQkFYOUJBU0VCSUFBUTd3VUVmeUFCQlNBQUVJTURDd3NOQUNBQUtBSUlLQUlBSUFCR0N3MEFJQUF0QUFKQkVIRkJCSFlMSXdBZ0FTMEFCRUVPUmdSQUlBQWdBVUhNQUdvUXFna1BDeUFBSUFFUXVnNFFJaG9MREFBZ0FDQUJRUlJxRU1vQkN5QUJBWDhnQUNnQ0FDRUNJQUFnQVRZQ0FDQUNCRUFnQUJBbElBSVE1UWtMQ3hzQkFYOGdBQ2dDRENnQ0JDSUJCRUFnQUNnQ0FDQUJFUVVBQ3dzSkFDQUFJQUVRWnhvTENnQWdBQzBBQ0VFSGRnc3VBUUYvUVFFaEFTQUFRUVlnQUNnQ0FDZ0NzQUVSQXdBRWZ5QUJCU0FBUVFjZ0FDZ0NBQ2dDc0FFUkF3QUxDeElBSUFCQkF5QUFLQUlBS0FLd0FSRURBQXNRQUNBQUtBSUVRVDl4UVh0cVFRSkpDd2NBSUFBUUdSb0xPQUVCZnlBQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQUVDVWlBQzBBQkFSQUlBQW9BZ0FhQ3lBQkJFQWdBQ2dDQUJvZ0FSQXFDd3NMRHdBZ0FDQUFLQUlBUVJScU5nSUFDeHNBSUFKRkJFQWdBQ0FCUmc4TElBQW9BZ1FnQVNnQ0JCQjZSUXNPQUNBQUlBRWdBUkNnQVJES0JRc1NBQ0FBRUJzb0FnQWdBQ2dDQUd0QkFuVUxEUUFnQUNnQ0FDQUFLQUlFUmd0cEFRRi9JQUlvQWdSQnNBRnhJZ0pCSUVZRVFDQUJEd3NDUUNBQ1FSQkhEUUFnQUMwQUFDSUNRVlZxSWdOQkFrc2dBMEVCYTBWeVJRUkFJQUJCQVdvUEN5QUNRVEJISUFFZ0FHdEJBa2h5RFFBZ0FDMEFBVUVnY2tINEFFY05BQ0FBUVFKcUlRQUxJQUFMZndJQ2Z3RitJd0JCRUdzaUF5UUFJQUFDZmlBQlJRUkFRZ0FNQVFzZ0F5QUJJQUZCSDNVaUFtb2dBbk1pQXExQ0FDQUNaeUlDUWRFQWFoRDNBU0FES1FNSVFvQ0FnSUNBZ01BQWhVR2VnQUVnQW11dFFqQ0dmQ0FCUVlDQWdJQjRjYTFDSUlhRUlRUWdBeWtEQUFzM0F3QWdBQ0FFTndNSUlBTkJFR29rQUF0WkFRUi9JQUJCNkFCcUlRTURRQUpBQWtBZ0F5QUJFQzhpQkNnQ0RFRnRhaUlDUVExTERRQkJBU0FDZEVHd3pBQnhEUUZCQVNBQ2RFR1BFSEZGRFFBZ0JDZ0NCQ0VGQ3lBRkR3c2dBQ0FCRUxBQklRRU1BQUFMQUFzSkFDQUFRUkJxRUJZTEVnQWdBQ0FBUVNBUW9nSWdBU0FDRVBNRUN3NEFJQUFnQVVHVUFXb1EvQU1hQ3hBQUlBQWdBVUVCSUFKMElBTVEwZ0VMaXdFQUlBY2dCRUVDZEdvaUJ5Z0NBQ0FHSUFJZ0JCQ0JEa0VDZEdvb0FnQVFrQWtnQUNBRUlBQW9BZ0FvQWhRUkF3QWdBU0FDSUFNZ0JDQUZJQWNvQWdBUWtBY2dBQ0FCSUFJZ0F5QUVJQWNvQWdBZ0FDZ0NBQ2dDR0JFQ0FDQUNRUWhISUFGQnJBSklja1VFUUNBSEtBSUFRUUU2QUJBUEN5QUJRZTRBUmdSQUlBY29BZ0JCQVRvQUVRc0xDUUFnQUJBV1FYOXFDdzBBSUFBb0FnUW9BZ0FvQWdRTFp3QWdBRUVBTmdJQUlBQWdBQ2tDQkVLQWdINkROd0lFSUFBZ0FDa0NCRUwvLy8vL3VHQ0ROd0lFSUFBZ0FDa0NCRUwvLy8vLy81OS9nemNDQkNBQUlBQXBBZ1JDLy8vLy8vLy9nSGlETndJRUlBQWdBQ2tDQkVMLy8vLy9aNE0zQWdRZ0FCREREZ3NOQUNBQktBSUFJQUlvQWdCR0N3OEFJQUFvQWdoQmdQZy9jVUVBUndzdUFRRi9RUUVoQVNBQVFRUWdBQ2dDQUNnQ3NBRVJBd0FFZnlBQkJTQUFRUVVnQUNnQ0FDZ0NzQUVSQXdBTEN5Z0JBWDhnQUNnQ0FDSUNRUU5NQkVBZ0FDQUNRUUZxTmdJQUlBQWdBa0VDZEdvZ0FUWUNCQXNMTmdBZ0FFSUFOd0lJSUFCQkFEb0FCeUFBSUFFNkFBWWdBRUVBT2dBRklBQkJBVG9BQkNBQVFjd05OZ0lBSUFCQkVHb1Frd0VhQ3hJQUlBQkJDRFlDQ0NBQVFRQTJBZ0FnQUFzT0FDQUFFT29CSUFBUWpnc2dBQXNuQVFGL0lBSkJBRTRFZnlBQUtBSUlJQUpCL3dGeFFRRjBhaThCQUNBQmNVRUFSd1VnQXdzTEpBRUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBQ0FCSUFJUTVBc2dBMEVRYWlRQUN3b0FJQUJCVUdwQkNra0xUUUVDZnlNQVFSQnJJZ01rQUVFc0VDWkI0UUVRdHdFaUJDQUFJQUZCQUJCMEVEa2dCQ0FBSUFKQkFCQjBFRGtnQUNnQ2hBRWdBMEVJYWlBRUVEb2lBQkI4SUFBUVBpQURRUkJxSkFBTGZBRUNmeU1BUVJCcklnY2tBRUVzRUNaQlBoQzNBU0lHSUFJUU9TQUdJQUVRT1FKQUlBTWdBQ0FDRUxZRUVKTU1JZ0ZGRFFBZ0JpQUJFRXdnQVVFQ2NRUkFJQVlnQlJCTUN5QUJRUWh4UlEwQUlBWWdBQ0FFUVFBUWRCQTVDeUFBS0FLRUFTQUhRUWhxSUFZUU9pSUFFSHdnQUJBK0lBZEJFR29rQUF0UEFRRi9RZlFBRUVZaUJDQUFJQUVRb3dZaEFDQUVJQVFvQWdBb0FvUUJFUUFBSWdFZ0FTa0NCRUpBZzBJQ2hEY0NCQ0FFSUFJZ0JDZ0NBQ2dDQkJFQkFDQURCRUFnQUVFQk9nQndDeUFBQ3ljQkFYOGpBRUVRYXlJQkpBQWdBVUVJYWlBQUVPY0RFREVvQWdBaEFDQUJRUkJxSkFBZ0FBc1BBQ0FBSUFBb0FnQW9BZ3dSQUFBTEhBQWdBRUVhVFFSQUlBQkJBblJCNkxJUGFpZ0NBQThMUVpTdkR3c09BQ0FBTFFBSVFjQUFjVUVHZGd1b0FRRUNmd0pBSUFBb0FnUW9Ba3dRSkEwQUlBQW9BZ1FRTXlFRElBQW9BZ1FoQWdKQUFrQWdBd1JBSUFJb0FoQkJyQUpJRFFFTElBSVFNeUVESUFBb0FnUWhBaUFERFFFZ0FpZ0NFQ0FCVGcwQkN5QUNMUUFFQkVBZ0FDZ0NCQ0lCSUFCQkRHcEI1TWdKSUFBb0FpUkJsYjRKUVFBZ0FTZ0NBQ2dDcEFFUkFnQUxJQUFRMkFFUEN5QUNFRE5GRFFBZ0FDZ0NCQ2dDRUVHc0FrZ05BQ0FBRU5rQkN5QUFLQUlvQ3hJQUlBQVFHeWdDQUNBQUtBSUFhMEVEZFFzSkFDQUFRUVJxRUNVTEVRQWdBQ0FCSUFFb0FnQW9BaHdSQVFBTEVRQWdBQ0FCSUFFb0FnQW9BaGdSQVFBTEV3QWdBQ0FCSUFJZ0FDZ0NBQ2dDREJFSEFBdEVBZ0ovQVg0Z0FDQUJOd053SUFBZ0FDZ0NDQ0lDSUFBb0FnUWlBMnVzSWdRM0EzZ2dBVkFnQkNBQlYzSkZCRUFnQUNBRElBR25hallDYUE4TElBQWdBallDYUF0SkFRSi9Jd0JCRUdzaUF5UUFRU3dRSmtINUFSQzNBU0lDSUFFUXdnSVFPU0FBS0FLRUFTQURRUWhxSUFJUU9pSUNFSHdnQWhBK0lBRWdBQ2dDaEFFUTF3VWdBMEVRYWlRQUM0b0JBUUovSXdCQkVHc2lBeVFBQWtBZ0FrVUVRQ0FBSUFFUTJSUU1BUXNDUUNBQkJFQWdBQ2dDSUNBQlJ3MEJDeUFBS0FJa0lnUkZEUUFnQWlBRUlBUVFvQUZCQVdvUTFBVkZEUUVMSUFBZ0FqWUNKQ0FBSUFFMkFpQWdBQzBBS0VVTkFDQUFJQU1nQWhCcElnRVF3UWdoQWlBQkVDQWFJQUFnQWlBQUtBSWdFSjRNQ3lBRFFSQnFKQUFMSVFBZ0FTQUJJQUlRb3dNaUFBUkFJQUFnQXlBQUtBSUFLQUlFRVFFQUN5QUFDd2tBSUFBZ0FSRGdCZ3NVQUNBQUtBSUFJZ0JGQkVCQkFBOExJQUFRRXd2L0JRRUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBQkNIQlEwQUlBQW9BaXhCN2dCR0RRQWdBU0FDUmcwRkFrQkJBU0FDZEVHR0puRkZJQUpCREV0QkFYSnlEUUJCL0F3Z0FVRi9haUlFUWY4ZmNYWkJBWEVnQkVFTFMzSU5BRUVCSVFRZ0EwR3ZCRXdFUUNBRFFkSitha0VEU1EwR0lBTkJmV29pQlVFRVN3UkFJQU5Cd3dOSERRSU1Cd3NnQlVFQmF3NERBUUVCQmdzZ0EwSFFlMm9pQTBFU1N3MEFRUUVnQTNSQndiY2ZjUTBGQ3dKQUFrQWdBRUhLL3dnUWpRRU5BQ0FBUWFLQUNSQ05BUTBBSUFCQno0QUpFSTBCRFFBZ0FFSDlnQWtRalFFTkFDQUFRYXVCQ1JDTkFRMEFJQUJCOHY4SUVJMEJEUUFnQUVIWmdRa1FqUUVOQUNBQVFZbUNDUkNOQVVVTkFRc2dBQ0FCSUFJUXZ3Z05CaUFBSUFFZ0FoQytDQTBHSUFBZ0FTQUNFTHNJRFFZZ0FDQUJJQUlRdUFnTkJrRUJJUVFnQUNBQklBSVF0Z2dOQlNBQlFReEhRUUZ5RFFGQkFDRUVJQUpCZjJvaUFFRUpUdzBGUVlFRElBQkIvd054ZGtFQmNROExJQUpCZjJvaUFrRUtTdzBBUVFBaEJBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQkFXc09DZ0FHQ3dzTENRTUNCUVFCQ3lBQlFRdExEUVpCQVNFRVFRRWdBWFFpQWtHR0huRU5DaUFDUWNBQmNRMEpJQUZCQTBjTkJpQUFRZEdDQ1JDTkFROExJQUZCZjJvaUFVRUxTdzBGUVFFaEJBSkFJQUZCQVdzT0N3WUFCZ1lORFFvS0JnWU1DZ3NnQUVIUmdna1FqUUVOQ1F3TEN5QUJRWHBxSWdGQkJrc05CRUVCSVFRQ1FBSkFJQUZCQW1zT0JRQUtCZ1lNQVFzZ0FDZ0NMRUdQQTBvTkNRd0xDd3dMQ3lBQlFYcHFJZ0ZCQmtzTkEwRUJJUVFDUUNBQlFRRnJEZ1lFQ0FRRUJBb0FDd3dLQ3lBQlFYcHFJZ0ZCQlVzTkFrRUJJUVFDUUNBQlFRSnJEZ1FIQndjSEFBc01DUXNnQVVGNmFpSUJRUVJMRFFGQkFTRUVBa0FnQVVFQmF3NEVBZ1lDQmdBTERBZ0xJQUZCZldvaUFVRUVUUTBCQzBFQUR3c0NRQ0FCUVFGckRnUURBd1lHQUFzZ0FFSFJnZ2tRalFFUEN5QUJRWDV4UVFaSERRRU1CQXNnQUVHNWdna1FqUUVoQkFzZ0JBOExRUUVQQzBFQUR3c2dBRUc1Z2drUWpRRUxDZ0FnQUMwQUNFRUJjUXNLQUNBQUlBRVF0Z0lhQ3lRQUlBQkJDMDhFZnlBQVFSQnFRWEJ4SWdBZ0FFRi9haUlBSUFCQkMwWWJCVUVLQ3dzcEFRRi9Ba0FnQVVFSVJnMEFRUUVoQXlBQVFZTUJTQTBBSUFJb0FnQkZJQUZCQkVaeUR3c2dBd3NIQUNBQUVDQWFDd2tBSUFBZ0FSRENEZ3NYQUNBQUlBRkhCRUFnQUNBQkVCTWdBUkFmRUxzT0N3c01BQ0FBTXdFWVF2Ly9BMUlMTUFFQmZ5TUFRUkJySWdJa0FDQUFLQUlBSVFBZ0FpQUJFTlVLSUFBZ0FoQVRFQklhSUFJUUlCb2dBa0VRYWlRQUN4Z0JBWDlCQVNFQklBQVF2UTRFZnlBQkJTQUFFTHdPQ3d2YUFRRUJmeUFBSUFBb0FneEJBV29pQWpZQ0RDQUJJQUlnQVNnQ0FDZ0NPQkVCQUFKQUFrQWdBQzBBRVEwQUlBRWdBU2dDQUNnQ0hCRUFBQTBBUVFBaEFpQUFJQUFRd1FJUUVTZ0NBQ0FCSUFFb0FnQW9BZ3dSQUFBUXRBa05BUXNDUUNBQUxRQVFSUTBBSUFBUUdFVU5BQ0FBRU1FQ1FRRklEUUJCQUNFQ0lBQkJBQkFSS0FJQUlBRWdBU2dDQUNnQ0RCRUFBQkMwQ1EwQklBQVF3UUpCQWtnTkFDQUFRUUVRRVNnQ0FDQUJJQUVvQWdBb0Fnd1JBQUFRdEFrTkFRc2dBQ0FBRU1FQ0VCRW9BZ0FnQVNBQUxRQVJFS1lISVFJTElBSUxUd0FnQUNBQkVMVUpJQUJCNk5BUE5nSUFJQUJCRkdwQkFFRUFRUUZCQUVFQVFRQVFSU0VCSUFBZ0F6b0FhQ0FBUWV3QWFoQ25CeG9nQUVGL05nSjhJQUJDQURjQ2RDQUJJQUlRandFZ0FBdFBBQ0FESUFFMkFnZ2dBMElBTndJQUlBSWdBellDQUNBQUtBSUFLQUlBQkVBZ0FDQUFLQUlBS0FJQU5nSUFDeUFBRUNVb0FnQWdBaWdDQUJEdkRTQUFFQnNpQUNBQUtBSUFRUUZxTmdJQUMyc0JBWDhDZjBFQklBRWdBU2dDQUNnQ0hCRUFBQ0FDUmcwQUdrRUFJQUVnQVNnQ0FDZ0NIQkVBQUVFUFJ3MEFHa0VBSUFFb0FrQWlBUkEzUlEwQUdnSkFBMEFnQUNBQklBTVFPQ2dDQUNBQ0VPOENEUUVnQTBFQmFpSURJQUVRTjBrTkFBdEJBQThMUVFFTEN5a0FJQUFvQWdSQlAzRkJmR29pQUVFV1RRUkFRWUdBamdNZ0FFSC8vLzhEY1haQkFYRVBDMEVBQ3lrQUlBQW9BZ1JCUDNGQmZXb2lBRUVWVFFSQVFZR0E0d0VnQUVILy8vOEJjWFpCQVhFUEMwRUFDMm9CQW44akFFRVFheUlFSkFBZ0JFRUFOZ0lNSUFCQkRHb2dCRUVNYWlBREVJRUNJQUVFUUNBQUtBSVFHaUFCRUlJQ0lRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFQ2RHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUVDZEdvMkFnQWdCRUVRYWlRQUlBQUxJUUFnQUNBQUtBSUlRWDlxTmdJSUlBQkJFR29pQUNBQUtBSUVRWHhxRU13RkN4SUFJQUFvQWdBaUFBUkFJQUFRc3dzYUN3c1JBQ0FBSUFFb0FnQVFzd3MyQWdBZ0FBdHNBUU4rSUFBZ0FrSWdpQ0lESUFGQ0lJZ2lCSDVDQUh3Z0FrTC8vLy8vRDRNaUFpQUJRdi8vLy84UGd5SUJmaUlGUWlDSUlBSWdCSDU4SWdKQ0lJaDhJQUVnQTM0Z0FrTC8vLy8vRDROOElnRkNJSWg4TndNSUlBQWdCVUwvLy8vL0Q0TWdBVUlnaG9RM0F3QUxSZ0VCZnlBQklBSnNJUVFDUUNBREtBSk1RWDlNQkVBZ0FDQUVJQU1RaGdnaEFBd0JDeUFBSUFRZ0F4Q0dDQ0VBQ3lBQUlBUkdCRUFnQWtFQUlBRWJEd3NnQUNBQmJndXRBUUVCZnlNQVFTQnJJZ1FrQUNBRUlBRTJBaHdDUUNBQUxRQ1FBUVJBSUFCQjBRQWdBaUFFUVJCcVFRRWdCRUVjYWhERkF5SUFJQU1RcXdRaEFTQUFFRFlNQVF0QkxCQW1JQUFRVlNBQ1FkRUFFRkVpQWlBQkVEbEJBQ0VCSUFNUUZrRUFTZ1JBQTBBZ0FpQURJQUVRRVNnQ0FCQk1JQUZCQVdvaUFTQURFQlpJRFFBTEN5QUFLQUtFQVNBRVFRaHFJQUlRT2lJQUVId2dBQkErSUFJb0FnUWhBUXNnQkVFZ2FpUUFJQUVMc0FFQkJIOGpBRUVRYXlJREpBQkJNa0VySUFJYklRVWdBRUVnRU1RRElRUWdBYndoQmdKQUlBSkZCRUFnQUVFV0lBVWdCQ0FHRUprSUlnSU5BUXRCTEJBbUlnSWdBQkJWSUFRZ0JSQlJJUVFnQXlBQ05nSU1JQVFnQmhCTUlBQkJrQUpxSUFOQkNHb2dCQkE2SWdJUWZTQUNFRDRnQTBFV05nSUVJQUJCdEFKcUlBTkJCR29RUHlBRFFReHFFRWNnQUVIb0FHb2dBeWdDREJDTUFTQURLQUlNS0FJRUlRSUxJQU5CRUdva0FDQUNDN2tCQVFOL0l3QkJFR3NpQVNRQUlBRkJGRFlDREFKQUlBQkIzQUpxSWdJZ0FVRU1haEEvRUJaRkJFQkJMQkFtSWdNZ0FCQlZRUUJCRkJCUkdpQUJJQU0yQWd3Z0FVRVVOZ0lJSUFJZ0FVRUlhaEEvSUFGQkRHb1FSeUFBUVpBQ2FpQUJRUWhxSUFFb0Fnd1FPaUlDRUgwZ0FoQStJQUJCNkFCcUlBRW9BZ3dRakFFZ0FTZ0NEQ0VBREFFTElBRkJGRFlDQ0NBQklBSWdBVUVJYWhBL0VKQUJLQUlBSWdBMkFnd0xJQUFvQWdRaEFDQUJRUkJxSkFBZ0FBc3hBUUYvSUFBUXhRUWdBQ2dDQUFSQUlBQWdBQ2dDQUJEK0N5QUFFQnNhSUFBb0FnQWhBU0FBRUxjQ0dpQUJFQ29MQzRRQkFRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUNJQUJCbUFScUlnRWdBa0VNYWhEckREWUNDQ0FDRUlVRU5nSUFBa0FnQWtFSWFpQUNFSWdCQkVBZ0FTQUNRUXhxRU1jREtBSUFJUUFNQVFzZ0FFRTRhaUlBSUFJb0Fnd1FRaUFBSUFJb0Fnd1Fud3doQUNBQklBSkJER29ReHdNZ0FEWUNBQXNnQWtFUWFpUUFJQUFMSEFBZ0FFR1UyeEUyQWdBZ0FFRWNhaENJQnlBQVFSQnFFRFlnQUF1RUFRRUVmeU1BUVJCcklnTWtBQ0FEUVF4cUlRUURRQ0FFSUFFdEFBQWlCVG9BQUFKL0lBUkJBV29nQWtFQmFpSUNRUVJIRFFBYUlBQWdBeWdDREJCTVFRQWhBaUFEUVF4cUN5RUVJQUZCQVdvaEFTQUZEUUFMSUFKQkFVNEVRQ0FDUVFOTUJFQWdCRUVBUVFRZ0Ftc1EzUUVhQ3lBQUlBTW9BZ3dRVEFzZ0EwRVFhaVFBQ3c4QUlBRWdBaUFBS0FJSVFYOFFlQXNLQUNBQUlBRTJBcFFCQ3pVQkFuOGdBQ2dDQUNJREtBSUFJZ0pCZ0FoTUJFQWdBQ2dDQkNnQ0FDRUFJQU1nQWtFQmFqWUNBQ0FBSUFKcUlBRTZBQ0FMQ3hBQUlBQW9BZ1FnQUNnQ0FHdEJCWFVMR0FBZ0FFRjdhaUlBUVFaTkJFQWdBRUVCY1VVUEMwRUFDd01BQUFzZkFDQUFLUUlZUW9DQWdJQ0FnSUQrL3dDRFFvQ0FnSUNBZ0lEKy93QlNDdzRBSUFBdkFRcEJnQTl4UVFCSEN4a0FJQUFRd1FFRVFDQUFJQUVRdkFFUEN5QUFJQUVRMUFFTEVnQWdBQkFqS0FJQUlBQW9BZ0JyUVFKMUN5a0FJQUFnQUNrQ0JFTC8vLytIZjRNM0FnUWdBQkREQWlBQUlBQXBBZ1JDLy8rQitGK0ROd0lFQ3hNQUlBQWdBQ2dDQUVHQWdJRCtlWEUyQWdBTEN3QWdBQ0FCSUFJUXhBSUxGd0FnQUNnQ1BDSUFSUVJBUVFBUEN5QUFFR0JCQVVvTERBQWdBQ2dDUENBQkVQVUpDNEVDQVFGL0FrQWdBU0FCS0FJQUtBSndFUUFBUlEwQUFuOENRQ0FBS0FJVUlnSkJBMFlFZjBFQklBRWdBU2dDQUNnQ0xCRUFBQ2tDQkVJL2cwSURVUTBDR2lBQUtBSVVCU0FDQzBFQlJ3MEFJQUVnQVNnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElFVWcwQVFRRWdBU0FCS0FJQUtBSXNFUUFBTFFBSlFRRnhSUTBCR2dzZ0FDZ0NGQ0lDUVFSR0JIOGdBU0FCS0FJQUtBSXNFUUFBS1FJRVFqK0RRZ05SQkVCQkFTQUJJQUVvQWdBb0Fpd1JBQUF0QUFoQkVIRU5BaG9MSUFBb0FoUUZJQUlMUVExSERRRkJBQ0FCSUFFb0FnQW9BaXdSQUFBcEFnUkNQNE5DQkZJTkFCb2dBU0FCS0FJQUtBSXNFUUFBTFFBSVFZQUJjVVVMRHd0QkFBc0lBQ0FBRUpvQ0dnc0tBQ0FBS0FJOFFRRnhDeWdCQVg4Z0FCRFJEaUFBS0FJQUJFQWdBQ2dDRUJvZ0FDZ0NBQ0VCSUFBUWlBTWFJQUVRS2dzTEtRRUNmeU1BUVJCcklnRWtBQ0FCUVFocUlnSWdBQkQzQ1NBQ0tBSUFJUUFnQVVFUWFpUUFJQUFMS3dFQmZ5TUFRUkJySWdFa0FDQUJRUWhxSUFBUUV5QUFFQjlxRURFb0FnQWhBQ0FCUVJCcUpBQWdBQXNnQUNBQUVLc1JJQUFnQVNnQ0NEWUNDQ0FBSUFFcEFnQTNBZ0FnQVJDT0N3c0pBQ0FBUVFBMkFnQUwyUUVCQW44akFFRVFheUlGSkFBZ0JTQUJOZ0lJQWtBZ0FDQUZRUWhxRU1jQkJFQWdBaUFDS0FJQVFRWnlOZ0lBUVFBaEFRd0JDeUFEUVlBUUlBQVFwUUVpQVJEYUFrVUVRQ0FDSUFJb0FnQkJCSEkyQWdCQkFDRUJEQUVMSUFNZ0FSRGxCQ0VCQTBBQ1FDQUJRVkJxSVFFZ0FCQzlBUm9nQUNBRlFRaHFFUFlCUlNBRVFRSkljZzBBSUFOQmdCQWdBQkNsQVNJR0VOb0NSUTBDSUFSQmYyb2hCQ0FESUFZUTVRUWdBVUVLYkdvaEFRd0JDd3NnQUNBRlFRaHFFTWNCUlEwQUlBSWdBaWdDQUVFQ2NqWUNBQXNnQlVFUWFpUUFJQUVMREFBZ0FTQUNLQUlBTmdJQUM5a0JBUUovSXdCQkVHc2lCU1FBSUFVZ0FUWUNDQUpBSUFBZ0JVRUlhaEMrQVFSQUlBSWdBaWdDQUVFR2NqWUNBRUVBSVFFTUFRc2dBMEdBRUNBQUVKOEJJZ0VReXdKRkJFQWdBaUFDS0FJQVFRUnlOZ0lBUVFBaEFRd0JDeUFESUFFUTVnUWhBUU5BQWtBZ0FVRlFhaUVCSUFBUXRRRWFJQUFnQlVFSWFoRHdBVVVnQkVFQ1NISU5BQ0FEUVlBUUlBQVFud0VpQmhETEFrVU5BaUFFUVg5cUlRUWdBeUFHRU9ZRUlBRkJDbXhxSVFFTUFRc0xJQUFnQlVFSWFoQytBVVVOQUNBQ0lBSW9BZ0JCQW5JMkFnQUxJQVZCRUdva0FDQUJDME1CQVg4akFFRVFheUlFSkFBZ0JDQUJOZ0lNSUFRZ0F6WUNDQ0FFSUFSQkRHb1E5UUloQVNBQUlBSWdCQ2dDQ0JDb0V5RUFJQUVROUFJZ0JFRVFhaVFBSUFBTExnQUNRQ0FBS0FJRVFjb0FjU0lBQkVBZ0FFSEFBRVlFUUVFSUR3c2dBRUVJUncwQlFSQVBDMEVBRHd0QkNnc09BQ0FBS0FJQUlBRVFsd0VRTHd1QkFnSUNmd1IrSXdCQkVHc2lBaVFBSUFHOUlnVkNnSUNBZ0lDQWdJQ0FmNE1oQndKK0lBVkMvLy8vLy8vLy8vLy9BSU1pQkVLQWdJQ0FnSUNBZUh4Qy8vLy8vLy8vLysvL0FGZ0VRQ0FFUWp5R0lRWWdCRUlFaUVLQWdJQ0FnSUNBZ0R4OERBRUxJQVJDZ0lDQWdJQ0FnUGovQUZvRVFDQUZRanlHSVFZZ0JVSUVpRUtBZ0lDQWdJREEvLzhBaEF3QkN5QUVVQVJBUWdBTUFRc2dBaUFFUWdBZ0JFS0FnSUNBRUZvRWZ5QUVRaUNJcDJjRklBV25aMEVnYWdzaUEwRXhhaEQzQVNBQ0tRTUFJUVlnQWlrRENFS0FnSUNBZ0lEQUFJVkJqUGdBSUFOcnJVSXdob1FMSVFRZ0FDQUdOd01BSUFBZ0JDQUhoRGNEQ0NBQ1FSQnFKQUFMbFFFQkFuOGpBRUVRYXlJRUpBQUNmeUFBTFFDUUFRUkFJQUFnQVNBQ0lBSVFRQ0FDRURJZ0FCQ3hGQkQxQXd3QkMwRXNFQ1lnQUJCVklBRkIwQUFRVVNFRFFRQWhBU0FDRUJaQkFFb0VRQU5BSUFNZ0FpQUJFQkVvQWdBUU9TQUJRUUZxSWdFZ0FoQVdTQTBBQ3dzZ0FDZ0NoQUVnQkVFSWFpQURFRG9pQUJCOElBQVFQaUFES0FJRUN5RUFJQVJCRUdva0FDQUFDMkFCQW44Q1FBSkFBa0FnQUVIb0FHb2dBUkF2SWdFb0Fnd2lCRUZwYWlJQVFRbExEUUJCQVNBQWRFSGpBSEVOQVNBQVFRZEhCRUFnQUVFSlJ3MEJRUUVoQXd3Q0N5QUNJUU1NQVFzZ0JFSHVLVWNOQVFzZ0FTQURFQzhoQXdzZ0F3dFBBUUYvSXdCQjRBQnJJZ0FrQUNBQVFkZ0Fha0VCRVBVQklnUkJBQkFQSUFFUWR5QUVJQUJCREVFQ1FRRkJBRUVBUVFBUVJTSUJJQUlnQXhEUUFpRUNJQUVRTlJvZ0FFSGdBR29rQUNBQ0MwZ0JBWDhqQUVFUWF5SUNKQUFnQWlBQVFReHFJZ0FRUUNBQUVESWdBUkRpRkRZQ0NDQUNJQUFRTWpZQ0FDQUNRUWhxSUFJUWx3SUVRQ0FBSUFFUStRMExJQUpCRUdva0FBc1JBQ0FBS1FJRVFyK0FnSUFJZzBJQ1VRc05BQ0FBSUFBZ0FSQmlFS29JQzZFQkFRSi9Jd0JCRUdzaUF5UUFJQU1nQWpZQ0NDQURJQUUyQWd4QkFDRUFBa0FnQVNBQ2NrVU5BQUpBQWtBZ0FVVU5BQ0FCSUFFb0FnQW9BaGdSQUFBaUFFVU5BQ0FBS0FKb1JRMEJDMEdvQVJCR0lnUVEvUU1oQUNBQlJRMEFJQUFnQkNnQ0FDZ0N2QUVSQUFBZ0EwRU1haERjQVNBREtBSUlJUUlMSUFKRkRRQWdBQ0FBS0FJQUtBSzhBUkVBQUNBRFFRaHFFTndCQ3lBRFFSQnFKQUFnQUF0TEFRRi9Jd0JCRUdzaUFpUUFBa0FnQUNnQ0JDQUFFQnNvQWdCSkJFQWdBQkFiSUFBb0FnUWdBUkNsQlNBQUlBQW9BZ1JCQ0dvMkFnUU1BUXNnQUNBQkVLSU9DeUFDUVJCcUpBQUxNUUVCZnlBQUtBSUFLQUlBSWdFRWZ5QUJCU0FBS0FJSUlBQW9BZ1FvQWdBaUFDQUFLQUlBS0FKNEVRQUFFTDhCQ3dzTEFDQUFJQUVnQWhDNkJRdWdBUUVFZnlNQVFSQnJJZ2NrQUFKQUlBQkZEUUFnQkNnQ0RDRUdJQUlnQVdzaUNFRUJUZ1JBSUFBZ0FTQUlFSlFGSUFoSERRRUxJQVlnQXlBQmF5SUJhMEVBSUFZZ0FVb2JJZ0ZCQVU0RVFDQUFJQWNnQVNBRkVPd05JZ1VRRXlBQkVKUUZJUVlnQlJBZ0dpQUJJQVpIRFFFTElBTWdBbXNpQVVFQlRnUkFJQUFnQWlBQkVKUUZJQUZIRFFFTElBUVFuQTBnQUNFSkN5QUhRUkJxSkFBZ0NRc0hBQ0FBSUFGR0N4b0FJQUFnQUNrQ0JFTEEvLy8vZDROQ2dvQ0FnQWlFTndJRUMwZ0FJQUVnQVNnQ0FDZ0NQQkVBQUNBQklBRW9BZ0FvQWd3UkFBQWdBU0FCS0FJQUtBSXdFUUFBSUFFZ0FTZ0NBQ2dDWEJFQUFDQUJJQUVvQWdBb0Ftd1JBQUFnQWhENUNBc1NBQ0FBRUJzb0FnQWdBQ2dDQUd0QkRHMExCd0FnQUVFd2FndGVBUUYvQWtBQ1FDQUJRUVZOQkVCQjhNa1BJUUlDUUFKQUFrQUNRQ0FCUVFGckRnVUZBQUVDQXdZTFFmckpEeUVDREFRTFFZTEtEeUVDREFNTFFaUEtEeUVDREFJTFFhUEtEeUVDREFFTFFhcktEeUVDQ3lBQUlBSVF1Z01MQ3pFQkFYOGdBQkRmQXlBQUtBSUFCRUFnQUNBQUtBSUFFS0FPSUFBUUd4b2dBQ2dDQUNFQklBQVExZ0lhSUFFUUtnc0xEQUFnQVNBQ0VJc2FRUjkyQ3c0QUlBQWdBUkNjR2lBQkVPb0JDeEVBSUFBeEFCdENHSVpDZ0lDQStBOVNDeEVBSUFBb0FoUkJnT0FCY1VHQWdBRkhDeUlBSUFCQkFEWUNCQ0FBUVlTd0R6WUNBQ0FBUVFBNkFBd2dBRUVCTmdJSUlBQUw1UU1CQW44Z0FFSFlrZzgyQWdBZ0FDQUJMUUFBSWdJZ0FDZ0NCRUdBZm5GeUlnTTJBZ1FnQUNBRFFmOWhjU0FCTHdHUUFVRUlkRUdBSG5GeUlnTTJBZ1FnQUNBRFFmK2ZmSEVnQVM4QmtBRkJDSFJCZ09BRGNYSWlBellDQkNBQUlBTkIvLytEZjNFZ0FTMEFrUUZCRDNGQkVIUnlJZ00yQWdRZ0FDQURRZi8vdjM1eElBRXZBWkFCUVFsMFFZQ0FnQUZ4Y2pZQ0JDQUJLQUtVQVNFRElBQkJBRFlDU0NBQVFnQTNBa0FnQUNBRE5nSThJQUFnQVNnQ3JBRTJBbEFDUUNBQ1FRNUdCRUFnQUNBQktBSUVOZ0pNREFFTElBQkJ6QUJxRUlvREN5QUFRUWhxSUFGQkNHcEJOQkE5R2lBQktBS1lBU0lDQkVBQ1FDQUNMUUFFUVJKR0JFQWdBRUVTT2dBRUlBQWdBU2dDbUFFb0FrQTJBa0FNQVFzZ0FDQUNLQUpBTmdKQUN5QUFJQUVvQXBnQklnSWdBaWdDQUNnQ0ZCRUFBQkFURU1JQk5nSklDd0pBQWtBZ0FTMEFrUUZCRUhGQkJIWkZEUUFnQVNnQ3JBRWlBa1VOQUNBQ0VHQkJBVWdOQUNBQktBS3NBVUVBRU5ZQklnSkJFRWNnQVNnQ0FDSUJRUUZIY2tVRVFDQUFRUU02QUFRTUFnc2dBa0VJUnlJQ0lBRkJDVWR5UlFSQUlBQkJCVG9BQkF3Q0N5QUNJQUZCQ0VkeURRQWdBRUVFT2dBRUlBQWdBQ2tDREVMLy8vOUhnemNDREFzZ0FBOExJQUFnQUNrQ0RFTC8vLzlIZ3pjQ0RDQUFDOUVKQVFKL0l3QkI0QUJySWdja0FDQUhRUWhxSUFNUXRBTWlCaUFFRUpBRUlBWWdBeWdDbEFFUWh3WWdBQ0FCSUFZb0Fqd1FsQVFDUUNBR0VJVUJCRUFnQUNnQ0tCRExCeUFBS0FJb0VKa0dBa0FnQXlnQ3JBRWlCQVJBSUFRUVlFRUVSZzBCQ3lBQUlBRkJ2cE1MSUFJUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBeWdDckFGRkRRRUNRQ0FES0FJQUVKSUVSUTBBSUFNb0Fxd0JRUUFRMWdGQkVFWU5BQ0FES0FLc0FVRUFFTllCUVNCR0RRQWdBeWdDckFGQkFCRFdBVUhBQUVZTkFDQUFJQUZCM0pNTElBSVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQXlnQ0FCQ21Ba1VOQVNBREtBS3NBVUVBRU5ZQlFRaEdEUUVnQXlnQ3JBRkJBQkRXQVVFZ1JnMEJJQUFnQVVHUmxBc2dBaEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBTW9BcXdCSWdSRkRRQWdCQkJnUlEwQUlBQWdBVUhBbEFzZ0FoQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDMEVBSVFRQ1FDQUFJQUVnQWlBR0xRQUVFTDRIRFFBQ1FDQUZCRUFnQUNBQlFkdVVDeUFGSUFBb0FnQW9BdkFCRVFRQURBRUxJQUFnQVNBQ0lBWVF2dzhMSUFBZ0FTQUdJQUlRelE4Z0FDQUJJQVlnQWhES0R5QUFJQUVnQmlBQ0VNd1BJQUFnQVNBR0lBSVF5dzhnQUNBQklBWkJBQkRmQ1FKQUlBWVFHeWtDQkVJL2cwSUNVZzBBSUFaQkVpQUdLQUlBS0FLd0FSRURBRVVOQUNBQUlBRkI1NVFMUWFLVkMwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FHRUJzcEFnUkNQNE5DQlZFTkFDQUdFQnNwQWdSQ1A0TkNCbEVOQUNBR0VMQUNCRUFnQUNBQlFhS1ZDMEd1NmdrZ0FDZ0NBQ2dDVUJFRUFBc2dCaEN2QWdSQUlBQWdBVUdpbFF0QjYrb0pJQUFvQWdBb0Fsd1JCQUFMSUFZUXhnSkZEUUFnQUNBQlFhS1ZDMEdwNndrZ0FDZ0NBQ2dDYUJFRUFBc0NRQ0FHRUJzcEFnUkNQNE5DQjFJTkFDQUdFTFFIUlEwQUlBQWdBVUdpbFF0QnJKVUxRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFKQjE4VUtFSndFUlEwQUlBTXRBRUZGQkVBZ0EwRkFheTBBQUVVTkFRc2dBQ0FCUWVlVkMwR3dsZ3RCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FrSEt4UW9RbkFSRkRRQWdBeWdDZUVVTkFDQUFJQUZCd1pZTFFiQ1dDMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQnlBQUlBRWdBaUFHRUJzZ0EwRThhaEMrRHlJRE5nSUVJQU5GQkVBZ0FDQUJJQUlRbUFRTElBQWdCaEFiRUtzUEFrQUNRQ0FHRUlRR0JFQWdBQ0FCSUFZUUd5QUdLQUk4SUFWQkFCQzhCeUFBSUFFZ0JoQWJFT0VKR2lBQUlBRWdCaERGRHlBQUlBRWdBaUFHSUFkQkJHb1F3ZzhnQlVVTkFTQUFJQUZCQVVINEFFSGg0Z2xCMjVRTEVDZ2dBQ0FCUVFoQnJBSkJBRUhibEFzUUtBd0JDeUFIS0FJRUlnTkZCRUFnQnlBQUlBRWdBaUFHRUtvUElnTTJBZ1FNQWdzZ0JpQURJQU1vQWdBb0FqQVJBQUFRd0FGRkRRQWdBQ0FCUWUyV0MwSGx4d29nQnlnQ0JDSURJQU1vQWdBb0Fnd1JBQUFRRTBFQUlBQW9BZ0FvQXFBQkVRSUFDeUFIS0FJRUlRTUxJQU5GRFFBQ1FDQUFJQUVnQlFSL0lBTWdBeWdDQUNnQ0pCRUFBQ0lEUlEwQklBQWdBU0FGSUFNUXFROGhCQ0FIS0FJRUJTQURDeEM0QnlBQUlBRWdCeWdDQkJDMER3d0JDeUFBSUFGQmg1Y0xJQUlRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0JoQTFHaUFIUWVBQWFpUUFJQVFMUVFBQ1FDQUFMUUNrQVEwQUFuOUJBU0FDRUtJSFJRMEFHaUFDRUxrRkMwVU5BQ0FBSUFGQjFiNEtRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzTERRQWdBQzBBQ0VFQ2NVRUJkZ3NKQUNBQUlBRVFsd0lMRWdBZ0FCQWJLQUlBSUFBb0FnQnJRUVIxQzBzQUFrQWdBQzBBREVFRWNVVU5BQ0FCUlFSQUlBQkIrQXdRdGdJYURBRUxJQUFnQVJDZ0FSRGlCeUFBSUFFUXRnSWFDeUFBTFFBTVFRSnhCRUFnQVVHbzlSRW9BZ0FRendZYUN3dW9BUUFDUUNBQlFZQUlUZ1JBSUFCRUFBQUFBQUFBNEgraUlRQWdBVUgvRDBnRVFDQUJRWUY0YWlFQkRBSUxJQUJFQUFBQUFBQUE0SCtpSVFBZ0FVSDlGeUFCUWYwWFNCdEJnbkJxSVFFTUFRc2dBVUdCZUVvTkFDQUFSQUFBQUFBQUFCQUFvaUVBSUFGQmczQktCRUFnQVVIK0Iyb2hBUXdCQ3lBQVJBQUFBQUFBQUJBQW9pRUFJQUZCaG1nZ0FVR0dhRW9iUWZ3UGFpRUJDeUFBSUFGQi93ZHFyVUkwaHIraUM5WURBUU4vSXdCQklHc2lDQ1FBSUFnZ0FqWUNFQ0FJSUFFMkFoZ2dDRUVJYWlBREVGd2dDRUVJYWhDSkFpRUpJQWhCQ0dvUVdTQUVRUUEyQWdCQkFDRUNBa0FEUUNBR0lBZEdJQUp5RFFFQ1FDQUlRUmhxSUFoQkVHb1F4d0VOQUFKQUlBa2dCaWdDQUJEbEJFRWxSZ1JBSUFaQkJHb2lBaUFIUmcwQ1FRQWhDZ0ovSUFrZ0FpZ0NBQkRsQkNJQlFjVUFSaUFCUWY4QmNVRXdSbkpGQkVBZ0JpRUNJQUVNQVFzZ0JrRUlhaUFIUmcwRElBRWhDaUFKSUFZb0FnZ1E1UVFMSVFFZ0NDQUFJQWdvQWhnZ0NDZ0NFQ0FESUFRZ0JTQUJJQW9nQUNnQ0FDZ0NKQkVPQURZQ0dDQUNRUWhxSVFZTUFRc2dDVUdBd0FBZ0JpZ0NBQkRhQWdSQUEwQUNRQ0FISUFaQkJHb2lCa1lFUUNBSElRWU1BUXNnQ1VHQXdBQWdCaWdDQUJEYUFnMEJDd3NEUUNBSVFSaHFJQWhCRUdvUTlnRkZEUUlnQ1VHQXdBQWdDRUVZYWhDbEFSRGFBa1VOQWlBSVFSaHFFTDBCR2d3QUFBc0FDeUFKSUFoQkdHb1FwUUVRM2dFZ0NTQUdLQUlBRU40QlJnUkFJQVpCQkdvaEJpQUlRUmhxRUwwQkdnd0JDeUFFUVFRMkFnQUxJQVFvQWdBaEFnd0JDd3NnQkVFRU5nSUFDeUFJUVJocUlBaEJFR29ReHdFRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFnb0FoZ2hBQ0FJUVNCcUpBQWdBQXZXQXdFRGZ5TUFRU0JySWdna0FDQUlJQUkyQWhBZ0NDQUJOZ0lZSUFoQkNHb2dBeEJjSUFoQkNHb1ErZ0VoQ1NBSVFRaHFFRmtnQkVFQU5nSUFRUUFoQWdKQUEwQWdCaUFIUmlBQ2NnMEJBa0FnQ0VFWWFpQUlRUkJxRUw0QkRRQUNRQ0FKSUFZc0FBQVE1Z1JCSlVZRVFDQUdRUUZxSWdJZ0IwWU5Ba0VBSVFvQ2Z5QUpJQUlzQUFBUTVnUWlBVUhGQUVZZ0FVSC9BWEZCTUVaeVJRUkFJQVloQWlBQkRBRUxJQVpCQW1vZ0IwWU5BeUFCSVFvZ0NTQUdMQUFDRU9ZRUN5RUJJQWdnQUNBSUtBSVlJQWdvQWhBZ0F5QUVJQVVnQVNBS0lBQW9BZ0FvQWlRUkRnQTJBaGdnQWtFQ2FpRUdEQUVMSUFsQmdNQUFJQVlzQUFBUXl3SUVRQU5BQWtBZ0J5QUdRUUZxSWdaR0JFQWdCeUVHREFFTElBbEJnTUFBSUFZc0FBQVF5d0lOQVFzTEEwQWdDRUVZYWlBSVFSQnFFUEFCUlEwQ0lBbEJnTUFBSUFoQkdHb1Fud0VReXdKRkRRSWdDRUVZYWhDMUFSb01BQUFMQUFzZ0NTQUlRUmhxRUo4QkVNUUdJQWtnQml3QUFCREVCa1lFUUNBR1FRRnFJUVlnQ0VFWWFoQzFBUm9NQVFzZ0JFRUVOZ0lBQ3lBRUtBSUFJUUlNQVFzTElBUkJCRFlDQUFzZ0NFRVlhaUFJUVJCcUVMNEJCRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUlLQUlZSVFBZ0NFRWdhaVFBSUFBTHJRRUJCSDhqQUVFUWF5SUlKQUFDUUNBQVJRMEFJQVFvQWd3aEJpQUNJQUZySWdkQkFVNEVRQ0FBSUFFZ0IwRUNkU0lIRUpRRklBZEhEUUVMSUFZZ0F5QUJhMEVDZFNJQmEwRUFJQVlnQVVvYklnRkJBVTRFUUNBQUlBZ2dBU0FGRUo0TElnVVFFeUFCRUpRRklRWWdCUkFnR2lBQklBWkhEUUVMSUFNZ0Ftc2lBVUVCVGdSQUlBQWdBaUFCUVFKMUlnRVFsQVVnQVVjTkFRc2dCQkNjRFNBQUlRa0xJQWhCRUdva0FDQUpDeFlBSUFBZ0FTQUNJQU1nQUNnQ0FDZ0NNQkVKQUJvTGhnRUJBWDhnQVNnQ1RFRUFTQVJBQWtBZ0FTd0FTeUFBUWY4QmNVWU5BQ0FCS0FJVUlnSWdBU2dDRUU4TkFDQUJJQUpCQVdvMkFoUWdBaUFBT2dBQUR3c2dBU0FBRUljSUR3c0NRQUpBSUFFc0FFc2dBRUgvQVhGR0RRQWdBU2dDRkNJQ0lBRW9BaEJQRFFBZ0FTQUNRUUZxTmdJVUlBSWdBRG9BQUF3QkN5QUJJQUFRaHdnTEMyUUJBbjhDUUFKQUlBQWdBeWdDQUJESUFTQUFJQUlvQWdBUXlBRnJJZ1ZCQUVvRVFDQUNJUVFnQXlFQ0RBRUxJQU1oQkNBRlFYOUtEUUVMSUFRZ0FDQUJJQVFvQWdBaUFTQUFJQUFnQVJCaUlBQWdBaWdDQUJESUFSQ3hBUkR4QkRZQ0FBc0xyUUVCQVg4akFFRWdheUlFSkFCQkxCQW1JQUFRVlNBQ0lBRVFVU0VCSUFRZ0F4QkFOZ0lZSUFRZ0F4QXlOZ0lRSUFSQkdHb2dCRUVRYWhBZUJFQURRQ0FFS0FJWUtBSUVJUUlDUUNBRUtBSVlMUUFBQkVBZ0FTQUNFRGtNQVFzZ0FTQUNFRXdMSUFSQkdHb1E3UU1nQkNBREVESTJBaEFnQkVFWWFpQUVRUkJxRUI0TkFBc0xJQUFvQW9RQklBUkJDR29nQVJBNklnQVFmQ0FBRUQ0Z0FTZ0NCQ0VBSUFSQklHb2tBQ0FBQzhZQkFnVi9BWDRqQUVFUWF5SURKQUJCTWtFcklBSWJJUVVnQUVIQUFCREVBeUVFSUFHOUlnaENJSWluSVFZZ0NLY2hCd0pBSUFKRkJFQWdBRUVXSUFVZ0JDQUhJQVlRbXd3aUFnMEJDMEVzRUNZaUFpQUFFRlVnQkNBRkVGRWhCQ0FESUFJMkFnd2dCQ0FIRUV3Z0JDQUdFRXdnQUVHUUFtb2dBMEVJYWlBRUVEb2lBaEI5SUFJUVBpQURRUlkyQWdRZ0FFRzBBbW9nQTBFRWFoQS9JQU5CREdvUVJ5QUFRZWdBYWlBREtBSU1FSXdCSUFNb0Fnd29BZ1FoQWdzZ0EwRVFhaVFBSUFJTDlRRUJCSDhqQUVFUWF5SUNKQUFnQWtFV05nSUlBa0FnQUVIY0Ftb2lBeUFDUVFocUVEOFFGa0VCVGdSQUEwQWdBa0VXTmdJSUlBSWdBeUFDUVFocUVEOGdCQkFSS0FJQUlnVTJBZ3dnQlVFQUVDOGdBVVlOQWlBQ1FSWTJBZ2dnQkVFQmFpSUVJQU1nQWtFSWFoQS9FQlpJRFFBTEMwRXNFQ1lpQkNBQUVGVkJBRUVXRUZFaEJTQUNJQVEyQWd3Z0JTQUJFRXdnQWtFV05nSUlJQU1nQWtFSWFoQS9JQUpCREdvUVJ5QUFRWkFDYWlBQ1FRaHFJQUlvQWd3UU9pSURFSDBnQXhBK0lBQkI2QUJxSUFJb0Fnd1FqQUVnQVVIQUFFY05BQ0FBUVFvUUlRc2dBaWdDRENnQ0JDRUFJQUpCRUdva0FDQUFDeDRBSUFBUXRBVWdBUVJBSUFBZ0FSRDhCQ0FBSUFFZ0FoQ1NGUXNnQUFzUEFDQUFLQUlFSUFBb0FnQVF2d0VMUlFFQmZ5TUFRU0JySWdJa0FDQUNJQUVRa2dNMkFoQVE1d0VnQWtFWWFpQUFJQUVnQWtFUWFpQUNRUWhxRU04TUlBSkJHR29RUkNFQUlBSkJJR29rQUNBQVFRUnFDd2tBSUFBZ0FSRFpCZ3NNQUNBQUlBRVEzd0pCRjBZTEhnRUJmeUFBRUpZRkJIOGdBZ1VnQUNBQUtBSVFFUHNHSUFFUXB3WUxDeElBSUFBUUd5Z0NBQ0FBS0FJQWEwRUZkUXNQQUNBQUlBQW9BZ1JCQkdvUXZBRUxwd0lCQm44akFFRXdheUlESkFBQ1FDQUFLQUlJSUFBUUl5Z0NBRWNOQUNBQVFRaHFJUVFnQUVFRWFpRUZJQUFvQWdRaUFpQUFLQUlBSWdaTEJFQWdCQ0FDSUFRb0FnQWdBaUFDSUFaclFRSjFRUUZxUVg1dFFRSjBJZ1JxRUpFRU5nSUFJQVVnQlNnQ0FDQUVhallDQUF3QkN5QURJQUFRSXlnQ0FDQUFLQUlBYTBFQmRUWUNHQ0FEUVFFMkFpd2dBMEVZYWlBRFFSaHFJQU5CTEdvUVVpZ0NBQ0lDSUFKQkFuWWdBQkFqRVBJQ0lRSWdBMEVRYWlBQUtBSUVFREVoQmlBRFFRaHFJQUFvQWdnUU1TRUhJQUlnQmlnQ0FDQUhLQUlBRVB3R0lBQWdBaEF1SUFVZ0FrRUVhaEF1SUFRZ0FrRUlhaEF1SUFBUUl5QUNFQ01RTGlBQ0VKRURDeUFBRUNNZ0FDZ0NDQ0FCRVBrQklBQWdBQ2dDQ0VFRWFqWUNDQ0FEUVRCcUpBQUxXUUVCZnlNQVFTQnJJZ0lrQUNBQ0lBQWdBa0VJYWlBQkVDSWlBQkRERnpZQ0dDQUFFQmthSUFJUWhRUTJBZ2hCQUNFQUlBSkJHR29nQWtFSWFoQzRBMFVFUUNBQ1FSaHFFRVFvQWhBaEFBc2dBa0VnYWlRQUlBQUx2Z3NCQkg4akFFSFFBV3NpQlNRQUlBVWdBellDeUFFZ0JTQUNOZ0xNQVFKQUlBSWdBaWdDQUNnQ2VCRUFBQ0lHSUFZb0FnQW9BaHdSQUFCQkVFWU5BQ0FESUFNb0FnQW9BbmdSQUFBaUJpQUdLQUlBS0FJY0VRQUFRUkJHRFFBQ1FDQUJRZWwrYWtFQlN3MEFJQUJCc2Y4SUVJMEJSUTBBSUFJUThnRUVRQ0FDSUFJb0FnQW9BbmdSQUFBaUJpQUdLQUlBS0FKVUVRQUFJZ1lnQmlnQ0FDZ0N2QUVSQUFBTkFnc2dBeER5QVFSQUlBTWdBeWdDQUNnQ2VCRUFBQ0lHSUFZb0FnQW9BbFFSQUFBaUJpQUdLQUlBS0FLOEFSRUFBQTBDQ3dKQUlBSVE4Z0ZGRFFBZ0F5QURLQUlBS0FLQUFSRUFBQkNtQWtVTkFDQUNJQUlvQWdBb0FuZ1JBQUFoQnlBQUlBSWdBaWdDQUNnQ2VCRUFBQkR3Q0t3Z0JCRHhDQ0VHSUFVZ0FDQUVRWlFCUVFFZ0FpQUZRZkFBYWtFTFFRQkJBVUVBUVFCQkFCQkZJZ0lRL0FFaUNEWUN6QUVnQWhBMUdpQUFRUW9nQXhDWEJTRUNJQVVnQkNrQ0NEY0RHQ0FGSUFRcEFnQTNBeEFnQlNBQVFaa0JJQUlnQmlBRlFSQnFFTThESWdJMkFzZ0JJQVVnQkNrQ0NEY0RDQ0FGSUFRcEFnQTNBd0FnQUNBRVFaTUJRUUVnQUNBQklBZ2dBaUFGRU04RElBY1EvQUVoQnd3Q0N3SkFJQUZCNlg1cUlnWkJBVXNOQUNBR1FRRnJCRUFnQXhEeUFVVU5BU0FDSUFJb0FnQW9Bb0FCRVFBQUVLWUNSUTBCSUFNZ0F5Z0NBQ2dDZUJFQUFDRUJJQUFnQXlBREtBSUFLQUo0RVFBQUVQQUlyQ0FFRVBFSUlRY2dCU0FBSUFSQmxBRkJBU0FESUFWQjhBQnFRUXRCQUVFQlFRQkJBRUVBRUVVaUF4RDhBU0lHTmdMSUFTQURFRFVhSUFCQkNpQUNFSmNGSVFJZ0JTQUVLUUlJTndOSUlBVWdCQ2tDQURjRFFDQUZJQUJCbVFFZ0FpQUhJQVZCUUdzUXp3TWlBallDekFFZ0JTQUVLUUlJTndNNElBVWdCQ2tDQURjRE1DQUFJQVJCa3dGQkFTQUFRWmNCSUFJZ0JpQUZRVEJxRU04RElBRVEvQUVoQnd3REN5QUNFUElCUlEwQUlBTVE4Z0ZGRFFBZ0FDQUNJQUlvQWdBb0FuZ1JBQUFROEFpc0lBUVF4UTBoQVNBQUlBUkJsQUZCQVNBQ0lBVkI4QUJxUVF0QkFFRUJRUUJCQUVFQUVFVWlBaEQ4QVNFSElBSVFOUm9nQUNBRVFaUUJRUUVnQXlBRlFmQUFha0VMUVFCQkFVRUFRUUJCQUJCRklnSVEvQUVoQXlBQ0VEVWFJQUFnQkVIckFFRUJJQWNnQlVId0FHcEJDa0VBUVFGQkFFRUFRUUFRUlNJQ0VQd0JJUWNnQWhBMUdpQUZJQUFnQkVIckFFRUJJQU1nQlVId0FHcEJDa0VBUVFGQkFFRUFRUUFRUlNJQ0VQd0JJZ00yQXNnQklBSVFOUm9nQlNBRUtRSUlOd05vSUFVZ0JDa0NBRGNEWUNBRklBQkJtQUVnQnlBRElBVkI0QUJxRU04RElnSTJBc3dCSUFVZ0JDa0NDRGNEV0NBRklBUXBBZ0EzQTFBZ0FFR2FBU0FDSUFFZ0JVSFFBR29RendNaEJ3d0NDeUFDRVBJQkRRRWdBeER5QVEwQkN5QUZRZkFBYWlBQUlBRWdBaUFERU1FTklBVWdCVUh3QUdvb0FnQWlBallDekFFZ0JTQUZRZkFBYWhBbEtBSUFJZ00yQXNnQklBTkZJQUpGY2cwQUlBVW9Bc3dCSWdKRkRRQWdCU2dDeUFFaUEwVU5BQ0FGSUFRcEFnZzNBeWdnQlNBRUtRSUFOd01nSUFBZ0FTQUNJQU1nQlVFZ2FoRHVDQ0lBRU8wSVJRMEFJQUFnQUNnQ0FDZ0N5QUVSQlFBZ0FDQUFLQUlBS0FMQUFSRUFBQ0lCSUFFb0FnQW9BaFFSQUFBaUFVVWdBQ0FBS0FJQUtBTEVBUkVBQUNJQ0lBSW9BZ0FvQWhRUkFBQWlBa1Z5UlFSQUlBRWdBQ2dDYUNBQ0lBRW9BZ0FvQXJnQkVRY0FJZ2NOQVFzQ1FDQUFJQUFvQWdBb0FzQUJFUUFBSUFBZ0FDZ0NBQ2dDeEFFUkFBQVF2QTFGRFFBZ0FCRHBDRVVOQUNBQUlBQW9BZ0FvQW53UkFBQWlBU0FCS0FJQUtBSW9FUUFBRUtrREN3SkFJQUFnQUNnQ0FDZ0N3QUVSQUFBaUFTQUJLQUlBS0FLRUFSRUFBQkRpQWtVRVFDQUFJQUFvQWdBb0FzUUJFUUFBSWdFZ0FTZ0NBQ2dDaEFFUkFBQVE0Z0pGRFFFTElBQW9BbWdRdUExRkRRQWdBQ0FBS0FJQUtBSjhFUUFBSWdFZ0FTZ0NBQ2dDS0JFQUFDSUJJQUVwQWdSQ2dJQ0FnQkNFTndJRUN5QUFJUWNMSUFWQjBBRnFKQUFnQndzREFBRUxGQUFnQUNBQVFRaHFLQUlBRUw0WklBQVF1QVVMR3dBZ0FDQUJLUUlBTndJQUlBQWdBU2dDQ0RZQ0NDQUJFT29CQ3drQUlBQWdBUkRZRXdzTkFDQUFLQUlBSUFGQkRHeHFDd3dBUVpEMEVpZ0NBQkRxQ3dzSUFDQUFRZjhCY1FzSkFDQUFJQUVRcUE0TERRQWdBQ0FCSUFJUUVoQ3dBd3NLQUNBQUtBSVFRWDlIQ3l3QUlBQVFpZ01nQUNBQUtBSUFRWUNBVEhFZ0FVSC9BWEZCZ0lBUVFRQWdBaHR5Y2tHQWppQnlOZ0lBQ3dzQUlBQWdBU0FDRU5nRUN3c0FJQUFnQVJBeEdpQUFDNmNDQVFOL0FrQWdBQkNZQmtVTkFDQUFMUUNrQVEwQUlBTXRBQWRCQjNFaEJBSkFBa0FnQWtGNGFpSUZRUVpMQkVBZ0FrRUJSZzBCREFJTEFrQWdCVUVDYXc0RUFnSUNBQUVMQWtBZ0JFRURTdzBBSUFSQkFXc09BZ0FBQVFzZ0FDQUJRZlc2Q2tHWHV3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdBeTBBQjBFSGNTRUVDeUFFRFFFZ0FCQ1FBeUVHSUFJUXh3UWhCQ0FBS0FJQUlRVUNRQ0FHQkVBZ0FDQUJRYU83Q2lBRVFkeTdDa0VBSUFVb0FxUUJFUUlBREFFTElBQWdBVUdqdXdvZ0JFSGoxZ2xCQUNBRktBS2dBUkVDQUFzZ0F5QURLUUlFUXYvLy8wZURRb0NBZ0JDRU53SUVJQUFnQWtFQ2RHcEJBallDN0FVTUFRc2dCRVVOQUNBQUlBRkI4N3NLSUFJUXh3UkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxDeUVBSUFCQmYyb2lBRUVDVFFSQUlBQkJBblJCL01nTGFpZ0NBQThMUWRpN0N3czFBQ0FBS0FJQUdpQUFLQUlBSUFBUTFnSkJBM1JxR2lBQUtBSUFJQUFRbWdGQkEzUnFHaUFBS0FJQUlBQVExZ0pCQTNScUdndnRBUUVCZnlBQUVNa0NJUUFDUUNBQktBSUlRWDVxSWdOQkNVc05BQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FEUVFGckRna0pBd1lFQndBQkJRZ0NDeUFBSUFJb0FnQWdBU2dDQUd3UVpROExJQUFnQWlnQ0FDQUJLQUlBYkJCdER3c2dBQ0FCS3dNQUlBSXJBd0NpRUMwUEN5QUFJQUl0QUFBZ0FTMEFBR3hCR0hSQkdIVVFiQThMSUFBZ0FpOEJBQ0FCTHdFQWJFRVFkRUVRZFJCeUR3c2dBQ0FDS1FNQUlBRXBBd0IrRUZzUEN5QUFJQUl0QUFBZ0FTMEFBR3hCL3dGeEVIWVBDeUFBSUFJdkFRQWdBUzhCQUd4Qi8vOERjUkJ4RHdzZ0FDQUNLUU1BSUFFcEF3QitFRm9MQ3hjQUlBQkJsTEFQTmdJQUlBQWdBU2dDQkRZQ0JDQUFDMG9CQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFBZ0FDZ0NDRUVCYWpZQ0NDQUFJQUJCREdvZ0FFRUlhaENtQVNnQ0FEWUNEQ0FBUVJCcUlBSkJER29RM0FFZ0FrRVFhaVFBQ3c4QUlBQWdBQ2dDQUVFQmFqWUNBQXZrQWdFQ2Z3SkFJQUFnQVVZTkFBSkFJQUVnQW1vZ0FFc0VRQ0FBSUFKcUlnUWdBVXNOQVFzZ0FDQUJJQUlRUFJvUEN5QUFJQUZ6UVFOeElRTUNRQUpBSUFBZ0FVa0VRQ0FERFFJZ0FFRURjVVVOQVFOQUlBSkZEUVFnQUNBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVg5cUlRSWdBRUVCYWlJQVFRTnhEUUFMREFFTEFrQWdBdzBBSUFSQkEzRUVRQU5BSUFKRkRRVWdBQ0FDUVg5cUlnSnFJZ01nQVNBQ2FpMEFBRG9BQUNBRFFRTnhEUUFMQ3lBQ1FRTk5EUUFEUUNBQUlBSkJmR29pQW1vZ0FTQUNhaWdDQURZQ0FDQUNRUU5MRFFBTEN5QUNSUTBDQTBBZ0FDQUNRWDlxSWdKcUlBRWdBbW90QUFBNkFBQWdBZzBBQ3d3Q0N5QUNRUU5ORFFBZ0FpRURBMEFnQUNBQktBSUFOZ0lBSUFGQkJHb2hBU0FBUVFScUlRQWdBMEY4YWlJRFFRTkxEUUFMSUFKQkEzRWhBZ3NnQWtVTkFBTkFJQUFnQVMwQUFEb0FBQ0FBUVFGcUlRQWdBVUVCYWlFQklBSkJmMm9pQWcwQUN3c0xEd0FnQUNBQUtBSUFLQUlrRVFBQUN4RUFJQUFnQVNBQktBSUFLQUlnRVFFQUN5Y0JBWDhqQUVFUWF5SUJKQUFnQVVFSWFpQUFLQUlBRURFb0FnQWhBQ0FCUVJCcUpBQWdBQXNSQUNBQUlBRWdBU2dDQUNnQ0xCRUJBQXNNQUNBQVFZS0dnQ0EyQUFBTEJ3QWdBQkJPR2dzdUFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCQVRJQUFRSDBFQ2RHb1FNU2dDQUNFQUlBRkJFR29rQUNBQUM0OEJBUUYvSUFOQmdCQnhCRUFnQUVFck9nQUFJQUJCQVdvaEFBc2dBMEdBQkhFRVFDQUFRU002QUFBZ0FFRUJhaUVBQ3dOQUlBRXRBQUFpQkFSQUlBQWdCRG9BQUNBQVFRRnFJUUFnQVVFQmFpRUJEQUVMQ3lBQUFuOUI3d0FnQTBIS0FIRWlBVUhBQUVZTkFCcEIyQUJCK0FBZ0EwR0FnQUZ4R3lBQlFRaEdEUUFhUWVRQVFmVUFJQUliQ3pvQUFBc1BBQ0FBSUFBb0FnQkJDR28yQWdBTEZnQWdBQ0FCSUFJZ0F5QUFLQUlBS0FJZ0VRa0FHZ3N0QVFGL0lBRVFGa0VBU2dSQUEwQWdBU0FDRUJFb0FnQWdBQkNlQWlBQ1FRRnFJZ0lnQVJBV1NBMEFDd3NMa3dFQkFYOGpBRUVnYXlJRUpBQkJMQkFtSUFBUVZTQUNJQUVRVVNFQklBUWdBeEJBTmdJWUlBUWdBeEF5TmdJUUlBUkJHR29nQkVFUWFoQWVCRUFEUUNBQklBUW9BaGdvQWdBUU9TQUVRUmhxRUdZYUlBUWdBeEF5TmdJUUlBUkJHR29nQkVFUWFoQWVEUUFMQ3lBQUtBS0VBU0FFUVFocUlBRVFPaUlBRUh3Z0FCQStJQUVvQWdRaEFDQUVRU0JxSkFBZ0FBdFpBUUovSXdCQkVHc2lCU1FBUVN3UUprSGdBUkMzQVNJRUlBQWdBVUVBRUhRUU9TQUVJQUFnQWtFQUVIUVFPU0FFSUFBZ0EwRUFFSFFRT1NBQUtBS0VBU0FGUVFocUlBUVFPaUlBRUh3Z0FCQStJQVZCRUdva0FBdWZBUUVCZnlNQVFSQnJJZ1VrQUNBQUlBRWdBaERiQlNFQ1FTd1FKaUFBRUZVZ0FrRTdFRkVpQWlBQkVFd2dCQVJBSUFJZ0JCQTVDd0pBSUFGQkIwWUVRQ0FBS0FLRUFTZ0NOQ0FGUVFocUlBSVFPaUlCRUxrVUlBRVFQZ3dCQ3lBQVFaQUNhaUFGSUFJUU9pSUJFSDBnQVJBK0lBQkI2QUJxSUFJUWpBRUxJQU1FUUNBQUlBSW9BZ1FnQXhEYUJRc2dBaWdDQkNFQUlBVkJFR29rQUNBQUN5Y0JBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUJCUUdzZ0FrRU1haEJISUFKQkVHb2tBQXVKQVFFQ2Z5TUFRUkJySWdRa0FDQUFRZER1RVRZQ0FDQUFRUVJxRURBaEF5QUFRUkJxRURBYUlBQkJIR29RTUJvZ0FFRW9haEF3R2lBQVFRQTZBRGdnQUNBQ05nSTBJQU1nQkVFSWFrRXNFQ1lnQVVFQVFmZ0JFRkVRT2lJQkVIMGdBUkErSUFNUWtBRW9BZ0FnQUJDc0JpQUNLQUlFSUFNUWtBRW9BZ0FRakFFZ0JFRVFhaVFBSUFBTHZnSUJBMzhqQUVFUWF5SUVKQUFnQkNBQk5nSU1Ba0FDUUFKQUFrQUNRQ0FBSUFFUTN3SWlCa0ZwYWlJRlFRZExCRUFnQmtIdUtVY05BUXdEQ3lBRlFRSnJEZ1lBQUFBQ0FBRUNDeUFBUXdBQUFBQkJBQkQ1QWlFRkRBTUxJQU1OQVNBQUlBRWdBaERERkNJRkRRSU1BUXNnQXcwQUlBQWdCaUFCSUFJUXhCUWlCUTBCQzBFc0VDWWlCU0FBRUZVZ0FVRXpRU3dnQXhzUVVTRURJQVFnQlRZQ0NFRUFJUUVnQWhBV1FRQktCRUFEUUNBRElBSWdBUkFSS0FJQUVEa2dBVUVCYWlJQklBSVFGa2dOQUFzTElBQkJrQUpxSUFRZ0F4QTZJZ0VRZlNBQkVENENRQ0FHUVI1R0JFQWdBRUhJQW1vZ0JFRU1haERZQmlBRVFRaHFFRWNNQVFzZ0JDQUdOZ0lBSUFCQnRBSnFJQVFRUHlBRVFRaHFFRWNMSUFCQjZBQnFJQVFvQWdnUWpBRWdCQ2dDQ0NnQ0JDRUZDeUFFUVJCcUpBQWdCUXNOQUNBQklBRkJBQ0FDRU5ZR0N5TUFJQUFnQUNBQkVHSWlBUkN2REFSL0lBQkI2QUJxSUFFUUwwRUFFQzhGSUFFTEN4WUJBWDhnQUJBV0lRRWdBQkR1Q2lBQUlBRVF5QVVMRXdBZ0FDQUFRY0FBRU1rQklBRWdBaENaREF2UEFRRUNmeUFCSUFFdEFBQWlCQ0FDTFFBQVFRRnhjaUlET2dBQUlBRWdCQ0FDTFFBQWNrRUNjU0FEUVgxeGNpSURPZ0FBSUFFZ0EwRjdjU0FFSUFJdEFBQnlRUVJ4Y2lJRE9nQUFJQUVnQTBGM2NTQUVJQUl0QUFCeVFRaHhjaUlET2dBQUlBRWdBMEZ2Y1NBRUlBSXRBQUJ5UVJCeGNpSURPZ0FBSUFFZ0EwRmZjU0FFSUFJdEFBQnlRU0J4Y2lJRE9nQUFJQUVnQTBHL2YzRWdCQ0FDTFFBQWNrSEFBSEZ5SWdNNkFBQWdBU0FEUWY4QWNTQUVJQUl0QUFCeVFZQUJjWEk2QUFBZ0FDQUJLQUlBTmdJQUN6TUJBWDlCLy8vLy93Y2hBaUFCRU9JQ0JIOGdBRUU0YWlJQVFhSGhFVUdBaWdRUXNnRWdBRUcxS1JBaFFiUXBCU0FDQ3d0U0FDQUFJQUVvQWdBMkFnQWdBRUVFYWlBQlFRUnFFSUFGR2lBQUlBRW9BaEEyQWhBZ0FFRVVhaUFCUVJScUVJQUZHaUFBSUFFdEFEQTZBREFnQUNBQktRSW9Od0lvSUFBZ0FTa0NJRGNDSUNBQUMwSUFJQUJCQUJEd0JpQUFRZUNYQ1RZQ0FDQUFRZkFBYWhDVEFSb2dBRUdBQVdvUWt3RWFJQUJCa0FGcUVOVUJHaUFBUVFBMkFxUUJJQUJCQURvQW9BRWdBQXNiQUNBQVFjQUJhaENRQVNnQ0FDSUFJQUFvQWdBb0Fnd1JBQUFMQ3dBZ0FDQUJJQUlRemdvTER3QWdBQ0FBS0FJUUlBRnlFTTBMQ3hJQVFYOGdBVWtFUUJDQ0FRQUxJQUVRSmdzT0FDQUFJQUVnQVJDZ0FSQ3lEUXNKQUNBQUlBRVF6d3NMRFFBZ0FDZ0NCQ0FBS0FJQWF3c2xBUUovSXdCQkVHc2lBQ1FBSUFCQkNHb1F5d0VRTVNnQ0FDRUJJQUJCRUdva0FDQUJDMlVCQVg4Q2YwRUFJQUFnQUNnQ0FDZ0NIQkVBQUVFU1J3MEFHa0VRSUFBZ0FDZ0NBQ2dDVkJFQUFDSUJJQUVvQWdBb0FpZ1JBQUFRcXdsRkRRQWFRUUVnQUNBQUtBSUFLQUpVRVFBQUlnQWdBQ2dDQUNnQ0tCRUFBQ2dDSUVFVGRrRS9jWFFMQzZRREFRVi9Jd0JCNEFCcklnUWtBQUpBSUFBZ0FDZ0NBQ2dDY0JFQUFBUkFJQVJCQ0dvZ0FFRUFRUUFRelFFaEF3Si9Ba0FnQUNBQUtBSUFLQUowRVFBQVJRMEFJQUFnQUNnQ0FDZ0NMQkVBQUJEVUFnMEFJQUFnQUNnQ0FDZ0NQQkVBQUNBRElBRVFod1JzREFFTElBTVFHeUlBSUFBcEFnUkMvLy8vLy85M2d6Y0NCQ0FESUFFUWh3UUxJUUlnQXhBMUdnd0JDeUFBSUFBb0FnQW9Bb2dCRVFBQUJFQWdBQ2dDUUJBM1FRRklEUUVEUUNBRVFRaHFJQUFnQTBFQUVNMEJJZ1VnQVJDSEJDRUdJQVVRTlJvZ0FpQUdhaUVDSUFOQkFXb2lBeUFBS0FKQUVEZElEUUFMREFFTFFRRWhBaUFBSUFBb0FnQW9BbUFSQUFBTkFDQUFJQUFvQWdBb0FtZ1JBQUFFUUNBQlJRUkFJQUFnQUNnQ0FDZ0NMQkVBQUJEeEFnMENDMEVDSVFJZ0FDQUFLQUlBS0FJY0VRQUFRUUpHQkVBZ0FDQUFLQUlBS0FJd0VRQUFRUUpLRFFJTFFRRWhBZ3dCQ3lBQUlBQW9BZ0FvQW13UkFBQkZEUUFnQkVFSWFpQUFRUUJCQUJETkFTRUNJQUFnQUNnQ0FDZ0NOQkVBQUNFQUlBSWdBUkNIQkNFQklBSVFOUm9nQUNBQmJDRUNDeUFFUWVBQWFpUUFJQUlMRmdBZ0FTQUNLUUlBTndJQUlBRWdBaWdDQ0RZQ0NBdFlBUUovSXdCQkVHc2lBU1FBQWtBZ0FCREJBUVJBSUFBb0FnQWhBaUFCUVFBNkFBOGdBaUFCUVE5cUVKUUJJQUJCQUJDOEFRd0JDeUFCUVFBNkFBNGdBQ0FCUVE1cUVKUUJJQUJCQUJEVUFRc2dBVUVRYWlRQUN4WUFRUUZCSUNBQVFYOXFaMnQwSUFBZ0FFRUNUeHNMTlFBZ0FDZ0NBQm9nQUNnQ0FDQUFFS3NEUVF4c2Fob2dBQ2dDQUNBQUVLY0JRUXhzYWhvZ0FDZ0NBQ0FBRUtzRFFReHNhaG9MTHdFQ2Z5TUFRUkJySWdFa0FFRWNFRVlpQWhEK0RSb2dBU0FDTmdJTUlBQWdBVUVNYWhEOURTQUJRUkJxSkFBTEVnQWdBQkFiS0FJQUlBQW9BZ0JyUVJodEN5SUJBWDlCQVNFQkFrQWdBQkNBQWcwQUlBQVFzZ01OQUNBQUVNNEVJUUVMSUFFTEN3QWdBQ0FCSUFJUXJ3TUxDUUFnQUNBQk5nSThDd3NBSUFBZ0FTQUNFSU1QQ3dvQUlBQkJmMnBCQTBrTEN3QWdBVUYvYWlBQWNVVUxRUUFDUUNBQ1JRMEFJQUlRWUVFQlJnMEFJQUFnQVVFT1FjTEFDaEJLSUFBZ0FVRUlRYllDUVFCQndzQUtFQ2dnQUNBQlFRWkJyZ05CQUVIQ3dBb1FLQXNMSVFBZ0FFRi9haUlBUVFWTkJFQWdBRUVDZEVHWXlRdHFLQUlBRHd0QjJMc0xDeG9BUVk3QkMwR1J3UXRCMkxzTElBQkJBa1liSUFCQkFVWWJDNm9GQVFKL0lBSW9BZ0FpQXdSQUlBQWdBVUhnakFzZ0F4Q3JBVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlnQ0VDSURCRUFnQUNBQlFlQ01DeUFERU40RFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUNLQUlVSWdNRVFDQUFJQUZCNEl3TElBTVFsZ1JCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJdEFCZ0VRQ0FBSUFGQjRJd0xRZXpsQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpZ0NDRUYvUndSQUlBQWdBVUhnakF0QnFQRUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDMEVBSVFNRFFDQUNJQU5CQW5ScUlnUW9BaHhCQWs0RVFDQUFJQUZCNEl3TFFZcjBDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkNnQ0xFRi9Sd1JBSUFBZ0FVSGdqQXRCaVkwTFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QURRUUZxSWdOQkEwY05BQXNDUUNBQ0tBSU1RWDlHRFFBQ1FDQUFLQUlVSWdOQmYyb2lCRUVDU3dSQUlBTkJEVWNOQWd3QkN3SkFJQVJCQVdzT0FnSUJBQXNnQUNBQlFlQ01DMEh4NEFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUWVDTUMwR1o0UWxCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJdEFEZ0VRQ0FBSUFGQjRJd0xRWjdtQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpMEFPUVJBSUFBZ0FVSGdqQXRCcytZS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUlvQWxCQmYwWU5BQ0FBS0FJVVFRMUhEUUFnQUNBQlFlQ01DMEdLNFFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBSXRBRUFFUUNBQUlBRkI0SXdMUWVHckNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBaWdDUkVGL1J3UkFJQUFnQVVIZ2pBdEJ0UEFLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQ0tBSklJZ0lFUUNBQUlBRkI0SXdMSUFJUWxRUkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxDNVFCQUFKQUlBQW9Ba3dRSkEwQUlBSVF0d1VFUUNBQUlBRkIvWlFLSUFJUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBa0dxbFFvUThBbEJmMFlOQUFKQUlBQVFNMFVOQUNBQUtBSVFRYXNDU2cwQUlBQWdBVUd0bFFvZ0FoQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQUNBQlFZK1dDaUFDRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NwQUVSQWdBTEM3OEJBUWQvSXdCQkVHc2lCU1FBSUFVUTFRRWhCQUpBSUFCQnlLc0JhaUlHRUJZaUIwRi9ha0VBSUFJYklnSWdCMDhOQUVFQklRZ0RRQ0FHSUFJUUVTZ0NBQ0lESUFNb0FnQW9BalFSQUFBaEF3SkFJQWhGQkVBZ0FDZ0NGRUVOUncwQkN5QUFJQU1nQXlnQ0FDZ0NLQkVBQUNBRUVNZ0hJZ2xGRFFJTElBQWdBU0FKSUFRUUV5QURJQVlnQWhBUktBSUFJZ01nQXlnQ0FDZ0NEQkVBQUJEdUQwRUFJUWdnQWtFQmFpSUNJQWRIRFFBTEN5QUVFQmthSUFWQkVHb2tBQXNOQUNBQUxRQUpRUkJ4UVFSMkN4QUFJQUFvQWdRZ0FSQXNJQUkyQWdBTEN3QWdBQ0FCRUN0QkFYTUxIZ0VCZnlNQVFSQnJJZ0VrQUNBQUlBRkJDR29RL2drZ0FVRVFhaVFBQ3dRQVFRRUxFQUFnQUNnQ0FDQUJLQUlBYTBFQ2RRc05BQ0FCS0FJQUlBSW9BZ0JJQzFRQkFYOUIwTjBVS0FJQUlnRWdBRUVEYWtGOGNXb2lBRUYvVEFSQVFkakFGRUV3TmdJQVFYOFBDd0pBSUFBL0FFRVFkRTBOQUNBQUVBc05BRUhZd0JSQk1EWUNBRUYvRHd0QjBOMFVJQUEyQWdBZ0FRc1NBQ0FBRUVNb0FnQWdBQ2dDQUd0QkFuVUxCd0FnQUVFZ2FndFBBQ0FESUFFMkFnZ2dBMElBTndJQUlBSWdBellDQUNBQUtBSUFLQUlBQkVBZ0FDQUFLQUlBS0FJQU5nSUFDeUFBRUNVb0FnQWdBaWdDQUJEdkRTQUFFQ01pQUNBQUtBSUFRUUZxTmdJQUN3a0FJQUFnQVJEZ0VndmJBUUlCZndKK1FRRWhCQUpBSUFCQ0FGSWdBVUwvLy8vLy8vLy8vLzhBZ3lJRlFvQ0FnSUNBZ01ELy93QldJQVZDZ0lDQWdJQ0F3UC8vQUZFYkRRQWdBa0lBVWlBRFF2Ly8vLy8vLy8vLy93Q0RJZ1pDZ0lDQWdJQ0F3UC8vQUZZZ0JrS0FnSUNBZ0lEQS8vOEFVUnNOQUNBQUlBS0VJQVVnQm9TRVVBUkFRUUFQQ3lBQklBT0RRZ0JaQkVCQmZ5RUVJQUFnQWxRZ0FTQURVeUFCSUFOUkd3MEJJQUFnQW9VZ0FTQURoWVJDQUZJUEMwRi9JUVFnQUNBQ1ZpQUJJQU5WSUFFZ0ExRWJEUUFnQUNBQ2hTQUJJQU9GaEVJQVVpRUVDeUFFQ3hRQUlBSUVmeUFBSUFFZ0FoREpFd1VnQUFzYUM0c0NBQUpBSUFBRWZ5QUJRZjhBVFEwQkFrQkJ3UE1TS0FJQUtBSUFSUVJBSUFGQmdIOXhRWUMvQTBZTkF3d0JDeUFCUWY4UFRRUkFJQUFnQVVFL2NVR0FBWEk2QUFFZ0FDQUJRUVoyUWNBQmNqb0FBRUVDRHdzZ0FVR0FzQU5QUVFBZ0FVR0FRSEZCZ01BRFJ4dEZCRUFnQUNBQlFUOXhRWUFCY2pvQUFpQUFJQUZCREhaQjRBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUZCQXc4TElBRkJnSUI4YWtILy96OU5CRUFnQUNBQlFUOXhRWUFCY2pvQUF5QUFJQUZCRW5aQjhBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUlnQUNBQlFReDJRVDl4UVlBQmNqb0FBVUVFRHdzTFFkakFGRUVaTmdJQVFYOEZRUUVMRHdzZ0FDQUJPZ0FBUVFFTEVBQWdBRUVnUmlBQVFYZHFRUVZKY2dzMkFRRi9Jd0JCRUdzaUFpUUFRU3dRSmlBQkVMY0JJUUVnQUNnQ2hBRWdBa0VJYWlBQkVEb2lBQkI4SUFBUVBpQUNRUkJxSkFBTDVRRUJBWDhqQUVFUWF5SUZKQUJCTEJBbUlBQVFWU0FDUVRRUVVTSUNJQUVRVENBRklBTVFRRFlDQ0NBRklBTVFNallDQUNBRlFRaHFJQVVRSGdSQUEwQWdBaUFGS0FJSUtBSUFFRGtnQlVFSWFoQm1HaUFGSUFNUU1qWUNBQ0FGUVFocUlBVVFIZzBBQ3dzZ0JTQUVFRUEyQWdnZ0JTQUVFREkyQWdBZ0JVRUlhaUFGRUI0RVFBTkFJQUlnQlNnQ0NDZ0NBQkJNSUFWQkNHb1FaaG9nQlNBRUVESTJBZ0FnQlVFSWFpQUZFQjROQUFzTElBQkI2QUJxSUFJUWpBRWdBRUdRQW1vZ0JVRUlhaUFDRURvaUFCQjlJQUFRUGlBQ0tBSUVJUUFnQlVFUWFpUUFJQUFMQ3dBZ0FDQUJPd0VBSUFBTDhRRUJCSDhqQUVFd2F5SURKQUFnQUVFUUVNUURJUVVnQTBFb2FnSi9JQU1nQWJ3MkFpQWdBeWdDSUFzUU1TQURRUmhxSUFOQkVHcEJBQkNzQkM4QkFCQ3NCQ0lFRU1vVUlBTWdCQzhCQURzQkFFRXlRU3NnQWhzaEJDQURJQU12QVFBN0FRZ2dBeThCQ0NFR0FrQWdBa1VFUUNBQVFSWWdCQ0FGSUFZUW1RZ2lBZzBCQzBFc0VDWWlBaUFBRUZVZ0JTQUVFRkVoQkNBRElBSTJBZ2dnQkNBR0VFd2dBRUdRQW1vZ0F5QUVFRG9pQWhCOUlBSVFQaUFEUVJZMkFnQWdBRUcwQW1vZ0F4QS9JQU5CQ0dvUVJ5QUFRZWdBYWlBREtBSUlFSXdCSUFNb0FnZ29BZ1FoQWdzZ0EwRXdhaVFBSUFJTERRQWdBQ0FBSUFFUVloQ3pEQXNOQUNBQUlBQWdBUkJpRU1rREN4SUFJQUFnQUVFUUVNa0JJQUVnQWhEekJBc1NBQ0FBSUFCQkNCREpBU0FCSUFJUTh3UUxTd0VCZnlNQVFSQnJJZ0lrQUFKQUlBQW9BZ1FnQUJBYktBSUFTUVJBSUFBUU95QUFLQUlFSUFFUWx3TWdBQ0FBS0FJRVFRUnFOZ0lFREFFTElBQWdBUkRIREFzZ0FrRVFhaVFBQy9BREFRcC9Jd0JCOEFCcklnVWtBQUpBQWtBZ0FTQUJLQUlBS0FLSUFSRUFBRVVFUUNBQklBRW9BZ0FvQW5BUkFBQkZEUUVMSUFCQk9Hb2lBeUFDRUdJaUJ5QURJQU1nQXhEd0JDSUxFR0lRc0FFaUJFWU5BQUpBSUFBb0Fvd0VFS3dES0FJQVFZQ0lCRWtOQUNBRElBTWdBaEJpUVJSQkFCQ05BaUFESUFSQkZFRUFFSTBDUncwQUlBQWdBU0FEUVpBRElBUWdBaEQ0QVJDMURBd0NDeUFCSUFFb0FnQW9BbkFSQUFBRVFFRUFJUVFnQlVFWWFpQUJRUUJCQUJETkFTRUdJQU1nQnhDd0FTRUhJQUVnQVNnQ0FDZ0NQQkVBQUVFQVNnUkFBMEFnQXlBQ0lBY2dCQkN2QVNFSUlBTVFjeUFESUFzUWdBTWdBeUFFUVFBUXZRSWhDU0FGUVJCcUlBRVE1QUVnQVJDR0JDRUtJQVVnQlNnQ0VEWUNBQ0FESUFrZ0JTQUtFSUlGSUFBZ0JpQUlFTE1FSUFSQkFXb2lCQ0FCSUFFb0FnQW9BandSQUFCSURRQUxDeUFHRURVYURBSUxJQUVvQWtBaUJoQTNRUUZJRFFGQkFDRUVBMEFnQmlBRUVEZ29BZ0FoQ0NBRElBSWdBeUFISUFRUW5nTWdCQkN2QVNFSklBTVFjeUFESUFzUWdBTWdBeUFFUVFBUXZRSWhDaUFGUVFocUlBRVE1QUVnQVJDR0JDRU1JQVVnQlNnQ0NEWUNCQ0FESUFvZ0JVRUVhaUFNRUlJRklBQWdDQ0FKRUxNRUlBUkJBV29pQkNBR0VEZElEUUFMREFFTElBQWdBU0FDRUxVTUN5QUZRZkFBYWlRQUN3MEFJQUJCbEFGcUlBRVFuUlVMcXc0QkIzOGpBRUh3QUdzaUJTUUFJQVZCNEFCcUVEQWhDU0FBSUFFUXZ3RWhDZ0pBQWtBQ1FDQUJJQUVvQWdBb0FuQVJBQUFFUUNBRlFRaHFJQUZCQUVFQUVNMEJJUVFnQVNBQktBSUFLQUk4RVFBQVFRRk9CRUFEUUNBRklBQWdCQ0FDSUFOQkFCQzFCRFlDQUNBSklBVVFRU0FJUVFGcUlnZ2dBU0FCS0FJQUtBSThFUUFBU0EwQUN3c2dCQkExR2d3QkN5QUJJQUVvQWdBb0Ftd1JBQUFFUUNBRlFRaHFJQUZCQUVFQUVNMEJJUVFnQVNBQktBSUFLQUkwRVFBQVFRRk9CRUFEUUNBRklBQWdCQ0FDSUFOQkFCQzFCRFlDQUNBSklBVVFRU0FJUVFGcUlnZ2dBU0FCS0FJQUtBSTBFUUFBU0EwQUN3c2dCQkExR2d3QkN5QUJFSVVCQkVBZ0JTQUFJQVZCQ0dvZ0FTQUJLQUlBS0FJY0VRQUFRUUJCQVVFQVFRQkJBQkJGSWdFZ0FpQURRUUFRdFFRMkFnQWdDU0FGRUVFZ0FSQTFHZ3dCQ3lBQklBRW9BZ0FvQW9nQkVRQUFCRUFnQlVFSWFpSUVJQUVvQWtBUVFEWUNBQ0FGSUFFb0FrQVFNallDQUNBRUlBVVFIa1VOQVFOQUlBVWdBQ0FFS0FJQUtBSUFJQUlnQTBFQUVMVUVOZ0lBSUFrZ0JSQkJJQVFRdEFJZ0JTQUJLQUpBRURJMkFnQWdCQ0FGRUI0TkFBc01BUXNnQVNBQktBSUFLQUl3RVFBQVFRSklEUUVnQVNBQktBSUFLQUl3RVFBQVJRMEFJQUJCT0dvaEJBTkFJQU1vQWdBaEJpQUNFSTBHSVFjQ1FDQUJJQUVvQWdBb0Fod1JBQUJCZjJvaUMwRUxTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQXRCQVdzT0N3b0xCQVVHQndBQkNBa0RBZ3NnQlNBRUlBWWdCMGdFZnlBQ0lBTW9BZ0FRRHlnQ0FBVkJBQXRCQUJDOUFqWUNDQ0FKSUFWQkNHb1FRUXdMQ3lBRklBUWdCaUFIU0FSL0lBSWdBeWdDQUJBUEtBSUFCVUVBQzBFQUVIUTJBZ2dnQ1NBRlFRaHFFRUVNQ2dzZ0JTQUVJQVlnQjBnRWZTQUNJQU1vQWdBUUR5c0RBTFlGUXdBQUFBQUxRUUFRK1FJMkFnZ2dDU0FGUVFocUVFRU1DUXNnQlNBRUlBWWdCMGdFZnlBQ0lBTW9BZ0FRRHkwQUFBVkJBQXRCQUJDYUREWUNDQ0FKSUFWQkNHb1FRUXdJQ3lBRklBUWdCaUFIU0FSL0lBSWdBeWdDQUJBUExBQUFCVUVBQzBFQUVPVUZOZ0lJSUFrZ0JVRUlhaEJCREFjTElBVWdCQ0FHSUFkSUJIOGdBaUFES0FJQUVBOHRBQUFGUVFBTFFRQVFzUVEyQWdnZ0NTQUZRUWhxRUVFTUJnc2dCU0FFSUFZZ0IwZ0VmeUFDSUFNb0FnQVFEeTRCQUFWQkFBdEJBQkRrQlRZQ0NDQUpJQVZCQ0dvUVFRd0ZDeUFGSUFRZ0JpQUhTQVIvSUFJZ0F5Z0NBQkFQTHdFQUJVRUFDMEVBRUxBRU5nSUlJQWtnQlVFSWFoQkJEQVFMSUFVZ0JDQUdJQWRJQkg0Z0FpQURLQUlBRUE4cEF3QUZRZ0FMUVFBUTR3VTJBZ2dnQ1NBRlFRaHFFRUVNQXdzZ0JTQUVJQVlnQjBnRWZpQUNJQU1vQWdBUUR5a0RBQVZDQUF0QkFCRDVBellDQ0NBSklBVkJDR29RUVF3Q0N5QUZJQVFnQmlBSFNBUjhJQUlnQXlnQ0FCQVBLd01BQlVRQUFBQUFBQUFBQUF0QkFCRERBellDQ0NBSklBVkJDR29RUVF3QkN5QUZJQVFnQmlBSFNBUjlJQUlnQXlnQ0FCQVBLd01BdGdWREFBQUFBQXRCQUJDdEJEWUNDQ0FKSUFWQkNHb1FRUXNnQXlBREtBSUFRUUZxTmdJQUlBaEJBV29pQ0NBQklBRW9BZ0FvQWpBUkFBQkpEUUFMQ3lBQVFUaHFJQW9nQ1VFQUVQVURJUWdNQVFzZ0F5Z0NBQ0VHSUFJUWpRWWhCd0pBSUFFZ0FTZ0NBQ2dDSEJFQUFFRi9haUlCUVJGTERRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRUUZyRGhFS0N3UUZCZ2NBQVFnSkF3ME5EUTBOREFJTElBQkJPR29nQmlBSFNBUi9JQUlnQXlnQ0FCQVBLQUlBQlVFQUN5QUVFTDBDSVFnTURBc2dBRUU0YWlBR0lBZElCSDhnQWlBREtBSUFFQThvQWdBRlFRQUxJQVFRZENFSURBc0xJQUJCT0dvZ0JpQUhTQVI5SUFJZ0F5Z0NBQkFQS3dNQXRnVkRBQUFBQUFzZ0JCRDVBaUVJREFvTElBQkJPR29nQmlBSFNBUi9JQUlnQXlnQ0FCQVBMUUFBQlVFQUN5QUVFSm9NSVFnTUNRc2dBRUU0YWlBR0lBZElCSDhnQWlBREtBSUFFQThzQUFBRlFRQUxJQVFRNVFVaENBd0lDeUFBUVRocUlBWWdCMGdFZnlBQ0lBTW9BZ0FRRHkwQUFBVkJBQXNnQkJDeEJDRUlEQWNMSUFCQk9Hb2dCaUFIU0FSL0lBSWdBeWdDQUJBUExnRUFCVUVBQ3lBRUVPUUZJUWdNQmdzZ0FFRTRhaUFHSUFkSUJIOGdBaUFES0FJQUVBOHZBUUFGUVFBTElBUVFzQVFoQ0F3RkN5QUFRVGhxSUFZZ0IwZ0VmaUFDSUFNb0FnQVFEeWtEQUFWQ0FBc2dCQkRqQlNFSURBUUxJQUJCT0dvZ0JpQUhTQVIrSUFJZ0F5Z0NBQkFQS1FNQUJVSUFDeUFFRVBrRElRZ01Bd3NnQUVFNGFpQUdJQWRJQkh3Z0FpQURLQUlBRUE4ckF3QUZSQUFBQUFBQUFBQUFDeUFFRU1NRElRZ01BZ3NnQUVFNGFpQUdJQWRJQkgwZ0FpQURLQUlBRUE4ckF3QzJCVU1BQUFBQUN5QUVFSzBFSVFnTUFRc2dBRUU0YWlJQVFmd0FJQW9nQUNBR0lBZElCSDRnQWlBREtBSUFFQThwQXdBRlFnQUxJQVFRK1FNUStBRWhDQXNnQXlBREtBSUFRUUZxTmdJQUN5QUpFRFlnQlVId0FHb2tBQ0FJQ3cwQUlBQWdBQ0FCRUdJUXlBd0w5d1lCQW44Q1FBSkFBa0FnQUNBQklBTVEyQWhGRFFBZ0FpQURJQU1vQWdBb0FuZ1JBQUFRb3dJTkFpQUNJQUlvQWdBb0FvZ0JFUUFBRFFBZ0F5QURLQUlBS0FLc0FSRUFBQTBBSUFJZ0FpZ0NBQ2dDY0JFQUFBMEFJQU1nQXlnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQW5BUkFBQU5BQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCUWNJRFRBUkFJQUZCeEFGTUJFQWdBVUVIVFEwQ0RBY0xJQUZCdTM1cUlnUkJHazBOQXd3RkN3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRYUlFVEFSQUlBRkJ2WHhxSWdWQkVVc05FRUVNSVFRZ0JVRUJhdzRSRUJBUUVCQVFBZ01GQmdjTENBa1NBUVFSQ3lBQlFkMTdhaUlFUVNGTkRRd2dBVUc1QlVZTkVDQUJRY3NGUncwUERCQUxRUUVoQkF3UUMwRUlJUVFNRHd0QkNTRUVEQTRMUVFJaEJBd05DMEVFSVFRZ0FFSEsvd2dRalFFTkRDQUFRYUtBQ1JDTkFVVU5EZ3dNQzBFRklRUWdBRUhLL3dnUWpRRU5DeUFBUWFLQUNSQ05BVVVORFF3TEMwRUdJUVFnQUVISy93Z1FqUUVOQ2lBQVFjK0FDUkNOQVEwS0RBd0xRUW9oQkF3SkMwRUxJUVFNQ0F0QkFTQUJkRUdLQVhGRkRRUU1CZ3RCQnlFRUlBQkJ5djhJRUkwQkRRWWdBRUhQZ0FrUWpRRkZEUWdNQmd0QkFTQUVkRUdCZ1A0NWNVVU5BUXdFQ3dKQUFrQWdCRUVCYXc0aEJBUUVCQVFFQkFRRUJBUUVCUVFFQkFVRUJRVUZCUVFGQlFRRkJRVUZCUUFBQVFzZ0FpQUNLQUlBS0FJY0VRQUFFS1lDQkVBZ0F5RUVJQU1nQXlnQ0FDZ0NnQUVSQUFBUXBnSU5Cd3RCQUE4TFFRTWhCQ0FBUWNyL0NCQ05BUTBFSUFCQjh2OElFSTBCUlEwR0RBUUxJQUZCODMxcUlnUkJCa3NOQVNBRVFRTkhEUUlNQVFzZ0FVR2JBVVlnQVVHK0FVWnlEUUVMSUFOQkFDQUNJQUlvQWdBb0Fod1JBQUFnQXlBREtBSUFLQUo0RVFBQUlnQWdBQ2dDQUNnQ0hCRUFBRVliRHdzQ1FDQUNFUFFCUlFSQUlBTWdBeWdDQUNnQ2VCRUFBQkQwQVVVTkFRc2dBMEVBSUFJZ0F5QURLQUlBS0FKNEVRQUFFS01DR3c4TElBSWdBaWdDQUNnQ0hCRUFBQ0FESUFNb0FnQW9BbmdSQUFBaUJDQUVLQUlBS0FJY0VRQUFSZzBEUVFBaEJDQUFJQU1nQXlnQ0FDZ0NnQUVSQUFBZ0FpQUNLQUlBS0FJY0VRQUFJQUVRNFFKRkRRRWdBaUFDS0FJQUtBSWNFUUFBSVFRTElBTWdBeWdDQUNnQ0ZCRUFBRVVOQVNBRUlBTWdBeWdDQUNnQ0ZCRUFBQkRRQ0NFRUN5QUVEd3NnQUNBRUlBTVFsd1VQQ3lBREN4a0FJQUFnQVRZQ0NDQUFRUUE2QUFRZ0FFSHd5eEUyQWdBTE93RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhBQVdvZ0FrRU1haENBRGlBQ0tBSU1JZ0FnQUNnQ0FDZ0NKQkVGQUNBQ1FSQnFKQUFMRHdBZ0FCQWJLQUlBSUFBb0FnQnJDd2NBSUFCQkdHb0wwZ2NCQlg4akFFRVFheUlKSkFBZ0NTQUdLUUlJTndNSUlBa2dCaWtDQURjREFBSkFBa0FDUUFKQUlBRkJLRWNFUUNBQlFaZ0JSd1JBSUFGQm9nRkhCRUJCQXlFSEEwQWdCeUlJUVFOMFFkRHZFbW9vQWdBZ0FVWU5CQ0FJUVg5cUlRY2dDQTBBQ3lBQUtBSndJZ0FnQ1VHQXVSRkIyN2dSUWNtekVVRUFJQUFvQWdBb0FxZ0JFUUlBSUFWQkFUb0FBQ0FFUVFBMkFnQU1CZ3RCcUxjUklBWkJJR29pQ0JCNlJRUkFJQUFvQW5BYUFrQWdBQkN2RjBVTkFDQUFLQUp3RUpBRElRb2dBQ2dDY0NJQktBSUFJUWNnQ2dSQUlBRWdCa0d3dHhGQnFMY1JRY216RVVFQUlBY29BcXdCRVFJQURBRUxJQUVnQmtIeXR4RkJxTGNSUWNtekVVRUFJQWNvQXFnQkVRSUFDMEVBSVFjQ2Z5QUFJQVlRVXlJQlFTaEdCRUJCQVNFSElBQWdCaEJUSVFFTElBRkJvZ0ZIQ3dSQUlBQW9BbkFpQUNBSlFiSzRFVUhidUJGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBZ0JVRUJPZ0FBSUFSQkFEWUNBQXdIQ3lBRUFuOUJBQ0FBSUFCQkZHb2dDQkRPQXhEeEJTSUJSUTBBR2lBQkxRQWtRUUoyUVg5elFRRnhDellDQUNBQUlBWVFVeUVCSUFkRkRRVWdBVUVwUmcwRUlBQW9BbkFpQUNBSlFmTzRFVUhidUJGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBZ0JVRUJPZ0FBSUFSQkFEWUNBQXdHQ3lBQUlBQkJvZ0VnQXlBRUlBVWdCaEM1RFNBQ0lBTWdCQ0FGSUFZUXZBUWhBUXdGQ3lBRUlBWW9BaGcyQWdBTUFnc2dBQ0FBSUFZUVUwRUFJQU1nQkNBRklBWVF2QVFoQVNBRkxRQUFEUUlnQVVFcFJnMEJJQUFvQW5BaUFDQUpRZk80RVVIYnVCRkJ5Yk1SUVFBZ0FDZ0NBQ2dDcUFFUkFnQWdCVUVCT2dBQUlBUkJBRFlDQUF3REN5QUFJQUFnQmhCVFFRd2dBeUFFSUFVZ0JoQzhCQ0VCSUFRZ0JDZ0NBQ0FJUVFOMFFkVHZFbW9vQWdBUkFBQTJBZ0FNQVFzZ0FDQUdFRk1oQVFzZ0FDQUJJQU1nQkNBRklBWVF1UTBoQVNBRkxRQUFEUUFEUUNBQlFRcEdEUUZCRVNFSElBRkJLVVlOQVFOQUlBRWdCeUlJUVF4c0lnZEI4TzBTYWlnQ0FFY0VRQ0FJUVg5cUlRY2dDQTBCREFNTEN5QUhRZlR0RW1vaUNpZ0NBQ0FDVEEwQkFuOGdBMEVCY1NBQlFZNEJSa0VBSUFRb0FnQWlDRUVCUmh0eVJRUkFRUUFnQVVHTkFVY2dDSElOQVJvTFFRRUxJUU1nQUNBQUlBWVFVeUFLS0FJQUlBTWdCQ0FGSUFZUXZBUWhBU0FFS0FJQUlnb2dCMEg0N1JKcUlnc29BZ0FpQjBHeUEwY2dCMEd6QTBkeGNrVUVRQ0FBS0FKd0lnY2dDVUdQdVJGQjI3Z1JRY216RVVFQUlBY29BZ0FvQXFnQkVRSUFRUUVoQ2lBRVFRRTJBZ0FnQ3lnQ0FDRUhDeUFFSUFnZ0NpQUhFUU1BTmdJQUlBVXRBQUJGRFFBTEN5QUpRUkJxSkFBZ0FRdW5BUUVEZndKQUlBTkJmMFlnQTBFS1JuSU5BRUhKc3hFaEJDQUJRZHQrYWlJQlFRWk5CRUFnQVVFQ2RFR014UkZxS0FJQUlRUUxJQUFvQW5BUWtBTWhCaUFBS0FKd0lnRW9BZ0FoQlFKQUlBWUVRQ0FCSUFKQjhiWVJJQVJCeWJNUlFRQWdCU2dDckFFUkFnQU1BUXNnQVNBQ1FmRzJFU0FFUWNtekVVRUFJQVVvQXFnQkVRSUFDd05BSUFOQmYwWWdBMEVLUm5JTkFTQUFJQUlRVXlFRERBQUFDd0FMSUFNTE9BRUJmMEVFSVFJZ0FDQUFLQUlBS0FJY0VRQUFRWDVxSWdCQkVFMEVRQ0FBUVFKMFFhU3lFV29vQWdBaEFnc2dBU0FDTmdJQUlBSUxIZ0VCZnlBQUtBSnNJZ0VFZnlBQkJTQUFRUlJxRUJzdEFBZEJCM0VMQ3hRQUlBQWdBRUVJYWlnQ0FCRHdEU0FBRUxnRkN4QUFJQUFnQVJBVElBRVFIeERLQlJvTERnQWdBQ2dDQ0VILy8vLy9CM0VMS3dBZ0FDQUFFTUVDRUJFb0FnQWdBUkRoR1NBQUVKQUJLQUlBSWdFRVFDQUJFS2NaR2dzZ0FCQ1JDUXNTQUNBQUVCc29BZ0FnQUNnQ0FHdEJGRzBMTkFBZ0FDZ0NBQm9nQUNnQ0FDQUFFTGNDUVFKMGFob2dBQ2dDQUNBQUVCWkJBblJxR2lBQUtBSUFJQUFRdHdKQkFuUnFHZ3NNQUNBQklBSXBBZ0EzQWdBTEhBQWdBRUVTVFFSQUlBQkJBblJCNkxVUGFpZ0NBQThMUVlHZ0R3c05BQ0FBTFFBQ1FTQnhRUVYyQ3cwQUlBQW9BZ3hCUDNFUTB3SUxDd0FnQUMwQUlFSC9BVWNMSVFBZ0FFRi9haUlBUVN0TkJFQWdBRUVDZEVIb3N3OXFLQUlBRHd0Qjlwb1BDekFCQVg4akFFRVFheUlDSkFBZ0FDZ0NBQ0VBSUFJZ0FSRHJCeUFBSUFJUUV4QVNHaUFDRUNBYUlBSkJFR29rQUFzT0FDQUFMUUFLUWZBQWNVRUFSd3NRQUNBQU1RQWFRaENHUW9DQS9BZFNDd2tBSUFBZ0FUWUNDQXNhQVFGL0lBQXRBQUpCQ0hFRWZ5QUFFS1FIUVFGekJTQUJDd3NKQUNBQUVCc29BZ0FMVEFFQmZ5TUFRUkJySWdJa0FDQUNRYmJGRGtHOHhRNGdBVUdiQTBnYk5nSUFJQUlnQVVFQ2RFSFF4UTVxS0FJQU5nSUVJQUJCcnNVT0lBSVF6QUpCS1NBQUVNQURJQUpCRUdva0FBdldBUUlEZndGOUl3QkJFR3NpQWlRQUlBSWdBVFlDREFKQUlBSWdBVUVCUmdSL1FRSUZJQUVnQVVGL2FuRkZEUUVnQVJDS0Fnc2lBVFlDREFzQ1FDQUJJQUFRUENJRFN3UkFJQUFnQVJEQkNRd0JDeUFCSUFOUERRQWdBeEM2QVNFRUFuOGdBQkFqS0FJQXN5QUFFRU1xQWdDVmpTSUZRd0FBZ0U5ZElBVkRBQUFBQUdCeEJFQWdCYWtNQVF0QkFBc2hBU0FDQW44Z0JBUkFJQUVRaWdRTUFRc2dBUkNLQWdzMkFnZ2dBaUFDUVF4cUlBSkJDR29RVWlnQ0FDSUJOZ0lNSUFFZ0EwOE5BQ0FBSUFFUXdRa0xJQUpCRUdva0FBc1pBQ0FBSUFFb0FnQVFNUm9nQUNBQlFRUnFMUUFBT2dBRUN3MEFJQUFwQWdSQ1BvTkNEbEVMSUFBZ0FDQUJFSzBESUFBZ0F4Q05DaUFBSUFJUXVnTWdBRUhLekFrUXVnTUxGZ0FnQUNBQkVHY2FJQUFnQVVFRWFpMEFBRG9BQkFzTkFDQUJLQUlBSUFJb0FnQkpDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCRFdBa0VEZEdvYUlBQW9BZ0FnQUJEV0FrRURkR29hSUFBb0FnQWFDd29BSUFBdEFBUkJEVVlMV1FFQ2Z5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FCRGxEaUlESUFGUEJFQWdBQkMzQWlJQUlBTkJBWFpKQkVBZ0FpQUFRUUYwTmdJSUlBSkJDR29nQWtFTWFoQlNLQUlBSVFNTElBSkJFR29rQUNBRER3c1FiZ0FMREFBZ0FDQUJLQUlFTmdJRUMwVUJBWDhqQUVFZ2F5SUNKQUFnQWlBQkVKSUROZ0lRRU9jQklBSkJHR29nQUNBQklBSkJFR29nQWtFSWFoRGFFQ0FDUVJocUVFUWhBQ0FDUVNCcUpBQWdBRUVFYWdzVkFDQUFRWWlFQ1RZQ0FDQUFRUlJxRURVYUlBQUxDZ0FnQUJBYktBSUFSUXNiQUNBQUtBSUFJZ0FnQVNnQ0JEWUNCQ0FCS0FJRUlBQTJBZ0FMSUFBZ0FDZ0NCQ0lBUlFSQVFRQVBDeUFBSUFBb0FnQW9Bc0FCRVFBQUVCWUxzd0VCQTM4akFFRVFheUlDSkFBZ0FpQUJPZ0FQQWtBQ1FBSkFBbjhnQUJEQkFTSUVSUVJBUVFvaEFTQUFMUUFMREFFTElBQVF3Z1JCZjJvaEFTQUFLQUlFQ3lJRElBRkdCRUFnQUNBQlFRRWdBU0FCRU93SElBQVF3UUZGRFFFTUFnc2dCQTBCQ3lBQUlRRWdBQ0FEUVFGcUVOUUJEQUVMSUFBb0FnQWhBU0FBSUFOQkFXb1F2QUVMSUFFZ0Eyb2lBQ0FDUVE5cUVKUUJJQUpCQURvQURpQUFRUUZxSUFKQkRtb1FsQUVnQWtFUWFpUUFDeE1BSUFBUTZnRWdBQ0FCSUFFUXRRc1FuaEVMemdFQkJuOGpBRUVRYXlJRUpBQWdBQkFsS0FJQUlRVUNmeUFDS0FJQUlBQW9BZ0JySWdOQi8vLy8vd2RKQkVBZ0EwRUJkQXdCQzBGL0N5SURRUVFnQXhzaEF5QUJLQUlBSVFZZ0FDZ0NBQ0VISUFWQjFRUkdCSDlCQUFVZ0FDZ0NBQXNnQXhDd0JpSUlCRUFnQlVIVkJFY0VRQ0FBRUY4YUN5QUVRZFFFTmdJRUlBQWdCRUVJYWlBSUlBUkJCR29RbmdFaUJSQ0dDeUFGRUowQklBRWdBQ2dDQUNBR0lBZHJRUUoxUVFKMGFqWUNBQ0FDSUFBb0FnQWdBMEY4Y1dvMkFnQWdCRUVRYWlRQUR3c1FnZ0VBQ3hNQUlBQWdBVUVBSUFBb0FnQW9BalFSQndBTEV3QWdBQ0FCUVFBZ0FDZ0NBQ2dDSkJFSEFBdnpBZ0VDZnlNQVFSQnJJZ29rQUNBS0lBQTJBZ3dDUUFKQUFrQUNRQ0FES0FJQUlBSkhEUUFnQ1NnQ1lDQUFSaUlMUlFSQUlBa29BbVFnQUVjTkFRc2dBeUFDUVFGcU5nSUFJQUpCSzBFdElBc2JPZ0FBREFFTElBWVFIMFVnQUNBRlIzSU5BVUVBSVFBZ0NDZ0NBQ0lCSUFkclFaOEJTZzBDSUFRb0FnQWhBQ0FJSUFGQkJHbzJBZ0FnQVNBQU5nSUFDMEVBSVFBZ0JFRUFOZ0lBREFFTFFYOGhBQ0FKSUFsQjZBQnFJQXBCREdvUTh3Y2dDV3NpQmtIY0FFb05BQ0FHUVFKMUlRVUNRQ0FCUVhocUlnZEJBa3NFUUNBQlFSQkhJQVpCMkFCSWNnMEJJQU1vQWdBaUFTQUNSaUFCSUFKclFRSktjZzBDSUFGQmYyb3RBQUJCTUVjTkFrRUFJUUFnQkVFQU5nSUFJQU1nQVVFQmFqWUNBQ0FCSUFWQndMa1NhaTBBQURvQUFBd0NDeUFIUVFGclJRMEFJQVVnQVU0TkFRc2dBeUFES0FJQUlnQkJBV28yQWdBZ0FDQUZRY0M1RW1vdEFBQTZBQUFnQkNBRUtBSUFRUUZxTmdJQVFRQWhBQXNnQ2tFUWFpUUFJQUFMQ3dBZ0FFRzh5eFFRbXdNTDd3SUJBMzhqQUVFUWF5SUtKQUFnQ2lBQU9nQVBBa0FDUUFKQUFrQWdBeWdDQUNBQ1J3MEFJQUJCL3dGeElnc2dDUzBBR0VZaURFVUVRQ0FKTFFBWklBdEhEUUVMSUFNZ0FrRUJhallDQUNBQ1FTdEJMU0FNR3pvQUFBd0JDeUFHRUI5RklBQWdCVWR5RFFGQkFDRUFJQWdvQWdBaUFTQUhhMEdmQVVvTkFpQUVLQUlBSVFBZ0NDQUJRUVJxTmdJQUlBRWdBRFlDQUF0QkFDRUFJQVJCQURZQ0FBd0JDMEYvSVFBZ0NTQUpRUnBxSUFwQkQyb1E5Z2NnQ1dzaUJVRVhTZzBBQWtBZ0FVRjRhaUlHUVFKTEJFQWdBVUVRUnlBRlFSWkljZzBCSUFNb0FnQWlBU0FDUmlBQklBSnJRUUpLY2cwQ0lBRkJmMm90QUFCQk1FY05Ba0VBSVFBZ0JFRUFOZ0lBSUFNZ0FVRUJhallDQUNBQklBVkJ3TGtTYWkwQUFEb0FBQXdDQ3lBR1FRRnJSUTBBSUFVZ0FVNE5BUXNnQXlBREtBSUFJZ0JCQVdvMkFnQWdBQ0FGUWNDNUVtb3RBQUE2QUFBZ0JDQUVLQUlBUVFGcU5nSUFRUUFoQUFzZ0NrRVFhaVFBSUFBTEN3QWdBRUcweXhRUW13TUxad0lCZndGK0l3QkJFR3NpQWlRQUlBQUNmaUFCUlFSQVFnQU1BUXNnQWlBQnJVSUFRZkFBSUFGblFSOXpJZ0ZyRVBjQklBSXBBd2hDZ0lDQWdJQ0F3QUNGSUFGQi8vOEFhcTFDTUlaOElRTWdBaWtEQUFzM0F3QWdBQ0FETndNSUlBSkJFR29rQUFzS0FDQUFFSUVJR2lBQUMyQUJBWDRDUUFKK0lBTkJ3QUJ4QkVBZ0FpQURRVUJxcllnaEFVSUFJUUpDQUF3QkN5QURSUTBCSUFKQndBQWdBMnV0aGlBQklBT3RJZ1NJaENFQklBSWdCSWdoQWtJQUN5RUVJQUVnQklRaEFRc2dBQ0FCTndNQUlBQWdBamNEQ0F1REFRSURmd0YrQWtBZ0FFS0FnSUNBRUZRRVFDQUFJUVVNQVFzRFFDQUJRWDlxSWdFZ0FDQUFRZ3FBSWdWQ0NuNTlwMEV3Y2pvQUFDQUFRdi8vLy8rZkFWWWhBaUFGSVFBZ0FnMEFDd3NnQmFjaUFnUkFBMEFnQVVGL2FpSUJJQUlnQWtFS2JpSURRUXBzYTBFd2Nqb0FBQ0FDUVFsTElRUWdBeUVDSUFRTkFBc0xJQUVMQndBZ0FFRkFhd3NPQUNBQVFRRVEwUVlnQUJEUUJndkJBUUVEZnlNQVFTQnJJZ1FrQUNBRUlBSTJBaHdnQUNBREVNZ0RJZ1pCQVVjRVFBSkFJQUF0QUpBQkJFQWdBRUhvQUdvZ0FDQURJQVJCRUdvZ0JpQUVRUnhxRU1VRElnSWdBQ0FFS0FJY0VJNE1FUFVERUM4aEJTQUNFRFlNQVF0QkxCQW1JQUFRVlNBRFFkQUFFRkVoQlVFQUlRTWdCa0VBU2dSQUEwQWdCU0FDRURrZ0EwRUJhaUlESUFaSERRQUxDeUFBS0FLRUFTQUVRUWhxSUFVUU9pSUNFSHdnQWhBK0N5QUFJQVVvQWdRZ0FSQ0dBU0VDQ3lBRVFTQnFKQUFnQWd1SkFRRUNmeU1BUVJCcklnWWtBRUVzRUNZZ0FCQlZJQUFnQVJEYUJrRTlFRkVpQlNBQkVEa0NRQ0FDSUFBZ0FSQzJCQkNURENJQlJRMEFJQVVnQVJCTUlBRkJBbkVFUUNBRklBUVFUQXNnQVVFUWNVVU5BQ0FGSUFBZ0EwRUFFSFFRT1FzZ0FDZ0NoQUVnQmtFSWFpQUZFRG9pQUJCOElBQVFQaUFGS0FJRUlRQWdCa0VRYWlRQUlBQUxvZ0VCQW44akFFRVFheUlFSkFCQk1rRXJJQU1iSVFVQ1FDQURSUVJBSUFCQkZTQUZJQUVnQWhDWkNDSUREUUVMUVN3UUppSURJQUFRVlNBQklBVVFVU0VCSUFRZ0F6WUNEQ0FCSUFJUVRDQUFRWkFDYWlBRVFRaHFJQUVRT2lJQkVIMGdBUkErSUFSQkZUWUNCQ0FBUWJRQ2FpQUVRUVJxRUQ4Z0JFRU1haEJISUFCQjZBQnFJQVFvQWd3UWpBRWdCQ2dDRENnQ0JDRURDeUFFUVJCcUpBQWdBd3NKQUNBQUlBRVEzeFFMVHdFQmZ5TUFRZUFBYXlJQUpBQWdBRUhZQUdwQkFSRDFBU0lFUVFBUUR5QUJFR1VnQkNBQVFRaEJBa0VCUVFCQkFFRUFFRVVpQVNBQ0lBTVEwQUloQWlBQkVEVWFJQUJCNEFCcUpBQWdBZ3NTQUNBQUVCc29BZ0FnQUNnQ0FHdEJORzBMTHdBZ0FDZ0NBQ2dDUEVHQWlBUlBCSDlCZ01BQUlBQW9BZ1F0QUFBaUFFRUlSa0VNZENBQVFRbEdHd1ZCQUFzTERRQWdBQ0FBSUFFUVloRDlCQXNQQUNBQklBSWdBQ2dDQkVGL0VIZ0xFZ0FnQUJBYktBSUFJQUFvQWdCclFUaHRDeEFBSUFBb0FnUWdBQ2dDQUd0Qk9HMExRQUVCZnlBQUVPVU9JQUZKQkVBUWJnQUxJQUFRR3hvZ0FDQUJFSUlDSWdJMkFnQWdBQ0FDTmdJRUlBQVFHeUFDSUFGQkFuUnFOZ0lBSUFCQkFCQ3RCUXN4QVFGL1FRRWhBZ0pBSUFBZ0FSRGZBa0VXUmcwQUlBQWdBUkRmQWtFVlJnMEFJQUFnQVJEZkFrRVVSaUVDQ3lBQ0N4Z0FJQUFnQUNnQ0FDZ0NMQkVBQUMwQUIwRUhjUkNEQlF0eEFDQUFLQUtNQkMwQWlBUkZBbjhnQVMwQUFDSUJRY0VBY1FSQVFRVkJBU0FBS0FLTUJDMEFpQVFiREFFTFFRRWdBVUVDY1EwQUdrRUZJQUZCQkhFTkFCcEJBaUFCUVFoeERRQWFRUU5CLy8vLy93Y2dBVUVRY1JzTElnRkJBVWR5UlFSQUlBQkJPR3BCNGlrUUlRc2dBUXRIQVFKL0l3QkJFR3NpQWlRQUlBRVFHeG9nQUNBQ1FRaHFFSTBPR2lBQkVCWWlBd1JBSUFBZ0F4RDhCQ0FBSUFFb0FnQWdBU2dDQkNBREVLOElDeUFDUVJCcUpBQWdBQXNKQUNBQUVLNElJQUFMUndFQmZ5TUFRUkJySWdRa0FDQUVJQUUyQWd3Z0FFR1lBV29nQkVFTWFoQkhJQVJCQ0dvZ0FFSEVBV29nQWhENkF5QUFJQUFvQXNBQklBTnlOZ0xBQVNBRVFSQnFKQUFMRXdCQkFFSC8vLy8vQnlBQVFYOXFRUUpKR3dzS0FDQUFLQUlBRUlBSkN4WUFJQUFnQUVFSWFpZ0NBQkR3RFNBQUVMZ0ZJQUFMSHdBZ0FFRjhhaUlBUVFkTkJFQWdBRUVDZEVHb2lRbHFLQUlBRHd0QmZ3c0tBQ0FBS0FJb1FRaEdDdzhBSUFBZ0FDZ0NBQ2dDQURZQ0FBc0xBQ0FBSUFFZ0FoQ1hCUXMzQVFGL0l3QkJFR3NpQkNRQUlBUWdBeWtDQ0RjRENDQUVJQU1wQWdBM0F3QWdBQ0FCSUFJZ0JCRHVDQ0VBSUFSQkVHb2tBQ0FBQ3l3QkFYOGpBRUVRYXlJREpBQWdBMEVJYWlBQklBSWdBaENRRmlBQUlBTkJDR29RMXdRZ0EwRVFhaVFBQ3k0QkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFFUTZ3dzJBZ2dnQWtFSWFoQkVJUUFnQWtFUWFpUUFJQUJCQkdvTEJ3QWdBRUVvYWdzT0FDQUFFQk1nQUJBZmFrRi9hZ3NOQUNBQUtBSUlJQUFvQWdSR0N4QUFJQUFvQWdRZ0FTZ0NCRVpCQVhNTEZ3QWdBQ0FETmdJUUlBQWdBallDRENBQUlBRTJBZ2dMRlFBZ0FDQUJFSlVESUFCQkJHb2dBUkFsRUpVREN4TUFJQUFnQVJDVkF5QUFRUVJxSUFJUWxRTUxFd0FnQUNBQklBSWdBQ2dDQUNnQ01CRUhBQXMyQVFGL0lBQVFYaUVCSUFBb0FnUWdBQ2dDRUNBQktBSUFha0YvYWlJQVFRaDJRZnovL3dkeGFpZ0NBQ0FBUWY4SGNVRUNkR29MRFFBZ0FDZ0NFQ0FBRUlJRFR3dThCZ0VHZnlNQVFmQUFheUlFSkFBQ2YwRUJJQUlnQWlnQ0FDZ0NnQUVSQUFCQkJFWU5BQnBCQVNBQ0lBSW9BZ0FvQW9BQkVRQUFRUVZHRFFBYVFRRWdBaUFDS0FJQUtBS0FBUkVBQUVFR1JnMEFHa0VCSUFJZ0FpZ0NBQ2dDZ0FFUkFBQkJCMFlOQUJwQkFTQUNJQUlvQWdBb0FvQUJFUUFBUVFoR0RRQWFRUUVnQWlBQ0tBSUFLQUtBQVJFQUFFRUpSZzBBR2tFQklBSWdBaWdDQUNnQ2dBRVJBQUJCQ2tZTkFCb2dBaUFDS0FJQUtBS0FBUkVBQUVFTFJnc2hBd0ovUVFFZ0FpQUNLQUlBS0FLQUFSRUFBRUVEUmcwQUdrRUJJQUlnQWlnQ0FDZ0NnQUVSQUFCQkFVWU5BQm9nQWlBQ0tBSUFLQUtBQVJFQUFFRUNSZ3NoQ0NBQlFYeHFJUVVnQVVFQmNpRUhBa0FDUUNBQUVQNEdEUUFnQXlBSFFRVkhja0VCUncwQklBSWdBaWdDQUNnQ2dBRVJBQUJCQkVjRVFDQUNJQUlvQWdBb0FvQUJFUUFBUVFWSElBVkJDRWx5RFFFTUFnc2dCVUVIU3cwQkN3SkFJQUFRL1FZTkFDQURRUUZ6SUFkQkIwWnhEUUVnQWlBQ0tBSUFLQUtBQVJFQUFFRUdSd1JBSUFJZ0FpZ0NBQ2dDZ0FFUkFBQkJCMGNnQlVFSVNYSU5BUXdDQ3lBRlFRZExEUUVMQWtBZ0FCRGVDQTBBSUFnZ0FVRURSM0pCQVVjTkFTQUNJQUlvQWdBb0FvQUJFUUFBSVFNZ0FVRi9ha0VEU1EwQUlBTkJBMFlOQVFzZ0JFRUFOZ0pzSUFFZ0FpQUNLQUlBS0FLQUFSRUFBQ0FFUWV3QWFoRDRGa1VOQUNBRVFSaHFJQUZCQUNBQ0lBSW9BZ0FvQXBBQkVRQUFJQUlnQWlnQ0FDZ0NsQUVSQUFBZ0FpQUNLQUlBS0FLWUFSRUFBRUVBRUVVaEJTQUVLQUpzSVFZZ0JDQUNJQUlvQWdBb0FnQVJBQUFpQXlrQ0NEY0RFQ0FFSUFNcEFnQTNBd2dnQmlBQ0lBUkJDR29nQlJEaUNDRURBa0FDUUNBQ0lBSW9BZ0FvQWhRUkFBQkZEUUFnQUJEK0JrVkJBQ0FIUVFWR0d3MEFRUUFnQjBFSFJpQUFFUDBHR3cwQVFRQWdBVUVEUmlBQUVONElHdzBBSUFJZ0FpZ0NBQ2dDRkJFQUFDSUFJQVFvQW13Z0JTQUFLQUlBS0FLOEFSRUhBQ0lHRFFFTEFrQWdBaUFDS0FJQUtBSjRFUUFBSWdBZ0FDZ0NBQ2dDTEJFQUFCRG1BVVVOQUNBREVPa0lSUTBBSUFNZ0F5Z0NBQ2dDZkJFQUFDSUFJQUFvQWdBb0FpZ1JBQUFRcVFNTElBTWhCZ3NnQlJBMUdnc2dCRUh3QUdva0FDQUdDeU1BSUFOQkJVWUVRQ0FBSUFFZ0FpQUVFSUlIRHdzZ0FDQUJJQUlnQXlBRUVJTUhDeUFCQVg4Z0FDZ0NCQ0FCS0FJQVRnUi9JQUFvQWdBZ0FTZ0NCRXdGSUFJTEN3c0FJQUFnQVNBQ0VPRU5Dd2dBSUFBb0FnUkZDdzhBSUFBZ0FDZ0NBRUVNYWpZQ0FBczFBUUYvSXdCQkVHc2lBU1FBSUFFZ0FDZ0NCRUYvYWpZQ0RDQUFRUkJxSUFGQkRHb1EvZ0VvQWdBaEFDQUJRUkJxSkFBZ0FBc0pBQ0FBRU9vTklBQUxDd0FnQUNBQklBSVFvQVFMQ1FBZ0FTQUNFTklEQ3dvQUlBRWdBaER0QVJvTEJBQkJmd3NkQVFGL0lBQkJpTDRQTmdJQUlBQW9BaGdpQVFSQUlBRVFLZ3NnQUFzUUFDQUFRZ0EzQWdBZ0FFSUFOd0lJQ3drQUlBRWdBaERJQ2dzUEFFR1E5QklvQWdBZ0FCRHNDeG9MRFFBZ0FDMEFBMEVnY1VFRmRnc05BQ0FBTFFBQ1FRaHhRUU4yQ3hFQUlBQW9BaUJCZ1A0ZmNVR0EvaDlIQ3lFQUlBQkJmMm9pQUVFRVRRUkFJQUJCQW5SQjFMTVBhaWdDQUE4TFFmYWFEd3NUQUNBQUtBSVVRWUNBL2dGeFFZQ0EvZ0JIQ3c0QUlBQW9BZ1FnQVJBc0tBSUFDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCQzNBa0VDZEdvYUlBQW9BZ0FnQUJDM0FrRUNkR29hSUFBb0FnQWFDM0lCQVg4Z0FDQUJFTFVKSUFCQnZNOFBOZ0lBSUFCQkZHb1Frd0VhSUFCQkpHcEJBRUVBUVFGQkFFRUFRUUFRUlNFRUlBQkIvQUJxSUFFUTB4b2dBRUlBTndLUUFTQUFJQU0yQW93QklBUWdBaENQQVNBQUlBSWdBaWdDQUNnQ0xCRUFBQ2dDQkVFR2RrSC9BM0UyQW5nZ0FBc0pBQ0FBSUFFUXdna0xNUUVCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVNBQUVEd2dBQkFsRUtZT0VERW9BZ0FoQUNBQ1FSQnFKQUFnQUFzbkFRRi9Jd0JCRUdzaUFpUUFJQUlnQVJDckJ5SUJJQUFRZ1E4Z0FSQ3NBaUFDUVJCcUpBQUxDd0FnQUVFQU5nSUFJQUFMbEFFQkEzOGpBRUVnYXlJR0pBQWdBQ2dDVENBR1FSQnFJQU1RSWlJSFFRQkJBQkNzQVNFRklBY1FHUm9nQlNBRktBSUFLQUlrRVFBQUlnVWdCU2dDQUNnQ1hCRUFBQ0lGUVFBUUR5Z0NBQ0FDU0FSQUlBVkJBQkFQS0FJQUlRSWdBQ2dDQUNnQ29BRWhCU0FHSUFJMkFnUWdCaUFETmdJQUlBQWdBVUg1NGdvZ0JFR1g0d29nQmlBRkVRSUFDeUFHUVNCcUpBQUxMd0VCZnlNQVFSQnJJZ0VrQUNBQVFnQTNBZ0FnQVVFQU5nSU1JQUJCQ0dvZ0FVRU1haENoQ3lBQlFSQnFKQUFMQ2dBZ0FDMEFDVUVCY1F1Q0FnSUNmd0YrQWtBQ1FDQUNLUUlFSWdXblFUOXhJZ05CYzJvaUJFRUNTd1JBSUFOQkFrOE5BUXdDQ3dKQUFrQUNRQ0FFUVFGckRnSUJBZ0FMSUFBZ0FVRUJRWUlCUVFCQnpLa0tFQ2dnQUNBQlFRaEJyQUpCQUVITXFRb1FLQ0FDSUFJcEFnUkNRSU5DQTRRM0FnUU1Bd3NnQUNBQlFRRkJnZ0ZCQUVIZ3FRb1FLQ0FBSUFGQkNFR3NBa0VBUWVDcENoQW9JQUlnQWlrQ0JFSkFnMElFaERjQ0JBd0JDeUFDSUFWQ1FJTkNBNFEzQWdRZ0FDQUJRZmFwQ2tIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQUlRNGdKRkRRQWdBQ0FCUVptcUNrRytxUXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBZ0FTQUNFT1FKQ3c0QUlBQkJBMEhEbWdvUWhRSkZDeUFCQVg4Z0FDZ0NBQ0VCSUFCQkFEWUNBQ0FCQkVBZ0FCQWxJQUVRNVFrTEN6Y0JBbjlCQVNFQkFrQWdBQkJnUVFGTURRQURRQ0FBSUFFUXJBVUVRQ0FCUVFGcUlnRWdBQkJnU0EwQkRBSUxDMEVCSVFJTElBSUxDUUFnQVNBQ0VKZ0NDek1BSUFJZ0FpZ0NBQ2dDdEFFUkFBQUVRQ0FBSUFGQkFVSDRBRUhoNGdrZ0F4QW9JQUFnQVVFSVFhd0NRUUFnQXhBb0N3dm5BUUVDZnlNQVFTQnJJZ1VrQUNBQUlBRWdBaUFFSUFBb0FnQW9BdkFCRVFRQUFrQUNRQ0FFSUFRb0FnQW9BbmdSQUFBUXNBSUVRQ0FBSUFBb0FnQW9Ba3dSQUFCRkRRRUxJQVFnQkNnQ0FDZ0NlQkVBQUJDdkFnUkFJQUFnQUNnQ0FDZ0NXQkVBQUVVTkFRc2dCQ0FFS0FJQUtBSjRFUUFBRU1ZQ0JFQWdBQ0FBS0FJQUtBSmtFUUFBUlEwQkN5QUFLQUlvSVFZZ0JTQUJLUUlJTndNSUlBVWdBU2tDQURjREFDQUdJQU1nQkNBRkVQRU1JZ01OQVFzZ0JVRVFhaUFFRUtvQ0lBQWdBU0FDSUFWQkVHb1E3UThnQlVFUWFoQVpHaUFFSVFNTElBVkJJR29rQUNBREN3MEFJQUF0QUFoQklIRkJCWFlML3dJQkJYOGpBRUhnQUdzaUJDUUFBa0FnQVNnQ0FDSUNJQUlvQWdBb0FqQVJBQUFpQWtVTkFDQUNJQUlvQWdBb0FuZ1JBQUFpQXlBREtBSUFLQUljRVFBQVJRUkFBbjlCNDlZSklBQW9BaUJGRFFBYVFmK1BDaUFDSUFJb0FnQW9Bc0FCRVFBQVFmT1BDaEFyRFFBYVFlUFdDU0FBS0FJZ1JRMEFHa0dza0FwQjQ5WUpJQUlnQWlnQ0FDZ0N3QUVSQUFCQm5wQUtFQ3NiQ3lFRElBQWdBaUFDS0FJQUtBSUFFUUFBUWMyUUNpQUNJQUlvQWdBb0FzQUJFUUFBRUJNZ0EwRUFJQUFvQWdBb0FxQUJFUUlBSUFJZ0FpZ0NBQ2dDd0FFUkFBQVFIMFVOQVVHQUFSQkdJZ01nQWlBQ0tBSUFLQUxBQVJFQUFDQUVRUWhxUVFGQkFFRUJRUUJCQUVFQUVFVWlCVUVBRU8wQ0lRWWdCUkExR2lBQUtBSk1JQU1RN0FJYUlBRWdBQ2dDS0NBR0lBSWdBaWdDQUNnQ0FCRUFBQkNxQXpZQ0FBd0JDeUFDSUFJb0FnQW9Bb1FCRVFBQUtRSUVRaitEUWhoU0RRQWdBQ0FDSUFJb0FnQW9BZ0FSQUFCQkFVSDRBRUVBUWVPUUNoQW9DeUFFUWVBQWFpUUFDd3NBSUFBb0Fnd3RBQWhGQzEwQkEzOGdBQ2dDQUNFQklBQVFwd1VoQWlBQUVLZ0ZJUU1nQWlBQUVJb0JJQUZCRDNaQkFuRnlRUU4wSUFGQkVYWkJBWEZCQWtFQUlBTWJja0VCZEhKeVFSUnNJQUFvQWdBaUFFSC9BWEZxUVFOMElBQkJDSFpCL3dGeGFnc3hBUUYvSXdCQkVHc2lBaVFBSUFJZ0FDZ0NBRFlDQ0NBQ1FRaHFJQUVReHdVZ0FpZ0NDQ0VBSUFKQkVHb2tBQ0FBQzFrQkFYOGpBRUVRYXlJRUpBQWdBUkFiSWdFZ0FFRU1FQ1lnQkVFSWFpQUJRUUFRd3dFUWtRRWlBQ2dDQUVFSWFpQURFUGtCSUFBUUpVRUJPZ0FFSUFBb0FnQWdBallDQkNBQUtBSUFRUUEyQWdBZ0JFRVFhaVFBQ3drQUlBQWdBUkI2UlFzcEFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJFSThRRURFb0FnQWhBQ0FDUVJCcUpBQWdBQXNUQUNBQVFaU2NDVFlDQUNBQVFRUnFFS1FGQzBnQkFYOGdBQ2dDQUNJQ0tBSVlRWDlxUWY2SEJFMEVRQ0FDSUFBb0FnUW9BZ0FpQUNBQUtBSUFLQUlBRVFBQVFZMk5DU0FCUWRLTENVRUFJQUlvQWdBb0FxUUJFUUlBQ3dzU0FDQUFJQUFvQWdBZ0FVRUNkR28yQWdBTEt3QWdBQ2dDQUJvZ0FDZ0NBQ0FBRUxjQ1FRSjBhaG9nQUNnQ0FCb2dBQ2dDQUNBQUVCWkJBblJxR2d0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFFTkFLSWdNZ0FVOEVRQ0FBRUxjQ0lnQWdBMEVCZGtrRVFDQUNJQUJCQVhRMkFnZ2dBa0VJYWlBQ1FReHFFRklvQWdBaEF3c2dBa0VRYWlRQUlBTVBDeEJ1QUF0OEFRTi9Jd0JCRUdzaUJTUUFBa0FnQUJCZElnUWdBQkFmSWdOcklBSlBCRUFnQWtVTkFTQUFFQk1pQkNBRGFpQUJJQUlRNkFFZ0FDQUNJQU5xSWdFUWh3TWdCVUVBT2dBUElBRWdCR29nQlVFUGFoQ1VBUXdCQ3lBQUlBUWdBaUFEYWlBRWF5QURJQU5CQUNBQ0lBRVEyd29MSUFWQkVHb2tBQ0FBQ3lRQUlBQkJBazhFZnlBQVFRUnFRWHh4SWdBZ0FFRi9haUlBSUFCQkFrWWJCVUVCQ3dzWUFRRi9JQUFRRmlFQ0lBQWdBUkN4Q2lBQUlBSVF5QVVMS3dFQmZ3Si9JQUFnQUNnQ0JFRi9haUlCTmdJRUlBRkJmMFlMQkVBZ0FDQUFLQUlBS0FJSUVRVUFDd3M5QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVJCY0lBSWdBMEVJYWhEb0JDSUJFSWdDTmdJQUlBQWdBUkNIQWlBRFFRaHFFRmtnQTBFUWFpUUFDd2tBSUFBZ0FSRHpFZ3M5QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVJCY0lBSWdBMEVJYWhEcUJDSUJFSWdDT2dBQUlBQWdBUkNIQWlBRFFRaHFFRmtnQTBFUWFpUUFDd2tBSUFBUWt3c2dBQXVaQVFFRGZDQUFJQUNpSWdNZ0F5QURvcUlnQTBSODFjOWFPdG5sUGFKRTY1d3JpdWJsV3I2Z29pQURJQU5FZmY2eFYrTWR4ejZpUk5WaHdSbWdBU3Evb0tKRXB2Z1FFUkVSZ1QrZ29DRUZJQU1nQUtJaEJDQUNSUVJBSUFRZ0F5QUZva1JKVlZWVlZWWEZ2NkNpSUFDZ0R3c2dBQ0FESUFGRUFBQUFBQUFBNEQraUlBUWdCYUtob2lBQm9TQUVSRWxWVlZWVlZjVS9vcUNoQzVJQkFRTjhSQUFBQUFBQUFQQS9JQUFnQUtJaUFrUUFBQUFBQUFEZ1A2SWlBNkVpQkVRQUFBQUFBQUR3UHlBRW9TQURvU0FDSUFJZ0FpQUNSSkFWeXhtZ0Fmbytva1IzVWNFV2JNRld2NkNpUkV4VlZWVlZWYVUvb0tJZ0FpQUNvaUlESUFPaUlBSWdBa1RVT0lpKzZmcW92YUpFeExHMHZaN3VJVDZnb2tTdFVweUFUMzZTdnFDaW9LSWdBQ0FCb3FHZ29BdGxBUU4vSUFKRkJFQkJBQThMQWtBZ0FDMEFBQ0lEUlEwQUEwQUNRQ0FESUFFdEFBQWlCVWNOQUNBQ1FYOXFJZ0pGSUFWRmNnMEFJQUZCQVdvaEFTQUFMUUFCSVFNZ0FFRUJhaUVBSUFNTkFRd0NDd3NnQXlFRUN5QUVRZjhCY1NBQkxRQUFhd3U2QVFFQ2Z5TUFRYUFCYXlJRUpBQWdCRUVJYWtHdzlSRkJrQUVRUFJvQ1FBSkFJQUZCZjJwQi8vLy8vd2RQQkVBZ0FRMEJRUUVoQVNBRVFaOEJhaUVBQ3lBRUlBQTJBalFnQkNBQU5nSWNJQVJCZmlBQWF5SUZJQUVnQVNBRlN4c2lBVFlDT0NBRUlBQWdBV29pQURZQ0pDQUVJQUEyQWhnZ0JFRUlhaUFDSUFNUTVRc2hBQ0FCUlEwQklBUW9BaHdpQVNBQklBUW9BaGhHYTBFQU9nQUFEQUVMUWRqQUZFRTlOZ0lBUVg4aEFBc2dCRUdnQVdva0FDQUFDeU1CQVg4Z0FDZ0NoQUVvQWpRaUFVRThFQ1lnQUJCVklBRVE5QU1pQUJEekF5QUFDMEVCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFCQkVHb2dBa0VNYWhCSElBSW9BZ3doQVNBQ0lBQTJBZ2dnQVVFY2FpQUNRUWhxRUVFZ0FrRVFhaVFBQzhJQ0FRTi9Jd0JCRUdzaUJTUUFBbjlCQUNBQlFabC9haUlFUVFSTERRQWFBa0FDUUFKQUlBUkJBbXNPQXdFQ0FnQUxRUUFoQkNBQVFlZ0FhaUFBSUFJb0FnQVE5d01RTDBFQkVDOGlCa0VHVFFSQUlBWkJBblJCa084UmFpZ0NBQ0VFQ3lBRUlBQkI2QUJxSUFBZ0FpZ0NBQkQzQXhBdlFRTVFMMEVBUjJvaEJBSi9JQU1FUUNBQVFTQVF5UUVNQVFzZ0FFRWdFS0lDQ3lJRElBUkJBVVlOQWhvZ0FDQURJQVFRc1FFTUFnc2dBQ0FBSUFBZ0FpZ0NCQkJpRUxzQ1FRSVFzUUVNQVFzZ0F3UkFJQUJCSUJESkFRd0JDeUFBUVNBUW9nSUxJUU5CTEJBbUlBQVFWU0FESUFFUVVTSUJJQUlvQWdBUU9TQUNLQUlFSWdNRVFDQUJJQU1RT1FzZ0FpZ0NEQ0lDQkVBZ0FTQUNFRGtMSUFBb0FvUUJJQVZCQ0dvZ0FSQTZJZ0lRZkNBQ0VENGdBRUV5RUNFZ0FTZ0NCQ0VBSUFWQkVHb2tBQ0FBQ3pRQkFYOUJQQkFtSUFBUVZTQUFLQUtFQVNnQ05CRDBBeUlCUVFFNkFEZ2dBQ2dDaEFFb0FqUWdBUkR6QXlBQUlBRVE1UUVMUVFFQ2Z5TUFRUkJySWdNa0FFRXNFQ1pCQlJDM0FTSUVJQUVRT1NBRUlBSVEvZ0lnQUVINEFXb2dBMEVJYWlBRUVEb2lBQkI5SUFBUVBpQURRUkJxSkFBTC9BRUJCSDhqQUVFUWF5SURKQUFnQTBFZ05nSUlBa0FnQUVIY0Ftb2lCU0FEUVFocUVEOFFGa0VCVGdSQUEwQWdBMEVnTmdJSUlBTWdCU0FEUVFocUVEOGdCQkFSS0FJQUlnWTJBZ3dnQmtFQUVDOGdBVVlFUUNBREtBSU1RUUVRTHlBQ1JnMERDeUFEUVNBMkFnZ2dCRUVCYWlJRUlBVWdBMEVJYWhBL0VCWklEUUFMQzBFc0VDWWlCaUFBRUZWQkFFRWdFRkVoQkNBRElBWTJBZ3dnQkNBQkVFd2dCQ0FDRURrZ0EwRWdOZ0lJSUFVZ0EwRUlhaEEvSUFOQkRHb1FSeUFBUVpBQ2FpQURRUWhxSUFNb0Fnd1FPaUlCRUgwZ0FSQStJQUJCNkFCcUlBTW9BZ3dRakFFTElBTW9BZ3dvQWdRaEFDQURRUkJxSkFBZ0FBdFBBUUYvSXdCQjRBQnJJZ0FrQUNBQVFkZ0Fha0VCRVBVQklnVkJBQkFQSUFFUUxTQUZJQUFnQWtFQ1FRRkJBRUVBUVFBUVJTSUNJQU1nQkJEUUFpRURJQUlRTlJvZ0FFSGdBR29rQUNBREN5d0JBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJJQUlnQWhEZUZDQUFJQU5CQ0dvUTF3UWdBMEVRYWlRQUN3Y0FJQUJCRUVjTFdRRUJmMEVCSVFRQ1FDQUREUUFDZnlBQUtBS01CQnBCQUFzRVFDQUNJQUlvQWdBb0Fod1JBQUJCRUVZUEN5QUNJQUlvQWdBb0FzQUJFUUFBRFFBZ0FVRUdSaUFDSUFJb0FnQW9BaHdSQUFCQkVFWnhJUVFMSUFRTERRQWdBQ0FBSUFFUVloQzBEQXRXQVFGL0lBRWdBaENLQnlJREJFQWdBRUU0YWhCeklBTWdBQ0FES0FJQUtBSUlFUUVBSUFBZ0F5QURLQUlBS0FJTUVRQUFJZ0FnQUNnQ0FDZ0NlQkVBQUJDaEFROExJQUJCT0dvZ0FTQUNFTllCUVFBUWRBc1ZBQ0FBUWVnQWFpQUFJQUVRdXdJUUwwRUFFQzhMRXdBZ0FDQUFRY0FBRUtJQ0lBRWdBaENaREFzU0FDQUFJQUJCRUJDaUFpQUJJQUlROHdRTEVnQWdBQ0FBUVFnUW9nSWdBU0FDRVBNRUN4a0FJQUFnQXpZQ0NDQUFJQUkyQWdRZ0FDQUJOZ0lBSUFBTEVBQkJLa0gvLy8vL0J5QUFFTGNER3dzaEFRRi9JQUFvQWdBaEFTQUFMUUFFQkVBZ0FSQ0FDUThMSUFGQkFEb0FrQUVMRmdBZ0FDQUJOZ0lBSUFBZ0FTMEFrQUU2QUFRZ0FBc1dBQ0FBSUFFdEFBQTZBQUFnQUVFRWFpQUNFTklEQ3g4QUlBQWdBQ2dDQUNnQ2VCRUFBQ0lBSUFBb0FnQW9BaXdSQUFBUXR3TUxod01CQTM4akFFRXdheUlGSkFBQ1FDQUNJQUlvQWdBb0FuZ1JBQUFpQmlBR0tBSUFLQUljRVFBQVFSQkdEUUFnQXlBREtBSUFLQUo0RVFBQUlnWWdCaWdDQUNnQ0hCRUFBRUVRUmcwQUFrQWdBVUhKZTJwQkFVc05BQ0FDRVBJQlJRMEFJQUJCc2Y4SUVJMEJSUTBBSUFNZ0F5Z0NBQ2dDZUJFQUFDSUdJQVlvQWdBb0FtQVJBQUJGRFFFZ0F5QURLQUlBS0FKNEVRQUFJZ1lnQmlnQ0FDZ0NrQUVSQUFCRkRRRWdCU0FFS1FJSU53TVlJQVVnQkNrQ0FEY0RFQ0FBUVpjQlFaZ0JJQUZCdHdSR0d5QUNJQU1nQlVFUWFoRFBBeUlCUlEwQklBSWdBaWdDQUNnQ01CRUFBQkRBR0NFQ0lBVWdCQ2tDQ0RjRENDQUZJQVFwQWdBM0F3QWdBRUcyQkNBQ0lBRWdCUkRzQlNFSERBRUxJQUFnQVNBQ0lBSW9BZ0FvQW5nUkFBQWdBeEMzQkNJRFJRMEFJQUlnQWlnQ0FDZ0NlQkVBQUJvZ0JTQUVLUUlJTndNb0lBVWdCQ2tDQURjRElDQUFJQUVnQWlBRElBVkJJR29RN2dnaUFCRHRDRVVOQUNBQUlBQW9BZ0FvQXNnQkVRVUFJQUFoQndzZ0JVRXdhaVFBSUFjTENRQWdBQkRxQVNBQUN4b0FJQUFnQVNBQktBSUFRWFJxS0FJQWFpZ0NHRFlDQUNBQUN4Z0FJQUJCZkdvaUFFRUdUUVJBSUFCQkFYRkZEd3RCQUFzU0FDQUFFS1FYSWdCQk9Hb1E3QVFhSUFBTFdBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBaUFBUVFScUlnQWdBa0VNYWhESEZ6WUNDQ0FDSUFBUWZqWUNBRUVBSVFBZ0FrRUlhaUFDRUxnRFJRUkFJQUpCQ0dvUVYwRUVhaUVBQ3lBQ1FSQnFKQUFnQUFzMUFDQUFLQUpBSWdBZ0FDZ0NBQ2dDR0JFQUFDSUFJQUFvQWdBb0Fyd0JFUUFBRUpBQktBSUFJZ0FnQUNnQ0FDZ0NHQkVBQUFzT0FDQUFMUUFCUVFoMFFZQUNSZ3RZQVFKL0lBQWdBQ2dDQUNJQktBSUVJZ0kyQWdBZ0FnUkFJQUlnQUJEUEJBc2dBU0FBS0FJSU5nSUlBbjhnQUJDbkFnUkFJQUFvQWdnTUFRc2dBQ2dDQ0VFRWFnc2dBVFlDQUNBQklBQTJBZ1FnQUNBQkVNOEVDMWdCQW44Z0FDQUFLQUlFSWdFb0FnQWlBallDQkNBQ0JFQWdBaUFBRU04RUN5QUJJQUFvQWdnMkFnZ0NmeUFBRUtjQ0JFQWdBQ2dDQ0F3QkN5QUFLQUlJUVFScUN5QUJOZ0lBSUFFZ0FEWUNBQ0FBSUFFUXp3UUxEZ0FnQUMwQUFVRUlkRUdBQ2tZTE5RQWdBQ2dDQUJvZ0FDZ0NBQ0FBRUxrRFFRUjBhaG9nQUNnQ0FDQUFFS2dCUVFSMGFob2dBQ2dDQUNBQUVMa0RRUVIwYWhvTENnQWdBQ2dDQkVGMGFnc3NBQ0FBS0FJQUdpQUFLQUlBSUFBUXF3TkJER3hxR2lBQUtBSUFJQUFRcXdOQkRHeHFHaUFBS0FJQUdnc01BQ0FBS0FJQUlBRVFsQUlMSGdBZ0FCQXdHaUFBUVFBMkFoUWdBRUVBT3dFUUlBQkJBRFlDRENBQUM2QUJBUU4vSUFCQ0FEY0NGQ0FBUVJBMkFnUWdBRUdBd0FBMkFnQWdBRUVjYWhBd0dpQUFRUUEyQWlnZ0FDQUFLQUlBSWdGQi94OU5CSDhnQUVHQUlEWUNBRUdBSUFVZ0FRczJBaEFnQUNBQUtBSUVRWHh4SWdGQkJDQUJHeUlETmdJRVFRRWhBUU5BSUFFaUFrRUJkQ0VCSUFJZ0Ewa05BQXNnQUNBQ05nSUVJQUFnQWtGL2FqWUNDQ0FBSUFKQkIycEJBQ0FDYTNFMkFnd2dBQkNkQ1NBQUN3a0FJQUJCS0JDaUNRc2NBQ0FCSUFCcklnRUVRQ0FDSUFGcklnSWdBQ0FCRU9RREN5QUNDeDBBSUFBZ0FTZ0NDRFlDQ0NBQUlBRXRBQXc2QUF3Z0FDQUJFSm9hQ3c0QUlBQXRBQU5Cd0FCeFFRWjJDeEFBSUFJRVFDQUFJQUVnQWhEa0F3c0xHd0FnQUNrQ0dFS0FnSUNBZ1A3L0FZTkNnSUNBZ0lEKy93RlNDdzRBSUFBb0FnUWdBUkFzS0FJRUN3b0FJQUFvQWp4QkFFY0xKd0FnQXlBREtBSUFJQUlnQVdzaUFHc2lBallDQUNBQVFRRk9CRUFnQWlBQklBQVFQUm9MQ3hFQUlBQWdBU2dDQUNBQktBSUVFTjBPQ3lNQkFYOGdBUVJBSUFBb0Fqd2lBa1VFUUNBQUlBRVEzdzRQQ3lBQ0lBRVFteG9MQ3lzQkFYOGpBRUVRYXlJQ0pBQWdBQ0FCSUFJUTBRVWlBQkRNQ1NBQUlBQVFQQkNzQnlBQ1FSQnFKQUFMaGdvQkJYOGpBRUd3QVdzaUJ5UUFBa0FnQXlBREtBSUFLQUlZRVFBQUlnUkZEUUFnQkNnQ2FBMEFJQUlnQWlnQ0FDZ0NjQkVBQUFSQVFRQWhBeUFIUWRnQWFrRUFRUUJCQVVFQVFRQkJBQkJGSWdVZ0FoQ1BBU0FGSUFJZ0FpZ0NBQ2dDVEJFQUFCRGZEaUFGSUFRZ0JDZ0NBQ2dDdkFFUkFBQVFGaENOQXlBRUlBUW9BZ0FvQXJ3QkVRQUFRUUFRRVNnQ0FDSUNJQUlvQWdBb0Fnd1JBQUFoQmdKQUlBVVFqQU5GRFFBZ0JpQUdLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NjQkVBQUVVTkFFRUJJUUlnQlNnQ1BCQmdJQVlnQmlnQ0FDZ0NlQkVBQUNJSUlBZ29BZ0FvQWt3UkFBQVFZRUVCYWtjTkFDQUZLQUk4RUdCQkFrZ05BQU5BSUFVb0Fqd2dBaERXQVVVRVFDQUZLQUk4SUFJZ0JpQUdLQUlBS0FKNEVRQUFJZ2dnQ0NnQ0FDZ0NUQkVBQUNBQ1FYOXFFTllCRUpzRUN5QUNRUUZxSWdJZ0JTZ0NQQkJnU0EwQUN3c2dCeUFGUVFCQkFCRE5BU0VDQW44Q1FDQUVJQVFvQWdBb0Fyd0JFUUFBRUJaRkRRQURRQUpBSUFBZ0FTQUNJQVFnQkNnQ0FDZ0N2QUVSQUFBZ0F4QVJLQUlBSWdZZ0JpZ0NBQ2dDREJFQUFCQ0pCaUVHSUFRZ0JDZ0NBQ2dDdkFFUkFBQWdBeEFSSUFZMkFnQWdCQ0FFS0FJQUtBSzhBUkVBQUNBREVCRW9BZ0JGRFFBZ0EwRUJhaUlESUFRZ0JDZ0NBQ2dDdkFFUkFBQVFGa2tOQVF3Q0N3dEJBQXdCQ3lBQUlBRWdCQ0FGRUpVR0N5RURJQUlRTlJvZ0JSQTFHZ3dCQ3dKQUFrQWdBaUFDS0FJQUtBS0lBUkVBQUFSQUFrQWdBaWdDUUJBM0lBUWdCQ2dDQUNnQ3ZBRVJBQUFRRmtZRVFDQUNLQUpBRURkRkRRTkJBQ0VEREFFTFFRQWhBeUFBSUFGQnJab0xRYythQzBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3RUN3TkFJQUFnQVNBQ0tBSkFJQU1RT0NnQ0FDQUVJQVFvQWdBb0Fyd0JFUUFBSUFNUUVTZ0NBQ0lGSUFVb0FnQW9BZ3dSQUFBUWlRWWhCU0FFSUFRb0FnQW9BcndCRVFBQUlBTVFFU0FGTmdJQUlBUWdCQ2dDQUNnQ3ZBRVJBQUFnQXhBUktBSUFSUTBESUFOQkFXb2lBeUFDS0FKQUVEZEpEUUFMREFFTElBSWdBaWdDQUNnQ2JCRUFBQVJBSUFJZ0FpZ0NBQ2dDTkJFQUFDQUVJQVFvQWdBb0Fyd0JFUUFBRUJaSEJFQWdCMEhZQUdvZ0FoREtBVUVBSVFNZ0FDQUJRZUNhQzBIUG1nc2dCMEhZQUdvUUUwRUFJQUFvQWdBb0FxQUJFUUlBSUFkQjJBQnFFQmthREFRTFFRQWhBeUFIUWRnQWFpQUNRUUJCQUJETkFTRUZBa0FnQWlBQ0tBSUFLQUkwRVFBQVFRQktCRUFEUUNBQUlBRWdCU0FFSUFRb0FnQW9BcndCRVFBQUlBTVFFU2dDQUNJR0lBWW9BZ0FvQWd3UkFBQVFpUVloQmlBRUlBUW9BZ0FvQXJ3QkVRQUFJQU1RRVNBR05nSUFJQVFnQkNnQ0FDZ0N2QUVSQUFBZ0F4QVJLQUlBUlEwQ0lBTkJBV29pQXlBQ0lBSW9BZ0FvQWpRUkFBQklEUUFMQ3lBRkVEVWFEQUlMSUFVUU5Sb01BZ3NnQWlBQ0tBSUFLQUpvRVFBQUJFQWdBaUFDS0FJQUtBSXdFUUFBSUFRZ0JDZ0NBQ2dDdkFFUkFBQVFGa1lOQVNBSFFkZ0FhaUFDRU1vQlFRQWhBeUFBSUFGQmdKc0xRYythQ3lBSFFkZ0FhaEFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCMEhZQUdvUUdSb01Bd3NnQjBIWUFHb2dBaERLQVVFQUlRTWdBQ0FCUWJDYkMwSFBtZ3NnQjBIWUFHb1FFMEVBSUFBb0FnQW9BcUFCRVFJQUlBZEIyQUJxRUJrYURBSUxJQUFnQVNBRUlBUW9BZ0FvQXJ3QkVRQUFFQlpCQVVZRWZ5QUVJQVFvQWdBb0Fyd0JFUUFBUVFBUUVTZ0NBQVVnQkFzZ0FoQ1ZCaUVEREFFTFFRQWhBd3NnQjBHd0FXb2tBQ0FEQ3lJQkFYOGdBQ2dDa0FRaUFrRi9Sd1JBSUFFZ0FrWVBDeUFBSUFFMkFwQUVRUUVMSHdFQmZ5QUFLQUtZQkNJQ0JFQWdBU0FDUmc4TElBQWdBVFlDbUFSQkFRc3ZBQ0FDSUFJb0FnQW9Bc3dCRVFBQUJFQWdBQ0FCUWJMYkNpQURRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd3NWQUNBQUtBSUVJZ0JGQkVCQkFBOExJQUFRcUFFTDVRSUJBWDhnQTBFQU5nSUVBa0FDUUNBREFuOGdBaUFDS0FJQUtBSVVFUUFBSWdVRVFDQUZFRXRCQUJBUEtBSUFEQUVMQWtBZ0FpQUNLQUlBS0FLRUFSRUFBQkRtQVFSQUlBTWdBallDQkNBQ0lBSW9BZ0FvQWpBUkFBQWlBMFVOQVVFQklBTVFrQUlRalFaQkFVZ05BaG9nQXhDUUFrRUFFQThvQWdBTUFnc0NRQ0FDSUFJb0FnQW9BaHdSQUFCRkRRQWdBaUFDS0FJQUtBSWNFUUFBS0FKb1FjVUVSdzBBSUFJZ0FpZ0NBQ2dDSEJFQUFDSUZJQVVvQWdBb0Fyd0JFUUFBSWdVZ0JTZ0NBQ2dDZUJFQUFCQ0ZBVVVOQUNBRElBSWdBaWdDQUNnQ0hCRUFBRFlDQkF3QkN5QURRUUUyQWdBTUFndEJBUXNpQXpZQ0FDQUNJQUlvQWdBb0FvQUJFUUFBUVFoSEJFQWdBaUFDS0FJQUtBS0FBUkVBQUVFSlJ3MEJDeUFEUVFCS0RRRWdBQ0FCSUFSQjQ5WUpRZlM4Q2tFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQUNBQklBUkI0OVlKUWM2OENrRUFJQUFvQWdBb0FxQUJFUUlBQ3d2NEFRRUJmeU1BUVJCcklnUWtBQUpBSUFKQkFYSkJEMGNOQUNBRElBTW9BZ0FvQXBRQkVRQUFSUTBBSUFRZ0F4Q3BBaUFBSUFGQm1Md0tJQVFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUNBRUVCa2FDd0pBSUFBdEFLUUJEUUFnQXhDd0FnUkFJQVFnQXhDcEFpQUFJQUVnQkJBVFFhN3FDU0FBS0FJQUtBSlFFUVFBSUFRUUdSb0xJQUF0QUtRQkRRQWdBeEN2QWdSQUlBUWdBeENwQWlBQUlBRWdCQkFUUWV2cUNTQUFLQUlBS0FKY0VRUUFJQVFRR1JvTElBQXRBS1FCRFFBZ0F4REdBa1VOQUNBRUlBTVFxUUlnQUNBQklBUVFFMEdwNndrZ0FDZ0NBQ2dDYUJFRUFDQUVFQmthQ3lBRVFSQnFKQUFMbWdVQkFYNGdBUkROQkFSQUlBQWdBQ2tDQkVMLy8vLy8vLy8vUjRNZ0FTa0NCRUtBZ0lDQWdJQ0FPSU9FTndJRUN5QUJFSVlEQkVBZ0FDQUFLUUlFUXYvLy8vLy8vLysvZUlNZ0FTa0NCRUtBZ0lDQWdJQ0F3QWVEaERjQ0JBc2dBUkN4QXdSQUlBQWdBU2tDR0VJWWlEd0FHd3NnQVJDZkJ3UkFJQUFnQVMwQUpEb0FKQXNnQVJDVkFnUkFJQUFnQUNrQ0dFTC8vLy8vajM2RElBRXBBaGhDZ0lDQWdQQUJnNFEzQWhnTElBRVFxd2tFUUNBQUlBQW9BaUJCLy8rZmNIRWdBU2dDSUVHQWdPQVBjWEkyQWlBTElBRVEyUU1FUUNBQUlBRW9BaEEyQWhBTEFrQWdBZzBBSUFFUWdBSUVRQ0FBSUFBb0FoUkJnR0J4SUFFb0FoUkIveDl4Y2pZQ0ZBc2dBUkNXQWdSQUlBQWdBU2dDRERZQ0RBc2dBUkNyQlFSQUlBQWdBQ2dDRkVILy80RitjU0FCS0FJVVFZQ0EvZ0Z4Y2pZQ0ZBc2dBVE1CR0NJRFF2Ly9BMUlFUUNBQUlBTTlBUmdMSUFFUXFRVUVRQ0FBSUFBb0FpQkIvNEZnY1NBQktBSWdRWUQrSDNGeU5nSWdDeUFCRUxJREJFQWdBQ0FBS0FJVVFmK2ZmbkVnQVNnQ0ZFR0E0QUZ4Y2pZQ0ZBc2dBUkRPQkFSQUlBQWdBU2tDR0VJUWlEd0FHZ3NnQVJDQ0JnUkFJQUFnQUNrQ0dFTC8vLy8vLzRHQWZvTWdBU2tDR0VLQWdJQ0FnUDcvQVlPRU53SVlDeUFCRUlVREJFQWdBQ0FBS1FJWVF2Ly8vLy8vLy8rQmdIK0RJQUVwQWhoQ2dJQ0FnSUNBZ1A3L0FJT0VOd0lZQ3lBQkVNb0VCRUFnQUNBQktBSWdPZ0FnQ3lBQkxRQWxCRUFnQUVFQk9nQWxDeUFCTFFBbUJFQWdBRUVCT2dBbUN5QUJMUUFuQkVBZ0FFRUJPZ0FuQ3lBQkxRQW9CRUFnQUVFQk9nQW9DeUFCS0FJc0lnSkJnSEJIQkVBZ0FDQUNOZ0lzQ3lBQkxRQXdCRUFnQUVFQk9nQXdDeUFCTFFBSVFSQnhSUTBBSUFBZ0FDa0NCRUtBZ0lDQWdBS0VOd0lFQ3d1akV3SUJmeGwrQWtBZ0F4RHJBVVVOQUNBQ0VPc0JSUTBBSUFBZ0FVR090QXBCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQU1RbVFKRkRRQWdBaENaQWtVTkFDQUFJQUZCMHJRS1FlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBRURRQUNRQ0FBRURORkJFQWdBQ2dDRUVHa0EwZ05BUXNnQUJBelJRMEJJQUFvQWhCQnRRSktEUUVMSUFCQm9PTUpJQUFvQWdBb0FpQVJBd0FOQUFKQUlBTVF0d05GRFFBQ1FDQUNMUUFIUVFoeERRQWdBaENaQWcwQUlBSVE2d0VOQUNBQ0tBSUVRYitBZ0RoeFJRMEJDeUFBSUFGQnI3VUtRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FBSkFJQU10QUFkQkNIRkZEUUFDUUNBQ0VKa0NEUUFnQWhEckFRMEFJQUlvQWdSQnY0Q0FPSEZGRFFFTElBQWdBVUhUdFFwQjQ5WUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMQWtBZ0F4Q1pBa1VOQUNBQ0VPc0JSUVJBSUFJb0FnUkJ2NENBT0hGRkRRRUxJQUFnQVVHc3RncEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTEFrQWdBeERyQVVVTkFDQUNLQUlFUWIrQWdEaHhSUTBBSUFBZ0FVSDV0Z3BCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBRUxJQU10QUFSQlAzRkZEUUFnQWkwQUIwRUhjVVVOQUNBQUlBRkI0TGNLUWVQV0NVSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FERUxjRFJRMEFJQUlvQWdSQlAzRWlCVUVPUzBFQklBVjBRWVRBQVhGRmNnMEFJQUFnQVVHdnRRcEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBREtRSUVRaitEUWdKU0RRQWdBaWdDQkVFL2NVRnpha0VCU3cwQUlBQWdBVUdTdUFwQjQ5WUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBQWtBQ1FBSkFBa0FDUUNBQ0tRSUVJZ2FuUVQ5eElnVkJBazhFUUNBRlFRMUdCRUFnQXlrQ0JFSS9nMElPVVEwRkN5QUdRaitESWdkQ2Mzd2lDRUlCV0EwQklBZENBbElFUUNBREtRSUVJUWNNQmdzZ0F5a0NCQ0lIUWorRFFnMVNEUVVNQWdzZ0FpQURLUUlFUWorRElBWkNRSU9FTndJRURBVUxJQWluUVFGclJRMEJJQU1wQWdRaUIwSS9nMElDVWcwREN5QUNJQVpDUUlOQ0VJUTNBZ1FNQXdzZ0F5a0NCQ0lIUWorRFFnMVNEUUVMSUFJZ0JrSkFnMElQaERjQ0JBd0JDeUFIcDBFL2NTSUZRUUpKRFFBZ0FDQUJRYks0Q2lBRkVOTUNRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFRTkFDQURMUUFIUVFkeElnVkZEUUFnQWkwQUIwRUhjVVVOQUNBQUlBRkJ6cmdLSUFVUW5nZEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FDUUNBQ0tRSUVJZ1pDZ0lDQU9JTlFSUVJBSUFSRkRRRWdBeWtDQkVLQWdJQTRneUlIVUEwQ0lBSWdCeUFHUXYvLy8wZURoRGNDQkF3Q0N5QUNJQU1wQWdSQ2dJQ0FPSU1nQmtMLy8vOUhnNFFpQmpjQ0JDQUVEUUVMSUFNcEFnUWlCMEtBZ0lDQWdJQUlnMUJGUVFBZ0JrS0FnSUNBZ0lEZ0E0TkNBRkliSUFkQ2dJQ0FnSUNBSUlOUVJVRUFJQVpDZ0lDQWdJQ0F5QU9EUWdCU0czSWdCMEtBZ0lDQWdJREFBSU5RUlVFQUlBWkNnSUNBZ0lDQXFBT0RRZ0JTR3lBSFFvQ0FnSUNBZ0lBQmcxQkZRUUFnQmtLQWdJQ0FnSURvQW9OQ0FGSWJjbkpGQkVBZ0IwS0FnSUNBZ0lDQUFvTlFJQVpDZ0lDQWdJQ0E2QUdEVUhJTkFRc2dBQ0FCUWZPNENpQUhwMEVZZGtFSGNSQ2VCMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlBRFFRQVFrQVlnQWlBQ0tRSUVJZ1lnQXlrQ0JDSUhRb0NBZ01BQWc0UWlDRGNDQkNBQ0lBZ2dBeWtDQkNJSVFvQ0FnSUFCZzRRaUNUY0NCQ0FDSUFrZ0F5a0NCQ0lKUW9DQWdJQUNnNFFpQ2pjQ0JDQUNJQW9nQXlrQ0JDSUtRb0NBZ0lBRWc0UWlDemNDQkNBQ0lBc2dBeWtDQkNJTFFvQ0FnSUFJZzRRaUREY0NCQ0FDSUF3Z0F5a0NCQ0lNUW9DQWdJQWdnNFFpRFRjQ0JDQUNJQTBnQXlrQ0JDSU5Rb0NBZ0lEQUFJT0VJZzQzQWdRZ0FpQU9JQU1wQWdRaURrS0FnSUNBZ0FHRGhDSVBOd0lFSUFJZ0R5QURLUUlFSWc5Q2dJQ0FnSUFFZzRRaUVEY0NCQ0FDSUJBZ0F5a0NCQ0lRUW9DQWdJQ0FDSU9FSWhFM0FnUWdBaUFSSUFNcEFnUWlFVUtBZ0lDQWdCQ0RoQ0lTTndJRUlBSWdFaUFES1FJRUloSkNnSUNBZ0lBZ2c0UWlFemNDQkNBQ0lCTWdBeWtDQkNJVFFvQ0FnSUNBd0FDRGhDSVVOd0lFSUFJZ0ZDQURLUUlFSWhSQ2dJQ0FnSUNBQ0lPRUloVTNBZ1FnQWlBVklBTXBBZ1FpRlVLQWdJQ0FnSUFnZzRRaUZqY0NCQ0FDSUJZZ0F5a0NCQ0lXUW9DQWdJQ0FnTUFBZzRRaUZ6Y0NCQ0FDSUJjZ0F5a0NCQ0lYUW9DQWdJQ0FnSUFCZzRRaUdEY0NCQ0FDSUJnZ0F5a0NCQ0lZUW9DQWdJQ0FnSUFDZzRRaUdUY0NCQ0FDSUJrZ0F5a0NCQ0laUW9DQWdJQ0FnSUFFZzRRaUdqY0NCQ0FDSUJvZ0F5a0NCQ0lhUW9DQWdJQ0FnQkNEaENJYk53SUVJQUlnR3lBREtRSUVJaHRDZ0lDQWdJQ0FBWU9FSWh3M0FnUWdBaUFjSUFNcEFnUWlIRUtBZ0lDQWdJQUNnNFFpSFRjQ0JDQUNJQjBnQXlrQ0JDSWRRb0NBZ0lDQWdBU0RoQ0llTndJRUlBSWdIaUFES1FJRUloNUNnSUNBZ0JDRGhEY0NCRUVBSUFpblFSeDJRUUZ4SUFaQ2dJQ0FnQUdEVUJ0QkFDQUhwMEViZGtFQmNTQUdRb0NBZ01BQWcxQWJja0VBSUFtblFSMTJRUUZ4SUFaQ2dJQ0FnQUtEVUJ0eVFRQWdDcWRCSG5aQkFYRWdCa0tBZ0lDQUJJTlFHM0lnQmlBTGc2ZEJIM1p5UVFBZ0RFSWhpS2RCQVhFZ0JrS0FnSUNBSUlOUUczSkJBQ0FOUWlLSXAwRUJjU0FHUW9DQWdJREFBSU5RRzNKQkFDQU9RaU9JcDBFQmNTQUdRb0NBZ0lDQUFZTlFHM0pCQUNBUFFpV0lwMEVCY1NBR1FvQ0FnSUNBQklOUUczSkJBQ0FRUWlhSXAwRUJjU0FHUW9DQWdJQ0FDSU5RRzNKQkFFZEJBQ0FSUWllSXAwRUJjU0FHUW9DQWdJQ0FFSU5RRzNKQkFDQVNRaWlJcDBFQmNTQUdRb0NBZ0lDQUlJTlFHM0pCQUNBVFFpbUlwMEVCY1NBR1FvQ0FnSUNBd0FDRFVCdHlRUUFnRkVJdGlLZEJBWEVnQmtLQWdJQ0FnSUFJZzFBYmNrRUFJQlZDTDRpblFRRnhJQVpDZ0lDQWdJQ0FJSU5RRzNKQkFFZEJBQ0FXUWpDSXAwRUJjU0FHUW9DQWdJQ0FnTUFBZzFBYmNrRUFJQmRDTVlpblFRRnhJQVpDZ0lDQWdJQ0FnQUdEVUJ0eVFRQWdHRUl5aUtkQkFYRWdCa0tBZ0lDQWdJQ0FBb05RRzNKQkFDQVpRak9JcDBFQmNTQUdRb0NBZ0lDQWdJQUVnMUFiY2tFQUlCcENMb2luUVFGeElBWkNnSUNBZ0lDQUVJTlFHM0pCQUNBYlFpcUlwMEVCY1NBR1FvQ0FnSUNBZ0FHRFVCdHlRUUFnSEVJcmlLZEJBWEVnQmtLQWdJQ0FnSUFDZzFBYmNrRUFJQjFDTElpblFRRnhJQVpDZ0lDQWdJQ0FCSU5RRzNKQkFDQWVRaUNJcDBFQmNTQUdRb0NBZ0lBUWcxQWJjZ1JBSUFBZ0FVSGR1UXBCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3dHFBQUpBQWtBZ0FpQUNLQUlBS0FLQUFSRUFBRUVNUncwQUlBSWdBaWdDQUNnQ29BRVJBQUFOQUNBQ0lBSW9BZ0FvQXB3QkVRQUFEUUFnQWlBQ0tBSUFLQUtrQVJFQUFFVU5BUXNnQUNBQlFkdWtDa0hqMWdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTEN3MEFJQUF0QUFoQkNIRkJBM1lMMWdFQkFuOGpBRUV3YXlJRkpBQUNRQ0FBS0FJb1FiQUVJQUlnQVNBQktBSUFLQUlNRVFBQUVMY0VJZ1lFUUNBR0lBWW9BZ0FvQW5nUkFBQWdBaERBQVVVTkFRc2dCVUVnYWlBQklBRW9BZ0FvQWd3UkFBQWlBU0FCS0FJQUtBSjRFUUFBRU1vQklBVkJJR29RRXlFQklBVkJFR29nQWhES0FTQUZRUkJxRUJNaEFpQUFLQUlBS0FLZ0FTRUdJQVVnQWpZQ0NDQUZJQUUyQWdRZ0JTQUROZ0lBSUFBZ0JFSGoxZ2xCNUpvS1FidWNDeUFGSUFZUkFnQWdCVUVRYWhBWkdpQUZRU0JxRUJrYVFRQWhCZ3NnQlVFd2FpUUFJQVlMcHdjQkNuOGpBRUh3QVdzaUJDUUFBa0FnQWtVTkFDQUNJQUlvQWdBb0Fnd1JBQUJGRFFBZ0FDQUJRZVNhQ2lBQ0lBSW9BZ0FvQWd3UkFBQWdBQ2dDQUNnQzhBRVJCQUFnQWlBQ0tBSUFLQUlZRVFBQUlRVWdBQ2dDS0NBREVMUUlJZ1pCc1FSR0JFQWdCU0FGS0FJQUtBSzhBUkVBQUVFQkVCRW9BZ0FpQWlBQ0tBSUFLQUlNRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaUFSQUFBdEFBSkJBbkVFUUNBRklBVW9BZ0FvQXJ3QkVRQUFRUUFRRVNnQ0FDSUNJQUlvQWdBb0Fnd1JBQUFpQWlBQ0tBSUFLQUo4RVFBQUlnSWdBaWdDQUNnQ0pCRUFBQ0lDSUFJb0FnQkJnSUFJY2pZQ0FBc2dBQ2dDS0JvZ0JDQUJLUUlJTndNSUlBUWdBU2tDQURjREFDQUZRYkVFSUFNZ0JCQ2tBaUVGREFFTElBUkI2QUZxSVFvZ0JrR3dCRVlFUUNBS0lBTW9Ba0FRUURZQ0FBc2dCRUdRQVdwQkFFRUFRUUZCQUVFQVFRQVFSU0VKQWtBZ0F5QURLQUlBS0FKd0VRQUFCRUFnQ1NBRVFUaHFJQU5CQUVFQUVNMEJJZ2NRandFZ0J4QTFHZ3dCQ3lBSklBTVFqd0VMQWtBQ1FBSkFJQVVFUUNBRktBSm9SUTBCQ3dKL0lBTWdBeWdDQUNnQ2NCRUFBQVJBSUFBZ0FpQUpRUUVnQWlBQ0tBSUFLQUlBRVFBQUVKUUdEQUVMSUFaQnNBUkdCRUFnQUNBQ0lBb29BZ0FvQWdCQkFTQUNJQUlvQWdBb0FnQVJBQUFRbEFZTUFRc2dBQ0FESUFZZ0FpQUNLQUlBS0FJTUVRQUFJQUlnQWlnQ0FDZ0NBQkVBQUVFQUVNUUhDeUlGUlEwQlFRQWdCa0d3QkVjZ0F5QURLQUlBS0FKd0VRQUFHdzBDSUFBb0FpZ2FJQVFnQVNrQ0NEY0RHQ0FFSUFFcEFnQTNBeEFnQlVHd0JDQURJQVJCRUdvUXBBSWhCUXdDQ3lBRUlBVWdCU2dDQUNnQ3ZBRVJBQUFpQ3hCQU5nSTRJQVFnQ3hBeU5nSXdJQVJCT0dvZ0JFRXdhaEFlQkVBZ0JrR3dCRWNoREVFQUlRY0RRQ0FESUFNb0FnQW9BbkFSQUFBaERTQUVLQUk0S0FJQUlRZ0NmeUFOQkVBZ0FDQUlJQWtnQjBFQmFpQUNJQUlvQWdBb0FnQVJBQUFRbEFZTUFRc2dERVVFUUNBQUlBZ2dDaUFIRURnb0FnQWdCMEVCYWlBQ0lBSW9BZ0FvQWdBUkFBQVFsQVlNQVFzZ0FDQURJQVlnQ0NBSUtBSUFLQUlNRVFBQUlBSWdBaWdDQUNnQ0FCRUFBRUVCRU1RSEN5SUlSUTBDSUFRb0FqZ2dDRFlDQUNBRVFUaHFFTTRCR2lBRUlBc1FNallDTUNBSFFRRnFJUWNnQkVFNGFpQUVRVEJxRUI0TkFBc0xJQUFvQWlnYUlBUWdBU2tDQ0RjREtDQUVJQUVwQWdBM0F5QWdCU0FHSUFNZ0JFRWdhaENrQWlFRkRBRUxRUUFoQlFzZ0NSQTFHZ3NnQkVId0FXb2tBQ0FGQ3cwQUlBQXRBQWxCQ0hGQkEzWUxmd0VEZnlNQVFSQnJJZ0lrQUFKQUFrQWdBQ2dDUkMwQU5RUkFJQUFvQWtBTkFRc2dBQkRYQVNFRElBQW9BZ0FvQXFBQklRUWdBa0hqMWdrMkFnQWdBQ0FEUWVQV0NVSGoxZ2tnQVNBQ0lBUVJBZ0FNQVFzZ0FDQUFFTmNCUWVUV0NVSGoxZ2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFKQkVHb2tBQXNNQUNBQVFieXBBV290QUFRTEZ3QWdBRUVCT2dEYUF5QUFRWUFIYWtHd3VRc1Frd0lMWFFFQmZ5TUFRUkJySWdZa0FDQUJFQnNpQVNBQVFSQVFKaUFHUVFocUlBRkJBQkREQVJDUkFTSUFLQUlBUVFocUlBTWdCQ0FGRU04SElBQVFKVUVCT2dBRUlBQW9BZ0FnQWpZQ0JDQUFLQUlBUVFBMkFnQWdCa0VRYWlRQUN3OEFJQUVvQWdBZ0FpZ0NBQkREQlFzVUFDQUFJQUJCQ0dvb0FnQVEyZzhnQUJDNEJRdS9BZ0VGZndKQUlBQXRBRFVOQUFKQUFrQUNRQ0FBS0FJVUlnRkZCRUFnQUNnQ0RDRUVJQUFvQWhBaEFRTkFJQUZCQWtnaEF5QUVJQUZCZjJvaUFVRUNkR29vQWdBaEFpQUREUUlnQWtVTkFBc2dBQ0FCTmdJUURBSUxJQUFnQVVGL2FpSUNOZ0lVSUFBb0FoZ2dBQ2dDRUNJQlFRUjBhaUlESUFNb0FneEJmMm8yQWd3Z0FDQUFLQUl3UVg5cU5nSXdJQU1vQWd4QmYwb05BZ0pBSUFKRkRRQWdBQ2dDQ0NBQlFRSjBhaWdDQUNFRklBSWhBUU5BSUFFZ0JXb3RBQUJCQ2tZRVFDQUJJUVFNQWdzZ0FVRi9haUlCRFFBTEN5QUFJQUlnQkdzaUFUWUNNQ0FESUFFMkFnd01BZ3NnQUNBQk5nSVFJQUlOQUNBQVFRQTJBaFFNQVFzZ0FDQUNRWDlxTmdJVUN5QUFFTm9CUVFwSERRQWdBQ2dDR0NBQUtBSVFRUVIwYWlJQklBRW9BZ2hCZjJvMkFnZ2dBQ0FBS0FJc1FYOXFOZ0lzQ3d0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFFSmdLSWdNZ0FVOEVRQ0FBRU5ZQ0lnQWdBMEVCZGtrRVFDQUNJQUJCQVhRMkFnZ2dBa0VJYWlBQ1FReHFFRklvQWdBaEF3c2dBa0VRYWlRQUlBTVBDeEJ1QUFzc0FDQUFLQUlBR2lBQUtBSUFJQUFRdVFOQkJIUnFHaUFBS0FJQUlBQVF1UU5CQkhScUdpQUFLQUlBR2dzTkFDQUFJQUZCQW5ScUtBSUVDMEFDQVg4QmZDQUFLQUlFRUtnQkJFQURRQ0FESUFBZ0FoQVBLd01BSUFFZ0FoQVBLd01Bb3FBaEF5QUNRUUZxSWdJZ0FDZ0NCQkNvQVVrTkFBc0xJQU1MS0FBZ0FCREZCU0FBUVlpRUNUWUNBQ0FBUVJScVFRQkJBRUVCUVFCQkFFRUFFRVVnQVJDUEFRc25BQ0FBSUFJUW9nWWdBRUgwa2drMkFnQWdBRUhvQUdvZ0FSRGhBeG9nQUVFQU9nQndJQUFMN1FFQkFYOGdBQkRKQWlFQUFrQWdBU2dDQ0VGK2FpSURRUWxMRFFBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRKQ1FNR0JBY0FBUVVJQWdzZ0FDQUJLQUlBSUFJb0FnQnJFR1VQQ3lBQUlBRW9BZ0FnQWlnQ0FHc1FiUThMSUFBZ0FTc0RBQ0FDS3dNQW9SQXREd3NnQUNBQkxRQUFJQUl0QUFCclFSaDBRUmgxRUd3UEN5QUFJQUV2QVFBZ0FpOEJBR3RCRUhSQkVIVVFjZzhMSUFBZ0FTa0RBQ0FDS1FNQWZSQmJEd3NnQUNBQkxRQUFJQUl0QUFCclFmOEJjUkIyRHdzZ0FDQUJMd0VBSUFJdkFRQnJRZi8vQTNFUWNROExJQUFnQVNrREFDQUNLUU1BZlJCYUN3dXhBUUVDZndKQUlBQW9BZ2hCZm1vaUEwRUpTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFOQkFXc09DUWtEQkFVR0FBRUhDQUlMSUFBb0FnQWdBU2dDQUVvUEN5QUFLQUlBSUFFb0FnQkxEd3NnQUNzREFDQUJLd01BWkE4TElBQXNBQUFnQVN3QUFFb1BDeUFBTFFBQUlBRXRBQUJMRHdzZ0FDNEJBQ0FCTGdFQVNnOExJQUF2QVFBZ0FTOEJBRXNQQ3lBQUtRTUFJQUVwQXdCVkR3c2dBQ2tEQUNBQktRTUFWaUVDQ3lBQ0M3RUJBUUovQWtBZ0FDZ0NDRUYrYWlJRFFRbExEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQTBFQmF3NEpDUUFCQWdNSENBUUZCZ3NnQUN3QUFDQUJMQUFBU0E4TElBQXRBQUFnQVMwQUFFa1BDeUFBTGdFQUlBRXVBUUJJRHdzZ0FDOEJBQ0FCTHdFQVNROExJQUFwQXdBZ0FTa0RBRk1QQ3lBQUtRTUFJQUVwQXdCVUR3c2dBQ3NEQUNBQkt3TUFZdzhMSUFBb0FnQWdBU2dDQUVnUEN5QUFLQUlBSUFFb0FnQkpJUUlMSUFJTENnQWdBQ2dDQUNBQlJndVhBZ0VDZndKQUlBRW9BZ2dpQXlBQUtBSUlSdzBBQWtBZ0EwRithaUlDUVFwTERRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FDUVFGckRnb0tCZ2NFQlFBQkNBa0NBd3RCQVNFQ0lBRW9BZ0FnQUNnQ0FFY05DUXdLQzBFQklRSWdBU2dDQUNBQUtBSUFSdzBJREFrTFFRRWhBaUFCTFFBQUlBQXRBQUJIRFFjTUNBdEJBU0VDSUFFckF3QWdBQ3NEQUdJTkJnd0hDMEVCSVFJZ0FTOEJBQ0FBTHdFQVJ3MEZEQVlMUVFFaEFpQUJMd0VBSUFBdkFRQkhEUVFNQlF0QkFTRUNJQUV0QUFBZ0FDMEFBRWNOQXd3RUMwRUJJUUlnQVMwQUFDQUFMUUFBUncwQ0RBTUxRUUVoQWlBQktRTUFJQUFwQXdCU0RRRU1BZ3RCQVNFQ0lBRXBBd0FnQUNrREFGRU5BUXRCQUNFQ0N5QUNDdzhBSUFCQkVHb1FHUm9nQUJBWkdnc3BBQ0FCQkVBZ0FDQUJLQUlBRUtvR0lBQWdBU2dDQkJDcUJpQUFFTmNDR2lBQlFSQnFFS2tHQ3dzSEFDQUFLQUp3Q3drQUlBQWdBVFlDS0F1RkFRRUNmeU1BUVJCcklnTWtBQ0FBS0FJRUlRUUNmd0pBSUFBb0FnQVFSQkRoQkVFQlJnUkFJQUFvQWdBUVJDQURRUXhxRU9NSERRRUxJQVFnQUNnQ0NDZ0NBQ0lBSUFBb0FnQW9BZ0FSQUFCQjZvd0pJQUZCMG9zSlFRQWdCQ2dDQUNnQ3BBRVJBZ0JCQUF3QkN5QUNJQU1vQWd3MkFnQkJBUXNoQWlBRFFSQnFKQUFnQWdzTkFDQUFLQUlBSUFFb0FnQkhDeUVBSUFBUTBRNGdBQ2dDQUFSQUlBQW9BaEFhSUFBb0FnQWFJQUFRaUFNYUN3dUVBUUVDZnlBQVJRUkFJQUVRbXdFUEN5QUJRVUJQQkVCQjJNQVVRVEEyQWdCQkFBOExJQUJCZUdwQkVDQUJRUXRxUVhoeElBRkJDMGtiRUlrUklnSUVRQ0FDUVFocUR3c2dBUkNiQVNJQ1JRUkFRUUFQQ3lBQ0lBQWdBRUY4YWlnQ0FDSURRWGh4UVFSQkNDQURRUU54RzJzaUF5QUJJQU1nQVVrYkVEMGFJQUFRS2lBQ0Mya0JBbjhqQUVFUWF5SUVKQUFnQkVFQU5nSU1JQUJCREdvZ0JFRU1haUFERUlFQ0lBRUVRQ0FBS0FJUUlBRVE1QWNoQlFzZ0FDQUZOZ0lBSUFBZ0JTQUNRUUowYWlJQ05nSUlJQUFnQWpZQ0JDQUFFQ01nQlNBQlFRSjBhallDQUNBRVFSQnFKQUFnQUF0SkFRSi9JQUFvQWdRaUJVRUlkU0VHSUFBb0FnQWlBQ0FCSUFWQkFYRUVmeUFDS0FJQUlBWnFLQUlBQlNBR0N5QUNhaUFEUVFJZ0JVRUNjUnNnQkNBQUtBSUFLQUlZRVFnQUN3a0FJQUJCQURZQ0FBdTJBUUVEZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dDUUFKQUFrQUNmeUFBRU1FQklnUkZCRUJCQVNFQklBQXRBQXNNQVFzZ0FCRENCRUYvYWlFQklBQW9BZ1FMSWdNZ0FVWUVRQ0FBSUFGQkFTQUJJQUVRMWdvZ0FCREJBVVVOQVF3Q0N5QUVEUUVMSUFBaEFTQUFJQU5CQVdvUTFBRU1BUXNnQUNnQ0FDRUJJQUFnQTBFQmFoQzhBUXNnQVNBRFFRSjBhaUlBSUFKQkRHb1Fud0lnQWtFQU5nSUlJQUJCQkdvZ0FrRUlhaENmQWlBQ1FSQnFKQUFMZVFFRGZ5TUFRUkJySWdNa0FFRnZJQUpQQkVBQ1FDQUNRUXBOQkVBZ0FDQUNFTlFCSUFBaEJBd0JDeUFBSUFBZ0FoRGtBa0VCYWlJRkVJRUVJZ1FRNFFFZ0FDQUZFT2tCSUFBZ0FoQzhBUXNnQkNBQklBSVE2QUVnQTBFQU9nQVBJQUlnQkdvZ0EwRVBhaENVQVNBRFFSQnFKQUFQQ3hCdUFBc2JBUUYvUVFFaEFTQUFFTUVCQkg4Z0FCRENCRUYvYWdVZ0FRc0xNd0VCZnlBQUVCWWlBaUFCU1FSQUlBQWdBU0FDYXhDeUVROExJQUlnQVVzRVFDQUFJQUFvQWdBZ0FVRUNkR29RekFVTEN4TUFJQUFnQVNnQ0FDSUFOZ0lBSUFBUXVRWUxEd0FnQUNBQUtBSUVRUUZxTmdJRUN4RUFJQUFnQVNBQktBSUFLQUlvRVFFQUN3Z0FJQUFReWdJYUN3Z0FRZi8vLy84SEN3VUFRZjhBQ3drQUlBQWdBUkRmRWd2a0F3RUlmeU1BUVJCcklnb2tBQ0FHRUlrQ0lRc2dDaUFHRU9nRUlnWVFod0lDUUNBS0VQc0JCRUFnQ3lBQUlBSWdBeEMvQXlBRklBTWdBaUFBYTBFQ2RHb2lCallDQUF3QkN5QUZJQU0yQWdBQ1FDQUFJZ2N0QUFBaUNFRlZhaUlKUVFKTERRQWdDVUVCYTBVTkFDQUxJQWhCR0hSQkdIVVFuUUloQnlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFjMkFnQWdBRUVCYWlFSEN3SkFJQUlnQjJ0QkFrZ05BQ0FITFFBQVFUQkhEUUFnQnkwQUFVRWdja0g0QUVjTkFDQUxRVEFRblFJaENDQUZJQVVvQWdBaUNVRUVhallDQUNBSklBZzJBZ0FnQ3lBSExBQUJFSjBDSVFnZ0JTQUZLQUlBSWdsQkJHbzJBZ0FnQ1NBSU5nSUFJQWRCQW1vaEJ3c2dCeUFDRUtVRUlBWVFpQUloREVFQUlRbEJBQ0VJSUFjaEJnTi9JQVlnQWs4RWZ5QURJQWNnQUd0QkFuUnFJQVVvQWdBUXZnWWdCU2dDQUFVQ1FDQUtJQWdRVUMwQUFFVU5BQ0FKSUFvZ0NCQlFMQUFBUncwQUlBVWdCU2dDQUNJSlFRUnFOZ0lBSUFrZ0REWUNBQ0FJSUFnZ0NoQWZRWDlxU1dvaENFRUFJUWtMSUFzZ0Jpd0FBQkNkQWlFTklBVWdCU2dDQUNJT1FRUnFOZ0lBSUE0Z0RUWUNBQ0FHUVFGcUlRWWdDVUVCYWlFSkRBRUxDeUVHQ3lBRUlBWWdBeUFCSUFCclFRSjBhaUFCSUFKR0d6WUNBQ0FLRUNBYUlBcEJFR29rQUF2UUFRRURmeUFDUVlBUWNRUkFJQUJCS3pvQUFDQUFRUUZxSVFBTElBSkJnQWh4QkVBZ0FFRWpPZ0FBSUFCQkFXb2hBQXNnQWtHRUFuRWlBMEdFQWtjRVFDQUFRYTdVQURzQUFFRUJJUVFnQUVFQ2FpRUFDeUFDUVlDQUFYRWhBZ05BSUFFdEFBQWlCUVJBSUFBZ0JUb0FBQ0FBUVFGcUlRQWdBVUVCYWlFQkRBRUxDeUFBQW44Q1FDQURRWUFDUndSQUlBTkJCRWNOQVVIR0FFSG1BQ0FDR3d3Q0MwSEZBRUhsQUNBQ0d3d0JDMEhCQUVIaEFDQUNHeUFEUVlRQ1JnMEFHa0hIQUVIbkFDQUNHd3M2QUFBZ0JBdmJBd0VJZnlNQVFSQnJJZ29rQUNBR0VQb0JJUXNnQ2lBR0VPb0VJZ1lRaHdJQ1FDQUtFUHNCQkVBZ0N5QUFJQUlnQXhEdUF5QUZJQU1nQWlBQWEyb2lCallDQUF3QkN5QUZJQU0yQWdBQ1FDQUFJZ2N0QUFBaUNFRlZhaUlKUVFKTERRQWdDVUVCYTBVTkFDQUxJQWhCR0hSQkdIVVEzZ0VoQnlBRklBVW9BZ0FpQ0VFQmFqWUNBQ0FJSUFjNkFBQWdBRUVCYWlFSEN3SkFJQUlnQjJ0QkFrZ05BQ0FITFFBQVFUQkhEUUFnQnkwQUFVRWdja0g0QUVjTkFDQUxRVEFRM2dFaENDQUZJQVVvQWdBaUNVRUJhallDQUNBSklBZzZBQUFnQ3lBSExBQUJFTjRCSVFnZ0JTQUZLQUlBSWdsQkFXbzJBZ0FnQ1NBSU9nQUFJQWRCQW1vaEJ3c2dCeUFDRUtVRUlBWVFpQUloREVFQUlRbEJBQ0VJSUFjaEJnTi9JQVlnQWs4RWZ5QURJQWNnQUd0cUlBVW9BZ0FRcFFRZ0JTZ0NBQVVDUUNBS0lBZ1FVQzBBQUVVTkFDQUpJQW9nQ0JCUUxBQUFSdzBBSUFVZ0JTZ0NBQ0lKUVFGcU5nSUFJQWtnRERvQUFDQUlJQWdnQ2hBZlFYOXFTV29oQ0VFQUlRa0xJQXNnQml3QUFCRGVBU0VOSUFVZ0JTZ0NBQ0lPUVFGcU5nSUFJQTRnRFRvQUFDQUdRUUZxSVFZZ0NVRUJhaUVKREFFTEN5RUdDeUFFSUFZZ0F5QUJJQUJyYWlBQklBSkdHellDQUNBS0VDQWFJQXBCRUdva0FBc01BQ0FBRUJNZ0FVRUNkR29MdndRQkMzOGpBRUdBQVdzaUNDUUFJQWdnQVRZQ2VDQUNJQU1RcmdzaENTQUlRZFFFTmdJUUlBaEJDR3BCQUNBSVFSQnFFSjRCSVJBZ0NFRVFhaUVLQWtBZ0NVSGxBRThFUUNBSkVKc0JJZ3BGRFFFZ0VDQUtFTVlCQ3lBS0lRY2dBaUVCQTBBZ0FTQURSZ1JBQTBBQ1FDQUpRUUFnQUNBSVFmZ0FhaEQyQVJ0RkJFQWdBQ0FJUWZnQWFoREhBUVJBSUFVZ0JTZ0NBRUVDY2pZQ0FBc01BUXNnQUJDbEFTRU9JQVpGQkVBZ0JDQU9FTjRCSVE0TElBeEJBV29oRFVFQUlROGdDaUVISUFJaEFRTkFJQUVnQTBZRVFDQU5JUXdnRDBVTkF5QUFFTDBCR2lBS0lRY2dBaUVCSUFrZ0MycEJBa2tOQXdOQUlBRWdBMFlFUUF3RkJRSkFJQWN0QUFCQkFrY05BQ0FCRUI4Z0RVWU5BQ0FIUVFBNkFBQWdDMEYvYWlFTEN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBQUxBQVVDUUNBSExRQUFRUUZIRFFBZ0FTQU1FTUlHS0FJQUlSRUNRQ0FHQkg4Z0VRVWdCQ0FSRU40QkN5QU9SZ1JBUVFFaER5QUJFQjhnRFVjTkFpQUhRUUk2QUFBZ0MwRUJhaUVMREFFTElBZEJBRG9BQUFzZ0NVRi9haUVKQ3lBSFFRRnFJUWNnQVVFTWFpRUJEQUVMQUFBTEFBc0xBa0FDUUFOQUlBSWdBMFlOQVNBS0xRQUFRUUpIQkVBZ0NrRUJhaUVLSUFKQkRHb2hBZ3dCQ3dzZ0FpRUREQUVMSUFVZ0JTZ0NBRUVFY2pZQ0FBc2dFQkNkQVNBSVFZQUJhaVFBSUFNUEJRSkFJQUVRK3dGRkJFQWdCMEVCT2dBQURBRUxJQWRCQWpvQUFDQUxRUUZxSVFzZ0NVRi9haUVKQ3lBSFFRRnFJUWNnQVVFTWFpRUJEQUVMQUFBTEFBc1FnZ0VBQ3hFQUlBQWdBU0FBS0FJQUtBSU1FUU1BQzhZRUFRdC9Jd0JCZ0FGcklnZ2tBQ0FJSUFFMkFuZ2dBaUFERUs0TElRa2dDRUhVQkRZQ0VDQUlRUWhxUVFBZ0NFRVFhaENlQVNFUUlBaEJFR29oQ2dKQUlBbEI1UUJQQkVBZ0NSQ2JBU0lLUlEwQklCQWdDaERHQVFzZ0NpRUhJQUloQVFOQUlBRWdBMFlFUUFOQUFrQWdDVUVBSUFBZ0NFSDRBR29ROEFFYlJRUkFJQUFnQ0VINEFHb1F2Z0VFUUNBRklBVW9BZ0JCQW5JMkFnQUxEQUVMSUFBUW53RWhEaUFHUlFSQUlBUWdEaERFQmlFT0N5QU1RUUZxSVExQkFDRVBJQW9oQnlBQ0lRRURRQ0FCSUFOR0JFQWdEU0VNSUE5RkRRTWdBQkMxQVJvZ0NpRUhJQUloQVNBSklBdHFRUUpKRFFNRFFDQUJJQU5HQkVBTUJRVUNRQ0FITFFBQVFRSkhEUUFnQVJBZklBMUdEUUFnQjBFQU9nQUFJQXRCZjJvaEN3c2dCMEVCYWlFSElBRkJER29oQVF3QkN3QUFDd0FGQWtBZ0J5MEFBRUVCUncwQUlBRWdEQkJRTEFBQUlSRUNRQ0FPUWY4QmNTQUdCSDhnRVFVZ0JDQVJFTVFHQzBIL0FYRkdCRUJCQVNFUElBRVFIeUFOUncwQ0lBZEJBam9BQUNBTFFRRnFJUXNNQVFzZ0IwRUFPZ0FBQ3lBSlFYOXFJUWtMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQUFzQUN3c0NRQUpBQTBBZ0FpQURSZzBCSUFvdEFBQkJBa2NFUUNBS1FRRnFJUW9nQWtFTWFpRUNEQUVMQ3lBQ0lRTU1BUXNnQlNBRktBSUFRUVJ5TmdJQUN5QVFFSjBCSUFoQmdBRnFKQUFnQXc4RkFrQWdBUkQ3QVVVRVFDQUhRUUU2QUFBTUFRc2dCMEVDT2dBQUlBdEJBV29oQ3lBSlFYOXFJUWtMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQUFzQUN4Q0NBUUFMbkFFQkJYOGdBQkNnQVNFRUFrQUNRRUdzeVJRb0FnQkZEUUFnQUMwQUFFVU5BQ0FBUVQwUTRBc05BRUdzeVJRb0FnQW9BZ0FpQWtVTkFBTkFBa0FnQUNBQ0lBUVExQVVoQTBHc3lSUW9BZ0FoQWlBRFJRUkFJQUlnQVVFQ2RHb29BZ0FpQXlBRWFpSUZMUUFBUVQxR0RRRUxJQUlnQVVFQmFpSUJRUUowYWlnQ0FDSUNEUUVNQXdzTElBTkZEUUVnQlVFQmFpRUJDeUFCRHd0QkFBc0lBQ0FBRUxzTEdndmxBZ0VHZnlNQVFSQnJJZ2NrQUNBRFFhakpGQ0FER3lJRktBSUFJUU1DUUFKQUFrQWdBVVVFUUNBRERRRU1Bd3RCZmlFRUlBSkZEUUlnQUNBSFFReHFJQUFiSVFZQ1FDQURCRUFnQWlFQURBRUxJQUV0QUFBaUFFRVlkRUVZZFNJRFFRQk9CRUFnQmlBQU5nSUFJQU5CQUVjaEJBd0VDeUFCTEFBQUlRQkJ3UE1TS0FJQUtBSUFSUVJBSUFZZ0FFSC92d054TmdJQVFRRWhCQXdFQ3lBQVFmOEJjVUcrZm1vaUFFRXlTdzBCSUFCQkFuUkJrSmNTYWlnQ0FDRURJQUpCZjJvaUFFVU5BaUFCUVFGcUlRRUxJQUV0QUFBaUNFRURkaUlKUVhCcUlBTkJHblVnQ1dweVFRZExEUUFEUUNBQVFYOXFJUUFnQ0VHQWYyb2dBMEVHZEhJaUEwRUFUZ1JBSUFWQkFEWUNBQ0FHSUFNMkFnQWdBaUFBYXlFRURBUUxJQUJGRFFJZ0FVRUJhaUlCTFFBQUlnaEJ3QUZ4UVlBQlJnMEFDd3NnQlVFQU5nSUFRZGpBRkVFWk5nSUFRWDhoQkF3QkN5QUZJQU0yQWdBTElBZEJFR29rQUNBRUM0MEJBUUYvQWtBZ0FDZ0NCQ0lCSUFFb0FnQkJkR29vQWdCcUtBSVlSUTBBSUFBb0FnUWlBU0FCS0FJQVFYUnFLQUlBYWhETEJrVU5BQ0FBS0FJRUlnRWdBU2dDQUVGMGFpZ0NBR29vQWdSQmdNQUFjVVVOQUNBQUtBSUVJZ0VnQVNnQ0FFRjBhaWdDQUdvb0FoZ1EwZ3RCZjBjTkFDQUFLQUlFSWdBZ0FDZ0NBRUYwYWlnQ0FHcEJBUkNBQkFzTFZRQWdBQ0FCTmdJRUlBQkJBRG9BQUNBQklBRW9BZ0JCZEdvb0FnQnFFTXNHQkVBZ0FTQUJLQUlBUVhScUtBSUFhaWdDU0FSQUlBRWdBU2dDQUVGMGFpZ0NBR29vQWtnUTFBc0xJQUJCQVRvQUFBc2dBQXNJQUNBQUtBSVFSUXZaQXdJQ2Z3SitJd0JCSUdzaUFpUUFBa0FnQVVMLy8vLy8vLy8vLy84QWd5SUZRb0NBZ0lDQWdNRC9RM3dnQlVLQWdJQ0FnSURBZ0x4L2ZGUUVRQ0FCUWdTR0lBQkNQSWlFSVFRZ0FFTC8vLy8vLy8vLy93K0RJZ0JDZ1lDQWdJQ0FnSUFJV2dSQUlBUkNnWUNBZ0lDQWdJREFBSHdoQkF3Q0N5QUVRb0NBZ0lDQWdJQ0FRSDBoQkNBQVFvQ0FnSUNBZ0lDQUNJVkNBRklOQVNBRVFnR0RJQVI4SVFRTUFRc2dBRkFnQlVLQWdJQ0FnSURBLy84QVZDQUZRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUJRZ1NHSUFCQ1BJaUVRdi8vLy8vLy8vOERnMEtBZ0lDQWdJQ0EvUDhBaENFRURBRUxRb0NBZ0lDQWdJRDQvd0FoQkNBRlF2Ly8vLy8vLzcvL3d3QldEUUJDQUNFRUlBVkNNSWluSWdOQmtmY0FTUTBBSUFJZ0FDQUJRdi8vLy8vLy96K0RRb0NBZ0lDQWdNQUFoQ0lFUVlINEFDQURheER0QkNBQ1FSQnFJQUFnQkNBRFFmK0lmMm9ROXdFZ0Fpa0RDRUlFaGlBQ0tRTUFJZ0JDUElpRUlRUWdBaWtERUNBQ0tRTVloRUlBVXEwZ0FFTC8vLy8vLy8vLy93K0RoQ0lBUW9HQWdJQ0FnSUNBQ0ZvRVFDQUVRZ0Y4SVFRTUFRc2dBRUtBZ0lDQWdJQ0FnQWlGUWdCU0RRQWdCRUlCZ3lBRWZDRUVDeUFDUVNCcUpBQWdCQ0FCUW9DQWdJQ0FnSUNBZ0grRGhMOExpQUlCQkg4Z0FrRUFSeUVFQWtBQ1FBSkFBa0FnQWtVZ0FFRURjVVZ5RFFBZ0FVSC9BWEVoQXdOQUlBQXRBQUFnQTBZTkFpQUFRUUZxSVFBZ0FrRi9haUlDUVFCSElRUWdBa1VOQVNBQVFRTnhEUUFMQ3lBRVJRMEJDeUFBTFFBQUlBRkIvd0Z4UmcwQkFrQWdBa0VFVHdSQUlBRkIvd0Z4UVlHQ2hBaHNJUVVnQWtGOGFpSURRUU54SVFRZ0EwRjhjU0FBYWtFRWFpRURBMEFnQUNnQ0FDQUZjeUlHUVg5eklBWkIvLzM3ZDJweFFZQ0Jnb1I0Y1EwQ0lBQkJCR29oQUNBQ1FYeHFJZ0pCQTBzTkFBc2dCQ0VDSUFNaEFBc2dBa1VOQVFzZ0FVSC9BWEVoQVFOQUlBQXRBQUFnQVVZTkFpQUFRUUZxSVFBZ0FrRi9haUlDRFFBTEMwRUFEd3NnQUFzTEFDQUFJQUVRMlJNZ0FBc2NBUUYvUVg5QkFDQUFFS0FCSWdJZ0FFRUJJQUlnQVJEM0FrY2JDM1FCQVg4Z0FDZ0NwQUVpQVVVRVFDQUFFS1VVSUFCQnRBRnFJZ0VvQWdBRVFDQUFRWmdCYWlBQkVFY2dBRUVBTmdLMEFRc2dBRUdZQVdvaUFSQVdSUVJBSUFBb0FwUUJEd3NnQUNBQUlBQkI2QUJxSUFBZ0FDZ0NsQUVRWWhDMkRDQUFLQUtVQVNBQkVMZ1VJZ0UyQXFRQkN5QUJDNVVCQVFKL0l3QkJFR3NpQXlRQUFrQWdBRUdvQVdvaUFoQVdSUVJBSUFBb0FyUUJSUTBCQ3lBQ0VCWkJBVXNOQUNBQ0VCWkJBVVlFUUNBRElBQWdBaWdDQUNnQ0FFRUFFSFEyQWd3Z0FFR1lBV29nQTBFTWFoQkJJQUlRK0FNZ0FFRUFOZ0s0QVF3QkN5QUJSUTBBSUFCQnRBRnFJZ0VvQWdCRkRRQWdBRUdZQVdvZ0FSQkhJQUJDQURjQ3RBRUxJQU5CRUdva0FBdGpBUUovSXdCQkVHc2lCU1FBUVN3UUprSDZBUkMzQVNJRUlBRVFPU0FFSUFJUXdnSVFPU0FFSUFNUXdnSVFPU0FBS0FLRUFTQUZRUWhxSUFRUU9pSUJFSHdnQVJBK0lBSWdBQ2dDaEFFUTF3VWdBeUFBS0FLRUFSRFhCU0FGUVJCcUpBQUw4UUVCQW44akFFRWdheUlGSkFBQ1FDQUVFQlpCQVVZRVFDQUFJQUFnQXlBQ0lBUW9BZ0FvQWdBUXJ3RWdBUkNHQVNFRERBRUxJQUF0QUpBQkJFQWdCVUVRYWtFQ0VKTUlJZ1pCQVJBUklBTTJBZ0FnQmtFQUVCRWdBellDQUNBQUlBQkJ6d0FnQWlBR0lBUVFxd1FnQVJDR0FTRURJQVlRTmd3QkMwRXNFQ1lnQUJCVklBSkJ6d0FRVVNJQ0lBTVFPU0FDSUFNUU9VRUFJUU1nQkJBV1FRQktCRUFEUUNBQ0lBUWdBeEFSS0FJQUVFd2dBMEVCYWlJRElBUVFGa2dOQUFzTElBQW9Bb1FCSUFWQkNHb2dBaEE2SWdNUWZDQURFRDRnQUNBQ0tBSUVJQUVRaGdFaEF3c2dCVUVnYWlRQUlBTUxyUUVCQW44akFFRXdheUlGSkFBQ1FDQUFMUUNRQVFSQUlBVkJJR3BCQXhDVENDSUdRUUFRRVNBQ05nSUFJQVpCQVJBUklBTTJBZ0FnQmtFQ0VCRWdCRFlDQUNBQVFha0JJQUVnQmlBRlFSQnFFREFpQVJDckJDRUFJQUVRTmlBR0VEWU1BUXRCTEJBbUlBQVFWU0FCUWFrQkVGRWlBU0FDRURrZ0FTQURFRGtnQVNBRUVEa2dBQ2dDaEFFZ0JVRUlhaUFCRURvaUFCQjhJQUFRUGlBQktBSUVJUUFMSUFWQk1Hb2tBQ0FBQzRVQkFRRi9Jd0JCSUdzaUF5UUFRU3dRSmlBQkVMY0JJUUVnQXlBQ0VFQTJBaGdnQXlBQ0VESTJBaEFnQTBFWWFpQURRUkJxRUI0RVFBTkFJQUVnQXlnQ0dDZ0NBQkE1SUFOQkdHb1FaaG9nQXlBQ0VESTJBaEFnQTBFWWFpQURRUkJxRUI0TkFBc0xJQUFvQW9RQklBTkJDR29nQVJBNklnQVFmQ0FBRUQ0Z0EwRWdhaVFBQ3pzQkFYOUJIQkJHSWdBaUJCREZCU0FFSUFJMkFoZ2dCQ0FCTmdJVUlBUkI0STRKTmdJQUlBUWhBU0FBSUFNZ0FDZ0NBQ2dDQkJFQkFDQUJDeXNCQVg4Z0FDZ0NBQ0VCSUFCQkFEWUNBQ0FCQkVBZ0FCQWxJZ0FvQWdBYUlBQW9BZ1FhSUFFUUtnc0xTUUVCZnlNQVFTQnJJZ0lrQUNBQ0lBRVFrZ00yQWhBUTV3RWdBa0VZYWlBQUlBRkJ0TzRSSUFKQkVHb2dBa0VJYWhDakRDQUNRUmhxRUVRaEFDQUNRU0JxSkFBZ0FFRUVhZ3RjQVFKL1FRRWhBZ0pBSUFCQjZBQnFJZ01nQVJBdklnQW9BZ3hCYVdvaUFVRUhTdzBBQWtBQ1FBSkFJQUZCQW1zT0JnTURBd0VEQWdBTElBQkJBUkF2RHdzZ0F5QUFRUUVRTHhBdlFRQVFMdzhMSUFBUXZBSWhBZ3NnQWdzVUFDQUFRZWdBYWlBQUlBRVFZaEF2UVFFUUx3dmVBUUVDZnlNQVFTQnJJZ01rQUNBRElBSTJBaGdnQXlBQk5nSWNJQU5CSGpZQ0NBSkFBa0FnQUVIY0Ftb2lCQ0FEUVFocUVEOFFGa0VCVGdSQVFRQWhBUU5BSUFOQkhqWUNDQUpBSUFRZ0EwRUlhaEEvSUFFUUVTZ0NBQ0lDRUx3Q1FRSkhEUUFnQWtFQUVDOGdBeWdDSEVjTkFDQUNRUUVRTHlBREtBSVlSZzBEQ3lBRFFSNDJBZ2dnQVVFQmFpSUJJQVFnQTBFSWFoQS9FQlpJRFFBTEN5QURRUWhxRURBaUFTQURRUnhxRUVjZ0FTQURRUmhxRUVjZ0FDQUJRY2p0RVJDYUNDRUNJQUVRTmd3QkN5QUNLQUlFSVFJTElBTkJJR29rQUNBQ0M4QURBUUovSXdCQklHc2lCQ1FBSUFRZ0FUWUNIQ0FDUlFSQUlBUkJFR29nQUVFNGFpQUVRUnhxRU4wRkN3SkFJQUJCRUdvaUJTQUVRUnhxRVBRRURRQWdBRUVrYWlJQklBUkJIR29ROUFRTkFDQUFJQVFvQWh3Z0FpQURFTEFISUFSQkVHb2dCU0FFUVJ4cUVOMEZJQVJCQURZQ0RDQUVRUUEyQWdnQ1FDQUVLQUljRU9BVUlnTkZEUUFnQTBFQUVDOGhCU0FFSUFRb0Fod29BalFvQWdRZ0JSQXZLQUlvTmdJTUlBUkJFR29nQVNBRVFReHFFTjBGSUFNb0FneEI5Z0ZIRFFBZ0EwRUJFQzhoQXlBRUlBUW9BaHdvQWpRb0FnUWdBeEF2S0FJb05nSUlJQVJCRUdvZ0FTQUVRUWhxRU4wRkN3SkFJQUlOQUNBRUlBUW9BaHhCSEdvaUFoQkFOZ0lRSUFRZ0FoQXlOZ0lBSUFSQkVHb2dCQkFlUlEwQUEwQWdBQ0FFS0FJUUtBSUFRUUJCQUJEY0JpQUVRUkJxRUdZYUlBUWdBaEF5TmdJQUlBUkJFR29nQkJBZURRQUxDeUFFS0FJSUJFQWdBRUU0YWlBRVFRaHFFUFFFSVFJZ0FTQUVRUWhxRU1vSUlBQWdCQ2dDQ0NBQ1JTQUVLQUljRU53R0N5QUVLQUlNUlEwQUlBQkJPR29nQkVFTWFoRDBCQ0VDSUFFZ0JFRU1haERLQ0NBQUlBUW9BZ3dnQWtWQkFYUWdCQ2dDSEJEY0Jnc2dCRUVnYWlRQUN4QUFJQUFvQWdRZ0FDZ0NBR3RCTkcwTERBQWdBQ0FCRU44Q1FSNUdDMllBQW44Q1FDQUFSUTBBUVFFZ0FDQUFLQUlBS0FKRUVRQUFEUUVhSUFBZ0FDZ0NBQ2dDWUJFQUFFVU5BRUVBSUFBZ0FDZ0NBQ2dDZUJFQUFDSUFJQUFvQWdBb0Fpd1JBQUFvQWdSQlAzRWlBRUVRU3cwQkdrR253QVlnQUhaQkFYRVBDMEVBQ3dzUEFDQUFRZWdBYWlBQkVDOG9BZ3dMK3dzQkJIOGpBRUhnQUdzaUNDUUFBa0FnQVNBQktBSUFLQUljRVFBQUlnWkJFa3NFUUVFQUlRWU1BUXNDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQmtFQmF3NFNCQVVHQndnSkNnSURDd3dCRFJBUkVRNFBBQXNnQUVFNGFoQ2NDQ0VHREJFTElBQkJPR29oQlNBQ0JFQWdCVUVnRU1rQklRWU1FUXNnQlJENkFpRUdEQkFMSUFCQk9HcEJJQkNpQWlFR0RBOExJQUJCT0dwQklCREpBU0VHREE0TElBQkJPR3BCSUJERUF5RUdEQTBMSUFCQk9HcEJ3QUFReEFNaEJnd01DeUFBUVRocVFSQVF4QU1oQmd3TEN5QUFRVGhxUVFnUW9nSWhCZ3dLQ3lBQVFUaHFRUWdReVFFaEJnd0pDeUFBUVRocVFSQVFvZ0loQmd3SUN5QUFRVGhxUVJBUXlRRWhCZ3dIQ3lBQVFUaHFRY0FBRUtJQ0lRWU1CZ3NnQUVFNGFrSEFBQkRKQVNFR0RBVUxJQUJCT0dvaUJVRVZFQ0VnQlVFZ0VNa0JJUVlNQkFzZ0FFRTRhaERPRkNFR0RBTUxJQWdnQVNBQktBSUFLQUpVRVFBQU5nSmNJQWdnQUVHa0NHb2lCeUFJUWR3QWFoRENERFlDQUNBSUlBY1FmallDV0NBSUlBaEIyQUJxRUxnREJFQWdBRUU0YWhEWEZDRUdJQWdnQVNBQktBSUFLQUpVRVFBQU5nSUFJQWNnQ0JDdENDQUdOZ0lBQ3lBSUlBRWdBU2dDQUNnQ1ZCRUFBRFlDQUNBSElBZ1FyUWdvQWdBaEJpQUZEUUlnQUNBQklBRW9BZ0FvQWxRUkFBQVF2d0VoQlNBSUlBRWdBU2dDQUNnQ1ZCRUFBRFlDQUNBQVFUaHFJQWNnQ0JDdENDZ0NBQ0FGRU5ZVURBSUxJQUJCT0dvaEJ5QUJJQUVvQWdBb0FpQVJBQUFpQlJESUJBUkFJQWNRMkJRaEJnd0NDeUFISUFBZ0JSQzRGUUovSUFVdEFBRkJmMnBCL3dGeElnWkJCazBFUUNBR0RBRUxRUUVMSUFVUWdna2dCUkNEQ1NBRkVJb0JRUUpCQVNBRkVLZ0ZHeUFBSUFFUXR4VVEwQlFoQmlBRkVLZ0NSUTBCSUFjZ0JoRFBGQ0VHREFFTElBZ2dBU2dDUURZQ0FDQUJJQU1Rd1F4RkJFQWdBQ0FDUVR4c2FpQURLUUlFUWpTSXAwRUhjVUVVYkdwQjZBUnFJQWdReHdNb0FnQWlCZzBCQ3lBQklBRW9BZ0FvQWh3UkFBQkJFRVlFUUNBQVFkQUhhaUFBUWVRSGFpQUlFTWNERU4wRUlBZ29BZ0FRTnhEQURBc2dBQ0FCSUFnb0FnQWdBaUFERUxVVklRWUxBa0FnQVNBQktBSUFLQUpzRVFBQUJFQWdBRUU0YWlBR0lBRWdBU2dDQUNnQ05CRUFBQ0FCSUFFb0FnQW9BamdSQUFBUTFCUWhCZ3dCQ3lBQklBRW9BZ0FvQWpBUkFBQkJBa2dOQUNBQVFUaHFJQVlnQVNBQktBSUFLQUl3RVFBQUVMRUJJUVlMSUFFUWhRRUVRQ0FBUVRocUlnVkI3U2tRSVNBRlFZZmhFUkJDSUFFZ0FTZ0NBQ2dDSEJFQUFFRURSZ1JBSUFWQkNSQWhDd0pBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUZSd1JBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUVSdzBCQ3lBRlFTY1FJUXNnQlNBR0lBQWdBU0FCS0FJQUtBSllFUUFBUVFFUTRRVWdBQ0FCSUFFb0FnQW9BbGdSQUFCQkFoRGhCU0FBSUFFZ0FTZ0NBQ2dDV0JFQUFFRURFT0VGRU5NVUlRWUxBa0FnQVNBQktBSUFLQUp3RVFBQVJRMEFBa0FnQVNBQktBSUFLQUpNRVFBQUVHQkJBazRFUUVFQUlRY0NRQ0FDUlEwQUlBRWdBU2dDQUNnQ0hCRUFBRUVRUmcwQUlBZ2dBVUVBUVFBUXpRRWlCU2dDUEJCZ1FRSk9CRUFEUUNBRktBSThFTEVWSUFVb0Fqd1FZRUVCU2cwQUN3c2dCU0FDSUFNcEFnUkNOSWluUVFkeEVMOE1JUWNnQlJBMUdnc2dBU0FCS0FJQUtBSk1FUUFBRUdBaUJVRUNTQTBCSUFCQk9Hb2hBd05BSUFNZ0JpQUFJQUVnQVNnQ0FDZ0NUQkVBQUNBRlFYOXFJZ0lRNFFVZ0J4Q2REQ0VHSUFkQkFVNEVRQ0FESUFaQkJpQUhFSGdMSUFFZ0FTZ0NBQ2dDVEJFQUFDQUNFTllCSUFkc0lRY2dCVUVDU2lFSklBSWhCU0FKRFFBTERBRUxRUUFoQnlBQ1JRMEFJQUVnQVNnQ0FDZ0NIQkVBQUVFUVJnMEFJQUVnQWlBREtRSUVRalNJcDBFSGNSQy9EQ0VIQ3dKL0lBRWdBU2dDQUNnQ2RCRUFBQVJBSUFCQk9Hb2dCaUFBSUFFZ0FTZ0NBQ2dDVEJFQUFFRUFFT0VGSUFjUW5Rd01BUXNnQkVVRVFDQUFRVGhxSWdGQm9lRVJRWUNLQkJDeUFTQUJRYllwRUNFTElBQkJPR29nQmhEU0ZBc2hCaUFIUVFGSURRQWdBRUU0YWlBR1FRWWdCeEI0Q3lBSVFlQUFhaVFBSUFZTFp3RUNmeU1BUVJCcklnQWtBQ0FBSUFFMkFnd0NRQ0FCUlFSQURBRUxRYWdCRUVZaUFSRDlBeUlDSUFFb0FnQW9BcndCRVFBQUlBQkJER29RM0FFZ0FTQUFLQUlNSWdNZ0F5Z0NBQ2dDQUJFQUFDQUJLQUlBS0FJRUVRRUFDeUFBUVJCcUpBQWdBZ3RGQVFGL0l3QkJJR3NpQWlRQUlBSWdBUkRNQVRZQ0VCRG5BU0FDUVJocUlBQWdBU0FDUVJCcUlBSkJDR29RMEJVZ0FrRVlhaEJFSVFBZ0FrRWdhaVFBSUFCQkRHb0x2QWdCQjM4akFFRVFheUlKSkFBZ0NTQUZOZ0lJSUFrZ0JEWUNEQ0FHRUlNRElRb2dCaENTQkNFTVFaQUJJUWhCQVNFTkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRYU1DVEFSQUlBRkI2WDVxSWc1QkdVc05GeUFPUVFGckRoa1VFdzhPRFF3TENna0dCZ1lHQmdZR0JoY1NGZ0VSQkFVREZRc2dBVUhKZTJvaUJrRU5UUTBHSUFGQjJucHFJZ1ZCQlUwTkJ5QUJRZHg5YWlJQlFRRkxEUllnQVVFQmF3MFBEQUVMUVpFQklRZ01GQXRCa3dFaENFRUFJUTBNRXd0QnB3RWhDRUVBSVEwTUVndEJwZ0VoQ0VFQUlRME1FUXRCcFFFaENFRUFJUTBNRUFzQ1FDQUhSU0FCUWQ5K2FrRUJTM0lOQUFKQUlBQkJPR29pQnlBRUVLOEVEUUFnQnlBRUVLSUREUUFnQnlBSElBUVFZaENYRlVVTkFRc2dBaUFISUFjZ0FpZ0NBQ0FFSUFVZ0FVR2hBVVlRaXd3aUN4RC9BZ3dSQ3lBQlFkOSthaUlCUVFkTERSQUNmd0pBQWtBQ1FBSkFBa0FDUUNBQlFRRnJEZ2NGQkFVQUFRSURCQXRCdUFFaEMwR3dBVUd4QVNBS0d3d0ZDMEc2QVNFTFFhd0JRYTBCSUFvYkRBUUxRYndCSVF0QnNnRkJzd0VnQ2hzTUF3dEJ2Z0VoQzBHdUFVR3ZBU0FLR3d3Q0MwRzBBU0VMUWFRQlFhb0JJQVpCREVZYkRBRUxRYllCSVF0QnBRRkJxd0VnQmtFTVJoc0xJUUVnQWlBQVFUaHFJZ0FnQUNBTElBRWdEQnNnQXlBRUlBVVFxZ0VpQVJENUJDQUNJQUFnQVJEL0FpQUFJQUVnQWlnQ0FCQ0dBU0VMREJBTElBWkJBV3NPRFF3TERnb0pDQWNHQXdJQkJBVU5Dd0pBQWtBQ1FBSkFBa0FDUUNBRlFRRnJEZ1VFQXdJQkFBVUxRZDRyUWQwcklBb2JJUWdNRWd0QjJpdEIyU3NnQ2hzaENBd1JDMEhZSzBIWEt5QUtHeUVJREJBTFFkd3JRZHNySUFvYklRZ01Ed3RCMWl0QjFTc2dDaHNoQ0F3T0MwSFVLMEhUS3lBS0d5RUlEQTBMUWNZQklRZ01EQXRCeFFFaENBd0xDMEhIQVNFSURBb0xRY1FCSVFnTUNRdEJ3Z0ZCd3dFZ0Noc2hDQXdJQzBHTkFVR0pBVUdMQVNBS0d5QU1HeUVJREFjTFFZZ0JRWVlCUVljQklBb2JJQXdiSVFnTUJndEJrZ0VoQ0F3RkMwR1BBU0VJREFRTEFrQWdERVVOQUNBQVFUaHFJZ0VnQkJDdkJFVUVRQ0FCSUFVUXJ3UkZEUUVMUVk0QklRaEJBQ0VOSUFFZ0JSQ3ZCRVVOQkNBSlFReHFJQWxCQ0dvUUxpQUpLQUlNSVFRTUJBdEJoUUZCaEFFZ0RCc2hDQXdEQzBHRkFVR0VBU0FNR3lFSURBSUxRWU1CUVlJQklBd2JJUWdNQVF0QmdRRkJnQUVnREJzaENBc0NRQUpBSUFCQk9Hb2lBU0FFRUtJRERRQWdBU0FKS0FJSUVLSUREUUFnQVNBSktBSU1FT0FGRFFBZ0FTQUpLQUlJRU9BRlJRMEJDeUFBSUFnZ0FpQURJQWtvQWd3Z0NTZ0NDQkNiRlNFTERBRUxJQTBFUUNBQklBSW9BZ0FnQ1VFTWFpQUpRUWhxRU1FREN5QUNJQUVnQVNBSUlBTWdDU2dDRENBSktBSUlFS29CSWdBUStRUWdBaUFCSUFBUS93SWdBU0FBSUFJb0FnQVFoZ0VoQ3dzZ0NVRVFhaVFBSUFzTEhBRUJmeUFCTFFBRUlBQXRBQVJ6Qkg4Z0FnVWdBQ0FCRVBzSEN3dEZBUUYvSXdCQklHc2lBaVFBSUFJZ0FSRE1BVFlDRUJEbkFTQUNRUmhxSUFBZ0FTQUNRUkJxSUFKQkNHb1F6d3dnQWtFWWFoQkVJUUFnQWtFZ2FpUUFJQUJCQkdvTENRQWdBQ0FCRUlVSkN5QUJBWDhnQUNnQ0FDRUJJQUJCQURZQ0FDQUJCRUFnQUJBbElBRVFqUllMQ3ljQUl3QkJFR3NpQUNRQUlBQWdBVFlDQ0NBQVFRaHFRUVFRN2cwaEFTQUFRUkJxSkFBZ0FRc01BQ0FBSUFFb0FnQVE2UVlMQ1FBZ0FDQUJFSjRXQzJvQkFuOUJBU0VCQWtBQ1FBSkFJQUJCalFKTUJFQWdBRUhwZm1vaUFrRVdTMEVCSUFKMFFaK0E0QU54UlhJTkFRd0RDeUFBUVk0Q1JpQUFRY2w3YWtFSlNYSWdBRUdrQWtaeURRSU1BUXNnQUVFTlN3MEFRUUVnQUhSQndQZ0FjUTBCQzBFQUlRRUxJQUVMRHdBZ0FDQUJJQUlnQXlBQkVLVVJDeWNCQVg4Z0FVRXZFS0lKSWdKQmYwWUVRQ0FBSUFFUTdRRWFEd3NnQUNBQlFRQWdBaER0QmdzTEFDQUFRUXhxS0FJQVJRc2dBQ0FBUVFFUXR3d2dBRUVBTmdKc0lBQWdBVFlDYUNBQVFZeUdDVFlDQUFzYkFRRi9RYmdJRUNZaUF5QUFJQUVnQWhDeUZpQUFJQU1RdVFRTGpnRUJBbjlCZnlFREFrQWdBQkNXQlEwQUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFBZ0F4RDdCaUFDRUxZV0lRTWdBaUFCRU5jQklnUXBBZ0EzQWdBZ0FpQUVLUUlJTndJSUlBTkJJMGNOQUVFaklRTWdBRUVqRU1vRFJRMEFJQUVnQWtGM1FmelZFUkJLSUFFZ0FrRjNRWUlCUVFCQi9OVVJFQ2dnQUNBQUtBSVFRUUZxTmdJUVFaY0JJUU1MSUFNTEtRRUJmeU1BUVNCcklnTWtBQ0FBSUFNZ0FTQUNFTGtXSWdBUXVCWWdBQkRPQ0NBRFFTQnFKQUFMTkFFQmZ5TUFRUkJySWdFa0FDQUFFTUFXSUFCQkFEWUNFQ0FCUVFBMkFnd2dBRUVVYWlBQlFReHFFSzBDSUFGQkVHb2tBQXNyQVFGL0lBQVFpQTBnQUNJQktBSUFCRUFnQVJDSERTQUJFRHNhSUFFb0FnQWFJQUVReXdNYUN5QUFDdzhBSUFBZ0FDZ0NHQ0FCYWpZQ0dBc2JBQ0FBUWV6S0VUWUNBQ0FBUVNCcUVDQWFJQUFRZ0FnYUlBQUxCQUJCQVFzU0FDQUFFTk1XSWdCQlBHb1E3QVFhSUFBTHJnRUJBbjhnQUVIOHlSRTJBZ0FnQUNnQ1ZDSUJCRUFnQVJBcUN5QUFRY0FCYWlJQkVMZ0NSUVJBQTBBZ0FCQ1VEU0FCRUxnQ1JRMEFDd3NnQUVHSUFtb1ErUVlhSUFCQi9BRnFFQ0FhSUFCQjVBRnFFSk1OSUFCQjJBRnFFQ0FhSUFFUU5pQUFRUlJxSWdGQk1Hb1FHUm9nQVVFY2FoRGJBU0FCSUFFb0Fnd1F3eFlnQVNnQ0FDRUNJQUZCQURZQ0FDQUNCRUFnQVJBbElBSVFpdzBMSUFCQkJHb2lBU0FCRUR3UXp3Z2dBQXNOQUNBQUtBSUFJQUZCQlhScUMya0JBWDhqQUVFUWF5SURKQUFnQXlBQ05nSUFJQU1nQVRZQ0NDQUFLQUlRSVFFZ0EwRUlhaUFERUs0R0JFQURRQ0FCSUFBb0FnZ2dBeWdDQ0JENUFTQUFJQUFvQWdoQkJHbzJBZ2dnQTBFSWFoQm1HaUFEUVFocUlBTVFyZ1lOQUFzTElBTkJFR29rQUFzdUFRRi9RUUVoQVFKQUlBQkJ5djhJRUkwQkRRQWdBRUc1Z2drUWpRRU5BQ0FBUWMrQUNSQ05BU0VCQ3lBQkN5QUJBWDlCQVNFQklBQkJ5djhJRUkwQkJIOGdBUVVnQUVHaWdBa1FqUUVMQ3drQUlBRWdBaENNRnd1MkJRRUdmeUFDUVNCcUlRVWdBRUVVYWlFR0lBQWdBaEJUSVFNZ0FVRUFSeUVIUVFBaEFRTkFJQWNnQVVWeElRZ0RRQUpBQWtBZ0EwRWpSd1JBSUFOQmYwWU5BUU5BSUFOQmYwWU5BaUFEUVFwSEJFQWdBQ0FDRUZNaEF3d0JDd3NnQUNBQ0VGTWhBd3dEQ3lBQUlBSVFVeUlEUWFJQlJ3MENJQVlnQlJET0F5SUVRZHQrYWtFQ1RRUkFBa0FnQUNnQ2RDSURRY0FBVEFSQUlBQW9BcndCSWdSQndRQklEUUVMSUFBb0FuQWlBQ0FDUVkrMkVVR3V0aEZCeWJNUlFRQWdBQ2dDQUNnQ3FBRVJBZ0JCZnc4TElBRkJBV29oQVNBQUlBUkJBV28yQXJ3QklBQWdBMEVCYWpZQ2RFR2lBU0VEREFRTElBUkJxZ0ZHQkVBZ0FFR3FBU0FDSUFBZ0FoQlRFTDBFSVFNZ0FDQUFLQUs4QVNJRWFrRUFPZ0I0SUFBZ0JFRi9hallDdkFFZ0FVVUVRQ0FBS0FKMElnRkJBVWdOQWlBQUlBRkJmMm8yQW5RZ0F3OExJQUFnQUNnQ2RFRi9hallDZENBQlFYOXFJUUVNQkFzZ0NFVU5BU0FFUWFnQlJnUkFJQUFnQUNnQ3ZBRnFRUUU2QUhnZ0FFR29BU0FDSUFBZ0FoQlRFTDBFRHd0Qm9nRWhBMEVBSVFFZ0JFR3BBVWNOQXlBQUlBQW9BcndCYWkwQWVBUkFJQUFvQW5BaUFTQUNRY0cyRVVIVHRoRkJ5Yk1SUVFBZ0FTZ0NBQ2dDcUFFUkFnQUxJQUFvQW5RaUFVRUJUZ1JBSUFBZ0FVRi9hallDZENBQUlBQW9BcndCSWdGcVFRQTZBSGdnQUNBQlFYOXFOZ0s4QVFzZ0FDQUNFTG9OSVFNTElBTVBDeUFFUWFnQlJnUkFBa0FnQUNBQUtBSzhBV29pQTBINEFHb3RBQUFFUUNBQUtBSndJZ01nQWtIWnRoRkI2N1lSUWNtekVVRUFJQU1vQWdBb0FxZ0JFUUlBREFFTElBTkJBVG9BZUFzZ0FFR29BU0FDSUFBZ0FoQlRFTDBFSVFNTUFRdEJvZ0VoQXlBRVFha0JSdzBBSUFBZ0FDZ0N2QUZxTFFCNFJRMEFJQUFvQW5BaUJDQUNRY0cyRVVIVHRoRkJ5Yk1SUVFBZ0JDZ0NBQ2dDcUFFUkFnQU1BQUFMQUFBTEFBc0pBQ0FBUVFBMkFoQUxsd1FDQkg4QmZpTUFRZUFBYXlJRUpBQWdBa0VBTmdJQUFrQWdBQ0FBS0FJQUtBSndFUUFBQkVBZ0JFRUlhaUFBUVFCQkFCRE5BU0lHSUFFZ0JFSGNBR29nQXhDQ0J5RUZJQUlnQVNnQ0FEWUNBQ0FDSUFVUWhBSWdBU0FDS0FJQUlBQWdBQ2dDQUNnQ1BCRUFBRUYvYW13Z0FTZ0NBR28yQWdBZ0JoQTFHZ3dCQ3lBQUlBQW9BZ0FvQWh3UkFBQkJEMFlFUUNBQUtBSkFJUUlnQVVFQU5nSUFJQVJCQURZQ0NDQUNFRGRGRFFGQkFDRUFBMEFnQWlBQUVEZ29BZ0FpQlNBRktBSUFLQUlvRVFBQUtRSUVJUWdnQkNBQ0lBQVFPQ2dDQUNBRVFRUnFJQVJCM0FCcUlBaENOSWluUVFkeElnVkJBVVlnQXlBRkd4Q0NCellDQUNBRUlBUkJDR29nQkJDbUFTZ0NBRFlDQ0NBQklBUW9BZ0FRaEFJZ0FTQUJLQUlBSUFRb0FnUnFOZ0lBSUFCQkFXb2lBQ0FDRURkSkRRQUxJQVFvQWdnaEJRd0JDeUFBSUFBb0FnQW9BbUFSQUFBRVFDQUFJQUVRdmdRaEJRd0JDeUFBSUFBb0FnQW9BbWdSQUFBRVFDQUFJQUVRdmdRaEJTQUJJQUFnQUNnQ0FDZ0NNQkVBQUNBQktBSUFiRFlDQUF3QkN5QUFJQUFvQWdBb0Ftd1JBQUFFUUNBRVFRaHFJQUJCQUNBREVNMEJJZ1lnQVNBRVFkd0FhaUFERUlJSElRVWdBaUFCS0FJQUlnYzJBZ0FnQUNnQ0FDRUNJQUVDZnlBREJFQWdBQ0FDS0FJNEVRQUFEQUVMSUFBZ0FpZ0NOQkVBQUFzZ0IydzJBZ0FnQmhBMUdnd0JDMEVCSVFVZ0FVRUJOZ0lBQ3lBRVFlQUFhaVFBSUFVTHhRVUNBMzhCZmlNQVFmQUFheUlGSkFBZ0FrRUFOZ0lBQWtBZ0FDQUFLQUlBS0FKd0VRQUFCRUFnQlNBRlFSQnFJQUJCQUVFQUVNMEJJZ2NnQVNBRlFlZ0FhaUFESUFRUWd3Y2lCallDYkNBRFFRSkdCRUFnQlVHSXNCRWdCVUhzQUdvUXBnRW9BZ0FpQmpZQ2JBc2dBU0FHRUlRQ0lBSWdBU2dDQUNJQ05nSUFJQUVnQUNBQUtBSUFLQUk4RVFBQUlBSnNOZ0lBSUFVb0Ftd2hBaUFIRURVYURBRUxJQUFnQUNnQ0FDZ0NIQkVBQUVFUFJnUkFJQUFvQWtBaEFrRUFJUUFnQVVFQU5nSUFJQVVnQTBFQ1JrRUVkQ0lHTmdJUUlBRWdBaEEzQkg4RFFDQUNJQUFRT0NnQ0FDSUdJQVlvQWdBb0FpZ1JBQUFwQWdRaENDQUZJQUlnQUJBNEtBSUFJQVZCN0FCcUlBVkI2QUJxSUFNZ0NFSTBpS2RCQjNFaUJrRUJSaUFFSUFZYkVJTUhOZ0lNSUFVZ0JVRVFhaUFGUVF4cUVLWUJLQUlBTmdJUUlBRWdCU2dDREJDRUFpQUJJQUVvQWdBZ0JTZ0NiR28yQWdBZ0FFRUJhaUlBSUFJUU4wa05BQXNnQlNnQ0VBVWdCZ3NRaEFJZ0JTZ0NFQ0VDREFFTElBQWdBQ2dDQUNnQ1lCRUFBQVJBSUFBZ0FSQytCQ0VDREFFTElBQWdBQ2dDQUNnQ2FCRUFBQVJBSUFBZ0FSQytCQ0VDSUFBZ0FDZ0NBQ2dDTUJFQUFFRi9haUlEUVFGTkJFQWdBMEVCYXcwQ0lBRWdBU2dDQUVFQmREWUNBQ0FDUVFGMElRSU1BZ3NnQVNBQUlBQW9BZ0FvQWpBUkFBQWdBU2dDQUd3MkFnQWdBa0VDZENFQ0RBRUxJQUFnQUNnQ0FDZ0NiQkVBQUFSQUlBVWdCVUVRYWlBQVFRQWdCQkROQVNJSElBRWdCVUhvQUdvZ0F5QUVFSU1ISWdZMkFtd2dBMEVDUmdSQUlBVkJpTEFSSUFWQjdBQnFFS1lCS0FJQUlnWTJBbXdMSUFFZ0JoQ0VBaUFDSUFFb0FnQWlBellDQUNBQUtBSUFJUUlnQVFKL0lBUUVRQ0FBSUFJb0FqZ1JBQUFNQVFzZ0FDQUNLQUkwRVFBQUN5QURiRFlDQUNBRktBSnNJUUlnQnhBMUdnd0JDMEVRSVFJZ0FVRVFOZ0lBQ3lBRlFmQUFhaVFBSUFJTHFnVUJCMzhqQUVIZ0FHc2lCU1FBQWtBZ0FTQUJLQUlBS0FKd0VRQUFCRUFnQlVFSWFpQUJRUUJCQUJETkFTRURJQUVnQVNnQ0FDZ0NQQkVBQUNFQklBQWdBeUFDSUFRZ0JCQ0VCeUVBSUFNUU5Sb2dBQ0FCYkNFR0RBRUxJQUVnQVNnQ0FDZ0NpQUVSQUFBRVFDQUZRUUEyQWdRQ1FDQUJLQUpBRURkQkFVZ05BQU5BSUFWQkNHb2dBU0FHUVFBUXpRRWhCeUFGUVFBNkFBTWdCVUVBT2dBQ0lBVkJBRG9BQVNBQUlBY2dCVUVEYWlBRlFRSnFJQVZCQVdvUWhBY2hDQUpBSUFWQkJHb0NmeUFGTFFBREJFQkJBU0VKUVFnTUFRc2dCUzBBQWdSQVFRRWhDa0VFREFFTElBVXRBQUZGRFFGQkFTRUxRUUlMRUlRQ0N5QUZJQVVvQWdRZ0NHbzJBZ1FnQnhBMUdpQUdRUUZxSWdZZ0FTZ0NRQkEzU0EwQUN5QUpCRUFnQWtFQk9nQUFJQVZCQkdwQkNCQ0VBZ3dCQ3lBS0JFQWdBMEVCT2dBQUlBVkJCR3BCQkJDRUFnd0JDeUFMUlEwQUlBUkJBVG9BQUNBRlFRUnFRUUlRaEFJTElBVW9BZ1FoQmd3QkMwRUJJUVlDUUNBQklBRW9BZ0FvQW1BUkFBQU5BQ0FCSUFFb0FnQW9BbWdSQUFBRVFDQUJJQUVvQWdBb0FqQVJBQUFoQmd3QkN5QUJJQUVvQWdBb0Ftd1JBQUJGRFFBZ0FTQUJLQUlBS0FJMEVRQUFJQUVnQVNnQ0FDZ0NPQkVBQUd3aEJnc0NRQUpBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUNSZzBBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUtSZzBBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUxSdzBCQ3lBQ1FRRTZBQUFnQmtFRGRDRUdEQUVMQWtBQ1FDQUJJQUVvQWdBb0Fod1JBQUJCQTBZTkFDQUJJQUVvQWdBb0Fod1JBQUJCQmtZTkFDQUJJQUVvQWdBb0Fod1JBQUJCQjBjTkFRc2dCRUVCT2dBQUlBWkJBWFFoQmd3QkN5QUJJQUVvQWdBb0Fod1JBQUJCQkVZTkFDQUJJQUVvQWdBb0Fod1JBQUJCQlVZTkFDQURRUUU2QUFBZ0JrRUNkQ0VHQ3lBRlFlQUFhaVFBSUFZTExBRUNmeU1BUVJCcklnQWtBQ0FBRU1zQk5nSUFJQUJCQ0dvZ0FCQm5LQUlBSVFFZ0FFRVFhaVFBSUFFTERBQWdBRUVBSUFGckVNRUZDeDhBSUFBZ0FTZ0NBQ0FDUVFOMlFmei8vLzhCY1dvZ0FrRWZjUkNaQVJvTEpBRUJmeUFBS0FJQUJFQWdBQkFiR2lBQUtBSUFJUUVnQUJBYktBSUFHaUFCRUNvTEN6Z0JBWDhnQUNnQ0JDRUNJQUVFUUNBQUtBSUFJZ0FnQUNnQ0FDQUNjallDQUE4TElBQW9BZ0FpQUNBQUtBSUFJQUpCZjNOeE5nSUFDd2tBSUFBZ0FSQ0RCZ3NVQUNBQ1JRUkFRUUFQQ3lBQUlBRWdBaENFQ0Fzc0FDQUJCRUFnQUNBQktBSUFFSXdISUFBZ0FTZ0NCQkNNQnlBQUVDVWFJQUZCRUdvUTVnSWdBUkFxQ3d0K0FRSi9Jd0JCRUdzaUJDUUFJQVJCQURZQ0RDQUFRUXhxSUFSQkRHb2dBeENCQWlBQkJFQWdBQ2dDRUJwQjFhclZxZ0VnQVNJRFNRUkFFSUlCQUFzZ0EwRU1iQkFtSVFVTElBQWdCVFlDQUNBQUlBVWdBa0VNYkdvaUFqWUNDQ0FBSUFJMkFnUWdBQkFqSUFVZ0FVRU1iR28yQWdBZ0JFRVFhaVFBSUFBTFdRRUNmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBQkRJR1NJRElBRlBCRUFnQUJDckF5SUFJQU5CQVhaSkJFQWdBaUFBUVFGME5nSUlJQUpCQ0dvZ0FrRU1haEJTS0FJQUlRTUxJQUpCRUdva0FDQUREd3NRYmdBTENRQWdBQkFqR2tGdkMrOENBUUovSXdCQjhBdHJJZ2NrQUNBSFFlQUVhaUFFSUFFZ0FoQ2JDU0VJSUFjZ0F5a0NDRGNEMEFRZ0J5QURLUUlBTndQSUJDQUhRYmdFYWtIWXVnOFFhU0VESUFjZ0J5a0QwQVEzQXhnZ0J5QUhLUVBJQkRjREVDQUhRZGdFYWlBR0lBZ2dBU0FDSUFRZ0JTQUhRUkJxUVFCQkFTQURFSWdPRURvaEFTQURFQ0FhSUFkQnNBUnFFSmdPSVFJZ0IwR1lBV29nQVNnQ0FDQUhRU0JxUWRpNkR4QnBJZ01nQWhDWERTRUNJQU1RSUJvZ0IwSG9BR29nQVNnQ0FCQ0hEaUVESUFFb0FnQWdBeENHRGlBQktBSUFJQUlRaFE0Z0JoQ01CQ0FISUFBUUV6WUNZQ0FISUFBUUh5SUFOZ0pZSUFBRVFDQUhRU0JxUVFFZ0IwSGdBR29nQjBIWUFHcEJBRUVBUVFCQkFCQ1RCeUVBSUFFb0FnQWlBeUFDSUFCQkFDQURLQUlBS0FMWUFSRUpBRVVFUUNBRlFRTkJwY2dQRUxzQklBY2dCUkFUTmdJQUlBY1E2Uk1nQnlnQ1lCRGVFd3NnQUJDakJSb0xJQUlRK2dZYUlBRVFQaUFJRUpvSkdpQUhRZkFMYWlRQUN3MEFJQUFvQWdCQkFFZEJBWE1MRFFBZ0FFR0FCMm9nQVJENURRdXdBZ0VCZnlBQVFRQTZBRFVnQUNBSE9nQTBJQUFnQmpZQ0lDQUFJQVUyQWh3Z0FFSUFOd0lRSUFBZ0F6WUNEQ0FBSUFJMkFnZ2dBQ0FCTmdJRUlBQkJpTDRQTmdJQUlBQkJmeUFCUVFSMElBRkIvLy8vL3dCeElBRkhHeEFtSWdNMkFoaEJBU0VDQWtBZ0FVRUJTQTBBSUFOQkFDQUZheENQQ1NBQUtBSUVJZ0ZCQVV3TkFBTkFJQUFvQWhnZ0FrRUVkR29nQWlBQUtBSWNheENQQ1NBQ1FRRnFJZ0lnQUNnQ0JDSUJTQTBBQ3dzZ0JFVWdBVUVBVEhKRkJFQURRQUpBSUFRZ0NFRUNkR29vQWdBaUFrVUVRRUVBSVFJTUFRc2dBaERDQVNFQ0lBQW9BZ1FoQVFzZ0FDZ0NHQ0FJUVFSMGFpQUNOZ0lBSUFoQkFXb2lDQ0FCU0EwQUN3c2dBQ2dDR0NBQUtBSVFRUVIwYWtFQk5nSUlJQUJCSkdwQkFSQ1BDU0FBSUFBb0FoZ29BZ0EyQWlRZ0FBdEZBUUYvSUFBZ0FSQWJFSTBPSVFJZ0FDQUJLQUlBTmdJQUlBQWdBU2dDQkRZQ0JDQUJFQnNvQWdBaEFDQUNFQnNnQURZQ0FDQUJFQnRCQURZQ0FDQUJRZ0EzQWdBTE5RQWdBQ2dDQUJvZ0FDZ0NBQ0FBRUkwRVFSaHNhaG9nQUNnQ0FDQUFFSklDUVJoc2Fob2dBQ2dDQUNBQUVJMEVRUmhzYWhvTEdBRUJmeUFBRUJZaEFpQUFJQUVRMFFvZ0FDQUNFTWdGQ3dvQUlBQWdBVUVNYkdvTEJ3QWdBQkRBQkFzZ0FRRi9Jd0JCRUdzaUFTUUFJQUFnQVVFSWFoRCtDU0FCUVJCcUpBQWdBQXRnQVFKL0lBQW9BaGdpQVFSQUEwQWdBU2dDQUNFQklBQW9BaGdpQWdSQUlBSVFLZ3NnQUNBQk5nSVlJQUVOQUFzTElBQW9BaFFpQVFSQUEwQWdBU2dDQUNFQ0lBRVFLaUFBSUFJMkFoUWdBaUlCRFFBTEN5QUFRUnhxRUs0RElBQUxrQUVCQVg4akFFRVFheUlFSkFBZ0JDQUROZ0lJSUFRZ0FUWUNEQ0FEUVg5R0lBQVFIeUlCUVFCSmNrVUVRQ0FFSUFFMkFnQWdCQ0FFUVF4cUlBUVFwQUVvQWdBMkFnUUNRQ0FBRUJNZ0FpQUVRUVJxSUFSQkNHb1FwQUVvQWdBUWl3Y2lBQTBBUVg4aEFDQUVLQUlFSWdFZ0JDZ0NDQ0lDU1EwQUlBRWdBa3NoQUFzZ0JFRVFhaVFBSUFBUEN4QnVBQXNRQUNBQUtBSUFJQUVvQWdCclFRTjFDeDRCQVg4Z0FDZ0NCRVVFUUVFUUVFWWlBUkNUQVJvZ0FDQUJOZ0lFQ3dzY0FDQUFRUU5OQkVBZ0FFRUNkRUdZdFE5cUtBSUFEd3RCeHAwUEN3b0FJQUF0QUNSQkFFY0xmQUVEZnlNQVFSQnJJZ1VrQUFKQUlBQVFYU0lFSUFBUUh5SURheUFDVHdSQUlBSkZEUUVnQUJBVElnUWdBMm9nQVNBQ0VPZ0JJQUFnQWlBRGFpSUJFSWNESUFWQkFEb0FEeUFCSUFScUlBVkJEMm9RbEFFTUFRc2dBQ0FFSUFJZ0Eyb2dCR3NnQXlBRFFRQWdBaUFCRUs0SkN5QUZRUkJxSkFBZ0FBc0pBQ0FBSUFFUVp4b0xEUUFnQUNnQ0JDZ0NBQ2dDQUFzTEFDQUFMUUFDUVNoeFJRc09BQ0FBTFFBQlFRaDBRWUFPUmdzS0FDQUFFS0lIUVFCSEMrQUNBUU4vSXdCQlFHb2lBeVFBQW44Z0FTQUJLQUlBS0FJTUVRQUFJZ1ZCbXBrT0VDc0VRQ0FCSUFFb0FnQW9BaVFSQUFBaEFpQUFJQUFvQWhRaUJFRUJhallDRkNBQ0lBUWdBaWdDQUNnQ2NCRUJBQ0FESUFFZ0FTZ0NBQ2dDSkJFQUFDSUNJQUlvQWdBb0FuUVJBQUEyQWdRZ0EwR2hzQTgyQWdBZ0EwRWdha0VVUVp5d0R5QURFQ2NhSUFFZ0EwRWdhaERDQVNBQktBSUFLQUlRRVFFQUlBQWdBUkNNR2d3QkN5QUJJQUVvQWdBb0FoZ1JBQUFoQkNBQklBRW9BZ0FvQWh3UkFBQUVRQ0FDUlFSQUlBTWdBQ0FGRU1RRk5nSWdJQU1nQUJCK05nSVFRUUFnQTBFZ2FpQURRUkJxRUlnQkRRSWFDeUFESUFFMkFod2dBMEVRYWlBQUlBTkJJR29nQkNBRFFSeHFFS1VKSWdBUXBBa2dBQkN5QWtFQkRBRUxJQU1nQVRZQ0hDQURRUkJxSUFBZ0EwRWdhaUFFSUFOQkhHb1FwUWtpQUJDa0NTQURMUUFVSVFFZ0FCQ3lBaUFCUVFCSEN5RUNJQU5CUUdza0FDQUNDeFFBSUFCQkFEWUNCQ0FBUVpTd0R6WUNBQ0FBQzB3QkFYOGpBRUVRYXlJQ0pBQkJqUFFTS0FJQUJFQWdBaUFBUWQreUR5QUFHellDQUVHSThSRW9BZ0FpQUVHVTRnc2dBaERNQWlBQUlBRVEwZ1JCQ2lBQUVNQURDeUFDUVJCcUpBQUxTd0VCZnlNQVFSQnJJZ0lrQUFKQUlBQW9BZ1FnQUJBYktBSUFSd1JBSUFBUU95QUFLQUlFSUFFUXN3a2dBQ0FBS0FJRVFSUnFOZ0lFREFFTElBQWdBUkRQR2dzZ0FrRVFhaVFBQzh3REFRTi9JQUVvQWdBaUFnUkFJQUFnQWpZQ0FBc2dBUzBBQkFSQUlBQkJBVG9BQkFzZ0FTMEFCUVJBSUFCQkFUb0FCUXNnQVNnQ0NDSUNRWDlIQkVBZ0FDQUNOZ0lJQ3lBQktBSU1JZ0pCZjBjRVFDQUFJQUkyQWd3TElBRW9BaEFpQWdSQUlBQWdBallDRUFzZ0FTZ0NGQ0lDQkVBZ0FDQUNOZ0lVQ3lBQkxRQVlCRUFnQUVFQk9nQVlDMEVBSVFJRFFDQUJJQUpCQW5RaUEyb29BaHdpQkVFQ1RnUkFJQUFnQTJvZ0JEWUNIQXNnQWtFQmFpSUNRUU5IRFFBTFFRQWhBZ05BUVFFaEF5QUFJQUpxSUFFZ0Ftb3RBQ2dFZnlBREJTQUFJQUpxTFFBb1FRQkhDem9BS0NBQ1FRRnFJZ0pCQTBjTkFBdEJBQ0VDQTBBZ0FTQUNRUUowSWdOcUtBSXNJZ1JCZjBjRVFDQUFJQU5xSUFRMkFpd0xJQUpCQVdvaUFrRURSdzBBQ3lBQkxRQTRCRUFnQUVFQk9nQTRDeUFCTFFBNUJFQWdBRUVCT2dBNUN5QUJLQUk4SWdJRVFDQUFJQUkyQWp3TElBRXRBRUFFUUNBQVFRRTZBRUFMSUFFb0FrUWlBa0YvUndSQUlBQWdBallDUkFzZ0FTMEFUQVJBSUFCQkFUb0FUQXNnQVMwQVRRUkFJQUJCQVRvQVRRc2dBUzBBVGdSQUlBQkJBVG9BVGdzZ0FTZ0NVQ0lDUVg5SEJFQWdBQ0FDTmdKUUN5QUJLQUpJSWdFRVFDQUFJQUUyQWtnTEN3c0FJQUFnQVJDQ0R5QUFDeUVBSUFFRVFDQUFJQUVvQWdBUXJBY2dBQ0FCS0FJRUVLd0hJQUFRMXdJYUN3dVNBUUVEZnlBQUVEd2hBeUFBRUNVaEJRSkFJQU1FUUFKQUEwQUNRQUovSUFBUUd5QUNJQU5CRUdvaUJCQ3ZBd1JBSUFNb0FnQkZEUVlnQXd3QkN5QUFFQnNnQkNBQ0VLOERSUTBESUFOQkJHb2hCQ0FES0FJRVJRMEJJQVFpQXdzaEJTQURLQUlBSVFNTUFRc0xJQUVnQXpZQ0FDQUVEd3NnQVNBRE5nSUFJQVVQQ3lBQUVDVWhBd3NnQVNBRE5nSUFJQU1MS1FBZ0FRUkFJQUFnQVNnQ0FCQ3VCeUFBSUFFb0FnUVFyZ2NnQUJEWEFob2dBVUVRYWhDeUFnc0xKQUFnQVFSQUlBQWdBU2dDQUJDdkJ5QUFJQUVvQWdRUXJ3Y2dBQkFsR2lBQkVDb0xDMElCQVg4akFFRVFheUlFSkFBZ0JDQUNOZ0lJSUFRZ0FUWUNEQ0FFSUFNMkFnUWdBQ0FFS0FJTUlBUW9BZ2dnQkNnQ0JDQUFLQUlJRVFRQUlBUkJFR29rQUF1bkF3RURmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBRUhvQUdvUVJDZ0NBQ0VGSUFFRWZ5QUZFQlpGQkVBZ0FDQUJJQUVvQWdBb0FnQVJBQUJCdkxjTFFmTzNDMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQVVFQklBRW9BZ0FvQXJnQkVRRUFJQU1nQVRZQ0NDQUZJQU5CQ0dvUXNnUWdBeWdDREFVZ0Fnc0VRQ0FGRUJZRVFFRUFJUUVEUUFKQUlBVWdBUkFSS0FJQUlnSWdBaWdDQUNnQ05CRUFBQ0lDUlEwQUlBSW9BaGdpQWlBREtBSU1JZ1FnQkNnQ0FDZ0NOQkVBQUNnQ0dDSUVja1VFUUNBQUlBTW9BZ3dpQWlBQ0tBSUFLQUlBRVFBQVFmcTNDMEdLdUF0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBa1VnQkVWeURRQWdBaUFDS0FJQUtBSVVFUUFBUlEwQUlBUWdCQ2dDQUNnQ0ZCRUFBRVVOQUNBQ0lBSW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWdCQ0FFS0FJQUtBSVVFUUFBRUV0QkFCQVBLQUlBUncwQUlBQWdBeWdDRENJQ0lBSW9BZ0FvQWdBUkFBQkJrcmdMUWFPNEMwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBVUVCYWlJQklBVVFGa2tOQUFzTElBVWdBMEVNYWhEY0FRc2dBMEVRYWlRQUN3MEFJQUF0QUFsQkFuRkJBWFlMdkJZQ0NYOEJmaU1BUWZBQmF5SUlKQUFnQUNBQklBQkJ1QVZxSWdZUXFBOGdBQ0FCSUFZUXB3OENRQ0FFUlEwQUlBQWdBU0FHSUFSQkFFRUFFTHdISUFBZ0FTQUVFSlFFSUFRUVlFRUNTQTBBSUFBZ0FVRjNRZW1jQ3hCS0N5QUNFRGNFUUFOQUlBSWdDaEE0S0FJQUlnY2dCeWdDQUNnQ0tCRUFBQ0VGSUFBZ0FpQUtFRGhCQkdvaUNTQUZFTFlGQWtBZ0JTa0NCQ0lPcDBFL2NTSUxRUUpKRFFBZ0N5QUFLQUs4QlVFL2NVWU5BQ0FBSUFsQmdaMExJQWNnQnlnQ0FDZ0NHQkVBQUJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUlBVXBBZ1FoRGdzZ0JTQU9Ra0NESUFBcEFyd0ZRaitEaERjQ0JDQUdJQVVReWdjQ1FBSi9BbjhnQUNrQ3ZBVWlEa0tBZ0lDQWdBU0RVRVVFUUNBRklBVXBBZ1JDZ0lDQWdJQUVoRGNDQkNBQUtRSzhCU0VPQ3lBT1FvQ0FnSUNBQ0lOUVJRc0VRQ0FGSUFVcEFnUkNnSUNBZ0lBSWhEY0NCQ0FBS1FLOEJTRU9DeUFPUW9DQWdJQ0FFSU5RUlFzRWZpQUZJQVVwQWdSQ2dJQ0FnSUFRaERjQ0JDQUFLUUs4QlFVZ0RndW5RVDl4UVh0cVFRRkxEUUFnQlJDWkFrVUVRQ0FGRU9zQlJRMEJDeUFBSUFsQnhKMExJQWNnQnlnQ0FDZ0NHQkVBQUJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUhJQWNvQWdBb0FuQVJBQUFFUUNBQUlBa2dCaUFISUFjb0FnQW9BbEFSQUFCQkFDQUtJQUlRTjBGL2FrWVF2QWNMQWtBZ0JSQ1dBa1VOQUNBQUtBSVlEUUFnQUNBSlFYZEJtcDRMRUVvZ0FDQUpRWGRCdUFOQjQrb0tRWnFlQ3hBb0N5QUhJQWNvQWdBb0FzQUJFUUFBQkVBZ0FDQUpRYkdlQ3lBQ0lBb1FPQ2dDQUNJRklBVW9BZ0FvQWhnUkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQnhDMEJ3UkFJQUFnQ1VIOG5nc2dBaUFLRURnb0FnQWlCU0FGS0FJQUtBSVlFUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBcEJBV29pQ2lBQ0VEZEpEUUFMQ3dKQUFrQWdBQ2dDVEJBa0RRQWdBQ2dDdEFVUXR3VkZEUUFnQUNBQklBSWdBQ2dDdEFVZ0F5QUVFTDBQREFFTElBQWdBU0FBS0FLMEJSQ1lCQ0FEQkVBZ0FDQUJJQU1RbUFRTElBSVFOd1JBUVFBaEJRTkFJQUFnQWlBRkVEaEJCR29nQWlBRkVEZ29BZ0FpQ2lBS0tBSUFLQUlZRVFBQUVKZ0VJQVZCQVdvaUJTQUNFRGRKRFFBTEN3SkFJQUFvQXJ3RlFUOXhRWDFxSWdWQkEwMEVRQUpBQWtBQ1FBSkFJQVZCQVdzT0F3TUFBUUlMSUFoQnVBRnFJQUJCK0trQmFrRTBFRDBhREFRTElBaEJ1QUZxSUFCQnhLa0Jha0UwRUQwYURBTUxJQWhCdUFGcUlBQkJyS29CYWtFMEVEMGFEQUlMSUFoQnVBRnFJQUJCNEtvQmFrRTBFRDBhREFFTElBaEJ1QUZxRUlrREN3SkFBa0FnQmkwQUpRUkFJQVlRaGdORkRRRUxJQVl0QURCRkRRRWdCaENHQXcwQkN5QUFJQUFwQXJ3RlF2Ly8vLy8vLy8rL2VJTkNnSUNBZ0lDQWdNQUJoRGNDdkFVTEFrQWdCaEN1QWtVTkFDQUdFSVlERFFBZ0FDQUFLUUs4QlVMLy8vLy8vLy8vdjNpRFFvQ0FnSUNBZ0lEQUFZUTNBcndGQ3lBSVFiZ0JhaUFHUVFFUWtBWUNRQ0FHRU5rRFJRMEFJQWdwQXJ3QlFqZUlwMEVQY1NJRlFRVk5RUUJCQVNBRmRFRXNjUnNOQUNBQUlBRkJ1NThMUWREckNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FDQUlRWDgyQXNnQkN3SkFJQUlRTjBVRVFFRUFJUXRCQUNFRkRBRUxRUUFoQlVFQUlRdEJBQ0VLQTBBZ0FpQUtFRGdvQWdBaUJ5QUhLQUlBS0FJb0VRQUFJUWNnQWlBS0VEaEJCR29oQ1FKQUlBY1FzUU5GRFFBZ0J5a0NHQ0FJS1FQUUFZVkNnSUNBK0ErRFVBMEFJQUFnQ1VINm53dEJnZklLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBY1FsUUpGRFFBZ0J5a0NHQ0FJS1FQUUFZVkNnSUNBZ1BBQmcxQU5BQ0FBSUFsQjE5SUtRWnpUQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0J4Q0dBd1JBSUFBZ0NVR1pvQXNnQWlBS0VEZ29BZ0FpRENBTUtBSUFLQUlZRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQnhDQUFrVUVRRUVCSVEwTUFRc2dBQ2dDdkFWQlAzRkJmV3BCQVUwRVFDQUFJQWxCRGtIUW9Bc1FTaUFBSUFsQkJrRzRBMEhqNmdwQjBLQUxFQ2dnQUNBSlFRaEJ3QUpCQWtIc3hBcEIwS0FMRU5FQlFRRWhCUXdCQ3lBQUlBbEI2YUFMUWRDZ0MwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FIRU5rRFJRUkFJQWNRbGdKRkRRRUxJQWdwQXJ3QlFqZUlwMEVQY1NJTVFRVk5RUUJCQVNBTWRFRXNjUnNOQUNBQUlBbEJ1NThMUVltaEMwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dCeERVQWlFTUlBaEI0QUJxSUFoQnVBRnFRVFFRUFJvZ0FDQUpJQWhCNEFCcUlBZEJBQkNSQmlBSElBaEI0QUJxUVRRUVBSb2dDeUFNY2lFTElBcEJBV29pQ2lBQ0VEZEpEUUFMQ3lBQUlBRWdCU0FFRUxVUEFrQWdBQ2tDdkFWQ1A0TkNCRklOQUNBQVFlQ3FBV29RbFFKRkRRQWdCaENWQWcwQUlBWVFoUU5GRFFBZ0FDQUFLUUxRQlVMLy8vLy9qMzZESUFCQitLb0JhaWtDQUVLQWdJQ0E4QUdEaERjQzBBVUxJQUFnQVNBR0lBSWdCU0FORUtZUElBQWdCaUFDRU4wSklBQWdCaUFDRUtVUElBSVFOd1JBUVFBaEJRTkFJQUFnQWlBRkVEaEJCR29nQWlBRkVEZ29BZ0FRdVFjZ0JVRUJhaUlGSUFJUU4wa05BQXNMQWtBZ0MwRUJjVVVOQUNBQ0VEZEZEUUJCQUNFRkEwQWdBQ0FDSUFVUU9FRUVhaUFDSUFVUU9DZ0NBRUVCRU44SklBVkJBV29pQlNBQ0VEZEpEUUFMQ3lBR0lBaEJ1QUZxUVFFUWtBWWdDRUhnQUdvZ0FpQUFLQUswQlNBR0VNOEpJUVVDUUNBRUJFQWdCU0FFRUpBRURBRUxJQUFnQVNBRklBTWlBZ1IvSUFJRklBQW9BclFGQ3hEMENRc0NRQUpBSUFZdEFDWUVRQ0FBS1FLOEJVSS9nMElHVWdSQUlBQWdBVUc0aXd0QnF1VUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFJUVFocUlBVWdBQ2dDdEFVUXpna2hCRUdBQVJCR0lnSWdBQ2dDdEFVZ0JFRUJFTzBDR2dKQUlBQW9Ba3dnQWhEc0FnMEFBa0FnQUNnQ1RDQUFLQUswQlVFQVFRQVFyQUVpQWlBQ0tBSUFLQUl3RVFBQUVQUUJSUTBBSUFJZ0FpZ0NBQ2dDTUJFQUFDSUdJQVlvQWdBb0FsUVJBQUFvQWtCRkRRQWdBaUFDS0FJQUtBSXdFUUFBSWdZZ0JpZ0NBQ2dDVkJFQUFDZ0NRQkEzRFFBZ0FpQUNLQUlBS0FJd0VRQUFJZ1lnQmlnQ0FDZ0NMQkVBQUNrQ0JDQUZFQnNwQWdTRlFqK0RRZ0JTRFFBZ0FpQUNLQUlBS0FJd0VRQUFJZ0lnQWlnQ0FDZ0NWQkVBQUNBRkVJZ0dEQUVMSUFBZ0FVR1dvUXNnQUNnQ3RBVVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkJBMUdpQUREUUVNQWdzZ0NFRUlha0VRSUFVUUd5Z0NCRUUvY1VFQlFRQkJBRUVBRUVVaEFrR0FBUkJHSWdRZ0FDZ0N0QVVnQWtFQUVPMENHaUFBS0FKTUlBUVE3QUpGQkVBQ1FBSkFJQUFvQWt3Z0FDZ0N0QVZCQUVFQUVLd0JJZ1FnQkNnQ0FDZ0NNQkVBQUNJR0lBWW9BZ0FvQWh3UkFBQkJFRVlFUUNBRUlBUW9BZ0FvQWpBUkFBQWlCQ0FFS0FJQUtBSXNFUUFBS1FJRUlBVVFHeWtDQklWQ1A0TkNBRklOQWlBQUlBRkJ0YUVMSUFBb0FyUUZFQk1nQlJESkJFRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBQWdBVUhvb1FzZ0FDZ0N0QVVRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FoQTFHZ3dEQ3dzZ0FoQTFHaUFERFFCQjQ5WUpFTUlCSVFNTFFZQUJFRVlpQWlBRElBVkJBQkR0QWlFRUlBQW9Ba3dnQWhEc0FrVUVRQ0FEUWVQV0NSQXJCRUFnQUNBQlFaU2lDeUFBS0FLMEJSQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUlMSUFBZ0FVSGRvZ3NnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQUNBQklBSVF1QWNDUUNBQUlBVVFqZ01FUUNBSUlBSTJBZ2dnQUVISXF3RnFJQWhCQ0dvUXNnUWdBQ0FCUVFFUW1RUU1BUXNnQUNBQklBUWdBaWdDQUNnQ05CRUFBQkRIQndzZ0FDQUNJQUFvQWdBb0FvZ0NFUUVBQ3lBRkVEVWFDeUFJUWZBQmFpUUFDMklCQW44akFFRWdheUlCSkFBQ2YwRUJJQUF0QUFaQklIRkJCWFlOQUJwQkFDQUFJQUFvQWdBb0FvZ0JFUUFBUlEwQUdpQUFLQUpBRUVBaEFpQUFLQUpBRURJaEFDQUJJQUV0QUJBNkFBOGdBaUFBRUkwUEN5RUFJQUZCSUdva0FDQUFDM2tCQTM4Z0EwRUFPZ0FBSUFBUXdRSWhCUU5BQWtBZ0FDQUZFQkVvQWdBZ0FTQUNFTklKSUFWQmYyb2hCQ0FDRUxnQ0lRWWdCVUVFU0EwQUlBUWhCU0FHRFFFTEN5QUNFTGdDQkVBZ0EwRUJPZ0FBQTBBZ0FDQUVFQkVvQWdBZ0FTQUNFTklKSUFSQkFFb2hBeUFFUVg5cUlRUWdBdzBBQ3dzTEtnQWdBQ0FDUVE0UTd3SUVRQ0FBSUFGQnpkY0tJQU5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQzlRQkFRSi9Ba0FnQWlnQ0FDSUVRUkJMRFFBQ1FFRUJJQVIwSWdWQmdNQURjVVVFUUNBRlFRTnhEUUZCQVNBRWRFR0VnQVJ4UlEwQ0lBTWdBeWdDQUNnQ0tCRUFBQ0lBSUFBcEFnUkNRSU5DRUlRM0FnUVBDeUFESUFNb0FnQW9BaWdSQUFBaUFDQUVyU0FBS1FJRVFrQ0RoRGNDQkE4TElBTWdBeWdDQUNnQ0tCRUFBQ0lBSUFBcEFnUkNRSU5DRFlRM0FnUVBDeUFESUFNb0FnQW9BaWdSQUFBaUF5QURLUUlFUWtDRFFnMkVOd0lFSUFBZ0FVR3gxQW9nQWlnQ0FCRFRBa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXZSQkFFQ2Z5QUNJQUlvQWdBb0FqQVJBQUFpQkNBRUtBSUFLQUlzRVFBQUlRTWdBQ0FCSUFRUXVRY0NRQ0FERUk0RVJRMEFJQU1vQWdSQlAzRkJlMnBCQVVzTkFDQUNJQUlvQWdBb0FpZ1JBQUFOQUNBQUlBRkJ0L1VLUVlmc0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FBS0FJWVJRMEFJQUF0QUtRQkRRQWdBeThCQkVIQS93RnhEUUFnQXhDQUFnMEFJQUFvQWlndEFNMEZEUUFnQXlnQ0JFRS9jVUY5YWtFQlN3MEFJQVFnQkNnQ0FDZ0NMQkVBQUJDdUFnMEFJQVFnQkNnQ0FDZ0NIQkVBQUVFUVJnUkFJQVFvQWtCQkFCQTRLQUlBSWdJZ0FpZ0NBQ2dDS0JFQUFCQ0FBZzBCSUFRb0FrQkJBQkE0S0FJQUlnSWdBaWdDQUNnQ0tCRUFBQzhCQkVIQS93RnhEUUVMSUFBZ0FVSGc5UXBCaCt3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQU1RcVFsRkRRQWdBeWdDQkVFL2NVRjdha0VCU3cwQUlBUWdCQ2dDQUNnQ0hCRUFBRUVRUmcwQUlBTVF6UVFFUUNBQUlBRkJqL1lLUWNiMkNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBeENHQXdSQUlBQWdBVUhOOWdwQnh2WUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFNUWxnSkZEUUFnQkJEYUJBMEFJQUFnQVVIKzlncEIyNE1LUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBREVOa0RCRUFnQUNBQlFmNzJDa0hRNndwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBTXRBQ1VFUUNBQUlBRkJwL2NLUVp6bENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBeTBBTUVVTkFDQUFJQUZCeS9jS1FlNzNDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNMdmhZQ0JYOEJmaU1BUVVCcUlnVWtBQ0FBSUFFZ0FpQUNLQUlBS0FJc0VRQUFJZ01RM0FrQ1FDQURFSTRFUlEwQUFrQWdBeENBQWtVTkFDQURLUUlFUWorRFFnUlNEUUFnQUNnQ0ZFRUVSdzBBSUFNb0FoUkIveDl4SUFBb0F1Z0dTUTBBSUFBZ0FVSFArQXBCaCt3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQU1Rc2dORkRRQWdBeWdDRkNFRUlBSWdBaWdDQUNnQ01CRUFBRUVDUVFFZ0FpQUNLQUlBS0FJY0VRQUFRUUpHRzJ3Z0JFRU1ka0VIY1dwQkJVNEVRQ0FBSUFGQjdmZ0tRZVB0Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FBSkFJQUlnQWlnQ0FDZ0NiQkVBQUEwQUlBSWdBaWdDQUNnQ0hCRUFBRUVRUmcwQUlBSWdBaWdDQUNnQ0hCRUFBRUVQUncwQkN5QUFJQUZCbC9rS1FlUHRDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlBQ0tBSUFLQUljRVFBQVFRSkhEUUFnQXkwQUZVRVFjVVVOQUNBQUlBRkJ4ZmtLUWVQdENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQUpBSUFNb0FnUkJQM0VpQkVFTVN3MEFRUUVnQkhRaUJrR0FQbkVOQVNBR1FSaHhSUVJBUVFFZ0JIUkI0QUJ4UlEwQklBSWdBaWdDQUNnQ0hCRUFBRUVRUncwQ0lBQWdBVUcvK2dwQmgrd0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUlMSUFJZ0FpZ0NBQ2dDSEJFQUFFRVFSZ1JBSUFBZ0FVRUdRYmdEUWVQcUNrSDMrUW9RS0FzZ0FpQUNLQUlBS0FJc0VRQUFFSzRDUlEwQklBQWdBVUdhK2dwQmgrd0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFBZ0FVSG4rZ3BCaCt3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUFLQUlvSUFNZ0FpQUZRVDlxRVB3WElRUWdCUzBBUHlJR0lBUkJBRWh5Qkg4Z0JnVWdBQ2dDQUNnQ29BRWhCaUFGSUFRMkFqQWdBQ0FCUWFqN0NrR0g3QXBCek9jSklBVkJNR29nQmhFQ0FDQUZMUUEvQzBIL0FYRkZEUUFnQUNnQ0ZFRUVSdzBBSUFNUThBSkZEUUFnQUNnQ0FDZ0NvQUVoQmlBRklBUTJBaUFnQUNBQlFjVDdDa0dIN0FwQnpPY0pJQVZCSUdvZ0JoRUNBQXNDUUNBREVJVURSUTBBSUFNUWxRSkZEUUFnQUNnQ0tDQUNFUFVYSWdSQkFFNEVRQ0FES0FJY0lRWWdBQ2dDQUNnQ29BRWhCeUFGSUFRMkFoQWdCU0FHUVE5eE5nSVVJQUFnQVVHTC9BcEI4KzRLUWFMOENpQUZRUkJxSUFjUkFnQUxBa0FDUUNBQ1FRSWdBaWdDQUNnQ3NBRVJBd0FOQUNBQ1FRb2dBaWdDQUNnQ3NBRVJBd0FOQUNBQ1FRc2dBaWdDQUNnQ3NBRVJBd0JGRFFFTElBTXBBaGhDTW9pblFmOC9jVUVJRUpNRURRQWdBQ0FCUWJuOENrSHo3Z3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FBSkFJQUpCRENBQ0tBSUFLQUt3QVJFREFBMEFJQUpCQVNBQ0tBSUFLQUt3QVJFREFBMEFJQUpCQ0NBQ0tBSUFLQUt3QVJFREFBMEFJQUpCQ1NBQ0tBSUFLQUt3QVJFREFFVU5BUXNnQXlrQ0dFSXlpS2RCL3o5eFFRUVFrd1FOQUNBQUlBRkJoUDBLUWZQdUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDd0pBSUFJUXNBSU5BQ0FDUVFZZ0FpZ0NBQ2dDc0FFUkF3QU5BQ0FDUVFjZ0FpZ0NBQ2dDc0FFUkF3QkZEUUVMSUFNcEFoaENNb2luUWY4L2NVRUNFSk1FRFFBZ0FDQUJRYkw5Q2tIejdncEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQXhDQ0JrVU5BQ0FERUpVQ1JRMEFJQUFvQWlnZ0F5a0NHQ0lJUWlDSXAwRVBjU0FJUWlTSXAwSC8vd0J4RU5zSkRRQWdBQ2dDQUNnQ29BRWhCQ0FGSUFNb0FoeEJEM0UyQWdBZ0FDQUJRWUgrQ2tHVDd3cEJ6T2NKSUFVZ0JCRUNBQXNDUUFKQUlBTVE2UUlFUUFKQUlBSWdBaWdDQUNnQ2xBRVJBQUFOQUNBQ0lBSW9BZ0FvQWh3UkFBQkJFRVlOQUNBQUlBRkJyLzRLUWVyc0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FDSUFJb0FnQW9BaHdSQUFCQkRrY05BQ0FETHdFWUlRUUNRQ0FDSUFJb0FnQW9BbkFSQUFCRkRRQWdBQ2dDSUVFQlRnUkFJQVJCQVdvaEJBd0JDeUFDSUFJb0FnQW9BblFSQUFBRVFDQUNJQUlvQWdBb0FrUVJBQUFnQkdvaEJBd0JDeUFFUVFGcUlRUWdBQ2dDSUEwQUlBQWdBVUhvL2dwQnorQUpRZVBXQ1VFQUlBQW9BZ0FvQXFRQkVRSUFDeUFBS0FJZ0RRQWdCQ0FBS0FMY0JrZ05BQ0FBSUFGQnhmOEtRZXJzQ2tHRGdBdEI0OVlKSUFJZ0FpZ0NBQ2dDY0JFQUFCdEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FoRGFCRVVOQVNBREx3RVlJQUJCMUFocUtBSUFTUTBCSUFBZ0FVR1JnQXRCNnV3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxJQUFvQWlndEFNd0ZEUUFnQWhEYUJBUkFJQUFnQVVIVGdBdEJsN3NLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSVlSUTBBSUFNUXNRSkZEUUFDUUNBQ0lBSW9BZ0FvQWh3UkFBQkJFRWNOQUNBRExRQWxEUUFnQXkwQU1BMEFJQU1ReWdRTkFDQURMUUFtRFFBZ0FDQUJRZkdBQzBIcTdBcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQUNnQ0lFRUJTQTBBSUFJZ0FpZ0NBQ2dDSEJFQUFFRU9SdzBBSUFBZ0FVR2hnUXRCNnV3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUlRakFORkRRQWdBQ2dDSUVFQlNBMEFJQUlnQWlnQ0FDZ0NsQUVSQUFCRkJFQWdBaUFDS0FJQUtBSXNFUUFBRUxFQ1JRMEJJQUlnQWlnQ0FDZ0NIQkVBQUVFUVJ3MEJDeUFBSUFGQjBvRUxRYk9DQzBIajFnbEJBQ0FBS0FJQUtBS2tBUkVDQUFzQ1FDQURFSllDUlEwQUlBSWdBaWdDQUNnQ0hCRUFBRUVRUncwQUlBQWdBVUc0Z2d0QjI0TUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFERUo4SElRWWdBaUFDS0FJQUtBS2NBUkVBQUNFRUFrQWdCZ1JBSUFSRkJFQWdBQ0FCUWVLQ0N5QURMUUFrRU1zRVFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxBa0FnQWlBQ0tBSUFLQUlnRVFBQUxRQUFRUUZIRFFBZ0F5MEFKRUVYU0EwQUlBQWdBVUgzZ2dzZ0F5MEFKQkRMQkVIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQUNJQUlvQWdBb0FpQVJBQUF0QUFCQkNFY05BQ0FETFFBa1FSWk9CRUFnQXkwQUpFRWlTQTBCQ3lBQUlBRkJuNE1MSUFNdEFDUVF5d1JCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FpQUNLQUlBS0FJZ0VRQUFMUUFBUVFsSERRQWdBeTBBSkVFZ1NnMEFJQUFnQVVISGd3c2dBeTBBSkJETEJFSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBQkF6UlEwQklBTXRBQ1JCQTBZTkFTQURMUUFrUVJwR0RRRWdBeTBBSkVFbFJnMEJJQU1RbGdZTkFTQURFSm9FRFFFZ0FDQUJRZkdEQ3lBRExRQWtFTXNFUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBUkZEUUFnQXhDYUJBMEFJQUFnQVVFR1FhaUVDeEJLSUFBZ0FVRUdRUUJCOTRRTFFhaUVDeEFvQ3dKQUlBTXRBQ1ZGRFFBZ0FpQUNLQUlBS0FJY0VRQUFRUkJHRFFBZ0FDQUJRWnFGQzBHYzVRcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQXkwQUprVU5BQ0FDSUFJb0FnQW9BaHdSQUFCQkVFWU5BQ0FBSUFGQm1vVUxRYXJsQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQURMUUF3UlEwQUlBSWdBaWdDQUNnQ0hCRUFBRUVRUmcwQUlBQWdBVUdhaFF0Qjd2Y0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFDSUFJb0FnQW9BcUFCRVFBQUlRWWdBeERLQkNFRUFrQWdCZ1JBSUFRTkFTQUFJQUZCdUlVTFFleUZDMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBRVJRMEFJQUFnQVVIMGhRdEIvKzhLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBREVLa0ZSUTBBSUFJZ0FpZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJQ1VnUkFJQUFnQVVHVWhndEJoKzBLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQ0lBSW9BZ0FvQW1BUkFBQkZCRUFnQUNBQlFjU0dDMEdIN1FwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBSWdBaWdDQUNnQ0hCRUFBRUYvYWtFTVNRMEFJQUFnQVVIa2hndEJoKzBLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRlFVQnJKQUFMSlFFQmZ5TUFRUkJySWdFa0FDQUJRUUEyQWd3Z0FDQUJRUXhxRUswQ0lBRkJFR29rQUF1Y0FRQWdBa0hleEFvUWh3RkZCRUFnQUNBQklBTkI5dUFLUVlyaENoQ3pCUThMSUFKQjVNVUtFSWNCUlFSQUlBQWdBU0FEUWFIaENrRzE0UW9Rc3dVUEN5QUNRZlRGQ2hDSEFVVUVRQ0FBSUFFZ0EwSFE0UXBCNU9FS0VMTUZEd3NnQWtILzRRb1Fod0ZGQkVBZ0FDQUJJQU5Cb2VFS1FaamlDaEN6QlE4TElBSkJ2T0lLRUljQlJRUkFJQUFnQVNBRFFkRGhDa0hWNGdvUXN3VUxDNXdFQWdGL0FYNENRQ0FBTFFDa0FRMEFJQVFFUUNBRUlBUW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSjRFUUFBUlEwQklBQWdBVUhwdmdwQnorQUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQXhDNUJRUkFJQUFnQVVHSnZ3cEJ6K0FKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBSUFNUTRBa0xBa0FnQXhEREQwVU5BQ0FDS0FJRVFUOXhJZ1JCQjAxQkFFRUJJQVIwUVljQmNSc05BQ0FBSUFGQjBMOEtRYy9nQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FCQXpSUTBBQWtBZ0FDZ0NGQ0lFUVg5cUlnWkJBa3NFUUNBRVFRMUhEUUVnQWlrQ0JFSS9nMElFVWcwQklBQVFNd1JBSUFBb0FoQkJ2d0pLRFFNTElBQkJzTUFLSUFBb0FnQW9BaUFSQXdCRkRRRU1BZ3NDUUFKQUFrQWdCa0VCYXc0Q0FnQUJDeUFDS1FJRVFqK0RRZ05TRFFJZ0FCQXpCRUFnQUNnQ0VFRy9Ba29OQkFzZ0FFRUNRYURBQ2lBQUtBSUFLQUlrRVFjQVJRMENEQU1MSUFJb0FnUkJQM0ZCZldvaUJFRUJTdzBCSUFSQkFXdEZCRUFnQWhDMUJRMENDeUFBRURNRVFDQUFLQUlRUWI4Q1NnMERDeUFBUVFKQnFNQUtJQUFvQWdBb0FpUVJCd0JGRFFFTUFnc0NRQ0FDS1FJRVFqK0RJZ2RDQTFFRWZpQUNFTFVGUlEwQklBSXBBZ1JDUDRNRklBY0xRZ1JTRFFFTElBQVFNd1JBSUFBb0FoQkJ2d0pLRFFJTElBQkJBa0dvd0FvZ0FDZ0NBQ2dDSkJFSEFBMEJDeUFDS1FJRVFqK0RRZ1pSUVFBZ0JSc05BQ0FBSUFFZ0F4QzJBd3NMQ0FBZ0FCQ3lCUm9MS2dBZ0F3Ui9RUUFGSUFBZ0FVSEFwQW9nQWhBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQVFRRUxDMllBQWtBQ1FDQUJJQUVvQWdBb0FvQUJFUUFBUVFoSEJFQWdBU0FCS0FJQUtBS0FBUkVBQUVFSlJ3MEJDeUFCSUFFb0FnQW9BcWdCRVFBQURRRUxJQUFnQVNBQktBSUFLQUlBRVFBQVFiNlVDaUFDUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dzbkFDQUFFSmdHQkVBZ0FTQUNRUmgwUVlDQWdEaHhyU0FCS1FJRVF2Ly8vMGVEaERjQ0JBc0xDQUFnQUdsQkFVWUxFUUFnQUNBQVFYOXFjVVVnQUVFQVNuRUxJd0FnQUNnQ0JFRS9jVUZ6YWlJQVFRTk5CRUJCRFNBQVFROXhka0VCY1E4TFFRQUx5UlFCQkg4akFFSHdBV3NpQnlRQUFrQWdBeUFES0FJQUtBSjRFUUFBSWdZZ0JpZ0NBQ2dDYkJFQUFFVU5BQ0FCSUFFb0FnQW9BbUFSQUFCRkJFQWdBU0FCS0FJQUtBSm9FUUFBUlEwQkN5QUJJQUVvQWdBb0Fvd0JFUUFBSUFNZ0F5Z0NBQ2dDZUJFQUFDSUdJQVlvQWdBb0Fvd0JFUUFBYzBFQlJ3MEFJQUFnQjBHWUFXb2dBeUFES0FJQUtBS0FBUkVBQUVFQUlBRWdBU2dDQUNnQ01CRUFBRUVBUVFBZ0F5QURLQUlBS0FLa0FSRUFBQkJGSWdZZ0FDZ0NLQ0FHRUxRSUlBTWdCRUVBRU1RSElRTWdCaEExR2dzQ1FBSkFBa0FDUUNBQ1FiWjhhaUlJUWVvQVN3MEFRZE1ESVFZQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDRUVCYXc1cUFRVUdCd2dKQ2dJUkF4RVJFUkVSRVJFUkVSRVJFUU1EQXdJQ0FnVUZCUVlHQmdjSEJ3Z0lDQkFRRUFBQkFRa0pDUXNMQ3dNREF3TURBd01EQXc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHdRRUJBUUVCQVFFQkFRRUJBUVBEd3dORGhBTElBTWdBeWdDQUNnQ2VCRUFBQ0lHSUFZb0FnQW9BaHdSQUFCQkVrY05BQ0FBSUFSQkFVSFVtd3RCMkpzTElBQW9BZ0FvQWhRUkNBQWdBQ2dDS0NBRElBTW9BZ0FvQWdBUkFBQkJsZ0ZCQVNBRElBRVEvQUVoQmd3UkMwSExBeUVHREE4TFFkSURJUVlNRGd0QjFBTWhCZ3dOQzBHakJDRUdJQUFvQWlnUTNnZ05EQ0FIUVpnQmFrRUJRUUFnQVNBQktBSUFLQUl3RVFBQVFRQkJBRUVBRUVVaUFTQURJQU1vQWdBb0FuZ1JBQUFRd0FFRVFDQUFLQUlvSVFRZ0J5QURJQU1vQWdBb0FnQVJBQUFpQlNrQ0NEY0RNQ0FISUFVcEFnQTNBeWdnQTBIVEF5QUNRYkYvYWlBQ1FhTUVSaHNnQVNBSFFTaHFFS1FDSVFNTElBQW9BaWhCQXlBREVJa0ZJUVlnQVJBMUdnd05DMEhNQXlFR0lBQW9BaWdRL2dZTkN5QUhRWmdCYWtFSVFRQWdBU0FCS0FJQUtBSXdFUUFBUVFCQkFFRUFFRVVpQVNBRElBTW9BZ0FvQW5nUkFBQVF3QUVFUUNBQUtBSW9JUVFnQjBGQWF5QURJQU1vQWdBb0FnQVJBQUFpQlNrQ0NEY0RBQ0FISUFVcEFnQTNBemdnQTBIS0F5QUNRUXhxSUFKQnpBTkdHeUFCSUFkQk9Hb1FwQUloQXdzZ0FDZ0NLRUVFSUFNUWlRVWhCaUFCRURVYURBd0xRYzBESVFZZ0FDZ0NLQkQrQmcwS0lBZEJtQUZxUVFsQkFDQUJJQUVvQWdBb0FqQVJBQUJCQUVFQVFRQVFSU0lCSUFNZ0F5Z0NBQ2dDZUJFQUFCREFBUVJBSUFBb0FpZ2hCQ0FISUFNZ0F5Z0NBQ2dDQUJFQUFDSUZLUUlJTndOUUlBY2dCU2tDQURjRFNDQURRY3NESUFKQkRHb2dBa0hOQTBZYklBRWdCMEhJQUdvUXBBSWhBd3NnQUNnQ0tFRUZJQU1RaVFVaEJpQUJFRFVhREFzTFFjNERJUVlnQUNnQ0tCRDlCZzBKSUFkQm1BRnFRUWhCQUNBQklBRW9BZ0FvQWpBUkFBQkJBRUVBUVFBUVJTSUJJQU1nQXlnQ0FDZ0NlQkVBQUJEQUFRUkFJQUFvQWlnaEJDQUhJQU1nQXlnQ0FDZ0NBQkVBQUNJRktRSUlOd05nSUFjZ0JTa0NBRGNEV0NBRFFjb0RJQUpCQm1vZ0FrSE9BMFliSUFFZ0IwSFlBR29RcEFJaEF3c2dBQ2dDS0VFR0lBTVFpUVVoQmlBQkVEVWFEQW9MUWM4RElRWWdBQ2dDS0JEOUJnMElJQWRCbUFGcVFRbEJBQ0FCSUFFb0FnQW9BakFSQUFCQkFFRUFRUUFRUlNJQklBTWdBeWdDQUNnQ2VCRUFBQkRBQVFSQUlBQW9BaWdoQkNBSElBTWdBeWdDQUNnQ0FCRUFBQ0lGS1FJSU53TndJQWNnQlNrQ0FEY0RhQ0FEUWNzRElBSkJCbW9nQWtIUEEwWWJJQUVnQjBIb0FHb1FwQUloQXdzZ0FDZ0NLRUVISUFNUWlRVWhCaUFCRURVYURBa0xRZEFESVFZTUJ3c2dBU0FCS0FJQUtBSmdFUUFBUlEwQUlBTWdBeWdDQUNnQ2VCRUFBQkQwQVVVTkFDQUFLQUlvSUFNZ0F5Z0NBQ2dDQUJFQUFFR1VBVUVCSUFNZ0FSRDhBU0VHREFjTFFkRURJUVlNQlFzZ0FDZ0NLQ0FESUFNb0FnQW9BZ0FSQUFCQkRrRUJJQU1nQVJEOEFTRUdEQVVMSUFNZ0F5Z0NBQ2dDZUJFQUFCRDBBUVJBSUFBb0FpZ2dBeUFES0FJQUtBSUFFUUFBUWJNRVFRRWdBeUFCRVB3QklRWU1CUXNDUUNBRElBTW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSmdFUUFBUlEwQUlBTWdBeWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaHdSQUFCQkMwY05BQ0FBS0FJb0lBTWdBeWdDQUNnQ0FCRUFBRUdUQVVFQklBTWdBUkQ4QVNFR0RBVUxRUUFoQmlBRElBTW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSm9FUUFBUlEwRUlBTWdBeWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaHdSQUFCQkNVY05CQ0FESUFNb0FnQW9BcEFCRVFBQVFRSkhEUVFnQUNBRVFRRkIxSnNMUWZhYkN5QUFLQUlBS0FJVUVRZ0FJQUFvQWlnZ0F5QURLQUlBS0FJQUVRQUFRWlVCUVFFZ0F5QUJFUHdCSVFZTUJBc2dBeUFES0FJQUtBSjRFUUFBRUlVQklRSWdBU0FCS0FJQUtBSWNFUUFBSVFRZ0FrVUVRQ0FESUFNb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FJY0VRQUFJQVJIQkVBZ0FDZ0NLQ0FCSUFFb0FnQW9BaHdSQUFBZ0F4Q0pCU0VEQ3lBQUtBSW9JUUFnQnlBRElBTW9BZ0FvQWdBUkFBQWlBaWtDQ0RjRGtBRWdCeUFDS1FJQU53T0lBU0FEUWJRRUlBRWdCMEdJQVdvUXBBSWhCZ3dFQzBFQUlRSUNRQ0FFUVg5cUlnUkJDRXNOQUFKQUFrQUNRQUpBQWtBQ1FDQUVRUUZyRGdnR0JRSURCZ1lBQVFRTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwRklBUkJBblJCOE1rTGFpZ0NBQ0VDREFVTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwRUlBUkJBblJCbE1vTGFpZ0NBQ0VDREFRTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwRElBUkJBblJCdU1vTGFpZ0NBQ0VDREFNTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwQ0lBUkJBblJCM01vTGFpZ0NBQ0VDREFJTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmZXb2lCRUVIVHcwQklBUkJBblJCZ01zTGFpZ0NBQ0VDREFFTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwQUlBUkJBblJCbk1zTGFpZ0NBQ0VDQ3lBQUtBSW9JUUFnQnlBRElBTW9BZ0FvQWdBUkFBQWlCQ2tDQ0RjRGdBRWdCeUFFS1FJQU53TjRJQUlnQXlBSFFmZ0FhaUFCRU9JSUlnWWdCaWdDQUNnQ0hCRUFBQ0lBSUFBb0FnQW9BcndCRVFBQUlnQWdBQ2dDQUNnQ0ZCRUFBRVVOQXlBR0lBWW9BZ0FvQWh3UkFBQWlBQ0FBS0FJQUtBSzhBUkVBQUNJQUlBQW9BZ0FvQWhRUkFBQWlBQ0FDSUFZZ0JpZ0NBQ2dDZUJFQUFDQUFLQUlBS0FLOEFSRUhBQ0VHREFNTFFRQWhCaUFBSUFSQmxKd0xRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3Q0MwSEtBeUVHQ3lBQUtBSW9JUWdnQnlBRElBTW9BZ0FvQWdBUkFBQWlDU2tDQ0RjRElDQUhJQWtwQWdBM0F4Z2dDQ0FHSUFNZ0IwRVlhaER4RENJR1JRUkFRUUFoQmlBQUlBUkJyWndMUWVTYUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFGRFFBZ0F5QUdSd1JBSUFZZ0JpZ0NBQ2dDZUJFQUFDQUJFS01DRFFFTElBQW9BaWdoQUNBSElBUXBBZ2czQXhBZ0J5QUVLUUlBTndNSUlBWWdBaUFCSUFkQkNHb1FwQUloQmdzZ0IwSHdBV29rQUNBR0N4TUFJQUFnQUNrQ0JFS0FnSUNBSUlRM0FnUUxWUUVDZnlNQVFSQnJJZ1VrQUNBREVCTWhBeUFFRUJNaEJDQUFLQUlBS0FLZ0FTRUdJQVVnQkRZQ0NDQUZJQU0yQWdRZ0JTQUNOZ0lBSUFBZ0FVSFFqZ29nQWtIbWpnb2dCU0FHRVFJQUlBVkJFR29rQUF1L0FRQUNRQ0FDSUFJb0FnQW9BbkFSQUFCRkRRQWdBaUFDS0FJQUtBSW9FUUFBTFFBSlFRRnhEUUFnQUNnQ1RCQWtEUUFnQWlBQ0tBSUFLQUlvRVFBQUtRSUVRaitEUWdOU0RRQWdBaUFDS0FJQUtBSW9FUUFBTFFBSlFRRnhEUUFnQUNnQ0ZFRi9ha0VCU3cwQUlBSWdBaWdDQUNnQ1BCRUFBQ0FBUWJBSWFpZ0NBRVlOQUNBQ0lBSW9BZ0FvQW5RUkFBQUVRQ0FBSUFGQmdlQUpRYy9nQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpQUFLQUt3Q0JDTkF3c0x2Z0lCQm44akFFRVFheUlGSkFBZ0JVSHA0QWtRSWlFRElBQW9BaWdvQXBBRVFYOUhCRUFnQUNnQ0tDZ0NrQVFoQmdzQ1FBSkFBbjhDUUNBQUtBSVVJZ2RCZjJvaUNFRURTd1JBSUFkQkRVY05CQ0FBS0FJb0tBTFlCRUYvUncwQlFRQU1BZ3NDUUFKQUFrQWdDRUVCYXc0REJnQUNBUXNnQUNnQ0tDZ0NsQVFROHdraEJDQURJQUFvQWlnb0FwUUVFS3NCRU5jRERBVUxJQU5COGVBSkVOY0REQU1MSUFOQjhlQUpFTmNEUVFNaEJBd0RDeUFBS0FJb0tBTFlCQXNoQkNBQktRSUVRc0QvQVlOQ2dEZFJCRUFnQUNnQ0tDZ0NtQVFROHdraEFTQURRZnJnQ1JEWEF5QURJQUFvQWlnb0FwZ0VFS3NCRUpJQklBRWdCR3doQkF3Q0N5QUJFTDBGQkVBZ0EwR0s0UWtRMXdNTUFnc2dBMEdaNFFrUTF3TUxJQVloQkFzZ0FnUkFJQUlnQXhEb0Fnc2dBeEFaR2lBRlFSQnFKQUFnQkF0WUFRSi9Jd0JCRUdzaUFpUUFJQUlnQUJBYklnTVFqaGNnQXlBQ0tBSUFRUWhxSUFFUStRRWdBQ0FDS0FJQUlBSW9BZ0FReVFnZ0FCQWJJZ0FnQUNnQ0FFRUJhallDQUNBQ0VGOGFJQUlRMXdZZ0FrRVFhaVFBQzlZQkFRRitJQUFRbGdZRVFDQUJJQUVwQWdSQy8vLy8vLy8vZllNZ0FDa0NCRUtBZ0lDQWdJQUNnNFEzQWdRTElBQVFtZ1FFUUNBQklBRXBBZ1JDLy8vLy8vLy9lNE1nQUNrQ0JFS0FnSUNBZ0lBRWc0UTNBZ1FMQW44Z0FDa0NCQ0lDUW9DQWdJQ0FnQWlEVUVVRVFDQUJJQUVwQWdSQ2dJQ0FnSUNBQ0lRM0FnUWdBQ2tDQkNFQ0N5QUNRb0NBZ0lDQWdCQ0RVRVVMQkg0Z0FTQUJLUUlFUW9DQWdJQ0FnQkNFTndJRUlBQXBBZ1FGSUFJTFFvQ0FnSUNBZ0FHRFVFVUVRQ0FCSUFFcEFnUkNnSUNBZ0lDQUFZUTNBZ1FMQ3hjQUlBQkJBVG9BaUFRZ0FFR0FCMnBCaDdvTEVKTUNDeElBSUFBZ0FTQUNJQU1nQUNnQ0NCRUpBQXVVQVFFQ2Z3SkFJQUFvQWdBaUF5QURLQUlBS0FLUUFSRUFBRUVCU0EwQVFRQWhBd05BSUFBb0FnUWdBQ2dDQUNJRUlBTWdCQ2dDQUNnQ29BRVJBd0FvQWdRZ0FTQURJQUVvQWdBb0FxQUJFUU1BS0FJRUlBSWdBeUFDS0FJQUtBS2dBUkVEQUNnQ0JCRE1CMFVFUUNBRFFRRnFJZ01nQUNnQ0FDSUVJQVFvQWdBb0FwQUJFUUFBU0EwQkRBSUxDMEVCRHd0QkFBdTdBd0VEZnlNQVFVQnFJZ1FrQUNBRUlBSTJBamdDUUNBREtBSUFJZ1ZCZjB3RVFDQUFLQUlBS0FLZ0FTRUNJQVFnQlRZQ0FDQUFJQUZCdDgwSlFmblBDVUg3endrZ0JDQUNFUUlBSUFOQkFEWUNBQXdCQ3lBQ0lBSW9BZ0FvQW5BUkFBQWhCaUFDS0FJQUlRVWdCZ1JBSUFJZ0JTZ0NkQkVBQUVVTkFTQUVRVGhxRUlNUURRRWdBeWdDQUNBQ0lBSW9BZ0FvQWp3UkFBQklEUUVnQUNnQ0FDZ0NvQUVoQlNBRUlBTW9BZ0EyQWhBZ0FDQUJRYmZOQ1VINXp3bEJrOUFKSUFSQkVHb2dCUkVDQUNBRElBSWdBaWdDQUNnQ1BCRUFBRUYvYWpZQ0FBd0JDeUFDSUFVb0FtZ1JBQUFFUUNBREtBSUFJQUlnQWlnQ0FDZ0NNQkVBQUVnTkFTQUFLQUlBS0FLZ0FTRUZJQVFnQXlnQ0FEWUNJQ0FBSUFGQnQ4MEpRZm5QQ1VHeDBBa2dCRUVnYWlBRkVRSUFJQU1nQWlBQ0tBSUFLQUl3RVFBQVFYOXFOZ0lBREFFTElBSWdBaWdDQUNnQ2JCRUFBRVVOQUNBREtBSUFJQUlnQWlnQ0FDZ0NOQkVBQUVnTkFDQUFLQUlBS0FLZ0FTRUZJQVFnQXlnQ0FEWUNNQ0FBSUFGQnQ4MEpRZm5QQ1VIUTBBa2dCRUV3YWlBRkVRSUFJQU1nQWlBQ0tBSUFLQUkwRVFBQVFYOXFOZ0lBQ3lBRVFVQnJKQUFMRHdBZ0FDQUJJQUlnQXlBRUVJZ0tDem9CQW45QmhTb2hBU0FBTFFBQUlnSUVRQU5BSUFGQklXd2dBa0VZZEVFWWRXb2hBU0FBTFFBQklRSWdBRUVCYWlFQUlBSU5BQXNMSUFFTGRBRUNmeU1BUVNCcklnTWtBQUpBSUFFb0FnQWlCQVJBQWtBZ0FnUkFJQU5CMDh3SklBUVFxQWtnQTBFUWFpQURRZFBNQ1JEWUF5QURFQmthREFFTElBTkJFR29nQkJEL0FSb0xJQUFnQTBFUWFoQVRFR2thSUFOQkVHb1FHUm9NQVFzZ0FDQUJOQUlFRUpnUkN5QURRU0JxSkFBTDVBRUJBWDhDUUNBQUtBSUVLQUpNRUNRTkFDQUFLQUlFRURORkJFQWdBQ2dDQkNJQ0tBSVFRYU1EU2cwQklBSkJyYjhKSUFJb0FnQW9BaUFSQXdBTkFRc0NRQ0FCUlEwQUlBQW9BZ1FRTTBVTkFDQUFLQUlFS0FJUVFiWUNUZzBCQ3lBQUtBSUVFRE1oQWlBQUtBSUVJUUVDUUFKQUlBSUVRQ0FCS0FJUVFhc0NTZzBCQ3lBQkVETWhBaUFBS0FJRUlRRWdBZzBCSUFFb0FoQkJnZ0ZJRFFFTElBQVEyUUVNQVFzZ0FTMEFCQVJBSUFBb0FnUWlBU0FBUVF4cVFmM0pDU0FBS0FJa1FaVytDVUVBSUFFb0FnQW9BcVFCRVFJQUN5QUFFTmdCRHdzZ0FDZ0NLQXNIQUNBQUtBSm9DeElBSUFBUUl5Z0NBQ0FBS0FJQWEwRURkUXRwQVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBQVFReHFJQVJCREdvZ0F4Q0JBaUFCQkVBZ0FDZ0NFQ0FCRUpjS0lRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFRGRHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUVEZEdvMkFnQWdCRUVRYWlRQUlBQUxMQUVCZnlBQklBQW9BZ1FpQWtjRVFBTkFJQUFRT3hvZ0FrRjRhaUlDSUFGSERRQUxDeUFBSUFFMkFnUUxnUUVCQW44Q1FBSkFJQUZCZjJvaUEwRURTd1JBSUFGQkRVY05BU0FBTFFBSVFZQUJjUTBCREFJTEFrQUNRQUpBQWtBZ0EwRUJhdzREQVFNQ0FBc2dBQzBBQ1VFQmNRMERRUUVoQWlBQUVQRUNSUTBFREFNTElBQXRBQWxCQVhGRkRRRU1BZ3NnQUMwQUNFRVFjVVVOQVFzZ0FCRHhBaUVDQ3lBQ0R3c2dBQkR3QWdzS0FDQUJJQUlRNFFNYUN3Y0FJQUFvQWdnTENBQWdBQkRlQkJvTENBQWdBRUh3QUdvTENBQWdBRUhzQUdvTExRRUJmeU1BUVJCcklnRWtBQ0FCSUFBb0FnUTJBZ2dnQVVFSWFoQytDaWdDQUNFQUlBRkJFR29rQUNBQUN3OEFJQUFvQWdBZ0FVRUVkQkNVQWdzSkFDQUFJQUUyQWlRTFV3RUNmeUFBS0FJRUlRSkJBU0VESUFBb0FnQVFSQkRoQkVFQlRnUi9JQUlnQUNnQ0NDZ0NBQ0lBSUFBb0FnQW9BZ0FSQUFCQnc0d0pJQUZCMG9zSlFRQWdBaWdDQUNnQ3BBRVJBZ0JCQUFVZ0F3c0xDUUFnQUJEekVDQUFDeVVBSUFBUVhTQUFFQjhnQVdwQkFtcEpCRUFnQUNBQUVGMGdBQkJkUVFGMmFoQ2hFUXNMSEFBZ0FCRC9FQ0lBUlFSQVFRQVBDeUFCSUFBb0FnQTJBZ0JCQVFzUEFDQUFLQUlBSUFGQkFuUVFsQUlMVUFFQmZ5QUFFTVVFSUFBUU95QUFLQUlBSUFBb0FnUWdBVUVFYWlJQ0VNOEtJQUFnQWhBdUlBQkJCR29nQVVFSWFoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVCWVFyUVVMU3dFQ2Z5QUFLQUlFSWdaQkNIVWhCeUFBS0FJQUlnQWdBU0FDSUFaQkFYRUVmeUFES0FJQUlBZHFLQUlBQlNBSEN5QURhaUFFUVFJZ0JrRUNjUnNnQlNBQUtBSUFLQUlVRVFJQUN5QUFBa0FnQUNnQ0JDQUJSdzBBSUFBb0FoeEJBVVlOQUNBQUlBSTJBaHdMQzZJQkFDQUFRUUU2QURVQ1FDQUFLQUlFSUFKSERRQWdBRUVCT2dBMElBQW9BaEFpQWtVRVFDQUFRUUUyQWlRZ0FDQUROZ0lZSUFBZ0FUWUNFQ0FEUVFGSERRRWdBQ2dDTUVFQlJ3MEJJQUJCQVRvQU5nOExJQUVnQWtZRVFDQUFLQUlZSWdKQkFrWUVRQ0FBSUFNMkFoZ2dBeUVDQ3lBQUtBSXdRUUZISUFKQkFVZHlEUUVnQUVFQk9nQTJEd3NnQUVFQk9nQTJJQUFnQUNnQ0pFRUJhallDSkFzTFhRRUJmeUFBS0FJUUlnTkZCRUFnQUVFQk5nSWtJQUFnQWpZQ0dDQUFJQUUyQWhBUEN3SkFJQUVnQTBZRVFDQUFLQUlZUVFKSERRRWdBQ0FDTmdJWUR3c2dBRUVCT2dBMklBQkJBallDR0NBQUlBQW9BaVJCQVdvMkFpUUxDdzRBSUFBUVRpSUFJQUFRWFJCTkN5Y0JBWDhqQUVFUWF5SUNKQUFnQWhEcUJ5QUFJQUlnQVJDYUVTQUNFQ0FhSUFKQkVHb2tBQXV2QVFFRGZ5TUFRUkJySWdVa0FFRnZJQUZySUFKUEJFQWdBQkFUSVFZZ0FBSi9RZWYvLy84SElBRkxCRUFnQlNBQlFRRjBOZ0lJSUFVZ0FTQUNhallDRENBRlFReHFJQVZCQ0dvUVVpZ0NBQkRrQWd3QkMwRnVDMEVCYWlJSEVJRUVJUUlnQkFSQUlBSWdCaUFFRU9nQkN5QURJQVJySWdNRVFDQUNJQVJxSUFRZ0Jtb2dBeERvQVFzZ0FVRUtSd1JBSUFZUUtnc2dBQ0FDRU9FQklBQWdCeERwQVNBRlFSQnFKQUFQQ3hCdUFBdG5BUUovSXdCQkVHc2lCQ1FBQWtBZ0FCQmRJZ01nQWs4RVFDQUFFQk1pQXlBQklBSVFnUVlnQkVFQU9nQVBJQUlnQTJvZ0JFRVBhaENVQVNBQUlBSVFod01NQVFzZ0FDQURJQUlnQTJzZ0FCQWZJZ0JCQUNBQUlBSWdBUkRiQ2dzZ0JFRVFhaVFBQ3hjQUlBQW9BZ2dRZjBjRVFDQUFLQUlJRUxZTEN5QUFDem9CQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lNSUFOQkNHb2dBMEVNYWhEMUFpRUNJQUFnQVJDb0JDRUFJQUlROUFJZ0EwRVFhaVFBSUFBTEN3QWdCQ0FDTmdJQVFRTUxFQUFnQUJDWUFTQUFRY0RERWpZQ0FBc2lBQ01BUVJCcklnTWtBQ0FBRURzZ0FTQUNJQUJCQkdvUWx3c2dBMEVRYWlRQUN6SUFJQUlvQWdBaEFnTkFBa0FnQUNBQlJ3Ui9JQUFvQWdBZ0FrY05BU0FBQlNBQkN3OExJQUJCQkdvaEFBd0FBQXNBQzRFRUFRRi9Jd0JCRUdzaURDUUFJQXdnQURZQ0RBSkFBa0FnQUNBRlJnUkFJQUV0QUFCRkRRRkJBQ0VBSUFGQkFEb0FBQ0FFSUFRb0FnQWlBVUVCYWpZQ0FDQUJRUzQ2QUFBZ0J4QWZSUTBDSUFrb0FnQWlBU0FJYTBHZkFVb05BaUFLS0FJQUlRSWdDU0FCUVFScU5nSUFJQUVnQWpZQ0FBd0NDd0pBSUFBZ0JrY05BQ0FIRUI5RkRRQWdBUzBBQUVVTkFVRUFJUUFnQ1NnQ0FDSUJJQWhyUVo4QlNnMENJQW9vQWdBaEFDQUpJQUZCQkdvMkFnQWdBU0FBTmdJQVFRQWhBQ0FLUVFBMkFnQU1BZ3RCZnlFQUlBc2dDMEdBQVdvZ0RFRU1haER6QnlBTGF5SUZRZndBU2cwQklBVkJBblZCd0xrU2FpMEFBQ0VHQWtBZ0JVR29mMnBCSG5jaUFFRURUUVJBQWtBQ1FDQUFRUUpyRGdJQUFBRUxJQU1nQkNnQ0FDSUJSd1JBUVg4aEFDQUJRWDlxTFFBQVFkOEFjU0FDTFFBQVFmOEFjVWNOQlFzZ0JDQUJRUUZxTmdJQUlBRWdCam9BQUVFQUlRQU1CQXNnQWtIUUFEb0FBQXdCQ3lBQ0xBQUFJZ0FnQmtIZkFIRkhEUUFnQWlBQVFZQUJjam9BQUNBQkxRQUFSUTBBSUFGQkFEb0FBQ0FIRUI5RkRRQWdDU2dDQUNJQUlBaHJRWjhCU2cwQUlBb29BZ0FoQVNBSklBQkJCR28yQWdBZ0FDQUJOZ0lBQ3lBRUlBUW9BZ0FpQUVFQmFqWUNBQ0FBSUFZNkFBQkJBQ0VBSUFWQjFBQktEUUVnQ2lBS0tBSUFRUUZxTmdJQURBRUxRWDhoQUFzZ0RFRVFhaVFBSUFBTFhBRUJmeU1BUVJCcklnVWtBQ0FGUVFocUlBRVFYQ0FGUVFocUVJa0NRY0M1RWtIZ3VSSWdBaEMvQXlBRElBVkJDR29RNkFRaUFSRFNBallDQUNBRUlBRVFpQUkyQWdBZ0FDQUJFSWNDSUFWQkNHb1FXU0FGUVJCcUpBQUxNZ0FnQWkwQUFDRUNBMEFDUUNBQUlBRkhCSDhnQUMwQUFDQUNSdzBCSUFBRklBRUxEd3NnQUVFQmFpRUFEQUFBQ3dBTGtRUUJBWDhqQUVFUWF5SU1KQUFnRENBQU9nQVBBa0FDUUNBQUlBVkdCRUFnQVMwQUFFVU5BVUVBSVFBZ0FVRUFPZ0FBSUFRZ0JDZ0NBQ0lCUVFGcU5nSUFJQUZCTGpvQUFDQUhFQjlGRFFJZ0NTZ0NBQ0lCSUFoclFaOEJTZzBDSUFvb0FnQWhBaUFKSUFGQkJHbzJBZ0FnQVNBQ05nSUFEQUlMQWtBZ0FDQUdSdzBBSUFjUUgwVU5BQ0FCTFFBQVJRMEJRUUFoQUNBSktBSUFJZ0VnQ0d0Qm53RktEUUlnQ2lnQ0FDRUFJQWtnQVVFRWFqWUNBQ0FCSUFBMkFnQkJBQ0VBSUFwQkFEWUNBQXdDQzBGL0lRQWdDeUFMUVNCcUlBeEJEMm9ROWdjZ0Myc2lCa0VmU2cwQklBWkJ3TGtTYWkwQUFDRUZJQVpCYW1vaUFFRURUUVJBQWtBQ1FDQUFRUUpyRGdJQUFBRUxJQU1nQkNnQ0FDSUJSd1JBUVg4aEFDQUJRWDlxTFFBQVFkOEFjU0FDTFFBQVFmOEFjVWNOQkFzZ0JDQUJRUUZxTmdJQUlBRWdCVG9BQUVFQUlRQU1Bd3NnQWtIUUFEb0FBQ0FFSUFRb0FnQWlBRUVCYWpZQ0FDQUFJQVU2QUFCQkFDRUFEQUlMQWtBZ0Fpd0FBQ0lBSUFWQjN3QnhSdzBBSUFJZ0FFR0FBWEk2QUFBZ0FTMEFBRVVOQUNBQlFRQTZBQUFnQnhBZlJRMEFJQWtvQWdBaUFDQUlhMEdmQVVvTkFDQUtLQUlBSVFFZ0NTQUFRUVJxTmdJQUlBQWdBVFlDQUFzZ0JDQUVLQUlBSWdCQkFXbzJBZ0FnQUNBRk9nQUFRUUFoQUNBR1FSVktEUUVnQ2lBS0tBSUFRUUZxTmdJQURBRUxRWDhoQUFzZ0RFRVFhaVFBSUFBTFhBRUJmeU1BUVJCcklnVWtBQ0FGUVFocUlBRVFYQ0FGUVFocUVQb0JRY0M1RWtIZ3VSSWdBaER1QXlBRElBVkJDR29RNmdRaUFSRFNBam9BQUNBRUlBRVFpQUk2QUFBZ0FDQUJFSWNDSUFWQkNHb1FXU0FGUVJCcUpBQUxud0VDQVg4RGZpTUFRYUFCYXlJRUpBQWdCRUVRYWtFQVFaQUJFTjBCR2lBRVFYODJBbHdnQkNBQk5nSThJQVJCZnpZQ0dDQUVJQUUyQWhRZ0JFRVFha0lBRU5zQ0lBUWdCRUVRYWlBRFFRRVF3QXNnQkNrRENDRUZJQVFwQXdBaEJpQUNCRUFnQWlBQklBRWdCQ2tEaUFFZ0JDZ0NGQ0FFS0FJWWE2eDhJZ2VuYWlBSFVCczJBZ0FMSUFBZ0JqY0RBQ0FBSUFVM0F3Z2dCRUdnQVdva0FBc05BQ0FBSUFFZ0FrSi9FSVVJQzA0QkFYOENRQ0FBUWN3QWFpQUJRY3dBYWhDd0MwVU5BQ0FCS0FJRUlBQW9BZ1J6UVlEKy93QnhEUUFnQUJDRkFTQUJFSVVCUncwQUlBQWdBUkNZRTBVTkFDQUFJQUVRbFJNaEFnc2dBZ3RGQVFGL0l3QkJFR3NpQlNRQUlBVWdBU0FDSUFNZ0JFS0FnSUNBZ0lDQWdJQi9oUkNjQWlBRktRTUFJUUVnQUNBRktRTUlOd01JSUFBZ0FUY0RBQ0FGUVJCcUpBQUxPUUVCZnlNQVFSQnJJZ0VrQUNBQVFnQTNBZ0FnQVVFQU5nSU1JQUJCQ0dvaUFDQUJRUXhxRUpVRElBQkJCR29ReHdZZ0FVRVFhaVFBQ3cwQUlBQkJCR29RN0FRYUlBQUxEUUFnQUVFSWFoRHNCQm9nQUFzVUFDQUFRYmlURWpZQ0FDQUFRUVJxRUZrZ0FBczNBQ0FBUWRpVUVqWUNBQ0FBUVFBUTF3c2dBRUVjYWhCWklBQW9BaUFRS2lBQUtBSWtFQ29nQUNnQ01CQXFJQUFvQWp3UUtpQUFDNFFFQXdGL0FYNERmQUpBSUFDOUlnSkNJSWluUWYvLy8vOEhjU0lCUVlDQXdLQUVUd1JBSUFKQy8vLy8vLy8vLy8vL0FJTkNnSUNBZ0lDQWdQai9BRllOQVVRWUxVUlUreUg1djBRWUxVUlUreUg1UHlBQ1FnQlRHdzhMQW44Z0FVSC8vKy8rQTAwRVFFRi9JQUZCZ0lDQThnTlBEUUVhREFJTElBQ1pJUUFnQVVILy84di9BMDBFUUNBQlFmLy9sLzhEVFFSQUlBQWdBS0JFQUFBQUFBQUE4TCtnSUFCRUFBQUFBQUFBQUVDZ295RUFRUUFNQWdzZ0FFUUFBQUFBQUFEd3Y2QWdBRVFBQUFBQUFBRHdQNkNqSVFCQkFRd0JDeUFCUWYvL2pZQUVUUVJBSUFCRUFBQUFBQUFBK0wrZ0lBQkVBQUFBQUFBQStEK2lSQUFBQUFBQUFQQS9vS01oQUVFQ0RBRUxSQUFBQUFBQUFQQy9JQUNqSVFCQkF3c2hBU0FBSUFDaUlnUWdCS0lpQXlBRElBTWdBeUFEUkM5c2FpeEV0S0svb2tTYS9kNVNMZDZ0djZDaVJHMmFkSy95c0xPL29LSkVjUllqL3NaeHZMK2dva1RFNjVpWm1abkp2NkNpSVFVZ0JDQURJQU1nQXlBRElBTkVFZG9pNHpxdGtEK2lST3NOZGlSTGU2ay9vS0pFVVQzUW9HWU5zVCtnb2tSdUlFekZ6VVczUDZDaVJQK0RBSklrU2NJL29LSkVEVlZWVlZWVjFUK2dvaUVESUFGQmYwd0VRQ0FBSUFBZ0JTQURvS0toRHdzZ0FVRURkQ0lCUWZDT0Vtb3JBd0FnQUNBRklBT2dvaUFCUVpDUEVtb3JBd0NoSUFDaG9TSUFtaUFBSUFKQ0FGTWJJUUFMSUFBTHdBa0RCSDhCZmdSOEl3QkJNR3NpQkNRQUFrQUNRQUpBSUFDOUlnWkNJSWluSWdKQi8vLy8vd2R4SWdOQit0UzlnQVJOQkVBZ0FrSC8vejl4UWZ2REpFWU5BU0FEUWZ5eWk0QUVUUVJBSUFaQ0FGa0VRQ0FCSUFCRUFBQkFWUHNoK2IrZ0lnQkVNV05pR21HMDBMMmdJZ2M1QXdBZ0FTQUFJQWVoUkRGallocGh0TkM5b0RrRENFRUJJUUlNQlFzZ0FTQUFSQUFBUUZUN0lmay9vQ0lBUkRGallocGh0TkE5b0NJSE9RTUFJQUVnQUNBSG9VUXhZMklhWWJUUVBhQTVBd2hCZnlFQ0RBUUxJQVpDQUZrRVFDQUJJQUJFQUFCQVZQc2hDY0NnSWdCRU1XTmlHbUcwNEwyZ0lnYzVBd0FnQVNBQUlBZWhSREZqWWhwaHRPQzlvRGtEQ0VFQ0lRSU1CQXNnQVNBQVJBQUFRRlQ3SVFsQW9DSUFSREZqWWhwaHRPQTlvQ0lIT1FNQUlBRWdBQ0FIb1VReFkySWFZYlRnUGFBNUF3aEJmaUVDREFNTElBTkJ1NHp4Z0FSTkJFQWdBMEc4KzllQUJFMEVRQ0FEUWZ5eXk0QUVSZzBDSUFaQ0FGa0VRQ0FCSUFCRUFBQXdmM3paRXNDZ0lnQkV5cFNUcDVFTzZiMmdJZ2M1QXdBZ0FTQUFJQWVoUk1xVWs2ZVJEdW05b0RrRENFRURJUUlNQlFzZ0FTQUFSQUFBTUg5ODJSSkFvQ0lBUk1xVWs2ZVJEdWs5b0NJSE9RTUFJQUVnQUNBSG9VVEtsSk9ua1E3cFBhQTVBd2hCZlNFQ0RBUUxJQU5CKzhQa2dBUkdEUUVnQmtJQVdRUkFJQUVnQUVRQUFFQlUreUVad0tBaUFFUXhZMklhWWJUd3ZhQWlCemtEQUNBQklBQWdCNkZFTVdOaUdtRzA4TDJnT1FNSVFRUWhBZ3dFQ3lBQklBQkVBQUJBVlBzaEdVQ2dJZ0JFTVdOaUdtRzA4RDJnSWdjNUF3QWdBU0FBSUFlaFJERmpZaHBodFBBOW9Ea0RDRUY4SVFJTUF3c2dBMEg2dytTSkJFc05BUXNnQVNBQUlBQkVnOGpKYlRCZjVEK2lSQUFBQUFBQUFEaERvRVFBQUFBQUFBQTR3NkFpQ0VRQUFFQlUreUg1djZLZ0lnY2dDRVF4WTJJYVliVFFQYUlpQ3FFaUFEa0RBQ0FEUVJSMklnVWdBTDFDTklpblFmOFBjV3RCRVVnaEF3Si9JQWlaUkFBQUFBQUFBT0JCWXdSQUlBaXFEQUVMUVlDQWdJQjRDeUVDQWtBZ0F3MEFJQUVnQnlBSVJBQUFZQnBodE5BOW9pSUFvU0lKSUFoRWMzQURMb29ab3p1aUlBY2dDYUVnQUtHaElncWhJZ0E1QXdBZ0JTQUF2VUkwaUtkQi93OXhhMEV5U0FSQUlBa2hCd3dCQ3lBQklBa2dDRVFBQUFBdWlobWpPNklpQUtFaUJ5QUlSTUZKSUNXYWczczVvaUFKSUFlaElBQ2hvU0lLb1NJQU9RTUFDeUFCSUFjZ0FLRWdDcUU1QXdnTUFRc2dBMEdBZ01EL0IwOEVRQ0FCSUFBZ0FLRWlBRGtEQUNBQklBQTVBd2hCQUNFQ0RBRUxJQVpDLy8vLy8vLy8vd2VEUW9DQWdJQ0FnSUN3d1FDRXZ5RUFRUUFoQWdOQUlBUkJFR29nQWlJRlFRTjBhZ0ovSUFDWlJBQUFBQUFBQU9CQll3UkFJQUNxREFFTFFZQ0FnSUI0QzdjaUJ6a0RBQ0FBSUFlaFJBQUFBQUFBQUhCQm9pRUFRUUVoQWlBRlJRMEFDeUFFSUFBNUF5QUNRQ0FBUkFBQUFBQUFBQUFBWWdSQVFRSWhBZ3dCQzBFQklRVURRQ0FGSWdKQmYyb2hCU0FFUVJCcUlBSkJBM1JxS3dNQVJBQUFBQUFBQUFBQVlRMEFDd3NnQkVFUWFpQUVJQU5CRkhaQjZuZHFJQUpCQVdvUTB4TWhBaUFFS3dNQUlRQWdCa0ovVndSQUlBRWdBSm81QXdBZ0FTQUVLd01JbWprRENFRUFJQUpySVFJTUFRc2dBU0FBT1FNQUlBRWdCQ2tEQ0RjRENBc2dCRUV3YWlRQUlBSUxRd0VEZndKQUlBSkZEUUFEUUNBQUxRQUFJZ1FnQVMwQUFDSUZSZ1JBSUFGQkFXb2hBU0FBUVFGcUlRQWdBa0YvYWlJQ0RRRU1BZ3NMSUFRZ0JXc2hBd3NnQXd0OEFRRi9Jd0JCa0FGcklnUWtBQ0FFSUFBMkFpd2dCQ0FBTmdJRUlBUkJBRFlDQUNBRVFYODJBa3dnQkVGL0lBQkIvLy8vL3dkcUlBQkJBRWdiTmdJSUlBUkNBQkRiQWlBRUlBSkJBU0FERU9JTElRTWdBUVJBSUFFZ0FDQUVLQUlFSUFRb0FuaHFJQVFvQWdocmFqWUNBQXNnQkVHUUFXb2tBQ0FEQzdjQkFRUi9Ba0FnQWlnQ0VDSURCSDhnQXdVZ0FoRGpDdzBCSUFJb0FoQUxJQUlvQWhRaUJXc2dBVWtFUUNBQ0lBQWdBU0FDS0FJa0VRY0FEd3NDUUNBQ0xBQkxRUUJJRFFBZ0FTRUVBMEFnQkNJRFJRMEJJQUFnQTBGL2FpSUVhaTBBQUVFS1J3MEFDeUFDSUFBZ0F5QUNLQUlrRVFjQUlnUWdBMGtOQVNBQklBTnJJUUVnQUNBRGFpRUFJQUlvQWhRaEJTQURJUVlMSUFVZ0FDQUJFRDBhSUFJZ0FpZ0NGQ0FCYWpZQ0ZDQUJJQVpxSVFRTElBUUxnd0VCQTM4akFFRVFheUlDSkFBZ0FpQUJPZ0FQQWtBZ0FDZ0NFQ0lEUlFSQUlBQVE0d3NOQVNBQUtBSVFJUU1MQWtBZ0FDZ0NGQ0lFSUFOUERRQWdBQ3dBU3lBQlFmOEJjVVlOQUNBQUlBUkJBV28yQWhRZ0JDQUJPZ0FBREFFTElBQWdBa0VQYWtFQklBQW9BaVFSQndCQkFVY05BQ0FDTFFBUEdnc2dBa0VRYWlRQUM4d1JBZzkvQVg0akFFSFFBR3NpQnlRQUlBY2dBVFlDVENBSFFUZHFJUlVnQjBFNGFpRVNRUUFoQVFKQUEwQUNRQ0FQUVFCSURRQWdBVUgvLy8vL0J5QVBhMG9FUUVIWXdCUkJQVFlDQUVGL0lROE1BUXNnQVNBUGFpRVBDeUFIS0FKTUlnc2hBUUpBQWtBQ1FBSi9Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ3kwQUFDSUpCRUFEUUFKQUFrQUNRQ0FKUWY4QmNTSUlSUVJBSUFFaENRd0JDeUFJUVNWSERRRWdBU0VKQTBBZ0FTMEFBVUVsUncwQklBY2dBVUVDYWlJSU5nSk1JQWxCQVdvaENTQUJMUUFDSVF3Z0NDRUJJQXhCSlVZTkFBc0xJQWtnQzJzaEFTQUFCRUFnQUNBTElBRVE0Z0VMSUFFTkVpQUhLQUpNTEFBQkVNMENJUWhCZnlFUlFRRWhDU0FIS0FKTUlRRUNRQ0FJUlEwQUlBRXRBQUpCSkVjTkFDQUJMQUFCUVZCcUlSRkJBU0VUUVFNaENRc2dCeUFCSUFscUlnRTJBa3hCQUNFSkFrQWdBU3dBQUNJUVFXQnFJZ3hCSDBzRVFDQUJJUWdNQVFzZ0FTRUlRUUVnREhRaURFR0owUVJ4UlEwQUEwQWdCeUFCUVFGcUlnZzJBa3dnQ1NBTWNpRUpJQUVzQUFFaUVFRmdhaUlNUVI5TERRRWdDQ0VCUVFFZ0RIUWlERUdKMFFSeERRQUxDd0pBSUJCQktrWUVRQ0FIQW44Q1FDQUlMQUFCRU0wQ1JRMEFJQWNvQWt3aUFTMEFBa0VrUncwQUlBRXNBQUZCQW5RZ0JHcEJ3SDVxUVFvMkFnQWdBU3dBQVVFRGRDQURha0dBZldvb0FnQWhEVUVCSVJNZ0FVRURhZ3dCQ3lBVERRZEJBQ0VUUVFBaERTQUFCRUFnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBU2dDQUNFTkN5QUhLQUpNUVFGcUN5SUJOZ0pNSUExQmYwb05BVUVBSUExcklRMGdDVUdBd0FCeUlRa01BUXNnQjBITUFHb1E1d3NpRFVFQVNBMEZJQWNvQWt3aEFRdEJmeUVLQWtBZ0FTMEFBRUV1UncwQUlBRXRBQUZCS2tZRVFBSkFJQUVzQUFJUXpRSkZEUUFnQnlnQ1RDSUJMUUFEUVNSSERRQWdBU3dBQWtFQ2RDQUVha0hBZm1wQkNqWUNBQ0FCTEFBQ1FRTjBJQU5xUVlCOWFpZ0NBQ0VLSUFjZ0FVRUVhaUlCTmdKTURBSUxJQk1OQmlBQUJIOGdBaUFDS0FJQUlnRkJCR28yQWdBZ0FTZ0NBQVZCQUFzaENpQUhJQWNvQWt4QkFtb2lBVFlDVEF3QkN5QUhJQUZCQVdvMkFrd2dCMEhNQUdvUTV3c2hDaUFIS0FKTUlRRUxRUUFoQ0FOQUlBZ2hGRUYvSVE0Z0FTd0FBRUcvZjJwQk9Vc05GQ0FISUFGQkFXb2lFRFlDVENBQkxBQUFJUWdnRUNFQklBZ2dGRUU2YkdwQjMvQVJhaTBBQUNJSVFYOXFRUWhKRFFBTElBaEZEUk1DUUFKQUFrQWdDRUVUUmdSQUlCRkJmMHdOQVF3WEN5QVJRUUJJRFFFZ0JDQVJRUUowYWlBSU5nSUFJQWNnQXlBUlFRTjBhaWtEQURjRFFBdEJBQ0VCSUFCRkRSUU1BUXNnQUVVTkVpQUhRVUJySUFnZ0FpQUdFT1lMSUFjb0Frd2hFQXNnQ1VILy8zdHhJZ3dnQ1NBSlFZREFBSEViSVFsQkFDRU9RWXp4RVNFUklCSWhDQ0FRUVg5cUxBQUFJZ0ZCWDNFZ0FTQUJRUTl4UVFOR0d5QUJJQlFiSWdGQnFIOXFJaEJCSUUwTkFRSkFBbjhDUUFKQUlBRkJ2MzlxSWd4QkJrc0VRQ0FCUWRNQVJ3MFZJQXBGRFFFZ0J5Z0NRQXdEQ3lBTVFRRnJEZ01VQVJRSkMwRUFJUUVnQUVFZ0lBMUJBQ0FKRUlzQ0RBSUxJQWRCQURZQ0RDQUhJQWNwQTBBK0FnZ2dCeUFIUVFocU5nSkFRWDhoQ2lBSFFRaHFDeUVJUVFBaEFRSkFBMEFnQ0NnQ0FDSUxSUTBCSUFkQkJHb2dDeERmQ3lJTFFRQklJZ3dnQ3lBS0lBRnJTM0pGQkVBZ0NFRUVhaUVJSUFvZ0FTQUxhaUlCU3cwQkRBSUxDMEYvSVE0Z0RBMFZDeUFBUVNBZ0RTQUJJQWtRaXdJZ0FVVUVRRUVBSVFFTUFRdEJBQ0VNSUFjb0FrQWhDQU5BSUFnb0FnQWlDMFVOQVNBSFFRUnFJQXNRM3dzaUN5QU1haUlNSUFGS0RRRWdBQ0FIUVFScUlBc1E0Z0VnQ0VFRWFpRUlJQXdnQVVrTkFBc0xJQUJCSUNBTklBRWdDVUdBd0FCekVJc0NJQTBnQVNBTklBRktHeUVCREJJTElBY2dBVUVCYWlJSU5nSk1JQUV0QUFFaENTQUlJUUVNQVFzTElCQkJBV3NPSHcwTkRRME5EUTBOQWcwRUJRSUNBZzBGRFEwTkRRa0dCdzBOQXcwS0RRMElDeUFQSVE0Z0FBMFBJQk5GRFExQkFTRUJBMEFnQkNBQlFRSjBhaWdDQUNJQUJFQWdBeUFCUVFOMGFpQUFJQUlnQmhEbUMwRUJJUTRnQVVFQmFpSUJRUXBIRFFFTUVRc0xRUUVoRGlBQlFRcFBEUThEUUNBRUlBRkJBblJxS0FJQURRRWdBVUVJU3lFQUlBRkJBV29oQVNBQVJRMEFDd3dQQzBGL0lRNE1EZ3NnQUNBSEt3TkFJQTBnQ2lBSklBRWdCUkVuQUNFQkRBd0xJQWNvQWtBaUFVR1c4UkVnQVJzaUMwRUFJQW9RelFZaUFTQUtJQXRxSUFFYklRZ2dEQ0VKSUFFZ0Myc2dDaUFCR3lFS0RBa0xJQWNnQnlrRFFEd0FOMEVCSVFvZ0ZTRUxJQXdoQ1F3SUN5QUhLUU5BSWhaQ2YxY0VRQ0FIUWdBZ0ZuMGlGamNEUUVFQklRNUJqUEVSREFZTElBbEJnQkJ4QkVCQkFTRU9RWTN4RVF3R0MwR084UkZCalBFUklBbEJBWEVpRGhzTUJRc2dCeWtEUUNBU0VPUVRJUXNnQ1VFSWNVVU5CU0FLSUJJZ0Myc2lBVUVCYWlBS0lBRktHeUVLREFVTElBcEJDQ0FLUVFoTEd5RUtJQWxCQ0hJaENVSDRBQ0VCQ3lBSEtRTkFJQklnQVVFZ2NSRGpFeUVMSUFsQkNIRkZEUU1nQnlrRFFGQU5BeUFCUVFSMlFZenhFV29oRVVFQ0lRNE1Bd3RCQUNFQklCUkIvd0Z4SWdoQkIwc05CUUpBQWtBQ1FBSkFBa0FDUUFKQUlBaEJBV3NPQndFQ0F3UU1CUVlBQ3lBSEtBSkFJQTgyQWdBTUN3c2dCeWdDUUNBUE5nSUFEQW9MSUFjb0FrQWdENnczQXdBTUNRc2dCeWdDUUNBUE93RUFEQWdMSUFjb0FrQWdEem9BQUF3SEN5QUhLQUpBSUE4MkFnQU1CZ3NnQnlnQ1FDQVByRGNEQUF3RkN5QUhLUU5BSVJaQmpQRVJDeUVSSUJZZ0VoRHVCQ0VMQ3lBSlFmLy9lM0VnQ1NBS1FYOUtHeUVKQW44Z0NpQUhLUU5BSWhaUVJYSkZCRUFnRWlFTFFRQU1BUXNnQ2lBV1VDQVNJQXRyYWlJQklBb2dBVW9iQ3lFS0N5QUFRU0FnRGlBSUlBdHJJZ3dnQ2lBS0lBeElHeUlRYWlJSUlBMGdEU0FJU0JzaUFTQUlJQWtRaXdJZ0FDQVJJQTRRNGdFZ0FFRXdJQUVnQ0NBSlFZQ0FCSE1RaXdJZ0FFRXdJQkFnREVFQUVJc0NJQUFnQ3lBTUVPSUJJQUJCSUNBQklBZ2dDVUdBd0FCekVJc0NEQUVMQzBFQUlRNExJQWRCMEFCcUpBQWdEZ3NrQUNBQkJFQWdBQ0FCS0FJQUVJa0lJQUFnQVNnQ0JCQ0pDQ0FBRUNVYUlBRVFLZ3NMSkFBZ0FRUkFJQUFnQVNnQ0FCQ0tDQ0FBSUFFb0FnUVFpZ2dnQUJBbEdpQUJFQ29MQzJ3QkEzOGdBRUVCRU5FR0lBQVEwQVloQlNBQUlBQkJxQUZxSWdZUUZnUi9JQUFnQUNBQUlBVkJBRUgvLy8vL0IwRUFFUElFSWdjUVlpQUhJQUVnQmhDeUZBVWdBUXNnQlNBQUlBVVF0Z1JCNVNsR0JIOGdBa0VDRUVnRklBSUxJQU5CQUNBRWF5QUVjUkRQQWdzMkFRRi9JQUFRWGlFQklBQW9BZ1FnQUNnQ0VDQUJLQUlBYWtGL2FpSUFRUVoyUWZ6Ly94OXhhaWdDQUNBQVFmOEJjVUVFZEdvTEdBQWdBQ0FBUWZBQ2FoQ1ZCU2dDQUJEY0FpQUFFTmtGQzRjQkFRUi9JQUFvQWdBZ0FDZ0NIQkRjQWlBQUtBSUFJQUFvQWhBUTVRRWdBQ2dDQUNBQUtBSWNJQUFvQWdnUWlBd2dBQ2dDRkNFQklBQW9BZ1FoQWlBQUtBSUFJUU1DUUNBQUtBSVlJZ1FFUUNBRElBSWdBU0FFRU5JR0RBRUxJQU1nQWlBQklBQW9BaHdRMGdZTElBQW9BZ3dnQUNnQ0hCRHpBeUFBS0FJQUlBQW9BaHdRNVFFTGtBRUFJQUJCQURZQ0dDQUFJQUkyQWdnZ0FDQUJOZ0lFSUFBZ0F6WUNBQ0FBSUFNb0FvUUJLQUkwTmdJTVFUd1FKaUlCSUFBb0FnQVFWU0FBS0FJTUVQUURHaUFBSUFFMkFoUkJQQkFtSWdFZ0FDZ0NBQkJWSUFBb0Fnd1E5QU1hSUFBZ0FUWUNIQ0FBSUFBb0FnQW9Bb1FCTmdJUUlBQW9BZ3dnQUNnQ0ZCRHpBeUFBS0FJQUlBQW9BaFFRNVFFZ0FBdFdBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQUpBSUFBb0FnQW9BZ0JCQWs4RVFDQUFLQUlFSUFKQkRHb1FSd3dCQ3lBQUtBSUlJQUUyQWdBTElBQW9BZ3dpQUNBQUtBSUFRUUZxTmdJQUlBSkJFR29rQUF1RkJBRUVmeU1BUWZBQWF5SUVKQUFnQkNBQk5nSnNJQVJCQURZQ2FDQUVJQUFnQXhESUF5SUdOZ0prSUFSQkFEWUNZQUpBQWtBZ0FoQVdRUUZIRFFBZ0FDQUNRUUFRRVNnQ0FCRDRCRVVnQmtFQ1NYSU5BQ0FBSUFFZ0FrRUFFQkVvQWdBZ0F4RHhCQ0VGREFFTElBUkIwQUJxRURBaEFTQUVJQUFnQXhDN0FqWUNUQ0FFSUFFMkFqd2dCQ0FFUWVBQWFqWUNSQ0FFSUFSQjZBQnFOZ0pBSUFRZ0JFSGtBR28yQWpnZ0JDQUFOZ0lnSUFRZ0JFSE1BR28yQWpRZ0JDQUVRZXdBYWpZQ01DQUVJQVJCT0dvMkFpd2dCQ0FFUWVRQWFqWUNLQ0FFSUFSQjRBQnFOZ0lrSUFRZ0FEWUNDQ0FFSUFSQnpBQnFOZ0lZSUFRZ0JFRTRhallDRkNBRUlBUkI1QUJxTmdJUUlBUWdCRUhnQUdvMkFnd0NRQ0FDRUJaRkRRQURRQUpBQWtBZ0FDQUNJQVVRRVNnQ0FCRDRCRVVFUUNBQUlBSWdCUkFSS0FJQUVPRU1SUTBCQ3lBRVFUaHFJQUlnQlJBUktBSUFFSkFJREFFTElBQWdBaUFGRUJFb0FnQVFyd1FoQnlBQ0lBVVFFU2dDQUNFR0lBY0VRQ0FFUVNCcUlBWVFzQlFNQVFzZ0FDQUdFS0lEUlEwQUlBUkJDR29nQWlBRkVCRW9BZ0FRcnhRTElBUW9BbUFnQkNnQ1pFOE5BU0FGUVFGcUlnVWdBaEFXU1EwQUN3c0NRQ0FCRUJaRkJFQWdCQ2dDYUNFRkRBRUxJQVFnQUNBRElBRVFuUU1pQlRZQ2FBc2dBQ0FGSUFRb0Ftd1FoZ0VoQlNBQkVEWUxJQVJCOEFCcUpBQWdCUXQ2QVFGL0l3QkJFR3NpQlNRQVFTd1FKaUFBRUZVZ0FVRU1FRkVpQVNBQ0VEa2dBU0FERUV4QkFDRURJQVFRRmtFQVNnUkFBMEFnQVNBRUlBTVFFU2dDQUJBNUlBTkJBV29pQXlBRUVCWklEUUFMQ3lBQUtBS0VBU0FGUVFocUlBRVFPaUlBRUh3Z0FCQStJQUVvQWdRaEFDQUZRUkJxSkFBZ0FBc2NBQ0FBRUxRRklBRUVRQ0FBSUFFUS9BUWdBQ0FCRUt3SUN5QUFDeGNBSUFCQkJHb1FrQUVvQWdBb0FneEJoMzVxUVFkSkN4VUFJQUVnQUhRZ0FVRUFJQUJyZGlBQVFYOUtHd3NOQUNBQUtBSUFRZi8vL3dOeEN3a0FJQUFnQVRzQkFBc21BRUU4RUVZaUFDQUJJQUlnQXlBRUVNZ1VJUUVnQUNBRklBQW9BZ0FvQWdRUkFRQWdBUXVsQVFFRGZ5TUFRUkJySWdVa0FDQUZJQUUyQWd3Q2Z3SkFJQUJCdEFKcUlnY2dCVUVNYWhBL0VCWkJBVWdOQUVFQUlRQURRQUpBSUFVZ0FUWUNDQUpBSUFJZ0J5QUZRUWhxRUQ4Z0FCQVJLQUlBSWdZb0FneEhEUUFnQXlBR0tBSUlSdzBBSUFaQkFCQXZJQVJHRFFFTElBVWdBVFlDRENBQVFRRnFJZ0FnQnlBRlFReHFFRDhRRmtnTkFRd0NDd3NnQmlnQ0JBd0JDMEVBQ3lFQUlBVkJFR29rQUNBQUM3QUJBUVIvSXdCQkVHc2lBeVFBUVN3UUppSUZJQUFRVlVFQVFSNFFVU0VHSUFNZ0JUWUNEQ0FCRUJaQkFFb0VRQU5BSUFZZ0FTQUVFQkVvQWdBUU9TQUVRUUZxSWdRZ0FSQVdTQTBBQ3dzZ0EwRWVOZ0lJSUFCQjNBSnFJQU5CQ0dvUVB5QURRUXhxRUVjZ0FFR1FBbW9nQXlBREtBSU1FRG9pQVJCOUlBRVFQaUFBUWVnQWFpQURLQUlNRUl3QklBQWdBeWdDRENnQ0JDQUNFTm9GSUFNb0Fnd29BZ1FoQUNBRFFSQnFKQUFnQUF1S0FnRUVmeU1BUVJCcklnTWtBQ0FEUVJVMkFnZ0NRQ0FBUWR3Q2FpSUZJQU5CQ0dvUVB4QVdRUUJLQkVBRFFDQURRUlUyQWdnZ0F5QUZJQU5CQ0dvUVB5QUVFQkVvQWdBaUJqWUNEQ0FHUVFBUUx5QUJSZ1JBSUFNb0FneEJBUkF2SUFKR0RRTUxJQU5CRlRZQ0NDQUVRUUZxSWdRZ0JTQURRUWhxRUQ4UUZrZ05BQXNMUVN3UUppSUdJQUFRVlVFQVFSVVFVU0VFSUFNZ0JqWUNEQ0FFSUFFUVRDQUVJQUlRVENBRFFSVTJBZ2dnQlNBRFFRaHFFRDhnQTBFTWFoQkhJQUJCa0FKcUlBTkJDR29nQXlnQ0RCQTZJZ0lRZlNBQ0VENGdBRUhvQUdvZ0F5Z0NEQkNNQVNBQlFjQUFSdzBBSUFCQkN4QWhDeUFES0FJTUtBSUVJUUFnQTBFUWFpUUFJQUFMdVFFQkEzOGpBRUVRYXlJQkpBQWdBVUVUTmdJTUFrQWdBRUhjQW1vaUFpQUJRUXhxRUQ4UUZrVUVRRUVzRUNZaUF5QUFFRlZCQUVFVEVGRWFJQUVnQXpZQ0RDQUJRUk0yQWdnZ0FpQUJRUWhxRUQ4Z0FVRU1haEJISUFCQmtBSnFJQUZCQ0dvZ0FTZ0NEQkE2SWdJUWZTQUNFRDRnQUVIb0FHb2dBU2dDREJDTUFTQUJLQUlNSVFBTUFRc2dBVUVUTmdJSUlBRWdBaUFCUVFocUVEOFFrQUVvQWdBaUFEWUNEQXNnQUNnQ0JDRUFJQUZCRUdva0FDQUFDeHNBSUFCQjZPMFJOZ0lBSUFCQkVHb1FOaUFBUVFScUVEWWdBQXZtQVFFQmZ5QUFRY0R0RVRZQ0FDQUFRYlFEYWlJQklBRVFQQkNLQ0NBQVFhQURhaERSQXlBQVFZZ0RhaERiRkNBQVFmQUNhaENURFNBQVFkd0NhaENjQmlBQVFjZ0NhaENjQmlBQVFiUUNhaENjQmlBQVFhZ0NhaEQ3QWlBQVFad0NhaEQ3QWlBQVFaQUNhaEQ3QWlBQVFZUUNhaEQ3QWlBQVFmZ0JhaEQ3QWlBQVFld0JhaEQ3QWlBQVFlQUJhaEQ3QWlBQVFkUUJhaEQ3QWlBQVFjZ0JhaEQ3QWlBQVFaUUJhaEM0QVNBQVFlZ0FhaENkQ0JvZ0FFSFlBR29pQVNBQkVEd1FpUWdnQUVIRUFHb1FOaUFBUVRocUVEWWdBRUVzYWhEeURTQUFRUlJxRUNBYUlBQUxUd0VCZnlNQVFlQUFheUlBSkFBZ0FFSFlBR3BCQVJEMUFTSUVRUUFRRHlBQkVHMGdCQ0FBUVFsQkFrRUJRUUJCQUVFQUVFVWlBU0FDSUFNUTBBSWhBaUFCRURVYUlBQkI0QUJxSkFBZ0Fnc2tBQ0FCQkVBZ0FDQUJLQUlBRUtBSUlBQWdBU2dDQkJDZ0NDQUFFQ1VhSUFFUUtnc0xKQUFnQVFSQUlBQWdBU2dDQUJDaENDQUFJQUVvQWdRUW9RZ2dBQkFsR2lBQkVDb0xDMTBCQVg4Z0FCQmVHaUFBRUY0aEFTQUFLQUlFSUFBb0FoQWdBU2dDQUdwQmYycEJDblpCL1AvL0FYRnFLQUlBR2lBQUVGNGlBU0FCS0FJQVFYOXFOZ0lBSUFBUW9neEJnTUFBVHdSQUlBQVEzQWdvQWdBUUtpQUFFTnNJQ3dzSkFDQUJJQUlROUJRTERRQWdBQ2dDQUNBQlFUUnNhZ3ZvQ0FFSGZ5TUFRVEJySWdja0FBSkFBa0FnQVVHK2ZXb2lCVUhIQUVzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRUUZyRGtjQkFRRUNBZ0lDQWdJQ0FnSUNBd01FQkFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRWUdCZ1lHQmdZSEJ3Y0hDUWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FBTElBQkJPR3BCUFJBaElBUVFnd01hSUFRUWtnUWFRZi8vLy84SElRaEJ6UUloQmd3SkN5QUFRVGhxSWdWQlBSQWhJQVZCUGhBaERBY0xJQUJCT0dvaUJVRTlFQ0VnQlVIQUFCQWhEQVlMSUFCQk9Hb2lCVUU5RUNFZ0JVSEJBQkFoREFVTElBQkJPR29pQlVFOUVDRWdCVUhDQUJBaERBUUxJQUJCT0dvaUJVRTlFQ0VnQlVFL0VDRU1Bd3NnQUVFNGFpSUZRVDBRSVNBRlFjTUFFQ0VNQWdzZ0FFRTRhaUlGUVQwUUlTQUZRY1FBRUNFTUFRc2dBRUU0YWlJRlFhSG5FUkJDSUFWQnNTa1FJUXNnQkJDREF5RUtJQVFRa2dRaENVSC8vLy8vQnlFSVFRQWhCUUpBSUFGQnZYMXFJZ3RCeGdCTERRQkJ6Z0loQmdKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0MwRUJhdzVHQUFFQ0F3UUZCZ2NIQndnSkNnc01EUTRQRUJFU0V4UU9EeEFSRWhNVURnOFFFUklURkE0UEVCRVNFeFFWRmhZV0Z3NFBFQkVTRXhRT0R4QVJFaE1VRGc4UUVSSVRGQmdMUWM4Q0lRWU1Gd3RCMEFJaEJnd1dDMEhSQWlFR0RCVUxRZElDSVFZTUZBdEIwd0loQmd3VEMwSFVBaUVHREJJTFFkVUNJUVlNRVF0QjFnSWhCUXdQQzBIWEFpRUdEQThMUWRnQ0lRWU1EZ3RCMlFJaEJnd05DMEhhQWlFR0RBd0xRZHNDSVFZTUN3dEIzQUloQmd3S0MwSGVBa0hkQWlBSkd5RUZEQWdMUWVBQ1FkOENJQWtiSVFVTUJ3dEI0d0pCNGdKQjRRSWdDaHNnQ1JzaEJRd0dDMEhtQWtIbEFrSGtBaUFLR3lBSkd5RUZEQVVMUWVvQ1FlY0NJQVJCREVZYklRVU1CQXRCNndKQjZBSWdCRUVNUmhzaEJRd0RDMEhzQWtIcEFpQUVRUXhHR3lFRkRBSUxRZTBDSVFZTUFndEI3Z0loQlFzQ1FDQUJRYlY5YWlJRVFUNUxEUUFnQlNFR0FrQUNRQUpBQWtBQ1FBSkFBa0FnQkVFQmF3NCtBUUlJQ0FnSUNBZ0FBQUFBQUFBQUFRRUJBUUVCQVFJQ0FnSUNBZ0lEQXdNREF3TURDQWdJQ0FnRUJBUUVCQVFFQlFVRkJRVUZCUVlHQmdZR0JnWUFDMEVBSVFnTUJndEJBU0VJREFVTFFRSWhDQXdFQzBFRElRZ01Bd3RCQmlFSURBSUxRUWNoQ0F3QkMwRUlJUWdMSUFVaEJnc2dCMEVnYWhBd0lnVWdCMEVZYWtFQklBQkJPR29pQkVFRFFRQVFkQkIxRUlRQklBaEIvLy8vL3dkSEJFQWdCU0FIUVJCcVFRQWdDQkIxRUlRQkN5QUhJQU1RUURZQ0NDQUhJQU1RTWpZQ0VDQUhRUWhxSUFkQkVHb1FIZ1JBQTBBZ0JTQUhRUkJxUVFFZ0J5Z0NDQ2dDQUJCMUVJUUJJQWRCQ0dvUVpob2dCeUFERURJMkFoQWdCMEVJYWlBSFFSQnFFQjROQUFzTEFrQWdBVUdQZldvaUFFRURUdzBBSUFRZ0FFRUFFSFFpQUVVTkFDQUZJQWRCRUdwQkFTQUFFSFVRaEFFTElBUWdCaUFDSUFVUXdnTWhBQ0FGRUs0RElBZEJNR29rQUNBQUN4QUFJQUJCNkFCcUlBRVFMMEVHRUM4TGVBRUNmeUFBS0FLTUJDMEFpQVFFUUFKL0FuOGdBUzBBQUNJRFFkOEFjUVJBUVFCQmdBSVFTRUdBQkJCSUlRSWdBUzBBQUNFREN5QURRU0J4Q3dSL0lBSkJnQWdRU0NFQ0lBRXRBQUFGSUFNTFFjQUFjUVJBSUFKQmdCQVFTQ0VDQ3lBQ1JRc0VRRUVBRHdzZ0FFRTRha0hoS1JBaEN5QUNDdzBBSUFBZ0FDQUJFR0lRcnd3TERnQWdBQ2dDYUVHNWUycEJGRWtMREFBZ0FDQUJFTjhDUVJoR0N4a0FJQUFnQVVjRVFDQUFJQUVvQWdBZ0FTZ0NCQkNhRlFzTE9nRUJmeU1BUVJCcklnSWtBQ0FBRUJzYUEwQWdBQ2dDQkJEWENpQUFJQUFvQWdSQkJHbzJBZ1FnQVVGL2FpSUJEUUFMSUFKQkVHb2tBQXRGQVFGL0l3QkJJR3NpQWlRQUlBSWdBUkRNQVRZQ0VCRG5BU0FDUVJocUlBQWdBU0FDUVJCcUlBSkJDR29RMEF3Z0FrRVlhaEJYSVFBZ0FrRWdhaVFBSUFCQkJHb0xDUUFnQUVFQU9nQUFDeUlBSXdCQkVHc2lBeVFBSUFBUUd5QUJJQUlnQUVFRWFoREREQ0FEUVJCcUpBQUxEUUFnQUMwQUNVRUVjVUVDZGd1d0FRRUJmeU1BUVJCcklnTWtBQUpBSUFJTkFDQUFMUUFKUVNCeFFRVjJCRUFnQTBFWE5nSU1JQUVnQTBFTWFoQkJDeUFBTFFBSlFjQUFjVUVHZGtVTkFDQURRUlUyQWd3Z0FTQURRUXhxRUVFZ0EwRVhOZ0lNSUFFZ0EwRU1haEJCQ3lBQUVMQUlCRUFnQTBFVE5nSU1JQUVnQTBFTWFoQkJDeUFBRUpZR0JFQWdBMEVZTmdJTUlBRWdBMEVNYWhCQkN5QUFFSm9FQkVBZ0EwRVpOZ0lNSUFFZ0EwRU1haEJCQ3lBRFFSQnFKQUFMcHc4QkFYOENRQUpBSUFGQmYyb2lBMEgyQUVzTkFFRUFJUUVDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzUyQ2dzTURnMG9LU0VpSXlRbEppY3FLeXd0TGk4d0FRSURCQllYR0dFQVlBOFFZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lCc1pGUkVmSFJ4Z0htQmdCd1VHWUdBSUdoSVRGQ0F4TWpNME5UWTNPVGc2T3p3OVBqOUFRVUpEUkVWTVJrZElTVXBMVFU1UFVGRlNVMVJWVmxkWVdWcGJYRjFlWHdrTFFRRWhBU0FDRFdBZ0FDZ0NqQVFvQWdCQmYyb2lBa0VDU3cxZ0lBSkJBbXRGQkVBZ0FFRTRha0VZRUNGQkFROExJQUJCT0dwQkZ4QWhRUUVQQzBFRkR3dEJCZzhMUVNvUEMwRXJEd3RCRHc4TFFSQVBDMEVSRHd0QkZnOExRUmdQQzBFWkR3dEJHZzhMUVJzUEMwRWREd3RCSEE4TFFRTWhBU0FDRFZFZ0FFRTRha0VnRUNGQkF3OExRUVFoQVNBQ0RWQWdBRUU0YWtFaEVDRkJCQThMSUFCQk9Hb2lBa0U1RUNFQ1FDQUFLQUtNQkNnQ0FFVU5BQ0FBS0FLTUJDZ0NBRUVCUmcwQVFRb2hBU0FBS0FLTUJDZ0NBRUVDUncxUUN5QUNRWi9kRVVHQWlnUVFzZ0VnQWtHR0tSQWhRUW9QQ3lBQVFUaHFRU01RSVVFU0R3c2dBRUU0YWtFakVDRkJFdzhMUVJRUEMwRUpJUUVnQUNnQ2pBUW9BZ0JCRFVZTlN5QUFRVGhxSWdKQkFoQWhBa0FnQUNnQ2pBUW9BZ0JGRFFBZ0FDZ0NqQVFvQWdCQkFVWU5BQ0FBS0FLTUJDZ0NBRUVDUncxTUN5QUNRWi9kRVVHQWlnUVFzZ0VnQWtHR0tSQWhRUWtQQ3lBQVFUaHFJZ0JCdzkwUlFZQ0dCQkN5QVNBQVFjc2lFQ0ZCeUNJUEN5QUFRVGhxSWdCQnc5MFJRWUNHQkJDeUFTQUFRY3NpRUNGQnlTSVBDeUFBUVRocUlnQkJ3OTBSUVlDR0JCQ3lBU0FBUWNzaUVDRkJ5aUlQQzBFSElRRWdBQ2dDakFRb0FnQkJCRWNOUnlBQVFUaHFRUUlRSVVFSER3c2dBRUU0YWlJQVFlTGRFUkJDSUFCQmxTY1FJVUdXSnc4TFFRZ1BDMEVNRHd0QkN3OExRUTBQQzBFT0R3dEJGdzhMSUFCQk9Hb2lBRUdBM2hFUVFpQUFRY2NpRUNGQkpBOExJQUJCT0dvaUFFR0EzaEVRUWlBQVFjY2lFQ0ZCS1E4TElBQkJPR29pQUVHQTNoRVFRaUFBUWNjaUVDRkJ3Q0lQQ3lBQVFUaHFJZ0JCZ040UkVFSWdBRUhISWhBaFFjRWlEd3NnQUVFNGFpSUFRWURlRVJCQ0lBQkJ4eUlRSVVIQ0lnOExJQUJCT0dvaUFFR0EzaEVRUWlBQVFjY2lFQ0ZCd3lJUEN5QUFRVGhxSWdCQmdONFJFRUlnQUVISEloQWhRY1FpRHdzZ0FFRTRha0U5RUNGQkpnOExJQUJCT0dwQlBSQWhRU2dQQ3lBQVFUaHFRVDBRSVVFa0R3c2dBRUU0YWtFOUVDRkJLUThMSUFCQk9Hb2lBRUU5RUNFZ0FFSEFBQkFoUWNBaUR3c2dBRUU0YWlJQVFUMFFJU0FBUWNBQUVDRkJ3U0lQQ3lBQVFUaHFJZ0JCUFJBaElBQkJ3QUFRSVVIQ0lnOExJQUJCT0dvaUFFRTlFQ0VnQUVIQUFCQWhRY01pRHdzZ0FFRTRhaUlBUVQwUUlTQUFRY0FBRUNGQnhDSVBDeUFBUVRocVFaYmVFUkJDUVlBbkR3c2dBRUU0YWtHVzNoRVFRa0dCSnc4TElBQkJPR3BCbHQ0UkVFSkJnaWNQQ3lBQVFUaHFRWmJlRVJCQ1FZTW5Ed3NnQUVFNGFrR1czaEVRUWtHRUp3OExJQUJCT0dwQmx0NFJFRUpCaFNjUEN5QUFRVGhxUVpiZUVSQkNRWVluRHdzZ0FFRTRhaUlBUWIvZUVVR0FoZ1FRc2dFZ0FFSFZJaEFoUWRZaUR3c2dBRUU0YWlJQVFkVGVFVUdBaGdRUXNnRWdBRUhYSWhBaFFkZ2lEd3NnQUVFNGFpSUFRZWJlRVJCQ0lBQkJxeWtRSVVHc0tROExJQUJCT0dvaUFFSG0zaEVRUWlBQVFhc3BFQ0ZCclNrUEMwR0ZLU0VCSUFJTkpDQUFRVGhxSWdCQmh0d1JFRUlnQUVHSEtSQWhRWVVwRHd0QmlTa2hBU0FDRFNNZ0FFRTRhaUlBUVozY0VSQkNJQUJCaXlrUUlVR0pLUThMUVlvcElRRWdBZzBpSUFCQk9Hb2lBRUdkM0JFUVFpQUFRWXNwRUNGQmlpa1BDMEdOS1NFQklBSU5JU0FBUVRocUlnQkJpdDhSRUVJZ0FFR01LUkFoUVkwcER3dEJqaWtoQVNBQ0RTQWdBRUU0YWlJQVFZcmZFUkJDSUFCQmpDa1FJVUdPS1E4TElBQkJPR29pQUVHdzN4RVFRaUFBUVpFcEVDRkJrQ2tQQ3lBQVFUaHFJZ0JCejk4UkVFSWdBRUdyS1JBaFFhd3BEd3NnQUVFNGFpSUFRYy9mRVJCQ0lBQkJxeWtRSVVHdEtROExRY2NwRHd0QnlDa1BDMEhKS1E4TFFjb3BEd3RCeXlrUEMwSE1LUThMUWMwcER3dEJ6aWtQQzBIUEtROExRZFFwRHd0QjFTa1BDMEhTS1E4TFFkTXBEd3RCNXlrUEN5QUFRVGhxSWdCQjNkd1JFRUlnQUVHa0tSQWhRYVlwRHdzZ0FFRTRhaUlBUWQzY0VSQkNJQUJCcENrUUlVR25LUThMUVpvcER3dEJteWtQQzBHY0tROExRWjBwRHd0Qm5pa1BDMEdmS1E4TFFhQXBEd3RCb1NrUEN5QUFRVGhxSWdCQjQ5OFJFRUlnQUVIOUtSQWhRZjRwRHdzZ0FFRTRhaUlBUWVQZkVSQkNJQUJCL1NrUUlVSC9LUThMSUFCQk9Hb2lBRUhqM3hFUVFpQUFRZjBwRUNGQmdDb1BDeUFBUVRocUlnQkI0OThSRUVJZ0FFSDlLUkFoUVlFcUR3dEIvLy8vL3djaEFRc2dBUXNjQUNBQUtBSUVJQUFvQWdBZ0FTZ0NBR3RCQTNScUlBRW9BZ1JyQzRvTUFRSi9RYklFSVFBQ1FDQUJJQUVvQWdBb0Fpd1JBQUFRNGdJTkFFRzBCQ0VBSUFFUWhRRU5BRUVBSVFBZ0FTQUJLQUlBS0FJY0VRQUFRWDlxSWdKQkVVc05BQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUNRUUZyRGhFRkJpQWhJaU1DQXlRbEJDY0FKaWNuQndFTFFiRUVRUUFnQVNBQktBSUFLQUlnRVFBQUVLZ0NHdzhMSUFFZ0FTZ0NBQ2dDYkJFQUFDRURJQUVvQWdBaEFpQURSUTBKSUFFZ0FpZ0NOQkVBQUVGK2FpSUNRUUpMRFNVZ0FrRUJhdzRDQndnR0N5QUJJQUVvQWdBb0FqUVJBQUFoQXlBQktBSUFJUUlnQTBVTkRDQUJJQUlvQWpRUkFBQkJmbW9pQWtFQ1N3MGtJQUpCQVdzT0Fnb0xDUXNnQVNBQktBSUFLQUkwRVFBQUlRTWdBU2dDQUNFQ0lBTkZEUThnQVNBQ0tBSTBFUUFBUVg1cUlnSkJBa3NOSXlBQ1FRRnJEZ0lORGd3TElBRWdBU2dDQUNnQ05CRUFBQ0VESUFFb0FnQWhBaUFEUlEwU0lBRWdBaWdDTkJFQUFFRithaUlDUVFKTERTSWdBa0VCYXc0Q0VCRVBDeUFCSUFFb0FnQW9BalFSQUFBaEF5QUJLQUlBSVFJZ0EwVU5GU0FCSUFJb0FqUVJBQUJCZm1vaUFrRUNTdzBoSUFKQkFXc09BaE1VRWdzZ0FTQUJLQUlBS0FJMEVRQUFJUU1nQVNnQ0FDRUNJQU5GRFJnZ0FTQUNLQUkwRVFBQVFYNXFJZ0pCQWtzTklDQUNRUUZyRGdJV0Z4VUxRYk1FRHdzZ0FTQUJLQUlBS0FJNEVRQUFJZ0ZCZm1wQkEwOE5IaUFCUWRZRGFnOExJQUVnQVNnQ0FDZ0NPQkVBQUNJQlFYNXFRUU5QRFIwZ0FVSFpBMm9QQ3lBQklBRW9BZ0FvQWpnUkFBQWlBVUYrYWtFRFR3MGNJQUZCM0FOcUR3c2dBU0FDS0FJd0VRQUFRWDlxSWdGQkJFOE5HeUFCUVFKMFFmaUhDV29vQWdBUEN5QUJJQUVvQWdBb0FqZ1JBQUFpQVVGK2FrRURUdzBhSUFGQmhnUnFEd3NnQVNBQktBSUFLQUk0RVFBQUlnRkJmbXBCQTA4TkdTQUJRWWtFYWc4TElBRWdBU2dDQUNnQ09CRUFBQ0lCUVg1cVFRTlBEUmdnQVVHTUJHb1BDeUFCSUFJb0FqQVJBQUJCZjJvaUFVRUVUdzBYSUFGQkFuUkJpSWdKYWlnQ0FBOExJQUVnQVNnQ0FDZ0NPQkVBQUNJQlFYNXFRUU5QRFJZZ0FVR1BCR29QQ3lBQklBRW9BZ0FvQWpnUkFBQWlBVUYrYWtFRFR3MFZJQUZCa2dScUR3c2dBU0FCS0FJQUtBSTRFUUFBSWdGQmZtcEJBMDhORkNBQlFaVUVhZzhMSUFFZ0FpZ0NNQkVBQUVGL2FpSUJRUVJQRFJNZ0FVRUNkRUdZaUFscUtBSUFEd3NnQVNBQktBSUFLQUk0RVFBQUlnRkJmbXBCQTA4TkVpQUJRWmdFYWc4TElBRWdBU2dDQUNnQ09CRUFBQ0lCUVg1cVFRTlBEUkVnQVVHYkJHb1BDeUFCSUFFb0FnQW9BamdSQUFBaUFVRitha0VEVHcwUUlBRkJuZ1JxRHdzZ0FTQUNLQUl3RVFBQVFYOXFJZ0ZCQkU4TkR5QUJRUUowUWFpSUNXb29BZ0FQQ3lBQklBRW9BZ0FvQWpnUkFBQWlBVUYrYWtFRFR3ME9JQUZCL1FOcUR3c2dBU0FCS0FJQUtBSTRFUUFBSWdGQmZtcEJBMDhORFNBQlFZQUVhZzhMSUFFZ0FTZ0NBQ2dDT0JFQUFDSUJRWDVxUVFOUERRd2dBVUdEQkdvUEN5QUJJQUlvQWpBUkFBQkJmMm9pQVVFRVR3MExJQUZCQW5SQnVJZ0phaWdDQUE4TElBRWdBU2dDQUNnQ09CRUFBQ0lCUVg1cVFRTlBEUW9nQVVHbEJHb1BDeUFCSUFFb0FnQW9BamdSQUFBaUFVRitha0VEVHcwSklBRkJxQVJxRHdzZ0FTQUJLQUlBS0FJNEVRQUFJZ0ZCZm1wQkEwOE5DQ0FCUWFzRWFnOExJQUVnQWlnQ01CRUFBQ0lCUVg5cVFRUlBEUWNnQVVHaUJHb1BDeUFCSUFFb0FnQW9BakFSQUFCQmYyb2lBVUVFVHcwR0lBRkJBblJCeUlnSmFpZ0NBQThMSUFFZ0FTZ0NBQ2dDTUJFQUFFRi9haUlCUVFSUERRVWdBVUVDZEVIWWlBbHFLQUlBRHdzZ0FTQUJLQUlBS0FJd0VRQUFRWDlxSWdGQkJFOE5CQ0FCUVFKMFFlaUlDV29vQWdBUEN5QUJJQUVvQWdBb0FqQVJBQUJCZjJvaUFVRUVUdzBESUFGQkFuUkIrSWdKYWlnQ0FBOExJQUVnQVNnQ0FDZ0NNQkVBQUVGL2FpSUJRUVJQRFFJZ0FVRUNkRUdJaVFscUtBSUFEd3NnQVNBQktBSUFLQUl3RVFBQVFYOXFJZ0ZCQkU4TkFTQUJRUUowUVppSkNXb29BZ0FQQzBHd0JDRUFDeUFBQ3d3QUlBQVFHeWdDQUVFRmRBdGVBUUYvQWtBQ1FDQUJRUXRMRFFCQkFTRUFRUUVnQVhRaUEwSHdBWEZGQkVBZ0EwR0FCbkZGQkVCQkFTQUJkRUdBR0hGRklBSkJBa2R5RFFJTUF3c2dBa0YvYWtFQ1R3MEJEQUlMSUFKQmYycEJBMGtOQVF0QkFDRUFDeUFBQ3dvQUlBRWdBaERSREJvTERRQWdBVUVEUmlBQ1FRRkdjUXNKQUNBQUlBRVE2UlFMM1FjQkJIOGpBRUV3YXlJSEpBQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVIY2ZHb2lCa0VWU3dSQUlBRkJzM3RxSWdaQkNVME5BVUVBREE4TElBWkJBV3NPRlFNRUJRWUhDQWtNRFFvTERBRUNBd1FGQmdjSUNRRUxJQVpCQVdzT0NRSURCQVVHQndnTERBQUxRZW9CREF3TFFlc0JEQXNMUWUwQlFld0JJQVJCQW5KQkMwWWJEQW9MUWU4QlFlNEJJQVJCQW5KQkMwWWJEQWtMUWZBQkRBZ0xRZkVCREFjTFFmSUJEQVlMUWVVQkRBVUxRZVlCREFRTFFlZ0JEQU1MUWVrQkRBSUxRZU1CREFFTFFlUUJDeUVJSUFSQkFYSkJDMFlFUUNBQVFUaHFRUXdRSVFzZ0IwRUFOZ0lzSUFkQkFEWUNLQ0FIUVFBMkFpUWdCeUFBUVRocUlnWkJCVUVCSUFBb0Fvd0VMUUNJQkJ0QkFCQjBJZ2syQWlBZ0J5QUdJQVV0QUFCQndBQnhRUVoyQkg5QmdJQUNRUUFnQUNnQ2pBUXRBSWdFR3dWQkFBdEJBQkIwSWdRMkFod2dCeUFFTmdJWUlBY2dBMEVBRUJFb0FnQTJBaXdDUUFKQUlBaEJBWEpCNlFGR0RRQWdCd0ovQWtBZ0NFR2RmbW9pQlVFRFN3MEFBa0FDUUNBRlFRRnJEZ01DQWdBQkN5QUhJQU5CQVJBUktBSUFOZ0lvSUFjZ0EwRUNFQkVvQWdBMkFpUWdCQ0VGSUFNUUZrRUVTUTBFSUFjZ0EwRURFQkVvQWdBaUNUWUNJQ0FISUFZZ0JpQURRUVFRRVNnQ0FCRFBBU0FHSUFOQkJSQVJLQUlBRU04QmNrRUFFSFFpQlRZQ0hDQUhJQVlnQmlBRFFRWVFFU2dDQUJEUEFTQUdJQU5CQnhBUktBSUFFTThCY2tFQUVIUWlCRFlDR0F3RUN5QURFQlpCQWtrTkFpQUhJQU5CQVJBUktBSUFJZ2syQWlBZ0JpQUdJQU5CQWhBUktBSUFFTThCSUFZZ0EwRURFQkVvQWdBUXp3RnlRUUFRZEF3QkN5QUhJQU5CQVJBUktBSUFOZ0lrSUFNUUZrRURTUTBCSUFjZ0EwRUNFQkVvQWdBaUNUWUNJQ0FHSUFZZ0EwRURFQkVvQWdBUXp3RWdCaUFEUVFRUUVTZ0NBQkRQQVhKQkFCQjBDeUlGTmdJY0RBRUxJQVFoQlFzZ0JpQUZFTThCSVFNZ0JpQUVFTThCSVFSQmdNQUFRWUNBQVJCSVFZQWdFRWhCZ0lBQ0VFZ2dBeUFFY25FRVFDQUdRZUVwRUNFTEFrQWdBQ2dDakFRdEFJZ0VSUTBBSUFZZ0NSRFBBVUVCUncwQUlBWkI0aWtRSVFzZ0IwRUlhaEF3SWdBZ0IwRXNhaEJISUFBZ0IwRWdhaEJISUFBZ0IwRWNhaEJIQW44Q1FBSkFBa0FnQ0VHZGZtb2lBMEVHU3cwQUlBTkJBV3NPQkFBQUFRQUNDeUFBSUFkQkpHb1FSeUFJUWVRQlJ3MEJJQVpCNUFFZ0FCRFZCa0VBREFJTElBQWdCMEVZYWhCSElBQWdCMEVrYWhCSElBQWdCMEVvYWhCSEN5QUdJQWdnQWlBQUVQQURJZ01nQVVHdkEwY05BQm9nQmtHQ0FTQUNJQU1nQmtFQlFRQVF2UUlRcWdFTElRRWdBQkEySUFkQk1Hb2tBQ0FCQzh3QkFBSkFJQUZCZkdvaUFVRUdTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCUVFGckRnWUVCUUVBQmdJREN5QUNRWGRxSWdGQkFrc05Cd0pBSUFGQkFXc09BZ2NIQUFzZ0FDZ0NMRUdQQTBvTkJrRUFEd3NnQWtGM2FrRURUdzBHREFVTElBSkJDMFlOQkF3RkN5QUNRWHRxSWdCQkIwOE5CRUgzQUNBQVFmOEFjWFpCQVhFUEN5QUNRWHBxSWdCQkJrOE5BMEU3SUFCQlAzRjJRUUZ4RHdzZ0FrRjVhaUlBUVFWUERRSkJIU0FBUVI5eGRrRUJjUThMSUFKQmZuRkJDa2NOQVF0QkFROExRUUFMZmdFQ2Z3SkFJQUFvQW93RUxRQ0lCRVVOQUNBQkxBQUFJZ05CQUVnTkFBSi9BbjhnQTBIZkFIRUVRRUVBUVFnUVNFRVFFRWdoQWlBQkxRQUFJUU1MSUFOQklIRUxCSDhnQWtFZ0VFZ2hBaUFCTFFBQUJTQURDMEhBQUhFRVFDQUNRUUVRU0NFQ0N5QUNSUXNFUUVFQUR3c2dBRUU0YWtIaEtSQWhDeUFDQzVFREFRbC9Jd0JCTUdzaUJTUUFJQUlRRmtFQlRnUkFJQUJCT0dvaEJBTkFJQUlnQ1JBUklRWUNRQ0FFSUFFZ0NSQ2VBeUlMSUFRZ0JpZ0NBQkJpSWdkR0RRQWdBQ2dDakFRUXJBTW9BZ0JCZ0lnRVR3UkFJQVlnQkVHUUF5QUxJQVlvQWdBUStBRTJBZ0FNQVFzQ1FDQUVJQWNRM2dZRVFDQUZRU0JxRURBaENFRUFJUU1nQkNBSEVOa0dJZ3BCQUV3TkFRTkFJQVVnQkNBR0tBSUFJQVFnQnlBREVKNERJQU1RcndFMkFod2dDQ0FGUVJ4cUVFRWdBMEVCYWlJRElBcEhEUUFMREFFTElBVkJJR29RTUNFSUlBUWdCeERaQmlFS0lBUWdCeEN3QVNFSFFRQWhBeUFLUVFCS0JFQURRQ0FGSUFRZ0JpZ0NBQ0FISUFNUXJ3RTJBaHdnQ0NBRlFSeHFFRUVnQTBFQmFpSURJQXBIRFFBTEN5QUFJQXNnQlNBSUVJQUZJZ01RdlFnaEJpQUNJQWtRRVNBR05nSUFJQU1RTmlBSUVEWU1BUXNnQUNBTElBVkJFR29nQ0JDQUJTSURFTDBJSVFZZ0FpQUpFQkVnQmpZQ0FDQURFRFlnQ0JBMkN5QUpRUUZxSWdrZ0FoQVdTQTBBQ3dzZ0FFRTRhaUFCSUFJUW5RTWhBQ0FGUVRCcUpBQWdBQXNuQUFKL0FrQWdBa0VDUncwQUlBRkJmMm9pQUVFQ1N3MEFRUUVnQUVFQmF3MEJHZ3RCQUFzTEVBQWdBa0VJUmlBQlFYeHhRUVJHY1FzcEFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJFTHNWRURFb0FnQWhBQ0FDUVJCcUpBQWdBQXVmQVFFRWZ5TUFRU0JySWdJa0FDQUNJQUJCb0FOcUlnUWdBUkRTRlRZQ0dDQUNFSVVFTmdJSUFrQWdBa0VZYWlBQ1FRaHFFSWdCQkVBZ0FrRVlhaEJFS0FJTUlRTU1BUXNnQUJCVklRTkJMQkFtSUFOQkFFRUhFRkVpQlNBQkVCTWlBUkQrQWlBQVFjZ0JhaUFDUVFocUlBVVFPaUlBRUgwZ0FCQStJQVFnQWtFSWFpQUJFR2tpQUJEakJpQUROZ0lBSUFBUUlCb0xJQUpCSUdva0FDQURDdzBBSUFCQlFHc1FrQUVvQWdBTENBQWdBRUhFQUdvTHJRRUJBbjhnQUVIdzJCRTJBZ0FnQUVHd0NHb1FoUVVhSUFCQnBBaHFJZ0VnQVJBOEVLRUlJQUJCa0FocUVORURJQUJCK0FkcUVPWVVJQUJCNUFkcUVJVUZHaUFBUWRBSGFpSUJFSndHSUFCQjZBUnFJUUlEUUNBQlFXeHFFSVVGSWdFZ0FrY05BQXNnQUVIVUJHb1EwUU1nQUVIQUJHb1F3QVFnQUVHc0JHb1FoUVVhSUFCQm1BUnFFSVVGR2lBQVFZQUVhaUlCSUFFUVBCQ2dDQ0FBUVRocUVKNElHaUFBRUpvQ0dpQUFDdzRBSUFBZ0FTQUNFTFlDRU5JREN4VUFJQUFRRXlBQUVCOGdBUkFUSUFFUUh4RHFDUXNiQUNBQVFZVFhFVFlDQUNBQVFTeHFFQ0FhSUFBUW1nSWFJQUFMSXdBZ0FFRzQyQkUyQWdBZ0FFRTRhaEFnR2lBQVFTUnFFTkVESUFBUW1nSWFJQUFMSlFFQmZ5QUNJQUEyQWdRZ0FTQUFLQUlBSWdNMkFnQWdBeUFCTmdJRUlBQWdBallDQUFzSkFDQUFJQUVRb3hZTExnRUJmeU1BUVJCcklnRWtBQ0FCSUFBUSt3dzJBZ0FnQVVFSWFpQUJFR2NvQWdBaEFDQUJRUkJxSkFBZ0FBdHVBUUovSXdCQkVHc2lBU1FBQWtBZ0FCREJBUVJBSUFBZ0FDZ0NCRUYvYWlJQ0VMd0JJQUFvQWdBaEFDQUJRUUE2QUE4Z0FDQUNhaUFCUVE5cUVKUUJEQUVMSUFBZ0FDMEFDMEYvYWlJQ0VOUUJJQUZCQURvQURpQUFJQUpxSUFGQkRtb1FsQUVMSUFGQkVHb2tBQXYzRFFNSWZ3SitBbndqQUVFd2F5SUVKQUFnQkNBRE5nSW9JQVFnQVRZQ0xDQUVJQVJCS0dvMkFpUWdCQ0FFUVN4cU5nSWdBa0FnQVVFQlNBMEFBMEFnQXlBRmFpMEFJRUV3UncwQklBVkJBV29pQlNBQlJ3MEFDeUFCSVFVTElBRWhCd0pBQTBBZ0J5SUdJQVZNQkVBZ0JpQUZheUlJUVJCSUlRa01BZ3NnQXlBR1FYOXFJZ2RxTFFBZ1FUQkdEUUFMSUFZZ0JXc2lDRUVRU0NFSklBWWdCVXdnQ0VFUFNuSU5BQU5BSUFNZ0JXb3dBQ0FnREVJS2ZueENVSHdoRENBRlFRRnFJZ1VnQmtjTkFBc0xJQUVnQm1zaEFVRUFJUU1DUUNBQ1FTNUhCRUJCQUNFSERBRUxJQVJCSUdwQkxoQ0JBeUFBRVA0RElRSWdCQ2dDTENJTElRb2dBa0V3UmdSQUEwQWdCRUVnYWtFd0VJRURJQUFRL2dNaUFrRXdSZzBBQ3lBRUtBSXNJUW9MUVFFaEJ5QUNRVkJxUVFsTERRQWdDaUVGQTBBZ0JFRWdhaUFDRUlFRElBVWdCQ2dDTENBQ1FUQkdHeUVGSUFBUS9nTWlBa0ZRYWtFS1NRMEFDeUFGSUFwTURRQWdDU0FJSUFaQmYzTnFJQVZxSWdoQkVFaHhJZ2xCQVVjZ0JpQUZUbkpGQkVBZ0JDZ0NLQ0VCQTBBZ0RDQUJJQVpxTUFBZ0lnMGdERUlLZm54Q1VId2dEVUl1VVJzaERDQUdRUUZxSWdZZ0JVY05BQXNMSUFzZ0JXc2hBUXNDZndKQUlBSkJJSEpCNVFCR0JFQWdCRUVnYWlBQ0VJRURBa0FnQUJEK0F5SUNRVlZxSWdWQkFrc0VRRUVBSVFZTUFRdEJBQ0VHSUFWQkFXdEZEUUFnQkVFZ2FpQUNFSUVESUFKQkxVWWhCaUFBRVA0RElRSUxBa0FnQWtGUWFpSUZRUWxOQkVBRFFDQUVRU0JxSUFJUWdRTWdCU0FEUVFwc2FpRURJQUFRL2dNaUFrRlFhaUlGUVFwSkRRQUxJQVpGRFFFTUF3c2dBQ2dDY0NJRklBUW9BaWhCbk13UlFiek1FVUc4ekJGQkFDQUZLQUlBS0FLb0FSRUNBQ0FHRFFJTFFRRWhCd3NnQVNBRGFpSUJJQUZCSDNVaUEyb2dBM01oQlNBQlFSOTJEQUVMSUFNZ0FXc2hCVUVCSVFkQkFRc2hBd0pBSUFrZ0JVRVhTSEVpQVVFQlJ3MEFSQUFBQUFBQUFQQS9JUThnQlVFQlNBMEFSQUFBQUFBQUFDUkFJUTREUUNBUElBNmlJQThnQlVFQmNSc2hEeUFPSUE2aUlRNGdCVUVCZGlJRkRRQUxRUUFoQlFzQ2Z3SkFBa0FnQWtFZ2NrR2FmMm9pQmtFR1N3MEFBa0FDUUFKQUFrQWdCa0VCYXc0R0JBRUVCQVFBQWdzZ0FDZ0NkRVVFUUNBQUtBSndLQUlvR2lBQUtBSndJZ1lnQkNnQ0tFRzl6QkVnQmlnQ0FDZ0NRQkVHQUFzZ0J5QUFLQUowUVFCSGNrVUVRQ0FBS0FKd0lnY2dCQ2dDS0VIYXpCRkJ2TXdSUWJ6TUVVRUFJQWNvQWdBb0FxZ0JFUUlBQ3dKL0lBQW9BbkFvQWlnYVFRRUxCRUFnQUJEK0F5SUhRU0J5UWVZQVJ3MERJQVJCSUdvZ0FoQ0JBeUFFUVNCcUlBY1FnUU5CbndFTUJnc2dBQ2dDY0NnQ0tCcEJuZ0VNQlFzZ0FDZ0NkRVVFUUNBQUtBSndLQUlvR2lBQUtBSndJZ1lnQkNnQ0tFR0t6UkZCQUNBR0tBSUFLQUpFRVFRQUN5QUhJQUFvQW5SQkFFZHlSUVJBSUFBb0FuQWlCeUFFS0FJb1Fkck1FVUc4ekJGQnZNd1JRUUFnQnlnQ0FDZ0NxQUVSQWdBTEFuOGdBQ2dDY0NnQ0tCcEJBUXNFUUNBQUVQNERJZ2RCSUhKQjVnQkhEUUlnQkVFZ2FpQUNFSUVESUFSQklHb2dCeENCQTBHZ0FRd0ZDeUFBS0FKd0tBSW9Ha0dlQVF3RUN3SkFJQUFvQW5RTkFDQUFLQUp3SUFRb0FpaEJDRUdzQWtFQVFhWE5FUkFvSUFBb0FuUU5BQ0FBS0FKd0VKQUREUUFnQUNnQ2NDQUVLQUlvUVhkQitBQkJBRUdselJFUUtBc2dCeUFBS0FKMFFRQkhja1VFUUNBQUtBSndJZ2NnQkNnQ0tFSGF6QkZCdk13UlFiek1FVUVBSUFjb0FnQW9BcWdCRVFJQUN5QUVRU0JxSUFJUWdRTU1BZ3NnQUJDRURRc2dBQkNFRFF0Qm5nRUxJUWNnQkNnQ0xDSUNRWUVJVGdSL0lBUkJnQWcyQWl3Z0FDZ0NjQ0lDSUFRb0FpaEJ1ODBSUWJ6TUVVRzh6QkZCQUNBQ0tBSUFLQUtvQVJFQ0FDQUVLQUlzQlNBQ0N5QUVLQUlvYWtFQU9nQWdBa0FnQVFSQUlBeTZJUTRnRDBRQUFBQUFBQUFBQUdFRVFDQUVLQUlvSUE0NUF4Z01BZ3NnQXdSQUlBUW9BaWdnRGlBUG96a0RHQXdDQ3lBRUtBSW9JQThnRHFJNUF4Z01BUXNnQkNnQ0tDSUJRZ0EzQXhnQ1FDQUVRUkJxSUFGQklHb1FJaUlCRUk0RkxRQUFRZVlBUndSQUlBRVFqZ1V0QUFCQnhnQkhEUUVMSUFFUXpBZ0xBa0FnQVJDT0JTMEFBRUhvQUVjRVFDQUJFSTRGTFFBQVFjZ0FSdzBCQ3lBQkVNd0lDd0pBSUFFUWpnVXRBQUJCN0FCSEJFQWdBUkNPQlMwQUFFSE1BRWNOQVFzZ0FSRE1DQXNnQUVHSUFtb2lBaUFBS0FLSUFrRjBhaWdDQUdwQkFCRE5DeUFDUVFocUlBUWdBUkFURUdraUJoQytGaUFHRUNBYUlBSWdCQ2dDS0VFWWFoQzhFd0pBSUFJZ0FDZ0NpQUpCZEdvb0FnQnFMUUFRUVFWeFJRMEFJQVVnQ0dwQnJRSklJZ0FnQTBFQmN5SUNSWEpGQkVBZ0JDZ0NLRUtBZ0lDQWdJQ0ErUDhBTndNWUN5QUFJQUp5RFFBZ0JDZ0NLRUlBTndNWUN5QUJFQmthQ3lBRVFUQnFKQUFnQndzS0FDQUFRUkJxRUJrYUN5a0FJQUVFUUNBQUlBRW9BZ0FRendnZ0FDQUJLQUlFRU04SUlBQVExd0lhSUFGQkVHb1FpZzBMQzQ0bUFnWi9BWHdqQUVIZ0FHc2lCaVFBSUFFUVN5RUVJQVpCMkFCcUlBRWdBU2dDQUNnQ2VCRUFBQkRGQVNJSEVQVUJJUU1nQVNBQktBSUFLQUo0RVFBQUlRVUNRQ0FIUVFGT0JFQURRQ0FGSUFVb0FnQW9BaHdSQUFCQmYyb2lCVUVMU3cwQ0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JVRUJhdzRMQlFRR0NRY0tBUUlJQ3dNQUN5QUFRWDlxSWdWQkMwc05EZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRUUZyRGdzQ0FBTUhCQWdGQ1FZS0N3RUxJQU1nQWhBUElBUWdBaEFQS3dNQUVDME1GZ3NnQXlBQ0VBOGdCQ0FDRUE4ckF3QVFMUXdWQ3lBRElBSVFEeUFFSUFJUUR5c0RBQkF0REJRTElBTWdBaEFQQW44Z0JDQUNFQThyQXdBaUNKbEVBQUFBQUFBQTRFRmpCRUFnQ0tvTUFRdEJnSUNBZ0hnTEVHd01Fd3NnQXlBQ0VBOENmeUFFSUFJUUR5c0RBQ0lJbVVRQUFBQUFBQURnUVdNRVFDQUlxZ3dCQzBHQWdJQ0FlQXNRY2d3U0N5QURJQUlRRHdKL0lBUWdBaEFQS3dNQUlnaVpSQUFBQUFBQUFPQkJZd1JBSUFpcURBRUxRWUNBZ0lCNEN4QmxEQkVMSUFNZ0FoQVBBbjRnQkNBQ0VBOHJBd0FpQ0psRUFBQUFBQUFBNEVOakJFQWdDTEFNQVF0Q2dJQ0FnSUNBZ0lDQWZ3c1FXd3dRQ3lBRElBSVFEd0ovSUFRZ0FoQVBLd01BSWdoRUFBQUFBQUFBOEVGaklBaEVBQUFBQUFBQUFBQm1jUVJBSUFpckRBRUxRUUFMRUhZTUR3c2dBeUFDRUE4Q2Z5QUVJQUlRRHlzREFDSUlSQUFBQUFBQUFQQkJZeUFJUkFBQUFBQUFBQUFBWm5FRVFDQUlxd3dCQzBFQUN4QnhEQTRMSUFNZ0FoQVBBbjhnQkNBQ0VBOHJBd0FpQ0VRQUFBQUFBQUR3UVdNZ0NFUUFBQUFBQUFBQUFHWnhCRUFnQ0tzTUFRdEJBQXNRYlF3TkN5QURJQUlRRHdKK0lBUWdBaEFQS3dNQUlnaEVBQUFBQUFBQThFTmpJQWhFQUFBQUFBQUFBQUJtY1FSQUlBaXhEQUVMUWdBTEVGb01EQXNnQXlBQ0VBOGdCQ0FDRUE4ckF3QkVBQUFBQUFBQUFBQmlFSGNNQ3dzZ0FFRi9haUlGUVF0TERRMENRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JVRUJhdzRMQWdBREJ3UUlCUWtHQ2dzQkN5QURJQUlRRHlBRUlBSVFEeWdDQUxjUUxRd1ZDeUFESUFJUUR5QUVJQUlRRHlnQ0FMY1FMUXdVQ3lBRElBSVFEeUFFSUFJUUR5Z0NBTGNRTFF3VEN5QURJQUlRRHlBRUlBSVFEeWdDQUVFWWRFRVlkUkJzREJJTElBTWdBaEFQSUFRZ0FoQVBLQUlBUVJCMFFSQjFFSElNRVFzZ0F5QUNFQThnQkNBQ0VBOG9BZ0FRWlF3UUN5QURJQUlRRHlBRUlBSVFEeWdDQUt3UVd3d1BDeUFESUFJUUR5QUVJQUlRRHlnQ0FFSC9BWEVRZGd3T0N5QURJQUlRRHlBRUlBSVFEeWdDQUVILy93TnhFSEVNRFFzZ0F5QUNFQThnQkNBQ0VBOG9BZ0FRYlF3TUN5QURJQUlRRHlBRUlBSVFEeWdDQUt3UVdnd0xDeUFESUFJUUR5QUVJQUlRRHlnQ0FFRUFSeEIzREFvTElBQkJmMm9pQlVFTFN3ME1Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBVkJBV3NPQ3dJQUF3Y0VDQVVKQmdvTEFRc2dBeUFDRUE4Z0JDQUNFQThvQWdDNEVDME1GQXNnQXlBQ0VBOGdCQ0FDRUE4b0FnQzRFQzBNRXdzZ0F5QUNFQThnQkNBQ0VBOG9BZ0M0RUMwTUVnc2dBeUFDRUE4Z0JDQUNFQThvQWdCQkdIUkJHSFVRYkF3UkN5QURJQUlRRHlBRUlBSVFEeWdDQUVFUWRFRVFkUkJ5REJBTElBTWdBaEFQSUFRZ0FoQVBLQUlBRUdVTUR3c2dBeUFDRUE4Z0JDQUNFQThvQWdDdEVGc01EZ3NnQXlBQ0VBOGdCQ0FDRUE4b0FnQkIvd0Z4RUhZTURRc2dBeUFDRUE4Z0JDQUNFQThvQWdCQi8vOERjUkJ4REF3TElBTWdBaEFQSUFRZ0FoQVBLQUlBRUcwTUN3c2dBeUFDRUE4Z0JDQUNFQThvQWdDdEVGb01DZ3NnQXlBQ0VBOGdCQ0FDRUE4b0FnQkJBRWNRZHd3SkN5QUFRWDlxSWdWQkMwc05Dd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRUUZyRGdzQ0FBTUhCQWdGQ1FZS0N3RUxJQU1nQWhBUElBUWdBaEFQTFFBQXVCQXREQk1MSUFNZ0FoQVBJQVFnQWhBUExRQUF1QkF0REJJTElBTWdBaEFQSUFRZ0FoQVBMUUFBdUJBdERCRUxJQU1nQWhBUElBUWdBaEFQTFFBQUVHd01FQXNnQXlBQ0VBOGdCQ0FDRUE4dEFBQVFjZ3dQQ3lBRElBSVFEeUFFSUFJUUR5MEFBQkJsREE0TElBTWdBaEFQSUFRZ0FoQVBMUUFBclJCYkRBMExJQU1nQWhBUElBUWdBaEFQTFFBQUVIWU1EQXNnQXlBQ0VBOGdCQ0FDRUE4dEFBQVFjUXdMQ3lBRElBSVFEeUFFSUFJUUR5MEFBQkJ0REFvTElBTWdBaEFQSUFRZ0FoQVBMUUFBclJCYURBa0xJQU1nQWhBUElBUWdBaEFQTFFBQUVIY01DQXNnQUVGL2FpSUZRUXRMRFFvQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQlVFQmF3NExBZ0FEQndRSUJRa0dDZ3NCQ3lBRElBSVFEeUFFSUFJUUR5c0RBQkF0REJJTElBTWdBaEFQSUFRZ0FoQVBLd01BRUMwTUVRc2dBeUFDRUE4Z0JDQUNFQThyQXdBUUxRd1FDeUFESUFJUUR3Si9JQVFnQWhBUEt3TUFJZ2laUkFBQUFBQUFBT0JCWXdSQUlBaXFEQUVMUVlDQWdJQjRDeEJzREE4TElBTWdBaEFQQW44Z0JDQUNFQThyQXdBaUNKbEVBQUFBQUFBQTRFRmpCRUFnQ0tvTUFRdEJnSUNBZ0hnTEVISU1EZ3NnQXlBQ0VBOENmeUFFSUFJUUR5c0RBQ0lJbVVRQUFBQUFBQURnUVdNRVFDQUlxZ3dCQzBHQWdJQ0FlQXNRWlF3TkN5QURJQUlRRHdKK0lBUWdBaEFQS3dNQUlnaVpSQUFBQUFBQUFPQkRZd1JBSUFpd0RBRUxRb0NBZ0lDQWdJQ0FnSDhMRUZzTURBc2dBeUFDRUE4Q2Z5QUVJQUlRRHlzREFDSUlSQUFBQUFBQUFQQkJZeUFJUkFBQUFBQUFBQUFBWm5FRVFDQUlxd3dCQzBFQUN4QjJEQXNMSUFNZ0FoQVBBbjhnQkNBQ0VBOHJBd0FpQ0VRQUFBQUFBQUR3UVdNZ0NFUUFBQUFBQUFBQUFHWnhCRUFnQ0tzTUFRdEJBQXNRY1F3S0N5QURJQUlRRHdKL0lBUWdBaEFQS3dNQUlnaEVBQUFBQUFBQThFRmpJQWhFQUFBQUFBQUFBQUJtY1FSQUlBaXJEQUVMUVFBTEVHME1DUXNnQXlBQ0VBOENmaUFFSUFJUUR5c0RBQ0lJUkFBQUFBQUFBUEJEWXlBSVJBQUFBQUFBQUFBQVpuRUVRQ0FJc1F3QkMwSUFDeEJhREFnTElBTWdBaEFQSUFRZ0FoQVBLd01BUkFBQUFBQUFBQUFBWWhCM0RBY0xJQUJCZjJvaUJVRUxTdzBKQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVZCQVdzT0N3SUFBd2NFQ0FVSkJnb0xBUXNnQXlBQ0VBOGdCQ0FDRUE4ckF3QVFMUXdSQ3lBRElBSVFEeUFFSUFJUUR5c0RBQkF0REJBTElBTWdBaEFQSUFRZ0FoQVBLd01BRUMwTUR3c2dBeUFDRUE4Q2Z5QUVJQUlRRHlzREFDSUltVVFBQUFBQUFBRGdRV01FUUNBSXFnd0JDMEdBZ0lDQWVBc1FiQXdPQ3lBRElBSVFEd0ovSUFRZ0FoQVBLd01BSWdpWlJBQUFBQUFBQU9CQll3UkFJQWlxREFFTFFZQ0FnSUI0Q3hCeURBMExJQU1nQWhBUEFuOGdCQ0FDRUE4ckF3QWlDSmxFQUFBQUFBQUE0RUZqQkVBZ0NLb01BUXRCZ0lDQWdIZ0xFR1VNREFzZ0F5QUNFQThDZmlBRUlBSVFEeXNEQUNJSW1VUUFBQUFBQUFEZ1EyTUVRQ0FJc0F3QkMwS0FnSUNBZ0lDQWdJQi9DeEJiREFzTElBTWdBaEFQQW44Z0JDQUNFQThyQXdBaUNFUUFBQUFBQUFEd1FXTWdDRVFBQUFBQUFBQUFBR1p4QkVBZ0NLc01BUXRCQUFzUWRnd0tDeUFESUFJUUR3Si9JQVFnQWhBUEt3TUFJZ2hFQUFBQUFBQUE4RUZqSUFoRUFBQUFBQUFBQUFCbWNRUkFJQWlyREFFTFFRQUxFSEVNQ1FzZ0F5QUNFQThDZnlBRUlBSVFEeXNEQUNJSVJBQUFBQUFBQVBCQll5QUlSQUFBQUFBQUFBQUFabkVFUUNBSXF3d0JDMEVBQ3hCdERBZ0xJQU1nQWhBUEFuNGdCQ0FDRUE4ckF3QWlDRVFBQUFBQUFBRHdRMk1nQ0VRQUFBQUFBQUFBQUdaeEJFQWdDTEVNQVF0Q0FBc1FXZ3dIQ3lBRElBSVFEeUFFSUFJUUR5c0RBRVFBQUFBQUFBQUFBR0lRZHd3R0N5QUFRWDlxSWdWQkMwc05DQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRUUZyRGdzQ0FBTUhCQWdGQ1FZS0N3RUxJQU1nQWhBUElBUWdBaEFQTEFBQXR4QXREQkFMSUFNZ0FoQVBJQVFnQWhBUExBQUF0eEF0REE4TElBTWdBaEFQSUFRZ0FoQVBMQUFBdHhBdERBNExJQU1nQWhBUElBUWdBaEFQTEFBQUVHd01EUXNnQXlBQ0VBOGdCQ0FDRUE4c0FBQVFjZ3dNQ3lBRElBSVFEeUFFSUFJUUR5d0FBQkJsREFzTElBTWdBaEFQSUFRZ0FoQVBMQUFBckJCYkRBb0xJQU1nQWhBUElBUWdBaEFQTFFBQUVIWU1DUXNnQXlBQ0VBOGdCQ0FDRUE4c0FBQkIvLzhEY1JCeERBZ0xJQU1nQWhBUElBUWdBaEFQTEFBQUVHME1Cd3NnQXlBQ0VBOGdCQ0FDRUE4c0FBQ3NFRm9NQmdzZ0F5QUNFQThnQkNBQ0VBOHNBQUJCQUVjUWR3d0ZDeUFBUVg5cUlnVkJDMHNOQndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FGUVFGckRnc0NBQU1IQkFnRkNRWUtDd0VMSUFNZ0FoQVBJQVFnQWhBUExnRUF0eEF0REE4TElBTWdBaEFQSUFRZ0FoQVBMZ0VBdHhBdERBNExJQU1nQWhBUElBUWdBaEFQTGdFQXR4QXREQTBMSUFNZ0FoQVBJQVFnQWhBUExnRUFRUmgwUVJoMUVHd01EQXNnQXlBQ0VBOGdCQ0FDRUE4dUFRQVFjZ3dMQ3lBRElBSVFEeUFFSUFJUUR5NEJBQkJsREFvTElBTWdBaEFQSUFRZ0FoQVBMZ0VBckJCYkRBa0xJQU1nQWhBUElBUWdBaEFQTGdFQVFmOEJjUkIyREFnTElBTWdBaEFQSUFRZ0FoQVBMd0VBRUhFTUJ3c2dBeUFDRUE4Z0JDQUNFQTh1QVFBUWJRd0dDeUFESUFJUUR5QUVJQUlRRHk0QkFLd1FXZ3dGQ3lBRElBSVFEeUFFSUFJUUR5NEJBRUVBUnhCM0RBUUxJQUJCZjJvaUJVRUxTdzBHQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVZCQVdzT0N3SUFBd2NFQ0FVSkJnb0xBUXNnQXlBQ0VBOGdCQ0FDRUE4cEF3QzVFQzBNRGdzZ0F5QUNFQThnQkNBQ0VBOHBBd0M1RUMwTURRc2dBeUFDRUE4Z0JDQUNFQThwQXdDNUVDME1EQXNnQXlBQ0VBOGdCQ0FDRUE4cEF3Q25RUmgwUVJoMUVHd01Dd3NnQXlBQ0VBOGdCQ0FDRUE4cEF3Q25RUkIwUVJCMUVISU1DZ3NnQXlBQ0VBOGdCQ0FDRUE4cEF3Q25FR1VNQ1FzZ0F5QUNFQThnQkNBQ0VBOHBBd0FRV3d3SUN5QURJQUlRRHlBRUlBSVFEeWtEQUtkQi93RnhFSFlNQndzZ0F5QUNFQThnQkNBQ0VBOHBBd0NuUWYvL0EzRVFjUXdHQ3lBRElBSVFEeUFFSUFJUUR5a0RBS2NRYlF3RkN5QURJQUlRRHlBRUlBSVFEeWtEQUJCYURBUUxJQU1nQWhBUElBUWdBaEFQS1FNQVFnQlNFSGNNQXdzZ0FFRi9haUlGUVF0TERRVUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JVRUJhdzRMQWdBREJ3UUlCUWtHQ2dzQkN5QURJQUlRRHlBRUlBSVFEeTBBQUxnUUxRd05DeUFESUFJUUR5QUVJQUlRRHkwQUFMZ1FMUXdNQ3lBRElBSVFEeUFFSUFJUUR5MEFBTGdRTFF3TEN5QURJQUlRRHlBRUlBSVFEeXdBQUJCc0RBb0xJQU1nQWhBUElBUWdBaEFQTFFBQUVISU1DUXNnQXlBQ0VBOGdCQ0FDRUE4dEFBQVFaUXdJQ3lBRElBSVFEeUFFSUFJUUR5MEFBSzBRV3d3SEN5QURJQUlRRHlBRUlBSVFEeTBBQUJCMkRBWUxJQU1nQWhBUElBUWdBaEFQTFFBQUVIRU1CUXNnQXlBQ0VBOGdCQ0FDRUE4dEFBQVFiUXdFQ3lBRElBSVFEeUFFSUFJUUR5MEFBSzBRV2d3REN5QURJQUlRRHlBRUlBSVFEeTBBQUVFQVJ4QjNEQUlMSUFCQmYyb2lCVUVMU3cwRUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFWQkFXc09Dd0lBQXdjRUNBVUpCZ29MQVFzZ0F5QUNFQThnQkNBQ0VBOHZBUUM0RUMwTURBc2dBeUFDRUE4Z0JDQUNFQTh2QVFDNEVDME1Dd3NnQXlBQ0VBOGdCQ0FDRUE4dkFRQzRFQzBNQ2dzZ0F5QUNFQThnQkNBQ0VBOHZBUUJCR0hSQkdIVVFiQXdKQ3lBRElBSVFEeUFFSUFJUUR5NEJBQkJ5REFnTElBTWdBaEFQSUFRZ0FoQVBMd0VBRUdVTUJ3c2dBeUFDRUE4Z0JDQUNFQTh2QVFDdEVGc01CZ3NnQXlBQ0VBOGdCQ0FDRUE4dkFRQkIvd0Z4RUhZTUJRc2dBeUFDRUE4Z0JDQUNFQTh2QVFBUWNRd0VDeUFESUFJUUR5QUVJQUlRRHk4QkFCQnREQU1MSUFNZ0FoQVBJQVFnQWhBUEx3RUFyUkJhREFJTElBTWdBaEFQSUFRZ0FoQVBMd0VBUVFCSEVIY01BUXNnQUVGL2FpSUZRUXRMRFFNQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQlVFQmF3NExBZ0FEQndRSUJRa0dDZ3NCQ3lBRElBSVFEeUFFSUFJUUR5a0RBTG9RTFF3TEN5QURJQUlRRHlBRUlBSVFEeWtEQUxvUUxRd0tDeUFESUFJUUR5QUVJQUlRRHlrREFMb1FMUXdKQ3lBRElBSVFEeUFFSUFJUUR5a0RBS2RCR0hSQkdIVVFiQXdJQ3lBRElBSVFEeUFFSUFJUUR5a0RBS2RCRUhSQkVIVVFjZ3dIQ3lBRElBSVFEeUFFSUFJUUR5a0RBS2NRWlF3R0N5QURJQUlRRHlBRUlBSVFEeWtEQUJCYkRBVUxJQU1nQWhBUElBUWdBaEFQS1FNQXAwSC9BWEVRZGd3RUN5QURJQUlRRHlBRUlBSVFEeWtEQUtkQi8vOERjUkJ4REFNTElBTWdBaEFQSUFRZ0FoQVBLUU1BcHhCdERBSUxJQU1nQWhBUElBUWdBaEFQS1FNQUVGb01BUXNnQXlBQ0VBOGdCQ0FDRUE4cEF3QkNBRklRZHdzZ0FTQUJLQUlBS0FKNEVRQUFJUVVnQWtFQmFpSUNJQWRIRFFBTEN5QURJQVlnQUNBRklBVW9BZ0FvQWl3UkFBQW9BZ1JCUDNFZ0JTQUZLQUlBS0FJd0VRQUFJQVVnQlNnQ0FDZ0NOQkVBQUNBRklBVW9BZ0FvQWpnUkFBQkJBQkJGSWdBZ0FTQUJLQUlBS0FJQUVRQUFRUUFRMEFJaEFTQUFFRFVhQ3lBR1FlQUFhaVFBSUFFTExBRUJmeUFBSUFBb0FnUVFqUTBnQUNnQ0FBUkFJQUFRSXhvZ0FDZ0NBQ0VCSUFBUWlBTWFJQUVRS2dzTENnQWdBRUVZZEVFWWRRc1FBQ0FBSUFFM0F3Z2dBRUlBTndNQUN4Y0FJQUFnQWpZQ0hDQUFJQUUyQWhRZ0FDQUJOZ0lZQzVrQkFRRi9Jd0JCTUdzaUF5UUFJQU1nQWpZQ0tDQURJQUUyQWl3Z0EwRVlhaUFBQW44Z0F5QURLQUlzRUNJYUlBTWdBeWdDS0RZQ0VDQURDeERqRmlBRElBTW9BaGcyQWlBZ0F4Q3lBaUFBUVJ4cUlnRVFGaUFES0FJb0lnSkJBV3BKQkVBZ0F5QUFRVEJxTmdJQUlBRWdBa0hrQUdvZ0F4RGlGZ3NnQTBFZ2FoQkVJUUFnQVNBREtBSW9FQkVnQURZQ0FDQURRVEJxSkFBTENRQWdBQ0FCRUpvTkN4VUFJQUFnQXhEdEJSb2dBQ0FCSUFJUThCWWdBQXQ4QVFGL0FrQUNRQ0FDSUFJb0FnQW9Bb0FCRVFBQUlnQkJjMnBCQWs4RVFDQUFSUTBDSUFCQkVVY05BUXNnQVVFRVJnMEFJQUZCdGdSSElBSWdBaWdDQUNnQ2dBRVJBQUJCRGtkeURRRWdBaUFDS0FJQUtBSVFFUUFBUlEwQklBSWdBaWdDQUNnQ0VCRUFBQ2dDYUVHeEJFY05BUXRCQVNFREN5QURDd2dBSUFBb0FnQkZDekFBQWtCQmZ5QUFLQUpNRUtnRFJRUkFJQUFvQWt3aEFBd0JDeUFBSUFBUThSWWlBRFlDVEFzZ0FFRVlkRUVZZFFzUEFDQUFJQUFvQWdoQmZHb1FqUTBMQ2dBZ0FDZ0NDRUY4YWd1dkFnRUVmeU1BUVRCcklnTWtBQUpBSUFBb0FnUWdBQ2dDQUVjTkFDQUFLQUlJSUFBUUl5Z0NBRWtFUUNBQUVDTWhCQ0FBSUFBb0FnUWdBQ2dDQ0NJQ0lBSWdCQ2dDQUNBQ2EwRUNkVUVCYWtFQ2JVRUNkQ0lFYWhEK0JUWUNCQ0FBSUFBb0FnZ2dCR28yQWdnTUFRc2dBeUFBRUNNb0FnQWdBQ2dDQUd0QkFYVTJBaGdnQTBFQk5nSXNJQU5CR0dvZ0EwRVlhaUFEUVN4cUVGSW9BZ0FpQWlBQ1FRTnFRUUoySUFBUUl4RHlBaUVDSUFOQkVHb2dBQ2dDQkJBeElRUWdBMEVJYWlBQUtBSUlFREVoQlNBQ0lBUW9BZ0FnQlNnQ0FCRDhCaUFBSUFJUUxpQUFRUVJxSUFKQkJHb1FMaUFBUVFocUlBSkJDR29RTGlBQUVDTWdBaEFqRUM0Z0FoQ1JBd3NnQUJBaklBQW9BZ1JCZkdvZ0FSRDVBU0FBSUFBb0FnUkJmR28yQWdRZ0EwRXdhaVFBQ3k0QkFYOUJBU0VCQWtBZ0FFSEsvd2dRalFFTkFDQUFRZEdDQ1JDTkFRMEFJQUJCOHY4SUVJMEJJUUVMSUFFTHNRSUJCSDhqQUVFd2F5SURKQUFDUUNBQUtBSUVJQUFvQWdCSERRQWdBQ2dDQ0NBQUVDTW9BZ0JKQkVBZ0FCQWpJUVFnQUNBQUtBSUVJQUFvQWdnaUFpQUNJQVFvQWdBZ0FtdEJBblZCQVdwQkFtMUJBblFpQkdvUS9nVTJBZ1FnQUNBQUtBSUlJQVJxTmdJSURBRUxJQU1nQUJBaktBSUFJQUFvQWdCclFRRjFOZ0lZSUFOQkFUWUNMQ0FEUVJocUlBTkJHR29nQTBFc2FoQlNLQUlBSWdJZ0FrRURha0VDZGlBQUtBSVFFUElDSVFJZ0EwRVFhaUFBS0FJRUVERWhCQ0FEUVFocUlBQW9BZ2dRTVNFRklBSWdCQ2dDQUNBRktBSUFFUHdHSUFBZ0FoQXVJQUJCQkdvZ0FrRUVhaEF1SUFCQkNHb2dBa0VJYWhBdUlBQVFJeUFDRUNNUUxpQUNFSkVEQ3lBQUtBSVFJQUFvQWdSQmZHb2dBUkQ1QVNBQUlBQW9BZ1JCZkdvMkFnUWdBMEV3YWlRQUM2a0NBUVovSXdCQk1Hc2lBeVFBQWtBZ0FDZ0NDQ0FBRUNNb0FnQkhEUUFnQUVFSWFpRUVJQUJCQkdvaEJTQUFLQUlFSWdJZ0FDZ0NBQ0lHU3dSQUlBUWdBaUFFS0FJQUlBSWdBaUFHYTBFQ2RVRUJha0YrYlVFQ2RDSUVhaENSQkRZQ0FDQUZJQVVvQWdBZ0JHbzJBZ0FNQVFzZ0F5QUFFQ01vQWdBZ0FDZ0NBR3RCQVhVMkFoZ2dBMEVCTmdJc0lBTkJHR29nQTBFWWFpQURRU3hxRUZJb0FnQWlBaUFDUVFKMklBQW9BaEFROGdJaEFpQURRUkJxSUFBb0FnUVFNU0VHSUFOQkNHb2dBQ2dDQ0JBeElRY2dBaUFHS0FJQUlBY29BZ0FRL0FZZ0FDQUNFQzRnQlNBQ1FRUnFFQzRnQkNBQ1FRaHFFQzRnQUJBaklBSVFJeEF1SUFJUWtRTUxJQUFvQWhBZ0FDZ0NDQ0FCRVBrQklBQWdBQ2dDQ0VFRWFqWUNDQ0FEUVRCcUpBQUxFZ0FnQUJBaktBSUFJQUFvQWdoclFRSjFDMElCQVg4akFFRVFheUlFSkFBZ0JDQUNLUUlJTndNSUlBUWdBaWtDQURjREFDQUFJQUVnQkJEOERDSUFJQU1nQUNnQ0FDZ0NkQkVCQUNBRVFSQnFKQUFnQUFzTUFDQUJJQUl0QUFBNkFBQUxDZ0FnQVNBQ0VQOEJHZ3NyQUNBQkVNSUJJUUVnQUJDZEJTQUNSZ1JBSUFBZ0FUWUNKQXNnQUNnQ0dDQUNRUVIwYWlBQk5nSUFDeFlBSUFBb0FnQWlBRVVFUUVISnN4RVBDeUFBRUJNTEtnQWdBQkN1RFNBQUtBSUFCRUFnQUNBQUtBSUFFSjBOSUFBUU94b2dBQ2dDQUJvZ0FCQzZCQm9MQzVJTUFReC9Jd0JCOEFocklnVWtBQ0FCUVFBNkFCQUNRQUpBQWtBQ1FBSkFBa0FnQUVFVWFpSUtJQUZCSUdvaUJCRE9BeUlIUWMxK2FpSUdRUUpMQkVBZ0IwVU5BU0FBSUFjUThRVWlDVVVOQVVFQUlRUWdDUzBBSkNJR1FRSnhEUVpCQUNBR1FRUnhJZ1lnQWhzTkJpQUdRUUFnQWhzTkFrRTBFQ1lpQWlBQUVLNFhJUXNnQlVIb0NHb2dBU2tDQ0RjREFDQUZJQUVwQWdBM0ErQUlJQUlnQ1RZQ0RDQUpMUUFrUVFGeFJRMEVJQU5GSUFBZ0JVRTRhaENlQlNJR0VGTWlCRUVLUjNKRkJFQURRQ0FBSUFZUVV5SUVRUXBHRFFBTEN5QUVRU2hHRFFNZ0FDQUVJQVlROFFZZ0N5QUNLQUlBS0FJRUVRVUFRUUFoQkF3R0N3SkFBa0FDUUNBR1FRRnJEZ0lCQWdBTElBRWdBQ2dDY0JEWEFTZ0NDQ0lDTmdJWUlBVWdBallDQUNBRVFZRUlRYlRBRVNBRkVDY2FJQUJCbUFFZ0FSRHhCa0VDSVFRTUJ3c2dBQ2dDY0JEWEFTZ0NBQVJBSUFBb0FuQWlBaUFCUVFGQnBMd1JRYmZBRVNBQ0tBSUFLQUlZRVFnQUN5QUJJQUFvQW5BUTF3RW9BZ1EyQWhnZ0JVRTRhaUFCUVFFUTBRY2dCU0FGUVRocUVCTTJBaEFnQkVHQkNFR1B1eEVnQlVFUWFoQW5HaUFGUVRocUVDQWFJQUJCbUFFZ0FSRHhCa0VDSVFRTUJnc2dBU0FBS0FKd0tBSVFJZ0kyQWhnZ0JTQUNOZ0lnSUFSQmdRaEJ0TUFSSUFWQklHb1FKeG9nQUVHWUFTQUJFUEVHUVFJaEJBd0ZDMEVBSVFRZ0FrVU5CQXRCREJBbUlnRWlBaUFBRUxnRUlBSkJrTUlSTmdJQUlBQWdBUkM1QkVFRElRUU1Bd3NnQWtFUWFpSU1JQUlvQWd3UUZoQzNCaUFDS0FJTUVCWUVRRUVBSVFRRFFFRVVFQ1lpQmhEcUNCb2dEQ0FFRUJFZ0JqWUNBQ0FFUVFGcUlnUWdBaWdDREJBV1NRMEFDd3NnQWtFZ2FpSU9JQUlvQWd3UUZoQzNCaUFDS0FJTUVCWUVRRUVBSVFRRFFDQU9JQVFRRVVFQU5nSUFJQVJCQVdvaUJDQUNLQUlNRUJaSkRRQUxDMEVBSVFZRFFDQUZRU2hxRUpNQkdnTkFJQUFnQVJCVElnUkJmWEZCZlVZRVFDQUFLQUp3SWdBZ0JVSGdDR3BCejhBUlFlWEFFU0FLSUFjUXBRSkJBQ0FBS0FJQUtBS29BUkVDQUF3RUN3SkFJQVJCQ2tjRVFDQUVRU05IRFFFZ0FDZ0NjQ0lBSUFGQm1NRVJRZVhBRVNBS0lBY1FwUUpCQUNBQUtBSUFLQUtvQVJFQ0FBd0ZDeUFERFFFZ0FDZ0NjQ0lBSUFWQjRBaHFRZlhBRVVIbHdCRWdDaUFIRUtVQ1FRQWdBQ2dDQUNnQ3FBRVJBZ0FNQkFzQ1FBSkFBa0FDUUFKQVFRQWdCRUVwUnlBQ0tBSU1FQlliRFFBQ1FBSkFJQVZCS0dvUWhBUkZCRUFnQkVGWWFpSUlRUVJMQkVBZ0JFSDdBRWNOQnd3R0N5QUlRUUZyRGdRQ0JnWURBUXNnQkVIN0FFWU5CQ0FFUVNoSERRVUxJQVZCS1RvQUp5QUZRU2hxSUFWQkoyb1FyUmNNQlFzZ0JpQUNLQUlNRUJaQkFVY2dEWEpxSVFZZ0JVRW9haERuQ0F3QkN5QUZRU2hxRU9jSUlBWkJBV29pQmlBQ0tBSU1FQlpKRFFVTEFrQUNRQ0FHSUFJb0Fnd1FGa2tFUUNBQUtBSndJZ1FnQlVIZ0NHcEJwOEVSUWVYQUVTQUtJQWNRcFFKQkFDQUVLQUlBS0FLb0FSRUNBQXdCQ3dKL0lBUkJmMGNFUUNBRVFTbEdEUUpCQUNFR0EwQkJBQ0FFUVNsSElnZ2dCa0VCVG5KRkRRSWFJQVlnQmtGL2FpQUVRZjBBUjBFQUlBZ2JHeUVHSUFBZ0FSQlRJZ1JCK3dCSFFRQWdCRUVvUnh0RkJFQWdCa0VCYWlFR0N5QUVRWDlIRFFBTEMwRUJDeUVJSUFBb0FuQWhCQ0FLSUFjUXBRSWhCaUFFS0FJQUtBS29BU0VISUFnTkFTQUVJQVZCNEFocVFiM0JFVUhsd0JFZ0JrRUFJQWNSQWdBTElBSW9BZ3dRRmtVTkJrRUFJUVFEUUNBQUlBd2dCQkFSS0FJQUlBRWdBeENzRnlFR0lBNGdCQkFSSUFZMkFnQWdCRUVCYWlJRUlBSW9BZ3dRRmtrTkFBc01CZ3NnQkNBRlFlQUlha0hQd0JGQjVjQVJJQVpCQUNBSEVRSUFJQXNnQWlnQ0FDZ0NCQkVGQUVFQklRUU1Cd3NnQUNnQ2NCb0xJQVZCS0dvUWhBUkZEUUFnQkNBRktBSXNRWDlxTEFBQVJ3MEFJQVVvQWl4QmYyb2hEU0FGUVNocUlnZ1FoQVFoRHlBSUlBMFFuUTBnQ0NBUEVPVVdDeUFNSUFZUUVTZ0NBQ0FFSUFFUTh3WkJBU0VOREFBQUN3QUFDd0FMSUFBZ0FoQzVCRUVDSVFRZ0NTQUpMUUFrUVFKeU9nQWtJQWxCRUdvUWdRY01BUXNnQ3lBQ0tBSUFLQUlFRVFVQUlBVkJLR29RNXdoQkFTRUVDeUFGUWZBSWFpUUFJQVFMaEFNQkEzOENRQ0FBSUFBb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FLTUFSRUFBQVJBUVFBaEFpQUFLQUpvUVlOL2FpSUFRVGhQRFFGQ2c1akFnWUNBZ1BnQUlBQ3RpS2RCQVhFUEN5QUFJQUFvQWdBb0FsQVJBQUFpQVFSQVFRQWhBaUFCSUFFb0FnQW9Bc0FCRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9Bb3dCRVFBQURRRWdBU0FCS0FJQUtBTEVBUkVBQUNJQklBRW9BZ0FvQW5nUkFBQWlBU0FCS0FJQUtBS01BUkVBQUEwQkN3SkFJQUFvQW1oQmVtb2lBRUd1QVVzTkFFRUJJUUlnQUVFQ2F3Nm1BUUFCQUFBQUFBQUJBUUVCQVFFQkFRQUFBQUVCQVFFQkFRRUJBQUFBQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFBQUFBQkFRRUJBUUVCQVFFQkFRRUJBUUFBQUFBQUFBRUJBUUVCQVFFQkFRRUJBUUVCQUFBQUFBQUFBUUVCQVFFQkFRRUJBUUVCQVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQVFFQkFRRUJBUUVCQUFBQkFRRUJBQUVBQUFBQkMwRUFJUUlMSUFJTEVRQWdBQkNUQVJvZ0FFRUFOZ0lRSUFBTEt3RUJmeUFBSUFFUXpnTWlBa1VFUUNBQUlBQW9BaXdpQWtFQmFqWUNMQ0FBSUFFZ0FoRFZDQXNnQWdzS0FDQUFFSm9DR2lBQUMzZ0JBWDhDUUNBQlJRMEFJQUVnQVNnQ0FDZ0NIQkVBQUFSQUlBQWdBU0FCS0FJQUtBSWNFUUFBRU1JV0R3c2dBU0FCS0FJQUtBSWdFUUFBQkVBZ0FDQUJJQUVvQWdBb0FpQVJBQUFRdnhZUEN5QUJJQUVvQWdBb0FoZ1JBQUJGRFFBZ0FDQUJJQUVvQWdBb0FoZ1JBQUFRdkJZaEFnc2dBZ3Q2QVFKL1FmZ0FFRVlpQkNJRklBQVE4QVlnQlVHOGxBazJBZ0FnQlNFQUlBTW9BZ2hGQkVBZ0F5QUJJQUVvQWdBb0FnQVJBQUFpQlNrQ0FEY0NBQ0FESUFVcEFnZzNBZ2dMSUFRZ0F5QUVLQUlBS0FJRUVRRUFJQUFnQVNBRUtBSUFLQUs0QVJFQkFDQUFJQUlnQkNnQ0FDZ0N2QUVSQVFBZ0FBc3BBQ0FCQkVBZ0FDQUJLQUlBRU84SUlBQWdBU2dDQkJEdkNDQUFFTmNDR2lBQlFSQnFFTElDQ3dzc0FRRi9JQUFnQUNnQ0FDZ0NWQkVBQUJEeEZ5SUJJQUFRaGdRaUFHcEJmMnBCQUNBQWEzRWdBU0FBR3d0UEFRRi9Jd0JCNEFCcklnQWtBQ0FBUWRnQWFrRUJFUFVCSWdOQkFCQVBJQUVRV2lBRElBQkJDMEVDUVFGQkFFRUFRUUFRUlNJRElBSkJBUkRRQWlFQ0lBTVFOUm9nQUVIZ0FHb2tBQ0FDQ3hZQUlBRWdBaWtDQURjQ0FDQUJJQUlwQWdnM0FnZ0xTd0VCZnlNQVFSQnJJZ0lrQUFKQUlBQW9BZ1FnQUJBYktBSUFSd1JBSUFBUUd5QUFLQUlFSUFFUXl3MGdBQ0FBS0FJRVFSaHFOZ0lFREFFTElBQWdBUkQ2RndzZ0FrRVFhaVFBQzRBQkFBSkFJQUFnQVVFTWJHcEJvQVpxSWdFUWtnSUVRRUVBSVFBRFFDQUNJQUVnQUJCckVQc1hEUUlDUUNBQ0lBRWdBQkJyRUprRlJRMEFJQU1nQXlnQ0FDZ0NIQkVBQUNBQklBQVFheWdDRUVZTkFDQUVRUUU2QUFBTUF3c2dBRUVCYWlJQUlBRVFrZ0pKRFFBTEMwRi9Ed3NnQWlBQklBQVFheENtQVNnQ0FBc3NBUUYrSUFBZ0FTa0NBRGNDQUNBQ0tRSUFJUVVnQUNBRU5nSVVJQUFnQXpZQ0VDQUFJQVUzQWdnZ0FBc05BQ0FBTFFBSVFRUnhRUUoyQ3prQkFYOGdBQ0FCUVJScUlnSVF5Z0VnQVJDL0JDQUNFQnN0QUFkQkIzRkhCRUFnQUVIOGt4RVFrZ0VnQUNBQkVMOEVFSjRIRUpJQkN3c2dBUUYvSUFBb0FnQWhBU0FBUVFBMkFnQWdBUVJBSUFBUUpTQUJFTFVZQ3dzMkFRRi9RWXdCRUVZaUJpQUFJQUVnQWhEVUdDRUFJQVlnQlNBR0tBSUFLQUlFRVFFQUlBQWdBeERRRFNBQUlBUTJBb2dCSUFBTEpnQWdBQ0FBS0FJRUVPY1lJQUFvQWdBRVFDQUFLQUlRR2lBQUtBSUFHaUFBRUlzSkdnc0xhUUVDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWdBUkNqRGlFRkN5QUFJQVUyQWdBZ0FDQUZJQUpCREd4cUlnSTJBZ2dnQUNBQ05nSUVJQUFRSXlBRklBRkJER3hxTmdJQUlBUkJFR29rQUNBQUMzY0FJQUJCMkpJUE5nSUFJQUJCQURZQ1VDQUFRZ0EzQWp3Z0FFSUFOd0pFSUFBZ0FDZ0NCRUdBZ0lCK2NTQUVRUWgwUVlBZWNTQUJRZjhCY1hKeU5nSUVJQUJCekFCcUVJb0RJQUJCQ0dvUWlRTWdBQ0FEUVJoMFFZQ0FnRGh4SUFKQlAzRnlyU0FBS1FJTVFzRC8vMGVEaERjQ0RDQUFDeEFBSUFBb0FnQWdBU2dDQUd0QkRHMExFZ0FnQUJBaktBSUFJQUFvQWdCclFRUjFDeWtBSUFFRVFDQUFJQUVvQWdBUS93Z2dBQ0FCS0FJRUVQOElJQUFRMXdJYUlBRkJFR29Rc2dJTEN3b0FJQUJCQVRvQWtBRUxFd0FnQUNnQ0JDQUFLQUlBS0FJQWNVRUFSd3NOQUNBQUxRQUNRUUp4UVFGMkN3b0FJQUF0QUFKQkFYRUxCZ0FRZ2dFQUN4SUFJQUVRRXlBQkVCTWdBUkFmYWhDekdRc2dBUUYvSUFCQm5Nc1BOZ0lBSUFBb0FnUWlBUVJBSUFFUW1nY1FLZ3NnQUFza0FDQUJCRUFnQUNBQktBSUFFSWNKSUFBZ0FTZ0NCQkNIQ1NBQUVDVWFJQUVRS2dzTExBQWdBUVJBSUFBZ0FTZ0NBQkNJQ1NBQUlBRW9BZ1FRaUFrZ0FCQWxHaUFCUVJCcUVMSUNJQUVRS2dzTExBQWdBUVJBSUFBZ0FTZ0NBQkNKQ1NBQUlBRW9BZ1FRaVFrZ0FCQWxHaUFCUVJCcUVQRU5JQUVRS2dzTFVBRUJmeUFBRU1VRUlBQVFHeUFBS0FJQUlBQW9BZ1FnQVVFRWFpSUNFSVVHSUFBZ0FoQXVJQUJCQkdvZ0FVRUlhaEF1SUFBUUd5QUJFQ01RTGlBQklBRW9BZ1EyQWdBZ0FDQUFFQllRclFVTEVnQWdBQkFqS0FJQUlBQW9BZ0JyUVF4dEN5MEJBWDhnQUNBQUtBSUVFTVlaSUFBb0FnQUVRQ0FBS0FJUUdpQUFLQUlBSVFFZ0FCQ0xDUm9nQVJBcUN3dUNBUUVEZnlNQVFSQnJJZ1FrQUNBQUVJOEhJQUpQQkVBQ1FDQUNRUXBOQkVBZ0FDQUNFTlFCSUFBaEF3d0JDeUFDRU9RQ0lRTWdBQ0FBRUNNZ0EwRUJhaUlGRVBvRklnTVE0UUVnQUNBRkVPa0JJQUFnQWhDOEFRc2dBeUFCSUFJUTZBRWdCRUVBT2dBUElBSWdBMm9nQkVFUGFoQ1VBU0FFUVJCcUpBQVBDeEJ1QUFzZ0FRRi9JQUFvQWdBaEFTQUFRUUEyQWdBZ0FRUkFJQUVFUUNBQkVDb0xDd3NPQUNBQUVLUUZJQUFnQVRZQ0JBdFNBUUYvSUFFUUZnUkFBMEFnQUNBQklBSVFFUkNBRGlBQUlBQW9BaFJCQVdvMkFoUWdBa0VCYWlJQ0lBRVFGa2tOQUFzTElBQWdBU2dDRERZQ0RDQUFJQUV0QUJBNkFCQWdBQ0FCTFFBUk9nQVJDdzhBSUFBZ0FDZ0NCRUY4YWhDV0J3c0tBQ0FBUVFFNkFKMEVDNmNCQVFKL0lBQkI5TG9QTmdJQUlBQW9BdmdCSWdFRVFDQUJFSllKRUNvTElBQW9BdndCSWdFRVFDQUJJQUVvQWdBb0FnUVJCUUFMUVFBaEFRTkFBa0FnQUNBQmFpMEE2QUZGRFFBZ0FDQUJRUUowYWlnQ3NBRWlBa1VOQUNBQ0VKb0pFQ29MSUFGQkFXb2lBVUVPUncwQUN5QUFLQUlFSWdFRVFDQUJFSm9IRUNvTElBQkJzQUZxSVFFZ0FFRUlhaUVDQTBBZ0FVRjBhaUlCRUpZT0lBRWdBa2NOQUFzZ0FBczNBUUYvSXdCQkVHc2lBaVFBSUFBUStBVkJvOGdQRUxZQ0dpQUNJQUVRNndjZ0FCRDRCU0FDRU1FRUlBSVFJQm9nQWtFUWFpUUFDd29BSUFBZ0FVRUNkR29MRVFBZ0FFRVFhaERtQWlBQUVPWUNJQUFMWVFFQmZ5QUFRZVM2RHpZQ0FDQUFLQUlVSWdFRVFDQUJFSllKRUNvTElBQW9BZ3dpQVFSQUlBRWdBU2dDQUNnQ0JCRUZBQXNnQUNnQ0VDSUJCRUFnQVJDYUNSQXFDeUFBS0FJRUlnRUVRQ0FCRUpvSEVDb0xJQUJCTEdvUUlCb2dBQXNSQUNBQUVKa09JQUJCRUdvUW1RNGdBQXNKQUNBQUVPY1pJQUFMaWdJQkFuOGdBRUdBQjJvUW1nNGdBRUgwQm1vaUFTQUJFRHdRaVFrZ0FFSG9CbW9RSUJvZ0FFSGNCbW9RSUJvZ0FFSFFCbW9pQVJEekRTQUFRYUFHYWlFQ0EwQWdBVUYwYWlJQkVKVUhJQUVReEJrZ0FTQUNSdzBBQ3lBQVFaUUdhaUlCRVBjRklBRW9BZ0FFUUNBQklBRW9BZ0FRdnhrZ0FSQWJHaUFCS0FJQUlRSWdBUkM1QXhvZ0FoQXFDeUFBUVlBR2FoREFCQ0FBUWVnRmFoRFJBeUFBUWRRRmFoRHpEU0FBUWNBRmFoQ2FEaUFBUWZnRWFpSUNRY2dBYWlFQkEwQWdBVUYwYWlJQklBRVFQQkNIQ1NBQklBSkhEUUFMSUFCQndBUnFJZ0VRbFFjZ0FSRERHU0FBUWNRQWFoRHlEU0FBUVJ4cUVNSVpJQUJCRUdvUUlCb2dBRUVFYWhBZ0dpQUFDNlVFQVFGL0l3QkJFR3NpQkNRQUlBQWdBVFlDQUNBQVFRUnFFRTRhSUFCQkVHb1FUaG9nQUVFY2FoQ1pDUm9nQUNBQ05nSXNJQUFnQXpZQ0tDQUFRVEJxRUp3T0dpQUFRUUEyQWtBZ0FFSEVBR29RblFRZ0FFRUFPZ0RjQXlBQVFnQTNBdFFESUFCQ0FEY0N6QU1nQUVFQU9nQzhCQ0FBUVFBMkFyZ0VJQUJCQURvQXRBUWdBRUVBTmdLd0JDQUFRbjgzQW93RUlBQkJBRG9BaUFRZ0FFRUFOZ0tFQkNBQVFZNjhEellDZ0FRZ0FFR0l2QTgyQXZ3RElBQkNBRGNDbEFRZ0FFRUFPd0djQkNBQVFnQTNBcUFFSUFCQ0FEY0Fwd1FnQUVIQUJHb1FNQ0VDSUFCQy8vLy8vdzgzQXRnRUlBQkNBRGNDMEFRZ0FFRUFPZ0RPQkNBQVFRQTdBY3dFSUFCQitBUnFJZ0ZCeUFCcUlRTURRQ0FCRUprSFFReHFJZ0VnQTBjTkFBc2dBRUhBQldvUU1Cb2dBRUVBTmdEUEJTQUFRUUEyQXN3RklBQkIxQVZxRUowRUlBQkJBRFlBNHdVZ0FFRUFOZ0xnQlNBQVFlZ0ZhaENXQVJvZ0FFRUFOZ0w4QlNBQVFZQUdhaENXQVJvZ0FFR1VCbW9RTUJvZ0FFSFFCbW9oQVNBQVFhQUdhaUVEQTBBZ0F4QXdRUXhxSWdNZ0FVY05BQXNnQUVIUUJtb1FuUVFnQUVIY0Jtb1FUaG9nQUVIb0Jtb1FUaG9nQUVIMEJtb1FtUWNhSUFCQmdBZHFFREFhSUFCQmZ6WUMrQU1nQUVKL053THdBeUFBUVFBNkFPNERJQUJCQURzQjdBTWdBRUVCTmdMb0F5QUFRb0dBZ0lBUU53TGdBeUFDRVBNWklBUkJBRFlDRENBQVFlQUVha0VHSUFSQkRHb1ExUmtnQkVFUWFpUUFJQUFMS3dBZ0FCQVdJQUFvQWhSTEJFQURRQ0FBUVFBUXd3UWdBQkFXSUFBb0FoUkxEUUFMQ3lBQUVEWWdBQXMvQVFGL0l3QkJFR3NpQVNRQUlBRWdBQ2dDRURZQ0NDQUJJQUFvQWhnMkFnd2dBRUVjYWlBQlFRaHFFSVFCSUFBZ0FDZ0NBRFlDRUNBQlFSQnFKQUFMUUFFQmZ5QUNLQUlBQkVBRFFDQUNJQUFvQWdBb0FnQWdBQ2dDQkNnQ0FCRDZHUVJBSUFFZ0FoRDFHUXNnQWlnQ0dDRURJQUpCR0dvaEFpQUREUUFMQ3dzTUFDQUFLQUlBUVNRUWxBSUxJQUVCZnlBQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQUVDVWdBUkNGR2dzTGtnRUJBMzhnQUJBOElRTWdBQkFsSVFVQ1FDQURCRUFDUUFOQUFrQUNmeUFBRUNNZ0FpQURRUkJxSWdRUWp3UUVRQ0FES0FJQVJRMEdJQU1NQVFzZ0FCQWpJQVFnQWhDUEJFVU5BeUFEUVFScUlRUWdBeWdDQkVVTkFTQUVJZ01MSVFVZ0F5Z0NBQ0VEREFFTEN5QUJJQU0yQWdBZ0JBOExJQUVnQXpZQ0FDQUZEd3NnQUJBbElRTUxJQUVnQXpZQ0FDQURDdzhBSUFBUUV5QUFFQjhnQVJDSkdnc01BQ0FBSUFFUW1BSkJBWE1MTEFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ0FpQUNFSWNhSUFBZ0EwRUlhaERVQkNBRFFSQnFKQUFMRmdBZ0FDQUJFUDhCR2lBQUlBSW9BZ0EyQWhBZ0FBc3NBQ0FBS0FJQUdpQUFLQUlBSUFBUTFnSkJBM1JxR2lBQUtBSUFHaUFBS0FJQUlBQVFtZ0ZCQTNScUdnc0xBQ0FBSUFFZ0FoQzJEZ3RMQVFKL0l3QkJFR3NpQXlRQUlBTkJDR29nQWhDeENTQUFJQU5CQ0dvUXNBa2lBQ0FCSUFFUW9BRWlBU0FCSUFJUUh5SUVhaEN2Q1NBQUlBSVFFeUFFRUtBSEdpQURRUkJxSkFBTE53RUJmMEVCSVFFQ1FDQUFFTTBFRFFBZ0FCQ0dBdzBBSUFBUWxnSU5BQ0FBRU9rQ0RRQWdBQkNyQlEwQUlBQVEyUU1oQVFzZ0FRdk9BZ0VEZnlNQVFTQnJJZ01rQUNBRFFSQnFFTlVCSVFJQ1FDQUJFTWdFQkVBZ0FrSGluUThRRWhvZ0FDQUNFTEFEREFFTElBRXRBQUJCZldvaUJFSC9BWEZCQ0UwRVFDQUNJQVJCR0hSQkdIVkJBblJCcUxVUGFpZ0NBQkFTR2dzZ0FnSi9JQUVRcUFVRVFFR0luZzlCa0o0UElBRVFwQWNiREFFTFFlS2REMEdXbmc4Z0FSQ29BaHNMRUJJYUlBRVFwd1VFUUNBQ1FaNmVEeEFTR2lBQUlBSVFzQU1NQVFzZ0FSQ0FCZ1JBSUFOQnFwNFBJQUlRcUFrZ0FDQURRYTJlRHhEWUF5QURFQmthREFFTElBRXRBQUZCZjJvaUJFSC9BWEZCQmswRVFDQUNJQVJCR0hSQkdIVkJBblJCekxVUGFpZ0NBQkFTR2dzZ0FSQ0tBUVJBSUFKQjRKNFBFQklhQ3lBQktBSUFJZ1JCZ0lBRWNRUi9JQUpCNDU0UEVCSWFJQUVvQWdBRklBUUxRWUNBQ0hFRVFDQUNRZW1lRHhBU0dnc2dBQ0FDRUxBREN5QUNFQmthSUFOQklHb2tBQXNUQUNBQUtBSWdRWUNBNEE5eFFZQ0E0QTlIQ3hvQVFkK2FEMEhzbWc5Qjlwb1BJQUJCQVVZYklBQkJBa1liQ3hNQUlBQVE2Z0VnQUVFTWFpQUJFSzBDSUFBTC93RUJBMzhqQUVFUWF5SUlKQUFnQUJDUEJ5SUpJQUZCZjNOcUlBSlBCRUFnQUJBVElRb0NmeUFKUVFGMlFYQnFJQUZMQkVBZ0NDQUJRUUYwTmdJSUlBZ2dBU0FDYWpZQ0RDQUlRUXhxSUFoQkNHb1FVaWdDQUJEa0Fnd0JDeUFKUVg5cUN5RUNJQUFRSXlBQ1FRRnFJZ2tRK2dVaEFpQUVCRUFnQWlBS0lBUVE2QUVMSUFZRVFDQUNJQVJxSUFjZ0JoRG9BUXNnQXlBRmF5SURJQVJySWdjRVFDQUNJQVJxSUFacUlBUWdDbW9nQldvZ0J4RG9BUXNnQVVFS1J3UkFJQUFRSXhvTElBQWdBaERoQVNBQUlBa1E2UUVnQUNBRElBWnFJZ0FRdkFFZ0NFRUFPZ0FISUFBZ0Ftb2dDRUVIYWhDVUFTQUlRUkJxSkFBUEN4QnVBQXVDQVFFQ2Z5TUFRUkJySWdRa0FDQUFFSThISUFOUEJFQUNRQ0FEUVFwTkJFQWdBQ0FDRU5RQklBQWhBd3dCQ3lBREVPUUNJUU1nQUNBQUVDTWdBMEVCYWlJRkVQb0ZJZ01RNFFFZ0FDQUZFT2tCSUFBZ0FoQzhBUXNnQXlBQklBSVE2QUVnQkVFQU9nQVBJQUlnQTJvZ0JFRVBhaENVQVNBRVFSQnFKQUFQQ3hCdUFBc1JBQ0FBSUFFUXJRa2FJQUFRNmdFZ0FBc0xBQ0FBSUFFUUl4Qm5HZ3UwQVFFRWZ3SkFBa0FnQVMwQUFFRWlSdzBBSUFFaEJBTkFBa0FnQkVFQmFpRUZBa0FnQkN3QUFTSURRZHNBVEFSQUlBTkJJa1lOQWlBRFFTZEdEUVFnQTBFc1J3MEJEQVFMSUFOQjNBQkhEUUJCM0FBaEF5QUVMUUFDUWR3QVJ3MERJQVJCQW1vaEJRc2dBQVJBSUFBZ0Ftb2dBem9BQUFzZ0FrRUJhaUVDSUFVaEJBd0JDd3NnQUVVTkFTQUFJQUpxUVFBNkFBQWdBZzhMSUFCRkJFQWdBUkRiRGc4TElBQWdBUkNFR2lBQWF5RUNDeUFDQ3lBQUlBRWdBaWtDQURjQ0FDQUJJQUlvQWhBMkFoQWdBU0FDS1FJSU53SUlDMkVCQTM4akFFRVFheUlDSkFBZ0FpQUFJQUVRc0FVMkFnZ2dBaUFBRUg0MkFnQkJBQ0VBQWtBZ0FrRUlhaUFDRUlnQlJRMEFJQUpCQ0dvUVZ5SURFUDBGSWdSQmYwWU5BQ0FESUFRZ0FSQ25EZzBBUVFFaEFBc2dBa0VRYWlRQUlBQUxJQUFnQUVFQk9nQVFJQUJCQURZQ0RDQUFJQUUyQWdRZ0FFR3dsQTgyQWdBTERnQWdBQ0FCRUJNUXdnRTJBa1FMWEFFQ2Z5TUFRUkJySWdJa0FFSHBzQTlCQ1VFQlFZanhFU2dDQUNJREVQY0NHaUFBSUFGTkJFQURRQ0FDSUFBdUFRQTJBZ0FnQTBIenNBOGdBaERNQWlBQVFRSnFJZ0FnQVUwTkFBc0xRUW9nQXhEQUF5QUNRUkJxSkFBTENRQWdBRUVBRU40T0N3a0FJQUJCQURvQWNBc29BUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNDQ0FBSUFJb0FnZ29BZ0EyQWdBZ0FrRVFhaVFBQ3dvQUlBQkI0UUUyQWdBTEx3RUJmeU1BUVJCcklnVWtBQ0FGSUFRMkFnZ2dCU0FETmdJTUlBQWdBU0FDRVBjT0lRQWdCVUVRYWlRQUlBQUxJQUVCZnlBQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQUVDVWdBUkRVR2dzTEZnQWdBUkRNQVNFQklBSVF6QUVhSUFBZ0FSRDBEZ3NLQUNBQVFkOEJOZ0lBQzBVQkFYOGpBRUVRYXlJREpBQWdBUkFsSWdFZ0FFRVVFQ1lnQTBFSWFpQUJRUUFRd3dFUWtRRWlBQ2dDQUVFUWFpQUNFUGtCSUFBUUpVRUJPZ0FFSUFOQkVHb2tBQXU5QWdFRmZ5QUFFQ1VhQWtBZ0FRUkFJQUFnQVJDQ0FoQ3JBaUFBRUNVZ0FUWUNBQU5BSUFBZ0F4QVJRUUEyQWdBZ0EwRUJhaUlESUFGSERRQUxJQUJCQ0dvaUFpZ0NBQ0lFUlEwQklBQWdCQ2dDQkNBQkVEUWlCaEFSSUFJMkFnQWdCQ2dDQUNJQ1JRMEJBMEFDUUNBR0lBSW9BZ1FnQVJBMElnVkdCRUFnQWlFRURBRUxBa0FDUUNBQUlBVVFFU2dDQUFSQUlBSWhBeUFDS0FJQVJRMENJQUFRUXlBQ1FRaHFJQUlvQWdCQkNHb1Fpd01OQVF3Q0N5QUFJQVVRRVNBRU5nSUFJQUloQkNBRklRWU1BZ3NEUUNBREtBSUFJZ01vQWdCRkRRRWdBQkJESUFKQkNHb2dBeWdDQUVFSWFoQ0xBdzBBQ3dzZ0JDQURLQUlBTmdJQUlBTWdBQ0FGRUJFb0FnQW9BZ0EyQWdBZ0FDQUZFQkVvQWdBZ0FqWUNBQXNnQkNnQ0FDSUNEUUFMREFFTElBQkJBQkNyQWlBQUVDVkJBRFlDQUFzTENnQWdBU0FBYTBFQ2RRc3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkE3R2lBQ1FXeHFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBc2dBUUYvSUFBb0FnQWhBU0FBUVFBMkFnQWdBUVJBSUFBUUpTQUJFSkVQQ3d0R0FRRi9Jd0JCRUdzaUF5UUFJQUVRSlNFQklBQkJJQkFtSUFOQkNHb2dBVUVBRU1NQkVKRUJJZ0FvQWdCQkVHb2dBaEQvQVJvZ0FCQWxRUUU2QUFRZ0EwRVFhaVFBQzBNQkFuOGdBQkRmQkVVRVFDQUFFRHNhSUFBb0FnUWlBU0FBSWdJb0FnQVE0QVFnQUJBYlFRQTJBZ0FnQUNBQlJ3UkFBMEFnQWlBQktBSUVJZ0ZIRFFBTEN3c0xCQUFnQVFzWkFDQUFJQUZIQkVBZ0FDQUJLQUlBSUFFb0FnUVFoQThMQ3dvQUlBQWdBVFlDMUFRTFRRRUJmeUFBSUFFUTNna2hBaUFBUVFNUUVTZ0NBQ0FDSUFBdEFCRVFwZ2NhSUFFZ0FTZ0NBQ2dDSkJFQUFBUi9JQUlGSUFCQkF4QVJLQUlBSUFFZ0FTZ0NBQ2dDREJFQUFCQ01DZ3NMeVFVQkJIOGpBRUhBQVdzaUJTUUFBa0FnQUNnQ1RDQURRUUJCQUJDc0FTSUVSUVJBSUFJdEFDWUVRQ0FGSUFWQjJBQnFJQVZCc0FGcUVKTUJJZ1FnQXlBQ0VNOEpJZ1lnQXhET0NTRUNRWUFCRUVZaUJ5QURJQUpCQVJEdEFob2dBQ2dDVENBSEVPd0NSUVJBSUFBZ0FVSG9vUXNnQUNnQ3RBVVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWhBMUdpQUdFRFVhSUFRUXBBNGdCQkNrRHd3Q0N5QUFJQUZCa2FvTElBTVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBRUlBUW9BZ0FvQWh3UkFBQUVRQ0FBSUFGQnRLb0xJQU1RRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN3SkFBa0FnQWhEckFRMEFJQUlReFFJTkFDQUNFSmtDRFFBZ0FoRHJBZzBBSUFJb0FnUkJ2NENBT0hGRkRRRUxJQUFnQVVIV3Fnc2dBeEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBUWdCQ2dDQUNnQ1VCRUFBQVJBSUFBb0Frd2dCQkRLQ1NFRUN5QUNMUUFIUVFoeEJFQWdBQ2dDS0NBREVMUUJCRUFnQUNBQlFjT3JDMEhDcUF0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBUWdCQ2dDQUNnQ05CRUFBQ0lDSUFJb0FnQW9BaWdSQUFBaUFpQUNLUUlFUW9DQWdNQUFoRGNDQkNBQUlBRWdCQ0FFS0FJQUtBSXdFUUFBSWdBZ0FDZ0NBQ2dDTEJFQUFCRGtDUXdCQ3lBQ0VMY0RCRUFnQUNnQ0tDQURFTFFCQkVBZ0FDQUJRY09yQzBITDFncEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQVFnQkNnQ0FDZ0NOQkVBQUNJQUlBQW9BZ0FvQWlnUkFBQVF4UWNNQVFzZ0FpZ0NCRUYvVEFSQUlBUWdCQ2dDQUNnQ05CRUFBQ0lBSUFBb0FnQW9BaWdSQUFBUXFRTWdBaENwQlVVTkFTQUNLQUlnSVFBZ0JDQUVLQUlBS0FJMEVRQUFJZ0VnQVNnQ0FDZ0NLQkVBQUNJQklBRW9BaUJCLzRGZ2NTQUFRWUQrSDNGeU5nSWdEQUVMSUFBZ0FVSHBxd3RCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcVFCRVFJQUN5QUZRY0FCYWlRQUM0TURBUWQvSXdCQklHc2lCQ1FBSUFBZ0FSQ1BBU0FCS0FJOEJFQkJFQkJHSWdVUXN3TWhBeUFBSUFVMkFqd2dBeUFCS0FJOEVQOEZDeUFCS0FKUUJFQkJFQkJHSWdVUXN3TWhBeUFBSUFVMkFsQWdBeUFCS0FKUUVQOEZDd0pBSUFFZ0FTZ0NBQ2dDaUFFUkFBQkZEUUFnQVNnQ1FFVU5BQ0FFSUFJZ0FVRkFheUlGRUl3UE5nSVlJQVFnQWhCK05nSUFJQVJCR0dvZ0JCQ0lBUVJBSUFBZ0JFRVlhaEJYS0FJRU5nSkFEQUVMUVJBUVJpSURFSk1CR2lBQUlBTTJBa0FnQWlBRkVJc1BJQU0yQWdBZ0JTZ0NBQkEzUlEwQUlBUkJCSElpQnlFSVFRQWhBd05BSUFjZ0JTZ0NBQ0FERURnaUJpa0NCRGNDQUNBSUlBWXBBZ3czQWdoQjFBQVFSaUlHUVFCQkFFRUJRUUJCQUVFQUVFVWhDU0FFSUFZMkFnQWdDU0FGS0FJQUlBTVFPQ2dDQUNBQ0VNd0pJQUFvQWtBZ0JCQ3BCeUFEUVFGcUlnTWdCU2dDQUJBM1NRMEFDd3NnQVNnQ1JDSUNCRUFnQUNBQ0VCTVF3Z0UyQWtRTElBRW9Ba2dpQVFSQUlBQWdBUkFURU1JQk5nSklDeUFFUVNCcUpBQUxJQUVCZjBIVUFCQkdRUUJCQUVFQlFRQkJBRUVBRUVVaUFTQUFFSWdHSUFFTFl3QWdBRUhZa2c4MkFnQWdBRUlBTndJOElBQkNBRGNDUkNBQUlBQW9BZ1JCZ0lDQWYzRkJrZ0p5TmdJRUlBQWdBaEFURU1JQk5nSklJQUJCQ0dvUWlRTWdBQ0FBS1FJTVFrQ0RJQUVwQWd4Q1A0T0VOd0lNSUFBZ0FSRE5DVFlDUUNBQUMxNEFJQUJCMkpJUE5nSUFJQUFnQUNnQ0JFR0FnSUIrY1VHUUFuSTJBZ1FnQUVFSWFpQURRVFFRUFJvZ0FFRUFOZ0pRSUFCQkFEWUNSQ0FBSUFFMkFrQWdBRUVBTmdJOElBQkJ6QUJxRUlvRElBQWdBaEFURU1JQk5nSklJQUFMWFFFQmZ5TUFRUkJySWdZa0FDQUJFQnNpQVNBQVFSZ1FKaUFHUVFocUlBRkJBQkREQVJDUkFTSUFLQUlBUVFocUlBTWdCQ0FGRUlVUElBQVFKVUVCT2dBRUlBQW9BZ0FnQWpZQ0JDQUFLQUlBUVFBMkFnQWdCa0VRYWlRQUN3Y0FJQUFvQWp3THRnRUJBMzhqQUVFd2F5SURKQUFnQTBFWWFpQUFJQU5CSUdvZ0FTQUJFUDBGSWdSQkFXb2dBMEVZYWhDN0N4Q1FEeUlCRUxBRkVOd0RJUVVnQVNBRUVGQkJLVG9BQUNBRFFSQnFJQUFnQVJDUER4RGNBeUVBSUFNZ0JTZ0NBRFlDQ0NBRFFRaHFJQUFRaUFFRVFBTkFJQU1nQTBFSWFoQlhLQUlRSWdRZ0JDZ0NBQ2dDSEJFQUFEWUNCQ0FDSUFOQkJHb1FzZ1FnQTBFSWFoQ3BBU0FEUVFocUlBQVFpQUVOQUFzTElBRVFHUm9nQTBFd2FpUUFDd2NBSUFBb0FnUUxIQUFnQUVFUFRRUkFJQUJCQW5SQnNNa0xhaWdDQUE4TFFlbmdDUXNoQUNBQVFYOXFJZ0JCQTAwRVFDQUFRUUowUVlqSkMyb29BZ0FQQzBIWXV3c0x4ZzhCQW44Z0F4RHNBU0FERUpNRElBTVE3QUVRekFvZ0EwRUNFS3dKRUNzRVFDQUNJQUlwQWd4Qy8vLy8vLy8vLzBlRFFvQ0FnSUNBZ0lBUWhEY0NEQThMSUFOQkFSQ3NDUkFyQkVBZ0FpQUNLUUlNUXYvLy8vLy8vLzlIZzBLQWdJQ0FnSUNBQ0lRM0Fnd1BDeUFEUVFRUXFnVVFLd1JBSUFBb0FoZ0VRQ0FBSUFGQm9PUUtJQUFvQWdBb0FwQUJFUVlBQ3lBQ0lBSXBBZ3hDLy8vLy8vLy8vNzk0ZzBLQWdJQ0FnSUNBZ0FLRU53SU1Ed3NnQTBFQkVLb0ZFQ3NFUUNBQUtBSVlCRUFnQUNBQlFhZmtDaUFBS0FJQUtBS1FBUkVHQUFzZ0FpQUNLUUlNUXYvLy8vLy8vLysvZUlOQ2dJQ0FnSUNBZ01BQWhEY0NEQThMSUFOQkFoQ3FCUkFyQkVBZ0FpQUNLUUlNUXYvLy8vLy8vLysvZUlOQ2dJQ0FnSUNBZ0lBQmhEY0NEQThMSUFOQkF4Q3FCUkFyQkVBZ0FDQUJRUTVCcnVRS0VFb2dBQ0FCUVFaQnJnTkJBRUd1NUFvUUtDQUFJQUZCQ0VHMkFrRUFRYTdrQ2hBb0lBSWdBaWtDREVMLy8vLy8vLy8vdjNpRFFvQ0FnSUNBZ0lEQUFZUTNBZ3dQQ3dKQUFrQWdBMEVGRUtvRkVDdEZCRUJCQVNFRUEwQWdBeUFFRU1zRUVDc0VRQ0FFUVhscVFROUpJQVJCSmt0eVJVRUFJQVJCWkdwQkJFc2JSUVJBSUFBZ0FVRUhRZFRrQ2hCS0N5QUFJQUZCQjBHa0EwSHM1QXBCaStVS0VDZ2dBQ0FCUVFoQnRnSkI3T1FLUVl2bENoQW9JQUlnQkRvQUxBOExJQVJCQVdvaUJFRXRSdzBBQ3lBRFFaemxDaEFyQkVBZ0FDQUJRWnpsQ2lBQUtBSUFLQUtZQVJFR0FDQUNRUUU2QUMwUEN5QURRYXJsQ2hBckJFQWdBQ0FCUWFybENpQUFLQUlBS0FLWUFSRUdBQ0FBSUFGQkFVRzg1UXBCcXVVS0lBQW9BZ0FvQWhRUkNBQWdBa0VCT2dBdUlBQW9BaWdRbVFZZ0FDZ0NLRUVCT2dEbUJROExBa0FnQUNnQ0ZDSUVRUTFMUVFFZ0JIUkJqTUFBY1VWeURRQWdBMEVGRUtzQkVDc0VRQ0FDUVFVMkFqd1BDd0pBSUFBb0FoUWlCRUVOUjBFQUlBUkJBMGNiUlFSQUlBTkJBUkNyQVJBckJFQWdBa0VCTmdJOER3c2dBMEVDRUtzQkVDc0VRQ0FDUVFJMkFqd1BDeUFBS0FJVUlnUkJBMGNOQWlBRFFRUVFxd0VRS3dSQUlBSkJCRFlDUEE4TElBTkJBeENyQVJBckJFQWdBa0VETmdJOER3c2dBMEVHRUtzQkVDc0VRQ0FDUVFZMkFqd1BDeUFEUVFjUXF3RVFLd1JBSUFKQkJ6WUNQQThMSUFOQndPVUtFQ3RGRFFFZ0FDQUJRUUZCek9VS1FkRGxDaUFBS0FJQUtBSVVFUWdBSUFKQkFUb0FMeUFBS0FJb1FRRTZBTTRFRHdzZ0EwRUZFS3NCRUNzRVFDQUNRUVUyQWp3UEN5QURRUWdRcXdFUUt3UkFJQUpCQ0RZQ1BBOExJQU5CQ1JDckFSQXJCRUFnQWtFSk5nSThEd3NnQTBFQkVONERFQ3NFUUNBQ1FRRTJBa3dQQ3lBRFFRSVEzZ01RS3dSQUlBSkJBallDVEE4TElBTkJBeERlQXhBckJFQWdBa0VETmdKTUR3c2dBMEVCRUpZRUVDc0VRQ0FDUVFFMkFsQVBDeUFEUVFJUWxnUVFLd1JBSUFKQkFqWUNVQThMSUFOQjdPVUtFQ3RGRFFBZ0FrRUJPZ0JVRHdzZ0FDZ0NGQ0VFQ3lBRVFRUkdCRUFnQTBIMzVRb1FLd1JBSUFBZ0FVRUdRZmZsQ2hCS0lBSkJBVG9BUVE4TElBTkJpZVlLRUNzRVFDQUFJQUZCQmtHSjVnb1FTaUFDUVVCclFRRTZBQUFQQ3lBRFFaN21DaEFyQkVBZ0FDQUJRUWRCcEFOQjdPUUtRWjdtQ2hBb0lBQWdBVUVJUWJZQ1FRQkJudVlLRUNnZ0FrRUJPZ0IwRHdzZ0EwR3o1Z29RS3cwRFFRRWhCQU5BSUFNZ0JCRFZDUkFyQkVBZ0FDQUJRUVpCLytZS0VFb2dBQ0FCUVFaQnBBTkJBRUgvNWdvUUtDQUNJQVEyQW5nUEMwRUJJUVVnQkVFQmFpSUVRUVZIRFFBTEEwQWdBeUFGRUpVRUVDc0VRQ0FBSUFGQkJrR1c1d29RU2lBQUlBRkJCa0hDQTBFQVFaYm5DaEFvSUFBZ0FVRUJRY1RuQ2lBRkVKVUVJQUFvQWdBb0FoUVJDQUFnQlVGN2FrRUJUUVJBSUFBZ0FVRUJRY2puQ2lBRkVKVUVJQUFvQWdBb0FoUVJDQUFMSUFJZ0JUWUNoQUVQQ3lBRlFRRnFJZ1ZCQjBjTkFBdEJBQ0VFSUFOQkRVSE01d29RaFFKRkJFQURRQ0FESUFRUTFBa1FLd1JBSUFBZ0FVRUlRY0FDUWRybkNrSGhxd29RS0NBQUlBRkJkMEVBUWRybkNrSGhxd29RS0NBQUtBSW9JZ0FnQUNnQ3VBUkJBU0FFZEhJMkFyZ0VJQUpCQVRvQWZBOExJQVJCQVdvaUJFRVFSdzBBQ3lBQUlBRkIrZWNLUWN6bkNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQU5Ca09nS0VDc05BaUFBS0FJVUlRUUxBa0FnQkVFTFN3MEFBa0FDUUFKQUlBUkJCR3NPQ0FNREFRRUJBUUVCQUFzZ0EwSEc2QW9RSzBVTkFTQUFJQUZCQVVIWTZBcEIzT2dLSUFBb0FnQW9BaFFSQ0FBZ0FrRUJPZ0F3RHdzZ0EwSHQ2QW9RSzBVTkFDQUNRUUU2QURnUEN5QUFLQUlVSVFRTEFrQWdCRUVGUncwQUlBTkJFVUg4NkFvUWhRSU5BQ0FBSUFGQkFVR1E2UXBCbE9rS0lBQW9BZ0FvQWhRUkNBQWdBMEd2NlFvUUt3UkFJQUpCQVRvQWlRRVBDeUFEUWNqcENoQXJSUTBBSUFKQkFUb0FpZ0VQQ3lBQUlBRkI0dWtLSUFNUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQUFnQVVHMTVBb2dBQ2dDQUNnQ21BRVJCZ0FnQUNBQlFRRkJ2T1FLUWNEa0NpQUFLQUlBS0FJVUVRZ0FJQUlnQWlrQ0RFTC8vLy8vLy8vL3YzaURRb0NBZ0lDQWdJREFBb1EzQWd3UEN5QUFJQUZCQVVHazZBcEJxT2dLSUFBb0FnQW9BaFFSQ0FBZ0FrRUJPZ0NJQVE4TElBQWdBVUVDUWNqbUNrSFE1Z29nQUNnQ0FDZ0NGQkVJQUNBQVFlVG1DaUFBS0FJQUtBSWdFUU1BQkVBZ0FrRUJPZ0IwQ3lBQ1FRRTZBSFVMTEFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ0FpQUNFUHNPSUFBZ0EwRUlhaERVQkNBRFFSQnFKQUFMS2dBZ0FDQUNRUklRN3dJRVFDQUFJQUZCaE5nS0lBTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxDejhCQVg4Z0FDQUFLQUpZSWdKQkFVNEVmeUFBSUFGQmp0Y0tRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUNBQUtBSllCU0FDQzBFQmFqWUNXQXU2QmdJQ2Z3RitJd0JCRUdzaUJTUUFJQUlReFFJRVFDQUNLUUlFSVFZZ0F5QURLQUlBS0FJb0VRQUFJZ1FnQkNrQ0JFTC8vLy8vLy85dmd5QUdRb0NBZ0lDQWdCQ0RoRGNDQkNBQ0tRSUVJUVlnQXlBREtBSUFLQUlvRVFBQUlnUWdCQ2tDQkVMLy8vLy8vLzkzZ3lBR1FvQ0FnSUNBZ0FpRGhEY0NCQ0FDS1FJRUlRWWdBeUFES0FJQUtBSW9FUUFBSWdRZ0JDa0NCRUwvLy8vLy8vOWZneUFHUW9DQWdJQ0FnQ0NEaERjQ0JDQUNLUUlFSVFZZ0F5QURLQUlBS0FJb0VRQUFJZ1FnQkNrQ0JFTC8vLy8vLy8rL2Y0TWdCa0tBZ0lDQWdJREFBSU9FTndJRUlBSXBBZ1FoQmlBRElBTW9BZ0FvQWlnUkFBQWlCQ0FFS1FJRVF2Ly8vLy8vLy85K2d5QUdRb0NBZ0lDQWdJQUJnNFEzQWdRZ0Fpa0NCQ0VHSUFNZ0F5Z0NBQ2dDS0JFQUFDSUVJQVFwQWdSQy8vLy8vLy8vLzMyRElBWkNnSUNBZ0lDQWdBS0RoRGNDQkNBQ0tRSUVJUVlnQXlBREtBSUFLQUlvRVFBQUlnUWdCQ2tDQkVMLy8vLy8vLy8vZTRNZ0JrS0FnSUNBZ0lDQUJJT0VOd0lFSUFJcEFnUWhCaUFESUFNb0FnQW9BaWdSQUFBaUJDQUVLUUlFUXYvLy8vLy8vMzJESUFaQ2dJQ0FnSUNBQW9PRU53SUVJQUlwQWdRaEJpQURJQU1vQWdBb0FpZ1JBQUFpQkNBRUtRSUVRdi8vLy8vLy8zdURJQVpDZ0lDQWdJQ0FCSU9FTndJRUlBSXBBZ1FoQmlBRElBTW9BZ0FvQWlnUkFBQWlCQ0FFS1FJRVF2Ly8vLy8vLzM2RElBWkNnSUNBZ0lDQUFZT0VOd0lFQ3dKQUlBSVE2d0ZGQkVBZ0FoQ1pBa1VOQVFzZ0FDQUJRZVhVQ2tIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQUlRNndJRVFDQUFJQUZCcnRVS1FlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWkwQUIwRUljUVJBSUFBZ0FVSGoxUXBCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUlRdHdORkRRQWdBaERWQkFSQUlBTWdBeWdDQUNnQ0tCRUFBQkRGQnd3QkN5QUFJQUZCbXRZS1FjdldDa0hqMWdsQkFDQUFLQUlBS0FLa0FSRUNBQXNnQWhEaUFnUkFJQUlwQWdRaEJpQURJQU1vQWdBb0FpZ1JBQUFpQkNBRUtRSUVRdi8vLy85dmd5QUdRb0NBZ0lBUWc0UTNBZ1FMSUFVZ0FpZ0NCRUUvY1RZQ0RDQUFJQUVnQlVFTWFpQURFTGNISUFWQkVHb2tBQXM1QVFGL0lBQkJ3QVJxSWdBZ0FSQnJLQUlNSVFNZ0FDQUJFR3NoQUNBRFFmLy9BRWNFUUNBQUtBSU1JQUpHRHdzZ0FDQUNOZ0lNUVFFTDJ3a0JBbjhqQUVFUWF5SURKQUFDUUNBQ0tRSUVRaitEUWdkU0RRQWdBaERyQWtVTkFDQUFJQUZCZzRjTFFhZmtDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBQ0VMSURSUTBBSUFJUWdBSU5BQ0FBSUFGQnQ0Y0xRZVB0Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQUNFSTRFUlEwQUFrQWdBaWdDQkVFL2NVRjlhaUlFUVFOTERRQUNRQUpBQWtBZ0JFRUJhdzREQVFJQ0FBc0NRQUpBSUFBUU0wVU5BQ0FBS0FJUVFiVUNTZzBBSUFBZ0FVRUFRZUtIQ3hDL0Fnd0JDeUFBSUFGQlgwSGlod3NRMGdFTElBQW9BaFJGQkVBZ0EwR2dpQXNwQXdBM0F3Z2dBQ0FCUVhkQnlnSkJBaUFEUVFocVFlS0hDeERSQVNBQUlBRkJDRUdzQWtFQVFlS0hDeEFvREFNTElBQWdBVUYzUVpvRFFmVEVDa0hpaHdzUUtDQUFJQUZCQ0VHMkFrRUFRZUtIQ3hBb0RBSUxBa0FDUUNBQUVETkZEUUFnQUNnQ0VFRzFBa29OQUNBQUlBRkJCRUgraHdzUXZ3SU1BUXNnQUNBQlFWOUIvb2NMRU5JQkN5QUFLQUlVUVFSR0JFQWdBMEdnaUFzcEF3QTNBd2dnQUNBQlFYZEJ5Z0pCQWlBRFFRaHFRZjZIQ3hEUkFTQUFJQUZCQ0VHc0FrRUFRZjZIQ3hBb0RBSUxJQUFnQVVGM1Fab0RRZlRFQ2tIK2h3c1FLQ0FBSUFGQkNFRzJBa0VBUWY2SEN4QW9EQUVMSUFBZ0FVRVBRYWlJQ3hCS0lBQWdBVUYzUWNvQ1FaRHNDa0dvaUFzUUtDQUFJQUZCZDBHdUEwSFFpQXRCcUlnTEVDZ2dBQ0FCUVFoQnRnSkJBRUdvaUFzUUtBc2dBaERPQkVVTkFDQUNLUUlFUWorRFFnUlNCRUFnQUNBQlFmR0lDMEdnOGdwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBSVFnQUlOQUNBQUlBRkJqNGtMUWFEeUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FDRU9rQ1JRMEFJQUlRc1FJTkFDQUNFSzRDRFFBZ0FDQUJRYnFKQzBIcTdBcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQWhDeEEwVU5BQ0FDRVBBQ0RRQWdBQ0FCUWZHSUMwR0I4Z3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FoQzhEa1VOQUNBQ0VQQUNEUUFnQUNBQlFmR0lDMEhuaVF0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTEFrQWdBaENwQ1VVTkFDQUNFTEVDRFFBZ0FoQ3VBZzBBQWtBZ0FoRE5CRVVFUUNBQ0VJWURSUTBCQ3lBQUlBRkIvSWtMUWNiMkNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBaENXQWtVRVFDQUNFTmtEUlEwQkN5QUFJQUZCd1lvTFFjYjJDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBQ0xRQWxSUTBBSUFJcEFnUkNQNE5DQlZJRVFDQUFJQUZCOW9vTFFaemxDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWhDckJVVU5BQ0FBSUFGQmxvc0xRY2JzQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQUNMUUFtUlEwQUlBSXBBZ1JDUDROQ0JsRU5BQ0FBSUFGQnVJc0xRYXJsQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQUNMUUF3UlEwQUlBSXBBZ1JDUDROQ0JsSUVRQ0FBSUFGQjFZc0xRZTczQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FoRHBBZ1JBSUFBZ0FVSDBpd3RCNnV3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUNFS3NGUlEwQUlBQWdBVUgwaXd0Qnh1d0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFJcEFnUkNQNE5DQ2xJTkFDQUNFT3NDUlEwQUlBQWdBVUdYakF0QjBZd0xRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFEUVJCcUpBQUx1Z0lCQlg4akFFRVFheUlESkFBQ1FDQUJFSlVDUlEwQUlBRVFoUU5GRFFBZ0F5QUJLUUlZUWpLSXAwSC9QM0UyQWd3Z0FoQTNCRUFEUUNBQ0lBVVFPQ2dDQUNJRUlBUW9BZ0FvQWlnUkFBQWhCaUFEUVFBNkFBc2dBMEVBT2dBS0lBTkJBRG9BQ1NBQUtBSW9JQUlnQlJBNEtBSUFJQU5CQzJvZ0EwRUthaUFEUVFscUVJUUhJUWNDUUNBR0VJVURSUVJBUVFnaEJBSkFBa0FnQXkwQUN3MEFRUVFoQkNBRExRQUtEUUJCQWlFRUlBTXRBQWxGRFFFTElBTkJER29nQkJDRUFnc2dCaUFHS1FJWVF2Ly8vLy8vLy8rQmdIK0RJQU1vQWd3aUJFSC9QM0d0UWpLR2hEY0NHQXdCQ3lBRElBWXBBaGhDTW9pblFmOC9jU0lFTmdJTUN5QURJQVFnQjJvMkFnd2dCVUVCYWlJRklBSVFOMGtOQUFzTElBRWdBU2tDR0VLQWdJQ0FnSUNBL3Y4QWhEY0NHQXNnQTBFUWFpUUFDNkFCQUNBQklBRW9BZ0FvQWlRUkFBQUVRQ0FCSUFFb0FnQW9BZ0FSQUFBaUFDQUJJQUVvQWdBb0Fqd1JBQUFnQUNnQ0FDZ0NPQkVCQUNBQUR3c2dBU0FCS0FJQUtBSXNFUUFBSWdFZ0FTZ0NBQ2dDV0JFQUFDSUFJQUFvQWdBb0FnQVJBQUFpQUVIajFna1F3Z0VnQUNnQ0FDZ0NFQkVCQUNBQUlBRWdBU2dDQUNnQ1dCRUFBQ0lCSUFFb0FnQW9BandSQUFBZ0FDZ0NBQ2dDT0JFQkFDQUFDOUVCQVFKL0FrQUNRQ0FDSUFJb0FnQW9BaWdSQUFBUTFBSkZEUUFDUUNBREJFQWdBaUFDS0FJQUtBSndFUUFBRFFFTUF3c2dBaENNQTBVTkFndEJCQ0VFSUFBdEFLUUJSUVJBSUFCQnFBbHFLQUlBSVFRTElBSWdBaWdDQUNnQ1VCRUFBQ0FEUVFGeklnVVExZ0VpQTBVZ0F5QUVSbkpGQkVBZ0FDQUJRYkhEQ2tIUDRBbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDeUFERFFBZ0FpQUNLQUlBS0FKUUVRQUFJQVVnQkJDYkJBc1BDeUFBSUFGQi84TUtRWi9FQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzM0FRRi9RUUVoQVNBQUVHQkJBVW9FUUFOQUlBQWdBUkNzQlVVRVFDQUFJQUZCQVJDYkJBc2dBVUVCYWlJQklBQVFZRWdOQUFzTEMzRUJBWDRDUUNBQ0tRSUVJZ05DUDROQ0FsRUVmaUFBSUFGQkFVSDRBRUhoNGdsQmo3MEtFQ2dnQUNBQlFRaEJyQUpCQUVHUHZRb1FLQ0FDS1FJRUJTQURDMEkvZzBJRFVnMEFJQUFvQWhRTkFDQUFJQUZCZDBHNHJRb1FTaUFBSUFGQkFVR1dBVUVBUWJpdENoQW9DMEVBQ3pjQkFYOENmeUFCS0FJQUlnSkJEa1lFUUNBQUlBRkJCR29Rd0FWQkFuUnFRYndKYWd3QkN5QUFJQUpCQW5ScVFld0ZhZ3NvQWdBTHVBMENBWDhCZmdKQUlBQW9Ba3dRR0VVTkFBSkFJQU1vQXBnQklnUUVRQ0FFRVBRQkRRRUxBa0FnQWlnQ0NFR0ErQjl4UlEwQUlBTWlCQ2dDQUVFT1JnUi9JQVJCQkdvUTBBUUZRUUFMRFFBZ0F5a0NERUkvZzBJR1VRMEFJQUFnQVVIYnFncEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBSVF4UUpGRFFBZ0F5Z0NBRUVPUmcwQUlBTkJDR29Rc1FJTkFDQUFJQUZCMjZvS1FlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBQ0tRSUVRaitEUWdaU0RRQWdBeWdDQUVFUVJnMEFJQUl0QUNZTkFDQUFJQUZCaWFzS1FiQ3JDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlnQ0JFRS9jVUY5YWtFQlN3MEFJQU10QUh3RVFDQUFJQUZCdDZzS1FlR3JDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBREtBSUFJZ1JCREVjTkFDQUFMUUNrQVEwQUlBQWdBVUh3cXdvZ0FpZ0NCRUUvY1JEVEFrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExBa0FnQkJDbUFrVUVRQ0FES0FJQVFRSkhEUUVMSUFBZ0FVRUlRYXdDUVFCQi82c0tFQ2dMQWtBZ0FpMEFCMEhBQUhFTkFDQUNFSk1HRFFBZ0FpMEFDRUVRY1VFRWRnMEFBa0FnQXlnQ0FCQ21BZzBBSUFNb0FnQkJBa1lOQUNBREtBS1lBU0lFUlEwQklBUkJDQ0FFS0FJQUtBS3dBUkVEQUEwQUlBTW9BcGdCSWdSQkNTQUVLQUlBS0FLd0FSRURBQTBBSUFNb0FwZ0JFSzhDRFFBZ0F5Z0NtQUVReGdJTkFDQURLQUtZQVJESER3MEFJQU1vQXBnQklnUkJBaUFFS0FJQUtBS3dBUkVEQUVVTkFRc2dBaWtDQkVJL2cwSjlmQ0lGUWdGV0RRQWdCYWRCQVdzRVFDQUFLQUlVUVFSSERRRWdBQ0FCUVpPc0NpQURLQUlBRU1jRUlBSW9BZ1JCUDNFUTB3SkJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN5QUFLQUlVRFFBZ0FDZ0NFRUdzQWtjTkFDQUFJQUZCazZ3S0lBTW9BZ0FReHdRZ0FpZ0NCRUUvY1JEVEFrRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBSVF0UVZGRFFBZ0FoQ1pBa1VOQUNBQUlBRkJyYXdLUWR5c0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBaEN1QWtVZ0F5Z0NBRUVRUm5KRkJFQWdBQ0FCUWVLc0NrR1NyUXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBb0FoUWhCQ0FDS1FJRUlnVkNQNE5DQTFFRVFDQUVRUVZMRFFFQ1FBSkFBa0FDUUNBRVFRRnJEZ1VEQlFVQkFnQUxJQU1vQWdBaUJFRVBSZ1JBSUFBZ0FVR1pyUXBCQXhEVEFrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQU1vQXBRQkJIOGdBQ0FCUVhkQnVLMEtFRW9nQUNBQlFRRkJsZ0ZCQUVHNHJRb1FLQ0FES0FJQUJTQUVDMEVDUmdSQUlBQWdBVUYzUVpvRFFRQkJ6SzBLRUNnTEFrQWdBaERyQVEwQUlBSVFtUUlOQUNBQ0VNVUNEUUFnQWkwQUIwRUljVVVOQlFzZ0FDQUJRZTZ0Q2tIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDeUFES0FLWUFVVU5BeUFBSUFGQkNFR3NBa0VBUVpldUNoQW9JQUFnQVVGM1FaWUJRUUJCbDY0S0VDZ2dBeWdDbUFFaUFpQUNLQUlBS0FLNEFSRUFBQVJBSUFBZ0FVRjNRYlN1Q2hCS0N5QURLQUtZQVNJQ0lBSW9BZ0FvQXJRQkVRQUFSUTBESUFBZ0FVRjNRZWF1Q2hCS0R3c2dBQ2dDVEJBa0RRSWdBQ0FCUVpldkNrSFpyd3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3lBRlFvQ0FnSUNBSUlOUURRRWdBQ0FCUWR5dkNrSGNyQXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3lBRVFRVkxEUUFDUUFKQUFrQUNRQ0FFUVFGckRnVUVBd1FCQWdBTElBTW9BcGdCUlEwRElBQWdBVUVJUWF3Q1FRQkJrckFLRUNnZ0FDQUJRWGRCbGdGQkFFR1NzQW9RS0NBREtBS1lBU0lDSUFJb0FnQW9BcmdCRVFBQUJFQWdBQ0FCUVhkQnJyQUtFRW9MSUFNb0FwZ0JJZ0lnQWlnQ0FDZ0N0QUVSQUFCRkRRTWdBQ0FCUVhkQjM3QUtFRW9QQ3lBQUlBRkJDRUdzQWtFQVFZK3hDaEFvSUFNb0FnQkJEMFlFUUNBQUlBRkJwckVLSUFJb0FnUkJQM0VRMHdKQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBUEN5QURMd0dRQVVFVWRFRVFkVUdBSUU0RVFDQUFJQUZCdkxFS0lBSW9BZ1JCUDNFUTB3SkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDeUFDRU9zQkJFQWdBQ0FCUWMreENrR0NzZ3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJUW1RSUVRQ0FBSUFGQm1MSUtRYyt5Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0F5Z0NBQ0lEUVF0TFFRRWdBM1JCaEJoeFJYSU5BaUFBSUFGQjZiSUtJQUlvQWdSQlAzRVEwd0pCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3lBQUlBRkJrN01LUWF2c0NVSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQVZDZ0lDQWdJQWdnMUFOQUNBQUlBRkIxck1LUWR5c0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0xtUUVCQVg4Q1FDQUNMUUFIUVFoeFJRMEFJQUlROEFJaEF5QUNFUEVDSVFJQ1FDQUFLQUlRUWFzQ1RBUkFJQUFRTXcwQklBQW9BaEJCcEFOSURRRUxJQU1OQVNBQUlBRkJnYXdMUWNLb0MwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQUlnQTNKQkFVWUVRQ0FBS0FJVUlBSkJBWE55RFFFTElBQWdBVUdkckF0QndxZ0xRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd3NNQUNBQUtBSUFHaUFCRUNvTFBnQWdBU0FCS0FJQUtBS0VBUkVBQUJDUEFrVUVRQ0FBSUFFZ0FTZ0NBQ2dDQUJFQUFFR2hsQW9nQWtIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzTFRnRUNmeU1BUVJCcklnVWtBQ0FFRUJNaEJDQURFQk1oQXlBQUtBSUFLQUtnQVNFR0lBVWdBellDQkNBRklBUTJBZ0FnQUNBQlFlUFdDU0FDUWM2TkNpQUZJQVlSQWdBZ0JVRVFhaVFBQ3drQUlBQkJCR29RTmd2WEFRRUNmeU1BUWJBQmF5SUVKQUFnQkVIWUFHb2dBaEMwQXlJQ0VCc2lBeUFES1FJRVF2Ly8vMGVETndJRUlBSVFoQVlFUUNBQUlBRkJBVUg0QUVIaDRnbEJrNHdLRUNnZ0FDQUJRUWhCckFKQkFFR1RqQW9RS0FzZ0FDZ0NLQ0FDRUxRSUlnTkZCRUFnQUNBQlFhZU1DaUFDRUxvT1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUlBSWdCRUVCUVFCQkFVRUFRUUJCQUJCRklnQVFqd0VnQUJBMUdrSFRBeUVEQ3lBRVFlUFdDUkFpSVFCQm1BRVFSaUFBSUFJZ0F4Q3VCU0VCSUFBUUdSb2dBaEExR2lBRVFiQUJhaVFBSUFFTE5nQkJBQ0FCVFFSL0lBTkZCRUJCQUE4TFFYOGdBQ0FBSUFGcUlnRWdBaUFDSUFOcUVQNE9JZ0lnQUdzZ0FTQUNSaHNGUVg4TEM3SUVBQUpBSUFJZ0FpZ0NBQ2dDSEJFQUFFRVBSdzBBSUFBZ0FrRURFTzhDUlEwQUlBQWdBU0FEUWFQWUNpQUFLQUlBS0FKUUVRUUFDd0pBSUFJZ0FpZ0NBQ2dDY0JFQUFFVU5BQ0FDSUFJb0FnQW9BaHdSQUFCQkEwY05BQ0FBSUFFZ0EwSE4yQW9nQUNnQ0FDZ0NVQkVFQUFzQ1FDQUNJQUlvQWdBb0Fod1JBQUJCRDBjTkFDQUFJQUpCQmhEdkFrVU5BQ0FBSUFFZ0EwSDIyQW9nQUNnQ0FDZ0NYQkVFQUFzQ1FDQUNJQUlvQWdBb0FuQVJBQUJGRFFBZ0FpQUNLQUlBS0FJY0VRQUFRUVpIRFFBZ0FDQUJJQU5CbnRrS0lBQW9BZ0FvQWx3UkJBQUxBa0FnQWlBQ0tBSUFLQUljRVFBQVFROUhEUUFnQUNBQ1FRY1E3d0pGRFFBZ0FDQUJJQU5CeGRrS0lBQW9BZ0FvQWx3UkJBQUxBa0FnQWlBQ0tBSUFLQUp3RVFBQVJRMEFJQUlnQWlnQ0FDZ0NIQkVBQUVFSFJ3MEFJQUFnQVNBRFFlN1pDaUFBS0FJQUtBSmNFUVFBQ3dKQUlBSWdBaWdDQUNnQ0hCRUFBRUVQUncwQUlBQWdBa0VFRU84Q1JRMEFJQUFnQVNBRFFaYmFDaUFBS0FJQUtBSm9FUVFBQ3dKQUlBSWdBaWdDQUNnQ2NCRUFBRVVOQUNBQ0lBSW9BZ0FvQWh3UkFBQkJCRWNOQUNBQUlBRWdBMEc5MmdvZ0FDZ0NBQ2dDYUJFRUFBc0NRQ0FDSUFJb0FnQW9BaHdSQUFCQkQwY05BQ0FBSUFKQkJSRHZBa1VOQUNBQUlBRWdBMEhqMmdvZ0FDZ0NBQ2dDYUJFRUFBc0NRQ0FDSUFJb0FnQW9BbkFSQUFCRkRRQWdBaUFDS0FJQUtBSWNFUUFBUVFWSERRQWdBQ0FCSUFOQmk5c0tJQUFvQWdBb0FtZ1JCQUFMQ3dvQUlBQkJBVG9BekFRTEh3RUJmeUFBS0FLb0JDSUNCRUFnQVNBQ1JnOExJQUFnQVRZQ3FBUkJBUXRDQVFGL0lBRVF3Z0VoQTBHQUFSQkdJZ0VnQXlBQ1FRQVE3UUloQWlBQUtBSk1JZ0FnQUNnQ0RFRUJhaUlBTmdJTUlBRWdBQ0FCS0FJQUtBSTRFUUVBSUFJTFJ3QUNRQ0FESUFNb0FnQW9BaEFSQUFCRkRRQWdBeUFES0FJQUtBSVFFUUFBS0FKb1FiRUVSdzBBSUFBZ0FVSGppd29nQWtIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzTEZBQWdBQkFUSUFBUUh5QUJJQUVRb0FFUTZna0xSUUVEZnlBQUVCOGhBaUFBRUJNaEEwSEZ1L0tJZUNFQklBSUVRRUVBSVFBRFFDQUJJQUFnQTJvc0FBQnpRWk9EZ0Foc0lRRWdBRUVCYWlJQUlBSkhEUUFMQ3lBQkM0MEdBUVovSXdCQklHc2lCeVFBSUFBb0Frd1FHRVVFUUNBQUlBRkJkMEhqNVFrUVNnc0NRQ0FBS0FKTUlBSWdBaWdDQUNnQ0dCRUFBQ0FIUVI5cVFRQVFyQUVpQ0VVTkFBSkFJQWdnQ0NnQ0FDZ0NIQkVBQUVVTkFDQUhMUUFmUlEwQUlBQWdBVUYzUWY3bENSQktDeUFJSUFnb0FnQW9BaHdSQUFBaUJVVU5BQ0FGSUFVb0FnQW9BbndSQUFCRklBTkZja1VFUUNBQUlBRkJDRUdzQWtFQVFhRG1DUkFvQ3lBRklBVW9BZ0FvQWpBUkFBQWdBaUFDS0FJQUtBSXdFUUFBRU1BQkJFQWdBQ0FCUWNibUNTQUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF0QkFTRUVJQVVnQlNnQ0FDZ0NrQUVSQUFCQkFVZ05BRUVBSVFRRFFDQUZJQVFnQlNnQ0FDZ0NvQUVSQXdBb0FnUWlCaUFHS0FJQUtBSW9FUUFBS1FJRUlBSWdCQ0FDS0FJQUtBS2NBUkVEQUNnQ0JDSUdJQVlvQWdBb0FpZ1JBQUFwQWdTRlFqK0RVRVVFUUNBQ0lBUWdBaWdDQUNnQ25BRVJBd0FvQWdRUXlRUWhCaUFBS0FJQUtBS2dBU0VKSUFjZ0JFRUJhallDRUNBQUlBRkIrdVlKSUFaQnpPY0pJQWRCRUdvZ0NSRUNBQXNDUUNBRklBUWdCU2dDQUNnQ29BRVJBd0FvQWdRaUJpQUdLQUlBS0FJb0VRQUFLUUlFSUFJZ0JDQUNLQUlBS0FLY0FSRURBQ2dDQkNJR0lBWW9BZ0FvQWlnUkFBQXBBZ1NGUW9DQWdEaURVQVJBSUFSQkFXb2hCQXdCQ3lBQ0lBUWdBaWdDQUNnQ25BRVJBd0FvQWdRUXZnNGhCaUFBS0FJQUtBS2dBU0VKSUFjZ0JFRUJhaUlFTmdJQUlBQWdBVUhQNXdrZ0JrSE01d2tnQnlBSkVRSUFDeUFFSUFVZ0JTZ0NBQ2dDa0FFUkFBQklEUUFMUVFFaEJBc2dBQ0FCSUFJZ0FpZ0NBQ2dDTUJFQUFFR2o2QWtRdXdVQ1FDQURSUTBBSUFBb0Frd1FKQVJBSUFJZ0FpZ0NBQ2dDY0JFRkFBd0JDeUFFUVFGeklBY3RBQjlCQUVkeVJRUkFJQWdnQ0NnQ0FDZ0NIQkVBQUNJRElBTW9BZ0FvQW5nUkJRQUxJQUlnQWlnQ0FDZ0NlQkVGQUFzZ0FDZ0NUQ0FDRU93Q1JRUkFJQUFnQVVIQjZBa2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBZEJJR29rQUNBQ0N4OEFJQUJCZjJvaUFFRUZUUVJBSUFCQkFuUkJ3TWdMYWlnQ0FBOExRUUFMWmdBQ1FDQUNJQUlvQWdBb0FuQVJBQUFOQUNBQUtBSk1FQ1FOQUNBQ0lBSW9BZ0FvQWl3UkFBQWdBQ2dDRkJEWEIwVU5BQ0FDSUFJb0FnQW9BaXdSQUFBdEFDY05BQ0FBSUFGQjB1QUpJQUlReVFRZ0F4QVRRUUFnQUNnQ0FDZ0NvQUVSQWdBTEN3OEFJQUFvQWdRb0FnQWdBVFlDQUF1NEFRRUJmd0ovUVFBZ0FDQUFLQUlBS0FKNEVRQUFJZ0VnQVNnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElHVWcwQUdnSkFJQUFnQUNnQ0FDZ0NVQkVBQUNJQVJRMEFJQUFvQW1oQnN3RkhEUUFnQUNBQUtBSUFLQUxFQVJFQUFDSUJJQUVvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FoQVVFQUlBQWdBQ2dDQUNnQ3dBRVJBQUFROGdFTkFScEJBU0FCSUFBZ0FDZ0NBQ2dDd0FFUkFBQWlBQ0FBS0FJQUtBSjRFUUFBS0FKQUVEZEJmMnBHRFFFYUMwRUFDd3NKQUNBQUlBRVFNUm9MSkFFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFCQjBBWnFJQUVROUE4Z0FrRVFhaVFBQ3lrQUlBQW9BZ1JCUDNGQmZXb2lBRUVYVFFSQVFZK0Evd2NnQUVILy8vOEhjWFpCQVhFUEMwRUFDMmNCQW44akFFRVFheUlCSkFBQ2Z5QUFRU1JxSUFBdEFEUU5BQm9nQUNnQ0dDRUNJQUZCQURZQ0RDQUJJQUFvQWdRZ0FDZ0NJRUYvYzJvMkFnZ2dBaUFCUVF4cUlBQkJFR29nQVVFSWFoRCtBUkNtQVNnQ0FFRUVkR29MSVFBZ0FVRVFhaVFBSUFBTEhRRUJmeUFBUWVTbUVEWUNBQ0FBUVN4cUlnRWdBUkE4RUs0SElBQUxiUUFnQUVHRTBnazJBZ0FnQUVHUUJXb1FyQUlnQUVHQUJXb1FyQUlnQUVId0JHb1FyQUlnQUVIZ0JHb1FyQUlnQUVIUUJHb1FyQUlnQUVIQUJHb1FHUm9nQUVHb0FXb1Eyd0VnQUVHTUFXb1Fzd29nQUVINEFHb1F4Z2tnQUVIb0FHb1F4Z2tnQUJEN0NSb2dBQXRUQVFGL0lBQkJwTlFKTmdJQUlBQW9BcVNyQVNJQkJFQWdBUkFxQ3lBQVFjaXJBV29RMndFZ0FFRzRxd0ZxRU5zQklBQkJyS3NCYWlJQklBRVFQQkN2QnlBQVFaU3JBV29RR1JvZ0FCRDhDUm9nQUFzN0FRRi9Jd0JCRUdzaUFpUUFJQUJCQkdvUXZRY2dBa0VBTmdJTUlBQkJDR29nQWtFTWFpQUJFS0VISUFBZ0FCQWxOZ0lBSUFKQkVHb2tBQXVmQVFFQ2Z5TUFRUkJySWdFa0FDQUFMUUNrQVVVRVFFR29BUkJHSWdJUS9RTWFJQUVnQWpZQ0RDQUJJQUJCcUFGcUlnSVFRRFlDQ0NBQklBSVFNallDQUNBQlFRaHFJQUVRSGdSQUEwQWdBQ2dDS0NBQlFReHFJQUVvQWdnb0FnQVFpZ3dnQVVFSWFoQm1HaUFCSUFJUU1qWUNBQ0FCUVFocUlBRVFIZzBBQ3dzZ0FDZ0NLQ0FCUVF4cUlBQW9BaFFnQUNnQ1RCQzBGQXNnQVVFUWFpUUFDejRCQVg4akFFRVFheUlGSkFBZ0JTQUVOZ0lJSUFVZ0F6WUNEQ0FBSUFFZ0FpQUZLQUlNSUFVb0FnZ2dBQ2dDQ0JFS0FDRUFJQVZCRUdva0FDQUFDNVlHQVFkL0l3QkJNR3NpQlNRQUlBUkJBRG9BQUNBRlFTQnFFSk1CSVFjZ0JTQUFFRUEyQWhBZ0JTQUFFREkyQWdnZ0JVRVFhaUFGUVFocUVCNEVRQU5BSUFVb0FoQW9BZ0FoQmdKQUlBRWdBU2dDQUNnQ2tBRVJBQUFnQmlBR0tBSUFLQUtZQVJFQUFFZ05BQ0FCSUFFb0FnQW9BcEFCRVFBQUlBWWdCaWdDQUNnQ2tBRVJBQUJLRFFBZ0JTQUJJQUVvQWdBb0FwQUJFUUFBTmdJSUlBVWdCaUFHS0FJQUtBS1FBUkVBQURZQ0dDQUZRUWhxSUFWQkdHb1EvZ0VvQWdBaUMwRUJUZ1JBUVFBaENBTkFJQVlnQ0NBR0tBSUFLQUtnQVJFREFDZ0NCQ0lLSUFvb0FnQW9BaWdSQUFBUXd3Y0VRQ0FDSUFFZ0NDQUJLQUlBS0FLZ0FSRURBQ2dDQkNBR0lBZ2dCaWdDQUNnQ29BRVJBd0FvQWdRZ0JpQUdLQUlBS0FKc0VRQUFJQWdRZ0FwRkRRTUxJQVlnQ0NBR0tBSUFLQUtnQVJFREFDZ0NCQ0lLSUFvb0FnQW9BaWdSQUFBUTFRUUVRQ0FDSUFZZ0NDQUdLQUlBS0FLZ0FSRURBQ2dDQkNBQklBZ2dBU2dDQUNnQ29BRVJBd0FvQWdRZ0JpQUdLQUlBS0FKc0VRQUFJQWdRZ0FwRkRRTUxJQWhCQVdvaUNDQUxSdzBBQ3dzZ0JTQUdOZ0lJSUFjZ0JVRUlhaEN5QkFzZ0JVRVFhaEJtR2lBRklBQVFNallDQ0NBRlFSQnFJQVZCQ0dvUUhnMEFDd3NDUUNBSEVCWkZEUUFnQnhBV1FRRkdCRUFnQnlnQ0FDZ0NBQ0VKREFFTElBVWdBellDRkNBRklBRTJBaEFnQlNBRE5nSU1JQVVnQVRZQ0NDQUhLQUlBS0FJQUlRa2dCU0FIRUVBMkFnQWdCU0FGUVFFUXdRVTJBaGdnQlNBSEVESTJBZ0FnQlVFWWFpQUZFQjRFUUFOQUlBVkJFR29nQ1NBRktBSVlLQUlBSWdBUXpRY0VRQ0FKSUFBZ0JVRVFhaUFBSUFrUXpRY2JJUWtMSUFWQkdHb1FaaG9nQlNBSEVESTJBZ0FnQlVFWWFpQUZFQjROQUFzTElBVWdCeEJBTmdJWUlBVWdCeEF5TmdJQUlBVkJHR29nQlJBZVJRMEFBMEFDUUNBSklBVW9BaGdvQWdCR0RRQWdCVUVRYWlBSklBVW9BaGdvQWdBaUFCRE5CMFVFUUNBRlFRaHFJQWtnQUJDQkVFVU5BUXNnQkVFQk9nQUFDeUFGUVJocUVHWWFJQVVnQnhBeU5nSUFJQVZCR0dvZ0JSQWVEUUFMQ3lBSEVOc0JJQVZCTUdva0FDQUpDeXNBSUFFZ0FDZ0NUQ0FCS0FJQUVNb0pJZ0UyQWdBZ0FRUkFJQUFnQVNBQUtBSUFLQUtJQWhFQkFBc0xwZ0VCQVg4Q1FDQURSUTBBSUFNZ0F5Z0NBQ2dDSUJFQUFDSUVCRUFnQkNnQ2FDSURRYzkrYWtFRVQwRUFJQU5COEFWSEd3MEJJQUFnQVNBQ0lBUWdCQ2dDQUNnQ3dBRVJBQUFnQUNnQ0FDZ0M4QUVSQkFBUEN5QURJQU1vQWdBb0FqQVJBQUFpQTBVTkFDQURJQU1vQWdBb0FvUUJFUUFBRUpvRVJRMEFJQUFnQVVIV3p3a2dBaUFESUFNb0FnQW9Bc0FCRVFBQUVCTkJBQ0FBS0FJQUtBS2dBUkVDQUFzTHpBUUJCbjhqQUVGQWFpSUZKQUFDZndKQUlBTWdBeWdDQUNnQ0lCRUFBQ0lFQkVBZ0JDZ0NhQ0lEUWM5K2FrRUVUMEVBSUFOQjhBVkhHMFVFUUNBQUlBRWdBaUFFSUFRb0FnQW9Bc0FCRVFBQUlBQW9BZ0FvQXV3QkVRa0FEQU1MSUFBb0FnQW9BcUFCSVFNZ0JVRzN6UWsyQWpBZ0FDQUJRYVhOQ1NBQ1FiZk5DU0FGUVRCcUlBTVJBZ0FNQVFzQ2YwRUFJQU1nQXlnQ0FDZ0NNQkVBQUNJSFJRMEFHaUFISUFjb0FnQW9Bc0FCRVFBQUVCTUxJUWxCdU0wSklRUUNRQUpBQWtBQ1FBSkFJQU1nQXlnQ0FDZ0NoQUVSQUFBb0FnUkJQM0VpQmtGK2FpSUlRUWhMQkVBZ0JrRVFSZzBGREFFTEFrQUNRQUpBSUFoQkFXc09DQU1EQWdFREF3TUFCd3RCQUVHeXpna2dBQ2dDRkVFSFJoc2hCZ3dEQzBHRHpnbEI1TTBKUVFBZ0F5QURLQUlBS0FLRUFSRUFBQkNXQmhzZ0F5QURLQUlBS0FLRUFSRUFBQzBBTUJzaEJnd0NDMEhOelFraEJBd0VDMEVBSVFZZ0F5QURLQUlBS0FLQUFSRUFBQ0lEUVhOcUlnaEJCRXNFUUNBRERRRkI5TTRKSVFRTUJBdEIzYzRKSVFRZ0NFRUJhdzRFQXdBQUFRSUxJQVlnQjNKRkJFQWdBQ2dDQUNnQ29BRWhBeUFGUWJmTkNUWUNBQ0FBSUFGQnBjMEpJQUpCdDgwSklBVWdBeEVDQUF3RUN5QUdJZ1FOQWtFQURBUUxRYUxQQ1NFRURBRUxRWWJQQ1NFRUN5QUFLQUlBS0FLZ0FTRURJQWNFUUNBRklBUTJBaFFnQlNBSk5nSVFJQUFnQVVHbHpRa2dBa0hIendrZ0JVRVFhaUFERVFJQURBRUxJQVVnQkRZQ0lDQUFJQUZCcGMwSklBSkIwYzhKSUFWQklHb2dBeEVDQUF0QkFRc2hBQ0FGUVVCckpBQWdBQXNOQUNBQUxRQThRUUp4UVFGMkN4TUFJQUJCQVRvQU5TQUFJQUFvQWdRMkFoQUxxd0lCQlg4Z0FCQWxHZ0pBSUFFRVFDQUFJQUVRZ2dJUXF3SWdBQkFsSUFFMkFnQURRQ0FBSUFNUUVVRUFOZ0lBSUFOQkFXb2lBeUFCUncwQUN5QUFRUWhxSWdJb0FnQWlCRVVOQVNBQUlBUW9BZ1FnQVJBMElnWVFFU0FDTmdJQUEwQWdCQ2dDQUNJQ1JRMENJQVlnQWlnQ0JDQUJFRFFpQlVZRVFDQUNJUVFNQVFzQ1FBSkFJQUFnQlJBUktBSUFCRUFnQWlFRElBSW9BZ0JGRFFJZ0FpZ0NDQ0FDS0FJQUtBSUlFTU1GRFFFTUFnc2dBQ0FGRUJFZ0JEWUNBQ0FDSVFRZ0JTRUdEQUlMQTBBZ0F5Z0NBQ0lES0FJQVJRMEJJQUlvQWdnZ0F5Z0NBQ2dDQ0JEREJRMEFDd3NnQkNBREtBSUFOZ0lBSUFNZ0FDQUZFQkVvQWdBb0FnQTJBZ0FnQUNBRkVCRW9BZ0FnQWpZQ0FBd0FBQXNBQ3lBQVFRQVFxd0lnQUJBbFFRQTJBZ0FMQ3d3QUlBRWdBeWdDQUJDTUVBdTlBZ0VHZnlBQUVDVWFBa0FnQVFSQUlBQWdBUkNDQWhDckFpQUFFQ1VnQVRZQ0FBTkFJQUFnQXhBUlFRQTJBZ0FnQTBFQmFpSURJQUZIRFFBTElBQkJDR29pQWlnQ0FDSUVSUTBCSUFBZ0JDZ0NCQ0FCRURRaUJoQVJJQUkyQWdBZ0JDZ0NBQ0lDUlEwQkEwQUNRQ0FHSUFJb0FnUWdBUkEwSWdWR0JFQWdBaUVFREFFTEFrQUNRQ0FBSUFVUUVTZ0NBQVJBSUFJaEF5QUNLQUlBUlEwQ0lBQVFReUlISUFKQkNHb2dBaWdDQUVFSWFoQ2JCZzBCREFJTElBQWdCUkFSSUFRMkFnQWdBaUVFSUFVaEJnd0NDd05BSUFNb0FnQWlBeWdDQUVVTkFTQUhJQUpCQ0dvZ0F5Z0NBRUVJYWhDYkJnMEFDd3NnQkNBREtBSUFOZ0lBSUFNZ0FDQUZFQkVvQWdBb0FnQTJBZ0FnQUNBRkVCRW9BZ0FnQWpZQ0FBc2dCQ2dDQUNJQ0RRQUxEQUVMSUFCQkFCQ3JBaUFBRUNWQkFEWUNBQXNMQ3dBZ0FDQUJFUGNKSUFBTENnQWdBU2dDQUJEUUJ3dEpBUUYvSXdCQkVHc2lBaVFBSUFJZ0FDQUJFTVFGTmdJSUlBSWdBQkIrTmdJQVFRQWhBQ0FDUVFocUlBSVF1QU5GQkVBZ0FrRUlhaEJYS0FJUUlRQUxJQUpCRUdva0FDQUFDMkVCQVg4akFFRkFhaUlDSkFBZ0FpQUJLQUlJTmdJQUlBSkJJR3BCR0VITXpBa2dBaEFuR2lBQ1FSQnFJQUZCQUJEUkJ5QUFJQUpCRUdvUUV4QzZBeUFDUVJCcUVDQWFJQUFnQWtFZ2FoQzZBeUFBUWRETUNSQzZBeUFDUVVCckpBQUxSZ0FnQVFSQUlBQVEyUUZCQUE4TElBQW9BZ1F0QUFRRVFDQUFLQUlFSWdFZ0FFRU1ha0hHeUFrZ0FDZ0NKRUdWdmdsQkFDQUJLQUlBS0FLa0FSRUNBQXNnQUJEWUFRc05BQ0FBS1FNQUlBRXBBd0JVQ3cwQUlBQXBBd0FnQVNrREFGTUxEUUFnQUM4QkFDQUJMd0VBU1FzTkFDQUFMZ0VBSUFFdUFRQklDdzBBSUFBdEFBQWdBUzBBQUVrTERRQWdBQ3dBQUNBQkxBQUFTQXNOQUNBQUt3TUFJQUVyQXdCakN5MEFJQUVnQUNnQ0NFY0VRQU5BSUFBb0FoQWFJQUFnQUNnQ0NFRjRhallDQ0NBQUtBSUlJQUZIRFFBTEN3c1BBQ0FBS0FJQUlBRkJBM1FRbEFJTFF3RUJmeU1BUVJCcklnRWtBQ0FBRURzYUlBRkIvLy8vL3dFMkFnd2dBVUgvLy8vL0J6WUNDQ0FCUVF4cUlBRkJDR29RcEFFb0FnQWhBQ0FCUVJCcUpBQWdBQXNQQUNBQUlBQW9BZ0JCRUdvMkFnQUxRd0VCZnlNQVFSQnJJZ0VrQUNBQUVEc2FJQUZCLy8vLy93QTJBZ3dnQVVILy8vLy9CellDQ0NBQlFReHFJQUZCQ0dvUXBBRW9BZ0FoQUNBQlFSQnFKQUFnQUFzL0FRRi9JQUFRbWdvZ0FVa0VRQkJ1QUFzZ0FDQUFFRHNnQVJEZUJ5SUNOZ0lBSUFBZ0FqWUNCQ0FBRUJzZ0FpQUJRUVIwYWpZQ0FDQUFRUUFRbndZTFpRRURmeUFBUVpTd0R6WUNBRUVRRUVZaUJDQURFS3dLSUFBZ0JEWUNCQ0FEUVFGT0JFQkJBQ0VFQTBBZ0FTQUNJQVJxRUE4aEJTQUFLQUlFSUFRUXhBRWlCaUFGS0FJSU5nSUlJQVlnQlNrREFEY0RBQ0FFUVFGcUlnUWdBMGNOQUFzTElBQUxsUUlCQkg4akFFSGdBR3NpQkNRQUlBUkJDR29nQVNBQktBSUFLQUo0RVFBQUlBSkJBQkROQVNJRkVCc2lBQ0FBS1FJRVFrQ0RRZ0tFTndJRUlBVVF4UUVoQmtFQUlRQUNRQ0FCSUFFb0FnQW9BbmdSQUFBUWhRRU5BQUpBQWtBZ0FTQUJLQUlBS0FLZ0FSRUFBQTBBSUFFZ0FTZ0NBQ2dDckFFUkFBQkZEUUFnQWtFQVNnMEJEQUlMSUFJZ0Jtd2hBQXdCQ3dOQUlBRWdBU2dDQUNnQ2VCRUFBQ2dDUUNBSEVEZ29BZ0FReFFFZ0FHb2hBQ0FIUVFGcUlnY2dBa2NOQUFzTElBUWdBU0FCS0FJQUtBSVVFUUFBRUVzZ0FDQUdFSndLSUFFZ0FTZ0NBQ2dDZUJFQUFDQURRUUFRMEFJaUFBUkFJQUFnQlNBQUtBSUFLQUowRVFFQUlBQWhBUXNnQlJBMUdpQUVRZUFBYWlRQUlBRUxDUUFnQUNBQkVMQVFDd2tBSUFBZ0FSQ3hFQXNKQUNBQUlBRVFzaEFMQ1FBZ0FDQUJFTE1RQ3drQUlBQWdBUkMwRUFzSkFDQUFJQUVRdFJBTENRQWdBQ0FCRUxjUUN3a0FJQUFnQVJDNEVBc0pBQ0FBSUFFUXVSQUxDUUFnQUNBQkVMb1FDd2tBSUFBZ0FSQzdFQXNKQUNBQUlBRVF2QkFMQ1FBZ0FDQUJFTDBRQ3drQUlBQWdBUkMvRUFzYUFDQUFFUDBISUFFRVFDQUFJQUVRbXdvZ0FDQUJFS3dRQ3dzSUFDQUFLUU1BVUFzTUFDQUFJQUVRcndwQkFYTUxSQUFnQUNnQ0JDSUFJQUVvQWdRaUFVWUVRRUVCRHdzZ0FFVWdBVVZ5Qkg5QkFBVWdBQkNvQVNBQkVLZ0JSZ1IvSUFBUVFDQUFFRElnQVJCQUVLc1FCVUVBQ3dzTE5nRUNmeUFBUVpTd0R6WUNBRUVRRUVZaUJDSURFUDBISUFFRVFDQURJQUVRbXdvZ0F5QUJJQUlRclJBTElBQWdCRFlDQkNBQUN5d0JBWDhnQVNBQUtBSUVJZ0pIQkVBRFFDQUFFRHNhSUFKQmZHb2lBaUFCUncwQUN3c2dBQ0FCTmdJRUN3d0FJQUFnQUNnQ0FCQ3hDZ3NMQUNBQUlBQVFQQkNxQmdzSEFDQUFLQUlZQ3djQUlBQW9BaFFMUUFFQmZ5QUFRZUNYQ1RZQ0FDQUFLQUtrQVNJQkJFQWdBUkN6Q2dzZ0FFR1FBV29RR1JvZ0FFR0FBV29RMndFZ0FFSHdBR29RMndFZ0FCRGVCQm9nQUFzSEFDQUFLQUowQ3drQUlBQWdBVFlDZEFzSkFDQUFJQUUyQW5BTENnQWdBQkRlQkJvZ0FBc2NBQ0FBUWFTUkNUWUNBQ0FBUWZBQWFoQVpHaUFBRU40RUdpQUFDd2tBSUFCQkZHb1FHd3NjQUNBQVFkeVBDVFlDQUNBQVFld0FhaEFaR2lBQUVONEVHaUFBQ3hFQUlBQWdBQ2dDQUVGOGFqWUNBQ0FBQ3hBQUlBQWdBVFlDQkNBQUlBRTJBZ0FMTlFFQmZ5TUFRUkJySWdJa0FDQUNJQUFvQWdRMkFnZ2dBaUFCS0FJRU5nSUFJQUpCQ0dvZ0FoQWVJUUFnQWtFUWFpUUFJQUFMQ3dBZ0FDQUJFRUFRdndvTEp3RUJmeUFBS0FJQUlRRWdBRUVBTmdJQUlBRUVRQ0FBRUNVaUFDZ0NBQm9nQUNnQ0JCb0xDeEVBSUFBZ0FSQm5HaUFBUVFScUVNY0dDeEFBSUFBZ0FEWUNBQ0FBSUFBMkFnUUxDUUFnQUNBQk5nSXNDMEVCQVg4Z0FDZ0NEQ0lDUVFSeEJIOGdBQ0FCRUI4UTRnY2dBQ0FCRUJNUXRnSWFJQUFvQWd3RklBSUxRUUp4QkVBZ0FSQVRRYWoxRVNnQ0FCRFBCaG9MQ3lVQkFYOGdBQ2dDQUNJRElBRTJBZ1FnQVNBRE5nSUFJQUFnQWpZQ0FDQUNJQUEyQWdRTERBQWdBQ0FCS1FJQU53SUFDMVFCQVg4akFFRVFheUlDSkFBZ0FpQUFFRHNRL1JBZ0FpZ0NBRUVJYWlBQkVNZ0tJQUFnQWlnQ0FDQUNLQUlBRU1rSUlBQVFHeUlBSUFBb0FnQkJBV28yQWdBZ0FoQmZHaUFDRU1JS0lBSkJFR29rQUFzTkFCRFZBMEVRRUpRQ0VPRUhDN2dCQVFGL1FRSWhBUUpBSUFCQi9Ja0pFQ3NOQUNBQVFZT0tDUkFyRFFCQkJ5RUJJQUJCa0lvSkVDc05BRUVTSVFFZ0FFR1lpZ2tRS3cwQVFSTWhBU0FBUVorS0NSQXJEUUFnQUVHa2lna1FLdzBBUVJzaEFTQUFRYkNLQ1JBckRRQkJIQ0VCSUFCQnhJb0pFQ3NOQUVFZElRRWdBRUhXaWdrUUt3MEFRUjRoQVNBQVFlV0tDUkFyRFFCQkh5RUJJQUJCOUlvSkVDc05BRUVnSVFFZ0FFR0hpd2tRS3cwQVFTRkJBQ0FBUVpLTENSQXJHeUVCQ3lBQkMza0JBWDhqQUVFZ2F5SURKQUFnQXlBQk5nSVFJQU1nQURZQ0dDQURJQUkyQWdnZ0EwRVlhaUFEUVJCcUVCNEVRQU5BSUFNb0FoZ3NBQUJCM2dFUkFBQWhBQ0FES0FJSUlBQTZBQUFnQTBFWWFoRGpBeUFEUVFocUVPTURJQU5CR0dvZ0EwRVFhaEFlRFFBTElBTW9BZ2dhQ3lBRFFTQnFKQUFMS3dFQmZ5QUFLQUlBSVFJZ0FDQUJOZ0lBSUFJRVFDQUFFQ1VpQUNnQ0FCb2dBQ2dDQkJvZ0FoQXFDd3NUQUNBQUlBRVFaeG9nQUVFRWFpQUNFR2NhQ3owQkFYOGdBU0FDUndSQUlBTW9BZ0FoQkFOQUlBQWdCRUY4YWlBQ1FYeHFJZ0lRbHdNZ0F5QURLQUlBUVh4cUlnUTJBZ0FnQVNBQ1J3MEFDd3NMUXdFQmZ5TUFRUkJySWdFa0FDQUFFRHNhSUFGQi8vLy8vd00yQWd3Z0FVSC8vLy8vQnpZQ0NDQUJRUXhxSUFGQkNHb1FwQUVvQWdBaEFDQUJRUkJxSkFBZ0FBc3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkFiR2lBQ1FYeHFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBdXJCZ0lGZndSK0l3QkJnQUZySWdVa0FBSkFBa0FDUUNBRElBUkNBRUlBRUtZRVJRMEFJQU1nQkJDSEVTRUhJQUpDTUlpbklnbEIvLzhCY1NJR1FmLy9BVVlOQUNBSERRRUxJQVZCRUdvZ0FTQUNJQU1nQkJDTEFTQUZJQVVwQXhBaUFpQUZLUU1ZSWdFZ0FpQUJFTUVMSUFVcEF3Z2hBaUFGS1FNQUlRUU1BUXNnQVNBQ1F2Ly8vLy8vL3orRElBYXRRakNHaENJS0lBTWdCRUwvLy8vLy8vOC9neUFFUWpDSXAwSC8vd0Z4SWdldFFqQ0doQ0lMRUtZRVFRQk1CRUFnQVNBS0lBTWdDeENtQkFSQUlBRWhCQXdDQ3lBRlFmQUFhaUFCSUFKQ0FFSUFFSXNCSUFVcEEzZ2hBaUFGS1FOd0lRUU1BUXNnQmdSK0lBRUZJQVZCNEFCcUlBRWdDa0lBUW9DQWdJQ0FnTUM3d0FBUWl3RWdCU2tEYUNJS1FqQ0lwMEdJZjJvaEJpQUZLUU5nQ3lFRUlBZEZCRUFnQlVIUUFHb2dBeUFMUWdCQ2dJQ0FnSUNBd0x2QUFCQ0xBU0FGS1FOWUlndENNSWluUVloL2FpRUhJQVVwQTFBaEF3c2dDa0wvLy8vLy8vOC9nMEtBZ0lDQWdJREFBSVFpQ2lBTFF2Ly8vLy8vL3orRFFvQ0FnSUNBZ01BQWhDSU5mU0FFSUFOVXJYMGlERUovVlNFSUlBUWdBMzBoQ3lBR0lBZEtCRUFEUUFKK0lBZ0VRQ0FMSUF5RVVBUkFJQVZCSUdvZ0FTQUNRZ0JDQUJDTEFTQUZLUU1vSVFJZ0JTa0RJQ0VFREFVTElBdENQNGdoQ2lBTVFnR0dEQUVMSUFwQ0FZWWhDaUFFSVFzZ0JFSS9pQXNoRENBS0lBeUVJZ29nRFgwZ0MwSUJoaUlFSUFOVXJYMGlERUovVlNFSUlBUWdBMzBoQ3lBR1FYOXFJZ1lnQjBvTkFBc2dCeUVHQ3dKQUlBaEZEUUFnQ3lJRUlBd2lDb1JDQUZJTkFDQUZRVEJxSUFFZ0FrSUFRZ0FRaXdFZ0JTa0RPQ0VDSUFVcEF6QWhCQXdCQ3lBS1F2Ly8vLy8vL3o5WUJFQURRQ0FFUWorSUlRRWdCa0YvYWlFR0lBUkNBWVloQkNBQklBcENBWWFFSWdwQ2dJQ0FnSUNBd0FCVURRQUxDeUFKUVlDQUFuRWhCeUFHUVFCTUJFQWdCVUZBYXlBRUlBcEMvLy8vLy8vL1A0TWdCa0g0QUdvZ0IzS3RRakNHaEVJQVFvQ0FnSUNBZ01ERFB4Q0xBU0FGS1FOSUlRSWdCU2tEUUNFRURBRUxJQXBDLy8vLy8vLy9QNE1nQmlBSGNxMUNNSWFFSVFJTElBQWdCRGNEQUNBQUlBSTNBd2dnQlVHQUFXb2tBQXVxREFFR2Z5QUFJQUZxSVFVQ1FBSkFJQUFvQWdRaUFrRUJjUTBBSUFKQkEzRkZEUUVnQUNnQ0FDSURJQUZxSVFFZ0FDQURheUlBUWVUWkZDZ0NBRWNFUUVIZzJSUW9BZ0FoQkNBRFFmOEJUUVJBSUFBb0FnZ2lCQ0FEUVFOMklnTkJBM1JCK05rVWFrY2FJQVFnQUNnQ0RDSUNSZ1JBUWREWkZFSFEyUlFvQWdCQmZpQURkM0UyQWdBTUF3c2dCQ0FDTmdJTUlBSWdCRFlDQ0F3Q0N5QUFLQUlZSVFZQ1FDQUFJQUFvQWd3aUFrY0VRQ0FFSUFBb0FnZ2lBMDBFUUNBREtBSU1HZ3NnQXlBQ05nSU1JQUlnQXpZQ0NBd0JDd0pBSUFCQkZHb2lBeWdDQUNJRURRQWdBRUVRYWlJREtBSUFJZ1FOQUVFQUlRSU1BUXNEUUNBRElRY2dCQ0lDUVJScUlnTW9BZ0FpQkEwQUlBSkJFR29oQXlBQ0tBSVFJZ1FOQUFzZ0IwRUFOZ0lBQ3lBR1JRMEJBa0FnQUNBQUtBSWNJZ05CQW5SQmdOd1VhaUlFS0FJQVJnUkFJQVFnQWpZQ0FDQUNEUUZCMU5rVVFkVFpGQ2dDQUVGK0lBTjNjVFlDQUF3REN5QUdRUkJCRkNBR0tBSVFJQUJHRzJvZ0FqWUNBQ0FDUlEwQ0N5QUNJQVkyQWhnZ0FDZ0NFQ0lEQkVBZ0FpQUROZ0lRSUFNZ0FqWUNHQXNnQUNnQ0ZDSURSUTBCSUFJZ0F6WUNGQ0FESUFJMkFoZ01BUXNnQlNnQ0JDSUNRUU54UVFOSERRQkIyTmtVSUFFMkFnQWdCU0FDUVg1eE5nSUVJQUFnQVVFQmNqWUNCQ0FGSUFFMkFnQVBDd0pBSUFVb0FnUWlBa0VDY1VVRVFDQUZRZWpaRkNnQ0FFWUVRRUhvMlJRZ0FEWUNBRUhjMlJSQjNOa1VLQUlBSUFGcUlnRTJBZ0FnQUNBQlFRRnlOZ0lFSUFCQjVOa1VLQUlBUncwRFFkalpGRUVBTmdJQVFlVFpGRUVBTmdJQUR3c2dCVUhrMlJRb0FnQkdCRUJCNU5rVUlBQTJBZ0JCMk5rVVFkalpGQ2dDQUNBQmFpSUJOZ0lBSUFBZ0FVRUJjallDQkNBQUlBRnFJQUUyQWdBUEMwSGcyUlFvQWdBaEF5QUNRWGh4SUFGcUlRRUNRQ0FDUWY4QlRRUkFJQVVvQWdnaUJDQUNRUU4ySWdKQkEzUkIrTmtVYWtjYUlBUWdCU2dDRENJRFJnUkFRZERaRkVIUTJSUW9BZ0JCZmlBQ2QzRTJBZ0FNQWdzZ0JDQUROZ0lNSUFNZ0JEWUNDQXdCQ3lBRktBSVlJUVlDUUNBRklBVW9BZ3dpQWtjRVFDQURJQVVvQWdnaUEwMEVRQ0FES0FJTUdnc2dBeUFDTmdJTUlBSWdBellDQ0F3QkN3SkFJQVZCRkdvaUF5Z0NBQ0lFRFFBZ0JVRVFhaUlES0FJQUlnUU5BRUVBSVFJTUFRc0RRQ0FESVFjZ0JDSUNRUlJxSWdNb0FnQWlCQTBBSUFKQkVHb2hBeUFDS0FJUUlnUU5BQXNnQjBFQU5nSUFDeUFHUlEwQUFrQWdCU0FGS0FJY0lnTkJBblJCZ053VWFpSUVLQUlBUmdSQUlBUWdBallDQUNBQ0RRRkIxTmtVUWRUWkZDZ0NBRUYrSUFOM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBVkdHMm9nQWpZQ0FDQUNSUTBCQ3lBQ0lBWTJBaGdnQlNnQ0VDSURCRUFnQWlBRE5nSVFJQU1nQWpZQ0dBc2dCU2dDRkNJRFJRMEFJQUlnQXpZQ0ZDQURJQUkyQWhnTElBQWdBVUVCY2pZQ0JDQUFJQUZxSUFFMkFnQWdBRUhrMlJRb0FnQkhEUUZCMk5rVUlBRTJBZ0FQQ3lBRklBSkJmbkUyQWdRZ0FDQUJRUUZ5TmdJRUlBQWdBV29nQVRZQ0FBc2dBVUgvQVUwRVFDQUJRUU4ySWdKQkEzUkIrTmtVYWlFQkFuOUIwTmtVS0FJQUlnTkJBU0FDZENJQ2NVVUVRRUhRMlJRZ0FpQURjallDQUNBQkRBRUxJQUVvQWdnTElRTWdBU0FBTmdJSUlBTWdBRFlDRENBQUlBRTJBZ3dnQUNBRE5nSUlEd3NnQUVJQU53SVFJQUFDZjBFQUlBRkJDSFlpQWtVTkFCcEJIeUFCUWYvLy93ZExEUUFhSUFJZ0FrR0EvajlxUVJCMlFRaHhJZ0owSWdNZ0EwR0E0QjlxUVJCMlFRUnhJZ04wSWdRZ0JFR0FnQTlxUVJCMlFRSnhJZ1IwUVE5MklBSWdBM0lnQkhKcklnSkJBWFFnQVNBQ1FSVnFka0VCY1hKQkhHb0xJZ00yQWh3Z0EwRUNkRUdBM0JScUlRSUNRQUpBUWRUWkZDZ0NBQ0lFUVFFZ0EzUWlCM0ZGQkVCQjFOa1VJQVFnQjNJMkFnQWdBaUFBTmdJQUlBQWdBallDR0F3QkN5QUJRUUJCR1NBRFFRRjJheUFEUVI5R0czUWhBeUFDS0FJQUlRSURRQ0FDSWdRb0FnUkJlSEVnQVVZTkFpQURRUjEySVFJZ0EwRUJkQ0VESUFRZ0FrRUVjV29pQjBFUWFpZ0NBQ0lDRFFBTElBY2dBRFlDRUNBQUlBUTJBaGdMSUFBZ0FEWUNEQ0FBSUFBMkFnZ1BDeUFFS0FJSUlnRWdBRFlDRENBRUlBQTJBZ2dnQUVFQU5nSVlJQUFnQkRZQ0RDQUFJQUUyQWdnTEMxSUJBWDhnQUNnQ0JDRUVJQUFvQWdBaUFDQUJBbjlCQUNBQ1JRMEFHaUFFUVFoMUlnRWdCRUVCY1VVTkFCb2dBaWdDQUNBQmFpZ0NBQXNnQW1vZ0EwRUNJQVJCQW5FYklBQW9BZ0FvQWh3UkJBQUxKd0VCZnlNQVFSQnJJZ0lrQUNBQ0VPb0hJQUFnQWlBQkVKa1JJQUlRSUJvZ0FrRVFhaVFBQzcwQkFRTi9Jd0JCRUdzaUJTUUFRZS8vLy84RElnWWdBV3NnQWs4RVFDQUFFQk1oQndKL0lBWkJBWFpCY0dvZ0FVc0VRQ0FGSUFGQkFYUTJBZ2dnQlNBQklBSnFOZ0lNSUFWQkRHb2dCVUVJYWhCU0tBSUFFTXNGREFFTElBWkJmMm9MUVFGcUlnWVFnZ0loQWlBRUJFQWdBaUFISUFRUXB3UUxJQU1nQkdzaUF3UkFJQVJCQW5RaUJDQUNhaUFFSUFkcUlBTVFwd1FMSUFGQkFVY0VRQ0FIRUNvTElBQWdBaERoQVNBQUlBWVE2UUVnQlVFUWFpUUFEd3NRYmdBTEJ3QWdBQkN6Qmd1SUFnRURmeU1BUVJCcklnZ2tBRUh2Ly8vL0F5SUpJQUZCZjNOcUlBSlBCRUFnQUJBVElRb0NmeUFKUVFGMlFYQnFJQUZMQkVBZ0NDQUJRUUYwTmdJSUlBZ2dBU0FDYWpZQ0RDQUlRUXhxSUFoQkNHb1FVaWdDQUJETEJRd0JDeUFKUVg5cUMwRUJhaUlKRUlJQ0lRSWdCQVJBSUFJZ0NpQUVFS2NFQ3lBR0JFQWdCRUVDZENBQ2FpQUhJQVlRcHdRTElBTWdCV3NpQXlBRWF5SUhCRUFnQkVFQ2RDSUVJQUpxSUFaQkFuUnFJQVFnQ21vZ0JVRUNkR29nQnhDbkJBc2dBVUVCUndSQUlBb1FLZ3NnQUNBQ0VPRUJJQUFnQ1JEcEFTQUFJQU1nQm1vaUFCQzhBU0FJUVFBMkFnUWdBaUFBUVFKMGFpQUlRUVJxRUo4Q0lBaEJFR29rQUE4TEVHNEFDeFFBSUFFRVFDQUFJQUlRMWdNZ0FSRGRBUm9MQ3pFQkFYOGdBQ2dDRUJvZ0FDZ0NDQ0VDQTBBZ0FoQ3pCaUFBSUFBb0FnaEJCR29pQWpZQ0NDQUJRWDlxSWdFTkFBc0w3Z0VCQTM4akFFRVFheUlJSkFBZ0FVRi9jMEZ2YWlBQ1R3UkFJQUFRRXlFSklBQUNmMEhuLy8vL0J5QUJTd1JBSUFnZ0FVRUJkRFlDQ0NBSUlBRWdBbW8yQWd3Z0NFRU1haUFJUVFocUVGSW9BZ0FRNUFJTUFRdEJiZ3RCQVdvaUNoQ0JCQ0VDSUFRRVFDQUNJQWtnQkJEb0FRc2dCZ1JBSUFJZ0JHb2dCeUFHRU9nQkN5QURJQVZySWdNZ0JHc2lCd1JBSUFJZ0JHb2dCbW9nQkNBSmFpQUZhaUFIRU9nQkN5QUJRUXBIQkVBZ0NSQXFDeUFBSUFJUTRRRWdBQ0FLRU9rQklBQWdBeUFHYWlJQUVMd0JJQWhCQURvQUJ5QUFJQUpxSUFoQkIyb1FsQUVnQ0VFUWFpUUFEd3NRYmdBTERRQWdBQ0FDU1NBQklBQk5jUXNKQUNBQUVIODJBZ0FMTEFFQmZ5QUFLQUlFSVFJRFFDQUJJQUpIQkVBZ0FCQ2pCQm9nQWtGOGFpRUNEQUVMQ3lBQUlBRTJBZ1FMR2dBQ1FDQUFJQUZHQkVBZ0FFRUFPZ0J3REFFTElBRVFLZ3NMT0FCQjBOY1VLQUlBR2tIUTF4UW9BZ0JCME5jVUVLSUVRUUowYWhwQjBOY1VLQUlBUWREWEZCQ2lCRUVDZEdvYVFkRFhGQ2dDQUJvTENRQWdBQ0FCRUxFUkMwWUJBbjhqQUVFUWF5SUFKQUJCME5jVUVLTUVHaUFBUWYvLy8vOEROZ0lNSUFCQi8vLy8vd2MyQWdnZ0FFRU1haUFBUVFocUVLUUJLQUlBSVFFZ0FFRVFhaVFBSUFFTENRQWdBQkR1QnhBcUN4MEFJQUFnQUNnQ0FFSC8vNzkvY1VHQWdNQUFRUUFnQVJ0eU5nSUFDeFVBSUFCQmdMMFNOZ0lBSUFCQkVHb1FJQm9nQUFzVkFDQUFRZGk4RWpZQ0FDQUFRUXhxRUNBYUlBQUxCQUJCQkF0Q0FRSi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJRUWhxSUFGQkRHb1E5UUloQUVFRVFRRkJ3UE1TS0FJQUtBSUFHeUVDSUFBUTlBSWdBVUVRYWlRQUlBSUxQZ0VCZnlNQVFSQnJJZ1VrQUNBRklBUTJBZ3dnQlVFSWFpQUZRUXhxRVBVQ0lRUWdBQ0FCSUFJZ0F4RElCaUVBSUFRUTlBSWdCVUVRYWlRQUlBQUxFZ0FnQkNBQ05nSUFJQWNnQlRZQ0FFRURDeWdCQVg4Z0FFSDB1eEkyQWdBQ1FDQUFLQUlJSWdGRkRRQWdBQzBBREVVTkFDQUJFQ29MSUFBTFlBRUNmd0pBSUFBUVBDSURCRUFEUUFKQUlBQVFJeUFDSUFOQkVHb1Fqd1FFUUNBREtBSUFJZ1JGRFFRTUFRc2dBeWdDQkNJRURRQWdBU0FETmdJQUlBTkJCR29QQ3lBRUlRTU1BQUFMQUFzZ0FCQWxJUU1MSUFFZ0F6WUNBQ0FEQ3h3QUlBRW9BZ0FRdVFZZ0FDZ0NBQkROQlNBQUlBRW9BZ0EyQWdBTERBQWdBQ0FBS0FJQUVORUtDeFFBSUFBUWt4SW9BZ0FpQURZQ0FDQUFFTGtHQ3pRQUlBQW9BZ0FhSUFBb0FnQWdBQkNpQkVFQ2RHb2FJQUFvQWdBZ0FCQVdRUUowYWhvZ0FDZ0NBQ0FBRUtJRVFRSjBhaG9MY1FFQ2Z5QUFRZUM3RWpZQ0FDQUFRUkJxSVFFRFFDQUNJQUVRRmtrRVFDQUJJQUlRRVNnQ0FBUkFJQUVnQWhBUktBSUFFTTBGQ3lBQ1FRRnFJUUlNQVFzTElBQkJzQUZxRUNBYUlBRVE4QW9nQVNnQ0FBUkFJQUVROUFvZ0FSQ2pCQ0FCS0FJQUlBRVFvZ1FRM3dvTElBQUxRZ0FDUUVId3loUXRBQUJCQVhFTkFFSHd5aFFRcmdGRkRRQVFteEpCNk1vVVFjRFhGRFlDQUVIc3loUkI2TW9VTmdJQVFmREtGQkN0QVF0QjdNb1VLQUlBQ3lzQUlBQW9BZ0FhSUFBb0FnQWdBQkNpQkVFQ2RHb2FJQUFvQWdBYUlBQW9BZ0FnQUJBV1FRSjBhaG9MREFBZ0FDQUFLQUlBRU40S0MwTUJBWDhqQUVFUWF5SUJKQUJCME5jVUVLTUVHZ05BUWRUWEZDZ0NBQkN6QmtIVTF4UkIxTmNVS0FJQVFRUnFOZ0lBSUFCQmYyb2lBQTBBQ3lBQlFSQnFKQUFMV1FFQmZ5QUFLQUlJUlFSQVFRQVBDd0pBSUFBUXB3SUVRQ0FBS0FJSUlnQkJBRFlDQUNBQUtBSUVJZ0ZGRFFFZ0FSQy9EZzhMSUFBb0FnaEJBRFlDQkNBQUtBSUlJZ0FvQWdBaUFVVU5BQ0FCRUw4T0lRQUxJQUFMSUFBZ0FFR292QkkyQWdBZ0FDZ0NDQkIvUndSQUlBQW9BZ2dRdGdzTElBQUxEd0FnQUNnQ0FDQUJMQUFBRU9JRUN6OEJBWDhqQUVFUWF5SURKQUFnQXlBQU5nSUlBMEFnQVNBQ1NRUkFJQU5CQ0dvZ0FSRDRDaUFCUVFGcUlRRU1BUXNMSUFNb0FnZ2FJQU5CRUdva0FBc1ZBRUYvQW44Z0FSQVRHa0gvLy8vL0J3dEJBUnNMQ3dBZ0FDQUJJQUlRb1JJTGl3WUJDbjhqQUVFUWF5SVVKQUFnQWlBQU5nSUFJQU5CZ0FSeElSWUNRQU5BSUJWQkJFWUVRQUpBSUEwUUgwRUJTd1JBSUJRZ0RSRHNBVFlDQ0NBQ0lCUkJDR3BCQVJEQkJTQU5FT3NESUFJb0FnQVErd28yQWdBTElBTkJzQUZ4SWdOQkVFWU5BeUFEUVNCSERRQWdBU0FDS0FJQU5nSUFEQU1MQlFKQUlBZ2dGV29zQUFBaUQwRUVTdzBBQWtBQ1FBSkFBa0FDUUNBUFFRRnJEZ1FCQXdJRUFBc2dBU0FDS0FJQU5nSUFEQVFMSUFFZ0FpZ0NBRFlDQUNBR1FTQVFuUUloRHlBQ0lBSW9BZ0FpRUVFRWFqWUNBQ0FRSUE4MkFnQU1Bd3NnRFJEN0FRMENJQTFCQUJEQ0JpZ0NBQ0VQSUFJZ0FpZ0NBQ0lRUVFScU5nSUFJQkFnRHpZQ0FBd0NDeUFNRVBzQklCWkZjZzBCSUFJZ0RCRHNBU0FNRU9zRElBSW9BZ0FRK3dvMkFnQU1BUXNnQWlnQ0FDRVhJQVJCQkdvZ0JDQUhHeUlFSVJFRFFBSkFJQkVnQlU4TkFDQUdRWUFRSUJFb0FnQVEyZ0pGRFFBZ0VVRUVhaUVSREFFTEN5QU9JZzlCQVU0RVFBTkFJQTlCQVVnaUVDQVJJQVJOY2tVRVFDQVJRWHhxSWhFb0FnQWhFQ0FDSUFJb0FnQWlFa0VFYWpZQ0FDQVNJQkEyQWdBZ0QwRi9haUVQREFFTEN5QVFCSDlCQUFVZ0JrRXdFSjBDQ3lFVElBSW9BZ0FoRUFOQUlCQkJCR29oRWlBUFFRRk9CRUFnRUNBVE5nSUFJQTlCZjJvaER5QVNJUkFNQVFzTElBSWdFallDQUNBUUlBazJBZ0FMQWtBZ0JDQVJSZ1JBSUFaQk1CQ2RBaUVQSUFJZ0FpZ0NBQ0lRUVFScUloRTJBZ0FnRUNBUE5nSUFEQUVMQW45QmZ5QUxFUHNCRFFBYUlBdEJBQkJRTEFBQUN5RVNRUUFoRDBFQUlSTURRQ0FFSUJGSEJFQUNRQ0FQSUJKSEJFQWdEeUVRREFFTElBSWdBaWdDQUNJUVFRUnFOZ0lBSUJBZ0NqWUNBRUVBSVJBZ0UwRUJhaUlUSUFzUUgwOEVRQ0FQSVJJTUFRc2dDeUFURUZBdEFBQkIvd0JHQkVCQmZ5RVNEQUVMSUFzZ0V4QlFMQUFBSVJJTElCRkJmR29pRVNnQ0FDRVBJQUlnQWlnQ0FDSVlRUVJxTmdJQUlCZ2dEellDQUNBUVFRRnFJUThNQVFzTElBSW9BZ0FoRVFzZ0Z5QVJFTDRHQ3lBVlFRRnFJUlVNQVFzTElBRWdBRFlDQUFzZ0ZFRVFhaVFBQzdzQ0FRRi9Jd0JCRUdzaUNpUUFJQWtDZnlBQUJFQWdBaENDQ3lFQUFrQWdBUVJBSUFvZ0FCRG9BeUFESUFvb0FnQTJBQUFnQ2lBQUVPWUREQUVMSUFvZ0FCQzZCaUFESUFvb0FnQTJBQUFnQ2lBQUVOZ0NDeUFJSUFvUWxBTWdDaEFnR2lBRUlBQVEwZ0kyQWdBZ0JTQUFFSWdDTmdJQUlBb2dBQkNIQWlBR0lBb1Ewd0VnQ2hBZ0dpQUtJQUFRMlFJZ0J5QUtFSlFESUFvUUlCb2dBQkRsQXd3QkN5QUNFSUVMSVFBQ1FDQUJCRUFnQ2lBQUVPZ0RJQU1nQ2lnQ0FEWUFBQ0FLSUFBUTVnTU1BUXNnQ2lBQUVMb0dJQU1nQ2lnQ0FEWUFBQ0FLSUFBUTJBSUxJQWdnQ2hDVUF5QUtFQ0FhSUFRZ0FCRFNBallDQUNBRklBQVFpQUkyQWdBZ0NpQUFFSWNDSUFZZ0NoRFRBU0FLRUNBYUlBb2dBQkRaQWlBSElBb1FsQU1nQ2hBZ0dpQUFFT1VEQ3pZQ0FDQUtRUkJxSkFBTEN3QWdBQ0FCSUFJUW9oSUwvUVVCQ244akFFRVFheUlVSkFBZ0FpQUFOZ0lBSUFOQmdBUnhJUllEUUFKQUFrQUNRQUpBSUJWQkJFWUVRQ0FORUI5QkFVc0VRQ0FVSUEwUTdBRTJBZ2dnQWlBVVFRaHFRUUVRaHdzZ0RSQ1RBeUFDS0FJQUVQNEtOZ0lBQ3lBRFFiQUJjU0lEUVJCR0RRSWdBMEVnUncwQklBRWdBaWdDQURZQ0FBd0NDeUFJSUJWcUxBQUFJZzlCQkVzTkF3SkFBa0FDUUFKQUFrQWdEMEVCYXc0RUFRTUNCQUFMSUFFZ0FpZ0NBRFlDQUF3SEN5QUJJQUlvQWdBMkFnQWdCa0VnRU40QklROGdBaUFDS0FJQUloQkJBV28yQWdBZ0VDQVBPZ0FBREFZTElBMFErd0VOQlNBTlFRQVFVQzBBQUNFUElBSWdBaWdDQUNJUVFRRnFOZ0lBSUJBZ0R6b0FBQXdGQ3lBTUVQc0JJQlpGY2cwRUlBSWdEQkRzQVNBTUVKTURJQUlvQWdBUS9nbzJBZ0FNQkFzZ0FpZ0NBQ0VYSUFSQkFXb2dCQ0FIR3lJRUlSRURRQUpBSUJFZ0JVOE5BQ0FHUVlBUUlCRXNBQUFReXdKRkRRQWdFVUVCYWlFUkRBRUxDeUFPSWc5QkFVNEVRQU5BSUE5QkFVZ2lFQ0FSSUFSTmNrVUVRQ0FSUVg5cUloRXRBQUFoRUNBQ0lBSW9BZ0FpRWtFQmFqWUNBQ0FTSUJBNkFBQWdEMEYvYWlFUERBRUxDeUFRQkg5QkFBVWdCa0V3RU40QkN5RVNBMEFnQWlBQ0tBSUFJaEJCQVdvMkFnQWdEMEVCVGdSQUlCQWdFam9BQUNBUFFYOXFJUThNQVFzTElCQWdDVG9BQUFzZ0JDQVJSZ1JBSUFaQk1CRGVBU0VQSUFJZ0FpZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFBd0RDd0ovUVg4Z0N4RDdBUTBBR2lBTFFRQVFVQ3dBQUFzaEVFRUFJUTlCQUNFVEEwQWdCQ0FSUmcwREFrQWdEeUFRUndSQUlBOGhFZ3dCQ3lBQ0lBSW9BZ0FpRUVFQmFqWUNBQ0FRSUFvNkFBQkJBQ0VTSUJOQkFXb2lFeUFMRUI5UEJFQWdEeUVRREFFTElBc2dFeEJRTFFBQVFmOEFSZ1JBUVg4aEVBd0JDeUFMSUJNUVVDd0FBQ0VRQ3lBUlFYOXFJaEV0QUFBaER5QUNJQUlvQWdBaUdFRUJhallDQUNBWUlBODZBQUFnRWtFQmFpRVBEQUFBQ3dBTElBRWdBRFlDQUFzZ0ZFRVFhaVFBRHdzZ0Z5QUNLQUlBRUtVRUN5QVZRUUZxSVJVTUFBQUxBQXU3QWdFQmZ5TUFRUkJySWdva0FDQUpBbjhnQUFSQUlBSVFpUXNoQUFKQUlBRUVRQ0FLSUFBUTZBTWdBeUFLS0FJQU5nQUFJQW9nQUJEbUF3d0JDeUFLSUFBUXVnWWdBeUFLS0FJQU5nQUFJQW9nQUJEWUFnc2dDQ0FLRU5NQklBb1FJQm9nQkNBQUVOSUNPZ0FBSUFVZ0FCQ0lBam9BQUNBS0lBQVFod0lnQmlBS0VOTUJJQW9RSUJvZ0NpQUFFTmtDSUFjZ0NoRFRBU0FLRUNBYUlBQVE1UU1NQVFzZ0FoQ0lDeUVBQWtBZ0FRUkFJQW9nQUJEb0F5QURJQW9vQWdBMkFBQWdDaUFBRU9ZRERBRUxJQW9nQUJDNkJpQURJQW9vQWdBMkFBQWdDaUFBRU5nQ0N5QUlJQW9RMHdFZ0NoQWdHaUFFSUFBUTBnSTZBQUFnQlNBQUVJZ0NPZ0FBSUFvZ0FCQ0hBaUFHSUFvUTB3RWdDaEFnR2lBS0lBQVEyUUlnQnlBS0VOTUJJQW9RSUJvZ0FCRGxBd3MyQWdBZ0NrRVFhaVFBQ3dzQUlBQkJvTW9VRUpzREN3c0FJQUJCcU1vVUVKc0RDMWdCQW44akFFRVFheUlCSkFBQ1FDQUFFTUVCQkVBZ0FDZ0NBQ0VDSUFGQkFEWUNEQ0FDSUFGQkRHb1Fud0lnQUVFQUVMd0JEQUVMSUFGQkFEWUNDQ0FBSUFGQkNHb1Fud0lnQUVFQUVOUUJDeUFCUVJCcUpBQUxGUUFnQUNBQktBSUFFTW9MSUFFb0FnQVFtUUVhQytvTkFRaC9Jd0JCc0FScklnc2tBQ0FMSUFvMkFxUUVJQXNnQVRZQ3FBUWdDMEhWQkRZQ1lDQUxJQXRCaUFGcUlBdEJrQUZxSUF0QjRBQnFFSjRCSWc4b0FnQWlBVFlDaEFFZ0N5QUJRWkFEYWpZQ2dBRWdDMEhnQUdvUVRpRVJJQXRCMEFCcUVNb0NJUTRnQzBGQWF4REtBaUVNSUF0Qk1Hb1F5Z0loRFNBTFFTQnFFTW9DSVJBZ0FpQURJQXRCK0FCcUlBdEI5QUJxSUF0QjhBQnFJQkVnRGlBTUlBMGdDMEVjYWhDc0VpQUpJQWdvQWdBMkFnQWdCRUdBQkhFaEVrRUFJUUZCQUNFRUEwQWdCQ0VLQWtBQ1FBSkFJQUZCQkVZTkFDQUFJQXRCcUFScUVQWUJSUTBBQWtBQ1FBSkFJQXRCK0FCcUlBRnFMQUFBSWdKQkJFc05BRUVBSVFRQ1FBSkFBa0FDUUFKQUlBSkJBV3NPQkFBRUF3Y0JDeUFCUVFOR0RRUWdCMEdBd0FBZ0FCQ2xBUkRhQWdSQUlBdEJFR29nQUJDRUN5QVFJQXNvQWhBUXRBWU1BZ3NnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdJQ3lBQlFRTkdEUU1MQTBBZ0FDQUxRYWdFYWhEMkFVVU5BeUFIUVlEQUFDQUFFS1VCRU5vQ1JRMERJQXRCRUdvZ0FCQ0VDeUFRSUFzb0FoQVF0QVlNQUFBTEFBc2dEQkFmUVFBZ0RSQWZhMFlOQVFKQUlBd1FId1JBSUEwUUh3MEJDeUFNRUI4aEF5QUFFS1VCSVFJZ0F3UkFJQXdRRXlnQ0FDQUNSZ1JBSUFBUXZRRWFJQXdnQ2lBTUVCOUJBVXNiSVFRTUNRc2dCa0VCT2dBQURBTUxJQUlnRFJBVEtBSUFSdzBDSUFBUXZRRWFJQVpCQVRvQUFDQU5JQW9nRFJBZlFRRkxHeUVFREFjTElBQVFwUUVnREJBVEtBSUFSZ1JBSUFBUXZRRWFJQXdnQ2lBTUVCOUJBVXNiSVFRTUJ3c2dBQkNsQVNBTkVCTW9BZ0JHQkVBZ0FCQzlBUm9nQmtFQk9nQUFJQTBnQ2lBTkVCOUJBVXNiSVFRTUJ3c2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0ZDeUFTSUFGQkFra2dDbkp5UlFSQUlBRkJBa1lnQ3kwQWUwRUFSM0ZGRFFZTElBc2dEaERzQVRZQ0NDQUxRUkJxSUF0QkNHb1FaeUVDQWtBZ0FVVU5BQ0FCSUF0cUxRQjNRUUZMRFFBRFFBSkFJQXNnRGhEckF6WUNDQ0FDSUF0QkNHb1FIa1VOQUNBSFFZREFBQ0FDS0FJQUtBSUFFTm9DUlEwQUlBSVFaaG9NQVFzTElBc2dEaERzQVRZQ0NDQUNJQXRCQ0dvUW53UWlBaUFRRUI5TkJFQWdDeUFRRU9zRE5nSUlJQXRCQ0dvZ0FoQ0dCeUFRRU9zRElBNFE3QUVRcUJJTkFRc2dDeUFPRU93Qk5nSUFJQXRCQ0dvZ0N4Qm5HaUFMSUFzb0FnZzJBaEFMSUFzZ0N5Z0NFRFlDQ0FOQUFrQWdDeUFPRU9zRE5nSUFJQXRCQ0dvZ0N4QWVSUTBBSUFBZ0MwR29CR29ROWdGRkRRQWdBQkNsQVNBTEtBSUlLQUlBUncwQUlBQVF2UUVhSUF0QkNHb1FaaG9NQVFzTElCSkZEUUFnQ3lBT0VPc0ROZ0lBSUF0QkNHb2dDeEFlRFFFTElBb2hCQXdFQ3lBRklBVW9BZ0JCQkhJMkFnQkJBQ0VBREFJTEEwQUNRQ0FBSUF0QnFBUnFFUFlCUlEwQUFuOGdCMEdBRUNBQUVLVUJJZ0lRMmdJRVFDQUpLQUlBSWdNZ0N5Z0NwQVJHQkVBZ0NDQUpJQXRCcEFScUVPUUVJQWtvQWdBaEF3c2dDU0FEUVFScU5nSUFJQU1nQWpZQ0FDQUVRUUZxREFFTElBUkZJQkVRSDBWeURRRWdBaUFMS0FKd1J3MEJJQXNvQW9RQklnSWdDeWdDZ0FGR0JFQWdEeUFMUVlRQmFpQUxRWUFCYWhEa0JDQUxLQUtFQVNFQ0N5QUxJQUpCQkdvMkFvUUJJQUlnQkRZQ0FFRUFDeUVFSUFBUXZRRWFEQUVMQ3lBUEtBSUFJUU1DUUNBRVJRMEFJQU1nQ3lnQ2hBRWlBa1lOQUNBTEtBS0FBU0FDUmdSQUlBOGdDMEdFQVdvZ0MwR0FBV29RNUFRZ0N5Z0NoQUVoQWdzZ0N5QUNRUVJxTmdLRUFTQUNJQVEyQWdBTEFrQWdDeWdDSEVFQlNBMEFBa0FnQUNBTFFhZ0VhaERIQVVVRVFDQUFFS1VCSUFzb0FuUkdEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzRFFDQUFFTDBCR2lBTEtBSWNRUUZJRFFFQ1FDQUFJQXRCcUFScUVNY0JSUVJBSUFkQmdCQWdBQkNsQVJEYUFnMEJDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVFMSUFrb0FnQWdDeWdDcEFSR0JFQWdDQ0FKSUF0QnBBUnFFT1FFQ3lBQUVLVUJJUUlnQ1NBSktBSUFJZ05CQkdvMkFnQWdBeUFDTmdJQUlBc2dDeWdDSEVGL2FqWUNIQXdBQUFzQUN5QUtJUVFnQ0NnQ0FDQUpLQUlBUncwQ0lBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUFRc0NRQ0FLUlEwQVFRRWhCQU5BSUFRZ0NoQWZUdzBCQWtBZ0FDQUxRYWdFYWhESEFVVUVRQ0FBRUtVQklBb2dCQkRDQmlnQ0FFWU5BUXNnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdEQ3lBQUVMMEJHaUFFUVFGcUlRUU1BQUFMQUF0QkFTRUFJQThvQWdBZ0N5Z0NoQUZHRFFCQkFDRUFJQXRCQURZQ0VDQVJJQThvQWdBZ0N5Z0NoQUVnQzBFUWFoRHZBU0FMS0FJUUJFQWdCU0FGS0FJQVFRUnlOZ0lBREFFTFFRRWhBQXNnRUJBZ0dpQU5FQ0FhSUF3UUlCb2dEaEFnR2lBUkVDQWFJQThRblFFZ0MwR3dCR29rQUNBQUR3c2dBVUVCYWlFQkRBQUFDd0FMSFFBZ0FDQUJFRjhReGdFZ0FSQWxLQUlBSVFFZ0FCQWxJQUUyQWdBTE5BRUJmeU1BUVJCcklnSWtBQ0FDSUFBb0FnQTJBZ2dnQWlBQ0tBSUlJQUZxTmdJSUlBSW9BZ2doQUNBQ1FSQnFKQUFnQUFzTEFDQUFRWkRLRkJDYkF3c0xBQ0FBUVpqS0ZCQ2JBd3ZGQVFFR2Z5TUFRUkJySWdRa0FDQUFFQ1VvQWdBaEJRSi9JQUlvQWdBZ0FDZ0NBR3NpQTBILy8vLy9CMGtFUUNBRFFRRjBEQUVMUVg4TElnTkJBU0FER3lFRElBRW9BZ0FoQmlBQUtBSUFJUWNnQlVIVkJFWUVmMEVBQlNBQUtBSUFDeUFERUxBR0lnZ0VRQ0FGUWRVRVJ3UkFJQUFRWHhvTElBUkIxQVEyQWdRZ0FDQUVRUWhxSUFnZ0JFRUVhaENlQVNJRkVJWUxJQVVRblFFZ0FTQUFLQUlBSUFZZ0IydHFOZ0lBSUFJZ0F5QUFLQUlBYWpZQ0FDQUVRUkJxSkFBUEN4Q0NBUUFMR2dBZ0FDQUJLQUlBRU00TFFSaDBRUmgxSUFFb0FnQVFkUm9MbXc0QkNIOGpBRUd3QkdzaUN5UUFJQXNnQ2pZQ3BBUWdDeUFCTmdLb0JDQUxRZFVFTmdKb0lBc2dDMEdJQVdvZ0MwR1FBV29nQzBIb0FHb1FuZ0VpRHlnQ0FDSUJOZ0tFQVNBTElBRkJrQU5xTmdLQUFTQUxRZWdBYWhCT0lSRWdDMEhZQUdvUVRpRU9JQXRCeUFCcUVFNGhEQ0FMUVRocUVFNGhEU0FMUVNocUVFNGhFQ0FDSUFNZ0MwSDRBR29nQzBIM0FHb2dDMEgyQUdvZ0VTQU9JQXdnRFNBTFFTUnFFTEVTSUFrZ0NDZ0NBRFlDQUNBRVFZQUVjU0VTUVFBaEFVRUFJUVFEUUNBRUlRb0NRQUpBQWtBZ0FVRUVSZzBBSUFBZ0MwR29CR29ROEFGRkRRQUNRQUpBQWtBZ0MwSDRBR29nQVdvc0FBQWlBa0VFU3cwQVFRQWhCQUpBQWtBQ1FBSkFBa0FnQWtFQmF3NEVBQVFEQndFTElBRkJBMFlOQkNBSFFZREFBQ0FBRUo4QkVNc0NCRUFnQzBFWWFpQUFFSXNMSUJBZ0N5d0FHQkRpQkF3Q0N5QUZJQVVvQWdCQkJISTJBZ0JCQUNFQURBZ0xJQUZCQTBZTkF3c0RRQ0FBSUF0QnFBUnFFUEFCUlEwRElBZEJnTUFBSUFBUW53RVF5d0pGRFFNZ0MwRVlhaUFBRUlzTElCQWdDeXdBR0JEaUJBd0FBQXNBQ3lBTUVCOUJBQ0FORUI5clJnMEJBa0FnREJBZkJFQWdEUkFmRFFFTElBd1FIeUVESUFBUW53RWhBaUFEQkVBZ0RFRUFFRkF0QUFBZ0FrSC9BWEZHQkVBZ0FCQzFBUm9nRENBS0lBd1FIMEVCU3hzaEJBd0pDeUFHUVFFNkFBQU1Bd3NnRFVFQUVGQXRBQUFnQWtIL0FYRkhEUUlnQUJDMUFSb2dCa0VCT2dBQUlBMGdDaUFORUI5QkFVc2JJUVFNQndzZ0FCQ2ZBVUgvQVhFZ0RFRUFFRkF0QUFCR0JFQWdBQkMxQVJvZ0RDQUtJQXdRSDBFQlN4c2hCQXdIQ3lBQUVKOEJRZjhCY1NBTlFRQVFVQzBBQUVZRVFDQUFFTFVCR2lBR1FRRTZBQUFnRFNBS0lBMFFIMEVCU3hzaEJBd0hDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVVMSUJJZ0FVRUNTU0FLY25KRkJFQWdBVUVDUmlBTExRQjdRUUJIY1VVTkJnc2dDeUFPRU93Qk5nSVFJQXRCR0dvZ0MwRVFhaEJuSVFJQ1FDQUJSUTBBSUFFZ0Myb3RBSGRCQVVzTkFBTkFBa0FnQ3lBT0VKTUROZ0lRSUFJZ0MwRVFhaEFlUlEwQUlBZEJnTUFBSUFJb0FnQXNBQUFReXdKRkRRQWdBaERqQXd3QkN3c2dDeUFPRU93Qk5nSVFJQUlvQWdBZ0N5Z0NFR3NpQWlBUUVCOU5CRUFnQ3lBUUVKTUROZ0lRSUF0QkVHcEJBQ0FDYXhDSEN5QVFFSk1ESUE0UTdBRVFyaElOQVFzZ0N5QU9FT3dCTmdJSUlBdEJFR29nQzBFSWFoQm5HaUFMSUFzb0FoQTJBaGdMSUFzZ0N5Z0NHRFlDRUFOQUFrQWdDeUFPRUpNRE5nSUlJQXRCRUdvZ0MwRUlhaEFlUlEwQUlBQWdDMEdvQkdvUThBRkZEUUFnQUJDZkFVSC9BWEVnQ3lnQ0VDMEFBRWNOQUNBQUVMVUJHaUFMUVJCcUVPTUREQUVMQ3lBU1JRMEFJQXNnRGhDVEF6WUNDQ0FMUVJCcUlBdEJDR29RSGcwQkN5QUtJUVFNQkFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3Q0N3TkFBa0FnQUNBTFFhZ0VhaER3QVVVTkFBSi9JQWRCZ0JBZ0FCQ2ZBU0lDRU1zQ0JFQWdDU2dDQUNJRElBc29BcVFFUmdSQUlBZ2dDU0FMUWFRRWFoQ0tDeUFKS0FJQUlRTUxJQWtnQTBFQmFqWUNBQ0FESUFJNkFBQWdCRUVCYWd3QkN5QUVSU0FSRUI5RmNnMEJJQXN0QUhZZ0FrSC9BWEZIRFFFZ0N5Z0NoQUVpQWlBTEtBS0FBVVlFUUNBUElBdEJoQUZxSUF0QmdBRnFFT1FFSUFzb0FvUUJJUUlMSUFzZ0FrRUVhallDaEFFZ0FpQUVOZ0lBUVFBTElRUWdBQkMxQVJvTUFRc0xJQThvQWdBaEF3SkFJQVJGRFFBZ0F5QUxLQUtFQVNJQ1JnMEFJQXNvQW9BQklBSkdCRUFnRHlBTFFZUUJhaUFMUVlBQmFoRGtCQ0FMS0FLRUFTRUNDeUFMSUFKQkJHbzJBb1FCSUFJZ0JEWUNBQXNDUUNBTEtBSWtRUUZJRFFBQ1FDQUFJQXRCcUFScUVMNEJSUVJBSUFBUW53RkIvd0Z4SUFzdEFIZEdEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzRFFDQUFFTFVCR2lBTEtBSWtRUUZJRFFFQ1FDQUFJQXRCcUFScUVMNEJSUVJBSUFkQmdCQWdBQkNmQVJETEFnMEJDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVFMSUFrb0FnQWdDeWdDcEFSR0JFQWdDQ0FKSUF0QnBBUnFFSW9MQ3lBQUVKOEJJUUlnQ1NBSktBSUFJZ05CQVdvMkFnQWdBeUFDT2dBQUlBc2dDeWdDSkVGL2FqWUNKQXdBQUFzQUN5QUtJUVFnQ0NnQ0FDQUpLQUlBUncwQ0lBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUFRc0NRQ0FLUlEwQVFRRWhCQU5BSUFRZ0NoQWZUdzBCQWtBZ0FDQUxRYWdFYWhDK0FVVUVRQ0FBRUo4QlFmOEJjU0FLSUFRUVVDMEFBRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN5QUFFTFVCR2lBRVFRRnFJUVFNQUFBTEFBdEJBU0VBSUE4b0FnQWdDeWdDaEFGR0RRQkJBQ0VBSUF0QkFEWUNHQ0FSSUE4b0FnQWdDeWdDaEFFZ0MwRVlhaER2QVNBTEtBSVlCRUFnQlNBRktBSUFRUVJ5TmdJQURBRUxRUUVoQUFzZ0VCQWdHaUFORUNBYUlBd1FJQm9nRGhBZ0dpQVJFQ0FhSUE4UW5RRWdDMEd3Qkdva0FDQUFEd3NnQVVFQmFpRUJEQUFBQ3dBTERBQWdBRUVCUVMwUW5nc2FDeTBCQVg4Z0FDRUJRUUFoQUFOQUlBQkJBMGNFUUNBQklBQkJBblJxUVFBMkFnQWdBRUVCYWlFQURBRUxDd3NNQUNBQVFRRkJMUkRzRFJvTER3QWdBQkM5QnlBQVFRUnFFTWNHQ3pVQkFYOGpBRUVRYXlJQ0pBQWdBaUFBTFFBQU9nQVBJQUFnQVMwQUFEb0FBQ0FCSUFKQkQyb3RBQUE2QUFBZ0FrRVFhaVFBQzJRQkFYOGpBRUVRYXlJR0pBQWdCa0VBT2dBUElBWWdCVG9BRGlBR0lBUTZBQTBnQmtFbE9nQU1JQVVFUUNBR1FRMXFJQVpCRG1vUWtRc0xJQUlnQVNBQklBSW9BZ0FRbWcwZ0JrRU1haUFESUFBb0FnQVFEQ0FCYWpZQ0FDQUdRUkJxSkFBTEhnRUJmeU1BUVJCcklnRWtBQ0FBSUFGQkNHb1F2UklnQVVFUWFpUUFDMElBSUFFZ0FpQURJQVJCQkJDV0F5RUJJQU10QUFCQkJIRkZCRUFnQUNBQlFkQVBhaUFCUWV3T2FpQUJJQUZCNUFCSUd5QUJRY1VBU0J0QmxIRnFOZ0lBQ3d0QUFDQUNJQU1nQUVFSWFpQUFLQUlJS0FJRUVRQUFJZ0FnQUVHZ0Ftb2dCU0FFUVFBUXd3WWdBR3NpQUVHZkFrd0VRQ0FCSUFCQkRHMUJERzgyQWdBTEMwQUFJQUlnQXlBQVFRaHFJQUFvQWdnb0FnQVJBQUFpQUNBQVFhZ0JhaUFGSUFSQkFCRERCaUFBYXlJQVFhY0JUQVJBSUFFZ0FFRU1iVUVIYnpZQ0FBc0xPZ0VCZnlBQklBSkhCRUFnQXlnQ0FDRUVBMEFnQUNBRUlBRVFsd01nQXlBREtBSUFRUVJxSWdRMkFnQWdBVUVFYWlJQklBSkhEUUFMQ3d0Q0FDQUJJQUlnQXlBRVFRUVFtQU1oQVNBRExRQUFRUVJ4UlFSQUlBQWdBVUhRRDJvZ0FVSHNEbW9nQVNBQlFlUUFTQnNnQVVIRkFFZ2JRWlJ4YWpZQ0FBc0xRQUFnQWlBRElBQkJDR29nQUNnQ0NDZ0NCQkVBQUNJQUlBQkJvQUpxSUFVZ0JFRUFFTVVHSUFCcklnQkJud0pNQkVBZ0FTQUFRUXh0UVF4dk5nSUFDd3RBQUNBQ0lBTWdBRUVJYWlBQUtBSUlLQUlBRVFBQUlnQWdBRUdvQVdvZ0JTQUVRUUFReFFZZ0FHc2lBRUduQVV3RVFDQUJJQUJCREcxQkIyODJBZ0FMQ3dRQVFRSUxQd0VCZnlBQUVOQUtJQUZKQkVBUWJnQUxJQUFnQUJBN0lBRVE1QWNpQWpZQ0FDQUFJQUkyQWdRZ0FCQWJJQUlnQVVFQ2RHbzJBZ0FnQUVFQUVLMEZDOE1GQVFwL0l3QkJFR3NpQ1NRQUlBWVFpUUloQ2lBSklBWVE2QVFpRFJDSEFpQUZJQU0yQWdBZ0FDSUhMUUFBSWdaQlZXb2lDRUVDU3lBSVFRRnJSWEpGQkVBZ0NpQUdRUmgwUVJoMUVKMENJUVlnQlNBRktBSUFJZ2RCQkdvMkFnQWdCeUFHTmdJQUlBQkJBV29oQndzQ1FBSkFJQUlnQnlJR2EwRUJUQTBBSUFjdEFBQkJNRWNOQUNBSExRQUJRU0J5UWZnQVJ3MEFJQXBCTUJDZEFpRUdJQVVnQlNnQ0FDSUlRUVJxTmdJQUlBZ2dCallDQUNBS0lBY3NBQUVRblFJaEJpQUZJQVVvQWdBaUNFRUVhallDQUNBSUlBWTJBZ0FnQjBFQ2FpSUhJUVlEUUNBR0lBSlBEUUlnQml3QUFCQi9FTGdMUlEwQ0lBWkJBV29oQmd3QUFBc0FDd05BSUFZZ0FrOE5BU0FHTEFBQUlRZ1FmeG9nQ0JETkFrVU5BU0FHUVFGcUlRWU1BQUFMQUFzQ1FDQUpFUHNCQkVBZ0NpQUhJQVlnQlNnQ0FCQy9BeUFGSUFVb0FnQWdCaUFIYTBFQ2RHbzJBZ0FNQVFzZ0J5QUdFS1VFSUEwUWlBSWhEaUFISVFnRFFDQUlJQVpQQkVBZ0F5QUhJQUJyUVFKMGFpQUZLQUlBRUw0R0JRSkFJQWtnQ3hCUUxBQUFRUUZJRFFBZ0RDQUpJQXNRVUN3QUFFY05BQ0FGSUFVb0FnQWlERUVFYWpZQ0FDQU1JQTQyQWdBZ0N5QUxJQWtRSDBGL2FrbHFJUXRCQUNFTUN5QUtJQWdzQUFBUW5RSWhEeUFGSUFVb0FnQWlFRUVFYWpZQ0FDQVFJQTgyQWdBZ0NFRUJhaUVJSUF4QkFXb2hEQXdCQ3dzTEFrQUNRQU5BSUFZZ0FrOE5BU0FHTFFBQUlnZEJMa2NFUUNBS0lBZEJHSFJCR0hVUW5RSWhCeUFGSUFVb0FnQWlDRUVFYWpZQ0FDQUlJQWMyQWdBZ0JrRUJhaUVHREFFTEN5QU5FTklDSVFjZ0JTQUZLQUlBSWd0QkJHb2lDRFlDQUNBTElBYzJBZ0FnQmtFQmFpRUdEQUVMSUFVb0FnQWhDQXNnQ2lBR0lBSWdDQkMvQXlBRklBVW9BZ0FnQWlBR2EwRUNkR29pQlRZQ0FDQUVJQVVnQXlBQklBQnJRUUowYWlBQklBSkdHellDQUNBSkVDQWFJQWxCRUdva0FBc1NBQ0FBRU9vQklBQWdBU0FDRUpzUklBQUxzZ1VCQ244akFFRVFheUlKSkFBZ0JoRDZBU0VLSUFrZ0JoRHFCQ0lORUljQ0lBVWdBellDQUNBQUlnY3RBQUFpQmtGVmFpSUlRUUpMSUFoQkFXdEZja1VFUUNBS0lBWkJHSFJCR0hVUTNnRWhCaUFGSUFVb0FnQWlCMEVCYWpZQ0FDQUhJQVk2QUFBZ0FFRUJhaUVIQ3dKQUFrQWdBaUFISWdaclFRRk1EUUFnQnkwQUFFRXdSdzBBSUFjdEFBRkJJSEpCK0FCSERRQWdDa0V3RU40QklRWWdCU0FGS0FJQUlnaEJBV28yQWdBZ0NDQUdPZ0FBSUFvZ0J5d0FBUkRlQVNFR0lBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0Jqb0FBQ0FIUVFKcUlnY2hCZ05BSUFZZ0FrOE5BaUFHTEFBQUVIOFF1QXRGRFFJZ0JrRUJhaUVHREFBQUN3QUxBMEFnQmlBQ1R3MEJJQVlzQUFBaENCQi9HaUFJRU0wQ1JRMEJJQVpCQVdvaEJnd0FBQXNBQ3dKQUlBa1Erd0VFUUNBS0lBY2dCaUFGS0FJQUVPNERJQVVnQlNnQ0FDQUdJQWRyYWpZQ0FBd0JDeUFISUFZUXBRUWdEUkNJQWlFT0lBY2hDQU5BSUFnZ0JrOEVRQ0FESUFjZ0FHdHFJQVVvQWdBUXBRUUZBa0FnQ1NBTUVGQXNBQUJCQVVnTkFDQUxJQWtnREJCUUxBQUFSdzBBSUFVZ0JTZ0NBQ0lMUVFGcU5nSUFJQXNnRGpvQUFDQU1JQXdnQ1JBZlFYOXFTV29oREVFQUlRc0xJQW9nQ0N3QUFCRGVBU0VQSUFVZ0JTZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFDQUlRUUZxSVFnZ0MwRUJhaUVMREFFTEN3c0RRQUpBSUFvQ2Z5QUdJQUpKQkVBZ0JpMEFBQ0lIUVM1SERRSWdEUkRTQWlFSElBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0J6b0FBQ0FHUVFGcUlRWUxJQVlMSUFJZ0JTZ0NBQkR1QXlBRklBVW9BZ0FnQWlBR2Eyb2lCVFlDQUNBRUlBVWdBeUFCSUFCcmFpQUJJQUpHR3pZQ0FDQUpFQ0FhSUFsQkVHb2tBQThMSUFvZ0IwRVlkRUVZZFJEZUFTRUhJQVVnQlNnQ0FDSUlRUUZxTmdJQUlBZ2dCem9BQUNBR1FRRnFJUVlNQUFBTEFBc1BBQ0FCSUFJZ0F5QUVJQVVRL2hJTENRQWdBQ0FCRUpVREN4TUFJQUJCQURvQUJDQUFRWUFDTmdBQUlBQUxSUUVCZnlNQVFSQnJJZ01rQUNBRElBRTJBZ3dnQXlBQ05nSUlJQU1nQTBFTWFoRDFBaUVCSUFCQjRia1NJQU1vQWdnUXZBc2hBQ0FCRVBRQ0lBTkJFR29rQUNBQUM2UUJBZ0ovQkg0akFFRWdheUlFSkFBQ1FDQUJJQUpIQkVCQjJNQVVLQUlBSVFWQjJNQVVRUUEyQWdBZ0JDQUJJQVJCSEdvUXFoRWdCQ2tEQ0NFR0lBUXBBd0FoQjBIWXdCUW9BZ0FpQVVVRVFFSFl3QlFnQlRZQ0FBc2dBaUFFS0FJY1JnUkFJQWNoQ0NBR0lRa2dBVUhFQUVjTkFnc2dBMEVFTmdJQUlBZ2hCeUFKSVFZTUFRc2dBMEVFTmdJQUN5QUFJQWMzQXdBZ0FDQUdOd01JSUFSQklHb2tBQXVGQVFJQ2Z3SjhJd0JCRUdzaUF5UUFBa0FnQUNBQlJ3UkFRZGpBRkNnQ0FDRUVRZGpBRkVFQU5nSUFFSDhhSUFBZ0EwRU1haENqRXlFRlFkakFGQ2dDQUNJQVJRUkFRZGpBRkNBRU5nSUFDeUFCSUFNb0FneEdCRUFnQlNFR0lBQkJ4QUJIRFFJTElBSkJCRFlDQUNBR0lRVU1BUXNnQWtFRU5nSUFDeUFEUVJCcUpBQWdCUXVGQVFJQ2Z3SjlJd0JCRUdzaUF5UUFBa0FnQUNBQlJ3UkFRZGpBRkNnQ0FDRUVRZGpBRkVFQU5nSUFFSDhhSUFBZ0EwRU1haENrRXlFRlFkakFGQ2dDQUNJQVJRUkFRZGpBRkNBRU5nSUFDeUFCSUFNb0FneEdCRUFnQlNFR0lBQkJ4QUJIRFFJTElBSkJCRFlDQUNBR0lRVU1BUXNnQWtFRU5nSUFDeUFEUVJCcUpBQWdCUXU4QVFJRGZ3RitJd0JCRUdzaUJDUUFBbjRnQUNBQlJ3UkFBa0FDUUNBQUxRQUFJZ1ZCTFVjTkFDQUFRUUZxSWdBZ0FVY05BQXdCQzBIWXdCUW9BZ0FoQmtIWXdCUkJBRFlDQUNBQUlBUkJER29nQXhCL0VQb0hJUWRCMk1BVUtBSUFJZ0JGQkVCQjJNQVVJQVkyQWdBTElBRWdCQ2dDREVjTkFDQUFRY1FBUjBFQVFuOGdCMW9iUlFSQUlBSkJCRFlDQUVKL0RBTUxRZ0FnQjMwZ0J5QUZRUzFHR3d3Q0N3c2dBa0VFTmdJQVFnQUxJUWNnQkVFUWFpUUFJQWNMUXdFQmZ5QUFLQUlFSWdBZ0FTZ0NCQ0lCY2tVaEFpQUFSU0FCUlhJRWZ5QUNCU0FBRUpvQklBRVFtZ0ZHQkg4Z0FCQkFJQUFRTWlBQkVFQVFneE1GUVFBTEN3dkRBUUlEZndGK0l3QkJFR3NpQkNRQUFuOGdBQ0FCUndSQUFrQUNRQ0FBTFFBQUlnVkJMVWNOQUNBQVFRRnFJZ0FnQVVjTkFBd0JDMEhZd0JRb0FnQWhCa0hZd0JSQkFEWUNBQ0FBSUFSQkRHb2dBeEIvRVBvSElRZEIyTUFVS0FJQUlnQkZCRUJCMk1BVUlBWTJBZ0FMSUFFZ0JDZ0NERWNOQUNBQVFjUUFSMEVBSUFkQy8vLy8vdzlZRzBVRVFDQUNRUVEyQWdCQmZ3d0RDMEVBSUFlbklnQnJJQUFnQlVFdFJoc01BZ3NMSUFKQkJEWUNBRUVBQ3lFQUlBUkJFR29rQUNBQUN3OEFJQUVnQWlBRElBUWdCUkNRRXd2SUFRSURmd0YrSXdCQkVHc2lCQ1FBQW44Z0FDQUJSd1JBQWtBQ1FDQUFMUUFBSWdWQkxVY05BQ0FBUVFGcUlnQWdBVWNOQUF3QkMwSFl3QlFvQWdBaEJrSFl3QlJCQURZQ0FDQUFJQVJCREdvZ0F4Qi9FUG9ISVFkQjJNQVVLQUlBSWdCRkJFQkIyTUFVSUFZMkFnQUxJQUVnQkNnQ0RFY05BQ0FBUWNRQVIwRUFJQWRDLy84RFdCdEZCRUFnQWtFRU5nSUFRZi8vQXd3REMwRUFJQWVuSWdCcklBQWdCVUV0UmhzTUFnc0xJQUpCQkRZQ0FFRUFDeUVBSUFSQkVHb2tBQ0FBUWYvL0EzRUx5UUVDQW44QmZpTUFRUkJySWdRa0FBSkFJQUFnQVVjRVFBSkFRZGpBRkNnQ0FDRUZRZGpBRkVFQU5nSUFJQUFnQkVFTWFpQURFSDhRc2dzaEJrSFl3QlFvQWdBaUFFVUVRRUhZd0JRZ0JUWUNBQXNnQVNBRUtBSU1SdzBBSUFCQnhBQkdJQVpDZ0lDQWdJQ0FnSUNBZjFOeVJVRUFRdi8vLy8vLy8vLy8vd0FnQmxrYkRRSWdBa0VFTmdJQUlBWkNBVmtFUUVMLy8vLy8vLy8vLy84QUlRWU1Bd3RDZ0lDQWdJQ0FnSUNBZnlFR0RBSUxDeUFDUVFRMkFnQkNBQ0VHQ3lBRVFSQnFKQUFnQmd1MkFRSUNmd0YrSXdCQkVHc2lCQ1FBQW44Z0FDQUJSd1JBQWtCQjJNQVVLQUlBSVFWQjJNQVVRUUEyQWdBZ0FDQUVRUXhxSUFNUWZ4Q3lDeUVHUWRqQUZDZ0NBQ0lBUlFSQVFkakFGQ0FGTmdJQUN5QUJJQVFvQWd4SERRQWdBRUhFQUVZZ0JrS0FnSUNBZUZOeVJVRUFJQVpDLy8vLy93ZFhHMFVFUUNBQ1FRUTJBZ0JCLy8vLy93Y2dCa0lCV1EwREdrR0FnSUNBZUF3REN5QUdwd3dDQ3dzZ0FrRUVOZ0lBUVFBTElRQWdCRUVRYWlRQUlBQUxDZ0FnQVNBQWEwRU1iUXVZQVFFRWZ5TUFRUkJySWdVa0FDQUJJQUlRcndVaUJFSHYvLy8vQTAwRVFBSkFJQVJCQVUwRVFDQUFJQVFRMUFFZ0FDRUREQUVMSUFBZ0JCRExCVUVCYWlJR0VJSUNJZ01RNFFFZ0FDQUdFT2tCSUFBZ0JCQzhBUXNEUUNBQklBSkhCRUFnQXlBQkVKOENJQU5CQkdvaEF5QUJRUVJxSVFFTUFRc0xJQVZCQURZQ0RDQURJQVZCREdvUW53SWdCVUVRYWlRQUR3c1FiZ0FMYkFFQmZ3SkFJQUVvQWdBZ0FDZ0NBSE5CLy84UGNRMEFJQUFRaWdFZ0FSQ0tBVWNOQUNBQUVLZ0ZJQUVRcUFWSERRQWdBQkNvQWlBQkVLZ0NSdzBBSUFBUXlBUWdBUkRJQkVjTkFDQUFFS2NGSUFFUXB3VkhEUUFnQUJDQUJpQUJFSUFHYzBFQmN5RUNDeUFDQ3drQUlBQWdBUkNvQ3dzV0FDQUFJQUVnQWtLQWdJQ0FnSUNBZ0lCL0VJVUlDekVCQVg5QndQTVNLQUlBSVFFZ0FBUkFRY0R6RWtHUXlSUWdBQ0FBUVg5R0d6WUNBQXRCZnlBQklBRkJrTWtVUmhzTHZ3Z0JCWDhnQVNnQ0FDRUVBa0FDUUFKQUFrQUNRQUpBQWtBQ2Z3SkFBa0FnQTBVTkFDQURLQUlBSWdaRkRRQWdBRVVFUUNBQ0lRTU1CQXNnQTBFQU5nSUFJQUloQXd3QkN3SkFBa0JCd1BNU0tBSUFLQUlBUlFSQUlBQkZEUUVnQWtVTkN5QUNJUVlEUUNBRUxBQUFJZ01FUUNBQUlBTkIvNzhEY1RZQ0FDQUFRUVJxSVFBZ0JFRUJhaUVFSUFaQmYyb2lCZzBCREEwTEN5QUFRUUEyQWdBZ0FVRUFOZ0lBSUFJZ0Jtc1BDeUFDSVFNZ0FFVU5BU0FDSVFWQkFBd0RDeUFFRUtBQkR3dEJBU0VGREFJTFFRRUxJUWNEUUNBSFJRUkFJQVZGRFFnRFFBSkFBa0FDUUNBRUxRQUFJZ2RCZjJvaUNFSCtBRXNFUUNBSElRWWdCU0VEREFFTElBUkJBM0VnQlVFRlNYSU5BU0FGSUFWQmUycEJmSEZyUVh4cUlRTUNRQUpBQTBBZ0JDZ0NBQ0lHUWYvOSszZHFJQVp5UVlDQmdvUjRjUTBCSUFBZ0JrSC9BWEUyQWdBZ0FDQUVMUUFCTmdJRUlBQWdCQzBBQWpZQ0NDQUFJQVF0QUFNMkFnd2dBRUVRYWlFQUlBUkJCR29oQkNBRlFYeHFJZ1ZCQkVzTkFBc2dCQzBBQUNFR0RBRUxJQVVoQXdzZ0JrSC9BWEVpQjBGL2FpRUlDeUFJUWY0QVN3MEJJQU1oQlFzZ0FDQUhOZ0lBSUFCQkJHb2hBQ0FFUVFGcUlRUWdCVUYvYWlJRkRRRU1DZ3NMSUFkQnZuNXFJZ2RCTWtzTkJDQUVRUUZxSVFRZ0IwRUNkRUdRbHhKcUtBSUFJUVpCQVNFSERBRUxJQVF0QUFBaUJVRURkaUlIUVhCcUlBY2dCa0VhZFdweVFRZExEUUlDUUFKQUFuOGdCQ0lIUVFGcUlBVkJnSDlxSUFaQkJuUnlJZ1ZCZjBvTkFCb2dCeTBBQVVHQWYyb2lDRUUvU3cwQklBUkJBbW9nQ0NBRlFRWjBjaUlGUVg5S0RRQWFJQWN0QUFKQmdIOXFJZ2RCUDBzTkFTQUhJQVZCQm5SeUlRVWdCRUVEYWdzaEJDQUFJQVUyQWdBZ0EwRi9haUVGSUFCQkJHb2hBQXdCQzBIWXdCUkJHVFlDQUNBRVFYOXFJUVFNQmd0QkFDRUhEQUFBQ3dBTEEwQWdCVVVFUUNBRUxRQUFRUU4ySWdWQmNHb2dCa0VhZFNBRmFuSkJCMHNOQWdKL0lBUWlCVUVCYWlBR1FZQ0FnQkJ4UlEwQUdpQUZMUUFCUWNBQmNVR0FBVWNOQXlBRVFRSnFJQVpCZ0lBZ2NVVU5BQm9nQlMwQUFrSEFBWEZCZ0FGSERRTWdCRUVEYWdzaEJDQURRWDlxSVFOQkFTRUZEQUVMQTBBQ1FDQUVRUU54SUFRdEFBQWlCa0YvYWtIK0FFdHlEUUFnQkNnQ0FDSUdRZi85KzNkcUlBWnlRWUNCZ29SNGNRMEFBMEFnQTBGOGFpRURJQVFvQWdRaEJpQUVRUVJxSWdVaEJDQUdJQVpCLy8zN2QycHlRWUNCZ29SNGNVVU5BQXNnQlNFRUN5QUdRZjhCY1NJRlFYOXFRZjRBVFFSQUlBTkJmMm9oQXlBRVFRRnFJUVFNQVFzTElBVkJ2bjVxSWdWQk1rc05BaUFFUVFGcUlRUWdCVUVDZEVHUWx4SnFLQUlBSVFaQkFDRUZEQUFBQ3dBTElBUkJmMm9oQkNBR0RRRWdCQzBBQUNFR0N5QUdRZjhCY1EwQUlBQUVRQ0FBUVFBMkFnQWdBVUVBTmdJQUN5QUNJQU5yRHd0QjJNQVVRUmsyQWdBZ0FFVU5BUXNnQVNBRU5nSUFDMEYvRHdzZ0FTQUVOZ0lBSUFJTEl3RUNmeUFBSVFFRFFDQUJJZ0pCQkdvaEFTQUNLQUlBRFFBTElBSWdBR3RCQW5VTERnQWdBQkM1Q3dSQUlBQVFLZ3NMS2dFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFSEF1eElnQVJDOEN5RUFJQUpCRUdva0FDQUFDeGNBSUFBUXpRSkJBRWNnQUVFZ2NrR2ZmMnBCQmtseUN4Y0FJQUJCQUVjZ0FFSHdtUkpIY1NBQVFZaWFFa2R4QzhzRkFRbC9Jd0JCa0FKcklnVWtBQUpBSUFFdEFBQU5BRUdnbWhJUXhnWWlBUVJBSUFFdEFBQU5BUXNnQUVFTWJFR3dtaEpxRU1ZR0lnRUVRQ0FCTFFBQURRRUxRZmlhRWhER0JpSUJCRUFnQVMwQUFBMEJDMEg5bWhJaEFRc0NRQU5BSUFFZ0Ftb3RBQUFpQTBVZ0EwRXZSbkpGQkVCQkR5RUVJQUpCQVdvaUFrRVBSdzBCREFJTEN5QUNJUVFMUWYyYUVpRURBa0FDUUFKQUFrQUNRQ0FCTFFBQUlnSkJMa1lOQUNBQklBUnFMUUFBRFFBZ0FTRURJQUpCd3dCSERRRUxJQU10QUFGRkRRRUxJQU5CL1pvU0VIcEZEUUFnQTBHRm14SVFlZzBCQ3lBQVJRUkFRZFNaRWlFQ0lBTXRBQUZCTGtZTkFndEJBQ0VDREFFTFFiakpGQ2dDQUNJQ0JFQURRQ0FESUFKQkNHb1Fla1VOQWlBQ0tBSVlJZ0lOQUFzTFFiREpGQkFGUWJqSkZDZ0NBQ0lDQkVBRFFDQURJQUpCQ0dvUWVrVUVRRUd3eVJRUUFBd0RDeUFDS0FJWUlnSU5BQXNMUVFBaEFRSkFBa0FDUUVId3lCUW9BZ0FOQUVHTG14SVF4Z1lpQWtVTkFDQUNMUUFBUlEwQUlBUkJBV29oQ0VIK0FTQUVheUVKQTBBZ0FrRTZFT0VMSWdjZ0Ftc2dCeTBBQUNJS1FRQkhheUlHSUFsSkJIOGdCVUVRYWlBQ0lBWVFQUm9nQlVFUWFpQUdhaUlDUVM4NkFBQWdBa0VCYWlBRElBUVFQUm9nQlVFUWFpQUdJQWhxYWtFQU9nQUFJQVZCRUdvZ0JVRU1haEFDSWdZRVFFRWNFSnNCSWdJTkJDQUdJQVVvQWd3UXFoTU1Bd3NnQnkwQUFBVWdDZ3RCQUVjZ0Iyb2lBaTBBQUEwQUN3dEJIQkNiQVNJQ1JRMEJJQUpCMUprU0tRSUFOd0lBSUFKQkNHb2lBU0FESUFRUVBSb2dBU0FFYWtFQU9nQUFJQUpCdU1rVUtBSUFOZ0lZUWJqSkZDQUNOZ0lBSUFJaEFRd0JDeUFDSUFZMkFnQWdBaUFGS0FJTU5nSUVJQUpCQ0dvaUFTQURJQVFRUFJvZ0FTQUVha0VBT2dBQUlBSkJ1TWtVS0FJQU5nSVlRYmpKRkNBQ05nSUFJQUloQVF0QnNNa1VFQUFnQVVIVW1SSWdBQ0FCY2hzaEFnc2dCVUdRQW1va0FDQUNDd3dBSUFBUTFRTTJBZ0FnQUF0S0FRRi9Jd0JCa0FGcklnTWtBQ0FEUVFCQmtBRVEzUUVpQTBGL05nSk1JQU1nQURZQ0xDQURRZE1FTmdJZ0lBTWdBRFlDVkNBRElBRWdBaEN2RXlFQUlBTkJrQUZxSkFBZ0FBdE9BQUpBSUFCRkRRQWdBVUVDYWlJQlFRVkxEUUFDUUFKQUFrQUNRQ0FCUVFGckRnVUJBZ0lFQXdBTElBQWdBandBQUE4TElBQWdBajBCQUE4TElBQWdBajRDQUE4TElBQWdBamNEQUFzTHRnTUNBMzhCZmlNQVFTQnJJZ01rQUFKQUlBRkMvLy8vLy8vLy8vLy9BSU1pQlVLQWdJQ0FnSURBdjBCOElBVkNnSUNBZ0lDQXdNQy9mM3hVQkVBZ0FVSVppS2NoQWlBQVVDQUJRdi8vL3crRElnVkNnSUNBQ0ZRZ0JVS0FnSUFJVVJ0RkJFQWdBa0dCZ0lDQUJHb2hBZ3dDQ3lBQ1FZQ0FnSUFFYWlFQ0lBQWdCVUtBZ0lBSWhZUkNBRklOQVNBQ1FRRnhJQUpxSVFJTUFRc2dBRkFnQlVLQWdJQ0FnSURBLy84QVZDQUZRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUJRaG1JcDBILy8vOEJjVUdBZ0lEK0IzSWhBZ3dCQzBHQWdJRDhCeUVDSUFWQy8vLy8vLy8vdjcvQUFGWU5BRUVBSVFJZ0JVSXdpS2NpQkVHUi9nQkpEUUFnQXlBQUlBRkMvLy8vLy8vL1A0TkNnSUNBZ0lDQXdBQ0VJZ1ZCZ2Y4QUlBUnJFTzBFSUFOQkVHb2dBQ0FGSUFSQi80Ri9haEQzQVNBREtRTUlJZ0JDR1lpbklRSWdBeWtEQUNBREtRTVFJQU1wQXhpRVFnQlNyWVFpQlZBZ0FFTC8vLzhQZ3lJQVFvQ0FnQWhVSUFCQ2dJQ0FDRkViUlFSQUlBSkJBV29oQWd3QkN5QUZJQUJDZ0lDQUNJV0VRZ0JTRFFBZ0FrRUJjU0FDYWlFQ0N5QURRU0JxSkFBZ0FpQUJRaUNJcDBHQWdJQ0FlSEZ5dmd2OUF3SURmd0YrQWtBQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWtFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVIc0xJZ05CVldvaUFrRUNUVUVBSUFKQkFXc2JSUVJBSUFOQlVHb2hBUXdCQ3lBRFFTMUdJUVFDUUNBQlJRSi9JQUFvQWdRaUFpQUFLQUpvU1FSQUlBQWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBQVFld3NpQWtGUWFpSUJRUXBKY2cwQUlBQW9BbWhGRFFBZ0FDQUFLQUlFUVg5cU5nSUVDeUFDSVFNTEFrQWdBVUVLU1FSQVFRQWhBUU5BSUFNZ0FVRUtiR29oQVFKL0lBQW9BZ1FpQWlBQUtBSm9TUVJBSUFBZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFBUWV3c2lBMEZRYWlJQ1FRbE5RUUFnQVVGUWFpSUJRY3lacytZQVNCc05BQXNnQWF3aEJRSkFJQUpCQ2s4TkFBTkFJQU90SUFWQ0NuNThRbEI4SVFVQ2Z5QUFLQUlFSWdFZ0FDZ0NhRWtFUUNBQUlBRkJBV28yQWdRZ0FTMEFBQXdCQ3lBQUVIc0xJZ05CVUdvaUFrRUpTdzBCSUFWQ3JvK0YxOGZDNjZNQlV3MEFDd3NnQWtFS1NRUkFBMEFDZnlBQUtBSUVJZ0VnQUNnQ2FFa0VRQ0FBSUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFBRUhzTFFWQnFRUXBKRFFBTEN5QUFLQUpvQkVBZ0FDQUFLQUlFUVg5cU5nSUVDMElBSUFWOUlBVWdCQnNoQlF3QkMwS0FnSUNBZ0lDQWdJQi9JUVVnQUNnQ2FFVU5BQ0FBSUFBb0FnUkJmMm8yQWdSQ2dJQ0FnSUNBZ0lDQWZ3OExJQVVMaVFnQ0JYOENmaU1BUVRCcklnVWtBQUpBSUFKQkFrMEVRQ0FDUVFKMElnSkJySmtTYWlnQ0FDRUhJQUpCb0prU2FpZ0NBQ0VJQTBBQ2Z5QUJLQUlFSWdJZ0FTZ0NhRWtFUUNBQklBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQkVIc0xJZ0lRcVFRTkFBc0NRQ0FDUVZWcUlnUkJBa3NFUUVFQklRWU1BUXRCQVNFR0lBUkJBV3RGRFFCQmYwRUJJQUpCTFVZYklRWWdBU2dDQkNJQ0lBRW9BbWhKQkVBZ0FTQUNRUUZxTmdJRUlBSXRBQUFoQWd3QkN5QUJFSHNoQWd0QkFDRUVBa0FDUUFOQUlBUkIzSmdTYWl3QUFDQUNRU0J5UmdSQUFrQWdCRUVHU3cwQUlBRW9BZ1FpQWlBQktBSm9TUVJBSUFFZ0FrRUJhallDQkNBQ0xRQUFJUUlNQVFzZ0FSQjdJUUlMSUFSQkFXb2lCRUVJUncwQkRBSUxDeUFFUVFOSEJFQWdCRUVJUmcwQklBTkZJQVJCQkVseURRSWdCRUVJUmcwQkN5QUJLQUpvSWdJRVFDQUJJQUVvQWdSQmYybzJBZ1FMSUFORklBUkJCRWx5RFFBRFFDQUNCRUFnQVNBQktBSUVRWDlxTmdJRUN5QUVRWDlxSWdSQkEwc05BQXNMSUFVZ0JySkRBQUNBZjVRUXN4TWdCU2tEQ0NFSklBVXBBd0FoQ2d3Q0N3SkFBa0FDUUNBRURRQkJBQ0VFQTBBZ0JFSGxtQkpxTEFBQUlBSkJJSEpIRFFFQ1FDQUVRUUZMRFFBZ0FTZ0NCQ0lDSUFFb0FtaEpCRUFnQVNBQ1FRRnFOZ0lFSUFJdEFBQWhBZ3dCQ3lBQkVIc2hBZ3NnQkVFQmFpSUVRUU5IRFFBTERBRUxBa0FDUUNBRVFRTkxEUUFnQkVFQmF3NERBQUFDQVFzZ0FTZ0NhQVJBSUFFZ0FTZ0NCRUYvYWpZQ0JBc01BZ3NDUUNBQ1FUQkhEUUFDZnlBQktBSUVJZ1FnQVNnQ2FFa0VRQ0FCSUFSQkFXbzJBZ1FnQkMwQUFBd0JDeUFCRUhzTFFTQnlRZmdBUmdSQUlBVkJFR29nQVNBSUlBY2dCaUFERUxFVElBVXBBeGdoQ1NBRktRTVFJUW9NQlFzZ0FTZ0NhRVVOQUNBQklBRW9BZ1JCZjJvMkFnUUxJQVZCSUdvZ0FTQUNJQWdnQnlBR0lBTVFzQk1nQlNrREtDRUpJQVVwQXlBaENnd0RDd0pBQW44Z0FTZ0NCQ0lDSUFFb0FtaEpCRUFnQVNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQVJCN0MwRW9SZ1JBUVFFaEJBd0JDMEtBZ0lDQWdJRGcvLzhBSVFrZ0FTZ0NhRVVOQXlBQklBRW9BZ1JCZjJvMkFnUU1Bd3NEUUFKL0lBRW9BZ1FpQWlBQktBSm9TUVJBSUFFZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFFUWV3c2lBa0ZRYWtFS1NTQUNRYjkvYWtFYVNYSWdBa0hmQUVaeVJVRUFJQUpCbjM5cVFScFBHMFVFUUNBRVFRRnFJUVFNQVFzTFFvQ0FnSUNBZ09ELy93QWhDU0FDUVNsR0RRSWdBU2dDYUNJQ0JFQWdBU0FCS0FJRVFYOXFOZ0lFQ3lBREJFQWdCRVVOQXdOQUlBUkJmMm9oQkNBQ0JFQWdBU0FCS0FJRVFYOXFOZ0lFQ3lBRURRQUxEQU1MQzBIWXdCUkJIRFlDQUNBQlFnQVEyd0lMUWdBaENRc2dBQ0FLTndNQUlBQWdDVGNEQ0NBRlFUQnFKQUFMdHhBQ0JYOE1maU1BUWNBQmF5SUZKQUFnQkVMLy8vLy8vLzgvZ3lFU0lBSkMvLy8vLy8vL1A0TWhEQ0FDSUFTRlFvQ0FnSUNBZ0lDQWdIK0RJUkVnQkVJd2lLZEIvLzhCY1NFSUFrQUNRQUpBSUFKQ01JaW5RZi8vQVhFaUNVRi9ha0g5L3dGTkJFQWdDRUYvYWtIKy93RkpEUUVMSUFGUUlBSkMvLy8vLy8vLy8vLy9BSU1pQ2tLQWdJQ0FnSURBLy84QVZDQUtRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUNRb0NBZ0lDQWdDQ0VJUkVNQWdzZ0ExQWdCRUwvLy8vLy8vLy8vLzhBZ3lJQ1FvQ0FnSUNBZ01ELy93QlVJQUpDZ0lDQWdJQ0F3UC8vQUZFYlJRUkFJQVJDZ0lDQWdJQ0FJSVFoRVNBRElRRU1BZ3NnQVNBS1FvQ0FnSUNBZ01ELy93Q0ZoRkFFUUNBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQVFnQWhBVUtBZ0lDQWdJRGcvLzhBSVJFTUF3c2dFVUtBZ0lDQWdJREEvLzhBaENFUlFnQWhBUXdDQ3lBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQVFnQWhBUXdDQ3lBQklBcUVVQTBDSUFJZ0E0UlFCRUFnRVVLQWdJQ0FnSURBLy84QWhDRVJRZ0FoQVF3Q0N5QUtRdi8vLy8vLy96OVlCRUFnQlVHd0FXb2dBU0FNSUFFZ0RDQU1VQ0lHRzNrZ0JrRUdkSzE4cHlJR1FYRnFFUGNCUVJBZ0Jtc2hCaUFGS1FPNEFTRU1JQVVwQTdBQklRRUxJQUpDLy8vLy8vLy9QMVlOQUNBRlFhQUJhaUFESUJJZ0F5QVNJQkpRSWdjYmVTQUhRUVowclh5bklnZEJjV29ROXdFZ0JpQUhha0Z3YWlFR0lBVXBBNmdCSVJJZ0JTa0RvQUVoQXdzZ0JVR1FBV29nRWtLQWdJQ0FnSURBQUlRaUZFSVBoaUFEUWpHSWhDSUNRb1RKK2M2LzVyeUM5UUFnQW4waUJCRDJBaUFGUVlBQmFrSUFJQVVwQTVnQmZTQUVFUFlDSUFWQjhBQnFJQVVwQTRnQlFnR0dJQVVwQTRBQlFqK0loQ0lFSUFJUTlnSWdCVUhnQUdvZ0JFSUFJQVVwQTNoOUVQWUNJQVZCMEFCcUlBVXBBMmhDQVlZZ0JTa0RZRUkvaUlRaUJDQUNFUFlDSUFWQlFHc2dCRUlBSUFVcEExaDlFUFlDSUFWQk1Hb2dCU2tEU0VJQmhpQUZLUU5BUWorSWhDSUVJQUlROWdJZ0JVRWdhaUFFUWdBZ0JTa0RPSDBROWdJZ0JVRVFhaUFGS1FNb1FnR0dJQVVwQXlCQ1A0aUVJZ1FnQWhEMkFpQUZJQVJDQUNBRktRTVlmUkQyQWlBR0lBa2dDR3RxSVFZQ2ZrSUFJQVVwQXdoQ0FZWWdCU2tEQUVJL2lJUkNmM3dpQ2tMLy8vLy9ENE1pQkNBQ1FpQ0lJZzUrSWhBZ0NrSWdpQ0lLSUFKQy8vLy8vdytESWd0K2ZDSUNRaUNHSWcwZ0JDQUxmbndpQ3lBTlZLMGdDaUFPZmlBQ0lCQlVyVUlnaGlBQ1FpQ0loSHg4SUFzZ0JDQURRaEdJUXYvLy8vOFBneUlPZmlJUUlBb2dBMElQaGtLQWdQNy9ENE1pRFg1OElnSkNJSVlpRHlBRUlBMStmQ0FQVkswZ0NpQU9maUFDSUJCVXJVSWdoaUFDUWlDSWhIeDhmQ0lDSUF0VXJYd2dBa0lBVXExOGZTSUxRdi8vLy84UGd5SU9JQVIrSWhBZ0NpQU9maUlOSUFRZ0MwSWdpQ0lQZm53aUMwSWdobndpRGlBUVZLMGdDaUFQZmlBTElBMVVyVUlnaGlBTFFpQ0loSHg4SUE1Q0FDQUNmU0lDUWlDSUlnc2dCSDRpRUNBQ1F2Ly8vLzhQZ3lJTklBcCtmQ0lDUWlDR0lnOGdCQ0FOZm53Z0QxU3RJQW9nQzM0Z0FpQVFWSzFDSUlZZ0FrSWdpSVI4Zkh3aUFpQU9WSzE4SUFKQ2Zud2lFQ0FDVksxOFFuOThJZ3RDLy8vLy93K0RJZ0lnREVJQ2hpQUJRajZJaEVMLy8vLy9ENE1pQkg0aURpQUJRaDZJUXYvLy8vOFBneUlLSUF0Q0lJZ2lDMzU4SWcwZ0RsU3RJQTBnRUVJZ2lDSU9JQXhDSG9oQy8vL3YvdytEUW9DQUVJUWlESDU4SWc4Z0RWU3RmQ0FMSUF4K2ZDQUNJQXgrSWhNZ0JDQUxmbndpRFNBVFZLMUNJSVlnRFVJZ2lJUjhJQThnRFVJZ2hud2lEU0FQVksxOElBMGdDaUFPZmlJVElCQkMvLy8vL3crREloQWdCSDU4SWc4Z0UxU3RJQThnQWlBQlFnS0dRdnovLy84UGd5SVRmbndpRlNBUFZLMThmQ0lQSUExVXJYd2dEeUFMSUJOK0lnc2dEQ0FRZm53aURDQUVJQTUrZkNJRUlBSWdDbjU4SWdKQ0lJZ2dBaUFFVkswZ0RDQUxWSzBnQkNBTVZLMThmRUlnaG9SOElnd2dEMVN0ZkNBTUlCVWdEaUFUZmlJRUlBb2dFSDU4SWdwQ0lJZ2dDaUFFVksxQ0lJYUVmQ0lFSUJWVXJTQUVJQUpDSUlaOElBUlVyWHg4SWdRZ0RGU3RmQ0lDUXYvLy8vLy8vLzhBV0FSQUlBRkNNWVlnQkVMLy8vLy9ENE1pQVNBRFF2Ly8vLzhQZ3lJS2ZpSU1RZ0JTclgxQ0FDQU1mU0lRSUFSQ0lJZ2lEQ0FLZmlJTklBRWdBMElnaUNJTGZud2lEa0lnaGlJUFZLMTlJQUpDLy8vLy93K0RJQXArSUFFZ0VrTC8vLy8vRDROK2ZDQUxJQXgrZkNBT0lBMVVyVUlnaGlBT1FpQ0loSHdnQkNBVVFpQ0lmaUFESUFKQ0lJaCtmQ0FDSUF0K2ZDQU1JQkorZkVJZ2hueDlJUklnQmtGL2FpRUdJQkFnRDMwTUFRc2dCRUloaUNFTElBRkNNSVlnQWtJL2hpQUVRZ0dJaENJRVF2Ly8vLzhQZ3lJQklBTkMvLy8vL3crRElncCtJZ3hDQUZLdGZVSUFJQXg5SWc0Z0FTQURRaUNJSWd4K0loQWdDeUFDUWgrR2hDSU5Rdi8vLy84UGd5SVBJQXArZkNJTFFpQ0dJaE5VclgwZ0RDQVBmaUFLSUFKQ0FZZ2lDa0wvLy8vL0Q0TitmQ0FCSUJKQy8vLy8vdytEZm53Z0N5QVFWSzFDSUlZZ0MwSWdpSVI4SUFRZ0ZFSWdpSDRnQXlBQ1FpR0lmbndnQ2lBTWZud2dEU0FTZm54Q0lJWjhmU0VTSUFvaEFpQU9JQk45Q3lFQklBWkJnSUFCVGdSQUlCRkNnSUNBZ0lDQXdQLy9BSVFoRVVJQUlRRU1BUXNnQmtHQmdIOU1CRUJDQUNFQkRBRUxJQVFnQVVJQmhpQURXaUFTUWdHR0lBRkNQNGlFSWdFZ0ZGb2dBU0FVVVJ1dGZDSUJJQVJVclNBQ1F2Ly8vLy8vL3orRElBWkIvLzhBYXExQ01JYUVmQ0FSaENFUkN5QUFJQUUzQXdBZ0FDQVJOd01JSUFWQndBRnFKQUFQQ3lBQVFnQTNBd0FnQUNBUlFvQ0FnSUNBZ09ELy93QWdBaUFEaEVJQVVoczNBd2dnQlVIQUFXb2tBQXZFQWdFQmZ5TUFRZEFBYXlJRUpBQUNRQ0FEUVlDQUFVNEVRQ0FFUVNCcUlBRWdBa0lBUW9DQWdJQ0FnSUQvL3dBUWl3RWdCQ2tES0NFQ0lBUXBBeUFoQVNBRFFmLy9BVWdFUUNBRFFZR0FmMm9oQXd3Q0N5QUVRUkJxSUFFZ0FrSUFRb0NBZ0lDQWdJRC8vd0FRaXdFZ0EwSDkvd0lnQTBIOS93SklHMEdDZ0g1cUlRTWdCQ2tER0NFQ0lBUXBBeEFoQVF3QkN5QURRWUdBZjBvTkFDQUVRVUJySUFFZ0FrSUFRb0NBZ0lDQWdNQUFFSXNCSUFRcEEwZ2hBaUFFS1FOQUlRRWdBMEdEZ0g1S0JFQWdBMEgrL3dCcUlRTU1BUXNnQkVFd2FpQUJJQUpDQUVLQWdJQ0FnSURBQUJDTEFTQURRWWFBZlNBRFFZYUFmVW9iUWZ6L0FXb2hBeUFFS1FNNElRSWdCQ2tETUNFQkN5QUVJQUVnQWtJQUlBTkIvLzhBYXExQ01JWVFpd0VnQUNBRUtRTUlOd01JSUFBZ0JDa0RBRGNEQUNBRVFkQUFhaVFBQ3pVQUlBQWdBVGNEQUNBQUlBSkMvLy8vLy8vL1A0TWdCRUl3aUtkQmdJQUNjU0FDUWpDSXAwSC8vd0Z4Y3ExQ01JYUVOd01JQ3l3QkFYOGdBQ2dDQUNJQkJFQWdBUkRMQzBGL0VLZ0RSUVJBSUFBb0FnQkZEd3NnQUVFQU5nSUFDMEVCQ3l3QkFYOGdBQ2dDQUNJQkJFQWdBUkRRQzBGL0VLZ0RSUVJBSUFBb0FnQkZEd3NnQUVFQU5nSUFDMEVCQ3ljQkFYOENRQ0FBS0FJQUlnSkZEUUFnQWlBQkVMc1RRWDhRcUFORkRRQWdBRUVBTmdJQUN3c25BUUYvQWtBZ0FDZ0NBQ0lDUlEwQUlBSWdBUkNQRFVGL0VLZ0RSUTBBSUFCQkFEWUNBQXNMQ3dBZ0FFSGd5UlFRbXdNTENRQWdBQkQrQnhBcUN6RUJBWDhnQUNnQ0RDSUJJQUFvQWhCR0JFQWdBQ0FBS0FJQUtBSW9FUUFBRHdzZ0FDQUJRUVJxTmdJTUlBRW9BZ0FMSndFQmZ5QUFLQUlNSWdFZ0FDZ0NFRVlFUUNBQUlBQW9BZ0FvQWlRUkFBQVBDeUFCS0FJQUN4QUFJQUFReEFzZ0FSREVDM05CQVhNTEVBQWdBQ0FBS0FJWVJTQUJjallDRUFzMEFRRi9JQUFvQWd3aUFTQUFLQUlRUmdSQUlBQWdBQ2dDQUNnQ0tCRUFBQThMSUFBZ0FVRUJhallDRENBQkxBQUFFTllEQzJZQkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFFZ0FCQThJQUFRSlJDMkV6WUNDQ0FDSUFBUWdRRTJBZ0FDZndKQUlBSkJDR29nQWhBZVJRMEFJQUFRR3lBQklBSkJDR29RVnhDdkF3MEFJQUlvQWdnTUFRc2dBQkNCQVFzaEFDQUNRUkJxSkFBZ0FBc3FBUUYvSUFBb0Fnd2lBU0FBS0FJUVJnUkFJQUFnQUNnQ0FDZ0NKQkVBQUE4TElBRXNBQUFRMWdNTEVBQWdBQkRGQ3lBQkVNVUxjMEVCY3dzUEFDQUFJQUFvQWdBb0FoZ1JBQUFMT2dBZ0FFRUJFUEFHSUFCQjRKY0pOZ0lBSUFCQjhBQnFFSk1CR2lBQVFZQUJhaENUQVJvZ0FFR1FBV29RMVFFYUlBQkJBRFlDcEFFZ0FBdHVBUUovSXdCQkVHc2lBU1FBSUFBZ0FDZ0NBRUYwYWlnQ0FHb29BaGdFUUFKQUlBRkJDR29nQUJES0JpSUNMUUFBUlEwQUlBQWdBQ2dDQUVGMGFpZ0NBR29vQWhnUTBndEJmMGNOQUNBQUlBQW9BZ0JCZEdvb0FnQnFRUUVRZ0FRTElBSVF5UVlMSUFGQkVHb2tBQXNKQUNBQUVQOEhFQ29MQkFCQmZ3czhBUUovSUFBb0FpZ2hBZ05BSUFJRVFDQUJJQUFnQWtGL2FpSUNRUUowSWdNZ0FDZ0NKR29vQWdBZ0FDZ0NJQ0FEYWlnQ0FCRUdBQXdCQ3dzTEdnQWdBRUVGVFFSQUlBQkJBblJCNUlrSmFpZ0NBQThMUVFBTEN3QWdBQ0FCSUFJUXl4TUxuUU1EQTM4QmZnSjhBa0FDUUFKQUFrQWdBTDBpQkVJQVdRUkFJQVJDSUlpbklnRkIvLzgvU3cwQkN5QUVRdi8vLy8vLy8vLy8vd0NEVUFSQVJBQUFBQUFBQVBDL0lBQWdBS0tqRHdzZ0JFSi9WUTBCSUFBZ0FLRkVBQUFBQUFBQUFBQ2pEd3NnQVVILy83Ly9CMHNOQWtHQWdNRC9BeUVDUVlGNElRTWdBVUdBZ01EL0EwY0VRQ0FCSVFJTUFnc2dCS2NOQVVRQUFBQUFBQUFBQUE4TElBQkVBQUFBQUFBQVVFT2l2U0lFUWlDSXB5RUNRY3QzSVFNTElBTWdBa0hpdmlWcUlnRkJGSFpxdHlJRlJBQUE0UDVDTHVZL29pQUVRdi8vLy84UGd5QUJRZi8vUDNGQm5zR2Evd05xclVJZ2hvUy9SQUFBQUFBQUFQQy9vQ0lBSUFWRWRqeDVOZTg1NmoyaUlBQWdBRVFBQUFBQUFBQUFRS0NqSWdVZ0FDQUFSQUFBQUFBQUFPQS9vcUlpQmlBRklBV2lJZ1VnQmFJaUFDQUFJQUJFbjhaNDBBbWF3eitpUks5NGpoM0ZjY3cvb0tKRUJQcVhtWm1aMlQrZ29pQUZJQUFnQUNBQVJFUlNQdDhTOGNJL29rVGVBOHVXWkViSFA2Q2lSRm1USXBRa1NkSS9vS0pFazFWVlZWVlY1VCtnb3FDZ29xQWdCcUdnb0NFQUN5QUFDN2tEQXdKL0FYNENmQ0FBdlNJRFFqK0lweUVCQWtBQ1FBSjhBa0FnQUFKL0FrQUNRQ0FEUWlDSXAwSC8vLy8vQjNFaUFrR3J4cGlFQkU4RVFDQURRdi8vLy8vLy8vLy8vd0NEUW9DQWdJQ0FnSUQ0L3dCV0JFQWdBQThMSUFCRTd6bjYva0l1aGtCa1FRRnpSUVJBSUFCRUFBQUFBQUFBNEgraUR3c2dBRVRTdkhyZEt5T0d3R05CQVhNTkFTQUFSRkV3TGRVUVNZZkFZMFVOQVF3R0N5QUNRY1BjMlA0RFNRMERJQUpCc3NYQy93TkpEUUVMSUFCRS9vSXJaVWNWOXoraUlBRkJBM1JCOEk4U2Fpc0RBS0FpQkpsRUFBQUFBQUFBNEVGakJFQWdCS29NQWd0QmdJQ0FnSGdNQVFzZ0FVRUJjeUFCYXdzaUFiY2lCRVFBQU9EK1FpN212NktnSWdBZ0JFUjJQSGsxN3pucVBhSWlCYUVNQVFzZ0FrR0FnTUR4QTAwTkFrRUFJUUVnQUFzaEJDQUFJQVFnQkNBRUlBU2lJZ0FnQUNBQUlBQWdBRVRRcEw1eWFUZG1QcUpFOFd2U3hVRzl1NzZnb2tRczNpV3ZhbFlSUDZDaVJKTzl2aFpzd1dhL29LSkVQbFZWVlZWVnhUK2dvcUVpQUtKRUFBQUFBQUFBQUVBZ0FLR2pJQVdob0VRQUFBQUFBQUR3UDZBaEJDQUJSUTBBSUFRZ0FSQzdBeUVFQ3lBRUR3c2dBRVFBQUFBQUFBRHdQNkFMckFNREFuOEJmZ044SUFDOUlnVkNnSUNBZ0lELy8vLy9BSU5DZ1lDQWdQQ0U1ZkkvVkNJRVJRUkFSQmd0UkZUN0llay9JQUNhSUFBZ0JVSUFVeUlERzZGRUIxd1VNeWFtZ1R3Z0Fab2dBU0FERzZHZ0lRQWdCVUkvaUtjaEEwUUFBQUFBQUFBQUFDRUJDeUFBSUFBZ0FDQUFvaUlHb2lJSFJHTlZWVlZWVmRVL29pQUJJQVlnQVNBSElBWWdCcUlpQVNBQklBRWdBU0FCUkhOVFlOdkxkZk8rb2tTbWtqZWdpSDRVUDZDaVJBRmw4dkxZUkVNL29LSkVLQU5XeVNKdGJUK2dva1EzMWdhRTlHU1dQNkNpUkhyK0VCRVJFY0Uvb0NBR0lBRWdBU0FCSUFFZ0FVVFVlcjkwY0NyN1BxSkU2YWZ3TWcrNEVqK2dva1JvRUkwYTl5WXdQNkNpUkJXRDRQN0kyMWMvb0tKRWs0UnU2ZU1tZ2orZ29rVCtRYk1idXFHclA2Q2lvS0tnb3FDZ0lnYWdJUUVnQkVVRVFFRUJJQUpCQVhScnR5SUhJQUFnQmlBQklBR2lJQUVnQjZDam9hQWlBQ0FBb0tFaUFKb2dBQ0FER3c4TElBSUVmRVFBQUFBQUFBRHd2eUFCb3lJSElBRzlRb0NBZ0lCd2c3OGlDQ0FIdlVLQWdJQ0FjSU8vSWdHaVJBQUFBQUFBQVBBL29DQUdJQWdnQUtHaElBR2lvS0lnQWFBRklBRUxDd29BSUFBUTBRVWFJQUFMRmdBZ0FFVUVRRUVBRHd0QjJNQVVJQUEyQWdCQmZ3c1NBQ0FBUlFSQVFRQVBDeUFBSUFFUXFBUUxHZ0FnQUNBQkVPRUxJZ0JCQUNBQUxRQUFJQUZCL3dGeFJoc0wyZ0VCQW44Q1FDQUJRZjhCY1NJREJFQWdBRUVEY1FSQUEwQWdBQzBBQUNJQ1JTQUNJQUZCL3dGeFJuSU5BeUFBUVFGcUlnQkJBM0VOQUFzTEFrQWdBQ2dDQUNJQ1FYOXpJQUpCLy8zN2QycHhRWUNCZ29SNGNRMEFJQU5CZ1lLRUNHd2hBd05BSUFJZ0EzTWlBa0YvY3lBQ1FmLzkrM2RxY1VHQWdZS0VlSEVOQVNBQUtBSUVJUUlnQUVFRWFpRUFJQUpCLy8zN2Qyb2dBa0YvYzNGQmdJR0NoSGh4UlEwQUN3c0RRQ0FBSWdJdEFBQWlBd1JBSUFKQkFXb2hBQ0FESUFGQi93RnhSdzBCQ3dzZ0FnOExJQUFRb0FFZ0FHb1BDeUFBQzhvS0FnVi9CSDRqQUVFUWF5SUhKQUFDUUFKQUFrQUNRQUpBSUFGQkpFMEVRQU5BQW44Z0FDZ0NCQ0lFSUFBb0FtaEpCRUFnQUNBRVFRRnFOZ0lFSUFRdEFBQU1BUXNnQUJCN0N5SUVFS2tFRFFBTEFrQWdCRUZWYWlJRlFRSkxJQVZCQVd0RmNnMEFRWDlCQUNBRVFTMUdHeUVHSUFBb0FnUWlCQ0FBS0FKb1NRUkFJQUFnQkVFQmFqWUNCQ0FFTFFBQUlRUU1BUXNnQUJCN0lRUUxBa0FnQVVGdmNTQUVRVEJIY2tVRVFBSi9JQUFvQWdRaUJDQUFLQUpvU1FSQUlBQWdCRUVCYWpZQ0JDQUVMUUFBREFFTElBQVFld3NpQkVFZ2NrSDRBRVlFUUVFUUlRRUNmeUFBS0FJRUlnUWdBQ2dDYUVrRVFDQUFJQVJCQVdvMkFnUWdCQzBBQUF3QkN5QUFFSHNMSWdSQndmWVJhaTBBQUVFUVNRMEZJQUFvQW1naUFRUkFJQUFnQUNnQ0JFRi9hallDQkFzZ0FnUkFRZ0FoQXlBQlJRMEpJQUFnQUNnQ0JFRi9hallDQkF3SkMwSUFJUU1nQUVJQUVOc0NEQWdMSUFFTkFVRUlJUUVNQkFzZ0FVRUtJQUViSWdFZ0JFSEI5aEZxTFFBQVN3MEFJQUFvQW1nRVFDQUFJQUFvQWdSQmYybzJBZ1FMUWdBaEF5QUFRZ0FRMndKQjJNQVVRUncyQWdBTUJnc2dBVUVLUncwQ0lBUkJVR29pQWtFSlRRUkFRUUFoQVFOQUlBRkJDbXdnQW1vaEFRSi9JQUFvQWdRaUFpQUFLQUpvU1FSQUlBQWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBQVFld3NpQkVGUWFpSUNRUWxOUVFBZ0FVR1pzK2JNQVVrYkRRQUxJQUd0SVFrTElBSkJDVXNOQVNBSlFncCtJUW9nQXEwaEN3TkFBbjhnQUNnQ0JDSUJJQUFvQW1oSkJFQWdBQ0FCUVFGcU5nSUVJQUV0QUFBTUFRc2dBQkI3Q3lJRVFWQnFJZ0pCQ1VzZ0NpQUxmQ0lKUXBxejVzeVpzK2JNR1ZweURRSWdDVUlLZmlJS0lBS3RJZ3RDZjRWWURRQUxRUW9oQVF3REMwSFl3QlJCSERZQ0FFSUFJUU1NQkF0QkNpRUJJQUpCQ1UwTkFRd0NDeUFCSUFGQmYycHhCRUFnQVNBRVFjSDJFV290QUFBaUFrc0VRRUVBSVFVRFFDQUNJQUVnQld4cUlnVkJ4dVB4T0UxQkFDQUJBbjhnQUNnQ0JDSUNJQUFvQW1oSkJFQWdBQ0FDUVFGcU5nSUVJQUl0QUFBTUFRc2dBQkI3Q3lJRVFjSDJFV290QUFBaUFrc2JEUUFMSUFXdElRa0xJQUVnQWswTkFTQUJyU0VLQTBBZ0NTQUtmaUlMSUFLdFF2OEJneUlNUW4rRlZnMENJQXNnREh3aENTQUJBbjhnQUNnQ0JDSUNJQUFvQW1oSkJFQWdBQ0FDUVFGcU5nSUVJQUl0QUFBTUFRc2dBQkI3Q3lJRVFjSDJFV290QUFBaUFrME5BaUFISUFvZ0NSRDJBaUFIS1FNSVVBMEFDd3dCQ3lBQlFSZHNRUVYyUVFkeFFjSDRFV29zQUFBaENDQUJJQVJCd2ZZUmFpMEFBQ0lDU3dSQVFRQWhCUU5BSUFJZ0JTQUlkSElpQlVILy8vOC9UVUVBSUFFQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWtFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVIc0xJZ1JCd2ZZUmFpMEFBQ0lDU3hzTkFBc2dCYTBoQ1FzZ0FTQUNUVUovSUFpdElncUlJZ3NnQ1ZSeURRQURRQ0FDclVML0FZTWdDU0FLaG9RaENRSi9JQUFvQWdRaUFpQUFLQUpvU1FSQUlBQWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBQVFld3NoQkNBSklBdFdEUUVnQVNBRVFjSDJFV290QUFBaUFrc05BQXNMSUFFZ0JFSEI5aEZxTFFBQVRRMEFBMEFnQVFKL0lBQW9BZ1FpQWlBQUtBSm9TUVJBSUFBZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFBUWV3dEJ3ZllSYWkwQUFFc05BQXRCMk1BVVFjUUFOZ0lBSUFaQkFDQURRZ0dEVUJzaEJpQURJUWtMSUFBb0FtZ0VRQ0FBSUFBb0FnUkJmMm8yQWdRTEFrQWdDU0FEVkEwQUlBT25RUUZ4SUFaeVJRUkFRZGpBRkVIRUFEWUNBQ0FEUW45OElRTU1BZ3NnQ1NBRFdBMEFRZGpBRkVIRUFEWUNBQXdCQ3lBSklBYXNJZ09GSUFOOUlRTUxJQWRCRUdva0FDQURDMWtCQVg4Z0FDQUFMUUJLSWdGQmYyb2dBWEk2QUVvZ0FDZ0NBQ0lCUVFoeEJFQWdBQ0FCUVNCeU5nSUFRWDhQQ3lBQVFnQTNBZ1FnQUNBQUtBSXNJZ0UyQWh3Z0FDQUJOZ0lVSUFBZ0FTQUFLQUl3YWpZQ0VFRUFDeEFBSUFBZ0FTQUNRUUJCQUJEb0N4b0xFUUFnQUNBQklBSkJ3d1JCeEFRUTZBc0xvd0lBQWtBQ1FDQUJRUlJMRFFBZ0FVRjNhaUlCUVFsTERRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRkJBV3NPQ1FFQ0NRTUVCUVlKQndBTElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FTZ0NBRFlDQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUUUNBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUVUNBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUSUJBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUTUJBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUQUFBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FURUFBRGNEQUE4TElBQWdBaUFERVFFQUN3OExJQUlnQWlnQ0FFRUhha0Y0Y1NJQlFRaHFOZ0lBSUFBZ0FTa0RBRGNEQUF0RUFRTi9JQUFvQWdBc0FBQVF6UUlFUUFOQUlBQW9BZ0FpQWl3QUFDRURJQUFnQWtFQmFqWUNBQ0FESUFGQkNteHFRVkJxSVFFZ0Fpd0FBUkROQWcwQUN3c2dBUXY4QWdFRGZ5TUFRZEFCYXlJRkpBQWdCU0FDTmdMTUFVRUFJUUlnQlVHZ0FXcEJBRUVvRU4wQkdpQUZJQVVvQXN3Qk5nTElBUUpBUVFBZ0FTQUZRY2dCYWlBRlFkQUFhaUFGUWFBQmFpQURJQVFRaUFoQkFFZ0VRRUYvSVFFTUFRc2dBQ2dDVEVFQVRnUkFRUUVoQWdzZ0FDZ0NBQ0VHSUFBc0FFcEJBRXdFUUNBQUlBWkJYM0UyQWdBTElBWkJJSEVoQndKL0lBQW9BakFFUUNBQUlBRWdCVUhJQVdvZ0JVSFFBR29nQlVHZ0FXb2dBeUFFRUlnSURBRUxJQUJCMEFBMkFqQWdBQ0FGUWRBQWFqWUNFQ0FBSUFVMkFod2dBQ0FGTmdJVUlBQW9BaXdoQmlBQUlBVTJBaXdnQUNBQklBVkJ5QUZxSUFWQjBBQnFJQVZCb0FGcUlBTWdCQkNJQ0NJQklBWkZEUUFhSUFCQkFFRUFJQUFvQWlRUkJ3QWFJQUJCQURZQ01DQUFJQVkyQWl3Z0FFRUFOZ0ljSUFCQkFEWUNFQ0FBS0FJVUlRTWdBRUVBTmdJVUlBRkJmeUFER3dzaEFTQUFJQUFvQWdBaUFDQUhjallDQUVGL0lBRWdBRUVnY1JzaEFTQUNSUTBBQ3lBRlFkQUJhaVFBSUFFTGZ3SUJmd0YrSUFDOUlnTkNOSWluUWY4UGNTSUNRZjhQUndSOElBSkZCRUFnQVNBQVJBQUFBQUFBQUFBQVlRUi9RUUFGSUFCRUFBQUFBQUFBOEVPaUlBRVE2UXNoQUNBQktBSUFRVUJxQ3pZQ0FDQUFEd3NnQVNBQ1FZSjRhallDQUNBRFF2Ly8vLy8vLy8rSGdIK0RRb0NBZ0lDQWdJRHdQNFMvQlNBQUN3c2RBQ0FBRU9zTElnQW9BZ1JCenBXYUVrWUVmeUFBS0FJQUJVRUFDd3NIQUNBQVFYOXFDeXNBSUFCRkJFQkJBQThMSUFBUTZ3c2lBQ2dDQkVIT2xab1NSZ1IvSUFBZ0FUWUNBRUVBQlVFY0MwVUxVUUVFZnlNQVFSQnJJZ0FrQUFKL1FSd2dBRUVNYWlJQ1JRMEFHa0VJRUpzQklnTkNnSUNBZ09EWm9xTUNOd0lBSUFJZ0F6WUNBRUVBQzBVRVFDQUFLQUlNUVFGcUlRRUxJQUJCRUdva0FDQUJDemtCQVg4Q2YwRUFRYkRBRkNnQ0FDSUFSUTBBR2tFQklBQVE2Z3NOQUJwQkFFR3d3QlFvQWdCQkFSRHNDMFVOQUJwQkFCQ21CVUVCQ3dzTUFDQUFJQUVRcUF0QkFYTUxJd0VCZnlBQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQUVDVW9BZ1FhSUFFUUtnc0xDUUFnQUNBQkVQRVRDdzhBSUFBb0FtaEJ0bnhxUWVzQVNRc1NBQ0FBUVFFMkFnUWdBQ0FCTmdJQUlBQUxDd0FnQUNBQkVGOFEvQTBMTmdFQmZ5TUFRUkJySWdJa0FDQUNJQUVvQWdCQkFCQXZOZ0lNSUFBb0FnQWdBa0VNYWhEdkV5RUFJQUpCRUdva0FDQUFRUUJIQ3ljQkFYOUJBU0VCSUFBb0FtZ2lBRUhLZTJwQkQwa2dBRUYyYWtFRVNYSUVmeUFCQlVFQUN3c1lBUUYvSUFBUUZpRUNJQUFnQVJEK0N5QUFJQUlReUFVTE1BRUJmeUFBRUJZaUFVRUJTUVJBSUFCQkFTQUJheEQ3RXc4TElBRkJBVXNFUUNBQUlBQW9BZ0JCQkdvUTl3c0xDeXdCQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCSUFJZ0FoRHdFeUFBSUFOQkNHb1Exd1FnQTBFUWFpUUFDd2tBSUFCQkFCRE5DZ3V4QmdFRmZ5TUFRUkJySWdNa0FDQUFJQUlRbkF3aUJFRnJha0VCVFFSQUlBQWdBaERpQlNFRkN3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUVvQWd3aUJrSFNBRXdFUUNBR1FVTnFJZ2RCQmtzRVFDQUdRUXhIRFFJZ0FVRUJFQzhpQVVHMGYycEJBMGtOQlNBQlFVMXFRUUZMRFFzZ0FDZ0NCRUgvaFFSTERRc2dBQ0FDUVJWQkVCQ05Ba1VOQ3lBQVFhenZFUkJDREFzTElBZEJBbXNPQlFFQkNnRUtBZ3NnQmtHUGYycEJBMGtOQWlBR1FkTUFSZzBKQ3lBRVFSWkhJQVZCRUVkeVJRUkFJQUJCQ1JBaEN5QUVRUlZISWdFZ0JVRVFSM0lOQXlBQVFSWVFJUXdJQ3lBRVFSNUdCRUFnQUNBQ1FSVkJDQkNOQWdSQUlBQkJKeEFoQ3lBQUlBSkJGVUVRRUkwQ0JFQWdBRUVXRUNFTElBQWdBa0VXUVJBUWpRSkZEUWdnQUVFSkVDRU1DQXNnQUNBQlFRQVFMeEMyQkNFQklBVkJFRWNFUUNBRlFRaEhEUWdnQVVGM2FpSUNRUU5ORFFRZ0FVRUNSaUFCUWVVcFJuSU5DQXdIQ3lBQlFReE5EUVFNQlFzQ1FDQUFJQUpCRmtFUUVJMENSUVJBSUFBZ0FrRVZRUkFRalFKRkRRRUxJQU1nQUVIWUFHb2lCQkRSQWpZQ0NDQURJQVFRZmpZQ0FDQURRUWhxSUFNUUhnUkFRUUFoQVFOQUlBTkJDR29RVnlnQ0FFR3ZYV29pQlVFRFRRMENJQUVnQlVFRVNYSWhBU0FEUVFocUVLa0JJQU1nQkJCK05nSUFJQU5CQ0dvZ0F4QWVEUUFMSUFGQkFYRU5BUXNnQUNBQ1FSWkJFQkNOQWdSQUlBQkJDUkFoQ3lBQUlBSkJGVUVRRUkwQ1JRMEFJQUJCRmhBaEN5QUFJQUpCRlVFSUVJMENSUTBHSUFNZ0FFSFlBR29pQVJEUkFqWUNDQ0FESUFFUWZqWUNBQ0FEUVFocUlBTVFIZ1JBUVFBaEFnTkFJQU5CQ0dvUVZ5Z0NBRUdnWFdvaUJFRUNUUTBJSUFJZ0JFRURTWEloQWlBRFFRaHFFS2tCSUFNZ0FSQitOZ0lBSUFOQkNHb2dBeEFlRFFBTElBSkJBWEVOQndzZ0FFRW5FQ0VNQmdzZ0FDZ0NCRUgvaFFSTERRVWdBQ0FDUVJaQkVCQ05Ba1VOQlNBQVFjWHZFUkJDREFVTElBRWdCVUVJUjNJTkJDQUFRU2NRSVF3RUN5QUNRUUZyRGdJQ0FnTUxRUUVnQVhSQmppUnhEUUlMSUFGQjVTbEdEUUVnQkVFVlJnUkFJQUJCRmhBaEN5QUVRUlpIRFFFZ0FFRUpFQ0VNQVFzZ0FFRW5FQ0VMSUFOQkVHb2tBQXN6QVFKL0l3QkJFR3NpQWlRQVFUQVFKaUlEUVFBMkFnQWdBQ0FESUFKQkNHb2dBVUVCRUprQkVKRUJHaUFDUVJCcUpBQUxMUUVCZndKL1FRQWdBQ0lCRU5BQlJRMEFHaUFCRU5BQlFRaDBRWDlxQ3lBQUtBSVFheUFBRUY0b0FnQnJDekFCQVg4Z0FTQUFLQUlFSWdKSEJFQURRQ0FBRUJzYUlBSkJmR29pQWhBK0lBRWdBa2NOQUFzTElBQWdBVFlDQkFzS0FDQUFRYk1FTmdJQUN5c0FJQUJCME80Uk5nSUFJQUJCS0dvUSt3SWdBRUVjYWhBMklBQkJFR29RTmlBQVFRUnFFUHNDSUFBTG1nRUJCSDhnQUVIQTdoRTJBZ0FnQUVFMGFpSURFQlpCQUVvRVFBTkFJQU1nQVJBUktBSUFJZ0lFUUNBQ0lBSW9BZ0FvQWdRUkJRQUxJQUZCQVdvaUFTQURFQlpJRFFBTEMwRUFJUUVnQUVGQWF5SUNFQlpCQUVvRVFBTkFJQUlnQVJBUktBSUFJZ1FFUUNBRUlBUW9BZ0FvQWdRUkJRQUxJQUZCQVdvaUFTQUNFQlpJRFFBTEN5QUNFRFlnQXhBMklBQkJDR29RL1FJYUlBQUxTQUVCZnlBQkVGNG9BZ0FoQWlBQUlBRW9BZ1FnQVNnQ0VDQUNhaUlBUVFaMlFmei8veDl4YWlJQ0lBRVFqd1VFZjBFQUJTQUNLQUlBSUFCQi93RnhRUVIwYWdzUW1RRWFDK1FCQVFOL0l3QkI4QUJySWdRa0FDQUFLQUlJQkVBZ0JFRkFhMEVBUVFCQkF4QlJJZ1VnQUNnQ0NCQk1JQVVnQUNnQ0RCQk1Ba0FDUUNBQlJRMEFJQVVnQVJBNUlBSVFIMFVOQUNBRVFUQnFFRTRoQVNBQ0VCOUJBVTRFUUVFQUlRQURRQ0FFSUFJZ0FFSHIvdzhRN1FZZ0FTQUVFTk1CSUFRUUlCb0NRQ0FBUlFSQUlBVWdBUkFURVA0Q0lBVWdBeENlQWd3QkN5QUVRUUlRdHdFaUJpQUJFQk1RL2dJZ0JpQURFSjRDSUFZUS9RSWFDeUFDRUI4Z0FFSHIvdzlxSWdCS0RRQUxDeUFCRUNBYURBRUxJQVVnQXhDZUFnc2dCUkQ5QWhvTElBUkI4QUJxSkFBTGdBSUJBMzhqQUVFUWF5SUNKQUFDUUNBQUtBS1VBU0lCUlFSQVFRQWhBUXdCQ3lBQUlBRVFZaUVCSUFBdEFMd0JSUVJBSUFBZ0FSQ3dBU0VCQ3lBQ0lBQkJtQUZxSWdNUVFEWUNDQ0FDSUFNUU1qWUNBQ0FDUVFocUlBSVFIZ1JBQTBBQ2Z5QUFJQUVRM2dZRVFDQUFJQUVnQUNBQ0tBSUlLQUlBRU04QkVKNEREQUVMSUFBZ0FSQ3dBUXNoQVNBQ1FRaHFFR1lhSUFJZ0F4QXlOZ0lBSUFKQkNHb2dBaEFlRFFBTEN3SkFJQUJCcUFGcUlnTVFGa0VCUmdSQUlBQWdBUkN3QVNFQkRBRUxJQU1RRmtFQ1NRMEFJQUFnQUNBQkVMQUJJQU1RRmhDeEFTRUJDeUFBS0FLMEFVVU5BQ0FBSUFFUXNBRWhBUXNnQWtFUWFpUUFJQUVMb0FRQkFuOGpBRUVnYXlJSEpBQUNRQ0FBTFFDOEFRUkFJQUJCQUJEUkJpQUFRWmdCYWlJRkVCWUVRQ0FBS0FLNEFTRUlJQWRCRUdvUU1DRUdJQUFDZndKQUlBVVFGa0VCVGdSQVFRQWhCQU5BSUFBZ0JTQUVFQkVvQWdBUTRBWkJLMGNOQWlBSElBQWdCU0FFRUJFb0FnQVF6d0UyQWd3Z0JpQUhRUXhxRUVFZ0JFRUJhaUlFSUFVUUZrZ05BQXNMSUFBZ0FDZ0NsQUVnQ0NBRElBZ2JJQVlRK0FJTUFRc2dBQ2dDQkNFRklBQWdBQ2dDbEFFUVlpRUVBa0FnQlVHQWlBUlBCRUFnQUNBQVFRY2dCRUhRN1JFZ0FDZ0NsQUVROGdNaUJFRVlRWDhRZUF3QkN5QUFRUWNnQkVIUTdSRkJBQkR5QXlFRUlBQWdBQ2dDbEFFZ0JFRUFRZi8vLy84SFFRQVF6d0lMSUFCQkFEb0F2QUVnQUNBRU5nS1VBU0FBSUFBUTBBWkJBRUgvLy8vL0IwRUFFUElFQ3lJRUlBRVFoZ0VhSUFZUU5nd0NDeUFBS0FLVUFTRUVEQUVMSUFCQkFSRFJCaUFBSUFBb0FwUUJFTFlFUWVVcFJnUkFJQVJCQWhCSUlRUUxJQUFnQUNBQUVOQUdJQVFnQlVFQUlBWnJJQVp4RVBJRUlnUWdBUkNHQVJvZ0FDQUVJQUpCZnhCNEN3SkFJQUJCcUFGcUlnVVFGa1VFUUNBQUtBSzBBVVVOQVFzZ0JSQVdCRUFnQUNBQUlBUVFZaEM3QWlFR0lBQWdBU0FGRUJaQkFrOEVmeUFBSUFZZ0JSQVdFTEVCQlNBR0N5QUVJQVVRMHdZaEJBc2dBQUovSUFBb0FyUUJJZ1VFUUNBQUlBQWdCQ0FESUFVUWtRd2dBUkNHQVNFRUN5QUVDeUFDUVg4UWVBc2dCMEVnYWlRQUlBUUxud0VCQVg4akFFRVFheUlGSkFBZ0JTQUFRY1FCYWlBREVQb0RJQUFnQUNnQ3dBRWdCSEkyQXNBQklBQW9BcmdCUlFSQUlBQWdBallDdUFFTEFrQWdBRUdvQVdvaUFoQVdCRUFnQlNBQ0VJQUZJUU5CQUNFRUlBSVFweFFnQVJBV0JFQURRQ0FDSUFNZ0FTQUVFQkVvQWdBUUVSQkhJQVJCQVdvaUJDQUJFQlpKRFFBTEN5QURFRFlNQVFzZ0FpQUJFS3NJQ3lBQUVLWVVJQVZCRUdva0FBdTFBUUVDZnlNQVFVQnFJZ0VrQUNBQklBQkJIR29pQkJDTUFqWUNPQ0FCUVFocUlBRkJPR29RWnlFQUlBRWdCQkJoTmdJd0FrQUNRQ0FBSUFGQk9Hb2dBVUV3YWhCbklnVVFIa1VOQUFOQUlBQVFSQ0FDRUtNSkRRRWdBQkJFUVJCcUlBTVFtQUlOQWlBQUVQRUJJQUVnQkJCaE5nSXdJQUFnQlNBQlFUQnFFR2NRSGcwQUN3c2dCQUovSUFGQkNHb2lBQ0FDRVA4QkdpQUFRUkJxSUFNUS93RWFJQUFMRUtNVUlBQVFxUVlMSUFGQlFHc2tBQXRFQVFKL0l3QkJFR3NpQXlRQVFTd1FKa0gzQVJDM0FTSUVJQUVRd2dJUU9TQUVJQUlRVENBQUtBS0VBU0FEUVFocUlBUVFPaUlBRUh3Z0FCQStJQU5CRUdva0FBdEdBUUovSUFBb0FnQWdBQ2dDSEJEY0FrRThFQ1lpQVNBQUtBSUFFRlVnQUNnQ0RCRDBBeUVDSUFBZ0FUWUNHQ0FBS0FJTUlBSVE4d01nQUNnQ0FDQUFLQUlZRU9VQkMwVUFJQUVnQWlBQ0tBSUFLQUlvRVFBQUlnQUVmeUFBQlNBQ0lBSW9BZ0FvQWl3UkFBQWlBaUFDS0FJQUtBSllFUUFBQ3hDdkdDSUFJQUVvQWdBZ0FCQ2pBellDQUF1U0F3RUpmeU1BUVNCcklnZ2tBQ0FBRVBvQ0lRa2dBQ0FBSUFJUVlpSUZFTmtHSVFvQ1FBSkFBa0FnQUNBRkVQMEVEUUFnQUNBRkVNa0REUUFnQ2tFQlRnMEJRUUFoQlF3Q0N3Si9Ba0FDUUNBQUlBVVFuQXhCYkdvaUJrRUNTdzBBQWtBZ0JrRUJhdzRDQVFBQ0MwRzBBVUcyQVNBRUd3d0NDMEdxQVVHckFTQUVHd3dCQzBILy8vLy9CeUVCUWFRQlFhVUJJQVFiQ3lFR0lBQUNmeUFBSUFVUS9RUUVRQ0FBSUFZZ0NTQUNJQU1RcWdFTUFRc2dBQ0FBSUFZZ0FDQUpJQW9Rc1FFZ0FpQURFS29CSWdJZ0FSQ0dBUm9nQUVHYkFVR2FBU0FFR3lBSklBSVErQUVMSUFFUWhnRWhCUXdCQzBHbkFVR21BU0FFR3lFTVFRQWhCUU5BSUFnZ0J6WUNEQ0FJUVJCcVFRRWdDRUVNYWhERkF5RUxJQUFnQUNBQ0VHSWdCeENlQXlFR0lBQWdBQ0FERUdJZ0J4Q2VBeUVOSUFBZ0FTQUFJQUlnQmlBTEVQZ0NJQUFnQXlBTklBc1ErQUlnQkJDTERDRUdJQWNFZnlBQUlBQWdEQ0FKSUFVZ0JoQ3FBU0FCRUlZQkJTQUdDeUVGSUFzUU5pQUhRUUZxSWdjZ0NrY05BQXNMSUFoQklHb2tBQ0FGQzdnSkFRZC9Jd0JCUUdvaURDUUFJQXhCRUdwQkFFRW9FTjBCR2lBTUlBZ29BZ0EyQWhBZ0RDQUlLQUlFTmdJVUFuOUJBaUFJS0FJUUlncEZEUUFhSUF3Z0NqWUNHRUVEQ3lFTklBZ29BaWdpQ2dSQUlBeEJFR29nRFVFQ2RISWdDallDQUNBTlFRRnFJUTBMSUFnb0FqUWlDZ1JBSUF4QkVHb2dEVUVDZEdvZ0NqWUNBQ0FOUVFGcUlRMExBbjhnQ0NnQ09DSUtCRUFnREVFUWFpQU5RUUowYWlBS05nSUFJQTFCQVdvaERRc2dEVUVCYWlJUElBZ29BZ2hGRFFBYVFRQkJBUkJJSVFzZ0RFRVFhaUFQUVFKMGFpQUlLQUlJTmdJQUlBMUJBbW9MSVFvQ2Z3Si9BbjhnQ0NnQ0RBUkFJQXRCQWhCSUlRc2dDQ2dDREF3QkN5QUlLQUljQkVBZ0MwRUVFRWdoQ3lBTVFSQnFJQXBCQW5ScUlBZ29BaHcyQWdBZ0NrRUJhaUVISUFnb0FpQWhEa0VDREFJTFFRQWdCaUFIUlNBRWNuSU5BaG9nQzBFQ0VFZ2hDeUFBUXdBQUFBQkJBQkQ1QWdzaERpQUtJUWRCQVFzaEVDQU1RUkJxSUFkQkFuUnFJQTQyQWdBZ0NpQVFhaUVLUVFFTElRY2dDQ2dDRkNJT0JFQWdDeUFBSUE0UTRBWVF5eFFFZjBFSUJTQUFRUmtRSVVFUUN4QklJUXNnREVFUWFpQUtRUUowYWlBSUtBSVVOZ0lBSUFwQkFXb2hDZ3NnQ0NnQ0dBUkFJQUJCR1JBaElBdEJJQkJJSVFzZ0RFRVFhaUFLUVFKMGFpQUlLQUlZTmdJQUlBcEJBV29oQ2dzZ0NDZ0NKQVJBSUF0QndBQVFTQ0VMSUF4QkVHb2dDa0VDZEdvZ0NDZ0NKRFlDQUNBS1FRRnFJUW9MSUFnb0FqQUVRQ0FBUVNvUUlTQUxRWUFCRUVnaEN5QU1RUkJxSUFwQkFuUnFJQWdvQWpBMkFnQWdDa0VCYWlFS0N5QUlMUUE4QkVBZ0MwR0FDQkJJSVFzTEFrQWdDQzBBUFFSL0lBdEJnQkFRU0FVZ0N3c2dDUkJJSWdsRkJFQWdDa0YvYWlFS0RBRUxJQXhCRUdvZ0RVRUNkR29nQ1RZQ0FBc0NmMEc1QWtIZkFDQURHeUFFRFFBYUlBZ29BalFFUUVHaktTQUlLQUk0RFFFYUN5QUlLQUlRSVFRZ0JnUkFRYnNDUWVFQUlBTWJJQVFOQVJwQnVnSkI0QUFnQXhzTUFRc2dCd1JBSUFRRVFFRzRBa0hlQUNBREd5QUZEUUlhUWJRQ1Fkb0FJQU1iREFJTFFiWUNRZHdBSUFNYklBVU5BUnBCc2dKQjJBQWdBeHNNQVFzZ0JBUkFRYmNDUWQwQUlBTWJJQVVOQVJwQnN3SkIyUUFnQXhzTUFRdEJ0UUpCMndBZ0F4c2dCUTBBR2tHeEFrSFhBQ0FER3dzaEJRSi9JQUlnQUNBQ0VQMEVEUUFhSUFJZ0JVR25mMm9pQkVFRlN3MEFHaUFDUVFFZ0JIUkJNM0ZGRFFBYUlBQWdBaEM3QWdzaEJFRUFJUXNDZnlBRFJRUkFRUUFoQjBFQUlRNGdCQXdCQ3lBRUlRY2dBQ0FFSUFBZ0NDZ0NMQkRhQmlJT0VOc0dDeUVHUVN3UUppQUFFRlVnQmlBRkVGRWhCQU5BSUFRZ0RFRVFhaUFMUVFKMGFpZ0NBQkE1SUF0QkFXb2lDeUFOUncwQUN5QU5JQXBJQkVBZ0JDQU1RUkJxSUExQkFuUnFLQUlBRUV3TElBOGdDa2dFUUFOQUlBUWdERUVRYWlBUFFRSjBhaWdDQUJBNUlBOUJBV29pRHlBS1J3MEFDd3NnQUNBRUtBSUVJQUVRaGdFYUlBQW9Bb1FCSUF4QkNHb2dCQkE2SWdVUWZDQUZFRDRnQkNnQ0JDRUxBa0FnQXdSQUlBQkJLUkFoSUFBZ0FDQUxJQTVCQVJDdkFTQUlLQUlzUVFCQi8vLy8vd2RCQUJEUEFpQUFJQUFnQ3lBSFFRQVFyd0VpQ3lBQkVJWUJHZ3dCQ3lBQ0lBWkdEUUFnQUNBQklBc2dBaER4QkNFTEN5QU1RVUJySkFBZ0N3c21BQ0FDSUFOQkFFRUFFS3dCSWdJRVFDQUFJQUVnQWlBQ0tBSUFLQUlrRVFBQUVJb01Dd3NQQUNBQUlBRVE0QVpCVUdwQkJVa0xud0VCQW44akFFRWdheUlESkFCQkxCQW1JQUVRdHdFaEFTQURJQUlRUURZQ0dDQURJQUlRTWpZQ0VDQURRUmhxSUFOQkVHb1FIZ1JBQTBBZ0F5Z0NHQ2dDQkNFRUFrQWdBeWdDR0MwQUFBUkFJQUVnQkJBNURBRUxJQUVnQkJCTUN5QURRUmhxRU8wRElBTWdBaEF5TmdJUUlBTkJHR29nQTBFUWFoQWVEUUFMQ3lBQUtBS0VBU0FEUVFocUlBRVFPaUlBRUh3Z0FCQStJQU5CSUdva0FBczZBUUYvSXdCQkVHc2lBeVFBUVN3UUppQUJFTGNCSWdFZ0FoQTVJQUFvQW9RQklBTkJDR29nQVJBNklnQVFmQ0FBRUQ0Z0EwRVFhaVFBQzA4QkFYOGpBRUVRYXlJRUpBQkJMQkFtSUFBUVZTQUNRYzBBRUZFaUFpQUJFRGtnQWlBREVEa2dBQ2dDaEFFZ0JFRUlhaUFDRURvaUFCQjhJQUFRUGlBQ0tBSUVJUUFnQkVFUWFpUUFJQUFMVlFFQmZ5TUFRUkJySWdVa0FFRXNFQ1lnQUJCVklBTkIwZ0FRVVNJRElBRVFPU0FESUFJUU9TQURJQVFRVENBQUtBS0VBU0FGUVFocUlBTVFPaUlBRUh3Z0FCQStJQU1vQWdRaEFDQUZRUkJxSkFBZ0FBdENBUUYvQWtBQ1FDQUJRWDVxSWdKQkFrc0VRQ0FCUVF4R0lBRkI1U2xHY2cwQ0RBRUxJQUpCQVdzTkFRdEJDRUVRRUVoQklCQklRWDl6SUFCeElRQUxJQUFMUEFFQ2Z5QUFLQUtFQVNJQ0tBSTBJUUVnQWhDVUNFVUVRQ0FBUVFFZ0FTZ0NFQ0FBRUp3SVJ3Ui9JQUFnQVNnQ0VCQzhGQVZCQUFzUWxRd0xDMjRCQW44akFFRVFheUlESkFBQ1FDQUNCRUJCTEJBbVFRQkJBRUgrQVJCUklnUWdBaEE1SUFBb0FvUUJJQU5CQ0dvZ0JCQTZJZ0lRZkF3QkN5QUFLQUtFQVNBRFFTd1FKa0VBUVFCQi9RRVFVUkE2SWdJUWZBc2dBaEErSUFGRkJFQWdBQkRaQlFzZ0EwRVFhaVFBQzUwQ0FRUi9Jd0JCRUdzaUNTUUFJQUFnQWlBRUVORVVJUW9nQkJBV0JFQWdBQ0FFRUJZZ0FDZ0NpQUVpQkdvMkFvZ0JJQVJCQVdvaENBc2dBRUhRQUJBbUlBQVFWU0FDSUFvZ0NDQUFRZWdBYWhDK0ZDSUNLQUlNSUFFUWhnRWFJQVVRcHdFRVFBTkFJQVVnQnhEVUF4QVdRUUZPQkVBZ0J5QUlhaUVCUVFBaEJBTkFJQUFnQVNBRklBY1ExQU1nQkJBUktBSUFRWDhRZUNBRVFRRnFJZ1FnQlNBSEVOUURFQlpJRFFBTEN5QUhRUUZxSWdjZ0JSQ25BVWtOQUFzTElBWUVRRUU4RUNZaUFTQUFFRlVnQWhEMEF5RUVJQVlnQVRZQ0FDQUNJQVFROHdNZ0FDQUdLQUlBRU9VQkN5QURCRUFnQUNBQ0tBSU1JQU1RMmdVTElBQkJxQUpxSUFsQkNHb2dBaEE2SWdBUWZTQUFFRDRnQ1VFUWFpUUFJQUlMRWdBZ0FDZ0NBRUVYZGtIL0FYRkJnWDlxQ3dvQUlBQW9BZ0JCSDNZTHR3RUJCSDhqQUVFUWF5SUVKQUJCTWtFcklBTWJJUVVnQWtJZ2lLY2hCaUFDcHlFSEFrQWdBMFVFUUNBQVFSVWdCU0FCSUFjZ0JoQ2JEQ0lERFFFTFFTd1FKaUlESUFBUVZTQUJJQVVRVVNFQklBUWdBellDRENBQklBY1FUQ0FCSUFZUVRDQUFRWkFDYWlBRVFRaHFJQUVRT2lJQkVIMGdBUkErSUFSQkZUWUNCQ0FBUWJRQ2FpQUVRUVJxRUQ4Z0JFRU1haEJISUFCQjZBQnFJQVFvQWd3UWpBRWdCQ2dDRENnQ0JDRURDeUFFUVJCcUpBQWdBd3VhQWdFRmZ5TUFRUkJySWdNa0FFRXdRVEVnQVJ0QktVRXFJQUViSUFJYklRUWdBQkQ2QWlFRkFrQUNRQ0FDRFFBZ0EwRVVOZ0lNSUFCQnRBSnFJZ1lnQTBFTWFoQS9FQlpCQVVnTkFFRUFJUUpCQUNFQkEwQWdBMEVVTmdJTUFrQWdCU0FHSUFOQkRHb1FQeUFDRUJFb0FnQWlCeWdDQ0VjTkFDQUVJQWNvQWd4SERRQWdCeWdDQkNFQkN5QURRUlEyQWd3Z0FrRUJhaUlDSUFZZ0EwRU1haEEvRUJaSURRQUxJQUVOQVF0QkxCQW1JZ0VnQUJCVklBVWdCQkJSSVFJZ0F5QUJOZ0lNSUFCQmtBSnFJQU5CQ0dvZ0FoQTZJZ0VRZlNBQkVENGdBMEVVTmdJSUlBQkJ0QUpxSUFOQkNHb1FQeUFEUVF4cUVFY2dBRUhvQUdvZ0F5Z0NEQkNNQVNBREtBSU1LQUlFSVFFTElBTkJFR29rQUNBQkM3QUJBUU4vSXdCQkVHc2lCaVFBSUFZZ0FUWUNEQUovQWtBZ0FFRzBBbW9pQ0NBR1FReHFFRDhRRmtFQlNBMEFRUUFoQUFOQUFrQWdCaUFCTmdJSUFrQWdBaUFJSUFaQkNHb1FQeUFBRUJFb0FnQWlCeWdDREVjTkFDQURJQWNvQWdoSERRQWdCMEVBRUM4Z0JFY05BQ0FIUVFFUUx5QUZSZzBCQ3lBR0lBRTJBZ3dnQUVFQmFpSUFJQWdnQmtFTWFoQS9FQlpJRFFFTUFnc0xJQWNvQWdRTUFRdEJBQXNoQUNBR1FSQnFKQUFnQUF0UEFRSi9JQUJCNkFCcUlRSURRQ0FDSUFFUUx5SUJLQUlNSWdOQmFXb2lBRUVKUzBIakJDQUFRZi8vQTNGMlFRRnhSWEpGQkVBZ0FTQUFRUUowUWVqdUVXb29BZ0FRTHlFQkRBRUxDeUFEQzRvQ0FRTi9Jd0JCRUdzaUJDUUFBa0FDUUNBRERRQWdCRUVjTmdJSUlBQkIzQUpxSWdVZ0JFRUlhaEEvRUJaQkFVZ05BRUVBSVFNRFFDQUVRUncyQWdnZ0JDQUZJQVJCQ0dvUVB5QURFQkVvQWdBaUJqWUNEQ0FHUVFBUUx5QUJSZ1JBSUFRb0FneEJBUkF2SUFKR0RRTUxJQVJCSERZQ0NDQURRUUZxSWdNZ0JTQUVRUWhxRUQ4UUZrZ05BQXNMUVN3UUppSUZJQUFRVlVFQVFSd1FVU0VESUFRZ0JUWUNEQ0FESUFFUU9TQURJQUlRT1NBRVFSdzJBZ2dnQUVIY0Ftb2dCRUVJYWhBL0lBUkJER29RUnlBQVFaQUNhaUFFUVFocUlBUW9BZ3dRT2lJQkVIMGdBUkErSUFCQjZBQnFJQVFvQWd3UWpBRUxJQVFvQWd3b0FnUWhBQ0FFUVJCcUpBQWdBQXRHQVFKL0l3QkJFR3NpQkNRQVFTd1FKa0VJRUxjQklnTWdBUkE1SUFNZ0FoQk1JQU5CQUJCTUlBQW9Bb1FCSUFSQkNHb2dBeEE2SWdBUWZDQUFFRDRnQkVFUWFpUUFDMVFCQW44akFFRVFheUlESkFCQkxCQW1JQUFRVlVFQVFRc1FVU0lDSUFFUS9nSWdBRUhvQUdvZ0FoQ01BU0FBUWRRQmFpQURRUWhxSUFJUU9pSUFFSDBnQUJBK0lBSW9BZ1FoQUNBRFFSQnFKQUFnQUF0VUFRSi9Jd0JCNEFCcklnSWtBQ0FDUVJCcUlBSWdBUkNyQnlJREVPRVVJZ0VnQUVFQVFRQVEzQVlnQVVFNGFoQ1lCeUFCUVNScUVKZ0hJQUZCRUdvUW1BY2dBUkNzQWlBREVLd0NJQUpCNEFCcUpBQUxSUUVCZnlBQkVGNG9BZ0FoQWlBQUlBRW9BZ1FnQVNnQ0VDQUNhaUlBUVFwMlFmei8vd0Z4YWlJQ0lBRVFqd1VFZjBFQUJTQUNLQUlBSUFCQi94OXhhZ3NRbVFFYUN5MEJBWDhDZjBFQUlBQWlBUkRRQVVVTkFCb2dBUkRRQVVFTWRFRi9hZ3NnQUNnQ0VHc2dBQkJlS0FJQWF3dm5Bd0lGZndGOUl3QkJJR3NpQmlRQUlBRVFJeG9nQWlnQ0FDRUpJQUVRUENFSElBWkJBRG9BSHdKQUFrQWdCMFVOQUNBQklBa2dCeEEwSWdvUUVTZ0NBQ0lJUlEwQUEwQWdDQ2dDQUNJSVJRMEJJQWtnQ0NnQ0JFY0VRQ0FJS0FJRUlBY1FOQ0FLUncwQ0N5QUJFRU1nQ0VFSWFpQUNFSXNEUlEwQUN3d0JDeUFHUVJCcUlBRWdDU0FESUFRZ0JSRFFDU0FCRUNNb0FnQWhBaUFCRUVNaEF3SkFJQWNFUUNBREtnSUFJQWV6bENBQ1FRRnFzMTFCQVhNTkFRc2dCaUFIRUxvQlFRRnpJQWRCQVhSeU5nSU1JQVlDZnlBQkVDTW9BZ0JCQVdxeklBRVFReW9DQUpXTklndERBQUNBVDEwZ0MwTUFBQUFBWUhFRVFDQUxxUXdCQzBFQUN6WUNDQ0FCSUFaQkRHb2dCa0VJYWhCU0tBSUFFTk1FSUFrZ0FSQThJZ2NRTkNFS0N3SkFJQUVnQ2hBUktBSUFJZ0pGQkVBZ0JpZ0NFQ0FCUVFocUlnSW9BZ0EyQWdBZ0FpQUdLQUlRTmdJQUlBRWdDaEFSSUFJMkFnQWdCaWdDRUNnQ0FFVU5BU0FHS0FJUUlRSWdBU0FHS0FJUUtBSUFLQUlFSUFjUU5CQVJJQUkyQWdBTUFRc2dCaWdDRUNBQ0tBSUFOZ0lBSUFJZ0JpZ0NFRFlDQUFzZ0JrRVFhaEJmSVFnZ0FSQWpJZ0VnQVNnQ0FFRUJhallDQUNBR1FRRTZBQjhnQmtFUWFoQzlDUXNnQUNBR1FSQnFJQWdRTVNBR1FSOXFFS0lCSUFaQklHb2tBQXMxQUNBQUtBSUFHaUFBS0FJQUlBQVE5Z1JCTkd4cUdpQUFLQUlBSUFBUTNRWkJOR3hxR2lBQUtBSUFJQUFROWdSQk5HeHFHZ3NIQUNBQUVEQWFDekFCQVg4Z0FTQUFLQUlFSWdKSEJFQURRQ0FBRUJzYUlBSkJkR29pQWhBMklBRWdBa2NOQUFzTElBQWdBVFlDQkFzUkFDQUFRVFJxSUFFUUVTZ0NBQ2dDQ0FzTkFDQUFRVUJyS0FJQUtBSUFDekVCQVg4Z0FCQ0xCQ0FBS0FJQUJFQWdBQ0FBS0FJQUVLWU1JQUFRR3hvZ0FDZ0NBQ0VCSUFBUXF3TWFJQUVRS2dzTEVRQWdBRUUwYWlBQkVCRW9BZ0FvQWdRTEZ3QWdBQzBBZFFSL1FRRUZRUUpCQUNBQUxRQjJHd3NMT0FFQmYwRUJJUUVnQUNBQUtBSUFLQUl3RVFBQUJIOGdBUVVnQUNBQUtBSUFLQUo0RVFBQUlnQWdBQ2dDQUNnQ0xCRUFBQkNQQWdzTGpBRUJBMzhnQUNnQ0JDRUJBa0FnQUNnQ0FDZ0NBQ0lESUFNb0FnQW9Bb0FCRVFBQVJRMEFBa0FnQVNnQ2pBUVFyQU1vQWdCQi80Y0VTdzBBSUFBb0FnQW9BZ0FpQVNBQktBSUFLQUo0RVFBQUlnRWdBU2dDQUNnQ1lCRUFBQTBBSUFBb0FnQW9BZ0FpQUNBQUtBSUFLQUo0RVFBQUlnQWdBQ2dDQUNnQ2FCRUFBRVVOQVF0QkFTRUNDeUFDQy9RQ0FRcC9Jd0JCMEFCcklnVWtBQ0FBUVRocUlnWWdCRUVBRUJFb0FnQVF5QUVoQ3lBR0lBWWdCRUVBRUJFb0FnQVFZaEM3QWlFTUlBVkJRR3NRTUNFSElBdEJBVTRFUUNBQlFZY0NSaUVOSUFGQjBDSkhJUTREUUNBRlFUQnFFREFoQ1NBRklBZzJBaGdnQ1NBRlFSaHFFRUVnQlVFb2FrRUJJQVlnQkVFQUVCRW9BZ0FnRENBSkVQZ0NFSFVoQ2lBRlFSaHFFREFoQUFKQUFrQWdEVVVFUUNBT0RRRWdBQ0FLRUlRQklBQWdCVUVRYWtFQklBUkJBUkFSS0FJQUVIVVFoQUVNQWdzZ0FDQUZRUkJxUVFFZ0JrRURRUUFRZEJCMUVJUUJJQUFnQ2hDRUFTQUFJQVZCQ0dwQkFTQUVRUUVRRVNnQ0FCQjFFSVFCREFFTElBQWdCVUVRYWtFQklBWkJBMEVBRUhRUWRSQ0VBU0FBSUFWQkNHcEJBQ0FDRUhVUWhBRWdBQ0FLRUlRQkN5QUZJQVlnQVNBTUlBQVF3Z00yQWhBZ0J5QUZRUkJxRUVFZ0FCQ3VBeUFKRURZZ0NFRUJhaUlJSUF0SERRQUxDeUFHSUFNZ0J4Q2RBeUVBSUFjUU5pQUZRZEFBYWlRQUlBQUxEQUFnQUNBQkVOOENRUnRHQy9BR0FRVi9Jd0JCTUdzaUJTUUFJQVFRZ3dNaENTQUVFSklFSVFZZ0JVRWdhaEF3SVFnQ1FDQUJRY3A5YWtFQ1RRUkFJQUJCT0dvaUJFR0EzaEVRUWlBRVFjY2lFQ0ZCLy8vLy93Y2hCQXdCQ3lBQVFUaHFJUWNnQVVISGZXcEJBazBFUUNBSFFmYm1FUkJDSUFkQnp5SVFJVUgvLy8vL0J5RUVEQUVMSUFkQkVoQWhBbjlCLy8vLy93Y2dBVUgxZkdvaUJFRVJTdzBBR2dKQUFrQUNRQUpBSUFSQkEyc09Ed01EQXdFQkFRTURBd0lDQWdNREF3QUxRUUFNQXd0QkFRd0NDMEVDREFFTElBZEJ6ZVlSRUVKQi8vLy8vd2NnQVVIeWZHb2lCRUVQVHcwQUdpQUVRUUowUWJqc0VXb29BZ0FMSVFRZ0NDQUZRUWhxUVFFZ0IwRURRUUFRZEJCMUVJUUJJQVJCLy8vLy93ZEdEUUFnQ0NBRlFSaHFRUUFnQkJCMUVJUUJDeUFGSUFNUVFEWUNHQ0FGSUFNUU1qWUNDQ0FGUVJocUlBVkJDR29RSGdSQUEwQWdDQ0FGUVFocVFRRWdCU2dDR0NnQ0FCQjFFSVFCSUFWQkdHb1FaaG9nQlNBREVESTJBZ2dnQlVFWWFpQUZRUWhxRUI0TkFBc0xBa0FDUUNBQlFmVjhhaUlIUVJGTEJFQUNRQ0FCUWNwOWFpSUdRUVZOQkVCQnpTSWhBUUpBQWtBQ1FBSkFJQVpCQVdzT0JRRUNCd1VBQXd0QnppSWhBUXdHQzBIUUlpRUJJQUJCT0dvZ0FoREpBMFVOQlNBQVFkQWlJQVFnQWlBREVLNE1JUU1NQmd0QnhpSWhBUXdFQ3lBQVFUaHFJZ0JCeFNJZ0FDQUFRU0FReVFFaUEwRUVFTEVCSUFnUXdnTWhCQ0FGUVFocUVEQWhBU0FGSUFBZ0JDQURRUUFRcndFMkFoZ2dBU0FGUVJocUVFRWdCU0FBSUFRZ0EwRUJFSzhCTmdJWUlBRWdCVUVZYWhCQklBQkIvQUFnQWlBQUlBQWdBMEVDRUxFQklBRVFuUU1RK0FFaEF5QUJFRFlNQkFzZ0FDZ0NOQ0FGUVFocVFZem5FUkJwSWdBUW9BTWdBQkFnR2tFQUlRTU1Bd3RCekNJaEFRd0JDd0pBQW44Q1FBSkFBa0FDZndKQUFrQUNRQ0FIUVFGckRoRUZCQUlCQUFZRkJBSUJBQVlGQkFJQkFBWUxRWWtuUVlnbklBWWJEQUlMUVkwblFZNG5RWThuSUFrYklBWWJEQUVMUVlvblFZc25RWXduSUFrYklBWWJDeUVCSUFCQk9Hb2dBaERKQXcwRURBVUxRWWtDUVlnQ0lBWWJEQUlMUVkwQ1FZNENRWThDSUFrYklBWWJEQUVMUVlvQ1FZc0NRWXdDSUFrYklBWWJDeUVCSUFCQk9Hb2dBaERKQTBVTkFRc2dBQ0FCSUFRZ0FpQURFSzRNSVFNTUFRc2dBRUU0YWlBQklBSWdDQkRDQXlFREN5QUlFSzRESUFWQk1Hb2tBQ0FEQys0QkFRaC9Jd0JCTUdzaUJTUUFJQUJCT0dvaUFDQUVFTWdCSVFrZ0FDQUVFSzRFSVFZZ0FDQUFJQUFnQkJCaUVMc0NJQVlRc1FFaEN5QUFJQUFnQXhDN0FpQUdFTEVCSVF3Z0JVRWdhaEF3SVFZZ0NVRUJUZ1JBQTBBZ0JVRVFhaEF3SVFnZ0JTQUhOZ0lNSUFnZ0JVRU1haEJCSUFJZ0FDQUFJQUVnRENBQUlBUWdDeUFJRVBnQ0VQZ0JJZ29RK1FRZ0FpQUFJQW9RL3dJZ0JTQUFJQW9nQWlnQ0FCQ0dBVFlDRENBR0lBVkJER29RUVNBSUVEWWdCMEVCYWlJSElBbEhEUUFMQ3lBQ0lBQWdBQ0FBSUFNZ0JoQ2RBeUFDS0FJQUVJWUJJZ0FRL3dJZ0JoQTJJQVZCTUdva0FDQUFDdzRBSUFBb0FtaEJvM3RxUVR4SkN3NEFJQUFnQUNBQkVMQUJFTWdEQ3cwQUlBQWdBUkRmQWtIdUtVWUwvUUlCQkg4akFFRkFhaUlFSkFBQ1FDQUJJQUVvQWdBb0Fod1JBQUJCREVjTkFDQUFRVGhxSWdNZ0F4Q0VEQ0lGRVAwRUJFQWdBeEQ2QWlBRlJ3UkFJQU1nQlNBQ0lBTkJBVUVBRUhRZ0EwRUFRUUFRZEJEVUJpRUNEQUlMSUFNZ0FoQmlJQVZHRFFFZ0EwR3JBU0FGSUFJZ0EwRUFRUUFRZEJDcUFTRUNEQUVMSUFNZ0JSREpBMFVOQUNBRElBVVF5QU1oQmlBRElBTVErZ0lnQmhDeEFTQUZSd1JBSUFNZ0JTQUNJQUFnQTBFQlFRQVFkQ0FHRUtFQ0lBQWdBMEVBUVFBUWRDQUdFS0VDRU5RR0lRSU1BUXNnQXlBQ0VHSWdCVVlOQUNBRFFhc0JJQVVnQWlBQUlBTkJBRUVBRUhRZ0JoQ2hBaENxQVNFQ0N5QUVRUWhxSUFCQk9Hb2lBeEMrQWlBRUlBUW9BamcyQWp3Z0JFRUlhaEM0QVNBRVFRaHFJQUVRNUFFZ0JDQUVRVHhxSUFSQkNHb1ErZ01nQkVFSWFpQURFTDRDSUFRb0FqUWhCU0FFUVFocUVMZ0JJQUVRaGdRaEFTQURJQUlnQUNBRVFUeHFFTHdJUVc5eElBQWdCRUU4YWhEL0JDQUJJQVZ5RUlzSUlBUkJRR3NrQUFzU0FDQUFRUkJxSUFFUUVTZ0NBRUVBRUM4TFZBRUJmeU1BUWVBQWF5SUNKQUFnQUJERkJTQUFRWWlFQ1RZQ0FDQUFRUlJxUVFCQkFFRUJRUUJCQUVFQUVFVWdBa0VJYWlBQlFRQkJBVUVBUVFCQkFCQkZJZ0FRandFZ0FCQTFHaUFDUWVBQWFpUUFDelVBSUFBb0FnQWFJQUFvQWdBZ0FCRDZCRUU0YkdvYUlBQW9BZ0FnQUJEN0JFRTRiR29hSUFBb0FnQWdBQkQ2QkVFNGJHb2FDK2NCQVFGL0lBQWdBQ2dDQUNnQ2JCRUFBQVJBUVFSQkJVSC8vLy8vQnlBQlFRSkdHeUFCUVFGR0d3OExRZi8vLy84SElRRUNRQ0FBSUFBb0FnQW9BaHdSQUFCQkVFY05BQ0FBSUFBb0FnQW9BaXdSQUFBb0FnUkJQM0ZCZldvaUFrRURTdzBBQWtBQ1FDQUNRUUpyRGdJQUFBRUxRUWhCQ1VILy8vLy9CeUFBSUFBb0FnQW9BaXdSQUFBcEFnUkNONGluUVE5eElnQkJCRVliSUFCQkFVWWJEd3NnQUNBQUtBSUFLQUlzRVFBQUVLNENSUTBBUVFoQkNVSC8vLy8vQnlBQUlBQW9BZ0FvQWl3UkFBQXBBZ1JDTjRpblFROXhJZ0JCQkVZYklBQkJBVVliSVFFTElBRUxDd0FnQVNBQ1FUZ1FQUm9MTFFFQmYwSDRBQkJHSWdNZ0FDQUJLQUlBSUFFb0FnUVFxeFVoQUNBRElBSWdBeWdDQUNnQ0JCRUJBQ0FBQzVFSEFRSitJQUFwQWdRaUFrS0FnSUNBZ0lDQU9JTlFCRUFnQUNBQktRSUVRb0NBZ0lDQWdJQTRneUFDUXYvLy8vLy8vLzlIZzRRaUFqY0NCQXNDZndKL0FuOENmd0ovQW44Q2Z3Si9BbjhDZndKL0FuOENmd0ovQW44Q2Z3Si9BbjhnQVNrQ0JDSURRb0NBZ01BQWcxQkZCRUFnQUNBQ1FvQ0FnTUFBaENJQ053SUVJQUVwQWdRaEF3c2dBMEtBZ0lDQUJJTlFSUXNFUUNBQUlBSkNnSUNBZ0FTRUlnSTNBZ1FnQVNrQ0JDRURDeUFEUW9DQWdJQUJnMUJGQ3dSQUlBQWdBa0tBZ0lDQUFZUWlBamNDQkNBQktRSUVJUU1MSUFOQ2dJQ0FnTUFBZzFCRkN3UkFJQUFnQWtLQWdJQ0F3QUNFSWdJM0FnUWdBU2tDQkNFREN5QURRb0NBZ0lDQUFZTlFSUXNFUUNBQUlBSkNnSUNBZ0lBQmhDSUNOd0lFSUFFcEFnUWhBd3NnQTBLQWdJQ0FnQVNEVUVVTEJFQWdBQ0FDUW9DQWdJQ0FCSVFpQWpjQ0JDQUJLUUlFSVFNTElBTkNnSUNBZ0lBSWcxQkZDd1JBSUFBZ0FrS0FnSUNBZ0FpRUlnSTNBZ1FnQVNrQ0JDRURDeUFEUW9DQWdJQ0FFSU5RUlFzRVFDQUFJQUpDZ0lDQWdJQVFoQ0lDTndJRUlBRXBBZ1FoQXdzZ0EwS0FnSUNBZ0NDRFVFVUxCRUFnQUNBQ1FvQ0FnSUNBSUlRaUFqY0NCQ0FCS1FJRUlRTUxJQU5DZ0lDQWdJREFBSU5RUlFzRVFDQUFJQUpDZ0lDQWdJREFBSVFpQWpjQ0JDQUJLUUlFSVFNTElBTkNnSUNBZ0lDQUNJTlFSUXNFUUNBQUlBSkNnSUNBZ0lDQUNJUWlBamNDQkNBQktRSUVJUU1MSUFOQ2dJQ0FnSUNBSUlOUVJRc0VRQ0FBSUFKQ2dJQ0FnSUNBSUlRaUFqY0NCQ0FCS1FJRUlRTUxJQU5DZ0lDQWdJQ0F3QUNEVUVVTEJFQWdBQ0FDUW9DQWdJQ0FnTUFBaENJQ053SUVJQUVwQWdRaEF3c2dBMEtBZ0lDQWdJQ0FBWU5RUlFzRVFDQUFJQUpDZ0lDQWdJQ0FnQUdFSWdJM0FnUWdBU2tDQkNFREN5QURRb0NBZ0lDQWdJQUNnMUJGQ3dSQUlBQWdBa0tBZ0lDQWdJQ0FBb1FpQWpjQ0JDQUJLUUlFSVFNTElBTkNnSUNBZ0lDQWdBU0RVRVVMQkVBZ0FDQUNRb0NBZ0lDQWdJQUVoQ0lDTndJRUlBRXBBZ1FoQXdzZ0EwS0FnSUNBZ0lBUWcxQkZDd1JBSUFBZ0FrS0FnSUNBZ0lBUWhDSUNOd0lFSUFFcEFnUWhBd3NnQTBLQWdJQ0FnSUFCZzFCRkN3UkFJQUFnQWtLQWdJQ0FnSUFCaENJQ053SUVJQUVwQWdRaEF3c2dBMEtBZ0lDQWdJQUNnMUJGQ3dSK0lBQWdBa0tBZ0lDQWdJQUNoQ0lDTndJRUlBRXBBZ1FGSUFNTFFvQ0FnSUNBZ0FTRFVFVUVRQ0FBSUFKQ2dJQ0FnSUNBQklRM0FnUUxDOFFEQVFSL0l3QkJJR3NpQWlRQUlBQW9Bb3dFRU1NSUlRTUNmeUFCSUFFb0FnQW9BaGdSQUFCQjRlRVJFQ3NFUUNBQ0lBTWdBa0VJYWtIODRSRVFhU0lFRUlNRU5nSVlJQUlnQXhDQkFUWUNBQ0FDUVJocUlBSVFsd0loQlNBRUVDQWFRUUVnQlEwQkdnc2dBU0FCS0FJQUtBSVlFUUFBUVpqaUVSQXJCRUFnQWlBRElBSkJDR3BCL09FUkVHa2lCQkNEQkRZQ0dDQUNJQU1RZ1FFMkFnQWdBa0VZYWlBQ0VKY0NJUVVnQkJBZ0drRUJJQVVOQVJvTEFrQWdBQ2dDakFRb0FnQkJEVVlOQUNBQklBRW9BZ0FvQWhnUkFBQkJyK0lSRUNzRVFDQUNJQU1nQWtFSWFrRy80aEVRYVNJQUVJTUVOZ0lZSUFJZ0F4Q0JBVFlDQUNBQ1FSaHFJQUlRbHdJaEJDQUFFQ0FhUVFFZ0JBMENHZ3NnQVNBQktBSUFLQUlZRVFBQVFkWGlFUkFyQkVBZ0FpQURJQUpCQ0dwQjZ1SVJFR2tpQUJDREJEWUNHQ0FDSUFNUWdRRTJBZ0FnQWtFWWFpQUNFSmNDSVFRZ0FCQWdHa0VCSUFRTkFob0xJQUVnQVNnQ0FDZ0NHQkVBQUVHUDR4RVFLMFVOQUNBQ0lBTWdBa0VJYWtIcTRoRVFhU0lBRUlNRU5nSVlJQUlnQXhDQkFUWUNBQ0FDUVJocUlBSVFsd0loQVNBQUVDQWFRUUVnQVEwQkdndEJBQXNoQUNBQ1FTQnFKQUFnQUF0cEFRSi9Jd0JCSUdzaUF5UUFBa0FnQUJBYktBSUFJQUFvQWdSclFRSjFJQUZQQkVBZ0FDQUJFS3dJREFFTElBQVFHeUVDSUFOQkNHb2dBQ0FBRUJZZ0FXb1Eyd1FnQUJBV0lBSVE4Z0lpQWlBQkVLOFZJQUFnQWhDS0NTQUNFSkVEQ3lBRFFTQnFKQUFMTkFFQmZ5TUFRUkJySWdNa0FDQUFJQU5CREdvZ0EwRUlhaUFCSUFKQkFVWVFtQVVhSUFNb0FnZ2hBQ0FEUVJCcUpBQWdBQXN6QVFGL0lBQVFGaUlDSUFGSkJFQWdBQ0FCSUFKckVMNE1Ed3NnQWlBQlN3UkFJQUFnQUNnQ0FDQUJRUUowYWhDV0J3c0xMUUFDZjBFQklBRXRBQWRCQ0hFTkFCcEJBQ0FCRUlBQ1JRMEFHaUFBSUFBb0FnQW9BaHdSQUFCQkVFWUxDeWtCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFUXRCVVFNU2dDQUNFQUlBSkJFR29rQUNBQUN5Z0FJQUlnQVdzaUFFRUJUZ1JBSUFNb0FnQWdBU0FBRUQwYUlBTWdBeWdDQUNBQWFqWUNBQXNMRGdBZ0FDQUJRUUowYWlnQzhBTUw2UU1DQlg4QmZTTUFRU0JySWdVa0FDQUJFQ01hSUFJb0FnQWhDQ0FCRUR3aEJpQUZRUUE2QUI4Q1FBSkFJQVpGRFFBZ0FTQUlJQVlRTkNJSkVCRW9BZ0FpQjBVTkFBTkFJQWNvQWdBaUIwVU5BU0FJSUFjb0FnUkhCRUFnQnlnQ0JDQUdFRFFnQ1VjTkFnc2dBUkJESUFkQkNHb2dBaENMQTBVTkFBc01BUXNnQlVFUWFpQUJJQWhCNE5zUklBTWdCQkNhQmlBQkVDTW9BZ0FoQWlBQkVFTWhBd0pBSUFZRVFDQURLZ0lBSUFhemxDQUNRUUZxczExQkFYTU5BUXNnQlNBR0VMb0JRUUZ6SUFaQkFYUnlOZ0lNSUFVQ2Z5QUJFQ01vQWdCQkFXcXpJQUVRUXlvQ0FKV05JZ3BEQUFDQVQxMGdDa01BQUFBQVlIRUVRQ0FLcVF3QkMwRUFDellDQ0NBQklBVkJER29nQlVFSWFoQlNLQUlBRU5NRUlBZ2dBUkE4SWdZUU5DRUpDd0pBSUFFZ0NSQVJLQUlBSWdKRkJFQWdCU2dDRUNBQlFRaHFJZ0lvQWdBMkFnQWdBaUFGS0FJUU5nSUFJQUVnQ1JBUklBSTJBZ0FnQlNnQ0VDZ0NBRVVOQVNBRktBSVFJUUlnQVNBRktBSVFLQUlBS0FJRUlBWVFOQkFSSUFJMkFnQU1BUXNnQlNnQ0VDQUNLQUlBTmdJQUlBSWdCU2dDRURZQ0FBc2dCVUVRYWhCZklRY2dBUkFqSWdFZ0FTZ0NBRUVCYWpZQ0FDQUZRUUU2QUI4Z0JVRVFhaEN6QWdzZ0FDQUZRUkJxSUFjUU1TQUZRUjlxRUtJQklBVkJJR29rQUF2TUFnRUJmMEVCSVFJQ1FDQUJJQUVvQWdBb0Fpd1JBQUFROFFJTkFFRURJUUlnQVNBQktBSUFLQUlzRVFBQUVQQUNEUUFDUUFKL0lBQW9Bb3dFR2tFQUN3UkFJQUVnQVNnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElGVWcwQkMwRUtJUUlnQVJEYUJBMEJRUUFoQWlBQklBRW9BZ0FvQXNBQkVRQUFEUUVMSUFFZ0FTZ0NBQ2dDTEJFQUFCQ3hBZ1JBUWQ4cElRSWdBU0FCS0FJQUtBSXNFUUFBTFFBd0RRRUxBa0FnQUNnQ2pBUXRBTm9EUlEwQUlBRWdBU2dDQUNnQ0xCRUFBQ2tDQkVJL2cwSUdVZzBBSUFCQk9HcEI0dUFSUVlDR0JCQ3lBVUVNRHdzZ0FTQUJLQUlBS0FJc0VRQUFFTEVDSVFJZ0FTQUJLQUlBS0FJc0VRQUFJUUFnQWdSQVFRa2hBaUFBTFFBbERRRWdBU0FCS0FJQUtBSWNFUUFBUVJCR1FRRjBJUUlNQVF0QkJ5RUNJQUFvQWdSQlAzRWlBRUVRU3cwQUlBQkJBblJCd09vUmFpZ0NBQThMSUFJTFZ3RUNmeU1BUVNCcklnTWtBQ0FBRURzaUFpQURRUWhxSUFBZ0FCQVdRUUZxRU1rRklBQVFGaUFDRUxFR0lnSW9BZ2dnQVJDWEF5QUNJQUlvQWdoQkJHbzJBZ2dnQUNBQ0VPVUhJQUlRcndZZ0EwRWdhaVFBQ3cwQUlBQkI2QUJxSUFFUXRnd0xlUUVCZndKQUlBQWdBQ2dDQUNnQ0hCRUFBRUVRUmdSQUlBQWdBQ2dDQUNnQ0xCRUFBQkN4QWtVTkFTQUFJQUFvQWdBb0Fpd1JBQUF0QURBTkFTQUFJQUFvQWdBb0Fpd1JBQUF0QUNWQkFYTVBDeUFBSUFBb0FnQW9BaHdSQUFCQkRrY05BQ0FBSUFBb0FnQW9BaXdSQUFBUXNRSWhBUXNnQVFzVEFFRVNRZi8vLy84SElBQXRBQWRCQ0hFYkM2d0NBZ0YvQW40Z0F5a0NCQ0lGUW9DQWdJQ0FCSU1oQmdKQUlBSkJBRTRFUUFKL0lBWlFSUVJBSUFBb0Fvd0VLQUlBUVFSR0JFQWdBRUU0YWlJRVFaSXBFQ0VnQkVINTJoRVFRZ3NnQUVFNGFpQUJJQUpCbHlsQmZ4RGpBU0FES1FJRUlRVUxJQVZDZ0lDQWdJQUlnMUJGQ3dSK0lBQkJPR29nQVNBQ1FaZ3BRWDhRNHdFZ0F5a0NCQVVnQlF0Q2dJQ0FnSUFRZzFBTkFTQUFRVGhxSUFFZ0FrR1pLVUYvRU9NQkR3c0NmeUFHVUVVRVFDQUFLQUtNQkNnQ0FFRUVSZ1JBSUFCQk9Hb2lBa0dTS1JBaElBSkIrZG9SRUVJTElBQkJPR29nQVVHWEtVRi9FSGdnQXlrQ0JDRUZDeUFGUW9DQWdJQ0FDSU5RUlFzRWZpQUFRVGhxSUFGQm1DbEJmeEI0SUFNcEFnUUZJQVVMUW9DQWdJQ0FFSU5RRFFBZ0FFRTRhaUFCUVprcFFYOFFlQXNMVHdFQmZnSi9RUkFnQVNrQ0JDSUNRb0NBZ0lBQmcwSUFVZzBBR2tFUElBSkNnSUNBZ0lBZ2cwSUFVZzBBR2tILy8vLy9CeUFDUW9DQWdJQ0F3QUNEVUEwQUdpQUFRVGhxUVNNUUlVRVJDd3RMQUFKL1FmLy8vLzhISUFFdEFBZEJJSEVOQUJwQkRTQUJFUFlJRFFBYVFRNGdBUzBBQjBIQUFIRU5BQnBCLy8vLy93Y2dBUkNUQmtVTkFCb2dBRUU0YWtHVzNoRVFRa0dISndzTFJRRUJmeU1BUVNCcklnSWtBQ0FDSUFFUXpBRTJBaEFRNXdFZ0FrRVlhaUFBSUFFZ0FrRVFhaUFDUVFocUVNVU1JQUpCR0dvUVJDRUFJQUpCSUdva0FDQUFRUVJxQytnREFnVi9BWDBqQUVFZ2F5SUZKQUFnQVJBaklBSVE2Z1loQ0NBQkVEd2hCaUFGUVFBNkFCOENRQUpBSUFaRkRRQWdBU0FJSUFZUU5DSUpFQkVvQWdBaUIwVU5BQU5BSUFjb0FnQWlCMFVOQVNBSUlBY29BZ1JIQkVBZ0J5Z0NCQ0FHRURRZ0NVY05BZ3NnQVJCRElBZEJDR29nQWhDTEEwVU5BQXNNQVFzZ0JVRVFhaUFCSUFoQjROc1JJQU1nQkJDYUJpQUJFQ01vQWdBaEFpQUJFRU1oQXdKQUlBWUVRQ0FES2dJQUlBYXpsQ0FDUVFGcXMxMUJBWE1OQVFzZ0JTQUdFTG9CUVFGeklBWkJBWFJ5TmdJTUlBVUNmeUFCRUNNb0FnQkJBV3F6SUFFUVF5b0NBSldOSWdwREFBQ0FUMTBnQ2tNQUFBQUFZSEVFUUNBS3FRd0JDMEVBQ3pZQ0NDQUJJQVZCREdvZ0JVRUlhaEJTS0FJQUVOTUVJQWdnQVJBOElnWVFOQ0VKQ3dKQUlBRWdDUkFSS0FJQUlnSkZCRUFnQlNnQ0VDQUJRUWhxSWdJb0FnQTJBZ0FnQWlBRktBSVFOZ0lBSUFFZ0NSQVJJQUkyQWdBZ0JTZ0NFQ2dDQUVVTkFTQUZLQUlRSVFJZ0FTQUZLQUlRS0FJQUtBSUVJQVlRTkJBUklBSTJBZ0FNQVFzZ0JTZ0NFQ0FDS0FJQU5nSUFJQUlnQlNnQ0VEWUNBQXNnQlVFUWFoQmZJUWNnQVJBaklnRWdBU2dDQUVFQmFqWUNBQ0FGUVFFNkFCOGdCVUVRYWhDekFnc2dBQ0FGUVJCcUlBY1FNU0FGUVI5cUVLSUJJQVZCSUdva0FBdUNBUUVDZnlNQVFTQnJJZ1VrQUNBQklBVkJIR29nQWhEQkZTSUdLQUlBSVFJZ0JVRUFPZ0FiSUFKRkJFQWdCVUVJYWlBQlFlRGJFU0FESUFRUXdCVWdBU0FGS0FJY0lBWWdCU2dDQ0JEdUFpQUZRUWhxRUY4aEFpQUZRUUU2QUJzZ0JVRUlhaEN6QWdzZ0FDQUZRUWhxSUFJUU1TQUZRUnRxRUtJQklBVkJJR29rQUFzckFRRi9Jd0JCRUdzaUFpUUFJQUlnQVJCZk5nSU1JQUFnQWtFTWFpQUJFS0VISUFKQkVHb2tBQ0FBQ3kwQkFYOGdBQ0FBS0FJRUVNUVZJQUFvQWdBRVFDQUFLQUlRR2lBQUtBSUFJUUVnQUJDSUF4b2dBUkFxQ3d0UUFRRi9JQUFReFFRZ0FCQWJJQUFvQWdBZ0FDZ0NCQ0FCUVFScUlnSVF4UlVnQUNBQ0VDNGdBRUVFYWlBQlFRaHFFQzRnQUJBYklBRVFJeEF1SUFFZ0FTZ0NCRFlDQUNBQUlBQVFGaEN0QlF0WEFRSi9Jd0JCSUdzaUF5UUFJQUFRR3lJQ0lBTkJDR29nQUNBQUVCWkJBV29RMndRZ0FCQVdJQUlROGdJaUFpZ0NDQ0FCRVBrQklBSWdBaWdDQ0VFRWFqWUNDQ0FBSUFJUWlna2dBaENSQXlBRFFTQnFKQUFMWkFFQmZ5TUFRUkJySWdJa0FDQUFLQUlFSUFBUXRRaEdCRUFnQUNBQUlBQW9BZ1JCQVdvUXpoVVF6UlVMSUFBZ0FDZ0NCRUVCYWpZQ0JDQUJMUUFBSVFFZ0FrRUlhaUFBSUFBb0FnUkJmMm9RNFEwZ0FrRUlhaUFCRUlrSElBSkJFR29rQUFzdkFRRi9Jd0JCRUdzaUFTUUFJQUJDQURjQ0FDQUJRUUEyQWd3Z0FFRUlhaUFCUVF4cUVLMENJQUZCRUdva0FBdVFBZ0VGZnlNQVFUQnJJZ1FrQUNBRUlBRTJBaWdnQUNnQ0FDRUJJQVFnQUJCQU5nSUlJQUVnQkVFb2FpQUVRUWhxRUp3SFFRTjBhaUVCQWtBZ0FpQURFTElPSWdWQkFVZ05BQ0FGSUFBUUd5Z0NBQ0FBS0FJRUlnZHJRUU4xVEFSQUlBUWdBellDQ0NBRklBY2dBV3NpQ0VFRGRTSUdTZ1JBSUFRZ0FqWUNDQ0FFUVFocUlBWVFzUTRnQUNBRUtBSUlJQU1nQlNBR2F4Q0hGU0FJUVFGSURRSUxJQUFnQVNBSElBRWdCVUVEZEdvUWhoVWdBaUFFS0FJSUlBRVFzQTRNQVFzZ0FCQWJJUVlnQkVFSWFpQUFJQUFRbWdFZ0JXb1FudzRnQVNBQUtBSUFhMEVEZFNBR0VKNE9JZ1VnQWlBREVJVVZJQUFnQlNBQkVJUVZJUUVnQlJDZERnc2dBUkJoR2lBRVFUQnFKQUFMakFjQkRIOGpBRUZBYWlJR0pBQWdBU0FCS0FJQUtBTEFBUkVBQUNFSUFuOGdBUkN5REVVRVFFRUFJQUVRcVFoRkRRRWFDeUFJUVFBUUVTZ0NBQ0lFSUFRb0FnQW9BZ3dSQUFBaUJDQUVLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NJQkVBQUNnQ0FDSUVRWUQrRDNGQmdJZ01SaUVKUVFBZ0JFR0FnQWh4UlEwQUdpQUlRUUVRRVNnQ0FDSUZJQVVvQWdBb0Fnd1JBQUFpQlNBRktBSUFLQUo0RVFBQUlnVWdCU2dDQUNnQ0hCRUFBRUVEUmdzaEJTQUlFQlpCQVU0RVFDQUpRUUZ6SVFzZ0JFR0FnQkJ4SVE4Z0JVRUJjeUVNSUFVZ0NYSWhEU0FFUVlDQUNIRWhEaUFBUVRocUlRb2dCRUVJZGtIL0FYRWhDVUVBSVFRRFFDQUtFSE1nQ0NBRUVCRW9BZ0FpQnlBQUlBY29BZ0FvQWdnUkFRQUNRQUpBQWtBZ0FTZ0NhRUd6ZTJvaUIwSEpBRXNOQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBZEJDbXNPUUJNVEFBMFRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEFRTURCQVVHQmdjSkNnb1RBZ1lIQ0FzTURCTVREZzhQRUJFU0N5QUVRUU5HSUFSQkFrWWdEeHNORXd3U0N5QU5JQVJCQTBaeElBUkJBa1lnREhFZ0MzRnlEUklNRVFzZ0RTQUVRUVJHY1NBRVFRTkdJQXh4SUF0eGNnMFJEQkFMSUFSQkJFWWdCRUVEUmlBRkd3MFFEQThMSUFSQkEwWWdDVUVGUjNFZ0NVRUZSaUFFUVFKR2NYSU5Ed3dPQ3lBRVFRUkdJQWxCQlVkeElBbEJCVVlnQkVFRFJuRnlEUTRNRFFzZ0JFRUZSaUFFUVFSR0lBVWJEUTBNREFzZ0JFRUdSaUFFUVFWR0lBVWJEUXdNQ3dzZ0JFRUhSaUFFUVFaR0lBVWJEUXNNQ2dzZ0JFRURSaUFFUVFKR0lBNGJEUW9NQ1FzZ0JFRUVSaUFFUVFOR0lBNGJEUWtNQ0FzZ0JFRURSZzBJREFjTElBUkJCRVlOQnd3R0N5QUVRUU5HRFFZTUJRc2dCRUVFUmcwRkRBUUxJQVJCQlVZTkJBd0RDeUFFUVFaR0RRTU1BZ3NnQkVFSFJ3MEJEQUlMSUFSRkRRRUxJQVlnQUNBSUlBUVFFU2dDQUNJSElBY29BZ0FvQWd3UkFBQWlCeUFIS0FJQUtBSjRFUUFBRUtFQk5nSUlJQUlnQmtFSWFoQkJEQUVMSUFZZ0NoRHdCRFlDQ0NBQ0lBWkJDR29RUVNBR1FRaHFJQW9RdmdJZ0F5QUdMUUE0T2dBQUlBWkJDR29RdUFFZ0JrRUlhaUFJSUFRUUVTZ0NBQ0lISUFjb0FnQW9BZ3dSQUFBaUJ5QUhLQUlBS0FKNEVRQUFFT1FCSUFZZ0F5QUdRUWhxRVBvREN5QUVRUUZxSWdRZ0NCQVdTQTBBQ3dzZ0JrRkFheVFBQ3g0QUlBRWdBU2dDQUNnQ3lBRVJBQUFnQUNnQ2pBUVFReEFURUljQlJRdHZBUU4vSXdCQkVHc2lCaVFBSUFZUU1DRUVJQUlnQWlnQ0FDZ0NVQkVBQUNJRklBVW9BZ0FvQXNRQkVRQUFJZ1VnQlNnQ0FDZ0NHQkVBQUNBRUVOME1JQUJCT0dvZ0FTQUFJQUlnQWlnQ0FDZ0NlQkVBQUJDL0FTQURJQVFRMHdZaEFDQUVFRFlnQmtFUWFpUUFJQUFMcXd3QkJuOGpBRUVRYXlJSUpBQWdDQ0FFTmdJTUlBVVFnd01oQnlBRkVKSUVJUXRCZnlFS0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCbndWTUJFQWdBVUhKZm1vaURFSDhBazBOQ2lBQlFYcHFJZ1ZCQ0VzTkQwR29BU0VCSUFWQkFXc09DQTBOQ1E4UER3OElBUXNnQVVIZ2Vtb2lCVUVGU3dSQUlBRkJzd1ZIRFE5Qm5nRWhBUXdOQ3lBRlFRRnJEZ1VDQXdRRkJnRUxRZjRBSVFFZ0MwVU5DMEgvQUNFQklBQkJPR29nQXhDcUNFVU5DeUFBUWY4QUlBSWdBeUFFRUxFTUlRa01EUXRCekFFaEFRd0tDMEhOQVNFQkRBa0xRY2tBSVFjTUJndEJ5d0JCeWdBZ0J4c2hCd3dGQ3lBQVFUaHFJZ0ZCMENzUUlTQUJRYW5tRVJCQ1FkRXJJUUVNQmdzZ0FFRTRhaUlCUWRBckVDRWdBVUdwNWhFUVFrSFNLeUVCREFVTFFkTUFJUUVNQkF0QnlBRWhBUXdEQzBFaElRY0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUF4QkFXc08vQUkvUGowOE9qczVNelExTnpnMlJUQXZMaTBzS3hNU0tpa0dCQ2duUlVWRlJVVkZSU1lsUlVWRkFRRUJBUUVCQVFFQkFRRUJKQ01pSVI0ZEhCc2dIeG9aQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFeVJVVkZNVVZGUlVWRlJSZ1hGaEVRRHc0TkRBdEZSVVZGUlVFQVFrVkZSVVZGUlVWRlJVVkZSVVVKUlFrSkNRbEZSVVZGUlVWRkNBZ0lSUWdJQ0VVSUNBZ0lDRVZGUlVVSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBaEZSVVZGUlVWRlJRZ0lDQUpGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRkNRa0pDUWtKQ1FrSkNRa0pDUWtKQ1FrSlJVVkZCd1VEUlVWRlJVVkZSVVZGUlVVS0NncEZSVVZGUlVWRlJVVVZGRVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGQVVBTFFTSWhCd3hBQzBIOEFDRUJERUVMUWJBcElRRU1RQXNnQUVIajVoRVEvQUloQ2d0QkFpRUhERHdMSUFCQjQrWVJFUHdDSVFvTFFRRWhCd3c2Q3lBQVFjM21FUkQ4QWlFS1FRUWhCd3c1Q3lBSUVEQWlBaUFJUVF4cUVFY2dBQ0FCSUFNZ0FpQUZFS1VJSVFrZ0FoQTJERHdMSUFnUU1DSUNJQWhCREdvUVJ5QUFJQUVnQXlBQ0lBVVFzQXdoQ1NBQ0VEWU1Pd3NnQ0JBd0lnSWdDRUVNYWhCSElBQWdBU0FESUFJZ0JTQUdFTG9JSVFrZ0FoQTJERG9MUWN3QUlRY2dCVUVEUncwMUlBQkJPR3BCaStZUkVFSU1OUXRCMXdFaEFRdzJDMEhXQVNFQkREVUxRZFVCSVFFTU5BdEIxQUVoQVF3ekMwSFRBU0VCRERJTFFkSUJJUUVNTVF0QkJrRUhJQXNiSVFjTUxndEJCRUVGSUFzYklRY01MUXRCbXdFaEFRd3VDMEdhQVNFQkRDMExRZEVCSVFFTUxBdEIwQUVoQVF3ckMwSFBBU0VCRENvTFFjRUFJUWNNSnd0Qk95RUhEQ1lMUWNBQUlRY01KUXRCTnlFSERDUUxRVDhoQnd3akMwRTJJUWNNSWd0QlBpRUhEQ0VMUVRvaEJ3d2dDMEU5SVFjTUh3dEJPU0VIREI0TFFUd2hCd3dkQzBFNElRY01IQXRCblFFaEFRd2RDMEdjQVNFQkRCd0xRUW9oQnd3WkMwRUpJUWNNR0F0QkF5RUhEQmNMUVFnaEJ3d1dDMEVnSVFjTUZRdEJIeUVIREJRTFFSNGhCd3dUQzBFZElRY01FZ3RCSENFSERCRUxRUnNoQnd3UUMwSEZBQ0VIREE4TFFjSUFJUWNNRGd0QkV5RUhEQTBMUVJRaEJ3d01DMEVWSVFjTUN3dEJHQ0VIREFvTFFSWWhCd3dKQzBFWElRY01DQXRCRWlFSERBY0xRUkFoQnd3R0MwRVJJUWNNQlF0QkR5RUhEQVFMUVE0aEJ3d0RDMEVOSVFjTUFndEJEQ0VIREFFTFFRc2hCd3NnQ0JBd0lnUWdDRUVNYWhCSElBQkJPR29nQXlBS1FYOU1CSDhnQUNnQ2xBUUZJQW9MSUFjZ0JCQ1NDQ0VCSUFRUU5nd0NDMEhVQUNFQkN5QUFRVGhxSUFFZ0F5QUVFUGdCSVFFTElBSWdBRUU0YWlJQUlBRVErUVFnQWlBQUlBRVEvd0lnQUNBQklBSW9BZ0FRaGdFaENRc2dDRUVRYWlRQUlBa0x5U1lCRDM4akFFSFFBbXNpQWlRQUFrQWdBUkNwQ0VVRVFDQUJFTElNUlEwQkN5QUFRVGhxSWdRZ0FTQUJLQUlBS0FJQUVRQUFLQUlJSUFFZ0FTZ0NBQ2dDQUJFQUFCRGdBaERkQWlBQ0FuOGdBU0FCS0FJQUtBSVlFUUFBQkVBZ0FTQUJLQUlBS0FJWUVRQUFJZ01nQXlnQ0FDZ0N2QUVSQUFCQkFCQVJLQUlBSWdNZ0F5Z0NBQ2dDREJFQUFDSURJQU1vQWdBb0FuZ1JBQUFNQVFzZ0FTQUJLQUlBS0FJY0VRQUFJZ01nQXlnQ0FDZ0N2QUVSQUFBaUF5QURLQUlBS0FJTUVRQUFJZ01nQXlnQ0FDZ0NlQkVBQUFzaUNDQUlLQUlBS0FJZ0VRQUFLQUlBSWdNMkFzZ0NBa0FnQTBHQWdBaHhSUTBBSUFFZ0FTZ0NBQ2dDR0JFQUFFVU5BQ0FCSUFFb0FnQW9BaGdSQUFBaUF5QURLQUlBS0FLOEFSRUFBRUVCRUJFb0FnQWlBeUFES0FJQUtBSU1FUUFBSWdNZ0F5Z0NBQ2dDZUJFQUFDSURJQU1vQWdBb0Fod1JBQUJCQTBZaENRc2dBaUFBTmdMQUFpQUNJQUpCeUFKcU5nTEVBaUFDUWJnQ2FoQ0JCU0VLSUFKQnFBSnFFREFoQndKQUlBRWdBU2dDQUNnQ0dCRUFBQVJBSUFBZ0FTQUJLQUlBS0FJWUVRQUFJQWNnQ2hEWURBd0JDeUFBSUFFZ0FTZ0NBQ2dDSEJFQUFDQUhFSllWQ3lBQkVMOEVFSU1GSVFzZ0FrSG9BV3BCQUVIQUFCRGRBUm9nQWlBSFFRQVFFU2dDQURZQzZBRWdBaUFDS0FMSUFpSUROZ0xRQVNBQ0lBTTJBaEFnQVNBQ1FSQnFJQUpCMkFGcUVKUVZJQUVnQVNnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQWh3UkFBQWhBd0pBQWtBQ1FBSkFBa0FnQWkwQTJBRkZEUUFDUUNBQktBSm9RZDRFUmcwQUlBUWdBaWdDNkFFUXFBaEZEUUFnQWlBRVFlUUFJQVFnQWlnQzZBRVE5d01nQWlnQzZBRVErQUUyQXVnQkN5QUJLQUpvSWdWQm8zdHFJZ1pCQTAwTkFTQUZRYmw3YWlJR1FRRkxCRUFnQlVHSUJVY05BU0FFUWJ3Q0lBUVErZ0lnQjBFQUVCRW9BZ0FRK0FFaEF3d0ZDeUFHUVFGckRRTU1BZ3NnQVNBQktBSUFLQUo0RVFBQUlnTWdBeWdDQUNnQ01CRUFBQ0VESUFFb0FtZ2hCU0FDUWZnQWFpQUJJQUVvQWdBb0FuZ1JBQUFpQmlBR0tBSUFLQUljRVFBQVFRQkJCQ0FESUFWQjVnUkdHeUlPUVFCQkFFRUFFRVVoRHlBQ0lBQTJBblFnQWlBUE5nSndBa0FnQVJDcENBUkFJQUpCNEFCcUVEQWhCU0FDSUFjUVFEWUNXQ0FDSUFKQjJBQnFFTTRCTmdJNElBVWdBa0hRQUdwQkFTQUNLQUk0S0FJQUVIVVFoQUVDUUNBQ0xRRGdBUVJBSUFJZ0JFRUFRUUFRdlFJMkFrZ2dBa0U0YWhBd0lnRWdBa0hJQUdvUVJ5QUJJQUpCeUFCcUVFY2dCU0FDUVRCcVFRRWdCQ0FFSUFSQklCQ2lBa0VDRUxFQklBRkJBQkQxQXhCMUVJUUJJQUpCS0dwQkFFRUFFSFVpQUNBQUtBSUVJQUpCd0FKcUVQY0VjallDQkNBQ1FjZ0NhaENLQVNFR0lBQW9BZ1FoQXdKQUFrQWdCZ1JBSUFBZ0EwSEFBSEkyQWdRTUFRc2dBMFVOQVFzZ0JTQUFFSVFCSUFKQnlBSnFFSW9CUlEwQUlBSWdBa0hZQUdvUXpnRTJBaGdnQlNBQ1FTQnFRUUVnQWlnQ0dDZ0NBQkIxRUlRQkN5QUVJQVJCNGdBZ0FrSHdBR29ReGdNZ0JSRENBeUlESUFzUWhnRWFJQUVRTmd3QkN5QUNJQUpCMkFCcUVNNEJOZ0k0SUFVZ0FrRXdha0VCSUFJb0FqZ29BZ0FRZFJDRUFRSkFJQUVvQW1oQnlRUkhCRUFnQVNnQ2FFSExCRWNOQVF0QkFDRURJQUpCeUFKcUVJb0JCRUJCQUVIQUFCQklJUU1MSUFJdEFOb0JCRUFnQkVIRjVCRVFRaUFFUVpjbkVDRWdBMEVDRUVnaEF3c2dBa0U0YWlBSUVPUUJBa0FnQXlBQUlBSkJPR29RcHdnUVNFSC9mWEVnQWtIQUFtb1E5d1FRU0NJRFJRMEFJQVVnQWtFNGFrRUFJQU1RZFJDRUFTQURRY0FBY1FSQUlBSWdBa0hZQUdvUXpnRTJBaWdnQlNBQ1FUaHFRUUVnQWlnQ0tDZ0NBQkIxRUlRQkN5QURRUUp4QkVBZ0FpQUNRZGdBYWhET0FUWUNLQ0FGSUFKQk9HcEJBU0FDS0FJb0tBSUFFSFVRaEFFTElBTkJnQVJ4UlEwQUlBSkJLR29nQ0JEa0FTQUZJQUpCT0dwQkFTQUVJQUFnQWtFb2FoRC9CRUVBRUhRUWRSQ0VBUXNnQkNBRUlBVW9BZ0FvQWdRUTl3TVFwZ2hGQkVBZ0JFRTNFQ0VMSUFJZ0JFSGlBQ0FDUWZBQWFoREdBeUFGRU1JRE5nSW9JQVFnQWtFNGFrRUJJQUpCS0dvUXhRTWlCa0VBRUJFb0FnQWdDeENHQVJvZ0FTQUJLQUlBS0FKNEVRQUFJZ01nQXlnQ0FDZ0NNQkVBQUNBT1J3UkFJQVFnQ3lBR0lBQWdBU0FCS0FJQUtBSjRFUUFBRUw4QkVKRUlJUUFnQmtFQUVCRWdBRFlDQUFzZ0JrRUFFQkVvQWdBaEF5QUdFRFlNQVFzQ1FDQUJLQUpvUWNvRVJ3UkFJQUVvQW1oQnpBUkhEUUVMQWtBQ1FDQUNRY2dDYWhDS0FVVUVRQ0FDTFFEYUFVVU5BUXNnQWlBQ1FkZ0Fha0VCRU1FRk5nSW9JQVVnQWtFNGFrRUJJQUlvQWlnb0FnQVFkUkNFQVF3QkN5QUZJQUpCT0dwQkFTQUNLQUpZS0FJQUVIVVFoQUVMUVFBaEFTQUNRY2dDYWhDS0FRUkFRUUJCd0FBUVNDRUJDeUFDTFFEYUFRUkFJQVJCeGVRUkVFSWdCRUdYSnhBaElBRkJBaEJJSVFFTElBSkJPR29nQ0JEa0FRSkFJQUVnQUNBQ1FUaHFFS2NJRUVoQi8zdHhJQUpCd0FKcUVQY0VFRWdpQVVVTkFDQUZJQUpCT0dwQkFDQUJFSFVRaEFFZ0FVSEFBSEVFUUNBQ0lBSkIyQUJxRU00Qk5nSW9JQVVnQWtFNGFrRUJJQUlvQWlnb0FnQVFkUkNFQVFzZ0FVRUNjUVJBSUFJZ0FrSFlBR29RemdFMkFpZ2dCU0FDUVRocVFRRWdBaWdDS0NnQ0FCQjFFSVFCQ3lBQlFZQUNjVVVOQUNBQ1FTaHFJQWdRNUFFZ0JTQUNRVGhxUVFFZ0JDQUFJQUpCS0dvUS93UkJBQkIwRUhVUWhBRUxJQVJCNHdBZ0JSQ1BERUVBSVFNZ0JDQUVJQVVvQWdBb0FnUVE5d01RcGdnTkFTQUVRVGdRSVF3QkN3SkFJQUVvQW1oQjJRUkhCRUFnQVNnQ2FFSGFCRWNOQVFzZ0JFRXBFQ0VnQkNBRUlBVW9BZ0FvQWdRUTl3TVFwZ2hGQkVBZ0JFRTNFQ0VMUVFBaEFTQUNRY2dDYWhDS0FRUkFRUUJCd0FBUVNDRUJDeUFDTFFEYUFRUkFJQVJCeGVRUkVFSWdCRUdYSnhBaElBRkJBaEJJSVFFTElBSkJPR29nQ0JEa0FRSkFJQUVnQUNBQ1FUaHFFS2NJRUVoQi8zMXhJQUpCd0FKcUVQY0VFRWdpQVVVTkFDQUZJQUpCT0dwQkFDQUJFSFVRaEFFZ0FVSEFBSEVFUUNBQ0lBSkIyQUJxRU00Qk5nSW9JQVVnQWtFNGFrRUJJQUlvQWlnb0FnQVFkUkNFQVFzZ0FVRUNjUVJBSUFJZ0FrSFlBR29RemdFMkFpZ2dCU0FDUVRocVFRRWdBaWdDS0NnQ0FCQjFFSVFCQ3lBQlFZQUVjVVVOQUNBQ1FTaHFJQWdRNUFFZ0JTQUNRVGhxUVFFZ0JDQUFJQUpCS0dvUS93UkJBQkIwRUhVUWhBRUxJQUlvQWxnb0FnQWhBQ0FFSUFRZ0JFSEFBaUFFSUFKQjhBQnFFTVlESWdFZ0JDQUFFTm9HSWdNUTJ3WWdCUkRDQXlJR0lBTkJBUkN2QVNBQVFRQkIvLy8vL3dkQkFCRFBBaUFFSUFZZ0FVRUFFSzhCSVFNTUFRc2dCU0FDUVNocVFRRUNmeUFDUWNnQ2FoQ0tBUVJBSUFJZ0FrSFlBR29RemdFMkFqZ2dBaWdDT0NnQ0FBd0JDeUFFUVFCQkFCQjBDeEIxRUlRQklBSWdCRUU4SUFSQkN3Si9JQUVvQW1oQjFnUkdCRUFnQkNBRlFRSVFMQ2dDQkJCaURBRUxJQUpCOEFCcUVNWURDeERiQlNBRkVNSUROZ0lnSUFKQk9Hb1FNQ0lHSUFKQklHb1FSeUFDSUFjUU1qWUNTQ0FDUWRnQWFpQUNRY2dBYWhBZUJFQURRQ0FHSUFJb0FsZ1FSeUFDUWRnQWFoQm1HaUFDSUFjUU1qWUNTQ0FDUWRnQWFpQUNRY2dBYWhBZURRQUxDeUFBSUFFb0FtZ2dBa0h3QUdvUXhnTWdCaUFCSUFFb0FnQW9Bb0FCRVFBQUlBb1F1Z2doQXlBR0VEWUxJQVVRcmdNTUFRc2dBaTBBNGdFRVFDQUNJQWNRUURZQ1VDQUNRZUFBYWhBd0lRQWdCQ0FDS0FMb0FSQ29DQVJBSUFJZ0JFSGtBQ0FFSUFJb0F1Z0JFUGNESUFJb0F1Z0JFUGdCTmdMb0FRc2dBQ0FDUWVnQmFoQkhJQUpCMEFCcUVHWWFJQUpCeUFKcUVLUUhCRUFnQWlBRVFRQkJBQkM5QWpZQ01DQUNRVGhxRURBaUF5QUNRVEJxRUVjZ0F5QUNRVEJxRUVjZ0FpQUVJQVFnQkVFZ0VLSUNRUUlRc1FFZ0EwRUFFUFVETmdJb0lBQWdBa0VvYWhCQklBTVFOZ3NnQWlBSEVESTJBamdnQWtIUUFHb2dBa0U0YWhBZUJFQURRQ0FBSUFJb0FsQVFSeUFDUWRBQWFoQm1HaUFDSUFjUU1qWUNPQ0FDUWRBQWFpQUNRVGhxRUI0TkFBc0xRWk1uSVFNZ0FTZ0NhRUg2QkVjRVFFR1VKMEVBSUFFb0FtaEIrd1JHR3lFREN5QUVRZW5rRVJCQ0lBUkJraWNRSVNBRUlBTWdBa0h3QUdvUXhnTWdBQkR3QXlFRElBQVFOZ3dCQ3lBQktBSm9RWU43YWtFVFNTRUtJQUVvQW1oQjducHFRUVZKSVEwQ2YwRUFJQUl0QU1rQ1FRaDBRWUFJUncwQUdrRUFJQUpCeUFKcUVJTUpSUTBBR2lBQ1FjZ0NhaENDQ1FzaEF3SkFJQUl0QU5vQkRRQWdBaTBBM3dFTkFDQURJQUl0QU5zQmNnMEFJQUl0QU53QklRVWdBaTBBM1FFaEJpQUNMUURlQVNFTUlBSXRBT0VCSVJBZ0J4QVdJQW9nRUdwQkEwRUNJQXdiSUFscVFRRWdCaUFGRzBIL0FYRnFhaUlGUVFOcUlBVWdEUnRLSVF3TEFrQWdBaTBBMndGRkRRQWdCQ0FDS0FMb0FSQ29DRVVOQUNBQ0lBUkI1QUFnQkNBQ0tBTG9BUkQzQXlBQ0tBTG9BUkQ0QVRZQzZBRUxBa0FnQWkwQTNnRkZEUUFnQUNnQ2pBUVF3d2doQlNBQ0xRRGFBU0FNUVFGelJYSkZCRUFnQWlBRklBSkI0QUJxUVlibEVSQnBJZ1lRZ3dRMkFqZ2dBaUFGRUlFQk5nSlFJQUpCT0dvZ0FrSFFBR29RSGlFRklBWVFJQm9nQlVVTkFRc2dCRUdsNVJFUVFpQUVRWkVuRUNFTFFRRWhCU0FDSUFkQkFSQVJLQUlBTmdMc0FRSkFJQU1nQ1hKQkFVWUVRQ0FDSUFkQkFoQVJLQUlBTmdMNEFRd0JDd0pBSUFJb0FzZ0NRWUNBQ0hFaUEwVU5BQ0FDTFFEZUFVVU5BQ0FDSUFkQkFoQVJLQUlBTmdMNEFRd0JDMEVBSVFVZ0EwVU5BQ0FDUWVBQWFoQXdJUU1nQWlBQ0xRRFpBUVIvUVFJRklBUWdBaWdDN0FFUXlBRkJmMm9MTmdJNElBTWdBa0U0YWhCQklBSWdCQ0FDS0FMc0FTSUdJQVFnQkNBR0VHSVF1d0lnQXhENEFqWUMrQUVnQXhBMkN3SkFJQUl0QU5vQkJFQWdBaUFISUFWQkFuSVFFU2dDQURZQzlBRWdCVUVCYWlFRlFRQWhDUXdCQzBFQUlRa2dBQ2dDakFRb0FnQkJCRVlOQUNBQUtBS01CQ2dDQUVFRlJnUkFJQUFvQW93RUtBTFVCQTBCQzBFQklRa0xJQUpCeUFKcUVJb0JCRUFnQWlBSElBVkJBbW9RRVNnQ0FEWUNqQUlnQlVFQmFpRUZDd0pBSUFJdEFOOEJSUVJBSUFVaEF3d0JDeUFDSUFjZ0JVRUNhaUlERUJFb0FnQTJBb1FDSUFJZ0J5QUZRUU5xRUJFb0FnQTJBb2dDQ3dKQUlBSXRBTndCQkVBZ0FpQUhJQU5CQW1vUUVTZ0NBRFlDL0FFZ0EwRUJhaUVEREFFTElBSXRBTjBCUlEwQUlBSWdCeUFEUVFKcUVCRW9BZ0EyQW9BQ0lBTkJBV29oQXdzZ0FpMEE0UUVFUUNBQ0lBY2dBMEVDYWhBUktBSUFOZ0tZQWlBRFFRRnFJUU1MSUFvRVFDQUNJQWNnQTBFQ2FoQVJLQUlBTmdLVUFpQURRUUZxSVFNTEFrQWdBaTBBM2dGRkRRQWdBaTBBeWdKQkFuRU5BQ0FEUVFKcUlnVWdCeEFXU0FSQUlBSWdCeUFGRUJFb0FnQTJBcEFDSUFOQkFXb2hBd3dCQ3lBQ0lBUkJBRUVBRUwwQ05nS1FBZ3RCQUNFRkFrQWdEVVVFUUNBRElRWU1BUXNnQWlBSElBTkJBbW9RRVNnQ0FEWUNuQUlnQWlBSElBTkJBMm9pQmhBUktBSUFOZ0tnQWlBSElBTkJCR29RRVNnQ0FDRUZDeUFNQkVBZ0FpQUhJQVpCQW1vUUVTZ0NBRFlDOEFFTElBMEVRQ0FFUWNYbEVSQkNJQVJCb2lrUUlTQUVJQVFnQlJCaUVMQUJJUU1nQWtIZ0FHb1FNQ0VBSUFJZ0FrSHdBR29ReGdNMkFqZ2dBQ0FDUVRocUVFRkJBQ0VCQTBBZ0FpQUVJQU1nQVJDZUF6WUNPQ0FBSUFKQk9Hb1FRU0FCUVFGcUlnRkJCVWNOQUFzZ0JDQUxJQVFnQUVIajVSRVFtZ2dpQmlBS0lBSXRBTnNCSUFJdEFOa0JJQUl0QU40QklBa2dBa0hvQVdvZ0FrSEFBbW9ROXdRUWpBd2hBMEVBSVFFRFFDQUVFSE1nQkNBRkVJQURJQUpCT0dvUWdRVVFyZ2dnQkNBQlFRQVF2UUloQ0NBQ0lBSW9BamdpQ1RZQ0ZDQUNJQWsyQWd3Z0JDQUlJQUpCREdwQkFCQ0NCU0FFSUFRZ0F5QUVJQVlnQVVFQmFpSUJFSjRESUFFUXJ3RkJBRUgvLy8vL0IwRUFFSXNJSUFGQkJVY05BQXNnQkNBRElBSkI4QUJxRU1ZRFFRQVFyd0VoQXlBQUVEWU1BUXNDUUNBQ0xRRFpBVVVOQUNBRUlBSW9BdXdCRU1nQklRTWdBaTBBeVFKQmYyb2lCa0VFU3cwQVFRRWhCUUpBQWtBZ0JrRUJhdzRFQUFJQ0FBRUxRUUloQlFzZ0JTQURRWDlxSWdOR0RRQWdBaUFFSUFRZ0FpZ0M3QUVpQmlBRUlBUWdCaEJpRUxzQ0lBTVFyd0VnQWlnQzdBRWlBeUFFSUFNUVlpQUZFSklNTmdMc0FRc2dDQ0FJS0FJQUtBSXNFUUFBTFFBS1FRaHhCRUFnQWtFQk9nQ2tBZ3NnQ0NBSUtBSUFLQUlzRVFBQUxRQUpRY0FBY1FSQUlBSkJBVG9BcFFJTElBSWdCQ0FMSUFKQjhBQnFFTVlESUFvZ0FpMEEyd0VnQWkwQTJRRWdBaTBBM2dFZ0NTQUNRZWdCYWlBQ1FjQUNhaEQzQkJDTUREWUNPQ0FDUWVBQWFrRUJJQUpCT0dvUXhRTWhCU0FCSUFFb0FnQW9BbmdSQUFBaUF5QURLQUlBS0FJd0VRQUFJQTVIQkVBZ0JDQUxJQVVnQUNBQklBRW9BZ0FvQW5nUkFBQVF2d0VRa1FnaEFDQUZRUUFRRVNBQU5nSUFDeUFGUVFBUUVTZ0NBQ0VESUFVUU5nc2dEeEExR2d3REN3SkFBa0FnQmtFQmF3NERBUUFDQXdzZ0JFSHFBQ0FDUWVnQmFpQURRUWxHRU5nRklRTU1Bd3NnQWlBSFFRRVFFU2dDQURZQzdBRWdCRUhwQUNBQ1FlZ0JhaUFEUVFsR0VOZ0ZJUU1NQWdzZ0JFSHJBQ0FDUWVnQmFpQURRUWxHRU5nRklRTU1BUXNnQnhBV1FRSlBCRUFnQWlBSFFRRVFFU2dDQURZQzlBRWdCRUhuQUNBQ1FlZ0JhaUFEUVFsR0VOZ0ZJUU1NQVFzZ0JFSG9BQ0FDUWVnQmFpQURRUWxHRU5nRklRTUxJQWNRTmdzZ0FrSFFBbW9rQUNBREMyNEJBMzhqQUVFUWF5SUNKQUFnQUNBQUtBSUFLQUxBQVJFQUFDSURFQlpCQVU0RVFFRUFJUUFEUUNBQ0lBTWdBQkFSS0FJQUlnUWdCQ2dDQUNnQ0ZCRUFBQkJMUVFBUUR5Z0NBRFlDRENBQklBSkJER29RUVNBQVFRRnFJZ0FnQXhBV1NBMEFDd3NnQWtFUWFpUUFDeW9CQVg4Z0FDZ0NQQ0lBSUFFb0Fqd2lBbkpGSVFFZ0FFVWdBa1Z5Qkg4Z0FRVWdBQ0FDRUxFTEN3c2ZBQ0FBUVh4cUlnQkJCazBFUUNBQVFRSjBRY2lKQ1dvb0FnQVBDMEVVQ3d3QUlBQWdBUkRmQWtFZ1Jnc05BQ0FBSUFBZ0FSQmlFT0FNQzIwQUFrQWdBRUY2YWlJQVFRUkxEUUFDUUFKQUFrQWdBRUVCYXc0RUF3RURBZ0FMSUFGQmUyb2lBRUVIVHcwQ0lBQkIvd0J4UlE4TElBRkJlMm9pQUVFRlR3MEJRUVVnQUVFZmNYWkJBWEVQQ3lBQlFYdHFJZ0JCQjA4TkFFRVZJQUJCL3dCeGRrRUJjUThMUVFBTEZnQWdBQ0FCS0FJQU5nSUFJQUFnQWlnQ0FEWUNCQXVyQVFFRmZ5TUFRUkJySWdNa0FDQUFFQ01nQVJEbkJpRUVBa0FDUUNBQUVEd2lCVVVOQUNBQUlBUWdCUkEwSWdZUUVTZ0NBQ0lDUlEwQUlBSW9BZ0FpQWtVTkFBTkFJQVFnQWlnQ0JFY0VRQ0FDS0FJRUlBVVFOQ0FHUncwQ0N3SkFJQVFnQWlnQ0JFY05BQ0FBRUVNZ0FrRUlhaUFCRUtZRFJRMEFJQU5CQ0dvZ0FoQXhLQUlBSVFJTUF3c2dBaWdDQUNJQ0RRQUxDeUFERU1zQklnSTJBZ2dMSUFOQkVHb2tBQ0FDQzk0QkFRVi9Jd0JCRUdzaUJ5UUFJQUVRUENFRklBRWdBaWdDQkNBRkVEUWlCaEFSS0FJQUlRTURRQ0FESWdRb0FnQWlBeUFDUncwQUN3SkFJQVFnQVVFSWFrY0VRQ0FFS0FJRUlBVVFOQ0FHUmcwQkN5QUNLQUlBSWdNRVFDQURLQUlFSUFVUU5DQUdSZzBCQ3lBQklBWVFFVUVBTmdJQUN3SkFJQUlvQWdBaUEwVU5BQ0FES0FJRUlBVVFOQ0lESUFaR0RRQWdBU0FERUJFZ0JEWUNBQXNnQkNBQ0tBSUFOZ0lBSUFKQkFEWUNBQ0FCRUNNaUJDQUVLQUlBUVg5cU5nSUFJQUFnQWlBSFFRaHFJQUVRRzBFQkVNTUJFSkVCR2lBSFFSQnFKQUFMcmdFQkJYOGpBRUVRYXlJREpBQWdBQkFqSUFFb0FnQVE2UVloQkFKQUFrQWdBQkE4SWdWRkRRQWdBQ0FFSUFVUU5DSUdFQkVvQWdBaUFrVU5BQ0FDS0FJQUlnSkZEUUFEUUNBRUlBSW9BZ1JIQkVBZ0FpZ0NCQ0FGRURRZ0JrY05BZ3NDUUNBRUlBSW9BZ1JIRFFBZ0FCQkRJQUpCQ0dvZ0FSREVBa1VOQUNBRFFRaHFJQUlRTVNnQ0FDRUNEQU1MSUFJb0FnQWlBZzBBQ3dzZ0F4RExBU0lDTmdJSUN5QURRUkJxSkFBZ0FndXJBUUVGZnlNQVFSQnJJZ01rQUNBQUVDTWdBUkNGQ1NFRUFrQUNRQ0FBRUR3aUJVVU5BQ0FBSUFRZ0JSQTBJZ1lRRVNnQ0FDSUNSUTBBSUFJb0FnQWlBa1VOQUFOQUlBUWdBaWdDQkVjRVFDQUNLQUlFSUFVUU5DQUdSdzBDQ3dKQUlBUWdBaWdDQkVjTkFDQUFFRU1nQWtFSWFpQUJFTG9GUlEwQUlBTkJDR29nQWhBeEtBSUFJUUlNQXdzZ0FpZ0NBQ0lDRFFBTEN5QURFTXNCSWdJMkFnZ0xJQU5CRUdva0FDQUNDd2tBSUFBZ0FSRDlGUXRFQVFKL0l3QkJFR3NpQWlRQUlBSkJMem9BRHlBQUlBSkJDR29RbXcwaUFDQUNRUTlxSUFFUUh5SURRUUZxRUtBUklBQWdBUkFUSUFNUXlnVWFJQUpCRUdva0FBdXJBUUVGZnlNQVFSQnJJZ01rQUNBQUVDTWdBUkRxQmlFRUFrQUNRQ0FBRUR3aUJVVU5BQ0FBSUFRZ0JSQTBJZ1lRRVNnQ0FDSUNSUTBBSUFJb0FnQWlBa1VOQUFOQUlBUWdBaWdDQkVjRVFDQUNLQUlFSUFVUU5DQUdSdzBDQ3dKQUlBUWdBaWdDQkVjTkFDQUFFRU1nQWtFSWFpQUJFSXNEUlEwQUlBTkJDR29nQWhBeEtBSUFJUUlNQXdzZ0FpZ0NBQ0lDRFFBTEN5QURFTXNCSWdJMkFnZ0xJQU5CRUdva0FDQUNDeWtCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFUTZnd1FNU2dDQUNFQUlBSkJFR29rQUNBQUN3a0FJQUFnQVJDRUZndTlBZ0VGZnlBQUVDVWFBa0FnQVFSQUlBQWdBUkNDQWhDckFpQUFFQ1VnQVRZQ0FBTkFJQUFnQXhBUlFRQTJBZ0FnQTBFQmFpSURJQUZIRFFBTElBQkJDR29pQWlnQ0FDSUVSUTBCSUFBZ0JDZ0NCQ0FCRURRaUJoQVJJQUkyQWdBZ0JDZ0NBQ0lDUlEwQkEwQUNRQ0FHSUFJb0FnUWdBUkEwSWdWR0JFQWdBaUVFREFFTEFrQUNRQ0FBSUFVUUVTZ0NBQVJBSUFJaEF5QUNLQUlBUlEwQ0lBQVFReUFDUVFocUlBSW9BZ0JCQ0dvUXhBSU5BUXdDQ3lBQUlBVVFFU0FFTmdJQUlBSWhCQ0FGSVFZTUFnc0RRQ0FES0FJQUlnTW9BZ0JGRFFFZ0FCQkRJQUpCQ0dvZ0F5Z0NBRUVJYWhERUFnMEFDd3NnQkNBREtBSUFOZ0lBSUFNZ0FDQUZFQkVvQWdBb0FnQTJBZ0FnQUNBRkVCRW9BZ0FnQWpZQ0FBc2dCQ2dDQUNJQ0RRQUxEQUVMSUFCQkFCQ3JBaUFBRUNWQkFEWUNBQXNMMWdFQ0EzOEJmU01BUVJCcklnSWtBQ0FDSUFFMkFnd0NRQ0FDSUFGQkFVWUVmMEVDQlNBQklBRkJmMnB4UlEwQklBRVFpZ0lMSWdFMkFnd0xBa0FnQVNBQUVEd2lBMHNFUUNBQUlBRVE3UXdNQVFzZ0FTQURUdzBBSUFNUXVnRWhCQUovSUFBUUl5Z0NBTE1nQUJCREtnSUFsWTBpQlVNQUFJQlBYU0FGUXdBQUFBQmdjUVJBSUFXcERBRUxRUUFMSVFFZ0FnSi9JQVFFUUNBQkVJb0VEQUVMSUFFUWlnSUxOZ0lJSUFJZ0FrRU1haUFDUVFocUVGSW9BZ0FpQVRZQ0RDQUJJQU5QRFFBZ0FDQUJFTzBNQ3lBQ1FSQnFKQUFMdlFJQkJYOGdBQkFsR2dKQUlBRUVRQ0FBSUFFUWdnSVFxd0lnQUJBbElBRTJBZ0FEUUNBQUlBTVFFVUVBTmdJQUlBTkJBV29pQXlBQlJ3MEFDeUFBUVFocUlnSW9BZ0FpQkVVTkFTQUFJQVFvQWdRZ0FSQTBJZ1lRRVNBQ05nSUFJQVFvQWdBaUFrVU5BUU5BQWtBZ0JpQUNLQUlFSUFFUU5DSUZSZ1JBSUFJaEJBd0JDd0pBQWtBZ0FDQUZFQkVvQWdBRVFDQUNJUU1nQWlnQ0FFVU5BaUFBRUVNZ0FrRUlhaUFDS0FJQVFRaHFFS1lERFFFTUFnc2dBQ0FGRUJFZ0JEWUNBQ0FDSVFRZ0JTRUdEQUlMQTBBZ0F5Z0NBQ0lES0FJQVJRMEJJQUFRUXlBQ1FRaHFJQU1vQWdCQkNHb1FwZ01OQUFzTElBUWdBeWdDQURZQ0FDQURJQUFnQlJBUktBSUFLQUlBTmdJQUlBQWdCUkFSS0FJQUlBSTJBZ0FMSUFRb0FnQWlBZzBBQ3d3QkN5QUFRUUFRcXdJZ0FCQWxRUUEyQWdBTEM5WUJBZ04vQVgwakFFRVFheUlDSkFBZ0FpQUJOZ0lNQWtBZ0FpQUJRUUZHQkg5QkFnVWdBU0FCUVg5cWNVVU5BU0FCRUlvQ0N5SUJOZ0lNQ3dKQUlBRWdBQkE4SWdOTEJFQWdBQ0FCRU84TURBRUxJQUVnQTA4TkFDQURFTG9CSVFRQ2Z5QUFFQ01vQWdDeklBQVFReW9DQUpXTklnVkRBQUNBVDEwZ0JVTUFBQUFBWUhFRVFDQUZxUXdCQzBFQUN5RUJJQUlDZnlBRUJFQWdBUkNLQkF3QkN5QUJFSW9DQ3pZQ0NDQUNJQUpCREdvZ0FrRUlhaEJTS0FJQUlnRTJBZ3dnQVNBRFR3MEFJQUFnQVJEdkRBc2dBa0VRYWlRQUM5OEdBUVIvSXdCQjhBQnJJZ1VrQUFKQUlBSkZEUUFnQWlBQ0tBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ0hCRUFBRUVRUmcwQUFrQUNRQUpBSUFGQnRueHFJZ2RCQ2tzRVFDQUJRWHBxSWdSQkIwc0VRQ0FCUWFNRVJ3MERRUU1oQkF3Q0N3SkFBa0FnQkVFQmF3NERBQVFFQVFzZ0FpQUNLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NIQkVBQUVFTVJ3MEZJQUlnQWlnQ0FDZ0NlQkVBQUNJRUlBUW9BZ0FvQW13UkFBQU5CU0FDSUFJb0FnQW9BbmdSQUFBaUJDQUVLQUlBS0FKd0VRQUFEUVVnQWlBQ0tBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ2FCRUFBRVVOQkF3RkN5QUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUljRVFBQVFROUdEUVFnQWlBQ0tBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ2NCRUFBRVVOQWd3RUMwRU1JUVFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSFFRRnJEZ29IQmdVRUF3SUJDZ2tBQ0F0QkFpRUVEQWtMUVFzaEJBd0lDMEVLSVFRTUJ3dEJCeUVFREFZTFFRWWhCQXdGQzBFRklRUU1CQXRCQkNFRURBTUxRUWtoQkF3Q0MwRUlJUVFNQVF0QkFTRUVDeUFBSUFFZ0JVRVlhaUFFUVFBZ0FpQUNLQUlBS0FLUUFSRUFBQ0FDSUFJb0FnQW9BcFFCRVFBQUlBSWdBaWdDQUNnQ21BRVJBQUFnQWlBQ0tBSUFLQUtrQVJFQUFCQkZJZ1FnQWhDM0JDRUNJQVFRTlJvZ0FrVU5BZ3NnQVVHMmZHcEJDMGtFUUNBQ0lRWU1BZ3NnQWlFR0lBRkJvd1JHRFFFTElBVWdBeWtDQ0RjREVDQUZJQU1wQWdBM0F3aEJBQ0VHSUFBZ0FTQUNJQVZCQ0dvUS9Bd2lBQkR0Q0VVTkFDQUFJQUFvQWdBb0FzUUJFUVVBSUFBZ0FDZ0NBQ2dDdkFFUkFBQWlBaUFDS0FJQUtBSVVFUUFBSVFNZ0FDQUFLQUlBS0FLOEFSRUFBQ0VDSUFNRVFDQUNJQUlvQWdBb0FoUVJBQUFpQWlBQklBQWdBQ2dDQUNnQ2VCRUFBQ0FDS0FJQUtBSzhBUkVIQUNFR0RBRUxBa0FnQWlBQ0tBSUFLQUo0RVFBQUlnRWdBU2dDQUNnQ0xCRUFBQkRtQVVVTkFDQUFFT2tJUlEwQUlBQWdBQ2dDQUNnQ2ZCRUFBQ0lCSUFFb0FnQW9BaWdSQUFBUXFRTUxBa0FnQUNBQUtBSUFLQUs4QVJFQUFDSUJJQUVvQWdBb0FvUUJFUUFBRU9JQ1JRMEFJQUFvQW1nUXVBMUZEUUFnQUNBQUtBSUFLQUo4RVFBQUlnRWdBU2dDQUNnQ0tCRUFBQ0lCSUFFcEFnUkNnSUNBZ0JDRU53SUVDeUFBSVFZTElBVkI4QUJxSkFBZ0JndTlBZ0VGZnlBQUVDVWFBa0FnQVFSQUlBQWdBUkNDQWhDckFpQUFFQ1VnQVRZQ0FBTkFJQUFnQXhBUlFRQTJBZ0FnQTBFQmFpSURJQUZIRFFBTElBQkJDR29pQWlnQ0FDSUVSUTBCSUFBZ0JDZ0NCQ0FCRURRaUJoQVJJQUkyQWdBZ0JDZ0NBQ0lDUlEwQkEwQUNRQ0FHSUFJb0FnUWdBUkEwSWdWR0JFQWdBaUVFREFFTEFrQUNRQ0FBSUFVUUVTZ0NBQVJBSUFJaEF5QUNLQUlBUlEwQ0lBQVFReUFDUVFocUlBSW9BZ0JCQ0dvUXVnVU5BUXdDQ3lBQUlBVVFFU0FFTmdJQUlBSWhCQ0FGSVFZTUFnc0RRQ0FES0FJQUlnTW9BZ0JGRFFFZ0FCQkRJQUpCQ0dvZ0F5Z0NBRUVJYWhDNkJRMEFDd3NnQkNBREtBSUFOZ0lBSUFNZ0FDQUZFQkVvQWdBb0FnQTJBZ0FnQUNBRkVCRW9BZ0FnQWpZQ0FBc2dCQ2dDQUNJQ0RRQUxEQUVMSUFCQkFCQ3JBaUFBRUNWQkFEWUNBQXNMTEFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ0FpQUNFSWNXSUFBZ0EwRUlhaERYQkNBRFFSQnFKQUFMSFFFQmYwRUJJUUVnQVVFQUlBQkI4QVZHSUFCQnozNXFRUVJKY2hzTEpnRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBQWdBUkNNRmhBeEtBSUFHaUFDUVJCcUpBQUxGQUFnQUNBQkVPMEJHaUFBSUFJb0FnQTJBZ3dMSHdFQmYwRUJJUUVnQVVFQUlBQkJ5bnRxUVE5SklBQkJkbXBCQkVseUd3dEZBUUYvSXdCQklHc2lBaVFBSUFJZ0FSRE1BVFlDRUJEbkFTQUNRUmhxSUFBZ0FTQUNRUkJxSUFKQkNHb1FsQllnQWtFWWFoQkVJUUFnQWtFZ2FpUUFJQUJCQkdvTENnQWdBRUVFYWhBZ0dnc1VBQ0FBSUFCQkNHb29BZ0FRbkJZZ0FCQzRCUXNxQVFGL0l3QkJFR3NpQVNRQUlBRkJDR29nQUVFSWFpZ0NBQkF4S0FJQUlRQWdBVUVRYWlRQUlBQUxjUUVDZjBIMEFCQkdJZ1FpQXlBQUVQQUdJQU5CQURZQ2NDQURRWkNXQ1RZQ0FDQURJUUFnQWlnQ0NFVUVRQ0FDSUFFZ0FTZ0NBQ2dDQUJFQUFDSURLUUlBTndJQUlBSWdBeWtDQ0RjQ0NBc2dCQ0FDSUFRb0FnQW9BZ1FSQVFBZ0FDQUJJQVFvQWdBb0FyZ0JFUUVBSUFBTEJ3QWdBRUU4YWdzMEFRSi9RUlFRSmlJRUlnTWdBQkM0QkNBRElBSTZBQkFnQXlBQk5nSU1JQU5CME5ZUk5nSUFJQUFnQkJDNUJDQUJFSUVIQ3lvQkFYOGdBRUhBQVdvaUFCQzRBZ1IvSUFFRklBQVFrQUVvQWdBaUFDQUFLQUlBS0FJVUVRQUFDd3ZvQkFFSGZ5TUFRZEFJYXlJRUpBQUNRQ0FCUVpjQlJ3UkFJQUFRL3d4RkRRRWdBRUVVYWlFRklBSkJJR29oQmlBRVFjZ0FhaUVIQTBBZ0FDQUVRU2hxRUo0RklnZ1FVeG9nQUJDN0ZnUkFJQUFvQW5BaUFDQUNRWS9VRVVHTTFCRkJ2TXdSUVFBZ0FDZ0NBQ2dDcUFFUkFnQU1Bd3NEUUNBQklRTWdBQ0FJRUZNaUNVRjlSZ1JBSUFBb0FuQWlBQ0FDUWJ6VUVVR00xQkZCdk13UlFRQWdBQ2dDQUNnQ3FBRVJBZ0FNQkFzQ1FBSkFBa0FnQTBIZEFFd0VRQ0FEUVY5cUlnRkJIVXRCQVNBQmRFR3hySUhBQTNGRmNnMEJEQUlMSUFOQituNXFJZ0ZCSEUwRVFFRUJJQUYwUVlNSGNRMENJQUZCSEVZTkF3c2dBMEdFZjJvaUFVRUNTd1JBSUFOQjNnQkdEUUlNQVFzZ0FVRUJhdzBCQ3lBQUtBSndJZ0FnQWtIaDFCRkJqTlFSUWJ6TUVVRUFJQUFvQWdBb0FxZ0JFUUlBSUFNaEFRd0ZDeUFFSUFVZ0F4Q2xBallDSUNBR1FZRUlRZlhURVNBRVFTQnFFQ2NhSUFRZ0JTQUpFS1VDTmdJUUlBZEJnUWhCOWRNUklBUkJFR29RSnhvTElBWVFvQUVpQVNBSEVLQUJha0dCQ0U4RVFDQUFLQUp3SWdBZ0FrR0ExUkZCak5RUlFiek1FVUVBSUFBb0FnQW9BcWdCRVFJQUlBTWhBUXdFQ3lBRUlBYzJBZ0FnQVNBQ2FrRWdha0dCQ0NBQmEwSDEweEVnQkJBbkdrR2lBU0VCQWtBZ0EwR2lBVVlOQUNBRklBWVF6Z01pQVVFQVNnMEFJQUFvQW5BaUFTQUNRWjNWRVVHTTFCRkJ2TXdSUVFBZ0FTZ0NBQ2dDcUFFUkFnQWdBeUVCQ3lBQUlBRVF1aFlOQUFzZ0FCRC9EQTBBQ3d3QkN5QUFLQUp3SWdFZ0FrSDQweEZCak5RUlFiek1FVUVBSUFFb0FnQW9BcWdCRVFJQUlBQWdBaEJUSVFFTElBUkIwQWhxSkFBZ0FRdjJBZ0VFZnlNQVFSQnJJZ01rQUNBQlFTQnFJUVVDUUFKQUEwQUNRQ0FBSUFBZ0FSQlRJQUVRZ0EwaUFrRWpSd1JBSUFKQmYwY05BUXdEQ3lBQUtBSnNRUXBHQkVBZ0FDQUJFSndYUVg5SERRSU1Bd3NnQUNnQ2NDSUFJQUZCOXRJUlFiSFRFVUc4ekJGQkFDQUFLQUlBS0FLb0FSRUNBRUYvSVFJTUF3c2dBQ0FDTmdKc0lBSkJDa1lOQUFKQUlBSkI2SDVxSWdSQkNrc0VRQ0FDUVNkSERRRWdBQ2dDY0NJQ0lBRkIxTk1SUWQzTkVVRzh6QkZCQUNBQ0tBSUFLQUtvQVJFQ0FBd0NDd0pBQWtBQ1FDQUVRUWxyRGdJQ0FBRUxJQUFnQVVFQVFRRVE2QWhCZjJvaUJFRUNTdzBBUVg4aEFpQUVRUUZyRGdJREF3VUxJQVV0QUFCRkRRSU1CQXRCb1FFaEFpQUFLQUowRFFNZ0FDZ0NjQ2dDS0JvZ0FDZ0NjQ0lDSUFGQnM5TVJRZEhURVVHOHpCRkJBQ0FDS0FJQUtBS29BUkVDQUF3QkN3c2dBeUFBUVJScUlBSVFwUUkyQWdBZ0JVR0JDRUgxMHhFZ0F4QW5HZ3dCQ3lBQUVMMFdRWDhoQWdzZ0EwRVFhaVFBSUFJTEpBQWdBRUZTYWlJQVFUcE5CRUJDZ1lDQXJJQ0FnTUFGSUFDdGlLZEJBWEVQQzBFQUM2Z2xBZ2QvQW40Z0FVRUFPZ0FRSUFGQ0FEY0RHQ0FBSVFZZ0FDQUFLQUlBS0FJTUVRQUFJUUpCaEFFaEJBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBbjhDUUFKQUFrQUNRQUpBQWtBQ1FBTkFJQUpCSUVkQkFDQUNRUWxIRzBVRVFDQUJRUUU2QUJBZ0FDQUFLQUlBS0FJTUVRQUFJUUlNQVFzZ0FTQUdLQUlJS0FKd0VOY0JJZ1VwQWdBM0FnQWdBU0FGS1FJSU53SUlJQUpCTDBjRVFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQlgyb2lCVUhiQUVzTkFDQUZRUUZyRGxzVEFBQUhEQklBQUFZRkFBUVBBQUlEQXdNREF3TURBd01VQUEwSkRnQUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFJQVFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBTENnc2dBa0dBQVNBQ1FZQUJTQnNQQzBFQUlRTURRQUovSUFOQi93ZE1CRUFnQVNBRGFpQUNPZ0FnSUFOQkFXb2hBeUFBSUFBb0FnQW9BZ3dSQUFBTUFRc2dCMFVFUUNBR0tBSUlLQUp3SWdVZ0FVSGV6eEZCdk13UlFiek1FVUVBSUFVb0FnQW9BcWdCRVFJQVFRRWhCd3NnQUNBQUtBSUFLQUlNRVFBQUN5SUNRVjl4UWI5L2FrRWFTU0FDUWQ4QVJpQUNRVkJxUVFwSmNuSU5BQXNnQTBVTkR5QUJJQU5xUVFBNkFDQWdBQ0FBS0FJQUtBSVFFUVVBUWFJQkR3c2dBVUV3T2dBZ0FrQUNRQ0FBSUFBb0FnQW9BZ3dSQUFBaUEwRWdja0g0QUVjRVFFRUFJUVFnQTBGNGNVRXdSZzBCUVFBaEJVRUJJUUlNQWdzZ0FTQURPZ0FoQWtBZ0FDQUFLQUlBS0FJTUVRQUFJZ0pCVUdwQkNra2dBa0dmZjJwQkJrbHlSVUVBSUFKQnYzOXFRUVZMRzBVRVFFRUNJUU5CQUNFRUEwQUNRQ0FEUWY4SFNpQUpRdi8vLy8vLy8vLy9EMVp5UlFSQUlBRWdBMm9nQWpvQUlBSkFJQUpCVUdvaUJVRUtTUTBBSUFKQnYzOXFRUVZOQkVBZ0FrRkphaUVGREFFTElBSkJuMzlxUVFWTkJFQWdBa0dwZjJvaEJRd0JDeUFHS0FJSUtBSndJZ1VnQVVIc3p4RkJ2TXdSUWJ6TUVVRUFJQVVvQWdBb0FxZ0JFUUlBSUFRaEJRc2dBMEVCYWlFRElBV3NJQWxDQklhRUlRa2dCU0VFREFFTFFuOGhDU0FIRFFBZ0JpZ0NDQ2dDY0NJRktBSUFLQUtvQVNFQ0FrQWdBMEgvQjB3RVFDQUZJQUZCamRBUlFiek1FVUc4ekJGQkFDQUNFUUlBREFFTElBVWdBVUdwMEJGQnZNd1JRYnpNRVVFQUlBSVJBZ0FMUVFFaEJ3c2dBQ0FBS0FJQUtBSU1FUUFBSWdKQlVHcEJDa2tnQWtHL2YycEJCa2x5SUFKQm4zOXFRUVpKY2cwQUN3d0JDeUFHS0FJSUtBSndJZ1FnQVVIc3p4RkJ2TXdSUWJ6TUVVRUFJQVFvQWdBb0FxZ0JFUUlBUVFJaEF3c0NRQUpBQWtBQ1FDQUNRU0J5SWdSQmpYOXFJZ1ZCQWtzRVFDQUVRZXdBUncwQlFRQWhBQ0FEUWY4SFRBUi9JQUVnQTJvZ0Fqb0FJQ0FEUVFGcUJTQURDeUFCYWtFQU9nQWdRUUFoQWd3a0N3SkFBa0FnQlVFQmF3NENBZ0FCQ3lBRFFmOEhUQVJBSUFFZ0Eyb2dBam9BSUNBRFFRRnFJUU1MQW44Z0FDQUFLQUlBS0FJTUVRQUFJZ1JCSUhKQjdBQkdCRUJCQVNBRFFmOEhTZzBCR2lBQklBTnFJQVE2QUNBZ0EwRUJhaUVEUVFFTUFRc2dBQ0FBS0FJQUtBSVFFUVVBUVFBTElRUWdBQ0FBS0FJQUtBSU1FUUFBSWdWQklISkI4d0JIRFFRZ0JpZ0NDQ2dDY0NnQ0tCb2dBMEgvQjBvTkFpQUJJQU5xSWdCQkFEb0FJU0FBSUFVNkFDQU1Bd3NnQmlnQ0NDZ0NjQ2dDS0JwQkFDRUZJQU5CL3dkTUJIOGdBU0FEYWlBQ09nQWdJQU5CQVdvRklBTUxJQUZxUVFBNkFDQU1KQXNnQUNBQUtBSUFLQUlRRVFVQVFRQWhBaUFCSUFOcVFRQTZBQ0FNSkFzZ0FTQURha0VBT2dBZ0MwRUJJUUJCQVNFQ1FRRWhCU0FFUlEwaERDQUxJQUFnQUNnQ0FDZ0NFQkVGQUVFQUlRQWdBU0FEYWtFQU9nQWdRUUVoQWlBRURSOE1JUXRCQVNFQ1FRQWhCUU5BSUFraENnSkFJQUpCL3dkTUJFQWdBU0FDYWlBRE9nQWdJQUpCQVdvaEFnd0JDeUFIRFFBZ0JpZ0NDQ2dDY0NJSElBRkIvTkFSUWJ6TUVVRzh6QkZCQUNBSEtBSUFLQUtvQVJFQ0FFRUJJUWNMSUFOQlVHcXNJQXBDQTRhRUlBb2dDa0tBZ0lDQWdJQ0FnQ0JVR3lFSklBVWdDa0wvLy8vLy8vLy8veDlXY2lFRklBQWdBQ2dDQUNnQ0RCRUFBQ0lEUVhoeFFUQkdEUUFMQ3lBRFFRRnlRVGxHQkVBRFFBSkFJQUpCL3dkTUJFQWdBU0FDYWlBRE9nQWdJQUpCQVdvaEFnd0JDeUFIRFFBZ0JpZ0NDQ2dDY0NJRUlBRkIvTkFSUWJ6TUVVRzh6QkZCQUNBRUtBSUFLQUtvQVJFQ0FFRUJJUWNMSUFBZ0FDZ0NBQ2dDREJFQUFDSURRVkJxUVFwSkRRQUxRUUVoQkFzZ0F4Q0NEUVJBSUFZb0FnZ2dBaUFESUFFUXpRZ1BDeUFFQkVBZ0JpZ0NDQ2dDY0NJRUlBRkJsZEVSUWJ6TUVVRzh6QkZCQUNBRUtBSUFLQUtvQVJFQ0FBc0Nmd0pBSUFOQklISWlCRUdOZjJvaUIwRUNTd1JBSUFSQjdBQkhEUUZCQUNFRVFRRWdBa0gvQjBvTkFob2dBU0FDYWlBRE9nQWdJQUpCQVdvaEFrRUJEQUlMQWtBQ1FDQUhRUUZyRGdJQ0FBRUxJQUpCL3dkTUJFQWdBU0FDYWlBRE9nQWdJQUpCQVdvaEFnc0NmeUFBSUFBb0FnQW9BZ3dSQUFBaUJFRWdja0hzQUVZRVFFRUJJQUpCL3dkS0RRRWFJQUVnQW1vZ0JEb0FJQ0FDUVFGcUlRSkJBUXdCQ3lBQUlBQW9BZ0FvQWhBUkJRQkJBQXNoQnlBQUlBQW9BZ0FvQWd3UkFBQWlBMEVnY2tIekFFWUVRRUVCSVFRZ0JpZ0NDQ2dDY0NnQ0tCb2dBa0gvQjBvTkh5QUJJQUpxSUFNNkFDQWdBa0VCYWlFQ0RCOExJQUFnQUNnQ0FDZ0NFQkVGQUVFQklRUU1Id3RCQVNFSUlBWW9BZ2dvQW5Bb0FpZ2FRUUFoQkNBQ1FmOEhTZzBjSUFFZ0Ftb2dBem9BSUNBQ1FRRnFJUUlNSEFzZ0FDQUFLQUlBS0FJUUVRVUFRUUFoQkVFQUN5RUhEQndMUVFBaEF3TkFBa0FnQTBIL0Iwd0VRQ0FCSUFOcUlBSTZBQ0FnQTBFQmFpRUREQUVMSUFjTkFDQUdLQUlJS0FKd0lnUWdBVUg4MEJGQnZNd1JRYnpNRVVFQUlBUW9BZ0FvQXFnQkVRSUFRUUVoQndzZ0FDQUFLQUlBS0FJTUVRQUFJZ0pCVUdwQkNra05BQXNnQWhDQ0RRUkFJQVlvQWdnZ0F5QUNJQUVRelFnUEN3SkFBa0FDUUFKQUlBSkJJSElpQkVHTmYyb2lCVUVDU3dSQUlBUkI3QUJIRFFNZ0EwSC9CMHdOQVVFQUlRUkJBU0VIREJzTEFrQWdCVUVCYXc0Q0F3QUNDeUFESVFRZ0EwSC9CMHdFUUNBQklBTnFJQUk2QUNBZ0EwRUJhaUVFQ3dKL0lBQWdBQ2dDQUNnQ0RCRUFBQ0lGUVNCeVFld0FSZ1JBUVFFZ0JFSC9CMG9OQVJvZ0FTQUVhaUFGT2dBZ0lBUkJBV29oQkVFQkRBRUxJQUFnQUNnQ0FDZ0NFQkVGQUVFQUN5RUhJQUFnQUNnQ0FDZ0NEQkVBQUNJRlFTQnlRZk1BUncwRFFRRWhDQ0FHS0FJSUtBSndLQUlvR2lBRVFmOEhTZzBZSUFFZ0JHb2dCVG9BSUNBRVFRRnFJUVFNR0FzZ0FTQURhaUFDT2dBZ1FRRWhCeUFEUVFGcUlRUkJBQXdZQzBFQklRUWdCaWdDQ0NnQ2NDZ0NLQnBCQUNFSElBTkIvd2RLRFJnZ0FTQURhaUFDT2dBZ0lBTkJBV29oQkVFQkRCY0xJQUFnQUNnQ0FDZ0NFQkVGQUVFQUlRY2dBeUVFUVFBTUZnc2dBQ0FBS0FJQUtBSVFFUVVBUVFFaENFRUFEQlVMSUFBZ0FDZ0NBQ2dDREJFQUFDSUJRUzFHQkVCQmxBRVBDeUFCUVQxR0JFQkJnZ0VQQ3lBQUlBQW9BZ0FvQWhBUkJRQkJMUThMSUFBZ0FDZ0NBQ2dDREJFQUFDSUJRU3RHQkVCQmxRRVBDeUFCUVQxR0JFQkJnUUVQQ3lBQUlBQW9BZ0FvQWhBUkJRQkJLdzhMUVlNQklRUWdBQ0FBS0FJQUtBSU1FUUFBUVQxR0RSQWdBQ0FBS0FJQUtBSVFFUVVBUVNvUEMwR0ZBU0VFSUFBZ0FDZ0NBQ2dDREJFQUFFRTlSZzBQSUFBZ0FDZ0NBQ2dDRUJFRkFFRWxEd3NnQUNBQUtBSUFLQUlNRVFBQUlnRkIzZ0JHQkVCQmp3RVBDeUFCUVQxR0JFQkJqQUVQQ3lBQUlBQW9BZ0FvQWhBUkJRQkIzZ0FQQzBHUUFTRUVJQUFnQUNnQ0FDZ0NEQkVBQUVFOVJnME5JQUFnQUNnQ0FDZ0NFQkVGQUVFOUR3dEJrUUVoQkNBQUlBQW9BZ0FvQWd3UkFBQkJQVVlORENBQUlBQW9BZ0FvQWhBUkJRQkJJUThMSUFBZ0FDZ0NBQ2dDREJFQUFDSUJRZndBUmdSQVFZNEJEd3NnQVVFOVJnUkFRWXNCRHdzZ0FDQUFLQUlBS0FJUUVRVUFRZndBRHdzZ0FDQUFLQUlBS0FJTUVRQUFJZ0ZCSmtZRVFFR05BUThMSUFGQlBVWUVRRUdLQVE4TElBQWdBQ2dDQUNnQ0VCRUZBRUVtRHdzZ0FDQUFLQUlBS0FJTUVRQUFRVVJxSWdGQkFVMEVRRUdUQVNFRUlBRkJBV3RGRFFwQmlRRWhCQ0FBSUFBb0FnQW9BZ3dSQUFCQlBVWU5DaUFBSUFBb0FnQW9BaEFSQlFCQmh3RVBDeUFBSUFBb0FnQW9BaEFSQlFCQlBBOExJQUFnQUNnQ0FDZ0NEQkVBQUVGRGFpSUJRUUZOQkVCQmtnRWhCQ0FCUVFGckRRbEJpQUVoQkNBQUlBQW9BZ0FvQWd3UkFBQkJQVVlOQ1NBQUlBQW9BZ0FvQWhBUkJRQkJoZ0VQQ3lBQUlBQW9BZ0FvQWhBUkJRQkJQZzhMSUFBZ0FDZ0NBQ2dDREJFQUFDRUZJQUFnQUNnQ0FDZ0NFQkVGQUVFdUlRUWdCVUZRYWtFSlN3MEhJQVlvQWdoQkFFRXVJQUVRelFnUEN3SkFJQUFnQUNnQ0FDZ0NEQkVBQUNJRlFTcEhCRUFnQlVFOVJnMElJQVZCTDBjTkFTQUdLQUlJUVFFNkFOUUJBMEFnQUNBQUtBSUFLQUlNRVFBQUlnUkJDa2RCQUNBRVFYOUhHdzBBQ3lBQlFRRTZBQkFnQmlnQ0NFRUFPZ0RVQVNBRUR3c2dBQ0FBS0FJQUtBSU1FUUFBSVFJQ1FBTkFJQUpCS2tjRVFDQUNRWDlHRFJZZ0FDQUFLQUlBS0FJTUVRQUFJUUlNQVFzZ0FDQUFLQUlBS0FJTUVRQUFJZ0pCTDBZTkFTQUNRWDlIRFFBTERCUUxJQUZCQVRvQUVDQUFJQUFvQWdBb0Fnd1JBQUFoQWd3QkN3c2dBQ0FBS0FJQUtBSVFFUVVBUVM4UEN5QUdLQUlJSVFBZ0FVRUFOZ0lZSUFGQkFEb0FJQ0FBS0FKd0tBSW9Ha0VuRHdzZ0FDQUFLQUlBS0FJTUVRQUFJZ0pCSWtZaEJVRUFJUU1EUUNBQ1FYOUdJQUpCQ2taeUlBSkJJa1p5RFFJZ0FTQURhaUFDT2dBZ0lBQWdBQ2dDQUNnQ0RCRUFBQ0lDUVNKR0lRVkJnQWdoQnlBRFFRRnFJZ05CZ0FoSERRQUxEQUlMUVpZQklRUWdBQ0FBS0FJQUtBSU1FUUFBUVRwR0RRSWdBQ0FBS0FJQUtBSVFFUVVBUVRvaEJBd0NDeUFESVFjTElBRWdCMnBCQURvQUlFR2hBU0VFSUFVTkFDQUFJQUFvQWdBb0FoQVJCUUFnQUNnQ0NDZ0NjQ0lBSUFGQjJkSVJRZS9TRVVHOHpCRkJBQ0FBS0FJQUtBS29BUkVDQUVHaEFROExJQVFQQzBFQkN5RUZJQUVnQkdwQkFEb0FJQ0FEUVFGT0JFQWdCU0VFREFJTERBSUxJQUVnQTJwQkFEb0FJQXRCQUNFQ0FrQUNRQU5BSUFFZ0Ftb3NBQ0JCVUdvaEFBSkFJQWNFUUNBSlFwbXo1c3lacytiTUdWWU5BeUFKUXBtejVzeVpzK2JNR1ZJTkFTQUFRUVZMRFFNTUFRc2dCQVJBUVFFaEJTQUpRcGt6VmcwRUlBbENtVE5TRFFFZ0FFSCsvd054UVFWTERRUU1BUXRCQUNFRklBbENtYlBtekFGV0RRTWdDVUtacytiTUFWSU5BQ0FBUVFaUERRTUxJQUNzSUFsQ0NuNThJUWtnQWtFQmFpSUNJQU5IRFFBTElBUWhCUXdDQ3lBRUlRVUxJQVlvQWdnb0FuQWlBQ0FCUWZQUkVVRzh6QkZCdk13UlFRQWdBQ2dDQUNnQ3FBRVJBZ0JDZnlFSkN5QUhCRUFnQmlnQ0NDZ0NjQ2dDS0JvZ0JpZ0NDQ0lBS0FKMFJRUkFJQUFvQW5BZ0FVRjNRWXZTRVJCS0lBWW9BZ2dvQW5BZ0FVRjNRUUJCQTBHUXpoRkJpOUlSRU5FQkN5QUJJQWszQXhoQm13RkJtZ0VnQ0JzUEN5QUZCRUFnQmlnQ0NDSUFLQUowUlFSQUlBQW9BbkFvQWlnYUlBWW9BZ2dvQW5BZ0FVRjNRWnJTRVJCS0lBWW9BZ2dvQW5BZ0FVRjNRUUJCQTBHTXp4RkJxdElSRU5FQkN5QUJJQWsrQWhoQm5RRkJuQUVnQ0JzUEN5QUJJQWsrQWhoQm1RRkJtQUVnQ0JzUEMwRUFJUWNNQVF0QkFTRUlDeUFCSUFKcVFRQTZBQ0FnQlNBSFFYOXpJQWxDLy8vLy93OVdjWEpCQVhFRVFDQUdLQUlJS0FKd0lnQWdBVUd6MFJGQnZNd1JRYnpNRVVFQUlBQW9BZ0FvQXFnQkVRSUFDeUFIQkVBZ0JpZ0NDQ2dDY0NnQ0tCb2dCaWdDQ0NJQUtBSjBSUVJBSUFBb0FuQWdBVUYzUWNuUkVSQktJQVlvQWdnb0FuQWdBVUYzUVFCQkEwR1F6aEZCeWRFUkVORUJDeUFCSUFrM0F4aEJtd0ZCbWdFZ0JCc1BDeUFJQkVBZ0JpZ0NDQ0lBS0FKMFJRUkFJQUFvQW5Bb0FpZ2FJQVlvQWdnb0FuQWdBVUYzUWQ3UkVSQktJQVlvQWdnb0FuQWdBVUYzUVFCQkEwR016eEZCM3RFUkVORUJDeUFCSUFrK0FoaEJuUUZCbkFFZ0JCc1BDeUFCSUFrK0FoaEJtUUZCbUFFZ0JCc1BDd0ovSUFZb0FnZ29BbkFvQWlnYVFRRUxCRUFnQmlnQ0NDSUFLQUowUlFSQUlBQW9BbkFnQVVGM1FjYlFFUkJLSUFZb0FnZ29BbkFnQVVGM1FRQkJBMEdRemhGQnh0QVJFTkVCQ3lBQklBazNBeGhCbXdGQm1nRWdBaHNQQ3lBQ0lRVWdBRVVOQVFzZ0JpZ0NDQ0lBS0FKMFJRUkFJQUFvQW5Bb0FpZ2FJQVlvQWdnb0FuQWdBVUYzUWVIUUVSQktJQVlvQWdnb0FuQWdBVUYzUVFCQkEwR016eEZCNGRBUkVORUJDeUFCSUFrK0FoaEJuUUZCbkFFZ0JSc1BDeUFKUW9DQWdJQVFWQ0FIY2tVRVFDQUdLQUlJS0FKd0lnQWdBVUdOMEJGQnZNd1JRYnpNRVVFQUlBQW9BZ0FvQXFnQkVRSUFDeUFCSUFrK0FoaEJtUUZCbUFFZ0Foc1BDeUFHS0FJSUtBSndJZ0FnQVVHNTBoRkIwZElSUWJ6TUVVRUFJQUFvQWdBb0FxZ0JFUUlBUVg4TEd3QWdBRUhBQVdvUWtBRW9BZ0FpQUNBQUtBSUFLQUlRRVFVQUN4Y0FJQUFnQVJDMEV5QUFRUUEyQWtnZ0FFRi9OZ0pNQ3pFQkFYOGdBU0FBS0FJRUlnSkhCRUFEUUNBQUVEc2FJQUpCWUdvaUFoRE9DQ0FCSUFKSERRQUxDeUFBSUFFMkFnUUxEQUFnQUNBQUtBSUFFSVlOQ3pVQUlBQW9BZ0FhSUFBb0FnQWdBQkRMQTBFRmRHb2FJQUFvQWdBZ0FCQ0NBMEVGZEdvYUlBQW9BZ0FnQUJETEEwRUZkR29hQ3hBQUlBQkJFR29ROVFZYUlBQVEyd0VMQ2dBZ0FFRUVhaENKRFFzTkFDQUFFQ1VhSUFBb0FnQWFDd2tBSUFCQkRHb1FKUXNKQUNBQUlBRVF4QllMU0FFQmZ5QUJFRjRvQWdBaEFpQUFJQUVvQWdRZ0FTZ0NFQ0FDYWlJQVFRaDJRZnovL3dkeGFpSUNJQUVRandVRWYwRUFCU0FDS0FJQUlBQkIvd2R4UVFKMGFnc1FtUUVhQ3owQkFYOGdBQ2dDR0NJQ0lBQW9BaHhHQkVBZ0FDQUJFTllESUFBb0FnQW9BalFSQXdBUEN5QUFJQUpCQVdvMkFoZ2dBaUFCT2dBQUlBRVExZ01MRVFBZ0FFRi9FS2dEQkg5QkFBVWdBQXNMQ1FBZ0FCRDVCaEFxQ3hrQUlBQWdBUkM0QkNBQUlBSTJBZ3dnQUVIUTFSRTJBZ0FMT3dFQ2Z5QUFFTWNXSUFBb0FnUWlBU0FBS0FJSUlnSkhCRUFEUUNBQUVGNGFJQUVvQWdBUUtpQUJRUVJxSWdFZ0FrY05BQXNMSUFBUTBRZ0xQZ0VCZnlBQVFjQUJhaUlBRUpBQktBSUFJZ0VnQVNnQ0FDZ0NLQkVGQUNBQUVKQUJLQUlBSWdFRVFDQUJJQUVvQWdBb0FnUVJCUUFMSUFBUWtRa0xKZ0FnQUJER0V5QUFRZXpLRVRZQ0FDQUFRU0JxRUU0YUlBQWdBVFlDTUNBQVFRQTJBaXdMRmdBZ0FFSFlsQkkyQWdBZ0FFR0VsUkkyQWdBZ0FBdklBUUVCZnlNQVFSQnJJZ1FrQUNBQVFmekpFVFlDQUNBQVFRUnFFTkVGR2lBQVFSUnFFT1FXSUFBZ0FUWUNjQ0FBUVFvMkFtd2dBRUVBTmdKY0lBQkJBRFlDVkNBQVFjQUJhaEF3R2lBQVFRQTZBTlFCSUFBZ0F6WUMwQUVnQUVIWUFXb2dBaER0QVJvZ0FFSGtBV29ROUFZZ0FFSDhBV29nQWhEdEFSb2dBRUdJQW1vUTJCWWhBU0FBUVFBMkFyd0JJQUJCOUFCcVFRQkJ4UUFRM1FFYUlBUkJDR29nQVNBQktBSUFRWFJxS0FJQWFoRHlDaERYRmlBRVFRaHFFRmtnQkVFUWFpUUFJQUFMSUFFQmZ5QUFLQUlBSVFJZ0FDQUJOZ0lBSUFJRVFDQUFFQ1VnQWhDTERRc0x4QUlCQlg4Z0FCQWxFQ1VoQWdKQUlBRUVRQ0FBSUFJZ0FSRGtCeENZRFNBQUVDVWdBVFlDQUFOQUlBQWdBeEFSUVFBMkFnQWdBMEVCYWlJRElBRkhEUUFMSUFCQkRHb2lBaWdDQUNJRVJRMEJJQUFnQkNnQ0JDQUJFRFFpQmhBUklBSTJBZ0FnQkNnQ0FDSUNSUTBCQTBBQ1FDQUdJQUlvQWdRZ0FSQTBJZ1ZHQkVBZ0FpRUVEQUVMQWtBQ1FDQUFJQVVRRVNnQ0FBUkFJQUloQXlBQ0tBSUFSUTBDSUFBUXV3UWdBa0VJYWlBQ0tBSUFRUWhxRUtZRERRRU1BZ3NnQUNBRkVCRWdCRFlDQUNBQ0lRUWdCU0VHREFJTEEwQWdBeWdDQUNJREtBSUFSUTBCSUFBUXV3UWdBa0VJYWlBREtBSUFRUWhxRUtZRERRQUxDeUFFSUFNb0FnQTJBZ0FnQXlBQUlBVVFFU2dDQUNnQ0FEWUNBQ0FBSUFVUUVTZ0NBQ0FDTmdJQUN5QUVLQUlBSWdJTkFBc01BUXNnQUVFQUVKZ05JQUFRSlVFQU5nSUFDd3NIQUNBQklBQnJDeEVBSUFBZ0FSRHRCUm9nQUJEcUFTQUFDdzhBSUFBb0Fnd2FJQUJCQURZQ0RBc3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkE3R2lBQ1FYOXFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBc0pBQ0FBRVBBRkVDb0xYQUVCZnlBQUVGNGFJQUFRWGlFQklBQW9BZ1FnQUNnQ0VDQUJLQUlBYWtGL2FrRUlka0g4Ly84SGNXb29BZ0FhSUFBUVhpSUJJQUVvQWdCQmYybzJBZ0FnQUJDZ0RVR0FFRThFUUNBQUVOd0lLQUlBRUNvZ0FCRGJDQXNMTFFFQmZ3Si9RUUFnQUNJQkVOQUJSUTBBR2lBQkVOQUJRUXAwUVg5cUN5QUFLQUlRYXlBQUVGNG9BZ0JyQzA4QkFuOGpBRUVRYXlJQ0pBQWdBQkJlSVFNZ0FCQ2dEVVVFUUNBQUVQMFdDeUFDUVFocUlBQVFqZzBnQXlBQ0tBSU1JQUVRK1FFZ0FCQmVJZ0FnQUNnQ0FFRUJhallDQUNBQ1FSQnFKQUFMZmdFQ2Z5QUFLQUlNSVFFQ1FBTkFJQUVRblFZZ0FDZ0NEQkRhQVVGMmFpSUJRUU5MRFFFQ1FBSkFJQUZCQVdzT0F3TURBUUFMSUFBb0Fnd1FuUVlnQUNnQ0RCRGFBVUVOUmcwQUlBQW9BZ3dRamdFYUN5QUFLQUlNRUowR0lBQW9BZ3dRMmdFaEFpQUFLQUlNSVFFZ0FrSGNBRVlOQUFzZ0FSQ09BUm9MQzhVQkFRRi9Ba0FnQUNnQ0RCQ09BU0lCUWR3QVJnUkFBMEFnQUNnQ0RCRGFBVUVOUndSQUlBQW9BZ3dRMmdGQkNrY05Bd3NnQUNnQ0NDZ0NjQ0lCSUFBb0Fnd1ErZ2tnQUNnQ0NDMEExQUVnQVNnQ0FDZ0N6QUVSQndCRkJFQWdBQ2dDQ0MwQTFBRU5Bd3NnQUNnQ0RCQ09BVUVOUnlBQUtBSU1FSTRCSWdGQkNrZHlSUVJBSUFBb0Fnd1FqZ0VoQVFzZ0FVSGNBRVlOQUFzTEFrQWdBVUVOUncwQVFRb2hBU0FBS0FJTUVOb0JRUXBIRFFBZ0FDZ0NEQkNPQVJvTElBRVBDMEhjQUFzbUFDQUFRWXpERVRZQ0FDQUFRVUJyRUtNRkdpQUFRUmhxRUNBYUlBQkJER29RSUJvZ0FBc3NBQ0FBS0FJQUdpQUFLQUlBSUFBUXl3TkJCWFJxR2lBQUtBSUFJQUFReXdOQkJYUnFHaUFBS0FJQUdnc1BBQ0FBS0FJQUlBRkJCWFFRbEFJTFFnRUJmeU1BUVJCcklnRWtBQ0FBRURzYUlBRkIvLy8vUHpZQ0RDQUJRZi8vLy84SE5nSUlJQUZCREdvZ0FVRUlhaENrQVNnQ0FDRUFJQUZCRUdva0FDQUFDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCRExBMEVGZEdvYUlBQW9BZ0FhSUFBb0FnQWdBQkNDQTBFRmRHb2FDMWtCQW44akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFBUXB3MGlBeUFCVHdSQUlBQVF5d01pQUNBRFFRRjJTUVJBSUFJZ0FFRUJkRFlDQ0NBQ1FRaHFJQUpCREdvUVVpZ0NBQ0VEQ3lBQ1FSQnFKQUFnQXc4TEVHNEFDeUlBSXdCQkVHc2lBeVFBSUFBUU95QUJJQUlnQUVFRWFoQ1BGeUFEUVJCcUpBQUxDd0FnQUNBQklBSVFrQmNMUVFBQ2Z3SkFJQUFRbGdVZ0FVR2lBVWR5RFFBZ0FDQUFLQUlRRVBzR0VOb09SUTBBUVFFZ0FDQUFLQUlRRVBzR0tBSUFRZWgrYWtFTFNRMEJHZ3RCQUFzTGdRRUJCSDhnQUVIY3dSRTJBZ0FnQUVFUWFpSURFQllFUUFOQUlBTWdBUkFSS0FJQUlnSUVRQ0FDRVBVR0VDb0xJQUZCQVdvaUFTQURFQlpKRFFBTEN5QUFRU0JxSWdJUUZnUkFRUUFoQVFOQUlBSWdBUkFSS0FJQUlnUUVRQ0FFRVBVR0VDb0xJQUZCQVdvaUFTQUNFQlpKRFFBTEN5QUNFTnNCSUFNUTJ3RWdBQXNzQUNBQUtBSUFHaUFBS0FJQUlBQVF1Z1JxR2lBQUtBSUFJQUFRaEFScUdpQUFLQUlBSUFBUXVnUnFHZ3RMQVFGL0l3QkJFR3NpQWlRQUFrQWdBQ2dDQkNBQUVCc29BZ0JKQkVBZ0FCQTdJQUFvQWdRZ0FSRGtDQ0FBSUFBb0FnUkJFR28yQWdRTUFRc2dBQ0FCRUtBWEN5QUNRUkJxSkFBTE5nQWdBQ0FCTmdJb0lBQW9BaGdnQUJDZEJVRUVkR29nQVRZQ0JDQUFRUUEyQWlRZ0FDZ0NHQ0FBRUowRlFRUjBha0VBTmdJQUN4d0FJQUFnQVRZQ0xDQUFLQUlZSUFBUW5RVkJCSFJxSUFFMkFnZ0xxZ0VCQm44akFFRWdheUlESkFBQ1FDQURRUmhxSUFBUXlnWWlCQzBBQUVVTkFDQURRUWhxSUFBUTdnVWhCU0FBSUFBb0FnQkJkR29vQWdCcUtBSUVJUVlnQUNBQUtBSUFRWFJxS0FJQWFpSUhFTm9JSVFnZ0F5QUZLQUlBSUFFZ0FTQUNhaUlDSUFFZ0JrR3dBWEZCSUVZYklBSWdCeUFJRUtjRE5nSVFJQU5CRUdvUTJRaEZEUUFnQUNBQUtBSUFRWFJxS0FJQWFrRUZFSUFFQ3lBRUVNa0dJQU5CSUdva0FDQUFDd2tBSUFBUVhpZ0NBQXNNQUNBQUlBRkJCR29RcGhjTER3QWdBQ0FCRUJNZ0FSQWZFTElOQzBjQkFuOGdBRUU0YWhDV0RTRUJJQUJCeE1NUk5nSUFJQUZCMk1NUk5nSUFJQUFnQUVFRWFpSUNFS2NYSUFCQnhNTVJOZ0lBSUFGQjJNTVJOZ0lBSUFKQkVCQ1ZEU0FBQzhzQ0FRTi9JQUFnQWhCVElRUUNRQ0FBS0FKMElnTkJ3UUJNQkVBZ0FDZ0N2QUVpQlVIQ0FFZ05BUXNnQUNnQ2NDSUFJQUpCajdZUlFlKzVFVUhKc3hGQkFDQUFLQUlBS0FLb0FSRUNBRUYvRHdzZ0FDQURRUUZxTmdKMElBQWdCVUVCYWpZQ3ZBRWdCRUdpQVVjRVFDQUFLQUp3SWdVb0FnQW9BcWdCSVFBZ0FRUkFJQVVnQWtHaXN4RkI3N2tSUWNtekVVRUFJQUFSQWdBZ0JBOExJQVVnQWtHaXN4RkI5cmtSUWNtekVVRUFJQUFSQWdBZ0JBOExJQUFnQUVFVWFpQUNRU0JxRU00REVQRUZJUVJCQ2lFREFrQWdBQ0FDRUZNaUJVRUtSZzBBSUFBb0FuQWlBeUFDUWY2NUVVSHZ1UkZCeWJNUlFRQWdBeWdDQUNnQ3FBRVJBZ0FnQlNFREEwQWdBMEYvUmlBRFFRcEdjZzBCSUFBZ0FoQlRJUU1NQUFBTEFBc2dCQVIvSUFRdEFDUkJBblpCZjNOQkFYRUZRUUFMSUFGSEJIOGdBRUVCSUFJUWdBY0ZJQU1MQ3k0QUlBQkJlbXBCQ0VrZ0FFSHBmbW9pQUVFZFRVRUFRUUVnQUhSQi81L3Yvd054RzNKRkJFQkJBQThMUVFFTDdnRUJBMzhnQlVFZ2FpRUdBMEFnQVVHaUFVWUVRRUdvdHhFZ0JoQjZSUVJBUWFJQkR3c0NRQ0FBSUFWQkFVRUFFT2dJSWdGQkEwc05BQUpBQWtBZ0FVRUNhdzRDQWdFQUN5QUFLQUp3SWdFZ0JVR2R1UkZCMjdnUlFjbXpFVUVBSUFFb0FnQW9BcWdCRVFJQUlBUkJBVG9BQUNBRFFRQTJBZ0FNQVFzZ0FnMEFJQUFvQW5BUU0wVU5BQ0FBS0FKd0VKQURJUWdnQUNnQ2NDSUJLQUlBSVFjZ0NBUkFJQUVnQlVHM3VSRkIyN2dSSUFaQkFDQUhLQUtzQVJFQ0FBd0JDeUFCSUFWQnQ3a1JRZHU0RVNBR1FRQWdCeWdDcUFFUkFnQUxJQUFnQlJCVElRRWdCQzBBQUVVTkFRc0xJQUVMeUFFQkJIOGpBRUVRYXlJQ0pBQWdBQ0FCRUZNaEF3SkFBa0FnQUNnQ2RDSUVRY0FBVEFSQUlBQW9BcndCSWdWQndRQklEUUVMSUFBb0FuQWlBQ0FCUVkrMkVVR2V0eEZCeWJNUlFRQWdBQ2dDQUNnQ3FBRVJBZ0JCZnlFRERBRUxJQUFnQkVFQmFqWUNkQ0FBSUFWQkFXbzJBcndCSUFKQkFEWUNEQ0FDUVFBNkFBc2dBRUdsQVNBQklBQWdBMEVBUVFBZ0FrRU1haUFDUVF0cUlBRVF2QVFRdlFRaEF5QUNLQUlNRFFBZ0FpMEFDdzBBSUFCQkFTQUJFSUFISVFNTElBSkJFR29rQUNBREMwQUJBbjhnQUNBQkVNZ0pJQUJCRUdvaUF5QUJRUkJxSWdKSEJFQWdBeUFDS0FJQUlBSW9BZ1FRa3hjTElBQWdBU2dDSURZQ0lDQUFJQUV0QUNRNkFDUUxpUUVCQVg4Q2Z5QUFJQUFvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUlzRVFBQUVPWUJCRUJCQVNBQklBRW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXNFUUFBRUk4Q0RRRWFDMEVBSUFFZ0FTZ0NBQ2dDZUJFQUFDSUJJQUVvQWdBb0Fpd1JBQUFRNWdGRkRRQWFJQUFnQUNnQ0FDZ0NlQkVBQUNJQUlBQW9BZ0FvQWl3UkFBQVFqd0lMQ3lFQUlBQVFrd0VhSUFCQkVHb1E2Z2dhSUFBZ0FDMEFKRUg0QVhFNkFDUWdBQXRRQVFGL0l3QkIwQUJySWdVa0FDQUFCSDhnQUNBRklBRWdCQ0FDSUFNUXl4Y2lBU0FBS0FJQUtBSUlFUUVBSUFFdEFEa2hBQ0FCRU93SUdpQUFRUUJIQlVFQUN5RUFJQVZCMEFCcUpBQWdBQXZVQWdFRmZ5QUFFQ1VhQWtBZ0FRUkFJQUFDZjBILy8vLy9BeUFCSWdKSkJFQVFnZ0VBQ3lBQ1FRSjBFQ1lMRUtzQ0lBQVFKU0FCTmdJQUEwQWdBQ0FERUJGQkFEWUNBQ0FEUVFGcUlnTWdBVWNOQUFzZ0FFRUlhaUlDS0FJQUlnUkZEUUVnQUNBRUtBSUVJQUVRTkNJR0VCRWdBallDQUNBRUtBSUFJZ0pGRFFFRFFBSkFJQVlnQWlnQ0JDQUJFRFFpQlVZRVFDQUNJUVFNQVFzQ1FBSkFJQUFnQlJBUktBSUFCRUFnQWlFRElBSW9BZ0JGRFFJZ0FCQkRJQUpCQ0dvZ0FpZ0NBRUVJYWhERUFnMEJEQUlMSUFBZ0JSQVJJQVEyQWdBZ0FpRUVJQVVoQmd3Q0N3TkFJQU1vQWdBaUF5Z0NBRVVOQVNBQUVFTWdBa0VJYWlBREtBSUFRUWhxRU1RQ0RRQUxDeUFFSUFNb0FnQTJBZ0FnQXlBQUlBVVFFU2dDQUNnQ0FEWUNBQ0FBSUFVUUVTZ0NBQ0FDTmdJQUN5QUVLQUlBSWdJTkFBc01BUXNnQUVFQUVLc0NJQUFRSlVFQU5nSUFDd3ZXQVFJRGZ3RjlJd0JCRUdzaUFpUUFJQUlnQVRZQ0RBSkFJQUlnQVVFQlJnUi9RUUlGSUFFZ0FVRi9hbkZGRFFFZ0FSQ0tBZ3NpQVRZQ0RBc0NRQ0FCSUFBUVBDSURTd1JBSUFBZ0FSQy9EUXdCQ3lBQklBTlBEUUFnQXhDNkFTRUVBbjhnQUJBaktBSUFzeUFBRUVNcUFnQ1ZqU0lGUXdBQWdFOWRJQVZEQUFBQUFHQnhCRUFnQmFrTUFRdEJBQXNoQVNBQ0FuOGdCQVJBSUFFUWlnUU1BUXNnQVJDS0FnczJBZ2dnQWlBQ1FReHFJQUpCQ0dvUVVpZ0NBQ0lCTmdJTUlBRWdBMDhOQUNBQUlBRVF2dzBMSUFKQkVHb2tBQXZhQ1FFQ2Z5TUFRVEJySWdVa0FDQUZJQVEyQWlnZ0JTQUROZ0lzQWtBQ1FDQUJJQUlnQXhEWUNBUkFJQUVnQWlBRUVOZ0lEUUVMSUFWQkFEWUNFQ0FGUVFBMkFod2dCVUVnYWlBRlFSQnFJQVZCSEdvUWt3VWdBQ0FGUVNCcUVKSUZEQUVMQWtBZ0F5QURLQUlBS0FKNEVRQUFJQVFnQkNnQ0FDZ0NlQkVBQUJEQUFVVU5BQUpBSUFNZ0F5Z0NBQ2dDckFFUkFBQkZCRUFnQkNBRUtBSUFLQUtzQVJFQUFFVU5BUXNnQlVFQU5nSVFJQVZCQURZQ0hDQUZRU0JxSUFWQkVHb2dCVUVjYWhDVEJTQUFJQVZCSUdvUWtnVU1BZ3NDUUNBRElBTW9BZ0FvQW5nUkFBQWlCaUFHS0FJQUtBSndFUUFBUlFSQUlBUWdCQ2dDQUNnQ2VCRUFBQ0lHSUFZb0FnQW9BbkFSQUFCRkRRRUxJQVZCQURZQ0VDQUZRUUEyQWh3Z0JVRWdhaUFGUVJCcUlBVkJIR29Ra3dVZ0FDQUZRU0JxRUpJRkRBSUxJQU1nQXlnQ0FDZ0NlQkVBQUJDRkFVVUVRQ0FFSUFRb0FnQW9BbmdSQUFBUWhRRkZEUUVMSUFBZ0JVRXNhaUFGUVNocUVQOEREQUVMSUFWQkZEWUNFQ0FGUVJRMkFod2dCVUVnYWlBRlFSQnFJQVZCSEdvUS93TUNRQUpBQWtBQ1FDQUNRZWwrYWlJRFFSbExEUUJCQVNBRGRDSUVRWitmN3dOeERRRUNRQ0FFUVlDQWdCeHhSUVJBUVFFZ0EzUkI0QUJ4UlEwQ0RBRUxJQUFnQlVFc2FpQUZRU2hxRVA4RERBVUxBa0FnQlNnQ0xDSUJJQUVvQWdBb0FvQUJFUUFBRUtZQ1JRMEFJQVVvQWlnaUFTQUJLQUlBS0FLQUFSRUFBQkNtQWtVTkFDQUFJQVZCTEdvZ0JVRW9haEQvQXd3RkN5QUZRUUEyQWh3Z0JVRUFOZ0lNSUFWQkVHb2dCVUVjYWlBRlFReHFFSk1GSUFBZ0JVRVFhaENTQlF3RUN5QUNRUUZIRFFFTElBVW9BaXdpQXlBREtBSUFLQUtBQVJFQUFDQUZLQUlvSWdNZ0F5Z0NBQ2dDZ0FFUkFBQkdCRUFnQUNBRlFTeHFJQVZCS0dvUS93TU1Bd3NnQlVFUWFpQUJJQVVvQWl3aUF5QURLQUlBS0FLQUFSRUFBQ0FGS0FJb0lnTWdBeWdDQUNnQ2dBRVJBQUFnQWhETUZpQUZRU0JxSWdJZ0JVRVFhaUlERUdjYUlBSkJCR29nQTBFRWFoQm5HaUFGS0FJZ1FSUkhCRUFnQlVFZ2FoQWxLQUlBUVJSSERRSUxJQVZCQURZQ0hDQUZRUUEyQWd3Z0JVRVFhaUFGUVJ4cUlBVkJER29Ra3dVZ0FDQUZRUkJxRUpJRkRBSUxJQVVvQWl3aUFTQUJLQUlBS0FKNEVRQUFJQVVvQWlnaUFTQUJLQUlBS0FKNEVRQUFFS01DQkVBZ0FDQUZRU3hxSUFWQktHb1Evd01NQWdzZ0JVRUFOZ0ljSUFWQkFEWUNEQ0FGUVJCcUlBVkJIR29nQlVFTWFoQ1RCU0FBSUFWQkVHb1FrZ1VNQVFzZ0JTZ0NJQ0VESUFVb0Fpd2lBaUFDS0FJQUtBSjRFUUFBSWdJZ0FpZ0NBQ2dDSEJFQUFDRUVJQVVvQWl3aEFnSkFJQU1nQkVjRVFDQUNJQUlvQWdBb0FoUVJBQUFoQkNBRktBSWdJUU1nQlNnQ0xDRUNJQVFFUUNBRklBTWdBaUFDS0FJQUtBSVVFUUFBRU5BSU5nSVFEQUlMSUFVZ0FTQURJQUlRbHdVMkFoQU1BUXNnQlNBQ05nSVFDeUFGUVNCcUVDVW9BZ0FoQXlBRktBSW9JZ0lnQWlnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWh3UkFBQWhCQ0FGS0FJb0lRSUNRQ0FESUFSSEJFQWdBaUFDS0FJQUtBSVVFUUFBSVFRZ0JVRWdhaEFsS0FJQUlRTWdCU2dDS0NFQ0lBUUVRQ0FGSUFNZ0FpQUNLQUlBS0FJVUVRQUFFTkFJTmdJY0RBSUxJQVVnQVNBRElBSVFsd1UyQWh3TUFRc2dCU0FDTmdJY0N5QUFJQVZCRUdvZ0JVRWNhaEQvQXdzZ0JVRXdhaVFBQzk0Q0FRRi9Jd0JCSUdzaUJTUUFJQVVnQVRZQ0dBSkFBa0FDUUFKQUFrQWdCVUVZYWlBRlFSQnFJQUFRZ1FFUU1SQ1hBa1VFUUNBQUVCc2dCQ0FGUVJocUVGY1Fyd05GRFFFTElBVWdCU2dDR0RZQ0VDQUZRUkJxSUFWQkNHb2dBQkRuQXhBeEVKY0NSUVJBSUFBUUd3Si9JQVZCRUdvaUFTQUJLQUlBRU9JWE5nSUFJQUVMRUZjZ0JCQ3ZBMFVOQWdzZ0JTZ0NHQ0lES0FJQVJRMERJQUlnQlNnQ0VDSUFOZ0lBSUFCQkJHb2hBd3dFQ3lBQUVCc2dCVUVZYWhCWElBUVFyd05GRFFFZ0JTQUZLQUlZRU9NWE5nSVFJQVZCRUdvZ0JVRUlhaUFBRUlFQkVERVFsd0pGQkVBZ0FCQWJJQVFnQlVFUWFoQlhFSzhEUlEwQkN5QUZLQUlZS0FJRVJRUkFJQUlnQlNnQ0dDSUFOZ0lBSUFCQkJHb2hBd3dFQ3lBRktBSVFJUU1NQWdzZ0FDQUNJQVFRclFjaEF3d0NDeUFDSUFVb0FoZ2lBRFlDQUNBRElBQTJBZ0FNQVFzZ0FpQUROZ0lBQ3lBRlFTQnFKQUFnQXd0RkFRRi9Jd0JCRUdzaUF5UUFJQUVRSlNJQklBQkJIQkFtSUFOQkNHb2dBVUVBRU1NQkVKRUJJZ0FvQWdCQkVHb2dBaENoQlNBQUVDVkJBVG9BQkNBRFFSQnFKQUFMWUFFQ2Z3SkFJQUFRUENJREJFQURRQUpBSUFBUUd5QUNJQU5CRUdvUXJ3TUVRQ0FES0FJQUlnUkZEUVFNQVFzZ0F5Z0NCQ0lFRFFBZ0FTQUROZ0lBSUFOQkJHb1BDeUFFSVFNTUFBQUxBQXNnQUJBbElRTUxJQUVnQXpZQ0FDQURDMDhCQVg4akFFSGdBR3NpQUNRQUlBQkIyQUJxUVFFUTlRRWlBMEVBRUE4Z0FSQmJJQU1nQUVFS1FRSkJBVUVBUVFCQkFCQkZJZ01nQWtFQkVOQUNJUUlnQXhBMUdpQUFRZUFBYWlRQUlBSUwrZ0VCQkg4RFFBSkFJQUFnQUNnQ0FDZ0NlQkVBQUVVZ0FrRUJjWElOQUNBQUlBQW9BZ0FvQW53UkFBQU5BQ0FBSUFBZ0FDZ0NBQ2dDU0JFQUFCQ05Bd3NDUUNBQVFRaHFFTlFDUlEwQUlBQW9BandpQVVVTkFDQUJFTGtGUlEwQUlBQW9BandRNEFrTEFrQUNRQ0FBSUFBb0FnQW9Bb2dCRVFBQVJRMEFJQUFvQWtBUU4wVU5BQ0FBS0FKQUVEY2lCRUYvYWlFRElBQW9Ba0FoQVVFQUlRSWdCRUVCVEEwQkEwQWdBU0FDRURnb0FnQVF4ZzBnQUNnQ1FDRUJJQUpCQVdvaUFpQURSdzBBQ3d3QkN3OExJQUVnQXhBNEtBSUFJUUVnQUNBQUtBSUFLQUlvRVFBQUtRSUVRaitEUWdaUklRSWdBU0VBREFBQUN3QUxSUUVCZnlNQVFTQnJJZ0lrQUNBQ0lBRVFrZ00yQWhBUTV3RWdBa0VZYWlBQUlBRWdBa0VRYWlBQ1FRaHFFTzhYSUFKQkdHb1FWeUVBSUFKQklHb2tBQ0FBUVJCcUM2d0JBUVYvSXdCQkVHc2lBeVFBSUFBUUl4b2dBU2dDQUNFRUFrQUNRQ0FBRUR3aUJVVU5BQ0FBSUFRZ0JSQTBJZ1lRRVNnQ0FDSUNSUTBBSUFJb0FnQWlBa1VOQUFOQUlBUWdBaWdDQkVjRVFDQUNLQUlFSUFVUU5DQUdSdzBDQ3dKQUlBUWdBaWdDQkVjTkFDQUFFRU1nQWtFSWFpQUJFTVFDUlEwQUlBTkJDR29nQWhBeEtBSUFJUUlNQXdzZ0FpZ0NBQ0lDRFFBTEN5QURFTXNCSWdJMkFnZ0xJQU5CRUdva0FDQUNDeXdCQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCSUFJZ0FoRE9GeUFBSUFOQkNHb1Exd1FnQTBFUWFpUUFDekFCQVg4akFFRVFheUlDSkFBZ0FpQUFJQUVReUEwMkFnQWdBa0VJYWlBQ0VHY29BZ0FoQUNBQ1FSQnFKQUFnQUFzZ0FDQUJJQUlwQWdBM0FnQWdBU0FDS1FJUU53SVFJQUVnQWlrQ0NEY0NDQXNKQUNBQUlBRVEyaGNMOXdFQkFYOENRQ0FCSUFFb0FnQW9BbmdSQUFCRkRRQWdBaUFDS0FJQUtBSjRFUUFBQkVBZ0FTQUNJQUlvQWdBb0FrZ1JBQUFnQVNnQ0FDZ0NoQUVSQVFBZ0FpQUNLQUlBS0FKOEVRQUFSUTBCSUFFZ0FTZ0NBQ2dDZ0FFUkJRQU1BUXNnQWlBQ0tBSUFLQUowRVFBQVJRMEFJQUVnQWlBQ0tBSUFLQUk4RVFBQUVJMERDd0pBSUFFZ0FTZ0NBQ2dDaUFFUkFBQkZEUUFnQWlBQ0tBSUFLQUtJQVJFQUFFVU5BQ0FCS0FKQUVEY2dBaWdDUUJBM1J3MEFJQUVvQWtBUU4wRUJTQTBBQTBBZ0FDQUJLQUpBSUFNUU9DZ0NBQ0FDS0FKQUlBTVFPQ2dDQUJETkRTQURRUUZxSWdNZ0FTZ0NRQkEzU0EwQUN3c0xDUUFnQUNBQkVPa1hDNWNHQWdWL0FYNGpBRUd3QTJzaUJTUUFJQUVnQVNnQ0FDZ0NlQkVBQUJERkFTSUpRUUZPQkVBZ0FFRVFhaUVIQTBBZ0FDQUJJQVFROHdFQ1FDQUNJQWdRRHlnQ0NFRi9haUlHUVF0TkJFQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FHUVFOckRna0NBd1FGQmdjSUNRQUJDeUFIUVl5VUVVR1JsQkVnQWlBSUVBOHRBQUFiRUJBYUlBZEIxN0VRRUJCQmw1UVJFQkJCMnJFUUVCQWFJQWRCM0xFUUVCQWFEQW9MSUFBZ0FpQUlFQThyQXdBZ0F4Q3NHQ0FIUWR5eEVCQVFHZ3dKQ3lBQ0lBZ1FEeXdBQUNFR0lBVkJxcFFSTmdJRUlBVWdCallDQUNBRlFZQUJha0dzQWtHaWxCRWdCUkFuR2lBSElBVkJnQUZxRUJCQjNMRVFFQkFhREFnTElBSWdDQkFQTFFBQUlRWWdCVUcvbEJFMkFoUWdCU0FHTmdJUUlBVkJnQUZxUWF3Q1FiZVVFU0FGUVJCcUVDY2FJQWNnQlVHQUFXb1FFRUhjc1JBUUVCb01Cd3NnQWlBSUVBOHVBUUFoQmlBRlFjMlVFVFlDSkNBRklBWTJBaUFnQlVHQUFXcEJyQUpCb3BRUklBVkJJR29RSnhvZ0J5QUZRWUFCYWhBUVFkeXhFQkFRR2d3R0N5QUNJQWdRRHk4QkFDRUdJQVZCMjVRUk5nSTBJQVVnQmpZQ01DQUZRWUFCYWtHc0FrRzNsQkVnQlVFd2FoQW5HaUFISUFWQmdBRnFFQkJCM0xFUUVCQWFEQVVMSUFJZ0NCQVBLQUlBSVFZZ0JVSHFsQkUyQWtRZ0JTQUdOZ0pBSUFWQmdBRnFRYXdDUWFLVUVTQUZRVUJyRUNjYUlBY2dCVUdBQVdvUUVFSGNzUkFRRUJvTUJBc2dBaUFJRUE4b0FnQWhCaUFGUWZTVUVUWUNWQ0FGSUFZMkFsQWdCVUdBQVdwQnJBSkJ0NVFSSUFWQjBBQnFFQ2NhSUFjZ0JVR0FBV29RRUVIY3NSQVFFQm9NQXdzZ0FpQUlFQThwQXdBaENpQUZRWW1WRVRZQ2FDQUZJQW8zQTJBZ0JVR0FBV3BCckFKQi81UVJJQVZCNEFCcUVDY2FJQWNnQlVHQUFXb1FFRUhjc1JBUUVCb01BZ3NnQWlBSUVBOHBBd0FoQ2lBRlFhR1ZFVFlDZUNBRklBbzNBM0FnQlVHQUFXcEJyQUpCbDVVUklBVkI4QUJxRUNjYUlBY2dCVUdBQVdvUUVFSGNzUkFRRUJvTUFRc2dBRUVEUWJDVkVTQUJJQUVvQWdBb0FnQVJBQUFRMWdRTElBaEJBV29pQ0NBSlJ3MEFDd3NnQlVHd0Eyb2tBQXNOQUNBQVFZQUJhaUFCRU53RUN5d0JBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJJQUlnQWhDM0dDQUFJQU5CQ0dvUTFBUWdBMEVRYWlRQUN4QUFJQUFnQVVIS254QVEzZzBRc0FNTEhBQWdBRUVOVFFSQUlBQkJBblJCM0tnUWFpZ0NBQThMUWY2ZUVBc0lBQ0FBUVFOeFJRc09BQ0FBRUJzYVFmLy8vLzhIRHdzOUFRRi9JQUVnQWtjRVFDQURLQUlBSVFRRFFDQUFJQVJCZEdvZ0FrRjBhaUlDRUlnRUlBTWdBeWdDQUVGMGFpSUVOZ0lBSUFFZ0FrY05BQXNMQzFrQkFuOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQVE3QmdpQXlBQlR3UkFJQUFRcXdNaUFDQURRUUYyU1FSQUlBSWdBRUVCZERZQ0NDQUNRUWhxSUFKQkRHb1FVaWdDQUNFREN5QUNRUkJxSkFBZ0F3OExFRzRBQ3dnQUlBQVFrd0VhQzJrQkFuOGpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBQkJER29nQkVFTWFpQURFSUVDSUFFRVFDQUFLQUlRSUFFUTNnY2hCUXNnQUNBRk5nSUFJQUFnQlNBQ1FRUjBhaUlDTmdJSUlBQWdBallDQkNBQUVDTWdCU0FCUVFSMGFqWUNBQ0FFUVJCcUpBQWdBQXRaQVFKL0l3QkJFR3NpQWlRQUlBSWdBVFlDRENBQUVKb0tJZ01nQVU4RVFDQUFFTGtESWdBZ0EwRUJka2tFUUNBQ0lBQkJBWFEyQWdnZ0FrRUlhaUFDUVF4cUVGSW9BZ0FoQXdzZ0FrRVFhaVFBSUFNUEN4QnVBQXNqQVFGL0lBQW9BaFFpQVNBQktBSUFLQUl3RVFBQUtBSkFJQUFvQWhnUU9DZ0NBQXNNQUNBQVFSUnFJQUVRMUFNTEJ3QWdBRUVrYWdzT0FDQUFJQUVnQVJDZ0FSRHdHQXNWQUNBQVFlalFEellDQUNBQVFSUnFFRFVhSUFBTGJRRUNmeU1BUVJCcklnSWtBQ0FBSUFFb0FndzJBZ3dnQUNBQkxRQVFPZ0FRSUFBZ0FTMEFFVG9BRVNBQktBSVVJZ01nQVJBV1NRUkFBMEFnQWlBQklBTVFFU2dDQUJDZEdUWUNEQ0FBSUFKQkRHb1EvUTBnQTBFQmFpSURJQUVRRmtrTkFBc0xJQUpCRUdva0FBc2lBQ0FBSUFFb0FnQWdBa0VEZGtIOC8vLy9BWEZxUVFFZ0FrRWZjWFFRbVFFYUMxUUJBWDhnQUJEVkRTQUJTUVJBRUc0QUN5QUFFQnNhUWYvLy8vOERJQUZCZjJwQkJYWkJBV29pQVNJQ1NRUkFFSUlCQUFzZ0FrRUNkQkFtSVFJZ0FFRUFOZ0lFSUFBZ0FqWUNBQ0FBRUJzZ0FUWUNBQXRKQVFGL0l3QkJFR3NpQXlRQUlBQkNBRGNDQUNBRFFRQTJBZ3dnQUVFSWFpQURRUXhxRUswQ0lBRUVRQ0FBSUFFUTRnMGdBQ0FCSUFJdEFBQVFuQmtMSUFOQkVHb2tBQ0FBQzBzQkFYOGpBRUVRYXlJQ0pBQUNRQ0FBS0FJRUlBQVFHeWdDQUVjRVFDQUFFRHNnQUNnQ0JDQUJFSWdFSUFBZ0FDZ0NCRUVNYWpZQ0JBd0JDeUFBSUFFUW54a0xJQUpCRUdva0FBc3hBQ0FBUWJDVUR6WUNBQ0FBSUFFb0FnUVFFeERDQVRZQ0JDQUJLQUlJSVFFZ0FFRUJPZ0FRSUFBZ0FUWUNDQ0FBQzVZQkFRTi9Jd0JCRUdzaUFTUUFJQUJCdk04UE5nSUFJQUVnQUVFVWFpSUNFRUEyQWdnZ0FTQUNFREkyQWdBZ0FVRUlhaUFCRUI0RVFBTkFJQUVvQWdnb0FnUWlBd1JBSUFNZ0F5Z0NBQ2dDQkJFRkFBc2dBVUVJYWhDY0JTQUJJQUlRTWpZQ0FDQUJRUWhxSUFFUUhnMEFDd3NnQUVIOEFHb1FHUm9nQUVFa2FoQTFHaUFDRUlzRUlBSVFxUmtnQVVFUWFpUUFJQUFMYVFFQ2Z5QUFJQUFvQWdBb0FrUVJBQUFpQWdSQUlBRkJFR29pQTBINXpnOFFFQm9nQWtFQlRnUkFRUUFoQVFOQUlBTWdBQ0FBS0FJQUtBSklFUUFBSUFGQkFuUnFLQUlBRUJCQi9NNFBFQkFhSUFGQkFXb2lBU0FDUncwQUN3c2dBMEgremc4UUVCb0xDL1VIQVFSL0l3QkJNR3NpQkNRQVFlMEFJUUlDUUNBQUlBQW9BZ0FvQW13UkFBQkZCRUJCOWdBaEFpQUFJQUFvQWdBb0FtZ1JBQUJGRFFFTElBRWdBaERuQWdzQ1FDQUFMUUFFSWdKQmYyb2lBMEVRU3cwQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQTBFQmF3NFFCQVVHQndnSkFRSUtDd01NRGc4UERRQUxJQUZCNWdBUTV3SU1Ed3NnQVVIcEFCRG5BZ3dPQ3lBQlFmVUFFT2NDREEwTElBRkI0Z0FRNXdJTURBc2dBVUhrQUJEbkFnd0xDeUFCUVpqT0R4Q1NBUXdLQ3lBQlFaek9EeENTQVF3SkN5QUJRWi9PRHhDU0FRd0lDeUFCUWFMT0R4Q1NBUXdIQ3lBQlFhYk9EeENTQVF3R0N5QUJRYXJPRHhDU0FRd0ZDeUFCUWE3T0R4Q1NBUXdFQ3lBQlFiTE9EeENTQVF3REN5QUJRYlhPRHhDU0FRd0NDeUFBUWN3QWFpRUNBa0FnQUMwQVRFRjlhaUlGUVFaTERRQkJtTTRQSVFNQ1FBSkFBa0FnQlVFQmF3NEdBd01EQXdBQkFndEJ1czRQSVFNTUFRdEJ2TTRQSVFNTElBRWdBeENTQVFzZ0FRSi9RYjdPRHlBQ0VLZ0ZEUUFhUWNET0R5QUNFTWdFRFFBYVFjVE9EMEhDemc4Z0FoQ29BaHNMRUpJQklBSVFnd2tFUUNBQlFjYk9EeENTQVFzZ0FoQ0NDUVJBSUFGQnlNNFBFSklCQ3lBQ0VLY0ZCRUFnQVVIS3pnOFFrZ0VMSUFJUWdBWUVRQ0FCUWN6T0R4Q1NBUXNnQWkwQUFVRi9haUlEUWY4QmNVRUdUUVJBSUFFZ0EwRVlkRUVZZFVFQ2RFR2cwdzlxS0FJQUVKSUJDeUFDRUlvQlJRMEJJQUZCM2M0UEVKSUJEQUVMSUFGQjM4NFBRZWZPRHlBQ1FROUdHeENTQVNBQUtBSklJZ0lFUUNBQklBSVFpUUVhQ3lBQUtBSkFFRGRGRFFCQkFDRUNBMEFnQVVFdEVPY0NJQUFvQWtBZ0FoQTRLQUlBSUFFUTZBMGdBa0VCYWlJQ0lBQW9Ba0FRTjBrTkFBc0xJQUFnQUNnQ0FDZ0NNQkVBQUNFRElBQW9BZ0FoQWlBQkFuOGdBMEVCVGdSQUlBQWdBaWdDTUJFQUFBd0JDeUFCSUFBZ0FpZ0NOQkVBQUVFWWRFR0FnSUNBQTJwQkdIVVE1d0lnQUNBQUtBSUFLQUk0RVFBQUMwRVlkRUdBZ0lDQUEycEJHSFVRNXdJQ1FDQUFLQUk4SWdORkRRQkJBQ0VDSUFNUVlFRUFUQTBBQTBBZ0FDZ0NQQ0FDRUlvSElRVWdBQ2dDUENFREFrQWdCUVJBSUFNZ0FoQ0tCeUlESUFNb0FnQW9BakFSQUFBaEJTQUFLQUk4SUFJUWlnY2hBeUFGQkVBZ0JDQURJQU1vQWdBb0FqQVJBQUFpQXlBREtBSUFLQUs0QVJFQUFEWUNJQ0FFUVNWcVFRdEI3czRQSUFSQklHb1FKeG9NQWdzZ0JDQUROZ0lRSUFSQkpXcEJDMEh5emc4Z0JFRVFhaEFuR2d3QkN5QUVJQU1nQWhEV0FUWUNBQ0FFUVNWcVFRdEI5czRQSUFRUUp4b0xJQUZCMndBUTV3SWdBU0FFUVNWcUVKSUJJQUZCM1FBUTV3SWdBa0VCYWlJQ0lBQW9BandRWUVnTkFBc0xJQVJCTUdva0FBc0dBQkNDQVFBTEhBQWdBRUlBTndNWUlBQkJBRG9BRUNBQUVLUUZJQUJCQURvQUlBc0pBQ0FBSUFFUXdRUUxFZ0FnQUJEcUFTQUFJQUVnQWhDZkVTQUFDd2tBSUFBZ0FUWUNSQXZEQVFFRGZ3SkFJQUZCQkVrRVFDQUJJUUlNQVFzZ0FTRURJQUVoQWdOQUlBQW9BQUJCbGRQSDNnVnNJZ1JCR0hZZ0JITkJsZFBIM2dWc0lBSkJsZFBIM2dWc2N5RUNJQUJCQkdvaEFDQURRWHhxSWdOQkEwc05BQXNnQVVFRGNTRUJDeUFCUVg5cUlnRkJBazBFUUFKQUFrQUNRQ0FCUVFGckRnSUJBQUlMSUFBdEFBSkJFSFFnQW5NaEFnc2dBQzBBQVVFSWRDQUNjeUVDQ3lBQ0lBQXRBQUJ6UVpYVHg5NEZiQ0VDQ3lBQ1FRMTJJQUp6UVpYVHg5NEZiQ0lBUVE5MklBQnpDNWNDQVFKL0lBRWdBQ0FCUmlJQ09nQU1Ba0FnQWcwQUEwQWdBU2dDQ0MwQURBMEJJQUVvQWdnUXB3SWhBeUFCS0FJSUlRSUNRQUovSUFNRVFBSkFJQUlvQWdnb0FnUWlBa1VOQUNBQ0xRQU1EUUFnQWtFTWFpRUNJQUVvQWdnaUFVRUJPZ0FNSUFFb0FnZ01BZ3NnQVJDbkFrVUVRQ0FCS0FJSUlnRVE5UVVMSUFFb0FnZ2lBRUVCT2dBTUlBQW9BZ2dpQUVFQU9nQU1JQUFROUFVUEN5QUNLQUlJS0FJQUlnSkZEUUVnQWkwQURBMEJJQUpCREdvaEFpQUJLQUlJSWdGQkFUb0FEQ0FCS0FJSUN5SUJJQUFnQVVZNkFBd2dBa0VCT2dBQUlBQWdBVWNOQVF3Q0N3c2dBUkNuQWdSQUlBRW9BZ2dpQVJEMEJRc2dBU2dDQ0NJQVFRRTZBQXdnQUNnQ0NDSUFRUUE2QUF3Z0FCRDFCUXNMSUFBZ0FCQWJHaUFCQkVBRFFDQUJLQUlBSVFBZ0FSQXFJQUFpQVEwQUN3c0xEd0FnQUVFTWFoQWdHaUFBRUNBYUN3c0FJQUFnQUJBOEVJd0hDd3NBSUFBZ0FCQThFSWdKQzhnTkFTSi9Jd0JCRUdzaUJTUUFJQVJCQ0VZZ0EwSENBMGh5SVJVZ0FFRUVhaUVhSUFCQjVBQnFJUnNnQUVIVUFHb2hIRUVBSVFNRFFBSkFJQU1pQndSQUlBRXRBQUZCQ0hSQmdBaEdEUUVnQVJEOUFRMEJJQUV0QUFKQkFYRU5BU0FCRUlvQkRRRWdBUkNvQWtVTkFRdEJBQ0VEQTBBQ1FDQURJZ2dFUUNBQkVQMEJEUUVnQVJEMkJRMEJJQUVRaWdFTkFTQUJFS2dDUlEwQklBRW9BZ0FpQTBHQS9nOXhRWUNFREVZZ0EwR0EvZ3R4UVlDSUNFWnlEUUVMSUFjZ0NISWhIVUVBSVFNRFFBSkFJQU1pREFSQUlBZ05BeUFCRUlvQkRRRWdBUkNvQWtVTkFTQUJLQUlBSWdSQkNIWkIvd0Z4UVg1cUlnTkJBa3NnQTBFQmEwVnlSVUVBSUFSQmdJQU1jVUdBZ0F4R0d3MEJJQUVROWdVTkFTQUJFUDBCRFFFTElBZ2dESEloRmlBSUlBeHFJUmRCQUNFREEwQUNRQUpBSUJjZ0F5SVBJQWRxSWg1cVFRTkxEUUFnRHdSQUlBRXRBQUZCQ0hSQmdBaEdEUUlnQVJEOUFRMENJQUVRaWdFTkFndEJBQ0VEQTBBQ1FDQVhJQU1pQmlBZWFtb2lIMEVEU3lBV1FRQWdBeHR5RFFBQ1FDQUdCRUFnQVNnQ0FDSURRWUNBQ0hFTkJDQURRWUQrQTNGQmdBaEhEUUVNQkFzZ0FSQ0tBUTBCSUFFUS9RRU5BU0FCRUtnQ1JRMEJDMEhrN0FkQjhPd0hJQVliSVNCQi91d0hRWVR0QnlBR0d5RWhRUUFoQXlBVklBWWdIWEpCQUVkeUlTSURRQ0FESWhBRVFDQVdEUUlnQVJDS0FRMENJQUVRcUFKRkRRSWdBUkQ5QVEwQ0MwRUFJUU1nRUNBZmFrRURUUVJBQTBBZ0FDQUJLQUlBSWdsQkJuWkIvQWR4YWlnQzJBSWhCQUpBSUFkRlFRQWdBeUlTR3cwQUlBbEJnSUFJY1NFTklCSUVRQ0FKUVlEK0EzRkJnQVpHSUExeURRRWdBUkNvQWtVTkFRc2dEVUVSZGlJRElBZHFRUUlnQ1VFUWRrRUJjU0FFYWlJRUlBUkJBa2diSUFRZ0F4dHFJZ05CQkNBTlJTQURRUVZJY2lJREd5RVJJQU5CQVhNaEUwRUFJUU1EUUFKQUlBTWlDMFVOQUNBQktBSUFJZ05CL3dGeFFRTkhEUUlnQTBHQWdBaHhSUTBBSUJOQmYzTWhBMEVCSVJNZ0VTQURRUUZ4YXlFUkMwSFM3UWRCeHUwSElBc2JJUlJCM2UwSFFmTHRCeUFMR3lFTlFmL3RCMEdIN2djZ0N4c2hHRUd4N1FkQnV1MEhJQXNiSVFRZ0FFRUlRUU5CQVNBTEd5QUdHeUlqUVFKMGFpRWtJQUFnRVVFQ2RHb2hKVUVBSVFNRFFDQURJZzVCQUVjZ0luRkZCRUFnRENBT2NpRW1RUUFoQXdOQUFrQWdCUUovSUFNaUNRUkFJQlVOQWlBQkVQTUZEUUlnQVJEOUFTQUhjZzBDSUFVUTFRRkJ3T1FIRUJJYUlDQU1BUXNnQlJEVkFTRVpJQUVvQWdBaUEwSC9BWEVoQ2lBWklBTkJnSUFJY1FSL1FjenNCMEhYN0FjZ0NrRURSaHNGSUJrZ0FDQUtRUUowYWlnQ2lBSVFFaHBCM3V3SEN4QVNHaUFoQ3hBU0dpQUhCRUFnQlVHTTdRY1FFaG9MSUFnRVFDQUZRWkh0QnhBU0dnc2dFQVJBSUFWQmxlMEhFQklhQ3lBR0JFQWdCVUdhN1FjUUVob0xJQThFUUNBRlFhRHRCeEFTR2dzZ0RnUkFJQVZCcCswSEVCSWFDeUFKSUE1eUJFQWdCVUd0N1FjUUVob0xJQVZCeXV3SEVCSWFJQVVnQWhDSkFSb2dCUUovSUFRZ0VnMEFHaUFGUWNEdEJ4QVNHaUFSUVFGR0JFQWdJeERIQkF3QkN5QUZJQ1FvQW9nQ0VCSWFJQVZCd3UwSEVCSWFJQ1VvQXZRQkN4QVNHaUFUUVFGeEJFQWdCVUhHN1FjUUVob0xBa0FnQmtVRVFDQUJFSW9CR2d3QkN3SkFBa0FnQVJEOUFRMEFJQUVROWdVTkFDQUJFSW9CUlEwQkN5QUJFSW9CUlEwQkN5QUZRYzN0QnhBU0dnc2dDQVJBSUFVZ0ZCQVNHZ3NnRUFSQUlBMGhBeUFGSUFBZ0FTZ0NBRUVHZGtIOEIzRnFLQUxZQWtFQlJ3Ui9JQVVnR0JBU0dpQUZJQUJCOUFGcUlnb2dBRUhZQW1vaUF5QUJLQUlBUVFaMlFmd0hjV29vQWdCQkFuUnFLQUlBRUJJYUlBVWdHQkFTR2lBS0lBTWdBU2dDQUVFR2RrSDhCM0ZxS0FJQVFRSjBhaWdDQUFVZ0F3c1FFaG9MSUE4RVFFSE43UWNoQXlBRklBQWdBU2dDQUVFR2RrSDhCM0ZxS0FMWUFrRUJSd1IvSUFWQmpPNEhFQklhSUFBZ0FDQUJLQUlBUVFaMlFmd0hjV29vQXRnQ1FRSjBhaWdDOUFFRklBTUxFQklhQ3lBT0JFQWdCU0FVRUJJYUN5QUpCRUFnQlVHUzdnY1FFaG9nQVNnQ0FDSURRZjhCY1NFS0lBVWdBMEdBZ0FoeEJIOUI1YUlDUWRDaUFpQUtRUU5HR3dVZ0JTQUFJQXBCQW5ScUtBS0lBaEFTR2tIZ29nSUxFQklhQ3lBTUJFQWdCU0FVRUJJYUN5QUZRYnprQnhBU0dpQWFJUU1nSmdSL0lCd2dCUkNKQVJvZ0d3VWdBd3NnQlJDSkFSb2dCUkFaR2tFQklRTWdDVVVOQVFzTFFRRWhBeUFPUlEwQkN3dEJBU0VESUF0RkRRQUxDMEVCSVFNZ0VrVU5BQXNMUVFFaEF5QVFSUTBBQ3d0QkFTRURJQVpGRFFBTEMwRUJJUU1nRDBVTkFRc0xRUUVoQXlBTVJRMEJDd3RCQVNFRElBaEZEUUVMQzBFQklRTWdCMFVOQVFzTElBVkJFR29rQUF0WEFRSi9Jd0JCSUdzaUF5UUFJQUFRR3lJQ0lBTkJDR29nQUNBQUVCWkJBV29RMndRZ0FCQVdJQUlReFJraUFpZ0NDQ0FCRVBrQklBSWdBaWdDQ0VFRWFqWUNDQ0FBSUFJUWlna2dBaENSQXlBRFFTQnFKQUFMUFFFQmZ5QUJJQUpIQkVBZ0F5Z0NBQ0VFQTBBZ0FDQUVRWFJxSUFKQmRHb2lBaENnQlNBRElBTW9BZ0JCZEdvaUJEWUNBQ0FCSUFKSERRQUxDd3RSQVFGL0lBQVFpd1FnQUJBYklBQW9BZ0FnQUNnQ0JDQUJRUVJxSWdJUTlnMGdBQ0FDRUM0Z0FFRUVhaUFCUVFocUVDNGdBQkFiSUFFUUl4QXVJQUVnQVNnQ0JEWUNBQ0FBSUFBUXB3RVErUVVMendVQkJYOGdBQ0FCS0FJQUlnWkJDSFpCL3dGeElnaEJBblJxS0FMWUFpRUpBa0FDUUNBQkVOQUVSUTBBSUFOQnRRSk1RUUFnQkVFSVJoc05BU0FEUWEwRFNnMEFJQVJCQ0VjTkFRc2dCRUVJUmdSQUlBQkJCR3BCNmVNSEVCSWFDMEg4cEFJaEJ5QUFRUVJxSWdVZ0JrRVFka0VCY1NBSmFpQUlRUVJHYXlJR1FRRkhCSDhnQlVIdzR3Y1FFaG9nQUNBR1FRSjBhaWdDOUFFRklBY0xFQklhSUFWQjllTUhRYWJrQnlBQkVOQUVHeEFTR2lBRklBSVFpUUVhSUFVQ2Z3SkFJQUVRMEFRTkFDQUJFUFlGRFFBZ0FSRDlBUTBBUWJUa0J5QUJFSW9CUlEwQkdndEJ2T1FIQ3hBU0dnSkFJQVJCQ0VjZ0EwR3RBMHB4SWdaQkFVY05BQ0FCRUlvQlJRMEFJQVZCd09RSEVCSWFJQVZCeGVRSFFmamtCeUFCRU5BRUd4QVNHaUFGSUFJUWlRRWFJQVZCdk9RSEVCSWFDd0pBSUFSQkNFWWdBMEdRQTBoeURRQWdBUkNvQWtVTkFDQUJMUUFCUVFoMFFZQUtSZzBBSUFFUWlnRU5BQ0FCRVAwQkRRQWdBRUhVQUdvaEJFRUFJUWNEUUFKQUlBY2lBd1JBSUFFdEFBQkJBMGNOQVFzZ0JFR0k1UWNRRWhvZ0JDQUNFSWtCR2lBRUFuOGdBQ0FCS0FJQVFRWjJRZndIY1dvb0F0Z0NRUUZHQkVCQnF1VUhJQU5GRFFFYUlBUkJudVVIRUJJYUlBUkJ2T1FIRUJJYURBSUxJQVJCc3VVSFFidmxCeUFER3hBU0dpQUFJQUFnQVNnQ0FFRUdka0g4QjNGcUtBTFlBa0VDZEdvb0F2UUJDeEFTR2lBRVFiemtCeEFTR2tFQklRY2dBMFVOQVFzTElBQkI1QUJxSWdSQmlPVUhFQklhSUFRZ0FoQ0pBUnBCcXVVSElRTWdCQ0FBSUFFb0FnQkJCblpCL0FkeGFpZ0MyQUpCQVVjRWZ5QUVRYnZsQnhBU0dpQUFJQUFnQVNnQ0FFRUdka0g4QjNGcUtBTFlBa0VDZEdvb0F2UUJCU0FEQ3hBU0dpQUVRYnprQnhBU0dnc2dCa1VOQUNBQkVOQUVEUUFnQVMwQUFVRUlkRUdBQ2tZTkFDQUJFSW9CRFFBZ0FSRDlBUTBBSUFWQndlVUhFQklhSUFVZ0FoQ0pBUm9nQlVHODVBY1FFaG9MQzBzQkFYOGpBRUVRYXlJQ0pBQUNRQ0FBS0FJRUlBQVFHeWdDQUVjRVFDQUFFQnNnQUNnQ0JDQUJFS0VGSUFBZ0FDZ0NCRUVNYWpZQ0JBd0JDeUFBSUFFUXlSa0xJQUpCRUdva0FBc0VBRUVBQ3c4QUlBQVE2Z0VnQUVFTWFoREhCZ3NwQVFGL0lBQW9BZ0FoQWlBQUlBRTJBZ0FnQWdSQUlBSUVRQ0FDSUFJb0FnQW9BZ1FSQlFBTEN3dExBUUYvSXdCQkVHc2lBaVFBQWtBZ0FDZ0NCQ0FBRUJzb0FnQkpCRUFnQUJBYklBQW9BZ1FnQVJENUFTQUFJQUFvQWdSQkJHbzJBZ1FNQVFzZ0FDQUJFUFVOQ3lBQ1FSQnFKQUFMRndBZ0FCQ1RDeUFBUVFBNkFCZ2dBRUlBTndJUUlBQUxFQUVCZjBINEFoQkdJZ0FRMnhrZ0FBdExBUUYvSXdCQkVHc2lBaVFBQWtBZ0FDZ0NCQ0FBRUJzb0FnQkhCRUFnQUJBYklBQW9BZ1FnQVJENUFTQUFJQUFvQWdSQkJHbzJBZ1FNQVFzZ0FDQUJFUFVOQ3lBQ1FSQnFKQUFMRFFBZ0FFRUlSaUFCUVFSR2NRc29BUUYvSUFBUUZnUkFBMEFnQUNBQkVCRW9BZ0FRcEJrZ0FVRUJhaUlCSUFBUUZra05BQXNMQ3djQUlBQVFGa1VMTlFFQmZ5TUFRU0JySWdJa0FDQUNJQUUyQWdBZ0FrRVFha0VRUVpDK0R5QUNFQ2NhSUFBZ0FrRVFhaEFpR2lBQ1FTQnFKQUFMQ2dBZ0FDQUJOZ0s4QVFzS0FDQUFJQUUyQXJnQkN4c0FJQUJCQURZQ0NDQUFJQUUyQWdRZ0FFR0V5UTgyQWdBZ0FBdFJBUUovSXdCQkVHc2lDaVFBSUFrUUgwVUVRQ0FCRU8wWkN5QUtJQWtRRXhBaUlRbEIyS3NCRUNZaUN5QUFJQUVnQ0NBQ0lBTWdCaUFFSUFVZ0J5QUpFUDhQSUFrUUdSb2dDa0VRYWlRQUlBc0xId0FnQUVGK2FpSUFRUVpOQkVBZ0FFRUNkRUg4elE5cUtBSUFEd3RCQUFzYkFDQUFLQUlNUVFCTUJFQWdBQ2dDQ0VFQVNrRUJkQThMUVFFTGtRSUJBWDhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVISkFrd0VRQ0FBUVpVQlRBUkFJQUJCZ1FGTUJFQWdBRUh1QUVZTkF5QUFRZmdBUncwTFFRSVBDeUFBUVlJQlJnMERJQUJCakFGSERRcEJCQThMSUFCQnRRSk1CRUFnQUVHV0FVWU5CQ0FBUWF3Q1J3MEtRUVlQQ3lBQVFiWUNSZzBISUFCQndBSkhEUWxCRHc4TElBQkJyUU5NQkVBZ0FFR1pBMHdFUUNBQVFjb0NSZzBGSUFCQmtBTkhEUXBCQ0E4TElBQkJtZ05HRFFVZ0FFR2tBMGNOQ1VFS0R3c2dBRUhCQTB3RVFDQUFRYTREUmcwR0lBQkJ1QU5IRFFsQkRBOExJQUJCd2dOR0RRY2dBRUhNQTBjTkNFRVFEd3RCQVE4TFFRTVBDMEVGRHd0QkJ3OExRUWtQQzBFTER3dEJEUThMUVE0aEFRc2dBUXNoQUNBQVFYOXFJZ0JCQjAwRVFDQUFRUUowUWR6TkQyb29BZ0FQQzBHdXZnOExMd0FqQUVFUWF5SUJKQUFnQUVJQU53SUFJQUZCQURZQ0RDQUFRUWhxSUFGQkRHb1FsUU1nQVVFUWFpUUFJQUFMR1FCQnF0V3ExUUFnQUVrRVFCQ0NBUUFMSUFCQkdHd1FKZ3NYQUNBQUVEQWFJQUJDLy84QU53SU1JQUJCQURZQUV3c1NBQ0FBRUNNb0FnQWdBQ2dDQUd0QkdHMExMQUFnQUNnQ0FCb2dBQ2dDQUNBQUVJMEVRUmhzYWhvZ0FDZ0NBQ0FBRUkwRVFSaHNhaG9nQUNnQ0FCb0xNUUVCZnlBQklBQW9BZ1FpQWtjRVFBTkFJQUFRR3hvZ0FrRm9haUlDRUs0RElBRWdBa2NOQUFzTElBQWdBVFlDQkF0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFFTmtaSWdNZ0FVOEVRQ0FBRUkwRUlnQWdBMEVCZGtrRVFDQUNJQUJCQVhRMkFnZ2dBa0VJYWlBQ1FReHFFRklvQWdBaEF3c2dBa0VRYWlRQUlBTVBDeEJ1QUFzMkFRSi9JQUJCdkNFMkFnQWdBRUgwQVdvaEFTQUFRUlJxSVFJRFFDQUJRWEJxRUJraUFTQUNSdzBBQ3lBQVFRUnFFQmthSUFBTDlBSUJBWDRnQUNBQktRSUFOd0l3SUFBZ0FTa0NDQ0lDTndJNElBS25RUUZPQkVBZ0FFR0FCMnBCMU1zUEVKTUNDeUFBS0FJOFFRRk9CRUFnQUVHQUIycEI1Y3NQRUpNQ0N3SkFBa0FnQUNnQ01DSUJRZitEQkV3RVFDQUJSU0FCUVlDQUJFWnlEUUlnQVVHQWdnUkhEUUVnQUVHQUIycEI5c3NQRUpNQ0RBSUxBa0FDUUNBQlFmK0hCRXdFUUNBQlFZQ0VCRVlOQVNBQlFZQ0dCRWNOQXlBQVFZQUhha0dlekE4UWt3SU1CQXNnQVVHQWlBUkdEUUVnQVVHQWlnUkhEUUlnQUVHQUIycEJ4c3dQRUpNQ0RBTUxJQUJCZ0FkcVFZck1EeENUQWd3Q0N5QUFRWUFIYWtHeXpBOFFrd0lNQVFzZ0FFR0FCMnBCMnN3UEVKTUNDd0pBSUFCQmdBZHFBbjhDUUNBQUtBSTRJZ0ZCLzUrQUFrd0VRQ0FCUlEwRFFmTE1EeUFCUVlDQWdBSkdEUUlhREFFTElBRkJnTUNBQWtjRVFDQUJRWUNnZ0FKSERRRkJoODBQREFJTFFaek5Ed3dCQzBHeHpROExFSk1DQ3lBQUtBSThRUUZPQkVBZ0FFR0FCMnBCeXMwUEVKTUNDd3RMQVFKL0lBQVEzd1JGQkVBZ0FCQWJHaUFBS0FJRUlnRWdBQ0lDS0FJQUVPQUVJQUFRRzBFQU5nSUFJQUFnQVVjRVFBTkFJQUVpQUNnQ0JDRUJJQUFRS2lBQklBSkhEUUFMQ3dzTEdRQWdBQkQ0QlVHanlBOFF0Z0lhSUFBUStBVWdBUkRCQkFzVUFDQUFRYUFNTmdJQUlBQkJoQXcyQWdBZ0FBc09BQ0FBRUU0YUlBQkJCRFlDREFzeEFRRi9JQUFRaXdRZ0FDZ0NBQVJBSUFBZ0FDZ0NBQkM5R1NBQUVCc2FJQUFvQWdBaEFTQUFFS3NER2lBQkVDb0xDeTRCQVg4Z0FDZ0NBQ0lDQkVBRFFDQUJJQUFvQWdRZ0FoQVZJQUFvQWhnaEFpQUFRUmhxSVFBZ0FnMEFDd3NMRWdBZ0FFSUFOd0lBSUFCQ0FEY0NDQ0FBQ3lnQkFYOGdBQkNzRGlBQUtBSUFCRUFnQUNnQ0VCb2dBQ2dDQUNFQklBQVExQWNhSUFFUUtnc0xmZ0VDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWFRZi8vLy84QklBRWlBMGtFUUJDQ0FRQUxJQU5CQTNRUUppRUZDeUFBSUFVMkFnQWdBQ0FGSUFKQkEzUnFJZ0kyQWdnZ0FDQUNOZ0lFSUFBUUl5QUZJQUZCQTNScU5nSUFJQVJCRUdva0FDQUFDMWtCQW44akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFBUStCa2lBeUFCVHdSQUlBQVExZ0lpQUNBRFFRRjJTUVJBSUFJZ0FFRUJkRFlDQ0NBQ1FRaHFJQUpCREdvUVVpZ0NBQ0VEQ3lBQ1FSQnFKQUFnQXc4TEVHNEFDeXdCQVg4Z0FTQUFLQUlFSWdKSEJFQURRQ0FBRUJzYUlBSkJlR29pQWlBQlJ3MEFDd3NnQUNBQk5nSUVDd29BSUFBb0FnUkJlR29MV1FFQ2Z5TUFRU0JySWdNa0FDQUFFQnNpQWlBRFFRaHFJQUFnQUJDYUFVRUJhaENmRGlBQUVKb0JJQUlRbmc0aUFpZ0NDQ0FCRUtVRklBSWdBaWdDQ0VFSWFqWUNDQ0FBSUFJUStSa2dBaENkRGlBRFFTQnFKQUFMRHdBZ0FDZ0NBQ0FCUVF4c0VKUUNDelFBSUFBb0FnQWFJQUFvQWdBZ0FCREVCRUVVYkdvYUlBQW9BZ0FnQUJBM1FSUnNhaG9nQUNnQ0FDQUFFTVFFUVJSc2Fob0xHZ0FnQVVVRVFFRUFEd3NnQUNBQ0xBQUFFTllESUFFUXpRWUxWQUVDZnlNQVFSQnJJZ1FrQUNBQ0JFQURRQ0FESUFJZ0FCQWpJQUpCRUdvZ0FSQ1BCQ0lGR3lFRElBSkJCRUVBSUFVYmFpZ0NBQ0lDRFFBTEN5QUVRUWhxSUFNUU1TZ0NBQ0VBSUFSQkVHb2tBQ0FBQ3hFQUlBQWdBU0FDRUJNZ0FoQWZFSnNIQ3c0QUlBQWdBU0FCRUtBQkVMc09DemdCQVg4Z0FDZ0NCQ0lCQkVBZ0FSRGZBeUFCS0FJQUJFQWdBUkMwRGlBQkVEc2FJQUVvQWdBYUlBRVExZ0lhQ3dzZ0FFRUFOZ0lFQ3hJQUlBQkJoTEFQTmdJQUlBQVFxUTRnQUFzU0FDQUFJQUFvQWdBZ0FVRURkR28yQWdBTERBQWdBQ0FBS0FJRUVKWUtDejBCQVg4Z0FTQUNSd1JBSUFNb0FnQWhCQU5BSUFBZ0JFRjRhaUFDUVhocUlnSVF4Z1FnQXlBREtBSUFRWGhxSWdRMkFnQWdBU0FDUncwQUN3c0xKQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ2dnQVNnQ0NDRUFJQUZCRUdva0FDQUFDeUVBSUFBUXJBNGdBQ2dDQUFSQUlBQW9BaEFhSUFBb0FnQWFJQUFRMUFjYUN3c1NBQ0FBRUs0T0lBRVFyZzRnQWhDMkRob0xDUUFnQUNBQkVLc09Dd2tBSUFBZ0FSQ1NHZ3VRQWdFRmZ5TUFRVEJySWdRa0FDQUVJQUUyQWlnZ0FDZ0NBQ0VCSUFRZ0FCQkFOZ0lJSUFFZ0JFRW9haUFFUVFocUVKd0hRUU4wYWlFQkFrQWdBaUFERUxJT0lnVkJBVWdOQUNBRklBQVFHeWdDQUNBQUtBSUVJZ2RyUVFOMVRBUkFJQVFnQXpZQ0NDQUZJQWNnQVdzaUNFRURkU0lHU2dSQUlBUWdBallDQ0NBRVFRaHFJQVlRc1E0Z0FDQUVLQUlJSUFNZ0JTQUdheENXR2lBSVFRRklEUUlMSUFBZ0FTQUhJQUVnQlVFRGRHb1FsUm9nQWlBRUtBSUlJQUVRc0E0TUFRc2dBQkE3SVFZZ0JFRUlhaUFBSUFBUW1nRWdCV29RbmdZZ0FTQUFLQUlBYTBFRGRTQUdFTlVISWdVZ0FpQURFSlFhSUFBZ0JTQUJFSk1hSVFFZ0JSQ3ZEZ3NnQVJCaEdpQUVRVEJxSkFBTERBQWdBQ0FBS0FJQUVOWUhDem9CQVg4Z0FTQUNSd1JBSUFNb0FnQWhCQU5BSUFBZ0JDQUJFTVlFSUFNZ0F5Z0NBRUVJYWlJRU5nSUFJQUZCQ0dvaUFTQUNSdzBBQ3dzTEpnRUJmeUFCSUFCcklnRkJBM1VoQXlBQkJFQWdBaUFBSUFFUTVBTUxJQUlnQTBFRGRHb0xHUUVCZnlBQUVKb0JJUUlnQUNBQkVOWUhJQUFnQWhDbUNRc2lBQ01BUVJCcklnTWtBQ0FBRURzZ0FTQUNJQUJCQkdvUXRRNGdBMEVRYWlRQUN4UUJBWDhEUUNBQUlnRW9BZ0FpQUEwQUN5QUJDd29BSUFBdEFBUVF4d1FMWndFQ2Z5TUFRUkJySWdRa0FBSkFJQUFRWFNJRElBSlBCRUFnQUJBVElnTWdBU0FDRUlFR0lBUkJBRG9BRHlBQ0lBTnFJQVJCRDJvUWxBRWdBQ0FDRUljRERBRUxJQUFnQXlBQ0lBTnJJQUFRSHlJQVFRQWdBQ0FDSUFFUXJna0xJQVJCRUdva0FBc2lBUUYvUVFFaEFRSkFJQUFRbFFJTkFDQUFFSUlHRFFBZ0FCQ0ZBeUVCQ3lBQkN6NEJBWDlCQVNFQkFrQWdBQkNwQ1EwQUlBQVFqZ1FOQUNBQUVMRUREUUFnQUJDZkJ3MEFJQUF0QURBTkFDQUFMUUFsRFFBZ0FDMEFKaUVCQ3lBQkN3MEFJQUF0QUE5QkIzRVFuZ2NMSFFFQmZ3TkFJQUFpQVNnQ0FDSUFEUUFnQVNnQ0JDSUFEUUFMSUFFTERRQVExUU5CRUJDVUFoQ1RBUXMrQVFGL0l3QkJFR3NpQWlRQUlBSWdBUkFpSWdFZ0FDZ0NCQkNKQVJvZ0FDQUJFQk1Rd2dFZ0FDZ0NBQ2dDRUJFQkFDQUJFQmthSUFKQkVHb2tBQXV4QVFFRGZ5TUFRUkJySWdJa0FDQUNJQUU2QUE4Q1FBSkFBa0FDZnlBQUVNRUJJZ1JGQkVCQkNpRUJJQUF0QUFzTUFRc2dBQkRDQkVGL2FpRUJJQUFvQWdRTElnTWdBVVlFUUNBQUlBRWdBU0FCRUo4YUlBQVF3UUZGRFFFTUFnc2dCQTBCQ3lBQUlRRWdBQ0FEUVFGcUVOUUJEQUVMSUFBb0FnQWhBU0FBSUFOQkFXb1F2QUVMSUFFZ0Eyb2lBQ0FDUVE5cUVKUUJJQUpCQURvQURpQUFRUUZxSUFKQkRtb1FsQUVnQWtFUWFpUUFDMGdBSUFBUXNCb2dBRUVBT2dBd0lBQkJnSEEyQWl3Z0FFRUFOZ0FsSUFCQkFEb0FKQ0FBSUFBb0FpQkJnSURnRDNJMkFpQWdBQkN1R2lBQUlBQW9BaUJCZ1A0ZmNqWUNJQXQyQVFKL0l3QkJJR3NpQVNRQUFuOUJBU0FBSWdJZ0FDZ0NBQ2dDY0JFQUFBUi9JQUlvQWp4QkFCQ0RCZ1ZCQUFzTkFCcEJBQ0FBSUFBb0FnQW9Bb2dCRVFBQVJRMEFHaUFBS0FKQUVFQWhBaUFBS0FKQUVESWhBQ0FCSUFFdEFCQTZBQThnQWlBQUVLVWFDeUVBSUFGQklHb2tBQ0FBQzF3QkFuOGpBRUVnYXlJQkpBQUNmMEVCSUFBUXB4b05BQnBCQUNBQUlBQW9BZ0FvQW9nQkVRQUFSUTBBR2lBQUtBSkFFRUFoQWlBQUtBSkFFREloQUNBQklBRXRBQkE2QUE4Z0FpQUFFS1lhQ3lFQ0lBRkJJR29rQUNBQ0MyVUJBbjhqQUVFZ2F5SUJKQUFDZjBFQklBQWdBQ2dDQUNnQ21BRVJBQUFOQUJwQkFDQUFJQUFvQWdBb0FvZ0JFUUFBUlEwQUdpQUFLQUpBRUVBaEFpQUFLQUpBRURJaEFDQUJJQUV0QUJBNkFBOGdBaUFBRUtnYUN5RUFJQUZCSUdva0FDQUFDMlVCQW44akFFRWdheUlCSkFBQ2YwRUJJQUFnQUNnQ0FDZ0NsQUVSQUFBTkFCcEJBQ0FBSUFBb0FnQW9Bb2dCRVFBQVJRMEFHaUFBS0FKQUVFQWhBaUFBS0FKQUVESWhBQ0FCSUFFdEFCQTZBQThnQWlBQUVLa2FDeUVBSUFGQklHb2tBQ0FBQzJRQkFuOGpBRUVnYXlJQkpBQUNmMEVCSUFBZ0FDZ0NBQ2dDZUJFQUFBMEFHa0VBSUFBZ0FDZ0NBQ2dDaUFFUkFBQkZEUUFhSUFBb0FrQVFRQ0VDSUFBb0FrQVFNaUVBSUFFZ0FTMEFFRG9BRHlBQ0lBQVFxaG9MSVFBZ0FVRWdhaVFBSUFBTGRRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnZ0NmMEVCQW45QkFDQUFJZ0VnQWlnQ0NFWU5BQm9nQVNBQktBSUFLQUtJQVJFQUFBc05BQm9nQWlnQ0NDRUJRUUFnQUNBQUtBSUFLQUtJQVJFQUFFVU5BQm9nQUNnQ1FCQkFJQUFvQWtBUU1pQUJFS3NhQ3lFQUlBSkJFR29rQUNBQUMyUUJBbjhqQUVFZ2F5SUJKQUFDZjBFQklBQWdBQ2dDQUNnQ2NCRUFBQTBBR2tFQUlBQWdBQ2dDQUNnQ2lBRVJBQUJGRFFBYUlBQW9Ba0FRUUNFQ0lBQW9Ba0FRTWlFQUlBRWdBUzBBRURvQUR5QUNJQUFRckJvTElRQWdBVUVnYWlRQUlBQUxZQUVCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ2dDZjBFQklBQXRBQVFnQWlnQ0NFWU5BQm9nQWlnQ0NDRUJRUUFnQUNBQUtBSUFLQUtJQVJFQUFFVU5BQm9nQUNnQ1FCQkFJQUFvQWtBUU1pQUJFSzBhQ3lFQUlBSkJFR29rQUNBQUN3b0FJQUFvQWxCQkFFY0xJZ0FnQUMwQUJFRjhha0gvQVhFaUFFRUpUUVJBUWY4RklBQjJRUUZ4RHd0QkFBc05BQ0FBTFFBRVFYOXFRUU5KQ3cwQUlBQXRBQVJCY1dwQkFra0xEZ0FnQUMwQUJVSHdBWEZCQUVjTERBQWdBQ0FBS0FJRUVMb2FDeDhBSUFBb0FnUWlBRUVVZEVILy8vLy9BVW9nQUVHQWdNQUFjVUVVZG5JTFNRRUJmd0pBSUFBZ0FDZ0NBQ2dDYUJFQUFBMEFJQUFnQUNnQ0FDZ0NiQkVBQUEwQUlBQWdBQ2dDQUNnQ2lBRVJBQUFOQUNBQUlBQW9BZ0FvQW5BUkFBQkJBWE1oQVFzZ0FRc0hBQ0FBS0FKUUN6RUJBbjlCQVNFQ0lBQVFZRUVBU2dSQUEwQWdBQ0FCRUt3RklBSnNJUUlnQVVFQmFpSUJJQUFRWUVnTkFBc0xJQUlMRFFBZ0FDZ0NCRUVNZEVFY2RRc05BQ0FBS0FJRVFSQjBRUngxQ3cwQUlBQW9BZ1JCRkhSQkhIVUxDQUFnQUVITUFHb0xDQUFnQUMwQUJFVUxIQUVDZndOQUlBRWlBa0VCYWlFQklBQWdBbW90QUFBTkFBc2dBZ3NIQUNBQVFRUklDelFCQVg4akFFRVFheUlESkFBZ0FCQ2RCeUFESUFJMkFnd2dBeUFCTmdJSUlBQW9BZ1FnQTBFSWFoQ1BHaUFEUVJCcUpBQUxDd0FnQUNBQlFRQVEzUTRMSFFFQ2YwRVFFRVlpQWhDekF5RURJQUFnQWpZQ1BDQURJQUVRL3dVTEJ3QWdBRUVEU0F0VUFRRi9Jd0JCRUdzaUFpUUFJQUlnQUJBN0VNNGFJQUlvQWdCQkNHb2dBUkNmQWlBQUlBSW9BZ0FnQWlnQ0FCREpDQ0FBRUJzaUFDQUFLQUlBUVFGcU5nSUFJQUlRWHhvZ0FoRENDaUFDUVJCcUpBQUxKZ0VCZnlBQUVEc2FJQUFvQWdBaUFTQUJFT0FFSUFBUUd5SUFJQUFvQWdCQmYybzJBZ0FMQ1FBZ0FDQUJOZ0pBQzZRRUFRaC9Jd0JCSUdzaUNDUUFRUUFnQTBFQ2RFSFF4UTVxS0FJQUlnY1FzZ2toQmtHT3VRNGhCQUpBQWtBZ0EwRitSZ1JBSUFZaEFnd0JDeUFDTGdFQUlRSWdDQ0FITmdJQVFRRWhCUUpBQWtBZ0FrRUJkRUdBekF0cUxnRUFJZ2RCdTN4R0RRQkJBQ0FIYXlBSFFSOTFjU0lEUVpySkFDQUhheUlDUVpzRElBSkJtd05JR3lJTFRnMEFJQVloQWdOQUFrQWdBMEVCUmcwQUlBTWdBeUFIYWtFQmRFR3c0Z3RxTGdFQVJ3MEFJQVZCQlVZTkFrRUNJUWtnQ0NBRlFRSjBhaUFEUVFKMFFkREZEbW9vQWdBaUNqWUNBRUVBSUFvUXNna2lDaUFDYWlJQ0lBcEpEUVVnQlVFQmFpRUZDeUFEUVFGcUlnTWdDMGdOQUFzZ0JVRi9haUlEUVFSTERRSUNRQUpBQWtBQ1FDQURRUUZyRGdRQUFRSURCUXRCazdFUElRUU1CUXRCdmJFUElRUU1CQXRCN2JFUElRUU1Bd3RCbzdJUElRUU1BZ3NnQmlFQ0MwSDNzQThoQkVFQklRVUxRUUloQ1NBRUVOc09JZ01nQW1vaUJpQURTU0lERFFBZ0FDZ0NBQ0FDSUFZZ0F4c2lBa2tFUUVFQklRa2dBRUYvSUFKQkFYUWlBQ0FDSUFCTEd6WUNBQXdCQ3lBQktBSUFJUU5CQUNFSlFRQWhBQU5BSUFNZ0JDMEFBQ0lHT2dBQUFrQWdCa0VsUndSQVFRRWhBVUVCSVFJZ0JrVU5Bd3dCQ3dKQUlBQWdCVTROQUNBRUxRQUJRZk1BUncwQVFRSWhBaUFESUFnZ0FFRUNkR29vQWdBUXNna2hBU0FBUVFGcUlRQU1BUXRCQVNFQlFRRWhBZ3NnQWlBRWFpRUVJQUVnQTJvaEF3d0FBQXNBQ3lBSVFTQnFKQUFnQ1F0REFRRi9Jd0JCRUdzaUFTUUFJQUFRR3hvZ0FVSC8vLy8vQXpZQ0RDQUJRZi8vLy84SE5nSUlJQUZCREdvZ0FVRUlhaENrQVNnQ0FDRUFJQUZCRUdva0FDQUFDMW9BSUFCQjJKSVBOZ0lBSUFCQkFEWUNVQ0FBUVFBMkFrUWdBQ0FCTmdKQUlBQkJBRFlDUENBQUlBQW9BZ1JCZ0lDQWZuRkJqd0p5TmdJRUlBQkJ6QUJxRUlvRElBQkJDR29RaVFNZ0FDQUNFQk1Rd2dFMkFrZ2dBQXNsQUNBQUVJb0RJQUFnQUNnQ0FFSC8vL2QrY1VHQWdJZ0JRWUNBZ0FFZ0FSdHlOZ0lBQ3p3QkFYOENRQ0FCS0FJQUlnSkZEUUFnQWlBQVFjQUVhaENZQWtVTkFDQUFLQUlvRUNVUUgwVU5BQ0FCSUFBb0FpZ1FKUkFURU1JQk5nSUFDd3VhQVFFRGZ5TUFRU0JySWdJa0FDQUNJQUZCZjJvMkFoQWdBaUFCUVFGMFFaQ0pEMm92QVFBMkFoUkJpUEVSS0FJQUlnTkJucElQSUFKQkVHb1F6QUlnQVVIZ2tnNXFMUUFBSWdFRVFBTkFJQUlnQkVFQmFpSUVOZ0lBSUFOQnhaSVBJQUlRekFJZ0F5QUFJQVFnQVd0QkFYUnFMZ0VBUVFGMFFjQzVEbW92QVFBUTBnUkJDaUFERU1BRElBRWdCRWNOQUFzTElBSkJJR29rQUF2cW13SUNHMzhCZmlNQVFhRFFBbXNpQWlRQUlBSkIwTTRDYWtFQVFkQUJFTjBCR2lBQ0lBSkI4QU5xTmdMc0F5QUNRWUFCTmdMb0EwR0k4UkVvQWdBaEMwR005QklvQWdBRVFFSEF5d3RCRDBFQklBc1E5d0lhQ3lBQVFiZ0ZhaUVhSUFCQitBQnFJUlFnQUVIUUFHb2hFU0FBUWVnQWFpRVdJQUJCakFGcUlSc2dBRUhzQldvaEVpQUNRY2dGYWlFWklBSkJrQVZxSVFZZ0FrR29CbW9oRnlBQ1FaUUZhaUVUSUFKQmpBVnFJUU5CeUFFaEZTQUNRY0FHYWlJQklSZ2dBa0hBeXdKcUlnZ2hERUYrSVEwRFFFR005QklvQWdBRVFDQUNJQWMyQW9BQ0lBdEIwTXNMSUFKQmdBSnFFTXdDQ3lBSUlBYzdBUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FFSC94QTRDZndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBTUlCVkJBWFFpQkdwQmZtb2dDRTBFUUNBVlFZL09BRXNOQnlBRVFaRE9BQ0FFUVpET0FFa2JJaFZCMGdGc1FjOEJhaENiQVNJRVJRMEhJQVFnRENBSUlBeHJRUUYxSWdGQkFXb2lDRUVCZEJBOUlnUWdGVUVCZENJRlFjOEJha0gvL3dOeFFkQUJia0hRQVd4cUlCZ2dDRUhRQVd3UVBTRVlJQUpCd01zQ2FpQU1Sd1JBSUF3UUtnc2dCQ0FCUVFGMGFpRUlRWXowRWlnQ0FBUkFJQUlnRlRZQzhBRWdDMEhqeXdzZ0FrSHdBV29RekFJTElBRkIwQUZzSUJocUlRRWdCQ0FGYWtGK2FpQUlUUTBCSUFRaERBc2dCMEdDQTBZTkJ5QUhRUUYwSWc1QmdNd0xhaThCQUNJRVFidjhBMFlOQXlBRVFSQjBRUkIxSVE4Q2Z5QU5RWDVHQkVCQmpQUVNLQUlBQkVCQnJ0Y0xRUkZCQVNBTEVQY0NHZ3NnQWtIUXpnSnFJQUFRb2hBaERRc2dEVUVBVEFzRVFFRUFJUVZCalBRU0tBSUFSUTBDUWNEWEMwRVZRUUVnQ3hEM0Fob01BZ3RCQWlFRklBMUJtUVZOQkVBZ0RVRUJkRUhnMXd0cUx3RUFJUVVMUVl6MEVpZ0NBRVVOQWlBQ1FaamlDellDNEFFZ0MwR1U0Z3NnQWtIZ0FXb1F6QUlnQ3lBRkVOSUVRUW9nQ3hEQUF3d0NDeUFFSVF3TUJndEJBQ0VOQ3lBRklBOXFJZzlCbWNrQVN3MEFJQVVnRDBFQmRDSVBRYkRpQzJvdUFRQkhEUUFnRDBIdzlBeHFMZ0VBSWdkQkFFd0VRRUVBSUFkcklRNE1BZ3RCalBRU0tBSUFCRUFnQWtHa2h3NDJBdEFCSUF0QmxPSUxJQUpCMEFGcUVNd0NJQXNnQlJEU0JFRUtJQXNRd0FNTElCQkJmMnBCQUNBUUd5RVFJQUZCMEFGcUlnRWdBa0hRemdKcVFkQUJFRDBhUVg0aERReGVDeUFPUWJDSERtb3ZBUUFpRGtVTkFRc2dBa0h3QkdvZ0FVRUJJQTVCNEpJT2FpMEFBQ0lQYTBIUUFXeHFRZEFCRUQwYVFZejBFaWdDQUFSQUlBZ2dEaERwRGdzZ0RrRithaUlFUWNRRVN3MWJBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUUZyRHNRRUFRSURCQVVHQndnSkNnc01EUTRQRUJFU0V4UVZGaGNZR1JvYkhCMGVIeUFoSWlNa0pTWW5LQ2txS3l3dExpOHdNVEl6TkRVMk56ZzVPanM4UFQ0L1FFRkNRMFJGUmtkSVNVcExURTFPVDFCUlVsTlVWVlpYV0ZsYVcxeGRYbDlnWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHA3ZkgxK2Y0QUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFac0JuQUdkQVo0Qm53R2dBYUVCb2dHakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0hKQk1rRXVBRzVBYm9CdXdHOEFiMEJ2Z0cvQWNBQndRSENBY01CeEFIRkFjWUJ4d0hJQWNrQnlnSExBY3dCelFIT0FjOEIwQUhSQWRJQjB3SFVBZFVCMWdIWEFkZ0IyUUhhQWRzQjNBSGRBZDRCM3dIZ0FlRUI0Z0hqQWVRQjVRSG1BZWNCNkFIcEFlb0I2d0hzQWUwQjdnSHZBZkFCOFFIeUFmTUI5QUgxQWZZQjl3SDRBZmtCK2dIN0Fmd0IvUUgrQWY4QmdBS0JBb0lDZ3dLRUFvVUNoZ0tIQW9nQ2lRS0tBb3NDakFLTkFvNENqd0tRQXBFQ2tnS1RBcFFDbFFLV0FwY0NtQUtaQXBvQ213S2NBcDBDbmdLZkFxQUNvUUtpQXFNQ3BBS2xBcVlDcHdLb0Fxa0NxZ0tyQXF3Q3JRS3VBcThDc0FLeEFySUNzd0swQXJVQ3RnSzNBcmdDdVFLNkFyc0N2QUs5QXI0Q3Z3TEFBc0VDd2dMREFzUUN4UUxHQXNjQ3lBTEpBc29DeXdMTUFzMEN6Z0xQQXRBQzBRTFNBdE1DMUFMVkF0WUMxd0xZQXRrQzJnTGJBdHdDM1FMZUF0OEM0QUxoQXVJQzR3TGtBdVVDNWdMbkF1Z0M2UUxxQXVzQzdBTHRBdTRDN3dMd0F2RUM4Z0x6QXZRQzlRTDJBdmNDK0FMNUF2b0Mrd0w4QXYwQy9nTC9Bb0FEZ1FPQ0E0TURoQU9GQTRZRGh3T0lBNGtEaWdPTEE0d0RqUU9PQTQ4RGtBT1JBNUlEa3dPVUE1VURsZ09YQTVnRG1RT2FBNXNEbkFPZEE1NERud09nQTZFRG9nT2pBNlFEcFFPbUE2Y0RxQU9wQTZvRHF3T3NBNjBEcmdPdkE3QURzUU95QTdNRHRBTzFBN1lEdHdPNEE3a0R1Z083QTd3RHZRTytBNzhEd0FQQkE4SUR3d1BFQThVRHhnUEhBOGdEeVFQS0E4c0R6QVBOQTg0RHp3UFFBOUVEMGdQVEE5UUQxUVBXQTljRDJBUFpBOW9EMndQY0E5MEQzZ1BmQStBRDRRUGlBK01ENUFQbEErWUQ1d1BvQStrRDZnUHJBK3dEN1FQSUJNY0V4Z1RGQk1RRXd3VENCTUVFd0FTL0JMNEV2UVM4QkxzRXVnUzVCTGdFdHdTMkJMVUV0QVN6QkxJRXNRU3dCSzhFcmdTdEJLd0Vxd1NxQktrRXFBU25CS1lFcFFTa0JLTUVvZ1NoQktBRW53U2VCSjBFbkFTYkJKb0VtUVNZQkpjRWxnU1ZCSlFFa3dTU0JKRUVrQVNQQkk0RWpRU01CSXNFaWdTSkJJZ0Vod1NHQklVRWhBU0RCSUlFZ1FTQUJQOEQvZ1A5QS93RCt3UDZBL2tEK0FQM0EvWUQ5UVAwQXdBTElBSWdBQ0FCSUFFb0FoZ2dBU2dDRUJEMUR6WUNoQVVNeUFRTElBSWdBU2dDRkRZQ2hBVU14d1FMSUFJZ0FVSEVmbW9vQWdBaUJEWUNoQVVnQkNBRUtBSUFLQUlVRVFBQVJRM0dCQ0FDS0FLRUJTSUVJQVFvQWdBb0FoUVJBQUFRdVFrTXhnUUxJQUlnQUNnQ0tDQUJLd01RUVFFZ0FVRUJFTndGTmdLRUJRekZCQXNnQWlBQUtBSW9JQUVvQWhBZ0FVRUJFUFVFTmdLRUJRekVCQXNnQUNBQlFhZVhEaUFBS0FJQUtBSTRFUVlBSUFJZ0FDZ0NLQ0FCS0FJUUlBRkJBUkNmQ0RZQ2hBVU13d1FMSUFJZ0FDZ0NLQ0FCTFFBUUlBRkJBUkNmQXpZQ2hBVU13Z1FMSUFBZ0FVRzRsdzVCQUNBQUtBSUFLQUo4RVFRQUlBSWdBQ2dDS0NBQktBSVFJQUZCQVJEMUJEWUNoQVVNd1FRTElBQWdBVUc0bHc1QkFDQUFLQUlBS0FKOEVRUUFJQUlnQUNnQ0tDQUJLQUlRSUFGQkFSQ2ZDRFlDaEFVTXdBUUxJQUFnQVVIT2x3NUJBQ0FBS0FJQUtBSndFUVFBSUFJZ0FDZ0NLQ0FCS1FNUUlBRVF4UTAyQW9RRkRMOEVDeUFBSUFGQjVaY09RUUFnQUNnQ0FDZ0NjQkVFQUNBQ0lBQW9BaWdnQVNrREVDQUJFUEVJTmdLRUJReStCQXNnQUNBQlFZV1lEa0VBSUFBb0FnQW9BbmdSQkFBZ0FpQUFLQUlvSUFFdUFSQWdBUkR6RkRZQ2hBVU12UVFMSUFBZ0FVR2NtQTVCQUNBQUtBSUFLQUo0RVFRQUlBSWdBQ2dDS0NBQkx3RVFJQUVRNnhRMkFvUUZETHdFQ3lBQUlBRkJCa0c4bUE0UVNpQUFLQUpNRUNSRkJFQWdBQ0FCUWJ5WURpQUFLQUlBS0FKQUVRWUFDeUFDSUFBb0FpZ2dBU3NERUVFQ0lBRkJBUkRjQlRZQ2hBVU11d1FMSUFBZ0FVSExtQTVCQUNBQUtBSUFLQUpFRVFRQUlBSWdBQ2dDS0NBQkt3TVFRUU1nQVVFQkVOd0ZOZ0tFQlF5NkJBc2dBaUFCS0FJVU5nS0VCUXk1QkFzZ0FpQUFJQUZCNEh4cUlBRkJwSHRxS0FJQUlBRkJ4SDVxS0FJQUVQTVBOZ0tFQlF5NEJBc2dBaUFCS0FJVU5nS0VCUXkzQkFzZ0FpQUFJQUVnQVVIMGZHb29BZ0FnQVNnQ0VCRHNEellDaEFVTXRnUUxJQUFnQVVIRWZtb2lCQkMrQlNBQUlBRkIzcGdPSUFRb0FnQWdBQ2dDQUNnQzdBRVJDUUFhSUFJZ0FDQUJRZDZZRGtFS0lBUW9BZ0FRdkFVMkFvUUZETFVFQ3lBQUlBRkJ4SDVxSWdRUXZnVWdBQ0FCUWVHWURpQUVLQUlBSUFBb0FnQW9BdXdCRVFrQUdpQUNJQUFnQVVIaG1BNUJDeUFFS0FJQUVMd0ZOZ0tFQlF5MEJBc2dBQ0FCS0FJVVFlU1lEaEMvQnlBQ0lBRW9BaFEyQW9RRkRMTUVDeUFDSUFBZ0FTQUJLQUljSUFFb0FoUVE2UTgyQW9RRklBRW9BaHdpQkVVTnNnUWdCQ0FFS0FJQUtBSUlFUVVBRExJRUN5QUNRZkFFYWlBQlFkQUJFRDBhRExFRUN5QUNRZkFFYWlBQlFiQitha0hRQVJBOUdpQUNJQUVwQXdnM0EvZ0VJQUlnQVNrREFEY0Q4QVFNc0FRTElBSkI4QVJxSUFGQnNINXFRZEFCRUQwYUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQXl2QkFzZ0FrSHdCR29nQVVHd2ZtcEIwQUVRUFJvTXJnUUxJQUpCOEFScUlBRkIwQUVRUFJvTXJRUUxJQUpCQURZQ2tBTkIxQUFRUmlJRVFRQkJBRUVCUVFCQkFFRUFFRVVoQlNBQ1FRQTJBcGdESUFJZ0JEWUNsQU1nQlNBQktBSVVJZ1FnQkNnQ0FDZ0NlQkVBQUJDUEFTQUJRY3grYWlJRUtBSUFJZ1VnQWtHUUEyb2dCU2dDQUNnQ1dCRUJBQ0FDSUFRb0FnQTJBb3dGSUFJZ0FTZ0NGRFlDaEFVTXJBUUxJQUpCQURZQ2tBTkIxQUFRUmlJRVFRQkJBRUVCUVFCQkFFRUFFRVVoQlNBQ1FRQTJBcGdESUFJZ0JEWUNsQU1nQlNBQktBSVVJZ1FnQkNnQ0FDZ0NlQkVBQUJDUEFTQUJRZng4YWlJRUtBSUFJZ1VnQWtHUUEyb2dCU2dDQUNnQ1dCRUJBQ0FDSUFRb0FnQTJBb3dGSUFJZ0FDZ0NLQ0FCUWZSOGFpZ0NBQ0FCS0FJVUlBRkJzSDVxRU40Q05nS0VCUXlyQkFzZ0FrSHdCR29nQVVHd2ZtcEIwQUVRUFJvTXFnUUxJQUpCQURZQ2hBVWdBaUFBSUFGQnVBRnFJQUZCSEdvUTZRazJBb3dGREtrRUN5QUNRUUEyQW9RRklBSkJBRFlDakFVQ1FBSkFJQUVvQWhRaUJDQUVLQUlBS0FJc0VRQUFJZ1FFUUVHWUFSQkdJZ1VnQkNBRUtBSUFLQUs0QVJFQUFDQUNRWkFEYWtFSVFRQkJBVUVBUVFCQkFCQkZJZ2RCeFFRUXJnVWFJQUlnQlRZQ2pBVWdCeEExR2lBQ0lBUWdCQ2dDQUNnQ3ZBRVJBQUEyQW9RRkRBRUxJQUVvQWhRaUJDQUVLQUlBS0FJd0VRQUFJZ1FFUUNBQUlBUWdCQ2dDQUNnQ0FCRUFBQ0FFSUFRb0FnQW9Bc0FCRVFBQUVKZ0VRWmdCRUVZaUJTQUVJQVFvQWdBb0FzQUJFUUFBSUFKQmtBTnFRUUJCQUVFQlFRQkJBRUVBRUVVaUIwRUFFSzRGSVFRZ0J4QTFHaUFDSUFVMkFvd0ZEQUlMSUFBZ0FTZ0NGQ0lFSUFRb0FnQW9BZ0FSQUFCQjU1Z09RWnFaRGtHYW1RNUJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpZ0NqQVVoQkFzZ0JBMm9CRUdhbVE0UXdnRWhCRUdZQVJCR0lnVWdCQ0FDUVpBRGFrRUFRUUJCQVVFQVFRQkJBQkJGSWdSQkFCQ3VCUm9nQWlBRk5nS01CU0FFRURVYURLZ0VDeUFDUVFBMkFvUUZJQUlnQUNBQlFiZ0JhaUFCUVJ4cUVPa0pOZ0tNQlF5bkJBc2dBQ0FCSWdSQkZHb1F2Z1VnQWlBQktBSVVOZ0tFQlNBQktBSVVJZ1VnQlNnQ0FDZ0NMQkVBQUNJRlJRMm1CQ0FBSUFRb0FoUWlCQ0FFS0FJQUtBSUFFUUFBUVp1WkRpQUZJQVVvQWdBb0FyZ0JFUUFBRUJOQm1wa09RUUFnQUNnQ0FDZ0NvQUVSQWdBTXBnUUxJQUFnQVVHd2Ztb2lCRUhlbUE0Z0FTZ0NGQ0FBS0FJQUtBTHNBUkVKQUJvZ0FpQUFJQVJCM3BnT1FRd2dBU2dDRkJDOEJUWUNoQVVNcFFRTElBQWdBVUd3Zm1vaUJFSGhtQTRnQVNnQ0ZDQUFLQUlBS0FMc0FSRUpBQm9nQWlBQUlBUkI0WmdPUVEwZ0FTZ0NGQkM4QlRZQ2hBVU1wQVFMSUFGQndINXFLQUlBSWdRRVFDQUNRUUE3QVpBREFrQWdCRUY2YWlJRlFRTkxEUUFDUUFKQUFrQWdCVUVCYXc0REFRTUNBQXNnQWtFdE9nQ1FBd3dDQ3lBQ1FTRTZBSkFEREFFTElBSkIvZ0E2QUpBREN5QUNJQUFnQVVHd2Ztb2dBa0dRQTJvZ0JDQUJLQUlVRUx3Rk5nS0VCUXlrQkFzZ0FpQUJLQUlVSWdRMkFvUUZJQVFnQkNnQ0FDZ0NGQkVBQUVVTm93UWdBaWdDaEFVaUJDQUVLQUlBS0FJVUVRQUFFTGtKREtNRUN5QUNJQUVwQXdnM0EvZ0VJQUlnQVNrREFEY0Q4QVFnQWtFQU5nS0FCUXlpQkFzZ0FpQUJLUU1JTndQNEJDQUNJQUVwQXdBM0EvQUVJQUpCQmpZQ2dBVU1vUVFMSUFJZ0FTa0RDRGNEK0FRZ0FpQUJLUU1BTndQd0JDQUNRUWMyQW9BRkRLQUVDeUFDSUFFcEF3ZzNBL2dFSUFJZ0FTa0RBRGNEOEFRZ0FrRUpOZ0tBQlNBQUlBRkJ0SmtPSUFBb0FnQW9BamdSQmdBTW53UUxJQUlnQVNnQ0ZEWUNoQVVNbmdRTElBSWdBQ0FCUWJCK2FrSEFtUTVCbVFFZ0FVSDBmR29vQWdBZ0FTZ0NGQkRnQVNJRU5nS0VCU0FFRFowRUlBSWdBVUhnZkdvb0FoUTJBb1FGREowRUN5QUNJQUFnQVVHd2ZtcEJ3cGtPUVpvQklBRkI5SHhxS0FJQUlBRW9BaFFRNEFFaUJEWUNoQVVnQkEyY0JDQUNJQUZCNEh4cUtBSVVOZ0tFQlF5Y0JBc2dBQ0FCUWJCK2FpSUVRY1NaRGlBQUtBSUFLQUk0RVFZQUlBSWdBQ0FFUWNTWkRrR2JBU0FCUWZSOGFpZ0NBQ0FCS0FJVUVPQUJJZ1EyQW9RRklBUU5td1FnQWlBQlFlQjhhaWdDRkRZQ2hBVU1td1FMSUFJZ0FTZ0NGRFlDaEFVTW1nUUxJQUlnQUNBQlFiQitha0hHbVE1Qmx3RWdBVUgwZkdvb0FnQWdBU2dDRkJEZ0FTSUVOZ0tFQlNBRURaa0VJQUlnQVVIZ2ZHb29BaFEyQW9RRkRKa0VDeUFDSUFBZ0FVR3dmbXBCeUprT1FaZ0JJQUZCOUh4cUtBSUFJQUVvQWhRUTRBRWlCRFlDaEFVZ0JBMllCQ0FDSUFGQjRIeHFLQUlVTmdLRUJReVlCQXNnQWlBQktBSVVOZ0tFQlF5WEJBc2dBQ0FCUWJCK2FpSUVRY3FaRGlBQUtBSUFLQUk0RVFZQUlBSWdBQ0FFUWRtWkRrR2RBU0FCUWZSOGFpZ0NBQ0FCS0FJVUVPQUJJZ1EyQW9RRklBUU5sZ1FnQWlBQlFlQjhhaWdDRkRZQ2hBVU1sZ1FMSUFBZ0FVR3dmbW9pQkVIY21RNGdBQ2dDQUNnQ09CRUdBQ0FDSUFBZ0JFSHNtUTVCbkFFZ0FVSDBmR29vQWdBZ0FTZ0NGQkRnQVNJRU5nS0VCU0FFRFpVRUlBSWdBVUhnZkdvb0FoUTJBb1FGREpVRUN5QUNJQUVvQWhRMkFvUUZESlFFQ3lBQ0lBQWdBVUd3Zm1vaUJFSHZtUTVCcFFFZ0FVSDBmR29vQWdBZ0FTZ0NGQkRnQVNJRk5nS0VCU0FGRFpNRUlBSWdBQ2dDS0VFQUlBUkJBQkNmQXpZQ2hBVU1rd1FMSUFJZ0FDQUJRYkIrYWlJRVFmR1pEa0dtQVNBQlFmUjhhaWdDQUNBQktBSVVFT0FCSWdVMkFvUUZJQVVOa2dRZ0FpQUFLQUlvUVFBZ0JFRUFFSjhETmdLRUJReVNCQXNnQWlBQUlBRkJzSDVxSWdSQjg1a09RYWNCSUFGQjlIeHFLQUlBSUFFb0FoUVE0QUVpQlRZQ2hBVWdCUTJSQkNBQ0lBQW9BaWhCQUNBRVFRQVFud00yQW9RRkRKRUVDeUFDSUFBZ0FVR3dmbW9pQkVIMm1RNUJxQUVnQVVIMGZHb29BZ0FnQVNnQ0ZCRGdBU0lGTmdLRUJTQUZEWkFFSUFJZ0FDZ0NLRUVBSUFSQkFCQ2ZBellDaEFVTWtBUUxJQUlnQVNnQ0ZEWUNoQVVNandRTElBQWdBVUd3Zm1vaUJDQUJRZlI4YWlJRktBSUFJZ2NnQnlnQ0FDZ0NlQkVBQUVINW1RNFF1d1VnQUNBRUlBVW9BZ0FpQnlBSEtBSUFLQUo0RVFBQVFZcWFEaEMyQnlBQUlBUWdCU2dDQUNJSElBY29BZ0FvQW5nUkFBQkJpcG9PRUl3R0lBQWdCQ0FGS0FJQUlnY2dCeWdDQUNnQ2VCRUFBRUdLbWc0UTJBa2dBaUFBSUFSQmlwb09RYUVCSUFVb0FnQWdBU2dDRkJEZ0FTSUZOZ0tFQlNBRkRZNEVJQUlnQUNnQ0tFRUFJQVJCQUJDZkF6WUNoQVVNamdRTElBQWdBVUd3Zm1vaUJDQUJRZlI4YWlJRktBSUFJZ2NnQnlnQ0FDZ0NlQkVBQUVINW1RNFF1d1VnQUNBRUlBVW9BZ0FpQnlBSEtBSUFLQUo0RVFBQVFZMmFEaEMyQnlBQUlBUWdCU2dDQUNJSElBY29BZ0FvQW5nUkFBQkJqWm9PRUl3R0lBQWdCQ0FGS0FJQUlnY2dCeWdDQUNnQ2VCRUFBRUdObWc0UTJBa2dBaUFBSUFSQmpab09RYUlCSUFVb0FnQWdBU2dDRkJEZ0FTSUZOZ0tFQlNBRkRZMEVJQUlnQUNnQ0tFRUFJQVJCQUJDZkF6WUNoQVVNalFRTElBSWdBU2dDRkRZQ2hBVU1qQVFMSUFBZ0FVR3dmbW9pQkVHUW1nNGdBQ2dDQUNnQ09CRUdBQ0FDSUFBZ0JFR2NtZzVCbmdFZ0FVSDBmR29vQWdBZ0FTZ0NGQkRnQVNJRU5nS0VCU0FFRFlzRUlBSWdBVUhnZkdvb0FoUTJBb1FGRElzRUN5QUNJQUVvQWhRMkFvUUZESW9FQ3lBQUlBRkJzSDVxSWdSQm5wb09JQUFvQWdBb0FqZ1JCZ0FnQWlBQUlBUkJzNW9PUWFBQklBRkI5SHhxS0FJQUlBRW9BaFFRNEFFaUJEWUNoQVVnQkEySkJDQUNJQUZCNEh4cUtBSVVOZ0tFQlF5SkJBc2dBaUFCS0FJVU5nS0VCUXlJQkFzZ0FDQUJRYkIrYWlJRVFiV2FEaUFBS0FJQUtBSTRFUVlBSUFJZ0FDQUVRY3FhRGtHZkFTQUJRZlI4YWlnQ0FDQUJLQUlVRU9BQklnUTJBb1FGSUFRTmh3UWdBaUFCUWVCOGFpZ0NGRFlDaEFVTWh3UUxJQUlnQVNnQ0ZEWUNoQVVNaGdRTElBSWdBQ0FCUWJCK2FpSUVRY3lhRGtHd0FTQUJRZlI4YWlnQ0FDQUJLQUlVRU9BQklnVTJBb1FGSUFVTmhRUWdBaUFBS0FJb1FRQWdCRUVBRUo4RE5nS0VCUXlGQkFzZ0FpQUJLQUlVTmdLRUJReUVCQXNnQWlBQUlBRkJzSDVxSWdSQno1b09RYThCSUFGQjlIeHFLQUlBSUFFb0FoUVE0QUVpQlRZQ2hBVWdCUTJEQkNBQ0lBQW9BaWhCQUNBRVFRQVFud00yQW9RRkRJTUVDeUFDSUFFb0FoUTJBb1FGRElJRUN5QUNJQUFnQVVHd2Ztb2lCRUhTbWc1QnJnRWdBVUgwZkdvb0FnQWdBU2dDRkJEZ0FTSUZOZ0tFQlNBRkRZRUVJQUlnQUNnQ0tFRUFJQVJCQUJDZkF6WUNoQVVNZ1FRTElBSWdBU2dDRkRZQ2hBVU1nQVFMSUFBZ0FDZ0NYRUVCYWpZQ1hBei9Bd3NnQUNBQUtBSmNRWDlxTmdKY0lBQWdBVUhBZVdvaUJDQUJRWVI0YWlJRktBSUFFSklHSUFBZ0JFSFZtZzRnQlNnQ0FDQUFLQUlBS0FMd0FSRUVBQ0FBSUFGQnNINXFJZ2RCMTVvT0lBRkI5SHhxSWdrb0FnQWdBQ2dDQUNnQzhBRVJCQUFnQUNBSFFkZWFEaUFCS0FJVUlBQW9BZ0FvQXZBQkVRUUFJQUlnQUNnQ0tDQUZLQUlBSUFrb0FnQWdBU2dDRkNBRUVKVVZJZ1UyQW9RRklBVU4vZ01nQWtHQUEyb2dBVUhnZkdvb0FoUVFxZ0lnQWtId0Ftb2dBU2dDRkJDcUFpQUFJQVJCMTVvT0lBSkJnQU5xSUFKQjhBSnFFTVlISUFKQjhBSnFFQmthSUFKQmdBTnFFQmthSUFJZ0FTZ0NGRFlDaEFVTS9nTUxJQUlnQVNnQ0ZEWUNoQVVNL1FNTElBQWdBVUd3Zm1vaUJDQUJRZlI4YWlJRktBSUFJZ2NnQnlnQ0FDZ0NlQkVBQUVIWm1nNFF1d1VnQUNBRUlBVW9BZ0FpQnlBSEtBSUFLQUo0RVFBQVFlcWFEaEMyQnlBQUlBUWdCU2dDQUNJSElBY29BZ0FvQW5nUkFBQkI2cG9PRU9zSklBQWdCQ0FGS0FJQUlnY2dCeWdDQUNnQ2VCRUFBRUhxbWc0UWpBWWdBQ0FFUWV5YURpQUZLQUlBSUFBb0FnQW9BdXdCRVFrQUdpQUFJQVJCN0pvT0lBRW9BaFFnQUNnQ0FDZ0M4QUVSQkFBZ0JTZ0NBQ0VGSUFRb0FoQWhCeUFCS0FJVUlRa2dBQ2dDS0NFS0lBSWdCQ2tDQ0RjREtDQUNJQVFwQWdBM0F5QWdBaUFLSUFjZ0JTQUpJQUpCSUdvUTdBVWlCVFlDaEFVZ0JRMzhBeUFDUWVBQ2FpQUJRZUI4YWlJRktBSVVFS29DSUFKQjBBSnFJQUVvQWhRUXFnSWdBQ0FFUWV5YURpQUNRZUFDYWlBQ1FkQUNhaERuQ1NBQ1FkQUNhaEFaR2lBQ1FlQUNhaEFaR2lBQ0lBVW9BaFEyQW9RRkRQd0RDeUFDSUFFcEF3ZzNBL2dFSUFJZ0FTa0RBRGNEOEFRZ0FrRzJCRFlDZ0FVTSt3TUxJQUlnQVNrRENEY0QrQVFnQWlBQktRTUFOd1B3QkNBQ1Fia0VOZ0tBQlF6NkF3c2dBaUFCS1FNSU53UDRCQ0FDSUFFcEF3QTNBL0FFSUFKQnZnUTJBb0FGRFBrREN5QUFJQUZCODVvT0lBQW9BZ0FvQWpnUkJnQWdBaUFCS1FNSU53UDRCQ0FDSUFFcEF3QTNBL0FFSUFKQnZ3UTJBb0FGRFBnREN5QUNJQUVwQXdnM0EvZ0VJQUlnQVNrREFEY0Q4QVFnQWtHM0JEWUNnQVVNOXdNTElBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWJnRU5nS0FCUXoyQXdzZ0FDQUJRZmFhRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNNRU5nS0FCUXoxQXdzZ0FDQUJRWXliRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNRRU5nS0FCUXowQXdzZ0FDQUJRYU9iRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNBRU5nS0FCUXp6QXdzZ0FDQUJRYmFiRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNJRU5nS0FCUXp5QXdzZ0FDQUJRY21iRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNFRU5nS0FCUXp4QXdzZ0FpQUJLQUlVTmdLRUJRendBd3NnQUNBQlFiQithaUlFUWR1YkRpQUJLQUlVRU84SklBSWdBQ2dDS0NBQlFmUjhhaWdDQUNBQktBSVVJQVFRbkJVaUJUWUNoQVVnQlEzdkF5QUNRY0FDYWlBQlFlQjhhaWdDRkJDcUFpQUNRYkFDYWlBQktBSVVFS29DSUFBZ0JFSGJtdzRnQWtIQUFtb2dBa0d3QW1vUXhnY2dBa0d3QW1vUUdSb2dBa0hBQW1vUUdSb2dBaUFCS0FJVU5nS0VCUXp2QXdzZ0FDQUJLQUlVUVpxWkRoRG1DU0FDSUFFb0FoUTJBb1FGRE80REN5QUFJQUZCc0g1cUlBRkJ6SDVxS0FJQVFRRVE4Z2thSUFKQkFEWUNoQVVNN1FNTElBRkJzSDVxSVFRQ1FDQUJRY1IrYWlnQ0FDSUZSUTBBSUFVZ0JTZ0NBQ2dDR0JFQUFFVU5BQ0FFS0FJVUlnVWdCU2dDQUNnQ0dCRUFBQ0lGUVFFZ0JTZ0NBQ2dDdUFFUkFRQUxJQUlnQkNnQ0ZEWUNoQVVNN0FNTElBQWdBVUdRZTJvaUJVRUJRWUlCUVFCQjNac09FQ2dnRWlFRUlBQW9Ba3dpQnlBSEVNRUNFQkVvQWdBaUJ5Z0NFRVVFUUNBSFFkQUFFQ1lpQnpZQ0VDQUhJQVJCMEFBUVBSb0xJQUFnQlNBQlFjeCthaUFCUVl0OWFpMEFBRUVIY1JER0R5QUNRUUEyQW9RRkRPc0RDeUFBSUFGQnNINXFJQUZCekg1cUtBSUFRUUJCQUJDekJ5QUNRUUEyQW9RRkRPb0RDeUFBSUFGQjRIeHFJQUZCL0h4cUtBSUFJQUZCd0g1cUtBSUFRUUFRc3djZ0FrRUFOZ0tFQlF6cEF3c2dBQ0FCUVpCN2FpQUJRYXg3YWlnQ0FDQUJRZkI4YWlnQ0FDQUJRY3grYWlnQ0FCQ3pCeUFDUVFBMkFvUUZET2dEQ3lBQUlBRkJhR29pQkNBQlFkUithaEMyQlNBQUlBUWdBVUhNZm1vUW9nOGdBa0VBTmdLRUJRem5Bd3NnQUNBQlFaaCthaUlFSUFGQnVIMXFFSmNFSUFGQndINXFLQUlBSVFVZ0FrRXdhaUFCUVlSOWFrRTBFRDBhSUFBZ0JDQUNRVEJxSUFVUXl3a2dBa0VBTmdLRUJRem1Bd3NnQUNBQlFjaDhhaUlFSUFGQjZIdHFFSmNFSUFGQnpINXFJZ1VvQWdBZ0FVSHdmR29RM0FFZ0JTZ0NBQ0VGSUFKQjVBQnFJQUZCdEh0cVFUUVFQUm9nQUNBRUlBSkI1QUJxSUFVUW93OGdBa0VBTmdLRUJRemxBd3NnQUNBQlFaaCthaEM3RHd6a0F3c2dBQ0FBS0FKWVFYOXFOZ0pZSUFBZ0FVSFFlV29vQWdBMkFyUUZJQUFnQVVHb2VXb2lCQ0FCUVpSNGFpSUZFTFlGSUFBZ0JDQUJRY2g0YWhDWEJDQWFJQVZCTkJBOUdpQUNJQUZCc0hscUtRSUFOd1A0QkNBQ0lBUXBBZ0EzQS9BRUlBSWdBVUhNZm1vb0FnQTJBb3dGRE9NREMwRVFFRVlpQkJDVEFSb2dBaUFFTmdLTUJTQUVJQUZCRUdvUTNBRU00Z01MSUFJZ0FVSDhmR29vQWdBaUJEWUNqQVVnQkNBQlFSQnFFTndCRE9FREN5QUNJQUZCekg1cUtBSUFOZ0tNQlNBQ0lBRXBBd2czQS9nRUlBSWdBU2tEQURjRDhBUU00QU1MSUFJZ0FTZ0NIRFlDakFVTTN3TUxJQUlnQVNnQ0hEWUNqQVVNM2dNTElBSWdBVUhNZm1vb0FnQTJBb3dGSUFFb0FpQWlCQ0FFS0FJQUtBSWNFUUFBQkVBZ0FVR3dmbW9vQWh3aUJDQUJRUnhxSUFRb0FnQW9BbGdSQVFBTTNnTUxJQUVvQWlBaUJFVU4zUU1nQkNBRUtBSUFLQUlFRVFVQUROMERDeUFCS0FJZ0lnUWdCQ2dDQUNnQ0hCRUFBRVVFUUNBQUlBRkJzSDVxUWZHYkRrR2duQTVCbXBrT1FRQWdBQ2dDQUNnQ29BRVJBZ0FnQVNnQ0lDSUVSUTNkQXlBRUlBUW9BZ0FvQWdRUkJRQU0zUU1MSUFJZ0FVSDhmR29pQkNnQ0FEWUNqQVVnQkNnQ0FDSUVJQUZCSEdvZ0JDZ0NBQ2dDV0JFQkFBemNBd3NnQVVHSWZXb29BZ0JCUDNFaUJFRUNUd1JBSUFBZ0FVR3dmbXBCcFp3T0lBUVEwd0pCbXBrT1FRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFGQmtINXFLQUlBSWdRRVFDQUFJQUZCbUg1cUlBUVF0Z01MSUFKQmtBTnFJQUZCL0h4cUVMUURJUVFnQUNBQlFjQithaUlGRU9nT1FaZ0JFRVlpQnlBRktBSUFJQVJCQUJDdUJSb2dBaUFITmdLTUJTQUVFRFVhRE5zREN5QUJRV0JxSWdVb0FnQUVRQ0FBSUFGQmFHb2lCRUVCUWZnQVFjK2NEa0hrbkE0UUtDQUFJQVJCQ0VHc0FrRUFRZVNjRGhBb0lBQWdCQ0FGS0FJQUVMWURDeUFCUWN4K2FpSUVLQUlBUlFSQUlBQWdBVUh4bkE0Z0FTZ0NFQkFUUVpxWkRrRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUlBRWdBU2dDRUJDWUJDQUJLQUlRSVFWQjFBQVFSaUlISUFRUXRBTWFJQUlnQVNrRENEY0QrQVFnQWlBQktRTUFOd1B3QkNBQ1FRQTJBcFFGSUFJZ0J6WUNrQVVnQWlBRk5nS01CUXphQXdzZ0FVR1FmbW9pQkNnQ0FBUkFJQUFnQVVHWWZtb2lCVUVCUWZnQVFjK2NEa0hrbkE0UUtDQUFJQVZCQ0VHc0FrRUFRZVNjRGhBb0lBQWdCU0FFS0FJQUVMWURDMEhVQUJCR0lnVWdBVUg4ZkdvUXRBTWlCeUFCS0FJY0VKQUVJQWNnQkNnQ0FCQ0hCaUFBSUFGQnNINXFJZ1FnQnlBRktBSUFLQUpRRVFBQUVKUUVJQUFnQVNBQktBSWNFTFlESUFBZ0JDQUVLQUlRRUpnRUlBUW9BaEFoQnlBQ0lBUXBBd2czQS9nRUlBSWdCQ2tEQURjRDhBUWdBa0VBTmdLVUJTQUNJQVUyQXBBRklBSWdCellDakFVTTJRTUxJQUpCOEFScUlBRkIwQUVRUFJvZ0FVSFlmbW9pQkNrQ0FFS0FnSUE0Z3lJY1VFVUVRQ0FDS0FLUUJTSUZJQVVvQWdBb0FpZ1JBQUFpQlNBRktRSUVRdi8vLzBlRElCeUVOd0lFQ3lBQUlBSkI4QVJxSUFJb0FwQUZJZ1VnQlNnQ0FDZ0NIQkVBQUNBQ0tBS1FCU0lGSUFVb0FnQW9BaWdSQUFBUTNRTWdBQ0FCUVdocUlnVWdBVUdJZjJvUWx3UWdBQ0FCSUFRb0FnQkJQM0VnQWlnQ2tBVVFqd1lnQUNBRklBRkIxSDVxSUFJb0FwQUZFTm9KRE5nREN5QUNRZkFFYWlBQlFkQUJFRDBhSUFBZ0FVRU5JQUVvQWlBUWp3WWdBa0VBTmdLUUF5QUFJQUVnQWtHUUEyb2dBaWdDa0FVUXR3Y2dBQ0FDUWZBRWFpQUNLQUtRQlNJRUlBUW9BZ0FvQWh3UkFBQWdBaWdDa0FVaUJDQUVLQUlBS0FJb0VRQUFFTjBERE5jREN5QUNRZkFFYWlBQlFkQUJFRDBhSUFGQjJINXFJZ1VwQWdCQ2dJQ0FPSU1pSEZCRkJFQWdBaWdDa0FVaUJDQUVLQUlBS0FJb0VRQUFJZ1FnQkNrQ0JFTC8vLzlIZ3lBY2hEY0NCQXNnQUNBQlFXaHFJZ1FnQWlnQ2tBVWlCeUFIS0FJQUtBSWNFUUFBSUFJb0FwQUZJZ2NnQnlnQ0FDZ0NLQkVBQUJEZEF5QUFJQVFnQVVHSWYyb1Fsd1FnQUNBQklBVW9BZ0JCUDNFZ0FpZ0NrQVVRandZZ0FDQUVJQUZCMUg1cUlBSW9BcEFGRU5vSkROWURDeUFDUWZBRWFpQUJRZEFCRUQwYUlBQWdBVUVOSUFFb0FpQVFqd1lnQWtFQU5nS1FBeUFBSUFFZ0FrR1FBMm9nQWlnQ2tBVVF0d2NnQUNBQ1FmQUVhaUFDS0FLUUJTSUVJQVFvQWdBb0Fod1JBQUFnQWlnQ2tBVWlCQ0FFS0FJQUtBSW9FUUFBRU4wREROVURDMEhVQUJCR0lnUWdBVUVjYWhDMEF4b2dBa0VBTmdLVUJTQUNJQVEyQXBBRklBSkJBRFlDakFVZ0FTZ0NzQUVpQkVVTjFBTWdBQ0FCUWJnQmFpQUVFTFlERE5RREN5QUNRZkFFYWlBQlFkQUJFRDBhRE5NREN5QUNRZkFFYWlBQlFlQjhha0hRQVJBOUdpQUFJQUVnQVNnQ0VDQUJRZng4YWtFQVFRQVF0UU1hRE5JREN5QUNRZkFFYWlBQlFaQjdha0hRQVJBOUdpQUFJQUZCc0g1cUlBRkJ3SDVxS0FJQUlBRkJySHRxSUFFb0FoeEJBQkMxQXhvTTBRTUxJQU1nQVVHTWVHb2lCRUd3QVJBOUdpQUFJQUZCa0h0cUlBRkJvSHRxS0FJQUlBUWdBVUg4Zkdvb0FnQWdBU2dDRkJDMUF5RUVJQUlnQUNnQ0tDQUJRWVI0YWlnQ0FDQUVJQUZCc0g1cUVONENOZ0tFQlF6UUF3c2dBeUFCUWR4NWFpSUVRYkFCRUQwYUlBQWdBVUhnZkdvZ0FVSHdmR29vQWdBZ0JFRUFJQUVvQWhRUXRRTWhCQ0FDSUFBb0FpZ2dBVUhVZVdvb0FnQWdCQ0FCUWJCK2FoRGVBallDaEFVTXp3TUxJQU1nQVVFY2FrR3dBUkE5SVFRZ0FrRUFOZ0tFQlNBQUlBSkI4QVJxSUFRUXJBOE16Z01MSUFNZ0FVSE1mbW9pQkVHd0FSQTlHaUFDUVFBMkFvUUZJQUFnQVNBQktBSVFJQVJCQUVFQUVMVURHZ3pOQXdzZ0F5QUJRZng4YWlJRVFiQUJFRDBhSUFKQkFEWUNoQVVnQUNBQlFiQithaUFCUWNCK2FpZ0NBQ0FFSUFFb0FoeEJBQkMxQXhvTXpBTUxJQU1nQVVIY2VXb2lCRUd3QVJBOUdpQUFJQUZCa0h0cUlBRkJvSHRxS0FJQUlBUWdBVUg4Zkdvb0FnQWdBU2dDRkJDMUF5RUVJQUlnQUNnQ0tFRUFJQVFnQVVHd2Ztb1EzZ0kyQW9RRkRNc0RDeUFESUFGQnJIdHFJZ1JCc0FFUVBSb2dBQ0FCUWVCOGFpQUJRZkI4YWlnQ0FDQUVRUUFnQVNnQ0ZCQzFBeUVFSUFJZ0FDZ0NLRUVBSUFRZ0FVR3dmbW9RM2dJMkFvUUZETW9EQ3lBQUlBRkJ1QUZxSWdRZ0FVRWthaUFESUFGQkhHcEJzQUVRUFJEakNTQUJLQUt3QVFSQUlBQWdCRUVCUWZnQVFjK2NEa0hrbkE0UUtDQUFJQVJCQ0VHc0FrRUFRZVNjRGhBb0N5QUFJQmNnQWlnQ2pBVWdFeERkQXd6SkF3c2dBQ0FCUVdocUlnVWdBVUhVZm1vaUJCQzJCU0FBSUFVZ0JDQUJRUnhxSWdjUTR3a0NRQ0FCS0FLd0FVVU5BQ0FBSUFGQnVBRnFJZ1ZCQVVINEFFSFBuQTVCNUp3T0VDZ2dBQ0FGUVFoQnJBSkJBRUhrbkE0UUtDQUJLQUt3QVVVTkFDQUFJQVVnQkJEaENVVU5BQ0FCUVFBMkFyQUJDeUFBSUFGQnVBRnFJZ1VnQVVHSWYyb2lDUkNYQkNBQlFkZ0FhaUFKRUtvSElBQWdCU0FCUVNScUlna2dCRUVCRUpFR0lBQWdCU0FCS0FJY0lBa1EzUU1nQXlBSFFiQUJFRDBhSUJNUW1RSU55QU1nQUNnQ0ZDSUVRUVJMRGNnREFrQUNRQUpBSUFSQkFXc09CTXNEeXdQTEF3RUFDeUFDS1FPWUJTSWNRaitEUWdSU0Rjb0REQUVMSUFJcEE1Z0ZJaHhDUDROQ0ExSU55UU1MSUFJZ0hFS0FnSUNBQW9RM0E1Z0ZETWdEQ3lBQUlBRkJqSjBPRUtNQklBQWdGMEVCUWZnQVFRQkJqSjBPRUNnZ0F5QUJRUUFRRnlBQ0lBSXBBNWdGUW9DQWdNQUFoRGNEbUFVTXh3TUxJQUFnQVVHV25RNFFvd0VnQUNBQlFRRkJnZ0ZCQUVHV25RNFFLQ0FBSUFGQkNFR3NBa0VBUVphZERoQW9JQU1nQVVFQUVCY2dBaUFDS1FPWUJVS0FnSUNBQW9RM0E1Z0ZETVlEQ3lBQUlBRkJuWjBPRUtNQklBQWdBVUVCUVlJQlFRQkJuWjBPRUNnZ0FDQUJRUWhCckFKQkFFR2RuUTRRS0NBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDZ0lDQWdBU0VOd09ZQlF6RkF3c2dBQ0FCUWFLZERoQ2pBU0FBSUFGQkNFRUFRYkNkRGtHaW5RNFFLQ0FBSUFGQkFVR0NBVUVBUWFLZERoQW9JQU1nQVVFQUVCY2dBaUFDS1FPWUJVS0FnSUNBd0FDRU53T1lCUXpFQXdzZ0FDQUJRZG1kRGhDakFTQUFJQUZCQWtIQ0EwSHRuUTVCbFo0T0VDZ2dBQ0FCUVFSQndnTkI3WjBPUVpXZURoQW9JQU1nQVVFQUVCY2dBaUFDS1FPWUJVS0FnSUNBZ0FHRU53T1lCUXpEQXdzZ0FDQUJRYXllRGhDakFTQUFJQUZCQWtFQVFiaWVEa0hhbmc0UUtDQUFJQUZCQkVFQVFiaWVEa0hhbmc0UUtDQUFJQUZCQ0VFQVFiaWVEa0hhbmc0UUtDQURJQUZCQUJBWElBSWdBaWtEbUFWQ2dJQ0FnSUFDaERjRG1BVU13Z01MSUFBZ0FVSDJuZzRRb3dFZ0FDQUJRWkRBQUVIMm5nNFEwZ0VnQUNnQ0ZFRUVSZ1JBSUFBZ0FVRUJRWWlmRGtIMm5nNGdBQ2dDQUNnQ0ZCRUlBQXNnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRb0NBZ0lDQUJJUTNBNWdGRE1FREN5QUFJQUZCako4T0VLTUJJQUFnQVVFTlFZeWZEaEMvQWlBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDZ0lDQWdJQUloRGNEbUFVTXdBTUxJQUFnQVVHV253NFFvd0VnQUNBQlFZRGdBRUdXbnc0UTBnRWdBeUFCUVFBUUZ5QUNJQUlwQTVnRlFvQ0FnSUNBRUlRM0E1Z0ZETDhEQ3lBRElBRkJ6SDVxUWJBQkVEMGFETDREQ3lBRElBRkJIR3BCc0FFUVBSb012UU1MSUFNZ0FVSDhmR3BCc0FFUVBSb2dHU0FCUWRnQWFoQ3FCeUFUSUFGQkpHcEJBQkNRQmd5OEF3c2dBeUFCUVFBUUZ5QUFJQUVnQXlBQktBSVFFTllKRExzREN5QURJQUZCNEh4cUlnUkJBQkFYSUFBZ0JDQURJQUZCOEh4cUtBSUFJQUVvQWhRUXRnOE11Z01MSUFNZ0FVRUFFQmNnQUNBQklBTWdBa0dRQTJwQm5aOE9FQ0lpQkJEV0NTQUVFQmthRExrREN5QUFJQmRCQmtHUUEwR2tudzVCdDU4T0VDZ2dBQ0FCUVFoQndBSkJBa0hBbnc1QnQ1OE9FTkVCSUFNZ0FVRUFFQmNnQWlBQ0tRT1lCVUtBZ0lDQUlJUTNBNWdGRExnREN5QURJQUZCSEdwQnNBRVFQUm9NdHdNTElBTWdBVUhNZm1wQnNBRVFQUm9nQWlnQ2pBVkZCRUFnQWlBQktBSWNOZ0tNQlFzZ0dTQUJRZGdBYWhDcUJ5QUFJQmNnRXlBQlFTUnFRUUFRa1FZTXRnTUxJQU1nQVVFY2FrR3dBUkE5R2d5MUF3c2dBeUFCUVJ4cVFiQUJFRDBhRExRREN5QUFJQUZCdUFGcUlBRXRBQ3RCQjNFUTB3OGdBeUFCUVJ4cVFiQUJFRDBhRExNREN5QURJQUZCSEdwQnNBRVFQUm9Nc2dNTElBTWdBVUVjYWtHd0FSQTlHZ3l4QXdzZ0F5QUJRUnhxUWJBQkVEMGFETEFEQ3lBRElBRkJIR3BCc0FFUVBSb01yd01MSUFNZ0FVRUFFQmNnQWlBQ0tRT1lCVUpBZzBJQ2hEY0RtQVVNcmdNTElBQWdBVUhJbnc0UW93RWdBeUFCUVFBUUZ5QUNJQUlwQTVnRlFrQ0RRZytFTndPWUJReXRBd3NnQUNBQlFjNmZEaENqQVNBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDUUlOQ0RZUTNBNWdGREt3REN5QUFJQUZCMFo4T0VLTUJJQU1nQVVFQUVCY2dBaUFDS1FPWUJVSkFnMElPaERjRG1BVU1xd01MSUFBZ0FVRUJRZmdBUVFCQjFaOE9FQ2dnQUNBQlFRaEJyQUpCQUVIVm53NFFLQ0FBSUFGQjFaOE9FS01CSUFNZ0FVRUFFQmNnQWlBQ0tRT1lCVUtBZ0lDQUFZUTNBNWdGREtvREN5QUFJQUZCM3A4T0VLTUJJQU1nQVVFQUVCY2dBaUFDS1FPWUJVSkFnMElGaERjRG1BVU1xUU1MSUFBZ0FVR2RudzRRb3dFZ0FDQUJRUVpCcmdOQjVwOE9RWjJmRGhBb0lBQWdBVUVJUWJZQ1FRQkJuWjhPRUNnZ0FDQUJRYURnQUVHZG53NFEwZ0VnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRa0NEUWdlRU53T1lCUXlvQXdzZ0FDQUJRZnlmRGhDakFTQURJQUZCQUJBWElBSWdBaWtEbUFWQ1FJTkNCb1EzQTVnRkRLY0RDeUFBSUFGQkFFR0RvQTRRdndJZ0FDQUJRUUpCZ2dGQmc2QU9JQUFvQWdBb0Fnd1JDQUFnQUNBQlFRRkJnZ0ZCZzZBT0lBQW9BZ0FvQWd3UkNBQWdBQ0FCUVFKQnBBTkJnNkFPSUFBb0FnQW9BaEFSQ0FBZ0FDQUJRUWhCckFKQmc2QU9JQUFvQWdBb0FoQVJDQUFnQUNBQlFZT2dEaENqQVNBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDUUlOQ0E0UTNBNWdGREtZREN5QUFJQUZCQVVHQ0FVR05vQTRnQUNnQ0FDZ0NEQkVJQUNBQUlBRkJBa0dDQVVHTm9BNGdBQ2dDQUNnQ0RCRUlBQ0FBSUFGQkFrR2tBMEdOb0E0Z0FDZ0NBQ2dDRUJFSUFDQUFJQUZCQ0VHc0FrR05vQTRnQUNnQ0FDZ0NFQkVJQUNBQUlBRkJqYUFPRUtNQklBTWdBVUVBRUJjZ0Fpa0RtQVZDUUlNaEhDQUFLQUlVUlFSQUlBSWdIRUlFaERjRG1BVU1wZ01MSUFJZ0hFSURoRGNEbUFVTXBRTUxJQUFnQVVHVm9BNFFvd0VnQUNBQlFRWkJsYUFPRU5JQklBTWdBVUVBRUJjZ0FpQUNLUU9ZQlVLQWdJQ0FnQ0NFTndPWUJReWtBd3NnQUNBQlFadWdEaENqQVNBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDZ0lDQWdJREFBSVEzQTVnRkRLTURDeUFBSUFGQm9xQU9FS01CSUFBZ0FVR0FCMEdpb0E0UTBnRWdBQ0FCUVFKQnpBTkJzYUFPUWFLZ0RoQW9JQU1nQVVFQUVCY2dBaUFDS1FPWUJVSkFnMElLaERjRG1BVU1vZ01MSUFBZ0FVSERvQTRRb3dFZ0FDQUJRY0FPUWNPZ0RoRFNBU0FBSUFGQkFrSE1BMEd4b0E1Qnc2QU9FQ2dnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRa0NEUWdpRU53T1lCUXloQXdzZ0FDQUJRZENnRGhDakFTQUFJQUZCZ0E1QjBLQU9FTklCSUFBZ0FVRUNRY3dEUWJHZ0RrSFFvQTRRS0NBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDUUlOQ0NZUTNBNWdGREtBREN5QUFJQUZCMzZBT0VLTUJJQUFnQVVIQUhFSGZvQTRRMGdFZ0FDQUJRUUpCekFOQnNhQU9RZCtnRGhBb0lBTWdBVUVBRUJjZ0FpQUNLUU9ZQlVKQWcwSUxoRGNEbUFVTW53TUxJQUFnQVVIdW9BNFFvd0VnQUNBQlFZQVFRZTZnRGhEU0FTQUFJQUZCQWtITUEwR3hvQTVCN3FBT0VDZ2dBeUFCUVFBUUZ5QUNJQUlwQTVnRlFrQ0RRZ3lFTndPWUJReWVBd3NnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRb0NBZ0lDQWdBaUVOd09ZQlF5ZEF3c2dBeUFCUVFBUUZ5QUFJQUZCQVVHQW9RNUJoS0VPSUFBb0FnQW9BaFFSQ0FBZ0FpQUNLUU9ZQlVLQWdJQ0FnSUFnaERjRG1BVU1uQU1MSUFNZ0FVRUFFQmNnQUNBQlFRRkJnS0VPUVpPaERpQUFLQUlBS0FJVUVRZ0FJQUlnQWlrRG1BVkNnSUNBZ0lDQXdBQ0VOd09ZQlF5YkF3c2dBeUFCUVFBUUZ5QUFJQUZCQVVHQW9RNUJwNkVPSUFBb0FnQW9BaFFSQ0FBZ0FpQUNLUU9ZQlVLQWdJQ0FnSUNBQVlRM0E1Z0ZESm9EQ3lBRElBRkJBQkFYSUFBZ0FVRUJRWUNoRGtHNW9RNGdBQ2dDQUNnQ0ZCRUlBQ0FDSUFJcEE1Z0ZRb0NBZ0lDQWdJQUNoRGNEbUFVTW1RTUxJQU1nQVVFQUVCY2dBQ0FCUVFGQmdLRU9RY3FoRGlBQUtBSUFLQUlVRVFnQUlBSWdBaWtEbUFWQ2dJQ0FnSUNBZ0FTRU53T1lCUXlZQXdzZ0F5QUJRUUFRRnlBQ0lBSXBBNWdGUW9DQWdJQ0FnQkNFTndPWUJReVhBd3NnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRb0NBZ0lDQWdBR0VOd09ZQlF5V0F3c2dBeUFCUVFBUUZ5QUNJQUlwQTVnRlFvQ0FnSUNBZ0FLRU53T1lCUXlWQXdzZ0F5QUJRUUFRRnlBQ0lBSXBBNWdGUW9DQWdJQ0FnQVNFTndPWUJReVVBd3NnQUNBQlFkV2hEaUFBS0FJQUtBS1FBUkVHQUNBQUlBRkIxYUVPRUtNQklBQWdBVUhWb1E0Z0FDZ0NBQ2dDUEJFR0FDQURJQUZCQUJBWERKTURDeUFBSUFGQmtIdHFJZ1JCMWFFT0lBQW9BZ0FvQXBBQkVRWUFJQUFnQkVIVm9RNFFvd0VnQUNBRVFkV2hEaUFBS0FJQUtBSThFUVlBSUFNZ0JFRUFFQmNNa2dNTElBTWdBVUVBRUJjZ0FpQUNLUU9ZQlVLQWdJQ0FFSVEzQTVnRkRKRURDeUFDSUFBZ0F5QUJRY3grYWtHd0FSQTlFT0lKUVJoMFFZQ0FnRGh4clNBQ0tRT1lCVUwvLy85SGc0UTNBNWdGSUFJZ0FTZ0N6QUUyQXJnR0RKQURDeUFBSUFFZ0FTZ0NIQkNVQkNBQ0lBQWdBeUFCUWZ4OGFrR3dBUkE5RU9JSlFSaDBRWUNBZ0RoeHJTQUNLUU9ZQlVMLy8vOUhnNFEzQTVnRklBSWdBVUY4YWlnQ0FEWUN1QVlnQWlBQktBSWNOZ0tnQmd5UEF3c2dBaUFCUWJCK2FpSUVLUU1JTndQNEJDQUNJQVFwQXdBM0EvQUVRUkFRUmlJRUVMTURJUVVnQWlBRU5nS01CU0FGRUxnSkRJNERDeUFDSUFGQjRIeHFJZ1FwQXdnM0EvZ0VJQUlnQkNrREFEY0Q4QVJCRUJCR0lnUVFzd01hSUFJZ0JEWUNqQVVnQUNBQlFjUithaUlFS0FJQUlnVWdCU2dDQUNnQ0FCRUFBQ0FFS0FJQUlBSkJrQU5xUWVDaERoQ09CaUFDSUFJcEE1QURJaHczQTZnQ0lBSWdIRGNEbUFFZ0FpZ0NqQVVnQWtHWUFXb1FoZ1lNalFNTElBSkI4QVJxSUFGQjRIeHFRZEFCRUQwYUlBSW9Bb3dGRUxnSkRJd0RDeUFDUWZBRWFpQUJRWkI3YWtIUUFSQTlHaUFBSUFGQnhINXFJZ1FvQWdBaUJTQUZLQUlBS0FJQUVRQUFJQVFvQWdBZ0FrR1FBMnBCNEtFT0VJNEdJQUlnQWlrRGtBTWlIRGNEb0FJZ0FpQWNOd09nQVNBQ0tBS01CU0FDUWFBQmFoQ0dCZ3lMQXdzZ0FpQUJLQUxNQVRZQ3ZBWU1pZ01MSUFKQkFEWUN2QVlNaVFNTElBSWdBVUY4YWlnQ0FEWUN2QVlNaUFNTFFSQVFSaUlFRUxNREdpQUNJQVEyQXJ3R0lBQWdBU2dDRkNJRUlBUW9BZ0FvQWdBUkFBQWdBU2dDRkNBQ1FaQURha0hyb1E0UWpnWWdBaUFDS1FPUUF5SWNOd09ZQWlBQ0lCdzNBNmdCSUFJb0Fyd0dJQUpCcUFGcUVJWUdESWNEQ3lBQ0lBRkJySDVxS0FJQU5nSzhCaUFBSUFFb0FoUWlCQ0FFS0FJQUtBSUFFUUFBSUFFb0FoUWdBa0dRQTJwQjY2RU9FSTRHSUFJZ0Fpa0RrQU1pSERjRGtBSWdBaUFjTndPd0FTQUNLQUs4QmlBQ1FiQUJhaENHQmd5R0F3c2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFEWUNqQVVNaFFNTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVFFMkFvd0ZESVFEQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VJTmdLTUJReURBd3NnQUNBQlFmcWhEaUFBS0FJQUtBSTRFUVlBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUWsyQW93RkRJSURDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU1OZ0tNQlF5QkF3c2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFQ0VHTU1nQU1MSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUUUyQW93RklBTkJBeEJqRFA4Q0N5QURJQUVnQUNnQ1RCQVlFQmNnQWtFQk5nS01CU0FEUVFRUVl3eitBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJERFlDakFVZ0EwRUNFR01NL1FJTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVF3MkFvd0ZJQU5CQXhCakRQd0NDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU1OZ0tNQlNBRFFRUVFZd3o3QWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQ0RZQ2pBVWdBMEVDRUdNTStnSUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRZzJBb3dGSUFOQkF4QmpEUGtDQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VJTmdLTUJTQURRUVFRWXd6NEFnc2dBQ0FCUVl1aURpQUFLQUlBS0FJNEVRWUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRazJBb3dGSUFOQkFoQmpEUGNDQ3lBQUlBRkJpNklPSUFBb0FnQW9BamdSQmdBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQ1RZQ2pBVWdBMEVERUdNTTlnSUxJQUFnQVVHTG9nNGdBQ2dDQUNnQ09CRUdBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUpOZ0tNQlNBRFFRUVFZd3oxQWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVDUVFJUVZBejBBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRURRUU1RVkF6ekFnc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRVFRUVFWQXp5QWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVDUVFJUVZBenhBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUNRUU1RVkF6d0Fnc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFQ1FRUVFWQXp2QWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVEUVFJUVZBenVBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRURRUU1RVkF6dEFnc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRFFRUVFWQXpzQWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVFUVFJUVZBenJBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUVRUU1RVkF6cUFnc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRVFRUVFWQXpwQWdzZ0FDQUJRUVpCbzZJT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHam9nNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVTTZBSUxJQUFnQVVHcW9nNGdBQ2dDVEJBa0lBQW9BZ0FvQWtnUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkF6WUNqQVVNNXdJTElBQWdBVUcwb2c0Z0FDZ0NUQkFrSUFBb0FnQW9Bb0FCRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVFFMkFvd0ZET1lDQ3lBQUlBRkJ2cUlPSUFBb0Frd1FKQ0FBS0FJQUtBS0VBUkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VDTmdLTUJRemxBZ3NnQUNBQlFjaWlEaUFBS0FKTUVDUWdBQ2dDQUNnQ1lCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUVOZ0tNQlF6a0Fnc2dBQ0FCUWQyaURpQUFLQUpNRUNRZ0FDZ0NBQ2dDWUJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRk5nS01CUXpqQWdzZ0FDQUJRZlNpRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NWQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VHTmdLTUJRemlBZ3NnQUNBQlFZcWpEaUFBS0FKTUVDUWdBQ2dDQUNnQ1ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUhOZ0tNQlF6aEFnc2dBQ0FCUWFLakRpQUFLQUpNRUNRZ0FDZ0NBQ2dDZkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFSU5nS01CUXpnQWdzZ0FDQUJRYmlqRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NmQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VKTmdLTUJRemZBZ3NnQUNBQlFkQ2pEaUFBS0FKTUVDUWdBQ2dDQUNnQ2NCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUtOZ0tNQlF6ZUFnc2dBQ0FCUWQrakRpQUFLQUpNRUNRZ0FDZ0NBQ2dDY0JFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFTE5nS01CUXpkQWdzZ0FDQUJRUVpCOTZNT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVIM293NGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNFR01NM0FJTElBQWdBVUVHUWZlakRoQktJQUFvQWt3UUpFVUVRQ0FBSUFGQjk2TU9JQUFvQWdBb0FrQVJCZ0FMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUUkyQW93RklBTkJBeEJqRE5zQ0N5QUFJQUZCQmtIM293NFFTaUFBS0FKTUVDUkZCRUFnQUNBQlFmZWpEaUFBS0FJQUtBSkFFUVlBQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VDTmdLTUJTQURRUVFRWXd6YUFnc2dBQ0FCUVlXa0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDU0JFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRE5nS01CU0FEUVFJUVl3elpBZ3NnQUNBQlFZV2tEaUFBS0FKTUVDUWdBQ2dDQUNnQ1NCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUROZ0tNQlNBRFFRTVFZd3pZQWdzZ0FDQUJRWVdrRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NTQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VETmdLTUJTQURRUVFRWXd6WEFnc2dBQ0FCUVpla0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFQ0VHTU0xZ0lMSUFBZ0FVR1hwQTRnQUNnQ1RCQWtJQUFvQWdBb0FvQUJFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUUUyQW93RklBTkJBeEJqRE5VQ0N5QUFJQUZCbDZRT0lBQW9Ba3dRSkNBQUtBSUFLQUtBQVJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFQk5nS01CU0FEUVFRUVl3elVBZ3NnQUNBQlFhaWtEaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNFR01NMHdJTElBQWdBVUdvcEE0Z0FDZ0NUQkFrSUFBb0FnQW9Bb1FCRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVFJMkFvd0ZJQU5CQXhCakROSUNDeUFBSUFGQnFLUU9JQUFvQWt3UUpDQUFLQUlBS0FLRUFSRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUNOZ0tNQlNBRFFRUVFZd3pSQWdzZ0FDQUJRYm1rRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NZQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VFTmdLTUJTQURRUUlRWXd6UUFnc2dBQ0FCUWJta0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDWUJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRU5nS01CU0FEUVFNUVl3elBBZ3NnQUNBQlFibWtEaUFBS0FKTUVDUWdBQ2dDQUNnQ1lCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUVOZ0tNQlNBRFFRUVFZd3pPQWdzZ0FDQUJRZFdrRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NWQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VHTmdLTUJTQURRUUlRWXd6TkFnc2dBQ0FCUWRXa0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDVkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFR05nS01CU0FEUVFNUVl3ek1BZ3NnQUNBQlFkV2tEaUFBS0FKTUVDUWdBQ2dDQUNnQ1ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUdOZ0tNQlNBRFFRUVFZd3pMQWdzZ0FDQUJRZktrRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NmQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VJTmdLTUJTQURRUUlRWXd6S0Fnc2dBQ0FCUWZLa0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDZkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFSU5nS01CU0FEUVFNUVl3ekpBZ3NnQUNBQlFmS2tEaUFBS0FKTUVDUWdBQ2dDQUNnQ2ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUlOZ0tNQlNBRFFRUVFZd3pJQWdzZ0FDQUJRWStsRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NjQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VLTmdLTUJTQURRUUlRWXd6SEFnc2dBQ0FCUVkrbERpQUFLQUpNRUNRZ0FDZ0NBQ2dDY0JFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFS05nS01CU0FEUVFNUVl3ekdBZ3NnQUNBQlFZK2xEaUFBS0FKTUVDUWdBQ2dDQUNnQ2NCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUtOZ0tNQlNBRFFRUVFZd3pGQWdzZ0FDQUJRYVdsRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NZQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VGTmdLTUJTQURRUUlRWXd6RUFnc2dBQ0FCUWFXbERpQUFLQUpNRUNRZ0FDZ0NBQ2dDWUJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRk5nS01CU0FEUVFNUVl3ekRBZ3NnQUNBQlFhV2xEaUFBS0FKTUVDUWdBQ2dDQUNnQ1lCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUZOZ0tNQlNBRFFRUVFZd3pDQWdzZ0FDQUJRY09sRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NWQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VITmdLTUJTQURRUUlRWXd6QkFnc2dBQ0FCUWNPbERpQUFLQUpNRUNRZ0FDZ0NBQ2dDVkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFSE5nS01CU0FEUVFNUVl3ekFBZ3NnQUNBQlFjT2xEaUFBS0FKTUVDUWdBQ2dDQUNnQ1ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUhOZ0tNQlNBRFFRUVFZd3kvQWdzZ0FDQUJRZUtsRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NmQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VKTmdLTUJTQURRUUlRWXd5K0Fnc2dBQ0FCUWVLbERpQUFLQUpNRUNRZ0FDZ0NBQ2dDZkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFSk5nS01CU0FEUVFNUVl3eTlBZ3NnQUNBQlFlS2xEaUFBS0FKTUVDUWdBQ2dDQUNnQ2ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUpOZ0tNQlNBRFFRUVFZd3k4QWdzZ0FDQUJRWUdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NjQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VMTmdLTUJTQURRUUlRWXd5N0Fnc2dBQ0FCUVlHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDY0JFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFTE5nS01CU0FEUVFNUVl3eTZBZ3NnQUNBQlFZR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2NCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUxOZ0tNQlNBRFFRUVFZd3k1QWdzZ0FDQUJRUVpCb0tZT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHZ3BnNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNRUUlRVkF5NEFnc2dBQ0FCUVFaQm9LWU9FRW9nQUNnQ1RCQWtSUVJBSUFBZ0FVR2dwZzRnQUNnQ0FDZ0NRQkVHQUFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVEUVFNUVZBeTNBZ3NnQUNBQlFRWkJvS1lPRUVvZ0FDZ0NUQkFrUlFSQUlBQWdBVUdncGc0Z0FDZ0NBQ2dDUUJFR0FBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRVFRUVFWQXkyQWdzZ0FDQUJRUVpCb0tZT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHZ3BnNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNRUUlRVkF5MUFnc2dBQ0FCUVFaQm9LWU9FRW9nQUNnQ1RCQWtSUVJBSUFBZ0FVR2dwZzRnQUNnQ0FDZ0NRQkVHQUFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVDUVFNUVZBeTBBZ3NnQUNBQlFRWkJvS1lPRUVvZ0FDZ0NUQkFrUlFSQUlBQWdBVUdncGc0Z0FDZ0NBQ2dDUUJFR0FBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFQ1FRUVFWQXl6QWdzZ0FDQUJRUVpCb0tZT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHZ3BnNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRURRUUlRVkF5eUFnc2dBQ0FCUVFaQm9LWU9FRW9nQUNnQ1RCQWtSUVJBSUFBZ0FVR2dwZzRnQUNnQ0FDZ0NRQkVHQUFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVEUVFNUVZBeXhBZ3NnQUNBQlFRWkJvS1lPRUVvZ0FDZ0NUQkFrUlFSQUlBQWdBVUdncGc0Z0FDZ0NBQ2dDUUJFR0FBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRFFRUVFWQXl3QWdzZ0FDQUJRUVpCb0tZT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHZ3BnNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUVRUUlRVkF5dkFnc2dBQ0FCUVFaQm9LWU9FRW9nQUNnQ1RCQWtSUVJBSUFBZ0FVR2dwZzRnQUNnQ0FDZ0NRQkVHQUFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVFUVFNUVZBeXVBZ3NnQUNBQlFRWkJvS1lPRUVvZ0FDZ0NUQkFrUlFSQUlBQWdBVUdncGc0Z0FDZ0NBQ2dDUUJFR0FBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRVFRUVFWQXl0QWdzZ0FDQUJRYTZtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NSQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VETmdLTUJTQURRUUpCQWhCVURLd0NDeUFBSUFGQnJxWU9JQUFvQWt3UUpDQUFLQUlBS0FKRUVRUUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRTTJBb3dGSUFOQkEwRURFRlFNcXdJTElBQWdBVUd1cGc0Z0FDZ0NUQkFrSUFBb0FnQW9Ba1FSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQXpZQ2pBVWdBMEVFUVFRUVZBeXFBZ3NnQUNBQlFhNm1EaUFBS0FKTUVDUWdBQ2dDQUNnQ1JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUROZ0tNQlNBRFFRSkJBaEJVREtrQ0N5QUFJQUZCcnFZT0lBQW9Ba3dRSkNBQUtBSUFLQUpFRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVFNMkFvd0ZJQU5CQWtFREVGUU1xQUlMSUFBZ0FVR3VwZzRnQUNnQ1RCQWtJQUFvQWdBb0FrUVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBellDakFVZ0EwRUNRUVFRVkF5bkFnc2dBQ0FCUWE2bURpQUFLQUpNRUNRZ0FDZ0NBQ2dDUkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRE5nS01CU0FEUVFOQkFoQlVES1lDQ3lBQUlBRkJycVlPSUFBb0Frd1FKQ0FBS0FJQUtBSkVFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUU0yQW93RklBTkJBMEVERUZRTXBRSUxJQUFnQVVHdXBnNGdBQ2dDVEJBa0lBQW9BZ0FvQWtRUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkF6WUNqQVVnQTBFRFFRUVFWQXlrQWdzZ0FDQUJRYTZtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NSQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VETmdLTUJTQURRUVJCQWhCVURLTUNDeUFBSUFGQnJxWU9JQUFvQWt3UUpDQUFLQUlBS0FKRUVRUUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRTTJBb3dGSUFOQkJFRURFRlFNb2dJTElBQWdBVUd1cGc0Z0FDZ0NUQkFrSUFBb0FnQW9Ba1FSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQXpZQ2pBVWdBMEVFUVFRUVZBeWhBZ3NnQUNBQlFjQ21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2dBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUNRUUlRVkF5Z0Fnc2dBQ0FCUWNDbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRFFRTVFWQXlmQWdzZ0FDQUJRY0NtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NnQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVFUVFRUVZBeWVBZ3NnQUNBQlFjQ21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2dBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUNRUUlRVkF5ZEFnc2dBQ0FCUWNDbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFQ1FRTVFWQXljQWdzZ0FDQUJRY0NtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NnQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVDUVFRUVZBeWJBZ3NnQUNBQlFjQ21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2dBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRURRUUlRVkF5YUFnc2dBQ0FCUWNDbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRFFRTVFWQXlaQWdzZ0FDQUJRY0NtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NnQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVEUVFRUVZBeVlBZ3NnQUNBQlFjQ21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2dBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUVRUUlRVkF5WEFnc2dBQ0FCUWNDbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRVFRTVFWQXlXQWdzZ0FDQUJRY0NtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NnQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVFUVFRUVZBeVZBZ3NnQUNBQlFkR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNRUUlRVkF5VUFnc2dBQ0FCUWRHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDaEFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRFFRTVFWQXlUQWdzZ0FDQUJRZEdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NoQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVFUVFRUVZBeVNBZ3NnQUNBQlFkR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNRUUlRVkF5UkFnc2dBQ0FCUWRHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDaEFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFQ1FRTVFWQXlRQWdzZ0FDQUJRZEdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NoQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVDUVFRUVZBeVBBZ3NnQUNBQlFkR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRURRUUlRVkF5T0Fnc2dBQ0FCUWRHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDaEFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRFFRTVFWQXlOQWdzZ0FDQUJRZEdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NoQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVEUVFRUVZBeU1BZ3NnQUNBQlFkR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUVRUUlRVkF5TEFnc2dBQ0FCUWRHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDaEFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRVFRTVFWQXlLQWdzZ0FDQUJRZEdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NoQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVFUVFRUVZBeUpBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJFVFlDakFVTWlBSUxJQUFnQVVIaXBnNGdBQ2dDQUNnQ2xBRVJCZ0FnQXlBQklBQW9Ba3dRR0JBWElBSkJEVFlDakFVTWh3SUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUJRUUJCQUVFQUVFOE1oZ0lMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFCQkFFRUFFRThNaFFJTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFRFFRQkJBRUVBRUU4TWhBSUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUVRUUJCQUVFQUVFOE1nd0lMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFCQkFVRUFFRThNZ2dJTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFRVFRQkJBVUVBRUU4TWdRSUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUNRUUZCQUVFQUVFOE1nQUlMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFGQkFVRUFFRThNL3dFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFQlFRQkJBVUVBRUU4TS9nRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUJRUUZCQUVFQUVFOE0vUUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVCUVFGQkFVRUFFRThNL0FFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFRVFRRkJBRUVBRUU4TSt3RUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUVRUUZCQVVFQUVFOE0rZ0VMSUFBZ0FVSDNwZzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUUZCQUVFQVFRQVFUd3o1QVFzZ0FDQUJRZmVtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQWtFQVFRQkJBQkJQRFBnQkN5QUFJQUZCOTZZT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFRFFRQkJBRUVBRUU4TTl3RUxJQUFnQVVIM3BnNGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRUkJBRUVBUVFBUVR3ejJBUXNnQUNBQlFmZW1EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBVUVBUVFGQkFCQlBEUFVCQ3lBQUlBRkI5NllPSUFBb0Frd1FKQ0FBS0FJQUtBSnNFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBMEVDUVFCQkFVRUFFRThNOUFFTElBQWdBVUgzcGc0Z0FDZ0NUQkFrSUFBb0FnQW9BbXdSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VEUVFSQkFFRUJRUUFRVHd6ekFRc2dBQ0FCUWZlbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDYkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFOQkFVRUJRUUJCQUJCUERQSUJDeUFBSUFGQjk2WU9JQUFvQWt3UUpDQUFLQUlBS0FKc0VRUUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkEwRUNRUUZCQUVFQUVFOE04UUVMSUFBZ0FVSDNwZzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUUZCQVVFQlFRQVFUd3p3QVFzZ0FDQUJRZmVtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQWtFQlFRRkJBQkJQRE84QkN5QUFJQUZCOTZZT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFRVFRRkJBRUVBRUU4TTdnRUxJQUFnQVVIM3BnNGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRUkJBVUVCUVFBUVR3enRBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUUZCQUVFQVFRQVFUd3pzQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFKQkFFRUFRUUFRVHd6ckFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRTkJBRUVBUVFBUVR3enFBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUVJCQUVFQVFRQVFUd3pwQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFKQkFVRUFRUUFRVHd6b0FRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRSkJBRUVBUVFBUVR3em5BUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUpRUU5CQUVFQVFRQVFUd3ptQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFSQkFFRUFRUUFRVHd6bEFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRRkJBVUVBUVFBUVR3emtBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUVJCQVVFQVFRQVFUd3pqQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFGQkFFRUFRUUFRVHd6aUFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRRkJBVUVBUVFBUVR3emhBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUpRUVJCQVVFQVFRQVFUd3pnQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VCUVFSQkFVRUFFSEFNM3dFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ0VFRVFRRkJBQkJ3RE40QkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFsQkJFRUJRUUFRY0F6ZEFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRSkJBVUVBUVFBUVR3emNBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUJRUUpCQUVFQUVIQU0yd0VMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVEUVFCQkFCQndETm9CQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQWtFQlFRQVFjQXpaQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VCUVFSQkFFRUFFSEFNMkFFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ0VFQ1FRQkJBQkJ3RE5jQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFoQkEwRUFRUUFRY0F6V0FRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRUkJBRUVBRUhBTTFRRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNFRUNRUUZCQUJCd0ROUUJDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRbEJBa0VBUVFBUWNBelRBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUpRUU5CQUVFQUVIQU0wZ0VMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVFUVFCQkFCQndETkVCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWxCQWtFQlFRQVFjQXpRQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VBRU9jT0RNOEJDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRVE1dzRNemdFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFRlFRQkJBRUVBRUU4TXpRRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUZRUUJCQVVFQUVFOE16QUVMSUFBZ0FVSDNwZzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUVZCQUVFQVFRQVFUd3pMQVFzZ0FDQUJRZmVtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQlVFQVFRRkJBQkJQRE1vQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFoQkJVRUFRUUJCQUJCUERNa0JDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRbEJCVUVBUVFCQkFCQlBETWdCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQmtFQVFRQkJBQkJQRE1jQkN5QUFJQUZCOTZZT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFR1FRQkJBRUVBRUU4TXhnRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNFRUdRUUJCQUVFQUVFOE14UUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVHUVFCQkFFRUFFRThNeEFFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFQ1FRQkJBRUVCRUU4TXd3RUxJQUFnQVVIM3BnNGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRSkJBRUVBUVFFUVR3ekNBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUUpCQUVFQVFRRVFUd3pCQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFKQkFFRUFRUUVRVHd6QUFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFQlFRSkJBVUVBUVFFUVR3eS9BUXNnQUNBQlFmZW1EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBa0VCUVFCQkFSQlBETDRCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWhCQWtFQlFRQkJBUkJQREwwQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFsQkFrRUJRUUJCQVJCUERMd0JDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRkJBVUVBUVFBUWNBeTdBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBVUVBUVFBUWNBeTZBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBa0VBUVFBUWNBeTVBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBMEVBUVFBUWNBeTRBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJCRUVBUVFBUWNBeTNBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUJRUUZCQVVFQUVIQU10Z0VMSUFBZ0FVR0twdzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUUZCQVVFQUVIQU10UUVMSUFBZ0FVR0twdzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUUpCQVVFQUVIQU10QUVMSUFBZ0FVR0twdzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUVJCQVVFQUVIQU1zd0VMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDRUVCUVFCQkFCQndETElCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWhCQVVFQlFRQVFjQXl4QVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFGQkFFRUFFSEFNc0FFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ1VFQlFRRkJBQkJ3REs4QkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFGQkJVRUFRUUFRY0F5dUFRc2dBQ0FCUVlxbkRpQUFLQUpNRUNRZ0FDZ0NBQ2dDYkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFOQkJVRUFRUUFRY0F5dEFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRVkJBRUVBRUhBTXJBRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNVRUZRUUJCQUJCd0RLc0JDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRkJCa0VBUVFBUWNBeXFBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJCa0VBUVFBUWNBeXBBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUVpCQUVFQUVIQU1xQUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVHUVFCQkFCQndES2NCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQWtFQVFRRVFjQXltQVFzZ0FDQUJRWXFuRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQWtFQVFRRVFjQXlsQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFKQkFFRUJFSEFNcEFFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ1VFQ1FRQkJBUkJ3REtNQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFGQkFrRUJRUUVRY0F5aUFRc2dBQ0FCUVlxbkRpQUFLQUpNRUNRZ0FDZ0NBQ2dDYkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFOQkFrRUJRUUVRY0F5aEFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRSkJBVUVCRUhBTW9BRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNVRUNRUUZCQVJCd0RKOEJDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRkJBVUVBUVFCQkFCQnZESjRCQ3lBQUlBRkJuYWNPSUFBb0Frd1FKQ0FBS0FJQUtBSnNFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBMEVCUVFCQkFFRUFFRzhNblFFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ0VFQlFRQkJBRUVBRUc4TW5BRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNVRUJRUUJCQUVFQUVHOE1td0VMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFCQkFFRUFFRzhNbWdFTElBQWdBVUdkcHc0Z0FDZ0NUQkFrSUFBb0FnQW9BbXdSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VEUVFKQkFFRUFRUUFRYnd5WkFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRSkJBRUVBUVFBUWJ3eVlBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUpRUUpCQUVFQVFRQVFid3lYQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VCUVFOQkFFRUFRUUFRYnd5V0FRc2dBQ0FCUVoybkRpQUFLQUpNRUNRZ0FDZ0NBQ2dDYkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFOQkEwRUFRUUJCQUJCdkRKVUJDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRaEJBMEVBUVFCQkFCQnZESlFCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWxCQTBFQVFRQkJBQkJ2REpNQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFGQkJVRUFRUUJCQUJCdkRKSUJDeUFBSUFGQm5hY09JQUFvQWt3UUpDQUFLQUlBS0FKc0VRUUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkEwRUZRUUJCQUVFQUVHOE1rUUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDRUVGUVFCQkFFRUFFRzhNa0FFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ1VFRlFRQkJBRUVBRUc4TWp3RUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUVRUUJCQUVFQUVHOE1qZ0VMSUFBZ0FVR2RwdzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUVJCQUVFQVFRQVFid3lOQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFSQkFFRUFRUUFRYnd5TUFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRUkJBRUVBUVFBUWJ3eUxBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUJRUVpCQUVFQVFRQVFid3lLQVFzZ0FDQUJRWjJuRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQmtFQVFRQkJBQkJ2RElrQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFoQkJrRUFRUUJCQUJCdkRJZ0JDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRbEJCa0VBUVFCQkFCQnZESWNCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQVVFQlFRQkJBQkJ2RElZQkN5QUFJQUZCbmFjT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFQlFRRkJBRUVBRUc4TWhRRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNFRUJRUUZCQUVFQUVHOE1oQUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVCUVFGQkFFRUFFRzhNZ3dFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFQ1FRRkJBRUVBRUc4TWdnRUxJQUFnQVVHZHB3NGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRSkJBVUVBUVFBUWJ3eUJBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUUpCQVVFQVFRQVFid3lBQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFKQkFVRUFRUUFRYnd4L0N5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFGQkJFRUJRUUJCQUJCdkRINExJQUFnQVVHZHB3NGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRUkJBVUVBUVFBUWJ3eDlDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRaEJCRUVCUVFCQkFCQnZESHdMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVFUVFGQkFFRUFFRzhNZXdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VCUVFKQkFFRUFRUUVRYnd4NkN5QUFJQUZCbmFjT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFQ1FRQkJBRUVCRUc4TWVRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRSkJBRUVBUVFFUWJ3eDRDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRbEJBa0VBUVFCQkFSQnZESGNMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFGQkFFRUJFRzhNZGdzZ0FDQUJRWjJuRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQWtFQlFRQkJBUkJ2REhVTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ0VFQ1FRRkJBRUVCRUc4TWRBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRSkJBVUVBUVFFUWJ3eHpDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRkJBa0VBUVFCQkFCQlBJQUlnQWlnQ2tBVkJnSUNBZ0FKeU5nS1FCUXh5Q3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQWtFQVFRQkJBQkJQSUFJZ0FpZ0NrQVZCZ0lDQWdBUnlOZ0tRQlF4eEN5QUFJQUZCQkVHdXB3NFF2d0lnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUJRUUFRMmdNTWNBc2dBQ0FCUVFSQnJxY09FTDhDSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVCRU5vRERHOExJQUFnQVVHOHB3NGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBQ0FCUVFSQnJxY09FTDhDSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBMEVBRU5vRERHNExJQUFnQVVHOHB3NGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBQ0FCUVFSQnJxY09FTDhDSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBMEVCRU5vRERHMExJQUFnQVVFRVFhNm5EaEMvQWlBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWhCQUJEYUF3eHNDeUFBSUFGQkJFR3VwdzRRdndJZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFFUTJnTU1hd3NnQUNBQlFRUkJycWNPRUw4Q0lBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ1VFQUVOb0RER29MSUFBZ0FVRUVRYTZuRGhDL0FpQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFsQkFSRGFBd3hwQ3lBQUlBRkIxYWNPSUFBb0Frd1FKQ0FBS0FJQUtBS0lBUkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VCTmdLTUJTQUNJQUl2QVp3R1FZQWdjanNCbkFZTWFBc2dBQ0FCUWVDbkRpQUFLQUpNRUNRZ0FDZ0NBQ2dDakFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkNEWUNqQVVnQWlBQ0x3R2NCa0dBSUhJN0Fad0dER2NMSUFBZ0FVSHJwdzRnQUNnQ1RCQWtJQUFvQWdBb0Fvd0JFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUWsyQW93RklBSWdBaThCbkFaQmdDQnlPd0djQmd4bUN5QURJQUZCSEdwQnNBRVFQU0VFSUFJZ0FDZ0NUQkFZclNBQ0tRT1lCVUpBZzRRM0E1Z0ZJQUFnQkJDNkR3eGxDeUFCS0FJWUlnUWdCQ2dDQUNnQ0pCRUFBQ0lFQkVBZ0JDQUVLQUlBS0FJd0VRQUFJUVFnQXlBQklBQW9Ba3dRR0JBWElBSWdCRFlDcEFZZ0FrRVBOZ0tNQlF4bEN5QUFJQUZCOXFjT0lBRW9BaEFRRTBHYW1RNUJBQ0FBS0FJQUtBS2dBUkVDQUF4a0N5QUFJQUZCQVVHQ0FVRUFRWW1vRGhBb0lBTWdBU0FBS0FKTUVCZ1FGeUFBSUJOQkF4REFCd3hqQ3lBQUlBRkJBVUdDQVVFQVFhT29EaEFvSUFNZ0FTQUFLQUpNRUJnUUZ5QUFJQk5CQWhEQUJ3eGlDeUFBSUFGQkFVR0NBVUVBUWIrb0RoQW9JQU1nQVNBQUtBSk1FQmdRRnlBQUlCTkJBUkRBQnd4aEN5QUFJQUZCNEh4cUVOa0pER0FMSUFBZ0FVSEFlV29pQlVIVUFCQkdJZ2NnQVVITWZtb29BZ0FnQVVIUWVXb2lCQ2dDQUJEbURpSUpFTVFQUVlBQkVFWWlDaUFFS0FJQUlBbEJBUkR0QWhvZ0FDZ0NUQ0FLRU93Q1JRUkFJQUFnQlVIWXFBNGdCQ2dDQUJBVFFlV29Ea0VBSUFBb0FnQW9BcUFCRVFJQUN5QURJQUZCOEhkcVFRQVFGeUFDSUFjMkFxUUdJQUpCRHpZQ2pBVWdBQ0FBS0FKWVFYOXFOZ0pZREY4TElBQWdBVUd3Zm1vUTJRa01YZ3RCMUFBUVJpSUVJQUZCekg1cUtBSUFJQUpCa0FOcVFacVpEaEFpSWdVUTVnNGFJQVVRR1JvZ0F5QUJRY0I1YWtFQUVCY2dBaUFFTmdLa0JpQUNRUTgyQW93RklBQWdBQ2dDV0VGL2FqWUNXQXhkQ3lBQ0lBRW9BaHcyQW93RkRGd0xJQUlnQVVITWZtb29BZ0EyQW93RlFRQWhCU0FCS0FJY0VEZEZEVnNEUUNBQ0tBS01CUkEzSVFrZ0FpZ0NqQVVoQjBFQUlRUWdDUVJBQTBBZ0J5QUVFRGdvQWdBaUJ5QUhLQUlBS0FJWUVRQUFJQUVvQWh3Z0JSQTRLQUlBSWdjZ0J5Z0NBQ2dDR0JFQUFCQ1lBZ1JBSUFBZ0FTZ0NIQ0FGRURoQkJHcEI3S2dPUVpxWkRpQUJLQUljSUFVUU9DZ0NBQ0lISUFjb0FnQW9BaGdSQUFBUUUwRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQ0tBS01CUkEzSVFrZ0FpZ0NqQVVoQnlBRVFRRnFJZ1FnQ1VrTkFBc0xJQWNnQVNnQ0hDQUZFRGdRcVFjZ0JVRUJhaUlGSUFFb0Fod1FOMGtOQUFzTVd3c0NmMEYrSUExQmZrWU5BQnBCQWlBTlFaa0ZTdzBBR2lBTlFRRjBRZURYQzJvdkFRQUxJUTRDUUNBUVFRTkxEUUFDUUFKQUlCQkJBV3NPQXdJQ0FRQUxBa0FnQWtIb0Eyb2dBa0hzQTJvZ0NDQU9FT1FPSWdWQkFVc0VRRUdPdVE0aEVBd0JDeUFGUVFGckJFQWdBQ0FDS0FMc0F4Q1hCZ3dEQ3lBQ0tBTHNBeUlGSUFKQjhBTnFSd1JBSUFVUUtnc2dBaUFDS0FMb0F4Q2JBU0lRTmdMc0F5QVFSUVJBSUFKQmdBRTJBdWdESUFJZ0FrSHdBMm8yQXV3RElBQkJqcmtPRUpjR0RBUUxJQUpCNkFOcUlBSkI3QU5xSUFnZ0RoRGtEaUVGQ3lBQUlCQVFsd1lnQlVFQ1JnMENEQUVMSUExQkFFd0VRQ0FORFFGQkFDRU5EQVFMUVp1NURpQU9FS2dIUVg0aERRc0RRQUpBQWtBZ0JFSC8vd054UWJ2OEEwWU5BQ0FFUVJCMFFSQjFJZ1JCZjBnTkFDQUVRUUZxUVFGMElnUkJzT0lMYWk4QkFFRUJSdzBBSUFSQjhQUU1haTRCQUNJRVFRQktEUUVMSUFnZ0RFWUVRQ0FNSVFnTUJBdEJyYmtPSUFkQkFYUkJ3TGtPYWk4QkFCQ29CeUFJUVg1cUlnZ3VBUUFoQjBHTTlCSW9BZ0FFUUNBTUlBZ1F0d2tMSUFGQnNINXFJUUVnQjBFQmRFR0F6QXRxTHdFQUlRUU1BUXNMSUFSQi8vOERjU0VISUFGQjBBRnFJZ0VnQWtIUXpnSnFRZEFCRUQwYVFRTWhFRUdNOUJJb0FnQkZEVnNnQWtHa2h3NDJBZ0FnQzBHVTRnc2dBaERNQWlBTElBZEJBWFJCd0xrT2FpOEJBQkRTQkVFS0lBc1F3QU1NV3dzZ0FFSHV4QTRRbHdZTElBMUJma1lOQWtFQ0lBMUJtUVZMRFFFYUN5QU5RUUYwUWVEWEMyb3ZBUUFMRUtnSEMwR005QklvQWdBRVFDQU1JQWdRdHdrTElBZ2dERWNFUUFOQVFaM0ZEaUFJTGdFQVFRRjBRY0M1RG1vdkFRQVFxQWNnQVVHd2Ztb2hBU0FJUVg1cUlnZ2dERWNOQUFzTElBSkJ3TXNDYWlBTVJ3UkFJQXdRS2dzZ0FpZ0M3QU1pQUNBQ1FmQURha2NFUUNBQUVDb0xJQUpCb05BQ2FpUUFEd3NnQWlBQUlBRkJvSHRxS0FJQUlBRkJ4SDVxS0FJQUVQd1FOZ0tFQlF4VUN5QUNJQUVvQWhBUS9oQTJBb1FGREZNTElBSWdBVUgwZkdvb0FnQWdBU2dDRkJEN0VEWUNoQVVNVWdzZ0FpQUJLQUlVTmdLRUJReFJDeUFDSUFGQjlIeHFLQUlBTmdLRUJTQUFJQUZCd0hscVFRRkJyS3dPUVlPZ0RpQUFLQUlBS0FJVUVRZ0FERkFMQWtBZ0FDZ0NZQ0lFSUFRb0FnQW9BaHdSQUFCRkRRQWdBQzBBWkEwQUlBQWdBVUhnZkdwQmg2d09RWnFaRGlBQlFmeDhhaWdDQUNJRUlBUW9BZ0FvQWd3UkFBQVFFMEVBSUFBb0FnQW9BcUFCRVFJQUN5QUFLQUpNSUJJUXd3UWdBaUFBS0FJb0lBRkI0SHhxSWdRb0FoUWdBU2dDRkJDakF5SUZOZ0tFQlNBQUtBSW9HaUFFS0FJY0lnY2dCeWdDQUNnQ01CRUFBQ0VISUFJZ0JDa0NDRGNEeUFFZ0FpQUVLUUlBTndQQUFTQUZRUVFnQnlBQ1FjQUJhaENrQWhvZ0FpZ0NoQVVpQlNBRktBSUFLQUlZRVFBQUlnVWdBa0dRQTJvZ0JDZ0NIQ0lFSUFRb0FnQW9BaGdSQUFBUUV4QWlJZ1FnQlNnQ0FDZ0N4QUVSQVFBZ0JCQVpHaUFDS0FLRUJTSUVJQVFvQWdBb0FoZ1JBQUFnQUMwQWlBRTZBS0VCSUFJb0FvUUZJZ1FnQkNnQ0FDZ0NHQkVBQUNBQUxRQ0pBVG9Bb2dFZ0FpZ0NoQVVpQkNBRUtBSUFLQUlZRVFBQUlRUkJFQkJHSWdVUTNRc2hCeUFFSUFVMkFxUUJJQWNnR3hDekVneFBDeUFCSUFBZ0FTQUJLQUljUVFBUThna2lCRFlDSENBQklBQWdBU0FFRU9vUE5nSVVERTRMSUFBZ0FVRjNRZktyRGhCS0lBQWdBVUYzUWN3RFFRQkI4cXNPRUNnZ0FrRUFOZ0tFQlF4TkN5QUNJQUVvQWhRMkFvUUZERXdMSUFJZ0FTZ0NGRFlDaEFVTVN3c2dBU2dDRkNJRVJRMUtJQUlnQUNnQ0tDQUJRY1IrYWlnQ0FDQUVFS01ESWdRMkFvUUZJQUFvQWlnZ0JCRGpEZ3hLQ3lBQ0lBRW9BaFFpQkRZQ2hBVWdBQ2dDS0NBRUVPTU9ERWtMSUFBZ0FVR3dmbW9pQkVFRVFlcXJEaEMvQWlBQ0lBQW9BaWhCd2dNZ0JCRDJBellDaEFVTVNBc2dBaUFBSUFGQjRIeHFJQUZCeEg1cUtBSUFFTlFQTmdLRUJReEhDeUFDSUFBb0FpaEJ3d01nQVVHd2Ztb2lCQkQyQXpZQ2hBVWdBQ2dDWUNJRklBVW9BZ0FvQWh3UkFBQUVRQ0FBSUFSQnZhc09RZU9yRGtHYW1RNUJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FDMEFzQVZGRFVZZ0FFRUJPZ0JsREVZTElBQW9BbFJCQUNBV0VORUVhMFlFUUNBQUlBRkJzSDVxUVl5ckRrR2FtUTVCbXBrT1FRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJZ0FDZ0NLRUhFQXlBQlFiQithaEQyQXpZQ2hBVU1SUXNnQUNnQ1ZFRUFUQVJBSUFBZ0FVR3dmbXBCNDZvT1FacVpEa0dhbVE1QkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlBQUtBSW9RY1VESUFGQnNINXFFUFlETmdLRUJReEVDeUFDSUFGQjlIeHFLQUlBTmdLRUJTQUNJQUVvQWhRMkFvZ0ZERU1MSUFGQnhINXFLQUlBSVFRZ0FrRUFOZ0tJQlNBQ0lBUTJBb1FGREVJTElBSkJBRFlDaEFVTVFRc2dBaUFCS0FJVU5nS0VCUXhBQ3lBQ0lBRW9BaFEyQW9RRkREOExJQUlnQVNnQ0ZEWUNoQVVNUGdzZ0FDZ0NUQ0FTRU1NRUlBSWdBQ2dDS0NBQlFhUjdhaWdDQUNBQlFmQjNhaEMyRlRZQ2hBVWdBQ2dDS0NBQktBSVVJQUZCOUh4cUtBSUFJQUZCK0h4cUtBSUFRUUVnQVVHZ2Rtb2lCQkNZQ0NFRklBQW9BcmdKTFFBQVJRUkFJQUFnQkNBQlFaQjdhaWdDRkNBRkVMa1BDeUFDSUFBb0FpZ2dBaWdDaEFVZ0JTQUVFTjRDSWdRMkFvUUZJQVFnQkNnQ0FDZ0NHQkVBQUNJRVFRRWdCQ2dDQUNnQ3VBRVJBUUFnQUNBQUtBSlVRWDlxTmdKVUlBQWdBQ2dDVUVGL2FqWUNVQ0FBSUFBb0FseEJmMm8yQWx3TVBRc2dBQ2dDVEJDTUJDQUFJQUFvQWxSQkFXbzJBbFFnQUNBQUtBSlFRUUZxTmdKUUlBQWdBQ2dDWEVFQmFqWUNYQXc4Q3lBQUtBSzRDUzBBQVVVRVFDQUFJQUZCMEhScVFjYXFEa0c3cWc1Qm1wa09RUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQWdBU0FCUWZSOGFpSUVLQUlBRUpJR0lBSWdBQ2dDS0NBQlFZUjRhaWdDQUNBRUtBSUFRUUJCQUNBQlFjQjVhaENZQ0RZQ2hBVWdBQ0FBS0FKVVFYOXFOZ0pVSUFBZ0FDZ0NVRUYvYWpZQ1VDQUFJQUFvQWx4QmYybzJBbHdNT3dzZ0FDQUFLQUpVUVFGcU5nSlVJQUFnQUNnQ1VFRUJhallDVUNBQUlBQW9BbHhCQVdvMkFsd01PZ3NnQUNnQ1RDQVNFTU1FSUFJZ0FDZ0NLQ0FCS0FJVUlBRkI5SHhxS0FJQVFRQkJBU0FCUWZCM2FoQ1lDRFlDaEFVZ0FDQUFLQUpVUVg5cU5nSlVJQUFnQUNnQ1VFRi9hallDVUNBQUlBQW9BbHhCZjJvMkFsd01PUXNnQUNnQ3VBa3RBQUZGQkVBZ0FDQUJRYkIrYWtHaHFnNUJ1Nm9PUVpxWkRrRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSk1FSXdFSUFBZ0FDZ0NWRUVCYWpZQ1ZDQUFJQUFvQWxCQkFXbzJBbEFnQUNBQUtBSmNRUUZxTmdKY0REZ0xJQUFnQVVIRWZtb29BZ0FnQVNnQ0ZCRDJFQ0FDSUFFb0FoUTJBb1FGRERjTElBSWdBU2dDRkRZQ2hBVU1OZ3NnQWtFQU5nS0VCU0FVRU5FRVJRUkFJQUFnQVVHd2ZtcEJ5S2tPUVptcURrR2FtUTVCQUNBQUtBSUFLQUtnQVJFQ0FBdzJDeUFVRUVRb0FnQWdFU2dDQUVjRVFDQUFJQUZCc0g1cVFmU3BEa0dacWc1Qm1wa09RUUFnQUNnQ0FDZ0NvQUVSQWdBTU5nc2dBaUFBS0FJb1FjY0RJQUZCc0g1cUVQWUROZ0tFQlF3MUN5QUNRUUEyQW9RRklCUVEwUVJGQkVBZ0FDQUJRZUI4YWtISXFRNUI3NmtPUVpxWkRrRUFJQUFvQWdBb0FxQUJFUUlBRERVTElCUVFSQ2dDQUNBUktBSUFSd1JBSUFBZ0FVSGdmR3BCOUtrT1FlK3BEa0dhbVE1QkFDQUFLQUlBS0FLZ0FSRUNBQXcxQ3lBQUlBRkJ4SDVxSWdRb0FnQkI3NmtPRU9ZSklBQWdCQ2dDQUVIdnFRNFF2d2NnQWlBQUtBSW9RY1lESUFRb0FnQWdBVUhnZkdvUTFnWTJBb1FGRERRTElBSWdBU2dDRkRZQ2hBVU1Nd3NnQWtFQU5nS0VCUXd5Q3lBQ0lBQWdBVUhRZEdvZ0FVR0VlR29vQWdBQ2YwRUFJQUZCeEg1cUtBSUFJZ1JGRFFBYUlBUWdCQ2dDQUNnQ0dCRUFBQXNRbnc4MkFvUUZJQllRUkNnQ0FDSUVCRUFnQkJEYkFRc2dGaERpRGlBVUVPSU9JQUFvQWt3Z0VoRERCQ0FBSUFBb0FsQkJmMm8yQWxBZ0FDQUFLQUpjUVg5cU5nSmNEREVMSUFBZ0FDZ0NYRUVCYWpZQ1hDQUFJQUFvQWxCQkFXbzJBbEJCRUJCR0lnUVFrd0VhSUFJZ0JEWUNrQU1nRmlBQ1FaQURhaERoRGlBVUlCRVE0UTRnQUNnQ1RCQ01CQXd3Q3lBQUlBRkJ4SDVxS0FJQUlBRW9BaFFROXhBZ0FpQUJLQUlVTmdLRUJRd3ZDeUFDSUFFb0FoUTJBb1FGREM0TElBQWdBVUhnZkdvaUJTQUJRYXg3YWlJRUVNNFBJQUpCa0FOcUlBUVF0QU1oQnlBQ0lBQWdCU0FCUWZCOGFpZ0NBQ0FFUVFBZ0FTZ0NGQkMxQXlJRUJIOGdCQ0FFS0FJQUtBSU1FUUFBQlVFQUN6WUNoQVVnQnhBMUdnd3RDeUFDSUFFb0FoUTJBb1FGSUFBZ0FTZ0NGQ0lFSUFRb0FnQW9BZ0FSQUFBZ0FTZ0NGQkNTQmd3c0N5QUJLQUlVSVFRZ0FrRUFOZ0tJQlNBQ0lBUTJBb1FGRENzTElBSWdBVUgwZkdvb0FnQTJBb1FGSUFJZ0FTZ0NGRFlDaUFVTUtnc2dBQ0FCUWNCNWFpSUVJQUZCOUh4cUlnVW9BZ0FRa2dZZ0JTZ0NBQ0VGSUFBb0FpZ2FJQUlnQVNrQ0ZDSWNOd080QVNBQ0lCdzNBNGdDSUFJZ0JTQUNRYmdCYWlBRUVMc01OZ0tFQlF3cEN5QUFJQUZCeEg1cUtBSUFJQUVvQWhRUStCQWdBaUFCS0FJVU5nS0VCUXdvQ3lBQ0lBRW9BaFEyQW9RRkRDY0xJQUlnQVVIRWZtb29BZ0EyQW9RRkRDWUxJQUpCQURZQ2hBVU1KUXNDUUNBQktBSVVJZ1JGRFFBZ0JDQUVLQUlBS0FJMEVRQUFSUTBBSUFFb0FoUWlCQ0FFS0FJQUtBSTBFUUFBS0FJVVFjWURSd1JBSUFFb0FoUWlCQ0FFS0FJQUtBSTBFUUFBS0FJVVFjY0RSdzBCQ3lBQUlBRkJ4SDVxS0FJQUlnUUVmeUFFSUFRb0FnQW9BaGdSQUFBRlFRQUxJQUVvQWhRUXNRY2dBa0VBTmdLRUJRd2xDeUFDSUFBb0FpZ2dBVUhFZm1vb0FnQWdBU2dDRkJDakF6WUNoQVVNSkFzZ0FpQUFLQUlvSUFFb0FoUVE0Z1kyQW9RRklBRW9BaFFpQkVVTkl5QUVJQVFvQWdBb0FqUVJBQUJGRFNNZ0FTZ0NGQ0lFSUFRb0FnQW9BalFSQUFBb0FoUkJ4Z05IQkVBZ0FTZ0NGQ0lFSUFRb0FnQW9BalFSQUFBb0FoUkJ4d05IRFNRTElBQkJBQ0FCS0FJVUVMRUhJQUpCQURZQ2hBVU1Jd3NnQVVHd2Ztb2hCQUpBSUFGQnhINXFLQUlBSWdWRkRRQWdCU0FGS0FJQUtBSVlFUUFBUlEwQUlBUW9BaFFpQlNBRktBSUFLQUlZRVFBQUlnVkJBU0FGS0FJQUtBSzRBUkVCQUFzZ0FpQUVLQUlVTmdLRUJRd2lDeUFDUVFBMkFvUUZEQ0VMSUFBb0Frd2dFaEREQkNBQUlBQW9BbEJCZjJvMkFsQWdBQ0FBS0FKY1FYOXFOZ0pjSUFJZ0FTZ0NGRFlDaEFVTUlBc2dBQ2dDVEJDTUJDQUFJQUFvQWxCQkFXbzJBbEFnQUNBQUtBSmNRUUZxTmdKY0RCOExJQUFnQUNnQ1hFRi9hallDWENBQ0lBRW9BaFEyQW9RRkRCNExJQUFnQUNnQ1hFRUJhallDWEF3ZEN5QUNJQUVvQWhRMkFvUUZEQndMSUFJZ0FTZ0NGRFlDaEFVTUd3c2dBVUhnZkdvaEJBSkFJQUZCOUh4cUtBSUFJZ1ZGRFFBZ0JTQUZLQUlBS0FJWUVRQUFSUTBBSUFRb0FoUWlCU0FGS0FJQUtBSVlFUUFBSWdWQkFTQUZLQUlBS0FLNEFSRUJBQXNnQWlBRUtBSVVOZ0tFQlF3YUN5QUFLQUpNSUJJUXd3UWdFU0FSS0FJQVFYOXFOZ0lBREJrTElBQW9Ba3dRakFRZ0VTQVJLQUlBUVFGcU5nSUFEQmdMSUFKQkFEWUNoQVVNRndzZ0FDQUJRYkIrYWlJRVFRUkJ1cWtPRUw4Q0lBQWdCRUVCUWNTcERrRzZxUTRnQUNnQ0FDZ0NGQkVJQUNBQ0lBQW9BaWhCeUFNZ0JCRDJBellDaEFVTUZnc2dBaUFCS0FJVU5nS0VCUXdWQ3lBQ0lBRW9BaFEyQW9RRkRCUUxJQUlnQVNnQ0ZEWUNoQVVNRXdzZ0FpQUJLQUlVTmdLRUJRd1NDeUFDSUFFb0FoUTJBb1FGREJFTElBSWdBU2dDRkRZQ2hBVU1FQXNnQWlBQktBSVVOZ0tFQlF3UEN5QUNJQUVvQWhRMkFvUUZEQTRMSUFJZ0FTZ0NGRFlDaEFVTURRc2dBaUFCS0FJVU5nS0VCUXdNQ3lBQ0lBRW9BaFEyQW9RRkRBc0xJQUlnQUNnQ0tDQUJRZlI4YWlnQ0FDQUJLQUlVRUtNRE5nS0VCUXdLQ3lBQ0lBQW9BaWhCQUNBQktBSVVJZ1FnQkNBRUtBSUFLQUlBRVFBQUVONENOZ0tFQlF3SkN5QUFJQUZCa0h0cUlnUkJkMEdEcVE0UVNpQUFJQVJCZDBHa0EwR2FxUTVCZzZrT0VDZ2dBaUFCUWZSOGFpZ0NBRFlDaEFVTUNBc2dBQ0FCUWVCOGFpSUVRWGRCZzZrT0VFb2dBQ0FFUVhkQnBBTkJtcWtPUVlPcERoQW9JQUlnQVVIRWZtb29BZ0EyQW9RRkRBY0xJQUlnQVNnQ0ZEWUNoQVVNQmdzZ0FDQUJRYkIrYWlJRUlBRW9BaHdRbEFSQjFBQVFSaUlGUVFCQkFFRUJRUUJCQUVFQUVFVWhCeUFDSUFVMkFvd0ZJQVlnQkNrRENEY0RDQ0FHSUFRcEF3QTNBd0FnQnlBRUtBSVFJQVVvQWdBb0FoQVJBUUFnQWlnQ2pBVWdBU2dDSEJDUUJBd0ZDMEhVQUJCR0lnUkJBRUVBUVFGQkFFRUFRUUFRUlNFRklBSWdCRFlDakFVZ0JpQUJLUU1JTndNSUlBWWdBU2tEQURjREFDQUZJQUVvQWhBZ0JDZ0NBQ2dDRUJFQkFBd0VDeUFDS0FLTUJTQUJRUnhxRUtrSERBTUxRUkFRUmlJRUVKTUJHaUFDSUFRMkFvd0ZJQVFnQVVFY2FoQ3BCd3dDQ3lBQlFmeDhhaUVIQWtBZ0FVR1FmbW9pQ1NnQ0FFVU5BQ0FBSUFGQm1INXFJZ1JCQVVINEFFSFBuQTVCNUp3T0VDZ2dBQ0FFUVFoQnJBSkJBRUhrbkE0UUtDQUFFRE5GRFFBZ0FDQUVJQWtvQWdBUXRnTUxJQUlnQVVITWZtb2lDaWdDQURZQ2pBVWdBQ0FCUWF4N2FoREpEMEVBSVFRZ0FDQUJRWmgrYWlJRklBb29BZ0JCQUJBNEtBSUFJZ29nQ2lnQ0FDZ0NHQkVBQUNBSEtBSUFFTDRIR2lBQUlBVWdBVUdFZldvaUNpQUJRYlI3YWtFQkVKRUdJQUFnQlNBSEtBSUFJQW9RM1FNZ0FpZ0NqQVVRTjBVTkFRTkFJQUpCa0FOcUlBY1F0QU1pQlNBQ0tBS01CU0FFRURnb0FnQWlDaUFLS0FJQUtBSVlFUUFBRUxZSklBVWdBaWdDakFVZ0JCQTRLQUlBSWdvZ0NpZ0NBQ2dDVUJFQUFCQ1FCQ0FGSUFrb0FnQVFod1lnQUNBQ0tBS01CU0FFRURoQkJHb2dCU2dDUEJDVUJDQUNLQUtNQlNBRUVEZ29BZ0FnQlJDUEFTQUZFRFVhSUFSQkFXb2lCQ0FDS0FLTUJSQTNTUTBBQ3d3QkN5QUJRZng4YWlFSEFrQWdBVUdRZm1vaUNTZ0NBRVVOQUNBQUlBRkJtSDVxSWdSQkFVSDRBRUhQbkE1QjVKd09FQ2dnQUNBRVFRaEJyQUpCQUVIa25BNFFLQ0FBRURORkRRQWdBQ0FFSUFrb0FnQVF0Z01MSUFJZ0FVSE1mbW9pQlNnQ0FEWUNqQVZCQUNFRUlBQWdBVUdZZm1vaUNpQUZLQUlBUVFBUU9DZ0NBQ0lGSUFVb0FnQW9BaGdSQUFBZ0J5Z0NBQkMrQnhvZ0FDQUtJQWNvQWdBZ0FVR0VmV29RM1FNZ0FpZ0NqQVVRTjBVTkFBTkFJQUpCa0FOcUlBY1F0QU1pQlNBQ0tBS01CU0FFRURnb0FnQWlDaUFLS0FJQUtBSVlFUUFBRUxZSklBVWdBaWdDakFVZ0JCQTRLQUlBSWdvZ0NpZ0NBQ2dDVUJFQUFCQ1FCQ0FGSUFrb0FnQVFod1lnQUNBQ0tBS01CU0FFRURoQkJHb2dCU2dDUEJDVUJDQUNLQUtNQlNBRUVEZ29BZ0FnQlJDUEFTQUZFRFVhSUFSQkFXb2lCQ0FDS0FLTUJSQTNTUTBBQ3dzQ1FFR005QklvQWdCRkJFQkJBQ0FQYXlFRUlBZ2dEMEVCZEdzaENDQU9RUUYwUWNDc0Rtb3ZBUUFoRGd3QkN5QUNRYkNzRGpZQ0VDQUxRWlRpQ3lBQ1FSQnFFTXdDSUFzZ0RrRUJkRUhBckE1cUx3RUFJZzRRMGdSQkNpQUxFTUFEUVFBZ0Qyc2hCQ0FJSUE5QkFYUnJJUWhCalBRU0tBSUFSUTBBSUF3Z0NCQzNDUXNnQVNBRVFkQUJiR3BCMEFGcUlnRWdBa0h3QkdwQjBBRVFQUm9DZndKQUlBZ3VBUUFpQkNBT1FlVjhha0VCZENJRlFkQzFEbW91QVFCcUlnZEJtY2tBU3cwQUlBZEJBWFFpQjBHdzRndHFMd0VBSUFSQi8vOERjVWNOQUNBSFFmRDBER29NQVFzZ0JVR3d0dzVxQ3k0QkFDRUhDeUFJUVFKcUlRZ01BQUFMQUF1T0FnRUNmeUFBS0FJQUlRQWdBU0FERUtNQ0JFQWdBU0FDRU1BQkR3c0NRQ0FCSUFJUW93SU5BQ0FCSUFFb0FnQW9BaHdSQUFBaEFTQUNJQUlvQWdBb0Fod1JBQUFoQWlBRElBTW9BZ0FvQWh3UkFBQWhBMEVCSVFVZ0FDZ0NLQ0FCSUFJUXZ3aEZCRUFnQUNnQ0tDQUJJQUlRdmdnaEJRc0NRQ0FBS0FJb0lBRWdBeEMvQ0VVRVFDQUFLQUlvSUFFZ0F4QytDRVVOQVFzZ0JVRUJjdzhMSUFVTkFBSkFJQUFvQWlnZ0FTQUNFTHNJRFFBZ0FDZ0NLQ0FCSUFJUXVBZ05BQ0FBS0FJb0lBRWdBaEMyQ0VFQmN5RUVDMEVCSVFJQ1FDQUFLQUlvSUFFZ0F4QzdDQTBBSUFBb0FpZ2dBU0FERUxnSURRQWdBQ2dDS0NBQklBTVF0Z2doQWdzZ0FpQUVjU0VFQ3lBRUN3MEFJQUFnQVNBQ0lBTVE2dzRMSlFFQ2Z5TUFRUkJySWdBa0FDQUFRUWhxUWVRQkVERW9BZ0FoQVNBQVFSQnFKQUFnQVFzbEFRSi9Jd0JCRUdzaUFDUUFJQUJCQ0dwQjR3RVFNU2dDQUNFQklBQkJFR29rQUNBQkN6QUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUlJQUFnQWlnQ0NDZ0NBRFlDQUNBQVFRUnFFREFhSUFKQkVHb2tBQXVFQVFBZ0FDQUNFS01DQkVBZ0FDQUJFTUFCRHdzQ2YwRUFJQUFnQVJDakFnMEFHZ0pBSUFBZ0FDZ0NBQ2dDSEJFQUFFRUJSdzBBSUFJZ0FpZ0NBQ2dDSEJFQUFFRUNSdzBBUVFFZ0FTQUJLQUlBS0FJY0VRQUFRUUpIRFFFYUMwRUFJQUlnQWlnQ0FDZ0NIQkVBQUVFQlJ3MEFHaUFCSUFFb0FnQW9BaHdSQUFCQkFrWUxDd3NBSUFFZ0FpQURFUEFPQ3dZQUVJSUJBQXNsQVFKL0l3QkJFR3NpQUNRQUlBQkJDR3BCNGdFUU1TZ0NBQ0VCSUFCQkVHb2tBQ0FCQ3lnQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJSUlBQWdBaWdDQ0NrQ0FEY0NBQ0FDUVJCcUpBQUw5QUVCQVg5QkFTRUNBa0FDUUNBQUlBQW9BZ0FvQWh3UkFBQkJBVWNFUUNBQUlBQW9BZ0FvQWh3UkFBQkJBMGNOQVFzZ0FTQUJLQUlBS0FJY0VRQUFRUUZHRFFFZ0FTQUJLQUlBS0FJY0VRQUFRUU5HRHdzQ1FDQUFJQUFvQWdBb0Fod1JBQUJCQ1VjRVFDQUFJQUFvQWdBb0Fod1JBQUJCQlVjTkFRc2dBU0FCS0FJQUtBSWNFUUFBUVFsR0RRRWdBU0FCS0FJQUtBSWNFUUFBUVFWR0R3c2dBQ0FBS0FJQUtBSWNFUUFBUVFoSEJFQkJBQ0VDSUFBZ0FDZ0NBQ2dDSEJFQUFFRUVSdzBCQzBFQklRSWdBU0FCS0FJQUtBSWNFUUFBUVFoR0RRQWdBU0FCS0FJQUtBSWNFUUFBUVFSR0lRSUxJQUlMUndFQmZ3SkFJQUFRaFFGRkRRQWdBUkNGQVVVTkFDQUFJQUFvQWdBb0Fod1JBQUFnQVNBQktBSUFLQUljRVFBQVJ3MEFJQUFvQWxBTkFDQUJLQUpRUVFCSElRSUxJQUlMaEFJQkJYOGpBRUd3QVdzaUJDUUFJQUFvQWdBaEJVRUJJUU1DUUNBQklBSVFvd0lOQUNBQklBSVE5ZzROQUFKQUlBQXRBQVJGRFFBZ0FTQUJLQUlBS0FKd0VRQUFSUTBBSUFJZ0FpZ0NBQ2dDZUJFQUFFVU5BQ0FFUWRnQWFpQUJRUUJCQUJETkFTSUFJQVFnQWtFQVFRQVF6UUVpQmhDakFpRUhJQVlRTlJvZ0FCQTFHaUFIRFFFTFFRQWhBeUFCSUFFb0FnQW9BbkFSQUFBTkFDQUNJQUlvQWdBb0FuQVJBQUFOQUNBQklBSVErd2RGRFFBQ1FDQUJFSVVCUlEwQUlBSVFoUUZGRFFBZ0FTQUNFUFVPSVFNTUFRc2dCU2dDS0NBQklBRW9BZ0FvQWh3UkFBQWdBaUFDS0FJQUtBSWNFUUFBUVFBUTRRSWhBd3NnQkVHd0FXb2tBQ0FEQ3dZQUVJSUJBQXNsQVFKL0l3QkJFR3NpQUNRQUlBQkJDR3BCNEFFUU1TZ0NBQ0VCSUFCQkVHb2tBQ0FCQzVJQkFRTi9JQUFRUENFRElBQVFKU0VGQWtBZ0F3UkFBa0FEUUFKQUFuOGdBQkFiSUFJZ0EwRVFhaUlFRUtBRUJFQWdBeWdDQUVVTkJpQUREQUVMSUFBUUd5QUVJQUlRb0FSRkRRTWdBMEVFYWlFRUlBTW9BZ1JGRFFFZ0JDSURDeUVGSUFNb0FnQWhBd3dCQ3dzZ0FTQUROZ0lBSUFRUEN5QUJJQU0yQWdBZ0JROExJQUFRSlNFREN5QUJJQU0yQWdBZ0F3dDhBUUovSXdCQklHc2lCQ1FBSUFFZ0JFRWNhaUFDRVBvT0lnVW9BZ0FoQWlBRVFRQTZBQnNnQWtVRVFDQUVRUWhxSUFFZ0F4REFDU0FCSUFRb0Fod2dCU0FFS0FJSUVPNENJQVJCQ0dvUVh5RUNJQVJCQVRvQUd5QUVRUWhxRUxNQ0N5QUFJQVJCQ0dvZ0FoQXhJQVJCRzJvUW9nRWdCRUVnYWlRQUN5WUJBWDhnQVNBQWF5SUJRUlJ0SVFNZ0FRUkFJQUlnQUNBQkVPUURDeUFDSUFOQkZHeHFDeXNBSUFBb0FnQWFJQUFvQWdBZ0FCREVCRUVVYkdvYUlBQW9BZ0FhSUFBb0FnQWdBQkEzUVJSc2Fob0xnZ0VCQTM4akFFRVFheUlFSkFBQ1FDQURJQUpySWdORkJFQWdBQ0VCREFFTElBRWdBR3NpQlNBRFNBMEFJQVFnQWkwQUFEb0FEMEVCSUFOcklRWURRQ0FBSUFVZ0Jtb2dCRUVQYWhDbERpSUFSUTBCSUFBZ0FpQURFSXNIUlFSQUlBQWhBUXdDQ3lBQklBQkJBV29pQUdzaUJTQURUZzBBQ3dzZ0JFRVFhaVFBSUFFTE5RRUJmeU1BUVJCcklnSWtBQ0FDSUFBcEFnQTNBd2dnQUNBQktRSUFOd0lBSUFFZ0FrRUlhaWtDQURjQ0FDQUNRUkJxSkFBTE5RRUJmeU1BUVJCcklnSWtBQ0FDSUFBb0FnQTJBZ2dnQUNBQktBSUFOZ0lBSUFFZ0FrRUlhaWdDQURZQ0FDQUNRUkJxSkFBTElnQWdBRUVJYWlBQlFRaHFFSUFQSUFCQkRHb2dBVUVNYWhBdUlBQWdBUkQvRGdzOUFRRi9JQUFnQVNrQ0FEY0NBQ0FBSUFFb0FnZzJBZ2dnQUNBQktBSU1JZ0kyQWd3Z0FpZ0NBQ0lDQkVBZ0FDQUJLQUlBSUFJUkFBQTJBZ0FMQ3lZQkFYOGdBU0FBYXlJQlFRSjFJUU1nQVFSQUlBSWdBQ0FCRU9RREN5QUNJQU5CQW5ScUM2RUJBUUovSXdCQkVHc2lBeVFBQWtBZ0FTQUNFSzhGSWdRZ0FCQzNBazBFUUNBRElBSTJBZ3dnQkNBQUVCWkxCRUFnQXlBQk5nSU1JQU5CREdvZ0FCQVdFTWNGSUFFZ0F5Z0NEQ0FBS0FJQUVKRUVHaUFBSUFNb0Fnd2dBaUFFSUFBUUZtc1E4Z2NNQWdzZ0FDQUJJQUlnQUNnQ0FCQ1JCQkRNQlF3QkN5QUFFSUFSSUFBZ0FDQUVFTWtGRUp3TElBQWdBU0FDSUFRUThnY0xJQU5CRUdva0FBc01BQ0FCSUFNb0FnQVE3dzRMVUFFQmZ5TUFRUkJySWdVa0FDQUJFTmNDSWdFZ0FDQUJLQUlBUVJnUWxBSWdCVUVJYWlBQlFRQVF3d0VRa1FFaUFDZ0NBRUVRYWlBQ0lBTWdCQkNJQ2lBQUVDVkJBVG9BQkNBRlFSQnFKQUFMa2dFQkEzOGdBQkE4SVFNZ0FCQWxJUVVDUUNBREJFQUNRQU5BQWtBQ2Z5QUFFQ01nQWlBRFFSQnFJZ1FRMndNRVFDQURLQUlBUlEwR0lBTU1BUXNnQUJBaklBUWdBaERiQTBVTkF5QURRUVJxSVFRZ0F5Z0NCRVVOQVNBRUlnTUxJUVVnQXlnQ0FDRUREQUVMQ3lBQklBTTJBZ0FnQkE4TElBRWdBellDQUNBRkR3c2dBQkFsSVFNTElBRWdBellDQUNBREMxUUJBbjhqQUVFUWF5SUVKQUFnQWdSQUEwQWdBeUFDSUFBUUl5QUNRUkJxSUFFUTJ3TWlCUnNoQXlBQ1FRUkJBQ0FGRzJvb0FnQWlBZzBBQ3dzZ0JFRUlhaUFERURFb0FnQWhBQ0FFUVJCcUpBQWdBQXV2QVFFQ2Z5TUFRU0JySWdVa0FDQUJJQVZCSEdvZ0FoQ0hEeUlHS0FJQUlRSWdCVUVBT2dBYklBSkZCRUFnQlVFSWFpQUJRZjdIQ3lBRElBUVFoZzhnQVNBRktBSWNJQVlnQlNnQ0NCQ2tCQ0FGUVFocUVGOGhBaUFGUVFFNkFCc2dCVUVJYWlJREtBSUFJUUVnQTBFQU5nSUFJQUVFUUNBREVDVWlBeTBBQkFSQUlBTW9BZ0FhQ3lBQkJFQWdBeWdDQUJvTEN3c2dBQ0FGUVFocUlBSVFNU0FGUVJ0cUVLSUJJQVZCSUdva0FBdG1BUUYvSXdCQkVHc2lBaVFBSUFJZ0FDQUJJQUFRUENBQUVDVVFpQTgyQWdnZ0FpQUFFSUVCTmdJQUFuOENRQ0FDUVFocUlBSVFIa1VOQUNBQUVDTWdBU0FDUVFocUVGY1Eyd01OQUNBQ0tBSUlEQUVMSUFBUWdRRUxJUUFnQWtFUWFpUUFJQUFMUlFFQmZ5TUFRU0JySWdJa0FDQUNJQUVRa2dNMkFoQVE1d0VnQWtFWWFpQUFJQUVnQWtFUWFpQUNRUWhxRUlrUElBSkJHR29RVnlFQUlBSkJJR29rQUNBQVFRUnFDeWtCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFUWlnOFFNU2dDQUNFQUlBSkJFR29rQUNBQUMyRUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUFJQUlnQURZQ0NFRUFJUUFDUUNBQ1FRaHFJQUlRSGtVTkFBTkFJQUlvQWdnb0FnQVF0QWNFUUVFQklRQU1BZ3NnQWtFSWFoQzBBaUFDUVFocUlBSVFIZzBBQ3dzZ0FrRVFhaVFBSUFBTFZBRUNmeU1BUVJCcklnUWtBQ0FDQkVBRFFDQUNJQU1nQUJBaklBRWdBa0VRYWhDUEJDSUZHeUVESUFKQkFFRUVJQVViYWlnQ0FDSUNEUUFMQ3lBRVFRaHFJQU1RTVNnQ0FDRUFJQVJCRUdva0FDQUFDekVCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFZ0FCQThJQUFRSlJDT0R4QXhLQUlBSVFBZ0FrRVFhaVFBSUFBTFdBRUJmeU1BUVJCcklnUWtBQ0FFSUFJMkFnd2dBQ0FERUswSkdpQUJFQjhpQWtFQVNRUkFFRzRBQ3lBQkVCTWhBU0FFSUFJMkFnZ2dBQ0FCSUFSQkRHb2dCRUVJYWhDa0FTZ0NBQkNOQ1NBRVFSQnFKQUFnQUFzbkFDQUFMUUFFQkVBZ0FDZ0NBQm9nQVVFUWFoQ3lBZ3NnQVFSQUlBQW9BZ0FhSUFFUUtnc0xmQUVDZnlNQVFTQnJJZ1FrQUNBQklBUkJIR29nQWhDdEJ5SUZLQUlBSVFJZ0JFRUFPZ0FiSUFKRkJFQWdCRUVJYWlBQklBTVF4UWtnQVNBRUtBSWNJQVVnQkNnQ0NCRHVBaUFFUVFocUVGOGhBaUFFUVFFNkFCc2dCRUVJYWhERUNRc2dBQ0FFUVFocUlBSVFNU0FFUVJ0cUVLSUJJQVJCSUdva0FBc0dBRUhqMWdrTEd3QWdBRUdBQldvaUFCQy9CUVJBSUFBZ0FTQUNJQU1Rc0FjTEMxb0JBWDhqQUVFZ2F5SUdKQUFnQmlBQ05nSVlJQVlnQVRZQ0hDQUdJQU02QUJjZ0JpQUVOZ0lRSUFZZ0JUWUNEQ0FBSUFZb0Fod2dCaWdDR0NBR0xRQVhJQVlvQWhBZ0JpZ0NEQ0FBS0FJSUVRSUFJQVpCSUdva0FBc2ZBQ0FBUWRBRWFpSUFFTDhGQkVBZ0FDQUJJQUlnQXlBRUlBVVFsUThMQ3p3QkFYOGpBRUVRYXlJREpBQWdBeUFDTmdJSUlBTWdBVFlDRENBQUlBTkJER29vQWdBZ0EwRUlhaWdDQUNBQUtBSUlFUVlBSUFOQkVHb2tBQXNaQUNBQVFaQUZhaUlBRUw4RkJFQWdBQ0FCSUFJUWx3OExDeHNBSUFCQjhBUnFJZ0FRdndVRVFDQUFJQUVnQWlBREVMQUhDd3NOQUNBQVFaQUZhaUFCRUxFRkN3MEFJQUJCNEFScUlBRVFzUVVMRFFBZ0FFSHdCR29nQVJDeEJRc05BQ0FBUVlBRmFpQUJFTEVGQ3cwQUlBQkIwQVJxSUFFUXNRVUxpd1FCQTM4akFFRVFheUlGSkFBZ0FDQUJRUWhCckFKQkFFR291QXNRS0NBQUlBRkJBVUdDQVVFQVFhaTRDeEFvSUFBZ0EwRUFFTEVIQWtBQ1FDQUNSUTBBSUFJZ0FpZ0NBQ2dDZ0FFUkFBQkJDRWNFUUNBQ0lBSW9BZ0FvQW9BQkVRQUFRUWxIRFFFTElBSWdBaWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BbkFSQUFBTkFDQUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUpzRVFBQURRQWdBaUFDS0FJQUtBSjRFUUFBSWdRZ0JDZ0NBQ2dDYUJFQUFFVU5BUXNnQUNBQlFicTRDMEh6dHd0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTEFrQWdBRUhvQUdvaUJoQkVLQUlBSWdRUUZrVUVRQ0FDSVFBTUFRc2dBMFVFUUFKQUFrQWdBQkF6UlEwQUlBQW9BaEJCckFKS0RRQWdBQkNRQXcwQUlBQWdBVUhvdUF0Qjg3Y0xRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFBZ0FVSG91QXRCODdjTFFlUFdDVUVBSUFBb0FnQW9BcVFCRVFJQUN5QUFLQUlvSWdBZ0FFSEVBeUFCRVBZREVPSUdJZ0JCQVNBQUtBSUFLQUs0QVJFQkFDQUZJQUEyQWd3Z0JDQUZRUXhxRUxJRUMwR29BUkJHSWdBUTB3c2hCQ0FHRUVRb0FnQWhBeUFFSUFBb0FnQW9BcndCRVFBQUlBTVF5QWtnQUNBQklBQW9BZ0FvQWdRUkFRQkJJQkJHSWdBaUF4REZCU0FEUVFBN0FSd2dBeUFFTmdJWUlBTWdBallDRkNBRFFaQ2JDVFlDQUNBQUlBRWdBQ2dDQUNnQ0JCRUJBQXNnQlVFUWFpUUFJQUFMS3dBZ0FDQUJRUUowYWlJQVFmQURhaWdDQUNJQlFYOUhCRUFnQVNBQ1JnOExJQUFnQWpZQzhBTkJBUXM5QVFGL0lBQWdBV29pQTBIc0Eyb3RBQUFFUUNBQUlBRkJBblJxS0FMZ0F5QUNSZzhMSUFOQkFUb0E3QU1nQUNBQlFRSjBhaUFDTmdMZ0EwRUJDOFViQVE1L0l3QkJFR3NpQnlRQUFrQWdBaWdDU0NJRVFYOUdEUUJCOGVBSlFabmhDU0FBS0FJVVFRRkdHeUVESUFJcEFneENQNE5DQkZJRVFDQUFJQUZCNEt3TElBTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdBaWdDU0NFRUN5QUFLQUlvSUFRUWlnWkZCRUFnQUNBQlFmaXNDeUFEUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSVVRUUZIRFFBZ0FDQUJRUUFRbVFRTEFrQWdBaWdDakFFaUJFRi9SZzBBSUFJcEFneENQNE5DQkZJRVFDQUFJQUZCNEt3TFFZcmhDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQ0FDS0FLTUFTRUVDd0ovSUFBb0FpZ2lBeWdDMkFRaUJVRi9Sd1JBSUFRZ0JVWU1BUXNnQXlBRU5nTFlCRUVCQ3cwQUlBQWdBVUg0ckF0Qml1RUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFDUVR4cUlRWUNRQ0FDS0FKRUlnUkJmMFlOQUNBQ0tRSU1RaitEUWdOU0JFQWdBQ0FCUWFLdEMwR284UXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FnQWlnQ1JDRUVDd0ovSUFBb0FpZ2lBeWdDakFRaUJVRi9Sd1JBSUFRZ0JVWU1BUXNnQXlBRU5nS01CRUVCQ3cwQUlBQWdBVUg0ckF0QnFQRUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFZb0FnQWlBMFVOQUNBQ0tBSU1RVDl4UVgxcUlnUkJBVTBFUUNBRVFRRnJCRUJCQVNBRGRFSHVCbkZGSUFOQkNVdHlSUVJBSUFBb0FoUkJEVVlFUUNBQUlBRkJ1YTBMSUFNUXF3RkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1CQXNDZnlBQUtBSW9JZ1FvQXBRRUlnVUVRQ0FESUFWR0RBRUxJQVFnQXpZQ2xBUkJBUXNFUUNBQUtBSVVRUU5IRFFRZ0FDQUJRUUFRbVFRTUJBc2dBQ0FCUWMrdEN5QUdLQUlBRUtzQlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBTUxJQUFnQVVHNXJRc2dBeENyQVVIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3Q0N3SkFJQU5CQjBzTkFBSkFRUUVnQTNRaUJFR1NBWEVOQUNBRVFTUnhSUTBCSUFBb0FoUkJEVVlOQUNBQUlBRkIvSzBMSUFNUXF3RkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1Bd3NnQUNnQ0tDQURFSXNHRFFJZ0FDQUJRWkt1Q3lBR0tBSUFFS3NCUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFJTElBQWdBVUg4clFzZ0F4Q3JBVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBQUlBRkJ3SzRMSUFNUXF3RWdBaWdDREVFL2NSRFRBa0VBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUlvQWt3aUEwVU5BQ0FDS1FJTVFqK0RRZ05SQkVBQ2Z5QUFLQUlvSWdRb0FxQUVJZ1VFUUNBRElBVkdEQUVMSUFRZ0F6WUNvQVJCQVFzTkFTQUFJQUZCMGE0TElBSW9Ba3dRM2dOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUWFLdEN5QURFTjREUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBSW9BbEFpQTBVTkFDQUNLUUlNUWorRFFnTlJCRUFDZnlBQUtBSW9JZ1FvQXFRRUlnVUVRQ0FESUFWR0RBRUxJQVFnQXpZQ3BBUkJBUXNOQVNBQUlBRkIvYTRMSUFJb0FsQVFsZ1JCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0FDQUJRYUt0Q3lBREVKWUVRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFJdEFGUkZEUUFnQWlrQ0RFSS9nMElEVVFSQUlBQW9BaWhCQVRvQXJBUU1BUXNnQUNBQlFhS3RDMEhzNVFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQkJtQWRxSVFVZ0FFR2NCMm9oQ0NBQVFhQUhhaUVKSUFCQmtBbHFJUW9nQUVHVUNXb2hDeUFBUVpnSmFpRU1JQUJCbkFscUlRMGdBRUdnQ1dvaERpQUFRYVFKYWlFUFFRQWhCQU5BQWtBZ0FpQUVhaTBBWkVVTkFBSkFBa0FnQWlrQ0RFSS9nMElEVVFSQUlBQW9BaWdnQkNBQ0lBUkJBblJxS0FKWUVLRVBSUVJBSUFBZ0FVR25yd3RCaXZRS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBUUxJQUFvQWhRaUEwRjBhaUlRUVFGTkRRRWdBMEVGUncwQ0lBUkJBa3NFZjBFQUJTQUZJUU1DUUFKQUFrQWdCRUVCYXc0Q0FBRUNDeUFJSVFNTUFRc2dDU0VEQ3lBREtBSUFDeUVESUFBb0FpZ2dCQkNEQWlBRFRRMENJQUFnQVVISnJ3dEJpdlFLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFJTElBQWdBVUdpclF0Qml2UUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUlMSUJCQkFXc0VRQ0FFUVFKTEJIOUJBQVVnRFNFREFrQUNRQUpBSUFSQkFXc09BZ0FCQWdzZ0RpRUREQUVMSUE4aEF3c2dBeWdDQUFzaEF5QUFLQUlvSUFRUWd3SWdBMDBOQVNBQUlBRkJuTEFMUVlyMENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFFUVFKTEJIOUJBQVVnQ2lFREFrQUNRQUpBSUFSQkFXc09BZ0FCQWdzZ0N5RUREQUVMSUF3aEF3c2dBeWdDQUFzaEF5QUFLQUlvSUFRUWd3SWdBMDBOQUNBQUlBRkI4NjhMUVlyMENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBRUhqOHdvZ0FDZ0NBQ2dDa0FJUkF3QWlBMFVOQUNBRElBTW9BZ0FvQW1BUkFBQWdCQkFQSUFBb0FpZ2dCQkNEQWhCdEN3SkFJQUlnQkVFQ2RHb29BbWdpQTBGL1JnMEFBa0FnQWlrQ0RFSS9nMElEVVFSQUlBQW9BaWdnQkNBREVLQVBEUUVnQUNBQlFhZXZDMEdLOUFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUWFLdEMwR0pqUXRCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFCQjQvTUtJQUFvQWdBb0FwQUNFUU1BSWdORkRRQWdBeUFES0FJQUtBSTBFUUFBSWdNZ0F5Z0NBQ2dDS0JFQUFDSURJQU1wQWdSQ2dJQ0FnQWlFTndJRUN5QUVRUUZxSWdSQkEwY05BQXNDUUNBQ0xRQjBSUTBBSUFJcEFneENQNE5DQTFFRVFDQUFLQUlvUVFFNkFLMEVEQUVMSUFBZ0FVR2lyUXRCbnVZS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUl0QUhWRkRRQWdBaWtDREVJL2cwSURVUVJBSUFBb0FpaEJBVG9BcmdRTUFRc2dBQ0FCUWFLdEMwSEZzQXRCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0JpMEFRRVVOQUNBQ0tRSU1RaitEUWdSUkRRQWdBQ0FCUWVDc0MwSGhxd3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FpZ0NoQUVpQTBVTkFDQUNLUUlNUWorRFFnTlJCRUFnQUNnQ0tDQURFTzBKRFFFZ0FDQUJRZHl3Q3lBQ0tBS0VBUkNWQkVIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN5QUFJQUZCb3EwTElBTVFsUVJCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FpMEFpUUZGRFFBZ0FpMEFpZ0VFUUNBQUlBRkJuTEVMUWJXeEMwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FDQUNMUUNKQVVVTkFRc2dBaWtDREVJL2cwSURVUVJBQWtBZ0FDZ0NLRUVBRUlNQ1FRRnhSUVJBSUFBb0FpaEJBUkNEQWtFQmNVVU5BUXNnQUNBQlFleXhDMEdwc2d0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFnc2dBQ2dDS0VFQkVNa0pEQUVMSUFBZ0FVR2lyUXRCcWJJTFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUl0QUlvQlJRMEFJQUlwQWd4Q1A0TkNBMUVFUUNBQUtBSW9RUUFRZ3dJZ0FDZ0NLRUVCRUlNQ2JDQUFLQUlvUVFJUWd3SnNRUU54QkVBZ0FDQUJRY0t5QzBIenNndEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BZ3NnQUNnQ0tFRUNFTWtKREFFTElBQWdBVUdpclF0Qjg3SUxRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFBb0FoUkJEVWNOQUNBQUtBSW9LQUtRQkVGL1JnMEFJQUFvQWlnb0F0Z0VRWDlHRFFBZ0FDZ0NLQ2dDbUFSRkRRQWdBQ0FCUVFBUW1RUUxBa0FDUUNBQ1FRaHFJZ01RNndFTkFDQURFTVVDRFFBZ0F4Q1pBZzBBSUFJdEFBOUJCM0ZGRFFFTElBQWdBVUdOc3d0Qm9wVUxRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFNUWxnSkZCRUFnQXhEWkEwVU5BUXNnQUNBQlFZKzBDMEd3bGd0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQWdBU0FERU53SkFrQWdBaWdDREVFL2NVRjlhaUlFUVFOTkJFQUNRQUpBQWtBQ1FDQUVRUUZyRGdNQ0FBRURDeUFERU0wRUJFQWdBRUg4cVFGcUlnUWdCQ2tDQUVMLy8vLy8vLy8vUjRNZ0Fpa0NERUtBZ0lDQWdJQ0FPSU9FTndJQUN5QURFSVlEUlEwQ0lBQkIvS2tCYWlJRUlBUXBBZ0JDLy8vLy8vLy8vNzk0Z3lBQ0tRSU1Rb0NBZ0lDQWdJREFCNE9FTndJQURBSUxJQU1RelFRRVFDQUFRY2lwQVdvaUJDQUVLUUlBUXYvLy8vLy8vLzlIZ3lBQ0tRSU1Rb0NBZ0lDQWdJQTRnNFEzQWdBTElBTVFoZ05GRFFFZ0FFSElxUUZxSWdRZ0JDa0NBRUwvLy8vLy8vLy92M2lESUFJcEFneENnSUNBZ0lDQWdNQUhnNFEzQWdBTUFRc2dBeEN4QXdSQUlBQkIrNm9CYWlBQ0tRSWdRaGlJUEFBQUN5QURFSlVDQkVBZ0FFSDRxZ0ZxSWdRZ0JDa0NBRUwvLy8vL2ozNkRJQUlwQWlCQ2dJQ0FnUEFCZzRRM0FnQUxJQUJCNEtvQmFoQ1ZBa1VOQUNBREVJSUdSUTBBSUFBb0FpZ2dBRUg4cWdGcUtBSUFRUTl4SUFJcEFpQkNKSWluUWYvL0FIRVEyd2tOQUNBQUtBSUFLQUtnQVNFRUlBY2dBaWdDSkVFUGNUWUNBQ0FBSUFGQmdmNEtRWlB2Q2tITTV3a2dCeUFFRVFJQUN5QURFT2tDQkVBZ0FDQUJRY2kxQzBIcTdBcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQU1RamdRRVFDQUFJQUZCaGJZTFFiYTJDMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQXhDRkF3UkFJQUFnQVVHRnRndEI4KzRLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRExRQWxCRUFnQUNBQlFjKzJDMEdjNVFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBTXRBQ1lFUUNBQUlBRkJ6N1lMUWFybENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBeENwQlFSQUlBQWdBVUdGdHd0QmgrMEtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFETFFBd1JRMEJJQUFnQVVIUHRndEI3dmNLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBQWdBVUh6dEF0QjQ5WUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFIUVJCcUpBQUxVUUVEZnlNQVFVQnFJZ1FrQUNBREVCWUVRQU5BSUFNZ0JSQVJLQUlBSVFZZ0JFRU1haUFDUVRRUVBSb2dBQ0FCSUFSQkRHb2dCaERMQ1NBRlFRRnFJZ1VnQXhBV1NRMEFDd3NnQkVGQWF5UUFDeVVBSUFBb0FnQUVRQ0FBSUFBb0FnQVF3d2tnQUJBN0dpQUFLQUlBR2lBQUVNUUVHZ3NMOUFNQ0JuOENmaU1BUVJCcklnTWtBQUpBSUFFUXNRSkZCRUFnQVJDdUFrVU5BUXNnQVNrQ0JFSTNpS2RCRDNFaUJVRUZTMEVCSUFWMFFTeHhSWElOQUNBRFFRQTJBZ3dnQWhBM1JRMEFRUUFoQlFOQUlBSWdCUkE0S0FJQUlnUWdCQ2dDQUNnQ0tCRUFBQ0VFSUFJZ0JSQTRJUVlnQWlBRkVEZ29BZ0FpQnlBSEtBSUFLQUlvRVFBQUtRSUVJUWtnQXlBQ0lBVVFPQ2dDQUNBRFFRaHFJQU5CQkdvZ0FTa0NCQ0lLUWplSXAwRVBjU0FKUWpTSXAwRUhjU0lIUVFGR0lBcENnSUNBZ0lDQWdEaURRb0NBZ0lDQWdJQUlVU0FIR3hDWUJUWUNBQUpBSUFRUWxnSkZEUUFnQmtFRWFpRUdJQVFvQWd3Z0F5Z0NBQkNUQkVVRVFDQUFJQVpCeGFrTFFkdURDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkVFTWFpSUlLQUlBSVFjZ0FDZ0NHRVVFUUNBSElBTW9BZ3hJQkVBZ0FDQUdRZktwQzBIYmd3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQU1nQTBFTWFpQUlFS1lCS0FJQU5nSU1EQUVMSUFNZ0J6WUNEQXNDUUNBRUVOa0RSUVJBSUFNb0FnQWhCQXdCQ3lBRElBTWdCRUVRYWhDbUFTZ0NBQ0lFTmdJQUN5QURRUXhxSUFRUWhBSWdBeWdDRENFRUlBSWdCUkE0S0FJQUlnWWdCaWdDQUNnQ0tCRUFBQ0FFTmdJTUlBTWdBeWdDRENBREtBSUlhallDRENBRlFRRnFJZ1VnQWhBM1NRMEFDd3NnQTBFUWFpUUFDOTRDQUNBRlJTQUNFSUFDSUFSRmNuSkZCRUFnQUNBQlFjeW9DMEdIN0FwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBUEN3SkFJQVJGRFFCQkFDRUZBa0FnQWhDT0JFVU5BQ0FDSUFJb0FoUWlCRUgvSDNJMkFoUWdBaEN5QXdSQUlBQWdBVUd0cVF0QjQrMEtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFFUWY4ZmNTRUZJQUlRemdSRkRRQWdBQ0FCUWEycEMwR2c4Z3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFNUU4wVU5BRUVBSVFJRFFDQURJQUlRT0NnQ0FDSUJJQUVvQWdBb0FpZ1JBQUFoQVNBRElBSVFPQ0VFQWtBZ0FSQ0FBZ1JBSUFFb0FoUWhCUXdCQ3lBRlFmOGZUZ1JBSUFBZ0JFRUVha0d3N0FwQmgrd0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFCSUFWQi94OXhJQUVvQWhSQmdJQitjWEpCZ0lBQmNpSUZOZ0lVQ3lBRElBSVFPQ2dDQUNBQUtBSVVFSWNFSUFWQi94OXhhaUVGSUFKQkFXb2lBaUFERURkSkRRQUxDd3YwQVFBZ0FoQ1pBZ1JBSUFBZ0FVSGRwZ3RCejdJS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUNMUUFIUVJCeEJFQWdBQ0FCUVplbkMwSExwd3RCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJUXNnY0VRQ0FBSUFGQjFLY0xRWWFvQzBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpMEFCMEVJY1FSQUlBQWdBVUdOcUF0QndxZ0xRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFDTFFBbEJFQWdBQ2dDS0NJQklBRW9BdFFEUVFGcU5nTFVBd3NnQWkwQU1BUkFJQUFvQWlnaUFTQUJLQUxRQkVFQmFqWUMwQVFMSUFJUXJnSUVRQ0FBS0FJb0lnQWdBQ2dDM0FSQkFXbzJBdHdFQ3d2TUJRRUJmd0pBQWtBQ1FDQUNLQUlFUVQ5eFFYMXFJZ05CQ1VzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQURRUUZyRGdrREFBRUpCQVVHQndnQ0N5QUFJQUZCQ0VHc0FrRUFRZjZpQ3hBb0lBQWdBVUVCUVl3QlFZeWpDMEgrb2dzUUtDQUFLUUs4QlVLQWdJQ0FnSUNBd0FlRFFvQ0FnSUNBZ0lEQUFWSU5DU0FBTFFEZEJRMEpJQUFnQVVFQlFiemtDa0dwb3dzZ0FDZ0NBQ2dDRkJFSUFBOExJQUFnQVVFT1FkYWpDeEJLSUFBZ0FVRUdRYTREUVFCQjFxTUxFQ2dnQUNBQlFRaEJ0Z0pCQUVIV293c1FLQThMSUFBZ0FVRjNRWllCUWZURUNrSGpvd3NRS0NBQUlBRkJuc0FBUWVPakN4RFNBU0FBS0FJVUlnTkJEVWNFUUNBRFFRUkhEUWdnQUNBQlFRaEJ3QUpCQWtIc3hBcEI3Nk1MRU5FQkR3c2dBaEN1QWcwSElBQWdBVUdFcEF0QnErd0pRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQUNBQlFYZEJsZ0ZCOU1RS1FiR2tDeEFvSUFBZ0FVR1A0QUJCc2FRTEVOSUJBa0FnQUNnQ0ZDSURRUTFIQkVBZ0F3MEJJQUF0QUtRQkRRZ2dBQ0FCUVFoQndBSkJBa0hzeEFwQnZxUUxFTkVCRHdzZ0FoQ3VBZzBJSUFBb0FoUWhBd3NnQTBFTVJ3MEdJQUlRcmdJTkJpQUFJQUZCL3FRTFFhdnNDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQThMSUFBZ0FVRjNRY3dEUWF5bEMwRytwUXNRS0NBQUlBRkJ3QTVCdnFVTEVOSUJEd3NnQUNBQlFYZEJ6QU5CcktVTFFkR2xDeEFvSUFBZ0FVR0FEa0hScFFzUTBnRVBDeUFBSUFGQmQwSE1BMEdzcFF0QjVxVUxFQ2dnQUNBQlFZQUhRZWFsQ3hEU0FROExJQUFnQVVGM1Fjd0RRYXlsQzBIN3BRc1FLQ0FBSUFGQndCeEIrNlVMRU5JQkR3c2dBQ0FCUVhkQnpBTkJyS1VMUVpDbUN4QW9JQUFnQVVHQUVFR1FwZ3NRMGdFUEN5QUFJQUZCcDZZTElBQW9BclFGRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTER3c2dBQ0FCUWRLa0MwR1NyUXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMOFF3QkJYOGpBRUd3QVdzaUJTUUFBa0FDUUNBRElBTW9BZ0FvQWpBUkFBQWlCQ0FFS0FJQUtBSXNFUUFBS0FJRVFUOXhJZ2RCQTBrTkFBSkFJQWRCQlVjTkFDQUFFRE1OQUNBQUtBSVFRZmNBU2cwQkMwRUFJUVFnQUNBQlFiV1hDeUFESUFNb0FnQW9BakFSQUFBUXlRUkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQUNBQklBTWdBeWdDQUNnQ01CRUFBRUhnbHdzUXV3VkJBQ0VFSUFWQjJBQnFRUUJCQUVFQlFRQkJBRUVBRUVVaUNDQURJQU1vQWdBb0FqQVJBQUFRandFZ0NCQWJFTU1DQWtBZ0FDQUJJQWdnQWhDSkJpSUNSUVJBSUFkQkFrY05BU0FESUFNb0FnQW9BalFSQUFBaUFDQUFLQUlBS0FJb0VRQUFFTU1DREFFTEFrQWdBaUFDS0FJQUtBSjRFUUFBSWdRZ0JDZ0NBQ2dDZEJFQUFFVU5BQ0FESUFNb0FnQW9BakFSQUFBaUJDQUVLQUlBS0FKNEVRQUFSUTBBSUFNZ0F5Z0NBQ2dDTkJFQUFDQUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUk4RVFBQUVJMERDd0pBSUFJZ0FpZ0NBQ2dDZUJFQUFCQ01BMFVOQUNBRElBTW9BZ0FvQWpBUkFBQVFqQU5GRFFBZ0FpQUNLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NUQkVBQUJCZ0lBTWdBeWdDQUNnQ01CRUFBQ0lFSUFRb0FnQW9Ba3dSQUFBUVlFY05BQ0FESUFNb0FnQW9BakFSQUFBaUJDQUVLQUlBS0FKTUVRQUFFR0JCQWtnTkFFRUJJUVFEUUNBRElBTW9BZ0FvQWpBUkFBQWlCaUFHS0FJQUtBSk1FUUFBSUFRUTFnRkZCRUFnQXlBREtBSUFLQUkwRVFBQUlnWWdCaWdDQUNnQ1VCRUFBQ0FFSUFJZ0FpZ0NBQ2dDZUJFQUFDSUdJQVlvQWdBb0Frd1JBQUFnQkJEV0FSQ2JCQXNnQkVFQmFpSUVJQU1nQXlnQ0FDZ0NNQkVBQUNJR0lBWW9BZ0FvQWt3UkFBQVFZRWdOQUFzTEFrQUNRQUpBSUFkQkJVY05BQ0FDSUFJb0FnQW9BbmdSQUFBaUJDQUVLQUlBS0FJc0VRQUFFS0VERFFBZ0JVSElBR29nQXlBREtBSUFLQUl3RVFBQUVNb0JJQVZCeUFCcUVCTWhBaUFBS0FJQUtBS2dBU0VFSUFVZ0FqWUNJQ0FBSUFGQjhwY0xRWmlZQzBHYW1Bc2dCVUVnYWlBRUVRSUFJQVZCeUFCcUVCa2FJQU1nQXlnQ0FDZ0NOQkVBQUNJQUlBQW9BZ0FvQWlnUkFBQVF3d0lNQVFzZ0FDZ0NUQkFZSVFRQ1FDQUhRUUpHQkVBQ1FDQUVSUTBBSUFJZ0FpZ0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0Fpd1JBQUFRandJTkFDQUZRY2dBYWlBRElBTW9BZ0FvQWpBUkFBQVF5Z0VnQlVISUFHb1FFeUVDSUFBb0FnQW9BcUFCSVFRZ0JTQUNOZ0lRSUFBZ0FVR2ZtQXRCbUpnTFFacVlDeUFGUVJCcUlBUVJBZ0FnQlVISUFHb1FHUm9nQXlBREtBSUFLQUkwRVFBQUlnQWdBQ2dDQUNnQ0tCRUFBQkREQWd3REN5QUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUlzRVFBQUVJOENEUUVnQUNBQlFYZEJ5cGdMRUVvZ0FDQUJRWGRCcEFOQm9PTUpRY3FZQ3hBb0lBTWdBeWdDQUNnQ05CRUFBQ0lFSUFRb0FnQW9BaWdSQUFBaUJDQUVLUUlFUWtDRFFoQ0VOd0lFREFNTEFrQWdCRVVOQUNBQ0lBSW9BZ0FvQW5nUkFBQWlCQ0FFS0FJQUtBSXNFUUFBRUk4Q0RRQWdBQkF6UlEwQUFrQWdBQkNRQTBVTkFDQUFRYnFaQ3lBQUtBSUFLQUlnRVFNQURRQWdBQ0FCUWFlYUNrSGptQXRCNDlZSlFRQWdBQ2dDQUNnQ3BBRVJBZ0FNQVFzZ0FDQUJRUWhCQUVHNm1RdEI0NWdMRUNnTElBZEJCVWNOQWdzQ1FBSkFJQUFvQWloQnRnUWdBeUFES0FJQUtBSXdFUUFBSUFJUXR3UWlBa1VOQUNBQ0lBSW9BZ0FvQW5nUkFBQWlCQ0FFS0FJQUtBSXNFUUFBRUk4Q1JRMEFJQU1nQXlnQ0FDZ0NNQkVBQUNBQ0lBSW9BZ0FvQW5nUkFBQVF3QUZGRFFFTFFRQWhCQ0FBSUFGQjZaa0xJQU1nQXlnQ0FDZ0NNQkVBQUJESkJFSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FDQURJQU1vQWdBb0FqUVJBQUFpQUNBQUtBSUFLQUlvRVFBQUVNTUNEQU1MSUFJZ0FpZ0NBQ2dDRkJFQUFBUkFJQU1nQWlBQ0tBSUFLQUlVRVFBQUVFc2dBeWdDQUNnQ1pCRUJBQXdCQ3lBRElBTW9BZ0FvQWpRUkFBQWlBQ0FBS0FJQUtBSW9FUUFBRUtrRElBTWdBaUFES0FJQUtBSm9FUUVBQzBFQUlRUU1BUXNnQUNBQklBSWdBaWdDQUNnQ2VCRUFBRUhibEFzUWpBWWdBQ2dDS0NBRElBRVFxZ01oQXlBQUtBSW9JUVFnQlNBQktRSUlOd01JSUFVZ0FTa0NBRGNEQUNBRVFiWUVJQU1nQWlBRkVPd0ZJZ1FOQUNBRlFUaHFJQU1RcWdJZ0JVRW9haUFDRUtvQ0lBQWdBVUdZbUFzZ0JVRTRhaUFGUVNocUVPY0pJQVZCS0dvUUdSb2dCVUU0YWhBWkdnc2dDQkExR2dzZ0JVR3dBV29rQUNBRUMzMEJBbjlCZ0FFUVJpSUVJQUlnQTBFQUVPMENJUVVnQUNBQklBTWdBaEQwQ1FKQUlBQW9Ba3dnQkJEc0FnUkFJQUFvQWt3UUdFVU5BU0FBSUFRZ0FDZ0NBQ2dDaUFJUkFRQWdCUThMSUFBZ0FVSHA2UWtnQkNBRUtBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQkJBQ0VGQ3lBRkMyUUFBa0FnQVNrQ0JFSS9nMElFVWcwQUFrQWdBUkN4QXcwQUlBQW9BaFJCQTBjTkFDQUJJQUJCK0tvQmFpa0NBRUlZaUR3QUd3c2dBUkNWQWcwQUlBRWdBU2tDR0VMLy8vLy9qMzZESUFCQitLb0JhaWtDQUVLQWdJQ0E4QUdEaERjQ0dBc0xwUUVCQVg4Q1FBSkFJQUlvQWdCQkRVY05BQ0FDUVFocUlnTVE2UUpGRFFBZ0FpOEJJQ0FBUWRRSWFpZ0NBRThFUUNBQUlBRkI5WklMUWVyc0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQU1RbGdKRkRRRWdBQ2dDcEtzQklBSXZBU0JCQW5ScUlBSW9BaFEyQWdBUEN5QUNRUWhxSWdJUTZ3SkZEUUFnQWkwQUpnMEFJQUFnQVVHV2t3dEJ4dllLUWVQV0NVRUFJQUFvQWdBb0FxUUJFUUlBQ3d0UkFRSi9Jd0JCRUdzaUFpUUFJQUJCQ0dvUXV3a2dBRUhFeXc4MkFnd1E3UTRoQXlBQVFiRElDellDRENBQUlBTTJBZ2dnQVJETUFTRUJJQUpCQ0dvUXpBRWFJQUFnQVJDNkNTQUNRUkJxSkFBTFJnRUNmeU1BUVJCcklnSWtBQ0FBUVFocUVMOEpJQUJCeE1zUE5nSU1FTzRPSVFNZ0FFR2d5QXMyQWd3Z0FDQUROZ0lJSUFBZ0FTQUNRUWhxRUw0SklBSkJFR29rQUF0SkFRSi9Jd0JCRUdzaUFpUUFJQUJCQ0dvUXV3a2dBRUhFeXc4MkFnd1E4dzRoQXlBQVFaRElDellDRENBQUlBTTJBZ2dnQVJETUFSb2dBa0VJYWhETUFSb2dBa0VRYWlRQUMwWUJBbjhqQUVFUWF5SUNKQUFnQUVFSWFoQy9DU0FBUWNUTER6WUNEQkQ1RGlFRElBQkJnTWdMTmdJTUlBQWdBellDQ0NBQUlBRWdBa0VJYWhDK0NTQUNRUkJxSkFBTEp3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnZ2dBQ0FDUVFocUVLMFBJQUpCRUdva0FDQUFDeUFCQVg4akFFRVFheUlCSkFBZ0FDQUJRUWhxRUs4UElBRkJFR29rQUNBQUM0QUJBUU4vSXdCQkVHc2lBeVFBSUFNZ0FDQUJFTEFGTmdJSUlBTWdBQkIrTmdJQVFRQWhBQUpBSUFOQkNHb2dBeENJQVVVTkFDQURRUWhxRUZjaUJCRDlCU0lGUVg5R0JFQWdCQ0FCRUpnQ1JRMEJRUUVoQUNBQ1FRRTZBQUFNQVFzZ0JDQUZJQUVRcHc0TkFDQUNRUUE2QUFCQkFTRUFDeUFEUVJCcUpBQWdBQXZSQXdFRmZ5TUFRU0JySWdZa0FDQUNJQUlvQWdBb0FqQVJBQUFpQXlBREtBSUFLQUlzRVFBQUlRTUNRQ0FDSUFJb0FnQW9BakFSQUFBUTJnUkZEUUFnQXhEcEFrVU5BQ0FETHdFWUlBQkIxQWhxS0FJQVRnMEFBbjhnQTBFTWFpQURFSllDRFFBYUlBQW9BcVNyQVNBREx3RVlRUUowYWdzb0FnQWlCMEVEY1FSQUlBQW9BZ0FvQXFBQklRUWdCaUFITmdJUUlBQWdBVUdYalF0QjI0TUtRY3puQ1NBR1FSQnFJQVFSQWdBTElBSWdBaWdDQUNnQ05CRUFBQ0lFSUFRb0FnQW9BaWdSQUFBZ0J6WUNERUVFSVFRQ1FDQUNJQUlvQWdBb0FqQVJBQUFpQlNBRktBSUFLQUp3RVFBQVJRMEFBa0FnQWlBQ0tBSUFLQUl3RVFBQUlnVWdCU2dDQUNnQ2RCRUFBRVVOQUNBQ0lBSW9BZ0FvQWpBUkFBQWlCU0FGS0FJQUtBSk1FUUFBRUxrRkRRQWdBaUFDS0FJQUtBSXdFUUFBSWdJZ0FpZ0NBQ2dDUkJFQUFFRUNkQ0VFREFFTElBQWdBVUhIalF0Qmw3c0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFBS0FJb0lBTXZBUmdnQnlBRUVQa1hJZ0pCQUU0RVFDQUFLQUlBS0FLZ0FTRUZJQVlnQWpZQ0FDQUFJQUZCNW8wTFFkdURDa0hNNXdrZ0JpQUZFUUlBQ3lBQUtBS2txd0VnQXk4QkdFRUNkR29nQkNBSGFqWUNBQXNnQmtFZ2FpUUFDMEVBQWtBZ0EwVWdBa1Z5RFFBZ0F4QmdJQUJCdUFWcUlBQW9BaFFRMXdkTURRQWdBQ0FCUWYzM0NrR0g3QXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQytFYkFnUi9BWHdqQUVIUUFHc2lCaVFBSUFBZ0JFRzM2Z29RdndjQ1FBSkFJQVFnQkNnQ0FDZ0NSQkVBQUNJSFJRUkFRUUVoQlVFQUlRUU1BUXNnQnhCTFFRQVFEeWdDQUNFRUlBY3RBSEJGQkVBZ0FDQUJRUVpCeCtvS0VFb2dBQ0FCUVFaQnVBTkI0K29LUWNmcUNoQW9DeUFFUVg5S0RRQWdBQ0FCUWZ2cUNrRzM2Z3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0F4RHNBU0FERUpNRElBTVE3QUVRekFvZ0EwSGJnd29RS3dSQUlBQW9BaGhGQkVBZ0FDQUJRUTVCMjRNS0VFb2dCa0d3NndvcEF3QTNBMGdnQUNBQlFRWkJwQU5CQWlBR1FjZ0Fha0hiZ3dvUTBRRWdBQ0FCUVFoQnRnSkJBRUhiZ3dvUUtBc2dBaUFFTmdJVUlBVkZEUUVnQUNBQlFianJDa0hiZ3dwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBMEhRNndvUUt3UkFJQUFvQWhoRkJFQWdBQ0FCUVFaQjF1c0tFRW9nQUNBQlFRWkJ1QU5CNCtvS1FkYnJDaEFvQ3dKQUlBUVF3Z2RGQkVBZ0FDQUJRZkxyQ2tIUTZ3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQWlBRU5nSVlDeUFGUlEwQklBQWdBVUc0NndwQjBPc0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFOQmgrd0tFQ3NFUUNBQUlBRkJDRUdzQWtFQVFZZnNDaEFvSUFaQm9JZ0xLUU1BTndOSUlBQWdBVUYzUWNvQ1FRSWdCa0hJQUdwQmgrd0tFTkVCQWtBZ0JFSC9IMDhFUUNBQUlBRkJzT3dLSUFNUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFDSUFJb0FoeEJnR0J4SUFSeU5nSWNDeUFGUlEwQklBQWdBVUc0NndwQmgrd0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFOQnh1d0tFQ3NFUUFKQUFrQWdCRUUvVHdSQUlBQWdBVUhLN0FvZ0F4QVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFJZ0FpZ0NIRUgvLzRGK2NTQUVRUTkwUVlDQS9nRnhjallDSENBRVJRMEJDeUFBSUFGQjIrd0tJQUFvQWdBb0FwZ0JFUVlBQ3lBRlJRMEJJQUFnQVVHNDZ3cEJ4dXdLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBTkI2dXdLRUNzRVFDQUFJQUZCZDBHa0EwR2c0d2xCNnV3S0VDZ2dBQ0FCUVFoQnRnSkJBRUhxN0FvUUtBSkFJQVJCLy84RFR3UkFJQUFnQVVIeTdBb2dBeEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBSWdCSzBnQWlrQ0lFS0FnSHlEaERjQ0lBc2dCVVVOQVNBQUlBRkJ1T3NLUWVyc0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFEUVlmdENoQXJCRUFnQUNBQlFZZnRDaUFBS0FJQUtBS2NBUkVHQUFKQUlBUkIvdzlPQkVBZ0FDQUJRWlB0Q2lBREVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQWlBQ0tRSU1Rb0NBZ0lBSWhEY0NEQ0FDSUFJb0FpaEIvNEZnY1NBRVFRaDBRWUQrSDNGeU5nSW9JQUFvQWlnZ0JCRDJGdzBBSUFBZ0FVRzc3UW9nQXhBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUZSUTBCSUFBZ0FVRzQ2d3BCaCswS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBRUxJQU5CNCswS0VDc0VRQ0FBSUFGQkJrSGo3UW9RU2lBQUlBRkJCa0c0QTBIajZncEI0KzBLRUNnQ1FDQUVRUVJQQkVBZ0FDQUJRZTN0Q2lBREVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQWlBQ0tBSWNRZitmZm5FZ0JFRU1kRUdBNEFGeGNqWUNIQXNnQlVVTkFTQUFJQUZCdU9zS1FlUHRDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3dKQUlBTkJCRUdFN2dvUWhRSU5BQ0FBS0FJb1FRRTZBTHdFSUFBZ0FVRVBRWW51Q2hEU0FTQUFJQUZCQmtHSjdnb1FTaUFBSUFGQkJrRzRBMEhqNmdwQmllNEtFQ2dnQTBHYzB3b1FLd1JBSUFRZ0FFSDBDR29vQWdCT0JFQWdBeEFUSVFjZ0FDZ0NBQ2dDb0FFaENDQUdJQUFvQXZRSU5nSVFJQUFnQVVHbTdnb2dCMEc3N2dvZ0JrRVFhaUFJRVFJQUN3SkFJQVJCRDA0RVFDQURFQk1oQWlBQUtBSUFLQUtnQVNFRElBWkJEallDQUNBQUlBRkJwdTRLSUFKQjRPNEtJQVlnQXhFQ0FBd0JDeUFDSUFJcEFpQkMvLy8vLzQ5K2d5QUVyVUlnaG9RM0FpQUxJQVZGRFFJZ0FDQUJRYmpyQ2tHYzB3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BZ3NnQTBIejdnb1FLd1JBQWtBZ0JFSC9QMDRFUUNBREVCTWhBaUFBS0FJQUtBS2dBU0VESUFaQi9qODJBaUFnQUNBQlFmN3VDaUFDUWVEdUNpQUdRU0JxSUFNUkFnQU1BUXNnQWlBQ0tRSWdRdi8vLy8vLy8vK0JnSCtESUFTdFFqS0doRGNDSUFzZ0JVVU5BaUFBSUFGQnVPc0tRZlB1Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3Q0N5QURRWlB2Q2hBclJRMEFJQVFnQUVINENHb29BZ0JCQW5SS0JFQWdBeEFUSVFjZ0FDZ0NBQ2dDb0FFaENDQUdJQUFvQXZnSU5nSkFJQUFnQVVHZTd3b2dCMEczN3dvZ0JrRkFheUFJRVFJQUN3SkFJQVJCLy84QVRnUkFJQU1RRXlFQ0lBQW9BZ0FvQXFBQklRTWdCa0grL3dBMkFqQWdBQ0FCUWVydkNpQUNRZUR1Q2lBR1FUQnFJQU1SQWdBTUFRc2dBaUFDS1FJZ1F2Ly8vLy8vZ1lCK2d5QUVyVUlraG9RM0FpQUxJQVZGRFFFZ0FDQUJRYmpyQ2tHVDd3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQTBILzd3b1FLd1JBSUFBZ0FVSC83d29nQUNnQ0FDZ0NtQUVSQmdBQ1FDQUVRZjhCVGdSQUlBQWdBVUdXOEFvZ0F4QVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFJZ0FpZ0NLRUdBZm5FZ0JISTJBaWdMSUFWRkRRRWdBQ0FCUWJqckNrSC83d3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0EwRzA4QW9RS3dSQUlBQWdBVUVDUWNEd0NrRzA4QW9nQUNnQ0FDZ0NGQkVJQUNBQ0lBUTJBb0FCSUFWRkRRRWdBQ0FCUWJqckNrRzA4QXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FDQUFLQUlVUVFOTERRQWdBMEhJOEFvUUswVU5BQ0FBSUFGQkFVSGc4QXBCNVBBS0lBQW9BZ0FvQWhRUkNBQWdBaUFFTmdJMElBVkZEUUVnQUNBQlFianJDa0hJOEFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBMEg2OEFvUUt3UkFJQUFnQVVFQlFiemxDa0g2OEFvZ0FDZ0NBQ2dDRkJFSUFBSkFJQVFRd2dkRkJFQWdBQ0FCUWZMckNrSDY4QXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0JMY1FpQkVoQ1NBQ0lBSW9BaWhCLy8rZmNIRUNmeUFKUkFBQUFBQUFBUEJCWXlBSlJBQUFBQUFBQUFBQVpuRUVRQ0FKcXd3QkMwRUFDMEVUZEVHQWdPQVBjWEkyQWlnTElBVkZEUUVnQUNBQlFianJDa0g2OEFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc0NRQ0FBS0FJVVFYOXFJZ2RCREVzTkFBSkFBa0FDUUFKQUFrQWdCMEVCYXc0TUJRRUNCQVVGQlFVRkJRUURBQXNnQTBIeDRBa1FLMFVOQkFKQUlBUkZCRUFnQUNBQlFaSHhDa0h4NEFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBaUFFTmdKSUN5QUZSUTBGSUFBZ0FVRzQ2d3BCOGVBSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBVUxJQU5CcVBFS0VDc0VRQ0FBSUFGQkJrR1FBMEVBUWFqeENoQW9Ba0FnQkVVRVFDQUFJQUZCdFBFS1FhanhDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBQ0lBUTJBa1FMSUFWRkRRVWdBQ0FCUWJqckNrR284UXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQlFzZ0EwR1o0UWtRS3dSQUlBSWdCRFlDU0NBRUlBQW9BdmdIU2dSQUlBQWdBVUhIOFFwQm1lRUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFGUlEwRklBQWdBVUc0NndwQm1lRUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQVVMSUFOQmdmSUtFQ3RGRFFNZ0FDQUJRWGRCaVBJS0VFb2dBaUFFclR3QUl5QUVRUUZPQkVBZ0FDZ0NLQkRzQ1FzZ0JVVU5CQ0FBSUFGQnVPc0tRWUh5Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3RUN5QURRYUR5Q2hBclJRMENJQUFnQVVFR1FhYnlDaEJLSUFaQm9JZ0xLUU1BTndOSUlBQWdBVUVHUWNvQ1FRSWdCa0hJQUdwQnB2SUtFTkVCSUFJZ0JFRUNUZ1IvSUFBZ0FVSFE4Z3BCb1BJS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQVFRQUZJQVFMclR3QUlpQUZSUTBESUFBZ0FVRzQ2d3BCb1BJS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBTUxJQU5CbWVFSkVDc0VRQ0FBSUFGQkFVSGc0d3BCbWVFSklBQW9BZ0FvQWhRUkNBQWdBaUFFTmdKSUlBUWdBRUdJQ1dvb0FnQktCRUFnQUNBQlFlWHlDa0daNFFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBVkZEUU1nQUNBQlFianJDa0daNFFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUF3c2dBMEdLNFFrUUswVU5BQ0FBSUFGQkFVSGc0d3BCaXVFSklBQW9BZ0FvQWhRUkNBQWdBaUFFTmdLTUFTQUVJQUJCakFscUtBSUFTZ1JBSUFBZ0FVR2Q4d3BCaXVFSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUZSUTBDSUFBZ0FVRzQ2d3BCaXVFSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxJQU5CQzBIWDh3b1FoUUlOQUFKQUlBQW9BaFJCZm5GQkRFWUVRQ0FBSUFGQkFVSGc0d3BCNC9NS0lBQW9BZ0FvQWhRUkNBQU1BUXNnQUNBQlFRaEJ0Z0pCQUVIajh3b1FLQ0FBSUFGQmQwR3VBMEgwOHdwQjQvTUtFQ2dMSUFVRVFDQUFJQUZCdU9zS1FZcjBDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkNBREVCOUJERWR5UlFSQUlBQWdBVUcwOFFvZ0F4QVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUlMSUFOQmxmUUtFQ3NFUUNBQ1FRRTZBR1FnQWlBRU5nSllEQUlMSUFOQm92UUtFQ3NFUUNBQ1FRRTZBR1VnQWlBRU5nSmNEQUlMSUFOQnIvUUtFQ3NFUUNBQ1FRRTZBR1lnQWlBRU5nSmdEQUlMSUFBb0FoaEZEUUFnQTBHODlBb1FLd1JBSUFJZ0JEWUNhQXdDQ3lBRFFjejBDaEFyQkVBZ0FpQUVOZ0pzREFJTElBTkIzUFFLRUN0RkRRQWdBaUFFTmdKd0RBRUxJQUFnQVVIczlBb2dBeEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBR1FkQUFhaVFBQzhzRUFRSi9JQUFRL3drQ1FDQUFMUUNrQVEwQUlBQkJ1S3NCYWlJQ0VCWUVRQU5BSUFBZ0FpQUJFQkVvQWdBUW5oZ2dBVUVCYWlJQklBSVFGa2tOQUFzTEFrQWdBQ2dDRkNJQlFYOXFJZ0pCREVzTkFBSkFBa0FDUUFKQUFrQUNRQ0FDUVFKckRnc0FCZ0lHQmdZR0JnWURCQUVMSUFBUU0wVU5CQ0FBS0FJUVFiWUNSdzBFSUFBZ0FCRFhBVUVDUWFEQUNrR2Y0d29nQUNnQ0FDZ0NGQkVJQUF3RUN3SkFJQUFRTTBVTkFDQUFLQUlRUWJZQ1J3MEFJQUFnQUJEWEFVRUNRYWpBQ2tHdzR3b2dBQ2dDQUNnQ0ZCRUlBQXdFQ3lBQUVETU5BeUFBS0FJUVFZOERTZzBESUFBZ0FCRFhBVUVCUWNqakNrR3c0d29nQUNnQ0FDZ0NGQkVJQUF3REN5QUFFRE1OQWlBQUtBSVFRYTBEU2cwQ0lBQWdBQkRYQVVFQlFjempDa0hRNHdvZ0FDZ0NBQ2dDRkJFSUFBd0NDeUFBSUFBUTF3RkJBVUhnNHdwQjVPTUtJQUFvQWdBb0FoUVJDQUFNQVFzZ0FDQUFFTmNCUVFGQjRPTUtRZkhqQ2lBQUtBSUFLQUlVRVFnQUN5QUFLQUlVSVFFTElBRkJBMGNOQUNBQVFmN2pDaUFBS0FJQUtBSWdFUU1BUlEwQUFrQWdBQ2dDS0NnQ21BUU5BQ0FBS0FJb0tBS1VCRUYvYWlJQlFRUkxEUUFDUUFKQUFrQWdBVUVCYXc0RUFRTURBZ0FMSUFBb0FpaEJBUkNMQmhvTUFnc2dBQ2dDS0VFRUVJc0dHZ3dCQ3lBQUtBSW9RUWNRaXdZYUN5QUFLQUlvS0FLUUJFRi9SdzBBSUFBb0FpZ29BcFFFUVg5cUlnRkJCRXNOQUFKQUFrQUNRQ0FCUVFGckRnUUJBd01DQUFzZ0FDZ0NLRUVCRUlvR0dnOExJQUFvQWloQkFoQ0tCaG9QQ3lBQUtBSW9RUU1RaWdZYUN3c0hBQ0FBS0FJY0M0NElBUVIvSXdCQkVHc2lCaVFBQWtBQ1FBSkFJQUpGRFFBZ0FpQUNLQUlBS0FJWUVRQUFSUTBBSUFJZ0FpZ0NBQ2dDR0JFQUFDSUVJQVFvQWdBb0Fyd0JFUUFBRUJaQkFVY05BQ0FDSUFJb0FnQW9BaGdSQUFBaUFpQUNLQUlBS0FLOEFSRUFBRUVBRUJFb0FnQWlBaUFDS0FJQUtBSWdFUUFBSWdJTkFRc2dBQ0FCUWRyZENrRyszZ3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FDQUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUpnRVFBQUJFQWdBaUFDS0FJQUtBS0FBUkVBQUVFSVJnMEJJQUlnQWlnQ0FDZ0NnQUVSQUFCQkFVWU5BUXNnQUNBQlFjcmVDa0crM2dwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc0NRQUpBSUFJb0FtaEJ0Z1JIRFFBZ0FpQUNLQUlBS0FMQUFSRUFBQ0lFSUFRb0FnQW9BakFSQUFCRkRRQWdBaUFDS0FJQUtBTEVBUkVBQUNJRUlBUW9BZ0FvQWhRUkFBQU5BUXNnQUNBQlFkcmRDa0crM2dwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dCaUFDSUFJb0FnQW9Bc0FCRVFBQUlnSWdBaWdDQUNnQ01CRUFBQ0lDSUFJb0FnQW9BcmdCRVFBQU5nSU1JQVlnQUVHc3F3RnFJQVpCREdvUTF3a0NRQUpBSUFNb0FoaEZEUUFnQXlnQ0dDSUNJQUlvQWdBb0FpQVJBQUFpQWtVTkFDQUNLQUpvSVFRZ0FpQUNLQUlBS0FMQUFSRUFBQ0lGSUFVb0FnQW9BakFSQUFCRkRRQWdBaUFDS0FJQUtBTEFBUkVBQUNJRklBVW9BZ0FvQWpBUkFBQWlCU0FGS0FJQUtBSzRBUkVBQUNBR0tBSU1SdzBBUVF3Z0JFSGZmbW9pQkVIL0FYRjJRUUZ4SUFSQkIwdHlRWDl6SUFJZ0FpZ0NBQ2dDeEFFUkFBQWlBaUFDS0FJQUtBSVVFUUFBUVFCSGNRMEJDeUFBSUFGQmg5OEtRYjdlQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN3SkFBa0FnQXlnQ0hFVU5BQUovUVFGQkFDQURLQUljSWdJZ0FpZ0NBQ2dDSEJFQUFDSUVSU0FES0FJY0lnSWdBaWdDQUNnQ0lCRUFBQ0lDR3cwQUdrRUFJQU1vQWh3aUJTQUZLQUlBS0FJUUVRQUFLQUpvSWdWQmRtcEJBa2tnQlVISmUycEJBa2x5RFFBYVFRRUxJUVVDUUNBQ1JRMEFBa0FnQWlBQ0tBSUFLQUxBQVJFQUFDSUhJQWNvQWdBb0FqQVJBQUJGRFFBZ0FpQUNLQUlBS0FMQUFSRUFBQ0lISUFjb0FnQW9BakFSQUFBaUJ5QUhLQUlBS0FLNEFSRUFBQ0FHS0FJTVJ3MEFJQUlnQWlnQ0FDZ0N4QUVSQUFBaUFpQUNLQUlBS0FJVUVRQUFEUUVMUVFFaEJRc2dCQVJBSUFRZ0JDZ0NBQ2dDdkFFUkFBQWlBaUFDS0FJQUtBSXdFUUFBUlEwQklBVWdCQ0FFS0FJQUtBSzhBUkVBQUNJQ0lBSW9BZ0FvQWpBUkFBQWlBaUFDS0FJQUtBSzRBUkVBQUNBR0tBSU1SM0lOQVF3Q0N5QUZSUTBCQ3lBQUlBRkI0OThLUWI3ZUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFBSUFNb0FoUWdCaWdDRENBQUtBSk1FS01ZQ3lBR1FSQnFKQUFMMHdJQkJIOGdBU2dDbUFFb0FrQWlBeEEzQkVCQkFDRUJBMEFnQXlBQkVEZ29BZ0FpQWlBQ0tBSUFLQUlvRVFBQUlRSWdBeUFCRURoQkJHb2hCUUpBQWtBZ0FoRHJBUTBBSUFJUW1RSU5BQ0FDTFFBRVFUNXhSUTBCQ3lBQUlBVkIvdHNLSUFNZ0FSQTRLQUlBSWdRZ0JDZ0NBQ2dDR0JFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFDRU1VQ0JFQWdBQ0FGUWNMY0NpQURJQUVRT0NnQ0FDSUVJQVFvQWdBb0FoZ1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FoRHJBZ1JBSUFBZ0JVSDAzQW9nQXlBQkVEZ29BZ0FpQkNBRUtBSUFLQUlZRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdBaERERGdzZ0FpMEFCMEVJY1FSQUlBQWdCVUdtM1FvZ0F5QUJFRGdvQWdBaUFpQUNLQUlBS0FJWUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFGQkFXb2lBU0FERURkSkRRQUxDd3MvQVFGL0lBQWdBQ2dDV0NJQ1FRRk9CSDhnQUNBQlFkUFdDa0hqMWdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0FDZ0NXQVVnQWd0QkFXbzJBbGdMYUFFRGZ5TUFRUkJySWdJa0FDQUNJQUUyQWdnZ0FpQUFFRUEyQWdBZ0FDZ0NBQ0FDS0FJSUlBSW9BZ0JyUVJSdFFSUnNhaUlCUVJScUlBQW9BZ1FnQVJEOERpRURJQUFRTnlFRUlBQWdBeEREQ1NBQUlBUVEvUTRnQVJCaElRQWdBa0VRYWlRQUlBQUxzeDBDQjM4QmZpTUFRVUJxSWdja0FDQUFJQUZCQ0VIQUFrRUNRZXpFQ2tIc3l3b1EwUUVnQUNBQlFYZEJtZ05COU1RS1FlekxDaEFvQWtBQ1FDQURRWW5NQ2hDY0JFVU5BQ0FEUVpiTUNoQ2NCRVVOQUNBRFFhWE1DaENjQkVVTkFDQURRYmpNQ2hDY0JFVU5BQ0FBSUFGQnpzd0tRZWZNQ2lBREVCTkJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN3SkFJQVJGRFFBZ0JCQzNCUTBBSUFBZ0FVSDV6QW9nQkJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBRUxJQUFvQWt3aEJnSi9JQVFFUUNBSElBWWdCQ0FIUVQ5cVFRQVFyQUUyQWpnZ0JBd0JDeUFISUFZZ0FpZ0NBQ2dDQUNJR0lBWW9BZ0FvQWhnUkFBQWdCMEUvYWtFQUVLd0JOZ0k0SUFJb0FnQW9BZ0FpQmlBR0tBSUFLQUlZRVFBQUN4QVRJUVlnQnlnQ09DSUlSUVJBSUFBZ0FVR3N6UW9nQmtIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN5QUhMUUEvUlFSQUlBQWdBVUhUelFvZ0F4QVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFjZ0FDZ0NUQ0FJRU40SklnZzJBamdnQ0NBSUtBSUFLQUl3RVFBQUlnZ2dDQ2dDQUNnQ0hCRUFBRUVRUndSQUlBQWdBVUdRemdvZ0JrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDd0pBSUFBcEFyd0ZRaitEUWdSU0RRQWdBRUhncWdGcUVKVUNSUTBBSUFCQnVBVnFJZ1lRbFFKRkJFQWdBQ0FBS1FMUUJVTC8vLy8vajM2RElBQkIrS29CYWlrQ0FFS0FnSUNBOEFHRGhEY0MwQVVMSUFZUXNRTkZCRUFnQUNBQVFmaXFBV29wQWdCQ0dJZzhBTk1GQ3lBQUlBWWdBaERkQ1FzZ0J5Z0NPQ0lHSUFZb0FnQW9BalFSQUFBaENpQUFMUURmQlFSQUlBb2dDaWdDQUNnQ0tCRUFBRUVCT2dBbklBQXBBcndGSVEwZ0NpQUtLQUlBS0FJb0VRQUFJZ1lnQmlrQ0JFSkFneUFOUWorRGhEY0NCQ0FBS1FMUUJTRU5JQW9nQ2lnQ0FDZ0NLQkVBQUNBTlFoaUlQQUFiSUFBcEF0QUZJUTBnQ2lBS0tBSUFLQUlvRVFBQUlnWWdCaWtDR0VMLy8vLy9qMzZESUExQ2dJQ0FnUEFCZzRRM0FoZ0xJQWNnQ2lnQ1FCQkFOZ0l3SUFjZ0NpZ0NRQkF5TmdJWUlBZEJNR29nQjBFWWFoQWVCRUFEUUNBSFFSaHFFS1FGSUFjZ0FoQkFOZ0lJSUFkQkVHb2dCMEVJYWhCbkdpQUhJQWNvQWhBMkFpZ2dCeUFDRURJMkFoQUNRQ0FIUVNocUlnWWdCMEVRYWhBZUJFQURRQ0FIS0FJd0tBSUFJZ2dnQ0NnQ0FDZ0NHQkVBQUNBR0tBSUFLQUlBSWdnZ0NDZ0NBQ2dDR0JFQUFCQ1lBZ1JBSUFjZ0JpZ0NBQ0lJS1FJTU53TWdJQWNnQ0NrQ0JEY0RHQ0FHS0FJQUtBSUFJZ1lnQnlnQ01DZ0NBQ0lJRU9VR1JRUkFJQUFnQjBFWWFrRzR6Z29nQnlnQ01DZ0NBQ0lKSUFrb0FnQW9BaGdSQUFBUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FJSUFnb0FnQW9BbkFSQUFBZ0JpQUdLQUlBS0FKd0VRQUFjMEVCUmdSQUlBQWdCMEVZYWtIc3pnb2dCeWdDTUNnQ0FDSUpJQWtvQWdBb0FoZ1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN3SkFJQWdnQ0NnQ0FDZ0NLQkVBQUJEVUFnMEFJQWdnQmhEZURBMEFJQWdnQ0NnQ0FDZ0NkQkVBQUVVTkFDQUFJQWRCR0dwQm44OEtJQWNvQWpBb0FnQWlDU0FKS0FJQUtBSVlFUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dDQ0FJS0FJQUtBSW9FUUFBRU5RQ0RRQWdCaUFHS0FJQUtBSndFUUFBUlEwQUlBQWdBU0FIS0FJd0tBSUFJZ2tnQ1NnQ0FDZ0NHQkVBQUNBR0lBWW9BZ0FvQWp3UkFBQVF1d2NMQWtBQ1FDQUlJQWdvQWdBb0FpZ1JBQUFRMUFKRkRRQWdCaUFHS0FJQUtBSXNFUUFBRU5RQ0RRQWdBQ0FIUVJocVFkUFBDaUFIS0FJd0tBSUFJZ2tnQ1NnQ0FDZ0NHQkVBQUJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBRUxBa0FnQ0NBSUtBSUFLQUlvRVFBQUVOUUNEUUFnQmlBR0tBSUFLQUlzRVFBQUVOUUNSUTBBSUFBZ0IwRVlha0dLMEFvZ0J5Z0NNQ2dDQUNJSklBa29BZ0FvQWhnUkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBR0lBWW9BZ0FvQWl3UkFBQVExQUpGRFFBZ0NDQUlLQUlBS0FKUUVRQUFFR0FnQmlBR0tBSUFLQUpNRVFBQUVHQkhCRUFnQUNBSFFSaHFRZXpPQ2lBSEtBSXdLQUlBSWdrZ0NTZ0NBQ2dDR0JFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMQWtBZ0JpQUdLQUlBS0FKNEVRQUFEUUFnQmlBR0tBSUFLQUk4RVFBQUlBQW9BcWdKUmcwQUlBQWdBVUd4d3dwQnorQUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFZZ0JpZ0NBQ2dDVEJFQUFCQmdRUUpIRFFBZ0JpQUdLQUlBS0FKTUVRQUFRUUVRMWdFaENTQUFJQWRCR0dvZ0J5Z0NNQ2dDQUNJTUlBd29BZ0FvQWhnUkFBQWdDUkM3QnlBSUlBZ29BZ0FvQWxBUkFBQkJBU0FKRUpzRUN3SkFBa0FnQ0NBSUtBSUFLQUlvRVFBQUVMMEZSUTBBSUFZZ0JpZ0NBQ2dDTEJFQUFCQzlCUTBBSUFBZ0IwRVlha0hFMEFvZ0J5Z0NNQ2dDQUNJSklBa29BZ0FvQWhnUkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBSUlBZ29BZ0FvQWlnUkFBQVF2UVVOQUNBR0lBWW9BZ0FvQWl3UkFBQVF2UVZGRFFBZ0FDQUhRUmhxUVlEUkNpQUhLQUl3S0FJQUlna2dDU2dDQUNnQ0dCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBR0lBWW9BZ0FvQWl3UkFBQVF4UUlFUUNBQUlBZEJHR3BCdjlFS0lBY29BakFvQWdBaUNTQUpLQUlBS0FJWUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFZZ0JpZ0NBQ2dDTEJFQUFCQzlEZ1JBSUFBZ0IwRVlha0gyMFFvZ0J5Z0NNQ2dDQUNJSklBa29BZ0FvQWhnUkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQmlBR0tBSUFLQUlzRVFBQUxRQUpRUUZ4QkVBZ0FDQUhRUmhxUWF2U0NpQUhLQUl3S0FJQUlna2dDU2dDQUNnQ0dCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBWWdCaWdDQUNnQ0xCRUFBQkNWQWtVTkFDQUdJQVlvQWdBb0Fpd1JBQUFoQ1NBQUtRTFFCU0FKS1FJWWhVS0FnSUNBOEFHRFVBMEFJQUFnQjBFWWFrSFgwZ3BCbk5NS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQVlnQmlnQ0FDZ0NMQkVBQUJDeEEwVU5BQ0FHSUFZb0FnQW9BaXdSQUFBaENTQUFLUUxRQlNBSktRSVloVUtBZ0lENEQ0TlFEUUFnQUNBSFFSaHFRZGZTQ2tHbjB3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQVlnQmlnQ0FDZ0NMQkVBQUNrQ0JDRU5JQWdnQ0NnQ0FDZ0NLQkVBQUNJSklBa3BBZ1JDLy8vLy8zNkRJQTFDZ0lDQWdBR0RoRGNDQkNBR0lBWW9BZ0FvQWl3UkFBQXBBZ1FoRFNBSUlBZ29BZ0FvQWlnUkFBQWlDU0FKS1FJRVF2Ly8vLy8vdjMrRElBMUNnSUNBZ0lEQUFJT0VOd0lFSUFZZ0JpZ0NBQ2dDTEJFQUFDa0NCQ0VOSUFnZ0NDZ0NBQ2dDS0JFQUFDSUpJQWtwQWdSQy8vLy92MytESUExQ2dJQ0F3QUNEaERjQ0JDQUdJQVlvQWdBb0Fpd1JBQUFwQWdRaERTQUlJQWdvQWdBb0FpZ1JBQUFpQ1NBSktRSUVRdi8vLy85Zmd5QU5Rb0NBZ0lBZ2c0UTNBZ1FnQmlBR0tBSUFLQUlzRVFBQUtRSUVJUTBnQ0NBSUtBSUFLQUlvRVFBQUlna2dDU2tDQkVMLy8vLy9mWU1nRFVLQWdJQ0FBb09FTndJRUlBWWdCaWdDQUNnQ0xCRUFBQ2tDQkNFTklBZ2dDQ2dDQUNnQ0tCRUFBQ0lKSUFrcEFnUkMvLy8vLzN1RElBMUNnSUNBZ0FTRGhEY0NCQ0FHSUFZb0FnQW9BaXdSQUFBcEFnUWhEU0FJSUFnb0FnQW9BaWdSQUFBaUNTQUpLUUlFUXYvLy8vKy9mNE1nRFVLQWdJQ0F3QUNEaERjQ0JDQUdJQVlvQWdBb0Fpd1JBQUFwQWhnaERTQUlJQWdvQWdBb0FpZ1JBQUFpQ1NBSktRSVlRdi8vLy8vLy8vK0JnSCtESUExQ2dJQ0FnSUNBZ1A3L0FJT0VOd0lZSUFZZ0JpZ0NBQ2dDTEJFQUFDa0NHQ0VOSUFnZ0NDZ0NBQ2dDS0JFQUFDSUpJQWtwQWhoQy8vLy8vNDkrZ3lBTlFvQ0FnSUR3QVlPRU53SVlJQVlnQmlnQ0FDZ0NMQkVBQUNrQ0dDRU5JQWdnQ0NnQ0FDZ0NLQkVBQUNJSklBa3BBaGhDLy8vLy8vK0JnSDZESUExQ2dJQ0FnSUQrL3dHRGhEY0NHQ0FJSUFnb0FnQW9BaWdSQUFBcEFoaENnSUNBZ0lDQWdQNy9BSU5DZ0lDQWdJQ0FnQjVTQkVBZ0FDa0MwQVVoRFNBS0lBb29BZ0FvQWlnUkFBQWlDU0FKS1FJWVF2Ly8vLytQZm9NZ0RVS0FnSUNBOEFHRGhEY0NHQ0FBS1FMUUJTRU5JQWdnQ0NnQ0FDZ0NLQkVBQUNJSklBa3BBaGhDLy8vLy80OStneUFOUW9DQWdJRHdBWU9FTndJWUN3SkFJQWdnQ0NnQ0FDZ0NlQkVBQUVVTkFDQUdJQVlvQWdBb0FuUVJBQUJGRFFBZ0NDQUdJQVlvQWdBb0Fqd1JBQUFRalFNTElBdEJBV29oQ3lBQUlBRWdDQkM1QnlBSFFUQnFFTFFDREFNTElBWVF0QUlnQnlBQ0VESTJBaEFnQmlBSFFSQnFFQjROQUFzTElBUUVRQ0FLS0FKQUlRWWdCeUFIUVRCcUVHY2FJQWNnQmlBSEtBSUFFTHdQTmdJd0RBRUxJQWNvQWpBb0FnQWlCaUFHS0FJQUtBSUlFUVVBSUFkQk1Hb1F0QUlMSUFjZ0NpZ0NRQkF5TmdJWUlBZEJNR29nQjBFWWFoQWVEUUFMQ3lBQUtBSWdRUUZPQkVBZ0FDa0MwQVVoRFNBS0lBb29BZ0FvQWlnUkFBQWdEVUlZaUR3QUd3c2dDeUFDRURkSkJFQWdBQ0FCUWJMVENpQURFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBQ1FDQUtJQW9vQWdBb0FuQVJBQUFnQlVFQVIzTkZCRUFnQlVVZ0NpQUtLQUlBS0FKd0VRQUFSWElOQVNBS0lBb29BZ0FvQWxBUkFBQVFZQ0FGRUdCR0RRRUxJQUFnQVVIWTB3b2dBeEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBb2dDaWdDQUNnQ2NCRUFBRVVOQUFKQUlBVVFwUWNOQUNBS0lBb29BZ0FvQW5RUkFBQkZEUUFnQlNBS0lBb29BZ0FvQWp3UkFBQVE5UWtMQWtBZ0NpQUtLQUlBS0FKMEVRQUFEUUFnQlJDbEIwVU5BQ0FLSUFVUW9nY1FqUU1MSUFvZ0NpZ0NBQ2dDZEJFQUFFVU5BQ0FLSUFvb0FnQW9BbEFSQUFBZ0JSRHZDMFVOQUNBQUlBRkJoTlFLSUFNUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBQ2dDVENBSEtBSTRJZ0lRN0FJYUlBQWdBU0FDRUxnSEFrQWdBQ0FDSUFJb0FnQW9BakFSQUFBUWpnTUVRQ0FBUWNpckFXb2dCMEU0YWhEY0FTQUFJQUZCQVJDWkJBd0JDeUFDSUFJb0FnQW9BakFSQUFBaUFpQUNLQUlBS0FKd0VRQUFSUTBBSUFBZ0FTQUhLQUk0SWdFZ0FTZ0NBQ2dDTkJFQUFCREhCd3NnQUNBSEtBSTRJQUFvQWdBb0FvZ0NFUUVBQ3lBSFFVQnJKQUFMdXhJQ0JYOEJmaU1BUVNCcklnVWtBQUpBSUFJUXR3VkZEUUFnQUNnQ1RCQWtEUUFnQUNnQ1RCQVlSUTBBQW45QkFDQUFFRE1OQUJwQkFTQUFLQUlRUVlFQlNnMEFHaUFDUWQ3RUNoQXJDeUVJQWtBZ0FCQXpCRUJCQVNFR0lBQW9BaEJCdndKS0RRRWdBRUVDUWV6RUNpQUFLQUlBS0FJa0VRY0FJUVlMSUFZZ0NISkJBVWNOQVFzQ1FBSkFJQUFRTXcwQUlBQW9BaEJCakFGS0RRQWdBRUgweEFvZ0FDZ0NBQ2dDSUJFREFFVU5BRUVCSVFjZ0FrR1R4UW9RS3cwQklBSkJuOFVLRUNzTkFTQUNRYXpGQ2hBckRRRWdBa0c2eFFvUUt3MEJDd0pBSUFKQnlzVUtFQ3RGQkVBZ0JpRUpEQUVMSUFnRVFFRUFJUWNnQmlBQUtBSVFRYU1EU25KRkRRRU1BZ3RCQUNFSElBWU5BUXNDUUNBQ1FkZkZDaEFyUlEwQUlBZ0VRRUVBSVFjZ0NTQUFLQUlRUVpVQlNuSkZEUUVNQWd0QkFDRUhJQWtOQVF0QkFDRUhJQUpCNU1VS0VDc05BQ0FDUWZURkNoQXJEUUFnQWtHRXhnb1FLdzBBSUFKQmtzWUtFQ3NOQUNBQ1FaL0dDaEFyRFFBZ0FrRzJ4Z29RS3cwQUlBSkJ6TVlLRUNzTkFDQUNRZDdHQ2hBckJFQWdBQ2dDRkVFRVJnMEJDd0pBSUFKQjU4WUtFQ3NnQ0hGQkFVY05BQ0FBS0FJUVFZd0JTQTBBSUFBb0FoUkJCRVlOQVFzZ0FrSDh4Z29RS3cwQUlBSkJpc2NLRUNzTkFDQUNRWlBIQ2hBckRRQWdBa0hleEFvUUswVU5BUXNnQlNBQUtBSk1JQUlnQlVFZmFrRUFFS3dCSWdZMkFoZ2dCZ1IvQW44Z0JTMEFId1JBSUFBZ0JVRVlhaUFBS0FJQUtBS01BaEVCQUNBRktBSVlJUVlMSUFZTElBWW9BZ0FvQWpRUkFBQWlCaUFHS0FJQUtBSW9FUUFBSVFZQ1FDQUhCRUFnQUNnQ0tDQUNFTFFCQkVBZ0FDQUJRYW5IQ2lBQ0VCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQU1RNndJRVFDQUFJQUZCeE1jS1FlWEhDaUFGS0FJWUlnSWdBaWdDQUNnQ0RCRUFBQkFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FDUUNBREVNVUNEUUFnQXhEckFRMEFJQUFvQWhRaUFrRUVTdzBCQWtBQ1FDQUNRUUZyRGdRREF3TUJBQXNnQXlrQ0JFSS9nMElFVWcwQkRBSUxJQU1wQWdSQ1A0TkNBMUVOQVFzZ0FDQUJRZlBIQ2tIbHh3b2dCU2dDR0NJQ0lBSW9BZ0FvQWd3UkFBQVFFMEVBSUFBb0FnQW9BcUFCRVFJQUN5QURMUUFIUVNCeERRRWdBQ0FCUWJESUNrSGx4d29nQlNnQ0dDSUJJQUVvQWdBb0Fnd1JBQUFRRTBFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMQWtBQ1FDQUNRWVRHQ2hBckRRQWdBa0dTeGdvUUt3MEFJQUpCbjhZS0VDc05BQ0FDUWJiR0NoQXJEUUFnQWtITXhnb1FLdzBBSUFKQjNzWUtFQ3RGRFFFTElBWWdCaWtDQkVMLy8vLy9lNE1nQXlrQ0JFS0FnSUNBQklPRUlnbzNBZ1FnQmlBS1F2Ly8vLzk5Z3lBREtRSUVRb0NBZ0lBQ2c0UWlDamNDQkNBR0lBcEMvLy8vLzc5L2d5QURLUUlFUW9DQWdJREFBSU9FTndJRUlBTVE2d0lFUUNBQUlBRkJ4TWNLUWVYSENpQUZLQUlZSWdJZ0FpZ0NBQ2dDREJFQUFCQVRRUUFnQUNnQ0FDZ0NvQUVSQWdBTEFrQWdBeERGQWcwQUlBTVE2d0VOQUNBRktBSVlJZ0lnQWlnQ0FDZ0NNQkVBQUNJQ0lBSW9BZ0FvQWl3UkFBQWhBaUFES1FJRUlBSXBBZ1NGUWorRFVBMENDeUFBSUFGQjg4Y0tRZVhIQ2lBRktBSVlJZ0VnQVNnQ0FDZ0NEQkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FBSkFJQUpCM3NRS0VDc05BQ0FDUWVURkNoQXJEUUFnQWtIMHhRb1FLMFVOQVFzQ1FDQURFT3NDRFFBZ0F4REZBZzBBSUFNUTZ3RU5BQ0FHS1FJRUlBTXBBZ1NGUXIrQWdJREVBSU5RRFFJTElBQWdBVUhkeUFwQjVjY0tJQVVvQWhnaUFTQUJLQUlBS0FJTUVRQUFFQk5CQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFDUWRmRkNoQXJCRUFnQUNnQ0tDQUZRUWhxUWRmRkNoQWlJZ0lRdEFFaENTQUNFQmthSUFrRVFDQUFJQUZCcWNjS1FkZkZDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUFKQUlBWXBBZ1FnQXlrQ0JJVkNnSUNBZ01RQWcwSUFVZzBBSUFNUXhRSU5BQ0FERU9zQlJRMEJDeUFBSUFGQi9NZ0tRZVhIQ2lBRktBSVlJZ0lnQWlnQ0FDZ0NEQkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFNcEFnUkNQNE5DQTFJRVFDQUFJQUZCcE1rS1FlWEhDaUFGS0FJWUlnSWdBaWdDQUNnQ0RCRUFBQkFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQlMwQUh3MEFJQUFvQWlndEFKd0VJQVF0QUFSR0JFQWdBQ2dDS0MwQW5RUWdCQzBBQlVZTkFRc2dBQ0FCUWRISkNrSGx4d29nQlNnQ0dDSUJJQUVvQWdBb0Fnd1JBQUFRRTBFQUlBQW9BZ0FvQXFBQkVRSUFDeUFFTFFBRUJFQWdBQ2dDS0VFQk9nQ2NCQXNnQkMwQUJVVU5BU0FBS0FJb0VKSUpEQUVMSUFKQnlzVUtFQ3NFUUFKQUFrQWdCaWtDQkNBREtRSUVoVUtBZ0lDQXhBQ0RRZ0JTRFFBZ0F4REZBZzBBSUFNUTZ3RkZEUUVMSUFBZ0FVSDh5QXBCNWNjS0lBVW9BaGdpQWlBQ0tBSUFLQUlNRVFBQUVCTkJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0F5a0NCRUkvZzBJRVVnUkFJQUFnQVVHQXlncEI1Y2NLSUFVb0FoZ2lBaUFDS0FJQUtBSU1FUUFBRUJOQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkNnQ1BFVU5BU0FBS0FJb0lBVkJDR3BCeXNVS0VDSWlBaEMwQVNFRElBSVFHUm9nQXdSQUlBQWdBVUdweHdwQnlzVUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0ovSUFRb0Fqd2hBaUFBS0FJb0lnTW9BckFFSWdRRVFDQUNJQVJHREFFTElBTWdBallDc0FSQkFRc05BU0FBSUFGQnJzb0tRZVhIQ2lBRktBSVlJZ0VnQVNnQ0FDZ0NEQkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FDQUNRWlBIQ2hBclJRUkFJQUpCNThZS0VDdEZEUUVMSUFNUTZ3SUVRQ0FBSUFGQnhNY0tRZVhIQ2lBRktBSVlJZ0lnQWlnQ0FDZ0NEQkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFNcEFnUkNQNE5DQkZFTkFTQUFJQUZCZ01vS1FlWEhDaUFGS0FJWUlnRWdBU2dDQUNnQ0RCRUFBQkFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQWtIOHhnb1FLd1JBSUFRdEFFeEZCRUFnQUNBQlFlUEtDa0hseHdvZ0JTZ0NHQ0lCSUFFb0FnQW9BZ3dSQUFBUUUwRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSW9RUUU2QU0wRURBRUxJQUpCaXNjS0VDdEZEUUFnQmdKL1FRRWdBeTBBS0EwQUdrRUFJQU1vQWl4QmdIQkhEUUFhSUFBZ0FVR2J5d3BCNWNjS0lBVW9BaGdpQVNBQktBSUFLQUlNRVFBQUVCTkJBQ0FBS0FJQUtBS2dBUkVDQUNBRExRQW9Dem9BS0NBR0lBTW9BaXcyQWl3TElBVW9BaGdGUVFBTElRY0xJQVZCSUdva0FDQUhDMlFBQWtBZ0F5QURLQUlBS0FJb0VRQUFLUUlFUWorRFFnSlNCRUFnQXlBREtBSUFLQUlvRVFBQUtRSUVRaitEUWhCU0RRRUxJQU1nQXlnQ0FDZ0NLQkVBQUJEREFpQUFJQUZCcWNRS0lBSVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNMR3dFQmYwRUJJUUVnQUJBekJIOGdBUVVnQUNnQ0VFSEpBa29MQzFrQkFuOENRQ0FBRUdBZ0FSQmdSdzBBUVFFaEFpQUFFR0JCQVVvRVFBTkFJQUFnQWhDc0JTQUJJQUlRckFWSERRSWdBQ0FDRUlNR0lBRWdBaENEQmtjTkFpQUNRUUZxSWdJZ0FCQmdTQTBBQ3d0QkFTRURDeUFEQy8wRUFRSi9Jd0JCRUdzaUJpUUFBa0FDUUNBRUtBSUFJZ1VOQUNBRUlBQW9Ba3dnQWtFQUlBWkJEMm9RckFFaUJUWUNBQUpBSUFWRkRRQWdBaEMzQlVVTkFDQUFLQUpNRUNRTkFDQUVRUUEyQWdBTUFnc0NRQ0FFS0FJQUlnVUVRQ0FHTFFBUERRRUxRWUFCRUVZaUJTQUNJQU5CQUJEdEFob2dCQ0FGTmdJQUlBQW9Ba3dnQlJEc0Fob2dBQ2dDVEJBWUJFQWdBQ0FFS0FJQUlBQW9BZ0FvQW9nQ0VRRUFDeUFBS0FKTUVDUU5BaUFBSUFNUWpnTUVRQ0FBUWNpckFXb2dCQkRjQVNBQUlBRkJBUkNaQkF3REN5QUFJQUVnQkNnQ0FDSUFJQUFvQWdBb0FqUVJBQUFReHdjTUFnc2dCU0FGS0FJQUtBSXNFUUFBQkVBZ0FDQUJRZFBBQ2lBQ0VCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCRUVBTmdJQURBSUxJQVFvQWdBaUJRMEFJQUFnQVVIK3dBb2dBaEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBVWdCU2dDQUNnQ05CRUFBQ0lFSUFRb0FnQW9BbkFSQUFCRkJFQWdBQ0FCUVp2QkNpQUNFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0JDQURFT1VHUlFSQUlBQWdBVUc2d1FvZ0FoQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFRb0Fqd2dBeWdDUEJEQkQwVUVRQ0FBSUFGQjc4RUtJQUlRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN5QUVJQVFvQWdBb0FuUVJBQUFFUUNBQUlBTVFqZ01FUUNBRUlBUW9BZ0FvQWp3UkFBQWdBeUFES0FJQUtBSThFUUFBUmcwQ0N5QUFJQUZCc2NJS0lBSVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBQUlBRWdBaUFESUFNb0FnQW9BandSQUFBUXV3Y2dCQ2dDUENBREtBSThFUDhGSUFBZ0F4Q09BMFVOQUNBQUlBRkJBQkNaQkFzZ0JrRVFhaVFBQ3pnQkFuOUJBU0VCQWtBZ0FCQmdRUUZNRFFBRFFDQUFJQUVRZ3daRkJFQWdBVUVCYWlJQklBQVFZRWdOQVF3Q0N3dEJBU0VDQ3lBQ0Mxd0JBWDlCQUNFQklBSW9Ba0FpQWhBM1FRQktCRUFEUUNBQ0lBRVFPQ2dDQUNJRElBTW9BZ0FvQW5BUkFBQUVRQ0FBSUFJZ0FSQTRRUVJxSUFNZ0F5Z0NBQ2dDVEJFQUFCQzJBd3NnQVVFQmFpSUJJQUlRTjBnTkFBc0xDK2dCQUFKQUlBSWdBaWdDQUNnQ0xCRUFBQ2tDQkVJL2cwSUVVZzBBSUFBb0FoUU5BQ0FDRUl3REJFQWdBQ0FCUVhkQm03MEtFRW9NQVFzZ0FpQUNLQUlBS0FLSUFSRUFBRVVOQUNBQUlBRkJkMEcvdlFvUVNnc0NRQ0FDSUFJb0FnQW9BaXdSQUFBcEFnUkNQNE5DQTFJTkFDQUFLQUlVUVFSSERRQWdBaENNQXdSQUlBQWdBVUYzUWVTOUNoQktEQUVMSUFJZ0FpZ0NBQ2dDaUFFUkFBQkZEUUFnQUNBQlFYZEJpYjRLRUVvTEFrQWdBaUFDS0FJQUtBSXNFUUFBS1FJRVFqK0RRZ1JTRFFBZ0FDZ0NGRUVFUncwQUlBSVFqQU5GRFFBZ0FDQUJRWGRCcjc0S0VFb0xDNHNDQVFKL0lBSW9BZ0FpQkVFT1JnUkFJQUFnQWtFRWFoREFCVUVDZEdwQnZBbHFJQU0yQWdBUEN3SkFBa0FDUUNBRVFRRkhCRUFnQkVFTlJnMEJJQVJCQ0VjTkFnc0NRQ0FDTFFDUUFVRUJSdzBBSUFJb0FwUUJEUUFnQWlnQ21BRkZJUVVMSUFWRkRRRWdBQ0FFUVFKMGFpQUROZ0xzQlNBRVFRaEdCRUFnQUNBRE5nS1FCaUFBUWJ5cEFXb2lBRUVCT2dBR0lBQXRBQWNFUUNBQVFRQTZBQVVMRHdzZ0FFRzhxUUZxSWdCQkFUb0FCeUFBTFFBR0JFQWdBRUVBT2dBRkN3OExJQU5CQTBZTkFTQUFJQUZCODdrS1FaZTZDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQThMSUFBZ0FVR2h1Z29nQkJESEJFSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0xMZ0VCZjBFQklRRWdBRUVLSUFBb0FnQW9BckFCRVFNQUJIOGdBUVVnQUVFTElBQW9BZ0FvQXJBQkVRTUFDd3N0QVFGL0l3QkJFR3NpQVNRQUlBRkJBRFlDRENBQUlBRkJER29RWnhvZ0FFRUVhaEM2QnlBQlFSQnFKQUFMV3dFQ2Z5QUFJQUZCbkFGcUlnSWdBVUVJYWlJREVMWUZJQUFnQWlBQlFUeHFFSmNFSUFNUTRnSUVRQ0FBSUFKQmxLa0tRYjZwQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUNBQklBRXBBZ3hDLy8vLy8yK0ROd0lNQ3d1YUFRQUNRQ0FBTFFDa0FRMEFJQUlnQWlnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElGVWcwQUlBSWdBaWdDQUNnQ3lBRVJBQUJGRFFBZ0FDZ0NJRUVCVGdSQUlBQWdBVUc1cUFvZ0FDZ0NBQ2dDbEFFUkJnQUxJQUFvQWlSQkFVZ05BQ0FDSUFJb0FnQW9BaXdSQUFBUWdBSU5BQ0FBS0FJb0xRRE5CUTBBSUFBZ0FVSGRxQW9nQXhBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3dlFBUUVCZnlNQVFSQnJJZ1FrQUFKQUlBSWdBaWdDQUNnQ0xCRUFBQ2tDQkVJL2cwSUZVUTBBQWtBZ0FpQUNLQUlBS0FJY0VRQUFRUTlIRFFBZ0FDQUNRUkVRN3dKRkRRQWdCQ0FDRUtrQ0lBQWdBVUdycHdvZ0JCQVRJQU1RRTBFQUlBQW9BZ0FvQXFBQkVRSUFJQVFRR1JvTUFRc2dBaUFDS0FJQUtBSWNFUUFBUVJGSERRQWdBaUFDS0FJQUtBSXNFUUFBS1FJRVFqK0RRZ1ZSRFFBZ0JDQUNFS2tDSUFBZ0FVSGpwd29nQkJBVElBTVFFMEVBSUFBb0FnQW9BcUFCRVFJQUlBUVFHUm9MSUFSQkVHb2tBQXZRQVFFQmZ5TUFRUkJySWdRa0FBSkFJQUlnQWlnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElGVVEwQUFrQWdBaUFDS0FJQUtBSWNFUUFBUVE5SERRQWdBQ0FDUVEwUTd3SkZEUUFnQkNBQ0VLa0NJQUFnQVVHMHBnb2dCQkFUSUFNUUUwRUFJQUFvQWdBb0FxQUJFUUlBSUFRUUdSb01BUXNnQWlBQ0tBSUFLQUljRVFBQVFRMUhEUUFnQWlBQ0tBSUFLQUlzRVFBQUtRSUVRaitEUWdWUkRRQWdCQ0FDRUtrQ0lBQWdBVUhncGdvZ0JCQVRJQU1RRTBFQUlBQW9BZ0FvQXFBQkVRSUFJQVFRR1JvTElBUkJFR29rQUF2aUFnRUNmeU1BUVJCcklnUWtBQUpBSUFJZ0FpZ0NBQ2dDSEJFQUFFRU9SdzBBSUFJZ0FpZ0NBQ2dDSUJFQUFCQ25CVVVOQUNBQUtBSUFLQUlVSVFVZ0FDZ0NFRUdyQWt3RVFDQUFJQUZCQVVINHBBcEIvS1FLSUFVUkNBQU1BUXNnQUNBQlFRRkJrS1VLUWZ5a0NpQUZFUWdBQ3lBQ0lBSW9BZ0FvQWlBUkFBQVFnQVlFUUNBQUlBRkJBVUdVcFFwQm1LVUtJQUFvQWdBb0FoUVJDQUFMQWtBZ0FpQUNLQUlBS0FJc0VRQUFLUUlFUWorRFFnVlJEUUFDUUNBQ0lBSW9BZ0FvQWh3UkFBQkJEMGNOQUNBQUlBSkJEaER2QWtVTkFDQUVJQUlRcVFJZ0FDQUJRYktsQ2lBRUVCTWdBeEFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCQkFaR2d3QkN5QUNJQUlvQWdBb0Fod1JBQUJCRGtjTkFDQUNJQUlvQWdBb0Fpd1JBQUFwQWdSQ1A0TkNCVkVOQUNBRUlBSVFxUUlnQUNBQlFlS2xDaUFFRUJNZ0F4QVRRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0JCQVpHZ3NnQkVFUWFpUUFDMW9BQWtBQ1FDQUNLQUlBUVF4SERRQWdBaWdDbEFFTkFDQUNMd0dRQVNJQ1FSaDBRUkIxUWY4L1NnMEFJQUpCSEhSQkVIVkJnU0JJRFFFTElBQWdBVUhicEFwQjQ5WUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd3ZvQVFFQmZ3Si9JQUFRTXdSQVFRRWdBQ2dDRUVHckFrb05BUm9MUVFBZ0FCQXpEUUFhUVFFZ0FDZ0NFRUdqQTBvTkFCb2dBRUdnNHdrZ0FDZ0NBQ2dDSUJFREFBc2hBeUFDQkVBZ0FDZ0NBQ2dDcEFFaEFpQURCRUFnQUNBQlFaT1pDa0dCbVFwQjQ5WUpRUUFnQWhFQ0FFRUJEd3NnQUNBQlFkdVpDa0dCbVFwQjQ5WUpRUUFnQWhFQ0FFRUFEd3NDZnlBQUVKQURCRUJCQVNBRERRRWFJQUFnQVVHbm1ncEJnWmtLUWVQV0NVRUFJQUFvQWdBb0FxUUJFUUlBUVFFUEN5QUFJQUZCQ0VHc0FrRUFRWUdaQ2hBb0lBQWdBVUYzUWFRRFFhRGpDVUdCbVFvUUtDQURDd3YvQVFBZ0FrSFNsZ3BCQXhEVUJVVUVRQ0FBSUFGQjFwWUtJQU1nQWtFQUlBQW9BZ0FvQXFnQkVRSUFEd3NnQWtHSGx3cEJDQkRVQlVVRVFDQUFJQUZCajVjS0lBTWdBa0VBSUFBb0FnQW9BcWdCRVFJQUR3c2dBa0dxbFFvUTB3TUVRQUpBSUFBUU0wVU5BQ0FBS0FJUVFhd0NTQTBBQWtBZ0FrR3Zsd29RZWtVTkFDQUNRYmlYQ2hCNlJRMEFJQUpCd1pjS0VIb05BUXNnQUNBQlFjMlhDaUFESUFKQkFDQUFLQUlBS0FLb0FSRUNBQThMQWtBZ0FCQXpSUTBBSUFBb0FoQkJxd0pLRFFBZ0FDQUJRZlNYQ2lBRElBSkJBQ0FBS0FJQUtBS29BUkVDQUE4TElBQWdBVUhLbUFvZ0F5QUNRUUFnQUNnQ0FDZ0NyQUVSQWdBTEMzRUFJQUFnQVNBQ0lBTVFnd29DUUNBRElBTW9BZ0FvQWpBUkFBQWlBMFVOQUNBRElBTW9BZ0FvQW9RQkVRQUFFSm9FRFFBZ0F5QURLQUlBS0FLRUFSRUFBQkNUQmtVTkFDQUFJQUZCOEpNS0lBSWdBeUFES0FJQUtBTEFBUkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FMQy9FSEFRZC9Jd0JCNEFCcklnVWtBQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBeUFES0FJQUtBSWdFUUFBSWdaRkRRQUNRQ0FHS0FKb1FjOSthaUlFUVFOTERRQUNRQ0FFUVFKckRnSUJBd0FMSUFBb0FoUkJBVWNOQUNBR0lBWW9BZ0FvQXNBQkVRQUFJZ1FnQkNnQ0FDZ0NlQkVBQUNJRUlBUW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0JGSU5BQ0FFSUFRb0FnQW9BaXdSQUFBdEFBbEJBWEVOQUNBR0lBWW9BZ0FvQXNBQkVRQUFJZ1FnQkNnQ0FDZ0NNQkVBQUVVTkFDQUdJQVlvQWdBb0FzUUJFUUFBSWdRZ0JDZ0NBQ2dDTUJFQUFDSUVCRUFnQkNBRUtBSUFLQUtJQVJFQUFDa0NCRUxBL3dHRFFzQVpVUTBCQ3lBQUlBRkI4WkFLUWMvZ0NVSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dCaWdDYUVHekFVY05BQ0FHSUFZb0FnQW9Bc0FCRVFBQUVQSUJEUWNMUVFFaENDQUFJQUVnQWlBREVJUUtEUVpCQUNFRUlBTWdBeWdDQUNnQ01CRUFBQ0lIQkVBZ0J5QUhLQUlBS0FMQUFSRUFBQkFUSVFrTElBTWdBeWdDQUNnQ2hBRVJBQUFvQWdSQlAzRWlDa0Z2YWlJRFFRbE5EUUZCakpJS0lRTWdDa0VEUncwQ0RBUUxRUUVoQ0NBQUlBRWdBaUFHSUFZb0FnQW9Bc0FCRVFBQUlBQW9BZ0FvQXV3QkVRa0FEUVVnQlVJQU53TllJQVZDQURjRFVDQUZJQVlnQmlnQ0FDZ0N4QUVSQUFBaUF5QURLQUlBS0FJWUVRQUFJZ01nQXlnQ0FDZ0N2QUVSQUFBUVFEWUNTQ0FGSUFNZ0F5Z0NBQ2dDdkFFUkFBQVFNallDUUNBRlFjZ0FhaUFGUVVCckVCNUZEUVFEUUFKQUlBVkIwQUJxSUFVb0FrZ29BZ0FpQkNBRUtBSUFLQUlNRVFBQUlnUWdCQ2dDQUNnQ0ZCRUFBQkJMUVFBUUR5Z0NBRUVDZEdvaUJDQUVLQUlBSWdSQkFXbzJBZ0FnQkVFQVNnMEFJQVZCeUFCcUVNNEJHaUFGSUFNZ0F5Z0NBQ2dDdkFFUkFBQVFNallDUUNBRlFjZ0FhaUFGUVVCckVCNE5BUXdHQ3dzZ0FDZ0NBQ2dDb0FFaEF5QUZRZVBXQ1RZQ01DQUFJQUZCeFpFS0lBSkI0OVlKSUFWQk1Hb2dBeEVDQUF3RkN3SkFBa0FDUUFKQUFrQWdBMEVCYXc0SkJnVUZCUUVDQXdVRUFBdEJ3WklLSVFNTUJndEIycElLSVFNTUJRdEI5SklLSVFNTUJBdEJqcE1LSVFNTUF3c2dBQ2dDS0VFQk9nRGNBeUFBRURORkRRQkJxWk1LUVFBZ0FDZ0NLQzBBclFRYklRUUxJQVFnQmlBSGNuSkZCRUFnQUNnQ0FDZ0NvQUVoQXlBRlFlUFdDVFlDQUNBQUlBRkIrcEVLSUFKQjQ5WUpJQVVnQXhFQ0FBd0VDeUFFSWdORkRRSU1BUXRCcHBJS0lRTUxJQUFvQWdBb0FxQUJJUVFnQndSQUlBVWdBellDRkNBRklBazJBaEFnQUNBQlFmcVJDaUFDUWVHVENpQUZRUkJxSUFRUkFnQU1BZ3NnQlNBRE5nSWdJQUFnQVVINmtRb2dBa0hya3dvZ0JVRWdhaUFFRVFJQURBRUxRUUFoQ0FzZ0JVSGdBR29rQUNBSUN6WUFJQUJCdktrQmFpSUNMUUFGQkVBZ0FDQUJRY0tNQ2tIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDcEFFUkFnQWdBa0VBT2dBRkN3dStBZ0VDZnlBQUlBRWdBaUFDS0FJQUtBSjRFUUFBUWYzdUNSRHJDU0FBUVFFNkFHUWdBQ2dDWUNJRElBTW9BZ0FvQWh3UkFBQkZCRUFnQUNBQlFZVHZDVUg5N2dsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0FDZ0NLRUhEQXlBQkVQWUREd3NnQUNnQ1lDQUNJQUlvQWdBb0FuZ1JBQUFRd0FFaEJDQUFLQUlvSVFNZ0JBUkFBa0FnQTBIREF5QUFLQUpnSUFJUXR3UWlBd1JBSUFBb0FtQWdBeUFES0FJQUtBSjRFUUFBRU1BQkJFQWdBQ0FCUWFqdkNVSDk3Z2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBb0FoQkJvd05LRFFFZ0FDQUJRZHp2Q1VIOTdnbEI0OVlKUVFBZ0FDZ0NBQ2dDcEFFUkFnQU1BUXNnQUNBQlFhcndDVUg5N2dsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0FpRURDeUFBS0FJb1FjTURJQU1nQVJEV0JnOExJQU5Cd3dNZ0FpQUJFTllHQzdNT0FRVi9JQU1nQXlnQ0FDZ0NTQkVBQUNJRUlBUW9BZ0FvQXNBQkVRQUFJUVFDUUFKQUFuOGdBeWdDYUNJRlFkeDhhaUlHUVFsTEJFQUNRQUpBQWtBQ1FBSkFBa0FnQlVHemUyb2lCa0VKU3dSQUlBVkIwWDFxSWdWQkFVME5BVUVBSVFaQkFDRUZEQW9MSUFaQkIyc09BZ01DQVFzZ0JVRUJhdzBEREFRTFFRQWhCaUFFUVFRUUVTZ0NBQ0lGSUFVb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBaEJ5QUVRUVVRRVNnQ0FDSUVJQVFvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FNQlF0QkFDRUdJQVJCQXhBUktBSUFJZ1VnQlNnQ0FDZ0NGQkVBQUJCTFFRQVFEeWdDQUNFSElBUkJCQkFSS0FJQUlnUWdCQ2dDQUNnQ0ZCRUFBQkJMUVFBUUR5Z0NBQXdFQ3lBRVFRVVFFU2dDQUNJRklBVW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhCeUFFUVFZUUVTZ0NBQ0lGSUFVb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBaEJTQUVRUWNRRVNnQ0FDSUdJQVlvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FoQ0NBRVFRZ1FFU2dDQUNJRUlBUW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhCZ3dFQzBFQUlRWWdCRUVDRUJFb0FnQWlCU0FGS0FJQUtBSVVFUUFBRUV0QkFCQVBLQUlBSVFjZ0JFRURFQkVvQWdBaUJDQUVLQUlBS0FJVUVRQUFFRXRCQUJBUEtBSUFEQUlMUVFBaEJpQUVRUUVRRVNnQ0FDSUZJQVVvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FoQnlBRVFRSVFFU2dDQUNJRUlBUW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQU1BUXNDUUFKQUFrQWdCa0VIYXc0Q0FBRUNDeUFFUVFRUUVTZ0NBQ0lGSUFVb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBaEJ5QUVRUVVRRVNnQ0FDSUZJQVVvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FoQlNBRVFRWVFFU2dDQUNJR0lBWW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhDQ0FFUVFjUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBaEJnd0RDMEVBSVFZZ0JFRUNFQkVvQWdBaUJTQUZLQUlBS0FJVUVRQUFFRXRCQUJBUEtBSUFJUWNnQkVFREVCRW9BZ0FpQkNBRUtBSUFLQUlVRVFBQUVFdEJBQkFQS0FJQURBRUxRUUFoQmlBRVFRTVFFU2dDQUNJRklBVW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhCeUFFUVFRUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBTElRVUxBa0FnQlVFQ2NVVU5BQ0FES0FKb1FhMERSd1JBSUFNb0FtaEIxZ1JIRFFFTElBQWdBVUhtK1FrZ0FpQUNLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0JVRUVjVVVOQUNBREtBSm9RYXdEUndSQUlBTW9BbWhCMVFSSERRRUxJQUFnQVVHbCtna2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBVkJDSEZGRFFBQ1FDQURLQUpvUWEwRFJnMEFJQU1vQW1oQjFnUkdEUUFnQXlnQ2FFR3NBMFlOQUNBREtBSm9RZFVFUncwQkN5QUFJQUZCNC9vSklBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRklBWnlRZkcvZkhFRVFDQUFJQUZCcnZzSklBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBSElBaHlRYjlOY1FSQUlBQWdBVUhHK3drZ0FpQUNLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFWQkRuRWhCQUpBSUFNb0FtaEJzQUpHQkVBZ0JCREJCdzBCSUFBZ0FVSHMrd2tnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNDUUNBRVJRMEFJQVFRd1FjTkFDQUFJQUZCMnZ3SklBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBR1FRNXhJZ1JGRFFBZ0JCREJCdzBBSUFBZ0FVSEovUWtnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQWNnQXlnQ2FFR3dBa2R5UlFSQUlBQWdBVUc1L2drZ0FpQUNLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFjZ0JVVnlJQU1vQW1oQnJ3Skhja1VFUUNBQUlBRkJ1ZjRKSUFJZ0FpZ0NBQ2dDREJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFNb0FtaEJxd05IQkVBZ0F5Z0NhRUhVQkVjTkFRc2dCa0VNY1VVTkFDQUFJQUZCNHY0SklBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRlFZekFBSEZCZ01BQVJnUkFJQUFnQVVHci93a2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBVkJpb0FCY1VHQWdBRkdCRUFnQUNBQlFZQ0FDaUFDSUFJb0FnQW9BZ3dSQUFBUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FGUVlDQUFuRkZEUUFnQXlnQ2FFR3dBa2NFUUNBREtBSm9RYThDUncwQkN5QUFJQUZCMDRBS0lBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBTW9BbWhCcXdOSEJFQWdBeWdDYUVIVUJFY05BUXNnQlNBR2MwR0FnQUp4UlEwQUlBQWdBVUdlZ1FvZ0FpQUNLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQzFVQkEzOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQkVMRUpJQUFnQWtFSWFoQ3dDU0VBSUFFUUh5RURRZStCQ2hDZ0FTRUVJQUFnQVJBVElBTWdBeUFFYWhDdkNTQUFRZStCQ2lBRUVLQUhHaUFDUVJCcUpBQUxwU0FCQ0g4akFFRWdheUlKSkFBQ1FDQURJQU1vQWdBb0FoZ1JBQUFFUUNBRElBTW9BZ0FvQWhnUkFBQWlCU0FGS0FJQUtBSzhBUkVBQUNJRkVCWkZEUUVnQlVFQUVCRW9BZ0FpQnlBSEtBSUFLQUlNRVFBQUlRY01BUXNnQXlBREtBSUFLQUljRVFBQUlnVWdCU2dDQUNnQ3ZBRVJBQUFoQjBFQUlRVUxJQWxCRUdvUTFRRWhDZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU1vQW1naUJFSEhCRXdFUUNBRVFad0RUQVJBSUFSQnhRSk1CRUFnQkVIZ2ZXcEJCRWtOQ0NBRVFkTjlha0VDU1EwSklBUkIwWDFxUVFKUERROGdCUkFXUlEwUERBNExJQVJCbDMxcUlnWkJCMHNFUUNBRVFjWUNSdzBQREEwTElBWkJCMnNOQ1F3TUN5QUVRZU44YWlJRVFSQkxEUTBnQkVFQmF3NFFBZzBORFEwTkJRVUZCUVVGQlFVRkJRRUxJQVJCczN0cUlnWkJ3Z0JORFFnZ0JFSFVlbW9pQmtFRVN3UkFJQVJCeUFSSERRME1DZ3NnQmtFQmF3NEVEQXdNQXdJTElBVkJBUkFSS0FJQUlnUWdCQ2dDQUNnQ0ZCRUFBRVVFUUNBQUlBRkJ0SU1LUWR1RENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd01DeUFGUVFFUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBZ0JVRUJFQkVvQWdBaUJDQUVLQUlBS0FJVUVRQUFFRXRCQVJBUEtBSUFjaUFGUVFFUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVMwRUNFQThvQWdCeUlBVkJBUkFSS0FJQUlnVWdCU2dDQUNnQ0ZCRUFBQkJMUVFNUUR5Z0NBSEpCQkVrTkN5QUFJQUZCNG9NS1FkdURDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdMQ3lBRlFRRVFFU2dDQUNJRUlBUW9BZ0FvQWhRUkFBQkZCRUFnQUNBQlFiU0RDa0dKaEFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUN3c2dCVUVCRUJFb0FnQWlCQ0FFS0FJQUtBSVVFUUFBRUV0QkFCQVBLQUlBSUFWQkFSQVJLQUlBSWdRZ0JDZ0NBQ2dDRkJFQUFCQkxRUUVRRHlnQ0FISWdCVUVCRUJFb0FnQWlCU0FGS0FJQUtBSVVFUUFBRUV0QkFoQVBLQUlBY2tFZ1NRMEtJQUFnQVVHT2hBcEJpWVFLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFvTElBVkJDaEFSS0FJQUlnVWdCU2dDQUNnQ0ZCRUFBQTBKSUFBZ0FVRzBnd3BCajRVS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBa0xJQVZCQVJBUktBSUFJZ1VnQlNnQ0FDZ0NGQkVBQUEwSUlBQWdBVUcwZ3dwQm5vVUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQWdMSUFVUUZrRUVUdzBHSUFjZ0J5Z0NBQ2dDZUJFQUFDSUZJQVVvQWdBb0Fod1JBQUJCQ2tjRVFDQUhJQWNvQWdBb0FuZ1JBQUFpQlNBRktBSUFLQUljRVFBQVFRdEhEUWdMSUFsQnlJY0tLUU1BTndNQUlBQWdBVUVDSUFrZ0FpQUNLQUlBS0FJTUVRQUFFQk1nQUNnQ0FDZ0NGQkVJQUF3SEN3SkFJQWNnQnlnQ0FDZ0NlQkVBQUNJRUlBUW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0ExRU5BQ0FISUFBUU13Ui9RUUFGSUFBb0FoQkJ0d05LQ3hETkZDSUVCRUFnQkNBRUtBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ0xCRUFBQ2tDQkVJL2cwSURVUTBCQ3lBQUlBRkIwSWNLSUFJZ0FpZ0NBQ2dDREJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFES0FKb1FhTUNSdzBHSUFjZ0J5Z0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0Fpd1JBQUFRa3daRkJFQWdBQ0FCUVpTSUNrSEppQXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQndzZ0JVRUJFQkVvQWdBaUJDQUVLQUlBS0FJVUVRQUFSUVJBSUFBZ0FVRzBnd3BCMVlnS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBY0xJQVZCQVJBUktBSUFJZ1VnQlNnQ0FDZ0NGQkVBQUJCTFFRQVFEeWdDQUVFRFNRMEdJQUFnQVVIaWlBcEIxWWdLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFZTElBQW9BaWdRN0FrTUJRc2dCVUVCRUJFb0FnQWlCQ0FFS0FJQUtBSVVFUUFBUlFSQUlBQWdBVUcwZ3dwQi9vZ0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQVVMSUFWQkFSQVJLQUlBSWdVZ0JTZ0NBQ2dDRkJFQUFCQkxRUUFRRHlnQ0FDSUZRUUJNQkVBZ0FDQUJRWXVKQ2tIK2lBcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1CUXNnQlJEQ0J3MEVJQUFnQVVHbmlRcEIvb2dLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFRTEFrQUNRQUpBQWtBQ1FDQUdRUXByRGprSUNBZ0lDQWdJQ0FnRkNBZ0lDQUVJQVFFQkNBRUlBUWdCQkFRRUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUF3TURDQWdJQ0FnQ0FnSUFDd0pBQWtBZ0J5QUhLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NJQkVBQUMwQUFFRUlSd1JBSUFRZ0JDZ0NBQ2dDSUJFQUFDMEFBRUVKUncwQkN5QUVJQVFvQWdBb0Fpd1JBQUF0QUNSQkdrWU5BU0FFSUFRb0FnQW9BaXdSQUFBdEFDUkJKVVlOQVNBQUlBRkI5NFVLSUFJZ0FpZ0NBQ2dDREJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFJZ0FpZ0NBQ2dDREJFQUFFRVRRYW1HQ2hDRkFnUkFJQUFnQVVHOWhnb2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dCQ0FFS0FJQUtBSXNFUUFBTFFBa1FRTkdEUUFnQUJBelJRMEFJQUFnQVVIZWhnb2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBUWdCQ2dDQUNnQ0lCRUFBQkNLQVNFRUlBVVFGa0VGUVFRZ0JCdE5EUWNNQmdzZ0F5Z0NhRUdiZTJvaUJFRUtTdzBHUVFJaEJnSkFBa0FDUUFKQUlBUkJBV3NPQ2dvQUF3RUtBUW9DQ2dJREMwRUNRUU1nQnlBSEtBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ0lCRUFBQkQyQlJzaEJnd0NDMEVESVFZTUFRdEJCQ0VHQ3lBRkFuOGdCVUVCRUJFb0FnQWlCQ0FFS0FJQUtBSU1FUUFBSWdRZ0JDZ0NBQ2dDZ0FFUkFBQkJBMFlFUUNBSElBY29BZ0FvQW5nUkFBQWlCQ0FFS0FJQUtBSWdFUUFBS0FJQVFSRjJRUUZ4SUFacUlRWUxJQVlMRUJFb0FnQWlCQ0FFS0FJQUtBSVVFUUFBUlFSQUlBQWdBVUcwZ3dwQnRvUUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQWNMSUFVZ0JoQVJLQUlBSWdRZ0JDZ0NBQ2dDREJFQUFDSUVJQVFvQWdBb0FuZ1JBQUFpQ0NBSUtBSUFLQUl3RVFBQVFRRklEUVpCQUNFRUEwQUNRQ0FGSUFZUUVTZ0NBQ0lMSUFzb0FnQW9BaFFSQUFBUVN5QUVFQThvQWdBaUN5QUFLQUtFQjB3RVFDQUxJQUFvQW9BSFRnMEJDeUFBSUFGQnc0UUtRYmFFQ2tIYWhBcEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0JFRUJhaUlFSUFnZ0NDZ0NBQ2dDTUJFQUFFZ05BQXNNQmdzZ0FDQUJRUUZCc0lNS0lBSWdBaWdDQUNnQ0RCRUFBQkFUSUFBb0FnQW9BaFFSQ0FBTUJRc0NRQ0FES0FKb1FZVUZSZ1JBSUFJZ0FpZ0NBQ2dDa0FFUkFBQkJCRW9OQVF3R0N5QURLQUpvUVlZRlJ3UkFJQU1vQW1oQmh3VkhEUVlMSUFJZ0FpZ0NBQ2dDa0FFUkFBQkJCa2dOQlFzZ0NpQUNJQUlvQWdBb0Fnd1JBQUFRNkFJZ0NrR1hnd29Ra2dFZ0FDQUJRWGRCd2dOQkFDQUtFQk1pQlJBb0lBQWdBVUVCUWF5RENpQUZJQUFvQWdBb0FoUVJDQUFNQkFzZ0NpQUNJQUlvQWdBb0Fnd1JBQUFRNkFJZ0NrSHZnUW9Ra2dFZ0FDQUJRUWhCdGdKQkFDQUtFQk1pQmhBb0FrQWdBeWdDYUVHUWUyb2lCRUVDU3cwQUFrQUNRQUpBQWtBZ0JFRUJhdzRDQVFJQUMwRUNJUVFDUUFKQUlBSWdBaWdDQUNnQ2tBRVJBQUJCQWtvTkFDQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlDQ0FJS0FJQUtBSWtFUUFBTFFBQlFRaDBRWUFLUmcwQUlBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUlJQWdvQWdBb0FpUVJBQUF0QUFKQkFuRkZEUUVMSUFBZ0FVRjNRWkFEUWZXQkNpQUdFQ2dnQWtFQUlBSW9BZ0FvQXFBQkVRTUFLQUlFSWdnZ0NDZ0NBQ2dDSkJFQUFDMEFBa0VDY1VVTkF3d0VDeUFBSUFGQmQwR1FBMEdJZ2dvZ0JoQW9EQU1MSUFBZ0FVRjNRWkFEQW44Q1FDQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlCQ0FFS0FJQUtBSWtFUUFBTFFBQlFRaDBRWUFFUncwQUlBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUVJQVFvQWdBb0FpUVJBQUF0QUFKQkFuRU5BRUdJZ2dvZ0FpQUNLQUlBS0FLUUFSRUFBRUVEUmcwQkdndEI5WUVLQ3lBR0VDaEJBeUVFSUFWQkEwRUNJQUpCQUNBQ0tBSUFLQUtnQVJFREFDZ0NCQ0lJSUFnb0FnQW9BaVFSQUFBb0FnQkJnSUFJY1JzUUVTZ0NBQ0lJSUFnb0FnQW9BaFFSQUFCRkJFQWdBQ0FCUVFoQndBSkJBa0dFM3dsQm5vSUtFTkVCQ3lBQ1FRQWdBaWdDQUNnQ29BRVJBd0FvQWdRaUNDQUlLQUlBS0FJa0VRQUFMUUFDUVFKeFJRMEJEQUlMSUFBZ0FVRjNRWkFEUWZXQkNpQUdFQ2hCQXlFRUlBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUlJQWdvQWdBb0FpUVJBQUFvQWdCQmdJQUljU0VJSUFWQkEwRUNJQUpCQUNBQ0tBSUFLQUtnQVJFREFDZ0NCQ0lMSUFzb0FnQW9BaVFSQUFBb0FnQkJnSUFJY1JzUUVTZ0NBQ0lMSUFzb0FnQW9BaFFSQUFCRkJFQWdBQ0FCUWJ1Q0NpQUdRZHlDQ2tFQUlBQW9BZ0FvQXFBQkVRSUFDeUFJRFFFTElBUWdBaUFDS0FJQUtBS1FBUkVBQUU0TkFDQUZJQVFRRVNnQ0FDSUlJQWdvQWdBb0FoUVJBQUFFUUNBRklBUVFFU2dDQUNJRklBVW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQkJCRWtOQVNBQUlBRkI3WUlLSUFaQmhJTUtRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUWJ1Q0NpQUdRWVNEQ2tFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFNb0FtaEI4QVJHQkVBZ0FpQUNLQUlBS0FLUUFSRUFBRUVEU2cwQkRBVUxJQU1vQW1oQjhRUkhCRUFnQXlnQ2FFSHlCRWNOQlFzZ0FpQUNLQUlBS0FLUUFSRUFBRUVGU0EwRUN5QUtJQUlnQWlnQ0FDZ0NEQkVBQUJEb0FpQUtRWmVEQ2hDU0FTQUFJQUZCZDBIQ0EwRUFJQW9RRXlJRkVDZ2dBQ0FCUVFGQnJJTUtJQVVnQUNnQ0FDZ0NGQkVJQUF3REN5QUFJQUZCZDBIQ0EwR3poUXBCMTRVS0VDZ01BZ3NnQUNnQ0dFSC9pUVJMRFFFZ0JVRUJFQkVvQWdBaUJTQUZLQUlBS0FJVUVRQUFEUUVnQUNBQlFiU0RDa0hGaVFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUVFGQmlJY0tJQUlnQWlnQ0FDZ0NEQkVBQUJBVElBQW9BZ0FvQWhRUkNBQWdBQ0FCSUFJZ0F4RFZEd3NDUUNBREtBSm9RYU43YWlJRlFRcExRUUVnQlhSQmpReHhSWElOQUVFQUlRVWdBa0VBSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ1FnQkNnQ0FDZ0NKQkVBQUNJRUVLTUhCRUFnQkJDb0FrRUJjeUVGQ3lBRklBUVEvUUZCQVhNZ0F5Z0NhRUhtQkVjRWZ5QURLQUpvUWVjRVJ3VkJBQXR5Y1VFQlJ3MEFJQUFnQVVFQlFjaUpDaUFDSUFJb0FnQW9BZ3dSQUFBUUV5QUFLQUlBS0FJVUVRZ0FDd0pBSUFNb0FtaEJ3MzFxUWMwQVR3MEFJQUFvQWhoQmYycEIvb1VFVFFSQUlBQWdBVUd0MmdsQnpJa0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFIUlEwQUlBY2dCeWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaHdSQUFCQmZXb2lBMEVJU3cwQUFrQUNRQUpBQWtBZ0EwRUJhdzRJQUFBQkFRUUVBZ0lEQ3lBSklBSVF5Z0VnQUNBQlFRRkIySWtLSUFrUUV5QUFLQUlBS0FJVUVRZ0FJQWtRR1JvTUF3c2dDU0FDRU1vQklBQWdBVUVCUWR5SkNpQUpFQk1nQUNnQ0FDZ0NGQkVJQUNBSkVCa2FEQUlMSUFrZ0FoREtBU0FBSUFGQkFVSGdpUW9nQ1JBVElBQW9BZ0FvQWhRUkNBQWdDUkFaR2d3QkN5QUpJQUlReWdFZ0FDQUJRUUZCNUlrS0lBa1FFeUFBS0FJQUtBSVVFUWdBSUFrUUdSb0xJQW9RR1JvZ0NVRWdhaVFBQzk4R0FRZC9Jd0JCRUdzaUFpUUFJQUpCQURZQ0RDQUFJQUFvQWdBb0FoQVJBQUFpQlFSQUFrQUNRQ0FBSUFBb0FnQW9BaHdSQUFBaUJnUkFJQUlnQVVFQUlBRW9BZ0FvQXFBQkVRTUFLQUlFSWdBZ0FDZ0NBQ2dDS0JFQUFDMEFCMEVIY1RZQ0NDQUNJQVlnQmlnQ0FDZ0N2QUVSQUFBaUFDQUFLQUlBS0FKNEVRQUFJZ0FnQUNnQ0FDZ0NMQkVBQUMwQUIwRUhjVFlDQkNBQ0lBSkJDR29nQWtFRWFoQ21BU2dDQURZQ0RDQUJJQUVvQWdBb0FqQVJBQUFpQUNBQUtBSUFLQUljRVFBQVFReEdEUUlnQVNBQktBSUFLQUl3RVFBQUlnQWdBQ2dDQUNnQ0xCRUFBQzBBQjBFSGNVVU5BU0FCSUFFb0FnQW9BakFSQUFBaUFDQUFLQUlBS0FJc0VRQUFMUUFIUVFkeElRY01BZ3NnQUNBQUtBSUFLQUlZRVFBQUlnUkZEUUVnQkNBRUtBSUFLQUs4QVJFQUFDSUlFQlloQUVFQklRWUNRQUpBSUFRb0FtZ2lBMEhnZldwQkEwa05BQ0FEUWVKNmFpSURRUUZOQkVBZ0EwRUJhdzBCUVFJaEJnd0JDeUFBSWdaRkRRRUxRUUFoQUFOQUlBSWdDQ0FBRUJFb0FnQWlBeUFES0FJQUtBSU1FUUFBSWdNZ0F5Z0NBQ2dDaEFFUkFBQXRBQWRCQjNFMkFnZ2dBaUFDUVF4cUlBSkJDR29RcGdFb0FnQTJBZ3dnQWlBQklBQWdBU2dDQUNnQ29BRVJBd0FvQWdRaUF5QURLQUlBS0FJb0VRQUFMUUFIUVFkeE5nSUlJQUlnQWtFTWFpQUNRUWhxRUtZQktBSUFOZ0lNSUFCQkFXb2lBQ0FHUncwQUN3c0NRQUpBSUFRb0FtaEJubnRxUVRaSkRRQWdCQ2dDYUVISkJFWU5BQ0FFS0FKb1Fjb0VSZzBBSUFRb0FtaEJ5d1JHRFFBZ0JDZ0NhRUhNQkVjTkFRc2dDRUVBRUJFb0FnQWlBQ0FBS0FJQUtBSU1FUUFBSWdBZ0FDZ0NBQ2dDaEFFUkFBQXRBQWRCQjNFaEJ3d0NDeUFCSUFFb0FnQW9BakFSQUFBaUFDQUFLQUlBS0FJY0VRQUFRUXhHRFFFZ0FTQUJLQUlBS0FJd0VRQUFJZ0FnQUNnQ0FDZ0NMQkVBQUMwQUIwRUhjVVVOQUNBQklBRW9BZ0FvQWpBUkFBQWlBQ0FBS0FJQUtBSXNFUUFBTFFBSFFRZHhJUWNNQVFzZ0FpZ0NEQ0VIQ3lBRklBVW9BZ0FvQW9RQkVRQUFJZ0FnQUNrQ0JFTC8vLzlIZ3pjQ0JDQUNLQUlNSWdBRVFDQUZJQUFnQlNnQ0FDZ0NqQUVSQVFBZ0JTQUNLQUlNTmdKc0N5QUZJQVVvQWdBb0FvUUJFUUFBSWdBZ0IwRVlkRUdBZ0lBNGNhMGdBQ2tDQkVMLy8vOUhnNFEzQWdRTElBSkJFR29rQUF2UEJRRUJmd0pBSUFKQndYeHFJZ05CQVVzRVFDQUNRYThDUncwQklBQW9BaFJCQVVjTkFTQUFLQUpjUVFGT0JFQWdBQ0FCUWZUd0NVSGoxZ2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBdEFMQUZSUVJBSUFBZ0FVRzQ4UWxCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUR3c2dBQzBBWlVVTkFTQUFJQUZCNmZFSlFlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQThMSUFOQkFXdEZCRUFnQUNnQ0ZFRUVSd1JBSUFBZ0FVR3o5UWxCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUF0QUxBRlJRUkFJQUFnQVVIczlRbEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBQXRBR1ZGRFFBZ0FDQUJRWnIyQ1VIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQUFvQWx4QkFVNEVRQ0FBSUFGQjR2WUpRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FDZ0NvQUZCQVU0RVFDQUFJQUZCby9jSlFlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQUNnQ25BRkZCRUFnQUNBQlFlUDBDVUhqMWdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQWdBQ2dDb0FGQkFXbzJBcUFCREFFTElBQW9BaFJCQkVjRVFDQUFJQUZCdFBJSlFlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBQUxRQ3dCVVVFUUNBQUlBRkI3L0lKUWVQV0NVSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFBTFFCbFJRMEFJQUFnQVVHZjh3bEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSmNRUUZPQkVBZ0FDQUJRZW56Q1VIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQUFvQXB3QlFRRk9CRUFnQUNBQlFhejBDVUhqMWdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQW9BcUFCUVFGT0JFQWdBQ0FCUWVQMENVSGoxZ2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBZ0FDZ0NuQUZCQVdvMkFwd0JJQUFvQWlnb0FxZ0VEUUFnQUNnQ0tFRUJFTzBKR2dzTEtBQWdBQkFiR2lBQkJFQURRQ0FCS0FJQUlRQWdBVUVJYWhEb0NTQUJFQ29nQUNJQkRRQUxDd3ZHQWdFRmZ5TUFRZUFBYXlJRUpBQUNRQ0FBS0FKTUlBSWdBaWdDQUNnQ0dCRUFBQ0FEUVFBUXJBRWlCUVJBSUFVZ0JTZ0NBQ2dDSEJFQUFDRUREQUVMSUFSQjBBQnFFSk1CSVFVZ0FDZ0NUQ0FDSUFJb0FnQW9BaGdSQUFBZ0JTQURFTFVISUFNdEFBQWhBeUFFUVFBNkFFOGdCRUU0YWlBRkVNNEdJUVlnQkNBRE9nQWtJQVFnQURZQ0lDQUVJQVFwQXlBM0F3Z2dCaUFDQW44Z0JFRW9haUlISUFSQkNHb1FzQThnQndzZ0JFRVFhaEN5RHlJSUlBUkJ6d0JxRUlFS0lRTWdDQkNzQWlBSEVLd0NJQVlRMndFQ1FDQURSUVJBSUFBZ0FVRzdrUXNnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQkMwQVQwVU5BQ0FBSUFGQnZwSUxJQUlnQWlnQ0FDZ0NEQkVBQUJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUZFTnNCQ3lBRVFlQUFhaVFBSUFNTHlBSUJCWDhqQUVIZ0FHc2lCQ1FBQWtBZ0FDZ0NUQ0FDSUFJb0FnQW9BaGdSQUFBZ0EwRUFFS3dCSWdVRVFDQUZJQVVvQWdBb0Fod1JBQUFoQXd3QkN5QUVRZEFBYWhDVEFTRUZJQUFvQWt3Z0FpQUNLQUlBS0FJWUVRQUFJQVVnQXhDMUJ5QURMUUFBSVFNZ0JFRUFPZ0JQSUFSQk9Hb2dCUkRPQmlFR0lBUWdBem9BSkNBRUlBQTJBaUFnQkNBRUtRTWdOd01JSUFZZ0FnSi9JQVJCS0dvaUJ5QUVRUWhxRUs0UElBY0xJQVJCRUdvZ0FCQ3hEeUlJSUFSQnp3QnFFSUVLSVFNZ0NCQ3NBaUFIRUt3Q0lBWVEyd0VDUUNBRFJRUkFJQUFnQVVHN2tRc2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dCQzBBVDBVTkFDQUFJQUZCdnBJTElBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRkVOc0JDeUFFUWVBQWFpUUFJQU1MalFZQkJuOGpBRUVnYXlJR0pBQUNRQ0FBS0FKTUlBSWdBaWdDQUNnQ0dCRUFBQ0FEUVFBUXJBRWlDQVJBSUFnZ0NDZ0NBQ2dDSEJFQUFDRUREQUVMSUFaQkVHb1Frd0VoQ1NBQUtBSk1JQUlnQWlnQ0FDZ0NHQkVBQUNBSklBTVF0UWNnQmlBSkVFQTJBZ2dnQmlBSkVESTJBZ0FDUUNBR1FRaHFJQVlRSGdSQVFRQWhBd05BSUFNaENDQUdLQUlJS0FJQUlRTUNRQUpBSUFJZ0FpZ0NBQ2dDa0FFUkFBQWdBeUFES0FJQUtBS1FBUkVBQUVjTkFDQURJQU1vQWdBb0FwQUJFUUFBUVFGT0JFQkJBQ0VFQTBBQ1FDQURJQVFnQXlnQ0FDZ0NvQUVSQXdBb0FnUWdBaUFFSUFJb0FnQW9BcUFCRVFNQUtBSUVFS01DRFFBZ0F5QUVJQU1vQWdBb0FxQUJFUU1BS0FJRUlnVWdCU2dDQUNnQ2NCRUFBQTBESUFJZ0JDQUNLQUlBS0FLZ0FSRURBQ2dDQkNJRklBVW9BZ0FvQW5BUkFBQU5BeUFESUFRZ0F5Z0NBQ2dDb0FFUkF3QW9BZ1FnQWlBRUlBSW9BZ0FvQXFBQkVRTUFLQUlFRVBzSFJRMERRUUVoQlNBRElBUWdBeWdDQUNnQ29BRVJBd0FvQWdRaUJ5QUhLQUlBS0FJb0VRQUFFTU1IQkVBZ0FDZ0NLQ0FDSUFRZ0FpZ0NBQ2dDb0FFUkF3QW9BZ1FpQlNBRktBSUFLQUljRVFBQUlBTWdCQ0FES0FJQUtBS2dBUkVEQUNnQ0JDSUZJQVVvQWdBb0Fod1JBQUJCQUJEaEFpRUZDeUFESUFRZ0F5Z0NBQ2dDb0FFUkF3QW9BZ1FpQnlBSEtBSUFLQUlvRVFBQUVOVUVCRUFnQUNnQ0tDQURJQVFnQXlnQ0FDZ0NvQUVSQXdBb0FnUWlCeUFIS0FJQUtBSWNFUUFBSUFJZ0JDQUNLQUlBS0FLZ0FSRURBQ2dDQkNJSElBY29BZ0FvQWh3UkFBQkJBQkRoQWlBRmNRMEJEQVFMSUFWRkRRTUxJQVJCQVdvaUJDQURJQU1vQWdBb0FwQUJFUUFBU0EwQUN3c2dDRVVOQVNBQUlBRkI0WkVMSUFJZ0FpZ0NBQ2dDREJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFJSVFNTElBWkJDR29RWmhvZ0JpQUpFREkyQWdBZ0JrRUlhaUFHRUI0TkFBc2dBdzBCQzBFQUlRTWdBQ0FCUWJ1UkN5QUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0NSRGJBUXNnQmtFZ2FpUUFJQU1MV2dBZ0FDZ0NUQ0FDSUFJb0FnQW9BaGdSQUFBZ0EwRUFFS3dCSWdORkJFQWdBQ0FCUWJ1UkN5QUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUVFQUR3c2dBeUFES0FJQUtBSWNFUUFBQzE0QkJIOGpBRUVRYXlJQ0pBQUNRQ0FBTFFBUkRRQWdBQkRCQWlFREEwQWdBQ0FERUJFb0FnQWdBU0FDUVE5cUVMTVBJZ1ZGQkVBZ0F5QUZRUUZ6YXlJRFFYOUtEUUVNQWdzTElBSXRBQTlCQUVjaEJBc2dBa0VRYWlRQUlBUUwzQVFCQTM4akFFRWdheUlFSkFBZ0JFRVFhaUFDSUFJb0FnQW9BakFSQUFBUXFRSWdCRUVRYWhBVElRVUNmd0pBSUFJZ0FpZ0NBQ2dDa0FFUkFBQkJBa2NFUUNBQUlBRkIvcUVLSUFWQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBaUFDS0FJQUtBSXdFUUFBSWdNZ0F5Z0NBQ2dDY0JFQUFBUkFJQUFnQVVHcG9nb2dCVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3dKQUFrQWdBa0VBSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ01nQXlnQ0FDZ0NIQkVBQUVFT1J3MEFJQUpCQUNBQ0tBSUFLQUtnQVJFREFDZ0NCQ0lESUFNb0FnQW9BaVFSQUFBUW93ZEZEUUFnQWtFQUlBSW9BZ0FvQXFBQkVRTUFLQUlFSWdNZ0F5Z0NBQ2dDY0JFQUFFVU5BUXNnQUNBQlFkNmlDaUFGUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBUWdBaUFDS0FJQUtBSXdFUUFBSWdNZ0F5Z0NBQ2dDSUJFQUFDZ0NBRFlDQ0NBRVFRaHFRUUFRNUFvZ0JDQUVLQUlJUWYvL2QzRTJBZ2dnQkVFSWFpQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlBeUFES0FJQUtBSWtFUUFBRUxBTFFRRnpCRUFnQUNBQlFhS2pDaUFGUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTEFrQWdBa0VCSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ01nQXlnQ0FDZ0NIQkVBQUVFT1J3MEFJQUpCQVNBQ0tBSUFLQUtnQVJFREFDZ0NCQ0lESUFNb0FnQW9BaVFSQUFBUXlBUkZEUUJCQUNBQ1FRRWdBaWdDQUNnQ29BRVJBd0FvQWdRaUFpQUNLQUlBS0FKd0VRQUFSUTBDR2dzZ0FDQUJRZnlqQ2lBRlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUMwRUJDeUVBSUFSQkVHb1FHUm9nQkVFZ2FpUUFJQUFMckFnQkMzOGpBRUdRQVdzaUJ5UUFJQUlnQWlnQ0FDZ0N2QUVSQUFBaENBSkFJQUVnQVNnQ0FDZ0NrQUVSQUFCQkFVZ05BQU5BQWtBZ0FTQUVJQUVvQWdBb0FxQUJFUU1BS0FJRUlBZ2dCQkFSS0FJQUlnVWdCU2dDQUNnQ0RCRUFBQ0lGSUFVb0FnQW9BbmdSQUFBUXdBRUVRQ0FCSUFRZ0FTZ0NBQ2dDb0FFUkF3QW9BZ1FpQlNBRktBSUFLQUlvRVFBQUVOVUVEUUVMSUFSQkFXb2lCQ0FCSUFFb0FnQW9BcEFCRVFBQVNBMEJEQUlMQ3dKL0lBSWdBaUFDS0FJQUtBS0FBUkVBQUVVTkFCb2dBRUhUK1FrZ0FpQUNLQUlBS0FKNEVRQUFFTzRKSVFvZ0FDZ0NLQ0FLSUFJZ0FpZ0NBQ2dDQUJFQUFCQ3FBeUVFSUFBb0FpZ2hCU0FISUFJZ0FpZ0NBQ2dDQUJFQUFDSUdLUUlJTndNd0lBY2dCaWtDQURjREtDQUZRYllFSUFRZ0FpQUhRU2hxRU93RkN5RUVJQUFvQWlnZ0JCRGlCaUVGSUFFZ0FTZ0NBQ2dDa0FFUkFBQkJBVTRFUUVFQUlRUURRQUpBSUFFZ0JDQUJLQUlBS0FLZ0FSRURBQ2dDQkNBSUlBUVFFU2dDQUNJR0lBWW9BZ0FvQWd3UkFBQWlCaUFHS0FJQUtBSjRFUUFBRU1BQlJRMEFJQUVnQkNBQktBSUFLQUtnQVJFREFDZ0NCQ0lHSUFZb0FnQW9BaWdSQUFBUTFRUkZEUUFnQjBFNGFrRUFRUUJCQVVFQVFRQkJBQkJGSWdZZ0FTQUVJQUVvQWdBb0FxQUJFUU1BS0FJRUVJOEJBa0FnQ0NBRUVCRW9BZ0FpQXlBREtBSUFLQUlNRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9BcXdCRVFBQVJRMEFJQVlRekE0TkFDQUdJQWdnQkJBUktBSUFJZ01nQXlnQ0FDZ0NEQkVBQUNJRElBTW9BZ0FvQW5nUkFBQVFqd0VnQ0NBRUVCRW9BZ0FpQXlBREtBSUFLQUlNRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9BbGdSQUFBaEEwRVFFRVlpQ1JDekF5RUxJQVlnQ1RZQ1VDQUxJQU1RL3dVTElBQkIzdmtKSUFZUTdna2lBeUFES0FJQUtBSTBFUUFBSWdrZ0NTZ0NBQ2dDS0JFQUFCRERBaUFBS0FJb0lBTWdBaUFDS0FJQUtBSUFFUUFBRUtvRElRa2dBQ2dDS0NFTElBZ2dCQkFSS0FJQUlnd2dEQ2dDQUNnQ0RCRUFBQ0VNSUFjZ0NDQUVFQkVvQWdBaURTQU5LQUlBS0FJQUVRQUFJZzBwQWdnM0F5QWdCeUFOS1FJQU53TVlJQXRCdGdRZ0RDQUpJQWRCR0dvUTdBVWhDU0FBS0FJb0lBVWdDU0FJSUFRUUVTZ0NBQ0lGSUFVb0FnQW9BZ0FSQUFBUTNnSWhCU0FBS0FJb0lBTWdBaUFDS0FJQUtBSUFFUUFBRUtvRElRTWdDQ0FFRUJFZ0F6WUNBQ0FHRURVYUN5QUVRUUZxSWdRZ0FTQUJLQUlBS0FLUUFSRUFBRWdOQUFzTElBb0VRQ0FBS0FJb0lBb2dBaUFDS0FJQUtBSUFFUUFBRUtvRElRRWdBQ2dDS0NBRklBRWdBaUFDS0FJQUtBSUFFUUFBRU40Q0lRVUxJQUFvQWlnYUlBSWdBaWdDQUNnQ2VCRUFBQ0VBSUFjZ0FpQUNLQUlBS0FJQUVRQUFJZ0VwQWdnM0F4QWdCeUFCS1FJQU53TUlJQVZCcVFFZ0FDQUhRUWhxRUtRQ0lRSUxJQWRCa0FGcUpBQWdBZ3RCQVFGL0lBSWdBaWdDQUNnQ3ZBRVJBQUFpQWhBV1FRQktCRUFEUUNBQUlBRkIxWXNLSUFJZ0F4QVJLQUlBRU84SklBTkJBV29pQXlBQ0VCWklEUUFMQ3d1a0VBSUZmd0YrSXdCQkVHc2lDQ1FBQWtBZ0FpQUNLQUlBS0FJd0VRQUFJZ1FnQkNnQ0FDZ0NMQkVBQUMwQUIwRUhjUTBBSUFJZ0FpZ0NBQ2dDa0FFUkFBQkJBVWdOQUNBQ1FRQWdBaWdDQUNnQ29BRVJBd0FvQWdRaUJDQUVLQUlBS0FJY0VRQUFRUTVIRFFBZ0F5QURLQUlBS0FLOEFSRUFBRUVBRUJFb0FnQWlCQ0FFS0FJQUtBSU1FUUFBSWdRZ0JDZ0NBQ2dDaEFFUkFBQXBBZ1FoQ1NBRElBTW9BZ0FvQW9RQkVRQUFJZ1FnQkNrQ0JFTC8vLzlIZ3lBSlFvQ0FnRGlEaERjQ0JBc0NRQ0FDSUFJb0FnQW9BZ3dSQUFCQkIwSG9pUW9RaFFJTkFBSkFBa0FDUUFKQUlBSWdBaWdDQUNnQ0RCRUFBRUVOUWZDSkNoQ0ZBa1VFUUNBSUlBSWdBaWdDQUNnQ0RCRUFBQkRXRHlBQUlBRkJDRUcyQWtFQUlBZ1FFeUlHRUNnQ1FDQUNJQUlvQWdBb0Fnd1JBQUJCL29rS0VJY0JSUVJBSUFBZ0FVRjNRWkFEQW44Q1FDQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlCQ0FFS0FJQUtBSWtFUUFBTFFBQlFRaDBRWUFFUncwQUlBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUVJQVFvQWdBb0FpUVJBQUF0QUFKQkFuRU5BRUdJZ2dvZ0FpQUNLQUlBS0FLUUFSRUFBRUVEUmcwQkdndEI5WUVLQ3lBR0VDZ2dBa0VBSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ1FnQkNnQ0FDZ0NKQkVBQUNnQ0FDRUZRUU1oQkNBRElBTW9BZ0FvQXJ3QkVRQUFRUU5CQWlBRlFZQ0FDSEViRUJFb0FnQWlCU0FGS0FJQUtBSVVFUUFBUlFSQUlBQWdBVUVJUWNBQ1FRSkJoTjhKUVo2Q0NoRFJBUXNnQWtFQUlBSW9BZ0FvQXFBQkVRTUFLQUlFSWdVZ0JTZ0NBQ2dDSkJFQUFDMEFBa0VDY1VVTkFRd0dDeUFDSUFJb0FnQW9BZ3dSQUFCQmtvb0tFSWNCUlFSQUlBQWdBVUYzUVpBRFFmV0JDaUFHRUNnZ0FrRUFJQUlvQWdBb0FxQUJFUU1BS0FJRUlnUWdCQ2dDQUNnQ0pCRUFBQ2dDQUNFRklBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUVJQVFvQWdBb0FpUVJBQUFvQWdBaEIwRURJUVFnQXlBREtBSUFLQUs4QVJFQUFFRURRUUlnQjBHQWdBaHhHeEFSS0FJQUlnY2dCeWdDQUNnQ0ZCRUFBRVVFUUNBQUlBRkJ1NElLSUFaQjNJSUtRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBVkJnSUFJY1VVTkFRd0dDeUFDSUFJb0FnQW9BZ3dSQUFCQjhJa0tFSWNCRFFWQkFpRUVBa0FnQWlBQ0tBSUFLQUtRQVJFQUFFRUNTZzBBSUFKQkFDQUNLQUlBS0FLZ0FSRURBQ2dDQkNJRklBVW9BZ0FvQWlRUkFBQXRBQUZCQ0hSQmdBcEdEUUFnQWtFQUlBSW9BZ0FvQXFBQkVRTUFLQUlFSWdVZ0JTZ0NBQ2dDSkJFQUFDMEFBa0VDY1VVTkF3c2dBQ0FCUVhkQmtBTkI5WUVLSUFZUUtDQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlCU0FGS0FJQUtBSWtFUUFBTFFBQ1FRSnhEUVVMSUFRZ0FpQUNLQUlBS0FLUUFSRUFBRTROQkNBRElBTW9BZ0FvQXJ3QkVRQUFJQVFRRVNnQ0FDSUZJQVVvQWdBb0FoUVJBQUFFUUNBRElBTW9BZ0FvQXJ3QkVRQUFJQVFRRVNnQ0FDSUVJQVFvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0JCQkVrTkJTQUFJQUZCN1lJS0lBWkJoSU1LUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1CUXNnQUNBQlFidUNDaUFHUVlTRENrRUFJQUFvQWdBb0FxQUJFUUlBREFRTElBSWdBaWdDQUNnQ0RCRUFBRUduaWdvUThBbEJmMFlOQkVFQ0lRUWdBaUFDS0FJQUtBSU1FUUFBUWE2S0NoQ0hBVVVOQWlBQ0lBSW9BZ0FvQWd3UkFBQkJ2SW9LRUljQlJRMEJJQUlnQWlnQ0FDZ0NEQkVBQUVITmlnb1Fod0ZGRFFJZ0FpQUNLQUlBS0FJTUVRQUFRZCtLQ2hDSEFVVU5BVUVESVFRZ0FpQUNLQUlBS0FJTUVRQUFRZkNLQ2hDSEFVVU5Ba0VFSVFRZ0FpQUNLQUlBS0FJTUVRQUFRWVdMQ2hDSEFVVU5BaUFDSUFJb0FnQW9BZ3dSQUFCQmw0c0tFSWNCRFFRTUFnc2dBQ0FCUVhkQmtBTkJpSUlLSUFZUUtBd0NDMEVESVFRTElBTWdBeWdDQUNnQ3ZBRVJBQUFnQkJBUktBSUFJZ1lnQmlnQ0FDZ0NGQkVBQUVVRVFDQUFJQUZCdElNS1FiYUVDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdDQ3lBRElBTW9BZ0FvQXJ3QkVRQUFJQVFRRVNnQ0FDSUdJQVlvQWdBb0Fnd1JBQUFpQmlBR0tBSUFLQUo0RVFBQUlnWWdCaWdDQUNnQ01CRUFBRUVCU0EwQkEwQUNRQ0FESUFNb0FnQW9BcndCRVFBQUlBUVFFU2dDQUNJSElBY29BZ0FvQWhRUkFBQVFTeUFGRUE4b0FnQWlCeUFBS0FLRUIwd0VRQ0FISUFBb0FvQUhUZzBCQ3lBQUlBRkJ3NFFLUWJhRUNrSGFoQXBCQUNBQUtBSUFLQUtnQVJFQ0FBc2dCVUVCYWlJRklBWWdCaWdDQUNnQ01CRUFBRWdOQUFzTUFRc2dDQkFaR2dzQ1FDQUNJQUlvQWdBb0Fnd1JBQUJCRGtHdGl3b1FoUUlFUUNBQ0lBSW9BZ0FvQWd3UkFBQkJERUc4aXdvUWhRSU5BUXNnQUNBQlFYZEJ3Z05CczRVS1FkZUZDaEFvQ3dKQUlBSWdBaWdDQUNnQ0RCRUFBRUVMUWNtTENoQ0ZBZzBBQWtBZ0F5QURLQUlBS0FLOEFSRUFBRUVBRUJFb0FnQWlBeUFES0FJQUtBSU1FUUFBSWdNZ0F5Z0NBQ2dDZUJFQUFDSURJQU1vQWdBb0FpQVJBQUF0QUFCQkNFY0VRQ0FESUFNb0FnQW9BaUFSQUFBdEFBQkJDVWNOQVFzZ0F5QURLQUlBS0FJc0VRQUFMUUFrUVJwR0RRRWdBeUFES0FJQUtBSXNFUUFBTFFBa1FTVkdEUUVnQUNBQlFmZUZDaUFDSUFJb0FnQW9BZ3dSQUFBUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFDSUFJb0FnQW9BZ3dSQUFCQkUwR3BoZ29RaFFJRVFDQUFJQUZCdllZS0lBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBTWdBeWdDQUNnQ0xCRUFBQzBBSkVFRFJnMEFJQUFRTTBVTkFDQUFJQUZCM29ZS0lBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBSVFSQnFKQUFMckFJQkFuOGpBRUV3YXlJRUpBQWdBQ0FCSUFNZ0F5Z0NBQ2dDYkJFQUFCRFpEeUFBS0FJb0lBRWdBeUFES0FJQUtBSnNFUUFBSUFNZ0F5Z0NBQ2dDa0FFUkFBQkJBVVlnQWlBRElBTW9BZ0FvQWpBUkFBQVEvQUVoQlNBQUVKZ0dCRUFnQlNBREVOZ1BDd0pBSUFWRkJFQWdBa1VFUUNBQUtBSUFLQUtnQVNFQ0lBUkI0OVlKTmdJQUlBQWdBVUd1N2dsQnd1NEpRZEh1Q1NBRUlBSVJBZ0FNQWdzZ0FpQUNLQUlBS0FJQUVRQUFJUUVnQkVFZ2FpQUNFS29DSUFSQklHb1FFeUVDSUFBb0FnQW9BcUFCSVFNZ0JDQUNOZ0lRSUFBZ0FVR3U3Z2xCd3U0SlFkSHVDU0FFUVJCcUlBTVJBZ0FnQkVFZ2FoQVpHZ3dCQ3lBRklBVW9BZ0FvQWhBUkFBQkZEUUFnQUNBQklBTWdCU0FGS0FJQUtBSVFFUUFBRU5jUEN5QUVRVEJxSkFBZ0JRdjNBZ0VFZnlBQ0tBSUFJZ1FnQkNnQ0FDZ0NHQkVBQUNFRklBRWdBU2dDQUNnQ2tBRVJBQUJCQVU0RVFFRUFJUVFEUUFKL0lBRWdBU2dDQUNnQ2tBRVJBQUJCQVVZRVFDQUNLQUlBSWdNZ0F5Z0NBQ2dDREJFQUFBd0JDeUFGQkVBZ0JTQUZLQUlBS0FLOEFSRUFBQ0FFRUJFb0FnQWlBeUFES0FJQUtBSU1FUUFBREFFTElBSW9BZ0FpQXlBREtBSUFLQUlNRVFBQUN5RURBa0FnQVNBRUlBRW9BZ0FvQXFBQkVRTUFLQUlFSUFNZ0F5Z0NBQ2dDZUJFQUFCREFBVVVOQUNBQklBUWdBU2dDQUNnQ29BRVJBd0FvQWdRaUJpQUdLQUlBS0FJb0VRQUFFTU1IUlEwQUlBRWdCQ0FCS0FJQUtBS2dBUkVEQUNnQ0JCQ0ZBUTBBSUFBb0FpaEJBeUFCSUFRZ0FTZ0NBQ2dDb0FFUkF3QW9BZ1FnQXhDM0JDSURSUTBBSUFWRklBRWdBU2dDQUNnQ2tBRVJBQUJCQVVaeVJRUkFJQVVnQlNnQ0FDZ0N2QUVSQUFBZ0JCQVJJQU0yQWdBTUFRc2dBaUFETmdJQUN5QUVRUUZxSWdRZ0FTQUJLQUlBS0FLUUFSRUFBRWdOQUFzTEM5SUNBUUovSUFBb0Frd2dBaUFDS0FJQUtBSU1FUUFBRU44UEJFQWdBQ0FCUVkrT0N5QUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUVFQUR3dEJBU0VFQWtBZ0FFRzFqZ3NnQUNnQ0FDZ0NJQkVEQUEwQUlBQkIzWTRMSUFBb0FnQW9BaUFSQXdBTkFDQUFRWXFQQ3lBQUtBSUFLQUlnRVFNQURRQWdBRUc0andzZ0FDZ0NBQ2dDSUJFREFBMEFJQUJCNW84TElBQW9BZ0FvQWlBUkF3QU5BQ0FBUVpTUUN5QUFLQUlBS0FJZ0VRTUFEUUFnQUVIRWtBc2dBQ2dDQUNnQ0lCRURBQTBBSUFCQjlKQUxJQUFvQWdBb0FpQVJBd0FoQkFzQ1FDQUFFRE5GQkVBZ0FDZ0NFQ0lGUWZjQVNnMEJDeUFBSUFFZ0FpQURFTjRQRHdzQ1FDQUZRWThEVEFSQUlBQkJwSkVMSUFBb0FnQW9BaUFSQXdBTkFTQUFJQUVnQWlBREVOMFBEd3NnQkVVTkFDQUFJQUVnQWlBREVOd1BEd3NnQUNBQklBSWdBeERiRHd1SUV3RVBmd0pBSUFSQnNnUkdCRUFnQWtVTkFTQUNJQUlvQWdBb0Fnd1JBQUJGRFFFZ0JTQUNJQUlvQWdBb0Fnd1JBQUFpQmlBR0tBSUFLQUo0RVFBQUVJOEJJQVVnQlNnQ0FDZ0NLQkVBQUJEREFpQUZJQVVvQWdBb0FpZ1JBQUFpQmlBR0tRSUVRb0NBZ0lBUWhEY0NCQXdCQ3lBRklBTWdBeWdDQUNnQ01CRUFBQkNQQVFKQUlBUkIyWHRxSWdaQkNrc0VRQ0FFUWFoOGFrRUpTUTBCSUFSQmdYeHFRUWxQRFFJTUFRc0NRQ0FHUVFsckRnSUNBQUVMSUFBZ0FTQURFT0FQRHd0QkFTRVNDMEVCSVFvQ2Z3SkFJQU1nQXlnQ0FDZ0NrQUVSQUFCQkFVNEVRQ0FFUWJBRVJpRVRBMEFnQnlFR0FrQWdBeUFJSUFNb0FnQW9BcHdCRVFNQUtBSUVJZ2NnQnlnQ0FDZ0NjQkVBQUVVTkFFRUJJUlFnQXlBSUlBTW9BZ0FvQXB3QkVRTUFLQUlFSWdjZ0J5Z0NBQ2dDZUJFQUFFVU5BQ0FBSUFGQng1b0tRZVNhQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3REN5QVNCRUFnQXlBSUlBTW9BZ0FvQXB3QkVRTUFLQUlFSWdjZ0J5Z0NBQ2dDYkJFQUFDQUxjaUVMQ3lBRElBZ2dBeWdDQUNnQ25BRVJBd0FvQWdRUXhRRWdDV29oQ1FKL0lBWWdFdzBBR2lBR0lBVWdCU2dDQUNnQ2NCRUFBQTBBR2lBR0lBa2dCUkRGQVU1eUN5RUhJQU1nQ0NBREtBSUFLQUtjQVJFREFDZ0NCQ0lNSUF3b0FnQW9BaWdSQUFBUWp3SWhEQ0FESUFnZ0F5Z0NBQ2dDbkFFUkF3QW9BZ1FpRFNBTktBSUFLQUlvRVFBQUVPWUJJUTBnQXlBSUlBTW9BZ0FvQXB3QkVRTUFLQUlFSWc0Z0RpZ0NBQ2dDakFFUkFBQWhEZ0pBSUFVZ0JTZ0NBQ2dDaUFFUkFBQkZEUUFnQXlBSUlBTW9BZ0FvQXB3QkVRTUFLQUlFRUxBQ0JFQWdBQ0FCUWVTYUNrSHdtZ29nQUNnQ0FDZ0NVQkVFQUFzZ0F5QUlJQU1vQWdBb0Fwd0JFUU1BS0FJRUVLOENCRUFnQUNBQlFlU2FDa0h3bWdvZ0FDZ0NBQ2dDWEJFRUFBc2dBeUFJSUFNb0FnQW9BcHdCRVFNQUtBSUVFTVlDUlEwQUlBQWdBVUhrbWdwQm9ac0tJQUFvQWdBb0FtZ1JCQUFMSUFZZ0VISWhFQ0FLSUF4eElRb2dEU0FQY2lFUElBNGdFWEloRVNBSVFRRnFJZ2dnQXlBREtBSUFLQUtRQVJFQUFFZ05BQXNMSUFvZ0JFR3lCRWR4SVFZQ1FDQUVRYlI4YWlJSFFTWkxCRUFnQkVIZGUycEJCRThOQVNBRklBVW9BZ0FvQW5BUkFBQUVRQ0FBSUFGQjVKb0tRZEdiQ2lBQUtBSUFLQUpRRVFRQUN5QUZJQVVvQWdBb0FtZ1JBQUJGRFFFZ0F5QURLQUlBS0FLUUFSRUFBRUVCUmcwQklBQWdBVUhrbWdwQjdac0tJQUFvQWdBb0FsQVJCQUFNQVFzQ1FBSkFJQWRCQW1zT0pRRUJBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQUFBQUFBQUFCQVFFQkFRRUFDeUFGSUFVb0FnQW9BbkFSQUFBRVFDQUFJQUZCNUpvS1FaT2NDaUFBS0FJQUtBSm9FUVFBQ3lBRklBVW9BZ0FvQW1nUkFBQkZEUUVnQXlBREtBSUFLQUtRQVJFQUFFRUJSZzBCSUFBZ0FVSGttZ3BCcnB3S0lBQW9BZ0FvQW1nUkJBQU1BUXNnQlNBRktBSUFLQUp3RVFBQUJFQWdBQ0FCUWVTYUNrSFJtd29nQUNnQ0FDZ0NYQkVFQUFzZ0JTQUZLQUlBS0FKb0VRQUFSUTBBSUFNZ0F5Z0NBQ2dDa0FFUkFBQkJBVVlOQUNBQUlBRkI1Sm9LUWUyYkNpQUFLQUlBS0FKY0VRUUFDd0pBSUFaRkRRQkJBQ0VISUJGQkFYRWdEMEVCY1VVZ0JFR2NmR3BCRzA5QkFDQUVRYlo4YWtFSVN4dHlja1VFUUNBRklBVW9BZ0FvQW5BUkFBQkJBWE1oQndzZ0JTQUZLQUlBS0FJb0VRQUFJUVlnQndSQUlBWVFxUU1NQVFzZ0QwRUJjUVJBSUFZUXd3SU1BUXNnQmlBR0tRSUVRa0NEUWdLRU53SUVDd0pBSUFVZ0JTZ0NBQ2dDY0JFQUFFVU5BQ0FESUFNb0FnQW9BcEFCRVFBQVJRUkFJQUFnQVVIVG5BcEI1Sm9LUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFJTEFrQWdCU0FGS0FJQUtBSjRFUUFBQkVBZ0JTQURJQU1vQWdBb0FwQUJFUUFBRUkwRERBRUxJQVVnQlNnQ0FDZ0NQQkVBQUNBRElBTW9BZ0FvQXBBQkVRQUFSZzBBSUFBZ0FVR0ZuUXBCNUpvS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxJQVVRakFORkRRQWdCU0FGS0FJQUtBSlFFUUFBSVFZQ1FDQURRUUFnQXlnQ0FDZ0NuQUVSQXdBb0FnUWlCeUFIS0FJQUtBSndFUUFBQkVBZ0JoQmdJQU5CQUNBREtBSUFLQUtjQVJFREFDZ0NCQ0lISUFjb0FnQW9BbEFSQUFBUVlFRUJha1lOQVFzZ0FDQUJRYnlkQ2tIa21ncEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BZ3NnQmhDNUJVVU5BQ0FHRUdCQkFrZ05BRUVCSVFnRFFDQUdJQWdRMWdGRkJFQWdCaUFJSUFOQkFDQURLQUlBS0FLY0FSRURBQ2dDQkNJSElBY29BZ0FvQWxBUkFBQWdDRUYvYWhEV0FSQ2JCQXNnQ0VFQmFpSUlJQVlRWUVnTkFBc0xBa0FnRkVGL2N5QUVRYkFFUm5KQkFYRU5BQ0FGRUl3RERRQWdBQ0FCUVlPZUNrSGttZ3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FDQUxRUUZ4UlEwQUlBVWdCU2dDQUNnQ2NCRUFBQTBBSUFBZ0FVRUJRZmdBUVFCQnVwNEtFQ2hCQUNBRElBTW9BZ0FvQXBBQkVRQUFRUUZHRFFJYUlBQWdBVUhhbmdwQjVKb0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFRUUFQQ3lBUVFRRnhCRUFnQUNBQlFaU2ZDa0hrbWdwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdCQkFROExBa0FnQkVHd0JFY05BQ0FGSUFVb0FnQW9BbkFSQUFBTkFDQUZLQUpBRURjZ0F5QURLQUlBS0FLUUFSRUFBRVlOQUNBQUlBRkJwNThLUWVTYUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDd0pBQWtBZ0JFR3dCRVlnQ1VFQlJuSkZCRUFnQ1NBRkVNVUJTQTBCQ3lBRVFiQUVSdzBCSUFrZ0JSREZBVTROQVFzZ0FDQUJRZmFmQ2tIa21ncEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNDUUNBRkVJVUJSUTBBSUFNZ0F5Z0NBQ2dDa0FFUkFBQkJBVVlOQUNBQUlBRkJvS0FLUWVTYUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FFRUJEd3NDUUNBRkVJVUJSUTBBSUFOQkFDQURLQUlBS0FLY0FSRURBQ2dDQkNJRklBVW9BZ0FvQW1BUkFBQU5BQ0FEUVFBZ0F5Z0NBQ2dDbkFFUkF3QW9BZ1FRaFFFTkFDQUFJQUZCdXFBS1FlU2FDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBQ0lBSW9BZ0FvQWd3UkFBQWlBa1VFUUNBQUlBRkJoNkVLUWVTYUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDd0pBSUFSQnNBUkdEUUFnQWlBQ0tBSUFLQUtBQVJFQUFFRU9SZ1JBSUFBZ0FVR3hvUXBCNUpvS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxJQUpCRkdvUTJnUkZEUUFnQUNBQlFjcWhDa0hrbWdwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRdEJBQ0FDSUFJb0FnQW9Bb0FCRVFBQURRRWFJQUFnQVVIb29RcEI1Sm9LUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQzBFQkN3dXhCUUVFZnlNQVFlQUFheUlHSkFBQ1FBSkFBa0FnQWlBQ0tBSUFLQUtRQVJFQUFFRUJUZ1JBSUFBZ0FVSFk5d2tnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQXlBREtBSUFLQUlNRVFBQUlnUWdCQ2dDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BbkFSQUFBaEJ5QUVLQUlBSVFVQ2Z3SkFJQWNFUUNBRUlBVW9BbmdSQUFBRVFBSkFJQU1nQXlnQ0FDZ0NNQkVBQUVVTkFDQUFJQVFRamdORkRRQUNRQ0FESUFNb0FnQW9BakFSQUFBaUJTQUZLQUlBS0FMQUFSRUFBQ0lGUWYzM0NSQXJEUUFnQlVHRCtBa1FLdzBBSUFWQml2Z0pFQ3NOQUNBRlFaejRDUkFyUlEwQkN5QUFJQVFnQkNnQ0FDZ0NMQkVBQUVFQUVNZ0hJZ1VOQmdzQ1FDQURJQU1vQWdBb0FqQVJBQUJGRFFBZ0FDQUVFSTREUlEwQUlBQWdBVUhqMWdrZ0FpQUNLQUlBS0FJTUVRQUFFQk5Cc1BnSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQlFzZ0F5QURLQUlBS0FJTUVRQUFFUFlKQkVBZ0FDZ0NLQ0FCUWNVRVFRRWdBeUFHUVFocVFRaEJBRUVCUVFCQkFFRUFFRVVpQUJEOEFTRUNJQUFRTlJvTUJ3c2dBQ0FCUWVQV0NTQUNJQUlvQWdBb0Fnd1JBQUFRRTBIeCtBbEJBQ0FBS0FJQUtBS2dBUkVDQUF3RUN5QUVJQVFvQWdBb0FrQVJBQUJGRFFFZ0JDQUVLQUlBS0FKQUVRQUFJUUlNQlFzZ0JDQUZLQUpzRVFBQUJFQWdCQ0FFS0FJQUtBSTBFUUFBREFJTElBUWdCQ2dDQUNnQ2FCRUFBQVJBSUFRZ0JDZ0NBQ2dDTUJFQUFBd0NDeUFFRUlVQkJFQWdBQ2dDS0NBQlFjVUVRUUVnQXlBR1FRaHFRUWhCQUVFQlFRQkJBRUVBRUVVaUFCRDhBU0VDSUFBUU5Sb01CUXNnQUNBQlFhMzVDVUczK1FsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFnc2dCQ0FFS0FJQUtBSThFUUFBQ3lJRkRRRUxRUUVoQlFzZ0FDZ0NLQ0FGSUFGQkFCRDFCQ0VDQ3lBR1FlQUFhaVFBSUFJTDVCTUNCbjhCZmlNQVFaQUJheUlFSkFBZ0JDQUROZ0tNQVFKQUlBSWdBaWdDQUNnQ2JCRUFBRUhGQkVZRVFDQUFJQUVnQWlBREVPZ1BJUU1NQVFzZ0FpQUNLQUlBS0FKc0VRQUFCRUJCQUNFRElBUkJPR3BCQUVFQVFRRkJBRUVBUVFBUVJTRUZBa0FnQUNBQklBUW9Bb3dCSUFJZ0FpQUNLQUlBS0FKc0VRQUFJQVVRNXc4TkFDQUFJQUVnQkNnQ2pBRWdCUkNWQmlJRERRQWdCRUVvYWlBRkVNb0JRUUFoQXlBQUlBRkI5dWtKSUFSQktHb1FFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQ0FFUVNocUVCa2FDeUFGRURVYURBRUxJQUFnQVNBQ0lBUkJLR29RNWc4aUFrVUVRRUVBSVFNTUFRc0NRQ0FFTFFBb1JRMEFJQUlnQWlnQ0FDZ0NSQkVBQUFSQUlBQWdBU0FDSUFJb0FnQW9Ba1FSQUFBZ0FpQUNLQUlBS0FKSUVRQUFJQUlnQWlnQ0FDZ0NEQkVBQUJBVElBQW9BZ0FvQWhRUkNBQUxJQVF0QUNoRkRRQWdBaUFDS0FJQUtBSXdFUUFBRUxBQ0JFQWdBQ0FCUVp6cUNVR3U2Z2tnQUNnQ0FDZ0NVQkVFQUFzZ0JDMEFLRVVOQUNBQ0lBSW9BZ0FvQWpBUkFBQVFyd0lFUUNBQUlBRkJuT29KUWV2cUNTQUFLQUlBS0FKY0VRUUFDeUFFTFFBb1JRMEFJQUlnQWlnQ0FDZ0NNQkVBQUJER0FrVU5BQ0FBSUFGQm5Pb0pRYW5yQ1NBQUtBSUFLQUpvRVFRQUN5QUVLQUtNQVNJREJFQWdBeUFES0FJQUtBSVlFUUFBSVFrZ0FpQUNLQUlBS0FLUUFSRUFBRUVCVGdSQUEwQWdCRUdNQVdvaEF5QUpSU0FDSUFJb0FnQW9BcEFCRVFBQVFRRkdjZ1IvSUFNRklBa2dDU2dDQUNnQ3ZBRVJBQUFnQ0JBUkN5Z0NBQ0VGQWtBZ0FpQUlJQUlvQWdBb0FxQUJFUU1BS0FJRUlnTWdBeWdDQUNnQ0tCRUFBQ0lERU5VRVJRMEFJQUFnQkNnQ2pBRWlCaUFHS0FJQUtBSUFFUUFBUWVickNTQUZJQVVvQWdBb0Fnd1JBQUFnQUNnQ0FDZ0M3QUVSQ1FCRkRRQWdBQ0FFS0FLTUFTSUdJQVlvQWdBb0FnQVJBQUJCN2VzSlFhdnNDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBRklBVW9BZ0FvQWd3UkFBQWlCaUFHS0FJQUtBSjRFUUFBSWdjZ0J5Z0NBQ2dDTEJFQUFDSUdFTVVDUlEwQUlBY2dCeWdDQUNnQ3dBRVJBQUJGQkVBZ0J4RDBBVVVOQVFzQ1FDQUdLUUlFSWdwQ2dJQ0FnSUNBRUlOUURRQWdBeTBBQ1VIQUFIRU5BQ0FBSUFRb0Fvd0JJZ2NnQnlnQ0FDZ0NBQkVBQUVHdjdBbEI5ZXdKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBSUFZcEFnUWhDZ3NDUUNBS1FvQ0FnSUNBZ0FpRFVBMEFJQU10QUFsQm9BRnhEUUFnQUNBRUtBS01BU0lISUFjb0FnQW9BZ0FSQUFCQnIrd0pRZjdzQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUNBR0tRSUVJUW9MQWtBZ0NrS0FnSUNBZ0lBZ2cxQU5BQ0FETFFBSlFhQUJjUTBBSUFBZ0JDZ0NqQUVpQnlBSEtBSUFLQUlBRVFBQVFhL3NDVUdIN1FsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0Jpa0NCQ0VLQ3dKQUlBcENnSUNBZ0lDQXdBQ0RVQTBBSUFNb0FnaEJnTUFHY1EwQUlBQWdCQ2dDakFFaUJ5QUhLQUlBS0FJQUVRQUFRYS9zQ1VHVzdRbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCaWtDQkNFS0N3SkFJQXBDZ0lDQWdJQ0FnQUdEVUEwQUlBTW9BZ2hCZ01BT2NRMEFJQUFnQkNnQ2pBRWlCeUFIS0FJQUtBSUFFUUFBUWEvc0NVR3E3UWxCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FnQmlrQ0JDRUtDd0pBSUFwQ2dJQ0FnSUNBZ0FLRFVBMEFJQU1vQWdoQmdNQWVjUTBBSUFBZ0JDZ0NqQUVpQnlBSEtBSUFLQUlBRVFBQVFhL3NDVUc4N1FsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0Jpa0NCQ0VLQ3dKQUlBcENnSUNBZ0lDQUFvTlFEUUFnQXkwQUNVRUljUTBBSUFBZ0JDZ0NqQUVpQnlBSEtBSUFLQUlBRVFBQVFhL3NDVUhON1FsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0Jpa0NCQ0VLQ3lBS1FvQ0FnSUNBZ0FTRFVBMEFJQU10QUFsQkVIRU5BQ0FBSUFRb0Fvd0JJZ2NnQnlnQ0FDZ0NBQkVBQUVHdjdBbEIxdTBKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBUXRBQ2hGQkVBQ1FDQUdMUUFrSUFNdEFDUkdEUUFnQXhDYUJBUkFJQU10QUNSRkRRRWdCaTBBSkVVTkFRc2dBQ0FFS0FLTUFTSURJQU1vQWdBb0FnQVJBQUJCNE8wSlFmbnRDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkMwQUtFVU5BUXNnQlNBRktBSUFLQUlNRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQkN3QWdSQUlBQWdCQ2dDakFFaUF5QURLQUlBS0FJQUVRQUFRWnpxQ1VHdTZna2dBQ2dDQUNnQ1VCRUVBQXNnQkMwQUtFVU5BQ0FGSUFVb0FnQW9BZ3dSQUFBaUF5QURLQUlBS0FKNEVRQUFFSzhDQkVBZ0FDQUVLQUtNQVNJRElBTW9BZ0FvQWdBUkFBQkJuT29KUWV2cUNTQUFLQUlBS0FKY0VRUUFDeUFFTFFBb1JRMEFJQVVnQlNnQ0FDZ0NEQkVBQUNJRElBTW9BZ0FvQW5nUkFBQVF4Z0pGRFFBZ0FDQUVLQUtNQVNJRElBTW9BZ0FvQWdBUkFBQkJuT29KUWFuckNTQUFLQUlBS0FKb0VRUUFDeUFJUVFGcUlnZ2dBaUFDS0FJQUtBS1FBUkVBQUVnTkFBc0xJQUFnQWlBRVFZd0JhaERsRHdzQ1FBSkFJQVF0QUNoRkRRQWdBaUFDS0FJQUtBSnNFUUFBUlEwQUlBUWdBU2tDQ0RjRElDQUVJQUVwQWdBM0F4Z2dBQ0FFUVJocUlBUW9Bb3dCSUFJUTVBOGhBd3dCQ3lBQUtBSW9HaUFFS0FLTUFTRURJQUlnQWlnQ0FDZ0NNQkVBQUNFRklBUWdBU2tDQ0RjREVDQUVJQUVwQWdBM0F3Z2dBMEVESUFVZ0JFRUlhaENrQWlJRElBTW9BZ0FvQWhnUkFBQWlCU0FDSUFJb0FnQW9BaGdSQUFBZ0JTZ0NBQ2dDeEFFUkFRQUNRQ0FFTFFBb1JRUkFJQVVnQlNnQ0FDZ0N6QUVSQlFBQ1FDQUFLQUpNRUJnRVFDQUFJQUZCZDBHQTdna1FTaUFBS0FJb0lBQW9BZ3dnQkVFNGFrR283Z2tRSWlJR0lBSWdBaWdDQUNnQ0dCRUFBQkNIRENBR0VCa2FEQUVMSUFBb0FpZ2dBQ2dDRENBQVFaU3JBV29nQWlBQ0tBSUFLQUlZRVFBQUVJY01DeUFFTFFBb1JRMEJDeUFBSUFFZ0FpQUZFT01QREFFTElBQWdBU0FGRU9JUEN3Si9JQU1nQXlnQ0FDZ0NHQkVBQUFSQUlBTWdBeWdDQUNnQ0dCRUFBQ0lGSUFVb0FnQW9BdFFCRVFBQUlRVWdBaUFDS0FJQUtBS1FBUkVBQUVFQlRnUkFRUUFoQ0FOQUlBUWdBaUFJSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ1lnQmlnQ0FDZ0NLQkVBQUNnQ0JFRS9jVFlDT0NBRklBUkJPR29RM0FFZ0NFRUJhaUlJSUFJZ0FpZ0NBQ2dDa0FFUkFBQklEUUFMQ3lBQUlBSWdBeUFES0FJQUtBSVlFUUFBRU9FUElRTUxJQU1MSUFNb0FnQW9BZ3dSQUFBaUFpQUNLQUlBS0FKNEVRQUFFSVVCUlEwQUlBTWdBeWdDQUNnQ0RCRUFBQ0lDSUFJb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FLc0FSRUFBQTBBSUFNZ0F5QURLQUlBS0FJWUVRQUFJZ0lnQWlnQ0FDZ0N2QUVSQUFCQkFoQVJLQUlBSWdJZ0FpZ0NBQ2dDREJFQUFDSUNJQUlvQWdBb0FuZ1JBQUFnQXlnQ0FDZ0NkQkVCQUFzZ0EwVUVRQ0FBS0FJb1JBQUFBQUFBQUFBQVFRRWdBVUVBRU53RklRTUxJQVJCa0FGcUpBQWdBd3ZVQmdFR2Z5TUFRZkFBYXlJRUpBQWdBRUdVcXdGcUlBSWdBaWdDQUNnQ0dCRUFBQkRvQWdKQUFrQUNRQ0FBS0FKTUlBSWdBaWdDQUNnQ0dCRUFBRUVBUVFBUXJBRWlBd1JBSUFNZ0F5Z0NBQ2dDSEJFQUFDSUREUUVMSUFBZ0FVSHg2QWtnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQXlBREtBSUFLQUowRVFBQUJFQWdBQ0FCUVlYcENTQUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0F5QURLQUlBS0FKMEVRQUFEUUFnQXlBREtBSUFLQUp3RVFVQUlBQWdBeUFES0FJQUtBSXdFUUFBTmdKZ0RBRUxRZFFBRUVZaUEwRUFRUUJCQVVFQVFRQkJBQkJGR2lBQUlBTTJBbUFMSUFCQkFEb0FaQUpBSUFJZ0FpZ0NBQ2dDREJFQUFDQUFLQUlvRUNVUUV4Q0hBUVJBSUFCQkFEb0FzQVVNQVFzZ0FDZ0NLRUVRYWlBQ0lBSW9BZ0FvQWhnUkFBQVFFeEJvSUFBb0FpZ2lBeUFES0FMTUEwRUJhallDekFNZ0FFRUJPZ0N3QlNBQ0lBSW9BZ0FvQXBBQkVRQUFRUUZPQkVBZ0FDQUJRYUhwQ1NBQ0lBSW9BZ0FvQWd3UkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlBQ0tBSUFLQUl3RVFBQUlnTWdBeWdDQUNnQ0hCRUFBRVVOQUNBRVFSaHFJQUlnQWlnQ0FDZ0NNQkVBQUJDcEFpQUFJQUZCNDlZSklBUkJHR29RRTBISDZRbEJBQ0FBS0FJQUtBS2dBUkVDQUNBRVFSaHFFQmthQ3lBQUtBSk1FSXdFUWFnQkVFWVEvUU1oQXlBQ0lBSW9BZ0FvQXBBQkVRQUFRUUZPQkVBRFFBSkFJQUlnQnlBQ0tBSUFLQUtjQVJFREFDSUZLQUlBQkVCQmdBRVFSaUlHSUFVb0FnQWdCU2dDQkVFQUVPMENJUWdnQUNnQ1RDQUdFT3dDUlFSQUlBQWdBVUhwNlFrZ0JpQUdLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQWdzZ0JVRUFOZ0lBSUFBb0FpZ2lCU0FESUFVZ0NDQUJFS29ESUFFUTNnSWhBd3dCQ3lBQUtBSW9JQU1nQlNnQ0JDQUJFSndZSUFFUTNnSWhBd3NnQjBFQmFpSUhJQUlnQWlnQ0FDZ0NrQUVSQUFCSURRQUxDeUFBS0FJb0dpQUVRUmhxUVFCQkFFRUJRUUJCQUVFQUVFVWhBaUFFSUFFcEFnZzNBeEFnQkNBQktRSUFOd01JSUFOQkJTQUNJQVJCQ0dvUXBBSWFJQUlRTlJvZ0FFRUFPZ0JsSUFCQkFEWUNYQ0FBUWdBM0FsQWdCRUh3QUdva0FDQURDOTRCQUFKQUFuOGdBaUFDS0FJQUtBSlFFUUFBUlFSQUlBSWdBaWdDQUNnQ1lCRUFBQXdCQ3lBQ0lBSW9BZ0FvQWxBUkFBQWlBaUFDS0FJQUtBTEFBUkVBQUNJQ0lBSW9BZ0FvQWpBUkFBQUxJZ0pGRFFBZ0FDZ0NUQ0FDSUFJb0FnQW9Bc0FCRVFBQVFRQkJBQkNzQVNJQ1JRMEFJQUlnQWlnQ0FDZ0NLQkVBQUNJQ1JRMEFJQUlnQWlnQ0FDZ0NmQkVBQUVVTkFDQUNJQU1nQWlnQ0FDZ0NnQUVSQXdCQkFVZ05BQ0FBSUFFZ0FpQURJQUlvQWdBb0FvQUJFUU1BSUFJZ0F5QUNLQUlBS0FLRUFSRURBQ0FFRUJNZ0FDZ0NBQ2dDRkJFSUFBc0xwUkFCQkg4akFFR2dBV3NpQkNRQUlBUWdBallDbkFFZ0FDQUVRWndCYWhDK0JTQURRZHJpQ1JBcklRWWdCQ2dDbkFFaUFpQUNLQUlBS0FLZ0FSRUFBQ0VGQWtBQ1FDQUdCRUFnQlFSQUlBQWdBVUVCUWZnQVFlSGlDVUgyNGdrUUtDQUFJQUZCQ0VHc0FrRUFRZmJpQ1JBb0RBSUxBa0FnQWlBQ0tBSUFLQUtrQVJFQUFFVUVRQ0FDSUFJb0FnQW9BcHdCRVFBQVJRMEJDeUFBSUFGQmQwSCs0Z2tRU2lBQUlBRkJkMEdrQTBHZzR3bEIvdUlKRUNnTUFnc2dBaUFDS0FJQUtBSjRFUUFBRUlVQkRRRWdBeEFUSVFNZ0JFSElBR29nQWlBQ0tBSUFLQUo0RVFBQUVNb0JJQUFnQVVIQTR3a2dBeUFFUWNnQWFoQVRRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0JFSElBR29RR1JvZ0JDZ0NuQUVoQWd3Q0N5QUZCRUFnQUNBQlFkL2pDVUg1NHdrZ0F4QVRRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFnc2dBaUFDS0FJQUtBSjRFUUFBRUlVQkJFQWdBQ0FCUWZ2akNVSDU0d2tnQXhBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FNQWdzQ1FBSkFJQUlnQWlnQ0FDZ0NwQUVSQUFCRkJFQWdBaUFDS0FJQUtBS29BUkVBQUVVTkFRc0NRQ0FDSUFJb0FnQW9BckFCRVFBQURRQWdBaUFDS0FJQUtBSzBBUkVBQUEwQUlBSWdBaWdDQUNnQ2dBRVJBQUJCREVjTkFRc2dBaUFDS0FJQUtBS29BUkVBQUFSQUlBQWdBVUYzUWFia0NSQktJQUFnQVVGM1FhUURRYURqQ1VHbTVBa1FLQXNnQkVFd2FoQ3lCU0VGSUFBZ0FTQURJQVFvQXB3QklnTWdBeWdDQUNnQ2tBRVJBQUFnQlNBQUtBSUFLQUwwQVJFSUFBSkFJQVFvQXB3QklnTWdBeWdDQUNnQ3BBRVJBQUJGRFFBZ0JTZ0NBRUVCUmcwQUlBUW9BcHdCSWdNZ0F5Z0NBQ2dDZUJFQUFCQ3dBa1VOQUNBQUlBRkIrZU1KUWJYa0NTQUFLQUlBS0FKUUVRUUFDd0pBSUFRb0Fwd0JJZ01nQXlnQ0FDZ0NwQUVSQUFCRkRRQWdCU2dDQUVFQlJnMEFJQVFvQXB3QklnTWdBeWdDQUNnQ2VCRUFBQkN2QWtVTkFDQUFJQUZCK2VNSlFkemtDU0FBS0FJQUtBSmNFUVFBQ3dKQUlBUW9BcHdCSWdNZ0F5Z0NBQ2dDcEFFUkFBQkZEUUFnQlNnQ0FFRUJSZzBBSUFRb0Fwd0JJZ01nQXlnQ0FDZ0NlQkVBQUJER0FrVU5BQ0FBSUFGQitlTUpRWVRsQ1NBQUtBSUFLQUpvRVFRQUN5QUVLQUtjQVNJRElBTW9BZ0FvQXFnQkVRQUFCRUFnQlNnQ0FFRUJSZzBFSUFSQnlBQnFJQVFvQXB3QklnSWdBaWdDQUNnQ2dBRVJBQUJCQUNBRktBSUFRUUJCQUVFQUVFVWhBeUFFS0FLY0FTSUNJQUlvQWdBb0FvUUJFUUFBRU9ZQkJFQWdBeEFiRUtrREN5QUFJQUVnQkNnQ25BRWdBeENWQmlFQ0lBTVFOUm9NQkFzZ0JDZ0NuQUVpQWlBQ0tBSUFLQUo0RVFBQUlnSWdBaWdDQUNnQ0xCRUFBQkNoQXdSQUlBQW9BaWdnQkNnQ25BRWdCU0FCRUs0UUlRSU1BZ3NnQUNnQ0tDRUNBa0FnQlNnQ0FFRUJSZ1JBSUFJZ0JVRUFFS0FHSUFGQkFCRDFCQ0VDSUFBb0FpZ2FJQVFnQVNrQ0NEY0RDQ0FFSUFFcEFnQTNBd0JCc1FFZ0JDZ0NuQUVnQWlBRUVJb0ZJZ0lnQkVISUFHb2dCQ2dDbkFFaUFDQUFLQUlBS0FLQUFSRUFBRUVBSUFRb0Fwd0JJZ0FnQUNnQ0FDZ0NlQkVBQUNJQUlBQW9BZ0FvQWl3UkFBQXRBQWRCQjNGQkFSRDhDQ0lBSUFJb0FnQW9BblFSQVFBTUFRc2dCU0FCRU1FVElRSWdBQ2dDS0JvZ0JDQUJLUUlJTndNWUlBUWdBU2tDQURjREVFRzBBU0FFS0FLY0FTQUNJQVJCRUdvUWlnVWlBaUFFUWNnQWFpQUVLQUtjQVNJQUlBQW9BZ0FvQW9BQkVRQUFRUUFnQkNnQ25BRWlBQ0FBS0FJQUtBSjRFUUFBSWdBZ0FDZ0NBQ2dDTEJFQUFDMEFCMEVIY1NBRktBSUFFUHdJSWdBZ0FpZ0NBQ2dDZEJFQkFBc2dBQkExR2lBRUtBS2NBU0lBSUFBb0FnQW9BbmdSQUFBaUFDQUFLQUlBS0FJc0VRQUFFT1lCUlEwQklBSWdBaWdDQUNnQ2ZCRUFBQ0lBSUFBb0FnQW9BaWdSQUFBUXFRTU1BUXNDUUNBQ0lBSW9BZ0FvQXF3QkVRQUFSUVJBSUFJUThnRkZEUUVMSUFJUThnRWhCaUFDSUFJb0FnQW9BbmdSQUFBaEJRSkFBbjhnQmdSQUlBVWdCU2dDQUNnQ1ZCRUFBQ2dDUUF3QkN5QUZLQUpBQ3lJR0VEZEJBVTRFUUVFQUlRVURRQ0FHSUFVUU9DZ0NBQ0lISUFjb0FnQW9BaGdSQUFBZ0F4Q1lBZzBDSUFWQkFXb2lCU0FHRURkSURRQUxDeUFBSUFGQnErVUpJQU1RRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3Q0N3SkFJQUlnQWlnQ0FDZ0NlQkVBQUNJSElBY29BZ0FvQWl3UkFBQVFvUU1FUUNBQUtBSW9JQUlnQlNBQkVKMEtJUUlNQVFzZ0FDQUJJQUlnQlNBREVPc1BJQUFvQWlnZ0JTQUJRUUFROVFRaEJ5QUFLQUlvR2lBRUlBRXBBZ2czQXlnZ0JDQUJLUUlBTndNZ1FiTUJJQUlnQnlBRVFTQnFFSW9GSWdJZ0JpQUZFRGdvQWdBZ0FpZ0NBQ2dDZEJFQkFDQUdJQVVRT0NnQ0FDSUJJQUVvQWdBb0FpZ1JBQUFRK1FsRkRRQWdBQ2dDS0NBREVQZ0pDeUFFS0FLY0FTSUFJQUFvQWdBb0FvUUJFUUFBSUFJZ0FpZ0NBQ2dDZkJFQUFDSUFJQUFvQWdBb0FpZ1JBQUFReWdjTUFRc2dBeEFUSVFNZ0JFSElBR29nQWlBQ0tBSUFLQUo0RVFBQUVNb0JJQUFnQVVIRzVRa2dBeUFFUWNnQWFoQVRRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0JFSElBR29RR1JvTElBUW9BcHdCSWdBZ0FDZ0NBQ2dDaEFFUkFBQVF0d01FUUNBQ0lBSW9BZ0FvQW53UkFBQWlBQ0FBS0FJQUtBSW9FUUFBRU1VSEN5QUVLQUtjQVNJQUlBQW9BZ0FvQW9RQkVRQUFFT0lDUlEwQklBSWdBaWdDQUNnQ2ZCRUFBQ0lBSUFBb0FnQW9BaWdSQUFBaUFDQUFLUUlFUW9DQWdJQVFoRGNDQkF3QkN5QUFLQUlvR2lBRVFjZ0Fha0VJUVFCQkFVRUFRUUJCQUJCRklnVWhCa0g4QUJCR0lnQWdBaUFHSUFNUW1CVWdBQ0FCSUFBb0FnQW9BZ1FSQVFBZ0FDRUNJQVVRTlJvTElBUkJvQUZxSkFBZ0FndElBUUovSXdCQkVHc2lCQ1FBSUFNUUV5RURJQUFvQWdBb0FxQUJJUVVnQkNBRE5nSUVJQVFnQWpZQ0FDQUFJQUZCcnU0SklBSkI3NDBLSUFRZ0JSRUNBQ0FFUVJCcUpBQUw0d0VCQW44Z0JDQUVLQUlBS0FKNEVRQUFCRUFnQkNBQ0VJMEREd3NDUUNBRUlBUW9BZ0FvQWp3UkFBQWdBa1lOQUNBQUtBSVVJZ1pCZjJvaUIwRURTd1JBSUFaQkRVY05BU0FBSUFGQnVPSUpJQU1nQlJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3dKQUFrQUNRQ0FIUVFGckRnTURBQUlCQ3lBQUlBRkJwdUVKSUFNZ0JSQVRRUUFnQUNnQ0FDZ0NvQUVSQWdBUEN5QUFJQUZCMWVFSklBTWdCUkFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDeUFFSUFRb0FnQW9BandSQUFBZ0Frd05BQ0FBSUFGQmp1SUpJQU1nQlJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FMQ3pFQkFYOGdBQ0FCRUlJS0lBQWdBU2dDQUNJQ0lBSW9BZ0FvQWpBUkFBQVFqZ01FUUNBQVFjaXJBV29nQVJEY0FRc0wwd01CQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lNQWtBQ1FBSkFJQUFvQXJnSklnSXRBQVlFZnlBQ0JTQUJJQUVvQWdBb0FvQUJFUUFBUVE1R0RRSWdBQ2dDdUFrTExRQUREUUFnQVNBQktBSUFLQUtFQVJFQUFCQ3hBa1VOQUNBQUtBSVVEUUVMQWtBZ0FDZ0N1QWt0QUFRTkFDQUJJQUVvQWdBb0FvUUJFUUFBRVBFQ1JRMEFJQUFvQWhRTkFDQUJJQUVvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUpzRVFBQURRRWdBU0FCS0FJQUtBSjRFUUFBSWdJZ0FpZ0NBQ2dDYUJFQUFBMEJDd0pBSUFBb0FyZ0pJZ0l0QUFnRWZ5QUNCU0FCSUFFb0FnQW9BaFFSQUFBTkFpQUFLQUs0Q1FzdEFBY05BQ0FCSUFFb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FJc0VRQUFFTEVDRFFBZ0FTQUJLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NMQkVBQUJEeEFnMEFJQUVnQVNnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWl3UkFBQVE4QUlOQUNBQklBRW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXNFUUFBRUk4Q1JRMEJDeUFBS0FLNENTMEFCUTBCSUFFZ0FTZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0Fpd1JBQUFROFFJTkFDQUJJQUVvQWdBb0FuZ1JBQUFpQVNBQktBSUFLQUlzRVFBQUVQQUNSUTBCQ3lBQVFiaXJBV29nQTBFTWFoRGNBUXNnQTBFUWFpUUFDOVVDQVFKL0FrQWdBaEQyQ1EwQUFrQWdBaUFDS0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDTEJFQUFDa0NCRUkvZzBJR1VnMEFJQUlnQWlnQ0FDZ0NVQkVBQUNJRFJRMEFJQU1vQW1oQnN3RkhEUUFnQXlBREtBSUFLQUxBQVJFQUFCRHlBVVVOQUNBRElBTW9BZ0FvQXNRQkVRQUFJZ1FnQkNnQ0FDZ0NGQkVBQUJCTFFRQVFEeWdDQUNBRElBTW9BZ0FvQXNBQkVRQUFJZ01nQXlnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQWxRUkFBQW9Ba0FRTjBGL2FrWU5BUXNDUUFKQUlBSWdBaWdDQUNnQ2dBRVJBQUJCRGtZTkFDQUNJQUlvQWdBb0FvQUJFUUFBUVJGR0RRQWdBaUFDS0FJQUtBS0FBUkVBQUVFUVJ3MEJJQUlnQWlnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWl3UkFBQVFzUUpGRFFFTElBQWdBVUVCUWRUQ0NrSFl3Z29nQUNnQ0FDZ0NGQkVJQUE4TElBQWdBVUhqMWdsQjFOd0pRZWZDQ2tFQUlBQW9BZ0FvQXFBQkVRSUFDd3R3QVFGL0FrQWdBU0FCS0FJQUtBSXdFUUFBSWdGRkRRQWdBU0FCS0FJQUtBSjRFUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFFVU5BQ0FBSUFFZ0FTZ0NBQ2dDZUJFQUFDSUFJQUFvQWdBb0Fpd1JBQUJCQUJESUJ5SUFRUUZJRFFBZ0FTQUJLQUlBS0FKOEVRQUFJQUFRalFNTEM5Y1FBUUovSXdCQmtBRnJJZ1FrQUNBRUlBSTJBb3dCSUFSQkFEWUNpQUVnQXlBREtBSUFLQUtFQVJFQUFCQ2hBd1JBSUFRZ0F5QURLQUlBS0FJVUVRQUFFRXRCQUJBUEtBSUFOZ0tJQVFzZ0FDQUVRWXdCYWhDK0JRSkFBa0FnQkNnQ2pBRWlBaUFDS0FJQUtBS2dBUkVBQUEwQUlBSWdBaWdDQUNnQ25BRVJBQUFOQUNBQ0lBSW9BZ0FvQXFRQkVRQUFEUUFnQWlBQ0tBSUFLQUo0RVFBQUVJVUJEUUFnQWhEeUFRMEFBa0FnQWlBQ0tBSUFLQUl3RVFBQUJFQWdBQ0FCUVpQY0NTQUNJQUlvQWdBb0FqQVJBQUFpQWlBQ0tBSUFLQUxBQVJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFBZ0FVR1QzQWxCeWR3SlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUFLQUlvUkFBQUFBQUFBQUFBUVFFZ0FVRUFFTndGSVFJTUFRc0NRQ0FDSUFJb0FnQW9BcUFCRVFBQURRQWdBaUFDS0FJQUtBS2tBUkVBQUVVTkFDQUNJQUlvQWdBb0FuZ1JBQUFRc0FJRVFDQUFJQUZCMU53SlFkYmNDU0FBS0FJQUtBSlFFUVFBQ3lBQ0lBSW9BZ0FvQW5nUkFBQVFyd0lFUUNBQUlBRkIxTndKUVlQZENTQUFLQUlBS0FKY0VRUUFDeUFDSUFJb0FnQW9BbmdSQUFBUXhnSkZEUUFnQUNBQlFkVGNDVUd4M1FrZ0FDZ0NBQ2dDYUJFRUFBc0NRQ0FDSUFJb0FnQW9BbmdSQUFBaUJTQUZLQUlBS0FJc0VRQUFFS0VEUlEwQUlBTWdBeWdDQUNnQ2hBRVJBQUFRb1FORkRRQWdBQ0FCSUFJZ0FpZ0NBQ2dDZUJFQUFDQUVRWWdCYWhET0J5QUFLQUlvSUFRb0Fvd0JJQVFvQW9nQklBRVFuUW9oQWd3QkN3SkFJQUlROGdGRkRRQWdBaUFDS0FJQUtBS2dBUkVBQUEwQUlBQWdBVUVCUWVEZENVSGszUWtnQUNnQ0FDZ0NGQkVJQUNBQUtBSW9JUUFnQkNBQktRSUlOd01vSUFRZ0FTa0NBRGNESUNBQVFaY0JJQUlnQXlBRVFTQnFFTThESWdJZ0JDZ0NqQUVpQUNBQUtBSUFLQUo0RVFBQUlBSW9BZ0FvQW5RUkFRQU1BUXNDUUNBQ0lBSW9BZ0FvQWpBUkFBQkZEUUFnQUNBQ0lBSW9BZ0FvQW5nUkFBQVFqZ05GRFFBZ0FDQUNFUElQQ3lBRElBTW9BZ0FvQW9RQkVRQUFFS0VEQkVBZ0FDQUJJQUlnQWlnQ0FDZ0NlQkVBQUNBRVFZZ0JhaERPQndzZ0F5QURLQUlBS0FLRUFSRUFBQkNoQXlFRklBUW9Bb3dCSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0FuZ1JBQUFoQWdKL0lBVUVRQUpBSUFJRVFDQUVLQUtNQVNJQ0lBSW9BZ0FvQW53UkFBQWlBaUFFS0FLSUFVRUJhaUFDS0FJQUtBS0VBUkVCQUNBRUtBS01BU0lDSUFJb0FnQW9Bb1FCRVFBQUVOUUNSUTBCSUFRb0Fvd0JJZ0lnQWlnQ0FDZ0NoQUVSQUFBdkFRUkJ3UDhCY1VVTkFTQUVLQUtNQVNJQ0lBSW9BZ0FvQWlBUkFBQWlBa1VOQVNBRUlBSWdBaWdDQUNnQ3dBRVJBQUFpQWlBQ0tBSUFLQUo4RVFBQUlnSWdBaWdDQUNnQ1VCRUFBQ0lDUVFFUTFnRTJBakFnQkNBRUtBS0lBVUVCYWpZQ2hBRWdBa0VCSUFSQk1Hb2dCRUdFQVdvUXBnRW9BZ0FRbXdRTUFRc2dBQ0FCSUFRb0Fvd0JJZ0lnQWlnQ0FDZ0NlQkVBQUNBRVFZZ0JhaERPQndzZ0FDZ0NLQm9nQkNBQktRSUlOd01JSUFRZ0FTa0NBRGNEQUVHeEFTQUVLQUtNQVNBRElBUVFpZ1VNQVFzZ0FnUkFBa0FDUUNBRUtBS01BU0lDSUFJb0FnQW9BakFSQUFCRkRRQWdBQ0FFS0FLTUFTSUNJQUlvQWdBb0FuZ1JBQUFRamdORkRRQWdBQ0FCUWVQV0NVSFUzQWxCL3QwSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0FDQUJJQVFvQW93QkVQRVBDeUFFS0FLTUFTSUNJQUlvQWdBb0Fud1JBQUFpQWlBQ0tBSUFLQUtBQVJFRkFBc0NRQ0FFS0FLTUFTSUNJQUlvQWdBb0FvQUJFUUFBUVJCR0JFQWdCQ2dDakFFaUFpQUNLQUlBS0FLRUFSRUFBQ2tDQkVJL2cwSUdVUVJBSUFBZ0JDZ0NqQUVpQWlBQ0tBSUFLQUlBRVFBQVFYZEIzdDRKRUVvTUFnc2dCQ2dDakFFaUFpQUNLQUlBS0FLRUFSRUFBQ2tDQkVJL2cwSUZVZzBCSUFBZ0JDZ0NqQUVpQWlBQ0tBSUFLQUlBRVFBQVFRaEJ3QUpCQWtHRTN3bEJqTjhKRU5FQkRBRUxBa0FnQUNnQ0ZFRUVSdzBBSUFRb0Fvd0JJZ0lnQWlnQ0FDZ0NoQUVSQUFBUThBSkZEUUFnQUNBRUtBS01BU0lDSUFJb0FnQW9BZ0FSQUFCQmQwR3kzd2tRU2d3QkN5QUVLQUtNQVNJQ0lBSW9BZ0FvQW9BQkVRQUFRUTVIRFFBZ0FDZ0NFRUdDQVVnTkFDQUFJQVFvQW93QklnSWdBaWdDQUNnQ0FCRUFBRUVPUWVIZkNSQktJQUFnQkNnQ2pBRWlBaUFDS0FJQUtBSUFFUUFBUVFoQndBSkJBa0dFM3dsQjRkOEpFTkVCSUFBZ0JDZ0NqQUVpQWlBQ0tBSUFLQUlBRVFBQVFRWkJrQU5CQUVIaDN3a1FLQXNnQUNnQ0tCb2dCQ0FCS1FJSU53TVlJQVFnQVNrQ0FEY0RFRUd5QVNBRUtBS01BU0FESUFSQkVHb1FpZ1VMSVFJZ0JFRXdhaUFFS0FLTUFTSUJJQUVvQWdBb0FuZ1JBQUJCQUVFQUVNMEJJUUVDUUFKQUlBUW9Bb3dCSWdVZ0JTZ0NBQ2dDZUJFQUFDSUZJQVVvQWdBb0Fpd1JBQUFRandKRkRRQWdBeUFES0FJQUtBS0VBUkVBQUJDUEFrVU5BQ0FCRUJzaUJTQUZLUUlFUWtDRFFnS0VOd0lFSUFRb0Fvd0JJZ1VnQlNnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQWl3UkFBQVE1Z0ZGQkVBZ0F5QURLQUlBS0FLRUFSRUFBQkRtQVVVTkFnc2dBUkFiRUtrRERBRUxJQUVRR3lJRklBVXBBZ1JDUUlNM0FnUWdBUkFiSWdVZ0JTa0NCRUwvLy8vL2Q0TTNBZ1FMSUFJZ0FTQUNLQUlBS0FKMEVRRUFJQVFvQW93QklnVWdCU2dDQUNnQ2hBRVJBQUFnQWlBQ0tBSUFLQUo4RVFBQUlnVWdCU2dDQUNnQ0tCRUFBQkRLQndKQUlBUW9Bb3dCSWdVZ0JTZ0NBQ2dDaEFFUkFBQVE0Z0pGQkVBZ0F5QURLQUlBS0FLRUFSRUFBQkRpQWtVTkFRc2dBaUFDS0FJQUtBSjhFUUFBSWdVZ0JTZ0NBQ2dDS0JFQUFDSUZJQVVwQWdSQ2dJQ0FnQkNFTndJRUN5QUFMUUNvcXdFRVFDQUFJQVFvQW93QklBTVE4QThMSUFFUU5Sb0xJQVJCa0FGcUpBQWdBZ3NzQVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVNBQ0lBSVFrZzhnQUNBRFFRaHFFTlFFSUFOQkVHb2tBQXVWQndFRWZ5TUFRZkFBYXlJR0pBQWdCaUFDTmdKc0FrQUNRQUpBQWtBZ0FrVU5BQ0FDSUFJb0FnQW9Ba1FSQUFBRVFDQUFJQUVnQWlBQ0tBSUFLQUpFRVFBQUlBSWdBaWdDQUNnQ1NCRUFBQ0FDSUFJb0FnQW9BZ3dSQUFBUUV5QUFLQUlBS0FJVUVRZ0FDd0pBSUFJZ0FpZ0NBQ2dDVUJFQUFFVU5BQ0FDSUFJb0FnQW9BakFSQUFBaUJDQUVLQUlBS0FLb0FSRUFBQTBBSUFJZ0FpZ0NBQ2dDTUJFQUFDSUVJQVFvQWdBb0Fyd0JFUUFBUlFSQUlBSWdBaWdDQUNnQ0xCRUFBRVVOQVNBQ0lBSW9BZ0FvQWl3UkFBQWlCQ0FFS0FJQUtBSllFUUFBSWdRZ0JDZ0NBQ2dDTUJFQUFDSUVJQVFvQWdBb0Fyd0JFUUFBUlEwQkN5QUFJQVpCN0FCcUlBQW9BZ0FvQW93Q0VRRUFJQVlvQW13aUFrVU5BUXNnQWlBQ0tBSUFLQUlzRVFBQUlnUUVRQ0FFSUFRb0FnQW9BbGdSQUFBaUFpQUNLQUlBS0FJb0VRQUFJUUlnQUNnQ0tDQUNJQUVRcWdNaEJTQUFLQUlvSUFRZ0JDZ0NBQ2dDWEJFQUFDQUJRUUFRbndnaEJ5QUFLQUlvR2lBR0lBRXBBZ2czQXhBZ0JpQUJLUUlBTndNSVFiTUJJQVVnQnlBR1FRaHFFSW9GSWdVZ0FpQUNLQUlBS0FJd0VRQUFLQUpBSUFRZ0JDZ0NBQ2dDWEJFQUFCQTRLQUlBSUFVb0FnQW9BblFSQVFBZ0JTQUZLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NEQkVBQUVVTkF5QUFJQUZCbnRzSklBTVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdEQ3lBR0tBSnNJZ0pGRFFBZ0FpQUNLQUlBS0FJa0VRQUFJZ0lFUUNBQ0lRUWdBaUFDS0FJQUtBSXdFUUFBSWdVZ0JTZ0NBQ2dDcUFFUkFBQkZEUUlnQUNBQlFjcmJDU0FERUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dCaWdDYkVVTkFDQUFJQUZCL05zSklBTVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXRCZ0FFUVJpSUNJQU1nQmtFWWFrRUFRUUJCQVVFQVFRQkJBQkJGSWdWQkFCRHRBaUVFSUFVUU5Sb0xJQVFnQWlnQ0FDZ0NNQkVBQUNJRklBVW9BZ0FvQWl3UkFBQVFvUU1oQlNBQUtBSW9JUWNnQlFSQUlBUWdCQ2dDQUNnQ1hCRUFBQ0FFSUFJb0FnQW9BakFSQUFBZ0FVRUFFTkFDSVFVTUFnc2dCeUFFSUFFUXFnTWhCUXdCQ3lBQ0lRUUxJQVFnQWlnQ0FDZ0NNQkVBQUNJQklBRW9BZ0FvQWl3UkFBQVErUWtFUUNBQUtBSW9JQU1RK0FrTEFrQWdCQ0FDS0FJQUtBSXdFUUFBRVBRQlJRMEFJQVFnQWlnQ0FDZ0NNQkVBQUNJQklBRW9BZ0FvQWl3UkFBQW9BZ2hCZ01BK2NVVU5BQ0FBS0FJb0VNc0hDeUFHUWZBQWFpUUFJQVVMTHdFQmZ5TUFRUkJySWdNa0FDQURJQUUyQWd3Z0FDQURRUXhxS0FJQUlBSWdBQ2dDQ0JFR0FDQURRUkJxSkFBTDZ3WUJBWDhnQUVIZ0JHb2lBeEMvQlFSQUlBTWdBU2dDQ0NBQ0VQWVBDd0pBQWtBQ1FDQUNFS2dCUlEwQUlBSkJBQkRFQVVINzFna1Fod0ZGQkVBZ0FoQ29BVUVFUndSQUlBQWdBVUdFMXdsQnFOY0pRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQWtFQkVNUUJRYkRYQ1JDSEFRUkFJQUFnQVVHeTF3bEJxTmNKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBRHdzZ0FDQUNRUUlReEFGQjJOY0pFSWNCQkg4Z0FrRUNFTVFCUWR2WENSQ0hBUTBEUVFBRlFRRUxPZ0NJQVNBQ1FRTVF4QUZCbHRnSkVJY0JSUTBCSUFBZ0FVR1kyQWxCcU5jSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUR3c2dBa0VBRU1RQlFiN1lDUkNIQVVVRVFDQUNFS2dCUVFSSEJFQWdBQ0FCUWNUWUNVR28xd2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3lBQ1FRRVF4QUZCc05jSkVJY0JCRUFnQUNBQlFlWFlDVUdvMXdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBUEN5QUFJQUpCQWhERUFVSFkxd2tRaHdFRWZ5QUNRUUlReEFGQjI5Y0pFSWNCRFFSQkFBVkJBUXM2QUlrQklBSkJBeERFQVVHVzJBa1Fod0ZGRFFFZ0FDQUJRYnpaQ1VHbzF3bEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDd0pBSUFBb0FoaEZEUUFnQWtFQUVNUUJRZC9aQ1JDSEFVVUVRQ0FDRUtnQlFRRkhCRUFnQUNBQlFmTFpDVUdvMXdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQW9BaWdRbVFZUEN5QUFLQUlZUlEwQUlBSkJBQkRFQVVILzJRa1Fod0ZGQkVBZ0FoQ29BVUVCUndSQUlBQWdBVUh5MlFsQnFOY0pRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFBS0FJb0VNc0hEd3NnQUNnQ0dFVU5BQ0FDUVFBUXhBRkJsOW9KRUljQkRRQWdBaENvQVVFQlJ3UkFJQUFnQVVIeTJRbEJxTmNKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSVlRZitGQkUwRVFDQUFJQUZCcmRvSlFjSGFDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQUNnQ0tDSUFRUUU2QU5JRklBQkJnQWRxUVorNkN4Q1RBZzhMSUFKQkFCREVBVUhmMmdrUWh3RkZCRUFnQUNBQlFlVGFDVUgwMmdsQjQ5WUpRUUFnQUNnQ0FDZ0NwQUVSQWdBUEN5QUNRUUFReEFGQmdkc0pFSWNCRFFBZ0FDZ0NLRUVCT2dEbEJRc1BDeUFBSUFGQjM5Y0pRYWpYQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUE4TElBQWdBVUdJMlFsQnFOY0pRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd2NBSUFBb0FrUUxLd0FnQUNBQ05nSkVJQUVnQWlBREVORVdJQUFRNmc0Z0FDQUFLQUlBS0FLVUFoRUZBQ0FBS0FKQVJRdTdBUUVCZnlBQVFid0dhaUFCUWZ3Q0VEMGFJQUFvQWloQjBBQnFJQUZCL0FJUVBScEJBU0VDQWtBZ0FDZ0N1QWtpQVMwQUJFVU5BQ0FCTFFBSVJRMEFJQUV0QUFaRkRRQWdBUzBBQTBVTkFDQUJMUUFIUlEwQUlBRXRBQVZCQVhNaEFnc2dBQ0FDT2dDb3F3RWdBRUYvSUFCQjFBaHFLQUlBSWdGQkFuUWdBVUgvLy8vL0EzRWdBVWNiRUNZaUFqWUNwS3NCUVFBaEFDQUJRUUJLQkVBRFFDQUNJQUJCQW5ScVFRQTJBZ0FnQUVFQmFpSUFJQUZJRFFBTEN3c0pBQ0FBRVAwSkVDb0xZQUFnQUNBRk5nSVVJQUFnQWpZQ0VDQUFJQVkyQWd3Z0FDQUROZ0lJSUFCQkFUb0FCQ0FBUWVTbUVEWUNBQ0FBSUFRcEFnQTNBaGdnQUNBRUtRSUlOd0lnSUFBZ0FUWUNLQ0FBUVN4cUVORUZHaUFBUWdBM0FrQWdBQ0FITmdJOEM4Y0NBUUovSXdCQkVHc2lBU1FBSUFCQjdBVnFRUUJCMEFBUTNRRWFJQUJCdkFscVFRQkJnS0FCRU4wQkdpQUFFSmdHQkVBZ0FCQXpCRUFnQVVFSWFrRUJRUUpCQUVFQVFRQVFUeUFBUWJ3SmFpSUNJQUZCQ0dvUXdBVkJBblJxUVFFMkFnQWdBVUVJYWtFQlFRUkJBRUVBUVFBUVR5QUNJQUZCQ0dvUXdBVkJBblJxUVFFMkFnQWdBVUVJYWtFQlFRSkJBRUVBUVFBUVR5QUJJQUVvQWdoQi8vLy8vMzF4UVlDQWdJQUNjallDQ0NBQ0lBRkJDR29Rd0FWQkFuUnFRUUUyQWdBTEFrQWdBQzBBcEFFTkFBSkFBa0FnQUJBelJRMEFJQUFvQWhSQkJFY05BQ0FBUW9LQWdJQWdOd0tNQmd3QkN5QUFRb09BZ0lBd053S01CaUFBUVFNMkF2QUZDeUFBRURNTkFFRUFJUUlEUUNBQUlBSkJBblJxUWJ3SmFrRUROZ0lBSUFKQkFXb2lBa0dBS0VjTkFBc0xJQUJDZzRDQWdCQTNBcUFHQ3lBQlFSQnFKQUFMcmdJQUlBQWdBaUFFSUFVZ0JpQUhJQWdnQ1JEOER5QUFRUUE2QUdVZ0FDQUJOZ0pNSUFCQm03a0xOZ0pJSUFCQmhOSUpOZ0lBSUFCQ0FEY0NVQ0FBUWdBM0FsZ2dBRUhvQUdvUTRRY2FJQUJCK0FCcUVPRUhHaUFBUVlnQmFpSUJRUUE2QUFFZ0FVRUJPZ0FBSUFGQkJHb1EzUXNhSUFBZ0F6b0FwQUVnQUVJQU53S2NBU0FBUWFnQmFoQ1RBUm9nQUNBQVFiQUVhallDdkFRZ0FFSUFOd0s0QVNBQVFjQUVhaERWQVNFQklBQkJ2Z0kyQXRnRUlBQkJ4TXNQTmdMY0JDQUFRY0FDTmdMb0JDQUFRY1RMRHpZQzdBUWdBRUcvQWpZQytBUWdBRUhFeXc4MkF2d0VJQUJCdlFJMkFvZ0ZJQUJCeE1zUE5nS01CU0FBUWNFQ05nS1lCU0FBUWNUTER6WUNuQVVnQUVFL05nS29CU0FBUW9DQWdJRHcvejgzQXFBRklBb0VRQ0FCSUFvUTZBSUxDNlFFQVFGK0lBQWdBU0FDSUFNZ0JDQUZJQVlnQnlBSUlBa2dDaEQrRHlBQUlBQkJyQWxxTmdLNENTQUFRUUEyQXJRRklBQkJBRG9Bc0FVZ0FFR2sxQWsyQWdBZ0FFRzhxUUZxSWdGQkFEWUNCQ0FCUWFpNUN6WUNBQ0FBUVpTckFXb1ExUUVhSUFCQkFEb0FxS3NCSUFCQkFEWUNwS3NCSUFCQnJLc0JhaENkQkNBQVFiaXJBV29Ra3dFYUlBQkJ5S3NCYWhDVEFSb0NRQ0FBRURORkJFQWdCaWdDQ0VFQlNBMEJDeUFCUVFFNkFBUWdCMEVFUnlBRGNnMEFJQUFRTXcwQUlBWW9BZ2hCQVVnTkFDQUJRUUU2QUFVTElBQVEvUThnQUVINHFRRnFFSWtESUFCQi9La0JhaUlCSUFFcEFnQkMvLy8vLy8vLy8wZURRb0NBZ0lDQWdJQVFoQ0lMTndJQUlBRWdDMEwvLy8vLy8vLy9sM2lEUW9DQWdJQ0FnSUNBQVVLQWdJQ0FnSUNBd0FBZ0JpZ0NBQnVFTndJQUlBQkJ4S2tCYWhDSkF5QUFRY2lwQVdvaUFTQUJLUUlBUXYvLy8vLy8vLzlIZzBLQWdJQ0FnSUNBRUlRaUN6Y0NBQ0FCSUF0Qy8vLy8vLy8vLzVkNGcwS0FnSUNBZ0lDQXdBRkNnSUNBZ0lDQWdNQUFJQVlvQWdBYmhEY0NBQ0FHS0FJQVFZQ0dCRThFUUNBQUtBSW9FSmtHQ3lBQVFheXFBV29RaVFNZ0FFSGdxZ0ZxRUlrRElBZEJBMDBFUUNBQVFmaXFBV29pQVNBQktRSUFRdi8vLy8rUGZvTTNBZ0FMSUFkQkEwWUVRQ0FBUWZpcUFXb2lBQ0FBS1FJQVF2Ly8vNGR3Z3pjQ0FBc0NRQ0FLUlEwQUlBb1FIMFVOQUNBS1FieldDUkNjQkVVTkFDQUlRUUpCd2RZSkVMc0JDd3ViQlFFRWZ5TUFRUkJySWdZa0FDQUNFQjlCQlU4RVFDQUFJQUZCNzlBSklBSVFFMEczelFsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQmlBQ0VCODJBZ0JCaU5FSklBWVEvZ0VvQWdBaUIwRUJUZ1JBQTBBQ1FBSkFJQUlnQlJCUUxBQUFRWjkvYWlJSVFSbExEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDRUVCYXc0WkJ3d01EQXdFREF3TURBd01EQXdJQ3dFQ0JRd01DUUFEQmdvTElBUkJBQkRIQWlBR0lBVkJBblJxUVFBMkFnQU1EQXNnQkVFQUVNY0NJQVlnQlVFQ2RHcEJBVFlDQUF3TEN5QUVRUUFReHdJZ0JpQUZRUUowYWtFQ05nSUFEQW9MSUFSQkFSREhBaUFHSUFWQkFuUnFRUUEyQWdBTUNRc2dCRUVCRU1jQ0lBWWdCVUVDZEdwQkFUWUNBQXdJQ3lBRVFRRVF4d0lnQmlBRlFRSjBha0VDTmdJQURBY0xJQVJCQWhESEFpQUdJQVZCQW5ScVFRQTJBZ0FNQmdzZ0JFRUNFTWNDSUFZZ0JVRUNkR3BCQVRZQ0FBd0ZDeUFFUVFJUXh3SWdCaUFGUVFKMGFrRUNOZ0lBREFRTElBUkJBeERIQWlBR0lBVkJBblJxUVFBMkFnQU1Bd3NnQkVFREVNY0NJQVlnQlVFQ2RHcEJBVFlDQUF3Q0N5QUVRUU1ReHdJZ0JpQUZRUUowYWtFQ05nSUFEQUVMSUFBZ0FVR00wUWtnQWhBVFFiZk5DVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUZRUUZxSWdVZ0IwY05BQXNMUVFBaEJRSkFJQVFvQWdCQkFFd05BQU5BSUFRZ0JSQ2dCaUFEVGdSQUlBQWdBVUdtMFFrZ0FoQVRRYmZOQ1VFQUlBQW9BZ0FvQXFBQkVRSUFJQVFnQlJEaEFRd0NDd0pBSUFWRkRRQWdCaUFGUVFKMGFpSUhLQUlBSUFkQmZHb29BZ0JHRFFBZ0FDQUJRY3pSQ1NBQ0VCTkJ0ODBKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCQ0FGRU9FQkRBSUxJQVZCQVdvaUJTQUVLQUlBU0EwQUN3c2dCQ2dDQUVVRVFDQUVRUUFReHdJTElBWkJFR29rQUF2aEFRRURmMEVCSVFVQ1FDQUFLQUlBSWdNZ0F5Z0NBQ2dDa0FFUkFBQkJBVWdOQUVFQUlRVkJBQ0VEQTBBZ0FDZ0NCQ0FBS0FJQUlnUWdBeUFFS0FJQUtBS2dBUkVEQUNnQ0JDQUJJQU1nQVNnQ0FDZ0NvQUVSQXdBb0FnUWdBaUFESUFJb0FnQW9BcUFCRVFNQUtBSUVFTXdIRFFFZ0FDZ0NCQ0FBS0FJQUlnUWdBeUFFS0FJQUtBS2dBUkVEQUNnQ0JDQUNJQU1nQWlnQ0FDZ0NvQUVSQXdBb0FnUWdBU0FESUFFb0FnQW9BcUFCRVFNQUtBSUVFTXdIRFFFZ0EwRUJhaUlESUFBb0FnQWlCQ0FFS0FJQUtBS1FBUkVBQUVnTkFBdEJBU0VGQ3lBRkMzY0JBMzhqQUVFZ2F5SUNKQUFnQUNnQ1RDQUNRUWhxSUFFUUlpSUVJQUpCSDJwQkFCQ3NBU0VCSUFRUUdSb2dBaUFCTmdJWUlBRUVRQUovSUFJdEFCOEVRQ0FBSUFKQkdHb2dBQ2dDQUNnQ2pBSVJBUUFnQWlnQ0dDRUJDeUFCQ3lBQktBSUFLQUlrRVFBQUlRTUxJQUpCSUdva0FDQURDMXdCQW44Q1FDQUFLQUlBSWdFZ0FTZ0NBQ2dDekFFUkFBQkZEUUFnQUNnQ0FDSUJJQUVvQWdBb0Frd1JBQUFRd2dKRkRRQWdBQ2dDQUNJQUlBQW9BZ0FvQWt3UkFBQVF3Z0lpQUNBQUtBSUFLQUl3RVFBQVJTRUNDeUFDQ3pNQkFYOGpBRUVRYXlJQ0pBQWdBQzBBcEFGRkJFQWdBaUFCTmdJTUlBQkJxQUZxSUFKQkRHb1FzZ1FMSUFKQkVHb2tBQXMxQVFGL0l3QkJFR3NpQmlRQUlBWWdCVFlDRENBQUlBRWdBaUFESUFSQkFTQUZJQUFvQWdBb0FvUUNFUThBSUFaQkVHb2tBQXRLQVFGL0l3QkJFR3NpQmlRQUlBWWdCVFlDRENBQUlBRWdBaUFESUFSQkFpQUZJQUFvQWdBb0FvUUNFUThBSUFBdEFEeEJnQUZ4UlFSQUlBQW9Ba1FRaGdvTElBWkJFR29rQUFzK0FRRi9Jd0JCRUdzaUJpUUFJQUFRaFFwRkJFQWdCaUFGTmdJTUlBQWdBU0FDSUFNZ0JFRUJJQVVnQUNnQ0FDZ0NoQUlSRHdBTElBWkJFR29rQUF0VkFRRi9Jd0JCRUdzaUJpUUFBa0FnQUMwQVBFRWdjUTBBSUFZZ0JUWUNEQ0FBSUFFZ0FpQURJQVJCQWlBRklBQW9BZ0FvQW9RQ0VROEFJQUF0QUR4QmdBRnhEUUFnQUNnQ1JCQ0dDZ3NnQmtFUWFpUUFDM1lCQVg4akFFSFFDV3NpQnlRQUlBZEJ5QWtnQkNBR0VOVUZHaUFBS0FJTUlBVVFyUU1nQUNnQ0RDQUJFSTBLSUFBb0FneEJtczBKRUJBZ0F4QVFRWnpOQ1JBUUlBSVFFRUdoelFrUUVDQUhFQkJCbzgwSkVCQWFJQVZCQWtZRVFDQUFJQUFvQWtCQkFXbzJBa0FMSUFkQjBBbHFKQUFMMWdFQ0EzOEJmU01BUVJCcklnSWtBQ0FDSUFFMkFnd0NRQ0FDSUFGQkFVWUVmMEVDQlNBQklBRkJmMnB4UlEwQklBRVFpZ0lMSWdFMkFnd0xBa0FnQVNBQUVEd2lBMHNFUUNBQUlBRVFod29NQVFzZ0FTQURUdzBBSUFNUXVnRWhCQUovSUFBUUl5Z0NBTE1nQUJCREtnSUFsWTBpQlVNQUFJQlBYU0FGUXdBQUFBQmdjUVJBSUFXcERBRUxRUUFMSVFFZ0FnSi9JQVFFUUNBQkVJb0VEQUVMSUFFUWlnSUxOZ0lJSUFJZ0FrRU1haUFDUVFocUVGSW9BZ0FpQVRZQ0RDQUJJQU5QRFFBZ0FDQUJFSWNLQ3lBQ1FSQnFKQUFMNEFNQ0JYOEJmU01BUVNCcklnUWtBQ0FDS0FJQUVOQUhJUWNnQVJBOElRVWdCRUVBT2dBZkFrQUNRQ0FGUlEwQUlBRWdCeUFGRURRaUNCQVJLQUlBSWdaRkRRQURRQ0FHS0FJQUlnWkZEUUVnQnlBR0tBSUVSd1JBSUFZb0FnUWdCUkEwSUFoSERRSUxJQVlvQWdnZ0FpZ0NBQkREQlVVTkFBc01BUXNnQkVFUWFpQUJJQWNnQXhEQ0JTQUJFQ01vQWdBaEFpQUJFRU1oQXdKQUlBVUVRQ0FES2dJQUlBV3psQ0FDUVFGcXMxMUJBWE1OQVFzZ0JDQUZFTG9CUVFGeklBVkJBWFJ5TmdJTUlBUUNmeUFCRUNNb0FnQkJBV3F6SUFFUVF5b0NBSldOSWdsREFBQ0FUMTBnQ1VNQUFBQUFZSEVFUUNBSnFRd0JDMEVBQ3pZQ0NDQUJJQVJCREdvZ0JFRUlhaEJTS0FJQUVJb1FJQWNnQVJBOElnVVFOQ0VJQ3dKQUlBRWdDQkFSS0FJQUlnSkZCRUFnQkNnQ0VDQUJRUWhxSWdJb0FnQTJBZ0FnQWlBRUtBSVFOZ0lBSUFFZ0NCQVJJQUkyQWdBZ0JDZ0NFQ2dDQUVVTkFTQUVLQUlRSVFJZ0FTQUVLQUlRS0FJQUtBSUVJQVVRTkJBUklBSTJBZ0FNQVFzZ0JDZ0NFQ0FDS0FJQU5nSUFJQUlnQkNnQ0VEWUNBQXNnQkVFUWFoQmZJUVlnQVJBaklnRWdBU2dDQUVFQmFqWUNBQ0FFUVFFNkFCOGdCRUVRYWhDekFnc2dBQ0FFUVJCcUlBWVFNU0FFUVI5cUVLSUJJQVJCSUdva0FBc3pBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNDQ0FDS0FJSUtBSUFJUUVnQUVFQU5nSUVJQUFnQVRZQ0FDQUNRUkJxSkFBTDFnRUNBMzhCZlNNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dDUUNBQ0lBRkJBVVlFZjBFQ0JTQUJJQUZCZjJweFJRMEJJQUVRaWdJTElnRTJBZ3dMQWtBZ0FTQUFFRHdpQTBzRVFDQUFJQUVRaVFvTUFRc2dBU0FEVHcwQUlBTVF1Z0VoQkFKL0lBQVFJeWdDQUxNZ0FCQkRLZ0lBbFkwaUJVTUFBSUJQWFNBRlF3QUFBQUJnY1FSQUlBV3BEQUVMUVFBTElRRWdBZ0ovSUFRRVFDQUJFSW9FREFFTElBRVFpZ0lMTmdJSUlBSWdBa0VNYWlBQ1FRaHFFRklvQWdBaUFUWUNEQ0FCSUFOUERRQWdBQ0FCRUlrS0N5QUNRUkJxSkFBTE1RRUJmeU1BUVJCcklnRWtBQ0FCSUFBb0FnQTJBZ2dnQVVFSWFrRUJFS3NPSUFFb0FnZ2hBQ0FCUVJCcUpBQWdBQXRtQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ0FCSUFBUVBDQUFFQ1VRcGc0MkFnZ2dBaUFBRUlFQk5nSUFBbjhDUUNBQ1FRaHFJQUlRSGtVTkFDQUFFQ01nQVNBQ1FRaHFFRmNRandRTkFDQUNLQUlJREFFTElBQVFnUUVMSVFBZ0FrRVFhaVFBSUFBTEJ3QWdBQzBBQkF1ckFRRUZmeU1BUVJCcklnTWtBQ0FBRUNNZ0FSQ0xDaUVFQWtBQ1FDQUFFRHdpQlVVTkFDQUFJQVFnQlJBMElnWVFFU2dDQUNJQ1JRMEFJQUlvQWdBaUFrVU5BQU5BSUFRZ0FpZ0NCRWNFUUNBQ0tBSUVJQVVRTkNBR1J3MENDd0pBSUFRZ0FpZ0NCRWNOQUNBQUVFTWdBa0VJYWlBQkVKc0dSUTBBSUFOQkNHb2dBaEF4S0FJQUlRSU1Bd3NnQWlnQ0FDSUNEUUFMQ3lBREVNc0JJZ0kyQWdnTElBTkJFR29rQUNBQ0Myd0JBMzhqQUVFZ2F5SUNKQUFnQVJCZ1FRSk9CRUFnQUJDZEJ5QUNJQUFvQWdRaUFCQkFOZ0lRSUFKQkdHb2dBa0VRYWhCbklRTWdBaUFCS0FJRUVFQTJBZ2dnQWtFSWFoQ09FQ0VFSUFFb0FnUVFNaUVCSUFBZ0F5Z0NBQ0FFSUFFUXN3NExJQUpCSUdva0FBdXBBUUVFZnlNQVFSQnJJZ0lrQUNBQktBSUFFTkFISVFNQ1FBSkFJQUFRUENJRVJRMEFJQUFnQXlBRUVEUWlCUkFSS0FJQUlnQkZEUUFnQUNnQ0FDSUFSUTBBQTBBZ0F5QUFLQUlFUndSQUlBQW9BZ1FnQkJBMElBVkhEUUlMQWtBZ0F5QUFLQUlFUncwQUlBQW9BZ2dnQVNnQ0FCRERCVVVOQUNBQ1FRaHFJQUFRTVNnQ0FDRUFEQU1MSUFBb0FnQWlBQTBBQ3dzZ0FoRExBU0lBTmdJSUN5QUNRUkJxSkFBZ0FBdXBBUUVCZndKQUFrQWdBQ2dDQkJBelJRUkFJQUFvQWdRaEFRd0JDeUFBS0FJRUlnRW9BaEJCdGdKSURRQWdBQkRaQVF3QkN5QUJLQUpNRUNRTkFDQUFLQUlFRURORkJFQWdBQ2dDQkNJQktBSVFRYU1EU2cwQklBRkJyYjhKSUFFb0FnQW9BaUFSQXdBTkFRc2dBQ2dDQkMwQUJBUkFJQUFvQWdRaUFTQUFRUXhxUWYzSkNTQUFLQUlrUVpXK0NVRUFJQUVvQWdBb0FxUUJFUUlBQ3lBQUVOZ0JEd3NnQUNnQ0tBdDZBUUovSUFBb0FnUVFNeUVDSUFBb0FnUWhBUUpBQWtBZ0FnUkFJQUVvQWhCQnJBSklEUUVMSUFFUU13MEJJQUFvQWdRaUFTZ0NFRUdDQVU0TkFRc2dBUzBBQkFSQUlBQW9BZ1FpQVNBQVFReHFRWmZKQ1NBQUtBSWtRWlcrQ1VFQUlBRW9BZ0FvQXFRQkVRSUFDeUFBRU5nQkR3c2dBQ2dDS0F1N0FRRUNmeUFBUVFFNkFBZ2dBQ2dDQkJBeklRSWdBQ2dDQkNFQkFrQUNRQUpBSUFKRkRRQWdBU2dDRUVHc0FrZ05BQ0FBRU5rQkRBRUxJQUVRTXcwQklBQW9BZ1FpQVNnQ0VFR1BBMG9OQUNBQktBSk1FQ1FOQUNBQUtBSUVJZ0VvQWhCQmxnRklEUUVnQVVIUXdBa2dBU2dDQUNnQ0lCRURBRVVOQVFzZ0FDZ0NLQThMSUFBb0FnUXRBQVFFUUNBQUtBSUVJZ0VnQUVFTWFrSDl5UWtnQUNnQ0pFR1Z2Z2xCQUNBQktBSUFLQUtrQVJFQ0FBc2dBQkRZQVF0V0FRRi9JQUJCQVRvQUNDQUFLQUlFSWdFb0FoQkI3d0JPQkVBZ0FDZ0NLQThMSUFFdEFBUUVRQ0FBS0FJRUlnRWdBRUVNYWtIUnlRa2dBQ2dDSkVHVnZnbEJBQ0FCS0FJQUtBS2tBUkVDQUFzZ0FCRFlBUXRjQVFGL0FrQWdBQ2dDQkJBelJRUkFJQUFvQWdRaUFTZ0NFRUdDQVVnTkFRc2dBQ2dDS0E4TElBRXRBQVFFUUNBQUtBSUVJZ0VnQUVFTWFrR3N5UWtnQUNnQ0pFR1Z2Z2xCQUNBQktBSUFLQUtrQVJFQ0FBc2dBQkRZQVFzbEFRRi9Jd0JCRUdzaUFTUUFJQUFnQVVFSWFoQ1lEaERwR1NFQUlBRkJFR29rQUNBQUN5VUJBWDhqQUVFUWF5SUFKQUFnQUVFSWFoRExBUkF4S0FJQUlRRWdBRUVRYWlRQUlBRUxLUUVCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVJDUkVCQXhLQUlBSVFBZ0FrRVFhaVFBSUFBTExBRUJmeU1BUVJCcklnQWtBQ0FBRU1zQk5nSUFJQUJCQ0dvZ0FCQm5LQUlBSVFFZ0FFRVFhaVFBSUFFTE1BRUJmeU1BUVJCcklnSWtBQ0FDSUFBZ0FSQ1RFRFlDQUNBQ1FRaHFJQUlRWnlnQ0FDRUFJQUpCRUdva0FDQUFDK2dEQWdWL0FYMGpBRUVnYXlJRkpBQWdBUkFqSUFJUWl3b2hDQ0FCRUR3aEJpQUZRUUE2QUI4Q1FBSkFJQVpGRFFBZ0FTQUlJQVlRTkNJSkVCRW9BZ0FpQjBVTkFBTkFJQWNvQWdBaUIwVU5BU0FJSUFjb0FnUkhCRUFnQnlnQ0JDQUdFRFFnQ1VjTkFnc2dBUkJESUFkQkNHb2dBaENiQmtVTkFBc01BUXNnQlVFUWFpQUJJQWhCbWMwSklBTWdCQkNhQmlBQkVDTW9BZ0FoQWlBQkVFTWhBd0pBSUFZRVFDQURLZ0lBSUFhemxDQUNRUUZxczExQkFYTU5BUXNnQlNBR0VMb0JRUUZ6SUFaQkFYUnlOZ0lNSUFVQ2Z5QUJFQ01vQWdCQkFXcXpJQUVRUXlvQ0FKV05JZ3BEQUFDQVQxMGdDa01BQUFBQVlIRUVRQ0FLcVF3QkMwRUFDellDQ0NBQklBVkJER29nQlVFSWFoQlNLQUlBRUkwUUlBZ2dBUkE4SWdZUU5DRUpDd0pBSUFFZ0NSQVJLQUlBSWdKRkJFQWdCU2dDRUNBQlFRaHFJZ0lvQWdBMkFnQWdBaUFGS0FJUU5nSUFJQUVnQ1JBUklBSTJBZ0FnQlNnQ0VDZ0NBRVVOQVNBRktBSVFJUUlnQVNBRktBSVFLQUlBS0FJRUlBWVFOQkFSSUFJMkFnQU1BUXNnQlNnQ0VDQUNLQUlBTmdJQUlBSWdCU2dDRURZQ0FBc2dCVUVRYWhCZklRY2dBUkFqSWdFZ0FTZ0NBRUVCYWpZQ0FDQUZRUUU2QUI4Z0JVRVFhaEN6QWdzZ0FDQUZRUkJxSUFjUU1TQUZRUjlxRUtJQklBVkJJR29rQUF1dFd3RURmeU1BUVJCcklnQWtBRUdFOUJJb0FnQkZCRUJCRkJBbUlnRVFsZ0VoQWtHRTlCSWdBVFlDQUNBQVFaYWRDVFlDQUNBQ0lBQVFGRUdDQWpZQ0FFR0U5QklvQWdBaEFTQUFRWnlkQ1RZQ0FDQUJJQUFRRkVIeEJEWUNBRUdFOUJJb0FnQWhBU0FBUWFTZENUWUNBQ0FCSUFBUUZFSHpCRFlDQUVHRTlCSW9BZ0FoQVNBQVFhdWRDVFlDQUNBQklBQVFGRUhnQkRZQ0FFR0U5QklvQWdBaEFTQUFRYTZkQ1RZQ0FDQUJJQUFRRkVIaEJEWUNBRUdFOUJJb0FnQWhBU0FBUWJLZENUWUNBQ0FCSUFBUUZFSDFCRFlDQUVHRTlCSW9BZ0FoQVNBQVFibWRDVFlDQUNBQklBQVFGRUgwQkRZQ0FFR0U5QklvQWdBaEFTQUFRYjZkQ1RZQ0FDQUJJQUFRRkVIZkJEWUNBRUdFOUJJb0FnQWhBU0FBUWNlZENUWUNBQ0FCSUFBUUZFSFJCRFlDQUVHRTlCSW9BZ0FoQVNBQVFkR2RDVFlDQUNBQklBQVFGRUhXQkRZQ0FFR0U5QklvQWdBaEFTQUFRZGlkQ1RZQ0FDQUJJQUFRRkVIWEJEWUNBRUdFOUJJb0FnQWhBU0FBUWVHZENUWUNBQ0FCSUFBUUZFSGlCRFlDQUVHRTlCSW9BZ0FoQVNBQVFlZWRDVFlDQUNBQklBQVFGRUhqQkRZQ0FFR0U5QklvQWdBaEFTQUFRZTZkQ1RZQ0FDQUJJQUFRRkVIbUJEWUNBRUdFOUJJb0FnQWhBU0FBUWZTZENUWUNBQ0FCSUFBUUZFSG5CRFlDQUVHRTlCSW9BZ0FoQVNBQVFmMmRDVFlDQUNBQklBQVFGRUhvQkRZQ0FFR0U5QklvQWdBaEFTQUFRWUNlQ1RZQ0FDQUJJQUFRRkVIcUJEWUNBRUdFOUJJb0FnQWhBU0FBUVlTZUNUWUNBQ0FCSUFBUUZFSGxCRFlDQUVHRTlCSW9BZ0FoQVNBQVFZcWVDVFlDQUNBQklBQVFGRUh1QkRZQ0FFR0U5QklvQWdBaEFTQUFRWkdlQ1RZQ0FDQUJJQUFRRkVIdkJEWUNBRUdFOUJJb0FnQWhBU0FBUVphZUNUWUNBQ0FCSUFBUUZFSHdCRFlDQUVHRTlCSW9BZ0FoQVNBQVFaNmVDVFlDQUNBQklBQVFGRUhyQkRZQ0FFR0U5QklvQWdBaEFTQUFRYUdlQ1RZQ0FDQUJJQUFRRkVIcEJEWUNBRUdFOUJJb0FnQWhBU0FBUWFhZUNUWUNBQ0FCSUFBUUZFSHNCRFlDQUVHRTlCSW9BZ0FoQVNBQVFhNmVDVFlDQUNBQklBQVFGRUh0QkRZQ0FFR0U5QklvQWdBaEFTQUFRYldlQ1RZQ0FDQUJJQUFRRkVIa0JEWUNBRUdFOUJJb0FnQWhBU0FBUWJxZUNUWUNBQ0FCSUFBUUZFR0RBallDQUVHRTlCSW9BZ0FoQVNBQVFiK2VDVFlDQUNBQklBQVFGRUdHQWpZQ0FFR0U5QklvQWdBaEFTQUFRY1dlQ1RZQ0FDQUJJQUFRRkVHRUFqWUNBRUdFOUJJb0FnQWhBU0FBUWNtZUNUWUNBQ0FCSUFBUUZFR0hBallDQUVHRTlCSW9BZ0FoQVNBQVFjK2VDVFlDQUNBQklBQVFGRUdJQWpZQ0FFR0U5QklvQWdBaEFTQUFRZFdlQ1RZQ0FDQUJJQUFRRkVHSkFqWUNBRUdFOUJJb0FnQWhBU0FBUWR1ZUNUWUNBQ0FCSUFBUUZFR1FBallDQUVHRTlCSW9BZ0FoQVNBQVFlQ2VDVFlDQUNBQklBQVFGRUdSQWpZQ0FFR0U5QklvQWdBaEFTQUFRZVdlQ1RZQ0FDQUJJQUFRRkVHU0FqWUNBRUdFOUJJb0FnQWhBU0FBUWVxZUNUWUNBQ0FCSUFBUUZFR0tBallDQUVHRTlCSW9BZ0FoQVNBQVFmQ2VDVFlDQUNBQklBQVFGRUdMQWpZQ0FFR0U5QklvQWdBaEFTQUFRZmFlQ1RZQ0FDQUJJQUFRRkVHTUFqWUNBRUdFOUJJb0FnQWhBU0FBUWZ5ZUNUWUNBQ0FCSUFBUUZFR1RBallDQUVHRTlCSW9BZ0FoQVNBQVFZR2ZDVFlDQUNBQklBQVFGRUdVQWpZQ0FFR0U5QklvQWdBaEFTQUFRWWFmQ1RZQ0FDQUJJQUFRRkVHVkFqWUNBRUdFOUJJb0FnQWhBU0FBUVl1ZkNUWUNBQ0FCSUFBUUZFSGNCRFlDQUVHRTlCSW9BZ0FoQVNBQVFaQ2ZDVFlDQUNBQklBQVFGRUhjQkRZQ0FFR0U5QklvQWdBaEFTQUFRWmFmQ1RZQ0FDQUJJQUFRRkVIMkJEWUNBRUdFOUJJb0FnQWhBU0FBUVoyZkNUWUNBQ0FCSUFBUUZFSHlCRFlDQUVHRTlCSW9BZ0FoQVNBQVFhU2ZDVFlDQUNBQklBQVFGRUhTQkRZQ0FFR0U5QklvQWdBaEFTQUFRYXFmQ1RZQ0FDQUJJQUFRRkVIVEJEWUNBRUdFOUJJb0FnQWhBU0FBUWJLZkNUWUNBQ0FCSUFBUUZFSFVCRFlDQUVHRTlCSW9BZ0FoQVNBQVFiZWZDVFlDQUNBQklBQVFGRUhZQkRZQ0FFR0U5QklvQWdBaEFTQUFRYjZmQ1RZQ0FDQUJJQUFRRkVIVkJEWUNBRUdFOUJJb0FnQWhBU0FBUWNpZkNUWUNBQ0FCSUFBUUZFR1dBallDQUVHRTlCSW9BZ0FoQVNBQVFjK2ZDVFlDQUNBQklBQVFGRUdYQWpZQ0FFR0U5QklvQWdBaEFTQUFRZGFmQ1RZQ0FDQUJJQUFRRkVHWUFqWUNBRUdFOUJJb0FnQWhBU0FBUWQyZkNUWUNBQ0FCSUFBUUZFR1pBallDQUVHRTlCSW9BZ0FoQVNBQVFlU2ZDVFlDQUNBQklBQVFGRUdhQWpZQ0FFR0U5QklvQWdBaEFTQUFRZXVmQ1RZQ0FDQUJJQUFRRkVHYkFqWUNBRUdFOUJJb0FnQWhBU0FBUWZLZkNUWUNBQ0FCSUFBUUZFR2NBallDQUVHRTlCSW9BZ0FoQVNBQVFmbWZDVFlDQUNBQklBQVFGRUdkQWpZQ0FFR0U5QklvQWdBaEFTQUFRWUNnQ1RZQ0FDQUJJQUFRRkVHZUFqWUNBRUdFOUJJb0FnQWhBU0FBUVllZ0NUWUNBQ0FCSUFBUUZFR0ZBallDQUVHRTlCSW9BZ0FoQVNBQVFZeWdDVFlDQUNBQklBQVFGRUdOQWpZQ0FFR0U5QklvQWdBaEFTQUFRWktnQ1RZQ0FDQUJJQUFRRkVHT0FqWUNBRUdFOUJJb0FnQWhBU0FBUVppZ0NUWUNBQ0FCSUFBUUZFR1BBallDQUVHRTlCSW9BZ0FoQVNBQVFaNmdDVFlDQUNBQklBQVFGRUdJQlRZQ0FFR0U5QklvQWdBaEFTQUFRYXlnQ1RZQ0FDQUJJQUFRRkVHQUJUWUNBRUdFOUJJb0FnQWhBU0FBUWJPZ0NUWUNBQ0FCSUFBUUZFRzhBallDQUVHRTlCSW9BZ0FoQVNBQVFiMmdDVFlDQUNBQklBQVFGRUc5QWpZQ0FFR0U5QklvQWdBaEFTQUFRY1dnQ1RZQ0FDQUJJQUFRRkVHVEJUWUNBRUdFOUJJb0FnQWhBU0FBUWRPZ0NUWUNBQ0FCSUFBUUZFR0pCVFlDQUVHRTlCSW9BZ0FoQVNBQVFkeWdDVFlDQUNBQklBQVFGRUdPQlRZQ0FFR0U5QklvQWdBaEFTQUFRZXVnQ1RZQ0FDQUJJQUFRRkVHUEJUWUNBRUdFOUJJb0FnQWhBU0FBUWYrZ0NUWUNBQ0FCSUFBUUZFR1FCVFlDQUVHRTlCSW9BZ0FoQVNBQVFaR2hDVFlDQUNBQklBQVFGRUdSQlRZQ0FFR0U5QklvQWdBaEFTQUFRYUtoQ1RZQ0FDQUJJQUFRRkVHU0JUWUNBRUdFOUJJb0FnQWhBU0FBUWEyaENUWUNBQ0FCSUFBUUZFR0xCVFlDQUVHRTlCSW9BZ0FoQVNBQVFiYWhDVFlDQUNBQklBQVFGRUdNQlRZQ0FFR0U5QklvQWdBaEFTQUFRYitoQ1RZQ0FDQUJJQUFRRkVHTkJUWUNBRUdFOUJJb0FnQWhBU0FBUWNtaENUWUNBQ0FCSUFBUUZFR2VBellDQUVHRTlCSW9BZ0FoQVNBQVFkV2hDVFlDQUNBQklBQVFGRUdLQlRZQ0FFR0U5QklvQWdBaEFTQUFRZDZoQ1RZQ0FDQUJJQUFRRkVHR0JUWUNBRUdFOUJJb0FnQWhBU0FBUWVTaENUWUNBQ0FCSUFBUUZFR0hCVFlDQUVHRTlCSW9BZ0FoQVNBQVFldWhDVFlDQUNBQklBQVFGRUgvQkRZQ0FFR0U5QklvQWdBaEFTQUFRZmFoQ1RZQ0FDQUJJQUFRRkVIbEFqWUNBRUdFOUJJb0FnQWhBU0FBUWZ5aENUWUNBQ0FCSUFBUUZFSG1BallDQUVHRTlCSW9BZ0FoQVNBQVFZS2lDVFlDQUNBQklBQVFGRUhuQWpZQ0FFR0U5QklvQWdBaEFTQUFRWWlpQ1RZQ0FDQUJJQUFRRkVINkFqWUNBRUdFOUJJb0FnQWhBU0FBUVpDaUNUWUNBQ0FCSUFBUUZFSDdBallDQUVHRTlCSW9BZ0FoQVNBQVFaaWlDVFlDQUNBQklBQVFGRUg4QWpZQ0FFR0U5QklvQWdBaEFTQUFRYUNpQ1RZQ0FDQUJJQUFRRkVIOUFqWUNBRUdFOUJJb0FnQWhBU0FBUWFpaUNUWUNBQ0FCSUFBUUZFSCtBallDQUVHRTlCSW9BZ0FoQVNBQVFiQ2lDVFlDQUNBQklBQVFGRUgvQWpZQ0FFR0U5QklvQWdBaEFTQUFRYmlpQ1RZQ0FDQUJJQUFRRkVHQUF6WUNBRUdFOUJJb0FnQWhBU0FBUWNDaUNUWUNBQ0FCSUFBUUZFR0JBellDQUVHRTlCSW9BZ0FoQVNBQVFjaWlDVFlDQUNBQklBQVFGRUdDQXpZQ0FFR0U5QklvQWdBaEFTQUFRZENpQ1RZQ0FDQUJJQUFRRkVIUUF6WUNBRUdFOUJJb0FnQWhBU0FBUWRpaUNUWUNBQ0FCSUFBUUZFSFJBellDQUVHRTlCSW9BZ0FoQVNBQVFlR2lDVFlDQUNBQklBQVFGRUhTQXpZQ0FFR0U5QklvQWdBaEFTQUFRZXFpQ1RZQ0FDQUJJQUFRRkVIVEF6WUNBRUdFOUJJb0FnQWhBU0FBUWZLaUNUWUNBQ0FCSUFBUUZFSFVBellDQUVHRTlCSW9BZ0FoQVNBQVFmdWlDVFlDQUNBQklBQVFGRUhWQXpZQ0FFR0U5QklvQWdBaEFTQUFRWVNqQ1RZQ0FDQUJJQUFRRkVIV0F6WUNBRUdFOUJJb0FnQWhBU0FBUVl5akNUWUNBQ0FCSUFBUUZFSFhBellDQUVHRTlCSW9BZ0FoQVNBQVFaV2pDVFlDQUNBQklBQVFGRUhZQXpZQ0FFR0U5QklvQWdBaEFTQUFRWjZqQ1RZQ0FDQUJJQUFRRkVIWkF6WUNBRUdFOUJJb0FnQWhBU0FBUWFxakNUWUNBQ0FCSUFBUUZFSGFBellDQUVHRTlCSW9BZ0FoQVNBQVFiZWpDVFlDQUNBQklBQVFGRUhiQXpZQ0FFR0U5QklvQWdBaEFTQUFRY1NqQ1RZQ0FDQUJJQUFRRkVIY0F6WUNBRUdFOUJJb0FnQWhBU0FBUWM2akNUWUNBQ0FCSUFBUUZFSGRBellDQUVHRTlCSW9BZ0FoQVNBQVFkbWpDVFlDQUNBQklBQVFGRUhlQXpZQ0FFR0U5QklvQWdBaEFTQUFRZVNqQ1RZQ0FDQUJJQUFRRkVIZkF6WUNBRUdFOUJJb0FnQWhBU0FBUWZDakNUWUNBQ0FCSUFBUUZFSGdBellDQUVHRTlCSW9BZ0FoQVNBQVFmMmpDVFlDQUNBQklBQVFGRUhoQXpZQ0FFR0U5QklvQWdBaEFTQUFRWXFrQ1RZQ0FDQUJJQUFRRkVIaUF6WUNBRUdFOUJJb0FnQWhBU0FBUVpla0NUWUNBQ0FCSUFBUUZFSGpBellDQUVHRTlCSW9BZ0FoQVNBQVFhV2tDVFlDQUNBQklBQVFGRUhrQXpZQ0FFR0U5QklvQWdBaEFTQUFRYk9rQ1RZQ0FDQUJJQUFRRkVIbEF6WUNBRUdFOUJJb0FnQWhBU0FBUWNDa0NUWUNBQ0FCSUFBUUZFSG1BellDQUVHRTlCSW9BZ0FoQVNBQVFjNmtDVFlDQUNBQklBQVFGRUhuQXpZQ0FFR0U5QklvQWdBaEFTQUFRZHlrQ1RZQ0FDQUJJQUFRRkVIb0F6WUNBRUdFOUJJb0FnQWhBU0FBUWV1a0NUWUNBQ0FCSUFBUUZFSHBBellDQUVHRTlCSW9BZ0FoQVNBQVFmdWtDVFlDQUNBQklBQVFGRUhxQXpZQ0FFR0U5QklvQWdBaEFTQUFRWXVsQ1RZQ0FDQUJJQUFRRkVIckF6WUNBRUdFOUJJb0FnQWhBU0FBUVpXbENUWUNBQ0FCSUFBUUZFSHNBellDQUVHRTlCSW9BZ0FoQVNBQVFhQ2xDVFlDQUNBQklBQVFGRUh0QXpZQ0FFR0U5QklvQWdBaEFTQUFRYXVsQ1RZQ0FDQUJJQUFRRkVIdUF6WUNBRUdFOUJJb0FnQWhBU0FBUWJxbENUWUNBQ0FCSUFBUUZFSHZBellDQUVHRTlCSW9BZ0FoQVNBQVFjcWxDVFlDQUNBQklBQVFGRUh3QXpZQ0FFR0U5QklvQWdBaEFTQUFRZHFsQ1RZQ0FDQUJJQUFRRkVIQUFqWUNBRUdFOUJJb0FnQWhBU0FBUWVHbENUWUNBQ0FCSUFBUUZFSGlBallDQUVHRTlCSW9BZ0FoQVNBQVFlZWxDVFlDQUNBQklBQVFGRUhqQWpZQ0FFR0U5QklvQWdBaEFTQUFRZTJsQ1RZQ0FDQUJJQUFRRkVIa0FqWUNBRUdFOUJJb0FnQWhBU0FBUWZPbENUWUNBQ0FCSUFBUUZFSENBallDQUVHRTlCSW9BZ0FoQVNBQVFmdWxDVFlDQUNBQklBQVFGRUhEQWpZQ0FFR0U5QklvQWdBaEFTQUFRWVNtQ1RZQ0FDQUJJQUFRRkVIS0FqWUNBRUdFOUJJb0FnQWhBU0FBUVl5bUNUWUNBQ0FCSUFBUUZFSExBallDQUVHRTlCSW9BZ0FoQVNBQVFaU21DVFlDQUNBQklBQVFGRUhNQWpZQ0FFR0U5QklvQWdBaEFTQUFRWnltQ1RZQ0FDQUJJQUFRRkVITkFqWUNBRUdFOUJJb0FnQWhBU0FBUWFTbUNUWUNBQ0FCSUFBUUZFSE9BallDQUVHRTlCSW9BZ0FoQVNBQVFheW1DVFlDQUNBQklBQVFGRUhQQWpZQ0FFR0U5QklvQWdBaEFTQUFRYlNtQ1RZQ0FDQUJJQUFRRkVISUFqWUNBRUdFOUJJb0FnQWhBU0FBUWJ1bUNUWUNBQ0FCSUFBUUZFSGNBallDQUVHRTlCSW9BZ0FoQVNBQVFjS21DVFlDQUNBQklBQVFGRUhkQWpZQ0FFR0U5QklvQWdBaEFTQUFRY21tQ1RZQ0FDQUJJQUFRRkVIZUFqWUNBRUdFOUJJb0FnQWhBU0FBUWRDbUNUWUNBQ0FCSUFBUUZFSEpBallDQUVHRTlCSW9BZ0FoQVNBQVFkaW1DVFlDQUNBQklBQVFGRUhmQWpZQ0FFR0U5QklvQWdBaEFTQUFRZCttQ1RZQ0FDQUJJQUFRRkVIZ0FqWUNBRUdFOUJJb0FnQWhBU0FBUWVhbUNUWUNBQ0FCSUFBUUZFSGhBallDQUVHRTlCSW9BZ0FoQVNBQVFlMm1DVFlDQUNBQklBQVFGRUhHQWpZQ0FFR0U5QklvQWdBaEFTQUFRZldtQ1RZQ0FDQUJJQUFRRkVIV0FqWUNBRUdFOUJJb0FnQWhBU0FBUWYybUNUWUNBQ0FCSUFBUUZFSFhBallDQUVHRTlCSW9BZ0FoQVNBQVFZV25DVFlDQUNBQklBQVFGRUhZQWpZQ0FFR0U5QklvQWdBaEFTQUFRWTJuQ1RZQ0FDQUJJQUFRRkVISEFqWUNBRUdFOUJJb0FnQWhBU0FBUVphbkNUWUNBQ0FCSUFBUUZFSFpBallDQUVHRTlCSW9BZ0FoQVNBQVFaNm5DVFlDQUNBQklBQVFGRUhhQWpZQ0FFR0U5QklvQWdBaEFTQUFRYWFuQ1RZQ0FDQUJJQUFRRkVIYkFqWUNBRUdFOUJJb0FnQWhBU0FBUWE2bkNUWUNBQ0FCSUFBUUZFSEVBallDQUVHRTlCSW9BZ0FoQVNBQVFiYW5DVFlDQUNBQklBQVFGRUhRQWpZQ0FFR0U5QklvQWdBaEFTQUFRYjZuQ1RZQ0FDQUJJQUFRRkVIUkFqWUNBRUdFOUJJb0FnQWhBU0FBUWNhbkNUWUNBQ0FCSUFBUUZFSFNBallDQUVHRTlCSW9BZ0FoQVNBQVFjNm5DVFlDQUNBQklBQVFGRUhGQWpZQ0FFR0U5QklvQWdBaEFTQUFRZGVuQ1RZQ0FDQUJJQUFRRkVIVEFqWUNBRUdFOUJJb0FnQWhBU0FBUWQrbkNUWUNBQ0FCSUFBUUZFSFVBallDQUVHRTlCSW9BZ0FoQVNBQVFlZW5DVFlDQUNBQklBQVFGRUhWQWpZQ0FFR0U5QklvQWdBaEFTQUFRZStuQ1RZQ0FDQUJJQUFRRkVHK0FqWUNBRUdFOUJJb0FnQWhBU0FBUWZtbkNUWUNBQ0FCSUFBUUZFSG9BallDQUVHRTlCSW9BZ0FoQVNBQVFZR29DVFlDQUNBQklBQVFGRUhwQWpZQ0FFR0U5QklvQWdBaEFTQUFRWW1vQ1RZQ0FDQUJJQUFRRkVIcUFqWUNBRUdFOUJJb0FnQWhBU0FBUVpHb0NUWUNBQ0FCSUFBUUZFSHJBallDQUVHRTlCSW9BZ0FoQVNBQVFabW9DVFlDQUNBQklBQVFGRUhzQWpZQ0FFR0U5QklvQWdBaEFTQUFRYUdvQ1RZQ0FDQUJJQUFRRkVIdEFqWUNBRUdFOUJJb0FnQWhBU0FBUWFtb0NUWUNBQ0FCSUFBUUZFR0RBellDQUVHRTlCSW9BZ0FoQVNBQVFiT29DVFlDQUNBQklBQVFGRUdFQXpZQ0FFR0U5QklvQWdBaEFTQUFRYjJvQ1RZQ0FDQUJJQUFRRkVHRkF6WUNBRUdFOUJJb0FnQWhBU0FBUWNlb0NUWUNBQ0FCSUFBUUZFR0dBellDQUVHRTlCSW9BZ0FoQVNBQVFkR29DVFlDQUNBQklBQVFGRUdIQXpZQ0FFR0U5QklvQWdBaEFTQUFRZHVvQ1RZQ0FDQUJJQUFRRkVHSUF6WUNBRUdFOUJJb0FnQWhBU0FBUWVXb0NUWUNBQ0FCSUFBUUZFR0pBellDQUVHRTlCSW9BZ0FoQVNBQVFlK29DVFlDQUNBQklBQVFGRUdLQXpZQ0FFR0U5QklvQWdBaEFTQUFRZm1vQ1RZQ0FDQUJJQUFRRkVHTEF6WUNBRUdFOUJJb0FnQWhBU0FBUVlPcENUWUNBQ0FCSUFBUUZFRy9BallDQUVHRTlCSW9BZ0FoQVNBQVFZMnBDVFlDQUNBQklBQVFGRUh1QWpZQ0FFR0U5QklvQWdBaEFTQUFRWldwQ1RZQ0FDQUJJQUFRRkVIdkFqWUNBRUdFOUJJb0FnQWhBU0FBUVoycENUWUNBQ0FCSUFBUUZFSHdBallDQUVHRTlCSW9BZ0FoQVNBQVFhV3BDVFlDQUNBQklBQVFGRUh4QWpZQ0FFR0U5QklvQWdBaEFTQUFRYTJwQ1RZQ0FDQUJJQUFRRkVIeUFqWUNBRUdFOUJJb0FnQWhBU0FBUWJXcENUWUNBQ0FCSUFBUUZFSHpBallDQUVHRTlCSW9BZ0FoQVNBQVFiMnBDVFlDQUNBQklBQVFGRUdNQXpZQ0FFR0U5QklvQWdBaEFTQUFRY2VwQ1RZQ0FDQUJJQUFRRkVHTkF6WUNBRUdFOUJJb0FnQWhBU0FBUWRHcENUWUNBQ0FCSUFBUUZFR09BellDQUVHRTlCSW9BZ0FoQVNBQVFkdXBDVFlDQUNBQklBQVFGRUdQQXpZQ0FFR0U5QklvQWdBaEFTQUFRZVdwQ1RZQ0FDQUJJQUFRRkVHUUF6WUNBRUdFOUJJb0FnQWhBU0FBUWUrcENUWUNBQ0FCSUFBUUZFR1JBellDQUVHRTlCSW9BZ0FoQVNBQVFmbXBDVFlDQUNBQklBQVFGRUdTQXpZQ0FFR0U5QklvQWdBaEFTQUFRWU9xQ1RZQ0FDQUJJQUFRRkVHVEF6WUNBRUdFOUJJb0FnQWhBU0FBUVkycUNUWUNBQ0FCSUFBUUZFR1VBellDQUVHRTlCSW9BZ0FoQVNBQVFaZXFDVFlDQUNBQklBQVFGRUhCQWpZQ0FFR0U5QklvQWdBaEFTQUFRYUdxQ1RZQ0FDQUJJQUFRRkVIMEFqWUNBRUdFOUJJb0FnQWhBU0FBUWFtcUNUWUNBQ0FCSUFBUUZFSDFBallDQUVHRTlCSW9BZ0FoQVNBQVFiR3FDVFlDQUNBQklBQVFGRUgyQWpZQ0FFR0U5QklvQWdBaEFTQUFRYm1xQ1RZQ0FDQUJJQUFRRkVIM0FqWUNBRUdFOUJJb0FnQWhBU0FBUWNHcUNUWUNBQ0FCSUFBUUZFSDRBallDQUVHRTlCSW9BZ0FoQVNBQVFjbXFDVFlDQUNBQklBQVFGRUg1QWpZQ0FFR0U5QklvQWdBaEFTQUFRZEdxQ1RZQ0FDQUJJQUFRRkVHVkF6WUNBRUdFOUJJb0FnQWhBU0FBUWR1cUNUWUNBQ0FCSUFBUUZFR1dBellDQUVHRTlCSW9BZ0FoQVNBQVFlV3FDVFlDQUNBQklBQVFGRUdYQXpZQ0FFR0U5QklvQWdBaEFTQUFRZStxQ1RZQ0FDQUJJQUFRRkVHWUF6WUNBRUdFOUJJb0FnQWhBU0FBUWZtcUNUWUNBQ0FCSUFBUUZFR1pBellDQUVHRTlCSW9BZ0FoQVNBQVFZT3JDVFlDQUNBQklBQVFGRUdhQXpZQ0FFR0U5QklvQWdBaEFTQUFRWTJyQ1RZQ0FDQUJJQUFRRkVHYkF6WUNBRUdFOUJJb0FnQWhBU0FBUVplckNUWUNBQ0FCSUFBUUZFR2NBellDQUVHRTlCSW9BZ0FoQVNBQVFhR3JDVFlDQUNBQklBQVFGRUdkQXpZQ0FFR0U5QklvQWdBaEFTQUFRYXVyQ1RZQ0FDQUJJQUFRRkVHZkFqWUNBRUdFOUJJb0FnQWhBU0FBUWJXckNUWUNBQ0FCSUFBUUZFR2hBallDQUVHRTlCSW9BZ0FoQVNBQVFjR3JDVFlDQUNBQklBQVFGRUdqQWpZQ0FFR0U5QklvQWdBaEFTQUFRZE9yQ1RZQ0FDQUJJQUFRRkVHa0FqWUNBRUdFOUJJb0FnQWhBU0FBUWVLckNUWUNBQ0FCSUFBUUZFR2xBallDQUVHRTlCSW9BZ0FoQVNBQVFmZXJDVFlDQUNBQklBQVFGRUdtQWpZQ0FFR0U5QklvQWdBaEFTQUFRWUtzQ1RZQ0FDQUJJQUFRRkVHbkFqWUNBRUdFOUJJb0FnQWhBU0FBUVkyc0NUWUNBQ0FCSUFBUUZFR29BallDQUVHRTlCSW9BZ0FoQVNBQVFacXNDVFlDQUNBQklBQVFGRUdwQWpZQ0FFR0U5QklvQWdBaEFTQUFRYXFzQ1RZQ0FDQUJJQUFRRkVHcUFqWUNBRUdFOUJJb0FnQWhBU0FBUWJXc0NUWUNBQ0FCSUFBUUZFR3JBallDQUVHRTlCSW9BZ0FoQVNBQVFjQ3NDVFlDQUNBQklBQVFGRUdzQWpZQ0FFR0U5QklvQWdBaEFTQUFRYzJzQ1RZQ0FDQUJJQUFRRkVHdEFqWUNBRUdFOUJJb0FnQWhBU0FBUWQyc0NUWUNBQ0FCSUFBUUZFR2dBallDQUVHRTlCSW9BZ0FoQVNBQVFlZXNDVFlDQUNBQklBQVFGRUdpQWpZQ0FFR0U5QklvQWdBaEFTQUFRZmVzQ1RZQ0FDQUJJQUFRRkVHd0FqWUNBRUdFOUJJb0FnQWhBU0FBUVlHdENUWUNBQ0FCSUFBUUZFR3lBallDQUVHRTlCSW9BZ0FoQVNBQVFZMnRDVFlDQUNBQklBQVFGRUd6QWpZQ0FFR0U5QklvQWdBaEFTQUFRWnl0Q1RZQ0FDQUJJQUFRRkVHMEFqWUNBRUdFOUJJb0FnQWhBU0FBUWFldENUWUNBQ0FCSUFBUUZFRzFBallDQUVHRTlCSW9BZ0FoQVNBQVFiS3RDVFlDQUNBQklBQVFGRUcyQWpZQ0FFR0U5QklvQWdBaEFTQUFRYit0Q1RZQ0FDQUJJQUFRRkVHM0FqWUNBRUdFOUJJb0FnQWhBU0FBUWMrdENUWUNBQ0FCSUFBUUZFRzRBallDQUVHRTlCSW9BZ0FoQVNBQVFkcXRDVFlDQUNBQklBQVFGRUc1QWpZQ0FFR0U5QklvQWdBaEFTQUFRZVd0Q1RZQ0FDQUJJQUFRRkVHNkFqWUNBRUdFOUJJb0FnQWhBU0FBUWZLdENUWUNBQ0FCSUFBUUZFRzdBallDQUVHRTlCSW9BZ0FoQVNBQVFZS3VDVFlDQUNBQklBQVFGRUd4QWpZQ0FFR0U5QklvQWdBaEFTQUFRWXl1Q1RZQ0FDQUJJQUFRRkVHdUFqWUNBRUdFOUJJb0FnQWhBU0FBUVpTdUNUWUNBQ0FCSUFBUUZFR3ZBallDQUVHRTlCSW9BZ0FoQVNBQVFhS3VDVFlDQUNBQklBQVFGRUg4QXpZQ0FFR0U5QklvQWdBaEFTQUFRYk91Q1RZQ0FDQUJJQUFRRkVIOUF6WUNBRUdFOUJJb0FnQWhBU0FBUWNXdUNUWUNBQ0FCSUFBUUZFSCtBellDQUVHRTlCSW9BZ0FoQVNBQVFkZXVDVFlDQUNBQklBQVFGRUdqQXpZQ0FFR0U5QklvQWdBaEFTQUFRZWl1Q1RZQ0FDQUJJQUFRRkVHa0F6WUNBRUdFOUJJb0FnQWhBU0FBUWYrdUNUWUNBQ0FCSUFBUUZFR2xBellDQUVHRTlCSW9BZ0FoQVNBQVFaR3ZDVFlDQUNBQklBQVFGRUdtQXpZQ0FFR0U5QklvQWdBaEFTQUFRYU92Q1RZQ0FDQUJJQUFRRkVHcEF6WUNBRUdFOUJJb0FnQWhBU0FBUWJpdkNUWUNBQ0FCSUFBUUZFRzdBellDQUVHRTlCSW9BZ0FoQVNBQVFjaXZDVFlDQUNBQklBQVFGRUc4QXpZQ0FFR0U5QklvQWdBaEFTQUFRZE92Q1RZQ0FDQUJJQUFRRkVHcUF6WUNBRUdFOUJJb0FnQWhBU0FBUWQ2dkNUWUNBQ0FCSUFBUUZFRzlBellDQUVHRTlCSW9BZ0FoQVNBQVFlNnZDVFlDQUNBQklBQVFGRUd3QXpZQ0FFR0U5QklvQWdBaEFTQUFRZnl2Q1RZQ0FDQUJJQUFRRkVHdUF6WUNBRUdFOUJJb0FnQWhBU0FBUVl1d0NUWUNBQ0FCSUFBUUZFR3ZBellDQUVHRTlCSW9BZ0FoQVNBQVFacXdDVFlDQUNBQklBQVFGRUd4QXpZQ0FFR0U5QklvQWdBaEFTQUFRYW13Q1RZQ0FDQUJJQUFRRkVHeUF6WUNBRUdFOUJJb0FnQWhBU0FBUWJpd0NUWUNBQ0FCSUFBUUZFR3pBellDQUVHRTlCSW9BZ0FoQVNBQVFjU3dDVFlDQUNBQklBQVFGRUcwQXpZQ0FFR0U5QklvQWdBaEFTQUFRZEd3Q1RZQ0FDQUJJQUFRRkVHMUF6WUNBRUdFOUJJb0FnQWhBU0FBUWQ2d0NUWUNBQ0FCSUFBUUZFRzJBellDQUVHRTlCSW9BZ0FoQVNBQVFlK3dDVFlDQUNBQklBQVFGRUczQXpZQ0FFR0U5QklvQWdBaEFTQUFRWUd4Q1RZQ0FDQUJJQUFRRkVHNEF6WUNBRUdFOUJJb0FnQWhBU0FBUVpPeENUWUNBQ0FCSUFBUUZFR25BellDQUVHRTlCSW9BZ0FoQVNBQVFaMnhDVFlDQUNBQklBQVFGRUdyQXpZQ0FFR0U5QklvQWdBaEFTQUFRYTJ4Q1RZQ0FDQUJJQUFRRkVHc0F6WUNBRUdFOUJJb0FnQWhBU0FBUWJ1eENUWUNBQ0FCSUFBUUZFR3RBellDQUVHRTlCSW9BZ0FoQVNBQVFjK3hDVFlDQUNBQklBQVFGRUdvQXpZQ0FFR0U5QklvQWdBaEFTQUFRZDZ4Q1RZQ0FDQUJJQUFRRkVHNUF6WUNBRUdFOUJJb0FnQWhBU0FBUWZHeENUWUNBQ0FCSUFBUUZFRzZBellDQUVHRTlCSW9BZ0FoQVNBQVFZdXlDVFlDQUNBQklBQVFGRUdEQkRZQ0FFR0U5QklvQWdBaEFTQUFRWnV5Q1RZQ0FDQUJJQUFRRkVHQkJEWUNBRUdFOUJJb0FnQWhBU0FBUWFheUNUWUNBQ0FCSUFBUUZFR0FCRFlDQUVHRTlCSW9BZ0FoQVNBQVFiR3lDVFlDQUNBQklBQVFGRUdFQkRZQ0FFR0U5QklvQWdBaEFTQUFRY0d5Q1RZQ0FDQUJJQUFRRkVHSUJEWUNBRUdFOUJJb0FnQWhBU0FBUWMreUNUWUNBQ0FCSUFBUUZFR0dCRFlDQUVHRTlCSW9BZ0FoQVNBQVFkNnlDVFlDQUNBQklBQVFGRUdIQkRZQ0FFR0U5QklvQWdBaEFTQUFRZTJ5Q1RZQ0FDQUJJQUFRRkVHSkJEWUNBRUdFOUJJb0FnQWhBU0FBUWZ5eUNUWUNBQ0FCSUFBUUZFR0tCRFlDQUVHRTlCSW9BZ0FoQVNBQVFZdXpDVFlDQUNBQklBQVFGRUdMQkRZQ0FFR0U5QklvQWdBaEFTQUFRWmV6Q1RZQ0FDQUJJQUFRRkVHTUJEWUNBRUdFOUJJb0FnQWhBU0FBUWFTekNUWUNBQ0FCSUFBUUZFR05CRFlDQUVHRTlCSW9BZ0FoQVNBQVFiR3pDVFlDQUNBQklBQVFGRUdPQkRZQ0FFR0U5QklvQWdBaEFTQUFRY0t6Q1RZQ0FDQUJJQUFRRkVHUEJEWUNBRUdFOUJJb0FnQWhBU0FBUWRTekNUWUNBQ0FCSUFBUUZFR1FCRFlDQUVHRTlCSW9BZ0FoQVNBQVFlYXpDVFlDQUNBQklBQVFGRUgvQXpZQ0FFR0U5QklvQWdBaEFTQUFRZkN6Q1RZQ0FDQUJJQUFRRkVHRkJEWUNBRUdFOUJJb0FnQWhBU0FBUWY2ekNUWUNBQ0FCSUFBUUZFR0NCRFlDQUVHRTlCSW9BZ0FoQVNBQVFZMjBDVFlDQUNBQklBQVFGRUdjQkRZQ0FFR0U5QklvQWdBaEFTQUFRWnEwQ1RZQ0FDQUJJQUFRRkVHZEJEWUNBRUdFOUJJb0FnQWhBU0FBUWFtMENUWUNBQ0FCSUFBUUZFR2VCRFlDQUVHRTlCSW9BZ0FoQVNBQVFiZTBDVFlDQUNBQklBQVFGRUdmQkRZQ0FFR0U5QklvQWdBaEFTQUFRY2UwQ1RZQ0FDQUJJQUFRRkVHZ0JEWUNBRUdFOUJJb0FnQWhBU0FBUWRXMENUWUNBQ0FCSUFBUUZFR2hCRFlDQUVHRTlCSW9BZ0FoQVNBQVFlVzBDVFlDQUNBQklBQVFGRUcrQXpZQ0FFR0U5QklvQWdBaEFTQUFRZkswQ1RZQ0FDQUJJQUFRRkVHL0F6WUNBRUdFOUJJb0FnQWhBU0FBUWYrMENUWUNBQ0FCSUFBUUZFSEFBellDQUVHRTlCSW9BZ0FoQVNBQVFZeTFDVFlDQUNBQklBQVFGRUhCQXpZQ0FFR0U5QklvQWdBaEFTQUFRWjIxQ1RZQ0FDQUJJQUFRRkVIQ0F6WUNBRUdFOUJJb0FnQWhBU0FBUWF5MUNUWUNBQ0FCSUFBUUZFSERBellDQUVHRTlCSW9BZ0FoQVNBQVFiNjFDVFlDQUNBQklBQVFGRUhFQXpZQ0FFR0U5QklvQWdBaEFTQUFRZEMxQ1RZQ0FDQUJJQUFRRkVIRkF6WUNBRUdFOUJJb0FnQWhBU0FBUWVTMUNUWUNBQ0FCSUFBUUZFSEdBellDQUVHRTlCSW9BZ0FoQVNBQVFmVzFDVFlDQUNBQklBQVFGRUhIQXpZQ0FFR0U5QklvQWdBaEFTQUFRWVMyQ1RZQ0FDQUJJQUFRRkVISUF6WUNBRUdFOUJJb0FnQWhBU0FBUVppMkNUWUNBQ0FCSUFBUUZFSEpBellDQUVHRTlCSW9BZ0FoQVNBQVFhdTJDVFlDQUNBQklBQVFGRUhLQXpZQ0FFR0U5QklvQWdBaEFTQUFRYjYyQ1RZQ0FDQUJJQUFRRkVITkF6WUNBRUdFOUJJb0FnQWhBU0FBUWRXMkNUWUNBQ0FCSUFBUUZFSE9BellDQUVHRTlCSW9BZ0FoQVNBQVFlcTJDVFlDQUNBQklBQVFGRUhMQXpZQ0FFR0U5QklvQWdBaEFTQUFRWUszQ1RZQ0FDQUJJQUFRRkVITUF6WUNBRUdFOUJJb0FnQWhBU0FBUVpxM0NUWUNBQ0FCSUFBUUZFSFBBellDQUVHRTlCSW9BZ0FoQVNBQVFiUzNDVFlDQUNBQklBQVFGRUh4QXpZQ0FFR0U5QklvQWdBaEFTQUFRYiszQ1RZQ0FDQUJJQUFRRkVIeUF6WUNBRUdFOUJJb0FnQWhBU0FBUWNxM0NUWUNBQ0FCSUFBUUZFSHpBellDQUVHRTlCSW9BZ0FoQVNBQVFkVzNDVFlDQUNBQklBQVFGRUgwQXpZQ0FFR0U5QklvQWdBaEFTQUFRZVMzQ1RZQ0FDQUJJQUFRRkVIMUF6WUNBRUdFOUJJb0FnQWhBU0FBUWZHM0NUWUNBQ0FCSUFBUUZFSDJBellDQUVHRTlCSW9BZ0FoQVNBQVFZRzRDVFlDQUNBQklBQVFGRUgzQXpZQ0FFR0U5QklvQWdBaEFTQUFRWkc0Q1RZQ0FDQUJJQUFRRkVINEF6WUNBRUdFOUJJb0FnQWhBU0FBUWFPNENUWUNBQ0FCSUFBUUZFSDVBellDQUVHRTlCSW9BZ0FoQVNBQVFiSzRDVFlDQUNBQklBQVFGRUg2QXpZQ0FFR0U5QklvQWdBaEFTQUFRYis0Q1RZQ0FDQUJJQUFRRkVIN0F6WUNBRUdFOUJJb0FnQWhBU0FBUWRHNENUWUNBQ0FCSUFBUUZFR1JCRFlDQUVHRTlCSW9BZ0FoQVNBQVFkNjRDVFlDQUNBQklBQVFGRUdTQkRZQ0FFR0U5QklvQWdBaEFTQUFRZXU0Q1RZQ0FDQUJJQUFRRkVHVEJEWUNBRUdFOUJJb0FnQWhBU0FBUWZpNENUWUNBQ0FCSUFBUUZFR1VCRFlDQUVHRTlCSW9BZ0FoQVNBQVFZbTVDVFlDQUNBQklBQVFGRUdWQkRZQ0FFR0U5QklvQWdBaEFTQUFRWmk1Q1RZQ0FDQUJJQUFRRkVHV0JEWUNBRUdFOUJJb0FnQWhBU0FBUWFxNUNUWUNBQ0FCSUFBUUZFR1hCRFlDQUVHRTlCSW9BZ0FoQVNBQVFieTVDVFlDQUNBQklBQVFGRUdZQkRZQ0FFR0U5QklvQWdBaEFTQUFRZEM1Q1RZQ0FDQUJJQUFRRkVHWkJEWUNBRUdFOUJJb0FnQWhBU0FBUWVHNUNUWUNBQ0FCSUFBUUZFR2FCRFlDQUVHRTlCSW9BZ0FoQVNBQVFmQzVDVFlDQUNBQklBQVFGRUdiQkRZQ0FFR0U5QklvQWdBaEFTQUFRWVM2Q1RZQ0FDQUJJQUFRRkVHaUJEWUNBRUdFOUJJb0FnQWhBU0FBUVpTNkNUWUNBQ0FCSUFBUUZFR2pCRFlDQUVHRTlCSW9BZ0FoQVNBQVFhYTZDVFlDQUNBQklBQVFGRUdVQlRZQ0FFR0U5QklvQWdBaEFTQUFRYnE2Q1RZQ0FDQUJJQUFRRkVHVkJUWUNBRUdFOUJJb0FnQWhBU0FBUWNhNkNUWUNBQ0FCSUFBUUZFR1pCVFlDQUVHRTlCSW9BZ0FoQVNBQVFjNjZDVFlDQUNBQklBQVFGRUdCQlRZQ0FFR0U5QklvQWdBaEFTQUFRZHU2Q1RZQ0FDQUJJQUFRRkVHQ0JUWUNBRUdFOUJJb0FnQWhBU0FBUWVxNkNUWUNBQ0FCSUFBUUZFR0RCVFlDQUVHRTlCSW9BZ0FoQVNBQVFmbTZDVFlDQUNBQklBQVFGRUdFQlRZQ0FFR0U5QklvQWdBaEFTQUFRWWk3Q1RZQ0FDQUJJQUFRRkVHRkJUWUNBRUdFOUJJb0FnQWhBU0FBUVptN0NUWUNBQ0FCSUFBUUZFR2ZBellDQUVHRTlCSW9BZ0FoQVNBQVFiRzdDVFlDQUNBQklBQVFGRUdXQlRZQ0FFR0U5QklvQWdBaEFTQUFRY0M3Q1RZQ0FDQUJJQUFRRkVHWEJUWUNBRUdFOUJJb0FnQWhBU0FBUWNxN0NUWUNBQ0FCSUFBUUZFR1lCVFlDQUVHRTlCSW9BZ0FoQVNBQVFkRzdDVFlDQUNBQklBQVFGRUdnQXpZQ0FFR0U5QklvQWdBaEFTQUFRZHk3Q1RZQ0FDQUJJQUFRRkVHaEF6WUNBRUdFOUJJb0FnQWhBU0FBUWVlN0NUWUNBQ0FCSUFBUUZFR2lBellDQUVFVUVDWWlBUkNXQVNFQ1FZajBFaUFCTmdJQUlBQkI4cnNKTmdJTUlBQWdBaUFBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCK2JzSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQmc3d0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJpcndKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCanJ3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQmxMd0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJtcndKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCbjd3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQnA3d0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJzTHdKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCdGJ3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQnVyd0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJ3YndKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCeXJ3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQjBid0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkIyTHdKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCMzd3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQjZMd0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkI4cndKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCOTd3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQi9id0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJncjBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCaUwwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQmtiMEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJsNzBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCbnIwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQnBMMEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJxcjBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCc0wwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQnRyMEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJ2TDBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCd3IwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQjBMMEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkIxNzBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCM3IwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQjQ3MEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkI3YjBKTmdJTUlBQWdBU0FBUVF4cUVJQUJDeUFBUVJCcUpBQUwxeVFCQTM4akFFRVFheUlESkFBZ0EwR0k5QklvQWdBZ0FFRWthaUlDRUowUU5nSUFJQU5CaVBRU0tBSUFFSndRTmdJSUFrQWdBeUFEUVFocUVCNEVRQ0FBRU5rQkRBRUxJQU5CaFBRU0tBSUFJQUlRbXhBMkFnZ2dBMEdFOUJJb0FnQVFtaEEyQWdBQ1FDQURRUWhxSUFNUXVBTU5BQ0FBSUFOQkNHb1FSQ2dDQkNJQk5nSW9Ba0FDUUFKQUFrQWdBVUgrZldvaUFrR1hBMHNOQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FrRUJhdzZYQXdNREt3TURBd01EQXdNckt5c0RBd01EQXdNWkdSa1pHUmtaR1JrRExBTXRLeXNyS3lzckt5c3JLeXN1TGk0dUxpNHVMaTR1TGk0dUxnNE9KeVVnSmlFaEpDUWpJeUlpSVNFaElTRWhKQ1FrSkNRa0l5TWpJeU1qSWlJaUlpSWlJQ0FnR2hvYUp5Y25LQ2dvSlNVbEpTVWxKaVltSmlZbUdob2FHaG9hR2hvYUtDZ29LQ2dvS0Nnb0pTVWxKU1VsSlNVbEppWW1KaVltSmlZbUVBOUJRa0lwS1NrcE5UY3ZMelUyTmpBd01USXlNek16TkRRME9Ea3ZMeTg4UER3OFBEdzhQRHc4UER3OFBEdzhQRHdiR3hzZEhSMGRIUjBiR3hzZEhSMGNIQndiR3hzZEhSMGVIaDRmSHg4Zkh4ODhQRHc4UER3OFBEdzhQQ29xS2pvNk9qbzZPam82T2pvNk9qbzZPam82T2p3OFBEdzhQRHc4UER3OE96czdPenM3UER4RVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVRSUdCZ1lHQWtLQzBSRVJBUkVSQWRKU1VrQkEwbEpTVWxKU1VsSlNRSkpBa2tXQUFZRkYwUkVSRVJFUkVSRUZVTVBEdzhQRHhNVURSRVNFUkVSRVJFUkVSRU1QVDVBUUVBL1NRc2dBRUVCT2dBTElBQW9BZ1FRTXlFQ0lBQW9BZ1FoQVNBQ0JFQWdBU2dDRUVHMkFrZ05TQXNnQVJBekRVWWdBQ2dDQkNnQ0VFR3RBMHdOUnd4R0N5QUFRUUU2QUFsQjR3UWhBUXhIQ3lBQUtBSUVFRE1oQWlBQUtBSUVJUUVDUUNBQ0JFQWdBU2dDRUVHc0FrZ05BUXNnQVJBekRVVWdBQ2dDQkNnQ0VFR0JBVW9OUlFzZ0FCRFpBUXhFQ3lBQVFRRTZBQWdNUlFzZ0FDZ0NIQ2dDQUVHTG53a2dBQ2dDSkJCNlJUb0FFQ0FBS0FJb0lRRU1SQXNnQUNnQ0JCQXpJUUlnQUNnQ0JDRUJJQUlFUUNBQktBSVFRYXdDU0ExREN5QUJFRE1OUVNBQUtBSUVLQUlRUVlFQlRBMUNERUVMSUFBb0FnUVFNeUVDSUFBb0FnUWhBUUpBSUFKRkRRQWdBU2dDRUVHckFrb05BQ0FBRU5rQkRFRUxJQUVRTXcxQUlBQW9BZ1FvQWhCQmdRRk1EVUVNUUF0QjN3UWhBU0FBS0FJRUtBSVFRZmNBVEExQURFRUxJQUFvQWdRUU13MCtJQUFvQWdRb0FoQkI5d0JNRFQ4TVBnc2dBQ2dDQkJBeklRSWdBQ2dDQkNFQkFrQWdBZ1JBSUFFb0FoQkJyQUpJRFFFTElBRVFNdzAvSUFBb0FnUW9BaEJCeVFKS0RUOExJQUFRMlFFTU93c2dBQ2dDQkJBeklRSWdBQ2dDQkNFQklBQUNmeUFDQkVCQkFTQUJLQUlRUWFzQ1NnMEJHZ3RCQUNBQkVETU5BQm9nQUNnQ0JDZ0NFRUdqQTBvTEVJNEtJUUVNUGdzZ0FDQUFLQUlFRURNRWYwRUJCU0FBS0FJRUtBSVFRWUVCU2dzUWpnb2hBUXc5Q3lBQUtBSUVJZ0ZCdUw0SklBRW9BZ0FvQWlBUkF3QU5PaUFBUVlJQkVOVUNJUUVNUEFzZ0FDZ0NCQ0lCUWVHK0NTQUJLQUlBS0FJZ0VRTUFSUTA2RERrTElBQW9BZ1FRTTBVTk9DQUFLQUlFS0FJUVFhd0NTQTA0SUFBUTJRRU1PQXNnQUNnQ0JDZ0NUQkFrRFRjZ0FDZ0NCQ0lCUWYyK0NTQUJLQUlBS0FJZ0VRTUFSUTA0RERjTElBQW9BZ1FRTXlFQ0lBQW9BZ1FoQVNBQ0JFQWdBU2dDRUVHMUFrb05Od3NnQVVHUHZ3a2dBU2dDQUNnQ0lCRURBQTAySUFCQnBBTVExUUloQVF3NEN5QUFLQUlFRURNaEFpQUFLQUlFSVFFZ0FnUkFJQUVvQWhCQnRnSk9EVFlMSUFCQmdnRkJwQU1nQVVHdHZ3a2dBU2dDQUNnQ0lCRURBQnNRMVFJaEFRdzNDd0pBSUFBb0FnUVFNMFVFUUNBQUtBSUVJUUVNQVFzZ0FDZ0NCQ0lCS0FJUVFiWUNUZzAxQ3lBQktBSk1FQ1FOTkNBQUtBSUVFRE5GQkVBZ0FDZ0NCQ0lCS0FJUVFhTURTZzAxSUFGQnJiOEpJQUVvQWdBb0FpQVJBd0FOTlFzZ0FCRFpBUXcwQ3lBQUtBSUVLQUpNRUNRTk15QUFLQUlFRURNRVFDQUFLQUlFSWdFb0FoQkJ2d0pLRFRRZ0FVRUNRY3kvQ1NBQktBSUFLQUlrRVFjQURUUUxJQUFvQWdRUU0wVUVRQ0FBS0FJRUlnRkIxTDhKSUFFb0FnQW9BaUFSQXdBTk5Bc2dBRUdRQXhEVkFpRUJERFVMSUFBb0FnUVFNeUVDSUFBb0FnUWhBU0FDQkVBZ0FTZ0NFRUcvQWtvTk13c2dBVUVCUWZDL0NTQUJLQUlBS0FJa0VRY0FEVElnQUVHUUF4RFZBaUVCRERRTElBQkJrQU1RMVFJaEFRd3pDeUFBS0FJRUVETWhBaUFBS0FJRUlRRWdBZ1JBSUFFb0FoQkJyQUpJRFRJTElBRVFNdzB3SUFBb0FnUW9BaEJCaXdGTURURU1NQXNnQTBHNHdBa3BBd0EzQXdBZ0FDZ0NCQkF6SVFJZ0FDZ0NCQ0VCSUFJRVFDQUJLQUlRUWF3Q1NBMHhDeUFCRURNTkx5QUFLQUlFSWdFb0FoQkJpd0ZLRFM4Z0FVRUNJQU1nQVNnQ0FDZ0NKQkVIQUVVTk1Bd3ZDeUFBRUpnUUlRRU1NQXNnQUJDWEVDRUJEQzhMSUFBUWxoQWhBUXd1Q3lBQVFRRTZBQWdnQUVFQUVOSUhJUUVNTFFzZ0FFRUJPZ0FJSUFBb0FnUVFNeUVDSUFBb0FnUWhBU0FDQkVBZ0FTZ0NFRUcvQWtvTkt3c2dBVUVDUWNEQUNTQUJLQUlBS0FJa0VRY0FEU29nQUVFQUVOSUhJUUVNTEFzZ0FFRUJPZ0FJSUFCQkFSRFNCeUVCRENzTElBQkJBVG9BQ0NBQUtBSUVFRE1oQWlBQUtBSUVJUUVnQWdSQUlBRW9BaEJCdndKS0RTa0xJQUZCQWtISXdBa2dBU2dDQUNnQ0pCRUhBQTBvRENjTElBQkJBVG9BQ0F3bUN5QUFRUUU2QUFnQ1FDQUFLQUlFRURNTkFDQUFLQUlFSWdFb0FoQkJsZ0ZJRFFBZ0FTZ0NUQkFrRFNjZ0FDZ0NCQ0lCS0FJUVFZOERTZzBuSUFGQjBNQUpJQUVvQWdBb0FpQVJBd0FOSndzZ0FCRFpBUXdtQ3lBQVFRRTZBQWdnQUNnQ0JDZ0NUQkFrRFNVZ0FDZ0NCQ0lCUWVmQUNTQUJLQUlBS0FJZ0VRTUFEU1VnQUNnQ0JDSUJRZi9BQ1NBQktBSUFLQUlnRVFNQURTVWdBQ2dDQkNJQlFhZkJDU0FCS0FJQUtBSWdFUU1BUlEwbURDVUxJQUJCQVRvQUNDQUFLQUlFS0FKTUVDUU5KQ0FBS0FJRUlnRkIvOEFKSUFFb0FnQW9BaUFSQXdBTkpDQUFLQUlFSWdGQjFjRUpJQUVvQWdBb0FpQVJBd0FOSkNBQUtBSUVJZ0ZCOE1FSklBRW9BZ0FvQWlBUkF3QkZEU1VNSkFzZ0FFRUJPZ0FJSUFBb0FnUW9Ba3dRSkEwaklBQW9BZ1FpQVVHZHdna2dBU2dDQUNnQ0lCRURBQTBqSUFBb0FnUWlBVUcxd2drZ0FTZ0NBQ2dDSUJFREFBMGpJQUFvQWdRaUFVSC93QWtnQVNnQ0FDZ0NJQkVEQUEwaklBQW9BZ1FpQVVIUndna2dBU2dDQUNnQ0lCRURBRVVOSkF3akN5QUFRUUU2QUFnZ0FDZ0NCQ2dDVEJBa0RTSWdBQ2dDQkNJQlFmL0FDU0FCS0FJQUtBSWdFUU1BRFNJZ0FDZ0NCQ0lCUWYvQ0NTQUJLQUlBS0FJZ0VRTUFSUTBqRENJTElBQkJBVG9BQ0NBQUtBSUVLQUpNRUNRTklTQUFLQUlFSWdGQi84QUpJQUVvQWdBb0FpQVJBd0FOSVNBQUtBSUVJZ0ZCcmNNSklBRW9BZ0FvQWlBUkF3QkZEU0lNSVFzZ0FFRUJPZ0FJSUFBb0FnUW9Ba3dRSkEwZ0lBQW9BZ1FpQVVIL3dBa2dBU2dDQUNnQ0lCRURBQTBnSUFBb0FnUWlBVUhkd3drZ0FTZ0NBQ2dDSUJFREFFVU5JUXdnQ3lBQVFRRTZBQWdnQUNnQ0JDZ0NUQkFrRFI4Z0FDZ0NCQ0lCUVkzRUNTQUJLQUlBS0FJZ0VRTUFEUjhnQUNnQ0JDSUJRYlhDQ1NBQktBSUFLQUlnRVFNQURSOGdBQ2dDQkNJQlFmL0FDU0FCS0FJQUtBSWdFUU1BRFI4Z0FDZ0NCQ0lCUWFyRUNTQUJLQUlBS0FJZ0VRTUFSUTBnREI4TElBQkJBVG9BQ0NBQUtBSUVLQUpNRUNRTkhpQUFLQUlFSWdGQmpjUUpJQUVvQWdBb0FpQVJBd0FOSGlBQUtBSUVJZ0ZCLzhBSklBRW9BZ0FvQWlBUkF3QU5IaUFBS0FJRUlnRkJxc1FKSUFFb0FnQW9BaUFSQXdCRkRSOE1IZ3NnQUVFQk9nQUlJQUFvQWdRUU15RUNJQUFvQWdRaEFTQUNCRUFnQVNnQ0VFRy9Ba29OSGdzZ0FVRUNRY2pBQ1NBQktBSUFLQUlrRVFjQURSMGdBQ2dDQkJBelJRUkFJQUFvQWdRaUFTZ0NFRUdQQTBvTkhpQUJRZHJFQ1NBQktBSUFLQUlnRVFNQURSNExJQUFRMlFFTUhRc2dBQ2dDQkNnQ0lFRUFUQTBkREI0TElBQkJBVG9BQ0NBQUVKVVFJUUVNSFFzZ0FFRUJPZ0FJSUFBb0FnUVFNMFVOR2lBQUtBSUVJZ0VvQWhCQnF3SktEUm9nQVVINHhBa2dBU2dDQUNnQ0lCRURBQTBhSUFBUTJRRU1HZ3NnQUVFQk9nQUlJQUFvQWdRUU0wVU5HU0FBS0FJRUlnRW9BaEJCcXdKS0RSa2dBVUdLeFFrZ0FTZ0NBQ2dDSUJFREFBMFpJQUFRMlFFTUdRc2dBQ2dDQkNnQ0lFRUFUQTBaREJvTElBQkJBVG9BQ0NBQVFZSUJFTlVDSVFFTUdRc2dBRUVCT2dBSUlBQkJqQUVRMVFJaEFRd1lDeUFBUVFFNkFBZ2dBQ2dDQkJBeklRSWdBQ2dDQkNFQklBSUVRQ0FCS0FJUVFiOENTZzBXQ3lBQlFRSkJ3TUFKSUFFb0FnQW9BaVFSQndBTkZTQUFRWUlCRU5VQ0lRRU1Gd3NnQUVFQk9nQUlJQUFvQWdRUU15RUNJQUFvQWdRaEFTQUNCRUFnQVNnQ0VFRy9Ba29ORlFzZ0FVRUNRY0RBQ1NBQktBSUFLQUlrRVFjQURSUWdBRUdNQVJEVkFpRUJEQllMSUFCQkFUb0FDQ0FBS0FJRUVETWhBaUFBS0FJRUlRRUNRQ0FDUlEwQUlBRW9BaEJCdGdKSURRQWdBQ2dDS0NFQkRCWUxBa0FnQVJBekRRQWdBQ2dDQkNJQktBSVFJZ0pCakFGS0RSUWdBa0dNQVVjTkFDQUJRUUZCcE1VSklBRW9BZ0FvQWlRUkJ3QU5GQXNnQUVHV0FSRFZBaUVCREJVTElBQkJBVG9BQ0NBQUtBSUVFRE1oQWlBQUtBSUVJUUVnQWdSQUlBRW9BaEJCdndKS0RSTUxJQUZCQVVHb3hRa2dBU2dDQUNnQ0pCRUhBQTBTQWtBZ0FDZ0NCQkF6RFFBZ0FDZ0NCQ0lCS0FJUUlnSkJqQUZLRFJNZ0FrR01BVWNOQUNBQlFRRkJwTVVKSUFFb0FnQW9BaVFSQndBTkV3c2dBRUdXQVJEVkFpRUJEQlFMSUFCQkFUb0FDQ0FBS0FJRUVETkZEUkVnQUJEWkFRd1JDeUFBUVFFNkFBZ2dBQ2dDQkJBekJFQWdBQkRaQVF3UkN5QUFLQUlFSWdFb0FoQkJpd0ZLRFJBZ0FTZ0NUQkFrRFJBZ0FDZ0NCQ0lCUWF6RkNTQUJLQUlBS0FJZ0VRTUFEUkFnQUNnQ0JCQ1FBd1JBSUFBb0FnUWlBU0FBUVF4cVFRRkJ5TVVKUWN6RkNTQUJLQUlBS0FJVUVRZ0FEQkVMSUFBUTJRRU1FQXNnQUVFQk9nQUlJQUFvQWdRUU15RUNJQUFvQWdRaEFRSkFJQUpGRFFBZ0FTZ0NFRUdzQWtjTkFDQUFFTmtCREJBTElBRVFNeUVDSUFBb0FnUWhBU0FDQkVBZ0FTZ0NFRUdzQWtnTkVRc2dBUkF6RFE4Z0FDZ0NCQ2dDRUVHQkFVd05FQXdQQ3lBQVFRRTZBQWdnQUNnQ0JDZ0NUQkFrRFE0Z0FDZ0NCQ0lCUWU3RkNTQUJLQUlBS0FJZ0VRTUFEUTRnQUNnQ0JDSUJRWWpHQ1NBQktBSUFLQUlnRVFNQURRNGdBQkRZQVNFQkRCQUxJQUJCQVRvQUNDQUFLQUlFS0FKTUVDUU5EU0FBS0FJRUlnRkJxTVlKSUFFb0FnQW9BaUFSQXdBTkRTQUFFTmdCSVFFTUR3c2dBQ2dDQkNnQ0lFRUFTZzBPSUFBUTJBRWhBUXdPQ3lBQUtBSUVLQUlnUVFCS0RRMGdBQkRZQVNFQkRBMExJQUJCQVRvQUNDQUFLQUlFS0FKTUVDUU5DaUFBS0FJRUlnRkJ1c1lKSUFFb0FnQW9BaUFSQXdBTkNpQUFFTmdCSVFFTURBc2dBQ2dDQkNJQlFkM0dDU0FCS0FJQUtBSWdFUU1BQkVBZ0FDZ0NLQ0VCREF3TElBQVEyQUVoQVF3TEN5QUFLQUlFRURNaEFpQUFLQUlFSVFFZ0FrVUVRQ0FCS0FJUVFjRURTZzBKQ3lBQlFZWEhDU0FCS0FJQUtBSWdFUU1BRFFnZ0FCRFlBU0VCREFvTElBQW9BZ1FRTXdSQUlBQW9BZ1FpQVNnQ0VFRy9Ba29OQ0NBQlFRSkJxTWNKSUFFb0FnQW9BaVFSQndBTkNBc2dBQ2dDQkJBeklRSWdBQ2dDQkNFQklBSkZCRUFnQVNnQ0VFR1FBMDROQ0FzZ0FSQXpSUTBJSUFBb0FnUW9BaEJCdGdKSERRZ2dBQkRaQVNBQUtBSW9JUUVNQ1FzZ0FDZ0NCQkF6SVFJZ0FDZ0NCQ0VCSUFKRkJFQWdBU2dDRUVIQkEwb05Cd3NnQVJBeklRSWdBQ2dDQkNFQklBSUVRQ0FCS0FJUVFiOENTZzBIQ3lBQlFiREhDU0FCS0FJQUtBSWdFUU1BRFFZZ0FCRFlBU0VCREFnTElBQkJBVG9BQ0NBQUtBSUVLQUpNRUNRTkJTQUFLQUlFSWdGQndzY0pJQUVvQWdBb0FpQVJBd0FOQlNBQUVOZ0JJUUVNQndzZ0FFRUJPZ0FJSUFBb0FnUW9Ba3dRSkEwRUlBQW9BZ1FpQVVIYnh3a2dBU2dDQUNnQ0lCRURBQTBFSUFBUTJBRWhBUXdHQ3lBQUtBSUVJZ0ZCL01jSklBRW9BZ0FvQWlBUkF3QUVRQ0FBS0FJb0lRRU1CZ3NnQUJEWUFTRUJEQVVMSUFBb0FnUW9BZ3hCQTBHZnlBa2dBRUVNYWhEV0JBdEJBQ0VCREFNTElBQVFsQkFoQVF3Q0N5QUFLQUlvSVFFTUFRc2dBQkRZQVNFQkN5QURRUkJxSkFBZ0FRdTNDUUlJZndKK0l3QkJzQWhySWdZa0FDQUFJQUkyQWh3Q1FBSkFBa0FDUUFKQUFrQWdBU0FHUVFocUVKNEZJZ1FRZ1EwaUNFRi9Sd1JBSUFCQkRHb2hCeUFFUVNCcUlRa0RRQ0FBSUFrMkFpUWdCeUFHS1FNUUlnczNBZ2dnQnlBR0tRTUlJZ3czQWdBZ0FDZ0NIQ2dDQUNJRklBdzNBZ0FnQlNBTE53SUlBa0FDUUNBSVFWOXFJZ3BCZ1FGTERRQkJ5QVFoQTBIQkJDRUZBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFwQkFXc09nUUV6TXpNSERETURCRHc3QVRrRkJqTXpNek16TXpNek16TTNBQWdDQ1Ewek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNT0VnOExNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNeEFLRVRvek14TVVGUllYR0JrYUd4d2RIaDhnSVNJa0l5VW1KeWd6S1NvdUx5d3RLekF4TXpJNEN5QUFRUUE2QUFzZ0FFRUFPZ0FJUWNNRUlRTU1Pd3NnQUVFQU9nQUlRY0FFSVFNTU9nc2dBRUVBT2dBSVFjSUVJUU1NT1FzZ0FFRUFPZ0FJUWJrRUlRTU1PQXNnQUVFQU9nQUlRYm9FSVFNTU53c2dBRUVCT2dBS1FiOEVJUU1NTmd0QnlRUWhBd3cxQzBIS0JDRURERFFMUWNzRUlRTU1Nd3RCekFRaEF3d3lDMEhOQkNFRERERUxRYzRFSVFNTU1BdEJ6d1FoQXd3dkMwSFFCQ0VEREM0TFFic0VJUU1NTFF0QnZBUWhBd3dzQ3lBQVFRQTZBQXNnQUVFQU9nQUpRYjBFSVFNTUt3dEJ2Z1FoQXd3cUN5QUFLQUlFSWdVZ0IwSHp2UWxCazc0SlFaVytDVUVBSUFVb0FnQW9BcUFCRVFJQURDRUxRYkVFSVFNTUtBdEJ1QVFoQXd3bkMwR3ZCQ0VERENZTFFiQUVJUU1NSlF0QnNnUWhBd3drQzBHbEJDRUREQ01MUWFRRUlRTU1JZ3RCdEFRaEF3d2hDMEd6QkNFRERDQUxRYlVFSVFNTUh3dEJ0d1FoQXd3ZUMwRzJCQ0VEREIwTFFhd0VJUU1NSEF0QnJRUWhBd3diQzBHdUJDRUREQm9MUWFvRUlRTU1HUXRCcVFRaEF3d1lDMEdyQkNFRERCY0xRYWdFSVFNTUZndEJwd1FoQXd3VkMwR21CQ0VEREJRTElBQW9BZ1FpQlNBSFFaYStDVUdrdmdsQmxiNEpRUUFnQlNnQ0FDZ0NvQUVSQWdBTUN3c2dBQ2dDSENnQ0FDQUVLQUlZTmdJUVFkb0VJUU1NRWdzZ0FDZ0NIQ2dDQUNBRUtBSVlOZ0lRUWRzRUlRTU1FUXNnQUNnQ0hDZ0NBQ0FFS1FNWU53TVFRZGtFSVFNTUVBc2dBQ2dDSENnQ0FDQUVLQUlZTmdJUVFmZ0VJUU1NRHdzZ0FDZ0NIQ2dDQUNBRUtBSVlOZ0lRUWZrRUlRTU1EZ3NnQUNnQ0hDZ0NBQ0FFS1FNWU53TVFRZjBFSVFNTURRc2dBQ2dDSENnQ0FDQUVLUU1ZTndNUVFmNEVJUU1NREFzZ0FDZ0NIQ2dDQUNBRUtRTVlOd01RUWZjRUlRTU1Dd3NnQUNnQ0hDZ0NBQ0FFS1FNWU53TVFRZm9FSVFNTUNnc2dBQkNnRUNFRElBQkJBRG9BQ2d3SkN5QUdRUUE2QUFjZ0JpQUlPZ0FHSUFBb0FnUWlCU0FIUWFlK0NTQUdRUVpxUVpXK0NVRUFJQVVvQWdBb0FxQUJFUUlBQ3lBQUlBSTJBaHdnQVNBRUVKNEZFSUVOSWdoQmYwY05BQXNMUVFBaEJRc2dCU0VEREFRTFFjUUVJUU1NQXd0QnhRUWhBd3dDQzBIR0JDRUREQUVMUWNjRUlRTUxJQVpCc0FocUpBQWdBd3MwQVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUJBeElRQWdBU2dDdUFFZ0FTZ0N2QUVnQUJDaEVDRUFJQUpCRUdva0FDQUFDOHNGQVFkL0l3QkJFR3NpQmlRQUlBTkJBRG9BQUNBQlFRQTJBZ0FnQWtFQk5nSUFJQVpCQURvQUR3SkFBa0FEUUFKQUlBY2lDVVVOQUNBRFFRRTZBQUFDUUFKQUlBQVEyZ0ZCQ2tjRVFDQUFFTm9CUVExSERRRUxBMEFnQUJEYUFVRUtSd1JBSUFBUTJnRkJEVWNOQXdzZ0FCQ09BUm9NQUFBTEFBc0RRQ0FBRUk0QklnZEJkbW9pQkVFRFN3UkFJQWRCZjBjTkFRd0NDeUFFUVFGckRnSUFBQUVBQ3dBTEEwQUNRQ0FBRU5vQlFRcEhCRUFnQUJEYUFVRU5SdzBCQ3lBQUVJNEJHZ3dCQ3dzZ0FCRGFBVUYvUncwQVFRRWhBQXdEQ3lBQUlBWkJEMm9RcEJBZ0JpMEFEeUVLUVFFaEJ5QUFFSTRCUVNOSERRQURRQ0FBRUk0QklnUkJDVVlnQkVFZ1JuSU5BQXNnQkVIMkFFY05BQ0FBRUk0QlFlVUFSdzBBSUFBUWpnRkI4Z0JIRFFBZ0FCQ09BVUh6QUVjTkFDQUFFSTRCUWVrQVJ3MEFJQUFRamdGQjd3QkhEUUFnQUJDT0FVSHVBRWNOQUFOQUlBQVFqZ0VpQkVFSlJpQUVRU0JHY2cwQUN5QUJLQUlBSVFVZ0JFRlFhaUlJUVFsTkJFQURRQ0FCSUFWQkNtd2dDR28yQWdBZ0FCQ09BU0VFSUFFb0FnQWhCU0FFUVZCcUlnaEJDa2tOQUFzTElBVkZEUUFEUUNBRVFTQkhRUUFnQkVFSlJ4dEZCRUFnQUJDT0FTRUVEQUVMQzBFQUlRVUNRQUpBQWtBRFFDQUVRWDlHSUFSQmQyb2lDRUVYVFVFQVFRRWdDSFJCazRDQUJIRWJjZzBCSUFaQkFtb2dCV29nQkRvQUFDQUFFSTRCSVFRZ0JVRUJhaUlGUVExSERRQUxJQVJCZDJvaUJVRVhTMEVCSUFWMFFaT0FnQVJ4UlhJTkFRd0NDeUFKSUFwQkFFZHlJUUFnQlVGK2FpSUJRUUpMQkVBZ0JVRU5SdzBGREFRTEFrQUNRQ0FCUVFGckRnSUdBUUFMSUFZdkFBSkI1ZVlCUncwRklBSkJDRFlDQUF3RkN5QUdLQUFDUWVQZXlhc0dSdzBFSUFKQkFqWUNBQXdFQ3lBRVFYOUhEUUVMQ3lBSklBcEJBRWR5SVFBTElBWkJBbXBCaUowSlFRMFFoQWdOQUNBQ1FRUTJBZ0FMSUFaQkVHb2tBQ0FBUVFGeEN5Y0FBMEFDUUNBQUlBRVFweEFnQUJEYUFVRXZSdzBBSUFGQkFUb0FBQ0FBRUtVUURRRUxDd3Y5QVFFRGZ3SkFBa0FnQUJEYUFVRXZSdzBBSUFBUWpnRWFBa0FnQUJEYUFTSUJRU3BIQkVBZ0FVRXZSdzBESUFBUWpnRWFBMEFDUUNBQUVJNEJJZ0ZCM0FCSEJFQWdBVUYyYWlJQ1FRTk5EUUVnQVVGL1J3MENEQVFMSUFBUWpnRkJEVWNOQVNBQUVOb0JRUXBIRFFFZ0FCQ09BUm9NQVFzZ0FrRUJhdzRDQUFBQ0FBc0FDeUFBRUk0QkdnTkFJQUFRamdFaEFRTkFRUUVoQWlBQlFTcEhCRUFnQVVGL1J3MENEQVFMSUFBUWpnRWlBVUV2UncwQUN3c01BUXRCQVNFQ0EwQWdBVUYyYWlJRFFRTkxCRUFnQVVGL1JnMENEQU1MQWtBZ0EwRUJhdzRDQXdNQUN5QUFFSTRCSVFFTUFBQUxBQXNnQWc4TElBQVFuUVlnQWd2YUFRRUdmeUFBSUFBb0FoUkJBV29pQVRZQ0ZDQUJJQUFvQWd3aUJDQUFLQUlRSWdOQkFuUnFLQUlBVHdSQUlBQWdBMEVCYWlJQ05nSVFBa0FnQWlBQUtBSUVJZ1ZPRFFBZ0FDZ0NHQ0lCSUFOQkJIUnFLQUlFSVFNZ0FTQUNRUVIwYWlJQlFnRTNBZ2dnQVNBRFFRRnFOZ0lFSUFRZ0FrRUNkR29vQWdBTkFBTkFJQUpCQVdvaUFTQUZTQVJBSUFBb0FoZ2lCaUFDUVFSMGFpZ0NCQ0VESUFZZ0FVRUVkR29pQWtJQk53SUlJQUlnQTBFQmFqWUNCQ0FFSUFFaUFrRUNkR29vQWdCRkRRRUxDeUFBSUFFMkFoQUxJQUJCQURZQ0ZBc0xSZ0VDZndOQUFrQUNRQ0FBRU5vQklnSkJkMm9pQTBFRVN3UkFJQUpCSUVZTkFRd0NDd0pBSUFOQkFXc09CQUFDQWdBQkN5QUJRUUU2QUFBTElBQVFqZ0VhREFFTEN3czlBUUYvSUFFZ0FrY0VRQ0FES0FJQUlRUURRQ0FBSUFSQmVHb2dBa0Y0YWlJQ0VOZ0hJQU1nQXlnQ0FFRjRhaUlFTmdJQUlBRWdBa2NOQUFzTEMxRUJBWDhnQUJEZkF5QUFFRHNnQUNnQ0FDQUFLQUlFSUFGQkJHb2lBaENvRUNBQUlBSVFMaUFBUVFScUlBRkJDR29RTGlBQUVCc2dBUkFqRUM0Z0FTQUJLQUlFTmdJQUlBQWdBQkNhQVJEWkJBc1dBQ0FBSUFFcEFnQTNBZ1FnQUNBQktRSUlOd0lNQzNrQkFYOGpBRUVnYXlJREpBQWdBeUFCTmdJUUlBTWdBRFlDR0NBRElBSTJBZ2hCQVNFQ0FrQWdBMEVZYWlBRFFSQnFFQjVGRFFBRFFDQURLQUlZSUFNb0FnZ1FxQVpGQkVCQkFDRUNEQUlMSUFOQkdHb1FtUW9nQTBFSWFoQ1pDaUFEUVJocUlBTkJFR29RSGcwQUN3c2dBMEVnYWlRQUlBSUxPd0VCZnlNQVFSQnJJZ0lrQUNBQUVEc2FBMEFnQUNnQ0JCREpBaG9nQUNBQUtBSUVRUkJxTmdJRUlBRkJmMm9pQVEwQUN5QUNRUkJxSkFBTFN3RUNmeU1BUVJCcklnTWtBQ0FBRURzYUEwQWdBQ2dDQkNJRUlBSXBBd2czQXdnZ0JDQUNLUU1BTndNQUlBQWdBQ2dDQkVFUWFqWUNCQ0FCUVg5cUlnRU5BQXNnQTBFUWFpUUFDOVVCQVFWL0l3QkI0QUJySWdVa0FDQUJJQUVvQWdBb0FoUVJBQUFRU3lFSElBVkIyQUJxSUFJb0FnQVE5UUVoQUNBQ0tBSUFRUUJLQkVBRFFDQUhJQUlnQkJDZ0JoQVBJUVlnQUNBRUVBOGlDQ0FHS0FJSU5nSUlJQWdnQmlrREFEY0RBQ0FFUVFGcUlnUWdBaWdDQUVnTkFBc0xBa0FnQUNBQklBRW9BZ0FvQW5nUkFBQWdBMEVBRU5BQ0lnUkZCRUFnQVNFRURBRUxJQVFnQlNBQklBRW9BZ0FvQW9BQkVRQUFRUUlnQWlnQ0FFRUFRUUJCQUJCRklnQWdCQ2dDQUNnQ2RCRUJBQ0FBRURVYUN5QUZRZUFBYWlRQUlBUUxKUUFnQUNnQ0FBUkFJQUFnQUNnQ0FCRFdCeUFBRURzYUlBQW9BZ0FhSUFBUTFnSWFDd3NrQVFKL0l3QkJFR3NpQWlRQUlBQWdBUkNQQ2lFRElBSkJFR29rQUNBQklBQWdBeHNMSkFFQ2Z5TUFRUkJySWdJa0FDQUFJQUVRa0FvaEF5QUNRUkJxSkFBZ0FTQUFJQU1iQ3lRQkFuOGpBRUVRYXlJQ0pBQWdBQ0FCRUpFS0lRTWdBa0VRYWlRQUlBRWdBQ0FER3dza0FRSi9Jd0JCRUdzaUFpUUFJQUFnQVJDU0NpRURJQUpCRUdva0FDQUJJQUFnQXhzTEpBRUNmeU1BUVJCcklnSWtBQ0FBSUFFUWt3b2hBeUFDUVJCcUpBQWdBU0FBSUFNYkN5UUJBbjhqQUVFUWF5SUNKQUFnQUNBQkVKUUtJUU1nQWtFUWFpUUFJQUVnQUNBREd3c3BBUUovSXdCQkVHc2lBaVFBSUFKQkNHb2dBQ0FCRU5nRUlRTWdBa0VRYWlRQUlBRWdBQ0FER3dza0FRSi9Jd0JCRUdzaUFpUUFJQUFnQVJDVkNpRURJQUpCRUdva0FDQUJJQUFnQXhzTEpBRUNmeU1BUVJCcklnSWtBQ0FCSUFBUWp3b2hBeUFDUVJCcUpBQWdBU0FBSUFNYkN5UUJBbjhqQUVFUWF5SUNKQUFnQVNBQUVKQUtJUU1nQWtFUWFpUUFJQUVnQUNBREd3c2tBUUovSXdCQkVHc2lBaVFBSUFFZ0FCQ1JDaUVESUFKQkVHb2tBQ0FCSUFBZ0F4c0xKQUVDZnlNQVFSQnJJZ0lrQUNBQklBQVFrZ29oQXlBQ1FSQnFKQUFnQVNBQUlBTWJDeVFCQW44akFFRVFheUlDSkFBZ0FTQUFFSk1LSVFNZ0FrRVFhaVFBSUFFZ0FDQURHd3NrQVFKL0l3QkJFR3NpQWlRQUlBRWdBQkNVQ2lFRElBSkJFR29rQUNBQklBQWdBeHNMS1FFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFFZ0FCRFlCQ0VESUFKQkVHb2tBQ0FCSUFBZ0F4c0xKQUVDZnlNQVFSQnJJZ0lrQUNBQklBQVFsUW9oQXlBQ1FSQnFKQUFnQVNBQUlBTWJDM2dCQW44akFFRWdheUlESkFBZ0FCQTdJZ0lnQTBFSWFpQUFJQUFRbWdGQkFXb1FuZ1lnQUJDYUFTQUNFTlVISWdJb0FnZ2dBUkRZQnlBQ0lBSW9BZ2hCQ0dvMkFnZ2dBQ0FDRUtrUUlBSWdBaWdDQkJDV0NpQUNLQUlBQkVBZ0FpZ0NFQm9nQWlnQ0FCb2dBaERVQnhvTElBTkJJR29rQUF0TEFRRi9Jd0JCRUdzaUFpUUFBa0FnQUNnQ0JDQUFFQnNvQWdCSEJFQWdBQkE3SUFBb0FnUWdBUkRZQnlBQUlBQW9BZ1JCQ0dvMkFnUU1BUXNnQUNBQkVNQVFDeUFDUVJCcUpBQUx2QUVCQW44akFFRWdheUlCSkFBZ0FVRVlhaUFBSUFBb0FnQW9BbmdSQUFBUXhRRVE5UUVoQWdKQUFrQWdBQ0FBS0FJQUtBSzhBUkVBQUJBV1FRRkdCRUFnQUNBQlFSQnFJQUlRNFFNZ0FDZ0NhQ0FBSUFBb0FnQW9BbmdSQUFCQkFSQytEVVVOQVF3Q0N5QUFJQUZCQ0dvZ0FoRGhBeUFBS0FKb0lBQWdBQ2dDQUNnQ2VCRUFBRUVBRUw0TkRRRUxJQUlnQUNBQUtBSUFLQUo0RVFBQUlBQWdBQ2dDQUNnQ0FCRUFBRUVBRU5BQ0lRQUxJQUZCSUdva0FDQUFDNWtCQVFOL0l3QkJFR3NpQVNRQVFRRWhBd0pBSUFCRkRRQWdBU0FBSUFBb0FnQW9BcndCRVFBQUlnQVFRRFlDQ0NBQklBQVFNallDQUNBQlFRaHFJQUVRSGtVTkFBTkFJQUVvQWdnb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDRkJFQUFBUkFJQUZCQ0dvUXpnRWFJQUVnQUJBeU5nSUFJQUZCQ0dvZ0FSQWVEUUVNQWdzTFFRQWhBd3NnQVVFUWFpUUFJQU1MclNvQ0NuOEVmQ01BUWRBQWF5SUJKQUFDUUNBQVJRMEFBa0FnQUJEREVFVU5BQ0FBRVBJTEJFQWdBQkRDRUNFQ0RBSUxJQUFnQUNnQ0FDZ0N2QUVSQUFBaENBSi9Ba0FDUUFKQUFrQUNRQUpBSUFBb0FtZ2lBa0hVQVV3RVFDQUNRZDErYWlJRFFSdE5EUUVNQlFzZ0FrSHpmV29pQTBFWVN3MERRUUVnQTNRaUJrSDBBSEVOQWlBR1FRTnhSUTBCUVFFaENVRUFEQVlMUVFFZ0EzUkJ2NENBd0FCeFJRMEREQVFMSUFOQkdFY05BU0FJUVFBUUVTZ0NBQ0lDSUFJb0FnQW9BZ3dSQUFBaUFpQUNLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NNQkVBQUNBSVFRRVFFU2dDQUNJQ0lBSW9BZ0FvQWd3UkFBQWlBaUFDS0FJQUtBSjRFUUFBSWdJZ0FpZ0NBQ2dDTUJFQUFHd2hDVUVBREFRTElBaEJBQkFSS0FJQUlnSWdBaWdDQUNnQ0ZCRUFBQ0lDSUFJb0FnQW9BbmdSQUFBUXhRRWhDVUVBREFNTElBSkJxMzVxSWdKQkJVc05Bd0pBQWtBZ0FrRUVhdzRDQUFFREN5QUJJQWhCQUJBUktBSUFJZ0lnQWlnQ0FDZ0NEQkVBQUNJQ0lBSW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXdFUUFBTmdJNElBRWdDRUVCRUJFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0FqQVJBQUEyQWlBZ0FVRTRhaUFCUVNCcUVLWUJLQUlBSVFsQkFRd0RDeUFCSUFoQkFCQVJLQUlBSWdJZ0FpZ0NBQ2dDREJFQUFDSUNJQUlvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUl3RVFBQU5nSTRJQUVnQ0VFQ0VCRW9BZ0FpQWlBQ0tBSUFLQUlNRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BakFSQUFBMkFpQWdBVUU0YWlBQlFTQnFFS1lCS0FJQUlRbEJBUXdDQ3lBQ1FjVUJSdzBDQ3lBSVFRQVFFU2dDQUNJQ0lBSW9BZ0FvQWhRUkFBQWlBaUFDS0FJQUtBSjRFUUFBRU1VQklRbEJBUXNoQWlBQlFjZ0FhaUFKRVBVQklRWWdBVUU0YWhDVEFTRURJQWdRRmdSQUEwQWdBeUFJSUFVUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVN4REJFQ0FGUVFGcUlnVWdDQkFXU1EwQUN3c0NRQUpBQWtBQ1FBSkFJQUlFUUNBQlFRQTJBalFnQ1VFQlNBMEVBMEJCQUNFRUlBRWdDRUVBRUJFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0FqQVJBQUJCZjJvMkFpQWdBVUUwYWlBQlFTQnFFUDRCS0FJQUlRSkJBQ0VGSUFnUUZrRUNUd1JBSUFFZ0NFRUJFQkVvQWdBaUJTQUZLQUlBS0FJTUVRQUFJZ1VnQlNnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQWpBUkFBQkJmMm8yQWlBZ0FVRTBhaUFCUVNCcUVQNEJLQUlBSVFVTElBZ1FGa0VEVHdSQUlBRWdDRUVDRUJFb0FnQWlCQ0FFS0FJQUtBSU1FUUFBSWdRZ0JDZ0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0FqQVJBQUJCZjJvMkFpQWdBVUUwYWlBQlFTQnFFUDRCS0FJQUlRUUxBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUNnQ2FDSUhRY1FCVEFSQUlBZEIzWDVxSWdSQkJVc0VRQ0FIUWI0QlJ3ME9JQVlnQVNnQ05CQVBJQU5CQUJBc0lBSVFEeXNEQUNBRFFRRVFMQ0FGRUE4ckF3QVF6Uk1RTFF3TEN5QUVRUUZyRGdVR0FRSURCQVVMSUFkQnEzNXFJZ3BCQlVzRVFDQUhRY1VCUncwTklBWWdBU2dDTkJBUElBTkJBQkFzSUFJUUR5c0RBQ0FEUVFFUUxDQUZFQThyQXdBUXpCTVFMUXdLQ3dKQUFrQUNRQ0FLUVFGckRnVUJBZ2tLQ3dBTElBaEJBQkFSS0FJQUlnUWdCQ2dDQUNnQ0RCRUFBQ0lFSUFRb0FnQW9Bb0FCRVFBQVFYOXFJZ1JCQ2tzTkN3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUU5yRGdnREJBVUdBUUlIQ0FBTElBWWdBU2dDTkJBUElRUWdBU0FEUVFBUUxDQUNFQThyQXdBNUF5QWdBU0FEUVFFUUxDQUZFQThyQXdBNUF4QWdCQ0FCUVNCcUlBRkJFR29RcXdvckF3QVFMUXdUQ3lBR0lBRW9BalFRRHlFRUlBRWdBMEVBRUN3Z0FoQVBLQUlBTmdJZ0lBRWdBMEVCRUN3Z0JSQVBLQUlBTmdJUUlBUWdBVUVnYWlBQlFSQnFFUDRCS0FJQUVHVU1FZ3NnQmlBQktBSTBFQThoQkNBQklBTkJBQkFzSUFJUUR5Z0NBRFlDSUNBQklBTkJBUkFzSUFVUUR5Z0NBRFlDRUNBRUlBRkJJR29nQVVFUWFoQ2tBU2dDQUJCdERCRUxJQVlnQVNnQ05CQVBJUVFnQVNBRFFRQVFMQ0FDRUE4c0FBQTZBQ0FnQVNBRFFRRVFMQ0FGRUE4c0FBQTZBQkFnQkNBQlFTQnFJQUZCRUdvUXFnb3NBQUFRYkF3UUN5QUdJQUVvQWpRUUR5RUVJQUVnQTBFQUVDd2dBaEFQTFFBQU9nQWdJQUVnQTBFQkVDd2dCUkFQTFFBQU9nQVFJQVFnQVVFZ2FpQUJRUkJxRUtrS0xRQUFFSFlNRHdzZ0JpQUJLQUkwRUE4aEJDQUJJQU5CQUJBc0lBSVFEeTRCQURzQklDQUJJQU5CQVJBc0lBVVFEeTRCQURzQkVDQUVJQUZCSUdvZ0FVRVFhaENvQ2k0QkFCQnlEQTRMSUFZZ0FTZ0NOQkFQSVFRZ0FTQURRUUFRTENBQ0VBOHZBUUE3QVNBZ0FTQURRUUVRTENBRkVBOHZBUUE3QVJBZ0JDQUJRU0JxSUFGQkVHb1Fwd292QVFBUWNRd05DeUFHSUFFb0FqUVFEeUVFSUFFZ0EwRUFFQ3dnQWhBUEtRTUFOd01nSUFFZ0EwRUJFQ3dnQlJBUEtRTUFOd01RSUFRZ0FVRWdhaUFCUVJCcUVLWUtLUU1BRUZzTURBc2dCaUFCS0FJMEVBOGhCQ0FCSUFOQkFCQXNJQUlRRHlrREFEY0RJQ0FCSUFOQkFSQXNJQVVRRHlrREFEY0RFQ0FFSUFGQklHb2dBVUVRYWhDbENpa0RBQkJhREFzTElBaEJBQkFSS0FJQUlnUWdCQ2dDQUNnQ0RCRUFBQ0lFSUFRb0FnQW9Bb0FCRVFBQVFYOXFJZ1JCQ2tzTkNnSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUU5yRGdnREJBVUdBUUlIQ0FBTElBWWdBU2dDTkJBUElRUWdBU0FEUVFBUUxDQUNFQThyQXdBNUF5QWdBU0FEUVFFUUxDQUZFQThyQXdBNUF4QWdCQ0FCUVNCcUlBRkJFR29RcEFvckF3QVFMUXdTQ3lBR0lBRW9BalFRRHlFRUlBRWdBMEVBRUN3Z0FoQVBLQUlBTmdJZ0lBRWdBMEVCRUN3Z0JSQVBLQUlBTmdJUUlBUWdBVUVnYWlBQlFSQnFFS1lCS0FJQUVHVU1FUXNnQmlBQktBSTBFQThoQkNBQklBTkJBQkFzSUFJUUR5Z0NBRFlDSUNBQklBTkJBUkFzSUFVUUR5Z0NBRFlDRUNBRUlBRkJJR29nQVVFUWFoQlNLQUlBRUcwTUVBc2dCaUFCS0FJMEVBOGhCQ0FCSUFOQkFCQXNJQUlRRHl3QUFEb0FJQ0FCSUFOQkFSQXNJQVVRRHl3QUFEb0FFQ0FFSUFGQklHb2dBVUVRYWhDakNpd0FBQkJzREE4TElBWWdBU2dDTkJBUElRUWdBU0FEUVFBUUxDQUNFQTh0QUFBNkFDQWdBU0FEUVFFUUxDQUZFQTh0QUFBNkFCQWdCQ0FCUVNCcUlBRkJFR29Rb2dvdEFBQVFkZ3dPQ3lBR0lBRW9BalFRRHlFRUlBRWdBMEVBRUN3Z0FoQVBMZ0VBT3dFZ0lBRWdBMEVCRUN3Z0JSQVBMZ0VBT3dFUUlBUWdBVUVnYWlBQlFSQnFFS0VLTGdFQUVISU1EUXNnQmlBQktBSTBFQThoQkNBQklBTkJBQkFzSUFJUUR5OEJBRHNCSUNBQklBTkJBUkFzSUFVUUR5OEJBRHNCRUNBRUlBRkJJR29nQVVFUWFoQ2dDaThCQUJCeERBd0xJQVlnQVNnQ05CQVBJUVFnQVNBRFFRQVFMQ0FDRUE4cEF3QTNBeUFnQVNBRFFRRVFMQ0FGRUE4cEF3QTNBeEFnQkNBQlFTQnFJQUZCRUdvUW53b3BBd0FRV3d3TEN5QUdJQUVvQWpRUUR5RUVJQUVnQTBFQUVDd2dBaEFQS1FNQU53TWdJQUVnQTBFQkVDd2dCUkFQS1FNQU53TVFJQVFnQVVFZ2FpQUJRUkJxRUo0S0tRTUFFRm9NQ2dzZ0NFRUFFQkVvQWdBaUJ5QUhLQUlBS0FJTUVRQUFJZ2NnQnlnQ0FDZ0NnQUVSQUFCQmYyb2lCMEVLU3cwSkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBZEJBMnNPQ0FJREJBVUdBUWNJQUFzZ0JpQUJLQUkwRUE4aEJ5QUJJQU5CQUJBc0lBSVFEeXNEQURrRElDQUJJQU5CQVJBc0lBVVFEeXNEQURrREVDQUJRU0JxSUFGQkVHb1FwQW9oQWlBQklBTkJBaEFzSUFRUUR5c0RBRGtEQUNBSElBSWdBUkNyQ2lzREFCQXREQkVMSUFZZ0FTZ0NOQkFQSVFjZ0FTQURRUUFRTENBQ0VBOG9BZ0EyQWlBZ0FTQURRUUVRTENBRkVBOG9BZ0EyQWhBZ0FVRWdhaUFCUVJCcUVGSWhBaUFCSUFOQkFoQXNJQVFRRHlnQ0FEWUNBQ0FISUFJZ0FSQ2tBU2dDQUJCdERCQUxJQVlnQVNnQ05CQVBJUWNnQVNBRFFRQVFMQ0FDRUE4c0FBQTZBQ0FnQVNBRFFRRVFMQ0FGRUE4c0FBQTZBQkFnQVVFZ2FpQUJRUkJxRUtNS0lRSWdBU0FEUVFJUUxDQUVFQThzQUFBNkFBQWdCeUFDSUFFUXFnb3NBQUFRYkF3UEN5QUdJQUVvQWpRUUR5RUhJQUVnQTBFQUVDd2dBaEFQTFFBQU9nQWdJQUVnQTBFQkVDd2dCUkFQTFFBQU9nQVFJQUZCSUdvZ0FVRVFhaENpQ2lFQ0lBRWdBMEVDRUN3Z0JCQVBMUUFBT2dBQUlBY2dBaUFCRUtrS0xRQUFFSFlNRGdzZ0JpQUJLQUkwRUE4aEJ5QUJJQU5CQUJBc0lBSVFEeTRCQURzQklDQUJJQU5CQVJBc0lBVVFEeTRCQURzQkVDQUJRU0JxSUFGQkVHb1FvUW9oQWlBQklBTkJBaEFzSUFRUUR5NEJBRHNCQUNBSElBSWdBUkNvQ2k0QkFCQnlEQTBMSUFZZ0FTZ0NOQkFQSVFjZ0FTQURRUUFRTENBQ0VBOHZBUUE3QVNBZ0FTQURRUUVRTENBRkVBOHZBUUE3QVJBZ0FVRWdhaUFCUVJCcUVLQUtJUUlnQVNBRFFRSVFMQ0FFRUE4dkFRQTdBUUFnQnlBQ0lBRVFwd292QVFBUWNRd01DeUFHSUFFb0FqUVFEeUVISUFFZ0EwRUFFQ3dnQWhBUEtBSUFOZ0lnSUFFZ0EwRUJFQ3dnQlJBUEtBSUFOZ0lRSUFGQklHb2dBVUVRYWhDbUFTRUNJQUVnQTBFQ0VDd2dCQkFQS0FJQU5nSUFJQWNnQWlBQkVQNEJLQUlBRUdVTUN3c2dCaUFCS0FJMEVBOGhCeUFCSUFOQkFCQXNJQUlRRHlrREFEY0RJQ0FCSUFOQkFSQXNJQVVRRHlrREFEY0RFQ0FCUVNCcUlBRkJFR29RbndvaEFpQUJJQU5CQWhBc0lBUVFEeWtEQURjREFDQUhJQUlnQVJDbUNpa0RBQkJiREFvTElBWWdBU2dDTkJBUElRY2dBU0FEUVFBUUxDQUNFQThwQXdBM0F5QWdBU0FEUVFFUUxDQUZFQThwQXdBM0F4QWdBVUVnYWlBQlFSQnFFSjRLSVFJZ0FTQURRUUlRTENBRUVBOHBBd0EzQXdBZ0J5QUNJQUVRcFFvcEF3QVFXZ3dKQ3lBR0lBRW9BalFRRHlBRFFRQVFMQ0FDRUE4Z0EwRUJFQ3dnQlJBUEVLWUdFSGNNQ0FzZ0JpQUJLQUkwRUE4Z0EwRUFFQ3dnQWhBUElBTkJBUkFzSUFVUUR4Q2xCaEIzREFjTElBWWdBU2dDTkJBUElBTkJBQkFzSUFJUUR5QURRUUVRTENBRkVBOFFwUVpCQVhNUWR3d0dDeUFHSUFFb0FqUVFEeUFEUVFBUUxDQUNFQThnQTBFQkVDd2dCUkFQRUtZR1FRRnpFSGNNQlFzZ0JpQUJLQUkwRUE4Z0EwRUFFQ3dnQWhBUElBTkJBUkFzSUFVUUR4Q29CaEIzREFRTElBWWdBU2dDTkJBUElBTkJBQkFzSUFJUUR5QURRUUVRTENBRkVBOFFxQVpCQVhNUWR3d0RDeUFJUVFBUUVTZ0NBQ0lISUFjb0FnQW9BZ3dSQUFBaUJ5QUhLQUlBS0FLd0FSRUFBRVVOQlNBSVFRSVFFU2dDQUNJSElBY29BZ0FvQWd3UkFBQWlCeUFIS0FJQUtBS0FBUkVBQUNFS0lBWWdBU2dDTkJBUElRY2dDa0VNUmdSQUlBY2dBeUFEUVFJUUxDQUVFQTh0QUFBaUJCQXNJQVVnQWlBRUd4QVBLd01BRUMwTUF3c2dCeUFEUVFBUUxDQUNFQThyQXdCRUFBQUFBQUFBOEQ4Z0EwRUNFQ3dnQkJBUEt3TUFvYUlnQTBFQkVDd2dCUkFQS3dNQUlBTkJBaEFzSUFRUUR5c0RBS0tnRUMwTUFnc2dCaUFCS0FJMEVBOUVBQUFBQUFBQUFBQkVBQUFBQUFBQThEOGdBMEVCRUN3Z0JSQVBLd01BSUFOQkFCQXNJQUlRRHlzREFHTWJFQzBNQVFzZ0EwRUNFQ3dnQkJBUEt3TUFJUXNnQTBFQUVDd2dBaEFQS3dNQUlRd2dBMEVCRUN3Z0JSQVBLd01BSVEwZ0EwRUFFQ3dnQWhBUEt3TUFJUTRnQmlBQktBSTBFQThnQ3lBTW9TQU5JQTZobzBRQUFBQUFBQUFBQUtWRUFBQUFBQUFBOEQra0lnc2dDNkpFQUFBQUFBQUFDRUFnQ3lBTG9LR2lFQzBMSUFFZ0FTZ0NORUVCYWlJQ05nSTBJQUlnQ1VnTkFBc01CQXNnQ0VFQUVCRW9BZ0FpQWlBQ0tBSUFLQUlVRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQkRGQVNFRUlBQW9BbWdpQWtIemZXb2lCVUVHU3dSQUlBSkJwUUpIRFFFZ0NFRUJFQkVvQWdBaUFpQUNLQUlBS0FJVUVRQUFJZ0lnQWlnQ0FDZ0NlQkVBQUJERkFTRUlJQVJCQVVnTkJFRUFJUVVEUUVFQUlRSWdDRUVBU2dSQUEwQWdBVUVnYWlBRFFRQVFMQ0FGRUE4Z0EwRUJFQ3dnQWhBUEVPQURJQVlnQWlBRWJDQUZhaEFQSWdrZ0FTZ0NLRFlDQ0NBSklBRXBBeUEzQXdBZ0FrRUJhaUlDSUFoSERRQUxDeUFGUVFGcUlnVWdCRWNOQUFzTUJBc0NRQUpBQWtBQ1FBSkFJQVZCQVdzT0JnWUJCUUlEQkFBTElBUkJBVWdOQmtFQUlRSURRQ0FMSUFOQkFSQXNJQUlRRHlzREFDQURRUUFRTENBQ0VBOHJBd0NoSWdzZ0M2S2dJUXNnQWtFQmFpSUNJQVJIRFFBTERBWUxJQUZCRUdvZ0EwRUFFQ3hCQVJBUElBTkJBUkFzUVFJUUR4RGdBeUFCSUFOQkFCQXNRUUlRRHlBRFFRRVFMRUVCRUE4UTRBTWdBVUVnYWlBQlFSQnFJQUVRcEFZZ0JrRUFFQThpQWlBQktBSW9OZ0lJSUFJZ0FTa0RJRGNEQUNBQlFSQnFJQU5CQUJBc1FRSVFEeUFEUVFFUUxFRUFFQThRNEFNZ0FTQURRUUFRTEVFQUVBOGdBMEVCRUN4QkFoQVBFT0FESUFGQklHb2dBVUVRYWlBQkVLUUdJQVpCQVJBUElnSWdBU2dDS0RZQ0NDQUNJQUVwQXlBM0F3QWdBVUVRYWlBRFFRQVFMRUVBRUE4Z0EwRUJFQ3hCQVJBUEVPQURJQUVnQTBFQUVDeEJBUkFQSUFOQkFSQXNRUUFRRHhEZ0F5QUJRU0JxSUFGQkVHb2dBUkNrQmlBR1FRSVFEeUlDSUFFb0FpZzJBZ2dnQWlBQktRTWdOd01BREFZTElBTkJBUkFzSUFOQkFoQXNFS0VHSVFzZ0JFRUJTQTBGUVFBaEFnTkFBa0FnQzBRQUFBQUFBQUFBQUdOQkFYTkZCRUFnQTBFQUVDd2dBaEFQSVFVZ0JpQUNFQThpQ0NBRktBSUlOZ0lJSUFnZ0JTa0RBRGNEQUF3QkN5QUdJQUlRRHlBRFFRQVFMQ0FDRUE4ckF3Q2FFQzBMSUFKQkFXb2lBaUFFUncwQUN3d0ZDMEVBSVFJZ0EwRUFFQ3dnQTBFQkVDd1FvUVloQ3lBRVFRRklEUVFnQ3lBTG9DRUxBMEFnQmlBQ0VBOGdBMEVBRUN3Z0FoQVBLd01BSUFzZ0EwRUJFQ3dnQWhBUEt3TUFvcUVRTFNBQ1FRRnFJZ0lnQkVjTkFBc01CQXRCQUNFQ1JBQUFBQUFBQVBBL1JBQUFBQUFBQVBBL0lBTkJBQkFzSUFOQkFSQXNFS0VHSWd3Z0RLS2hJQU5CQWhBc1FRQVFEeXNEQUNJTElBdWlvcUVpRFVRQUFBQUFBQUFBQUdORkJFQWdCRUVCU0EwRUlBd2dDNklnRForZ0lRd0RRQ0FHSUFJUUR5QUxJQU5CQUJBc0lBSVFEeXNEQUtJZ0RDQURRUUVRTENBQ0VBOHJBd0Npb1JBdElBSkJBV29pQWlBRVJ3MEFDd3dFQ3lBRVFRRklEUU1EUUNBR0lBSVFEMFFBQUFBQUFBQUFBQkF0SUFKQkFXb2lBaUFFUncwQUN3d0RDeUFBSVFJTUF3c2dCa0VBRUE4Z0EwRUFFQ3dnQTBFQkVDd1FvUVlRTFF3QkN5QUdRUUFRRHlBTG54QXRDMEgwQUJCR0lnSWdCaUFBSUFBb0FnQW9BbmdSQUFBUW93WWFJQUlnQWlnQ0FDZ0NmQkVBQUNJR0lBWW9BZ0FvQWlnUkFBQWlCaUFHS1FJRVFrQ0RRZ0tFTndJRUlBSWdBQ0FBS0FJQUtBSUFFUUFBSUFJb0FnQW9BZ1FSQVFBTElBTVEzd01nQXhDdkVBd0JDeUFBSVFJTElBRkIwQUJxSkFBZ0Fnc3VBZ0YvQVg0Z0FMMGlBa0lnaUtjaUFVR0FnT0QvQjNGQmdJRGcvd2RHSUFLbklBRkIvLzgvY1hKQkFFZHhDNndCQVFGL0lBQVF5UUloQUNBQktBSUlRWHhxSWdKQkIwMEVRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBa0VCYXc0SEF3UUZBQUVHQndJTElBQWdBU2dDQUVGL2N4QmxEd3NnQUNBQktBSUFRWDl6RUcwUEN5QUFJQUVzQUFCQmYzTVFiQThMSUFBZ0FTMEFBRUgvQVhNUWRnOExJQUFnQVM0QkFFRi9jeEJ5RHdzZ0FDQUJMd0VBUWYvL0EzTVFjUThMSUFBZ0FTa0RBRUovaFJCYkR3c2dBQ0FCS1FNQVFuK0ZFRm9MQzZneEFncC9BbndqQUVFZ2F5SUpKQUFnQUNBQUtBSUFLQUo0RVFBQUVNVUJJUWRCQVNFREFrQUNRQUovQWtBQ1FDQUJRYVVDVEFSQUlBRkIrbjFxSWdoQkNrME5BU0FCUVpSK2FpSUlRUWxMRFFKQkFTQUlkQ0lJUVlVQ2NRMEVJQWhCaWdSeFJRMENRUUloQXd3RUN5QUJRZE45YWtFQ1NRMEVJQUZCcGdKR0lBRkJ4bnhxUVFKSmNnMEREQUVMQWtBZ0NFRUdhdzRFQXdFQkFRQUxRUUFNQVF0QkFRc2hDaUFISVFNTElBbEJHR29nQXhEMUFTRUZJQUFRU3lFRUFrQUNRQ0FCUVlVQ1RBUkFJQUZCbEg1cUlnTkJDVXRCQVNBRGRFR1BCbkZGY2cwQkRBSUxJQUZCK24xcUlnTkJDa3NFUUNBQlFkcDlha0VEU1EwQ0lBRkJ4bnhxSWdOQkFVc05BU0FEUVFGclJRUkFRUUFoQTBFQklRWWdCMEVBU2dSQUEwQWdCaUFFSUFNUUR5MEFBSEVoQmlBRFFRRnFJZ01nQjBjTkFBc0xJQVZCQUJBUElBWVFkd3dDQ3lBSFFRQktCRUJCQUNFREEwQWdCaUFFSUFNUUR5MEFBSEloQmlBRFFRRnFJZ01nQjBjTkFBc0xJQVZCQUJBUElBWkJBWEVRZHd3QkN3SkFJQU5CQm1zT0JRQUJBUUVBQWd0QkFDRURJQWRCQUVvRVFBTkFJQTBnQkNBREVBOHJBd0FnQkNBREVBOHJBd0Npb0NFTklBTkJBV29pQXlBSFJ3MEFDd3NnRFo4aERTQUJRWXdDUndSQVFRQWhBeUFIUVFCTURRRURRQ0FGSUFNUUR5QUVJQU1RRHlzREFDQU5veEF0SUFOQkFXb2lBeUFIUncwQUN3d0JDeUFGUVFBUUR5QU5FQzBMUVFBaEF5QUhRUUFnQ2hzaURFRUJUZ1JBSUFGQmVtb2lDRUdaQWtzaENpQUJRYk1FUmlFSEEwQkJBQ0VHQWtBQ1FDQUtCRUFnQjBVTkJRd0JDd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FJUVFGckRwa0NBUUVDblFHZEFaMEJuUUdkQVNrcUt5d2NIUzB1THlJaU1ERXlNeDRmTkRVMkl5TTNPRGs2T3p3OVBqOUFRVUpEUkVWR1IwaEpTa3RNVFU1UFVGRlNVMVJWVmxkWVdWcGJYRjFlWDJCaFltTWdaR1ZtSVdkb2FXcHJKQ1JzSlNWdGJtOXdjWEp6ZEhWMmQzaDVlbnQ4Zlg1L2dBR0JBWUlCZ3dHRUFZVUJoZ0dIQVlnQmlRR0tBWXNCakFFb2pRR09BWThCSjVBQmtRRW1rZ0dUQVNpVUFaVUJsZ0VubHdHWUFTYVpBWmtCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RRURCQVVHQndnSkNwMEJuUUdkQVowQm5RR2RBWjBCREEwT0R4QVJFaE1VRlJZWEdCbWRBWjBCblFHZEFaMEJuUUdkQVJvYm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFFTEN3c0xDd3NMQ3dzQUN5QUFJQUFvQWdBb0FuZ1JBQUFpQVNBQktBSUFLQUljRVFBQVFYOXFJZ0ZCQ2tzTm5BRUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBVUVEYXc0SUF3UUZCZ0VDQndnQUN5QUZJQU1RRHlBRUlBTVFEeXNEQUpvUUxReWhBUXNnQlNBREVBOUJBQ0FFSUFNUUR5Z0NBR3NRWlF5Z0FRc2dCU0FERUE5QkFDQUVJQU1RRHlnQ0FHc1FiUXlmQVFzZ0JTQURFQTlCQUNBRUlBTVFEeXdBQUd0QkdIUkJHSFVRYkF5ZUFRc2dCU0FERUE5QkFDQUVJQU1RRHkwQUFHdEIvd0Z4RUhZTW5RRUxJQVVnQXhBUFFRQWdCQ0FERUE4dUFRQnJRUkIwUVJCMUVISU1uQUVMSUFVZ0F4QVBRUUFnQkNBREVBOHZBUUJyUWYvL0EzRVFjUXliQVFzZ0JTQURFQTlDQUNBRUlBTVFEeWtEQUgwUVd3eWFBUXNnQlNBREVBOUNBQ0FFSUFNUUR5a0RBSDBRV2d5WkFRc2dBQ0FBS0FJQUtBSjRFUUFBSWdFZ0FTZ0NBQ2dDSEJFQUFFRU1SdzJiQVNBRklBTVFEeUFFSUFNUUR5MEFBRUVCY3hCM0RKZ0JDeUFKUVFocUlBUWdBeEFQRU1ZUUlBVWdBeEFQSWdFZ0NTZ0NFRFlDQ0NBQklBa3BBd2czQXdBTWx3RUxJQVVnQXhBUElBUWdBeEFQS3dNQVJCZ3RSRlQ3SVFsQW9rUUFBQUFBQUlCbVFLTVFMUXlXQVFzZ0JTQURFQThnQkNBREVBOHJBd0JFQUFBQUFBQ0Faa0NpUkJndFJGVDdJUWxBb3hBdERKVUJDeUFGSUFNUUR5QUVJQU1RRHlzREFCRFJFeEF0REpRQkN5QUZJQU1RRHlBRUlBTVFEeXNEQUJEU0V4QXRESk1CQ3lBRklBTVFEeUFFSUFNUUR5c0RBQkRRRXhBdERKSUJDeUFGSUFNUUR5QUVJQU1RRHlzREFCRE9FeEF0REpFQkN5QUZJQU1RRHlBRUlBTVFEeXNEQUJEUEV4QXRESkFCQ3lBRklBTVFEeUFFSUFNUUR5c0RBQkNDQ0JBdERJOEJDeUFGSUFNUUQwUUFBQUFBQUFBQUFCQXRESTRCQ3lBRklBTVFEeUFFSUFNUUR5c0RBQkRiQ3hBdERJMEJDeUFGSUFNUUR5QUVJQU1RRHlzREFCRGFDeEF0REl3QkN5QUZJQU1RRHlBRUlBTVFEeXNEQUVUdk9mcitRaTdtUDZJUTJ3c1FMUXlMQVFzZ0JTQURFQThnQkNBREVBOHJBd0FRMmd0RS9vSXJaVWNWOXoraUVDME1pZ0VMSUFVZ0F4QVBJQVFnQXhBUEt3TUFueEF0RElrQkN5QUZJQU1RRDBRQUFBQUFBQUR3UHlBRUlBTVFEeXNEQUorakVDME1pQUVMSUFRZ0F4QVBLQUlJUVFKR0JFQWdCU0FERUE4Z0JDQURFQThyQXdDWkVDME1pQUVMSUFRZ0F4QVBLQUlJUVFoR0JFQWdCU0FERUE4Z0JDQURFQThvQWdBaUFTQUJRUjkxSWdGcUlBRnpFR1VNaUFFTElBUWdBeEFQSVFZZ0JTQURFQThpQVNBR0tBSUlOZ0lJSUFFZ0Jpa0RBRGNEQUF5SEFRc2dCQ0FERUE4b0FnZ2hBU0FGSUFNUUR5RUxJQVFnQXhBUElRWWdBVUVDUmdSQUlBc2dCaXNEQUVRQUFBQUFBQUFBQUdJRWYwRi9RUUVnQkNBREVBOHJBd0JFQUFBQUFBQUFBQUJqR3dWQkFBdTNFQzBNaHdFTElBc0NmMEVBSUFZb0FnQkZEUUFhUVFGQmZ5QUVJQU1RRHlnQ0FFRi9TaHNMRUdVTWhnRUxJQVVnQXhBUElBUWdBeEFQS3dNQW5CQXRESVVCQ3lBRUlBTVFEeXNEQUNFTklBVWdBeEFQSVFFZ0JDQURFQThyQXdBaERpQU5SQUFBQUFBQUFBQUFaRUVCYzBVRVFDQUJJQTZjRUMwTWhRRUxJQUVnRHBzUUxReUVBUXNnQlNBREVBOGdCQ0FERUE4ckF3QkVBQUFBQUFBQTREK2duQkF0RElNQkN5QUVJQU1RRHlzREFDRU5JQVFnQXhBUEt3TUFJUTRnQlNBREVBOGdEa1FBQUFBQUFBRGd2NkNiSUE1RUFBQUFBQUFBNEQrZ25DQU5uRVFBQUFBQUFBRGdQNklpRFNBTm5HRWJFQzBNZ2dFTElBVWdBeEFQSUFRZ0F4QVBLd01BbXhBdERJRUJDeUFFSUFNUUR5c0RBQ0VOSUFVZ0F4QVBJQTBnRFp5aEVDME1nQUVMSUFVZ0F4QVBJQVFnQXhBUEt3TUFFTVVRRUhjTWZ3c2dCU0FERUE4Z0JDQURFQThyQXdDOVF2Ly8vLy8vLy8vLy93Q0RRb0NBZ0lDQWdJRDQvd0JSRUhjTWZnc2dCU0FERUE4Z0JDQURFQThvQWdCQkFFY1Fkd3g5Q3lBRklBTVFEeUFFSUFNUUR5Z0NBRUVBUnhCM0RId0xJQVVnQXhBUElBUWdBeEFQTFFBQUVHVU1ld3NnQlNBREVBOGdCQ0FERUE4dEFBQVFiUXg2Q3lBRklBTVFEeUFFSUFNUUR5Z0NBQkJ0REhrTElBVWdBeEFQSUFRZ0F4QVBLQUlBRUdVTWVBc2dCU0FERUE4Z0JDQURFQThyQXdCRUFBQUFBQUFBQUFCaUVIY01kd3NnQlNBREVBOGdCQ0FERUE4dEFBQzRFQzBNZGdzZ0JTQURFQThnQkNBREVBOG9BZ0MzRUMwTWRRc2dCU0FERUE4Z0JDQURFQThvQWdDNEVDME1kQXNnQlNBREVBOGdCQ0FERUE4ckF3QVFMUXh6Q3lBRklBTVFEd0ovSUFRZ0F4QVBLd01BSWcxRUFBQUFBQUFBOEVGaklBMUVBQUFBQUFBQUFBQm1jUVJBSUEyckRBRUxRUUFMRUcwTWNnc2dCU0FERUE4Q2Z5QUVJQU1RRHlzREFDSU5tVVFBQUFBQUFBRGdRV01FUUNBTnFnd0JDMEdBZ0lDQWVBc1FaUXh4Q3lBRklBTVFEeUFFSUFNUUR5d0FBRUVBUnhCM0RIQUxJQVVnQXhBUElBUWdBeEFQTFFBQVFRQkhFSGNNYndzZ0JTQURFQThnQkNBREVBOHVBUUJCQUVjUWR3eHVDeUFGSUFNUUR5QUVJQU1RRHk4QkFFRUFSeEIzREcwTElBVWdBeEFQSUFRZ0F4QVBLUU1BUWdCU0VIY01iQXNnQlNBREVBOGdCQ0FERUE4cEF3QkNBRklRZHd4ckN5QUZJQU1RRHlBRUlBTVFEeXNEQUVRQUFBQUFBQUFBQUdJUWR3eHFDeUFGSUFNUUR5QUVJQU1RRHkwQUFCQnNER2tMSUFVZ0F4QVBJQVFnQXhBUExRQUFFSFlNYUFzZ0JTQURFQThnQkNBREVBOHRBQUFRY2d4bkN5QUZJQU1RRHlBRUlBTVFEeTBBQUJCeERHWUxJQVVnQXhBUElBUWdBeEFQTFFBQXJSQmJER1VMSUFVZ0F4QVBJQVFnQXhBUExRQUFyUkJhREdRTElBVWdBeEFQSUFRZ0F4QVBMUUFBdUJBdERHTUxJQVVnQXhBUElBUWdBeEFQTEFBQUVISU1ZZ3NnQlNBREVBOGdCQ0FERUE4c0FBQVFaUXhoQ3lBRklBTVFEeUFFSUFNUUR5d0FBS3dRV3d4Z0N5QUZJQU1RRHlBRUlBTVFEeTBBQUJCMkRGOExJQVVnQXhBUElBUWdBeEFQTEFBQVFmLy9BM0VRY1F4ZUN5QUZJQU1RRHlBRUlBTVFEeXdBQUJCdERGMExJQVVnQXhBUElBUWdBeEFQTEFBQXJCQmFERndMSUFVZ0F4QVBJQVFnQXhBUExBQUFFR3dNV3dzZ0JTQURFQThnQkNBREVBOHRBQUFRY2d4YUN5QUZJQU1RRHlBRUlBTVFEeTBBQUJCbERGa0xJQVVnQXhBUElBUWdBeEFQTFFBQXJSQmJERmdMSUFVZ0F4QVBJQVFnQXhBUExRQUFFSEVNVndzZ0JTQURFQThnQkNBREVBOHRBQUFRYlF4V0N5QUZJQU1RRHlBRUlBTVFEeTBBQUswUVdneFZDeUFGSUFNUUR5QUVJQU1RRHl3QUFMY1FMUXhVQ3lBRklBTVFEeUFFSUFNUUR5d0FBTGNRTFF4VEN5QUZJQU1RRHlBRUlBTVFEeXdBQUxjUUxReFNDeUFGSUFNUUR5QUVJQU1RRHkwQUFMZ1FMUXhSQ3lBRklBTVFEeUFFSUFNUUR5MEFBTGdRTFF4UUN5QUZJQU1RRHlBRUlBTVFEeTBBQUxnUUxReFBDeUFGSUFNUUR5QUVJQU1RRHk0QkFFRVlkRUVZZFJCc0RFNExJQVVnQXhBUElBUWdBeEFQTGdFQUVHVU1UUXNnQlNBREVBOGdCQ0FERUE4dUFRQ3NFRnNNVEFzZ0JTQURFQThnQkNBREVBOHVBUUJCL3dGeEVIWU1Td3NnQlNBREVBOGdCQ0FERUE4dkFRQVFjUXhLQ3lBRklBTVFEeUFFSUFNUUR5NEJBQkJ0REVrTElBVWdBeEFQSUFRZ0F4QVBMZ0VBckJCYURFZ0xJQVVnQXhBUElBUWdBeEFQTHdFQVFSaDBRUmgxRUd3TVJ3c2dCU0FERUE4Z0JDQURFQTh1QVFBUWNneEdDeUFGSUFNUUR5QUVJQU1RRHk4QkFCQmxERVVMSUFVZ0F4QVBJQVFnQXhBUEx3RUFyUkJiREVRTElBVWdBeEFQSUFRZ0F4QVBMd0VBUWY4QmNSQjJERU1MSUFVZ0F4QVBJQVFnQXhBUEx3RUFFRzBNUWdzZ0JTQURFQThnQkNBREVBOHZBUUN0RUZvTVFRc2dCU0FERUE4Z0JDQURFQTh1QVFDM0VDME1RQXNnQlNBREVBOGdCQ0FERUE4dUFRQzNFQzBNUHdzZ0JTQURFQThnQkNBREVBOHVBUUMzRUMwTVBnc2dCU0FERUE4Z0JDQURFQTh2QVFDNEVDME1QUXNnQlNBREVBOGdCQ0FERUE4dkFRQzRFQzBNUEFzZ0JTQURFQThnQkNBREVBOHZBUUM0RUMwTU93c2dCU0FERUE4Z0JDQURFQThvQWdCQkdIUkJHSFVRYkF3NkN5QUZJQU1RRHlBRUlBTVFEeWdDQUVFUWRFRVFkUkJ5RERrTElBVWdBeEFQSUFRZ0F4QVBLQUlBckJCYkREZ0xJQVVnQXhBUElBUWdBeEFQS0FJQVFmOEJjUkIyRERjTElBVWdBeEFQSUFRZ0F4QVBLQUlBUWY4QmNSQnhERFlMSUFVZ0F4QVBJQVFnQXhBUEtBSUFyQkJhRERVTElBVWdBeEFQSUFRZ0F4QVBLQUlBUVJoMFFSaDFFR3dNTkFzZ0JTQURFQThnQkNBREVBOG9BZ0JCRUhSQkVIVVFjZ3d6Q3lBRklBTVFEeUFFSUFNUUR5Z0NBSzBRV3d3eUN5QUZJQU1RRHlBRUlBTVFEeWdDQUVIL0FYRVFkZ3d4Q3lBRklBTVFEeUFFSUFNUUR5Z0NBRUgvL3dOeEVIRU1NQXNnQlNBREVBOGdCQ0FERUE4b0FnQ3RFRm9NTHdzZ0JTQURFQThnQkNBREVBOG9BZ0MzRUMwTUxnc2dCU0FERUE4Z0JDQURFQThvQWdDNEVDME1MUXNnQlNBREVBOGdCQ0FERUE4cEF3Q25RUmgwUVJoMUVHd01MQXNnQlNBREVBOGdCQ0FERUE4cEF3Q25RUkIwUVJCMUVISU1Ld3NnQlNBREVBOGdCQ0FERUE4cEF3Q25FR1VNS2dzZ0JTQURFQThnQkNBREVBOHBBd0NuUWY4QmNSQjJEQ2tMSUFVZ0F4QVBJQVFnQXhBUEtRTUFwMEgvL3dOeEVIRU1LQXNnQlNBREVBOGdCQ0FERUE4cEF3Q25FRzBNSndzZ0JTQURFQThnQkNBREVBOHBBd0FRV2d3bUN5QUZJQU1RRHlBRUlBTVFEeWtEQUtkQkdIUkJHSFVRYkF3bEN5QUZJQU1RRHlBRUlBTVFEeWtEQUtkQkVIUkJFSFVRY2d3a0N5QUZJQU1RRHlBRUlBTVFEeWtEQUtjUVpRd2pDeUFGSUFNUUR5QUVJQU1RRHlrREFCQmJEQ0lMSUFVZ0F4QVBJQVFnQXhBUEtRTUFwMEgvQVhFUWRnd2hDeUFGSUFNUUR5QUVJQU1RRHlrREFLZEIvLzhEY1JCeERDQUxJQVVnQXhBUElBUWdBeEFQS1FNQXB4QnREQjhMSUFVZ0F4QVBJQVFnQXhBUEtRTUF1UkF0REI0TElBVWdBeEFQSUFRZ0F4QVBLUU1BdVJBdERCMExJQVVnQXhBUElBUWdBeEFQS1FNQXVSQXREQndMSUFVZ0F4QVBJQVFnQXhBUEtRTUF1aEF0REJzTElBVWdBeEFQSUFRZ0F4QVBLUU1BdWhBdERCb0xJQVVnQXhBUElBUWdBeEFQS1FNQXVoQXREQmtMSUFVZ0F4QVBBbjhnQkNBREVBOHJBd0FpRFpsRUFBQUFBQUFBNEVGakJFQWdEYW9NQVF0QmdJQ0FnSGdMRUd3TUdBc2dCU0FERUE4Q2Z5QUVJQU1RRHlzREFDSU5tVVFBQUFBQUFBRGdRV01FUUNBTnFnd0JDMEdBZ0lDQWVBc1FjZ3dYQ3lBRklBTVFEd0ovSUFRZ0F4QVBLd01BSWcyWlJBQUFBQUFBQU9CQll3UkFJQTJxREFFTFFZQ0FnSUI0Q3hCbERCWUxJQVVnQXhBUEFuNGdCQ0FERUE4ckF3QWlEWmxFQUFBQUFBQUE0RU5qQkVBZ0RiQU1BUXRDZ0lDQWdJQ0FnSUNBZndzUVd3d1ZDeUFGSUFNUUR3Si9JQVFnQXhBUEt3TUFJZzFFQUFBQUFBQUE4RUZqSUExRUFBQUFBQUFBQUFCbWNRUkFJQTJyREFFTFFRQUxFSFlNRkFzZ0JTQURFQThDZnlBRUlBTVFEeXNEQUNJTlJBQUFBQUFBQVBCQll5QU5SQUFBQUFBQUFBQUFabkVFUUNBTnF3d0JDMEVBQ3hCeERCTUxJQVVnQXhBUEFuOGdCQ0FERUE4ckF3QWlEVVFBQUFBQUFBRHdRV01nRFVRQUFBQUFBQUFBQUdaeEJFQWdEYXNNQVF0QkFBc1FiUXdTQ3lBRklBTVFEd0orSUFRZ0F4QVBLd01BSWcxRUFBQUFBQUFBOEVOaklBMUVBQUFBQUFBQUFBQm1jUVJBSUEyeERBRUxRZ0FMRUZvTUVRc2dCU0FERUE4Z0JDQURFQThyQXdBUUxRd1FDeUFGSUFNUUR5QUVJQU1RRHlzREFCQXREQThMSUFVZ0F4QVBBbjhnQkNBREVBOHJBd0FpRFpsRUFBQUFBQUFBNEVGakJFQWdEYW9NQVF0QmdJQ0FnSGdMRUd3TURnc2dCU0FERUE4Q2Z5QUVJQU1RRHlzREFDSU5tVVFBQUFBQUFBRGdRV01FUUNBTnFnd0JDMEdBZ0lDQWVBc1FjZ3dOQ3lBRklBTVFEd0orSUFRZ0F4QVBLd01BSWcyWlJBQUFBQUFBQU9CRFl3UkFJQTJ3REFFTFFvQ0FnSUNBZ0lDQWdIOExFRnNNREFzZ0JTQURFQThDZnlBRUlBTVFEeXNEQUNJTlJBQUFBQUFBQVBCQll5QU5SQUFBQUFBQUFBQUFabkVFUUNBTnF3d0JDMEVBQ3hCMkRBc0xJQVVnQXhBUEFuOGdCQ0FERUE4ckF3QWlEVVFBQUFBQUFBRHdRV01nRFVRQUFBQUFBQUFBQUdaeEJFQWdEYXNNQVF0QkFBc1FjUXdLQ3lBRklBTVFEd0orSUFRZ0F4QVBLd01BSWcxRUFBQUFBQUFBOEVOaklBMUVBQUFBQUFBQUFBQm1jUVJBSUEyeERBRUxRZ0FMRUZvTUNRc2dCU0FERUE4Z0JDQURFQThyQXdBUUxRd0lDeUFGSUFNUUR3Si9JQVFnQXhBUEt3TUFJZzJaUkFBQUFBQUFBT0JCWXdSQUlBMnFEQUVMUVlDQWdJQjRDeEJzREFjTElBVWdBeEFQQW44Z0JDQURFQThyQXdBaURabEVBQUFBQUFBQTRFRmpCRUFnRGFvTUFRdEJnSUNBZ0hnTEVISU1CZ3NnQlNBREVBOENmaUFFSUFNUUR5c0RBQ0lObVVRQUFBQUFBQURnUTJNRVFDQU5zQXdCQzBLQWdJQ0FnSUNBZ0lCL0N4QmJEQVVMSUFVZ0F4QVBBbjhnQkNBREVBOHJBd0FpRFVRQUFBQUFBQUR3UVdNZ0RVUUFBQUFBQUFBQUFHWnhCRUFnRGFzTUFRdEJBQXNRZGd3RUN5QUZJQU1RRHdKL0lBUWdBeEFQS3dNQUlnMUVBQUFBQUFBQThFRmpJQTFFQUFBQUFBQUFBQUJtY1FSQUlBMnJEQUVMUVFBTEVIRU1Bd3NnQlNBREVBOENmaUFFSUFNUUR5c0RBQ0lOUkFBQUFBQUFBUEJEWXlBTlJBQUFBQUFBQUFBQVpuRUVRQ0FOc1F3QkMwSUFDeEJhREFJTElBVWdBeEFQSUFRZ0F4QVBLd01BRUMwTUFRc2dCU0FERUE4Z0JDQURFQThwQXdBUVdnc2dBMEVCYWlJRElBeEhEUUFMQzBIMEFCQkdJZ1lnQlNBQ0VLTUdHaUFHSUFZb0FnQW9BbndSQUFBaUFTQUJLQUlBS0FJb0VRQUFJZ0VnQVNrQ0JFSkFnMElDaERjQ0JDQUdJQUFnQUNnQ0FDZ0NBQkVBQUNBR0tBSUFLQUlFRVFFQUN3c2dDVUVnYWlRQUlBWUw3UUVCQVg4Z0FCREpBaUVBQWtBZ0FTZ0NDRUYrYWlJRFFRbExEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQTBFQmF3NEpDUU1HQkFjQUFRVUlBZ3NnQUNBQ0tBSUFJQUVvQWdCcUVHVVBDeUFBSUFJb0FnQWdBU2dDQUdvUWJROExJQUFnQVNzREFDQUNLd01Bb0JBdER3c2dBQ0FDTFFBQUlBRXRBQUJxUVJoMFFSaDFFR3dQQ3lBQUlBSXZBUUFnQVM4QkFHcEJFSFJCRUhVUWNnOExJQUFnQWlrREFDQUJLUU1BZkJCYkR3c2dBQ0FDTFFBQUlBRXRBQUJxUWY4QmNSQjJEd3NnQUNBQ0x3RUFJQUV2QVFCcVFmLy9BM0VRY1E4TElBQWdBaWtEQUNBQktRTUFmQkJhQ3d2TkFRRUJmeUFBRU1rQ0lRQWdBU2dDQ0VGOGFpSURRUWROQkVBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFOQkFXc09Cd1VEQmdBQkJBY0NDeUFBSUFFb0FnQWdBaWdDQUc4UVpROExJQUFnQVNnQ0FDQUNLQUlBY0JCdER3c2dBQ0FCTEFBQUlBSXNBQUJ2UVJoMFFSaDFFR3dQQ3lBQUlBRXNBQUFnQWk0QkFHOUJHSFJCR0hVUWJBOExJQUFnQVNrREFDQUNLUU1BZ1JCYkR3c2dBQ0FCTFFBQUlBSXRBQUJ3RUhZUEN5QUFJQUV2QVFBZ0FpOEJBSEFRY1E4TElBQWdBU2tEQUNBQ0tRTUFnaEJhQ3d2TEJ3RUJmeUFBRU1rQ0lRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJLQUlJUVh4cUlnTkJCMHNOQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQTBFQmF3NEhBUUlEQkFVR0J3QUxJQUlvQWdoQmZHb2lBMEVIU3cwSEFrQWdBMEVCYXc0SENRb0tDd3NMQUFrTERBb0xJQUlvQWdoQmZHb2lBMEVIU3cwR0FrQWdBMEVCYXc0SEN3d01EUTBOQUFzTERBd0xJQUlvQWdoQmZHb2lBMEVIU3cwRkFrQWdBMEVCYXc0SERRNE9EdzhQQUEwTERBNExJQUlvQWdoQmZHb2lBMEVIU3cwRUFrQWdBMEVCYXc0SER4QVFFUkVSQUE4TERCQUxJQUlvQWdoQmZHb2lBMEVIU3cwREFrQWdBMEVCYXc0SEVoTVRFUkVSQUJJTERCQUxJQUlvQWdoQmZHb2lBMEVIU3cwQ0FrQWdBMEVCYXc0SEZCVVZFeE1UQUJRTERCSUxJQUlvQWdoQmZHb2lBMEVIU3cwQkFrQUNRQUpBQWtBQ1FBSkFJQU5CQVdzT0J3RUNBeG9hR3dVQUN5QUFJQUVwQXdBZ0FqQUFBRUwvLy8vL0Q0T0hFRnNQQ3lBQUlBRXBBd0FnQWpFQUFJY1FXdzhMSUFBZ0FTa0RBQ0FDTWdFQVF2Ly8vLzhQZzRjUVd3OExJQUFnQVNrREFDQUNNd0VBaHhCYkR3QUxBQUFMREJVTElBSW9BZ2hCZkdvaUEwRUhTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBMEVCYXc0SEFRSURIQndGQmdBTElBQWdBU2tEQUNBQ01BQUFRdi8vLy84UGc0Z1FXZzhMSUFBZ0FTa0RBQ0FDTVFBQWlCQmFEd3NnQUNBQktRTUFJQUl5QVFCQy8vLy8vdytEaUJCYUR3c2dBQ0FCS1FNQUlBSXpBUUNJRUZvUEFBc0FBQXNnQUNBQktRTUFJQUlwQXdDSUVGb1BDeUFBSUFFcEF3QWdBaWtEQUlnUVdnc1BDeUFBSUFFc0FBQWdBaTBBQUhVUWJBOExJQUFnQVN3QUFDQUNMd0VBZFJCc0R3c2dBQ0FCTEFBQUlBSW9BZ0IxRUd3UEN5QUFJQUV0QUFBZ0FpMEFBSFlRZGc4TElBQWdBUzBBQUNBQ0x3RUFkaEIyRHdzZ0FDQUJMUUFBSUFJb0FnQjJFSFlQQ3lBQUlBRXVBUUFnQWkwQUFIVVFjZzhMSUFBZ0FTNEJBQ0FDTHdFQWRSQnlEd3NnQUNBQkxnRUFJQUlvQWdCMUVISVBDeUFBSUFFdkFRQWdBaTBBQUhZUWNROExJQUFnQVM4QkFDQUNMd0VBZGhCeER3c2dBQ0FCTHdFQUlBSW9BZ0IyRUhFUEN5QUFJQUVvQWdBZ0FpZ0NBSFVRWlE4TElBQWdBU2dDQUNBQ0xRQUFkUkJsRHdzZ0FDQUJLQUlBSUFJdkFRQjFFR1VQQ3lBQUlBRW9BZ0FnQWlnQ0FIWVFiUThMSUFBZ0FTZ0NBQ0FDTFFBQWRoQnREd3NnQUNBQktBSUFJQUl2QVFCMkVHMFBDeUFBSUFFcEF3QWdBalVDQUljUVd3OExJQUFnQVNrREFDQUNLUU1BaHhCYkR3c2dBQ0FCS1FNQUlBSTFBZ0NJRUZvTGlnZ0JBWDhnQUJESkFpRUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCS0FJSVFYeHFJZ05CQjBzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRIQVFJREJnY0VCUUFMSUFJb0FnaEJmR29pQTBFSFN3MEhBa0FnQTBFQmF3NEhDUW9LQ3dzTEFBa0xEQW9MSUFJb0FnaEJmR29pQTBFSFN3MEdBa0FnQTBFQmF3NEhDd3dNRFEwTkFBc0xEQXdMSUFJb0FnaEJmR29pQTBFSFN3MEZBa0FnQTBFQmF3NEhEUTRPRHc4UEFBMExEQTRMSUFJb0FnaEJmR29pQTBFSFN3MEVBa0FnQTBFQmF3NEhEeEFRRVJFUkFBOExEQkFMSUFJb0FnaEJmR29pQTBFSFN3MERBa0FDUUFKQUFrQUNRQUpBSUFOQkFXc09Cd0VDQXhZV0Z3VUFDeUFBSUFFcEF3QWdBakFBQUVMLy8vLy9ENE9HRUZzUEN5QUFJQUVwQXdBZ0FqRUFBSVlRV3c4TElBQWdBU2tEQUNBQ01nRUFRdi8vLy84UGc0WVFXdzhMSUFBZ0FTa0RBQ0FDTXdFQWhoQmJEd0FMQUFBTERCRUxJQUlvQWdoQmZHb2lBMEVIU3cwQ0FrQUNRQUpBQWtBQ1FBSkFJQU5CQVdzT0J3RUNBeGNYR0FVQUN5QUFJQUVwQXdBZ0FqQUFBRUwvLy8vL0Q0T0dFRm9QQ3lBQUlBRXBBd0FnQWpFQUFJWVFXZzhMSUFBZ0FTa0RBQ0FDTWdFQVF2Ly8vLzhQZzRZUVdnOExJQUFnQVNrREFDQUNNd0VBaGhCYUR3QUxBQUFMREJJTElBSW9BZ2hCZkdvaUEwRUhTdzBCQWtBZ0EwRUJhdzRIRkJVVkV4TVRBQlFMREJJTElBSW9BZ2hCZkdvaUEwRUhTdzBBQWtBZ0EwRUJhdzRIRmhjWEZSVVZBQllMSUFBZ0FTZ0NBQ0FDS0FJQWRCQnRDdzhMSUFBZ0FTd0FBQ0FDTFFBQWRFRVlkRUVZZFJCc0R3c2dBQ0FCTEFBQUlBSXZBUUIwUVJoMFFSaDFFR3dQQ3lBQUlBRXNBQUFnQWlnQ0FIUkJHSFJCR0hVUWJBOExJQUFnQVMwQUFDQUNMUUFBZEVIL0FYRVFkZzhMSUFBZ0FTMEFBQ0FDTHdFQWRFSC9BWEVRZGc4TElBQWdBUzBBQUNBQ0tBSUFkRUgvQVhFUWRnOExJQUFnQVM0QkFDQUNMUUFBZEVFUWRFRVFkUkJ5RHdzZ0FDQUJMZ0VBSUFJdkFRQjBRUkIwUVJCMUVISVBDeUFBSUFFdUFRQWdBaWdDQUhSQkVIUkJFSFVRY2c4TElBQWdBUzhCQUNBQ0xRQUFkRUgvL3dOeEVIRVBDeUFBSUFFdkFRQWdBaThCQUhSQi8vOERjUkJ4RHdzZ0FDQUJMd0VBSUFJb0FnQjBRZi8vQTNFUWNROExJQUFnQVNrREFDQUNOUUlBaGhCYkR3c2dBQ0FCS1FNQUlBSXBBd0NHRUZzUEN5QUFJQUVwQXdBZ0FqVUNBSVlRV2c4TElBQWdBU2tEQUNBQ0tRTUFoaEJhRHdzZ0FDQUJLQUlBSUFJb0FnQjBFR1VQQ3lBQUlBRW9BZ0FnQWkwQUFIUVFaUThMSUFBZ0FTZ0NBQ0FDTHdFQWRCQmxEd3NnQUNBQktBSUFJQUlvQWdCMEVHMFBDeUFBSUFFb0FnQWdBaTBBQUhRUWJROExJQUFnQVNnQ0FDQUNMd0VBZEJCdEM4MEJBUUYvSUFBUXlRSWhBQ0FCS0FJSVFYeHFJZ05CQjAwRVFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRIQXdRRkFBRUdCd0lMSUFBZ0FpZ0NBQ0FCS0FJQWNSQmxEd3NnQUNBQ0tBSUFJQUVvQWdCeEVHMFBDeUFBSUFJdEFBQWdBUzBBQUhGQkdIUkJHSFVRYkE4TElBQWdBaTBBQUNBQkxRQUFjUkIyRHdzZ0FDQUNMd0VBSUFFdkFRQnhRUkIwUVJCMUVISVBDeUFBSUFJdkFRQWdBUzhCQUhFUWNROExJQUFnQWlrREFDQUJLUU1BZ3hCYkR3c2dBQ0FDS1FNQUlBRXBBd0NERUZvTEM4MEJBUUYvSUFBUXlRSWhBQ0FCS0FJSVFYeHFJZ05CQjAwRVFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRIQXdRRkFBRUdCd0lMSUFBZ0FpZ0NBQ0FCS0FJQWNoQmxEd3NnQUNBQ0tBSUFJQUVvQWdCeUVHMFBDeUFBSUFJdEFBQWdBUzBBQUhKQkdIUkJHSFVRYkE4TElBQWdBaTBBQUNBQkxRQUFjaEIyRHdzZ0FDQUNMd0VBSUFFdkFRQnlRUkIwUVJCMUVISVBDeUFBSUFJdkFRQWdBUzhCQUhJUWNROExJQUFnQWlrREFDQUJLUU1BaEJCYkR3c2dBQ0FDS1FNQUlBRXBBd0NFRUZvTEM4MEJBUUYvSUFBUXlRSWhBQ0FCS0FJSVFYeHFJZ05CQjAwRVFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRIQXdRRkFBRUdCd0lMSUFBZ0FpZ0NBQ0FCS0FJQWN4QmxEd3NnQUNBQ0tBSUFJQUVvQWdCekVHMFBDeUFBSUFJdEFBQWdBUzBBQUhOQkdIUkJHSFVRYkE4TElBQWdBaTBBQUNBQkxRQUFjeEIyRHdzZ0FDQUNMd0VBSUFFdkFRQnpRUkIwUVJCMUVISVBDeUFBSUFJdkFRQWdBUzhCQUhNUWNROExJQUFnQWlrREFDQUJLUU1BaFJCYkR3c2dBQ0FDS1FNQUlBRXBBd0NGRUZvTEN5NEFJQUFReVFJaEFDQUJLQUlJUVF4R0JFQWdBQUovUVFBZ0FTMEFBRVVOQUJvZ0FpMEFBRUVBUndzUWR3c0xNUUVCZnlBQUVNa0NJUU1nQVNnQ0NFRU1SZ1JBUVFFaEFDQURJQUV0QUFBRWZ5QUFCU0FDTFFBQVFRQkhDeEIzQ3d2ZUhBSUpmd0Y4SXdCQm9BSnJJZ1FrQUNBRVFjZ0Jha0VBUVFCQkFVRUFRUUJCQUJCRklnb2dBQ0FBS0FJQUtBSjRFUUFBRUk4QklBSWdBaWdDQUNnQ1JCRUFBQ0VESUFSQndBRnFJQUFRU3hEaEF5RUlJQVJCdUFGcUlBTVFTeERoQXlFR0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRkIxWDVxSWdWQkFVc0VRQ0FCUWFRQ1JnUkFJQVJCc0FGcUlBTWdBeWdDQUNnQ2xBRVJBQUFnQUNBQUtBSUFLQUtZQVJFQUFHd1E5UUVhSUFSQjJBQnFRUXhCQWtFQlFRQkJBRUVBRUVVYURBZ0xJQUFnQUNnQ0FDZ0NlQkVBQUJERkFTRUZBa0FnQWlBQ0tBSUFLQUo0RVFBQUVNVUJJZ0pCQVVjZ0JVRUNTSEpGQkVBZ0JpQUVRZGdBYWlBRklBTVFTMEVBRUE4UXNBb1EzQVFNQVFzZ0JVRUJSeUFDUVFKSWNnMEFJQVlnQXhCTEVOd0VJQWdnQkVIWUFHb2dBaUFBRUV0QkFCQVBFTEFLRU53RUlBb2dBeUFES0FJQUtBSjRFUUFBRUk4QklBSWhCUXNnQkVHd0FXb2dCUkQxQVNFSFFRQWhBaUFFUWRnQWFrRU1RUUpCQVVFQVFRQkJBQkJGSVFrZ0FVSHBmbW9pQzBFWlN3UkFJQUZCcEFKR0RRZ01DZ3NDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUxRUUZyRGhrVEVSUUlCd1lGQkFNTkRoa1pDUW9MREJrUkdSa1JBUUFDRWd0QkFDRUJJQVZCQUV3TkZ3TkFJQUFnQUNnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWh3UkFBQkJERVlFUUNBSElBRVFEeUFJSUFFUUR5QUdJQUVRRHhDb0JrRUJjeEIzQ3lBQlFRRnFJZ0VnQlVjTkFBc01Gd3NnQlVFQlNBMFdRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRMEJBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01GZ3NnQlVFQlNBMFZRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRenhBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01GUXNnQlVFQlNBMFVRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRemhBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01GQXNnQlVFQlNBMFRRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRelJBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01Fd3NnQlVFQlNBMFNRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRekJBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01FZ3NnQlVFQlNBMFJRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThReXhBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01FUXNnQlVFQlNBMFFRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThReWhBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01FQXNnQlVFQlNBMFBRUUFoQVFOQUFrQWdCaUFCRUE5QkFCQ25CZ1JBSUFnZ0FSQVBJUUlnQnlBQkVBOGlBeUFDS0FJSU5nSUlJQU1nQWlrREFEY0RBQXdCQ3dKQUlBQWdBQ2dDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaHdSQUFCQmVtb2lBa0VFU3cwQUFrQUNRQUpBSUFKQkFXc09CQU1BQXdFQ0N5QUdJQUVRRHlnQ0FFRi9SdzBDSUFnZ0FSQVBLQUlBUVlDQWdJQjRSdzBDSUFjZ0FSQVBRUUFRWlF3REN5QUdJQUVRRHlrREFFSi9VZzBCSUFnZ0FSQVBLUU1BUW9DQWdJQ0FnSUNBZ0g5U0RRRWdCeUFCRUE5Q0FCQmJEQUlMSUFZZ0FSQVBLQUlBUVg5SERRQWdDQ0FCRUE4b0FnQkJnSUIrUncwQUlBY2dBUkFQUVFBUVpRd0JDeUFFSUFnZ0FSQVBJQVlnQVJBUEVNa1FJQWNnQVJBUElnSWdCQ2dDQ0RZQ0NDQUNJQVFwQXdBM0F3QUxJQUZCQVdvaUFTQUZSdzBBQ3d3UEN5QUhRUUFRRHlBSVFRQVFEeUFHUVFBUUR4Q21CaEIzREFVTElBZEJBQkFQSUFoQkFCQVBJQVpCQUJBUEVLVUdFSGNNQkFzZ0IwRUFFQThnQ0VFQUVBOGdCa0VBRUE4UXBRWkJBWE1RZHd3REN5QUhRUUFRRHlBSVFRQVFEeUFHUVFBUUR4Q21Ca0VCY3hCM0RBSUxJQWRCQUJBUElBTVFTeUFJRUs4S0VIY01BUXNnQjBFQUVBOGdBeEJMSUFnUXJnb1Fkd3NnQ2lBSkVJOEJEQWdMSUFWQkFXc05CUXdFQ3lBRlFRRklEUVpCQUNFQkEwQWdCQ0FJSUFFUUR5QUdJQUVRRHhEZ0F5QUhJQUVRRHlJQ0lBUW9BZ2cyQWdnZ0FpQUVLUU1BTndNQUlBRkJBV29pQVNBRlJ3MEFDd3dHQ3lBRlFRRklEUVZCQUNFQkEwQWdCQ0FJSUFFUUR5QUdJQUVRRHhESUVDQUhJQUVRRHlJQ0lBUW9BZ2cyQWdnZ0FpQUVLUU1BTndNQUlBRkJBV29pQVNBRlJ3MEFDd3dGQ3lBRlFRRklEUVJCQUNFQkEwQWdCQ0FJSUFFUUR5QUdJQUVRRHhDa0JpQUhJQUVRRHlJQ0lBUW9BZ2cyQWdnZ0FpQUVLUU1BTndNQUlBRkJBV29pQVNBRlJ3MEFDd3dFQzBFQUlRRWdCVUVBVEEwREEwQWdBQ0FBS0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDSEJFQUFFRi9haUlEUVFwTERRVUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FEUVFOckRnZ0RCQVVHQVFJSENBQUxJQVlnQVJBUEt3TUFSQUFBQUFBQUFBQUFZZ1JBSUFjZ0FSQVBJQWdnQVJBUEt3TUFJQVlnQVJBUEt3TUFveEF0REFrTElBZ2dBUkFQS3dNQVJBQUFBQUFBQUFBQVpFRUJjMFVFUUNBSElBRVFEMFFBQUFBQUFBRHdmeEF0REFrTElBZ2dBUkFQS3dNQUlRd2dCeUFCRUE4aEF5QU1SQUFBQUFBQUFBQUFZMEVCYzBVRVFDQURSQUFBQUFBQUFQRC9FQzBNQ1FzZ0EwUUFBQUFBQUFENGZ4QXREQWdMSUFZZ0FSQVBRUUFRcHdZRVFDQUhJQUVRRDBILy8vLy9CeEJsREFnTEFrQWdCaUFCRUE4b0FnQkJmMGNOQUNBSUlBRVFEeWdDQUVHQWdJQ0FlRWNOQUNBSElBRVFEMEdBZ0lDQWVCQmxEQWdMSUFjZ0FSQVBJQWdnQVJBUEtBSUFJQVlnQVJBUEtBSUFiUkJsREFjTElBWWdBUkFQUVFBUXB3WWhDU0FISUFFUUR5RURJQWtFUUNBRFFYOFFiUXdIQ3lBRElBZ2dBUkFQS0FJQUlBWWdBUkFQS0FJQWJoQnREQVlMSUFZZ0FSQVBMUUFBUlFSQUlBY2dBUkFQUWY4QUVHd01CZ3NDUUNBR0lBRVFEeXdBQUVGL1J3MEFJQWdnQVJBUExBQUFRWUIvUncwQUlBY2dBUkFQUVlCL0VHd01CZ3NnQnlBQkVBOGdDQ0FCRUE4c0FBQWdCaUFCRUE4c0FBQnRRUmgwUVJoMUVHd01CUXNnQmlBQkVBOHRBQUJGSVFrZ0J5QUJFQThoQXlBSkJFQWdBMEgvQVJCMkRBVUxJQU1nQ0NBQkVBOHRBQUFnQmlBQkVBOHRBQUJ1RUhZTUJBc2dCaUFCRUE4dkFRQkZCRUFnQnlBQkVBOUIvLzhCRUhJTUJBc0NRQ0FHSUFFUUR5NEJBRUYvUncwQUlBZ2dBUkFQTGdFQVFZQ0Fma2NOQUNBSElBRVFEMEdBZ0g0UWNnd0VDeUFISUFFUUR5QUlJQUVRRHk0QkFDQUdJQUVRRHk0QkFHMUJFSFJCRUhVUWNnd0RDeUFHSUFFUUR5OEJBRVVoQ1NBSElBRVFEeUVESUFrRVFDQURRZi8vQXhCeERBTUxJQU1nQ0NBQkVBOHZBUUFnQmlBQkVBOHZBUUJ1RUhFTUFnc2dCaUFCRUE4UXJRb0VRQ0FISUFFUUQwTC8vLy8vLy8vLy8vOEFFRnNNQWdzQ1FDQUdJQUVRRHlrREFFSi9VZzBBSUFnZ0FSQVBLUU1BUW9DQWdJQ0FnSUNBZ0g5U0RRQWdCeUFCRUE5Q2dJQ0FnSUNBZ0lDQWZ4QmJEQUlMSUFjZ0FSQVBJQWdnQVJBUEtRTUFJQVlnQVJBUEtRTUFmeEJiREFFTElBWWdBUkFQRUswS0lRa2dCeUFCRUE4aEF5QUpCRUFnQTBKL0VGb01BUXNnQXlBSUlBRVFEeWtEQUNBR0lBRVFEeWtEQUlBUVdnc2dBVUVCYWlJQklBVkhEUUFMREFNTElBUkJzQUZxSUFBZ0FDZ0NBQ2dDbUFFUkFBQVE5UUVoQVNBRVFkZ0Fha0VNUVFKQkFVRUFRUUJCQUJCRkdpQUFJQUFvQWdBb0FwZ0JFUUFBUVFCS0JFQkJBQ0VDQTBCQkFDRUZSQUFBQUFBQUFBQUFJUXdnQXlBREtBSUFLQUtRQVJFQUFFRUFTZ1JBQTBBZ0RDQUlJQUFnQUNnQ0FDZ0NtQUVSQUFBZ0JXd2dBbW9RRHlzREFDQUdJQVVRRHlzREFLS2dJUXdnQlVFQmFpSUZJQU1nQXlnQ0FDZ0NrQUVSQUFCSURRQUxDeUFCSUFJUUR5QU1FQzBnQWtFQmFpSUNJQUFnQUNnQ0FDZ0NtQUVSQUFCSURRQUxDeUFLSUFRZ0FDQUFLQUlBS0FLQUFSRUFBRUVDSUFBZ0FDZ0NBQ2dDbUFFUkFBQkJBRUVBUVFBUVJTSUJFSThCSUFFUU5Sb01BZ3NnQkVHd0FXb2dBeUFES0FJQUtBS1VBUkVBQUJEMUFTRUJRUUFoQWlBRVFkZ0Fha0VNUVFKQkFVRUFRUUJCQUJCRkdpQURJQU1vQWdBb0FwUUJFUUFBUVFCS0JFQURRRUVBSVFWRUFBQUFBQUFBQUFBaERDQUFJQUFvQWdBb0FwQUJFUUFBUVFCS0JFQURRQ0FNSUFnZ0JSQVBLd01BSUFZZ0F5QURLQUlBS0FLWUFSRUFBQ0FDYkNBRmFoQVBLd01Bb3FBaERDQUZRUUZxSWdVZ0FDQUFLQUlBS0FLUUFSRUFBRWdOQUFzTElBRWdBaEFQSUF3UUxTQUNRUUZxSWdJZ0F5QURLQUlBS0FLVUFSRUFBRWdOQUFzTElBb2dCQ0FBSUFBb0FnQW9Bb0FCRVFBQVFRSWdBeUFES0FJQUtBS1VBUkVBQUVFQVFRQkJBQkJGSWdFUWp3RWdBUkExR2d3QkN5QUFJQUFvQWdBb0FwZ0JFUUFBUVFCS0JFQkJBQ0VIQTBCQkFDRUJJQU1nQXlnQ0FDZ0NsQUVSQUFCQkFFb0VRQU5BSUFNZ0F5Z0NBQ2dDbUFFUkFBQWhDU0FBSUFBb0FnQW9BcGdCRVFBQUlRSkVBQUFBQUFBQUFBQWhERUVBSVFVZ0NVRUFTZ1JBQTBBZ0RDQUlJQUlnQld3Z0Iyb1FEeXNEQUNBR0lBTWdBeWdDQUNnQ21BRVJBQUFnQVd3Z0JXb1FEeXNEQUtLZ0lRd2dBeUFES0FJQUtBS1lBUkVBQUNFSklBQWdBQ2dDQUNnQ21BRVJBQUFoQWlBRlFRRnFJZ1VnQ1VnTkFBc0xJQVJCc0FGcUlBRWdBbXdnQjJvUUR5QU1FQzBnQVVFQmFpSUJJQU1nQXlnQ0FDZ0NsQUVSQUFCSURRQUxDeUFIUVFGcUlnY2dBQ0FBS0FJQUtBS1lBUkVBQUVnTkFBc0xJQW9nQkNBQUlBQW9BZ0FvQW5nUkFBQWlBU0FCS0FJQUtBSWNFUUFBUVFKQkFDQURJQU1vQWdBb0FwUUJFUUFBSUFBZ0FDZ0NBQ2dDbUFFUkFBQkJBQkJGSWdFUWp3RWdBUkExR2d0QjlBQVFSaUlDSUFSQnNBRnFJQW9Rb3dZYUlBSWdBQ0FBS0FJQUtBSUFFUUFBSUFJb0FnQW9BZ1FSQVFBTElBUkIyQUJxRURVYUlBb1FOUm9nQkVHZ0Ftb2tBQ0FDQ3dRQUlBQUxCd0FnQUNnQ2JBc0lBQ0FBTFFDZ0FRc0tBQ0FBUVFFNkFLQUJDd2dBSUFCQmtBRnFDdzBBSUFCQmtBRnFJQUVRNkFJTENBQWdBQkMyQ2hvTENBQWdBQkM2Q2hvTDZBTUNCWDhCZlNNQVFTQnJJZ1VrQUNBQkVDTWFJQUlvQWdBaENDQUJFRHdoQmlBRlFRQTZBQjhDUUFKQUlBWkZEUUFnQVNBSUlBWVFOQ0lKRUJFb0FnQWlCMFVOQUFOQUlBY29BZ0FpQjBVTkFTQUlJQWNvQWdSSEJFQWdCeWdDQkNBR0VEUWdDVWNOQWdzZ0FSQkRJQWRCQ0dvZ0FoQ0xBMFVOQUFzTUFRc2dCVUVRYWlBQklBaEIrQTBnQXlBRUVOQUpJQUVRSXlnQ0FDRUNJQUVRUXlFREFrQWdCZ1JBSUFNcUFnQWdCck9VSUFKQkFXcXpYVUVCY3cwQkN5QUZJQVlRdWdGQkFYTWdCa0VCZEhJMkFnd2dCUUovSUFFUUl5Z0NBRUVCYXJNZ0FSQkRLZ0lBbFkwaUNrTUFBSUJQWFNBS1F3QUFBQUJnY1FSQUlBcXBEQUVMUVFBTE5nSUlJQUVnQlVFTWFpQUZRUWhxRUZJb0FnQVEwd1FnQ0NBQkVEd2lCaEEwSVFrTEFrQWdBU0FKRUJFb0FnQWlBa1VFUUNBRktBSVFJQUZCQ0dvaUFpZ0NBRFlDQUNBQ0lBVW9BaEEyQWdBZ0FTQUpFQkVnQWpZQ0FDQUZLQUlRS0FJQVJRMEJJQVVvQWhBaEFpQUJJQVVvQWhBb0FnQW9BZ1FnQmhBMEVCRWdBallDQUF3QkN5QUZLQUlRSUFJb0FnQTJBZ0FnQWlBRktBSVFOZ0lBQ3lBRlFSQnFFRjhoQnlBQkVDTWlBU0FCS0FJQVFRRnFOZ0lBSUFWQkFUb0FIeUFGUVJCcUVMMEpDeUFBSUFWQkVHb2dCeEF4SUFWQkgyb1FvZ0VnQlVFZ2FpUUFDd2dBSUFBUXV3b2FDd29BSUFCQkZHb1F6UTRMQ2dBZ0FFRVVhaERPRGdzS0FDQUFRUlJxRU04T0N3b0FJQUJCRkdvUTB3NExDZ0FnQUVFVWFoRFNEZ3NLQUNBQVFSUnFFSVFHQ3dvQUlBQkJGR29RMEE0TENnQWdBRUVVYWhEV0Rnc0tBQ0FBUVJScUVOY09Dd29BSUFCQkZHb1EyQTRMQndBZ0FDMEFHQXNNQUNBQVFSUnFJQUVRandFTENBQWdBQkM5Q2hvTHBnRUJBWDhDUUNBQkxRQUVCRUFnQVVFQUlBQWdBU2dDQUNnQ0tCRUhBRVVOQVFzZ0FTQUFFT0lEQWtBZ0FTMEFCd1JBSUFBb0FoZ2lBaUFCSUFJb0FnQW9BZ2dSQVFBZ0FDZ0NGQ0lDSUFFZ0FpZ0NBQ2dDQ0JFQkFBd0JDeUFBS0FJVUlnSWdBU0FDS0FJQUtBSUlFUUVBSUFBb0FoZ2lBaUFCSUFJb0FnQW9BZ2dSQVFBTElBRVE4d0lnQVMwQUJrVU5BQ0FCUVFJZ0FDQUJLQUlBS0FJb0VRY0FHZ3NMWlFFQmZ3SkFJQUV0QUFRRVFDQUJRUUFnQUNBQktBSUFLQUlrRVFjQVJRMEJDeUFBS0FJWUJFQWdBU0FBRU9JRElBQW9BaGdpQWlBQklBSW9BZ0FvQWdnUkFRQWdBUkR6QWdzZ0FTMEFCa1VOQUNBQlFRSWdBQ0FCS0FJQUtBSWtFUWNBR2dzTDdBRUJBWDhDUUNBQkxRQUVCRUFnQVVFQUlBQWdBU2dDQUNnQ0lCRUhBRVVOQVFzZ0FTQUFFT0lEQWtBZ0FTMEFCd1JBSUFBb0Fod2lBZ1JBSUFJZ0FTQUNLQUlBS0FJSUVRRUFDeUFBS0FJVUlnSUVRQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBQ2dDR0NJQ1JRMEJJQUlnQVNBQ0tBSUFLQUlJRVFFQURBRUxJQUFvQWhnaUFnUkFJQUlnQVNBQ0tBSUFLQUlJRVFFQUN5QUFLQUlVSWdJRVFDQUNJQUVnQWlnQ0FDZ0NDQkVCQUFzZ0FDZ0NIQ0lDUlEwQUlBSWdBU0FDS0FJQUtBSUlFUUVBQ3lBQkVQTUNJQUV0QUFaRkRRQWdBVUVDSUFBZ0FTZ0NBQ2dDSUJFSEFCb0xDK0lCQVFGL0FrQWdBUzBBQkFSQUlBRkJBQ0FBSUFFb0FnQW9BaGdSQndCRkRRRUxJQUVnQUJEaUF3SkFJQUV0QUFjRVFDQUFLQUp3SWdJRVFDQUNJQUVnQWlnQ0FDZ0NDQkVCQUFzZ0FDZ0NiQ0lDQkVBZ0FpQUJJQUlvQWdBb0FnZ1JBUUFMSUFBb0FtZ2lBaUFCSUFJb0FnQW9BZ2dSQVFBTUFRc2dBQ2dDYUNJQ0lBRWdBaWdDQUNnQ0NCRUJBQ0FBS0FKc0lnSUVRQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBQ2dDY0NJQ1JRMEFJQUlnQVNBQ0tBSUFLQUlJRVFFQUN5QUJFUE1DSUFFdEFBWkZEUUFnQVVFQ0lBQWdBU2dDQUNnQ0dCRUhBQm9MQzAwQkFYOGpBRUVRYXlJQkpBQWdBQkRJRHlBQVFRaHFFTDBISUFGQkFEWUNEQ0FBUVF4cUlBRkJER29RclFJZ0FVR0FnSUQ4QXpZQ0NDQUFRUkJxSUFGQkNHb1FyUUlnQVVFUWFpUUFDNkFFQVFSL0l3QkJFR3NpQWlRQUFrQWdBUzBBQkFSQUlBRkJBQ0FBSUFFb0FnQW9BaHdSQndCRkRRRUxJQUVnQUJEaUF3SkFBa0FnQVMwQUJ3UkFJQUpCQ0dvZ0FFSHdBR29pQlJBeUVMOEtJQUlnQlJEQkNpQUNRUWhxSUFJUXdBcEZEUUVnQWtFSWFoRGRCeWdDQUNJRElBRWdBeWdDQUNnQ0NCRUJBQU5BQW45QkFTQUJMUUFGUlEwQUdrRUJJQUpCQ0dvUTNRY29BZ0FnQlNnQ0FDZ0NBRVlOQUJvZ0FVRUJJQUFnQVNnQ0FDZ0NIQkVIQUFzaEF3TkFBa0FnQWlBQ1FRaHFJZ1FwQWdBM0FnQWdCRUVFYWhDK0Nob2dBaUFGRU1FS0lBSkJDR29nQWhEQUNrVU5BQ0FDUVFocUVOMEhLQUlBSWdRZ0FTQUVLQUlBS0FJSUVRRUFJQU5CQVhFaEJFRUFJUU1nQkVVTkFRd0NDd3NMSUFFUTh3SWdBMEVCY1EwQ0RBTUxJQUlnQUVId0FHb2lCUkJBTmdJSUlBSWdCUkF5TmdJQUlBSkJDR29nQWhBZVJRMEFJQUlvQWdnb0FnQWlBeUFCSUFNb0FnQW9BZ2dSQVFBRFFBSi9RUUVnQVMwQUJVVU5BQnBCQVNBQ0tBSUlLQUlBSUFVUWtBRW9BZ0JHRFFBYUlBRkJBU0FBSUFFb0FnQW9BaHdSQndBTElRTURRQUpBSUFKQkNHb1F6Z0VhSUFJZ0JSQXlOZ0lBSUFKQkNHb2dBaEFlUlEwQUlBSW9BZ2dvQWdBaUJDQUJJQVFvQWdBb0FnZ1JBUUFnQTBFQmNTRUVRUUFoQXlBRVJRMEJEQUlMQ3dzZ0FSRHpBaUFEUVFGeERRRU1BZ3NnQVJEekFnc2dBUzBBQmtVTkFDQUJRUUlnQUNBQktBSUFLQUljRVFjQUdnc2dBa0VRYWlRQUMxMEJBWDhDUUNBQkxRQUVCRUFnQVVFQUlBQWdBU2dDQUNnQ0ZCRUhBRVVOQVFzZ0FTQUFFT0lESUFBb0FuQWlBaUFCSUFJb0FnQW9BZ2dSQVFBZ0FSRHpBaUFCTFFBR1JRMEFJQUZCQWlBQUlBRW9BZ0FvQWhRUkJ3QWFDd3Y3QVFFQmZ3SkFBa0FnQVMwQUJBUkFJQUZCQUNBQUlBRW9BZ0FvQWhBUkJ3QkZEUUVMSUFFZ0FCRGlBd0pBSUFFdEFBY0VRQ0FBS0FKMElnSUVRQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBUzBBQlFSQUlBRkJBU0FBSUFFb0FnQW9BaEFSQndCRkRRUUxJQUFvQW5BaUFrVU5BU0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBd0JDeUFBS0FKd0lnSUVRQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBUzBBQlFSQUlBRkJBU0FBSUFFb0FnQW9BaEFSQndCRkRRTUxJQUFvQW5RaUFrVU5BQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBUkR6QWlBQkxRQUdSUTBBSUFGQkFpQUFJQUVvQWdBb0FoQVJCd0FhQ3c4TElBRVE4d0lMRVFBZ0FTQUFJQUVvQWdBb0Fnd1JBUUFMRVFBZ0FTQUFJQUVvQWdBb0FnZ1JBUUFMTFFFQmZ5TUFRUkJySWdFa0FDQUFFTVFLSUFGQkFEWUNEQ0FBUVFocUlBRkJER29Rd3dvZ0FVRVFhaVFBQzhVQkFRTi9Jd0JCRUdzaUF5UUFJQUFvQWdRaEFnSi9Ba0FDUUNBQUtBSUFFRVFRNFFSQkFVY05BQ0FBS0FJQUVFUWdBMEVNYWhEakIwVU5BQ0FES0FJTUlnUU5BU0FDSUFBb0FnZ29BZ0FpQUNBQUtBSUFLQUlBRVFBQVFiaU5DVUgwaWdsQjBvc0pRUUFnQWlnQ0FDZ0NvQUVSQWdCQkFBd0NDeUFDSUFBb0FnZ29BZ0FpQUNBQUtBSUFLQUlBRVFBQVFlcU1DVUgwaWdsQjBvc0pRUUFnQWlnQ0FDZ0NwQUVSQWdCQkFBd0JDeUFCSUFRMkFnQkJBUXNoQVNBRFFSQnFKQUFnQVF1akFRRUJmeUFBS0FJRUlRSUNmd0pBSUFBb0FnQVFSQkRoQkVFQlJ3MEFJQUFvQWdBUVJDQUJFT01IUlEwQVFRRWdBU2dDQUVFQVNnMEJHaUFDSUFBb0FnZ29BZ0FpQUNBQUtBSUFLQUlBRVFBQVFkbU1DVUhFaWdsQjBvc0pRUUFnQWlnQ0FDZ0NvQUVSQWdCQkFBOExJQUlnQUNnQ0NDZ0NBQ0lBSUFBb0FnQW9BZ0FSQUFCQjZvd0pRY1NLQ1VIU2l3bEJBQ0FDS0FJQUtBS2tBUkVDQUVFQUN3di9CZ0VDZnlNQVFlQUFheUlESkFBZ0F5QUNOZ0pjQWtBQ1FDQUNJQUlvQWdBb0FqZ1JBQUFpQkEwQUlBSWdBaWdDQUNnQ0dCRUFBQ0lDUlEwQklBTWdBaUFDS0FJQUtBSzhBUkVBQUJCQU5nSklJQU1nQWlBQ0tBSUFLQUs4QVJFQUFCQXlOZ0k0SUFOQnlBQnFJQU5CT0dvUUhrVU5BUU5BSUFNb0FrZ29BZ0FpQkNBRUtBSUFLQUk0RVFBQUlnUU5BU0FEUWNnQWFoQm1HaUFESUFJZ0FpZ0NBQ2dDdkFFUkFBQVFNallDT0NBRFFjZ0FhaUFEUVRocUVCNE5BQXNNQVFzZ0F5QUJFSXdDTmdKWUlBTWdBUkJoTmdKSUlBTkIyQUJxSUFOQnlBQnFFQjVGRFFBRFFDQURJQUEyQWt3Z0F5QURRZHdBYWpZQ1VDQURJQU5CMkFCcU5nSklJQU1nQURZQ1BDQURJQU5CM0FCcU5nSkFJQU1nQTBIWUFHbzJBamdnQXlBQU5nSXNJQU1nQTBIY0FHbzJBakFnQXlBRFFkZ0FhallDS0NBRElBQTJBaHdnQXlBRFFkd0FhallDSUNBRElBTkIyQUJxTmdJWUlBTWdBRFlDRUNBRElBTkIzQUJxTmdJVUlBTkJBRFlDRENBRFFRQTJBZ2dDUUFKQUlBTkIyQUJxRUVRb0FnQkJibW9pQWtFUFN3MEFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUpCQVdzT0R3RUpDUWtKQ1FrSkFnTUVCUVlIQ0FBTElBTkJ5QUJxUVppS0NSRGdCMFVOQ1NBRVFRRTZBQ0VNQ1FzZ0EwSElBR3BCcElvSkVPQUhSUTBJSUFSQ0FEY0NOQ0FFUVFFNkFDSU1DQXNnQTBISUFHcEJzSW9KRU9BSFJRMEhJQVJCZnhEZkJ3d0hDeUFEUVRocUlBTkJER29ROVJCRkRRWWdCQ0FES0FJTUVOOEhEQVlMSUFOQkVHcEIxb29KRU1ZRklBTkJLR3BCMW9vSklBTkJDR29RclFaRkRRVWdCQ0FES0FJSUVLd0dEQVVMSUFOQkVHcEI1WW9KRU1ZRklBTkJLR3BCNVlvSklBTkJDR29RclFaRkRRUWdCQ0FES0FJSUVNVUtEQVFMSUFOQkVHcEI5SW9KRU1ZRklBTkJHR29nQTBFSWFoRDBFRVVOQXlBRUlBTW9BZ2cyQWpBTUF3c2dBMEVRYWtHSGl3a1F4Z1VnQTBFb2FrR0hpd2tnQTBFSWFoQ3RCa1VOQWlBREtBSUlJUUlnQkVFQU9nQWlJQVFnQWpZQ05Bd0NDeUFEUVJCcVFaS0xDUkRHQlNBRFFTaHFRWktMQ1NBRFFRaHFFSzBHUlEwQklBTW9BZ2doQWlBRVFRQTZBQ0lnQkNBQ05nSTREQUVMSUFBZ0F5Z0NYQ0lDSUFJb0FnQW9BZ0FSQUFCQm9Jd0pRZEtMQ1VIU2l3bEJBQ0FBS0FJQUtBS2tBUkVDQUFzZ0EwSFlBR29ROFFFZ0F5QUJFR0UyQWtnZ0EwSFlBR29nQTBISUFHb1FIZzBBQ3dzZ0EwSGdBR29rQUF2OEFRRURmeU1BUVJCcklnTWtBQUpBSUFJZ0FpZ0NBQ2dDS0JFQUFDSUVSUTBBSUFNZ0FSQ01BallDQ0NBRElBRVFZVFlDQUNBRFFRaHFJQU1RSGtVTkFBTkFBa0FnQTBFSWFoQkVFT0VFUVFGT0JFQWdBQ0FDSUFJb0FnQW9BZ0FSQUFCQm9Jc0pRZEtMQ1VIU2l3bEJBQ0FBS0FJQUtBS2tBUkVDQUF3QkN3SkFJQU5CQ0dvUVJDZ0NBQ0lGUVFKSEJFQWdCVUVIUncwQklBUkJBVG9BSEF3Q0N5QUVRUUU2QUIwTUFRc2dBQ0FDSUFJb0FnQW9BZ0FSQUFCQis0c0pRZEtMQ1VIU2l3bEJBQ0FBS0FJQUtBS2tBUkVDQUFzZ0EwRUlhaER4QVNBRElBRVFZVFlDQUNBRFFRaHFJQU1RSGcwQUN3c2dBMEVRYWlRQUMvd0JBUU4vSXdCQkVHc2lBeVFBQWtBZ0FpQUNLQUlBS0FJa0VRQUFJZ1JGRFFBZ0F5QUJFSXdDTmdJSUlBTWdBUkJoTmdJQUlBTkJDR29nQXhBZVJRMEFBMEFDUUNBRFFRaHFFRVFRNFFSQkFVNEVRQ0FBSUFJZ0FpZ0NBQ2dDQUJFQUFFR2dpd2xCMG9zSlFkS0xDVUVBSUFBb0FnQW9BcVFCRVFJQURBRUxBa0FnQTBFSWFoQkVLQUlBSWdWQkFrY0VRQ0FGUVFkSERRRWdCRUVCT2dCMURBSUxJQVJCQVRvQWRnd0JDeUFBSUFJZ0FpZ0NBQ2dDQUJFQUFFSFRpd2xCMG9zSlFkS0xDVUVBSUFBb0FnQW9BcVFCRVFJQUN5QURRUWhxRVBFQklBTWdBUkJoTmdJQUlBTkJDR29nQXhBZURRQUxDeUFEUVJCcUpBQUxTZ0VDZnlBQ0VOOEVSUVJBSUFJb0FnUWlBeUFDS0FJQUlnUVE0QVFnQVNBRElBUVF4d29nQWhBYktBSUFJUUVnQUJBYklnQWdBU0FBS0FJQWFqWUNBQ0FDRUJ0QkFEWUNBQXNMUGdFQmZ5QUFLQUlNSWdKQkJIRUVmeUFBSUFFUUh4RGlCeUFBSUFFUXdRUWdBQ2dDREFVZ0FndEJBbkVFUUNBQkVCTkJxUFVSS0FJQUVNOEdHZ3NMTWdFQmZ5TUFRUkJySWdJa0FDQUNJQUFRWVRZQ0FDQUFJQUpCQ0dvZ0FoQm5LQUlBSUFFUStSQWdBa0VRYWlRQUlBQUxSZ0VDZnlNQVFSQnJJZ01rQUJES0NpRUVJQUFvQWlnZ0FoRGlCaUVBSUFFUXl3b2hBU0FESUFBMkFnd2dBeUFCTmdJSUlBUWdBMEVJYWhESkNpQURRUkJxSkFBZ0JBczJBUUovSXdCQkVHc2lBaVFBSUFGQkFSRGVCeUlEUVFBMkFnQWdBQ0FESUFKQkNHb2dBVUVCRUprQkVKRUJHaUFDUVJCcUpBQUxPZ0VDZnlNQVFSQnJJZ0VrQUJES0NpRUNJQUFReXdvaEFDQUJRUUEyQWd3Z0FTQUFOZ0lJSUFJZ0FVRUlhaERKQ2lBQlFSQnFKQUFnQWd1T0FRRUNmd0pBSUFBb0FnUWlBVVVOQUNBQklBRW9BZ0FvQXNBQkVRQUFFQlpCQUV3TkFDQUFLQUlFSWdFZ0FTZ0NBQ2dDd0FFUkFBQkJBQkFSS0FJQUlnRWdBU2dDQUNnQ0ZCRUFBRVVOQUNBQUtBSUVJZ0FnQUNnQ0FDZ0N3QUVSQUFCQkFCQVJLQUlBSWdBZ0FDZ0NBQ2dDRkJFQUFCQkxRUUFRRHlJQVFRQWdBQ2dDQ0VFSVJoc2hBZ3NnQWdzL0FRRi9JQUFvQWdBRVFDQUFFQlloQVNBQUVMSUtJQUFnQVJESUJTQUFFRHNhSUFBb0FnQWFJQUFRdHdJYUlBQVFHMEVBTmdJQUlBQkNBRGNDQUFzTFB3RUNmeU1BUVJCcklnTWtBQ0FBRURzaEJBTkFJQVFnQUNnQ0JDQUNFSmNESUFBZ0FDZ0NCRUVFYWpZQ0JDQUJRWDlxSWdFTkFBc2dBMEVRYWlRQUN3Y0FJQUFSREFBTENRQWdBU0FBRVFVQUN3WUFJQUFrQUFzUUFDTUFJQUJyUVhCeElnQWtBQ0FBQ3dRQUl3QUxSQUlCZndGK0lBRkMvLy8vLy8vL1A0TWhBd0ovSUFGQ01JaW5RZi8vQVhFaUFrSC8vd0ZIQkVCQkJDQUNEUUVhUVFKQkF5QUFJQU9FVUJzUEN5QUFJQU9FVUFzTHpRTURBMzhCZmdWOEFrQUNRQUpBQWtBZ0FMMGlCRUlBV1FSQUlBUkNJSWluSWdGQi8vOC9TdzBCQ3lBRVF2Ly8vLy8vLy8vLy93Q0RVQVJBUkFBQUFBQUFBUEMvSUFBZ0FLS2pEd3NnQkVKL1ZRMEJJQUFnQUtGRUFBQUFBQUFBQUFDakR3c2dBVUgvLzcvL0Iwc05Ba0dBZ01EL0F5RUNRWUY0SVFNZ0FVR0FnTUQvQTBjRVFDQUJJUUlNQWdzZ0JLY05BVVFBQUFBQUFBQUFBQThMSUFCRUFBQUFBQUFBVUVPaXZTSUVRaUNJcHlFQ1FjdDNJUU1MSUFSQy8vLy8vdytESUFKQjRyNGxhaUlCUWYvL1AzRkJuc0dhL3dOcXJVSWdob1MvUkFBQUFBQUFBUEMvb0NJQUlBQWdBRVFBQUFBQUFBRGdQNktpSWdXaHZVS0FnSUNBY0lPL0lnWkVBQUFnWlVjVjl6K2lJZ2NnQXlBQlFSUjJhcmNpQ0tBaUNTQUhJQWdnQ2FHZ0lBQWdCcUVnQmFFZ0FDQUFSQUFBQUFBQUFBQkFvS01pQUNBRklBQWdBS0lpQlNBRm9pSUFJQUFnQUVTZnhualFDWnJEUDZKRXIzaU9IY1Z4ekQrZ29rUUUrcGVabVpuWlA2Q2lJQVVnQUNBQUlBQkVSRkkrM3hMeHdqK2lSTjREeTVaa1JzYy9vS0pFV1pNaWxDUkowaitnb2tTVFZWVlZWVlhsUDZDaW9LQ2lvQ0lBUkFBQUlHVkhGZmMvb2lBQUlBYWdSQUNpN3k3OEJlYzlvcUNnb0NFQUN5QUFDN1lIQVFsL0lBQWdBQ2dDQkNJR1FYaHhJZ05xSVFRZ0JrRURjU0lDUVFGR1FlRFpGQ2dDQUNJSklBQkxjaG9DUUNBQ1JRUkFRUUFoQWlBQlFZQUNTUTBCSUFNZ0FVRUVhazhFUUNBQUlRSWdBeUFCYTBHdzNSUW9BZ0JCQVhSTkRRSUxRUUFQQ3dKQUlBTWdBVThFUUNBRElBRnJJZ0pCRUVrTkFTQUFJQVpCQVhFZ0FYSkJBbkkyQWdRZ0FDQUJhaUlCSUFKQkEzSTJBZ1FnQkNBRUtBSUVRUUZ5TmdJRUlBRWdBaERUQ2d3QkMwRUFJUUlnQkVIbzJSUW9BZ0JHQkVCQjNOa1VLQUlBSUFOcUlnTWdBVTBOQWlBQUlBWkJBWEVnQVhKQkFuSTJBZ1FnQUNBQmFpSUNJQU1nQVdzaUFVRUJjallDQkVIYzJSUWdBVFlDQUVIbzJSUWdBallDQUF3QkN5QUVRZVRaRkNnQ0FFWUVRRUhZMlJRb0FnQWdBMm9pQXlBQlNRMENBa0FnQXlBQmF5SUZRUkJQQkVBZ0FDQUdRUUZ4SUFGeVFRSnlOZ0lFSUFBZ0FXb2lBU0FGUVFGeU5nSUVJQUFnQTJvaUFpQUZOZ0lBSUFJZ0FpZ0NCRUYrY1RZQ0JBd0JDeUFBSUFaQkFYRWdBM0pCQW5JMkFnUWdBQ0FEYWlJQklBRW9BZ1JCQVhJMkFnUkJBQ0VGUVFBaEFRdEI1TmtVSUFFMkFnQkIyTmtVSUFVMkFnQU1BUXNnQkNnQ0JDSUZRUUp4RFFFZ0JVRjRjU0FEYWlJSElBRkpEUUVnQnlBQmF5RUtBa0FnQlVIL0FVMEVRQ0FFS0FJSUlnTWdCVUVEZGlJRlFRTjBRZmpaRkdwSEdpQURJQVFvQWd3aUFrWUVRRUhRMlJSQjBOa1VLQUlBUVg0Z0JYZHhOZ0lBREFJTElBTWdBallDRENBQ0lBTTJBZ2dNQVFzZ0JDZ0NHQ0VJQWtBZ0JDQUVLQUlNSWdOSEJFQWdDU0FFS0FJSUlnSk5CRUFnQWlnQ0RCb0xJQUlnQXpZQ0RDQURJQUkyQWdnTUFRc0NRQ0FFUVJScUlnVW9BZ0FpQWcwQUlBUkJFR29pQlNnQ0FDSUNEUUJCQUNFRERBRUxBMEFnQlNFSklBSWlBMEVVYWlJRktBSUFJZ0lOQUNBRFFSQnFJUVVnQXlnQ0VDSUNEUUFMSUFsQkFEWUNBQXNnQ0VVTkFBSkFJQVFnQkNnQ0hDSUNRUUowUVlEY0ZHb2lCU2dDQUVZRVFDQUZJQU0yQWdBZ0F3MEJRZFRaRkVIVTJSUW9BZ0JCZmlBQ2QzRTJBZ0FNQWdzZ0NFRVFRUlFnQ0NnQ0VDQUVSaHRxSUFNMkFnQWdBMFVOQVFzZ0F5QUlOZ0lZSUFRb0FoQWlBZ1JBSUFNZ0FqWUNFQ0FDSUFNMkFoZ0xJQVFvQWhRaUFrVU5BQ0FESUFJMkFoUWdBaUFETmdJWUN5QUtRUTlOQkVBZ0FDQUdRUUZ4SUFkeVFRSnlOZ0lFSUFBZ0Iyb2lBU0FCS0FJRVFRRnlOZ0lFREFFTElBQWdCa0VCY1NBQmNrRUNjallDQkNBQUlBRnFJZ0VnQ2tFRGNqWUNCQ0FBSUFkcUlnSWdBaWdDQkVFQmNqWUNCQ0FCSUFvUTB3b0xJQUFoQWdzZ0Fnc2NBQ0FBSUFFb0FnZ2dCUkMxQWdSQUlBRWdBaUFESUFRUTZBY0xDemtBSUFBZ0FTZ0NDQ0FGRUxVQ0JFQWdBU0FDSUFNZ0JCRG9CdzhMSUFBb0FnZ2lBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVDQUF1WEFnRUdmeUFBSUFFb0FnZ2dCUkMxQWdSQUlBRWdBaUFESUFRUTZBY1BDeUFCTFFBMUlRY2dBQ2dDRENFR0lBRkJBRG9BTlNBQkxRQTBJUWdnQVVFQU9nQTBJQUJCRUdvaUNTQUJJQUlnQXlBRUlBVVE1Z2NnQnlBQkxRQTFJZ3B5SVFjZ0NDQUJMUUEwSWd0eUlRZ0NRQ0FHUVFKSURRQWdDU0FHUVFOMGFpRUpJQUJCR0dvaEJnTkFJQUV0QURZTkFRSkFJQXNFUUNBQktBSVlRUUZHRFFNZ0FDMEFDRUVDY1EwQkRBTUxJQXBGRFFBZ0FDMEFDRUVCY1VVTkFnc2dBVUVBT3dFMElBWWdBU0FDSUFNZ0JDQUZFT1lISUFFdEFEVWlDaUFIY2lFSElBRXRBRFFpQ3lBSWNpRUlJQVpCQ0dvaUJpQUpTUTBBQ3dzZ0FTQUhRZjhCY1VFQVJ6b0FOU0FCSUFoQi93RnhRUUJIT2dBMEM1UUJBQ0FBSUFFb0FnZ2dCQkMxQWdSQUlBRWdBaUFERU9jSER3c0NRQ0FBSUFFb0FnQWdCQkMxQWtVTkFBSkFJQUlnQVNnQ0VFY0VRQ0FCS0FJVUlBSkhEUUVMSUFOQkFVY05BU0FCUVFFMkFpQVBDeUFCSUFJMkFoUWdBU0FETmdJZ0lBRWdBU2dDS0VFQmFqWUNLQUpBSUFFb0FpUkJBVWNOQUNBQktBSVlRUUpIRFFBZ0FVRUJPZ0EyQ3lBQlFRUTJBaXdMQy9VQkFDQUFJQUVvQWdnZ0JCQzFBZ1JBSUFFZ0FpQURFT2NIRHdzQ1FDQUFJQUVvQWdBZ0JCQzFBZ1JBQWtBZ0FpQUJLQUlRUndSQUlBRW9BaFFnQWtjTkFRc2dBMEVCUncwQ0lBRkJBVFlDSUE4TElBRWdBellDSUFKQUlBRW9BaXhCQkVZTkFDQUJRUUE3QVRRZ0FDZ0NDQ0lBSUFFZ0FpQUNRUUVnQkNBQUtBSUFLQUlVRVFJQUlBRXRBRFVFUUNBQlFRTTJBaXdnQVMwQU5FVU5BUXdEQ3lBQlFRUTJBaXdMSUFFZ0FqWUNGQ0FCSUFFb0FpaEJBV28yQWlnZ0FTZ0NKRUVCUncwQklBRW9BaGhCQWtjTkFTQUJRUUU2QURZUEN5QUFLQUlJSWdBZ0FTQUNJQU1nQkNBQUtBSUFLQUlZRVFnQUN3dW9CQUVFZnlBQUlBRW9BZ2dnQkJDMUFnUkFJQUVnQWlBREVPY0hEd3NDUUNBQUlBRW9BZ0FnQkJDMUFnUkFBa0FnQWlBQktBSVFSd1JBSUFFb0FoUWdBa2NOQVFzZ0EwRUJSdzBDSUFGQkFUWUNJQThMSUFFZ0F6WUNJQ0FCS0FJc1FRUkhCRUFnQUVFUWFpSUZJQUFvQWd4QkEzUnFJUWdnQVFKL0FrQURRQUpBSUFVZ0NFOE5BQ0FCUVFBN0FUUWdCU0FCSUFJZ0FrRUJJQVFRNWdjZ0FTMEFOZzBBQWtBZ0FTMEFOVVVOQUNBQkxRQTBCRUJCQVNFRElBRW9BaGhCQVVZTkJFRUJJUWRCQVNFR0lBQXRBQWhCQW5FTkFRd0VDMEVCSVFjZ0JpRURJQUF0QUFoQkFYRkZEUU1MSUFWQkNHb2hCUXdCQ3dzZ0JpRURRUVFnQjBVTkFSb0xRUU1MTmdJc0lBTkJBWEVOQWdzZ0FTQUNOZ0lVSUFFZ0FTZ0NLRUVCYWpZQ0tDQUJLQUlrUVFGSERRRWdBU2dDR0VFQ1J3MEJJQUZCQVRvQU5nOExJQUFvQWd3aEJpQUFRUkJxSWdVZ0FTQUNJQU1nQkJDeUJpQUdRUUpJRFFBZ0JTQUdRUU4wYWlFR0lBQkJHR29oQlFKQUlBQW9BZ2dpQUVFQ2NVVUVRQ0FCS0FJa1FRRkhEUUVMQTBBZ0FTMEFOZzBDSUFVZ0FTQUNJQU1nQkJDeUJpQUZRUWhxSWdVZ0Jra05BQXNNQVFzZ0FFRUJjVVVFUUFOQUlBRXRBRFlOQWlBQktBSWtRUUZHRFFJZ0JTQUJJQUlnQXlBRUVMSUdJQVZCQ0dvaUJTQUdTUTBBREFJQUN3QUxBMEFnQVMwQU5nMEJJQUVvQWlSQkFVWUVRQ0FCS0FJWVFRRkdEUUlMSUFVZ0FTQUNJQU1nQkJDeUJpQUZRUWhxSWdVZ0Jra05BQXNMQzNBQkFuOGdBQ0FCS0FJSVFRQVF0UUlFUUNBQklBSWdBeERwQnc4TElBQW9BZ3doQkNBQVFSQnFJZ1VnQVNBQ0lBTVExQW9DUUNBRVFRSklEUUFnQlNBRVFRTjBhaUVFSUFCQkdHb2hBQU5BSUFBZ0FTQUNJQU1RMUFvZ0FTMEFOZzBCSUFCQkNHb2lBQ0FFU1EwQUN3c0xNd0FnQUNBQktBSUlRUUFRdFFJRVFDQUJJQUlnQXhEcEJ3OExJQUFvQWdnaUFDQUJJQUlnQXlBQUtBSUFLQUljRVFRQUN4b0FJQUFnQVNnQ0NFRUFFTFVDQkVBZ0FTQUNJQU1RNlFjTEM2a0NBUVIvSXdCQlFHb2lBU1FBSUFBb0FnQWlBa0Y0YWlnQ0FDRUVJQUpCZkdvb0FnQWhBaUFCUVFBMkFoUWdBVUc4NnhJMkFoQWdBU0FBTmdJTUlBRkI3T3NTTmdJSUlBRkJHR3BCQUVFbkVOMEJHaUFBSUFScUlRQUNRQ0FDUWV6ckVrRUFFTFVDQkVBZ0FVRUJOZ0k0SUFJZ0FVRUlhaUFBSUFCQkFVRUFJQUlvQWdBb0FoUVJBZ0FnQUVFQUlBRW9BaUJCQVVZYklRTU1BUXNnQWlBQlFRaHFJQUJCQVVFQUlBSW9BZ0FvQWhnUkNBQWdBU2dDTENJQVFRRkxEUUFnQUVFQmF3UkFJQUVvQWh4QkFDQUJLQUlvUVFGR0cwRUFJQUVvQWlSQkFVWWJRUUFnQVNnQ01FRUJSaHNoQXd3QkN5QUJLQUlnUVFGSEJFQWdBU2dDTUEwQklBRW9BaVJCQVVjTkFTQUJLQUlvUVFGSERRRUxJQUVvQWhnaEF3c2dBVUZBYXlRQUlBTUxvQUVCQVg4akFFRkFhaUlESkFBQ2YwRUJJQUFnQVVFQUVMVUNEUUFhUVFBZ0FVVU5BQnBCQUNBQkVKTVJJZ0ZGRFFBYUlBTkJmellDRkNBRElBQTJBaEFnQTBFQU5nSU1JQU1nQVRZQ0NDQURRUmhxUVFCQkp4RGRBUm9nQTBFQk5nSTRJQUVnQTBFSWFpQUNLQUlBUVFFZ0FTZ0NBQ2dDSEJFRUFFRUFJQU1vQWlCQkFVY05BQm9nQWlBREtBSVlOZ0lBUVFFTElRQWdBMEZBYXlRQUlBQUxCZ0FRbGhFQUN6RUJBWDhqQUVFUWF5SUFKQUFnQUVFQU5nSU1RWWp4RVNnQ0FDSUFRZVBxRWtFQUVPVUxHa0VLSUFBUXdBTVFBUUFMY1FFRGZ5TUFRUkJySWdVa0FDQUJFQjhoQkFOQUFrQWdBVUVBRUZBaEF5QUZJQUkzQXdBZ0FRSi9JQU1nQkVFQmFrSFg2aElnQlJBbklnTkJBRTRFUUNBRElBUk5EUUlnQXd3QkN5QUVRUUYwUVFGeUN5SUVFRTBNQVFzTElBRWdBeEJOSUFBZ0FSRFNBeUFGUVJCcUpBQUxKd0VCZnlNQVFSQnJJZ0lrQUNBQ0VPb0hJQUFnQWlBQkVKY1JJQUlRSUJvZ0FrRVFhaVFBQzNFQkEzOGpBRUVRYXlJRkpBQWdBUkFmSVFRRFFBSkFJQUZCQUJCUUlRTWdCU0FDTmdJQUlBRUNmeUFESUFSQkFXcEIxT29TSUFVUUp5SURRUUJPQkVBZ0F5QUVUUTBDSUFNTUFRc2dCRUVCZEVFQmNnc2lCQkJOREFFTEN5QUJJQU1RVFNBQUlBRVEwZ01nQlVFUWFpUUFDM0VCQTM4akFFRVFheUlGSkFBZ0FSQWZJUVFEUUFKQUlBRkJBQkJRSVFNZ0JTQUNOZ0lBSUFFQ2Z5QURJQVJCQVdwQjBlb1NJQVVRSnlJRFFRQk9CRUFnQXlBRVRRMENJQU1NQVFzZ0JFRUJkRUVCY2dzaUJCQk5EQUVMQ3lBQklBTVFUU0FBSUFFUTBnTWdCVUVRYWlRQUM0MEJBUU4vSXdCQkVHc2lCQ1FBUWUvLy8vOERJQUZQQkVBQ1FDQUJRUUZOQkVBZ0FDQUJFTlFCSUFBaEJRd0JDeUFBSUFFUXl3VkJBV29pQXhDQ0FpSUZFT0VCSUFBZ0F4RHBBU0FBSUFFUXZBRUxJQVVoQXlBQklnQUVmeUFESUFJZ0FCQ29FUVVnQXdzYUlBUkJBRFlDRENBRklBRkJBblJxSUFSQkRHb1Fud0lnQkVFUWFpUUFEd3NRYmdBTGdRRUJBMzhqQUVFUWF5SUZKQUFDUUNBQUVMWUdJZ1FnQUJBZklnTnJJQUpQQkVBZ0FrVU5BU0FBRUJNaUJDQURRUUowYWlBQklBSVFwd1FnQUNBQ0lBTnFJZ0FRaHdNZ0JVRUFOZ0lNSUFRZ0FFRUNkR29nQlVFTWFoQ2ZBZ3dCQ3lBQUlBUWdBaUFEYWlBRWF5QURJQU5CQUNBQ0lBRVEyQW9MSUFWQkVHb2tBQXQ2QVFSL0l3QkJFR3NpQkNRQUFrQWdBQkMyQmlJRElBSlBCRUFnQUJBVElnWWhCU0FDSWdNRWZ5QUZJQUVnQXhDbkVRVWdCUXNhSUFSQkFEWUNEQ0FHSUFKQkFuUnFJQVJCREdvUW53SWdBQ0FDRUljRERBRUxJQUFnQXlBQ0lBTnJJQUFRSHlJQVFRQWdBQ0FDSUFFUTJBb0xJQVJCRUdva0FBdCtBUU4vSXdCQkVHc2lBeVFBUWUvLy8vOERJQUpQQkVBQ1FDQUNRUUZOQkVBZ0FDQUNFTlFCSUFBaEJBd0JDeUFBSUFJUXl3VkJBV29pQlJDQ0FpSUVFT0VCSUFBZ0JSRHBBU0FBSUFJUXZBRUxJQVFnQVNBQ0VLY0VJQU5CQURZQ0RDQUVJQUpCQW5ScUlBTkJER29RbndJZ0EwRVFhaVFBRHdzUWJnQUxlUUVEZnlNQVFSQnJJZ01rQUVGdklBRlBCRUFDUUNBQlFRcE5CRUFnQUNBQkVOUUJJQUFoQkF3QkN5QUFJQUFnQVJEa0FrRUJhaUlGRUlFRUlnUVE0UUVnQUNBRkVPa0JJQUFnQVJDOEFRc2dCQ0FCSUFJUTJRb2dBMEVBT2dBUElBRWdCR29nQTBFUGFoQ1VBU0FEUVJCcUpBQVBDeEJ1QUF0NUFRSi9Jd0JCRUdzaUF5UUFRVzhnQWs4RVFBSkFJQUpCQ2swRVFDQUFRUUVRMUFFZ0FDRUNEQUVMSUFBZ0FDQUNFT1FDUVFGcUlnUVFnUVFpQWhEaEFTQUFJQVFRNlFFZ0FFRUJFTHdCQ3lBQ0lBRkJBUkRvQVNBRFFRQTZBQThnQWtFQmFpQURRUTlxRUpRQklBTkJFR29rQUE4TEVHNEFDKzhCQVFSL0l3QkJFR3NpQWlRQUlBSWdBVFlDREVGdklBRlBCRUFnQUJCZElRTWdBaUFBRUI4MkFnZ2dBaUFDUVF4cUlBSkJDR29RVWlnQ0FDSUJOZ0lNSUFJZ0FSRGtBaUlCTmdJTUFrQWdBU0FEUmcwQUFuOGdBVUVLUmdSQUlBQWhBVUVCSVFNZ0FDZ0NBQXdCQzBFQklRVkJBQ0FCSUFOTklBQWdBaWdDREVFQmFoQ0JCQ0lCR3cwQklBQVF3UUVoQXlBQUVCTUxJUVFnQVNBRUlBQVFIMEVCYWhEb0FTQURCRUFnQkJBcUN3SkFJQVVFUUNBQUlBSW9BZ3hCQVdvUTZRRWdBQ0FDS0FJSUVMd0JJQUFnQVJEaEFRd0JDeUFBSUFJb0FnZ1ExQUVMQ3lBQ1FSQnFKQUFQQ3hCdUFBdGVBUUovSXdCQkVHc2lBaVFBQWtBZ0FCREJBUVJBSUFBb0FnQWhBeUFDUVFBNkFBOGdBU0FEYWlBQ1FROXFFSlFCSUFBZ0FSQzhBUXdCQ3lBQ1FRQTZBQTRnQUNBQmFpQUNRUTVxRUpRQklBQWdBUkRVQVFzZ0FrRVFhaVFBQzNBQkJIOGpBRUVRYXlJRUpBQWdBUVJBSUFBUVhTRUNJQUFRSHlJRElBRnFJUVVnQWlBRGF5QUJTUVJBSUFBZ0FpQUZJQUpySUFNZ0F4RHNCd3NnQXlBQUVCTWlBbW9nQVVFQUVOa0tJQUFnQlJDSEF5QUVRUUE2QUE4Z0FpQUZhaUFFUVE5cUVKUUJDeUFFUVJCcUpBQUxJZ0VCZnlBQUVCOGlBaUFCU1FSQUlBQWdBU0FDYXhDakVROExJQUFnQVJDaUVRdGNBUUYvSXdCQkVHc2lCU1FBSUFVZ0F6WUNEQ0FBSUFRUTdRVWFJQUVRSHlJRElBSkpCRUFRYmdBTElBRVFFeUVCSUFVZ0F5QUNhellDQ0NBQUlBRWdBbW9nQlVFTWFpQUZRUWhxRUtRQktBSUFFTFVHSUFWQkVHb2tBQXM2QVFGL0l3QkJFR3NpQWlRQUlBQVFPeG9EUUNBQUtBSUVFTE1HSUFBZ0FDZ0NCRUVFYWpZQ0JDQUJRWDlxSWdFTkFBc2dBa0VRYWlRQUMya0JBWDhDUUNBQUlBRnJRUUoxSUFKSkJFQURRQ0FBSUFKQmYyb2lBa0VDZENJRGFpQUJJQU5xS0FJQU5nSUFJQUlOQUF3Q0FBc0FDeUFDUlEwQUlBQWhBd05BSUFNZ0FTZ0NBRFlDQUNBRFFRUnFJUU1nQVVFRWFpRUJJQUpCZjJvaUFnMEFDd3NnQUFzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFMkFnQWdBMEVFYWlFRElBSkJmMm9pQWcwQUN3c2dBQXN1QUFOQUlBQW9BZ0JCQVVZTkFBc2dBQ2dDQUVVRVFDQUFRUUUyQWdBZ0FVSFhCQkVGQUNBQVFYODJBZ0FMQ3prQ0FYOEJmaU1BUVJCcklnTWtBQ0FESUFFZ0FoQi9FS0VUSUFNcEF3QWhCQ0FBSUFNcEF3ZzNBd2dnQUNBRU53TUFJQU5CRUdva0FBc3dBUUYvSUFBUWd3c2dBQkRCQVFSQUlBQW9BZ0FoQVNBQUVMWUdHaUFCRUNvZ0FFRUFFT2tCSUFCQkFCRFVBUXNMT0FFQ2Z5QUFLQUlBSUFBb0FnZ2lBa0VCZFdvaEFTQUFLQUlFSVFBZ0FTQUNRUUZ4Qkg4Z0FTZ0NBQ0FBYWlnQ0FBVWdBQXNSQlFBTEpRQURRQ0FCSUFBb0FnaEhCRUFnQUNnQ0VCb2dBQ0FBS0FJSVFYeHFOZ0lJREFFTEN3dGNBUUYvUWREWEZCRHdDa0hRMXhRUW93UkIwTmNVS0FJQVFkVFhGQ2dDQUNBQVFRUnFJZ0VRaFFaQjBOY1VJQUVRTGtIVTF4UWdBRUVJYWhBdVFkRFhGQkJESUFBUUl4QXVJQUFnQUNnQ0JEWUNBRUhRMXhRUUZoRGdDZ3RwQVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBQVFReHFJQVJCREdvZ0F4Q0JBaUFCQkVBZ0FDZ0NFQ0FCRU9FS0lRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFQ2RHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUVDZEdvMkFnQWdCRUVRYWlRQUlBQUxXUUVDZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dRNGdvaUFpQUFUd1JBUWREWEZCQ2lCQ0lBSUFKQkFYWkpCRUFnQVNBQVFRRjBOZ0lJSUFGQkNHb2dBVUVNYWhCU0tBSUFJUUlMSUFGQkVHb2tBQ0FDRHdzUWJnQUxKQUFDUUNBQlFSeExEUUFnQUMwQWNBMEFJQUJCQVRvQWNDQUFEd3NnQVVFQ2RCQW1DMmtCQW44akFFRWdheUlESkFBQ1FDQUFFQnNvQWdBZ0FDZ0NCR3RCQW5VZ0FVOEVRQ0FBSUFFUXBoRU1BUXNnQUJBN0lRSWdBMEVJYWlBQUlBQVFGaUFCYWhESkJTQUFFQllnQWhDeEJpSUNJQUVRMmdvZ0FDQUNFT1VISUFJUXJ3WUxJQU5CSUdva0FBc0pBRUhrekJRUUlCb0xNUUFDUUVId3pCUXRBQUJCQVhFTkFFSHd6QlFRcmdGRkRRQkI1TXdVUWJTL0VoRGpCRUh3ekJRUXJRRUxRZVRNRkFzSkFFSFV6QlFRSUJvTE1RQUNRRUhnekJRdEFBQkJBWEVOQUVIZ3pCUVFyZ0ZGRFFCQjFNd1VRYWkvRWhCcEdrSGd6QlFRclFFTFFkVE1GQXNKQUVIRXpCUVFJQm9MTVFBQ1FFSFF6QlF0QUFCQkFYRU5BRUhRekJRUXJnRkZEUUJCeE13VVFkUytFaERqQkVIUXpCUVFyUUVMUWNUTUZBc0pBRUcwekJRUUlCb0xNUUFDUUVIQXpCUXRBQUJCQVhFTkFFSEF6QlFRcmdGRkRRQkJ0TXdVUWJ5K0VoQnBHa0hBekJRUXJRRUxRYlRNRkFzSkFFR2t6QlFRSUJvTE1RQUNRRUd3ekJRdEFBQkJBWEVOQUVHd3pCUVFyZ0ZGRFFCQnBNd1VRWmkrRWhEakJFR3d6QlFRclFFTFFhVE1GQXNKQUVHVXpCUVFJQm9MTVFBQ1FFR2d6QlF0QUFCQkFYRU5BRUdnekJRUXJnRkZEUUJCbE13VVFZeStFaEJwR2tHZ3pCUVFyUUVMUVpUTUZBc0pBRUdFekJRUUlCb0xNUUFDUUVHUXpCUXRBQUJCQVhFTkFFR1F6QlFRcmdGRkRRQkJoTXdVUWVpOUVoRGpCRUdRekJRUXJRRUxRWVRNRkFzSkFFSDB5eFFRSUJvTE1RQUNRRUdBekJRdEFBQkJBWEVOQUVHQXpCUVFyZ0ZGRFFCQjlNc1VRZHk5RWhCcEdrR0F6QlFRclFFTFFmVExGQXNiQUVINDFCUWhBQU5BSUFCQmRHb1FJQ0lBUWVEVUZFY05BQXNMVWdFQmZ3SkFRZmpVRkMwQUFFRUJjUTBBUWZqVUZCQ3VBVVVOQUVIZzFCUWhBQU5BSUFBUXlnSkJER29pQUVINDFCUkhEUUFMUWZqVUZCQ3RBUXRCNE5RVVFlam9FaEI1UWV6VUZFSDA2QklRZVFzM0FBSkFRZkRMRkMwQUFFRUJjUTBBUWZETEZCQ3VBVVVOQUJERUVVSHN5eFJCNE5RVU5nSUFRZkRMRkJDdEFRdEI3TXNVS0FJQUN4c0FRZGpVRkNFQUEwQWdBRUYwYWhBZ0lnQkJ3TlFVUncwQUN3dFJBUUYvQWtCQjJOUVVMUUFBUVFGeERRQkIyTlFVRUs0QlJRMEFRY0RVRkNFQUEwQWdBQkJPUVF4cUlnQkIyTlFVUncwQUMwSFkxQlFRclFFTFFjRFVGRUhnNkJJUWFFSE0xQlJCNCtnU0VHZ0xOd0FDUUVIb3l4UXRBQUJCQVhFTkFFSG95eFFRcmdGRkRRQVF4eEZCNU1zVVFjRFVGRFlDQUVIb3l4UVFyUUVMUWVUTEZDZ0NBQXNiQUVHdzFCUWhBQU5BSUFCQmRHb1FJQ0lBUVpEU0ZFY05BQXNMeVFJQkEzOGdBaUFDS0FJQUtBSzhBUkVBQUNFQUlBSWdBaWdDQUNnQzFBRVJBQUFoQkFKQUlBQVFGa1VFUUVFQUlRRU1BUXRCQUNFQlFRQWhBZ05BQWtBQ1FDQUFJQUlRRVNnQ0FDSURJQU1vQWdBb0FqQVJBQUFpQTBVTkFDQURJQU1vQWdBb0FvQUJFUUFBUVE1SERRQWdBeUFES0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDSUJFQUFCRElCQTBCQ3lBQUlBSVFFU2dDQUNFRkFrQWdBQ0FDRUJFb0FnQWlBeUFES0FJQUtBSVlFUUFBSWdORkRRQWdBeWdDYUVHeEJFY05BQ0FESUFNb0FnQW9BcndCRVFBQUVMZ0NEUUFnQXlBREtBSUFLQUs4QVJFQUFFRUFFQkVvQWdBaEJRc2dBQ0FCRUJFZ0JUWUNBQ0FFRUxnQ1JRUkFJQVFnQWhBUktBSUFJUU1nQkNBQkVCRWdBellDQUFzZ0FVRUJhaUVCQ3lBQ1FRRnFJZ0lnQUJBV1NRMEFDd3NnQUNBQkVMY0dJQVFRdUFKRkJFQWdCQ0FCRUxjR0MwRUJDNjRDQVFGL0FrQkJzTlFVTFFBQVFRRnhEUUJCc05RVUVLNEJSUTBBUVpEU0ZDRUFBMEFnQUJES0FrRU1haUlBUWJEVUZFY05BQXRCc05RVUVLMEJDMEdRMGhSQjJPUVNFSGxCbk5JVVFmamtFaEI1UWFqU0ZFR2M1UklRZVVHMDBoUkJ0T1VTRUhsQndOSVVRY3psRWhCNVFjelNGRUhjNVJJUWVVSFkwaFJCOE9VU0VIbEI1TklVUVlUbUVoQjVRZkRTRkVHZzVoSVFlVUg4MGhSQnlPWVNFSGxCaU5NVVFlam1FaEI1UVpUVEZFR001eElRZVVHZzB4UkJzT2NTRUhsQnJOTVVRY0RuRWhCNVFialRGRUhRNXhJUWVVSEUweFJCNE9jU0VIbEIwTk1VUWN6bEVoQjVRZHpURkVIdzV4SVFlVUhvMHhSQmdPZ1NFSGxCOU5NVVFaRG9FaEI1UVlEVUZFR2c2QklRZVVHTTFCUkJzT2dTRUhsQm1OUVVRY0RvRWhCNVFhVFVGRUhRNkJJUWVRczNBQUpBUWVETEZDMEFBRUVCY1EwQVFlRExGQkN1QVVVTkFCRExFVUhjeXhSQmtOSVVOZ0lBUWVETEZCQ3RBUXRCM01zVUtBSUFDeHNBUVlEU0ZDRUFBMEFnQUVGMGFoQWdJZ0JCNE04VVJ3MEFDd3V0QWdFQmZ3SkFRWURTRkMwQUFFRUJjUTBBUVlEU0ZCQ3VBVVVOQUVIZ3p4UWhBQU5BSUFBUVRrRU1haUlBUVlEU0ZFY05BQXRCZ05JVUVLMEJDMEhnenhSQjFPTVNFR2hCN004VVFkempFaEJvUWZqUEZFSGw0eElRYUVHRTBCUkI2K01TRUdoQmtOQVVRZkhqRWhCb1FaelFGRUgxNHhJUWFFR28wQlJCK3VNU0VHaEJ0TkFVUWYvakVoQm9RY0RRRkVHRzVCSVFhRUhNMEJSQmtPUVNFR2hCMk5BVVFaamtFaEJvUWVUUUZFR2g1QklRYUVIdzBCUkJxdVFTRUdoQi9OQVVRYTdrRWhCb1FZalJGRUd5NUJJUWFFR1UwUlJCdHVRU0VHaEJvTkVVUWZIakVoQm9RYXpSRkVHNjVCSVFhRUc0MFJSQnZ1UVNFR2hCeE5FVVFjTGtFaEJvUWREUkZFSEc1QklRYUVIYzBSUkJ5dVFTRUdoQjZORVVRYzdrRWhCb1FmVFJGRUhTNUJJUWFBczNBQUpBUWRqTEZDMEFBRUVCY1EwQVFkakxGQkN1QVVVTkFCRE9FVUhVeXhSQjRNOFVOZ0lBUWRqTEZCQ3RBUXRCMU1zVUtBSUFDeHNBUWRqUEZDRUFBMEFnQUVGMGFoQWdJZ0JCc000VVJ3MEFDd3ZLQVFFQmZ3SkFRZGpQRkMwQUFFRUJjUTBBUWRqUEZCQ3VBVVVOQUVHd3poUWhBQU5BSUFBUXlnSkJER29pQUVIWXp4UkhEUUFMUWRqUEZCQ3RBUXRCc000VVFZRGhFaEI1UWJ6T0ZFR2M0UklRZVVISXpoUkJ1T0VTRUhsQjFNNFVRZGpoRWhCNVFlRE9GRUdBNGhJUWVVSHN6aFJCcE9JU0VIbEIrTTRVUWNEaUVoQjVRWVRQRkVIazRoSVFlVUdRenhSQjlPSVNFSGxCbk04VVFZVGpFaEI1UWFqUEZFR1U0eElRZVVHMHp4UkJwT01TRUhsQndNOFVRYlRqRWhCNVFjelBGRUhFNHhJUWVRczNBQUpBUWRETEZDMEFBRUVCY1EwQVFkRExGQkN1QVVVTkFCRFJFVUhNeXhSQnNNNFVOZ0lBUWRETEZCQ3RBUXRCek1zVUtBSUFDeHNBUWFqT0ZDRUFBMEFnQUVGMGFoQWdJZ0JCZ00wVVJ3MEFDd3ZKQVFFQmZ3SkFRYWpPRkMwQUFFRUJjUTBBUWFqT0ZCQ3VBVVVOQUVHQXpSUWhBQU5BSUFBUVRrRU1haUlBUWFqT0ZFY05BQXRCcU00VUVLMEJDMEdBelJSQnFPQVNFR2hCak0wVVFhL2dFaEJvUVpqTkZFRzI0QklRYUVHa3pSUkJ2dUFTRUdoQnNNMFVRY2pnRWhCb1Fiek5GRUhSNEJJUWFFSEl6UlJCMk9BU0VHaEIxTTBVUWVIZ0VoQm9RZURORkVIbDRCSVFhRUhzelJSQjZlQVNFR2hCK00wVVFlM2dFaEJvUVlUT0ZFSHg0QklRYUVHUXpoUkI5ZUFTRUdoQm5NNFVRZm5nRWhCb0N6Y0FBa0JCeU1zVUxRQUFRUUZ4RFFCQnlNc1VFSzRCUlEwQUVOUVJRY1RMRkVHQXpSUTJBZ0JCeU1zVUVLMEJDMEhFeXhRb0FnQUxDd0FnQUVIRXZSSVE0d1FMQ3dBZ0FFRzh2UklRYVJvTEN3QWdBRUdvdlJJUTR3UUxDd0FnQUVHZ3ZSSVFhUm9MRFFBZ0FDQUJRUkJxRU8wQkdnc05BQ0FBSUFGQkRHb1E3UUVhQ3djQUlBQXNBQWtMVndBQ1FDQUJJQUVvQWdBb0FvQUJFUUFBUVE1SERRQWdBU0FCS0FJQUtBSjRFUUFBSWdBZ0FDZ0NBQ2dDSUJFQUFCQ2pCMFVOQUNBQklBRW9BZ0FvQW53UkFBQWlBQ0FBS0FJQUtBSWtFUUFBUVFFUTVBb0xDd2NBSUFBc0FBZ0xDUUFnQUJEbENoQXFDd2tBSUFBUTVnb1FLZ3Z0QXdFSGZ5QUFJUU1EUUFKQUlBY2dBazhnQXlBQlQzSU5BQ0FETEFBQUlnUkIvd0Z4SVFVQ2Z5QUVRUUJPQkVBZ0JVSC8vOE1BU3cwQ0lBTkJBV29NQVFzZ0JVSENBVWtOQVNBRlFkOEJUUVJBSUFFZ0EydEJBa2dOQWlBRExRQUJJZ1JCd0FGeFFZQUJSeUFFUVQ5eElBVkJCblJCd0E5eGNrSC8vOE1BUzNJTkFpQURRUUpxREFFTEFrQUNRQ0FGUWU4QlRRUkFJQUVnQTJ0QkEwZ05CQ0FETFFBQ0lRWWdBeTBBQVNFRUlBVkI3UUZHRFFFZ0JVSGdBVVlFUUNBRVFlQUJjVUdnQVVZTkF3d0ZDeUFFUWNBQmNVR0FBVWNOQkF3Q0N5QUJJQU5yUVFSSUlBVkI5QUZMY2cwRElBTXRBQU1oQmlBRExRQUNJUWdnQXkwQUFTRUVBa0FDUUNBRlFaQithaUlKUVFSTERRQUNRQUpBSUFsQkFXc09CQUlDQWdFQUN5QUVRZkFBYWtIL0FYRkJNRWtOQWd3R0N5QUVRZkFCY1VHQUFVWU5BUXdGQ3lBRVFjQUJjVUdBQVVjTkJBc2dDRUhBQVhGQmdBRkhJQVpCd0FGeFFZQUJSM0lnQmtFL2NTQUlRUVowUWNBZmNTQUZRUkowUVlDQThBQnhJQVJCUDNGQkRIUnljbkpCLy8vREFFdHlEUU1nQTBFRWFnd0NDeUFFUWVBQmNVR0FBVWNOQWdzZ0JrSEFBWEZCZ0FGSElBWkJQM0VnQlVFTWRFR0E0QU54SUFSQlAzRkJCblJ5Y2tILy84TUFTM0lOQVNBRFFRTnFDeUVESUFkQkFXb2hCd3dCQ3dzZ0F5QUFhd3NMQUNBQ0lBTWdCQkRoRVF1NUJBRUdmeUFDSUFBMkFnQWdCU0FETmdJQUEwQWdBaWdDQUNJR0lBRlBCRUJCQUE4TFFRRWhDUUpBQWtBQ1FDQUZLQUlBSWdzZ0JFOE5BQ0FHTEFBQUlnQkIvd0Z4SVFNZ0FFRUFUZ1JBSUFOQi8vL0RBRXNOQTBFQklRQU1BZ3NnQTBIQ0FVa05BaUFEUWQ4QlRRUkFJQUVnQm10QkFrZ05BVUVDSVFrZ0JpMEFBU0lIUWNBQmNVR0FBVWNOQVVFQ0lRQWdCMEUvY1NBRFFRWjBRY0FQY1hJaUEwSC8vOE1BVFEwQ0RBRUxBa0FnQTBIdkFVMEVRQ0FCSUFaclFRTklEUUlnQmkwQUFpRUlJQVl0QUFFaEJ3SkFBa0FnQTBIdEFVY0VRQ0FEUWVBQlJ3MEJJQWRCNEFGeFFhQUJSZzBDREFjTElBZEI0QUZ4UVlBQlJnMEJEQVlMSUFkQndBRnhRWUFCUncwRkN5QUlRY0FCY1VHQUFVWU5BUXdFQ3lBRFFmUUJTdzBESUFFZ0JtdEJCRWdOQVNBR0xRQURJUWdnQmkwQUFpRUtJQVl0QUFFaEJ3SkFBa0FnQTBHUWZtb2lBRUVFU3cwQUFrQUNRQ0FBUVFGckRnUUNBZ0lCQUFzZ0IwSHdBR3BCL3dGeFFUQlBEUVlNQWdzZ0IwSHdBWEZCZ0FGSERRVU1BUXNnQjBIQUFYRkJnQUZIRFFRTElBcEJ3QUZ4UVlBQlJ5QUlRY0FCY1VHQUFVZHlEUU5CQkNFQVFRSWhDU0FJUVQ5eElBcEJCblJCd0I5eElBTkJFblJCZ0lEd0FIRWdCMEUvY1VFTWRISnljaUlEUWYvL3d3QkxEUUVNQWd0QkF5RUFRUUloQ1NBSVFUOXhJQU5CREhSQmdPQURjU0FIUVQ5eFFRWjBjbklpQTBILy84TUFUUTBCQ3lBSkR3c2dDeUFETmdJQUlBSWdBQ0FHYWpZQ0FDQUZJQVVvQWdCQkJHbzJBZ0FNQVFzTFFRSUxUUUFqQUVFUWF5SUFKQUFnQUNBQ05nSU1JQUFnQlRZQ0NDQUNJQU1nQUVFTWFpQUZJQVlnQUVFSWFoRGpFU0VCSUFRZ0FDZ0NERFlDQUNBSElBQW9BZ2cyQWdBZ0FFRVFhaVFBSUFFTDFnTUJBWDhnQWlBQU5nSUFJQVVnQXpZQ0FDQUNLQUlBSVFNQ1FBTkFJQU1nQVU4RVFFRUFJUVlNQWd0QkFpRUdJQU1vQWdBaUFFSC8vOE1BU3lBQVFZQndjVUdBc0FOR2NnMEJBa0FDUUNBQVFmOEFUUVJBUVFFaEJpQUVJQVVvQWdBaUEydEJBVWdOQkNBRklBTkJBV28yQWdBZ0F5QUFPZ0FBREFFTElBQkIvdzlOQkVBZ0JDQUZLQUlBSWdOclFRSklEUUlnQlNBRFFRRnFOZ0lBSUFNZ0FFRUdka0hBQVhJNkFBQWdCU0FGS0FJQUlnTkJBV28yQWdBZ0F5QUFRVDl4UVlBQmNqb0FBQXdCQ3lBRUlBVW9BZ0FpQTJzaEJpQUFRZi8vQTAwRVFDQUdRUU5JRFFJZ0JTQURRUUZxTmdJQUlBTWdBRUVNZGtIZ0FYSTZBQUFnQlNBRktBSUFJZ05CQVdvMkFnQWdBeUFBUVFaMlFUOXhRWUFCY2pvQUFDQUZJQVVvQWdBaUEwRUJhallDQUNBRElBQkJQM0ZCZ0FGeU9nQUFEQUVMSUFaQkJFZ05BU0FGSUFOQkFXbzJBZ0FnQXlBQVFSSjJRZkFCY2pvQUFDQUZJQVVvQWdBaUEwRUJhallDQUNBRElBQkJESFpCUDNGQmdBRnlPZ0FBSUFVZ0JTZ0NBQ0lEUVFGcU5nSUFJQU1nQUVFR2RrRS9jVUdBQVhJNkFBQWdCU0FGS0FJQUlnTkJBV28yQWdBZ0F5QUFRVDl4UVlBQmNqb0FBQXNnQWlBQ0tBSUFRUVJxSWdNMkFnQU1BUXNMUVFFUEN5QUdDeU1BSUFBdEFBUUVRQ0FBS0FJQUdpQUJRUkJxRUtrR0N5QUJCRUFnQUNnQ0FCb0xDMDBBSXdCQkVHc2lBQ1FBSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBaUFESUFCQkRHb2dCU0FHSUFCQkNHb1E1UkVoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkMva0RBUWQvSUFBaEF3TkFBa0FnQmlBQ1R5QURJQUZQY2cwQUlBTXRBQUFpQkVILy84TUFTdzBBQW44Z0EwRUJhaUFFUVJoMFFSaDFRUUJPRFFBYUlBUkJ3Z0ZKRFFFZ0JFSGZBVTBFUUNBQklBTnJRUUpJRFFJZ0F5MEFBU0lGUWNBQmNVR0FBVWNnQlVFL2NTQUVRUVowUWNBUGNYSkIvLy9EQUV0eURRSWdBMEVDYWd3QkN3SkFBa0FnQkVIdkFVMEVRQ0FCSUFOclFRTklEUVFnQXkwQUFpRUhJQU10QUFFaEJTQUVRZTBCUmcwQklBUkI0QUZHQkVBZ0JVSGdBWEZCb0FGR0RRTU1CUXNnQlVIQUFYRkJnQUZIRFFRTUFnc2dBaUFHYTBFQ1NTQUVRZlFCUzNJZ0FTQURhMEVFU0hJTkF5QURMUUFESVFjZ0F5MEFBaUVJSUFNdEFBRWhCUUpBQWtBZ0JFR1FmbW9pQ1VFRVN3MEFBa0FDUUNBSlFRRnJEZ1FDQWdJQkFBc2dCVUh3QUdwQi93RnhRVEJKRFFJTUJnc2dCVUh3QVhGQmdBRkdEUUVNQlFzZ0JVSEFBWEZCZ0FGSERRUUxJQWhCd0FGeFFZQUJSeUFIUWNBQmNVR0FBVWR5SUFkQlAzRWdDRUVHZEVIQUgzRWdCRUVTZEVHQWdQQUFjU0FGUVQ5eFFReDBjbkp5UWYvL3d3QkxjZzBESUFaQkFXb2hCaUFEUVFScURBSUxJQVZCNEFGeFFZQUJSdzBDQ3lBSFFjQUJjVUdBQVVjZ0IwRS9jU0FFUVF4MFFZRGdBM0VnQlVFL2NVRUdkSEp5UWYvL3d3QkxjZzBCSUFOQkEyb0xJUU1nQmtFQmFpRUdEQUVMQ3lBRElBQnJDd3NBSUFJZ0F5QUVFT2dSQzU0RkFRVi9JQUlnQURZQ0FDQUZJQU0yQWdBQ1FBTkFJQUlvQWdBaUFDQUJUd1JBUVFBaENRd0NDMEVCSVFrZ0JTZ0NBQ0lISUFSUERRRUNRQ0FBTFFBQUlnTkIvLy9EQUVzTkFDQUNBbjhnQTBFWWRFRVlkVUVBVGdSQUlBY2dBenNCQUNBQVFRRnFEQUVMSUFOQndnRkpEUUVnQTBIZkFVMEVRQ0FCSUFCclFRSklEUVFnQUMwQUFTSUdRY0FCY1VHQUFVY05Ba0VDSVFrZ0JrRS9jU0FEUVFaMFFjQVBjWElpQTBILy84TUFTdzBFSUFjZ0F6c0JBQ0FBUVFKcURBRUxJQU5CN3dGTkJFQWdBU0FBYTBFRFNBMEVJQUF0QUFJaENDQUFMUUFCSVFZQ1FBSkFJQU5CN1FGSEJFQWdBMEhnQVVjTkFTQUdRZUFCY1VHZ0FVY05CUXdDQ3lBR1FlQUJjVUdBQVVjTkJBd0JDeUFHUWNBQmNVR0FBVWNOQXdzZ0NFSEFBWEZCZ0FGSERRSkJBaUVKSUFoQlAzRWdCa0UvY1VFR2RDQURRUXgwY25JaUEwSC8vd054UWYvL3d3QkxEUVFnQnlBRE93RUFJQUJCQTJvTUFRc2dBMEgwQVVzTkFTQUJJQUJyUVFSSURRTWdBQzBBQXlFSUlBQXRBQUloQmlBQUxRQUJJUUFDUUFKQUlBTkJrSDVxSWdwQkJFc05BQUpBQWtBZ0NrRUJhdzRFQWdJQ0FRQUxJQUJCOEFCcVFmOEJjVUV3VHcwRURBSUxJQUJCOEFGeFFZQUJSdzBEREFFTElBQkJ3QUZ4UVlBQlJ3MENDeUFHUWNBQmNVR0FBVWNnQ0VIQUFYRkJnQUZIY2cwQklBUWdCMnRCQkVnTkEwRUNJUWtnQ0VFL2NTSUlJQVpCQm5RaUNrSEFIM0VnQUVFTWRFR0E0QTl4SUFOQkIzRWlBMEVTZEhKeWNrSC8vOE1BU3cwRElBY2dBRUVDZENJQVFjQUJjU0FEUVFoMGNpQUdRUVIyUVFOeElBQkJQSEZ5Y2tIQS93QnFRWUN3QTNJN0FRQWdCU0FIUVFKcU5nSUFJQWNnQ2tIQUIzRWdDSEpCZ0xnRGNqc0JBaUFDS0FJQVFRUnFDellDQUNBRklBVW9BZ0JCQW1vMkFnQU1BUXNMUVFJUEN5QUpDMDBBSXdCQkVHc2lBQ1FBSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBaUFESUFCQkRHb2dCU0FHSUFCQkNHb1E2aEVoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkM3OEZBUUovSUFJZ0FEWUNBQ0FGSUFNMkFnQWdBaWdDQUNFR0FrQUNRQU5BSUFZZ0FVOEVRRUVBSVFBTUF3dEJBaUVBSUFZdkFRQWlBMEgvLzhNQVN3MENBa0FDUUNBRFFmOEFUUVJBUVFFaEFDQUVJQVVvQWdBaUJtdEJBVWdOQlNBRklBWkJBV28yQWdBZ0JpQURPZ0FBREFFTElBTkIvdzlOQkVBZ0JDQUZLQUlBSWdCclFRSklEUVFnQlNBQVFRRnFOZ0lBSUFBZ0EwRUdka0hBQVhJNkFBQWdCU0FGS0FJQUlnQkJBV28yQWdBZ0FDQURRVDl4UVlBQmNqb0FBQXdCQ3lBRFFmK3ZBMDBFUUNBRUlBVW9BZ0FpQUd0QkEwZ05CQ0FGSUFCQkFXbzJBZ0FnQUNBRFFReDJRZUFCY2pvQUFDQUZJQVVvQWdBaUFFRUJhallDQUNBQUlBTkJCblpCUDNGQmdBRnlPZ0FBSUFVZ0JTZ0NBQ0lBUVFGcU5nSUFJQUFnQTBFL2NVR0FBWEk2QUFBTUFRc2dBMEgvdHdOTkJFQkJBU0VBSUFFZ0JtdEJCRWdOQlNBR0x3RUNJZ2RCZ1BnRGNVR0F1QU5IRFFJZ0JDQUZLQUlBYTBFRVNBMEZJQWRCL3dkeElBTkJDblJCZ1BnRGNTQURRY0FIY1NJQVFRcDBjbkpCZ0lBRWFrSC8vOE1BU3cwQ0lBSWdCa0VDYWpZQ0FDQUZJQVVvQWdBaUJrRUJhallDQUNBR0lBQkJCblpCQVdvaUFFRUNka0h3QVhJNkFBQWdCU0FGS0FJQUlnWkJBV28yQWdBZ0JpQUFRUVIwUVRCeElBTkJBblpCRDNGeVFZQUJjam9BQUNBRklBVW9BZ0FpQUVFQmFqWUNBQ0FBSUFkQkJuWkJEM0VnQTBFRWRFRXdjWEpCZ0FGeU9nQUFJQVVnQlNnQ0FDSUFRUUZxTmdJQUlBQWdCMEUvY1VHQUFYSTZBQUFNQVFzZ0EwR0F3QU5KRFFRZ0JDQUZLQUlBSWdCclFRTklEUU1nQlNBQVFRRnFOZ0lBSUFBZ0EwRU1ka0hnQVhJNkFBQWdCU0FGS0FJQUlnQkJBV28yQWdBZ0FDQURRUVoyUVQ5eFFZQUJjam9BQUNBRklBVW9BZ0FpQUVFQmFqWUNBQ0FBSUFOQlAzRkJnQUZ5T2dBQUN5QUNJQUlvQWdCQkFtb2lCallDQUF3QkN3dEJBZzhMUVFFUEN5QUFDMDBBSXdCQkVHc2lBQ1FBSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBaUFESUFCQkRHb2dCU0FHSUFCQkNHb1E3QkVoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkN4VUFJQUFvQWdnaUFFVUVRRUVCRHdzZ0FCRG9DZ3RGQVFGL0l3QkJFR3NpQkNRQUlBUWdBellDRENBRVFRaHFJQVJCREdvUTlRSWhBMEVBSUFBZ0FTQUNRYnpKRkNBQ0d4RElCaUVBSUFNUTlBSWdCRUVRYWlRQUlBQUxXd0VCZnlNQVFSQnJJZ01rQUNBQUlBRVExd0lpQUNnQ0FFRXdFSlFDSUFOQkNHb2dBRUVBRU1NQkVKRUJJZ0FvQWdCQkVHb2lBU0FDRVA4QkdpQUJRUkJxSUFKQkVHb1Evd0VhSUFBUUpVRUJPZ0FFSUFOQkVHb2tBQXRaQVFSL0EwQUNRQ0FDSUFOR0lBWWdCRTl5RFFBZ0FpQURJQUpySUFFZ0FDZ0NDQkR2RVNJSFFRSnFJZ2hCQWswRVFFRUJJUWNnQ0VFQ2F3MEJDeUFHUVFGcUlRWWdCU0FIYWlFRklBSWdCMm9oQWd3QkN3c2dCUXRGQVFKL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQlFRaHFJQUZCREdvUTlRSWhBQ01BUVJCcklnSWtBQ0FDUVJCcUpBQkJBQ0VDSUFBUTlBSWdBVUVRYWlRQUlBSUxMUUVCZjBGL0lRRUNRQ0FBS0FJSUVQSVJCSDhnQVFVZ0FDZ0NDQ0lBRFFGQkFRc1BDeUFBRU9nS1FRRkdDNUlCQVFGL0l3QkJFR3NpQlNRQUlBUWdBallDQUFKL1FRSWdCVUVNYWtFQUlBQW9BZ2dRN3djaUFFRUJha0VDU1EwQUdrRUJJQUJCZjJvaUFTQURJQVFvQWdCclN3MEFHaUFGUVF4cUlRSURmeUFCQkg4Z0FpMEFBQ0VBSUFRZ0JDZ0NBQ0lEUVFGcU5nSUFJQU1nQURvQUFDQUJRWDlxSVFFZ0FrRUJhaUVDREFFRlFRQUxDd3NoQWlBRlFSQnFKQUFnQWd0QUFRRi9Jd0JCRUdzaUJpUUFJQVlnQlRZQ0RDQUdRUWhxSUFaQkRHb1E5UUloQlNBQUlBRWdBaUFESUFRUXBSTWhBQ0FGRVBRQ0lBWkJFR29rQUNBQUM3OERBUU4vSXdCQkVHc2lDU1FBSUFJaENBTkFBa0FnQXlBSVJnUkFJQU1oQ0F3QkN5QUlMUUFBUlEwQUlBaEJBV29oQ0F3QkN3c2dCeUFGTmdJQUlBUWdBallDQUFOQUFrQUNmd0pBSUFVZ0JrWWdBaUFEUm5JTkFDQUpJQUVwQWdBM0F3Z0NRQUpBQWtBQ1FDQUZJQVFnQ0NBQ2F5QUdJQVZyUVFKMUlBRWdBQ2dDQ0JEMUVTSUtRWDlHQkVBRFFBSkFJQWNnQlRZQ0FDQUNJQVFvQWdCR0RRQUNRQ0FGSUFJZ0NDQUNheUFKUVFocUlBQW9BZ2dRNlFvaUJVRUNhaUlCUVFKTERRQkJBU0VGQWtBZ0FVRUJhdzRDQUFFSEN5QUVJQUkyQWdBTUJBc2dBaUFGYWlFQ0lBY29BZ0JCQkdvaEJRd0JDd3NnQkNBQ05nSUFEQVVMSUFjZ0J5Z0NBQ0FLUVFKMGFpSUZOZ0lBSUFVZ0JrWU5BeUFFS0FJQUlRSWdBeUFJUmdSQUlBTWhDQXdJQ3lBRklBSkJBU0FCSUFBb0FnZ1E2UXBGRFFFTFFRSU1CQXNnQnlBSEtBSUFRUVJxTmdJQUlBUWdCQ2dDQUVFQmFpSUNOZ0lBSUFJaENBTkFJQU1nQ0VZRVFDQURJUWdNQmdzZ0NDMEFBRVVOQlNBSVFRRnFJUWdNQUFBTEFBc2dCQ0FDTmdJQVFRRU1BZ3NnQkNnQ0FDRUNDeUFDSUFOSEN5RUlJQWxCRUdva0FDQUlEd3NnQnlnQ0FDRUZEQUFBQ3dBTFBnRUJmeU1BUVJCcklnVWtBQ0FGSUFRMkFnd2dCVUVJYWlBRlFReHFFUFVDSVFRZ0FDQUJJQUlnQXhDbUV5RUFJQVFROUFJZ0JVRVFhaVFBSUFBTGZBRUNmeU1BUVNCcklnSWtBQ0FDUVFocUlBQWdBUkR3RVNBQUlBSkJCR29nQWlnQ0NFRVFhaERzQ2lFQklBQWdBaWdDQkNBQklBSW9BZ2dRcEFRZ0FrRVlhaUFDUVFocUVGOFFNU0VESUFKQkNHb2lBQ2dDQUNFQklBQkJBRFlDQUNBQkJFQWdBQkFsSUFFUTVoRUxJQU1vQWdBYUlBSkJJR29rQUF2YUF3RUZmeU1BUVJCcklna2tBQ0FDSVFnRFFBSkFJQU1nQ0VZRVFDQURJUWdNQVFzZ0NDZ0NBRVVOQUNBSVFRUnFJUWdNQVFzTElBY2dCVFlDQUNBRUlBSTJBZ0JCQVNFS0EwQUNRQUpBSUFVZ0JrWWdBaUFEUm5JRWZ5QUNCU0FKSUFFcEFnQTNBd2dDUUFKQUFrQWdCU0FFSUFnZ0FtdEJBblVnQmlBRmF5QUFLQUlJRVBjUklndEJBV29pREVFQlRRUkFJQXhCQVd0RkRRVWdCeUFGTmdJQUEwQUNRQ0FDSUFRb0FnQkdEUUFnQlNBQ0tBSUFJQUFvQWdnUTd3Y2lBVUYvUmcwQUlBY2dCeWdDQUNBQmFpSUZOZ0lBSUFKQkJHb2hBZ3dCQ3dzZ0JDQUNOZ0lBREFFTElBY2dCeWdDQUNBTGFpSUZOZ0lBSUFVZ0JrWU5BaUFESUFoR0JFQWdCQ2dDQUNFQ0lBTWhDQXdIQ3lBSlFRUnFRUUFnQUNnQ0NCRHZCeUlJUVg5SERRRUxRUUloQ2d3REN5QUpRUVJxSVFVZ0NDQUdJQWNvQWdCclN3UkFEQU1MQTBBZ0NBUkFJQVV0QUFBaEFpQUhJQWNvQWdBaUMwRUJhallDQUNBTElBSTZBQUFnQ0VGL2FpRUlJQVZCQVdvaEJRd0JDd3NnQkNBRUtBSUFRUVJxSWdJMkFnQWdBaUVJQTBBZ0F5QUlSZ1JBSUFNaENBd0ZDeUFJS0FJQVJRMEVJQWhCQkdvaENBd0FBQXNBQ3lBRUtBSUFDeUFEUnlFS0N5QUpRUkJxSkFBZ0NnOExJQWNvQWdBaEJRd0FBQXNBQ3drQUlBQVE5d29RS2dzM0FDTUFRUkJySWdBa0FDQUFJQVEyQWd3Z0FDQURJQUpyTmdJSUlBQkJER29nQUVFSWFoQ2tBU2dDQUNFQklBQkJFR29rQUNBQkN6UUFBMEFnQVNBQ1JrVUVRQ0FFSUFFc0FBQWlBQ0FESUFCQmYwb2JPZ0FBSUFSQkFXb2hCQ0FCUVFGcUlRRU1BUXNMSUFJTERBQWdBU0FDSUFGQmYwb2JDeW9BQTBBZ0FTQUNSa1VFUUNBRElBRXRBQUE2QUFBZ0EwRUJhaUVESUFGQkFXb2hBUXdCQ3dzZ0FndEFBQU5BSUFFZ0FrY0VRQ0FCSUFFc0FBQWlBRUVBVGdSL1FiQ3RFaWdDQUNBQkxBQUFRUUowYWlnQ0FBVWdBQXM2QUFBZ0FVRUJhaUVCREFFTEN5QUNDeWNBSUFGQkFFNEVmMEd3clJJb0FnQWdBVUgvQVhGQkFuUnFLQUlBQlNBQkMwRVlkRUVZZFF0QUFBTkFJQUVnQWtjRVFDQUJJQUVzQUFBaUFFRUFUZ1IvUWFDaEVpZ0NBQ0FCTEFBQVFRSjBhaWdDQUFVZ0FBczZBQUFnQVVFQmFpRUJEQUVMQ3lBQ0N5Y0FJQUZCQUU0RWYwR2dvUklvQWdBZ0FVSC9BWEZCQW5ScUtBSUFCU0FCQzBFWWRFRVlkUXNKQUNBQUVPc0tFQ29MTlFBRFFDQUJJQUpHUlFSQUlBUWdBU2dDQUNJQUlBTWdBRUdBQVVrYk9nQUFJQVJCQVdvaEJDQUJRUVJxSVFFTUFRc0xJQUlMRXdBZ0FTQUNJQUZCZ0FGSkcwRVlkRUVZZFFzcUFBTkFJQUVnQWtaRkJFQWdBeUFCTEFBQU5nSUFJQU5CQkdvaEF5QUJRUUZxSVFFTUFRc0xJQUlMUVFBRFFDQUJJQUpIQkVBZ0FTQUJLQUlBSWdCQi93Qk5CSDlCc0swU0tBSUFJQUVvQWdCQkFuUnFLQUlBQlNBQUN6WUNBQ0FCUVFScUlRRU1BUXNMSUFJTEhnQWdBVUgvQUUwRWYwR3dyUklvQWdBZ0FVRUNkR29vQWdBRklBRUxDMEVBQTBBZ0FTQUNSd1JBSUFFZ0FTZ0NBQ0lBUWY4QVRRUi9RYUNoRWlnQ0FDQUJLQUlBUVFKMGFpZ0NBQVVnQUFzMkFnQWdBVUVFYWlFQkRBRUxDeUFDQ3g0QUlBRkIvd0JOQkg5Qm9LRVNLQUlBSUFGQkFuUnFLQUlBQlNBQkN3dEZBQUpBQTBBZ0FpQURSZzBCQWtBZ0FpZ0NBRUgvQUVzTkFFR2NteElvQWdBZ0FpZ0NBRUVCZEdvdkFRQWdBWEZGRFFBZ0FrRUVhaUVDREFFTEN5QUNJUU1MSUFNTFJRQURRQUpBSUFJZ0EwY0VmeUFDS0FJQVFmOEFTdzBCUVp5YkVpZ0NBQ0FDS0FJQVFRRjBhaThCQUNBQmNVVU5BU0FDQlNBREN3OExJQUpCQkdvaEFnd0FBQXNBQzBZQUEwQWdBU0FDUndSQUlBTWdBU2dDQUVIL0FFMEVmMEdjbXhJb0FnQWdBU2dDQUVFQmRHb3ZBUUFGUVFBTE93RUFJQU5CQW1vaEF5QUJRUVJxSVFFTUFRc0xJQUlMSkFBZ0FrSC9BRTBFZjBHY214SW9BZ0FnQWtFQmRHb3ZBUUFnQVhGQkFFY0ZRUUFMQ3cwQUlBQW9BZ0FvQWdBUXJCRUxGQUFnQUFSQUlBQWdBQ2dDQUNnQ0JCRUZBQXNMTlFFQmZ5TUFRUkJySWdJa0FDQUFLQUlBUVg5SEJFQWdBaUFDUVFocUlBRVFpZ29RTVJvZ0FDQUNFS2tSQ3lBQ1FSQnFKQUFMSHdBZ0FBSi9RWURMRkVHQXl4UW9BZ0JCQVdvaUFEWUNBQ0FBQ3pZQ0JBcytBQUpBUWZ6S0ZDMEFBRUVCY1EwQVFmektGQkN1QVVVTkFFSDB5aFFROGdvUXVBWkIrTW9VUWZUS0ZEWUNBRUg4eWhRUXJRRUxRZmpLRkNnQ0FBdU5BUUVDZnlNQVFTQnJJZ0lrQUFKQVFkRFhGQkJES0FJQVFkVFhGQ2dDQUd0QkFuVWdBRThFUUNBQUVQVUtEQUVMUWREWEZCQ2pCQ0VCSUFKQkNHcEIwTmNVRUJZZ0FHb1FzQkZCME5jVUVCWWdBUkN2RVNJQklBQVEyZ29nQVJDdUVTQUJJQUVvQWdRUXJSRWdBU2dDQUFSQUlBRW9BaEFnQVNnQ0FDQUJFSWdERU44S0N3c2dBa0VnYWlRQUN3a0FJQUFROFFvUUtndE1BUUYvUWREWEZCQVdJZ0VnQUVrRVFDQUFJQUZyRUpRU0R3c2dBU0FBU3dSQVFkRFhGQ2dDQUNBQVFRSjBhaUVBUWREWEZCQVdJUUZCME5jVUlBQVEzZ3BCME5jVUlBRVE4d29MQzBBQkFuOGpBRUVRYXlJQ0pBQWdBQ0FDUVFScUlBRkJFR29RN0FvaEF5QUFJQUlvQWdRZ0F5QUJFS1FFSUFKQkNHb2dBUkF4S0FJQUdpQUNRUkJxSkFBTE5BQkJrTlVVRUpnQlFaelZGRUVBT2dBQVFaalZGRUVBTmdJQVFaRFZGRUgwdXhJMkFnQkJtTlVVUVp5YkVpZ0NBRFlDQUF0Q0FRRi9FT0lLUVJ4SkJFQVFiZ0FMUWREWEZFSFExeFFRb3dSQkhCRGhDaUlBTmdJQVFkVFhGQ0FBTmdJQVFkRFhGQkJESUFCQjhBQnFOZ0lBUVFBUTRBb0xPUUVCZnlNQVFSQnJJZ0FrQUVIUTF4UkNBRGNEQUNBQVFRQTJBZ3hCNE5jVUlBQkJER29RbFFOQjROZ1VRUUE2QUFBZ0FFRVFhaVFBQzVRSUFRRi9RY0RYRkJDWUFVSEExeFJCNExzU05nSUFFSm9TRUprU1FSd1E5UXBCOE5nVVFkVzdFaEJwR2tIUTF4UVFGaUVBUWREWEZCRDBDa0hRMXhRZ0FCRHpDa0dBMVJRUW1BRkJnTlVVUVpqSUVqWUNBRUdBMVJSQndNa1VFSmNCRUp3QlFZalZGQkNZQVVHSTFSUkJ1TWdTTmdJQVFZalZGRUhJeVJRUWx3RVFuQUVRbUJKQmtOVVVRWXpMRkJDWEFSQ2NBVUdnMVJRUW1BRkJvTlVVUWFUQUVqWUNBRUdnMVJSQmhNc1VFSmNCRUp3QlFhalZGQkNZQVVHbzFSUkJ1TUVTTmdJQVFhalZGRUdVeXhRUWx3RVFuQUZCc05VVUVKZ0JRYkRWRkVHb3ZCSTJBZ0JCdU5VVUVIODJBZ0JCc05VVVFaekxGQkNYQVJDY0FVSEExUlFRbUFGQndOVVVRY3pDRWpZQ0FFSEExUlJCcE1zVUVKY0JFSndCUWNqVkZCRHhCMEhJMVJSQnJNc1VFSmNCRUp3QlFkRFZGQkNZQVVIWTFSUkJydGdBT3dFQVFkRFZGRUhZdkJJMkFnQkIzTlVVRUU0YVFkRFZGRUcweXhRUWx3RVFuQUZCOE5VVUVKZ0JRZmpWRkVLdWdJQ0F3QVUzQWdCQjhOVVVRWUM5RWpZQ0FFR0ExaFFRVGhwQjhOVVVRYnpMRkJDWEFSQ2NBVUdRMWhRUW1BRkJrTllVUWRqSUVqWUNBRUdRMWhSQjBNa1VFSmNCRUp3QlFaaldGQkNZQVVHWTFoUkJ6TW9TTmdJQVFaaldGRUhZeVJRUWx3RVFuQUZCb05ZVUVKZ0JRYURXRkVHZ3pCSTJBZ0JCb05ZVVFlREpGQkNYQVJDY0FVR28xaFFRbUFGQnFOWVVRWWpPRWpZQ0FFR28xaFJCNk1rVUVKY0JFSndCUWJEV0ZCQ1lBVUd3MWhSQjROVVNOZ0lBUWJEV0ZFR1F5aFFRbHdFUW5BRkJ1TllVRUpnQlFialdGRUgwMWhJMkFnQkJ1TllVUVpqS0ZCQ1hBUkNjQVVIQTFoUVFtQUZCd05ZVVFlalhFallDQUVIQTFoUkJvTW9VRUpjQkVKd0JRY2pXRkJDWUFVSEkxaFJCM05nU05nSUFRY2pXRkVHb3loUVFsd0VRbkFGQjBOWVVFSmdCUWREV0ZFSFEyUkkyQWdCQjBOWVVRYkRLRkJDWEFSQ2NBVUhZMWhRUW1BRkIyTllVUWZUYUVqWUNBRUhZMWhSQnVNb1VFSmNCRUp3QlFlRFdGQkNZQVVIZzFoUkJtTndTTmdJQVFlRFdGRUhBeWhRUWx3RVFuQUZCNk5ZVUVKZ0JRZWpXRkVHODNSSTJBZ0JCNk5ZVVFjaktGQkNYQVJDY0FVSHcxaFFRbUFGQitOWVVRY3pwRWpZQ0FFSHcxaFJCME04U05nSUFRZmpXRkVHQTBCSTJBZ0JCOE5ZVVFmREpGQkNYQVJDY0FVR0ExeFFRbUFGQmlOY1VRZkRwRWpZQ0FFR0ExeFJCMk5FU05nSUFRWWpYRkVHSTBoSTJBZ0JCZ05jVVFmakpGQkNYQVJDY0FVR1ExeFFRbUFGQm1OY1VFTjBLUVpEWEZFSEUweEkyQWdCQmtOY1VRWURLRkJDWEFSQ2NBVUdnMXhRUW1BRkJxTmNVRU4wS1FhRFhGRUhnMUJJMkFnQkJvTmNVUVlqS0ZCQ1hBUkNjQVVHdzF4UVFtQUZCc05jVVFlRGVFallDQUVHdzF4UkIwTW9VRUpjQkVKd0JRYmpYRkJDWUFVRzQxeFJCMk44U05nSUFRYmpYRkVIWXloUVFsd0VRbkFFTDJ3RUJBMzhqQUVHZ0FXc2lCQ1FBSUFRZ0FUWUNtQUVnQkVHUUFXb2hCUUpBQTBBZ0JrRUNSaUFDSUFOUGNrVUVRQ0FFSUFJMkFnZ2dBQ0FFUVpBQmFpQUNJQUpCSUdvZ0F5QURJQUpyUVNCS0d5QUVRUWhxSUFSQkVHb2dCU0FFUVF4cUlBQW9BZ0FvQWhBUkRnQWlCa0VDUmcwQ0lBUkJFR29oQVNBRUtBSUlJQUpHRFFJRFFDQUJJQVFvQWd4UEJFQWdCQ2dDQ0NFQ0RBTUZJQVFnQVNnQ0FEWUNCQ0FFS0FLWUFTQUVRUVJxS0FJQUVMUUdJQUZCQkdvaEFRd0JDd0FBQ3dBTEN5QUVLQUtZQVJvZ0JFR2dBV29rQUE4TEVJSUJBQXUyQVFFRGZ5TUFRVUJxSWdRa0FDQUVJQUUyQWpnZ0JFRXdhaUVGQWtBRFFDQUdRUUpHSUFJZ0EwOXlSUVJBSUFRZ0FqWUNDQ0FBSUFSQk1Hb2dBaUFESUFSQkNHb2dCRUVRYWlBRklBUkJER29nQUNnQ0FDZ0NEQkVPQUNJR1FRSkdEUUlnQkVFUWFpRUJJQVFvQWdnZ0FrWU5BZ05BSUFFZ0JDZ0NERThFUUNBRUtBSUlJUUlNQXdVZ0JFRTRhaUFCRVBnS0lBRkJBV29oQVF3QkN3QUFDd0FMQ3lBRUtBSTRHaUFFUVVCckpBQVBDeENDQVFBTGhRRUFJd0JCSUdzaUFTUUFJQUZCRUdvUVRpRUVBbjhnQVVFSWFpSUNFUEVISUFKQnRNUVNOZ0lBSUFJTElBUVFZU0FGRUJNZ0JSQVRJQVVRSDBFQ2RHb1FuUklnQkJBVElRSWdBQkRLQWlFREFuOGdBVUVJYWlJQUVQRUhJQUJCbE1VU05nSUFJQUFMSUFNUVlTQUNJQUlRb0FFZ0Ftb1FuQklnQkJBZ0dpQUJRU0JxSkFBTFN3QWpBRUVnYXlJQkpBQWdBVUVRYWhCT0lnTVFZU0FGRUJNZ0JSQVRJQVVRSDJvUStRb2dBeEFUSVFJZ0FCQk9FR0VnQWlBQ0VLQUJJQUpxRVBrS0lBTVFJQm9nQVVFZ2FpUUFDejRCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFCQkVHb1FtUUVhSUFJb0FnZ2dBUkRvQWlBQkVFTWhBQ0FDS0FJTUlBQVE2QUlnQWtFUWFpUUFDMUVCQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lBSUFNZ0FEWUNDQU5BSUFOQkNHb2dBeEFlQkVBZ0FpQURLQUlJS0FJQU5nSUFJQUpCQkdvaEFpQURRUWhxRUdZYURBRUxDeUFEUVJCcUpBQWdBZ3RSQVFGL0l3QkJFR3NpQXlRQUlBTWdBVFlDQUNBRElBQTJBZ2dEUUNBRFFRaHFJQU1RSGdSQUlBSWdBeWdDQ0MwQUFEb0FBQ0FDUVFGcUlRSWdBMEVJYWhEakF3d0JDd3NnQTBFUWFpUUFJQUlMa3dNQkIzOGpBRUh3QTJzaUFDUUFJQUJCNkFOcUlBTVFYQ0FBUWVnRGFoQ0pBaUVLSUFJQ2Z5QUZFQjhFUUNBRlFRQVF3Z1lvQWdBZ0NrRXRFSjBDUmlFTEN5QUxDeUFBUWVnRGFpQUFRZUFEYWlBQVFkd0RhaUFBUWRnRGFpQUFRY2dEYWhCT0lnd2dBRUc0QTJvUXlnSWlDQ0FBUWFnRGFoREtBaUlISUFCQnBBTnFFUDBLSUFCQjFBUTJBaEFnQUVFSWFrRUFJQUJCRUdvUW5nRWhDUUovSUFVUUh5QUFLQUtrQTBvRVFDQUZFQjhoQWlBQUtBS2tBeUVHSUFjUUh5QUNJQVpyUVFGMGFrRUJhZ3dCQ3lBSEVCOUJBbW9MSVFZZ0FFRVFhaUVDQWtBZ0NCQWZJQVpxSUFBb0FxUURhaUlHUWVVQVNRMEFJQWtnQmtFQ2RCQ2JBUkRHQVNBSktBSUFJZ0lOQUJDQ0FRQUxJQUlnQUVFRWFpQUFJQU1vQWdRZ0JSQVRJQVVRRXlBRkVCOUJBblJxSUFvZ0N5QUFRZUFEYWlBQUtBTGNBeUFBS0FMWUF5QU1JQWdnQnlBQUtBS2tBeEQ4Q2lBQklBSWdBQ2dDQkNBQUtBSUFJQU1nQkJDK0F5RUJJQWtRblFFZ0J4QWdHaUFJRUNBYUlBd1FJQm9nQUVIb0Eyb1FXU0FBUWZBRGFpUUFJQUVMNUFRQkMzOGpBRUd3Q0dzaUFDUUFJQUFnQlRjREVDQUFJQVkzQXhnZ0FDQUFRY0FIYWpZQ3ZBY2dBRUhBQjJwQjVBQkJ6N3NTSUFCQkVHb1FKeUVISUFCQjFBUTJBcUFFSUFCQm1BUnFRUUFnQUVHZ0JHb1FuZ0VoRGlBQVFkUUVOZ0tnQkNBQVFaQUVha0VBSUFCQm9BUnFFSjRCSVFvZ0FFR2dCR29oQ0FKQUlBZEI1QUJQQkVBUWZ5RUhJQUFnQlRjREFDQUFJQVkzQXdnZ0FFRzhCMm9nQjBIUHV4SWdBQkNaQXlFSElBQW9BcndISWdoRkRRRWdEaUFJRU1ZQklBb2dCMEVDZEJDYkFSREdBU0FLRUpFSERRRWdDaWdDQUNFSUN5QUFRWWdFYWlBREVGd2dBRUdJQkdvUWlRSWlFU0FBS0FLOEJ5SUpJQWNnQ1dvZ0NCQy9BeUFDQW44Z0J3UkFJQUFvQXJ3SExRQUFRUzFHSVE4TElBOExJQUJCaUFScUlBQkJnQVJxSUFCQi9BTnFJQUJCK0FOcUlBQkI2QU5xRUU0aUVDQUFRZGdEYWhES0FpSUxJQUJCeUFOcUVNb0NJZ2tnQUVIRUEyb1EvUW9nQUVIVUJEWUNNQ0FBUVNocVFRQWdBRUV3YWhDZUFTRU1BbjhnQnlBQUtBTEVBeUlDU2dSQUlBa1FIeUFISUFKclFRRjBRUUZ5YWd3QkN5QUpFQjlCQW1vTElRMGdBRUV3YWlFQ0lBc1FIeUFOYWlBQUtBTEVBMm9pRFVIbEFFOEVRQ0FNSUExQkFuUVFtd0VReGdFZ0RDZ0NBQ0lDUlEwQkN5QUNJQUJCSkdvZ0FFRWdhaUFES0FJRUlBZ2dDQ0FIUVFKMGFpQVJJQThnQUVHQUJHb2dBQ2dDL0FNZ0FDZ0MrQU1nRUNBTElBa2dBQ2dDeEFNUS9Bb2dBU0FDSUFBb0FpUWdBQ2dDSUNBRElBUVF2Z01oQVNBTUVKMEJJQWtRSUJvZ0N4QWdHaUFRRUNBYUlBQkJpQVJxRUZrZ0NoQ2RBU0FPRUowQklBQkJzQWhxSkFBZ0FROExFSUlCQUF1S0F3RUhmeU1BUWNBQmF5SUFKQUFnQUVHNEFXb2dBeEJjSUFCQnVBRnFFUG9CSVFvZ0FnSi9JQVVRSHdSQUlBVkJBQkJRTFFBQUlBcEJMUkRlQVVIL0FYRkdJUXNMSUFzTElBQkJ1QUZxSUFCQnNBRnFJQUJCcndGcUlBQkJyZ0ZxSUFCQm9BRnFFRTRpRENBQVFaQUJhaEJPSWdnZ0FFR0FBV29RVGlJSElBQkIvQUJxRUlBTElBQkIxQVEyQWhBZ0FFRUlha0VBSUFCQkVHb1FuZ0VoQ1FKL0lBVVFIeUFBS0FKOFNnUkFJQVVRSHlFQ0lBQW9BbndoQmlBSEVCOGdBaUFHYTBFQmRHcEJBV29NQVFzZ0J4QWZRUUpxQ3lFR0lBQkJFR29oQWdKQUlBZ1FIeUFHYWlBQUtBSjhhaUlHUWVVQVNRMEFJQWtnQmhDYkFSREdBU0FKS0FJQUlnSU5BQkNDQVFBTElBSWdBRUVFYWlBQUlBTW9BZ1FnQlJBVElBVVFFeUFGRUI5cUlBb2dDeUFBUWJBQmFpQUFMQUN2QVNBQUxBQ3VBU0FNSUFnZ0J5QUFLQUo4RVA4S0lBRWdBaUFBS0FJRUlBQW9BZ0FnQXlBRUVLY0RJUUVnQ1JDZEFTQUhFQ0FhSUFnUUlCb2dEQkFnR2lBQVFiZ0JhaEJaSUFCQndBRnFKQUFnQVFzK0FRRi9JQUFvQWdBaEFTQUFJQUFRSlRZQ0FDQUFFQ1VvQWdCQkFEWUNDQ0FBRUNWQkFEWUNBQ0FBRUNOQkFEWUNBQ0FCS0FJRUlnQWdBU0FBR3d2WkJBRUxmeU1BUWRBRGF5SUFKQUFnQUNBRk53TVFJQUFnQmpjREdDQUFJQUJCNEFKcU5nTGNBaUFBUWVBQ2FrSGtBRUhQdXhJZ0FFRVFhaEFuSVFjZ0FFSFVCRFlDOEFFZ0FFSG9BV3BCQUNBQVFmQUJhaENlQVNFT0lBQkIxQVEyQXZBQklBQkI0QUZxUVFBZ0FFSHdBV29RbmdFaENpQUFRZkFCYWlFSUFrQWdCMEhrQUU4RVFCQi9JUWNnQUNBRk53TUFJQUFnQmpjRENDQUFRZHdDYWlBSFFjKzdFaUFBRUprRElRY2dBQ2dDM0FJaUNFVU5BU0FPSUFnUXhnRWdDaUFIRUpzQkVNWUJJQW9Ra1FjTkFTQUtLQUlBSVFnTElBQkIyQUZxSUFNUVhDQUFRZGdCYWhENkFTSVJJQUFvQXR3Q0lna2dCeUFKYWlBSUVPNERJQUlDZnlBSEJFQWdBQ2dDM0FJdEFBQkJMVVloRHdzZ0R3c2dBRUhZQVdvZ0FFSFFBV29nQUVIUEFXb2dBRUhPQVdvZ0FFSEFBV29RVGlJUUlBQkJzQUZxRUU0aUN5QUFRYUFCYWhCT0lna2dBRUdjQVdvUWdBc2dBRUhVQkRZQ01DQUFRU2hxUVFBZ0FFRXdhaENlQVNFTUFuOGdCeUFBS0FLY0FTSUNTZ1JBSUFrUUh5QUhJQUpyUVFGMFFRRnlhZ3dCQ3lBSkVCOUJBbW9MSVEwZ0FFRXdhaUVDSUFzUUh5QU5haUFBS0FLY0FXb2lEVUhsQUU4RVFDQU1JQTBRbXdFUXhnRWdEQ2dDQUNJQ1JRMEJDeUFDSUFCQkpHb2dBRUVnYWlBREtBSUVJQWdnQnlBSWFpQVJJQThnQUVIUUFXb2dBQ3dBendFZ0FDd0F6Z0VnRUNBTElBa2dBQ2dDbkFFUS93b2dBU0FDSUFBb0FpUWdBQ2dDSUNBRElBUVFwd01oQVNBTUVKMEJJQWtRSUJvZ0N4QWdHaUFRRUNBYUlBQkIyQUZxRUZrZ0NoQ2RBU0FPRUowQklBQkIwQU5xSkFBZ0FROExFSUlCQUF0d0FRRi9Jd0JCSUdzaUF5UUFJQU1nQVRZQ0VDQURJQUEyQWhnZ0F5QUNOZ0lJQTBBQ1FBSi9RUUVnQTBFWWFpQURRUkJxRUI1RkRRQWFJQU1nQXlnQ0dDQURLQUlJRU1RQ0RRRkJBQXNoQUNBRFFTQnFKQUFnQUE4TElBTkJHR29RWmhvZ0EwRUlhaEJtR2d3QUFBc0FDOVFCQVFSL0l3QkJFR3NpQXlRQUlBQVFIeUVGSUFBUXRnWWhCQUpBSUFFZ0FoQ3ZCU0lHUlEwQUlBRWdBQkFUSUFBUUV5QUFFQjlCQW5ScUVOd0tCRUFnQUFKL0lBTWdBQkR0QlJvZ0F5QUJJQUlRcndzZ0F3c1FFeUFERUI4UW5CRWdBeEFnR2d3QkN5QUVJQVZySUFaSkJFQWdBQ0FFSUFVZ0Jtb2dCR3NnQlNBRkVOWUtDeUFBRUJNZ0JVRUNkR29oQkFOQUlBRWdBa2NFUUNBRUlBRVFud0lnQVVFRWFpRUJJQVJCQkdvaEJBd0JDd3NnQTBFQU5nSUFJQVFnQXhDZkFpQUFJQVVnQm1vUWh3TUxJQU5CRUdva0FBdWZBZ0VCZnlNQVFjQURheUlBSkFBZ0FDQUJOZ0s0QXlBQUlBSTJBckFESUFCQjFRUTJBaFFnQUVFWWFpQUFRU0JxSUFCQkZHb1FuZ0VoQVNBQVFSQnFJQVFRWENBQVFSQnFFSWtDSVFjZ0FFRUFPZ0FQSUFCQnVBTnFJQUlnQXlBQVFSQnFJQVFvQWdRZ0JTQUFRUTlxSUFjZ0FTQUFRUlJxSUFCQnNBTnFFSVVMQkVBZ0JoQ0RDeUFBTFFBUEJFQWdCaUFIUVMwUW5RSVF0QVlMSUFkQk1CQ2RBaUVDSUFFb0FnQWhCQ0FBS0FJVUlnTkJmR29oQndOQUFrQWdCQ0FIVHcwQUlBUW9BZ0FnQWtjTkFDQUVRUVJxSVFRTUFRc0xJQVlnQkNBREVLa1NDeUFBUWJnRGFpQUFRYkFEYWhESEFRUkFJQVVnQlNnQ0FFRUNjallDQUFzZ0FDZ0N1QU1oQWlBQVFSQnFFRmtnQVJDZEFTQUFRY0FEYWlRQUlBSUx2UUVCQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lBSUFNZ0FUWUNDQUpBSUFBUUl5Z0NBRVVOQUNBQUVLWVNJZ0ZGRFFBRFFDQURRUWhxSUFNUUhnUkFJQUZCRUdvZ0EwRUlhaEJYRUtBU0lBRVE5Z29oQWlBQUlBRVFseElnQTBFSWFoQ3BBU0FDSWdFTkFRd0NDd3NEUUNBQktBSUlJZ0lFUUNBQ0lRRU1BUXNMSUFBZ0FSQ3FCZ3NnQTBFSWFpQURFQjRFUUFOQUlBQWdBMEVJYWhCWEVQZ1JJQU5CQ0dvUXFRRWdBMEVJYWlBREVCNE5BQXNMSUFOQkVHb2tBQXVaQWdFQmZ5TUFRUkJySWdva0FDQUpBbjhnQUFSQUlBb2dBUkNDQ3lJQUVPZ0RJQUlnQ2lnQ0FEWUFBQ0FLSUFBUTVnTWdDQ0FLRUpRRElBb1FJQm9nQ2lBQUVOZ0NJQWNnQ2hDVUF5QUtFQ0FhSUFNZ0FCRFNBallDQUNBRUlBQVFpQUkyQWdBZ0NpQUFFSWNDSUFVZ0NoRFRBU0FLRUNBYUlBb2dBQkRaQWlBR0lBb1FsQU1nQ2hBZ0dpQUFFT1VEREFFTElBb2dBUkNCQ3lJQUVPZ0RJQUlnQ2lnQ0FEWUFBQ0FLSUFBUTVnTWdDQ0FLRUpRRElBb1FJQm9nQ2lBQUVOZ0NJQWNnQ2hDVUF5QUtFQ0FhSUFNZ0FCRFNBallDQUNBRUlBQVFpQUkyQWdBZ0NpQUFFSWNDSUFVZ0NoRFRBU0FLRUNBYUlBb2dBQkRaQWlBR0lBb1FsQU1nQ2hBZ0dpQUFFT1VEQ3pZQ0FDQUtRUkJxSkFBTDl3TUJBWDhqQUVId0JHc2lBQ1FBSUFBZ0FUWUM2QVFnQUNBQ05nTGdCQ0FBUWRVRU5nSVFJQUJCeUFGcUlBQkIwQUZxSUFCQkVHb1FuZ0VoQVNBQVFjQUJhaUFFRUZ3Z0FFSEFBV29RaVFJaEJ5QUFRUUE2QUw4QkFrQWdBRUhvQkdvZ0FpQURJQUJCd0FGcUlBUW9BZ1FnQlNBQVFiOEJhaUFISUFFZ0FFSEVBV29nQUVIZ0JHb1FoUXRGRFFBZ0FFSEx1eElvQUFBMkFMY0JJQUJCeExzU0tRQUFOd093QVNBSElBQkJzQUZxSUFCQnVnRnFJQUJCZ0FGcUVMOERJQUJCMUFRMkFoQWdBRUVJYWtFQUlBQkJFR29RbmdFaEF5QUFRUkJxSVFJQ1FDQUFLQUxFQVNBQktBSUFhMEdKQTA0RVFDQURJQUFvQXNRQklBRW9BZ0JyUVFKMVFRSnFFSnNCRU1ZQklBTW9BZ0JGRFFFZ0F5Z0NBQ0VDQ3lBQUxRQy9BUVJBSUFKQkxUb0FBQ0FDUVFGcUlRSUxJQUVvQWdBaEJBTkFJQVFnQUNnQ3hBRlBCRUFDUUNBQ1FRQTZBQUFnQUNBR05nSUFJQUJCRUdvZ0FCQzNDMEVCUncwQUlBTVFuUUVNQkFzRklBSWdBRUd3QVdvZ0FFR0FBV29nQUVHQUFXb1FqUVVnQkJEekJ5QUFRWUFCYW10QkFuVnFMUUFBT2dBQUlBSkJBV29oQWlBRVFRUnFJUVFNQVFzTEVJSUJBQXNRZ2dFQUN5QUFRZWdFYWlBQVFlQUVhaERIQVFSQUlBVWdCU2dDQUVFQ2NqWUNBQXNnQUNnQzZBUWhBaUFBUWNBQmFoQlpJQUVRblFFZ0FFSHdCR29rQUNBQ0MzSUJBWDhqQUVFZ2F5SURKQUFnQXlBQk5nSVFJQU1nQURZQ0dDQURJQUkyQWdnRFFBSkFBbjlCQVNBRFFSaHFJQU5CRUdvUUhrVU5BQm9nQXlnQ0dDMEFBQ0FES0FJSUxRQUFSZzBCUVFBTElRQWdBMEVnYWlRQUlBQVBDeUFEUVJocUVPTURJQU5CQ0dvUTR3TU1BQUFMQUF2TEFRRUVmeU1BUVNCcklnVWtBQ0FBRUI4aEJDQUFFRjBoQXdKQUlBRWdBaERXQ0NJR1JRMEFJQUVnQUJBVElBQVFFeUFBRUI5cUVOd0tCRUFnQUNBRlFSQnFJQUVnQWlBQUVOY0lJZ0FRRXlBQUVCOFF5Z1VhSUFBUUlCb01BUXNnQXlBRWF5QUdTUVJBSUFBZ0F5QUVJQVpxSUFOcklBUWdCQkRzQndzZ0FCQVRJQVJxSVFNRFFDQUJJQUpIQkVBZ0F5QUJFSlFCSUFGQkFXb2hBU0FEUVFGcUlRTU1BUXNMSUFWQkFEb0FEeUFESUFWQkQyb1FsQUVnQUNBRUlBWnFFSWNEQ3lBRlFTQnFKQUFMcHdJQkFYOGpBRUdnQVdzaUFDUUFJQUFnQVRZQ21BRWdBQ0FDTmdLUUFTQUFRZFVFTmdJVUlBQkJHR29nQUVFZ2FpQUFRUlJxRUo0QklRRWdBRUVRYWlBRUVGd2dBRUVRYWhENkFTRUhJQUJCQURvQUR5QUFRWmdCYWlBQ0lBTWdBRUVRYWlBRUtBSUVJQVVnQUVFUGFpQUhJQUVnQUVFVWFpQUFRWVFCYWhDTUN3UkFJQVlRaVFRZ0FDMEFEd1JBSUFZZ0IwRXRFTjRCRU9JRUN5QUhRVEFRM2dFaEFpQUJLQUlBSVFRZ0FDZ0NGQ0lEUVg5cUlRY2dBa0gvQVhFaEFnTkFBa0FnQkNBSFR3MEFJQVF0QUFBZ0FrY05BQ0FFUVFGcUlRUU1BUXNMSUFZZ0JDQURFSzhTQ3lBQVFaZ0JhaUFBUVpBQmFoQytBUVJBSUFVZ0JTZ0NBRUVDY2pZQ0FBc2dBQ2dDbUFFaEFpQUFRUkJxRUZrZ0FSQ2RBU0FBUWFBQmFpUUFJQUlMbVFJQkFYOGpBRUVRYXlJS0pBQWdDUUovSUFBRVFDQUtJQUVRaVFzaUFCRG9BeUFDSUFvb0FnQTJBQUFnQ2lBQUVPWURJQWdnQ2hEVEFTQUtFQ0FhSUFvZ0FCRFlBaUFISUFvUTB3RWdDaEFnR2lBRElBQVEwZ0k2QUFBZ0JDQUFFSWdDT2dBQUlBb2dBQkNIQWlBRklBb1Ewd0VnQ2hBZ0dpQUtJQUFRMlFJZ0JpQUtFTk1CSUFvUUlCb2dBQkRsQXd3QkN5QUtJQUVRaUFzaUFCRG9BeUFDSUFvb0FnQTJBQUFnQ2lBQUVPWURJQWdnQ2hEVEFTQUtFQ0FhSUFvZ0FCRFlBaUFISUFvUTB3RWdDaEFnR2lBRElBQVEwZ0k2QUFBZ0JDQUFFSWdDT2dBQUlBb2dBQkNIQWlBRklBb1Ewd0VnQ2hBZ0dpQUtJQUFRMlFJZ0JpQUtFTk1CSUFvUUlCb2dBQkRsQXdzMkFnQWdDa0VRYWlRQUMrWURBUUYvSXdCQm9BSnJJZ0FrQUNBQUlBRTJBcGdDSUFBZ0FqWUNrQUlnQUVIVkJEWUNFQ0FBUVpnQmFpQUFRYUFCYWlBQVFSQnFFSjRCSVFFZ0FFR1FBV29nQkJCY0lBQkJrQUZxRVBvQklRY2dBRUVBT2dDUEFRSkFJQUJCbUFKcUlBSWdBeUFBUVpBQmFpQUVLQUlFSUFVZ0FFR1BBV29nQnlBQklBQkJsQUZxSUFCQmhBSnFFSXdMUlEwQUlBQkJ5N3NTS0FBQU5nQ0hBU0FBUWNTN0Vpa0FBRGNEZ0FFZ0J5QUFRWUFCYWlBQVFZb0JhaUFBUWZZQWFoRHVBeUFBUWRRRU5nSVFJQUJCQ0dwQkFDQUFRUkJxRUo0QklRTWdBRUVRYWlFQ0FrQWdBQ2dDbEFFZ0FTZ0NBR3RCNHdCT0JFQWdBeUFBS0FLVUFTQUJLQUlBYTBFQ2FoQ2JBUkRHQVNBREtBSUFSUTBCSUFNb0FnQWhBZ3NnQUMwQWp3RUVRQ0FDUVMwNkFBQWdBa0VCYWlFQ0N5QUJLQUlBSVFRRFFDQUVJQUFvQXBRQlR3UkFBa0FnQWtFQU9nQUFJQUFnQmpZQ0FDQUFRUkJxSUFBUXR3dEJBVWNOQUNBREVKMEJEQVFMQlNBQ0lBQkI5Z0JxSUFCQmdBRnFJQVFROWdjZ0FHc2dBR290QUFvNkFBQWdBa0VCYWlFQ0lBUkJBV29oQkF3QkN3c1FnZ0VBQ3hDQ0FRQUxJQUJCbUFKcUlBQkJrQUpxRUw0QkJFQWdCU0FGS0FJQVFRSnlOZ0lBQ3lBQUtBS1lBaUVDSUFCQmtBRnFFRmtnQVJDZEFTQUFRYUFDYWlRQUlBSUxJd0FnQUNBQlJ3UkFJQUVRSXhvZ0FCQWpHaUFBSUFFUTV3TWdBUkNCQVJDckVnc0xSUUVCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ2dEUUNBQUlBRkhCRUFnQTBFSWFpQUFLQUlBRU1ZTElBQkJCR29oQUF3QkN3c2dBeWdDQ0NFQUlBTkJFR29rQUNBQUN6NEJBWDhqQUVFUWF5SUZKQUFnQlNBRU5nSU1JQVZCQ0dvZ0JVRU1haEQxQWlFRUlBQWdBU0FDSUFNUXRBc2hBQ0FFRVBRQ0lBVkJFR29rQUNBQUMzNEJBWDhqQUVHUUFXc2lCaVFBSUFZZ0JrR0VBV28yQWh3Z0FDQUdRU0JxSUFaQkhHb2dBeUFFSUFVUWtnc2dCa0lBTndNUUlBWWdCa0VnYWpZQ0RDQUJJQVpCREdvZ0FTQUNLQUlBRU1JSklBWkJFR29nQUNnQ0FCQzFFaUlBUVg5R0JFQVFnZ0VBQ3lBQ0lBRWdBRUVDZEdvMkFnQWdCa0dRQVdva0FBdEtBQ01BUWFBRGF5SUNKQUFnQWlBQ1FhQURhallDRENBQVFRaHFJQUpCRUdvZ0FrRU1haUFFSUFVZ0JoQzJFaUFDUVJCcUlBSW9BZ3dnQVJDMEVpRUFJQUpCb0FOcUpBQWdBQXRGQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDQ0FOQUlBQWdBVWNFUUNBRFFRaHFJQUFzQUFBUXh3c2dBRUVCYWlFQURBRUxDeUFES0FJSUlRQWdBMEVRYWlRQUlBQUxTZ0FqQUVHQUFXc2lBaVFBSUFJZ0FrSDBBR28yQWd3Z0FFRUlhaUFDUVJCcUlBSkJER29nQkNBRklBWVFrZ3NnQWtFUWFpQUNLQUlNSUFFUXVCSWhBQ0FDUVlBQmFpUUFJQUFMS0FBZ0FTQUNJQU1nQkVFRUVKWURJUUVnQXkwQUFFRUVjVVVFUUNBQUlBRkJsSEZxTmdJQUN3czNBQ0FCSUFJZ0F5QUVRUUVRbGdNaEFTQURLQUlBSWdKQkJIRWdBVUVHU25KRkJFQWdBQ0FCTmdJQUR3c2dBeUFDUVFSeU5nSUFDemNBSUFFZ0FpQURJQVJCQWhDV0F5RUJJQU1vQWdBaUFrRUVjU0FCUVR4S2NrVUVRQ0FBSUFFMkFnQVBDeUFESUFKQkJISTJBZ0FMT3dFQmZ5TUFRUkJySWdJa0FDQUFRUVJxRUpBTElBSkJBRFlDRENBQVFReHFJQUpCREdvZ0FSQ2hCeUFBSUFBUUpUWUNBQ0FDUVJCcUpBQUxld0FnQUVFSWFpQUFLQUlJS0FJSUVRQUFJZ0FRSDBFQUlBQkJER29RSDJ0R0JFQWdCQ0FFS0FJQVFRUnlOZ0lBRHdzZ0FpQURJQUFnQUVFWWFpQUZJQVJCQUJEREJpQUFheUlDSUFFb0FnQWlBRUVNUjNKRkJFQWdBVUVBTmdJQUR3c2dBa0VNUnlBQVFRdEtja1VFUUNBQklBQkJER28yQWdBTEMyRUJBWDhqQUVFUWF5SUVKQUFnQkNBQk5nSUlBMEFDUUNBQUlBUkJDR29ROWdGRkRRQWdBMEdBd0FBZ0FCQ2xBUkRhQWtVTkFDQUFFTDBCR2d3QkN3c2dBQ0FFUVFocUVNY0JCRUFnQWlBQ0tBSUFRUUp5TmdJQUN5QUVRUkJxSkFBTE53QWdBU0FDSUFNZ0JFRUNFSllESVFFZ0F5Z0NBQ0lDUVFSeElBRkJPMHB5UlFSQUlBQWdBVFlDQUE4TElBTWdBa0VFY2pZQ0FBczZBQ0FCSUFJZ0F5QUVRUUlRbGdNaEFTQURLQUlBSWdKQkJIRWdBVUVNU25KRkJFQWdBQ0FCUVg5cU5nSUFEd3NnQXlBQ1FRUnlOZ0lBQ3pnQUlBRWdBaUFESUFSQkF4Q1dBeUVCSUFNb0FnQWlBa0VFY1NBQlFlMENTbkpGQkVBZ0FDQUJOZ0lBRHdzZ0F5QUNRUVJ5TmdJQUN6b0FJQUVnQWlBRElBUkJBaENXQXlFQklBTW9BZ0FpQWtFRWNTQUJRWDlxUVF0TGNrVUVRQ0FBSUFFMkFnQVBDeUFESUFKQkJISTJBZ0FMTndBZ0FTQUNJQU1nQkVFQ0VKWURJUUVnQXlnQ0FDSUNRUVJ4SUFGQkYwcHlSUVJBSUFBZ0FUWUNBQThMSUFNZ0FrRUVjallDQUFzNkFDQUJJQUlnQXlBRVFRSVFsZ01oQVNBREtBSUFJZ0pCQkhFZ0FVRi9ha0VlUzNKRkJFQWdBQ0FCTmdJQUR3c2dBeUFDUVFSeU5nSUFDMlVCQVg4akFFRVFheUlFSkFBZ0JDQUJOZ0lJUVFZaEFRSkFBa0FnQUNBRVFRaHFFTWNCRFFCQkJDRUJJQU1nQUJDbEFSRGxCRUVsUncwQVFRSWhBU0FBRUwwQklBUkJDR29ReHdGRkRRRUxJQUlnQWlnQ0FDQUJjallDQUFzZ0JFRVFhaVFBQy9zSEFRSi9Jd0JCUUdvaUJ5UUFJQWNnQVRZQ09DQUVRUUEyQWdBZ0J5QURFRndnQnhDSkFpRUlJQWNRV1FKL0FrQUNRQ0FHUWI5L2FpSUpRVGhMQkVBZ0JrRWxSdzBCSUFkQk9Hb2dBaUFFSUFnUXhoSU1BZ3NDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FKUVFGckRqZ0JGZ1FXQlJZR0J4WVdGZ29XRmhZV0RnOFFGaFlXRXhVV0ZoWVdGaFlXQUFFQ0F3TVdGZ0VXQ0JZV0NRc1dEQllORmdzV0ZoRVNGQUFMSUFBZ0JVRVlhaUFIUVRocUlBSWdCQ0FJRUpZTERCWUxJQUFnQlVFUWFpQUhRVGhxSUFJZ0JDQUlFSlVMREJVTElBQkJDR29nQUNnQ0NDZ0NEQkVBQUNFQklBY2dBQ0FIS0FJNElBSWdBeUFFSUFVZ0FSQVRJQUVRRXlBQkVCOUJBblJxRUx3RE5nSTREQlFMSUFWQkRHb2dCMEU0YWlBQ0lBUWdDQkRGRWd3VEN5QUhRYWk2RWlrREFEY0RHQ0FIUWFDNkVpa0RBRGNERUNBSFFaaTZFaWtEQURjRENDQUhRWkM2RWlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVnYWhDOEF6WUNPQXdTQ3lBSFFjaTZFaWtEQURjREdDQUhRY0M2RWlrREFEY0RFQ0FIUWJpNkVpa0RBRGNEQ0NBSFFiQzZFaWtEQURjREFDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFjZ0IwRWdhaEM4QXpZQ09Bd1JDeUFGUVFocUlBZEJPR29nQWlBRUlBZ1F4QklNRUFzZ0JVRUlhaUFIUVRocUlBSWdCQ0FJRU1NU0RBOExJQVZCSEdvZ0IwRTRhaUFDSUFRZ0NCRENFZ3dPQ3lBRlFSQnFJQWRCT0dvZ0FpQUVJQWdRd1JJTURRc2dCVUVFYWlBSFFUaHFJQUlnQkNBSUVNQVNEQXdMSUFkQk9Hb2dBaUFFSUFnUXZ4SU1Dd3NnQUNBRlFRaHFJQWRCT0dvZ0FpQUVJQWdRdmhJTUNnc2dCMEhRdWhKQkxCQTlJZ1lnQUNBQklBSWdBeUFFSUFVZ0JpQUdRU3hxRUx3RE5nSTREQWtMSUFkQmtMc1NLQUlBTmdJUUlBZEJpTHNTS1FNQU53TUlJQWRCZ0xzU0tRTUFOd01BSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVJScUVMd0ROZ0k0REFnTElBVWdCMEU0YWlBQ0lBUWdDQkM4RWd3SEN5QUhRYmk3RWlrREFEY0RHQ0FIUWJDN0Vpa0RBRGNERUNBSFFhaTdFaWtEQURjRENDQUhRYUM3RWlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVnYWhDOEF6WUNPQXdHQ3lBRlFSaHFJQWRCT0dvZ0FpQUVJQWdRdXhJTUJRc2dBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVMQUF3RkN5QUFRUWhxSUFBb0FnZ29BaGdSQUFBaEFTQUhJQUFnQnlnQ09DQUNJQU1nQkNBRklBRVFFeUFCRUJNZ0FSQWZRUUowYWhDOEF6WUNPQXdEQ3lBRlFSUnFJQWRCT0dvZ0FpQUVJQWdRbEFzTUFnc2dCVUVVYWlBSFFUaHFJQUlnQkNBSUVMb1NEQUVMSUFRZ0JDZ0NBRUVFY2pZQ0FBc2dCeWdDT0FzaEFDQUhRVUJySkFBZ0FBdElBUUYvSXdCQkVHc2lCaVFBSUFZZ0FUWUNDQ0FHSUFNUVhDQUdFSWtDSVFFZ0JoQlpJQVZCRkdvZ0JrRUlhaUFDSUFRZ0FSQ1VDeUFHS0FJSUlRQWdCa0VRYWlRQUlBQUxTZ0VCZnlNQVFSQnJJZ1lrQUNBR0lBRTJBZ2dnQmlBREVGd2dCaENKQWlFQklBWVFXU0FBSUFWQkVHb2dCa0VJYWlBQ0lBUWdBUkNWQ3lBR0tBSUlJUUFnQmtFUWFpUUFJQUFMU2dFQmZ5TUFRUkJySWdZa0FDQUdJQUUyQWdnZ0JpQURFRndnQmhDSkFpRUJJQVlRV1NBQUlBVkJHR29nQmtFSWFpQUNJQVFnQVJDV0N5QUdLQUlJSVFBZ0JrRVFhaVFBSUFBTE1RQWdBQ0FCSUFJZ0F5QUVJQVVnQUVFSWFpQUFLQUlJS0FJVUVRQUFJZ0FRRXlBQUVCTWdBQkFmUVFKMGFoQzhBd3RlQVFGL0l3QkJJR3NpQmlRQUlBWkJ1THNTS1FNQU53TVlJQVpCc0xzU0tRTUFOd01RSUFaQnFMc1NLUU1BTndNSUlBWkJvTHNTS1FNQU53TUFJQUFnQVNBQ0lBTWdCQ0FGSUFZZ0JrRWdhaEM4QXlFQUlBWkJJR29rQUNBQUN5Z0FJQUVnQWlBRElBUkJCQkNZQXlFQklBTXRBQUJCQkhGRkJFQWdBQ0FCUVpSeGFqWUNBQXNMTndBZ0FTQUNJQU1nQkVFQkVKZ0RJUUVnQXlnQ0FDSUNRUVJ4SUFGQkJrcHlSUVJBSUFBZ0FUWUNBQThMSUFNZ0FrRUVjallDQUFzM0FDQUJJQUlnQXlBRVFRSVFtQU1oQVNBREtBSUFJZ0pCQkhFZ0FVRThTbkpGQkVBZ0FDQUJOZ0lBRHdzZ0F5QUNRUVJ5TmdJQUMzc0FJQUJCQ0dvZ0FDZ0NDQ2dDQ0JFQUFDSUFFQjlCQUNBQVFReHFFQjlyUmdSQUlBUWdCQ2dDQUVFRWNqWUNBQThMSUFJZ0F5QUFJQUJCR0dvZ0JTQUVRUUFReFFZZ0FHc2lBaUFCS0FJQUlnQkJERWR5UlFSQUlBRkJBRFlDQUE4TElBSkJERWNnQUVFTFNuSkZCRUFnQVNBQVFReHFOZ0lBQ3d0aEFRRi9Jd0JCRUdzaUJDUUFJQVFnQVRZQ0NBTkFBa0FnQUNBRVFRaHFFUEFCUlEwQUlBTkJnTUFBSUFBUW53RVF5d0pGRFFBZ0FCQzFBUm9NQVFzTElBQWdCRUVJYWhDK0FRUkFJQUlnQWlnQ0FFRUNjallDQUFzZ0JFRVFhaVFBQ3pjQUlBRWdBaUFESUFSQkFoQ1lBeUVCSUFNb0FnQWlBa0VFY1NBQlFUdEtja1VFUUNBQUlBRTJBZ0FQQ3lBRElBSkJCSEkyQWdBTE9nQWdBU0FDSUFNZ0JFRUNFSmdESVFFZ0F5Z0NBQ0lDUVFSeElBRkJERXB5UlFSQUlBQWdBVUYvYWpZQ0FBOExJQU1nQWtFRWNqWUNBQXM0QUNBQklBSWdBeUFFUVFNUW1BTWhBU0FES0FJQUlnSkJCSEVnQVVIdEFrcHlSUVJBSUFBZ0FUWUNBQThMSUFNZ0FrRUVjallDQUFzNkFDQUJJQUlnQXlBRVFRSVFtQU1oQVNBREtBSUFJZ0pCQkhFZ0FVRi9ha0VMUzNKRkJFQWdBQ0FCTmdJQUR3c2dBeUFDUVFSeU5nSUFDemNBSUFFZ0FpQURJQVJCQWhDWUF5RUJJQU1vQWdBaUFrRUVjU0FCUVJkS2NrVUVRQ0FBSUFFMkFnQVBDeUFESUFKQkJISTJBZ0FMT2dBZ0FTQUNJQU1nQkVFQ0VKZ0RJUUVnQXlnQ0FDSUNRUVJ4SUFGQmYycEJIa3R5UlFSQUlBQWdBVFlDQUE4TElBTWdBa0VFY2pZQ0FBdGxBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FUWUNDRUVHSVFFQ1FBSkFJQUFnQkVFSWFoQytBUTBBUVFRaEFTQURJQUFRbndFUTVnUkJKVWNOQUVFQ0lRRWdBQkMxQVNBRVFRaHFFTDRCUlEwQkN5QUNJQUlvQWdBZ0FYSTJBZ0FMSUFSQkVHb2tBQXV2QndFQ2Z5TUFRU0JySWdja0FDQUhJQUUyQWhnZ0JFRUFOZ0lBSUFkQkNHb2dBeEJjSUFkQkNHb1ErZ0VoQ0NBSFFRaHFFRmtDZndKQUFrQWdCa0cvZjJvaUNVRTRTd1JBSUFaQkpVY05BU0FIUVJocUlBSWdCQ0FJRU5nU0RBSUxBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDVUVCYXc0NEFSWUVGZ1VXQmdjV0ZoWUtGaFlXRmc0UEVCWVdGaE1WRmhZV0ZoWVdGZ0FCQWdNREZoWUJGZ2dXRmdrTEZnd1dEUllMRmhZUkVoUUFDeUFBSUFWQkdHb2dCMEVZYWlBQ0lBUWdDQkNhQ3d3V0N5QUFJQVZCRUdvZ0IwRVlhaUFDSUFRZ0NCQ1pDd3dWQ3lBQVFRaHFJQUFvQWdnb0Fnd1JBQUFoQVNBSElBQWdCeWdDR0NBQ0lBTWdCQ0FGSUFFUUV5QUJFQk1nQVJBZmFoQzlBellDR0F3VUN5QUZRUXhxSUFkQkdHb2dBaUFFSUFnUTF4SU1Fd3NnQjBLbDJyMnB3dXpMa3ZrQU53TUlJQWNnQUNBQklBSWdBeUFFSUFVZ0IwRUlhaUFIUVJCcUVMMEROZ0lZREJJTElBZENwYksxcWRLdHk1TGtBRGNEQ0NBSElBQWdBU0FDSUFNZ0JDQUZJQWRCQ0dvZ0IwRVFhaEM5QXpZQ0dBd1JDeUFGUVFocUlBZEJHR29nQWlBRUlBZ1ExaElNRUFzZ0JVRUlhaUFIUVJocUlBSWdCQ0FJRU5VU0RBOExJQVZCSEdvZ0IwRVlhaUFDSUFRZ0NCRFVFZ3dPQ3lBRlFSQnFJQWRCR0dvZ0FpQUVJQWdRMHhJTURRc2dCVUVFYWlBSFFSaHFJQUlnQkNBSUVOSVNEQXdMSUFkQkdHb2dBaUFFSUFnUTBSSU1Dd3NnQUNBRlFRaHFJQWRCR0dvZ0FpQUVJQWdRMEJJTUNnc2dCMEgvdVJJb0FBQTJBQThnQjBINHVSSXBBQUEzQXdnZ0J5QUFJQUVnQWlBRElBUWdCU0FIUVFocUlBZEJFMm9RdlFNMkFoZ01DUXNnQjBHSHVoSXRBQUE2QUF3Z0IwR0R1aElvQUFBMkFnZ2dCeUFBSUFFZ0FpQURJQVFnQlNBSFFRaHFJQWRCRFdvUXZRTTJBaGdNQ0FzZ0JTQUhRUmhxSUFJZ0JDQUlFTThTREFjTElBZENwWkRwcWRMSnpwTFRBRGNEQ0NBSElBQWdBU0FDSUFNZ0JDQUZJQWRCQ0dvZ0IwRVFhaEM5QXpZQ0dBd0dDeUFGUVJocUlBZEJHR29nQWlBRUlBZ1F6aElNQlFzZ0FDQUJJQUlnQXlBRUlBVWdBQ2dDQUNnQ0ZCRUxBQXdGQ3lBQVFRaHFJQUFvQWdnb0FoZ1JBQUFoQVNBSElBQWdCeWdDR0NBQ0lBTWdCQ0FGSUFFUUV5QUJFQk1nQVJBZmFoQzlBellDR0F3REN5QUZRUlJxSUFkQkdHb2dBaUFFSUFnUW1Bc01BZ3NnQlVFVWFpQUhRUmhxSUFJZ0JDQUlFTTBTREFFTElBUWdCQ2dDQUVFRWNqWUNBQXNnQnlnQ0dBc2hBQ0FIUVNCcUpBQWdBQXRJQVFGL0l3QkJFR3NpQmlRQUlBWWdBVFlDQ0NBR0lBTVFYQ0FHRVBvQklRRWdCaEJaSUFWQkZHb2dCa0VJYWlBQ0lBUWdBUkNZQ3lBR0tBSUlJUUFnQmtFUWFpUUFJQUFMU2dFQmZ5TUFRUkJySWdZa0FDQUdJQUUyQWdnZ0JpQURFRndnQmhENkFTRUJJQVlRV1NBQUlBVkJFR29nQmtFSWFpQUNJQVFnQVJDWkN5QUdLQUlJSVFBZ0JrRVFhaVFBSUFBTFNnRUJmeU1BUVJCcklnWWtBQ0FHSUFFMkFnZ2dCaUFERUZ3Z0JoRDZBU0VCSUFZUVdTQUFJQVZCR0dvZ0JrRUlhaUFDSUFRZ0FSQ2FDeUFHS0FJSUlRQWdCa0VRYWlRQUlBQUxMZ0FnQUNBQklBSWdBeUFFSUFVZ0FFRUlhaUFBS0FJSUtBSVVFUUFBSWdBUUV5QUFFQk1nQUJBZmFoQzlBd3RCQVFGL0l3QkJFR3NpQmlRQUlBWkNwWkRwcWRMSnpwTFRBRGNEQ0NBQUlBRWdBaUFESUFRZ0JTQUdRUWhxSUFaQkVHb1F2UU1oQUNBR1FSQnFKQUFnQUFzc0FBSkFJQUFnQVVZTkFBTkFJQUFnQVVGOGFpSUJUdzBCSUFBZ0FSQXVJQUJCQkdvaEFBd0FBQXNBQ3dzdEFBSkFJQUFnQVVZTkFBTkFJQUFnQVVGL2FpSUJUdzBCSUFBZ0FSQ1JDeUFBUVFGcUlRQU1BQUFMQUFzTHlnRUJBMzhqQUVIUUFXc2lBQ1FBSUFCQjlya1NMd0FBT3dITUFTQUFRZks1RWlnQUFEWUN5QUVRZnlFRklBQWdCRFlDQUNBQVFiQUJhaUFBUWJBQmFrRVVJQVVnQUVISUFXb2dBQkR1QVNJR0lBQkJzQUZxYWlJRUlBSVF1UUloQlNBQVFSQnFJQUlRWENBQVFSQnFFSWtDSVFjZ0FFRVFhaEJaSUFjZ0FFR3dBV29nQkNBQVFSQnFFTDhESUFFZ0FFRVFhaUFBUVJCcUlBWkJBblJxSWdFZ0JTQUFhMEVDZENBQWFrSFFlbW9nQkNBRlJoc2dBU0FDSUFNUXZnTWhBU0FBUWRBQmFpUUFJQUVMa3dRQkJuOGpBRUd3QTJzaUFDUUFJQUJDSlRjRHFBTWdBRUdvQTJwQkFYSkI2cmtTSUFJb0FnUVF3QVloQnlBQUlBQkJnQU5xTmdMOEFoQi9JUVlDZnlBSEJFQWdBaWdDQ0NFSUlBQWdCVGNEU0NBQVFVQnJJQVEzQXdBZ0FDQUlOZ0l3SUFCQmdBTnFRUjRnQmlBQVFhZ0RhaUFBUVRCcUVPNEJEQUVMSUFBZ0JEY0RVQ0FBSUFVM0ExZ2dBRUdBQTJwQkhpQUdJQUJCcUFOcUlBQkIwQUJxRU80QkN5RUdJQUJCMUFRMkFvQUJJQUJCOEFKcVFRQWdBRUdBQVdvUW5nRWhDQUpBSUFaQkhrNEVRQkIvSVFZQ2Z5QUhCRUFnQWlnQ0NDRUhJQUFnQlRjREdDQUFJQVEzQXhBZ0FDQUhOZ0lBSUFCQi9BSnFJQVlnQUVHb0Eyb2dBQkNaQXd3QkN5QUFJQVEzQXlBZ0FDQUZOd01vSUFCQi9BSnFJQVlnQUVHb0Eyb2dBRUVnYWhDWkF3c2hCaUFBS0FMOEFpSUhSUTBCSUFnZ0J4REdBUXNnQUNnQy9BSWlCeUFHSUFkcUlna2dBaEM1QWlFS0lBQkIxQVEyQW9BQklBQkIrQUJxUVFBZ0FFR0FBV29RbmdFaEJ3Si9JQUFvQXZ3Q0lBQkJnQU5xUmdSQUlBQkJnQUZxSVFZZ0FFR0FBMm9NQVFzZ0JrRURkQkNiQVNJR1JRMEJJQWNnQmhER0FTQUFLQUw4QWdzaEN5QUFRZWdBYWlBQ0VGd2dDeUFLSUFrZ0JpQUFRZlFBYWlBQVFmQUFhaUFBUWVnQWFoQ2RDeUFBUWVnQWFoQlpJQUVnQmlBQUtBSjBJQUFvQW5BZ0FpQURFTDRESVFFZ0J4Q2RBU0FJRUowQklBQkJzQU5xSkFBZ0FROExFSUlCQUF2dEF3RUdmeU1BUVlBRGF5SUFKQUFnQUVJbE53UDRBaUFBUWZnQ2FrRUJja0hwdVJJZ0FpZ0NCQkRBQmlFR0lBQWdBRUhRQW1vMkFzd0NFSDhoQlFKL0lBWUVRQ0FDS0FJSUlRY2dBQ0FFT1FNb0lBQWdCellDSUNBQVFkQUNha0VlSUFVZ0FFSDRBbW9nQUVFZ2FoRHVBUXdCQ3lBQUlBUTVBekFnQUVIUUFtcEJIaUFGSUFCQitBSnFJQUJCTUdvUTdnRUxJUVVnQUVIVUJEWUNVQ0FBUWNBQ2FrRUFJQUJCMEFCcUVKNEJJUWNDUUNBRlFSNU9CRUFRZnlFRkFuOGdCZ1JBSUFJb0FnZ2hCaUFBSUFRNUF3Z2dBQ0FHTmdJQUlBQkJ6QUpxSUFVZ0FFSDRBbW9nQUJDWkF3d0JDeUFBSUFRNUF4QWdBRUhNQW1vZ0JTQUFRZmdDYWlBQVFSQnFFSmtEQ3lFRklBQW9Bc3dDSWdaRkRRRWdCeUFHRU1ZQkN5QUFLQUxNQWlJR0lBVWdCbW9pQ0NBQ0VMa0NJUWtnQUVIVUJEWUNVQ0FBUWNnQWFrRUFJQUJCMEFCcUVKNEJJUVlDZnlBQUtBTE1BaUFBUWRBQ2FrWUVRQ0FBUWRBQWFpRUZJQUJCMEFKcURBRUxJQVZCQTNRUW13RWlCVVVOQVNBR0lBVVF4Z0VnQUNnQ3pBSUxJUW9nQUVFNGFpQUNFRndnQ2lBSklBZ2dCU0FBUWNRQWFpQUFRVUJySUFCQk9Hb1FuUXNnQUVFNGFoQlpJQUVnQlNBQUtBSkVJQUFvQWtBZ0FpQURFTDRESVFFZ0JoQ2RBU0FIRUowQklBQkJnQU5xSkFBZ0FROExFSUlCQUF2UUFRRUZmeU1BUVNCcklnQWtBQ0FBUWlVM0F4Z2dBRUVZYWtFQmNrSG11UkpCQUNBQ0tBSUVFT3dESUFJb0FnUWhCU0FBUVdCcUlnWWlDQ1FBRUg4aEJ5QUFJQVEzQXdBZ0JpQUdJQVZCQ1haQkFYRkJGbklpQlVFQmFpQUhJQUJCR0dvZ0FCRHVBU0FHYWlJSElBSVF1UUloQ1NBSUlBVkJBM1JCQzJwQjhBRnhheUlGSkFBZ0FFRUlhaUFDRUZ3Z0JpQUpJQWNnQlNBQVFSUnFJQUJCRUdvZ0FFRUlhaEMvQmlBQVFRaHFFRmtnQVNBRklBQW9BaFFnQUNnQ0VDQUNJQU1RdmdNaEFTQUFRU0JxSkFBZ0FRdlRBUUVFZnlNQVFTQnJJZ0FrQUNBQVFmQzVFaThBQURzQkhDQUFRZXk1RWlnQUFEWUNHQ0FBUVJocVFRRnlRZVM1RWtFQUlBSW9BZ1FRN0FNZ0FpZ0NCQ0VHSUFCQmNHb2lCU0lJSkFBUWZ5RUhJQUFnQkRZQ0FDQUZJQVVnQmtFSmRrRUJjVUVNY2lBSElBQkJHR29nQUJEdUFTQUZhaUlHSUFJUXVRSWhCeUFJUWFCL2FpSUVKQUFnQUVFSWFpQUNFRndnQlNBSElBWWdCQ0FBUVJScUlBQkJFR29nQUVFSWFoQy9CaUFBUVFocUVGa2dBU0FFSUFBb0FoUWdBQ2dDRUNBQ0lBTVF2Z01oQVNBQVFTQnFKQUFnQVF2UkFRRUZmeU1BUVNCcklnQWtBQ0FBUWlVM0F4Z2dBRUVZYWtFQmNrSG11UkpCQVNBQ0tBSUVFT3dESUFJb0FnUWhCU0FBUVdCcUlnWWlDQ1FBRUg4aEJ5QUFJQVEzQXdBZ0JpQUdJQVZCQ1haQkFYRWlCVUVYYWlBSElBQkJHR29nQUJEdUFTQUdhaUlISUFJUXVRSWhDU0FJSUFWQkEzUkJzQUZ5UVF0cVFmQUJjV3NpQlNRQUlBQkJDR29nQWhCY0lBWWdDU0FISUFVZ0FFRVVhaUFBUVJCcUlBQkJDR29RdndZZ0FFRUlhaEJaSUFFZ0JTQUFLQUlVSUFBb0FoQWdBaUFERUw0RElRRWdBRUVnYWlRQUlBRUw0Z0VCQkg4akFFRWdheUlBSkFBZ0FFSHd1Ukl2QUFBN0FSd2dBRUhzdVJJb0FBQTJBaGdnQUVFWWFrRUJja0hrdVJKQkFTQUNLQUlFRU93RElBSW9BZ1FoQmlBQVFYQnFJZ1VpQ0NRQUVIOGhCeUFBSUFRMkFnQWdCU0FGSUFaQkNYWkJBWEVpQkVFTmFpQUhJQUJCR0dvZ0FCRHVBU0FGYWlJR0lBSVF1UUloQnlBSUlBUkJBM1JCNEFCeVFRdHFRZkFBY1dzaUJDUUFJQUJCQ0dvZ0FoQmNJQVVnQnlBR0lBUWdBRUVVYWlBQVFSQnFJQUJCQ0dvUXZ3WWdBRUVJYWhCWklBRWdCQ0FBS0FJVUlBQW9BaEFnQWlBREVMNERJUUVnQUVFZ2FpUUFJQUVMUFFFQ2Z5TUFRUkJySWdJa0FDQUFRZ0EzQWdBZ0FrRUFOZ0lNSUFCQkNHb2lBeUFDUVF4cUVKVURJQU5CQkdvZ0FSQ3RBaUFDUVJCcUpBQWdBQXZUQVFFQmZ5TUFRVEJySWdVa0FDQUZJQUUyQWlnQ1FDQUNLQUlFUVFGeFJRUkFJQUFnQVNBQ0lBTWdCQ0FBS0FJQUtBSVlFUW9BSVFJTUFRc2dCVUVZYWlBQ0VGd2dCVUVZYWhEb0JDRUFJQVZCR0dvUVdRSkFJQVFFUUNBRlFSaHFJQUFRMlFJTUFRc2dCVUVZYWlBQUVOZ0NDeUFGSUFWQkdHb1E3QUUyQWhBRFFDQUZJQVZCR0dvUTZ3TTJBZ2dnQlVFUWFpQUZRUWhxRUI0RVFDQUZRU2hxSUFVb0FoQW9BZ0FReGdzZ0JVRVFhaEJtR2d3QkJTQUZLQUlvSVFJZ0JVRVlhaEFnR2dzTEN5QUZRVEJxSkFBZ0FndTlBUUVEZnlNQVFlQUFheUlBSkFBZ0FFSDJ1Ukl2QUFBN0FWd2dBRUh5dVJJb0FBQTJBbGdRZnlFRklBQWdCRFlDQUNBQVFVQnJJQUJCUUd0QkZDQUZJQUJCMkFCcUlBQVE3Z0VpQmlBQVFVQnJhaUlFSUFJUXVRSWhCU0FBUVJCcUlBSVFYQ0FBUVJCcUVQb0JJUWNnQUVFUWFoQlpJQWNnQUVGQWF5QUVJQUJCRUdvUTdnTWdBU0FBUVJCcUlBWWdBRUVRYW1vaUFTQUZJQUJySUFCcVFWQnFJQVFnQlVZYklBRWdBaUFERUtjRElRRWdBRUhnQUdva0FDQUJDNU1FQVFaL0l3QkJnQUpySWdBa0FDQUFRaVUzQS9nQklBQkIrQUZxUVFGeVFlcTVFaUFDS0FJRUVNQUdJUWNnQUNBQVFkQUJhallDekFFUWZ5RUdBbjhnQndSQUlBSW9BZ2doQ0NBQUlBVTNBMGdnQUVGQWF5QUVOd01BSUFBZ0NEWUNNQ0FBUWRBQmFrRWVJQVlnQUVINEFXb2dBRUV3YWhEdUFRd0JDeUFBSUFRM0ExQWdBQ0FGTndOWUlBQkIwQUZxUVI0Z0JpQUFRZmdCYWlBQVFkQUFhaER1QVFzaEJpQUFRZFFFTmdLQUFTQUFRY0FCYWtFQUlBQkJnQUZxRUo0QklRZ0NRQ0FHUVI1T0JFQVFmeUVHQW44Z0J3UkFJQUlvQWdnaEJ5QUFJQVUzQXhnZ0FDQUVOd01RSUFBZ0J6WUNBQ0FBUWN3QmFpQUdJQUJCK0FGcUlBQVFtUU1NQVFzZ0FDQUVOd01nSUFBZ0JUY0RLQ0FBUWN3QmFpQUdJQUJCK0FGcUlBQkJJR29RbVFNTElRWWdBQ2dDekFFaUIwVU5BU0FJSUFjUXhnRUxJQUFvQXN3QklnY2dCaUFIYWlJSklBSVF1UUloQ2lBQVFkUUVOZ0tBQVNBQVFmZ0Fha0VBSUFCQmdBRnFFSjRCSVFjQ2Z5QUFLQUxNQVNBQVFkQUJha1lFUUNBQVFZQUJhaUVHSUFCQjBBRnFEQUVMSUFaQkFYUVFtd0VpQmtVTkFTQUhJQVlReGdFZ0FDZ0N6QUVMSVFzZ0FFSG9BR29nQWhCY0lBc2dDaUFKSUFZZ0FFSDBBR29nQUVId0FHb2dBRUhvQUdvUW53c2dBRUhvQUdvUVdTQUJJQVlnQUNnQ2RDQUFLQUp3SUFJZ0F4Q25BeUVCSUFjUW5RRWdDQkNkQVNBQVFZQUNhaVFBSUFFUEN4Q0NBUUFMN1FNQkJuOGpBRUhRQVdzaUFDUUFJQUJDSlRjRHlBRWdBRUhJQVdwQkFYSkI2YmtTSUFJb0FnUVF3QVloQmlBQUlBQkJvQUZxTmdLY0FSQi9JUVVDZnlBR0JFQWdBaWdDQ0NFSElBQWdCRGtES0NBQUlBYzJBaUFnQUVHZ0FXcEJIaUFGSUFCQnlBRnFJQUJCSUdvUTdnRU1BUXNnQUNBRU9RTXdJQUJCb0FGcVFSNGdCU0FBUWNnQmFpQUFRVEJxRU80QkN5RUZJQUJCMUFRMkFsQWdBRUdRQVdwQkFDQUFRZEFBYWhDZUFTRUhBa0FnQlVFZVRnUkFFSDhoQlFKL0lBWUVRQ0FDS0FJSUlRWWdBQ0FFT1FNSUlBQWdCallDQUNBQVFad0JhaUFGSUFCQnlBRnFJQUFRbVFNTUFRc2dBQ0FFT1FNUUlBQkJuQUZxSUFVZ0FFSElBV29nQUVFUWFoQ1pBd3NoQlNBQUtBS2NBU0lHUlEwQklBY2dCaERHQVFzZ0FDZ0NuQUVpQmlBRklBWnFJZ2dnQWhDNUFpRUpJQUJCMUFRMkFsQWdBRUhJQUdwQkFDQUFRZEFBYWhDZUFTRUdBbjhnQUNnQ25BRWdBRUdnQVdwR0JFQWdBRUhRQUdvaEJTQUFRYUFCYWd3QkN5QUZRUUYwRUpzQklnVkZEUUVnQmlBRkVNWUJJQUFvQXB3QkN5RUtJQUJCT0dvZ0FoQmNJQW9nQ1NBSUlBVWdBRUhFQUdvZ0FFRkFheUFBUVRocUVKOExJQUJCT0dvUVdTQUJJQVVnQUNnQ1JDQUFLQUpBSUFJZ0F4Q25BeUVCSUFZUW5RRWdCeENkQVNBQVFkQUJhaVFBSUFFUEN4Q0NBUUFMeEFFQkJIOGpBRUVnYXlJQUpBQWdBRUlsTndNWUlBQkJHR3BCQVhKQjVya1NRUUFnQWlnQ0JCRHNBeUFDS0FJRUlRY2dBRUZnYWlJRklnWWtBQkIvSVFnZ0FDQUVOd01BSUFVZ0JTQUhRUWwyUVFGeFFSWnlRUUZxSUFnZ0FFRVlhaUFBRU80QklBVnFJZ2NnQWhDNUFpRUlJQVpCVUdvaUJpUUFJQUJCQ0dvZ0FoQmNJQVVnQ0NBSElBWWdBRUVVYWlBQVFSQnFJQUJCQ0dvUXdRWWdBRUVJYWhCWklBRWdCaUFBS0FJVUlBQW9BaEFnQWlBREVLY0RJUUVnQUVFZ2FpUUFJQUVMMGdFQkJIOGpBRUVnYXlJQUpBQWdBRUh3dVJJdkFBQTdBUndnQUVIc3VSSW9BQUEyQWhnZ0FFRVlha0VCY2tIa3VSSkJBQ0FDS0FJRUVPd0RJQUlvQWdRaEJpQUFRWEJxSWdVaUNDUUFFSDhoQnlBQUlBUTJBZ0FnQlNBRklBWkJDWFpCQVhGQkRISWdCeUFBUVJocUlBQVE3Z0VnQldvaUJpQUNFTGtDSVFjZ0NFRmdhaUlFSkFBZ0FFRUlhaUFDRUZ3Z0JTQUhJQVlnQkNBQVFSUnFJQUJCRUdvZ0FFRUlhaERCQmlBQVFRaHFFRmtnQVNBRUlBQW9BaFFnQUNnQ0VDQUNJQU1RcHdNaEFTQUFRU0JxSkFBZ0FRdGlBUUYvQWtBZ0FDQUFLQUlBS0FJd0VRQUFSUTBBSUFFZ0FTZ0NBQ2dDTUJFQUFFVU5BQ0FBSUFBb0FnQW9BakFSQUFBaUFDQUFLQUlBS0FLNEFSRUFBQ0FCSUFFb0FnQW9BakFSQUFBaUFDQUFLQUlBS0FLNEFSRUFBRVloQWdzZ0FndkJBUUVFZnlNQVFTQnJJZ0FrQUNBQVFpVTNBeGdnQUVFWWFrRUJja0htdVJKQkFTQUNLQUlFRU93RElBSW9BZ1FoQnlBQVFXQnFJZ1VpQmlRQUVIOGhDQ0FBSUFRM0F3QWdCU0FGSUFkQkNYWkJBWEZCRjJvZ0NDQUFRUmhxSUFBUTdnRWdCV29pQnlBQ0VMa0NJUWdnQmtGUWFpSUdKQUFnQUVFSWFpQUNFRndnQlNBSUlBY2dCaUFBUVJScUlBQkJFR29nQUVFSWFoREJCaUFBUVFocUVGa2dBU0FHSUFBb0FoUWdBQ2dDRUNBQ0lBTVFwd01oQVNBQVFTQnFKQUFnQVF2U0FRRUVmeU1BUVNCcklnQWtBQ0FBUWZDNUVpOEFBRHNCSENBQVFleTVFaWdBQURZQ0dDQUFRUmhxUVFGeVFlUzVFa0VCSUFJb0FnUVE3QU1nQWlnQ0JDRUdJQUJCY0dvaUJTSUlKQUFRZnlFSElBQWdCRFlDQUNBRklBVWdCa0VKZGtFQmNVRU5haUFISUFCQkdHb2dBQkR1QVNBRmFpSUdJQUlRdVFJaEJ5QUlRV0JxSWdRa0FDQUFRUWhxSUFJUVhDQUZJQWNnQmlBRUlBQkJGR29nQUVFUWFpQUFRUWhxRU1FR0lBQkJDR29RV1NBQklBUWdBQ2dDRkNBQUtBSVFJQUlnQXhDbkF5RUJJQUJCSUdva0FDQUJDOU1CQVFGL0l3QkJNR3NpQlNRQUlBVWdBVFlDS0FKQUlBSW9BZ1JCQVhGRkJFQWdBQ0FCSUFJZ0F5QUVJQUFvQWdBb0FoZ1JDZ0FoQWd3QkN5QUZRUmhxSUFJUVhDQUZRUmhxRU9vRUlRQWdCVUVZYWhCWkFrQWdCQVJBSUFWQkdHb2dBQkRaQWd3QkN5QUZRUmhxSUFBUTJBSUxJQVVnQlVFWWFoRHNBVFlDRUFOQUlBVWdCVUVZYWhDVEF6WUNDQ0FGUVJCcUlBVkJDR29RSGdSQUlBVkJLR29nQlNnQ0VDd0FBQkRIQ3lBRlFSQnFFT01EREFFRklBVW9BaWdoQWlBRlFSaHFFQ0FhQ3dzTElBVkJNR29rQUNBQ0N6c0JBWDhqQUVFUWF5SUNKQUFnQWtFSWFpQUFFRndnQWtFSWFoQ0pBa0hBdVJKQjJya1NJQUVRdndNZ0FrRUlhaEJaSUFKQkVHb2tBQ0FCQ3owQkFYOGdBQ2dDQUNBQktBSUFSZ1IvSUFFb0FnUWhBUUpBSUFBb0FnUWlBQVIvSUFFTkFVRUFCU0FCQ3lBQVJnOExJQUFnQVJEdkVnVWdBZ3NML3dJQkFYOGpBRUhnQW1zaUFDUUFJQUFnQWpZQzBBSWdBQ0FCTmdMWUFpQUFRZEFCYWhCT0lRWWdBRUVRYWlBREVGd2dBRUVRYWhDSkFrSEF1UkpCMnJrU0lBQkI0QUZxRUw4RElBQkJFR29RV1NBQVFjQUJhaEJPSWdJZ0FoQmRFRTBnQUNBQ1FRQVFVQ0lCTmdLOEFTQUFJQUJCRUdvMkFnd2dBRUVBTmdJSUEwQUNRQ0FBUWRnQ2FpQUFRZEFDYWhEMkFVVU5BQ0FBS0FLOEFTQUNFQjhnQVdwR0JFQWdBaEFmSVFNZ0FpQUNFQjlCQVhRUVRTQUNJQUlRWFJCTklBQWdBeUFDUVFBUVVDSUJhallDdkFFTElBQkIyQUpxRUtVQlFSQWdBU0FBUWJ3QmFpQUFRUWhxUVFBZ0JpQUFRUkJxSUFCQkRHb2dBRUhnQVdvUTV3UU5BQ0FBUWRnQ2FoQzlBUm9NQVFzTElBSWdBQ2dDdkFFZ0FXc1FUU0FDRUJNaEFSQi9JUU1nQUNBRk5nSUFJQUVnQXlBQUVLTUxRUUZIQkVBZ0JFRUVOZ0lBQ3lBQVFkZ0NhaUFBUWRBQ2FoREhBUVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDMkFJaEFTQUNFQ0FhSUFZUUlCb2dBRUhnQW1va0FDQUJDOWtEQWdGL0FYNGpBRUdBQTJzaUJTUUFJQVVnQVRZQzhBSWdCU0FBTmdMNEFpQUZRZGdCYWlBQ0lBVkI4QUZxSUFWQjdBRnFJQVZCNkFGcUVQVUhJQVZCeUFGcUVFNGlBU0FCRUYwUVRTQUZJQUZCQUJCUUlnQTJBc1FCSUFVZ0JVRWdhallDSENBRlFRQTJBaGdnQlVFQk9nQVhJQVZCeFFBNkFCWURRQUpBSUFWQitBSnFJQVZCOEFKcUVQWUJSUTBBSUFVb0FzUUJJQUVRSHlBQWFrWUVRQ0FCRUI4aEFpQUJJQUVRSDBFQmRCQk5JQUVnQVJCZEVFMGdCU0FDSUFGQkFCQlFJZ0JxTmdMRUFRc2dCVUg0QW1vUXBRRWdCVUVYYWlBRlFSWnFJQUFnQlVIRUFXb2dCU2dDN0FFZ0JTZ0M2QUVnQlVIWUFXb2dCVUVnYWlBRlFSeHFJQVZCR0dvZ0JVSHdBV29ROUFjTkFDQUZRZmdDYWhDOUFSb01BUXNMQWtBZ0JVSFlBV29RSDBVTkFDQUZMUUFYUlEwQUlBVW9BaHdpQWlBRlFTQnFhMEdmQVVvTkFDQUZJQUpCQkdvMkFod2dBaUFGS0FJWU5nSUFDeUFGSUFBZ0JTZ0N4QUVnQXhDa0N5QUZLUU1BSVFZZ0JDQUZLUU1JTndNSUlBUWdCamNEQUNBRlFkZ0JhaUFGUVNCcUlBVW9BaHdnQXhEdkFTQUZRZmdDYWlBRlFmQUNhaERIQVFSQUlBTWdBeWdDQUVFQ2NqWUNBQXNnQlNnQytBSWhBQ0FCRUNBYUlBVkIyQUZxRUNBYUlBVkJnQU5xSkFBZ0FBc1BBQ0FCSUFJZ0F5QUVJQVVROWhJTHdnTUJBWDhqQUVId0Ftc2lCU1FBSUFVZ0FUWUM0QUlnQlNBQU5nTG9BaUFGUWNnQmFpQUNJQVZCNEFGcUlBVkIzQUZxSUFWQjJBRnFFUFVISUFWQnVBRnFFRTRpQVNBQkVGMFFUU0FGSUFGQkFCQlFJZ0EyQXJRQklBVWdCVUVRYWpZQ0RDQUZRUUEyQWdnZ0JVRUJPZ0FISUFWQnhRQTZBQVlEUUFKQUlBVkI2QUpxSUFWQjRBSnFFUFlCUlEwQUlBVW9BclFCSUFFUUh5QUFha1lFUUNBQkVCOGhBaUFCSUFFUUgwRUJkQkJOSUFFZ0FSQmRFRTBnQlNBQ0lBRkJBQkJRSWdCcU5nSzBBUXNnQlVIb0Ftb1FwUUVnQlVFSGFpQUZRUVpxSUFBZ0JVRzBBV29nQlNnQzNBRWdCU2dDMkFFZ0JVSElBV29nQlVFUWFpQUZRUXhxSUFWQkNHb2dCVUhnQVdvUTlBY05BQ0FGUWVnQ2FoQzlBUm9NQVFzTEFrQWdCVUhJQVdvUUgwVU5BQ0FGTFFBSFJRMEFJQVVvQWd3aUFpQUZRUkJxYTBHZkFVb05BQ0FGSUFKQkJHbzJBZ3dnQWlBRktBSUlOZ0lBQ3lBRUlBQWdCU2dDdEFFZ0F4Q2xDemtEQUNBRlFjZ0JhaUFGUVJCcUlBVW9BZ3dnQXhEdkFTQUZRZWdDYWlBRlFlQUNhaERIQVFSQUlBTWdBeWdDQUVFQ2NqWUNBQXNnQlNnQzZBSWhBQ0FCRUNBYUlBVkJ5QUZxRUNBYUlBVkI4QUpxSkFBZ0FBc1BBQ0FCSUFJZ0F5QUVJQVVRK0JJTHdnTUJBWDhqQUVId0Ftc2lCU1FBSUFVZ0FUWUM0QUlnQlNBQU5nTG9BaUFGUWNnQmFpQUNJQVZCNEFGcUlBVkIzQUZxSUFWQjJBRnFFUFVISUFWQnVBRnFFRTRpQVNBQkVGMFFUU0FGSUFGQkFCQlFJZ0EyQXJRQklBVWdCVUVRYWpZQ0RDQUZRUUEyQWdnZ0JVRUJPZ0FISUFWQnhRQTZBQVlEUUFKQUlBVkI2QUpxSUFWQjRBSnFFUFlCUlEwQUlBVW9BclFCSUFFUUh5QUFha1lFUUNBQkVCOGhBaUFCSUFFUUgwRUJkQkJOSUFFZ0FSQmRFRTBnQlNBQ0lBRkJBQkJRSWdCcU5nSzBBUXNnQlVIb0Ftb1FwUUVnQlVFSGFpQUZRUVpxSUFBZ0JVRzBBV29nQlNnQzNBRWdCU2dDMkFFZ0JVSElBV29nQlVFUWFpQUZRUXhxSUFWQkNHb2dCVUhnQVdvUTlBY05BQ0FGUWVnQ2FoQzlBUm9NQVFzTEFrQWdCVUhJQVdvUUgwVU5BQ0FGTFFBSFJRMEFJQVVvQWd3aUFpQUZRUkJxYTBHZkFVb05BQ0FGSUFKQkJHbzJBZ3dnQWlBRktBSUlOZ0lBQ3lBRUlBQWdCU2dDdEFFZ0F4Q21DemdDQUNBRlFjZ0JhaUFGUVJCcUlBVW9BZ3dnQXhEdkFTQUZRZWdDYWlBRlFlQUNhaERIQVFSQUlBTWdBeWdDQUVFQ2NqWUNBQXNnQlNnQzZBSWhBQ0FCRUNBYUlBVkJ5QUZxRUNBYUlBVkI4QUpxSkFBZ0FBc1BBQ0FCSUFJZ0F5QUVJQVVRK2hJTG93TUJBMzhqQUVIZ0Ftc2lCU1FBSUFVZ0FUWUMwQUlnQlNBQU5nTFlBaUFDRUpvRElRWWdBaUFGUWVBQmFoRFBCU0VISUFWQjBBRnFJQUlnQlVITUFtb1F6Z1VnQlVIQUFXb1FUaUlBSUFBUVhSQk5JQVVnQUVFQUVGQWlBVFlDdkFFZ0JTQUZRUkJxTmdJTUlBVkJBRFlDQ0FOQUFrQWdCVUhZQW1vZ0JVSFFBbW9ROWdGRkRRQWdCU2dDdkFFZ0FCQWZJQUZxUmdSQUlBQVFIeUVDSUFBZ0FCQWZRUUYwRUUwZ0FDQUFFRjBRVFNBRklBSWdBRUVBRUZBaUFXbzJBcndCQ3lBRlFkZ0NhaENsQVNBR0lBRWdCVUc4QVdvZ0JVRUlhaUFGS0FMTUFpQUZRZEFCYWlBRlFSQnFJQVZCREdvZ0J4RG5CQTBBSUFWQjJBSnFFTDBCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVb0Fnd2lBaUFGUVJCcWEwR2ZBVW9OQUNBRklBSkJCR28yQWd3Z0FpQUZLQUlJTmdJQUN5QUVJQUVnQlNnQ3ZBRWdBeUFHRUtjTE53TUFJQVZCMEFGcUlBVkJFR29nQlNnQ0RDQURFTzhCSUFWQjJBSnFJQVZCMEFKcUVNY0JCRUFnQXlBREtBSUFRUUp5TmdJQUN5QUZLQUxZQWlFQklBQVFJQm9nQlVIUUFXb1FJQm9nQlVIZ0Ftb2tBQ0FCQ3c4QUlBRWdBaUFESUFRZ0JSRDhFZ3VqQXdFRGZ5TUFRZUFDYXlJRkpBQWdCU0FCTmdMUUFpQUZJQUEyQXRnQ0lBSVFtZ01oQmlBQ0lBVkI0QUZxRU04RklRY2dCVUhRQVdvZ0FpQUZRY3dDYWhET0JTQUZRY0FCYWhCT0lnQWdBQkJkRUUwZ0JTQUFRUUFRVUNJQk5nSzhBU0FGSUFWQkVHbzJBZ3dnQlVFQU5nSUlBMEFDUUNBRlFkZ0NhaUFGUWRBQ2FoRDJBVVVOQUNBRktBSzhBU0FBRUI4Z0FXcEdCRUFnQUJBZklRSWdBQ0FBRUI5QkFYUVFUU0FBSUFBUVhSQk5JQVVnQWlBQVFRQVFVQ0lCYWpZQ3ZBRUxJQVZCMkFKcUVLVUJJQVlnQVNBRlFid0JhaUFGUVFocUlBVW9Bc3dDSUFWQjBBRnFJQVZCRUdvZ0JVRU1haUFIRU9jRURRQWdCVUhZQW1vUXZRRWFEQUVMQ3dKQUlBVkIwQUZxRUI5RkRRQWdCU2dDRENJQ0lBVkJFR3ByUVo4QlNnMEFJQVVnQWtFRWFqWUNEQ0FDSUFVb0FnZzJBZ0FMSUFRZ0FTQUZLQUs4QVNBRElBWVFxUXMyQWdBZ0JVSFFBV29nQlVFUWFpQUZLQUlNSUFNUTd3RWdCVUhZQW1vZ0JVSFFBbW9ReHdFRVFDQURJQU1vQWdCQkFuSTJBZ0FMSUFVb0F0Z0NJUUVnQUJBZ0dpQUZRZEFCYWhBZ0dpQUZRZUFDYWlRQUlBRUxvd01CQTM4akFFSGdBbXNpQlNRQUlBVWdBVFlDMEFJZ0JTQUFOZ0xZQWlBQ0VKb0RJUVlnQWlBRlFlQUJhaERQQlNFSElBVkIwQUZxSUFJZ0JVSE1BbW9RemdVZ0JVSEFBV29RVGlJQUlBQVFYUkJOSUFVZ0FFRUFFRkFpQVRZQ3ZBRWdCU0FGUVJCcU5nSU1JQVZCQURZQ0NBTkFBa0FnQlVIWUFtb2dCVUhRQW1vUTlnRkZEUUFnQlNnQ3ZBRWdBQkFmSUFGcVJnUkFJQUFRSHlFQ0lBQWdBQkFmUVFGMEVFMGdBQ0FBRUYwUVRTQUZJQUlnQUVFQUVGQWlBV28yQXJ3QkN5QUZRZGdDYWhDbEFTQUdJQUVnQlVHOEFXb2dCVUVJYWlBRktBTE1BaUFGUWRBQmFpQUZRUkJxSUFWQkRHb2dCeERuQkEwQUlBVkIyQUpxRUwwQkdnd0JDd3NDUUNBRlFkQUJhaEFmUlEwQUlBVW9BZ3dpQWlBRlFSQnFhMEdmQVVvTkFDQUZJQUpCQkdvMkFnd2dBaUFGS0FJSU5nSUFDeUFFSUFFZ0JTZ0N2QUVnQXlBR0VLc0xPd0VBSUFWQjBBRnFJQVZCRUdvZ0JTZ0NEQ0FERU84QklBVkIyQUpxSUFWQjBBSnFFTWNCQkVBZ0F5QURLQUlBUVFKeU5nSUFDeUFGS0FMWUFpRUJJQUFRSUJvZ0JVSFFBV29RSUJvZ0JVSGdBbW9rQUNBQkN3OEFJQUVnQWlBRElBUWdCUkQvRWd1akF3RURmeU1BUWVBQ2F5SUZKQUFnQlNBQk5nTFFBaUFGSUFBMkF0Z0NJQUlRbWdNaEJpQUNJQVZCNEFGcUVNOEZJUWNnQlVIUUFXb2dBaUFGUWN3Q2FoRE9CU0FGUWNBQmFoQk9JZ0FnQUJCZEVFMGdCU0FBUVFBUVVDSUJOZ0s4QVNBRklBVkJFR28yQWd3Z0JVRUFOZ0lJQTBBQ1FDQUZRZGdDYWlBRlFkQUNhaEQyQVVVTkFDQUZLQUs4QVNBQUVCOGdBV3BHQkVBZ0FCQWZJUUlnQUNBQUVCOUJBWFFRVFNBQUlBQVFYUkJOSUFVZ0FpQUFRUUFRVUNJQmFqWUN2QUVMSUFWQjJBSnFFS1VCSUFZZ0FTQUZRYndCYWlBRlFRaHFJQVVvQXN3Q0lBVkIwQUZxSUFWQkVHb2dCVUVNYWlBSEVPY0VEUUFnQlVIWUFtb1F2UUVhREFFTEN3SkFJQVZCMEFGcUVCOUZEUUFnQlNnQ0RDSUNJQVZCRUdwclFaOEJTZzBBSUFVZ0FrRUVhallDRENBQ0lBVW9BZ2cyQWdBTElBUWdBU0FGS0FLOEFTQURJQVlRckFzM0F3QWdCVUhRQVdvZ0JVRVFhaUFGS0FJTUlBTVE3d0VnQlVIWUFtb2dCVUhRQW1vUXh3RUVRQ0FESUFNb0FnQkJBbkkyQWdBTElBVW9BdGdDSVFFZ0FCQWdHaUFGUWRBQmFoQWdHaUFGUWVBQ2FpUUFJQUVMRHdBZ0FTQUNJQU1nQkNBRkVJRVRDM2tCQVg4akFFRWdheUlESkFBZ0F5QUJOZ0lRSUFNZ0FEWUNHQ0FESUFJMkFnaEJBU0VDQWtBZ0EwRVlhaUFEUVJCcUVCNUZEUUFEUUNBREtBSVlJQU1vQWdnUTlCSkZCRUJCQUNFQ0RBSUxJQU5CR0dvUTdRTWdBMEVJYWhEdEF5QURRUmhxSUFOQkVHb1FIZzBBQ3dzZ0EwRWdhaVFBSUFJTG93TUJBMzhqQUVIZ0Ftc2lCU1FBSUFVZ0FUWUMwQUlnQlNBQU5nTFlBaUFDRUpvRElRWWdBaUFGUWVBQmFoRFBCU0VISUFWQjBBRnFJQUlnQlVITUFtb1F6Z1VnQlVIQUFXb1FUaUlBSUFBUVhSQk5JQVVnQUVFQUVGQWlBVFlDdkFFZ0JTQUZRUkJxTmdJTUlBVkJBRFlDQ0FOQUFrQWdCVUhZQW1vZ0JVSFFBbW9ROWdGRkRRQWdCU2dDdkFFZ0FCQWZJQUZxUmdSQUlBQVFIeUVDSUFBZ0FCQWZRUUYwRUUwZ0FDQUFFRjBRVFNBRklBSWdBRUVBRUZBaUFXbzJBcndCQ3lBRlFkZ0NhaENsQVNBR0lBRWdCVUc4QVdvZ0JVRUlhaUFGS0FMTUFpQUZRZEFCYWlBRlFSQnFJQVZCREdvZ0J4RG5CQTBBSUFWQjJBSnFFTDBCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVb0Fnd2lBaUFGUVJCcWEwR2ZBVW9OQUNBRklBSkJCR28yQWd3Z0FpQUZLQUlJTmdJQUN5QUVJQUVnQlNnQ3ZBRWdBeUFHRUswTE5nSUFJQVZCMEFGcUlBVkJFR29nQlNnQ0RDQURFTzhCSUFWQjJBSnFJQVZCMEFKcUVNY0JCRUFnQXlBREtBSUFRUUp5TmdJQUN5QUZLQUxZQWlFQklBQVFJQm9nQlVIUUFXb1FJQm9nQlVIZ0Ftb2tBQ0FCQ3c4QUlBRWdBaUFESUFRZ0JSQ0VFd3YwQVFFQmZ5TUFRU0JySWdZa0FDQUdJQUUyQWhnQ1FDQURLQUlFUVFGeFJRUkFJQVpCZnpZQ0FDQUdJQUFnQVNBQ0lBTWdCQ0FHSUFBb0FnQW9BaEFSQ3dBaUFUWUNHQ0FHS0FJQUlnQkJBVTBFUUNBQVFRRnJCRUFnQlVFQU9nQUFEQU1MSUFWQkFUb0FBQXdDQ3lBRlFRRTZBQUFnQkVFRU5nSUFEQUVMSUFZZ0F4QmNJQVlRaVFJaEFTQUdFRmtnQmlBREVGd2dCaERvQkNFQUlBWVFXU0FHSUFBUTJRSWdCa0VNY2lBQUVOZ0NJQVVnQmtFWWFpQUNJQVlnQmtFWWFpSURJQUVnQkVFQkVNTUdJQVpHT2dBQUlBWW9BaGdoQVFOQUlBTkJkR29RSUNJRElBWkhEUUFMQ3lBR1FTQnFKQUFnQVF2L0FnRUJmeU1BUVpBQ2F5SUFKQUFnQUNBQ05nS0FBaUFBSUFFMkFvZ0NJQUJCMEFGcUVFNGhCaUFBUVJCcUlBTVFYQ0FBUVJCcUVQb0JRY0M1RWtIYXVSSWdBRUhnQVdvUTdnTWdBRUVRYWhCWklBQkJ3QUZxRUU0aUFpQUNFRjBRVFNBQUlBSkJBQkJRSWdFMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ0RRQUpBSUFCQmlBSnFJQUJCZ0FKcUVQQUJSUTBBSUFBb0Fyd0JJQUlRSHlBQmFrWUVRQ0FDRUI4aEF5QUNJQUlRSDBFQmRCQk5JQUlnQWhCZEVFMGdBQ0FESUFKQkFCQlFJZ0ZxTmdLOEFRc2dBRUdJQW1vUW53RkJFQ0FCSUFCQnZBRnFJQUJCQ0dwQkFDQUdJQUJCRUdvZ0FFRU1haUFBUWVBQmFoRHBCQTBBSUFCQmlBSnFFTFVCR2d3QkN3c2dBaUFBS0FLOEFTQUJheEJOSUFJUUV5RUJFSDhoQXlBQUlBVTJBZ0FnQVNBRElBQVFvd3RCQVVjRVFDQUVRUVEyQWdBTElBQkJpQUpxSUFCQmdBSnFFTDRCQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FLSUFpRUJJQUlRSUJvZ0JoQWdHaUFBUVpBQ2FpUUFJQUVMMlFNQ0FYOEJmaU1BUWFBQ2F5SUZKQUFnQlNBQk5nS1FBaUFGSUFBMkFwZ0NJQVZCNEFGcUlBSWdCVUh3QVdvZ0JVSHZBV29nQlVIdUFXb1ErQWNnQlVIUUFXb1FUaUlCSUFFUVhSQk5JQVVnQVVFQUVGQWlBRFlDekFFZ0JTQUZRU0JxTmdJY0lBVkJBRFlDR0NBRlFRRTZBQmNnQlVIRkFEb0FGZ05BQWtBZ0JVR1lBbW9nQlVHUUFtb1E4QUZGRFFBZ0JTZ0N6QUVnQVJBZklBQnFSZ1JBSUFFUUh5RUNJQUVnQVJBZlFRRjBFRTBnQVNBQkVGMFFUU0FGSUFJZ0FVRUFFRkFpQUdvMkFzd0JDeUFGUVpnQ2FoQ2ZBU0FGUVJkcUlBVkJGbW9nQUNBRlFjd0JhaUFGTEFEdkFTQUZMQUR1QVNBRlFlQUJhaUFGUVNCcUlBVkJIR29nQlVFWWFpQUZRZkFCYWhEM0J3MEFJQVZCbUFKcUVMVUJHZ3dCQ3dzQ1FDQUZRZUFCYWhBZlJRMEFJQVV0QUJkRkRRQWdCU2dDSENJQ0lBVkJJR3ByUVo4QlNnMEFJQVVnQWtFRWFqWUNIQ0FDSUFVb0FoZzJBZ0FMSUFVZ0FDQUZLQUxNQVNBREVLUUxJQVVwQXdBaEJpQUVJQVVwQXdnM0F3Z2dCQ0FHTndNQUlBVkI0QUZxSUFWQklHb2dCU2dDSENBREVPOEJJQVZCbUFKcUlBVkJrQUpxRUw0QkJFQWdBeUFES0FJQVFRSnlOZ0lBQ3lBRktBS1lBaUVBSUFFUUlCb2dCVUhnQVdvUUlCb2dCVUdnQW1va0FDQUFDdzhBSUFFZ0FpQURJQVFnQlJDSUV3dkNBd0VCZnlNQVFaQUNheUlGSkFBZ0JTQUJOZ0tBQWlBRklBQTJBb2dDSUFWQjBBRnFJQUlnQlVIZ0FXb2dCVUhmQVdvZ0JVSGVBV29RK0FjZ0JVSEFBV29RVGlJQklBRVFYUkJOSUFVZ0FVRUFFRkFpQURZQ3ZBRWdCU0FGUVJCcU5nSU1JQVZCQURZQ0NDQUZRUUU2QUFjZ0JVSEZBRG9BQmdOQUFrQWdCVUdJQW1vZ0JVR0FBbW9ROEFGRkRRQWdCU2dDdkFFZ0FSQWZJQUJxUmdSQUlBRVFIeUVDSUFFZ0FSQWZRUUYwRUUwZ0FTQUJFRjBRVFNBRklBSWdBVUVBRUZBaUFHbzJBcndCQ3lBRlFZZ0NhaENmQVNBRlFRZHFJQVZCQm1vZ0FDQUZRYndCYWlBRkxBRGZBU0FGTEFEZUFTQUZRZEFCYWlBRlFSQnFJQVZCREdvZ0JVRUlhaUFGUWVBQmFoRDNCdzBBSUFWQmlBSnFFTFVCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVdEFBZEZEUUFnQlNnQ0RDSUNJQVZCRUdwclFaOEJTZzBBSUFVZ0FrRUVhallDRENBQ0lBVW9BZ2cyQWdBTElBUWdBQ0FGS0FLOEFTQURFS1VMT1FNQUlBVkIwQUZxSUFWQkVHb2dCU2dDRENBREVPOEJJQVZCaUFKcUlBVkJnQUpxRUw0QkJFQWdBeUFES0FJQVFRSnlOZ0lBQ3lBRktBS0lBaUVBSUFFUUlCb2dCVUhRQVdvUUlCb2dCVUdRQW1va0FDQUFDdzhBSUFFZ0FpQURJQVFnQlJDS0V3dkNBd0VCZnlNQVFaQUNheUlGSkFBZ0JTQUJOZ0tBQWlBRklBQTJBb2dDSUFWQjBBRnFJQUlnQlVIZ0FXb2dCVUhmQVdvZ0JVSGVBV29RK0FjZ0JVSEFBV29RVGlJQklBRVFYUkJOSUFVZ0FVRUFFRkFpQURZQ3ZBRWdCU0FGUVJCcU5nSU1JQVZCQURZQ0NDQUZRUUU2QUFjZ0JVSEZBRG9BQmdOQUFrQWdCVUdJQW1vZ0JVR0FBbW9ROEFGRkRRQWdCU2dDdkFFZ0FSQWZJQUJxUmdSQUlBRVFIeUVDSUFFZ0FSQWZRUUYwRUUwZ0FTQUJFRjBRVFNBRklBSWdBVUVBRUZBaUFHbzJBcndCQ3lBRlFZZ0NhaENmQVNBRlFRZHFJQVZCQm1vZ0FDQUZRYndCYWlBRkxBRGZBU0FGTEFEZUFTQUZRZEFCYWlBRlFSQnFJQVZCREdvZ0JVRUlhaUFGUWVBQmFoRDNCdzBBSUFWQmlBSnFFTFVCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVdEFBZEZEUUFnQlNnQ0RDSUNJQVZCRUdwclFaOEJTZzBBSUFVZ0FrRUVhallDRENBQ0lBVW9BZ2cyQWdBTElBUWdBQ0FGS0FLOEFTQURFS1lMT0FJQUlBVkIwQUZxSUFWQkVHb2dCU2dDRENBREVPOEJJQVZCaUFKcUlBVkJnQUpxRUw0QkJFQWdBeUFES0FJQVFRSnlOZ0lBQ3lBRktBS0lBaUVBSUFFUUlCb2dCVUhRQVdvUUlCb2dCVUdRQW1va0FDQUFDdzhBSUFFZ0FpQURJQVFnQlJDTUV3dVlBd0VDZnlNQVFaQUNheUlGSkFBZ0JTQUJOZ0tBQWlBRklBQTJBb2dDSUFJUW1nTWhCaUFGUWRBQmFpQUNJQVZCL3dGcUVOQUZJQVZCd0FGcUVFNGlBQ0FBRUYwUVRTQUZJQUJCQUJCUUlnRTJBcndCSUFVZ0JVRVFhallDRENBRlFRQTJBZ2dEUUFKQUlBVkJpQUpxSUFWQmdBSnFFUEFCUlEwQUlBVW9BcndCSUFBUUh5QUJha1lFUUNBQUVCOGhBaUFBSUFBUUgwRUJkQkJOSUFBZ0FCQmRFRTBnQlNBQ0lBQkJBQkJRSWdGcU5nSzhBUXNnQlVHSUFtb1Fud0VnQmlBQklBVkJ2QUZxSUFWQkNHb2dCU3dBL3dFZ0JVSFFBV29nQlVFUWFpQUZRUXhxUWNDNUVoRHBCQTBBSUFWQmlBSnFFTFVCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVb0Fnd2lBaUFGUVJCcWEwR2ZBVW9OQUNBRklBSkJCR28yQWd3Z0FpQUZLQUlJTmdJQUN5QUVJQUVnQlNnQ3ZBRWdBeUFHRUtjTE53TUFJQVZCMEFGcUlBVkJFR29nQlNnQ0RDQURFTzhCSUFWQmlBSnFJQVZCZ0FKcUVMNEJCRUFnQXlBREtBSUFRUUp5TmdJQUN5QUZLQUtJQWlFQklBQVFJQm9nQlVIUUFXb1FJQm9nQlVHUUFtb2tBQ0FCQ3c4QUlBRWdBaUFESUFRZ0JSQ09Fd3VZQXdFQ2Z5TUFRWkFDYXlJRkpBQWdCU0FCTmdLQUFpQUZJQUEyQW9nQ0lBSVFtZ01oQmlBRlFkQUJhaUFDSUFWQi93RnFFTkFGSUFWQndBRnFFRTRpQUNBQUVGMFFUU0FGSUFCQkFCQlFJZ0UyQXJ3QklBVWdCVUVRYWpZQ0RDQUZRUUEyQWdnRFFBSkFJQVZCaUFKcUlBVkJnQUpxRVBBQlJRMEFJQVVvQXJ3QklBQVFIeUFCYWtZRVFDQUFFQjhoQWlBQUlBQVFIMEVCZEJCTklBQWdBQkJkRUUwZ0JTQUNJQUJCQUJCUUlnRnFOZ0s4QVFzZ0JVR0lBbW9RbndFZ0JpQUJJQVZCdkFGcUlBVkJDR29nQlN3QS93RWdCVUhRQVdvZ0JVRVFhaUFGUVF4cVFjQzVFaERwQkEwQUlBVkJpQUpxRUxVQkdnd0JDd3NDUUNBRlFkQUJhaEFmUlEwQUlBVW9BZ3dpQWlBRlFSQnFhMEdmQVVvTkFDQUZJQUpCQkdvMkFnd2dBaUFGS0FJSU5nSUFDeUFFSUFFZ0JTZ0N2QUVnQXlBR0VLa0xOZ0lBSUFWQjBBRnFJQVZCRUdvZ0JTZ0NEQ0FERU84QklBVkJpQUpxSUFWQmdBSnFFTDRCQkVBZ0F5QURLQUlBUVFKeU5nSUFDeUFGS0FLSUFpRUJJQUFRSUJvZ0JVSFFBV29RSUJvZ0JVR1FBbW9rQUNBQkM1Z0RBUUovSXdCQmtBSnJJZ1VrQUNBRklBRTJBb0FDSUFVZ0FEWUNpQUlnQWhDYUF5RUdJQVZCMEFGcUlBSWdCVUgvQVdvUTBBVWdCVUhBQVdvUVRpSUFJQUFRWFJCTklBVWdBRUVBRUZBaUFUWUN2QUVnQlNBRlFSQnFOZ0lNSUFWQkFEWUNDQU5BQWtBZ0JVR0lBbW9nQlVHQUFtb1E4QUZGRFFBZ0JTZ0N2QUVnQUJBZklBRnFSZ1JBSUFBUUh5RUNJQUFnQUJBZlFRRjBFRTBnQUNBQUVGMFFUU0FGSUFJZ0FFRUFFRkFpQVdvMkFyd0JDeUFGUVlnQ2FoQ2ZBU0FHSUFFZ0JVRzhBV29nQlVFSWFpQUZMQUQvQVNBRlFkQUJhaUFGUVJCcUlBVkJER3BCd0xrU0VPa0VEUUFnQlVHSUFtb1F0UUVhREFFTEN3SkFJQVZCMEFGcUVCOUZEUUFnQlNnQ0RDSUNJQVZCRUdwclFaOEJTZzBBSUFVZ0FrRUVhallDRENBQ0lBVW9BZ2cyQWdBTElBUWdBU0FGS0FLOEFTQURJQVlRcXdzN0FRQWdCVUhRQVdvZ0JVRVFhaUFGS0FJTUlBTVE3d0VnQlVHSUFtb2dCVUdBQW1vUXZnRUVRQ0FESUFNb0FnQkJBbkkyQWdBTElBVW9Bb2dDSVFFZ0FCQWdHaUFGUWRBQmFoQWdHaUFGUVpBQ2FpUUFJQUVMRHdBZ0FTQUNJQU1nQkNBRkVKRVRDNWdEQVFKL0l3QkJrQUpySWdVa0FDQUZJQUUyQW9BQ0lBVWdBRFlDaUFJZ0FoQ2FBeUVHSUFWQjBBRnFJQUlnQlVIL0FXb1EwQVVnQlVIQUFXb1FUaUlBSUFBUVhSQk5JQVVnQUVFQUVGQWlBVFlDdkFFZ0JTQUZRUkJxTmdJTUlBVkJBRFlDQ0FOQUFrQWdCVUdJQW1vZ0JVR0FBbW9ROEFGRkRRQWdCU2dDdkFFZ0FCQWZJQUZxUmdSQUlBQVFIeUVDSUFBZ0FCQWZRUUYwRUUwZ0FDQUFFRjBRVFNBRklBSWdBRUVBRUZBaUFXbzJBcndCQ3lBRlFZZ0NhaENmQVNBR0lBRWdCVUc4QVdvZ0JVRUlhaUFGTEFEL0FTQUZRZEFCYWlBRlFSQnFJQVZCREdwQndMa1NFT2tFRFFBZ0JVR0lBbW9RdFFFYURBRUxDd0pBSUFWQjBBRnFFQjlGRFFBZ0JTZ0NEQ0lDSUFWQkVHcHJRWjhCU2cwQUlBVWdBa0VFYWpZQ0RDQUNJQVVvQWdnMkFnQUxJQVFnQVNBRktBSzhBU0FESUFZUXJBczNBd0FnQlVIUUFXb2dCVUVRYWlBRktBSU1JQU1RN3dFZ0JVR0lBbW9nQlVHQUFtb1F2Z0VFUUNBRElBTW9BZ0JCQW5JMkFnQUxJQVVvQW9nQ0lRRWdBQkFnR2lBRlFkQUJhaEFnR2lBRlFaQUNhaVFBSUFFTER3QWdBU0FDSUFNZ0JDQUZFSk1UQzBVQUFuOUJBQ0FBRVBRQklBRVE5QUZIRFFBYUlBQVE5QUZGQkVCQkFTQUJFUFFCUlEwQkdnc2dBQ2dDUUNJQUlBRW9Ba0FpQVVZRVFFRUJEd3NnQUNBQkVLTUNDd3VZQXdFQ2Z5TUFRWkFDYXlJRkpBQWdCU0FCTmdLQUFpQUZJQUEyQW9nQ0lBSVFtZ01oQmlBRlFkQUJhaUFDSUFWQi93RnFFTkFGSUFWQndBRnFFRTRpQUNBQUVGMFFUU0FGSUFCQkFCQlFJZ0UyQXJ3QklBVWdCVUVRYWpZQ0RDQUZRUUEyQWdnRFFBSkFJQVZCaUFKcUlBVkJnQUpxRVBBQlJRMEFJQVVvQXJ3QklBQVFIeUFCYWtZRVFDQUFFQjhoQWlBQUlBQVFIMEVCZEJCTklBQWdBQkJkRUUwZ0JTQUNJQUJCQUJCUUlnRnFOZ0s4QVFzZ0JVR0lBbW9RbndFZ0JpQUJJQVZCdkFGcUlBVkJDR29nQlN3QS93RWdCVUhRQVdvZ0JVRVFhaUFGUVF4cVFjQzVFaERwQkEwQUlBVkJpQUpxRUxVQkdnd0JDd3NDUUNBRlFkQUJhaEFmUlEwQUlBVW9BZ3dpQWlBRlFSQnFhMEdmQVVvTkFDQUZJQUpCQkdvMkFnd2dBaUFGS0FJSU5nSUFDeUFFSUFFZ0JTZ0N2QUVnQXlBR0VLMExOZ0lBSUFWQjBBRnFJQVZCRUdvZ0JTZ0NEQ0FERU84QklBVkJpQUpxSUFWQmdBSnFFTDRCQkVBZ0F5QURLQUlBUVFKeU5nSUFDeUFGS0FLSUFpRUJJQUFRSUJvZ0JVSFFBV29RSUJvZ0JVR1FBbW9rQUNBQkN3OEFJQUVnQWlBRElBUWdCUkNXRXd1b0FnRURmd0pBQWtBZ0FDQUFLQUlBS0FLSUFSRUFBRVVFUUVFQklRTWdBU0FCS0FJQUtBS0lBUkVBQUVVTkFRc0NRQ0FBSUFBb0FnQW9Bb2dCRVFBQVJRMEFJQUVnQVNnQ0FDZ0NpQUVSQUFCRkRRQWdBQ2dDUUNBQktBSkFSZzBDQzBFQUlRTWdBQ0FBS0FJQUtBS0lBUkVBQUVVTkFDQUJJQUVvQWdBb0FvZ0JFUUFBUlEwQUlBQW9Ba0FRTnlBQktBSkFFRGRIRFFBZ0FDZ0NTQ0FCS0FKSUVLTUpEUUFnQUNnQ1FCQTNSUTBCQTBCQkFDRURJQUFvQWtBZ0FoQTRLQUlBSWdRZ0JDZ0NBQ2dDR0JFQUFDQUJLQUpBSUFJUU9DZ0NBQ0lFSUFRb0FnQW9BaGdSQUFBUW93a05BU0FBS0FKQUlBSVFPQ2dDQUNBQktBSkFJQUlRT0NnQ0FCREFBUTBCUVFFaEF5QUNRUUZxSWdJZ0FDZ0NRQkEzU1EwQUN3c2dBdzhMUVFFTDlBRUJBWDhqQUVFZ2F5SUdKQUFnQmlBQk5nSVlBa0FnQXlnQ0JFRUJjVVVFUUNBR1FYODJBZ0FnQmlBQUlBRWdBaUFESUFRZ0JpQUFLQUlBS0FJUUVRc0FJZ0UyQWhnZ0JpZ0NBQ0lBUVFGTkJFQWdBRUVCYXdSQUlBVkJBRG9BQUF3REN5QUZRUUU2QUFBTUFnc2dCVUVCT2dBQUlBUkJCRFlDQUF3QkN5QUdJQU1RWENBR0VQb0JJUUVnQmhCWklBWWdBeEJjSUFZUTZnUWhBQ0FHRUZrZ0JpQUFFTmtDSUFaQkRISWdBQkRZQWlBRklBWkJHR29nQWlBR0lBWkJHR29pQXlBQklBUkJBUkRGQmlBR1Jqb0FBQ0FHS0FJWUlRRURRQ0FEUVhScUVDQWlBeUFHUncwQUN3c2dCa0VnYWlRQUlBRUxRQUVCZjBFQUlRQURmeUFCSUFKR0JIOGdBQVVnQVNnQ0FDQUFRUVIwYWlJQVFZQ0FnSUIvY1NJRFFSaDJJQU55SUFCeklRQWdBVUVFYWlFQkRBRUxDd3NRQUNBQUVPb0JJQUFnQWlBREVLOExDMVFCQW44Q1FBTkFJQU1nQkVjRVFFRi9JUUFnQVNBQ1JnMENJQUVvQWdBaUJTQURLQUlBSWdaSURRSWdCaUFGU0FSQVFRRVBCU0FEUVFScUlRTWdBVUVFYWlFQkRBSUxBQXNMSUFFZ0FrY2hBQXNnQUF0QUFRRi9RUUFoQUFOL0lBRWdBa1lFZnlBQUJTQUJMQUFBSUFCQkJIUnFJZ0JCZ0lDQWdIOXhJZ05CR0hZZ0EzSWdBSE1oQUNBQlFRRnFJUUVNQVFzTEM1WUJBUVIvSXdCQkVHc2lCU1FBSUFFZ0FoRFdDQ0lFUVc5TkJFQUNRQ0FFUVFwTkJFQWdBQ0FFRU5RQklBQWhBd3dCQ3lBQUlBQWdCQkRrQWtFQmFpSUdFSUVFSWdNUTRRRWdBQ0FHRU9rQklBQWdCQkM4QVFzRFFDQUJJQUpIQkVBZ0F5QUJFSlFCSUFOQkFXb2hBeUFCUVFGcUlRRU1BUXNMSUFWQkFEb0FEeUFESUFWQkQyb1FsQUVnQlVFUWFpUUFEd3NRYmdBTEVBQWdBQkRxQVNBQUlBSWdBeENlRXd0VUFRSi9Ba0FEUUNBRElBUkhCRUJCZnlFQUlBRWdBa1lOQWlBQkxBQUFJZ1VnQXl3QUFDSUdTQTBDSUFZZ0JVZ0VRRUVCRHdVZ0EwRUJhaUVESUFGQkFXb2hBUXdDQ3dBTEN5QUJJQUpISVFBTElBQUxOUUVCZmlNQVFSQnJJZ01rQUNBRElBRWdBaENpRXlBREtRTUFJUVFnQUNBREtRTUlOd01JSUFBZ0JEY0RBQ0FEUVJCcUpBQUxPUUlCZndGK0l3QkJFR3NpQXlRQUlBTWdBU0FDUVFJUStRY2dBeWtEQUNFRUlBQWdBeWtEQ0RjRENDQUFJQVEzQXdBZ0EwRVFhaVFBQ3pJQ0FYOEJmQ01BUVJCcklnSWtBQ0FDSUFBZ0FVRUJFUGtISUFJcEF3QWdBaWtEQ0JETUJpRURJQUpCRUdva0FDQURDeklDQVg4QmZTTUFRUkJySWdJa0FDQUNJQUFnQVVFQUVQa0hJQUlwQXdBZ0Fpa0RDQkMrQ3lFRElBSkJFR29rQUNBREM0VURBUVovSXdCQmtBaHJJZ1lrQUNBR0lBRW9BZ0FpQnpZQ0RDQUFJQVpCRUdvZ0FCc2hDQUpBSUFOQmdBSWdBQnNpQTBVZ0IwVnlEUUFnQWtFQ2RpSUZJQU5QSVFvZ0FrR0RBVTFCQUNBRklBTkpHdzBBQTBBZ0FpQURJQVVnQ2hzaUJXc2hBaUFJSUFaQkRHb2dCU0FFRUxRTElnVkJmMFlFUUVFQUlRTWdCaWdDRENFSFFYOGhDUXdDQ3lBSUlBZ2dCVUVDZEdvZ0NDQUdRUkJxUmlJSEd5RUlJQVVnQ1dvaENTQURRUUFnQlNBSEcyc2lBMFVnQmlnQ0RDSUhSWElOQVNBQ1FRSjJJZ1VnQTA4aENpQUNRWU1CU3lBRklBTlBjZzBBQ3dzQ1FBSkFJQUpGSUFkRklBTkZjbklOQUFOQUlBZ2dCeUFDSUFRUXlBWWlCVUVDYWtFQ1RRUkFJQVZCQVdvaUFrRUJUUVJBSUFKQkFXc05CQ0FHUVFBMkFnd01Bd3NnQkVFQU5nSUFEQUlMSUFZZ0JpZ0NEQ0FGYWlJSE5nSU1JQWxCQVdvaENTQURRWDlxSWdORkRRRWdDRUVFYWlFSUlBSWdCV3NoQWlBSklRVWdBZzBBQ3d3QkN5QUpJUVVMSUFBRVFDQUJJQVlvQWd3MkFnQUxJQVpCa0FocUpBQWdCUXZSQWdFR2Z5TUFRWkFDYXlJRkpBQWdCU0FCS0FJQUlnWTJBZ3dnQUNBRlFSQnFJQUFiSVFjQ1FDQURRWUFDSUFBYklnTkZJQVpGY2cwQUlBTWdBazBpQkNBQ1FTQkxja1VOQUFOQUlBSWdBeUFDSUFRYklnUnJJUUlnQnlBRlFReHFJQVFRcHhNaUJFRi9SZ1JBUVFBaEF5QUZLQUlNSVFaQmZ5RUlEQUlMSUFjZ0JDQUhhaUFISUFWQkVHcEdJZ1liSVFjZ0JDQUlhaUVJSUFOQkFDQUVJQVliYXlJRFJTQUZLQUlNSWdaRmNnMEJJQUlnQTA4aUJDQUNRU0ZQY2cwQUN3c0NRQUpBSUFKRklBWkZJQU5GY25JTkFBTkFJQWNnQmlnQ0FCQ29CQ0lKUVFGcVFRRk5CRUJCZnlFRUlBa05BeUFGUVFBMkFnd01BZ3NnQlNBRktBSU1RUVJxSWdZMkFnd2dDQ0FKYWlFSUlBTWdDV3NpQTBVTkFTQUhJQWxxSVFjZ0NDRUVJQUpCZjJvaUFnMEFDd3dCQ3lBSUlRUUxJQUFFUUNBQklBVW9BZ3cyQWdBTElBVkJrQUpxSkFBZ0JBdTNBd0VGZnlNQVFSQnJJZ2NrQUFKQUFrQUNRQUpBSUFBRVFDQUNRUVJQRFFFZ0FpRUREQUlMUVFBaEFpQUJLQUlBSWdBb0FnQWlBMFVOQXdOQVFRRWhCU0FEUVlBQlR3UkFRWDhoQmlBSFFReHFJQU1RcUFRaUJVRi9SZzBGQ3lBQUtBSUVJUU1nQUVFRWFpRUFJQUlnQldvaUFpRUdJQU1OQUFzTUF3c2dBU2dDQUNFRklBSWhBd05BQW44Z0JTZ0NBQ0lFUVg5cVFmOEFUd1JBSUFSRkJFQWdBRUVBT2dBQUlBRkJBRFlDQUF3RkMwRi9JUVlnQUNBRUVLZ0VJZ1JCZjBZTkJTQURJQVJySVFNZ0FDQUVhZ3dCQ3lBQUlBUTZBQUFnQTBGL2FpRURJQUVvQWdBaEJTQUFRUUZxQ3lFQUlBRWdCVUVFYWlJRk5nSUFJQU5CQTBzTkFBc0xJQU1FUUNBQktBSUFJUVVEUUFKL0lBVW9BZ0FpQkVGL2FrSC9BRThFUUNBRVJRUkFJQUJCQURvQUFDQUJRUUEyQWdBTUJRdEJmeUVHSUFkQkRHb2dCQkNvQkNJRVFYOUdEUVVnQXlBRVNRMEVJQUFnQlNnQ0FCQ29CQm9nQXlBRWF5RURJQUFnQkdvTUFRc2dBQ0FFT2dBQUlBTkJmMm9oQXlBQktBSUFJUVVnQUVFQmFnc2hBQ0FCSUFWQkJHb2lCVFlDQUNBRERRQUxDeUFDSVFZTUFRc2dBaUFEYXlFR0N5QUhRUkJxSkFBZ0JndGpBUUovSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FESUFJMkFnaEJmeUVFQWtCQkFFRUFJQUVnQWhEVkJTSUNRUUJJRFFBZ0FDQUNRUUZxSWdJUW13RWlBRFlDQUNBQVJRMEFJQUFnQWlBQklBTW9BZ3dRMVFVaEJBc2dBMEVRYWlRQUlBUUwyUUVCQkg4akFFRWdheUlCSkFBQ2Z3SkFRUUFRdVFzRVFBTkFRZi8vLy84SElBQjJRUUZ4QkVBZ0FFRUNkQ0FBUWRXN0VoQzZDellDQUFzZ0FFRUJhaUlBUVFaSERRQUxEQUVMQTBBZ0FVRUlhaUFBUVFKMGFnSi9RUUVnQUhSQi8vLy8vd2R4SWdKQkFYSkZCRUFnQUVFQ2RDZ0NBQXdCQ3lBQVFkVzdFa0dZbXhJZ0Foc1F1Z3NMSWdJMkFnQWdBeUFDUVFCSGFpRURJQUJCQVdvaUFFRUdSdzBBQ3lBRFFRRkxEUUJCOEprU0lBTkJBV3NOQVJvZ0FTZ0NDRUhVbVJKSERRQkJpSm9TREFFTFFRQUxJUUFnQVVFZ2FpUUFJQUFMUkFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWdRZ0FpQUFOZ0lBUWRzQUlBSVFEU0lBUVlGZ1R3Ui9RZGpBRkVFQUlBQnJOZ0lBUVFBRklBQUxHaUFDUVJCcUpBQUxqZ0VCQTM4akFFRVFheUlBSkFBQ1FDQUFRUXhxSUFCQkNHb1FCQTBBUWF6SkZDQUFLQUlNUVFKMFFRUnFFSnNCSWdFMkFnQWdBVVVOQUFKQUlBQW9BZ2dRbXdFaUFRUkFRYXpKRkNnQ0FDSUNEUUVMUWF6SkZFRUFOZ0lBREFFTElBSWdBQ2dDREVFQ2RHcEJBRFlDQUVHc3lSUW9BZ0FnQVJBRFJRMEFRYXpKRkVFQU5nSUFDeUFBUVJCcUpBQUxDd0FnQUNBQklBSVFyUk1MVkFFQ2Z5QUJJQUFvQWxRaUFTQUJRUUFnQWtHQUFtb2lBeEROQmlJRUlBRnJJQU1nQkJzaUF5QUNJQU1nQWtrYklnSVFQUm9nQUNBQklBTnFJZ00yQWxRZ0FDQUROZ0lJSUFBZ0FTQUNhallDQkNBQ0N6QUJBWDhqQUVFUWF5SUNJQUEyQWd3Z0FpQUFJQUZCQW5RZ0FVRUFSMEVDZEd0cUlnQkJCR28yQWdnZ0FDZ0NBQXVvRXdJTmZ3TitJd0JCc0FKcklnWWtBQ0FBS0FKTVFRQk9CSDlCQVFVZ0F3c2FBa0FnQVMwQUFDSUVSUTBBQWtBRFFBSkFBa0FnQkVIL0FYRVFxUVFFUUFOQUlBRWlCRUVCYWlFQklBUXRBQUVRcVFRTkFBc2dBRUlBRU5zQ0EwQUNmeUFBS0FJRUlnRWdBQ2dDYUVrRVFDQUFJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QUFFSHNMRUtrRURRQUxBa0FnQUNnQ2FFVUVRQ0FBS0FJRUlRRU1BUXNnQUNBQUtBSUVRWDlxSWdFMkFnUUxJQUVnQUNnQ0NHdXNJQUFwQTNnZ0VIeDhJUkFNQVFzQ2Z3SkFBa0FnQVMwQUFDSUVRU1ZHQkVBZ0FTMEFBU0lEUVNwR0RRRWdBMEVsUncwQ0N5QUFRZ0FRMndJZ0FTQUVRU1ZHYWlFRUFuOGdBQ2dDQkNJQklBQW9BbWhKQkVBZ0FDQUJRUUZxTmdJRUlBRXRBQUFNQVFzZ0FCQjdDeUlCSUFRdEFBQkhCRUFnQUNnQ2FBUkFJQUFnQUNnQ0JFRi9hallDQkF0QkFDRU1JQUZCQUU0TkNBd0ZDeUFRUWdGOElSQU1Bd3RCQUNFSElBRkJBbW9NQVFzQ1FDQURFTTBDUlEwQUlBRXRBQUpCSkVjTkFDQUNJQUV0QUFGQlVHb1FyaE1oQnlBQlFRTnFEQUVMSUFJb0FnQWhCeUFDUVFScUlRSWdBVUVCYWdzaEJFRUFJUXhCQUNFQklBUXRBQUFRelFJRVFBTkFJQVF0QUFBZ0FVRUtiR3BCVUdvaEFTQUVMUUFCSVFNZ0JFRUJhaUVFSUFNUXpRSU5BQXNMQW44Z0JDQUVMUUFBSWdWQjdRQkhEUUFhUVFBaENTQUhRUUJISVF3Z0JDMEFBU0VGUVFBaENpQUVRUUZxQ3lFRElBVkIvd0Z4UWI5L2FpSUlRVGxMRFFFZ0EwRUJhaUVFUVFNaEJRSkFBa0FDUUFKQUFrQUNRQ0FJUVFGckRqa0hCQWNFQkFRSEJ3Y0hBd2NIQndjSEJ3UUhCd2NIQkFjSEJBY0hCd2NIQkFjRUJBUUVCQUFFQlFjQkJ3UUVCQWNIQkFJRUJ3Y0VCd0lFQ3lBRFFRSnFJQVFnQXkwQUFVSG9BRVlpQXhzaEJFRitRWDhnQXhzaEJRd0VDeUFEUVFKcUlBUWdBeTBBQVVIc0FFWWlBeHNoQkVFRFFRRWdBeHNoQlF3REMwRUJJUVVNQWd0QkFpRUZEQUVMUVFBaEJTQURJUVFMUVFFZ0JTQUVMUUFBSWdOQkwzRkJBMFlpQ0JzaERnSkFJQU5CSUhJZ0F5QUlHeUlMUWRzQVJnMEFBa0FnQzBIdUFFY0VRQ0FMUWVNQVJ3MEJJQUZCQVNBQlFRRktHeUVCREFJTElBY2dEaUFRRUwwTERBSUxJQUJDQUJEYkFnTkFBbjhnQUNnQ0JDSURJQUFvQW1oSkJFQWdBQ0FEUVFGcU5nSUVJQU10QUFBTUFRc2dBQkI3Q3hDcEJBMEFDd0pBSUFBb0FtaEZCRUFnQUNnQ0JDRUREQUVMSUFBZ0FDZ0NCRUYvYWlJRE5nSUVDeUFESUFBb0FnaHJyQ0FBS1FONElCQjhmQ0VRQ3lBQUlBR3NJaEVRMndJQ1FDQUFLQUlFSWdnZ0FDZ0NhQ0lEU1FSQUlBQWdDRUVCYWpZQ0JBd0JDeUFBRUh0QkFFZ05BaUFBS0FKb0lRTUxJQU1FUUNBQUlBQW9BZ1JCZjJvMkFnUUxBa0FDUUNBTFFhaC9haUlEUVNCTEJFQWdDMEcvZjJvaUFVRUdTMEVCSUFGMFFmRUFjVVZ5RFFJTUFRdEJFQ0VGQWtBQ1FBSkFBa0FDUUNBRFFRRnJEaDhHQmdRR0JnWUdCZ1VHQkFFRkJRVUdBQVlHQmdZR0FnTUdCZ1FHQVFZR0F3dEJBQ0VGREFJTFFRb2hCUXdCQzBFSUlRVUxJQUFnQlVFQVFuOFE0Z3NoRVNBQUtRTjRRZ0FnQUNnQ0JDQUFLQUlJYTZ4OVVRMEdJQWRGSUF0QjhBQkhja1VFUUNBSElCRStBZ0FNQXdzZ0J5QU9JQkVRdlFzTUFnc0NRQ0FMUVJCeVFmTUFSZ1JBSUFaQklHcEJmMEdCQWhEZEFSb2dCa0VBT2dBZ0lBdEI4d0JIRFFFZ0JrRUFPZ0JCSUFaQkFEb0FMaUFHUVFBMkFTb01BUXNnQmtFZ2FpQUVMUUFCSWdOQjNnQkdJZ2hCZ1FJUTNRRWFJQVpCQURvQUlDQUVRUUpxSUFSQkFXb2dDQnNoRFFKL0FrQUNRQ0FFUVFKQkFTQUlHMm90QUFBaUJFRXRSd1JBSUFSQjNRQkdEUUVnQTBIZUFFY2hCU0FOREFNTElBWWdBMEhlQUVjaUJUb0FUZ3dCQ3lBR0lBTkIzZ0JISWdVNkFINExJQTFCQVdvTElRUURRQUpBSUFRdEFBQWlBMEV0UndSQUlBTkZEUWNnQTBIZEFFY05BUXdEQzBFdElRTWdCQzBBQVNJSVJTQUlRZDBBUm5JTkFDQUVRUUZxSVEwQ1FDQUVRWDlxTFFBQUlnUWdDRThFUUNBSUlRTU1BUXNEUUNBRVFRRnFJZ1FnQmtFZ2Ftb2dCVG9BQUNBRUlBMHRBQUFpQTBrTkFBc0xJQTBoQkFzZ0F5QUdhaUFGT2dBaElBUkJBV29oQkF3QUFBc0FDeUFCUVFGcVFSOGdDMEhqQUVZaUNCc2hCUUpBQWtBQ1FDQU9RUUZISWcxRkJFQWdCeUVESUF3RVFDQUZRUUowRUpzQklnTkZEUVFMSUFaQ0FEY0RxQUpCQUNFQkEwQWdBeUVLQWtBRFFBSi9JQUFvQWdRaUF5QUFLQUpvU1FSQUlBQWdBMEVCYWpZQ0JDQURMUUFBREFFTElBQVFld3NpQXlBR2FpMEFJVVVOQVNBR0lBTTZBQnNnQmtFY2FpQUdRUnRxUVFFZ0JrR29BbW9ReUFZaUEwRitSZzBBSUFOQmYwWU5CU0FLQkVBZ0NpQUJRUUowYWlBR0tBSWNOZ0lBSUFGQkFXb2hBUXNnREVVZ0FTQUZSM0lOQUFzZ0NpQUZRUUYwUVFGeUlnVkJBblFRc0FZaUF3MEJEQVFMQ3dKL1FRRWdCa0dvQW1vaUEwVU5BQm9nQXlnQ0FFVUxSUTBDUVFBaENRd0JDeUFNQkVCQkFDRUJJQVVRbXdFaUEwVU5Bd05BSUFNaENRTkFBbjhnQUNnQ0JDSURJQUFvQW1oSkJFQWdBQ0FEUVFGcU5nSUVJQU10QUFBTUFRc2dBQkI3Q3lJRElBWnFMUUFoUlFSQVFRQWhDZ3dFQ3lBQklBbHFJQU02QUFBZ0FVRUJhaUlCSUFWSERRQUxRUUFoQ2lBSklBVkJBWFJCQVhJaUJSQ3dCaUlERFFBTERBY0xRUUFoQVNBSEJFQURRQUovSUFBb0FnUWlBeUFBS0FKb1NRUkFJQUFnQTBFQmFqWUNCQ0FETFFBQURBRUxJQUFRZXdzaUF5QUdhaTBBSVFSQUlBRWdCMm9nQXpvQUFDQUJRUUZxSVFFTUFRVkJBQ0VLSUFjaENRd0RDd0FBQ3dBTEEwQUNmeUFBS0FJRUlnRWdBQ2dDYUVrRVFDQUFJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QUFFSHNMSUFacUxRQWhEUUFMUVFBaENVRUFJUXBCQUNFQkN3SkFJQUFvQW1oRkJFQWdBQ2dDQkNFRERBRUxJQUFnQUNnQ0JFRi9haUlETmdJRUN5QUFLUU40SUFNZ0FDZ0NDR3VzZkNJU1VDQVJJQkpTUVFBZ0NCdHlEUWNDUUNBTVJRMEFJQTFGQkVBZ0J5QUtOZ0lBREFFTElBY2dDVFlDQUFzZ0NBMERJQW9FUUNBS0lBRkJBblJxUVFBMkFnQUxJQWxGQkVCQkFDRUpEQVFMSUFFZ0NXcEJBRG9BQUF3REMwRUFJUWtNQkF0QkFDRUpRUUFoQ2d3REN5QUdJQUFnRGtFQUVNQUxJQUFwQTNoQ0FDQUFLQUlFSUFBb0FnaHJySDFSRFFRZ0IwVWdEa0VDUzNJTkFDQUdLUU1JSVJFZ0Jpa0RBQ0VTQWtBQ1FBSkFJQTVCQVdzT0FnRUNBQXNnQnlBU0lCRVF2Z3M0QWdBTUFnc2dCeUFTSUJFUXpBWTVBd0FNQVFzZ0J5QVNOd01BSUFjZ0VUY0RDQXNnQUNnQ0JDQUFLQUlJYTZ3Z0FDa0RlQ0FRZkh3aEVDQVBJQWRCQUVkcUlROExJQVJCQVdvaEFTQUVMUUFCSWdRTkFRd0RDd3NnRDBGL0lBOGJJUThMSUF4RkRRQWdDUkFxSUFvUUtnc2dCa0d3QW1va0FDQVBDOWtiQXd4L0JuNEJmQ01BUVlER0FHc2lCeVFBUVFBZ0F5QUVhaUlSYXlFU0FrQUNmd05BQWtBZ0FrRXdSd1JBSUFKQkxrY05CQ0FCS0FJRUlnSWdBU2dDYUU4TkFTQUJJQUpCQVdvMkFnUWdBaTBBQUF3REN5QUJLQUlFSWdJZ0FTZ0NhRWtFUUVFQklRb2dBU0FDUVFGcU5nSUVJQUl0QUFBaEFnVWdBUkI3SVFKQkFTRUtDd3dCQ3dzZ0FSQjdDeUVDUVFFaEN5QUNRVEJIRFFBRFFDQVRRbjk4SVJNQ2Z5QUJLQUlFSWdJZ0FTZ0NhRWtFUUNBQklBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQkVIc0xJZ0pCTUVZTkFBdEJBU0VLQ3lBSFFRQTJBb0FHSUFBQ2ZnSkFBa0FDUUFKQUlBSkJMa1lpQ1NBQ1FWQnFJZzVCQ1UxeUJFQURRQUpBSUFsQkFYRUVRQ0FMUlFSQUlCUWhFMEVCSVFzTUFnc2dDa0VBUnlFS0RBUUxJQlJDQVh3aEZDQUlRZndQVEFSQUlCU25JQTBnQWtFd1J4c2hEU0FIUVlBR2FpQUlRUUowYWlJSklBd0VmeUFDSUFrb0FnQkJDbXhxUVZCcUJTQU9DellDQUVFQklRcEJBQ0FNUVFGcUlnSWdBa0VKUmlJQ0d5RU1JQUlnQ0dvaENBd0JDeUFDUVRCR0RRQWdCeUFIS0FMd1JVRUJjallDOEVVTEFuOGdBU2dDQkNJQ0lBRW9BbWhKQkVBZ0FTQUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0FSQjdDeUlDUVM1R0lna2dBa0ZRYWlJT1FRcEpjZzBBQ3dzZ0V5QVVJQXNiSVJNZ0NrVWdBa0VnY2tIbEFFZHlSUVJBQWtBZ0FTQUdFTDhMSWhWQ2dJQ0FnSUNBZ0lDQWYxSU5BQ0FHUlEwRVFnQWhGU0FCS0FKb1JRMEFJQUVnQVNnQ0JFRi9hallDQkFzZ0V5QVZmQ0VUREFRTElBcEJBRWNoQ2lBQ1FRQklEUUVMSUFFb0FtaEZEUUFnQVNBQktBSUVRWDlxTmdJRUN5QUtEUUZCMk1BVVFSdzJBZ0FMSUFGQ0FCRGJBa0lBSVJOQ0FBd0JDeUFIS0FLQUJpSUJSUVJBSUFjZ0JiZEVBQUFBQUFBQUFBQ2lFSndESUFjcEF3Z2hFeUFIS1FNQURBRUxJQk1nRkZJZ0ZFSUpWWElnQTBFZVRFRUFJQUVnQTNZYmNrVUVRQ0FIUVNCcUlBRVE2d1FnQjBFd2FpQUZFTG9DSUFkQkVHb2dCeWtETUNBSEtRTTRJQWNwQXlBZ0J5a0RLQkNMQVNBSEtRTVlJUk1nQnlrREVBd0JDeUFUSUFSQmZtMnNWUVJBSUFkQjRBQnFJQVVRdWdJZ0IwSFFBR29nQnlrRFlDQUhLUU5vUW45Qy8vLy8vLy8vdi8vL0FCQ0xBU0FIUVVCcklBY3BBMUFnQnlrRFdFSi9Rdi8vLy8vLy83Ly8vd0FRaXdGQjJNQVVRY1FBTmdJQUlBY3BBMGdoRXlBSEtRTkFEQUVMSUJNZ0JFR2VmbXFzVXdSQUlBZEJrQUZxSUFVUXVnSWdCMEdBQVdvZ0J5a0RrQUVnQnlrRG1BRkNBRUtBZ0lDQWdJREFBQkNMQVNBSFFmQUFhaUFIS1FPQUFTQUhLUU9JQVVJQVFvQ0FnSUNBZ01BQUVJc0JRZGpBRkVIRUFEWUNBQ0FIS1FONElSTWdCeWtEY0F3QkN5QU1CRUFnREVFSVRBUkFJQWRCZ0FacUlBaEJBblJxSWdJb0FnQWhBUU5BSUFGQkNtd2hBU0FNUVFoSUlRWWdERUVCYWlFTUlBWU5BQXNnQWlBQk5nSUFDeUFJUVFGcUlRZ0xBa0FnRFVFSVNpQU5JQk9uSWd0S2NpQUxRUkZLY2cwQUlBdEJDVVlFUUNBSFFiQUJhaUFIS0FLQUJoRHJCQ0FIUWNBQmFpQUZFTG9DSUFkQm9BRnFJQWNwQThBQklBY3BBOGdCSUFjcEE3QUJJQWNwQTdnQkVJc0JJQWNwQTZnQklSTWdCeWtEb0FFTUFnc2dDMEVJVEFSQUlBZEJnQUpxSUFjb0FvQUdFT3NFSUFkQmtBSnFJQVVRdWdJZ0IwSHdBV29nQnlrRGtBSWdCeWtEbUFJZ0J5a0RnQUlnQnlrRGlBSVFpd0VnQjBIZ0FXcEJBQ0FMYTBFQ2RFR2dtUkpxS0FJQUVMb0NJQWRCMEFGcUlBY3BBL0FCSUFjcEEvZ0JJQWNwQStBQklBY3BBK2dCRU1FTElBY3BBOWdCSVJNZ0J5a0QwQUVNQWdzZ0F5QUxRWDFzYWtFYmFpSUJRUjVNUVFBZ0J5Z0NnQVlpQWlBQmRoc05BQ0FIUWRBQ2FpQUNFT3NFSUFkQjRBSnFJQVVRdWdJZ0IwSEFBbW9nQnlrRDRBSWdCeWtENkFJZ0J5a0QwQUlnQnlrRDJBSVFpd0VnQjBHd0Ftb2dDMEVDZEVIWW1CSnFLQUlBRUxvQ0lBZEJvQUpxSUFjcEE4QUNJQWNwQThnQ0lBY3BBN0FDSUFjcEE3Z0NFSXNCSUFjcEE2Z0NJUk1nQnlrRG9BSU1BUXRCQUNFTUFrQWdDMEVKYnlJQlJRUkFRUUFoQWd3QkN5QUJJQUZCQ1dvZ0MwRi9TaHNoQmdKQUlBaEZCRUJCQUNFQ1FRQWhDQXdCQzBHQWxPdmNBMEVBSUFaclFRSjBRYUNaRW1vb0FnQWlDVzBoRGtFQUlRcEJBQ0VCUVFBaEFnTkFJQWRCZ0FacUlBRkJBblJxSWcwZ0NpQU5LQUlBSWdvZ0NXNGlEV29pRHpZQ0FDQUNRUUZxUWY4UGNTQUNJQTlGSUFFZ0FrWnhJZzhiSVFJZ0MwRjNhaUFMSUE4YklRc2dEaUFLSUFrZ0RXeHJiQ0VLSUFGQkFXb2lBU0FJUncwQUN5QUtSUTBBSUFkQmdBWnFJQWhCQW5ScUlBbzJBZ0FnQ0VFQmFpRUlDeUFMSUFaclFRbHFJUXNMQTBBZ0IwR0FCbW9nQWtFQ2RHb2hCZ0pBQTBBZ0MwRWtUZ1JBSUF0QkpFY05BaUFHS0FJQVFkSHArUVJQRFFJTElBaEIvdzlxSVE1QkFDRUtJQWdoQ1FOQUlBa2hDQUovUVFBZ0NxMGdCMEdBQm1vZ0RrSC9EM0VpQVVFQ2RHb2lDVFVDQUVJZGhud2lFMEtCbE92Y0ExUU5BQm9nRXlBVFFvQ1U2OXdEZ0NJVVFvQ1U2OXdEZm4waEV5QVVwd3NoQ2lBSklCT25JZ2syQWdBZ0NDQUlJQWdnQVNBSkd5QUJJQUpHR3lBQklBaEJmMnBCL3c5eFJ4c2hDU0FCUVg5cUlRNGdBU0FDUncwQUN5QU1RV05xSVF3Z0NrVU5BQXNnQ1NBQ1FYOXFRZjhQY1NJQ1JnUkFJQWRCZ0FacUlBbEIvZzlxUWY4UGNVRUNkR29pQVNBQktBSUFJQWRCZ0FacUlBbEJmMnBCL3c5eElnaEJBblJxS0FJQWNqWUNBQXNnQzBFSmFpRUxJQWRCZ0FacUlBSkJBblJxSUFvMkFnQU1BUXNMQWtBRFFDQUlRUUZxUWY4UGNTRUdJQWRCZ0FacUlBaEJmMnBCL3c5eFFRSjBhaUVPQTBCQkNVRUJJQXRCTFVvYklRb0NRQU5BSUFJaENVRUFJUUVDUUFOQUFrQWdBU0FKYWtIL0QzRWlBaUFJUmcwQUlBZEJnQVpxSUFKQkFuUnFLQUlBSWdJZ0FVRUNkRUh3bUJKcUtBSUFJZzFKRFFBZ0FpQU5TdzBDSUFGQkFXb2lBVUVFUncwQkN3c2dDMEVrUncwQVFnQWhFMEVBSVFGQ0FDRVVBMEFnQ0NBQklBbHFRZjhQY1NJQ1JnUkFJQWhCQVdwQi93OXhJZ2hCQW5RZ0IycEJBRFlDL0FVTElBZEI4QVZxSUJNZ0ZFSUFRb0NBZ0lEbG1yZU93QUFRaXdFZ0IwSGdCV29nQjBHQUJtb2dBa0VDZEdvb0FnQVE2d1FnQjBIUUJXb2dCeWtEOEFVZ0J5a0QrQVVnQnlrRDRBVWdCeWtENkFVUW5BSWdCeWtEMkFVaEZDQUhLUVBRQlNFVElBRkJBV29pQVVFRVJ3MEFDeUFIUWNBRmFpQUZFTG9DSUFkQnNBVnFJQk1nRkNBSEtRUEFCU0FIS1FQSUJSQ0xBU0FIS1FPNEJTRVVRZ0FoRXlBSEtRT3dCU0VWSUF4QjhRQnFJZ1lnQkdzaUFrRUFJQUpCQUVvYklBTWdBaUFEU0NJRUd5SUJRZkFBVEEwQ0RBVUxJQW9nREdvaERDQUpJQWdpQWtZTkFBdEJnSlRyM0FNZ0NuWWhEVUYvSUFwMFFYOXpJUTlCQUNFQklBa2hBZ05BSUFkQmdBWnFJQWxCQW5ScUloQWdBU0FRS0FJQUlnRWdDblpxSWhBMkFnQWdBa0VCYWtIL0QzRWdBaUFRUlNBQ0lBbEdjU0lRR3lFQ0lBdEJkMm9nQ3lBUUd5RUxJQUVnRDNFZ0RXd2hBU0FKUVFGcVFmOFBjU0lKSUFoSERRQUxJQUZGRFFFZ0FpQUdSd1JBSUFkQmdBWnFJQWhCQW5ScUlBRTJBZ0FnQmlFSURBTUxJQTRnRGlnQ0FFRUJjallDQUNBR0lRSU1BUXNMQ3lBSFFZQUZha1FBQUFBQUFBRHdQMEhoQVNBQmF4QzdBeENjQXlBSFFhQUZhaUFIS1FPQUJTQUhLUU9JQlNBVklCUVF3d3NnQnlrRHFBVWhGeUFIS1FPZ0JTRVlJQWRCOEFScVJBQUFBQUFBQVBBL1FmRUFJQUZyRUxzREVKd0RJQWRCa0FWcUlCVWdGQ0FIS1FQd0JDQUhLUVA0QkJEU0NpQUhRZUFFYWlBVklCUWdCeWtEa0FVaUV5QUhLUU9ZQlNJV0VQd0hJQWRCMEFScUlCZ2dGeUFIS1FQZ0JDQUhLUVBvQkJDY0FpQUhLUVBZQkNFVUlBY3BBOUFFSVJVTEFrQWdDVUVFYWtIL0QzRWlBeUFJUmcwQUFrQWdCMEdBQm1vZ0EwRUNkR29vQWdBaUEwSC95Ylh1QVUwRVFDQURSVUVBSUFsQkJXcEIvdzl4SUFoR0d3MEJJQWRCNEFOcUlBVzNSQUFBQUFBQUFOQS9vaENjQXlBSFFkQURhaUFUSUJZZ0J5a0Q0QU1nQnlrRDZBTVFuQUlnQnlrRDJBTWhGaUFIS1FQUUF5RVREQUVMSUFOQmdNcTE3Z0ZIQkVBZ0IwSEFCR29nQmJkRUFBQUFBQUFBNkQraUVKd0RJQWRCc0FScUlCTWdGaUFIS1FQQUJDQUhLUVBJQkJDY0FpQUhLUU80QkNFV0lBY3BBN0FFSVJNTUFRc2dCYmNoR1NBSUlBbEJCV3BCL3c5eFJnUkFJQWRCZ0FScUlCbEVBQUFBQUFBQTREK2lFSndESUFkQjhBTnFJQk1nRmlBSEtRT0FCQ0FIS1FPSUJCQ2NBaUFIS1FQNEF5RVdJQWNwQS9BRElSTU1BUXNnQjBHZ0JHb2dHVVFBQUFBQUFBRG9QNklRbkFNZ0IwR1FCR29nRXlBV0lBY3BBNkFFSUFjcEE2Z0VFSndDSUFjcEE1Z0VJUllnQnlrRGtBUWhFd3NnQVVIdkFFb05BQ0FIUWNBRGFpQVRJQlpDQUVLQWdJQ0FnSURBL3o4UTBnb2dCeWtEd0FNZ0J5a0R5QU5DQUVJQUVLWUVEUUFnQjBHd0Eyb2dFeUFXUWdCQ2dJQ0FnSUNBd1A4L0VKd0NJQWNwQTdnRElSWWdCeWtEc0FNaEV3c2dCMEdnQTJvZ0ZTQVVJQk1nRmhDY0FpQUhRWkFEYWlBSEtRT2dBeUFIS1FPb0F5QVlJQmNRL0FjZ0J5a0RtQU1oRkNBSEtRT1FBeUVWQWtBZ0JrSC8vLy8vQjNGQmZpQVJhMHdOQUNBSFFZQURhaUFWSUJSQ0FFS0FnSUNBZ0lDQS96OFFpd0VnRXlBV1FnQkNBQkNtQkNFRklCVWdGQkRNQnBraEdTQUhLUU9JQXlBVUlCbEVBQUFBQUFBQUFFZG1JZ01iSVJRZ0J5a0RnQU1nRlNBREd5RVZJQVFnQTBFQmN5QUJJQUpIY25FZ0JVRUFSM0ZGUVFBZ0F5QU1haUlNUWU0QWFpQVNUQnNOQUVIWXdCUkJ4QUEyQWdBTElBZEI4QUpxSUJVZ0ZDQU1FTUlMSUFjcEEvZ0NJUk1nQnlrRDhBSUxOd01BSUFBZ0V6Y0RDQ0FIUVlER0FHb2tBQXU5RFFJSWZ3ZCtJd0JCc0FOcklnWWtBQUovSUFFb0FnUWlCeUFCS0FKb1NRUkFJQUVnQjBFQmFqWUNCQ0FITFFBQURBRUxJQUVRZXdzaEJ3SkFBbjhEUUFKQUlBZEJNRWNFUUNBSFFTNUhEUVFnQVNnQ0JDSUhJQUVvQW1oUERRRWdBU0FIUVFGcU5nSUVJQWN0QUFBTUF3c2dBU2dDQkNJSElBRW9BbWhKQkVCQkFTRUpJQUVnQjBFQmFqWUNCQ0FITFFBQUlRY0ZJQUVRZXlFSFFRRWhDUXNNQVFzTElBRVFld3NoQjBFQklRb2dCMEV3UncwQUEwQWdFa0ovZkNFU0FuOGdBU2dDQkNJSElBRW9BbWhKQkVBZ0FTQUhRUUZxTmdJRUlBY3RBQUFNQVFzZ0FSQjdDeUlIUVRCR0RRQUxRUUVoQ1F0Q2dJQ0FnSUNBd1A4L0lRNERRQUpBSUFkQklISWhDd0pBQWtBZ0IwRlFhaUlNUVFwSkRRQWdCMEV1UjBFQUlBdEJuMzlxUVFWTEd3MENJQWRCTGtjTkFDQUtEUUpCQVNFS0lCQWhFZ3dCQ3lBTFFhbC9haUFNSUFkQk9Vb2JJUWNDUUNBUVFnZFhCRUFnQnlBSVFRUjBhaUVJREFFTElCQkNIRmNFUUNBR1FTQnFJQk1nRGtJQVFvQ0FnSUNBZ01EOVB4Q0xBU0FHUVRCcUlBY1F1Z0lnQmtFUWFpQUdLUU1nSWhNZ0Jpa0RLQ0lPSUFZcEF6QWdCaWtET0JDTEFTQUdJQThnRVNBR0tRTVFJQVlwQXhnUW5BSWdCaWtEQ0NFUklBWXBBd0FoRHd3QkN5QU5JQWRGY2cwQUlBWkIwQUJxSUJNZ0RrSUFRb0NBZ0lDQWdJRC9QeENMQVNBR1FVQnJJQThnRVNBR0tRTlFJQVlwQTFnUW5BSWdCaWtEU0NFUlFRRWhEU0FHS1FOQUlROExJQkJDQVh3aEVFRUJJUWtMSUFFb0FnUWlCeUFCS0FKb1NRUkFJQUVnQjBFQmFqWUNCQ0FITFFBQUlRY0ZJQUVRZXlFSEN3d0JDd3NDZmlBSlJRUkFJQUVvQW1naUFnUkFJQUVnQVNnQ0JFRi9hallDQkFzQ1FDQUZCRUFnQWtVTkFTQUJJQUVvQWdSQmYybzJBZ1FnQ2tVZ0FrVnlEUUVnQVNBQktBSUVRWDlxTmdJRURBRUxJQUZDQUJEYkFnc2dCa0hnQUdvZ0JMZEVBQUFBQUFBQUFBQ2lFSndESUFZcEEyQWhEeUFHS1FOb0RBRUxJQkJDQjFjRVFDQVFJUTREUUNBSVFRUjBJUWdnRGtJSFV5RUpJQTVDQVh3aERpQUpEUUFMQ3dKQUlBZEJJSEpCOEFCR0JFQWdBU0FGRUw4TElnNUNnSUNBZ0lDQWdJQ0FmMUlOQVNBRkJFQkNBQ0VPSUFFb0FtaEZEUUlnQVNBQktBSUVRWDlxTmdJRURBSUxRZ0FoRHlBQlFnQVEyd0pDQUF3Q0MwSUFJUTRnQVNnQ2FFVU5BQ0FCSUFFb0FnUkJmMm8yQWdRTElBaEZCRUFnQmtId0FHb2dCTGRFQUFBQUFBQUFBQUNpRUp3RElBWXBBM0FoRHlBR0tRTjREQUVMSUJJZ0VDQUtHMElDaGlBT2ZFSmdmQ0lRUVFBZ0EydXNWUVJBSUFaQm9BRnFJQVFRdWdJZ0JrR1FBV29nQmlrRG9BRWdCaWtEcUFGQ2YwTC8vLy8vLy8rLy8vOEFFSXNCSUFaQmdBRnFJQVlwQTVBQklBWXBBNWdCUW45Qy8vLy8vLy8vdi8vL0FCQ0xBVUhZd0JSQnhBQTJBZ0FnQmlrRGdBRWhEeUFHS1FPSUFRd0JDeUFRSUFOQm5uNXFyRmtFUUNBSVFYOUtCRUFEUUNBR1FhQURhaUFQSUJGQ0FFS0FnSUNBZ0lEQS83OS9FSndDSUE4Z0VSQ3lFeUVCSUFaQmtBTnFJQThnRVNBUElBWXBBNkFESUFGQkFFZ2lCUnNnRVNBR0tRT29BeUFGR3hDY0FpQVFRbjk4SVJBZ0Jpa0RtQU1oRVNBR0tRT1FBeUVQSUFoQkFYUWdBVUYvU25JaUNFRi9TZzBBQ3dzQ2ZpQVFJQU9zZlVJZ2ZDSU9weUlCUVFBZ0FVRUFTaHNnQWlBT0lBS3NVeHNpQVVIeEFFNEVRQ0FHUVlBRGFpQUVFTG9DSUFZcEE0Z0RJUTRnQmlrRGdBTWhFMElBREFFTElBWkIwQUpxSUFRUXVnSWdCa0hnQW1wRUFBQUFBQUFBOEQ5QmtBRWdBV3NRdXdNUW5BTWdCa0h3QW1vZ0Jpa0Q0QUlnQmlrRDZBSWdCaWtEMEFJaUV5QUdLUVBZQWlJT0VNTUxJQVlwQS9nQ0lSUWdCaWtEOEFJTElSSWdCa0hBQW1vZ0NDQUlRUUZ4UlNBUElCRkNBRUlBRUtZRVFRQkhJQUZCSUVoeGNTSUJhaERyQkNBR1FiQUNhaUFUSUE0Z0Jpa0R3QUlnQmlrRHlBSVFpd0VnQmtHZ0FtcENBQ0FQSUFFYlFnQWdFU0FCR3lBVElBNFFpd0VnQmtHUUFtb2dCaWtEc0FJZ0Jpa0R1QUlnRWlBVUVKd0NJQVpCZ0FKcUlBWXBBNkFDSUFZcEE2Z0NJQVlwQTVBQ0lBWXBBNWdDRUp3Q0lBWkI4QUZxSUFZcEE0QUNJQVlwQTRnQ0lCSWdGQkQ4QnlBR0tRUHdBU0lPSUFZcEEvZ0JJaEpDQUVJQUVLWUVSUVJBUWRqQUZFSEVBRFlDQUFzZ0JrSGdBV29nRGlBU0lCQ25FTUlMSUFZcEErQUJJUThnQmlrRDZBRU1BUXNnQmtIUUFXb2dCQkM2QWlBR1FjQUJhaUFHS1FQUUFTQUdLUVBZQVVJQVFvQ0FnSUNBZ01BQUVJc0JJQVpCc0FGcUlBWXBBOEFCSUFZcEE4Z0JRZ0JDZ0lDQWdJQ0F3QUFRaXdGQjJNQVVRY1FBTmdJQUlBWXBBN0FCSVE4Z0Jpa0R1QUVMSVJBZ0FDQVBOd01BSUFBZ0VEY0RDQ0FHUWJBRGFpUUFDOWdCQWdGL0FYNUJmeUVDQWtBZ0FFSUFVaUFCUXYvLy8vLy8vLy8vL3dDRElnTkNnSUNBZ0lDQXdQLy9BRllnQTBLQWdJQ0FnSURBLy84QVVSc05BQ0FBSUFOQ2dJQ0FnSUNBZ1A4L2hJUlFCRUJCQUE4TElBRkNnSUNBZ0lDQWdQOC9nMElBV1FSQUlBQkNBRlFnQVVLQWdJQ0FnSUNBL3o5VElBRkNnSUNBZ0lDQWdQOC9VUnNOQVNBQUlBRkNnSUNBZ0lDQWdQOC9oWVJDQUZJUEN5QUFRZ0JXSUFGQ2dJQ0FnSUNBZ1A4L1ZTQUJRb0NBZ0lDQWdJRC9QMUViRFFBZ0FDQUJRb0NBZ0lDQWdJRC9QNFdFUWdCU0lRSUxJQUlMeXdFQ0JIOENmaU1BUVJCcklnTWtBQ0FCdkNJRVFZQ0FnSUI0Y1NFRkFuNGdCRUgvLy8vL0IzRWlBa0dBZ0lCOGFrSC8vLy8zQjAwRVFDQUNyVUlaaGtLQWdJQ0FnSUNBd0Q5OERBRUxJQUpCZ0lDQS9BZFBCRUFnQksxQ0dZWkNnSUNBZ0lDQXdQLy9BSVFNQVFzZ0FrVUVRRUlBREFFTElBTWdBcTFDQUNBQ1p5SUNRZEVBYWhEM0FTQURLUU1BSVFZZ0F5a0RDRUtBZ0lDQWdJREFBSVZCaWY4QUlBSnJyVUl3aG9RTElRY2dBQ0FHTndNQUlBQWdCeUFGclVJZ2hvUTNBd2dnQTBFUWFpUUFDMEFBSUFCQkFEWUNGQ0FBSUFFMkFoZ2dBRUVBTmdJTUlBQkNncUNBZ09BQU53SUVJQUFnQVVVMkFoQWdBRUVnYWtFQVFTZ1EzUUVhSUFCQkhHb1E3d29MQ1FBZ0FCQ0JDQkFxQzFRQkFuOGpBRUVRYXlJRUpBQWdBZ1JBQTBBZ0F5QUNJQUFRR3lBQ1FSQnFJQUVRcndNaUJSc2hBeUFDUVFSQkFDQUZHMm9vQWdBaUFnMEFDd3NnQkVFSWFpQURFREVvQWdBaEFDQUVRUkJxSkFBZ0FBdkVBUUVHZnlNQVFTQnJJZ0lrQUFKQUlBSkJHR29nQUJES0JpSUVMUUFBUlEwQUlBQWdBQ2dDQUVGMGFpZ0NBR29vQWdRYUlBSkJFR29nQUNBQUtBSUFRWFJxS0FJQWFoQmNJQUpCRUdvUXlBc2hBeUFDUVJCcUVGa2dBa0VJYWlBQUVPNEZJUVVnQUNBQUtBSUFRWFJxS0FJQWFpSUdFTm9JSVFjZ0FpQURJQVVvQWdBZ0JpQUhJQUVnQXlnQ0FDZ0NFQkVLQURZQ0VDQUNRUkJxRU5rSVJRMEFJQUFnQUNnQ0FFRjBhaWdDQUdwQkJSQ0FCQXNnQkJESkJpQUNRU0JxSkFBZ0FBdXlBUUVHZnlNQVFTQnJJZ0lrQUFKQUlBSkJHR29nQUJES0JpSUVMUUFBUlEwQUlBSkJFR29nQUNBQUtBSUFRWFJxS0FJQWFoQmNJQUpCRUdvUXlBc2hBeUFDUVJCcUVGa2dBa0VJYWlBQUVPNEZJUVVnQUNBQUtBSUFRWFJxS0FJQWFpSUdFTm9JSVFjZ0FpQURJQVVvQWdBZ0JpQUhJQUVnQXlnQ0FDZ0NEQkVLQURZQ0VDQUNRUkJxRU5rSVJRMEFJQUFnQUNnQ0FFRjBhaWdDQUdwQkJSQ0FCQXNnQkJESkJpQUNRU0JxSkFBZ0FBc1RBQ0FBSUFBb0FnQkJkR29vQWdCcUVNa0xDeE1BSUFBZ0FDZ0NBRUYwYWlnQ0FHb1EvZ2NMTndFQmZ5QUFLQUlZSWdJZ0FDZ0NIRVlFUUNBQUlBRWdBQ2dDQUNnQ05CRURBQThMSUFBZ0FrRUVhallDR0NBQ0lBRTJBZ0FnQVF1ckFRRUVmeU1BUVNCcklnSWtBQ0FDUVJocUlBQVF2Uk10QUFBRVFDQUNRUUEyQWhRZ0FrRVFhaUFBSUFBb0FnQkJkR29vQWdCcUVGd2dBa0VRYWtIUXlSUVFtd01oQXlBQ1FRaHFJQUFRN2dVaEJDQUNFTElGSVFVZ0F5QUVLQUlBSUFVb0FnQWdBQ0FBS0FJQVFYUnFLQUlBYWlBQ1FSUnFJQUVnQXlnQ0FDZ0NMQkVMQUJvZ0FrRVFhaEJaSUFBZ0FDZ0NBRUYwYWlnQ0FHb2dBaWdDRkJDQUJBc2dBa0VnYWlRQUM2QUNBUVIvSXdCQklHc2lBeVFBSUFCQkFEb0FBQ0FCSUFFb0FnQkJkR29vQWdCcUVNc0dJUVFnQVNBQktBSUFRWFJxS0FJQWFpRUNBa0FnQkFSQUlBSW9Ba2dFUUNBQklBRW9BZ0JCZEdvb0FnQnFLQUpJRU5RTEN3SkFJQUVnQVNnQ0FFRjBhaWdDQUdvb0FnUkJnQ0J4UlEwQUlBTkJHR29nQVNBQktBSUFRWFJxS0FJQWFoQmNJQU5CR0dvUStnRWhCU0FEUVJocUVGa2dBMEVRYWlBQkVPNEZJUUlnQTBFSWFoQ3lCU0VFQTBBQ1FDQUNJQVFROEFGRkRRQWdCVUdBd0FBZ0FoQ2ZBUkRMQWtVTkFDQUNFTFVCR2d3QkN3c2dBaUFFRUw0QlJRMEFJQUVnQVNnQ0FFRjBhaWdDQUdwQkJoQ0FCQXNnQUNBQklBRW9BZ0JCZEdvb0FnQnFFTXNHT2dBQURBRUxJQUpCQkJDQUJBc2dBMEVnYWlRQUlBQUxFd0FnQUNBQUtBSUFRWFJxS0FJQWFoRFZDd3NUQUNBQUlBQW9BZ0JCZEdvb0FnQnFFUDhIQzY4QkFRUi9Jd0JCRUdzaUJTUUFBMEFDUUNBRUlBSk9EUUFnQUNnQ0dDSURJQUFvQWh3aUJrOEVRQ0FBSUFFc0FBQVExZ01nQUNnQ0FDZ0NOQkVEQUVGL1JnMEJJQVJCQVdvaEJDQUJRUUZxSVFFRklBVWdCaUFEYXpZQ0RDQUZJQUlnQkdzMkFnZ2dCVUVNYWlBRlFRaHFFUDRCSVFNZ0FDZ0NHQ0FCSUFNb0FnQWlBeERvQVNBQUlBTWdBQ2dDR0dvMkFoZ2dBeUFFYWlFRUlBRWdBMm9oQVFzTUFRc0xJQVZCRUdva0FDQUVDM29CQkg4akFFRVFheUlFSkFCQnFBRVFSaUlERU5NTElRSWdBeUFCSUFNb0FnQW9BZ1FSQVFBZ0FpQURLQUlBS0FLOEFSRUFBQ0VGSUFBb0FnQkJBVTRFUUVFQUlRSURRQ0FFSUFBZ0FoQ2dCallDRENBRklBUkJER29nQVJEVkZDQUNRUUZxSWdJZ0FDZ0NBRWdOQUFzTElBUkJFR29rQUNBREN5OEFJQUFnQUNnQ0FDZ0NKQkVBQUVGL1JnUkFRWDhQQ3lBQUlBQW9BZ3dpQUVFQmFqWUNEQ0FBTEFBQUVOWURDOEFCQVFSL0l3QkJFR3NpQkNRQUEwQUNRQ0FGSUFKT0RRQUNRQ0FBS0FJTUlnTWdBQ2dDRUNJR1NRUkFJQVJCLy8vLy93YzJBZ3dnQkNBR0lBTnJOZ0lJSUFRZ0FpQUZhellDQkNBRVFReHFJQVJCQ0dvZ0JFRUVhaEQrQVJEK0FTRURJQUVnQUNnQ0RDQURLQUlBSWdNUTZBRWdBQ0FBS0FJTUlBTnFOZ0lNREFFTElBQWdBQ2dDQUNnQ0tCRUFBQ0lEUVg5R0RRRWdBU0FERU5JSU9nQUFRUUVoQXdzZ0FTQURhaUVCSUFNZ0JXb2hCUXdCQ3dzZ0JFRVFhaVFBSUFVTENRQWdBRUovRU5NSUN3a0FJQUJDZnhEVENBc29BQ0FBUWJpVEVqWUNBQ0FBUVFScUVPOEtJQUJDQURjQ0dDQUFRZ0EzQWhBZ0FFSUFOd0lJQ3drQUlBQVFnQWdRS2dzSkFDQUFFT3dFRUNvTE13RUJmeUFDQkVBZ0FDRURBMEFnQXlBQktBSUFOZ0lBSUFOQkJHb2hBeUFCUVFScUlRRWdBa0YvYWlJQ0RRQUxDeUFBQzJ3QkFuOGpBRUVRYXlJRUpBQWdBQ0FCRUs4RklRRURRQ0FCQkVBZ0JDQUFOZ0lNSUFSQkRHb2dBVUVCZGlJRkVNY0ZJQU1nQkNnQ0RDQUNFTmdFQkVBZ0JDQUVLQUlNUVFScUlnQTJBZ3dnQVNBRlFYOXphaUVCQlNBRklRRUxEQUVMQ3lBRVFSQnFKQUFnQUFzbUFRRi9Jd0JCRUdzaUF5UUFJQUFnQVNBQ0lBTkJDR29ReWhNaEFDQURRUkJxSkFBZ0FBdlZEd01JZndKK0NIeEVBQUFBQUFBQThEOGhEQUpBQWtBQ1FDQUJ2U0lLUWlDSXB5SUVRZi8vLy84SGNTSUNJQXFuSWdaeVJRMEFJQUM5SWd0Q0lJaW5JUWNnQzZjaUNVVkJBQ0FIUVlDQXdQOERSaHNOQUNBSFFmLy8vLzhIY1NJRFFZQ0F3UDhIU3lBRFFZQ0F3UDhIUmlBSlFRQkhjWElnQWtHQWdNRC9CMHR5UlVFQUlBWkZJQUpCZ0lEQS93ZEhjaHRGQkVBZ0FDQUJvQThMQWtBQ2Z3SkFBbjlCQUNBSFFYOUtEUUFhUVFJZ0FrSC8vLytaQkVzTkFCcEJBQ0FDUVlDQXdQOERTUTBBR2lBQ1FSUjJJUWdnQWtHQWdJQ0tCRWtOQVVFQUlBWkJzd2dnQ0dzaUJYWWlDQ0FGZENBR1J3MEFHa0VDSUFoQkFYRnJDeUlGSUFaRkRRRWFEQUlMSUFZTkFVRUFJQUpCa3dnZ0NHc2lCWFlpQmlBRmRDQUNSdzBBR2tFQ0lBWkJBWEZyQ3lFRklBSkJnSURBL3dkR0JFQWdBMEdBZ01DQWZHb2dDWEpGRFFJZ0EwR0FnTUQvQTA4RVFDQUJSQUFBQUFBQUFBQUFJQVJCZjBvYkR3dEVBQUFBQUFBQUFBQWdBWm9nQkVGL1Noc1BDeUFDUVlDQXdQOERSZ1JBSUFSQmYwb0VRQ0FBRHd0RUFBQUFBQUFBOEQ4Z0FLTVBDeUFFUVlDQWdJQUVSZ1JBSUFBZ0FLSVBDeUFFUVlDQWdQOERSeUFIUVFCSWNnMEFJQUNmRHdzZ0FKa2hEQ0FEUVFBZ0EwR0FnSUNBQkhKQmdJREEvd2RIR3lBSmNrVUVRRVFBQUFBQUFBRHdQeUFNb3lBTUlBUkJBRWdiSVF3Z0IwRi9TZzBCSUFVZ0EwR0FnTUNBZkdweVJRUkFJQXdnREtFaUFDQUFvdzhMSUF5YUlBd2dCVUVCUmhzUEMwUUFBQUFBQUFEd1B5RU5JQWRCZjBvZ0JVRUJTM0pGQkVBZ0JVRUJhd1JBSUFBZ0FLRWlBQ0FBb3c4TFJBQUFBQUFBQVBDL0lRMExBbndnQWtHQmdJQ1BCRThFUUNBQ1FZR0F3SjhFVHdSQUlBTkIvLysvL3dOTkJFQkVBQUFBQUFBQThIOUVBQUFBQUFBQUFBQWdCRUVBU0JzUEMwUUFBQUFBQUFEd2YwUUFBQUFBQUFBQUFDQUVRUUJLR3c4TElBTkIvdisvL3dOTkJFQWdEVVNjZFFDSVBPUTNmcUpFbkhVQWlEemtOMzZpSUExRVdmUDR3aDl1cFFHaVJGbnorTUlmYnFVQm9pQUVRUUJJR3c4TElBTkJnWURBL3dOUEJFQWdEVVNjZFFDSVBPUTNmcUpFbkhVQWlEemtOMzZpSUExRVdmUDR3aDl1cFFHaVJGbnorTUlmYnFVQm9pQUVRUUJLR3c4TElBeEVBQUFBQUFBQThMK2dJZ0JFQUFBQVlFY1Y5eitpSWd3Z0FFUkUzMTM0QzY1VVBxSWdBQ0FBb2tRQUFBQUFBQURnUHlBQUlBQkVBQUFBQUFBQTBMK2lSRlZWVlZWVlZkVS9vS0tob2tUK2dpdGxSeFgzdjZLZ0lnK2d2VUtBZ0lDQWNJTy9JZ0FnREtFTUFRc2dERVFBQUFBQUFBQkFRNklpQUNBTUlBTkJnSURBQUVraUFoc2hEQ0FBdlVJZ2lLY2dBeUFDR3lJRlFmLy9QM0VpQkVHQWdNRC9BM0loQXlBRlFSUjFRY3gzUVlGNElBSWJhaUVGUVFBaEFnSkFJQVJCajdFT1NRMEFJQVJCK3V3dVNRUkFRUUVoQWd3QkN5QURRWUNBUUdvaEF5QUZRUUZxSVFVTElBSkJBM1FpQkVHZ2tCSnFLd01BSWhFZ0RMMUMvLy8vL3crRElBT3RRaUNHaEw4aUR5QUVRWUNRRW1vckF3QWlEcUVpRUVRQUFBQUFBQUR3UHlBT0lBK2dveUlTb2lJTXZVS0FnSUNBY0lPL0lnQWdBQ0FBb2lJVFJBQUFBQUFBQUFoQW9DQU1JQUNnSUJJZ0VDQUFJQU5CQVhWQmdJQ0FnQUp5SUFKQkVuUnFRWUNBSUdxdFFpQ0d2eUlRb3FFZ0FDQVBJQkFnRHFHaG9xR2lJZytpSUF3Z0RLSWlBQ0FBb2lBQUlBQWdBQ0FBSUFCRTcwNUZTaWgreWoraVJHWGJ5Wk5LaHMwL29LSkVBVUVkcVdCMDBUK2dva1JOSm85UlZWWFZQNkNpUlArcmI5dTJiZHMvb0tKRUF6TXpNek16NHorZ29xQWlEcUM5UW9DQWdJQndnNzhpQUtJaUVDQVBJQUNpSUF3Z0RpQUFSQUFBQUFBQUFBakFvQ0FUb2FHaW9DSU1vTDFDZ0lDQWdIQ0R2eUlBUkFBQUFPQUp4KzQvb2lJT0lBUkJrSkFTYWlzREFDQU1JQUFnRUtHaFJQMERPdHdKeCs0L29pQUFSUFVCV3hUZ0x6NitvcUNnSWcrZ29DQUZ0eUlNb0wxQ2dJQ0FnSENEdnlJQUlBeWhJQkdoSUE2aEN5RU9JQUFnQ2tLQWdJQ0FjSU8vSWhHaUlnd2dEeUFPb1NBQm9pQUJJQkdoSUFDaW9DSUFvQ0lCdlNJS3B5RUNBa0FnQ2tJZ2lLY2lBMEdBZ01DRUJFNEVRQ0FEUVlDQXdQdDdhaUFDY2cwRElBQkUvb0lyWlVjVmx6eWdJQUVnREtGa1FRRnpEUUVNQXdzZ0EwR0ErUC8vQjNGQmdKakRoQVJKRFFBZ0EwR0E2THo3QTJvZ0FuSU5BeUFBSUFFZ0RLRmxRUUZ6RFFBTUF3dEJBQ0VDSUEwQ2ZDQURRZi8vLy84SGNTSUVRWUdBZ1A4RFR3UitRUUJCZ0lEQUFDQUVRUlIyUVlKNGFuWWdBMm9pQkVILy96OXhRWUNBd0FCeVFaTUlJQVJCRkhaQi93OXhJZ1ZyZGlJQ2F5QUNJQU5CQUVnYklRSWdBQ0FNUVlDQVFDQUZRWUY0YW5VZ0JIR3RRaUNHdjZFaURLQzlCU0FLQzBLQWdJQ0FjSU8vSWdGRUFBQUFBRU11NWoraUlnMGdBQ0FCSUF5aG9VVHZPZnIrUWk3bVA2SWdBVVE1YktnTVlWd2d2cUtnSWd5Z0lnQWdBQ0FBSUFBZ0FLSWlBU0FCSUFFZ0FTQUJSTkNrdm5KcE4yWStva1R4YTlMRlFiMjd2cUNpUkN6ZUphOXFWaEUvb0tKRWs3MitGbXpCWnIrZ29rUStWVlZWVlZYRlA2Q2lvU0lCb2lBQlJBQUFBQUFBQUFEQW9LTWdEQ0FBSUEyaG9TSUJJQUFnQWFLZ29hRkVBQUFBQUFBQThEK2dJZ0M5SWdwQ0lJaW5JQUpCRkhScUlnTkIvLzgvVEFSQUlBQWdBaEM3QXd3QkN5QUtRdi8vLy84UGd5QURyVUlnaG9TL0M2SWhEQXNnREE4TElBMUVuSFVBaUR6a04zNmlSSngxQUlnODVEZCtvZzhMSUExRVdmUDR3aDl1cFFHaVJGbnorTUlmYnFVQm9ndTNBd0lGZndKK0FrQWdBYjBpQ0VMLy8vLy8vLy8vLy84QWcwS0FnSUNBZ0lDQStQOEFXQVJBSUFDOUlnZEMvLy8vLy8vLy8vLy9BSU5DZ1lDQWdJQ0FnUGovQUZRTkFRc2dBQ0FCb0E4TElBaW5JZ1VnQ0VJZ2lLY2lBa0dBZ01DQWZHcHlSUVJBSUFBUWdnZ1BDeUFJUWo2SXAwRUNjU0lHSUFkQ1A0aW5jaUVEQWtBQ1FBSkFJQWRDSUlpblFmLy8vLzhIY1NJRUlBZW5ja1VFUUFKQUlBTkJBbXNPQWdJQUF3dEVHQzFFVlBzaENjQVBDeUFGSUFKQi8vLy8vd2R4SWdKeVJRMENBa0FnQWtHQWdNRC9CMFlFUUNBRVFZQ0F3UDhIUncwQklBTkJBM1JCc0k4U2Fpc0RBQThMSUFSQmdJREEvd2RIUVFBZ0FrR0FnSUFnYWlBRVR4dEZEUU1DZkNBR0JFQkVBQUFBQUFBQUFBQWdCRUdBZ0lBZ2FpQUNTUTBCR2dzZ0FDQUJvNWtRZ2dnTElRRWdBMEVDVFFSQUlBRWhBQUpBQWtBZ0EwRUJhdzRDQUFFRkN5QUJtZzhMUkJndFJGVDdJUWxBSUFGRUIxd1VNeWFtb2J5Z29ROExJQUZFQjF3VU15YW1vYnlnUkJndFJGVDdJUW5Bb0E4TElBTkJBM1JCMEk4U2Fpc0RBQThMUkJndFJGVDdJUWxBSVFBTElBQVBDMFFZTFVSVSt5SDV2MFFZTFVSVSt5SDVQeUFIUWdCVEd3dklCQU1CZndGK0Ezd0NRQUpBSUFDOUlnSkNJSWluUWYvLy8vOEhjU0lCUVlDQXdQOERUd1JBSUFLbklBRkJnSURBZ0h4cWNnMEJJQUJFR0MxRVZQc2grVCtpUkFBQUFBQUFBSEE0b0E4TElBRkIvLy8vL2dOTkJFQWdBVUdBZ0VCcVFZQ0FnUElEU1EwQ0lBQWdBS0lpQXlBRElBTWdBeUFESUFORUNmZjlEZUU5QWoraVJJaXlBWFhnNzBrL29LSkVPNDlvdFNpQ3BMK2dva1JWUklnT1ZjSEpQNkNpUkgxdjZ3TVMxdFMvb0tKRVZWVlZWVlZWeFQrZ29pQURJQU1nQXlBRFJJS1NMckhGdUxNL29rUlpBWTBiYkFibXY2Q2lSTWlLV1p6bEtnQkFvS0pFU3kyS0hDYzZBOENnb2tRQUFBQUFBQUR3UDZDaklBQ2lJQUNnRHd0RUFBQUFBQUFBOEQ4Z0FKbWhSQUFBQUFBQUFPQS9vaUlBSUFBZ0FDQUFJQUFnQUVRSjkvME40VDBDUDZKRWlMSUJkZUR2U1QrZ29rUTdqMmkxS0lLa3Y2Q2lSRlZFaUE1Vndjay9vS0pFZlcvckF4TFcxTCtnb2tSVlZWVlZWVlhGUDZDaUlBQWdBQ0FBSUFCRWdwSXVzY1c0c3oraVJGa0JqUnRzQnVhL29LSkV5SXBabk9VcUFFQ2dva1JMTFlvY0p6b0R3S0NpUkFBQUFBQUFBUEEvb0tNaEJTQUFueUVEQW53Z0FVR3o1cnovQTA4RVFFUVlMVVJVK3lINVB5QURJQU1nQmFLZ0lnQWdBS0JFQjF3VU15YW1rYnlnb1F3QkMwUVlMVVJVK3lIcFB5QUR2VUtBZ0lDQWNJTy9JZ1FnQktDaElBTWdBNkFnQmFKRUIxd1VNeWFta1R3Z0FDQUVJQVNpb1NBRElBU2dveUlBSUFDZ29hR2hSQmd0UkZUN0llay9vQXNpQUpvZ0FDQUNRZ0JUR3c4TFJBQUFBQUFBQUFBQUlBQWdBS0dqSVFBTElBQUx3Z1VEQVg4QmZnRjhJQUM5SWdKQ0lJaW5RZi8vLy84SGNTSUJRWUNBd1A4RFR3UkFJQUtuSUFGQmdJREFnSHhxY2tVRVFFUVlMVVJVK3lFSlFFUUFBQUFBQUFBQUFDQUNRZ0JUR3c4TFJBQUFBQUFBQUFBQUlBQWdBS0dqRHdzQ2ZDQUJRZi8vLy80RFRRUkFSQmd0UkZUN0lmay9JQUZCZ1lDQTR3TkpEUUVhUkFkY0ZETW1wcEU4SUFBZ0FLSWlBeUFESUFNZ0F5QURJQU5FQ2ZmOURlRTlBaitpUklpeUFYWGc3MGsvb0tKRU80OW90U2lDcEwrZ29rUlZSSWdPVmNISlA2Q2lSSDF2NndNUzF0Uy9vS0pFVlZWVlZWVlZ4VCtnb2lBRElBTWdBeUFEUklLU0xySEZ1TE0vb2tSWkFZMGJiQWJtdjZDaVJNaUtXWnpsS2dCQW9LSkVTeTJLSENjNkE4Q2dva1FBQUFBQUFBRHdQNkNqSUFDaW9TQUFvVVFZTFVSVSt5SDVQNkFQQ3lBQ1FuOVhCRUJFR0MxRVZQc2grVDhnQUVRQUFBQUFBQUR3UDZCRUFBQUFBQUFBNEQraUlnQ2ZJZ01nQXlBQUlBQWdBQ0FBSUFBZ0FFUUo5LzBONFQwQ1A2SkVpTElCZGVEdlNUK2dva1E3ajJpMUtJS2t2NkNpUkZWRWlBNVZ3Y2svb0tKRWZXL3JBeExXMUwrZ29rUlZWVlZWVlZYRlA2Q2lJQUFnQUNBQUlBQkVncEl1c2NXNHN6K2lSRmtCalJ0c0J1YS9vS0pFeUlwWm5PVXFBRUNnb2tSTExZb2NKem9Ed0tDaVJBQUFBQUFBQVBBL29LT2lSQWRjRkRNbXBwRzhvS0NoSWdBZ0FLQVBDMFFBQUFBQUFBRHdQeUFBb1VRQUFBQUFBQURnUDZJaUFDQUFJQUFnQUNBQUlBQkVDZmY5RGVFOUFqK2lSSWl5QVhYZzcway9vS0pFTzQ5b3RTaUNwTCtnb2tSVlJJZ09WY0hKUDZDaVJIMXY2d01TMXRTL29LSkVWVlZWVlZWVnhUK2dvaUFBSUFBZ0FDQUFSSUtTTHJIRnVMTS9va1JaQVkwYmJBYm12NkNpUk1pS1daemxLZ0JBb0tKRVN5MktIQ2M2QThDZ29rUUFBQUFBQUFEd1A2Q2pJQUNmSWdPaUlBQWdBNzFDZ0lDQWdIQ0R2eUlBSUFDaW9TQURJQUNnbzZBZ0FLQWlBQ0FBb0FzTGhBRUJBbjhqQUVFUWF5SUJKQUFDUUNBQXZVSWdpS2RCLy8vLy93ZHhJZ0pCKzhPay93Tk5CRUFnQWtHQWdJRHlBMGtOQVNBQVJBQUFBQUFBQUFBQVFRQVEzQXNoQUF3QkN5QUNRWUNBd1A4SFR3UkFJQUFnQUtFaEFBd0JDeUFBSUFFUWd3Z2hBaUFCS3dNQUlBRXJBd2dnQWtFQmNSRGNDeUVBQ3lBQlFSQnFKQUFnQUF2VUFRRUNmeU1BUVJCcklnRWtBQUpBSUFDOVFpQ0lwMEgvLy8vL0IzRWlBa0g3dzZUL0EwMEVRQ0FDUVlDQXdQSURTUTBCSUFCRUFBQUFBQUFBQUFCQkFCRFNCU0VBREFFTElBSkJnSURBL3dkUEJFQWdBQ0FBb1NFQURBRUxJQUFnQVJDRENFRURjU0lDUVFKTkJFQUNRQUpBQWtBZ0FrRUJhdzRDQVFJQUN5QUJLd01BSUFFckF3aEJBUkRTQlNFQURBTUxJQUVyQXdBZ0FTc0RDQkRUQlNFQURBSUxJQUVyQXdBZ0FTc0RDRUVCRU5JRm1pRUFEQUVMSUFFckF3QWdBU3NEQ0JEVEJab2hBQXNnQVVFUWFpUUFJQUFMMEFFQkFuOGpBRUVRYXlJQkpBQUNmQ0FBdlVJZ2lLZEIvLy8vL3dkeElnSkIrOE9rL3dOTkJFQkVBQUFBQUFBQThEOGdBa0dld1pyeUEwa05BUm9nQUVRQUFBQUFBQUFBQUJEVEJRd0JDeUFBSUFDaElBSkJnSURBL3dkUERRQWFJQUFnQVJDRENFRURjU0lDUVFKTkJFQUNRQUpBQWtBZ0FrRUJhdzRDQVFJQUN5QUJLd01BSUFFckF3Z1Ewd1VNQXdzZ0FTc0RBQ0FCS3dNSVFRRVEwZ1dhREFJTElBRXJBd0FnQVNzRENCRFRCWm9NQVFzZ0FTc0RBQ0FCS3dNSVFRRVEwZ1VMSVFBZ0FVRVFhaVFBSUFBTG93NENEMzhDZkNNQVFiQUVheUlHSkFBZ0FpQUNRWDFxUVJodElnUkJBQ0FFUVFCS0d5SU5RV2hzYWlFTFFkVDRFU2dDQUNJS0lBTkJmMm9pQjJwQkFFNEVRQ0FESUFwcUlRUWdEU0FIYXlFQ0EwQWdCa0hBQW1vZ0JVRURkR29nQWtFQVNBUjhSQUFBQUFBQUFBQUFCU0FDUVFKMFFlRDRFV29vQWdDM0N6a0RBQ0FDUVFGcUlRSWdCVUVCYWlJRklBUkhEUUFMQ3lBTFFXaHFJUWhCQUNFRUlBTkJBVWdoQlFOQUFrQWdCUVJBUkFBQUFBQUFBQUFBSVJNTUFRc2dCQ0FIYWlFSlFRQWhBa1FBQUFBQUFBQUFBQ0VUQTBBZ0V5QUFJQUpCQTNScUt3TUFJQVpCd0FKcUlBa2dBbXRCQTNScUt3TUFvcUFoRXlBQ1FRRnFJZ0lnQTBjTkFBc0xJQVlnQkVFRGRHb2dFemtEQUNBRUlBcElJUUlnQkVFQmFpRUVJQUlOQUF0QkZ5QUlheUVRUVJnZ0NHc2hEaUFLSVFRQ1FBTkFJQVlnQkVFRGRHb3JBd0FoRTBFQUlRSWdCQ0VGSUFSQkFVZ2lERVVFUUFOQUlBWkI0QU5xSUFKQkFuUnFBbjhnRXdKL0lCTkVBQUFBQUFBQWNENmlJaE9aUkFBQUFBQUFBT0JCWXdSQUlCT3FEQUVMUVlDQWdJQjRDN2NpRTBRQUFBQUFBQUJ3d2FLZ0loU1pSQUFBQUFBQUFPQkJZd1JBSUJTcURBRUxRWUNBZ0lCNEN6WUNBQ0FHSUFWQmYyb2lCMEVEZEdvckF3QWdFNkFoRXlBQ1FRRnFJUUlnQlVFQlNpRUpJQWNoQlNBSkRRQUxDd0ovSUJNZ0NCQzdBeUlUSUJORUFBQUFBQUFBd0QraW5FUUFBQUFBQUFBZ3dLS2dJaE9aUkFBQUFBQUFBT0JCWXdSQUlCT3FEQUVMUVlDQWdJQjRDeUVISUJNZ0I3ZWhJUk1DUUFKQUFrQUNmeUFJUVFGSUloRkZCRUFnQkVFQ2RDQUdhaUlDSUFJb0F0d0RJZ0lnQWlBT2RTSUNJQTUwYXlJRk5nTGNBeUFDSUFkcUlRY2dCU0FRZFF3QkN5QUlEUUVnQkVFQ2RDQUdhaWdDM0FOQkYzVUxJZ2xCQVVnTkFnd0JDMEVDSVFrZ0UwUUFBQUFBQUFEZ1AyWkJBWE5GRFFCQkFDRUpEQUVMUVFBaEFrRUFJUVVnREVVRVFBTkFJQVpCNEFOcUlBSkJBblJxSWhJb0FnQWhERUgvLy84SElROENRQUpBSUFWRkJFQWdERVVOQVVHQWdJQUlJUTlCQVNFRkN5QVNJQThnREdzMkFnQU1BUXRCQUNFRkN5QUNRUUZxSWdJZ0JFY05BQXNMQWtBZ0VRMEFJQWhCZjJvaUFrRUJTdzBBSUFKQkFXc0VRQ0FFUVFKMElBWnFJZ0lnQWlnQzNBTkIvLy8vQTNFMkF0d0REQUVMSUFSQkFuUWdCbW9pQWlBQ0tBTGNBMEgvLy84QmNUWUMzQU1MSUFkQkFXb2hCeUFKUVFKSERRQkVBQUFBQUFBQThEOGdFNkVoRTBFQ0lRa2dCVVVOQUNBVFJBQUFBQUFBQVBBL0lBZ1F1d09oSVJNTElCTkVBQUFBQUFBQUFBQmhCRUJCQUNFRkFrQWdCQ0lDSUFwTURRQURRQ0FHUWVBRGFpQUNRWDlxSWdKQkFuUnFLQUlBSUFWeUlRVWdBaUFLU2cwQUN5QUZSUTBBSUFnaEN3TkFJQXRCYUdvaEN5QUdRZUFEYWlBRVFYOXFJZ1JCQW5ScUtBSUFSUTBBQ3d3REMwRUJJUUlEUUNBQ0lnVkJBV29oQWlBR1FlQURhaUFLSUFWclFRSjBhaWdDQUVVTkFBc2dCQ0FGYWlFRkEwQWdCa0hBQW1vZ0F5QUVhaUlIUVFOMGFpQUVRUUZxSWdRZ0RXcEJBblJCNFBnUmFpZ0NBTGM1QXdCQkFDRUNSQUFBQUFBQUFBQUFJUk1nQTBFQlRnUkFBMEFnRXlBQUlBSkJBM1JxS3dNQUlBWkJ3QUpxSUFjZ0FtdEJBM1JxS3dNQW9xQWhFeUFDUVFGcUlnSWdBMGNOQUFzTElBWWdCRUVEZEdvZ0V6a0RBQ0FFSUFWSURRQUxJQVVoQkF3QkN3c0NRQ0FUUVFBZ0NHc1F1d01pRTBRQUFBQUFBQUJ3UVdaQkFYTkZCRUFnQmtIZ0Eyb2dCRUVDZEdvQ2Z5QVRBbjhnRTBRQUFBQUFBQUJ3UHFJaUU1bEVBQUFBQUFBQTRFRmpCRUFnRTZvTUFRdEJnSUNBZ0hnTElnSzNSQUFBQUFBQUFIREJvcUFpRTVsRUFBQUFBQUFBNEVGakJFQWdFNm9NQVF0QmdJQ0FnSGdMTmdJQUlBUkJBV29oQkF3QkN3Si9JQk9aUkFBQUFBQUFBT0JCWXdSQUlCT3FEQUVMUVlDQWdJQjRDeUVDSUFnaEN3c2dCa0hnQTJvZ0JFRUNkR29nQWpZQ0FBdEVBQUFBQUFBQThEOGdDeEM3QXlFVEFrQWdCRUYvVEEwQUlBUWhBZ05BSUFZZ0FrRURkR29nRXlBR1FlQURhaUFDUVFKMGFpZ0NBTGVpT1FNQUlCTkVBQUFBQUFBQWNENmlJUk1nQWtFQVNpRUFJQUpCZjJvaEFpQUFEUUFMSUFSQmYwd05BQ0FFSVFJRFFDQUVJQUlpQUdzaEEwUUFBQUFBQUFBQUFDRVRRUUFoQWdOQUFrQWdFeUFDUVFOMFFiQ09FbW9yQXdBZ0JpQUFJQUpxUVFOMGFpc0RBS0tnSVJNZ0FpQUtUZzBBSUFJZ0Ewa2hCU0FDUVFGcUlRSWdCUTBCQ3dzZ0JrR2dBV29nQTBFRGRHb2dFemtEQUNBQVFYOXFJUUlnQUVFQVNnMEFDd3RFQUFBQUFBQUFBQUFoRXlBRVFRQk9CRUFnQkNFQ0EwQWdFeUFHUWFBQmFpQUNRUU4wYWlzREFLQWhFeUFDUVFCS0lRQWdBa0YvYWlFQ0lBQU5BQXNMSUFFZ0U1b2dFeUFKR3prREFDQUdLd09nQVNBVG9TRVRRUUVoQWlBRVFRRk9CRUFEUUNBVElBWkJvQUZxSUFKQkEzUnFLd01Bb0NFVElBSWdCRWNoQUNBQ1FRRnFJUUlnQUEwQUN3c2dBU0FUbWlBVElBa2JPUU1JSUFaQnNBUnFKQUFnQjBFSGNRdmVCZ0VPZnlNQVFhQUlheUlJSkFBZ0NFR1lDR3BDQURjREFDQUlRWkFJYWtJQU53TUFJQWhDQURjRGlBZ2dDRUlBTndPQUNBSkFBa0FDUUFKQUFrQWdBUzBBQUNJRVJRUkFRWDhoQ1VFQklRSU1BUXNEUUNBQUlBVnFMUUFBUlEwRUlBZ2dCRUgvQVhFaUFrRUNkR29nQlVFQmFpSUZOZ0lBSUFoQmdBaHFJQUpCQTNaQkhIRnFJZ0lnQWlnQ0FFRUJJQVJCSDNGMGNqWUNBQ0FCSUFWcUxRQUFJZ1FOQUF0QkFTRUNRWDhoQ1NBRlFRRkxEUUVMUVg4aEJrRUJJUU1NQVF0QkFTRUtRUUVoQkFOQUFuOGdBU0FFSUFscWFpMEFBQ0lHSUFFZ0Ftb3RBQUFpQjBZRVFDQUVJQXBHQkVBZ0F5QUthaUVEUVFFTUFnc2dCRUVCYWd3QkN5QUdJQWRMQkVBZ0FpQUpheUVLSUFJaEEwRUJEQUVMSUFNaENTQURRUUZxSVFOQkFTRUtRUUVMSWdRZ0Eyb2lBaUFGU1EwQUMwRUJJUU5CZnlFR0lBVkJBVTBFUUNBS0lRSU1BUXRCQUNFQ1FRRWhCMEVCSVFRRFFBSi9JQUVnQkNBR2Ftb3RBQUFpRFNBQklBTnFMUUFBSWd0R0JFQWdCQ0FIUmdSQUlBSWdCMm9oQWtFQkRBSUxJQVJCQVdvTUFRc2dEU0FMU1FSQUlBTWdCbXNoQnlBRElRSkJBUXdCQ3lBQ0lRWWdBa0VCYWlFQ1FRRWhCMEVCQ3lJRUlBSnFJZ01nQlVrTkFBc2dDaUVDSUFjaEF3c0NmeUFCSUFFZ0F5QUNJQVpCQVdvZ0NVRUJha3NpQWhzaUIyb2dCaUFKSUFJYklneEJBV29pQ2hDRUNBUkFJQVVnRENBRklBeEJmM05xSWdJZ0RDQUNTeHRCQVdvaUIyc2hEa0VBREFFTElBVWdCMnNpRGdzaEN5QUZRWDlxSVEwZ0JVRS9jaUVQUVFBaEJpQUFJUUlEUUFKQUlBQWdBbXNnQlU4TkFDQUFRUUFnRHhETkJpSURCRUFnQXlJQUlBSnJJQVZKRFFNTUFRc2dBQ0FQYWlFQUN3Si9BbjhnQlNBSVFZQUlhaUFDSUExcUxRQUFJZ05CQTNaQkhIRnFLQUlBSUFOQkgzRjJRUUZ4UlEwQUdpQUZJQWdnQTBFQ2RHb29BZ0JySWdNRVFDQU9JQU1nQXlBSFNSc2dBeUFHR3lBRElBc2JEQUVMQWtBZ0FTQUtJZ1FnQmlBRUlBWkxHeUlEYWkwQUFDSUpCRUFEUUNBQ0lBTnFMUUFBSUFsQi93RnhSdzBDSUFFZ0EwRUJhaUlEYWkwQUFDSUpEUUFMQ3dOQUlBUWdCazBOQmlBQklBUkJmMm9pQkdvdEFBQWdBaUFFYWkwQUFFWU5BQXNnQnlFRUlBc01BZ3NnQXlBTWF3c2hCRUVBQ3lFR0lBSWdCR29oQWd3QUFBc0FDMEVBSVFJTElBaEJvQWhxSkFBZ0FndXFBUUVFZnlBQVFRTnFJUU1nQUMwQUF5SUNRUUJISVFRQ1FDQUNSU0FBTFFBQlFSQjBJQUF0QUFCQkdIUnlJQUF0QUFKQkNIUnlJQUp5SWdJZ0FTZ0FBQ0lBUVJoMElBQkJDSFJCZ0lEOEIzRnlJQUJCQ0haQmdQNERjU0FBUVJoMmNuSWlCVVp5UlFSQUEwQWdBMEVCYWlFQUlBTXRBQUVpQVVFQVJ5RUVJQUpCQ0hRZ0FYSWlBaUFGUmcwQ0lBQWhBeUFCRFFBTUFnQUxBQXNnQXlFQUN5QUFRWDFxUVFBZ0JCc0xsd0VCQkg4Z0FFRUNhaUVESUFBdEFBSWlBa0VBUnlFRUFrQWdBa1VnQUMwQUFVRVFkQ0FBTFFBQVFSaDBjaUFDUVFoMGNpSUFJQUV0QUFGQkVIUWdBUzBBQUVFWWRISWdBUzBBQWtFSWRISWlCVVp5UlFSQUEwQWdBMEVCYWlFQklBTXRBQUVpQWtFQVJ5RUVJQUFnQW5KQkNIUWlBQ0FGUmcwQ0lBRWhBeUFDRFFBTUFnQUxBQXNnQXlFQkN5QUJRWDVxUVFBZ0JCc0xkd0VFZnlBQUxRQUJJZ0pCQUVjaEF3SkFJQUpGRFFBZ0FDMEFBRUVJZENBQ2NpSUNJQUV0QUFFZ0FTMEFBRUVJZEhJaUJVWU5BQ0FBUVFGcUlRRURRQ0FCSWdBdEFBRWlCRUVBUnlFRElBUkZEUUVnQUVFQmFpRUJJQUpCQ0hSQmdQNERjU0FFY2lJQ0lBVkhEUUFMQ3lBQVFRQWdBeHNMaFFFQkFYOENRQ0FCTEFBQUlnSkZEUUFnQUNBQ0VPQUxJUUpCQUNFQUlBSkZEUUFnQVMwQUFVVUVRQ0FDRHdzZ0FpMEFBVVVOQUNBQkxRQUNSUVJBSUFJZ0FSRFhFdzhMSUFJdEFBSkZEUUFnQVMwQUEwVUVRQ0FDSUFFUTFoTVBDeUFDTFFBRFJRMEFJQUV0QUFSRkJFQWdBaUFCRU5VVER3c2dBaUFCRU5RVElRQUxJQUFMVEFFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFFUU94Q3RBaUFBSUFKQkNHb1E2QklhSUFFUUZpSURCRUFnQUNBREVKd0xJQUFnQVNnQ0FDQUJLQUlFSUFNUThnY0xJQUpCRUdva0FBdEJBUUovSXdCQkVHc2lBU1FBUVg4aEFnSkFJQUFRM1JNTkFDQUFJQUZCRDJwQkFTQUFLQUlnRVFjQVFRRkhEUUFnQVMwQUR5RUNDeUFCUVJCcUpBQWdBZ3VPQVFFR2Z3TkFJQUFpQVVFQmFpRUFJQUVzQUFBUXFRUU5BQXNDUUNBQkxBQUFJZ1JCVldvaUJrRUNTd1JBREFFTEFrQUNRQ0FHUVFGckRnSUNBQUVMUVFFaEJRc2dBQ3dBQUNFRUlBQWhBU0FGSVFNTElBUVF6UUlFUUFOQUlBSkJDbXdnQVN3QUFHdEJNR29oQWlBQkxBQUJJUUFnQVVFQmFpRUJJQUFRelFJTkFBc0xJQUpCQUNBQ2F5QURHd3N6QVFGL0lBQW9BaFFpQXlBQklBSWdBQ2dDRUNBRGF5SUJJQUVnQWtzYklnRVFQUm9nQUNBQUtBSVVJQUZxTmdJVUlBSUxmQUVDZnlBQUlBQXRBRW9pQVVGL2FpQUJjam9BU2lBQUtBSVVJQUFvQWh4TEJFQWdBRUVBUVFBZ0FDZ0NKQkVIQUJvTElBQkJBRFlDSENBQVFnQTNBeEFnQUNnQ0FDSUJRUVJ4QkVBZ0FDQUJRU0J5TmdJQVFYOFBDeUFBSUFBb0Fpd2dBQ2dDTUdvaUFqWUNDQ0FBSUFJMkFnUWdBVUViZEVFZmRRdGhBUUovUWFqMUVTZ0NBQ0lCS0FKTVFRQk9CSDlCQVFVZ0Fnc2FBa0FnQUNBQkVNOEdRUUJJRFFBQ1FDQUJMUUJMUVFwR0RRQWdBU2dDRkNJQUlBRW9BaEJQRFFBZ0FTQUFRUUZxTmdJVUlBQkJDam9BQUF3QkN5QUJRUW9RaHdnTEN3UUFRZ0FMa1FRQkEzOGpBRUVRYXlJRUpBQUNRQ0FBSUFBb0FnQW9Bb1FCRVFBQUxRQUhRUWR4RFFBQ1FDQUFJQUFvQWdBb0FvQUJFUUFBUVFoR0RRQWdBQ0FBS0FJQUtBS0FBUkVBQUVFSlJnMEFJQUFnQUNnQ0FDZ0NnQUVSQUFCQkFVWU5BQ0FBSUFBb0FnQW9Bb0FCRVFBQVFRTkhEUUVMSUFBZ0FDZ0NBQ2dDaEFFUkFBQWlBaUFCUVJoMFFZQ0FnRGh4clNBQ0tRSUVRdi8vLzBlRGhEY0NCQ0FBSUFBb0FnQW9BaUFSQUFBaUFnUkFJQUlnQWlnQ0FDZ0N3QUVSQUFBaUFDQUJJQUFvQWdBb0Fvd0JFUUVBSUFJZ0FpZ0NBQ2dDeEFFUkFBQWlBQ0FCSUFBb0FnQW9Bb3dCRVFFQURBRUxJQUFnQUNnQ0FDZ0NIQkVBQUNJQ0JFQWdBaUFDS0FJQUtBSzhBUkVBQUNJQUlBRWdBQ2dDQUNnQ2pBRVJBUUFNQVFzZ0FDQUFLQUlBS0FJWUVRQUFJZ0lFUUFKQUlBUWdBaUFDS0FJQUtBSzhBUkVBQUJET0JpSUNFQlpGRFFCQkFDRUFBMEFnQWlBQUVCRW9BZ0FpQXlBREtBSUFLQUlNRVFBQUlnTkZEUUVnQXlBQklBTW9BZ0FvQW93QkVRRUFJQUJCQVdvaUFDQUNFQlpKRFFBTEN5QUNFTnNCREFFTElBQWdBQ2dDQUNnQ0pCRUFBQ0lBUlEwQUlBQWdBQ2dDQUNnQ3ZBRVJBQUFpQWlBQ0tBSUFLQUlNRVFBQUlnSkZEUUFnQWlBQklBSW9BZ0FvQW93QkVRRUFJQUFnQUNnQ0FDZ0N3QUVSQUFBaUFDQUFLQUlBS0FJTUVRQUFJZ0JGRFFBZ0FDQUJJQUFvQWdBb0Fvd0JFUUVBQ3lBRVFSQnFKQUFMS1FBZ0FTQUJLQUlBUVE5cVFYQnhJZ0ZCRUdvMkFnQWdBQ0FCS1FNQUlBRXBBd2dRekFZNUF3QUw3QllERVg4Q2ZnRjhJd0JCc0FScklna2tBQ0FKUVFBMkFpd0NmeUFCdlNJWFFuOVhCRUFnQVpvaUFiMGhGMEVCSVJSQmdQVVJEQUVMSUFSQmdCQnhCRUJCQVNFVVFZUDFFUXdCQzBHRzlSRkJnZlVSSUFSQkFYRWlGQnNMSVJZQ1FDQVhRb0NBZ0lDQWdJRDQvd0NEUW9DQWdJQ0FnSUQ0L3dCUkJFQWdBRUVnSUFJZ0ZFRURhaUlQSUFSQi8vOTdjUkNMQWlBQUlCWWdGQkRpQVNBQVFadjFFVUdmOVJFZ0JVRUZka0VCY1NJREcwR1Q5UkZCbC9VUklBTWJJQUVnQVdJYlFRTVE0Z0VNQVFzZ0FTQUpRU3hxRU9rTElnRWdBYUFpQVVRQUFBQUFBQUFBQUdJRVFDQUpJQWtvQWl4QmYybzJBaXdMSUFsQkVHb2hFU0FGUVNCeUloSkI0UUJHQkVBZ0ZrRUphaUFXSUFWQklIRWlEUnNoREFKQUlBTkJDMHNOQUVFTUlBTnJJZ1pGRFFCRUFBQUFBQUFBSUVBaEdRTkFJQmxFQUFBQUFBQUFNRUNpSVJrZ0JrRi9haUlHRFFBTElBd3RBQUJCTFVZRVFDQVpJQUdhSUJtaG9Kb2hBUXdCQ3lBQklCbWdJQm1oSVFFTElCRWdDU2dDTENJR0lBWkJIM1VpQm1vZ0JuT3RJQkVRN2dRaUJrWUVRQ0FKUVRBNkFBOGdDVUVQYWlFR0N5QVVRUUp5SVFvZ0NTZ0NMQ0VJSUFaQmZtb2lEaUFGUVE5cU9nQUFJQVpCZjJwQkxVRXJJQWhCQUVnYk9nQUFJQVJCQ0hFaENDQUpRUkJxSVFjRFFDQUhJZ1VDZnlBQm1VUUFBQUFBQUFEZ1FXTUVRQ0FCcWd3QkMwR0FnSUNBZUFzaUJrSHc5QkZxTFFBQUlBMXlPZ0FBSUFWQkFXb2lCeUFKUVJCcWEwRUJSeUFJSUFOQkFFcHlSVUVBSUFFZ0JyZWhSQUFBQUFBQUFEQkFvaUlCUkFBQUFBQUFBQUFBWVJ0eVJRUkFJQVZCTGpvQUFTQUZRUUpxSVFjTElBRkVBQUFBQUFBQUFBQmlEUUFMSUFCQklDQUNJQW9nRVNBSlFSQnFheUFPYXlBSGFpQURJQkZxSUE1clFRSnFJQU5GSUFjZ0NXdEJibW9nQTA1eUd5SURhaUlQSUFRUWl3SWdBQ0FNSUFvUTRnRWdBRUV3SUFJZ0R5QUVRWUNBQkhNUWl3SWdBQ0FKUVJCcUlBY2dDVUVRYW1zaUJSRGlBU0FBUVRBZ0F5QUZJQkVnRG1zaUEycHJRUUJCQUJDTEFpQUFJQTRnQXhEaUFRd0JDeUFEUVFCSUlRWUNRQ0FCUkFBQUFBQUFBQUFBWVFSQUlBa29BaXdoQ3d3QkN5QUpJQWtvQWl4QlpHb2lDellDTENBQlJBQUFBQUFBQUxCQm9pRUJDMEVHSUFNZ0Joc2hDaUFKUVRCcUlBbEIwQUpxSUF0QkFFZ2JJZzBoQ0FOQUlBZ0NmeUFCUkFBQUFBQUFBUEJCWXlBQlJBQUFBQUFBQUFBQVpuRUVRQ0FCcXd3QkMwRUFDeUlETmdJQUlBaEJCR29oQ0NBQklBTzRvVVFBQUFBQVpjM05RYUlpQVVRQUFBQUFBQUFBQUdJTkFBc0NRQ0FMUVFGSUJFQWdDQ0VHSUEwaEJ3d0JDeUFOSVFjRFFDQUxRUjBnQzBFZFNCc2hEQUpBSUFoQmZHb2lCaUFIU1EwQUlBeXRJUmhDQUNFWEEwQWdCaUFYUXYvLy8vOFBneUFHTlFJQUlCaUdmQ0lYSUJkQ2dKVHIzQU9BSWhkQ2dKVHIzQU4rZlQ0Q0FDQUdRWHhxSWdZZ0IwOE5BQXNnRjZjaUEwVU5BQ0FIUVh4cUlnY2dBellDQUFzRFFDQUlJZ1lnQjBzRVFDQUdRWHhxSWdnb0FnQkZEUUVMQ3lBSklBa29BaXdnREdzaUN6WUNMQ0FHSVFnZ0MwRUFTZzBBQ3dzZ0MwRi9UQVJBSUFwQkdXcEJDVzFCQVdvaEZTQVNRZVlBUmlFUEEwQkJDVUVBSUF0cklBdEJkMGdiSVJNQ1FDQUhJQVpQQkVBZ0J5QUhRUVJxSUFjb0FnQWJJUWNNQVF0QmdKVHIzQU1nRTNZaERrRi9JQk4wUVg5eklReEJBQ0VMSUFjaENBTkFJQWdnQ0NnQ0FDSURJQk4ySUF0cU5nSUFJQU1nREhFZ0Rtd2hDeUFJUVFScUlnZ2dCa2tOQUFzZ0J5QUhRUVJxSUFjb0FnQWJJUWNnQzBVTkFDQUdJQXMyQWdBZ0JrRUVhaUVHQ3lBSklBa29BaXdnRTJvaUN6WUNMQ0FOSUFjZ0R4c2lBeUFWUVFKMGFpQUdJQVlnQTJ0QkFuVWdGVW9iSVFZZ0MwRUFTQTBBQ3d0QkFDRUlBa0FnQnlBR1R3MEFJQTBnQjJ0QkFuVkJDV3doQ0VFS0lRc2dCeWdDQUNJRFFRcEpEUUFEUUNBSVFRRnFJUWdnQXlBTFFRcHNJZ3RQRFFBTEN5QUtRUUFnQ0NBU1FlWUFSaHRySUJKQjV3QkdJQXBCQUVkeGF5SURJQVlnRFd0QkFuVkJDV3hCZDJwSUJFQWdBMEdBeUFCcUlnNUJDVzBpREVFQ2RDQU5ha0dFWUdvaEVFRUtJUU1nRGlBTVFRbHNheUlMUVFkTUJFQURRQ0FEUVFwc0lRTWdDMEVIU0NFTUlBdEJBV29oQ3lBTURRQUxDd0pBUVFBZ0JpQVFRUVJxSWhWR0lCQW9BZ0FpRHlBUElBTnVJZzRnQTJ4ckloTWJEUUJFQUFBQUFBQUE0RDlFQUFBQUFBQUE4RDlFQUFBQUFBQUErRDhnRXlBRFFRRjJJZ3hHRzBRQUFBQUFBQUQ0UHlBR0lCVkdHeUFUSUF4Skd5RVpSQUVBQUFBQUFFQkRSQUFBQUFBQUFFQkRJQTVCQVhFYklRRUNRQ0FVUlEwQUlCWXRBQUJCTFVjTkFDQVptaUVaSUFHYUlRRUxJQkFnRHlBVGF5SU1OZ0lBSUFFZ0dhQWdBV0VOQUNBUUlBTWdER29pQXpZQ0FDQURRWUNVNjl3RFR3UkFBMEFnRUVFQU5nSUFJQkJCZkdvaUVDQUhTUVJBSUFkQmZHb2lCMEVBTmdJQUN5QVFJQkFvQWdCQkFXb2lBellDQUNBRFFmK1Q2OXdEU3cwQUN3c2dEU0FIYTBFQ2RVRUpiQ0VJUVFvaEN5QUhLQUlBSWdOQkNra05BQU5BSUFoQkFXb2hDQ0FESUF0QkNtd2lDMDhOQUFzTElCQkJCR29pQXlBR0lBWWdBMHNiSVFZTEFuOERRRUVBSUFZaURDQUhUUTBCR2lBTVFYeHFJZ1lvQWdCRkRRQUxRUUVMSVJBQ1FDQVNRZWNBUndSQUlBUkJDSEVoRWd3QkN5QUlRWDl6UVg4Z0NrRUJJQW9iSWdZZ0NFb2dDRUY3U25FaUF4c2dCbW9oQ2tGL1FYNGdBeHNnQldvaEJTQUVRUWh4SWhJTkFFRUpJUVlDUUNBUVJRMEFJQXhCZkdvb0FnQWlEa1VOQUVFS0lRTkJBQ0VHSUE1QkNuQU5BQU5BSUFaQkFXb2hCaUFPSUFOQkNtd2lBM0JGRFFBTEN5QU1JQTFyUVFKMVFRbHNRWGRxSVFNZ0JVRWdja0htQUVZRVFFRUFJUklnQ2lBRElBWnJJZ05CQUNBRFFRQktHeUlESUFvZ0EwZ2JJUW9NQVF0QkFDRVNJQW9nQXlBSWFpQUdheUlEUVFBZ0EwRUFTaHNpQXlBS0lBTklHeUVLQ3lBS0lCSnlJaE5CQUVjaER5QUFRU0FnQWdKL0lBaEJBQ0FJUVFCS0d5QUZRU0J5SWc1QjVnQkdEUUFhSUJFZ0NDQUlRUjkxSWdOcUlBTnpyU0FSRU80RUlnWnJRUUZNQkVBRFFDQUdRWDlxSWdaQk1Eb0FBQ0FSSUFaclFRSklEUUFMQ3lBR1FYNXFJaFVnQlRvQUFDQUdRWDlxUVMxQkt5QUlRUUJJR3pvQUFDQVJJQlZyQ3lBS0lCUnFJQTlxYWtFQmFpSVBJQVFRaXdJZ0FDQVdJQlFRNGdFZ0FFRXdJQUlnRHlBRVFZQ0FCSE1RaXdJQ1FBSkFBa0FnRGtIbUFFWUVRQ0FKUVJCcVFRaHlJUU1nQ1VFUWFrRUpjaUVJSUEwZ0J5QUhJQTFMR3lJRklRY0RRQ0FITlFJQUlBZ1E3Z1FoQmdKQUlBVWdCMGNFUUNBR0lBbEJFR3BORFFFRFFDQUdRWDlxSWdaQk1Eb0FBQ0FHSUFsQkVHcExEUUFMREFFTElBWWdDRWNOQUNBSlFUQTZBQmdnQXlFR0N5QUFJQVlnQ0NBR2F4RGlBU0FIUVFScUlnY2dEVTBOQUFzZ0V3UkFJQUJCby9VUlFRRVE0Z0VMSUFwQkFVZ2dCeUFNVDNJTkFRTkFJQWMxQWdBZ0NCRHVCQ0lHSUFsQkVHcExCRUFEUUNBR1FYOXFJZ1pCTURvQUFDQUdJQWxCRUdwTERRQUxDeUFBSUFZZ0NrRUpJQXBCQ1VnYkVPSUJJQXBCZDJvaEJpQUhRUVJxSWdjZ0RFOE5BeUFLUVFsS0lRTWdCaUVLSUFNTkFBc01BZ3NDUUNBS1FRQklEUUFnRENBSFFRUnFJQkFiSVFVZ0NVRVFha0VJY2lFRElBbEJFR3BCQ1hJaERTQUhJUWdEUUNBTklBZzFBZ0FnRFJEdUJDSUdSZ1JBSUFsQk1Eb0FHQ0FESVFZTEFrQWdCeUFJUndSQUlBWWdDVUVRYWswTkFRTkFJQVpCZjJvaUJrRXdPZ0FBSUFZZ0NVRVFha3NOQUFzTUFRc2dBQ0FHUVFFUTRnRWdCa0VCYWlFR0lCSkZRUUFnQ2tFQlNCc05BQ0FBUWFQMUVVRUJFT0lCQ3lBQUlBWWdEU0FHYXlJR0lBb2dDaUFHU2hzUTRnRWdDaUFHYXlFS0lBaEJCR29pQ0NBRlR3MEJJQXBCZjBvTkFBc0xJQUJCTUNBS1FSSnFRUkpCQUJDTEFpQUFJQlVnRVNBVmF4RGlBUXdDQ3lBS0lRWUxJQUJCTUNBR1FRbHFRUWxCQUJDTEFnc0xJQUJCSUNBQ0lBOGdCRUdBd0FCekVJc0NJQWxCc0FScUpBQWdBaUFQSUE4Z0FrZ2JDelVBSUFCUVJRUkFBMEFnQVVGL2FpSUJJQUNuUVE5eFFmRDBFV290QUFBZ0FuSTZBQUFnQUVJRWlDSUFRZ0JTRFFBTEN5QUJDeTBBSUFCUVJRUkFBMEFnQVVGL2FpSUJJQUNuUVFkeFFUQnlPZ0FBSUFCQ0E0Z2lBRUlBVWcwQUN3c2dBUXZGQWdJQ2Z3RitJd0JCRUdzaUFpUUFBa0FDUUNBQUlBQW9BZ0FvQW9BQkVRQUFRUWhHRFFBZ0FDQUFLQUlBS0FLQUFSRUFBRUVKUmcwQUlBQWdBQ2dDQUNnQ2dBRVJBQUJCQVVZTkFDQUFJQUFvQWdBb0FvQUJFUUFBUVFOSERRRUxJQUlnQUNnQ2RDSUJJQUVvQWdBb0FvUUJFUUFBTFFBSFFRZHhOZ0lNSUFJZ0FDZ0NjQ0lCSUFFb0FnQW9Bb1FCRVFBQUxRQUhRUWR4TmdJSUlBSkJER29nQWtFSWFoQ21BVFVDQUNFRElBQWdBQ2dDQUNnQ2hBRVJBQUFpQVNBQktRSUVRdi8vLzBlRElBTkNHSVpDZ0lDQU9JT0VOd0lFSUFBZ0FDZ0NBQ2dDaEFFUkFBQXRBQWRCQjNGRkRRQWdBQ2dDY0NJQklBQWdBQ2dDQUNnQ2hBRVJBQUF0QUFkQkIzRWdBU2dDQUNnQ2pBRVJBUUFnQUNnQ2RDSUJJQUFnQUNnQ0FDZ0NoQUVSQUFBdEFBZEJCM0VnQVNnQ0FDZ0NqQUVSQVFBTElBSkJFR29rQUF1MEFnRUdmeU1BUVNCcklnTWtBQ0FESUFBb0Fod2lCRFlDRUNBQUtBSVVJUVVnQXlBQ05nSWNJQU1nQVRZQ0dDQURJQVVnQkdzaUFUWUNGQ0FCSUFKcUlRWkJBaUVGSUFOQkVHb2hBUU5BQWtBQ2Z5QUdBbjhnQUNnQ1BDQUJJQVVnQTBFTWFoQUdFTjRMQkVBZ0EwRi9OZ0lNUVg4TUFRc2dBeWdDREFzaUJFWUVRQ0FBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQUNBQklBQW9BakJxTmdJUUlBSU1BUXNnQkVGL1NnMEJJQUJCQURZQ0hDQUFRZ0EzQXhBZ0FDQUFLQUlBUVNCeU5nSUFRUUFnQlVFQ1JnMEFHaUFDSUFFb0FnUnJDeUVFSUFOQklHb2tBQ0FFRHdzZ0FVRUlhaUFCSUFRZ0FTZ0NCQ0lIU3lJSUd5SUJJQVFnQjBFQUlBZ2JheUlISUFFb0FnQnFOZ0lBSUFFZ0FTZ0NCQ0FIYXpZQ0JDQUdJQVJySVFZZ0JTQUlheUVGREFBQUN3QUxDUUFnQUNnQ1BCQUhDMDBCQVg4akFFRVFheUlESkFBQ2ZpQUFLQUk4SUFHbklBRkNJSWluSUFKQi93RnhJQU5CQ0dvUUNSRGVDMFVFUUNBREtRTUlEQUVMSUFOQ2Z6Y0RDRUovQ3lFQklBTkJFR29rQUNBQkN5c0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1RYWoxRVNnQ0FFRy95QThnQUJEa0N5QUJRUkJxSkFBTHh3RUNBWDhCZmdKQUFrQWdBQ0FBS0FJQUtBS0FBUkVBQUVFSVJnMEFJQUFnQUNnQ0FDZ0NnQUVSQUFCQkNVWU5BQ0FBSUFBb0FnQW9Bb0FCRVFBQVFRRkdEUUFnQUNBQUtBSUFLQUtBQVJFQUFFRURSdzBCQ3lBQUtBSndJZ0VnQVNnQ0FDZ0NoQUVSQUFBdEFBZEJCM0VnQUNBQUtBSUFLQUtFQVJFQUFDMEFCMEVIY1UwTkFDQUFLQUp3SWdFZ0FTZ0NBQ2dDaEFFUkFBQXBBZ1FoQWlBQUlBQW9BZ0FvQW9RQkVRQUFJZ0FnQUNrQ0JFTC8vLzlIZ3lBQ1FvQ0FnRGlEaERjQ0JBc0xFd0FnQUVFZ2NpQUFJQUJCdjM5cVFScEpHd3NtQVFGL0l3QkJFR3NpQUNRQUlBQkJDR29RRGhvZ0FFRUlha0VCRUFnYUlBQkJFR29rQUFzK0FRRi9BbjlCQVVHd3dCUW9BZ0FOQUJwQnNNQVVFTzBMSWdBMkFnQkJBQ0FBUlEwQUdrR1E5QklRN1FzaUFEWUNBRUVBSUFCRkRRQWFFTzRMQ3dzcEFDQUFJQUZIQkVBRFFDQUNJQUFROUFzZ0FrRUVhaUVDSUFCQkJHb2lBQ0FCUncwQUN3c2dBZ3MxQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ0FCRU1nTk5nSUlJQUlReXdFMkFnQWdBa0VJYWlBQ0VCNGhBQ0FDUVJCcUpBQWdBQXZqQXdJRmZ3RjlJd0JCSUdzaUJDUUFJQUVRSXhvZ0FpZ0NBQ0VISUFFUVBDRUZJQVJCQURvQUh3SkFBa0FnQlVVTkFDQUJJQWNnQlJBMElnZ1FFU2dDQUNJR1JRMEFBMEFnQmlnQ0FDSUdSUTBCSUFjZ0JpZ0NCRWNFUUNBR0tBSUVJQVVRTkNBSVJ3MENDeUFCRUVNZ0JrRUlhaUFDRU1RQ1JRMEFDd3dCQ3lBRVFSQnFJQUVnQnlBREVNSUZJQUVRSXlnQ0FDRUNJQUVRUXlFREFrQWdCUVJBSUFNcUFnQWdCYk9VSUFKQkFXcXpYVUVCY3cwQkN5QUVJQVVRdWdGQkFYTWdCVUVCZEhJMkFnd2dCQUovSUFFUUl5Z0NBRUVCYXJNZ0FSQkRLZ0lBbFkwaUNVTUFBSUJQWFNBSlF3QUFBQUJnY1FSQUlBbXBEQUVMUVFBTE5nSUlJQUVnQkVFTWFpQUVRUWhxRUZJb0FnQVE3Z3dnQnlBQkVEd2lCUkEwSVFnTEFrQWdBU0FJRUJFb0FnQWlBa1VFUUNBRUtBSVFJQUZCQ0dvaUFpZ0NBRFlDQUNBQ0lBUW9BaEEyQWdBZ0FTQUlFQkVnQWpZQ0FDQUVLQUlRS0FJQVJRMEJJQVFvQWhBaEFpQUJJQVFvQWhBb0FnQW9BZ1FnQlJBMEVCRWdBallDQUF3QkN5QUVLQUlRSUFJb0FnQTJBZ0FnQWlBRUtBSVFOZ0lBQ3lBRVFSQnFFRjhoQmlBQkVDTWlBU0FCS0FJQVFRRnFOZ0lBSUFSQkFUb0FIeUFFUVJCcUVMTUNDeUFBSUFSQkVHb2dCaEF4SUFSQkgyb1FvZ0VnQkVFZ2FpUUFDelFCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lJSUFBZ0FpZ0NDQ0lCS1FJQU53SUFJQUFnQVNnQ0NEWUNDQ0FDUVJCcUpBQUxTUUVDZnlNQVFTQnJJZ0VrQUNBQlFRaHFRUXdRSmlBQklBRkJHR29ROHdzUWtRRWlBaWdDQUNBQUVKSURJQUVRekFFUThRc2dBaEJmSVFBZ0FoRHdDeUFCUVNCcUpBQWdBQXNIQUNBQUVQSVRDK2dEQWdWL0FYMGpBRUVnYXlJRkpBQWdBUkFqSUFJUTZnWWhDQ0FCRUR3aEJpQUZRUUE2QUI4Q1FBSkFJQVpGRFFBZ0FTQUlJQVlRTkNJSkVCRW9BZ0FpQjBVTkFBTkFJQWNvQWdBaUIwVU5BU0FJSUFjb0FnUkhCRUFnQnlnQ0JDQUdFRFFnQ1VjTkFnc2dBUkJESUFkQkNHb2dBaENMQTBVTkFBc01BUXNnQlVFUWFpQUJJQWhCOWZBUklBTWdCQkNhQmlBQkVDTW9BZ0FoQWlBQkVFTWhBd0pBSUFZRVFDQURLZ0lBSUFhemxDQUNRUUZxczExQkFYTU5BUXNnQlNBR0VMb0JRUUZ6SUFaQkFYUnlOZ0lNSUFVQ2Z5QUJFQ01vQWdCQkFXcXpJQUVRUXlvQ0FKV05JZ3BEQUFDQVQxMGdDa01BQUFBQVlIRUVRQ0FLcVF3QkMwRUFDellDQ0NBQklBVkJER29nQlVFSWFoQlNLQUlBRU5NRUlBZ2dBUkE4SWdZUU5DRUpDd0pBSUFFZ0NSQVJLQUlBSWdKRkJFQWdCU2dDRUNBQlFRaHFJZ0lvQWdBMkFnQWdBaUFGS0FJUU5nSUFJQUVnQ1JBUklBSTJBZ0FnQlNnQ0VDZ0NBRVVOQVNBRktBSVFJUUlnQVNBRktBSVFLQUlBS0FJRUlBWVFOQkFSSUFJMkFnQU1BUXNnQlNnQ0VDQUNLQUlBTmdJQUlBSWdCU2dDRURZQ0FBc2dCVUVRYWhCZklRY2dBUkFqSWdFZ0FTZ0NBRUVCYWpZQ0FDQUZRUUU2QUI4Z0JVRVFhaEN6QWdzZ0FDQUZRUkJxSUFjUU1TQUZRUjlxRUtJQklBVkJJR29rQUF0RkFRRi9Jd0JCSUdzaUFpUUFJQUlnQVJDU0F6WUNFQkRuQVNBQ1FSaHFJQUFnQVNBQ1FSQnFJQUpCQ0dvUTlCTWdBa0VZYWhCRUlRQWdBa0VnYWlRQUlBQkJCR29MWkFFQmZ5TUFRUkJySWdRa0FDQUVJQUUyQWd3Z0JDQUFLQUlBSUFSQkRHb1E4d3dDUUNBQ1FYOXFJZ0ZCQVVzTkFDQUJRUUZyQkVBZ0FDZ0NDQ0FFUVF4cUVQVVRJQU0yQWdBTUFRc2dCQ0FBS0FJRUlBUkJER29RM1FVTElBUkJFR29rQUF0SkFRRi9Jd0JCRUdzaUJDUUFJQVFnQWpZQ0NDQUVJQUUyQWd3Z0JDQUROZ0lFSUFBb0FnQWdCRUVNYWlnQ0FDQUVRUWhxS0FJQUlBUkJCR29vQWdBUTloTWdCRUVRYWlRQUN5VUJBbjhqQUVFUWF5SUFKQUFnQUVFSWFrRzlCQkF4S0FJQUlRRWdBRUVRYWlRQUlBRUxNUUVCZnlBQUtBSVFHaUFBS0FJSUlRSURRQ0FDRUxvSElBQWdBQ2dDQ0VFRWFpSUNOZ0lJSUFGQmYyb2lBUTBBQ3dzNkFRRi9Jd0JCRUdzaUFpUUFJQUFRR3hvRFFDQUFLQUlFRUxvSElBQWdBQ2dDQkVFRWFqWUNCQ0FCUVg5cUlnRU5BQXNnQWtFUWFpUUFDMmtCQW44akFFRWdheUlESkFBQ1FDQUFFQnNvQWdBZ0FDZ0NCR3RCQW5VZ0FVOEVRQ0FBSUFFUStoTU1BUXNnQUJBYklRSWdBMEVJYWlBQUlBQVFGaUFCYWhEYkJDQUFFQllnQWhEeUFpSUNJQUVRK1JNZ0FDQUNFTk1NSUFJUTBnd0xJQU5CSUdva0FBdFFBQUpBSUFFb0FnQkJBQkF2SUFBb0FnQW9BZ0JIRFFBZ0FTZ0NBQ2dDREVISEFFY05BQ0FCS0FJQVFRRVFMMEhzS1VjRVFDQUJLQUlBUVFFUUwwSHJLVWNOQVFzZ0FDZ0NCRUVCT2dBQUN3dFlBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNBQ0FFSUFFMkFnZ2dCRUVJYWlBRUVCNEVRQU5BSUFNZ0JDZ0NDQkQ4RXlBRVFRaHFFR1lhSUFSQkNHb2dCQkFlRFFBTEN5QUFJQU1wQWdBM0FnQWdCRUVRYWlRQUM2b0ZBUWQvSXdCQlFHb2lBU1FBSUFGQklEWUNFQ0FBUWR3Q2FpSURJQUZCRUdvUVB4QVdRUUZPQkVBRFFDQUJRU0EyQWhBQ1FDQURJQUZCRUdvUVB5QUVFQkVvQWdBaUFrRUFFQzlCNVNsSERRQWdBQ0FDUVFFUUwwRVZRUWdRalFJRVFDQUFRWWJ3RVVHQWlnUVFzZ0VnQUVIZ0loQWhDeUFBSUFKQkFSQXZRUlZCRUJDTkFrVUVRQ0FBSUFKQkFSQXZRUlpCRUJDTkFrVU5BUXNnQUVHYjhCRkJnSVlFRUxJQklBQkIwU0lRSVFzZ0FVRWdOZ0lRSUFSQkFXb2lCQ0FESUFGQkVHb1FQeEFXU0EwQUN3c2dBU0FBUWVnQWFpSURFQ1VRUURZQ09DQUJJQU1RSlJBeU5nSVFJQUZCT0dvZ0FVRVFhaEFlQkVBZ0FFR0VBbW9oQkFOQUlBRWdBU2dDT0NnQ0FDSUdFTzhFRUVBMkFqQWdBU0FHRU84RUVESTJBaEFnQVVFd2FpQUJRUkJxRUI0RVFBTkFJQUVnQVNnQ01DZ0NBQ0lDRUNVUVFEWUNFQ0FCSUFJUUpSQXlOZ0lvSUFGQkVHb2dBVUVvYWhBZUJFQURRQ0FBSUFFb0FoQW9BZ0FRakJRZ0FVRVFhaERPQVJvZ0FTQUNFQ1VRTWpZQ0tDQUJRUkJxSUFGQktHb1FIZzBBQ3dzZ0FTQUNFSTBGRUVBMkFpZ2dBU0FDRUkwRkVESTJBaEFnQVVFb2FpQUJRUkJxRUI0RVFBTkFJQUVnQVNnQ0tDZ0NBQ2dDQkNJRk5nSWtBa0FnQUNBQUlBVVEyZ1lRekJSRkRRQWdBVUVBT2dBaklBUVFRQ0VGSUFRUU1pRUhJQUVnQVVFamFqWUNIQ0FCSUFGQkpHbzJBaGdnQVNBQktRTVlOd01JSUFGQkVHb2dCU0FISUFGQkNHb1EvUk1nQVMwQUl3MEFJQUFnQVNnQ0pFSHNLVUYvRUhnTElBRkJLR29RemdFYUlBRWdBaENOQlJBeU5nSVFJQUZCS0dvZ0FVRVFhaEFlRFFBTEN5QUJRVEJxRU00QkdpQUJJQVlRN3dRUU1qWUNFQ0FCUVRCcUlBRkJFR29RSGcwQUN3c2dBVUU0YWhET0FSb2dBU0FERUNVUU1qWUNFQ0FCUVRocUlBRkJFR29RSGcwQUN3c2dBVUZBYXlRQUMxd0JBWDhqQUVFUWF5SURKQUFnQXlBQk5nSUFJQU1nQURZQ0NBSkFJQU5CQ0dvZ0F4QWVSUTBBQTBBZ0FpQURLQUlJRVBVTERRRWdBMEVJYWhCbUdpQURRUWhxSUFNUUhnMEFDd3NnQXlnQ0NDRUFJQU5CRUdva0FDQUFDM0FCQW44akFFRWdheUlDSkFBZ0FFRUlhaEQvQ3lBQVFjVExEellDREJENEV5RURJQUJCK1BBUk5nSU1JQUFnQXpZQ0NDQUNRUWhxUVF3UUppQUNJQUpCR0dvUTh3c1FrUUVpQXlnQ0FDQUJFTXdCSUFJUXpBRVE4UXNnQUNBREVGODJBZ0FnQXhEd0N5QUNRU0JxSkFBTGZRRUJmeU1BUVNCcklnTWtBQ0FESUFJMkFoQWdBeUFCTmdJWUlBQW9BZ0FoQVNBRElBQVFRRFlDQ0NBQklBTkJHR29nQTBFSWFoQ2ZCRUVDZEdvaEFTQURRUmhxSUFOQkVHb1FIZ1JBSUFBZ0FTQURRUkJxSUFOQkdHb1Fud1JCQW5ScUlBQW9BZ1FnQVJEdUV4RDNDd3NnQVJCaEdpQURRU0JxSkFBTG5BRUJBWDhqQUVFZ2F5SURKQUFnQXlBQ05nSUlJQU1nQVRZQ0VDQURJQUFnQVNBRFFRaHFFUDhUTmdJWUFrQWdBMEVZYWlBRFFSQnFFQjVGRFFBZ0F5QURLQUlZTmdJQUlBTVFaaUFEUVJCcUVCNUZEUUFEUUNBRFFRaHFJQU1vQWdBUTlRdEZCRUFnQXlnQ0dDQURLQUlBRVBRTElBTkJHR29RWmhvTElBTVFaaUFEUVJCcUVCNE5BQXNMSUFNb0FoZ2hBQ0FEUVNCcUpBQWdBQXRjQVFOL0l3QkJFR3NpQWlRQUlBSWdBVFlDRENBQVFRUnFFUGdMSUFCQkhHb2lBeEQ0QTBFc0VDWkIrUUVRdHdFaUJDQUJFTUlDRURrZ0FDQUNRUWhxSUFRUU9pSUFFSHdnQUJBK0lBTWdBa0VNYWhCSElBSkJFR29rQUFzbkFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCRDdEQkF4S0FJQUlRQWdBVUVRYWlRQUlBQUxQd0VCZnlNQVFSQnJJZ0VrQUNBQVFRUnFFUGdMSUFCQkhHb1ErQU1nQUNBQlFRaHFRU3dRSmtIL0FSQzNBUkE2SWdBUWZDQUFFRDRnQVVFUWFpUUFDKzhHQVFoL0l3QkIwQUZySWdFa0FDQUJRYmdCYWhDV0FTRUlJQUZCb0FGcUVKWUJJUUlnQVVHSUFXb1FsZ0VoQkNBQlFmQUFhaENXQVNFRklBRWdBRUhvQUdvaUJoQWxFRUEyQW1nZ0FTQUdFQ1VRTWpZQ0tDQUJRZWdBYWlBQlFTaHFFQjRFUUFOQUlBRW9BbWdvQWdBaUF4Q29EQ0VISUFFZ0FqWUNFQ0FCSUFRMkFrd2dBU0FJTmdKSUlBRWdBallDVUNBQklBRXBBMGczQXdnZ0J3Si9JQUZCMkFCcUlnY2dBVUVJYWhDQUZDQUhDeENnRENBSEVLd0NJQUVnQXhEdkJCQkFOZ0pBSUFFZ0F4RHZCQkF5TmdJb0lBRkJRR3NnQVVFb2FoQWVCRUFEUUNBQklBRkJRR3NvQWdBb0FnQTJBandDUUFKQUlBUWdBVUU4YWhEMEJFVUVRQ0FDSUFGQlBHb1E3QXhGRFFFTElBRWdBU2dDUEJBbEVFQTJBamdnQVVFNGFoQm1HaUFCSUFFb0Fqd1FKUkF5TmdJb0lBRkJPR29nQVVFb2FoQWVSUTBCQTBBZ0FTQUJLQUk0S0FJQUtBSUVOZ0kwSUFGQktHb2dCU0FCUVRScUVQa0xJQUZCT0dvUVpob2dBU0FCS0FJOEVDVVFNallDS0NBQlFUaHFJQUZCS0dvUUhnMEFDd3dCQ3lBSUlBRkJQR29ROUFRTkFDQUJJQUVvQWp3UUpSQkFOZ0k0SUFFZ0FTZ0NQQkFsRURJMkFpZ2dBVUU0YWlBQlFTaHFFQjVGRFFBRFFDQUJJQUVvQWpnb0FnQW9BZ1EyQWpRZ0FVRW9haUFGSUFGQk5Hb1ErUXNnQVVFNGFoQm1HaUFCSUFFb0Fqd1FKUkF5TmdJb0lBRkJPR29nQVVFb2FoQWVEUUFMQ3lBQlFVQnJFTTRCR2lBQklBTVE3d1FRTWpZQ0tDQUJRVUJySUFGQktHb1FIZzBBQ3dzZ0FVSG9BR29RemdFYUlBRWdCaEFsRURJMkFpZ2dBVUhvQUdvZ0FVRW9haEFlRFFBTEN5QUJJQVFReXdnMkFpZ2dBUkNGQnpZQ2FDQUJRU2hxSUFGQjZBQnFFQjRFUUFOQUlBRkJLR29RUkNnQ0FCQ0ZGQ0FCUVNocUVJZ0ZJQUVRaFFjMkFtZ2dBVUVvYWlBQlFlZ0FhaEFlRFFBTEN5QUJJQUlRaEJRMkFpZ2dBUkNGQkRZQ2FDQUJRU2hxSUFGQjZBQnFFSWdCQkVBRFFDQUJRU2hxRUVRb0FnQWdBVUVvYWhCRUtBSUVFSU1VSUFGQktHb1FpQVVnQVJDRkJEWUNhQ0FCUVNocUlBRkI2QUJxRUlnQkRRQUxDeUFCSUFCQmhBSnFJZ0FRUUNBQUVESWdCUkNDRkRZQ0tDQUJRU0JxSUFGQktHb1FaeUVESUFFZ0FCQXlOZ0pvSUFGQkdHb2dBVUhvQUdvUVp5RUdJQUFnQXlnQ0FDQUdLQUlBRUlFVUlBVVF3QVFnQkJEQUJDQUNFSVVGR2lBSUVNQUVJQUZCMEFGcUpBQUxVZ0FDUUNBQktBSUFLQUlNUWNjQVJ3MEFJQUVvQWdCQkFCQXZJQUFvQWdBb0FnQkhEUUFnQVNnQ0FFRUJFQzlCQmtjTkFDQUJLQUlBUVFJUUx5RUJJQUFvQWdRaUFDQUJJQUFvQWdCeU5nSUFDd3QxQUFKQUlBRW9BZ0FvQWd4QnlBQkhEUUFnQVNnQ0FFRUFFQzhnQUNnQ0FDZ0NBRWNOQUNBQktBSUFRUUVRTHlBQUtBSUVLQUlBUncwQUlBRW9BZ0JCQWhBdlFTTkhCRUFnQVNnQ0FFRUNFQzlCQjBjTkFRc2dBU2dDQUVFREVDOGhBU0FBS0FJSUlnQWdBU0FBS0FJQWNqWUNBQXNMTHdFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFCQkhHb2dBUkNhQlNBQ1FRaHFFSUVKSVFBZ0FrRVFhaVFBSUFBTFdBRUJmeU1BUVJCcklnUWtBQ0FFSUFJMkFnQWdCQ0FCTmdJSUlBUkJDR29nQkJBZUJFQURRQ0FESUFRb0FnZ1FoeFFnQkVFSWFoQm1HaUFFUVFocUlBUVFIZzBBQ3dzZ0FDQURLUUlBTndJQUlBUkJFR29rQUF0aUFRRi9Jd0JCRUdzaUJDUUFJQVFnQWpZQ0FDQUVJQUUyQWdnZ0JFRUlhaUFFRUI0RVFBTkFJQU1nQkNnQ0NCQ0lGQ0FFUVFocUVHWWFJQVJCQ0dvZ0JCQWVEUUFMQ3lBQUlBTXBBZ0EzQWdBZ0FDQURLQUlJTmdJSUlBUkJFR29rQUF1OEJRRUlmeU1BUWRBQWF5SUNKQUFDUUFKQUFrQWdBU2dDRENJRFFkRUJUQVJBSUFOQm1YOXFRUVZKRFFFZ0EwRkRha0VDU1EwQ0lBTkJERWNOQXlBQlFRRVFMMEcwZjJwQkFrc05BeUFBUVRRUUlRd0RDeUFEUWE1K2FrRUdUd1JBSUFOQnNDbEhEUU1nQUVIajd4RVFRaUFBUWJFcEVDRU1Bd3NnQUVFekVDRU1BZ3NnQUVFeUVDRU1BUXNnQUVIb0FHb2lCQ0FCUVFBUUx4QXZJZ1lvQWd4QndRQkhEUUFnQWlBRUlBWkJBQkF2RUM4b0FnZ2lBellDVENBRUlBTVFMeUlEUVFBUUwwSGxLVWNOQUNBQ0lBTkJBUkF2SWdNMkFrd2dCQ0FERUM4aEF5QUNRUUEyQWtnQ1FDQUdFTHdDUVFKSURRQWdBRUdFQW1vaEIwRUJJUWdEUUNBRUlBWWdDQkF2RUM4aEJRSi9JQU1vQWd4QkhrWUVRQ0FDSUFWQkFCQXZOZ0pFSUFjUVFDRUZJQWNRTWlFSklBSWdBa0hJQUdvMkFoQWdBaUFDUWNRQWFqWUNQQ0FDSUFKQnpBQnFOZ0k0SUFJZ0Fpa0RPRGNEQ0NBQ0lBSkJ5QUJxTmdKQUlBSkJLR29nQlNBSklBSkJDR29RaXhRZ0FpQURJQUlvQWtRUUx5SUROZ0pNSUFRZ0F4QXZEQUVMSUFNb0FneEJIRWNFUUNBREtBSU1RUjFIRFFNTElBY1FRQ0VGSUFjUU1pRUpJQUlnQWtISUFHbzJBaVFnQWlBQ1Fjd0FhallDSUNBQ0lBSXBBeUEzQXhnZ0FrRW9haUFGSUFrZ0FrRVlhaENLRkNBQ0lBTkJBQkF2SWdNMkFrd2dCQ0FERUM4TElRTWdDRUVCYWlJSUlBWVF2QUpJRFFBTEN5QUJRUUpCQVNBQktBSU1RVDVHR3hBdkdpQUNJQUZCQTBFQ0lBRW9BZ3hCUGtZYklnTVFMeUFDS0FKSWNpSUVRUUFnQkd0eElnUTJBa2dnQVVFUWFpQURFQkVnQkRZQ0FBc2dBU2dDQ0FSQUlBQWdBU0FCS0FJSUVQc0xDMEVBSVFNZ0FSQzhBa0VBU2dSQUEwQUNRQ0FCSUFNUWlSUkZEUUFnQUNBQklBTVFMeEJpUlEwQUlBQWdBU0FBSUFFZ0F4QXZFR0lRK3dzTElBTkJBV29pQXlBQkVMd0NTQTBBQ3dzZ0FrSFFBR29rQUF2eEFnRUVmeU1BUVRCcklnRWtBQ0FBRUY0aEF3SkFJQUFvQWhCQmdBSlBCRUFnQUNBQUtBSVFRWUIrYWpZQ0VDQUJJQUFvQWdRb0FnQTJBaGdnQUJETUF5QUFJQUZCR0dvUXpRTU1BUXNDUUNBQUVOQUJJQUFRaUFOSkJFQWdBQkRoQ0VVTkFTQUJRWUFnRUNZMkFoZ2dBQ0FCUVJocUVNMEREQUlMSUFFZ0FCQ0lBMEVCZERZQ0NDQUJRUUUyQWdBZ0FVRVlhaUFCUVFocUlBRVFVaWdDQUNBQUVOQUJJQUFRSXhEeUFpRUNJQUVnQVVFSWFrR0FJQkFtSUFFZ0EwR0FBaENaQVJDUkFTSUVLQUlBTmdJQUlBSWdBUkRnQ0NBRUVGOGFJQUFvQWdnaUF5QUFLQUlFUndSQUEwQWdBaUFEUVh4cUlnTVEzd2dnQXlBQUtBSUVSdzBBQ3dzZ0FDQUNFQzRnQUVFRWFpQUNRUVJxRUM0Z0FFRUlhaUFDUVFocUVDNGdBQkFqSUFJUUl4QXVJQVFRMXdZZ0FoQ1JBd3dCQ3lBQlFZQWdFQ1kyQWhnZ0FDQUJRUmhxRU4wSUlBRWdBQ2dDQkNnQ0FEWUNHQ0FBRU13RElBQWdBVUVZYWhETkF3c2dBVUV3YWlRQUMyQUJBbjhnQUNnQ0FFSC8vLy8vQjNGRkJFQkJBQThMSUFBUWx3d2lBVUdCZjBZRVFDQUFFSllJSWdCQmdJQ0FBbkVFUUVHQmZ3OExRWUYvSVFFRFFDQUJRWDlxSVFFZ0FFR0FnSUFCY1NFQ0lBQkJBWFFoQUNBQ1JRMEFDd3NnQVFzdkFDQUNRUUE2QUFBZ0FDQUJhaUlCUVlDQWdBUnhCSDhnQWtFQk9nQUFJQUZCQVhaQi8vLy8vUWR4QlNBQkN3dEFBUUovSUFBUWpoUWhBU0FBRUpZSUlRQWdBVUdDZjBnRVFBTkFJQUJCQVhRaEFDQUJRWUYvU0NFQ0lBRkJBV29oQVNBQ0RRQUxDeUFBUWYvLy93TnhDeUVCQVg4akFFRVFheUlCSkFBZ0FTQUFOZ0lJSUFFb0FnZ2FJQUZCRUdva0FBdHlBUUovSUFCQkJHb2lBMEVBRUJFb0FnQWdBUkNlQWlBQVFTaHFJZ0FRRmtFQVNnUkFBMEFnQUNBQ0VCRW9BZ0FnQVJDZUFpQUNRUUZxSWdJZ0FCQVdTQTBBQ3d0QkFTRUNJQU1RRmtFQlNnUkFBMEFnQXlBQ0VCRW9BZ0FnQVJDZUFpQUNRUUZxSWdJZ0F4QVdTQTBBQ3dzTE53RUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnQWdBeUFCTmdJSUlBQWdBMEVJYWlnQ0FCQzZDU0FES0FJQUVKRVVJQU5CRUdva0FBdExBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNDQ0FFSUFFMkFnd2dCQ0FETmdJRUlBUkJDR29vQWdBYUlBUkJCR29vQWdBYUlBUkJER29vQWdBZ0FDZ0NBQkNTRkNBRVFSQnFKQUFMSlFFQ2Z5TUFRUkJySWdBa0FDQUFRUWhxUWJRRUVERW9BZ0FoQVNBQVFSQnFKQUFnQVF0REFDTUFRUkJySWdJa0FDQUFRUWhxRVA4TElBQkJ4TXNQTmdJTUlBQVFsUlEyQWdnZ0FFSFk3aEUyQWd3Z0FDQUJFTXdCSUFJUXpBRVFreFFnQWtFUWFpUUFDeWtCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lJSUFBZ0FrRUlhaUFDRUpZVUlBSkJFR29rQUNBQUN3a0FJQUFRZ0F3UUtnc0pBQ0FBRUlFTUVDb0xPd0VCZnlBQUlBQW9BZ1JCRUdvaUFUWUNCQ0FCSUFBb0FnQWlBU2dDQUd0QmdDQkdCRUFnQUNBQlFRUnFOZ0lBSUFBZ0FTZ0NCRFlDQkFzTE53QWdBQ0FCS0FJRUlBRW9BaEJCQm5aQi9QLy9IM0ZxSWdBZ0FSQ1BCUVIvUVFBRklBQW9BZ0FnQVMwQUVFRUVkR29MRUprQkdndWxBUUVDZnlNQVFSQnJJZ0VrQUNBQUVGNGFJQUZCQ0dvZ0FCQ2JGQ0FCSUFBUWdnd2dBVUVJYWlBQkVKQUZCRUFEUUNBQktBSU1HaUFCUVFocUVKb1VJQUZCQ0dvZ0FSQ1FCUTBBQ3dzZ0FCQmVRUUEyQWdBZ0FCRFFBVUVDU3dSQUEwQWdBQ2dDQkNnQ0FCQXFJQUFRekFNZ0FCRFFBVUVDU3cwQUN3c2dBQkRRQVVGL2FpSUNRUUZOQkVBZ0FFR0FBVUdBQWlBQ1FRRnJHellDRUFzZ0FVRVFhaVFBQ3drQUlBQVFuUWdRS2d0NUFRSi9Jd0JCRUdzaUJpUUFRU3dRSmtIMkFSQzNBU0lGSUFFUXdnSVFPU0FGSUFJUXdnSVFPU0FGSUFNUVRFRUFJUU1nQkJBV1FRQktCRUFEUUNBRklBUWdBeEFSS0FJQUVFd2dBMEVCYWlJRElBUVFGa2dOQUFzTElBQW9Bb1FCSUFaQkNHb2dCUkE2SWdBUWZDQUFFRDRnQmtFUWFpUUFDNE1CQVFOL0l3QkJRR29pQWlRQUlBQkJDR29nQVJDZUFpQUFRVFJxSWdNUUZrRUFTZ1JBQTBBZ0F5QUVFQkVvQWdBZ0FSQ2VBaUFFUVFGcUlnUWdBeEFXU0EwQUN3c2dBRUZBYTBFQUVCRW9BZ0FnQWtFd2FpQUJFSmNVSWdBUW9Bd2dBQkNzQWlBQ1FRQkJBRUU0RUZFaUFDQUJFSjRDSUFBUS9RSWFJQUpCUUdza0FBc3lBUUYvSUFCQkJHb2lBQkFXUVFCS0JFQURRQ0FBSUFJUUVTZ0NBQ0FCRUo4VUlBSkJBV29pQWlBQUVCWklEUUFMQ3d0Y0FRTi9Jd0JCTUdzaUFpUUFJQUJCeEFCcUlnTVFGa0VCVGdSQVFRQWhBQU5BSUFKQnlnSVF0d0VpQkNBRElBQVFFU2dDQUJEK0FpQUVJQUVRbmdJZ0JCRDlBaG9nQUVFQmFpSUFJQU1RRmtnTkFBc0xJQUpCTUdva0FBdUdBUUVDZnlNQVFSQnJJZ0lrQUNBQUlBQW9BaEFnQUVFVWFpQUJFSU1NSUFJZ0FFRzBBMm9pQXhEUkFqWUNDQ0FDSUFNUWZqWUNBQ0FDUVFocUlBSVFpQUVFUUFOQUlBQWdBa0VJYWhCWEtBSUFJQUpCQ0dvUVZ5Z0NCQ0FCRUlNTUlBSkJDR29RcVFFZ0FpQURFSDQyQWdBZ0FrRUlhaUFDRUlnQkRRQUxDeUFDUVJCcUpBQUxpd0VCQTM4akFFRVFheUlDSkFBZ0FpQUFFQnNRL0FzZ0FpZ0NBRUVJYWlJRElBRVFzQU1nQTBFUWFpQUJRUkJxRUxBRElBTWdBU2tDSURjQ0lDQUNLQUlBSVFFZ0FpZ0NBQ0lESUFBMkFnQWdBU0FBS0FJRUlnUTJBZ1FnQkNBQk5nSUFJQUFnQXpZQ0JDQUFFQnNpQUNBQUtBSUFRUUZxTmdJQUlBSVFYeG9nQWhENkN5QUNRUkJxSkFBTGxnUUJCWDhqQUVIZ0FHc2lBaVFBSUFGQjNPMFJFRWNnQVNBQVFRUnFFRWNnQWlBQUtBSmtOZ0l3SUFFZ0FrRXdhaEJCSUFJZ0FDZ0NpQUZCQVdvMkFqQWdBU0FDUVRCcUVFRWdBa0VBTmdJd0lBRWdBa0V3YWhCQklBSWdBRUhZQUdvaUF4RG5BellDQUNBQ0lBTVFnUUUyQWpBZ0FpQUNRVEJxRUI0RVFBTkFJQUpCTUdwQkFFRUFRUkVRVVNJRUlBSVFWeWdDQUJCTUlBUWdBUkNlQWlBRUVQMENHaUFDRUtrQklBSWdBeENCQVRZQ01DQUNJQUpCTUdvUUhnMEFDd3NnQWlBQVFTeHFJZ01RNXdNMkFnQWdBaUFERUlFQk5nSXdJQUlnQWtFd2FoQWVCRUFEUUNBQ1FUQnFRUUJCQUVFS0VGRWlCQ0FDRUZjUUV4RCtBaUFFSUFFUW5nSWdCQkQ5QWhvZ0FoQ3BBU0FDSUFNUWdRRTJBakFnQWlBQ1FUQnFFQjROQUFzTElBRWdBRUhVQVdvUTd3TWdBa0V3YWtFQVFRQkJEaEJSSWdNZ0FDZ0NVQkJNSUFNZ0FDZ0NWQkJNSUFNZ0FSQ2VBaUFCSUFCQjRBRnFFTzhESUFFZ0FFSHNBV29RN3dNZ0FTQUFRY2dCYWhEdkF5QUFJQUVRb2hRZ0FFRTRhaUlGRUJaQkFVNEVRRUVBSVFRRFFDQUNRUUJCQUVFRUVGRWlCaUFGSUFRUUVTZ0NBQkQrQWlBR0lBRVFuZ0lnQmhEOUFob2dCRUVCYWlJRUlBVVFGa2dOQUFzTElBRWdBRUg0QVdvUTd3TWdBQ0FCRUtFVUlBRWdBRUdFQW1vUTd3TWdBU0FBUVpBQ2FoRHZBeUFCSUFCQm5BSnFFTzhESUFCQjZBQnFJQUVRb0JRZ0F4RDlBaG9nQWtIZ0FHb2tBQXVxQVFFRWZ5TUFRU0JySWdJa0FBSkFJQUFvQXJRQlJRMEFJQUJCcUFGcUlnRVFGa0VDU1EwQUlBSkJFR29RTUNFRElBRVFGa0VCVGdSQUEwQWdBaUFBSUFFZ0JCQVJLQUlBUVFBUWREWUNEQ0FESUFKQkRHb1FRU0FFUVFGcUlnUWdBUkFXU0EwQUN3c2dBQ0FBSUFBZ0FDQUFRU0FReVFFZ0FSQVdFTEVCSUFOQkFCRDFBeUFBUVNBUXlRRWdBQ2dDdEFFUWtRdzJBclFCSUFFUStBTWdBeEEyQ3lBQ1FTQnFKQUFMV2dFQ2Z3SkFJQUFnQUNnQ3VBRVF5QU1nQUVHb0FXb2lBUkFXU2cwQUlBRVFGZ1JBQTBBZ0FpQUJJQUlRRVNnQ0FFY05BaUFDUVFGcUlnSWdBUkFXU1EwQUN3c2dBUkQ0QXlBQUtBSzBBUTBBSUFCQkFEWUN1QUVMQ3kwQkFYOGdBQkFXSWdGQkFFa0VRQ0FBUVFBZ0FXc1F2Z3dQQ3lBQlFRQkxCRUFnQUNBQUtBSUFFSllIQ3d0Y0FRRi9JQUFRWGhvZ0FCQmVJUUVnQUNnQ0JDQUFLQUlRSUFFb0FnQnFRWDlxUVFaMlFmei8veDl4YWlnQ0FCb2dBQkJlSWdFZ0FTZ0NBRUYvYWpZQ0FDQUFFUDBMUVlBRVR3UkFJQUFRM0Fnb0FnQVFLaUFBRU5zSUN3dFBBUUovSXdCQkVHc2lBaVFBSUFBUVhpRURJQUFRL1F0RkJFQWdBQkNORkFzZ0FrRUlhaUFBRUlJTUlBTWdBaWdDRENBQkVQSUlJQUFRWGlJQUlBQW9BZ0JCQVdvMkFnQWdBa0VRYWlRQUMyRUJCWDhqQUVFUWF5SUJKQUFnQUVHSUEyb2lBZ0ovSUFBUTFnVWhBeUFBRU5ZRklRUWdBQkRXQlNFRklBRWdBQkRXQlRZQ0RDQUJJQVUyQWdnZ0FTQUVOZ0lFSUFFZ0F6WUNBQ0FCQ3hDcEZDQUNFSXdJSVFBZ0FVRVFhaVFBSUFBTFJBRUJmeUFBS0FLRUFSQ1VDRVVFUUNBQUVJMElDeUFBUWZBQ2FpSUJFSlVGS0FJQUtBSTBJQUVRbFFVb0FnQVE4d01nQUNBQkVKVUZLQUlBRU9VQklBRVFudzBMUHdBQ1FDQUNRUUZJRFFBZ0FDZ0NoQUVRbEFnTkFDQUFJQUVnQWhBUktBSUFFTndDQ3lBQklBSVFFU2dDQUNJQktBSTBJQUVROHdNZ0FDQUJFT1VCQzdJQ0FRUi9Jd0JCRUdzaUNTUUFJQUFvQW9RQktBSTBJUW9nQTBFQlRnUkFBMEJCUEJBbUlnc2dBQkJWSUFvUTlBTWFJQWtnQ3pZQ0RDQUhJQWxCREdvUVFTQUlRUUZxSWdnZ0EwY05BQXNMUVR3UUppSUlJQUFRVlNBS0VQUURJUU1nQ1NBSU5nSUlJQUFnQXlBQ0VJZ01RUUFoQ0VFc0VDWkJBRUVBUWZzQkVGRWlBaUFCRURrZ0FnSi9JQVpCZjBvRVFDQUhJQVlRRVNnQ0FDRURDeUFEQ3hEQ0FoQTVJQU1nQUNnQ2hBRVExd1VnQkJBV1FRQktCRUFEUUNBQ0lBUWdDQkFSS0FJQUVFd2dBaUFISUFVZ0NCQVJLQUlBRUJFb0FnQVF3Z0lRT1NBSElBVWdDQkFSS0FJQUVCRW9BZ0FnQUNnQ2hBRVExd1VnQ0VFQmFpSUlJQVFRRmtnTkFBc0xJQUFvQW9RQklBa2dBaEE2SWdFUWZDQUJFRDRnQUVId0Ftb2dDVUVJYWhDaERTQUpRUkJxSkFBTDNBa0JDWDhqQUVId0FHc2lCQ1FBSUFBZ0F4QzdBaUVMSUFRZ0FDQURFTWdESWdVMkFtd2dCQ0FBSUFNUXN3d2lDVFlDYUNBQVFlZ0FhaUFMRUM5QkFCQXZJUVlDUUFKQUlBQWdBa0VBRUJFb0FnQVFvZ05GRFFBZ0FDQUNRUUFRRVNnQ0FCRElBU0FGU0EwQUlBQWdBa0VBRUJFb0FnQVFyZ1FnQ1VnTkFDQUNRUUFRRVNnQ0FDRUdJQUFnQXhDd0FTRUxJQUFnQUNBR0VHSVFzQUVoQ1NBRUVEQWhDQ0FFS0FKb1FRRk9CRUJCQUNFRkEwQWdCQ0FGTmdKWUlBZ2dCRUhZQUdvUVFTQUZRUUZxSWdVZ0JDZ0NhRWdOQUFzTElBUkIyQUJxRURBaEFpQUVLQUpzUVFGT0JFQURRQ0FFUWNnQWFoQXdJUVVnQkNBSE5nSkVJQVVnQkVIRUFHb1FRU0FFSUFBZ0JpQUpJQVVRK0FJaUNqWUNSQ0FBSUFvZ0FSQ0dBUm9DUUNBRUtBSm9JQUFnQmhDdUJFY0VRQ0FFSUFBZ0FTQUxJQVFvQWtRZ0NCRFRCallDUUNBQ0lBUkJRR3NRUVF3QkN5QUNJQVJCeEFCcUVFY0xJQVVRTmlBSFFRRnFJZ2NnQkNnQ2JFZ05BQXNMSUFBZ0FDQURJQUlRblFNZ0FSQ0dBU0VGSUFJUU5pQUlFRFlNQVFzQ2Z5QUdRY0FBUmdSQUlBQkVBQUFBQUFBQThEOUJBQkREQXlFR0lBQkVBQUFBQUFBQUFBQkJBQkREQXd3QkN5QUFRd0FBZ0Q5QkFCRDVBaUVHSUFCREFBQUFBRUVBRVBrQ0N5RUlBMEJCQUNFRkEwQWdCQ0FIUVFSMGFpQUZRUUowYWlBR0lBZ2dCU0FIUmhzMkFnQWdCVUVCYWlJRlFRUkhEUUFMSUFkQkFXb2lCMEVFUncwQUN3SkFBa0FnQWhBV1FRRkhEUUJCQUNFRklBQWdBa0VBRUJFb0FnQVErQVJGRFFBRFFDQUVJQVZCQkhScUlBVkJBblJxSUFKQkFCQVJLQUlBTmdJQUlBVkJBV29pQlVFRVJ3MEFDd3dCQzBFQUlRWWdBQ0FDUVFBUUVTZ0NBQkNpQTBVRVFDQUNFQlpCQUV3TkFVRUFJUVZCQUNFSEEwQWdBaUFHRUJFb0FnQWhDa0VBSVFnZ0FDQUNJQVlRRVNnQ0FCRElBVUVBU2dSQUEwQWdBQ0FDSUFZUUVTZ0NBQkRJQVVFQ1RnUkFJQUFnQUNBQ0lBWVFFU2dDQUNBTElBZ1Fyd0VpQ2lBQkVJWUJHZ3NnQkNBRlFRUjBhaUFIUVFKMGFpQUtOZ0lBUVFBZ0IwRUJhaUlISUFjZ0NVWWlEQnNoQnlBRklBeHFJUVVnQ0VFQmFpSUlJQUFnQWlBR0VCRW9BZ0FReUFGSURRQUxDeUFHUVFGcUlnWWdBaEFXU0EwQUN3d0JDMEVBSVFnZ0JDQUFJQUpCQUJBUktBSUFJZ1lReUFFMkFsZ2dCRUhzQUdvZ0JFSFlBR29RL2dFb0FnQWhCeUFFSUFBZ0JoQ3VCRFlDV0NBRVFlZ0FhaUFFUWRnQWFoRCtBU0VDSUFkQkFVZ05BQ0FDS0FJQUlRa0RRQ0FFUWRnQWFoQXdJUUlnQkNBSU5nSklJQUlnQkVISUFHb1FRVUVBSVFVZ0NVRUFTZ1JBQTBBZ0JDQUZOZ0pJSUFJZ0JFSElBR29RUVNBRUlBaEJCSFJxSUFWQkFuUnFJZ29nQUNBR0lBc2dBaEQ0QWpZQ0FDQUNFSkVKSUFBZ0NpZ0NBQ0FCRUlZQkdpQUZRUUZxSWdVZ0NVY05BQXNMSUFJUU5pQUlRUUZxSWdnZ0IwY05BQXNMSUFBZ0F4Q3dBU0VJSUFSQjJBQnFFREFoQWlBRUtBSnNRUUZPQkVCQkFDRUdBMEFnQkVISUFHb1FNQ0VIUVFBaEJTQUVLQUpvUVFCS0JFQURRQ0FISUFRZ0JrRUVkR29nQlVFQ2RHb1FSeUFGUVFGcUlnVWdCQ2dDYUVnTkFBc0xJQVFnQUNBSUlBY1FuUU1pQlRZQ1JDQUFJQVVnQVJDR0FSb2dBaUFFUWNRQWFoQkhJQWNRTmlBR1FRRnFJZ1lnQkNnQ2JFZ05BQXNMSUFBZ0FDQURJQUlRblFNZ0FSQ0dBU0VGSUFJUU5nc2dCRUh3QUdva0FDQUZDOWdCQVFoL0l3QkJJR3NpQXlRQUlBQW9BZ0FpQnlBQkVNZ0JJUUlnQnlBQkVLNEVJUVFnQUNnQ0NDZ0NBQ0lGSUFBb0FnUW9BZ0FpQm1zZ0FpQUViQ0lDSUFJZ0Jtb2dCVXNiSWdrRVFFRUFJUVZCQUNFQ1FRQWhCZ05BSUFjZ0FSQ3VCQ0VJSUFOQkVHb1FNQ0VFSUFNZ0JpQUNJQWhPYWlJR05nSU1JQVFnQTBFTWFoQkJJQU1nQWtFQUlBSWdDRWdiSWdJMkFnd2dCQ0FEUVF4cUVFRWdBQ2dDRENBSElBRWdBQ2dDRUNnQ0FDQUVFUGdDRUpBSUlBUVFOaUFDUVFGcUlRSWdCVUVCYWlJRklBbEpEUUFMQ3lBRFFTQnFKQUFMblFFQkJYOGpBRUVRYXlJREpBQWdBQ2dDQUNJR0lBRVF5QUVoQWlBQUtBSUlLQUlBSVFRZ0FDZ0NCQ2dDQUNFRklBTkJBRFlDRENBRUlBVnJJQUlnQWlBRmFpQUVTeHNpQkFSQUEwQWdBeEF3SWdJZ0EwRU1haEJISUFBb0Fnd2dCaUFBS0FJUUtBSUFJQUFvQWhRb0FnQWdBU0FDRU5NR0VKQUlJQUlRTmlBRElBTW9BZ3hCQVdvaUFqWUNEQ0FDSUFSSkRRQUxDeUFEUVJCcUpBQUxjd0VCZnlNQVFTQnJJZ01rQUNBRElBRTJBaEFnQXlBQU5nSVlJQU1nQWpZQ0NFRUFJUUlDUUNBRFFSaHFJQU5CRUdvUUhrVU5BQU5BSUFNb0FnZ2dBeWdDR0NnQ0FCQ09EQVJBUVFFaEFnd0NDeUFEUVJocUVHWWFJQU5CR0dvZ0EwRVFhaEFlRFFBTEN5QURRU0JxSkFBZ0FndVhBZ0VCZnlNQVFTQnJJZ1VrQUFKL0FrQWdCQkFXUVFGSERRQWdBQ0FERU1nQlFRRkhEUUFnQUNBRElBSWdBU0FFS0FJQUtBSUFFSklNREFFTFFTd1FKaUFBRUZVZ0FVSFBBQkJSSWdFZ0FoQTVJQUVnQXhBNVFRQWhBeUFBSUFJUXlBRWlBa0VBU2dSQUEwQWdCVUVRYWlBRFFRSjBhaUFETmdJQUlBTkJBV29pQXlBQ1J3MEFDd3RCQUNFRElBUVFGa0VBU2dSQUEwQWdCVUVRYWlBRUlBTVFFU2dDQUVFQ2RHb2dBaUFEYWpZQ0FDQURRUUZxSWdNZ0JCQVdTQTBBQ3d0QkFDRURJQUpCQUVvRVFBTkFJQUVnQlVFUWFpQURRUUowYWlnQ0FCQk1JQU5CQVdvaUF5QUNSdzBBQ3dzZ0FDZ0NoQUVnQlVFSWFpQUJFRG9pQUJCOElBQVFQaUFCS0FJRUN5RUFJQVZCSUdva0FDQUFDM29CQW44akFFRVFheUlFSkFCQkxCQW1JQUFRVlNBQktBSVFRVGtRVVNJRElBRW9BZ3dRT1VFQUlRRWdBaEFXUVFCS0JFQURRQ0FESUFJZ0FSQVJLQUlBRURrZ0FVRUJhaUlCSUFJUUZrZ05BQXNMSUFBb0FvUUJJQVJCQ0dvZ0F4QTZJZ0FRZkNBQUVENGdBeWdDQkNFQUlBUkJFR29rQUNBQUMzTUJBWDhqQUVFUWF5SUVKQUFnQWtVRVFDQUFJQUVnQXlBRVFlNkNDUkFpSWdJUWpRd2dBaEFaR2lBQUlBRWdBeUFFUWZxQ0NSQWlJZ0lRalF3Z0FoQVpHZ3NnQVNnQ0FDSUNRUUlnQWlnQ0FDZ0N1QUVSQVFBZ0FDQUFJQUFvQWtBZ0FTZ0NBQkNqQXpZQ1FDQUVRUkJxSkFBTFBnRUNmeU1BUVNCcklnRWtBQ0FBQW44Z0FVRUFFTWdDSUFGQnpJY0pOZ0lBSUFFaUFnc2dBQ2dDQUNnQ0NCRUJBQ0FDRUpvQ0dpQUJRU0JxSkFBTGxRRUJBbjhqQUVFd2F5SURKQUFnQXlBQk5nSXNJQUJCSUJESkFTRUNBa0FnQUMwQWtBRUVRQ0FBUWZJcElBSWdBMEVnYWtFQklBTkJMR29ReFFNaUFTQURRUkJxRURBaUFoQ3JCQ0VBSUFJUU5pQUJFRFlNQVF0QkxCQW1JQUFRVlNBQ1FmSXBFRkVpQWlBQkVEa2dBQ2dDaEFFZ0EwRUlhaUFDRURvaUFCQjhJQUFRUGlBQ0tBSUVJUUFMSUFOQk1Hb2tBQ0FBQzFnQkFuOGpBRUVRYXlJRUpBQWdBRUVnRU1rQklRTkJMQkFtSUFBUVZTQURRY1FBRUZFaUF5QUJFRGtnQXlBQ0VFd2dBQ2dDaEFFZ0JFRUlhaUFERURvaUFCQjhJQUFRUGlBREtBSUVJUUFnQkVFUWFpUUFJQUFMMUFFQkJYOGpBRUVRYXlJRkpBQWdBQ0FBSUFJUVloQ3dBU0VFSUFNUUZrRUFTZ1JBQTBBZ0FDQUVFTjRHSVFnZ0F5QUdFQkVvQWdBaEJ5QUFJQVFnQ0FSL0lBQWdCeERQQVFVZ0J3c1FuZ01oQkNBR1FRRnFJZ1lnQXhBV1NBMEFDd3NnQUNBQklBUVEyd1VoQVVFc0VDWWdBQkJWSUFGQndRQVFVU0lCSUFJUU9VRUFJUVFnQXhBV1FRQktCRUFEUUNBQklBTWdCQkFSS0FJQUVEa2dCRUVCYWlJRUlBTVFGa2dOQUFzTElBQW9Bb1FCSUFWQkNHb2dBUkE2SWdBUWZDQUFFRDRnQVNnQ0JDRUFJQVZCRUdva0FDQUFDMFlCQW44akFFRVFheUlDSkFBZ0FTZ0NBQ0VESUFCQlFHdEJBQkFSS0FJQVFTaHFJQUpCQ0dvZ0FSRFJEQ0lCRUgwZ0FSQStJQUFvQWdRZ0F4Q01BU0FDUVJCcUpBQUxUUUFDUUNBQlJRMEFBa0FnQVNBQktBSUFLQUlZRVFBQUlnSkZEUUFnQWlnQ2FBMEFJQUpCQVNBQ0tBSUFLQUs0QVJFQkFBc2dBQkNxRmlBQUtBTGdCVUVCUncwQUlBRVF0UlFMUVFFTE9BRUNmeU1BUVJCcklnRWtBQ0FBS0FLRUFTQUJRUWhxUVN3UUprSDhBUkMzQVJBNklnSVFmQ0FDRUQ0Z0FCRFpCU0FCUVJCcUpBQUxSQUVCZnlNQVFSQnJJZ0lrQUVFc0VDWWdBQkJWSUFGQkFSQlJJUUVnQUNnQ2hBRWdBa0VJYWlBQkVEb2lBQkI4SUFBUVBpQUJLQUlFSVFBZ0FrRVFhaVFBSUFBTEp3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUVFYWlBQ1FReHFFRWNnQWtFUWFpUUFDOElCQVFSL0l3QkJFR3NpQmlRQUlBQWdCVFlDQkNBQVFjRHVFVFlDQUNBQVFRaHFJQUVnQWtFMkVGRWhBaUFBUVRScUVEQWhCeUFBUVVCckVEQWFRUUFoQVNBQVFRQTZBRXdnQWtFQUVFd2dBaUFERURrZ0JTQUNFSXdCSUFVZ0FCQzlGQ0FGSUFNUUx5SUNFTHdDSWdOQkFrNEVRQ0FEUVg5cUlRTURRRUVzRUNZaUNDQUJJQVJxSUFJZ0FVRUJhaUlCRUM5Qk54QlJJUWtnQmlBSU5nSU1JQVVnQ1JDTUFTQUhJQVpCREdvUVJ5QUJJQU5IRFFBTEN5QUdRUkJxSkFBZ0FBdFJBUU4vSXdCQklHc2lBaVFBSUFKQkVHb1FNQ0VESUFJUU1DRUVJQUFnQUVILy8vLy9CeUFBRUp3SUlBRWdBeUFFSUFKQkhHb1FsZ3dpQURZQ2pBRWdCQkNwRENBREVEWWdBa0VnYWlRQUlBQUxUd0VDZnlNQVFSQnJJZ1VrQUVFc0VDWkJnU3dRdHdFaUJDQUJFRGtnQkNBQ0VFd2dCRUdETEJCTUlBUWdBeEQrQWlBQVFZUUNhaUFGUVFocUlBUVFPaUlBRUgwZ0FCQStJQVZCRUdva0FBdEhBUUovSXdCQkVHc2lCU1FBUVN3UUprRUdFTGNCSWdRZ0FSQTVJQVFnQWhCTUlBUWdBeEQrQWlBQVFmZ0JhaUFGUVFocUlBUVFPaUlBRUgwZ0FCQStJQVZCRUdva0FBdE1BUUovSXdCQkVHc2lCU1FBUVN3UUprRVBFTGNCSWdRZ0FSQk1JQVFnQWlnQ0RCQTVJQVFnQXhEK0FpQUFRZUFCYWlBRlFRaHFJQVFRT2lJQUVIMGdBQkErSUFWQkVHb2tBQ0FFQzZrQkFRTi9Jd0JCRUdzaUF5UUFJQU1nQVRZQ0RBSi9RUUFpQVNBQVFjZ0NhaUlGSUFOQkRHb1EyQVlRRmtFQlNBMEFHZ0pBQTBCQkFDRUFJQVVnQTBFTWFoRFlCaUFCRUJFb0FnQWlCQkM4QWtFQVRBMEJBMEFnQkNBQUVDOGdBaUFBRUJFb0FnQkdCRUFnQUVFQmFpSUFJQVFRdkFKSURRRU1Bd3NMSUFGQkFXb2lBU0FGSUFOQkRHb1EyQVlRRmtnTkFBdEJBQXdCQ3lBRUtBSUVDeUVBSUFOQkVHb2tBQ0FBQzhBQkFRUi9Jd0JCRUdzaUJDUUFJQVFnQVRZQ0RBSi9Ba0FnQUVHMEFtb2lCaUFFUVF4cUVEOFFGa0VCU0EwQUEwQUNRQ0FFSUFFMkFnZ0NRQ0FDSUFZZ0JFRUlhaEEvSUFjUUVTZ0NBQ0lGS0FJSVJ3MEFRUUFoQUNBRkVMd0NRUUJNRFFFRFFDQUZJQUFRTHlBRElBQVFFU2dDQUVjTkFTQUFRUUZxSWdBZ0JSQzhBa2dOQUFzTUFRc2dCQ0FCTmdJTUlBZEJBV29pQnlBR0lBUkJER29RUHhBV1NBMEJEQUlMQ3lBRktBSUVEQUVMUVFBTElRQWdCRUVRYWlRQUlBQUxVUUFDZnlBQUlBRVE0Z1VpQVVIQUFFY0VRQ0FCUVNCSEJFQkJBQ0FCUVJCSERRSWFJQUJEQUFDQVAwRUFFSzBFRHdzZ0FFTUFBSUEvUVFBUStRSVBDeUFBUkFBQUFBQUFBUEEvUVFBUXd3TUxDN2NCQVFOL0lBTkJBWFpCZ0FSeUlBTWdBa0Z5U0JzaEJTQURSU0FDUVhGS2NTRUdBa0FnQWtGd1NnUkFJQUloQXd3QkN3TkFJQVZCL3Y4RGNVRUJkaUVGSUFKQkVIUWhCeUFDUVFGcUlnTWhBaUFIUVJCMVFYQklEUUFMQ3lBQUFuOGpBRUVRYXlJQUpBQWdBRUVRYWlRQUlBVWdCU0FGUVFFZ0JTQUVHeUFEUWYvL0EzRkI4ZjhEUnhzZ0JSc2dCaHRCL3dkeElBTkJDblJCZ1BnQWFrR0ErQUZ4UVlDQWZrRUFJQUViY25KQi8vOERjUXM3QVFBTHZ3RUJBbjhDUUVHa3dCUXRBQUJCQVhFTkFFR2t3QlFRcmdGRkRRQkJvTUFVUVExQkFSQ1ZDRFlDQUVHa3dCUVFyUUVMQWtCQnJNQVVMUUFBUVFGeERRQkJyTUFVRUs0QlJRMEFRYWpBRkVFTVFRRVFsUWcyQWdCQnJNQVVFSzBCQ3lBQlFRQTZBQUFDUUNBQUVKQVVJZ0JCL3o5eElnSkZRUUZ5RFFCQnFNQVVLQUlBSWdNZ0FIRkZEUUFnQWlBRFFYOXpjVVVFUUVHZ3dCUW9BZ0FnQUhGRkRRRUxJQUJCb01BVUtBSUFJQUVRanhRaEFBc2dBRUVOZGtILy93TnhDMDRBSUFBUXhRVWdBRUlBTndJMElBQkMvLy8vL3g4M0Fpd2dBRUlBTndJa0lBQkJBRHNBSVNBQUlBUTZBQ0FnQUNBRE5nSWNJQUFnQWpZQ0dDQUFJQUUyQWhRZ0FFSGtqUWsyQWdBZ0FBc3RBUUYvSXdCQkVHc2lBU1FBSUFGQkNHb2dBQzhCQUVHQWdBSnpFS3dFTHdFQUlRQWdBVUVRYWlRQUlBQUw3Z0lCQm44akFFRXdheUlDSkFBZ0FTQUNRU2hxSUFKQklHcEJBQkNzQkM4QkFCQ3NCQzhCQURzQkFDQUFFSmdNSVFRQ1FDQUFLQUlBUWYvLy8vOEhjVVVFUUNBRVJRMEJJQUlnQVM4QkFEc0JHQ0FCSUFKQkdHb1F5UlFRbHdnTUFRc2dBQkNXQ0NFRklBSkJBRG9BRnlBQUlBSkJGMm9ReHhRaEJ3SkFJQUFRbHd3aUEwR0JmMGNOQUVHQWdJQUNJUVpCZ244aEF3TkFJQU5CZjJvaEF5QUZJQVp4RFFFZ0JrRUJkaUlHRFFBTEN3SkFJQVZCQUNBQUtBSUFRWUNBZ1B3SGNVR0FnSUQ4QjBZYlJRUkFJQU1nQWkwQUYycEJEMHdFUUNBRkRRSWdBQ2dDQUVHQWdJRDhCM0ZCZ0lDQS9BZEhEUUlMSUFFZ0FrRVFha0dBK0FOQmdQZ0JJQVFiRUt3RUx3RUFFSmNJREFJTElBRWdBa0VJYWtGeklBVVFsUWdpQUVFQklBQkIvLzhEY1J0QmdQZ0RRWUQ0QVNBRUczSkIvLzhEY1JDc0JDOEJBQkNYQ0F3QkN5QUJJQVFnQTBFUWRFRVFkU0FIQW44Z0FCQ1lEQnBCQUFzUXhoUUxJQUpCTUdva0FBc2pBQ0FBUVg5cUlnQkJNMDBFUUVLQmdJQ0FnT0R2QnlBQXJZaW5RUUZ4RHd0QkFBdENBUUovSUFCQjZBQnFJUUlEZnlBQ0lBRVFMeWdDRENJRFFSeEhCSDhnQTBFZ1JnUi9JQUFnQVJESURFSGxLVVlGUVFBTEJTQUFJQUVRc0FFaEFRd0JDd3NMa0FJQkJIOENRQ0FBSUFBb0FnQW9BbEFSQUFBaUFrVU5BQ0FBSVFRRFFFRUFJUUFnQWlnQ2FDSURRYzkrYWlJRlFRUlBRUUFnQTBId0JVY2JEUUVDUUNBQkRRQWdBMEcwQVVZZ0EwSHdCVVp5RFFJZ0JVRUJTdzBBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBeUFES0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDYUJFQUFFVUVRQ0FDSUFJb0FnQW9Bc0FCRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9BbUFSQUFCRkRRRUxJQUlnQWlnQ0FDZ0N3QUVSQUFBaUFpQUNLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NjQkVBQUVVTkFnc2dCQ0FFS0FJQUtBSlFFUUFBSWdBZ0FDZ0NBQ2dDd0FFUkFBQWlCQ0FFS0FJQUtBSlFFUUFBSWdJTkFBc2dCQ0VBQ3lBQUM3MEJBUU4vSXdCQkVHc2lBU1FBSUFGQjNTazJBZ3dDUUNBQVFkd0NhaUlDSUFGQkRHb1FQeEFXUlFSQVFTd1FKaUlESUFBUVZVRUFRZDBwRUZFYUlBRWdBellDRENBQlFkMHBOZ0lJSUFJZ0FVRUlhaEEvSUFGQkRHb1FSeUFBUVpBQ2FpQUJRUWhxSUFFb0Fnd1FPaUlDRUgwZ0FoQStJQUJCNkFCcUlBRW9BZ3dRakFFZ0FTZ0NEQ0VBREFFTElBRkIzU2syQWdnZ0FTQUNJQUZCQ0dvUVB4Q1FBU2dDQUNJQU5nSU1DeUFBS0FJRUlRQWdBVUVRYWlRQUlBQUw1d0VCQkg4akFFRVFheUlDSkFBZ0FrRWJOZ0lJQWtBZ0FFSGNBbW9pQkNBQ1FRaHFFRDhRRmtFQlRnUkFBMEFnQWtFYk5nSUlJQUlnQkNBQ1FRaHFFRDhnQXhBUktBSUFJZ1UyQWd3Z0JVRUFFQzhnQVVZTkFpQUNRUnMyQWdnZ0EwRUJhaUlESUFRZ0FrRUlhaEEvRUJaSURRQUxDMEVzRUNZaUF5QUFFRlZCQUVFYkVGRWhCU0FDSUFNMkFnd2dCU0FCRURrZ0FrRWJOZ0lJSUFRZ0FrRUlhaEEvSUFKQkRHb1FSeUFBUVpBQ2FpQUNRUWhxSUFJb0Fnd1FPaUlCRUgwZ0FSQStJQUJCNkFCcUlBSW9BZ3dRakFFTElBSW9BZ3dvQWdRaEFDQUNRUkJxSkFBZ0FBdVlCQUVFZnlNQVFSQnJJZ2drQUNBSVFSazJBZ2dDUUNBQVFkd0NhaUlLSUFoQkNHb1FQeEFXUVFCS0JFQURRQ0FJUVJrMkFnZ2dDQ0FLSUFoQkNHb1FQeUFKRUJFb0FnQWlDellDREFKQUlBdEJBQkF2SUFGSERRQWdDQ2dDREVFQkVDOGdBa2NOQUNBSUtBSU1RUUlRTHlBRFJ3MEFJQWdvQWd4QkF4QXZJQVJIRFFBZ0NDZ0NERUVFRUM4Z0JVY05BQ0FJS0FJTVFRVVFMeUFHUncwQUlBZ29BZ3hCQmhBdklBZEdEUU1MSUFoQkdUWUNDQ0FKUVFGcUlna2dDaUFJUVFocUVEOFFGa2dOQUFzTFFTd1FKaUlMSUFBUVZVRUFRUmtRVVNFSklBZ2dDellDRENBSklBRVFPU0FKSUFJUVRDQUpJQU1RVENBSklBUVFUQ0FKSUFVUVRDQUpJQVlRVENBSklBY1FUQ0FJUVJrMkFnZ2dDaUFJUVFocUVEOGdDRUVNYWhCSElBQkJrQUpxSUFoQkNHb2dDQ2dDREJBNklnRVFmU0FCRUQ0Z0FFSG9BR29nQ0NnQ0RCQ01BUUpBSUFKQkJrc05BQUpBQWtBQ1FBSkFBa0FnQWtFQmF3NEdCUVVDQXdBRUFRc2dCa0VCUmdSQUlBQkJMaEFoREFZTElBQkJMeEFoREFRTElBWkJBVVlFUUNBQVFTc1FJUXdGQ3lBQVFTd1FJUXdEQ3lBRVJRMENJQVpCQVVZRVFDQUFRUzBRSVF3RUN5QUFRU0lRSVF3Q0N5QUdRUUZHQkVBZ0FFRWxFQ0VNQXdzZ0FFRWtFQ0VNQVFzZ0FFRW9FQ0VMSUFWRklBWkJBa2R5RFFBZ0FrRUdSd1JBSUFCQkd4QWhDeUFFUlEwQUlBQkJNQkFoQ3lBSUtBSU1LQUlFSVFBZ0NFRVFhaVFBSUFBTDdRSUJCSDhqQUVFUWF5SURKQUFnQTBFaE5nSUlBa0FnQUVIY0Ftb2lCaUFEUVFocUVEOFFGa0VCVGdSQUEwQWdBMEVoTmdJSUlBTWdCaUFEUVFocUVEOGdCUkFSS0FJQUlnUTJBZ3dDUUNBRVFRQVFMeUFCUncwQVFRQWhCQ0FDRUJZZ0F5Z0NEQkM4QWtGL2FrY05BQU5BSUFRZ0FoQVdUZzBFSUFJZ0JCQVJLQUlBSUFNb0Fnd2dCRUVCYWlJRUVDOUdEUUFMQ3lBRFFTRTJBZ2dnQlVFQmFpSUZJQVlnQTBFSWFoQS9FQlpJRFFBTEMwRXNFQ1lpQlNBQUVGVkJBRUVoRUZFaEJDQURJQVUyQWd3Z0JDQUJFRGtDUUNBQ0VCWkJBVWdOQUNBRUlBSkJBQkFSS0FJQUVEbEJBU0VFSUFJUUZrRUJUQTBBQTBBZ0F5Z0NEQ0FDSUFRUUVTZ0NBQkE1SUFSQkFXb2lCQ0FDRUJaSURRQUxDeUFEUVNFMkFnZ2dCaUFEUVFocUVEOGdBMEVNYWhCSElBQkJrQUpxSUFOQkNHb2dBeWdDREJBNklnRVFmU0FCRUQ0Z0FFSG9BR29nQXlnQ0RCQ01BUXNnQXlnQ0RDZ0NCQ0VBSUFOQkVHb2tBQ0FBQzFNQkFuOGpBRUVRYXlJREpBQkJMQkFtSUFBUVZVRUFRUjBRVVNJQ0lBRVFPU0FBUVpBQ2FpQURRUWhxSUFJUU9pSUJFSDBnQVJBK0lBQkI2QUJxSUFJUWpBRWdBaWdDQkNFQUlBTkJFR29rQUNBQUM2c0NBUVIvSXdCQkVHc2lCU1FBSUFWQjdpazJBZ2dDUUNBQVFkd0NhaUlISUFWQkNHb1FQeEFXUVFGT0JFQURRQ0FGUWU0cE5nSUlJQVVnQnlBRlFRaHFFRDhnQmhBUktBSUFJZ2cyQWd3Q1FDQUlRUUFRTHlBQlJ3MEFJQVVvQWd4QkFSQXZJQUpIRFFBZ0JTZ0NERUVDRUM4Z0EwY05BQ0FGS0FJTVFRTVFMeUFFUmcwREN5QUZRZTRwTmdJSUlBWkJBV29pQmlBSElBVkJDR29RUHhBV1NBMEFDd3RCTEJBbUlnZ2dBQkJWUVFCQjdpa1FVU0VHSUFVZ0NEWUNEQ0FHSUFFUU9TQUdJQUlRT1NBR0lBTVFPU0FHSUFRUU9TQUZRZTRwTmdJSUlBY2dCVUVJYWhBL0lBVkJER29RUnlBQVFaQUNhaUFGUVFocUlBVW9BZ3dRT2lJQkVIMGdBUkErSUFCQjZBQnFJQVVvQWd3UWpBRUxJQVVvQWd3b0FnUWhBQ0FGUVJCcUpBQWdBQXVMQWdFRGZ5TUFRUkJySWdRa0FDQUFJQUVnQXhDeEFTRUdJQVJCR0RZQ0NBSkFJQUJCM0FKcUlnTWdCRUVJYWhBL0VCWkJBVTRFUUVFQUlRRURRQ0FFUVJnMkFnZ2dCQ0FESUFSQkNHb1FQeUFCRUJFb0FnQWlCVFlDRENBRlFRQVFMeUFHUmdSQUlBUW9BZ3hCQVJBdklBSkdEUU1MSUFSQkdEWUNDQ0FCUVFGcUlnRWdBeUFFUVFocUVEOFFGa2dOQUFzTFFTd1FKaUlGSUFBUVZVRUFRUmdRVVNFQklBUWdCVFlDRENBQklBWVFPU0FCSUFJUVRDQUVRUmcyQWdnZ0F5QUVRUWhxRUQ4Z0JFRU1haEJISUFCQmtBSnFJQVJCQ0dvZ0JDZ0NEQkE2SWdFUWZTQUJFRDRnQUVIb0FHb2dCQ2dDREJDTUFRc2dCQ2dDRENnQ0JDRUFJQVJCRUdva0FDQUFDekVCQVg4akFFRVFheUlESkFBZ0F5QURJQUVvQWdBZ0FrRUFFUFVFTmdJTUlBQWdBMEVNYWhDeUJDQURRUkJxSkFBTCtRRUJCSDhqQUVFUWF5SURKQUFnQTBFZ05nSUlBa0FnQUVIY0Ftb2lCU0FEUVFocUVEOFFGa0VCVGdSQUEwQWdBMEVnTmdJSUlBTWdCU0FEUVFocUVEOGdCQkFSS0FJQUlnWTJBZ3dnQmtFQUVDOUI1U2xHQkVBZ0F5Z0NERUVCRUM4Z0FrWU5Bd3NnQTBFZ05nSUlJQVJCQVdvaUJDQUZJQU5CQ0dvUVB4QVdTQTBBQ3d0QkxCQW1JZ1FnQVVFQVFTQVFVU0VCSUFNZ0JEWUNEQ0FCUWVVcEVFd2dBU0FDRURrZ0EwRWdOZ0lJSUFVZ0EwRUlhaEEvSUFOQkRHb1FSeUFBUVpBQ2FpQURRUWhxSUFNb0Fnd1FPaUlCRUgwZ0FSQStJQUJCNkFCcUlBTW9BZ3dRakFFTElBTW9BZ3dvQWdRYUlBTkJFR29rQUF0VUFRTi9Jd0JCRUdzaUFpUUFRU3dRSmlBQUVGVkJBRUVuRUZFaUFVSGxLUkJNSUFCQmtBSnFJQUpCQ0dvZ0FSQTZJZ01RZlNBREVENGdBRUhvQUdvZ0FSQ01BU0FCS0FJRUlRQWdBa0VRYWlRQUlBQUx1UUVCQTM4akFFRVFheUlCSkFBZ0FVRWFOZ0lNQWtBZ0FFSGNBbW9pQWlBQlFReHFFRDhRRmtVRVFFRXNFQ1lpQXlBQUVGVkJBRUVhRUZFYUlBRWdBellDRENBQlFSbzJBZ2dnQWlBQlFRaHFFRDhnQVVFTWFoQkhJQUJCa0FKcUlBRkJDR29nQVNnQ0RCQTZJZ0lRZlNBQ0VENGdBRUhvQUdvZ0FTZ0NEQkNNQVNBQktBSU1JUUFNQVFzZ0FVRWFOZ0lJSUFFZ0FpQUJRUWhxRUQ4UWtBRW9BZ0FpQURZQ0RBc2dBQ2dDQkNFQUlBRkJFR29rQUNBQUN5OEFBa0FnQVVVTkFDQUFLQUlnSUFGR0RRQWdBQ0FCTmdJZ0lBQXRBQ2hGRFFBZ0FDQUFLQUlRSUFFUW5nd0xDd2tBSUFBUW5nZ1FLZ3M3QVFKL0lBQVFuQlFnQUNnQ0JDSUJJQUFvQWdnaUFrY0VRQU5BSUFBUVhob2dBU2dDQUJBcUlBRkJCR29pQVNBQ1J3MEFDd3NnQUJEUkNBc2JBQ0FBUVFScUVEQWFJQUJCRkdvUU1Cb2dBRUV3YWhDQkJSb0x4UUlBSUFCQkFEWUNFQ0FBUWdBM0FnZ2dBQ0FCTmdJRUlBQkJ3TzBSTmdJQUlBQkJGR29RVGhvZ0FFRUFPZ0FvSUFCQ0FEY0NJQ0FBUVN4cUVKMEVJQUJCT0dvUU1Cb2dBRUhFQUdvUU1Cb2dBRUtBZ0lDQUVEY0NVQ0FBUWRnQWFoQ2RCQ0FBSUFJMkFtUWdBRUhvQUdvaUFVSG83UkUyQWdBZ0FVRUVhaEF3R2lBQlFSQnFFREFhSUFCQ0FEY0FpUUVnQUVJQU53S0VBU0FBUVpRQmFoRGNGQ0FBUWNnQmFoQXdHaUFBUWRRQmFoQXdHaUFBUWVBQmFoQXdHaUFBUWV3QmFoQXdHaUFBUWZnQmFoQXdHaUFBUVlRQ2FoQXdHaUFBUVpBQ2FoQXdHaUFBUVp3Q2FoQXdHaUFBUWFnQ2FoQXdHaUFBUWJRQ2FoQ1dBUm9nQUVISUFtb1FsZ0VhSUFCQjNBSnFFSllCR2lBQVFmQUNhaEQwQmlBQVFZZ0RhaEQwQmlBQVFhQURhaENXQVJvZ0FFRzBBMm9RbVFjYUlBQWdBellDd0FNZ0FCQnpJQUFMNVFNQ0JYOEJmU01BUVNCcklnUWtBQ0FCRUNNZ0FpZ0NBQkRwQmlFSElBRVFQQ0VGSUFSQkFEb0FId0pBQWtBZ0JVVU5BQ0FCSUFjZ0JSQTBJZ2dRRVNnQ0FDSUdSUTBBQTBBZ0JpZ0NBQ0lHUlEwQklBY2dCaWdDQkVjRVFDQUdLQUlFSUFVUU5DQUlSdzBDQ3lBQkVFTWdCa0VJYWlBQ0VNUUNSUTBBQ3d3QkN5QUVRUkJxSUFFZ0J5QURFTUlGSUFFUUl5Z0NBQ0VDSUFFUVF5RURBa0FnQlFSQUlBTXFBZ0FnQmJPVUlBSkJBV3F6WFVFQmN3MEJDeUFFSUFVUXVnRkJBWE1nQlVFQmRISTJBZ3dnQkFKL0lBRVFJeWdDQUVFQmFyTWdBUkJES2dJQWxZMGlDVU1BQUlCUFhTQUpRd0FBQUFCZ2NRUkFJQW1wREFFTFFRQUxOZ0lJSUFFZ0JFRU1haUFFUVFocUVGSW9BZ0FRd0EwZ0J5QUJFRHdpQlJBMElRZ0xBa0FnQVNBSUVCRW9BZ0FpQWtVRVFDQUVLQUlRSUFGQkNHb2lBaWdDQURZQ0FDQUNJQVFvQWhBMkFnQWdBU0FJRUJFZ0FqWUNBQ0FFS0FJUUtBSUFSUTBCSUFRb0FoQWhBaUFCSUFRb0FoQW9BZ0FvQWdRZ0JSQTBFQkVnQWpZQ0FBd0JDeUFFS0FJUUlBSW9BZ0EyQWdBZ0FpQUVLQUlRTmdJQUN5QUVRUkJxRUY4aEJpQUJFQ01pQVNBQktBSUFRUUZxTmdJQUlBUkJBVG9BSHlBRVFSQnFFTE1DQ3lBQUlBUkJFR29nQmhBeElBUkJIMm9Rb2dFZ0JFRWdhaVFBQ3pVQkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFFUTVndzJBZ2dnQWhETEFUWUNBQ0FDUVFocUlBSVFIaUVBSUFKQkVHb2tBQ0FBQzFVQkFuOGpBRUVRYXlJQkpBQWdBRUVFYWlJQUVCWkJBazhFUUNBQklBQVFNallDQUNBQklBRkJBaENHQnpZQ0NDQUJLQUlJS0FJQUlnQkJBQ0FBS0FJTVFYNXhRZllCUmhzaEFnc2dBVUVRYWlRQUlBSUxKd0FnQUNBQkVLc0hHaUFBUVJCcUVKWUJHaUFBUVNScUVKWUJHaUFBUVRocUVKWUJHaUFBQzF3QkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJQUlBTWdBRFlDQ0FKQUlBTkJDR29nQXhBZVJRMEFBMEFnQXlnQ0NDQUNFSmdDRFFFZ0EwRUlhaENjQlNBRFFRaHFJQU1RSGcwQUN3c2dBeWdDQ0NFQUlBTkJFR29rQUNBQUN6c0JBWDhnQUNBQUtBSUVRUUZxSWdFMkFnUWdBU0FBS0FJQUlnRW9BZ0JyUVlBZ1JnUkFJQUFnQVVFRWFqWUNBQ0FBSUFFb0FnUTJBZ1FMQ3pnQUlBQWdBU2dDQkNBQktBSVFRUXAyUWZ6Ly93RnhhaUlBSUFFUWp3VUVmMEVBQlNBQUtBSUFJQUVvQWhCQi94OXhhZ3NRbVFFYUM2VUJBUUovSXdCQkVHc2lBU1FBSUFBUVhob2dBVUVJYWlBQUVPUVVJQUVnQUJDaERDQUJRUWhxSUFFUWtBVUVRQU5BSUFFb0Fnd2FJQUZCQ0dvUTR4UWdBVUVJYWlBQkVKQUZEUUFMQ3lBQUVGNUJBRFlDQUNBQUVOQUJRUUpMQkVBRFFDQUFLQUlFS0FJQUVDb2dBQkRNQXlBQUVOQUJRUUpMRFFBTEN5QUFFTkFCUVg5cUlnSkJBVTBFUUNBQVFZQVFRWUFnSUFKQkFXc2JOZ0lRQ3lBQlFSQnFKQUFMT3dFQ2Z5QUFFT1VVSUFBb0FnUWlBU0FBS0FJSUlnSkhCRUFEUUNBQUVGNGFJQUVvQWdBUUtpQUJRUVJxSWdFZ0FrY05BQXNMSUFBUTBRZ0xNd0VCZnlBQUVGNGhBU0FBS0FJRUlBQW9BaEFnQVNnQ0FHcEJmMm9pQUVFS2RrSDgvLzhCY1dvb0FnQWdBRUgvSDNGcUMvRUNBUVIvSXdCQk1Hc2lBU1FBSUFBUVhpRURBa0FnQUNnQ0VFR0FJRThFUUNBQUlBQW9BaEJCZ0dCcU5nSVFJQUVnQUNnQ0JDZ0NBRFlDR0NBQUVNd0RJQUFnQVVFWWFoRE5Bd3dCQ3dKQUlBQVEwQUVnQUJDSUEwa0VRQ0FBRU9FSVJRMEJJQUZCZ0NBUUpqWUNHQ0FBSUFGQkdHb1F6UU1NQWdzZ0FTQUFFSWdEUVFGME5nSUlJQUZCQVRZQ0FDQUJRUmhxSUFGQkNHb2dBUkJTS0FJQUlBQVEwQUVnQUJBakVQSUNJUUlnQVNBQlFRaHFRWUFnRUNZZ0FTQURRWUFnRUprQkVKRUJJZ1FvQWdBMkFnQWdBaUFCRU9BSUlBUVFYeG9nQUNnQ0NDSURJQUFvQWdSSEJFQURRQ0FDSUFOQmZHb2lBeERmQ0NBRElBQW9BZ1JIRFFBTEN5QUFJQUlRTGlBQVFRUnFJQUpCQkdvUUxpQUFRUWhxSUFKQkNHb1FMaUFBRUNNZ0FoQWpFQzRnQkJEWEJpQUNFSkVEREFFTElBRkJnQ0FRSmpZQ0dDQUFJQUZCR0dvUTNRZ2dBU0FBS0FJRUtBSUFOZ0lZSUFBUXpBTWdBQ0FCUVJocUVNMERDeUFCUVRCcUpBQUxUd0VCZnlNQVFSQnJJZ0lrQUNBQUVGNGFJQUFRb2d4RkJFQWdBQkRvRkFzZ0FrRUlhaUFBRUtFTUlBSW9BZ3dnQVMwQUFEb0FBQ0FBRUY0aUFDQUFLQUlBUVFGcU5nSUFJQUpCRUdva0FBdGdBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNBQ0FFSUFFMkFnZ2dCRUVJYWlBRUVCNEVRQU5BSUFBZ0F5Z0NBQ0FFS0FJSUVQa0JJQVJCQ0dvUVpob2dBeUFES0FJQVFRUnFOZ0lBSUFSQkNHb2dCQkFlRFFBTEN5QUVRUkJxSkFBTFR3RUJmeU1BUWVBQWF5SUFKQUFnQUVIWUFHcEJBUkQxQVNJRFFRQVFEeUFCRUhFZ0F5QUFRUWRCQWtFQlFRQkJBRUVBRUVVaUFTQUNRUUVRMEFJaEFpQUJFRFVhSUFCQjRBQnFKQUFnQWdzaUFDTUFRUkJySWdNa0FDQUFFQnNnQVNBQ0lBQkJCR29RNmhRZ0EwRVFhaVFBQzJBQkFYOGpBRUVRYXlJRUpBQWdCQ0FDTmdJQUlBUWdBVFlDQ0NBRVFRaHFJQVFRSGdSQUEwQWdBQ0FES0FJQUlBUW9BZ2dRcFFVZ0JFRUlhaER0QXlBRElBTW9BZ0JCQ0dvMkFnQWdCRUVJYWlBRUVCNE5BQXNMSUFSQkVHb2tBQXN4QVFGL0lBRWdBQ2dDQkNJQ1J3UkFBMEFnQUJBYkdpQUNRVXhxSWdJUXVBRWdBU0FDUncwQUN3c2dBQ0FCTmdJRUN6WUJBWDhnQVNBQUtBSUlSd1JBQTBBZ0FDZ0NFQm9nQUNBQUtBSUlRVXhxSWdJMkFnZ2dBaEM0QVNBQUtBSUlJQUZIRFFBTEN3c3NBQ0FBS0FJQUdpQUFLQUlBSUFBUTlnUkJOR3hxR2lBQUtBSUFJQUFROWdSQk5HeHFHaUFBS0FJQUdnczlBUUYvSUFFZ0FrY0VRQ0FES0FJQUlRUURRQ0FBSUFSQlRHb2dBa0ZNYWlJQ0VLTUlJQU1nQXlnQ0FFRk1haUlFTmdJQUlBRWdBa2NOQUFzTEMwSUJBWDhqQUVFUWF5SUJKQUFnQUJBYkdpQUJRY1Nkc1NjMkFnd2dBVUgvLy8vL0J6WUNDQ0FCUVF4cUlBRkJDR29RcEFFb0FnQWhBQ0FCUVJCcUpBQWdBQXRQQVFGL0l3QkI0QUJySWdBa0FDQUFRZGdBYWtFQkVQVUJJZ05CQUJBUElBRVFjaUFESUFCQkJrRUNRUUZCQUVFQVFRQVFSU0lCSUFKQkFSRFFBaUVDSUFFUU5Sb2dBRUhnQUdva0FDQUNDMDRBSUFBZ0FTZ0NBRFlDQUNBQVFRUnFJQUZCQkdvUWxBY2dBQ0FCS0FJUU5nSVFJQUJCRkdvZ0FVRVVhaENVQnlBQUlBRXRBREE2QURBZ0FDQUJLUUlvTndJb0lBQWdBU2tDSURjQ0lBdFJBUUYvSUFBUXBBd2dBQkFiSUFBb0FnQWdBQ2dDQkNBQlFRUnFJZ0lROFJRZ0FDQUNFQzRnQUVFRWFpQUJRUWhxRUM0Z0FCQWJJQUVRSXhBdUlBRWdBU2dDQkRZQ0FDQUFJQUFRM1FZUThCUUxmUUVDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWFRY1Nkc1NjZ0FTSURTUVJBRUlJQkFBc2dBMEUwYkJBbUlRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFMGJHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUUwYkdvMkFnQWdCRUVRYWlRQUlBQUxXUUVDZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQUJEeUZDSURJQUZQQkVBZ0FCRDJCQ0lBSUFOQkFYWkpCRUFnQWlBQVFRRjBOZ0lJSUFKQkNHb2dBa0VNYWhCU0tBSUFJUU1MSUFKQkVHb2tBQ0FERHdzUWJnQUxMQUVCZnlBQUtBSUFCRUFnQUNBQUtBSUFFTzRVSUFBUUd4b2dBQ2dDQUNFQklBQVE5Z1FhSUFFUUtnc0xpQUVCQW44akFFRWdheUlESkFBZ0FCQWJJZ0lnQTBFSWFpQUFJQUFRM1FaQkFXb1E5eFFnQUJEZEJpQUNFUFlVSWdJb0FnZ2dBUkNqQ0NBQ0lBSW9BZ2hCTkdvMkFnZ2dBQ0FDRVBVVUlBSWdBaWdDQkJEdkZDQUNLQUlBQkVBZ0FpZ0NFQm9nQWlnQ0FDRUFJQUlRSXlnQ0FDQUNLQUlBYTBFMGJSb2dBQkFxQ3lBRFFTQnFKQUFMTlFFQmZ5QUJJQUFvQWdoSEJFQURRQ0FBS0FJUUdpQUFJQUFvQWdoQmRHb2lBallDQ0NBQ0VEWWdBQ2dDQ0NBQlJ3MEFDd3NMT1FBZ0FTQUNSd1JBSUFNb0FnQWhBQU5BSUFCQmRHb2dBa0YwYWlJQ0VKUUhJQU1nQXlnQ0FFRjBhaUlBTmdJQUlBRWdBa2NOQUFzTEN5d0FJQUFvQWdBYUlBQW9BZ0FnQUJDckEwRU1iR29hSUFBb0FnQWFJQUFvQWdBZ0FCQ25BVUVNYkdvYUMxRUJBWDhnQUJDTEJDQUFFQnNnQUNnQ0FDQUFLQUlFSUFGQkJHb2lBaEQ3RkNBQUlBSVFMaUFBUVFScUlBRkJDR29RTGlBQUVCc2dBUkFqRUM0Z0FTQUJLQUlFTmdJQUlBQWdBQkNuQVJENUJRc3hBUUYvSUFBb0FoQWFJQUFvQWdnaEFnTkFJQUlRcFF3Z0FDQUFLQUlJUVF4cUlnSTJBZ2dnQVVGL2FpSUJEUUFMQ3pvQkFYOGpBRUVRYXlJQ0pBQWdBQkFiR2dOQUlBQW9BZ1FRcFF3Z0FDQUFLQUlFUVF4cU5nSUVJQUZCZjJvaUFRMEFDeUFDUVJCcUpBQUxqd0VCQW44akFFRWdheUlESkFBQ1FDQUFFQnNvQWdBZ0FDZ0NCR3RCREcwZ0FVOEVRQ0FBSUFFUS94UU1BUXNnQUJBYklRSWdBMEVJYWlBQUlBQVFwd0VnQVdvUWpnY2dBQkNuQVNBQ0VJMEhJZ0lnQVJEK0ZDQUFJQUlRL1JRZ0FpQUNLQUlFRVBvVUlBSW9BZ0FFUUNBQ0tBSVFHaUFDS0FJQUlRQWdBaENMQ1JvZ0FCQXFDd3NnQTBFZ2FpUUFDeWtCQVg4Z0FCQzBCU0FCSUFJUXpBMGlBd1JBSUFBZ0F4RDhCQ0FBSUFFZ0FpQURFT3dVQ3lBQUMxVUJBWDhqQUVFUWF5SUNKQUFnQWtFVU5nSU1BbjlCQUNBQVFkd0NhaUlBSUFKQkRHb1FQeEFXUlEwQUdpQUNRUlEyQWdnZ0FTQUFJQUpCQ0dvUVB4Q1FBU2dDQUNnQ0JFWUxJUUFnQWtFUWFpUUFJQUFMS1FFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFBZ0FSQ2dCQ0VESUFKQkVHb2tBQ0FCSUFBZ0F4c0xhUUVDZnlBQUVOOERJQUVvQWdRaEF5QUFFQnNnQUNnQ0FDQUNJQUZCQkdvaUJCQ0ZCaUFBRUJzZ0FpQUFLQUlFSUFGQkNHb2lBaERERENBQUlBUVFMaUFBUVFScUlBSVFMaUFBRUJzZ0FSQWpFQzRnQVNBQktBSUVOZ0lBSUFBZ0FCQ2FBUkRaQkNBREMyY0JBWDhqQUVFUWF5SURKQUFnQXlBQ05nSUFJQU1nQVRZQ0NDQUFLQUlRSVFFZ0EwRUlhaUFERUI0RVFBTkFJQUVnQUNnQ0NDQURLQUlJRUtVRklBQWdBQ2dDQ0VFSWFqWUNDQ0FEUVFocUVPMERJQU5CQ0dvZ0F4QWVEUUFMQ3lBRFFSQnFKQUFMVVFFQ2Z5QUJJQUFvQWdRaUJTQURhMm9pQkNBQ1NRUkFJQVFoQXdOQUlBQVFHeUFBS0FJRUlBTVFwUVVnQUNBQUtBSUVRUWhxTmdJRUlBTkJDR29pQXlBQ1NRMEFDd3NnQVNBRUlBVVEvZ1VhQ3lJQUl3QkJFR3NpQXlRQUlBQVFHeUFCSUFJZ0FFRUVhaER0RkNBRFFSQnFKQUFMU3dFQmZ5TUFRUkJySWdJa0FBSkFJQUFvQWdRZ0FCQWJLQUlBU1FSQUlBQVFHeUFBS0FJRUlBRVFvd2dnQUNBQUtBSUVRVFJxTmdJRURBRUxJQUFnQVJENUZBc2dBa0VRYWlRQUMrQUJBUUovSXdCQkVHc2lCQ1FBSUFBb0FnQWhBQ0FFSUFJUS9nUWlCVFlDRENBRlFmLy8vLzhIUndSQUlBRWdCRUVNYWhCSEN5QUNJQUlvQWdBb0Fpd1JBQUFnQVNBREVMRUlBa0FnQWhEMEFVVU5BQUpBSUFBZ0FpQUNLQUlBS0FJc0VRQUFLQUlFUVQ5eElBSkJBQkRmQlVVRVFDQUNJQUlvQWdBb0Fpd1JBQUFvQWdSQlAzRVEzZ1VOQVFzZ0JFRVRRUlFnQWlBQ0tBSUFLQUlzRVFBQUVMQUlHellDQ0NBQklBUkJDR29RUVF3QkN5QUVRZXNwUWV3cElBSWdBaWdDQUNnQ0xCRUFBQkN3Q0JzMkFnUWdBU0FFUVFScUVFRUxJQVJCRUdva0FBdEdBUUYvSUFBUXB3RWlBaUFCU1FSQUlBQWdBU0FDYXhDQUZROExJQUlnQVVzRVFDQUFLQUlBSUFGQkRHeHFJUUVnQUJDbkFTRUNJQUFnQVJDbURDQUFJQUlRL0JRTEN5d0JBWDhnQUNnQ0JDSUJCRUFnQVJDNURnOExBMEFnQUJDbkFpRUJJQUFvQWdnaEFDQUJSUTBBQ3lBQUM5QUdBUVYvQW44Q1FBSkFJQUVvQWdBaUJFVUVRQ0FCSVFNTUFRc2dBU2dDQkVVRVFDQUJJUU1NQWdzZ0FSQ0xGU0lES0FJQUlnUU5BUXNnQXlnQ0JDSUVEUUJCQUNFRVFRQU1BUXNnQkNBREtBSUlOZ0lJUVFFTElRWUNmd0ovSUFNUXB3SUVRQ0FES0FJSUlBUTJBZ0FnQUNBRFJnUkFJQVFoQUVFQURBTUxJQU1vQWdoQkJHb01BUXNnQXlnQ0NDQUVOZ0lFSUFNb0FnZ0xLQUlBQ3lFQ0lBTXRBQXhGQW44Z0FTQURSd1JBSUFNZ0FTZ0NDRFlDQ0FKL0lBRVFwd0lFUUNBREtBSUlEQUVMSUFNb0FnaEJCR29MSUFNMkFnQWdBeUFCS0FJQUlnVTJBZ0FnQlNBREVNOEVJQU1nQVNnQ0JDSUZOZ0lFSUFVRVFDQUZJQU1RendRTElBTWdBUzBBRERvQURDQURJQUFnQUNBQlJoc2hBQXNnQUVVTGNrVUVRQ0FHUlFSQUEwQWdBaENuQWlFRElBSXRBQXdoQVFKL0FrQWdBMFVFUUFKQUFrQUNRQUpBQW44Z0FVVUVRQ0FDUVFFNkFBd2dBaWdDQ0VFQU9nQU1JQUlvQWdnUTlRVWdBaUFBSUFBZ0FpZ0NBQ0lCUmhzaEFDQUJLQUlFSVFJTElBSW9BZ0FpQXdzRVFDQURMUUFNUlEwQkN5QUNLQUlFSWdFRVFDQUJMUUFNUlEwQ0N5QUNRUUE2QUF3Q1FDQUFJQUlvQWdnaUFVY0VmeUFCTFFBTURRRWdBUVVnQUF0QkFUb0FEQThMSUFFUXB3SkZEUVVnQVNnQ0NFRUVhZ3dHQ3lBQ0tBSUVJZ0ZGRFFFTElBRXRBQXhGRFFFTElBTkJBVG9BRENBQ1FRQTZBQXdnQWhEMEJTQUNLQUlJSVFJTElBSWdBaWdDQ0MwQUREb0FEQ0FDS0FJSVFRRTZBQXdnQWlnQ0JFRUJPZ0FNSUFJb0FnZ1E5UVVQQ3dKQUFuOGdBVVVFUUNBQ1FRRTZBQXdnQWlnQ0NFRUFPZ0FNSUFJb0FnZ1E5QVVnQWlBQUlBQWdBaWdDQkNJQlJoc2hBQ0FCS0FJQUlRSUxJQUlvQWdBaUFRc0VRQ0FCTFFBTVJRMEJDd0pBSUFJb0FnUWlBd1JBSUFNdEFBeEZEUUVMSUFKQkFEb0FEQUpBSUFBZ0FpZ0NDQ0lCUndSQUlBRXRBQXdOQVFzZ0FVRUJPZ0FNRHdzZ0FSQ25BZ1JBSUFFb0FnaEJCR29NQkFzZ0FTZ0NDQXdEQ3lBQkJIOGdBUzBBREVVTkFTQUNLQUlFQlNBREMwRUJPZ0FNSUFKQkFEb0FEQ0FDRVBVRklBSW9BZ2doQWdzZ0FpQUNLQUlJTFFBTU9nQU1JQUlvQWdoQkFUb0FEQ0FDS0FJQVFRRTZBQXdnQWlnQ0NCRDBCUThMSUFFb0FnZ0xLQUlBSVFJTUFBQUxBQXNnQkVFQk9nQU1Dd3MzQUNBQUlBUVFvZ1lnQUVFQU9nQjJJQUJCQVRzQmRDQUFJQU0yQW5BZ0FDQUNOZ0pzSUFBZ0FUWUNhQ0FBUWNTWkNUWUNBQ0FBQzFvQkEzOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQkVERWlBeENwQVNBQklBQW9BZ0JHQkVBZ0FDQURLQUlBTmdJQUN5QUFFQnNpQkNBRUtBSUFRWDlxTmdJQUlBQVFKU2dDQUNBQkVJd1ZJQU1vQWdBYUlBSkJFR29rQUFzNkFRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0NDQUFJQUlvQWdnaUFSQ09GU0FBRUNVYUlBSkJDR29RVnhEbUFpQUJFQ29nQWtFUWFpUUFDMDhCQVg4akFFRWdheUlDSkFBZ0FpQUFJQUVRendzMkFoZ2dBaUFBRUlFQk5nSVFJQUpCR0dvZ0FrRVFhaENYQWtVRVFDQUFJQUpCQ0dvZ0FpZ0NHQkF4S0FJQUVJOFZDeUFDUVNCcUpBQUxLd0VCZnlNQVFSQnJJZ0VrQUNBQVFTeHFJQUZCeXRrUkVHa2lBQkNRRlNBQUVDQWFJQUZCRUdva0FBcy9BUUovSXdCQkVHc2lBeVFBSUFBUUd5RUVBMEFnQkNBQUtBSUVJQUlRK1FFZ0FDQUFLQUlFUVFScU5nSUVJQUZCZjJvaUFRMEFDeUFEUVJCcUpBQUx3QUlCQW45QklDRUZBa0FDUUFKQUFrQUNRQUpBSUFGQjBBQk1CRUFnQVVGWGFpSUVRUVpORFFFZ0FVRkVhaUlFUVFkTEJFQWdBVUhRQUVZTkJnd0hDeUFFUVFGckRnY0dCZ1FGQmdZRUJRc2dBVUhVQUV3RVFDQUJRZEVBUmcwRElBRkIwd0JHRFFRZ0FVSFVBRWNOQmd3RkN5QUJRWngvYWlJRVFRVk5EUUVnQVVIVkFFWU5BaUFCUWRjQVJ3MEZEQU1MSUFSQkFXc09CZ1FDQkFFRUFnRUxJQVJCQVdzT0JRQURBd0lBQWd0QkVDRUZEQUlMUWNBQUlRVU1BUXRCQ0NFRkN5QUFRVGhxQW44Q1FDQUJRVmRxSWdSQkZrMUJBRUVCSUFSMFFZZUFvQU54RzBVRVFDQUJRYkIvYWlJQlFSWkxRUUVnQVhSQmk0REFBM0ZGY2cwQkN5QUFRVGhxSUFVUW9nSWhBVUh5QUF3QkN5QUFRVGhxSUFVUXlRRWhBVUh4QUFzZ0EwRUJUZ1IvSUFCQk9Hb2dBU0FERUxFQkJTQUJDeUFDRVBnQkM5NEVBQ0FDUWdBM0FBQWdBa0VBTmdBSEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQUtBSm9RYmw3YWlJQVFjOEFTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQVFRSnJEazRYRnhnWUZ4Y1hGeGNYRnhjWEZ4WVdGeGdYRndBQUFBQVhGd0VZR1FNRUJRWUhDQnNhQ2dzZER4QWNEQTBPRVJJVEhoNFhGeGdaQXdRR0d4b2REeEFBSEF3TkRoRVNFeGNYRnh3WUd4VUFDeUFDUVFFNkFBQVBDeUFDUVFFNkFBRVBBQXNBQUFzZ0FrRUJPZ0FEQWtBZ0FSRHpCUTBBSUFFdEFBRkJDSFFpQUVHQUJFWUVmeUFCRUlvQlJRMEJJQUV0QUFGQkNIUUZJQUFMUVlBR1J3MFVDd3dVQ3lBQ1FZRUNPd0FEQWtBZ0FSRHpCUTBBSUFFdEFBRkJDSFFpQUVHQUJFWUVmeUFCRUlvQlJRMEJJQUV0QUFGQkNIUUZJQUFMUVlBR1J3MFRDd3dUQ3lBQ1FRRTZBQUVNRXdzZ0FrRUJPZ0FDREJJTElBSkJnUUk3QUFFUEN5QUNRUUU2QUFRZ0FrR0JBanNBQVE4QUN3QUFDeUFDUVFFNkFBRU1FQXNnQWtFQk9nQUVJQUpCQVRvQUJ5QUNRUUU2QUFFUEN5QUNRUUU2QUFrTURBc2dBa0VCT2dBSkRBMExJQUpCQVRvQUNRd0xDeUFDUVFFNkFBUU1EUXNnQWtHQkFqc0FCUThMSUFKQkFUb0FBZ3dMQ3lBQ1FRRTZBQVFnQWtFQk9nQUdEQVVMSUFKQmdRSTdBQVVNQkFBTEFBQUxJQUpCQVRvQUJ3d0dDeUFDUVFFNkFBZ0xEd3NnQWtFQk9nQUNEd3NnQWtFQk9nQUVEd3NnQWtFQk9nQUVDeUFDUVFFNkFBY1BDeUFDUVFFNkFBa1BDeUFDUVFFNkFBWVBDeUFCTFFBQklRQWdBa0VCT2dBS0lBSWdBRUVJZEVHQURrWTZBQWdMdEFZQ0EzOEJmaU1BUVlBQmF5SUZKQUFnQlNBRE5nSjRJQVVnQWpZQ2ZBSkFBa0FnQWlBQ0tBSUFLQUtBQVJFQUFBMEFJQU1nQXlnQ0FDZ0NnQUVSQUFBTkFDQUZJQU0yQW5RZ0JTQUNOZ0p3SUFVZ0JTa0RjRGNEQUNBQklBVWdCQkM3RENFQ0RBRUxJQVZCNkFCcUlBQkJBU0FDSUFNUXdRMGdCU0FGUWVnQWFpZ0NBQ0lETmdKOElBVWdCVUhvQUdvUUpTZ0NBQ0lBTmdKNFFRQWhBaUFEUlNBQVJYSU5BQ0FCSUFFb0FnQW9BbmdSQUFBaUJpQUdLQUlBS0FKa0VRQUFSUVJBSUFWQkVHb2dBeUFES0FJQUtBSjRFUUFBSWdZZ0JpZ0NBQ2dDSEJFQUFFRUFJQUVnQVNnQ0FDZ0NlQkVBQUNJR0lBWW9BZ0FvQWpBUkFBQkJBRUVBUVFBUVJTRUdJQVVnQXpZQ2ZDQUZJQUEyQW5nZ0FDQUFLQUlBS0FKNEVRQUFJQU1nQXlnQ0FDZ0NlQkVBQUJEQUFVVUVRQ0FGSUFVZ0JRSi9RYWdCRUVZaUFoRDlBeUVISUFJZ0JDQUNLQUlBS0FJRUVRRUFJQWNMSUFBUW93TWdBeENqQXlBQkVLTURJZ0lnQmlBQ0tBSUFLQUowRVFFQUlBSkIyQUVRb0FJTElBWVFOUm9NQVFzZ0JTZ0NlQ0lESUFNb0FnQW9BbmdSQUFBZ0JTZ0NmQ0lBSUFBb0FnQW9BbmdSQUFBUXdBRU5BQUpBSUFFZ0FTZ0NBQ2dDRkJFQUFFVU5BQ0FBSUFBb0FnQW9BaFFSQUFCRkRRQWdBeUFES0FJQUtBSVVFUUFBUlEwQUlBQWdBeUFCSUFFb0FnQW9BaFFSQUFBUVMwRUFFQTh0QUFBYklRSU1BUXRCK0FBUVJpSUNJQUVnQUNBRElBQWdBQ2dDQUNnQ2VCRUFBQkNORlJvZ0FpQUVJQUlvQWdBb0FnUVJBUUFnQlNBQUlBQW9BZ0FvQW9RQkVRQUFMUUFIUVFkeE5nSVFJQVVnQXlBREtBSUFLQUtFQVJFQUFDMEFCMEVIY1RZQ0RDQUZRUkJxSUFWQkRHb1FwZ0UxQWdBaENDQUNJQUlvQWdBb0FvUUJFUUFBSWdRZ0JDa0NCRUwvLy85SGd5QUlRaGlHUW9DQWdEaURoRGNDQkFKQUFrQUNRQ0FCSUFFb0FnQW9Bb1FCRVFBQUVJOENCRUFnQUNBREVMd05EUUVMSUFFZ0FTZ0NBQ2dDaEFFUkFBQVE1Z0ZGRFFFZ0FDQUFLQUlBS0FLRUFSRUFBQkNQQWtVTkFTQURJQU1vQWdBb0FvUUJFUUFBRUk4Q1JRMEJDeUFDSUFJb0FnQW9Bb1FCRVFBQUVLa0REQUVMSUFJZ0FpZ0NBQ2dDaEFFUkFBQVF3d0lMQ3lBRlFZQUJhaVFBSUFJTFpnRUNmeU1BUVJCcklnTWtBQ0FBUVRocUVITWdBU0FCS0FJQUtBSzhBUkVBQUNJRUlBQWdCQ2dDQUNnQ0NCRUJBQ0FESUFBZ0FTQUJLQUlBS0FLOEFSRUFBQ0lBSUFBb0FnQW9BbmdSQUFBUW9RRTJBZ3dnQWlBRFFReHFFRUVnQTBFUWFpUUFDeXNCQVg5QkFTRUNBa0FnQUNBQkVOOENRUnhHRFFBZ0FDQUJFTjRHRFFBZ0FDQUJFTFFNSVFJTElBSUxKUUFnQUNBQ0VLSUdJQUFnQVRZQ2FDQUFRZHlQQ1RZQ0FDQUFRZXdBYWlBREVQOEJHZ3MzQVFGL0lBQW9BZ0FFUUNBQUVQZ0RJQUFRR3hvZ0FDZ0NBQ0VCSUFBUXR3SWFJQUVRS2lBQUVCdEJBRFlDQUNBQVFnQTNBZ0FMQzZFQkFRSi9Jd0JCRUdzaUF5UUFBa0FnQVNBQ0VLOEZJZ1FnQUJDM0FrMEVRQ0FESUFJMkFnd2dCQ0FBRUJaTEJFQWdBeUFCTmdJTUlBTkJER29nQUJBV0VNY0ZJQUVnQXlnQ0RDQUFLQUlBRUpFRUdpQUFJQU1vQWd3Z0FpQUVJQUFRRm1zUXJ3Z01BZ3NnQUNBQklBSWdBQ2dDQUJDUkJCQ1dCd3dCQ3lBQUVKa1ZJQUFnQUNBRUVOc0VFUHdFSUFBZ0FTQUNJQVFRcndnTElBTkJFR29rQUF1NUJRRUlmeU1BUVRCcklnY2tBQ0FISUFVMkFpZ2dCeUFFTmdJc0FrQUNRQ0FCUWZoK2FpSUdRUXBMRFFCQkFTRUlBa0FDUUNBR1FRRnJEZ29DQWdJQ0FnSUJBd01EQUF0QmlBRWhBU0FBUVRocUlnWWdCQkNpQTBVTkFTQUdJQVVRK0FSRkRRRWdCeUFHUVlnQklBWWdCUkJpSWdFZ0JpQUJFTVVVSUFVUXFnRTJBaWhCandFaEFRd0NDeUFBUVRocUlnWWdCUkNpQTBVRVFFR1BBU0VCSUFZZ0JSRGdCVVVOQWdzZ0IwRXNhaUFIUVNocUVDNUJqd0VoQVNBSEtBSXNJUVFNQVF0QkFDRUlDd0pBQWtBZ0FFRTRhaUlHSUFRUTRBVkZCRUFnQmlBSEtBSW9FT0FGSUFoeVFRRkhEUUVMSUFJZ0JpQUdJQUVnQXlBSEtBSXNJQWNvQWlnUXFnRWlBQkQ1QkNBQ0lBWWdBQkQvQWlBR0lBQWdBaWdDQUJDR0FTRUVEQUVMUVFBaEJDQUJRZjkrYWlJQVFReExRUUVnQUhSQmxTRnhSWElOQUNBR0lBY29BaXdRb2dNaERDQUdJQWNvQWlnUW9nTWhEU0FHQW44Z0RBUkFJQVlnQnlnQ0xCRElBU0VKSUFkQkxHb01BUXNnQmlBSEtBSW9FTWdCSVFrZ0IwRW9hZ3NvQWdBUXJnUWhBQ0FHSUFZZ0F4QzdBaUFBRUxFQklRZ2dCMEVZYWhBd0lRb0NmeUFHSUFjb0Fpd1ErQVFFUUNBR0lBSW9BZ0FnQnlnQ0xDQUlFUEVFREFFTFFRQWdCaUFIS0FJb0VQZ0VSUTBBR2lBR0lBSW9BZ0FnQnlnQ0tDQUlFUEVFQ3lFRUlBZEJBRFlDRkNBSkJFQURRQ0FIUVFocUVEQWlDeUFIUVJScUVFY2dCQ0lBSVFVZ0FpQUdJQVlnQVNBSUlBd0VmeUFHSUFjb0Fpd2dDQ0FMRVBnQ0JTQUFDeUFOQkg4Z0JpQUhLQUlvSUFnZ0N4RDRBZ1VnQlFzUXFnRWlBQkQ1QkNBQ0lBWWdBQkQvQWlBSElBWWdBQ0FDS0FJQUVJWUJOZ0lFSUFvZ0IwRUVhaEJCSUFzUU5pQUhJQWNvQWhSQkFXb2lBRFlDRkNBQUlBbEpEUUFMQ3lBQ0lBWWdCaUFHSUFNZ0NoQ2RBeUFDS0FJQUVJWUJJZ1FRL3dJZ0NoQTJDeUFIUVRCcUpBQWdCQXRrQUNBQklBRWdBaUFERU40Q0lnQWdBQ2dDQUNnQ0dCRUFBQ0lCUWFrQklBRW9BZ0FvQXJnQkVRRUFJQUFnQWlBQ0tBSUFLQUo0RVFBQUlBQW9BZ0FvQW5RUkFRQWdBQ0FBS0FJQUtBSjhFUUFBSWdFZ0FTZ0NBQ2dDS0JFQUFCRERBaUFBQzA0QUlBQWdBU2dDQURZQ0FDQUFRUVJxSUFGQkJHb1Fxd2dnQUNBQktBSVFOZ0lRSUFCQkZHb2dBVUVVYWhDckNDQUFJQUV0QURBNkFEQWdBQ0FCS1FJb053SW9JQUFnQVNrQ0lEY0NJQXVTQVFFRGZ5QUFFRHdoQXlBQUVDVWhCUUpBSUFNRVFBSkFBMEFDUUFKL0lBQVFHeUFDSUFOQkVHb2lCQkRZQkFSQUlBTW9BZ0JGRFFZZ0F3d0JDeUFBRUJzZ0JDQUNFTmdFUlEwRElBTkJCR29oQkNBREtBSUVSUTBCSUFRaUF3c2hCU0FES0FJQUlRTU1BUXNMSUFFZ0F6WUNBQ0FFRHdzZ0FTQUROZ0lBSUFVUEN5QUFFQ1VoQXdzZ0FTQUROZ0lBSUFNTGZBRUNmeU1BUVNCcklnUWtBQ0FCSUFSQkhHb2dBaENlRlNJRktBSUFJUUlnQkVFQU9nQWJJQUpGQkVBZ0JFRUlhaUFCSUFNUXdBa2dBU0FFS0FJY0lBVWdCQ2dDQ0JEdUFpQUVRUWhxRUY4aEFpQUVRUUU2QUJzZ0JFRUlhaEN6QWdzZ0FDQUVRUWhxSUFJUU1TQUVRUnRxRUtJQklBUkJJR29rQUF0VUFRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0NDQUNJQUFRUURZQ0FDQUNRUWhxSUFJUW5BY2hBU0FBSUFBb0FnQWdBVUVEZEdvaUFVRUlhaUFBS0FJRUlBRVFwd2tRdHc0Z0FSQmhHaUFDUVJCcUpBQUxMQUVCZnlBQklBQW9BZ1FpQWtjRVFBTkFJQUFRR3hvZ0FrRklhaUlDSUFGSERRQUxDeUFBSUFFMkFnUUxMUUFnQVNBQUtBSUlSd1JBQTBBZ0FDZ0NFQm9nQUNBQUtBSUlRVWhxTmdJSUlBQW9BZ2dnQVVjTkFBc0xDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCRDZCRUU0YkdvYUlBQW9BZ0FnQUJENkJFRTRiR29hSUFBb0FnQWFDeTBBSUFNZ0F5Z0NBQ0FDSUFGcklnQkJTRzFCT0d4cUlnSTJBZ0FnQUVFQlRnUkFJQUlnQVNBQUVEMGFDd3RDQVFGL0l3QkJFR3NpQVNRQUlBQVFHeG9nQVVHa2tza2tOZ0lNSUFGQi8vLy8vd2MyQWdnZ0FVRU1haUFCUVFocUVLUUJLQUlBSVFBZ0FVRVFhaVFBSUFBTFVRRUJmeUFBRUxnTUlBQVFHeUFBS0FJQUlBQW9BZ1FnQVVFRWFpSUNFS1FWSUFBZ0FoQXVJQUJCQkdvZ0FVRUlhaEF1SUFBUUd5QUJFQ01RTGlBQklBRW9BZ1EyQWdBZ0FDQUFFUHNFRUtNVkMzMEJBbjhqQUVFUWF5SUVKQUFnQkVFQU5nSU1JQUJCREdvZ0JFRU1haUFERUlFQ0lBRUVRQ0FBS0FJUUdrR2trc2trSUFFaUEwa0VRQkNDQVFBTElBTkJPR3dRSmlFRkN5QUFJQVUyQWdBZ0FDQUZJQUpCT0d4cUlnSTJBZ2dnQUNBQ05nSUVJQUFRSXlBRklBRkJPR3hxTmdJQUlBUkJFR29rQUNBQUMxa0JBbjhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUFRcFJVaUF5QUJUd1JBSUFBUStnUWlBQ0FEUVFGMlNRUkFJQUlnQUVFQmREWUNDQ0FDUVFocUlBSkJER29RVWlnQ0FDRURDeUFDUVJCcUpBQWdBdzhMRUc0QUN5d0JBWDhnQUNnQ0FBUkFJQUFnQUNnQ0FCQ2hGU0FBRUJzYUlBQW9BZ0FoQVNBQUVQb0VHaUFCRUNvTEMxY0FBbjhDUUNBQUlBQW9BZ0FvQWh3UkFBQkJFRWNOQUNBQUlBQW9BZ0FvQWl3UkFBQW9BZ1JCUDNFaUFFRU1TdzBBUVFKQkFTQUFkRUc0UG5FTkFSb2dBRUVHUncwQVFRSkJBeUFCR3c4TFFmLy8vLzhIQ3dzM0FDQUFRUUFRdHd3Z0FFRUFPZ0IySUFCQkFUc0JkQ0FBSUFNMkFuQWdBQ0FDTmdKc0lBQWdBVFlDYUNBQVFjU1pDVFlDQUNBQUMxa0JBbjhqQUVIZ0FHc2lBeVFBSUFOQkNHcEJBRUVBUVFGQkFFRUFRUUFRUlNJRUlBQVFqd0VnQkVFQU5nSThJQVFnQTBFRWFpQURJQUVnQWtFQlJoQ1lCUm9nQXlnQ0FDRUFJQVFRTlJvZ0EwSGdBR29rQUNBQUM5SUJBUUYvSXdCQkVHc2lCeVFBSUFSQmZ6WUNBQ0FDSUFJb0FnQW9BaXdSQUFBUWxnSUVRQ0FESUFJZ0FpZ0NBQ2dDTEJFQUFDZ0NERFlDQUFzQ1FDQUZSUVJBSUFJZ0FpZ0NBQ2dDTEJFQUFCQ1dBZzBCSUFOQmZ6WUNBQXdCQ3lBREtBSUFRWDlNQkVBZ0EwRUFOZ0lBQ3lBQ0lBZEJER29nQjBFSWFpQUZJQVpCQVVZUW1BVWhCaUFBS0FLTUJCb2dBeUFHRUlRQ0FrQWdCVUVGUmcwQUlBSWdCeWdDRENBREtBSUFFUFFYUlEwQUlBTkJFQkNFQWdzZ0JDQUhLQUlNSUFNb0FnQnFOZ0lBQ3lBSFFSQnFKQUFMaUFFQkFuOGpBRUVnYXlJREpBQWdBQkFiSWdJZ0EwRUlhaUFBSUFBUSt3UkJBV29RcUJVZ0FCRDdCQ0FDRUtjVklnSW9BZ2dnQVJDNkRDQUNJQUlvQWdoQk9HbzJBZ2dnQUNBQ0VLWVZJQUlnQWlnQ0JCQ2lGU0FDS0FJQUJFQWdBaWdDRUJvZ0FpZ0NBQ0VBSUFJUUl5Z0NBQ0FDS0FJQWEwRTRiUm9nQUJBcUN5QURRU0JxSkFBTE1RRUJmeUFBS0FJUUdpQUFLQUlJSVFJRFFDQUNFTmNLSUFBZ0FDZ0NDRUVFYWlJQ05nSUlJQUZCZjJvaUFRMEFDd3RVQVFKL0l3QkJFR3NpQkNRQUlBSUVRQU5BSUFNZ0FpQUFFQnNnQWtFUWFpQUJFTnNESWdVYklRTWdBa0VFUVFBZ0JSdHFLQUlBSWdJTkFBc0xJQVJCQ0dvZ0F4QXhLQUlBSVFBZ0JFRVFhaVFBSUFBTFN3RUJmeU1BUVJCcklnRWtBQUpBSUFBb0FnUVFtZ0ZCQVVZRVFDQUFFS2tPREFFTElBRWdBQ2dDQkNJQUVFQTJBZ0FnQUNBQlFRaHFJQUVRWnlnQ0FCQ2dGUXNnQVVFUWFpUUFDN1lKQVFoL0l3QkIwQUJySWdja0FDQUhJQUkyQWt3Z0IwRi9OZ0pJQWtBZ0FoQTNRUUZJRFFBZ0FFRTRhaUVJSUFCQjVBZHFJUXdnQUVIUUIyb2hEUU5BSUFJZ0NoQTRLQUlBSVFZZ0NpRUNBa0FnQVNBQktBSUFLQUljRVFBQVFSQkdCRUFnRFNBTUlBZEJ6QUJxRU1jREVOMEVJQW9RRVNnQ0FDRUNJQUFnQmhDOURBMEJDeUFIUVJCcUlBWWdCaWdDQUNnQ0tCRUFBRUUwRUQwYUlBZEJFR29nQkJDOERDQUNRUUJJRFFBZ0NDQUZJQUlnQmlBR0tBSUFLQUlZRVFBQUVCTVF3UlFnQ0NBRklBSWdCaUFIS1FJVVFqU0lwMEVIY1JDNURFRi9FT01CSUFnZ0JTQUNJQVlRL2dSQmZ4RGpBUUpBSUFFZ0FTZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJRFVnUkFJQUVnQVNnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElFVWcwQkN5QUJJQUVvQWdBb0Fod1JBQUJCRUVjRVFDQUFLQUtNQkJvTUFRc2dDQ0FGSUFJZ0FDQUhRUkJxRU0wTVFYOFE0d0VnQ0NBRklBSWdBQ0FIUVJCcUVNd01RWDhRNHdFZ0FDQUZJQUlnQjBFUWFoRExEQXNnQ0NBRklBSWdCMEVRYWhES0RFRi9FT01CQWtBZ0FTQUJLQUlBS0FJY0VRQUFRUkJIRFFBZ0JDa0NCRUkvZzBJR1VnMEFJQWRCRUdvZ0J4QXdJZ2tnQUNnQ2pBUXRBSWdFRUxFSVFRQWhDeUFKRUJZRVFBTkFJQWdnQlNBQ0lBa2dDeEFSS0FJQVFYOFE0d0VnQzBFQmFpSUxJQWtRRmtrTkFBc0xJQWtRTmdzQ1FDQUJJQUVvQWdBb0FuQVJBQUFOQUNBSFFSQnFFSUFDUlEwQUlBZ2dCU0FDUVI0Z0J5Z0NKRUgvSDNFUTR3RUxJQVFRZ0FJRVFDQUdJQUFvQW93RUtBSUFFSWNFR2dzZ0JpQUdLQUlBS0FJb0VRQUFFTElEQkVBZ0NDQUZJQUpCSHlBR0lBWW9BZ0FvQWlnUkFBQW9BaFJCREhaQkIzRVE0d0VMQWtBZ0JpQUdLQUlBS0FJb0VRQUFFSVVEQkVBZ0NDQUZJQUpCSXlBR0lBWW9BZ0FvQWlnUkFBQXBBaGhDTW9pblFmOC9jUkRqQVF3QkN5QURSUTBBSUFBZ0FTQUdJQWRCeUFCcUlBY2dBeUFIS1FJVVFqU0lwMEVIY1JDdEZTQUhLQUpJSWdsQkFFNEVRQ0FJSUFVZ0FrRWpJQWtRNHdFTElBY2dCeWdDQURZQ1NBc2dBMFVnQmlBR0tBSUFLQUpzRVFBQVJYSkZCRUFnQ0NBRklBSkJCeUFHSUFNZ0J5a0NGRUkwaUtkQkIzRVFyQlVRNHdFTElBQWdCaUFHS0FJQUtBSW9FUUFBS0FJRVFRWjJRZjhEY1VFQkVMSUlJZ2xCLy8vLy93ZEhCRUFnQ0NBRklBSkJDeUFKRU9NQkN5QUlJQVVnQWlBQUlBWWdCaWdDQUNnQ0tCRUFBQkQ3QTBGL0VPTUJBbjhnQUNnQ2pBUWFJQWNvQWhCRlFRRnlSUXNFUUNBSVFZRGRFUkJDSUFnZ0JTQUNJQWNvQWhBUXdCUUxBa0FnQ1VFSlJ3MEFJQVlnQmlnQ0FDZ0NLQkVBQUMwQUtBUkFJQWdnQlNBQ1FZUXBRWDhRNHdFZ0NFR0hLUkFoSUFoQmh0d1JFRUlMSUFZZ0JpZ0NBQ2dDS0JFQUFDZ0NMRUdBY0VZTkFDQUlJQVVnQWtHSUtTQUdJQVlvQWdBb0FpZ1JBQUFvQWl3UTR3RWdDRUdMS1JBaElBaEJuZHdSRUVJTElBWWdCaWdDQUNnQ0tCRUFBQzBBSjBVTkFDQUlJQVVnQWtHQ0tVRi9FT01CSUFoQmd5a1FJU0FJUWJyY0VSQkNDeUFLUVFGcUlnb2dCeWdDVEJBM1RnMEJJQWNvQWt3aEFnd0FBQXNBQ3lBQVFUaHFJZ0lnQlNBQklBUXBBZ1JDTklpblFRZHhFTGtNUVg4UWVDQUNJQVVnQVNBQUtBS01CQzBBMmdNUXFoVkJmeEI0SUFkQjBBQnFKQUFMU3dFQmZ5TUFRUkJySWdJa0FBSkFJQUFvQWdRZ0FCQWJLQUlBU1FSQUlBQVFHeUFBS0FJRUlBRVF1Z3dnQUNBQUtBSUVRVGhxTmdJRURBRUxJQUFnQVJDdUZRc2dBa0VRYWlRQUMyWUJBWDhqQUVFUWF5SUNKQUFnQWlBQUlBRWdBQkE4SUFBUUpSQ3dGVFlDQ0NBQ0lBQVFnUUUyQWdBQ2Z3SkFJQUpCQ0dvZ0FoQWVSUTBBSUFBUUd5QUJJQUpCQ0dvUVZ4RGJBdzBBSUFJb0FnZ01BUXNnQUJDQkFRc2hBQ0FDUVJCcUpBQWdBQXVXQmdFS2Z5TUFRYUFCYXlJRkpBQWdCU0FDTmdLY0FTQUZRWkFCYWhBd0lRZ2dCVUdBQVdvUU1DRUhBa0FnQWhBM1FRRklEUUFnQUVHa0NHb2hEU0FBUWVRSGFpRUxJQUJCMEFkcUlRd0RRQUpBSUFJZ0JoQTRLQUlBSWdJZ0FpZ0NBQ2dDREJFQUFBUkFJQWxCQVdvaENTQUJJQUVvQWdBb0Fod1JBQUJCRUVjTkFTQU1JQXNnQlVHY0FXb1F4d01RM1FRZ0JoQVJRWDgyQWdBTUFRc2dBU0FCS0FJQUtBSWNFUUFBUVJCR0JFQWdBQ0FDRUwwTUJFQWdEQ0FMSUFWQm5BRnFFTWNERU4wRUlBWVFFVUYvTmdJQUlBbEJBV29oQ1F3Q0N5QU1JQXNnQlVHY0FXb1F4d01RM1FRZ0JoQVJJQVlnQ1dzMkFnQUxJQVZCeUFCcUlBSWdBaWdDQUNnQ0tCRUFBRUUwRUQwYUlBVkJ5QUJxSUFRUXZBd0NRQ0FGUWNnQWFoQ0FBZzBBSUFRUWdBSkZEUUFnQlNBRktBSmNRWUJnY1NBRUtBSVVRZjhmY1hJMkFsd0xRUUFoQ2lBRUtRSUVRaitEUWdaUkJFQWdCaUFGS0FLY0FSQTNRWDlxUmlFS0N5QUNFUFFCQkVBZ0JTQUNJQUlvQWdBb0FsUVJBQUEyQWtRZ0JTQU5JQVZCeEFCcUVNSU1OZ0lJSUFVZ0RSQitOZ0pBSUFWQkNHb2dCVUZBYXhDNEF3UkFJQVVnQWpZQ1JDQUZRUWhxSWc0Z0JVSEVBR29vQWdBMkFnQWdEa0VFYWlBRlFjZ0Fha0UwRUQwYUlBY2dCVUVJYWhDekZRc2dCU0FBSUFJZ0F5QUZRY2dBYWlBS1FRRVE0UVkyQWdnZ0NDQUZRUWhxRUVFTUFRc2dCU0FBSUFJZ0F5QUZRY2dBYWlBS1FRQVE0UVkyQWdnZ0NDQUZRUWhxRUVFTElBWkJBV29pQmlBRktBS2NBUkEzVGcwQklBVW9BcHdCSVFJTUFBQUxBQXNnQUVFNGFpQUlJQUVnQVNnQ0FDZ0NGQkVBQUJBVEVKb0lJUVlnQVNBRUVNRU1SUVJBSUFBZ0EwRThiR29nQkNrQ0JFSTBpS2RCQjNGQkZHeHFRZWdFYWlBRlFad0JhaERIQXlBR05nSUFDeUFBSUFFZ0JTZ0NuQUVnQXlBRUlBWVFzaFVnQnhEN0JFRUJUZ1JBSUFWQkNHcEJCSEloQVVFQUlRSURRQ0FGUVFocUlBY29BZ0FnQWtFNGJHcEJPQkE5R2lBQUlBVW9BZ2dnQXlBQlFRQkJBQkRoQmhvZ0FrRUJhaUlDSUFjUSt3UklEUUFMQ3lBSEVMZ01JQWNRcVJVZ0NCQTJJQVZCb0FGcUpBQWdCZ3RYQVFGL0l3QkJFR3NpQUNRQUlBQWdBVFlDREFKQUlBRkZCRUFNQVF0QnFBRVFSaUlCRVAwRElnTWdBU2dDQUNnQ3ZBRVJBQUFnQUVFTWFoRGNBU0FCSUFJZ0FTZ0NBQ2dDQkJFQkFBc2dBRUVRYWlRQUlBTUxjZ0VCZndKQUlBRWdBU2dDQUNnQ0xCRUFBQzBBSkVGNWFpSUNRU1ZMRFFBQ1FDQUNRUTlyRGhFQkFRRUJBUUVBQUFBQUFBRUJBUUVCQVFBTElBQkJPR3BCTVJBaEN5QUJJQUVvQWdBb0Fpd1JBQUF0QUNRaUFFRXNUUVJBSUFCQkFuUkJoT3NSYWlnQ0FBOExRZi8vLy84SEMzY0FBa0FnQVMwQUFFRi9haUlCUVFoTERRQUNRQUpBQWtBQ1FDQUJRUUZyRGdnRUF3UUVCQVFBQVFJTElBQkJPR3BCSUJDaUFnOExJQUJCT0dwQklCREpBUThMSUFCQk9HcEJJQkRFQXc4TElBQkJPR29pQUVHOTRSRVFRaUFBUVpBbkVDRWdBRUVRRU1RRER3c2dBRUU0YWtFZ0VNUURDNklCQVFKL0FrQWdBQ0FBS0FJQUtBSWNFUUFBUVJCSERRQUNRQ0FBSUFBb0FnQW9BaXdSQUFBcEFnUkNQNE5DQlZFTkFDQUFJQUFvQWdBb0Fpd1JBQUFwQWdSQ1A0TkNCbEVOQUNBQUlBQW9BZ0FvQWl3UkFBQVFyZ0pGRFFFTElBQWdBQ2dDQUNnQ0xCRUFBQ2tDQkVJM2lLZEJEM0VpQWtFRlMwRUJJQUowUVN4eFJYSU5BQ0FBSUFBb0FnQW9BaXdSQUFBcEFnUkNONGluUVE5eElRRUxJQUVMNlFNQkJIOGpBRUVnYXlJREpBQUNRQ0FCSUFFb0FnQW9Bb2dCRVFBQUtBSUVRUUJPQkVBZ0EwRUFOZ0lRSUFBZ0FTQUJLQUlBS0FKNEVRQUFBbjhnQVNBQktBSUFLQUpFRVFBQUJFQWdBU0FCS0FJQUtBSkVFUUFBRUVzTUFRc2dBU0FCS0FJQUtBSmdFUUFBRUpBQ0N5QURRUkJxUVFBUXRRUWhBUXdCQ3lBQklBRW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXNFUUFBS1FJRVFzRC9BWU5DZ0FGUkJFQWdBRUU0YWlFQ1FRQWhBU0FEUVJCcUVEQWhCQU5BSUFBb0Fvd0VJQUVReEF3aEJTQURJQUlnQUNnQ2pBUWdBUkNEQWlBRlFYOUhFSFEyQWd3Z0JDQURRUXhxRUVFZ0JVRi9Sd1JBSUFJZ0JCQ1FBU2dDQUVFQklBQW9Bb3dFSUFFUXhBd1FlQXNnQVVFQmFpSUJRUU5IRFFBTElBSWdBaUFDUVNBUXlRRkJBeEN4QVNBRVFRRVE5UU1oQVNBRUVEWU1BUXNnQVNBQktBSUFLQUpnRVFBQUlnSUVRQ0FBUVRocUFuOGdBaWdDaUFFaUFRUkFJQUVnQUNBQktBSUFLQUlJRVFFQUlBQWdBU0FCS0FJQUtBSjRFUUFBRUtFQkRBRUxJQUlRa0FJaEFTQURRUUEyQWhBZ0FDQUNJQUlvQWdBb0FuZ1JBQUFnQVNBRFFSQnFRUUVRdFFRTElnRWdBaUFDS0FJQUtBTEFBUkVBQUJBVEVOb0ZEQUVMSUFBb0FqUWdBMEVRYWtHdzRCRVFhU0lBRUtBRElBQVFJQnBCQUNFQkN5QURRU0JxSkFBZ0FRdXNBUUVGZnlNQVFSQnJJZ01rQUNBQUVDTWFJQUVvQWdBaEJBSkFBa0FnQUJBOElnVkZEUUFnQUNBRUlBVVFOQ0lHRUJFb0FnQWlBa1VOQUNBQ0tBSUFJZ0pGRFFBRFFDQUVJQUlvQWdSSEJFQWdBaWdDQkNBRkVEUWdCa2NOQWdzQ1FDQUVJQUlvQWdSSERRQWdBQkJESUFKQkNHb2dBUkNMQTBVTkFDQURRUWhxSUFJUU1TZ0NBQ0VDREFNTElBSW9BZ0FpQWcwQUN3c2dBeERMQVNJQ05nSUlDeUFEUVJCcUpBQWdBZ3NqQUNBQVFSQnFJZ0FnQVJBUktBSUFSUVJBUVFBUEN5QUFJQUVRRVNnQ0FDZ0NDQXRGQVFGL0l3QkJJR3NpQWlRQUlBSWdBUkNTQXpZQ0VCRG5BU0FDUVJocUlBQWdBU0FDUVJCcUlBSkJDR29ReFF3Z0FrRVlhaEJFSVFBZ0FrRWdhaVFBSUFCQkJHb0w1d1FCQkg4akFFRVFheUlHSkFBQ1FDQUJJQUVvQWdBb0FvZ0JFUUFBRUk4Q0JFQWdBQ0FCRUxvVklnUU5BUXNnQUNBQklBRW9BZ0FvQW5nUkFBQVF4Z3doQkNBQ1JRUkFJQUFnQVNBQktBSUFLQUo0RVFBQUVMOEJJUUlMQWtBZ0FTQUJLQUlBS0FKNEVRQUFFTEFDUlFSQUlBRWdBU2dDQUNnQ2VCRUFBQkN2QWtVTkFRc0NRQUpBSUFSQmYyb2lBMEVMU3dSQUlBUkI1U2xIRFFFTUFnc0NRQUpBQWtBZ0EwRUJhdzRMQVFBREF3TURBd0lEQXdRQUN5QUFRVGhxSWdOQmhPQVJRWUNHQkJDeUFTQURRZFFpRUNFTUJBc2dBRUU0YWlJRFFZVGdFVUdBaGdRUXNnRWdBU0FCS0FJQUtBSjRFUUFBSWdVZ0JTZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJR1VRUkFJQU5CMFNJUUlRd0VDeUFEUWRJaUVDRU1Bd3NnQUVFNGFpSURRWVRnRVVHQWhnUVFzZ0VnQTBIVEloQWhEQUlMSUFFZ0FTZ0NBQ2dDZUJFQUFCQ3dBZ1JBSUFCQk9HcEJDUkFoQ3lBQklBRW9BZ0FvQW5nUkFBQVFyd0pGRFFFZ0FFRTRha0VXRUNFTUFRc2dBRUU0YWlJRFFZVGdFVUdBaGdRUXNnRWdBMEhSSWhBaEN3SkFJQUVnQVNnQ0FDZ0NlQkVBQUJER0FrVU5BQUpBSUFSQkFrY0VRQ0FFUVFsSERRRWdBRUU0YWlJRFFacmdFVUdBaWdRUXNnRWdBMEhpSWhBaERBSUxJQUJCT0dvaUEwR2E0QkZCZ0lvRUVMSUJJQU5CNFNJUUlRd0JDeUFBUVRocUlRTWdCRUVNUmdSQUlBTkJtdUFSUVlDS0JCQ3lBU0FEUWVBaUVDRU1BUXNnQTBFbkVDRUxJQVlnQVNBQktBSUFLQUxBQVJFQUFCQVRJZ0VRSWlJRFFRVkJuTE1SRUlVQ1JTRUZJQU1RR1JvZ0FFRTRhaUFFSUFKQnIrQVJJQUVnQlJ0QkFCRHlBeUVFQ3lBR1FSQnFKQUFnQkF1SkFRRUJmeU1BUVJCcklnUWtBQUpBQWtBZ0FrSEFYV3BCQkVzTkFDQURJQU1vQWdBb0FtZ1JBQUFOQUNBRUlBRkJPR29pQVNBQlFTQVF5UUZCQkJDeEFUWUNBQ0FFSUFGQndBQVF5UUUyQWd3Z0FDQUVJQVJCREdvUTR3d01BUXNnQkVHQTRCRW9BZ0EyQWdBZ0JFR0E0QkVvQWdBMkFnUWdBQ0FFS1FNQU53SUFDeUFFUVJCcUpBQUxTUUVCZnlNQVFSQnJJZ1VrQUNBQkVDVWlBU0FBUVJnUUppQUZRUWhxSUFGQkFCRERBUkNSQVNJQUtBSUFRUkJxSUFJZ0F5QUVFTThISUFBUUpVRUJPZ0FFSUFWQkVHb2tBQXVTQVFFRGZ5QUFFRHdoQXlBQUVDVWhCUUpBSUFNRVFBSkFBMEFDUUFKL0lBQVFHeUFDSUFOQkVHb2lCQkRiQXdSQUlBTW9BZ0JGRFFZZ0F3d0JDeUFBRUJzZ0JDQUNFTnNEUlEwRElBTkJCR29oQkNBREtBSUVSUTBCSUFRaUF3c2hCU0FES0FJQUlRTU1BUXNMSUFFZ0F6WUNBQ0FFRHdzZ0FTQUROZ0lBSUFVUEN5QUFFQ1VoQXdzZ0FTQUROZ0lBSUFNTExBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnZ2dBQ0FDS0FJSUVOSURJQUJCQURZQ0RDQUNRUkJxSkFBTFdnQWpBRUVRYXlJREpBQWdBUkFiSVFFZ0FFRVlFQ1lnQTBFSWFpQUJRUUFRd3dFUWtRRWlBQ2dDQUVFSWFpQUVLQUlBRU1JVklBQVFKVUVCT2dBRUlBQW9BZ0FnQWpZQ0JDQUFLQUlBUVFBMkFnQWdBMEVRYWlRQUN6VUJBWDhnQVNBQUtBSUlSd1JBQTBBZ0FDZ0NFQm9nQUNBQUtBSUlRWHhxSWdJMkFnZ2dBaEErSUFBb0FnZ2dBVWNOQUFzTEN6MEJBWDhnQVNBQ1J3UkFJQU1vQWdBaEJBTkFJQUFnQkVGOGFpQUNRWHhxSWdJUXR3Z2dBeUFES0FJQVFYeHFJZ1EyQWdBZ0FTQUNSdzBBQ3dzTHlRVUJDSDhqQUVFUWF5SUZKQUFnQlNBQ0lBRVFzd2dpQkRZQ0RBSkFJQVJCQVVnTkFBSkFJQUVvQWdRaUFrVUVRQ0FES0FJRUlRSU1BUXNnQlVFZ0lBSnJJZ0kyQWdnZ0JVRUlhaUFGUVF4cUVQNEJJUVFnQlNBRktBSU1JQVFvQWdBaUJHczJBZ3dnQXlnQ0JDRUdJQUVvQWdBb0FnQWhDQ0FCS0FJRUlRa2dCU0FFTmdJSUlBVkJJQ0FHYXlJS05nSUVJQVZCQ0dvZ0JVRUVhaENrQVNFTElBTW9BZ0FpQnlBSVFYOGdDWFJCZnlBQ0lBUnJkbkZ4SWdnZ0F5Z0NCQ0lDSUFFb0FnUWlCbXQwSUFnZ0JpQUNhM1lnQWlBR1N4c2dCeWdDQUVGL0lBSjBRWDhnQ2lBTEtBSUFJZ1pyZG5GQmYzTnhjallDQUNBRElBSWdCbW9pQ1VFZmNTSUNOZ0lFSUFNZ0J5QUpRUU4yUWZ6Ly8vOEJjV29pQnpZQ0FDQUVJQVpySWdSQkFVNEVRQ0FISUFjb0FnQkJmMEVnSUFScmRrRi9jM0VnQ0NBQktBSUVJQVpxZG5JMkFnQWdBeUFFTmdJRUlBUWhBZ3NnQVNBQktBSUFRUVJxTmdJQUlBVW9BZ3doQkF0QklDQUNheUVHSUFSQklFNEVRRUYvSUFKMElnaEJmM01oQ1NBQktBSUFJUWNEUUNBREtBSUFJZ1FnQkNnQ0FDQUpjU0FIS0FJQUlnY2dBblJ5TmdJQUlBTWdCRUVFYWpZQ0FDQUVJQVFvQWdRZ0NIRWdCeUFHZG5JMkFnUWdCU0FGS0FJTUlncEJZR29pQkRZQ0RDQUJJQUVvQWdCQkJHb2lCellDQUNBS1FUOUtEUUFMQ3lBRVFRRklEUUFnQVNnQ0FDZ0NBQ0VJSUFVZ0JqWUNDQ0FGUVF4cUlBVkJDR29RL2dFaEFTQURLQUlBSWdJZ0FpZ0NBRUYvSUFNb0FnUWlCM1JCZnlBR0lBRW9BZ0FpQVd0MmNVRi9jM0VnQ0VGL1FTQWdCR3QyY1NJR0lBZDBjallDQUNBRElBRWdCMm9pQkVFZmNUWUNCQ0FESUFJZ0JFRURka0g4Ly8vL0FYRnFJZ0kyQWdBZ0JTQUZLQUlNSUFGcklnUTJBZ3dnQkVFQlNBMEFJQUlnQWlnQ0FFRi9RU0FnQkd0MlFYOXpjU0FHSUFGMmNqWUNBQ0FESUFVb0FndzJBZ1FMSUFBZ0F4Q1JBaG9nQlVFUWFpUUFDOVVDQVFOL0l3QkJFR3NpQkNRQUlBUWdBaUFCRUxNSUlnSTJBZ3dDUUNBQ1FRRklEUUFnQVNnQ0JDSUZCRUFnQkVFZ0lBVnJJZ1kyQWdnZ0JFRUlhaUFFUVF4cUVQNEJJUUlnQkNBRUtBSU1JQUlvQWdBaUFtczJBZ3dnQXlnQ0FDSUZJQVVvQWdCQmZ5QUJLQUlFZEVGL0lBWWdBbXQyY1NJR1FYOXpjU0FCS0FJQUtBSUFJQVp4Y2pZQ0FDQURJQUlnQXlnQ0JHb2lBa0VmY1RZQ0JDQURJQVVnQWtFRGRrSDgvLy8vQVhGcU5nSUFJQUVnQVNnQ0FFRUVhallDQUNBRUtBSU1JUUlMSUFNb0FnQWdBU2dDQUNBQ1FTQnRJZ1ZCQW5RaUFoRGtBeUFFSUFRb0Fnd2dCVUVGZEdzaUJUWUNEQ0FESUFNb0FnQWdBbW8yQWdBZ0JVRUJTQTBBSUFFZ0FTZ0NBQ0FDYWlJQk5nSUFJQU1vQWdBaUFpQUNLQUlBUVg5QklDQUZhM1lpQWtGL2MzRWdBU2dDQUNBQ2NYSTJBZ0FnQXlBRUtBSU1OZ0lFQ3lBQUlBTVFrUUlhSUFSQkVHb2tBQXRxQVFGL0l3QkJNR3NpQkNRQUFrQWdBU2dDQkNBREtBSUVSZ1JBSUFBZ0JFRW9haUFCRUpFQ0lBUkJJR29nQWhDUkFpQUVRUmhxSUFNUWtRSVF4eFVNQVFzZ0FDQUVRUkJxSUFFUWtRSWdCRUVJYWlBQ0VKRUNJQVFnQXhDUkFoREdGUXNnQkVFd2FpUUFDekFCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBRUpFQ0lRQWdBaUFCRUpFQ0lBQVFzd2doQUNBQ1FSQnFKQUFnQUFzb0FDQUFJQUVRTGlBQVFRUnFJQUZCQkdvUUxpQUFFQnNnQVJBYkVDNGdBQkFiR2lBQkVCc2FDNndCQVFSL0l3QkJNR3NpQXlRQUlBQW9BZ1FoQkNBQUlBTkJLR29nQVJDUkFpQURRU0JxSUFJUWtRSVF5UlVnQUNnQ0JHb2lCVFlDQkNBRVFRQWdCVUYvYWlBRVFYOXFjMEVnU1J0RkJFQWdBQ2dDQUNJR0lBWWdCVUYvYWtFRGRrSDgvLy8vQVhGcUlBVkJJVWtiUVFBMkFnQUxJQU5CR0dvZ0FSQ1JBaUVCSUFOQkVHb2dBaENSQWlFQ0lBTkJDR29nQUNBRUVJY0hJQU1nQVNBQ0lBTkJDR29ReUJVZ0EwRXdhaVFBQ3pRQUl3QkJFR3NpQVNRQUlBQkNBRGNDQUNBQlFRQTJBZ3dnQUVFSWFpQUJRUXhxSUFGQkNHb1FvUWNnQVVFUWFpUUFJQUFMY1FFQ2Z5TUFRVEJySWdJa0FDQUFFTFVJSUFGSkJFQWdBa0VnYWdKL0lBQVFHeG9nQWtFWWFnc1F6QlVpQXlBQkVPSU5JQUpCRUdvZ0FFRUFFSWNISUFKQkNHb2dBQ0FBS0FJRUVJY0hJQU1nQWtFUWFpQUNRUWhxRU1zVklBQWdBeERLRlNBREVJZ0hDeUFDUVRCcUpBQUxYd0VDZnlNQVFSQnJJZ0lrQUNBQUVOVU5JZ01nQVU4RVFDQUFFTFVJSWdBZ0EwRUJka2tFUUNBQ0lBQkJBWFEyQWd3Z0FpQUJRUjlxUVdCeE5nSUlJQUpCREdvZ0FrRUlhaEJTS0FJQUlRTUxJQUpCRUdva0FDQUREd3NRYmdBTENRQWdBQkQ5QWhBcUMrZ0RBZ1YvQVgwakFFRWdheUlGSkFBZ0FSQWpJQUlRNXdZaENDQUJFRHdoQmlBRlFRQTZBQjhDUUFKQUlBWkZEUUFnQVNBSUlBWVFOQ0lKRUJFb0FnQWlCMFVOQUFOQUlBY29BZ0FpQjBVTkFTQUlJQWNvQWdSSEJFQWdCeWdDQkNBR0VEUWdDVWNOQWdzZ0FSQkRJQWRCQ0dvZ0FoQ21BMFVOQUFzTUFRc2dCVUVRYWlBQklBaEI0TnNSSUFNZ0JCRERGU0FCRUNNb0FnQWhBaUFCRUVNaEF3SkFJQVlFUUNBREtnSUFJQWF6bENBQ1FRRnFzMTFCQVhNTkFRc2dCU0FHRUxvQlFRRnpJQVpCQVhSeU5nSU1JQVVDZnlBQkVDTW9BZ0JCQVdxeklBRVFReW9DQUpXTklncERBQUNBVDEwZ0NrTUFBQUFBWUhFRVFDQUtxUXdCQzBFQUN6WUNDQ0FCSUFWQkRHb2dCVUVJYWhCU0tBSUFFUEFNSUFnZ0FSQThJZ1lRTkNFSkN3SkFJQUVnQ1JBUktBSUFJZ0pGQkVBZ0JTZ0NFQ0FCUVFocUlnSW9BZ0EyQWdBZ0FpQUZLQUlRTmdJQUlBRWdDUkFSSUFJMkFnQWdCU2dDRUNnQ0FFVU5BU0FGS0FJUUlRSWdBU0FGS0FJUUtBSUFLQUlFSUFZUU5CQVJJQUkyQWdBTUFRc2dCU2dDRUNBQ0tBSUFOZ0lBSUFJZ0JTZ0NFRFlDQUFzZ0JVRVFhaEJmSVFjZ0FSQWpJZ0VnQVNnQ0FFRUJhallDQUNBRlFRRTZBQjhnQlVFUWFoRG9CZ3NnQUNBRlFSQnFJQWNRTVNBRlFSOXFFS0lCSUFWQklHb2tBQXRYQVFKL0l3QkJJR3NpQXlRQUlBQVFHeUlDSUFOQkNHb2dBQ0FBRUJaQkFXb1Eyd1FnQUJBV0lBSVE4Z0lpQWlnQ0NDQUJFTGNJSUFJZ0FpZ0NDRUVFYWpZQ0NDQUFJQUlRMHd3Z0FoRFNEQ0FEUVNCcUpBQUxLUUVCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVJEa0RCQXhLQUlBSVFBZ0FrRVFhaVFBSUFBTHlBVUJDSDhqQUVIUUFHc2lBU1FBSUFJZ0FpZ0NBQ2dDZEJFQUFDSUVJQUFnQkNnQ0FDZ0NDQkVCQUNBQUlBSWdBaWdDQUNnQ2RCRUFBQ0lFSUFRb0FnQW9BZ3dSQUFBaUJDQUVLQUlBS0FKNEVRQUFFS0VCSVFnZ0FpSUVMUUFjQkg5QkFRVkJBa0VBSUFRdEFCMGJDeUVLSUFGQlFHc1FNQ0VGSUFJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0Fyd0JFUUFBSVFJZ0FVRXdhaEF3SVFjZ0FoQVdJUVlnQVVFZ2FpSUVFTFFGSUFZRVFDQUVJQVlRL0FRZ0JDQUdFS3dJQ3lBQklBSVFRRFlDQ0NBQklBSVFNallDR0VGL0lRWWdBVUVJYWlBQlFSaHFFQjRFUUFOQUlBRWdBU2dDQ0NnQ0FDSUROZ0lZQWtBQ1FDQURJQU1vQWdBb0FqUVJBQUJGRFFBZ0FTZ0NHQ0lESUFNb0FnQW9BalFSQUFBb0FoUkJ4d05IRFFBZ0JSQVdJUVlNQVFzQ1FDQUJLQUlZSWdNZ0F5Z0NBQ2dDTkJFQUFFVU5BQ0FCS0FJWUlnTWdBeWdDQUNnQ05CRUFBQ2dDRkVIR0EwY05BQ0FGRUJZaEF5QUVJQWNRRmhBUklBTTJBZ0FnQVNBQktBSVlJZ01nQXlnQ0FDZ0NOQkVBQUNnQ0dDSURJQU1vQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0EyQWhRZ0J5QUJRUlJxRUVFTUFRc2dCU0FCUVJocUVFY0xJQUZCQ0dvUVpob2dBU0FDRURJMkFoZ2dBVUVJYWlBQlFSaHFFQjROQUFzTEFrQUNRQ0FIRUJZRVFDQUZFQllnQkNBSEVCWkJmMm9RRVNnQ0FFWU5BUXNnQlJBV0lBWkhEUUVMSUFGQkFEWUNDQ0FGSUFGQkNHb1FRUXNnQVVFSWFoQXdJUU1nQUVFNGFpSUpJQWdnQ2lBRkVCWWdCeUFFSUFZZ0F4Q3RGRUVBSVFJZ0FVRUFPZ0FZSUFCQitBZHFJZ1lnQVVFWWFoQzVDQ0FGRUJZRVFBTkFJQWtnQXlBQ0VLd1VBa0FnQlNBQ0VCRW9BZ0FFUUNBRklBSVFFU2dDQUNJSUlBQWdDQ2dDQUNnQ0NCRUJBQXdCQ3lBSkVJMElDeUFDUVFGcUlnSWdCUkFXU1EwQUN3c2dCaENpQ0NBSkVLc1VJQU1RTmlBRUVEWWdCeEEySUFVUU5pQUJRZEFBYWlRQVFRQUw0Z0lCQW44Z0FpZ0NHQVJBSUFJb0FoZ2lBU0FBSUFFb0FnQW9BZ2dSQVFBTElBQkJPR29pQVNBQ0lBSW9BZ0FvQWdBUkFBQW9BZ2dnQWlBQ0tBSUFLQUlBRVFBQUVPQUNFTjBDQWtBZ0FpZ0NGRUcrZkdvaUEwRUdTdzBBQWtBQ1FBSkFBa0FDUUNBRFFRRnJEZ1lEQVFJRkJRUUFDeUFCRUxzVURBUUxJQUJCK0FkcUVPY1VMUUFBQkVBZ0FTQUJRWWdEYWhDTUNDZ0NDQkRjQWlBQkVOa0ZEQVFMSUFFUWpRZ01Bd3NnQVNBQlFZZ0RhaENNQ0NnQ0RCRGNBaUFCRU5rRkRBSUxRUUFoQXdKQUlBSW9BaGhGRFFBZ0FTQUFJQUlvQWhnaUFpQUNLQUlBS0FKNEVRQUFJZ0lRb1FFaUF4QmlJQUFvQWlnb0FoQkdEUUFnQVJCeklBRWdBVUVISUFBb0FpZ29BaEJCQUVFQUVQSURJZ1FRZ0FNZ0FDQUNJQU1Rc3dRZ0FTQUVRUUJCLy8vLy93ZEJBQkR5QkNFREN5QUJRUUFnQXhDVkRDQUJFSE1NQVFzZ0FVR0VLaENxQkNBQlFiem9FUkJDSUFGQmd5b1FJUXRCQUF2QkFnRUNmeU1BUVJCcklnUWtBQ0FCTFFBaUJFQkJBRUVDRUVnaEF3c2dBUzBBSVFSQUlBTkJBUkJJSVFNTEFrQWdBU2dDSkVGL1JnUkFJQU5CQkJCSUlRTU1BUXNnQVNnQ0pFRUJTQTBBSUFOQkNCQklJUU1nQkNBQktBSWtOZ0lNSUFJZ0JFRU1haEJCQ3dKQUlBQW9Bb3dFRUt3REtBSUFRWUNJQkVrTkFDQUJLQUlvQkVBZ0EwRVFFRWdoQXlBRUlBRW9BaWcyQWd3Z0FpQUVRUXhxRUVFTElBRW9BaXhCZjBjRVFDQURRU0FRU0NFRElBUWdBU2dDTERZQ0RDQUNJQVJCREdvUVFRc2dBU2dDTUVFQ1R3UkFJQU5Cd0FBUVNDRURJQVFnQVNnQ01EWUNEQ0FDSUFSQkRHb1FRUXNnQVNnQ05BUkFJQU5CZ0FFUVNDRURJQVFnQVNnQ05EWUNEQ0FDSUFSQkRHb1FRUXNnQVNnQ09FVU5BQ0FEUVlBQ0VFZ2hBeUFFSUFFb0FqZzJBZ3dnQWlBRVFReHFFRUVMSUFSQkVHb2tBQ0FEQzhVRUFRZC9Jd0JCSUdzaUJ5UUFJQUJCT0dvaUFSQ3FGQ0lHS0FJRUlRVWdCaWdDRENFRUlBWW9BZ2doQ0NBQklBWW9BZ0FpQmhEY0FpQUFJQUlnQjBFUWFoQXdJZ2tRMVJVaEF5QUJJQUlnQWlnQ0FDZ0NBQkVBQUNnQ0NDQUNJQUlvQWdBb0FnQVJBQUFRNEFJUTNRSWdBU0FHRU9VQklBRWdDQ0FFSUFNZ0NSQ2VGQUpBQWtBQ1FDQUNMUUFnUlEwQUlBSW9BaGhGRFFBZ0FTQUJFTllGSWdNUTNBSWdBU0FERU9VQklBSW9BaGdpQXlBQUlBTW9BZ0FvQWdnUkFRQWdBU0FBSUFJb0FoZ2lBeUFES0FJQUtBSjRFUUFBRUtFQklBVWdDQkRTQmlBQklBVVE1UUVnQjBFQk9nQVBJQUJCK0FkcUlnVWdCMEVQYWhDNUNDQUNLQUlVQkVBZ0FpZ0NGQ0lESUFBZ0F5Z0NBQ2dDQ0JFQkFBc2dBU0FFRU53Q0lBVVFvZ2dnQVNBRUVPVUJJQUlvQWh4RkRRRWdBaWdDSENJQ0lBQWdBaWdDQUNnQ0NCRUJBQXdCQ3lBQklBSWdBaWdDQUNnQ0FCRUFBQ2dDQ0NBQ0lBSW9BZ0FvQWdBUkFBQVE0QUlRM1FJZ0FTQUZFTndDSUFkQkFUb0FEaUFBUWZnSGFpSURJQWRCRG1vUXVRZ2dBU0FGRU9VQklBSW9BaFFFUUNBQ0tBSVVJZ1VnQUNBRktBSUFLQUlJRVFFQUN5QUJJQVFRM0FJZ0F4Q2lDQ0FCSUFRUTVRRWdBaWdDSEFSQUlBSW9BaHdpQkNBQUlBUW9BZ0FvQWdnUkFRQUxJQUlvQWhoRkRRQWdBaWdDR0NJRUlBQWdCQ2dDQUNnQ0NCRUJBQ0FCSUFBZ0FpZ0NHQ0lBSUFBb0FnQW9BbmdSQUFBUW9RRWdCaUFJRU5JR0RBRUxJQUVnQmhEY0Fnc2dBU0FJRU9VQklBRkJpQU5xRUtnVUlBa1FOaUFIUVNCcUpBQkJBQXZRRVFFSmZ5TUFRU0JySWcwa0FDQUZFSU1ESVFnZ0JSQ1NCQ0VKQW45QkFDQUVFQllpREVVTkFCb2dBRUU0YWlJSElBUkJBQkFSS0FJQUVHSWhDa0VBSUF4QkFVWU5BQm9nQnlBRVFRRVFFU2dDQUJCaUN5RU9Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCbkFOTUJFQkJmeUVISUFGQjgzMXFJZ1pCL0FCTkRRNGdBVUc3Zm1vaUJVRWFTd1JBSUFGQnZnRkhEUzVCR1NFR0RDc0xRU01oQmlBRlFRRnJEaG90TFMwdExTMHRMUzB0TFMwdExTb0JBZ1FGQmdjdExRZ0pDZ01MSUFGQjVucHFJZ1pCRjAwTkRpQUJRZU44YWlJRlFRSkxCRUFnQVVHK0EwY05MVUh4S1NFRkRCVUxJQVZCQVdzT0Fnc01DZ3NDZnlBSkJFQkJ6d0JCSlNBQUxRQ1FCQnNNQVF0QkprRW5JQWdiQ3lFR0lBQkJPR29nQWlBRUtBSUFJQVFRa0FFUXdRTU1LQXNDZnlBSkJFQkIwQUJCS0NBQUxRQ1FCQnNNQVF0QktVRXFJQWdiQ3lFR0lBQkJPR29nQWlBRUtBSUFJQVFRa0FFUXdRTU1Kd3RCR2lFR0RDWUxBbjhnQ1FSQVFkRUFRU3NnQUMwQWtBUWJEQUVMUVN4QkxTQUlHd3NoQmlBQVFUaHFJZ1VnQWlBRUtBSUFJQVJCQVJBUkVNRURJQVVnQWlBRUtBSUFJQVJCQWhBUkVNRUREQ1VMUVM0aEJrRUFJUVVnQUVFNGFpSUlJQWdnQ0NBRUVKQUJLQUlBRUdJUXV3SVFnaFVFUUNBRUtBSUFJQVFRa0FFUUxrRi9JUVpCcVFFaEJRc2dDQ0FDSUFRb0FnQWdCQkNRQVJEQkF5QUdRUUJJRFE4TUpBc2dBRUU0YWlBQ0lBUW9BZ0FnQkJDUUFSREJBMEV3SVFZTUl3c2dBRUU0YWlJRklBSWdCRUVBRUJFZ0JFRUNFQkVRd1FNZ0JTQUNJQVJCQVJBUklBUkJBaEFSRU1FRFFURWhCZ3dpQzBFeUlRWU1JUXNnQUVFNGFpSURJQU1nRGhDd0FTSU9FT0lGSWdWQkVFWUVRQ0FEUVpucEVSQkNDeUFESUFSQkFCQVJLQUlBRU1nQklRWkJBU0VNSUFNZ0JVRUJFSnNJSVFzZ0F5QUtBbjhnQmtFQlJ3UkFJQU1nQ3lBRElBUkJBQkFSS0FJQUVNZ0JFTEVCSVFzTElBc0xFTnNHSVFOQk5DRUdEQ0FMUVRVaEJnd2ZDeUFBUWMzbUVSRDhBZ3dMQ3lBQVFjM21FUkQ4QWlFSFFRSWhCZ3dkQ3lBQVFjM21FUkQ4QWlFSFFRTWhCZ3djQ3lBR1FRRnJEbndCR1I0WUZ4WUxDZ2tlSGg0ZUhoNGVIaDRlRXhJSEhoNGVIaDRlSGg0ZUhoNFZGQjRlSGg0ZUhnMGVIaDRlSGg0ZUhoNGVIaDRlSGd3ZUhoNE1IaDRlSGg0TURBd01IaDRlSGg0ZUhoNGVIaDRlSGg0ZUhoNGVIaDRlREF3TURBd01EQXdlSGg0ZURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01HZ3RCeVFFaEJVR1ZBU0VIQWtBQ1FDQUdRUUZyRGhjQUVBOEJCeDhmSHg4Zkh4OGZIeDhmSHdVR0h4OEVBeEVMUVpZQklRY01FQXRCeXdGQnlnRWdDQnNoQlF3RkMwR1VBU0VGSUFrTkJDQUFRVGhxSWdZZ0JFRUFFQkVvQWdBUXlBRWhDRUVCSVFjZ0JpQUdRWVFCSUFZZ0JFRUFFQkVvQWdBUVlpQUVRUUFRRVNnQ0FDQUVRUUVRRVNnQ0FCQ3FBU0lKSUFJUWhnRWFJQVlnQ1NBRFFRQVFyd0VoQlNBSVFRSklEUnNEUUNBR0lBVWdBaENHQVJvZ0JrR0FBU0FESUFVZ0JpQUpJQU1nQnhDdkFSQ3FBU0VGSUFkQkFXb2lCeUFJUncwQUN3d2FDeUFBUVRocVFiTXBJQVFRMVFZTUd3c2dBRUU0YWtIZ0tTQUVFTlVHREJvTElBQkJPR3BCMlNrZ0JCRFZCZ3daQ3lBQVFUaHFFUG9DSVFOQjFpa2hCUXNnREVFQ1RRUkFJQVVoQnlBTVFRSnJEUmdNQ3dzZ0FFRTRhaUFGSUFNZ0JCRHdBeUVGREJVTElBVkJBMFlFUUNBQVFUaHFRWXZtRVJCQ0N5QUFRWmJlRVJEOEFnc2hCMEVCSVFZTUVndEJCMEVJUVFrZ0NCc2dDUnNoQmlBQVFiTHBFUkQ4QWlFSERCRUxRUVJCQlVFR0lBZ2JJQWtiSVFZZ0FFR3k2UkVRL0FJaEJ3d1FDMEVCUVFKQkF5QUlHeUFKR3lFR0lBQkJzdWtSRVB3Q0lRY01Ed3NnQUNBQklBTWdCQ0FGRUtVSUlRc01FUXNnQUVHM0FpQURJQVFnQlJDd0RDRUxEQkFMUVpnQklRY01BUXRCbHdFaEJ3c2dBRUU0YWlBS0lBb1Eyd1loQXdzZ0FFRTRhaUFISUFNZ0JFRUFFQkVvQWdBZ0JFRUJFQkVvQWdBUXFnRWhCUXdLQzBIT0FDRUdJQVZCQTBjTkNDQUFRVGhxUVl2bUVSQkNEQWdMUWMwQUlRWWdCVUVEUncwSElBQkJPR3BCaStZUkVFSU1Cd3NnQUVFNGFpSUJJQUVnQkVFQUVCRW9BZ0FRendFaUFpQUJJQVJCQVJBUktBSUFFTThCSUFFZ0JFRUNFQkVvQWdBUXp3RnlJZ01RemdKQmdNQUFRWUNBQVJCSVFZQWdFRWhCZ0lBQ0VFZ2dBM0VFUUNBQlFlRXBFQ0VMSUFBb0Fvd0VMUUNJQkVVZ0FrRUJSM0lOQ1NBQlFlSXBFQ0VNQ1FzZ0FFRTRhaUlCSUFFZ0JFRUFFQkVvQWdBUXp3RWlBaUFCSUFSQkFSQVJLQUlBRU04QklnTWdBU0FFUVFJUUVTZ0NBQkRQQVNBQklBUkJBeEFSS0FJQUVNOEJjaUlFRVBFRFFZREFBRUdBZ0FFUVNFR0FJQkJJUVlDQUFoQklJQVJ4QkVBZ0FVSGhLUkFoQ3lBQUtBS01CQzBBaUFSRklBSkJBVWRCQUNBRFFRRkhHM0lOQ0NBQlFlSXBFQ0VNQ0F0QnlBQWhCZ3dFQzBISEFDRUdEQU1MUWNZQUlRWU1BZ3RCeEFBaEJnd0JDMEhEQUNFR0N5QUVFRUFoQlNBTklBUVFRRFlDQ0NBTlFSQnFJQVVnRFVFSWFpQU1FTUVGRUlFVklRZ2dBRUU0YWlBRElBZEJmMHdFZnlBQUtBS1VCQVVnQndzZ0JpQUlFSklJSVFVZ0NCQTJDeUFCUWVaNmFpSURRUU5MQkVBZ0FVSGVBVWNOQVNBQVFUaHFJZ0VnQVNBT0VMc0NFTjhDUVJaR0lRY2dBU0FGSUF0QkFSQ3ZBU0VESUFFZ0J3Ui9JQUZCN3dBZ0RpQURFUGdCQlNBREN5QUVRUUVRRVNnQ0FFRUFRZi8vLy84SFFRQVF6d0lnQVNBRklBcEJBQkN2QVNFRkRBRUxBa0FDUUNBRFFRSnJEZ0lCQVFBTElBQkJPR29pQVNBQklBVWdDa0VCRUs4QklBUkJBaEFSS0FJQVFRQkIvLy8vL3dkQkFCRFBBaUFCSUFVZ0NrRUFFSzhCSVFVTUFRc2dBRUU0YWlJQklBRWdCU0FLUVFBUXJ3RWdCRUVERUJFb0FnQkJBRUgvLy8vL0IwRUFFTThDSUFFZ0FTQUZJQXBCQVJDdkFTQUVRUUlRRVNnQ0FFRUFRZi8vLy84SFFRQVF6d0lMSUFCQk9Hb2dCU0FDRUlZQklRc0xJQTFCSUdva0FDQUxDOFVJQVFOL0l3QkJJR3NpQkNRQUlBQW9Bb3dFTFFDSUJDRUZBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFGQnJRVk1CRUFnQVVIVmZXb2lCa0VYVFEwR0lBRkJ3WHhxSWdWQkFrc0VRQ0FCUWFNRFJ3MEtJQVJCRUdvUU1DRUZJQUJCT0dvaUFTQUJJQU1nQUVIajVoRVEvQUpCQXlBRkVKSUlJQUlRaGdFaEFTQUZFRFlNSWdzZ0JVRUJhdzRDQWdNQkN5QUJRYjE2YWlJQ1FRUk5EUVlnQVVIU2Vtb2lBa0VCVFEwSElBRkJpM3BxSWdGQkFVc05DQ0FCUVFGckRRTU1CQXNnQUVFNGFrSDBLUkNxQkF3ZUN5QUFRVGhxUWZVcEVLb0VEQjBMSUFSQkVHb1FNQ0VDSUFCQk9Hb2lBRUc4NkJFUVFpQUFRWU1xRUNFZ0FFR0ZLaUFESUFJUThBTWhBU0FDRURZTUhRc2dCRUVRYWhBd0lRSWdCQ0FBUVRocUlnQkJBMEVBRUhRMkFnd2dBaUFFUVF4cUVFRWdBRUhnNkJFUVFpQUFRYjhuRUNFZ0FFSEFKeUFESUFJUThBTWhBU0FDRURZTUhBc2dCRUVRYWhBd0lRSWdCQ0FBUVRocUlnQkJBVUVBRUhRMkFnd2dBaUFFUVF4cUVFRWdBRUhnNkJFUVFpQUFRYjhuRUNFZ0FFSEFKeUFESUFJUThBTWhBU0FDRURZTUd3dEJCVUVCSUFVYklRRWdCa0VCYXc0WEJnSUNHQmNURmhJVkZBSUNBZ0lDQWdJTUN3b0pDQVVIQ3lBQ1FRRnJEZ1FQRGcwTUVBc2dBa0VCYXcwQ0RBRUxJQUFvQWpRZ0JFRVFha0gxNkJFUWFTSUFFS0FESUFBUUlCb01GZ3NnQUVFNGFrSFlLUkNxQkF3VkN5QUFRVGhxUWRjcEVLb0VEQlFMSUFCQndnSWdBeUFFUVJCcUVEQWlBRUVBRUtVSUlRRWdBQkEyREJRTElBQkJPR3BCMndFUXFnUU1FZ3NnQUVFNGFrSGFBUkNxQkF3UkN5QUFRVGhxUVFOQmdBSkJDQkJJRU00Q0RCQUxJQUJCT0dwQkEwR0FFRUVJRUVnUXpnSU1Ed3NnQUVFNGFrRURRY0FBUVFnUVNCRE9BZ3dPQ3lBQVFUaHFRUU5Cd0JwQkNCQklFTTRDREEwTElBQkJPR3BCQTBFRFFjQWFRUWdRU0JEeEF3d01DeUFBUVRocVFRSkJBa0dBQWtFSUVFZ1E4UU1NQ3dzZ0FFRTRha0VDUVlBQ1FRZ1FTQkRPQWd3S0N5QUFRVGhxUVFKQkFVSEFBRUdBRUJCSVFRZ1FTQkR4QXd3SkN5QUFRVGhxUVFGQndBQkJnQkFRU0VFSUVFZ1F6Z0lNQ0FzZ0FFRTRha0VDUVFGQndCcEJDQkJJRVBFRERBY0xJQUJCT0dvZ0FVR0FFRUVJRUVnUXpnSU1CZ3NnQUVFNGFpQUJRWUFJUVFnUVNCRE9BZ3dGQ3lBQVFUaHFRUUpCd0JwQkNCQklFTTRDREFRTElBQkJPR29nQVVHQUFrRUlFRWdRemdJTUF3c2dBRUU0YWlBQlFjQUFRUWdRU0JET0Fnd0NDeUFBUVRocUlBRkJ3QnBCQ0JCSUVNNENEQUVMSUFBb0Fvd0VLQUlBUVFGR0JFQWdBRUU0YWlFQ0lBQW9Bb3dFTFFDSUJBUkFJQUpCQWtFQ1FZQWdRUWdRU0JEeEF5QUNRZUVwRUNFTUFndEJBQ0VCSUFKQkFrRUVRUUFROFFNTUFnc2dBRUU0YWtFQ1FRSkJnQUpCQ0JCSUVQRURDMEVBSVFFTElBUkJJR29rQUNBQkM2RUlBUTUvSXdCQmtBSnJJZ01rQUNBQVFkUUVhaUFEUWFnQmFpQUJJQUVvQWdBb0FzZ0JFUUFBRUJNUWFTSUNFT01HS0FJQUlRb2dBaEFnR2lBS0JFQWdBU0FCS0FJQUtBTEFBUkVBQUNFSklBRWdBU2dDQUNnQzJBRVJBQUFoQ0NBRFFZQUNhaEF3SVFzZ0EwSHdBV29RTUNFTklBTkI0QUZxRURBaEJ5QUpFQlpCQVU0RVFDQUFRVGhxSVFSQkFDRUNBMEFnQXlBSklBSVFFU2dDQUNJR0lBWW9BZ0FvQWd3UkFBQWlCaUFHS0FJQUtBSjRFUUFBTmdLb0FTQUhJQU5CcUFGcUVFRWdCQkJ6SUFrZ0FoQVJLQUlBSWdZZ0FDQUdLQUlBS0FJSUVRRUFBa0FDUUNBQUlBZ2dBaEFSS0FJQUlBY2dBaEFSS0FJQUlBb3RBRXdnQWtWeEVOOEZSUVJBSUFnZ0FoQVJLQUlBRU40RlJRMEJDeUFEUWFnQmFpQUVFTDRDSUFzZ0EwR29BV29RaUJVZ0EwR29BV29RdUFFTUFRc2dBeUFBSUFjUWtBRW9BZ0FRb1FFMkFxZ0JJQTBnQTBHb0FXb1FRUXNnQWtFQmFpSUNJQWtRRmtnTkFBc0xJQU5CcUFGcUVEQWhEaUFKRUJaQkFVNEVRQ0FBUVRocUlRUkJBQ0VDUVFBaEJnTkFBa0FDUUFKQUlBQWdDQ0FDRUJFb0FnQWdCeUFDRUJFb0FnQWdDaTBBVENBQ1JYRVEzd1VFUUNBRUlBTkI4QUJxSUFzZ0RCQ2tDQkQ4QXlJRkVMUUVJQVVRdUFFZ0F5QUVFUEFFTmdLa0FRd0JDeUFJSUFJUUVTZ0NBQkRlQlNFUElBb2dBaENuRENFRklBOUZEUUVnQXlBRVFRY2dCQ0FGRUxBQlFiTG9FVUVBRVBJRE5nS2tBU0FJSUFJUUVTZ0NBRUVOUndSQUlBZ2dBaEFSS0FJQVFROUhEUUVMSUFRZ0EwRTRhaUFMSUF3UXBBZ1EvQU1pQlJDMEJDQUZFTGdCSUFBZ0J5QUNFQkVvQWdBUW9RRWhCU0FFRUhNZ0JDQURLQUtrQVJDQUF5QUFJQWNnQWhBUktBSUFJQVVRc3dRTElBeEJBV29oREF3QkN5QURBbjhnQUNBSElBSVFFU2dDQUJDL0FTQUZSd1JBSUFSQkJ5QUtJQUlRcHd4QnVPZ1JRUUFROGdNaEJTQUVFSE1nQkNBRkVJQURJQUFnQnlBQ0VCRW9BZ0FnRFNBR0VCRW9BZ0FRc3dRZ0JDQUZRUUJCLy8vLy93ZEJBQkR5QkF3QkN5QU5JQVlRRVNnQ0FBczJBcVFCSUFaQkFXb2hCZ3NnRGlBRFFhUUJhaEJISUFKQkFXb2lBaUFKRUJaSURRQUxDeUFBUVRocUlnUWdCQ0FLSUE0UXN4UWlCaUFCSUFFb0FnQW9BbmdSQUFBUS9nUVFoZ0VhSUFrUUZrRUJUZ1JBUVFBaEFrRUFJUUVEUUFKQUFrQWdBQ0FJSUFJUUVTZ0NBQ0FISUFJUUVTZ0NBQ0FLTFFCTUlBSkZjUkRmQlEwQUlBZ2dBaEFSS0FJQUVONEZSUTBCSUFnZ0FoQVJLQUlBUVE1SEJFQWdDQ0FDRUJFb0FnQkJEMGNOQVFzZ0JDQU9JQUlRRVNnQ0FFRUFRZi8vLy84SFFRQVE4Z1FoRENBRUlBTWdDeUFCRUtRSUVQd0RJZ1VRdEFRZ0JSQzRBU0FBSUFjZ0FoQVJLQUlBSUF3UXN3UUxJQUZCQVdvaEFRc2dBa0VCYWlJQ0lBa1FGa2dOQUFzTElBNFFOaUFIRURZZ0RSQTJJQXNRcEF3Z0N4RDRGQXNnQTBHUUFtb2tBQ0FHQzFBQkFYOGpBRUVRYXlJQ0pBQWdBQ0FBUWRRRWFpQUNJQUVnQVNnQ0FDZ0N5QUVSQUFBUUV4QnBJZ0VRNHdZb0FnQTJBaWdnQVJBZ0dpQUFRVGhxSUFBb0FpZ1FxQXdRNVFFZ0FrRVFhaVFBQzJFQkFuOGdBUkFXUVFGT0JFQURRQUpBSUFFZ0F4QVJLQUlBSWdJZ0FpZ0NBQ2dDR0JFQUFDSUNSUTBBSUFJb0FtaEJCRWNFUUNBQ0tBSm9RUUpIRFFFTElBSWdBQ0FDS0FJQUtBSUlFUUVBQ3lBRFFRRnFJZ01nQVJBV1NBMEFDd3NMY0FFQ2Z5QUFRVGhxSUFBb0FpUVF3Z2dRNVFFZ0FSQVdRUUZPQkVBRFFBSkFJQUVnQXhBUktBSUFJZ0lnQWlnQ0FDZ0NHQkVBQUNJQ1JRMEFJQUlvQW1oQkJFWU5BQ0FDS0FKb1FRSkdEUUFnQWlBQUlBSW9BZ0FvQWdnUkFRQUxJQU5CQVdvaUF5QUJFQlpJRFFBTEN3dW9CZ0VOZnlNQVFVQnFJZ01rQUNBRElBQTJBamdnQVJBV1FRRk9CRUFnQUVHc0JHb2hEQ0FBUWRRRWFpRU5JQUJCT0dvaEJ5QUFRY0FFYWlFT0EwQUNRQ0FCSUFzUUVTZ0NBQ0lDSUFJb0FnQW9BaGdSQUFBaUFrVU5BQ0FDS0FKb1FRUkhEUUFnQUNBQ0VOa01EUUFnQTBFb2FoQXdJUWxCQUNFRUlBTkJHR29RTUNJS0lBSWdBaWdDQUNnQ3ZBRVJBQUJCQUJBUktBSUFJZ1lnQmlnQ0FDZ0NHQkVBQUNJR0lBWW9BZ0FvQXJ3QkVRQUFJZ1lRRmhDS0ZTQUdFQlpCQUVvRVFBTkFJQU1nQUNBR0lBUVFFU2dDQUNJRklBVW9BZ0FvQWd3UkFBQWlCU0FGS0FJQUtBSjRFUUFBSWdVUXZ3RTJBaFFDUUNBQUlBVWdCU2dDQUNnQ0xCRUFBQ2dDQkVFL2NTQUZRUUFRM3dVRVFDQURJQWNnQUNBRkVNWU1JQU1vQWhRUTJ3VTJBaFFNQVFzZ0JTQUZLQUlBS0FJc0VRQUFLQUlFUVQ5eEVONEZCRUFnQXlBSFFRY2dBeWdDRkJEYkJUWUNGQXdCQ3lBRElBWWdCQkFSS0FJQUlnZ2dDQ2dDQUNnQ01CRUFBQ0lJSUFnb0FnQW9BcmdCRVFBQU5nSVFJQU1nRGlBRFFSQnFFTWtOQ3lBRFFUaHFJQW9nQkJEVUF5QUZJQUFvQW93RUxRQ0lCQkNKRlNBSklBTkJGR29RUnlBRVFRRnFJZ1FnQmhBV1NBMEFDd3NnQnlBQ0lBSW9BZ0FvQW5nUkFBQVEvZ1FnQUNBQ0lBSW9BZ0FvQW5nUkFBQVF2d0VnQWlBQ0tBSUFLQUxJQVJFQUFCQVRJQWtnQ2lBRFFSUnFFSllNSVFVZ0RTQURJQUlnQWlnQ0FDZ0N5QUVSQUFBUUV4QnBJZ0lRNHdZZ0JUWUNBQ0FDRUNBYVFRQWhBaUFHRUJaQkFFb0VRQU5BSUFVZ0FoQ3FEQ0VFSUFNZ0JpQUNFQkVvQWdBaUNDQUlLQUlBS0FJd0VRQUFJZ2dnQ0NnQ0FDZ0N1QUVSQUFBMkFnQWdEQ0FERU00TUlBUTJBZ0FnQnlBRklBSVFxZ3dnQmlBQ0VCRW9BZ0FpQkNBRUtBSUFLQUl3RVFBQUlnUWdCQ2dDQUNnQ3dBRVJBQUFRRXhEYUJTQUdJQUlRRVNnQ0FDSUVJQVFvQWdBb0Fnd1JBQUFpQkNBRUtBSUFLQUo0RVFBQUlnUVF4Z0lFUUNBSFFTY1FJUXNnQkJDdkFnUkFJQWRCRmhBaEN5QUVFTEFDQkVBZ0IwRUpFQ0VMSUFKQkFXb2lBaUFHRUJaSURRQUxDeUFLRUtrTUlBa1FOZ3NnQzBFQmFpSUxJQUVRRmtnTkFBc0xJQU5CUUdza0FBdXdJUUVQZnlNQVFhQUNheUlESkFBZ0F5QUNOZ0tjQWlBRFFaQUNhaUFBUVRocUlnWVE2UVVoRGlBREtBS2NBaUlDSUFJb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FJc0VRQUFFT1lCQkVBZ0RoQ0VCUXNnQTBFQU5nS01BaUFESUFOQm5BSnFOZ0tFQWlBRElBTkJqQUpxTmdLQUFpQURJQUEyQW9nQ0FrQWdBQ0FES0FLY0FoRGNEQ0lDQkVBZ0JoQnpJQVlnQWhDT0Fnd0JDeUFES0FLY0FpZ0NhRUhLQkVZTkFDQURLQUtjQWlnQ2FFSE1CRVlOQUNBREtBS2NBaWdDYUVIV0JFWU5BQ0FEUWZnQmFoQ0JCU0VOSUFNb0Fwd0NFTDhFRUlNRklReEJBQ0VDUVFFaENRSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBbjhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBTW9BcHdDS0FKb0lnUkJwUVZNQkVBZ0JFSHlmV29pQjBHbUFrME5DQUpBSUFSQjUzNXFJZ2RCRUVzRVFDQUVRWDlxSWdSQkJFME5BUXdYQzBFQUlRRWdCMEVCYXc0UUZ4QVhGeGNYRnhjWEJ3Y0hCd2NIQkJBTElBUkJBV3NPQkFJRkJCY0JDeUFFUWRwNmFpSUVRU0ZMRFJSQkFDRUJJQVJCQm1zT0hBZ1ZDQWdJQ0JVVkZSVVZGUlVWRlJVVkZSVVZGUlVWQ0FnSUNBZ0dDMEVCSVFnZ0FDQUFLQUl3UVFGQmZ5QUFMUUFFRzJvaUFUWUNNQ0FCUVFGSERSVWdBQ0FES0FLY0FpSUJJQUVvQWdBb0FoZ1JBQUFpQVNBQktBSUFLQUs4QVJFQUFCRGRGU0FBSUFNb0Fwd0NJZ0VnQVNnQ0FDZ0NHQkVBQUNJQklBRW9BZ0FvQXJ3QkVRQUFFTndWSUFBZ0F5Z0NuQUlpQUNBQUtBSUFLQUlZRVFBQUlnQWdBQ2dDQUNnQ3ZBRVJBQUFRMnhVTUVnc2dBQ0FCUlRvQS9nTkJBU0VJREJRTElBTW9BcHdDSWdFZ0FTZ0NBQ2dDdkFFUkFBQWlBUkFXUVFGSURSQURRQ0FCSUFJUUVTZ0NBQ0lFSUFBZ0JDZ0NBQ2dDQ0JFQkFDQUNRUUZxSWdJZ0FSQVdTQTBBQ3d3VEN5QUJSUVJBSUFBZ0F5Z0NuQUlRMlF3RVFFRUJJUWdnQUVFQk9nRDhBeUFHSUFBb0FpUVF3Z2dRNVFFZ0FDQUFLQUlrTmdJb0RCUUxJQUFnQXlnQ25BSVEyaFZCQVNFSURCTUxJQUF0QVB3REJFQWdBRUVCT2dEOUF3c2dCaENVRENBQVFRQTZBUHdEUVFFaENBd1NDeUFHSUFNb0Fwd0NJZ0VnQVNnQ0FDZ0NBQkVBQUNnQ0NDQURLQUtjQWlJQklBRW9BZ0FvQWdBUkFBQVE0QUlRM1FJQ1FDQURLQUtjQWlJQklBRW9BZ0FvQXRBQkVRQUFSUTBBSUFBZ0F5Z0NuQUlRMlJVaUFVVU5BQ0FHRUhNZ0JpQUJFSTRDREE4TElBQW9BalFnQTBHUUFXcEJ4T2NSRUdraUFCQ2dBeUFBRUNBYURBNExJQU1vQXB3Q0tBSm9HaUFES0FLY0FpZ0NhQ0lDUWQxK2FpSUVRUUZOQkVCQkFDRUpJQVJCQVdzTkVFR2tBU0VDREFzTElBTW9BcHdDS0FKb0lRSU1DZ3NnQmtIUUt4QWhJQVpCcWVZUkVFSWdBeWdDbkFJb0FtZ2hBZ3dOQzBFQUlRRUNRQ0FIUVFGckRxWUNEZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGdjT0RnNE9EZ0VCRGc0QkFRRUJBUUVCRGc0T0RnNE9EZ0VCQVFFQkRnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0REF3TURBd01EQXdZRkRnNE9BZ0lDQWdJQ0FnSUNEZzRCQVE0QUFBNE9EZzRPRGc0T0Rnc0xDd3NMQ3dzTEN3c0xDd3NMQ2dvS0Nnb0tDZ29LQ3dzTEN3c0xDd3NMQ3dzTEN3c0xDd3NMQ3dzTEN3c0xDd3NMQ3dzTENnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0N3c0xDd29LQ2dvS0Nnb0tDZ3NMRGdzTENBc2dCa0dpMmhFUVFndEJBUXdDQ3lBR1FmYm5FUkJDSUFaQjNTSVFJUXRCQVNFSVFRQUxJUUVNQ1F0QkFTRUlDeUFJSVFGQkFTRUlEQWNMSUFRaEFnd0dDMEdaQVVFQUlBTW9BcHdDSWdFZ0FTZ0NBQ2dDdkFFUkFBQkJBQkFSS0FJQUlnRWdBU2dDQUNnQ0RCRUFBQ0lCSUFFb0FnQW9BcEFCRVFBQVFRRkdHeUVDREFRTFFRQWhDUXdFQzBFQklRZ0xJQVlnQXlnQ25BSWlBU0FCS0FJQUtBSUFFUUFBS0FJSUlBTW9BcHdDSWdFZ0FTZ0NBQ2dDQUJFQUFCRGdBaERkQWlBRFFaQUJhaEF3SVFFZ0FDQURLQUtjQWlBQklBMFEyQXdDUUNBREtBS2NBaWdDYUVHeEJFWUVRQ0FHUWRZQUlBTkJnQUpxRUtVRElBRVE4QU1oQUF3QkN3SkFBa0FnQXlnQ25BSW9BbWhCc0FSR0RRQWdBeWdDbkFJb0FtaEJ0QVJHRFFBZ0F5Z0NuQUlpQWlBQ0tBSUFLQUo0RVFBQUlnSWdBaWdDQUNnQ2NCRUFBRVVOQVFzZ0EwRVlhaEF3SVFKQkFDRUlJQUVRRmtFQVNnUkFBMEFnQWlBQklBZ1FFUkJISUFoQkFXb2lDQ0FCRUJaSURRQUxDeUFBSUFOQmdBSnFFS1VESUFOQjZBRnFJQUlRZ0FVaUNCQzlDQ0VBSUFnUU5pQUNFRFlNQVFzZ0EwR0FBbW9RcFFNaEFDQUlCRUFnQmlBTUlBRWdBQkN1RkNFQURBRUxJQVlnRENBQklBQVFrUWdoQUFzZ0JoQnpJQVlnQUJDT0FpQUJFRFlMUVFBaENBd0NDMEVBSVFFTElBTW9BcHdDSWdRZ0JDZ0NBQ2dDdkFFUkFBQWhCeUFDQkVCQkFDRUlJQWRCQUJBUktBSUFJZ0VnQVNnQ0FDZ0NEQkVBQUNFQklBTW9BcHdDSWdRZ0JDZ0NBQ2dDdkFFUkFBQkJBUkFSS0FJQUlnUWdCQ2dDQUNnQ0RCRUFBQ0VFSUFZUWN5QUJJQUFnQVNnQ0FDZ0NDQkVCQUNBQUlBRWdBU2dDQUNnQ2VCRUFBQkNoQVNFSElBWVFjeUFFSUFBZ0JDZ0NBQ2dDQ0JFQkFDQUFJQVFnQkNnQ0FDZ0NlQkVBQUJDaEFTRUVJQVlnQXlnQ25BSWlDeUFMS0FJQUtBSUFFUUFBS0FJSUlBTW9BcHdDSWdzZ0N5Z0NBQ2dDQUJFQUFCRGdBaERkQWlBQUlBSWdBMEdRQVdvZ0RDQURLQUtjQWlJQ0lBSW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXNFUUFBRU9jRklBQWdBeWdDbkFJaUFDQUFLQUlBS0FKNEVRQUFJZ0FnQUNnQ0FDZ0NMQkVBQUJEN0F4RG1CU0FEUVlBQ2FoQ2xBeUFISUFRZ0FTQUJLQUlBS0FKNEVRQUFJZ0FnQUNnQ0FDZ0NIQkVBQUNBSkVPUUdJUUFnQmhCeklBWWdBQkNPQWd3QkN5QURRZGdCYWhBd0lRa2dBMEhJQVdvUU1DRUxJQWNRRmtFQVNnUkFRUUFoQkFOQVFRQWhBZ0pBQWtBQ1FBSkFBa0FDUUNBREtBS2NBaWdDYUNJRlFhTURUQVJBSUFWQjMzMXFRUU5KRFFFZ0JVSFVBVVlOQlNBRlFkNEJSdzBHREFVTElBVkIzSHhxSWdwQkdVME5BeUFGUWVaNmFpSUZRUU5MRFFVZ0JVRUNhdzRDQWdJQkN5QUVEUVJCQVNFQ0lBZEJBQkFSS0FJQUlnVWdCU2dDQUNnQ0VCRUFBRVVOQkNBSFFRQVFFU2dDQUNJRklBVW9BZ0FvQWhBUkFBQW9BbWhCdEFGSERRUWdBeUFBSUFkQkFCQVJLQUlBSWdVZ0JTZ0NBQ2dDSUJFQUFDSUZJQVVvQWdBb0FzQUJFUUFBSWdVZ0JTZ0NBQ2dDZUJFQUFCQy9BVFlDakFJTUJBc2dCRUVDUmlFQ0RBTUxJQVJCQVVzaEFnd0NDd0pBQWtBZ0NrRUthdzRRQXdNREFRRUJBUUVCQVFFQkF3TUFBZ0VMSUFSQkFra2hBZ3dDQ3lBRVJTRUNEQUVMSUFSQkFVWWhBZ3NnQmhCekFrQUNRQ0FFRFFBZ0F5Z0NqQUpGRFFBZ0IwRUFFQkVvQWdBaUJTQUZLQUlBS0FJZ0VRQUFJZ1VnQlNnQ0FDZ0N3QUVSQUFBaUJTQUFJQVVvQWdBb0FnZ1JBUUFNQVFzZ0J5QUVFQkVvQWdBaUJTQUFJQVVvQWdBb0FnZ1JBUUFMQWtBQ1FDQURLQUtjQWlnQ2FFRzhBMGNFUUNBREtBS2NBaWdDYUVHOUEwY05BUXNnQkVGL2FpSUZRUUZMRFFBZ0JVRUJhMFVOQVNBRFFaQUJhaUFHRUw0Q0lBWVFjeUFIUVFJUUVTZ0NBQ0lGSUFBZ0JTZ0NBQ2dDQ0JFQkFDQUFJQWRCQWhBUktBSUFJZ1VnQlNnQ0FDZ0NEQkVBQUNJRklBVW9BZ0FvQW5nUkFBQVFvUUVoQlNBR0lBTkIyQUJxSUFOQmtBRnFFUHdESWdvUXRBUWdDaEM0QVNBRFFkQUFhaUFIUVFFUUVTZ0NBQ0lLSUFvb0FnQW9BZ3dSQUFBaUNpQUtLQUlBS0FKNEVRQUFFT1FCSUFkQkFSQVJLQUlBSWdvZ0NpZ0NBQ2dDREJFQUFDSUtJQW9vQWdBb0FuZ1JBQUFRaGdRaENpQURJQU1vQWxBMkFnUWdCaUFGSUFOQkJHb2dDaENDQlNBRFFSaHFJQVlRdmdJZ0F5QURLQUpJTmdKTUlBTkJHR29RdUFFZ0EwRVlhaUFHRUw0Q0lBTW9Ba1FoQ2lBRFFSaHFFTGdCSUFBZ0EwSE1BR29RdkFnaEJTQURLQUtjQWlnQ2FDRVBJQU1vQXB3Q0tBSm9JUkFnQTBFWWFpQUdFTDRDSUFZZ0F5Z0NHQkMyQkNFUklBTkJHR29RdUFFZ0N5QURRUmhxUVFBZ0JVRjNjU0FGSUE5QnZBTkdHeUlGUVc5eElBVWdFRUc5QTBZYklnVkJBbklnQlNBUlFlVXBSaHNpQlJCMUVLUURJQVZCQW5FRVFDQUxJQU5CR0dwQkFDQUtFSFVRcEFNTFFRaEJFQkJJSUFWeEJFQWdDeUFEUVJocVFRRWdCaUFBSUFOQnpBQnFFUDhFUVFBUWRCQjFFS1FEQ3lBRFFaQUJhaEM0QVFzZ0FnUkFJQU1nQmhEd0JEWUNrQUVnQ1NBRFFaQUJhaEJCSUFOQmtBRnFJQVlRdmdJZ0F5QURMUURBQVRvQStBRWdBMEdRQVdvUXVBRWdBMEdRQVdvZ0J5QUVFQkVvQWdBaUFpQUNLQUlBS0FJTUVRQUFJZ0lnQWlnQ0FDZ0NlQkVBQUJEa0FTQURRUmhxSUEwZ0EwR1FBV29RK2dNTUFRc2dCaUFES0FLY0FpSUNJQUlvQWdBb0FnQVJBQUFvQWdnZ0F5Z0NuQUlpQWlBQ0tBSUFLQUlBRVFBQUVPQUNFTjBDSUFNZ0FDQUhJQVFRRVNnQ0FDSUNJQUlvQWdBb0Fnd1JBQUFpQWlBQ0tBSUFLQUo0RVFBQUVLRUJOZ0tRQVNBSklBTkJrQUZxRUVFTElBUkJBV29pQkNBSEVCWklEUUFMQ3lBR0lBTW9BcHdDSWdJZ0FpZ0NBQ2dDQUJFQUFDZ0NDQ0FES0FLY0FpSUNJQUlvQWdBb0FnQVJBQUFRNEFJUTNRSUNRQ0FES0FLY0FpZ0NhRUc4QTBZRVFDQURRWkFCYWhBd0lnSWdBMEVZYWtFQklBbEJBUkFSS0FJQUVIVVFwQU1nQWlBRFFSaHFRUUVnQ1VFQ0VCRW9BZ0FRZFJDa0F5QUNJQU5CR0dwQkFTQUpRUU1RRVNnQ0FCQjFFS1FESUFNZ0FoQXlOZ0lZUVFBaEJDQURRUkJxSUFOQkdHb1FaeUVJSUFzUVFDRUhJQXNRTWlFTUlBSWdDQ2dDQUNBSElBd1Exd3dnQmlBR1FlOHBJQVlnQmlBSlFRQVFFU2dDQUJCaUVMQUJJQUlRd2dNZ0NVRUFFQkVvQWdCQkFFSC8vLy8vQjBFQUVNOENJQUlRcmdNTUFRc2dBeWdDbkFJb0FtaEJ2UU5HQkVBZ0EwR1FBV29RTUNJQ0lBTkJHR3BCQVNBSlFRRVFFU2dDQUJCMUVLUURRUUFoQkNBQ0lBTkJHR3BCQVNBSlFRQVFFU2dDQUJCMUVLUURJQUlnQTBFWWFrRUJJQWxCQWhBUktBSUFFSFVRcEFNZ0FpQURRUmhxUVFFZ0NVRURFQkVvQWdBUWRSQ2tBeUFESUFJUU1qWUNHQ0FEUVFocUlBTkJHR29RWnlFSUlBc1FRQ0VISUFzUU1pRU1JQUlnQ0NnQ0FDQUhJQXdRMXd3Z0JrSHdLU0FDRUk4TUlBSVFyZ01NQVFzZ0NBUkFJQUFnQXlnQ25BSW9BbWdnQTBHQUFtb1FwUU1nQ1NBREtBS2NBaUlDSUFJb0FnQW9Bb0FCRVFBQUlBMFF1Z2doQkF3QkN3Si9JQWNRRmlJQ1FRRk5CRUFnQWtFQmF3UkFJQUFnQXlnQ25BSW9BbWdnRENBRFFZQUNhaENsQXhEWUZRd0NDeUFEUVpBQmFpQU1JQU1vQXB3Q0lnSWdBaWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaXdSQUFBUTV3VWdBQ0FES0FLY0FpSUNJQUlvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUlzRVFBQUVQc0RFT1lGSVFJZ0FDQURLQUtjQWlnQ2FDQUNJQU5CZ0FKcUVLVURJQWtvQWdBb0FnQWdCMEVBRUJFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDZ0FFUkFBQWdEUkRiREF3QkN5QUFJQU1vQXB3Q0tBSm9JQXdnQTBHQUFtb1FwUU1nQ1NBREtBS2NBaUlDSUFJb0FnQW9Bb0FCRVFBQUVOY1ZDeUVFSUFNb0Fvd0NSUTBBSUFBZ0RDQUhRUUFRRVNnQ0FDSUNJQUlvQWdBb0FpQVJBQUFnQkJEYURDRUVDMEVBSVFnQ1FDQUJEUUFnQkVVRVFDQUFLQUkwSUFOQmtBRnFRWmpvRVJCcElnQVFvQU1nQUJBZ0drRUJJUWdNQVFzZ0JoQnpJQVlnQkJDT0Fnc2dDeEN1QXlBSkVEWUxJQTRRNkFVZ0EwR2dBbW9rQUNBSUMrTURBUVYvSXdCQklHc2lCQ1FBSUFBb0FnZ2hBaUFBS0FJQUtBSUFJZ01nQXlnQ0FDZ0NnQUVSQUFBRVFDQUNRVGhxUVFjZ0FpQUFLQUlBS0FJQUlnTWdBeWdDQUNnQ2VCRUFBQkMvQVVFQVFRQVE4Z01oQXlBQUtBSUVJQU0yQWdBTElBQW9BZ0FvQWdBUXF3d2hBeUFFSUFBb0Fnd29BZ0FnQXlBQ1FUaHFJZ01RandnaEJRSkFJQUFvQWdBb0FnQWlBU0FCS0FJQUtBSzhBUkVBQUVVTkFDQUFLQUlBS0FJQUlnRWdBU2dDQUNnQ3ZBRVJBQUFpQVNBQ0lBRW9BZ0FvQWdnUkFRQWdBQ2dDQkNnQ0FFVU5BQ0FESUFJZ0FDZ0NBQ2dDQUNJQklBRW9BZ0FvQXJ3QkVRQUFJZ0VnQVNnQ0FDZ0NEQkVBQUNJQklBRW9BZ0FvQW5nUkFBQVFvUUVnQUNnQ0JDZ0NBRUVBUWYvLy8vOEhRUUFRendJTEFrQWdBQ2dDQUNnQ0FDSUJJQUVvQWdBb0FzQUJFUUFBUlEwQUlBVVFpUXdnQUNnQ0FDZ0NBQ0lCSUFFb0FnQW9Bc0FCRVFBQUlnRWdBaUFCS0FJQUtBSUlFUUVBSUFBb0FnUW9BZ0JGRFFBZ0F5QUNJQUFvQWdBb0FnQWlBaUFDS0FJQUtBTEFBUkVBQUNJQ0lBSW9BZ0FvQWd3UkFBQWlBaUFDS0FJQUtBSjRFUUFBRUtFQklBQW9BZ1FvQWdCQkFFSC8vLy8vQjBFQUVNOENDeUFGRUk0SUlBQW9BZ1FvQWdBRVFDQURFSE1nQXlBQUtBSUVLQUlBRUlBREN5QUVRU0JxSkFBTDdBUUJCbjhqQUVFZ2F5SUZKQUFnQUNnQ0JDRUNJQUFvQWdBb0FnQWlBU0FCS0FJQUtBSzhBUkVBQUNJQklBSWdBU2dDQUNnQ0NCRUJBQ0FDSUFBb0FnQW9BZ0FpQVNBQktBSUFLQUs4QVJFQUFDSUJJQUVvQWdBb0Fnd1JBQUFpQVNBQktBSUFLQUo0RVFBQUVLRUJJUVFnQUNnQ0FDZ0NBQ0lCSUFFb0FnQW9Bc0FCRVFBQUlnRWdBaUFCS0FJQUtBSUlFUUVBSUFJZ0FDZ0NBQ2dDQUNJQklBRW9BZ0FvQXJ3QkVRQUFJZ0VnQVNnQ0FDZ0NEQkVBQUNJQklBRW9BZ0FvQW5nUkFBQVFvUUVoQmlBQ1FUaHFJZ0VnQUNnQ0FDZ0NBQ0lESUFNb0FnQW9BZ0FSQUFBb0FnZ2dBQ2dDQUNnQ0FDSURJQU1vQWdBb0FnQVJBQUFRNEFJUTNRSUNRQ0FBS0FJQUtBSUFJZ01nQXlnQ0FDZ0NnQUVSQUFCRkRRQWdBQ2dDQ0JDdERBUkFBa0FnQWlnQ2pBUVFyQU1vQWdCQi80Y0VTdzBBSUFFZ0JCQ3ZCRVVOQUNBQlFmLy8vLzhISUFBb0Fnd29BZ0FnQVNBQkVQb0NJQUVnQkJESUFSQ3hBUkR4QkNFRElBQW9BZ3dnQXpZQ0FBc2dBU0FDSUFBb0FnQW9BZ0FpQWlBQ0tBSUFLQUo0RVFBQUVMOEJJQUFvQWd3b0FnQWdCQ0FHRU5RR0lRSWdBQ2dDRUNBQ05nSUFJQUVRY3lBQklBQW9BaEFvQWdBUWpnSU1BUXNnQVVFSElBSWdBQ2dDQUNnQ0FDSUNJQUlvQWdBb0FuZ1JBQUFRdndGQkFFRUFFUElESVFJZ0FDZ0NFQ0FDTmdJQUlBQW9BZ0FvQWdBUXF3d2hBaUFGSUFBb0Fnd29BZ0FnQWlBQkVJOElJUUlnQVNBRUlBQW9BaEFvQWdCQkFFSC8vLy8vQjBFQUVNOENJQUlRaVF3Z0FTQUdJQUFvQWhBb0FnQkJBRUgvLy8vL0IwRUFFTThDSUFJUWpnZ2dBUkJ6SUFFZ0FDZ0NFQ2dDQUJDQUF3c2dCVUVnYWlRQUM2MEJBUUYvQWtBZ0FDZ0NBQ2dDQUNJQklBRW9BZ0FvQXJ3QkVRQUFSUTBBSUFBb0FnQW9BZ0FpQVNBQktBSUFLQUxBQVJFQUFFVU5BQUovUVFFZ0FDZ0NBQ2dDQUMwQWRFVU5BQm9nQUNnQ0JCQ3RERVVOQVVFQUlBQW9BZ0FvQWdBaUFTQUJLQUlBS0FLOEFSRUFBQ0lCSUFFb0FnQW9BZ3dSQUFBUXJBeEZEUUFhSUFBb0FnQW9BZ0FpQUNBQUtBSUFLQUxBQVJFQUFDSUFJQUFvQWdBb0Fnd1JBQUFRckF3TER3dEJBQXZEQWdBakFFSFFBR3NpQVNRQUlBRWdBallDVENBQklBQTJBa1FnQVNBQlFjd0FhallDUUNBQklBRkJRR3MyQWp3Z0FTQUJRY3dBYWpZQ09DQUJRUUEyQWpRZ0FpQUNLQUlBS0FLNEFSRUFBQ0lDSUFBZ0FpZ0NBQ2dDQ0JFQkFDQUJJQUFnQVNnQ1RDSUNJQUlvQWdBb0FyZ0JFUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFCQ2hBVFlDTUNBQklBQTJBaHdnQVNBQlFUUnFOZ0lvSUFFZ0FVRXdhallDSkNBQklBRkJRR3MyQWlBZ0FTQUJRY3dBYWpZQ0dDQUJJQUEyQWhBZ0FTQUJRVEJxTmdJVUlBRWdBVUUwYWpZQ0RDQUJJQUZCekFCcU5nSUlBa0FnQVVFNGFoRGhGUVJBSUFFZ0FFRTRhaERwQlNFQUlBRW9Ba3dpQWlBQ0tBSUFLQUo0RVFBQUlnSWdBaWdDQUNnQ0xCRUFBQkRtQVFSQUlBQVFoQVVMSUFGQkdHb1E0QlVnQUJEb0JRd0JDeUFCUVFocUVOOFZDeUFCUWRBQWFpUUFRUUFMcXdvQkJIOGdBRUU0YWlJRklBTVF5UU1FUUNBRklBTVF5QU1oQndzQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRWEZxSWdoQmh3Rk5CRUJCN3dBaEJnSi9Ba0FDUUFKL0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSVFRSnJEb1lCQ0FnQUFBa0pDd0VLRGc4UUVRSURBZ01OR1F3VEV4TUZGUlVWQlJVVkZSUVVGQndjSEJzYkd4TVRFeFVGRlJVVkJSVVZGQlFVSEJ3Y0d4c2JFeE1URlJVRkZSVVZCUlVVRkJRY0hCd2JHeHNURXhNVkZSVUZGUlVWQlJRVUZCd2NIQnNiR3dRRUJBUUdCZ1lHRWhJRUJBUUVCZ1lHQmhJU0JBUUVCQVlHQmdZU0VoWVhHQmdIQ3lBRlFhc0JJQU1nQkNBQUlBVkJBRUVBRUhRZ0J4Q2hBaENxQVE4TElBVkJ0Z0VnQXlBRUlBQWdCVU1BQUFBQVFRQVErUUlnQnhDaEFoQ3FBUThMSUFGQklFWUVRQ0FGUWdCQkFCRGpCU0VHSUFWQ0FVRUFFT01GREJnTElBVkJBRUVBRUwwQ0lRWWdCVUVCUVFBUXZRSU1Gd3NnQVVFaFJnUkFJQVZDQUVFQUVQa0RJUVlnQlVJQlFRQVErUU1NRndzZ0JVRUFRUUFRZENFR0lBVkJBVUVBRUhRTUZndEI3Z0FoQmd3WEMwSDhBQ0VHSUFVdEFKQUJSUTBXSUFGQkJISkJMRVlFUUNBRlFRQkJBQkN4QkF3akN5QUJRVU5xSWdKQkJFME5HU0FCUVpsL2FpSUJRUVJMRFNBQ1FDQUJRUUZyRGdNaElTRUFDeUFGUWdCQkFCRDVBd3dpQzBIdEFDRUdEQlVMSUFWQnF3RWdBeUFFSUFBZ0JVRUFRUUFRc1FRZ0J4Q2hBaENxQVE4TElBVkJxd0VnQXlBRUlBQWdCVUVBUVFBUXNBUWdCeENoQWhDcUFROExJQVZCcXdFZ0F5QUVJQUFnQlVJQVFRQVErUU1nQnhDaEFoQ3FBUThMSUFWQnRnRWdBeUFFSUFBZ0JVUUFBQUFBQUFBQUFFRUFFTU1ESUFjUW9RSVFxZ0VQQ3lBRlFiWUJJQU1nQkNBQUlBVkRBQUFBQUVFQUVLMEVJQWNRb1FJUXFnRVBDeUFGUkFBQUFBQUFBQUFBUVFBUXd3TWhCaUFGUkFBQUFBQUFBUEEvUVFBUXd3TU1EUXNnQlVNQUFBQUFRUUFRclFRaEJpQUZRd0FBZ0Q5QkFCQ3RCQXdNQ3lBRlFRQkJBQkRsQlNFR0lBVkJBVUVBRU9VRkRBc0xJQVZCQUVFQUVMRUVJUVlnQlVFQlFRQVFzUVFNQ2dzZ0JVRUFRUUFRNUFVaEJpQUZRUUZCQUJEa0JRd0pDeUFGUVFCQkFCQ3dCQ0VHSUFWQkFVRUFFTEFFREFnTFFmTUFJUVlnQlNBREVLb0lSUTBKSUFCQjh3QWdBaUFESUFRUXNRd1BDMEh5QUNFR0RBZ0xRZkVBSVFZTUJ3c2dBQ0FCSUFRZ0J4Q1RGU0VFUWZ3QUlRWWdCUzBBa0FGRkRRWkJBQ0VDSUFGQlYyb2lCa0VhVFEwS0lBRkJzSDlxSWdGQkdrc05EeUFCUVFGckRob05Ed3NPRFE4TER3OFBEdzhQRHc4UER3OFBEZzBNRHc0TkRBNExRZmdBSVFZTUJRdEI5UUFoQmd3RUMwSDhBQ0VHSUFVZ0JCQ3ZCRVVOQXlBRkVKRVZJQVZCNitVUlFZQ0tCQkN5QVF3REN5QUZRd0FBQUFCQkFCRDVBaUVHSUFWREFBQ0FQMEVBRVBrQ0N5RUJJQUFnQmlBSEVLRUNJUVlnQlNBRElBUWdBQ0FCSUFjUW9RSWdCaERVQmd3Q0MwSHdBQ0VHQ3lBRklBWWdBeUFFRVBnQkN5RUFJQUlnQlNBRklBQWdBaWdDQUJDR0FTSUdFUDhDQ3lBR0R3c2dBa0VCYXc0REJnWUdCd3NnQmtFQmF3NGFBUUFFQWdFQUJBUUVCQVFFQkFRRUJBUUVBd1FCQUFNRUFRQUNDeUFGUWdCQkFCRDVBeUVDREFNTElBVkJBRUVBRUhRaEFnd0NDeUFGUVFCQkFCQ3dCQ0VDREFFTElBVkJBRUVBRUxFRUlRSUxJQVZCZ0FFZ0F5QUVJQUFnQWlBSEVLRUNFS29CRHdzZ0JVRUFRUUFRZEF3QkN5QUZRUUJCQUJDd0JBc2hBU0FGUVlBQklBTWdCQ0FBSUFFZ0J4Q2hBaENxQVF0ZUFRRi9Ba0FnQVNBQktBSUFLQUpBRVFBQVJRMEFJQUVnQVNnQ0FDZ0NRQkVBQUNnQ2FFRzBBVWNOQUNBQUlBRWdBU2dDQUNnQ1VCRUFBQ0lBSUFBb0FnQW9Bc0FCRVFBQUlnQWdBQ2dDQUNnQ2VCRUFBQkMvQVNFQ0N5QUNDeW9CQVg4Z0FDZ0NVQ0lBSUFFb0FsQWlBbkpGSVFFZ0FFVWdBa1Z5Qkg4Z0FRVWdBQ0FDRUxFTEN3dnVEUUVIZnlNQVFmQUFheUlCSkFBZ0FTQUNOZ0pzSUFCQk9Hb2lBeUFDSUFJb0FnQW9BZ0FSQUFBb0FnZ2dBaUFDS0FJQUtBSUFFUUFBRU9BQ0VOMENJQUZCNEFCcUlBTVE2UVVoQndKQUlBQWdBaUFDS0FJQUtBSjRFUUFBSWdRZ0JDZ0NBQ2dDTEJFQUFCRG1BUVIvSUFjUWhBVWdBU2dDYkFVZ0Fnc1EzQXdpQWdSQUlBTVFjeUFESUFJUWpnSkJBQ0VDREFFTElBRW9BbXdvQW1oQnhRUkdCRUFDZnlBQktBSnNJZ0lnQWlnQ0FDZ0N2QUVSQUFBaUFpQUNLQUlBS0FKNEVRQUFFSVVCQkVBZ0J4Q0VCU0FESUFBZ0FTZ0NiQ0lDSUFJb0FnQW9BcndCRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQkMvQVJDMkZBd0JDeUFCS0FKc0lnSWdBaWdDQUNnQ3ZBRVJBQUFpQWlBQ0tBSUFLQUlnRVFBQUlnSWdBaWdDQUNnQ3dBRVJBQUFpQWlBQUlBSW9BZ0FvQWdnUkFRQWdBU2dDYkNJQ0lBSW9BZ0FvQXJ3QkVRQUFJZ0lnQWlnQ0FDZ0NJQkVBQUNJQ0lBSW9BZ0FvQXNRQkVRQUFJZ0lnQWlnQ0FDZ0NGQkVBQUJCTFFRQVFEeWdDQUNFQ0lBTWdBeER3QkNBQ0VMY1VDeUVDSUFBb0Fvd0VHZ0pBSUFNdEFKQUJJUVFnQTBFZ0VLSUNJUUFnQkFSQUlBTkJnQUVnQUNBQ0lBTkJBRUVBRUwwQ0VLb0JJUUlNQVFzZ0EwSDhBQ0FBSUFJUStBRWhBZ3NnQXhCeklBTWdBaENPQWtFQUlRSU1BUXNnQVVFQU5nSmNJQUVnQURZQ1dDQUJJQUZCN0FCcU5nSlVJQUVnQVVIY0FHbzJBbEFnQVNnQ2JDZ0NhRUdnQWtZRVFDQUJJQUFnQVNnQ2JDSUNJQUlvQWdBb0Fyd0JFUUFBRU9RVk5nSmNDeUFERUhNZ0FTZ0NYQ0VFSUFFb0Ftd2lBaUFDS0FJQUtBSzhBUkVBQUNFQ0FuOGdCQVJBSUFJZ0FpZ0NBQ2dDSUJFQUFDSUNJQUlvQWdBb0FzQUJFUUFBSVFJTElBSUxJQUFnQWlnQ0FDZ0NDQkVCQUNBQlFjZ0FhaENCQlNFR0FrQUNRQUpBSUFFb0Ftd29BbWhCcmdOR0RRQWdBU2dDYkNnQ2FFR3ZBMFlOQUNBQktBSnNLQUpvUWJBRFJnMEFJQUVvQW13b0FtaEJvQUpIRFFFTElBTVE4QVFoQkNBQlFSQnFJQU1RdmdJZ0FTQUJMUUJBT2dCSUlBRkJFR29RdUFFZ0FVRVFhaUFDSUFJb0FnQW9BZ3dSQUFBaUFpQUNLQUlBS0FKNEVRQUFFT1FCSUFFZ0JpQUJRUkJxRVBvRERBRUxJQUFnQVNnQ2JDSUNJQUlvQWdBb0Fyd0JFUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFCQ2hBU0VFQ3lBQlFSQnFJQUVvQW13UXZ3UVFnd1VnQVNnQ2JDSUNJQUlvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUlzRVFBQUVPY0ZJQUFnQVNnQ2JDSUNJQUlvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUlzRVFBQUVQc0RFT1lGSVFVZ0FTZ0NiQ2dDYUNFQ0lBRkIwQUJxRUtVRElRa2dBU2dDYkNJSUlBZ29BZ0FvQXJ3QkVRQUFJZ2dnQ0NnQ0FDZ0NnQUVSQUFBYUFrQWdBQ0FDSUFVZ0NTQUVFT01WSWdKRkJFQWdBQ0FCS0FKc0tBSm9JQVVnQVVIUUFHb1FwUU1nQkNBQktBSnNJZ0lnQWlnQ0FDZ0N2QUVSQUFBaUFpQUNLQUlBS0FLQUFSRUFBQ0FHRU5zTUlnSkZEUUVMSUFFb0Fsd0VRQ0FGSUFNZ0FDQUZLQUlBSUFFb0Ftd2lBQ0FBS0FJQUtBSzhBUkVBQUNBQ0VOb01JZ0lRL3dJTElBTVFjeUFESUFJUWpnSkJBQ0VDREFFTEFrQUNRQUpBSUFFb0Ftd29BbWdpQmtGMmFrRUVUd1JBUVFFaEFpQUdRZE45YWlJRlFRRkxEUU1nQlVFQmF3MEJEQUlMQW44Z0FTZ0NiQ0lDSUFJb0FnQW9Bb0FCRVFBQVFRRkdCRUFnQTBNQUFJQS9RUUFRK1FJTUFRc2dBU2dDYkNJQ0lBSW9BZ0FvQW9BQkVRQUFRUUpHQkVBZ0EwUUFBQUFBQUFEd1AwRUFFTU1EREFFTElBRW9BbXdpQWlBQ0tBSUFLQUtBQVJFQUFFRURSZ1JBSUFOREFBQ0FQMEVBRUswRURBRUxBa0FnQVNnQ2JDSUNJQUlvQWdBb0FvQUJFUUFBUVFSSEJFQWdBU2dDYkNJQ0lBSW9BZ0FvQW9BQkVRQUFRUVZIRFFFTElBTkJBVUVBRU9VRkRBRUxBa0FnQVNnQ2JDSUNJQUlvQWdBb0FvQUJFUUFBUVFaSEJFQWdBU2dDYkNJQ0lBSW9BZ0FvQW9BQkVRQUFRUWRIRFFFTElBTkJBVUVBRU9RRkRBRUxBa0FnQVNnQ2JDSUNJQUlvQWdBb0FvQUJFUUFBUVFwSEJFQWdBU2dDYkNJQ0lBSW9BZ0FvQW9BQkVRQUFRUXRIRFFFTElBTkNBVUVBRU9NRkRBRUxJQU5CQVVFQUVMMENDeUVHUVFBaEFpQURJQUFnQVNnQ2JDZ0NhRUVNUndSL1FaY0JRWmdCSUFFb0Ftd29BbWhCQ2tZYkJVR1hBUXNnQlNBQUlBRW9BbXdpQUNBQUtBSUFLQUo0RVFBQUVMOEJJQVFnQmlBQktBSnNJZ0FnQUNnQ0FDZ0NlQkVBQUNJQUlBQW9BZ0FvQWh3UkFBQkJBUkRrQmlJQVFRQkIvLy8vL3dkQkFCQ0xDQ0FERUhNQ1FDQUJLQUpzS0FKb1FReEhCRUFnQVNnQ2JDZ0NhRUVOUncwQkN5QURJQUFRamdJTUJBc2dBeUFFRUk0Q0RBTUxJQU5CM0FFZ0JCQ1FERUVBSVFJTUFnc2dBMEhkQVNBRUVKQU1RUUFoQWd3QkN5QUFLQUkwSUFGQnIrUVJFR2tpQUJDZ0F5QUFFQ0FhQ3lBSEVPZ0ZJQUZCOEFCcUpBQWdBZ3VIQWdFRWZ5TUFRVUJxSWdRa0FDQUFRVGhxSWdVUStnSWhCeUFGRUhNZ0FpQUFJQUlvQWdBb0FnZ1JBUUFnQkNBQUlBSWdBaWdDQUNnQ2VCRUFBQkNoQVRZQ1BDQUVRVEJxRURBaUFpQUVRVHhxRUVjZ0JDQUZLQUtFQVJEQ0FqWUNFQ0FDSUFSQkVHb1FRU0FFS0FJOElRWWdBVUd1QVVZRVFDQUVJQVZCcUFFZ0J5QUdFUGdCSWdZMkFqd0xJQVJCRUdvZ0JrRUFJQVVRandnaEFTQUZFSE1nQXlBQUlBTW9BZ0FvQWdnUkFRQWdCQ0FBSUFNZ0F5Z0NBQ2dDZUJFQUFCQ2hBVFlDRENBQ0lBUkJER29RUnlBRUlBVW9Bb1FCRU1JQ05nSUlJQUlnQkVFSWFoQkJJQUVRamdnZ0JVSDFBU0FISUFJUThBTWhBQ0FDRURZZ0JFRkFheVFBSUFBTDhRRUJBWDhDUUFKQUlBRkZEUUFnQVNBQktBSUFLQUo0RVFBQUlnSWdBaWdDQUNnQ1pCRUFBRVVOQVNBQUtBS01CQm9nQVJEZkJnMEJRUUFnQVNBQktBSUFLQUpRRVFBQUlnQkZJQUVnQVNnQ0FDZ0NUQkVBQUNJQ0d3MEFJQUFFUUNBQUlBQW9BZ0FvQXNBQkVRQUFFTjhHUlEwQklBQWdBQ2dDQUNnQ3hBRVJBQUFRM3daRkRRRUxJQUlFUUNBQ0lBSW9BZ0FvQXNBQkVRQUFFTjhHUlEwQkN5QUJJQUVvQWdBb0FrQVJBQUFvQW1naUFFSGZmbW9pQVVFU1RVRUFRUUVnQVhSQjg0RVZjUnNnQUVFWlRVRUFRUUVnQUhSQmdJSGdHSEViY2lBQVFjWjhha0VDU1hJTkFRdEJBQThMUVFFTFd3RUJmeU1BUVJCcklnVWtBQUpBSUFCQnFBRnFFQlpCQVVZTkFDQUFJQUUyQXJRQklBQW9BcmdCRFFBZ0FDQUNOZ0s0QVFzZ0JVRUlhaUFBUWNRQmFpQURFUG9ESUFBZ0FDZ0N3QUVnQkhJMkFzQUJJQVZCRUdva0FBdjZBd0VCZnlBQ0lBSW9BZ0FvQWl3UkFBQVE0Z0loQXlBQklBRW9BZ0FvQWh3UkFBQWhBZ0pBSUFNRVFDQUNRUTVHQkVBZ0FTQUJLQUlBS0FJc0VRQUFFTW9FQkVBZ0FFRTRha0crS1JBaER3c0NRQ0FCSUFFb0FnQW9BcHdCRVFBQVJRMEFJQUVnQVNnQ0FDZ0NJQkVBQUJEOUFVVU5BQ0FBUVRocVFjQXBFQ0VQQ3dKQUlBRWdBU2dDQUNnQ3BBRVJBQUJGRFFBZ0FTQUJLQUlBS0FJZ0VRQUFFUDBCUlEwQUlBQkJPR3BCdnlrUUlROExJQUVnQVNnQ0FDZ0NuQUVSQUFBRVFDQUFRVGhxUWIwcEVDRVBDeUFCSUFFb0FnQW9BcVFCRVFBQVJRMENJQUJCT0dwQnV5a1FJUThMSUFFZ0FTZ0NBQ2dDSEJFQUFFRVFSdzBCSUFFZ0FTZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJR1VRUkFJQUJCT0dwQnZDa1FJUThMSUFFZ0FTZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJRlVnMEJJQUJCT0dwQnVpa1FJUThMSUFKQkRrY05BQ0FCSUFFb0FnQW9BaXdSQUFBUXlnUUVRQ0FBUVRocUlnQkJvZUVSUVlDS0JCQ3lBU0FBUWJjcEVDRVBDd0pBSUFFZ0FTZ0NBQ2dDbkFFUkFBQkZEUUFnQVNBQktBSUFLQUlnRVFBQUVQMEJSUTBBSUFCQk9Hb2lBRUdoNFJGQmdJb0VFTElCSUFCQnVTa1FJUThMSUFFZ0FTZ0NBQ2dDcEFFUkFBQkZEUUFnQVNBQktBSUFLQUlnRVFBQUVQMEJSUTBBSUFCQk9Hb2lBRUdoNFJGQmdJb0VFTElCSUFCQnVDa1FJUXNMWGdBQ1FDQUJJQUlRT0NnQ0FDSUJJQUVvQWdBb0FpZ1JBQUFvQWdSQkJuWkIvd054SWdGQnJIOXFJZ0pCSDAxQkFFRUJJQUowUVorQWdIaHhHMFVFUUNBQlFXRnFJZ0pCQTBzZ0FrRUJSbklOQVFzZ0FDQUJRUUFRc2dnYUN3dm1Gd0VHZnlNQVFjQUNheUlCSkFBZ0FFRTRhaUlGSUFJZ0FpZ0NBQ2dDQUJFQUFDZ0NDQ0FDSUFJb0FnQW9BZ0FSQUFBUTRBSVEzUUlDUUNBQ0lBSW9BZ0FvQXNBQkVRQUFJZ01nQXlnQ0FDZ0NNQkVBQUVVTkFDQUNJQUlvQWdBb0FzQUJFUUFBSWdNZ0F5Z0NBQ2dDZUJFQUFDSURJQU1vQWdBb0FvZ0JFUUFBUlEwQUlBSWdBaWdDQUNnQ3dBRVJBQUFpQXlBREtBSUFLQUl3RVFBQUlnTWdBeWdDQUNnQ3VBRVJBQUFoQXlBQklBSWdBaWdDQUNnQ3dBRVJBQUFpQkNBRUtBSUFLQUo0RVFBQUtBSkFOZ0tBQWlBQVFlUUhhaUFCUVlBQ2FoRG1CaUFETmdJQUN3SkFJQUlnQWlnQ0FDZ0N4QUVSQUFBaUF5QURLQUlBS0FJd0VRQUFSUTBBSUFJZ0FpZ0NBQ2dDeEFFUkFBQWlBeUFES0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDaUFFUkFBQkZEUUFnQWlBQ0tBSUFLQUxFQVJFQUFDSURJQU1vQWdBb0FqQVJBQUFpQXlBREtBSUFLQUs0QVJFQUFDRURJQUVnQWlBQ0tBSUFLQUxFQVJFQUFDSUVJQVFvQWdBb0FuZ1JBQUFvQWtBMkFvQUNJQUJCNUFkcUlBRkJnQUpxRU9ZR0lBTTJBZ0FMSUFGQnVBSnFJQVVRNlFVaENDQUNJQUlvQWdBb0FuZ1JBQUFpQXlBREtBSUFLQUlzRVFBQUVPWUJCRUFnQ0JDRUJRc0NRQUpBQWtBQ1FBSkFBa0FDUUNBQ0tBSm9JZ05CeW50cVFROVBCRUFnQTBIU2Ztb2lCRUVHU3dSQUlBTkI4QVZIRFFZZ0FDZ0NOQ0FCUVlBQ2FrSC80eEVRYVNJQUVLQURJQUFRSUJwQkFTRUREQWdMSUFSQkFXc09CZ1VFQVFJQkF3UUxJQVVRY3lBQ0lBSW9BZ0FvQXNBQkVRQUFJZ01nQUNBREtBSUFLQUlJRVFFQUlBRkJnQUpxSUFVUXZnSWdCUkJ6SUFJZ0FpZ0NBQ2dDeEFFUkFBQWlBeUFBSUFNb0FnQW9BZ2dSQVFBZ0FDQUNJQUlvQWdBb0FzUUJFUUFBSWdNZ0F5Z0NBQ2dDZUJFQUFCQ2hBU0VESUFJb0FtaEJ0Z1JIQkVBZ0JTQUJRY2dCYWlBQlFZQUNhaEQ4QXlJRUVMUUVJQVFRdUFFZ0FDQUNJQUlvQWdBb0FzQUJFUUFBSWdRZ0JDZ0NBQ2dDZUJFQUFCQ2hBU0VFSUFGQnVBRnFJQUlRdndRUWd3VWdBaUFDS0FJQUtBSjRFUUFBSWdZZ0JpZ0NBQ2dDTEJFQUFCRG5CU0FBSUFJZ0FpZ0NBQ2dDZUJFQUFDSUdJQVlvQWdBb0Fpd1JBQUFRK3dNUTVnVWhCaUFBSUFJb0FtZ2dCaUFBSUFJZ0FpZ0NBQ2dDZUJFQUFCQy9BU0FFSUFNZ0FpQUNLQUlBS0FKNEVRQUFJZ01nQXlnQ0FDZ0NIQkVBQUVFQkVPUUdJUU1MSUFVZ0FVR0FBV29nQVVHQUFtb1EvQU1pQkJDMEJDQUVFTGdCSUFBZ0FpQUNLQUlBS0FMQUFSRUFBQ0lBSUFBb0FnQW9BbmdSQUFBZ0F4Q3pCQ0FGRUhNZ0JTQURFSTRDSUFGQmdBSnFFTGdCREFVTElBSWdBaWdDQUNnQ3dBRVJBQUFpQXlBQUlBTW9BZ0FvQWdnUkFRQWdBaUFDS0FJQUtBTEVBUkVBQUNJRElBTW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhCQUpBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBeUFES0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDY0JFQUFBMEFJQUlnQWlnQ0FDZ0N3QUVSQUFBaUF5QURLQUlBS0FKNEVRQUFJZ01nQXlnQ0FDZ0NhQkVBQUVVTkFDQUNLQUpvUWJFQlJ3MEFJQUZCZ0FKcUVEQWhBeUFCSUFRMkFyZ0JJQU1nQVVHNEFXb1FRU0FBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBQ0FBS0FJQUtBSjRFUUFBRUw4QklRQWdBVUg0QUdvZ0FpQUNLQUlBS0FMQUFSRUFBQ0lFSUFRb0FnQW9BbmdSQUFBUTVBRWdBaUFDS0FJQUtBTEFBUkVBQUNJQ0lBSW9BZ0FvQW5nUkFBQWdBVUc0QVdvUXZnUWhBaUFCSUFFb0FuZzJBZ2dnQlNBRElBQWdBVUVJYWlBQ0VJWU1JQU1RTmd3RkN3SkFJQUlnQWlnQ0FDZ0N3QUVSQUFBUThnRkZEUUFnQWlBQ0tBSUFLQUxBQVJFQUFDSURJQU1vQWdBb0FuZ1JBQUFpQXlBREtBSUFLQUp3RVFBQURRQWdBaWdDYUVHekFVY05BQ0FBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBeUFES0FJQUtBSjRFUUFBRUtFQklRTWdCUkJ6SUFVZ0F4Q0FBd3RCQUNFRElBVUNmeUFFSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlCaUFHS0FJQUtBS0FBUkVBQUVFUVJ3MEFHaUFFSUFJb0FtaEJzd0ZIRFFBYUlBRWdBaUFDS0FJQUtBTEFBUkVBQUNJR0lBWW9BZ0FvQW5nUkFBQW9Ba0EyQXJnQklBRWdBRUhrQjJvZ0FVRzRBV29RNWdZb0FnQTJBb0FDSUFFZ0FFSFFCMm9pQmlBQlFZQUNhaERBQ0RZQ3VBRWdBUkNGQkRZQ2NDQUVJQUZCdUFGcUlBRkI4QUJxRUlnQlJRMEFHaUFHSUFGQmdBSnFFTjBFSUFRUUVTZ0NBQXRCQUJDOUFpRUdJQUZCNkFCcUlBSWdBaWdDQUNnQ3dBRVJBQUFpQnlBSEtBSUFLQUo0RVFBQUVPUUJJQUlnQWlnQ0FDZ0N3QUVSQUFBaUJ5QUhLQUlBS0FKNEVRQUFFSVlFSVFjZ0FTQUJLQUpvTmdJRUlBVWdCaUFCUVFScUlBY1FnZ1VnQWlBQ0tBSUFLQUxBQVJFQUFDSUZJQVVvQWdBb0FuZ1JBQUFpQlNBRktBSUFLQUtJQVJFQUFFVU5CU0FDSUFJb0FnQW9Bc0FCRVFBQUlnVWdCU2dDQUNnQ2VCRUFBQ0lGSUFVb0FnQW9BbkFSQUFBTkJTQUFJQUlnQWlnQ0FDZ0N3QUVSQUFBaUFDQUFLQUlBS0FKNEVRQUFLQUpBSUFRUTZ4VU1CUXNnQWlBQ0tBSUFLQUxBQVJFQUFDSURJQUFnQXlnQ0FDZ0NDQkVCQUNBQlFZQUNhaUFGRUw0Q0lBVVFjeUFDSUFJb0FnQW9Bc1FCRVFBQUlnTWdBQ0FES0FJQUtBSUlFUUVBSUFBZ0FpQUNLQUlBS0FMRUFSRUFBQ0lESUFNb0FnQW9BbmdSQUFBUW9RRWhBeUFBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlCQ0FFS0FJQUtBSjRFUUFBSUFJZ0FpZ0NBQ2dDeEFFUkFBQWlCQ0FFS0FJQUtBSjRFUUFBRU9vVklBVWdBVUV3YWlBQlFZQUNhaEQ4QXlJRUVMUUVJQVFRdUFFQ1FBSkFJQUlnQWlnQ0FDZ0N3QUVSQUFBaUJDQUVLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NjQkVBQUEwQUlBSWdBaWdDQUNnQ3dBRVJBQUFpQkNBRUtBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ2FCRUFBRVVOQUNBQUlBSWdBaWdDQUNnQ3dBRVJBQUFpQUNBQUtBSUFLQUo0RVFBQUVMOEJJUUFnQVVFb2FpQUNJQUlvQWdBb0FzQUJFUUFBSWdRZ0JDZ0NBQ2dDZUJFQUFCRGtBU0FDSUFJb0FnQW9Bc0FCRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQ0FCUWJnQmFoQytCQ0VDSUFFZ0FTZ0NLRFlDRUNBRklBTWdBQ0FCUVJCcUlBSVE2UlVNQVFzZ0FVRWdhaUFDSUFJb0FnQW9Bc0FCRVFBQUlnQWdBQ2dDQUNnQ2VCRUFBQkRrQVNBQ0lBSW9BZ0FvQXNBQkVRQUFJZ0FnQUNnQ0FDZ0NlQkVBQUJDR0JDRUFJQUVnQVNnQ0lEWUNEQ0FGSUFNZ0FVRU1haUFBRUlJRkN5QUJRWUFDYWhDNEFRd0RDeUFDSUFJb0FnQW9Bc0FCRVFBQUlnTWdBQ0FES0FJQUtBSUlFUUVBSUFGQmdBSnFFREFoQXlBQ0lBSW9BZ0FvQXNRQkVRQUFJZ1FnQkNnQ0FDZ0NHQkVBQUNBREVOME1JQUFnQWlBQ0tBSUFLQUxBQVJFQUFDSUFJQUFvQWdBb0FuZ1JBQUFRdndFaEFDQUJRUmhxSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlCQ0FFS0FJQUtBSjRFUUFBRU9RQklBSWdBaWdDQUNnQ3dBRVJBQUFpQWlBQ0tBSUFLQUo0RVFBQUlBRkJ1QUZxRUw0RUlRSWdBU0FCS0FJWU5nSVVJQVVnQXlBQUlBRkJGR29nQWhDR0RDQURFRFlNQWdzZ0FDQUNJQUlvQWdBb0FzUUJFUUFBSWdNZ0F5Z0NBQ2dDREJFQUFCRG9GUTBBSUFBZ0FpZ0NhQ0FDSUFJb0FnQW9Bc0FCRVFBQUlnQWdBQ2dDQUNnQ0RCRUFBQ0FDSUFJb0FnQW9Bc1FCRVFBQUlnQWdBQ2dDQUNnQ0RCRUFBQkRuRlNFQUlBVVFjeUFGSUFBUWpnSU1BUXNnQlJCeklBSWdBaWdDQUNnQ3dBRVJBQUFpQXlBQUlBTW9BZ0FvQWdnUkFRQWdBQ0FDSUFJb0FnQW9Bc0FCRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQkNoQVNFRUlBVVFjeUFDSUFJb0FnQW9Bc1FCRVFBQUlnTWdBQ0FES0FJQUtBSUlFUUVBSUFBZ0FpQUNLQUlBS0FMRUFSRUFBQ0lESUFNb0FnQW9BbmdSQUFBUW9RRWhCaUFCUVlBQ2FpQUNFTDhFRUlNRklBSWdBaWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9BaXdSQUFBUTV3VWdBQ0FDSUFJb0FnQW9BbmdSQUFBaUF5QURLQUlBS0FJc0VRQUFFUHNERU9ZRklRZEJBU0VESUFBZ0FpZ0NhQ0FISUFBZ0FpQUNLQUlBS0FKNEVRQUFFTDhCSUFRZ0JpQUNJQUlvQWdBb0FzQUJFUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0Fod1JBQUJCQVJEa0JpRUNJQVVRY3lBQ1JRUkFJQUFvQWpRZ0FVRzRBV3BCanVRUkVHa2lBQkNnQXlBQUVDQWFEQUlMSUFVZ0FoQ09BZ3RCQUNFREN5QUlFT2dGSUFGQndBSnFKQUFnQXd0S0FRRi9Jd0JCRUdzaUFpUUFJQUpCQURZQ0RDQUFJQUVnQVNnQ0FDZ0NlQkVBQUNBQkVFc2dBa0VNYWtFQUVMVUVJUUVnQUVFNGFpSUFFSE1nQUNBQkVJNENJQUpCRUdva0FBdjNBZ0VFZnlNQVFTQnJJZ0lrQUNBQ0lBRTJBaHdnQWlBQVFiQUlhaUFDUVJ4cUVNQUlOZ0lZSUFJUWhRUTJBZ2dDUUFKQUlBSkJHR29nQWtFSWFoQzRBdzBBSUFKQkdHb1FSQ2dDQkNFRkFrQWdBRUU0YWlJQklBRWdBU0FDS0FJY0VHSVFzQUVpQXhESkEwVU5BQ0FCSUFFZ0F4Q3dBUkRpQlVFZ1J3MEFJQUVnQlJEaUJVSEFBRVlFUUNBQkVITWdBU0FDS0FJY0VJQURJQUlnQVVILy8vLy9CMEgvLy8vL0J5QURRUUJCLy8vLy93ZEJBQkNGRERZQ0hDQUNRUWhxRURBaEJDQUNJQUVnQWlnQ0hDQUJJQU1Rc0FGQkFCQ3ZBVFlDQkNBRUlBSkJCR29RUVNBQ0lBRWdBaWdDSENBQklBTVFzQUZCQVJDdkFUWUNCQ0FFSUFKQkJHb1FRU0FCUWZ3QUlBVWdBU0FCSUFFZ0F4Q3dBVUVDRUxFQklBUVFuUU1RK0FFaEFDQUVFRFlNQXdzZ0FDZ0NOQ0FDUVFocVFiRGpFUkJwSWdBUW9BTWdBQkFnR2d3QkN5QUFLQUkwSUFKQkNHcEI0T01SRUdraUFCQ2dBeUFBRUNBYUN5QUNLQUljSVFBTElBSkJJR29rQUNBQUN5d0JBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJJQUlnQWhDZkZTQUFJQU5CQ0dvUTFBUWdBMEVRYWlRQUM0c09BUVYvSXdCQk1Hc2lBaVFBSUFJZ0FTQUJLQUlBS0FLNEFSRUFBRFlDQ0NBQ0lBQkJyQVJxSWdNZ0FrRUlhaERBQ0RZQ0tDQUNFSVVFTmdJSUFrQWdBa0VJYWlBQ1FTaHFFSWdCQkVBZ0FpQUNRU2hxRUVRb0FnUWlBVFlDSkF3QkN5QUNRUmhxSUFBZ0FDQUJJQUVvQWdBb0FvZ0JFUUFBS0FJRVFRWjJRZjhEY1VFQUVMSUlJZ1lnQVNBQktBSUFLQUo0RVFBQUVMOFZJQUlnQUNBQklBSW9BaGdRdmhVaUJEWUNKQ0FDSUFFZ0FTZ0NBQ2dDdUFFUkFBQTJBZ2dnQXlBQ1FRaHFFTTRNSUFRMkFnQWdBaWdDSENJREJFQWdBRUd3Q0dvZ0FrRWthaEM5RlNBRE5nSUFDd0pBSUFFZ0FTZ0NBQ2dDZ0FFUkFBQkJFRVlOQUNBQVFUaHFJZ01nQWlnQ0pDQUJJQUVvQWdBb0FuZ1JBQUFRL2dSQmZ4QjRJQU1nQWlnQ0pDQUFJQUVnQVNnQ0FDZ0NlQkVBQUNJRUlBUW9BZ0FvQWl3UkFBQVF6UXhCZnhCNElBTWdBaWdDSkNBQUlBRWdBU2dDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaXdSQUFBUXpBeEJmeEI0SUFBZ0FpZ0NKRUYvSUFFZ0FTZ0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0Fpd1JBQUFReXd3Z0FTQUJLQUlBS0FLSUFSRUFBQkN5QXdSQUlBTWdBaWdDSkVFZklBRWdBU2dDQUNnQ2lBRVJBQUFvQWhSQkRIWkJCM0VRZUFzZ0FTQUJLQUlBS0FLSUFSRUFBQkRPQkFSQUlBTWdBaWdDSkVFZ0lBRWdBU2dDQUNnQ2lBRVJBQUF0QUJvUWVBc2dBU0FCS0FJQUtBSjRFUUFBSWdRZ0JDZ0NBQ2dDTEJFQUFCQ3BCUVJBSUFNZ0FpZ0NKRUVCSUFFZ0FTZ0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0Fpd1JBQUFvQWlCQkNIWkIvdzl4RUhnTElBRWdBU2dDQUNnQ2lBRVJBQUFRbGdKRkRRQWdBeUFDS0FJa1FTTWdBU0FCS0FJQUtBS0lBUkVBQUNnQ0RCQjRDeUFCSUFFb0FnQW9Bb2dCRVFBQUVJQUNCRUFnQUVFNGFpQUNLQUlrUVI0Z0FTQUJLQUlBS0FLSUFSRUFBQ2dDRkVIL0gzRVFlQXNnQUVFNGFpSURJQUlvQWlRZ0FTQUJLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NMQkVBQUJES0RFRi9FSGdDUUNBQklBRW9BZ0FvQW9nQkVRQUFFTEVEUlEwQUlBQW9Bb3dFTFFETUJFVU5BQ0FEUVRZUUlTQURJQUlvQWlSQkhTQUJJQUVvQWdBb0FvZ0JFUUFBTFFBYkVIZ0xBa0FnQVNBQktBSUFLQUtJQVJFQUFCQ3JCUVJBSUFNZ0FpZ0NKRUVpSUFFZ0FTZ0NBQ2dDaUFFUkFBQW9BaFJCRDNaQi93QnhFSGdNQVFzZ0FTQUJLQUlBS0FKNEVRQUFFTWtNUlEwQUlBTWdBaWdDSkVFaVFRQVFlQXNDUUNBQklBRW9BZ0FvQW9nQkVRQUFFT2tDQkVBZ0F5QUNLQUlrUVNFZ0FTQUJLQUlBS0FLSUFSRUFBQzhCR0JCNERBRUxJQUVnQVNnQ0FDZ0NlQkVBQUJESkRFVU5BQ0FESUFJb0FpUkJJVUVBRUhnTElBRWdBU2dDQUNnQ2lBRVJBQUFReWdRRVFDQURJQUlvQWlSQkt5QUJJQUVvQWdBb0FvZ0JFUUFBTFFBZ0VIZ0xBa0FnQUNnQ2pBUXRBTHdFUlEwQUlBTkJOUkFoQWtBZ0FTQUJLQUlBS0FLSUFSRUFBQkNWQWtVTkFDQURJQUlvQWlSQkpDQUJJQUVvQWdBb0FvZ0JFUUFBS0FJY1FROXhFSGdnQUNnQ2pBUkJ3QVJxSUFFZ0FTZ0NBQ2dDaUFFUkFBQW9BaHhCRDNFUWF5Z0NEQ0lFUWYvL0FFWU5BQ0FESUFJb0FpUkJKU0FFRUhnTElBRWdBU2dDQUNnQ2lBRVJBQUFRaFFORkRRQWdBeUFDS0FJa1FTTWdBU0FCS0FJQUtBS0lBUkVBQUNrQ0dFSXlpS2RCL3o5eEVIZ0xJQVpCLy8vLy93ZEhCRUFnQXlBQ0tBSWtRUXNnQmhCNEN5QUJJQUVvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUtjQVJFQUFBUkFJQUpCQ0dvUU1DRUVJQUVnQVNnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQWl3UkFBQWdCQ0FBS0FLTUJDMEFpQVFRc1FnZ0JCQVdCRUJCQUNFRkEwQWdBeUFDS0FJa0lBUWdCUkFSS0FJQVFYOFFlQ0FGUVFGcUlnVWdCQkFXU1EwQUN3c2dCQkEyQ3lBRElBSW9BaVFnQUNBQklBRW9BZ0FvQW5nUkFBQWlCQ0FFS0FJQUtBSXNFUUFBRVBzRFFYOFFlQUpBSUFaQkNVY0VRQ0FHUVJSSERRRWdBeUFDS0FJa1FZQXBRZi8vLy84SElBQW9Bb3dFTFFETkJDSUVHMEYvRUhnZ0JFVU5BU0FEUVlFcEVDRWdBMEhoMnhFUVFnd0JDeUFCSUFFb0FnQW9Bb2dCRVFBQUxRQW9CRUFnQXlBQ0tBSWtRWVFwUVg4UWVDQURRWWNwRUNFZ0EwR0czQkVRUWdzZ0FTQUJLQUlBS0FLSUFSRUFBQ2dDTEVHQWNFWU5BQ0FESUFJb0FpUkJpQ2tnQVNBQktBSUFLQUtJQVJFQUFDZ0NMQkI0SUFOQml5a1FJU0FEUVozY0VSQkNDeUFCSUFFb0FnQW9Bb2dCRVFBQUxRQW5CRUFnQXlBQ0tBSWtRWUlwUVg4UWVDQURRWU1wRUNFZ0EwRzYzQkVRUWdzZ0FTQUJLQUlBS0FLSUFSRUFBQzBBQ0VFUWNRUkFJQU1nQWlnQ0pFR2xLVUYvRUhnZ0EwR2tLUkFoSUFOQjNkd1JFRUlMSUFBb0Fvd0VHaUFCRVBJQkJFQWdBeUFDS0FJa1Fld3BRZXNwSUFFZ0FTZ0NBQ2dDZUJFQUFDSUFJQUFvQWdBb0Fpd1JBQUFwQWdSQ2dJQ0FnSUNBQVlOUUcwRi9FSGdMSUFJb0FpUWhBUXNnQWtFd2FpUUFJQUVMcmdRQkJYOGpBRUhRQUdzaUFpUUFJQUpCeUFCcUlBQkJPR29pQkJEcEJTRUdJQUVnQVNnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQW9nQkVRQUFCRUFnQVNBQktBSUFLQUs0QVJFQUFDRURJQUlnQVNBQktBSUFLQUo0RVFBQUtBSkFOZ0lRSUFCQjVBZHFJQUpCRUdvUTVnWWdBellDQUFzZ0FTQUJLQUlBS0FKNEVRQUFJZ01nQXlnQ0FDZ0NMQkVBQUJEbUFRUkFJQVlRaEFVTElBSWdBQ0FCRVBBVklnTTJBa1FDUUNBRUlBTVE0UXhGRFFBQ1FDQUVJQUVnQVNnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQW9nQkVRQUFCSDhnQVNBQktBSUFLQUo0RVFBQUtBSkFFRGRGRFFFZ0FpZ0NSQVVnQXdzUXRnUWhBeUFBS0FLTUJCQ3NBeUVGSUFOQkFuSkJBMGNFUUNBRFFRZEhJQVVvQWdCQi80Y0VTM0ZGRFFFTElBSkJFR29nQUVHQUJHb2dBa0hFQUdvUTd4VUxJQUVnQVNnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0ExSU5BQ0FDSUFBZ0FpZ0NSQkR1RlRZQ1JBc0NRQ0FBTFFEK0F3UkFJQUVnQVNnQ0FDZ0NoQUVSQUFBUTVnRkZEUUVMSUFRUWN5QUNRUkJxSUFFZ0FTZ0NBQ2dDaEFFUkFBQkJOQkE5R2tFQklRTUNRQ0FDUVJCcUVPWUJEUUFnQWlBQklBRW9BZ0FvQXJnQkVRQUFOZ0lFSUFJZ0FFSEFCR29nQWtFRWFoREtEVFlDQ0NBQ0VJVUhOZ0lBSUFKQkNHb2dBaEFlRFFBZ0JDQUVJQUlvQWtRUVloRGdERUVCY3lFREN5QUNLQUpFSVFBZ0F3UkFJQVFnQUJDT0Fnd0JDeUFFSUFBUWdBTUxJQVlRNkFVZ0FrSFFBR29rQUFzSUFDQUFFTVFJR2d0RkFRRi9Jd0JCSUdzaUFpUUFJQUlnQVJDU0F6WUNFQkRuQVNBQ1FSaHFJQUFnQVNBQ1FSQnFJQUpCQ0dvUTBBd2dBa0VZYWhCWElRQWdBa0VnYWlRQUlBQkJCR29MSndFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFRTRhaUFDUVF4cUVFY2dBa0VRYWlRQUN6TUJBWDhqQUVFUWF5SURKQUFnQXlBQUlBRVF3UWcyQWd3Z0FFRzBBMm9nQTBFTWFoRHpGU0FDTmdJQUlBTkJFR29rQUFzcUFRRi9Jd0JCRUdzaUFpUUFJQUlnQVJBVE5nSU1JQUJCeEFCcUlBSkJER29RUVNBQ1FSQnFKQUFMUEFBQ2Z5QUFRWDlxSWdCQkFVMEVRRUVGSUFCQkFXdEZEUUVhUVFBZ0FVRi9haUlCUVFoUERRRWFJQUZCQW5SQm9Pb1JhaWdDQUE4TFFRQUxDNXNCQVFKL0l3QkJFR3NpQVNRQUlBQXRBUDBEUlFSQUlBQkJPR29pQWlBQUtBSWtFTUlJRU9VQklBSVFsQXdMSUFFZ0FFR0FCR29pQWhEbkF6WUNDQ0FCSUFJUWdRRTJBZ0FnQVVFSWFpQUJFQjRFUUFOQUlBQW9BaXdnQVVFSWFoQlhLQUlBRURrZ0FVRUlhaENwQVNBQklBSVFnUUUyQWdBZ0FVRUlhaUFCRUI0TkFBc0xJQUJCT0dvaUFCQ0dGQ0FBRVA0VElBRkJFR29rQUF2SEVBRUdmeU1BUVNCcklnVWtBQ0FBUVFFUXlBSWdBRUVBTmdJMElBQkJBRFlDTUNBQVFnQTNBaVFnQUNBRE5nSWdJQUJCOE5nUk5nSUFJQUJCT0dvZ0FVR0lnQ0FnQUNnQ05CRGRGQ0VFSUFCQkFEb0EvZ01nQUVFQU93SDhBeUFBUVlBRWFoQ2RCQ0FBSUFJMkFvd0VJQUFnQWkwQTJ3TTZBSkFFSUFCQm1BUnFFSllCR2lBQVFhd0VhaENXQVJvZ0FFSEFCR29RbGdFYUlBQkIxQVJxRUpZQkdpQUFRZEFIYWlFR0lBQkI2QVJxSVFFRFFDQUJFSllCUVJScUlnRWdCa2NOQUFzZ0FFSFFCMm9RbGdFYUlBQkI1QWRxRUpZQkdpQUFRZmdIYWhEMEJpQUFRWkFJYWhDV0FSb2dBRUdrQ0dvUW1RY2FJQUJCc0FocUVKWUJHZ0ovSUFJb0FnQWlBVUVOVFFSQUlBRkJBblJCNk9rUmFpZ0NBQXdCQzBFRUN5RUpJQVFRYzBFQklBSW9BaWdROXhVaEFTQUVJQUlvQWl3MkFnd2dCQ0FCTmdJSUlBTXRBQUFFUUNBRVFRRTZBQ2dnQkNBRUlBSkIzQVpxRU1FSU5nSVFJQVZCRUdvUVRpRUdJQUpCZ0FkcUlnY1Fwd0VoQ0NBQ0VLd0RLQUlBUVlDQ0JFa2hBMEVBSVFFZ0NFRUFTZ1JBQTBBQ1FDQURRUUZ4QkVBZ0JrR2MyUkVRdGdJYUlBWWdCeUFCRU5RREVNRUVJQVpCc3RrUkVMWUNHZ3dCQ3lBRUlBY2dBUkRVQXhEMkZRc2dCeENuQVNFSUlBSVFyQU1vQWdCQmdJSUVTU0VESUFGQkFXb2lBU0FJU0EwQUN3c0NRQ0FEUlEwQUlBY1Fwd0ZCQVVnTkFDQUdRYlRaRVJDMkFob0xJQVlnQWtIb0Jtb1F3UVFnQkVFVWFpQUdFSVlDSUFVZ0FrSDBCbW9pQVJEUkFqWUNDQ0FGSUFFUWZqWUNBQ0FGUVFocUlBVVFpQUVFUUFOQUlBUWdCVUVJYWhCWElBVkJDR29RVjBFTWFoRDFGU0FGUVFocUVLa0JJQVVnQVJCK05nSUFJQVZCQ0dvZ0JSQ0lBUTBBQ3dzZ0JoQWdHZ3NnQUNBRVFiM1pFUkNmRERZQ2xBUWdCQ0VCSUFJdEFPWUZCSDhnQkVISzJSRkJnSW9FRUxJQklBUkI0eWtRSVVIa0tRVkJBQXNoQXlBQklBSXRBSWdFQkg4Z0JFSGhLUkFoSUFSQjZ0a1JRWUNLQkJDeUFVRURCVUVCQ3pZQ1ZDQUJJQU0yQWxBZ0FpMEEwZ1VFUUNBRVFkb2lFQ0VMSUFBZ0JDQUNFQ1VRRXhDL0ZDSUJOZ0lrSUFBZ0JDQUpJQUVnQWhBbEVCTVF3aFEyQWl3Z0JTQUNFTU1JSWdFUTV3TTJBaEFnQlNBQkVJRUJOZ0lJSUFWQkVHb2dCVUVJYWhBZUJFQURRQ0FFSUFWQkVHb1FWeEFURVBRVklBVkJFR29RcVFFZ0JTQUJFSUVCTmdJSUlBVkJFR29nQlVFSWFoQWVEUUFMQ3lBQ0xRQzhCQVJBSUFSQk5SQWhJQVFnQUNnQ0pFRUxRWDlCZjBGL0VMWUJDd0pBSUFJb0FnQWlBVUVOU3cwQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVFQmF3NE5Bd01FQVFJRkJRVUZCUVVHQmdBTElBUkJBUkFoREFZTElBUkJBUkFoSUFJdEFKd0VCRUFnQkNBQUtBSWtRUVpCZjBGL1FYOFF0Z0VMSUFRZ0FDZ0NKRUVIUVFnZ0FpMEFuUVFiUVg5QmYwRi9FTFlCSUFJdEFLMEVCRUFnQkNBQUtBSWtRUWxCZjBGL1FYOFF0Z0VMSUFJdEFLNEVCRUFnQkVIZkloQWhJQVFnQUNnQ0pFSGVJa0YvUVg5QmZ4QzJBU0FFUVliYUVSQkNDd0pBSUFJb0FyQUVRUVJHRFFBZ0FpMEEzQU5GRFFBZ0JDQUFLQUlrUVF4QmYwRi9RWDhRdGdFTFFRNUJEMEgvLy8vL0J5QUNLQUt3QkNJQlFRTkdHeUFCUVFKR0d5SUJRZi8vLy84SFJ3UkFJQVFnQUNnQ0pDQUJRWDlCZjBGL0VMWUJDeUFDS0FLb0JFRi9haUlIUVFWTERRVkIvQ2toQWtINktTRUJRZmdwSVFOQjlpa2hCZ0pBQWtBQ1FBSkFBa0FDUUNBSFFRRnJEZ1VCQkFNRkFBSUxRZnNwSVFFTUJBdEI5eWtoQmd0Qmdpb2hBaUFHSVFFTUFndEIrU2toQXd0Qjh5a2hBaUFESVFFTElBUWdBQ2dDSkNBQlFYOUJmMEYvRUxZQklBUWdBaEFoSUFSQm90b1JFRUlNQlFzZ0JFRUJFQ0VnQkNBQUtBSWtRUkVnQWtFQUVJTUNJQUpCQVJDREFpQUNRUUlRZ3dJUXRnRWdBaWdDMUFSQkFVWUVRQ0FFUWFncEVDRWdCQ0FBS0FJa1Fha3BRWDlCZjBGL0VMWUJJQVJCeE5vUkVFSU1CUXNnQWlnQzFBUkJBa2NOQkNBRVFlWXBFQ0VnQkNBQUtBSWtRYW9wUVg5QmYwRi9FTFlCSUFSQnhOb1JFRUlNQkFzZ0JFRURFQ0VDUUFKL0lBSW9BZ0JCQVVZRVFDQUVJQUFvQWlSQkdpQUNLQUtRQkVGL1FYOFF0Z0VnQWlnQ21BUU1BUXNnQWlnQ2xBUUxRWHRxSWdOQkJFc05BRUVXSVFFQ1FBSkFBa0FnQTBFQmF3NEVBd01BQVFJTFFSZ2hBUXdCQzBFWklRRUxJQVFnQUNnQ0pDQUJRWDlCZjBGL0VMWUJDeUFDS0FLZ0JDSUJRWDlxUVFKTkJFQWdCQ0FBS0FJa0lBRkJmMEYvUVg4UXRnRUxRUVJCQlVILy8vLy9CeUFDS0FLa0JDSUJRUUpHR3lBQlFRRkdHeUlCUWYvLy8vOEhSd1JBSUFRZ0FDZ0NKQ0FCUVg5QmYwRi9FTFlCQ3lBQ0xRQ3NCRVVOQXlBRUlBQW9BaVJCQ2tGL1FYOUJmeEMyQVF3REN5QUVRUUlRSVNBQ0tBS1VCRUYvYWlJQlFRVkxRVGNnQVVIL0FYRjJRUUZ4UlhKRkJFQWdCQ0FBS0FJa0lBRkJBblJCME9rUmFpZ0NBRUYvUVg5QmZ4QzJBUXNnQkNBQUtBSWtRUUFnQWlnQ2pBUkJmMEYvRUxZQkFrQWdBaWdDbUFSQmYyb2lBMEVHU3cwQVFSc2hBUUpBQWtBQ1FDQURRUUZyRGdZREF3QURBd0VDQzBFY0lRRU1BUXRCSFNFQkN5QUVJQUFvQWlRZ0FVRi9RWDlCZnhDMkFRc2dCQ0FBS0FJa1FSb2dBaWdDa0FSQmYwRi9FTFlCREFJTElBUkIzQ2tRSVNBRVFlYmFFUkJDREFFTElBUkJraWtRSVNBRVFmbmFFUkJDSUFRZ0FDZ0NKRUVSSUFKQkFCQ0RBaUFDUVFFUWd3SWdBa0VDRUlNQ0VMWUJJQUlvQWdCQkRVY05BQ0FFSUFBb0FpUkJHaUFDS0FLUUJFRi9RWDhRdGdFZ0JDQUFLQUlrUVpZcElBSW9BdGdFUVg5QmZ4QzJBU0FDS0FLWUJFRi9haUlDUVFSTERRQkJHeUVCQWtBQ1FBSkFJQUpCQVdzT0JBQURBd0VDQzBHVktTRUJEQUVMUWJJcElRRUxJQVFnQUNnQ0pDQUJRWDlCZjBGL0VMWUJDeUFGUVNCcUpBQWdBQXR4QVFOL0l3QkIwQWhySWdNa0FDQUFLQUpBSWdRRVFDQURRY2dJYWhDaUN5RUZFTlVERUowSklBUWdBeUFBRUt3REtBSUFJQUFnQWlBRklBSWJFUGtWSWdBZ0JDZ0NBQ2dDQ0JFQkFDQUFFUGdWSUFCQk9Hb2dBUkNrRkJEVkF4RDdHU0FBRU1RSUdnc2dBMEhRQ0dva0FBczhBUUovSXdCQklHc2lBaVFBSUFKQkdHb2dBUkF4SWdNUWlBVWdBa0VJYWlBQUlBRVE1UXdnQWtFSWFoRG9CaUFES0FJQUdpQUNRU0JxSkFBTFBBRUNmeU1BUVNCcklnSWtBQ0FDUVJocUlBRVFNU0lERUlnRklBSkJDR29nQUNBQkVPVU1JQUpCQ0dvUXN3SWdBeWdDQUJvZ0FrRWdhaVFBQ3pVQkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFFUTV3dzJBZ2dnQWhETEFUWUNBQ0FDUVFocUlBSVFIaUVBSUFKQkVHb2tBQ0FBQ3lzQkFYOGdBVUV2RUtJSklnSkJmMFlFUUNBQVFlVFlFUkJwR2c4TElBQWdBU0FDUVFGcVFYOFE3UVlMNndFQkJYOGpBRUZBYWlJQkpBQkJBU0VGQWtBZ0FFRTRhaUlERVBzQkRRQWdBaWdDYUVHd0JFY05BQ0FCUVRCcUlBTVE3Z1pCQUNFRklBRkJNR29RRTBFQVFRcEMvLy8vL3c4UWhRaW5JUVFnQWlBQ0tBSUFLQUs4QVJFQUFDQUVFQkVvQWdBaUFpQUNLQUlBS0FJTUVRQUFJUVFnQVVFZ2FpQURFUDRWSUFFZ0FVRWdhaER0QVNJR0lRY2dBVUVRYWlJQ0lBTTJBZ0FnQWtFRWFpQURFTzBCR2lBRElBY1FoZ0lnQmhBZ0dpQUVJQUFnQkNnQ0FDZ0NDQkVCQUNBQ0tBSUFJQUpCQkdvaUFCQ0dBaUFBRUNBYUlBRkJJR29RSUJvZ0FVRXdhaEFnR2dzZ0FVRkFheVFBSUFVTE9nQWdBaWdDYUJEc0JnUkFJQUlnQWlnQ0FDZ0NmQkVBQUNJQUlBQW9BZ0FvQWlnUkFBQWlBQ0FBS1FJRVFvQ0FnSUFnaERjQ0JBdEJBUXVRQWdFQ2Z5TUFRU0JySWdFa0FBSkFJQUlvQW1nUTlBd0VRQ0FBS0FKRUlRTWdBU0FDTmdJQUlBRkJFR29nQXlBQkVJd0ZFTzBCSVFNQ1FDQUFRVGhxSWdRUSt3RUVRQ0FDSUFJb0FnQW9BbndSQUFBaUFpQUNLQUlBS0FJb0VRQUFJZ0lnQWlrQ0JFS0FnSUNBSUlRM0FnUU1BUXNnQVNBRUVPa01JQU1nQVJEckRTQUJFQ0FhQ3lBQVFTUnFJZ0lnQXhEb0RFVUVRQ0FCSUFBb0FpQWdBeENMQlNBQklBSWdBeENMQlFzZ0F4QWdHa0VBSVFBTUFRdEJBU0VBSUFJb0FtZ1E3QVpGRFFBZ0FpQUNLQUlBS0FLQUFSRUFBRUVJUmcwQUlBSWdBaWdDQUNnQ2ZCRUFBQ0lDSUFJb0FnQW9BaWdSQUFBaUFpQUNLUUlFUW9DQWdJQWdoRGNDQkFzZ0FVRWdhaVFBSUFBTHJRRUJBMzhqQUVFZ2F5SUNKQUFnQUNnQ1JDRURJQUlnQVRZQ0FDQUNRUkJxSUFNZ0FoQ01CUkR0QVNFREFrQWdBRUU0YWlJRUVQc0JCRUFnQVNBQktBSUFLQUo4RVFBQUlnRWdBU2dDQUNnQ0tCRUFBQ0lCSUFFcEFnUkNnSUNBZ0NDRU53SUVEQUVMSUFJZ0JCRHBEQ0FESUFJUTZ3MGdBaEFnR2dzZ0FFRWthaUlCSUFNUTZBeEZCRUFnQWlBQUtBSWdJQU1RaXdVZ0FpQUJJQU1RaXdVTElBTVFJQm9nQWtFZ2FpUUFDd2dBSUFBUXlBZ2FDelVCQVg4akFFRVFheUlDSkFBZ0FpQUFJQUVRNmd3MkFnZ2dBaERMQVRZQ0FDQUNRUWhxSUFJUUhpRUFJQUpCRUdva0FDQUFDK0FCQVFGL0l3QkJFR3NpQVNRQUlBSWdBaWdDQUNnQ3dBRVJBQUFpQXlBQUlBTW9BZ0FvQWdnUkFRQWdBQ2dDSUNFRElBRWdBallDREFKQUlBTWdBVUVNYWhEc0RFVU5BQ0FDSUFJb0FnQW9Bc0FCRVFBQUVPc0ZCRUFnQWlBQ0tBSUFLQUo4RVFBQUlnQWdBQ2dDQUNnQ0tCRUFBQ0lBSUFBcEFnUkNnSUNBZ0NDRU53SUVEQUVMSUFBb0FpQWhBeUFCSUFJMkFnZ2dBeUFCUVFocUVJd0ZJQUFvQWlRUW1BSkZEUUFnQWlBQ0tBSUFLQUo4RVFBQUlnQWdBQ2dDQUNnQ0tCRUFBQ0lBSUFBcEFnUkNnSUNBZ0NDRU53SUVDeUFCUVJCcUpBQkJBQXRpQVFKL0l3QkJFR3NpQWlRQUlBQW9BaUFoQXlBQ0lBRTJBZ3dnQXlBQ1FReHFFSXdGSUFBb0FpUVFtQUlFUUNBQklBRW9BZ0FvQW53UkFBQWlBQ0FBS0FJQUtBSW9FUUFBSWdBZ0FDa0NCRUtBZ0lDQUlJUTNBZ1FMSUFKQkVHb2tBQXZsQXdJRmZ3RjlJd0JCSUdzaUJDUUFJQUVRSXlBQ0tBSUFFT2tHSVFjZ0FSQThJUVVnQkVFQU9nQWZBa0FDUUNBRlJRMEFJQUVnQnlBRkVEUWlDQkFSS0FJQUlnWkZEUUFEUUNBR0tBSUFJZ1pGRFFFZ0J5QUdLQUlFUndSQUlBWW9BZ1FnQlJBMElBaEhEUUlMSUFFUVF5QUdRUWhxSUFJUXhBSkZEUUFMREFFTElBUkJFR29nQVNBSElBTVF3Z1VnQVJBaktBSUFJUUlnQVJCRElRTUNRQ0FGQkVBZ0F5b0NBQ0FGczVRZ0FrRUJhck5kUVFGekRRRUxJQVFnQlJDNkFVRUJjeUFGUVFGMGNqWUNEQ0FFQW44Z0FSQWpLQUlBUVFGcXN5QUJFRU1xQWdDVmpTSUpRd0FBZ0U5ZElBbERBQUFBQUdCeEJFQWdDYWtNQVF0QkFBczJBZ2dnQVNBRVFReHFJQVJCQ0dvUVVpZ0NBQkR1RENBSElBRVFQQ0lGRURRaENBc0NRQ0FCSUFnUUVTZ0NBQ0lDUlFSQUlBUW9BaEFnQVVFSWFpSUNLQUlBTmdJQUlBSWdCQ2dDRURZQ0FDQUJJQWdRRVNBQ05nSUFJQVFvQWhBb0FnQkZEUUVnQkNnQ0VDRUNJQUVnQkNnQ0VDZ0NBQ2dDQkNBRkVEUVFFU0FDTmdJQURBRUxJQVFvQWhBZ0FpZ0NBRFlDQUNBQ0lBUW9BaEEyQWdBTElBUkJFR29RWHlFR0lBRVFJeUlCSUFFb0FnQkJBV28yQWdBZ0JFRUJPZ0FmSUFSQkVHb1Fzd0lMSUFBZ0JFRVFhaUFHRURFZ0JFRWZhaENpQVNBRVFTQnFKQUFMcFFFQkFuOGdBQkE4SVFNZ0FTZ0NCQ0FERURRaEJBSkFJQUpGQkVBZ0FTQUFRUWhxSWdJb0FnQTJBZ0FnQWlBQk5nSUFJQUFnQkJBUklBSTJBZ0FnQVNnQ0FFVU5BU0FBSUFFb0FnQW9BZ1FnQXhBMEVCRWdBVFlDQUF3QkN5QUJJQUlvQWdBMkFnQWdBaUFCTmdJQUlBRW9BZ0FpQWtVTkFDQUNLQUlFSUFNUU5DSUNJQVJHRFFBZ0FDQUNFQkVnQVRZQ0FBc2dBQkFqSWdBZ0FDZ0NBRUVCYWpZQ0FBdkhBZ0lIZndGOUl3QkJFR3NpQmlRQUlBQVFQQ0VFSUFBUUl5Z0NBQ0VESUFBUVF5RUZBa0FnQkFSQUlBVXFBZ0FnQkxPVUlBTkJBV3F6WFVFQmN3MEJDeUFHSUFRUXVnRkJBWE1nQkVFQmRISTJBZ3dnQmdKL0lBQVFJeWdDQUVFQmFyTWdBQkJES2dJQWxZMGlDa01BQUlCUFhTQUtRd0FBQUFCZ2NRUkFJQXFwREFFTFFRQUxOZ0lJSUFBZ0JrRU1haUFHUVFocUVGSW9BZ0FROEF3Z0FCQThJUVFMQWtBZ0FDQUJJQVFRTkNJSUVCRW9BZ0FpQTBVRVFFRUFJUU1NQVFzZ0F5Z0NBQ0lGUlEwQUlBVW9BZ1FnQkJBMElBaEhEUUJCQUNFRkEwQkJBQ0VIUVFBQ2Z5QUJJQU1vQWdBb0FnUkdCRUFnQUJCRElBTW9BZ0JCQ0dvZ0FoQ21BeUVIQ3lBSFJRc2dCVUVCYzBFQmNSc05BU0FES0FJQUlnTW9BZ0FpQ1VVTkFTQUZJQWR5SVFVZ0NTZ0NCQ0FFRURRZ0NFWU5BQXNMSUFaQkVHb2tBQ0FEQzBvQkFuOGpBRUVRYXlJQ0pBQWdBU0FBRUNNZ0FVRUlhaUlERU9jR05nSUVJQUFnQVNBQUlBRW9BZ1FnQXhDSkZoQ0lGaUFDUVFocUlBRVFNU2dDQUNFQUlBSkJFR29rQUNBQUMzWUJBbjhqQUVFUWF5SUVKQUFnQVJBYklRTWdBRUVZRUNZZ0JFRUlhaUFEUVFBUXd3RVFrUUVpQUNnQ0FFRUlhaUlESUFJUTBnTWdBeUFDS0FJTU5nSU1JQUFRSlVFQk9nQUVJQUVRSXlBQUtBSUFRUWhxRU9jR0lRRWdBQ2dDQUNBQk5nSUVJQUFvQWdCQkFEWUNBQ0FFUVJCcUpBQUxOUUVCZnlNQVFSQnJJZ0lrQUNBQ0lBQWdBUkNMRmlBQUlBSW9BZ0FRaWhZaEFDQUNFRjhhSUFJUTZBWWdBa0VRYWlRQUlBQUxKd0FnQUMwQUJBUkFJQUFvQWdBYUlBRkJDR29RNWdJTElBRUVRQ0FBS0FJQUdpQUJFQ29MQzlZQkFnTi9BWDBqQUVFUWF5SUNKQUFnQWlBQk5nSU1Ba0FnQWlBQlFRRkdCSDlCQWdVZ0FTQUJRWDlxY1VVTkFTQUJFSW9DQ3lJQk5nSU1Dd0pBSUFFZ0FCQThJZ05MQkVBZ0FDQUJFUElNREFFTElBRWdBMDhOQUNBREVMb0JJUVFDZnlBQUVDTW9BZ0N6SUFBUVF5b0NBSldOSWdWREFBQ0FUMTBnQlVNQUFBQUFZSEVFUUNBRnFRd0JDMEVBQ3lFQklBSUNmeUFFQkVBZ0FSQ0tCQXdCQ3lBQkVJb0NDellDQ0NBQ0lBSkJER29nQWtFSWFoQlNLQUlBSWdFMkFnd2dBU0FEVHcwQUlBQWdBUkR5REFzZ0FrRVFhaVFBQzFrQkFYOGpBRUVRYXlJRUpBQWdBUkFiSWdFZ0FFRVVFQ1lnQkVFSWFpQUJRUUFRd3dFUWtRRWlBQ2dDQUVFSWFpQURFS0VGSUFBUUpVRUJPZ0FFSUFBb0FnQWdBallDQkNBQUtBSUFRUUEyQWdBZ0JFRVFhaVFBQytJREFnVi9BWDBqQUVFZ2F5SUVKQUFnQVJBaklBSVFoUWtoQnlBQkVEd2hCU0FFUVFBNkFCOENRQUpBSUFWRkRRQWdBU0FISUFVUU5DSUlFQkVvQWdBaUJrVU5BQU5BSUFZb0FnQWlCa1VOQVNBSElBWW9BZ1JIQkVBZ0JpZ0NCQ0FGRURRZ0NFY05BZ3NnQVJCRElBWkJDR29nQWhDNkJVVU5BQXNNQVFzZ0JFRVFhaUFCSUFjZ0F4Q1BGaUFCRUNNb0FnQWhBaUFCRUVNaEF3SkFJQVVFUUNBREtnSUFJQVd6bENBQ1FRRnFzMTFCQVhNTkFRc2dCQ0FGRUxvQlFRRnpJQVZCQVhSeU5nSU1JQVFDZnlBQkVDTW9BZ0JCQVdxeklBRVFReW9DQUpXTklnbERBQUNBVDEwZ0NVTUFBQUFBWUhFRVFDQUpxUXdCQzBFQUN6WUNDQ0FCSUFSQkRHb2dCRUVJYWhCU0tBSUFFSTRXSUFjZ0FSQThJZ1VRTkNFSUN3SkFJQUVnQ0JBUktBSUFJZ0pGQkVBZ0JDZ0NFQ0FCUVFocUlnSW9BZ0EyQWdBZ0FpQUVLQUlRTmdJQUlBRWdDQkFSSUFJMkFnQWdCQ2dDRUNnQ0FFVU5BU0FFS0FJUUlRSWdBU0FFS0FJUUtBSUFLQUlFSUFVUU5CQVJJQUkyQWdBTUFRc2dCQ2dDRUNBQ0tBSUFOZ0lBSUFJZ0JDZ0NFRFlDQUFzZ0JFRVFhaEJmSVFZZ0FSQWpJZ0VnQVNnQ0FFRUJhallDQUNBRVFRRTZBQjhnQkVFUWFoRG9CZ3NnQUNBRVFSQnFJQVlRTVNBRVFSOXFFS0lCSUFSQklHb2tBQXNuQUNBQUxRQUVCRUFnQUNnQ0FCb2dBVUVJYWhENURBc2dBUVJBSUFBb0FnQWFJQUVRS2dzTE1BRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnZ2dBQ0FDS0FJSUtBSUFOZ0lBSUFCQkJHb1FUaG9nQWtFUWFpUUFDMW9BSXdCQkVHc2lBeVFBSUFFUUd5RUJJQUJCR0JBbUlBTkJDR29nQVVFQUVNTUJFSkVCSWdBb0FnQkJDR29nQkNnQ0FCQ1NGaUFBRUNWQkFUb0FCQ0FBS0FJQUlBSTJBZ1FnQUNnQ0FFRUFOZ0lBSUFOQkVHb2tBQXVCQkFJRmZ3RjlJd0JCSUdzaUJTUUFJQUVRSXlBQ0VPb0dJUWdnQVJBOElRWWdCVUVBT2dBZkFrQUNRQ0FHUlEwQUlBRWdDQ0FHRURRaUNSQVJLQUlBSWdkRkRRQURRQ0FIS0FJQUlnZEZEUUVnQ0NBSEtBSUVSd1JBSUFjb0FnUWdCaEEwSUFsSERRSUxJQUVRUXlBSFFRaHFJQUlRaXdORkRRQUxEQUVMSUFWQkVHb2dBU0FJUWJUWEVTQURJQVFRa3hZZ0FSQWpLQUlBSVFJZ0FSQkRJUU1DUUNBR0JFQWdBeW9DQUNBR3M1UWdBa0VCYXJOZFFRRnpEUUVMSUFVZ0JoQzZBVUVCY3lBR1FRRjBjallDRENBRkFuOGdBUkFqS0FJQVFRRnFzeUFCRUVNcUFnQ1ZqU0lLUXdBQWdFOWRJQXBEQUFBQUFHQnhCRUFnQ3FrTUFRdEJBQXMyQWdnZ0FTQUZRUXhxSUFWQkNHb1FVaWdDQUJEVEJDQUlJQUVRUENJR0VEUWhDUXNDUUNBQklBa1FFU2dDQUNJQ1JRUkFJQVVvQWhBZ0FVRUlhaUlDS0FJQU5nSUFJQUlnQlNnQ0VEWUNBQ0FCSUFrUUVTQUNOZ0lBSUFVb0FoQW9BZ0JGRFFFZ0JTZ0NFQ0VDSUFFZ0JTZ0NFQ2dDQUNnQ0JDQUdFRFFRRVNBQ05nSUFEQUVMSUFVb0FoQWdBaWdDQURZQ0FDQUNJQVVvQWhBMkFnQUxJQVZCRUdvUVh5RUhJQUVRSXlJQklBRW9BZ0JCQVdvMkFnQWdCVUVCT2dBZklBVkJFR29pQVNnQ0FDRUNJQUZCQURZQ0FDQUNCRUFnQVJBbElBSVFrUllMQ3lBQUlBVkJFR29nQnhBeElBVkJIMm9Rb2dFZ0JVRWdhaVFBQzRRQkFDTUFRUkJySWdFa0FDQUJJQUkyQWd3Q1FDQUNLQUlVUWNNRFJ3MEFJQUlvQWhoRkRRQWdBQ2dDUENJQ1JRMEFJQUlnQWlnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWl3UkFBQXRBQWhCQW5GRkRRQWdBU0FBS0FJb0lBRkJER29ROHd3Z0FTZ0NEQ2dDR0NJQ0lBQWdBaWdDQUNnQ0NCRUJBQXNnQVVFUWFpUUFRUUFMb2dFQkJIOGpBRUVRYXlJQkpBQWdBVUVJYWlJRElBQkJQR28yQWdBZ0F5QUFLQUk4TmdJRUlBSW9BbWhCQkVZRVFDQURLQUlBSUFJMkFnQUxJQUlnQWlnQ0FDZ0N2QUVSQUFBaUJCQVdRUUZPQkVBZ0FFRXNhaUVGUVFBaEFnTkFJQVVRaVFRZ0JDQUNFQkVvQWdBaUJpQUFJQVlvQWdBb0FnZ1JBUUFnQWtFQmFpSUNJQVFRRmtnTkFBc0xJQU1vQWdBZ0F5Z0NCRFlDQUNBQlFSQnFKQUJCQUF1b0FRRUNmeU1BUVNCcklnRWtBQ0FCSUFJMkFod2dBRUVzYWlJREVJa0VJQUlnQWlnQ0FDZ0N2QUVSQUFBaUJDQUFJQVFvQWdBb0FnZ1JBUUFnQWlnQ2FCRDNEQVJBSUFJZ0FpZ0NBQ2dDdkFFUkFBQVE2d1VFUUNBQklBQW9BaVFnQXhDTEJRc2dBVUVRYWlBREVPNEdJQUFvQWlBaEFDQUJJQUZCRUdvZ0FVRWNhaEQyRENBQUlBRVE5UXdnQVJEbUFpQUJRUkJxRUNBYUN5QURFSWtFSUFGQklHb2tBRUVBQytzQ0FRSi9Jd0JCSUdzaUFTUUFJQUVnQWpZQ0hDQUFRU3hxSWdNUWlRUWdBaUFDS0FJQUtBTEFBUkVBQUNJRUlBQWdCQ2dDQUNnQ0NCRUJBQUpBSUFJb0FtZ1E5d3dFUUNBQ0lBSW9BZ0FvQXNBQkVRQUFFT3NGQkVBZ0FTQUFLQUlrSUFNUWl3VUxJQUZCRUdvZ0F4RHVCaUFBS0FJZ0lRSWdBU0FCUVJCcUlBRkJIR29ROWd3Z0FpQUJFUFVNSUFFUTVnSWdBeENKQkNBQktBSWNJZ0lnQWlnQ0FDZ0N4QUVSQUFBaUFpQUFJQUlvQWdBb0FnZ1JBUUFnQVVFUWFoQWdHZ3dCQ3lBQ0tBSm9FUFFNQkVBZ0FpZ0NhRUd6QVVZRVFDQUNJQUlvQWdBb0FzUUJFUUFBSWdJZ0FpZ0NBQ2dDRkJFQUFCQkxRUUFRRHlnQ0FDRUNJQU5CTHhEaUJDQUJJQUlRMVFvZ0F5QUJFTUVFSUFFUUlCb2dBU2dDSENFQ0N5QUFLQUk0SVFBZ0FTQUNOZ0lBSUFBZ0FSRDREQ0FERUlZQ0RBRUxJQU1RaVFRZ0FpQUNLQUlBS0FMRUFSRUFBQ0lDSUFBZ0FpZ0NBQ2dDQ0JFQkFBc2dBVUVnYWlRQVFRQUxkUUVCZnlNQVFUQnJJZ0lrQUNBQ0lBRWdBU2dDQUNnQ3VBRVJBQUFRNndjZ0FrRVFhaUFDUWJEWEVSREZDQ0FDUVNCcUlBSkJFR29nQVNBQktBSUFLQUxBQVJFQUFCQVRFTVVJSUFBZ0FrRWdha0d5MXhFUXhRZ2dBa0VnYWhBZ0dpQUNRUkJxRUNBYUlBSVFJQm9nQWtFd2FpUUFDMFlCQW44akFFRVFheUlDSkFBZ0FpQUJFSmtXSUFCQkxHb2lBeUFDRU5NQklBSVFJQm9nQUNnQ09DRUFJQUlnQVRZQ0FDQUFJQUlRK0F3Z0F4Q0dBaUFDUVJCcUpBQUxDQUFnQUJESENCb0xLQUFnQUJBYkdpQUJCRUFEUUNBQktBSUFJUUFnQVVFSWFoRDVEQ0FCRUNvZ0FDSUJEUUFMQ3d0QUFRRi9Jd0JCRUdzaUFpUUFJQUlnQVJCZk5nSU1JQUVRSlNFQklBQWdBa0VNYWhCbkdpQUFJQUVvQWdBMkFnUWdBVUVBTmdJQUlBSkJFR29rQUNBQUMxOEJBWDhnQUNBQkVKMFdJUUlnQUNBQktBSUlOZ0lJSUFBZ0FTZ0NERFlDRENBQUlBRW9BaEEyQWhBZ0FCQWpLQUlBQkVBZ0FpQUFLQUlJS0FJRUlBQVFQQkEwRUJFZ0FFRUlhallDQUNBQlFRQTJBZ2dnQVJBalFRQTJBZ0FMQ3ljQUlBQWdBUkRyQmlBQVFSUnFJQUlRNndZZ0FFRW9haUFERU9zR0lBQkJQR29nQkJEckJndE5BUUYvSXdCQklHc2lBaVFBSUFJZ0FDQUJFT2NNTmdJWUlBSVF5d0UyQWhBZ0FrRVlhaUFDUVJCcUVKY0NSUVJBSUFBZ0FrRUlhaUFDUVJocUVHY29BZ0FRK3hVTElBSkJJR29rQUFzbEFDQUJJQUlReGdnRVFDQUFJQUVRN1FFYUR3c2dBQ0FCSUFJUUgwRUJha0YvRU8wR0M0WUJBUUovSXdCQklHc2lBeVFBSUFNZ0FTQUNFT1FNSWdRMkFoZ2dBeUFFTmdJUUlBTVF5d0UyQWdnQ1FDQURRUmhxSUFOQkNHb1FIa1VOQUNBREVNc0JOZ0lJQTBBZ0EwRVFhaENJQlNBRFFSQnFJQU5CQ0dvUUhrVU5BU0FCRUVNZ0EwRVFhaEJFSUFJUXBnTU5BQXNMSUFBZ0EwRVlhaUFEUVJCcUVPTU1JQU5CSUdva0FBdE5BUUYvSXdCQklHc2lBaVFBSUFJZ0FDQUJFT1lNTmdJWUlBSVF5d0UyQWhBZ0FrRVlhaUFDUVJCcUVKY0NSUVJBSUFBZ0FrRUlhaUFDUVJocUVHY29BZ0FRL0JVTElBSkJJR29rQUFzL0FDQUFRUUFReUFJZ0FDQUVOZ0lvSUFBZ0F6WUNKQ0FBSUFFMkFpQWdBRUdFMXhFMkFnQWdBRUVzYWhCT0dpQUFRUUEyQWp3Z0FDQUNOZ0k0SUFBTDJnRUFJQUJCT0dvZ0FoQ0dBZ0pBSUFFZ0FTZ0NBQ2dDSUJFQUFDSUNCRUFnQWlBQ0tBSUFLQUxFQVJFQUFDSUJJQUFnQVNnQ0FDZ0NDQkVCQUNBQ0tBSm9FT3dHUlEwQklBSWdBaWdDQUNnQ2ZCRUFBQ0lBSUFBb0FnQW9BaWdSQUFBaUFDQUFLUUlFUW9DQWdJQWdoRGNDQkE4TElBRWdBU2dDQUNnQ0hCRUFBQ0lCUlEwQUlBRWdBU2dDQUNnQ3ZBRVJBQUFpQWlBQUlBSW9BZ0FvQWdnUkFRQWdBU2dDYUJEc0JrVU5BQ0FCSUFFb0FnQW9BbndSQUFBaUFDQUFLQUlBS0FJb0VRQUFJZ0FnQUNrQ0JFS0FnSUNBSUlRM0FnUUxDN1lEQVFOL0l3QkJJR3NpQkNRQUlBRWdBellDSkNBRVFSQnFFRTRoQmdKQUFrQUNRQ0FDSUFJb0FnQW9BaUFSQUFBaUJRUkFJQVVnQlNnQ0FDZ0N3QUVSQUFBaUFpQUJJQUlvQWdBb0FnZ1JBUUFnQlNBRktBSUFLQUxBQVJFQUFCRHJCVVVOQVNBRVFRRTZBQThnQUNBRVFROXFJQVFRVGlJQUVPb0ZJQUFRSUJvTUF3c2dBaUFDS0FJQUtBSWNFUUFBSWdKRkRRRWdBaUFDS0FJQUtBSzhBUkVBQUNJRklBRWdCU2dDQUNnQ0NCRUJBQ0FDSUFJb0FnQW9BcndCRVFBQUVPc0ZSUVJBSUFFb0FpQWhBU0FFSUFJZ0FpZ0NBQ2dDdkFFUkFBQTJBZ0FnQmlBQklBUVFqQVVRaGdJTUFnc2dCRUVCT2dBUElBQWdCRUVQYWlBRUVFNGlBQkRxQlNBQUVDQWFEQUlMSUFFb0FpQWhBU0FFSUFVZ0JTZ0NBQ2dDd0FFUkFBQTJBZ0FnQmlBQklBUVFqQVVRaGdJTElBWWdBeERHQ0VVRVFDQUVRUUU2QUE4Z0FDQUVRUTlxSUFRUVRpSUFFT29GSUFBUUlCb01BUXNnQXlBR0VNWUlSUVJBSUFSQkFUb0FEeUFFSUFNZ0JoQ2hGaUFBSUFSQkQyb2dCQkRxQlNBRUVDQWFEQUVMSUFSQkFEb0FEeUFBSUFSQkQyb2dCQkJPSWdBUTZnVWdBQkFnR2dzZ0JoQWdHaUFFUVNCcUpBQUxQQUVCZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUVnQWhDaUZpQUFJQU5CQ0dvaUFTZ0NBQkF4R2lBQVFRUnFJQUVvQWdRUU1Sb2dBMEVRYWlRQUN6TUFJQUJCQUJESUFpQUFJQUUyQWlBZ0FFRzQyQkUyQWdBZ0FFRWthaENXQVJvZ0FFRTRhaEJPR2lBQUlBSTJBa1FnQUF1UkFRRUZmeU1BUVpBQmF5SUNKQUFnQUNBQ1FRaHFFSllCSWdNZ0FrSDRBR29RbGdFaUJDQUNRZUFBYWhDV0FTSUZJQUpCeUFCcUVKWUJJZ1lRbnhZZ0JoREFCQ0FGRU5FRElBUVErZ3dnQXhEUkF5QUJLQUpBSWdFRVFDQUJJQUpCQ0dvZ0FDQUFFRjRnQUJDTkJTQUFFUDBNRUtRV0lnQWdBU2dDQUNnQ0NCRUJBQ0FBRU1jSUdnc2dBa0dRQVdva0FBdktBd0VJZnlNQVFZQUNheUlCSkFBZ0FVR3dBV29nQUJDcEZpQUJRYkFCYWhCZUlRTWdBVUd3QVdvUWpRVWhBQ0FCUWJBQmFoRDlEQ0VDSUFGQmlBRnFJZ1ZCQUJESUFpQUZRUUEyQWlRZ0JTQUROZ0lnSUFWQmhOZ1JOZ0lBSUFGQlFHc2dBQ0FERUtnV0lRTWdBaER2QmtVRVFBTkFJQUVnQWhETENEWUNNQ0FCSUFGQk1Hb1FSQ2dDQUNJRU5nSUFJQU5CT0dwQjVOZ1JFR2dnQkNnQ0dDSUVJQU1nQkNnQ0FDZ0NDQkVCQUNBQ0lBRVF5Z2dnQWhEdkJrVU5BQXNMSUFGQnNBRnFJUWNnQUJEdkJrVUVRQ0FCUVJocVFRUnlJUVFEUUNBQklBQVF5d2cyQWdBZ0FVRWdhaUFCUVRCcUlBRVFSQkR0QVNJQ0VPNEdJQUZCR0dvZ0J5QUJRU0JxRUtjV0lBRWdBU2dDR0RZQ0VDQUJRUkJxSUFRUWlBRUVRQU5BSUFFZ0JTQUJRUkJxRUVRb0Fnd2lCaUFDRUtZV0lBRVFKU0VJSUFFdEFBQUVRQ0FESUFZZ0NCQ2xGZ3NnQVVFRWFoRG1BaUFCUVJCcUlnWW9BZ0FhSUFZUWlBVWdBVUVRYWlBRUVJZ0JEUUFMQ3lBQUlBSVFvQllnQVVFZ2FoQWdHaUFDRUNBYUlBQVE3d1pGRFFBTEN5QURFTWdJR2lBRkVKb0NHaUFCUWJBQmFpSUFRVHhxRUpnSElBQkJLR29RMFFNZ0FFRVVhaEQ2RENBQUVORURJQUZCZ0FKcUpBQUxOZ0VCZnlBQklBQW9BZ2hIQkVBRFFDQUFLQUlRR2lBQUlBQW9BZ2hCWUdvaUFqWUNDQ0FDRU00SUlBQW9BZ2dnQVVjTkFBc0xDejBCQVg4Z0FTQUNSd1JBSUFNb0FnQWhCQU5BSUFBZ0JFRmdhaUFDUVdCcUlnSVEvd1lnQXlBREtBSUFRV0JxSWdRMkFnQWdBU0FDUncwQUN3c0xVUUVCZnlBQUVJZ05JQUFRT3lBQUtBSUFJQUFvQWdRZ0FVRUVhaUlDRUt3V0lBQWdBaEF1SUFCQkJHb2dBVUVJYWhBdUlBQVFHeUFCRUNNUUxpQUJJQUVvQWdRMkFnQWdBQ0FBRUlJREVLVU5DMmtCQW44akFFRVFheUlFSkFBZ0JFRUFOZ0lNSUFCQkRHb2dCRUVNYWlBREVJRUNJQUVFUUNBQUtBSVFJQUVRcGcwaEJRc2dBQ0FGTmdJQUlBQWdCU0FDUVFWMGFpSUNOZ0lJSUFBZ0FqWUNCQ0FBRUNNZ0JTQUJRUVYwYWpZQ0FDQUVRUkJxSkFBZ0FBc01BQ0FBS0FJTUlBRVFyQTBMRHdBZ0FDZ0NEQ0FBTFFBUUVMVVdDeFFBSUFBb0Fnd2dBQ2dDQ0NnQ2NDQUJFUElHQ3lZQUlBQWdBUkM0QkNBQUlBSTJBZ3dnQUVHWTFoRTJBZ0FnQUVFUWFpQURRYWdJRUQwYUN5NEJBWDlCZnlFQ0lBQXRBQVJGQkVBZ0FDZ0NEQ0VDSUFFZ0FFRVFha0doQ0JBOUdpQUFRUUU2QUFRTElBSUxWd0VDZnlBQUtBSVFJUUlnQUVFZ0VNb0RCRUFEUUNBQUlBQW9BaEJCQVdvMkFoQWdBRUVnRU1vRERRQUxDeUFBUVNNUXlnTUVRQ0FBSUFBb0FoQkJBV28yQWhBZ0FFRWpFTW9ESVFFTElBQWdBallDRUNBQkM1WUJBUUovSUFBb0FoQWhBeUFBUVNBUXlnTUVRQU5BSUFBZ0FDZ0NFRUVCYWpZQ0VDQUFRU0FReWdNTkFBc0xRUUVoQWdKQUFrQWdBRUdYQVJES0F3MEFRUUFoQWlBQlJRMEJJQUFvQWhBaEF5QUFFSllGQkVCQkFTRUNEQUVMQTBBZ0FFRWdFTW9EUlFSQVFRQWhBZ3dDQzBFQklRSWdBQ0FBS0FJUVFRRnFOZ0lRSUFBUWxnVkZEUUFMQ3lBQUlBTTJBaEFMSUFJTFV3RUJmeU1BUVJCcklnSWtBQ0FCRU9vTklBRWdBQzBBQkRvQUVDQUJJQUFwQXdnM0F4Z2dBaUFBUVJCcUVCTTJBZ0FnQVVFZ2FrR0JDRUhFMWhFZ0FoQW5HaUFBS0FJQUlRQWdBa0VRYWlRQUlBQUxnQUVCQW44akFFRWdheUlESkFBZ0FCQTdJZ0lnQTBFSWFpQUFJQUFRZ2dOQkFXb1FxUTBnQUJDQ0F5QUNFSzRXSWdJb0FnZ2dBUkQvQmlBQ0lBSW9BZ2hCSUdvMkFnZ2dBQ0FDRUswV0lBSWdBaWdDQkJDckZpQUNLQUlBQkVBZ0FpZ0NFQm9nQWlnQ0FCb2dBaEFqS0FJQUlBSW9BZ0JyR2dzZ0EwRWdhaVFBQzBzQkFYOGpBRUVRYXlJQ0pBQUNRQ0FBS0FJRUlBQVFHeWdDQUVjRVFDQUFFRHNnQUNnQ0JDQUJFUDhHSUFBZ0FDZ0NCRUVnYWpZQ0JBd0JDeUFBSUFFUXR4WUxJQUpCRUdva0FBc3NBQ0FBSUFFMkFnQWdBQ0FDTFFBUU9nQUVJQUFnQWlrREdEY0RDQ0FBUVJCcUlBSkJJR29RSWhvZ0FBc3NBUUYvSUFCQndBRnFJZ0FRdUFJRWZ5QUNCU0FBRUpBQktBSUFJZ0FnQVNBQUtBSUFLQUlZRVFNQUN3c3VBUUYvUVFFaEFTQUFRY0FCYWlJQUVMZ0NCSDhnQVFVZ0FCQ1FBU2dDQUNJQUlBQW9BZ0FvQWh3UkFBQUxDelVCQjM4akFFRWdheUlGSkFBZ0FTZ0NhQ0VESUFFZ0FTZ0NBQ2dDdkFFUkFBQWlCeEFXSVFaQkFTRUJJQVZCSUdva0FDQUJDek1BSUFBb0FuUkJBVTRFUUNBQUtBSndJZ0FnQUJEWEFVRzMxUkZCdk13UlFiek1FVUVBSUFBb0FnQW9BcWdCRVFJQUN3dkxBUUVCZnlBQVFTQnFJZ0lnQVJDR0FpQUFRUUEyQWl3Q1FDQUFLQUl3SWdGQkNIRUVmeUFBSUFJUUV5QUNFQjlxTmdJc0lBQWdBaEFUSUFJUUV5QUFLQUlzRUpFRklBQW9BakFGSUFFTFFSQnhSUTBBSUFBZ0FoQWZJZ0VnQWhBVGFqWUNMQ0FDSUFJUVhSQk5JQUFnQWhBVElBSVFFeUFDRUI5cUVOUUlJQUF0QURCQkEzRkZEUUFDUUNBQlFYOU1CRUFnQVVHQmdJQ0FlR29oQWdOQUlBSWhBU0FBUWYvLy8vOEhFUFlHUVFFaEFpQUJRUUJJRFFBTERBRUxJQUZGRFFFTElBQWdBUkQyQmdzTGxob0JCbjhqQUVIZ0FHc2lCaVFBSUFFb0FtZ2hCU0FCSUFFb0FnQW9Bc0FCRVFBQUlRSWdBU0FCS0FJQUtBTEVBUkVBQUNFREFrQUNRQUpBSUFJZ0FpZ0NBQ2dDb0FFUkFBQU5BQ0FESUFNb0FnQW9BcUFCRVFBQURRQWdBaUFDS0FJQUtBS0FBUkVBQUVFUFJnMEFJQU1nQXlnQ0FDZ0NnQUVSQUFCQkQwY05BUXNnQWlBQ0tBSUFLQUo0RVFBQUlBTWdBeWdDQUNnQ2VCRUFBQkRBQVEwQkN5QUJJQUlnQWlnQ0FDZ0NlQkVBQUNBQktBSUFLQUowRVFFQUlBRWdBU2dDQUNnQ2ZCRUFBQ0lFSUFRb0FnQW9BaWdSQUFBUWlRTUNRQUpBSUFJZ0FpZ0NBQ2dDb0FFUkFBQU5BQ0FDSUFJb0FnQW9Bb0FCRVFBQVFROUdEUUFnQWlBQ0tBSUFLQUtBQVJFQUFFRU9SdzBCQ3lBRlFkOStha0VDVHdSQVFRRWhCQ0FGUWJZRVJnMENRUUFoQkF3Q0MwRUFJUVFnQWlBQ0tBSUFLQUtBQVJFQUFFRU9SZzBCUVFFaEJDQUJJQVpCQ0dwQkRFRUFRUUZCQUVFQVFRQVFSU0lBSUFFb0FnQW9BblFSQVFBZ0FCQTFHZ3dCQ3dKQUFrQUNRQUpBQWtBQ1FDQUZRZWwrYWlJQVFSbExCRUFnQlVISmUyb2lBRUVOU3cwR1FRRWdBSFFpQUVHQS9nQnhEUUVnQUVHSEFYRkZEUVlNQlFzZ0FFRUVhdzRXQUFBQUFBQUFBZ0lGQlFNREF3TUZCUVVGQlFFQkFRUUxJQUlnQWlnQ0FDZ0NnQUVSQUFBUXBnSkZCRUJCQUNFRUlBTWdBeWdDQUNnQ2dBRVJBQUFRcGdKRkRRWUxRUUFoQkNBQ0lBSW9BZ0FvQXB3QkVRQUFEUVVnQXlBREtBSUFLQUtjQVJFQUFBMEZEQVFMUVFBaEJDQUNJQUlvQWdBb0FvQUJFUUFBUVF4SERRUWdBaUFDS0FJQUtBS2NBUkVBQUEwRUlBSWdBaWdDQUNnQ3BBRVJBQUFOQkNBQklBWkJDR3BCREVFQUlBSWdBaWdDQUNnQ2tBRVJBQUJCQUVFQVFRQVFSU0lBSUFFb0FnQW9BblFSQVFBZ0FCQTFHZ3dEQ3lBQklBWkJDR3BCREVFQVFRRkJBRUVBUVFBUVJTSUFJQUVvQWdBb0FuUVJBUUFnQUJBMUdnd0NDMEVBSVFRZ0FpQUNLQUlBS0FLQUFSRUFBRUVNUmcwQ0lBRWdCa0VJYWtFTVFRQWdBaUFDS0FJQUtBS1FBUkVBQUVFQVFRQkJBQkJGSWdBZ0FTZ0NBQ2dDZEJFQkFDQUFFRFVhREFFTFFRQWhCQ0FDSUFJb0FnQW9Bb0FCRVFBQVFReEdEUUVnQXlBREtBSUFLQUtBQVJFQUFFRU1SZzBCQ3dKQUFrQUNRQUpBSUFWQjZYNXFJZ0JCR1VzTkFFRUJJQUIwSWdSQmdQaVBISEZGQkVBZ0JFR2JCM0VOQWlBQVFRSkhEUUVNQXdzZ0FpQUNLQUlBS0FKNEVRQUFJQU1nQXlnQ0FDZ0NlQkVBQUJDakFpRUVEQVFMSUFWQnlYdHFJZ0JCQzBzTkFrRUJJQUIwUVlNZmNRMEFJQUJCQWtZTkFRd0NDMEVCSVFRZ0FpQUNLQUlBS0FKNEVRQUFJQU1nQXlnQ0FDZ0NlQkVBQUJDakFnMENDMEVBSVFRZ0FpQUNLQUlBS0FLQUFSRUFBQ0FESUFNb0FnQW9Bb0FCRVFBQVJ3MEJDd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FpQUNLQUlBS0FKNEVRQUFFSVVCUlFSQUlBTWdBeWdDQUNnQ2VCRUFBQkNGQVVVTkFRc0NRQ0FDSUFJb0FnQW9BbmdSQUFBUWhRRkZEUUFnQXlBREtBSUFLQUo0RVFBQUVJVUJSUTBBUVFBaEJDQUNJQUlvQWdBb0FuZ1JBQUFpQUNBQUtBSUFLQUpZRVFBQUlBTWdBeWdDQUNnQ2VCRUFBQ0lBSUFBb0FnQW9BbGdSQUFBUTd3c05EQXRCQUNFRUlBVkI2WDVxSWdCQkEwME5BU0FGUWNwN2FpSUFRUU5MRFFzZ0FFRUJhdzREQ3dzS0NRc2dBaUFDS0FJQUtBS29BUkVBQUFSQVFRRWhCQ0FESUFNb0FnQW9BcWdCRVFBQURRc0xBa0FnQWlBQ0tBSUFLQUtrQVJFQUFFVU5BQ0FESUFNb0FnQW9BcVFCRVFBQVJRMEFJQUlnQWlnQ0FDZ0NrQUVSQUFBZ0F5QURLQUlBS0FLUUFSRUFBRVlOQUVFQUlRUWdBeUFES0FJQUtBS1FBUkVBQUVFQlNnMExDeUFDSUFJb0FnQW9Bb0FCRVFBQUlRQkJBQ0VFSUFWQnludHFJZ2RCRGswTkFTQUZRZWwrYWlJSFFRbExEUXBCQVNBSGRDSUhRWnNIY1EwQ0lBZEI0QUJ4RFFNQ1FDQUNJQUlvQWdBb0Fwd0JFUUFBRFFBZ0F5QURLQUlBS0FLY0FSRUFBRVVOQUNBQ0lBSW9BZ0FvQXFRQkVRQUFCRUFnQWlBQ0tBSUFLQUtRQVJFQUFDQURJQU1vQWdBb0FwZ0JFUUFBUncwTUlBRkJxd0VRb0FJZ0FTQUdRUWhxSUFCQkFDQURJQU1vQWdBb0FwUUJFUUFBUVFCQkFFRUFFRVVpQUNBQktBSUFLQUowRVFFQUlBQVFOUm9NQ1FzZ0FVR3RBUkNnQWlBQklBWkJDR29nQUVFQVFRQWdBeUFES0FJQUtBS1VBUkVBQUNBRElBTW9BZ0FvQXBnQkVRQUFRUUFRUlNJQUlBRW9BZ0FvQW5RUkFRQWdBQkExR2d3SUN3SkFJQUlnQWlnQ0FDZ0NuQUVSQUFCRkRRQWdBeUFES0FJQUtBS2NBUkVBQUEwQUlBTWdBeWdDQUNnQ3BBRVJBQUFFUUNBQ0lBSW9BZ0FvQXBRQkVRQUFJQU1nQXlnQ0FDZ0NrQUVSQUFCSERRd2dBVUdzQVJDZ0FpQUJJQVpCQ0dvZ0FFRUFJQUlnQWlnQ0FDZ0NtQUVSQUFCQkFFRUFRUUFRUlNJQUlBRW9BZ0FvQW5RUkFRQWdBQkExR2d3SkN5QUJRYTBCRUtBQ0RBZ0xBa0FnQWlBQ0tBSUFLQUtjQVJFQUFFVU5BQ0FESUFNb0FnQW9BcHdCRVFBQVJRMEFJQUlnQWlnQ0FDZ0NsQUVSQUFBZ0F5QURLQUlBS0FLWUFSRUFBRWNOQ3lBQlFhUUNFS0FDSUFFZ0JrRUlhaUFBUVFCQkFDQURJQU1vQWdBb0FwUUJFUUFBSUFJZ0FpZ0NBQ2dDbUFFUkFBQkJBQkJGSWdBZ0FTZ0NBQ2dDZEJFQkFDQUFFRFVhREFnTElBSWdBaWdDQUNnQ25BRVJBQUFOQ2lBRElBTW9BZ0FvQXB3QkVRQUFEUW9nQWlBQ0tBSUFLQUtrQVJFQUFBUkFJQU1nQXlnQ0FDZ0NwQUVSQUFBTkNBc2dBaUFDS0FJQUtBS2tBUkVBQUVVRVFDQURJQU1vQWdBb0FxUUJFUUFBUlEwSUN5QUJRYW9CRUtBQ0lBTWdBeWdDQUNnQ3BBRVJBQUJGRFFjZ0FTQUdRUWhxSUFCQkFDQURJQU1vQWdBb0FwQUJFUUFBUVFCQkFFRUFFRVVpQUNBQktBSUFLQUowRVFFQUlBQVFOUm9NQndzZ0FFRUNhdzBIREFnTEFrQWdCMEVCYXc0T0FRRUVDUWtKQ1FFQkFRRUJBZ0lBQ3lBQ0lBSW9BZ0FvQXBBQkVRQUFJQU1nQXlnQ0FDZ0NrQUVSQUFCSERRZ2dBaUFDS0FJQUtBS1VBUkVBQUNBRElBTW9BZ0FvQXBRQkVRQUFSdzBJSUFJZ0FpZ0NBQ2dDbUFFUkFBQWdBeUFES0FJQUtBS1lBUkVBQUVjTkNBc2dBaUFDS0FJQUtBS2NBUkVBQUFSQUlBTWdBeWdDQUNnQ3BBRVJBQUFOQ0FzZ0FpQUNLQUlBS0FLa0FSRUFBQVJBSUFNZ0F5Z0NBQ2dDbkFFUkFBQU5DQXNnQWlBQ0tBSUFLQUtBQVJFQUFDQURJQU1vQWdBb0FvQUJFUUFBUncwSEFrQWdBaUFDS0FJQUtBS2NBUkVBQUVVTkFDQURJQU1vQWdBb0Fwd0JFUUFBUlEwQUlBSWdBaWdDQUNnQ2xBRVJBQUFnQXlBREtBSUFLQUtVQVJFQUFFY05DQ0FDSUFJb0FnQW9BcGdCRVFBQUlBTWdBeWdDQUNnQ21BRVJBQUJIRFFnTEFrQWdBaUFDS0FJQUtBS2tBUkVBQUVVTkFDQURJQU1vQWdBb0FxUUJFUUFBUlEwQUlBSWdBaWdDQUNnQ2tBRVJBQUFnQXlBREtBSUFLQUtRQVJFQUFFY05DQXNnQXlBREtBSUFLQUtrQVJFQUFFVUVRQ0FESUFNb0FnQW9BcHdCRVFBQVJRMENDeUFCSUFFb0FnQW9BbndSQUFBZ0F5QURLQUlBS0FKNEVRQUFFSThCSUFFZ0FTZ0NBQ2dDZkJFQUFDSUFJQUFvQWdBb0FpZ1JBQUFRd3dJTUFRc2dBeUFES0FJQUtBS2tBUkVBQUVVTkFDQUNJQUlvQWdBb0FxUUJFUUFBUlEwR0lBTWdBeWdDQUNnQ2tBRVJBQUFnQWlBQ0tBSUFLQUtRQVJFQUFFY05CZ3NnQlVIS2Uyb2lBRUVPUzBFQklBQjBRWS8rQVhGRmNnMENEQUVMQWtBZ0FpQUNLQUlBS0FLY0FSRUFBQTBBSUFNZ0F5Z0NBQ2dDbkFFUkFBQkZEUUFnQWlBQ0tBSUFLQUtrQVJFQUFFVU5CU0FDSUFJb0FnQW9BcEFCRVFBQUlBTWdBeWdDQUNnQ21BRVJBQUJIRFFVZ0FpQUNLQUlBS0FLUUFSRUFBQ0FESUFNb0FnQW9BcFFCRVFBQVJ3MEZJQUZCdWdRUW9BSU1BZ3NDUUNBQ0lBSW9BZ0FvQXB3QkVRQUFSUTBBSUFNZ0F5Z0NBQ2dDbkFFUkFBQU5BQ0FESUFNb0FnQW9BcVFCRVFBQURRVWdBVUc4QkJDZ0Fnd0NDd0pBSUFJZ0FpZ0NBQ2dDbkFFUkFBQkZEUUFnQXlBREtBSUFLQUtjQVJFQUFFVU5BQ0FDSUFJb0FnQW9BcFFCRVFBQUlBTWdBeWdDQUNnQ2xBRVJBQUJIRFFVZ0FpQUNLQUlBS0FLVUFSRUFBQ0FESUFNb0FnQW9BcGdCRVFBQVJ3MEZJQUZCdlFRUW9BSU1BZ3NnQWlBQ0tBSUFLQUtjQVJFQUFBMEVJQU1nQXlnQ0FDZ0NuQUVSQUFBTkJDQUNJQUlvQWdBb0FxUUJFUUFBQkVBZ0F5QURLQUlBS0FLa0FSRUFBQTBCQ3lBQ0lBSW9BZ0FvQXFRQkVRQUFSUVJBSUFNZ0F5Z0NBQ2dDcEFFUkFBQkZEUUVMSUFJZ0FpZ0NBQ2dDcEFFUkFBQkZEUVFnQVVHN0JCQ2dBZ3dCQ3lBQklBRW9BZ0FvQW5nUkFBQWdBaUFDS0FJQUtBSjRFUUFBRU1BQkRRTUxRUUVoQkF3Q0N5QUNJQUlvQWdBb0FuZ1JBQUFRaFFGRkRRRWdBeUFES0FJQUtBSjRFUUFBRUlVQklRQWdCa0hnQUdva0FDQUFEd3NnQWlBQ0tBSUFLQUo0RVFBQUVJVUJCRUFnQXlBREtBSUFLQUo0RVFBQUVJVUJEUUVMSUFWQnVRUkdCRUFnQXlBREtBSUFLQUo0RVFBQUVJVUJEUUVMSUFGQnZBUkJyUUVnQlVHNUJFWWJFS0FDUVFFaEJDQURJQU1vQWdBb0FuZ1JBQUFRaFFGRkRRQWdBU0FESUFNb0FnQW9BbmdSQUFBZ0FTZ0NBQ2dDZEJFQkFBc2dCa0hnQUdva0FDQUVDellCQVg4akFFRVFheUlCSkFBZ0FFRUFOZ0lJSUFCQ0FEY0NBQ0FCUVFBMkFnd2dBRUVNYWlBQlFReHFFS0VMSUFGQkVHb2tBQXNFQUVFQUMrZ0NBUU4vSXdCQjRBQnJJZ1FrQUNBQktBSm9JUU1nQVNBQktBSUFLQUs4QVJFQUFDRUNBa0FDUUFKQUlBTkJlbW9pQTBFSFN3MEFBa0FDUUFKQUlBTkJBV3NPQXdBREFRSUxJQUlnQWlnQ0FDZ0NnQUVSQUFCQkRFWU5BMEVBSVFNZ0FFRUhJQVJCQ0dwQkRFRUFRUUZCQUVFQVFRQVFSU0lBSUFJUXR3UWhBaUFBRURVYUlBSkZEUVFnQVNBQ0lBRW9BZ0FvQXJnQkVRRUFEQU1MUVFBaEF5QUNJQUlvQWdBb0FvQUJFUUFBRUtZQ0RRSU1Bd3NnQWlBQ0tBSUFLQUtBQVJFQUFCQ21BZzBCSUFJZ0FpZ0NBQ2dDZ0FFUkFBQkJBVVlOQVNBQ0lBSW9BZ0FvQW9BQkVRQUFRUU5HRFFGQkFDRURJQUlnQWlnQ0FDZ0NnQUVSQUFCQkFrWU5BUXdDQzBFQUlRTWdBaUFDS0FJQUtBS0FBUkVBQUVFQlJ3MEJDeUFCSUFJZ0FpZ0NBQ2dDZUJFQUFDQUJLQUlBS0FKMEVRRUFJQUVnQVNnQ0FDZ0NmQkVBQUNJQUlBQW9BZ0FvQWlnUkFBQVF3d0pCQVNFREN5QUVRZUFBYWlRQUlBTUxKUUFnQUJDTURSb2dBUVJBQTBBZ0FTZ0NBQ0VBSUFGQkNHb1FzZ0lnQUNJQkRRQUxDd3NzQUNBQklBQW9BZ2hIQkVBRFFDQUFFQ01hSUFBZ0FDZ0NDRUY4YWpZQ0NDQUFLQUlJSUFGSERRQUxDd3M3QVFGL0lBQWdBQ2dDQkVFRWFpSUJOZ0lFSUFFZ0FDZ0NBQ0lCS0FJQWEwR0FJRVlFUUNBQUlBRkJCR28yQWdBZ0FDQUJLQUlFTmdJRUN3czdBQ0FBSUFFb0FnUWdBU2dDRUVFSWRrSDgvLzhIY1dvaUFDQUJFSThGQkg5QkFBVWdBQ2dDQUNBQktBSVFRZjhIY1VFQ2RHb0xFSmtCR2d1bEFRRUNmeU1BUVJCcklnRWtBQ0FBRUY0YUlBRkJDR29nQUJER0ZpQUJJQUFRamcwZ0FVRUlhaUFCRUpBRkJFQURRQ0FCS0FJTUdpQUJRUWhxRU1VV0lBRkJDR29nQVJDUUJRMEFDd3NnQUJCZVFRQTJBZ0FnQUJEUUFVRUNTd1JBQTBBZ0FDZ0NCQ2dDQUJBcUlBQVF6QU1nQUJEUUFVRUNTdzBBQ3dzZ0FCRFFBVUYvYWlJQ1FRRk5CRUFnQUVHQUJFR0FDQ0FDUVFGckd6WUNFQXNnQVVFUWFpUUFDNGNDQVFsL0l3QkJFR3NpQXlRQUFuOGdBVUYvRUtnRFJRUkFJQUFvQWd3aEJDQUFLQUlJSVFVZ0FDZ0NHQ0FBS0FJY1JnUkFRWDhnQUMwQU1FRVFjVVVOQWhvZ0FDZ0NHQ0VHSUFBb0FoUWhCeUFBS0FJc0lRZ2dBQ2dDRkNFSklBQkJJR29pQWtFQUVPSUVJQUlnQWhCZEVFMGdBQ0FDRUJNaUNpQUNFQjhnQ21vUTFBZ2dBQ0FHSUFkckVQWUdJQUFnQUNnQ0ZDQUlJQWxyYWpZQ0xBc2dBeUFBS0FJWVFRRnFOZ0lNSUFBZ0EwRU1haUFBUVN4cUVGSW9BZ0EyQWl3Z0FDMEFNRUVJY1FSQUlBQWdBRUVnYWhBVElnSWdBaUFFSUFWcmFpQUFLQUlzRUpFRkN5QUFJQUZCR0hSQkdIVVFqdzBNQVFzZ0FSQ1FEUXNoQUNBRFFSQnFKQUFnQUF1aUFRRUJmeUFBS0FJc0lBQW9BaGhKQkVBZ0FDQUFLQUlZTmdJc0N3SkFJQUFvQWdnZ0FDZ0NERThOQUNBQlFYOFFxQU1FUUNBQUlBQW9BZ2dnQUNnQ0RFRi9haUFBS0FJc0VKRUZJQUVRa0EwUEN5QUFMUUF3UVJCeFJRUkFJQUVRMGdnZ0FDZ0NERUYvYWl3QUFCQ29BMFVOQVFzZ0FDQUFLQUlJSUFBb0FneEJmMm9nQUNnQ0xCQ1JCU0FCRU5JSUlRSWdBQ2dDRENBQ09nQUFJQUVQQzBGL0MyVUFJQUFvQWl3Z0FDZ0NHRWtFUUNBQUlBQW9BaGcyQWl3TEFrQWdBQzBBTUVFSWNVVU5BQ0FBS0FJUUlBQW9BaXhKQkVBZ0FDQUFLQUlJSUFBb0Fnd2dBQ2dDTEJDUkJRc2dBQ2dDRENBQUtBSVFUdzBBSUFBb0Fnd3NBQUFRMWdNUEMwRi9DeG9BSUFBZ0FTQUNLUU1JUVFBZ0F5QUJLQUlBS0FJUUVSb0FDNEVFQVFGL0l3QkJFR3NpQlNRQUlBVkJGRFlDRENBRlFSUTJBZ2dDUUNBQkVJY0ZEUUFnQVNnQ0xFSHVBRVlOQUFKQUFrQUNRQUpBSUFKQkFrWUVRQ0FCSUFOQkFpQUVFT0VDRFFFTElBTkJBa2NOQVNBQklBSkJBaUFFRU9FQ1JRMEJDeUFGUVFJMkFnZ2dCVUVDTmdJTURBTUxBa0FDUUNBQ1FRRkdCRUFnQVNBRFFRRWdCQkRoQWcwQkN5QURRUUZIRFFFZ0FTQUNRUUVnQkJEaEFrVU5BUXNnQlVFQk5nSUlJQVZCQVRZQ0RBd0RDd0pBQWtBZ0FrRURSZ1JBSUFFZ0EwRURJQVFRNFFJTkFRc2dBMEVEUncwQklBRWdBa0VESUFRUTRRSkZEUUVMSUFWQkF6WUNDQ0FGUVFNMkFnd01Bd3NnQWhDbUFrVU5BaUFERUtZQ1JRMENJQUVnQWlBRElBUVE0UUpGQkVBZ0FTQURJQUlnQkJEaEFrVU5Bd3NDUUFKQUlBSVE3d1VFUUNBREVPOEZEUUVMSUFJUWd3TkZEUUVnQXhDREEwVU5BUXNnQWhDR0JTQURFSVlGVGcwQ0RBRUxJQUlRZ3dNRVFDQUNFSVlGSUFNUWhnVktEUUlMSUFNUWd3TUVRQ0FERUlZRklBSVFoZ1ZLRFFFTElBSVE3d1VFUUNBQ0lBTVE0Z3dOQWlBRklBSVEzd3dpQVRZQ0NDQUZJQUUyQWd3TUF3c2dBeER2QlVVTkFpQURJQUlRNGd3TkFDQUZJQU1RM3d3aUFUWUNDQ0FGSUFFMkFnd01BZ3NnQlNBRE5nSUlJQVVnQXpZQ0RBd0JDeUFGSUFJMkFnZ2dCU0FDTmdJTUN5QUFJQVZCREdvZ0JVRUlhaEQvQXlBRlFSQnFKQUFMbndJQ0FYOERmaUFCS0FJc0lBRW9BaGhKQkVBZ0FTQUJLQUlZTmdJc0MwSi9JUWdDUUNBRVFSaHhJZ1ZGSUFOQkFVWkJBQ0FGUVJoR0czSU5BQ0FCS0FJc0lnVUVRQ0FGSUFGQklHb1FFMnVzSVFZTElBTkJBa3NOQUFKQUFrQUNRQ0FEUVFGckRnSUFBUUlMSUFSQkNIRUVRQ0FCS0FJTUlBRW9BZ2hyckNFSERBSUxJQUVvQWhnZ0FTZ0NGR3VzSVFjTUFRc2dCaUVIQ3lBQ0lBZDhJZ0pDQUZNZ0JpQUNVM0lOQUNBRVFRaHhJUU1DUUNBQ1VBMEFJQU1FUUNBQktBSU1SUTBDQ3lBRVFSQnhSUTBBSUFFb0FoaEZEUUVMSUFNRVFDQUJJQUVvQWdnZ0FTZ0NDQ0FDcDJvZ0FTZ0NMQkNSQlFzZ0JFRVFjUVJBSUFFZ0FTZ0NGQ0FCS0FJY0VOUUlJQUVnQXFjUTlnWUxJQUloQ0FzZ0FDQUlFTk1JQ3drQUlBQVE5d1lRS2dzVEFDQUFJQUFvQWdCQmRHb29BZ0JxRUpFTkN4TUFJQUFnQUNnQ0FFRjBhaWdDQUdvUStRWUxLQUVCZjBFUUVDWWlBeUFBSUFFUWtnMGdBQ0FERUxrRUlBQkJBRG9BelFFZ0FDQUNPZ0RNQVFzSkFDQUFFUG9HRUNvTE1nRUJmeUFBUWF6S0VTZ0NBQ0lCTmdJQUlBQWdBVUYwYWlnQ0FHcEJ1TW9SS0FJQU5nSUFJQUJCQ0dvUTl3WWFJQUFMSkFBZ0FTQUNJQUVvQWdBb0FnZ1JBUUFnQUNBQlFRUnFJZ0FRdUFZZ0FDQUNFTzBLQ3pFQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQWdBU2dDQ0VFTWJHcEJDR29nQWtFTWFoREpCeUFDUVJCcUpBQUxRUUVCZnlBQVFiREtFU2dDQUNJQ05nSUFJQUFnQWtGMGFpZ0NBR3BCdE1vUktBSUFOZ0lBSUFCQkFEWUNCQ0FBSUFBb0FnQkJkR29vQWdCcUlBRVFoUTBMVmdFQmZ5TUFRUkJySWdNa0FDQUFJQUVRWENBRFFRaHFJQUZCSEdvaUFCQzRCaUFBSUFJUTdRb2dBVUVCRU5jTElBTkJDR29RV1NBQktBSVlCRUFnQXlBQktBSVlJQUlRMUJZZ0F4QlpDeUFEUVJCcUpBQUxSd0VDZnlBQVFUeHFFSllOSVFFZ0FFR1F5aEUyQWdBZ0FVR2t5aEUyQWdBZ0FDQUFRUWhxSWdJUTFoWWdBRUdReWhFMkFnQWdBVUdreWhFMkFnQWdBa0VJRUpVTklBQUxOZ0VDZnlBQUtBSVFJUVFnQUNnQ0NDRURBMEFnQkNBRElBSVFsd01nQUNBQUtBSUlRUVJxSWdNMkFnZ2dBVUYvYWlJQkRRQUxDeU1BSUFBdEFBUUVRQ0FBS0FJQUdpQUJRUWhxRUxJQ0N5QUJCRUFnQUNnQ0FCb0xDOWNCQWdOL0FYMGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUFrQWdBaUFCUVFGR0JIOUJBZ1VnQVNBQlFYOXFjVVVOQVNBQkVJb0NDeUlCTmdJTUN3SkFJQUVnQUJBOElnTkxCRUFnQUNBQkVKa05EQUVMSUFFZ0EwOE5BQ0FERUxvQklRUUNmeUFBRUY0b0FnQ3pJQUFRdXdRcUFnQ1ZqU0lGUXdBQWdFOWRJQVZEQUFBQUFHQnhCRUFnQmFrTUFRdEJBQXNoQVNBQ0FuOGdCQVJBSUFFUWlnUU1BUXNnQVJDS0FnczJBZ2dnQWlBQ1FReHFJQUpCQ0dvUVVpZ0NBQ0lCTmdJTUlBRWdBMDhOQUNBQUlBRVFtUTBMSUFKQkVHb2tBQXR0QVFGL0l3QkJFR3NpQkNRQUlBQWdBUkNNRFNJQUtBSUFRUndRbEFJZ0JFRUlhaUFBUVFBUXd3RVFrUUVpQUNnQ0FDSUJRUWhxSUFNUXNBTWdBU0FEUVJCcUtBSUFOZ0lZSUFBUUpVRUJPZ0FFSUFBb0FnQWdBallDQkNBQUtBSUFRUUEyQWdBZ0JFRVFhaVFBQy84REFnVi9BWDBqQUVFZ2F5SUVKQUFnQVJCZUdpQUNFUEVKSVFjZ0FSQThJUVVnQkVFQU9nQWZBa0FDUUNBRlJRMEFJQUVnQnlBRkVEUWlDQkFSS0FJQUlnWkZEUUFEUUNBR0tBSUFJZ1pGRFFFZ0J5QUdLQUlFUndSQUlBWW9BZ1FnQlJBMElBaEhEUUlMSUFFUXV3UWdCa0VJYWlBQ0VLWURSUTBBQ3d3QkN5QUVRUkJxSUFFZ0J5QURFTndXSUFFUVhpZ0NBQ0VDSUFFUXV3UWhBd0pBSUFVRVFDQURLZ0lBSUFXemxDQUNRUUZxczExQkFYTU5BUXNnQkNBRkVMb0JRUUZ6SUFWQkFYUnlOZ0lNSUFRQ2Z5QUJFRjRvQWdCQkFXcXpJQUVRdXdRcUFnQ1ZqU0lKUXdBQWdFOWRJQWxEQUFBQUFHQnhCRUFnQ2FrTUFRdEJBQXMyQWdnZ0FTQUVRUXhxSUFSQkNHb1FVaWdDQUJEYkZpQUhJQUVRUENJRkVEUWhDQXNDUUNBQklBZ1FFU2dDQUNJQ1JRUkFJQVFvQWhBZ0FVRU1haUlDS0FJQU5nSUFJQUlnQkNnQ0VEWUNBQ0FCSUFnUUVTQUNOZ0lBSUFRb0FoQW9BZ0JGRFFFZ0JDZ0NFQ0VDSUFFZ0JDZ0NFQ2dDQUNnQ0JDQUZFRFFRRVNBQ05nSUFEQUVMSUFRb0FoQWdBaWdDQURZQ0FDQUNJQVFvQWhBMkFnQUxJQVJCRUdvUVh5RUdJQUVRWGlJQklBRW9BZ0JCQVdvMkFnQWdCRUVCT2dBZklBUkJFR29pQVNnQ0FDRUNJQUZCQURZQ0FDQUNCRUFnQVJBbElBSVEyaFlMQ3lBQUlBUkJFR29nQmhBeElBUkJIMm9Rb2dFZ0JFRWdhaVFBQzIwQkFuOGpBRUVnYXlJRUpBQUNRQ0FBRUJzb0FnQWdBQ2dDQkd0QkFuVWdBVThFUUNBQUlBRWdBaENCRVF3QkN5QUFFRHNoQXlBRVFRaHFJQUFnQUJBV0lBRnFFTWtGSUFBUUZpQURFTEVHSWdNZ0FTQUNFTmtXSUFBZ0F4RGxCeUFERUs4R0N5QUVRU0JxSkFBTEpRRUJmeU1BUVJCcklnRWtBQ0FCUVFBMkFnd2dBQ0FCUVF4cUVNTUtJQUZCRUdva0FBc3RBUUYvSXdCQkVHc2lBU1FBSUFGQkFEWUNEQ0FBSUFGQkRHb1FaeG9nQUVFRWFoRGZGaUFCUVJCcUpBQUxUUUVCZnlNQVFSQnJJZ0VrQUNBQUVPQVdJQUJCREdvUWtBc2dBVUVBTmdJTUlBQkJGR29nQVVFTWFoQ3RBaUFCUVlDQWdQd0ROZ0lJSUFCQkdHb2dBVUVJYWhDdEFpQUJRUkJxSkFBTE5RRUJmeUFBRUJZaUF5QUJTUVJBSUFBZ0FTQURheUFDRU40V0R3c2dBeUFCU3dSQUlBQWdBQ2dDQUNBQlFRSjBhaERNQlFzTExBRUJmeU1BUVJCcklnTWtBQ0FEUVFocUlBRWdBaUFDRU4wV0lBQWdBMEVJYWhEVUJDQURRUkJxSkFBTHJRRUJCWDhqQUVFUWF5SUNKQUFnQUJEaEZpQUFRUnhxRUpNQkdpQUFRVEJxRU5VQlFhakZFUkNvRGlBQ1FRQTZBQTlCdE1VUklRRkIvZ0FoQXdOQUlBSWdBem9BRGlBQUlBSkJEbW9nQTBFWWRFRVlkUkRWQ0NBQkxRQUJJUU1nQVVFQmFpSUZJUUVnQlVIT3hSRkhEUUFMQTBBZ0FDQUVRUU4wSWdGQjFNVVJhaWdDQUNBQlFkREZFV29vQWdBUTFRZ2dCRUVCYWlJRVFTcEhEUUFMSUFCQnR3RTJBaXdnQWtFUWFpUUFDeVlBSUFBb0FnQWFJQUFvQWdBZ0FCQzZCR29hSUFBb0FnQWFJQUFvQWdBZ0FCQ0VCR29hQ3kwQUlBRWdBQ2dDQ0VjRVFBTkFJQUFvQWhBYUlBQWdBQ2dDQ0VGL2FqWUNDQ0FBS0FJSUlBRkhEUUFMQ3dzbUFDQUFLQUlBR2lBQUtBSUFJQUFRdWdScUdpQUFLQUlBSUFBUXVnUnFHaUFBS0FJQUdnczlBUUYvSUFFZ0FrY0VRQ0FES0FJQUlRUURRQ0FBSUFSQmYyb2dBa0YvYWlJQ0VPTUlJQU1nQXlnQ0FFRi9haUlFTmdJQUlBRWdBa2NOQUFzTEN6OEJBWDhqQUVFUWF5SUJKQUFnQUJBN0dpQUJRWDgyQWd3Z0FVSC8vLy8vQnpZQ0NDQUJRUXhxSUFGQkNHb1FwQUVvQWdBaEFDQUJRUkJxSkFBZ0FBdFJBUUYvSUFBUXJnMGdBQkE3SUFBb0FnQWdBQ2dDQkNBQlFRUnFJZ0lRNkJZZ0FDQUNFQzRnQUVFRWFpQUJRUWhxRUM0Z0FCQWJJQUVRSXhBdUlBRWdBU2dDQkRZQ0FDQUFJQUFRaEFRUTV4WUxZd0VDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWdBUkQ2QlNFRkN5QUFJQVUyQWdBZ0FDQUNJQVZxSWdJMkFnZ2dBQ0FDTmdJRUlBQVFJeUFCSUFWcU5nSUFJQVJCRUdva0FDQUFDMWtCQW44akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFBUTZSWWlBeUFCVHdSQUlBQVF1Z1FpQUNBRFFRRjJTUVJBSUFJZ0FFRUJkRFlDQ0NBQ1FRaHFJQUpCREdvUVVpZ0NBQ0VEQ3lBQ1FSQnFKQUFnQXc4TEVHNEFDellCQVg4Z0FTQUFLQUlJUndSQUEwQWdBQ2dDRUJvZ0FDQUFLQUlJUVhCcUlnSTJBZ2dnQWhDeUFpQUFLQUlJSUFGSERRQUxDd3M5QVFGL0lBRWdBa2NFUUNBREtBSUFJUVFEUUNBQUlBUkJjR29nQWtGd2FpSUNFT1FJSUFNZ0F5Z0NBRUZ3YWlJRU5nSUFJQUVnQWtjTkFBc0xDMUVCQVg4Z0FCRDNCU0FBRURzZ0FDZ0NBQ0FBS0FJRUlBRkJCR29pQWhEdUZpQUFJQUlRTGlBQVFRUnFJQUZCQ0dvUUxpQUFFQnNnQVJBakVDNGdBU0FCS0FJRU5nSUFJQUFnQUJDb0FSQ2ZCZ3VaQVFFRWZ5TUFRUkJySWdVa0FDQUJJQUlRMWdnaUJFRnZUUVJBQWtBZ0JFRUtUUVJBSUFBZ0JCRFVBU0FBSVFNTUFRc2dBQ0FBSUFRUTVBSkJBV29pQmhDQkJDSURFT0VCSUFBZ0JoRHBBU0FBSUFRUXZBRUxJQUVnQWtjRVFBTkFJQU1nQVJDVUFTQURRUUZxSVFNZ0FVRUJhaUlCSUFKSERRQUxDeUFGUVFBNkFBOGdBeUFGUVE5cUVKUUJJQVZCRUdva0FBOExFRzRBQ3pVQkFYOGpBRUVRYXlJQkpBQWdBVUVJYWlBQUVGd2dBVUVJYWhENkFVRWdFTjRCSVFBZ0FVRUlhaEJaSUFGQkVHb2tBQ0FBQzNzQkFYOGpBRUVnYXlJREpBQWdBeUFCTmdJUUlBTWdBRFlDR0NBRElBSTJBZ2hCQVNFQ0FrQWdBMEVZYWlBRFFSQnFFQjVGRFFBRFFDQURJQU1vQWhnZ0F5Z0NDQkRFQWtVRVFFRUFJUUlNQWdzZ0EwRVlhaEJtR2lBRFFRaHFFR1lhSUFOQkdHb2dBMEVRYWhBZURRQUxDeUFEUVNCcUpBQWdBZ3NhQUVGL0lRRWdBQzBBQkFSL0lBRUZJQUJCQVRvQUJFRjlDd3N4QVFGL0lBRWdBQ2dDQkNJQ1J3UkFBMEFnQUJBN0dpQUNRWEJxSWdJUXNnSWdBU0FDUncwQUN3c2dBQ0FCTmdJRUN4TUFJQUFnQUNnQ0FFRjBhaWdDQUdvUW5nMExFd0FnQUNBQUtBSUFRWFJxS0FJQWFoRHdCUXNuQUNBQUxRQUVCRUFnQUNnQ0FCb2dBVUVRYWhEeERRc2dBUVJBSUFBb0FnQWFJQUVRS2dzTHhoQUJBWDhDUUNBQVFYOXFJZ0JCQzBzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkJBV3NPQ3dBQ0JBVUdCd2dKQ2dzREFRc2dBVUYvYWlJQVFRdExEUXdDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkJBV3NPQ3hjSUJBVUdCd01BQ1FvQkFnc2dBa0hnQURZQ0FBd1ZDeUFDUVNRMkFnQU1GQXNnQWtHSUFUWUNBQXdUQ3lBQ1FkMEFOZ0lBREJJTElBSkJOVFlDQUF3UkN5QUNRVGcyQWdBTUVBc2dBa0hKQURZQ0FBd1BDeUFDUWN3QU5nSUFEQTRMSUFKQi9nQTJBZ0FNRFFzZ0FrSHhBRFlDQUF3TUN5QUNRZlFBTmdJQURBc0xJQUZCZm1vaUFFRUtTdzBMQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUFRUUZyRGdvSUJBVUdCd0FCQ1FvQ0F3c2dBa0hjQURZQ0FBd1VDeUFDUWQ4QU5nSUFEQk1MSUFKQkl6WUNBQXdTQ3lBQ1FaSUJOZ0lBREJFTElBSkJORFlDQUF3UUN5QUNRVGMyQWdBTUR3c2dBa0hJQURZQ0FBd09DeUFDUWNzQU5nSUFEQTBMSUFKQi9RQTJBZ0FNREFzZ0FrSHdBRFlDQUF3TEN5QUNRZk1BTmdJQURBb0xJQUZCZjJvaUFFRUxTdzBLQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUFRUUZyRGdzSUZRQUJBZ01FQlFrS0JnY0xJQUpCTXpZQ0FBd1RDeUFDUVRZMkFnQU1FZ3NnQWtISEFEWUNBQXdSQ3lBQ1Fjb0FOZ0lBREJBTElBSkIyd0EyQWdBTUR3c2dBa0hlQURZQ0FBd09DeUFDUVNJMkFnQU1EUXNnQWtHSEFUWUNBQXdNQ3lBQ1FaRUJOZ0lBREFzTElBSkI3d0EyQWdBTUNnc2dBa0h5QURZQ0FBd0pDeUFCUVg5cUlnQkJDa3NOQ1FKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBRUVCYXc0S0F3Z0VCUVlIQUFFSkNnSUxJQUpCRXpZQ0FBd1NDeUFDUVJRMkFnQU1FUXNnQWtFWU5nSUFEQkFMSUFKQkdUWUNBQXdQQ3lBQ1FRODJBZ0FNRGdzZ0FrRVFOZ0lBREEwTElBSkJFVFlDQUF3TUN5QUNRUkkyQWdBTUN3c2dBa0VYTmdJQURBb0xJQUpCRlRZQ0FBd0pDeUFDUVJZMkFnQU1DQXNnQVVGL2FpSUFRUXRMRFFnQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCQVdzT0N3a0tFd0FCQWdNRUJRWUhDQXNnQWtFc05nSUFEQkVMSUFKQk9UWUNBQXdRQ3lBQ1FjQUFOZ0lBREE4TElBSkJ6UUEyQWdBTURnc2dBa0hVQURZQ0FBd05DeUFDUWVFQU5nSUFEQXdMSUFKQjZBQTJBZ0FNQ3dzZ0FrRWFOZ0lBREFvTElBSkIvd0EyQWdBTUNRc2dBa0dKQVRZQ0FBd0lDeUFDUWZVQU5nSUFEQWNMSUFGQmYyb2lBRUVMU3cwSEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBUVFGckRnc0pDZ0FTQVFJREJBVUdCd2dMSUFKQktEWUNBQXdRQ3lBQ1FUdzJBZ0FNRHdzZ0FrSEVBRFlDQUF3T0N5QUNRZEFBTmdJQURBMExJQUpCMkFBMkFnQU1EQXNnQWtIa0FEWUNBQXdMQ3lBQ1Fld0FOZ0lBREFvTElBSkJHellDQUF3SkN5QUNRWU1CTmdJQURBZ0xJQUpCalFFMkFnQU1Cd3NnQWtINUFEWUNBQXdHQ3lBQlFYOXFJZ0JCQzBzTkJnSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVFQmF3NExDUW9CQUJFQ0F3UUZCZ2NJQ3lBQ1FTMDJBZ0FNRHdzZ0FrRWxOZ0lBREE0TElBSkJ3UUEyQWdBTURRc2dBa0hPQURZQ0FBd01DeUFDUWRVQU5nSUFEQXNMSUFKQjRnQTJBZ0FNQ2dzZ0FrSHBBRFlDQUF3SkN5QUNRUncyQWdBTUNBc2dBa0dBQVRZQ0FBd0hDeUFDUVlvQk5nSUFEQVlMSUFKQjlnQTJBZ0FNQlFzZ0FVRi9haUlBUVF0TERRVUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2tLQUFFQ0VBTUVCUVlIQ0FzZ0FrRXBOZ0lBREE0TElBSkJNRFlDQUF3TkN5QUNRVDAyQWdBTURBc2dBa0hSQURZQ0FBd0xDeUFDUWRrQU5nSUFEQW9MSUFKQjVRQTJBZ0FNQ1FzZ0FrSHRBRFlDQUF3SUN5QUNRUjAyQWdBTUJ3c2dBa0dFQVRZQ0FBd0dDeUFDUVk0Qk5nSUFEQVVMSUFKQitnQTJBZ0FNQkFzZ0FVRi9haUlBUVF0TERRUUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2NJQXdRRkJnOEFDUW9CQWdzZ0FrSFdBRFlDQUF3TkN5QUNRUjQyQWdBTURBc2dBa0dCQVRZQ0FBd0xDeUFDUVNZMkFnQU1DZ3NnQWtFdU5nSUFEQWtMSUFKQk9qWUNBQXdJQ3lBQ1FjSUFOZ0lBREFjTElBSkJpd0UyQWdBTUJnc2dBa0gzQURZQ0FBd0ZDeUFDUWVNQU5nSUFEQVFMSUFKQjZnQTJBZ0FNQXdzZ0FVRi9haUlBUVF0TERRTUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2NJQXdRRkJnQU9DUW9CQWdzZ0FrSFNBRFlDQUF3TUN5QUNRUjgyQWdBTUN3c2dBa0dGQVRZQ0FBd0tDeUFDUVNvMkFnQU1DUXNnQWtFeE5nSUFEQWdMSUFKQlBqWUNBQXdIQ3lBQ1FjVUFOZ0lBREFZTElBSkJqd0UyQWdBTUJRc2dBa0g3QURZQ0FBd0VDeUFDUWVZQU5nSUFEQU1MSUFKQjdnQTJBZ0FNQWdzZ0FVRi9haUlBUVF0TERRSUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2dKQUFFQ0F3UUZEUW9HQndzZ0FrRW5OZ0lBREFzTElBSkJMellDQUF3S0N5QUNRVHMyQWdBTUNRc2dBa0hEQURZQ0FBd0lDeUFDUWM4QU5nSUFEQWNMSUFKQjF3QTJBZ0FNQmdzZ0FrRWdOZ0lBREFVTElBSkJnZ0UyQWdBTUJBc2dBa0dNQVRZQ0FBd0RDeUFDUWZnQU5nSUFEQUlMSUFKQjZ3QTJBZ0FNQVFzZ0FVRi9haUlBUVF0TERRRUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2dKQUFFQ0F3UUZDZ3dHQndzZ0FrRXJOZ0lBREFvTElBSkJNallDQUF3SkN5QUNRVDgyQWdBTUNBc2dBa0hHQURZQ0FBd0hDeUFDUWRNQU5nSUFEQVlMSUFKQjJnQTJBZ0FNQlFzZ0FrRWhOZ0lBREFRTElBSkJoZ0UyQWdBTUF3c2dBa0dRQVRZQ0FBd0NDeUFDUWZ3QU5nSUFEQUVMSUFKQjV3QTJBZ0FMUVFFaEF3c2dBd3N0QVFGL0l3QkJFR3NpQWlRQUlBSWdBVFlDQ0NBQUlBSW9BZ2dRMGdNZ0FFRU1haEJPR2lBQ1FSQnFKQUFMUmdBakFFRVFheUlDSkFBZ0FSQWxJUUVnQUVFb0VDWWdBa0VJYWlBQlFRQVF3d0VRa1FFaUFDZ0NBRUVRYWlBREtBSUFFUGtXSUFBUUpVRUJPZ0FFSUFKQkVHb2tBQXVTQVFFRGZ5QUFFRHdoQXlBQUVDVWhCUUpBSUFNRVFBSkFBMEFDUUFKL0lBQVFHeUFDSUFOQkVHb2lCQkNQQkFSQUlBTW9BZ0JGRFFZZ0F3d0JDeUFBRUJzZ0JDQUNFSThFUlEwRElBTkJCR29oQkNBREtBSUVSUTBCSUFRaUF3c2hCU0FES0FJQUlRTU1BUXNMSUFFZ0F6WUNBQ0FFRHdzZ0FTQUROZ0lBSUFVUEN5QUFFQ1VoQXdzZ0FTQUROZ0lBSUFNTG13RUJBbjhqQUVFZ2F5SUZKQUFnQVNBRlFSeHFJQUlRK3hZaUJpZ0NBQ0VDSUFWQkFEb0FHeUFDUlFSQUlBVkJDR29nQVVHOHdoRWdBeUFFRVBvV0lBRWdCU2dDSENBR0lBVW9BZ2dRN2dJZ0JVRUlhaEJmSVFJZ0JVRUJPZ0FiSUFWQkNHb2lBU2dDQUNFRElBRkJBRFlDQUNBREJFQWdBUkFsSUFNUTl4WUxDeUFBSUFWQkNHb2dBaEF4SUFWQkcyb1FvZ0VnQlVFZ2FpUUFDL1FDQVFSL0l3QkJNR3NpQVNRQUlBQVFYaUVEQWtBZ0FDZ0NFRUdBQ0U4RVFDQUFJQUFvQWhCQmdIaHFOZ0lRSUFFZ0FDZ0NCQ2dDQURZQ0dDQUFFTXdESUFBZ0FVRVlhaEROQXd3QkN3SkFJQUFRMEFFZ0FCQ0lBMGtFUUNBQUVPRUlSUTBCSUFGQmdBZ1FnZ0kyQWhnZ0FDQUJRUmhxRU0wRERBSUxJQUVnQUJDSUEwRUJkRFlDQ0NBQlFRRTJBZ0FnQVVFWWFpQUJRUWhxSUFFUVVpZ0NBQ0FBRU5BQklBQVFJeER5QWlFQ0lBRWdBVUVJYWtHQUNCQ0NBaUFCSUFOQmdBZ1FtUUVRa1FFaUJDZ0NBRFlDQUNBQ0lBRVE0QWdnQkJCZkdpQUFLQUlJSWdNZ0FDZ0NCRWNFUUFOQUlBSWdBMEY4YWlJREVOOElJQU1nQUNnQ0JFY05BQXNMSUFBZ0FoQXVJQUJCQkdvZ0FrRUVhaEF1SUFCQkNHb2dBa0VJYWhBdUlBQVFJeUFDRUNNUUxpQUVFTmNHSUFJUWtRTU1BUXNnQVVHQUNCQ0NBallDR0NBQUlBRkJHR29RM1FnZ0FTQUFLQUlFS0FJQU5nSVlJQUFRekFNZ0FDQUJRUmhxRU0wREN5QUJRVEJxSkFBTFdnRURmeUFBUWVRQmFpSUJFSlVGS0FJQUlRSWdBUkNmRFNBQUtBTFFBU0lESUFJZ0F5Z0NBQ2dDQ0JFQkFDQUJFRjRvQWdCRkJFQWdBRUg4QVdvZ0FFSFlBV29RaGdJUEN5QUFRZndCYWlBQkVKVUZLQUlBRUlZQ0N4b0FJQUFvQWdnb0FuQWdBQ2dDZUJEdERTQUFLQUlJRVA0V0N6UUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUJCL0FGcUlBRVFoZ0lnQUVIa0FXb2dBa0VNYWhDaERTQUNRUkJxSkFBTEx3QWdBQ0FBS0FJSUtBSndLQUpFTmdKNElBQW9BZ2dvQW5BZ0FFRkFheER0RFNBQUtBSUlJQUFvQWlRUWdCY0xDd0FnQUVIOEFHb1FvZzBMQ3dBZ0FFSDhBR29Rb3cwTERRQWdBRUg4QUdvZ0FSQ0REUXNKQUNBQUVLUU5FQ29MclFFQkJYOGpBRUVRYXlJREpBQWdBQkJlR2lBQkVQRUpJUVFDUUFKQUlBQVFQQ0lGUlEwQUlBQWdCQ0FGRURRaUJoQVJLQUlBSWdKRkRRQWdBaWdDQUNJQ1JRMEFBMEFnQkNBQ0tBSUVSd1JBSUFJb0FnUWdCUkEwSUFaSERRSUxBa0FnQkNBQ0tBSUVSdzBBSUFBUXV3UWdBa0VJYWlBQkVLWURSUTBBSUFOQkNHb2dBaEF4S0FJQUlRSU1Bd3NnQWlnQ0FDSUNEUUFMQ3lBREVNc0JJZ0kyQWdnTElBTkJFR29rQUNBQ0N5TUFJQUF0QUFRRVFDQUFLQUlBR2lBQlFSQnFFSW9OQ3lBQkJFQWdBQ2dDQUJvTEN6RUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUlJQUFnQWlnQ0NDZ0NBRFlDQUNBQVFRUnFFTDBOR2lBQ1FSQnFKQUFMU3dBakFFRVFheUlDSkFBZ0FDQUJFTmNDSWdBb0FnQkJQQkNVQWlBQ1FRaHFJQUJCQUJEREFSQ1JBU0lBS0FJQVFSQnFJQU1vQWdBUWlCY2dBQkFsUVFFNkFBUWdBa0VRYWlRQUM1SUJBUU4vSUFBUVBDRURJQUFRSlNFRkFrQWdBd1JBQWtBRFFBSkFBbjhnQUJBaklBSWdBMEVRYWlJRUVKOEZCRUFnQXlnQ0FFVU5CaUFEREFFTElBQVFJeUFFSUFJUW53VkZEUU1nQTBFRWFpRUVJQU1vQWdSRkRRRWdCQ0lEQ3lFRklBTW9BZ0FoQXd3QkN3c2dBU0FETmdJQUlBUVBDeUFCSUFNMkFnQWdCUThMSUFBUUpTRURDeUFCSUFNMkFnQWdBd3ViQVFFQ2Z5TUFRU0JySWdVa0FDQUJJQVZCSEdvZ0FoQ0tGeUlHS0FJQUlRSWdCVUVBT2dBYklBSkZCRUFnQlVFSWFpQUJRYnpDRVNBRElBUVFpUmNnQVNBRktBSWNJQVlnQlNnQ0NCQ2tCQ0FGUVFocUVGOGhBaUFGUVFFNkFCc2dCVUVJYWlJQktBSUFJUU1nQVVFQU5nSUFJQU1FUUNBQkVDVWdBeENIRndzTElBQWdCVUVJYWlBQ0VERWdCVUViYWhDaUFTQUZRU0JxSkFBTEpBQWdBQ0FCS1FNQU53TUFJQUFnQVNrRENEY0RDQ0FBUVJCcUlBRkJFR29RL3dFYUN5TUFJQUFnQVNrREFEY0RBQ0FBSUFFcEF3ZzNBd2dnQUVFUWFpQUJRUkJxRU9nQ0N6TUJBbjhqQUVFUWF5SUNKQUJCREJBbUlnTkJBRFlDQUNBQUlBTWdBa0VJYWlBQlFRRVFtUUVRa1FFYUlBSkJFR29rQUFzNkFRRi9JQUVnQWtjRVFDQURLQUlBSVFRRFFDQUFJQVFnQVJEL0JpQURJQU1vQWdCQklHb2lCRFlDQUNBQlFTQnFJZ0VnQWtjTkFBc0xDeWtBSUFBZ0FVY0VRQU5BSUFJZ0FCQ05GeUFDUVNCcUlRSWdBRUVnYWlJQUlBRkhEUUFMQ3lBQ0N6OEJBWDhnQUJDbkRTQUJTUVJBRUc0QUN5QUFJQUFRT3lBQkVLWU5JZ0kyQWdBZ0FDQUNOZ0lFSUFBUUd5QUNJQUZCQlhScU5nSUFJQUJCQUJDbERRdEFBUUYvSUFBb0FnQUVRQ0FBRUlJRElRRWdBQkNIRFNBQUlBRVFxQTBnQUJBN0dpQUFLQUlBR2lBQUVNc0RHaUFBRUJ0QkFEWUNBQ0FBUWdBM0FnQUxDOEVCQVFOL0l3QkJFR3NpQXlRQUFrQWdBaUFCYTBFRmRTSUVJQUFReXdOTkJFQWdBeUFDTmdJTUlBUWdBQkNDQTBzRVFDQURJQUUyQWd3Z0FCQ0NBeUVGSUFNZ0F5Z0NEQ0FGUVFWMGFqWUNEQ0FCSUFNb0Fnd2dBQ2dDQUJDckRSb2dBQ0FES0FJTUlBSWdCQ0FBRUlJRGF4Q3FEUXdDQ3lBQklBSWdBQ2dDQUJDckRTRUJJQUFRZ2dNaEFpQUFJQUVRaGcwZ0FDQUNFS2dOREFFTElBQVFraGNnQUNBQUlBUVFxUTBRa1JjZ0FDQUJJQUlnQkJDcURRc2dBMEVRYWlRQUMxUUJBbjhqQUVFUWF5SUVKQUFnQWdSQUEwQWdBeUFDSUFBUUl5QUNRUkJxSUFFUW53VWlCUnNoQXlBQ1FRUkJBQ0FGRzJvb0FnQWlBZzBBQ3dzZ0JFRUlhaUFERURFb0FnQWhBQ0FFUVJCcUpBQWdBQXRtQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ0FCSUFBUVBDQUFFQ1VRbEJjMkFnZ2dBaUFBRUlFQk5nSUFBbjhDUUNBQ1FRaHFJQUlRSGtVTkFDQUFFQ01nQVNBQ1FRaHFFRmNRbndVTkFDQUNLQUlJREFFTElBQVFnUUVMSVFBZ0FrRVFhaVFBSUFBTERRQWdBQ2dDREVFUWFoQ1dCUXNQQUNBQUtBSU1RUkJxSUFFUXJBMExDUUFnQUJDdERSQXFDNEFCQVFKL0l3QkJJR3NpQXlRQUlBQVFPeUlDSUFOQkNHb2dBQ0FBRUlRRVFRRnFFT3dXSUFBUWhBUWdBaERyRmlJQ0tBSUlJQUVRNHdnZ0FpQUNLQUlJUVFGcU5nSUlJQUFnQWhEcUZpQUNJQUlvQWdRUTVoWWdBaWdDQUFSQUlBSW9BaEFhSUFJb0FnQWFJQUlRSXlnQ0FDQUNLQUlBYXhvTElBTkJJR29rQUFzeUFRRi9RWDhoQWlBQUxRQUVCSDhnQWdVZ0FVRXdPd0VnSUFGQkFEWUNHQ0FCUVFBNkFCQWdBRUVCT2dBRVFaZ0JDd3V0QWdFRGZ3TkFJQUFvQWd4QkVHb2dBQ2dDQ0NnQ2NDQUJFUElHSWdKQklFWU5BQXNDZjBFQUlBQXRBREZGRFFBYUlBQkJBRG9BTVVFQkN5RURJQUF0QURBRVFDQUFRWUFDT3dFd0N3Si9Ba0FnQUNnQ0RFRVFhaEMwRmdSQUlBQkJBVG9BTUF3QkMwRUFJQU5GRFFFYUN5QUFLQUlJS0FKd0drRUJDeUVEQWtBZ0FrRi9Sd1JBSUFKQm9nRkhEUUVnQVVFZ2FpRUVJQUFvQWd3UUZpRUNBMEFnQWtFQlNBUkFRYUlCRHdzZ0FDZ0NDRUVVYWlBQUtBSU1JQUpCZjJvaUFoQVJLQUlBRUtVQ0lBUVFlZzBBQ3lBRFFYOXpJQUJCSUdvZ0FoQVJLQUlBSWdOQkFFZHhSUVJBSUFCQkVHb2dBaEFSS0FJQUlRTUxJQUFvQWdnZ0F5QUFMUUF3RVA0TUlBQW9BZ2dnQVJCVER3c2dBQ2dDRENJQUlBQXRBQ1JCL1FGeE9nQWtRWDhoQWdzZ0FndWpCZ0VDZndKQUlBQWdBUkJUSWdKQmYwWWdBa0VLUm5JTkFDQUNRYUlCUmdSQUFrQWdBRUVVYWlBQlFTQnFJZ0lRemdOQjNYNXFJZ05CRTBzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBMEVCYXc0VENnUUZCZ0VDQXdjSkN3d09EZzRORGc0T0NBQUxJQUFnQVJESkZ5RUNEQThMSUFBZ0FDZ0N2QUVpQW1vdEFIZ0VmeUFBS0FKd0lnSWdBVUhadGhGQjY3WVJRY216RVVFQUlBSW9BZ0FvQXFnQkVRSUFJQUFvQXJ3QkJTQUNDeUFBYWtFQk9nQjRJQUFvQW5SRkJFQWdBQ2dDY0NJQ0lBRkIyNzhSUWV1MkVVSEpzeEZCQUNBQ0tBSUFLQUtvQVJFQ0FBc2dBRUdvQVNBQklBQWdBUkJURUwwRUdpQUFRUUFnQVJDQUJ5RUNEQTRMSUFBb0FuUkZCRUFnQUNnQ2NDSUNJQUZCMjc4UlFkTzJFVUhKc3hGQkFDQUNLQUlBS0FLb0FSRUNBQXNnQUNBQUtBSzhBV290QUhnRVFDQUFLQUp3SWdJZ0FVSEJ0aEZCMDdZUlFjbXpFVUVBSUFJb0FnQW9BcWdCRVFJQUN5QUFJQUVRVXlFQ0EwQWdBa0YvUmlBQ1FRcEdja1VFUUNBQUlBRVFVeUVDREFFTEN5QUFRUUFnQVJDQUJ5RUNEQTBMQWtBZ0FDZ0NkQ0lDUlFSQUlBQW9BbkFpQWlBQlFkdS9FVUdYdHhGQnliTVJRUUFnQWlnQ0FDZ0NxQUVSQWdBTUFRc2dBQ0FBS0FLOEFTSURha0VBT2dCNElBQWdBa0YvYWpZQ2RDQUFJQU5CZjJvMkFyd0JDeUFBUWFvQklBRWdBQ0FCRUZNUXZRUWhBZ3dNQ3lBQUlBRVF1ZzBoQWd3TEN5QUFRUUVnQVJDM0RTRUNEQW9MSUFCQkFDQUJFTGNOSVFJTUNRc2dBQ0FCRUtNWElRSU1DQXNDZnlBQUtBSndHa0VCQ3dSQUlBQW9BbkFpQWlBQlFRRkI5TDhSUWVLNkVTQUNLQUlBS0FJWUVRZ0FDeUFBSUFFUXF4Y2hBZ3dIQ3lBQUlBRVFvUmNoQWd3R0N5QUFJQUVReEJjaEFnd0ZDeUFBSUFFUW9oZEJDaUVDREFRTElBQWdBUkNlRnlFQ0RBTUxJQUFnQVJDZEZ5RUNEQUlMSUFBb0FuQWlBeUFCUWZpL0VVR0x3QkVnQWtFQUlBTW9BZ0FvQXFnQkVRSUFRYUlCSVFJTUFRc2dBQ2dDY0NJRElBRkJqY0FSUVl2QUVVSEpzeEZCQUNBREtBSUFLQUtvQVJFQ0FBc0RRQ0FDUVg5R0lBSkJDa1p5UlFSQUlBQWdBUkJUSVFJTUFRc0xJQUlMOXdJQkJYOGpBRUdnQ0dzaUJDUUFJQUVvQWdnaEJRSkFJQUFnQVJCVElnTkJvZ0ZIQkVCQkNpRUNJQU5CQ2tZRVFDQUFLQUp3SWdBZ0FVRzB2aEZCMGI0UlFjbXpFVUVBSUFBb0FnQW9BcWdCRVFJQURBSUxJQUFvQW5BaUFpQUJRZHkrRVVIUnZoRkJ5Yk1SUVFBZ0FpZ0NBQ2dDcUFFUkFnQUxJQVFnQVVFZ2FpSUdOZ0lBSUFSQkVHcEJnUWhCajdzUklBUVFKeG9nQUNBQkVGTWlBa0U2UndSQUlBQW9BbkFpQUNBQlFmUytFVUhSdmhGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBTUFRc2dBQ0FCRUZNaEFpQUFLQUp3SVFNZ0FrR2lBVWNFUUNBRElBRkJsYjhSUWRHK0VVSEpzeEZCQUNBREtBSUFLQUtvQVJFQ0FBd0JDeUFESUFVZ0JFRVFhaUFHSUFNb0FnQW9BaWdSQkFBZ0FDZ0NjQ0lDSUFVZ0JFRVFhaUFHSUFJb0FnQW9BdWdCRVFRQVFRb2hBaUFBSUFFUVV5SURRUXBHRFFBZ0FDZ0NjQ0lBSUFGQnVyOFJRZEcrRVVISnN4RkJBQ0FBS0FJQUtBS29BUkVDQUNBRElRSUxJQVJCb0FocUpBQWdBZ3Y5QWdFRWZ5QUFJQUVRVXlFQ0FrQWdBQzBBekFGRkJFQWdBQzBBelFGRkRRRUxJQUFvQW5BaUF5QUJRZTY4RVVHVXZSRUNmeUFBS0FKd0drRUFDeHRCaTcwUlFjbXpFVUVBSUFNb0FnQW9BcWdCRVFJQUN5QUFRUUU2QU0wQklBSkJtQUZIQkVBZ0FrRUtSZ1JBSUFBb0FuQWlBQ0FCUWErOUVVR0x2UkZCeWJNUlFRQWdBQ2dDQUNnQ3FBRVJBZ0JCQ2c4TElBQW9BbkFpQWlBQlFhKzlFVUdMdlJGQnliTVJRUUFnQWlnQ0FDZ0NxQUVSQWdBTElBRWdBVUVnYWlJQ0VOc1RJZ00yQWhnZ0FTZ0NDQ0VGSUFBZ0FSQlRRUXBHQkVBZ0FDZ0NjQ0lBSUFVZ0EwRUFJQUFvQWdBb0F0d0JFUVFBUVFvUEN5QUFRUlJxSUFJUXpnTkIwWDVxUVFOUEJFQWdBQ2dDY0NJRUlBRkIwcjBSUVl1OUVVSEpzeEZCQUNBRUtBSUFLQUtvQVJFQ0FBc2dBQ2dDY0NJRUlBVWdBeUFDSUFRb0FnQW9BdHdCRVFRQUlBQWdBUkJUSWdKQkNrY0VmeUFBS0FKd0lnQWdBVUdEdmhGQmk3MFJRY216RVVFQUlBQW9BZ0FvQXFnQkVRSUFJQUlGUVFvTEN5VUFJQUFvQWdBRVFDQUFJQUFvQWdBUTlCWWdBQkE3R2lBQUtBSUFHaUFBRUxrREdnc0xlQUVDZnlNQVFTQnJJZ01rQUNBQUVEc2lBaUFEUVFocUlBQWdBQkNvQVVFQmFoRGFEU0FBRUtnQklBSVEyUTBpQWlnQ0NDQUJFT1FJSUFJZ0FpZ0NDRUVRYWpZQ0NDQUFJQUlRN3hZZ0FpQUNLQUlFRU8wV0lBSW9BZ0FFUUNBQ0tBSVFHaUFDS0FJQUdpQUNFUDRJR2dzZ0EwRWdhaVFBQzRVQ0FRUi9Jd0JCUUdvaUFpUUFJQUpCS0dvUWt3RWhCQ0FDSUFFcEFnZzNBeUFnQWlBQktRSUFOd01ZSUFGQklHb2hCU0FBSUFFUVV5RURBMEFDUUNBRFFhSUJSaUFEUWVoK2FrRUpTWEpGQkVBZ0EwRi9SaUFEUVFwR2NrVUVRQ0FDUVFBNkFEOGdBaUFET2dBK0lBUWdBa0VJYWlBQ1FUNXFFQ0lpQXhDdkRRd0NDeUFBS0FKd0lRQUNRQ0FEUVg5R0JFQWdBQ0FDUVJocVFjUzhFVUhtdkJGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBTUFRc2dBQ0FDUVJocUlBUWdBQ2dDQUNnQzFBRVJCZ0FMSUFRUTl3VWdCQkNmRnlBQ1FVQnJKQUFnQXc4TElBUWdBa0VJYWlBRkVDSWlBeEN2RFFzZ0F4QVpHaUFBSUFFUVV5RUREQUFBQ3dBTDhBRUJCWDhqQUVFZ2F5SURKQUFnQUNBQkVGTWhCQ0FEUVJCcUVFNGhBaUFESUFFcEFnZzNBd2dnQXlBQktRSUFOd01BSUFCQkZHb2hCaUFCUVNCcUlRVURRQUpBSUFSQjZINXFRUWxQQkVBZ0JFRi9SaUFFUVFwR2NrVUVRQ0FFUWQ5K2FrRUJUUVJBSUFJZ0JSQzJBaG9NQXdzZ0FpQUdJQVFRcFFJUXRnSWFEQUlMSUFBb0FuQWlBU0FES0FJSUlBSVFFeUFCS0FJQUtBTGdBUkVHQUNBQUtBSndJZ0FnQXlBQ0VCTkJ2YndSUWNtekVVRUFJQUFvQWdBb0FxZ0JFUUlBSUFJUUlCb2dBMEVnYWlRQUR3c2dBaUFGRUxZQ0dnc2dBa0c2dXhFUXRnSWFJQUFnQVJCVElRUU1BQUFMQUF2OEF3RUdmeU1BUVNCcklnSWtBQ0FBSUFFUVV5RURJQUlnQVNrQ0NEY0RHQ0FDSUFFcEFnQTNBeEJCQ2lFRkFrQWdBMEVLUmdSQUlBQW9BbkFpQUNBQlFmdTdFVUdpdHhGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBTUFRdEJBQ0VGSUFKQkFEWUNEQ0FDUVFBMkFnZ2dBa0VBT2dBSElBSkJBRG9BQmlBQUlBTkJBRUVBSUFKQkRHb2dBa0VIYWlBQkVMd0VJUVFDZndKQUlBSXRBQWNOQUNBQ0tBSU1JUVVnQkVFS1JnUkFJQUlnQlVFQmFqWUNEQXNnQUNnQ2NDSURJQU1vQWdBb0F0QUJFUUFBSVFZZ0FpZ0NEQ0VESUFZRVFDQUNJQU5CZjJvaUF6WUNEQXNnQUNnQ2NDZ0NSQ0FERUxFTklBUkJDa1lOQUNBRVFhRUJSZ1JBSUFBb0FuQWlBeUFDUVJCcVFRRkJwTHdSUWFpOEVTQURLQUlBS0FJWUVRZ0FJQUJCRkdvaUF5QURJQUZCSUdvUTZ3Z1FwUUloQXlBQUtBSndLQUpFSWdRZ0F4RENBU0lHTmdJa0lBUW9BaGdnQkJDZEJVRUVkR29nQmpZQ0FDQUFJQUVRVXlFRVFRRU1BZ3RCQUNFRElBQWdCRUVBUVFBZ0FrRUlhaUFDUVFacUlBRVF2QVFoQkVFQUlBSXRBQVlOQVJvZ0FDZ0NjQ2dDUkNBQ0tBSUlFTEFOUVFFTUFRdEJBQ0VEUVFBTElRWWdBaTBBQnlBQ0xRQUdja1VFUUNBQUtBSndJZ2NnQWlnQ0dDQUZJQVlnQWlnQ0NDQURJQWNvQWdBb0F1UUJFUUlBQ3lBQVFhc0JJQUVnQkJDOUJDRUZDeUFDUVNCcUpBQWdCUXN5QVFGL0lBQkI0TU1SS0FJQUlnRTJBZ0FnQUNBQlFYUnFLQUlBYWtIc3d4RW9BZ0EyQWdBZ0FFRUVhaEQzQmhvZ0FBdEZBUUYvSXdCQklHc2lBaVFBSUFJZ0FSRE1BVFlDRUJEbkFTQUNRUmhxSUFBZ0FTQUNRUkJxSUFKQkNHb1EvQllnQWtFWWFoQlhJUUFnQWtFZ2FpUUFJQUJCREdvTGZRRUNmeU1BUVNCcklnSWtBQUpBSUFFb0FqQWlBMEVRY1FSQUlBRW9BaXdnQVNnQ0dFa0VRQ0FCSUFFb0FoZzJBaXdMSUFBZ0FTZ0NGQ0FCS0FJc0lBSkJHR29RMXdnYURBRUxJQU5CQ0hFRVFDQUFJQUVvQWdnZ0FTZ0NFQ0FDUVJCcUVOY0lHZ3dCQ3lBQUlBSkJDR29RbXcwYUN5QUNRU0JxSkFBTE9nRUJmeUFBUWVUREVTZ0NBQ0lDTmdJQUlBQWdBa0YwYWlnQ0FHcEI2TU1SS0FJQU5nSUFJQUFnQUNnQ0FFRjBhaWdDQUdvZ0FSQ0ZEUXN4QVFGL0l3QkJFR3NpQkNRQUlBQkI5QVpxSUFRZ0FSQnBJZ0FRcFJjZ0FpQURFTzBISUFBUUlCb2dCRUVRYWlRQUM5c0JBUUYvSUFBZ0JSQzRCQ0FBUVl6REVUWUNBQ0FBUVF4cUlBSVE3UUVoQmlBQVFSaHFJQVFRN1FFaEJDQUFJQU0yQWlRZ0FFRkFhMEVESUFCQktHb2dBRUUwYWtFQVFRQkJBRUVCRUpNSElRSWdBRUVBTmdKNElBQkIvQUJxSUFVZ0FoQ1NEU0FBSUFZUUV6WUNLQ0FBSUFBb0FpUW9BZ3cyQWl3Z0FDQUVFQk0yQWpBZ0FDQUdFQjgyQWpRZ0FDQUFLQUlrS0FJUU5nSTRJQUFnQkJBZk5nSThJQUlnQVNnQ0NCQ3hEU0FDSUFFb0FnUVFzQTBnQWlBQkVPWUlRUUFRNVFnZ0FpQUJFT1lJUVFFUTVRZ2dBaUFCRU9ZSVFRSVE1UWdMMlFFQkJYOUJmeUVDQWtBZ0FFSEFBV29pQlJDNEFnMEFJQUZCQURvQUlBSkFJQVVRa0FFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdSQlBrY0VRQU5BUVg4aEFpQUVRWDlHRFFNQ1FDQURRZjhIU2dSQVFRRWhCZ3dCQ3lBQklBTnFJQVE2QUNBZ0EwRUJhaUVEQ3lBRkVKQUJLQUlBSWdJZ0FpZ0NBQ2dDREJFQUFDSUVRVDVIRFFBTERBRUxJQUZCQURvQUlFR2hBU0VDREFFTElBRWdBMnBCQURvQUlFR2hBU0VDSUFaRkRRQWdBQ2dDY0NJQUlBRkJuOEFSUWNtekVVSEpzeEZCQUNBQUtBSUFLQUtvQVJFQ0FFR2hBUThMSUFJTHRnY0JCMzhqQUVHQUEyc2lBaVFBSUFJZ0FTa0NDRGNEK0FJZ0FpQUJLUUlBTndQd0FrRUJJUVFDUUFKL0lBQWdBUkJUSWdaQlBFWUVRRUVBSVFRZ0FDQUJFS29YSVFZTElBWkJvUUZIQ3dSQUlBQW9BbkFpQUNBQ1FmQUNha0hBdWhGQjRyb1JRY216RVVFQUlBQW9BZ0FvQXFnQkVRSUFEQUVMSUFKQjRBSnFJQUZCSUdvUWFTRUhBa0FnQUNBQkVGTWlCa0VLUndSQUlBQW9BbkFoQUNBSEVCTWhBeUFBS0FJQUtBS29BU0VFSUFaQmYwWUVRQ0FDSUFNMkFoQWdBQ0FCUWV1NkVVSGl1aEZCajdzUklBSkJFR29nQkJFQ0FBd0NDeUFDSUFNMkFpQWdBQ0FCUVpLN0VVSGl1aEZCajdzUklBSkJJR29nQkJFQ0FBd0JDd0pBQWtBQ1FDQUVSUTBBSUFBb0F0QUJJZ0VnQnhBVElBQkIvQUZxRUJNZ0FFSGtBV29Rc3cxQkFXb2dBU2dDQUNnQ0JCRUpBQ0lCUlEwQUlBRWhBeUFCRVBzQlJRMEJDeUFBS0FMUUFTSUJJQU1nQVNnQ0FDZ0NDQkVCQUNBQUtBTFFBU0lCSUFjUUV5QUFRZndCYWhBVElBQkI1QUZxRUxNTlFRRnFJQUVvQWdBb0FnQVJDUUFpQVEwQUlBSkIyQUZxUWNPN0VSQnBHa0VBSVFFTUFRc2dBUkQ3QVVVRVFBSkFJQUVvQWd4RkRRQWdBU2dDRUVVTkFDQUFLQUp3SWdNZ0F5Z0NBQ2dDMEFFUkFBQWhCU0FDUWRnQmFoQzJEU0VESUFKQjBBQnFFTFlOSVFRZ0EwR3p1eEVRZ2dRZ0JSQzRFMEc2dXhFUWdnUkJ2THNSRUlJRUlBRVF0UTFCdnJzUkVJSUVHaUFFUWNtekVVSEJ1eEVnQVNnQ0VDQUJLQUlNYWtGL2FpMEFBRUVLUmhzUWdnUkJzN3NSRUlJRUlBVWdBaWdDK0FKcUVMY1RRYnE3RVJDQ0JDRUZJQUpCUUdzZ0FrSHdBbXBCQVJEUkJ5QUZJQUpCUUdzUXRRMUJ3YnNSRUlJRUdpQUNRVUJyRUNBYVFZd0JFQ1loQlNBQ1FVQnJJQU1RdEEwZ0FrRXdhaUFFRUxRTklBVWdBa0h3QW1vZ0FrRkFheUFCSUFKQk1Hb2dBQkNwRnlBQUlBVVF1UVFnQWtFd2FoQWdHaUFDUVVCckVDQWFJQUFvQW5Bb0FpZ2dBUkFUSUFFb0Fnd2dBU2dDRUJDb0Z5QUFLQUp3S0FKRUlnQkJBRFlDTUNBQUtBSVlJQUFRblFWQkJIUnFRUUEyQWd3Z0JCRHdCUm9nQXhEd0JSb01Bd3NnQUNnQzBBRWlBQ0FCSUFBb0FnQW9BZ2dSQVFBTUFnc2dBU2dDRENFRElBRW9BaEFoQkNBQ1FkZ0JhaUlGRU9vQklBVWdBeUFFRUxVR0N5QUFLQUp3SVFNZ0FrSFlBV29RRXlFRUlBY1FFeUVGSUFNb0FnQW9BcWdCSVFnZ0FpQUZOZ0lBSUFNZ0FrSHdBbW9nQkVIaXVoRkI1N3NSSUFJZ0NCRUNBQ0FBS0FMUUFTSUFJQUVnQUNnQ0FDZ0NDQkVCQUNBQ1FkZ0JhaEFnR2dzZ0J4QWdHZ3NnQWtHQUEyb2tBQ0FHQzlRQkFRUi9RUlFRSmlJR0VPb0lJUVJCREJBbUlnVWlCeUFBRUxnRUlBZEI0TVFSTmdJQUlBQWdCUkM1QkNBQUlBRkJBQkQrREFKQUlBQWdBaEJUSWdGQmZYRkJmVVlOQUFOQUFrQUNRQUpBSUFBZ0FTQUNFSUFOSWdGQm9nRkdCRUFnQUNBQ1FRQWdBeERvQ0VGL2FpSUZRUUpMRFFFZ0JVRUJhdzRDQWdJREN5QUJRWDF4UVgxR0RRUUxJQVFnQVNBQ0VQTUdDeUFBSUFJUVV5SUJRWDF4UVgxSERRRU1BZ3NMQTBBZ0FDQUNFRk1pQVVGOWNVRjlSdzBBQ3dzZ0FVRjlSd1IvSUFRUTlRWWFJQVlRS2tFQUJTQUVDd3RMQVFGL0l3QkJFR3NpQWlRQUFrQWdBQ2dDQkNBQUVCc29BZ0JKQkVBZ0FCQTdJQUFvQWdRZ0FSRGpDQ0FBSUFBb0FnUkJBV28yQWdRTUFRc2dBQ0FCRUprWEN5QUNRUkJxSkFBTExRQWdBQ0FCRUxnRUlBQkIzTUVSTmdJQUlBQkJFR29Ra3dFYUlBQkJJR29Ra3dFYUlBQkJBRHNCTUNBQUN5Z0FJQUJCd0FGcUlnQVFGa1VFUUVFQUR3c2dBQkNRQVNnQ0FDSUFJQUFvQWdBb0FpQVJBQUFMQlFBZ0FFVUxCd0FnQUVGL2N3c0hBRUVBSUFCckN5QUFBbjhnQUVHQWdJQ0FlRVlFUUVFQUlBRkJmMFlOQVJvTElBQWdBVzhMQ3lBQUFuOGdBRUdBZ0lDQWVFWUVRRUVBSUFGQmYwWU5BUm9MSUFBZ0FXMExDd2NBSUFBZ0FXd0xCd0FnQUNBQmF3c0hBQ0FBSUFGcUN3Y0FJQUFnQVhVTEJ3QWdBQ0FCZEFzSEFDQUFJQUZNQ3djQUlBQWdBVWdMQndBZ0FDQUJUZ3NIQUNBQUlBRktDd2NBSUFBZ0FVY0xCd0FnQUNBQmNRc0hBQ0FBSUFGekN3MEFJQUJCQUVjZ0FVRUFSM0VMQ2dBZ0FDQUJja0VBUndzcEFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJFSVlYRURFb0FnQWhBQ0FDUVJCcUpBQWdBQXV6QVFFQ2Z5QUFJQUVRVXlFRElBQW9BbkFoQWlBRFFhSUJSd1JBSUFJZ0FVR2lzeEZCM0xVUlFjbXpFVUVBSUFJb0FnQW9BcWdCRVFJQUlBTVBDeUFDSUFFZ0FVRWdhaUlEUWR5MUVTQUNLQUlBS0FMSUFSRUVBQ0FBSUFCQkZHb2dBeERPQXhEeEJTSUNCRUFnQWlBQ0xRQWtRUVJ5T2dBa0MwRUtJUUlnQUNBQkVGTWlBMEVLUndSL0lBQW9BbkFpQUNBQlFlTzFFVUhjdFJGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBZ0F3VWdBZ3NMUlFFQmZ5TUFRU0JySWdJa0FDQUNJQUVRa2dNMkFoQVE1d0VnQWtFWWFpQUFJQUVnQWtFUWFpQUNRUWhxRUlzWElBSkJHR29RVnlFQUlBSkJJR29rQUNBQVFRUnFDMUVDQVg4Q2ZBSkFJQUF0QUJBZ0FTMEFFRWNOQUNBQUtBSVlJQUVvQWhoSERRQWdBQ3NER0NJRElBRXJBeGdpQkdJZ0E3MGdCTDFTY2cwQUlBQkJJR29nQVVFZ2FrR0FDQkRVQlVVaEFnc2dBZ3NwQVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUNBQkVKVVhFREVvQWdBaEFDQUNRUkJxSkFBZ0FBc3RBUUYvSXdCQkVHc2lBeVFBSUFNZ0FUWUNEQ0FBUVFScUlBTkJER29ReFJjZ0FoQzdEU0FEUVJCcUpBQUwvQWNCQzM4akFFR1FFV3NpQXlRQUlBTkI2QkJxRUwwTklRVUNRQ0FBSUFFUVV5SUVRYUlCUndSQUlBQW9BbkFpQUNBQlFhS3pFVUhCc3hGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBTUFRc2dBU2dDQkVFQVRnUkFJQUFvQW5BaUFpQUJJQUZCSUdwQndiTVJJQUlvQWdBb0FzZ0JFUVFBQ3lBQVFSUnFJZ2dnQVVFZ2FpSUdFT3NJSVFjZ0EwSGdFR29nQVNrQ0NEY0RBQ0FESUFFcEFnQTNBOWdRQWtBQ1FDQUFJQUVRVXlJRVFYOUdJQVJCQ2taeURRQkJLQ0VDSUFSQktFWUVRQ0FCTFFBUURRSWdCU0FGTFFBa1FRRnlPZ0FrQWtBRFFFRUFJQUFnQVJCVElnUkJLVVlnQlJBV0d3MEJJQVJCb2dGSEJFQWdBQ2dDY0NJQUlBRkJ5ck1SUWNHekVVSEpzeEZCQUNBQUtBSUFLQUtvQVJFQ0FBd0dDeUFESUFnZ0JoRHJDRFlDc0FoQkFDRUNBa0FDUUNBRkVCWkZEUUFEUUNBRklBSVFFU2dDQUNBREtBS3dDRWNFUUNBQ1FRRnFJZ0lnQlJBV1NRMEJEQUlMQ3lBQUtBSndJZ0lnQVVIWHN4RkJ3Yk1SUWNtekVVRUFJQUlvQWdBb0FxZ0JFUUlBREFFTElBVWdBMEd3Q0dvUTNBRUxJQUFnQVJCVElnUkJMRVlOQUFzZ0JFRXBSZzBBSUFBb0FuQWlBQ0FCUWZHekVVSEJzeEZCeWJNUlFRQWdBQ2dDQUNnQ3FBRVJBZ0FNQkFzZ0FDQUJFRk1oQWd3Q0N5QUJMUUFRRFFBZ0FDZ0NjQ0lBSUFGQmhiUVJRY0d6RVVISnN4RkJBQ0FBS0FJQUtBS3NBUkVDQUF3Q0N5QUVJUUlMSUFWQkVHb2hCZ05BSUFKQmYwWWdBa0VLUm5KRkJFQWdCaUFDSUFFUTh3WWdBQ0FCRUZNaUFrRUtSZzBCSUFFdEFCQkZEUUVnQmtFZ0lBRVE4d1lNQVFzTEFrQWdBQ0FIRVBFRklnRUVRQUpBSUFFdEFDUWlBa0VFY1EwQUlBVXRBQ1FnQW5OQkFYRUVRQ0FBS0FKd0lnQWdBMEhZRUdwQnBMUVJRY0d6RVNBSUlBY1FwUUpCQUNBQUtBSUFLQUtvQVJFQ0FBd0JDeUFCRUJZZ0JSQVdSd1JBSUFBb0FuQWlBQ0FEUWRnUWFrSFh0QkZCd2JNUklBZ2dCeENsQWtFQUlBQW9BZ0FvQXFnQkVRSUFEQUVMSUFFaUFoQVdJQVVpQkJBV1JnUi9JQUlRUUNBQ0VESWdCQkJBRVBJV0JVRUFDMEVCY3dSQUlBQW9BbkFpQWlBRFFkZ1Fha0dIdFJGQndiTVJJQWdnQnhDbEFrRUFJQUlvQWdBb0FxZ0JFUUlBQ3lBQlFSQnFJZ3NRZ1FjZ0JoQ0JCMEVCSVFJRFFDQURRYkFJYWhDZUJTRUVJQU5CQ0dvUW5nVWhDU0FMSUFBb0FuQWdCQkR5QmlFS0lBWWdBQ2dDY0NBSkVQSUdJUXdnQWdSQUlBTWdBeTBBd0FnNkFCZ0xBa0FnQ2lBTVJnUkFJQVFnQ1JER0YwRUJjMFVOQVFzZ0FDZ0NjQ0lBSUFOQjJCQnFRYksxRVVIQnN4RWdDQ0FIRUtVQ1FRQWdBQ2dDQUNnQ3FBRVJBZ0FNQWd0QkFDRUNJQXBCZjBjTkFBc0xJQUVnQlJDN0RRd0JDeUFBSUFjZ0JSRElGd3RCQ2lFRUN5QUZFSWtOSUFOQmtCRnFKQUFnQkFzSUFDQUFFT3dJR2d0WEFDQUFRUUFReUFJZ0FFSHdzaEUyQWdBZ0FFRWthaUFCRU9FREdpQUFRZ0EzQWtRZ0FFRUFPZ0JBSUFCQkFEb0FPU0FBSUFJNkFEZ2dBQ0FETmdJMElBQWdCRFlDTUNBQVFRQTJBaXdnQUVFQU5nSWdJQUFMbVFZQkNuOGpBRUVRYXlJTEpBQWdDMEVJYWlBQVFTUnFFT0VESVFjZ0FDZ0NNQkRGQVNFSUFrQWdBQ2dDSUNJQ0lBaE9EUUFnQUMwQU9FVUVRQ0FCSUFFb0FnQW9BbmdSQUFBUXhRRWhCQ0FCRUVzaEFpQUVRUUZJRFFFZ0FDZ0NJQ0VCQTBBZ0FTQUlUZzBDSUFJZ0F4QVBJUVVnQnlBQUtBSWdFQThpQVNBRktBSUlOZ0lJSUFFZ0JTa0RBRGNEQUNBQUlBQW9BaUJCQVdvaUFUWUNJQ0FEUVFGcUlnTWdCRWNOQUFzTUFRc2dBQ2dDUENBQ2FpRUpJQUVRU3lFS0lBQXRBRUJGQkVBZ0FTQUJLQUlBS0FKNEVRQUFFTVVCSVFFZ0FDZ0NJQ0lESUFsT0lBTWdDRTV5RFFFZ0FVRUJTaUVDQTBBZ0NpQUVFQThoQlNBSElBTVFEeUlCSUFVb0FnZzJBZ2dnQVNBRktRTUFOd01BSUFBZ0FDZ0NJRUVCYWpZQ0lDQURRUUZxSWdNZ0NVNE5BaUFDSUFScUlRUWdBeUFJU0EwQUN3d0JDeUFCSUFFb0FnQW9BcHdCRVFBQUJFQWdBQ2dDUkNJQ1FRRklEUUVnQUNnQ1NDRUVBMEJCQUNFRElBUkJBRW9FUUFOQUlBQW9BaUFnQkNBR2JDQURhbW9oQkFKQUFrQWdBeUFCSUFFb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FJNEVRQUFUZzBBSUFZZ0FTQUJLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NOQkVBQUU0TkFDQUtJQUVnQVNnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWpnUkFBQWdCbXdnQTJvUUR5RUZJQWNnQkJBUElnSWdCU2dDQ0RZQ0NDQUNJQVVwQXdBM0F3QU1BUXNnQnlBRUVBOGhBaUFESUFaR0JFQWdBa1FBQUFBQUFBRHdQeEF0REFFTElBSkVBQUFBQUFBQUFBQVFMUXNnQTBFQmFpSURJQUFvQWtnaUJFZ05BQXNnQUNnQ1JDRUNDeUFHUVFGcUlnWWdBa2dOQUFzTUFRc2dBQ2dDSUNFQ0lBRWdBU2dDQUNnQ2VCRUFBQkRGQVNFQklBSWdDVTRnQWlBSVRuSU5BQ0FCUVFGS0lRUkJBQ0VCSUFJaEF3TkFBa0FDUUNBQ0lBTkhCRUFnQXlBQ2F5QUFLQUpJUVFGcWJ3MEJDeUFLSUFFUUR5RUdJQWNnQXhBUElnVWdCaWdDQ0RZQ0NDQUZJQVlwQXdBM0F3QU1BUXNnQnlBREVBOUVBQUFBQUFBQUFBQVFMUXNnQUNBQUtBSWdRUUZxTmdJZ0lBTkJBV29pQXlBSlRnMEJJQUVnQkdvaEFTQURJQWhJRFFBTEN5QUxRUkJxSkFBTHlnTUJBbjhqQUVFUWF5SUJKQUFDUUFKQUlBSVE4Z3NOQUNBQ0tBSm9RYWtCUmcwQUlBQkJBVG9BT1F3QkN3Si9RUUFnQWlBQ0tBSUFLQUs4QVJFQUFCQVdRUUZIRFFBYVFRQWdBaUFDS0FJQUtBSzhBUkVBQUVFQUVCRW9BZ0FpQXlBREtBSUFLQUlNRVFBQUlnTWdBeWdDQUNnQ0ZCRUFBRVVOQUJvZ0FFRUJPZ0E0SUFBZ0FpZ0NhRFlDTkNBQUlBSWdBaWdDQUNnQ2VCRUFBQkRGQVRZQ1BFRUJJQUlnQWlnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQW13UkFBQkZEUUFhSUFCQkFUb0FRQ0FBSUFJZ0FpZ0NBQ2dDZUJFQUFDSURJQU1vQWdBb0FqUVJBQUEyQWtRZ0FDQUNJQUlvQWdBb0FuZ1JBQUFpQXlBREtBSUFLQUk0RVFBQU5nSklRUUVMSVFNZ0FTQUNJQUlvQWdBb0Fyd0JFUUFBRUVBMkFnZ2dBU0FDSUFJb0FnQW9BcndCRVFBQUVESTJBZ0FnQVVFSWFpQUJFQjRFUUFOQUlBSW9BbWhCcVFGR0JFQWdBRUVBTmdJZ0N5QUJLQUlJS0FJQUlnUWdBQ0FFS0FJQUtBSUlFUUVBSUFGQkNHb1F6Z0VhSUFFZ0FpQUNLQUlBS0FLOEFSRUFBQkF5TmdJQUlBRkJDR29nQVJBZURRQUxDeUFEUlEwQUlBQkNBRGNDUkNBQVFRQTZBRUFnQUVFQU5nSThJQUJCQURZQ05DQUFRUUE2QURnTElBRkJFR29rQUVFQUMrTURBZ1YvQVgwakFFRWdheUlFSkFBZ0FSQWpHaUFDS0FJQUlRY2dBUkE4SVFVZ0JFRUFPZ0FmQWtBQ1FDQUZSUTBBSUFFZ0J5QUZFRFFpQ0JBUktBSUFJZ1pGRFFBRFFDQUdLQUlBSWdaRkRRRWdCeUFHS0FJRVJ3UkFJQVlvQWdRZ0JSQTBJQWhIRFFJTElBRVFReUFHUVFocUlBSVF4QUpGRFFBTERBRUxJQVJCRUdvZ0FTQUhJQU1Rd2dVZ0FSQWpLQUlBSVFJZ0FSQkRJUU1DUUNBRkJFQWdBeW9DQUNBRnM1UWdBa0VCYXJOZFFRRnpEUUVMSUFRZ0JSQzZBVUVCY3lBRlFRRjBjallDRENBRUFuOGdBUkFqS0FJQVFRRnFzeUFCRUVNcUFnQ1ZqU0lKUXdBQWdFOWRJQWxEQUFBQUFHQnhCRUFnQ2FrTUFRdEJBQXMyQWdnZ0FTQUVRUXhxSUFSQkNHb1FVaWdDQUJEQURTQUhJQUVRUENJRkVEUWhDQXNDUUNBQklBZ1FFU2dDQUNJQ1JRUkFJQVFvQWhBZ0FVRUlhaUlDS0FJQU5nSUFJQUlnQkNnQ0VEWUNBQ0FCSUFnUUVTQUNOZ0lBSUFRb0FoQW9BZ0JGRFFFZ0JDZ0NFQ0VDSUFFZ0JDZ0NFQ2dDQUNnQ0JDQUZFRFFRRVNBQ05nSUFEQUVMSUFRb0FoQWdBaWdDQURZQ0FDQUNJQVFvQWhBMkFnQUxJQVJCRUdvUVh5RUdJQUVRSXlJQklBRW9BZ0JCQVdvMkFnQWdCRUVCT2dBZklBUkJFR29Rc3dJTElBQWdCRUVRYWlBR0VERWdCRUVmYWhDaUFTQUVRU0JxSkFBTExRQWdBU0FBS0FJSVJ3UkFBMEFnQUNnQ0VCb2dBQ0FBS0FJSVFYQnFOZ0lJSUFBb0FnZ2dBVWNOQUFzTEMwTUJBWDhqQUVFUWF5SUJKQUFnQUJBYkdpQUJRZi8vLy84QU5nSU1JQUZCLy8vLy93YzJBZ2dnQVVFTWFpQUJRUWhxRUtRQktBSUFJUUFnQVVFUWFpUUFJQUFMVVFFQmZ5QUFFUGNGSUFBUUd5QUFLQUlBSUFBb0FnUWdBVUVFYWlJQ0VJVUdJQUFnQWhBdUlBQkJCR29nQVVFSWFoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVLZ0JFSjhHQzM0QkFuOGpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBQkJER29nQkVFTWFpQURFSUVDSUFFRVFDQUFLQUlRR2tILy8vLy9BQ0FCSWdOSkJFQVFnZ0VBQ3lBRFFRUjBFQ1loQlFzZ0FDQUZOZ0lBSUFBZ0JTQUNRUVIwYWlJQ05nSUlJQUFnQWpZQ0JDQUFFQ01nQlNBQlFRUjBhallDQUNBRVFSQnFKQUFnQUF0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFFTkFYSWdNZ0FVOEVRQ0FBRUxrRElnQWdBMEVCZGtrRVFDQUNJQUJCQVhRMkFnZ2dBa0VJYWlBQ1FReHFFRklvQWdBaEF3c2dBa0VRYWlRQUlBTVBDeEJ1QUFzdEFDQUJJQUFvQWdoSEJFQURRQ0FBS0FJUUdpQUFJQUFvQWdoQmFHbzJBZ2dnQUNnQ0NDQUJSdzBBQ3dzTExRQWdBeUFES0FJQUlBSWdBV3NpQUVGb2JVRVliR29pQWpZQ0FDQUFRUUZPQkVBZ0FpQUJJQUFRUFJvTEMxRUJBWDhnQUJDVkJ5QUFFQnNnQUNnQ0FDQUFLQUlFSUFGQkJHb2lBaERWRnlBQUlBSVFMaUFBUVFScUlBRkJDR29RTGlBQUVCc2dBUkFqRUM0Z0FTQUJLQUlFTmdJQUlBQWdBQkNTQWhDUkRndCtBUUovSXdCQkVHc2lCQ1FBSUFSQkFEWUNEQ0FBUVF4cUlBUkJER29nQXhDQkFpQUJCRUFnQUNnQ0VCcEJxdFdxMVFBZ0FTSURTUVJBRUlJQkFBc2dBMEVZYkJBbUlRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFWWJHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUVZYkdvMkFnQWdCRUVRYWlRQUlBQUxXQUVCZnlNQVFSQnJJZ01rQUNBRElBRTJBZ0FnQXlBQU5nSUlJQU5CQ0dvZ0F4QWVCRUFEUUNBQ0lBTW9BZ2dvQWdBMkFnQWdBa0VFYWlFQ0lBTkJDR29RWmhvZ0EwRUlhaUFERUI0TkFBc0xJQU5CRUdva0FBdGdBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNBQ0FFSUFFMkFnZ2dCRUVJYWlBRUVCNEVRQU5BSUFBZ0F5Z0NBQ0FFS0FJSUVKY0RJQVJCQ0dvUVpob2dBeUFES0FJQVFRUnFOZ0lBSUFSQkNHb2dCQkFlRFFBTEN5QUVRUkJxSkFBTE1BRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnQWdBaUFBTmdJSUlBSWdBa0VJYWhDZkJDRUFJQUpCRUdva0FDQUFDMlFCQVg4akFFRWdheUlFSkFBZ0FDQUJJQVJCRkdvZ0JFRVFhaUFDRU1JTklnSW9BZ0FpQVVVRVFDQUVJQUFnQXhERkNTQUFJQVFvQWhRZ0FpQUVLQUlBRU80Q0lBUVFYeUVCSUFRUXhBa0xJQVJCR0dvZ0FSQXhLQUlBR2lBRVFTQnFKQUFMSlFBZ0FDQUJSd1JBQTBBZ0FrRjBhaUlDSUFGQmRHb2lBUkRUQVNBQUlBRkhEUUFMQ3dzNkFRRi9JQUVnQWtjRVFDQURLQUlBSVFRRFFDQUFJQVFnQVJDZ0JTQURJQU1vQWdCQkRHb2lCRFlDQUNBQlFReHFJZ0VnQWtjTkFBc0xDMVVCQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lBSUFNZ0FEWUNDQ0FEUVFocUlBTVFIZ1JBQTBBZ0FpQURLQUlJRUlZQ0lBSkJER29oQWlBRFFRaHFFSndGSUFOQkNHb2dBeEFlRFFBTEN5QURRUkJxSkFBTFlBRUJmeU1BUVJCcklnUWtBQ0FFSUFJMkFnQWdCQ0FCTmdJSUlBUkJDR29nQkJBZUJFQURRQ0FBSUFNb0FnQWdCQ2dDQ0JDaEJTQUVRUWhxRUp3RklBTWdBeWdDQUVFTWFqWUNBQ0FFUVFocUlBUVFIZzBBQ3dzZ0JFRVFhaVFBQ3pBQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJQUlBSWdBRFlDQ0NBQ0lBSkJDR29RL1FnaEFDQUNRUkJxSkFBZ0FBc2lBUUovUVFFaEFRTkFJQUFRcVFFZ0FVRUJTaUVDSUFGQmYyb2hBU0FDRFFBTEN6b0JBWDhnQUNnQ0FDSUJCRUFnQVNFQUEwQWdBQ0lCS0FJRUlnQU5BQXNnQVE4TEEwQWdBQkNuQWlFQklBQW9BZ2doQUNBQkRRQUxJQUFMTEFFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWdnZ0FVRUlhaERoRnlBQktBSUlJUUFnQVVFUWFpUUFJQUFMWkFFQmZ5TUFRU0JySWdRa0FDQUFJQUVnQkVFVWFpQUVRUkJxSUFJUXdnMGlBaWdDQUNJQlJRUkFJQVFnQUNBREVNTU5JQUFnQkNnQ0ZDQUNJQVFvQWdBUTdnSWdCQkJmSVFFZ0JCRDRDQXNnQkVFWWFpQUJFREVvQWdBYUlBUkJJR29rQUF0akFRRi9Jd0JCSUdzaUFpUUFJQUpCQ0dvZ0FDQUJFTU1OSUFBZ0FrRUVhaUFDS0FJSVFSQnFFTVFOSVFFZ0FDQUNLQUlFSUFFZ0FpZ0NDQkR1QWlBQ1FSaHFJQUpCQ0dvUVh4QXhJUUFnQWtFSWFoRDRDQ0FBS0FJQUdpQUNRU0JxSkFBTFFBRUNmeU1BUVJCcklnSWtBQ0FBSUFKQkJHb2dBVUVRYWhERURTRURJQUFnQWlnQ0JDQURJQUVRN2dJZ0FrRUlhaUFCRURFb0FnQWFJQUpCRUdva0FBcytBUUYvSUFBb0FnQWhBU0FBSUFBUUpUWUNBQ0FBRUNVb0FnQkJBRFlDQ0NBQUVDVkJBRFlDQUNBQUVCdEJBRFlDQUNBQktBSUVJZ0FnQVNBQUd3dTlBUUVCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ0FnQXlBQk5nSUlBa0FnQUJBYktBSUFSUTBBSUFBUTV4Y2lBVVVOQUFOQUlBTkJDR29nQXhBZUJFQWdBVUVRYWlBRFFRaHFFRmNRaGdJZ0FSRDJDaUVDSUFBZ0FSRG1GeUFEUVFocUVLa0JJQUlpQVEwQkRBSUxDd05BSUFFb0FnZ2lBZ1JBSUFJaEFRd0JDd3NnQUNBQkVJd0hDeUFEUVFocUlBTVFIZ1JBQTBBZ0FDQURRUWhxRUZjUTVSY2dBMEVJYWhDcEFTQURRUWhxSUFNUUhnMEFDd3NnQTBFUWFpUUFDeUlBSUFBZ0FSRC9BUm9nQUVFUWFpQUJRUkJxRVA4QkdpQUFJQUVwQWlBM0FpQUxFZ0FnQVNBQktBSUFLQUo4RVFBQUVNWU5DeVVBSUFBb0FnUkJQM0ZCZjJvaUFFRUdUUVJBUWYwQUlBQkIvd0J4ZGtFQmNROExRUUFMdWdFQkFuOGpBRUVRYXlJQ0pBQUNRQUpBSUFFZ0FTZ0NBQ2dDZUJFQUFDSURJQU1vQWdBb0Fpd1JBQUFpQXhEckYwVUVRQ0FETHdFRVFjRC9BWEZGRFFFTElBSWdBQ2dDSUNBQklBRW9BZ0FvQXNBQkVRQUFFTVFGTmdJSUlBSWdBQ2dDSUJCK05nSUFJQUpCQ0dvZ0FoQ0lBVVVOQUNBQklBSkJDR29RVnlnQ0VDQUJLQUlBS0FLOEFSRUJBQXdCQ3lBQklBRWdBU2dDQUNnQ3VBRVJBQUFnQUNnQ0pHb2dBU2dDQUNnQ3ZBRVJBUUFMSUFKQkVHb2tBQXRWQVFGL0lBRWdBU2dDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaXdSQUFBdkFRUkJ3UDhCY1VVRVFDQUJJQUVvQWdBb0FyZ0JFUUFBSVFJZ0FDZ0NJQ0FCSUFFb0FnQW9Bc0FCRVFBQUVNY05JQUkyQWdBTEMwWUFJd0JCRUdzaUFpUUFJQUFnQVJEWEFpSUFFSjhKSUFKQkNHb2dBRUVBRU1NQkVKRUJJZ0FvQWdCQkVHb2dBeWdDQUJDdkdpQUFFQ1ZCQVRvQUJDQUNRUkJxSkFBTGdnRUJBbjhqQUVFZ2F5SUZKQUFnQVNBRlFSeHFJQUlRb1FraUJpZ0NBQ0VDSUFWQkFEb0FHeUFDUlFSQUlBVkJDR29nQVVIUXNCRWdBeUFFRU80WElBRWdCU2dDSENBR0lBVW9BZ2dRcEFRZ0JVRUlhaEJmSVFJZ0JVRUJPZ0FiSUFWQkNHb1FvQWtMSUFBZ0JVRUlhaUFDRURFZ0JVRWJhaENpQVNBRlFTQnFKQUFMakFFQkFuOGpBRUVRYXlJQ0pBQWdBU0FCS0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDTEJFQUFDOEJCRUhBL3dGeEJFQWdBU0FCS0FJQUtBSzRBUkVBQUNFRElBQW9BaUFnQVNBQktBSUFLQUxBQVJFQUFCREhEU0FETmdJQUN5QUNJQUVnQVNnQ0FDZ0N1QUVSQUFBMkFnd2dBQ0FBUVNScUlBSkJER29RcGdFb0FnQTJBaVFnQWtFUWFpUUFDNGNCQVFSL0l3QkJFR3NpQVNRQUlBQWdBQ2dDUUNJQ0VEZEJmMm9pQXhEeUZ5RUVJQUlnQXhBNEtBSUFJQUZCREdvZ0FVRUlhaUFBSUFBb0FnQW9BaXdSQUFBcEFnUkNONGluUVE5eElBQWdBQ2dDQUNnQ0xCRUFBQ2tDQkVLQWdJQ0FnSUNBT0lOQ2dJQ0FnSUNBZ0FoUkVKZ0ZHaUFCS0FJTUlRQWdBVUVRYWlRQUlBQWdCR29MdkFFQkJIOGpBRUVRYXlJQ0pBQUNmeUFBS0FKQUlnUWdBUkE0S0FJQUlnTWdBeWdDQUNnQ0tCRUFBQkNXQWdSQUlBUWdBUkE0S0FJQUlnQWdBQ2dDQUNnQ0tCRUFBQ2dDREF3QkN5QUNRUUEyQWd3Z0FrRUFOZ0lJUVFBaUF5QUJRUUJJRFFBYUEwQWdBQ0FFSUFNUU9DZ0NBQ0FDUVFocUlBSkJER29ROHhjZ0F5QUJTQVJBSUFJZ0FpZ0NDQ0FDS0FJTWFqWUNDQXNnQVNBRFJpRUZJQU5CQVdvaEF5QUZSUTBBQ3lBQ0tBSUlDeUVBSUFKQkVHb2tBQ0FBQzR3QkFnRi9BWDRqQUVFUWF5SUVKQUFnQVNBQktBSUFLQUlzRVFBQUtRSUVJUVVnQWlBQklBTWdCRUVNYWlBQUlBQW9BZ0FvQWl3UkFBQXBBZ1JDTjRpblFROXhBbjhnQlVJMGlLZEJCM0VpQVFSQUlBRkJBVVlNQVFzZ0FDQUFLQUlBS0FJc0VRQUFLUUlFUW9DQWdJQ0FnSUE0ZzBLQWdJQ0FnSUNBQ0ZFTEVKZ0ZFSVFDSUFSQkVHb2tBQXRNQVFGL0FrQWdBQ0FBS0FJQUtBSm9FUUFBUlEwQUlBQWdBQ2dDQUNnQ2NCRUFBQTBBSUFGQkVFd0VRQ0FDUVJCdElBRWdBbXBCZjJwQkVHMUhEd3NnQWtFUGNVRUFSeUVEQ3lBREM5NEJBUU4vSXdCQkVHc2lBeVFBSUFNZ0FDQUJJQUJCd0FScUlBRWdBU2dDQUNnQ0xCRUFBQ0lCS0FJY1FROXhFR3NpQUVFVWFpQUFRUlZxSUFCQkZtb1FoQWNpQWlBQktRSVlRaktJcDBIL1AzRnFOZ0lNSUFBZ0FFRVFhaUFEUVF4cUVGSW9BZ0EyQWhCQmZ5RUVJQU1nQVNrQ0dFSXlpS2RCL3o5eElnRWdBU0FDYWtGL2FoQ1pBU0VDQWtBQ1FDQUFFSm9CQkVCQkFDRUJBMEFnQWlBQUlBRVFMQkNaQlEwQ0lBRkJBV29pQVNBQUVKb0JTUTBBQ3dzZ0FDQUNFSVFCREFFTElBSWdBQ0FCRUN3UXBnRW9BZ0FoQkFzZ0EwRVFhaVFBSUFRTFd3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBaUFBUVlBR2FpSUFJQUpCREdvUXlnMDJBZ0FnQWhDRkJ6WUNDRUVBSVFFZ0FpQUNRUWhxRUI1RkJFQWdBaUFBSUFKQkRHb1F5UTFCQVNFQkN5QUNRUkJxSkFBZ0FRdDlBUUovSXdCQklHc2lBeVFBSUFBUUd5SUNJQU5CQ0dvZ0FDQUFFS2dCUVFGcUVOTVhJQUFRcUFFZ0FoRFNGeUlDS0FJSUlBRVE4Z2dnQWlBQ0tBSUlRUkJxTmdJSUlBQWdBaERSRnlBQ0lBSW9BZ1FRenhjZ0FpZ0NBQVJBSUFJb0FoQWFJQUlvQWdBaEFDQUNFUDRJR2lBQUVDb0xJQU5CSUdva0FBdExBUUYvSXdCQkVHc2lBaVFBQWtBZ0FDZ0NCQ0FBRUJzb0FnQkhCRUFnQUJBYklBQW9BZ1FnQVJEeUNDQUFJQUFvQWdSQkVHbzJBZ1FNQVFzZ0FDQUJFUGNYQ3lBQ1FSQnFKQUFMN0FFQ0EzOEJmaU1BUVVCcUlnUWtBQ0FFSUFJMkFqd2dCRUV3YWlBQklBRVFtUUVhUVg4aEFTQUVRUkJxSUFJZ0FpQURha0YvYWhDWkFSb2dCQ0FFS1FNd0lnYzNBeGdnQkNBSE53TUlJQVFnQkNrREVEY0RBQ0FFUVNCcUlnSWdCQ2tDQ0RjQ0FDQUNJQVFwQWdBM0FnZ2dBaUVEQWtBQ1FDQUFRWlFHYWlJRkVLZ0JCRUJCQUNFQ0EwQWdBeUlBSUFVZ0FoREVBU0lHRUprRkJIOGdBRUVJYWlBR1FRaHFFSmtGQlVFQUN3MENJQUpCQVdvaUFpQUZFS2dCU1EwQUN3c2dCU0FERVBnWERBRUxJQVJCUEdvZ0JTQUNFTVFCUVFocUVLWUJLQUlBSVFFTElBUkJRR3NrQUNBQkMzMEJBbjhqQUVFZ2F5SURKQUFnQUJBYklnSWdBMEVJYWlBQUlBQVFrZ0pCQVdvUWt3NGdBQkNTQWlBQ0VOY1hJZ0lvQWdnZ0FSRExEU0FDSUFJb0FnaEJHR28yQWdnZ0FDQUNFTllYSUFJZ0FpZ0NCQkRVRnlBQ0tBSUFCRUFnQWlnQ0VCb2dBaWdDQUNFQUlBSVFrQTRhSUFBUUtnc2dBMEVnYWlRQUN6QUJBWDhDUUNBQUlBRVFtUVZGRFFBZ0FFRUlhaUFCUVFocUVKa0ZSUTBBSUFBb0FoUWdBU2dDRkVZaEFnc2dBZ3VrQndFRmZ5TUFRZUFCYXlJRUpBQWdBMEVBT2dBQUFrQUNmMEVBSUFFUThRSU5BQnBCQVNBQkVQQUNEUUFhSUFFb0FnUkJQM0ZCZTJvaUJVRUJTd1JBUVg4aEJRd0NDMEVDSUFWQkFXc05BQnBCQXdzaEJ3SkFBa0FDUUNBQkVMRUNSUVJBSUFFUXJnSkZEUUVMUVFFaEJTQUNJQUlvQWdBb0FuUVJBQUJGRFFJZ0FpQUNLQUlBS0FKRUVRQUFJUVVNQVFzQ1FDQUNJQUlvQWdBb0FuQVJBQUJGRFFBZ0FTQUFLQUlBRU5jSFJRMEFJQVJCaUFGcUlBSkJBRUVBRU0wQklnWWdBQ2dDQUJDSEJDRUZJQVlRTlJvTUFRc2dBaUFBS0FJQUVJY0VJUVVMSUFWQkFrY05BQUpBSUFJZ0FpZ0NBQ2dDSEJFQUFFRUNSdzBBSUFJZ0FpZ0NBQ2dDTUJFQUFFRURSdzBBSUFFUThRSkZCRUJCQWlFRklBRVE4QUpGRFFJTElBUkJnQUZxSUFFb0FoUkIveDl4SWdVZ0JSQ1pBUm9nQkVId0FHcEJBRUVERUprQkdpQUVJQVFwQTRBQk53TjRJQUlnQWlnQ0FDZ0NIQkVBQUNFRklBUWdCQ2tEZURjREdDQUVJQVFwQTNBM0F4QWdBQ0FISUFSQmlBRnFJQVJCR0dvZ0JFRVFhaUFGUVFBUTlRZ2lCaUFDSUFNUTlBZ2lCVUYvU2cwQ0lBQWdCMEVNYkdwQm9BWnFJZ2dnQmhEekNDQUVRZWdBYWlBQktBSVVRZjhmY1VFQmFpSUJJQUVRbVFFYUlBUkJRR3RCQUVFQkVKa0JHaUFFSUFRcEEyZzNBMGdnQWlBQ0tBSUFLQUljRVFBQUlRRWdCQ0FFS1FOSU53TUlJQVFnQkNrRFFEY0RBQ0FBSUFjZ0JFSFFBR29nQkVFSWFpQUVJQUZCQUJEMUNDSUFJQUlnQXhEMENDSUZRWDlLRFFJZ0NDQUFFUE1JREFJTFFRSWhCUXNnQkVIUUFHb2dBU2dDRkVIL0gzRWlCaUFGSUFacVFYOXFFSmtCR2lBRVFZQUJha0VBUVFNUW1RRWhCZ0pBSUFFUXNnTkZCRUFnQWlBQ0tBSUFLQUl3RVFBQVFRRklEUUVMSUFJZ0FpZ0NBQ2dDTUJFQUFFRUNRUUVnQWlBQ0tBSUFLQUljRVFBQVFRSkdHMndoQ0FKQUlBRVFzZ05GQkVBZ0JDZ0NnQUVoQlF3QkN5QUVJQUVvQWhSQkRIWkJCM0VpQlRZQ2dBRUxJQVlnQlNBSWFrRi9hallDQkFzZ0JDQUVLUU5RTndNNElBUWdCQ2tEZ0FFM0F6QWdBaUFDS0FJQUtBSWNFUUFBSVFaQkFDRUZJQUVRemdRRVFDQUJMUUFhSVFVTElBUWdCQ2tET0RjREtDQUVJQVFwQXpBM0F5QWdCRUdJQVdvZ0JFRW9haUFFUVNCcUlBWWdCUkQxQ0NFR0FrQUNRQ0FBRUljRkRRQWdBQ2dDQUEwQUlBRVE4UUpGRFFBZ0FDZ0NPRUVCVGcwQVFYOGhCUXdCQ3lBQUlBY2dCaUFDSUFNUTlBZ2lCVUYvU2cwQkN5QUFJQWRCREd4cVFhQUdhaUFHRVBNSUN5QUVRZUFCYWlRQUlBVUxXd0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ0FnQWlBQU5nSUlBa0FnQWtFSWFpQUNFQjVGRFFBRFFDQUNLQUlJS0FJQVJRMEJJQUpCQ0dvUVpob2dBa0VJYWlBQ0VCNE5BQXNMSUFJb0FnZ2hBQ0FDUVJCcUpBQWdBQXQ5QVFGL0l3QkJJR3NpQXlRQUlBTWdBallDRUNBRElBRTJBaGdnQUNnQ0FDRUJJQU1nQUJCQU5nSUlJQUVnQTBFWWFpQURRUWhxRUo4RVFRSjBhaUVCSUFOQkdHb2dBMEVRYWhBZUJFQWdBQ0FCSUFOQkVHb2dBMEVZYWhDZkJFRUNkR29nQUNnQ0JDQUJFSkVFRU13RkN5QUJFR0VhSUFOQklHb2tBQXVUQVFFQmZ5TUFRU0JySWdJa0FDQUNJQUUyQWhBZ0FpQUFJQUVRL1JjMkFoZ0NRQ0FDUVJocUlBSkJFR29RSGtVTkFDQUNJQUlvQWhnMkFnZ2dBa0VJYWhCbUlBSkJFR29RSGtVTkFBTkFJQUlvQWdnb0FnQUVRQ0FDS0FJWUlBSW9BZ2dvQWdBMkFnQWdBa0VZYWhCbUdnc2dBa0VJYWhCbUlBSkJFR29RSGcwQUN3c2dBaWdDR0NFQUlBSkJJR29rQUNBQUN5b0JBWDhnQUJBYkdpQUFLQUlBSWdFZ0FSRGdCQ0FBRUJzaUFDQUFLQUlBUVg5cU5nSUFJQUVRS2d1WkFRRURmeUFBRVBJRklnRWdBU2dDQUNnQ3ZBRVJBQUFpQXhBV0JIOERRQUpBSUFNZ0FoQVJLQUlBSWdFZ0FTZ0NBQ2dDTUJFQUFDSUJJQUVvQWdBb0FvZ0JFUUFBS1FJRVFqK0RRZ1JTRFFBZ0FTQUJLQUlBS0FMQUFSRUFBRUVEUVlLd0VSQ0ZBa1VOQUNBQUlBRWdBU2dDQUNnQ3dBRVJBQUFRdEFGRkRRQkJBUThMSUFKQkFXb2lBaUFERUJaSkRRQUxRUUFGSUFJTEM4QUJBUVYvQWtBZ0FCRHlCU0lESUFNb0FnQW9BcndCRVFBQUlnWVFGa1VFUUVFQUlRTU1BUXRCQUNFREEwQWdCaUFGRUJFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0Fpd1JBQUFoQWdKQUlBQW9BZ0JCQkVjTkFDQUNLUUlFUXYvL0FZTkNCRklOQUNBRFFRRnFJUU1nQkNBQ0VJNEVRUUZ6Y2lFRUN5QUZRUUZxSWdVZ0JoQVdTUTBBQ3dzZ0FCQ0hCVVVnQkVFQmNVVWdBMEVDU0hKeVJRUkFJQUFnQVVHMXJ4RVFXQXNMbkFnQkJuOGpBRUZBYWlJQ0pBQWdBaUFBUVJ4cUlnTVFqQUkyQWpBZ0FpQURFR0UyQWlnZ0FrRXdhaUFDUVNocUVCNEVRQU5BSUFKQk1Hb1FSRUVBT2dBZ0lBSkJNR29RUkVGL05nSWtJQUpCTUdvUThRRWdBaUFERUdFMkFpZ2dBa0V3YWlBQ1FTaHFFQjROQUFzTElBQW9Ba0FpQkNBRUtBSUFLQUlZRVFBQUlnUWdCQ2dDQUNnQ3ZBRVJBQUFpQkJBV0lRVWdBa0VCT2dBb0lBSkJNR29nQlNBQ1FTaHFFT01OSVFjZ0JCQVdRUUZPQkVCQkFDRUZBMEFDUUNBRUlBVVFFU2dDQUNJR0lBWW9BZ0FvQWhnUkFBQWlCa1VOQUNBR0tBSm9RUVJIRFFBZ0JpQUdLQUlBS0FMSUFSRUFBQ0FBRUVNUUV4Q0hBUVJBSUFKQktHb2dCeUFGRUpvRklBSkJLR3BCQUJDSkJ3c2dBaUFERUl3Q05nSW9JQUlnQXhCaE5nSWdJQUpCS0dvZ0FrRWdhaEFlUlEwQUEwQWdBa0VvYWhCRVFSQnFJQVlnQmlnQ0FDZ0N5QUVSQUFBUW1BSUVRQ0FDUVNocUVFUWdCVFlDSkFzZ0FrRW9haER4QVNBQ0lBTVFZVFlDSUNBQ1FTaHFJQUpCSUdvUUhnMEFDd3NnQlVFQmFpSUZJQVFRRmtnTkFBc0xJQUlnQXhDTUFqWUNLQ0FDSUFNUVlUWUNJQ0FDUVNocUlBSkJJR29RSGdSQUEwQWdBa0VvYWhCRUlBQVFReEFURUljQlJRUkFJQUpCS0dvUVJFRUJPZ0FnQ3lBQ1FTaHFFUEVCSUFJZ0F4QmhOZ0lnSUFKQktHb2dBa0VnYWhBZURRQUxDd05BQWtBZ0FpQURFSXdDTmdJb0lBSWdBeEJoTmdJZ1FRQWhCU0FDUVNocUlBSkJJR29RSGtVTkFBTkFBa0FnQWtFb2FoQkVMUUFnUlEwQUlBSWdBeENNQWpZQ0lDQUNJQU1RWVRZQ0dDQUNRU0JxSUFKQkdHb1FIa1VOQUFOQUFrQWdBa0VnYWhCRUxRQWdEUUFnQWtFb2FoQkVRUkJxSUFKQklHb1FSQkNZQWtVTkFFRUJJUVVnQWtFZ2FoQkVRUUU2QUNBTElBSkJJR29ROFFFZ0FpQURFR0UyQWhnZ0FrRWdhaUFDUVJocUVCNE5BQXNMSUFKQktHb1E4UUVnQWlBREVHRTJBaUFnQWtFb2FpQUNRU0JxRUI0TkFBc2dCUTBCQ3dzZ0FpQURFSXdDTmdJZ0lBSWdBeEJoTmdJb0lBSkJJR29nQWtFb2FoQWVCRUFEUUFKQUlBSkJJR29RUkMwQUlFVU5BQ0FDUVNCcUVFUW9BaVJCZjBZRVFDQUFJQUZCajY4UkVGZ2dBVUhzblJFUUVDQUNRU0JxRUVSQkVHb1F1UUZCenBjUkVCQWFEQUVMSUFKQktHb2dCeUFDUVNCcUVFUW9BaVFRbWdVZ0FrRW9ha0VCRUlrSEN5QUNRU0JxRVBFQklBSWdBeEJoTmdJb0lBSkJJR29nQWtFb2FoQWVEUUFMQ3lBRUVCWkJBVTRFUUVFQUlRQURRQ0FDUVNocUlBY2dBQkNhQlNBQ1FTaHFFSUVKUlFSQUlBUWdBQkFSUVFBMkFnQUxJQUJCQVdvaUFDQUVFQlpJRFFBTEN5QUVFRUFoQUNBRUVESWhBU0FDUVFBMkFpQWdBaUFBSUFFUS94YzJBaWdnQWtFUWFpQUNRU2hxRUdjaEFDQUNJQVFRTWpZQ0dDQUNRUWhxSUFKQkdHb1FaeUVCSUFRZ0FDZ0NBQ0FCS0FJQUVQNFhJQWNRaUFjZ0FrRkFheVFBQyswRUFRWi9Jd0JCTUdzaUFpUUFJQUlnQUVFY2FpSURFSXdDTmdJUUlBSWdBeEJoTmdJb0lBSkJFR29nQWtFb2FoQWVCRUFEUUNBQ1FSQnFFRVJCQURvQUlDQUNRUkJxRUVSQkFEb0FJU0FDUVJCcUVFUkJBRG9BSWlBQ1FSQnFFUEVCSUFJZ0F4QmhOZ0lvSUFKQkVHb2dBa0VvYWhBZURRQUxDd05BQWtBZ0FrRUFOZ0lvSUFJZ0F4Q01BallDRUNBQ0lBTVFZVFlDSUFKQUlBSkJFR29nQWtFZ2FoQWVCRUFEUUNBQ1FSQnFFRVF0QUNCRkJFQWdBaUFDUVJCcUVFUTJBaWdNQXdzZ0FrRVFhaER4QVNBQ0lBTVFZVFlDSUNBQ1FSQnFJQUpCSUdvUUhnMEFDd3NnQWlnQ0tFVU5BUXNnQWtFUWFoQ1pDU0VFSUFJb0FpaEJBVG9BSVNBRUlBSkJLR29ReVFjZ0JCRGZCRVVFUUFOQUlBUVFSQ2dDQUNFRklBSWdBeENNQWpZQ0lDQUNJQU1RWVRZQ0NBSkFJQUpCSUdvZ0FrRUlhaEFlUlEwQUlBVkJFR29oQlFOQUFrQUNRQ0FDUVNCcUVFUXRBQ0FOQUNBRklBSkJJR29RUkJDWUFrVU5BQ0FDUVNCcUVFUXRBQ0VoQnlBQ1FTQnFFRVFoQmlBSFJRMEJJQVl0QUNJTkFDQUFJQUZCOGE0UkVGZ2dBVUhzblJFUUVDQUZFTGtCUVlXdkVSQVFJQUpCSUdvUVJFRVFhaEM1QVVIT2x4RVFFQm9nQWtFZ2FoQkVRUUU2QUNJZ0FFRUJPZ0RZQXdzZ0FrRWdhaER4QVNBQ0lBTVFZVFlDQ0NBQ1FTQnFJQUpCQ0dvUUhnMEJEQUlMQ3lBR1FRRTZBQ0VnQWlBQ1FTQnFFRVEyQWdnZ0JDQUNRUWhxRU1rSEN5QUNJQU1RWVRZQ0NDQUNRU0JxSUFKQkNHb1Fsd0lFUUNBRUVFUW9BZ0JCQURvQUlTQUVFRVFvQWdCQkFUb0FJQ0FFRUlBWUN5QUVFTjhFUlEwQUN3c2dBa0VRYWhDV0RpQUNLQUlvRFFFTEN5QUNRVEJxSkFBTG5RNEJCWDhqQUVFd2F5SUZKQUFnQUNnQ1FBUkFBa0FnQUNnQ3pBTkJBRW9OQUFKQUlBQWdBVUcrb0JFUVdBd0JBQXNBQ3lBQUlBRVFoQmdnQUNBQkVJTVlJQUFnQVJDQ0dDQUFLQUxVQTBFQ1RnUkFJQUFnQVVHTm9SRVFXQXNnQUNnQ2pBUkJmMFlFUUNBQVFRRTJBb3dFQ3dKQUlBQWdCVUcvb1JFUUlpSUNFTFFCUlFSQUlBSVFHUm9NQVFzZ0FDQUZRU0JxUWMraEVSQWlJZ01RdEFFaEJDQURFQmthSUFJUUdSb2dCRVVOQUNBQUlBRkIzYUVSRUZnTEFrQWdBQ0FGUWJHaUVSQWlJZ0lRdEFGRkJFQWdBaEFaR2d3QkN5QUFJQVZCSUdwQno2RVJFQ0lpQXhDMEFTRUVJQU1RR1JvZ0FoQVpHaUFFUlEwQUlBQWdBVUhCb2hFUVdBc0NRQ0FBRUlFWVJRMEFBa0FnQUNBRlFaV2pFUkFpSWdJUXRBRUVRQ0FDRUJrYURBRUxJQUFnQlVFZ2FrR2lveEVRSWlJREVMUUJJUVFnQXhBWkdpQUNFQmthSUFSRkRRRUxJQUFnQVVHdW94RVFXQXNDUUNBQUlBVkJsYU1SRUNJaUFoQzBBVVVFUUNBQ0VCa2FEQUVMSUFBZ0JVRWdha0dpb3hFUUlpSURFTFFCSVFRZ0F4QVpHaUFDRUJrYUlBUkZEUUFnQUNBQlFmV2pFUkJZQ3lBQVFjQUVhaUlERUpJQ0JFQkJBQ0VDQTBBZ0F5QUNFR3N0QUJRaEJpQURJQUlRYXlFRUFrQUNmMEVJSUFZTkFCb2dCQzBBRlNFR0lBTWdBaEJySVFSQkJDQUdEUUFhSUFRdEFCWkZEUUVnQXlBQ0VHc2hCRUVDQ3lFR0lBUkJFR29nQmhDRUFnc0NRQ0FESUFJUWF5Z0NERUgvL3dCR0RRQWdBeUFDRUdzb0FoQWdBeUFDRUdzb0FneE5EUUFnQUNBQlFhS2tFUkJZSUFGQkFoQ3RBeUFCUWRha0VSQVFJQUlRbFFGQjVxUVJFQkFnQXlBQ0VHc29BZ3dRbFFGQjlLUVJFQkFnQXlBQ0VHc29BaEFRbFFGQnpwY1JFQkFhQ3lBRElBSVFheWdDREVILy93QkdCRUFnQXlBQ0VHc29BaEFoQkNBRElBSVFheUFFTmdJTUN3SkFBa0FnQXlBQ0VHc3RBQlJGRFFBZ0F5QUNFR3NvQWd4QkNCQ1RCQTBBSUFBZ0FVR09wUkVRV0NBQlFRSVFyUU1nQVVIV3BCRVFFQ0FDRUpVQlFlYWtFUkFRSUFNZ0FoQnJLQUlNRUpVQlFjNlhFUkFRR2d3QkN3SkFJQU1nQWhCckxRQVZSUTBBSUFNZ0FoQnJLQUlNUVFRUWt3UU5BQ0FBSUFGQjNxVVJFRmdnQVVFQ0VLMERJQUZCMXFRUkVCQWdBaENWQVVIbXBCRVFFQ0FESUFJUWF5Z0NEQkNWQVVIT2x4RVFFQm9NQVFzZ0F5QUNFR3N0QUJaRkRRQWdBeUFDRUdzb0FneEJBaENUQkEwQUlBQWdBVUdBcGhFUVdDQUJRUUlRclFNZ0FVSFdwQkVRRUNBQ0VKVUJRZWFrRVJBUUlBTWdBaEJyS0FJTUVKVUJRYzZYRVJBUUdnc2dBeUFDRUdzb0Fnd2dBQ2dDakFOQkFuUkxCRUFnQUNBQlFkU21FUkJZSUFGQkFoQ3RBeUFCUWRha0VSQVFJQUlRbFFGQjdhWVJFQkFnQXlBQ0VHc29BZ3hCQW5ZUWxRRkJrNmNSRUJBZ0FDZ0NqQU1RbFFGQnpwY1JFQkFhQ3lBQ1FRRnFJZ0lnQXhDU0Fra05BQXNMQWtBZ0FDZ0NBQ0lDUVExTkJFQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ1FRRnJEZzBBQVFJRENBUUVCQVFFQkFZRkNBc2dBQ2dDa0FSQmYwY05CeUFBSUFGQnhxY1JFRmdNQndzZ0FDZ0NsQVJGQkVBZ0FDQUJRWWFvRVJCWUN5QUFLQUtnQkVVRVFDQUFRUUUyQXFBRUN5QUFLQUtrQkEwR0lBQkJBallDcEFRTUJnc2dBQ2dDbEFSRkJFQWdBQ0FCUVlhb0VSQllDeUFBS0FLWUJFVUVRQ0FBSUFGQndhZ1JFRmdMSUFBb0FwQUVRWDlIRFFVZ0FDQUJRZjJvRVJCWURBVUxJQUF0QUs0RVJRMEVJQUF0QUswRURRUWdBQ0FCUWIycEVSQllEQVFMSUFBb0F0QUVRUUpJRFFNZ0FDQUJRZStwRVJCWURBTUxBa0FnQUNBRlFhbXFFUkFpSWdJUXRBRkZCRUFnQWhBWkdnd0JDeUFBSUFWQklHcEJ0YW9SRUNJaUF4QzBBU0VFSUFNUUdSb2dBaEFaR2lBRVJRMEFJQUFnQVVIS3FoRVFXQXNDUUNBQUlBVkJ2NkVSRUNJaUFoQzBBVVVFUUNBQ0VCa2FEQUVMSUFBZ0JVRWdha0dDcXhFUUlpSURFTFFCSVFRZ0F4QVpHaUFDRUJrYUlBUkZEUUFnQUNBQlFadXJFUkJZQ3dKQUlBQWdCVUd4b2hFUUlpSUNFTFFCUlFSQUlBSVFHUm9NQVFzZ0FDQUZRU0JxUWR1ckVSQWlJZ01RdEFFaEJDQURFQmthSUFJUUdSb2dCRVVOQUNBQUlBRkI5S3NSRUZnTEFrQWdBQ0FGUWJTc0VSQWlJZ0lRdEFGRkJFQWdBaEFaR2d3QkN5QUFJQVZCSUdwQnZhd1JFQ0lpQXhDMEFTRUVJQU1RR1JvZ0FoQVpHaUFFUlEwQUlBQWdBVUhQckJFUVdBc0NRQ0FBSUFWQmdhMFJFQ0lpQWhDMEFVVUVRQ0FDRUJrYURBRUxJQUFnQlVFZ2FrR1JyUkVRSWlJREVMUUJJUVFnQXhBWkdpQUNFQmthSUFSRkRRQWdBQ0FCUWFxdEVSQllDeUFBS0FLWUJFVUVRQ0FBSUFGQndhZ1JFRmdMSUFBb0FwQUVRWDlHQkVBZ0FDQUJRZjJvRVJCWUN5QUFLQUxZQkVGL1J3MEFJQUFnQVVIcXJSRVFXQXNnQUNnQzNBUkJBa2dOQVNBQUlBRkJySzRSRUZnTUFRc2dBQ0FCUWVLdUVSQllDeUFGUVFBUXlBSWdCVUg0c1JFMkFnQWdCU0VCSUFBb0FrQWlBQ0FCSUFBb0FnQW9BZ2dSQVFBZ0FSQ2FBaG9MSUFWQk1Hb2tBQXRvQVFKL0lBQVF4UVFnQVNnQ0JDRURJQUFRT3lBQUtBSUFJQUlnQVVFRWFpSUVFTThLSUFBUU95QUNJQUFvQWdRZ0FVRUlhaUlDRUpjTElBQWdCQkF1SUFCQkJHb2dBaEF1SUFBUUd5QUJFQ01RTGlBQklBRW9BZ1EyQWdBZ0FDQUFFQllRclFVZ0F3dG5BUUYvSXdCQkVHc2lBeVFBSUFNZ0FqWUNBQ0FESUFFMkFnZ2dBQ2dDRUNFQklBTkJDR29nQXhBZUJFQURRQ0FCSUFBb0FnZ2dBeWdDQ0JDWEF5QUFJQUFvQWdoQkJHbzJBZ2dnQTBFSWFoQm1HaUFEUVFocUlBTVFIZzBBQ3dzZ0EwRVFhaVFBQzFFQkFuOGdBU0FBS0FJRUlnVWdBMnRxSWdRZ0Fra0VRQ0FFSVFNRFFDQUFFRHNnQUNnQ0JDQURFSmNESUFBZ0FDZ0NCRUVFYWpZQ0JDQURRUVJxSWdNZ0Fra05BQXNMSUFFZ0JDQUZFUDRGR2dzaUFDTUFRUkJySWdNa0FDQUFFRHNnQVNBQ0lBQkJCR29RMlJjZ0EwRVFhaVFBQy80TkFRTi9Jd0JCSUdzaUJTUUFBa0FnQWlBQ0tBSUFLQUo0RVFBQUlBTWdBeWdDQUNnQ2VCRUFBQkRBQVVVTkFBSkFJQUlnQWlnQ0FDZ0NlQkVBQUNJR0lBWW9BZ0FvQW5BUkFBQkZEUUFnQXlBREtBSUFLQUo0RVFBQUlnWWdCaWdDQUNnQ2NCRUFBRVVOQUNBQ0lBSW9BZ0FvQW5nUkFBQWdBeUFES0FJQUtBSjRFUUFBRU9VR1JRMEFJQUlnQWlnQ0FDZ0NlQkVBQUNJR0lBWW9BZ0FvQW5nUkFBQU5BU0FESUFNb0FnQW9BbmdSQUFBaUJpQUdLQUlBS0FKNEVRQUFEUUVMSUFBZ0FVSHhuUkVRV0VFQklRUUxJQUlnQWlnQ0FDZ0NpQUVSQUFBcEFnUWdBeUFES0FJQUtBS0lBUkVBQUNrQ0JJVkNQNE5RUlFSQUlBQWdBVUdEbmhFUVdFRUJJUVFMSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQU9JTlFSUVJBSUFBZ0FVR2luaEVRV0VFQklRUUxJQUlnQWlnQ0FDZ0NpQUVSQUFBcEFnUWdBeUFES0FJQUtBS0lBUkVBQUNrQ0JJVkNnSUNBd0FDRFVFVUVRQ0FBSUFGQnc1NFJFRmhCQVNFRUN5QUNJQUlvQWdBb0FvZ0JFUUFBRUxjRElBTWdBeWdDQUNnQ2lBRVJBQUFRdHdOelFRRkdCRUFnQUNBQlFlK2VFUkJZUVFFaEJBc0NRQUpBSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQWdBR0RRZ0JTRFFBZ0FpQUNLQUlBS0FLSUFSRUFBQ2tDQkNBRElBTW9BZ0FvQW9nQkVRQUFLUUlFaFVLQWdJQ0FBb05DQUZJTkFDQUNJQUlvQWdBb0FvZ0JFUUFBS1FJRUlBTWdBeWdDQUNnQ2lBRVJBQUFwQWdTRlFvQ0FnSUFFZzBJQVVnMEFJQUlnQWlnQ0FDZ0NpQUVSQUFBUXNnY2dBeUFES0FJQUtBS0lBUkVBQUJDeUIwY05BQ0FDSUFJb0FnQW9Bb2dCRVFBQUVMVUZJQU1nQXlnQ0FDZ0NpQUVSQUFBUXRRVkhEUUFnQWlBQ0tBSUFLQUtJQVJFQUFCRDJDQ0FESUFNb0FnQW9Bb2dCRVFBQUVQWUljMEVCUncwQkN5QUFJQUZCbVo4UkVGaEJBU0VFQ3dKQUFrQWdBaUFDS0FJQUtBS0lBUkVBQUNrQ0JDQURJQU1vQWdBb0FvZ0JFUUFBS1FJRWhVS0FnSUNBZ0lBSWcwSUFVZzBBSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQWdJQ0FJSU5DQUZJTkFDQUNJQUlvQWdBb0FvZ0JFUUFBS1FJRUlBTWdBeWdDQUNnQ2lBRVJBQUFwQWdTRlFvQ0FnSUNBZ01BQWcwSUFVZzBBSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQWdJQ0FnQUdEUWdCU0RRQWdBaUFDS0FJQUtBS0lBUkVBQUNrQ0JDQURJQU1vQWdBb0FvZ0JFUUFBS1FJRWhVS0FnSUNBZ0lDQUFvTkNBRklOQUNBQ0lBSW9BZ0FvQW9nQkVRQUFLUUlFSUFNZ0F5Z0NBQ2dDaUFFUkFBQXBBZ1NGUW9DQWdJQ0FnSUFFZzBJQVVnMEFJQUlnQWlnQ0FDZ0NpQUVSQUFBcEFnUWdBeUFES0FJQUtBS0lBUkVBQUNrQ0JJVkNnSUNBZ0lDQUVJTkNBRklOQUNBQ0lBSW9BZ0FvQW9nQkVRQUFLUUlFSUFNZ0F5Z0NBQ2dDaUFFUkFBQXBBZ1NGUW9DQWdJQ0FnQUdEUWdCU0RRQWdBaUFDS0FJQUtBS0lBUkVBQUNrQ0JDQURJQU1vQWdBb0FvZ0JFUUFBS1FJRWhVS0FnSUNBZ0lBQ2cwSUFVZzBBSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQWdJQ0FCSU5RRFFFTElBQWdBVUhVbnhFUVdFRUJJUVFMQWtBQ1FBSkFBa0FnQWlBQ0tBSUFLQUtJQVJFQUFDa0NCQ0FESUFNb0FnQW9Bb2dCRVFBQUtRSUVoVUtBZ0lDQWdJQ0FPSU5DQUZJTkFDQUNJQUlvQWdBb0FvZ0JFUUFBS1FJRUlBTWdBeWdDQUNnQ2lBRVJBQUFwQWdTRlFvQ0FnSUNBZ0lEQUI0TkNBRklOQUNBQ0lBSW9BZ0FvQW9nQkVRQUFLQUlVSUFNZ0F5Z0NBQ2dDaUFFUkFBQW9BaFJ6UWY4ZmNRMEFJQUlnQWlnQ0FDZ0NpQUVSQUFBb0FoUWdBeUFES0FJQUtBS0lBUkVBQUNnQ0ZITkJnT0FCY1EwQUlBSWdBaWdDQUNnQ2lBRVJBQUFwQWhnZ0F5QURLQUlBS0FLSUFSRUFBQ2tDR0lWQ2dJRDhCNE5DQUZJTkFDQUNJQUlvQWdBb0FvZ0JFUUFBTXdFWUlBTWdBeWdDQUNnQ2lBRVJBQUF6QVJpRlFnQlNEUUFnQWlBQ0tBSUFLQUtJQVJFQUFCRHBBa1VOQVNBQ0lBSW9BZ0FvQW9nQkVRQUFLQUlNSUFNZ0F5Z0NBQ2dDaUFFUkFBQW9BZ3hHRFFFTElBQWdBVUh5bnhFUVdBd0JDeUFFRFFBZ0FoQ1FBaENiQlEwQklBTVFrQUlRbXdVTkFTQUNFSkFDSUFNUWtBSVFyZ3BGRFFFZ0FDQUJRWk9nRVJCWUlBRkI3SjBSRUJBZ0FpQUNLQUlBS0FMQUFSRUFBQkM1QVVIT2x4RVFFQm9NQVFzZ0FVSHNuUkVRRUNBQ0lBSW9BZ0FvQXNBQkVRQUFFTGtCUWF5Z0VSQVFJUUFnQlVFUWFpQUNJQUlvQWdBb0FuZ1JBQUFReWdFZ0FDQUZRUkJxRUxrQlFiQ2dFUkFRSVFBZ0JTQURJQU1vQWdBb0FuZ1JBQUFReWdFZ0FDQUZFTGtCUWJ1Z0VSQVFHaUFGRUJrYUlBVkJFR29RR1JvTElBVkJJR29rQUF1UEFnRUZmeU1BUVRCcklnUWtBQ0FFSUFFMkFpZ2dBQ2dDQUNFQklBUWdBQkJBTmdJSUlBRWdCRUVvYWlBRVFRaHFFSjhFUVFKMGFpRUJBa0FnQWlBREVNd05JZ1ZCQVVnTkFDQUZJQUFRR3lnQ0FDQUFLQUlFSWdaclFRSjFUQVJBSUFRZ0F6WUNDQ0FGSUFZZ0FXc2lDRUVDZFNJSFNnUkFJQVFnQWpZQ0NDQUVRUWhxSUFjUXh3VWdBQ0FFS0FJSUlBTWdCU0FIYXhDSkdDQUlRUUZJRFFJTElBQWdBU0FHSUFFZ0JVRUNkR29RaUJnZ0FpQUVLQUlJSUFFUTJCY01BUXNnQUJBN0lRWWdCRUVJYWlBQUlBQVFGaUFGYWhESkJTQUJJQUFvQWdCclFRSjFJQVlRc1FZaUJTQUNJQU1RaHhnZ0FDQUZJQUVRaGhnaEFTQUZFSzhHQ3lBQkVHRWFJQVJCTUdva0FBdHBBUUovSUFBUWl3UWdBU2dDQkNFRElBQVFHeUFBS0FJQUlBSWdBVUVFYWlJRUVQWU5JQUFRR3lBQ0lBQW9BZ1FnQVVFSWFpSUNFTjBYSUFBZ0JCQXVJQUJCQkdvZ0FoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVLY0JFUGtGSUFNTFp3RUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnQWdBeUFCTmdJSUlBQW9BaEFoQVNBRFFRaHFJQU1RSGdSQUEwQWdBU0FBS0FJSUlBTW9BZ2dRb1FVZ0FDQUFLQUlJUVF4cU5nSUlJQU5CQ0dvUW5BVWdBMEVJYWlBREVCNE5BQXNMSUFOQkVHb2tBQXRXQVFKL0lBRWdBQ2dDQkNJRklBTnJRUXh0UVF4c2FpSUVJQUpKQkVBZ0JDRURBMEFnQUJBYklBQW9BZ1FnQXhDZ0JTQUFJQUFvQWdSQkRHbzJBZ1FnQTBFTWFpSURJQUpKRFFBTEN5QUJJQVFnQlJEY0Z3c2lBQ01BUVJCcklnTWtBQ0FBRUJzZ0FTQUNJQUJCQkdvUTN4Y2dBMEVRYWlRQUN5TUFJQUFnQVVjRVFDQUJFQnNhSUFBUUd4b2dBQ0FCRU9jRElBRVFnUUVRNkJjTEMxMEJBWDhqQUVFUWF5SURKQUFnQXlBQ05nSUFJQU1nQVRZQ0NDQUFFSUVCSVFFZ0EwRUlhaUFERUI0RVFBTkFJQUFnQVNBRFFRaHFFRmNpQWlBQ0VOc1hJQU5CQ0dvUXFRRWdBMEVJYWlBREVCNE5BQXNMSUFOQkVHb2tBQXZGQWdJR2Z3RitJQUlRRmlFSklBTVFGZ1JBQTBCQkFDRUhRUUVoQ0FKQUlBa0VRQU5BSUFJZ0J4QVJLQUlBSWdRZ0JDZ0NBQ2dDTUJFQUFDRUVJQU1nQmhBUktBSUFJZ1VnQlNnQ0FDZ0NNQkVBQUNFRklBUWdCQ2dDQUNnQ3dBRVJBQUFnQlNBRktBSUFLQUxBQVJFQUFCQ1lBZ1JBQWtBZ0JCQ1FBaENiQlVVTkFDQUZFSkFDRUpzRkRRQWdCQ0FGRUpBQ0VOQU5Dd0pBSUFRZ0JDZ0NBQ2dDaEFFUkFBQVE2UUlOQUNBRklBVW9BZ0FvQW9RQkVRQUFFT2tDUlEwQUlBVWdCU2dDQUNnQ2hBRVJBQUFwQWhnaENpQUVJQVFvQWdBb0FvUUJFUUFBSUFvOUFSZ0xJQUFnQkNBRUtBSUFLQUo4RVFBQUlBVWdCU2dDQUNnQ2VCRUFBQkRORFNBQUlBRWdCQ0FGRUlvWVFRQWhDQXNnQjBFQmFpSUhJQWxIRFFBTElBaEZEUUVMSUFJZ0F5QUdFQkVRM0FFTElBWkJBV29pQmlBREVCWkpEUUFMQ3d2T0FnRUZmeU1BUVNCcklnVWtBQ0FDRUJaQkFVY0VRQU5BUVFBaEJ5QURFQlpCQVVjRVFBTkFBa0FnQWlBSUVCRW9BZ0FpQkNBRUtBSUFLQUlZRVFBQUlnUkZJQU1nQnhBUktBSUFJZ1lnQmlnQ0FDZ0NHQkVBQUNJR1JYSU5BQ0FFS0FKb1FRUkhEUUFnQmlnQ2FFRUVSdzBBSUFRZ0JDZ0NBQ2dDeUFFUkFBQWdCaUFHS0FJQUtBTElBUkVBQUJDWUFrVU5BQ0FBSUFGQmk1MFJFRmdnQVVIc25SRVFFQ0FDSUFnUUVTZ0NBQ0lFSUFRb0FnQW9BaGdSQUFBaUJDQUVLQUlBS0FMSUFSRUFBQkM1QVVIT2x4RVFFQm9MSUFkQkFXb2lCeUFERUJaQmYycEpEUUFMQ3lBSVFRRnFJZ2dnQWhBV1FYOXFTUTBBQ3dzZ0JTQUNFREkyQWdnZ0JTQUZRUWhxUVFFUWhnYzJBaEFnQlVFWWFpQUZRUkJxRUdjaEFDQURFRUFoQVNBRklBTVFNallDQUNBRlFRRVFoZ2NoQXlBQ0lBQW9BZ0FnQVNBREVJc1lJQVZCSUdva0FBdFZBUUovSXdCQk1Hc2lCQ1FBSUFSQkNHb2lBMEVBRU1nQ0lBTWdBVFlDSkNBRElBQTJBaUFnQTBIRXNSRTJBZ0FnQXlFQUlBSW9Ba0FpQVNBQUlBRW9BZ0FvQWdnUkFRQWdBQkNhQWhvZ0JFRXdhaVFBQzVJQkFRTi9Jd0JCMEFCcklnUWtBQ0FFUVNocUlnTkJBQkRJQWlBRFFRQTJBaVFnQXlBQk5nSWdJQU5CM0xBUk5nSUFJQUFvQWtBaUJTQURJQVVvQWdBb0FnZ1JBUUFnQWlBREtBSWtOZ0lBSUFSQkFCRElBaUFFSUFFMkFpQWdCRUdRc1JFMkFnQWdCQ0VCSUFBUThnVWlBQ0FCSUFBb0FnQW9BZ2dSQVFBZ0FSQ2FBaG9nQXhDYUFob2dCRUhRQUdva0FBdVdBZ0VGZnlNQVFUQnJJZ1FrQUNBRUlBRTJBaWdnQUNnQ0FDRUJJQVFnQUJCQU5nSUlJQUVnQkVFb2FpQUVRUWhxRVAwSVFReHNhaUVCQWtBZ0FpQURFT0FYSWdWQkFVZ05BQ0FGSUFBUUd5Z0NBQ0FBS0FJRUlnWnJRUXh0VEFSQUlBUWdBellDQ0NBRklBWWdBV3NpQ0VFTWJTSUhTZ1JBSUFRZ0FqWUNDQ0FFSUFRb0FnZ2dCMEVNYkdvMkFnZ2dBQ0FFS0FJSUlBTWdCU0FIYXhDUEdDQUlRUUZJRFFJTElBQWdBU0FHSUFFZ0JVRU1iR29RamhnZ0FpQUVLQUlJSUFFUTNoY01BUXNnQUJBYklRWWdCRUVJYWlBQUlBQVFwd0VnQldvUWpnY2dBU0FBS0FJQWEwRU1iU0FHRUkwSElnVWdBaUFERUkwWUlBQWdCU0FCRUl3WUlRRWdCUkNNQ1FzZ0FSQmhHaUFFUVRCcUpBQUxYUUVCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ0FnQXlBQk5nSUlJQUFRZ1FFaEFTQURRUWhxSUFNUUhnUkFBMEFnQUNBQklBTkJDR29RVnlJQ0lBSVE1QmNnQTBFSWFoQ3BBU0FEUVFocUlBTVFIZzBBQ3dzZ0EwRVFhaVFBQzdBQ0FRSi9Jd0JCTUdzaUJDUUFJQVFnQXpZQ0dDQUVJQUkyQWlBZ0JFRW9haUFCRURFaEF5QUVRU0JxSUFSQkdHb1FIZ1JBSUFSQkNHb2dBQkFiRVB3TElBUW9BZ2hCQ0dvZ0JFRWdhaEJFRU00TklBTWdCQ0FFS0FJSUVERW9BZ0EyQWdBZ0JFRUlhaEJmR2lBRUlBTW9BZ0FpQlRZQ0FDQUVRU0JxRVBFQlFRRWhBaUFFUVNCcUlBUkJHR29RSGdSQUEwQWdCRUVJYWtFd0VDWVF6UW9nQkNnQ0NFRUlhaUFFUVNCcUVFUVF6ZzBnQkNnQ0FDSUZJQVFvQWdnMkFnUWdCQ2dDQ0NBRk5nSUFJQUpCQVdvaEFpQUVRUWhxRUY4YUlBUkJJR29ROFFFZ0JCRHhBU0FFUVNCcUlBUkJHR29RSGcwQUN5QUVLQUlBSVFVTElBRWdBeWdDQUNBRkVNY0tJQUFRR3lJQUlBQW9BZ0FnQW1vMkFnQWdCRUVJYWhENkN3c2dBeWdDQUJvZ0JFRXdhaVFBQzU0Q0FRWi9Jd0JCSUdzaUJDUUFBa0FnQWlnQ1FDSUZSUTBBSUFBb0FrQWlBMFVFUUNBQUlBVTJBa0FNQVFzZ0FDQUFLQUxRQkNBQ0tBTFFCR28yQXRBRUlBQWdBQ2dDM0FRZ0FpZ0MzQVJxTmdMY0JDQURJQU1vQWdBb0FoZ1JBQUFpQXlBREtBSUFLQUs4QVJFQUFDRUZJQUlvQWtBaUF5QURLQUlBS0FJWUVRQUFJZ01nQXlnQ0FDZ0N2QUVSQUFBaEJpQUFFUElGSWdNZ0F5Z0NBQ2dDdkFFUkFBQWhCeUFDRVBJRklnTWdBeWdDQUNnQ3ZBRVJBQUFoQ0NBQUlBUkJFR29RMFFVaUF5QUVRUXhxRUpVWUlBTWdCQ2dDREVFQmFpQUNFSlFZSUFBZ0FTQUZJQVlRa3hnZ0FDQUJJQWNnQ0JDU0dDQUFRZEFHYWlBQ1FkQUdhaUlBRU5FQ0lBQVFmaENSR0NBRElBTVFQQkR2Q0FzZ0JFRWdhaVFBQzlJT0FRVi9Jd0JCSUdzaUJTUUFJQUFvQWdBZ0FpZ0NBRWNFUUNBQUlBRkIvWmNSRUZnTEFrQWdBQ2dDUUVVRVFDQUFJQUlvQWlnMkFpZ2dBQ0FDS0FJc05nSXNJQUJCeEFCcUlBSkJ4QUJxRUpBWURBRUxBa0FnQUJDSEJTQUNFSWNGYzBFQlJnUkFJQUFnQVVIdG1CRVFXQXdCQ3lBQ0tBSW9RUVJIRFFBZ0FFRUVOZ0lvQ3lBQUlBQkJMR29nQWtFc2FoQ21BU2dDQURZQ0xDQUFRY1FBYWlBQ1FjUUFhaUlERU5FQ0lBTVFmaENYR0FzZ0FDQUFRVEJxSUFKQk1Hb1FVaWdDQURZQ01DQUFRVFJxSWdNZ0F5QUNRVFJxRUtZQktBSUFOZ0lBSUFCQk9Hb2lBeUFESUFKQk9Hb1FwZ0VvQWdBMkFnQWdBRUU4YWlJRElBTWdBa0U4YWhDbUFTZ0NBRFlDQUNBQUlBSW9BdEFESUFBb0F0QURhallDMEFNZ0FDQUFLQUxVQXlBQ0tBTFVBMm8yQXRRREFrQWdBaWdDakFRaUEwRi9SZzBBSUFBb0Fvd0VJZ1JCZjBZRVFDQUFJQU0yQW93RURBRUxJQU1nQkVZTkFDQUFJQUZCbDVrUkVGZ0xJQUlvQXBBRUlRTUNRQ0FBS0FLUUJDSUVRWDlHQkVBZ0FDQUROZ0tRQkF3QkN5QURJQVJHRFFBQ1FDQUFLQUlBSWdOQmYyb2lCRUVDU3dSQUlBTkJEVWNOQWd3QkN3SkFJQVJCQVdzT0FnSUJBQXNnQUNBQlFmdVpFUkJZREFFTElBQWdBVUhTbVJFUVdBc2dBaWdDMkFRaEF3SkFJQUFvQXRnRUlnUkJmMFlFUUNBQUlBTTJBdGdFREFFTElBTWdCRVlOQUNBQUtBSUFRUTFIRFFBZ0FDQUJRYUNhRVJCWUN5QUNLQUtVQkNFREFrQWdBQ2dDbEFRaUJFVUVRQ0FBSUFNMkFwUUVEQUVMSUFNZ0JFWU5BQ0FBSUFGQnk1b1JFRmdMSUFJb0FwZ0VJUU1DUUNBQUtBS1lCQ0lFUlFSQUlBQWdBellDbUFRTUFRc2dBeUFFUmcwQUlBQWdBVUh4bWhFUVdBc0NRQ0FBTFFDZEJDQUNMUUNkQkVZRVFDQUFMUUNjQkNBQ0xRQ2NCRVlOQVFzZ0FDQUJRWmliRVJCWUN5QUNLQUtnQkNFREFrQWdBQ2dDb0FRaUJFVUVRQ0FBSUFNMkFxQUVEQUVMSUFNZ0JFWU5BQ0FBSUFGQnpwc1JFRmdMSUFJb0FxUUVJUU1DUUNBQUtBS2tCQ0lFUlFSQUlBQWdBellDcEFRTUFRc2dBeUFFUmcwQUlBQWdBVUh4bXhFUVdBc2dBaTBBckFRRVFDQUFRUUU2QUt3RUMwRUFJUU1EUUFKQUFrQWdBQ0FEYWlJRUxRRHNBdzBBSUFJZ0Eyb3RBT3dEUlEwQUlBQWdBMEVDZENJR2FpQUNJQVpxS0FMZ0F6WUM0QU1nQkVFQk9nRHNBd3dCQ3lBQUlBTkJBblFpQkdvb0F1QURJQUlnQkdvb0F1QURSZzBBSUFBZ0FVR1JuQkVRV0FzZ0FpQURRUUowSWdacUtBTHdBeUVFQWtBZ0FDQUdhaUlHS0FMd0F5SUhRWDlHQkVBZ0JpQUVOZ0x3QXd3QkN5QUVJQWRHRFFBZ0FDQUJRYXFjRVJCWUN5QURRUUZxSWdOQkEwY05BQXNnQWkwQXJRUUVRQ0FBUVFFNkFLMEVDeUFDTFFDdUJBUkFJQUJCQVRvQXJnUUxJQUlvQXJBRUlRTUNRQ0FBS0FLd0JDSUVSUVJBSUFBZ0F6WUNzQVFNQVFzZ0F5QUVSZzBBSUFBZ0FVSFduQkVRV0FzZ0FpMEEzQU1FUUNBQVFRRTZBTndEQ3lBQ0xRQzBCQVJBSUFCQkFUb0F0QVFMSUFBZ0FDZ0N1QVFnQWlnQ3VBUnlOZ0s0QkNBQ0xRQzhCQVJBSUFCQkFUb0F2QVFMSUFCQndBUnFJZ1FRa2dJRVFDQUNRY0FFYWlFR1FRQWhBd05BQWtBZ0JDQURFR3NvQWd4Qi8vOEFSZ1JBSUFZZ0F4QnJLQUlNSVFjZ0JDQURFR3NnQnpZQ0RBd0JDeUFFSUFNUWF5Z0NEQ0FHSUFNUWF5Z0NERVlOQUNBQUlBRkI4cHdSRUZnTElBUWdBeEJyUVJCcUlBWWdBeEJyUVJCcUVGSW9BZ0FoQnlBRUlBTVFheUFITmdJUUlBWWdBeEJyTFFBVUJFQWdCQ0FERUd0QkFUb0FGQXNnQmlBREVHc3RBQlVFUUNBRUlBTVFhMEVCT2dBVkN5QUdJQU1RYXkwQUZnUkFJQVFnQXhCclFRRTZBQllMSUFOQkFXb2lBeUFFRUpJQ1NRMEFDd3NnQWkwQXpBUUVRQ0FBUVFFNkFNd0VDeUFDTFFETkJBUkFJQUJCQVRvQXpRUUxJQUl0QU00RUJFQWdBRUVCT2dET0JBc0NmeUFDUWVBRWFpRUJRUVlMQkVCQkFDRURBMEFnQVNBREVKVUpLQUlBQkVBZ0FDQURJQUVnQXhDVkNTZ0NBQkRzR1FzZ0EwRUJhaUlEUVFaSkRRQUxDd0ovSUFKQitBUnFJUUZCQmdzRVFFRUFJUU1EUUNBRklBRWdBeENYQnhEUkFqWUNHQ0FGSUFFZ0F4Q1hCeEIrTmdJUUlBVkJHR29nQlVFUWFoQ0lBUVJBQTBBZ0FDQURJQVZCR0dvUVZ5Z0NCQ0FGUVJocUVGY29BZ0FRNnhrZ0JVRVlhaENwQVNBRklBRWdBeENYQnhCK05nSVFJQVZCR0dvZ0JVRVFhaENJQVEwQUN3c2dBMEVCYWlJRFFRWkpEUUFMQ3lBRklBQkJ3QVZxSWdFUU1qWUNHQ0FGUVFocUlBVkJHR29RWnlFRElBSkJ3QVZxSWdRUVFDRUdJQVFRTWlFRUlBRWdBeWdDQUNBR0lBUVFsaGdnQWkwQXpBVUVRQ0FBUVFFNkFNd0ZDeUFDTFFETkJRUkFJQUJCQVRvQXpRVUxJQUl0QU5rREJFQWdBRUVCT2dEWkF3c2dBaTBBemdVRVFDQUFRUUU2QU00RkN5QUNMUURQQlFSQUlBQkJBVG9BendVTElBSXRBTkFGQkVBZ0FFRUJPZ0RRQlFzZ0FpMEEyZ01FUUNBQVFRRTZBTm9EQ3lBQ0xRRFJCUVJBSUFCQkFUb0EwUVVMSUFJdEFPUUZCRUFnQUVFQk9nRGtCUXNnQWkwQTVRVUVRQ0FBUVFFNkFPVUZDeUFDTFFEbUJRUkFJQUJCQVRvQTVnVUxJQVZCSUdva0FBdWVBUUVDZnlNQVFSQnJJZ01rQUFKQUlBSW9Bc3dEUVFGSURRQWdBQ2dDekFOQkFVNEVRQ0FBSUFGQjBKY1JFRmdNQVFzZ0FFRUVhaUFDRUNVUWhnSWdBRUVRYWlBQ0VFTVFoZ0lMSUFBZ0FpZ0N6QU1nQUNnQ3pBTnFOZ0xNQXlBRElBQkJIR29pQUJCaE5nSUFJQU5CQ0dvZ0F4Qm5JUUVnQWtFY2FpSUNFSXdDSVFRZ0FoQmhJUUlnQUNBQktBSUFJQVFnQWhDWUdDQURRUkJxSkFBTFFRRURmeU1BUVNCcklnSWtBQ0FDUVJocUVLY0hJUU5CQUNBQ1FRaHFRYkQvQ0JBaUlnUWdBQ0FEUVFBZ0FSRDVDQ0VBSUFRUUdSb2dBa0VnYWlRQUlBQUxWQUVDZnlNQVFSQnJJZ1FrQUNBQ0JFQURRQ0FESUFJZ0FCQWJJQUpCRUdvZ0FSQ2dCQ0lGR3lFRElBSkJCRUVBSUFVYmFpZ0NBQ0lDRFFBTEN5QUVRUWhxSUFNUU1TZ0NBQ0VBSUFSQkVHb2tBQ0FBQzMwQkFuOGpBRUZBYWlJREpBQWdBUUovSUFOQkNHb2lBa0VBRU1nQ0lBSkJBRG9BSkNBQ0lBQkJyS3NCYWpZQ0lDQUNRWkNYRVRZQ0FDQUNDeUFCS0FJQUtBSUlFUUVBSUFJdEFDUUVRQ0FBSUFKQktHcEJzNVlSUWFhV0VVR3lsaEZCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBaENhQWhvZ0EwRkFheVFBQ3pjQUlBSW9BbWhCQTBZRVFDQUFRUUU2QUNRZ0FDQUNJQUlvQWdBb0FnQVJBQUFpQVNrQ0FEY0NLQ0FBSUFFcEFnZzNBakFMUVFFTFpnRUJmeU1BUVJCcklnSWtBQ0FDSUFBZ0FTQUFFRHdnQUJBbEVKMFlOZ0lJSUFJZ0FCQ0JBVFlDQUFKL0FrQWdBa0VJYWlBQ0VCNUZEUUFnQUJBYklBRWdBa0VJYWhCWEVLQUVEUUFnQWlnQ0NBd0JDeUFBRUlFQkN5RUFJQUpCRUdva0FDQUFDMzhCQW44akFFRVFheUlDSkFBZ0FDZ0NJQ0VESUFJZ0FTQUJLQUlBS0FLNEFSRUFBRFlDQkNBQ0lBTWdBa0VFYWhDZ0dEWUNDQ0FDSUFBb0FpQVFnUUUyQWdBZ0FrRUlhaUFDRUpjQ0JFQWdBRUVCT2dBa0lBQWdBU0FCS0FJQUtBSUFFUUFBSWdFcEFnQTNBaWdnQUNBQktRSUlOd0l3Q3lBQ1FSQnFKQUFMS1FBZ0FFRUFFTWdDSUFCQkFEb0FLQ0FBSUFJMkFpUWdBQ0FCTmdJZ0lBQkIzSllSTmdJQUlBQUxaUUVCZnlNQVFVQnFJZ1FrQUNBRUlBSWdBeENpR0NFQ0FrQWdBVVVOQUNBQklBSWdBU2dDQUNnQ0NCRUJBQ0FDTFFBb1JRMEFJQUFnQWtFc2FrR0lsaEZCcHBZUlFiS1dFVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUNFSm9DR2lBRVFVQnJKQUFMbWdJQkFuOENRQ0FDS0FKb1FRTkhEUUFnQWlBQ0tBSUFLQUs4QVJFQUFDSUVFQlpCQVVnTkFFRUFJUUVEUUFKQUlBUWdBUkFSS0FJQUlnTWdBeWdDQUNnQ01CRUFBRVVOQUNBRUlBRVFFU2dDQUNJRElBTW9BZ0FvQWpBUkFBQWlBeUFES0FJQUtBSzRBUkVBQUNBQUtBSWdSdzBBSUFBb0FpUWdBaUFDS0FJQUtBTElBUkVBQUVFQVFRQVFyQUVpQXlBREtBSUFLQUljRVFBQUlnTWdBU0FES0FJQUtBS2NBUkVEQUNnQ0JDSURJQU1vQWdBb0Fpd1JBQUFwQWdSQ1A0TkNEbElFUUNBRElBTW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0QxSU5BUXNnQUVFQk9nQW9JQUFnQWlBQ0tBSUFLQUlBRVFBQUlnTXBBZ0EzQWl3Z0FDQURLUUlJTndJMEN5QUJRUUZxSWdFZ0JCQVdTQTBBQ3d0QkFRdUdBUUFDUUNBQ0VQWUxSUTBBSUFJZ0FpZ0NBQ2dDdkFFUkFBQWlBU0FCS0FJQUtBSXdFUUFBUlEwQUlBSWdBaWdDQUNnQ3ZBRVJBQUFpQVNBQktBSUFLQUl3RVFBQUlnRWdBU2dDQUNnQ3VBRVJBQUFnQUNnQ0lFY05BQ0FBUVFFNkFDZ2dBQ0FDSUFJb0FnQW9BZ0FSQUFBaUFTa0NBRGNDTENBQUlBRXBBZ2czQWpRTFFRRUxoZ0VBQWtBZ0FoRDJDMFVOQUNBQ0lBSW9BZ0FvQXNBQkVRQUFJZ0VnQVNnQ0FDZ0NNQkVBQUVVTkFDQUNJQUlvQWdBb0FzQUJFUUFBSWdFZ0FTZ0NBQ2dDTUJFQUFDSUJJQUVvQWdBb0FyZ0JFUUFBSUFBb0FpQkhEUUFnQUVFQk9nQW9JQUFnQWlBQ0tBSUFLQUlBRVFBQUlnRXBBZ0EzQWl3Z0FDQUJLUUlJTndJMEMwRUJDN2tJQVFSL0l3QkJNR3NpQXlRQUlBRkJFR29pQWtHeGtCRVFFQ0FBS0FJc0VKVUJRZHl4RUJBUUdnSkFJQUJCeEFCcUlnUVEwUVJGRFFBZ0F5QUVFTkVDTmdJQUlBTWdCQkIrTmdJb0lBTWdBMEVvYWhBZVJRMEFBMEFDZnlBQ1FjS1FFUkFRSWdVZ0F4QlhFUG9RSUFVTFFkeXhFQkFRR2lBREVLa0JJQU1nQkJCK05nSW9JQU1nQTBFb2FoQWVEUUFMQ3lBQUxRQzhCQVJBSUFKQnpaQVJFQkFhQ3dKQUlBQW9BZ0JCZjJvaUJFRU1TdzBBQWtBQ1FBSkFBa0FDUUFKQUlBUkJBV3NPREFFQ0F3VUdCZ1lHQmdZRkJBQUxJQUpCMnBBUkVCQWdBQ2dDa0FRUWxRRkIzTEVRRUJBYUlBQW9BcFFFQkVBZ0FrSG1rQkVRRUNBQUtBS1VCQkNyQVJBUVFkeXhFQkFRR2dzZ0FDZ0NvQVFFUUNBQ1FmbVFFUkFRSUFBb0FxQUVFTjRERUJCQjNMRVFFQkFhQ3lBQUtBS2tCRVVOQlNBQ1FZdVJFUkFRSUFBb0FxUUVFSllFRUJCQjNMRVFFQkFhREFVTElBSkI1cEFSRUJBZ0FDZ0NsQVFRcXdFUUVFSGNzUkFRRUJvZ0FrSDVrQkVRRUNBQUtBS2dCQkRlQXhBUVFkeXhFQkFRR2lBQ1FZdVJFUkFRSUFBb0FxUUVFSllFRUJCQjNMRVFFQkFhSUFBdEFLd0VSUTBFSUFKQm5aRVJFQkFhREFRTElBSkJyNUVSRUJBZ0FDZ0NqQVFRbFFGQjNMRVFFQkFhSUFKQnZwRVJFQkFnQUNnQ2tBUVFsUUZCM0xFUUVCQWFJQUpCNXBBUkVCQWdBQ2dDbEFRUXF3RVFFRUhjc1JBUUVCb2dBa0hPa1JFUUVDQUFLQUtZQkJDckFSQVFRZHl4RUJBUUdnd0RDeUFBTFFDY0JBUkFJQUpCNHBFUkVCQWFDeUFBTFFDZEJBUkFJQUpCaUpJUkVCQWFDeUFBTFFDdEJBUkFJQUpCcTVJUkVCQWFDeUFBTFFDdUJBUkFJQUpCeDVJUkVCQWFDeUFBS0FLd0JBUkFJQUpCNHBJUkVCQWdBQ2dDc0FRUTFRa1FFRUhjc1JBUUVCb0xJQUFvQXJnRUJFQWdBa0hwa2hFUUVCcEJBQ0VFQTBBZ0FDZ0N1QVFnQkhaQkFYRUVRQ0FDUWUrU0VSQVFJQVFRMUFrUUVCb0xJQVJCQVdvaUJFRVFSdzBBQ3lBQ1FkeXhFQkFRR2dzZ0FDZ0NxQVJGRFFJZ0FrSHhraEVRRUNBQUtBS29CQkNWQkJBUVFkeXhFQkFRR2d3Q0N5QUNRYjZSRVJBUUlBQW9BcEFFRUpVQlFkeXhFQkFRR2lBQ1FZZVRFUkFRSUFBb0F0Z0VFSlVCUWR5eEVCQVFHaUFDUWM2UkVSQVFJQUFvQXBnRUVLc0JFQkJCM0xFUUVCQWFDeUFDUVptVEVSQVFJQUFvQXVBREVKVUJRYWlURVJBUUlBQW9BdVFERUpVQlFhaVRFUkFRSUFBb0F1Z0RFSlVCUWZtTkVSQVFHZ0pBSUFBb0F2QURRWDlIRFFBZ0FDZ0M5QU5CZjBjTkFDQUFLQUw0QTBGL1JnMEJDeUFDUWF1VEVSQVFJQUFvQXZBREVKVUJRYWlURVJBUUlBQW9BdlFERUpVQlFhaVRFUkFRSUFBb0F2Z0RFSlVCUWZtTkVSQVFHZ3NnQUNnQ1FBUkFJQU5CQUJESUFpQURRUUEyQWlRZ0F5QUJOZ0lnSUFOQnlKTVJOZ0lBSUFNaEFTQUFMUURsQlFSQUlBRkJBUkRmQndzZ0FDZ0NRQ0lBSUFFZ0FDZ0NBQ2dDQ0JFQkFDQUJFSm9DR2dzZ0EwRXdhaVFBQytVQkFRSi9JQUFvQWlBaUF5QUNJQUFvQWdnUTh3RWdBMEVRYWlJQlFabVFFUkFRR2lBQ0xRQWNCRUFnQVVHYmpSRVFFQm9MSUFJdEFCMEVRQ0FCUWFXTkVSQVFHZ3NnQVVIY3NSQVFFQm9nQXlBQ0lBQW9BZ2dROHdFZ0FVR2drQkVRRUJvZ0FDQUFLQUlJUVFGcU5nSUlJQUlnQWlnQ0FDZ0NkQkVBQUNJRUlBQWdCQ2dDQUNnQ0NCRUJBQ0FBSUFBb0FnaEJmMm9pQkRZQ0NDQURJQUlnQkJEekFTQUJRYXVRRVJBUUdpQUFJQUFvQWdoQkFXbzJBZ2dnQWlBQ0tBSUFLQUo0RVFBQUlnRWdBQ0FCS0FJQUtBSUlFUUVBSUFBZ0FDZ0NDRUYvYWpZQ0NFRUFDNUVCQVFGL0lBQW9BaUFpQVNBQ0lBQW9BZ2dROHdFZ0FVRVFhaUlCSUFJb0FoUkJ2bnhxSWdOQkJrMEVmeUFEUVFKMFFleVZFV29vQWdBRlFmQ1BFUXNRRUJvQ1FDQUNLQUlZQkVBZ0FVR0hrQkVRRUJvZ0FDQUFLQUlJUVFGcU5nSUlJQUlvQWhnaUFTQUFJQUVvQWdBb0FnZ1JBUUFnQUNBQUtBSUlRWDlxTmdJSURBRUxJQUZCM0xFUUVCQWFDMEVBQzlnQ0FRRi9JQUFvQWlBaUFTQUNJQUFvQWdnUTh3RWdBVUVRYWlJQlFmeU5FUkFRR2lBQ0xRQWdSUVJBSUFGQmtZNFJFQkFhQ3lBQlFaYU9FUkFRR2lBQ0xRQWhCRUFnQVVHampoRVFFQm9MSUFJdEFDSUVRQ0FCUWF5T0VSQVFHZ3NnQWlnQ0pBUkFJQUZCdVk0UkVCQWFJQUVnQWlnQ0pCQ1ZBUm9MSUFGQjNMRVFFQkFhSUFBZ0FDZ0NDRUVCYWlJRE5nSUlJQUFvQWlBZ0FpQURFUE1CQWtBZ0FpZ0NHQVJBSUFGQng0NFJFQkFhSUFJb0FoZ2lBeUFBSUFNb0FnQW9BZ2dSQVFBTUFRc2dBVUhYamhFUUVCb0xJQUFvQWlBZ0FpQUFLQUlJRVBNQkFrQWdBaWdDRkFSQUlBRkI2bzRSRUJBYUlBSW9BaFFpQXlBQUlBTW9BZ0FvQWdnUkFRQU1BUXNnQVVIMWpoRVFFQm9MSUFJb0Fod0VRQ0FBS0FJZ0lBSWdBQ2dDQ0JEekFTQUJRWU9QRVJBUUdpQUNLQUljSWdFZ0FDQUJLQUlBS0FJSUVRRUFDeUFBSUFBb0FnaEJmMm8yQWdoQkFBdTdBUUVDZnlNQVFSQnJJZ0lrQUNBQUtBSWdJQUVnQUNnQ0NCRHpBU0FBS0FJZ1FSQnFRZk9ORVJBUUlBRWdBU2dDQUNnQ3dBRVJBQUFRdVFGQjlZMFJFQkFoQXlBQ0lBRVFxZ0lnQXlBQ0VMa0JRZm1ORVJBUUdpQUNFQmthQWtBZ0FSQ1FBaENiQlVVRVFDQUFLQUlnSUFFZ0FSQ1FBaUFBS0FJa0lBQW9BZ2hCQVdvUXp3ME1BUXNnQVNnQ2lBRkZEUUFnQUNBQkVPSURJQUVvQW9nQklnRWdBQ0FCS0FJQUtBSUlFUUVBSUFBUTh3SUxJQUpCRUdva0FBdXdBd01FZndGK0FYd2pBRUh3QW1zaUJDUUFBa0FnQWIxQy8vLy8vLy8vLy8vL0FJTkNnSUNBZ0lDQWdQai9BRkVFUUNBQVFSQnFJUUFnQVVRQUFBQUFBQUFBQUdOQkFYTkZCRUFnQUVIQmxSRVFFQm9NQWdzZ0FFSEpsUkVRRUJvTUFRc2dBYjFDLy8vLy8vLy8vLy8vQUlOQ2dJQ0FnSUNBZ1BqL0FGWUVRQ0FBUVJCcVFkR1ZFUkFRR2d3QkN5QUVJQUU1QXdBQ1FDQUVRUkJxUWRRQ1FkaVZFVUhibFJGQjI1VVJRZGlWRVNBQm1TSUlSQUFBQUtLVUdtMUNaQnNnQ0VUeGFPT0l0ZmprUG1NYklBRkVBQUFBQUFBQUFBQmhJQUVnQVdKeUd5QUVFQ2NpQTBFR1NBMEFJQU1nQkVFUWFtb2lBMEY3YWkwQUFFSGxBRWNOQUNBRFFYeHFMUUFBUVZWcUlnVkJBa3NnQlVFQmEwVnlEUUFnQTBGOWFpSUZMUUFBUVRCSERRQWdCU0FEUVg1cUlnVXRBQUE2QUFBZ0EwRi9haUlETFFBQUlRWWdBMEVBT2dBQUlBVWdCam9BQUFzZ0FFRVFhaUlESUFSQkVHb1FFQm9nQWtFQlJ3MEFJQUc5SVFjZ0EwSGlsUkVRRUJwQkFDRUFBMEFnQTBIbWxSRkI2SlVSSUFkQ0FGTWJFQkFhSUFkQ0FZWkNBWVFoQnlBQVFRRnFJZ0JCd0FCSERRQUxDeUFFUWZBQ2FpUUFDenNBSUFBb0FpQWdBU0FBS0FJSUVQTUJJQUFvQWlCQkVHcEI2STBSRUJBYUlBQW9BaUFnQVNBQkVFc2dBQ2dDSkNBQUtBSUlRUUZxRU04TkMvVUNBUU4vSXdCQkVHc2lCQ1FBSUFBb0FpQWlCU0FDSUFBb0FnZ1E4d0VnQlVFUWFpSUJRZStNRVJBUUdpQUJRZGV4RUJBUUlRTWdCQ0FDRUtvQ0lBTWdCQkM1QVVIYXNSQVFFQm9nQkJBWkdpQUNMUUIwUlFSQUlBRkJpWTBSRUJBYUN5QUNMUUIxQkVBZ0FVR2JqUkVRRUJvTElBSXRBSFlFUUNBQlFhV05FUkFRR2dzZ0FVSGNzUkFRRUJvZ0FDQUFLQUlJUVFGcUlnTTJBZ2dnQlNBQ0lBTVE4d0VnQVVHempSRVFFQm9nQWlBQ0tBSUFLQUs0QVJFQUFDSURJQUFnQXlnQ0FDZ0NDQkVCQUNBRklBSWdBQ2dDQ0JEekFRSkFJQUlnQWlnQ0FDZ0N2QUVSQUFBRVFDQUJRYjZORVJBUUdpQUNJQUlvQWdBb0Fyd0JFUUFBSWdNZ0FDQURLQUlBS0FJSUVRRUFEQUVMSUFGQnlZMFJFQkFhQ3lBQ0lBSW9BZ0FvQXNBQkVRQUFCRUFnQlNBQ0lBQW9BZ2dROHdFZ0FVSGNqUkVRRUJvZ0FpQUNLQUlBS0FMQUFSRUFBQ0lCSUFBZ0FTZ0NBQ2dDQ0JFQkFBc2dBQ0FBS0FJSVFYOXFOZ0lJSUFSQkVHb2tBRUVBQ3lZQkFYOGpBRUVRYXlJQkpBQWdBUkNrQlNBQklBQWdBUkNxQXlFQUlBRkJFR29rQUNBQUMvWTdBUUYvSXdCQkVHc2lBeVFBSUFBb0FpQWhBUUpBSUFJb0FtaEZCRUFnQVVFUWFrRUNRWUxxRUJDN0FRd0JDeUFCSUFJZ0FDZ0NDQkR6QVFKQUFrQWdBaWdDYUVGL2FpSUFRY1lGU3cwQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVFQmF3N0dCUUVFQXdYZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUtHQWQwQ2R0MEMzUUxkQXQwQzNRTGRBdDBDZEhWd2NYSnpBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FKNTNRTGRBdDBDM1FMZEF0MENlTjBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUozZW50OGZYNS8zUUxkQXZjQitBSDVBZDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBb0FCZ1FHQ0FkMENnd0dFQVlVQmxRR1dBWmNCM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMNkFmc0IvQUhkQW9jQjNRTGRBdDBDM1FMZEFvZ0JpUUhkQXQwQ2lnR0xBWXdCalFHT0FZOEJrQUhkQXBFQjNRTGRBdDBDM1FMZEFvUUNoUUtHQW9jQ2lBS0pBb29DaXdLTUFvMENqZ0tQQXBBQ2tRS1NBcE1DbEFLVkFwWUNsd0tZQXBrQ21nS2JBcHdDblFLZUFwOENvQUtoQXFJQ293S2tBcVVDcGdLbkFxZ0NxUUtxQXFzQ3JBS3RBcTRDcndLd0FyRUNzZ0t6QXJRQ3RRSzJBcmNDdUFLNUFyb0N1d0s4QXIwQ3ZnSy9Bc0FDd1FMQ0FzTUN4QUxGQXNZQ3h3TElBc2tDeWdMTEFzd0N6UUxPQXM4QzBBTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBcElCa3dHVUFkMEMzUUxkQXBnQm1RR2FBWnNCbkFHZEFaNEJud0dnQWFFQm9nSGRBdDBDM1FLakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdIZEF0MEMyUUxhQXRzQzNRTGRBdHdDM1FMZEF0MEMzUUxkQXQwQzNRTGRBaFllRWhvcUxpSW1EZ1lIQ0FrS01qTTBOVFkzT0RrNkN3d05EeEFSRXhRVkd4d2RLeXd0THpBeEZ4Z1pIeUFoSXlRbEp5Z3BPenc5UGo5QVFVSkRSRVZHUjBoSlNrdE1UVTVQVUZGU1UxUlZWbGRZV1ZwYlhGMWVYMkJoWW1Oa1pXWm5hR2xxYTJ4dDNRSnViOTBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBcXdCclFHdUFhOEJ1Z0c3QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0c0QWJrQjBRTFNBdU1CNndIZEF0MEN2QUc5QWI0QnZ3SGRBc0FCd1FIQ0FjTUJ4QUhGQWNZQnh3SElBY2tCeWdITEFjd0J6UUhPQWM4QjBBSFJBZElCMHdIVUFkVUIxZ0hYQWQwQzNRTGRBdGdCMmdIWkFkd0IzUUhiQWQ0QjN3SGdBZUVCNGdIZEF1UUI1UUhtQWVjQjZBSHBBZW9CM1FMZEF1d0I3UUh1QWU4QjhBSGRBdDBDM1FMeEFmSUI4d0gwQWZVQjlnSGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMVEF0UUMxUUxXQXRjQzJBTGRBdDBDM1FMZEF0MEMvUUgrQWQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQy93R0FBb0VDZ2dLREFnQUxJQUZCRUdwQm1lb1FFQkFhRE40Q0N5QUJRUkJxUWFQcUVCQVFHZ3pkQWdzZ0FVRVFha0d6NmhBUUVCb00yd0lMSUFGQkVHcEJ1ZW9RRUJBZ0FpQUNLQUlBS0FMSUFSRUFBQkM1QVJvTTJnSUxJQUZCRUdwQnorb1FFQkFnQWlBQ0tBSUFLQUxJQVJFQUFCQzVBUm9NMlFJTElBRkJFR3BCMytvUUVCQWFETmdDQ3lBQlFSQnFRZlhxRUJBUUdnelhBZ3NnQVVFUWFrR0Y2eEFRRUJvTTFnSUxJQUZCRUdwQmx1c1FFQkFhRE5VQ0N5QUJRUkJxUWFYckVCQVFHZ3pVQWdzZ0FVRVFha0cwNnhBUUVCb00wd0lMSUFGQkVHcEJ3K3NRRUJBYUROSUNDeUFCUVJCcVFkUHJFQkFRR2d6UkFnc2dBVUVRYWtIajZ4QVFFQm9NMEFJTElBRkJFR3BCOCtzUUVCQWFETThDQ3lBQlFSQnFRWUxzRUJBUUdnek9BZ3NnQVVFUWFrR1M3QkFRRUJvTXpRSUxJQUZCRUdwQm91d1FFQkFhRE13Q0N5QUJRUkJxUWJMc0VCQVFHZ3pMQWdzZ0FVRVFha0hEN0JBUUVCb015Z0lMSUFGQkVHcEIxT3dRRUJBYURNa0NDeUFCUVJCcVFlWHNFQkFRR2d6SUFnc2dBVUVRYWtIMjdCQVFFQm9NeHdJTElBRkJFR3BCaE8wUUVCQWFETVlDQ3lBQlFSQnFRWlR0RUJBUUdnekZBZ3NnQVVFUWFrR2s3UkFRRUJvTXhBSUxJQUZCRUdwQnRPMFFFQkFhRE1NQ0N5QUJRUkJxUWNidEVCQVFHZ3pDQWdzZ0FVRVFha0hYN1JBUUVCb013UUlMSUFGQkVHcEI2TzBRRUJBYURNQUNDeUFCUVJCcVFmbnRFQkFRR2d5L0Fnc2dBVUVRYWtHSTdoQVFFQm9NdmdJTElBRkJFR3BCbU80UUVCQWFETDBDQ3lBQlFSQnFRYWp1RUJBUUdneThBZ3NnQVVFUWFrRzQ3aEFRRUJvTXV3SUxJQUZCRUdwQnlPNFFFQkFhRExvQ0N5QUJRUkJxUWRydUVCQVFHZ3k1QWdzZ0FVRVFha0hzN2hBUUVCb011QUlMSUFGQkVHcEIvdTRRRUJBYURMY0NDeUFCUVJCcVFZL3ZFQkFRR2d5MkFnc2dBVUVRYWtHaDd4QVFFQm9NdFFJTElBRkJFR3BCcys4UUVCQWFETFFDQ3lBQlFSQnFRY1h2RUJBUUdneXpBZ3NnQVVFUWFrSFg3eEFRRUJvTXNnSUxJQUZCRUdwQjZlOFFFQkFhRExFQ0N5QUJRUkJxUWZ2dkVCQVFHZ3l3QWdzZ0FVRVFha0dOOEJBUUVCb01yd0lMSUFGQkVHcEJvUEFRRUJBYURLNENDeUFCUVJCcVFiTHdFQkFRR2d5dEFnc2dBVUVRYWtIRThCQVFFQm9NckFJTElBRkJFR3BCMXZBUUVCQWFES3NDQ3lBQlFSQnFRZVh3RUJBUUdneXFBZ3NnQVVFUWFrSDI4QkFRRUJvTXFRSUxJQUZCRUdwQmgvRVFFQkFhREtnQ0N5QUJRUkJxUVpqeEVCQVFHZ3luQWdzZ0FVRVFha0duOFJBUUVCb01wZ0lMSUFGQkVHcEJ1UEVRRUJBYURLVUNDeUFCUVJCcVFjbnhFQkFRR2d5a0Fnc2dBVUVRYWtIYThSQVFFQm9Nb3dJTElBRkJFR3BCNmZFUUVCQWFES0lDQ3lBQlFSQnFRZm54RUJBUUdneWhBZ3NnQVVFUWFrR0w4aEFRRUJvTW9BSUxJQUZCRUdwQm5mSVFFQkFhREo4Q0N5QUJRUkJxUWEveUVCQVFHZ3llQWdzZ0FVRVFha0cvOGhBUUVCb01uUUlMSUFGQkVHcEIwZklRRUJBYURKd0NDeUFCUVJCcVFlUHlFQkFRR2d5YkFnc2dBVUVRYWtIMThoQVFFQm9NbWdJTElBRkJFR3BCaGZNUUVCQWFESmtDQ3lBQlFSQnFRWlh6RUJBUUdneVlBZ3NnQVVFUWFrR244eEFRRUJvTWx3SUxJQUZCRUdwQnVmTVFFQkFhREpZQ0N5QUJRUkJxUWN2ekVCQVFHZ3lWQWdzZ0FVRVFha0hiOHhBUUVCb01sQUlMSUFGQkVHcEI3Zk1RRUJBYURKTUNDeUFCUVJCcVFmL3pFQkFRR2d5U0Fnc2dBVUVRYWtHUjlCQVFFQm9Na1FJTElBRkJFR3BCb2ZRUUVCQWFESkFDQ3lBQlFSQnFRYkgwRUJBUUdneVBBZ3NnQVVFUWFrSEQ5QkFRRUJvTWpnSUxJQUZCRUdwQjFmUVFFQkFhREkwQ0N5QUJRUkJxUWVmMEVCQVFHZ3lNQWdzZ0FVRVFha0gzOUJBUUVCb01pd0lMSUFGQkVHcEJpZlVRRUJBYURJb0NDeUFCUVJCcVFadjFFQkFRR2d5SkFnc2dBVUVRYWtHdDlSQVFFQm9NaUFJTElBRkJFR3BCdmZVUUVCQWFESWNDQ3lBQlFSQnFRYzMxRUJBUUdneUdBZ3NnQVVFUWFrSGY5UkFRRUJvTWhRSUxJQUZCRUdwQjhmVVFFQkFhRElRQ0N5QUJRUkJxUVlQMkVCQVFHZ3lEQWdzZ0FVRVFha0dUOWhBUUVCb01nZ0lMSUFGQkVHcEJwZllRRUJBYURJRUNDeUFCUVJCcVFiZjJFQkFRR2d5QUFnc2dBVUVRYWtISjloQVFFQm9NL3dFTElBRkJFR3BCMmZZUUVCQWFEUDRCQ3lBQlFSQnFRZTMyRUJBUUdnejlBUXNnQVVFUWFrSC85aEFRRUJvTS9BRUxJQUZCRUdwQmtmY1FFQkFhRFBzQkN5QUJRUkJxUWFQM0VCQVFHZ3o2QVFzZ0FVRVFha0cxOXhBUUVCb00rUUVMSUFGQkVHcEJ5ZmNRRUJBYURQZ0JDeUFCUVJCcVFkMzNFQkFRR2d6M0FRc2dBVUVRYWtIeDl4QVFFQm9NOWdFTElBRkJFR3BCZy9nUUVCQWFEUFVCQ3lBQlFSQnFRWmY0RUJBUUdnejBBUXNnQVVFUWFrR3IrQkFRRUJvTTh3RUxJQUZCRUdwQnYvZ1FFQkFhRFBJQkN5QUJRUkJxUWRINEVCQVFHZ3p4QVFzZ0FVRVFha0hsK0JBUUVCb004QUVMSUFGQkVHcEJpUGtRRUJBYURPOEJDeUFCUVJCcVFaejVFQkFRR2d6dUFRc2dBVUVRYWtHUnJ4QVFFQm9NN1FFTElBRkJFR3BCbzY4UUVCQWFET3dCQ3lBQlFSQnFRYml2RUJBUUdnenJBUXNnQVVFUWFrSFRyeEFRRUJvTTZnRUxJQUZCRUdwQjhhOFFFQkFhRE9rQkN5QUJRUkJxUWZldkVCQVFHZ3pvQVFzZ0FVRVFha0d3cmhBUUVCb001d0VMSUFGQkVHcEJ1ZmtRRUJBYURPWUJDeUFCUVJCcVFiNzVFQkFRR2d6bEFRc2dBVUVRYWtIMnpCQVFFQm9NNUFFTElBRkJFR3BCd3ZrUUVCQWFET01CQ3lBQlFSQnFRY2I1RUJBUUdnemlBUXNnQVVFUWFrSEsrUkFRRUJvTTRRRUxJQUZCRUdwQjBQa1FFQkFhRE9BQkN5QUJRUkJxUWRUNUVCQVFHZ3pmQVFzZ0FVRVFha0haK1JBUUVCb00zZ0VMSUFGQkVHcEI1UGtRRUJBYUROMEJDeUFCUVJCcVFlMzVFQkFRR2d6Y0FRc2dBVUVRYWtINStSQVFFQm9NMndFTElBRkJFR3BCaC9vUUVCQWFETm9CQ3lBQlFSQnFRWlQ2RUJBUUdnelpBUXNnQVVFUWFrR2MraEFRRUJvTTJBRUxJQUZCRUdwQmthNFFFQkFhRE5jQkN5QUJRUkJxUWFUNkVCQVFHZ3pXQVFzZ0FVRVFha0d5K2hBUUVCb00xUUVMSUFGQkVHcEJ2Zm9RRUJBYUROUUJDeUFCUVJCcVFjcjZFQkFRR2d6VEFRc2dBVUVRYWtIUytoQVFFQm9NMGdFTElBRkJFR3BCNFBvUUVCQWFETkVCQ3lBQlFSQnFRZnY2RUJBUUdnelFBUXNnQVVFUWFrR1AreEFRRUJvTXp3RUxJQUZCRUdwQm92c1FFQkFhRE00QkN5QUJRUkJxUWJiN0VCQVFHZ3pOQVFzZ0FVRVFha0hKK3hBUUVCb016QUVMSUFGQkVHcEIyUHNRRUJBYURNc0JDeUFCUVJCcVFldjdFQkFRR2d6S0FRc2dBVUVRYWtHRS9CQVFFQm9NeVFFTElBRkJFR3BCbFB3UUVCQWFETWdCQ3lBQlFSQnFRWm44RUJBUUdnekhBUXNnQVVFUWFrR2UvQkFRRUJvTXhnRUxJQUZCRUdwQm8vd1FFQkFhRE1VQkN5QUJRUkJxUWFqOEVCQVFHZ3pFQVFzZ0FVRVFha0d5L0JBUUVCb013d0VMSUFGQkVHcEJ2UHdRRUJBYURNSUJDeUFCUVJCcVFjYjhFQkFRR2d6QkFRc2dBVUVRYWtIUS9CQVFFQm9Nd0FFTElBRkJFR3BCMmZ3UUVCQWFETDhCQ3lBQlFSQnFRZVA4RUJBUUdneStBUXNnQVVFUWFrSHkvQkFRRUJvTXZRRUxJQUZCRUdwQmdmMFFFQkFhREx3QkN5QUJRUkJxUVl6OUVCQVFHZ3k3QVFzZ0FVRVFha0dZL1JBUUVCb011Z0VMSUFGQkVHcEJxZjBRRUJBYURMa0JDeUFCUVJCcVFiLzlFQkFRR2d5NEFRc2dBVUVRYWtIUS9SQVFFQm9NdHdFTElBRkJFR3BCNGYwUUVCQWFETFlCQ3lBQlFSQnFRZkw5RUJBUUdneTFBUXNnQVVFUWFrR0MvaEFRRUJvTXRBRUxJQUZCRUdwQmsvNFFFQkFhRExNQkN5QUJRUkJxUWFuK0VCQVFHZ3l5QVFzZ0FVRVFha0dEMWhBUUVCb01zUUVMSUFGQkVHcEJrdFlRRUJBYURMQUJDeUFCUVJCcVFhVFdFQkFRR2d5dkFRc2dBVUVRYWtHLy9oQVFFQm9NcmdFTElBRkJFR3BCeXY0UUVCQWFESzBCQ3lBQlFSQnFRZG4rRUJBUUdneXNBUXNnQVVFUWFrSG8vaEFRRUJvTXF3RUxJQUZCRUdwQjkvNFFFQkFhREtvQkN5QUJRUkJxUVliL0VCQVFHZ3lwQVFzZ0FVRVFha0dVL3hBUUVCb01xQUVMSUFGQkVHcEJvLzhRRUJBYURLY0JDeUFCUVJCcVFiZi9FQkFRR2d5bUFRc2dBVUVRYWtITC94QVFFQm9NcFFFTElBRkJFR3BCMi84UUVCQWFES1FCQ3lBQlFSQnFRZXovRUJBUUdneWpBUXNnQVVFUWFrSDUveEFRRUJvTW9nRUxJQUZCRUdwQnhkVVFFQkFhREtFQkN5QUJRUkJxUWRIVkVCQVFHZ3lnQVFzZ0FVRVFha0hoMVJBUUVCb01ud0VMSUFGQkVHcEI5TlVRRUJBYURKNEJDeUFCUVJCcVFZZUFFUkFRR2d5ZEFRc2dBVUVRYWtHUGdCRVFFQm9NbkFFTElBRkJFR3BCbTRBUkVCQWFESnNCQ3lBQlFSQnFRYWFBRVJBUUdneWFBUXNnQVVFUWFrRzBnQkVRRUJvTW1RRUxJQUZCRUdwQndZQVJFQkFhREpnQkN5QUJRUkJxUWRTQUVSQVFHZ3lYQVFzZ0FVRVFha0htZ0JFUUVCb01sZ0VMSUFGQkVHcEI5NEFSRUJBYURKVUJDeUFCUVJCcVFZYUJFUkFRR2d5VUFRc2dBVUVRYWtHYmdSRVFFQm9Na3dFTElBRkJFR3BCcDRFUkVCQWFESklCQ3lBQlFSQnFRYm1CRVJBUUdneVJBUXNnQVVFUWFrSEpnUkVRRUJvTWtBRUxJQUZCRUdwQjM0RVJFQkFhREk4QkN5QUJRUkJxUWUyQkVSQVFHZ3lPQVFzZ0FVRVFha0dCZ2hFUUVCb01qUUVMSUFGQkVHcEJsb0lSRUJBYURJd0JDeUFCUVJCcVFhT0NFUkFRR2d5TEFRc2dBVUVRYWtHMmdoRVFFQm9NaWdFTElBRkJFR3BCeDRJUkVCQWFESWtCQ3lBQlFSQnFRZDZDRVJBUUdneUlBUXNnQVVFUWFrSHZnaEVRRUJvTWh3RUxJQUZCRUdwQmhvTVJFQkFhRElZQkN5QUJRUkJxUVo2REVSQVFHZ3lGQVFzZ0FVRVFha0dzZ3hFUUVCb01oQUVMSUFGQkVHcEJ3SU1SRUJBYURJTUJDeUFCUVJCcVFkR0RFUkFRR2d5Q0FRc2dBVUVRYWtIb2d4RVFFQm9NZ1FFTElBRkJFR3BCK1lNUkVCQWFESUFCQ3lBQlFSQnFRWkNFRVJBUUdneC9DeUFCUVJCcVFhS0VFUkFRR2d4K0N5QUJRUkJxUWJxRUVSQVFHZ3g5Q3lBQlFSQnFRYzZFRVJBUUdneDhDeUFCUVJCcVFlaUVFUkFRR2d4N0N5QUJRUkJxUVlPRkVSQVFHZ3g2Q3lBQlFSQnFRWk9GRVJBUUdneDVDeUFCUVJCcVFhYUZFUkFRR2d4NEN5QUJRUkJxUWIrRkVSQVFHZ3gzQ3lBQlFSQnFRZGFGRVJBUUdneDJDeUFCUVJCcVFmS0ZFUkFRR2d4MUN5QUJRUkJxUVltR0VSQVFHZ3gwQ3lBQlFSQnFRYWFHRVJBUUdneHpDeUFCUVJCcVFjU0dFUkFRR2d4eUN5QUJRUkJxUWRlR0VSQVFHZ3h4Q3lBQlFSQnFRZTZHRVJBUUdneHdDeUFCUVJCcVFZcUhFUkFRR2d4dkN5QUJRUkJxUWFTSEVSQVFHZ3h1Q3lBQlFSQnFRYitIRVJBUUdneHRDeUFCUVJCcVFkNkhFUkFRR2d4c0N5QUJRUkJxUWVlSEVSQVFHZ3hyQ3lBQlFSQnFRZkdIRVJBUUdneHFDeUFCUVJCcVFmNkhFUkFRR2d4cEN5QUJRUkJxUVl1SUVSQVFHZ3hvQ3lBQlFSQnFRWnVJRVJBUUdneG5DeUFCUVJCcVFhcUlFUkFRR2d4bUN5QUJRUkJxUWE2SUVSQVFHZ3hsQ3lBQlFSQnFRYlNJRVJBUUdneGtDeUFCUVJCcVFicUlFUkFRR2d4akN5QUJRUkJxUWM2SUVSQVFHZ3hpQ3lBQlFSQnFRZUtJRVJBUUdneGhDeUFCUVJCcVFmYUlFUkFRR2d4Z0N5QUJRUkJxUWYySUVSQVFHZ3hmQ3lBQlFSQnFRWUdKRVJBUUdneGVDeUFCUVJCcVFaK0pFUkFRR2d4ZEN5QUJRUkJxUWJPSkVSQVFHZ3hjQ3lBQlFSQnFRZFNKRVJBUUdneGJDeUFCUVJCcVFldUpFUkFRR2d4YUN5QUJRUkJxUVkrS0VSQVFHZ3haQ3lBQlFSQnFRWitLRVJBUUdneFlDeUFCUVJCcVFiV0tFUkFRR2d4WEN5QUJRUkJxUWRHS0VSQVFHZ3hXQ3lBQlFSQnFRZXlLRVJBUUdneFZDeUFCUVJCcVFjN1hFQkFRR2d4VUN5QUJRUkJxUWR6WEVCQVFHZ3hUQ3lBQlFSQnFRZWpYRUJBUUdneFNDeUFCUVJCcVFmVFhFQkFRR2d4UkN5QUJRUkJxUVlYWUVCQVFHZ3hRQ3lBQlFSQnFRWmZZRUJBUUdneFBDeUFCUVJCcVFhN1lFQkFRR2d4T0N5QUJRUkJxUWIzWUVCQVFHZ3hOQ3lBQlFSQnFRZFBZRUJBUUdneE1DeUFCUVJCcVFlellFQkFRR2d4TEN5QUJRUkJxUVlQWkVCQVFHZ3hLQ3lBQlFSQnFRYVBaRUJBUUdneEpDeUFCUVJCcVFjUFpFQkFRR2d4SUN5QUJRUkJxUWRuWkVCQVFHZ3hIQ3lBQlFSQnFRZS9aRUJBUUdneEdDeUFCUVJCcVFmL1pFQkFRR2d4RkN5QUJRUkJxUVpMYUVCQVFHZ3hFQ3lBQlFSQnFRYVRhRUJBUUdneERDeUFCUVJCcVFiamFFQkFRR2d4Q0N5QUJRUkJxUWNUYUVCQVFHZ3hCQ3lBQlFSQnFRZERhRUJBUUdneEFDeUFCUVJCcVFkemFFQkFRR2d3L0N5QUJRUkJxUWVqYUVCQVFHZ3crQ3lBQlFSQnFRZlRhRUJBUUdndzlDeUFCUVJCcVFmL2FFQkFRR2d3OEN5QUJRUkJxUVl2YkVCQVFHZ3c3Q3lBQlFSQnFRYURiRUJBUUdndzZDeUFCUVJCcVFiWGJFQkFRR2d3NUN5QUJRUkJxUWNyYkVCQVFHZ3c0Q3lBQlFSQnFRZC9iRUJBUUdndzNDeUFCUVJCcVFmVGJFQkFRR2d3MkN5QUJRUkJxUVlqY0VCQVFHZ3cxQ3lBQlFSQnFRWjNjRUJBUUdndzBDeUFCUVJCcVFiTGNFQkFRR2d3ekN5QUJRUkJxUWNmY0VCQVFHZ3d5Q3lBQlFSQnFRZHpjRUJBUUdnd3hDeUFCUVJCcVFmSGNFQkFRR2d3d0N5QUJRUkJxUVliZEVCQVFHZ3d2Q3lBQlFSQnFRWnJkRUJBUUdnd3VDeUFCUVJCcVFhL2RFQkFRR2d3dEN5QUJRUkJxUWNUZEVCQVFHZ3dzQ3lBQlFSQnFRZG5kRUJBUUdnd3JDeUFCUVJCcVFlN2RFQkFRR2d3cUN5QUJRUkJxUVlQZUVCQVFHZ3dwQ3lBQlFSQnFRWmplRUJBUUdnd29DeUFCUVJCcVFhemVFQkFRR2d3bkN5QUJRUkJxUWNIZUVCQVFHZ3dtQ3lBQlFSQnFRZGZlRUJBUUdnd2xDeUFCUVJCcVFmTGVFQkFRR2d3a0N5QUJRUkJxUVl2ZkVCQVFHZ3dqQ3lBQlFSQnFRYVRmRUJBUUdnd2lDeUFCUVJCcVFiamZFQkFRR2d3aEN5QUJRUkJxUWRIZkVCQVFHZ3dnQ3lBQlFSQnFRZXJmRUJBUUdnd2ZDeUFCUVJCcVFZUGdFQkFRR2d3ZUN5QUJRUkJxUVp6Z0VCQVFHZ3dkQ3lBQlFSQnFRYlhnRUJBUUdnd2NDeUFCUVJCcVFjM2dFQkFRR2d3YkN5QUJRUkJxUWViZ0VCQVFHZ3dhQ3lBQlFSQnFRWWpoRUJBUUdnd1pDeUFCUVJCcVFhcmhFQkFRR2d3WUN5QUJRUkJxUWN6aEVCQVFHZ3dYQ3lBQlFSQnFRZTdoRUJBUUdnd1dDeUFCUVJCcVFaRGlFQkFRR2d3VkN5QUJRUkJxUWJIaUVCQVFHZ3dVQ3lBQlFSQnFRZFBpRUJBUUdnd1RDeUFCUVJCcVFmWGlFQkFRR2d3U0N5QUJRUkJxUVpmakVCQVFHZ3dSQ3lBQlFSQnFRYm5qRUJBUUdnd1FDeUFCUVJCcVFkdmpFQkFRR2d3UEN5QUJRUkJxUWYzakVCQVFHZ3dPQ3lBQlFSQnFRWjdrRUJBUUdnd05DeUFCUVJCcVFjTHBFQkFRR2d3TUN5QUJRUkJxUWM3cEVCQVFHZ3dMQ3lBQlFSQnFRWWlMRVJBUUdnd0tDeUFCUVJCcVFaQ0xFUkFRR2d3SkN5QUJRUkJxUWFXTEVSQVFHZ3dJQ3lBQlFSQnFRYnFMRVJBUUdnd0hDeUFCUVJCcVFjbUxFUkFRR2d3R0N5QUJRUkJxUWR1TEVSQVFHZ3dGQ3lBQlFSQnFRZnlMRVJBUUdnd0VDeUFCUVJCcVFaU01FUkFRR2d3REN5QUJRUkJxUWEyTUVSQVFHZ3dDQ3lBQlFSQnFRY21NRVJBUUdnd0JDeUFCUVJCcVFRSkIzSXdSRUxzQkN3SkFJQUlvQW1oQkFVWU5BQ0FDS0FKb1FRVkdEUUFnQVVFUWFrSFhzUkFRRUNFQUlBTWdBaEQzQ0NBQUlBTVF1UUZCMnJFUUVCQWFJQU1RR1JvTElBRkJFR3BCM0xFUUVCQWFDeUFEUVJCcUpBQkJBUXZiUEFFQmZ5TUFRUkJySWdNa0FDQUFLQUlnSWdFZ0FpQUFLQUlJRVBNQkFrQUNRQ0FDS0FKb1FYcHFJZ0JCc0FWTERRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09zQVVCQVFJREJBVUdCd2dKQ2dzTURRNFBFQkVTRXhRVkZoY1lHUm9iSEIwZUh5QWhJaU1rSlNZbktDa3FLeXd0TGk4d01USXpORFUyTnpnOFBUNC9RRUZDT1RvN1EwUkZSa2RJU1VwTFRGQlJVbE5VVlZaTlRrOVhXRmxhVzF4ZFhsOWdaR1ZtWjJocGFtRmlZMnRzYlc1dmNIRnljM1IxZG5kNmUzeDlmbitBQVlFQmVIbUVBWVVCaGdHSEFZZ0JpUUdLQVlzQmdnR0RBWXdCalFIcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBbzRCandHUUFaRUJrZ0dUQVpRQmxRR1dBWmNCbUFHWkFab0Jtd0hxQXB3Qm5RR2VBWjhCb0FHaEFhSUJvd0drQWFVQnBnR25BYWdCcVFIcUF1b0M2Z0xxQXVvQzZnTHFBcW9CcXdIcUF1b0M2Z0tzQWEwQnJnR3ZBYkFCc1FHeUFiTUJ0QUcxQWJZQnR3RzRBYmtCdWdHN0FjUUJ4UUhHQWNjQnZBRzlBY2dCeVFIS0Fjc0J6QUhOQWRZQjF3SE9BYzhCMEFIUkFkSUIwd0hVQWRVQnZnRy9BY0FCd1FIQ0FjTUIyQUhxQXVvQzZnTFpBZW9DNmdMcUF1b0M2Z0xxQXRvQjJ3SGNBZDBCM2dIZkFlQUI0UUhpQWVNQjZnTHFBdW9DNmdMcUF1UUI1UUhtQWVvQy9BSHFBdW9DNmdIckFlb0M2Z0xxQXVvQzZnTHFBdW9DL1FIcUF2NEIvd0dBQW9FQzZnTHFBdW9DNmdMcUF1b0NnZ0tEQW9RQ2hRS0dBb2NDaUFLSkFvb0Npd0tNQW8wQ2pnS1BBcEFDa1FLU0FwTUNsQUtWQXBZQ2x3S1lBcGtDbWdLYkFwd0NuUUtlQXA4Q29BS2hBcUlDb3dLa0FxVUNwZ0tuQXFnQ3FRS3FBcXNDckFLdEFxNENyd0t3QXJFQ3NnS3pBclFDdFFLMkFyY0N1QUs1QXJvQ3V3SzhBcjBDdmdLL0FzQUN3UUxDQXNNQ3hBTEZBc1lDeHdMSUFza0M2Z0xRQXRFQzBnTFRBdFFDMVFMV0F0Y0MyQUxaQXRvQzJ3TGNBdDBDM2dMZkF1QUM0UUxxQXVvQzZnTGlBdVVDNWdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M3QUh0QWU0QjZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzV3SG9BZW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcEF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcEFlb0M4d0gwQWZVQjZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMbkF1Z0M2Z0xxQXVvQzZnTHZBZkFCOFFIeUFlb0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNHdMa0F1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXM4QzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF2WUI5d0g0QWZrQitnSDdBZW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUFzb0N5d0xNQXMwQ3pnSUFDeUFCUVJCcVFkNnhFQkFRR2d6cUFnc2dBVUVRYWtIcnNSQVFFQm9NNlFJTElBRkJFR3BCL3JFUUVCQWFET2dDQ3lBQlFSQnFRWXF5RUJBUUdnem5BZ3NnQVVFUWFrR1pzaEFRRUJvTTVnSUxJQUZCRUdwQnFMSVFFQkFhRE9VQ0N5QUJRUkJxUWJheUVCQVFHZ3prQWdzZ0FVRVFha0hFc2hBUUVCb000d0lMSUFGQkVHcEIwTElRRUJBYURPSUNDeUFCUVJCcVFlZXlFQkFRR2d6aEFnc2dBVUVRYWtIL3NoQVFFQm9NNEFJTElBRkJFR3BCbDdNUUVCQWFETjhDQ3lBQlFSQnFRYkN6RUJBUUdnemVBZ3NnQVVFUWFrSEVzeEFRRUJvTTNRSUxJQUZCRUdwQjJiTVFFQkFhRE53Q0N5QUJRUkJxUWUrekVCQVFHZ3piQWdzZ0FVRVFha0dHdEJBUUVCb00yZ0lMSUFGQkVHcEJvTFFRRUJBYUROa0NDeUFCUVJCcVFiYTBFQkFRR2d6WUFnc2dBVUVRYWtITnRCQVFFQm9NMXdJTElBRkJFR3BCNUxRUUVCQWFETllDQ3lBQlFSQnFRZnkwRUJBUUdnelZBZ3NnQVVFUWFrR1V0UkFRRUJvTTFBSUxJQUZCRUdwQnJiVVFFQkFhRE5NQ0N5QUJRUkJxUWNHMUVCQVFHZ3pTQWdzZ0FVRVFha0hXdFJBUUVCb00wUUlMSUFGQkVHcEI3TFVRRUJBYUROQUNDeUFCUVJCcVFZTzJFQkFRR2d6UEFnc2dBVUVRYWtHZHRoQVFFQm9NemdJTElBRkJFR3BCczdZUUVCQWFETTBDQ3lBQlFSQnFRY3EyRUJBUUdnek1BZ3NnQVVFUWFrSGt0aEFRRUJvTXl3SUxJQUZCRUdwQityWVFFQkFhRE1vQ0N5QUJRUkJxUVpLM0VCQVFHZ3pKQWdzZ0FVRVFha0dzdHhBUUVCb015QUlMSUFGQkVHcEJ4N2NRRUJBYURNY0NDeUFCUVJCcVFkNjNFQkFRR2d6R0Fnc2dBVUVRYWtIM3R4QVFFQm9NeFFJTElBRkJFR3BCa2JnUUVCQWFETVFDQ3lBQlFSQnFRYXk0RUJBUUdnekRBZ3NnQVVFUWFrSER1QkFRRUJvTXdnSUxJQUZCRUdwQjNMZ1FFQkFhRE1FQ0N5QUJRUkJxUWZpNEVCQVFHZ3pBQWdzZ0FVRVFha0dRdVJBUUVCb012d0lMSUFGQkVHcEJxcmtRRUJBYURMNENDeUFCUVJCcVFjYTVFQkFRR2d5OUFnc2dBVUVRYWtIZXVSQVFFQm9NdkFJTElBRkJFR3BCOTdrUUVCQWFETHNDQ3lBQlFSQnFRWlM2RUJBUUdneTZBZ3NnQVVFUWFrR3R1aEFRRUJvTXVRSUxJQUZCRUdwQng3b1FFQkFhRExnQ0N5QUJRUkJxUWVHNkVCQVFHZ3kzQWdzZ0FVRVFha0g0dWhBUUVCb010Z0lMSUFGQkVHcEJrYnNRRUJBYURMVUNDeUFCUVJCcVFheTdFQkFRR2d5MEFnc2dBVUVRYWtISXV4QVFFQm9Nc3dJTElBRkJFR3BCNExzUUVCQWFETElDQ3lBQlFSQnFRZnE3RUJBUUdneXhBZ3NnQVVFUWFrR1h2QkFRRUJvTXNBSUxJQUZCRUdwQnNMd1FFQkFhREs4Q0N5QUJRUkJxUWNxOEVCQVFHZ3l1QWdzZ0FVRVFha0hsdkJBUUVCb01yUUlMSUFGQkVHcEJnYjBRRUJBYURLd0NDeUFCUVJCcVFabTlFQkFRR2d5ckFnc2dBVUVRYWtHenZSQVFFQm9NcWdJTElBRkJFR3BCejcwUUVCQWFES2tDQ3lBQlFSQnFRZWk5RUJBUUdneW9BZ3NnQVVFUWFrR0R2aEFRRUJvTXB3SUxJQUZCRUdwQm9iNFFFQkFhREtZQ0N5QUJRUkJxUWJ1K0VCQVFHZ3lsQWdzZ0FVRVFha0hXdmhBUUVCb01wQUlMSUFGQkVHcEI3TDRRRUJBYURLTUNDeUFCUVJCcVFZTy9FQkFRR2d5aUFnc2dBVUVRYWtHWXZ4QVFFQm9Nb1FJTElBRkJFR3BCcjc4UUVCQWFES0FDQ3lBQlFSQnFRY2UvRUJBUUdneWZBZ3NnQVVFUWFrSGJ2eEFRRUJvTW5nSUxJQUZCRUdwQjhiOFFFQkFhREowQ0N5QUJRUkJxUVlyQUVCQVFHZ3ljQWdzZ0FVRVFha0dmd0JBUUVCb01td0lMSUFGQkVHcEJ0Y0FRRUJBYURKb0NDeUFCUVJCcVFjekFFQkFRR2d5WkFnc2dBVUVRYWtIa3dCQVFFQm9NbUFJTElBRkJFR3BCK01BUUVCQWFESmNDQ3lBQlFSQnFRWTdCRUJBUUdneVdBZ3NnQVVFUWFrR213UkFRRUJvTWxRSUxJQUZCRUdwQnY4RVFFQkFhREpRQ0N5QUJRUkJxUWRiQkVCQVFHZ3lUQWdzZ0FVRVFha0h3d1JBUUVCb01rZ0lMSUFGQkVHcEJoc0lRRUJBYURKRUNDeUFCUVJCcVFaM0NFQkFRR2d5UUFnc2dBVUVRYWtHMXdoQVFFQm9NandJTElBRkJFR3BCenNJUUVCQWFESTRDQ3lBQlFSQnFRZVBDRUJBUUdneU5BZ3NnQVVFUWFrSDh3aEFRRUJvTWpBSUxJQUZCRUdwQmxzTVFFQkFhRElzQ0N5QUJRUkJxUWF6REVCQVFHZ3lLQWdzZ0FVRVFha0hFd3hBUUVCb01pUUlMSUFGQkVHcEIzOE1RRUJBYURJZ0NDeUFCUVJCcVFmYkRFQkFRR2d5SEFnc2dBVUVRYWtHT3hCQVFFQm9NaGdJTElBRkJFR3BCcDhRUUVCQWFESVVDQ3lBQlFSQnFRY0hFRUJBUUdneUVBZ3NnQVVFUWFrSFh4QkFRRUJvTWd3SUxJQUZCRUdwQjc4UVFFQkFhRElJQ0N5QUJRUkJxUVluRkVCQVFHZ3lCQWdzZ0FVRVFha0dpeFJBUUVCb01nQUlMSUFGQkVHcEJ1Y1VRRUJBYURQOEJDeUFCUVJCcVFkWEZFQkFRR2d6K0FRc2dBVUVRYWtIdHhSQVFFQm9NL1FFTElBRkJFR3BCaHNZUUVCQWFEUHdCQ3lBQlFSQnFRYUxHRUJBUUdnejdBUXNnQVVFUWFrRy94aEFRRUJvTStnRUxJQUZCRUdwQjJNWVFFQkFhRFBrQkN5QUJRUkJxUWZQR0VCQVFHZ3o0QVFzZ0FVRVFha0dReHhBUUVCb005d0VMSUFGQkVHcEJyc2NRRUJBYURQWUJDeUFCUVJCcVFjakhFQkFRR2d6MUFRc2dBVUVRYWtIa3h4QVFFQm9NOUFFTElBRkJFR3BCLzhjUUVCQWFEUE1CQ3lBQlFSQnFRWnZJRUJBUUdnenlBUXNnQVVFUWFrRzJ5QkFRRUJvTThRRUxJQUZCRUdwQnpzZ1FFQkFhRFBBQkN5QUJRUkJxUWViSUVCQVFHZ3p2QVFzZ0FVRVFha0gveUJBUUVCb003Z0VMSUFGQkVHcEJsTWtRRUJBYURPMEJDeUFCUVJCcVFhdkpFQkFRR2d6c0FRc2dBVUVRYWtIRXlSQVFFQm9NNndFTElBRkJFR3BCM3NrUUVCQWFET29CQ3lBQlFSQnFRZlRKRUJBUUdnenBBUXNnQVVFUWFrR015aEFRRUJvTTZBRUxJQUZCRUdwQnFNb1FFQkFhRE9jQkN5QUJRUkJxUWNES0VCQVFHZ3ptQVFzZ0FVRVFha0haeWhBUUVCb001UUVMSUFGQkVHcEI4OG9RRUJBYURPUUJDeUFCUVJCcVFZbkxFQkFRR2d6akFRc2dBVUVRYWtHaHl4QVFFQm9NNGdFTElBRkJFR3BCdThzUUVCQWFET0VCQ3lBQlFSQnFRZGJMRUJBUUdnemdBUXNnQVVFUWFrSHR5eEFRRUJvTTN3RUxJQUZCRUdwQmhzd1FFQkFhRE40QkN5QUJRUkJxUWFMTUVCQVFHZ3pkQVFzZ0FVRVFha0crekJBUUVCb00zQUVMSUFGQkVHcEJ4c3dRRUJBYUROc0JDeUFCUVJCcVFjN01FQkFRR2d6YUFRc2dBVUVRYWtIVHpCQVFFQm9NMlFFTElBRkJFR3BCMnN3UUVCQWFETmdCQ3lBQlFSQnFRZUxNRUJBUUdnelhBUXNnQVVFUWFrSHJ6QkFRRUJvTTFnRUxJQUZCRUdwQjlzd1FFQkFhRE5VQkN5QUJRUkJxUVlMTkVCQVFHZ3pVQVFzZ0FVRVFha0dNelJBUUVCb00wd0VMSUFGQkVHcEJtTTBRRUJBYUROSUJDeUFCUVJCcVFhWE5FQkFRR2d6UkFRc2dBVUVRYWtHenpSQVFFQm9NMEFFTElBRkJFR3BCdzgwUUVCQWFETThCQ3lBQlFSQnFRZFRORUJBUUdnek9BUXNnQVVFUWFrSFl6UkFRRUJvTXpRRUxJQUZCRUdwQjNNMFFFQkFhRE13QkN5QUJRUkJxUWVITkVCQVFHZ3pMQVFzZ0FVRVFha0htelJBUUVCb015Z0VMSUFGQkVHcEI2ODBRRUJBYURNa0JDeUFCUVJCcVFmak5FQkFRR2d6SUFRc2dBVUVRYWtHSHpoQVFFQm9NeHdFTElBRkJFR3BCak00UUVCQWFETVlCQ3lBQlFSQnFRWkxPRUJBUUdnekZBUXNnQVVFUWFrR1l6aEFRRUJvTXhBRUxJQUZCRUdwQm5zNFFFQkFhRE1NQkN5QUJRUkJxUWFqT0VCQVFHZ3pDQVFzZ0FVRVFha0d3emhBUUVCb013UUVMSUFGQkVHcEJ1YzRRRUJBYURNQUJDeUFCUVJCcVFiL09FQkFRR2d5L0FRc2dBVUVRYWtIRnpoQVFFQm9NdmdFTElBRkJFR3BCMU00UUVCQWFETDBCQ3lBQlFSQnFRZVRPRUJBUUdneThBUXNnQVVFUWFrSHp6aEFRRUJvTXV3RUxJQUZCRUdwQmc4OFFFQkFhRExvQkN5QUJRUkJxUVpYUEVCQVFHZ3k1QVFzZ0FVRVFha0dvenhBUUVCb011QUVMSUFGQkVHcEJ1czhRRUJBYURMY0JDeUFCUVJCcVFjM1BFQkFRR2d5MkFRc2dBVUVRYWtIZ3p4QVFFQm9NdFFFTElBRkJFR3BCOU04UUVCQWFETFFCQ3lBQlFSQnFRWWZRRUJBUUdneXpBUXNnQVVFUWFrR2IwQkFRRUJvTXNnRUxJQUZCRUdwQnFkQVFFQkFhRExFQkN5QUJRUkJxUWJuUUVCQVFHZ3l3QVFzZ0FVRVFha0hIMEJBUUVCb01yd0VMSUFGQkVHcEIxOUFRRUJBYURLNEJDeUFCUVJCcVFlVFFFQkFRR2d5dEFRc2dBVUVRYWtIejBCQVFFQm9NckFFTElBRkJFR3BCK3RBUUVCQWFES3NCQ3lBQlFSQnFRWUhSRUJBUUdneXFBUXNnQVVFUWFrR0kwUkFRRUJvTXFRRUxJQUZCRUdwQmtkRVFFQkFhREtnQkN5QUJRUkJxUVpyUkVCQVFHZ3luQVFzZ0FVRVFha0dpMFJBUUVCb01wZ0VMSUFGQkVHcEJyOUVRRUJBYURLVUJDeUFCUVJCcVFiN1JFQkFRR2d5a0FRc2dBVUVRYWtITDBSQVFFQm9Nb3dFTElBRkJFR3BCMnRFUUVCQWFES0lCQ3lBQlFSQnFRZW5SRUJBUUdneWhBUXNnQVVFUWFrSDYwUkFRRUJvTW9BRUxJQUZCRUdwQmh0SVFFQkFhREo4QkN5QUJRUkJxUVpUU0VCQVFHZ3llQVFzZ0FVRVFha0doMGhBUUVCb01uUUVMSUFGQkVHcEJzTklRRUJBYURKd0JDeUFCUVJCcVFielNFQkFRR2d5YkFRc2dBVUVRYWtISzBoQVFFQm9NbWdFTElBRkJFR3BCMTlJUUVCQWFESmtCQ3lBQlFSQnFRZWJTRUJBUUdneVlBUXNnQVVFUWFrSHkwaEFRRUJvTWx3RUxJQUZCRUdwQmdOTVFFQkFhREpZQkN5QUJRUkJxUVkzVEVCQVFHZ3lWQVFzZ0FVRVFha0djMHhBUUVCb01sQUVMSUFGQkVHcEJxdE1RRUJBYURKTUJDeUFCUVJCcVFiclRFQkFRR2d5U0FRc2dBVUVRYWtIQjB4QVFFQm9Na1FFTElBRkJFR3BCeTlNUUVCQWFESkFCQ3lBQlFSQnFRZERURUJBUUdneVBBUXNnQVVFUWFrSFYweEFRRUJvTWpnRUxJQUZCRUdwQjNOTVFFQkFhREkwQkN5QUJRUkJxUWVYVEVCQVFHZ3lNQVFzZ0FVRVFha0h1MHhBUUVCb01pd0VMSUFGQkVHcEIrZE1RRUJBYURJb0JDeUFCUVJCcVFZVFVFQkFRR2d5SkFRc2dBVUVRYWtHUDFCQVFFQm9NaUFFTElBRkJFR3BCbk5RUUVCQWFESWNCQ3lBQlFSQnFRYkxVRUJBUUdneUdBUXNnQVVFUWFrRysxQkFRRUJvTWhRRUxJQUZCRUdwQnh0UVFFQkFhRElRQkN5QUJRUkJxUWREVUVCQVFHZ3lEQVFzZ0FVRVFha0hVMUJBUUVCb01nZ0VMSUFGQkVHcEIyTlFRRUJBYURJRUJDeUFCUVJCcVFlWFVFQkFRR2d5QUFRc2dBVUVRYWtIMjFCQVFFQm9NZndzZ0FVRVFha0dKMVJBUUVCb01mZ3NnQVVFUWFrR2cxUkFRRUJvTWZRc2dBVUVRYWtHMzFSQVFFQm9NZkFzZ0FVRVFha0hGMVJBUUVCb01ld3NnQVVFUWFrSFIxUkFRRUJvTWVnc2dBVUVRYWtIaDFSQVFFQm9NZVFzZ0FVRVFha0gwMVJBUUVCb01lQXNnQVVFUWFrR0QxaEFRRUJvTWR3c2dBVUVRYWtHUzFoQVFFQm9NZGdzZ0FVRVFha0drMWhBUUVCb01kUXNnQVVFUWFrR3UxaEFRRUJvTWRBc2dBVUVRYWtHKzFoQVFFQm9NY3dzZ0FVRVFha0hIMWhBUUVCb01jZ3NnQVVFUWFrSFAxaEFRRUJvTWNRc2dBVUVRYWtIWDFoQVFFQm9NY0FzZ0FVRVFha0hwMWhBUUVCb01id3NnQVVFUWFrSDgxaEFRRUJvTWJnc2dBVUVRYWtHQzF4QVFFQm9NYlFzZ0FVRVFha0dKMXhBUUVCb01iQXNnQVVFUWFrR2QxeEFRRUJvTWF3c2dBVUVRYWtHcjF4QVFFQm9NYWdzZ0FVRVFha0c2MXhBUUVCb01hUXNnQVVFUWFrSE8xeEFRRUJvTWFBc2dBVUVRYWtIYzF4QVFFQm9NWndzZ0FVRVFha0hvMXhBUUVCb01aZ3NnQVVFUWFrSDAxeEFRRUJvTVpRc2dBVUVRYWtHRjJCQVFFQm9NWkFzZ0FVRVFha0dYMkJBUUVCb01Zd3NnQVVFUWFrR3UyQkFRRUJvTVlnc2dBVUVRYWtHOTJCQVFFQm9NWVFzZ0FVRVFha0hUMkJBUUVCb01ZQXNnQVVFUWFrSHMyQkFRRUJvTVh3c2dBVUVRYWtHRDJSQVFFQm9NWGdzZ0FVRVFha0dqMlJBUUVCb01YUXNnQVVFUWFrSEQyUkFRRUJvTVhBc2dBVUVRYWtIWjJSQVFFQm9NV3dzZ0FVRVFha0h2MlJBUUVCb01XZ3NnQVVFUWFrSC8yUkFRRUJvTVdRc2dBVUVRYWtHUzJoQVFFQm9NV0FzZ0FVRVFha0drMmhBUUVCb01Wd3NnQVVFUWFrRzQyaEFRRUJvTVZnc2dBVUVRYWtIRTJoQVFFQm9NVlFzZ0FVRVFha0hRMmhBUUVCb01WQXNnQVVFUWFrSGMyaEFRRUJvTVV3c2dBVUVRYWtIbzJoQVFFQm9NVWdzZ0FVRVFha0gwMmhBUUVCb01VUXNnQVVFUWFrSC8yaEFRRUJvTVVBc2dBVUVRYWtHTDJ4QVFFQm9NVHdzZ0FVRVFha0dnMnhBUUVCb01UZ3NnQVVFUWFrRzEyeEFRRUJvTVRRc2dBVUVRYWtISzJ4QVFFQm9NVEFzZ0FVRVFha0hmMnhBUUVCb01Td3NnQVVFUWFrSDAyeEFRRUJvTVNnc2dBVUVRYWtHSTNCQVFFQm9NU1FzZ0FVRVFha0dkM0JBUUVCb01TQXNnQVVFUWFrR3kzQkFRRUJvTVJ3c2dBVUVRYWtISDNCQVFFQm9NUmdzZ0FVRVFha0hjM0JBUUVCb01SUXNnQVVFUWFrSHgzQkFRRUJvTVJBc2dBVUVRYWtHRzNSQVFFQm9NUXdzZ0FVRVFha0dhM1JBUUVCb01RZ3NnQVVFUWFrR3YzUkFRRUJvTVFRc2dBVUVRYWtIRTNSQVFFQm9NUUFzZ0FVRVFha0haM1JBUUVCb01Qd3NnQVVFUWFrSHUzUkFRRUJvTVBnc2dBVUVRYWtHRDNoQVFFQm9NUFFzZ0FVRVFha0dZM2hBUUVCb01QQXNnQVVFUWFrR3MzaEFRRUJvTU93c2dBVUVRYWtIQjNoQVFFQm9NT2dzZ0FVRVFha0hYM2hBUUVCb01PUXNnQVVFUWFrSHkzaEFRRUJvTU9Bc2dBVUVRYWtHTDN4QVFFQm9NTndzZ0FVRVFha0drM3hBUUVCb01OZ3NnQVVFUWFrRzQzeEFRRUJvTU5Rc2dBVUVRYWtIUjN4QVFFQm9NTkFzZ0FVRVFha0hxM3hBUUVCb01Nd3NnQVVFUWFrR0Q0QkFRRUJvTU1nc2dBVUVRYWtHYzRCQVFFQm9NTVFzZ0FVRVFha0cxNEJBUUVCb01NQXNnQVVFUWFrSE40QkFRRUJvTUx3c2dBVUVRYWtIbTRCQVFFQm9NTGdzZ0FVRVFha0dJNFJBUUVCb01MUXNnQVVFUWFrR3E0UkFRRUJvTUxBc2dBVUVRYWtITTRSQVFFQm9NS3dzZ0FVRVFha0h1NFJBUUVCb01LZ3NnQVVFUWFrR1E0aEFRRUJvTUtRc2dBVUVRYWtHeDRoQVFFQm9NS0FzZ0FVRVFha0hUNGhBUUVCb01Kd3NnQVVFUWFrSDE0aEFRRUJvTUpnc2dBVUVRYWtHWDR4QVFFQm9NSlFzZ0FVRVFha0c1NHhBUUVCb01KQXNnQVVFUWFrSGI0eEFRRUJvTUl3c2dBVUVRYWtIOTR4QVFFQm9NSWdzZ0FVRVFha0dlNUJBUUVCb01JUXNnQVVFUWFrSEE1QkFRRUJvTUlBc2dBVUVRYWtIRjVCQVFFQm9NSHdzZ0FVRVFha0hPNUJBUUVCb01IZ3NnQVVFUWFrSFU1QkFRRUJvTUhRc2dBVUVRYWtIWTVCQVFFQm9NSEFzZ0FVRVFha0hoNUJBUUVCb01Hd3NnQVVFUWFrSDI1QkFRRUJvTUdnc2dBVUVRYWtHRjVSQVFFQm9NR1FzZ0FVRVFha0dVNVJBUUVCb01HQXNnQVVFUWFrR2o1UkFRRUJvTUZ3c2dBVUVRYWtHODVSQVFFQm9NRmdzZ0FVRVFha0hWNVJBUUVCb01GUXNnQVVFUWFrSHU1UkFRRUJvTUZBc2dBVUVRYWtHSzVoQVFFQm9NRXdzZ0FVRVFha0dtNWhBUUVCb01FZ3NnQVVFUWFrSEM1aEFRRUJvTUVRc2dBVUVRYWtIbzVoQVFFQm9NRUFzZ0FVRVFha0dPNXhBUUVCb01Ed3NnQVVFUWFrRzA1eEFRRUJvTURnc2dBVUVRYWtIUTV4QVFFQm9NRFFzZ0FVRVFha0hzNXhBUUVCb01EQXNnQVVFUWFrR0k2QkFRRUJvTUN3c2dBVUVRYWtHdTZCQVFFQm9NQ2dzZ0FVRVFha0hVNkJBUUVCb01DUXNnQVVFUWFrSDY2QkFRRUJvTUNBc2dBVUVRYWtHQTZSQVFFQm9NQndzZ0FVRVFha0dWNlJBUUVCb01CZ3NnQVVFUWFrR202UkFRRUJvTUJRc2dBVUVRYWtHMDZSQVFFQm9NQkFzZ0FVRVFha0hDNlJBUUVCb01Bd3NnQVVFUWFrSE82UkFRRUJvTUFnc2dBVUVRYWtIYzZSQVFFQm9NQVFzZ0FVRVFha0VDUWZYcEVCQzdBUXNnQVVFUWFpSUFRZGV4RUJBUUlRRWdBeUFDRVBjSUlBRWdBeEM1QVVIYXNSQVFFQm9nQXhBWkdpQUFRZHl4RUJBUUdpQURRUkJxSkFCQkFRdUZDZ0VEZnlNQVFSQnJJZ1FrQUNBQUtBSWdJZ0VnQWlBQUtBSUlFUE1CQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUNLQUpvSWdCQnRRUk1CRUFnQUVIcGZtb2lBMEVkU3dSQUlBQkJwQUpIRFNVZ0FVRVFha0hDc0JBUUVCb01Kd3NnQTBFQmF3NGRCZ2NJQ1FvTERBME9EeEFWRmhFU0V4UWtGeGdaR2hzY0hRRUNBd1FGQ3lBQVFjcDdhaUlEUVE1TkRTUWdBRUhhZW1vaUEwRUZTd1JBSUFCQjhBVkhEU1FnQVVFUWFrSDFyUkFRRUJvTUpnc2dBMEVCYXc0RkhoOGdJU0lkQ3lBQlFSQnFRYTJ0RUJBUUdnd2tDeUFCUVJCcVFicXRFQkFRR2d3akN5QUNJQUlvQWdBb0FzQUJFUUFBSWdBZ0FDZ0NBQ2dDZUJFQUFCRDBBU0VESUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBQ0FBS0FJQUtBSjRFUUFBSVFBZ0FVRVFhaUlGQW44Z0F3UkFJQUFnQUNnQ0FDZ0NWQkVBQUNnQ1FBd0JDeUFBS0FKQUN5QUNJQUlvQWdBb0FzUUJFUUFBSWdBZ0FDZ0NBQ2dDRkJFQUFCQkxRUUFRRHlnQ0FCQTRLQUlBSWdBZ0FDZ0NBQ2dDR0JFQUFCQzVBUm9nQlVISnJSQVFFQm9NSWdzZ0FVRVFha0htclJBUUVCb01JUXNnQVVFUWFrR0VyaEFRRUJvTUlBc2dBVUVRYWtHSXJoQVFFQm9NSHdzZ0FVRVFha0dScmhBUUVCb01IZ3NnQVVFUWFrR3ByaEFRRUJvTUhRc2dBVUVRYWtHd3JoQVFFQm9NSEFzZ0FVRVFha0cwcmhBUUVCb01Hd3NnQVVFUWFrSEFyaEFRRUJvTUdnc2dBVUVRYWtITHJoQVFFQm9NR1FzZ0FVRVFha0hYcmhBUUVCb01HQXNnQVVFUWFrSGtyaEFRRUJvTUZ3c2dBVUVRYWtIeHJoQVFFQm9NRmdzZ0FVRVFha0gvcmhBUUVCb01GUXNnQVVFUWFrR1JyeEFRRUJvTUZBc2dBVUVRYWtHanJ4QVFFQm9NRXdzZ0FVRVFha0c0cnhBUUVCb01FZ3NnQVVFUWFrSFRyeEFRRUJvTUVRc2dBVUVRYWtIeHJ4QVFFQm9NRUFzZ0FVRVFha0gzcnhBUUVCb01Ed3NnQVVFUWFrR0FzQkFRRUJvTURnc2dBVUVRYWtHTnNCQVFFQm9NRFFzZ0FVRVFha0doc0JBUUVCb01EQXNnQVVFUWFrRzFzQkFRRUJvTUN3c2dBVUVRYWtIU3NCQVFFQm9NQ2dzZ0FVRVFha0hkc0JBUUVCb01DUXNnQVVFUWFrSHBzQkFRRUJvTUNBc2dBVUVRYWtIMXNCQVFFQm9NQndzZ0FVRVFha0dJc1JBUUVCb01CZ3NnQVVFUWFrR1VzUkFRRUJvTUJRc2dBVUVRYWtHbHNSQVFFQm9NQkFzZ0FVRVFha0d0c1JBUUVCb01Bd3NnQVVFUWFrRzhzUkFRRUJvTUFnc2dBVUVRYWtIS3NSQVFFQm9NQVFzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBMEVCYXc0T0RRd0xDZ2tJQndZRkJBTUNBUUFPQ3lBQlFSQnFRWU90RUJBUUdnd09DeUFCUVJCcVFkcXNFQkFRR2d3TkN5QUJRUkJxUWErc0VCQVFHZ3dNQ3lBQlFSQnFRWTZzRUJBUUdnd0xDeUFCUVJCcVFleXJFQkFRR2d3S0N5QUJRUkJxUWNxckVCQVFHZ3dKQ3lBQlFSQnFRYVdyRUJBUUdnd0lDeUFCUVJCcVFhV3FFQkFRR2d3SEN5QUJRUkJxUWZxcUVCQVFHZ3dHQ3lBQlFSQnFRYytxRUJBUUdnd0ZDeUFCUVJCcVFhV3FFQkFRR2d3RUN5QUJRUkJxUWY2cEVCQVFHZ3dEQ3lBQlFSQnFRZGVwRUJBUUdnd0NDeUFCUVJCcVFiV3BFQkFRR2d3QkN5QUJRUkJxUVpTcEVCQVFHZ3NnQVVFUWFpSUFRZGV4RUJBUUlRRWdCQ0FDRVBjSUlBRWdCQkM1QVVIYXNSQVFFQm9nQkJBWkdpQUFRZHl4RUJBUUdpQUVRUkJxSkFCQkFRc3NBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNDQ0FBSUFJb0FnZ1FzQU1nQUVFQU5nSVFJQUpCRUdva0FBdEdBQ01BUVJCcklnSWtBQ0FBSUFFUTF3SWlBQkNmQ1NBQ1FRaHFJQUJCQUJEREFSQ1JBU0lBS0FJQVFSQnFJQU1vQWdBUXN4Z2dBQkFsUVFFNkFBUWdBa0VRYWlRQUN5Y0FJQUF0QUFRRVFDQUFLQUlBR2lBQlFSQnFFT1lDQ3lBQkJFQWdBQ2dDQUJvZ0FSQXFDd3RGQVFGL0l3QkJFR3NpQXlRQUlBRVFKU0lCSUFCQkhCQW1JQU5CQ0dvZ0FVRUFFTU1CRUpFQklnQW9BZ0JCRUdvZ0FoQ2dCU0FBRUNWQkFUb0FCQ0FEUVJCcUpBQUxmQUVDZnlNQVFTQnJJZ1FrQUNBQklBUkJIR29nQWhDdEJ5SUZLQUlBSVFJZ0JFRUFPZ0FiSUFKRkJFQWdCRUVJYWlBQklBTVF0aGdnQVNBRUtBSWNJQVVnQkNnQ0NCRHVBaUFFUVFocUVGOGhBaUFFUVFFNkFCc2dCRUVJYWhENENBc2dBQ0FFUVFocUlBSVFNU0FFUVJ0cUVLSUJJQVJCSUdva0FBc25BQ0FBS0FJWVJRUkFJQUFnQVVHMnBoQWdBa0dpb0JCQkFDQUFLQUlBS0FLZ0FSRUNBQXNMSndBZ0FDZ0NJRVVFUUNBQUlBRkJqcVlRSUFKQm9xQVFRUUFnQUNnQ0FDZ0NvQUVSQWdBTEN5a0FJQUFvQWlCQkFVNEVRQ0FBSUFGQjU2VVFJQUpCb3FBUVFRQWdBQ2dDQUNnQ29BRVJBZ0FMQ3lZQUlBQW9BaGdFUUNBQUlBRkJ4S1VRSUFKQm9xQVFRUUFnQUNnQ0FDZ0NvQUVSQWdBTEN6c0JBWDhqQUVFUWF5SUVKQUFnQTBVRVFDQUVRZG5vRHpZQ0RDQUFJQUZCQVNBRVFReHFJQUlnQUNnQ0FDZ0NGQkVJQUFzZ0JFRVFhaVFBQ3pzQkFYOGpBRUVRYXlJRUpBQWdBMFVFUUNBRVFhZm9EellDRENBQUlBRkJBU0FFUVF4cUlBSWdBQ2dDQUNnQ0ZCRUlBQXNnQkVFUWFpUUFDMkFCQVg4akFFRVFheUlFSkFBZ0EwVUVRQ0FFUWNDbEVDZ0NBRFlDQ0NBRVFiaWxFQ2tDQURjREFDQUFJQUZCQXlBRUlBSWdBQ2dDQUNnQ0ZCRUlBQ0FBSUFGQkJpQUNFRW9nQUNBQlFRWkJrQU5CQUNBQ0VDZ0xJQVJCRUdva0FBcytBUUYvSXdCQkVHc2lCQ1FBSUFORkJFQWdCRUd3cFJBcEF3QTNBd2dnQUNBQlFRSWdCRUVJYWlBQ0lBQW9BZ0FvQWhRUkNBQUxJQVJCRUdva0FBdEdBQ0FBSUFBb0FnQW9BcmdCRVFBQUlBQWdBQ2dDQUNnQ3dBRVJBQUFnQUNBQUtBSUFLQUo0RVFBQUlBQVFrQUlnQUNnQ2lBRWdBQ0FBS0FJQUtBSUFFUUFBRVBrSUMwY0JBWDhqQUVFUWF5SUVKQUFnQTBVRVFDQUVRYWlsRUNnQ0FEWUNDQ0FFUWFDbEVDa0NBRGNEQUNBQUlBRkJBeUFFSUFJZ0FDZ0NBQ2dDRkJFSUFBc2dCRUVRYWlRQUMwY0JBWDhqQUVFUWF5SUVKQUFnQTBVRVFDQUVRWmlsRUNrREFEY0RDQ0FFUVpDbEVDa0RBRGNEQUNBQUlBRkJCQ0FFSUFJZ0FDZ0NBQ2dDRkJFSUFBc2dCRUVRYWlRQUMwY0JBWDhqQUVFUWF5SUVKQUFnQTBVRVFDQUVRWVNsRUNnQ0FEWUNDQ0FFUWZ5a0VDa0NBRGNEQUNBQUlBRkJBeUFFSUFJZ0FDZ0NBQ2dDRkJFSUFBc2dCRUVRYWlRQUN6Z0FJQU5GQkVBZ0FDQUJRUUZCK0tRUUlBSWdBQ2dDQUNnQ0ZCRUlBQ0FBSUFGQkJpQUNFRW9nQUNBQlFRWkJrQU5CQUNBQ0VDZ0xDejRCQVg4akFFRVFheUlFSkFBZ0EwVUVRQ0FFUWZDa0VDa0RBRGNEQ0NBQUlBRkJBaUFFUVFocUlBSWdBQ2dDQUNnQ0ZCRUlBQXNnQkVFUWFpUUFDMWNCQVg4akFFRVFheUlFSkFBZ0EwVUVRQ0FFUWVpa0VDa0RBRGNEQ0NBQUlBRkJBaUFFUVFocUlBSWdBQ2dDQUNnQ0ZCRUlBQ0FBSUFGQkJpQUNFRW9nQUNBQlFRWkJrQU5CQUNBQ0VDZ0xJQVJCRUdva0FBcytBUUYvSXdCQkVHc2lCQ1FBSUFORkJFQWdCRUhncEJBcEF3QTNBd2dnQUNBQlFRSWdCRUVJYWlBQ0lBQW9BZ0FvQWhRUkNBQUxJQVJCRUdva0FBdEhBUUYvSXdCQkVHc2lCQ1FBSUFORkJFQWdCRUhZcEJBcEF3QTNBd2dnQkVIUXBCQXBBd0EzQXdBZ0FDQUJRUVFnQkNBQ0lBQW9BZ0FvQWhRUkNBQUxJQVJCRUdva0FBdGVBUUovSXdCQklHc2lCQ1FBSUFSQkVHb1ExUUVpQlNBQ0VOY0RJQVZCdDZRUUVKSUJJQVVnQXhDU0FTQUVRZkNrRUNrREFEY0RDQ0FBSUFGQkFpQUVRUWhxSUFVUUV5QUFLQUlBS0FJVUVRZ0FJQVVRR1JvZ0JFRWdhaVFBQzJjQkFuOGpBRUVnYXlJRUpBQWdCRUVRYWhEVkFTSUZJQUlRMXdNZ0JVRzNwQkFRa2dFZ0JTQURFSklCSUFSQmhLVVFLQUlBTmdJSUlBUkIvS1FRS1FJQU53TUFJQUFnQVVFRElBUWdCUkFUSUFBb0FnQW9BaFFSQ0FBZ0JSQVpHaUFFUVNCcUpBQUxad0VDZnlNQVFTQnJJZ1FrQUNBRVFSQnFFTlVCSWdVZ0FoRFhBeUFGUWJla0VCQ1NBU0FGSUFNUWtnRWdCRUhFcEJBb0FnQTJBZ2dnQkVHOHBCQXBBZ0EzQXdBZ0FDQUJRUU1nQkNBRkVCTWdBQ2dDQUNnQ0ZCRUlBQ0FGRUJrYUlBUkJJR29rQUFzNEFRRi9Jd0JCRUdzaUFTUUFJQUZCOEtRUUtRTUFOd01JSUFCQkFpQUJRUWhxSUFBb0FnQW9BaVFSQndBaEFDQUJRUkJxSkFBZ0FBdEJBUUYvSXdCQkVHc2lBU1FBSUFGQmhLVVFLQUlBTmdJSUlBRkIvS1FRS1FJQU53TUFJQUJCQXlBQklBQW9BZ0FvQWlRUkJ3QWhBQ0FCUVJCcUpBQWdBQXRCQVFGL0l3QkJFR3NpQVNRQUlBRkJ4S1FRS0FJQU5nSUlJQUZCdktRUUtRSUFOd01BSUFCQkF5QUJJQUFvQWdBb0FpUVJCd0FoQUNBQlFSQnFKQUFnQUF0SEFRRi9Jd0JCRUdzaUJDUUFJQU5GQkVBZ0JFSEVwQkFvQWdBMkFnZ2dCRUc4cEJBcEFnQTNBd0FnQUNBQlFRTWdCQ0FDSUFBb0FnQW9BaFFSQ0FBTElBUkJFR29rQUFzVEFDQUFJQUZCQmtHUUEwSE0yUThnQWhBb0N5QUFJQUFnQVVFQlFZSUJRUUFnQWhBb0lBQWdBVUVJUWF3Q1FRQWdBaEFvQ3o4QUlBSkJsZWdQRUhwRkJFQWdBQ0FCUVpEZ0FFR2FwQkFRMGdFZ0FDQUJRUUpCd2dOQkFFR2FwQkFRS0NBQUlBRkJDRUhBQWtFQVFacWtFQkFvQ3dzeUFRRi9Jd0JCSUdzaUFpUUFJQUpCQ0dvZ0FFSEVBR29nQWtFUWFpQUJFR2tpQUJEUkRTQUFFQ0FhSUFKQklHb2tBQXRHQUNBQUlBTVFvZ1lnQUVGL05nSnNJQUFnQVRZQ2FDQUFRYVNSQ1RZQ0FDQUFRZkFBYWhEVkFTRUJJQUJCZ0FGcUVLY0hHaUFBUVFBMkFvZ0JJQUVnQWhEb0FpQUFDNXdEQVFOL0l3QkJJR3NpQXlRQUFrQWdBVUdib3hBUWVrVUVRQ0FDUVg5cVFRRk5CRUFnQUNBQUVOY0JRWitqRUVHUW94QkJvcUFRUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BZ3NnQXlBQVFTeHFJZ0FRMFFJMkFnZ2dBeUFBRUg0MkFoZ2dBMEVJYWlBRFFSaHFFSWdCUlEwQkEwQWdBMEVJYWhCWElBSTJBaEFnQTBFSWFoQ3BBU0FESUFBUWZqWUNHQ0FEUVFocUlBTkJHR29RaUFFTkFBc01BUXNnQXlBQVFTeHFJZ1FnQTBFSWFpQUJFQ0lpQlJERUJUWUNHQ0FGRUJrYUlBTWdCQkIrTmdJSUFrQWdBMEVZYWlBRFFRaHFFTGdEQkVBZ0FrRi9haUlDUVFOTERRRUNRQUpBSUFKQkFXc09Bd0VCQVFBTElBQWdBQkRYQVVIYW94QkJrS01RSUFGQkFDQUFLQUlBS0FLZ0FSRUNBQXdDQ3lBQUlBQVExd0ZCMnFNUVFaQ2pFQ0FCUVFBZ0FDZ0NBQ2dDcEFFUkFnQU1BUXNnQTBFWWFoQlhLQUlRUVFWR0JFQWdBQ0FBRU5jQlFmT2pFRUdRb3hBZ0FVRUFJQUFvQWdBb0FxUUJFUUlBQ3lBQ1FYOXFRUUZOQkVBZ0FDZ0NLQ0FCRU5NWUN5QURRUmhxRUZjZ0FqWUNFQXNnQTBFZ2FpUUFEd3NnQTBFZ2FpUUFDL3dHQVFGL0FrQUNRQUpBQWtBQ2YwRUJRZHlpRUNBREVIcEZEUUFhUVFKQjVLSVFJQU1RZWtVTkFCcEJCRUhyb2hBZ0F4QjZSUTBBR2tIem9oQWdBeEI2RFFGQkF3c2hCQ0FBSUFBUTF3RWdBaUFBS0FJQUtBSTBFUVlBSUFBZ0FpQUVJQUFvQWdBb0Fpd1JCZ0FnQWtINjZBOFFla1VFUUNBQUlBRkJtdWtQSUFNZ0FDZ0NBQ2dDS0JFRUFDQUFJQUZCdWVrUElBTWdBQ2dDQUNnQ0tCRUVBQ0FBSUFGQjBla1BJQU1nQUNnQ0FDZ0NLQkVFQUNBQUlBRkI3T2tQSUFNZ0FDZ0NBQ2dDS0JFRUFDQUFJQUZCbE9vUElBTWdBQ2dDQUNnQ0tCRUVBQ0FBSUFGQndPb1BJQU1nQUNnQ0FDZ0NLQkVFQUNBQUlBRkI4dW9QSUFNZ0FDZ0NBQ2dDS0JFRUFDQUFJQUZCaGVzUElBTWdBQ2dDQUNnQ0tCRUVBQ0FBSUFGQm8rc1BJQU1nQUNnQ0FDZ0NLQkVFQUNBQUlBRkJ1K3NQSUFNZ0FDZ0NBQ2dDS0JFRUFDQUFJQUZCOWVzUElBTWdBQ2dDQUNnQ0tCRUVBQ0FBSUFGQmkrd1BJQU1nQUNnQ0FDZ0NLQkVFQUE4TElBSkJ3T29QRUhwRkJFQU1BZ3NnQWtHcDdBOFFla1VFUUF3REN5QUNRYnZyRHhCNlJRUkFEQUlMSUFKQnBPMFBFSHBGQkVBTUF3c2dBa0g3NFE4UWVrVUVRQ0FBSUFGQjJPRVBJQU1nQUNnQ0FDZ0NLQkVFQUE4TElBSkJpOXdQRUhwRkJFQU1CQXNnQWtHbjNBOFFla1VFUUF3RUN5QUNRY25jRHhCNlJRUkFEQVFMSUFKQjU5d1BFSHBGQkVBTUJBc2dBa0dHM1E4UWVrVUVRQXdFQ3lBQ1FhN2REeEI2UlFSQURBUUxJQUpCejkwUEVIcEZCRUFNQkFzZ0FrSG01ZzhRZWtVRVFBd0VDd0pBSUFKQngrQVBFSG9FUUNBQ1FlRGdEeEI2RFFFTElBQWdBVUd2NEE4Z0F5QUFLQUlBS0FJb0VRUUFEd3NnQWtIWjZBOFFla1VFUUNBQUlBRkJwK2dQSUFNZ0FDZ0NBQ2dDS0JFRUFBOExJQUpCNXZFUEVIcEZCRUFnQUNBQlFaL3ZEeUFESUFBb0FnQW9BaWdSQkFBUEN5QUNRWkh5RHhCNlJRUkFJQUFnQVVITTd3OGdBeUFBS0FJQUtBSW9FUVFBRHdzZ0FrRzk4ZzhRZWtVRVFDQUFJQUZCcVBBUElBTWdBQ2dDQUNnQ0tCRUVBQThMSUFKQjZmSVBFSHBGQkVBZ0FDQUJRZGJ3RHlBRElBQW9BZ0FvQWlnUkJBQUxEd3NnQUNBQUVOY0JRZmlpRUVHUW94QWdBMEVBSUFBb0FnQW9BcUFCRVFJQUR3c2dBQ0FCUWFQckR5QURJQUFvQWdBb0FpZ1JCQUFQQ3lBQUlBRkJqTzBQSUFNZ0FDZ0NBQ2dDS0JFRUFBOExJQUFnQVVIdTJ3OGdBeUFBS0FJQUtBSW9FUVFBQzBBQkFYOENRQ0FCUVFGSURRQURRQ0FBSUFJZ0EwRUNkR29vQWdBZ0FDZ0NBQ2dDSUJFREFFVUVRQ0FCSUFOQkFXb2lBMGNOQVF3Q0N3dEJBUThMUVFBTEZ3QWdBQ0FCSUFBb0FnQW9BaHdSQXdCQmYycEJBMGtMWHdFQmZ5TUFRU0JySWdJa0FDQUNJQUJCTEdvaUFDQUNRUWhxSUFFUUlpSUJFTVFGTmdJWUlBRVFHUm9nQWlBQUVINDJBZ2hCQUNFQklBSkJHR29nQWtFSWFoQzRBMFVFUUNBQ1FSaHFFRmNvQWhBaEFRc2dBa0VnYWlRQUlBRUxqUUVBQWtBZ0FDQUJJQUlnQXlBRUlBQW9BZ0FvQWpBUkNnQU5BQ0FDUVFGR0JFQWdBQ0FCUVoyaUVDQUVJQU1vQWdCQkFDQUFLQUlBS0FLb0FSRUNBQThMSUFBZ0FVR2RvaEFnQkVHL29oQkJBQ0FBS0FJQUtBS29BUkVDQUNBQ1FRRklEUUJCQUNFQkEwQWdBQ2dDREVFQUlBTWdBVUVDZEdvb0FnQVF1d0VnQVVFQmFpSUJJQUpIRFFBTEN3dU5BUUFDUUNBQUlBRWdBaUFESUFRZ0FDZ0NBQ2dDTUJFS0FBMEFJQUpCQVVZRVFDQUFJQUZCbmFJUUlBUWdBeWdDQUVFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQUNBQlFaMmlFQ0FFUWIraUVFRUFJQUFvQWdBb0FxQUJFUUlBSUFKQkFVZ05BRUVBSVFFRFFDQUFLQUlNUVFBZ0F5QUJRUUowYWlnQ0FCQzdBU0FCUVFGcUlnRWdBa2NOQUFzTEM2MENBUVYvSXdCQlFHb2lCU1FBQWtBQ1FDQUNRUUZJRFFBRFFFRUJJUWNnQUNBRElBWkJBblJxS0FJQUlBQW9BZ0FvQWh3UkF3QkJmMnBCQVUwTkFpQUdRUUZxSWdZZ0FrY05BQXNnQWtFQlNBMEFRUUFoQmtFQUlRY0RRQUpBSUFBZ0F5QUdRUUowYWlJSUtBSUFJQUFvQWdBb0Fod1JBd0JCZldvaUNVRUJTdzBBSUFsQkFXdEZCRUFnQUJDUUEwVU5BU0FBS0FJTVFRRkI0S0VRSUFFUTFnUUxJQUFvQWd3aENTQUZRUkJxSUFVZ0NDZ0NBQkFpSWdnUTBnMGdCVUVnYWlBRlFSQnFRZFdmRUJEWUF5QUZRVEJxSUFWQklHb2dCQkRZQTBFQklRY2dDVUVCSUFWQk1Hb1FFeUFCRU5ZRUlBVkJNR29RR1JvZ0JVRWdhaEFaR2lBRlFSQnFFQmthSUFnUUdSb0xJQVpCQVdvaUJpQUNSdzBBQ3d3QkMwRUFJUWNMSUFWQlFHc2tBQ0FIQzNJQkFYOGpBRUhRQUdzaUJTUUFBa0FnQWlBQUtBSUlJZ0p4UlEwQUlBQW9BaEFnQTBnTkFDQUNFSXdPSVFJZ0JTQUROZ0lFSUFVZ0FqWUNBQ0FGUVJCcVFUeEJwNkVRSUFVUUp4b2dBQ0FCUWNtaEVDQUVJQVZCRUdwQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQlVIUUFHb2tBQXZWQVFFQmZ5TUFRZEFBYXlJRkpBQUNRQ0FBS0FJSUlBSnhSUTBBSUFBb0FoQWdBMGdOQUNBQUxRQUVCRUFnQUNBQlFiK2dFQ0FFUWFLZ0VFRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBQVFoUW9OQUNBQUtBSU1JUUFnQlVFZ2FpQUZRUkJxSUFRUUlpSUNRZXlnRUJEWUF5QUZJQU1RaEE0Z0JVRXdhaUFGUVNCcUlBVVFpUUVRc0FNZ0JVRkFheUFGUVRCcVFZU2hFQkRZQXlBQVFRRWdCVUZBYXhBVElBRVExZ1FnQlVGQWF4QVpHaUFGUVRCcUVCa2FJQVVRR1JvZ0JVRWdhaEFaR2lBQ0VCa2FDeUFGUWRBQWFpUUFDeDRBSUFBZ0FVR2pvQkFnQWtHaW9CQkJBQ0FBS0FJQUtBS2dBUkVDQUF2SkFnRUJmeU1BUVNCcklnSWtBQUpBSUFBUU13UkFJQUZCbC9NUEVHZ2dBQkF6UlEwQklBQW9BaEJCckFKSURRRWdBVUh5L0E4UTR3SU1BUXNnQVVHbS9ROFFhQ0FBS0FJUVFaWUJTQTBBSUFGQjhKb1FFT01DSUFBb0FnaEJCRWNOQUNBQlFZdWJFQkRqQWdzQ1FBSkFJQUFRTTBVRVFDQUFLQUlRUVlzQlNnMEJDeUFBRURORkRRRWdBQ2dDRUVHMkFrZ05BUXNnQVVHdm14QVE0d0lMSUFBb0FoQkJyQUpPQkVBZ0FVR01uQkFRNHdJTElBRkJ4SndRRU9NQ0lBQW9BaHhCQVU0RVFDQUJRY0dkRUJEakFpQUNJQUFvQWh3MkFoQWdBa0VVYWtFTVFkR2RFQ0FDUVJCcUVDY2FJQUVnQWtFVWFoRGpBaUFCUWRTZEVCRGpBZ3NnQUNnQ0pFRUJUZ1JBSUFGQjFwMFFFT01DSUFJZ0FDZ0NKRFlDQUNBQ1FSUnFRUXhCMFowUUlBSVFKeG9nQVNBQ1FSUnFFT01DSUFGQjFKMFFFT01DQ3lBQ1FTQnFKQUFMZ2dFQkFuOGpBRUVnYXlJRkpBQWdBU0FGUVJ4cUlBSVFvUWtpQmlnQ0FDRUNJQVZCQURvQUd5QUNSUVJBSUFWQkNHb2dBVUhZcUJBZ0F5QUVFTFFZSUFFZ0JTZ0NIQ0FHSUFVb0FnZ1FwQVFnQlVFSWFoQmZJUUlnQlVFQk9nQWJJQVZCQ0dvUW9Ba0xJQUFnQlVFSWFpQUNFREVnQlVFYmFoQ2lBU0FGUVNCcUpBQUw4UmtCQW44akFFRVFheUlDSkFBZ0FFRXNhaUlBSUFKQnZOTVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCenRNUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI2dE1QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQi9OTVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbHRRUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ0dFFQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnlOUVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNHRRUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIrZFFQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmt0VVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCcDlVUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ4OVVQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjNkVVBFQ0lpQVJBcFFRVTJBZ0FnQVJBWkdpQUFJQUpCOE5VUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJqOVlQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnBkWVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCd05ZUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIyTllQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjl0WVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCa2RjUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJxOWNQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnk5Y1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCN05jUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJpOWdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnFkZ1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCeDlnUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI0TmdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQit0Z1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbnRrUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ0TmtQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnpOa1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNDlrUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIrTmtQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmo5b1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCcTlvUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ5Tm9QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjQ5b1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCaHRzUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJwOXNQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnU5c1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMk5zUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI3dHNQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmk5d1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCcDl3UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ5ZHdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjU5d1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCaHQwUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJydDBQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQno5MFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNjkwUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJpZDRQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnBONFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMDk0UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI5dDRQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmtkOFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCc044UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ6TjhQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjhkOFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCak9BUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJyK0FQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQngrQVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNE9BUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIvdUFQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQm9lRVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCdmVFUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIyT0VQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQisrRVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbCtJUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJyT0lQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnllSVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCOGVJUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJnK01QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQm9PTVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCditNUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIxK01QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQit1TVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbHVRUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ1ZVFQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjNPUVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCZ09VUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJvdVVQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnVPVVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMU9VUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIrZVVQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmsrWVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCdmVZUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI1dVlQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmlPY1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCb2VjUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJzK2NQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjFlY1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCOXVjUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJsZWdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnArZ1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCd09nUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIyZWdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQit1Z1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbXVrUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ1ZWtQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjBla1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCN09rUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJsT29QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQndPb1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMStvUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI4dW9QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmhlc1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbytzUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ1K3NQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjF1c1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCOWVzUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJpK3dQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnFld1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCd093UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIyK3dQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjd1d1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCak8wUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJwTzBQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnYrMFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCM3UwUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI5TzBQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmt1NFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCcHU0UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ0KzRQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjFPNFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNWU0UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI5KzRQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQm4rOFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCek84UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIrdThQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnFQQVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMXZBUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJodkVQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnR2RVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNXZFUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJrZklQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnZmSVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNmZJUEVDSWlBQkFwUVFRMkFnQWdBQkFaR2lBQ1FSQnFKQUFMNEFFQkFuOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUFrQWdBQ2dDQkNJRFJRUkFJQUFvQWdBaEF3d0JDeUFDUVNBZ0EyczJBZ2dnQWtFSWFpQUNRUXhxRUtRQklRRWdBQ2dDQUNJRElBTW9BZ0JCZnlBQUtBSUVkRUYvSUFJb0FnZ2dBU2dDQUNJQmEzWnhRWDl6Y1RZQ0FDQUNJQUlvQWd3Z0FXc2lBVFlDRENBQUlBTkJCR29pQXpZQ0FBc2dBMEVBSUFGQkJYWkJBblFpQXhEZEFSb2dBaUFDS0FJTUlBRkJZSEZySWdFMkFnd2dBUVJBSUFBZ0FDZ0NBQ0FEYWlJQU5nSUFJQUFnQUNnQ0FFRi9RU0FnQVd0MlFYOXpjVFlDQUFzZ0FrRVFhaVFBQzlzQkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RBSkFJQUFvQWdRaUEwVUVRQ0FBS0FJQUlRTU1BUXNnQWtFZ0lBTnJOZ0lJSUFKQkNHb2dBa0VNYWhDa0FTRUJJQUFvQWdBaUF5QURLQUlBUVg4Z0FDZ0NCSFJCZnlBQ0tBSUlJQUVvQWdBaUFXdDJjWEkyQWdBZ0FpQUNLQUlNSUFGcklnRTJBZ3dnQUNBRFFRUnFJZ00yQWdBTElBTkIvd0VnQVVFRmRrRUNkQ0lERU4wQkdpQUNJQUlvQWd3Z0FVRmdjV3NpQVRZQ0RDQUJCRUFnQUNBQUtBSUFJQU5xSWdBMkFnQWdBQ0FBS0FJQVFYOUJJQ0FCYTNaeU5nSUFDeUFDUVJCcUpBQUxQZ0VCZnlNQVFSQnJJZ01rQUFKQUlBRkZEUUFnQWdSQUlBTkJDR29nQUJDUkFpQUJFT1FZREFFTElBTWdBQkNSQWlBQkVPTVlDeUFEUVJCcUpBQUxVUUVCZnlBQUVJc0VJQUFRT3lBQUtBSUFJQUFvQWdRZ0FVRUVhaUlDRU5ZTklBQWdBaEF1SUFCQkJHb2dBVUVJYWhBdUlBQVFHeUFCRUNNUUxpQUJJQUVvQWdRMkFnQWdBQ0FBRUtjQkVQa0ZDeTBBSUFFZ0FDZ0NDRWNFUUFOQUlBQW9BaEFhSUFBZ0FDZ0NDRUYwYWpZQ0NDQUFLQUlJSUFGSERRQUxDd3NOQUNBQUlBRkJCSFJxUVJScUN5WUJBWDhnQVNBQWF5SUJRUXh0SVFNZ0FRUkFJQUlnQUNBQkVPUURDeUFDSUFOQkRHeHFDem9CQVg4Z0FTQUNSd1JBSUFNb0FnQWhCQU5BSUFBZ0JDQUJFSWdFSUFNZ0F5Z0NBRUVNYWlJRU5nSUFJQUZCREdvaUFTQUNSdzBBQ3dzTGFRRUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnQWdBeUFCTmdJSUlBQW9BaEFoQVNBRFFRaHFJQU1RcmdZRVFBTkFJQUVnQUNnQ0NDQURLQUlJRUlnRUlBQWdBQ2dDQ0VFTWFqWUNDQ0FEUVFocUVKd0ZJQU5CQ0dvZ0F4Q3VCZzBBQ3dzZ0EwRVFhaVFBQzBNQkFYOGpBRUVRYXlJQkpBQWdBQkE3R2lBQlFkV3ExYW9CTmdJTUlBRkIvLy8vL3djMkFnZ2dBVUVNYWlBQlFRaHFFS1FCS0FJQUlRQWdBVUVRYWlRQUlBQUxhUUVDZnlBQUVJc0VJQUVvQWdRaEF5QUFFRHNnQUNnQ0FDQUNJQUZCQkdvaUJCRFdEU0FBRURzZ0FpQUFLQUlFSUFGQkNHb2lBaERxR0NBQUlBUVFMaUFBUVFScUlBSVFMaUFBRUJzZ0FSQWpFQzRnQVNBQktBSUVOZ0lBSUFBZ0FCQ25BUkQ1QlNBREM2d0NBUVovSXdCQk1Hc2lBeVFBQWtBZ0FDZ0NDQ0FBRUNNb0FnQkhEUUFnQUVFSWFpRUVJQUJCQkdvaEJTQUFLQUlFSWdJZ0FDZ0NBQ0lHU3dSQUlBUWdBaUFFS0FJQUlBSWdBaUFHYTBFTWJVRUJha0YrYlVFTWJDSUVhaERwR0RZQ0FDQUZJQVVvQWdBZ0JHbzJBZ0FNQVFzZ0F5QUFFQ01vQWdBZ0FDZ0NBR3RCREcxQkFYUTJBaGdnQTBFQk5nSXNJQU5CR0dvZ0EwRVlhaUFEUVN4cUVGSW9BZ0FpQWlBQ1FRSjJJQUFvQWhBUSt3Z2hBaUFEUVJCcUlBQW9BZ1FRTVNFR0lBTkJDR29nQUNnQ0NCQXhJUWNnQWlBR0tBSUFJQWNvQWdBUTZ4Z2dBQ0FDRUM0Z0JTQUNRUVJxRUM0Z0JDQUNRUWhxRUM0Z0FCQWpJQUlRSXhBdUlBSVErZ2dMSUFBb0FoQWdBQ2dDQ0NBQkVJZ0VJQUFnQUNnQ0NFRU1hallDQ0NBRFFUQnFKQUFMYVFFQ2Z5QUJJQUFvQWdRaUJTQURhMEVNYlVFTWJHb2lCQ0FDU1FSQUlBUWhBd05BSUFBUU95QUFLQUlFSUFNUWlBUWdBQ0FBS0FJRVFReHFOZ0lFSUFOQkRHb2lBeUFDU1EwQUN3c2dCQ0FCYXlJQUJFQWdCU0FBUVhSdFFReHNhaUFCSUFBUTVBTUxDN0VCQVFSL0l3QkJFR3NpQmlRQUlBQVFIeUlEUVFCUEJFQUNRQ0FBRUYwaUJTQURheUFDVHdSQUlBSkZEUUVnQUJBVElnUWdBeUlGQkg4Z0FpQUVhaUFFSUFVUWdRWWdBU0FDYWlBQklBTWdCR29nQVVzYklBRWdCQ0FCVFJzRklBRUxJQUlRZ1FZZ0FDQUNJQU5xSWdFUWh3TWdCa0VBT2dBUElBRWdCR29nQmtFUGFoQ1VBUXdCQ3lBQUlBVWdBaUFEYWlBRmF5QURRUUJCQUNBQ0lBRVFyZ2tMSUFaQkVHb2tBQ0FBRHdzUWJnQUxOZ0VCZnlBQklBQW9BZ2hIQkVBRFFDQUFLQUlRR2lBQUlBQW9BZ2hCY0dvaUFqWUNDQ0FDRU5zQklBQW9BZ2dnQVVjTkFBc0xDem9BSUFFZ0FrY0VRQ0FES0FJQUlRQURRQ0FBUVhCcUlBSkJjR29pQWhET0Job2dBeUFES0FJQVFYQnFJZ0EyQWdBZ0FTQUNSdzBBQ3dzTExBQWdBQ2dDQUJvZ0FDZ0NBQ0FBRUxrRFFRUjBhaG9nQUNnQ0FCb2dBQ2dDQUNBQUVLZ0JRUVIwYWhvTE1RRUJmeUFCSUFBb0FnUWlBa2NFUUFOQUlBQVFPeG9nQWtGd2FpSUNFTnNCSUFFZ0FrY05BQXNMSUFBZ0FUWUNCQXRSQVFGL0lBQVE5d1VnQUJBN0lBQW9BZ0FnQUNnQ0JDQUJRUVJxSWdJUThoZ2dBQ0FDRUM0Z0FFRUVhaUFCUVFocUVDNGdBQkFiSUFFUUl4QXVJQUVnQVNnQ0JEWUNBQ0FBSUFBUXFBRVFud1lMeFFRQkFYOGpBRUhnQUdzaUJ5UUFBa0FnQWtFSVJpQUJRZEo4YWtFSlMzSkZCRUFnQlVHMDVRaEJBVUhVNVFnUUhTQUZRZGpsQ0VFQlFkVGxDQkFkUVFBaEFBd0JDeUFDUVFoR0lBRkIvbjVxUWFFQ1MzSkZCRUFnQlVHRjVnaEJBVUdnNWdnUUhTQUZRYVRtQ0VFQlFhRG1DQkFkQ3lBQlFhUURTQ0VBSUFKQkNFWWdBVUhxZm1wQmd3SkxjZzBBSUFWQnZlWUlRUUZCL0tvSUVCMExBa0FnQkVGL2FpSUVRUU5MRFFBQ1FBSkFJQVJCQW1zT0FnSUFBUXNDUUNBQlFlUUFSZzBBSUFFZ0FpQURFT1VDSVFFZ0FrRUlSeUFBY1EwQUlBRkZEUUlMSUFkQkNHcEJBVUVaSUFKQkNFWkJBWFJCQkJEOENDRUFRUkFRUmhDekF5SUJJQVlvQWl3UTNnNGdBQ0FCRUpBRVFZQUJFRVlpQVVITjVnZ1F3Z0VnQUVFQUVPMENHaUFGSUFFUTdBSWFRYzNtQ0VFWlFjSUFJQVVRM3dFZ0FCQTFHZ3dCQzBHb3FBaEJqNmdJUVI0Z0JSQldRYWlvQ0VHYnFBaEJIeUFGRUZaQnFLZ0lRY09vQ0VFaElBVVFWa0dvcUFoQjA2Z0lRU0lnQlJCV1FhaW9DRUcxcUFoQklDQUZFRlpCcUtnSVFZQ3JDRUV0SUFVUVZrR29xQWhCanFzSVFTNGdCUkJXUWFpb0NFR2Jxd2hCTHlBRkVGWkJxS2dJUWJLckNFRXdJQVVRVmtHb3FBaEJ5S3NJUVRFZ0JSQldRYWlvQ0VIVXF3aEJNaUFGRUZZZ0JVR29xQWhCektrSVFRRkI1S2tJRUxNQklBVkJxS2dJUVlPcUNFRUJRWmlxQ0JDekFVR29xQWhCektrSVFkVUFJQVVRVmtHb3FBaEJnNm9JUWRjQUlBVVFWaUFDUVFoSERRQWdCVUdvcUFoQm02Z0lRUUpCN0tzSUVMTUJDeUFIUWVBQWFpUUFDekVCQVg4Z0FDZ0NFQm9nQUNnQ0NDRUNBMEFnQWhEWURTQUFJQUFvQWdoQkVHb2lBallDQ0NBQlFYOXFJZ0VOQUFzTE9nRUJmeU1BUVJCcklnSWtBQ0FBRURzYUEwQWdBQ2dDQkJEWURTQUFJQUFvQWdSQkVHbzJBZ1FnQVVGL2FpSUJEUUFMSUFKQkVHb2tBQXVLQVFFQ2Z5TUFRU0JySWdNa0FBSkFJQUFRR3lnQ0FDQUFLQUlFYTBFRWRTQUJUd1JBSUFBZ0FSRDRHQXdCQ3lBQUVEc2hBaUFEUVFocUlBQWdBQkNvQVNBQmFoRGFEU0FBRUtnQklBSVEyUTBpQWlBQkVQY1lJQUFnQWhEMUdDQUNJQUlvQWdRUThSZ2dBaWdDQUFSQUlBSW9BaEFhSUFJb0FnQWFJQUlRL2dnYUN3c2dBMEVnYWlRQUN5d0JBWDhnQVNBQUtBSUVJZ0pIQkVBRFFDQUFFRHNhSUFKQmRHb2lBaUFCUncwQUN3c2dBQ0FCTmdJRUN4d0JBWDhnQUNnQ0ZDSUJJQUFvQWhnZ0FTZ0NBQ2dDaEFFUkF3QUxIQUVCZnlBQUtBSVVJZ0VnQUNnQ0dDQUJLQUlBS0FLQUFSRURBQXNmQVFGL0lBQW9BaFFpQXlBQUtBSVlJQUVnQWlBREtBSUFLQUo0RVFRQUN4OEFJQUFnQUNnQ0FDZ0NrQUVSQUFBZ0FDQUFLQUlBS0FLVUFSRUFBR3NMQ0FBZ0FDZ0NsQUVMQ2dBZ0FFRVVhaENuQVFzSUFDQUFMUUNUQVFzS0FDQUFRUUU2QUpNQkN3Z0FJQUF0QUpJQkN3b0FJQUJCQVRvQWtnRUxDQUFnQUMwQWtRRUxDZ0FnQUVFQk9nQ1JBUXNJQUNBQUxRQ1FBUXNJQUNBQUtBS01BUXNLQUNBQUlBRTJBb3dCQ3djQUlBQW9BbmdMa0FFQkEzOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQVFIeUlEUVFCUEJFQWdBUVJBSUFBUUV5RUJJQUlnQXpZQ0NDQUNJQUpCREdvZ0FrRUlhaENrQVNnQ0FDSUVOZ0lNSUFBZ0F5QURJQVJySWdBRWZ5QUJJQUVnQkdvZ0FCQ0JCaUFDS0FJTUJTQUVDMnNpQUJDSEF5QUNRUUE2QUFjZ0FDQUJhaUFDUVFkcUVKUUJDeUFDUVJCcUpBQVBDeEJ1QUFzUEFDQUFRZndBYWlBQkVCOFFpeGtMK1FFQkFuOGpBRUVnYXlJREpBQWdBeUFCTmdJWUlBQW9BZ0FoQVNBRElBQVFRRFlDQUNBQklBTkJHR29nQXhEOUNFRU1iR29oQVFKQUlBQW9BZ1FnQUJBYktBSUFTUVJBSUFBb0FnUWlCQ0FCUmdSQUlBQVFPeUFBS0FJRUlBSVFpQVFnQUNBQUtBSUVRUXhxTmdJRURBSUxJQUFnQVNBRUlBRkJER29RN3hnZ0FTQUNUUVJBSUFKQkRHb2dBaUFDSUFBb0FnUkpHeUVDQ3lBQklBSXBBZ0EzQWdBZ0FTQUNLQUlJTmdJSURBRUxJQUFRT3lFRUlBTWdBQ0FBRUtjQlFRRnFFTmNOSUFFZ0FDZ0NBR3RCREcwZ0JCRDdDQ0lFSUFJUTdoZ2dBQ0FFSUFFUTdSZ2hBU0FFRVBvSUN5QUJFR0VhSUFOQklHb2tBQXR1QVFKL0l3QkJJR3NpQXlRQUlBTWdBaERDQVRZQ0VFSFVBQkJHSWdKQkFFRUFRUUZCQUVFQVFRQVFSU0VFSUFOQkFEWUNHQ0FESUFJMkFoUWdCQ0FCRUk4QklBTWdBRUVVYWlJQUVFQTJBZ0FnQUNBRFFRaHFJQU1RWnlnQ0FDQURRUkJxRUkwWklBTkJJR29rQUFzOEFRRi9JQUJCRkdvZ0FSRGtEU0FCS0FJRUlBQkIvQUJxSWdJUTZBMGdBa0U3RU9jQ0lBRW9BZ2dFUUNBQUlBQW9BcFFCUVFGcU5nS1VBUXNMQ0FBZ0FFSDhBR29MRlFBZ0FDQUJFTUVPSUFCQi9BQnFJQUVRM2cwYUN3OEFJQUFvQW5nZ0FSREVBU2dDQUFzWkFDQUFLQUo0SWdCRkJFQkJBQThMSUFBZ0FSREVBUkFXQ3dvQUlBQW9BbmhCQUVjTFJnRUJmeUFBRUtnQklnSWdBVWtFUUNBQUlBRWdBbXNRK1JnUEN5QUNJQUZMQkVBZ0FDZ0NBQ0FCUVFSMGFpRUJJQUFRcUFFaEFpQUFJQUVROUJnZ0FDQUNFUE1ZQ3d0VkFRRi9JQUFvQW5oRkJFQWdBRUVBRU1BT0lnUTJBbmdnQkNBQUtBSlVFRGNRbFJrTElBSkJBVTRFUUVFQUlRUURRQ0FBS0FKNElBRVF4QUVnQXlBRVFRSjBhaERjQVNBRVFRRnFJZ1FnQWtjTkFBc0xDd2NBSUFBb0Fud0xDUUFnQUNBQk5nSjhDdzBBSUFCQjdBQnFJQUVRM0FRTEJ3QWdBQzBBYUFzSUFDQUFFTjhOR2d0NEFRUi9Jd0JCRUdzaUF5UUFJQUFnQUNnQ0JDSUVJQUZxSWdVMkFnUWdCRUVBSUFWQmYyb2dCRUYvYW5OQklFa2JSUVJBSUFBb0FnQWlCaUFHSUFWQmYycEJBM1pCL1AvLy93RnhhaUFGUVNGSkcwRUFOZ0lBQ3lBRFFRaHFJQUFnQkJDSEJ5QURRUWhxSUFFZ0FoRGxHQ0FEUVJCcUpBQUx1Z0lCQm44akFFRWdheUlDSkFCQkhCQkdJZ0VRL2cwaEJTQUJJQUFvQWhRMkFoUWdBU0FBTFFBWU9nQVlJQUFvQWhRaEFTQUNRUUE2QUFBZ0FrRVFhaUFCSUFJUTR3MGhCaUFDUVFocUlnTWdBQkRSQWpZQ0FDQUNJQUFRZmpZQ0FDQURJQUlRaUFFRVFBTkFBa0FnQXhCWEtBSVFJZ0VnQVNnQ0FDZ0NMQkVBQUNJQkJFQWdBaUFHSUFFZ0FTZ0NBQ2dDWUJFQUFCQ2FCU0FDRUlFSkRRRWdBU0FCS0FJQUtBSllFUUFBSWdRZ0JDZ0NBQ2dDQUJFQUFDSUVRWkhQRHhEQ0FTQUVLQUlBS0FJUUVRRUFJQVVnQkVFQUVLWUhHaUFDSUFZZ0FTQUJLQUlBS0FKZ0VRQUFFSm9GSUFKQkFSQ0pCd3dCQ3lBRklBTVFWeWdDRUNJQklBRW9BZ0FvQWdBUkFBQkJBQkNtQnhvTElBTVFxUUVnQWlBQUVINDJBZ0FnQXlBQ0VJZ0JEUUFMQ3lBR0VJZ0hJQUpCSUdva0FDQUZDd3dBUVpnQkVFWWdBQkNoR1F0WkFRSi9Jd0JCSUdzaUF5UUFJQUFRT3lJQ0lBTkJDR29nQUNBQUVLY0JRUUZxRU5jTklBQVFwd0VnQWhEN0NDSUNLQUlJSUFFUWlBUWdBaUFDS0FJSVFReHFOZ0lJSUFBZ0FoRG1HQ0FDRVBvSUlBTkJJR29rQUFzM0FRRi9JQUFDZjBFQUlBRW9BZ0FpQWtVTkFCb2dBaEFURU1JQkN6WUNBQ0FBSUFFb0FnUVF6UWsyQWdRZ0FDQUJLQUlJTmdJSUM2VUNBUWQvSXdCQkVHc2lBeVFBSUFBZ0FSRGxEU0VHSUFCQnZNOFBOZ0lBSUFCQkZHb1Frd0VoQkNBQVFTUnFRUUJCQUVFQlFRQkJBRUVBRUVVaEJ5QUFRZndBYWhEVkFTRUlJQUZCRkdvaUJSQ25BUVJBQTBBZ0JDQURFT1FOSUFRUStBVWdCU0FDRU5RREVLQVpJQUpCQVdvaUFpQUZFS2NCU1EwQUN3c2dBRUVBTmdJTUlBRWdBU2dDQUNnQ1JCRUFBRUVBU2dSQUlBWWdBU0FCS0FJQUtBSkVFUUFBSUFFZ0FTZ0NBQ2dDU0JFQUFDQUFLQUlBS0FKQUVRWUFDeUFISUFGQkpHb1FpQVlnQ0NBQlFmd0FhaERvQWlBQUlBRW9Bb3dCTmdLTUFTQUFJQUV0QUpBQk9nQ1FBU0FBSUFFdEFKRUJPZ0NSQVNBQUlBRXRBSklCT2dDU0FTQUFJQUV0QUpNQk9nQ1RBU0FBSUFFb0FwUUJOZ0tVQVNBRFFSQnFKQUFnQUFzTUFFR0FBUkJHSUFBUW94a0x4d0lCQkg4akFFRVFheUlFSkFBZ0FDQUJFT1VOSVFJZ0FFSG8wQTgyQWdBZ0FFRVVha0VBUVFCQkFVRUFRUUJCQUJCRklRTWdBRUhzQUdvUXB3Y2hCU0FESUFGQkZHb2lBeENJQmlBQUlBRXRBR2c2QUdnZ0FFSUFOd0owSUFCQkFEWUNEQ0FCSUFFb0FnQW9Ba1FSQUFCQkFVNEVRQ0FDSUFFZ0FTZ0NBQ2dDUkJFQUFDQUJJQUVvQWdBb0FrZ1JBQUFnQUNnQ0FDZ0NRQkVHQUFzQ1FDQUJJQUVvQWdBb0Fud1JBQUJGRFFBZ0F5Z0NRQkEzUVFGSURRQkJBQ0VDQTBBZ0FTQUNJQUVvQWdBb0FvQUJFUU1BUVFGT0JFQWdBQ0FDSUFFZ0FpQUJLQUlBS0FLQUFSRURBQ0FCSUFJZ0FTZ0NBQ2dDaEFFUkF3QWdBQ2dDQUNnQ2VCRUVBQXNnQWtFQmFpSUNJQU1vQWtBUU4wZ05BQXNMSUFGQjdBQnFJZ0VRbXdWRkJFQWdCU0FFUVFocUlBRkJBQ0FCRUkwR0VKd0tFTndFQ3lBRVFSQnFKQUFnQUF0ckFRSi9Jd0JCRUdzaUFTUUFJQUVnQUJEUkFqWUNDQ0FCSUFBUWZqWUNBQ0FCUVFocUlBRVFpQUVFUUFOQUlBRkJDR29RVnlnQ0VDSUNJQUlvQWdBb0FsUVJCUUFnQVVFSWFoQ3BBU0FCSUFBUWZqWUNBQ0FCUVFocUlBRVFpQUVOQUFzTElBRkJFR29rQUF1WEFRRUZmeU1BUVNCcklnVWtBQ0FGUVJocUlBQWdCVUVJYWlBQkVDSWlCaEN3QlJEY0F5RUVJQVlRR1JvQ1FDQUVJQVZCQ0dvZ0FCQitFTndESWdZUWlBRkZEUUFEUUNBRUVGY2lCeEQ5QlNJSVFYOUdEUUVnQnlBSUlBRVFoUUlOQVNBRUVGY29BaEFpQnlBQ0lBTWdCeWdDQUNnQ1FCRUdBQ0FFRUtrQklBUWdCaUFBRUg0UTNBTVFpQUVOQUFzTElBVkJJR29rQUF1aUFRRUZmeU1BUVNCcklnVWtBQ0FGUVJocUlBQWdCVUVJYWlBQkVDSWlCaEN3QlJEY0F5RURJQVlRR1JvQ1FDQURJQVZCQ0dvZ0FCQitFTndESWdZUWlBRkZEUUFEUUNBREVGY2lCQkQ5QlNJSFFYOUdEUUVnQkNBSElBRVFoUUlOQVNBREVGY29BaEFpQkNBRUtBSUFLQUljRVFBQUlnUWdBaUFFS0FJQUtBSm9FUUVBSUFNUXFRRWdBeUFHSUFBUWZoRGNBeENJQVEwQUN3c2dCVUVnYWlRQUM0a0JBUUovSXdCQkVHc2lBU1FBSUFFZ0FCRFJBallDQ0NBQklBQVFmallDQUNBQlFRaHFJQUVRaUFFRVFBTkFJQUZCQ0dvUVZ5Z0NFQ0lDQkVBZ0FpQUNLQUlBS0FJSUVRVUFDeUFCUVFocUVLa0JJQUVnQUJCK05nSUFJQUZCQ0dvZ0FSQ0lBUTBBQ3dzZ0FDZ0NFQ0lDQkVBZ0FoQXFDeUFBSUFBUVBCRC9DQ0FCUVJCcUpBQWdBQXNJQUNBQUVPWU5HZ3NsQUNBQUtBSUFCRUFnQUNBQUtBSUFFUG9ZSUFBUU94b2dBQ2dDQUJvZ0FCQ3JBeG9MQzA4QkEzOGdBQkRCQWlJQ1FRQk9CRUFnQVVFUWFpRURBMEFnQTBHdHp3OFFFQ0FDRUpVQlFZblBEeEFRR2lBQUlBSVFFU2dDQUNBQkVLc1pJQUpCQUVvaEJDQUNRWDlxSVFJZ0JBMEFDd3NMYUFFRGZ5TUFRUkJySWdJa0FDQUNRUWhxSWdNZ0FCRFJBallDQUNBQ0lBQVFmallDQUNBRElBSVFpQUVFUUFOQUlBTVFWeWdDRUNJRUlBRkJBU0FFS0FJQUtBSk1FUVlBSUFNUXFRRWdBaUFBRUg0MkFnQWdBeUFDRUlnQkRRQUxDeUFDUVJCcUpBQUxTQUFnQVVFUWFrR1d6dzhRRUNBQUlBQW9BZ0FvQWx3UkFBQVFsUUZCcU04UEVCQWdBQ0FBS0FJQUtBSllFUUFBSWdBZ0FDZ0NBQ2dDREJFQUFCQVRFQkJCaWM4UEVCQWFDL0FEQVFoL0l3QkJRR29pQXlRQUlBRkJFR29pQmlBQUlBQW9BZ0FvQWd3UkFBQVFFeEFRUVlEUER4QVFJUVFDUUNBQ0JFQWdBMEV3YWlBQVFTUnFFTW9CSUFRZ0EwRXdhaEM1QVVHRHp3OFFFQ0FBSUFBb0FnQW9BZ3dSQUFBUUV4QVFRWXZQRHhBUUdpQURRVEJxRUJrYUlBQWdBQ2dDQUNnQ2tBRVJBQUFpQ0VFQlRnUkFJQWhCZjJvaENTQUFRUlJxSVFwQkFDRUNBMEFnQTBFd2FpQUtJQUlRMUFNaUJDZ0NCQkRLQVNBR0lBTkJNR29RdVFGQmc4OFBFQkFoQndKL0lBUW9BZ1FpQlNBRktBSUFLQUtJQVJFQUFBUkFJQU5CRUdwQmpjOFBJQVFvQWdRaUJTQUZLQUlBS0FJVUVRQUFFS2dKSUFOQklHb2dBMEVRYWtHRHp3OFEyQU5CQVF3QkN5QURRU0JxUVpIUER4QWlHa0VBQ3lFRklBY2dBMEVnYWhDNUFTRUhBa0FnQkNnQ0FDSUVCRUFnQXlBRUVQOEJHZ3dCQ3lBRFFaSFBEeEFpR2dzZ0J5QURFTGtCUWZ6T0QwR1J6dzhnQWlBSlNCc1FFQm9nQXhBWkdpQURRU0JxRUJrYUlBVUVRQ0FEUVJCcUVCa2FDeUFEUVRCcUVCa2FJQUpCQVdvaUFpQUlSdzBBQ3dzZ0JrR1N6dzhRRUJvZ0FDQUJFT2NOREFFTElBTkJNR29nQUVFa2FoQ3BBaUFFSUFOQk1Hb1F1UUZCZzg4UEVCQWdBQ0FBS0FJQUtBSVlFUUFBRUJNUUVFR1V6dzhRRUJvZ0EwRXdhaEFaR2dzZ0JrR0p6dzhRRUJvZ0EwRkFheVFBQzZWL0FRTi9Jd0JCRUdzaUFDUUFBa0FnQkVFTlN3MEFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUUZyRGcwQkFnSURCQVVGQlFVRkJRY0dBQXNnQXlnQ0NDSUdRUUZPQkg5QnRaZ0lRUmtnQlJBY1FjU1lDRUVhSUFVUUhDQURLQUlJQlNBR0MwVUVRRUhWbUFoQkVVRVhJQVVRM3dGQjRaZ0lRUkpCR0NBRkVOOEJDeUFDUVFoSEJFQUNRQ0FCUWJnRFNBMEFJQVZCNzVnSVFRRkJnSmtJRUIwZ0JVR0VtUWhCQVVHQW1RZ1FIU0FGUVplWkNFRUJRWUNaQ0JBZFFlK1lDRUViSUFVUUhFR0VtUWhCSENBRkVCeEJsNWtJUVIwZ0JSQWNJQUZCekFOSURRQkJwSmtJUVJzZ0JSQWNRYktaQ0VFY0lBVVFIRUhDbVFoQkhTQUZFQndMSUFWQnpKa0lRUUZCNEprSUVCMGdCVUhrbVFoQkFVSGdtUWdRSFNBRlFmMlpDRUVCUWVDWkNCQWRJQVZCa3BvSVFRRkI0SmtJRUIwZ0JVR25tZ2hCQVVIZ21RZ1FIU0FGUWJ5YUNFRUJRZUNaQ0JBZElBVkIwWm9JUVFGQjRKa0lFQjBnQlVIbW1naEJBVUhnbVFnUUdpQUZRZkNhQ0VFQlFlQ1pDQkFhSUFWQmdwc0lRUUZCNEprSUVCb2dBVUd1QTA0RVFDQUZRWm1iQ0VFQlFheWJDQkFhSUFWQnNKc0lRUUZCckpzSUVCb2dCVUhDbXdoQkFVR3Ntd2dRR2dzZ0JVSFptd2hCQVVIc213Z1FHaUFGUWZDYkNFRUJRZXliQ0JBYUlBVkJncHdJUVFGQjdKc0lFQm9nQlVHVW5BaEJBVUhzbXdnUUdpQUZRYkNjQ0VFQlFleWJDQkFhSUFWQnpKd0lRUUZCN0pzSUVCb2dCVUhvbkFoQkFVSHNtd2dRR2lBRlFmNmNDRUVCUWV5YkNCQWFJQVZCbjUwSVFRRkI3SnNJRUJvZ0JVR3luUWhCQVVIc213Z1FHaUFGUWJ1ZENFRUJRZXliQ0JBYUlBVkIycDBJUVFGQjdKc0lFQm9nQlVINW5RaEJBVUhzbXdnUUdpQUZRWmllQ0VFQlFleWJDQkFhSUFWQndaNElRUUZCN0pzSUVCb2dCVUhxbmdoQkFVSHNtd2dRR2lBRlFaT2ZDRUVCUWV5YkNCQWFJQVZCc3A4SVFRRkI3SnNJRUJvZ0JVSFJud2hCQVVIc213Z1FHaUFGUWZDZkNFRUJRZXliQ0JBYUlBVkJtYUFJUVFGQjdKc0lFQm9nQlVIQ29BaEJBVUhzbXdnUUdpQUZRZXVnQ0VFQlFmQ2dDQkFhSUFWQjlLQUlRUUZCOEtBSUVCb2dCVUg1b0FoQkFVSHdvQWdRR2lBRlFmNmdDRUVCUVpTaENCQWRRZjZnQ0VFRFFRa2dCUkRmQVNBRlFaaWhDRUVCUVpTaENCQWFJQVZCcWFFSVFRRkJsS0VJRUJvZ0JVRzZvUWhCQVVHVW9RZ1FHaUFGUWNLaENFRUJRZGloQ0JBYUlBVkIzS0VJUVFGQjJLRUlFQm9MSUFWQjdhRUlRUUZCZ0tJSUVCb2dCVUdFb2doQkFVR0FvZ2dRR2lBRlFaZWlDRUVCUVlDaUNCQWFJQVZCcXFJSVFRRkJnS0lJRUJvZ0JVRzJvZ2hCQVVHQW9nZ1FHaUFGUWNlaUNFRUJRWUNpQ0JBYUlBVkJ6NklJUVFGQmdLSUlFQm9nQlVIZW9naEJBVUdBb2dnUUdpQUZRZXlpQ0VFQlFZQ2pDQkFhSUFWQmhLTUlRUUZCZ0tNSUVCb2dCVUdjb3doQkFVR0Fvd2dRR2lBRlFiS2pDRUVCUVlDakNCQWFJQVZCeWFNSVFRRkJnS01JRUJvZ0F5Z0NBRVVFUUVIbG93aEJQQ0FGRUJ4QjdxTUlRVDBnQlJBY1FZQ2tDRUVqSUFVUUhFR0twQWhCSkNBRkVCeEJsS1FJUVNVZ0JSQWNRYWFrQ0VFbUlBVVFIRUc0cEFoQkp5QUZFQnhCeXFRSVFTZ2dCUkFjUWR5a0NFRXBJQVVRSEVIdXBBaEJLaUFGRUJ4QmdLVUlRU3NnQlJBY1FaS2xDRUVzSUFVUUhFR2twUWhCTWlBRkVCd0xBa0FDUUNBQ1FRaEdCRUFDUUFKQUFrQWdBeWdDQUVVRVFDQUZRYkNsQ0VFQlFjU2xDQkFhSUFWQnlLVUlRUUZCeEtVSUVCb2dCVUhkcFFoQkFVSEVwUWdRR2lBQlFiWUNSdzBDSUFWQjhLVUlRUUpCaUtZSUVCb01BUXNnQVVHMkFrY05BUXNnQlVHUXBnaEJBa0dJcGdnUUdnd0JDeUFCUWI4Q1NnMENDeUFGUVpTbUNFRUJRYVNtQ0JBYUlBVkJxS1lJUVFGQnBLWUlFQm9nQlVHM3BnaEJBVUdrcGdnUUdpQUZRY2FtQ0VFQlFhU21DQkFhSUFWQjFhWUlRUUZCcEtZSUVCb2dCVUhqcGdoQkFVR2twZ2dRR2lBRlFmS21DRUVCUWFTbUNCQWFJQVZCaHFjSVFRRkJwS1lJRUJvTElBRkJyQUpJRFFFTElBVkJtcWNJUVFKQnFLY0lFQjFCbXFjSVFkQUFJQVVRSEFzZ0FrRUlSdzBCSUFWQnNLY0lRUUZCdktjSUVCb2dCVUhBcHdoQkFVRzhwd2dRR2dzZ0FrRUlSeUFCUWJZQ1NISU5BRUhRcHdoQk9pQUZFQndnQlVIUXB3aEJBVUhrcHdnUUhVSG9wd2hCT2lBRkVCd2dCVUhvcHdoQkFVSDhwd2dRSFNBQlFjQUNTQTBBUVlDb0NFRTZJQVVRSEF0Qmo2Z0lRUk5CSGlBRkVOOEJRWnVvQ0VFVVFSOGdCUkRmQVVHb3FBaEJqNmdJUVI0Z0JSQldRYWlvQ0VHYnFBaEJIeUFGRUZaQnJxZ0lRWStvQ0VFZUlBVVFWa0d1cUFoQm02Z0lRUjhnQlJCV1FiV29DRUVWUVNBZ0JSRGZBVUdvcUFoQnc2Z0lRU0VnQlJCV1FhaW9DRUhUcUFoQklpQUZFRlpCcnFnSVFjT29DRUVoSUFVUVZrR3VxQWhCMDZnSVFTSWdCUkJXUWNPb0NFRWhJQVVRSEVIVHFBaEJJaUFGRUJ4QjQ2Z0lRVFFnQlJBY1FmU29DRUUwSUFVUUhFR0RxUWhCTXlBRkVCeEJrNmtJUVRVZ0JSQWNRWnlwQ0VFMklBVVFIQ0FFUVFOSEJFQWdCVUdUcVFoQkFrR3dxUWdRSFNBRlFaeXBDRUVDUWJDcENCQWRDeUFGUWJpcENFRUJRY2lwQ0JBZElBVkJ6S2tJUVFGQjVLa0lFQjBnQlVIb3FRaEJBVUhrcVFnUUhTQUZRWU9xQ0VFQlFaaXFDQkFkSUFWQm5Lb0lRUUZCbUtvSUVCMUJ1S2tJUWRRQUlBVVFIRUhNcVFoQjFRQWdCUkFjUWVpcENFSFdBQ0FGRUJ4Qmc2b0lRZGNBSUFVUUhFR2NxZ2hCMkFBZ0JSQWNBa0FnQkVFRFN3MEFBa0FnQkVFQmF3NENBUUVBQ3lBRlFhaW9DRUhNcVFoQkFVSGtxUWdRc3dFZ0JVR29xQWhCZzZvSVFRRkJtS29JRUxNQlFhaW9DRUhNcVFoQjFRQWdCUkJXUWFpb0NFR0RxZ2hCMXdBZ0JSQldDeUFGUWE2b0NFRzRxUWhCQVVISXFRZ1Fzd0VnQlVHdXFBaEJ6S2tJUVFGQjVLa0lFTE1CSUFWQnJxZ0lRZWlwQ0VFQlFlU3BDQkN6QVNBRlFhNm9DRUdEcWdoQkFVR1lxZ2dRc3dFZ0JVR3VxQWhCbktvSVFRRkJtS29JRUxNQlFhNm9DRUc0cVFoQjFBQWdCUkJXUWE2b0NFSE1xUWhCMVFBZ0JSQldRYTZvQ0VIb3FRaEIxZ0FnQlJCV1FhNm9DRUdEcWdoQjF3QWdCUkJXUWE2b0NFR2NxZ2hCMkFBZ0JSQldRYldxQ0VFM0lBVVFIRUhJcWdoQk9DQUZFQnhCMnFvSVFUa2dCUkFjUWV5cUNFRTdJQVVRSENBQlFaa0RUQVJBSUFWQm5La0lRUUZCL0tvSUVCMExRYWlvQ0VHMXFBaEJJQ0FGRUZaQnFLZ0lRWUNyQ0VFdElBVVFWa0dvcUFoQmpxc0lRUzRnQlJCV1FhaW9DRUdicXdoQkx5QUZFRlpCcUtnSVFiS3JDRUV3SUFVUVZrR29xQWhCeUtzSVFURWdCUkJXUWFpb0NFSFVxd2hCTWlBRkVGWkJycWdJUWJXb0NFRWdJQVVRVmtHdXFBaEJnS3NJUVMwZ0JSQldRYTZvQ0VHT3F3aEJMaUFGRUZaQnJxZ0lRWnVyQ0VFdklBVVFWa0d1cUFoQnNxc0lRVEFnQlJCV1FhNm9DRUhJcXdoQk1TQUZFRlpCcnFnSVFkU3JDRUV5SUFVUVZrRzFxQWhCSUNBRkVCeEJnS3NJUVMwZ0JSQWNRWTZyQ0VFdUlBVVFIRUdicXdoQkx5QUZFQnhCc3FzSVFUQWdCUkFjUWNpckNFRXhJQVVRSEVIVXF3aEJNaUFGRUJ3Q1FDQUNRUWhISWdZTkFDQUVRUU5HQkVBZ0JVR2JxQWhCQWtIa3F3Z1FIU0FGUWFpb0NFR2JxQWhCQWtIa3F3Z1Fzd0VNQVFzZ0JFRi9ha0VCU3cwQUlBVkJtNmdJUVFKQjdLc0lFQjBnQlVHdXFBaEJtNmdJUVFKQjdLc0lFTE1CQ3lBQlFZc0JTaUFHY1NBQ1FRaEdJQUZCdFFKS2NYSWlCa0VCUmdSQUlBVkI5S3NJUVFGQmhLd0lFQjFCOUtzSVFkRUFJQVVRSENBRlFZaXNDRUVCUVppc0NCQWRRWWlzQ0VIUUFDQUZFQndMQWtBZ0FrRUlSZzBBUWVTWkNFRUtJQVVRSEVIOW1RaEJDeUFGRUJ4Qmtwb0lRUXdnQlJBY1FhZWFDRUVOSUFVUUhFRzhtZ2hCRGlBRkVCeEIwWm9JUVE4Z0JSQWNJQU1vQWdoQkFVNEVRRUhNbVFoQkEwRUpJQVVRM3dFTUFRdEJ6SmtJUVFrZ0JSQWNDeUFHUlEwRklBVkJuS3dJUVFGQnJLd0lFQjBnQlVHd3JBaEJBVUdzckFnUUhTQUZRY2lzQ0VFQlFkeXNDQkFkSUFWQjRLd0lRUUZCM0t3SUVCMGdCVUh5ckFoQkFVSGNyQWdRSFNBRlFZU3RDRUVCUWR5c0NCQWRJQVZCbHEwSVFRRkIzS3dJRUIxQm5Ld0lRUkFnQlJBY1FiQ3NDRUVSSUFVUUhFSElyQWhCRWlBRkVCeEI0S3dJUVJNZ0JSQWNRZktzQ0VFVUlBVVFIRUdFclFoQkZTQUZFQnhCbHEwSVFSWWdCUkFjSUFWQnFLMElRUUZCdUswSUVCMGdCVUc4clFoQkFVRzRyUWdRSFNBRlFjbXRDRUVCUWJpdENCQWRJQVZCMWEwSVFRRkJ1SzBJRUIxQnFLMElRZlFBSUFVUUhFRzhyUWhCOVFBZ0JSQWNRY210Q0VIMkFDQUZFQnhCMWEwSVFmY0FJQVVRSEF3RkMwSGZyUWhCRmtFK0lBVVEzd0ZCN3EwSVFSZEJQeUFGRU44QlFmdXRDRUVZUWNBQUlBVVEzd0VDUUNBREtBSUFSUVJBUVltdUNFRVpRY0VBSUFVUTN3RU1BUXNnQlNBQVFZbXVDQkFpSWdkQkFFRUFFS3dCSVFZZ0J4QVpHaUFHUlEwQUlBWWdCaWdDQUNnQ05CRUFBQ0lISUFjb0FnQW9BaWdSQUFBaUJ5QUhLUUlFUWtDRFFnU0VOd0lFSUFZZ0JpZ0NBQ2dDTkJFQUFDSUdJQVlvQWdBb0FpZ1JBQUFpQmlBR0tBSVVRWUJnY1RZQ0ZBdEJscTRJUVJwQnd3QWdCUkRmQVVHanJnaEJHa0hEQUNBRkVOOEJRYk91Q0VFRFFjZ0FJQVVRM3dGQnc2Z0lRU0VnQlJBY1FkT29DRUVpSUFVUUhFSDBxQWhCTkNBRkVCd2dBa0VJUnlBQlFZc0JTbkVpQmtFQlJnUkFJQVZCeDY0SVFRRkIzSzRJRUIxQng2NElRY1FBSUFVUUhBc0NRQ0FCUVlJQlRrRUFJQUpCQ0VjYlJVRUFJQUpCQ0VjZ0FVRzJBa2h5R3cwQVFlQ3VDRUhGQUNBRkVCeEI3SzRJUWNZQUlBVVFIRUgrcmdoQnh3QWdCUkFjSUFKQkNFWWdBVUdQQTBweVJRUkFRWXl2Q0VISEFDQUZFQndnQlVIK3JnaEJBVUdjcndnUUhTQUZRZUN1Q0VFQlFaeXZDQkFkSUFWQjdLNElRUUZCbks4SUVCMGdCVUdNcndoQkFVR2Nyd2dRSFF3QkMwR2dyd2hCeHdBZ0JSQWNJQUpCQ0VjZ0FVRy9Ba3B5RFFBZ0JVSGdyZ2hCQVVHd3J3Z1FIU0FGUWV5dUNFRUJRYkN2Q0JBZElBVkJvSzhJUVFGQnNLOElFQjBnQlVIK3JnaEJBVUd3cndnUUhTQUZRWXl2Q0VFQlFiQ3ZDQkFkQzBHVHFRaEJOU0FGRUJ4Qm5La0lRVFlnQlJBY1FhaW9DRUhVcXdoQk1pQUZFRlpCcUtnSVFjaXJDRUV4SUFVUVZrR29xQWhCNWFNSVFUd2dCUkJXUWFpb0NFSHVvd2hCUFNBRkVGWkIxS3NJUVRJZ0JSQWNRY2lyQ0VFeElBVVFIRUhsb3doQlBDQUZFQnhCN3FNSVFUMGdCUkFjQWtBZ0FrRUlSZ1JBQWtBZ0F5Z0NBQTBBSUFWQnRLOElRUUZCeEtVSUVCb2dCVUhFcndoQkFVSEVwUWdRR2lBRlFkaXZDRUVCUWNTbENCQWFJQVZCc0tVSVFRRkJ4S1VJRUJvZ0JVSElwUWhCQVVIRXBRZ1FHaUFGUWQybENFRUJRY1NsQ0JBYUlBRkJ2d0pLRFFBZ0JVSHdwUWhCQWtHSXBnZ1FHZ3NnQVVHMkFrY0VRQ0FCUWVRQVJ3MENJQVZCNnE4SVFRRkI4SzhJRUJvZ0JVSDByd2hCQVVId3J3Z1FHaUFGUWZtdkNFRUJRZkN2Q0JBYURBSUxJQVZCa0tZSVFRSkJpS1lJRUJvZ0JVR0FzQWhCQVVHWXNBZ1FHaUFGUVp5d0NFRUJRWml3Q0JBYUlBVkJzTEFJUVFGQm1MQUlFQm9NQVFzZ0FVR0JBVW9OQUNBREtBSUFEUUFnQlVIRXNBaEJBVUhVc0FnUUdpQUZRZGl3Q0VFQlFkU3dDQkFhSUFWQjViQUlRUUZCMUxBSUVCb2dCVUh5c0FoQkFVSFVzQWdRR2lBRlFZR3hDRUVCUWRTd0NCQWFJQVZCa3JFSVFRRkIxTEFJRUJvZ0JVR2pzUWhCQVVIVXNBZ1FHaUFGUWJTeENFRUJRZFN3Q0JBYUlBVkJ3TEVJUVFGQjFMQUlFQm9nQlVITXNRaEJBVUhVc0FnUUdpQUZRZHl4Q0VFQlFkU3dDQkFhQ3dKQUlBSkJDRVlOQUNBREtBSUFEUUFnQlVIc3NRaEJBVUhVc0FnUUdpQUZRZjJ4Q0VFQlFkU3dDQkFhSUFWQmtySUlRUUZCMUxBSUVCb2dCVUdqc2doQkFVSFVzQWdRR2lBRlFiaXlDRUVCUWRTd0NCQWFJQVZCeWJJSVFRRkIxTEFJRUJvZ0JVSGVzZ2hCQVVIVXNBZ1FHaUFGUWZHeUNFRUJRZFN3Q0JBYUlBVkJnYk1JUVFGQjFMQUlFQm9nQlVHVnN3aEJBVUhVc0FnUUdpQUZRYVd6Q0VFQlFkU3dDQkFhSUFWQnViTUlRUUZCMUxBSUVCb2dCVUhPc3doQkFVSFVzQWdRR2lBRlFlZXpDRUVCUWRTd0NCQWFJQVZCKzdNSVFRRkIxTEFJRUJvTElBSkJDRVlnQVVHakEwcHlSUVJBSUFWQms3UUlRUUZCcExRSUVCb2dCVUdvdEFoQkFVSEF0QWdRR2lBRlFjUzBDRUVCUWNDMENCQWFJQVZCMjdRSVFRRkJ3TFFJRUJvTElBSkJDRVlnQVVIQkEwcHlSUVJBSUFWQjZiUUlRUUZCOUxRSUVCb2dCVUg0dEFoQkFVSDB0QWdRR2lBRlFZRzFDRUVCUWZTMENCQWFJQVZCakxVSVFRRkI5TFFJRUJvZ0JVR1h0UWhCQVVIMHRBZ1FHaUFGUWFLMUNFRUJRZlMwQ0JBYUN3SkFJQUpCQ0VZaUJ3MEFJQVZCcjdVSVFRRkJ3TFVJRUJvZ0JVSEV0UWhCQVVIQXRRZ1FHaUFGUWRpMUNFRUJRY0MxQ0JBYUlBVkI3N1VJUVFGQndMVUlFQm9nQlVHRHRnaEJBVUhBdFFnUUdpQUZRWjIyQ0VFQlFjQzFDQkFhSUFWQnQ3WUlRUUZCd0xVSUVCb2dCVUhNdGdoQkFVSEF0UWdRR2lBRlFlZTJDRUVCUWNDMUNCQWFJQVZCL3JZSVFRRkJ3TFVJRUJvZ0JVR2J0d2hCQVVIQXRRZ1FHaUFGUWJtM0NFRUJRY0MxQ0JBYUlBVkJ6TGNJUVFGQndMVUlFQm9nQlVIaHR3aEJBVUg0dHdnUUdpQUZRZnkzQ0VFQlFmaTNDQkFhSUFWQm1MZ0lRUUZCK0xjSUVCb2dCVUd5dUFoQkFVSDR0d2dRR2lBRlFkSzRDRUVCUWZpM0NCQWFJQVZCNHJnSVFRRkIrTGNJRUJvZ0JVSDR1QWhCQVVINHR3Z1FHaUFGUVl5NUNFRUJRZmkzQ0JBYUlBVkJwcmtJUVFGQndMa0lFQjBnQlVIRXVRaEJBVUhBdVFnUUhTQUZRZU81Q0VFQlFjQzVDQkFkSUFWQmdMb0lRUUZCd0xrSUVCMGdCVUdXdWdoQkFVSEF1UWdRSFNBRlFiUzZDRUVCUWNDNUNCQWRJQVZCMExvSVFRRkJ3TGtJRUIwZ0JVSHB1Z2hCQVVIQXVRZ1FHa0dtdVFoQnlRQWdCUkFjUWNTNUNFSEtBQ0FGRUJ4QjQ3a0lRY3NBSUFVUUhFR0F1Z2hCekFBZ0JSQWNRWmE2Q0VITkFDQUZFQnhCdExvSVFjNEFJQVVRSEVIUXVnaEJ6d0FnQlJBY0lBVkJnTHNJUVFGQmxMc0lFQm9nQlVHWXV3aEJBVUdVdXdnUUdpQUZRYks3Q0VFQlFaUzdDQkFhSUFWQnpic0lRUUZCbExzSUVCb2dCVUhudXdoQkFVR1V1d2dRR2lBRlFZZThDRUVCUVpTN0NCQWFJQVZCcUx3SVFRRkJ1THdJRUJvZ0JVRzh2QWhCQVVHNHZBZ1FHaUFGUWMyOENFRUJRYmk4Q0JBYUlBRkJyZ05JRFFBZ0JVSGp2QWhCQVVIOHZBZ1FIVUhqdkFoQjJRQWdCUkFjQzBFQUlBSkJDRWNnQVVIQkEwcHhJZ2hGSUFGQnZ3SktJQWR4RzBVRVFDQUZRWUM5Q0VFQlFaUzlDQkFkSUFWQm1MMElRUUZCbEwwSUVCMUJnTDBJUWRvQUlBVVFIRUdZdlFoQjJ3QWdCUkFjSUFWQnNiMElRUUZCd0wwSUVCMGdCVUhFdlFoQkFVSEF2UWdRSFVHeHZRaEI2Z0FnQlJBY1FjUzlDRUhyQUNBRkVCd0xJQWdnQWtFSVJpQUJRYlVDU25FaUIzSkJBVVlFUUNBRlFkcTlDRUVCUWV5OUNCQWRJQVZCOEwwSVFRRkI3TDBJRUIxQjJyMElRZElBSUFVUUhFSHd2UWhCMHdBZ0JSQWNDeUFGUWFPdUNFRUJRWXkrQ0JBZElBVkJrTDRJUVFGQm5MNElFQm9nQlVHZ3ZnaEJBVUdjdmdnUUdpQUZRYTIrQ0VFQlFjQytDQkFhSUFWQnhMNElRUUZCd0w0SUVCb2dBa0VJUnlBQlFiOENTbkpGQkVBZ0JVSDBxQWhCQWtIY3ZnZ1FIU0FGUVpPcENFRUNRZHkrQ0JBZElBVkJsS1lJUVFGQnBLWUlFQm9nQlVHb3BnaEJBVUdrcGdnUUdpQUZRYmVtQ0VFQlFhU21DQkFhSUFWQnhxWUlRUUZCcEtZSUVCb2dCVUhWcGdoQkFVR2twZ2dRR2lBRlFlT21DRUVCUWFTbUNCQWFJQVZCOHFZSVFRRkJwS1lJRUJvZ0JVR0dwd2hCQVVHa3BnZ1FHZ3NnQlVIMHF3aEJBVUdFckFnUUhVSDBxd2hCMFFBZ0JSQWNJQVZCaUt3SVFRRkJtS3dJRUIxQmlLd0lRZEFBSUFVUUhDQUJRYXdDVGdSQUlBVkJtcWNJUVFKQnFLY0lFQjFCbXFjSVFkQUFJQVVRSEFzQ1FDQUNRUWhHRFFBZ0JVSE1tUWhCQVVIZ21RZ1FIU0FGUWVTWkNFRUJRZUNaQ0JBZElBVkIvWmtJUVFGQjRKa0lFQjBnQlVHU21naEJBVUhnbVFnUUhTQUZRYWVhQ0VFQlFlQ1pDQkFkSUFWQnZKb0lRUUZCNEprSUVCMGdCVUhSbWdoQkFVSGdtUWdRSFVIa21RaEJDaUFGRUJ4Qi9aa0lRUXNnQlJBY1FaS2FDRUVNSUFVUUhFR25tZ2hCRFNBRkVCeEJ2Sm9JUVE0Z0JSQWNRZEdhQ0VFUElBVVFIQ0FES0FJSVFRRk9CRUJCekprSVFRTkJDU0FGRU44QkRBRUxRY3laQ0VFSklBVVFIQXNnQmlBSGNrRUJSZ1JBSUFWQm5Ld0lRUUZCckt3SUVCMGdCVUd3ckFoQkFVR3NyQWdRSFNBRlFjaXNDRUVCUWR5c0NCQWRJQVZCNEt3SVFRRkIzS3dJRUIwZ0JVSHlyQWhCQVVIY3JBZ1FIU0FGUVlTdENFRUJRZHlzQ0JBZElBVkJscTBJUVFGQjNLd0lFQjFCbkt3SVFSQWdCUkFjUWJDc0NFRVJJQVVRSEVISXJBaEJFaUFGRUJ4QjRLd0lRUk1nQlJBY1FmS3NDRUVVSUFVUUhFR0VyUWhCRlNBRkVCeEJscTBJUVJZZ0JSQWNJQVZCNUw0SVFRRkJyS3dJRUJvZ0JVSDB2Z2hCQVVHc3JBZ1FHaUFGUVlxL0NFRUJRYXlzQ0JBYUlBVkJwcjhJUVFGQnJLd0lFQm9nQlVIQnZ3aEJBVUdzckFnUUdpQUZRYysvQ0VFQlFkeS9DQkFhSUFWQjRMOElRUUZCM0w4SUVCb2dCVUhzdndoQkFVSGN2d2dRR2lBRlFmMi9DRUVCUWR5c0NCQWFJQVZCajhBSVFRRkIzS3dJRUJvZ0JVR213QWhCQVVIY3JBZ1FHaUFGUWJYQUNFRUJRZHlzQ0JBYUlBVkJ5OEFJUVFGQjNLd0lFQm9nQlVIa3dBaEJBVUhjckFnUUdpQUZRZnZBQ0VFQlFkeXNDQkFhSUFWQm04RUlRUUZCM0t3SUVCb2dCVUc3d1FoQkFVSGNyQWdRR2lBRlFkSEJDRUVCUWR5c0NCQWFJQVZCNThFSVFRRkIrTUVJRUJvZ0JVSDh3UWhCQVVINHdRZ1FHaUFGUVkvQ0NFRUJRYVRDQ0JBYUlBVkJxTUlJUVFGQnBNSUlFQm9nQlVHOHdnaEJBVUhJd2dnUUdpQUZRY3pDQ0VFQlFjakNDQkFhSUFWQjJNSUlRUUZCeU1JSUVCb2dCVUhrd2doQkFVSEl3Z2dRR2lBRlFmRENDRUVCUWNqQ0NCQWFJQVZCL01JSVFRRkJ5TUlJRUJvZ0JVR0h3d2hCQVVISXdnZ1FHaUFGUVpQRENFRUJRY2pDQ0JBYUlBVkJxTU1JUVFGQnlNSUlFQm9nQlVHOXd3aEJBVUhJd2dnUUdpQUZRZExEQ0VFQlFjakNDQkFhSUFWQjU4TUlRUUZCeU1JSUVCb2dCVUg4d3doQkFVSEl3Z2dRR2lBRlFaREVDRUVCUWNqQ0NCQWFJQVZCcGNRSVFRRkJ5TUlJRUJvZ0JVRzZ4QWhCQVVISXdnZ1FHaUFGUWMvRUNFRUJRY2pDQ0JBYUlBVkI1TVFJUVFGQnlNSUlFQm9nQlVINXhBaEJBVUhJd2dnUUdpQUZRWTdGQ0VFQlFjakNDQkFhSUFWQm9zVUlRUUZCeU1JSUVCb2dCVUczeFFoQkFVSE14UWdRR2lBRlFkREZDRUVCUWN6RkNCQWFJQVZCNWNVSVFRRkJ6TVVJRUJvZ0JVSDZ4UWhCQVVITXhRZ1FHaUFGUVkvR0NFRUJRY3pGQ0JBYUlBVkJwTVlJUVFGQnpNVUlFQm9nQlVHNHhnaEJBVUhNeFFnUUdpQUZRYzNHQ0VFQlFlVEdDQkFhSUFWQjZNWUlRUUZCNU1ZSUVCb2dCVUdEeHdoQkFVSGt4Z2dRR2lBRlFaekhDRUVCUWVUR0NCQWFJQVZCdGNjSVFRRkJ6TWNJRUJvZ0JVSFF4d2hCQVVITXh3Z1FHaUFGUWVuSENFRUJRY3pIQ0JBYUlBVkJnc2dJUVFGQnpNY0lFQm9nQlVHYnlBaEJBVUhNeHdnUUdpQUZRYlRJQ0VFQlFjekhDQkFhSUFWQnpjZ0lRUUZCek1jSUVCb2dCVUhseUFoQkFVSE14d2dRR2lBRlFmN0lDRUVCUWN6SENCQWFJQVZCb01rSVFRRkJ6TWNJRUJvZ0JVSEN5UWhCQVVITXh3Z1FHaUFGUWVUSkNFRUJRY3pIQ0JBYUlBVkJoc29JUVFGQnpNY0lFQm9nQlVHb3lnaEJBVUhNeHdnUUdpQUZRY25LQ0VFQlFjekhDQkFhSUFWQjY4b0lRUUZCek1jSUVCb2dCVUdOeXdoQkFVSE14d2dRR2lBRlFhL0xDRUVCUWN6SENCQWFJQVZCMGNzSVFRRkJ6TWNJRUJvZ0JVSHp5d2hCQVVITXh3Z1FHaUFGUVpYTUNFRUJRY3pIQ0JBYUlBVkJ0c3dJUVFGQnpNY0lFQm9nQlVHb3JRaEJBVUc0clFnUUhTQUZRYnl0Q0VFQlFiaXRDQkFkSUFWQnlhMElRUUZCdUswSUVCMGdCVUhWclFoQkFVRzRyUWdRSFVHb3JRaEI5QUFnQlJBY1FieXRDRUgxQUNBRkVCeEJ5YTBJUWZZQUlBVVFIRUhWclFoQjl3QWdCUkFjQ3lBQ1FRaEdCRUFnQlVHd3B3aEJBVUc4cHdnUUdpQUZRY0NuQ0VFQlFieW5DQkFhQ3lBREtBSUlRUUZPQkVBZ0JVSFl6QWhCQVVIb3pBZ1FIU0FGUWV6TUNFRUJRZWpNQ0JBZElBVkIvc3dJUVFGQjZNd0lFQjBnQlVHUHpRaEJBVUhvekFnUUhTQUZRYUxOQ0VFQlFlak1DQkFkSUFWQnRzMElRUUZCNk13SUVCMGdCVUhLelFoQkFVSG96QWdRSFNBRlFkN05DRUVCUWVqTUNCQWRJQVZCK2MwSVFRRkI2TXdJRUIwZ0JVR1R6Z2hCQVVIb3pBZ1FIU0FGUWF2T0NFRUJRZWpNQ0JBZElBVkJ3TTRJUVFGQjZNd0lFQjBnQlVIWXpnaEJBVUhvekFnUUhTQUZRZkxPQ0VFQlFlak1DQkFkSUFWQmpNOElRUUZCNk13SUVCMGdCVUdsendoQkFVSG96QWdRSFFzZ0JVRy96d2hCQVVIVXp3Z1FHZ3dFQzBIWXp3aEJBU0FGRUJ4QjZjOElRUUlnQlJBY1FmclBDRUVESUFVUUhFR0owQWhCQkNBRkVCeEJudEFJUVFVZ0JSQWNRYlRRQ0VFR0lBVVFIRUgwcXdoQjBRQWdCUkFjUVlpc0NFSFFBQ0FGRUJ3Z0FrRUlSeUFCUVlzQlNuRWlCa1ZCQUNBQ1FRaEhJQUZCdGdKSWNodEZCRUFnQlVIMHF3aEJBVUdFckFnUUhTQUZRWWlzQ0VFQlFaaXNDQkFkQ3lBQ1FRaEdJQUZCclFOS2NrVUVRQ0FGUWRqUENFRUJRY3pRQ0JBZElBVkI2YzhJUVFGQnpOQUlFQjBnQlVINnp3aEJBVUhNMEFnUUhTQUZRWW5RQ0VFQlFjelFDQkFkSUFWQm50QUlRUUZCek5BSUVCMGdCVUcwMEFoQkFVSE0wQWdRSFNBRlFkRFFDRUVCUWN6UUNCQWRJQVZCN05BSVFRRkJ6TkFJRUIwZ0JVR0gwUWhCQVVITTBBZ1FIU0FGUWFiUkNFRUJRY3pRQ0JBZElBVkJ4ZEVJUVFGQnpOQUlFQjBnQlVIZzBRaEJBVUhNMEFnUUhTQUZRZnpSQ0VFQlFjelFDQkFkSUFWQm50SUlRUUZCek5BSUVCb2dCVUdtMGdoQkFVSE0wQWdRR2lBRlFjSFNDRUVCUWN6UUNCQWFJQVZCMWRJSVFRRkJ6TkFJRUJvZ0JVSG8wZ2hCQVVITTBBZ1FHaUFGUWZ6U0NFRUJRY3pRQ0JBYUN5QUZRWS9UQ0VFQlFlak1DQkFhQWtBZ0FrRUlSaUlIRFFBZ0JVSE1tUWhCQVVIZ21RZ1FIU0FGUWVTWkNFRUJRZUNaQ0JBZElBVkIvWmtJUVFGQjRKa0lFQjBnQlVHU21naEJBVUhnbVFnUUhTQUZRYWVhQ0VFQlFlQ1pDQkFkSUFWQnZKb0lRUUZCNEprSUVCMGdCVUhSbWdoQkFVSGdtUWdRSFVIa21RaEJDaUFGRUJ4Qi9aa0lRUXNnQlJBY1FaS2FDRUVNSUFVUUhFR25tZ2hCRFNBRkVCeEJ2Sm9JUVE0Z0JSQWNRZEdhQ0VFUElBVVFIQ0FES0FJSVFRRk9CRUJCekprSVFRTkJDU0FGRU44QkRBRUxRY3laQ0VFSklBVVFIQXNnQVVHMUFrb2dCM0VnQm5KQkFVWUVRQ0FGUVp5c0NFRUJRYXlzQ0JBZElBVkJzS3dJUVFGQnJLd0lFQjBnQlVISXJBaEJBVUhjckFnUUhTQUZRZUNzQ0VFQlFkeXNDQkFkSUFWQjhxd0lRUUZCM0t3SUVCMGdCVUdFclFoQkFVSGNyQWdRSFNBRlFaYXRDRUVCUWR5c0NCQWRRWnlzQ0VFUUlBVVFIRUd3ckFoQkVTQUZFQnhCeUt3SVFSSWdCUkFjUWVDc0NFRVRJQVVRSEVIeXJBaEJGQ0FGRUJ4QmhLMElRUlVnQlJBY1FaYXRDRUVXSUFVUUhDQUZRYWl0Q0VFQlFiaXRDQkFkSUFWQnZLMElRUUZCdUswSUVCMGdCVUhKclFoQkFVRzRyUWdRSFNBRlFkV3RDRUVCUWJpdENCQWRRYWl0Q0VIMEFDQUZFQnhCdkswSVFmVUFJQVVRSEVISnJRaEI5Z0FnQlJBY1FkV3RDRUgzQUNBRkVCd2dCVUdlMHdoQkFVR3NyQWdRSFNBRlFhN1RDRUVCUWF5c0NCQWRRWjdUQ0VFSElBVVFIRUd1MHdoQkNDQUZFQndnQlVHODB3aEJBVUdzckFnUUdnc2dBRUdZMUFncEF3QTNBd0FnQlVHZzFBaEJBaUFBRUJvZ0JVR3UxQWhCQWlBQUVCb2dCVUc5MUFoQkFpQUFFQnBCQUNBQ1FRaEhJQUZCd1FOS2NVVWdBa0VJUmlBQlFiOENTbkViRFFNZ0JVSHFyd2hCQVVIUTFBZ1FHaUFGUWZTdkNFRUJRZERVQ0JBYUlBVkIrYThJUVFGQjBOUUlFQm9nQlVIcHRBaEJBVUhRMUFnUUdpQUZRZmkwQ0VFQlFkRFVDQkFhSUFWQmdiVUlRUUZCME5RSUVCb2dCVUdNdFFoQkFVSFExQWdRR2lBRlFaZTFDRUVCUWREVUNCQWFJQVZCb3JVSVFRRkIwTlFJRUJvTUF3c2dBa0VJUmlBQlFjd0RTSElOQWlBRlFkVFVDRUVCUWVUVUNCQWRJQVZCNk5RSVFRRkI1TlFJRUIwZ0JVSDBxQWhCQVVIazFBZ1FIU0FGUWVHWUNFRUJRZVRVQ0JBZElBVkIrTlFJUVFGQjVOUUlFQjBnQlVHUjFRaEJBVUhrMUFnUUhTQUZRYVhWQ0VFQlFlVFVDQkFkSUFWQnZOVUlRUUZCNU5RSUVCMGdCVUhSMVFoQkFVSGsxQWdRSFNBRlFlblZDRUVCUWVUVUNCQWRJQVZCOXRVSVFRRkI1TlFJRUIwZ0JVR0QxZ2hCQVVIazFBZ1FIU0FGUVkzV0NFRUJRZVRVQ0JBZElBVkJtdFlJUVFGQjVOUUlFQjBnQlVHdDFnaEJBVUhrMUFnUUhTQUZRY0RXQ0VFQlFlVFVDQkFkSUFWQjlLc0lRUUZCaEt3SUVCMUIxTlFJUWR3QUlBVVFIRUhvMUFoQjNRQWdCUkFjUWZTb0NFRTBJQVVRSEVIaG1BaEJHQ0FGRUJ4QitOUUlRZDRBSUFVUUhFR1IxUWhCM3dBZ0JSQWNRYVhWQ0VIZ0FDQUZFQnhCdk5VSVFlRUFJQVVRSEVIUjFRaEI0Z0FnQlJBY1FlblZDRUhqQUNBRkVCeEI5dFVJUWVRQUlBVVFIRUdEMWdoQjVRQWdCUkFjUVkzV0NFSG1BQ0FGRUJ4Qm10WUlRZWNBSUFVUUhFR3QxZ2hCNkFBZ0JSQWNRY0RXQ0VIcEFDQUZFQnhCOUtzSVFkRUFJQVVRSENBRlFjeVpDRUVCUWVDWkNCQWRJQVZCNUprSVFRRkI0SmtJRUIwZ0JVSDltUWhCQVVIZ21RZ1FIU0FGUVpLYUNFRUJRZUNaQ0JBZElBVkJwNW9JUVFGQjRKa0lFQjBnQlVHOG1naEJBVUhnbVFnUUhTQUZRZEdhQ0VFQlFlQ1pDQkFkUWVTWkNFRUtJQVVRSEVIOW1RaEJDeUFGRUJ4Qmtwb0lRUXdnQlJBY1FhZWFDRUVOSUFVUUhFRzhtZ2hCRGlBRkVCeEIwWm9JUVE4Z0JSQWNBa0FnQXlnQ0NFRUJUZ1JBUWN5WkNFRURRUWtnQlJEZkFRd0JDMEhNbVFoQkNTQUZFQndMSUFWQm50TUlRUUZCckt3SUVCMGdCVUd1MHdoQkFVR3NyQWdRSFNBRlFaeXNDRUVCUWF5c0NCQWRJQVZCc0t3SVFRRkJyS3dJRUIwZ0JVSElyQWhCQVVIY3JBZ1FIU0FGUWVDc0NFRUJRZHlzQ0JBZElBVkI4cXdJUVFGQjNLd0lFQjBnQlVHRXJRaEJBVUhjckFnUUhTQUZRWmF0Q0VFQlFkeXNDQkFkUVo3VENFRUhJQVVRSEVHdTB3aEJDQ0FGRUJ4Qm5Ld0lRUkFnQlJBY1FiQ3NDRUVSSUFVUUhFSElyQWhCRWlBRkVCeEI0S3dJUVJNZ0JSQWNRZktzQ0VFVUlBVVFIRUdFclFoQkZTQUZFQnhCbHEwSVFSWWdCUkFjSUFWQnFLMElRUUZCdUswSUVCMGdCVUc4clFoQkFVRzRyUWdRSFNBRlFjbXRDRUVCUWJpdENCQWRJQVZCMWEwSVFRRkJ1SzBJRUIxQnFLMElRZlFBSUFVUUhFRzhyUWhCOVFBZ0JSQWNRY210Q0VIMkFDQUZFQnhCMWEwSVFmY0FJQVVRSEF3Q0N3SkFJQUpCQ0VjZ0FVSEJBMHB4SWdaRlFRQWdBa0VJUnlBQlFjQUNTSEliRFFBZ0JVSFcxZ2hCajZnSVFRRkI2TllJRUxNQklBVkIxdFlJUVp1b0NFRUJRZWpXQ0JDekFTQUZRZGJXQ0VIRHFBaEJBVUhvMWdnUXN3RWdCVUhXMWdoQjA2Z0lRUUZCNk5ZSUVMTUJRZGJXQ0VHUHFBaEJIaUFGRUZaQjF0WUlRWnVvQ0VFZklBVVFWa0hXMWdoQnc2Z0lRU0VnQlJCV1FkYldDRUhUcUFoQklpQUZFRllnQlVIVzFnaEJnNm9JUVFGQjZOWUlFTE1CSUFWQjF0WUlRZXpXQ0VFQlFlaldDQkN6QVNBRlFkYldDRUdGMXdoQkFVSG8xZ2dRc3dGQjF0WUlRWU9xQ0VIWEFDQUZFRlpCMXRZSVFleldDRUh2QUNBRkVGWkIxdFlJUVlYWENFSHdBQ0FGRUZZZ0JVR2Uxd2hCOUtnSVFRRkI2TllJRUxNQklBVkJudGNJUVpPcENFRUJRZWpXQ0JDekFTQUZRWjdYQ0VHY3FRaEJBVUhvMWdnUXN3RWdCVUdlMXdoQnVLa0lRUUZCNk5ZSUVMTUJRWjdYQ0VIMHFBaEJOQ0FGRUZaQm50Y0lRWk9wQ0VFMUlBVVFWa0dlMXdoQm5La0lRVFlnQlJCV1FaN1hDRUc0cVFoQjFBQWdCUkJXSUFWQm50Y0lRYkxYQ0VFQlFlaldDQkN6QVNBRlFaN1hDRUdjcWdoQkFVSG8xZ2dRc3dGQm50Y0lRYkxYQ0VIeEFDQUZFRlpCbnRjSVFaeXFDRUhZQUNBRkVGWWdCVUhFMXdoQkFVSG8xZ2dRSFNBRlFkalhDRUVCUWVqV0NCQWRJQVZCN3RjSVFRRkI2TllJRUIwZ0JVR0IyQWhCQVVIbzFnZ1FIU0FGUWVuUENFRUJRZWpXQ0JBZElBVkIrczhJUVFGQjZOWUlFQjBnQlVHSjBBaEJBVUhvMWdnUUhTQUZRWjdRQ0VFQlFlaldDQkFkSUFWQnROQUlRUUZCNk5ZSUVCMUJ4TmNJUWUwQUlBVVFIRUhZMXdoQjdnQWdCUkFjUWU3WENFSHlBQ0FGRUJ4QmdkZ0lRZk1BSUFVUUhFSHB6d2hCQWlBRkVCeEIrczhJUVFNZ0JSQWNRWW5RQ0VFRUlBVVFIRUdlMEFoQkJTQUZFQnhCdE5BSVFRWWdCUkFjSUFWQmx0Z0lRUUZCNk5ZSUVCMGdCVUd4MkFoQkFVSG8xZ2dRSFNBRlFjN1lDRUVCUWVqV0NCQWRJQVZCNk5nSVFRRkI2TllJRUIwZ0JVR2UwZ2hCQVVIbzFnZ1FHaUFGUWVqU0NFRUJRZWpXQ0JBYUlBVkIvTklJUVFGQjZOWUlFQm9nQmtVTkFDQUZRZlNyQ0VFQlFZU3NDQkFkUWZTckNFSFJBQ0FGRUJ3Z0JVR1htUWhCQVVHQW1RZ1FIVUdYbVFoQkhTQUZFQndnQVVITUEwNEVRRUhDbVFoQkhTQUZFQndMSUFWQnpKa0lRUUZCNEprSUVCMGdCVUhrbVFoQkFVSGdtUWdRSFNBRlFmMlpDRUVCUWVDWkNCQWRJQVZCa3BvSVFRRkI0SmtJRUIwZ0JVR25tZ2hCQVVIZ21RZ1FIU0FGUWJ5YUNFRUJRZUNaQ0JBZElBVkIwWm9JUVFGQjRKa0lFQjFCNUprSVFRb2dCUkFjUWYyWkNFRUxJQVVRSEVHU21naEJEQ0FGRUJ4QnA1b0lRUTBnQlJBY1FieWFDRUVPSUFVUUhFSFJtZ2hCRHlBRkVCd2dBeWdDQ0VFQlRnUkFRY3laQ0VFRFFRa2dCUkRmQVF3QkMwSE1tUWhCQ1NBRkVCd0xRUUFnQWtFSVJpQUJRYlVDU25GRklBSkJDRWNnQVVHTEFVcHhHdzBCSUFWQm50TUlRUUZCckt3SUVCMGdCVUd1MHdoQkFVR3NyQWdRSFNBRlFaeXNDRUVCUWF5c0NCQWRJQVZCc0t3SVFRRkJyS3dJRUIwZ0JVSElyQWhCQVVIY3JBZ1FIU0FGUWVDc0NFRUJRZHlzQ0JBZElBVkI4cXdJUVFGQjNLd0lFQjBnQlVHRXJRaEJBVUhjckFnUUhTQUZRWmF0Q0VFQlFkeXNDQkFkUVo3VENFRUhJQVVRSEVHdTB3aEJDQ0FGRUJ4Qm5Ld0lRUkFnQlJBY1FiQ3NDRUVSSUFVUUhFSElyQWhCRWlBRkVCeEI0S3dJUVJNZ0JSQWNRZktzQ0VFVUlBVVFIRUdFclFoQkZTQUZFQnhCbHEwSVFSWWdCUkFjSUFWQnZOTUlRUUZCckt3SUVCb2dCVUdvclFoQkFVRzRyUWdRSFNBRlFieXRDRUVCUWJpdENCQWRJQVZCeWEwSVFRRkJ1SzBJRUIwZ0JVSFZyUWhCQVVHNHJRZ1FIVUdvclFoQjlBQWdCUkFjUWJ5dENFSDFBQ0FGRUJ4QnlhMElRZllBSUFVUUhFSFZyUWhCOXdBZ0JSQWNEQUVMQWtBZ0FrRUlSeUFCUWNFRFNuRWlCa1ZCQUNBQ1FRaEhJQUZCd0FKSWNoc05BQ0FGUWY3WUNFRUJRZWpXQ0JBZElBVkI2YzhJUVFGQjZOWUlFQjBnQlVINnp3aEJBVUhvMWdnUUhTQUZRWW5RQ0VFQlFlaldDQkFkSUFWQm50QUlRUUZCNk5ZSUVCMGdCVUcwMEFoQkFVSG8xZ2dRSFNBRlFlN1hDRUVCUWVqV0NCQWRJQVZCZ2RnSVFRRkI2TllJRUIxQi90Z0lRZXdBSUFVUUhFSHB6d2hCQWlBRkVCeEIrczhJUVFNZ0JSQWNRWW5RQ0VFRUlBVVFIRUdlMEFoQkJTQUZFQnhCdE5BSVFRWWdCUkFjUWU3WENFSHlBQ0FGRUJ4QmdkZ0lRZk1BSUFVUUhDQUZRWTNaQ0VFQlFlaldDQkFkSUFWQjZOZ0lRUUZCNk5ZSUVCMGdCVUdlMGdoQkFVSG8xZ2dRR2lBRlFlalNDRUVCUWVqV0NCQWFJQVZCL05JSVFRRkI2TllJRUJvZ0JrVU5BQ0FGUWZTckNFRUJRWVNzQ0JBZFFmU3JDRUhSQUNBRkVCd2dCVUdYbVFoQkFVR0FtUWdRSFVHWG1RaEJIU0FGRUJ3Z0FVSE1BMDRFUUVIQ21RaEJIU0FGRUJ3TElBVkJ6SmtJUVFGQjRKa0lFQjBnQlVIa21RaEJBVUhnbVFnUUhTQUZRZjJaQ0VFQlFlQ1pDQkFkSUFWQmtwb0lRUUZCNEprSUVCMGdCVUdubWdoQkFVSGdtUWdRSFNBRlFieWFDRUVCUWVDWkNCQWRJQVZCMFpvSVFRRkI0SmtJRUIxQjVKa0lRUW9nQlJBY1FmMlpDRUVMSUFVUUhFR1NtZ2hCRENBRkVCeEJwNW9JUVEwZ0JSQWNRYnlhQ0VFT0lBVVFIRUhSbWdoQkR5QUZFQndnQXlnQ0NFRUJUZ1JBUWN5WkNFRURRUWtnQlJEZkFRd0JDMEhNbVFoQkNTQUZFQndMUVFBZ0FrRUlSaUFCUWJVQ1NuRkZJQUpCQ0VjZ0FVR0xBVXB4R3cwQUlBVkJudE1JUVFGQnJLd0lFQjBnQlVHdTB3aEJBVUdzckFnUUhTQUZRWnlzQ0VFQlFheXNDQkFkSUFWQnNLd0lRUUZCckt3SUVCMGdCVUhJckFoQkFVSGNyQWdRSFNBRlFlQ3NDRUVCUWR5c0NCQWRJQVZCOHF3SVFRRkIzS3dJRUIwZ0JVR0VyUWhCQVVIY3JBZ1FIU0FGUVphdENFRUJRZHlzQ0JBZFFaN1RDRUVISUFVUUhFR3Uwd2hCQ0NBRkVCeEJuS3dJUVJBZ0JSQWNRYkNzQ0VFUklBVVFIRUhJckFoQkVpQUZFQnhCNEt3SVFSTWdCUkFjUWZLc0NFRVVJQVVRSEVHRXJRaEJGU0FGRUJ4QmxxMElRUllnQlJBY0lBVkJ2Tk1JUVFGQnJLd0lFQm9nQlVHb3JRaEJBVUc0clFnUUhTQUZRYnl0Q0VFQlFiaXRDQkFkSUFWQnlhMElRUUZCdUswSUVCMGdCVUhWclFoQkFVRzRyUWdRSFVHb3JRaEI5QUFnQlJBY1FieXRDRUgxQUNBRkVCeEJ5YTBJUWZZQUlBVVFIRUhWclFoQjl3QWdCUkFjQzBHQURpQUZFSnNPUVlBZElBVVFtdzRnQlJEdkdTQUZRYWZaQ0VIa0FSQVZJQVZCdWRrSVFlVUJFQlVnQlVITTJRaEI1Z0VRRlNBRlFkN1pDRUhuQVJBVklBVkI4ZGtJUWVnQkVCVWdCVUdCMmdoQjZRRVFGU0FGUVpMYUNFSG9BUkFWSUFWQnBkb0lRZWtCRUJVZ0JVRzUyZ2hCNmdFUUZTQUZRY3phQ0VIckFSQVZJQVZCNE5vSVFlb0JFQlVnQlVIdzJnaEI2d0VRRlNBRlFZSGJDRUh3QVJBVklBVkJqdHNJUWZFQkVCVWdCVUdkMndoQjhnRVFGU0FGUWFyYkNFSHpBUkFWSUFWQnVkc0lRZllCRUJVZ0JVSEkyd2hCOXdFUUZTQUZRZG5iQ0VINEFSQVZJQVZCNWRzSVFma0JFQlVnQlVIejJ3aEIrZ0VRRlNBRlFZRGNDRUg3QVJBVklBVkJqOXdJUWY0QkVCVWdCVUdiM0FoQi93RVFGU0FGUWFuY0NFR0FBaEFWSUFWQnR0d0lRWUVDRUJVZ0JVSEYzQWhCZ2dJUUZTQUZRZEhjQ0VHREFoQVZJQVZCMzl3SVFZUUNFQlVnQlVIczNBaEJoUUlRRlNBRlFmdmNDRUg4QVJBVklBVkJpZDBJUWYwQkVCVWdCVUdaM1FoQmhnSVFGU0FGUWFEZENFR0hBaEFWSUFWQnA5MElRWWdDRUJVZ0JVR3UzUWhCaVFJUUZTQUZRYmZkQ0VHS0FoQVZJQVZCd04wSVFZc0NFQlVnQlVHUDB3aEJyd0lRRlNBRlFhYlNDRUd4QWhBVklBVkIxZElJUWJNQ0VCVWdCVUhJM1FoQnJBTVFGU0FGUWRQZENFR3RBeEFWSUFWQnFMUUlRYTRERUJVZ0JVSEV0QWhCcndNUUZTQUZRZHUwQ0VHd0F4QVZJQVZCa0w0SVFmVUZFQlVnQlVHZ3ZnaEI5UVVRRlNBRlFhMitDRUgyQlJBVklBVkJ4TDRJUWZZRkVCVWdBa0VJUnlBQlFjc0RTbkVpQmtFQlJnUkFJQVZCMzkwSVFiRURFQlVnQlVIdzNRaEJzZ01RRlNBRlFZYmVDRUd6QXhBVklBVkJsOTRJUWJRREVCVWdCVUdvM2doQnRRTVFGU0FGUWJuZUNFRzJBeEFWSUFWQnlkNElRYmNERUJVZ0JVSGEzZ2hCdUFNUUZTQUZRZkRlQ0VHNUF4QVZDeUFGUVpDbUNFSGRBUkFWSUFWQmh0OElRZDRCRUJVZ0JVR00zd2hCM3dFUUZTQUZRWkxmQ0VHYUJSQVZJQVZCbk44SVFac0ZFQlVnQlVHbjN3aEJuQVVRRlNBRlFiVGZDRUdkQlJBVklBVkJ3ZDhJUVo0RkVCVWdCVUhSM3doQm53VVFGU0FGUWVEZkNFR2dCUkFWSUFWQjhOOElRYUVGRUJVZ0JVSDUzd2hCb2dVUUZTQUZRWUhnQ0VHakJSQVZJQVZCdjg4SVFjRURFQlVnQlVIdG9RaEJwQVVRRlNBRlFZU2lDRUdsQlJBVklBVkJsNklJUWFZRkVCVWdCVUdxb2doQnB3VVFGU0FGUWJhaUNFR29CUkFWSUFWQng2SUlRYWtGRUJVZ0JVSFBvZ2hCcWdVUUZTQUZRZDZpQ0VHckJSQVZBa0JCNE8wU0xRQUFSUTBBSUFWQmllQUlRY2NFRUJVZ0JVR1Q0QWhCeUFRUUZTQUZRYURnQ0VISkJCQVZJQVZCcXVBSVFjb0VFQlVnQlVHVXBnaEJ6UVFRRlNBRlFhaW1DRUhPQkJBVklBVkJ0NllJUWM4RUVCVWdCVUhHcGdoQjBBUVFGU0FGUWRXbUNFSFJCQkFWSUFWQjQ2WUlRZElFRUJVZ0JVSHlwZ2hCMHdRUUZTQUZRWWFuQ0VIVUJCQVZJQVZCdGVBSVFkVUVFQlVnQlVIRjRBaEIxZ1FRRlNBRlFkYmdDRUhYQkJBVklBVkI0dUFJUWRnRUVCVWdCVUdzN2dkQjhBUVFGU0FGUWZEZ0NFSHhCQkFWSUFWQjhLVUlRZklFRUJVZ0JVR0U0UWhCcWdJUUZTQUZRWXZoQ0VHcUFoQVZJQVZCa3VFSVFhb0NFQlVnQlVHWjRRaEJxZ0lRRlNBRlFleWlDRUdTQlJBVklBVkJoS01JUVpNRkVCVWdCVUdjb3doQmxBVVFGU0FGUWJLakNFR1ZCUkFWSUFWQnlhTUlRWllGRUJVQ1FDQURLQUlBRFFBZ0FTQUNJQU1RNVFJRVFDQUZRYURoQ0VHcEFoQVZDeUFES0FJQURRQWdBU0FDSUFNUTVRSkZRUUFnQVVIa0FFY2dBa0VJUjNJYkRRQWdCVUdyNFFoQjRnUVFGU0FGUWV5eENFSHNCQkFWSUFWQnRlRUlRZU1FRUJVZ0JVSDlzUWhCN2dRUUZTQUZRY1N3Q0VIa0JCQVZJQVZCZ2JFSVFlb0VFQlVnQlVIRDRRaEI0Z1FRRlNBRlFkSGhDRUhqQkJBVklBVkJ1Yk1JUWV3RUVCVWdCVUhPc3doQjdnUVFGU0FGUWVQaENFSGlCQkFWSUFWQjhPRUlRZU1FRUJVZ0JVSG5zd2hCN0FRUUZTQUZRZnV6Q0VIdUJCQVZJQVZCZ2VJSVFlSUVFQlVnQlVHTDRnaEI0d1FRRlNBRlFiQ2xDRUhzQkJBVklBVkJrcklJUWV3RUVCVWdCVUhJcFFoQjdnUVFGU0FGUWFPeUNFSHVCQkFWSUFWQjJMQUlRZVFFRUJVZ0JVRzByd2hCNUFRUUZTQUZRWkt4Q0VIcUJCQVZJQVZCeEs4SVFlb0VFQlVnQlVHWjRnaEI0Z1FRRlNBRlFiaXlDRUhzQkJBVklBVkJvK0lJUWVNRUVCVWdCVUhKc2doQjdnUVFGU0FGUWVXd0NFSGtCQkFWSUFWQm83RUlRZW9FRUJVZ0JVR3g0Z2hCNGdRUUZTQUZRZDJsQ0VIc0JCQVZJQVZCM3JJSVFld0VFQlVnQlVIeXNBaEI1QVFRRlNBRlFkaXZDRUhrQkJBVklBVkJ2ZUlJUWVJRUVCVWdCVUh4c2doQjdBUVFGU0FGUWNiaUNFSGlCQkFWSUFWQmxiTUlRZXdFRUJVZ0JVSFA0Z2hCNHdRUUZTQUZRZHppQ0VIakJCQVZJQVZCZ2JNSVFlNEVFQlVnQlVHbHN3aEI3Z1FRRlNBRlFiU3hDRUhrQkJBVklBVkJ3TEVJUWVRRUVCVWdCVUhNc1FoQjZnUVFGU0FGUWR5eENFSHFCQkFWQ3lBQ1FRaEdJZ05GQkVBZ0JVR3Z0UWhCL1FRUUZTQUZRY1MxQ0VIK0JCQVZJQVZCMkxVSVFmOEVFQlVnQlVIdnRRaEJnQVVRRlNBRlFZTzJDRUdCQlJBVklBVkJuYllJUVlJRkVCVWdCVUczdGdoQmd3VVFGU0FGUWN5MkNFR0VCUkFWSUFWQjU3WUlRWVVGRUJVZ0JVSCt0Z2hCaGdVUUZTQUZRWnUzQ0VHSEJSQVZJQVZCdWJjSVFka0VFQlVnQlVIcDRnaEJpQVVRRlNBRlFlRzNDRUdKQlJBVklBVkIvTGNJUVlvRkVCVWdCVUdZdUFoQml3VVFGU0FGUWJLNENFR01CUkFWSUFWQjByZ0lRZk1FRUJVZ0JVSGl1QWhCOUFRUUZTQUZRZmk0Q0VIMUJCQVZJQVZCakxrSVFmWUVFQlVnQlVIbW1naEJ0Z0lRRlNBRlFmQ2FDRUczQWhBVklBVkJncHNJUWJnQ0VCVWdBVUd1QTA0RVFDQUZRWm1iQ0VHNUFoQVZJQVZCc0pzSVFib0NFQlVnQlVIQ213aEJ1d0lRRlFzZ0FVSE1BMDRFUUNBRlFZSGpDRUc1QWhBVklBVkJqK01JUWJvQ0VCVWdCVUdlNHdoQnV3SVFGUXNnQlVIWm13aEJpd01RRlNBRlFmQ2JDRUdNQXhBVklBVkJncHdJUVkwREVCVWdCVUdVbkFoQmpnTVFGU0FGUWJDY0NFR1BBeEFWSUFWQnpKd0lRWkFERUJVZ0JVRzduUWhCa1FNUUZTQUZRZHFkQ0VHU0F4QVZJQVZCK1owSVFaTURFQlVnQlVHWW5naEJsQU1RRlNBRlFjR2VDRUdWQXhBVklBVkI2cDRJUVpZREVCVWdCVUdUbndoQmx3TVFGU0FGUWJLZkNFR1lBeEFWSUFWQjBaOElRWmtERUJVZ0JVSHdud2hCbWdNUUZTQUZRWm1nQ0VHYkF4QVZJQVZCd3FBSVFad0RFQlVnQlVIb25BaEJuUU1RRlNBRlFiTGpDRUdlQXhBVklBVkJuNTBJUVo4REVCVWdCVUd5blFoQm9BTVFGU0FGUWV1Z0NFR1VBaEFWSUFWQjlLQUlRWlVDRUJVZ0JVSDVvQWhCbGdJUUZTQUZRWmloQ0VHaEF4QVZJQVZCcWFFSVFhSURFQlVnQlVHNm9RaEJvd01RRlNBRlFZQzdDRUgzQkJBVklBVkJtTHNJUWZnRUVCVWdCVUd5dXdoQitRUVFGU0FGUWMyN0NFR05CUkFWSUFWQjU3c0lRWTRGRUJVZ0JVR0h2QWhCandVUUZTQUZRYWk4Q0VITEJCQVZJQVZCdkx3SVFjd0VFQlVnQlVITnZBaEIyZ1FRRlNBRlFjS2hDRUg2QkJBVklBVkIzS0VJUWZzRUVCVUxRUUFnQVVHMUFrb2dBM0ZGSUFKQkNFY2dBVUdMQVVweEcwVUVRQ0FGUWVTK0NFRzlBaEFWSUFWQjlMNElRYjRDRUJVZ0JVR0t2d2hCdndJUUZTQUZRYWEvQ0VIQUFoQVZJQVZCd2I4SVFjSUNFQlVnQlVIUHZ3aEJ3d0lRRlNBRlFlQy9DRUhFQWhBVklBVkI3TDhJUWNVQ0VCVWdCVUg5dndoQnhnSVFGU0FGUVkvQUNFSEhBaEFWSUFWQnBzQUlRY2dDRUJVZ0JVRzF3QWhCeVFJUUZTQUZRY3ZBQ0VIS0FoQVZJQVZCNU1BSVFjc0NFQlVnQlVIN3dBaEJ6QUlRRlNBRlFadkJDRUhOQWhBVklBVkJ1OEVJUWM0Q0VCVWdCVUhSd1FoQnp3SVFGU0FGUWVmQkNFSFFBaEFWSUFWQi9NRUlRZEVDRUJVZ0JVR1B3Z2hCMGdJUUZTQUZRYWpDQ0VIVEFoQVZJQVZCdk1JSVFkUUNFQlVnQlVITXdnaEIxUUlRRlNBRlFkakNDRUhXQWhBVklBVkI1TUlJUWRjQ0VCVWdCVUh3d2doQjJBSVFGU0FGUWZ6Q0NFSFpBaEFWSUFWQmg4TUlRZG9DRUJVZ0JVR1R3d2hCMndJUUZTQUZRYWpEQ0VIY0FoQVZJQVZCdmNNSVFkMENFQlVnQlVIU3d3aEIzZ0lRRlNBRlFlZkRDRUhmQWhBVklBVkIvTU1JUWVBQ0VCVWdCVUdReEFoQjRRSVFGU0FGUWFYRUNFSGlBaEFWSUFWQnVzUUlRZU1DRUJVZ0JVSFB4QWhCNUFJUUZTQUZRZVRFQ0VIbEFoQVZJQVZCK2NRSVFlWUNFQlVnQlVHT3hRaEI1d0lRRlNBRlFhTEZDRUhvQWhBVklBVkJ0OFVJUWVrQ0VCVWdCVUhReFFoQjZnSVFGU0FGUWVYRkNFSHJBaEFWSUFWQitzVUlRZXdDRUJVZ0JVR1B4Z2hCN1FJUUZTQUZRYVRHQ0VIdUFoQVZJQVZCdU1ZSVFlOENFQlVnQlVITnhnaEI4QUlRRlNBRlFlakdDRUh4QWhBVklBVkJnOGNJUWZJQ0VCVWdCVUdjeHdoQjh3SVFGU0FGUWJYSENFSDBBaEFWSUFWQjBNY0lRZlVDRUJVZ0JVSHB4d2hCOWdJUUZTQUZRWUxJQ0VIM0FoQVZJQVZCbThnSVFmZ0NFQlVnQlVHMHlBaEIrUUlRRlNBRlFjM0lDRUg2QWhBVklBVkI1Y2dJUWZzQ0VCVWdCVUgreUFoQi9BSVFGU0FGUWFESkNFSDlBaEFWSUFWQndza0lRZjRDRUJVZ0JVSGt5UWhCL3dJUUZTQUZRWWJLQ0VHQUF4QVZJQVZCcU1vSVFZRURFQlVnQlVISnlnaEJnZ01RRlNBRlFldktDRUdEQXhBVklBVkJqY3NJUVlRREVCVWdCVUd2eXdoQmhRTVFGU0FGUWRITENFR0dBeEFWSUFWQjg4c0lRWWNERUJVZ0JVR1Z6QWhCaUFNUUZTQUZRYmJNQ0VHSkF4QVZDeUFDUVFoSERRQWdCVUd3cHdoQjRnUVFGU0FGUWNDbkNFSGpCQkFWQ3dKQUlBUkJmV29pQTBFS1N3MEFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU5CQVdzT0NnRUNBd1FGQXdNR0NBY0FDeUFGUWM3akNFR3RBaEFWSUFWQjMrTUlRYTRDRUJVZ0JVSHk0d2hCcXdJUUZTQUZRZjNqQ0VHc0FoQVZEQWdMSUFKQkNFWWdBVUdRQTBoeVJRUkFJQVZCNmJRSVFab0NFQlVnQlVINHRBaEJtd0lRRlNBRlFZRzFDRUdjQWhBVklBVkJqTFVJUVowQ0VCVWdCVUdYdFFoQm5nSVFGU0FGUWFLMUNFR2ZBaEFWQ3lBRlFZQ3dDRUdnQWhBVklBVkJuTEFJUWFFQ0VCVWdCVUd3c0FoQm9nSVFGU0FDUVFoSEJFQWdCVUhwdWdoQm93SVFGUXNnQlVHSzVBaEJ2d01RRlNBRlFhYmtDRUhBQXhBVkRBY0xJQVZCdk5NSVFjRUNFQlVnQVVIQ0EwNUJBQ0FDUVFoSEcwVkJBQ0FDUVFoSElBRkJ3QUpJY2h0RkJFQWdCVUhxcndoQmx3SVFGU0FGUWZTdkNFR1lBaEFWSUFWQithOElRWmtDRUJVZ0JVSHB0QWhCbWdJUUZTQUZRZmkwQ0VHYkFoQVZJQVZCZ2JVSVFad0NFQlVnQlVHTXRRaEJuUUlRRlNBRlFaZTFDRUdlQWhBVklBVkJvclVJUVo4Q0VCVUxJQVZCb05RSVFid0RFQlVnQlVHdTFBaEJ2UU1RRlNBRlFiM1VDRUcrQXhBVkRBWUxJQVpGRFFVZ0JVSEE1QWhCckFVUUZTQUZRY2prQ0VHd0JSQVZEQVVMSUFaRkRRUWdCVUhhNUFoQnJRVVFGUXdFQ3lBR1JRMERJQVZCNytRSVFhNEZFQlVnQlVHRTVRaEJyd1VRRlF3REN5QUdSUTBDSUFWQnlPUUlRYkFGRUJVTUFnc2dBVUhDQTA1QkFDQUNRUWhIRzBWQkFDQUNRUWhISUFGQndBSkljaHNOQUNBRlFaUGxDRUd4QlJBVkN5QUJRY0lEVGtFQUlBSkJDRWNiUlVFQUlBSkJDRWNnQVVIQUFraHlHdzBBSUFWQjZOSUlRYlFDRUJVZ0JVSDgwZ2hCdFFJUUZTQUZRYnpUQ0VIQkFoQVZDeUFBUVJCcUpBQUxvQUVCQTM4akFFRVFheUlESkFBZ0FVRVFhaUlFSUFBZ0FDZ0NBQ2dDREJFQUFCQVRFQkJCZ004UEVCQWhCUUpBSUFJRVFDQURJQUJCRkdvUXlnRWdCU0FERUxrQkdpQURFQmthSUFBZ0FSRG5EUXdCQ3lBRklBQkJGR29pQUJESkJCQVFRWVBQRHhBUUlRRWdBeUFBRUtrQ0lBRWdBeEM1QVJvZ0F4QVpHaUFBRUlRR1JRMEFJQVJCaGM4UEVCQWFDeUFFUVluUER4QVFHaUFEUVJCcUpBQUxMd0VCZnlBQUVJa0VJQUFRd1FFRVFDQUFLQUlBSVFFZ0FCQmRHaUFCRUNvZ0FFRUFFT2tCSUFCQkFCRFVBUXNMQmdBUWdnRUFDL0l0QWdKL0FYNGpBRUhRRUdzaUJpUUFJQUJCQkdvaEFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQURRUWhHQkVBZ0JpQUJLQUlRTmdLQUNTQUdRWUFQYWtISUFVSFI3Z2NnQmtHQUNXb1FKeG9nQUNBR1FZQVBhaEFTR2lBR0lBRW9BakEyQXZBSUlBWkJnQTlxUWNnQlFmN3VCeUFHUWZBSWFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NIRFlDNEFnZ0JrR0FEMnBCeUFGQnN1OEhJQVpCNEFocUVDY2FJQUFnQmtHQUQyb1FFaG9nQmlBQktBSWdOZ0xRQ0NBR1FZQVBha0hJQVVIcDd3Y2dCa0hRQ0dvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FpUTJBc0FJSUFaQmdBOXFRY2dCUWFMd0J5QUdRY0FJYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQVlnQVNnQ09EWUNzQWdnQmtHQUQycEJ5QUZCMC9BSElBWkJzQWhxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FJc05nS2dDQ0FHUVlBUGFrSElBVUdKOFFjZ0JrR2dDR29RSnhvZ0FDQUdRWUFQYWhBU0dpQUNRZVFBUmdSQUlBWWdBU2dDTkRZQ1VDQUdRWUFQYWtISUFVRzA4UWNnQmtIUUFHb1FKeG9nQUNBR1FZQVBhaEFTR2tFQUlRUU1DZ3NnQmlBQktBSThOZ0tRQ0NBR1FZQVBha0hJQVVIaThRY2dCa0dRQ0dvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FrQTJBb0FJSUFaQmdBOXFRY2dCUVpYeUJ5QUdRWUFJYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQVlnQVNnQ1JEWUM4QWNnQmtHQUQycEJ5QUZCeWZJSElBWkI4QWRxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FKSU5nTGdCeUFHUVlBUGFrSElBVUg3OGdjZ0JrSGdCMm9RSnhvZ0FDQUdRWUFQYWhBU0drRUFJUVFnQWtHMkFrZ05DU0FHSUFFb0FvUUJOZ0xRQnlBR1FZQVBha0hJQVVHdDh3Y2dCa0hRQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FvZ0JOZ0xBQnlBR1FZQVBha0hJQVVIYjh3Y2dCa0hBQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0Fxd0JOZ0t3QnlBR1FZQVBha0hJQVVHSzlBY2dCa0d3QjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FyZ0JOZ0tnQnlBR1FZQVBha0hJQVVHMjlBY2dCa0dnQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0Fyd0JOZ0tRQnlBR1FZQVBha0hJQVVIbTlBY2dCa0dRQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FzQUJOZ0tBQnlBR1FZQVBha0hJQVVHVDlRY2dCa0dBQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FzUUJOZ0x3QmlBR1FZQVBha0hJQVVISDlRY2dCa0h3Qm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0Fvd0NOZ0xnQmlBR1FZQVBha0hJQVVIMzlRY2dCa0hnQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FxZ0NOZ0xRQmlBR1FZQVBha0hJQVVHazlnY2dCa0hRQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0Fzd0JOZ0xBQmlBR1FZQVBha0hJQVVIWDlnY2dCa0hBQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F0QUJOZ0t3QmlBR1FZQVBha0hJQVVHSTl3Y2dCa0d3Qm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F0UUJOZ0tnQmlBR1FZQVBha0hJQVVHNjl3Y2dCa0dnQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F0Z0JOZ0tRQmlBR1FZQVBha0hJQVVIdDl3Y2dCa0dRQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F0d0JOZ0tBQmlBR1FZQVBha0hJQVVHZytBY2dCa0dBQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F1QUJOZ0x3QlNBR1FZQVBha0hJQVVIWCtBY2dCa0h3QldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F1UUJOZ0xnQlNBR1FZQVBha0hJQVVHTCtRY2dCa0hnQldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F1Z0JOZ0xRQlNBR1FZQVBha0hJQVVIQStRY2dCa0hRQldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F1d0JOZ0xBQlNBR1FZQVBha0hJQVVIMitRY2dCa0hBQldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F2QUJOZ0t3QlNBR1FZQVBha0hJQVVHcytnY2dCa0d3QldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F2UUJOZ0tnQlNBR1FZQVBha0hJQVVIVytnY2dCa0dnQldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F2Z0JOZ0tRQlNBR1FZQVBha0hJQVVINitnY2dCa0dRQldvUUp4b2dBQ0FHUVlBUGFoQVNHa0VCSVFjZ0JVRi9ha0VCVFFSQUlBQkJuZnNIRUJJYUN5QUNRY0FDU0EwQklBWWdBU2dDcEFFMkFvQUZJQVpCZ0E5cVFjZ0JRY0g4QnlBR1FZQUZhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDcUFFMkF2QUVJQVpCZ0E5cVFjZ0JRZkQ4QnlBR1FmQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDaEFJMkF1QUVJQVpCZ0E5cVFjZ0JRYUw5QnlBR1FlQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDaUFJMkF0QUVJQVpCZ0E5cVFjZ0JRZEw5QnlBR1FkQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDb0FJMkFzQUVJQVpCZ0E5cVFjZ0JRWVgrQnlBR1FjQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDcEFJMkFyQUVJQVpCZ0E5cVFjZ0JRYnYrQnlBR1FiQUVhaEFuR2lBQUlBWkJnQTlxRUJJYURBRUxJQUpCa1FOT0JFQWdCaUFCS0FJd05nTHdEaUFHUVlBUGFrSElBVUgwL2djZ0JrSHdEbW9RSnhvZ0FDQUdRWUFQYWhBU0dpQUdJQUVvQWpnMkF1QU9JQVpCZ0E5cVFjZ0JRYUQvQnlBR1FlQU9haEFuR2lBQUlBWkJnQTlxRUJJYUN5QUdJQUVvQWhBMkF0QU9JQVpCZ0E5cVFjZ0JRYzcvQnlBR1FkQU9haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDSERZQ3dBNGdCa0dBRDJwQnlBRkI4LzhISUFaQndBNXFFQ2NhSUFBZ0JrR0FEMm9RRWhvZ0JpQUJLQUlnTmdLd0RpQUdRWUFQYWtISUFVR2lnQWdnQmtHd0Rtb1FKeG9nQUNBR1FZQVBhaEFTR2lBR0lBRW9BaVEyQXFBT0lBWkJnQTlxUWNnQlFkT0FDQ0FHUWFBT2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NMRFlDa0E0Z0JrR0FEMnBCeUFGQi9JQUlJQVpCa0E1cUVDY2FJQUFnQmtHQUQyb1FFaG9nQmlBQktBSUFOZ0tBRGlBR1FZQVBha0hJQVVHZmdRZ2dCa0dBRG1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FnUTJBdkFOSUFaQmdBOXFRY2dCUWIyQkNDQUdRZkFOYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQVlnQVNnQ0NEWUM0QTBnQmtHQUQycEJ5QUZCMzRFSUlBWkI0QTFxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FJTU5nTFFEU0FHUVlBUGFrSElBVUdEZ2dnZ0JrSFFEV29RSnhvZ0FDQUdRWUFQYWhBU0dpQUdJQUVvQWhRMkFzQU5JQVpCZ0E5cVFjZ0JRYWlDQ0NBR1FjQU5haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDR0RZQ3NBMGdCa0dBRDJwQnlBRkIxNElJSUFaQnNBMXFFQ2NhSUFBZ0JrR0FEMm9RRWhvZ0JpQUJLQUlvTmdLZ0RTQUdRWUFQYWtISUFVSDhnZ2dnQmtHZ0RXb1FKeG9nQUNBR1FZQVBhaEFTR2dKQUlBUW9BZ0FOQUNBQ0lBTWdCQkRsQWtVTkFDQUFRYTJEQ0JBU0dndEJBQ0VFSUFKQmdnRklEUWdnQmlBQktBSk1OZ0tRRFNBR1FZQVBha0hJQVVISGlnZ2dCa0dRRFdvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FudzJBb0FOSUFaQmdBOXFRY2dCUWV1S0NDQUdRWUFOYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQVlnQVNnQ1JEWUM4QXdnQmtHQUQycEJ5QUZCeWZJSElBWkI4QXhxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FKSU5nTGdEQ0FHUVlBUGFrSElBVUg3OGdjZ0JrSGdER29RSnhvZ0FDQUdRWUFQYWhBU0dpQUNRWllCVGdSQUlBWWdBU2dDaEFFMkF0QU1JQVpCZ0E5cVFjZ0JRYTN6QnlBR1FkQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDaUFFMkFzQU1JQVpCZ0E5cVFjZ0JRZHZ6QnlBR1FjQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDdUFFMkFyQU1JQVpCZ0E5cVFjZ0JRYmIwQnlBR1FiQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDdkFFMkFxQU1JQVpCZ0E5cVFjZ0JRZWIwQnlBR1FhQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDd0FFMkFwQU1JQVpCZ0E5cVFjZ0JRWlAxQnlBR1FaQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDeEFFMkFvQU1JQVpCZ0E5cVFjZ0JRY2YxQnlBR1FZQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDeUFFMkF2QUxJQVpCZ0E5cVFjZ0JRWk9MQ0NBR1FmQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDZ0FFMkF1QUxJQVpCZ0E5cVFjZ0JRY09MQ0NBR1FlQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDakFFMkF0QUxJQVpCZ0E5cVFjZ0JRZkNMQ0NBR1FkQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDekFFMkFzQUxJQVpCZ0E5cVFjZ0JRZGYyQnlBR1FjQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDMEFFMkFyQUxJQVpCZ0E5cVFjZ0JRWWozQnlBR1FiQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDMUFFMkFxQUxJQVpCZ0E5cVFjZ0JRYnIzQnlBR1FhQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDMkFFMkFwQUxJQVpCZ0E5cVFjZ0JRZTMzQnlBR1FaQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDM0FFMkFvQUxJQVpCZ0E5cVFjZ0JRYUQ0QnlBR1FZQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDNEFFMkF2QUtJQVpCZ0E5cVFjZ0JRZGY0QnlBR1FmQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDNUFFMkF1QUtJQVpCZ0E5cVFjZ0JRWXY1QnlBR1FlQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDNkFFMkF0QUtJQVpCZ0E5cVFjZ0JRY0Q1QnlBR1FkQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDN0FFMkFzQUtJQVpCZ0E5cVFjZ0JRZmI1QnlBR1FjQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDOEFFMkFyQUtJQVpCZ0E5cVFjZ0JRYXo2QnlBR1FiQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDK0FFMkFxQUtJQVpCZ0E5cVFjZ0JRZnI2QnlBR1FhQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDOUFFMkFwQUtJQVpCZ0E5cVFjZ0JRZGI2QnlBR1FaQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBVkJmMnBCQVUwRVFDQUFRZU9sQnhBU0dpQURRUVJHQkVBZ0FFR1NuZ2NRRWhvTElBSkJ3Z05PQkVBZ0FFR3hwZ2NRRWhvTElBQkJub3dJRUJJYUN5QUdJQUVvQXZ3Qk5nS0FDaUFHUVlBUGFrSElBVUc5akFnZ0JrR0FDbW9RSnhvZ0FDQUdRWUFQYWhBU0dnc2dCaUFCS0FLVUFUWUM4QWtnQmtHQUQycEJ5QUZCM1l3SUlBWkI4QWxxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FLY0FUWUM0QWtnQmtHQUQycEJ5QUZCbUkwSUlBWkI0QWxxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FLa0FUWUMwQWtnQmtHQUQycEJ5QUZCd2Z3SElBWkIwQWxxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FLb0FUWUN3QWtnQmtHQUQycEJ5QUZCOFB3SElBWkJ3QWxxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FLc0FUWUNzQWtnQmtHQUQycEJ5QUZCaXZRSElBWkJzQWxxRUNjYUlBQWdCa0dBRDJvUUVob2dBa0d1QTA0RVFDQUdJQUVvQXJnQ05nS2dDU0FHUVlBUGFrSElBVUc3alFnZ0JrR2dDV29RSnhvZ0FDQUdRWUFQYWhBU0dpQUdJQUVvQXJ3Q05nS1FDU0FHUVlBUGFrSElBVUhxalFnZ0JrR1FDV29RSnhvZ0FDQUdRWUFQYWhBU0dnd0JDeUFDUWFRRFNBMEJDeUFCS1FKUUlRZ2dCaUFCS0FKWU5nS29CQ0FHSUFnM0E2QUVJQVpCZ0E5cVFjZ0JRYWVPQ0NBR1FhQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBRXBBbHdoQ0NBR0lBRW9BbVEyQXBnRUlBWWdDRGNEa0FRZ0JrR0FEMnBCeUFGQjRvNElJQVpCa0FScUVDY2FJQUFnQmtHQUQyb1FFaG9nQmlBQktBSm9OZ0tBQkNBR1FZQVBha0hJQVVHY2p3Z2dCa0dBQkdvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FtdzJBdkFESUFaQmdBOXFRY2dCUWN1UENDQUdRZkFEYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQUJCOStZR0VCSWFRUUVoQkNBSERRRUxRUUFoQkNBRFFRaEdEUUVMSUFZZ0FTZ0NrQUUyQXVBRElBWkJnQTlxUWNnQlFmcVBDQ0FHUWVBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NtQUUyQXRBRElBWkJnQTlxUWNnQlFadVFDQ0FHUWRBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NvQUUyQXNBRElBWkJnQTlxUWNnQlFjK1FDQ0FHUWNBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NzQUUyQXJBRElBWkJnQTlxUWNnQlFmbVFDQ0FHUWJBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0N0QUUyQXFBRElBWkJnQTlxUWNnQlFhV1JDQ0FHUWFBRGFoQW5HaUFBSUFaQmdBOXFFQklhUVFFaEJTQUVEUUVMSUFKQnBBTklEUUZCQUNFRklBTkJDRVlOQVFzZ0JpQUJLQUp3TmdLUUF5QUdRWUFQYWtISUFVSFJrUWdnQmtHUUEyb1FKeG9nQUNBR1FZQVBhaEFTR2lBR0lBRW9BblEyQW9BRElBWkJnQTlxUWNnQlFmeVJDQ0FHUVlBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NlRFlDOEFJZ0JrR0FEMnBCeUFGQnFKSUlJQVpCOEFKcUVDY2FJQUFnQmtHQUQyb1FFaG9nQUVIMzVnWVFFaHBCQVNFSElBVU5BUXRCQUNFSElBTkJDRVlnQWtHa0EwaHlEUUVMSUFZZ0FTZ0NnQUkyQXVBQ0lBWkJnQTlxUWNnQlFkcVNDQ0FHUWVBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NrQUkyQXRBQ0lBWkJnQTlxUWNnQlFZV1RDQ0FHUWRBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NsQUkyQXNBQ0lBWkJnQTlxUWNnQlFiS1RDQ0FHUWNBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NtQUkyQXJBQ0lBWkJnQTlxUWNnQlFkK1RDQ0FHUWJBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NuQUkyQXFBQ0lBWkJnQTlxUWNnQlFZdVVDQ0FHUWFBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NyQUkyQXBBQ0lBWkJnQTlxUWNnQlFieVVDQ0FHUVpBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NzQUkyQW9BQ0lBWkJnQTlxUWNnQlFlK1VDQ0FHUVlBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0N0QUkyQXZBQklBWkJnQTlxUWNnQlFhS1ZDQ0FHUWZBQmFoQW5HaUFBSUFaQmdBOXFFQklhQ3lBRFFRaEhJUVFDUUNBRFFRaEdJQUpCcEFOSWNnUi9JQVFGSUFZZ0FTZ0NoQUkyQXVBQklBWkJnQTlxUWNnQlFhTDlCeUFHUWVBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NpQUkyQXRBQklBWkJnQTlxUWNnQlFkTDlCeUFHUWRBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NqQUkyQXNBQklBWkJnQTlxUWNnQlFmZjFCeUFHUWNBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NvQUkyQXJBQklBWkJnQTlxUWNnQlFZWCtCeUFHUWJBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NwQUkyQXFBQklBWkJnQTlxUWNnQlFiditCeUFHUWFBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NxQUkyQXBBQklBWkJnQTlxUWNnQlFhVDJCeUFHUVpBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFCQjkrWUdFQklhUVFFTFJTQUNRY0lEU0hKRkJFQWdCaUFCS0FMQUFqWUNnQUVnQmtHQUQycEJ5QUZCMEpVSUlBWkJnQUZxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FMRUFqWUNjQ0FHUVlBUGFrSElBVUgwbFFnZ0JrSHdBR29RSnhvZ0FDQUdRWUFQYWhBU0drRUJJUVFNQVF0QkFDRUVJQWRGRFFFTElBWWdBU2dDeUFJMkFtQWdCa0dBRDJwQnlBRkJwNVlJSUFaQjRBQnFFQ2NhSUFBZ0JrR0FEMm9RRWhvTFFRQWdBMEVJUmlBQ1FiOENTbkZGSUFRYlJRUkFJQVlnQVNnQ3pBSTJBa0FnQmtHQUQycEJ5QUZCeFpZSUlBWkJRR3NRSnhvZ0FDQUdRWUFQYWhBU0dpQUdJQUVvQXRBQ05nSXdJQVpCZ0E5cVFjZ0JRZkNXQ0NBR1FUQnFFQ2NhSUFBZ0JrR0FEMm9RRWhvZ0FTa0MxQUloQ0NBR0lBRW9BdHdDTmdJb0lBWWdDRGNESUNBR1FZQVBha0hJQVVHZGx3Z2dCa0VnYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQUVwQXVBQ0lRZ2dCaUFCS0FMb0FqWUNHQ0FHSUFnM0F4QWdCa0dBRDJwQnlBRkIxcGNJSUFaQkVHb1FKeG9nQUNBR1FZQVBhaEFTR2lBR0lBRW9BdXdDTmdJQUlBWkJnQTlxUWNnQlFZK1lDQ0FHRUNjYUlBQWdCa0dBRDJvUUVob2dBRUgzNWdZUUVob0xJQUJCOStZR0VCSWFJQVpCMEJCcUpBQUxJZ0VCZnlNQVFSQnJJZ0lrQUNBQUlBRWdBR3NRN2cwaEFDQUNRUkJxSkFBZ0FBdEtBUUYvSXdCQkVHc2lCU1FBSUFFUUpTSUJJQUJCQVJDT0RpQUZRUWhxSUFGQkFCRERBUkNSQVNJQUtBSUFRUkJxSUFJZ0F5QUVFTThISUFBUUpVRUJPZ0FFSUFWQkVHb2tBQXVTQVFFRGZ5QUFFRHdoQXlBQUVDVWhCUUpBSUFNRVFBSkFBMEFDUUFKL0lBQVFHeUFDSUFOQkVHb2lCQkNmQlFSQUlBTW9BZ0JGRFFZZ0F3d0JDeUFBRUJzZ0JDQUNFSjhGUlEwRElBTkJCR29oQkNBREtBSUVSUTBCSUFRaUF3c2hCU0FES0FJQUlRTU1BUXNMSUFFZ0F6WUNBQ0FFRHdzZ0FTQUROZ0lBSUFVUEN5QUFFQ1VoQXdzZ0FTQUROZ0lBSUFNTGdnRUJBbjhqQUVFZ2F5SUZKQUFnQVNBRlFSeHFJQUlRdFJraUJpZ0NBQ0VDSUFWQkFEb0FHeUFDUlFSQUlBVkJDR29nQVVIQXl3OGdBeUFFRUxRWklBRWdCU2dDSENBR0lBVW9BZ2dRN2dJZ0JVRUlhaEJmSVFJZ0JVRUJPZ0FiSUFWQkNHb1Fzd0lMSUFBZ0JVRUlhaUFDRURFZ0JVRWJhaENpQVNBRlFTQnFKQUFMV1FFQ2Z5TUFRU0JySWdNa0FDQUFFQnNpQWlBRFFRaHFJQUFnQUJDbkFVRUJhaENPQnlBQUVLY0JJQUlRalFjaUFpZ0NDQ0FCRUtBRklBSWdBaWdDQ0VFTWFqWUNDQ0FBSUFJUTl3MGdBaENNQ1NBRFFTQnFKQUFMU3dFQmZ5TUFRUkJySWdJa0FBSkFJQUFvQWdRZ0FCQWJLQUlBU1FSQUlBQVFHeUFBS0FJRUlBRVFvQVVnQUNBQUtBSUVRUXhxTmdJRURBRUxJQUFnQVJDM0dRc2dBa0VRYWlRQUN3a0FJQUFRaGdrUUtnc0hBQ0FBTFFBUUN3UUFRUUVMREFBZ0FCQ0dDUm9nQUJBcUN6RUJBWDhnQVNBQUtBSUVJZ0pIQkVBRFFDQUFFQnNhSUFKQmRHb2lBaERtQWlBQklBSkhEUUFMQ3lBQUlBRTJBZ1FMS0FBZ0FCQWJHaUFCQkVBRFFDQUJLQUlBSVFBZ0FVRUlhaERtQWlBQkVDb2dBQ0lCRFFBTEN3c3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkFiR2lBQ1FYQnFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBc3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkFiR2lBQ1FXaHFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBdXVDUUVOZnlNQVFSQnJJZ1VrQUFKQUlBRXRBQUVpQjBFRlMwRUJJQWQwUVRSeFJYSU5BQ0FCRUlvQkRRQUNRQ0FEUVlzQlNnMEFJQUVvQWdBaUIwR0EvZ054UVlBS1J3MEFJQWRCL3dGeFFRRkhEUUVMSUFSQkNFWWdBMEhDQTBoeUlRb2dBRUVFYWlFT1FRQWhCQU5BQWtBZ0JDSUpCRUFnQVMwQUFFRURSdzBCQzBILzdRZEJoKzRISUFrYklRMUJBQ0VEQTBCQkFDRUVBMEFDUUNBRUlndEJBVVlFUUNBQkxRQUNRUUp4RFFFTEFrQWdBd1JBSUFFdEFBRkJDSFJCZ0FoR0RRRUxRUUFoQkFOQUFuOGdCQ0lIQkVBZ0NnMERJQVVRMVFFYVFjRGtCeUVJUVpqdUJ3d0JDeUFGRU5VQklBQWdBUzBBQUVFQ2RHb29Bb2dDRUJJYVFkN3NCeUVJUWF6dUJ3c2hCQ0FGSUFnUUVob2dCU0FFRUJJYUlBTkJmMm9pQkVFQlRRUkFRYUR0QnlFSUlBVWdDRUc2N2djZ0JFRUJheHNRRWhvTElBY0VRQ0FGUWEzdEJ4QVNHZ3NnQlVISzdBY1FFaG9nQlNBQ0VJa0JHaUFGSUEwUUVob2dCU0FBSUFFb0FnQWlCRUVRZGtFQmNTQUFJQVJCQm5aQi9BZHhhaWdDMkFKcVFRSjBhaWdDOUFFUUVob2dBUzBBQWtFQ2NRUkFJQVZCeHUwSEVCSWFDd0pBSUFORkRRQWdCVUhDN2djUUVob2dBMEVDUncwQUlBVkJ5ZTRIRUJJYUN5QUhCRUFnQlVHUzdnY1FFaG9nQlNBQUlBRXRBQUJCQW5ScUtBS0lBaEFTR2lBRlFkN3NCeEFTR2dzZ0N3UkFJQVZCemUwSEVCSWFDeUFGUWJ6a0J4QVNHaUFPSUFVUWlRRWFJQVVRR1JwQkFTRUVJQWRGRFFBTEMwRUJJUVFnQzBVTkFRc0xJQU5CQVdvaUEwRURSdzBBQzBFQklRUWdDVVVOQVFzTElBRW9BZ0FpQTBHQWdBaHhRUkYySUFOQmdQNERjVUdBQ2taeUlBcHlEUUFnQUVIVUFHb2hEVUVBSVFRRFFDQUVJUWxCQUNFRUEwQUNRQ0FFSUFseVJTQUpRUUJISUFRaUIwRUFSM0Z5RFFCQnplNEhRYTN0QnlBSEd5RVFRUUFoQkFOQUlBUWlDd1JBSUFFdEFBQkJBMGNOQWd0QjB1MEhRY2J0QnlBTEd5RVBRZi90QjBHSDdnY2dDeHNoRVVFQUlRZ0RRRUVCSVFRRFFBSkFJQWxCQUNBRUd3MEFJQWdFUUNBQkxRQUJRUWgwUVlBSVJnMEJDMEVBSVFNRFFDQUZFTlVCSVFZQ2Z5QURJZ29FUUVIQTVBY2hERUdZN2djTUFRc2dCaUFBSUFFdEFBQkJBblJxS0FLSUFoQVNHa0hlN0FjaERFR3M3Z2NMSVFNZ0JpQU1FQklhSUFZZ0F4QVNHaUFIQkVBZ0JrR1I3UWNRRWhvTElBaEJmMm9pQTBFQlRRUkFRYUR0QnlFTUlBWWdERUc2N2djZ0EwRUJheHNRRWhvTElBY2dDbklFUUNBR0lCQVFFaG9MSUFaQnl1d0hFQklhSUFZZ0FoQ0pBUm9nQmlBUkVCSWFJQVlnQUNBQktBSUFJZ05CRUhaQkFYRWdBQ0FEUVFaMlFmd0hjV29vQXRnQ2FrRUNkR29vQXZRQkVCSWFJQWNFUUNBR0lBOFFFaG9MQWtBZ0NFVU5BQ0FHUWNMdUJ4QVNHaUFJUVFKSERRQWdCa0hKN2djUUVob0xJQW9FUUNBR1FaTHVCeEFTR2lBR0lBQWdBUzBBQUVFQ2RHb29Bb2dDRUJJYUlBWkIzdXdIRUJJYUN5QUVSUVJBSUFaQnplMEhFQklhQ3lBT0lRTWdDUVJBSUFZZ0R4QVNHaUFOSVFNTElBWkJ2T1FIRUJJYUlBTWdCaENKQVJvZ0JoQVpHa0VCSVFNZ0NrVU5BQXNMSUFRaEEwRUFJUVFnQXcwQUN5QUlRUUZxSWdoQkEwY05BQXRCQVNFRUlBdEZEUUFMQzBFQklRUWdCMFVOQUFzZ0NVVU5BQXNMSUFWQkVHb2tBQXRUQVFKL0lBQVEzd1JGQkVBZ0FCQWJHaUFBS0FJRUlnRWdBQ0lDS0FJQUVPQUVJQUFRRzBFQU5nSUFJQUFnQVVjRVFBTkFJQUVpQUNnQ0JDRUJJQUJCQ0dvUXFRWWdBQkFxSUFFZ0FrY05BQXNMQ3dzc0FRRi9JQUFvQWdBRVFDQUFJQUFvQWdBUWtnNGdBQkFiR2lBQUtBSUFJUUVnQUJDTkJCb2dBUkFxQ3dzc0FRRi9JQUFvQWdBRVFDQUFJQUFvQWdBUXdCa2dBQkFiR2lBQUtBSUFJUUVnQUJDTkJCb2dBUkFxQ3d0K0FRSi9Jd0JCRUdzaUJDUUFJQVJCQURZQ0RDQUFRUXhxSUFSQkRHb2dBeENCQWlBQkJFQWdBQ2dDRUJwQi8vLy8vd01nQVNJRFNRUkFFSUlCQUFzZ0EwRUNkQkFtSVFVTElBQWdCVFlDQUNBQUlBVWdBa0VDZEdvaUFqWUNDQ0FBSUFJMkFnUWdBQkFqSUFVZ0FVRUNkR28yQWdBZ0JFRVFhaVFBSUFBTE5nRUJmeUFCSUFBb0FnaEhCRUFEUUNBQUtBSVFHaUFBSUFBb0FnaEJkR29pQWpZQ0NDQUNFT1lDSUFBb0FnZ2dBVWNOQUFzTEM3QUlBUWgvSXdCQklHc2lDaVFBSUFBZ0FTZ0NBQ0lKUVFoMlFmOEJjU0lGUVFKMGFpZ0MyQUloQjBIWjVRY2hCaUFLUVJCcUlBSVEvd0VpQ0NBSElBbEJFSFlnQlVFRVIzRnFJZ3RCQVVjRWZ5QUlRZC9sQnhBU0dpQUFJQXRCQW5ScUtBTDBBUVVnQmdzUUVob2dBUkNLQVFSQUlBaEIyZVVIRUJJYUN5QUVRUWhHQkVBZ0FFRUVha0hwNHdjUUVob0xJQUJCQkdvaUJTQUFRWWdDYWlJR0lBRXRBQUJCQW5ScUtBSUFFQklhSUFWQjV1VUhFQklhSUFVZ0NCQ0pBUm9nQlVHODVBY1FFaG9nQlVHUjVnY1FFaG9nQlNBSUVJa0JHaUFGUWI3bUJ4QVNHaUFGSUFZZ0FTMEFBRUVDZEdvb0FnQVFFaG9nQlVIQjVnY1FFaG9DUUFKQUFrQWdBUkR6QlEwQUlBRVEvUUVnQkVFSVJpQURRY0lEU0hKeURRQWdCVUhKNWdjUUVob2dCU0FJRUlrQkdpQUZRZnptQnhBU0dpQUZJQUFnQVMwQUFFRUNkR29vQW9nQ0VCSWFJQVZCNEtJQ0VCSWFJQVZCdk9RSEVCSWFRUUVoQmtFQUlRa01BUXNnQTBHMUFrb2lCeUFFUVFoR0lneHhJUWtnQkVFSVJ5RUdJQWNOQUNBTURRRUxJQUVvQWdBaUIwSCtBWEZCQ0VZRVFFR0Q1d2RCamVjSElBZEIvd0Z4UVFoR0d5RUhRUUFoQmdOQUlBWWhDU0FGSUFjUUVocEJBQ0VHQTBBZ0JTQUdRUUowUWFEbkIyb29BZ0FRRWhvZ0JTQUlFSWtCR2lBRlFiN21CeEFTR2lBRklBY1FFaG9nQ1VFQlJnUkFJQVZCdGVrSEVCSWFDeUFGUWJ6a0J4QVNHaUFGSUFjUUVob2dCa0VCYWlJR1FRZEhEUUFMSUFWQnhla0hFQklhSUFVZ0NCQ0pBUm9nQlVHKzVnY1FFaG9nQlNBSEVCSWFJQVZCdnVZSEVCSWFJQVVnQnhBU0dnSkFJQWxCQVVZRVFDQUZRZTNwQnhBU0dpQUZRYnprQnhBU0dnd0JDeUFGUWJ6a0J4QVNHa0VCSVFZZ0NVVU5BUXNMSUFVZ0J4QVNHaUFGUVlmcUJ4QVNHaUFGSUFnUWlRRWFJQVZCcStvSEVCSWFJQVZCdnVvSEVCSWFJQVVnQ0JDSkFSb2dCVUcrNWdjUUVob2dCU0FIRUJJYUlBVkJxK29IRUJJYURBRUxJQWtnQTBIQkEwb2dCbkZ5UVFGSERRQWdCVUhuNmdjUUVob2dCU0FJRUlrQkdpQUZRWlRyQnhBU0dnc0NRQ0FCS0FJQUlnWkJnSUFJY1NBR1FRaDJRZjhCY1VGN2FrRUNTWElOQUNBQkVJb0JJQVJCQ0VZZ0EwSENBMGh5Y2cwQVFkbmxCeUVHSUFvZ0FoRC9BU0lDSUF0QkFVY0VmeUFDUWQvbEJ4QVNHaUFBSUF0QkFuUnFLQUwwQVFVZ0Jnc1FFaG9nQWtIWjVRY1FFaG9nQlNBQVFZZ0NhaUlESUFFdEFBQkJBblJxS0FJQUVCSWFJQVZCbitzSEVCSWFJQVVnQWhDSkFSb2dCVUc4NUFjUUVob2dCVUhRNndjUUVob2dCU0FDRUlrQkdpQUZRYjdtQnhBU0dpQUZJQU1nQVMwQUFFRUNkR29vQWdBUUVob2dCVUhCNWdjUUVob2dBUkR6QlVVRVFDQUZRWVBzQnhBU0dpQUZJQUlRaVFFYUlBVkIvT1lIRUJJYUlBVWdBQ0FCTFFBQVFRSjBhaWdDaUFJUUVob2dCVUhnb2dJUUVob2dCVUc4NUFjUUVob0xJQUlRR1JvTElBZ1FHUm9nQ2tFZ2FpUUFDME1CQVg4akFFRVFheUlCSkFBZ0FCQWJHaUFCUWRXcTFhb0JOZ0lNSUFGQi8vLy8vd2MyQWdnZ0FVRU1haUFCUVFocUVLUUJLQUlBSVFBZ0FVRVFhaVFBSUFBTFdRRUNmeU1BUVNCcklnTWtBQ0FBRUJzaUFpQURRUWhxSUFBZ0FCQ25BVUVCYWhDT0J5QUFFS2NCSUFJUWpRY2lBaWdDQ0NBQkVLRUZJQUlnQWlnQ0NFRU1hallDQ0NBQUlBSVE5dzBnQWhDTUNTQURRU0JxSkFBTFV3RUJmeUFBUWRRQWFpSURJQUFnQVMwQUFFRUNkR29vQW9nQ0VCSWFJQU5CdWV3SEVCSWFJQU5CeXV3SEVCSWFJQU1nQWhBVEVCSWFJQUVRaWdFRVFDQURRZG5sQnhBU0dnc2dBMEc4NUFjUUVob0xDUUFnQUJDakJSQXFDL3NIQVJkL0l3QkJnQUZySWdRa0FBSi9JQUZCdFFKTUJFQkJBU0VQUVFFZ0FrRUlSZzBCR2dzZ0FrRUlSeUlGSUFGQmpBRkljU0VQSUFGQmdnRklJQVZ4Q3lFU0lBSkJDRVlpRFNBQlFjSURTSEloRXlBQlFaWUJTQ0VVSUFGQnRnSklJUkFnQVVHTUFVZ2hGVUVBSVFVRFFDQUZJUWxCQUNFRkEwQWdCU0VJUVFBaEJRTkFBa0FnQ0VFQUlBVWlDaUFKY2hzTkFFRUFJUVVnRUNBTklBcEJBRWNpQzNGeERRQWdGQ0FDUVFoSEloWWdDM0Z4SUEwZ0NVRUFSeUFMY1hGeURRQURRQ0FRSUEwZ0NrRUFSeUlPSUFVaUMwRUFSeUlNY1hGeElSY2dCU0FJY2lJRklBbHlJUmdnQlNBS2NpRVpRUUVoQndOQUFrQUNRQUpBSUFkQkIwY2lFVVVFUUNBWURRTkJBQ0VGSUFNb0FnZ05BUXdEQ3lBSFFRVkdJUVVnRmcwQUlBZEJCSEpCQlVZTkFRc2dDa1VnQjBFSFJuSkZRUUFnQjBFQ1J4c05BQ0FIUVFaR0lnWWdEM0VnQmlBWlFRQkhjU0FYY25JZ0NFRUFJQWRCQTBZYmNpQVNJQXdnQjBFRVJuRnhJQXdnQjBFRFJpQUZjbkZ5Y2cwQUlBVWdGWEVoR2tFQUlRVURRQ0FUSUFWQkEwWnhJQm9nQlVFQVIzRnlJQWhCQUNBRlFYOXFRUUpKRzNKRkJFQWdCVUVDZEVHdzR3ZHFLQUlBSVFZQ1FDQVJSUVJBSUFSQitBQnFJQVlnRGhEYUF3d0JDeUFKQkVBZ0JFSDRBR29nQmlBSElBd2dDRUVBUnlBT0VHOE1BUXNnQkVINEFHb2dCaUFISUF3Z0NFRUFSeUFPRUU4TElBUkI2QUJxSUFSQitBQnFFS29KSUFRb0FuZ2hCZ0pBSUJGRkJFQWdCQ0FHTmdJRUlBUWdCallDWUNBQUlBUkJCR29nQkVIb0FHb1F5aGtNQVFzZ0JDQUdOZ0ljSUFRZ0JqWUNXQ0FBSUFSQkhHb2dCRUhvQUdvZ0FTQUNFUGdOSUFRb0FuZ2hCaUFKQkVBZ0JDQUdOZ0lJSUFRZ0JqWUNVQ0FBSUFSQkNHb2dCRUhvQUdvZ0FTQUNFTWNaREFFTElBUWdCallDR0NBRUlBWTJBa2dnQUNBRVFSaHFJQVJCNkFCcUlBRWdBaEQwRFNBRUlBUW9BbmdpQmpZQ1FDQUVJQVkyQWhRZ0FDQUVRUlJxSUFSQjZBQnFJQUVnQWhEQkdTQURLQUlJUVFGSURRQWdCRUg0QUdvUXFBSkZEUUFnQkNnQ2VDSUdRWUNBQ0hFTkFDQUVRZmdBYWlBR1FmOEJjU0FHUVFoMlFmOEJjU0FHUVlDQUJIRkJFSFlnQmtHQWdCQnhRUkoyRUhBZ0JFRXdhaUFFUWZnQWFoQ3FDU0FFSUFRb0FuZ2lCallDS0NBRUlBWTJBaEFnQUNBRVFSQnFJQVJCTUdvZ0FTQUNFUFFOSUFRZ0JDZ0NlQ0lHTmdJZ0lBUWdCallDRENBQUlBUkJER29nQkVFd2FpQUJJQUlRK0EwZ0JFRXdhaEFaR2dzZ0JFSG9BR29RR1JvTElBVkJBV29pQlVFRVJ3MEFDd3NnQjBFQmFpSUhRUWhIRFFFTEMwRUJJUVVnQzBVTkFBc0xRUUVoQlNBS1JRMEFDeUFJUlEwQUN5QUpSUTBBQ3lBQ1FRaEdJQUZCd2dOSWNrVUVRQ0FBUVFScVFjRGpCeEFTR2dzZ0JFR0FBV29rQUF1OEJBRUVmeU1BUVJCcklna2tBQUpBSUFsQkNHb1EvdzBRT2lJR0VKRUhEUUFnQmlnQ0FDSUhJQU1nQkNBRklBY29BZ0FvQWdnUkJBQWdCaWdDQUNJSElBY29BZ0FvQWhBUkFBQWdBeUFFSUFWQkFDQUFJQUVvQWdBUWtBY2dCRUVJUnlJSFJRUkFJQVlvQWdBaUNDQUlLQUlBS0FJUUVRQUFJQU5CQ0NBRlFRUWdBQ0FCS0FJRUVKQUhDeUFHS0FJQUlBTWdCQ0FGUVFBZ0FDQUJJQUlRd0FJZ0JpZ0NBQ0FESUFRZ0JVRUVJQUFnQVNBQ0VNQUNRUUFnQTBHVkFVb2dCM0ZGSUFSQkNFWWdBMEcxQWtweElnY2JSUVJBSUFZb0FnQWdBeUFFSUFWQkFTQUFJQUVnQWhEQUFpQUdLQUlBSUFNZ0JDQUZRUUlnQUNBQklBSVF3QUlnQmlnQ0FDQURJQVFnQlVFRElBQWdBU0FDRU1BQ0N5QUhJQVJCQ0VjaUNDQURRYU1EU25GeVFRRkdCRUFnQmlnQ0FDQURJQVFnQlVFRklBQWdBU0FDRU1BQ0N3SkFBa0FnQTBIQkEwb2dDSEVpQjBFQlJnUkFJQVlvQWdBZ0F5QUVJQVZCQmlBQUlBRWdBaERBQWlBR0tBSUFJQU1nQkNBRlFRY2dBQ0FCSUFJUXdBSWdCaWdDQUNBRElBUWdCVUVJSUFBZ0FTQUNFTUFDSUFZb0FnQWdBeUFFSUFWQkNTQUFJQUVnQWhEQUFpQUdLQUlBSUFNZ0JDQUZRUW9nQUNBQklBSVF3QUlnQmlnQ0FDQURJQVFnQlVFTElBQWdBU0FDRU1BQ0RBRUxJQVJCQ0VjZ0EwSEFBa2h5RFFFTElBWW9BZ0FnQXlBRUlBVkJEU0FBSUFFZ0FoREFBZ3NnQnlBRVFRaEdJQU5CdndKS2NYSkJBVWNOQUNBR0tBSUFJQU1nQkNBRlFRd2dBQ0FCSUFJUXdBSUxJQVlRUGlBSlFSQnFKQUFMYmdBQ2Z5QUFJQUVnQWlBRElBQW9BZ0FvQXRnQkVRa0FCRUJCQVNBRUtBSkFSUTBCR2lBRUlBUW9Ba0FnQUNnQ0ZCQzZGQXdCQ3lBQUtBSU1RUUlRclFNZ0FDZ0NEQ0FBS0FKQUVKVUJRY1hKRHhBUUdrRUFDeUVCSUFWQkJIRUVRQ0FFSUFBb0Fnd1FweGdMSUFFTGpnRUJBMzhqQUVFUWF5SUlKQUFnQ0VFSWFoRC9EUkE2SWdjUWtRZEZCRUFnQnlnQ0FDSUdRZUFJSUFJZ0F5QUVJQVVnQmlnQ0FDZ0NEQkVDQUNBSEtBSUFJZ1lnQmlnQ0FDZ0NFQkVBQUNBQ0lBTWdCQ0FGSUFBZ0FSQ1FCeUFIS0FJQUlnQWdBaUFESUFRZ0JTQUJRZUFJSUFBb0FnQW9BaHdSRHdCQkFTRUdDeUFIRUQ0Z0NFRVFhaVFBSUFZTHVnUUJESDhqQUVIZ0FHc2lCQ1FBSUFSQlFHc1FtQWtoQ3lBQUVJc09JZ1pCd0FGc0lBSVFpZzRpQjBFR2RHb2dBUkNKRGlJSlFRUjBha0hncGhScUtBSUFSUVJBRU5VRElReEJNQkFtSWcwUS9BVWlEaENtQlFOQVFSZ1FKaUlLRVBzRkdpQUVRVGhxSUFVaUNFRUNkR29nQ2pZQ0FFRUJJUVVnQ0VVTkFBc0RRRUVZRUNZaUJSRDdCUm9nQkNBRFFRSjBhaUFGTmdJQUlBTkJBV29pQTBFT1J3MEFDeUFMSUFSQk9Hb2dCQ0FBSUFFZ0FoRE5HVUVBSVFOQm1QUVNLQUlBRUtZRklBWkJ3QUZzSUFkQkJuUnFJQWxCQkhScUlRSURRQ0FESWdCQkFuUWlBeUFFUVRocWFpZ0NBQ0lGRUlNT1JRUkFRUmdRSmlJSUVQc0ZJUW9nQWlBRGFrSGdwaFJxSWdNZ0NEWUNBQ0FLSUFVUTRBMGdBeWdDQUJDQ0RndEJBU0VESUFCRkRRQUxRUUFoQXlBR1FjQUtiQ0FIUWNBRGJHb2dDVUh3QUd4cUlRSWdCa0hBQVd3Z0IwRUdkR29nQ1VFRWRHb2hCUU5BSUFRZ0EwRUNkQ0lBYWlnQ0FDSUlFSU1PUlFSQVFSZ1FKaUlHRVBzRklRY2dBQ0FDYWtHZzlCSnFJZ0FnQmpZQ0FDQUhJQVVnQVNBREVJRU9RUUowYWtIZ3BoUnFLQUlBRUpBSklBQW9BZ0FnQ0JEZ0RTQUFLQUlBRUlJT0N5QURRUUZxSWdOQkRrY05BQXRCQUNFREEwQWdCRUU0YWlBRElnQkJBblJxS0FJQUlnRUVRQ0FCRUp3SkVDb0xRUUVoQXlBQVJRMEFDMEVBSVFNRFFDQUVJQU5CQW5ScUtBSUFJZ0FFUUNBQUVKd0pFQ29MSUFOQkFXb2lBMEVPUncwQUN5QU9FSm9IR2lBTkVDb2dEQkNtQlFzZ0N4Q1dDUm9nQkVIZ0FHb2tBQXVjSndFWmZ5TUFRZkFDYXlJSUpBQWdBQ0FCSUFJZ0F4Q0JHaUFJUWVBQ2FrR2hJaEFpSVJNZ0NFSFFBbXBCaWljUUlpRVVJQWhCd0FKcVFZMHZFQ0loRlNBQ1FRaEhJZ1FnQVVHVkFVcHhJaEJCQVVZRVFDQUFRUVJxUVpBM0VCSWFDeUFCUWNFRFNpQUVjU0lNUVFGR0JFQWdBRUVFYWtHbzRBQVFFaG9MUVFFaEJBSi9Ba0FnQWtFSVJ5QUJRYTBEU25FaUJrRUJSZ1JBSUFCQkJHcEJyb0lCRUJJYVFRQWhCQXdCQ3lBQlFiVUNTaUVXSUFKQkNFWWhCMEVBSUFKQkNFY2dBVUcyQWtoeURRRWFDeUFBUVFScVFaK1lBUkFTR2tFQklSWWdCQ0VISUFRTElRa2dBa0VJUnlJRUlBRkJ0d05LY1NJWVFRRkdCRUFnQUVFRWFrSHRvZ0VRRWhvTFFRQWdBVUhKQWtvZ0JIRkZJQUZCcXdKS0lBZHhJZzBiUlFSQUlBQkJCR3BCdTdjQkVCSWFDeUFDUVFoSElBRkJqd05LY1NJTElBbHlJaEZCQVVZRVFDQUFRUVJxUWNXOEFSQVNHZ3NnRUFSQUlBQkJCR3BCMDcwQkVCSWFDeUFSQkVBZ0FFRUVha0hodmdFUUVob0xJQkFFUUNBQVFRUnFRWi9CQVJBU0dnc2dDeUFOY2tFQlJnUkFJQUJCQkdwQnljTUJFQklhQ3lBQ1FRaEhJQUZCb3dOS2NTSVpJQTF5SWdSQkFVWUVRQ0FBUVFScVFZdkVBUkFTR2dzZ0JFRUJSZ1JBSUFCQkJHcEI4Y1FCUVp2RkFTQU5HeEFTR2dzZ0VRUkFJQUJCQkdwQnhjVUJFQklhQ3dKQUFrQUNRQ0FKQkVBZ0FFRUVha0dEeGdFUUVob01BUXNnQzBVTkFDQUFRUVJxSWdWQjFjWUJFQklhSUFWQmw4Y0JFQklhREFFTElBQkJCR29pQlVHWHh3RVFFaG9nQVVINEFFZ05BUXNnQlVHRnlBRVFFaHBCQVNFWElBRkJsZ0ZJRFFBZ0JVR2l6Z0VRRWhvTEFrQkJBQ0FCUWVRQVJpQUhjU0FDUVFSR2NpSWFJQUpCQVVaeVJTQUNRUUpHSUFGQnBBTkljUnNOQUNBREtBSUFEUUFnQlVHeHp3RVFFaG9MQWtCQkFDQUNRUVJHSUFKQkFVWnlSU0FDUVFKR0lBRkJwQU5JY1JzTkFDQURLQUlBRFFBZ0JVR0QwUUVRRWhvTEFrQWdCMFVOQUNBREtBSUFEUUFnQlVIbzFBRkI4OVVCSUFGQnJBSklHeEFTR2lBRlFmellBUkFTR2lBRlFjWGNBUkFTR2dzQ1FDQUNRUWhHRFFBZ0F5Z0NBQTBBSUFWQjlkNEJFQklhQ3dKQUlBTW9BZ2dOQUNBQ1FRaEhJQUZCcXdKS2NTQUpja0VCUmdSQUlBVkJ5K0VCRUJJYUN5QUNRUWhHSUFGQnpBTkljZzBBSUFWQnYrSUJFQklhQ3lBUkJFQWdCVUhHNVFFUUVob0xBa0FDUUNBTFJRUkFJQWtFUUNBRlFicnNBUkFTR2lBRlFaYnhBUkFTR2d3Q0N5QVJSUTBDSUFWQmx2RUJFQklhREFJTElBVkJrT3NCRUJJYUlBVkJqTzRCRUJJYUlBVkJsdkVCRUJJYUlBbEZEUUVMSUFWQnlQd0JFQklhQ3lBTUJFQWdCVUdpZ0FJUUVob0xJQVlFUUNBRlFhT0hBaEFTR2dzZ0FrRUlSeUliSUFGQml3RktjU0ljSUFseUlnNUJBVVlFUUNBRlFZQ0lBaEFTR2dOQVFRRWhFZ0ovUVFFZ0QwRUNkRUdRakFKcUtBSUFJZ3BCMTZZQ0VOTUREUUFhUVFFZ0NrSGFwZ0lRMHdNTkFCcEJBQ0FLUWQ2bUFoRFRBMFVOQUJvZ0NrSGlwZ0lRMHdORkN5RUdBa0FnQ2tIdHBnSVEwd01OQUNBS1FmR21BaERUQXcwQUlBcEI5YVlDRU5NRERRQWdDa0g1cGdJUTB3TkJBRWNoRWd0QkFDRUVBa0FnQmcwQUEwQWdDQ0FFUVFKMFFiQ2lBbW9vQWdBaUJqWUNOQ0FJSUFZMkFqQWdDRUZBYTBHQUFpQUtJQWhCTUdvUUp4b2dCU0FJUVVCckVCSWFJQVJCQVdvaUJFRUlSdzBBQzBFQUlRUWdDMFVOQUFOQUlBZ2dCRUVDZEVHUW93SnFLQUlBSWdZMkFpUWdDQ0FHTmdJZ0lBaEJRR3RCZ0FJZ0NpQUlRU0JxRUNjYUlBVWdDRUZBYXhBU0dpQUVRUUZxSWdSQkJFY05BQXNMUVFBaEJDQVNSUVJBQTBBZ0NDQUVRUUowUWJDbUFtb29BZ0FpQmpZQ0ZDQUlJQVkyQWhBZ0NFRkFhMEdBQWlBS0lBaEJFR29RSnhvZ0JTQUlRVUJyRUJJYUlBUkJBV29pQkVFRVJ3MEFDd3RCQUNFRUEwQWdDQ0FFUVFKMFFjQ2pBbW9vQWdBaUJqWUNCQ0FJSUFZMkFnQWdDRUZBYTBHQUFpQUtJQWdRSnhvZ0JTQUlRVUJyRUJJYUlBUkJBV29pQkVFZ1J3MEFDeUFQUVFGcUlnOUJQVWNOQUFzZ0FFSGtBR3BCL2FZQ0VCSWFJQUJCNUFGcVFmMm1BaEFTR2lBQVFkUUJha0g5cGdJUUVob0xJQUZCeXdOS0lCdHhJZzlCQVVZRVFDQUZRYUtuQWhBU0dnc2dEQVJBSUFWQjlxY0NFQklhQ3lBWUJFQWdCVUgycEFRUUVob0xJQXdFUUNBRlFlQ2xCQkFTR2dzZ0FrRUlSeUFCUVlFQlNuRWlFaUFOY2tFQlJnUkFJQVZCNUtvRUVCSWFDeUFNSUFGQnZ3SktJQWR4SWcxeUlnWkJBVVlFUUNBRlFjSFNCQkFTR2dzZ0RBUkFJQVZCM2R3RUVCSWFJQVZCanFRRkVCSWFJQUJCMUFCcUlnUWdGUkNKQVJvZ0JFR1Brd1lRRWhvTEFrQWdBeWdDQ0EwQUlBRWdBaUFERU9VQ1JRMEFJQUJCRkdwQnQ1Y0dFQklhQ3lBQVFSUnFJQVVnQVVIa0FFWWJJUVFDUUVFQUlCb2dBa0VCUm5KRklBSkJBa1lnQVVHa0EwaHhHdzBBSUFNb0FnQU5BQ0FFUWNxWEJoQVNHZ3NDUUVFQUlBSkJCRVlnQWtFQlJuSkZJQUpCQWtZZ0FVR2tBMGh4R3cwQUlBTW9BZ0FOQUNBRVFkaVpCaEFTR2dzZ0NTQVFja0VCUmdSQUlBc0VRQ0FBUWNRQWFrRzlwQVlRRWhvTElBQkJ4QUJxUWZha0JoQVNHaUFBUVNScVFaNmxCaEFTR2dzZ0NTQVpjaUlLUVFGR0JFQWdBRUhrQUdwQm5xVUdFQklhQ3lBR0JFQWdBRUhrQVdwQm5xVUdFQklhSUFCQjFBRnFRWjZsQmhBU0dnc2dDU0FTY2tFQlJnUkFJQVZCcnFVR0VCSWFDeUFLQkVBZ0JVSEVwUVlRRWhvZ0FFSGtBR3BCNEtVR0VCSWFJQVZCbHFZR0VCSWFDeUFHQkVBZ0FFSGtBV3BCNEtVR0VCSWFJQUJCMUFGcVFlQ2xCaEFTR2dzZ0JVSFRwZ1lRRWhvZ0RBUkFJQUJCNUFCcVFhQ25CaEFTR2dzZ0IwRUJjd0ovSUFNb0FnQWlCQ0FDUVFoR0lBRkI1QUJIY1hKRkJFQWdBRUhVQUdwQmdlRUdFQklhSUFNb0FnQWhCQXNnQkNBQ1FRaEdJQUZCNVFCSWNuSkZDd1IvSUFCQjFBQnFRZjNpQmhBU0dpQURLQUlBQlNBRUMwRUFSM0pGQkVBZ0FFSFVBR3BCdGVVR0VCSWFDd0pBQWtBZ0N3UkFJQUJCMUFCcUlnUWdFeENKQVJvZ0JFSDM1Z1lRRWhvTUFRc2dFVVVOQVFzZ0FFSFVBR3BCK2VZR0VCSWFDeUFBUWRRQWFpSUVRYmpxQmhBU0dpQUVRWVhyQmhBU0dnSkFJQXhGRFFBZ0JFR2k2d1lRRWhvZ0JDQVVFSWtCR2lBRVFmZm1CaEFTR2lBRVFlVHdCaEFTR2lBRlFZejFCaEFTR2lBREtBSUlRUUZJRFFBZ0JFSHc5UVlRRWhvTElBOEVRQ0FBUWZRQWFrSDg5d1lRRWhvZ0FFR0VBV3BCK2ZnR0VCSWFJQUJCbEFGcVFhTDVCaEFTR2lBQVFhUUJha0g4OXdZUUVob2dBRUcwQVdwQi9QY0dFQklhSUFCQnhBRnFRZGI1QmhBU0dnc2dCZ1JBSUFCQjVBQnFJZ3NnRXhDSkFSb2dDMEgzNWdZUUVob0xBa0FDUUNBTUJFQWdBRUhrQUdvaUN5QVVFSWtCR2lBTElCVVFpUUVhSUF0QjkrWUdFQklhREFFTElBMUZEUUVMSUFCQjVBRnFRZnI1QmhBU0dnc0NRQ0FES0FJQURRQWdCVUd1K2dZUUVob2dCVUhQK2daQmd2c0dJQWNiRUJJYUlBVkJvL3NHRUJJYUlBTW9BZ0FOQUNBQklBSWdBeERsQWtVTkFDQUZRZFg3QmhBU0dnc2dDZ1JBSUFCQjVBQnFRWnVKQnhBU0dnc2dEZ1JBSUFCQjVBQnFRZitLQnhBU0dnc2dCZ1JBSUFCQjVBRnFJZ2RCbllzSEVCSWFJQWRCb0kwSEVCSWFJQWRCKzQ0SEVCSWFJQUJCMUFGcVFiV1JCeEFTR2dzQ1FDQU1SUTBBSUFCQjVBRnFJZ2RCeVpNSEVCSWFJQUJCMUFGcUlnWkJ5Wk1IRUJJYUlBRkJ6QU5JRFFBZ0IwSDdrd2NRRWhvZ0JrSDdrd2NRRWhvTElBQkJGR29oQndKQUFrQUNRQUpBSUFKQkNFY0VRQ0FCUVlJQlNBMEJJQUVnQWlBREVPVUNCRUFnQjBHcmx3Y1FFaG9MSUFGQmxnRklCRUFnQVNBQ0lBTVE1UUpGRFFNZ0IwSEZtd2NRRWhvTUF3c2dCMEhEblFjUUVob2dBU0FDSUFNUTVRSUVRQ0FIUVpLZUJ4QVNHZ3NnQVVIQ0EwNEVRQ0FIUWF1ZkJ4QVNHZ3NnQjBIRW53Y1FFaG9NQXdzZ0FVSGtBRVlFUUNBSFFlK2lCeEFTR2d3RUN5QURLQUlJSWdZRWZ5QUdCU0FIUWFXakJ4QVNHaUFES0FJSUMwRUJUZ1JBSUFkQjJxTUhFQklhQ3lBQlFiVUNUQVJBSUFkQmxhUUhFQklhREFRTElBZEJ4NlFIRUJJYURBTUxJQWRCanBRSEVCSWFJQWRCN1prSEVCSWFDeUFIUVlHZEJ4QVNHaUFCUVl3QlIwRUFJQUZCZ2dGSEd3MEFJQWRCcHAwSEVCSWFDd0ovSUFNb0FnZ2lCaUFCUVlJQlNISkZCRUFnQjBISW53Y1FFaG9nQXlnQ0NDRUdDeUFCUVl3QlNDSUxJQVp5UlFzRWZ5QUhRZG1mQnhBU0dpQURLQUlJQlNBR0MwRUJTQ0FMY2tVRVFDQUhRZXlmQnhBU0dnc0NRQUpBSUFGQnVBTk9CRUFnQjBHYm9BY1FFaG9NQVFzZ0FVR2FBMGdOQVFzZ0IwSGlvQWNRRWhvTElBRkJ6QU5PQkVBZ0IwR05vUWNRRWhvTElBRkJ3Z05JRFFBZ0IwSExvUWNRRWhvTElBNEVRQ0FIUVkybEJ4QVNHZ3NnQVVHc0FrNEVRQ0FIUWNXbEJ4QVNHZ3NDUUFKQUFrQWdBa0YrYWlJR1FRSkxJQVpCQVd0RmNrVUVRQ0FBUWNRQWFpSUdRZU9sQnhBU0dpQUNRUVJHQkVBZ0JrR1NuZ2NRRWhvTElBRkJ3Z05PQkVBZ0JrR3hwZ2NRRWhvTElBWkJncWNIRUJJYUlBSkJCRWNnQVVHUUEwaHlSUVJBSUFaQmtwNEhFQklhQ3lBQlFjSURUZ1JBSUFaQnE1OEhFQklhQ3lBR1FmU25CeEFTR2lBQlFaWUJUZ1JBSUFaQm42Z0hFQklhQ3lBQ1FRUkhJQUZCandOS2NrVUVRQ0FHUWJtb0J4QVNHZ3NnQVVHUUEwNEVRQ0FHUWRHb0J4QVNHZ3NnQVVIQ0EwNEVRQ0FHUWN1aEJ4QVNHZ3NnQmtIMzVnWVFFaG9NQVFzZ0NVVU5BQ0FBUWNRQWFrSHBxQWNRRWhvTUFRc2dEa1VOQVFzZ0FFSEVBR3BCamFVSEVCSWFDeUFBUVNScUlRWUNRQ0FRQkVBZ0JrSHNxZ2NRRWhvZ0FrRUVSZ1JBSUFaQmtwNEhFQklhQ3dKQUlBRkJ3Z05PQkVBZ0JrR0NyQWNRRWhvZ0JrR3NyUWNRRWhvTUFRc2dCa0dzclFjUUVob2dBVUdhQTBnTkFnc2dCa0dEcmdjUUVob01BUXNnQmtHdnJnY1FFaG9nQmtITHJ3Y1FFaG9nRFVVTkFDQUdRWUt4QnhBU0dnc2dEZ1JBSUFaQmphVUhFQklhQ3dKQUFrQUNRQUpBSUJBRVFDQUFRVFJxSWdsQnE3RUhFQklhSUFKQkJFY2dBVUdRQTBoeVJRUkFJQWxCa3A0SEVCSWFDeUFCUWNFRFNnMEJJQWxCeEo4SEVCSWFJQUZCbWdOSURRSWdDVUdEcmdjUUVob01BZ3NnQ1VVTkFTQUFRVFJxSWdsQnJiUUhFQklhSUFsQnhKOEhFQklhREFJTElBbEJxNThIRUJJYUlBbEJ4SjhIRUJJYUlBbEJnNjRIRUJJYUlBbEJoN01IRUJJYUN5QU9SUTBCQ3lBQVFUUnFRWTJsQnhBU0dnc0NRQ0FDUVFoSEJFQWdCRUdidGdjUUVob2dGd1JBSUFSQjE3WUhFQklhQ3dKQUlBUUNmd0pBSUFGQmpBRk9CRUFnQkVIcnRnY1FFaHBCQUNBQlFhUURUaUFCSUFJZ0F4RGxBaHNOQVNBRVFZbTNCeEFTR2d3QkN5QUJJQUlnQXhEbEFob2dCRUdKdHdjUUVocEJuTGNISUFGQmdnRklEUUVhQ3lBRVFZNjRCeEFTR2lBQklBSWdBeERsQWtVTkFVR3F1QWRCaUxrSElBRkJsZ0ZJR3dzUUVob0xJQUZCbGdGT0JFQWdCRUg3dVFjUUVob0xBa0FnQVVHQ0FVZ05BQ0FFUVplNkJ4QVNHaUFES0FJQURRQWdCRUh3dWdjUUVob0xJQUZCa0FOT0JFQWdCRUdMdXdjUUVob0xJQUZCcmdOT0JFQWdCRUdzdXdjUUVob0xJQUZCd2dOT0JFQWdCRUhmdXdjUUVob2dCRUdVdkFjUUVob2dCRUhhdkFjUUVob0xJQUZCcmdOT0JFQWdCRUhQdmdjUUVob0xJQUZCd2dOSURRRWdCRUh1dmdjUUVob01BUXNnQVVIa0FFWUVRQ0FFUWV1L0J4QVNHZ3NnQVVHc0FrNEVRQ0FFUWRmQUJ4QVNHZ3RCMXNNSElRa2dCQ0FXQkg4Z0JFSEh3UWNRRWhvZ0JFR2R3Z2NRRWhvZ0F5Z0NBRVVFUUNBRVFiYkRCeEFTR2dzZ0JFSFd3d2NRRWhwQmxMd0hCU0FKQ3hBU0dpQUJRY0FDU0EwQUlBUkI4OE1IRUJJYUlBUkJ1OFFIRUJJYUN5QUVRZmZtQmhBU0dpQUJRWUlCVGdSQUlBQWdBU0FDSUFNUXpCa0xJQXdFUUNBSFFmSEVCeEFTR2lBR1FmSEVCeEFTR2lBQVFUUnFRZkhFQnhBU0dpQUFRY1FBYWtIeHhBY1FFaG9nQUVIa0FHcEI4Y1FIRUJJYUlBUkIzY1lIRUJJYUlBQkI1QUZxUWZIRUJ4QVNHaUFBUWRRQmFrSHh4QWNRRWhvTElBNEVRQ0FFUWVmSUJ4QVNHaUFIUWFuSkJ4QVNHaUFHUWFuSkJ4QVNHaUFBUVRScVFhbkpCeEFTR2lBQVFjUUFha0dweVFjUUVob2dBRUhrQUdvaUFrR3B5UWNRRWhvZ0FrSEV6d2NRRWhvZ0JFR2J6QWNRRWhvZ0FFSGtBV29pQWtHcHlRY1FFaG9nQWtIRXp3Y1FFaG9nQUVIVUFXb2lBa0dweVFjUUVob2dBa0hFendjUUVob2dBRUgwQUdwQnFja0hFQklhSUFCQmhBRnFRYW5KQnhBU0dpQUFRWlFCYWtHcHlRY1FFaG9nQUVHa0FXcEJxY2tIRUJJYUlBQkJ0QUZxUWFuSkJ4QVNHaUFBUWNRQmFrR3B5UWNRRWhvTElBOEVRQ0FBUWZRQWFpSUNRWm5UQnhBU0dpQUNRWWJRQnhBU0dpQUFRWVFCYWlJQ1FkUFRCeEFTR2lBQ1FZYlFCeEFTR2lBQVFaUUJhaUlDUVkzWEJ4QVNHaUFDUVliUUJ4QVNHaUFBUWFRQmFpSUNRWTNYQnhBU0dpQUNRWWJRQnhBU0dpQUFRYlFCYWlJQ1FmamFCeEFTR2lBQ1FZYlFCeEFTR2lBQVFjUUJhaUlDUVpuVEJ4QVNHaUFDUVliUUJ4QVNHZ3NnSEFSQUlBQkI5QUJxUWYrS0J4QVNHaUFBUVlRQmFrSC9pZ2NRRWhvZ0FFR1VBV3BCLzRvSEVCSWFJQUJCcEFGcVFmK0tCeEFTR2lBQVFiUUJha0gvaWdjUUVob0xJQUZCckFKT0JFQWdCRUdWM1FjUUVob0xJQW9FUUNBRlFiamRCeEFTR2lBRlFkemRCeEFTR2lBRlFZRGVCeEFTR2lBRlFhVGVCeEFTR2lBRlFjamVCeEFTR2lBRlFlemVCeEFTR2lBRlFacmZCeEFTR2lBRlFjamZCeEFTR2lBRlFmYmZCeEFTR2lBRlFhVGdCeEFTR2lBRlFkWGdCeEFTR2lBRlFZYmhCeEFTR2lBRlFiZmhCeEFTR2lBRlFlWGhCeEFTR2lBRlFaVGlCeEFTR2lBRlFjVGlCeEFTR2lBRlFmVGlCeEFTR2dzZ0ZSQVpHaUFVRUJrYUlCTVFHUm9nQ0VId0Ftb2tBQXVQQVFFQ2Z5TUFRUkJySWdNa0FDQUJRUUZ4QkVBZ0FDQURRZUxIRHhCcElnUVFrZ2NnQkJBZ0dnc2dBVUVDY1FSQUlBQWdBMEh4eHc4UWFTSUVFSklISUFRUUlCb0xJQUZCZ0FKeEJFQWdBQ0FEUVlQSUR4QnBJZ0VRa2djZ0FSQWdHZ3NnQWhBZkJFQWdBQ0FEUVpISUR4QnBJZ0VRa2djZ0FSQWdHaUFBUVlBSGFpQUNFSmNPQ3lBRFFSQnFKQUFMaEFrQkJIOGdBeWdDQUNJSFJRUkFJQU5CNUFBMkFnQkI1QUFoQnd0QkFTRUlBa0FDUUFKQUFrQUNRQ0FFS0FJQUlnWkJBVVlFUUVFSUlRWWdCMEhVZldvaUNVRVVTMEVCSUFsMFFZR0l3QUJ4UlhJTkF5QUFRUUpCdnI0UEVMc0JEQUVMSUFkQmxRRk1CRUFnQUVFQ1FZZS9EeEM3QVVFSVFRRWdBeWdDQUVIa0FFWWJJUVlNQVFzZ0IwSFVmV29pQjBFVVMwRUJJQWQwUVlHSXdBQnhSWEpGQkVBZ0JrRUlSZzBDSUFCQkFrSEN2dzhRdXdGQkFDRUlEQUlMSUFaQkNFY05CQ0FBUVFKQmc4QVBFTHNCUVFKQkFTQURLQUlBUVpVQlNoc2hCZ3RCQUNFSURBSUxRUWdoQmd3QkN5QUhRZVFBUmcwQVFRSkJBU0FIUVpVQlNoc2hCZ3NnQkNBR05nSUFDd0pBQWtBQ1FDQURLQUlBSWdkQnF3Sk1CRUFnQjBHY2Yyb2lDVUVlUzBFQklBbDBRWUdJd0lBRWNVVnlEUUVNQXdzZ0IwSFVmV29pQ1VFZVRVRUFRUUVnQ1hSQmdZakFnQVJ4R3cwQ0lBZEI4SHhxSWdsQkhrMUJBRUVCSUFsMFFZR0l3SUFFY1JzTkFpQUhRY2g4YWlJSFFSUkxEUUZCQVNBSGRFR0JpTUFBY1EwQ0RBRUxJQWRCakFGR0lBZEJsZ0ZHY2cwQkN5QUFRUUpCdzhBUEVMc0JRUWdoQmlBRUtBSUFRUWhHQkVBZ0EwRzJBallDQUVFQUlRZ01BUXNnQTBIQ0F6WUNBQ0FFUVFJMkFnQkJBQ0VJUVFJaEJnc0NRQUpBQWtBZ0FVRi9haUlCUVF4TERRQUNRQUpBQWtBQ1FBSkFBa0FnQVVFQ2F3NExBQVlDQXdNREF3TURCQVFCQ3lBR1FRaEdRUUFnQXlnQ0FDSUJRYllDU0J0RlFRQWdCa0VJUmlBQlFaVUJTbkliRFFVZ0FFRUNRZG5BRHhDN0FTQURRYllDUVpZQklBUW9BZ0FpQmtFSVJpSUJHellDQUNBQlJRUkFRUUFoQ0NBR1FRRkhEUVlMSUFSQkFqWUNBQXdHQ3lBR1FRaEdRUUFnQXlnQ0FDSUJRYllDU0J0RlFRQWdCa0VJUmlBQlFaVUJTbkliRFFRZ0FFRUNRY1RCRHhDN0FTQURRYllDUVpBRElBUW9BZ0FpQmtFSVJpSUJHellDQUNBQlJRUkFRUUFoQ0NBR1FRRkhEUVVMSUFSQkFqWUNBQXdGQ3lBR1FRaEdRUUFnQXlnQ0FDSUJRYllDU0J0RlFRQWdCa0VJUmlBQlFhTURTbkliRFFNZ0FFRUNRYlBDRHhDN0FTQURRYllDUWFRRElBUW9BZ0FpQmtFSVJoczJBZ0FNQWdzZ0JrRUlSd1JBSUFNb0FnQkJ5d05LRFFVTElBQkJBa0dud3c4UXV3RWdBMEhNQXpZQ0FDQUVLQUlBSVFZTUFRc2dCa0VJUmtFQUlBTW9BZ0FpQVVIQUFrZ2JSVUVBSUFaQkNFWWdBVUhCQTBweUd3MEJJQUJCQWtIMnd3OFF1d0VnQTBIQUFrSENBeUFFS0FJQUlnWkJDRVliTmdJQUMwRUFJUWdMSUFaQkNFY05BU0FDUlNBREtBSUFRYXdDU0hJTkFTQUFRUUpCN01RUEVMc0JDMEVBSVFnTEFrQWdCU2dDQUVVTkFBSkFBa0FnQkNnQ0FFRjhhaUlCUVFSTERRQUNRQUpBSUFGQkFXc09CQUlDQWdBQkN5QURLQUlBUWJVQ1NnMERJQUJCQWtIRXhROFF1d0VnQTBHMkFqWUNBQXdDQ3lBQVFRSkJnc1lQRUxzQklBZ1BDeUFGS0FJSVFRRklJQU1vQWdBaUJrR0xBVXB5UlFSQUlBQkJBa0hPeGc4UXV3RWdBMEdNQVRZQ0FFRUFJUWhCakFFaEJnc2dCU2dDREVIa0FFZ2dCa0hKQWtweURRRWdBRUVDUVpqSER4QzdBU0FEUWNvQ05nSUFDMEVBSVFnTElBZ0wvZ0VCQW44Z0FTZ0NBQ0lGUVFoeEJFQWdCRUdBZ0FRMkFnQUxBa0FDZnlBRlFSQnhCRUFnQkVHQWdJQUNOZ0lJSUFSQkJHb01BUXNnQkNnQ0FFVU5BU0FFUVF4cUMwSGtBRFlDQUFzQ1FDQUFSUTBBQWtBZ0FDZ0NBQ0lHUlEwQUlBTWdBQ2dDQkRZQ0FBSkFJQUFvQWdoQmYyb2lBMEVCU3cwQUlBTkJBV3NFUUNBRUlBQW9BZ3cyQWdRTUFRc2dCQ0FBS0FJTU5nSU1DeUFHUVg5cUlnTkJBVXNOQUNBRFFRRnJCRUFnQWtFQk5nSUFJQUVnQlVHL2YzRTJBZ0FNQVFzZ0FrRUNOZ0lBSUFFZ0JVSEFBSEkyQWdBTElBQW9BaEJCQVVZRVFDQUVJQUFvQWhRMkFnZ0xJQUFvQWhoQkFVY05BQ0FFSUFBb0FodzJBZ0FMQ3lRQUlBRUVRQU5BSUFBZ0FpZ0NBRFlDQUNBQVFRUnFJUUFnQVVGL2FpSUJEUUFMQ3dzMkFRRi9JQUVnQUNnQ0NFY0VRQU5BSUFBb0FoQWFJQUFnQUNnQ0NFRm9haUlDTmdJSUlBSVFyZ01nQUNnQ0NDQUJSdzBBQ3dzTENBQWdBQkNVRGhvTFV3RUJmeUFCSUFKSEJFQWdBeWdDQUNFQUEwQWdBRUZvYWlJQUlBSkJhR29pQWlJRUVKUUhJQUFnQkNnQUV6WUFFeUFBSUFRcEFndzNBZ3dnQXlBREtBSUFRV2hxSWdBMkFnQWdBU0FDUncwQUN3c0xRd0VCZnlNQVFSQnJJZ0VrQUNBQUVCc2FJQUZCcXRXcTFRQTJBZ3dnQVVILy8vLy9CellDQ0NBQlFReHFJQUZCQ0dvUXBBRW9BZ0FoQUNBQlFSQnFKQUFnQUFzc0FDQUFLQUlBR2lBQUtBSUFJQUFRalFSQkdHeHFHaUFBS0FJQUdpQUFLQUlBSUFBUWtnSkJHR3hxR2d1ZUFRQWdBQkRtR1NBQVFZY2lOZ0tzQWlBQVFZVWlOZ0tvQWlBQVFZUWlOZ0tNQWlBQVFlUWhOZ0lBSUFCQmx5STJBcVFDSUFCQmt5STJBcUFDSUFCQmtDSTJBcHdDSUFCQmpTSTJBcGdDSUFCQmlTSTJBcFFDSUFCQ2c0Q0FnREEzQXVRQ0lBQkJueUkyQW9RQ0lBQkJuU0kyQW9BQ0lBQkJteUkyQXZ3QklBQkJBallDOUFJZ0FFS0NnSUNBRURjQzdBSWdBRUtCZ0lDQUlEY0MzQUlMVVFFQmZ5QUFFSlVISUFBUUd5QUFLQUlBSUFBb0FnUWdBVUVFYWlJQ0VOZ1pJQUFnQWhBdUlBQkJCR29nQVVFSWFoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVKSUNFSkVPQ3pFQkFYOGdBQ2dDRUJvZ0FDZ0NDQ0VDQTBBZ0FoQ1BEaUFBSUFBb0FnaEJHR29pQWpZQ0NDQUJRWDlxSWdFTkFBc0xhZ0VDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWFJQUVRamc0aEJRc2dBQ0FGTmdJQUlBQWdCU0FDUVJoc2FpSUNOZ0lJSUFBZ0FqWUNCQ0FBRUNNZ0JTQUJRUmhzYWpZQ0FDQUVRUkJxSkFBZ0FBczZBUUYvSXdCQkVHc2lBaVFBSUFBUUd4b0RRQ0FBS0FJRUVJOE9JQUFnQUNnQ0JFRVlhallDQkNBQlFYOXFJZ0VOQUFzZ0FrRVFhaVFBQzQ4QkFRSi9Jd0JCSUdzaUF5UUFBa0FnQUJBYktBSUFJQUFvQWdSclFSaHRJQUZQQkVBZ0FDQUJFTjhaREFFTElBQVFHeUVDSUFOQkNHb2dBQ0FBRUpJQ0lBRnFFSk1PSUFBUWtnSWdBaERlR1NJQ0lBRVEzUmtnQUNBQ0VOd1pJQUlnQWlnQ0JCRFdHU0FDS0FJQUJFQWdBaWdDRUJvZ0FpZ0NBQ0VBSUFJUWtBNGFJQUFRS2dzTElBTkJJR29rQUFzK0FRSi9Ba0FnQVVVTkFDQUFLQUlRSWdKRkRRQkJBQ0VBQTBBZ0FTQUFRUUowSWdOcUlBSWdBMm9vQWdBMkFnQWdBRUVCYWlJQVFSUkhEUUFMQ3dzcEFRSi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FTQUFFS0FFSVFNZ0FrRVFhaVFBSUFFZ0FDQURHd3VqQkFFSWZ5TUFRU0JySWdJa0FBSi9RUUVnQUNBQlFReHNha0VJYWlJRUVORUVSUTBBR2lBQ0lBUVFqQUkyQWhnZ0FpQUVFR0UyQWhBQ1FDQUNRUmhxSUFKQkVHb1FIa1VOQUFOQUlBSkJHR29RUkNnQ0FDZ0NFQ2dDS0NFRklBSkJHR29ROFFFZ0FpQUVFR0UyQWhBZ0JpQUZRUWhIYWlFR0lBTWdCVUVJUm1vaEF5QUNRUmhxSUFKQkVHb1FIZzBBQ3lBRFJTQUdSWEpGQkVBZ0FDZ0MrQUZCQWtIOHVnOFF1d0ZCQUF3Q0N5QURRUUpKRFFBZ0FDZ0MrQUZCQWtHdXV3OFF1d0ZCQUF3QkN5QUVLQUlFS0FJSUtBSVFJUU1DUUNBRUVORUVRUUZHQkVBZ0FDQUJRUUowYWlBRE5nS3dBUXdCQzBHTUJ4QW1JZ1lnQVNBREtBSXNJQU1vQWlnUW13a2FJQUFnQVVFQ2RHb2lCU0FHTmdLd0FTQURMUUNkQkFSQUlBVW9BckFCRUpJSkN5QUZLQUt3QVNBREVLd0RFSlVPSUFBZ0FXcEJBVG9BNkFFTEFrQWdCQkRSQkVFQ1NRMEFJQUpCR0dvUXNnVWhBeUFDSUFRUWpBSTJBZ2dnQXlBQ1FSQnFJQUpCQ0dvUVp5Z0NBRFlDQUNBQ0lBUVFZVFlDQ0NBRElBSkJFR29nQWtFSWFoQm5JZ2dRSGtVTkFDQUFJQUZCQW5ScUlRa0RRQ0FKS0FLd0FTSUZJQUFvQXZnQklnWWdBeEJFS0FJQUtBSVFJZ2NRbXhnZ0JTQUdJQWNRbWhnZ0JTQUdJQWNRbVJnZ0F4RHhBU0FDSUFRUVlUWUNDQ0FESUFnZ0FrRUlhaEJuRUI0TkFBc0xJQUFnQVVFQ2RHb2lBU2dDc0FFZ0FDZ0MrQUVRaFJnZ0FTZ0NzQUVvQXRBRFJRc2hBQ0FDUVNCcUpBQWdBQXRHQVFKL0lBQXRBSUFDQkg5QkFBVWdBRUVCT2dDQUFpQUFLQUlFRUtZRkEwQWdBaUFBSUFFUTR4bEJBWE55SVFJZ0FVRUJhaUlCUVE1SERRQUxJQUpCQVhNTFFRRnhDd2tBSUFBUWt3a1FLZ3MyQVFGL0lBQkJ2Q0UyQWdBZ0FFRUVhaERWQVJvZ0FFSDBBV29oQVNBQVFSUnFJUUFEUUNBQUVOVUJRUkJxSWdBZ0FVY05BQXNMTFFFQmZ5TUFRUkJySWdFa0FDQUFFTVFLSUFGQkFEWUNEQ0FBUVFocUlBRkJER29RclFJZ0FVRVFhaVFBQzNJQkFuOGdBRUgwdWc4MkFnQWdBRUd3QVdvaEFpQUFRUWhxSVFFRFFDQUJFSmtKUVF4cUlnRWdBa2NOQUFzZ0FFRUFPZ0NBQWlBQVFRQTJBdndCUVRBUUppSUJFUHdGR2lBQUlBRTJBZ1JCSUJBbUlnRVFtQWthSUFBZ0FUWUMrQUVnQUVHd0FXcEJBRUhHQUJEZEFSb2dBQXQ3QVFKL0l3QkJFR3NpQXlRQUVPNExCRUFnQUNnQ0JCQ21CU0FBS0FJa0lnSkZCRUFnQUVIWXVnODJBaVJCMkxvUElRSUxJQUFvQWd3Z0FDZ0NHQ0FBS0FJb0lBQW9BaHdnQUNnQ0lDQUNJQUFvQWhBZ0FTQURJQUJCTEdvUTdRRWlBU0FBUVRocUVQUVpJUUlnQVJBZ0dnc2dBMEVRYWlRQUlBSUxSUUVCZnlNQVFTQnJJZ0lrQUNBQ0lBRVF6QUUyQWhBUTV3RWdBa0VZYWlBQUlBRWdBa0VRYWlBQ1FRaHFFTFlaSUFKQkdHb1FWeUVBSUFKQklHb2tBQ0FBUVFScUMyUUJBbjhqQUVFUWF5SUVKQUFDUUNBQ1JRMEFJQUJCK0FScUlBRVFsd2NoQlNBRUlBTTJBZ3dnQlNBRVFReHFFT29aSUFJMkFnQWdBUkRZQ3lJQlJRMEFJQUJCZ0FkcUlnQWdBUkNUQWlBQUlBSVFsQWtnQUNBREVKUUpDeUFFUVJCcUpBQUxOd0FnQUVIZ0JHb2dBUkNWQ1NBQ05nSUFJQUVRMkFzaUFRUkFJQUJCZ0FkcUlRQWdBZ1JBSUFBZ0FSQ1RBaUFBSUFJUWxBa0xDd3NuQVFGL0lBQkJCR29pQVVIMnlBOFFhQ0FBUVlBSGFpSUFRYlRMRHhDVEFpQUFJQUVRbHc0TENRQWdBQkNYQ1JBcUN5NEJBbjlCNEIwaEFVR3ZBaUVDQTBBZ0FDQUJLQUlFSUFJUUZTQUJLQUlNSVFJZ0FVRU1haUVCSUFJTkFBc0xQQUVCZnlBQVFaekxEellDQUVFd0VDWWlBeEQ4QlJvZ0FDQUROZ0lFSUFCQkFEb0FFQ0FBSUFFMkFnd2dBQ0FDTmdJSUlBQkI4TW9QTmdJQUM3RUJBUU4vSUFCQjJMb1BOZ0lrSUFCQ0FEY0NIQ0FBSUFFMkFnZ2dBRUhrdWc4MkFnQWdBRUVzYWhCT0drRXdFQ1lpQWhEOEJSb2dBQ0FDTmdJRVFTQVFKaUlDRUpnSklRTWdBQ0FDTmdJVVFSUVFKaUlDSWdRZ0FDZ0NDQ0FERVBBWklBUkJ4TW9QTmdJQUlBQWdBallDREVHTUJ4QW1JZ0lnQVVFQVFRRVFtd2thSUFCQkFEb0FXQ0FBUVFBMkFsQWdBRUVBTmdKSUlBQkJRR3RCQURZQ0FDQUFRUUEyQWpnZ0FDQUNOZ0lRSUFBTHFBd0JESDhqQUVIUUJXc2lDaVFBSUFwQkFEWUN6QVVRMVFNUW5Ra0NRQ0FDUlFSQVFRRWhBd3dCQ3lBS1FjZ0Zha0YvSUFKQkEyb2lFMEVDZENBVFFmLy8vLzhEY1NBVFJ4c2lDeEFtRURvaER5QUtRY0FGYWlBTEVDWVFPaUVOSUFwQnVBVnFJQXNRSmhBNklRNGdBa0VCVGdSQVFRQWhDd05BSUFFZ0MwRUNkQ0lNYWlJUUtBSUFJUkVnRFNBTFFRSnFJaElRRVNBUk5nSUFBa0FnQXdSQUlBTWdER29vQWdBaURFRi9TZzBCQ3lBUUtBSUFFS0FCSVF3TElBOGdFaEFSSUF3MkFnQWdDMEVCYWlJTElBSkhEUUFMQ3dKQUlBUUVRRUVBSVFzZ0FrRUFUQTBCQTBBZ0JDQUxRUUowYWlnQ0FDRUJJQTRnQzBFQ2FoQVJJQUUyQWdBZ0MwRUJhaUlMSUFKSERRQUxEQUVMUVFBaEN5QUNRUUJNRFFBRFFDQU9JQXRCQW1vUUVVRUFOZ0lBSUF0QkFXb2lDeUFDUncwQUN3dEJBU0VFSUFwQkFUWUN0QVVnQ2tHZ0JXb1FuQTRoRENBS0lBQW9BZ3cyQXB3RklBa2dDa0hNQldvZ0NrRzBCV29nQ2tHY0JXb2dEQkRVR1VFQUlSRWdDa0hnQkdvZ0FpQU5RUUlRRVNBUFFRSVFFVUVBUVFCQkFFRUFFSk1ISVJJZ0NrRUFOZ0xjQkNBS1FRRTJBdGdFSUFwQkFEb0Exd1FnRWlBS1Fkd0VhaUFLUWRnRWFpQUtRZGNFYWhDakVDRUJJQW9vQXR3RVJTRURJQUFvQWdnZ0NpZ0NuQVVpRUNBQklBcEIzQVJxSUFwQjJBUnFJQXdRMHhraEZBSkFJQU1OQUNBQklBb29BdGdFUVFoR0lBb29BdHdFUWFzQ1NuRnhJZ1FnQ2kwQTF3UkZjZzBBSUFvb0Fzd0ZRUUZ4SWhGRklRUUxJQVlnQ2lnQzNBUVF4UW9nQmlBS0tBTFlCQkNzQmlBR0lBd1FsUTRnQmlBS0tBTE1CU0lKSUFnUTBoa2dEQ2dDQ0VFQlRnUkFJQVlRa2drTEFrQWdDVUdBQ0hGRkRRQWdCaUVCSUE1QkFoQVJLQUlBSWdNRVFDQUJRZHdHYWlBREVHZ0xJQUpCQVVnTkFFRUFJUXNEUUNBR1FlZ0dhaUFOSUF0QkFtb2lBUkFSS0FJQUlBOGdBUkFSS0FJQUVNb0ZHaUFMUVFGcUlnc2dBa2NOQUFzTElBb29BdHdFSUFvb0F0Z0VJQXdRMEJrZ0NpZ0MzQVFRaXc1QndBcHNJQXdRaWc1QndBTnNhaUFLS0FMWUJCQ0pEa0h3QUd4cUlCQkJBblJxUWFEMEVtb29BZ0FoQXlBS1FkQUVha0VZRUNZUSt3VVFPaUVCSUFNRVFDQUJLQUlBSUFNUWtBa0xRUUFoQXlBQUtBSUlJQUVvQWdBZ0NpZ0MzQVFnQ2lnQzJBUWdEQ0FRRU04WkJFQWdDVUdBZ0FGeEJFQWdBU2dDQUNFRElBQW9BZ2dpQzBFUWFpSU1RZDNJRHhBUUdpQURJQXNRcWhrZ0RFSHp5QThRRUJvTElBRW9BZ0FoQ3lBQUtBSUlJUUFnQ2lBS0tRT29CVGNEd0FRZ0NpQUtLUU9nQlRjRHVBUWdDaWdDMkFRaERDQUtLQUxjQkNFVklBcEJxQVJxSUFnUTdRRWhBeUFLSUFvcEE4QUVOd01RSUFvZ0Npa0R1QVEzQXdnZ0NrSElCR29nQ3lBR0lCVWdEQ0FRSUFBZ0NrRUlhaUFKUVFBZ0F4Q0lEaEE2SVFBZ0F4QWdHaUFLUVpBQmFpQUFLQUlBSUFwQkdHb0NmMEhZdWc4Z0RrRUNFQkVvQWdCRkRRQWFJQTVCQWhBUktBSUFDeEJwSWdNZ0J4Q1hEU0VISUFNUUlCb2dDa0hnQUdvZ0FDZ0NBQkNIRGlFRElBQW9BZ0FnQXhDR0RpQUFLQUlBSUFjUWhRNGdBQ2dDQUNJRFFlQUlJQU1vQWdBb0FyQUJFUUVBSUJSRkJFQWdBQ2dDQUNJRElBTW9Ba0JCQVdvMkFrQUxJQkVFUUNBS1FSaHFFS1FGSUFBb0FnQWlBeUFLUVJocVFhcTlEMEh0dlE5QjJMb1BRUUFnQXlnQ0FDZ0NwQUVSQWdBTElBQW9BZ0FpQXlBREtBSUFLQUlJRVFVQUlBcEIwQUJxRUU0aENDQUFLQUlBSUFnUTRCZ2dDQkFUSVFNZ0RVRUFFQkVnQXpZQ0FDQU5RUUFRRVNnQ0FCQ2dBU0VESUE5QkFCQVJJQU0yQWdBZ0RrRUFFQkZCQURZQ0FDQU5RUUVRRVNBRk5nSUFJQTFCQVJBUktBSUFFS0FCSVFNZ0QwRUJFQkVnQXpZQ0FDQU9RUUVRRVVFQU5nSUFJQTBnQWtFQ2FpSUNFQkZCOXIwUE5nSUFJQTBnQWhBUktBSUFFS0FCSVFNZ0R5QUNFQkVnQXpZQ0FDQU9JQUlRRVVFQU5nSUFJQXBCR0dvZ0V5QU5LQUlBSUE4b0FnQWdEaWdDQUVFQ1FRRkJBQkNUQnlFQ0lBRW9BZ0FRakFRZ0FTZ0NBQm9nQUNnQ0FDQUhJQUlnQkNBR0lBa1F6aGtoQXlBQ0VLTUZHaUFJRUNBYUlBY1ErZ1lhSUFBUVBnc2dBU2dDQUNFQUlBRkJBRFlDQUNBQUJFQWdBQVJBSUFBUW5Ba1FLZ3NMSUJJUW93VWFJQTRRamdrZ0RSQ09DU0FQRUk0SkN5QUtRZEFGYWlRQUlBTUxSQUVDZnlBQUVKSUNJZ0ZCRDBrRVFDQUFRUThnQVdzUTRCa1BDeUFCUVE5TEJFQWdBQ2dDQUVIb0Ftb2hBU0FBRUpJQ0lRSWdBQ0FCRUpJT0lBQWdBaERhR1FzTE93RUJmeU1BUVJCcklnb2tBQ0FBSUFFZ0FpQURJQVFnQlNBR0lBY2dDaUFJRU8wQklnQWdDUkR5R1NFQklBQVFJQm9nQ2tFUWFpUUFJQUVMZ1FVQkNYOGdBU2dDRUNFREEwQWdCa1ZCQUNBRFFRSnhHMFVFUUVFQUlRUURRQUpBSUFFb0Fnd2dCRUVDZG5aQkFYRkZEUUFnQVNnQ0VDSUNRWUFDY1FSQUlBUVExQTFGRFFFTElBUkJBM0VpQjBFQ1IwRUFJQUpCZ0lBQmNSc05BRUVBSUFaQkFVY2dCRUg4Ly8vL0IzRWlCU0FFUjNKRklBSkJBbkViRFFBZ0FrR0FFSEVFUUNBRUVOUU5EUUVMSUFBQ2Z5QUhRUUowUWVEbUNHb2dBa0hBQUhFTkFCb2dCVUVDZEVIZzVnaHFJQUpCZ0FoeERRQWFJQVJCQW5SQjRPWUlhZ3NvQWdBUUVob2dBRUdnNXdnUUVob2dBQ0FCS0FJRUVCSWFJQUJCeXV3SEVCSWFJQUVvQWdnaUFrRUJUZ1JBSUFSQkFuUkI0T1lJYWlFS0lBVkJBblJCNE9ZSWFpRUZJQWRCQW5SQjRPWUlhaUVIUVFBaEF3TkFBa0FnQXlBQ1FYOXFSdzBBSUFFdEFCQkJJSEZGRFFBZ0FFR2k1d2dRRWhvTEFrQWdBdzBBQW44Z0FTZ0NFQ0lDUVlBZ2NRUkFJQUJCcCtjSUVCSWFJQUVvQWhBaEFnc2dBa0dBQkhFTEJIOGdBRUc2NXdnUUVob2dBU2dDRUFVZ0FndEJnTUFBY1VVTkFDQUFRYUxuQ0JBU0dnc0NRQ0FCS0FJUUlnaEJnQUZ4QkVBZ0J5RUNJQU1nQVNnQ0NFRi9ha1lOQVFzQ1FDQUdSUTBBSUFFb0FnZ2hDU0FJUVFkeEJFQWdCU0VDSUFNZ0NVRi9ha1lOQWdzZ0NFRUVjUVJBSUFVaEFpQURJQWxCZm1wR0RRSUxJQU5GQkVBZ0JTRUNJQWhCR0hGRkRRRU1BZ3NnQTBFQlJ3MEFJQVVoQWlBSVFSQnhEUUVMSUFvaEFnc2dBQ0FDS0FJQUVCSWFJQU1nQVNnQ0NDSUNRWDlxU0FSQUlBQkJ3TzBIRUJJYUlBRW9BZ2doQWdzZ0EwRUJhaUlESUFKSURRQUxDeUFBUWJ6a0J4QVNHZ3NnQkVFQmFpSUVRUkJIRFFBTEN5QUdRUUZxSWdaQkFrRUJJQUVvQWhBaUEwRWZjUnRKRFFBTEN3Y0FJQUFvQWd3TFB3RUJmeERzRXhEdEV3UkFRWlQwRWtHVTlCSW9BZ0JCQVdvMkFnQkJtUFFTS0FJQVJRUkFRVEFRSmlJQUVQd0ZHa0dZOUJJZ0FEWUNBQXNRbnhBTEMwTUJBWDhqQUVFUWF5SUJKQUFnQUJBYkdpQUJRZi8vLy84Qk5nSU1JQUZCLy8vLy93YzJBZ2dnQVVFTWFpQUJRUWhxRUtRQktBSUFJUUFnQVVFUWFpUUFJQUFMVVFFQmZ5QUFFTjhESUFBUUd5QUFLQUlBSUFBb0FnUWdBVUVFYWlJQ0VJVUdJQUFnQWhBdUlBQkJCR29nQVVFSWFoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVKb0JFTmtFQzJrQkFuOGdBQ2dDRkNJQVJRUkFRUUVQQ3dKQUlBQW9BZ0FpQkFSQUEwQWdBQ0VEQWtBZ0FpQUVjVVVOQUVFQklRQWdBeWdDQ0NBQlRBMERJQU1vQWd4QkFVZ05BQ0FES0FJRUlBRk1EUU1MSUFOQkZHb2hBQ0FES0FJVUlnUU5BQXNMUVFBaEFBc2dBQXVpQVFFRWZ5QUFRUnhxSWdFUW1nRUVRQ0FCRUtFT0tBSUVJUVFnQUNBQkVLRU9LQUlBTmdJUUlBQW9BaGdpQWlBRVJ3UkFBMEFnQWlJREtBSUFJUUlDUUNBREtBSUVRUUpQQkVBZ0FDZ0NHQ0lEUlEwQklBTVFLZ3dCQ3lBQUtBSVlJZ01nQUNnQ0ZEWUNBQ0FBSUFNMkFoUUxJQUFnQWpZQ0dDQUNJQVJIRFFBTEN5QUJLQUlFUVhocUlRQWdBUkNhQVNFQ0lBRWdBQkNnRGlBQklBSVFwZ2tMQ3kwQUlBRWdBQ2dDQ0VjRVFBTkFJQUFvQWhBYUlBQWdBQ2dDQ0VGc2FqWUNDQ0FBS0FJSUlBRkhEUUFMQ3dzc0FDQUFLQUlBR2lBQUtBSUFJQUFReEFSQkZHeHFHaUFBS0FJQUlBQVF4QVJCRkd4cUdpQUFLQUlBR2dzOUFRRi9JQUVnQWtjRVFDQURLQUlBSVFRRFFDQUFJQVJCYkdvZ0FrRnNhaUlDRUxNSklBTWdBeWdDQUVGc2FpSUVOZ0lBSUFFZ0FrY05BQXNMQzBNQkFYOGpBRUVRYXlJQkpBQWdBQkE3R2lBQlFjeVpzK1lBTmdJTUlBRkIvLy8vL3djMkFnZ2dBVUVNYWlBQlFRaHFFS1FCS0FJQUlRQWdBVUVRYWlRQUlBQUxVQUVCZnlBQUVLUU9JQUFRT3lBQUtBSUFJQUFvQWdRZ0FVRUVhaUlDRVA0WklBQWdBaEF1SUFCQkJHb2dBVUVJYWhBdUlBQVFHeUFCRUNNUUxpQUJJQUVvQWdRMkFnQWdBQ0FBRURjUS9Sa0xtd0VCQVg4akFFRWdheUlFSkFBZ0JDQUNOZ0lZSUFRZ0FUWUNIQ0FFSUFNMkFoQWdCQ0FFUVJocU5nSU1JQVFnQkVFY2FqWUNDQ0FFUVFocUlBQkJCR3BCZ0E0UW5na2dCRUVJYWlBQVFkUUFha0dBSFJDZUNTQUVLQUlZSWdKQkNFWkJBQ0FFS0FJY0lnRkJ2d0pLRzBWQkFDQUNRUWhHSUFGQndnTkljaHRGQkVBZ0JFRUlhaUFBUWVRQWFrR0FIUkNlQ1FzZ0JFRWdhaVFBQzI4QkFuOGpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBQkJER29nQkVFTWFpQURFSUVDSUFFRVFDQUFLQUlRS0FJQUlBRkJGR3dRbEFJaEJRc2dBQ0FGTmdJQUlBQWdCU0FDUVJSc2FpSUNOZ0lJSUFBZ0FqWUNCQ0FBRUNNZ0JTQUJRUlJzYWpZQ0FDQUVRUkJxSkFBZ0FBdFpBUUovSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBRVA4WklnTWdBVThFUUNBQUVNUUVJZ0FnQTBFQmRra0VRQ0FDSUFCQkFYUTJBZ2dnQWtFSWFpQUNRUXhxRUZJb0FnQWhBd3NnQWtFUWFpUUFJQU1QQ3hCdUFBc3BBUUovQTBBZ0FDSUNJQUV0QUFBaUF6b0FBQ0FDUVFGcUlRQWdBVUVCYWlFQklBTU5BQXNnQWdzakFDQUFMUUFFQkVBZ0FDZ0NBQm9nQVVFUWFoQ3lBZ3NnQVFSQUlBQW9BZ0FhQ3d0U0FRRi9Jd0JCRUdzaUF5UUFJQUFnQVJEWEFpSUFFSjhKSUFOQkNHb2dBRUVBRU1NQkVKRUJJZ0FvQWdBaUFVRVFhaUFDRVA4QkdpQUJJQUlvQWhBMkFpQWdBQkFsUVFFNkFBUWdBMEVRYWlRQUMzd0JBbjhqQUVFZ2F5SUVKQUFnQVNBRVFSeHFJQUlRb1FraUJTZ0NBQ0VDSUFSQkFEb0FHeUFDUlFSQUlBUkJDR29nQVNBREVJWWFJQUVnQkNnQ0hDQUZJQVFvQWdnUXBBUWdCRUVJYWhCZklRSWdCRUVCT2dBYklBUkJDR29Rb0FrTElBQWdCRUVJYWlBQ0VERWdCRUViYWhDaUFTQUVRU0JxSkFBTEp3QWdBQ0FCRUxVSklBQWdCRFlDSENBQUlBSTJBaGdnQUNBRE5nSVVJQUJCK05FUE5nSUFDMEVCQVg4akFFRVFheUlESkFBZ0F5QUNPZ0FQUVg4aEFpQUJRUUJMQkVBZ0FDQUJJQU5CRDJvUXBRNGlBU0FBYTBGL0lBRWJJUUlMSUFOQkVHb2tBQ0FDQzI4QkFuOGpBRUVRYXlJQ0pBQWdBaUFCS1FJQU53TUlJQUlnQUJBZk5nSUVJQUlnQWlnQ0REWUNBQUpBSUFBUUV5QUNLQUlJSUFKQkJHb2dBaENrQVNnQ0FCQ0xCeUlBRFFCQmZ5RUFJQUlvQWdRaUFTQUNLQUlBSWdOSkRRQWdBU0FEU3lFQUN5QUNRUkJxSkFBZ0FBc3pBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBUkFUSUFFUUh4Q1pBUm9nQUNBQ1FRaHFFSW9hSVFBZ0FrRVFhaVFBSUFBTDVnRUJCWDhqQUVFd2F5SURKQUFDZjBFQklBRWdBU2dDQUNnQ0pCRUFBQ0lDSUFJb0FnQW9BakFSQUFBb0FrQWlCaEEzUVFCTkRRQWFBa0FEUUVFZ0VFWWlBaUFHSUFVUU9DZ0NBQ0lFSUFRb0FnQW9BaGdSQUFBZ0JTQUJJQUVvQWdBb0FpUVJBQUFnQVNBQktBSUFLQUlrRVFBQUlnUWdCQ2dDQUNnQ2RCRUFBQkNJR2lBRElBSTJBaXdnQTBFZ2FpQUFJQU5CQ0dvZ0FpQUNLQUlBS0FJWUVRQUFJQU5CTEdvUXBRa2lBaENrQ1NBRExRQWtJUVFnQWhDeUFpQUVRUUZIRFFFZ0JVRUJhaUlGSUFZUU4wa05BQXRCQVF3QkMwRUFDeUVBSUFOQk1Hb2tBQ0FBQzFFQkFYOGdBQkRmQXlBQUVEc2dBQ2dDQUNBQUtBSUVJQUZCQkdvaUFoQ3REaUFBSUFJUUxpQUFRUVJxSUFGQkNHb1FMaUFBRUJzZ0FSQWpFQzRnQVNBQktBSUVOZ0lBSUFBZ0FCQ2FBUkRaQkF0WkFRSi9Jd0JCSUdzaUF5UUFJQUFRT3lJQ0lBTkJDR29nQUNBQUVKb0JRUUZxRUo0R0lBQVFtZ0VnQWhEVkJ5SUNLQUlJSUFFUXhnUWdBaUFDS0FJSVFRaHFOZ0lJSUFBZ0FoQ05HaUFDRUs4T0lBTkJJR29rQUF0TEFRRi9Jd0JCRUdzaUFpUUFBa0FnQUNnQ0JDQUFFQnNvQWdCSEJFQWdBQkE3SUFBb0FnUWdBUkRHQkNBQUlBQW9BZ1JCQ0dvMkFnUU1BUXNnQUNBQkVJNGFDeUFDUVJCcUpBQUxDQUFnQUJDcURob0xZQUVCZnlNQVFSQnJJZ1FrQUNBRUlBSTJBZ0FnQkNBQk5nSUlJQVJCQ0dvZ0JCQWVCRUFEUUNBQUlBTW9BZ0FnQkNnQ0NCREdCQ0FFUVFocUVPMERJQU1nQXlnQ0FFRUlhallDQUNBRVFRaHFJQVFRSGcwQUN3c2dCRUVRYWlRQUN6QUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUFJQUlnQURZQ0NDQUNJQUpCQ0dvUW5BY2hBQ0FDUVJCcUpBQWdBQXRwQVFKL0lBQVEzd01nQVNnQ0JDRURJQUFRT3lBQUtBSUFJQUlnQVVFRWFpSUVFSzBPSUFBUU95QUNJQUFvQWdRZ0FVRUlhaUlDRUxVT0lBQWdCQkF1SUFCQkJHb2dBaEF1SUFBUUd5QUJFQ01RTGlBQklBRW9BZ1EyQWdBZ0FDQUFFSm9CRU5rRUlBTUxad0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ0FnQXlBQk5nSUlJQUFvQWhBaEFTQURRUWhxSUFNUUhnUkFBMEFnQVNBQUtBSUlJQU1vQWdnUXhnUWdBQ0FBS0FJSVFRaHFOZ0lJSUFOQkNHb1E3UU1nQTBFSWFpQURFQjROQUFzTElBTkJFR29rQUF0UkFRSi9JQUVnQUNnQ0JDSUZJQU5yYWlJRUlBSkpCRUFnQkNFREEwQWdBQkE3SUFBb0FnUWdBeERHQkNBQUlBQW9BZ1JCQ0dvMkFnUWdBMEVJYWlJRElBSkpEUUFMQ3lBQklBUWdCUkQrQlJvTElnQWpBRUVRYXlJREpBQWdBQkE3SUFFZ0FpQUFRUVJxRUpFYUlBTkJFR29rQUFzL0FRRi9JQUFRbUFvZ0FVa0VRQkJ1QUFzZ0FDQUFFRHNnQVJDWENpSUNOZ0lBSUFBZ0FqWUNCQ0FBRUJzZ0FpQUJRUU4wYWpZQ0FDQUFRUUFRMlFRTFFBRUJmeUFBS0FJQUJFQWdBQkNhQVNFQklBQVF0QTRnQUNBQkVLWUpJQUFRT3hvZ0FDZ0NBQm9nQUJEV0Fob2dBQkFiUVFBMkFnQWdBRUlBTndJQUN3dXZBUUVEZnlNQVFSQnJJZ01rQUFKQUlBSWdBV3RCQTNVaUJDQUFFTllDVFFSQUlBTWdBallDRENBRUlBQVFtZ0ZMQkVBZ0F5QUJOZ0lNSUFBUW1nRWhCU0FESUFNb0Fnd2dCVUVEZEdvMkFnd2dBU0FES0FJTUlBQW9BZ0FRcHdrYUlBQWdBeWdDRENBQ0lBUWdBQkNhQVdzUXVBNE1BZ3NnQUNBQklBSWdBQ2dDQUJDbkNSQzNEZ3dCQ3lBQUVKZ2FJQUFnQUNBRUVKNEdFSmNhSUFBZ0FTQUNJQVFRdUE0TElBTkJFR29rQUFzNUFDQUJLQUlFUlFSQUlBQkJBRFlDQkE4TElBQVFuUWNnQUNnQ0JDSUFJQUVvQWdRaUFVY0VRQ0FBSUFFb0FnQWdBU2dDQkJDWkdnc0xVZ0VEZnlNQVFSQnJJZ0lrQUNBQUVKMEhJQUlnQUNnQ0JDSUFFREkyQWdBZ0FrRUlhaUFDRUdjaEF5QUJLQUlFRUVBaEJDQUJLQUlFRURJaEFTQUFJQU1vQWdBZ0JDQUJFTE1PSUFKQkVHb2tBQXNqQUNBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlJTmdJSUlBQkJER29nQVVFTWFoQm5HZ3NIQUNBQUxRQXdDek1CQVg4Z0FDZ0NCQ0lCUlFSQUlBQVFwd0pGQkVBRFFDQUFLQUlJSWdBUXB3SkZEUUFMQ3lBQUtBSUlEd3NnQVJDNURndkFBUUVFZnlNQVFSQnJJZ1VrQUNBQUVJOEhJZ1FnQVd0QkFVOEVRQ0FBRUJNaEJnSi9JQVJCQVhaQmNHb2dBVXNFUUNBRklBRkJBWFEyQWdnZ0JTQUJRUUZxTmdJTUlBVkJER29nQlVFSWFoQlNLQUlBRU9RQ0RBRUxJQVJCZjJvTElRUWdBQkFqSUFSQkFXb2lCeEQ2QlNFRUlBTUVRQ0FFSUFZZ0F4RG9BUXNnQWlBRGF5SUNCRUFnQXlBRWFpQURJQVpxSUFJUTZBRUxJQUZCQ2tjRVFDQUFFQ01hQ3lBQUlBUVE0UUVnQUNBSEVPa0JJQVZCRUdva0FBOExFRzRBQ3drQUlBQkJBRG9BRUFzSUFDQUFMUUFRUlFzS0FDQUFLQUlNS0FJQUN4UUFJQUFvQWd3aUFFVUVRRUVBRHdzZ0FCQVdDMDRCQW44Z0FDQUFLQUlNRU1BT0lnUTJBZ3hCQVNFREFrQWdBVUVCU0EwQUlBUWdBaERjQVNBQlFRRkdEUUFEUUNBQUtBSU1JQUlnQTBFQ2RHb1EzQUVnQTBFQmFpSURJQUZIRFFBTEN3dGhBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNBQ0FDSUFBMkFnaEJBQ0VBQWtBZ0FrRUlhaUFDRUI1RkRRQURRQ0FDS0FJSUtBSUFFTVFPQkVCQkFTRUFEQUlMSUFKQkNHb1F0QUlnQWtFSWFpQUNFQjROQUFzTElBSkJFR29rQUNBQUMyRUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUFJQUlnQURZQ0NFRUFJUUFDUUNBQ1FRaHFJQUlRSGtVTkFBTkFJQUlvQWdnb0FnQVF4UTRFUUVFQklRQU1BZ3NnQWtFSWFoQzBBaUFDUVFocUlBSVFIZzBBQ3dzZ0FrRVFhaVFBSUFBTElBQWdBQ2dDQkVIL0FYRWlBRUVTVFFSQVFmKy9FQ0FBZGtFQmNROExRUUFMWVFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWdBZ0FpQUFOZ0lJUVFBaEFBSkFJQUpCQ0dvZ0FoQWVSUTBBQTBBZ0FpZ0NDQ2dDQUJER0RnUkFRUUVoQUF3Q0N5QUNRUWhxRUxRQ0lBSkJDR29nQWhBZURRQUxDeUFDUVJCcUpBQWdBQXRoQVFGL0l3QkJFR3NpQWlRQUlBSWdBVFlDQUNBQ0lBQTJBZ2hCQUNFQUFrQWdBa0VJYWlBQ0VCNUZEUUFEUUNBQ0tBSUlLQUlBRU1jT0JFQkJBU0VBREFJTElBSkJDR29RdEFJZ0FrRUlhaUFDRUI0TkFBc0xJQUpCRUdva0FDQUFDMkVCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lBSUFJZ0FEWUNDRUVBSVFBQ1FDQUNRUWhxSUFJUUhrVU5BQU5BSUFJb0FnZ29BZ0FReUE0RVFFRUJJUUFNQWdzZ0FrRUlhaEMwQWlBQ1FRaHFJQUlRSGcwQUN3c2dBa0VRYWlRQUlBQUxjd0VCZnlNQVFTQnJJZ01rQUNBRElBRTJBaEFnQXlBQU5nSVlJQU1nQWpZQ0NFRUFJUUlDUUNBRFFSaHFJQU5CRUdvUUhrVU5BQU5BSUFNb0FoZ29BZ0FnQXlnQ0NCREpEZ1JBUVFFaEFnd0NDeUFEUVJocUVMUUNJQU5CR0dvZ0EwRVFhaEFlRFFBTEN5QURRU0JxSkFBZ0FndGhBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNBQ0FDSUFBMkFnaEJBQ0VBQWtBZ0FrRUlhaUFDRUI1RkRRQURRQ0FDS0FJSUtBSUFFTW9PQkVCQkFTRUFEQUlMSUFKQkNHb1F0QUlnQWtFSWFpQUNFQjROQUFzTElBSkJFR29rQUNBQUMzTUJBWDhqQUVFZ2F5SURKQUFnQXlBQk5nSVFJQU1nQURZQ0dDQURJQUkyQWdoQkFDRUNBa0FnQTBFWWFpQURRUkJxRUI1RkRRQURRQ0FES0FJWUtBSUFJQU1vQWdnUXl3NEVRRUVCSVFJTUFnc2dBMEVZYWhDMEFpQURRUmhxSUFOQkVHb1FIZzBBQ3dzZ0EwRWdhaVFBSUFJTFRRQWdBQ0FBS1FJWVFvQ0EvQWVFTndJWUlBQWdBQ2dDRkVHQWdINXhRZitmQVhJMkFoUWdBQ0FBS1FJWVFvQ0FnUGdQaERjQ0dDQUFJQUFwQWhoQ2dJQ0FnUEQvLy8vL0FJUTNBaGdMTFFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWdnZ0FDQUNLQUlJRVA4QkdpQUFRUUEyQWhBZ0FrRVFhaVFBQzFFQUlBQkNmemNDRENBQUlBQXBBZ1JDLy8vLy8vLy8vNGQ0Z3pjQ0JDQUFJQUFwQWhoQy8vOERoRGNDR0NBQUlBQW9BaUJCL3dGeU5nSWdJQUFnQUNnQ0ZFSC8vNEYrY1VHQWdQNEFjallDRkFzSEFDQUFFTVFPQ3djQUlBQVF4UTRMQndBZ0FCREdEZ3NIQUNBQUVNY09Dd2NBSUFBUXlBNExDUUFnQUNBQUVNa09Dd2NBSUFBUXlnNExDUUFnQUNBQkVNc09DeDRCQVg4Z0FDQUFLQUlBS0FLSUFSRUFBQVIvSUFBb0FrQkZCU0FCQ3dzdEFDQUJJQUFvQWdoSEJFQURRQ0FBS0FJUUdpQUFJQUFvQWdoQmZHbzJBZ2dnQUNnQ0NDQUJSdzBBQ3dzTElnRUJmeUFBTFFBRVFRNUdCSDhnQUNBQUtBSUFLQUlnRVFBQUVLTUhCU0FCQ3dzaUFRRi9JQUF0QUFSQkRrWUVmeUFBSUFBb0FnQW9BaUFSQUFBUXBBY0ZJQUVMQ3lJQkFYOGdBQzBBQkVFT1JnUi9JQUFnQUNnQ0FDZ0NJQkVBQUJEUUJBVWdBUXNMR2dBZ0FDQUFLQUlBS0FJc0VRQUFMd0VFUWNEL0FYRkJBRWNMSkFBZ0FDMEFCRUZ6YWlJQVFmOEJjVUVFVFFSQVFSTWdBRUVmY1haQkFYRVBDMEVBQ3pBQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQWdBRUVJYWlBQ1FReHFFS1lCS0FJQU5nSUlJQUpCRUdva0FBc01BQ0FBS0FJOElBRVF3Qm9MREFBZ0FDZ0NQRUVCT2dBTUN3b0FJQUFvQWp3dEFBd0xJZ0VCZnlBQUlBQW9BZ0FvQW5BUkFBQUVmeUFBS0FJOEVLVUhRUUZ6QlNBQkN3c2ZBUUYvSUFBZ0FDZ0NBQ2dDY0JFQUFBUi9JQUFvQWp3UXBRY0ZJQUVMQ3lZQkFYOUJBU0VCSUFBZ0FDZ0NBQ2dDWUJFQUFBUi9JQUVGSUFBdEFBWkJFSEZCQkhZTEN3b0FJQUFvQWp3b0FnZ0xDZ0FnQUNnQ1BCRFZEZ3NLQUNBQUtBSThFTUlDQ3dvQUlBQW9BandRb2djTEJ3QWdBQ2dDU0FzVUFDQUFJQUFvQWdSQmdHQnhRWUFDY2pZQ0JBc0hBQ0FBRURVYUN6WUJBbjhqQUVFUWF5SUNKQUFnQVVFQkVLTU9JZ05CQURZQ0FDQUFJQU1nQWtFSWFpQUJRUUVRbVFFUWtRRWFJQUpCRUdva0FBdUJBUUVDZnlNQVFTQnJJZ01rQUNBQUVEc2lBaUFEUVFocUlBQWdBQkEzUVFGcUVJTWFJQUFRTnlBQ0VJSWFJZ0lvQWdnZ0FSQ3pDU0FDSUFJb0FnaEJGR28yQWdnZ0FDQUNFSUFhSUFJZ0FpZ0NCQkQ4R1NBQ0tBSUFCRUFnQWlnQ0VCb2dBaWdDQUJvZ0FoQWpLQUlBSUFJb0FnQnJRUlJ0R2dzZ0EwRWdhaVFBQzRzQkFDQUFRUUEyQWdBZ0FFSUFOd0lRSUFCQ2Z6Y0NDQ0FBUVFBN0FRUWdBRUYvTmdKUUlBQkJBRG9BVGlBQVFRQTdBVXdnQUVGL05nSkVJQUJCQURvQVFDQUFRUUEyQWp3Z0FFRUFPd0U0SUFCQ2Z6Y0NMQ0FBUVFBN0FTZ2dBRUtCZ0lDQUVEY0NIQ0FBUVFBNkFCZ2dBRUYvTmdJMElBQkJBRG9BS2lBQVFRRTJBaVFnQUVFQU5nSklDMU1CQVg4Z0FFRUFOZ0lBSUFCQ0FEY0NsQUVnQUNBQUx3R1FBVUdBWUhGQkFYSWlBanNCa0FFZ0FDQUJLUUlBTndLY0FTQUFJQUVwQWdnM0FxUUJJQUJCQURZQ3JBRWdBQ0FDUVlIQUEzRTdBWkFCQ3djQUlBQW9Ba0FMUndFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFFUXNRa2dBQ0FDUVFocUVMQUpJUUFnQVJBZklRTWdBQ0FCRUJNZ0F5QURRUUZxRUs4SklBQkJLQkRDRGlBQ1FSQnFKQUFMSndBZ0FDMEFCQVJBSUFBb0FnQWFJQUZCQ0dvUTZBa0xJQUVFUUNBQUtBSUFHaUFCRUNvTEN3OEFJQUFFUUNBQUVEWWdBQkFxQ3d1Y0JBRURmeU1BUVpBRGF5SUhKQUFnQnlBQU5nS01Bd0pBSUFCRkJFQkJBQ0VBUVlBSVFSTkJBVUdJOFJFb0FnQVE5d0lhREFFTElBUkJBQ0FGRzBVRVFFRUFJUUJCbEFoQkZFRUJRWWp4RVNnQ0FCRDNBaG9NQVF0QkFDRUFJQVJCQURZQ0FDQUZRUUEyQWdBZ0FVRUZUVUVBUVFFZ0FYUkJNWEViUlFSQVFha0lRUlZCQVVHSThSRW9BZ0FROXdJYURBRUxJQU5CZ0lCOGFrRVlkMEVHVHdSQVFiOElRUjVCQVVHSThSRW9BZ0FROXdJYURBRUxRWUQwRWkwQUFFVUVRQkQzR1VHQTlCSkJBVG9BQUFzZ0IwR3dBbW9nQVJEeEdTSUdJZ2hCQVRZQ0tDQUlJQWRCakFOcU5nSVlJQWhCQURZQ0hDQUdRUUUyQWpnZ0JrSGtBRFlDUkNBR1FVQnJRUUUyQWdBZ0JpQUJOZ0k4SUFaQmdJQ0FBallDVENBR1FRRTJBa2dnQmlBRE5nSlVJQVpCQVRZQ1VBSkFJQVlRbVJCRkJFQkIzQXRCRFVFQlFZanhFU2dDQUNJQkVQY0NHaUFISUFZb0FoUVFFellDRUNBQlFlb0xJQWRCRUdvUXpBSU1BUXNnQjBFb2FoRG9HU0lESUFZUTFSWUNRQ0FERU9RWlJRUkFRZTRMUVF4QkFVR0k4UkVvQWdBaUFSRDNBaG9nQnlBREtBTDRBUkFUTmdJQUlBRkI2Z3NnQnhETUFnd0JDeUFIUVNCcUVLSUxJUWdnQnlBQ09nQWdJQWhCQURvQUJDQUlRUUE3QUFKQkRCQW1JZ0FRTUNFQ0lBTWdBVUVDZEdvb0FyQUJJQUlnQ0JENkZTQUZJQUlRRmpZQ0FDQUVJQUlvQWdBMkFnQUxJQU1Ra3drYUN5QUdFSmNKR2dzZ0IwR1FBMm9rQUNBQUN3VUFFS3NUQ3d1NHVoTEJBZ0JCZ0FnTCtRRkpibkIxZENCd2IybHVkR1Z5SUc1MWJHd0tBRTkxZEhCMWRDQndiMmx1ZEdWeUlHNTFiR3dLQUVsdWRtRnNhV1FnYzJoaFpHVnlJSE4wWVdkbENnQkpiblpoYkdsa0lGTlFTVkl0VmlCMlpYSnphVzl1SUc1MWJXSmxjZ29BQUFBZ0FBQUFCZ0FBQUNBQUFBQWdBQUFBUUFBQUFBQVFBQUJBQUFBQUlBQUFBRkFBQUFBZ0FBQUFBQkFBQUNBQUFBQ0FBQUFBQ0FBQUFCQUFBQUFRQUFBQUR3QUFBUGovLy84SEFBQUFDQUFBQVAvL0FBRC8vd0FBLy84QUFBQUVBQUFBQkFBQVFBQUFBQUFFQUFBUUFBQUFDQUFBQUFnQUFBQUJBQUFBUEFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFBSUFBQUFDQUFBQUFnQVFaQUtDMDBJQUFBQUNBQUFBQkFBQUFBQUFRQUFBQVFBQUFBRUFBQkFBQUFBZ0FBQUFJQUFBQUFRQUFBQUFBUUFBQUFRQUFDQUFBQUFnQUFBQUJBQUFBQUFCQUFBZUFBQUFDQUFBQUJBQUFBQUVBQkI4QW9MQ1FnQUFBQUlBQUFBQVFCQmpBc0xiZ0VBQUFBQkFBQUFBRUFBQUFRQUFBQkFBQUFBQ0FBQUFBZ0FBQUFFQUFBQUFBRUFBQUFDQUFBZ0FBQUFBUUFBQUFFQUFBQWdBQUFBQVFBQUFBRUFBQUFFQUFBQUFRRUJBUUVCQVFFQkFBQUFVR0Z5YzJVZ1ptRnBiR1ZrQ2dBbGN3b0FUR2x1YXlCbVlXbHNaV1FLQUVHRURBc1JBUUFBQUFJQUFBQURBQUFBQkFBQUFBVUFRYUFNQzZJQkFRQUFBQUlBQUFBR0FBQUFCQUFBQUFjQUFBQmhiR3h2WTJGMGIzSThWRDQ2T21Gc2JHOWpZWFJsS0hOcGVtVmZkQ0J1S1NBbmJpY2daWGhqWldWa2N5QnRZWGhwYlhWdElITjFjSEJ2Y25SbFpDQnphWHBsQUNodWRXeHNLUUJoYkd4dlkyRjBiM0k4VkQ0Nk9tRnNiRzlqWVhSbEtITnBlbVZmZENCdUtTQW5iaWNnWlhoalpXVmtjeUJ0WVhocGJYVnRJSE4xY0hCdmNuUmxaQ0J6YVhwbEFFSE1EUXNwQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBQUFBRVFBQUFCSUFRWUFPQ3cyM0FBQUF3VE1DQUFFQUFBQUNBRUdZRGdzTnVBQUFBTWt6QWdBQkFBQUFBZ0JCc0E0TERia0FBQURSTXdJQUFRQUFBQUlBUWNnT0N3MjZBQUFBMVRNQ0FBRUFBQUFDQUVIZ0Rnc051d0FBQU5rekFnQUJBQUFBQWdCQitBNExEYndBQUFEZE13SUFBUUFBQUFJQVFaQVBDdzI5QUFBQTRqTUNBQUVBQUFBQ0FFR29Ed3NOdmdBQUFPY3pBZ0FDQUFBQUFnQkJ3QThMRGI0QUFBRG5Nd0lBQVFBQUFBSUFRZGdQQ3czRkFBQUE3RE1DQUFJQUFBQUNBRUh3RHdzTnhnQUFBUEF6QWdBQkFBQUFBZ0JCaUJBTERjY0FBQUQwTXdJQUFRQUFBQUlBUWFBUUN3M0lBQUFBK0RNQ0FBRUFBQUFDQUVHNEVBc055UUFBQVAwekFnQUJBQUFBQWdCQjBCQUxEY29BQUFBQ05BSUFBUUFBQUFJQVFlZ1FDdzNMQUFBQUJ6UUNBQUVBQUFBQ0FFR0FFUXNOekFBQUFCTTBBZ0FCQUFBQUFnQkJtQkVMRGMwQUFBQVhOQUlBQVFBQUFBSUFRYkFSQ3czT0FBQUFIRFFDQUFFQUFBQUNBRUhJRVFzTjBnQUFBQ0kwQWdBQkFBQUFBZ0JCNEJFTERkTUFBQUFuTkFJQUFRQUFBQUlBUWZnUkM3VUJtd0FBQUMwMEFnQUNBQUFBQWdBQUFBRUFBQUFBQUFBQTFRQUFBREUwQWdBQ0FBQUFBZ0FBQUFFQUFBQUFBQUFBMWdBQUFEVTBBZ0FDQUFBQUFnQUFBQUVBQUFBQUFBQUExd0FBQURrMEFnQURBQUFBQWdBQUFBUUFBQUFBQUFBQTJBQUFBRDgwQWdBREFBQUFBZ0FBQUFFQUFBQUFBQUFBMlFBQUFFTTBBZ0FDQUFBQUFnQUFBQWdBQUFBQUFBQUEyZ0FBQUVnMEFnQURBQUFBQWdBQUFCQUFBQUFBQUFBQUVBRUFBRk0wQWdBQkFBQUFBZ0JCdUJNTERSRUJBQUJkTkFJQUF3QUFBQUlBUWRBVEN3MFNBUUFBYVRRQ0FBSUFBQUFDQUVIb0V3di9DQk1CQUFCeE5BSUFBd0FBQUFJQUFBQUNBQUFBQUFBQUFBd0JBQUI1TkFJQUFRQUFBQUlBQUFBQUJBQUFBQUFBQUEwQkFBQ0FOQUlBQWdBQUFBSUFBQUFBQkFBQUFBQUFBQTRCQUFDSk5BSUFBZ0FBQUFJQUFBQUFCQUFBQUFBQUFBOEJBQUNOTkFJQUFnQUFBQUlBQUFBQVFBQUFBQUFBQUtVQUFBQ1ROQUlBQWdBQUFBWUFBQUJBQ0FBQUFBQUFBS2NBQUFDY05BSUFBZ0FBQUFZQUFBQkFDQUFBQUFBQUFLWUFBQUNxTkFJQUFnQUFBQVlBQUFCQUNBQUFBQUFBQUtnQUFBQzJOQUlBQWdBQUFBWUFBQUJBQ0FBQUFBQUFBS01BQUFESE5BSUFBZ0FBQUFjQUFBQkFDQUFBQUFBQUFLUUFBQUROTkFJQUFnQUFBQWNBQUFCQUNBQUFBQUFBQUxvQkFBRFdOQUlBQVFBQUFBRUFBQUFBREFBQUFBQUFBTHNCQUFEYU5BSUFBUUFBQUFFQUFBQUFEQUFBQUFBQUFBZ0FBQURlTkFJQUFRQUFBQUVBQUFBQUNBQUFBQUFBQUw4QUFBRGlOQUlBQVFBQUFBSUFBQUFBQUFBQWtEVUNBTUFBQUFEbk5BSUFBUUFBQUFJQUFBQUFBQUFBa0RVQ0FNRUFBQURzTkFJQUFRQUFBQUlBQUFBQUFBQUFrRFVDQU1JQUFBRHhOQUlBQVFBQUFBSUFBQUFBQUFBQWtEVUNBTU1BQUFEM05BSUFBUUFBQUFJQUFBQUFBQUFBa0RVQ0FNUUFBQUQ5TkFJQUFRQUFBQUlBQUFBQUFBQUFrRFVDQU13QUFBQVROQUlBQVFBQUFBUUFBQUFBQUFBQWtEVUNBTTBBQUFBWE5BSUFBUUFBQUFRQUFBQUFBQUFBa0RVQ0FNOEFBQUFETlFJQUFRQUFBQUlBQUFBQUFBQUFrRFVDQU5BQUFBQUpOUUlBQVFBQUFBSUFBQUFBQUFBQWtEVUNBTkVBQUFBUE5RSUFBUUFBQUFJQUFBQUFBQUFBa0RVQ0FOUUFBQUFaTlFJQUFnQUFBQUlBQUFBZ0FBQUFrRFVDQU5VQUFBQXhOQUlBQWdBQUFBd0FBQUFCQUFBQWtEVUNBTllBQUFBMU5BSUFBZ0FBQUF3QUFBQUJBQUFBa0RVQ0FOY0FBQUE1TkFJQUF3QUFBQXdBQUFBRUFBQUFrRFVDQU5nQUFBQS9OQUlBQXdBQUFBSUFBQUNBQUFBQWtEVUNBTndBQUFBZU5RSUFBUUFBQUFJQUFBQkFBQUFBa0RVQ0FOc0FBQUFrTlFJQUFRQUFBQUlBQUFCQUFBQUFrRFVDQUtVQUFBQ1ROQUlBQWdBQUFBZ0FBQUJBQ0FBQWtEVUNBS2NBQUFDY05BSUFBZ0FBQUFnQUFBQkFDQUFBa0RVQ0FLWUFBQUNxTkFJQUFnQUFBQWdBQUFCQUNBQUFrRFVDQUtnQUFBQzJOQUlBQWdBQUFBZ0FBQUJBQ0FBQWtEVUNBS01BQUFESE5BSUFBZ0FBQUFnQUFBQkFDQUFBa0RVQ0FLUUFBQUROTkFJQUFnQUFBQWdBQUFCQUNBQUFrRFVDQUtRQkFBQXFOUUlBQWdBQUFBd0FBQUFBRXdBQTBEVUNBS1VCQUFBME5RSUFBZ0FBQUF3QUFBQUFFd0FBMERVQ0FLWUJBQUErTlFJQUFnQUFBQXdBQUFBQUV3QUEwRFVDQUtjQkFBQklOUUlBQWdBQUFBd0FBQUFBRXdBQTBEVUNBS2dCQUFCU05RSUFBZ0FBQUF3QUFBQUFFd0FBMERVQ0FLa0JBQUJiTlFJQUFnQUFBQXdBQUFBQUV3QUEwRFVDQUtvQkFBQmxOUUlBQWdBQUFBd0FBQUFBRXdBQTBEVUNBS3NCQUFCME5RSUFBd0FBQUF3QUFBQUFFd0FBMERVQ0FOZ0FBQUEvTkFJQUF3QUFBQUVBQUFBQUFBQUFFRFlDQU5nQUFBQS9OQUlBQXdBQUFBd0FBQUNBQUFBQUVEWUNBRUdBSFFzTkZ3RUFBT29YQWdBQkFBQUFBZ0JCbUIwTERSZ0JBQUQwRndJQUFRQUFBQUlBUWJBZEN3MFpBUUFBK1JjQ0FBRUFBQUFDQUVIZ0hRdkRBeThCQUFBZUtRSUFBQUFBQURRQkFBQm9LUUlBQUFBQUFEVUJBQUI4S1FJQUFBQUFBREFCQUFBVEdnSUFBQUFBQURJQkFBQkJLUUlBQUFBQUFPd0FBQUJNTmdJQUFBQUFBTzBBQUFCYU5nSUFBQUFBQU80QUFBQnFOZ0lBQUFBQUFPOEFBQUI0TmdJQUFBQUFBUFFBQUFDSU5nSUFBQUFBQVBVQUFBQ1ZOZ0lBQUFBQUFKa0FBQUNrTmdJQUFBQUFBQ1VCQUFDek5nSUFBQUFBQUNnQkFBREFOZ0lBQUFBQUFDWUJBQURLTmdJQUFBQUFBQ2NCQUFEV05nSUFBQUFBQU9BQUFBRGVOZ0lBQUFBQUFPRUFBQUR0TmdJQUFBQUFBT0lBQUFEOU5nSUFBQUFBQU9NQUFBQU1Od0lBQUFBQUFGMENBQUFjTndJQUFBQUFBRjRDQUFBb053SUFBQUFBQUY4Q0FBQTROd0lBQUFBQUFHQUNBQUJMTndJQUFBQUFBR0lDQUFDRTlnRUFBQUFBQUdNQ0FBQmFOd0lBQUFBQUFHUUNBQUJtTndJQUFBQUFBR1VDQUFCeE53SUFBQUFBQUdZQ0FBQi9Od0lBQUFBQUFHY0NBQUNLTndJQUFBQUFBR2dDQUFDYk53SUFBQUFBQUdrQ0FBQ3ROd0lBQUFBQUFHb0NBQUMrTndJQUFBQUFBR3NDQUFETk53SUFBQUFBQUd3Q0FBRGlOd0lBQUFBQUFHMENBQUR1TndJQUFBQUFBRzRDQUFBQU9BSUFBQUFBQUc4Q0FBQVFPQUlBUWJ3aEN4MFRBQUFBRkFBQUFBWUFBQUFHQUFBQUZRQUFBQllBQUFBR0FBQUFCZ0JCNUNFTG5Pb0JFd0FBQUJjQUFBQVlBQUFBR1FBQUFCVUFBQUFXQUFBQUdnQUFBQnNBQUFBQWFRQjFBR1l4TmdCcE9BQjFPQUJwTVRZQWRURTJBRElBTXdBMEFHWnNiMkYwSUdSR1pIaEdhVzVsS0dac2IyRjBJSEFwTzNabFl6SWdJR1JHWkhoR2FXNWxLSFpsWXpJZ0lIQXBPM1psWXpNZ0lHUkdaSGhHYVc1bEtIWmxZek1nSUhBcE8zWmxZelFnSUdSR1pIaEdhVzVsS0habFl6UWdJSEFwTzJac2IyRjBJR1JHWkhsR2FXNWxLR1pzYjJGMElIQXBPM1psWXpJZ0lHUkdaSGxHYVc1bEtIWmxZeklnSUhBcE8zWmxZek1nSUdSR1pIbEdhVzVsS0habFl6TWdJSEFwTzNabFl6UWdJR1JHWkhsR2FXNWxLSFpsWXpRZ0lIQXBPMlpzYjJGMElHWjNhV1IwYUVacGJtVW9abXh2WVhRZ2NDazdkbVZqTWlBZ1puZHBaSFJvUm1sdVpTaDJaV015SUNCd0tUdDJaV016SUNCbWQybGtkR2hHYVc1bEtIWmxZek1nSUhBcE8zWmxZelFnSUdaM2FXUjBhRVpwYm1Vb2RtVmpOQ0FnY0NrN1pteHZZWFFnWkVaa2VFTnZZWEp6WlNobWJHOWhkQ0J3S1R0MlpXTXlJQ0JrUm1SNFEyOWhjbk5sS0habFl6SWdJSEFwTzNabFl6TWdJR1JHWkhoRGIyRnljMlVvZG1Wak15QWdjQ2s3ZG1Wak5DQWdaRVprZUVOdllYSnpaU2gyWldNMElDQndLVHRtYkc5aGRDQmtSbVI1UTI5aGNuTmxLR1pzYjJGMElIQXBPM1psWXpJZ0lHUkdaSGxEYjJGeWMyVW9kbVZqTWlBZ2NDazdkbVZqTXlBZ1pFWmtlVU52WVhKelpTaDJaV016SUNCd0tUdDJaV00wSUNCa1JtUjVRMjloY25ObEtIWmxZelFnSUhBcE8yWnNiMkYwSUdaM2FXUjBhRU52WVhKelpTaG1iRzloZENCd0tUdDJaV015SUNCbWQybGtkR2hEYjJGeWMyVW9kbVZqTWlBZ2NDazdkbVZqTXlBZ1puZHBaSFJvUTI5aGNuTmxLSFpsWXpNZ0lIQXBPM1psWXpRZ0lHWjNhV1IwYUVOdllYSnpaU2gyWldNMElDQndLVHNBWm14dllYUXhObDkwSUdSR1pIZ29abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWkVaa2VDaG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdaRVprZUNobU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ1pFWmtlQ2htTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnWkVaa2VTaG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JrUm1SNUtHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQmtSbVI1S0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCa1JtUjVLR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0JrUm1SNFJtbHVaU2htYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCa1JtUjRSbWx1WlNobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1pFWmtlRVpwYm1Vb1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHUkdaSGhHYVc1bEtHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQmtSbVI1Um1sdVpTaG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JrUm1SNVJtbHVaU2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWkVaa2VVWnBibVVvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdSR1pIbEdhVzVsS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCa1JtUjRRMjloY25ObEtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJR1JHWkhoRGIyRnljMlVvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdSR1pIaERiMkZ5YzJVb1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHUkdaSGhEYjJGeWMyVW9aakUyZG1Wak5DazdabXh2WVhReE5sOTBJR1JHWkhsRGIyRnljMlVvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ1pFWmtlVU52WVhKelpTaG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdaRVprZVVOdllYSnpaU2htTVRaMlpXTXpLVHRtTVRaMlpXTTBJQ0FnWkVaa2VVTnZZWEp6WlNobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ1puZHBaSFJvS0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHWjNhV1IwYUNobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1puZHBaSFJvS0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCbWQybGtkR2dvWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUdaM2FXUjBhRVpwYm1Vb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdabmRwWkhSb1JtbHVaU2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWm5kcFpIUm9SbWx1WlNobU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ1puZHBaSFJvUm1sdVpTaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdabmRwWkhSb1EyOWhjbk5sS0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHWjNhV1IwYUVOdllYSnpaU2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWm5kcFpIUm9RMjloY25ObEtHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQm1kMmxrZEdoRGIyRnljMlVvWmpFMmRtVmpOQ2s3QUdac2IyRjBOalJmZENCa1JtUjRLR1pzYjJGME5qUmZkQ2s3WmpZMGRtVmpNaUFnSUdSR1pIZ29aalkwZG1Wak1pazdaalkwZG1Wak15QWdJR1JHWkhnb1pqWTBkbVZqTXlrN1pqWTBkbVZqTkNBZ0lHUkdaSGdvWmpZMGRtVmpOQ2s3Wm14dllYUTJORjkwSUdSR1pIa29abXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWkVaa2VTaG1OalIyWldNeUtUdG1OalIyWldNeklDQWdaRVprZVNobU5qUjJaV016S1R0bU5qUjJaV00wSUNBZ1pFWmtlU2htTmpSMlpXTTBLVHRtYkc5aGREWTBYM1FnWkVaa2VFWnBibVVvWm14dllYUTJORjkwS1R0bU5qUjJaV015SUNBZ1pFWmtlRVpwYm1Vb1pqWTBkbVZqTWlrN1pqWTBkbVZqTXlBZ0lHUkdaSGhHYVc1bEtHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQmtSbVI0Um1sdVpTaG1OalIyWldNMEtUdG1iRzloZERZMFgzUWdaRVprZVVacGJtVW9abXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWkVaa2VVWnBibVVvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUdSR1pIbEdhVzVsS0dZMk5IWmxZek1wTzJZMk5IWmxZelFnSUNCa1JtUjVSbWx1WlNobU5qUjJaV00wS1R0bWJHOWhkRFkwWDNRZ1pFWmtlRU52WVhKelpTaG1iRzloZERZMFgzUXBPMlkyTkhabFl6SWdJQ0JrUm1SNFEyOWhjbk5sS0dZMk5IWmxZeklwTzJZMk5IWmxZek1nSUNCa1JtUjRRMjloY25ObEtHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQmtSbVI0UTI5aGNuTmxLR1kyTkhabFl6UXBPMlpzYjJGME5qUmZkQ0JrUm1SNVEyOWhjbk5sS0dac2IyRjBOalJmZENrN1pqWTBkbVZqTWlBZ0lHUkdaSGxEYjJGeWMyVW9aalkwZG1Wak1pazdaalkwZG1Wak15QWdJR1JHWkhsRGIyRnljMlVvWmpZMGRtVmpNeWs3WmpZMGRtVmpOQ0FnSUdSR1pIbERiMkZ5YzJVb1pqWTBkbVZqTkNrN1pteHZZWFEyTkY5MElHWjNhV1IwYUNobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQm1kMmxrZEdnb1pqWTBkbVZqTWlrN1pqWTBkbVZqTXlBZ0lHWjNhV1IwYUNobU5qUjJaV016S1R0bU5qUjJaV00wSUNBZ1puZHBaSFJvS0dZMk5IWmxZelFwTzJac2IyRjBOalJmZENCbWQybGtkR2hHYVc1bEtHWnNiMkYwTmpSZmRDazdaalkwZG1Wak1pQWdJR1ozYVdSMGFFWnBibVVvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUdaM2FXUjBhRVpwYm1Vb1pqWTBkbVZqTXlrN1pqWTBkbVZqTkNBZ0lHWjNhV1IwYUVacGJtVW9aalkwZG1Wak5DazdabXh2WVhRMk5GOTBJR1ozYVdSMGFFTnZZWEp6WlNobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQm1kMmxrZEdoRGIyRnljMlVvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUdaM2FXUjBhRU52WVhKelpTaG1OalIyWldNektUdG1OalIyWldNMElDQWdabmRwWkhSb1EyOWhjbk5sS0dZMk5IWmxZelFwT3dCa2IzVmliR1VnYzNGeWRDaGtiM1ZpYkdVcE8yUjJaV015SUNCemNYSjBLR1IyWldNeUtUdGtkbVZqTXlBZ2MzRnlkQ2hrZG1Wak15azdaSFpsWXpRZ0lITnhjblFvWkhabFl6UXBPMlJ2ZFdKc1pTQnBiblpsY25ObGMzRnlkQ2hrYjNWaWJHVXBPMlIyWldNeUlDQnBiblpsY25ObGMzRnlkQ2hrZG1Wak1pazdaSFpsWXpNZ0lHbHVkbVZ5YzJWemNYSjBLR1IyWldNektUdGtkbVZqTkNBZ2FXNTJaWEp6WlhOeGNuUW9aSFpsWXpRcE8yUnZkV0pzWlNCaFluTW9aRzkxWW14bEtUdGtkbVZqTWlBZ1lXSnpLR1IyWldNeUtUdGtkbVZqTXlBZ1lXSnpLR1IyWldNektUdGtkbVZqTkNBZ1lXSnpLR1IyWldNMEtUdGtiM1ZpYkdVZ2MybG5iaWhrYjNWaWJHVXBPMlIyWldNeUlDQnphV2R1S0dSMlpXTXlLVHRrZG1Wak15QWdjMmxuYmloa2RtVmpNeWs3WkhabFl6UWdJSE5wWjI0b1pIWmxZelFwTzJSdmRXSnNaU0JtYkc5dmNpaGtiM1ZpYkdVcE8yUjJaV015SUNCbWJHOXZjaWhrZG1Wak1pazdaSFpsWXpNZ0lHWnNiMjl5S0dSMlpXTXpLVHRrZG1Wak5DQWdabXh2YjNJb1pIWmxZelFwTzJSdmRXSnNaU0IwY25WdVl5aGtiM1ZpYkdVcE8yUjJaV015SUNCMGNuVnVZeWhrZG1Wak1pazdaSFpsWXpNZ0lIUnlkVzVqS0dSMlpXTXpLVHRrZG1Wak5DQWdkSEoxYm1Nb1pIWmxZelFwTzJSdmRXSnNaU0J5YjNWdVpDaGtiM1ZpYkdVcE8yUjJaV015SUNCeWIzVnVaQ2hrZG1Wak1pazdaSFpsWXpNZ0lISnZkVzVrS0dSMlpXTXpLVHRrZG1Wak5DQWdjbTkxYm1Rb1pIWmxZelFwTzJSdmRXSnNaU0J5YjNWdVpFVjJaVzRvWkc5MVlteGxLVHRrZG1Wak1pQWdjbTkxYm1SRmRtVnVLR1IyWldNeUtUdGtkbVZqTXlBZ2NtOTFibVJGZG1WdUtHUjJaV016S1R0a2RtVmpOQ0FnY205MWJtUkZkbVZ1S0dSMlpXTTBLVHRrYjNWaWJHVWdZMlZwYkNoa2IzVmliR1VwTzJSMlpXTXlJQ0JqWldsc0tHUjJaV015S1R0a2RtVmpNeUFnWTJWcGJDaGtkbVZqTXlrN1pIWmxZelFnSUdObGFXd29aSFpsWXpRcE8yUnZkV0pzWlNCbWNtRmpkQ2hrYjNWaWJHVXBPMlIyWldNeUlDQm1jbUZqZENoa2RtVmpNaWs3WkhabFl6TWdJR1p5WVdOMEtHUjJaV016S1R0a2RtVmpOQ0FnWm5KaFkzUW9aSFpsWXpRcE8yUnZkV0pzWlNCdGIyUW9aRzkxWW14bExDQmtiM1ZpYkdVcE8yUjJaV015SUNCdGIyUW9aSFpsWXpJZ0xDQmtiM1ZpYkdVcE8yUjJaV016SUNCdGIyUW9aSFpsWXpNZ0xDQmtiM1ZpYkdVcE8yUjJaV00wSUNCdGIyUW9aSFpsWXpRZ0xDQmtiM1ZpYkdVcE8yUjJaV015SUNCdGIyUW9aSFpsWXpJZ0xDQmtkbVZqTWlrN1pIWmxZek1nSUcxdlpDaGtkbVZqTXlBc0lHUjJaV016S1R0a2RtVmpOQ0FnYlc5a0tHUjJaV00wSUN3Z1pIWmxZelFwTzJSdmRXSnNaU0J0YjJSbUtHUnZkV0pzWlN3Z2IzVjBJR1J2ZFdKc1pTazdaSFpsWXpJZ0lHMXZaR1lvWkhabFl6SXNJQ0J2ZFhRZ1pIWmxZeklwTzJSMlpXTXpJQ0J0YjJSbUtHUjJaV016TENBZ2IzVjBJR1IyWldNektUdGtkbVZqTkNBZ2JXOWtaaWhrZG1Wak5Dd2dJRzkxZENCa2RtVmpOQ2s3Wkc5MVlteGxJRzFwYmloa2IzVmliR1VzSUdSdmRXSnNaU2s3WkhabFl6SWdJRzFwYmloa2RtVmpNaXdnSUdSdmRXSnNaU2s3WkhabFl6TWdJRzFwYmloa2RtVmpNeXdnSUdSdmRXSnNaU2s3WkhabFl6UWdJRzFwYmloa2RtVmpOQ3dnSUdSdmRXSnNaU2s3WkhabFl6SWdJRzFwYmloa2RtVmpNaXdnSUdSMlpXTXlLVHRrZG1Wak15QWdiV2x1S0dSMlpXTXpMQ0FnWkhabFl6TXBPMlIyWldNMElDQnRhVzRvWkhabFl6UXNJQ0JrZG1Wak5DazdaRzkxWW14bElHMWhlQ2hrYjNWaWJHVXNJR1J2ZFdKc1pTazdaSFpsWXpJZ0lHMWhlQ2hrZG1Wak1pQXNJR1J2ZFdKc1pTazdaSFpsWXpNZ0lHMWhlQ2hrZG1Wak15QXNJR1J2ZFdKc1pTazdaSFpsWXpRZ0lHMWhlQ2hrZG1Wak5DQXNJR1J2ZFdKc1pTazdaSFpsWXpJZ0lHMWhlQ2hrZG1Wak1pQXNJR1IyWldNeUtUdGtkbVZqTXlBZ2JXRjRLR1IyWldNeklDd2daSFpsWXpNcE8yUjJaV00wSUNCdFlYZ29aSFpsWXpRZ0xDQmtkbVZqTkNrN1pHOTFZbXhsSUdOc1lXMXdLR1J2ZFdKc1pTd2daRzkxWW14bExDQmtiM1ZpYkdVcE8yUjJaV015SUNCamJHRnRjQ2hrZG1Wak1pQXNJR1J2ZFdKc1pTd2daRzkxWW14bEtUdGtkbVZqTXlBZ1kyeGhiWEFvWkhabFl6TWdMQ0JrYjNWaWJHVXNJR1J2ZFdKc1pTazdaSFpsWXpRZ0lHTnNZVzF3S0dSMlpXTTBJQ3dnWkc5MVlteGxMQ0JrYjNWaWJHVXBPMlIyWldNeUlDQmpiR0Z0Y0Noa2RtVmpNaUFzSUdSMlpXTXlJQ3dnWkhabFl6SXBPMlIyWldNeklDQmpiR0Z0Y0Noa2RtVmpNeUFzSUdSMlpXTXpJQ3dnWkhabFl6TXBPMlIyWldNMElDQmpiR0Z0Y0Noa2RtVmpOQ0FzSUdSMlpXTTBJQ3dnWkhabFl6UXBPMlJ2ZFdKc1pTQnRhWGdvWkc5MVlteGxMQ0JrYjNWaWJHVXNJR1J2ZFdKc1pTazdaSFpsWXpJZ0lHMXBlQ2hrZG1Wak1pd2dJR1IyWldNeUxDQWdaRzkxWW14bEtUdGtkbVZqTXlBZ2JXbDRLR1IyWldNekxDQWdaSFpsWXpNc0lDQmtiM1ZpYkdVcE8yUjJaV00wSUNCdGFYZ29aSFpsWXpRc0lDQmtkbVZqTkN3Z0lHUnZkV0pzWlNrN1pIWmxZeklnSUcxcGVDaGtkbVZqTWl3Z0lHUjJaV015TENBZ1pIWmxZeklwTzJSMlpXTXpJQ0J0YVhnb1pIWmxZek1zSUNCa2RtVmpNeXdnSUdSMlpXTXpLVHRrZG1Wak5DQWdiV2w0S0dSMlpXTTBMQ0FnWkhabFl6UXNJQ0JrZG1Wak5DazdaRzkxWW14bElHMXBlQ2hrYjNWaWJHVXNJR1J2ZFdKc1pTd2dZbTl2YkNrN1pIWmxZeklnSUcxcGVDaGtkbVZqTWl3Z0lHUjJaV015TENBZ1luWmxZeklwTzJSMlpXTXpJQ0J0YVhnb1pIWmxZek1zSUNCa2RtVmpNeXdnSUdKMlpXTXpLVHRrZG1Wak5DQWdiV2w0S0dSMlpXTTBMQ0FnWkhabFl6UXNJQ0JpZG1Wak5DazdaRzkxWW14bElITjBaWEFvWkc5MVlteGxMQ0JrYjNWaWJHVXBPMlIyWldNeUlDQnpkR1Z3S0dSMlpXTXlJQ3dnWkhabFl6SXBPMlIyWldNeklDQnpkR1Z3S0dSMlpXTXpJQ3dnWkhabFl6TXBPMlIyWldNMElDQnpkR1Z3S0dSMlpXTTBJQ3dnWkhabFl6UXBPMlIyWldNeUlDQnpkR1Z3S0dSdmRXSnNaU3dnWkhabFl6SXBPMlIyWldNeklDQnpkR1Z3S0dSdmRXSnNaU3dnWkhabFl6TXBPMlIyWldNMElDQnpkR1Z3S0dSdmRXSnNaU3dnWkhabFl6UXBPMlJ2ZFdKc1pTQnpiVzl2ZEdoemRHVndLR1J2ZFdKc1pTd2daRzkxWW14bExDQmtiM1ZpYkdVcE8yUjJaV015SUNCemJXOXZkR2h6ZEdWd0tHUjJaV015SUN3Z1pIWmxZeklnTENCa2RtVmpNaWs3WkhabFl6TWdJSE50YjI5MGFITjBaWEFvWkhabFl6TWdMQ0JrZG1Wak15QXNJR1IyWldNektUdGtkbVZqTkNBZ2MyMXZiM1JvYzNSbGNDaGtkbVZqTkNBc0lHUjJaV00wSUN3Z1pIWmxZelFwTzJSMlpXTXlJQ0J6Ylc5dmRHaHpkR1Z3S0dSdmRXSnNaU3dnWkc5MVlteGxMQ0JrZG1Wak1pazdaSFpsWXpNZ0lITnRiMjkwYUhOMFpYQW9aRzkxWW14bExDQmtiM1ZpYkdVc0lHUjJaV016S1R0a2RtVmpOQ0FnYzIxdmIzUm9jM1JsY0Noa2IzVmliR1VzSUdSdmRXSnNaU3dnWkhabFl6UXBPMkp2YjJ3Z0lHbHpibUZ1S0dSdmRXSnNaU2s3WW5abFl6SWdhWE51WVc0b1pIWmxZeklwTzJKMlpXTXpJR2x6Ym1GdUtHUjJaV016S1R0aWRtVmpOQ0JwYzI1aGJpaGtkbVZqTkNrN1ltOXZiQ0FnYVhOcGJtWW9aRzkxWW14bEtUdGlkbVZqTWlCcGMybHVaaWhrZG1Wak1pazdZblpsWXpNZ2FYTnBibVlvWkhabFl6TXBPMkoyWldNMElHbHphVzVtS0dSMlpXTTBLVHRrYjNWaWJHVWdiR1Z1WjNSb0tHUnZkV0pzWlNrN1pHOTFZbXhsSUd4bGJtZDBhQ2hrZG1Wak1pazdaRzkxWW14bElHeGxibWQwYUNoa2RtVmpNeWs3Wkc5MVlteGxJR3hsYm1kMGFDaGtkbVZqTkNrN1pHOTFZbXhsSUdScGMzUmhibU5sS0dSdmRXSnNaU3dnWkc5MVlteGxLVHRrYjNWaWJHVWdaR2x6ZEdGdVkyVW9aSFpsWXpJZ0xDQmtkbVZqTWlrN1pHOTFZbXhsSUdScGMzUmhibU5sS0dSMlpXTXpJQ3dnWkhabFl6TXBPMlJ2ZFdKc1pTQmthWE4wWVc1alpTaGtkbVZqTkNBc0lHUjJaV00wS1R0a2IzVmliR1VnWkc5MEtHUnZkV0pzWlN3Z1pHOTFZbXhsS1R0a2IzVmliR1VnWkc5MEtHUjJaV015SUN3Z1pIWmxZeklwTzJSdmRXSnNaU0JrYjNRb1pIWmxZek1nTENCa2RtVmpNeWs3Wkc5MVlteGxJR1J2ZENoa2RtVmpOQ0FzSUdSMlpXTTBLVHRrZG1Wak15QmpjbTl6Y3loa2RtVmpNeXdnWkhabFl6TXBPMlJ2ZFdKc1pTQnViM0p0WVd4cGVtVW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JtOXliV0ZzYVhwbEtHUjJaV015S1R0a2RtVmpNeUFnYm05eWJXRnNhWHBsS0dSMlpXTXpLVHRrZG1Wak5DQWdibTl5YldGc2FYcGxLR1IyWldNMEtUdGtiM1ZpYkdVZ1ptRmpaV1p2Y25kaGNtUW9aRzkxWW14bExDQmtiM1ZpYkdVc0lHUnZkV0pzWlNrN1pIWmxZeklnSUdaaFkyVm1iM0ozWVhKa0tHUjJaV015TENBZ1pIWmxZeklzSUNCa2RtVmpNaWs3WkhabFl6TWdJR1poWTJWbWIzSjNZWEprS0dSMlpXTXpMQ0FnWkhabFl6TXNJQ0JrZG1Wak15azdaSFpsWXpRZ0lHWmhZMlZtYjNKM1lYSmtLR1IyWldNMExDQWdaSFpsWXpRc0lDQmtkbVZqTkNrN1pHOTFZbXhsSUhKbFpteGxZM1FvWkc5MVlteGxMQ0JrYjNWaWJHVXBPMlIyWldNeUlDQnlaV1pzWldOMEtHUjJaV015SUN3Z1pIWmxZeklnS1R0a2RtVmpNeUFnY21WbWJHVmpkQ2hrZG1Wak15QXNJR1IyWldNeklDazdaSFpsWXpRZ0lISmxabXhsWTNRb1pIWmxZelFnTENCa2RtVmpOQ0FwTzJSdmRXSnNaU0J5WldaeVlXTjBLR1J2ZFdKc1pTd2daRzkxWW14bExDQmtiM1ZpYkdVcE8yUjJaV015SUNCeVpXWnlZV04wS0dSMlpXTXlJQ3dnWkhabFl6SWdMQ0JrYjNWaWJHVXBPMlIyWldNeklDQnlaV1p5WVdOMEtHUjJaV016SUN3Z1pIWmxZek1nTENCa2IzVmliR1VwTzJSMlpXTTBJQ0J5WldaeVlXTjBLR1IyWldNMElDd2daSFpsWXpRZ0xDQmtiM1ZpYkdVcE8yUnRZWFF5SUcxaGRISnBlRU52YlhCTmRXeDBLR1J0WVhReUxDQmtiV0YwTWlrN1pHMWhkRE1nYldGMGNtbDRRMjl0Y0UxMWJIUW9aRzFoZERNc0lHUnRZWFF6S1R0a2JXRjBOQ0J0WVhSeWFYaERiMjF3VFhWc2RDaGtiV0YwTkN3Z1pHMWhkRFFwTzJSdFlYUXllRE1nYldGMGNtbDRRMjl0Y0UxMWJIUW9aRzFoZERKNE15d2daRzFoZERKNE15azdaRzFoZERKNE5DQnRZWFJ5YVhoRGIyMXdUWFZzZENoa2JXRjBNbmcwTENCa2JXRjBNbmcwS1R0a2JXRjBNM2d5SUcxaGRISnBlRU52YlhCTmRXeDBLR1J0WVhRemVESXNJR1J0WVhRemVESXBPMlJ0WVhRemVEUWdiV0YwY21sNFEyOXRjRTExYkhRb1pHMWhkRE40TkN3Z1pHMWhkRE40TkNrN1pHMWhkRFI0TWlCdFlYUnlhWGhEYjIxd1RYVnNkQ2hrYldGME5IZ3lMQ0JrYldGME5IZ3lLVHRrYldGME5IZ3pJRzFoZEhKcGVFTnZiWEJOZFd4MEtHUnRZWFEwZURNc0lHUnRZWFEwZURNcE8yUnRZWFF5SUNBZ2IzVjBaWEpRY205a2RXTjBLR1IyWldNeUxDQmtkbVZqTWlrN1pHMWhkRE1nSUNCdmRYUmxjbEJ5YjJSMVkzUW9aSFpsWXpNc0lHUjJaV016S1R0a2JXRjBOQ0FnSUc5MWRHVnlVSEp2WkhWamRDaGtkbVZqTkN3Z1pIWmxZelFwTzJSdFlYUXllRE1nYjNWMFpYSlFjbTlrZFdOMEtHUjJaV016TENCa2RtVmpNaWs3WkcxaGRETjRNaUJ2ZFhSbGNsQnliMlIxWTNRb1pIWmxZeklzSUdSMlpXTXpLVHRrYldGME1uZzBJRzkxZEdWeVVISnZaSFZqZENoa2RtVmpOQ3dnWkhabFl6SXBPMlJ0WVhRMGVESWdiM1YwWlhKUWNtOWtkV04wS0dSMlpXTXlMQ0JrZG1Wak5DazdaRzFoZERONE5DQnZkWFJsY2xCeWIyUjFZM1FvWkhabFl6UXNJR1IyWldNektUdGtiV0YwTkhneklHOTFkR1Z5VUhKdlpIVmpkQ2hrZG1Wak15d2daSFpsWXpRcE8yUnRZWFF5SUNBZ2RISmhibk53YjNObEtHUnRZWFF5S1R0a2JXRjBNeUFnSUhSeVlXNXpjRzl6WlNoa2JXRjBNeWs3WkcxaGREUWdJQ0IwY21GdWMzQnZjMlVvWkcxaGREUXBPMlJ0WVhReWVETWdkSEpoYm5Od2IzTmxLR1J0WVhRemVESXBPMlJ0WVhRemVESWdkSEpoYm5Od2IzTmxLR1J0WVhReWVETXBPMlJ0WVhReWVEUWdkSEpoYm5Od2IzTmxLR1J0WVhRMGVESXBPMlJ0WVhRMGVESWdkSEpoYm5Od2IzTmxLR1J0WVhReWVEUXBPMlJ0WVhRemVEUWdkSEpoYm5Od2IzTmxLR1J0WVhRMGVETXBPMlJ0WVhRMGVETWdkSEpoYm5Od2IzTmxLR1J0WVhRemVEUXBPMlJ2ZFdKc1pTQmtaWFJsY20xcGJtRnVkQ2hrYldGME1pazdaRzkxWW14bElHUmxkR1Z5YldsdVlXNTBLR1J0WVhRektUdGtiM1ZpYkdVZ1pHVjBaWEp0YVc1aGJuUW9aRzFoZERRcE8yUnRZWFF5SUdsdWRtVnljMlVvWkcxaGRESXBPMlJ0WVhReklHbHVkbVZ5YzJVb1pHMWhkRE1wTzJSdFlYUTBJR2x1ZG1WeWMyVW9aRzFoZERRcE8ySjJaV015SUd4bGMzTlVhR0Z1S0dSMlpXTXlMQ0JrZG1Wak1pazdZblpsWXpNZ2JHVnpjMVJvWVc0b1pIWmxZek1zSUdSMlpXTXpLVHRpZG1Wak5DQnNaWE56VkdoaGJpaGtkbVZqTkN3Z1pIWmxZelFwTzJKMlpXTXlJR3hsYzNOVWFHRnVSWEYxWVd3b1pIWmxZeklzSUdSMlpXTXlLVHRpZG1Wak15QnNaWE56VkdoaGJrVnhkV0ZzS0dSMlpXTXpMQ0JrZG1Wak15azdZblpsWXpRZ2JHVnpjMVJvWVc1RmNYVmhiQ2hrZG1Wak5Dd2daSFpsWXpRcE8ySjJaV015SUdkeVpXRjBaWEpVYUdGdUtHUjJaV015TENCa2RtVmpNaWs3WW5abFl6TWdaM0psWVhSbGNsUm9ZVzRvWkhabFl6TXNJR1IyWldNektUdGlkbVZqTkNCbmNtVmhkR1Z5VkdoaGJpaGtkbVZqTkN3Z1pIWmxZelFwTzJKMlpXTXlJR2R5WldGMFpYSlVhR0Z1UlhGMVlXd29aSFpsWXpJc0lHUjJaV015S1R0aWRtVmpNeUJuY21WaGRHVnlWR2hoYmtWeGRXRnNLR1IyWldNekxDQmtkbVZqTXlrN1luWmxZelFnWjNKbFlYUmxjbFJvWVc1RmNYVmhiQ2hrZG1Wak5Dd2daSFpsWXpRcE8ySjJaV015SUdWeGRXRnNLR1IyWldNeUxDQmtkbVZqTWlrN1luWmxZek1nWlhGMVlXd29aSFpsWXpNc0lHUjJaV016S1R0aWRtVmpOQ0JsY1hWaGJDaGtkbVZqTkN3Z1pIWmxZelFwTzJKMlpXTXlJRzV2ZEVWeGRXRnNLR1IyWldNeUxDQmtkbVZqTWlrN1luWmxZek1nYm05MFJYRjFZV3dvWkhabFl6TXNJR1IyWldNektUdGlkbVZqTkNCdWIzUkZjWFZoYkNoa2RtVmpOQ3dnWkhabFl6UXBPd29BYVc1ME5qUmZkQ0JoWW5Nb2FXNTBOalJmZENrN2FUWTBkbVZqTWlCaFluTW9hVFkwZG1Wak1pazdhVFkwZG1Wak15QmhZbk1vYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0JoWW5Nb2FUWTBkbVZqTkNrN2FXNTBOalJmZENCemFXZHVLR2x1ZERZMFgzUXBPMmsyTkhabFl6SWdjMmxuYmlocE5qUjJaV015S1R0cE5qUjJaV016SUhOcFoyNG9hVFkwZG1Wak15azdhVFkwZG1Wak5DQnphV2R1S0drMk5IWmxZelFwTzJsdWREWTBYM1FnSUcxcGJpaHBiblEyTkY5MExDQWdhVzUwTmpSZmRDazdhVFkwZG1Wak1pQWdiV2x1S0drMk5IWmxZeklzSUNCcGJuUTJORjkwS1R0cE5qUjJaV016SUNCdGFXNG9hVFkwZG1Wak15d2dJR2x1ZERZMFgzUXBPMmsyTkhabFl6UWdJRzFwYmlocE5qUjJaV00wTENBZ2FXNTBOalJmZENrN2FUWTBkbVZqTWlBZ2JXbHVLR2syTkhabFl6SXNJQ0JwTmpSMlpXTXlLVHRwTmpSMlpXTXpJQ0J0YVc0b2FUWTBkbVZqTXl3Z0lHazJOSFpsWXpNcE8yazJOSFpsWXpRZ0lHMXBiaWhwTmpSMlpXTTBMQ0FnYVRZMGRtVmpOQ2s3ZFdsdWREWTBYM1FnYldsdUtIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDazdkVFkwZG1Wak1pQWdiV2x1S0hVMk5IWmxZeklzSUNCMWFXNTBOalJmZENrN2RUWTBkbVZqTXlBZ2JXbHVLSFUyTkhabFl6TXNJQ0IxYVc1ME5qUmZkQ2s3ZFRZMGRtVmpOQ0FnYldsdUtIVTJOSFpsWXpRc0lDQjFhVzUwTmpSZmRDazdkVFkwZG1Wak1pQWdiV2x1S0hVMk5IWmxZeklzSUNCMU5qUjJaV015S1R0MU5qUjJaV016SUNCdGFXNG9kVFkwZG1Wak15d2dJSFUyTkhabFl6TXBPM1UyTkhabFl6UWdJRzFwYmloMU5qUjJaV00wTENBZ2RUWTBkbVZqTkNrN2FXNTBOalJmZENBZ2JXRjRLR2x1ZERZMFgzUXNJQ0JwYm5RMk5GOTBLVHRwTmpSMlpXTXlJQ0J0WVhnb2FUWTBkbVZqTWl3Z0lHbHVkRFkwWDNRcE8yazJOSFpsWXpNZ0lHMWhlQ2hwTmpSMlpXTXpMQ0FnYVc1ME5qUmZkQ2s3YVRZMGRtVmpOQ0FnYldGNEtHazJOSFpsWXpRc0lDQnBiblEyTkY5MEtUdHBOalIyWldNeUlDQnRZWGdvYVRZMGRtVmpNaXdnSUdrMk5IWmxZeklwTzJrMk5IWmxZek1nSUcxaGVDaHBOalIyWldNekxDQWdhVFkwZG1Wak15azdhVFkwZG1Wak5DQWdiV0Y0S0drMk5IWmxZelFzSUNCcE5qUjJaV00wS1R0MWFXNTBOalJmZENCdFlYZ29kV2x1ZERZMFgzUXNJSFZwYm5RMk5GOTBLVHQxTmpSMlpXTXlJQ0J0WVhnb2RUWTBkbVZqTWl3Z0lIVnBiblEyTkY5MEtUdDFOalIyWldNeklDQnRZWGdvZFRZMGRtVmpNeXdnSUhWcGJuUTJORjkwS1R0MU5qUjJaV00wSUNCdFlYZ29kVFkwZG1Wak5Dd2dJSFZwYm5RMk5GOTBLVHQxTmpSMlpXTXlJQ0J0WVhnb2RUWTBkbVZqTWl3Z0lIVTJOSFpsWXpJcE8zVTJOSFpsWXpNZ0lHMWhlQ2gxTmpSMlpXTXpMQ0FnZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0FnYldGNEtIVTJOSFpsWXpRc0lDQjFOalIyWldNMEtUdHBiblEyTkY5MElDQmpiR0Z0Y0NocGJuUTJORjkwTENBZ2FXNTBOalJmZEN3Z0lHbHVkRFkwWDNRcE8yazJOSFpsWXpJZ0lHTnNZVzF3S0drMk5IWmxZeklzSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZENrN2FUWTBkbVZqTXlBZ1kyeGhiWEFvYVRZMGRtVmpNeXdnSUdsdWREWTBYM1FzSUNCcGJuUTJORjkwS1R0cE5qUjJaV00wSUNCamJHRnRjQ2hwTmpSMlpXTTBMQ0FnYVc1ME5qUmZkQ3dnSUdsdWREWTBYM1FwTzJrMk5IWmxZeklnSUdOc1lXMXdLR2syTkhabFl6SXNJQ0JwTmpSMlpXTXlMQ0FnYVRZMGRtVmpNaWs3YVRZMGRtVmpNeUFnWTJ4aGJYQW9hVFkwZG1Wak15d2dJR2syTkhabFl6TXNJQ0JwTmpSMlpXTXpLVHRwTmpSMlpXTTBJQ0JqYkdGdGNDaHBOalIyWldNMExDQWdhVFkwZG1Wak5Dd2dJR2syTkhabFl6UXBPM1ZwYm5RMk5GOTBJR05zWVcxd0tIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJR05zWVcxd0tIVTJOSFpsWXpJc0lDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXBPM1UyTkhabFl6TWdJR05zWVcxd0tIVTJOSFpsWXpNc0lDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXBPM1UyTkhabFl6UWdJR05zWVcxd0tIVTJOSFpsWXpRc0lDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJR05zWVcxd0tIVTJOSFpsWXpJc0lDQjFOalIyWldNeUxDQWdkVFkwZG1Wak1pazdkVFkwZG1Wak15QWdZMnhoYlhBb2RUWTBkbVZqTXl3Z0lIVTJOSFpsWXpNc0lDQjFOalIyWldNektUdDFOalIyWldNMElDQmpiR0Z0Y0NoMU5qUjJaV00wTENBZ2RUWTBkbVZqTkN3Z0lIVTJOSFpsWXpRcE8ybHVkRFkwWDNRZ0lHMXBlQ2hwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ3dnSUdKdmIyd3BPMmsyTkhabFl6SWdJRzFwZUNocE5qUjJaV015TENBZ2FUWTBkbVZqTWl3Z0lHSjJaV015S1R0cE5qUjJaV016SUNCdGFYZ29hVFkwZG1Wak15d2dJR2syTkhabFl6TXNJQ0JpZG1Wak15azdhVFkwZG1Wak5DQWdiV2w0S0drMk5IWmxZelFzSUNCcE5qUjJaV00wTENBZ1luWmxZelFwTzNWcGJuUTJORjkwSUcxcGVDaDFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXNJR0p2YjJ3cE8zVTJOSFpsWXpJZ0lHMXBlQ2gxTmpSMlpXTXlMQ0FnZFRZMGRtVmpNaXdnSUdKMlpXTXlLVHQxTmpSMlpXTXpJQ0J0YVhnb2RUWTBkbVZqTXl3Z0lIVTJOSFpsWXpNc0lDQmlkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXbDRLSFUyTkhabFl6UXNJQ0IxTmpSMlpXTTBMQ0FnWW5abFl6UXBPMmx1ZERZMFgzUWdaRzkxWW14bFFtbDBjMVJ2U1c1ME5qUW9aRzkxWW14bEtUdHBOalIyWldNeUlHUnZkV0pzWlVKcGRITlViMGx1ZERZMEtHUjJaV015S1R0cE5qUjJaV016SUdSdmRXSnNaVUpwZEhOVWIwbHVkRFkwS0dSMlpXTXpLVHRwTmpSMlpXTTBJR1J2ZFdKc1pVSnBkSE5VYjBsdWREWTBLR1IyWldNMEtUdDFhVzUwTmpSZmRDQmtiM1ZpYkdWQ2FYUnpWRzlWYVc1ME5qUW9aRzkxWW14bEtUdDFOalIyWldNeUlDQmtiM1ZpYkdWQ2FYUnpWRzlWYVc1ME5qUW9aSFpsWXpJcE8zVTJOSFpsWXpNZ0lHUnZkV0pzWlVKcGRITlViMVZwYm5RMk5DaGtkbVZqTXlrN2RUWTBkbVZqTkNBZ1pHOTFZbXhsUW1sMGMxUnZWV2x1ZERZMEtHUjJaV00wS1R0a2IzVmliR1VnYVc1ME5qUkNhWFJ6Vkc5RWIzVmliR1VvYVc1ME5qUmZkQ2s3WkhabFl6SWdJR2x1ZERZMFFtbDBjMVJ2Ukc5MVlteGxLR2syTkhabFl6SXBPMlIyWldNeklDQnBiblEyTkVKcGRITlViMFJ2ZFdKc1pTaHBOalIyWldNektUdGtkbVZqTkNBZ2FXNTBOalJDYVhSelZHOUViM1ZpYkdVb2FUWTBkbVZqTkNrN1pHOTFZbXhsSUhWcGJuUTJORUpwZEhOVWIwUnZkV0pzWlNoMWFXNTBOalJmZENrN1pIWmxZeklnSUhWcGJuUTJORUpwZEhOVWIwUnZkV0pzWlNoMU5qUjJaV015S1R0a2RtVmpNeUFnZFdsdWREWTBRbWwwYzFSdlJHOTFZbXhsS0hVMk5IWmxZek1wTzJSMlpXTTBJQ0IxYVc1ME5qUkNhWFJ6Vkc5RWIzVmliR1VvZFRZMGRtVmpOQ2s3YVc1ME5qUmZkQ0FnY0dGamEwbHVkREo0TXpJb2FYWmxZeklwTzNWcGJuUTJORjkwSUhCaFkydFZhVzUwTW5nek1paDFkbVZqTWlrN2FYWmxZeklnSUNBZ2RXNXdZV05yU1c1ME1uZ3pNaWhwYm5RMk5GOTBLVHQxZG1Wak1pQWdJQ0IxYm5CaFkydFZhVzUwTW5nek1paDFhVzUwTmpSZmRDazdZblpsWXpJZ2JHVnpjMVJvWVc0b2FUWTBkbVZqTWl3Z2FUWTBkbVZqTWlrN1luWmxZek1nYkdWemMxUm9ZVzRvYVRZMGRtVmpNeXdnYVRZMGRtVmpNeWs3WW5abFl6UWdiR1Z6YzFSb1lXNG9hVFkwZG1Wak5Dd2dhVFkwZG1Wak5DazdZblpsWXpJZ2JHVnpjMVJvWVc0b2RUWTBkbVZqTWl3Z2RUWTBkbVZqTWlrN1luWmxZek1nYkdWemMxUm9ZVzRvZFRZMGRtVmpNeXdnZFRZMGRtVmpNeWs3WW5abFl6UWdiR1Z6YzFSb1lXNG9kVFkwZG1Wak5Dd2dkVFkwZG1Wak5DazdZblpsWXpJZ2JHVnpjMVJvWVc1RmNYVmhiQ2hwTmpSMlpXTXlMQ0JwTmpSMlpXTXlLVHRpZG1Wak15QnNaWE56VkdoaGJrVnhkV0ZzS0drMk5IWmxZek1zSUdrMk5IWmxZek1wTzJKMlpXTTBJR3hsYzNOVWFHRnVSWEYxWVd3b2FUWTBkbVZqTkN3Z2FUWTBkbVZqTkNrN1luWmxZeklnYkdWemMxUm9ZVzVGY1hWaGJDaDFOalIyWldNeUxDQjFOalIyWldNeUtUdGlkbVZqTXlCc1pYTnpWR2hoYmtWeGRXRnNLSFUyTkhabFl6TXNJSFUyTkhabFl6TXBPMkoyWldNMElHeGxjM05VYUdGdVJYRjFZV3dvZFRZMGRtVmpOQ3dnZFRZMGRtVmpOQ2s3WW5abFl6SWdaM0psWVhSbGNsUm9ZVzRvYVRZMGRtVmpNaXdnYVRZMGRtVmpNaWs3WW5abFl6TWdaM0psWVhSbGNsUm9ZVzRvYVRZMGRtVmpNeXdnYVRZMGRtVmpNeWs3WW5abFl6UWdaM0psWVhSbGNsUm9ZVzRvYVRZMGRtVmpOQ3dnYVRZMGRtVmpOQ2s3WW5abFl6SWdaM0psWVhSbGNsUm9ZVzRvZFRZMGRtVmpNaXdnZFRZMGRtVmpNaWs3WW5abFl6TWdaM0psWVhSbGNsUm9ZVzRvZFRZMGRtVmpNeXdnZFRZMGRtVmpNeWs3WW5abFl6UWdaM0psWVhSbGNsUm9ZVzRvZFRZMGRtVmpOQ3dnZFRZMGRtVmpOQ2s3WW5abFl6SWdaM0psWVhSbGNsUm9ZVzVGY1hWaGJDaHBOalIyWldNeUxDQnBOalIyWldNeUtUdGlkbVZqTXlCbmNtVmhkR1Z5VkdoaGJrVnhkV0ZzS0drMk5IWmxZek1zSUdrMk5IWmxZek1wTzJKMlpXTTBJR2R5WldGMFpYSlVhR0Z1UlhGMVlXd29hVFkwZG1Wak5Dd2dhVFkwZG1Wak5DazdZblpsWXpJZ1ozSmxZWFJsY2xSb1lXNUZjWFZoYkNoMU5qUjJaV015TENCMU5qUjJaV015S1R0aWRtVmpNeUJuY21WaGRHVnlWR2hoYmtWeGRXRnNLSFUyTkhabFl6TXNJSFUyTkhabFl6TXBPMkoyWldNMElHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b2RUWTBkbVZqTkN3Z2RUWTBkbVZqTkNrN1luWmxZeklnWlhGMVlXd29hVFkwZG1Wak1pd2dhVFkwZG1Wak1pazdZblpsWXpNZ1pYRjFZV3dvYVRZMGRtVmpNeXdnYVRZMGRtVmpNeWs3WW5abFl6UWdaWEYxWVd3b2FUWTBkbVZqTkN3Z2FUWTBkbVZqTkNrN1luWmxZeklnWlhGMVlXd29kVFkwZG1Wak1pd2dkVFkwZG1Wak1pazdZblpsWXpNZ1pYRjFZV3dvZFRZMGRtVmpNeXdnZFRZMGRtVmpNeWs3WW5abFl6UWdaWEYxWVd3b2RUWTBkbVZqTkN3Z2RUWTBkbVZqTkNrN1luWmxZeklnYm05MFJYRjFZV3dvYVRZMGRtVmpNaXdnYVRZMGRtVmpNaWs3WW5abFl6TWdibTkwUlhGMVlXd29hVFkwZG1Wak15d2dhVFkwZG1Wak15azdZblpsWXpRZ2JtOTBSWEYxWVd3b2FUWTBkbVZqTkN3Z2FUWTBkbVZqTkNrN1luWmxZeklnYm05MFJYRjFZV3dvZFRZMGRtVmpNaXdnZFRZMGRtVmpNaWs3WW5abFl6TWdibTkwUlhGMVlXd29kVFkwZG1Wak15d2dkVFkwZG1Wak15azdZblpsWXpRZ2JtOTBSWEYxWVd3b2RUWTBkbVZqTkN3Z2RUWTBkbVZqTkNrN2FXNTBOalJmZENCbWFXNWtURk5DS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnWm1sdVpFeFRRaWhwTmpSMlpXTXlLVHRwTmpSMlpXTXpJR1pwYm1STVUwSW9hVFkwZG1Wak15azdhVFkwZG1Wak5DQm1hVzVrVEZOQ0tHazJOSFpsWXpRcE8ybHVkRFkwWDNRZ1ptbHVaRXhUUWloMWFXNTBOalJmZENrN2FUWTBkbVZqTWlCbWFXNWtURk5DS0hVMk5IWmxZeklwTzJrMk5IWmxZek1nWm1sdVpFeFRRaWgxTmpSMlpXTXpLVHRwTmpSMlpXTTBJR1pwYm1STVUwSW9kVFkwZG1Wak5DazdhVzUwTmpSZmRDQm1hVzVrVFZOQ0tHbHVkRFkwWDNRcE8yazJOSFpsWXpJZ1ptbHVaRTFUUWlocE5qUjJaV015S1R0cE5qUjJaV016SUdacGJtUk5VMElvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0JtYVc1a1RWTkNLR2syTkhabFl6UXBPMmx1ZERZMFgzUWdabWx1WkUxVFFpaDFhVzUwTmpSZmRDazdhVFkwZG1Wak1pQm1hVzVrVFZOQ0tIVTJOSFpsWXpJcE8yazJOSFpsWXpNZ1ptbHVaRTFUUWloMU5qUjJaV016S1R0cE5qUjJaV00wSUdacGJtUk5VMElvZFRZMGRtVmpOQ2s3Q2dCbWJHOWhkQ0J0YVc0ektHWnNiMkYwTENCbWJHOWhkQ3dnWm14dllYUXBPM1psWXpJZ0lHMXBiak1vZG1Wak1pd2dJSFpsWXpJc0lDQjJaV015S1R0MlpXTXpJQ0J0YVc0ektIWmxZek1zSUNCMlpXTXpMQ0FnZG1Wak15azdkbVZqTkNBZ2JXbHVNeWgyWldNMExDQWdkbVZqTkN3Z0lIWmxZelFwTzJsdWRDQWdJRzFwYmpNb2FXNTBMQ0FnSUdsdWRDd2dJQ0JwYm5RcE8ybDJaV015SUcxcGJqTW9hWFpsWXpJc0lHbDJaV015TENCcGRtVmpNaWs3YVhabFl6TWdiV2x1TXlocGRtVmpNeXdnYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCdGFXNHpLR2wyWldNMExDQnBkbVZqTkN3Z2FYWmxZelFwTzNWcGJuUWdJRzFwYmpNb2RXbHVkQ3dnSUhWcGJuUXNJQ0IxYVc1MEtUdDFkbVZqTWlCdGFXNHpLSFYyWldNeUxDQjFkbVZqTWl3Z2RYWmxZeklwTzNWMlpXTXpJRzFwYmpNb2RYWmxZek1zSUhWMlpXTXpMQ0IxZG1Wak15azdkWFpsWXpRZ2JXbHVNeWgxZG1Wak5Dd2dkWFpsWXpRc0lIVjJaV00wS1R0bWJHOWhkQ0J0WVhnektHWnNiMkYwTENCbWJHOWhkQ3dnWm14dllYUXBPM1psWXpJZ0lHMWhlRE1vZG1Wak1pd2dJSFpsWXpJc0lDQjJaV015S1R0MlpXTXpJQ0J0WVhnektIWmxZek1zSUNCMlpXTXpMQ0FnZG1Wak15azdkbVZqTkNBZ2JXRjRNeWgyWldNMExDQWdkbVZqTkN3Z0lIWmxZelFwTzJsdWRDQWdJRzFoZURNb2FXNTBMQ0FnSUdsdWRDd2dJQ0JwYm5RcE8ybDJaV015SUcxaGVETW9hWFpsWXpJc0lHbDJaV015TENCcGRtVmpNaWs3YVhabFl6TWdiV0Y0TXlocGRtVmpNeXdnYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCdFlYZ3pLR2wyWldNMExDQnBkbVZqTkN3Z2FYWmxZelFwTzNWcGJuUWdJRzFoZURNb2RXbHVkQ3dnSUhWcGJuUXNJQ0IxYVc1MEtUdDFkbVZqTWlCdFlYZ3pLSFYyWldNeUxDQjFkbVZqTWl3Z2RYWmxZeklwTzNWMlpXTXpJRzFoZURNb2RYWmxZek1zSUhWMlpXTXpMQ0IxZG1Wak15azdkWFpsWXpRZ2JXRjRNeWgxZG1Wak5Dd2dkWFpsWXpRc0lIVjJaV00wS1R0bWJHOWhkQ0J0YVdRektHWnNiMkYwTENCbWJHOWhkQ3dnWm14dllYUXBPM1psWXpJZ0lHMXBaRE1vZG1Wak1pd2dJSFpsWXpJc0lDQjJaV015S1R0MlpXTXpJQ0J0YVdRektIWmxZek1zSUNCMlpXTXpMQ0FnZG1Wak15azdkbVZqTkNBZ2JXbGtNeWgyWldNMExDQWdkbVZqTkN3Z0lIWmxZelFwTzJsdWRDQWdJRzFwWkRNb2FXNTBMQ0FnSUdsdWRDd2dJQ0JwYm5RcE8ybDJaV015SUcxcFpETW9hWFpsWXpJc0lHbDJaV015TENCcGRtVmpNaWs3YVhabFl6TWdiV2xrTXlocGRtVmpNeXdnYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCdGFXUXpLR2wyWldNMExDQnBkbVZqTkN3Z2FYWmxZelFwTzNWcGJuUWdJRzFwWkRNb2RXbHVkQ3dnSUhWcGJuUXNJQ0IxYVc1MEtUdDFkbVZqTWlCdGFXUXpLSFYyWldNeUxDQjFkbVZqTWl3Z2RYWmxZeklwTzNWMlpXTXpJRzFwWkRNb2RYWmxZek1zSUhWMlpXTXpMQ0IxZG1Wak15azdkWFpsWXpRZ2JXbGtNeWgxZG1Wak5Dd2dkWFpsWXpRc0lIVjJaV00wS1R0bWJHOWhkREUyWDNRZ2JXbHVNeWhtYkc5aGRERTJYM1FzSUdac2IyRjBNVFpmZEN3Z1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV2x1TXlobU1UWjJaV015TENBZ0lHWXhOblpsWXpJc0lDQWdaakUyZG1Wak1pazdaakUyZG1Wak15QWdJRzFwYmpNb1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J0YVc0ektHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5Dd2dJQ0JtTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnYldGNE15aG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2JXRjRNeWhtTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklzSUNBZ1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMWhlRE1vWmpFMmRtVmpNeXdnSUNCbU1UWjJaV016TENBZ0lHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQnRZWGd6S0dZeE5uWmxZelFzSUNBZ1pqRTJkbVZqTkN3Z0lDQm1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdiV2xrTXlobWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDd2dabXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnYldsa015aG1NVFoyWldNeUxDQWdJR1l4Tm5abFl6SXNJQ0FnWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUcxcFpETW9aakUyZG1Wak15d2dJQ0JtTVRaMlpXTXpMQ0FnSUdZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCdGFXUXpLR1l4Tm5abFl6UXNJQ0FnWmpFMmRtVmpOQ3dnSUNCbU1UWjJaV00wS1R0cGJuUXhObDkwSUNBZ2JXbHVNeWhwYm5ReE5sOTBMQ0FnSUdsdWRERTJYM1FzSUNBZ2FXNTBNVFpmZENrN2FURTJkbVZqTWlBZ0lHMXBiak1vYVRFMmRtVmpNaXdnSUNCcE1UWjJaV015TENBZ0lHa3hOblpsWXpJcE8ya3hOblpsWXpNZ0lDQnRhVzR6S0dreE5uWmxZek1zSUNBZ2FURTJkbVZqTXl3Z0lDQnBNVFoyWldNektUdHBNVFoyWldNMElDQWdiV2x1TXlocE1UWjJaV00wTENBZ0lHa3hOblpsWXpRc0lDQWdhVEUyZG1Wak5DazdhVzUwTVRaZmRDQWdJRzFoZURNb2FXNTBNVFpmZEN3Z0lDQnBiblF4Tmw5MExDQWdJR2x1ZERFMlgzUXBPMmt4Tm5abFl6SWdJQ0J0WVhnektHa3hOblpsWXpJc0lDQWdhVEUyZG1Wak1pd2dJQ0JwTVRaMlpXTXlLVHRwTVRaMlpXTXpJQ0FnYldGNE15aHBNVFoyWldNekxDQWdJR2t4Tm5abFl6TXNJQ0FnYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0FnSUcxaGVETW9hVEUyZG1Wak5Dd2dJQ0JwTVRaMlpXTTBMQ0FnSUdreE5uWmxZelFwTzJsdWRERTJYM1FnSUNCdGFXUXpLR2x1ZERFMlgzUXNJQ0FnYVc1ME1UWmZkQ3dnSUNCcGJuUXhObDkwS1R0cE1UWjJaV015SUNBZ2JXbGtNeWhwTVRaMlpXTXlMQ0FnSUdreE5uWmxZeklzSUNBZ2FURTJkbVZqTWlrN2FURTJkbVZqTXlBZ0lHMXBaRE1vYVRFMmRtVmpNeXdnSUNCcE1UWjJaV016TENBZ0lHa3hOblpsWXpNcE8ya3hOblpsWXpRZ0lDQnRhV1F6S0dreE5uWmxZelFzSUNBZ2FURTJkbVZqTkN3Z0lDQnBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQWdiV2x1TXloMWFXNTBNVFpmZEN3Z0lIVnBiblF4Tmw5MExDQWdkV2x1ZERFMlgzUXBPM1V4Tm5abFl6SWdJQ0J0YVc0ektIVXhOblpsWXpJc0lDQWdkVEUyZG1Wak1pd2dJQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJQ0FnYldsdU15aDFNVFoyWldNekxDQWdJSFV4Tm5abFl6TXNJQ0FnZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnSUcxcGJqTW9kVEUyZG1Wak5Dd2dJQ0IxTVRaMlpXTTBMQ0FnSUhVeE5uWmxZelFwTzNWcGJuUXhObDkwSUNCdFlYZ3pLSFZwYm5ReE5sOTBMQ0FnZFdsdWRERTJYM1FzSUNCMWFXNTBNVFpmZENrN2RURTJkbVZqTWlBZ0lHMWhlRE1vZFRFMmRtVmpNaXdnSUNCMU1UWjJaV015TENBZ0lIVXhOblpsWXpJcE8zVXhOblpsWXpNZ0lDQnRZWGd6S0hVeE5uWmxZek1zSUNBZ2RURTJkbVZqTXl3Z0lDQjFNVFoyWldNektUdDFNVFoyWldNMElDQWdiV0Y0TXloMU1UWjJaV00wTENBZ0lIVXhOblpsWXpRc0lDQWdkVEUyZG1Wak5DazdkV2x1ZERFMlgzUWdJRzFwWkRNb2RXbHVkREUyWDNRc0lDQjFhVzUwTVRaZmRDd2dJSFZwYm5ReE5sOTBLVHQxTVRaMlpXTXlJQ0FnYldsa015aDFNVFoyWldNeUxDQWdJSFV4Tm5abFl6SXNJQ0FnZFRFMmRtVmpNaWs3ZFRFMmRtVmpNeUFnSUcxcFpETW9kVEUyZG1Wak15d2dJQ0IxTVRaMlpXTXpMQ0FnSUhVeE5uWmxZek1wTzNVeE5uWmxZelFnSUNCdGFXUXpLSFV4Tm5abFl6UXNJQ0FnZFRFMmRtVmpOQ3dnSUNCMU1UWjJaV00wS1RzS0FIVnBiblFnWVhSdmJXbGpRV1JrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5Rc0lIVnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPeUJwYm5RZ1lYUnZiV2xqUVdSa0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUXNJQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwTzNWcGJuUWdZWFJ2YldsalRXbHVLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblFzSUhWcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE95QnBiblFnWVhSdmJXbGpUV2x1S0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5Rc0lDQnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPM1ZwYm5RZ1lYUnZiV2xqVFdGNEtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUXNJSFZwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwT3lCcGJuUWdZWFJ2YldsalRXRjRLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblFzSUNCcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE8zVnBiblFnWVhSdmJXbGpRVzVrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5Rc0lIVnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPeUJwYm5RZ1lYUnZiV2xqUVc1a0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUXNJQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwTzNWcGJuUWdZWFJ2YldsalQzSWdLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblFzSUhWcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE95QnBiblFnWVhSdmJXbGpUM0lnS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5Rc0lDQnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPM1ZwYm5RZ1lYUnZiV2xqV0c5eUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUXNJSFZwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwT3lCcGJuUWdZWFJ2YldsaldHOXlLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblFzSUNCcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE8zVnBiblFnWVhSdmJXbGpSWGhqYUdGdVoyVW9ZMjlvWlhKbGJuUWdkbTlzWVhScGJHVWdhVzV2ZFhRZ2RXbHVkQ3dnZFdsdWRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN0lHbHVkQ0JoZEc5dGFXTkZlR05vWVc1blpTaGpiMmhsY21WdWRDQjJiMnhoZEdsc1pTQnBibTkxZENBZ2FXNTBMQ0FnYVc1MExDQnBiblFzSUdsdWRDd2dhVzUwS1R0MWFXNTBJR0YwYjIxcFkwTnZiWEJUZDJGd0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUXNJSFZwYm5Rc0lIVnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXNJR2x1ZEN3Z2FXNTBLVHNnYVc1MElHRjBiMjFwWTBOdmJYQlRkMkZ3S0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5Rc0lDQnBiblFzSUNCcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ3dnYVc1MEtUdDFhVzUwSUdGMGIyMXBZMHh2WVdRb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2FXNGdkV2x1ZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3SUdsdWRDQmhkRzl0YVdOTWIyRmtLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1SUNCcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE8zWnZhV1FnWVhSdmJXbGpVM1J2Y21Vb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2IzVjBJSFZwYm5Rc0lIVnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPM1p2YVdRZ1lYUnZiV2xqVTNSdmNtVW9ZMjlvWlhKbGJuUWdkbTlzWVhScGJHVWdiM1YwSUNCcGJuUXNJQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwT3dvQWRXbHVkRFkwWDNRZ1lYUnZiV2xqVFdsdUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZENrN0lHbHVkRFkwWDNRZ1lYUnZiV2xqVFdsdUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZENrN2RXbHVkRFkwWDNRZ1lYUnZiV2xqVFdsdUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3SUdsdWREWTBYM1FnWVhSdmJXbGpUV2x1S0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdkV2x1ZERZMFgzUWdZWFJ2YldsalRXRjRLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalRXRjRLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblEyTkY5MExDQWdhVzUwTmpSZmRDazdkV2x1ZERZMFgzUWdZWFJ2YldsalRXRjRLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN0lHbHVkRFkwWDNRZ1lYUnZiV2xqVFdGNEtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3ZFdsdWREWTBYM1FnWVhSdmJXbGpRVzVrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ2s3SUdsdWREWTBYM1FnWVhSdmJXbGpRVzVrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ2s3ZFdsdWREWTBYM1FnWVhSdmJXbGpRVzVrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalFXNWtLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblEyTkY5MExDQWdhVzUwTmpSZmRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN2RXbHVkRFkwWDNRZ1lYUnZiV2xqVDNJZ0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZENrN0lHbHVkRFkwWDNRZ1lYUnZiV2xqVDNJZ0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZENrN2RXbHVkRFkwWDNRZ1lYUnZiV2xqVDNJZ0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3SUdsdWREWTBYM1FnWVhSdmJXbGpUM0lnS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdkV2x1ZERZMFgzUWdZWFJ2YldsaldHOXlLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDazdJR2x1ZERZMFgzUWdZWFJ2YldsaldHOXlLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblEyTkY5MExDQWdhVzUwTmpSZmRDazdkV2x1ZERZMFgzUWdZWFJ2YldsaldHOXlLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN0lHbHVkRFkwWDNRZ1lYUnZiV2xqV0c5eUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3ZFdsdWREWTBYM1FnWVhSdmJXbGpRV1JrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ2s3SUdsdWREWTBYM1FnWVhSdmJXbGpRV1JrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ2s3ZFdsdWREWTBYM1FnWVhSdmJXbGpRV1JrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalFXUmtLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblEyTkY5MExDQWdhVzUwTmpSZmRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN2RXbHVkRFkwWDNRZ1lYUnZiV2xqUlhoamFHRnVaMlVvWTI5b1pYSmxiblFnZG05c1lYUnBiR1VnYVc1dmRYUWdkV2x1ZERZMFgzUXNJSFZwYm5RMk5GOTBLVHNnYVc1ME5qUmZkQ0JoZEc5dGFXTkZlR05vWVc1blpTaGpiMmhsY21WdWRDQjJiMnhoZEdsc1pTQnBibTkxZENBZ2FXNTBOalJmZEN3Z0lHbHVkRFkwWDNRcE8zVnBiblEyTkY5MElHRjBiMjFwWTBWNFkyaGhibWRsS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalJYaGphR0Z1WjJVb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2FXNXZkWFFnSUdsdWREWTBYM1FzSUNCcGJuUTJORjkwTENCcGJuUXNJR2x1ZEN3Z2FXNTBLVHQxYVc1ME5qUmZkQ0JoZEc5dGFXTkRiMjF3VTNkaGNDaGpiMmhsY21WdWRDQjJiMnhoZEdsc1pTQnBibTkxZENCMWFXNTBOalJmZEN3Z2RXbHVkRFkwWDNRc0lIVnBiblEyTkY5MEtUc2dhVzUwTmpSZmRDQmhkRzl0YVdORGIyMXdVM2RoY0NoamIyaGxjbVZ1ZENCMmIyeGhkR2xzWlNCcGJtOTFkQ0FnYVc1ME5qUmZkQ3dnSUdsdWREWTBYM1FzSUNCcGJuUTJORjkwS1R0MWFXNTBOalJmZENCaGRHOXRhV05EYjIxd1UzZGhjQ2hqYjJobGNtVnVkQ0IyYjJ4aGRHbHNaU0JwYm05MWRDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXNJSFZwYm5RMk5GOTBMQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalEyOXRjRk4zWVhBb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2FXNXZkWFFnSUdsdWREWTBYM1FzSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwTzNWcGJuUTJORjkwSUdGMGIyMXBZMHh2WVdRb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2FXNGdkV2x1ZERZMFgzUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE95QnBiblEyTkY5MElHRjBiMjFwWTB4dllXUW9ZMjlvWlhKbGJuUWdkbTlzWVhScGJHVWdhVzRnSUdsdWREWTBYM1FzSUdsdWRDd2dhVzUwTENCcGJuUXBPM1p2YVdRZ1lYUnZiV2xqVTNSdmNtVW9ZMjlvWlhKbGJuUWdkbTlzWVhScGJHVWdiM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3ZG05cFpDQmhkRzl0YVdOVGRHOXlaU2hqYjJobGNtVnVkQ0IyYjJ4aGRHbHNaU0J2ZFhRZ0lHbHVkRFkwWDNRc0lDQnBiblEyTkY5MExDQnBiblFzSUdsdWRDd2dhVzUwS1RzS0FHbHVkQ0FnSUdac2IyRjBRbWwwYzFSdlNXNTBLR2hwWjJod0lHWnNiMkYwSUhaaGJIVmxLVHRwZG1Wak1pQm1iRzloZEVKcGRITlViMGx1ZENob2FXZG9jQ0IyWldNeUlDQjJZV3gxWlNrN2FYWmxZek1nWm14dllYUkNhWFJ6Vkc5SmJuUW9hR2xuYUhBZ2RtVmpNeUFnZG1Gc2RXVXBPMmwyWldNMElHWnNiMkYwUW1sMGMxUnZTVzUwS0docFoyaHdJSFpsWXpRZ0lIWmhiSFZsS1R0MWFXNTBJQ0JtYkc5aGRFSnBkSE5VYjFWcGJuUW9hR2xuYUhBZ1pteHZZWFFnZG1Gc2RXVXBPM1YyWldNeUlHWnNiMkYwUW1sMGMxUnZWV2x1ZENob2FXZG9jQ0IyWldNeUlDQjJZV3gxWlNrN2RYWmxZek1nWm14dllYUkNhWFJ6Vkc5VmFXNTBLR2hwWjJod0lIWmxZek1nSUhaaGJIVmxLVHQxZG1Wak5DQm1iRzloZEVKcGRITlViMVZwYm5Rb2FHbG5hSEFnZG1Wak5DQWdkbUZzZFdVcE8yWnNiMkYwSUdsdWRFSnBkSE5VYjBac2IyRjBLR2hwWjJod0lHbHVkQ0FnSUhaaGJIVmxLVHQyWldNeUlDQnBiblJDYVhSelZHOUdiRzloZENob2FXZG9jQ0JwZG1Wak1pQjJZV3gxWlNrN2RtVmpNeUFnYVc1MFFtbDBjMVJ2Um14dllYUW9hR2xuYUhBZ2FYWmxZek1nZG1Gc2RXVXBPM1psWXpRZ0lHbHVkRUpwZEhOVWIwWnNiMkYwS0docFoyaHdJR2wyWldNMElIWmhiSFZsS1R0bWJHOWhkQ0IxYVc1MFFtbDBjMVJ2Um14dllYUW9hR2xuYUhBZ2RXbHVkQ0FnZG1Gc2RXVXBPM1psWXpJZ0lIVnBiblJDYVhSelZHOUdiRzloZENob2FXZG9jQ0IxZG1Wak1pQjJZV3gxWlNrN2RtVmpNeUFnZFdsdWRFSnBkSE5VYjBac2IyRjBLR2hwWjJod0lIVjJaV016SUhaaGJIVmxLVHQyWldNMElDQjFhVzUwUW1sMGMxUnZSbXh2WVhRb2FHbG5hSEFnZFhabFl6UWdkbUZzZFdVcE93b0FabXh2WVhRZ0lHWnRZU2htYkc5aGRDd2dJR1pzYjJGMExDQWdabXh2WVhRZ0tUdDJaV015SUNBZ1ptMWhLSFpsWXpJc0lDQWdkbVZqTWl3Z0lDQjJaV015SUNBcE8zWmxZek1nSUNCbWJXRW9kbVZqTXl3Z0lDQjJaV016TENBZ0lIWmxZek1nSUNrN2RtVmpOQ0FnSUdadFlTaDJaV00wTENBZ0lIWmxZelFzSUNBZ2RtVmpOQ0FnS1RzS0FHUnZkV0pzWlNCbWJXRW9aRzkxWW14bExDQmtiM1ZpYkdVc0lHUnZkV0pzWlNrN1pIWmxZeklnSUdadFlTaGtkbVZqTWl3Z0lHUjJaV015TENBZ1pIWmxZeklnS1R0a2RtVmpNeUFnWm0xaEtHUjJaV016TENBZ1pIWmxZek1zSUNCa2RtVmpNeUFwTzJSMlpXTTBJQ0JtYldFb1pIWmxZelFzSUNCa2RtVmpOQ3dnSUdSMlpXTTBJQ2s3Q2dCbWJHOWhkQ0JtY21WNGNDaG9hV2RvY0NCbWJHOWhkQ3dnYjNWMElHaHBaMmh3SUdsdWRDazdkbVZqTWlBZ1puSmxlSEFvYUdsbmFIQWdkbVZqTWl3Z0lHOTFkQ0JvYVdkb2NDQnBkbVZqTWlrN2RtVmpNeUFnWm5KbGVIQW9hR2xuYUhBZ2RtVmpNeXdnSUc5MWRDQm9hV2RvY0NCcGRtVmpNeWs3ZG1Wak5DQWdabkpsZUhBb2FHbG5hSEFnZG1Wak5Dd2dJRzkxZENCb2FXZG9jQ0JwZG1Wak5DazdabXh2WVhRZ2JHUmxlSEFvYUdsbmFIQWdabXh2WVhRc0lHaHBaMmh3SUdsdWRDazdkbVZqTWlBZ2JHUmxlSEFvYUdsbmFIQWdkbVZqTWl3Z0lHaHBaMmh3SUdsMlpXTXlLVHQyWldNeklDQnNaR1Y0Y0Nob2FXZG9jQ0IyWldNekxDQWdhR2xuYUhBZ2FYWmxZek1wTzNabFl6UWdJR3hrWlhod0tHaHBaMmh3SUhabFl6UXNJQ0JvYVdkb2NDQnBkbVZqTkNrN0NnQmtiM1ZpYkdVZ1puSmxlSEFvWkc5MVlteGxMQ0J2ZFhRZ2FXNTBLVHRrZG1Wak1pQWdabkpsZUhBb0lHUjJaV015TENCdmRYUWdhWFpsWXpJcE8yUjJaV016SUNCbWNtVjRjQ2dnWkhabFl6TXNJRzkxZENCcGRtVmpNeWs3WkhabFl6UWdJR1p5Wlhod0tDQmtkbVZqTkN3Z2IzVjBJR2wyWldNMEtUdGtiM1ZpYkdVZ2JHUmxlSEFvWkc5MVlteGxMQ0JwYm5RcE8yUjJaV015SUNCc1pHVjRjQ2dnWkhabFl6SXNJR2wyWldNeUtUdGtkbVZqTXlBZ2JHUmxlSEFvSUdSMlpXTXpMQ0JwZG1Wak15azdaSFpsWXpRZ0lHeGtaWGh3S0NCa2RtVmpOQ3dnYVhabFl6UXBPMlJ2ZFdKc1pTQndZV05yUkc5MVlteGxNbmd6TWloMWRtVmpNaWs3ZFhabFl6SWdkVzV3WVdOclJHOTFZbXhsTW5nek1paGtiM1ZpYkdVcE93b0FhR2xuYUhBZ2RXbHVkQ0J3WVdOclZXNXZjbTB5ZURFMktIWmxZeklwTzNabFl6SWdkVzV3WVdOclZXNXZjbTB5ZURFMktHaHBaMmh3SUhWcGJuUXBPd29BYUdsbmFIQWdkV2x1ZENCd1lXTnJVMjV2Y20weWVERTJLSFpsWXpJcE95QWdJQ0FnSUhabFl6SWdkVzV3WVdOclUyNXZjbTB5ZURFMktHaHBaMmh3SUhWcGJuUXBPMmhwWjJod0lIVnBiblFnY0dGamEwaGhiR1l5ZURFMktIWmxZeklwT3dvQWJXVmthWFZ0Y0NCMlpXTXlJSFZ1Y0dGamEwaGhiR1l5ZURFMktHaHBaMmh3SUhWcGJuUXBPd29BSUNBZ0lDQWdJQ0IyWldNeUlIVnVjR0ZqYTBoaGJHWXllREUyS0docFoyaHdJSFZwYm5RcE93b0FhR2xuYUhBZ2RXbHVkQ0J3WVdOclUyNXZjbTAwZURnb2RtVmpOQ2s3YUdsbmFIQWdkV2x1ZENCd1lXTnJWVzV2Y20wMGVEZ29kbVZqTkNrN0NnQnRaV1JwZFcxd0lIWmxZelFnZFc1d1lXTnJVMjV2Y20wMGVEZ29hR2xuYUhBZ2RXbHVkQ2s3YldWa2FYVnRjQ0IyWldNMElIVnVjR0ZqYTFWdWIzSnROSGc0S0docFoyaHdJSFZwYm5RcE93b0FkbVZqTkNCMWJuQmhZMnRUYm05eWJUUjRPQ2hvYVdkb2NDQjFhVzUwS1R0MlpXTTBJSFZ1Y0dGamExVnViM0p0TkhnNEtHaHBaMmh3SUhWcGJuUXBPd29BYldGME1pQnRZWFJ5YVhoRGIyMXdUWFZzZENodFlYUXlJSGdzSUcxaGRESWdlU2s3YldGME15QnRZWFJ5YVhoRGIyMXdUWFZzZENodFlYUXpJSGdzSUcxaGRETWdlU2s3YldGME5DQnRZWFJ5YVhoRGIyMXdUWFZzZENodFlYUTBJSGdzSUcxaGREUWdlU2s3Q2dCdFlYUXlJQ0FnYjNWMFpYSlFjbTlrZFdOMEtIWmxZeklnWXl3Z2RtVmpNaUJ5S1R0dFlYUXpJQ0FnYjNWMFpYSlFjbTlrZFdOMEtIWmxZek1nWXl3Z2RtVmpNeUJ5S1R0dFlYUTBJQ0FnYjNWMFpYSlFjbTlrZFdOMEtIWmxZelFnWXl3Z2RtVmpOQ0J5S1R0dFlYUXllRE1nYjNWMFpYSlFjbTlrZFdOMEtIWmxZek1nWXl3Z2RtVmpNaUJ5S1R0dFlYUXplRElnYjNWMFpYSlFjbTlrZFdOMEtIWmxZeklnWXl3Z2RtVmpNeUJ5S1R0dFlYUXllRFFnYjNWMFpYSlFjbTlrZFdOMEtIWmxZelFnWXl3Z2RtVmpNaUJ5S1R0dFlYUTBlRElnYjNWMFpYSlFjbTlrZFdOMEtIWmxZeklnWXl3Z2RtVmpOQ0J5S1R0dFlYUXplRFFnYjNWMFpYSlFjbTlrZFdOMEtIWmxZelFnWXl3Z2RtVmpNeUJ5S1R0dFlYUTBlRE1nYjNWMFpYSlFjbTlrZFdOMEtIWmxZek1nWXl3Z2RtVmpOQ0J5S1R0dFlYUXlJQ0FnZEhKaGJuTndiM05sS0cxaGRESWdJQ0J0S1R0dFlYUXpJQ0FnZEhKaGJuTndiM05sS0cxaGRETWdJQ0J0S1R0dFlYUTBJQ0FnZEhKaGJuTndiM05sS0cxaGREUWdJQ0J0S1R0dFlYUXllRE1nZEhKaGJuTndiM05sS0cxaGRETjRNaUJ0S1R0dFlYUXplRElnZEhKaGJuTndiM05sS0cxaGRESjRNeUJ0S1R0dFlYUXllRFFnZEhKaGJuTndiM05sS0cxaGREUjRNaUJ0S1R0dFlYUTBlRElnZEhKaGJuTndiM05sS0cxaGRESjROQ0J0S1R0dFlYUXplRFFnZEhKaGJuTndiM05sS0cxaGREUjRNeUJ0S1R0dFlYUTBlRE1nZEhKaGJuTndiM05sS0cxaGRETjROQ0J0S1R0dFlYUXllRE1nYldGMGNtbDRRMjl0Y0UxMWJIUW9iV0YwTW5nekxDQnRZWFF5ZURNcE8yMWhkREo0TkNCdFlYUnlhWGhEYjIxd1RYVnNkQ2h0WVhReWVEUXNJRzFoZERKNE5DazdiV0YwTTNneUlHMWhkSEpwZUVOdmJYQk5kV3gwS0cxaGRETjRNaXdnYldGME0zZ3lLVHR0WVhRemVEUWdiV0YwY21sNFEyOXRjRTExYkhRb2JXRjBNM2cwTENCdFlYUXplRFFwTzIxaGREUjRNaUJ0WVhSeWFYaERiMjF3VFhWc2RDaHRZWFEwZURJc0lHMWhkRFI0TWlrN2JXRjBOSGd6SUcxaGRISnBlRU52YlhCTmRXeDBLRzFoZERSNE15d2diV0YwTkhnektUc0tBR1pzYjJGMElHUmxkR1Z5YldsdVlXNTBLRzFoZERJZ2JTazdabXh2WVhRZ1pHVjBaWEp0YVc1aGJuUW9iV0YwTXlCdEtUdG1iRzloZENCa1pYUmxjbTFwYm1GdWRDaHRZWFEwSUcwcE8yMWhkRElnYVc1MlpYSnpaU2h0WVhReUlHMHBPMjFoZERNZ2FXNTJaWEp6WlNodFlYUXpJRzBwTzIxaGREUWdhVzUyWlhKelpTaHRZWFEwSUcwcE93b0FkbVZqTkNCMFpYaDBkWEpsTWtRb2MyRnRjR3hsY2pKRUxDQjJaV015S1R0MlpXTTBJSFJsZUhSMWNtVXlSRkJ5YjJvb2MyRnRjR3hsY2pKRUxDQjJaV016S1R0MlpXTTBJSFJsZUhSMWNtVXlSRkJ5YjJvb2MyRnRjR3hsY2pKRUxDQjJaV00wS1R0MlpXTTBJSFJsZUhSMWNtVXpSQ2h6WVcxd2JHVnlNMFFzSUhabFl6TXBPM1psWXpRZ2RHVjRkSFZ5WlRORVVISnZhaWh6WVcxd2JHVnlNMFFzSUhabFl6UXBPM1psWXpRZ2RHVjRkSFZ5WlVOMVltVW9jMkZ0Y0d4bGNrTjFZbVVzSUhabFl6TXBPd29BZG1Wak5DQjBaWGgwZFhKbE1VUW9jMkZ0Y0d4bGNqRkVMQ0JtYkc5aGRDazdkbVZqTkNCMFpYaDBkWEpsTVVSUWNtOXFLSE5oYlhCc1pYSXhSQ3dnZG1Wak1pazdkbVZqTkNCMFpYaDBkWEpsTVVSUWNtOXFLSE5oYlhCc1pYSXhSQ3dnZG1Wak5DazdkbVZqTkNCemFHRmtiM2N4UkNoellXMXdiR1Z5TVVSVGFHRmtiM2NzSUhabFl6TXBPM1psWXpRZ2MyaGhaRzkzTWtRb2MyRnRjR3hsY2pKRVUyaGhaRzkzTENCMlpXTXpLVHQyWldNMElITm9ZV1J2ZHpGRVVISnZhaWh6WVcxd2JHVnlNVVJUYUdGa2IzY3NJSFpsWXpRcE8zWmxZelFnYzJoaFpHOTNNa1JRY205cUtITmhiWEJzWlhJeVJGTm9ZV1J2ZHl3Z2RtVmpOQ2s3ZG1Wak5DQjBaWGgwZFhKbE1rUlNaV04wS0hOaGJYQnNaWEl5UkZKbFkzUXNJSFpsWXpJcE8zWmxZelFnZEdWNGRIVnlaVEpFVW1WamRGQnliMm9vYzJGdGNHeGxjakpFVW1WamRDd2dkbVZqTXlrN2RtVmpOQ0IwWlhoMGRYSmxNa1JTWldOMFVISnZhaWh6WVcxd2JHVnlNa1JTWldOMExDQjJaV00wS1R0MlpXTTBJSE5vWVdSdmR6SkVVbVZqZENoellXMXdiR1Z5TWtSU1pXTjBVMmhoWkc5M0xDQjJaV016S1R0MlpXTTBJSE5vWVdSdmR6SkVVbVZqZEZCeWIyb29jMkZ0Y0d4bGNqSkVVbVZqZEZOb1lXUnZkeXdnZG1Wak5DazdDZ0IyWldNMElIUmxlSFIxY21VeVJDaHpZVzF3YkdWeVJYaDBaWEp1WVd4UFJWTXNJSFpsWXpJZ1kyOXZjbVFwTzNabFl6UWdkR1Y0ZEhWeVpUSkVVSEp2YWloellXMXdiR1Z5UlhoMFpYSnVZV3hQUlZNc0lIWmxZek1wTzNabFl6UWdkR1Y0ZEhWeVpUSkVVSEp2YWloellXMXdiR1Z5UlhoMFpYSnVZV3hQUlZNc0lIWmxZelFwT3dvQWFHbG5hSEFnYVhabFl6SWdkR1Y0ZEhWeVpWTnBlbVVvYzJGdGNHeGxja1Y0ZEdWeWJtRnNUMFZUTENCcGJuUWdiRzlrS1R0MlpXTTBJSFJsZUhSMWNtVW9jMkZ0Y0d4bGNrVjRkR1Z5Ym1Gc1QwVlRMQ0IyWldNeUtUdDJaV00wSUhSbGVIUjFjbVVvYzJGdGNHeGxja1Y0ZEdWeWJtRnNUMFZUTENCMlpXTXlMQ0JtYkc5aGRDQmlhV0Z6S1R0MlpXTTBJSFJsZUhSMWNtVlFjbTlxS0hOaGJYQnNaWEpGZUhSbGNtNWhiRTlGVXl3Z2RtVmpNeWs3ZG1Wak5DQjBaWGgwZFhKbFVISnZhaWh6WVcxd2JHVnlSWGgwWlhKdVlXeFBSVk1zSUhabFl6TXNJR1pzYjJGMElHSnBZWE1wTzNabFl6UWdkR1Y0ZEhWeVpWQnliMm9vYzJGdGNHeGxja1Y0ZEdWeWJtRnNUMFZUTENCMlpXTTBLVHQyWldNMElIUmxlSFIxY21WUWNtOXFLSE5oYlhCc1pYSkZlSFJsY201aGJFOUZVeXdnZG1Wak5Dd2dabXh2WVhRZ1ltbGhjeWs3ZG1Wak5DQjBaWGhsYkVabGRHTm9LSE5oYlhCc1pYSkZlSFJsY201aGJFOUZVeXdnYVhabFl6SXNJR2x1ZENCc2IyUXBPd29BYUdsbmFIQWdhWFpsWXpJZ2RHVjRkSFZ5WlZOcGVtVW9YMTl6WVcxd2JHVnlSWGgwWlhKdVlXd3lSRmt5V1VWWVZDd2dhVzUwSUd4dlpDazdkbVZqTkNCMFpYaDBkWEpsS0Y5ZmMyRnRjR3hsY2tWNGRHVnlibUZzTWtSWk1sbEZXRlFzSUhabFl6SXBPM1psWXpRZ2RHVjRkSFZ5WlNoZlgzTmhiWEJzWlhKRmVIUmxjbTVoYkRKRVdUSlpSVmhVTENCMlpXTXlMQ0JtYkc5aGRDQmlhV0Z6S1R0MlpXTTBJSFJsZUhSMWNtVlFjbTlxS0Y5ZmMyRnRjR3hsY2tWNGRHVnlibUZzTWtSWk1sbEZXRlFzSUhabFl6TXBPM1psWXpRZ2RHVjRkSFZ5WlZCeWIyb29YMTl6WVcxd2JHVnlSWGgwWlhKdVlXd3lSRmt5V1VWWVZDd2dkbVZqTXl3Z1pteHZZWFFnWW1saGN5azdkbVZqTkNCMFpYaDBkWEpsVUhKdmFpaGZYM05oYlhCc1pYSkZlSFJsY201aGJESkVXVEpaUlZoVUxDQjJaV00wS1R0MlpXTTBJSFJsZUhSMWNtVlFjbTlxS0Y5ZmMyRnRjR3hsY2tWNGRHVnlibUZzTWtSWk1sbEZXRlFzSUhabFl6UXNJR1pzYjJGMElHSnBZWE1wTzNabFl6UWdkR1Y0Wld4R1pYUmphQ2hmWDNOaGJYQnNaWEpGZUhSbGNtNWhiREpFV1RKWlJWaFVJSE5oYlhCc1pYSXNJR2wyWldNeUxDQnBiblFnYkc5a0tUc0tBSFpsWXpRZ2RHVjRkSFZ5WlRKRVIzSmhaRVZZVkNoellXMXdiR1Z5TWtRc0lIWmxZeklzSUhabFl6SXNJSFpsWXpJcE8zWmxZelFnZEdWNGRIVnlaVEpFVUhKdmFrZHlZV1JGV0ZRb2MyRnRjR3hsY2pKRUxDQjJaV016TENCMlpXTXlMQ0IyWldNeUtUdDJaV00wSUhSbGVIUjFjbVV5UkZCeWIycEhjbUZrUlZoVUtITmhiWEJzWlhJeVJDd2dkbVZqTkN3Z2RtVmpNaXdnZG1Wak1pazdkbVZqTkNCMFpYaDBkWEpsUTNWaVpVZHlZV1JGV0ZRb2MyRnRjR3hsY2tOMVltVXNJSFpsWXpNc0lIWmxZek1zSUhabFl6TXBPMlpzYjJGMElITm9ZV1J2ZHpKRVJWaFVLSE5oYlhCc1pYSXlSRk5vWVdSdmR5d2dkbVZqTXlrN1pteHZZWFFnYzJoaFpHOTNNa1JRY205cVJWaFVLSE5oYlhCc1pYSXlSRk5vWVdSdmR5d2dkbVZqTkNrN0NnQm1iRzloZENCdWIybHpaVEVvWm14dllYUWdlQ2s3Wm14dllYUWdibTlwYzJVeEtIWmxZeklnSUhncE8yWnNiMkYwSUc1dmFYTmxNU2gyWldNeklDQjRLVHRtYkc5aGRDQnViMmx6WlRFb2RtVmpOQ0FnZUNrN2RtVmpNaUJ1YjJselpUSW9abXh2WVhRZ2VDazdkbVZqTWlCdWIybHpaVElvZG1Wak1pQWdlQ2s3ZG1Wak1pQnViMmx6WlRJb2RtVmpNeUFnZUNrN2RtVmpNaUJ1YjJselpUSW9kbVZqTkNBZ2VDazdkbVZqTXlCdWIybHpaVE1vWm14dllYUWdlQ2s3ZG1Wak15QnViMmx6WlRNb2RtVmpNaUFnZUNrN2RtVmpNeUJ1YjJselpUTW9kbVZqTXlBZ2VDazdkbVZqTXlCdWIybHpaVE1vZG1Wak5DQWdlQ2s3ZG1Wak5DQnViMmx6WlRRb1pteHZZWFFnZUNrN2RtVmpOQ0J1YjJselpUUW9kbVZqTWlBZ2VDazdkbVZqTkNCdWIybHpaVFFvZG1Wak15QWdlQ2s3ZG1Wak5DQnViMmx6WlRRb2RtVmpOQ0FnZUNrN0NnQjFhVzUwSUdGMGIyMXBZME52ZFc1MFpYSkpibU55WlcxbGJuUW9ZWFJ2YldsalgzVnBiblFwTzNWcGJuUWdZWFJ2YldsalEyOTFiblJsY2tSbFkzSmxiV1Z1ZENoaGRHOXRhV05mZFdsdWRDazdkV2x1ZENCaGRHOXRhV05EYjNWdWRHVnlLR0YwYjIxcFkxOTFhVzUwS1RzS0FIVnBiblFnWVhSdmJXbGpRMjkxYm5SbGNrRmtaQ2hoZEc5dGFXTmZkV2x1ZEN3Z2RXbHVkQ2s3ZFdsdWRDQmhkRzl0YVdORGIzVnVkR1Z5VTNWaWRISmhZM1FvWVhSdmJXbGpYM1ZwYm5Rc0lIVnBiblFwTzNWcGJuUWdZWFJ2YldsalEyOTFiblJsY2sxcGJpaGhkRzl0YVdOZmRXbHVkQ3dnZFdsdWRDazdkV2x1ZENCaGRHOXRhV05EYjNWdWRHVnlUV0Y0S0dGMGIyMXBZMTkxYVc1MExDQjFhVzUwS1R0MWFXNTBJR0YwYjIxcFkwTnZkVzUwWlhKQmJtUW9ZWFJ2YldsalgzVnBiblFzSUhWcGJuUXBPM1ZwYm5RZ1lYUnZiV2xqUTI5MWJuUmxjazl5S0dGMGIyMXBZMTkxYVc1MExDQjFhVzUwS1R0MWFXNTBJR0YwYjIxcFkwTnZkVzUwWlhKWWIzSW9ZWFJ2YldsalgzVnBiblFzSUhWcGJuUXBPM1ZwYm5RZ1lYUnZiV2xqUTI5MWJuUmxja1Y0WTJoaGJtZGxLR0YwYjIxcFkxOTFhVzUwTENCMWFXNTBLVHQxYVc1MElHRjBiMjFwWTBOdmRXNTBaWEpEYjIxd1UzZGhjQ2hoZEc5dGFXTmZkV2x1ZEN3Z2RXbHVkQ3dnZFdsdWRDazdDZ0FnSUdsdWRDQmlhWFJtYVdWc1pFVjRkSEpoWTNRb0lDQnBiblFzSUdsdWRDd2dhVzUwS1R0cGRtVmpNaUJpYVhSbWFXVnNaRVY0ZEhKaFkzUW9hWFpsWXpJc0lHbHVkQ3dnYVc1MEtUdHBkbVZqTXlCaWFYUm1hV1ZzWkVWNGRISmhZM1FvYVhabFl6TXNJR2x1ZEN3Z2FXNTBLVHRwZG1Wak5DQmlhWFJtYVdWc1pFVjRkSEpoWTNRb2FYWmxZelFzSUdsdWRDd2dhVzUwS1RzZ2RXbHVkQ0JpYVhSbWFXVnNaRVY0ZEhKaFkzUW9JSFZwYm5Rc0lHbHVkQ3dnYVc1MEtUdDFkbVZqTWlCaWFYUm1hV1ZzWkVWNGRISmhZM1FvZFhabFl6SXNJR2x1ZEN3Z2FXNTBLVHQxZG1Wak15QmlhWFJtYVdWc1pFVjRkSEpoWTNRb2RYWmxZek1zSUdsdWRDd2dhVzUwS1R0MWRtVmpOQ0JpYVhSbWFXVnNaRVY0ZEhKaFkzUW9kWFpsWXpRc0lHbHVkQ3dnYVc1MEtUc2dJR2x1ZENCaWFYUm1hV1ZzWkVsdWMyVnlkQ2dnSUdsdWRDQmlZWE5sTENBZ0lHbHVkQ3dnYVc1MExDQnBiblFwTzJsMlpXTXlJR0pwZEdacFpXeGtTVzV6WlhKMEtHbDJaV015SUdKaGMyVXNJR2wyWldNeUxDQnBiblFzSUdsdWRDazdhWFpsWXpNZ1ltbDBabWxsYkdSSmJuTmxjblFvYVhabFl6TWdZbUZ6WlN3Z2FYWmxZek1zSUdsdWRDd2dhVzUwS1R0cGRtVmpOQ0JpYVhSbWFXVnNaRWx1YzJWeWRDaHBkbVZqTkNCaVlYTmxMQ0JwZG1Wak5Dd2dhVzUwTENCcGJuUXBPeUIxYVc1MElHSnBkR1pwWld4a1NXNXpaWEowS0NCMWFXNTBJR0poYzJVc0lDQjFhVzUwTENCcGJuUXNJR2x1ZENrN2RYWmxZeklnWW1sMFptbGxiR1JKYm5ObGNuUW9kWFpsWXpJZ1ltRnpaU3dnZFhabFl6SXNJR2x1ZEN3Z2FXNTBLVHQxZG1Wak15QmlhWFJtYVdWc1pFbHVjMlZ5ZENoMWRtVmpNeUJpWVhObExDQjFkbVZqTXl3Z2FXNTBMQ0JwYm5RcE8zVjJaV00wSUdKcGRHWnBaV3hrU1c1elpYSjBLSFYyWldNMElHSmhjMlVzSUhWMlpXTTBMQ0JwYm5Rc0lHbHVkQ2s3Q2dBZ0lHbHVkQ0JtYVc1a1RGTkNLQ0FnYVc1MEtUdHBkbVZqTWlCbWFXNWtURk5DS0dsMlpXTXlLVHRwZG1Wak15Qm1hVzVrVEZOQ0tHbDJaV016S1R0cGRtVmpOQ0JtYVc1a1RGTkNLR2wyWldNMEtUc2dJR2x1ZENCbWFXNWtURk5DS0NCMWFXNTBLVHRwZG1Wak1pQm1hVzVrVEZOQ0tIVjJaV015S1R0cGRtVmpNeUJtYVc1a1RGTkNLSFYyWldNektUdHBkbVZqTkNCbWFXNWtURk5DS0hWMlpXTTBLVHNLQUd4dmQzQWdJQ0JwYm5RZ1ptbHVaRXhUUWlnZ0lHbHVkQ2s3Ykc5M2NDQnBkbVZqTWlCbWFXNWtURk5DS0dsMlpXTXlLVHRzYjNkd0lHbDJaV016SUdacGJtUk1VMElvYVhabFl6TXBPMnh2ZDNBZ2FYWmxZelFnWm1sdVpFeFRRaWhwZG1Wak5DazdiRzkzY0NBZ0lHbHVkQ0JtYVc1a1RGTkNLQ0IxYVc1MEtUdHNiM2R3SUdsMlpXTXlJR1pwYm1STVUwSW9kWFpsWXpJcE8yeHZkM0FnYVhabFl6TWdabWx1WkV4VFFpaDFkbVZqTXlrN2JHOTNjQ0JwZG1Wak5DQm1hVzVrVEZOQ0tIVjJaV00wS1RzS0FDQWdhVzUwSUdKcGRFTnZkVzUwS0NBZ2FXNTBLVHRwZG1Wak1pQmlhWFJEYjNWdWRDaHBkbVZqTWlrN2FYWmxZek1nWW1sMFEyOTFiblFvYVhabFl6TXBPMmwyWldNMElHSnBkRU52ZFc1MEtHbDJaV00wS1RzZ0lHbHVkQ0JpYVhSRGIzVnVkQ2dnZFdsdWRDazdhWFpsWXpJZ1ltbDBRMjkxYm5Rb2RYWmxZeklwTzJsMlpXTXpJR0pwZEVOdmRXNTBLSFYyWldNektUdHBkbVZqTkNCaWFYUkRiM1Z1ZENoMWRtVmpOQ2s3SUNCcGJuUWdabWx1WkUxVFFpaG9hV2RvY0NBZ0lHbHVkQ2s3YVhabFl6SWdabWx1WkUxVFFpaG9hV2RvY0NCcGRtVmpNaWs3YVhabFl6TWdabWx1WkUxVFFpaG9hV2RvY0NCcGRtVmpNeWs3YVhabFl6UWdabWx1WkUxVFFpaG9hV2RvY0NCcGRtVmpOQ2s3SUNCcGJuUWdabWx1WkUxVFFpaG9hV2RvY0NBZ2RXbHVkQ2s3YVhabFl6SWdabWx1WkUxVFFpaG9hV2RvY0NCMWRtVmpNaWs3YVhabFl6TWdabWx1WkUxVFFpaG9hV2RvY0NCMWRtVmpNeWs3YVhabFl6UWdabWx1WkUxVFFpaG9hV2RvY0NCMWRtVmpOQ2s3Q2dBZ2RXbHVkQ0IxWVdSa1EyRnljbmtvYUdsbmFIQWdJSFZwYm5Rc0lHaHBaMmh3SUNCMWFXNTBMQ0J2ZFhRZ2JHOTNjQ0FnZFdsdWRDQmpZWEp5ZVNrN2RYWmxZeklnZFdGa1pFTmhjbko1S0docFoyaHdJSFYyWldNeUxDQm9hV2RvY0NCMWRtVmpNaXdnYjNWMElHeHZkM0FnZFhabFl6SWdZMkZ5Y25rcE8zVjJaV016SUhWaFpHUkRZWEp5ZVNob2FXZG9jQ0IxZG1Wak15d2dhR2xuYUhBZ2RYWmxZek1zSUc5MWRDQnNiM2R3SUhWMlpXTXpJR05oY25KNUtUdDFkbVZqTkNCMVlXUmtRMkZ5Y25rb2FHbG5hSEFnZFhabFl6UXNJR2hwWjJod0lIVjJaV00wTENCdmRYUWdiRzkzY0NCMWRtVmpOQ0JqWVhKeWVTazdJSFZwYm5RZ2RYTjFZa0p2Y25KdmR5aG9hV2RvY0NBZ2RXbHVkQ3dnYUdsbmFIQWdJSFZwYm5Rc0lHOTFkQ0JzYjNkd0lDQjFhVzUwSUdKdmNuSnZkeWs3ZFhabFl6SWdkWE4xWWtKdmNuSnZkeWhvYVdkb2NDQjFkbVZqTWl3Z2FHbG5hSEFnZFhabFl6SXNJRzkxZENCc2IzZHdJSFYyWldNeUlHSnZjbkp2ZHlrN2RYWmxZek1nZFhOMVlrSnZjbkp2ZHlob2FXZG9jQ0IxZG1Wak15d2dhR2xuYUhBZ2RYWmxZek1zSUc5MWRDQnNiM2R3SUhWMlpXTXpJR0p2Y25KdmR5azdkWFpsWXpRZ2RYTjFZa0p2Y25KdmR5aG9hV2RvY0NCMWRtVmpOQ3dnYUdsbmFIQWdkWFpsWXpRc0lHOTFkQ0JzYjNkd0lIVjJaV00wSUdKdmNuSnZkeWs3ZG05cFpDQjFiWFZzUlhoMFpXNWtaV1FvYUdsbmFIQWdJSFZwYm5Rc0lHaHBaMmh3SUNCMWFXNTBMQ0J2ZFhRZ2FHbG5hSEFnSUhWcGJuUXNJRzkxZENCb2FXZG9jQ0FnZFdsdWRDQnNjMklwTzNadmFXUWdkVzExYkVWNGRHVnVaR1ZrS0docFoyaHdJSFYyWldNeUxDQm9hV2RvY0NCMWRtVmpNaXdnYjNWMElHaHBaMmh3SUhWMlpXTXlMQ0J2ZFhRZ2FHbG5hSEFnZFhabFl6SWdiSE5pS1R0MmIybGtJSFZ0ZFd4RmVIUmxibVJsWkNob2FXZG9jQ0IxZG1Wak15d2dhR2xuYUhBZ2RYWmxZek1zSUc5MWRDQm9hV2RvY0NCMWRtVmpNeXdnYjNWMElHaHBaMmh3SUhWMlpXTXpJR3h6WWlrN2RtOXBaQ0IxYlhWc1JYaDBaVzVrWldRb2FHbG5hSEFnZFhabFl6UXNJR2hwWjJod0lIVjJaV00wTENCdmRYUWdhR2xuYUhBZ2RYWmxZelFzSUc5MWRDQm9hV2RvY0NCMWRtVmpOQ0JzYzJJcE8zWnZhV1FnYVcxMWJFVjRkR1Z1WkdWa0tHaHBaMmh3SUNBZ2FXNTBMQ0JvYVdkb2NDQWdJR2x1ZEN3Z2IzVjBJR2hwWjJod0lDQWdhVzUwTENCdmRYUWdhR2xuYUhBZ0lDQnBiblFnYkhOaUtUdDJiMmxrSUdsdGRXeEZlSFJsYm1SbFpDaG9hV2RvY0NCcGRtVmpNaXdnYUdsbmFIQWdhWFpsWXpJc0lHOTFkQ0JvYVdkb2NDQnBkbVZqTWl3Z2IzVjBJR2hwWjJod0lHbDJaV015SUd4ellpazdkbTlwWkNCcGJYVnNSWGgwWlc1a1pXUW9hR2xuYUhBZ2FYWmxZek1zSUdocFoyaHdJR2wyWldNekxDQnZkWFFnYUdsbmFIQWdhWFpsWXpNc0lHOTFkQ0JvYVdkb2NDQnBkbVZqTXlCc2MySXBPM1p2YVdRZ2FXMTFiRVY0ZEdWdVpHVmtLR2hwWjJod0lHbDJaV00wTENCb2FXZG9jQ0JwZG1Wak5Dd2diM1YwSUdocFoyaHdJR2wyWldNMExDQnZkWFFnYUdsbmFIQWdhWFpsWXpRZ2JITmlLVHNnSUdsdWRDQmlhWFJtYVdWc1pGSmxkbVZ5YzJVb2FHbG5hSEFnSUNCcGJuUXBPMmwyWldNeUlHSnBkR1pwWld4a1VtVjJaWEp6WlNob2FXZG9jQ0JwZG1Wak1pazdhWFpsWXpNZ1ltbDBabWxsYkdSU1pYWmxjbk5sS0docFoyaHdJR2wyWldNektUdHBkbVZqTkNCaWFYUm1hV1ZzWkZKbGRtVnljMlVvYUdsbmFIQWdhWFpsWXpRcE95QjFhVzUwSUdKcGRHWnBaV3hrVW1WMlpYSnpaU2hvYVdkb2NDQWdkV2x1ZENrN2RYWmxZeklnWW1sMFptbGxiR1JTWlhabGNuTmxLR2hwWjJod0lIVjJaV015S1R0MWRtVmpNeUJpYVhSbWFXVnNaRkpsZG1WeWMyVW9hR2xuYUhBZ2RYWmxZek1wTzNWMlpXTTBJR0pwZEdacFpXeGtVbVYyWlhKelpTaG9hV2RvY0NCMWRtVmpOQ2s3Q2dCc2IzZHdJQ0FnYVc1MElHSnBkRU52ZFc1MEtDQWdhVzUwS1R0c2IzZHdJR2wyWldNeUlHSnBkRU52ZFc1MEtHbDJaV015S1R0c2IzZHdJR2wyWldNeklHSnBkRU52ZFc1MEtHbDJaV016S1R0c2IzZHdJR2wyWldNMElHSnBkRU52ZFc1MEtHbDJaV00wS1R0c2IzZHdJQ0FnYVc1MElHSnBkRU52ZFc1MEtDQjFhVzUwS1R0c2IzZHdJR2wyWldNeUlHSnBkRU52ZFc1MEtIVjJaV015S1R0c2IzZHdJR2wyWldNeklHSnBkRU52ZFc1MEtIVjJaV016S1R0c2IzZHdJR2wyWldNMElHSnBkRU52ZFc1MEtIVjJaV00wS1R0c2IzZHdJQ0FnYVc1MElHWnBibVJOVTBJb2FHbG5hSEFnSUNCcGJuUXBPMnh2ZDNBZ2FYWmxZeklnWm1sdVpFMVRRaWhvYVdkb2NDQnBkbVZqTWlrN2JHOTNjQ0JwZG1Wak15Qm1hVzVrVFZOQ0tHaHBaMmh3SUdsMlpXTXpLVHRzYjNkd0lHbDJaV00wSUdacGJtUk5VMElvYUdsbmFIQWdhWFpsWXpRcE8yeHZkM0FnSUNCcGJuUWdabWx1WkUxVFFpaG9hV2RvY0NBZ2RXbHVkQ2s3Ykc5M2NDQnBkbVZqTWlCbWFXNWtUVk5DS0docFoyaHdJSFYyWldNeUtUdHNiM2R3SUdsMlpXTXpJR1pwYm1STlUwSW9hR2xuYUhBZ2RYWmxZek1wTzJ4dmQzQWdhWFpsWXpRZ1ptbHVaRTFUUWlob2FXZG9jQ0IxZG1Wak5DazdDZ0IxYVc1ME5qUmZkQ0JpWVd4c2IzUkJVa0lvWW05dmJDazdabXh2WVhRZ2NtVmhaRWx1ZG05allYUnBiMjVCVWtJb1pteHZZWFFzSUhWcGJuUXBPM1psWXpJZ0lISmxZV1JKYm5adlkyRjBhVzl1UVZKQ0tIWmxZeklzSUNCMWFXNTBLVHQyWldNeklDQnlaV0ZrU1c1MmIyTmhkR2x2YmtGU1FpaDJaV016TENBZ2RXbHVkQ2s3ZG1Wak5DQWdjbVZoWkVsdWRtOWpZWFJwYjI1QlVrSW9kbVZqTkN3Z0lIVnBiblFwTzJsdWRDQWdJSEpsWVdSSmJuWnZZMkYwYVc5dVFWSkNLR2x1ZEN3Z0lDQjFhVzUwS1R0cGRtVmpNaUJ5WldGa1NXNTJiMk5oZEdsdmJrRlNRaWhwZG1Wak1pd2dkV2x1ZENrN2FYWmxZek1nY21WaFpFbHVkbTlqWVhScGIyNUJVa0lvYVhabFl6TXNJSFZwYm5RcE8ybDJaV00wSUhKbFlXUkpiblp2WTJGMGFXOXVRVkpDS0dsMlpXTTBMQ0IxYVc1MEtUdDFhVzUwSUNCeVpXRmtTVzUyYjJOaGRHbHZia0ZTUWloMWFXNTBMQ0FnZFdsdWRDazdkWFpsWXpJZ2NtVmhaRWx1ZG05allYUnBiMjVCVWtJb2RYWmxZeklzSUhWcGJuUXBPM1YyWldNeklISmxZV1JKYm5adlkyRjBhVzl1UVZKQ0tIVjJaV016TENCMWFXNTBLVHQxZG1Wak5DQnlaV0ZrU1c1MmIyTmhkR2x2YmtGU1FpaDFkbVZqTkN3Z2RXbHVkQ2s3Wm14dllYUWdjbVZoWkVacGNuTjBTVzUyYjJOaGRHbHZia0ZTUWlobWJHOWhkQ2s3ZG1Wak1pQWdjbVZoWkVacGNuTjBTVzUyYjJOaGRHbHZia0ZTUWloMlpXTXlLVHQyWldNeklDQnlaV0ZrUm1seWMzUkpiblp2WTJGMGFXOXVRVkpDS0habFl6TXBPM1psWXpRZ0lISmxZV1JHYVhKemRFbHVkbTlqWVhScGIyNUJVa0lvZG1Wak5DazdhVzUwSUNBZ2NtVmhaRVpwY25OMFNXNTJiMk5oZEdsdmJrRlNRaWhwYm5RcE8ybDJaV015SUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI1QlVrSW9hWFpsWXpJcE8ybDJaV016SUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI1QlVrSW9hWFpsWXpNcE8ybDJaV00wSUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI1QlVrSW9hWFpsWXpRcE8zVnBiblFnSUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI1QlVrSW9kV2x1ZENrN2RYWmxZeklnY21WaFpFWnBjbk4wU1c1MmIyTmhkR2x2YmtGU1FpaDFkbVZqTWlrN2RYWmxZek1nY21WaFpFWnBjbk4wU1c1MmIyTmhkR2x2YmtGU1FpaDFkbVZqTXlrN2RYWmxZelFnY21WaFpFWnBjbk4wU1c1MmIyTmhkR2x2YmtGU1FpaDFkbVZqTkNrN0NnQmliMjlzSUdGdWVVbHVkbTlqWVhScGIyNUJVa0lvWW05dmJDazdZbTl2YkNCaGJHeEpiblp2WTJGMGFXOXVjMEZTUWloaWIyOXNLVHRpYjI5c0lHRnNiRWx1ZG05allYUnBiMjV6UlhGMVlXeEJVa0lvWW05dmJDazdDZ0IyYjJsa0lITjFZbWR5YjNWd1FtRnljbWxsY2lncE8zWnZhV1FnYzNWaVozSnZkWEJOWlcxdmNubENZWEp5YVdWeUtDazdkbTlwWkNCemRXSm5jbTkxY0UxbGJXOXllVUpoY25KcFpYSkNkV1ptWlhJb0tUdDJiMmxrSUhOMVltZHliM1Z3VFdWdGIzSjVRbUZ5Y21sbGNrbHRZV2RsS0NrN1ltOXZiQ0J6ZFdKbmNtOTFjRVZzWldOMEtDazdZbTl2YkNBZ0lITjFZbWR5YjNWd1FXeHNLR0p2YjJ3cE93cGliMjlzSUNBZ2MzVmlaM0p2ZFhCQmJua29ZbTl2YkNrN0NuVjJaV00wSUNCemRXSm5jbTkxY0VKaGJHeHZkQ2hpYjI5c0tUc0tZbTl2YkNBZ0lITjFZbWR5YjNWd1NXNTJaWEp6WlVKaGJHeHZkQ2gxZG1Wak5DazdDbUp2YjJ3Z0lDQnpkV0puY205MWNFSmhiR3h2ZEVKcGRFVjRkSEpoWTNRb2RYWmxZelFzSUhWcGJuUXBPd3AxYVc1MElDQWdjM1ZpWjNKdmRYQkNZV3hzYjNSQ2FYUkRiM1Z1ZENoMWRtVmpOQ2s3Q25WcGJuUWdJQ0J6ZFdKbmNtOTFjRUpoYkd4dmRFbHVZMngxYzJsMlpVSnBkRU52ZFc1MEtIVjJaV00wS1RzS2RXbHVkQ0FnSUhOMVltZHliM1Z3UW1Gc2JHOTBSWGhqYkhWemFYWmxRbWwwUTI5MWJuUW9kWFpsWXpRcE93cDFhVzUwSUNBZ2MzVmlaM0p2ZFhCQ1lXeHNiM1JHYVc1a1RGTkNLSFYyWldNMEtUc0tkV2x1ZENBZ0lITjFZbWR5YjNWd1FtRnNiRzkwUm1sdVpFMVRRaWgxZG1Wak5DazdDZ0JCa0l3Q0M1Y1dCSWNBQUNLSEFBQkhod0FBYTRjQUFJNkhBQUMwaHdBQTM0Y0FBQXlJQUFBbGlBQUFQb2dBQUZlSUFBQndpQUFBaVlnQUFLR0lBQUM2aUFBQTNJZ0FBUDZJQUFBZ2lRQUFRb2tBQUdTSkFBQ0ZpUUFBcDRrQUFNbUpBQURyaVFBQURZb0FBQytLQUFCUmlnQUFjb29BQUpTS0FBQzhpZ0FBNUlvQUFBeUxBQUEwaXdBQVhJc0FBSU9MQUFDcml3QUExSXNBQVB5TEFBQWlqQUFBU0l3QUFHbU1BQUNkakFBQTBZd0FBQVdOQUFBNWpRQUFiWTBBQUtDTkFBRFVqUUFBRVk0QUFFNk9BQUNMamdBQXlJNEFBQVdQQUFCQmp3QUFmbzhBQUx1UEFBRDRqd0FBTlpBQUFIS1FBQUN2a0FBQTY1QUFBR0p2YjJ3Z0lDQnpkV0puY205MWNFRnNiRVZ4ZFdGc0tDVnpLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRUp5YjJGa1kyRnpkQ2dsY3l3Z2RXbHVkQ2s3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJDY205aFpHTmhjM1JHYVhKemRDZ2xjeWs3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJUYUhWbVpteGxLQ1Z6TENCMWFXNTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRk5vZFdabWJHVlliM0lvSlhNc0lIVnBiblFwT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3VTJoMVptWnNaVlZ3S0NWekxDQjFhVzUwSUdSbGJIUmhLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRk5vZFdabWJHVkViM2R1S0NWekxDQjFhVzUwSUdSbGJIUmhLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRUZrWkNnbGN5azdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQk5kV3dvSlhNcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1RXbHVLQ1Z6S1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0UxaGVDZ2xjeWs3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJCYm1Rb0pYTXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndUM0lvSlhNcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1dHOXlLQ1Z6S1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0VsdVkyeDFjMmwyWlVGa1pDZ2xjeWs3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJKYm1Oc2RYTnBkbVZOZFd3b0pYTXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndTVzVqYkhWemFYWmxUV2x1S0NWektUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNFbHVZMngxYzJsMlpVMWhlQ2dsY3lrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCSmJtTnNkWE5wZG1WQmJtUW9KWE1wT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3U1c1amJIVnphWFpsVDNJb0pYTXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndTVzVqYkhWemFYWmxXRzl5S0NWektUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNFVjRZMngxYzJsMlpVRmtaQ2dsY3lrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCRmVHTnNkWE5wZG1WTmRXd29KWE1wT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3UlhoamJIVnphWFpsVFdsdUtDVnpLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRVY0WTJ4MWMybDJaVTFoZUNnbGN5azdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQkZlR05zZFhOcGRtVkJibVFvSlhNcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1JYaGpiSFZ6YVhabFQzSW9KWE1wT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3UlhoamJIVnphWFpsV0c5eUtDVnpLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRU5zZFhOMFpYSmxaRUZrWkNnbGN5d2dkV2x1ZENrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSTmRXd29KWE1zSUhWcGJuUXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndRMngxYzNSbGNtVmtUV2x1S0NWekxDQjFhVzUwS1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0VOc2RYTjBaWEpsWkUxaGVDZ2xjeXdnZFdsdWRDazdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQkRiSFZ6ZEdWeVpXUkJibVFvSlhNc0lIVnBiblFwT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3UTJ4MWMzUmxjbVZrVDNJb0pYTXNJSFZwYm5RcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1EyeDFjM1JsY21Wa1dHOXlLQ1Z6TENCMWFXNTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkYxWVdSQ2NtOWhaR05oYzNRb0pYTXNJSFZwYm5RcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1VYVmhaRk4zWVhCSWIzSnBlbTl1ZEdGc0tDVnpLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkYxWVdSVGQyRndWbVZ5ZEdsallXd29KWE1wT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3VVhWaFpGTjNZWEJFYVdGbmIyNWhiQ2dsY3lrN0NnQjFkbVZqTkNBZ2MzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1T1ZpZ2xjeWs3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVGa1pFNVdLQ1Z6TENCMWRtVmpOQ0JpWVd4c2IzUXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JOZFd4T1ZpZ2xjeXdnZFhabFl6UWdZbUZzYkc5MEtUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtUV2x1VGxZb0pYTXNJSFYyWldNMElHSmhiR3h2ZENrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFMWhlRTVXS0NWekxDQjFkbVZqTkNCaVlXeHNiM1FwT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSQmJtUk9WaWdsY3l3Z2RYWmxZelFnWW1Gc2JHOTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrVDNKT1ZpZ2xjeXdnZFhabFl6UWdZbUZzYkc5MEtUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtXRzl5VGxZb0pYTXNJSFYyWldNMElHSmhiR3h2ZENrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFbHVZMngxYzJsMlpVRmtaRTVXS0NWekxDQjFkbVZqTkNCaVlXeHNiM1FwT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSSmJtTnNkWE5wZG1WTmRXeE9WaWdsY3l3Z2RYWmxZelFnWW1Gc2JHOTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrU1c1amJIVnphWFpsVFdsdVRsWW9KWE1zSUhWMlpXTTBJR0poYkd4dmRDazdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRWx1WTJ4MWMybDJaVTFoZUU1V0tDVnpMQ0IxZG1Wak5DQmlZV3hzYjNRcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkpibU5zZFhOcGRtVkJibVJPVmlnbGN5d2dkWFpsWXpRZ1ltRnNiRzkwS1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1NXNWpiSFZ6YVhabFQzSk9WaWdsY3l3Z2RYWmxZelFnWW1Gc2JHOTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrU1c1amJIVnphWFpsV0c5eVRsWW9KWE1zSUhWMlpXTTBJR0poYkd4dmRDazdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRVY0WTJ4MWMybDJaVUZrWkU1V0tDVnpMQ0IxZG1Wak5DQmlZV3hzYjNRcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkZlR05zZFhOcGRtVk5kV3hPVmlnbGN5d2dkWFpsWXpRZ1ltRnNiRzkwS1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1JYaGpiSFZ6YVhabFRXbHVUbFlvSlhNc0lIVjJaV00wSUdKaGJHeHZkQ2s3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVWNFkyeDFjMmwyWlUxaGVFNVdLQ1Z6TENCMWRtVmpOQ0JpWVd4c2IzUXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JGZUdOc2RYTnBkbVZCYm1ST1ZpZ2xjeXdnZFhabFl6UWdZbUZzYkc5MEtUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtSWGhqYkhWemFYWmxUM0pPVmlnbGN5d2dkWFpsWXpRZ1ltRnNiRzkwS1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1JYaGpiSFZ6YVhabFdHOXlUbFlvSlhNc0lIVjJaV00wSUdKaGJHeHZkQ2s3Q2dCQnNLSUNDMVpRa1FBQVZwRUFBRnVSQUFCZ2tRQUFaWkVBQUcrUkFBQjNrUUFBZjVFQUFHWnNiMkYwQUhabFl6SUFkbVZqTXdCMlpXTTBBR1pzYjJGME1UWmZkQUJtTVRaMlpXTXlBR1l4Tm5abFl6TUFaakUyZG1Wak5BQkJrS01DQ3lpZ2tRQUFwNUVBQUsyUkFBQ3prUUFBWkc5MVlteGxBR1IyWldNeUFHUjJaV016QUdSMlpXTTBBRUhBb3dJTDV3SkFrZ0FBUjVJQUFFNlNBQUJWa2dBQVhKSUFBR1NTQUFCc2tnQUFkSklBQUh5U0FBQ0FrZ0FBaHBJQUFJeVNBQUNTa2dBQW1wSUFBS0tTQUFDcWtnQUFzcElBQUxxU0FBREJrZ0FBeUpJQUFNK1NBQURZa2dBQTRKSUFBT2lTQUFEd2tnQUE5WklBQVB1U0FBQUJrd0FBQjVNQUFCQ1RBQUFZa3dBQUlKTUFBR2x1ZERoZmRBQnBPSFpsWXpJQWFUaDJaV016QUdrNGRtVmpOQUJwYm5ReE5sOTBBR2t4Tm5abFl6SUFhVEUyZG1Wak13QnBNVFoyWldNMEFHbHVkQUJwZG1Wak1nQnBkbVZqTXdCcGRtVmpOQUJwYm5RMk5GOTBBR2syTkhabFl6SUFhVFkwZG1Wak13QnBOalIyWldNMEFIVnBiblE0WDNRQWRUaDJaV015QUhVNGRtVmpNd0IxT0habFl6UUFkV2x1ZERFMlgzUUFkVEUyZG1Wak1nQjFNVFoyWldNekFIVXhOblpsWXpRQWRXbHVkQUIxZG1Wak1nQjFkbVZqTXdCMWRtVmpOQUIxYVc1ME5qUmZkQUIxTmpSMlpXTXlBSFUyTkhabFl6TUFkVFkwZG1Wak5BQkJzS1lDQy9TOEJVQ1RBQUJGa3dBQVM1TUFBRkdUQUFCaWIyOXNBR0oyWldNeUFHSjJaV016QUdKMlpXTTBBRTl5QUVGdVpBQlliM0lBVTJoMVptWnNaVmh2Y2dCQlpHUUFUWFZzQUUxcGJnQk5ZWGdBZG05cFpDQnpkV0puY205MWNFMWxiVzl5ZVVKaGNuSnBaWEpUYUdGeVpXUW9LVHNLQUdKdmIyd2dZVzU1U1c1MmIyTmhkR2x2YmloaWIyOXNLVHRpYjI5c0lHRnNiRWx1ZG05allYUnBiMjV6S0dKdmIyd3BPMkp2YjJ3Z1lXeHNTVzUyYjJOaGRHbHZibk5GY1hWaGJDaGliMjlzS1RzS0FHWnNiMkYwSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0dac2IyRjBLVHQyWldNeUlDQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaDJaV015S1R0MlpXTXpJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwRk5SQ2gyWldNektUdDJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMEZOUkNoMlpXTTBLVHRwYm5RZ0lDQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaHBiblFwTzJsMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elFVMUVLR2wyWldNeUtUdHBkbVZqTXlCdGFXNUpiblp2WTJGMGFXOXVjMEZOUkNocGRtVmpNeWs3YVhabFl6UWdiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUW9hWFpsWXpRcE8zVnBiblFnSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0hWcGJuUXBPM1YyWldNeUlHMXBia2x1ZG05allYUnBiMjV6UVUxRUtIVjJaV015S1R0MWRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwRk5SQ2gxZG1Wak15azdkWFpsWXpRZ2JXbHVTVzUyYjJOaGRHbHZibk5CVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0YVc1SmJuWnZZMkYwYVc5dWMwRk5SQ2hrYjNWaWJHVXBPMlIyWldNeUlDQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaGtkbVZqTWlrN1pIWmxZek1nSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUW9aSFpsWXpRcE8ybHVkRFkwWDNRZ2JXbHVTVzUyYjJOaGRHbHZibk5CVFVRb2FXNTBOalJmZENrN2FUWTBkbVZqTWlCdGFXNUpiblp2WTJGMGFXOXVjMEZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0drMk5IWmxZek1wTzJrMk5IWmxZelFnYldsdVNXNTJiMk5oZEdsdmJuTkJUVVFvYVRZMGRtVmpOQ2s3ZFdsdWREWTBYM1FnYldsdVNXNTJiMk5oZEdsdmJuTkJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZeklwTzNVMk5IWmxZek1nSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZek1wTzNVMk5IWmxZelFnSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCdGFXNUpiblp2WTJGMGFXOXVjMEZOUkNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFwYmtsdWRtOWpZWFJwYjI1elFVMUVLR1l4Tm5abFl6UXBPMmx1ZERFMlgzUWdiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUW9hVzUwTVRaZmRDazdhVEUyZG1Wak1pQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMXBia2x1ZG05allYUnBiMjV6UVUxRUtHa3hOblpsWXpNcE8ya3hOblpsWXpRZ2JXbHVTVzUyYjJOaGRHbHZibk5CVFVRb2FURTJkbVZqTkNrN2RXbHVkREUyWDNRZ2JXbHVTVzUyYjJOaGRHbHZibk5CVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpJcE8zVXhOblpsWXpNZ0lHMXBia2x1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpNcE8zVXhOblpsWXpRZ0lHMXBia2x1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaG1iRzloZENrN2RtVmpNaUFnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZeklwTzNabFl6TWdJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMlpXTXpLVHQyWldNMElDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZENrN2FYWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpOQ2s3ZFdsdWRDQWdiV2x1U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0hWcGJuUXBPM1YyWldNeUlHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNektUdDFkbVZqTkNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpRcE8yUnZkV0pzWlNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwYm5RMk5GOTBLVHRwTmpSMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTTBLVHQxYVc1ME5qUmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkRFkwWDNRcE8zVTJOSFpsWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RUWTBkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV2x1U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBiblF4Tmw5MEtUdHBNVFoyWldNeUlHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTXlLVHRwTVRaMlpXTXpJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaG1iRzloZENrN2RtVmpNaUFnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZeklwTzNabFl6TWdJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNoMlpXTXpLVHQyWldNMElDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZENrN2FYWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpOQ2s3ZFdsdWRDQWdiV2x1U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0hWcGJuUXBPM1YyWldNeUlHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNektUdDFkbVZqTkNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpRcE8yUnZkV0pzWlNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwYm5RMk5GOTBLVHRwTmpSMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTTBLVHQxYVc1ME5qUmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkRFkwWDNRcE8zVTJOSFpsWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RUWTBkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV2x1U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBiblF4Tmw5MEtUdHBNVFoyWldNeUlHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTXlLVHRwTVRaMlpXTXpJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0dac2IyRjBLVHQyWldNeUlDQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaDJaV015S1R0MlpXTXpJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwRk5SQ2gyWldNektUdDJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkNoMlpXTTBLVHRwYm5RZ0lDQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaHBiblFwTzJsMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elFVMUVLR2wyWldNeUtUdHBkbVZqTXlCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkNocGRtVmpNeWs3YVhabFl6UWdiV0Y0U1c1MmIyTmhkR2x2Ym5OQlRVUW9hWFpsWXpRcE8zVnBiblFnSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0hWcGJuUXBPM1YyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtIVjJaV015S1R0MWRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwRk5SQ2gxZG1Wak15azdkWFpsWXpRZ2JXRjRTVzUyYjJOaGRHbHZibk5CVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0WVhoSmJuWnZZMkYwYVc5dWMwRk5SQ2hrYjNWaWJHVXBPMlIyWldNeUlDQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaGtkbVZqTWlrN1pIWmxZek1nSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OQlRVUW9aSFpsWXpRcE8ybHVkRFkwWDNRZ2JXRjRTVzUyYjJOaGRHbHZibk5CVFVRb2FXNTBOalJmZENrN2FUWTBkbVZqTWlCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0drMk5IWmxZek1wTzJrMk5IWmxZelFnYldGNFNXNTJiMk5oZEdsdmJuTkJUVVFvYVRZMGRtVmpOQ2s3ZFdsdWREWTBYM1FnYldGNFNXNTJiMk5oZEdsdmJuTkJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZeklwTzNVMk5IWmxZek1nSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZek1wTzNVMk5IWmxZelFnSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OQlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFoZUVsdWRtOWpZWFJwYjI1elFVMUVLR1l4Tm5abFl6UXBPMmx1ZERFMlgzUWdiV0Y0U1c1MmIyTmhkR2x2Ym5OQlRVUW9hVzUwTVRaZmRDazdhVEUyZG1Wak1pQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtHa3hOblpsWXpNcE8ya3hOblpsWXpRZ2JXRjRTVzUyYjJOaGRHbHZibk5CVFVRb2FURTJkbVZqTkNrN2RXbHVkREUyWDNRZ2JXRjRTVzUyYjJOaGRHbHZibk5CVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpJcE8zVXhOblpsWXpNZ0lHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpNcE8zVXhOblpsWXpRZ0lHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaG1iRzloZENrN2RtVmpNaUFnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZeklwTzNabFl6TWdJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMlpXTXpLVHQyWldNMElDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZENrN2FYWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpOQ2s3ZFdsdWRDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0hWcGJuUXBPM1YyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNektUdDFkbVZqTkNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpRcE8yUnZkV0pzWlNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwYm5RMk5GOTBLVHRwTmpSMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTTBLVHQxYVc1ME5qUmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkRFkwWDNRcE8zVTJOSFpsWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RUWTBkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBiblF4Tmw5MEtUdHBNVFoyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTXlLVHRwTVRaMlpXTXpJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaG1iRzloZENrN2RtVmpNaUFnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZeklwTzNabFl6TWdJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNoMlpXTXpLVHQyWldNMElDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZENrN2FYWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpOQ2s3ZFdsdWRDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0hWcGJuUXBPM1YyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNektUdDFkbVZqTkNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpRcE8yUnZkV0pzWlNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwYm5RMk5GOTBLVHRwTmpSMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTTBLVHQxYVc1ME5qUmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkRFkwWDNRcE8zVTJOSFpsWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RUWTBkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBiblF4Tmw5MEtUdHBNVFoyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTXlLVHRwTVRaMlpXTXpJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0dac2IyRjBLVHQyWldNeUlDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaDJaV015S1R0MlpXTXpJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gyWldNektUdDJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMEZOUkNoMlpXTTBLVHRwYm5RZ0lDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaHBiblFwTzJsMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLR2wyWldNeUtUdHBkbVZqTXlCaFpHUkpiblp2WTJGMGFXOXVjMEZOUkNocGRtVmpNeWs3YVhabFl6UWdZV1JrU1c1MmIyTmhkR2x2Ym5OQlRVUW9hWFpsWXpRcE8zVnBiblFnSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0hWcGJuUXBPM1YyWldNeUlHRmtaRWx1ZG05allYUnBiMjV6UVUxRUtIVjJaV015S1R0MWRtVmpNeUJoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gxZG1Wak15azdkWFpsWXpRZ1lXUmtTVzUyYjJOaGRHbHZibk5CVFVRb2RYWmxZelFwTzJSdmRXSnNaU0FnWVdSa1NXNTJiMk5oZEdsdmJuTkJUVVFvWkc5MVlteGxLVHRrZG1Wak1pQWdJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ0lHRmtaRWx1ZG05allYUnBiMjV6UVUxRUtHUjJaV016S1R0a2RtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0dSMlpXTTBLVHRwYm5RMk5GOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLR2x1ZERZMFgzUXBPMmsyTkhabFl6SWdZV1JrU1c1MmIyTmhkR2x2Ym5OQlRVUW9hVFkwZG1Wak1pazdhVFkwZG1Wak15QmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHRmtaRWx1ZG05allYUnBiMjV6UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHRmtaRWx1ZG05allYUnBiMjV6UVUxRUtIVnBiblEyTkY5MEtUdDFOalIyWldNeUlDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaDFOalIyWldNeUtUdDFOalIyWldNeklDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaDFOalIyWldNektUdDFOalIyWldNMElDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaDFOalIyWldNMEtUdG1iRzloZERFMlgzUWdZV1JrU1c1MmIyTmhkR2x2Ym5OQlRVUW9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTkJUVVFvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCaFpHUkpiblp2WTJGMGFXOXVjMEZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkJUVVFvYVRFMmRtVmpNaWs3YVRFMmRtVmpNeUJoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2hwTVRaMlpXTXpLVHRwTVRaMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLR2t4Tm5abFl6UXBPM1ZwYm5ReE5sOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLSFZwYm5ReE5sOTBLVHQxTVRaMlpXTXlJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gxTVRaMlpXTXlLVHQxTVRaMlpXTXpJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gxTVRaMlpXTXpLVHQxTVRaMlpXTTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gxTVRaMlpXTTBLVHRtYkc5aGRDQmhaR1JKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvWm14dllYUXBPM1psWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gyWldNeUtUdDJaV016SUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9kbVZqTXlrN2RtVmpOQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZelFwTzJsdWRDQWdJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocGJuUXBPMmwyWldNeUlHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwZG1Wak1pazdhWFpsWXpNZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2wyWldNektUdHBkbVZqTkNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9hWFpsWXpRcE8zVnBiblFnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaDFhVzUwS1R0MWRtVmpNaUJoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RYWmxZeklwTzNWMlpXTXpJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMWRtVmpNeWs3ZFhabFl6UWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0hWMlpXTTBLVHRrYjNWaWJHVWdJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoa2IzVmliR1VwTzJSMlpXTXlJQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHUjJaV015S1R0a2RtVmpNeUFnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaGtkbVZqTXlrN1pIWmxZelFnSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aSFpsWXpRcE8ybHVkRFkwWDNRZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZERZMFgzUXBPMmsyTkhabFl6SWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0drMk5IWmxZeklwTzJrMk5IWmxZek1nWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHazJOSFpsWXpNcE8yazJOSFpsWXpRZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2syTkhabFl6UXBPM1ZwYm5RMk5GOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMWFXNTBOalJmZENrN2RUWTBkbVZqTWlBZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6SXBPM1UyTkhabFl6TWdJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9kVFkwZG1Wak5DazdabXh2WVhReE5sOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQmhaR1JKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaG1NVFoyWldNektUdG1NVFoyWldNMElDQWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZelFwTzJsdWRERTJYM1FnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHbHVkREUyWDNRcE8ya3hOblpsWXpJZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2t4Tm5abFl6SXBPMmt4Tm5abFl6TWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0dreE5uWmxZek1wTzJreE5uWmxZelFnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxYVc1ME1UWmZkQ2s3ZFRFMmRtVmpNaUFnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpJcE8zVXhOblpsWXpNZ0lHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxTVRaMlpXTXpLVHQxTVRaMlpXTTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RURTJkbVZqTkNrN1pteHZZWFFnWVdSa1NXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtHWnNiMkYwS1R0MlpXTXlJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RtVmpNaWs3ZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0habFl6TXBPM1psWXpRZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gyWldNMEtUdHBiblFnSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9hVzUwS1R0cGRtVmpNaUJoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZeklwTzJsMlpXTXpJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpNeWs3YVhabFl6UWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0dsMlpXTTBLVHQxYVc1MElDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRDazdkWFpsWXpJZ1lXUmtTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNeUtUdDFkbVZqTXlCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpNcE8zVjJaV00wSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaDFkbVZqTkNrN1pHOTFZbXhsSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hrZG1Wak1pazdaSFpsWXpNZ0lDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvWkhabFl6TXBPMlIyWldNMElDQWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0dSMlpXTTBLVHRwYm5RMk5GOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocGJuUTJORjkwS1R0cE5qUjJaV015SUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTXpLVHRwTmpSMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV00wS1R0MWFXNTBOalJmZENCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNoMU5qUjJaV015S1R0MU5qUjJaV016SUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kVFkwZG1Wak15azdkVFkwZG1Wak5DQWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaG1NVFoyWldNMEtUdHBiblF4Tmw5MElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwYm5ReE5sOTBLVHRwTVRaMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV015S1R0cE1UWjJaV016SUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNektUdHBNVFoyWldNMElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTTBLVHQxYVc1ME1UWmZkQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxTVRaMlpXTXlLVHQxTVRaMlpXTXpJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RURTJkbVZqTXlrN2RURTJkbVZqTkNBZ1lXUmtTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaG1iRzloZENrN2RtVmpNaUFnYldsdVNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0habFl6SXBPM1psWXpNZ0lHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDJaV016S1R0MlpXTTBJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXbHVTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHbHVkQ2s3YVhabFl6SWdiV2x1U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR2wyWldNeUtUdHBkbVZqTXlCdGFXNUpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2hwZG1Wak5DazdkV2x1ZENBZ2JXbHVTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXbHVTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVjJaV016S1R0MWRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFhabFl6UXBPMlJ2ZFdKc1pTQnRhVzVKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXbHVTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHUjJaV015S1R0a2RtVmpNeUFnYldsdVNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdiV2x1U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBiblEyTkY5MEtUdHBOalIyWldNeUlHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNMEtUdDFhVzUwTmpSZmRDQnRhVzVKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJRzFwYmtsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0FnYldsdVNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCdGFXNUpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV2x1U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocGJuUXhObDkwS1R0cE1UWjJaV015SUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV015S1R0cE1UWjJaV016SUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV00wS1R0MWFXNTBNVFpmZENCdGFXNUpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRhVzVKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak15azdkVEUyZG1Wak5DQWdiV2x1U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJ0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdiV2x1U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdiV2x1U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJ0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdiV2x1U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdiV2x1U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaG1iRzloZENrN2RtVmpNaUFnYldGNFNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0habFl6SXBPM1psWXpNZ0lHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDJaV016S1R0MlpXTTBJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHbHVkQ2s3YVhabFl6SWdiV0Y0U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR2wyWldNeUtUdHBkbVZqTXlCdFlYaEpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2hwZG1Wak5DazdkV2x1ZENBZ2JXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVjJaV016S1R0MWRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFhabFl6UXBPMlJ2ZFdKc1pTQnRZWGhKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHUjJaV015S1R0a2RtVmpNeUFnYldGNFNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBiblEyTkY5MEtUdHBOalIyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNMEtUdDFhVzUwTmpSZmRDQnRZWGhKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJRzFoZUVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0FnYldGNFNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCdFlYaEpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocGJuUXhObDkwS1R0cE1UWjJaV015SUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV015S1R0cE1UWjJaV016SUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV00wS1R0MWFXNTBNVFpmZENCdFlYaEpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRZWGhKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak15azdkVEUyZG1Wak5DQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJ0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJ0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaG1iRzloZENrN2RtVmpNaUFnWVdSa1NXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0habFl6SXBPM1psWXpNZ0lHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDJaV016S1R0MlpXTTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZG1Wak5DazdhVzUwSUNBZ1lXUmtTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHbHVkQ2s3YVhabFl6SWdZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR2wyWldNeUtUdHBkbVZqTXlCaFpHUkpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2FYWmxZek1wTzJsMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2hwZG1Wak5DazdkV2x1ZENBZ1lXUmtTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ1lXUmtTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVjJaV016S1R0MWRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFhabFl6UXBPMlJ2ZFdKc1pTQmhaR1JKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ1lXUmtTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHUjJaV015S1R0a2RtVmpNeUFnWVdSa1NXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBiblEyTkY5MEtUdHBOalIyWldNeUlHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNMEtUdDFhVzUwTmpSZmRDQmhaR1JKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJR0ZrWkVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCaFpHUkpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocGJuUXhObDkwS1R0cE1UWjJaV015SUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV015S1R0cE1UWjJaV016SUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV00wS1R0MWFXNTBNVFpmZENCaFpHUkpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQmhaR1JKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak15azdkVEUyZG1Wak5DQWdZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQmhaR1JKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQmhaR1JKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ1lXUmtTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ1lXUmtTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwRk5SQ2htYkc5aGRDd2dkWFpsWXpRcE8zWmxZeklnSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzBGTlJDaDJaV015TENBZ2RYWmxZelFwTzNabFl6TWdJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkNoMlpXTXpMQ0FnZFhabFl6UXBPM1psWXpRZ0lITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwRk5SQ2gyWldNMExDQWdkWFpsWXpRcE8ybHVkQ0FnSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzBGTlJDaHBiblFzSUNBZ2RYWmxZelFwTzJsMlpXTXlJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkNocGRtVmpNaXdnZFhabFl6UXBPMmwyWldNeklITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwRk5SQ2hwZG1Wak15d2dkWFpsWXpRcE8ybDJaV00wSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzBGTlJDaHBkbVZqTkN3Z2RYWmxZelFwTzNWcGJuUWdJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkNoMWFXNTBMQ0FnZFhabFl6UXBPM1YyWldNeUlITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwRk5SQ2gxZG1Wak1pd2dkWFpsWXpRcE8zVjJaV016SUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzBGTlJDaDFkbVZqTXl3Z2RYWmxZelFwTzNWMlpXTTBJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkNoMWRtVmpOQ3dnZFhabFl6UXBPMlpzYjJGMElITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwMWhjMnRsWkVGTlJDaG1iRzloZEN3Z2RYWmxZek1wTzNabFl6SWdJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMDFoYzJ0bFpFRk5SQ2gyWldNeUxDQWdkWFpsWXpNcE8zWmxZek1nSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzAxaGMydGxaRUZOUkNoMlpXTXpMQ0FnZFhabFl6TXBPM1psWXpRZ0lITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwMWhjMnRsWkVGTlJDaDJaV00wTENBZ2RYWmxZek1wTzJsdWRDQWdJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMDFoYzJ0bFpFRk5SQ2hwYm5Rc0lDQWdkWFpsWXpNcE8ybDJaV015SUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzAxaGMydGxaRUZOUkNocGRtVmpNaXdnZFhabFl6TXBPMmwyWldNeklITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwMWhjMnRsWkVGTlJDaHBkbVZqTXl3Z2RYWmxZek1wTzJsMlpXTTBJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMDFoYzJ0bFpFRk5SQ2hwZG1Wak5Dd2dkWFpsWXpNcE8zVnBiblFnSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzAxaGMydGxaRUZOUkNoMWFXNTBMQ0FnZFhabFl6TXBPM1YyWldNeUlITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwMWhjMnRsWkVGTlJDaDFkbVZqTWl3Z2RYWmxZek1wTzNWMlpXTXpJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMDFoYzJ0bFpFRk5SQ2gxZG1Wak15d2dkWFpsWXpNcE8zVjJaV00wSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzAxaGMydGxaRUZOUkNoMWRtVmpOQ3dnZFhabFl6TXBPMlpzYjJGMElIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaG1iRzloZEN3Z1pteHZZWFFzSUhWcGJuUXBPM1psWXpJZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDJaV015TENBZ2RtVmpNaXdnSUhWcGJuUXBPM1psWXpNZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDJaV016TENBZ2RtVmpNeXdnSUhWcGJuUXBPM1psWXpRZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDJaV00wTENBZ2RtVmpOQ3dnSUhWcGJuUXBPMmx1ZENBZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaHBiblFzSUNBZ2FXNTBMQ0FnSUhWcGJuUXBPMmwyWldNeUlIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaHBkbVZqTWl3Z2FYWmxZeklzSUhWcGJuUXBPMmwyWldNeklIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaHBkbVZqTXl3Z2FYWmxZek1zSUhWcGJuUXBPMmwyWldNMElIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaHBkbVZqTkN3Z2FYWmxZelFzSUhWcGJuUXBPM1ZwYm5RZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDFhVzUwTENBZ2RXbHVkQ3dnSUhWcGJuUXBPM1YyWldNeUlIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDFkbVZqTWl3Z2RYWmxZeklzSUhWcGJuUXBPM1YyWldNeklIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDFkbVZqTXl3Z2RYWmxZek1zSUhWcGJuUXBPM1YyWldNMElIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDFkbVZqTkN3Z2RYWmxZelFzSUhWcGJuUXBPM1ZwYm5RZ2JXSmpiblJCVFVRb2RXbHVkRFkwWDNRcE93b0FabXh2WVhRZ1kzVmlaVVpoWTJWSmJtUmxlRUZOUkNoMlpXTXpLVHQyWldNeUlDQmpkV0psUm1GalpVTnZiM0prUVUxRUtIWmxZek1wTzNWcGJuUTJORjkwSUhScGJXVkJUVVFvS1R0cGJpQnBiblFnWjJ4ZlUwbE5SRWR5YjNWd1UybDZaVUZOUkRzS0FIVnBiblFnWm5KaFoyMWxiblJOWVhOclJtVjBZMmhCVFVRb2MyRnRjR3hsY2pKRVRWTXNJQ0FnSUNBZ0lHbDJaV015S1R0MWFXNTBJR1p5WVdkdFpXNTBUV0Z6YTBabGRHTm9RVTFFS0dsellXMXdiR1Z5TWtSTlV5d2dJQ0FnSUNCcGRtVmpNaWs3ZFdsdWRDQm1jbUZuYldWdWRFMWhjMnRHWlhSamFFRk5SQ2gxYzJGdGNHeGxjakpFVFZNc0lDQWdJQ0FnYVhabFl6SXBPM1ZwYm5RZ1puSmhaMjFsYm5STllYTnJSbVYwWTJoQlRVUW9jMkZ0Y0d4bGNqSkVUVk5CY25KaGVTd2dJR2wyWldNektUdDFhVzUwSUdaeVlXZHRaVzUwVFdGemEwWmxkR05vUVUxRUtHbHpZVzF3YkdWeU1rUk5VMEZ5Y21GNUxDQnBkbVZqTXlrN2RXbHVkQ0JtY21GbmJXVnVkRTFoYzJ0R1pYUmphRUZOUkNoMWMyRnRjR3hsY2pKRVRWTkJjbkpoZVN3Z2FYWmxZek1wTzNabFl6UWdJR1p5WVdkdFpXNTBSbVYwWTJoQlRVUW9jMkZ0Y0d4bGNqSkVUVk1zSUNBZ0lDQWdJR2wyWldNeUxDQjFhVzUwS1R0cGRtVmpOQ0JtY21GbmJXVnVkRVpsZEdOb1FVMUVLR2x6WVcxd2JHVnlNa1JOVXl3Z0lDQWdJQ0JwZG1Wak1pd2dkV2x1ZENrN2RYWmxZelFnWm5KaFoyMWxiblJHWlhSamFFRk5SQ2gxYzJGdGNHeGxjakpFVFZNc0lDQWdJQ0FnYVhabFl6SXNJSFZwYm5RcE8zWmxZelFnSUdaeVlXZHRaVzUwUm1WMFkyaEJUVVFvYzJGdGNHeGxjakpFVFZOQmNuSmhlU3dnSUdsMlpXTXpMQ0IxYVc1MEtUdHBkbVZqTkNCbWNtRm5iV1Z1ZEVabGRHTm9RVTFFS0dsellXMXdiR1Z5TWtSTlUwRnljbUY1TENCcGRtVmpNeXdnZFdsdWRDazdkWFpsWXpRZ1puSmhaMjFsYm5SR1pYUmphRUZOUkNoMWMyRnRjR3hsY2pKRVRWTkJjbkpoZVN3Z2FYWmxZek1zSUhWcGJuUXBPd29BZFdsdWRDQmpiM1Z1ZEV4bFlXUnBibWRhWlhKdmN5aDFhVzUwS1R0MWRtVmpNaUJqYjNWdWRFeGxZV1JwYm1kYVpYSnZjeWgxZG1Wak1pazdkWFpsWXpNZ1kyOTFiblJNWldGa2FXNW5XbVZ5YjNNb2RYWmxZek1wTzNWMlpXTTBJR052ZFc1MFRHVmhaR2x1WjFwbGNtOXpLSFYyWldNMEtUdDFhVzUwSUdOdmRXNTBWSEpoYVd4cGJtZGFaWEp2Y3loMWFXNTBLVHQxZG1Wak1pQmpiM1Z1ZEZSeVlXbHNhVzVuV21WeWIzTW9kWFpsWXpJcE8zVjJaV016SUdOdmRXNTBWSEpoYVd4cGJtZGFaWEp2Y3loMWRtVmpNeWs3ZFhabFl6UWdZMjkxYm5SVWNtRnBiR2x1WjFwbGNtOXpLSFYyWldNMEtUdDFhVzUwSUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNocGJuUXNJR2x1ZENrN2RYWmxZeklnWVdKemIyeDFkR1ZFYVdabVpYSmxibU5sS0dsMlpXTXlMQ0JwZG1Wak1pazdkWFpsWXpNZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHbDJaV016TENCcGRtVmpNeWs3ZFhabFl6UWdZV0p6YjJ4MWRHVkVhV1ptWlhKbGJtTmxLR2wyWldNMExDQnBkbVZqTkNrN2RXbHVkREUyWDNRZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHbHVkREUyWDNRc0lHbHVkREUyWDNRcE8zVXhOblpsWXpJZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHa3hOblpsWXpJc0lHa3hOblpsWXpJcE8zVXhOblpsWXpNZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHa3hOblpsWXpNc0lHa3hOblpsWXpNcE8zVXhOblpsWXpRZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHa3hOblpsWXpRc0lHa3hOblpsWXpRcE8zVnBiblEyTkY5MElHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpTaHBiblEyTkY5MExDQnBiblEyTkY5MEtUdDFOalIyWldNeUlHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpTaHBOalIyWldNeUxDQnBOalIyWldNeUtUdDFOalIyWldNeklHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpTaHBOalIyWldNekxDQnBOalIyWldNektUdDFOalIyWldNMElHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpTaHBOalIyWldNMExDQnBOalIyWldNMEtUdDFhVzUwSUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNoMWFXNTBMQ0IxYVc1MEtUdDFkbVZqTWlCaFluTnZiSFYwWlVScFptWmxjbVZ1WTJVb2RYWmxZeklzSUhWMlpXTXlLVHQxZG1Wak15QmhZbk52YkhWMFpVUnBabVpsY21WdVkyVW9kWFpsWXpNc0lIVjJaV016S1R0MWRtVmpOQ0JoWW5OdmJIVjBaVVJwWm1abGNtVnVZMlVvZFhabFl6UXNJSFYyWldNMEtUdDFhVzUwTVRaZmRDQmhZbk52YkhWMFpVUnBabVpsY21WdVkyVW9kV2x1ZERFMlgzUXNJSFZwYm5ReE5sOTBLVHQxTVRaMlpXTXlJR0ZpYzI5c2RYUmxSR2xtWm1WeVpXNWpaU2gxTVRaMlpXTXlMQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJR0ZpYzI5c2RYUmxSR2xtWm1WeVpXNWpaU2gxTVRaMlpXTXpMQ0IxTVRaMlpXTXpLVHQxTVRaMlpXTTBJR0ZpYzI5c2RYUmxSR2xtWm1WeVpXNWpaU2gxTVRaMlpXTTBMQ0IxTVRaMlpXTTBLVHQxYVc1ME5qUmZkQ0JoWW5OdmJIVjBaVVJwWm1abGNtVnVZMlVvZFdsdWREWTBYM1FzSUhWcGJuUTJORjkwS1R0MU5qUjJaV015SUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNoMU5qUjJaV015TENCMU5qUjJaV015S1R0MU5qUjJaV016SUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNoMU5qUjJaV016TENCMU5qUjJaV016S1R0MU5qUjJaV00wSUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNoMU5qUjJaV00wTENCMU5qUjJaV00wS1R0cGJuUWdZV1JrVTJGMGRYSmhkR1VvYVc1MExDQnBiblFwTzJsMlpXTXlJR0ZrWkZOaGRIVnlZWFJsS0dsMlpXTXlMQ0JwZG1Wak1pazdhWFpsWXpNZ1lXUmtVMkYwZFhKaGRHVW9hWFpsWXpNc0lHbDJaV016S1R0cGRtVmpOQ0JoWkdSVFlYUjFjbUYwWlNocGRtVmpOQ3dnYVhabFl6UXBPMmx1ZERFMlgzUWdZV1JrVTJGMGRYSmhkR1VvYVc1ME1UWmZkQ3dnYVc1ME1UWmZkQ2s3YVRFMmRtVmpNaUJoWkdSVFlYUjFjbUYwWlNocE1UWjJaV015TENCcE1UWjJaV015S1R0cE1UWjJaV016SUdGa1pGTmhkSFZ5WVhSbEtHa3hOblpsWXpNc0lHa3hOblpsWXpNcE8ya3hOblpsWXpRZ1lXUmtVMkYwZFhKaGRHVW9hVEUyZG1Wak5Dd2dhVEUyZG1Wak5DazdhVzUwTmpSZmRDQmhaR1JUWVhSMWNtRjBaU2hwYm5RMk5GOTBMQ0JwYm5RMk5GOTBLVHRwTmpSMlpXTXlJR0ZrWkZOaGRIVnlZWFJsS0drMk5IWmxZeklzSUdrMk5IWmxZeklwTzJrMk5IWmxZek1nWVdSa1UyRjBkWEpoZEdVb2FUWTBkbVZqTXl3Z2FUWTBkbVZqTXlrN2FUWTBkbVZqTkNCaFpHUlRZWFIxY21GMFpTaHBOalIyWldNMExDQnBOalIyWldNMEtUdDFhVzUwSUdGa1pGTmhkSFZ5WVhSbEtIVnBiblFzSUhWcGJuUXBPM1YyWldNeUlHRmtaRk5oZEhWeVlYUmxLSFYyWldNeUxDQjFkbVZqTWlrN2RYWmxZek1nWVdSa1UyRjBkWEpoZEdVb2RYWmxZek1zSUhWMlpXTXpLVHQxZG1Wak5DQmhaR1JUWVhSMWNtRjBaU2gxZG1Wak5Dd2dkWFpsWXpRcE8zVnBiblF4Tmw5MElHRmtaRk5oZEhWeVlYUmxLSFZwYm5ReE5sOTBMQ0IxYVc1ME1UWmZkQ2s3ZFRFMmRtVmpNaUJoWkdSVFlYUjFjbUYwWlNoMU1UWjJaV015TENCMU1UWjJaV015S1R0MU1UWjJaV016SUdGa1pGTmhkSFZ5WVhSbEtIVXhOblpsWXpNc0lIVXhOblpsWXpNcE8zVXhOblpsWXpRZ1lXUmtVMkYwZFhKaGRHVW9kVEUyZG1Wak5Dd2dkVEUyZG1Wak5DazdkV2x1ZERZMFgzUWdZV1JrVTJGMGRYSmhkR1VvZFdsdWREWTBYM1FzSUhWcGJuUTJORjkwS1R0MU5qUjJaV015SUdGa1pGTmhkSFZ5WVhSbEtIVTJOSFpsWXpJc0lIVTJOSFpsWXpJcE8zVTJOSFpsWXpNZ1lXUmtVMkYwZFhKaGRHVW9kVFkwZG1Wak15d2dkVFkwZG1Wak15azdkVFkwZG1Wak5DQmhaR1JUWVhSMWNtRjBaU2gxTmpSMlpXTTBMQ0IxTmpSMlpXTTBLVHRwYm5RZ2MzVmlkSEpoWTNSVFlYUjFjbUYwWlNocGJuUXNJR2x1ZENrN2FYWmxZeklnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2hwZG1Wak1pd2dhWFpsWXpJcE8ybDJaV016SUhOMVluUnlZV04wVTJGMGRYSmhkR1VvYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCemRXSjBjbUZqZEZOaGRIVnlZWFJsS0dsMlpXTTBMQ0JwZG1Wak5DazdhVzUwTVRaZmRDQnpkV0owY21GamRGTmhkSFZ5WVhSbEtHbHVkREUyWDNRc0lHbHVkREUyWDNRcE8ya3hOblpsWXpJZ2MzVmlkSEpoWTNSVFlYUjFjbUYwWlNocE1UWjJaV015TENCcE1UWjJaV015S1R0cE1UWjJaV016SUhOMVluUnlZV04wVTJGMGRYSmhkR1VvYVRFMmRtVmpNeXdnYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J6ZFdKMGNtRmpkRk5oZEhWeVlYUmxLR2t4Tm5abFl6UXNJR2t4Tm5abFl6UXBPMmx1ZERZMFgzUWdjM1ZpZEhKaFkzUlRZWFIxY21GMFpTaHBiblEyTkY5MExDQnBiblEyTkY5MEtUdHBOalIyWldNeUlITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2FUWTBkbVZqTWl3Z2FUWTBkbVZqTWlrN2FUWTBkbVZqTXlCemRXSjBjbUZqZEZOaGRIVnlZWFJsS0drMk5IWmxZek1zSUdrMk5IWmxZek1wTzJrMk5IWmxZelFnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2hwTmpSMlpXTTBMQ0JwTmpSMlpXTTBLVHQxYVc1MElITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2RXbHVkQ3dnZFdsdWRDazdkWFpsWXpJZ2MzVmlkSEpoWTNSVFlYUjFjbUYwWlNoMWRtVmpNaXdnZFhabFl6SXBPM1YyWldNeklITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2RYWmxZek1zSUhWMlpXTXpLVHQxZG1Wak5DQnpkV0owY21GamRGTmhkSFZ5WVhSbEtIVjJaV00wTENCMWRtVmpOQ2s3ZFdsdWRERTJYM1FnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2gxYVc1ME1UWmZkQ3dnZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2gxTVRaMlpXTXlMQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJSE4xWW5SeVlXTjBVMkYwZFhKaGRHVW9kVEUyZG1Wak15d2dkVEUyZG1Wak15azdkVEUyZG1Wak5DQnpkV0owY21GamRGTmhkSFZ5WVhSbEtIVXhOblpsWXpRc0lIVXhOblpsWXpRcE8zVnBiblEyTkY5MElITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2RXbHVkRFkwWDNRc0lIVnBiblEyTkY5MEtUdDFOalIyWldNeUlITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2RUWTBkbVZqTWl3Z2RUWTBkbVZqTWlrN2RUWTBkbVZqTXlCemRXSjBjbUZqZEZOaGRIVnlZWFJsS0hVMk5IWmxZek1zSUhVMk5IWmxZek1wTzNVMk5IWmxZelFnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2gxTmpSMlpXTTBMQ0IxTmpSMlpXTTBLVHRwYm5RZ1lYWmxjbUZuWlNocGJuUXNJR2x1ZENrN2FYWmxZeklnWVhabGNtRm5aU2hwZG1Wak1pd2dhWFpsWXpJcE8ybDJaV016SUdGMlpYSmhaMlVvYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCaGRtVnlZV2RsS0dsMlpXTTBMQ0JwZG1Wak5DazdhVzUwTVRaZmRDQmhkbVZ5WVdkbEtHbHVkREUyWDNRc0lHbHVkREUyWDNRcE8ya3hOblpsWXpJZ1lYWmxjbUZuWlNocE1UWjJaV015TENCcE1UWjJaV015S1R0cE1UWjJaV016SUdGMlpYSmhaMlVvYVRFMmRtVmpNeXdnYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0JoZG1WeVlXZGxLR2t4Tm5abFl6UXNJR2t4Tm5abFl6UXBPMmx1ZERZMFgzUWdZWFpsY21GblpTaHBiblEyTkY5MExDQnBiblEyTkY5MEtUdHBOalIyWldNeUlHRjJaWEpoWjJVb2FUWTBkbVZqTWl3Z2FUWTBkbVZqTWlrN2FUWTBkbVZqTXlCaGRtVnlZV2RsS0drMk5IWmxZek1zSUdrMk5IWmxZek1wTzJrMk5IWmxZelFnWVhabGNtRm5aU2hwTmpSMlpXTTBMQ0JwTmpSMlpXTTBLVHQxYVc1MElHRjJaWEpoWjJVb2RXbHVkQ3dnZFdsdWRDazdkWFpsWXpJZ1lYWmxjbUZuWlNoMWRtVmpNaXdnZFhabFl6SXBPM1YyWldNeklHRjJaWEpoWjJVb2RYWmxZek1zSUhWMlpXTXpLVHQxZG1Wak5DQmhkbVZ5WVdkbEtIVjJaV00wTENCMWRtVmpOQ2s3ZFdsdWRERTJYM1FnWVhabGNtRm5aU2gxYVc1ME1UWmZkQ3dnZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnWVhabGNtRm5aU2gxTVRaMlpXTXlMQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJR0YyWlhKaFoyVW9kVEUyZG1Wak15d2dkVEUyZG1Wak15azdkVEUyZG1Wak5DQmhkbVZ5WVdkbEtIVXhOblpsWXpRc0lIVXhOblpsWXpRcE8zVnBiblEyTkY5MElHRjJaWEpoWjJVb2RXbHVkRFkwWDNRc0lIVnBiblEyTkY5MEtUdDFOalIyWldNeUlHRjJaWEpoWjJVb2RUWTBkbVZqTWl3Z2RUWTBkbVZqTWlrN2RUWTBkbVZqTXlCaGRtVnlZV2RsS0hVMk5IWmxZek1zSUhVMk5IWmxZek1wTzNVMk5IWmxZelFnWVhabGNtRm5aU2gxTmpSMlpXTTBMQ0IxTmpSMlpXTTBLVHRwYm5RZ1lYWmxjbUZuWlZKdmRXNWtaV1FvYVc1MExDQnBiblFwTzJsMlpXTXlJR0YyWlhKaFoyVlNiM1Z1WkdWa0tHbDJaV015TENCcGRtVmpNaWs3YVhabFl6TWdZWFpsY21GblpWSnZkVzVrWldRb2FYWmxZek1zSUdsMlpXTXpLVHRwZG1Wak5DQmhkbVZ5WVdkbFVtOTFibVJsWkNocGRtVmpOQ3dnYVhabFl6UXBPMmx1ZERFMlgzUWdZWFpsY21GblpWSnZkVzVrWldRb2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN2FURTJkbVZqTWlCaGRtVnlZV2RsVW05MWJtUmxaQ2hwTVRaMlpXTXlMQ0JwTVRaMlpXTXlLVHRwTVRaMlpXTXpJR0YyWlhKaFoyVlNiM1Z1WkdWa0tHa3hOblpsWXpNc0lHa3hOblpsWXpNcE8ya3hOblpsWXpRZ1lYWmxjbUZuWlZKdmRXNWtaV1FvYVRFMmRtVmpOQ3dnYVRFMmRtVmpOQ2s3YVc1ME5qUmZkQ0JoZG1WeVlXZGxVbTkxYm1SbFpDaHBiblEyTkY5MExDQnBiblEyTkY5MEtUdHBOalIyWldNeUlHRjJaWEpoWjJWU2IzVnVaR1ZrS0drMk5IWmxZeklzSUdrMk5IWmxZeklwTzJrMk5IWmxZek1nWVhabGNtRm5aVkp2ZFc1a1pXUW9hVFkwZG1Wak15d2dhVFkwZG1Wak15azdhVFkwZG1Wak5DQmhkbVZ5WVdkbFVtOTFibVJsWkNocE5qUjJaV00wTENCcE5qUjJaV00wS1R0MWFXNTBJR0YyWlhKaFoyVlNiM1Z1WkdWa0tIVnBiblFzSUhWcGJuUXBPM1YyWldNeUlHRjJaWEpoWjJWU2IzVnVaR1ZrS0hWMlpXTXlMQ0IxZG1Wak1pazdkWFpsWXpNZ1lYWmxjbUZuWlZKdmRXNWtaV1FvZFhabFl6TXNJSFYyWldNektUdDFkbVZqTkNCaGRtVnlZV2RsVW05MWJtUmxaQ2gxZG1Wak5Dd2dkWFpsWXpRcE8zVnBiblF4Tmw5MElHRjJaWEpoWjJWU2IzVnVaR1ZrS0hWcGJuUXhObDkwTENCMWFXNTBNVFpmZENrN2RURTJkbVZqTWlCaGRtVnlZV2RsVW05MWJtUmxaQ2gxTVRaMlpXTXlMQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJR0YyWlhKaFoyVlNiM1Z1WkdWa0tIVXhOblpsWXpNc0lIVXhOblpsWXpNcE8zVXhOblpsWXpRZ1lYWmxjbUZuWlZKdmRXNWtaV1FvZFRFMmRtVmpOQ3dnZFRFMmRtVmpOQ2s3ZFdsdWREWTBYM1FnWVhabGNtRm5aVkp2ZFc1a1pXUW9kV2x1ZERZMFgzUXNJSFZwYm5RMk5GOTBLVHQxTmpSMlpXTXlJR0YyWlhKaFoyVlNiM1Z1WkdWa0tIVTJOSFpsWXpJc0lIVTJOSFpsWXpJcE8zVTJOSFpsWXpNZ1lYWmxjbUZuWlZKdmRXNWtaV1FvZFRZMGRtVmpNeXdnZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0JoZG1WeVlXZGxVbTkxYm1SbFpDaDFOalIyWldNMExDQjFOalIyWldNMEtUdHBiblFnYlhWc2RHbHdiSGt6TW5neE5paHBiblFzSUdsdWRDazdhWFpsWXpJZ2JYVnNkR2x3Ykhrek1uZ3hOaWhwZG1Wak1pd2dhWFpsWXpJcE8ybDJaV016SUcxMWJIUnBjR3g1TXpKNE1UWW9hWFpsWXpNc0lHbDJaV016S1R0cGRtVmpOQ0J0ZFd4MGFYQnNlVE15ZURFMktHbDJaV00wTENCcGRtVmpOQ2s3ZFdsdWRDQnRkV3gwYVhCc2VUTXllREUyS0hWcGJuUXNJSFZwYm5RcE8zVjJaV015SUcxMWJIUnBjR3g1TXpKNE1UWW9kWFpsWXpJc0lIVjJaV015S1R0MWRtVmpNeUJ0ZFd4MGFYQnNlVE15ZURFMktIVjJaV016TENCMWRtVmpNeWs3ZFhabFl6UWdiWFZzZEdsd2JIa3pNbmd4TmloMWRtVmpOQ3dnZFhabFl6UXBPd29BYzNSeWRXTjBJR2RzWDFSbGVIUjFjbVZHYjI5MGNISnBiblF5UkU1V0lIdDFkbVZqTWlCaGJtTm9iM0k3ZFhabFl6SWdiMlptYzJWME8zVjJaV015SUcxaGMyczdkV2x1ZENCc2IyUTdkV2x1ZENCbmNtRnVkV3hoY21sMGVUdDlPM04wY25WamRDQm5iRjlVWlhoMGRYSmxSbTl2ZEhCeWFXNTBNMFJPVmlCN2RYWmxZek1nWVc1amFHOXlPM1YyWldNeklHOW1abk5sZER0MWRtVmpNaUJ0WVhOck8zVnBiblFnYkc5a08zVnBiblFnWjNKaGJuVnNZWEpwZEhrN2ZUdGliMjlzSUhSbGVIUjFjbVZHYjI5MGNISnBiblJPVmloellXMXdiR1Z5TWtRc0lIWmxZeklzSUdsdWRDd2dZbTl2YkN3Z2IzVjBJR2RzWDFSbGVIUjFjbVZHYjI5MGNISnBiblF5UkU1V0tUdGliMjlzSUhSbGVIUjFjbVZHYjI5MGNISnBiblJPVmloellXMXdiR1Z5TTBRc0lIWmxZek1zSUdsdWRDd2dZbTl2YkN3Z2IzVjBJR2RzWDFSbGVIUjFjbVZHYjI5MGNISnBiblF6UkU1V0tUdGliMjlzSUhSbGVIUjFjbVZHYjI5MGNISnBiblJPVmloellXMXdiR1Z5TWtRc0lIWmxZeklzSUdsdWRDd2dZbTl2YkN3Z2IzVjBJR2RzWDFSbGVIUjFjbVZHYjI5MGNISnBiblF5UkU1V0xDQm1iRzloZENrN1ltOXZiQ0IwWlhoMGRYSmxSbTl2ZEhCeWFXNTBUbFlvYzJGdGNHeGxjak5FTENCMlpXTXpMQ0JwYm5Rc0lHSnZiMndzSUc5MWRDQm5iRjlVWlhoMGRYSmxSbTl2ZEhCeWFXNTBNMFJPVml3Z1pteHZZWFFwTzJKdmIyd2dkR1Y0ZEhWeVpVWnZiM1J3Y21sdWRFTnNZVzF3VGxZb2MyRnRjR3hsY2pKRUxDQjJaV015TENCbWJHOWhkQ3dnYVc1MExDQmliMjlzTENCdmRYUWdaMnhmVkdWNGRIVnlaVVp2YjNSd2NtbHVkREpFVGxZcE8ySnZiMndnZEdWNGRIVnlaVVp2YjNSd2NtbHVkRU5zWVcxd1RsWW9jMkZ0Y0d4bGNqTkVMQ0IyWldNekxDQm1iRzloZEN3Z2FXNTBMQ0JpYjI5c0xDQnZkWFFnWjJ4ZlZHVjRkSFZ5WlVadmIzUndjbWx1ZERORVRsWXBPMkp2YjJ3Z2RHVjRkSFZ5WlVadmIzUndjbWx1ZEVOc1lXMXdUbFlvYzJGdGNHeGxjakpFTENCMlpXTXlMQ0JtYkc5aGRDd2dhVzUwTENCaWIyOXNMQ0J2ZFhRZ1oyeGZWR1Y0ZEhWeVpVWnZiM1J3Y21sdWRESkVUbFlzSUdac2IyRjBLVHRpYjI5c0lIUmxlSFIxY21WR2IyOTBjSEpwYm5SRGJHRnRjRTVXS0hOaGJYQnNaWEl6UkN3Z2RtVmpNeXdnWm14dllYUXNJR2x1ZEN3Z1ltOXZiQ3dnYjNWMElHZHNYMVJsZUhSMWNtVkdiMjkwY0hKcGJuUXpSRTVXTENCbWJHOWhkQ2s3WW05dmJDQjBaWGgwZFhKbFJtOXZkSEJ5YVc1MFRHOWtUbFlvYzJGdGNHeGxjakpFTENCMlpXTXlMQ0JtYkc5aGRDd2dhVzUwTENCaWIyOXNMQ0J2ZFhRZ1oyeGZWR1Y0ZEhWeVpVWnZiM1J3Y21sdWRESkVUbFlwTzJKdmIyd2dkR1Y0ZEhWeVpVWnZiM1J3Y21sdWRFeHZaRTVXS0hOaGJYQnNaWEl6UkN3Z2RtVmpNeXdnWm14dllYUXNJR2x1ZEN3Z1ltOXZiQ3dnYjNWMElHZHNYMVJsZUhSMWNtVkdiMjkwY0hKcGJuUXpSRTVXS1R0aWIyOXNJSFJsZUhSMWNtVkdiMjkwY0hKcGJuUkhjbUZrVGxZb2MyRnRjR3hsY2pKRUxDQjJaV015TENCMlpXTXlMQ0IyWldNeUxDQnBiblFzSUdKdmIyd3NJRzkxZENCbmJGOVVaWGgwZFhKbFJtOXZkSEJ5YVc1ME1rUk9WaWs3WW05dmJDQjBaWGgwZFhKbFJtOXZkSEJ5YVc1MFIzSmhaRU5zWVcxd1RsWW9jMkZ0Y0d4bGNqSkVMQ0IyWldNeUxDQjJaV015TENCMlpXTXlMQ0JtYkc5aGRDd2dhVzUwTENCaWIyOXNMQ0J2ZFhRZ1oyeGZWR1Y0ZEhWeVpVWnZiM1J3Y21sdWRESkVUbFlwT3dvQVpteHZZWFF4Tmw5MElISmhaR2xoYm5Nb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdjbUZrYVdGdWN5aG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdjbUZrYVdGdWN5aG1NVFoyWldNektUdG1NVFoyWldNMElDQWdjbUZrYVdGdWN5aG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdaR1ZuY21WbGN5aG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JrWldkeVpXVnpLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0JrWldkeVpXVnpLR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JrWldkeVpXVnpLR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0J6YVc0b1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdjMmx1S0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCemFXNG9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJSE5wYmlobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ1kyOXpLR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUdOdmN5aG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdZMjl6S0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCamIzTW9aakUyZG1Wak5DazdabXh2WVhReE5sOTBJSFJoYmlobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQjBZVzRvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUhSaGJpaG1NVFoyWldNektUdG1NVFoyWldNMElDQWdkR0Z1S0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCaGMybHVLR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUdGemFXNG9aakUyZG1Wak1pazdaakUyZG1Wak15QWdJR0Z6YVc0b1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHRnphVzRvWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUdGamIzTW9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVdOdmN5aG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdZV052Y3lobU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ1lXTnZjeWhtTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnWVhSaGJpaG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUdGMFlXNG9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWVhSaGJpaG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JoZEdGdUtHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5DazdabXh2WVhReE5sOTBJR0YwWVc0b1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdZWFJoYmlobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1lYUmhiaWhtTVRaMlpXTXpLVHRtTVRaMlpXTTBJQ0FnWVhSaGJpaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdjMmx1YUNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnphVzVvS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCemFXNW9LR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J6YVc1b0tHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQmpiM05vS0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHTnZjMmdvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdOdmMyZ29aakUyZG1Wak15azdaakUyZG1Wak5DQWdJR052YzJnb1pqRTJkbVZqTkNrN1pteHZZWFF4Tmw5MElIUmhibWdvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2RHRnVhQ2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnZEdGdWFDaG1NVFoyWldNektUdG1NVFoyWldNMElDQWdkR0Z1YUNobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ1lYTnBibWdvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ1lYTnBibWdvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdGemFXNW9LR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JoYzJsdWFDaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdZV052YzJnb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdZV052YzJnb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHRmpiM05vS0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCaFkyOXphQ2htTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnWVhSaGJtZ29abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVhSaGJtZ29aakUyZG1Wak1pazdaakUyZG1Wak15QWdJR0YwWVc1b0tHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQmhkR0Z1YUNobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ2NHOTNLR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2NHOTNLR1l4Tm5abFl6SXNJQ0FnWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUhCdmR5aG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J3YjNjb1pqRTJkbVZqTkN3Z0lDQm1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdaWGh3S0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHVjRjQ2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWlhod0tHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQmxlSEFvWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUd4dlp5aG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JzYjJjb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHeHZaeWhtTVRaMlpXTXpLVHRtTVRaMlpXTTBJQ0FnYkc5bktHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQmxlSEF5S0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHVjRjRElvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdWNGNESW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJR1Y0Y0RJb1pqRTJkbVZqTkNrN1pteHZZWFF4Tmw5MElHeHZaeklvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2JHOW5NaWhtTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnYkc5bk1paG1NVFoyWldNektUdG1NVFoyWldNMElDQWdiRzluTWlobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ2MzRnlkQ2htYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCemNYSjBLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0J6Y1hKMEtHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQnpjWEowS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCcGJuWmxjbk5sYzNGeWRDaG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JwYm5abGNuTmxjM0Z5ZENobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ2FXNTJaWEp6WlhOeGNuUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJR2x1ZG1WeWMyVnpjWEowS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCaFluTW9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVdKektHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQmhZbk1vWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGaWN5aG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdjMmxuYmlobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnphV2R1S0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCemFXZHVLR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J6YVdkdUtHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQm1iRzl2Y2lobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQm1iRzl2Y2lobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1pteHZiM0lvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdac2IyOXlLR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0IwY25WdVl5aG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0IwY25WdVl5aG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdkSEoxYm1Nb1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lIUnlkVzVqS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCeWIzVnVaQ2htYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCeWIzVnVaQ2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnY205MWJtUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJSEp2ZFc1a0tHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQnliM1Z1WkVWMlpXNG9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnY205MWJtUkZkbVZ1S0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCeWIzVnVaRVYyWlc0b1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lISnZkVzVrUlhabGJpaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdZMlZwYkNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQmpaV2xzS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCalpXbHNLR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JqWldsc0tHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQm1jbUZqZENobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQm1jbUZqZENobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1puSmhZM1FvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdaeVlXTjBLR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0J0YjJRb1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0J0YjJRb1pqRTJkbVZqTWl3Z0lDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6TWdJQ0J0YjJRb1pqRTJkbVZqTXl3Z0lDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6UWdJQ0J0YjJRb1pqRTJkbVZqTkN3Z0lDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0J0YjJRb1pqRTJkbVZqTWl3Z0lDQm1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdiVzlrS0dZeE5uWmxZek1zSUNBZ1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHMXZaQ2htTVRaMlpXTTBMQ0FnSUdZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCdGIyUm1LR1pzYjJGME1UWmZkQ3dnYjNWMElHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzF2WkdZb1pqRTJkbVZqTWl3Z0lDQnZkWFFnWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUcxdlpHWW9aakUyZG1Wak15d2dJQ0J2ZFhRZ1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHMXZaR1lvWmpFMmRtVmpOQ3dnSUNCdmRYUWdaakUyZG1Wak5DazdabXh2WVhReE5sOTBJRzFwYmlobWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwYmlobU1UWjJaV015TENBZ0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak15QWdJRzFwYmlobU1UWjJaV016TENBZ0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak5DQWdJRzFwYmlobU1UWjJaV00wTENBZ0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwYmlobU1UWjJaV015TENBZ0lHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQnRhVzRvWmpFMmRtVmpNeXdnSUNCbU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ2JXbHVLR1l4Tm5abFl6UXNJQ0FnWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUcxaGVDaG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUcxaGVDaG1NVFoyWldNeUxDQWdJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNeUFnSUcxaGVDaG1NVFoyWldNekxDQWdJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpOQ0FnSUcxaGVDaG1NVFoyWldNMExDQWdJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUcxaGVDaG1NVFoyWldNeUxDQWdJR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0J0WVhnb1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNektUdG1NVFoyWldNMElDQWdiV0Y0S0dZeE5uWmxZelFzSUNBZ1pqRTJkbVZqTkNrN1pteHZZWFF4Tmw5MElHTnNZVzF3S0dac2IyRjBNVFpmZEN3Z1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JqYkdGdGNDaG1NVFoyWldNeUxDQWdJR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwS1R0bU1UWjJaV016SUNBZ1kyeGhiWEFvWmpFMmRtVmpNeXdnSUNCbWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak5DQWdJR05zWVcxd0tHWXhOblpsWXpRc0lDQWdabXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCamJHRnRjQ2htTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklzSUNBZ1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHTnNZVzF3S0dZeE5uWmxZek1zSUNBZ1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNektUdG1NVFoyWldNMElDQWdZMnhoYlhBb1pqRTJkbVZqTkN3Z0lDQm1NVFoyWldNMExDQWdJR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0J0YVhnb1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUcxcGVDaG1NVFoyWldNeUxDQWdJR1l4Tm5abFl6SXNJQ0FnWm14dllYUXhObDkwS1R0bU1UWjJaV016SUNBZ2JXbDRLR1l4Tm5abFl6TXNJQ0FnWmpFMmRtVmpNeXdnSUNCbWJHOWhkREUyWDNRcE8yWXhOblpsWXpRZ0lDQnRhWGdvWmpFMmRtVmpOQ3dnSUNCbU1UWjJaV00wTENBZ0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwZUNobU1UWjJaV015TENBZ0lHWXhOblpsWXpJc0lDQWdaakUyZG1Wak1pazdaakUyZG1Wak15QWdJRzFwZUNobU1UWjJaV016TENBZ0lHWXhOblpsWXpNc0lDQWdaakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFwZUNobU1UWjJaV00wTENBZ0lHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5DazdabXh2WVhReE5sOTBJRzFwZUNobWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDd2dZbTl2YkNrN1pqRTJkbVZqTWlBZ0lHMXBlQ2htTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklzSUNBZ1luWmxZeklwTzJZeE5uWmxZek1nSUNCdGFYZ29aakUyZG1Wak15d2dJQ0JtTVRaMlpXTXpMQ0FnSUdKMlpXTXpLVHRtTVRaMlpXTTBJQ0FnYldsNEtHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5Dd2dJQ0JpZG1Wak5DazdabXh2WVhReE5sOTBJSE4wWlhBb1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0J6ZEdWd0tHWXhOblpsWXpJc0lDQWdaakUyZG1Wak1pazdaakUyZG1Wak15QWdJSE4wWlhBb1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNektUdG1NVFoyWldNMElDQWdjM1JsY0NobU1UWjJaV00wTENBZ0lHWXhOblpsWXpRcE8yWXhOblpsWXpJZ0lDQnpkR1Z3S0dac2IyRjBNVFpmZEN3Z1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lITjBaWEFvWm14dllYUXhObDkwTENCbU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ2MzUmxjQ2htYkc5aGRERTJYM1FzSUdZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCemJXOXZkR2h6ZEdWd0tHWnNiMkYwTVRaZmRDd2dabXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCemJXOXZkR2h6ZEdWd0tHWXhOblpsWXpJc0lDQWdaakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnYzIxdmIzUm9jM1JsY0NobU1UWjJaV016TENBZ0lHWXhOblpsWXpNc0lDQWdaakUyZG1Wak15azdaakUyZG1Wak5DQWdJSE50YjI5MGFITjBaWEFvWmpFMmRtVmpOQ3dnSUNCbU1UWjJaV00wTENBZ0lHWXhOblpsWXpRcE8yWXhOblpsWXpJZ0lDQnpiVzl2ZEdoemRHVndLR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwTENCbU1UWjJaV015S1R0bU1UWjJaV016SUNBZ2MyMXZiM1JvYzNSbGNDaG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ3dnWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUhOdGIyOTBhSE4wWlhBb1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXNJR1l4Tm5abFl6UXBPMkp2YjJ3Z0lHbHpibUZ1S0dac2IyRjBNVFpmZENrN1luWmxZeklnYVhOdVlXNG9aakUyZG1Wak1pazdZblpsWXpNZ2FYTnVZVzRvWmpFMmRtVmpNeWs3WW5abFl6UWdhWE51WVc0b1pqRTJkbVZqTkNrN1ltOXZiQ0FnYVhOcGJtWW9abXh2WVhReE5sOTBLVHRpZG1Wak1pQnBjMmx1WmlobU1UWjJaV015S1R0aWRtVmpNeUJwYzJsdVppaG1NVFoyWldNektUdGlkbVZqTkNCcGMybHVaaWhtTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnWm0xaEtHWnNiMkYwTVRaZmRDd2dabXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCbWJXRW9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCbWJXRW9aakUyZG1Wak15d2dJQ0JtTVRaMlpXTXpMQ0FnSUdZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCbWJXRW9aakUyZG1Wak5Dd2dJQ0JtTVRaMlpXTTBMQ0FnSUdZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCbWNtVjRjQ2htYkc5aGRERTJYM1FzSUc5MWRDQnBiblFwTzJZeE5uWmxZeklnSUNCbWNtVjRjQ2htTVRaMlpXTXlMQ0FnSUc5MWRDQnBkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHWnlaWGh3S0dZeE5uWmxZek1zSUNBZ2IzVjBJR2wyWldNektUdG1NVFoyWldNMElDQWdabkpsZUhBb1pqRTJkbVZqTkN3Z0lDQnZkWFFnYVhabFl6UXBPMlpzYjJGME1UWmZkQ0JzWkdWNGNDaG1iRzloZERFMlgzUXNJR2x1SUdsdWRDazdaakUyZG1Wak1pQWdJR3hrWlhod0tHWXhOblpsWXpJc0lDQWdhVzRnYVhabFl6SXBPMll4Tm5abFl6TWdJQ0JzWkdWNGNDaG1NVFoyWldNekxDQWdJR2x1SUdsMlpXTXpLVHRtTVRaMlpXTTBJQ0FnYkdSbGVIQW9aakUyZG1Wak5Dd2dJQ0JwYmlCcGRtVmpOQ2s3ZFdsdWRDQWdJQ0J3WVdOclJteHZZWFF5ZURFMktHWXhOblpsWXpJcE8yWXhOblpsWXpJZ2RXNXdZV05yUm14dllYUXllREUyS0hWcGJuUXBPMlpzYjJGME1UWmZkQ0JzWlc1bmRHZ29abXh2WVhReE5sOTBLVHRtYkc5aGRERTJYM1FnYkdWdVozUm9LR1l4Tm5abFl6SXBPMlpzYjJGME1UWmZkQ0JzWlc1bmRHZ29aakUyZG1Wak15azdabXh2WVhReE5sOTBJR3hsYm1kMGFDaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdaR2x6ZEdGdVkyVW9abXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJac2IyRjBNVFpmZENCa2FYTjBZVzVqWlNobU1UWjJaV015TENBZ0lHWXhOblpsWXpJcE8yWnNiMkYwTVRaZmRDQmthWE4wWVc1alpTaG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMlpzYjJGME1UWmZkQ0JrYVhOMFlXNWpaU2htTVRaMlpXTTBMQ0FnSUdZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCa2IzUW9abXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJac2IyRjBNVFpmZENCa2IzUW9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlLVHRtYkc5aGRERTJYM1FnWkc5MEtHWXhOblpsWXpNc0lDQWdaakUyZG1Wak15azdabXh2WVhReE5sOTBJR1J2ZENobU1UWjJaV00wTENBZ0lHWXhOblpsWXpRcE8yWXhOblpsWXpNZ1kzSnZjM01vWmpFMmRtVmpNeXdnWmpFMmRtVmpNeWs3Wm14dllYUXhObDkwSUc1dmNtMWhiR2w2WlNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnViM0p0WVd4cGVtVW9aakUyZG1Wak1pazdaakUyZG1Wak15QWdJRzV2Y20xaGJHbDZaU2htTVRaMlpXTXpLVHRtTVRaMlpXTTBJQ0FnYm05eWJXRnNhWHBsS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCbVlXTmxabTl5ZDJGeVpDaG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ1ptRmpaV1p2Y25kaGNtUW9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCbVlXTmxabTl5ZDJGeVpDaG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXNJQ0FnWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdaaFkyVm1iM0ozWVhKa0tHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5Dd2dJQ0JtTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnY21WbWJHVmpkQ2htYkc5aGRERTJYM1FzSUdac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lISmxabXhsWTNRb1pqRTJkbVZqTWl3Z0lDQm1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdjbVZtYkdWamRDaG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J5Wldac1pXTjBLR1l4Tm5abFl6UXNJQ0FnWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUhKbFpuSmhZM1FvWm14dllYUXhObDkwTENCbWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJSEpsWm5KaFkzUW9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlMQ0FnSUdac2IyRjBNVFpmZENrN1pqRTJkbVZqTXlBZ0lISmxabkpoWTNRb1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNekxDQWdJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpOQ0FnSUhKbFpuSmhZM1FvWmpFMmRtVmpOQ3dnSUNCbU1UWjJaV00wTENBZ0lHWnNiMkYwTVRaZmRDazdaakUyYldGME1pQWdJRzFoZEhKcGVFTnZiWEJOZFd4MEtHWXhObTFoZERJc0lDQWdaakUyYldGME1pazdaakUyYldGME15QWdJRzFoZEhKcGVFTnZiWEJOZFd4MEtHWXhObTFoZERNc0lDQWdaakUyYldGME15azdaakUyYldGME5DQWdJRzFoZEhKcGVFTnZiWEJOZFd4MEtHWXhObTFoZERRc0lDQWdaakUyYldGME5DazdaakUyYldGME1uZ3pJRzFoZEhKcGVFTnZiWEJOZFd4MEtHWXhObTFoZERKNE15d2daakUyYldGME1uZ3pLVHRtTVRadFlYUXllRFFnYldGMGNtbDRRMjl0Y0UxMWJIUW9aakUyYldGME1uZzBMQ0JtTVRadFlYUXllRFFwTzJZeE5tMWhkRE40TWlCdFlYUnlhWGhEYjIxd1RYVnNkQ2htTVRadFlYUXplRElzSUdZeE5tMWhkRE40TWlrN1pqRTJiV0YwTTNnMElHMWhkSEpwZUVOdmJYQk5kV3gwS0dZeE5tMWhkRE40TkN3Z1pqRTJiV0YwTTNnMEtUdG1NVFp0WVhRMGVESWdiV0YwY21sNFEyOXRjRTExYkhRb1pqRTJiV0YwTkhneUxDQm1NVFp0WVhRMGVESXBPMll4Tm0xaGREUjRNeUJ0WVhSeWFYaERiMjF3VFhWc2RDaG1NVFp0WVhRMGVETXNJR1l4Tm0xaGREUjRNeWs3WmpFMmJXRjBNaUFnSUc5MWRHVnlVSEp2WkhWamRDaG1NVFoyWldNeUxDQm1NVFoyWldNeUtUdG1NVFp0WVhReklDQWdiM1YwWlhKUWNtOWtkV04wS0dZeE5uWmxZek1zSUdZeE5uWmxZek1wTzJZeE5tMWhkRFFnSUNCdmRYUmxjbEJ5YjJSMVkzUW9aakUyZG1Wak5Dd2daakUyZG1Wak5DazdaakUyYldGME1uZ3pJRzkxZEdWeVVISnZaSFZqZENobU1UWjJaV016TENCbU1UWjJaV015S1R0bU1UWnRZWFF6ZURJZ2IzVjBaWEpRY205a2RXTjBLR1l4Tm5abFl6SXNJR1l4Tm5abFl6TXBPMll4Tm0xaGRESjROQ0J2ZFhSbGNsQnliMlIxWTNRb1pqRTJkbVZqTkN3Z1pqRTJkbVZqTWlrN1pqRTJiV0YwTkhneUlHOTFkR1Z5VUhKdlpIVmpkQ2htTVRaMlpXTXlMQ0JtTVRaMlpXTTBLVHRtTVRadFlYUXplRFFnYjNWMFpYSlFjbTlrZFdOMEtHWXhOblpsWXpRc0lHWXhOblpsWXpNcE8yWXhObTFoZERSNE15QnZkWFJsY2xCeWIyUjFZM1FvWmpFMmRtVmpNeXdnWmpFMmRtVmpOQ2s3WmpFMmJXRjBNaUFnSUhSeVlXNXpjRzl6WlNobU1UWnRZWFF5S1R0bU1UWnRZWFF6SUNBZ2RISmhibk53YjNObEtHWXhObTFoZERNcE8yWXhObTFoZERRZ0lDQjBjbUZ1YzNCdmMyVW9aakUyYldGME5DazdaakUyYldGME1uZ3pJSFJ5WVc1emNHOXpaU2htTVRadFlYUXplRElwTzJZeE5tMWhkRE40TWlCMGNtRnVjM0J2YzJVb1pqRTJiV0YwTW5nektUdG1NVFp0WVhReWVEUWdkSEpoYm5Od2IzTmxLR1l4Tm0xaGREUjRNaWs3WmpFMmJXRjBOSGd5SUhSeVlXNXpjRzl6WlNobU1UWnRZWFF5ZURRcE8yWXhObTFoZERONE5DQjBjbUZ1YzNCdmMyVW9aakUyYldGME5IZ3pLVHRtTVRadFlYUTBlRE1nZEhKaGJuTndiM05sS0dZeE5tMWhkRE40TkNrN1pteHZZWFF4Tmw5MElHUmxkR1Z5YldsdVlXNTBLR1l4Tm0xaGRESXBPMlpzYjJGME1UWmZkQ0JrWlhSbGNtMXBibUZ1ZENobU1UWnRZWFF6S1R0bWJHOWhkREUyWDNRZ1pHVjBaWEp0YVc1aGJuUW9aakUyYldGME5DazdaakUyYldGME1pQnBiblpsY25ObEtHWXhObTFoZERJcE8yWXhObTFoZERNZ2FXNTJaWEp6WlNobU1UWnRZWFF6S1R0bU1UWnRZWFEwSUdsdWRtVnljMlVvWmpFMmJXRjBOQ2s3WW5abFl6SWdiR1Z6YzFSb1lXNG9aakUyZG1Wak1pd2daakUyZG1Wak1pazdZblpsWXpNZ2JHVnpjMVJvWVc0b1pqRTJkbVZqTXl3Z1pqRTJkbVZqTXlrN1luWmxZelFnYkdWemMxUm9ZVzRvWmpFMmRtVmpOQ3dnWmpFMmRtVmpOQ2s3WW5abFl6SWdiR1Z6YzFSb1lXNUZjWFZoYkNobU1UWjJaV015TENCbU1UWjJaV015S1R0aWRtVmpNeUJzWlhOelZHaGhia1Z4ZFdGc0tHWXhOblpsWXpNc0lHWXhOblpsWXpNcE8ySjJaV00wSUd4bGMzTlVhR0Z1UlhGMVlXd29aakUyZG1Wak5Dd2daakUyZG1Wak5DazdZblpsWXpJZ1ozSmxZWFJsY2xSb1lXNG9aakUyZG1Wak1pd2daakUyZG1Wak1pazdZblpsWXpNZ1ozSmxZWFJsY2xSb1lXNG9aakUyZG1Wak15d2daakUyZG1Wak15azdZblpsWXpRZ1ozSmxZWFJsY2xSb1lXNG9aakUyZG1Wak5Dd2daakUyZG1Wak5DazdZblpsWXpJZ1ozSmxZWFJsY2xSb1lXNUZjWFZoYkNobU1UWjJaV015TENCbU1UWjJaV015S1R0aWRtVmpNeUJuY21WaGRHVnlWR2hoYmtWeGRXRnNLR1l4Tm5abFl6TXNJR1l4Tm5abFl6TXBPMkoyWldNMElHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b1pqRTJkbVZqTkN3Z1pqRTJkbVZqTkNrN1luWmxZeklnWlhGMVlXd29aakUyZG1Wak1pd2daakUyZG1Wak1pazdZblpsWXpNZ1pYRjFZV3dvWmpFMmRtVmpNeXdnWmpFMmRtVmpNeWs3WW5abFl6UWdaWEYxWVd3b1pqRTJkbVZqTkN3Z1pqRTJkbVZqTkNrN1luWmxZeklnYm05MFJYRjFZV3dvWmpFMmRtVmpNaXdnWmpFMmRtVmpNaWs3WW5abFl6TWdibTkwUlhGMVlXd29aakUyZG1Wak15d2daakUyZG1Wak15azdZblpsWXpRZ2JtOTBSWEYxWVd3b1pqRTJkbVZqTkN3Z1pqRTJkbVZqTkNrN0NnQnBiblE0WDNRZ1lXSnpLR2x1ZERoZmRDazdhVGgyWldNeUlHRmljeWhwT0habFl6SXBPMms0ZG1Wak15QmhZbk1vYVRoMlpXTXpLVHRwT0habFl6UWdZV0p6S0drNGRtVmpOQ2s3YVc1ME9GOTBJSE5wWjI0b2FXNTBPRjkwS1R0cE9IWmxZeklnYzJsbmJpaHBPSFpsWXpJcE8yazRkbVZqTXlCemFXZHVLR2s0ZG1Wak15azdhVGgyWldNMElITnBaMjRvYVRoMlpXTTBLVHRwYm5RNFgzUWdiV2x1S0dsdWREaGZkQ0I0TENCcGJuUTRYM1FnZVNrN2FUaDJaV015SUcxcGJpaHBPSFpsWXpJZ2VDd2dhVzUwT0Y5MElIa3BPMms0ZG1Wak15QnRhVzRvYVRoMlpXTXpJSGdzSUdsdWREaGZkQ0I1S1R0cE9IWmxZelFnYldsdUtHazRkbVZqTkNCNExDQnBiblE0WDNRZ2VTazdhVGgyWldNeUlHMXBiaWhwT0habFl6SWdlQ3dnYVRoMlpXTXlJSGtwTzJrNGRtVmpNeUJ0YVc0b2FUaDJaV016SUhnc0lHazRkbVZqTXlCNUtUdHBPSFpsWXpRZ2JXbHVLR2s0ZG1Wak5DQjRMQ0JwT0habFl6UWdlU2s3ZFdsdWREaGZkQ0J0YVc0b2RXbHVkRGhmZENCNExDQjFhVzUwT0Y5MElIa3BPM1U0ZG1Wak1pQnRhVzRvZFRoMlpXTXlJSGdzSUhWcGJuUTRYM1FnZVNrN2RUaDJaV016SUcxcGJpaDFPSFpsWXpNZ2VDd2dkV2x1ZERoZmRDQjVLVHQxT0habFl6UWdiV2x1S0hVNGRtVmpOQ0I0TENCMWFXNTBPRjkwSUhrcE8zVTRkbVZqTWlCdGFXNG9kVGgyWldNeUlIZ3NJSFU0ZG1Wak1pQjVLVHQxT0habFl6TWdiV2x1S0hVNGRtVmpNeUI0TENCMU9IWmxZek1nZVNrN2RUaDJaV00wSUcxcGJpaDFPSFpsWXpRZ2VDd2dkVGgyWldNMElIa3BPMmx1ZERoZmRDQnRZWGdvYVc1ME9GOTBJSGdzSUdsdWREaGZkQ0I1S1R0cE9IWmxZeklnYldGNEtHazRkbVZqTWlCNExDQnBiblE0WDNRZ2VTazdhVGgyWldNeklHMWhlQ2hwT0habFl6TWdlQ3dnYVc1ME9GOTBJSGtwTzJrNGRtVmpOQ0J0WVhnb2FUaDJaV00wSUhnc0lHbHVkRGhmZENCNUtUdHBPSFpsWXpJZ2JXRjRLR2s0ZG1Wak1pQjRMQ0JwT0habFl6SWdlU2s3YVRoMlpXTXpJRzFoZUNocE9IWmxZek1nZUN3Z2FUaDJaV016SUhrcE8yazRkbVZqTkNCdFlYZ29hVGgyWldNMElIZ3NJR2s0ZG1Wak5DQjVLVHQxYVc1ME9GOTBJRzFoZUNoMWFXNTBPRjkwSUhnc0lIVnBiblE0WDNRZ2VTazdkVGgyWldNeUlHMWhlQ2gxT0habFl6SWdlQ3dnZFdsdWREaGZkQ0I1S1R0MU9IWmxZek1nYldGNEtIVTRkbVZqTXlCNExDQjFhVzUwT0Y5MElIa3BPM1U0ZG1Wak5DQnRZWGdvZFRoMlpXTTBJSGdzSUhWcGJuUTRYM1FnZVNrN2RUaDJaV015SUcxaGVDaDFPSFpsWXpJZ2VDd2dkVGgyWldNeUlIa3BPM1U0ZG1Wak15QnRZWGdvZFRoMlpXTXpJSGdzSUhVNGRtVmpNeUI1S1R0MU9IWmxZelFnYldGNEtIVTRkbVZqTkNCNExDQjFPSFpsWXpRZ2VTazdhVzUwT0Y5MElDQWdJR05zWVcxd0tHbHVkRGhmZENCNExDQnBiblE0WDNRZ2JXbHVWbUZzTENCcGJuUTRYM1FnYldGNFZtRnNLVHRwT0habFl6SWdJR05zWVcxd0tHazRkbVZqTWlBZ2VDd2dhVzUwT0Y5MElHMXBibFpoYkN3Z2FXNTBPRjkwSUcxaGVGWmhiQ2s3YVRoMlpXTXpJQ0JqYkdGdGNDaHBPSFpsWXpNZ0lIZ3NJR2x1ZERoZmRDQnRhVzVXWVd3c0lHbHVkRGhmZENCdFlYaFdZV3dwTzJrNGRtVmpOQ0FnWTJ4aGJYQW9hVGgyWldNMElDQjRMQ0JwYm5RNFgzUWdiV2x1Vm1Gc0xDQnBiblE0WDNRZ2JXRjRWbUZzS1R0cE9IWmxZeklnSUdOc1lXMXdLR2s0ZG1Wak1pQWdlQ3dnYVRoMlpXTXlJQ0J0YVc1V1lXd3NJR2s0ZG1Wak1pQWdiV0Y0Vm1Gc0tUdHBPSFpsWXpNZ0lHTnNZVzF3S0drNGRtVmpNeUFnZUN3Z2FUaDJaV016SUNCdGFXNVdZV3dzSUdrNGRtVmpNeUFnYldGNFZtRnNLVHRwT0habFl6UWdJR05zWVcxd0tHazRkbVZqTkNBZ2VDd2dhVGgyWldNMElDQnRhVzVXWVd3c0lHazRkbVZqTkNBZ2JXRjRWbUZzS1R0MWFXNTBPRjkwSUNBZ1kyeGhiWEFvZFdsdWREaGZkQ0I0TENCMWFXNTBPRjkwSUcxcGJsWmhiQ3dnZFdsdWREaGZkQ0J0WVhoV1lXd3BPM1U0ZG1Wak1pQWdZMnhoYlhBb2RUaDJaV015SUNCNExDQjFhVzUwT0Y5MElHMXBibFpoYkN3Z2RXbHVkRGhmZENCdFlYaFdZV3dwTzNVNGRtVmpNeUFnWTJ4aGJYQW9kVGgyWldNeklDQjRMQ0IxYVc1ME9GOTBJRzFwYmxaaGJDd2dkV2x1ZERoZmRDQnRZWGhXWVd3cE8zVTRkbVZqTkNBZ1kyeGhiWEFvZFRoMlpXTTBJQ0I0TENCMWFXNTBPRjkwSUcxcGJsWmhiQ3dnZFdsdWREaGZkQ0J0WVhoV1lXd3BPM1U0ZG1Wak1pQWdZMnhoYlhBb2RUaDJaV015SUNCNExDQjFPSFpsWXpJZ0lHMXBibFpoYkN3Z2RUaDJaV015SUNCdFlYaFdZV3dwTzNVNGRtVmpNeUFnWTJ4aGJYQW9kVGgyWldNeklDQjRMQ0IxT0habFl6TWdJRzFwYmxaaGJDd2dkVGgyWldNeklDQnRZWGhXWVd3cE8zVTRkbVZqTkNBZ1kyeGhiWEFvZFRoMlpXTTBJQ0I0TENCMU9IWmxZelFnSUcxcGJsWmhiQ3dnZFRoMlpXTTBJQ0J0WVhoV1lXd3BPMmx1ZERoZmRDQWdiV2w0S0dsdWREaGZkQ3dnSUdsdWREaGZkQ3dnSUdKdmIyd3BPMms0ZG1Wak1pQWdiV2w0S0drNGRtVmpNaXdnSUdrNGRtVmpNaXdnSUdKMlpXTXlLVHRwT0habFl6TWdJRzFwZUNocE9IWmxZek1zSUNCcE9IWmxZek1zSUNCaWRtVmpNeWs3YVRoMlpXTTBJQ0J0YVhnb2FUaDJaV00wTENBZ2FUaDJaV00wTENBZ1luWmxZelFwTzNWcGJuUTRYM1FnYldsNEtIVnBiblE0WDNRc0lIVnBiblE0WDNRc0lHSnZiMndwTzNVNGRtVmpNaUFnYldsNEtIVTRkbVZqTWl3Z0lIVTRkbVZqTWl3Z0lHSjJaV015S1R0MU9IWmxZek1nSUcxcGVDaDFPSFpsWXpNc0lDQjFPSFpsWXpNc0lDQmlkbVZqTXlrN2RUaDJaV00wSUNCdGFYZ29kVGgyWldNMExDQWdkVGgyWldNMExDQWdZblpsWXpRcE8ySjJaV015SUd4bGMzTlVhR0Z1S0drNGRtVmpNaXdnYVRoMlpXTXlLVHRpZG1Wak15QnNaWE56VkdoaGJpaHBPSFpsWXpNc0lHazRkbVZqTXlrN1luWmxZelFnYkdWemMxUm9ZVzRvYVRoMlpXTTBMQ0JwT0habFl6UXBPMkoyWldNeUlHeGxjM05VYUdGdUtIVTRkbVZqTWl3Z2RUaDJaV015S1R0aWRtVmpNeUJzWlhOelZHaGhiaWgxT0habFl6TXNJSFU0ZG1Wak15azdZblpsWXpRZ2JHVnpjMVJvWVc0b2RUaDJaV00wTENCMU9IWmxZelFwTzJKMlpXTXlJR3hsYzNOVWFHRnVSWEYxWVd3b2FUaDJaV015TENCcE9IWmxZeklwTzJKMlpXTXpJR3hsYzNOVWFHRnVSWEYxWVd3b2FUaDJaV016TENCcE9IWmxZek1wTzJKMlpXTTBJR3hsYzNOVWFHRnVSWEYxWVd3b2FUaDJaV00wTENCcE9IWmxZelFwTzJKMlpXTXlJR3hsYzNOVWFHRnVSWEYxWVd3b2RUaDJaV015TENCMU9IWmxZeklwTzJKMlpXTXpJR3hsYzNOVWFHRnVSWEYxWVd3b2RUaDJaV016TENCMU9IWmxZek1wTzJKMlpXTTBJR3hsYzNOVWFHRnVSWEYxWVd3b2RUaDJaV00wTENCMU9IWmxZelFwTzJKMlpXTXlJR2R5WldGMFpYSlVhR0Z1S0drNGRtVmpNaXdnYVRoMlpXTXlLVHRpZG1Wak15Qm5jbVZoZEdWeVZHaGhiaWhwT0habFl6TXNJR2s0ZG1Wak15azdZblpsWXpRZ1ozSmxZWFJsY2xSb1lXNG9hVGgyWldNMExDQnBPSFpsWXpRcE8ySjJaV015SUdkeVpXRjBaWEpVYUdGdUtIVTRkbVZqTWl3Z2RUaDJaV015S1R0aWRtVmpNeUJuY21WaGRHVnlWR2hoYmloMU9IWmxZek1zSUhVNGRtVmpNeWs3WW5abFl6UWdaM0psWVhSbGNsUm9ZVzRvZFRoMlpXTTBMQ0IxT0habFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b2FUaDJaV015TENCcE9IWmxZeklwTzJKMlpXTXpJR2R5WldGMFpYSlVhR0Z1UlhGMVlXd29hVGgyWldNekxDQnBPSFpsWXpNcE8ySjJaV00wSUdkeVpXRjBaWEpVYUdGdVJYRjFZV3dvYVRoMlpXTTBMQ0JwT0habFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b2RUaDJaV015TENCMU9IWmxZeklwTzJKMlpXTXpJR2R5WldGMFpYSlVhR0Z1UlhGMVlXd29kVGgyWldNekxDQjFPSFpsWXpNcE8ySjJaV00wSUdkeVpXRjBaWEpVYUdGdVJYRjFZV3dvZFRoMlpXTTBMQ0IxT0habFl6UXBPMkoyWldNeUlHVnhkV0ZzS0drNGRtVmpNaXdnYVRoMlpXTXlLVHRpZG1Wak15QmxjWFZoYkNocE9IWmxZek1zSUdrNGRtVmpNeWs3WW5abFl6UWdaWEYxWVd3b2FUaDJaV00wTENCcE9IWmxZelFwTzJKMlpXTXlJR1Z4ZFdGc0tIVTRkbVZqTWl3Z2RUaDJaV015S1R0aWRtVmpNeUJsY1hWaGJDaDFPSFpsWXpNc0lIVTRkbVZqTXlrN1luWmxZelFnWlhGMVlXd29kVGgyWldNMExDQjFPSFpsWXpRcE8ySjJaV015SUc1dmRFVnhkV0ZzS0drNGRtVmpNaXdnYVRoMlpXTXlLVHRpZG1Wak15QnViM1JGY1hWaGJDaHBPSFpsWXpNc0lHazRkbVZqTXlrN1luWmxZelFnYm05MFJYRjFZV3dvYVRoMlpXTTBMQ0JwT0habFl6UXBPMkoyWldNeUlHNXZkRVZ4ZFdGc0tIVTRkbVZqTWl3Z2RUaDJaV015S1R0aWRtVmpNeUJ1YjNSRmNYVmhiQ2gxT0habFl6TXNJSFU0ZG1Wak15azdZblpsWXpRZ2JtOTBSWEYxWVd3b2RUaDJaV00wTENCMU9IWmxZelFwT3lBZ2FXNTBPRjkwSUdKcGRHWnBaV3hrUlhoMGNtRmpkQ2dnSUdsdWREaGZkQ3dnYVc1ME9GOTBMQ0JwYm5RNFgzUXBPMms0ZG1Wak1pQmlhWFJtYVdWc1pFVjRkSEpoWTNRb2FUaDJaV015TENCcGJuUTRYM1FzSUdsdWREaGZkQ2s3YVRoMlpXTXpJR0pwZEdacFpXeGtSWGgwY21GamRDaHBPSFpsWXpNc0lHbHVkRGhmZEN3Z2FXNTBPRjkwS1R0cE9IWmxZelFnWW1sMFptbGxiR1JGZUhSeVlXTjBLR2s0ZG1Wak5Dd2dhVzUwT0Y5MExDQnBiblE0WDNRcE95QjFhVzUwT0Y5MElHSnBkR1pwWld4a1JYaDBjbUZqZENnZ2RXbHVkRGhmZEN3Z2FXNTBPRjkwTENCcGJuUTRYM1FwTzNVNGRtVmpNaUJpYVhSbWFXVnNaRVY0ZEhKaFkzUW9kVGgyWldNeUxDQnBiblE0WDNRc0lHbHVkRGhmZENrN2RUaDJaV016SUdKcGRHWnBaV3hrUlhoMGNtRmpkQ2gxT0habFl6TXNJR2x1ZERoZmRDd2dhVzUwT0Y5MEtUdDFPSFpsWXpRZ1ltbDBabWxsYkdSRmVIUnlZV04wS0hVNGRtVmpOQ3dnYVc1ME9GOTBMQ0JwYm5RNFgzUXBPeUFnYVc1ME9GOTBJR0pwZEdacFpXeGtTVzV6WlhKMEtDQWdhVzUwT0Y5MElHSmhjMlVzSUNBZ2FXNTBPRjkwTENCcGJuUTRYM1FzSUdsdWREaGZkQ2s3YVRoMlpXTXlJR0pwZEdacFpXeGtTVzV6WlhKMEtHazRkbVZqTWlCaVlYTmxMQ0JwT0habFl6SXNJR2x1ZERoZmRDd2dhVzUwT0Y5MEtUdHBPSFpsWXpNZ1ltbDBabWxsYkdSSmJuTmxjblFvYVRoMlpXTXpJR0poYzJVc0lHazRkbVZqTXl3Z2FXNTBPRjkwTENCcGJuUTRYM1FwTzJrNGRtVmpOQ0JpYVhSbWFXVnNaRWx1YzJWeWRDaHBPSFpsWXpRZ1ltRnpaU3dnYVRoMlpXTTBMQ0JwYm5RNFgzUXNJR2x1ZERoZmRDazdJSFZwYm5RNFgzUWdZbWwwWm1sbGJHUkpibk5sY25Rb0lIVnBiblE0WDNRZ1ltRnpaU3dnSUhWcGJuUTRYM1FzSUdsdWREaGZkQ3dnYVc1ME9GOTBLVHQxT0habFl6SWdZbWwwWm1sbGJHUkpibk5sY25Rb2RUaDJaV015SUdKaGMyVXNJSFU0ZG1Wak1pd2dhVzUwT0Y5MExDQnBiblE0WDNRcE8zVTRkbVZqTXlCaWFYUm1hV1ZzWkVsdWMyVnlkQ2gxT0habFl6TWdZbUZ6WlN3Z2RUaDJaV016TENCcGJuUTRYM1FzSUdsdWREaGZkQ2s3ZFRoMlpXTTBJR0pwZEdacFpXeGtTVzV6WlhKMEtIVTRkbVZqTkNCaVlYTmxMQ0IxT0habFl6UXNJR2x1ZERoZmRDd2dhVzUwT0Y5MEtUc2dJR2x1ZERoZmRDQmlhWFJEYjNWdWRDZ2dJR2x1ZERoZmRDazdhVGgyWldNeUlHSnBkRU52ZFc1MEtHazRkbVZqTWlrN2FUaDJaV016SUdKcGRFTnZkVzUwS0drNGRtVmpNeWs3YVRoMlpXTTBJR0pwZEVOdmRXNTBLR2s0ZG1Wak5DazdJQ0JwYm5RNFgzUWdZbWwwUTI5MWJuUW9JSFZwYm5RNFgzUXBPMms0ZG1Wak1pQmlhWFJEYjNWdWRDaDFPSFpsWXpJcE8yazRkbVZqTXlCaWFYUkRiM1Z1ZENoMU9IWmxZek1wTzJrNGRtVmpOQ0JpYVhSRGIzVnVkQ2gxT0habFl6UXBPeUFnYVc1ME9GOTBJR1pwYm1STVUwSW9JQ0JwYm5RNFgzUXBPMms0ZG1Wak1pQm1hVzVrVEZOQ0tHazRkbVZqTWlrN2FUaDJaV016SUdacGJtUk1VMElvYVRoMlpXTXpLVHRwT0habFl6UWdabWx1WkV4VFFpaHBPSFpsWXpRcE95QWdhVzUwT0Y5MElHWnBibVJNVTBJb0lIVnBiblE0WDNRcE8yazRkbVZqTWlCbWFXNWtURk5DS0hVNGRtVmpNaWs3YVRoMlpXTXpJR1pwYm1STVUwSW9kVGgyWldNektUdHBPSFpsWXpRZ1ptbHVaRXhUUWloMU9IWmxZelFwT3lBZ2FXNTBPRjkwSUdacGJtUk5VMElvSUNCcGJuUTRYM1FwTzJrNGRtVmpNaUJtYVc1a1RWTkNLR2s0ZG1Wak1pazdhVGgyWldNeklHWnBibVJOVTBJb2FUaDJaV016S1R0cE9IWmxZelFnWm1sdVpFMVRRaWhwT0habFl6UXBPeUFnYVc1ME9GOTBJR1pwYm1STlUwSW9JSFZwYm5RNFgzUXBPMms0ZG1Wak1pQm1hVzVrVFZOQ0tIVTRkbVZqTWlrN2FUaDJaV016SUdacGJtUk5VMElvZFRoMlpXTXpLVHRwT0habFl6UWdabWx1WkUxVFFpaDFPSFpsWXpRcE8ybHVkREUyWDNRZ1lXSnpLR2x1ZERFMlgzUXBPMmt4Tm5abFl6SWdZV0p6S0dreE5uWmxZeklwTzJreE5uWmxZek1nWVdKektHa3hOblpsWXpNcE8ya3hOblpsWXpRZ1lXSnpLR2t4Tm5abFl6UXBPMmx1ZERFMlgzUWdjMmxuYmlocGJuUXhObDkwS1R0cE1UWjJaV015SUhOcFoyNG9hVEUyZG1Wak1pazdhVEUyZG1Wak15QnphV2R1S0dreE5uWmxZek1wTzJreE5uWmxZelFnYzJsbmJpaHBNVFoyWldNMEtUdHBiblF4Tmw5MElHMXBiaWhwYm5ReE5sOTBJSGdzSUdsdWRERTJYM1FnZVNrN2FURTJkbVZqTWlCdGFXNG9hVEUyZG1Wak1pQjRMQ0JwYm5ReE5sOTBJSGtwTzJreE5uWmxZek1nYldsdUtHa3hOblpsWXpNZ2VDd2dhVzUwTVRaZmRDQjVLVHRwTVRaMlpXTTBJRzFwYmlocE1UWjJaV00wSUhnc0lHbHVkREUyWDNRZ2VTazdhVEUyZG1Wak1pQnRhVzRvYVRFMmRtVmpNaUI0TENCcE1UWjJaV015SUhrcE8ya3hOblpsWXpNZ2JXbHVLR2t4Tm5abFl6TWdlQ3dnYVRFMmRtVmpNeUI1S1R0cE1UWjJaV00wSUcxcGJpaHBNVFoyWldNMElIZ3NJR2t4Tm5abFl6UWdlU2s3ZFdsdWRERTJYM1FnYldsdUtIVnBiblF4Tmw5MElIZ3NJSFZwYm5ReE5sOTBJSGtwTzNVeE5uWmxZeklnYldsdUtIVXhOblpsWXpJZ2VDd2dkV2x1ZERFMlgzUWdlU2s3ZFRFMmRtVmpNeUJ0YVc0b2RURTJkbVZqTXlCNExDQjFhVzUwTVRaZmRDQjVLVHQxTVRaMlpXTTBJRzFwYmloMU1UWjJaV00wSUhnc0lIVnBiblF4Tmw5MElIa3BPM1V4Tm5abFl6SWdiV2x1S0hVeE5uWmxZeklnZUN3Z2RURTJkbVZqTWlCNUtUdDFNVFoyWldNeklHMXBiaWgxTVRaMlpXTXpJSGdzSUhVeE5uWmxZek1nZVNrN2RURTJkbVZqTkNCdGFXNG9kVEUyZG1Wak5DQjRMQ0IxTVRaMlpXTTBJSGtwTzJsdWRERTJYM1FnYldGNEtHbHVkREUyWDNRZ2VDd2dhVzUwTVRaZmRDQjVLVHRwTVRaMlpXTXlJRzFoZUNocE1UWjJaV015SUhnc0lHbHVkREUyWDNRZ2VTazdhVEUyZG1Wak15QnRZWGdvYVRFMmRtVmpNeUI0TENCcGJuUXhObDkwSUhrcE8ya3hOblpsWXpRZ2JXRjRLR2t4Tm5abFl6UWdlQ3dnYVc1ME1UWmZkQ0I1S1R0cE1UWjJaV015SUcxaGVDaHBNVFoyWldNeUlIZ3NJR2t4Tm5abFl6SWdlU2s3YVRFMmRtVmpNeUJ0WVhnb2FURTJkbVZqTXlCNExDQnBNVFoyWldNeklIa3BPMmt4Tm5abFl6UWdiV0Y0S0dreE5uWmxZelFnZUN3Z2FURTJkbVZqTkNCNUtUdDFhVzUwTVRaZmRDQnRZWGdvZFdsdWRERTJYM1FnZUN3Z2RXbHVkREUyWDNRZ2VTazdkVEUyZG1Wak1pQnRZWGdvZFRFMmRtVmpNaUI0TENCMWFXNTBNVFpmZENCNUtUdDFNVFoyWldNeklHMWhlQ2gxTVRaMlpXTXpJSGdzSUhWcGJuUXhObDkwSUhrcE8zVXhOblpsWXpRZ2JXRjRLSFV4Tm5abFl6UWdlQ3dnZFdsdWRERTJYM1FnZVNrN2RURTJkbVZqTWlCdFlYZ29kVEUyZG1Wak1pQjRMQ0IxTVRaMlpXTXlJSGtwTzNVeE5uWmxZek1nYldGNEtIVXhOblpsWXpNZ2VDd2dkVEUyZG1Wak15QjVLVHQxTVRaMlpXTTBJRzFoZUNoMU1UWjJaV00wSUhnc0lIVXhOblpsWXpRZ2VTazdhVzUwTVRaZmRDQWdJQ0JqYkdGdGNDaHBiblF4Tmw5MElIZ3NJR2x1ZERFMlgzUWdiV2x1Vm1Gc0xDQnBiblF4Tmw5MElHMWhlRlpoYkNrN2FURTJkbVZqTWlBZ1kyeGhiWEFvYVRFMmRtVmpNaUFnZUN3Z2FXNTBNVFpmZENCdGFXNVdZV3dzSUdsdWRERTJYM1FnYldGNFZtRnNLVHRwTVRaMlpXTXpJQ0JqYkdGdGNDaHBNVFoyWldNeklDQjRMQ0JwYm5ReE5sOTBJRzFwYmxaaGJDd2dhVzUwTVRaZmRDQnRZWGhXWVd3cE8ya3hOblpsWXpRZ0lHTnNZVzF3S0dreE5uWmxZelFnSUhnc0lHbHVkREUyWDNRZ2JXbHVWbUZzTENCcGJuUXhObDkwSUcxaGVGWmhiQ2s3YVRFMmRtVmpNaUFnWTJ4aGJYQW9hVEUyZG1Wak1pQWdlQ3dnYVRFMmRtVmpNaUFnYldsdVZtRnNMQ0JwTVRaMlpXTXlJQ0J0WVhoV1lXd3BPMmt4Tm5abFl6TWdJR05zWVcxd0tHa3hOblpsWXpNZ0lIZ3NJR2t4Tm5abFl6TWdJRzFwYmxaaGJDd2dhVEUyZG1Wak15QWdiV0Y0Vm1Gc0tUdHBNVFoyWldNMElDQmpiR0Z0Y0NocE1UWjJaV00wSUNCNExDQnBNVFoyWldNMElDQnRhVzVXWVd3c0lHa3hOblpsWXpRZ0lHMWhlRlpoYkNrN2RXbHVkREUyWDNRZ0lDQmpiR0Z0Y0NoMWFXNTBNVFpmZENCNExDQjFhVzUwTVRaZmRDQnRhVzVXWVd3c0lIVnBiblF4Tmw5MElHMWhlRlpoYkNrN2RURTJkbVZqTWlBZ1kyeGhiWEFvZFRFMmRtVmpNaUFnZUN3Z2RXbHVkREUyWDNRZ2JXbHVWbUZzTENCMWFXNTBNVFpmZENCdFlYaFdZV3dwTzNVeE5uWmxZek1nSUdOc1lXMXdLSFV4Tm5abFl6TWdJSGdzSUhWcGJuUXhObDkwSUcxcGJsWmhiQ3dnZFdsdWRERTJYM1FnYldGNFZtRnNLVHQxTVRaMlpXTTBJQ0JqYkdGdGNDaDFNVFoyWldNMElDQjRMQ0IxYVc1ME1UWmZkQ0J0YVc1V1lXd3NJSFZwYm5ReE5sOTBJRzFoZUZaaGJDazdkVEUyZG1Wak1pQWdZMnhoYlhBb2RURTJkbVZqTWlBZ2VDd2dkVEUyZG1Wak1pQWdiV2x1Vm1Gc0xDQjFNVFoyWldNeUlDQnRZWGhXWVd3cE8zVXhOblpsWXpNZ0lHTnNZVzF3S0hVeE5uWmxZek1nSUhnc0lIVXhOblpsWXpNZ0lHMXBibFpoYkN3Z2RURTJkbVZqTXlBZ2JXRjRWbUZzS1R0MU1UWjJaV00wSUNCamJHRnRjQ2gxTVRaMlpXTTBJQ0I0TENCMU1UWjJaV00wSUNCdGFXNVdZV3dzSUhVeE5uWmxZelFnSUcxaGVGWmhiQ2s3YVc1ME1UWmZkQ0FnYldsNEtHbHVkREUyWDNRc0lDQnBiblF4Tmw5MExDQWdZbTl2YkNrN2FURTJkbVZqTWlBZ2JXbDRLR2t4Tm5abFl6SXNJQ0JwTVRaMlpXTXlMQ0FnWW5abFl6SXBPMmt4Tm5abFl6TWdJRzFwZUNocE1UWjJaV016TENBZ2FURTJkbVZqTXl3Z0lHSjJaV016S1R0cE1UWjJaV00wSUNCdGFYZ29hVEUyZG1Wak5Dd2dJR2t4Tm5abFl6UXNJQ0JpZG1Wak5DazdkV2x1ZERFMlgzUWdiV2w0S0hWcGJuUXhObDkwTENCMWFXNTBNVFpmZEN3Z1ltOXZiQ2s3ZFRFMmRtVmpNaUFnYldsNEtIVXhOblpsWXpJc0lDQjFNVFoyWldNeUxDQWdZblpsWXpJcE8zVXhOblpsWXpNZ0lHMXBlQ2gxTVRaMlpXTXpMQ0FnZFRFMmRtVmpNeXdnSUdKMlpXTXpLVHQxTVRaMlpXTTBJQ0J0YVhnb2RURTJkbVZqTkN3Z0lIVXhOblpsWXpRc0lDQmlkbVZqTkNrN1pteHZZWFF4Tmw5MElHWnlaWGh3S0dac2IyRjBNVFpmZEN3Z2IzVjBJR2x1ZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JtY21WNGNDaG1NVFoyWldNeUxDQWdJRzkxZENCcE1UWjJaV015S1R0bU1UWjJaV016SUNBZ1puSmxlSEFvWmpFMmRtVmpNeXdnSUNCdmRYUWdhVEUyZG1Wak15azdaakUyZG1Wak5DQWdJR1p5Wlhod0tHWXhOblpsWXpRc0lDQWdiM1YwSUdreE5uWmxZelFwTzJac2IyRjBNVFpmZENCc1pHVjRjQ2htYkc5aGRERTJYM1FzSUdsdWRERTJYM1FwTzJZeE5uWmxZeklnSUNCc1pHVjRjQ2htTVRaMlpXTXlMQ0FnSUdreE5uWmxZeklwTzJZeE5uWmxZek1nSUNCc1pHVjRjQ2htTVRaMlpXTXpMQ0FnSUdreE5uWmxZek1wTzJZeE5uWmxZelFnSUNCc1pHVjRjQ2htTVRaMlpXTTBMQ0FnSUdreE5uWmxZelFwTzJsdWRERTJYM1FnYUdGc1prSnBkSE5VYjBsdWRERTJLR1pzYjJGME1UWmZkQ2s3YVRFMmRtVmpNaUJvWVd4bVFtbDBjMVJ2U1c1ME1UWW9aakUyZG1Wak1pazdhVEUyZG1Wak15Qm9ZV3hvUW1sMGMxUnZTVzUwTVRZb1pqRTJkbVZqTXlrN2FURTJkbVZqTkNCb1lXeG1RbWwwYzFSdlNXNTBNVFlvWmpFMmRtVmpOQ2s3ZFdsdWRERTJYM1FnYUdGc1prSnBkSE5VYjFWcGJuUXhOaWhtYkc5aGRERTJYM1FwTzNVeE5uWmxZeklnSUdoaGJHWkNhWFJ6Vkc5VmFXNTBNVFlvWmpFMmRtVmpNaWs3ZFRFMmRtVmpNeUFnYUdGc1prSnBkSE5VYjFWcGJuUXhOaWhtTVRaMlpXTXpLVHQxTVRaMlpXTTBJQ0JvWVd4bVFtbDBjMVJ2VldsdWRERTJLR1l4Tm5abFl6UXBPMmx1ZERFMlgzUWdabXh2WVhReE5rSnBkSE5VYjBsdWRERTJLR1pzYjJGME1UWmZkQ2s3YVRFMmRtVmpNaUJtYkc5aGRERTJRbWwwYzFSdlNXNTBNVFlvWmpFMmRtVmpNaWs3YVRFMmRtVmpNeUJtYkc5aGRERTJRbWwwYzFSdlNXNTBNVFlvWmpFMmRtVmpNeWs3YVRFMmRtVmpOQ0JtYkc5aGRERTJRbWwwYzFSdlNXNTBNVFlvWmpFMmRtVmpOQ2s3ZFdsdWRERTJYM1FnWm14dllYUXhOa0pwZEhOVWIxVnBiblF4TmlobWJHOWhkREUyWDNRcE8zVXhOblpsWXpJZ0lHWnNiMkYwTVRaQ2FYUnpWRzlWYVc1ME1UWW9aakUyZG1Wak1pazdkVEUyZG1Wak15QWdabXh2WVhReE5rSnBkSE5VYjFWcGJuUXhOaWhtTVRaMlpXTXpLVHQxTVRaMlpXTTBJQ0JtYkc5aGRERTJRbWwwYzFSdlZXbHVkREUyS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCcGJuUXhOa0pwZEhOVWIwWnNiMkYwTVRZb2FXNTBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHbHVkREUyUW1sMGMxUnZSbXh2WVhReE5paHBNVFoyWldNeUtUdG1NVFoyWldNeklDQWdhVzUwTVRaQ2FYUnpWRzlHYkc5aGRERTJLR2t4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JwYm5ReE5rSnBkSE5VYjBac2IyRjBNVFlvYVRFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUhWcGJuUXhOa0pwZEhOVWIwWnNiMkYwTVRZb2RXbHVkREUyWDNRcE8yWXhOblpsWXpJZ0lDQjFhVzUwTVRaQ2FYUnpWRzlHYkc5aGRERTJLSFV4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0IxYVc1ME1UWkNhWFJ6Vkc5R2JHOWhkREUyS0hVeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCMWFXNTBNVFpDYVhSelZHOUdiRzloZERFMktIVXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQnBiblF4TmtKcGRITlViMGhoYkdZb2FXNTBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHbHVkREUyUW1sMGMxUnZTR0ZzWmlocE1UWjJaV015S1R0bU1UWjJaV016SUNBZ2FXNTBNVFpDYVhSelZHOUlZV3htS0dreE5uWmxZek1wTzJZeE5uWmxZelFnSUNCcGJuUXhOa0pwZEhOVWIwaGhiR1lvYVRFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUhWcGJuUXhOa0pwZEhOVWIwaGhiR1lvZFdsdWRERTJYM1FwTzJZeE5uWmxZeklnSUNCMWFXNTBNVFpDYVhSelZHOUlZV3htS0hVeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCMWFXNTBNVFpDYVhSelZHOUlZV3htS0hVeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCMWFXNTBNVFpDYVhSelZHOUlZV3htS0hVeE5uWmxZelFwTzJsdWRDQWdJQ0FnSUhCaFkydEpiblF5ZURFMktHa3hOblpsWXpJcE8zVnBiblFnSUNBZ0lIQmhZMnRWYVc1ME1uZ3hOaWgxTVRaMlpXTXlLVHRwYm5RMk5GOTBJQ0J3WVdOclNXNTBOSGd4TmlocE1UWjJaV00wS1R0MWFXNTBOalJmZENCd1lXTnJWV2x1ZERSNE1UWW9kVEUyZG1Wak5DazdhVEUyZG1Wak1pQWdkVzV3WVdOclNXNTBNbmd4TmlocGJuUXBPM1V4Tm5abFl6SWdJSFZ1Y0dGamExVnBiblF5ZURFMktIVnBiblFwTzJreE5uWmxZelFnSUhWdWNHRmphMGx1ZERSNE1UWW9hVzUwTmpSZmRDazdkVEUyZG1Wak5DQWdkVzV3WVdOclZXbHVkRFI0TVRZb2RXbHVkRFkwWDNRcE8ySjJaV015SUd4bGMzTlVhR0Z1S0dreE5uWmxZeklzSUdreE5uWmxZeklwTzJKMlpXTXpJR3hsYzNOVWFHRnVLR2t4Tm5abFl6TXNJR2t4Tm5abFl6TXBPMkoyWldNMElHeGxjM05VYUdGdUtHa3hOblpsWXpRc0lHa3hOblpsWXpRcE8ySjJaV015SUd4bGMzTlVhR0Z1S0hVeE5uWmxZeklzSUhVeE5uWmxZeklwTzJKMlpXTXpJR3hsYzNOVWFHRnVLSFV4Tm5abFl6TXNJSFV4Tm5abFl6TXBPMkoyWldNMElHeGxjM05VYUdGdUtIVXhOblpsWXpRc0lIVXhOblpsWXpRcE8ySjJaV015SUd4bGMzTlVhR0Z1UlhGMVlXd29hVEUyZG1Wak1pd2dhVEUyZG1Wak1pazdZblpsWXpNZ2JHVnpjMVJvWVc1RmNYVmhiQ2hwTVRaMlpXTXpMQ0JwTVRaMlpXTXpLVHRpZG1Wak5DQnNaWE56VkdoaGJrVnhkV0ZzS0dreE5uWmxZelFzSUdreE5uWmxZelFwTzJKMlpXTXlJR3hsYzNOVWFHRnVSWEYxWVd3b2RURTJkbVZqTWl3Z2RURTJkbVZqTWlrN1luWmxZek1nYkdWemMxUm9ZVzVGY1hWaGJDaDFNVFoyWldNekxDQjFNVFoyWldNektUdGlkbVZqTkNCc1pYTnpWR2hoYmtWeGRXRnNLSFV4Tm5abFl6UXNJSFV4Tm5abFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVLR2t4Tm5abFl6SXNJR2t4Tm5abFl6SXBPMkoyWldNeklHZHlaV0YwWlhKVWFHRnVLR2t4Tm5abFl6TXNJR2t4Tm5abFl6TXBPMkoyWldNMElHZHlaV0YwWlhKVWFHRnVLR2t4Tm5abFl6UXNJR2t4Tm5abFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVLSFV4Tm5abFl6SXNJSFV4Tm5abFl6SXBPMkoyWldNeklHZHlaV0YwWlhKVWFHRnVLSFV4Tm5abFl6TXNJSFV4Tm5abFl6TXBPMkoyWldNMElHZHlaV0YwWlhKVWFHRnVLSFV4Tm5abFl6UXNJSFV4Tm5abFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b2FURTJkbVZqTWl3Z2FURTJkbVZqTWlrN1luWmxZek1nWjNKbFlYUmxjbFJvWVc1RmNYVmhiQ2hwTVRaMlpXTXpMQ0JwTVRaMlpXTXpLVHRpZG1Wak5DQm5jbVZoZEdWeVZHaGhia1Z4ZFdGc0tHa3hOblpsWXpRc0lHa3hOblpsWXpRcE8ySjJaV015SUdkeVpXRjBaWEpVYUdGdVJYRjFZV3dvZFRFMmRtVmpNaXdnZFRFMmRtVmpNaWs3WW5abFl6TWdaM0psWVhSbGNsUm9ZVzVGY1hWaGJDaDFNVFoyWldNekxDQjFNVFoyWldNektUdGlkbVZqTkNCbmNtVmhkR1Z5VkdoaGJrVnhkV0ZzS0hVeE5uWmxZelFzSUhVeE5uWmxZelFwTzJKMlpXTXlJR1Z4ZFdGc0tHa3hOblpsWXpJc0lHa3hOblpsWXpJcE8ySjJaV016SUdWeGRXRnNLR2t4Tm5abFl6TXNJR2t4Tm5abFl6TXBPMkoyWldNMElHVnhkV0ZzS0dreE5uWmxZelFzSUdreE5uWmxZelFwTzJKMlpXTXlJR1Z4ZFdGc0tIVXhOblpsWXpJc0lIVXhOblpsWXpJcE8ySjJaV016SUdWeGRXRnNLSFV4Tm5abFl6TXNJSFV4Tm5abFl6TXBPMkoyWldNMElHVnhkV0ZzS0hVeE5uWmxZelFzSUhVeE5uWmxZelFwTzJKMlpXTXlJRzV2ZEVWeGRXRnNLR2t4Tm5abFl6SXNJR2t4Tm5abFl6SXBPMkoyWldNeklHNXZkRVZ4ZFdGc0tHa3hOblpsWXpNc0lHa3hOblpsWXpNcE8ySjJaV00wSUc1dmRFVnhkV0ZzS0dreE5uWmxZelFzSUdreE5uWmxZelFwTzJKMlpXTXlJRzV2ZEVWeGRXRnNLSFV4Tm5abFl6SXNJSFV4Tm5abFl6SXBPMkoyWldNeklHNXZkRVZ4ZFdGc0tIVXhOblpsWXpNc0lIVXhOblpsWXpNcE8ySjJaV00wSUc1dmRFVnhkV0ZzS0hVeE5uWmxZelFzSUhVeE5uWmxZelFwT3lBZ2FXNTBNVFpmZENCaWFYUm1hV1ZzWkVWNGRISmhZM1FvSUNCcGJuUXhObDkwTENCcGJuUXhObDkwTENCcGJuUXhObDkwS1R0cE1UWjJaV015SUdKcGRHWnBaV3hrUlhoMGNtRmpkQ2hwTVRaMlpXTXlMQ0JwYm5ReE5sOTBMQ0JwYm5ReE5sOTBLVHRwTVRaMlpXTXpJR0pwZEdacFpXeGtSWGgwY21GamRDaHBNVFoyWldNekxDQnBiblF4Tmw5MExDQnBiblF4Tmw5MEtUdHBNVFoyWldNMElHSnBkR1pwWld4a1JYaDBjbUZqZENocE1UWjJaV00wTENCcGJuUXhObDkwTENCcGJuUXhObDkwS1RzZ2RXbHVkREUyWDNRZ1ltbDBabWxsYkdSRmVIUnlZV04wS0NCMWFXNTBNVFpmZEN3Z2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN2RURTJkbVZqTWlCaWFYUm1hV1ZzWkVWNGRISmhZM1FvZFRFMmRtVmpNaXdnYVc1ME1UWmZkQ3dnYVc1ME1UWmZkQ2s3ZFRFMmRtVmpNeUJpYVhSbWFXVnNaRVY0ZEhKaFkzUW9kVEUyZG1Wak15d2dhVzUwTVRaZmRDd2dhVzUwTVRaZmRDazdkVEUyZG1Wak5DQmlhWFJtYVdWc1pFVjRkSEpoWTNRb2RURTJkbVZqTkN3Z2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN0lDQnBiblF4Tmw5MElHSnBkR1pwWld4a1NXNXpaWEowS0NBZ2FXNTBNVFpmZENCaVlYTmxMQ0FnSUdsdWRERTJYM1FzSUdsdWRERTJYM1FzSUdsdWRERTJYM1FwTzJreE5uWmxZeklnWW1sMFptbGxiR1JKYm5ObGNuUW9hVEUyZG1Wak1pQmlZWE5sTENCcE1UWjJaV015TENCcGJuUXhObDkwTENCcGJuUXhObDkwS1R0cE1UWjJaV016SUdKcGRHWnBaV3hrU1c1elpYSjBLR2t4Tm5abFl6TWdZbUZ6WlN3Z2FURTJkbVZqTXl3Z2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN2FURTJkbVZqTkNCaWFYUm1hV1ZzWkVsdWMyVnlkQ2hwTVRaMlpXTTBJR0poYzJVc0lHa3hOblpsWXpRc0lHbHVkREUyWDNRc0lHbHVkREUyWDNRcE95QjFhVzUwTVRaZmRDQmlhWFJtYVdWc1pFbHVjMlZ5ZENnZ2RXbHVkREUyWDNRZ1ltRnpaU3dnSUhWcGJuUXhObDkwTENCcGJuUXhObDkwTENCcGJuUXhObDkwS1R0MU1UWjJaV015SUdKcGRHWnBaV3hrU1c1elpYSjBLSFV4Tm5abFl6SWdZbUZ6WlN3Z2RURTJkbVZqTWl3Z2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN2RURTJkbVZqTXlCaWFYUm1hV1ZzWkVsdWMyVnlkQ2gxTVRaMlpXTXpJR0poYzJVc0lIVXhOblpsWXpNc0lHbHVkREUyWDNRc0lHbHVkREUyWDNRcE8zVXhOblpsWXpRZ1ltbDBabWxsYkdSSmJuTmxjblFvZFRFMmRtVmpOQ0JpWVhObExDQjFNVFoyWldNMExDQnBiblF4Tmw5MExDQnBiblF4Tmw5MEtUc2dJR2x1ZERFMlgzUWdZbWwwUTI5MWJuUW9JQ0JwYm5ReE5sOTBLVHRwTVRaMlpXTXlJR0pwZEVOdmRXNTBLR2t4Tm5abFl6SXBPMmt4Tm5abFl6TWdZbWwwUTI5MWJuUW9hVEUyZG1Wak15azdhVEUyZG1Wak5DQmlhWFJEYjNWdWRDaHBNVFoyWldNMEtUc2dJR2x1ZERFMlgzUWdZbWwwUTI5MWJuUW9JSFZwYm5ReE5sOTBLVHRwTVRaMlpXTXlJR0pwZEVOdmRXNTBLSFV4Tm5abFl6SXBPMmt4Tm5abFl6TWdZbWwwUTI5MWJuUW9kVEUyZG1Wak15azdhVEUyZG1Wak5DQmlhWFJEYjNWdWRDaDFNVFoyWldNMEtUc2dJR2x1ZERFMlgzUWdabWx1WkV4VFFpZ2dJR2x1ZERFMlgzUXBPMmt4Tm5abFl6SWdabWx1WkV4VFFpaHBNVFoyWldNeUtUdHBNVFoyWldNeklHWnBibVJNVTBJb2FURTJkbVZqTXlrN2FURTJkbVZqTkNCbWFXNWtURk5DS0dreE5uWmxZelFwT3lBZ2FXNTBNVFpmZENCbWFXNWtURk5DS0NCMWFXNTBNVFpmZENrN2FURTJkbVZqTWlCbWFXNWtURk5DS0hVeE5uWmxZeklwTzJreE5uWmxZek1nWm1sdVpFeFRRaWgxTVRaMlpXTXpLVHRwTVRaMlpXTTBJR1pwYm1STVUwSW9kVEUyZG1Wak5DazdJQ0JwYm5ReE5sOTBJR1pwYm1STlUwSW9JQ0JwYm5ReE5sOTBLVHRwTVRaMlpXTXlJR1pwYm1STlUwSW9hVEUyZG1Wak1pazdhVEUyZG1Wak15Qm1hVzVrVFZOQ0tHa3hOblpsWXpNcE8ya3hOblpsWXpRZ1ptbHVaRTFUUWlocE1UWjJaV00wS1RzZ0lHbHVkREUyWDNRZ1ptbHVaRTFUUWlnZ2RXbHVkREUyWDNRcE8ya3hOblpsWXpJZ1ptbHVaRTFUUWloMU1UWjJaV015S1R0cE1UWjJaV016SUdacGJtUk5VMElvZFRFMmRtVmpNeWs3YVRFMmRtVmpOQ0JtYVc1a1RWTkNLSFV4Tm5abFl6UXBPMmx1ZERFMlgzUWdJSEJoWTJzeE5paHBPSFpsWXpJcE8zVnBiblF4Tmw5MElIQmhZMnN4TmloMU9IWmxZeklwTzJsdWRETXlYM1FnSUhCaFkyc3pNaWhwT0habFl6UXBPM1ZwYm5Rek1sOTBJSEJoWTJzek1paDFPSFpsWXpRcE8ybHVkRE15WDNRZ0lIQmhZMnN6TWlocE1UWjJaV015S1R0MWFXNTBNekpmZENCd1lXTnJNeklvZFRFMmRtVmpNaWs3YVc1ME5qUmZkQ0FnY0dGamF6WTBLR2t4Tm5abFl6UXBPM1ZwYm5RMk5GOTBJSEJoWTJzMk5DaDFNVFoyWldNMEtUdHBiblEyTkY5MElDQndZV05yTmpRb2FUTXlkbVZqTWlrN2RXbHVkRFkwWDNRZ2NHRmphelkwS0hVek1uWmxZeklwTzJrNGRtVmpNaUFnSUhWdWNHRmphemdvYVc1ME1UWmZkQ2s3ZFRoMlpXTXlJQ0FnZFc1d1lXTnJPQ2gxYVc1ME1UWmZkQ2s3YVRoMlpXTTBJQ0FnZFc1d1lXTnJPQ2hwYm5Rek1sOTBLVHQxT0habFl6UWdJQ0IxYm5CaFkyczRLSFZwYm5Rek1sOTBLVHRwTVRaMlpXTXlJQ0IxYm5CaFkyc3hOaWhwYm5Rek1sOTBLVHQxTVRaMlpXTXlJQ0IxYm5CaFkyc3hOaWgxYVc1ME16SmZkQ2s3YVRFMmRtVmpOQ0FnZFc1d1lXTnJNVFlvYVc1ME5qUmZkQ2s3ZFRFMmRtVmpOQ0FnZFc1d1lXTnJNVFlvZFdsdWREWTBYM1FwTzJrek1uWmxZeklnSUhWdWNHRmphek15S0dsdWREWTBYM1FwTzNVek1uWmxZeklnSUhWdWNHRmphek15S0hWcGJuUTJORjkwS1R0bWJHOWhkRFkwWDNRZ2NtRmthV0Z1Y3lobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQnlZV1JwWVc1ektHWTJOSFpsWXpJcE8yWTJOSFpsWXpNZ0lDQnlZV1JwWVc1ektHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQnlZV1JwWVc1ektHWTJOSFpsWXpRcE8yWnNiMkYwTmpSZmRDQmtaV2R5WldWektHWnNiMkYwTmpSZmRDazdaalkwZG1Wak1pQWdJR1JsWjNKbFpYTW9aalkwZG1Wak1pazdaalkwZG1Wak15QWdJR1JsWjNKbFpYTW9aalkwZG1Wak15azdaalkwZG1Wak5DQWdJR1JsWjNKbFpYTW9aalkwZG1Wak5DazdabXh2WVhRMk5GOTBJSE5wYmlobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQnphVzRvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUhOcGJpaG1OalIyWldNektUdG1OalIyWldNMElDQWdjMmx1S0dZMk5IWmxZelFwTzJac2IyRjBOalJmZENCamIzTW9abXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWTI5ektHWTJOSFpsWXpJcE8yWTJOSFpsWXpNZ0lDQmpiM01vWmpZMGRtVmpNeWs3WmpZMGRtVmpOQ0FnSUdOdmN5aG1OalIyWldNMEtUdG1iRzloZERZMFgzUWdkR0Z1S0dac2IyRjBOalJmZENrN1pqWTBkbVZqTWlBZ0lIUmhiaWhtTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnZEdGdUtHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQjBZVzRvWmpZMGRtVmpOQ2s3Wm14dllYUTJORjkwSUdGemFXNG9abXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWVhOcGJpaG1OalIyWldNeUtUdG1OalIyWldNeklDQWdZWE5wYmlobU5qUjJaV016S1R0bU5qUjJaV00wSUNBZ1lYTnBiaWhtTmpSMlpXTTBLVHRtYkc5aGREWTBYM1FnWVdOdmN5aG1iRzloZERZMFgzUXBPMlkyTkhabFl6SWdJQ0JoWTI5ektHWTJOSFpsWXpJcE8yWTJOSFpsWXpNZ0lDQmhZMjl6S0dZMk5IWmxZek1wTzJZMk5IWmxZelFnSUNCaFkyOXpLR1kyTkhabFl6UXBPMlpzYjJGME5qUmZkQ0JoZEdGdUtHWnNiMkYwTmpSZmRDd2dabXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWVhSaGJpaG1OalIyWldNeUxDQWdJR1kyTkhabFl6SXBPMlkyTkhabFl6TWdJQ0JoZEdGdUtHWTJOSFpsWXpNc0lDQWdaalkwZG1Wak15azdaalkwZG1Wak5DQWdJR0YwWVc0b1pqWTBkbVZqTkN3Z0lDQm1OalIyWldNMEtUdG1iRzloZERZMFgzUWdZWFJoYmlobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQmhkR0Z1S0dZMk5IWmxZeklwTzJZMk5IWmxZek1nSUNCaGRHRnVLR1kyTkhabFl6TXBPMlkyTkhabFl6UWdJQ0JoZEdGdUtHWTJOSFpsWXpRcE8yWnNiMkYwTmpSZmRDQnphVzVvS0dac2IyRjBOalJmZENrN1pqWTBkbVZqTWlBZ0lITnBibWdvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUhOcGJtZ29aalkwZG1Wak15azdaalkwZG1Wak5DQWdJSE5wYm1nb1pqWTBkbVZqTkNrN1pteHZZWFEyTkY5MElHTnZjMmdvWm14dllYUTJORjkwS1R0bU5qUjJaV015SUNBZ1kyOXphQ2htTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnWTI5emFDaG1OalIyWldNektUdG1OalIyWldNMElDQWdZMjl6YUNobU5qUjJaV00wS1R0bWJHOWhkRFkwWDNRZ2RHRnVhQ2htYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCMFlXNW9LR1kyTkhabFl6SXBPMlkyTkhabFl6TWdJQ0IwWVc1b0tHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQjBZVzVvS0dZMk5IWmxZelFwTzJac2IyRjBOalJmZENCaGMybHVhQ2htYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCaGMybHVhQ2htTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnWVhOcGJtZ29aalkwZG1Wak15azdaalkwZG1Wak5DQWdJR0Z6YVc1b0tHWTJOSFpsWXpRcE8yWnNiMkYwTmpSZmRDQmhZMjl6YUNobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQmhZMjl6YUNobU5qUjJaV015S1R0bU5qUjJaV016SUNBZ1lXTnZjMmdvWmpZMGRtVmpNeWs3WmpZMGRtVmpOQ0FnSUdGamIzTm9LR1kyTkhabFl6UXBPMlpzYjJGME5qUmZkQ0JoZEdGdWFDaG1iRzloZERZMFgzUXBPMlkyTkhabFl6SWdJQ0JoZEdGdWFDaG1OalIyWldNeUtUdG1OalIyWldNeklDQWdZWFJoYm1nb1pqWTBkbVZqTXlrN1pqWTBkbVZqTkNBZ0lHRjBZVzVvS0dZMk5IWmxZelFwTzJac2IyRjBOalJmZENCd2IzY29abXh2WVhRMk5GOTBMQ0JtYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCd2IzY29aalkwZG1Wak1pd2dJQ0JtTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnY0c5M0tHWTJOSFpsWXpNc0lDQWdaalkwZG1Wak15azdaalkwZG1Wak5DQWdJSEJ2ZHlobU5qUjJaV00wTENBZ0lHWTJOSFpsWXpRcE8yWnNiMkYwTmpSZmRDQmxlSEFvWm14dllYUTJORjkwS1R0bU5qUjJaV015SUNBZ1pYaHdLR1kyTkhabFl6SXBPMlkyTkhabFl6TWdJQ0JsZUhBb1pqWTBkbVZqTXlrN1pqWTBkbVZqTkNBZ0lHVjRjQ2htTmpSMlpXTTBLVHRtYkc5aGREWTBYM1FnYkc5bktHWnNiMkYwTmpSZmRDazdaalkwZG1Wak1pQWdJR3h2WnlobU5qUjJaV015S1R0bU5qUjJaV016SUNBZ2JHOW5LR1kyTkhabFl6TXBPMlkyTkhabFl6UWdJQ0JzYjJjb1pqWTBkbVZqTkNrN1pteHZZWFEyTkY5MElHVjRjRElvWm14dllYUTJORjkwS1R0bU5qUjJaV015SUNBZ1pYaHdNaWhtTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnWlhod01paG1OalIyWldNektUdG1OalIyWldNMElDQWdaWGh3TWlobU5qUjJaV00wS1R0bWJHOWhkRFkwWDNRZ2JHOW5NaWhtYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCc2IyY3lLR1kyTkhabFl6SXBPMlkyTkhabFl6TWdJQ0JzYjJjeUtHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQnNiMmN5S0dZMk5IWmxZelFwT3dvQVpteHZZWFEyTkY5MElHbHVkR1Z5Y0c5c1lYUmxRWFJEWlc1MGNtOXBaQ2htYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCcGJuUmxjbkJ2YkdGMFpVRjBRMlZ1ZEhKdmFXUW9aalkwZG1Wak1pazdaalkwZG1Wak15QWdJR2x1ZEdWeWNHOXNZWFJsUVhSRFpXNTBjbTlwWkNobU5qUjJaV016S1R0bU5qUjJaV00wSUNBZ2FXNTBaWEp3YjJ4aGRHVkJkRU5sYm5SeWIybGtLR1kyTkhabFl6UXBPMlpzYjJGME5qUmZkQ0JwYm5SbGNuQnZiR0YwWlVGMFUyRnRjR3hsS0dac2IyRjBOalJmZEN3Z2FXNTBLVHRtTmpSMlpXTXlJQ0FnYVc1MFpYSndiMnhoZEdWQmRGTmhiWEJzWlNobU5qUjJaV015TENBZ0lHbHVkQ2s3WmpZMGRtVmpNeUFnSUdsdWRHVnljRzlzWVhSbFFYUlRZVzF3YkdVb1pqWTBkbVZqTXl3Z0lDQnBiblFwTzJZMk5IWmxZelFnSUNCcGJuUmxjbkJ2YkdGMFpVRjBVMkZ0Y0d4bEtHWTJOSFpsWXpRc0lDQWdhVzUwS1R0bWJHOWhkRFkwWDNRZ2FXNTBaWEp3YjJ4aGRHVkJkRTltWm5ObGRDaG1iRzloZERZMFgzUXNJR1kyTkhabFl6SXBPMlkyTkhabFl6SWdJQ0JwYm5SbGNuQnZiR0YwWlVGMFQyWm1jMlYwS0dZMk5IWmxZeklzSUNBZ1pqWTBkbVZqTWlrN1pqWTBkbVZqTXlBZ0lHbHVkR1Z5Y0c5c1lYUmxRWFJQWm1aelpYUW9aalkwZG1Wak15d2dJQ0JtTmpSMlpXTXlLVHRtTmpSMlpXTTBJQ0FnYVc1MFpYSndiMnhoZEdWQmRFOW1abk5sZENobU5qUjJaV00wTENBZ0lHWTJOSFpsWXpJcE93b0FkbVZqTkNCbWRISmhibk5tYjNKdEtDazdBSFpsWXpRZ2RHVjRkSFZ5WlRKRVRHOWtLSE5oYlhCc1pYSXlSQ3dnZG1Wak1pd2dabXh2WVhRcE8zWmxZelFnZEdWNGRIVnlaVEpFVUhKdmFreHZaQ2h6WVcxd2JHVnlNa1FzSUhabFl6TXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV5UkZCeWIycE1iMlFvYzJGdGNHeGxjakpFTENCMlpXTTBMQ0JtYkc5aGRDazdkbVZqTkNCMFpYaDBkWEpsTTBSTWIyUW9jMkZ0Y0d4bGNqTkVMQ0IyWldNekxDQm1iRzloZENrN2RtVmpOQ0IwWlhoMGRYSmxNMFJRY205cVRHOWtLSE5oYlhCc1pYSXpSQ3dnZG1Wak5Dd2dabXh2WVhRcE8zWmxZelFnZEdWNGRIVnlaVU4xWW1WTWIyUW9jMkZ0Y0d4bGNrTjFZbVVzSUhabFl6TXNJR1pzYjJGMEtUc0tBSFpsWXpRZ2RHVjRkSFZ5WlRGRVRHOWtLSE5oYlhCc1pYSXhSQ3dnWm14dllYUXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV4UkZCeWIycE1iMlFvYzJGdGNHeGxjakZFTENCMlpXTXlMQ0JtYkc5aGRDazdkbVZqTkNCMFpYaDBkWEpsTVVSUWNtOXFURzlrS0hOaGJYQnNaWEl4UkN3Z2RtVmpOQ3dnWm14dllYUXBPM1psWXpRZ2MyaGhaRzkzTVVSTWIyUW9jMkZ0Y0d4bGNqRkVVMmhoWkc5M0xDQjJaV016TENCbWJHOWhkQ2s3ZG1Wak5DQnphR0ZrYjNjeVJFeHZaQ2h6WVcxd2JHVnlNa1JUYUdGa2IzY3NJSFpsWXpNc0lHWnNiMkYwS1R0MlpXTTBJSE5vWVdSdmR6RkVVSEp2YWt4dlpDaHpZVzF3YkdWeU1VUlRhR0ZrYjNjc0lIWmxZelFzSUdac2IyRjBLVHQyWldNMElITm9ZV1J2ZHpKRVVISnZha3h2WkNoellXMXdiR1Z5TWtSVGFHRmtiM2NzSUhabFl6UXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV4UkVkeVlXUkJVa0lvYzJGdGNHeGxjakZFTENCbWJHOWhkQ3dnWm14dllYUXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV4UkZCeWIycEhjbUZrUVZKQ0tITmhiWEJzWlhJeFJDd2dkbVZqTWl3Z1pteHZZWFFzSUdac2IyRjBLVHQyWldNMElIUmxlSFIxY21VeFJGQnliMnBIY21Ga1FWSkNLSE5oYlhCc1pYSXhSQ3dnZG1Wak5Dd2dabXh2WVhRc0lHWnNiMkYwS1R0MlpXTTBJSFJsZUhSMWNtVXlSRWR5WVdSQlVrSW9jMkZ0Y0d4bGNqSkVMQ0IyWldNeUxDQjJaV015TENCMlpXTXlLVHQyWldNMElIUmxlSFIxY21VeVJGQnliMnBIY21Ga1FWSkNLSE5oYlhCc1pYSXlSQ3dnZG1Wak15d2dkbVZqTWl3Z2RtVmpNaWs3ZG1Wak5DQjBaWGgwZFhKbE1rUlFjbTlxUjNKaFpFRlNRaWh6WVcxd2JHVnlNa1FzSUhabFl6UXNJSFpsWXpJc0lIWmxZeklwTzNabFl6UWdkR1Y0ZEhWeVpUTkVSM0poWkVGU1FpaHpZVzF3YkdWeU0wUXNJSFpsWXpNc0lIWmxZek1zSUhabFl6TXBPM1psWXpRZ2RHVjRkSFZ5WlRORVVISnZha2R5WVdSQlVrSW9jMkZ0Y0d4bGNqTkVMQ0IyWldNMExDQjJaV016TENCMlpXTXpLVHQyWldNMElIUmxlSFIxY21WRGRXSmxSM0poWkVGU1FpaHpZVzF3YkdWeVEzVmlaU3dnZG1Wak15d2dkbVZqTXl3Z2RtVmpNeWs3ZG1Wak5DQnphR0ZrYjNjeFJFZHlZV1JCVWtJb2MyRnRjR3hsY2pGRVUyaGhaRzkzTENCMlpXTXpMQ0JtYkc5aGRDd2dabXh2WVhRcE8zWmxZelFnYzJoaFpHOTNNVVJRY205cVIzSmhaRUZTUWlnZ2MyRnRjR3hsY2pGRVUyaGhaRzkzTENCMlpXTTBMQ0JtYkc5aGRDd2dabXh2WVhRcE8zWmxZelFnYzJoaFpHOTNNa1JIY21Ga1FWSkNLSE5oYlhCc1pYSXlSRk5vWVdSdmR5d2dkbVZqTXl3Z2RtVmpNaXdnZG1Wak1pazdkbVZqTkNCemFHRmtiM2N5UkZCeWIycEhjbUZrUVZKQ0tDQnpZVzF3YkdWeU1rUlRhR0ZrYjNjc0lIWmxZelFzSUhabFl6SXNJSFpsWXpJcE8zWmxZelFnZEdWNGRIVnlaVEpFVW1WamRFZHlZV1JCVWtJb2MyRnRjR3hsY2pKRVVtVmpkQ3dnZG1Wak1pd2dkbVZqTWl3Z2RtVmpNaWs3ZG1Wak5DQjBaWGgwZFhKbE1rUlNaV04wVUhKdmFrZHlZV1JCVWtJb0lITmhiWEJzWlhJeVJGSmxZM1FzSUhabFl6TXNJSFpsWXpJc0lIWmxZeklwTzNabFl6UWdkR1Y0ZEhWeVpUSkVVbVZqZEZCeWIycEhjbUZrUVZKQ0tDQnpZVzF3YkdWeU1rUlNaV04wTENCMlpXTTBMQ0IyWldNeUxDQjJaV015S1R0MlpXTTBJSE5vWVdSdmR6SkVVbVZqZEVkeVlXUkJVa0lvSUhOaGJYQnNaWEl5UkZKbFkzUlRhR0ZrYjNjc0lIWmxZek1zSUhabFl6SXNJSFpsWXpJcE8zWmxZelFnYzJoaFpHOTNNa1JTWldOMFVISnZha2R5WVdSQlVrSW9jMkZ0Y0d4bGNqSkVVbVZqZEZOb1lXUnZkeXdnZG1Wak5Dd2dkbVZqTWl3Z2RtVmpNaWs3Q2dCMmIybGtJRVZ0YVhSVGRISmxZVzFXWlhKMFpYZ29hVzUwS1R0MmIybGtJRVZ1WkZOMGNtVmhiVkJ5YVcxcGRHbDJaU2hwYm5RcE93QjJiMmxrSUVWdGFYUldaWEowWlhnb0tUdDJiMmxrSUVWdVpGQnlhVzFwZEdsMlpTZ3BPd29BZG05cFpDQmlZWEp5YVdWeUtDazdBSFp2YVdRZ2JXVnRiM0o1UW1GeWNtbGxjaWdwT3dCMmIybGtJRzFsYlc5eWVVSmhjbkpwWlhKQ2RXWm1aWElvS1RzQWRtOXBaQ0J0WlcxdmNubENZWEp5YVdWeVUyaGhjbVZrS0NrN2RtOXBaQ0JuY205MWNFMWxiVzl5ZVVKaGNuSnBaWElvS1RzQWRtOXBaQ0J0WlcxdmNubENZWEp5YVdWeVFYUnZiV2xqUTI5MWJuUmxjaWdwTzNadmFXUWdiV1Z0YjNKNVFtRnljbWxsY2tsdFlXZGxLQ2s3QUhadmFXUWdZMjl1ZEhKdmJFSmhjbkpwWlhJb2FXNTBMQ0JwYm5Rc0lHbHVkQ3dnYVc1MEtUc0tkbTlwWkNCdFpXMXZjbmxDWVhKeWFXVnlLR2x1ZEN3Z2FXNTBMQ0JwYm5RcE93b0FkbTlwWkNCamIyOXdUV0YwVEc5aFpFNVdLRzkxZENCbVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJR1pzYjJGME1UWmZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRXh2WVdST1ZpaHZkWFFnWm1OdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQm1iRzloZEZ0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEV4dllXUk9WaWh2ZFhRZ1ptTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxYVc1ME9GOTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBURzloWkU1V0tHOTFkQ0JtWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElIVnBiblF4Tmw5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQm1ZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUhWcGJuUmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUk1iMkZrVGxZb2IzVjBJR1pqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2RXbHVkRFkwWDNSYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSTWIyRmtUbFlvYjNWMElHWmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFhabFl6SmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUk1iMkZrVGxZb2IzVjBJR1pqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2RYWmxZelJiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR1pqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ1pteHZZWFF4Tmw5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFUzUnZjbVZPVmlobVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJR1pzYjJGMFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFUzUnZjbVZPVmlobVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJR1pzYjJGME5qUmZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9abU52YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCMWFXNTBPRjkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWhtWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElIVnBiblF4Tmw5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFUzUnZjbVZPVmlobVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJSFZwYm5SYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSVGRHOXlaVTVXS0daamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdkV2x1ZERZMFgzUmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUlRkRzl5WlU1V0tHWmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFhabFl6SmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUlRkRzl5WlU1V0tHWmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFhabFl6UmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwbVkyOXZjRzFoZEU1V0lHTnZiM0JOWVhSTmRXeEJaR1JPVmlobVkyOXZjRzFoZEU1V0lFRXNJR1pqYjI5d2JXRjBUbFlnUWl3Z1ptTnZiM0J0WVhST1ZpQkRLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQnBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWREaGZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRXh2WVdST1ZpaHZkWFFnYVdOdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQnBiblF4Tmw5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQnBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWRGdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRFeHZZV1JPVmlodmRYUWdhV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUTJORjkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVEc5aFpFNVdLRzkxZENCcFkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJR2wyWldNeVcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQnBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsMlpXTTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBURzloWkU1V0tHOTFkQ0JwWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElIVnBiblE0WDNSYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSTWIyRmtUbFlvYjNWMElHbGpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFdsdWRERTJYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJNYjJGa1RsWW9iM1YwSUdsamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdkV2x1ZEZ0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEV4dllXUk9WaWh2ZFhRZ2FXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxYVc1ME5qUmZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRXh2WVdST1ZpaHZkWFFnYVdOdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQjFkbVZqTWx0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEV4dllXUk9WaWh2ZFhRZ2FXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxZG1Wak5GdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRFeHZZV1JPVmlodmRYUWdkV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUTRYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJNYjJGa1RsWW9iM1YwSUhWamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdhVzUwTVRaZmRGdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRFeHZZV1JPVmlodmRYUWdkV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUk1iMkZrVGxZb2IzVjBJSFZqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2FXNTBOalJmZEZ0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEV4dllXUk9WaWh2ZFhRZ2RXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0JwZG1Wak1sdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRFeHZZV1JPVmlodmRYUWdkV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGRtVmpORnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRXh2WVdST1ZpaHZkWFFnZFdOdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQjFhVzUwT0Y5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQjFZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUhWcGJuUXhObDkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVEc5aFpFNVdLRzkxZENCMVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJSFZwYm5SYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSTWIyRmtUbFlvYjNWMElIVmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFdsdWREWTBYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJNYjJGa1RsWW9iM1YwSUhWamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdkWFpsWXpKYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSTWIyRmtUbFlvYjNWMElIVmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFhabFl6UmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUlRkRzl5WlU1V0tHbGpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnYVc1ME9GOTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaHBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWRERTJYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR2xqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2FXNTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaHBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWREWTBYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR2xqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2FYWmxZekpiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR2xqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2FYWmxZelJiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR2xqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2RXbHVkRGhmZEZ0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEZOMGIzSmxUbFlvYVdOdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQjFhVzUwTVRaZmRGdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRGTjBiM0psVGxZb2FXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxYVc1MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFUzUnZjbVZPVmlocFkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJSFZwYm5RMk5GOTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaHBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUhWMlpXTXlXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaHBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUhWMlpXTTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaDFZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWREaGZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9kV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUXhObDkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWgxWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElHbHVkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9kV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUTJORjkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWgxWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElHbDJaV015VzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWgxWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElHbDJaV00wVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWgxWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElIVnBiblE0WDNSYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSVGRHOXlaVTVXS0hWamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdkV2x1ZERFMlgzUmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUlRkRzl5WlU1V0tIVmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFdsdWRGdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRGTjBiM0psVGxZb2RXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxYVc1ME5qUmZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9kV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCMWRtVmpNbHRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9kV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCMWRtVmpORnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NtbGpiMjl3YldGMFRsWWdZMjl2Y0UxaGRFMTFiRUZrWkU1V0tHbGpiMjl3YldGMFRsWWdRU3dnYVdOdmIzQnRZWFJPVmlCQ0xDQnBZMjl2Y0cxaGRFNVdJRU1wT3dwMVkyOXZjRzFoZEU1V0lHTnZiM0JOWVhSTmRXeEJaR1JPVmloMVkyOXZjRzFoZEU1V0lFRXNJSFZqYjI5d2JXRjBUbFlnUWl3Z2RXTnZiM0J0WVhST1ZpQkRLVHNLQUhabFl6UWdkR1Y0ZEhWeVpUSkVLSE5oYlhCc1pYSXlSQ3dnZG1Wak1pd2dabXh2WVhRcE8zWmxZelFnZEdWNGRIVnlaVEpFVUhKdmFpaHpZVzF3YkdWeU1rUXNJSFpsWXpNc0lHWnNiMkYwS1R0MlpXTTBJSFJsZUhSMWNtVXlSRkJ5YjJvb2MyRnRjR3hsY2pKRUxDQjJaV00wTENCbWJHOWhkQ2s3ZG1Wak5DQjBaWGgwZFhKbE0wUW9jMkZ0Y0d4bGNqTkVMQ0IyWldNekxDQm1iRzloZENrN2RtVmpOQ0IwWlhoMGRYSmxNMFJRY205cUtITmhiWEJzWlhJelJDd2dkbVZqTkN3Z1pteHZZWFFwTzNabFl6UWdkR1Y0ZEhWeVpVTjFZbVVvYzJGdGNHeGxja04xWW1Vc0lIWmxZek1zSUdac2IyRjBLVHNLQUhabFl6UWdkR1Y0ZEhWeVpURkVLSE5oYlhCc1pYSXhSQ3dnWm14dllYUXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV4UkZCeWIyb29jMkZ0Y0d4bGNqRkVMQ0IyWldNeUxDQm1iRzloZENrN2RtVmpOQ0IwWlhoMGRYSmxNVVJRY205cUtITmhiWEJzWlhJeFJDd2dkbVZqTkN3Z1pteHZZWFFwTzNabFl6UWdjMmhoWkc5M01VUW9jMkZ0Y0d4bGNqRkVVMmhoWkc5M0xDQjJaV016TENCbWJHOWhkQ2s3ZG1Wak5DQnphR0ZrYjNjeVJDaHpZVzF3YkdWeU1rUlRhR0ZrYjNjc0lIWmxZek1zSUdac2IyRjBLVHQyWldNMElITm9ZV1J2ZHpGRVVISnZhaWh6WVcxd2JHVnlNVVJUYUdGa2IzY3NJSFpsWXpRc0lHWnNiMkYwS1R0MlpXTTBJSE5vWVdSdmR6SkVVSEp2YWloellXMXdiR1Z5TWtSVGFHRmtiM2NzSUhabFl6UXNJR1pzYjJGMEtUc0tBSFpsWXpRZ2RHVjRkSFZ5WlRKRVRHOWtSVmhVS0hOaGJYQnNaWEl5UkN3Z2RtVmpNaXdnWm14dllYUXBPM1psWXpRZ2RHVjRkSFZ5WlRKRVVISnZha3h2WkVWWVZDaHpZVzF3YkdWeU1rUXNJSFpsWXpNc0lHWnNiMkYwS1R0MlpXTTBJSFJsZUhSMWNtVXlSRkJ5YjJwTWIyUkZXRlFvYzJGdGNHeGxjakpFTENCMlpXTTBMQ0JtYkc5aGRDazdkbVZqTkNCMFpYaDBkWEpsUTNWaVpVeHZaRVZZVkNoellXMXdiR1Z5UTNWaVpTd2dkbVZqTXl3Z1pteHZZWFFwT3dvQUNnQm1iRzloZENCcGJuUmxjbkJ2YkdGMFpVRjBRMlZ1ZEhKdmFXUW9abXh2WVhRcE8zWmxZeklnSUdsdWRHVnljRzlzWVhSbFFYUkRaVzUwY205cFpDaDJaV015S1R0MlpXTXpJQ0JwYm5SbGNuQnZiR0YwWlVGMFEyVnVkSEp2YVdRb2RtVmpNeWs3ZG1Wak5DQWdhVzUwWlhKd2IyeGhkR1ZCZEVObGJuUnliMmxrS0habFl6UXBPMlpzYjJGMElHbHVkR1Z5Y0c5c1lYUmxRWFJUWVcxd2JHVW9abXh2WVhRc0lHbHVkQ2s3ZG1Wak1pQWdhVzUwWlhKd2IyeGhkR1ZCZEZOaGJYQnNaU2gyWldNeUxDQWdhVzUwS1R0MlpXTXpJQ0JwYm5SbGNuQnZiR0YwWlVGMFUyRnRjR3hsS0habFl6TXNJQ0JwYm5RcE8zWmxZelFnSUdsdWRHVnljRzlzWVhSbFFYUlRZVzF3YkdVb2RtVmpOQ3dnSUdsdWRDazdabXh2WVhRZ2FXNTBaWEp3YjJ4aGRHVkJkRTltWm5ObGRDaG1iRzloZEN3Z2RtVmpNaWs3ZG1Wak1pQWdhVzUwWlhKd2IyeGhkR1ZCZEU5bVpuTmxkQ2gyWldNeUxDQWdkbVZqTWlrN2RtVmpNeUFnYVc1MFpYSndiMnhoZEdWQmRFOW1abk5sZENoMlpXTXpMQ0FnZG1Wak1pazdkbVZqTkNBZ2FXNTBaWEp3YjJ4aGRHVkJkRTltWm5ObGRDaDJaV00wTENBZ2RtVmpNaWs3Q2dCMmIybGtJR0psWjJsdVNXNTJiMk5oZEdsdmJrbHVkR1Z5Ykc5amEwRlNRaWgyYjJsa0tUdDJiMmxrSUdWdVpFbHVkbTlqWVhScGIyNUpiblJsY214dlkydEJVa0lvZG05cFpDazdBR0p2YjJ3Z2FHVnNjR1Z5U1c1MmIyTmhkR2x2YmtWWVZDZ3BPd29BWm14dllYUWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNobWJHOWhkQ3dnZFdsdWRDazdkbVZqTWlBZ2FXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQ2gyWldNeUxDQWdkV2x1ZENrN2RtVmpNeUFnYVc1MFpYSndiMnhoZEdWQmRGWmxjblJsZUVGTlJDaDJaV016TENBZ2RXbHVkQ2s3ZG1Wak5DQWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNoMlpXTTBMQ0FnZFdsdWRDazdhVzUwSUNBZ2FXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQ2hwYm5Rc0lDQWdkV2x1ZENrN2FYWmxZeklnYVc1MFpYSndiMnhoZEdWQmRGWmxjblJsZUVGTlJDaHBkbVZqTWl3Z2RXbHVkQ2s3YVhabFl6TWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNocGRtVmpNeXdnZFdsdWRDazdhWFpsWXpRZ2FXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQ2hwZG1Wak5Dd2dkV2x1ZENrN2RXbHVkQ0FnYVc1MFpYSndiMnhoZEdWQmRGWmxjblJsZUVGTlJDaDFhVzUwTENBZ2RXbHVkQ2s3ZFhabFl6SWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNoMWRtVmpNaXdnZFdsdWRDazdkWFpsWXpNZ2FXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQ2gxZG1Wak15d2dkV2x1ZENrN2RYWmxZelFnYVc1MFpYSndiMnhoZEdWQmRGWmxjblJsZUVGTlJDaDFkbVZqTkN3Z2RXbHVkQ2s3Wm14dllYUXhObDkwSUdsdWRHVnljRzlzWVhSbFFYUldaWEowWlhoQlRVUW9abXh2WVhReE5sOTBMQ0IxYVc1MEtUdG1NVFoyWldNeUlDQWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNobU1UWjJaV015TENBZ0lIVnBiblFwTzJZeE5uWmxZek1nSUNCcGJuUmxjbkJ2YkdGMFpVRjBWbVZ5ZEdWNFFVMUVLR1l4Tm5abFl6TXNJQ0FnZFdsdWRDazdaakUyZG1Wak5DQWdJR2x1ZEdWeWNHOXNZWFJsUVhSV1pYSjBaWGhCVFVRb1pqRTJkbVZqTkN3Z0lDQjFhVzUwS1RzS0FHWnNiMkYwTVRaZmRDQnBiblJsY25CdmJHRjBaVUYwUTJWdWRISnZhV1FvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2FXNTBaWEp3YjJ4aGRHVkJkRU5sYm5SeWIybGtLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0JwYm5SbGNuQnZiR0YwWlVGMFEyVnVkSEp2YVdRb1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHbHVkR1Z5Y0c5c1lYUmxRWFJEWlc1MGNtOXBaQ2htTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnYVc1MFpYSndiMnhoZEdWQmRGTmhiWEJzWlNobWJHOWhkREUyWDNRc0lHbHVkQ2s3WmpFMmRtVmpNaUFnSUdsdWRHVnljRzlzWVhSbFFYUlRZVzF3YkdVb1pqRTJkbVZqTWl3Z0lDQnBiblFwTzJZeE5uWmxZek1nSUNCcGJuUmxjbkJ2YkdGMFpVRjBVMkZ0Y0d4bEtHWXhOblpsWXpNc0lDQWdhVzUwS1R0bU1UWjJaV00wSUNBZ2FXNTBaWEp3YjJ4aGRHVkJkRk5oYlhCc1pTaG1NVFoyWldNMExDQWdJR2x1ZENrN1pteHZZWFF4Tmw5MElHbHVkR1Z5Y0c5c1lYUmxRWFJQWm1aelpYUW9abXh2WVhReE5sOTBMQ0JtTVRaMlpXTXlLVHRtTVRaMlpXTXlJQ0FnYVc1MFpYSndiMnhoZEdWQmRFOW1abk5sZENobU1UWjJaV015TENBZ0lHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQnBiblJsY25CdmJHRjBaVUYwVDJabWMyVjBLR1l4Tm5abFl6TXNJQ0FnWmpFMmRtVmpNaWs3WmpFMmRtVmpOQ0FnSUdsdWRHVnljRzlzWVhSbFFYUlBabVp6WlhRb1pqRTJkbVZqTkN3Z0lDQm1NVFoyWldNeUtUc0tBSFYyWldNeUlHTnNiMk5yTW5nek1rRlNRaWdwTzNWcGJuUTJORjkwSUdOc2IyTnJRVkpDS0NrN2RYWmxZeklnWTJ4dlkydFNaV0ZzZEdsdFpUSjRNekpGV0ZRb0tUdDFhVzUwTmpSZmRDQmpiRzlqYTFKbFlXeDBhVzFsUlZoVUtDazdDZ0IxYVc1MElHWnlZV2R0Wlc1MFRXRnphMFpsZEdOb1FVMUVLSE4xWW5CaGMzTkpibkIxZEUxVEtUdDFhVzUwSUdaeVlXZHRaVzUwVFdGemEwWmxkR05vUVUxRUtHbHpkV0p3WVhOelNXNXdkWFJOVXlrN2RXbHVkQ0JtY21GbmJXVnVkRTFoYzJ0R1pYUmphRUZOUkNoMWMzVmljR0Z6YzBsdWNIVjBUVk1wTzNabFl6UWdJR1p5WVdkdFpXNTBSbVYwWTJoQlRVUW9jM1ZpY0dGemMwbHVjSFYwVFZNc0lDQjFhVzUwS1R0cGRtVmpOQ0JtY21GbmJXVnVkRVpsZEdOb1FVMUVLR2x6ZFdKd1lYTnpTVzV3ZFhSTlV5d2dkV2x1ZENrN2RYWmxZelFnWm5KaFoyMWxiblJHWlhSamFFRk5SQ2gxYzNWaWNHRnpjMGx1Y0hWMFRWTXNJSFZwYm5RcE93b0FkbTlwWkNCMGNtRmpaVTVXS0dGalkyVnNaWEpoZEdsdmJsTjBjblZqZEhWeVpVNVdMSFZwYm5Rc2RXbHVkQ3gxYVc1MExIVnBiblFzZFdsdWRDeDJaV016TEdac2IyRjBMSFpsWXpNc1pteHZZWFFzYVc1MEtUdDJiMmxrSUdWNFpXTjFkR1ZEWVd4c1lXSnNaVTVXS0hWcGJuUXNJR2x1ZENrN0NnQmliMjlzSUhKbGNHOXlkRWx1ZEdWeWMyVmpkR2x2Yms1V0tHWnNiMkYwTENCMWFXNTBLVHNLQUhadmFXUWdhV2R1YjNKbFNXNTBaWEp6WldOMGFXOXVUbFlvS1R0MmIybGtJSFJsY20xcGJtRjBaVkpoZVU1V0tDazdDZ0IyYjJsa0lHVjRaV04xZEdWRFlXeHNZV0pzWlU1V0tIVnBiblFzSUdsdWRDazdDZ0IyYjJsa0lIZHlhWFJsVUdGamEyVmtVSEpwYldsMGFYWmxTVzVrYVdObGN6UjRPRTVXS0hWcGJuUXNJSFZwYm5RcE93b0FjM1J5ZFdOMElHZHNYMFJsY0hSb1VtRnVaMlZRWVhKaGJXVjBaWEp6SUhzQWFHbG5hSEFnWm14dllYUWdibVZoY2p0b2FXZG9jQ0JtYkc5aGRDQm1ZWEk3YUdsbmFIQWdabXh2WVhRZ1pHbG1aanNBWm14dllYUWdibVZoY2p0bWJHOWhkQ0JtWVhJN1pteHZZWFFnWkdsbVpqc0FmVHQxYm1sbWIzSnRJR2RzWDBSbGNIUm9VbUZ1WjJWUVlYSmhiV1YwWlhKeklHZHNYMFJsY0hSb1VtRnVaMlU3Q2dCMWJtbG1iM0p0SUcxaGREUWdJR2RzWDAxdlpHVnNWbWxsZDAxaGRISnBlRHQxYm1sbWIzSnRJRzFoZERRZ0lHZHNYMUJ5YjJwbFkzUnBiMjVOWVhSeWFYZzdkVzVwWm05eWJTQnRZWFEwSUNCbmJGOU5iMlJsYkZacFpYZFFjbTlxWldOMGFXOXVUV0YwY21sNE8zVnVhV1p2Y20wZ2JXRjBNeUFnWjJ4ZlRtOXliV0ZzVFdGMGNtbDRPM1Z1YVdadmNtMGdiV0YwTkNBZ1oyeGZUVzlrWld4V2FXVjNUV0YwY21sNFNXNTJaWEp6WlR0MWJtbG1iM0p0SUcxaGREUWdJR2RzWDFCeWIycGxZM1JwYjI1TllYUnlhWGhKYm5abGNuTmxPM1Z1YVdadmNtMGdiV0YwTkNBZ1oyeGZUVzlrWld4V2FXVjNVSEp2YW1WamRHbHZiazFoZEhKcGVFbHVkbVZ5YzJVN2RXNXBabTl5YlNCdFlYUTBJQ0JuYkY5TmIyUmxiRlpwWlhkTllYUnlhWGhVY21GdWMzQnZjMlU3ZFc1cFptOXliU0J0WVhRMElDQm5iRjlRY205cVpXTjBhVzl1VFdGMGNtbDRWSEpoYm5Od2IzTmxPM1Z1YVdadmNtMGdiV0YwTkNBZ1oyeGZUVzlrWld4V2FXVjNVSEp2YW1WamRHbHZiazFoZEhKcGVGUnlZVzV6Y0c5elpUdDFibWxtYjNKdElHMWhkRFFnSUdkc1gwMXZaR1ZzVm1sbGQwMWhkSEpwZUVsdWRtVnljMlZVY21GdWMzQnZjMlU3ZFc1cFptOXliU0J0WVhRMElDQm5iRjlRY205cVpXTjBhVzl1VFdGMGNtbDRTVzUyWlhKelpWUnlZVzV6Y0c5elpUdDFibWxtYjNKdElHMWhkRFFnSUdkc1gwMXZaR1ZzVm1sbGQxQnliMnBsWTNScGIyNU5ZWFJ5YVhoSmJuWmxjbk5sVkhKaGJuTndiM05sTzNWdWFXWnZjbTBnWm14dllYUWdaMnhmVG05eWJXRnNVMk5oYkdVN2MzUnlkV04wSUdkc1gxQnZhVzUwVUdGeVlXMWxkR1Z5Y3lCN1pteHZZWFFnYzJsNlpUdG1iRzloZENCemFYcGxUV2x1TzJac2IyRjBJSE5wZW1WTllYZzdabXh2WVhRZ1ptRmtaVlJvY21WemFHOXNaRk5wZW1VN1pteHZZWFFnWkdsemRHRnVZMlZEYjI1emRHRnVkRUYwZEdWdWRXRjBhVzl1TzJac2IyRjBJR1JwYzNSaGJtTmxUR2x1WldGeVFYUjBaVzUxWVhScGIyNDdabXh2WVhRZ1pHbHpkR0Z1WTJWUmRXRmtjbUYwYVdOQmRIUmxiblZoZEdsdmJqdDlPM1Z1YVdadmNtMGdaMnhmVUc5cGJuUlFZWEpoYldWMFpYSnpJR2RzWDFCdmFXNTBPM04wY25WamRDQm5iRjlOWVhSbGNtbGhiRkJoY21GdFpYUmxjbk1nZTNabFl6UWdJR1Z0YVhOemFXOXVPM1psWXpRZ0lHRnRZbWxsYm5RN2RtVmpOQ0FnWkdsbVpuVnpaVHQyWldNMElDQnpjR1ZqZFd4aGNqdG1iRzloZENCemFHbHVhVzVsYzNNN2ZUdDFibWxtYjNKdElHZHNYMDFoZEdWeWFXRnNVR0Z5WVcxbGRHVnljeUFnWjJ4ZlJuSnZiblJOWVhSbGNtbGhiRHQxYm1sbWIzSnRJR2RzWDAxaGRHVnlhV0ZzVUdGeVlXMWxkR1Z5Y3lBZ1oyeGZRbUZqYTAxaGRHVnlhV0ZzTzNOMGNuVmpkQ0JuYkY5TWFXZG9kRk52ZFhKalpWQmhjbUZ0WlhSbGNuTWdlM1psWXpRZ0lHRnRZbWxsYm5RN2RtVmpOQ0FnWkdsbVpuVnpaVHQyWldNMElDQnpjR1ZqZFd4aGNqdDJaV00wSUNCd2IzTnBkR2x2Ymp0MlpXTTBJQ0JvWVd4bVZtVmpkRzl5TzNabFl6TWdJSE53YjNSRWFYSmxZM1JwYjI0N1pteHZZWFFnYzNCdmRFVjRjRzl1Wlc1ME8yWnNiMkYwSUhOd2IzUkRkWFJ2Wm1ZN1pteHZZWFFnYzNCdmRFTnZjME4xZEc5bVpqdG1iRzloZENCamIyNXpkR0Z1ZEVGMGRHVnVkV0YwYVc5dU8yWnNiMkYwSUd4cGJtVmhja0YwZEdWdWRXRjBhVzl1TzJac2IyRjBJSEYxWVdSeVlYUnBZMEYwZEdWdWRXRjBhVzl1TzMwN2MzUnlkV04wSUdkc1gweHBaMmgwVFc5a1pXeFFZWEpoYldWMFpYSnpJSHQyWldNMElDQmhiV0pwWlc1ME8zMDdkVzVwWm05eWJTQm5iRjlNYVdkb2RFMXZaR1ZzVUdGeVlXMWxkR1Z5Y3lBZ1oyeGZUR2xuYUhSTmIyUmxiRHR6ZEhKMVkzUWdaMnhmVEdsbmFIUk5iMlJsYkZCeWIyUjFZM1J6SUh0MlpXTTBJQ0J6WTJWdVpVTnZiRzl5TzMwN2RXNXBabTl5YlNCbmJGOU1hV2RvZEUxdlpHVnNVSEp2WkhWamRITWdaMnhmUm5KdmJuUk1hV2RvZEUxdlpHVnNVSEp2WkhWamREdDFibWxtYjNKdElHZHNYMHhwWjJoMFRXOWtaV3hRY205a2RXTjBjeUJuYkY5Q1lXTnJUR2xuYUhSTmIyUmxiRkJ5YjJSMVkzUTdjM1J5ZFdOMElHZHNYMHhwWjJoMFVISnZaSFZqZEhNZ2UzWmxZelFnSUdGdFltbGxiblE3ZG1Wak5DQWdaR2xtWm5WelpUdDJaV00wSUNCemNHVmpkV3hoY2p0OU8zTjBjblZqZENCbmJGOUdiMmRRWVhKaGJXVjBaWEp6SUh0MlpXTTBJQ0JqYjJ4dmNqdG1iRzloZENCa1pXNXphWFI1TzJac2IyRjBJSE4wWVhKME8yWnNiMkYwSUdWdVpEdG1iRzloZENCelkyRnNaVHQ5TzNWdWFXWnZjbTBnWjJ4ZlJtOW5VR0Z5WVcxbGRHVnljeUJuYkY5R2IyYzdDZ0JwYmlBZ0lDQm9hV2RvY0NCMWRtVmpNeUJuYkY5T2RXMVhiM0pyUjNKdmRYQnpPMk52Ym5OMElHaHBaMmh3SUhWMlpXTXpJR2RzWDFkdmNtdEhjbTkxY0ZOcGVtVWdQU0IxZG1Wak15Z3hMREVzTVNrN2FXNGdhR2xuYUhBZ2RYWmxZek1nWjJ4ZlYyOXlhMGR5YjNWd1NVUTdhVzRnYUdsbmFIQWdkWFpsWXpNZ1oyeGZURzlqWVd4SmJuWnZZMkYwYVc5dVNVUTdhVzRnYUdsbmFIQWdkWFpsWXpNZ1oyeGZSMnh2WW1Gc1NXNTJiMk5oZEdsdmJrbEVPMmx1SUdocFoyaHdJSFZwYm5RZ1oyeGZURzlqWVd4SmJuWnZZMkYwYVc5dVNXNWtaWGc3Q2dCcGJpQm9hV2RvY0NCcGJuUWdaMnhmUkdWMmFXTmxTVzVrWlhnN0NnQnZkWFFnWjJ4ZlRXVnphRkJsY2xabGNuUmxlRTVXSUh0MlpXTTBJR2RzWDFCdmMybDBhVzl1TzJac2IyRjBJR2RzWDFCdmFXNTBVMmw2WlR0bWJHOWhkQ0JuYkY5RGJHbHdSR2x6ZEdGdVkyVmJYVHRtYkc5aGRDQm5iRjlEZFd4c1JHbHpkR0Z1WTJWYlhUdHdaWEoyYVdWM1RsWWdkbVZqTkNCbmJGOVFiM05wZEdsdmJsQmxjbFpwWlhkT1ZsdGRPM0JsY25acFpYZE9WaUJtYkc5aGRDQm5iRjlEYkdsd1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxaYlhWdGRPM0JsY25acFpYZE9WaUJtYkc5aGRDQm5iRjlEZFd4c1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxaYlhWdGRPMzBnWjJ4ZlRXVnphRlpsY25ScFkyVnpUbFpiWFRzQWNHVnljSEpwYldsMGFYWmxUbFlnYjNWMElHZHNYMDFsYzJoUVpYSlFjbWx0YVhScGRtVk9WaUI3YVc1MElHZHNYMUJ5YVcxcGRHbDJaVWxFTzJsdWRDQm5iRjlNWVhsbGNqdHBiblFnWjJ4ZlZtbGxkM0J2Y25SSmJtUmxlRHRwYm5RZ1oyeGZWbWxsZDNCdmNuUk5ZWE5yVzEwN2NHVnlkbWxsZDA1V0lHbHVkQ0JuYkY5TVlYbGxjbEJsY2xacFpYZE9WbHRkTzNCbGNuWnBaWGRPVmlCcGJuUWdaMnhmVm1sbGQzQnZjblJOWVhOclVHVnlWbWxsZDA1V1cxMWJYVHQ5SUdkc1gwMWxjMmhRY21sdGFYUnBkbVZ6VGxaYlhUc0FiM1YwSUhWcGJuUWdaMnhmVUhKcGJXbDBhWFpsUTI5MWJuUk9WanR2ZFhRZ2RXbHVkQ0JuYkY5UWNtbHRhWFJwZG1WSmJtUnBZMlZ6VGxaYlhUdHBiaUIxYVc1MElHZHNYMDFsYzJoV2FXVjNRMjkxYm5ST1ZqdHBiaUIxYVc1MElHZHNYMDFsYzJoV2FXVjNTVzVrYVdObGMwNVdXelJkTzJOdmJuTjBJR2hwWjJod0lIVjJaV016SUdkc1gxZHZjbXRIY205MWNGTnBlbVVnUFNCMWRtVmpNeWd4TERFc01TazdhVzRnYUdsbmFIQWdkWFpsWXpNZ1oyeGZWMjl5YTBkeWIzVndTVVE3YVc0Z2FHbG5hSEFnZFhabFl6TWdaMnhmVEc5allXeEpiblp2WTJGMGFXOXVTVVE3YVc0Z2FHbG5hSEFnZFhabFl6TWdaMnhmUjJ4dlltRnNTVzUyYjJOaGRHbHZia2xFTzJsdUlHaHBaMmh3SUhWcGJuUWdaMnhmVEc5allXeEpiblp2WTJGMGFXOXVTVzVrWlhnN0NnQnZkWFFnZFdsdWRDQm5iRjlVWVhOclEyOTFiblJPVmp0amIyNXpkQ0JvYVdkb2NDQjFkbVZqTXlCbmJGOVhiM0pyUjNKdmRYQlRhWHBsSUQwZ2RYWmxZek1vTVN3eExERXBPMmx1SUdocFoyaHdJSFYyWldNeklHZHNYMWR2Y210SGNtOTFjRWxFTzJsdUlHaHBaMmh3SUhWMlpXTXpJR2RzWDB4dlkyRnNTVzUyYjJOaGRHbHZia2xFTzJsdUlHaHBaMmh3SUhWMlpXTXpJR2RzWDBkc2IySmhiRWx1ZG05allYUnBiMjVKUkR0cGJpQm9hV2RvY0NCMWFXNTBJR2RzWDB4dlkyRnNTVzUyYjJOaGRHbHZia2x1WkdWNE8ybHVJSFZwYm5RZ1oyeGZUV1Z6YUZacFpYZERiM1Z1ZEU1V08ybHVJSFZwYm5RZ1oyeGZUV1Z6YUZacFpYZEpibVJwWTJWelRsWmJORjA3Q2dCcGJpQm9hV2RvY0NCcGJuUWdaMnhmUkdWMmFXTmxTVzVrWlhnN2FXNGdhVzUwSUdkc1gwUnlZWGRKUkVGU1Fqc0tBR2x1SUdsdWRDQm5iRjlFY21GM1NVUTdDZ0JoZEhSeWFXSjFkR1VnZG1Wak5DQWdaMnhmUTI5c2IzSTdZWFIwY21saWRYUmxJSFpsWXpRZ0lHZHNYMU5sWTI5dVpHRnllVU52Ykc5eU8yRjBkSEpwWW5WMFpTQjJaV016SUNCbmJGOU9iM0p0WVd3N1lYUjBjbWxpZFhSbElIWmxZelFnSUdkc1gxWmxjblJsZUR0aGRIUnlhV0oxZEdVZ2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREE3WVhSMGNtbGlkWFJsSUhabFl6UWdJR2RzWDAxMWJIUnBWR1Y0UTI5dmNtUXhPMkYwZEhKcFluVjBaU0IyWldNMElDQm5iRjlOZFd4MGFWUmxlRU52YjNKa01qdGhkSFJ5YVdKMWRHVWdkbVZqTkNBZ1oyeGZUWFZzZEdsVVpYaERiMjl5WkRNN1lYUjBjbWxpZFhSbElIWmxZelFnSUdkc1gwMTFiSFJwVkdWNFEyOXZjbVEwTzJGMGRISnBZblYwWlNCMlpXTTBJQ0JuYkY5TmRXeDBhVlJsZUVOdmIzSmtOVHRoZEhSeWFXSjFkR1VnZG1Wak5DQWdaMnhmVFhWc2RHbFVaWGhEYjI5eVpEWTdZWFIwY21saWRYUmxJSFpsWXpRZ0lHZHNYMDExYkhScFZHVjRRMjl2Y21RM08yRjBkSEpwWW5WMFpTQm1iRzloZENCbmJGOUdiMmREYjI5eVpEc0tBR2x1SUhabFl6UWdJR2RzWDBOdmJHOXlPMmx1SUhabFl6UWdJR2RzWDFObFkyOXVaR0Z5ZVVOdmJHOXlPMmx1SUhabFl6TWdJR2RzWDA1dmNtMWhiRHRwYmlCMlpXTTBJQ0JuYkY5V1pYSjBaWGc3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREE3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREU3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREk3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRE03YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFE3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFU3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFk3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRGM3YVc0Z1pteHZZWFFnWjJ4ZlJtOW5RMjl2Y21RN0NnQWdJQ0FnSUNBZ0lIWmxZelFnSUdkc1gwTnNhWEJXWlhKMFpYZzdkbUZ5ZVdsdVp5QjJaV00wSUNCbmJGOUdjbTl1ZEVOdmJHOXlPM1poY25scGJtY2dkbVZqTkNBZ1oyeGZRbUZqYTBOdmJHOXlPM1poY25scGJtY2dkbVZqTkNBZ1oyeGZSbkp2Ym5SVFpXTnZibVJoY25sRGIyeHZjanQyWVhKNWFXNW5JSFpsWXpRZ0lHZHNYMEpoWTJ0VFpXTnZibVJoY25sRGIyeHZjanQyWVhKNWFXNW5JSFpsWXpRZ0lHZHNYMVJsZUVOdmIzSmtXMTA3ZG1GeWVXbHVaeUJtYkc5aGRDQm5iRjlHYjJkR2NtRm5RMjl2Y21RN0NnQWdJQ0FnZG1Wak5DQWdaMnhmUTJ4cGNGWmxjblJsZUR0dmRYUWdkbVZqTkNBZ1oyeGZSbkp2Ym5SRGIyeHZjanR2ZFhRZ2RtVmpOQ0FnWjJ4ZlFtRmphME52Ykc5eU8yOTFkQ0IyWldNMElDQm5iRjlHY205dWRGTmxZMjl1WkdGeWVVTnZiRzl5TzI5MWRDQjJaV00wSUNCbmJGOUNZV05yVTJWamIyNWtZWEo1UTI5c2IzSTdiM1YwSUhabFl6UWdJR2RzWDFSbGVFTnZiM0prVzEwN2IzVjBJR1pzYjJGMElHZHNYMFp2WjBaeVlXZERiMjl5WkRzS0FIWmxZelFnWjJ4ZlVHOXphWFJwYjI0N1pteHZZWFFnWjJ4ZlVHOXBiblJUYVhwbE93QnZkWFFnWm14dllYUWdaMnhmUTJ4cGNFUnBjM1JoYm1ObFcxMDdBRzkxZENCbmJGOVFaWEpXWlhKMFpYZ2dlM1psWXpRZ1oyeGZVRzl6YVhScGIyNDdabXh2WVhRZ1oyeGZVRzlwYm5SVGFYcGxPMlpzYjJGMElHZHNYME5zYVhCRWFYTjBZVzVqWlZ0ZE93QjJaV00wSUdkc1gwTnNhWEJXWlhKMFpYZzdkbVZqTkNCbmJGOUdjbTl1ZEVOdmJHOXlPM1psWXpRZ1oyeGZRbUZqYTBOdmJHOXlPM1psWXpRZ1oyeGZSbkp2Ym5SVFpXTnZibVJoY25sRGIyeHZjanQyWldNMElHZHNYMEpoWTJ0VFpXTnZibVJoY25sRGIyeHZjanQyWldNMElHZHNYMVJsZUVOdmIzSmtXMTA3Wm14dllYUWdaMnhmUm05blJuSmhaME52YjNKa093Qm1iRzloZENCbmJGOURkV3hzUkdsemRHRnVZMlZiWFRzQWZUc0tBR2x1ZENCbmJGOVdaWEowWlhoSlJEc0FhVzUwSUdkc1gwbHVjM1JoYm1ObFNVUTdBR2x1SUdsdWRDQm5iRjlXWlhKMFpYaEpibVJsZUR0cGJpQnBiblFnWjJ4ZlNXNXpkR0Z1WTJWSmJtUmxlRHNBYVc0Z2FXNTBJR2RzWDBKaGMyVldaWEowWlhoQlVrSTdhVzRnYVc1MElHZHNYMEpoYzJWSmJuTjBZVzVqWlVGU1FqdHBiaUJwYm5RZ1oyeGZSSEpoZDBsRVFWSkNPd0J2ZFhRZ2FXNTBJR2RzWDFacFpYZHdiM0owU1c1a1pYZzdiM1YwSUdsdWRDQm5iRjlNWVhsbGNqc0FhVzRnYVc1MElHZHNYMEpoYzJWV1pYSjBaWGc3YVc0Z2FXNTBJR2RzWDBKaGMyVkpibk4wWVc1alpUdHBiaUJwYm5RZ1oyeGZSSEpoZDBsRU93QnZkWFFnYVc1MElHZHNYMVpwWlhkd2IzSjBUV0Z6YTF0ZE8yOTFkQ0JwYm5RZ1oyeGZVMlZqYjI1a1lYSjVWbWxsZDNCdmNuUk5ZWE5yVGxaYlhUdHZkWFFnZG1Wak5DQm5iRjlUWldOdmJtUmhjbmxRYjNOcGRHbHZiazVXTzI5MWRDQjJaV00wSUdkc1gxQnZjMmwwYVc5dVVHVnlWbWxsZDA1V1cxMDdiM1YwSUdsdWRDQWdaMnhmVm1sbGQzQnZjblJOWVhOclVHVnlWbWxsZDA1V1cxMDdBR2hwWjJod0lDQWdkbVZqTkNBZ1oyeGZVRzl6YVhScGIyNDdiV1ZrYVhWdGNDQm1iRzloZENCbmJGOVFiMmx1ZEZOcGVtVTdBR2x1SUdocFoyaHdJR2x1ZENCbmJGOVdaWEowWlhoSlJEdHBiaUJvYVdkb2NDQnBiblFnWjJ4ZlNXNXpkR0Z1WTJWSlJEc0FhVzRnYUdsbmFIQWdhVzUwSUdkc1gxWmxjblJsZUVsdVpHVjRPMmx1SUdocFoyaHdJR2x1ZENCbmJGOUpibk4wWVc1alpVbHVaR1Y0T3dCb2FXZG9jQ0IyWldNMElDQm5iRjlRYjNOcGRHbHZianRvYVdkb2NDQm1iRzloZENCbmJGOVFiMmx1ZEZOcGVtVTdBRzkxZENCbmJGOVFaWEpXWlhKMFpYZ2dlMmhwWjJod0lIWmxZelFnSUdkc1gxQnZjMmwwYVc5dU8yaHBaMmh3SUdac2IyRjBJR2RzWDFCdmFXNTBVMmw2WlR0OU93QnBiaUJvYVdkb2NDQnBiblFnWjJ4ZlJHVjJhV05sU1c1a1pYZzdhVzRnYUdsbmFIQWdhVzUwSUdkc1gxWnBaWGRKYm1SbGVEc0tBR2x1SUdocFoyaHdJSFZwYm5RZ1oyeGZWbWxsZDBsRVgwOVdVanNLQUdsdUlHZHNYMUJsY2xabGNuUmxlQ0I3ZG1Wak5DQm5iRjlRYjNOcGRHbHZianRtYkc5aGRDQm5iRjlRYjJsdWRGTnBlbVU3Wm14dllYUWdaMnhmUTJ4cGNFUnBjM1JoYm1ObFcxMDdBR1pzYjJGMElHZHNYME4xYkd4RWFYTjBZVzVqWlZ0ZE8zWmxZelFnWjJ4ZlUyVmpiMjVrWVhKNVVHOXphWFJwYjI1T1ZqdDJaV00wSUdkc1gxQnZjMmwwYVc5dVVHVnlWbWxsZDA1V1cxMDdBSDBnWjJ4ZmFXNWJYVHRwYmlCcGJuUWdaMnhmVUhKcGJXbDBhWFpsU1VSSmJqdHZkWFFnWjJ4ZlVHVnlWbVZ5ZEdWNElIdDJaV00wSUdkc1gxQnZjMmwwYVc5dU8yWnNiMkYwSUdkc1gxQnZhVzUwVTJsNlpUdG1iRzloZENCbmJGOURiR2x3UkdsemRHRnVZMlZiWFRzS0FIMDdiM1YwSUdsdWRDQm5iRjlRY21sdGFYUnBkbVZKUkR0dmRYUWdhVzUwSUdkc1gweGhlV1Z5T3dCdmRYUWdhVzUwSUdkc1gxWnBaWGR3YjNKMFNXNWtaWGc3QUc5MWRDQjJaV00wSUdkc1gwTnNhWEJXWlhKMFpYZzdBR2x1SUdsdWRDQm5iRjlKYm5adlkyRjBhVzl1U1VRN0FHbHVJR2RzWDFCbGNsWmxjblJsZUNCN2FHbG5hSEFnZG1Wak5DQm5iRjlRYjNOcGRHbHZianRvYVdkb2NDQm1iRzloZENCbmJGOVFiMmx1ZEZOcGVtVTdmU0JuYkY5cGJsdGRPd3BwYmlCb2FXZG9jQ0JwYm5RZ1oyeGZVSEpwYldsMGFYWmxTVVJKYmp0cGJpQm9hV2RvY0NCcGJuUWdaMnhmU1c1MmIyTmhkR2x2YmtsRU93cHZkWFFnWjJ4ZlVHVnlWbVZ5ZEdWNElIdG9hV2RvY0NCMlpXTTBJR2RzWDFCdmMybDBhVzl1TzJocFoyaHdJR1pzYjJGMElHZHNYMUJ2YVc1MFUybDZaVHQ5T3dwdmRYUWdhR2xuYUhBZ2FXNTBJR2RzWDFCeWFXMXBkR2wyWlVsRU8yOTFkQ0JvYVdkb2NDQnBiblFnWjJ4ZlRHRjVaWEk3Q2dCcGJpQnBiblFnWjJ4ZlVHRjBZMmhXWlhKMGFXTmxjMGx1TzJsdUlHbHVkQ0JuYkY5UWNtbHRhWFJwZG1WSlJEdHBiaUJwYm5RZ1oyeGZTVzUyYjJOaGRHbHZia2xFTzI5MWRDQm5iRjlRWlhKV1pYSjBaWGdnZTNabFl6UWdaMnhmVUc5emFYUnBiMjQ3Wm14dllYUWdaMnhmVUc5cGJuUlRhWHBsTzJac2IyRjBJR2RzWDBOc2FYQkVhWE4wWVc1alpWdGRPd0JtYkc5aGRDQm5iRjlEZFd4c1JHbHpkR0Z1WTJWYlhUdHBiblFnSUdkc1gxWnBaWGR3YjNKMFRXRnphMXRkTzNabFl6UWdaMnhmVTJWamIyNWtZWEo1VUc5emFYUnBiMjVPVmp0cGJuUWdJR2RzWDFObFkyOXVaR0Z5ZVZacFpYZHdiM0owVFdGemEwNVdXMTA3ZG1Wak5DQm5iRjlRYjNOcGRHbHZibEJsY2xacFpYZE9WbHRkTzJsdWRDQWdaMnhmVm1sbGQzQnZjblJOWVhOclVHVnlWbWxsZDA1V1cxMDdBSDBnWjJ4ZmIzVjBXMTA3Y0dGMFkyZ2diM1YwSUdac2IyRjBJR2RzWDFSbGMzTk1aWFpsYkU5MWRHVnlXelJkTzNCaGRHTm9JRzkxZENCbWJHOWhkQ0JuYkY5VVpYTnpUR1YyWld4SmJtNWxjbHN5WFRzS0FHOTFkQ0JwYm5RZ1oyeGZWbWxsZDNCdmNuUkpibVJsZUR0dmRYUWdhVzUwSUdkc1gweGhlV1Z5T3dvQWFXNGdhR2xuYUhBZ2FXNTBJR2RzWDFCaGRHTm9WbVZ5ZEdsalpYTkpianRwYmlCb2FXZG9jQ0JwYm5RZ1oyeGZVSEpwYldsMGFYWmxTVVE3YVc0Z2FHbG5hSEFnYVc1MElHZHNYMGx1ZG05allYUnBiMjVKUkR0dmRYUWdaMnhmVUdWeVZtVnlkR1Y0SUh0b2FXZG9jQ0IyWldNMElHZHNYMUJ2YzJsMGFXOXVPMmhwWjJod0lHWnNiMkYwSUdkc1gxQnZhVzUwVTJsNlpUc0FmU0JuYkY5dmRYUmJYVHR3WVhSamFDQnZkWFFnYUdsbmFIQWdabXh2WVhRZ1oyeGZWR1Z6YzB4bGRtVnNUM1YwWlhKYk5GMDdjR0YwWTJnZ2IzVjBJR2hwWjJod0lHWnNiMkYwSUdkc1gxUmxjM05NWlhabGJFbHVibVZ5V3pKZE8zQmhkR05vSUc5MWRDQm9hV2RvY0NCMlpXTTBJR2RzWDBKdmRXNWthVzVuUW05NFQwVlRXekpkTzNCaGRHTm9JRzkxZENCb2FXZG9jQ0IyWldNMElHZHNYMEp2ZFc1a2FXNW5RbTk0UlZoVVd6SmRPd29BY0dGMFkyZ2diM1YwSUdocFoyaHdJSFpsWXpRZ1oyeGZRbTkxYm1ScGJtZENiM2hiTWwwN0NnQnBiaUJwYm5RZ1oyeGZVR0YwWTJoV1pYSjBhV05sYzBsdU8ybHVJR2x1ZENCbmJGOVFjbWx0YVhScGRtVkpSRHRwYmlCMlpXTXpJR2RzWDFSbGMzTkRiMjl5WkR0d1lYUmphQ0JwYmlCbWJHOWhkQ0JuYkY5VVpYTnpUR1YyWld4UGRYUmxjbHMwWFR0d1lYUmphQ0JwYmlCbWJHOWhkQ0JuYkY5VVpYTnpUR1YyWld4SmJtNWxjbHN5WFR0dmRYUWdaMnhmVUdWeVZtVnlkR1Y0SUh0MlpXTTBJR2RzWDFCdmMybDBhVzl1TzJac2IyRjBJR2RzWDFCdmFXNTBVMmw2WlR0bWJHOWhkQ0JuYkY5RGJHbHdSR2x6ZEdGdVkyVmJYVHNBYjNWMElHbHVkQ0FnWjJ4ZlZtbGxkM0J2Y25STllYTnJXMTA3YjNWMElIWmxZelFnWjJ4ZlUyVmpiMjVrWVhKNVVHOXphWFJwYjI1T1ZqdHZkWFFnYVc1MElDQm5iRjlUWldOdmJtUmhjbmxXYVdWM2NHOXlkRTFoYzJ0T1ZsdGRPMjkxZENCMlpXTTBJR2RzWDFCdmMybDBhVzl1VUdWeVZtbGxkMDVXVzEwN2IzVjBJR2x1ZENBZ1oyeGZWbWxsZDNCdmNuUk5ZWE5yVUdWeVZtbGxkMDVXVzEwN0FHbHVJR2hwWjJod0lHbHVkQ0JuYkY5UVlYUmphRlpsY25ScFkyVnpTVzQ3YVc0Z2FHbG5hSEFnYVc1MElHZHNYMUJ5YVcxcGRHbDJaVWxFTzJsdUlHaHBaMmh3SUhabFl6TWdaMnhmVkdWemMwTnZiM0prTzNCaGRHTm9JR2x1SUdocFoyaHdJR1pzYjJGMElHZHNYMVJsYzNOTVpYWmxiRTkxZEdWeVd6UmRPM0JoZEdOb0lHbHVJR2hwWjJod0lHWnNiMkYwSUdkc1gxUmxjM05NWlhabGJFbHVibVZ5V3pKZE8yOTFkQ0JuYkY5UVpYSldaWEowWlhnZ2UyaHBaMmh3SUhabFl6UWdaMnhmVUc5emFYUnBiMjQ3YUdsbmFIQWdabXh2WVhRZ1oyeGZVRzlwYm5SVGFYcGxPd0IyWldNMElDQm5iRjlHY21GblEyOXZjbVE3WW05dmJDQWdaMnhmUm5KdmJuUkdZV05wYm1jN1pteHZZWFFnWjJ4ZlJuSmhaMFJsY0hSb093QjJaV015SUdkc1gxQnZhVzUwUTI5dmNtUTdBRzkxZENCcGJuUWdaMnhmUm5KaFoxTjBaVzVqYVd4U1pXWkJVa0k3QUhabFl6UWdaMnhmUm5KaFowTnZiRzl5T3dCMllYSjVhVzVuSUhabFl6UWdJR2RzWDBOdmJHOXlPM1poY25scGJtY2dkbVZqTkNBZ1oyeGZVMlZqYjI1a1lYSjVRMjlzYjNJN2RtRnllV2x1WnlCMlpXTTBJQ0JuYkY5VVpYaERiMjl5WkZ0ZE8zWmhjbmxwYm1jZ1pteHZZWFFnWjJ4ZlJtOW5SbkpoWjBOdmIzSmtPd0JwYmlCbWJHOWhkQ0JuYkY5RGJHbHdSR2x6ZEdGdVkyVmJYVHNBYVc0Z1pteHZZWFFnWjJ4ZlJtOW5SbkpoWjBOdmIzSmtPMmx1SUhabFl6UWdJR2RzWDFSbGVFTnZiM0prVzEwN2FXNGdkbVZqTkNBZ1oyeGZRMjlzYjNJN2FXNGdkbVZqTkNBZ1oyeGZVMlZqYjI1a1lYSjVRMjlzYjNJN0FHbHVJR2RzWDFCbGNrWnlZV2R0Wlc1MElIdHBiaUJtYkc5aGRDQm5iRjlHYjJkR2NtRm5RMjl2Y21RN2FXNGdkbVZqTkNBZ1oyeGZWR1Y0UTI5dmNtUmJYVHRwYmlCMlpXTTBJQ0JuYkY5RGIyeHZjanRwYmlCMlpXTTBJQ0JuYkY5VFpXTnZibVJoY25sRGIyeHZjanQ5T3dCbWJHRjBJR2x1SUdsdWRDQm5iRjlRY21sdGFYUnBkbVZKUkRzQVpteGhkQ0JwYmlBZ2FXNTBJQ0JuYkY5VFlXMXdiR1ZKUkRzZ0lDQWdJR2x1SUNCMlpXTXlJR2RzWDFOaGJYQnNaVkJ2YzJsMGFXOXVPeUFnSUNBZ2IzVjBJR2x1ZENBZ1oyeGZVMkZ0Y0d4bFRXRnphMXRkT3dCMWJtbG1iM0p0SUdsdWRDQm5iRjlPZFcxVFlXMXdiR1Z6T3dCbWJHRjBJR2x1SUNCcGJuUWdJR2RzWDFOaGJYQnNaVTFoYzJ0SmJsdGRPd0JtYkdGMElHbHVJR2x1ZENCbmJGOU1ZWGxsY2p0bWJHRjBJR2x1SUdsdWRDQm5iRjlXYVdWM2NHOXlkRWx1WkdWNE93QnBiaUJtYkc5aGRDQm5iRjlEZFd4c1JHbHpkR0Z1WTJWYlhUdGliMjlzSUdkc1gwaGxiSEJsY2tsdWRtOWpZWFJwYjI0N0FHWnNZWFFnYVc0Z2FYWmxZeklnWjJ4ZlJuSmhaMU5wZW1WRldGUTdabXhoZENCcGJpQnBiblFnSUNCbmJGOUdjbUZuU1c1MmIyTmhkR2x2YmtOdmRXNTBSVmhVT3dCcGJpQjJaV015SUdkc1gwSmhjbmxEYjI5eVpFNXZVR1Z5YzNCQlRVUTdhVzRnZG1Wak1pQm5iRjlDWVhKNVEyOXZjbVJPYjFCbGNuTndRMlZ1ZEhKdmFXUkJUVVE3YVc0Z2RtVmpNaUJuYkY5Q1lYSjVRMjl2Y21ST2IxQmxjbk53VTJGdGNHeGxRVTFFTzJsdUlIWmxZeklnWjJ4ZlFtRnllVU52YjNKa1UyMXZiM1JvUVUxRU8ybHVJSFpsWXpJZ1oyeGZRbUZ5ZVVOdmIzSmtVMjF2YjNSb1EyVnVkSEp2YVdSQlRVUTdhVzRnZG1Wak1pQm5iRjlDWVhKNVEyOXZjbVJUYlc5dmRHaFRZVzF3YkdWQlRVUTdhVzRnZG1Wak15Qm5iRjlDWVhKNVEyOXZjbVJRZFd4c1RXOWtaV3hCVFVRN0FHbHVJR0p2YjJ3Z1oyeGZSbkpoWjBaMWJHeDVRMjkyWlhKbFpFNVdPd0JtYkdGMElHbHVJR2wyWldNeUlHZHNYMFp5WVdkdFpXNTBVMmw2WlU1V08yWnNZWFFnYVc0Z2FXNTBJQ0FnWjJ4ZlNXNTJiMk5oZEdsdmJuTlFaWEpRYVhobGJFNVdPMmx1SUhabFl6TWdaMnhmUW1GeWVVTnZiM0prVGxZN2FXNGdkbVZqTXlCbmJGOUNZWEo1UTI5dmNtUk9iMUJsY25Od1RsWTdBRzFsWkdsMWJYQWdkbVZqTkNCbmJGOUdjbUZuUTI5dmNtUTdJQ0FnSUNBZ0lDQmliMjlzSUdkc1gwWnliMjUwUm1GamFXNW5PMjFsWkdsMWJYQWdkbVZqTkNCbmJGOUdjbUZuUTI5c2IzSTdiV1ZrYVhWdGNDQjJaV015SUdkc1gxQnZhVzUwUTI5dmNtUTdBR2hwWjJod0lDQWdkbVZqTkNBZ1oyeGZSbkpoWjBOdmIzSmtPeUFnSUNBZ0lDQWdZbTl2YkNBZ1oyeGZSbkp2Ym5SR1lXTnBibWM3YldWa2FYVnRjQ0IyWldNeUlDQm5iRjlRYjJsdWRFTnZiM0prTzJocFoyaHdJQ0FnWm14dllYUWdaMnhmUm5KaFowUmxjSFJvT3dCaWIyOXNJR2RzWDBobGJIQmxja2x1ZG05allYUnBiMjQ3Wm14aGRDQnBiaUJvYVdkb2NDQnBiblFnWjJ4ZlVISnBiV2wwYVhabFNVUTdabXhoZENCcGJpQm9hV2RvY0NCcGJuUWdaMnhmVEdGNVpYSTdBR1pzWVhRZ0lHbHVJR3h2ZDNBZ0lDQWdJR2x1ZENCbmJGOVRZVzF3YkdWSlJEc2dJQ0FnSUNCcGJpQnRaV1JwZFcxd0lIWmxZeklnWjJ4ZlUyRnRjR3hsVUc5emFYUnBiMjQ3Wm14aGRDQWdhVzRnYUdsbmFIQWdJQ0FnYVc1MElHZHNYMU5oYlhCc1pVMWhjMnRKYmx0ZE95QWdJQ0FnYjNWMElHaHBaMmh3SUNBZ0lHbHVkQ0JuYkY5VFlXMXdiR1ZOWVhOclcxMDdBSFZ1YVdadmNtMGdiRzkzY0NCcGJuUWdaMnhmVG5WdFUyRnRjR3hsY3pzQWFHbG5hSEFnWm14dllYUWdaMnhmUm5KaFowUmxjSFJvUlZoVU93Qm1iR0YwSUdsdUlHbDJaV015SUdkc1gwWnlZV2R0Wlc1MFUybDZaVTVXTzJac1lYUWdhVzRnYVc1MElDQWdaMnhmU1c1MmIyTmhkR2x2Ym5OUVpYSlFhWGhsYkU1V093QnBiaUIyWldNeklHZHNYMEpoY25sRGIyOXlaRTVXTzJsdUlIWmxZek1nWjJ4ZlFtRnllVU52YjNKa1RtOVFaWEp6Y0U1V093QjFibWxtYjNKdElIVnBiblFnWjJ4ZlUzVmlSM0p2ZFhCVGFYcGxRVkpDTzJsdUlIVnBiblFnSUNBZ0lHZHNYMU4xWWtkeWIzVndTVzUyYjJOaGRHbHZia0ZTUWp0cGJpQjFhVzUwTmpSZmRDQm5iRjlUZFdKSGNtOTFjRVZ4VFdGemEwRlNRanRwYmlCMWFXNTBOalJmZENCbmJGOVRkV0pIY205MWNFZGxUV0Z6YTBGU1FqdHBiaUIxYVc1ME5qUmZkQ0JuYkY5VGRXSkhjbTkxY0VkMFRXRnphMEZTUWp0cGJpQjFhVzUwTmpSZmRDQm5iRjlUZFdKSGNtOTFjRXhsVFdGemEwRlNRanRwYmlCMWFXNTBOalJmZENCbmJGOVRkV0pIY205MWNFeDBUV0Z6YTBGU1Fqc0tBSFZ1YVdadmNtMGdkV2x1ZENCbmJGOVRkV0pIY205MWNGTnBlbVZCVWtJN1pteGhkQ0JwYmlCMWFXNTBJQ0FnSUNCbmJGOVRkV0pIY205MWNFbHVkbTlqWVhScGIyNUJVa0k3Wm14aGRDQnBiaUIxYVc1ME5qUmZkQ0JuYkY5VGRXSkhjbTkxY0VWeFRXRnphMEZTUWp0bWJHRjBJR2x1SUhWcGJuUTJORjkwSUdkc1gxTjFZa2R5YjNWd1IyVk5ZWE5yUVZKQ08yWnNZWFFnYVc0Z2RXbHVkRFkwWDNRZ1oyeGZVM1ZpUjNKdmRYQkhkRTFoYzJ0QlVrSTdabXhoZENCcGJpQjFhVzUwTmpSZmRDQm5iRjlUZFdKSGNtOTFjRXhsVFdGemEwRlNRanRtYkdGMElHbHVJSFZwYm5RMk5GOTBJR2RzWDFOMVlrZHliM1Z3VEhSTllYTnJRVkpDT3dvQVpteGhkQ0JwYmlCb2FXZG9jQ0JwYm5RZ1oyeGZSR1YyYVdObFNXNWtaWGc3Wm14aGRDQnBiaUJvYVdkb2NDQnBiblFnWjJ4ZlZtbGxkMGx1WkdWNE93b0FhVzRnYldWa2FYVnRjQ0IxYVc1MElDQm5iRjlUZFdKbmNtOTFjRk5wZW1VN2FXNGdiV1ZrYVhWdGNDQjFhVzUwSUNCbmJGOVRkV0puY205MWNFbHVkbTlqWVhScGIyNUpSRHRwYmlCb2FXZG9jQ0FnSUhWMlpXTTBJR2RzWDFOMVltZHliM1Z3UlhGTllYTnJPMmx1SUdocFoyaHdJQ0FnZFhabFl6UWdaMnhmVTNWaVozSnZkWEJIWlUxaGMyczdhVzRnYUdsbmFIQWdJQ0IxZG1Wak5DQm5iRjlUZFdKbmNtOTFjRWQwVFdGemF6dHBiaUJvYVdkb2NDQWdJSFYyWldNMElHZHNYMU4xWW1keWIzVndUR1ZOWVhOck8ybHVJR2hwWjJod0lDQWdkWFpsWXpRZ1oyeGZVM1ZpWjNKdmRYQk1kRTFoYzJzN2FXNGdhR2xuYUhBZ0lDQjFhVzUwSUNCbmJGOVhZWEp3YzFCbGNsTk5UbFk3YVc0Z2FHbG5hSEFnSUNCMWFXNTBJQ0JuYkY5VFRVTnZkVzUwVGxZN2FXNGdhR2xuYUhBZ0lDQjFhVzUwSUNCbmJGOVhZWEp3U1VST1ZqdHBiaUJvYVdkb2NDQWdJSFZwYm5RZ0lHZHNYMU5OU1VST1Zqc0tBR1pzWVhRZ2FXNGdiV1ZrYVhWdGNDQjFhVzUwSUNCbmJGOVRkV0puY205MWNGTnBlbVU3Wm14aGRDQnBiaUJ0WldScGRXMXdJSFZwYm5RZ0lHZHNYMU4xWW1keWIzVndTVzUyYjJOaGRHbHZia2xFTzJac1lYUWdhVzRnYUdsbmFIQWdJQ0IxZG1Wak5DQm5iRjlUZFdKbmNtOTFjRVZ4VFdGemF6dG1iR0YwSUdsdUlHaHBaMmh3SUNBZ2RYWmxZelFnWjJ4ZlUzVmlaM0p2ZFhCSFpVMWhjMnM3Wm14aGRDQnBiaUJvYVdkb2NDQWdJSFYyWldNMElHZHNYMU4xWW1keWIzVndSM1JOWVhOck8yWnNZWFFnYVc0Z2FHbG5hSEFnSUNCMWRtVmpOQ0JuYkY5VGRXSm5jbTkxY0V4bFRXRnphenRtYkdGMElHbHVJR2hwWjJod0lDQWdkWFpsWXpRZ1oyeGZVM1ZpWjNKdmRYQk1kRTFoYzJzN1pteGhkQ0JwYmlCb2FXZG9jQ0FnSUhWcGJuUWdJR2RzWDFkaGNuQnpVR1Z5VTAxT1ZqdG1iR0YwSUdsdUlHaHBaMmh3SUNBZ2RXbHVkQ0FnWjJ4ZlUwMURiM1Z1ZEU1V08yWnNZWFFnYVc0Z2FHbG5hSEFnSUNCMWFXNTBJQ0JuYkY5WFlYSndTVVJPVmp0bWJHRjBJR2x1SUdocFoyaHdJQ0FnZFdsdWRDQWdaMnhmVTAxSlJFNVdPd29BYVc0Z2FHbG5hSEFnSUNCMWFXNTBJQ0JuYkY5T2RXMVRkV0puY205MWNITTdhVzRnYUdsbmFIQWdJQ0IxYVc1MElDQm5iRjlUZFdKbmNtOTFjRWxFT3dvQVkyOXVjM1FnZFdsdWRDQm5iRjlTWVhsR2JHRm5jMDV2Ym1WT1ZpQTlJREJWTzJOdmJuTjBJSFZwYm5RZ1oyeGZVbUY1Um14aFozTlBjR0Z4ZFdWT1ZpQTlJREZWTzJOdmJuTjBJSFZwYm5RZ1oyeGZVbUY1Um14aFozTk9iMDl3WVhGMVpVNVdJRDBnTWxVN1kyOXVjM1FnZFdsdWRDQm5iRjlTWVhsR2JHRm5jMVJsY20xcGJtRjBaVTl1Um1seWMzUklhWFJPVmlBOUlEUlZPMk52Ym5OMElIVnBiblFnWjJ4ZlVtRjVSbXhoWjNOVGEybHdRMnh2YzJWemRFaHBkRk5vWVdSbGNrNVdJRDBnT0ZVN1kyOXVjM1FnZFdsdWRDQm5iRjlTWVhsR2JHRm5jME4xYkd4Q1lXTnJSbUZqYVc1blZISnBZVzVuYkdWelRsWWdQU0F4TmxVN1kyOXVjM1FnZFdsdWRDQm5iRjlTWVhsR2JHRm5jME4xYkd4R2NtOXVkRVpoWTJsdVoxUnlhV0Z1WjJ4bGMwNVdJRDBnTXpKVk8yTnZibk4wSUhWcGJuUWdaMnhmVW1GNVJteGhaM05EZFd4c1QzQmhjWFZsVGxZZ1BTQTJORlU3WTI5dWMzUWdkV2x1ZENCbmJGOVNZWGxHYkdGbmMwTjFiR3hPYjA5d1lYRjFaVTVXSUQwZ01USTRWVHNLQUdsdUlDQWdJSFYyWldNeklDQm5iRjlNWVhWdVkyaEpSRTVXTzJsdUlDQWdJSFYyWldNeklDQm5iRjlNWVhWdVkyaFRhWHBsVGxZN0NnQnBiaUFnSUNCMWRtVmpNeUFnWjJ4ZlRHRjFibU5vU1VST1ZqdHBiaUFnSUNCMWRtVmpNeUFnWjJ4ZlRHRjFibU5vVTJsNlpVNVdPMmx1SUNBZ0lDQnBiblFnSUNCbmJGOVFjbWx0YVhScGRtVkpSRHRwYmlBZ0lDQWdhVzUwSUNBZ1oyeGZTVzV6ZEdGdVkyVkpSRHRwYmlBZ0lDQWdhVzUwSUNBZ1oyeGZTVzV6ZEdGdVkyVkRkWE4wYjIxSmJtUmxlRTVXTzJsdUlDQWdJSFpsWXpNZ0lDQm5iRjlYYjNKc1pGSmhlVTl5YVdkcGJrNVdPMmx1SUNBZ0lIWmxZek1nSUNCbmJGOVhiM0pzWkZKaGVVUnBjbVZqZEdsdmJrNVdPMmx1SUNBZ0lIWmxZek1nSUNCbmJGOVBZbXBsWTNSU1lYbFBjbWxuYVc1T1ZqdHBiaUFnSUNCMlpXTXpJQ0FnWjJ4ZlQySnFaV04wVW1GNVJHbHlaV04wYVc5dVRsWTdhVzRnSUNBZ1pteHZZWFFnSUdkc1gxSmhlVlJ0YVc1T1ZqdHBiaUFnSUNCbWJHOWhkQ0FnWjJ4ZlVtRjVWRzFoZUU1V08ybHVJQ0FnSUcxaGREUjRNeUJuYkY5UFltcGxZM1JVYjFkdmNteGtUbFk3YVc0Z0lDQWdiV0YwTkhneklHZHNYMWR2Y214a1ZHOVBZbXBsWTNST1ZqdHBiaUFnSUNCMWFXNTBJQ0FnWjJ4ZlNXNWpiMjFwYm1kU1lYbEdiR0ZuYzA1V093b0FhVzRnSUNBZ2RYWmxZek1nSUdkc1gweGhkVzVqYUVsRVRsWTdhVzRnSUNBZ2RYWmxZek1nSUdkc1gweGhkVzVqYUZOcGVtVk9WanRwYmlBZ0lDQWdhVzUwSUNBZ1oyeGZVSEpwYldsMGFYWmxTVVE3YVc0Z0lDQWdJR2x1ZENBZ0lHZHNYMGx1YzNSaGJtTmxTVVE3YVc0Z0lDQWdJR2x1ZENBZ0lHZHNYMGx1YzNSaGJtTmxRM1Z6ZEc5dFNXNWtaWGhPVmp0cGJpQWdJQ0IyWldNeklDQWdaMnhmVjI5eWJHUlNZWGxQY21sbmFXNU9WanRwYmlBZ0lDQjJaV016SUNBZ1oyeGZWMjl5YkdSU1lYbEVhWEpsWTNScGIyNU9WanRwYmlBZ0lDQjJaV016SUNBZ1oyeGZUMkpxWldOMFVtRjVUM0pwWjJsdVRsWTdhVzRnSUNBZ2RtVmpNeUFnSUdkc1gwOWlhbVZqZEZKaGVVUnBjbVZqZEdsdmJrNVdPMmx1SUNBZ0lHWnNiMkYwSUNCbmJGOVNZWGxVYldsdVRsWTdhVzRnSUNBZ1pteHZZWFFnSUdkc1gxSmhlVlJ0WVhoT1ZqdHBiaUFnSUNCbWJHOWhkQ0FnWjJ4ZlNHbDBWRTVXTzJsdUlDQWdJSFZwYm5RZ0lDQm5iRjlJYVhSTGFXNWtUbFk3YVc0Z0lDQWdiV0YwTkhneklHZHNYMDlpYW1WamRGUnZWMjl5YkdST1ZqdHBiaUFnSUNCdFlYUTBlRE1nWjJ4ZlYyOXliR1JVYjA5aWFtVmpkRTVXTzJsdUlDQWdJSFZwYm5RZ0lDQm5iRjlKYm1OdmJXbHVaMUpoZVVac1lXZHpUbFk3Q2dCcGJpQWdJQ0IxZG1Wak15QWdaMnhmVEdGMWJtTm9TVVJPVmp0cGJpQWdJQ0IxZG1Wak15QWdaMnhmVEdGMWJtTm9VMmw2WlU1V08ybHVJQ0FnSUhabFl6TWdJQ0JuYkY5WGIzSnNaRkpoZVU5eWFXZHBiazVXTzJsdUlDQWdJSFpsWXpNZ0lDQm5iRjlYYjNKc1pGSmhlVVJwY21WamRHbHZiazVXTzJsdUlDQWdJSFpsWXpNZ0lDQm5iRjlQWW1wbFkzUlNZWGxQY21sbmFXNU9WanRwYmlBZ0lDQjJaV016SUNBZ1oyeGZUMkpxWldOMFVtRjVSR2x5WldOMGFXOXVUbFk3YVc0Z0lDQWdabXh2WVhRZ0lHZHNYMUpoZVZSdGFXNU9WanRwYmlBZ0lDQm1iRzloZENBZ1oyeGZVbUY1VkcxaGVFNVdPMmx1SUNBZ0lIVnBiblFnSUNCbmJGOUpibU52YldsdVoxSmhlVVpzWVdkelRsWTdDZ0JtYkdGMElHbHVJR2hwWjJod0lIVnBiblFnWjJ4ZlZtbGxkMGxFWDA5V1Vqc0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVVJsZG1salpTQWdJQ0FnSUQwZ01Uc0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVmR2Y210bmNtOTFjQ0FnSUQwZ01qc0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVk4xWW1keWIzVndJQ0FnSUQwZ016c0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVWx1ZG05allYUnBiMjRnSUQwZ05Ec0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVkYxWlhWbFJtRnRhV3g1SUQwZ05Uc0tBR052Ym5OMElHbHVkQ0JuYkY5VFpXMWhiblJwWTNOU1pXeGhlR1ZrSUNBZ0lDQWdJQ0FnUFNBd2VEQTdDZ0JqYjI1emRDQnBiblFnWjJ4ZlUyVnRZVzUwYVdOelFXTnhkV2x5WlNBZ0lDQWdJQ0FnSUQwZ01IZ3lPd29BWTI5dWMzUWdhVzUwSUdkc1gxTmxiV0Z1ZEdsamMxSmxiR1ZoYzJVZ0lDQWdJQ0FnSUNBOUlEQjRORHNLQUdOdmJuTjBJR2x1ZENCbmJGOVRaVzFoYm5ScFkzTkJZM0YxYVhKbFVtVnNaV0Z6WlNBZ1BTQXdlRGc3Q2dCamIyNXpkQ0JwYm5RZ1oyeGZVMlZ0WVc1MGFXTnpUV0ZyWlVGMllXbHNZV0pzWlNBZ0lEMGdNSGd5TURBd093b0FZMjl1YzNRZ2FXNTBJR2RzWDFObGJXRnVkR2xqYzAxaGEyVldhWE5wWW14bElDQWdJQ0E5SURCNE5EQXdNRHNLQUdOdmJuTjBJR2x1ZENCbmJGOVRaVzFoYm5ScFkzTldiMnhoZEdsc1pTQWdJQ0FnSUNBZ1BTQXdlRGd3TURBN0NnQmpiMjV6ZENCcGJuUWdaMnhmVTNSdmNtRm5aVk5sYldGdWRHbGpjMDV2Ym1VZ0lDQWdJRDBnTUhnd093b0FZMjl1YzNRZ2FXNTBJR2RzWDFOMGIzSmhaMlZUWlcxaGJuUnBZM05DZFdabVpYSWdJQ0E5SURCNE5EQTdDZ0JqYjI1emRDQnBiblFnWjJ4ZlUzUnZjbUZuWlZObGJXRnVkR2xqYzFOb1lYSmxaQ0FnSUQwZ01IZ3hNREE3Q2dCamIyNXpkQ0JwYm5RZ1oyeGZVM1J2Y21GblpWTmxiV0Z1ZEdsamMwbHRZV2RsSUNBZ0lEMGdNSGc0TURBN0NnQmpiMjV6ZENCcGJuUWdaMnhmVTNSdmNtRm5aVk5sYldGdWRHbGpjMDkxZEhCMWRDQWdJRDBnTUhneE1EQXdPd29BUWJEakJ3dm5Bd0VBQUFBSUFBQUFDUUFBQUFNQUFBQmliMjlzSUhOd1lYSnpaVlJsZUdWc2MxSmxjMmxrWlc1MFFWSkNLR2x1ZENCamIyUmxLVHNLQUdocFoyaHdJQUJwZG1WakFDQnBiV0ZuWlZOcGVtVW9jbVZoWkc5dWJIa2dkM0pwZEdWdmJteDVJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJQUFnZEdWNGRIVnlaVk5wZW1Vb0FDeHBiblFwT3dvQUtUc0tBR2x1ZENBQWFXMWhaMlZUWVcxd2JHVnpLSEpsWVdSdmJteDVJSGR5YVhSbGIyNXNlU0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0FBZEdWNGRIVnlaVk5oYlhCc1pYTW9BSFpsWXpJZ2RHVjRkSFZ5WlZGMVpYSjVURzlrS0FBc0lHWnNiMkYwTVRaZmRBQXNJR1pzYjJGMEFDd2daakUyZG1WakFDd2dkbVZqQUdsdWRDQjBaWGgwZFhKbFVYVmxjbmxNWlhabGJITW9BQ3dnYVc1MEFDd2dhWFpsWXdCMlpXTTBJR2x0WVdkbFRHOWhaQ2h5WldGa2IyNXNlU0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0FBZG05cFpDQnBiV0ZuWlZOMGIzSmxLSGR5YVhSbGIyNXNlU0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0FBTENBQWRtVmpOQ2s3Q2dCcGJuUWdjM0JoY25ObFNXMWhaMlZNYjJGa1FWSkNLSEpsWVdSdmJteDVJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJQUFzSUc5MWRDQUFhR2xuYUhBZ2FXNTBBR2hwWjJod0lIVnBiblFBUWFEbkJ3dTRmN3p6QVFEZjh3RUFBdlFCQUNYMEFRQkk5QUVBYXZRQkFJMzBBUUFnYVcxaFoyVkJkRzl0YVdOQlpHUW9kbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdBQ0JwYldGblpVRjBiMjFwWTAxcGJpaDJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQUFJR2x0WVdkbFFYUnZiV2xqVFdGNEtIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElBQWdhVzFoWjJWQmRHOXRhV05CYm1Rb2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ0FDQnBiV0ZuWlVGMGIyMXBZMDl5S0hadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUFBZ2FXMWhaMlZCZEc5dGFXTlliM0lvZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnQUNCcGJXRm5aVUYwYjIxcFkwVjRZMmhoYm1kbEtIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElBQXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RQUlHbHRZV2RsUVhSdmJXbGpRMjl0Y0ZOM1lYQW9kbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdBQ3dnYVc1MExDQnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUUFJR2x0WVdkbFFYUnZiV2xqVEc5aFpDaDJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQUFMQ0JwYm5Rc0lHbHVkQ3dnYVc1MEtUc0tBSFp2YVdRZ2FXMWhaMlZCZEc5dGFXTlRkRzl5WlNoMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENBQVpteHZZWFFnYVcxaFoyVkJkRzl0YVdORmVHTm9ZVzVuWlNoMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENBQUxDQm1iRzloZENrN0NnQjJaV00wSUdsdFlXZGxURzloWkV4dlpFRk5SQ2h5WldGa2IyNXNlU0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0FBZG05cFpDQnBiV0ZuWlZOMGIzSmxURzlrUVUxRUtIZHlhWFJsYjI1c2VTQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQUFhVzUwSUhOd1lYSnpaVWx0WVdkbFRHOWhaRXh2WkVGTlJDaHlaV0ZrYjI1c2VTQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQUFkbVZqTkNCemRXSndZWE56VEc5aFpBQW9BR1pzYjJGME1UWmZkQ0FBWm14dllYUWdBSFpsWXpRZ0FITndZWEp6WlZSbGVHVnNBSE53WVhKelpWUmxlSFIxY21VQWRHVjRaV3dBZEdWNGRIVnlaUUJRY205cUFFeHZaQUJIY21Ga0FFWmxkR05vQUU5bVpuTmxkQUJEYkdGdGNBQkJVa0lBTEdZeE5uWmxZelFBTEhabFl6UUFMQUIyWldNQUxHWnNiMkYwQUN4cGJuUUFMR1pzYjJGME1UWmZkQUFzWm14dllYUXhObDkwTEdac2IyRjBNVFpmZEFBc1pteHZZWFFzWm14dllYUUFMR1l4Tm5abFl3QXNkbVZqQUN4cGRtVmpBQ3h2ZFhRZ0FITndZWEp6WlZSbGVIUjFjbVZIWVhSb1pYSUFkR1Y0ZEhWeVpVZGhkR2hsY2dCUFptWnpaWFJ6QUN4cGRtVmpNZ0JiTkYwQVFVMUVBR052Ym5OMElHMWxaR2wxYlhBZ2FXNTBJQ0JuYkY5TllYaFdaWEowWlhoQmRIUnlhV0p6SUQwZ0pXUTdBR052Ym5OMElHMWxaR2wxYlhBZ2FXNTBJQ0JuYkY5TllYaFdaWEowWlhoVmJtbG1iM0p0Vm1WamRHOXljeUE5SUNWa093QmpiMjV6ZENCdFpXUnBkVzF3SUdsdWRDQWdaMnhmVFdGNFZtVnlkR1Y0VkdWNGRIVnlaVWx0WVdkbFZXNXBkSE1nUFNBbFpEc0FZMjl1YzNRZ2JXVmthWFZ0Y0NCcGJuUWdJR2RzWDAxaGVFTnZiV0pwYm1Wa1ZHVjRkSFZ5WlVsdFlXZGxWVzVwZEhNZ1BTQWxaRHNBWTI5dWMzUWdiV1ZrYVhWdGNDQnBiblFnSUdkc1gwMWhlRlJsZUhSMWNtVkpiV0ZuWlZWdWFYUnpJRDBnSldRN0FHTnZibk4wSUcxbFpHbDFiWEFnYVc1MElDQm5iRjlOWVhoR2NtRm5iV1Z1ZEZWdWFXWnZjbTFXWldOMGIzSnpJRDBnSldRN0FHTnZibk4wSUcxbFpHbDFiWEFnYVc1MElDQm5iRjlOWVhoRWNtRjNRblZtWm1WeWN5QTlJQ1ZrT3dCamIyNXpkQ0J0WldScGRXMXdJR2x1ZENBZ1oyeGZUV0Y0Vm1GeWVXbHVaMVpsWTNSdmNuTWdQU0FsWkRzQVkyOXVjM1FnYldWa2FYVnRjQ0JwYm5RZ0lHZHNYMDFoZUZabGNuUmxlRTkxZEhCMWRGWmxZM1J2Y25NZ1BTQWxaRHNBWTI5dWMzUWdiV1ZrYVhWdGNDQnBiblFnSUdkc1gwMWhlRVp5WVdkdFpXNTBTVzV3ZFhSV1pXTjBiM0p6SUQwZ0pXUTdBR052Ym5OMElHMWxaR2wxYlhBZ2FXNTBJQ0JuYkY5TmFXNVFjbTluY21GdFZHVjRaV3hQWm1aelpYUWdQU0FsWkRzQVkyOXVjM1FnYldWa2FYVnRjQ0JwYm5RZ0lHZHNYMDFoZUZCeWIyZHlZVzFVWlhobGJFOW1abk5sZENBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRSMlZ2YldWMGNubEpibkIxZEVOdmJYQnZibVZ1ZEhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUdkc1gwMWhlRWRsYjIxbGRISjVUM1YwY0hWMFEyOXRjRzl1Wlc1MGN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UjJWdmJXVjBjbmxKYldGblpWVnVhV1p2Y20xeklEMGdKV1E3QUdOdmJuTjBJR2x1ZENCbmJGOU5ZWGhIWlc5dFpYUnllVlJsZUhSMWNtVkpiV0ZuWlZWdWFYUnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoSFpXOXRaWFJ5ZVU5MWRIQjFkRlpsY25ScFkyVnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoSFpXOXRaWFJ5ZVZSdmRHRnNUM1YwY0hWMFEyOXRjRzl1Wlc1MGN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UjJWdmJXVjBjbmxWYm1sbWIzSnRRMjl0Y0c5dVpXNTBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFIyVnZiV1YwY25sQmRHOXRhV05EYjNWdWRHVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFIyVnZiV1YwY25sQmRHOXRhV05EYjNWdWRHVnlRblZtWm1WeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0VkdWemMwTnZiblJ5YjJ4SmJuQjFkRU52YlhCdmJtVnVkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVGUmxjM05EYjI1MGNtOXNUM1YwY0hWMFEyOXRjRzl1Wlc1MGN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0VkdWemMwTnZiblJ5YjJ4VVpYaDBkWEpsU1cxaFoyVlZibWwwY3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWR1Z6YzBOdmJuUnliMnhWYm1sbWIzSnRRMjl0Y0c5dVpXNTBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFZHVnpjME52Ym5SeWIyeFViM1JoYkU5MWRIQjFkRU52YlhCdmJtVnVkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVGUmxjM05GZG1Gc2RXRjBhVzl1U1c1d2RYUkRiMjF3YjI1bGJuUnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoVVpYTnpSWFpoYkhWaGRHbHZiazkxZEhCMWRFTnZiWEJ2Ym1WdWRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUZSbGMzTkZkbUZzZFdGMGFXOXVWR1Y0ZEhWeVpVbHRZV2RsVlc1cGRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUZSbGMzTkZkbUZzZFdGMGFXOXVWVzVwWm05eWJVTnZiWEJ2Ym1WdWRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUZSbGMzTlFZWFJqYUVOdmJYQnZibVZ1ZEhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUdkc1gwMWhlRkJoZEdOb1ZtVnlkR2xqWlhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUdkc1gwMWhlRlJsYzNOSFpXNU1aWFpsYkNBOUlDVmtPd0JwYmlCbmJGOVFaWEpXWlhKMFpYZ2dlMmhwWjJod0lIWmxZelFnWjJ4ZlVHOXphWFJwYjI0N2FHbG5hSEFnWm14dllYUWdaMnhmVUc5cGJuUlRhWHBsTzJocFoyaHdJSFpsWXpRZ1oyeGZVMlZqYjI1a1lYSjVVRzl6YVhScGIyNU9WanRvYVdkb2NDQjJaV00wSUdkc1gxQnZjMmwwYVc5dVVHVnlWbWxsZDA1V1cxMDdmU0JuYkY5cGJsdG5iRjlOWVhoUVlYUmphRlpsY25ScFkyVnpYVHNLQUdOdmJuTjBJR2x1ZENCbmJGOU5ZWGhVWlhOelEyOXVkSEp2YkVsdFlXZGxWVzVwWm05eWJYTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUZSbGMzTkZkbUZzZFdGMGFXOXVTVzFoWjJWVmJtbG1iM0p0Y3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWR1Z6YzBOdmJuUnliMnhCZEc5dGFXTkRiM1Z1ZEdWeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0VkdWemMwVjJZV3gxWVhScGIyNUJkRzl0YVdORGIzVnVkR1Z5Y3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWR1Z6YzBOdmJuUnliMnhCZEc5dGFXTkRiM1Z1ZEdWeVFuVm1abVZ5Y3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWR1Z6YzBWMllXeDFZWFJwYjI1QmRHOXRhV05EYjNWdWRHVnlRblZtWm1WeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ0lHZHNYMDFoZUZabGNuUmxlRlZ1YVdadmNtMVdaV04wYjNKeklEMGdKV1E3QUdOdmJuTjBJR2x1ZENBZ1oyeGZUV0Y0Um5KaFoyMWxiblJWYm1sbWIzSnRWbVZqZEc5eWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ0lHZHNYMDFoZUZabGNuUmxlRUYwZEhKcFluTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElDQm5iRjlOWVhoV1pYSjBaWGhVWlhoMGRYSmxTVzFoWjJWVmJtbDBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdJR2RzWDAxaGVFTnZiV0pwYm1Wa1ZHVjRkSFZ5WlVsdFlXZGxWVzVwZEhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUNCbmJGOU5ZWGhVWlhoMGRYSmxTVzFoWjJWVmJtbDBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdJR2RzWDAxaGVFUnlZWGRDZFdabVpYSnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQWdaMnhmVFdGNFRHbG5hSFJ6SUQwZ0pXUTdBR052Ym5OMElHbHVkQ0FnWjJ4ZlRXRjRRMnhwY0ZCc1lXNWxjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdJR2RzWDAxaGVGUmxlSFIxY21WVmJtbDBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdJR2RzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJQ0JuYkY5TllYaFdaWEowWlhoVmJtbG1iM0p0UTI5dGNHOXVaVzUwY3lBOUlDVmtPd0JqYjI1emRDQnBiblFnSUdkc1gwMWhlRlpoY25scGJtZEdiRzloZEhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUNCbmJGOU5ZWGhHY21GbmJXVnVkRlZ1YVdadmNtMURiMjF3YjI1bGJuUnpJRDBnSldRN0FIVnVhV1p2Y20wZ2JXRjBOQ0FnWjJ4ZlZHVjRkSFZ5WlUxaGRISnBlRnRuYkY5TllYaFVaWGgwZFhKbFEyOXZjbVJ6WFR0MWJtbG1iM0p0SUcxaGREUWdJR2RzWDFSbGVIUjFjbVZOWVhSeWFYaEpiblpsY25ObFcyZHNYMDFoZUZSbGVIUjFjbVZEYjI5eVpITmRPM1Z1YVdadmNtMGdiV0YwTkNBZ1oyeGZWR1Y0ZEhWeVpVMWhkSEpwZUZSeVlXNXpjRzl6WlZ0bmJGOU5ZWGhVWlhoMGRYSmxRMjl2Y21SelhUdDFibWxtYjNKdElHMWhkRFFnSUdkc1gxUmxlSFIxY21WTllYUnlhWGhKYm5abGNuTmxWSEpoYm5Od2IzTmxXMmRzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE5kTzNWdWFXWnZjbTBnZG1Wak5DQWdaMnhmUTJ4cGNGQnNZVzVsVzJkc1gwMWhlRU5zYVhCUWJHRnVaWE5kTzNWdWFXWnZjbTBnWjJ4ZlRHbG5hSFJUYjNWeVkyVlFZWEpoYldWMFpYSnpJQ0JuYkY5TWFXZG9kRk52ZFhKalpWdG5iRjlOWVhoTWFXZG9kSE5kTzNWdWFXWnZjbTBnWjJ4ZlRHbG5hSFJRY205a2RXTjBjeUJuYkY5R2NtOXVkRXhwWjJoMFVISnZaSFZqZEZ0bmJGOU5ZWGhNYVdkb2RITmRPM1Z1YVdadmNtMGdaMnhmVEdsbmFIUlFjbTlrZFdOMGN5Qm5iRjlDWVdOclRHbG5hSFJRY205a2RXTjBXMmRzWDAxaGVFeHBaMmgwYzEwN2RXNXBabTl5YlNCMlpXTTBJQ0JuYkY5VVpYaDBkWEpsUlc1MlEyOXNiM0piWjJ4ZlRXRjRWR1Y0ZEhWeVpVbHRZV2RsVlc1cGRITmRPM1Z1YVdadmNtMGdkbVZqTkNBZ1oyeGZSWGxsVUd4aGJtVlRXMmRzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE5kTzNWdWFXWnZjbTBnZG1Wak5DQWdaMnhmUlhsbFVHeGhibVZVVzJkc1gwMWhlRlJsZUhSMWNtVkRiMjl5WkhOZE8zVnVhV1p2Y20wZ2RtVmpOQ0FnWjJ4ZlJYbGxVR3hoYm1WU1cyZHNYMDFoZUZSbGVIUjFjbVZEYjI5eVpITmRPM1Z1YVdadmNtMGdkbVZqTkNBZ1oyeGZSWGxsVUd4aGJtVlJXMmRzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE5kTzNWdWFXWnZjbTBnZG1Wak5DQWdaMnhmVDJKcVpXTjBVR3hoYm1WVFcyZHNYMDFoZUZSbGVIUjFjbVZEYjI5eVpITmRPM1Z1YVdadmNtMGdkbVZqTkNBZ1oyeGZUMkpxWldOMFVHeGhibVZVVzJkc1gwMWhlRlJsZUhSMWNtVkRiMjl5WkhOZE8zVnVhV1p2Y20wZ2RtVmpOQ0FnWjJ4ZlQySnFaV04wVUd4aGJtVlNXMmRzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE5kTzNWdWFXWnZjbTBnZG1Wak5DQWdaMnhmVDJKcVpXTjBVR3hoYm1WUlcyZHNYMDFoZUZSbGVIUjFjbVZEYjI5eVpITmRPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRRMnhwY0VScGMzUmhibU5sY3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWbUZ5ZVdsdVowTnZiWEJ2Ym1WdWRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVkbGIyMWxkSEo1Vm1GeWVXbHVaME52YlhCdmJtVnVkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVGWmxjblJsZUU5MWRIQjFkRU52YlhCdmJtVnVkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVFWnlZV2R0Wlc1MFNXNXdkWFJEYjIxd2IyNWxiblJ6SUQwZ0pXUTdBSDBnWjJ4ZmFXNWJaMnhmVFdGNFVHRjBZMmhXWlhKMGFXTmxjMTA3Q2dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0Vm1sbGQzQnZjblJ6SUQwZ0pXUTdBR052Ym5OMElHbHVkQ0JuYkY5TllYaERiMjFpYVc1bFpFbHRZV2RsVlc1cGRITkJibVJHY21GbmJXVnVkRTkxZEhCMWRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVsdFlXZGxVMkZ0Y0d4bGN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0VkhKaGJuTm1iM0p0Um1WbFpHSmhZMnRDZFdabVpYSnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoVWNtRnVjMlp2Y20xR1pXVmtZbUZqYTBsdWRHVnliR1ZoZG1Wa1EyOXRjRzl1Wlc1MGN5QTlJQ1ZrT3dCamIyNXpkQ0JwZG1Wak15Qm5iRjlOWVhoRGIyMXdkWFJsVjI5eWEwZHliM1Z3UTI5MWJuUWdQU0JwZG1Wak15Z2xaQ3dsWkN3bFpDazdBR052Ym5OMElHbDJaV016SUdkc1gwMWhlRU52YlhCMWRHVlhiM0pyUjNKdmRYQlRhWHBsSUQwZ2FYWmxZek1vSldRc0pXUXNKV1FwT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UTI5dGNIVjBaVlZ1YVdadmNtMURiMjF3YjI1bGJuUnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoRGIyMXdkWFJsVkdWNGRIVnlaVWx0WVdkbFZXNXBkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVFbHRZV2RsVlc1cGRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVOdmJXSnBibVZrVTJoaFpHVnlUM1YwY0hWMFVtVnpiM1Z5WTJWeklEMGdKV1E3QUdOdmJuTjBJR2x1ZENCbmJGOU5ZWGhXWlhKMFpYaEpiV0ZuWlZWdWFXWnZjbTF6SUQwZ0pXUTdBR052Ym5OMElHbHVkQ0JuYkY5TllYaEdjbUZuYldWdWRFbHRZV2RsVlc1cFptOXliWE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVFTnZiV0pwYm1Wa1NXMWhaMlZWYm1sbWIzSnRjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFEyOXRjSFYwWlVsdFlXZGxWVzVwWm05eWJYTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVOdmJYQjFkR1ZCZEc5dGFXTkRiM1Z1ZEdWeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UTI5dGNIVjBaVUYwYjIxcFkwTnZkVzUwWlhKQ2RXWm1aWEp6SUQwZ0pXUTdBR052Ym5OMElHbHVkQ0JuYkY5TllYaFdaWEowWlhoQmRHOXRhV05EYjNWdWRHVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFJuSmhaMjFsYm5SQmRHOXRhV05EYjNWdWRHVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFEyOXRZbWx1WldSQmRHOXRhV05EYjNWdWRHVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFFYUnZiV2xqUTI5MWJuUmxja0pwYm1ScGJtZHpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoV1pYSjBaWGhCZEc5dGFXTkRiM1Z1ZEdWeVFuVm1abVZ5Y3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRSbkpoWjIxbGJuUkJkRzl0YVdORGIzVnVkR1Z5UW5WbVptVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFEyOXRZbWx1WldSQmRHOXRhV05EYjNWdWRHVnlRblZtWm1WeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UVhSdmJXbGpRMjkxYm5SbGNrSjFabVpsY2xOcGVtVWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVOMWJHeEVhWE4wWVc1alpYTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVOdmJXSnBibVZrUTJ4cGNFRnVaRU4xYkd4RWFYTjBZVzVqWlhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUdkc1gwMWhlRk5oYlhCc1pYTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUUxbGMyaFBkWFJ3ZFhSV1pYSjBhV05sYzA1V0lEMGdKV1E3QUdOdmJuTjBJR2x1ZENCbmJGOU5ZWGhOWlhOb1QzVjBjSFYwVUhKcGJXbDBhWFpsYzA1V0lEMGdKV1E3QUdOdmJuTjBJR2wyWldNeklHZHNYMDFoZUUxbGMyaFhiM0pyUjNKdmRYQlRhWHBsVGxZZ1BTQnBkbVZqTXlnbFpDd2xaQ3dsWkNrN0FHTnZibk4wSUdsMlpXTXpJR2RzWDAxaGVGUmhjMnRYYjNKclIzSnZkWEJUYVhwbFRsWWdQU0JwZG1Wak15Z2xaQ3dsWkN3bFpDazdBR052Ym5OMElHbHVkQ0JuYkY5TllYaE5aWE5vVm1sbGQwTnZkVzUwVGxZZ1BTQWxaRHNBWjJ4ZlZtVnlkR1Y0U1c1a1pYZ0FaMnhmU1c1emRHRnVZMlZKYm1SbGVBQm5iRjlXWlhKMFpYaEpSQUJuYkY5SmJuTjBZVzVqWlVsRUFHZHNYMEpoYzJWV1pYSjBaWGhCVWtJQUpqZ0NBR2RzWDBKaGMyVkpibk4wWVc1alpVRlNRZ0JuYkY5RWNtRjNTVVJCVWtJQVoyeGZRbUZ6WlZabGNuUmxlQUJuYkY5Q1lYTmxTVzV6ZEdGdVkyVUFaMnhmUkhKaGQwbEVBR2RzWDFOMVlrZHliM1Z3VTJsNlpVRlNRZ0FBUkRnQ0FHZHNYMU4xWWtkeWIzVndTVzUyYjJOaGRHbHZia0ZTUWdCbmJGOVRkV0pIY205MWNFVnhUV0Z6YTBGU1FnQm5iRjlUZFdKSGNtOTFjRWRsVFdGemEwRlNRZ0JuYkY5VGRXSkhjbTkxY0VkMFRXRnphMEZTUWdCbmJGOVRkV0pIY205MWNFeGxUV0Z6YTBGU1FnQm5iRjlUZFdKSGNtOTFjRXgwVFdGemEwRlNRZ0JpWVd4c2IzUkJVa0lBY21WaFpFbHVkbTlqWVhScGIyNUJVa0lBY21WaFpFWnBjbk4wU1c1MmIyTmhkR2x2YmtGU1FnQmhibmxKYm5adlkyRjBhVzl1UVZKQ0FBQUFXVGdDQUdGc2JFbHVkbTlqWVhScGIyNXpRVkpDQUdGc2JFbHVkbTlqWVhScGIyNXpSWEYxWVd4QlVrSUFiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUUFBSEk0QWdCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkFCaFpHUkpiblp2WTJGMGFXOXVjMEZOUkFCdGFXNUpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRQWJXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUFHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJBQnpkMmw2ZW14bFNXNTJiMk5oZEdsdmJuTkJUVVFBYzNkcGVucHNaVWx1ZG05allYUnBiMjV6VjJsMGFGQmhkSFJsY201QlRVUUFkM0pwZEdWSmJuWnZZMkYwYVc5dVFVMUVBRzFpWTI1MFFVMUVBRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkFCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUUFZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFQUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUUFiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkFCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVBRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkFCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUUFZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFQUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUUFiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkFCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVBRzFwYmpNQWh6Z0NBRzFoZURNQWJXbGtNd0JuYkY5VFNVMUVSM0p2ZFhCVGFYcGxRVTFFQUFBQXBEZ0NBR04xWW1WR1lXTmxTVzVrWlhoQlRVUUFZM1ZpWlVaaFkyVkRiMjl5WkVGTlJBQjBhVzFsUVUxRUFHWnlZV2R0Wlc1MFRXRnphMFpsZEdOb1FVMUVBQUMyT0FJQVpuSmhaMjFsYm5SR1pYUmphRUZOUkFCamIzVnVkRXhsWVdScGJtZGFaWEp2Y3dBQTBqZ0NBR052ZFc1MFZISmhhV3hwYm1kYVpYSnZjd0JoWW5OdmJIVjBaVVJwWm1abGNtVnVZMlVBWVdSa1UyRjBkWEpoZEdVQWMzVmlkSEpoWTNSVFlYUjFjbUYwWlFCaGRtVnlZV2RsQUdGMlpYSmhaMlZTYjNWdVpHVmtBRzExYkhScGNHeDVNeko0TVRZQWRHVjRkSFZ5WlVadmIzUndjbWx1ZEU1V0FBRDFPQUlBZEdWNGRIVnlaVVp2YjNSd2NtbHVkRU5zWVcxd1RsWUFkR1Y0ZEhWeVpVWnZiM1J3Y21sdWRFeHZaRTVXQUhSbGVIUjFjbVZHYjI5MGNISnBiblJIY21Ga1RsWUFkR1Y0ZEhWeVpVWnZiM1J3Y21sdWRFZHlZV1JEYkdGdGNFNVdBR2RzWDBOdmJHOXlBR2RzWDFObFkyOXVaR0Z5ZVVOdmJHOXlBR2RzWDA1dmNtMWhiQUJuYkY5V1pYSjBaWGdBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREFBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREVBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRElBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRE1BWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFFBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFVBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFlBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRGNBWjJ4ZlJtOW5RMjl2Y21RQWRHVjRkSFZ5WlRKRVIzSmhaRVZZVkFBQUFBQVVPUUlBZEdWNGRIVnlaVEpFVUhKdmFrZHlZV1JGV0ZRQWRHVjRkSFZ5WlVOMVltVkhjbUZrUlZoVUFIUmxlSFIxY21WSFlYUm9aWEpQWm1aelpYUnpBQUFBQUM0NUFnQkJPUUlBWm0xaEFHbHRZV2RsUVhSdmJXbGpRV1JrQUFCVU9RSUFhVzFoWjJWQmRHOXRhV05OYVc0QWFXMWhaMlZCZEc5dGFXTk5ZWGdBYVcxaFoyVkJkRzl0YVdOQmJtUUFhVzFoWjJWQmRHOXRhV05QY2dCcGJXRm5aVUYwYjIxcFkxaHZjZ0JwYldGblpVRjBiMjFwWTBWNFkyaGhibWRsQUdsdFlXZGxRWFJ2YldsalEyOXRjRk4zWVhBQVoyeGZWbWxsZDBsRVgwOVdVZ0J2T1FJQWdEa0NBSE5vWVdSdmR6SkVSVmhVQUpJNUFnQnphR0ZrYjNjeVJGQnliMnBGV0ZRQVoyeGZRbTkxYm1ScGJtZENiM2hGV0ZRQUFBQ3BPUUlBWjJ4ZlFtOTFibVJwYm1kQ2IzaFBSVk1BQUFESE9RSUFaMnhmUW05MWJtUnBibWRDYjNnQVoyeGZVRzl6YVhScGIyNEFaMnhmVUc5cGJuUlRhWHBsQUdkc1gybHVBR2RzWDI5MWRBQm5iRjlEYkdsd1ZtVnlkR1Y0QUdkc1gwTnNhWEJFYVhOMFlXNWpaUUJuYkY5RGRXeHNSR2x6ZEdGdVkyVUFaMnhmVUhKcGJXbDBhWFpsU1VSSmJnQm5iRjlRY21sdGFYUnBkbVZKUkFCbmJGOUpiblp2WTJGMGFXOXVTVVFBWjJ4ZlRHRjVaWElBWjJ4ZlZtbGxkM0J2Y25SSmJtUmxlQUFBQUFEbE9RSUFDRG9DQUdkc1gxWnBaWGR3YjNKMFRXRnphd0FJT2dJQVoyeGZVMlZqYjI1a1lYSjVVRzl6YVhScGIyNU9WZ0FBSGpvQ0FHZHNYMU5sWTI5dVpHRnllVlpwWlhkd2IzSjBUV0Z6YTA1V0FHZHNYMUJ2YzJsMGFXOXVVR1Z5Vm1sbGQwNVdBRG82QWdCbmJGOVdhV1YzY0c5eWRFMWhjMnRRWlhKV2FXVjNUbFlBWjJ4ZlVHRjBZMmhXWlhKMGFXTmxjMGx1QUdkc1gxUmxjM05NWlhabGJFOTFkR1Z5QUdkc1gxUmxjM05NWlhabGJFbHVibVZ5QUdkc1gxUmxjM05EYjI5eVpBQUFBQUJmT2dJQVoyeGZSbkp2Ym5SRGIyeHZjZ0JuYkY5Q1lXTnJRMjlzYjNJQVoyeGZSbkp2Ym5SVFpXTnZibVJoY25sRGIyeHZjZ0JuYkY5Q1lXTnJVMlZqYjI1a1lYSjVRMjlzYjNJQVoyeGZWR1Y0UTI5dmNtUUFaMnhmUm05blJuSmhaME52YjNKa0FIVTZBZ0NRT2dJQXF6b0NBTW82QWdCbmJGOUVaWFpwWTJWSmJtUmxlQUFBNlRvQ0FHZHNYMVpwWlhkSmJtUmxlQUFBQUFEOU9nSUFaMnhmVTNWaVozSnZkWEJUYVhwbEFBNDdBZ0JuYkY5VGRXSm5jbTkxY0VsdWRtOWpZWFJwYjI1SlJBQm5iRjlUZFdKbmNtOTFjRVZ4VFdGemF3QUFBQ3M3QWdCbmJGOVRkV0puY205MWNFZGxUV0Z6YXdCbmJGOVRkV0puY205MWNFZDBUV0Z6YXdCbmJGOVRkV0puY205MWNFeGxUV0Z6YXdCbmJGOVRkV0puY205MWNFeDBUV0Z6YXdCbmJGOVhZWEp3YzFCbGNsTk5UbFlBU1RzQ0FHZHNYMU5OUTI5MWJuUk9WZ0JuYkY5WFlYSndTVVJPVmdCbmJGOVRUVWxFVGxZQVoyeGZSbkp2Ym5SR1lXTnBibWNBWjJ4ZlJuSmhaME52YjNKa0FHZHNYMUJ2YVc1MFEyOXZjbVFBWjJ4ZlJuSmhaME52Ykc5eUFHZHNYMFp5WVdkRVpYQjBhQUJuYkY5R2NtRm5SR1Z3ZEdoRldGUUFaMnhmU0dWc2NHVnlTVzUyYjJOaGRHbHZiZ0JuYkY5R2NtRm5VM1JsYm1OcGJGSmxaa0ZTUWdCaU93SUFaMnhmVTJGdGNHeGxTVVFBWjJ4ZlUyRnRjR3hsVUc5emFYUnBiMjRBWjJ4ZlUyRnRjR3hsVFdGemF3Qm5iRjlPZFcxVFlXMXdiR1Z6QUFBQWZ6c0NBR2RzWDFOaGJYQnNaVTFoYzJ0SmJnQ1ZPd0lBZEdWNGRIVnlaVEpFVEc5a1JWaFVBSFJsZUhSMWNtVXlSRkJ5YjJwTWIyUkZXRlFBZEdWNGRIVnlaVU4xWW1WTWIyUkZXRlFBWkVaa2VBQUFyVHNDQUdSR1pIa0FabmRwWkhSb0FHbHVkR1Z5Y0c5c1lYUmxRWFJEWlc1MGNtOXBaQUFBQU1rN0FnQnBiblJsY25CdmJHRjBaVUYwVTJGdGNHeGxBR2x1ZEdWeWNHOXNZWFJsUVhSUFptWnpaWFFBZEdWNGRIVnlaVEZFVEc5a0FBQUFBUEU3QWdCMFpYaDBkWEpsTWtSTWIyUUFkR1Y0ZEhWeVpUTkVURzlrQUhSbGVIUjFjbVZEZFdKbFRHOWtBSFJsZUhSMWNtVXhSRkJ5YjJwTWIyUUFkR1Y0ZEhWeVpUSkVVSEp2YWt4dlpBQjBaWGgwZFhKbE0wUlFjbTlxVEc5a0FITm9ZV1J2ZHpGRVRHOWtBSE5vWVdSdmR6SkVURzlrQUhOb1lXUnZkekZFVUhKdmFreHZaQUJ6YUdGa2IzY3lSRkJ5YjJwTWIyUUFkR1Y0ZEhWeVpURkVSM0poWkVGU1FnQjBaWGgwZFhKbE1VUlFjbTlxUjNKaFpFRlNRZ0IwWlhoMGRYSmxNa1JIY21Ga1FWSkNBSFJsZUhSMWNtVXlSRkJ5YjJwSGNtRmtRVkpDQUhSbGVIUjFjbVV6UkVkeVlXUkJVa0lBZEdWNGRIVnlaVE5FVUhKdmFrZHlZV1JCVWtJQWRHVjRkSFZ5WlVOMVltVkhjbUZrUVZKQ0FITm9ZV1J2ZHpGRVIzSmhaRUZTUWdCemFHRmtiM2N4UkZCeWIycEhjbUZrUVZKQ0FITm9ZV1J2ZHpKRVIzSmhaRUZTUWdCemFHRmtiM2N5UkZCeWIycEhjbUZrUVZKQ0FIUmxlSFIxY21VeVJGSmxZM1JIY21Ga1FWSkNBSFJsZUhSMWNtVXlSRkpsWTNSUWNtOXFSM0poWkVGU1FnQnphR0ZrYjNjeVJGSmxZM1JIY21Ga1FWSkNBSE5vWVdSdmR6SkVVbVZqZEZCeWIycEhjbUZrUVZKQ0FHMWxiVzl5ZVVKaGNuSnBaWElBQUFBQUN6d0NBR0YwYjIxcFkwTnZkVzUwWlhKSmJtTnlaVzFsYm5RQUFDbzhBZ0JoZEc5dGFXTkRiM1Z1ZEdWeVJHVmpjbVZ0Wlc1MEFHRjBiMjFwWTBOdmRXNTBaWElBWkVaa2VFWnBibVVBQUFCSVBBSUFaRVprZVVacGJtVUFabmRwWkhSb1JtbHVaUUJrUm1SNFEyOWhjbk5sQUdSR1pIbERiMkZ5YzJVQVpuZHBaSFJvUTI5aGNuTmxBSE53WVhKelpWUmxlSFIxY21WQlVrSUFZandDQUhOd1lYSnpaVlJsZUhSMWNtVk1iMlJCVWtJQWMzQmhjbk5sVkdWNGRIVnlaVTltWm5ObGRFRlNRZ0J6Y0dGeWMyVlVaWGhsYkVabGRHTm9RVkpDQUhOd1lYSnpaVlJsZUdWc1JtVjBZMmhQWm1aelpYUkJVa0lBYzNCaGNuTmxWR1Y0ZEhWeVpVeHZaRTltWm5ObGRFRlNRZ0J6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaRUZTUWdCemNHRnljMlZVWlhoMGRYSmxSM0poWkU5bVpuTmxkRUZTUWdCemNHRnljMlZVWlhoMGRYSmxSMkYwYUdWeVFWSkNBSE53WVhKelpWUmxlSFIxY21WSFlYUm9aWEpQWm1aelpYUkJVa0lBYzNCaGNuTmxWR1Y0ZEhWeVpVZGhkR2hsY2s5bVpuTmxkSE5CVWtJQWMzQmhjbk5sU1cxaFoyVk1iMkZrUVZKQ0FITndZWEp6WlZSbGVHVnNjMUpsYzJsa1pXNTBBSE53WVhKelpWUmxlSFIxY21WRGJHRnRjRUZTUWdBQWVUd0NBSE53WVhKelpWUmxlSFIxY21WUFptWnpaWFJEYkdGdGNFRlNRZ0J6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaRU5zWVcxd1FWSkNBSE53WVhKelpWUmxlSFIxY21WSGNtRmtUMlptYzJWMFEyeGhiWEJCVWtJQWRHVjRkSFZ5WlVOc1lXMXdRVkpDQUhSbGVIUjFjbVZQWm1aelpYUkRiR0Z0Y0VGU1FnQjBaWGgwZFhKbFIzSmhaRU5zWVcxd1FWSkNBSFJsZUhSMWNtVkhjbUZrVDJabWMyVjBRMnhoYlhCQlVrSUFaMnhmUW1GeWVVTnZiM0prVG05UVpYSnpjRUZOUkFBQUFBQ1ZQQUlBWjJ4ZlFtRnllVU52YjNKa1RtOVFaWEp6Y0VObGJuUnliMmxrUVUxRUFHZHNYMEpoY25sRGIyOXlaRTV2VUdWeWMzQlRZVzF3YkdWQlRVUUFaMnhmUW1GeWVVTnZiM0prVTIxdmIzUm9RVTFFQUdkc1gwSmhjbmxEYjI5eVpGTnRiMjkwYUVObGJuUnliMmxrUVUxRUFHZHNYMEpoY25sRGIyOXlaRk50YjI5MGFGTmhiWEJzWlVGTlJBQm5iRjlDWVhKNVEyOXZjbVJRZFd4c1RXOWtaV3hCVFVRQWFXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQUIwWlhoMGRYSmxSMkYwYUdWeVRHOWtRVTFFQUwwOEFnQjBaWGgwZFhKbFIyRjBhR1Z5VEc5a1QyWm1jMlYwUVUxRUFIUmxlSFIxY21WSFlYUm9aWEpNYjJSUFptWnpaWFJ6UVUxRUFITndZWEp6WlZSbGVIUjFjbVZIWVhSb1pYSk1iMlJCVFVRQWMzQmhjbk5sVkdWNGRIVnlaVWRoZEdobGNreHZaRTltWm5ObGRFRk5SQUJ6Y0dGeWMyVlVaWGgwZFhKbFIyRjBhR1Z5VEc5a1QyWm1jMlYwYzBGTlJBQnBiV0ZuWlV4dllXUk1iMlJCVFVRQTNEd0NBR2x0WVdkbFUzUnZjbVZNYjJSQlRVUUFjM0JoY25ObFNXMWhaMlZNYjJGa1RHOWtRVTFFQUdkc1gwWnlZV2RHZFd4c2VVTnZkbVZ5WldST1ZnQUFBQUQvUEFJQVoyeGZSbkpoWjIxbGJuUlRhWHBsVGxZQUFBQXBQUUlBWjJ4ZlNXNTJiMk5oZEdsdmJuTlFaWEpRYVhobGJFNVdBR2RzWDBKaGNubERiMjl5WkU1V0FFSTlBZ0JuYkY5Q1lYSjVRMjl2Y21ST2IxQmxjbk53VGxZQVoyeGZSbkpoWjFOcGVtVkZXRlFBQUFBQVpEMENBR2RzWDBaeVlXZEpiblp2WTJGMGFXOXVRMjkxYm5SRldGUUFBQUNIUFFJQVkyeHZZMnRCVWtJQUFBQUFtVDBDQUdOc2IyTnJNbmd6TWtGU1FnQmpiRzlqYTFKbFlXeDBhVzFsUlZoVUFBQUFyVDBDQUdOc2IyTnJVbVZoYkhScGJXVXllRE15UlZoVUFBQUFBTW85QWdEaFBRSUFjM1ZpWjNKdmRYQkNZWEp5YVdWeUFITjFZbWR5YjNWd1RXVnRiM0o1UW1GeWNtbGxjZ0J6ZFdKbmNtOTFjRTFsYlc5eWVVSmhjbkpwWlhKQ2RXWm1aWElBYzNWaVozSnZkWEJOWlcxdmNubENZWEp5YVdWeVNXMWhaMlVBYzNWaVozSnZkWEJGYkdWamRBQnpkV0puY205MWNFRnNiQUFBK0QwQ0FITjFZbWR5YjNWd1FXNTVBSE4xWW1keWIzVndRV3hzUlhGMVlXd0FjM1ZpWjNKdmRYQkNjbTloWkdOaGMzUUFjM1ZpWjNKdmRYQkNjbTloWkdOaGMzUkdhWEp6ZEFCemRXSm5jbTkxY0VKaGJHeHZkQUJ6ZFdKbmNtOTFjRWx1ZG1WeWMyVkNZV3hzYjNRQWMzVmlaM0p2ZFhCQ1lXeHNiM1JDYVhSRmVIUnlZV04wQUhOMVltZHliM1Z3UW1Gc2JHOTBRbWwwUTI5MWJuUUFjM1ZpWjNKdmRYQkNZV3hzYjNSSmJtTnNkWE5wZG1WQ2FYUkRiM1Z1ZEFCemRXSm5jbTkxY0VKaGJHeHZkRVY0WTJ4MWMybDJaVUpwZEVOdmRXNTBBSE4xWW1keWIzVndRbUZzYkc5MFJtbHVaRXhUUWdCemRXSm5jbTkxY0VKaGJHeHZkRVpwYm1STlUwSUFjM1ZpWjNKdmRYQlRhSFZtWm14bEFBQVVQZ0lBYzNWaVozSnZkWEJUYUhWbVpteGxXRzl5QUhOMVltZHliM1Z3VTJoMVptWnNaVlZ3QUFBQUFETStBZ0J6ZFdKbmNtOTFjRk5vZFdabWJHVkViM2R1QUhOMVltZHliM1Z3UVdSa0FGcytBZ0J6ZFdKbmNtOTFjRTExYkFCemRXSm5jbTkxY0UxcGJnQnpkV0puY205MWNFMWhlQUJ6ZFdKbmNtOTFjRUZ1WkFCemRXSm5jbTkxY0U5eUFITjFZbWR5YjNWd1dHOXlBSE4xWW1keWIzVndTVzVqYkhWemFYWmxRV1JrQUhOMVltZHliM1Z3U1c1amJIVnphWFpsVFhWc0FITjFZbWR5YjNWd1NXNWpiSFZ6YVhabFRXbHVBSE4xWW1keWIzVndTVzVqYkhWemFYWmxUV0Y0QUhOMVltZHliM1Z3U1c1amJIVnphWFpsUVc1a0FITjFZbWR5YjNWd1NXNWpiSFZ6YVhabFQzSUFjM1ZpWjNKdmRYQkpibU5zZFhOcGRtVlliM0lBYzNWaVozSnZkWEJGZUdOc2RYTnBkbVZCWkdRQWMzVmlaM0p2ZFhCRmVHTnNkWE5wZG1WTmRXd0FjM1ZpWjNKdmRYQkZlR05zZFhOcGRtVk5hVzRBYzNWaVozSnZkWEJGZUdOc2RYTnBkbVZOWVhnQWMzVmlaM0p2ZFhCRmVHTnNkWE5wZG1WQmJtUUFjM1ZpWjNKdmRYQkZlR05zZFhOcGRtVlBjZ0J6ZFdKbmNtOTFjRVY0WTJ4MWMybDJaVmh2Y2dCemRXSm5jbTkxY0VOc2RYTjBaWEpsWkVGa1pBQjlQZ0lBYzNWaVozSnZkWEJEYkhWemRHVnlaV1JOZFd3QWMzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSTmFXNEFjM1ZpWjNKdmRYQkRiSFZ6ZEdWeVpXUk5ZWGdBYzNWaVozSnZkWEJEYkhWemRHVnlaV1JCYm1RQWMzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSUGNnQnpkV0puY205MWNFTnNkWE4wWlhKbFpGaHZjZ0J6ZFdKbmNtOTFjRkYxWVdSQ2NtOWhaR05oYzNRQUFKNCtBZ0J6ZFdKbmNtOTFjRkYxWVdSVGQyRndTRzl5YVhwdmJuUmhiQUJ6ZFdKbmNtOTFjRkYxWVdSVGQyRndWbVZ5ZEdsallXd0FjM1ZpWjNKdmRYQlJkV0ZrVTNkaGNFUnBZV2R2Ym1Gc0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVRsWUFBQUFBdWo0Q0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkJaR1JPVmdCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1RYVnNUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkUxcGJrNVdBSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JOWVhoT1ZnQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtRVzVrVGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFOXlUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkZodmNrNVdBSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JKYm1Oc2RYTnBkbVZCWkdST1ZnQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtTVzVqYkhWemFYWmxUWFZzVGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFbHVZMngxYzJsMlpVMXBiazVXQUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSSmJtTnNkWE5wZG1WTllYaE9WZ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrU1c1amJIVnphWFpsUVc1a1RsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRWx1WTJ4MWMybDJaVTl5VGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFbHVZMngxYzJsMlpWaHZjazVXQUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSRmVHTnNkWE5wZG1WQlpHUk9WZ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrUlhoamJIVnphWFpsVFhWc1RsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRVY0WTJ4MWMybDJaVTFwYms1V0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkZlR05zZFhOcGRtVk5ZWGhPVmdCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1JYaGpiSFZ6YVhabFFXNWtUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVWNFkyeDFjMmwyWlU5eVRsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRVY0WTJ4MWMybDJaVmh2Y2s1V0FHZHNYMU5qYjNCbFJHVjJhV05sQUFEY1BnSUFaMnhmVTJOdmNHVlhiM0pyWjNKdmRYQUFaMnhmVTJOdmNHVlRkV0puY205MWNBQm5iRjlUWTI5d1pVbHVkbTlqWVhScGIyNEFaMnhmVTJWdFlXNTBhV056VW1Wc1lYaGxaQUJuYkY5VFpXMWhiblJwWTNOQlkzRjFhWEpsQUdkc1gxTmxiV0Z1ZEdsamMxSmxiR1ZoYzJVQVoyeGZVMlZ0WVc1MGFXTnpRV054ZFdseVpWSmxiR1ZoYzJVQVoyeGZVMlZ0WVc1MGFXTnpUV0ZyWlVGMllXbHNZV0pzWlFCbmJGOVRaVzFoYm5ScFkzTk5ZV3RsVm1semFXSnNaUUJuYkY5VFpXMWhiblJwWTNOV2IyeGhkR2xzWlFCbmJGOVRkRzl5WVdkbFUyVnRZVzUwYVdOelRtOXVaUUJuYkY5VGRHOXlZV2RsVTJWdFlXNTBhV056UW5WbVptVnlBR2RzWDFOMGIzSmhaMlZUWlcxaGJuUnBZM05UYUdGeVpXUUFaMnhmVTNSdmNtRm5aVk5sYldGdWRHbGpjMGx0WVdkbEFHZHNYMU4wYjNKaFoyVlRaVzFoYm5ScFkzTlBkWFJ3ZFhRQWFHVnNjR1Z5U1c1MmIyTmhkR2x2YmtWWVZBQUErajRDQUdkc1gwNTFiVmR2Y210SGNtOTFjSE1BWjJ4ZlYyOXlhMGR5YjNWd1UybDZaUUJuYkY5WGIzSnJSM0p2ZFhCSlJBQm5iRjlNYjJOaGJFbHVkbTlqWVhScGIyNUpSQUJuYkY5SGJHOWlZV3hKYm5adlkyRjBhVzl1U1VRQVoyeGZURzlqWVd4SmJuWnZZMkYwYVc5dVNXNWtaWGdBSFQ4Q0FHZHNYMDFoZUVOdmJYQjFkR1ZYYjNKclIzSnZkWEJEYjNWdWRBQm5iRjlOWVhoRGIyMXdkWFJsVjI5eWEwZHliM1Z3VTJsNlpRQm5iRjlOWVhoRGIyMXdkWFJsVlc1cFptOXliVU52YlhCdmJtVnVkSE1BWjJ4ZlRXRjRRMjl0Y0hWMFpWUmxlSFIxY21WSmJXRm5aVlZ1YVhSekFHZHNYMDFoZUVOdmJYQjFkR1ZKYldGblpWVnVhV1p2Y20xekFHZHNYMDFoZUVOdmJYQjFkR1ZCZEc5dGFXTkRiM1Z1ZEdWeWN3Qm5iRjlOWVhoRGIyMXdkWFJsUVhSdmJXbGpRMjkxYm5SbGNrSjFabVpsY25NQVltRnljbWxsY2dCdFpXMXZjbmxDWVhKeWFXVnlRWFJ2YldsalEyOTFiblJsY2dCdFpXMXZjbmxDWVhKeWFXVnlRblZtWm1WeUFHMWxiVzl5ZVVKaGNuSnBaWEpKYldGblpRQnRaVzF2Y25sQ1lYSnlhV1Z5VTJoaGNtVmtBR2R5YjNWd1RXVnRiM0o1UW1GeWNtbGxjZ0JqYjI1MGNtOXNRbUZ5Y21sbGNnQm5iRjlPZFcxVGRXSm5jbTkxY0hNQVoyeGZVM1ZpWjNKdmRYQkpSQUJ6ZFdKbmNtOTFjRTFsYlc5eWVVSmhjbkpwWlhKVGFHRnlaV1FBUjB4ZlRsWmZZMjl2Y0dWeVlYUnBkbVZmYldGMGNtbDRBRWRNWDA1V1gybHVkR1ZuWlhKZlkyOXZjR1Z5WVhScGRtVmZiV0YwY21sNEFBQUFBQUFBQU5ncEFnRHhLUUlBWTI5dmNFMWhkRXh2WVdST1ZnQmpiMjl3VFdGMFUzUnZjbVZPVmdCamIyOXdUV0YwVFhWc1FXUmtUbFlBQUFBQU16OENBR2RzWDB4aGRXNWphRWxFVGxZQUFBQlVQd0lBWjJ4ZlRHRjFibU5vVTJsNlpVNVdBR2RzWDBsdWMzUmhibU5sUTNWemRHOXRTVzVrWlhoT1ZnQm5iRjlYYjNKc1pGSmhlVTl5YVdkcGJrNVdBR2RzWDFkdmNteGtVbUY1UkdseVpXTjBhVzl1VGxZQVoyeGZUMkpxWldOMFVtRjVUM0pwWjJsdVRsWUFaMnhmVDJKcVpXTjBVbUY1UkdseVpXTjBhVzl1VGxZQVoyeGZVbUY1VkcxcGJrNVdBR2RzWDFKaGVWUnRZWGhPVmdCbmJGOUlhWFJVVGxZQVoyeGZTR2wwUzJsdVpFNVdBR2RzWDA5aWFtVmpkRlJ2VjI5eWJHUk9WZ0JuYkY5WGIzSnNaRlJ2VDJKcVpXTjBUbFlBWjJ4ZlNXNWpiMjFwYm1kU1lYbEdiR0ZuYzA1V0FHZHNYMDFsYzJoV1pYSjBhV05sYzA1V0FHWS9BZ0JuYkY5RGJHbHdSR2x6ZEdGdVkyVlFaWEpXYVdWM1RsWUFaMnhmUTNWc2JFUnBjM1JoYm1ObFVHVnlWbWxsZDA1V0FHZHNYMDFsYzJoUWNtbHRhWFJwZG1WelRsWUFaMnhmVEdGNVpYSlFaWEpXYVdWM1RsWUFaMnhmVUhKcGJXbDBhWFpsUTI5MWJuUk9WZ0JuYkY5UWNtbHRhWFJwZG1WSmJtUnBZMlZ6VGxZQVoyeGZUV1Z6YUZacFpYZERiM1Z1ZEU1V0FHZHNYMDFsYzJoV2FXVjNTVzVrYVdObGMwNVdBR2RzWDAxaGVFMWxjMmhQZFhSd2RYUldaWEowYVdObGMwNVdBR2RzWDAxaGVFMWxjMmhQZFhSd2RYUlFjbWx0YVhScGRtVnpUbFlBWjJ4ZlRXRjRUV1Z6YUZkdmNtdEhjbTkxY0ZOcGVtVk9WZ0JuYkY5TllYaE5aWE5vVm1sbGQwTnZkVzUwVGxZQVoyeGZWR0Z6YTBOdmRXNTBUbFlBWjJ4ZlRXRjRWR0Z6YTFkdmNtdEhjbTkxY0ZOcGVtVk9WZ0JrYjNWaWJHVkNhWFJ6Vkc5SmJuUTJOQUJrYjNWaWJHVkNhWFJ6Vkc5VmFXNTBOalFBYVc1ME5qUkNhWFJ6Vkc5RWIzVmliR1VBZFdsdWREWTBRbWwwYzFSdlJHOTFZbXhsQUdoaGJHWkNhWFJ6Vkc5SmJuUXhOZ0JvWVd4bVFtbDBjMVJ2VldsdWRERTJBR1pzYjJGME1UWkNhWFJ6Vkc5SmJuUXhOZ0JtYkc5aGRERTJRbWwwYzFSdlZXbHVkREUyQUdsdWRERTJRbWwwYzFSdlJteHZZWFF4TmdCMWFXNTBNVFpDYVhSelZHOUdiRzloZERFMkFHbHVkREUyUW1sMGMxUnZTR0ZzWmdCMWFXNTBNVFpDYVhSelZHOUlZV3htQUhCaFkydFRibTl5YlRSNE9BQjFibkJoWTJ0VGJtOXliVFI0T0FCd1lXTnJWVzV2Y20wMGVEZ0FkVzV3WVdOclZXNXZjbTAwZURnQWNHRmphMFJ2ZFdKc1pUSjRNeklBZFc1d1lXTnJSRzkxWW14bE1uZ3pNZ0J3WVdOclNXNTBNbmd6TWdCMWJuQmhZMnRKYm5ReWVETXlBSEJoWTJ0VmFXNTBNbmd6TWdCMWJuQmhZMnRWYVc1ME1uZ3pNZ0J3WVdOclNXNTBNbmd4TmdCMWJuQmhZMnRKYm5ReWVERTJBSEJoWTJ0VmFXNTBNbmd4TmdCMWJuQmhZMnRWYVc1ME1uZ3hOZ0J3WVdOclNXNTBOSGd4TmdCMWJuQmhZMnRKYm5RMGVERTJBSEJoWTJ0VmFXNTBOSGd4TmdCMWJuQmhZMnRWYVc1ME5IZ3hOZ0J3WVdOclJteHZZWFF5ZURFMkFIVnVjR0ZqYTBac2IyRjBNbmd4TmdCd1lXTnJNVFlBY0dGamF6TXlBSEJoWTJzMk5BQjFibkJoWTJzek1nQjFibkJoWTJzeE5nQjFibkJoWTJzNEFHRjBiMjFwWTB4dllXUUFZWFJ2YldsalUzUnZjbVVBWVhSdmJXbGpRMjkxYm5SbGNrRmtaQUJoZEc5dGFXTkRiM1Z1ZEdWeVUzVmlkSEpoWTNRQVlYUnZiV2xqUTI5MWJuUmxjazFwYmdCaGRHOXRhV05EYjNWdWRHVnlUV0Y0QUdGMGIyMXBZME52ZFc1MFpYSkJibVFBWVhSdmJXbGpRMjkxYm5SbGNrOXlBR0YwYjIxcFkwTnZkVzUwWlhKWWIzSUFZWFJ2YldsalEyOTFiblJsY2tWNFkyaGhibWRsQUdGMGIyMXBZME52ZFc1MFpYSkRiMjF3VTNkaGNBQm1jbVY0Y0FCc1pHVjRjQUIxWVdSa1EyRnljbmtBZFhOMVlrSnZjbkp2ZHdCMWJYVnNSWGgwWlc1a1pXUUFhVzExYkVWNGRHVnVaR1ZrQUdKcGRHWnBaV3hrUlhoMGNtRmpkQUJpYVhSbWFXVnNaRWx1YzJWeWRBQmlhWFJtYVdWc1pGSmxkbVZ5YzJVQVltbDBRMjkxYm5RQVptbHVaRXhUUWdCbWFXNWtUVk5DQUdsdFlXZGxVMmw2WlFCcGJXRm5aVk5oYlhCc1pYTUFhVzFoWjJWTWIyRmtBR2x0WVdkbFUzUnZjbVVBYVcxaFoyVkJkRzl0YVdOTWIyRmtBR2x0WVdkbFFYUnZiV2xqVTNSdmNtVUFjM1ZpY0dGemMweHZZV1FBYzNWaWNHRnpjMHh2WVdSTlV3QjBaWGgwZFhKbFIyRjBhR1Z5VDJabWMyVjBBRzV2YVhObE1RQnViMmx6WlRJQWJtOXBjMlV6QUc1dmFYTmxOQUJtZEhKaGJuTm1iM0p0QUhSbGVIUjFjbVV4UkFCMFpYaDBkWEpsTVVSUWNtOXFBSFJsZUhSMWNtVXlSRkpsWTNRQWRHVjRkSFZ5WlRKRVVtVmpkRkJ5YjJvQWMyaGhaRzkzTWtSU1pXTjBBSE5vWVdSdmR6SkVVbVZqZEZCeWIyb0FkR1Y0ZEhWeVpUSkVBSFJsZUhSMWNtVXlSRkJ5YjJvQWRHVjRkSFZ5WlRORUFIUmxlSFIxY21VelJGQnliMm9BZEdWNGRIVnlaVU4xWW1VQWMyaGhaRzkzTVVRQWMyaGhaRzkzTWtRQWMyaGhaRzkzTVVSUWNtOXFBSE5vWVdSdmR6SkVVSEp2YWdCemNHRnljMlZVWlhobGJITlNaWE5wWkdWdWRFRlNRZ0JoYm5sSmJuWnZZMkYwYVc5dUFHRnNiRWx1ZG05allYUnBiMjV6QUdGc2JFbHVkbTlqWVhScGIyNXpSWEYxWVd3QWMzZHBlbnBzWlVsdWRtOWpZWFJwYjI1elRXRnphMlZrUVUxRUFFVnRhWFJUZEhKbFlXMVdaWEowWlhnQVJXNWtVM1J5WldGdFVISnBiV2wwYVhabEFFVnRhWFJXWlhKMFpYZ0FSVzVrVUhKcGJXbDBhWFpsQUdKbFoybHVTVzUyYjJOaGRHbHZia2x1ZEdWeWJHOWphMEZTUWdCbGJtUkpiblp2WTJGMGFXOXVTVzUwWlhKc2IyTnJRVkpDQUhSeVlXTmxUbFlBWlhobFkzVjBaVU5oYkd4aFlteGxUbFlBY21Wd2IzSjBTVzUwWlhKelpXTjBhVzl1VGxZQWFXZHViM0psU1c1MFpYSnpaV04wYVc5dVRsWUFkR1Z5YldsdVlYUmxVbUY1VGxZQWQzSnBkR1ZRWVdOclpXUlFjbWx0YVhScGRtVkpibVJwWTJWek5IZzRUbFlBWjJ4ZlRXRjRWSEpoYm5ObWIzSnRSbVZsWkdKaFkydENkV1ptWlhKekFBQjRQd0lBWjJ4ZlRXRjRWSEpoYm5ObWIzSnRSbVZsWkdKaFkydEpiblJsY214bFlYWmxaRU52YlhCdmJtVnVkSE1BWjJ4ZlRXbHVVSEp2WjNKaGJWUmxlR1ZzVDJabWMyVjBBQUFBa0Q4Q0FHZHNYMDFoZUZCeWIyZHlZVzFVWlhobGJFOW1abk5sZEFCbmJGOU5ZWGhXYVdWM2NHOXlkSE1BWjJ4ZlJuSmhaMFJoZEdFQVFlRG1DQXVpQkVDVEFBQkZrd0FBUzVNQUFGR1RBQUJRa1FBQVZwRUFBRnVSQUFCZ2tRQUFmSklBQUlDU0FBQ0drZ0FBakpJQUFQQ1NBQUQxa2dBQSs1SUFBQUdUQUFBZ0FHOTFkQ0FBWTI5b1pYSmxiblFnZG05c1lYUnBiR1VnQUdsdWIzVjBJQUJ5WVdScFlXNXpBR1JsWjNKbFpYTUFjMmx1QUdOdmN3QjBZVzRBWVhOcGJnQmhZMjl6QUdGMFlXNEFjRzkzQUdWNGNBQnNiMmNBWlhod01nQnNiMmN5QUhOeGNuUUFhVzUyWlhKelpYTnhjblFBWVdKekFITnBaMjRBWm14dmIzSUFZMlZwYkFCbWNtRmpkQUJ0YjJRQWJXbHVBRzFoZUFCamJHRnRjQUJ0YVhnQWMzUmxjQUJ6Ylc5dmRHaHpkR1Z3QUc1dmNtMWhiR2w2WlFCbVlXTmxabTl5ZDJGeVpBQnlaV1pzWldOMEFISmxabkpoWTNRQWJHVnVaM1JvQUdScGMzUmhibU5sQUdSdmRBQmpjbTl6Y3dCc1pYTnpWR2hoYmdCc1pYTnpWR2hoYmtWeGRXRnNBR2R5WldGMFpYSlVhR0Z1QUdkeVpXRjBaWEpVYUdGdVJYRjFZV3dBWlhGMVlXd0FibTkwUlhGMVlXd0FZVzU1QUdGc2JBQnViM1FBYzJsdWFBQmpiM05vQUhSaGJtZ0FZWE5wYm1nQVlXTnZjMmdBWVhSaGJtZ0FkSEoxYm1NQWNtOTFibVFBY205MWJtUkZkbVZ1QUcxdlpHWUFhWE5wYm1ZQWFYTnVZVzRBWVhSdmJXbGpRV1JrQUdGMGIyMXBZMDFwYmdCaGRHOXRhV05OWVhnQVlYUnZiV2xqUVc1a0FHRjBiMjFwWTA5eUFHRjBiMjFwWTFodmNnQmhkRzl0YVdORmVHTm9ZVzVuWlFCaGRHOXRhV05EYjIxd1UzZGhjQUJCa09zSUN3b0lBQUFBQUFBQUFDd0JBRUdrNndnTENRY0FBQUFBQUFBQWdnQkIwT3NJQ3dvSUFBQUFBQUFBQURZQkFFSGs2d2dMQ2djQUFBQUFBQUFBcmdFQVFaRHNDQXNLQ0FBQUFBQUFBQUEyQVFCQnBPd0lDd29IQUFBQUFBQUFBTUlCQUVITTdBZ0xzaGR3WVdOclUyNXZjbTB5ZURFMkFIVnVjR0ZqYTFOdWIzSnRNbmd4TmdCd1lXTnJWVzV2Y20weWVERTJBSFZ1Y0dGamExVnViM0p0TW5neE5nQndZV05yU0dGc1pqSjRNVFlBZFc1d1lXTnJTR0ZzWmpKNE1UWUFiV0YwY21sNFEyOXRjRTExYkhRQWIzVjBaWEpRY205a2RXTjBBSFJ5WVc1emNHOXpaUUJrWlhSbGNtMXBibUZ1ZEFCcGJuWmxjbk5sQUdac2IyRjBRbWwwYzFSdlNXNTBBR1pzYjJGMFFtbDBjMVJ2VldsdWRBQnBiblJDYVhSelZHOUdiRzloZEFCMWFXNTBRbWwwYzFSdlJteHZZWFFBZEdWNGRIVnlaVk5wZW1VQWRHVjRkSFZ5WlZGMVpYSjVURzlrQUhSbGVIUjFjbVZSZFdWeWVVeGxkbVZzY3dCMFpYaDBkWEpsVTJGdGNHeGxjd0IwWlhoMGRYSmxVSEp2YWdCMFpYaDBkWEpsVEc5a0FIUmxlSFIxY21WUFptWnpaWFFBZEdWNFpXeEdaWFJqYUFCMFpYaGxiRVpsZEdOb1QyWm1jMlYwQUhSbGVIUjFjbVZRY205cVQyWm1jMlYwQUhSbGVIUjFjbVZNYjJSUFptWnpaWFFBZEdWNGRIVnlaVkJ5YjJwTWIyUUFkR1Y0ZEhWeVpWQnliMnBNYjJSUFptWnpaWFFBZEdWNGRIVnlaVWR5WVdRQWRHVjRkSFZ5WlVkeVlXUlBabVp6WlhRQWRHVjRkSFZ5WlZCeWIycEhjbUZrQUhSbGVIUjFjbVZRY205cVIzSmhaRTltWm5ObGRBQkhURjlCVWtKZmMyaGhaR1Z5WDJSeVlYZGZjR0Z5WVcxbGRHVnljd0JIVEY5QlVrSmZjMmhoWkdWeVgySmhiR3h2ZEFCSFRGOUJVa0pmYzJoaFpHVnlYMmR5YjNWd1gzWnZkR1VBUjB4ZlFVMUVYM05vWVdSbGNsOWlZV3hzYjNRQVIweGZRVTFFWDNOb1lXUmxjbDkwY21sdVlYSjVYMjFwYm0xaGVBQkhURjlCVFVSZloyTnVYM05vWVdSbGNnQkhURjlCVFVSZmMyaGhaR1Z5WDJaeVlXZHRaVzUwWDIxaGMyc0FSMHhmU1U1VVJVeGZjMmhoWkdWeVgybHVkR1ZuWlhKZlpuVnVZM1JwYjI1ek1nQkhURjlPVmw5emFHRmtaWEpmZEdWNGRIVnlaVjltYjI5MGNISnBiblFBUjB4ZlJWaFVYM05vWVdSbGNsOTBaWGgwZFhKbFgyeHZaQUJIVEY5RldGUmZaM0IxWDNOb1lXUmxjalVBUjB4ZlQwVlRYMmR3ZFY5emFHRmtaWEkxQUVkTVgwOUZVMTl6YUdGa1pYSmZhVzFoWjJWZllYUnZiV2xqQUVkTVgwOVdVbDl0ZFd4MGFYWnBaWGNBUjB4ZlQxWlNYMjExYkhScGRtbGxkeklBUjB4ZlJWaFVYM05vWVdSdmQxOXpZVzF3YkdWeWN3QkhURjlGV0ZSZmNISnBiV2wwYVhabFgySnZkVzVrYVc1blgySnZlQUJIVEY5UFJWTmZjSEpwYldsMGFYWmxYMkp2ZFc1a2FXNW5YMkp2ZUFCSFRGOUJVa0pmYzJoaFpHVnlYM1pwWlhkd2IzSjBYMnhoZVdWeVgyRnljbUY1QUVkTVgwNVdYM1pwWlhkd2IzSjBYMkZ5Y21GNU1nQkhURjlPVmw5emRHVnlaVzlmZG1sbGQxOXlaVzVrWlhKcGJtY0FSMHhmVGxaWVgyMTFiSFJwZG1sbGQxOXdaWEpmZG1sbGQxOWhkSFJ5YVdKMWRHVnpBRWRNWDBGU1FsOTJhV1YzY0c5eWRGOWhjbkpoZVFCSFRGOUZXRlJmWjJWdmJXVjBjbmxmY0c5cGJuUmZjMmw2WlFCSFRGOVBSVk5mWjJWdmJXVjBjbmxmY0c5cGJuUmZjMmw2WlFCSFRGOUZXRlJmZEdWemMyVnNiR0YwYVc5dVgzQnZhVzUwWDNOcGVtVUFSMHhmVDBWVFgzUmxjM05sYkd4aGRHbHZibDl3YjJsdWRGOXphWHBsQUVkTVgwVllWRjlrWlhacFkyVmZaM0p2ZFhBQVIweGZSVmhVWDIxMWJIUnBkbWxsZHdCSFRGOUxTRkpmYzJoaFpHVnlYM04xWW1keWIzVndYMkpoYzJsakFFZE1YMHRJVWw5emFHRmtaWEpmYzNWaVozSnZkWEJmWW1Gc2JHOTBBRWRNWDA1V1gzTm9ZV1JsY2w5emJWOWlkV2xzZEdsdWN3QkhURjlCVWtKZmMyaGhaR1Z5WDNOMFpXNWphV3hmWlhod2IzSjBBRWRNWDBGU1FsOXpZVzF3YkdWZmMyaGhaR2x1WndCSFRGOVBSVk5mYzJGdGNHeGxYM1poY21saFlteGxjd0JIVEY5UFJWTmZjM1JoYm1SaGNtUmZaR1Z5YVhaaGRHbDJaWE1BUjB4ZlQwVlRYM05vWVdSbGNsOXRkV3gwYVhOaGJYQnNaVjlwYm5SbGNuQnZiR0YwYVc5dUFFZE1YMEZTUWw5emFHRmtaWEpmZEdWNGRIVnlaVjlzYjJRQVIweGZRVkpDWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxBRWRNWDBGU1FsOXphR0ZrWlhKZllYUnZiV2xqWDJOdmRXNTBaWEp6QUVkTVgwRlNRbDlrWlhKcGRtRjBhWFpsWDJOdmJuUnliMndBUjB4ZlFWSkNYM053WVhKelpWOTBaWGgwZFhKbE1nQkhURjlCVWtKZmMzQmhjbk5sWDNSbGVIUjFjbVZmWTJ4aGJYQUFSMHhmUVUxRVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5MlpYSjBaWGhmY0dGeVlXMWxkR1Z5QUVkTVgwRk5SRjkwWlhoMGRYSmxYMmRoZEdobGNsOWlhV0Z6WDJ4dlpBQkhURjlCVFVSZmMyaGhaR1Z5WDJsdFlXZGxYMnh2WVdSZmMzUnZjbVZmYkc5a0FFZE1YMDVXWDJOdmJuTmxjblpoZEdsMlpWOXlZWE4wWlhKZmRXNWtaWEpsYzNScGJXRjBhVzl1QUVkTVgwNVdYM05vWVdScGJtZGZjbUYwWlY5cGJXRm5aUUJIVEY5T1ZsOW1jbUZuYldWdWRGOXphR0ZrWlhKZlltRnllV05sYm5SeWFXTUFSMHhmUlZoVVgyWnlZV2R0Wlc1MFgybHVkbTlqWVhScGIyNWZaR1Z1YzJsMGVRQkhURjlGV0ZSZlpuSmhaMTlrWlhCMGFBQkhURjlCVWtKZmMyaGhaR1Z5WDJOc2IyTnJBRWRNWDBWWVZGOXphR0ZrWlhKZmNtVmhiSFJwYldWZlkyeHZZMnNBUjB4ZlJWaFVYMmRsYjIxbGRISjVYM05vWVdSbGNnQkhURjlQUlZOZloyVnZiV1YwY25sZmMyaGhaR1Z5QUVkTVgwdElVbDl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZkbTkwWlFCSFRGOUxTRkpmYzJoaFpHVnlYM04xWW1keWIzVndYM05vZFdabWJHVUFSMHhmUzBoU1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5emFIVm1abXhsWDNKbGJHRjBhWFpsQUVkTVgwdElVbDl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZZWEpwZEdodFpYUnBZd0JIVEY5TFNGSmZjMmhoWkdWeVgzTjFZbWR5YjNWd1gyTnNkWE4wWlhKbFpBQkhURjlMU0ZKZmMyaGhaR1Z5WDNOMVltZHliM1Z3WDNGMVlXUUFSMHhmVGxaZmMyaGhaR1Z5WDNOMVltZHliM1Z3WDNCaGNuUnBkR2x2Ym1Wa0FFZE1YMHRJVWw5dFpXMXZjbmxmYzJOdmNHVmZjMlZ0WVc1MGFXTnpBRWRNWDBWWVZGOWtaVzF2ZEdWZmRHOWZhR1ZzY0dWeVgybHVkbTlqWVhScGIyNEFSMHhmUVZKQ1gyTnZiWEIxZEdWZmMyaGhaR1Z5QUVkTVgwNVdYMk52YlhCMWRHVmZjMmhoWkdWeVgyUmxjbWwyWVhScGRtVnpBRWRNWDA1V1gzSmhlVjkwY21GamFXNW5BRWRNWDA1V1gyMWxjMmhmYzJoaFpHVnlBRWRNWDBGU1FsOWxibWhoYm1ObFpGOXNZWGx2ZFhSekFFZE1YMEZTUWw5emFHRmthVzVuWDJ4aGJtZDFZV2RsWHpReU1IQmhZMnNBQUVkTVgwVllWRjlpZFdabVpYSmZjbVZtWlhKbGJtTmxNZ0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhNQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMlpzYjJGME1UWUFSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6WDJsdWREZ0FSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6WDJsdWRERTJBRWRNWDBWWVZGOXphR0ZrWlhKZlpYaHdiR2xqYVhSZllYSnBkR2h0WlhScFkxOTBlWEJsYzE5cGJuUXpNZ0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZmFXNTBOalFBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgyWnNiMkYwTXpJQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMlpzYjJGME5qUUFSMHhmUVUxRVgyZHdkVjl6YUdGa1pYSmZhVzUwTVRZQVIweGZRVTFFWDJkd2RWOXphR0ZrWlhKZmFHRnNabDltYkc5aGRBQm5iRjlXWlhKMFpYaEpSQUJuYkY5SmJuTjBZVzVqWlVsRUFITm9hV1owTFhOaGJYQnNaWEl0WW1sdVpHbHVad0J6YUdsbWRDMTBaWGgwZFhKbExXSnBibVJwYm1jQWMyaHBablF0YVcxaFoyVXRZbWx1WkdsdVp3QnphR2xtZEMxVlFrOHRZbWx1WkdsdVp3QnphR2xtZEMxemMySnZMV0pwYm1ScGJtY0FjMmhwWm5RdGRXRjJMV0pwYm1ScGJtY0FRWWlFQ1F2N0FSd0FBQUFkQUFBQUJnQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFEWUFBQUEzQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVFRQUFBRUlBQUFCREFBQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJoYkd4dlkyRjBiM0k4VkQ0Nk9tRnNiRzlqWVhSbEtITnBlbVZmZENCdUtTQW5iaWNnWlhoalpXVmtjeUJ0WVhocGJYVnRJSE4xY0hCdmNuUmxaQ0J6YVhwbEFFR01oZ2tMdFFFY0FBQUFIUUFBQUFZQUFBQWVBQUFBU1FBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBa0FBQUFKUUFBQUNZQUFBQW5BQUFBS0FBQUFDa0FBQUFxQUFBQVNnQUFBQ3dBQUFBdEFBQUFMZ0FBQUM4QUFBQXdBQUFBTVFBQUFESUFBQUF6QUFBQU5BQUFBRFVBQUFBMkFBQUFTd0FBQURnQUFBQTVBQUFBT2dBQUFEc0FBQUE4QUFBQVBRQUFBRDRBQUFBL0FBQUFRQUFBQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFFSE1od2tMMmdFSUFBQUFUQUFBQUUwQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQVRnQUFBQkFBQUFBUkFBQUFFZ0FBQU5NQkFBRFZBUUFBMWdFQUFOY0JBQURLQVFBQTh3RUFBUFFCQUFEMUFRQUF5d0VBQVBZQkFBRDNBUUFBK0FFQUFOSUJBQURrQVFBQTVRRUFBT1lCQUFEVUFRQUE0UUVBQU9JQkFBRGpBUUFBekFFQUFPY0JBQURvQVFBQTZRRUFBTTBCQUFEcUFRQUE2d0VBQU93QkFBRE9BUUFBN1FFQUFPNEJBQUR2QVFBQXp3RUFBUEFCQUFEeEFRQUE4Z0VBQU5BQkFBRDVBUUFBK2dFQUFQc0JBQURSQVFBQS9BRUFBUDBCQUFEK0FRQkJzSWtKQzZvRUFRQUFBQUVBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQlFBQUFCUUFBQUFIQUFBQUZBQUFBQWtBQUFBVUFBQUFDd0FBQUloQkFnQ2VRUUlBdEVFQ0FNaEJBZ0RhUVFJQTdVRUNBR0p5WVc1amFBQmtiMjUwWDJac1lYUjBaVzRBWm14aGRIUmxiZ0IxYm5KdmJHd0FiRzl2Y0FCa2IyNTBYM1Z1Y205c2JBQmtaWEJsYm1SbGJtTjVYMmx1Wm1sdWFYUmxBR1JsY0dWdVpHVnVZM2xmYkdWdVozUm9BRzFwYmw5cGRHVnlZWFJwYjI1ekFHMWhlRjlwZEdWeVlYUnBiMjV6QUdsMFpYSmhkR2x2Ymw5dGRXeDBhWEJzWlFCd1pXVnNYMk52ZFc1MEFIQmhjblJwWVd4ZlkyOTFiblFBWVhSMGNtbGlkWFJsSUhkcGRHZ2dZWEpuZFcxbGJuUnpJRzV2ZENCeVpXTnZaMjVwZW1Wa0xDQnphMmx3Y0dsdVp3QUFZWFIwY21saWRYUmxJR1J2WlhNZ2JtOTBJR0Z3Y0d4NUlIUnZJR0VnYzJWc1pXTjBhVzl1QUdGMGRISnBZblYwWlNCa2IyVnpJRzV2ZENCaGNIQnNlU0IwYnlCaElITjNhWFJqYUFCaGRIUnlhV0oxZEdVZ1pHOWxjeUJ1YjNRZ1lYQndiSGtnZEc4Z1lTQnNiMjl3QUdWNGNHVmpkR1ZrSUc1dklHRnlaM1Z0Wlc1MGN3QnRkWE4wSUdKbElIQnZjMmwwYVhabEFHVjRjR1ZqZEdWa0lHRWdjMmx1WjJ4bElHbHVkR1ZuWlhJZ1lYSm5kVzFsYm5RQVlYUjBjbWxpZFhSbElISmxjWFZwY21WeklHRWdVMUJKVWkxV0lERXVOQ0IwWVhKblpYUXRaVzUyQUcxMWMzUWdZbVVnWjNKbFlYUmxjaUIwYUdGdUlHOXlJR1Z4ZFdGc0lIUnZJREVBUWVTTkNRdHhIQUFBQUIwQUFBQlBBQUFBVUFBQUFCOEFBQUFnQUFBQUlRQUFBQ0lBQUFBakFBQUFKQUFBQUNVQUFBQW1BQUFBSndBQUFDZ0FBQUJSQUFBQVVnQUFBQ3NBQUFBc0FBQUFMUUFBQUM0QUFBQXZBQUFBTUFBQUFERUFBQUF5QUFBQU13QUFBRFFBQUFCVEFBQUFWQUFBQUZVQVFlQ09DUXR4SEFBQUFCMEFBQUJXQUFBQVVBQUFBQjhBQUFBZ0FBQUFJUUFBQUNJQUFBQWpBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBRmNBQUFBcEFBQUFVZ0FBQUNzQUFBQXNBQUFBTFFBQUFDNEFBQUF2QUFBQU1BQUFBREVBQUFBeUFBQUFNd0FBQUZnQUFBQTFBQUFBVkFBQUFGa0FRZHlQQ1F1OUFSd0FBQUFkQUFBQVdnQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQVd3QUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFYQUFBQURNQUFBQTBBQUFBTlFBQUFGMEFBQUJlQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVFRQUFBRUlBQUFCREFBQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJmQUFBQVlBQkJwSkVKQzhVQkhBQUFBQjBBQUFCaEFBQUFIZ0FBQUI4QUFBQWdBQUFBSVFBQUFDSUFBQUFqQUFBQUpBQUFBQ1VBQUFBbUFBQUFZZ0FBQUNnQUFBQXBBQUFBS2dBQUFDc0FBQUFzQUFBQUxRQUFBQzRBQUFBdkFBQUFNQUFBQURFQUFBQXlBQUFBWXdBQUFEUUFBQUExQUFBQVpBQUFBR1VBQUFBNEFBQUFPUUFBQURvQUFBQTdBQUFBUEFBQUFEMEFBQUErQUFBQVB3QUFBRUFBQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIQUFBQVNBQUFBR1lBQUFCbkFBQUFhQUFBQUdrQVFmU1NDUXU5QVJ3QUFBQWRBQUFBYWdBQUFCNEFBQUFmQUFBQWF3QUFBQ0VBQUFBaUFBQUFJd0FBQUNRQUFBQWxBQUFBSmdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFiQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQUcwQUFBQnVBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBUVFBQUFFSUFBQUJEQUFBQVJBQUFBRVVBQUFCR0FBQUFSd0FBQUVnQUFBQnZBQUFBY0FCQnZKUUpDOGtCSEFBQUFCMEFBQUJ4QUFBQUhnQUFBRWtBQUFBZ0FBQUFJUUFBQUNJQUFBQnlBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBcEFBQUFLZ0FBQUVvQUFBQXNBQUFBTFFBQUFDNEFBQUJ6QUFBQU1BQUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBTmdBQUFIUUFBQUE0QUFBQU9RQUFBRG9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFFQUFBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFFR1FsZ2tMeFFFY0FBQUFIUUFBQUhvQUFBQWVBQUFBU1FBQUFDQUFBQUFoQUFBQWV3QUFBQ01BQUFBa0FBQUFKUUFBQUNZQUFBQW5BQUFBS0FBQUFDa0FBQUFxQUFBQVNnQUFBQ3dBQUFBdEFBQUFmQUFBQUM4QUFBQXdBQUFBTVFBQUFESUFBQUF6QUFBQU5BQUFBRFVBQUFBMkFBQUFmUUFBQURnQUFBQTVBQUFBT2dBQUFEc0FBQUE4QUFBQVBRQUFBRDRBQUFBL0FBQUFRQUFBQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFBQUFmZ0FBQUg4QUFBQ0FBQUFBZ1FCQjRKY0pDOWtCSEFBQUFCMEFBQUNDQUFBQUhnQUFBRWtBQUFBZ0FBQUFnd0FBQUNJQUFBQWpBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBcEFBQUFLZ0FBQUVvQUFBQXNBQUFBaEFBQUFDNEFBQUF2QUFBQU1BQUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBaFFBQUFJWUFBQUE0QUFBQU9RQUFBRG9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFFQUFBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFJY0FBQUNJQUFBQWlRQUFBSW9BQUFDTEFBQUFqQUFBQUkwQUFBQ09BQUFBandCQnhKa0pDOEVCSEFBQUFCMEFBQUNRQUFBQUhnQUFBQjhBQUFBZ0FBQUFJUUFBQUNJQUFBQWpBQUFBa1FBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBcEFBQUFLZ0FBQUNzQUFBQXNBQUFBTFFBQUFDNEFBQUF2QUFBQWtnQUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBTmdBQUFKTUFBQUE0QUFBQU9RQUFBRG9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFFQUFBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFKUUFBQUNWQUFBQWxnQkJrSnNKQzNrY0FBQUFIUUFBQUpjQUFBQlFBQUFBSHdBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBa0FBQUFtQUFBQUNZQUFBQW5BQUFBS0FBQUFDa0FBQUJTQUFBQUt3QUFBQ3dBQUFBdEFBQUFMZ0FBQUM4QUFBQXdBQUFBbVFBQUFESUFBQUF6QUFBQU5BQUFBRFVBQUFCVUFBQUFtZ0FBQUpzQUFBQ2NBRUdVbkFrTDVqVWNBQUFBSFFBQUFBWUFBQUJRQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWtBQUFBSlFBQUFDWUFBQUFuQUFBQUtBQUFBQ2tBQUFCU0FBQUFLd0FBQUN3QUFBQXRBQUFBTGdBQUFDOEFBQUF3QUFBQU1RQUFBRElBQUFBekFBQUFOQUFBQURVQUFBQlVBQUFBblFBQUFHTnZiWEJoZEdsaWFXeHBkSGtBWTI5dWMzUUFkVzVwWm05eWJRQmlkV1ptWlhJQWFXNEFiM1YwQUhOdGIyOTBhQUJtYkdGMEFHTmxiblJ5YjJsa0FHbHVkbUZ5YVdGdWRBQndZV05yWldRQWNtVnpiM1Z5WTJVQWFXNXZkWFFBYzNSeWRXTjBBR0p5WldGckFHTnZiblJwYm5WbEFHUnZBR1p2Y2dCM2FHbHNaUUJ6ZDJsMFkyZ0FZMkZ6WlFCa1pXWmhkV3gwQUdsbUFHVnNjMlVBWkdselkyRnlaQUJ5WlhSMWNtNEFkbTlwWkFCaWIyOXNBR1pzYjJGMEFHbHVkQUJpZG1Wak1nQmlkbVZqTXdCaWRtVmpOQUIyWldNeUFIWmxZek1BZG1Wak5BQnBkbVZqTWdCcGRtVmpNd0JwZG1Wak5BQnRZWFF5QUcxaGRETUFiV0YwTkFCMGNuVmxBR1poYkhObEFHeGhlVzkxZEFCemFHRnlaV1FBYUdsbmFIQUFiV1ZrYVhWdGNBQnNiM2R3QUhOMWNHVnljQUJ3Y21WamFYTnBiMjRBYldGME1uZ3lBRzFoZERKNE13QnRZWFF5ZURRQWJXRjBNM2d5QUcxaGRETjRNd0J0WVhRemVEUUFiV0YwTkhneUFHMWhkRFI0TXdCdFlYUTBlRFFBZFdsdWRBQjFkbVZqTWdCMWRtVmpNd0IxZG1Wak5BQnViMjUxYm1sbWIzSnRSVmhVQUdSbGJXOTBaUUJoZEhSeWFXSjFkR1VBZG1GeWVXbHVad0J1YjNCbGNuTndaV04wYVhabEFHTnZhR1Z5Wlc1MEFHUmxkbWxqWldOdmFHVnlaVzUwQUhGMVpYVmxabUZ0YVd4NVkyOW9aWEpsYm5RQWQyOXlhMmR5YjNWd1kyOW9aWEpsYm5RQWMzVmlaM0p2ZFhCamIyaGxjbVZ1ZEFCdWIyNXdjbWwyWVhSbEFISmxjM1J5YVdOMEFISmxZV1J2Ym14NUFIZHlhWFJsYjI1c2VRQmhkRzl0YVdOZmRXbHVkQUIyYjJ4aGRHbHNaUUJ3WVhSamFBQnpZVzF3YkdVQWMzVmljbTkxZEdsdVpRQmtiV0YwTWdCa2JXRjBNd0JrYldGME5BQmtiV0YwTW5neUFHUnRZWFF5ZURNQVpHMWhkREo0TkFCa2JXRjBNM2d5QUdSdFlYUXplRE1BWkcxaGRETjROQUJrYldGME5IZ3lBR1J0WVhRMGVETUFaRzFoZERSNE5BQnBiV0ZuWlRGRUFHbHBiV0ZuWlRGRUFIVnBiV0ZuWlRGRUFHbHRZV2RsTWtRQWFXbHRZV2RsTWtRQWRXbHRZV2RsTWtRQWFXMWhaMlV6UkFCcGFXMWhaMlV6UkFCMWFXMWhaMlV6UkFCcGJXRm5aVEpFVW1WamRBQnBhVzFoWjJVeVJGSmxZM1FBZFdsdFlXZGxNa1JTWldOMEFHbHRZV2RsUTNWaVpRQnBhVzFoWjJWRGRXSmxBSFZwYldGblpVTjFZbVVBYVcxaFoyVkNkV1ptWlhJQWFXbHRZV2RsUW5WbVptVnlBSFZwYldGblpVSjFabVpsY2dCcGJXRm5aVEZFUVhKeVlYa0FhV2x0WVdkbE1VUkJjbkpoZVFCMWFXMWhaMlV4UkVGeWNtRjVBR2x0WVdkbE1rUkJjbkpoZVFCcGFXMWhaMlV5UkVGeWNtRjVBSFZwYldGblpUSkVRWEp5WVhrQWFXMWhaMlZEZFdKbFFYSnlZWGtBYVdsdFlXZGxRM1ZpWlVGeWNtRjVBSFZwYldGblpVTjFZbVZCY25KaGVRQnBiV0ZuWlRKRVRWTUFhV2x0WVdkbE1rUk5Vd0IxYVcxaFoyVXlSRTFUQUdsdFlXZGxNa1JOVTBGeWNtRjVBR2xwYldGblpUSkVUVk5CY25KaGVRQjFhVzFoWjJVeVJFMVRRWEp5WVhrQVpHOTFZbXhsQUdSMlpXTXlBR1IyWldNekFHUjJaV00wQUdsdWREWTBYM1FBZFdsdWREWTBYM1FBYVRZMGRtVmpNZ0JwTmpSMlpXTXpBR2syTkhabFl6UUFkVFkwZG1Wak1nQjFOalIyWldNekFIVTJOSFpsWXpRQWFXNTBPRjkwQUdrNGRtVmpNZ0JwT0habFl6TUFhVGgyWldNMEFIVnBiblE0WDNRQWRUaDJaV015QUhVNGRtVmpNd0IxT0habFl6UUFhVzUwTVRaZmRBQnBNVFoyWldNeUFHa3hOblpsWXpNQWFURTJkbVZqTkFCMWFXNTBNVFpmZEFCMU1UWjJaV015QUhVeE5uWmxZek1BZFRFMmRtVmpOQUJwYm5Rek1sOTBBR2t6TW5abFl6SUFhVE15ZG1Wak13QnBNekoyWldNMEFIVnBiblF6TWw5MEFIVXpNblpsWXpJQWRUTXlkbVZqTXdCMU16SjJaV00wQUdac2IyRjBNVFpmZEFCbU1UWjJaV015QUdZeE5uWmxZek1BWmpFMmRtVmpOQUJtTVRadFlYUXlBR1l4Tm0xaGRETUFaakUyYldGME5BQm1NVFp0WVhReWVESUFaakUyYldGME1uZ3pBR1l4Tm0xaGRESjROQUJtTVRadFlYUXplRElBWmpFMmJXRjBNM2d6QUdZeE5tMWhkRE40TkFCbU1UWnRZWFEwZURJQVpqRTJiV0YwTkhnekFHWXhObTFoZERSNE5BQm1iRzloZERNeVgzUUFaak15ZG1Wak1nQm1NekoyWldNekFHWXpNblpsWXpRQVpqTXliV0YwTWdCbU16SnRZWFF6QUdZek1tMWhkRFFBWmpNeWJXRjBNbmd5QUdZek1tMWhkREo0TXdCbU16SnRZWFF5ZURRQVpqTXliV0YwTTNneUFHWXpNbTFoZERONE13Qm1Nekp0WVhRemVEUUFaak15YldGME5IZ3lBR1l6TW0xaGREUjRNd0JtTXpKdFlYUTBlRFFBWm14dllYUTJORjkwQUdZMk5IWmxZeklBWmpZMGRtVmpNd0JtTmpSMlpXTTBBR1kyTkcxaGRESUFaalkwYldGME13Qm1OalJ0WVhRMEFHWTJORzFoZERKNE1nQm1OalJ0WVhReWVETUFaalkwYldGME1uZzBBR1kyTkcxaGRETjRNZ0JtTmpSdFlYUXplRE1BWmpZMGJXRjBNM2cwQUdZMk5HMWhkRFI0TWdCbU5qUnRZWFEwZURNQVpqWTBiV0YwTkhnMEFITmhiWEJzWlhJeVJBQnpZVzF3YkdWeVEzVmlaUUJ6WVcxd2JHVnlRM1ZpWlZOb1lXUnZkd0J6WVcxd2JHVnlNa1JCY25KaGVRQnpZVzF3YkdWeU1rUkJjbkpoZVZOb1lXUnZkd0JwYzJGdGNHeGxjakpFQUdsellXMXdiR1Z5TTBRQWFYTmhiWEJzWlhKRGRXSmxBR2x6WVcxd2JHVnlNa1JCY25KaGVRQjFjMkZ0Y0d4bGNqSkVBSFZ6WVcxd2JHVnlNMFFBZFhOaGJYQnNaWEpEZFdKbEFIVnpZVzF3YkdWeU1rUkJjbkpoZVFCellXMXdiR1Z5TTBRQWMyRnRjR3hsY2pKRVUyaGhaRzkzQUhSbGVIUjFjbVV5UkFCMFpYaDBkWEpsUTNWaVpRQjBaWGgwZFhKbE1rUkJjbkpoZVFCcGRHVjRkSFZ5WlRKRUFHbDBaWGgwZFhKbE0wUUFhWFJsZUhSMWNtVkRkV0psQUdsMFpYaDBkWEpsTWtSQmNuSmhlUUIxZEdWNGRIVnlaVEpFQUhWMFpYaDBkWEpsTTBRQWRYUmxlSFIxY21WRGRXSmxBSFYwWlhoMGRYSmxNa1JCY25KaGVRQjBaWGgwZFhKbE0wUUFjMkZ0Y0d4bGNnQnpZVzF3YkdWeVUyaGhaRzkzQUhSbGVIUjFjbVZEZFdKbFFYSnlZWGtBYVhSbGVIUjFjbVZEZFdKbFFYSnlZWGtBZFhSbGVIUjFjbVZEZFdKbFFYSnlZWGtBYzJGdGNHeGxja04xWW1WQmNuSmhlUUJ6WVcxd2JHVnlRM1ZpWlVGeWNtRjVVMmhoWkc5M0FHbHpZVzF3YkdWeVEzVmlaVUZ5Y21GNUFIVnpZVzF3YkdWeVEzVmlaVUZ5Y21GNUFITmhiWEJzWlhJeFJFRnljbUY1VTJoaFpHOTNBR2x6WVcxd2JHVnlNVVJCY25KaGVRQjFjMkZ0Y0d4bGNqRkVBR2x6WVcxd2JHVnlNVVFBZFhOaGJYQnNaWEl4UkVGeWNtRjVBSE5oYlhCc1pYSkNkV1ptWlhJQWFYTmhiWEJzWlhJeVJGSmxZM1FBZFhOaGJYQnNaWEl5UkZKbFkzUUFhWE5oYlhCc1pYSkNkV1ptWlhJQWRYTmhiWEJzWlhKQ2RXWm1aWElBYzJGdGNHeGxjakpFVFZNQWFYTmhiWEJzWlhJeVJFMVRBSFZ6WVcxd2JHVnlNa1JOVXdCellXMXdiR1Z5TWtSTlUwRnljbUY1QUdsellXMXdiR1Z5TWtSTlUwRnljbUY1QUhWellXMXdiR1Z5TWtSTlUwRnljbUY1QUhOaGJYQnNaWEl4UkFCellXMXdiR1Z5TVVSVGFHRmtiM2NBYzJGdGNHeGxjakpFVW1WamRBQnpZVzF3YkdWeU1rUlNaV04wVTJoaFpHOTNBSE5oYlhCc1pYSXhSRUZ5Y21GNUFITmhiWEJzWlhKRmVIUmxjbTVoYkU5RlV3QmZYM05oYlhCc1pYSkZlSFJsY201aGJESkVXVEpaUlZoVUFHbDBaWGgwZFhKbE1VUkJjbkpoZVFCMWRHVjRkSFZ5WlRGRUFHbDBaWGgwZFhKbE1VUUFkWFJsZUhSMWNtVXhSRUZ5Y21GNUFIUmxlSFIxY21WQ2RXWm1aWElBYVhSbGVIUjFjbVV5UkZKbFkzUUFkWFJsZUhSMWNtVXlSRkpsWTNRQWFYUmxlSFIxY21WQ2RXWm1aWElBZFhSbGVIUjFjbVZDZFdabVpYSUFkR1Y0ZEhWeVpUSkVUVk1BYVhSbGVIUjFjbVV5UkUxVEFIVjBaWGgwZFhKbE1rUk5Vd0IwWlhoMGRYSmxNa1JOVTBGeWNtRjVBR2wwWlhoMGRYSmxNa1JOVTBGeWNtRjVBSFYwWlhoMGRYSmxNa1JOVTBGeWNtRjVBSFJsZUhSMWNtVXhSQUIwWlhoMGRYSmxNa1JTWldOMEFIUmxlSFIxY21VeFJFRnljbUY1QUhOMVluQmhjM05KYm5CMWRBQnpkV0p3WVhOelNXNXdkWFJOVXdCcGMzVmljR0Z6YzBsdWNIVjBBR2x6ZFdKd1lYTnpTVzV3ZFhSTlV3QjFjM1ZpY0dGemMwbHVjSFYwQUhWemRXSndZWE56U1c1d2RYUk5Vd0JtTVRaellXMXdiR1Z5TVVRQVpqRTJjMkZ0Y0d4bGNqSkVBR1l4Tm5OaGJYQnNaWEl6UkFCbU1UWnpZVzF3YkdWeU1rUlNaV04wQUdZeE5uTmhiWEJzWlhKRGRXSmxBR1l4Tm5OaGJYQnNaWEl4UkVGeWNtRjVBR1l4Tm5OaGJYQnNaWEl5UkVGeWNtRjVBR1l4Tm5OaGJYQnNaWEpEZFdKbFFYSnlZWGtBWmpFMmMyRnRjR3hsY2tKMVptWmxjZ0JtTVRaellXMXdiR1Z5TWtSTlV3Qm1NVFp6WVcxd2JHVnlNa1JOVTBGeWNtRjVBR1l4Tm5OaGJYQnNaWEl4UkZOb1lXUnZkd0JtTVRaellXMXdiR1Z5TWtSVGFHRmtiM2NBWmpFMmMyRnRjR3hsY2pKRVVtVmpkRk5vWVdSdmR3Qm1NVFp6WVcxd2JHVnlRM1ZpWlZOb1lXUnZkd0JtTVRaellXMXdiR1Z5TVVSQmNuSmhlVk5vWVdSdmR3Qm1NVFp6WVcxd2JHVnlNa1JCY25KaGVWTm9ZV1J2ZHdCbU1UWnpZVzF3YkdWeVEzVmlaVUZ5Y21GNVUyaGhaRzkzQUdZeE5tbHRZV2RsTVVRQVpqRTJhVzFoWjJVeVJBQm1NVFpwYldGblpUTkVBR1l4Tm1sdFlXZGxNa1JTWldOMEFHWXhObWx0WVdkbFEzVmlaUUJtTVRacGJXRm5aVEZFUVhKeVlYa0FaakUyYVcxaFoyVXlSRUZ5Y21GNUFHWXhObWx0WVdkbFEzVmlaVUZ5Y21GNUFHWXhObWx0WVdkbFFuVm1abVZ5QUdZeE5tbHRZV2RsTWtSTlV3Qm1NVFpwYldGblpUSkVUVk5CY25KaGVRQm1NVFowWlhoMGRYSmxNVVFBWmpFMmRHVjRkSFZ5WlRKRUFHWXhOblJsZUhSMWNtVXpSQUJtTVRaMFpYaDBkWEpsTWtSU1pXTjBBR1l4Tm5SbGVIUjFjbVZEZFdKbEFHWXhOblJsZUhSMWNtVXhSRUZ5Y21GNUFHWXhOblJsZUhSMWNtVXlSRUZ5Y21GNUFHWXhOblJsZUhSMWNtVkRkV0psUVhKeVlYa0FaakUyZEdWNGRIVnlaVUoxWm1abGNnQm1NVFowWlhoMGRYSmxNa1JOVXdCbU1UWjBaWGgwZFhKbE1rUk5VMEZ5Y21GNUFHWXhObk4xWW5CaGMzTkpibkIxZEFCbU1UWnpkV0p3WVhOelNXNXdkWFJOVXdCZlgyVjRjR3hwWTJsMFNXNTBaWEp3UVUxRUFIQmxjblpsY25SbGVFNVdBSEJ5WldOcGMyVUFjbUY1VUdGNWJHOWhaRTVXQUhKaGVWQmhlV3h2WVdSSmJrNVdBR2hwZEVGMGRISnBZblYwWlU1V0FHTmhiR3hoWW14bFJHRjBZVTVXQUdOaGJHeGhZbXhsUkdGMFlVbHVUbFlBWVdOalpXeGxjbUYwYVc5dVUzUnlkV04wZFhKbFRsWUFjR1Z5Y0hKcGJXbDBhWFpsVGxZQWNHVnlkbWxsZDA1V0FIUmhjMnRPVmdCbVkyOXZjRzFoZEU1V0FHbGpiMjl3YldGMFRsWUFkV052YjNCdFlYUk9WZ0JqYjIxdGIyNEFjR0Z5ZEdsMGFXOXVBR0ZqZEdsMlpRQmhjMjBBWTJ4aGMzTUFkVzVwYjI0QVpXNTFiUUIwZVhCbFpHVm1BSFJsYlhCc1lYUmxBSFJvYVhNQVoyOTBid0JwYm14cGJtVUFibTlwYm14cGJtVUFjSFZpYkdsakFITjBZWFJwWXdCbGVIUmxjbTRBWlhoMFpYSnVZV3dBYVc1MFpYSm1ZV05sQUd4dmJtY0FjMmh2Y25RQWFHRnNaZ0JtYVhobFpBQjFibk5wWjI1bFpBQnBibkIxZEFCdmRYUndkWFFBYUhabFl6SUFhSFpsWXpNQWFIWmxZelFBWm5abFl6SUFablpsWXpNQVpuWmxZelFBYzJGdGNHeGxjak5FVW1WamRBQm1hV3gwWlhJQWMybDZaVzltQUdOaGMzUUFibUZ0WlhOd1lXTmxBSFZ6YVc1bkFHbHNiR1ZuWVd3Z2RYTmxJRzltSUdWelkyRndaU0JqYUdGeVlXTjBaWElBWEFBQWJtOTBJSE4xY0hCdmNuUmxaQUE2T2dCMWJtVjRjR1ZqZEdWa0lIUnZhMlZ1QUVkTVgwNVdYM05vWVdSbGNsOXViM0JsY25Od1pXTjBhWFpsWDJsdWRHVnljRzlzWVhScGIyNEFSMHhmUlZoVVgyNXZiblZ1YVdadmNtMWZjWFZoYkdsbWFXVnlBRWRNWDA1V1gzSmhlVjkwY21GamFXNW5BRWRNWDBGU1FsOXphR0ZrWlhKZllYUnZiV2xqWDJOdmRXNTBaWEp6QUVkTVgwRlNRbDl6YUdGa1pYSmZhVzFoWjJWZmJHOWhaRjl6ZEc5eVpRQVhaUUlBTW1VQ0FFZE1YMEZTUWw5MFpYTnpaV3hzWVhScGIyNWZjMmhoWkdWeUFBQk5aUUlBUjB4ZlFWSkNYM05vWVdScGJtZGZiR0Z1WjNWaFoyVmZOREl3Y0dGamF3QkhURjlCVWtKZlpYaHdiR2xqYVhSZllYUjBjbWxpWDJ4dlkyRjBhVzl1QUFBQUFBRDBYd0lBRkdBQ0FIVmxBZ0NMWlFJQW9XVUNBTDlsQWdCSFRGOUJVa0pmWjNCMVgzTm9ZV1JsY2w5bWNEWTBBRWRNWDBGU1FsOW5jSFZmYzJoaFpHVnlYMmx1ZERZMEFFZE1YMFZZVkY5emFHRmtaWEpmWlhod2JHbGphWFJmWVhKcGRHaHRaWFJwWTE5MGVYQmxjd0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZmFXNTBOalFBUjB4ZlJWaFVYM05vWVdSbGNsODRZbWwwWDNOMGIzSmhaMlVBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgybHVkRGdBUjB4ZlFVMUVYMmR3ZFY5emFHRmtaWEpmYVc1ME1UWUFSMHhmUlZoVVgzTm9ZV1JsY2w4eE5tSnBkRjl6ZEc5eVlXZGxBRWRNWDBWWVZGOXphR0ZrWlhKZlpYaHdiR2xqYVhSZllYSnBkR2h0WlhScFkxOTBlWEJsYzE5cGJuUXhOZ0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZmFXNTBNeklBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgyWnNiMkYwTXpJQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMlpzYjJGME5qUUFSMHhmUVUxRVgyZHdkVjl6YUdGa1pYSmZhR0ZzWmw5bWJHOWhkQUJIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZlpteHZZWFF4TmdCSFRGOUJVa0pmZEdWNGRIVnlaVjlqZFdKbFgyMWhjRjloY25KaGVRQkhURjlQUlZOZmRHVjRkSFZ5WlY4elJBQkhURjlGV0ZSZmMyaGhaRzkzWDNOaGJYQnNaWEp6QUFBQUFOMWxBZ0Q0WlFJQVIweGZRVkpDWDNSbGVIUjFjbVZmY21WamRHRnVaMnhsQUFBQUFLeGlBZ0IwWlhoMGRYSmxMWEpsWTNSaGJtZHNaU0J6WVcxd2JHVnlJR3RsZVhkdmNtUUFSMHhmVDBWVFgwVkhURjlwYldGblpWOWxlSFJsY201aGJBQkhURjlQUlZOZlJVZE1YMmx0WVdkbFgyVjRkR1Z5Ym1Gc1gyVnpjMnd6QUVkTVgwVllWRjlaVlZaZmRHRnlaMlYwQUVkTVgwRk5SRjluY0hWZmMyaGhaR1Z5WDJoaGJHWmZabXh2WVhSZlptVjBZMmdBUjB4ZlFVMUVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOTJaWEowWlhoZmNHRnlZVzFsZEdWeUFFZE1YMDVXWDJaeVlXZHRaVzUwWDNOb1lXUmxjbDlpWVhKNVkyVnVkSEpwWXdBQUpHWUNBRGRtQWdCSFRGOU9WbDl0WlhOb1gzTm9ZV1JsY2dCSFRGOU9WbDlqYjI5d1pYSmhkR2wyWlY5dFlYUnlhWGdBUjB4ZlRsWmZhVzUwWldkbGNsOWpiMjl3WlhKaGRHbDJaVjl0WVhSeWFYZ0FSMHhmUlZoVVgyUmxiVzkwWlY5MGIxOW9aV3h3WlhKZmFXNTJiMk5oZEdsdmJnQlZibXR1YjNkdUlHZHNjMnhoYm1jZ2EyVjVkMjl5WkFCU1pYTmxjblpsWkNCM2IzSmtMZ0IxYzJsdVp5Qm1kWFIxY21VZ2NtVnpaWEoyWldRZ2EyVjVkMjl5WkFCbWRYUjFjbVVnY21WelpYSjJaV1FnZDI5eVpDQnBiaUJGVXlBek1EQWdZVzVrSUd0bGVYZHZjbVFnYVc0Z1IweFRUQUIxYzJsdVp5Qm1kWFIxY21VZ2EyVjVkMjl5WkFCMWMybHVaeUJGVXlCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeUlHdGxlWGR2Y21RQWRYTnBibWNnWm5WMGRYSmxJRzV2YmkxemNYVmhjbVVnYldGMGNtbDRJSFI1Y0dVZ2EyVjVkMjl5WkFCMWMybHVaeUJtZFhSMWNtVWdkSGx3WlNCclpYbDNiM0prQUVkTVgwVllWRjkwWlhOelpXeHNZWFJwYjI1ZmMyaGhaR1Z5QUVkTVgwOUZVMTkwWlhOelpXeHNZWFJwYjI1ZmMyaGhaR1Z5QUVkTVgwOUZVMTl6YUdGa1pYSmZiWFZzZEdsellXMXdiR1ZmYVc1MFpYSndiMnhoZEdsdmJnQkhURjlGV0ZSZmRHVjRkSFZ5WlY5aWRXWm1aWElBUjB4ZlQwVlRYM1JsZUhSMWNtVmZZblZtWm1WeUFFZE1YMFZZVkY5MFpYaDBkWEpsWDJOMVltVmZiV0Z3WDJGeWNtRjVBRWRNWDA5RlUxOTBaWGgwZFhKbFgyTjFZbVZmYldGd1gyRnljbUY1QUVkTVgwRlNRbDkwWlhoMGRYSmxYMjExYkhScGMyRnRjR3hsQUVkTVgwOUZVMTkwWlhoMGRYSmxYM04wYjNKaFoyVmZiWFZzZEdsellXMXdiR1ZmTW1SZllYSnlZWGtBUjB4ZlJWaFVYMmR3ZFY5emFHRmtaWEkxQUVkTVgwOUZVMTluY0hWZmMyaGhaR1Z5TlFBS0FEb2xaQUE2SUFBaUFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBQUNjQUp5QTZJQUFnQUFvQUlHd3RkbUZzZFdVZ2NtVnhkV2x5WldRQUFHTmhiaWQwSUcxdlpHbG1lU0JoSUdOdmJuTjBBR05oYmlkMElHMXZaR2xtZVNCaElIVnVhV1p2Y20wQVkyRnVKM1FnYlc5a2FXWjVJR0VnY21WaFpHOXViSGtnWW5WbVptVnlBR05oYmlkMElHMXZaR2xtZVNCaElITm9ZV1JsY25KbFkyOXlaRzUySUhGMVlXeHBabWxsWkNCaWRXWm1aWElBWTJGdWJtOTBJRzF2WkdsbWVTQm9hWFJCZEhSeWFXSjFkR1ZPVmlCcGJpQjBhR2x6SUhOMFlXZGxBR05oYmlkMElHMXZaR2xtZVNCaElITmhiWEJzWlhJQVkyRnVKM1FnYlc5a2FXWjVJSFp2YVdRQVkyRnVKM1FnYlc5a2FXWjVJR0Z1SUdGMGIyMXBZMTkxYVc1MEFHTmhiaWQwSUcxdlpHbG1lU0JoWTJObGJHVnlZWFJwYjI1VGRISjFZM1IxY21WT1ZnQWlKWE1pSUNnbGN5a0FLQ1Z6S1FCallXNG5kQ0J5WldGa0lHWnliMjBnZDNKcGRHVnZibXg1SUc5aWFtVmpkRG9nQUZzQWFXNWtaWGdnYjNWMElHOW1JSEpoYm1kbElDY2xaQ2NBWVhKeVlYa2dhVzVrWlhnZ2IzVjBJRzltSUhKaGJtZGxJQ2NsWkNjQWRtVmpkRzl5SUdsdVpHVjRJRzkxZENCdlppQnlZVzVuWlNBbkpXUW5BRzFoZEhKcGVDQnBibVJsZUNCdmRYUWdiMllnY21GdVoyVWdKeVZrSndCMlpXTjBiM0lnYzNkcGVucHNaU0IwYjI4Z2JHOXVad0FBQkFBQUFIVnVhMjV2ZDI0Z2MzZHBlbnBzWlNCelpXeGxZM1JwYjI0QWRtVmpkRzl5SUhOM2FYcDZiR1VnYzJWc1pXTjBhVzl1SUc5MWRDQnZaaUJ5WVc1blpRQjJaV04wYjNJZ2MzZHBlbnBzWlNCelpXeGxZM1J2Y25NZ2JtOTBJR1p5YjIwZ2RHaGxJSE5oYldVZ2MyVjBBRUdFMGdrTGxRS2VBQUFBbndBQUFLQUFBQUNoQUFBQW9nQUFBS01BQUFDa0FBQUFwUUFBQUtZQUFBQ25BQUFBcUFBQUFLa0FBQUNxQUFBQXF3QUFBS3dBQUFDdEFBQUFyZ0FBQUs4QUFBQ3dBQUFBc1FBQUFMSUFBQUN6QUFBQXRBQUFBTFVBQUFDMkFBQUF0d0FBQUxnQUFBQzVBQUFBdWdBQUFMc0FBQUM4QUFBQXZRQUFBTDRBQUFDL0FBQUF3QUFBQU1FQUFBRENBQUFBd3dBQUFNUUFBQURGQUFBQXhnQUFBTWNBQUFESUFBQUF5UUFBQUFZQUFBREtBQUFBeXdBQUFNd0FBQUROQUFBQXpnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBendBQUFOQUFBQURSQUFBQTBnQUFBTk1BQUFEVUFBQUExUUFBQU5ZQUFBRFhBQUFBMkFBQUFOa0FBQURhQUFBQTJ3QUFBTndBQUFEZEFFR2sxQWtMbkRQbEFBQUE1Z0FBQUtBQUFBQ2hBQUFBb2dBQUFLTUFBQUNrQUFBQXBRQUFBS1lBQUFDbkFBQUFxQUFBQUtrQUFBQ3FBQUFBcXdBQUFLd0FBQUN0QUFBQXJnQUFBSzhBQUFDd0FBQUFzUUFBQUxJQUFBQ3pBQUFBdEFBQUFMVUFBQUMyQUFBQXR3QUFBTGdBQUFDNUFBQUF1Z0FBQUxzQUFBQzhBQUFBdlFBQUFMNEFBQUMvQUFBQXdBQUFBTUVBQUFEQ0FBQUF3d0FBQU1RQUFBREZBQUFBeGdBQUFNY0FBQURJQUFBQXlRQUFBT2NBQUFES0FBQUF5d0FBQU13QUFBRE5BQUFBemdBQUFPZ0FBQURwQUFBQTZnQUFBT3NBQUFEc0FBQUF6d0FBQU5BQUFBRFJBQUFBMGdBQUFPMEFBQUR1QUFBQTFRQUFBTllBQUFEWEFBQUEyQUFBQU5rQUFBRGFBQUFBN3dBQUFOd0FBQUR3QUFBQWJXRnBiZ0JUYjNWeVkyVWdaVzUwY25rZ2NHOXBiblFnYlhWemRDQmlaU0FpYldGcGJpSUFBR052YlhCcGJHRjBhVzl1SUhSbGNtMXBibUYwWldRQWIzQjBhVzFwZW1VQWIzQjBhVzFwZW1VZ2NISmhaMjFoSUhONWJuUmhlQ0JwY3lCcGJtTnZjbkpsWTNRQUkzQnlZV2R0WVFBb0FDSW9JaUJsZUhCbFkzUmxaQ0JoWm5SbGNpQW5iM0IwYVcxcGVtVW5JR3RsZVhkdmNtUUFiMjRBYjJabUFDSnZiaUlnYjNJZ0ltOW1aaUlnWlhod1pXTjBaV1FnWVdaMFpYSWdKeWduSUdadmNpQW5iM0IwYVcxcGVtVW5JSEJ5WVdkdFlRQXBBQ0lwSWlCbGVIQmxZM1JsWkNCMGJ5QmxibVFnSjI5d2RHbHRhWHBsSnlCd2NtRm5iV0VBWkdWaWRXY0FaR1ZpZFdjZ2NISmhaMjFoSUhONWJuUmhlQ0JwY3lCcGJtTnZjbkpsWTNRQUlpZ2lJR1Y0Y0dWamRHVmtJR0ZtZEdWeUlDZGtaV0oxWnljZ2EyVjVkMjl5WkFBaWIyNGlJRzl5SUNKdlptWWlJR1Y0Y0dWamRHVmtJR0ZtZEdWeUlDY29KeUJtYjNJZ0oyUmxZblZuSnlCd2NtRm5iV0VBSWlraUlHVjRjR1ZqZEdWa0lIUnZJR1Z1WkNBblpHVmlkV2NuSUhCeVlXZHRZUUIxYzJWZmMzUnZjbUZuWlY5aWRXWm1aWElBWlhoMGNtRWdkRzlyWlc1ekFIVnpaVjkyZFd4cllXNWZiV1Z0YjNKNVgyMXZaR1ZzQUhWelpWOTJZWEpwWVdKc1pWOXdiMmx1ZEdWeWN3QnlaWEYxYVhKbGN5QlRVRWxTTFZZZ01TNHpBQ053Y21GbmJXRWdkWE5sWDNaaGNtbGhZbXhsWDNCdmFXNTBaWEp6QUc5dVkyVUFibTkwSUdsdGNHeGxiV1Z1ZEdWa0FDTndjbUZuYldFZ2IyNWpaUUJuYkhOc1lXNW5YMkpwYm1GeWVWOWtiM1ZpYkdWZmIzVjBjSFYwQUcxbGJXSmxjaUJ2WmlCdVlXMWxiR1Z6Y3lCaWJHOWpheUIzWVhNZ2JtOTBJSEpsWkdWamJHRnlaV1FBWTJGdWJtOTBJR0psSUhWelpXUWdLRzFoZVdKbElHRnVJR2x1YzNSaGJtTmxJRzVoYldVZ2FYTWdibVZsWkdWa0tRQjJZWEpwWVdKc1pTQnVZVzFsSUdWNGNHVmpkR1ZrQUNCc1pXWjBJRzltSUNkYkp5QnBjeUJ1YjNRZ2IyWWdkSGx3WlNCaGNuSmhlU3dnYldGMGNtbDRMQ0J2Y2lCMlpXTjBiM0lnQUdWNGNISmxjM05wYjI0QVd3QmtiMlZ6SUc1dmRDQnZjR1Z5WVhSbElHOXVJSFI1Y0dWeklHTnZiblJoYVc1cGJtY2dabXh2WVhReE5nQmtiMlZ6SUc1dmRDQnZjR1Z5WVhSbElHOXVJSFI1Y0dWeklHTnZiblJoYVc1cGJtY2dLSFVwYVc1ME1UWUFaRzlsY3lCdWIzUWdiM0JsY21GMFpTQnZiaUIwZVhCbGN5QmpiMjUwWVdsdWFXNW5JQ2gxS1dsdWREZ0FBQUExM1FJQVluVm1abVZ5SUhKbFptVnlaVzVqWlNCcGJtUmxlR2x1WndCaGNuSmhlU0J0ZFhOMElHSmxJSE5wZW1Wa0lHSjVJR0VnY21Wa1pXTnNZWEpoZEdsdmJpQnZjaUJzWVhsdmRYUWdjWFZoYkdsbWFXVnlJR0psWm05eVpTQmlaV2x1WnlCcGJtUmxlR1ZrSUhkcGRHZ2dZU0IyWVhKcFlXSnNaUUIyWVhKcFlXSnNaU0JwYm1SbGVHbHVaeUJpZFdabVpYSWdZbXh2WTJzZ1lYSnlZWGtBQUU3ZEFnQmgzUUlBZG1GeWFXRmliR1VnYVc1a1pYaHBibWNnZFc1cFptOXliU0JpYkc5amF5QmhjbkpoZVFCMllYSnBZV0pzWlNCcGJtUmxlR2x1WnlCbWNtRm5iV1Z1ZENCemFHRmtaWElnYjNWMGNIVjBJR0Z5Y21GNUFIWmhjbWxoWW14bElHbHVaR1Y0YVc1bklITmhiWEJzWlhJZ1lYSnlZWGtBZEdWemMyVnNiR0YwYVc5dUlHbHVjSFYwSUdGeWNtRjVJSE5wZW1VZ2JYVnpkQ0JpWlNCbmJGOU5ZWGhRWVhSamFGWmxjblJwWTJWeklHOXlJR2x0Y0d4cFkybDBiSGtnYzJsNlpXUUFXMTBBZEhsd1pTQnRkWE4wSUdKbElHRnVJR0Z5Y21GNU9nQjFibXR1YjNkdUFIWmxjblJwWTJWekFHMWhlRjl3Y21sdGFYUnBkbVZ6S2dCdFlYaGZjSEpwYldsMGFYWmxjd0J0WVhoZmRtVnlkR2xqWlhNQWFXNWpiMjV6YVhOMFpXNTBJR2x1Y0hWMElIQnlhVzFwZEdsMlpTQm1iM0lnWVhKeVlYa2djMmw2WlNCdlpnQnBibU52Ym5OcGMzUmxiblFnYjNWMGNIVjBJRzUxYldKbGNpQnZaaUIyWlhKMGFXTmxjeUJtYjNJZ1lYSnlZWGtnYzJsNlpTQnZaZ0FnWTJGdWJtOTBJR0psSUdkeVpXRjBaWElnZEdoaGJpQXpJR1p2Y2lCd1pYSjJaWEowWlhoT1ZnQnBibU52Ym5OcGMzUmxiblFnYjNWMGNIVjBJR0Z5Y21GNUlITnBlbVVnYjJZQWJHVnVaM1JvQUVkTVh6TkVURjloY25KaGVWOXZZbXBsWTNSekFDNXNaVzVuZEdnQUxteGxibWQwYUNncElHOXVJSFpsWTNSdmNuTWdZVzVrSUcxaGRISnBZMlZ6QUVkTVgwRlNRbDl6YUdGa2FXNW5YMnhoYm1kMVlXZGxYelF5TUhCaFkyc0FaRzlsY3lCdWIzUWdiM0JsY21GMFpTQnZiaUIwYUdseklIUjVjR1U2QUdOaGJtNXZkQ0JoY0hCc2VTQjBieUJoYmlCaGNuSmhlVG9BTGdCallXNXViM1FnWVhCd2JIa2dkRzhnWVNCamIyOXdaWEpoZEdsMlpTQnRZWFJ5YVhnZ2RIbHdaVG9BYzJOaGJHRnlJSE4zYVhwNmJHVUFZMkZ1SjNRZ2MzZHBlbnBzWlNCMGVYQmxjeUJqYjI1MFlXbHVhVzVuSUdac2IyRjBNVFlBWTJGdUozUWdjM2RwZW5wc1pTQjBlWEJsY3lCamIyNTBZV2x1YVc1bklDaDFLV2x1ZERFMkFHTmhiaWQwSUhOM2FYcDZiR1VnZEhsd1pYTWdZMjl1ZEdGcGJtbHVaeUFvZFNscGJuUTRBRzV2SUhOMVkyZ2dabWxsYkdRZ2FXNGdjM1J5ZFdOMGRYSmxBR1J2WlhNZ2JtOTBJR0Z3Y0d4NUlIUnZJSFJvYVhNZ2RIbHdaVG9BYkc5allXd2dablZ1WTNScGIyNGdaR1ZqYkdGeVlYUnBiMjRBY21Wa1pXWnBibWwwYVc5dUlHOW1JR0oxYVd4MExXbHVJR1oxYm1OMGFXOXVBRzExYkhScGNHeGxJSEJ5YjNSdmRIbHdaWE1nWm05eUlITmhiV1VnWm5WdVkzUnBiMjRBYjNabGNteHZZV1JsWkNCbWRXNWpkR2x2Ym5NZ2JYVnpkQ0JvWVhabElIUm9aU0J6WVcxbElISmxkSFZ5YmlCMGVYQmxBRzkyWlhKc2IyRmtaV1FnWm5WdVkzUnBiMjV6SUcxMWMzUWdhR0YyWlNCMGFHVWdjMkZ0WlNCd1lYSmhiV1YwWlhJZ2MzUnZjbUZuWlNCeGRXRnNhV1pwWlhKeklHWnZjaUJoY21kMWJXVnVkQUFsWkFCdmRtVnliRzloWkdWa0lHWjFibU4wYVc5dWN5QnRkWE4wSUdoaGRtVWdkR2hsSUhOaGJXVWdjR0Z5WVcxbGRHVnlJSEJ5WldOcGMybHZiaUJ4ZFdGc2FXWnBaWEp6SUdadmNpQmhjbWQxYldWdWRBQmhjbkpoZVNCcGJpQm1kVzVqZEdsdmJpQnlaWFIxY200Z2RIbHdaUUJtZFc1amRHbHZiaUJ1WVcxbElHbHpJSEpsWkdWamJHRnlZWFJwYjI0Z2IyWWdaWGhwYzNScGJtY2dibUZ0WlFCallXNG5kQ0JtYVc1a0lHWjFibU4wYVc5dUFHWjFibU4wYVc5dUlHRnNjbVZoWkhrZ2FHRnpJR0VnWW05a2VRQm1kVzVqZEdsdmJpQmpZVzV1YjNRZ2RHRnJaU0JoYm5rZ2NHRnlZVzFsZEdWeUtITXBBR1Z1ZEhKNUlIQnZhVzUwSUdOaGJtNXZkQ0J5WlhSMWNtNGdZU0IyWVd4MVpRQnlaV1JsWm1sdWFYUnBiMjRBWTJGdWJtOTBJR052Ym5OMGNuVmpkQ0IzYVhSb0lIUm9aWE5sSUdGeVozVnRaVzUwY3dCaWRXbHNkQzFwYmlCbWRXNWpkR2x2YmdCbWJHOWhkREUySUhSNWNHVnpJR05oYmlCdmJteDVJR0psSUdsdUlIVnVhV1p2Y20wZ1lteHZZMnNnYjNJZ1luVm1abVZ5SUhOMGIzSmhaMlVBS0hVcGFXNTBNVFlnZEhsd1pYTWdZMkZ1SUc5dWJIa2dZbVVnYVc0Z2RXNXBabTl5YlNCaWJHOWpheUJ2Y2lCaWRXWm1aWElnYzNSdmNtRm5aUUFvZFNscGJuUTRJSFI1Y0dWeklHTmhiaUJ2Ym14NUlHSmxJR2x1SUhWdWFXWnZjbTBnWW14dlkyc2diM0lnWW5WbVptVnlJSE4wYjNKaFoyVUFZWE56YVdkdUFFNXZiaTFNTFhaaGJIVmxJR05oYm01dmRDQmlaU0J3WVhOelpXUWdabTl5SUNkdmRYUW5JRzl5SUNkcGJtOTFkQ2NnY0dGeVlXMWxkR1Z5Y3k0QWIzVjBBR0Z5WjNWdFpXNTBJR05oYm01dmRDQmtjbTl3SUcxbGJXOXllU0J4ZFdGc2FXWnBaWElnZDJobGJpQndZWE56WldRZ2RHOGdabTl5YldGc0lIQmhjbUZ0WlhSbGNnQjJiMnhoZEdsc1pRQmpiMmhsY21WdWRBQmtaWFpwWTJWamIyaGxjbVZ1ZEFCeGRXVjFaV1poYldsc2VXTnZhR1Z5Wlc1MEFIZHZjbXRuY205MWNHTnZhR1Z5Wlc1MEFITjFZbWR5YjNWd1kyOW9aWEpsYm5RQWNtVmhaRzl1YkhrQWQzSnBkR1Z2Ym14NUFHbHRZV2RsSUdadmNtMWhkSE1nYlhWemRDQnRZWFJqYUFCbWIzSnRZWFFBWTJGc2JHbHVaeUIxYzJWeUlHWjFibU4wYVc5dUlHWnliMjBnWjJ4dlltRnNJSE5qYjNCbEFHMWhhVzRvQUNCM2NtOXVaeUJ2Y0dWeVlXNWtJSFI1Y0dVQVNXNTBaWEp1WVd3Z1JYSnliM0lBWW5WcGJIUWdhVzRnZFc1aGNua2diM0JsY21GMGIzSWdablZ1WTNScGIyNHVJQ0JVZVhCbE9pQWxjd0J5WlhSMWNtNEFkbTlwWkNCbWRXNWpkR2x2YmlCallXNXViM1FnY21WMGRYSnVJR0VnZG1Gc2RXVUFZMkZ1Ym05MElHTnZiblpsY25RZ2NtVjBkWEp1SUhaaGJIVmxJSFJ2SUdaMWJtTjBhVzl1SUhKbGRIVnliaUIwZVhCbEFIUjVjR1VnWTI5dWRtVnljMmx2YmlCdmJpQnlaWFIxY200Z2RtRnNkV1Z6SUhkaGN5QnViM1FnWlhod2JHbGphWFJzZVNCaGJHeHZkMlZrSUhWdWRHbHNJSFpsY25OcGIyNGdOREl3QUhSNWNHVWdaRzlsY3lCdWIzUWdiV0YwWTJnc0lHOXlJR2x6SUc1dmRDQmpiMjUyWlhKMGFXSnNaU0IwYnl3Z2RHaGxJR1oxYm1OMGFXOXVKM01nY21WMGRYSnVJSFI1Y0dVQWRHVnpjMlZzYkdGMGFXOXVJR052Ym5SeWIyd2dZbUZ5Y21sbGNpZ3BJR05oYm01dmRDQmlaU0J3YkdGalpXUWdkMmwwYUdsdUlHWnNiM2NnWTI5dWRISnZiQUIwWlhOelpXeHNZWFJwYjI0Z1kyOXVkSEp2YkNCaVlYSnlhV1Z5S0NrZ2JYVnpkQ0JpWlNCcGJpQnRZV2x1S0NrQWRHVnpjMlZzYkdGMGFXOXVJR052Ym5SeWIyd2dZbUZ5Y21sbGNpZ3BJR05oYm01dmRDQmlaU0J3YkdGalpXUWdZV1owWlhJZ1lTQnlaWFIxY200Z1puSnZiU0J0WVdsdUtDa0FZbVZuYVc1SmJuWnZZMkYwYVc5dVNXNTBaWEpzYjJOclFWSkNLQ2tnYlhWemRDQmlaU0JwYmlCaElHWnlZV2R0Wlc1MElITm9ZV1JsY2dCaVpXZHBia2x1ZG05allYUnBiMjVKYm5SbGNteHZZMnRCVWtJb0tTQnRkWE4wSUdKbElHbHVJRzFoYVc0b0tRQmlaV2RwYmtsdWRtOWpZWFJwYjI1SmJuUmxjbXh2WTJ0QlVrSW9LU0JqWVc1dWIzUWdZbVVnY0d4aFkyVmtJR0ZtZEdWeUlHRWdjbVYwZFhKdUlHWnliMjBnYldGcGJpZ3BBR0psWjJsdVNXNTJiMk5oZEdsdmJrbHVkR1Z5Ykc5amEwRlNRaWdwSUdOaGJtNXZkQ0JpWlNCd2JHRmpaV1FnZDJsMGFHbHVJR1pzYjNjZ1kyOXVkSEp2YkFCaVpXZHBia2x1ZG05allYUnBiMjVKYm5SbGNteHZZMnRCVWtJb0tTQnRkWE4wSUc5dWJIa2dZbVVnWTJGc2JHVmtJRzl1WTJVQVltVm5hVzVKYm5adlkyRjBhVzl1U1c1MFpYSnNiMk5yUVZKQ0tDa2diWFZ6ZENCaVpTQmpZV3hzWldRZ1ltVm1iM0psSUdWdVpFbHVkbTlqWVhScGIyNUpiblJsY214dlkydEJVa0lvS1FCbGJtUkpiblp2WTJGMGFXOXVTVzUwWlhKc2IyTnJRVkpDS0NrZ2JYVnpkQ0JpWlNCcGJpQmhJR1p5WVdkdFpXNTBJSE5vWVdSbGNnQmxibVJKYm5adlkyRjBhVzl1U1c1MFpYSnNiMk5yUVZKQ0tDa2diWFZ6ZENCaVpTQnBiaUJ0WVdsdUtDa0FaVzVrU1c1MmIyTmhkR2x2YmtsdWRHVnliRzlqYTBGU1FpZ3BJR05oYm01dmRDQmlaU0J3YkdGalpXUWdZV1owWlhJZ1lTQnlaWFIxY200Z1puSnZiU0J0WVdsdUtDa0FaVzVrU1c1MmIyTmhkR2x2YmtsdWRHVnliRzlqYTBGU1FpZ3BJR05oYm01dmRDQmlaU0J3YkdGalpXUWdkMmwwYUdsdUlHWnNiM2NnWTI5dWRISnZiQUJsYm1SSmJuWnZZMkYwYVc5dVNXNTBaWEpzYjJOclFWSkNLQ2tnYlhWemRDQnZibXg1SUdKbElHTmhiR3hsWkNCdmJtTmxBRzFsZEdodlpDQmtiMlZ6SUc1dmRDQmhZMk5sY0hRZ1lXNTVJR0Z5WjNWdFpXNTBjd0JuYkY5cGJnQm5iRjl2ZFhRQVoyeGZUV1Z6YUZabGNuUnBZMlZ6VGxZQVoyeGZUV1Z6YUZCeWFXMXBkR2wyWlhOT1ZnQmhjbkpoZVNCdGRYTjBJR1pwY25OMElHSmxJSE5wZW1Wa0lHSjVJR0VnY21Wa1pXTnNZWEpoZEdsdmJpQnZjaUJzWVhsdmRYUWdjWFZoYkdsbWFXVnlBR0Z5Y21GNUlHMTFjM1FnWW1VZ1pHVmpiR0Z5WldRZ2QybDBhQ0JoSUhOcGVtVWdZbVZtYjNKbElIVnphVzVuSUhSb2FYTWdiV1YwYUc5a0FDNXNaVzVuZEdnb0tRQjFibVY0Y0dWamRHVmtJSFZ6WlNCdlppQXViR1Z1WjNSb0tDa0FkR1Z0Y0ZKbGRIVnliZ0IwWlcxd1FYSm5BR2RzWDFObGJXRnVkR2xqYzBGamNYVnBjbVVnYlhWemRDQnViM1FnWW1VZ2RYTmxaQ0IzYVhSb0lDaHBiV0ZuWlNrZ1lYUnZiV2xqSUhOMGIzSmxBR2RzWDFObGJXRnVkR2xqYzFKbGJHVmhjMlVnYlhWemRDQnViM1FnWW1VZ2RYTmxaQ0IzYVhSb0lDaHBiV0ZuWlNrZ1lYUnZiV2xqSUd4dllXUUFaMnhmVTJWdFlXNTBhV056UVdOeGRXbHlaVkpsYkdWaGMyVWdiWFZ6ZENCdWIzUWdZbVVnZFhObFpDQjNhWFJvSUNocGJXRm5aU2tnWVhSdmJXbGpJR3h2WVdRdmMzUnZjbVVBU1c1MllXeHBaQ0J6WlcxaGJuUnBZM01nZG1Gc2RXVUFTVzUyWVd4cFpDQnpkRzl5WVdkbElHTnNZWE56SUhObGJXRnVkR2xqY3lCMllXeDFaUUJUWlcxaGJuUnBZM01nYlhWemRDQnBibU5zZFdSbElHVjRZV04wYkhrZ2IyNWxJRzltSUdkc1gxTmxiV0Z1ZEdsamMxSmxiR1ZoYzJVc0lHZHNYMU5sYldGdWRHbGpjMEZqY1hWcGNtVXNJRzl5SUdkc1gxTmxiV0Z1ZEdsamMwRmpjWFZwY21WU1pXeGxZWE5sQUZObGJXRnVkR2xqY3lCdGRYTjBJRzV2ZENCcGJtTnNkV1JsSUcxMWJIUnBjR3hsSUc5bUlHZHNYMU5sYldGdWRHbGpjMUpsYkdWaGMyVXNJR2RzWDFObGJXRnVkR2xqYzBGamNYVnBjbVVzSUc5eUlHZHNYMU5sYldGdWRHbGpjMEZqY1hWcGNtVlNaV3hsWVhObEFITmxiVlZ1WlhGMVlXd2diWFZ6ZENCdWIzUWdhVzVqYkhWa1pTQnRkV3gwYVhCc1pTQnZaaUJuYkY5VFpXMWhiblJwWTNOU1pXeGxZWE5sTENCbmJGOVRaVzFoYm5ScFkzTkJZM0YxYVhKbExDQnZjaUJuYkY5VFpXMWhiblJwWTNOQlkzRjFhWEpsVW1Wc1pXRnpaUUJUZEc5eVlXZGxJR05zWVhOeklITmxiV0Z1ZEdsamN5QnRkWE4wSUc1dmRDQmlaU0I2WlhKdkFITmxiVlZ1WlhGMVlXd2diWFZ6ZENCdWIzUWdZbVVnWjJ4ZlUyVnRZVzUwYVdOelVtVnNaV0Z6WlNCdmNpQm5iRjlUWlcxaGJuUnBZM05CWTNGMWFYSmxVbVZzWldGelpRQm5iRjlUWlcxaGJuUnBZM05OWVd0bFFYWmhhV3hoWW14bElISmxjWFZwY21WeklHZHNYMU5sYldGdWRHbGpjMUpsYkdWaGMyVWdiM0lnWjJ4ZlUyVnRZVzUwYVdOelFXTnhkV2x5WlZKbGJHVmhjMlVBWjJ4ZlUyVnRZVzUwYVdOelRXRnJaVlpwYzJsaWJHVWdjbVZ4ZFdseVpYTWdaMnhmVTJWdFlXNTBhV056UVdOeGRXbHlaU0J2Y2lCbmJGOVRaVzFoYm5ScFkzTkJZM0YxYVhKbFVtVnNaV0Z6WlFCbmJGOVRaVzFoYm5ScFkzTldiMnhoZEdsc1pTQnRkWE4wSUc1dmRDQmlaU0IxYzJWa0lIZHBkR2dnYldWdGIzSjVRbUZ5Y21sbGNpQnZjaUJqYjI1MGNtOXNRbUZ5Y21sbGNnQnpaVzFGY1hWaGJDQmhibVFnYzJWdFZXNWxjWFZoYkNCdGRYTjBJR1ZwZEdobGNpQmliM1JvSUdsdVkyeDFaR1VnWjJ4ZlUyVnRZVzUwYVdOelZtOXNZWFJwYkdVZ2IzSWdibVZwZEdobGNnQW9MaTR1S1FCSFRGOUJVa0pmWjNCMVgzTm9ZV1JsY2pVQVIweGZRVkpDWDNSbGVIUjFjbVZmWjJGMGFHVnlBRzV2YmkxamIyNXpkR0Z1ZENCdlptWnpaWFFnWVhKbmRXMWxiblFBYlhWemRDQmlaU0JoSUdOdmJYQnBiR1V0ZEdsdFpTQmpiMjV6ZEdGdWREb0FiMlptYzJWMGN5QmhjbWQxYldWdWRBQnRkWE4wSUdKbElEQXNJREVzSURJc0lHOXlJRE02QUdOdmJYQnZibVZ1ZENCaGNtZDFiV1Z1ZEFCM2FYUm9JR0pwWVhNZ1lYSm5kVzFsYm5RQUFBRGQzUUlBL04wQ0FHRnlaM1Z0Wlc1MElHMTFjM1FnWW1VZ1kyOXRjR2xzWlMxMGFXMWxJR052Ym5OMFlXNTBBRzltWm5ObGRBQmpiMjF3YjI1bGJuUnpJRzExYzNRZ1ltVWdhVzRnZEdobElISmhibWRsSUZzd0xDQXpYUUJ0WVhOckFHTnZiWEJ2Ym1WdWRITWdiWFZ6ZENCaVpTQnBiaUIwYUdVZ2NtRnVaMlVnV3pBc0lETXhYUUIwWlhobGJDQnZabVp6WlhRQWRtRnNkV1VnYVhNZ2IzVjBJRzltSUhKaGJtZGxPZ0JiWjJ4ZlRXbHVVSEp2WjNKaGJWUmxlR1ZzVDJabWMyVjBMQ0JuYkY5TllYaFFjbTluY21GdFZHVjRaV3hQWm1aelpYUmRBSEJoZVd4dllXUWdiblZ0WW1WeUFHTmhiR3hoWW14bElHUmhkR0VnYm5WdFltVnlBRWRNWDBGU1FsOXphR0ZrWlhKZmRHVjRkSFZ5WlY5cGJXRm5aVjl6WVcxd2JHVnpBSFJsZUhSMWNtVlRZVzF3YkdWeklHRnVaQ0JwYldGblpWTmhiWEJzWlhNQWIyNXNlU0J6ZFhCd2IzSjBaV1FnYjI0Z2FXMWhaMlVnZDJsMGFDQm1iM0p0WVhRZ2NqTXlhU0J2Y2lCeU16SjFhUUJwYldGblpVRjBiMjFwWTBWNFkyaGhibWRsQUc5dWJIa2djM1Z3Y0c5eWRHVmtJRzl1SUdsdWRHVm5aWElnYVcxaFoyVnpBRzl1YkhrZ2MzVndjRzl5ZEdWa0lHOXVJR2x0WVdkbElIZHBkR2dnWm05eWJXRjBJSEl6TW1ZQUFCUGVBZ0JIVEY5T1ZsOXphR0ZrWlhKZllYUnZiV2xqWDJsdWREWTBBRWRNWDBWWVZGOXphR0ZrWlhKZllYUnZiV2xqWDJsdWREWTBBRUhJaHdvTDFiRUJqSU1DQUthREFnQm1hWEp6ZENCaGNtZDFiV1Z1ZENCdGRYTjBJR0psSUdGdUlHbHVkR1Z5Y0c5c1lXNTBMQ0J2Y2lCcGJuUmxjbkJ2YkdGdWRDMWhjbkpoZVNCbGJHVnRaVzUwQUdGeVozVnRaVzUwSUcxMWMzUWdZbVVnY1hWaGJHbG1hV1ZrSUdGeklGOWZaWGh3YkdsamFYUkpiblJsY25CQlRVUWdhVzRBYVc1MFpYSndiMnhoYm5RQWRtVnlkR1Y0SUdsdVpHVjRBRzExYzNRZ1ltVWdhVzRnZEdobElISmhibWRsSUZzd0xDQXlYUUJqYkhWemRHVnlJSE5wZW1VQVlYSm5kVzFsYm5RZ2JYVnpkQ0JpWlNCaGRDQnNaV0Z6ZENBeEFHRnlaM1Z0Wlc1MElHMTFjM1FnWW1VZ1lTQndiM2RsY2lCdlppQXlBR2xrQURIZUFnQnpkV0puY205MWNDQnZjQUJXM2dJQWdkNENBSzNlQWdEWjNnSUFkR1Y0ZEhWeVpRQjBaWGgwZFhKbFIyRjBhR1Z5QUhSbGVIUjFjbVZIWVhSb1pYSlBabVp6WlhRQWRHVjRkSFZ5WlVkaGRHaGxjazltWm5ObGRITUFUMlptYzJWMEFIUmxlSFIxY21WUFptWnpaWFFBZEdWNFpXeEdaWFJqYUU5bVpuTmxkQUIwWlhoMGRYSmxVSEp2YWs5bVpuTmxkQUIwWlhoMGRYSmxURzlrVDJabWMyVjBBSFJsZUhSMWNtVlFjbTlxVEc5a1QyWm1jMlYwQUhSbGVIUjFjbVZIY21Ga1QyWm1jMlYwQUhSbGVIUjFjbVZRY205cVIzSmhaRTltWm5ObGRBQjBaWGgwZFhKbFUyRnRjR3hsY3dCcGJXRm5aVk5oYlhCc1pYTUFhVzFoWjJWQmRHOXRhV01BWTJGc2JDQmhjbWQxYldWdWRBQnpZVzF3YkdWeUlHTnZibk4wY25WamRHOXlJRzExYzNRZ1lYQndaV0Z5SUdGMElIQnZhVzUwSUc5bUlIVnpaUUJoY25KaGVXVmtJR052Ym5OMGNuVmpkRzl5QUdOaGJtNXZkQ0JqYjI1emRISjFZM1FnZEdocGN5QjBlWEJsQUdGc2JDQmtaV1poZFd4MElIQnlaV05wYzJsdmJuTWdZWEpsSUdocFoyaHdPeUIxYzJVZ2NISmxZMmx6YVc5dUlITjBZWFJsYldWdWRITWdkRzhnY1hWcFpYUWdkMkZ5Ym1sdVp5d2daUzVuTGpvS0lDQWdJQ0FnSUNBZ0luQnlaV05wYzJsdmJpQnRaV1JwZFcxd0lHbHVkRHNnY0hKbFkybHphVzl1SUdocFoyaHdJR1pzYjJGME95SUFZMkZ1Ym05MElHTnZiblpsY25RZ1puSnZiU0FuSlhNbklIUnZJQ2NsY3ljQWJtOGdiM0JsY21GMGFXOXVJQ2NsY3ljZ1pYaHBjM1J6SUhSb1lYUWdkR0ZyWlhNZ1lXNGdiM0JsY21GdVpDQnZaaUIwZVhCbElDVnpJQ2h2Y2lCMGFHVnlaU0JwY3lCdWJ5QmhZMk5sY0hSaFlteGxJR052Ym5abGNuTnBiMjRwQUNCM2NtOXVaeUJ2Y0dWeVlXNWtJSFI1Y0dWek9nQnVieUJ2Y0dWeVlYUnBiMjRnSnlWekp5QmxlR2x6ZEhNZ2RHaGhkQ0IwWVd0bGN5QmhJR3hsWm5RdGFHRnVaQ0J2Y0dWeVlXNWtJRzltSUhSNWNHVWdKeVZ6SnlCaGJtUWdZU0J5YVdkb2RDQnZjR1Z5WVc1a0lHOW1JSFI1Y0dVZ0p5VnpKeUFvYjNJZ2RHaGxjbVVnYVhNZ2JtOGdZV05qWlhCMFlXSnNaU0JqYjI1MlpYSnphVzl1S1FCbmJGOVdaWEowWlhoSlJBQW9SR2xrSUhsdmRTQnRaV0Z1SUdkc1gxWmxjblJsZUVsdVpHVjRQeWtBWjJ4ZlNXNXpkR0Z1WTJWSlJBQW9SR2xrSUhsdmRTQnRaV0Z1SUdkc1gwbHVjM1JoYm1ObFNXNWtaWGcvS1FCMWJtUmxZMnhoY21Wa0lHbGtaVzUwYVdacFpYSUFaMnhmVUc5cGJuUkRiMjl5WkFCMFpYTnpaV3hzWVhScGIyNHRZMjl1ZEhKdmJDQndaWEl0ZG1WeWRHVjRJRzkxZEhCMWRDQnNMWFpoYkhWbElHMTFjM1FnWW1VZ2FXNWtaWGhsWkNCM2FYUm9JR2RzWDBsdWRtOWpZWFJwYjI1SlJBQWdiQzEyWVd4MVpTQnZaaUJ6ZDJsNmVteGxJR05oYm01dmRDQm9ZWFpsSUdSMWNHeHBZMkYwWlNCamIyMXdiMjVsYm5SekFDQnNMWFpoYkhWbElISmxjWFZwY21Wa0FHTmhiaWQwSUcxdlpHbG1lU0J6YUdGa1pYSWdhVzV3ZFhRQVkyRnVKM1FnYlc5a2FXWjVJR2RzWDBsdWMzUmhibU5sU1VRQVkyRnVKM1FnYlc5a2FXWjVJR2RzWDFabGNuUmxlRWxFQUdOaGJpZDBJRzF2WkdsbWVTQm5iRjlHY205dWRFWmhZMlVBWTJGdUozUWdiVzlrYVdaNUlHZHNYMFp5WVdkRGIyOXlaQUJqWVc0bmRDQnRiMlJwWm5rZ1oyeGZVRzlwYm5SRGIyOXlaQUJqWVc0bmRDQnRiMlJwWm5rZ1oyeGZSbkpoWjBSbGNIUm9JR2xtSUhWemFXNW5JR1ZoY214NVgyWnlZV2R0Wlc1MFgzUmxjM1J6QUNJbGN5SWdLQ1Z6S1FBb0pYTXBBR05oYmlkMElISmxZV1FnWm5KdmJTQmxlSEJzYVdOcGRHeDVMV2x1ZEdWeWNHOXNZWFJsWkNCdlltcGxZM1E2SUFCamIyNXpkR0Z1ZENCbGVIQnlaWE56YVc5dUlISmxjWFZwY21Wa0FITmpZV3hoY2lCcGJuUmxaMlZ5SUdWNGNISmxjM05wYjI0Z2NtVnhkV2x5WldRQWJtOTBJR0ZzYkc5M1pXUWdhVzRnYm1WemRHVmtJSE5qYjNCbEFHbGtaVzUwYVdacFpYSnpJSE4wWVhKMGFXNW5JSGRwZEdnZ0ltZHNYeUlnWVhKbElISmxjMlZ5ZG1Wa0FGOWZBR2xrWlc1MGFXWnBaWEp6SUdOdmJuUmhhVzVwYm1jZ1kyOXVjMlZqZFhScGRtVWdkVzVrWlhKelkyOXlaWE1nS0NKZlh5SXBJR0Z5WlNCeVpYTmxjblpsWkN3Z1lXNWtJR0Z1SUdWeWNtOXlJR2xtSUhabGNuTnBiMjRnUENBek1EQUFhV1JsYm5ScFptbGxjbk1nWTI5dWRHRnBibWx1WnlCamIyNXpaV04xZEdsMlpTQjFibVJsY25OamIzSmxjeUFvSWw5Zklpa2dZWEpsSUhKbGMyVnlkbVZrQUVkTVh3QnVZVzFsY3lCaVpXZHBibTVwYm1jZ2QybDBhQ0FpUjB4ZklpQmpZVzRuZENCaVpTQW9kVzRwWkdWbWFXNWxaRG9BWkdWbWFXNWxaQUFpWkdWbWFXNWxaQ0lnWTJGdUozUWdZbVVnS0hWdUtXUmxabWx1WldRNkFGOWZURWxPUlY5ZkFGOWZSa2xNUlY5ZkFGOWZWa1ZTVTBsUFRsOWZBSEJ5WldSbFptbHVaV1FnYm1GdFpYTWdZMkZ1SjNRZ1ltVWdLSFZ1S1dSbFptbHVaV1E2QUc1aGJXVnpJR052Ym5SaGFXNXBibWNnWTI5dWMyVmpkWFJwZG1VZ2RXNWtaWEp6WTI5eVpYTWdZWEpsSUhKbGMyVnlkbVZrTENCaGJtUWdZVzRnWlhKeWIzSWdhV1lnZG1WeWMybHZiaUE4SURNd01Eb0FibUZ0WlhNZ1kyOXVkR0ZwYm1sdVp5QmpiMjV6WldOMWRHbDJaU0IxYm1SbGNuTmpiM0psY3lCaGNtVWdjbVZ6WlhKMlpXUTZBR3hwYm1VZ1kyOXVkR2x1ZFdGMGFXOXVBSFZ6WldRZ1lYUWdaVzVrSUc5bUlHTnZiVzFsYm5RN0lIUm9aU0JtYjJ4c2IzZHBibWNnYkdsdVpTQnBjeUJ6ZEdsc2JDQndZWEowSUc5bUlIUm9aU0JqYjIxdFpXNTBBSFZ6WldRZ1lYUWdaVzVrSUc5bUlHTnZiVzFsYm5Rc0lHSjFkQ0IwYUdseklIWmxjbk5wYjI0Z1pHOWxjeUJ1YjNRZ2NISnZkbWxrWlNCc2FXNWxJR052Ym5ScGJuVmhkR2x2YmdCdWIzUWdZV3hzYjNkbFpDQnBiaUIwYUdseklIWmxjbk5wYjI0QVoyeGZBR0Z5Y21GNUlHRnlaM1Z0Wlc1MElHMTFjM1FnWW1VZ2MybDZaV1FBWTI5dWMzUnlkV04wYjNJQVkyRnVKM1FnWTI5dWMzUnlkV04wSUhOMGNuVmpkSFZ5WlNCamIyNTBZV2x1YVc1bklERTJMV0pwZENCMGVYQmxBR05oYmlkMElHTnZibk4wY25WamRDQnpkSEoxWTNSMWNtVWdZMjl1ZEdGcGJtbHVaeUE0TFdKcGRDQjBlWEJsQURFMkxXSnBkQ0JoY25KaGVYTWdibTkwSUhOMWNIQnZjblJsWkFBeE5pMWlhWFFnZG1WamRHOXljeUJ2Ym14NUlIUmhhMlVnZG1WamRHOXlJSFI1Y0dWekFEZ3RZbWwwSUdGeWNtRjVjeUJ1YjNRZ2MzVndjRzl5ZEdWa0FEZ3RZbWwwSUhabFkzUnZjbk1nYjI1c2VTQjBZV3RsSUhabFkzUnZjaUIwZVhCbGN3QmhjbkpoZVNCamIyNXpkSEoxWTNSdmNpQnRkWE4wSUdoaGRtVWdZWFFnYkdWaGMzUWdiMjVsSUdGeVozVnRaVzUwQUdGeWNtRjVJR052Ym5OMGNuVmpkRzl5SUc1bFpXUnpJRzl1WlNCaGNtZDFiV1Z1ZENCd1pYSWdZWEp5WVhrZ1pXeGxiV1Z1ZEFCaGNuSmhlU0JqYjI1emRISjFZM1J2Y2lCaGNtZDFiV1Z1ZENCdWIzUWdZMjl5Y21WamRDQjBlWEJsSUhSdklHTnZibk4wY25WamRDQmhjbkpoZVNCbGJHVnRaVzUwQUdOdmJuTjBjblZqZEdsdVp5QnViMjR0WVhKeVlYa2dZMjl1YzNScGRIVmxiblFnWm5KdmJTQmhjbkpoZVNCaGNtZDFiV1Z1ZEFCamIyNXpkSEoxWTNScGJtY2diV0YwY21sNElHWnliMjBnYldGMGNtbDRBRzFoZEhKcGVDQmpiMjV6ZEhKMVkzUmxaQ0JtY205dElHMWhkSEpwZUNCallXNGdiMjVzZVNCb1lYWmxJRzl1WlNCaGNtZDFiV1Z1ZEFCMGIyOGdiV0Z1ZVNCaGNtZDFiV1Z1ZEhNQVRuVnRZbVZ5SUc5bUlHTnZibk4wY25WamRHOXlJSEJoY21GdFpYUmxjbk1nWkc5bGN5QnViM1FnYldGMFkyZ2dkR2hsSUc1MWJXSmxjaUJ2WmlCemRISjFZM1IxY21VZ1ptbGxiR1J6QUc1dmRDQmxibTkxWjJnZ1pHRjBZU0J3Y205MmFXUmxaQ0JtYjNJZ1kyOXVjM1J5ZFdOMGFXOXVBSGR5YjI1bklHNTFiV0psY2lCdlppQmhjbWQxYldWdWRITUFRMjl2Y0dWeVlYUnBkbVVnYldGMGNtbDRJR052Ym5OMGNuVmpkRzl5SUdGeVozVnRaVzUwSUcxMWMzUWdZbVVnYzJOaGJHRnlJRzl5SUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUFCamIyNXpkSEoxWTNSdmNpQmhjbWQxYldWdWRDQmtiMlZ6SUc1dmRDQm9ZWFpsSUdFZ2RIbHdaUUJqWVc1dWIzUWdZMjl1ZG1WeWRDQmhJSE5oYlhCc1pYSUFZMkZ1Ym05MElHTnZiblpsY25RZ1lXNGdZWFJ2YldsalgzVnBiblFBWTJGdWJtOTBJR052Ym5abGNuUWdZU0IyYjJsa0FITmhiWEJzWlhJdFkyOXVjM1J5ZFdOMGIzSWdjbVZ4ZFdseVpYTWdkSGR2SUdGeVozVnRaVzUwY3dCellXMXdiR1Z5TFdOdmJuTjBjblZqZEc5eUlHTmhibTV2ZENCdFlXdGxJR0Z1SUdGeWNtRjVJRzltSUhOaGJYQnNaWEp6QUhOaGJYQnNaWEl0WTI5dWMzUnlkV04wYjNJZ1ptbHljM1FnWVhKbmRXMWxiblFnYlhWemRDQmlaU0JoSUhOallXeGhjaUIwWlhoMGRYSmxXRmhZSUhSNWNHVUFjMkZ0Y0d4bGNpMWpiMjV6ZEhKMVkzUnZjaUJtYVhKemRDQmhjbWQxYldWdWRDQnRkWE4wSUcxaGRHTm9JSFI1Y0dVZ1lXNWtJR1JwYldWdWMybHZibUZzYVhSNUlHOW1JR052Ym5OMGNuVmpkRzl5SUhSNWNHVUFjMkZ0Y0d4bGNpMWpiMjV6ZEhKMVkzUnZjaUJ6WldOdmJtUWdZWEpuZFcxbGJuUWdiWFZ6ZENCaVpTQmhJSE5qWVd4aGNpQjBlWEJsSUNkellXMXdiR1Z5SndCcGJHeGxaMkZzSUhWelpTQnZaaUIwZVhCbElDZDJiMmxrSndCaWIyOXNaV0Z1SUdWNGNISmxjM05wYjI0Z1pYaHdaV04wWldRQUFBZmZBZ0J6WVcxd2JHVnlSWGgwWlhKdVlXeFBSVk1BQUNIZkFnQkIzd0lBWDE5ellXMXdiR1Z5UlhoMFpYSnVZV3d5UkZreVdVVllWQUJ1YjI0dGRXNXBabTl5YlNCemRISjFZM1FnWTI5dWRHRnBibk1nWVNCellXMXdiR1Z5SUc5eUlHbHRZV2RsT2dCellXMXdiR1Z5TDJsdFlXZGxJSFI1Y0dWeklHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2FXNGdkVzVwWm05eWJTQjJZWEpwWVdKc1pYTWdiM0lnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5Y3pvQWJtOXVMWFZ1YVdadmNtMGdjM1J5ZFdOMElHTnZiblJoYVc1eklHRnVJR0YwYjIxcFkxOTFhVzUwT2dCaGRHOXRhV05mZFdsdWRITWdZMkZ1SUc5dWJIa2dZbVVnZFhObFpDQnBiaUIxYm1sbWIzSnRJSFpoY21saFlteGxjeUJ2Y2lCbWRXNWpkR2x2YmlCd1lYSmhiV1YwWlhKek9nQnViMjR0ZFc1cFptOXliU0J6ZEhKMVkzUWdZMjl1ZEdGcGJuTWdZVzRnWVdOalpXeGxjbUYwYVc5dVUzUnlkV04wZFhKbFRsWTZBR0ZqWTJWc1pYSmhkR2x2YmxOMGNuVmpkSFZ5WlU1V0lHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2FXNGdkVzVwWm05eWJTQjJZWEpwWVdKc1pYTWdiM0lnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5Y3pvQWJtOXVMVzl3WVhGMVpTQjFibWxtYjNKdGN5QnZkWFJ6YVdSbElHRWdZbXh2WTJzQWJtOXVMVzl3WVhGMVpTQjFibWxtYjNKdElIWmhjbWxoWW14bGN5QnVaV1ZrSUdFZ2JHRjViM1YwS0d4dlkyRjBhVzl1UFV3cEFHNXZkQ0JoYkd4dmQyVmtJRzl1SUdKc2IyTnJJRzl5SUhOMGNuVmpkSFZ5WlNCdFpXMWlaWEp6QUc1dmJuVnVhV1p2Y20xRldGUUFhVzRnWm05eUlITjBZV2RsSUdsdWNIVjBjd0J2ZFhRZ1ptOXlJSE4wWVdkbElHOTFkSEIxZEhNQVkyRnVibTkwSUhWelpTQW5hVzV2ZFhRbklHRjBJR2RzYjJKaGJDQnpZMjl3WlFCbWIzSWdibTl1TFhCaGNtRnRaWFJsY2l3Z1kyRnVJRzl1YkhrZ1lYQndiSGtnZEc4Z0oybHVKeUJ2Y2lCdWJ5QnpkRzl5WVdkbElIRjFZV3hwWm1sbGNnQnRaVzF2Y25rZ2NYVmhiR2xtYVdWeWN5QmpZVzV1YjNRZ1ltVWdkWE5sWkNCdmJpQjBhR2x6SUhSNWNHVUFZblZtWm1WeWN5QmpZVzRnWW1VZ1pHVmpiR0Z5WldRZ2IyNXNlU0JoY3lCaWJHOWphM01BWW5WbVptVnlBR05oYmlCdmJteDVJR0psSUdGd2NHeHBaV1FnZEc4Z1lTQnpkR0Z1WkdGc2IyNWxJQ2R2ZFhRbkFHSnNaVzVrSUdWeGRXRjBhVzl1QUdOaGJtNXZkQ0JpWlNCaWIyOXNBSE5vWVdSbGNpQnBibkIxZEM5dmRYUndkWFFBYlhWemRDQmlaU0J4ZFdGc2FXWnBaV1FnWVhNZ1pteGhkQUJqWVc1dWIzUWdkWE5sSUdsdWRHVnljRzlzWVhScGIyNGdjWFZoYkdsbWFXVnljeUIzYVhSb0lIQmhkR05vQUhCaGRHTm9BSFJoYzJ0T1ZpQjJZWEpwWVdKc1pYTWdZMkZ1SUdKbElHUmxZMnhoY21Wa0lHOXViSGtnWVhNZ1lteHZZMnR6QUhSaGMydE9WZ0JqWVc1dWIzUWdZbVVnWVNCemRISjFZM1IxY21VZ2IzSWdZWEp5WVhrQWRtVnlkR1Y0SUdsdWNIVjBJR0Z5Y21GNWN3QjJaWEowWlhndGMyaGhaR1Z5SUdCa2IzVmliR1ZnSUhSNWNHVWdhVzV3ZFhRQWRtVnlkR1Y0SUdsdWNIVjBJR05oYm01dmRDQmlaU0JtZFhKMGFHVnlJSEYxWVd4cFptbGxaQUJtY21GbmJXVnVkQzF6YUdGa1pYSWdjM1J5ZFdOMElHbHVjSFYwQUdaeVlXZHRaVzUwTFhOb1lXUmxjaUJ6ZEhKMVkzUWdhVzV3ZFhRZ1kyOXVkR0ZwYm1sdVp5QnpkSEoxWTNSMWNtVUFabkpoWjIxbGJuUXRjMmhoWkdWeUlITjBjblZqZENCcGJuQjFkQ0JqYjI1MFlXbHVhVzVuSUdGdUlHRnljbUY1QUdkc2IySmhiQ0J6ZEc5eVlXZGxJR2x1Y0hWMElIRjFZV3hwWm1sbGNpQmpZVzV1YjNRZ1ltVWdkWE5sWkNCcGJpQmhJR052YlhCMWRHVWdjMmhoWkdWeUFHbHVBR05oYmlCdmJteDVJSFZ6WlNCdmJpQnZkWFJ3ZFhRZ2FXNGdkR1Z6YzJWc2JHRjBhVzl1TFdOdmJuUnliMndnYzJoaFpHVnlBSFpsY25SbGVDMXphR0ZrWlhJZ2MzUnlkV04wSUc5MWRIQjFkQUIyWlhKMFpYZ3RjMmhoWkdWeUlITjBjblZqZENCdmRYUndkWFFnWTI5dWRHRnBibWx1WnlCemRISjFZM1IxY21VQWRtVnlkR1Y0TFhOb1lXUmxjaUJ6ZEhKMVkzUWdiM1YwY0hWMElHTnZiblJoYVc1cGJtY2dZVzRnWVhKeVlYa0FabkpoWjIxbGJuUWdjMmhoWkdWeUlHOTFkSEIxZEFCallXNXViM1FnWW1VZ1lTQnpkSEoxWTNSMWNtVUFZMkZ1Ym05MElHSmxJR0VnYldGMGNtbDRBR05oYmlkMElIVnpaU0JoZFhocGJHbGhjbmtnY1hWaGJHbG1hV1Z5SUc5dUlHRWdabkpoWjIxbGJuUWdiM1YwY0hWMEFHTmxiblJ5YjJsa0wzTmhiWEJzWlM5d1lYUmphQUJqWVc0bmRDQjFjMlVnYVc1MFpYSndiMnhoZEdsdmJpQnhkV0ZzYVdacFpYSWdiMjRnWVNCbWNtRm5iV1Z1ZENCdmRYUndkWFFBWm14aGRDOXpiVzl2ZEdndmJtOXdaWEp6Y0dWamRHbDJaUUJqWVc1dWIzUWdZMjl1ZEdGcGJpQmhJR1J2ZFdKc1pTd2dhVzUwTmpRc0lHOXlJSFZwYm5RMk5BQm5iRzlpWVd3Z2MzUnZjbUZuWlNCdmRYUndkWFFnY1hWaGJHbG1hV1Z5SUdOaGJtNXZkQ0JpWlNCMWMyVmtJR2x1SUdFZ1kyOXRjSFYwWlNCemFHRmtaWElBWTJGdUlHOXViSGtnZFhObElHOXVJR2x1Y0hWMElHbHVJSFJsYzNObGJHeGhkR2x2YmkxbGRtRnNkV0YwYVc5dUlITm9ZV1JsY2dCallXNGdiMjVzZVNCb1lYWmxJRzl1WlNCaGRYaHBiR2xoY25rZ2NYVmhiR2xtYVdWeUlDaGpaVzUwY205cFpDd2djR0YwWTJnc0lHRnVaQ0J6WVcxd2JHVXBBR05oYmlCdmJteDVJR2hoZG1VZ2IyNWxJR2x1ZEdWeWNHOXNZWFJwYjI0Z2NYVmhiR2xtYVdWeUlDaG1iR0YwTENCemJXOXZkR2dzSUc1dmNHVnljM0JsWTNScGRtVXNJRjlmWlhod2JHbGphWFJKYm5SbGNuQkJUVVFwQUhCeVpXTnBjMlVnY1hWaGJHbG1hV1Z5SUcxMWMzUWdZWEJ3WldGeUlHWnBjbk4wQUdsdWRtRnlhV0Z1ZENCeGRXRnNhV1pwWlhJZ2JYVnpkQ0JoY0hCbFlYSWdZbVZtYjNKbElHbHVkR1Z5Y0c5c1lYUnBiMjRzSUhOMGIzSmhaMlVzSUdGdVpDQndjbVZqYVhOcGIyNGdjWFZoYkdsbWFXVnljeUFBYVc1MFpYSndiMnhoZEdsdmJpQnhkV0ZzYVdacFpYSnpJRzExYzNRZ1lYQndaV0Z5SUdKbFptOXlaU0J6ZEc5eVlXZGxJR0Z1WkNCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeWN3QkJkWGhwYkdsaGNua2djWFZoYkdsbWFXVnljeUFvWTJWdWRISnZhV1FzSUhCaGRHTm9MQ0JoYm1RZ2MyRnRjR3hsS1NCdGRYTjBJR0Z3Y0dWaGNpQmlaV1p2Y21VZ2MzUnZjbUZuWlNCaGJtUWdjSEpsWTJsemFXOXVJSEYxWVd4cFptbGxjbk1BY0hKbFkybHphVzl1SUhGMVlXeHBabWxsY2lCdGRYTjBJR0Z3Y0dWaGNpQmhjeUJzWVhOMElIRjFZV3hwWm1sbGNnQnBiaTl2ZFhRZ2JYVnpkQ0JoY0hCbFlYSWdZbVZtYjNKbElHTnZibk4wQUhSdmJ5QnRZVzU1SUhOMGIzSmhaMlVnY1hWaGJHbG1hV1Z5Y3dCdmJteDVJRzl1WlNCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeUlHRnNiRzkzWldRQWIyNXNlU0J2Ym1VZ1kyOW9aWEpsYm5RdlpHVjJhV05sWTI5b1pYSmxiblF2Y1hWbGRXVm1ZVzFwYkhsamIyaGxjbVZ1ZEM5M2IzSnJaM0p2ZFhCamIyaGxjbVZ1ZEM5emRXSm5jbTkxY0dOdmFHVnlaVzUwSUhGMVlXeHBabWxsY2lCaGJHeHZkMlZrQUhKbGNHeHBZMkYwWldRZ2NYVmhiR2xtYVdWeWN3QmpZVzRnYjI1c2VTQmhjSEJzZVNCb2FXZG9jQ0IwYnlCaGRHOXRhV05mZFdsdWRBQndjbVZqYVhOcGIyNEFZMkZ1Ym05MElHRndjR3g1SUhCeVpXTnBjMmx2YmlCemRHRjBaVzFsYm5RZ2RHOGdkR2hwY3lCMGVYQmxPeUIxYzJVZ0oyWnNiMkYwSnl3Z0oybHVkQ2NnYjNJZ1lTQnpZVzF3YkdWeUlIUjVjR1VBWVhSdmJXbGpJR052ZFc1MFpYSnpJR05oYmlCdmJteDVJR0psSUdocFoyaHdBR0YwYjIxcFkxOTFhVzUwQUhSNWNHVWdjbVZ4ZFdseVpYTWdaR1ZqYkdGeVlYUnBiMjRnYjJZZ1pHVm1ZWFZzZENCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeUFITjFZbk4wYVhSMWRHbHVaeUFuYldWa2FYVnRjQ2NBZEhsd1pTQmpZVzV1YjNRZ2FHRjJaU0J3Y21WamFYTnBiMjRnY1hWaGJHbG1hV1Z5QUhOaGJYQnNaWEp6SUdGdVpDQmhkRzl0YVdOZmRXbHVkSE1nWTJGdWJtOTBJR0psSUc5MWRIQjFkQ0J3WVhKaGJXVjBaWEp6QUcxMWMzUWdZbVVnWVNCamIyNXpkR0Z1ZENCcGJuUmxaMlZ5SUdWNGNISmxjM05wYjI0QWJYVnpkQ0JpWlNCaElIQnZjMmwwYVhabElHbHVkR1ZuWlhJQVkyOXVjM1FnWVhKeVlYa0FkbVZ5ZEdWNExYTm9ZV1JsY2lCaGNuSmhlUzF2WmkxaGNuSmhlU0J2ZFhSd2RYUUFkbVZ5ZEdWNExYTm9ZV1JsY2lCaGNuSmhlUzF2WmkxemRISjFZM1FnYjNWMGNIVjBBR1p5WVdkdFpXNTBMWE5vWVdSbGNpQmhjbkpoZVMxdlppMWhjbkpoZVNCcGJuQjFkQUJtY21GbmJXVnVkQzF6YUdGa1pYSWdZWEp5WVhrdGIyWXRjM1J5ZFdOMElHbHVjSFYwQUdaeVlXZHRaVzUwTFhOb1lXUmxjaUJoY25KaGVTMXZaaTFoY25KaGVTQnZkWFJ3ZFhRQVlYSnlZWGtnYzJsNlpTQnlaWEYxYVhKbFpBQmhjbkpoZVNCcGJtbDBhV0ZzYVhwbGNpQnRkWE4wSUdKbElITnBlbVZrQUc5dWJIa2diM1YwWlhKdGIzTjBJR1JwYldWdWMybHZiaUJ2WmlCaGJpQmhjbkpoZVNCdlppQmhjbkpoZVhNZ1kyRnVJR0psSUdsdGNHeHBZMmwwYkhrZ2MybDZaV1FBYjI1c2VTQnZkWFJsY20xdmMzUWdaR2x0Wlc1emFXOXVJRzltSUdGdUlHRnljbUY1SUc5bUlHRnljbUY1Y3lCallXNGdZbVVnWVNCemNHVmphV0ZzYVhwaGRHbHZiaUJqYjI1emRHRnVkQUJUM3dJQWF0OENBSUhmQWdDYzN3SUFSMHhmVGxaZmJXVnphRjl6YUdGa1pYSUFZWEp5WVhseklHOW1JR0Z5Y21GNWN3QmpZVzV1YjNRZ2NtVmtaV05zWVhKbElHRWdkWE5sY2kxaWJHOWpheUJ0WlcxaVpYSWdZWEp5WVhrQVlYSnlZWGtnZG1GeWFXRmliR1VnYm1GdFpTQmxlSEJsWTNSbFpBQnlaV1JsWTJ4aGNtbHVaeUJ1YjI0dFlYSnlZWGtnWVhNZ1lYSnlZWGtBY21Wa1pXTnNZWEpoZEdsdmJpQnZaaUJoY25KaGVTQjNhWFJvSUdFZ1pHbG1abVZ5Wlc1MElHVnNaVzFsYm5RZ2RIbHdaUUJ5WldSbFkyeGhjbUYwYVc5dUlHOW1JR0Z5Y21GNUlIZHBkR2dnWVNCa2FXWm1aWEpsYm5RZ1lYSnlZWGtnWkdsdFpXNXphVzl1Y3lCdmNpQnphWHBsY3dCeVpXUmxZMnhoY21GMGFXOXVJRzltSUdGeWNtRjVJSGRwZEdnZ2MybDZaUUFBQUxmZkFnQjJZWEpwWVdKc1pTQnBibVJsZUFCaGNuSmhlU0J0ZFhOMElHSmxJSEpsWkdWamJHRnlaV1FnZDJsMGFDQmhJSE5wZW1VZ1ltVm1iM0psSUdKbGFXNW5JR2x1WkdWNFpXUWdkMmwwYUNCaElIWmhjbWxoWW14bEFHMWxjMmdnZG1sbGR5QnZkWFJ3ZFhRZ1lYSnlZWGtnYzJsNlpTQnRkWE4wSUdKbElHZHNYMDFoZUUxbGMyaFdhV1YzUTI5MWJuUk9WaUJ2Y2lCcGJYQnNhV05wZEd4NUlITnBlbVZrQUhKbGNYVnBjbVZ6SUdFZ2RtbGxkeUJoY25KaGVTQmthVzFsYm5OcGIyNEFjR1Z5ZG1sbGQwNVdBSFpoY21saFlteGxjeUIzYVhSb0lIRjFZV3hwWm1sbGNpQW5ZMjl1YzNRbklHMTFjM1FnWW1VZ2FXNXBkR2xoYkdsNlpXUUFaMnhmVkdWNFEyOXZjbVFBQUFEVDN3SUE2OThDQUVkTVgwRlNRbDl6WlhCaGNtRjBaVjl6YUdGa1pYSmZiMkpxWldOMGN3Qm5iRjlRYjNOcGRHbHZiZ0JuYkY5UWIybHVkRk5wZW1VQVoyeGZRMnhwY0ZabGNuUmxlQUJuYkY5R2IyZEdjbUZuUTI5dmNtUUFaMnhmUm5KaFowUmxjSFJvQUdkc1gwWnlZV2REYjI5eVpBQm5iRjlEYkdsd1JHbHpkR0Z1WTJVQVoyeGZRM1ZzYkVScGMzUmhibU5sQUdkc1gwWnliMjUwUTI5c2IzSUFaMnhmUW1GamEwTnZiRzl5QUdkc1gwWnliMjUwVTJWamIyNWtZWEo1UTI5c2IzSUFaMnhmUW1GamExTmxZMjl1WkdGeWVVTnZiRzl5QUdkc1gxTmxZMjl1WkdGeWVVTnZiRzl5QUdkc1gwTnZiRzl5QUdkc1gwWnlZV2RUZEdWdVkybHNVbVZtUVZKQ0FHZHNYMU5oYlhCc1pVMWhjMnNBWjJ4ZlRHRjVaWElBWjJ4ZlVISnBiV2wwYVhabFNXNWthV05sYzA1V0FHTmhibTV2ZENCeVpXUmxZMnhoY21VZ1lXWjBaWElnZFhObEFHTmhibTV2ZENCaGNIQnNlU0JzWVhsdmRYUWdjWFZoYkdsbWFXVnlJSFJ2QUhKbFpHVmpiR0Z5WVhScGIyNEFZMkZ1Ym05MElHTm9ZVzVuWlNCemRHOXlZV2RsTENCdFpXMXZjbmtzSUc5eUlHRjFlR2xzYVdGeWVTQnhkV0ZzYVdacFkyRjBhVzl1SUc5bUFHTmhibTV2ZENCamFHRnVaMlVnYVc1MFpYSndiMnhoZEdsdmJpQnhkV0ZzYVdacFkyRjBhVzl1SUc5bUFHTmhibTV2ZENCamFHRnVaMlVnY1hWaGJHbG1hV05oZEdsdmJpQnZaZ0JqWVc0Z2IyNXNlU0JqYUdGdVoyVWdiR0Y1YjNWMElIRjFZV3hwWm1sallYUnBiMjRnYjJZQVkyRnVibTkwSUdOb1lXNW5aU0JwYm5CMWRDQnpkRzl5WVdkbElIRjFZV3hwWm1sallYUnBiMjRnYjJZQVkyRnVibTkwSUhKbFpHVmpiR0Z5WlNCM2FYUm9JR1JwWm1abGNtVnVkQ0J4ZFdGc2FXWnBZMkYwYVc5dU9nQmpZVzV1YjNRZ1kyaGhibWRsSUc5MWRIQjFkQ0J6ZEc5eVlXZGxJSEYxWVd4cFptbGpZWFJwYjI0Z2IyWUFZV3hzSUhKbFpHVmpiR0Z5WVhScGIyNXpJRzExYzNRZ2RYTmxJSFJvWlNCellXMWxJR1JsY0hSb0lHeGhlVzkxZENCdmJnQnlaV1JsWTJ4aGNtRjBhVzl1SUc5dWJIa2dZV3hzYjNkbFpDQm1iM0lnYjNabGNuSnBaR1ZmWTI5MlpYSmhaMlVnYkdGNWIzVjBBSEpsWkdWamJHRnlZWFJwYjI0Z2IyNXNlU0JoYkd4dmQyVmtJR1p2Y2lCMmFXVjNjRzl5ZEY5eVpXeGhkR2wyWlNCdmNpQnpaV052Ym1SaGNubGZkbWxsZDE5dlptWnpaWFFnYkdGNWIzVjBBR0oxYVd4MExXbHVJR0pzYjJOcklISmxaR1ZqYkdGeVlYUnBiMjRBWjJ4ZlVHVnlWbVZ5ZEdWNEFHZHNYMUJsY2taeVlXZHRaVzUwQUdkc1gwMWxjMmhRWlhKV1pYSjBaWGhPVmdCbmJGOU5aWE5vVUdWeVVISnBiV2wwYVhabFRsWUFZMkZ1Ym05MElISmxaR1ZqYkdGeVpTQmliRzlqYXpvZ0FHSnNiMk5ySUdSbFkyeGhjbUYwYVc5dUFHTmhibTV2ZENCeVpXUmxZMnhoY21VZ1lTQmlkV2xzZEMxcGJpQmliRzlqYXlCM2FYUm9JR0VnZFhObGNpQnVZVzFsQUc1dklHUmxZMnhoY21GMGFXOXVJR1p2ZFc1a0lHWnZjaUJ5WldSbFkyeGhjbUYwYVc5dUFHTmhiaUJ2Ym14NUlISmxaR1ZqYkdGeVpTQmhJR0oxYVd4MExXbHVJR0pzYjJOcklHOXVZMlVzSUdGdVpDQmlaV1p2Y21VZ1lXNTVJSFZ6WlFCallXNXViM1FnY21Wa1pXTnNZWEpsSUdFZ2JtOXVJR0pzYjJOcklHRnpJR0VnWW14dlkyc0FZMkZ1Ym05MElISmxaR1ZqYkdGeVpTQmliRzlqYXlCdFpXMWlaWElnZDJsMGFDQmhJR1JwWm1abGNtVnVkQ0IwZVhCbEFHTmhibTV2ZENCamFHRnVaMlVnWVhKeVlYbHVaWE56SUc5bUlISmxaR1ZqYkdGeVpXUWdZbXh2WTJzZ2JXVnRZbVZ5QUdOaGJtNXZkQ0JqYUdGdVoyVWdZWEp5WVhrZ2MybDZaU0J2WmlCeVpXUmxZMnhoY21Wa0lHSnNiMk5ySUcxbGJXSmxjZ0J0YVhOemFXNW5JSEJsY25acFpYZE9WaUJ4ZFdGc2FXWnBaWElnZEc4Z2NtVmtaV05zWVhKbFpDQmliRzlqYXlCdFpXMWlaWElBWTJGdWJtOTBJR0ZrWkNCd1pYSjJhV1YzVGxZZ2NYVmhiR2xtYVdWeUlIUnZJSEpsWkdWamJHRnlaV1FnWW14dlkyc2diV1Z0WW1WeUFHMXBjM05wYm1jZ2NHVnljSEpwYldsMGFYWmxUbFlnY1hWaGJHbG1hV1Z5SUhSdklISmxaR1ZqYkdGeVpXUWdZbXh2WTJzZ2JXVnRZbVZ5QUdOaGJtNXZkQ0JoWkdRZ2NHVnljSEpwYldsMGFYWmxUbFlnY1hWaGJHbG1hV1Z5SUhSdklISmxaR1ZqYkdGeVpXUWdZbXh2WTJzZ2JXVnRZbVZ5QUdOaGJtNXZkQ0JoWkdRZ2JXVnRiM0o1SUhGMVlXeHBabWxsY2lCMGJ5QnlaV1JsWTJ4aGNtVmtJR0pzYjJOcklHMWxiV0psY2dCallXNXViM1FnWVdSa0lHNXZiaTFZUmtJZ2JHRjViM1YwSUhSdklISmxaR1ZqYkdGeVpXUWdZbXh2WTJzZ2JXVnRZbVZ5QUdOaGJtNXZkQ0JoWkdRZ2NHRjBZMmdnZEc4Z2NtVmtaV05zWVhKbFpDQmliRzlqYXlCdFpXMWlaWElBYldWdFltVnlJR05oYm01dmRDQmpiMjUwY21Ga2FXTjBJR0pzYjJOcklDaHZjaUIzYUdGMElHSnNiMk5ySUdsdWFHVnlhWFJsWkNCbWNtOXRJR2RzYjJKaGJDa0FlR1ppWDJKMVptWmxjZ0I0Wm1KZmMzUnlaV0Z0QUdKc2IyTnJJSEpsWkdWamJHRnlZWFJwYjI0Z2FHRnpJR1Y0ZEhKaElHMWxiV0psY25NQVkyRnVibTkwSUdOb1lXNW5aU0JoY25KaGVXNWxjM01nYjJZZ2NtVmtaV05zWVhKbFpDQmliRzlqYXdCallXNXViM1FnWTJoaGJtZGxJR0Z5Y21GNUlITnBlbVVnYjJZZ2NtVmtaV05zWVhKbFpDQmliRzlqYXdCemRHOXlZV2RsSUhGMVlXeHBabWxsY2lCdWIzUWdZV3hzYjNkbFpDQnZiaUJtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElBWTJGdWJtOTBJSFZ6WlNCaGRYaHBiR2xoY25rZ2IzSWdhVzUwWlhKd2IyeGhkR2x2YmlCeGRXRnNhV1pwWlhKeklHOXVJR0VnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5QUdOaGJtNXZkQ0IxYzJVZ2JHRjViM1YwSUhGMVlXeHBabWxsY25NZ2IyNGdZU0JtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElBWTJGdWJtOTBJSFZ6WlNCcGJuWmhjbWxoYm5RZ2NYVmhiR2xtYVdWeUlHOXVJR0VnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5QUhGMVlXeHBabWxsY2lCb1lYTWdibThnWldabVpXTjBJRzl1SUc1dmJpMXZkWFJ3ZFhRZ2NHRnlZVzFsZEdWeWN3QndjbVZqYVhObEFHTmhibTV2ZENCdVpYTjBJR0VnWW14dlkyc2daR1ZtYVc1cGRHbHZiaUJwYm5OcFpHVWdZU0J6ZEhKMVkzUjFjbVVnYjNJZ1lteHZZMnNBWTJGdWJtOTBJRzVsYzNRZ1lTQnpkSEoxWTNSMWNtVWdaR1ZtYVc1cGRHbHZiaUJwYm5OcFpHVWdZU0J6ZEhKMVkzUjFjbVVnYjNJZ1lteHZZMnNBWTJGdUozUWdkWE5sSUhkcGRHZ2djMkZ0Y0d4bGNuTWdiM0lnYzNSeWRXTjBjeUJqYjI1MFlXbHVhVzVuSUhOaGJYQnNaWEp6QUdOaGJpZDBJSFZ6WlNCM2FYUm9JSEpsWm1WeVpXNWpaU0IwZVhCbGN3QmpZVzRuZENCMWMyVWdkMmwwYUNCemRISjFZM1J6SUdOdmJuUmhhVzVwYm1jZ1pteHZZWFF4TmdCallXNG5kQ0IxYzJVZ2QybDBhQ0JoY25KaGVYTWdZMjl1ZEdGcGJtbHVaeUJtYkc5aGRERTJBR05oYmlkMElIVnpaU0IzYVhSb0lITjBjblZqZEhNZ1kyOXVkR0ZwYm1sdVp5QnBiblF4TmdCallXNG5kQ0IxYzJVZ2QybDBhQ0JoY25KaGVYTWdZMjl1ZEdGcGJtbHVaeUJwYm5ReE5nQmpZVzRuZENCMWMyVWdkMmwwYUNCemRISjFZM1J6SUdOdmJuUmhhVzVwYm1jZ2RXbHVkREUyQUdOaGJpZDBJSFZ6WlNCM2FYUm9JR0Z5Y21GNWN5QmpiMjUwWVdsdWFXNW5JSFZwYm5ReE5nQmpZVzRuZENCMWMyVWdkMmwwYUNCemRISjFZM1J6SUdOdmJuUmhhVzVwYm1jZ2FXNTBPQUJqWVc0bmRDQjFjMlVnZDJsMGFDQmhjbkpoZVhNZ1kyOXVkR0ZwYm1sdVp5QnBiblE0QUdOaGJpZDBJSFZ6WlNCM2FYUm9JSE4wY25WamRITWdZMjl1ZEdGcGJtbHVaeUIxYVc1ME9BQmpZVzRuZENCMWMyVWdkMmwwYUNCaGNuSmhlWE1nWTI5dWRHRnBibWx1WnlCMWFXNTBPQUJqWVc0bmRDQjFjMlVnZDJsMGFDQjBlWEJsY3lCamIyNTBZV2x1YVc1bklHRnljbUY1Y3lCemFYcGxaQ0IzYVhSb0lHRWdjM0JsWTJsaGJHbDZZWFJwYjI0Z1kyOXVjM1JoYm5RQVkyRnVibTkwSUhWelpTQnpkRzl5WVdkbElHOXlJR2x1ZEdWeWNHOXNZWFJwYjI0Z2NYVmhiR2xtYVdWeWN5QnZiaUJ6ZEhKMVkzUjFjbVVnYldWdFltVnljd0JqWVc1dWIzUWdkWE5sSUcxbGJXOXllU0J4ZFdGc2FXWnBaWEp6SUc5dUlITjBjblZqZEhWeVpTQnRaVzFpWlhKekFHTmhibTV2ZENCMWMyVWdiR0Y1YjNWMElIRjFZV3hwWm1sbGNuTWdiMjRnYzNSeWRXTjBkWEpsSUcxbGJXSmxjbk1BWTJGdWJtOTBJSFZ6WlNCcGJuWmhjbWxoYm5RZ2NYVmhiR2xtYVdWeUlHOXVJSE4wY25WamRIVnlaU0J0WlcxaVpYSnpBR2x1WkhWamRHbDJaUzFzYjI5d0lHbHVhWFF0WkdWamJHRnlZWFJwYjI0Z2NtVnhkV2x5WlhNZ2RHaGxJR1p2Y20wZ0luUjVjR1V0YzNCbFkybG1hV1Z5SUd4dmIzQXRhVzVrWlhnZ1BTQmpiMjV6ZEdGdWRDMWxlSEJ5WlhOemFXOXVJZ0JzYVcxcGRHRjBhVzl1Y3dCcGJtUjFZM1JwZG1VZ2JHOXZjQ0J5WlhGMWFYSmxjeUJoSUhOallXeGhjaUFuYVc1MEp5QnZjaUFuWm14dllYUW5JR3h2YjNBZ2FXNWtaWGdBYVc1a2RXTjBhWFpsTFd4dmIzQWdZMjl1WkdsMGFXOXVJSEpsY1hWcGNtVnpJSFJvWlNCbWIzSnRJQ0pzYjI5d0xXbHVaR1Y0SUR4amIyMXdZWEpwYzI5dUxXOXdQaUJqYjI1emRHRnVkQzFsZUhCeVpYTnphVzl1SWdCcGJtUjFZM1JwZG1VdGJHOXZjQ0IwWlhKdGFXNWhkR2x2YmlCeVpYRjFhWEpsY3lCMGFHVWdabTl5YlNBaWJHOXZjQzFwYm1SbGVDc3JMQ0JzYjI5d0xXbHVaR1Y0TFMwc0lHeHZiM0F0YVc1a1pYZ2dLejBnWTI5dWMzUmhiblF0Wlhod2NtVnpjMmx2Yml3Z2IzSWdiRzl2Y0MxcGJtUmxlQ0F0UFNCamIyNXpkR0Z1ZEMxbGVIQnlaWE56YVc5dUlnQm5iRjlOWVhoVVpYaDBkWEpsUTI5dmNtUnpBR2RzWDFSbGVFTnZiM0prSUdGeWNtRjVJSE5wZW1VQVoyeGZUV0Y0UTJ4cGNFUnBjM1JoYm1ObGN3Qm5iRjlEYkdsd1JHbHpkR0Z1WTJVZ1lYSnlZWGtnYzJsNlpRQm5iRjlOWVhoRGRXeHNSR2x6ZEdGdVkyVnpBR2RzWDBOMWJHeEVhWE4wWVc1alpTQmhjbkpoZVNCemFYcGxBR2RzWDBOc2FYQkVhWE4wWVc1alpWQmxjbFpwWlhkT1ZnQm5iRjlEYkdsd1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxZZ1lYSnlZWGtnYzJsNlpRQm5iRjlEZFd4c1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxZQVoyeGZRM1ZzYkVScGMzUmhibU5sVUdWeVZtbGxkMDVXSUdGeWNtRjVJSE5wZW1VQWJYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z2IzSWdaWEYxWVd3Z2RHOEFKWE1nS0NWa0tRQm5aVzl0WlhSeWVTQnphR0ZrWlhKekFIUmxjM05sYkd4aGRHbHZiaUJ6YUdGa1pYSnpBQUFBQUFQZ0FnRDB1UUlBWTI5dGNIVjBaU0J6YUdGa1pYSnpBRENnQWdCMFlYTnJJSE5vWVdSbGNuTUFiV1Z6YUNCemFHRmtaWEp6QUVkTVgwNVdYMmRsYjIxbGRISjVYM05vWVdSbGNsOXdZWE56ZEdoeWIzVm5hQUJ3WVdOclpXUUFjMmhoY21Wa0FITjBaRFF6TUFCelkyRnNZWElBSHVBQ0FITmpZV3hoY2lCaWJHOWpheUJzWVhsdmRYUUFhVzFoWjJVZ2JHOWhaQzF6ZEc5eVpTQm1iM0p0WVhRQVIweGZRVkpDWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxBR2x0WVdkbElHeHZZV1FnYzNSdmNtVUFjSFZ6YUY5amIyNXpkR0Z1ZEFCaWRXWm1aWEpmY21WbVpYSmxibU5sQUFBNTRBSUFjR0Z6YzNSb2NtOTFaMmdBL3JFQ0FHZGxiMjFsZEhKNUlITm9ZV1JsY2lCd1lYTnpkR2h5YjNWbmFBQndiMmx1ZEY5dGIyUmxBRzl5YVdkcGJsOTFjSEJsY2w5c1pXWjBBSEJwZUdWc1gyTmxiblJsY2w5cGJuUmxaMlZ5QUdWaGNteDVYMlp5WVdkdFpXNTBYM1JsYzNSekFIQnZjM1JmWkdWd2RHaGZZMjkyWlhKaFoyVUFBR1N6QWdDVjRBSUFjRzl6ZENCa1pYQjBhQ0JqYjNabGNtRm5aUUJIVEY5QlVrSmZjRzl6ZEY5a1pYQjBhRjlqYjNabGNtRm5aUUJrWlhCMGFDQnNZWGx2ZFhRZ2NYVmhiR2xtYVdWeUFHWnlZV2R0Wlc1MElITm9ZV1JsY2lCcGJuUmxjbXh2WTJzZ2JHRjViM1YwSUhGMVlXeHBabWxsY2dBQUFBQ0o0UUlBcXVFQ0FHSnNaVzVrWDNOMWNIQnZjblFBUjB4ZlMwaFNYMkpzWlc1a1gyVnhkV0YwYVc5dVgyRmtkbUZ1WTJWa0FIVnVhMjV2ZDI0Z1lteGxibVFnWlhGMVlYUnBiMjRBYjNabGNuSnBaR1ZmWTI5MlpYSmhaMlVBQUFCRzR3SUFjMkZ0Y0d4bElHMWhjMnNnYjNabGNuSnBaR1VnWTI5MlpYSmhaMlVBZG1sbGQzQnZjblJmY21Wc1lYUnBkbVVBYXVNQ0FIWnBaWGNnY0c5eWRDQmhjbkpoZVRJQWMyaGhaR1Z5Y21WamIzSmtibllBWkdWeWFYWmhkR2wyWlY5bmNtOTFjRjhBQUFDQTR3SUFZMjl0Y0hWMFpTQnphR0ZrWlhJZ1pHVnlhWFpoZEdsMlpYTUFaR1Z5YVhaaGRHbDJaVjluY205MWNGOXhkV0ZrYzI1MkFHUmxjbWwyWVhScGRtVmZaM0p2ZFhCZmJHbHVaV0Z5Ym5ZQWRXNXlaV052WjI1cGVtVmtJR3hoZVc5MWRDQnBaR1Z1ZEdsbWFXVnlMQ0J2Y2lCeGRXRnNhV1pwWlhJZ2NtVnhkV2x5WlhNZ1lYTnphV2R1YldWdWRDQW9aUzVuTGl3Z1ltbHVaR2x1WnlBOUlEUXBBR3hoZVc5MWRDMXBaQ0IyWVd4MVpRQnViMjR0YkdsMFpYSmhiQ0JzWVhsdmRYUXRhV1FnZG1Gc2RXVUFSMHhmUVZKQ1gyVnVhR0Z1WTJWa1gyeGhlVzkxZEhNQVkyRnVibTkwSUdKbElHNWxaMkYwYVhabEFFZE1YMEZTUWw5emFHRmtaWEpmWVhSdmJXbGpYMk52ZFc1MFpYSnpBQUFBQUFCanRRSUFqclVDQUc1bFpXUnpJR0VnYkdsMFpYSmhiQ0JwYm5SbFoyVnlBR0ZzYVdkdUFIVnVhV1p2Y20wZ1luVm1abVZ5TFcxbGJXSmxjaUJoYkdsbmJnQnRkWE4wSUdKbElHRWdjRzkzWlhJZ2IyWWdNZ0JzYjJOaGRHbHZiZ0JIVEY5QlVrSmZaWGh3YkdsamFYUmZZWFIwY21saVgyeHZZMkYwYVc5dUFHeHZZMkYwYVc5dUlHbHpJSFJ2YnlCc1lYSm5aUUJ6WlhRQWMyVjBJR2x6SUhSdmJ5QnNZWEpuWlFCa1pYTmpjbWx3ZEc5eUlITmxkQUJpYVc1a2FXNW5BR0pwYm1ScGJtY2dhWE1nZEc5dklHeGhjbWRsQUdOdmJuTjBZVzUwWDJsa0FITndaV05wWVd4cGVtRjBhVzl1TFdOdmJuTjBZVzUwSUdsa0lHbHpJSFJ2YnlCc1lYSm5aUUJ6Y0dWamFXRnNhWHBoZEdsdmJpMWpiMjV6ZEdGdWRDQnBaQ0JoYkhKbFlXUjVJSFZ6WldRQVkyOXRjRzl1Wlc1MEFHTnZiWEJ2Ym1WdWRDQnBjeUIwYjI4Z2JHRnlaMlVBZUdaaVh3QjBjbUZ1YzJadmNtMGdabVZsWkdKaFkyc2djWFZoYkdsbWFXVnlBR0oxWm1abGNpQnBjeUIwYjI4Z2JHRnlaMlU2QUdkc1gwMWhlRlJ5WVc1elptOXliVVpsWldSaVlXTnJRblZtWm1WeWN5QnBjeUFsWkFCcGJuUmxjbTVoYkNCdFlYZ2dhWE1nSldRQWVHWmlYMjltWm5ObGRBQnZabVp6WlhRZ2FYTWdkRzl2SUd4aGNtZGxPZ0I0Wm1KZmMzUnlhV1JsQURFdk5DQnpkSEpwWkdVZ2FYTWdkRzl2SUd4aGNtZGxPZ0JuYkY5TllYaFVjbUZ1YzJadmNtMUdaV1ZrWW1GamEwbHVkR1Z5YkdWaGRtVmtRMjl0Y0c5dVpXNTBjeUJwY3lBbFpBQnpkSEpwWkdVZ2FYTWdkRzl2SUd4aGNtZGxPZ0JwYm5CMWRGOWhkSFJoWTJodFpXNTBYMmx1WkdWNEFHRjBkR0ZqYUcxbGJuUWdhVzVrWlhnZ2FYTWdkRzl2SUd4aGNtZGxBRzUxYlY5MmFXVjNjd0FBQUtIakFnQ3k0d0lBYzJWamIyNWtZWEo1WDNacFpYZGZiMlptYzJWMEFBQUF4T01DQUhOMFpYSmxieUIyYVdWM0lISmxibVJsY21sdVp3QmlkV1ptWlhKZmNtVm1aWEpsYm1ObFgyRnNhV2R1QUcxMWMzUWdZbVVnWjNKbFlYUmxjaUIwYUdGdUlEQUFhVzUyYjJOaGRHbHZibk1BYlhWemRDQmlaU0JoZENCc1pXRnpkQ0F4QUhSdmJ5QnNZWEpuWlN3Z2JYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z1oyeGZUV0Y0UjJWdmJXVjBjbmxQZFhSd2RYUldaWEowYVdObGN3QnpkSEpsWVcwQWMyVnNaV04wYVc1bklHOTFkSEIxZENCemRISmxZVzBBYVc1a1pYZ0FhVzVrWlhnZ2JHRjViM1YwSUhGMVlXeHBabWxsY2lCdmJpQm1jbUZuYldWdWRDQnZkWFJ3ZFhRQWRtRnNkV1VnYlhWemRDQmlaU0F3SUc5eUlERUFkRzl2SUd4aGNtZGxMQ0J0ZFhOMElHSmxJR3hsYzNNZ2RHaGhiaUJuYkY5TllYaE5aWE5vVDNWMGNIVjBWbVZ5ZEdsalpYTk9WZ0IwYjI4Z2JHRnlaMlVzSUcxMWMzUWdZbVVnYkdWemN5QjBhR0Z1SUdkc1gwMWhlRTFsYzJoUGRYUndkWFJRY21sdGFYUnBkbVZ6VGxZQWJHOWpZV3hmYzJsNlpWOEFaMnhmVjI5eWEwZHliM1Z3VTJsNlpRQkhURjlCVWtKZlkyOXRjSFYwWlY5emFHRmtaWElBYkc5allXeGZjMmw2WlFCc2IyTmhiRjl6YVhwbFgzZ0FiRzlqWVd4ZmMybDZaVjk1QUd4dlkyRnNYM05wZW1WZmVnQnNiMk5oYkY5emFYcGxYM2hmYVdRQWJHOWpZV3hmYzJsNlpWOTVYMmxrQUd4dlkyRnNYM05wZW1WZmVsOXBaQUIwYUdWeVpTQnBjeUJ1YnlCemRXTm9JR3hoZVc5MWRDQnBaR1Z1ZEdsbWFXVnlJR1p2Y2lCMGFHbHpJSE4wWVdkbElIUmhhMmx1WnlCaGJpQmhjM05wWjI1bFpDQjJZV3gxWlFCallXNGdiMjVzZVNCaVpTQjFjMlZrSUc5dUlIWmhjbWxoWW14bElHUmxZMnhoY21GMGFXOXVBRk5RU1ZJdFZpQnlaWEYxYVhKbGN5QnNiMk5oZEdsdmJpQm1iM0lnZFhObGNpQnBibkIxZEM5dmRYUndkWFFBWTJGdWJtOTBJSE53WldOcFpua2diV0YwY21sNElHeGhlVzkxZENCdmJpQmhJSFpoY21saFlteGxJR1JsWTJ4aGNtRjBhVzl1QUd4aGVXOTFkQUJqWVc1dWIzUWdjM0JsWTJsbWVTQndZV05yYVc1bklHOXVJR0VnZG1GeWFXRmliR1VnWkdWamJHRnlZWFJwYjI0QVkyRnVibTkwSUhOd1pXTnBabmtnYjI0Z1lTQjJZWEpwWVdKc1pTQmtaV05zWVhKaGRHbHZiZ0JqWVc0Z2IyNXNlU0J6Y0dWamFXWjVJRzl1SUdFZ2RXNXBabTl5YlNCaWJHOWphd0JqWVc0Z2IyNXNlU0J6Y0dWamFXWjVJRzl1SUdFZ1luVm1abVZ5SUdKc2IyTnJBSE5vWVdSbGNsSmxZMjl5WkU1V0FHTmhibTV2ZENCMWMyVWdhVzRnWVNCaWJHOWpheUJoY25KaGVTQjNhR1Z5WlNCdVpYY2diRzlqWVhScGIyNXpJR0Z5WlNCdVpXVmtaV1FnWm05eUlHVmhZMmdnWW14dlkyc2daV3hsYldWdWRBQjBiMjhnYkdGeVoyVWdabTl5SUdaeVlXZHRaVzUwSUc5MWRIQjFkQUIwZVhCbElHOTJaWEptYkc5M2N5QjBhR1VnWVhaaGFXeGhZbXhsSURRZ1kyOXRjRzl1Wlc1MGN3QmpZVzV1YjNRZ1lYQndiSGtnZEc4Z1lTQnRZWFJ5YVhnc0lITjBjblZqZEhWeVpTd2diM0lnWW14dlkyc0FaRzkxWW14bGN5QmpZVzV1YjNRZ2MzUmhjblFnYjI0Z1lXNGdiMlJrTFc1MWJXSmxjbVZrSUdOdmJYQnZibVZ1ZEFCc2IyTmhkR2x2YmlCeGRXRnNhV1pwWlhJZ2IyNGdhVzR2YjNWMElHSnNiMk5yQUdOaGJtNXZkQ0JoY0hCc2VTQjBieUIwWVhOclRsWWdhVzR2YjNWMElHSnNiMk5yY3dCallXNXViM1FnWVhCd2JIa2dkRzhnZFc1cFptOXliU0J2Y2lCaWRXWm1aWElnWW14dlkyc0FZMkZ1SUc5dWJIa2dZWEJ3YkhrZ2RHOGdkVzVwWm05eWJTd2dZblZtWm1WeUxDQnBiaXdnYjNJZ2IzVjBJSE4wYjNKaFoyVWdjWFZoYkdsbWFXVnljd0J2ZG1WeWJHRndjR2x1WnlCMWMyVWdiMllnYkc5allYUnBiMjRBWm5KaFoyMWxiblFnYjNWMGNIVjBjeUJ6YUdGeWFXNW5JSFJvWlNCellXMWxJR3h2WTJGMGFXOXVJRzExYzNRZ1ltVWdkR2hsSUhOaGJXVWdZbUZ6YVdNZ2RIbHdaUUJ2ZG1WeWJHRndjR2x1WnlCdlptWnpaWFJ6SUdGMEFHOW1abk5sZENBbFpDQnBiaUJpZFdabVpYSWdKV1FBZEhsd1pTQmpiMjUwWVdsdWN5QmtiM1ZpYkdVZ2IzSWdOalF0WW1sMElHbHVkR1ZuWlhJN0lIaG1ZbDl2Wm1aelpYUWdiWFZ6ZENCaVpTQmhJRzExYkhScGNHeGxJRzltSURnQWJYVnpkQ0JpWlNCaElHMTFiSFJwY0d4bElHOW1JSE5wZW1VZ2IyWWdabWx5YzNRZ1kyOXRjRzl1Wlc1MEFIUjVjR1VnWTI5dWRHRnBibk1nYUdGc1ppQm1iRzloZENCdmNpQXhOaTFpYVhRZ2FXNTBaV2RsY2pzZ2VHWmlYMjltWm5ObGRDQnRkWE4wSUdKbElHRWdiWFZzZEdsd2JHVWdiMllnTWdCaGJHd2djM1J5YVdSbElITmxkSFJwYm1keklHMTFjM1FnYldGMFkyZ2dabTl5SUhobVlpQmlkV1ptWlhJQWNtVnhkV2x5WlhNZ1lteHZZMnNzSUc5eUlITmhiWEJzWlhJdmFXMWhaMlVzSUc5eUlHRjBiMjFwWXkxamIzVnVkR1Z5SUhSNWNHVUFZWE56ZFcxcGJtY2dZbWx1WkdsdVp5QmpiM1Z1ZENCdlppQnZibVVnWm05eUlHTnZiWEJwYkdVdGRHbHRaU0JqYUdWamEybHVaeUJ2WmlCaWFXNWthVzVuSUc1MWJXSmxjbk1nWm05eUlIVnVjMmw2WldRZ1lYSnlZWGtBYzJGdGNHeGxjaUJpYVc1a2FXNW5JRzV2ZENCc1pYTnpJSFJvWVc0Z1oyeGZUV0Y0UTI5dFltbHVaV1JVWlhoMGRYSmxTVzFoWjJWVmJtbDBjd0FvZFhOcGJtY2dZWEp5WVhrcEFHRjBiMjFwWTE5MWFXNTBJR0pwYm1ScGJtY2dhWE1nZEc5dklHeGhjbWRsT3lCelpXVWdaMnhmVFdGNFFYUnZiV2xqUTI5MWJuUmxja0pwYm1ScGJtZHpBR3hoZVc5MWRDaGlhVzVrYVc1blBWZ3BJR2x6SUhKbGNYVnBjbVZrQUhWdWFXWnZjbTB2WW5WbVptVnlJR0pzYjJOcmN5QnlaWEYxYVhKbElHeGhlVzkxZENoaWFXNWthVzVuUFZncEFITmhiWEJzWlhJdmRHVjRkSFZ5WlM5cGJXRm5aU0J5WlhGMWFYSmxjeUJzWVhsdmRYUW9ZbWx1WkdsdVp6MVlLUUJIWlc1bGNtRjBhVzVuSUZOUVNWSXRWaUJoY25KaGVTMXZaaTFoY25KaGVYTXNJR0oxZENCV2RXeHJZVzRnYjI1c2VTQnpkWEJ3YjNKMGN5QnphVzVuYkdVZ1lYSnlZWGtnYkdWMlpXd2dabTl5SUhSb2FYTWdjbVZ6YjNWeVkyVUFXMTFiWFFCdmJteDVJR0Z3Y0d4cFpYTWdkRzhnWW14dlkyc2diV1Z0WW1WeWN5d2dibTkwSUdKc2IyTnJjd0J2Ym14NUlHRndjR3g1SUhSdklHbHRZV2RsY3dCa2IyVnpJRzV2ZENCaGNIQnNlU0IwYnlCbWJHOWhkR2x1WnlCd2IybHVkQ0JwYldGblpYTUFaRzlsY3lCdWIzUWdZWEJ3YkhrZ2RHOGdjMmxuYm1Wa0lHbHVkR1ZuWlhJZ2FXMWhaMlZ6QUdSdlpYTWdibTkwSUdGd2NHeDVJSFJ2SUhWdWMybG5ibVZrSUdsdWRHVm5aWElnYVcxaFoyVnpBR1p2Y20xaGRDQnlaWEYxYVhKbGN5QnlaV0ZrYjI1c2VTQnZjaUIzY21sMFpXOXViSGtnYldWdGIzSjVJSEYxWVd4cFptbGxjZ0JwYldGblpTQjJZWEpwWVdKc1pYTWdibTkwSUdSbFkyeGhjbVZrSUNkM2NtbDBaVzl1YkhrbklHRnVaQ0IzYVhSb2IzVjBJR0VnWm05eWJXRjBJR3hoZVc5MWRDQnhkV0ZzYVdacFpYSUFSMHhmUlZoVVgzTm9ZV1JsY2w5cGJXRm5aVjlzYjJGa1gyWnZjbTFoZEhSbFpBQmpZVzRnYjI1c2VTQmlaU0IxYzJWa0lIZHBkR2dnWVNCaWJHOWphd0J5WlhGMWFYSmxjeUJoYmlCcGJuQjFkRjloZEhSaFkyaHRaVzUwWDJsdVpHVjRJR3hoZVc5MWRDQnhkV0ZzYVdacFpYSUFjM1ZpY0dGemN3QmpZVzRnYjI1c2VTQmlaU0IxYzJWa0lIZHBkR2dnWVNCemRXSndZWE56QUdOaGJpQnZibXg1SUdKbElHRndjR3hwWldRZ2RHOGdKMk52Ym5OMEp5MXhkV0ZzYVdacFpXUWdjMk5oYkdGeUFHTmhiaUJ2Ym14NUlHSmxJR0Z3Y0d4cFpXUWdkRzhnWVNCelkyRnNZWElBWTJGdWJtOTBJR0psSUdGd2NHeHBaV1FnZEc4Z2RHaHBjeUIwZVhCbEFHTmhibTV2ZENCaGNIQnNlU0JzWVhsdmRYUWdjWFZoYkdsbWFXVnljeUIwYnlCaElITm9ZWEpsWkNCMllYSnBZV0pzWlFCdGRYTjBJSE53WldOcFpua2dKMnh2WTJGMGFXOXVKeUIwYnlCMWMyVWdKMk52YlhCdmJtVnVkQ2NBYkc5allYUnBiMjRnY1hWaGJHbG1hV1Z5SUc5dUlHbHVjSFYwQUd4dlkyRjBhVzl1SUhGMVlXeHBabWxsY2lCdmJpQnZkWFJ3ZFhRQUFBQUFBQUIwb2dJQUVMWUNBR3h2WTJGMGFXOXVJSEYxWVd4cFptbGxjaUJ2YmlCMWJtbG1iM0p0SUc5eUlHSjFabVpsY2dCSFRGOUJVa0pmWlhod2JHbGphWFJmZFc1cFptOXliVjlzYjJOaGRHbHZiZ0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJRzl1SUdGdUlHOTFkSEIxZEFCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dZVzRnWlhod2JHbGphWFFnYkc5allYUnBiMjRBY21WeGRXbHlaWE1nZFc1cFptOXliU0J2Y2lCaWRXWm1aWElnYzNSdmNtRm5aU0J4ZFdGc2FXWnBaWElBZUdaaUlHeGhlVzkxZENCeGRXRnNhV1pwWlhJQWJXRjBjbWw0SUc5eUlIQmhZMnRwYm1jZ2NYVmhiR2xtYVdWeWN5QmpZVzRnYjI1c2VTQmlaU0IxYzJWa0lHOXVJR0VnZFc1cFptOXliU0J2Y2lCaWRXWm1aWElBYjJabWMyVjBMMkZzYVdkdUlHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2IyNGdZU0IxYm1sbWIzSnRJRzl5SUdKMVptWmxjZ0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJSGRwZEdnZ1lTQjFibWxtYjNKdEFHTmhibTV2ZENCaVpTQjFjMlZrSUhkcGRHZ2djSFZ6YUY5amIyNXpkR0Z1ZEFCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dZblZtWm1WeUFHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2QybDBhQ0JoSUdKMVptWmxjZ0JqWVc1dWIzUWdZbVVnZFhObFpDQjNhWFJvSUhOb1lXUmxjbEpsWTI5eVpFNVdBR05oYm01dmRDQmhjSEJzZVNCc1lYbHZkWFFnY1hWaGJHbG1hV1Z5Y3lCMGJ5Qm9hWFJCZEhSeWFXSjFkR1ZPVmlCMllYSnBZV0pzWlFCb2FYUkJkSFJ5YVdKMWRHVk9WZ0JqWVc0Z2IyNXNlU0JoY0hCc2VTQjBieUJoSUhOMFlXNWtZV3h2Ym1VZ2NYVmhiR2xtYVdWeUFHeHZZMkZzWDNOcGVtVWdhV1FBWVhSdmJXbGpJR052ZFc1MFpYSnpJRzltWm5ObGRDQnphRzkxYkdRZ1lXeHBaMjRnWW1GelpXUWdiMjRnTkRvQVlYSnlZWGtnYlhWemRDQmlaU0JsZUhCc2FXTnBkR3g1SUhOcGVtVmtBR0YwYjIxcFl5QmpiM1Z1ZEdWeWN5QnphR0Z5YVc1bklIUm9aU0J6WVcxbElHOW1abk5sZERvQVkyRnVKM1FnZFhObElHWjFibU4wYVc5dUlITjViblJoZUNCdmJpQjJZWEpwWVdKc1pRQkhURjlGV0ZSZmMyaGhaR1Z5WDJWNGNHeHBZMmwwWDJGeWFYUm9iV1YwYVdOZmRIbHdaWE1BUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgybHVkRGdBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgybHVkREUyQUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOXBiblF6TWdCSFRGOUZXRlJmYzJoaFpHVnlYMlY0Y0d4cFkybDBYMkZ5YVhSb2JXVjBhV05mZEhsd1pYTmZhVzUwTmpRQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMlpzYjJGME1UWUFSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6WDJac2IyRjBNeklBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgyWnNiMkYwTmpRQVIweGZRVkpDWDJkd2RWOXphR0ZrWlhKZlpuQTJOQUJ1YnlCdFlYUmphR2x1WnlCdmRtVnliRzloWkdWa0lHWjFibU4wYVc5dUlHWnZkVzVrQUdGdFltbG5kVzkxY3lCbWRXNWpkR2x2YmlCemFXZHVZWFIxY21VZ2JXRjBZMmc2SUcxMWJIUnBjR3hsSUhOcFoyNWhkSFZ5WlhNZ2JXRjBZMmdnZFc1a1pYSWdhVzF3YkdsamFYUWdkSGx3WlNCamIyNTJaWEp6YVc5dUFHRnRZbWxuZFc5MWN5QmlaWE4wSUdaMWJtTjBhVzl1SUhWdVpHVnlJR2x0Y0d4cFkybDBJSFI1Y0dVZ1kyOXVkbVZ5YzJsdmJnQmhkRzl0YVdOZmRXbHVkQ0JpYVc1a2FXNW5JR2x6SUhSdmJ5QnNZWEpuWlFCMWMyVnNaWE56SUdGd2NHeHBZMkYwYVc5dUlHOW1JR3hoZVc5MWRDQnhkV0ZzYVdacFpYSUFaWGh3WldOMFpXUWdabTkxY2lCMGVYQmxJSEJoY21GdFpYUmxjbk1BWlhod1pXTjBaV1FnTVRZc0lETXlMQ0J2Y2lBMk5DQmlhWFJ6SUdadmNpQm1hWEp6ZENCMGVYQmxJSEJoY21GdFpYUmxjZ0JsZUhCbFkzUmxaQ0E0SUc5eUlETXlJR0pwZEhNZ1ptOXlJR1pwY25OMElIUjVjR1VnY0dGeVlXMWxkR1Z5QUhWdVpYaHdaV04wWldRZ2RIbHdaU0J3WVhKaGJXVjBaWEp6QUdsdWFYUnBZV3hwZW1WeUFIWmhjbWxoWW14bGN5QjNhWFJvSUhKbFptVnlaVzVqWlNCMGVYQmxJR05oYmlkMElHaGhkbVVnY1hWaGJHbG1hV1Z5SUNkamIyNXpkQ2NBY1hWaGJHbG1hV1Z5QUVOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxjeUJ0ZFhOMElHNXZkQ0JpWlNCMWMyVmtJR2x1SUhOb1lYSmxaQ0J0WlcxdmNua0FZMkZ1SUc5dWJIa2dZWEJ3YkhrZ2IzSnBaMmx1WDNWd2NHVnlYMnhsWm5RZ1lXNWtJSEJwZUdWc1gyTmxiblJsY2w5dmNtbG5hVzRnZEc4Z1oyeGZSbkpoWjBOdmIzSmtBR3hoZVc5MWRDQnhkV0ZzYVdacFpYSUFZMkZ1SUc5dWJIa2dZWEJ3YkhrZ1pHVndkR2dnYkdGNWIzVjBJSFJ2SUdkc1gwWnlZV2RFWlhCMGFBQmpZVzV1YjNRZ1kyaGhibWRsSUhSb1pTQjBlWEJsSUc5bUFHbHVhWFJwWVd4cGVtVnlJSEpsY1hWcGNtVnpJR0VnZG1GeWFXRmliR1VzSUc1dmRDQmhJRzFsYldKbGNnQWdZMkZ1Ym05MElHbHVhWFJwWVd4cGVtVWdkR2hwY3lCMGVYQmxJRzltSUhGMVlXeHBabWxsY2lBQVlYSnlZWGtnYVc1cGRHbGhiR2w2WlhJQWRXNXBabTl5YlNCcGJtbDBhV0ZzYVhwbGNuTWdiWFZ6ZENCaVpTQmpiMjV6ZEdGdWRBQTlBQ2NsY3ljQVoyeHZZbUZzSUdOdmJuTjBJR2x1YVhScFlXeHBlbVZ5Y3lCdGRYTjBJR0psSUdOdmJuTjBZVzUwQUc1dmJpMWpiMjV6ZEdGdWRDQnBibWwwYVdGc2FYcGxjZ0J1YjI0dFkyOXVjM1JoYm5RZ1oyeHZZbUZzSUdsdWFYUnBZV3hwZW1WeUlDaHVaV1ZrY3lCSFRGOUZXRlJmYzJoaFpHVnlYMjV2Ymw5amIyNXpkR0Z1ZEY5bmJHOWlZV3hmYVc1cGRHbGhiR2w2WlhKektRQkhURjlGV0ZSZmMyaGhaR1Z5WDI1dmJsOWpiMjV6ZEdGdWRGOW5iRzlpWVd4ZmFXNXBkR2xoYkdsNlpYSnpBRzV2YmkxdFlYUmphR2x1WnlCdmNpQnViMjR0WTI5dWRtVnlkR2xpYkdVZ1kyOXVjM1JoYm5RZ2RIbHdaU0JtYjNJZ1kyOXVjM1FnYVc1cGRHbGhiR2w2WlhJQWQzSnZibWNnYm5WdFltVnlJRzltSUhOMGNuVmpkSFZ5WlNCdFpXMWlaWEp6QUdsdWFYUnBZV3hwZW1WeUlHeHBjM1FBZDNKdmJtY2diblZ0WW1WeUlHOW1JRzFoZEhKcGVDQmpiMngxYlc1ek9nQjNjbTl1WnlCMlpXTjBiM0lnYzJsNlpTQW9iM0lnY205M2N5QnBiaUJoSUcxaGRISnBlQ0JqYjJ4MWJXNHBPZ0IxYm1WNGNHVmpkR1ZrSUdsdWFYUnBZV3hwZW1WeUxXeHBjM1FnZEhsd1pUb0FBQURnNHdJQWNtVm1aWEpsYm1ObElHTnZiblpsY25OcGIyNGdkRzhnZFhabFl6SUFkWFpsWXpJZ1kyOXVkbVZ5YzJsdmJpQjBieUJ5WldabGNtVnVZMlVBZFc1emRYQndiM0owWldRZ1kyOXVjM1J5ZFdOMGFXOXVBR05oYmlkMElHTnZiblpsY25RQVkyRnVibTkwSUdOdmJuWmxjblFnY0dGeVlXMWxkR1Z5SUNWa0lHWnliMjBnSnlWekp5QjBieUFuSlhNbkFHRnljbUY1TFc5bUxXRnljbUY1SUc5bUlHSnNiMk5yQUcxbGJXSmxjaUJ6ZEc5eVlXZGxJSEYxWVd4cFptbGxjaUJqWVc1dWIzUWdZMjl1ZEhKaFpHbGpkQ0JpYkc5amF5QnpkRzl5WVdkbElIRjFZV3hwWm1sbGNnQnRaVzFpWlhJZ2IyWWdkVzVwWm05eWJTQnZjaUJpZFdabVpYSWdZbXh2WTJzZ1kyRnVibTkwSUdoaGRtVWdZVzRnWVhWNGFXeHBZWEo1SUc5eUlHbHVkR1Z5Y0c5c1lYUnBiMjRnY1hWaGJHbG1hV1Z5QUc5bVpuTmxkQ0J2YmlCaWJHOWpheUJ0WlcxaVpYSUFiV1Z0WW1WeUlHOW1JR0pzYjJOcklHTmhibTV2ZENCaVpTQnZjaUJqYjI1MFlXbHVJR0VnYzJGdGNHeGxjaXdnYVcxaFoyVXNJRzl5SUdGMGIyMXBZMTkxYVc1MElIUjVjR1VBYldWdFltVnlJRzltSUdKc2IyTnJJR05oYm01dmRDQmlaU0J2Y2lCamIyNTBZV2x1SUdFZ1kyOXZjR1Z5WVhScGRtVWdiV0YwY21sNElIUjVjR1VBWTJGdUlHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lITjBaREUwTUN3Z2MzUmtORE13TENCdmNpQnpZMkZzWVhJZ2JHRjViM1YwSUhCaFkydHBibWNBYldWdFltVnlJR05oYm01dmRDQmpiMjUwY21Ga2FXTjBJR0pzYjJOckFHMWxiV0psY2lCdlppQmliRzlqYXlCallXNXViM1FnYUdGMlpTQmhJSEJoWTJ0cGJtY2diR0Y1YjNWMElIRjFZV3hwWm1sbGNnQnNiMk5oZEdsdmJpQnZiaUJpYkc5amF5QnRaVzFpWlhJQVkyRnVJRzl1YkhrZ2RYTmxJR2x1SUdGdUlHbHVMMjkxZENCaWJHOWphd0J2Wm1aelpYUXZZV3hwWjI0QVlteHZZMnNnYm1GdFpTQmpZVzV1YjNRZ1ltVWdjbVZrWldacGJtVmtBRU5oYm01dmRDQnlaWFZ6WlNCaWJHOWpheUJ1WVcxbElIZHBkR2hwYmlCMGFHVWdjMkZ0WlNCcGJuUmxjbVpoWTJVNkFHSnNiMk5ySUc1aGJXVWdZMkZ1Ym05MElISmxaR1ZtYVc1bElHRWdibTl1TFdKc2IyTnJJRzVoYldVQWJtRnRaV3hsYzNNZ1lteHZZMnNnWTI5dWRHRnBibk1nWVNCdFpXMWlaWElnZEdoaGRDQmhiSEpsWVdSNUlHaGhjeUJoSUc1aGJXVWdZWFFnWjJ4dlltRnNJSE5qYjNCbEFHSnNiMk5ySUdsdWMzUmhibU5sSUc1aGJXVWdjbVZrWldacGJtbDBhVzl1QUhWdWFXWnZjbTBnWW14dlkyc0FSMHhmUVZKQ1gzVnVhV1p2Y20xZlluVm1abVZ5WDI5aWFtVmpkQUJ6ZEdRME16QWdjbVZ4ZFdseVpYTWdkR2hsSUdKMVptWmxjaUJ6ZEc5eVlXZGxJSEYxWVd4cFptbGxjZ0JpZFdabVpYSWdZbXh2WTJzQWFXNXdkWFFnWW14dlkyc0FabkpoWjIxbGJuUWdhVzV3ZFhRZ1lteHZZMnNBYVc1d2RYUWdZbXh2WTJ0eklHTmhibTV2ZENCaVpTQjFjMlZrSUdsdUlHRWdiV1Z6YUNCemFHRmtaWElBYjNWMGNIVjBJR0pzYjJOckFIWmxjblJsZUNCdmRYUndkWFFnWW14dlkyc0FZMkZ1SUc5dWJIa2dkWE5sSUc5dUlHbHVjSFYwSUdKc2IyTnJjeUJwYmlCdFpYTm9JSE5vWVdSbGNnQnZkWFJ3ZFhRZ1lteHZZMnR6SUdOaGJtNXZkQ0JpWlNCMWMyVmtJR2x1SUdFZ2RHRnpheUJ6YUdGa1pYSUFSMHhmVGxaZmNtRjVYM1J5WVdOcGJtY0FjbUY1VUdGNWJHOWhaRTVXSUdKc2IyTnJBSEpoZVZCaGVXeHZZV1JKYms1V0lHSnNiMk5yQUdocGRFRjBkSEpwWW5WMFpVNVdJR0pzYjJOckFHTmhiR3hoWW14bFJHRjBZVTVXSUdKc2IyTnJBR05oYkd4aFlteGxSR0YwWVVsdVRsWWdZbXh2WTJzQWIyNXNlU0IxYm1sbWIzSnRMQ0JpZFdabVpYSXNJR2x1TENCdmNpQnZkWFFnWW14dlkydHpJR0Z5WlNCemRYQndiM0owWldRQVkyRnVibTkwSUhWelpTQnBiblJsY25CdmJHRjBhVzl1SUhGMVlXeHBabWxsY25NZ2IyNGdZVzRnYVc1MFpYSm1ZV05sSUdKc2IyTnJBR05oYm01dmRDQjFjMlVnWTJWdWRISnZhV1FnY1hWaGJHbG1hV1Z5SUc5dUlHRnVJR2x1ZEdWeVptRmpaU0JpYkc5amF3QmpaVzUwY205cFpBQmpZVzV1YjNRZ2RYTmxJSE5oYlhCc1pTQnhkV0ZzYVdacFpYSWdiMjRnWVc0Z2FXNTBaWEptWVdObElHSnNiMk5yQUhOaGJYQnNaUUJqWVc1dWIzUWdkWE5sSUdsdWRtRnlhV0Z1ZENCeGRXRnNhV1pwWlhJZ2IyNGdZVzRnYVc1MFpYSm1ZV05sSUdKc2IyTnJBR2x1ZG1GeWFXRnVkQUJsYVhSb1pYSWdkR2hsSUdKc2IyTnJJRzVsWldSeklHRWdiRzlqWVhScGIyNHNJRzl5SUdGc2JDQnRaVzFpWlhKeklHNWxaV1FnWVNCc2IyTmhkR2x2Yml3Z2IzSWdibThnYldWdFltVnljeUJvWVhabElHRWdiRzlqWVhScGIyNEFZMkZ1Ym05MElHRndjR3g1SUhSdklHRWdZbXh2WTJzQWJYVnpkQ0JpWlNCaElHMTFiSFJwY0d4bElHOW1JSFJvWlNCdFpXMWlaWEluY3lCaGJHbG5ibTFsYm5RQVkyRnVibTkwSUd4cFpTQnBiaUJ3Y21WMmFXOTFjeUJ0WlcxaVpYSnpBR2xrWlc1MGFXWnBaWElnYm05MElIQnlaWFpwYjNWemJIa2daR1ZqYkdGeVpXUUFZMkZ1Ym05MElISmxMWEYxWVd4cFpua2dZU0JtZFc1amRHbHZiaUJ1WVcxbEFHTmhibTV2ZENCaFpHUWdjM1J2Y21GblpTd2dZWFY0YVd4cFlYSjVMQ0J0WlcxdmNua3NJR2x1ZEdWeWNHOXNZWFJwYjI0c0lHeGhlVzkxZEN3Z2IzSWdjSEpsWTJsemFXOXVJSEYxWVd4cFptbGxjaUIwYnlCaGJpQmxlR2x6ZEdsdVp5QjJZWEpwWVdKc1pRQmpZVzV1YjNRZ1kyaGhibWRsSUhGMVlXeHBabWxqWVhScGIyNGdZV1owWlhJZ2RYTmxBSFZ1YTI1dmQyNGdjbVZ4ZFdGc2FXWnBZMkYwYVc5dUFHTmhiaUJ2Ym14NUlHRndjR3g1SUhSdklHRnVJRzkxZEhCMWRBQmpZVzRnYjI1c2VTQmhjSEJzZVNCMGJ5QmhiaUJ2ZFhSd2RYUXNJRzl5SUhSdklHRnVJR2x1Y0hWMElHbHVJR0VnYm05dUxYWmxjblJsZUNCemRHRm5aUW9BWTJGdUlHOXViSGtnWVhCd2JIa2dkRzhnSjI5MWRDY0FZMkZ1Ym05MElHTm9ZVzVuWlNCd2NtVjJhVzkxYzJ4NUlITmxkQ0JzWVhsdmRYUWdkbUZzZFdVQVkyRnVJRzl1YkhrZ1lYQndiSGtnZEc4Z0oybHVKd0JqWVc1dWIzUWdZWEJ3YkhrZ2RHOGdhVzV3ZFhRQVkyRnVibTkwSUdOb1lXNW5aU0J3Y21WMmFXOTFjMng1SUhObGRDQnBibkIxZENCd2NtbHRhWFJwZG1VQVkyRnVibTkwSUdGd2NHeDVJSFJ2SUNkdmRYUW5BR05oYm01dmRDQmphR0Z1WjJVZ2NISmxkbWx2ZFhOc2VTQnpaWFFnYjNWMGNIVjBJSEJ5YVcxcGRHbDJaUUJqWVc1dWIzUWdZWEJ3YkhrZ2RHODZBR05oYm01dmRDQmphR0Z1WjJVZ2NISmxkbWx2ZFhOc2VTQnpaWFFnZG1WeWRHVjRJSE53WVdOcGJtY0FZMkZ1Ym05MElHTm9ZVzVuWlNCd2NtVjJhVzkxYzJ4NUlITmxkQ0IyWlhKMFpYZ2diM0prWlhJQVkyRnVibTkwSUdOb1lXNW5aU0J3Y21WMmFXOTFjMng1SUhObGRDQnphWHBsQUhSdmJ5QnNZWEpuWlRzZ2MyVmxJR2RzWDAxaGVFTnZiWEIxZEdWWGIzSnJSM0p2ZFhCVGFYcGxBSFJ2YnlCc1lYSm5aVHNnYzJWbElHZHNYMDFoZUUxbGMyaFhiM0pyUjNKdmRYQlRhWHBsVGxZQWRHOXZJR3hoY21kbE95QnpaV1VnWjJ4ZlRXRjRWR0Z6YTFkdmNtdEhjbTkxY0ZOcGVtVk9WZ0J3YjNOMFgyTnZkbVZ5WVdkbFgyTnZkbVZ5WVdkbEFHTmhibTV2ZENCamFHRnVaMlVnY0hKbGRtbHZkWE5zZVNCelpYUWdabkpoWjIxbGJuUWdjMmhoWkdWeUlHbHVkR1Z5Ykc5amF5QnZjbVJsY21sdVp3QmpZVzV1YjNRZ1ltVWdZbTkwYUNCemNHVmphV1pwWldRQVpHVnlhWFpoZEdsMlpWOW5jbTkxY0Y5eGRXRmtjMDVXSUdGdVpDQmtaWEpwZG1GMGFYWmxYMmR5YjNWd1gyeHBibVZoY2s1V0FISmxjWFZwY21WeklHeHZZMkZzWDNOcGVtVmZlQ0JoYm1RZ2JHOWpZV3hmYzJsNlpWOTVJSFJ2SUdKbElHMTFiSFJwY0d4bElHOW1JSFIzYndCa1pYSnBkbUYwYVhabFgyZHliM1Z3WDNGMVlXUnpUbFlBY21WeGRXbHlaWE1nZEc5MFlXd2daM0p2ZFhBZ2MybDZaU0IwYnlCaVpTQnRkV3gwYVhCc1pTQnZaaUJtYjNWeUFHUmxjbWwyWVhScGRtVmZaM0p2ZFhCZmJHbHVaV0Z5VGxZQVkyRnVibTkwSUhWelpTQmhkWGhwYkdsaGNua3NJRzFsYlc5eWVTd2dhVzUwWlhKd2IyeGhkR2x2Yml3Z2IzSWdjSEpsWTJsemFXOXVJSEYxWVd4cFptbGxjaUJwYmlCaElHUmxabUYxYkhRZ2NYVmhiR2xtYVdWeUlHUmxZMnhoY21GMGFXOXVJQ2hrWldOc1lYSmhkR2x2YmlCM2FYUm9JRzV2SUhSNWNHVXBBR05oYm01dmRDQjFjMlVnYjJabWMyVjBJRzl5SUdGc2FXZHVJSEYxWVd4cFptbGxjbk1nYVc0Z1lTQmtaV1poZFd4MElIRjFZV3hwWm1sbGNpQmtaV05zWVhKaGRHbHZiaUFvWkdWamJHRnlZWFJwYjI0Z2QybDBhQ0J1YnlCMGVYQmxLUUJrWldaaGRXeDBJSEYxWVd4cFptbGxjaUJ5WlhGMWFYSmxjeUFuZFc1cFptOXliU2NzSUNkaWRXWm1aWEluTENBbmFXNG5MQ0J2Y2lBbmIzVjBKeUJ6ZEc5eVlXZGxJSEYxWVd4cFptbGpZWFJwYjI0QVkyRnVibTkwSUdSbFkyeGhjbVVnWVNCa1pXWmhkV3gwTENCcGJtTnNkV1JsSUdFZ2RIbHdaU0J2Y2lCbWRXeHNJR1JsWTJ4aGNtRjBhVzl1QUdOaGJtNXZkQ0JrWldOc1lYSmxJR0VnWkdWbVlYVnNkQ3dnZFhObElHRWdablZzYkNCa1pXTnNZWEpoZEdsdmJnQnNiMk5oZEdsdmJpOWpiMjF3YjI1bGJuUXZhVzVrWlhnQVkyRnVibTkwSUdSbFkyeGhjbVVnWVNCa1pXWmhkV3gwTENCallXNGdiMjVzZVNCaVpTQjFjMlZrSUc5dUlHRWdZbXh2WTJzQVkyRnVibTkwSUdSbFkyeGhjbVVnWVNCa1pXWmhkV3gwTENCallXNGdiMjVzZVNCaVpTQjFjMlZrSUc5dUlHRWdjMk5oYkdGeUFHTmhibTV2ZENCb1lYWmxJSE4wWVhSbGJXVnVkSE1nWW1WbWIzSmxJR1pwY25OMElHTmhjMlV2WkdWbVlYVnNkQ0JzWVdKbGJBQnpkMmwwWTJnQVpIVndiR2xqWVhSbElHeGhZbVZzQUdSbFptRjFiSFFBWkhWd2JHbGpZWFJsWkNCMllXeDFaUUJqWVhObEFITjNhWFJqYUNCemRHRjBaVzFsYm5SekFHTnZibVJwZEdsdmJpQnRkWE4wSUdKbElHRWdjMk5oYkdGeUlHbHVkR1ZuWlhJZ1pYaHdjbVZ6YzJsdmJnQnNZWE4wSUdOaGMyVXZaR1ZtWVhWc2RDQnNZV0psYkNCdWIzUWdabTlzYkc5M1pXUWdZbmtnYzNSaGRHVnRaVzUwY3dBNk9nQkJxTGtMQzlVTzhRQUFBUElBQUFCMWMyVXRjM1J2Y21GblpTMWlkV1ptWlhJQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUIxYzJVdGRuVnNhMkZ1TFcxbGJXOXllUzF0YjJSbGJBQjFjMlV0ZG1GeWFXRmliR1V0Y0c5cGJuUmxjbk1BUjB4ZlJWaFVYMkoxWm1abGNsOXlaV1psY21WdVkyVXlBRWRNWDBWWVZGOW5jSFZmYzJoaFpHVnlOUUJIVEY5UFJWTmZaM0IxWDNOb1lXUmxjalVBY0c5cGJuUnpBR3hwYm1WekFHeHBibVZ6WDJGa2FtRmpaVzVqZVFCc2FXNWxYM04wY21sd0FIUnlhV0Z1WjJ4bGN3QjBjbWxoYm1kc1pYTmZZV1JxWVdObGJtTjVBSFJ5YVdGdVoyeGxYM04wY21sd0FIRjFZV1J6QUdsemIyeHBibVZ6QUc1dmJtVUFSMHhmUVUxRVgzUmxlSFIxY21WZloyRjBhR1Z5WDJKcFlYTmZiRzlrQUVkTVgwRlNRbDl6Y0dGeWMyVmZkR1Y0ZEhWeVpUSUFSMHhmUzBoU1gyMWxiVzl5ZVY5elkyOXdaVjl6WlcxaGJuUnBZM01BUjB4ZlJWaFVYM05oYlhCc1pYSnNaWE56WDNSbGVIUjFjbVZmWm5WdVkzUnBiMjV6QUVkTVgwVllWRjl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZaWGgwWlc1a1pXUmZkSGx3WlhOZmFXNTBPQUJIVEY5RldGUmZjMmhoWkdWeVgzTjFZbWR5YjNWd1gyVjRkR1Z1WkdWa1gzUjVjR1Z6WDJsdWRERTJBRWRNWDBWWVZGOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZlpYaDBaVzVrWldSZmRIbHdaWE5mYVc1ME5qUUFSMHhmUlZoVVgzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5bGVIUmxibVJsWkY5MGVYQmxjMTltYkc5aGRERTJBRWRNWDA5RlUxOUZSMHhmYVcxaFoyVmZaWGgwWlhKdVlXd0FSMHhmVDBWVFgwVkhURjlwYldGblpWOWxlSFJsY201aGJGOWxjM05zTXdCSFRGOUZXRlJmV1ZWV1gzUmhjbWRsZEFCSFRGOUZXRlJmWjJWdmJXVjBjbmxmYzJoaFpHVnlBRWRNWDA5RlUxOW5aVzl0WlhSeWVWOXphR0ZrWlhJQVIweGZSVmhVWDNSbGMzTmxiR3hoZEdsdmJsOXphR0ZrWlhJQVIweGZUMFZUWDNSbGMzTmxiR3hoZEdsdmJsOXphR0ZrWlhJQVIweGZSVmhVWDI1dmJuVnVhV1p2Y20xZmNYVmhiR2xtYVdWeUFFZE1YMFZZVkY5emFHRmtaWEpmYVc5ZllteHZZMnR6QUVkTVgwOUZVMTl6YUdGa1pYSmZhVzlmWW14dlkydHpBRWRNWDBGU1FsOTBaWE56Wld4c1lYUnBiMjVmYzJoaFpHVnlBRWRNWDBWWVZGOXpZMkZzWVhKZllteHZZMnRmYkdGNWIzVjBBRWRNWDBWWVZGOWlkV1ptWlhKZmNtVm1aWEpsYm1ObEFHVnhkV0ZzWDNOd1lXTnBibWNBWm5KaFkzUnBiMjVoYkY5bGRtVnVYM053WVdOcGJtY0FabkpoWTNScGIyNWhiRjl2WkdSZmMzQmhZMmx1WndCamR3QmpZM2NBUjB4ZlJWaFVYM0J2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVBWkdWd2RHaGZZVzU1QUdSbGNIUm9YMmR5WldGMFpYSUFaR1Z3ZEdoZmJHVnpjd0JrWlhCMGFGOTFibU5vWVc1blpXUUFjR2w0Wld4ZmFXNTBaWEpzYjJOclgyOXlaR1Z5WldRQWNHbDRaV3hmYVc1MFpYSnNiMk5yWDNWdWIzSmtaWEpsWkFCellXMXdiR1ZmYVc1MFpYSnNiMk5yWDI5eVpHVnlaV1FBYzJGdGNHeGxYMmx1ZEdWeWJHOWphMTkxYm05eVpHVnlaV1FBYzJoaFpHbHVaMTl5WVhSbFgybHVkR1Z5Ykc5amExOXZjbVJsY21Wa0FITm9ZV1JwYm1kZmNtRjBaVjlwYm5SbGNteHZZMnRmZFc1dmNtUmxjbVZrQUVkTVgwRlNRbDltY21GbmJXVnVkRjl6YUdGa1pYSmZhVzUwWlhKc2IyTnJBRWRNWDA1V1gzTm9ZV1JwYm1kZmNtRjBaVjlwYldGblpRQmliR1Z1WkY5emRYQndiM0owWDIxMWJIUnBjR3g1QUdKc1pXNWtYM04xY0hCdmNuUmZjMk55WldWdUFHSnNaVzVrWDNOMWNIQnZjblJmYjNabGNteGhlUUJpYkdWdVpGOXpkWEJ3YjNKMFgyUmhjbXRsYmdCaWJHVnVaRjl6ZFhCd2IzSjBYMnhwWjJoMFpXNEFZbXhsYm1SZmMzVndjRzl5ZEY5amIyeHZjbVJ2WkdkbEFHSnNaVzVrWDNOMWNIQnZjblJmWTI5c2IzSmlkWEp1QUdKc1pXNWtYM04xY0hCdmNuUmZhR0Z5Wkd4cFoyaDBBR0pzWlc1a1gzTjFjSEJ2Y25SZmMyOW1kR3hwWjJoMEFHSnNaVzVrWDNOMWNIQnZjblJmWkdsbVptVnlaVzVqWlFCaWJHVnVaRjl6ZFhCd2IzSjBYMlY0WTJ4MWMybHZiZ0JpYkdWdVpGOXpkWEJ3YjNKMFgyaHpiRjlvZFdVQVlteGxibVJmYzNWd2NHOXlkRjlvYzJ4ZmMyRjBkWEpoZEdsdmJnQmliR1Z1WkY5emRYQndiM0owWDJoemJGOWpiMnh2Y2dCaWJHVnVaRjl6ZFhCd2IzSjBYMmh6YkY5c2RXMXBibTl6YVhSNUFHSnNaVzVrWDNOMWNIQnZjblJmWVd4c1gyVnhkV0YwYVc5dWN3QkhURjlPVmw5ellXMXdiR1ZmYldGemExOXZkbVZ5Y21sa1pWOWpiM1psY21GblpRQkhURjlPVmw5MmFXVjNjRzl5ZEY5aGNuSmhlVElBUjB4ZlRsWmZZMjl0Y0hWMFpWOXphR0ZrWlhKZlpHVnlhWFpoZEdsMlpYTUFSMHhmVDFaU1gyMTFiSFJwZG1sbGR3QkhURjlQVmxKZmJYVnNkR2wyYVdWM01nQkhURjlPVmw5emRHVnlaVzlmZG1sbGQxOXlaVzVrWlhKcGJtY0FSMHhmUlZoVVgySjFabVpsY2w5eVpXWmxjbVZ1WTJWZmRYWmxZeklBUWNESUN3dkJBUUVBQUFBQ0FBQUFCQUFBQUFBQUFBQURBQUFBQmdBQUFIVGRBZ0I3M1FJQWdkMENBSkhkQWdDYzNRSUFwdDBDQUxyZEFnREozUUlBejkwQ0FGSGdBZ0JmNEFJQWQrQUNBTERnQWdDNjRBSUF5T0FDQU5QZ0FnRGo0QUlBKytBQ0FCWGhBZ0F1NFFJQVNlRUNBR2poQWdERDRRSUEydUVDQU8vaEFnQUY0Z0lBR3VJQ0FERGlBZ0JKNGdJQVllSUNBSG5pQWdDUjRnSUFxdUlDQU1MaUFnRFk0Z0lBOWVJQ0FBM2pBZ0FxNHdJQWdRQUFBQUFBQUFCM0FBQUFKZ0FBQUM0QVFaREtDd3NWVmdBQUFJVUFBQUFBQUFBQWV3QUFBQ29BQUFBeEFFR3d5Z3NMR1ZJQUFBQlVBQUFBZndBQUFBQUFBQUIxQUFBQUFBQUFBQ3dBUWRUS0N3c1ZUUUFBQUZRQUFBQ0RBQUFBQUFBQUFIa0FBQUFvQUVINHlnc0xFVkFBQUFCWUFBQUFmUUFBQURRQUFBQTNBRUdVeXdzTENWd0FBQUJmQUFBQWh3QkJxTXNMQ3dVekFBQUFOZ0JCdU1zTEM1ME1Xd0FBQUY0QUFBQlRkR0Z5ZEdsdVp5QndZWEp6WlFvQVJXNTBaWEpwYm1jZ2MzUmhkR1VnSldRS0FGTjBZV05ySUhOcGVtVWdhVzVqY21WaGMyVmtJSFJ2SUNWc2RRb0FtZzg3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9tRUFPLzQ3L2p2K08vNDcvZ1lBTy80Ny9qditPLzQ3L2p2K3pmNFAvenYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNzkvMThBSkFCOUFKSVhVZ0E3L3VyL08vNDcvanYrTy80eUVUditPLzQ3L2p2K2d3QTcvanYrMmdJNy9qditDd0E3L3BrQTVQOS9BRHYrQndBNy9wMEFPLzZTRnp2K08vNDcvcElYZ1FDR0FEditEUUE3L2trQU8vNDcvc2Nnb2dBNy9qditPLzZoQUpJWE8vNmpBRHYreS80Ny9qditHd0N2R2p2K0VBQnlCRHYrTy80Ny9qditvZ0FYQUR2K05Sd3hBRHYraWdBNy9sY0F4eURISU1jZ08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNUVBRHYrTy80Ny9xNEFQQUJOSXJBQU8vN0hJRHYrTy83QS9xOEFPLzZTRjQ0QXloSTcvcElYeHlBNy91VC9PLzZQQUR2K08vNTNBSUFBSUFBVkFDWUFuZ0NnQUtVQXd3RENBQklBdHdDN0hUdit1UUM0QUR2K08vNjhBTFFBdFFBNy9zUUF4UUMrQUVFZnhnREhJTHNBd1FCNkFEditPLzViQUR2K1h3RE1BTTBBTy80Ny9qditPLzQ3L2dvR08vNDcvanYrTy80Ny9qditPLzQ3L2p2K24vNnZBRFVjUlFBMUhEditPLzQxSEpJWE8vNnFBRHYrTy80Ny9rNEFPLzQ3L3NjZ3F3QTcvanYreHlEUEFEditPLzQ3L3NjZ08vNk9BS0lBWFFBNy9qditPLzVpRkR2K08vNDcvanYreHlESElNY2d4eURISU1jZ3h5REhJTWNneHlESElNY2d4eURISU1jZ3h5REhJTWNneHlBNy9qditPLzdPQUxFQU8vNmlCenYrTy80Ny9xSUhPLzdISUR2K08vNWtBTWNna0FBNy9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L3NjZ3h5QTcvanYrTy80Ny9qditPLzQ3L2pVY08vNk1BRHYrK2hVNy9qdiswUURRQUR2K08vNDcvbnNBcndDT0FEditPLzQ3L2p2K08vNTNBSGNBZ0FDQUFDQUFJQUFnQUNBQUZRQVZBQ1lBbmdDZ0FLVUF3d0RDQU1jZ08vN1dBRGdBTy82aUJ3SU9yQUJxREZBQU8vNVJBRHYrTy80Ny9qditPLzRwR1R2K08vNDcvanYra2dESElOY0FzUURVQU5BQXVnQ1NGOXNBM1FBNy9qditBZzdjQUR2K08vNDcvc2NnM2dBNy9qditPLzdZQURvSnh5QTcvdGtBNHdDMkFPRUEwZ283L3VVQU8vNDcvalVjTy80Ny9qditXUURISURvSjNBQTcvanYrb2djNy91QUEwQUE3L2p2K29nZmlBRHYrTy81U1pXRmthVzVuSUdFZ2RHOXJaVzQ2SUFCT2IzY2dZWFFnWlc1a0lHOW1JR2x1Y0hWMExnb0FRZUxYQ3d2RENnSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFFQUFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFEMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRWpBU1FCSlFFbUFTY0JLQUVwQVNvQkt3RXNBUzBCTGdFdkFUQUJNUUV5QVRNQk5BRTFBVFlCTndFNEFUa0JPZ0U3QVR3QlBRRStBVDhCUUFGQkFVSUJRd0ZFQVVVQlJnRkhBVWdCU1FGS0FVc0JUQUZOQVU0QlR3RlFBVkVCVWdGVEFWUUJWUUZXQVZjQldBRlpBVm9CV3dGY0FWMEJYZ0ZmQVdBQllRRmlBV01CWkFGbEFXWUJad0ZvQVdrQmFnRnJBV3dCYlFGdUFXOEJjQUZ4QVhJQmN3RjBBWFVCZGdGM0FYZ0JlUUY2QVhzQmZBRjlBWDRCZndHQUFZRUJnZ0dEQVlRQmhRR0dBWWNCaUFHSkFZb0Jpd0dNQVkwQmpnR1BBWkFCa1FHU0FaTUJsQUdWQVpZQmx3R1lBWmtCbWdFbGN5QUFUbVY0ZENCMGIydGxiaUJwY3dCQnN1SUxDN0tTQVVFQkFBREhBUUFBWmdFN0FUb0JhUUVBQUdzQmJBRkJBVTBCYndFRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFEc0FQQUFNQWpvQlB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUdJQVl3QmtBR1VBWmdCbkFHZ0FhUUJxQUdzQWJBQnRBRzRBYndCd0FIRUFjZ0J6QUhRQWRRQjJBSGNBZUFCNUFIb0Fld0I4QUgwQWZnQi9BSUFBZ1FDQ0FJTUFoQUNGQUlZQWh3Q0lBSWtBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2FBSnNBbkFDZEFKNEFud0NnQUtFQW9nQ2pBS1FBcFFDbUFLY0FxQUNwQUtvQXF3Q3NBSzBBcmdDdkFMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0F1Z0M3QUx3QXZRQytBTDhBd0FEQkFNSUF3d0RFQU1VQXhnREhBTWdBeVFES0FNc0F6QUROQU00QXp3RFFBTkVBMGdEVEFOUUExUURXQU5jQTJBRFpBTm9BMndEY0FOMEEzZ0RmQU9BQTRRRGlBT01BNUFEbEFPWUE1d0RvQU9rQTZnRHJBT3dBN1FEdUFPOEE4QUR4QVBJQTh3RDBBUFVBOWdEM0FQZ0ErUUQ2QVBzQS9BRDlBUDRBL3dBQUFRRUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTUJGQUVWQVJZQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4QklBRWhBU0lCSXdFa0FWVUJYUUdnQVhvQitnRUdBcGdCQ0FLTkFZQUJDd0pFQXNVQmtBSXBBU29CTGdGRUFWNEJQQUUrQVNVQkpnRTZBVjRCUEFGMkFVUUJQQUZ5QVpVQmxnRkRBU3NCTEFFOEFVUUJWUUU3QVhNQnVnR3NBa01CWGdGQkFWMEJWUUU3QVlVQlRBRk5BVkVCWGdGbEFWMEJaUUZvQVdVQlh3RW5BU2dCUEFGbEFXUUJaUUczQW5JQnlBRkRBVDBCZGdFN0FiNENRUUhvQVhJQjZnRkJBVG9CZGdFOEFUd0JTQUxKQWtBQmhRSGJBVDRCUXdFN0FVRUJPd0U3QVVRQmhRRkJBWkFCUVFGQkFVRUJPd0ZtQWtRQnd3RkJBWkFCUVFGRUFVRUJKZ0pCQVVRQnhRRkVBY2NCUkFFR0FrRUJDQUlWQWtRQkN3SXdBVEVCTWdFekFUUUJOUUUyQVRjQk9BRTVBVk1CVkFGVkFSa0NNZ0l6QWpRQ05RSkJBVU1CUVFGRUFVa0JTZ0ZMQWNNQnpRTEZBVVlCeHdGSUFZOENtd0kvQWNNQlFRSEZBVXdCeHdGQkFVSUJRUUZDQVM0Q0x3SStBVEFDTVFJaEFqNEJTZ0plQVR3QlhnRk9BbW9DTmdJM0FsNEJSQUZEQVF3Q1hnRTdBVG9CUEFGZUFWNEJVQUZQQVMwQkx3SERBazRCUFFFOEFUb0JQd0ZFQVVRQitnRmRBbDRDUWdFNkFUb0JPZ0VtQWtRQitnRm1Ba1FCT2dFNkFWNEJYZ0U3QVQwQkRBTFRBajBCWGdFNkFVRUJaZ0UvQVQwQkRBSTdBVG9CWGdFN0FUNEJRd0dLQWtRQk93RStBV29CUHdHUUFqNEJSQUU0QWlZQ09RSThBam9Db1FJN0Fzb0JLQUU5QWlZQ2RBSnlBWklDZGdFZ0FyMENkZ0hKQW5BQm13TEtBcElDckFJRUFxd0NCQUtqQWdRQy8vLy8vMFFDYWdMLy8vLy9TQUpsQWJnQy8vK2hBa1FDLy8reEF2Ly9TQUwvLy8vLy8vLy8vLy8vLy8vLy8vLy95QUwvLy8vLy8vLy8vLy8vLy8vREF2Ly8vLy8vLy8vLy8vLy8vLy8vLy85cUFwQUMvLy8vLy8vLy8vLy8vLy8vLy85cUF2Ly8vLy8vLy8vLy8vLy8vLy8vcHdMLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9yQUwvLy8vLy8vLy8vLy8vLy8vLy80OENrQUwvLzVJQy8vLy8vLy8vLy8vLy80OENrQUwvLzVJQy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vNmNDLy8vLy8vLy8vLytzQXYvLy8vLy8vNmNDLy8vLy8vLy8vLytzQXYvL3R3TC8vLy8vLy8vLy8vLy8vLysrQXYvL3R3TC8vLy8vLy8vLy8vLy8vLysrQXYvL3lRTC8vLy8vLy8vTkF2Ly8vLy8vLy8vL3lRTFRBdi8vLy8vTkF2Ly8vLy8vL3dBQS8vL1RBZ01BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzBRQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQVZZQi8vLy8vLy8vLy8vLy8vLy8vLy8vLzE4QllBRmhBV0lCWXdGa0FXVUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2NnRnpBWFFCZFFGMkFYY0IvLy8vLy8vLy8vLy8vLy8vLy8vLy80QUIvLytDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vL0p3RW9BZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vODZBZi8vUEFILy96NEJQd0gvLy8vLy8vLy8vMFFCUlFGR0FVY0JTQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBVllCLy8vLy8vLy9XZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQlpnRm5BV2dCYVFILy8yc0JiQUZ0QVc0QmJ3RndBWEVCY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQmdRR0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVNNQkpBSC8vLy8vSndFb0FmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84NkFmLy9QQUgvL3o0QlB3SC8vLy8vLy8vLy8wUUJSUUZHQVVjQlNBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOVNBVk1CVkFGVkFWWUIvLy8vLy8vL1dnRmJBVndCWFFGZUFWOEJZQUZoQVdJQll3RmtBV1VCWmdGbkFXZ0JhUUgvLzJzQmJBRnRBVzRCYndGd0FYRUJjZ0Z6QVhRQmRRRjJBWGNCZUFGNUFYb0Jld0Y4QVgwQmZnRi9BWUFCZ1FHQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBUU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy9Kd0VvQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzg2QWYvL1BBSC8vejRCLy8vLy8vLy8vLy8vLzBRQlJRRkdBVWNCU0FILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQVZZQi8vLy8vLy8vV2dGYkFWd0JYUUZlQVY4QllBRmhBV0lCWXdGa0FXVUJaZ0ZuQVdnQmFRSC8vMnNCYkFGdEFXNEJid0Z3QVhFQmNnRnpBWFFCZFFGMkFYY0JlQUY1QVhvQmV3RjhBWDBCZmdGL0FZQUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vL0p3RW9BZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vODZBZi8vUEFILy96NEIvLy8vLy8vLy8vLy8vMFFCUlFGR0FVY0JTQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBVllCLy8vLy8vLy9XZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQlpnRm5BV2dCYVFILy8yc0JiQUZ0QVc0QmJ3RndBWEVCY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQmdRR0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVNNQkpBSC8vLy8vSndFb0FmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84NkFmLy9QQUgvLy8vLy8vLy8vLy8vLy8vLy8wUUJSUUZHQVVjQlNBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOVNBVk1CVkFGVkFWWUIvLy8vLy8vL1dnRmJBVndCWFFGZUFWOEJZQUZoQVdJQll3RmtBV1VCWmdGbkFXZ0JhUUgvLzJzQmJBRnRBVzRCYndGd0FYRUJjZ0Z6QVhRQmRRRjJBWGNCZUFGNUFYb0Jld0Y4QVgwQmZnRi9BWUFCZ1FHQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBUU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy9Kd0VvQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzg2QWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzBRQlJRRkdBVWNCU0FILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQVZZQi8vLy8vLy8vV2dGYkFWd0JYUUZlQVY4QllBRmhBV0lCWXdGa0FXVUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2NnRnpBWFFCZFFGMkFYY0JlQUY1QVhvQmV3RjhBWDBCZmdGL0FZQUIvLytDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vL0p3RW9BZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vODZBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vUlFGR0FVY0JTQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBZi8vLy8vLy8vLy9XZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQi8vK0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVNNQkpBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8wUUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOVNBVk1CVkFGVkFWWUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8xOEJZQUZoQVdJQll3RmtBV1VCLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9jZ0Z6QVhRQmRRRjJBWGNCLy8vLy8vLy8vLy8vLy8vLy8vLy8vNEFCLy8rQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBUU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzBRQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQWYvLy8vLy8vLy8vLy8vLy8vLy8vLzllQVY4QllBRmhBV0lCWXdGa0FXVUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2NnRnpBWFFCZFFGMkFYY0IvLy8vLy8vLy8vLy8vLy8vLy8vLy80QUIvLytDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9Qd0gvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMThCWUFGaEFXSUJZd0ZrQVdVQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vY2dGekFYUUJkUUYyQVhjQi8vLy8vLy8vLy8vLy8vLy8vLy8vLzRBQi8vK0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVNNQkpBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1B3SC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOVNBVk1CVkFGVkFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8xOEJZQUZoQVdJQll3RmtBV1VCLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9jZ0Z6QVhRQmRRRjJBWGNCLy8vLy8vLy8vLy8vLy8vLy8vLy8vNEFCLy8rQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBUU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vUHdILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzE4QllBRmhBV0lCWXdGa0FXVUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2NnRnpBWFFCZFFGMkFYY0IvLy8vLy8vLy8vLy8vLy8vLy8vLy80QUIvLytDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMThCWUFGaEFXSUJZd0ZrQVdVQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vY2dGekFYUUJkUUYyQVhjQi8vLy8vLy8vLy8vLy8vLy8vLy8vLzRBQi8vK0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFRQUJRQUdBQWNBQ0FBSkFBb0FDd0FNQUEwQURnQVBBQkFBRVFBU0FCTUFGQUFWQUJZQUZ3QVlBQmtBR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBUC8vLy84L0FFQUFRUUJDQUVNQVJBQkZBRVlBUndCSUFFa0FTZ0JMQUV3QVRRQk9BRThBVUFCUkFGSUFVd0JVQUZVQVZnQlhBRmdBV1FCYUFGc0FYQUJkQUY0QVh3QmdBR0VBWWdCakFHUUFaUUJtQUdjQWFBQnBBR29BYXdCc0FHMEFiZ0J2QUhBQWNRQnlBSE1BZEFCMUFIWUFkd0I0QUhrQWVnQjdBSHdBZlFCK0FIOEFnQUNCQUlJQWd3Q0VBSVVBaGdDSEFJZ0FpUUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKb0Ftd0NjQUowQW5nQ2ZBS0FBb1FDaUFLTUFwQUNsQUtZQXB3Q29BS2tBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzZBTHNBdkFDOUFMNEF2d0RBQU1FQXdnRERBTVFBeFFER0FNY0F5QURKQU1vQXl3RE1BTTBBemdEUEFOQUEwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dBNlFEcUFPc0E3QUR0QU80QTd3RHdBUEVBOGdEekFQUUE5UUQyQVBjQStBRDVBUG9BK3dEOEFQMEEvZ0QvQUFBQkFRRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV3RVVBUlVCRmdFWEFSZ0JHUUVhQVJzQkhBRWRBUjRCSHdFZ0FTRUJJZ0VqQVNRQi8vLy8veWNCS0FILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vT2dILy8vLy8vLzgrQVQ4Qi8vLy8vLy8vLy8vLy8wVUJSZ0ZIQVVnQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzFvQld3RmNBVjBCWGdGZkFmLy8vLy8vLy8vL1pBRmxBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vM2dCZVFGNkFYc0JmQUY5QVg0QmZ3SC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vK0pBUVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFQLy8vLzgvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRWpBU1FCLy8vLy95Y0JLQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9PZ0gvLy8vL1BRSC8vLy8vLy8vLy8vLy8vLy8vLzBVQlJnRkhBVWdCLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMW9CV3dGY0FWMEJYZ0ZmQWYvLy8vLy8vLy8vWkFGbEFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8zZ0JlUUY2QVhzQmZBRjlBWDRCZndILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rSkFRUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QVAvLy8vOC9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFakFTUUIvLy8vL3ljQktBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL09nSC8vLy8vLy84K0FmLy8vLy8vLy8vLy8vLy8vMFVCUmdGSEFVZ0IvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8xb0JXd0ZjQVYwQlhnRmZBZi8vLy8vLy8vLy9aQUZsQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzNnQmVRRjZBWHNCZkFGOUFYNEJmd0gvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLytKQVFRQUJRQUdBQWNBQ0FBSkFBb0FDd0FNQUEwQURnQVBBQkFBRVFBU0FCTUFGQUFWQUJZQUZ3QVlBQmtBR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBUC8vLy84L0FFQUFRUUJDQUVNQVJBQkZBRVlBUndCSUFFa0FTZ0JMQUV3QVRRQk9BRThBVUFCUkFGSUFVd0JVQUZVQVZnQlhBRmdBV1FCYUFGc0FYQUJkQUY0QVh3QmdBR0VBWWdCakFHUUFaUUJtQUdjQWFBQnBBR29BYXdCc0FHMEFiZ0J2QUhBQWNRQnlBSE1BZEFCMUFIWUFkd0I0QUhrQWVnQjdBSHdBZlFCK0FIOEFnQUNCQUlJQWd3Q0VBSVVBaGdDSEFJZ0FpUUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKb0Ftd0NjQUowQW5nQ2ZBS0FBb1FDaUFLTUFwQUNsQUtZQXB3Q29BS2tBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzZBTHNBdkFDOUFMNEF2d0RBQU1FQXdnRERBTVFBeFFER0FNY0F5QURKQU1vQXl3RE1BTTBBemdEUEFOQUEwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dBNlFEcUFPc0E3QUR0QU80QTd3RHdBUEVBOGdEekFQUUE5UUQyQVBjQStBRDVBUG9BK3dEOEFQMEEvZ0QvQUFBQkFRRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV3RVVBUlVCRmdFWEFSZ0JHUUVhQVJzQkhBRWRBUjRCSHdFZ0FTRUJJZ0VqQVNRQi8vLy8veWNCS0FILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vT2dILy8vLy9QUUgvLy8vLy8vLy8vLy8vLy8vLy8wVUJSZ0ZIQVVnQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzFvQld3RmNBVjBCWGdGZkFmLy8vLy8vLy8vL1pBRmxBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vM2dCZVFGNkFYc0JmQUY5QVg0QmZ3SC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vK0pBUVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFQLy8vLzgvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRWpBU1FCLy8vLy95Y0JLQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9PZ0gvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlFQVVVQlJnRkhBVWdCLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMW9CV3dGY0FWMEJYZ0ZmQWYvLy8vLy8vLy8vWkFGbEFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8zZ0JlUUY2QVhzQmZBRjlBWDRCZndILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rSkFRUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QVAvLy8vOC9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFakFTUUIvLy8vL3ljQktBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL09nSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMFVCUmdGSEFVZ0IvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8xb0JXd0ZjQVYwQlhnRmZBZi8vLy8vLy8vLy9aQUZsQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzNnQmVRRjZBWHNCZkFGOUFYNEJmd0gvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLytKQVFRQUJRQUdBQWNBQ0FBSkFBb0FDd0FNQUEwQURnQVBBQkFBRVFBU0FCTUFGQUFWQUJZQUZ3QVlBQmtBR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBUC8vLy84L0FFQUFRUUJDQUVNQVJBQkZBRVlBUndCSUFFa0FTZ0JMQUV3QVRRQk9BRThBVUFCUkFGSUFVd0JVQUZVQVZnQlhBRmdBV1FCYUFGc0FYQUJkQUY0QVh3QmdBR0VBWWdCakFHUUFaUUJtQUdjQWFBQnBBR29BYXdCc0FHMEFiZ0J2QUhBQWNRQnlBSE1BZEFCMUFIWUFkd0I0QUhrQWVnQjdBSHdBZlFCK0FIOEFnQUNCQUlJQWd3Q0VBSVVBaGdDSEFJZ0FpUUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKb0Ftd0NjQUowQW5nQ2ZBS0FBb1FDaUFLTUFwQUNsQUtZQXB3Q29BS2tBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzZBTHNBdkFDOUFMNEF2d0RBQU1FQXdnRERBTVFBeFFER0FNY0F5QURKQU1vQXl3RE1BTTBBemdEUEFOQUEwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dBNlFEcUFPc0E3QUR0QU80QTd3RHdBUEVBOGdEekFQUUE5UUQyQVBjQStBRDVBUG9BK3dEOEFQMEEvZ0QvQUFBQkFRRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV3RVVBUlVCRmdFWEFSZ0JHUUVhQVJzQkhBRWRBUjRCSHdFZ0FTRUJJZ0VqQVNRQi8vLy8veWNCS0FILy8zOEIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vK05BZi8vT2dILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8wVUJSZ0ZIQVVnQm5nR2ZBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzFvQld3RmNBVjBCWGdGZkFmLy8vLy8vLy8vL1pBRmxBZi8vLy8rOUFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy95QUgvLy8vLy8vLy8vM2dCZVFGNkFYc0JmQUY5QVg0QmZ3SC8vLy8vLy8vLy8vLy8vLy9iQWYvLy8vK0pBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veDRDLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9Ld0lzQWkwQ0xnSXZBakFDTVFJeUFqTUNOQUkxQWpZQ053STRBamtDT2dJN0Fqd0NQUUwvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLytoQWdCQjhQUU1DNlFKWVFFZUFsQUJKZ0pTQWVFQnlRRnJBZVFCWUFIbEFlWUJ5Z0VmQXVrQkFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BYWdKc0FUMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRjJBWDBCRWdLWkFXRUNaUUlKQW1jQzJnSEJBV2tDandJbEFxWUNNZ0l6QWowQ2JRR0hBWTBCYVFFd0FqRUNsd0Y2QVkwQmZRR09BZHNCZGdFRkFnY0NtQUUyQWpjQ2pRSGNBWGNCeXdHSUFSc0NwZ0lHQW00QnpBRitBV0FCY1FIREFUUUNOUUkrQW1vQllRRmdBVkFCaEFGU0FTa0JFd0lVQXRzQllBRXVBUzhCeEFKM0FTY0NDd0tpQW5jQkdBTE1BcU1DVFFKZ0FVOENHUUxlLzJBQkZRTGJBWkVDeEFJV0FzUUJRUUthQVdZQ2JBS2JBYTBDcmdLY0FXQUJYZ0wwQVY0Q1hnSjRBYzhDbVFKNUFYMEJEZ0x6QVY0Q0R3SmVBaVVDZEFKZkFzTUJkUUxEQVc4QkNRSmVBZ2tDYmdLVUFna0NVZ0pUQWxRQ1ZRSldBbGNDV0FKWkFsb0NXd0lsQVNZQkp3RndBbjRDZndLQUFvRUNkQUpjQW5JQm5nSXJBaXdDTFFJZ0F0TUN4QUV1QXNRQkx3SmhBckFDbWdKZ0Fac0NZQUYvQVdBQlhnS1dBbDRDc1FKNkFuc0NoZ0Y4QW4wQ2N3S1FBWk1DaXdHTkFaVUJsUUlsQW9JQ2d3S1dBY0lCeUFIREFRMENGd0ljQXRzQklRSXFBamdDT1FJN0Fqd0N6Z0k2QWo4Q1FnSkZBa01DUmdKSEF2UUJsd0tZQWxBQ1NRSktBazRDd3dGTEF2TUJDUUpSQXQzLzMvOXJBbThDNVArTEFzUUJZUUtkQW93Q29RSmVBcWtDdFFLekFtQUJ0d0s0QXJZQ3dnTHgvY01Db0FMSUFza0MzZ0hLQXRZQ3BRTE5BdFVDaEFMRUFZVUNpQUtHQXJJQ2h3SXBBbWdCaVFKZ0FaOENrZ0dxQXBNQmNnTExBcFFCMFFLUkFRa0MwZ0tyQXJrQ1lnS2xBbU1DdEFKa0FnQUFBQUQwQWNNQkFBQUFBUFFCZ3dISEFnQUFKd0x6QVFBQXdRSUFBUE1CQUVHay9nd0xBdEFDQUVHeS9nd0xBZ2tDQUVIRS9nd0xCTVFCcHdJQVFkYitEQXNDWUFFQVFlYitEQXNDZlFFQVFmNytEQXNDcHdJQVFZNy9EQXNJOUFIMEFRQUE5QUVBUWFEL0RBc0k4d0h6QVFBQTh3RUFRYjcvREFzQ2ZnRUFRY2ovREFzSzlBRUFBQUFBQUFCZ0FRQkIydjhNQ3diekFRQUE5QUVBUWV6L0RBc0c5QUVBQVBNQkFFSCsvd3dMRHZNQkFBRDBBUUFBQUFBQUFQUUJBRUdVZ0EwTDJnVHpBZlFCQUFBQUFQTUJBQUFBQUFBQWdnRUFBUE1CQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFRQkJySVVOQ3dJakFRQkJ5SVVOQ3dva0FTVUJKZ0VuQVNnQkFFSGloUTBMRGlrQktnRXJBU3dCTFFFdUFTOEJBRUdJaGcwTEREQUJNUUV5QVRNQk5BRTFBUUJCcElZTkM0SUZOZ0VBQURjQk9BRTVBVG9CT3dFOEFUMEJQZ0UvQVVBQlFRRkNBVU1CUkFGRkFVWUJSd0ZJQVVrQlNnRkxBVXdCVFFGT0FVOEJBUUFDQUFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVFBQUFBQ2VBWjhCQUVISWl3MExES0FCQUFEZEFRQUEzZ0hmQVFCQjNJc05Dd3JnQWFFQm9nR2pBYVFCQUVINGl3MEwzZ1VrQVNVQkpnRW5BU2dCQUFBQUFBQUFwUUdtQWFjQnFBR3BBU2tCS2dFckFTd0JMUUV1QVM4QjRRSGlBZU1CNUFFQUFPVUI1Z0huQWVnQjZRSHFBZXNCTUFFeEFUSUJNd0UwQVRVQnFnR3JBYXdCclFHdUFhOEJzQUd4QVRZQjdBRTNBVGdCT1FFNkFUc0JQQUU5QVQ0QlB3RkFBVUVCUWdGREFVUUJSUUZHQVVjQlNBRkpBVW9CU3dGTUFVMEJUZ0ZQQVFFQUFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFEMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRUFBQUFBbmdHZkFRQkIrSkVOQ3d5Z0FRQUEzUUVBQU40QllBSUFRWXlTRFFzSzRBR2hBYUlCb3dHa0FRQkJxSklOQzk0RkpBRWxBU1lCSndFb0FRQUFBQUFBQUtVQnBnR25BYWdCcVFFcEFTb0JLd0VzQVMwQkxnRXZBZUVCNGdIakFlUUJBQURsQWVZQjV3SG9BZWtCNmdIckFUQUJNUUV5QVRNQk5BRTFBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRRTJBZXdCTndFNEFUa0JPZ0U3QVR3QlBRRStBVDhCUUFGQkFVSUJRd0ZFQVVVQlJnRkhBVWdCU1FGS0FVc0JUQUZOQVU0QlR3RUJBQUlBQXdBRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFEc0FQQUE5QUQ0QVB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUdJQVl3QmtBR1VBWmdCbkFHZ0FhUUJxQUdzQWJBQnRBRzRBYndCd0FIRUFjZ0J6QUhRQWRRQjJBSGNBZUFCNUFIb0Fld0I4QUgwQWZnQi9BSUFBZ1FDQ0FJTUFoQUNGQUlZQWh3Q0lBSWtBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2FBSnNBbkFDZEFKNEFud0NnQUtFQW9nQ2pBS1FBcFFDbUFLY0FxQUNwQUtvQXF3Q3NBSzBBcmdDdkFMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0F1Z0M3QUx3QXZRQytBTDhBd0FEQkFNSUF3d0RFQU1VQXhnREhBTWdBeVFES0FNc0F6QUROQU00QXp3RFFBTkVBMGdEVEFOUUExUURXQU5jQTJBRFpBTm9BMndEY0FOMEEzZ0RmQU9BQTRRRGlBT01BNUFEbEFPWUE1d0RvQU9rQTZnRHJBT3dBN1FEdUFPOEE4QUR4QVBJQTh3RDBBUFVBOWdEM0FQZ0ErUUQ2QVBzQS9BRDlBUDRBL3dBQUFRRUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTUJGQUVWQVJZQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4QklBRWhBU0lCQUFBQUFKNEJud0VBUWFpWURRc0tvQUVBQU4wQkFBRGVBUUJCdkpnTkN3cmdBYUVCb2dHakFhUUJBRUhZbUEwTDNnVWtBU1VCSmdFbkFTZ0JBQUFBQUFBQXBRR21BYWNCcUFHcEFTa0JLZ0VyQVN3QkxRRXVBUzhCNFFIaUFlTUI1QUVBQU9VQjVnSG5BZWdCNlFIcUFlc0JNQUV4QVRJQk13RTBBVFVCcWdHckFhd0JyUUd1QWE4QnNBR3hBVFlCN0FFM0FUZ0JPUUU2QVRzQlBBRTlBVDRCUHdGQUFVRUJRZ0ZEQVVRQlJRRkdBVWNCU0FGSkFVb0JTd0ZNQVUwQlRnRlBBUUVBQWdBREFBUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQS9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFQUFBQUFuZ0dmQVFCQjJKNE5Dd3FnQVFBQTNRRUFBSkFCQUVIc25nMExDdUFCb1FHaUFhTUJwQUVBUVlpZkRRdmVCU1FCSlFFbUFTY0JLQUVBQUFBQUFBQ2xBYVlCcHdHb0Fha0JLUUVxQVNzQkxBRXRBUzRCTHdIaEFlSUI0d0hrQVFBQTVRSG1BZWNCNkFIcEFlb0I2d0V3QVRFQk1nRXpBVFFCTlFHcUFhc0JyQUd0QWE0QnJ3R3dBYkVCTmdIc0FUY0JPQUU1QVRvQk93RThBVDBCUGdFL0FVQUJRUUZDQVVNQlJBRkZBVVlCUndGSUFVa0JTZ0ZMQVV3QlRRRk9BVThCQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFRQUFBQUNlQVo4QkFFR0lwUTBMQnFBQkFBRGRBUUJCbktVTkN3cmdBYUVCb2dHakFhUUJBRUc0cFEwTDNnVWtBU1VCSmdFbkFTZ0JBQUFBQUFBQXBRR21BYWNCcUFHcEFTa0JLZ0VyQVN3QkxRRXVBUzhCNFFIaUFlTUI1QUVBQU9VQjVnSG5BZWdCNlFIcUFlc0JNQUV4QVRJQk13RTBBVFVCcWdHckFhd0JyUUd1QWE4QnNBR3hBVFlCN0FFM0FUZ0JPUUU2QVRzQlBBRTlBVDRCUHdGQUFVRUJRZ0ZEQVVRQlJRRkdBVWNCU0FGSkFVb0JTd0ZNQVUwQlRnRlBBUUVBQWdBREFBUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQS9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFQUFBQUFuZ0dmQVFCQnVLc05Dd0tnQVFCQnpLc05Dd3JnQWFFQm9nR2pBYVFCQUVIb3F3MExLQ1FCSlFFbUFTY0JLQUVBQUFBQUFBQ2xBYVlCcHdHb0Fha0JLUUVxQVNzQkxBRXRBUzRCTHdFQVFhaXNEUXVlQlRBQk1RRXlBVE1CTkFFMUFhb0Jxd0dzQWEwQnJnR3ZBYkFCc1FFMkFRQUFOd0U0QVRrQk9nRTdBVHdCUFFFK0FUOEJRQUZCQVVJQlF3RkVBVVVCUmdGSEFVZ0JTUUZLQVVzQlRBRk5BVTRCVHdFQkFBSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBRWdBVEFCUUFGUUFXQUJjQUdBQVpBQm9BR3dBY0FCMEFIZ0FmQUNBQUlRQWlBQ01BSkFBbEFDWUFKd0FvQUNrQUtnQXJBQ3dBTFFBdUFDOEFNQUF4QURJQU13QTBBRFVBTmdBM0FEZ0FPUUE2QURzQVBBQTlBRDRBUHdCQUFFRUFRZ0JEQUVRQVJRQkdBRWNBU0FCSkFFb0FTd0JNQUUwQVRnQlBBRkFBVVFCU0FGTUFWQUJWQUZZQVZ3QllBRmtBV2dCYkFGd0FYUUJlQUY4QVlBQmhBR0lBWXdCa0FHVUFaZ0JuQUdnQWFRQnFBR3NBYkFCdEFHNEFid0J3QUhFQWNnQnpBSFFBZFFCMkFIY0FlQUI1QUhvQWV3QjhBSDBBZmdCL0FJQUFnUUNDQUlNQWhBQ0ZBSVlBaHdDSUFJa0FpZ0NMQUl3QWpRQ09BSThBa0FDUkFKSUFrd0NVQUpVQWxnQ1hBSmdBbVFDYUFKc0FuQUNkQUo0QW53Q2dBS0VBb2dDakFLUUFwUUNtQUtjQXFBQ3BBS29BcXdDc0FLMEFyZ0N2QUxBQXNRQ3lBTE1BdEFDMUFMWUF0d0M0QUxrQXVnQzdBTHdBdlFDK0FMOEF3QURCQU1JQXd3REVBTVVBeGdESEFNZ0F5UURLQU1zQXpBRE5BTTRBendEUUFORUEwZ0RUQU5RQTFRRFdBTmNBMkFEWkFOb0Eyd0RjQU4wQTNnRGZBT0FBNFFEaUFPTUE1QURsQU9ZQTV3RG9BT2tBNmdEckFPd0E3UUR1QU84QThBRHhBUElBOHdEMEFQVUE5Z0QzQVBnQStRRDZBUHNBL0FEOUFQNEEvd0FBQVFFQkFnRURBUVFCQlFFR0FRY0JDQUVKQVFvQkN3RU1BUTBCRGdFUEFSQUJFUUVTQVJNQkZBRVZBUllCRndFWUFSa0JHZ0ViQVJ3QkhRRWVBUjhCSUFFaEFTSUJBQUFBQUo0Qm53RUFRZWl4RFFzQ29BRUFRZjZ4RFFzSW9RR2lBYU1CcEFFQVFaaXlEUXNJSkFFbEFTWUJKd0VBUWFpeURRc1lwUUdtQWFjQnFBR3BBU2tCS2dFckFTd0JMUUV1QVM4QkFFSFlzZzBMbGdVd0FURUJNZ0V6QVRRQk5RR3FBYXNCckFHdEFhNEJyd0d3QWJFQk5nRUFBRGNCT0FFNUFUb0JPd0U4QVQwQlBnRS9BVUFCUVFGQ0FVTUJSQUZGQVVZQlJ3RklBVWtCU2dGTEFVd0JUUUZPQVU4QkFRQUNBQU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBUUJCckxnTkN3SWpBUUJCeUxnTkN3b2tBU1VCSmdFbkFTZ0JBRUhpdUEwTERpa0JLZ0VyQVN3QkxRRXVBUzhCQUVHSXVRMExEREFCTVFFeUFUTUJOQUUxQVFCQnBMa05DL29FTmdFQUFEY0JPQUU1QVRvQk93RThBVDBCUGdFL0FVQUJRUUZDQVVNQlJBRkZBVVlCUndGSUFVa0JTZ0ZMQVV3QlRRRk9BVThCQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFRQkIzTDROQ3dKN0FRQkIrTDROQ3dna0FTVUJKZ0VuQVFCQmtMOE5DeEI4QVNrQktnRXJBU3dCTFFFdUFTOEJBRUc0dncwTEREQUJNUUV5QVRNQk5BRTFBUUJCMUw4TkMvb0VOZ0VBQURjQk9BRTVBVG9CT3dFOEFUMEJQZ0UvQVVBQlFRRkNBVU1CUkFGRkFVWUJSd0ZJQVVrQlNnRkxBVXdCVFFGT0FVOEJBUUFDQUFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVFCQmdzVU5Dd0lrQWdCQnFNVU5Dd2drQVNVQkpnRW5BUUJCd3NVTkN3NHBBU29CS3dFc0FTMEJMZ0V2QVFCQjZNVU5Dd3d3QVRFQk1nRXpBVFFCTlFFQVFZVEdEUXY2QkRZQkFBQTNBVGdCT1FFNkFUc0JQQUU5QVQ0QlB3RkFBVUVCUWdGREFVUUJSUUZHQVVjQlNBRkpBVW9CU3dGTUFVMEJUZ0ZQQVFFQUFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFEMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRUFRYkxMRFFzQ2RnSUFRZGpMRFFzSUpBRWxBU1lCSndFQVFmTExEUXNPS1FFcUFTc0JMQUV0QVM0Qkx3RUFRWmpNRFFzTU1BRXhBVElCTXdFMEFUVUJBRUcwekEwTCtnUTJBUUFBTndFNEFUa0JPZ0U3QVR3QlBRRStBVDhCUUFGQkFVSUJRd0ZFQVVVQlJnRkhBVWdCU1FGS0FVc0JUQUZOQVU0QlR3RUJBQUlBQXdBRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFEc0FQQUE5QUQ0QVB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUdJQVl3QmtBR1VBWmdCbkFHZ0FhUUJxQUdzQWJBQnRBRzRBYndCd0FIRUFjZ0J6QUhRQWRRQjJBSGNBZUFCNUFIb0Fld0I4QUgwQWZnQi9BSUFBZ1FDQ0FJTUFoQUNGQUlZQWh3Q0lBSWtBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2FBSnNBbkFDZEFKNEFud0NnQUtFQW9nQ2pBS1FBcFFDbUFLY0FxQUNwQUtvQXF3Q3NBSzBBcmdDdkFMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0F1Z0M3QUx3QXZRQytBTDhBd0FEQkFNSUF3d0RFQU1VQXhnREhBTWdBeVFES0FNc0F6QUROQU00QXp3RFFBTkVBMGdEVEFOUUExUURXQU5jQTJBRFpBTm9BMndEY0FOMEEzZ0RmQU9BQTRRRGlBT01BNUFEbEFPWUE1d0RvQU9rQTZnRHJBT3dBN1FEdUFPOEE4QUR4QVBJQTh3RDBBUFVBOWdEM0FQZ0ErUUQ2QVBzQS9BRDlBUDRBL3dBQUFRRUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTUJGQUVWQVJZQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4QklBRWhBU0lCQUVIaTBRMExBcHdDQUVHSTBnMExDQ1FCSlFFbUFTY0JBRUdpMGcwTERpa0JLZ0VyQVN3QkxRRXVBUzhCQUVISTBnMExEREFCTVFFeUFUTUJOQUUxQVFCQjVOSU5DL29FTmdFQUFEY0JPQUU1QVRvQk93RThBVDBCUGdFL0FVQUJRUUZDQVVNQlJBRkZBVVlCUndGSUFVa0JTZ0ZMQVV3QlRRRk9BVThCQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFRQkJ1TmdOQ3dna0FTVUJKZ0VuQVFCQjB0Z05DdzRwQVNvQkt3RXNBUzBCTGdFdkFRQkIrTmdOQ3d3d0FURUJNZ0V6QVRRQk5RRUFRWlRaRFF1QUJUWUJBQUEzQVRnQk9RRTZBVHNCUEFFOUFUNEJQd0ZBQVVFQlFnRkRBVVFCUlFGR0FVY0JTQUZKQVVvQlN3Rk1BVTBCVGdGUEFRSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBRWdBVEFCUUFGUUFXQUJjQUdBQVpBQm9BR3dBY0FCMEFIZ0FmQUNBQUlRQWlBQ01BSkFBbEFDWUFKd0FvQUNrQUtnQXJBQ3dBTFFBdUFDOEFNQUF4QURJQU13QTBBRFVBTmdBM0FEZ0FPUUE2QUFBQUFBQTlBRDRBUHdCQUFFRUFRZ0JEQUVRQVJRQkdBRWNBU0FCSkFFb0FTd0JNQUUwQVRnQlBBRkFBVVFCU0FGTUFWQUJWQUZZQVZ3QllBRmtBV2dCYkFGd0FYUUJlQUY4QVlBQmhBR0lBWXdCa0FHVUFaZ0JuQUdnQWFRQnFBR3NBYkFCdEFHNEFid0J3QUhFQWNnQnpBSFFBZFFCMkFIY0FlQUI1QUhvQWV3QjhBSDBBZmdCL0FJQUFnUUNDQUlNQWhBQ0ZBSVlBaHdDSUFJa0FpZ0NMQUl3QWpRQ09BSThBa0FDUkFKSUFrd0NVQUpVQWxnQ1hBSmdBbVFDYUFKc0FuQUNkQUo0QW53Q2dBS0VBb2dDakFLUUFwUUNtQUtjQXFBQ3BBS29BcXdDc0FLMEFyZ0N2QUxBQXNRQ3lBTE1BdEFDMUFMWUF0d0M0QUxrQXVnQzdBTHdBdlFDK0FMOEF3QURCQU1JQXd3REVBTVVBeGdESEFNZ0F5UURLQU1zQXpBRE5BTTRBendEUUFORUEwZ0RUQU5RQTFRRFdBTmNBMkFEWkFOb0Eyd0RjQU4wQTNnRGZBT0FBNFFEaUFPTUE1QURsQU9ZQTV3RG9BT2tBNmdEckFPd0E3UUR1QU84QThBRHhBUElBOHdEMEFQVUE5Z0QzQVBnQStRRDZBUHNBL0FEOUFQNEEvd0FBQVFFQkFnRURBUVFCQlFFR0FRY0JDQUVKQVFvQkN3RU1BUTBCRGdFUEFSQUJFUUVTQVJNQkZBRVZBUllCRndFWUFSa0JHZ0ViQVJ3QkhRRWVBUjhCSUFFaEFTSUJBQUFBQUo0Qm53RUFRYmJlRFFzTW9BRUFBQUFBQUFBSUFxOENBRUhNM2cwTENLRUJvZ0dqQWFRQkFFSDIzZzBMREtVQnBnR25BYWdCcVFFcEFRQkJpdDhOQ3dRdUFTOEJBRUd5M3cwTEVLb0Jxd0dzQWEwQnJnR3ZBYkFCc1FFQVFkVGZEUXZNQkQ0QkFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BQUFBQUFEMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRUFBQUFBbmdHZkFRQkJ3dVFOQ3dpZ0FRQUFBQUROQVFCQjJPUU5Dd2loQWFJQm93R2tBUUJCZ3VVTkN3eWxBYVlCcHdHb0Fha0JLUUVBUVpibERRc0VMZ0V2QVFCQnZ1VU5DeENxQWFzQnJBR3RBYTRCcndHd0FiRUJBRUhnNVEwTHpBUStBUUlBQXdBRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFBQUFBQUE5QUQ0QVB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUdJQVl3QmtBR1VBWmdCbkFHZ0FhUUJxQUdzQWJBQnRBRzRBYndCd0FIRUFjZ0J6QUhRQWRRQjJBSGNBZUFCNUFIb0Fld0I4QUgwQWZnQi9BSUFBZ1FDQ0FJTUFoQUNGQUlZQWh3Q0lBSWtBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2FBSnNBbkFDZEFKNEFud0NnQUtFQW9nQ2pBS1FBcFFDbUFLY0FxQUNwQUtvQXF3Q3NBSzBBcmdDdkFMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0F1Z0M3QUx3QXZRQytBTDhBd0FEQkFNSUF3d0RFQU1VQXhnREhBTWdBeVFES0FNc0F6QUROQU00QXp3RFFBTkVBMGdEVEFOUUExUURXQU5jQTJBRFpBTm9BMndEY0FOMEEzZ0RmQU9BQTRRRGlBT01BNUFEbEFPWUE1d0RvQU9rQTZnRHJBT3dBN1FEdUFPOEE4QUR4QVBJQTh3RDBBUFVBOWdEM0FQZ0ErUUQ2QVBzQS9BRDlBUDRBL3dBQUFRRUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTUJGQUVWQVJZQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4QklBRWhBU0lCQUFBQUFKNEJud0VBUWM3cURRc0tvQUVBQUFBQUFBQUlBZ0JCNU9vTkN3aWhBYUlCb3dHa0FRQkJqdXNOQ3d5bEFhWUJwd0dvQWFrQktRRUFRYUxyRFFzRUxnRXZBUUJCeXVzTkN4Q3FBYXNCckFHdEFhNEJyd0d3QWJFQkFFSHM2dzBMekFRK0FRSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBRWdBVEFCUUFGUUFXQUJjQUdBQVpBQm9BR3dBY0FCMEFIZ0FmQUNBQUlRQWlBQ01BSkFBbEFDWUFKd0FvQUNrQUtnQXJBQ3dBTFFBdUFDOEFNQUF4QURJQU13QTBBRFVBTmdBM0FEZ0FPUUE2QUFBQUFBQTlBRDRBUHdCQUFFRUFRZ0JEQUVRQVJRQkdBRWNBU0FCSkFFb0FTd0JNQUUwQVRnQlBBRkFBVVFCU0FGTUFWQUJWQUZZQVZ3QllBRmtBV2dCYkFGd0FYUUJlQUY4QVlBQmhBR0lBWXdCa0FHVUFaZ0JuQUdnQWFRQnFBR3NBYkFCdEFHNEFid0J3QUhFQWNnQnpBSFFBZFFCMkFIY0FlQUI1QUhvQWV3QjhBSDBBZmdCL0FJQUFnUUNDQUlNQWhBQ0ZBSVlBaHdDSUFJa0FpZ0NMQUl3QWpRQ09BSThBa0FDUkFKSUFrd0NVQUpVQWxnQ1hBSmdBbVFDYUFKc0FuQUNkQUo0QW53Q2dBS0VBb2dDakFLUUFwUUNtQUtjQXFBQ3BBS29BcXdDc0FLMEFyZ0N2QUxBQXNRQ3lBTE1BdEFDMUFMWUF0d0M0QUxrQXVnQzdBTHdBdlFDK0FMOEF3QURCQU1JQXd3REVBTVVBeGdESEFNZ0F5UURLQU1zQXpBRE5BTTRBendEUUFORUEwZ0RUQU5RQTFRRFdBTmNBMkFEWkFOb0Eyd0RjQU4wQTNnRGZBT0FBNFFEaUFPTUE1QURsQU9ZQTV3RG9BT2tBNmdEckFPd0E3UUR1QU84QThBRHhBUElBOHdEMEFQVUE5Z0QzQVBnQStRRDZBUHNBL0FEOUFQNEEvd0FBQVFFQkFnRURBUVFCQlFFR0FRY0JDQUVKQVFvQkN3RU1BUTBCRGdFUEFSQUJFUUVTQVJNQkZBRVZBUllCRndFWUFSa0JHZ0ViQVJ3QkhRRWVBUjhCSUFFaEFTSUJBQUFBQUo0Qm53RUFRZHJ3RFFzSW9BRUFBQUFBUUFJQVFmRHdEUXNJb1FHaUFhTUJwQUVBUVpyeERRc01wUUdtQWFjQnFBR3BBU2tCQUVHdThRMExCQzRCTHdFQVFkYnhEUXNRcWdHckFhd0JyUUd1QWE4QnNBR3hBUUJCK1BFTkM4d0VQZ0VDQUFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQUFBQUFBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVFBQUFBQ2VBWjhCQUVIbTlnMExBcUFCQUVINjlnMExDa3dDb1FHaUFhTUJwQUVBUWFiM0RRc01wUUdtQWFjQnFBR3BBU2tCQUVHNjl3MExCQzRCTHdFQVFlTDNEUXNRcWdHckFhd0JyUUd1QWE4QnNBR3hBUUJCaFBnTkM4d0VQZ0VDQUFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQUFBQUFBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVFBQUFBQ2VBWjhCQUVIeS9BMExBcUFCQUVHSS9RMExDS0VCb2dHakFhUUJBRUd5L1EwTERLVUJwZ0duQWFnQnFRRXBBUUJCeHYwTkN3UXVBUzhCQUVIdS9RMExFS29CcXdHc0FhMEJyZ0d2QWJBQnNRRUFRWkQrRFF2UUJENEJBZ0FEQUFRQUJRQUdBQWNBQ0FBSkFBb0FDd0FNQUEwQURnQVBBQkFBRVFBU0FCTUFGQUFWQUJZQUZ3QVlBQmtBR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQUFBQUFBRDBBUGdBL0FFQUFRUUJDQUVNQVJBQkZBRVlBUndCSUFFa0FTZ0JMQUV3QVRRQk9BRThBVUFCUkFGSUFVd0JVQUZVQVZnQlhBRmdBV1FCYUFGc0FYQUJkQUY0QVh3QmdBR0VBWWdCakFHUUFaUUJtQUdjQWFBQnBBR29BYXdCc0FHMEFiZ0J2QUhBQWNRQnlBSE1BZEFCMUFIWUFkd0I0QUhrQWVnQjdBSHdBZlFCK0FIOEFnQUNCQUlJQWd3Q0VBSVVBaGdDSEFJZ0FpUUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKb0Ftd0NjQUowQW5nQ2ZBS0FBb1FDaUFLTUFwQUNsQUtZQXB3Q29BS2tBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzZBTHNBdkFDOUFMNEF2d0RBQU1FQXdnRERBTVFBeFFER0FNY0F5QURKQU1vQXl3RE1BTTBBemdEUEFOQUEwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dBNlFEcUFPc0E3QUR0QU80QTd3RHdBUEVBOGdEekFQUUE5UUQyQVBjQStBRDVBUG9BK3dEOEFQMEEvZ0QvQUFBQkFRRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV3RVVBUlVCRmdFWEFSZ0JHUUVhQVJzQkhBRWRBUjRCSHdFZ0FTRUJJZ0VBQUFBQW5nR2ZBUUFBdkFFQVFmcUNEZ3NHemdFQUFLQUJBRUdVZ3c0TERLRUJvZ0dqQWFRQkVBSVJBZ0JCdm9NT0N3eWxBYVlCcHdHb0Fha0JLUUVBUWRLRERnc0tMZ0VhQWdBQUFBQWRBZ0JCOElNT0N3TE9BUUJCK29NT0N4Q3FBYXNCckFHdEFhNEJyd0d3QWJFQkFFR1doQTRMQ000QkFBQUFBRDRCQUVHY2hRNExBbkVDQUVHMmhRNExKbmNDZUFKNUFzNEJ6Z0hPQWM0QnpnSE9BYzRCemdIT0FjNEJ6Z0hPQWM0QnpnSE9BYzRCQUVHaWh3NEx4d2JPQVZOb2FXWjBhVzVuQUFBQUFBQUFuQURMQU1rQXlnRElBTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTXdBelFET0FOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQUVjQlNBRkpBVW9CU3dGTUFVMEJZUUZpQVdNQlpBRmxBV1lCWndGd0FYMEJmZ0Z4QVhJQmRBRnpBWFVCZGdGM0FYZ0JlUUY2QVhzQmZBR2tBS1VBNVFEbUFPUUE1d0R1QU84QTdBRHRBT29BNndEb0FPa0FCUUVHQVFjQkVRRVNBUk1CQWdFREFRUUJEZ0VQQVJBQi93QUFBUUVCQ3dFTUFRMEIvQUQ5QVA0QUNBRUpBUW9COEFEeEFQSUFGQUVWQVJZQjh3RDBBUFVBSUFFaEFTSUI5Z0QzQVBnQUxBRXRBUzRCK1FENkFQc0FPQUU1QVRvQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4Qkl3RWtBU1VCSmdFbkFTZ0JLUUVxQVNzQkx3RXdBVEVCTWdFekFUUUJOUUUyQVRjQk93RThBVDBCUGdFL0FVQUJRUUZDQVVNQlJRRkVBZVFCNVFIbUFWRUJVZ0ZwQVd3QlJnRlBBVkFCWUFGT0FYOEJnQUdEQVlRQmhRR0hBWWdCaVFHTEFZd0JqUUdQQVpBQjJnSGJBV2dCYWdGckFWTUJWQUZWQVlFQlZnRmFBVnNCWGdHR0FZb0JqZ0ZYQVZnQlhBRmRBWUlCV1FGZkFhNEJzQUd4QWJJQnRBRzFBYllCdUFHNUFib0J2QUc5QWI0QndBSEJBY0lCeEFIRkFjWUJ5QUhKQWNvQnpBSE5BYzRCMEFIUkFkSUIxQUhWQWRZQjJBSFpBYThCc3dHM0Fic0J2d0hIQWNzQnp3SERBZE1CMXdGdEFXNEJid0dSQVpvQm5BR1dBWnNCblFHZUFhQUJvUUdpQWFRQnBRR21BYWdCcVFHcUFhd0JyUUdTQVpNQmxBR2ZBWlVCbHdHWUFaa0Jvd0duQWFzQjNBSGRBZUFCNFFIaUFlTUIzZ0hmQVQ4Q2d3RHBBZW9CNndFQUFPZ0JvQUNlQUo4QW5RQUFBTWNBb1FDaUFLTUFoUUNFQUFBQXR3Q3BBS29BcUFDckFLd0FwZ0NuQUxrQXJRQ3pBTFFBdFFDMkFLNEFyd0N3QUxFQXNnQ0dBSWNBaUFDSkFJb0Fpd0NTQUQ0Q0FBQkFBZ0FBYkFCckFBQUFkd0I4QUprQW1BQ1dBSm9BQUFDVEFKVUFtd0NCQU1NQWx3RG5BUUFBT3dJOUFnQUE3Z0VBQUFBQUFBQmdBQUFBWFFBQUFHb0FBQUJ6QUcwQWRRQUFBSFlBQUFCZUFIMEFZd0FBQUpRQWdnQUFBTHdBd2dBQkFEd0NBQUFBQU93Qmp3Q1JBQUFBalFDNkFBQUFBQUJoQUFBQUFBQkJBbTRBY2dCMEFIQUFlQUJ2QUFBQWZnQm1BQUFBWkFCQjhvME9DNGdCS2dBcEFDc0FLQUFGQUFZQUJ3QUlBQUlBRHdBTkFBNEFFQUFKQUFvQUN3QU1BQU1BRVFBa0FCTUFHQUFaQUFBQUFBQWRBQUFBeFFBQUFDTUFJUUFBQUwwQVh3QUFBQUFBQUFEd0FRQUFBQUNNQUFBQXVBQUFBTDRBTEFBd0FETUFOZ0E3QUQ0QVFBQkNBRVFBUmdCSUFFb0FBQUFBQUdJQUFBQUtBaE1DRndJQUFBQUFBQUFzQWdCQmlvOE9DM3NzQUUwQVdnQUFBUDBCQUFDYkFJRUFBQUlWQXY4QkJ3TCtBUUFBQVFJQ0Foa0NBd0lnQWdRQ0JRSW9BZ1lDQUFCeEFBQUFlUUFBQVBnQmdBQUFBQUFBYUFBQUFHVUFKUUFtQUFBQUZRQVdBQUFBQUFBYkFCb0FBQURIQUI0QUlBQW5BQUFBeEFBQUFQWUJBQUQwQWU4QjhRRUFBRndBa0FDT0FMc0FRYXlRRGd1a0FVc0F2d0RBQUFBQUFBQUpBZ0FBS2dJM0FqWUNBQUF1QWdBQU9nSTRBZ0FBQUFBQUFDY0NDQUpRQUZFQVV3QlNBRlVBVmdCWEFGZ0FXUUJVQUU4QUFBQUFBQmdDRkFJV0Fob0NJUUlwQW5zQUFBRDdBUUFBZndBQUFHa0FCQUFBQUJjQUZBQWZBTVlBQUFEM0FRQUE4Z0h0QVMwQUxnQXZBRElBTVFBMEFEVUFPUUE2QURjQU9BQThBRDBBUHdCQkFFTUFSUUJIQUVrQUFBREJBRVVDQUFCREFnc0NBRUhZa1E0TEdEa0NBQUFtQWs0QVd3QjZBUGtCQUFCbkFCSUE4d0gxQVFCQitwRU9Dd0llQWdCQmhKSU9DN01hTVFJd0FqTUNFUUlpQXZvQi9BRUFBQUFBUWdKRUFnd0NBQUFBQUFBQU1nSUFBQUFBSFFJQUFBQUFHd0lBQUV3QVJnSUFBQTRDS3dJTkFnQUFOQUlBQUJFQ0VBSVNBaVFDSHdJQUFEVUNMd0ljQWlVQ0FBQXRBaU1DQUFBQUFnRUJBd0VCQVFFQkFRRUJBUUVCQVFFRUFRTUNBZ0VCQVFJQ0FnRUNBd0lCQVFFQkFnSUNBUUVCQVFFREF3TUJBd01CQXdNQkF3TURBd0VEQXdFREFRTUJBd0VEQVFNQkF3RUFCZ0VEQVFFQkFRRUJBUUVCQVFFQkF3RUNBZ1FDQXdRQ0F3UUFCZ0lEQWdFQkFnTURBZ01DQVFJQkFRRURCQVlGQVFJREJRUUJBZ0VCQVFFQkFRRUJBUVFCQXdFREFRRUJBZ0VCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJCQUVCQXdJREFnTURCQUVBQXdFREFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQmdBRkFRSURCQUVEQVFJQkF3UUJBd0VCQVFFQkFRRUJBUUVCQWdJQUFBVUJBUUFDQUFJQ0F3RUNBUUlCQWdVREFRRUVBUUlBQ0FBQkF3SUJBZ0FHQUFnQUJ3RUJBUUFDQXdJQ0FnTUNBUUlCQVFFQUF3VUJBd0VFZFc1emFXZHVaV1FnYkdsMFpYSmhiQUF6TWkxaWFYUWdjMmxuYm1Wa0lHeHBkR1Z5WVd3QU5qUXRZbWwwSUdsdWRHVm5aWElnYkdsMFpYSmhiQUEyTkMxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNpQnNhWFJsY21Gc0FERTJMV0pwZENCcGJuUmxaMlZ5SUd4cGRHVnlZV3dBTVRZdFltbDBJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSWdiR2wwWlhKaGJBQmtiM1ZpYkdVZ2JHbDBaWEpoYkFCb1lXeG1JR1pzYjJGMElHeHBkR1Z5WVd3QUt5c0FMUzBBVzEwQVpuVnVZM1JwYjI0Z1kyRnNiQ3dnYldWMGFHOWtMQ0J2Y2lCemRXSnliM1YwYVc1bElHTmhiR3dnWlhod1pXTjBaV1FBQUdsdVkyOXRjR3hsZEdVZ2JXVjBhRzlrSUhONWJuUmhlQUJpYVhSM2FYTmxJRzV2ZEFBcUFDOEFKUUFyQUMwQVltbDBJSE5vYVdaMElHeGxablFBUER3QVltbDBJSE5vYVdaMElISnBaMmgwQUQ0K0FEd0FQZ0E4UFFBK1BRQmhjbkpoZVNCamIyMXdZWEpwYzI5dUFEMDlBQ0U5QUdKcGRIZHBjMlVnWVc1a0FDWUFZbWwwZDJselpTQmxlR05zZFhOcGRtVWdiM0lBWGdCaWFYUjNhWE5sSUdsdVkyeDFjMmwyWlNCdmNnQjhBQ1ltQUY1ZUFIeDhBRDhBT2dCaGNuSmhlU0JoYzNOcFoyNXRaVzUwQUQwQVlYTnphV2R1QUNVOUFHSnBkQzF6YUdsbWRDQnNaV1owSUdGemMybG5iZ0JpYVhRdGMyaHBablFnY21sbmFIUWdZWE56YVdkdUFHSnBkSGRwYzJVdFlXNWtJR0Z6YzJsbmJnQmlhWFIzYVhObExYaHZjaUJoYzNOcFoyNEFZbWwwZDJselpTMXZjaUJoYzNOcFoyNEFMQUJ3Y21WamFYTnBiMjRnYzNSaGRHVnRaVzUwQUdOaGJtNXZkQ0JpWlNCaGJpQmhjbWQxYldWdWRDQjBlWEJsSUdWNFkyVndkQ0JtYjNJZ0p5aDJiMmxrS1NjQWRtOXBaQUJ1YnlCeGRXRnNhV1pwWlhKeklHRnNiRzkzWldRZ1ptOXlJR1oxYm1OMGFXOXVJSEpsZEhWeWJnQkhURjh6UkV4ZllYSnlZWGxmYjJKcVpXTjBjd0JoY25KaGVXVmtJSFI1Y0dVQWFXeHNaV2RoYkNCMWMyVWdiMllnZEhsd1pTQW5kbTlwWkNjQWFXNTJZWEpwWVc1MEFITnRiMjkwYUFCbWJHRjBBRzV2Y0dWeWMzQmxZM1JwZG1VQVIweGZUbFpmYzJoaFpHVnlYMjV2Y0dWeWMzQmxZM1JwZG1WZmFXNTBaWEp3YjJ4aGRHbHZiZ0JmWDJWNGNHeHBZMmwwU1c1MFpYSndRVTFFQUVkTVgwRk5SRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZkbVZ5ZEdWNFgzQmhjbUZ0WlhSbGNnQmxlSEJzYVdOcGRDQnBiblJsY25CdmJHRjBhVzl1QUhCbGNuWmxjblJsZUU1V0FFZE1YMDVXWDJaeVlXZHRaVzUwWDNOb1lXUmxjbDlpWVhKNVkyVnVkSEpwWXdCbWNtRm5iV1Z1ZENCemFHRmtaWElnWW1GeWVXTmxiblJ5YVdNQWNHVnljSEpwYldsMGFYWmxUbFlBQUFBQXB0Y0RBSEJsY25acFpYZE9WZ0IwWVhOclRsWUFjMmhoY21Wa0FFZE1YMEZTUWw5bmNIVmZjMmhoWkdWeU5RQndjbVZqYVhObEFBQzQxd01BeTljREFHbHViM1YwQUdsdUFHOTFkQUJqWlc1MGNtOXBaQUIxYm1sbWIzSnRBRWRNWDBGU1FsOWpiMjF3ZFhSbFgzTm9ZV1JsY2dCaWRXWm1aWElBWVhSMGNtbGlkWFJsQUhaaGNubHBibWNBY0dGMFkyZ0FjMkZ0Y0d4bEFHaHBkRUYwZEhKcFluVjBaVTVXQUVkTVgwNVdYM0poZVY5MGNtRmphVzVuQUhKaGVWQmhlV3h2WVdST1ZnQnlZWGxRWVhsc2IyRmtTVzVPVmdCallXeHNZV0pzWlVSaGRHRk9WZ0JqWVd4c1lXSnNaVVJoZEdGSmJrNVdBQURlMXdNQVpHVjJhV05sWTI5b1pYSmxiblFBY1hWbGRXVm1ZVzFwYkhsamIyaGxjbVZ1ZEFCM2IzSnJaM0p2ZFhCamIyaGxjbVZ1ZEFCemRXSm5jbTkxY0dOdmFHVnlaVzUwQUc1dmJuQnlhWFpoZEdVQWMzVmljbTkxZEdsdVpRQmhjbkpoZVNCemFYcGxBSFI1Y0dVZ2NHRnlZVzFsZEdWeUFIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJQWRXNXphV2R1WldRZ2FXNTBaV2RsY2lCMlpXTjBiM0lBWkc5MVlteGxBR1pzYjJGME1UWmZkQUJtYkc5aGRETXlYM1FBWm14dllYUTJORjkwQURndFltbDBJSE5wWjI1bFpDQnBiblJsWjJWeUFEZ3RZbWwwSUhWdWMybG5ibVZrSUdsdWRHVm5aWElBTVRZdFltbDBJSE5wWjI1bFpDQnBiblJsWjJWeUFERTJMV0pwZENCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5QURNeUxXSnBkQ0J6YVdkdVpXUWdhVzUwWldkbGNnQXpNaTFpYVhRZ2RXNXphV2R1WldRZ2FXNTBaV2RsY2dBMk5DMWlhWFFnYVc1MFpXZGxjZ0EyTkMxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNnQmtiM1ZpYkdVZ2RtVmpkRzl5QUdoaGJHWWdabXh2WVhRZ2RtVmpkRzl5QUdac2IyRjBNekpmZENCMlpXTjBiM0lBWm14dllYUTJORjkwSUhabFkzUnZjZ0E0TFdKcGRDQnphV2R1WldRZ2FXNTBaV2RsY2lCMlpXTjBiM0lBTVRZdFltbDBJSE5wWjI1bFpDQnBiblJsWjJWeUlIWmxZM1J2Y2dBek1pMWlhWFFnYzJsbmJtVmtJR2x1ZEdWblpYSWdkbVZqZEc5eUFEWTBMV0pwZENCcGJuUmxaMlZ5SUhabFkzUnZjZ0E0TFdKcGRDQjFibk5wWjI1bFpDQnBiblJsWjJWeUlIWmxZM1J2Y2dBeE5pMWlhWFFnZFc1emFXZHVaV1FnYVc1MFpXZGxjaUIyWldOMGIzSUFNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ2RtVmpkRzl5QURZMExXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJSFpsWTNSdmNnQmtiM1ZpYkdVZ2JXRjBjbWw0QUdoaGJHWWdabXh2WVhRZ2JXRjBjbWw0QUdac2IyRjBNekpmZENCdFlYUnlhWGdBWm14dllYUTJORjkwSUcxaGRISnBlQUJoZEc5dGFXTWdZMjkxYm5SbGNpQjBlWEJsY3dCb1lXeG1JR1pzYjJGMElITmhiWEJzWlhJQWFHRnNaaUJtYkc5aGRDQjBaWGgwZFhKbEFHaGhiR1lnWm14dllYUWdhVzFoWjJVQWMzVmljR0Z6Y3lCcGJuQjFkQUJvWVd4bUlHWnNiMkYwSUhOMVluQmhjM01nYVc1d2RYUUFabU52YjNCdFlYUk9WZ0JwWTI5dmNHMWhkRTVXQUhWamIyOXdiV0YwVGxZQVpYaHdaV04wWldRZ2RIbHdaU0J1WVcxbEFHaHBaMmh3SUhCeVpXTnBjMmx2YmlCeGRXRnNhV1pwWlhJQWJXVmthWFZ0Y0NCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeUFHeHZkM0FnY0hKbFkybHphVzl1SUhGMVlXeHBabWxsY2dCeVpXUmxabWx1YVhScGIyNEFjM1J5ZFdOMEFHUjFjR3hwWTJGMFpTQnRaVzFpWlhJZ2JtRnRaVG9BZXlCOUlITjBlV3hsSUdsdWFYUnBZV3hwZW1WeWN3QkhURjlCVWtKZmMyaGhaR2x1WjE5c1lXNW5kV0ZuWlY4ME1qQndZV05yQUdSbGJXOTBaUUFBQUFBbjJBTUFZMkZ1Ym05MElHRndjR1ZoY2lCdmRYUnphV1JsSUhOM2FYUmphQ0J6ZEdGMFpXMWxiblFBWTJGelpRQmpZVzV1YjNRZ1ltVWdibVZ6ZEdWa0lHbHVjMmxrWlNCamIyNTBjbTlzSUdac2IzY0FaR1ZtWVhWc2RBQjNhR2xzWlNCc2IyOXdjeUJ1YjNRZ1lYWmhhV3hoWW14bEFHeHBiV2wwWVhScGIyNEFaRzh0ZDJocGJHVWdiRzl2Y0hNZ2JtOTBJR0YyWVdsc1lXSnNaUUJqYjI1MGFXNTFaU0J6ZEdGMFpXMWxiblFnYjI1c2VTQmhiR3h2ZDJWa0lHbHVJR3h2YjNCekFHSnlaV0ZySUhOMFlYUmxiV1Z1ZENCdmJteDVJR0ZzYkc5M1pXUWdhVzRnYzNkcGRHTm9JR0Z1WkNCc2IyOXdjd0J1YjI0dGRtOXBaQ0JtZFc1amRHbHZiaUJ0ZFhOMElISmxkSFZ5YmlCaElIWmhiSFZsQUhKbGRIVnliZ0JrYVhOallYSmtBR1Y0ZEhKaGJtVnZkWE1nYzJWdGFXTnZiRzl1QUdaMWJtTjBhVzl1SUdSdlpYTWdibTkwSUhKbGRIVnliaUJoSUhaaGJIVmxPZ0FBQUFCSzJBTUFMVDRnSkNRZ1BRQkJ3cXdPQy84WW13R2NBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdlQVo0Qm5nR2VBWjRCbmdHZkFhQUJvUUdpQWFJQm93R2pBYVFCcEFHbEFhWUJwZ0dtQWFjQnB3R25BYWNCcUFHb0FhZ0JxQUdwQWFrQnFRR3BBYW9CcWdHcUFhc0Jxd0dyQWF3QnJBR3NBYXdCckFHdEFhMEJyUUd1QWE0QnJ3R3ZBYkFCc0FHeEFiRUJzZ0d5QWJNQnN3RzBBYlVCdEFHMkFiWUJ0d0czQWJjQnR3RzNBYmNCdHdHM0FiY0J0d0czQWJnQnVBRzVBYm9CdWdHNkFib0J1Z0c2QWJvQnVnRzZBYndCdXdHOUFiMEJ2Z0cvQWI4QndBSEFBY0VCd2dIQ0FjTUJ3d0hEQWNNQnhBSEZBY1VCeFFIRkFjVUJ4Z0hHQWNZQnhnSEdBY2NCeHdISUFja0J5UUhKQWNrQnlRSEpBY2tCeVFIS0Fjc0J5d0hNQWN3QnpBSE5BYzRCemdIUEFjOEJ6d0hQQWM4Qnp3SFBBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUkFkSUIwZ0hUQWRNQjFBSFVBZFFCMUFIVkFkVUIxZ0hYQWRjQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGtCMlFIWkFkc0IyZ0hjQWRvQjNRSGRBZDRCM2dIZkFkOEI0QUhnQWVFQjRRSGhBZUlCNGdIakFlUUI1QUhsQWVVQjVRSGxBZVVCNVFIbEFlVUI1Z0huQWVnQjZRSG5BZW9CNmdIc0Flc0I3UUhyQWU0QjdnSHZBZThCOEFId0FmRUI4UUh5QWZNQjh3SDBBZlFCOVFIMUFmY0I5Z0g0QWZnQitRSDVBZm9CK2dIOEFmc0IvUUg3QWY0Qit3SC9BZjhCQUFJQUFnRUNBUUlDQWdJQ0FnSUNBZ0lDQXdJREFnUUNCQUlFQWdZQ0JRSUhBZ2dDQ0FJSkFna0NBQUE3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNzRJVHYrcC8rby80Yi9yUC90Lys3LzcvL3cvK3ovOGY4Ny9xdi9PLzZlL3p2K2t2K0ovd0lBTy80Ny9qditCQUE3L2p2K08vNjlBTDhBd0FBNy9qdityZjQ3L2p2K08vNDcvbUlBTy83Yi85VC9PLzRKQUR2K0FBQzUvenYrTy80Ny9qditCUUU3L2p2K08vNDgvbmYvRkFDOC95Ly9PLzZnL3pyL3V2NDcvbmovTy80Ny9tNy9jUDg3L2p2K3lBRDMvcW4vTy80NUFEditrUDg3L2pzQU8vNDcvanYrTy80OUFEditPLzQ3L2p2K08vNDcvanYrTy83a0FEditPLzQ3L2p2K25mOEFBUC8vc2dHekFiUUJiUUsxQWJZQnR3RzRBYmtCdWdHN0FlMEJ2UUhQQWRBQjBRSFNBZE1CMUFIVkFkWUIxd0hZQWRrQjdnR0tBdThCWFFMd0FTZ0M4UUZSQVF3Q25RSHlBVk1CVkFGVkFYTUJkQUYxQVZZQlZ3RllBVmtCV2dGYkFZa0JpZ0ZjQVYwQlhnRmZBYjRCakFHL0FZOEJnQUdCQWNBQllnRmpBV1FCeHdHRkFjVUJ4Z0VpQWlNQ0NnSm9BdlVCOWdIM0FmZ0IrUUZFQXFRQ3hRSzhBcjBDdmdMR0F2b0Ird0g4QWYwQnZ3S29BdjRCL3dIQUF0UUNBQUlCQWdJQ2tBSklBcElDckFLNkFyc0NBd0psQVdZQlp3RndBUVFDalFLT0FuTjViblJoZUNCbGNuSnZjZ0JGY25KdmNqb2daR2x6WTJGeVpHbHVad0JGY25KdmNqb2djRzl3Y0dsdVp3QUFBQUFBQUFBREFBUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQS9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFakFTUUJSQUZTQVZNQlZBRlZBVllCWHdGZ0FXRUJZZ0ZqQVdRQlpRRnlBWE1CZEFGMUFYWUJkd0dBQVlJQmd3R0VBWVVCaGdHSEFZZ0JpUUdLQVlzQmpBR05BWTRCandHUUFaRUJrZ0dUQVpRQmxRR1dBWmNCbUFHWkFab0J1Z0c3QWI0QnZ3SEFBY0VCeFFIR0FjY0J5QUhKQWNvQnpRSE9BYzhCMEFIUkFkTUIyQUhaQWRvQkF3SUVBZ1VDMlFFK0FWNEJPZ0U2QVVRQlhnRkVBUVlDT3dGQkFjSUJ3d0hFQWM0QjB3RkJBVVFCWGdGRUFWNEJ6d0hUQVV3QjFRSFdBUUFBQkFMVEFkd0JQZ0ZlQVhNQnl3SE1BVjRCMGdFOEFVUUIxQUUrQWU0Qnd3SENBY1FCWGdGZUFUb0JRd0hVQVQ0QlFRRkVBYjBCSndFb0FUb0JSUUZHQVVjQlNBRmFBVnNCWEFGZEFWNEJlQUY1QVhvQmV3RjhBWDBCZmdGL0Fad0JuUUdlQWFBQm9RR2lBYU1CcEFHbEFhWUJwd0dvQWRFQjB3SFhBZFFCUkFIT0FkTUIzUUhlQWRzQlF3RTdBVUVCT3dGQkFUMEJwd0dwQWFvQnF3R3NBYTBCcmdHdkFiQUJzUUd5QWJNQnRBRThBVVFCUEFFK0FUOEJSQUZtQVdjQmFBRnBBV3NCYkFGdEFXNEJid0Z3QVhFQmdRR25BYlFCdGdHNEFib0J2Z0hSQWRNQjR3SGtBZVVCNWdIbkFlOEI4QUh4QWZJQjlRSDJBZmtCK2dIN0FRSUNCd0xVQVVNQjFBRStBYllCNFFGREFid0JYZ0ZCQVVRQnB3R25BYmdCSndFb0FUd0JRQUU3QVRzQlFRRmxBYllCT2dHbkFVRUJUUUhUQVY0QjN3SGdBVDhCM2dIZEFiUUJ1UUhNQVY0QlNRRktBVXNCUmdGSUFTVUJKZ0VwQVNvQlRBRk5BU3NCTEFGUUFVOEJUZ0V0QVM4QkxnRlJBVDBCUFFHMEFUd0JQd0hvQVRvQlJBRkVBZjBCT2dFNkFVUUJSQUc0QVRvQnVBRkNBVVFCTUFFeEFUSUJNd0UwQVRVQk5nRTNBVGdCT1FGREFiY0JRUUZFQVQ4QjVBSHlBZllCK3dIaEFVTUI0UUhpQWVFQjNRRmVBVHNCbndHNEFWNEJ0Z0duQWQ4QjFBRkJBVVFCUHdHbkFhY0Jwd0dwQWFrQnFnR3FBYXNCcXdHckFhc0JyQUdzQWEwQnJnR3ZBYkFCc1FHeUFiVUJQUUZlQVFnQ0NRTHZBZndCNUFIK0FiZ0JSQUc0QVVJQnRnRzJBZUVCUHdGQkFUOEJQUUZFQWVBQnVBRTZBVDBCUVFIcEFiZ0J4d0hPQWZRQlpnSGpBZkFCL3dFN0FUc0JQd0hoQVVJQnVRRTlBUWtDUHdGZUFUc0JPZ0gwQVFBQ0FRTHJBZXdCN1FIekFmY0J0Z0U3QVVNQjVRSHFBZTRCdUFGRUFUc0JhZ0huQWVVQlBnSGhBVHNCdUFIcUFlc0I3d0g0QVVRQlB3RnRaVzF2Y25rZ1pYaG9ZWFZ6ZEdWa0FFTnNaV0Z1ZFhBNklHUnBjMk5oY21ScGJtY2diRzl2YTJGb1pXRmtBRU5zWldGdWRYQTZJSEJ2Y0hCcGJtY0FKWE1nSlhNZ0tBQjBiMnRsYmdCdWRHVnliUUJCME1VT0M3UkQvcW9EQUFPckF3QUpxd01BRktzREFCcXJBd0FmcXdNQUk2c0RBQ2lyQXdBdXF3TUFOS3NEQURxckF3QkFxd01BUnFzREFFeXJBd0JTcXdNQVdLc0RBRjZyQXdCa3F3TUFhYXNEQUc2ckF3Qnpxd01BZUtzREFIMnJBd0NDcXdNQWlhc0RBSkNyQXdDWHF3TUFucXNEQUtXckF3Q3Nxd01BczZzREFMcXJBd0RCcXdNQXk2c0RBTldyQXdEaHF3TUE4YXNEQUFPc0F3QVNyQU1BSjZ3REFES3NBd0E5ckFNQVNxd0RBRnFzQXdCbHJBTUFjS3dEQUgyc0F3Q05yQU1BbGF3REFLT3NBd0N0ckFNQXQ2d0RBTU9zQXdEU3JBTUEzYXdEQU9pc0F3RDFyQU1BQmEwREFCQ3RBd0FiclFNQUtLMERBRGl0QXdCQ3JRTUFTcTBEQUZTdEF3QmVyUU1BWmEwREFHK3RBd0IzclFNQWdLMERBSWl0QXdDUnJRTUFtYTBEQUtLdEF3Q3ByUU1Bc2EwREFMbXRBd0RCclFNQXlhMERBTkd0QXdEWnJRTUE0YTBEQU9tdEF3RHhyUU1BK2EwREFBR3VBd0FKcmdNQUVhNERBQm11QXdBaHJnTUFLYTREQURHdUF3QTVyZ01BUWE0REFFaXVBd0JQcmdNQVZxNERBRjJ1QXdCa3JnTUFhNjREQUhHdUF3QjNyZ01BZmE0REFJT3VBd0NKcmdNQWo2NERBSmV1QXdDZnJnTUFwNjREQUsrdUF3QzNyZ01BdjY0REFNZXVBd0RQcmdNQTE2NERBTit1QXdEbnJnTUE3NjREQVBldUF3RC9yZ01BQjY4REFBK3ZBd0FYcndNQUg2OERBQ2V2QXdBdnJ3TUFONjhEQUQrdkF3Qkhyd01BVDY4REFGZXZBd0JmcndNQVo2OERBSEd2QXdCN3J3TUFoYThEQUkrdkF3Q1pyd01BbzY4REFLMnZBd0MzcndNQXdhOERBTXV2QXdEVnJ3TUEzNjhEQU9tdkF3RHpyd01BL2E4REFBZXdBd0FSc0FNQUc3QURBQ1d3QXdBdnNBTUFPYkFEQUVPd0F3Qk5zQU1BVjdBREFHR3dBd0Jyc0FNQWRiQURBSUd3QXdDTnNBTUFtTEFEQUtPd0F3Q3VzQU1BdjdBREFOYXdBd0Rvc0FNQStyQURBQVN4QXdBVHNRTUFLTEVEQURPeEF3QkRzUU1BVWJFREFHV3hBd0Iwc1FNQWc3RURBSkd4QXdDZ3NRTUFyN0VEQUx1eEF3RElzUU1BMWJFREFPYXhBd0Q0c1FNQUNySURBQjJ5QXdBMXNnTUFSYklEQUZDeUF3QmdzZ01BYmJJREFIcXlBd0NIc2dNQW1MSURBS2V5QXdDNXNnTUF5N0lEQU4reUF3RHdzZ01BLzdJREFCT3pBd0Ftc3dNQU9iTURBRkd6QXdCcHN3TUFnTE1EQUpXekF3Q3Zzd01BdDdNREFNQ3pBd0RKc3dNQTBiTURBTnF6QXdEanN3TUE2N01EQVBTekF3RDlzd01BQ2JRREFCYTBBd0FqdEFNQUxiUURBRGkwQXdCRHRBTUFUN1FEQUZ5MEF3QnB0QU1BZHJRREFJUzBBd0NTdEFNQW43UURBSzIwQXdDN3RBTUF5clFEQU5xMEF3RHF0QU1BOUxRREFQKzBBd0FLdFFNQUdiVURBQ20xQXdBNXRRTUFSTFVEQUUrMUF3QmF0UU1BYWJVREFIYTFBd0NHdFFNQWxyVURBS2kxQXdDM3RRTUF4TFVEQU5hMUF3RG50UU1BK2JVREFBdTJBd0FWdGdNQUlMWURBQ3UyQXdBNnRnTUFTcllEQUZxMkF3Qm90Z01BZDdZREFJYTJBd0NVdGdNQW83WURBTEsyQXdDK3RnTUF5N1lEQU5pMkF3RHB0Z01BKzdZREFBMjNBd0FhdHdNQUo3Y0RBRFMzQXdCRnR3TUFWTGNEQUdhM0F3QjR0d01BakxjREFKMjNBd0NzdHdNQXdMY0RBTTIzQXdEY3R3TUE2cmNEQVBxM0F3QUl1QU1BR0xnREFDaTRBd0E2dUFNQVFyZ0RBRXU0QXdCU3VBTUFXYmdEQUYrNEF3Qmx1QU1BYTdnREFIRzRBd0I0dUFNQWZyZ0RBSVc0QXdDUXVBTUFtN2dEQUthNEF3Q3h1QU1BdmJnREFNcTRBd0RWdUFNQTRMZ0RBT3E0QXdEMXVBTUFBTGtEQUF5NUF3QVp1UU1BSjdrREFESzVBd0ErdVFNQVFya0RBRWk1QXdCT3VRTUFWTGtEQUY2NUF3Qmp1UU1BYUxrREFHNjVBd0J6dVFNQWVMa0RBSDY1QXdDR3VRTUFrYmtEQUoyNUF3Q3F1UU1Bc0xrREFMcTVBd0REdVFNQXpia0RBTnk1QXdEdHVRTUErN2tEQUFXNkF3QU11Z01BRmJvREFCeTZBd0FxdWdNQU5yb0RBRU82QXdCUXVnTUFXN29EQUdXNkF3QnV1Z01BY2JvREFIVzZBd0I3dWdNQWdyb0RBSWU2QXdDTnVnTUFrN29EQUp5NkF3Q2Z1Z01BcExvREFLaTZBd0NydWdNQXM3b0RBTHE2QXdEQnVnTUF4cm9EQU02NkF3RFd1Z01BM2JvREFPUzZBd0RwdWdNQThMb0RBUGU2QXdBR3V3TUFGTHNEQUNPN0F3QXp1d01BUWJzREFGQzdBd0JldXdNQWJic0RBSGk3QXdCL3V3TUFpYnNEQUpXN0F3Q2Z1d01BcXJzREFMZTdBd0M5dXdNQXhMc0RBTSs3QXdEWXV3TUE0YnNEQU9xN0F3RHp1d01BL2JzREFBeThBd0FndkFNQU1yd0RBRU84QXdCT3ZBTUFYTHdEQUc2OEF3QjZ2QU1BaWJ3REFKTzhBd0NkdkFNQXBid0RBSzI4QXdEQnZBTUExTHdEQU9lOEF3RDZ2QU1BQ0wwREFDQzlBd0EydlFNQVdiMERBSDY5QXdDVHZRTUFwNzBEQUxpOUF3REh2UU1BNGIwREFQVzlBd0FHdmdNQUhMNERBREMrQXdBL3ZnTUFWNzREQUcrK0F3Q0d2Z01BbmI0REFMTytBd0RLdmdNQXpyNERBT1MrQXdENHZnTUFBNzhEQUJlL0F3QWp2d01BTTc4REFEZS9Bd0JIdndNQVdyOERBRzYvQXdDT3Z3TUFucjhEQUxPL0F3REp2d01BNHI4REFQZS9Bd0FLd0FNQUg4QURBRFBBQXdCTHdBTUFYTUFEQUhYQUF3Q0p3QU1BbThBREFLckFBd0RBd0FNQTBzQURBT2pBQXdEM3dBTUFCc0VEQUJiQkF3QXp3UU1BVE1FREFHckJBd0NDd1FNQWxzRURBS2ZCQXdDcndRTUFyOEVEQU1mQkF3RGF3UU1BOGNFREFBUENBd0FQd2dNQUlNSURBRGJDQXdCQXdnTUFVY0lEQUdMQ0F3QjF3Z01BZWNJREFIM0NBd0NVd2dNQXBjSURBS25DQXdDdHdnTUF6Y0lEQU56Q0F3RHh3Z01BQmNNREFDZkRBd0JBd3dNQVNzTURBRnZEQXdCNnd3TUFmc01EQUpUREF3Q2Z3d01BczhNREFOWERBd0Rhd3dNQTM4TURBT1REQXdEM3d3TUFCTVFEQUJmRUF3QW14QU1BTjhRREFFekVBd0JneEFNQUE1QURBR1hFQXdCMHhBTUFBQUFBQUNrQUpHVnVaQUJsY25KdmNnQWtkVzVrWldacGJtVmtBRU5QVGxOVUFFSlBUMHdBU1U1VUFGVkpUbFFBUmt4UFFWUUFRbFpGUXpJQVFsWkZRek1BUWxaRlF6UUFTVlpGUXpJQVNWWkZRek1BU1ZaRlF6UUFWVlpGUXpJQVZWWkZRek1BVlZaRlF6UUFWa1ZETWdCV1JVTXpBRlpGUXpRQVRVRlVNZ0JOUVZRekFFMUJWRFFBVFVGVU1sZ3lBRTFCVkRKWU13Qk5RVlF5V0RRQVRVRlVNMWd5QUUxQlZETllNd0JOUVZReldEUUFUVUZVTkZneUFFMUJWRFJZTXdCTlFWUTBXRFFBVTBGTlVFeEZVakpFQUZOQlRWQk1SVkl6UkFCVFFVMVFURVZTUTFWQ1JRQlRRVTFRVEVWU01rUlRTRUZFVDFjQVUwRk5VRXhGVWtOVlFrVlRTRUZFVDFjQVUwRk5VRXhGVWpKRVFWSlNRVmtBVTBGTlVFeEZVakpFUVZKU1FWbFRTRUZFVDFjQVNWTkJUVkJNUlZJeVJBQkpVMEZOVUV4RlVqTkVBRWxUUVUxUVRFVlNRMVZDUlFCSlUwRk5VRXhGVWpKRVFWSlNRVmtBVlZOQlRWQk1SVkl5UkFCVlUwRk5VRXhGVWpORUFGVlRRVTFRVEVWU1ExVkNSUUJWVTBGTlVFeEZVakpFUVZKU1FWa0FVMEZOVUV4RlVnQlRRVTFRVEVWU1UwaEJSRTlYQUZSRldGUlZVa1V5UkFCVVJWaFVWVkpGTTBRQVZFVllWRlZTUlVOVlFrVUFWRVZZVkZWU1JUSkVRVkpTUVZrQVNWUkZXRlJWVWtVeVJBQkpWRVZZVkZWU1JUTkVBRWxVUlZoVVZWSkZRMVZDUlFCSlZFVllWRlZTUlRKRVFWSlNRVmtBVlZSRldGUlZVa1V5UkFCVlZFVllWRlZTUlRORUFGVlVSVmhVVlZKRlExVkNSUUJWVkVWWVZGVlNSVEpFUVZKU1FWa0FRVlJVVWtsQ1ZWUkZBRlpCVWxsSlRrY0FSa3hQUVZReE5sOVVBRVpNVDBGVU16SmZWQUJFVDFWQ1RFVUFSa3hQUVZRMk5GOVVBRWxPVkRZMFgxUUFWVWxPVkRZMFgxUUFTVTVVTXpKZlZBQlZTVTVVTXpKZlZBQkpUbFF4Tmw5VUFGVkpUbFF4Tmw5VUFFbE9WRGhmVkFCVlNVNVVPRjlVQUVrMk5GWkZReklBU1RZMFZrVkRNd0JKTmpSV1JVTTBBRlUyTkZaRlF6SUFWVFkwVmtWRE13QlZOalJXUlVNMEFFa3pNbFpGUXpJQVNUTXlWa1ZETXdCSk16SldSVU0wQUZVek1sWkZReklBVlRNeVZrVkRNd0JWTXpKV1JVTTBBRWt4TmxaRlF6SUFTVEUyVmtWRE13QkpNVFpXUlVNMEFGVXhObFpGUXpJQVZURTJWa1ZETXdCVk1UWldSVU0wQUVrNFZrVkRNZ0JKT0ZaRlF6TUFTVGhXUlVNMEFGVTRWa1ZETWdCVk9GWkZRek1BVlRoV1JVTTBBRVJXUlVNeUFFUldSVU16QUVSV1JVTTBBRVJOUVZReUFFUk5RVlF6QUVSTlFWUTBBRVl4TmxaRlF6SUFSakUyVmtWRE13QkdNVFpXUlVNMEFFWXhOazFCVkRJQVJqRTJUVUZVTXdCR01UWk5RVlEwQUVZek1sWkZReklBUmpNeVZrVkRNd0JHTXpKV1JVTTBBRVl6TWsxQlZESUFSak15VFVGVU13QkdNekpOUVZRMEFFWTJORlpGUXpJQVJqWTBWa1ZETXdCR05qUldSVU0wQUVZMk5FMUJWRElBUmpZMFRVRlVNd0JHTmpSTlFWUTBBRVJOUVZReVdESUFSRTFCVkRKWU13QkVUVUZVTWxnMEFFUk5RVlF6V0RJQVJFMUJWRE5ZTXdCRVRVRlVNMWcwQUVSTlFWUTBXRElBUkUxQlZEUllNd0JFVFVGVU5GZzBBRVl4TmsxQlZESllNZ0JHTVRaTlFWUXlXRE1BUmpFMlRVRlVNbGcwQUVZeE5rMUJWRE5ZTWdCR01UWk5RVlF6V0RNQVJqRTJUVUZVTTFnMEFFWXhOazFCVkRSWU1nQkdNVFpOUVZRMFdETUFSakUyVFVGVU5GZzBBRVl6TWsxQlZESllNZ0JHTXpKTlFWUXlXRE1BUmpNeVRVRlVNbGcwQUVZek1rMUJWRE5ZTWdCR016Sk5RVlF6V0RNQVJqTXlUVUZVTTFnMEFFWXpNazFCVkRSWU1nQkdNekpOUVZRMFdETUFSak15VFVGVU5GZzBBRVkyTkUxQlZESllNZ0JHTmpSTlFWUXlXRE1BUmpZMFRVRlVNbGcwQUVZMk5FMUJWRE5ZTWdCR05qUk5RVlF6V0RNQVJqWTBUVUZVTTFnMEFFWTJORTFCVkRSWU1nQkdOalJOUVZRMFdETUFSalkwVFVGVU5GZzBBRUZVVDAxSlExOVZTVTVVQUVGRFExTlVVbFZEVkU1V0FFWkRUMDlRVFVGVVRsWUFTVU5QVDFCTlFWUk9WZ0JWUTA5UFVFMUJWRTVXQUZOQlRWQk1SVkpEVlVKRlFWSlNRVmtBVTBGTlVFeEZVa05WUWtWQlVsSkJXVk5JUVVSUFZ3QkpVMEZOVUV4RlVrTlZRa1ZCVWxKQldRQlZVMEZOVUV4RlVrTlZRa1ZCVWxKQldRQlRRVTFRVEVWU01VUUFVMEZOVUV4RlVqRkVRVkpTUVZrQVUwRk5VRXhGVWpGRVFWSlNRVmxUU0VGRVQxY0FTVk5CVFZCTVJWSXhSQUJUUVUxUVRFVlNNVVJUU0VGRVQxY0FVMEZOVUV4RlVqSkVVa1ZEVkFCVFFVMVFURVZTTWtSU1JVTlVVMGhCUkU5WEFFbFRRVTFRVEVWU01rUlNSVU5VQUZWVFFVMVFURVZTTWtSU1JVTlVBRk5CVFZCTVJWSkNWVVpHUlZJQVNWTkJUVkJNUlZKQ1ZVWkdSVklBVlZOQlRWQk1SVkpDVlVaR1JWSUFVMEZOVUV4RlVqSkVUVk1BU1ZOQlRWQk1SVkl5UkUxVEFGVlRRVTFRVEVWU01rUk5Vd0JUUVUxUVRFVlNNa1JOVTBGU1VrRlpBRWxUUVUxUVRFVlNNa1JOVTBGU1VrRlpBRlZUUVUxUVRFVlNNa1JOVTBGU1VrRlpBRk5CVFZCTVJWSkZXRlJGVWs1QlRFOUZVd0JUUVUxUVRFVlNSVmhVUlZKT1FVd3lSRmt5V1VWWVZBQkpVMEZOVUV4RlVqRkVRVkpTUVZrQVZWTkJUVkJNUlZJeFJBQlZVMEZOVUV4RlVqRkVRVkpTUVZrQVJqRTJVMEZOVUV4RlVqRkVBRVl4TmxOQlRWQk1SVkl5UkFCR01UWlRRVTFRVEVWU00wUUFSakUyVTBGTlVFeEZVakpFVWtWRFZBQkdNVFpUUVUxUVRFVlNRMVZDUlFCR01UWlRRVTFRVEVWU01VUkJVbEpCV1FCR01UWlRRVTFRVEVWU01rUkJVbEpCV1FCR01UWlRRVTFRVEVWU1ExVkNSVUZTVWtGWkFFWXhObE5CVFZCTVJWSkNWVVpHUlZJQVJqRTJVMEZOVUV4RlVqSkVUVk1BUmpFMlUwRk5VRXhGVWpKRVRWTkJVbEpCV1FCR01UWlRRVTFRVEVWU01VUlRTRUZFVDFjQVJqRTJVMEZOVUV4RlVqSkVVMGhCUkU5WEFFWXhObE5CVFZCTVJWSXhSRUZTVWtGWlUwaEJSRTlYQUVZeE5sTkJUVkJNUlZJeVJFRlNVa0ZaVTBoQlJFOVhBRVl4TmxOQlRWQk1SVkl5UkZKRlExUlRTRUZFVDFjQVJqRTJVMEZOVUV4RlVrTlZRa1ZUU0VGRVQxY0FSakUyVTBGTlVFeEZVa05WUWtWQlVsSkJXVk5JUVVSUFZ3QkpUVUZIUlRGRUFFbEpUVUZIUlRGRUFGVkpUVUZIUlRGRUFFbE5RVWRGTWtRQVNVbE5RVWRGTWtRQVZVbE5RVWRGTWtRQVNVMUJSMFV6UkFCSlNVMUJSMFV6UkFCVlNVMUJSMFV6UkFCSlRVRkhSVEpFVWtWRFZBQkpTVTFCUjBVeVJGSkZRMVFBVlVsTlFVZEZNa1JTUlVOVUFFbE5RVWRGUTFWQ1JRQkpTVTFCUjBWRFZVSkZBRlZKVFVGSFJVTlZRa1VBU1UxQlIwVkNWVVpHUlZJQVNVbE5RVWRGUWxWR1JrVlNBRlZKVFVGSFJVSlZSa1pGVWdCSlRVRkhSVEZFUVZKU1FWa0FTVWxOUVVkRk1VUkJVbEpCV1FCVlNVMUJSMFV4UkVGU1VrRlpBRWxOUVVkRk1rUkJVbEpCV1FCSlNVMUJSMFV5UkVGU1VrRlpBRlZKVFVGSFJUSkVRVkpTUVZrQVNVMUJSMFZEVlVKRlFWSlNRVmtBU1VsTlFVZEZRMVZDUlVGU1VrRlpBRlZKVFVGSFJVTlZRa1ZCVWxKQldRQkpUVUZIUlRKRVRWTUFTVWxOUVVkRk1rUk5Vd0JWU1UxQlIwVXlSRTFUQUVsTlFVZEZNa1JOVTBGU1VrRlpBRWxKVFVGSFJUSkVUVk5CVWxKQldRQlZTVTFCUjBVeVJFMVRRVkpTUVZrQVJqRTJTVTFCUjBVeFJBQkdNVFpKVFVGSFJUSkVBRVl4TmtsTlFVZEZNMFFBUmpFMlNVMUJSMFV5UkZKRlExUUFSakUyU1UxQlIwVkRWVUpGQUVZeE5rbE5RVWRGTVVSQlVsSkJXUUJHTVRaSlRVRkhSVEpFUVZKU1FWa0FSakUyU1UxQlIwVkRWVUpGUVZKU1FWa0FSakUyU1UxQlIwVkNWVVpHUlZJQVJqRTJTVTFCUjBVeVJFMVRBRVl4TmtsTlFVZEZNa1JOVTBGU1VrRlpBRlJGV0ZSVlVrVkRWVUpGUVZKU1FWa0FTVlJGV0ZSVlVrVkRWVUpGUVZKU1FWa0FWVlJGV0ZSVlVrVkRWVUpGUVZKU1FWa0FWRVZZVkZWU1JURkVBRWxVUlZoVVZWSkZNVVFBVlZSRldGUlZVa1V4UkFCVVJWaFVWVkpGTVVSQlVsSkJXUUJKVkVWWVZGVlNSVEZFUVZKU1FWa0FWVlJGV0ZSVlVrVXhSRUZTVWtGWkFGUkZXRlJWVWtVeVJGSkZRMVFBU1ZSRldGUlZVa1V5UkZKRlExUUFWVlJGV0ZSVlVrVXlSRkpGUTFRQVZFVllWRlZTUlVKVlJrWkZVZ0JKVkVWWVZGVlNSVUpWUmtaRlVnQlZWRVZZVkZWU1JVSlZSa1pGVWdCVVJWaFVWVkpGTWtSTlV3QkpWRVZZVkZWU1JUSkVUVk1BVlZSRldGUlZVa1V5UkUxVEFGUkZXRlJWVWtVeVJFMVRRVkpTUVZrQVNWUkZXRlJWVWtVeVJFMVRRVkpTUVZrQVZWUkZXRlJWVWtVeVJFMVRRVkpTUVZrQVJqRTJWRVZZVkZWU1JURkVBRVl4TmxSRldGUlZVa1V5UkFCR01UWlVSVmhVVlZKRk0wUUFSakUyVkVWWVZGVlNSVEpFVWtWRFZBQkdNVFpVUlZoVVZWSkZRMVZDUlFCR01UWlVSVmhVVlZKRk1VUkJVbEpCV1FCR01UWlVSVmhVVlZKRk1rUkJVbEpCV1FCR01UWlVSVmhVVlZKRlExVkNSVUZTVWtGWkFFWXhObFJGV0ZSVlVrVkNWVVpHUlZJQVJqRTJWRVZZVkZWU1JUSkVUVk1BUmpFMlZFVllWRlZTUlRKRVRWTkJVbEpCV1FCVFZVSlFRVk5UU1U1UVZWUUFVMVZDVUVGVFUwbE9VRlZVVFZNQVNWTlZRbEJCVTFOSlRsQlZWQUJKVTFWQ1VFRlRVMGxPVUZWVVRWTUFWVk5WUWxCQlUxTkpUbEJWVkFCVlUxVkNVRUZUVTBsT1VGVlVUVk1BUmpFMlUxVkNVRUZUVTBsT1VGVlVBRVl4TmxOVlFsQkJVMU5KVGxCVlZFMVRBRXhGUmxSZlQxQUFVa2xIU0ZSZlQxQUFTVTVEWDA5UUFFUkZRMTlQVUFCTVJWOVBVQUJIUlY5UFVBQkZVVjlQVUFCT1JWOVBVQUJCVGtSZlQxQUFUMUpmVDFBQVdFOVNYMDlRQUUxVlRGOUJVMU5KUjA0QVJFbFdYMEZUVTBsSFRnQkJSRVJmUVZOVFNVZE9BRTFQUkY5QlUxTkpSMDRBVEVWR1ZGOUJVMU5KUjA0QVVrbEhTRlJmUVZOVFNVZE9BRUZPUkY5QlUxTkpSMDRBV0U5U1gwRlRVMGxIVGdCUFVsOUJVMU5KUjA0QVUxVkNYMEZUVTBsSFRnQk1SVVpVWDFCQlVrVk9BRkpKUjBoVVgxQkJVa1ZPQUV4RlJsUmZRbEpCUTB0RlZBQlNTVWRJVkY5Q1VrRkRTMFZVQUV4RlJsUmZRbEpCUTBVQVVrbEhTRlJmUWxKQlEwVUFSRTlVQUVOUFRVMUJBRU5QVEU5T0FFVlJWVUZNQUZORlRVbERUMHhQVGdCQ1FVNUhBRVJCVTBnQVZFbE1SRVVBVUV4VlV3QlRWRUZTQUZOTVFWTklBRkJGVWtORlRsUUFURVZHVkY5QlRrZE1SUUJTU1VkSVZGOUJUa2RNUlFCV1JWSlVTVU5CVEY5Q1FWSUFRMEZTUlZRQVFVMVFSVkpUUVU1RUFGRlZSVk5VU1U5T0FFbE9Wa0ZTU1VGT1ZBQklTVWRJWDFCU1JVTkpVMGxQVGdCTlJVUkpWVTFmVUZKRlEwbFRTVTlPQUV4UFYxOVFVa1ZEU1ZOSlQwNEFVRkpGUTBsVFNVOU9BRkJCUTB0RlJBQlNSVk5QVlZKRFJRQlRWVkJGVWxBQVJreFBRVlJEVDA1VFZFRk9WQUJKVGxSRFQwNVRWRUZPVkFCVlNVNVVRMDlPVTFSQlRsUUFRazlQVEVOUFRsTlVRVTVVQUVsRVJVNVVTVVpKUlZJQVZGbFFSVjlPUVUxRkFFTkZUbFJTVDBsRUFFbE9BRTlWVkFCSlRrOVZWQUJUVkZKVlExUUFWazlKUkFCWFNFbE1SUUJDVWtWQlN3QkRUMDVVU1U1VlJRQkVUd0JGVEZORkFFWlBVZ0JKUmdCRVNWTkRRVkpFQUZKRlZGVlNUZ0JUVjBsVVEwZ0FRMEZUUlFCRVJVWkJWVXhVQUZWT1NVWlBVazBBVTBoQlVrVkVBRUpWUmtaRlVnQkdURUZVQUZOTlQwOVVTQUJNUVZsUFZWUUFSRTlWUWt4RlEwOU9VMVJCVGxRQVNVNVVNVFpEVDA1VFZFRk9WQUJWU1U1VU1UWkRUMDVUVkVGT1ZBQkdURTlCVkRFMlEwOU9VMVJCVGxRQVNVNVVNekpEVDA1VFZFRk9WQUJWU1U1VU16SkRUMDVUVkVGT1ZBQkpUbFEyTkVOUFRsTlVRVTVVQUZWSlRsUTJORU5QVGxOVVFVNVVBRk5WUWxKUFZWUkpUa1VBUkVWTlQxUkZBRkJCV1V4UFFVUk9WZ0JRUVZsTVQwRkVTVTVPVmdCSVNWUkJWRlJTVGxZQVEwRk1URVJCVkVGT1ZnQkRRVXhNUkVGVVFVbE9UbFlBVUVGVVEwZ0FVMEZOVUV4RkFFNVBUbFZPU1VaUFVrMEFRMDlJUlZKRlRsUUFWazlNUVZSSlRFVUFVa1ZUVkZKSlExUUFVa1ZCUkU5T1RGa0FWMUpKVkVWUFRreFpBRVJGVmtsRFJVTlBTRVZTUlU1VUFGRlZSVlZGUmtGTlNVeFpRMDlJUlZKRlRsUUFWMDlTUzBkU1QxVlFRMDlJUlZKRlRsUUFVMVZDUjFKUFZWQkRUMGhGVWtWT1ZBQk9UMDVRVWtsV1FWUkZBRTVQVUVWU1UxQkZRMVJKVmtVQVJWaFFURWxEU1ZSSlRsUkZVbEJCVFVRQVVFVlNWa1ZTVkVWWVRsWUFVRVZTVUZKSlRVbFVTVlpGVGxZQVVFVlNWa2xGVjA1V0FGQkZVbFJCVTB0T1ZnQlFVa1ZEU1ZORkFDUmhZMk5sY0hRQWRtRnlhV0ZpYkdWZmFXUmxiblJwWm1sbGNnQndjbWx0WVhKNVgyVjRjSEpsYzNOcGIyNEFjRzl6ZEdacGVGOWxlSEJ5WlhOemFXOXVBR2x1ZEdWblpYSmZaWGh3Y21WemMybHZiZ0JtZFc1amRHbHZibDlqWVd4c0FHWjFibU4wYVc5dVgyTmhiR3hmYjNKZmJXVjBhRzlrQUdaMWJtTjBhVzl1WDJOaGJHeGZaMlZ1WlhKcFl3Qm1kVzVqZEdsdmJsOWpZV3hzWDJobFlXUmxjbDl1YjE5d1lYSmhiV1YwWlhKekFHWjFibU4wYVc5dVgyTmhiR3hmYUdWaFpHVnlYM2RwZEdoZmNHRnlZVzFsZEdWeWN3Qm1kVzVqZEdsdmJsOWpZV3hzWDJobFlXUmxjZ0JtZFc1amRHbHZibDlwWkdWdWRHbG1hV1Z5QUhWdVlYSjVYMlY0Y0hKbGMzTnBiMjRBZFc1aGNubGZiM0JsY21GMGIzSUFiWFZzZEdsd2JHbGpZWFJwZG1WZlpYaHdjbVZ6YzJsdmJnQmhaR1JwZEdsMlpWOWxlSEJ5WlhOemFXOXVBSE5vYVdaMFgyVjRjSEpsYzNOcGIyNEFjbVZzWVhScGIyNWhiRjlsZUhCeVpYTnphVzl1QUdWeGRXRnNhWFI1WDJWNGNISmxjM05wYjI0QVlXNWtYMlY0Y0hKbGMzTnBiMjRBWlhoamJIVnphWFpsWDI5eVgyVjRjSEpsYzNOcGIyNEFhVzVqYkhWemFYWmxYMjl5WDJWNGNISmxjM05wYjI0QWJHOW5hV05oYkY5aGJtUmZaWGh3Y21WemMybHZiZ0JzYjJkcFkyRnNYM2h2Y2w5bGVIQnlaWE56YVc5dUFHeHZaMmxqWVd4ZmIzSmZaWGh3Y21WemMybHZiZ0JqYjI1a2FYUnBiMjVoYkY5bGVIQnlaWE56YVc5dUFDUkFNUUJoYzNOcFoyNXRaVzUwWDJWNGNISmxjM05wYjI0QVlYTnphV2R1YldWdWRGOXZjR1Z5WVhSdmNnQmxlSEJ5WlhOemFXOXVBR052Ym5OMFlXNTBYMlY0Y0hKbGMzTnBiMjRBWkdWamJHRnlZWFJwYjI0QVlteHZZMnRmYzNSeWRXTjBkWEpsQUNSQU1nQnBaR1Z1ZEdsbWFXVnlYMnhwYzNRQVpuVnVZM1JwYjI1ZmNISnZkRzkwZVhCbEFHWjFibU4wYVc5dVgyUmxZMnhoY21GMGIzSUFablZ1WTNScGIyNWZhR1ZoWkdWeVgzZHBkR2hmY0dGeVlXMWxkR1Z5Y3dCbWRXNWpkR2x2Ymw5b1pXRmtaWElBY0dGeVlXMWxkR1Z5WDJSbFkyeGhjbUYwYjNJQWNHRnlZVzFsZEdWeVgyUmxZMnhoY21GMGFXOXVBSEJoY21GdFpYUmxjbDkwZVhCbFgzTndaV05wWm1sbGNnQnBibWwwWDJSbFkyeGhjbUYwYjNKZmJHbHpkQUJ6YVc1bmJHVmZaR1ZqYkdGeVlYUnBiMjRBWm5Wc2JIbGZjM0JsWTJsbWFXVmtYM1I1Y0dVQWFXNTJZWEpwWVc1MFgzRjFZV3hwWm1sbGNnQnBiblJsY25CdmJHRjBhVzl1WDNGMVlXeHBabWxsY2dCc1lYbHZkWFJmY1hWaGJHbG1hV1Z5QUd4aGVXOTFkRjl4ZFdGc2FXWnBaWEpmYVdSZmJHbHpkQUJzWVhsdmRYUmZjWFZoYkdsbWFXVnlYMmxrQUhCeVpXTnBjMlZmY1hWaGJHbG1hV1Z5QUhSNWNHVmZjWFZoYkdsbWFXVnlBSE5wYm1kc1pWOTBlWEJsWDNGMVlXeHBabWxsY2dCemRHOXlZV2RsWDNGMVlXeHBabWxsY2dCdWIyNWZkVzVwWm05eWJWOXhkV0ZzYVdacFpYSUFkSGx3WlY5dVlXMWxYMnhwYzNRQWRIbHdaVjl6Y0dWamFXWnBaWElBWVhKeVlYbGZjM0JsWTJsbWFXVnlBSFI1Y0dWZmNHRnlZVzFsZEdWeVgzTndaV05wWm1sbGNsOXZjSFFBZEhsd1pWOXdZWEpoYldWMFpYSmZjM0JsWTJsbWFXVnlBSFI1Y0dWZmNHRnlZVzFsZEdWeVgzTndaV05wWm1sbGNsOXNhWE4wQUhSNWNHVmZjM0JsWTJsbWFXVnlYMjV2Ym1GeWNtRjVBSEJ5WldOcGMybHZibDl4ZFdGc2FXWnBaWElBYzNSeWRXTjBYM053WldOcFptbGxjZ0FrUURNQUpFQTBBSE4wY25WamRGOWtaV05zWVhKaGRHbHZibDlzYVhOMEFITjBjblZqZEY5a1pXTnNZWEpoZEdsdmJnQnpkSEoxWTNSZlpHVmpiR0Z5WVhSdmNsOXNhWE4wQUhOMGNuVmpkRjlrWldOc1lYSmhkRzl5QUdsdWFYUnBZV3hwZW1WeUFHbHVhWFJwWVd4cGVtVnlYMnhwYzNRQVpHVmpiR0Z5WVhScGIyNWZjM1JoZEdWdFpXNTBBSE4wWVhSbGJXVnVkQUJ6YVcxd2JHVmZjM1JoZEdWdFpXNTBBR1JsYlc5MFpWOXpkR0YwWlcxbGJuUUFZMjl0Y0c5MWJtUmZjM1JoZEdWdFpXNTBBQ1JBTlFBa1FEWUFjM1JoZEdWdFpXNTBYMjV2WDI1bGQxOXpZMjl3WlFCemRHRjBaVzFsYm5SZmMyTnZjR1ZrQUNSQU53QWtRRGdBWTI5dGNHOTFibVJmYzNSaGRHVnRaVzUwWDI1dlgyNWxkMTl6WTI5d1pRQnpkR0YwWlcxbGJuUmZiR2x6ZEFCbGVIQnlaWE56YVc5dVgzTjBZWFJsYldWdWRBQnpaV3hsWTNScGIyNWZjM1JoZEdWdFpXNTBBSE5sYkdWamRHbHZibDl6ZEdGMFpXMWxiblJmYm05dVlYUjBjbWxpZFhSbFpBQnpaV3hsWTNScGIyNWZjbVZ6ZEY5emRHRjBaVzFsYm5RQVkyOXVaR2wwYVc5dUFITjNhWFJqYUY5emRHRjBaVzFsYm5RQWMzZHBkR05vWDNOMFlYUmxiV1Z1ZEY5dWIyNWhkSFJ5YVdKMWRHVmtBQ1JBT1FCemQybDBZMmhmYzNSaGRHVnRaVzUwWDJ4cGMzUUFZMkZ6WlY5c1lXSmxiQUJwZEdWeVlYUnBiMjVmYzNSaGRHVnRaVzUwQUdsMFpYSmhkR2x2Ymw5emRHRjBaVzFsYm5SZmJtOXVZWFIwY21saWRYUmxaQUFrUURFd0FDUkFNVEVBSkVBeE1nQm1iM0pmYVc1cGRGOXpkR0YwWlcxbGJuUUFZMjl1WkdsMGFXOXViM0IwQUdadmNsOXlaWE4wWDNOMFlYUmxiV1Z1ZEFCcWRXMXdYM04wWVhSbGJXVnVkQUIwY21GdWMyeGhkR2x2Ymw5MWJtbDBBR1Y0ZEdWeWJtRnNYMlJsWTJ4aGNtRjBhVzl1QUdaMWJtTjBhVzl1WDJSbFptbHVhWFJwYjI0QUpFQXhNd0JoZEhSeWFXSjFkR1ZmYkdsemRBQnphVzVuYkdWZllYUjBjbWxpZFhSbEFFR1NpUThMdkFsZ0FXQUJaZ0ZwQVc0QmNRRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR2FBYUlCcFFHb0Fhc0JyZ0d6QWJzQndnSEpBYzhCMHdIYUFkMEI0d0hxQWZRQi9BRUJBaDBDSmdJc0FqQUNOQUpJQWtrQ1NnSkxBbEVDVWdKWEFsd0NaUUptQW1zQ2N3SjBBbm9DZ3dLRUFva0NqZ0tUQXBzQ25BS2xBckVDc2dLN0Fyd0N4UUxHQXM4QzBBTFlBdGtDNFFMaUF1b0M2d0xyQXYwQy9nSU9BeElERmdNYUF4OERJd01uQXlzREx3TXpBemNEUGdOQkEwd0RVd05ZQTEwRFpBTm9BMndEY0FOMUEzb0Rnd09EQTQ0RGtnT1pBNkFEb3dPcUE3SUR4Z1BkQSt3REJRUVFCQm9FSkFRdUJEY0VPZ1ErQkVJRVJ3UlBCRllFV3dSZ0JHVUViZ1I0QkpNRW5BU2pCS3NFc2dTNUJNRUV5d1RTQk4wRTR3VG1CTzBFOFFUMUJQNEVDQVVMQlJZRkdRVWNCU0FGSkFVcEJTMEZOQVU0QlQwRlF3VkpCVkFGVlFWZEJXTUZid1Y5QllNRmlBV1FCWmdGb0FXb0JhOEZzd1c0QmIwRndnWEhCY3dGMEFYVUJkZ0YzQVhpQmUwRjlBWDNCUUFHQlFZUEJoUUdIQVlnQmlvR0xRWXpCamtHUUFaS0JrNEdVZ1pXQmxzR1h3WmtCbWtHYmdaekJuZ0dmUWFDQm9jR2pBYVNCcGdHbmdhakJxZ0dyUWF5QnJjR3ZBYkJCc1lHeXdiUUJ0VUcyd2JpQnVjRzdBYnhCdllHK3dZQUJ3VUhDZ2NQQnhRSEdRY2hCeWtITVFjM0J6MEhRd2RKQjA4SFZRZGJCMkVIWndkdEIzTUhlUWQvQjRVSGl3ZVJCNWNIblFlakI2a0hyd2UxQjdzSHdRZkhCODBIMHdmWkI5OEg1UWZyQi9FSDl3Zi9Cd2NJRHdnWENCOElKd2d2Q0RjSVB3aEhDRThJVndoZENHTUlhUWh2Q0hVSWV3aUJDSWNJalFpVENKa0lud2lsQ0tzSXNRaTNDTDBJd3dqSkNNOEkxUWpiQ09FSTV3anRDUE1JK1FqL0NBVUpDd2tSQ1JjSkhRa2pDU2tKTHdrekNUZ0pQZ2xEQ1VnSlRRbFNDVmNKWEFsaUNXY0piQWx4Q1hZSmV3bUJDWWNKalFtVENaa0pud21sQ2FzSnNRbTNDYjBKd3duSkNjOEoxQW5aQ2Q0SjR3bm9DZTBKOHduNENmMEpBZ29IQ2d3S0VRb1dDaHdLSVFvbUNpc0tNQW8xQ2pvS1B3cEVDa2tLVGdwVENsZ0tYUXBpQ21nS2JRcHlDbmdLZmdxRENvZ0tqUXFUQ3BnS25RcWlDcWdLclFxeUNyY0t2UXJDQ3NjS3pBclNDdGdLM2dya0N1a0s3d3IxQ3ZzS0FBc0ZDd29MRHdzVUN4b0xId3NrQ3lrTEx3czBDemtMUGd0RUMwa0xUZ3RUQzFrTFhndGpDMmdMYmd0ekMzZ0xmUXVEQzRnTGpRdVNDNWdMblF1aUM2Y0xyUXV5QzdjTHZBdkNDOGNMekF2UkM5Y0wzQXZoQytZTDdBdnhDL1lMK3dzQkRBWU1Dd3dRREJZTUd3d2dEQ1VNS3d3d0REVU1PZ3hBREVVTVNneFFERllNWEF4aURHa01jQXgyREh3TWdneUlESTRNbEF5YkRLQU1zQXkxRExvTXdnekNETTBNelF6WEROb001d3o5REJnTkhBMGlEU2NOTWcwMkRUd05SdzFLRFZFTlZRMVdEVndOWFExZURWOE5ZQTFoRFdJTlpBMXFEWE1OZEExNERYUU5oQTJGRFlrTmlRMlFEWkFObmcyaERha05zUTI4RGIwTndRM0ZEY3dOMHczWERkOE40dzN3RGZRTit3MzdEUThPRWc0WURpUU9NQTQwRGpzT093NUtEa29PV2c1YURtOE9jZzU0RG5zT2dRNkZEb3dPa1E2V0RwME9vQTZwRHEwT3RnNjVEcjBPeGc3R0R0ME80dzdtRHVzTzdnNVNaV1IxWTJsdVp5QnpkR0ZqYXlCaWVTQnlkV3hsSUNWa0lDaHNhVzVsSUNWc2RTazZDZ0FnSUNBa0pXUWdQU0FBUWRpU0R3dk9BZk1BQUFEMEFBQUE5UUFBQVBZQUFBRDNBQUFBK0FBQUFQa0FBQUQ2QUFBQSt3QUFBUHdBQUFEOUFBQUEvZ0FBQVA4QUFBQUFBUUFBQVFFQUFBSUJBQUFEQVFBQUJBRUFBQVVCQUFBR0FRQUFCd0VBQUFnQkFBQUpBUUFBQ2dFQUFBc0JBQUFNQVFBQURRRUFBQTRCQUFBUEFRQUFFQUVBQUJFQkFBQVNBUUFBRXdFQUFCUUJBQUFWQVFBQUZnRUFBQmNCQUFBWUFRQUFHUUVBQUJvQkFBQWJBUUFBSEFFQUFCMEJBQUFlQVFBQUh3RUFBQ0FCQUFBaEFRQUFJZ0VBQUNNQkFBQWtBUUFBSlFFQUFDWUJBRUd3bEE4THl4c0dBQUFBSndFQUFDZ0JBQUFwQVFBQUtnRUFBQ3NCQUFBc0FRQUFMUUVBQUM0QkFBQXZBUUFBTUFFQUFERUJBQUFHQUFBQUJnQUFBRElCQUFBekFRQUFOQUVBQURVQkFBQTJBUUFBQmdBQUFEY0JBQUE0QVFBQWJHRjViM1YwS0FBZ2JHOWpZWFJwYjI0OUFDQmpiMjF3YjI1bGJuUTlBQ0JwYm1SbGVEMEFJSE5sZEQwQUlHSnBibVJwYm1jOUFDQnpkSEpsWVcwOUFDQUFJRzltWm5ObGREMEFJR0ZzYVdkdVBRQWdlR1ppWDJKMVptWmxjajBBSUhobVlsOXZabVp6WlhROUFDQjRabUpmYzNSeWFXUmxQUUFnYVc1d2RYUmZZWFIwWVdOb2JXVnVkRjlwYm1SbGVEMEFJR052Ym5OMFlXNTBYMmxrUFFBZ2NIVnphRjlqYjI1emRHRnVkQUFnWW5WbVptVnlYM0psWm1WeVpXNWpaUUFnWW5WbVptVnlYM0psWm1WeVpXNWpaVjloYkdsbmJqMEFJSEJoYzNOMGFISnZkV2RvQUNCc1lYbHZkWFJXYVdWM2NHOXlkRkpsYkdGMGFYWmxBQ0JzWVhsdmRYUlRaV052Ym1SaGNubFdhV1YzY0c5eWRGSmxiR0YwYVhabFQyWm1jMlYwUFFBZ2MyaGhaR1Z5VW1WamIzSmtUbFlBSUdsdWRtRnlhV0Z1ZEFBZ2JtOURiMjUwY21GamRHbHZiZ0FnWTJWdWRISnZhV1FBSUhOdGIyOTBhQUFnWm14aGRBQWdibTl3WlhKemNHVmpkR2wyWlFBZ1gxOWxlSEJzYVdOcGRFbHVkR1Z5Y0VGTlJBQWdjR1Z5ZG1WeWRHVjRUbFlBSUhCbGNuQnlhVzFwZEdsMlpVNVdBQ0J3WlhKMmFXVjNUbFlBSUhSaGMydE9WZ0FnY0dGMFkyZ0FJSE5oYlhCc1pRQWdZMjlvWlhKbGJuUUFJR1JsZG1salpXTnZhR1Z5Wlc1MEFDQnhkV1YxWldaaGJXbHNlV052YUdWeVpXNTBBQ0IzYjNKclozSnZkWEJqYjJobGNtVnVkQUFnYzNWaVozSnZkWEJqYjJobGNtVnVkQUFnYm05dWNISnBkbUYwWlFBZ2RtOXNZWFJwYkdVQUlISmxjM1J5YVdOMEFDQnlaV0ZrYjI1c2VRQWdkM0pwZEdWdmJteDVBQ0J6Y0dWamFXRnNhWHBoZEdsdmJpMWpiMjV6ZEdGdWRBQWdibTl1ZFc1cFptOXliUUFnY25WdWRHbHRaUzF6YVhwbFpDQmhjbkpoZVNCdlpnQWdkVzV6YVhwbFpBQXRaV3hsYldWdWRDQmhjbkpoZVNCdlpnQXNJQUJZQUNCdFlYUnlhWGdnYjJZQUxXTnZiWEJ2Ym1WdWRDQjJaV04wYjNJZ2IyWUFld0I5QUdOdmJIVnRibDl0WVdwdmNnQnliM2RmYldGcWIzSUFibTl1WlFCemRHUXhOREFBY0dGamEyVmtBSE4wWkRRek1BQnpZMkZzWVhJQWNtZGlZVE15WmdCeVoySmhNVFptQUhKbk16Sm1BSEpuTVRabUFISXhNV1pmWnpFeFpsOWlNVEJtQUhJek1tWUFjakUyWmdCeVoySmhNVFlBY21kaU1UQmZZVElBY21kaVlUZ0FjbWN4TmdCeVp6Z0FjakUyQUhJNEFISm5ZbUV4Tmw5emJtOXliUUJ5WjJKaE9GOXpibTl5YlFCeVp6RTJYM051YjNKdEFISm5PRjl6Ym05eWJRQnlNVFpmYzI1dmNtMEFjamhmYzI1dmNtMEFjbWRpWVRNeWFRQnlaMkpoTVRacEFISm5ZbUU0YVFCeVp6TXlhUUJ5WnpFMmFRQnlaemhwQUhJek1ta0FjakUyYVFCeU9Ha0FjbWRpWVRNeWRXa0FjbWRpWVRFMmRXa0FjbWRpWVRoMWFRQnlaek15ZFdrQWNtY3hOblZwQUhKbllqRXdYMkV5ZFdrQWNtYzRkV2tBY2pNeWRXa0FjakUyZFdrQWNqaDFhUUJzYjNkd0FHMWxaR2wxYlhBQWFHbG5hSEFBZFc1cmJtOTNiaUJ3Y21WamFYTnBiMjRnY1hWaGJHbG1hV1Z5QUhOaGJYQnNaWElBYVFCMUFHWXhOZ0JwT0FCMU9BQnBNVFlBZFRFMkFHazJOQUIxTmpRQWMzVmljR0Z6Y3dCcGJXRm5aUUIwWlhoMGRYSmxBRVY0ZEdWeWJtRnNUMFZUQUY5ZkFFVjRkR1Z5Ym1Gc01rUlpNbGxGV0ZRQU1rUUFNMFFBUTNWaVpRQXhSQUF5UkZKbFkzUUFRblZtWm1WeUFFbHVjSFYwQUUxVEFFRnljbUY1QUZOb1lXUnZkd0JtYkc5aGRBQnBiblFBZFdsdWRBQnpZVzF3YkdWeUwybHRZV2RsQUdsdWREaGZkQUIxYVc1ME9GOTBBR2x1ZERFMlgzUUFkV2x1ZERFMlgzUUFhVzUwTmpSZmRBQjFhVzUwTmpSZmRBQmliMjlzQUdGMGIyMXBZMTkxYVc1MEFITjBjblZqZEhWeVpRQmliRzlqYXdCaFkyTmxiR1Z5WVhScGIyNVRkSEoxWTNSMWNtVk9WZ0J5WldabGNtVnVZMlVBZFc1cmJtOTNiaUIwZVhCbEFFNTFiVmR2Y210SGNtOTFjSE1BVjI5eWEwZHliM1Z3VTJsNlpRQlhiM0pyUjNKdmRYQkpSQUJNYjJOaGJFbHVkbTlqWVhScGIyNUpSQUJIYkc5aVlXeEpiblp2WTJGMGFXOXVTVVFBVEc5allXeEpiblp2WTJGMGFXOXVTVzVrWlhnQVRuVnRVM1ZpWjNKdmRYQnpBRk4xWW1keWIzVndTVVFBVTNWaVIzSnZkWEJUYVhwbEFGTjFZa2R5YjNWd1NXNTJiMk5oZEdsdmJnQlRkV0pIY205MWNFVnhUV0Z6YXdCVGRXSkhjbTkxY0VkbFRXRnphd0JUZFdKSGNtOTFjRWQwVFdGemF3QlRkV0pIY205MWNFeGxUV0Z6YXdCVGRXSkhjbTkxY0V4MFRXRnphd0JUZFdKbmNtOTFjRk5wZW1VQVUzVmlaM0p2ZFhCSmJuWnZZMkYwYVc5dVNVUUFVM1ZpWjNKdmRYQkZjVTFoYzJzQVUzVmlaM0p2ZFhCSFpVMWhjMnNBVTNWaVozSnZkWEJIZEUxaGMyc0FVM1ZpWjNKdmRYQk1aVTFoYzJzQVUzVmlaM0p2ZFhCTWRFMWhjMnNBVm1WeWRHVjRTV1FBU1c1emRHRnVZMlZKWkFCV1pYSjBaWGhKYm1SbGVBQkpibk4wWVc1alpVbHVaR1Y0QUVKaGMyVldaWEowWlhnQVFtRnpaVWx1YzNSaGJtTmxBRVJ5WVhkSlpBQlFiM05wZEdsdmJnQlFiMmx1ZEZOcGVtVUFRMnhwY0ZabGNuUmxlQUJEYkdsd1JHbHpkR0Z1WTJVQVEzVnNiRVJwYzNSaGJtTmxBRTV2Y20xaGJBQldaWEowWlhnQVRYVnNkR2xVWlhoRGIyOXlaREFBVFhWc2RHbFVaWGhEYjI5eVpERUFUWFZzZEdsVVpYaERiMjl5WkRJQVRYVnNkR2xVWlhoRGIyOXlaRE1BVFhWc2RHbFVaWGhEYjI5eVpEUUFUWFZzZEdsVVpYaERiMjl5WkRVQVRYVnNkR2xVWlhoRGIyOXlaRFlBVFhWc2RHbFVaWGhEYjI5eVpEY0FSbkp2Ym5SRGIyeHZjZ0JDWVdOclEyOXNiM0lBUm5KdmJuUlRaV052Ym1SaGNubERiMnh2Y2dCQ1lXTnJVMlZqYjI1a1lYSjVRMjlzYjNJQVZHVjRRMjl2Y21RQVJtOW5SbkpoWjBOdmIzSmtBRWx1ZG05allYUnBiMjVKUkFCUWNtbHRhWFJwZG1WSlJBQk1ZWGxsY2dCV2FXVjNjRzl5ZEVsdVpHVjRBRkJoZEdOb1ZtVnlkR2xqWlhNQVZHVnpjMHhsZG1Wc1QzVjBaWElBVkdWemMweGxkbVZzU1c1dVpYSUFRbTkxYm1ScGJtZENiM2dBVkdWemMwTnZiM0prQUVOdmJHOXlBRk5sWTI5dVpHRnllVU52Ykc5eUFFWmhZMlVBUm5KaFowTnZiM0prQUZCdmFXNTBRMjl2Y21RQVJuSmhaME52Ykc5eUFFWnlZV2RFWVhSaEFFWnlZV2RFWlhCMGFBQkdjbUZuVTNSbGJtTnBiRkpsWmdCVFlXMXdiR1ZKWkFCVFlXMXdiR1ZRYjNOcGRHbHZiZ0JUWVcxd2JHVk5ZWE5yU1c0QVNHVnNjR1Z5U1c1MmIyTmhkR2x2YmdCQ1lYSjVRMjl2Y21ST2IxQmxjbk53QUVKaGNubERiMjl5WkU1dlVHVnljM0JEWlc1MGNtOXBaQUJDWVhKNVEyOXZjbVJPYjFCbGNuTndVMkZ0Y0d4bEFFSmhjbmxEYjI5eVpGTnRiMjkwYUFCQ1lYSjVRMjl2Y21SVGJXOXZkR2hEWlc1MGNtOXBaQUJDWVhKNVEyOXZjbVJUYlc5dmRHaFRZVzF3YkdVQVFtRnllVU52YjNKa1VIVnNiRTF2WkdWc0FGWnBaWGRKYm1SbGVBQkVaWFpwWTJWSmJtUmxlQUJHY21GblUybDZaVVZZVkFCR2NtRm5TVzUyYjJOaGRHbHZia052ZFc1MFJWaFVBRlpwWlhkd2IzSjBUV0Z6YTA1V0FGTmxZMjl1WkdGeWVWQnZjMmwwYVc5dVRsWUFVMlZqYjI1a1lYSjVWbWxsZDNCdmNuUk5ZWE5yVGxZQVVHOXphWFJwYjI1UVpYSldhV1YzVGxZQVZtbGxkM0J2Y25STllYTnJVR1Z5Vm1sbGQwNVdBRVp5WVdkR2RXeHNlVU52ZG1WeVpXUk9WZ0JHY21GbmJXVnVkRk5wZW1WT1ZnQkpiblp2WTJGMGFXOXVjMUJsY2xCcGVHVnNUbFlBVEdGMWJtTm9TV1JPVmdCTVlYVnVZMmhUYVhwbFRsWUFTVzV6ZEdGdVkyVkRkWE4wYjIxSmJtUmxlRTVXQUZkdmNteGtVbUY1VDNKcFoybHVUbFlBVjI5eWJHUlNZWGxFYVhKbFkzUnBiMjVPVmdCUFltcGxZM1JTWVhsUGNtbG5hVzVPVmdCUFltcGxZM1JTWVhsRWFYSmxZM1JwYjI1T1ZnQlBZbXBsWTNSU1lYbFViV2x1VGxZQVQySnFaV04wVW1GNVZHMWhlRTVXQUVocGRGUk9WZ0JJYVhSTGFXNWtUbFlBU1c1amIyMXBibWRTWVhsR2JHRm5jMDVXQUU5aWFtVmpkRlJ2VjI5eWJHUk9WZ0JYYjNKc1pGUnZUMkpxWldOMFRsWUFRbUZ5ZVVOdmIzSmtUbFlBUW1GeWVVTnZiM0prVG05UVpYSnpjRTVXQUZSaGMydERiM1Z1ZEU1V0FGQnlhVzFwZEdsMlpVTnZkVzUwVGxZQVVISnBiV2wwYVhabFNXNWthV05sYzA1V0FFTnNhWEJFYVhOMFlXNWpaVkJsY2xacFpYZE9WZ0JEZFd4c1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxZQVRHRjVaWEpRWlhKV2FXVjNUbFlBVFdWemFGWnBaWGREYjNWdWRFNVdBRTFsYzJoV2FXVjNTVzVrYVdObGMwNVdBRmRoY25CelVHVnlVMDFPVmdCVFRVTnZkVzUwVGxZQVYyRnljRWxFVGxZQVUwMUpSRTVXQUhWdWEyNXZkMjRnWW5WcGJIUXRhVzRnZG1GeWFXRmliR1VBZEdWdGNBQm5iRzlpWVd3QVkyOXVjM1FBWTI5dWMzUWdLSEpsWVdRZ2IyNXNlU2tBWjJ4ZlZtVnlkR1Y0U1dRQVoyeGZTVzV6ZEdGdVkyVkpaQUJuYkY5UWIzTnBkR2x2YmdCbmJGOVFiMmx1ZEZOcGVtVUFaMnhmUTJ4cGNGWmxjblJsZUFCbmJGOUdjbTl1ZEVaaFkybHVad0JuYkY5R2NtRm5RMjl2Y21RQVoyeGZVRzlwYm5SRGIyOXlaQUJtY21GblEyOXNiM0lBWjJ4ZlJuSmhaMFJsY0hSb0FIVnVhMjV2ZDI0Z2NYVmhiR2xtYVdWeUFFZE1YMDVXWDIxbGMyaGZjMmhoWkdWeUFFZE1YMFZZVkY5bmNIVmZjMmhoWkdWeU5RQkhURjlQUlZOZlozQjFYM05vWVdSbGNqVUFSMHhmUzBoU1gyMWxiVzl5ZVY5elkyOXdaVjl6WlcxaGJuUnBZM01BUVlTd0R3c0dPUUVBQURvQkFFR1VzQThMd3dvN0FRQUFQQUVBQUNWekpXUUFZVzV2YmtBQVIweGZSVmhVWDJSbGJXOTBaVjkwYjE5b1pXeHdaWEpmYVc1MmIyTmhkR2x2YmdCSFRGOUZXRlJmWTI5dWRISnZiRjltYkc5M1gyRjBkSEpwWW5WMFpYTUFVM1JoWTJzZ2JtOTNBQ0FsWkFCemVXNTBZWGdnWlhKeWIzSXNJSFZ1Wlhod1pXTjBaV1FnSlhNQWMzbHVkR0Y0SUdWeWNtOXlMQ0IxYm1WNGNHVmpkR1ZrSUNWekxDQmxlSEJsWTNScGJtY2dKWE1BYzNsdWRHRjRJR1Z5Y205eUxDQjFibVY0Y0dWamRHVmtJQ1Z6TENCbGVIQmxZM1JwYm1jZ0pYTWdiM0lnSlhNQWMzbHVkR0Y0SUdWeWNtOXlMQ0IxYm1WNGNHVmpkR1ZrSUNWekxDQmxlSEJsWTNScGJtY2dKWE1nYjNJZ0pYTWdiM0lnSlhNQWMzbHVkR0Y0SUdWeWNtOXlMQ0IxYm1WNGNHVmpkR1ZrSUNWekxDQmxlSEJsWTNScGJtY2dKWE1nYjNJZ0pYTWdiM0lnSlhNZ2IzSWdKWE1BUkdWc1pYUnBibWNBN3RZREFQUFdBd0Q2MWdNQXpvOERBTkdQQXdEZWp3TUEvSThEQUoyUEF3QkRrQU1BVUpBREFDS1FBd0Jma0FNQWJwQURBTTZQQXdEUmp3TUF5SThEQUFEWEF3QVMxd01BSHRjREFDelhBd0E0MXdNQVJkY0RBRlBYQXdCaTF3TUFiOWNEQUgzWEF3Q0gxd01Bblk4REFIdk5Bd0NKelFNQWdzMERBSkROQXdDWHpRTUFuODBEQU1MTkF3RGN6UU1BLzgwREFIYk5Bd0NuelFNQXJjMERBTFBOQXdESHpRTUF6TTBEQU5QTkF3RGl6UU1BNTgwREFPdk5Bd0R2elFNQThzMERBQXZPQXdBV3pnTUFJTTREQUNyT0F3QjJ6UU1BTTg0REFEdk9Bd0JEemdNQVc4NERBSGJOQXdCS3pnTUFVTTREQUZiT0F3Qmd6Z01BWmM0REFIYk5Bd0JwemdNQWNzNERBSHZPQXdDaXpnTUFkczBEQUlQT0F3Q0t6Z01Ba2M0REFKek9Bd0NvemdNQXJzNERBSnFNQXdDenpnTUF1TTREQU1ET0F3RHV6Z01BOHM0REFQek9Bd0Q0emdNQTljNERBT3JPQXdEc3pnTUFBTThEQUFUUEF3Qkp6d01BUHM4REFFSFBBd0JFendNQVRNOERBRlBQQXdCYXp3TUFJSTREQUhEUEF3QWprUU1BS3BFREFJM1BBd0NVendNQW5NOERBS1RQQXdCMnp3TUFlczhEQUszUEF3QzF6d01BdnM4REFNUFBBd0IvendNQXo4OERBTm5QQXdEZnp3TUE5ODhEQUpxTUF3QU8wQU1BSE5BREFDclFBd0EyMEFNQVNOQURBRnZRQXdCdzBBTUFmZEFEQUlqUUF3Q1YwQU1BcU5BREFMZlFBd0RHMEFNQTFkQURBT1RRQXdEejBBTUFBTkVEQUJYUkF3QWswUU1BTTlFREFFTFJBd0JSMFFNQVlORURBR25SQXdCMDBRTUFnTkVEQUk3UkF3Q1owUU1BcHRFREFLM1JBd0MyMFFNQXdORURBTXZSQXdEWTBRTUE1ZEVEQU96UkF3RHowUU1BQXRJREFCSFNBd0FnMGdNQUw5SURBRDdTQXdCTjBnTUFYTklEQUd2U0F3QjIwZ01BZ05JREFKVFNBd0NuMGdNQXNOSURBTDNTQXdESzBnTUExdElEQU56U0F3RHEwZ01BK05JREFBZlRBd0FXMHdNQUl0TURBQ3pUQXdBeTB3TUFRZE1EQUViVEF3QlEwd01BVzlNREFHWFRBd0J1MHdNQWVOTURBSWZUQXdDUTB3TUFuOU1EQUt6VEF3Qzkwd01BenRNREFPZlRBd0QrMHdNQUR0UURBQ2JVQXdBODFBTUFUOVFEQUZuVUF3QmwxQU1BY2RRREFJalVBd0NYMUFNQXE5UURBTVBVQXdEVjFBTUE2OVFEQVA3VUF3QU4xUU1BSTlVREFDN1ZBd0E3MVFNQVVkVURBR0xWQXdCMjFRTUFpTlVEQUozVkF3Q3QxUU1BdmRVREFNVFZBd0RoMVFNQThkVURBTTdWQXdBQjFnTUFEZFlEQUNEV0F3QXMxZ01BUGRZREFGRFdBd0JtMWdNQWZOWURBSXZXQXdDYjFnTUFyZFlEQUxyV0F3REUxZ01BemRZREFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBUWVTNkR3c0dRZ0VBQUVNQkFFSDB1ZzhMaUFORUFRQUFSUUVBQUVOaGJtNXZkQ0J0YVhnZ1JWTWdjSEp2Wm1sc1pTQjNhWFJvSUc1dmJpMUZVeUJ3Y205bWFXeGxJSE5vWVdSbGNuTUFRMkZ1Ym05MElHRjBkR0ZqYUNCdGRXeDBhWEJzWlNCRlV5QnphR0ZrWlhKeklHOW1JSFJvWlNCellXMWxJSFI1Y0dVZ2RHOGdZU0J6YVc1bmJHVWdjSEp2WjNKaGJRQUtUR2x1YTJWa0lBQWdjM1JoWjJVNkNnb0FRSFJvYVhNQVFHTnZkVzUwQUdGc2JHOWpZWFJ2Y2p4VVBqbzZZV3hzYjJOaGRHVW9jMmw2WlY5MElHNHBJQ2R1SnlCbGVHTmxaV1J6SUcxaGVHbHRkVzBnYzNWd2NHOXlkR1ZrSUhOcGVtVUFWMkZ5Ym1sdVp5d2dLSFpsY25OcGIyNHNJSEJ5YjJacGJHVXBJR1p2Y21ObFpDQjBieUJpWlNBb0FDd2dBQ2tzSUhkb2FXeGxJR2x1SUhOdmRYSmpaU0JqYjJSbElHbDBJR2x6SUNnQUtRb0FTV3hzWldkaGJDQjBieUJvWVhabElHNXZiaTFqYjIxdFpXNTBMQ0J1YjI0dGQyaHBkR1Z6Y0dGalpTQjBiMnRsYm5NZ1ltVm1iM0psSUNOMlpYSnphVzl1QUNOMlpYSnphVzl1QUFvZ2FXNTBPd0JCaUw0UEMvSUtSZ0VBQUVjQkFBQWxaQUJ1YjI1bEFHTnZjbVVBWTI5dGNHRjBhV0pwYkdsMGVRQmxjd0IxYm10dWIzZHVJSEJ5YjJacGJHVUFJM1psY25OcGIyNDZJSFpsY25OcGIyNXpJRE13TUN3Z016RXdMQ0JoYm1RZ016SXdJSEpsY1hWcGNtVWdjM0JsWTJsbWVXbHVaeUIwYUdVZ0oyVnpKeUJ3Y205bWFXeGxBQ04yWlhKemFXOXVPaUIyWlhKemFXOXVjeUJpWldadmNtVWdNVFV3SUdSdklHNXZkQ0JoYkd4dmR5QmhJSEJ5YjJacGJHVWdkRzlyWlc0QUkzWmxjbk5wYjI0NklIWmxjbk5wYjI1eklETXdNQ3dnTXpFd0xDQmhibVFnTXpJd0lITjFjSEJ2Y25RZ2IyNXNlU0IwYUdVZ1pYTWdjSEp2Wm1sc1pRQWpkbVZ5YzJsdmJqb2diMjVzZVNCMlpYSnphVzl1SURNd01Dd2dNekV3TENCaGJtUWdNekl3SUhOMWNIQnZjblFnZEdobElHVnpJSEJ5YjJacGJHVUFkbVZ5YzJsdmJpQnViM1FnYzNWd2NHOXlkR1ZrQUNOMlpYSnphVzl1T2lCblpXOXRaWFJ5ZVNCemFHRmtaWEp6SUhKbGNYVnBjbVVnWlhNZ2NISnZabWxzWlNCM2FYUm9JSFpsY25OcGIyNGdNekV3SUc5eUlHNXZiaTFsY3lCd2NtOW1hV3hsSUhkcGRHZ2dkbVZ5YzJsdmJpQXhOVEFnYjNJZ1lXSnZkbVVBSTNabGNuTnBiMjQ2SUhSbGMzTmxiR3hoZEdsdmJpQnphR0ZrWlhKeklISmxjWFZwY21VZ1pYTWdjSEp2Wm1sc1pTQjNhWFJvSUhabGNuTnBiMjRnTXpFd0lHOXlJRzV2YmkxbGN5QndjbTltYVd4bElIZHBkR2dnZG1WeWMybHZiaUF4TlRBZ2IzSWdZV0p2ZG1VQUkzWmxjbk5wYjI0NklHTnZiWEIxZEdVZ2MyaGhaR1Z5Y3lCeVpYRjFhWEpsSUdWeklIQnliMlpwYkdVZ2QybDBhQ0IyWlhKemFXOXVJRE14TUNCdmNpQmhZbTkyWlN3Z2IzSWdibTl1TFdWeklIQnliMlpwYkdVZ2QybDBhQ0IyWlhKemFXOXVJRFF5TUNCdmNpQmhZbTkyWlFBamRtVnljMmx2YmpvZ2NtRjVJSFJ5WVdOcGJtY2djMmhoWkdWeWN5QnlaWEYxYVhKbElHNXZiaTFsY3lCd2NtOW1hV3hsSUhkcGRHZ2dkbVZ5YzJsdmJpQTBOakFnYjNJZ1lXSnZkbVVBSTNabGNuTnBiMjQ2SUcxbGMyZ3ZkR0Z6YXlCemFHRmtaWEp6SUhKbGNYVnBjbVVnWlhNZ2NISnZabWxzWlNCM2FYUm9JSFpsY25OcGIyNGdNekl3SUc5eUlHRmliM1psTENCdmNpQnViMjR0WlhNZ2NISnZabWxzWlNCM2FYUm9JSFpsY25OcGIyNGdORFV3SUc5eUlHRmliM1psQUNOMlpYSnphVzl1T2lCemRHRjBaVzFsYm5RZ2JYVnpkQ0JoY0hCbFlYSWdabWx5YzNRZ2FXNGdaWE10Y0hKdlptbHNaU0J6YUdGa1pYSTdJR0psWm05eVpTQmpiMjF0Wlc1MGN5QnZjaUJ1Wlhkc2FXNWxjd0FqZG1WeWMybHZiam9nUlZNZ2MyaGhaR1Z5Y3lCbWIzSWdVMUJKVWkxV0lISmxjWFZwY21VZ2RtVnljMmx2YmlBek1UQWdiM0lnYUdsbmFHVnlBQ04yWlhKemFXOXVPaUJqYjIxd2FXeGhkR2x2YmlCbWIzSWdVMUJKVWkxV0lHUnZaWE1nYm05MElITjFjSEJ2Y25RZ2RHaGxJR052YlhCaGRHbGlhV3hwZEhrZ2NISnZabWxzWlFBamRtVnljMmx2YmpvZ1JHVnphM1J2Y0NCemFHRmtaWEp6SUdadmNpQldkV3hyWVc0Z1UxQkpVaTFXSUhKbGNYVnBjbVVnZG1WeWMybHZiaUF4TkRBZ2IzSWdhR2xuYUdWeUFDTjJaWEp6YVc5dU9pQkVaWE5yZEc5d0lITm9ZV1JsY25NZ1ptOXlJRTl3Wlc1SFRDQlRVRWxTTFZZZ2NtVnhkV2x5WlNCMlpYSnphVzl1SURNek1DQnZjaUJvYVdkb1pYSUFjbVZzWVhobFpDMWxjbkp2Y25NQWMzVndjSEpsYzNNdGQyRnlibWx1WjNNQWEyVmxjQzExYm1OaGJHeGxaQUJ6YjNWeVkyVXRaVzUwY25sd2IybHVkQUFnQUZWdVlXSnNaU0IwYnlCd1lYSnpaU0JpZFdsc2RDMXBibk1BVlc1aFlteGxJSFJ2SUhCaGNuTmxJR0oxYVd4MExXbHVjd29sY3dvQVFuVnBiSFJwYmxONWJXSnZiRlJoWW14bElIc0tBSDBLQUcxaGFXNEFRWVRKRHd1M0FVZ0JBQUJKQVFBQVRtOGdaWEp5YjNKekxpQWdUbThnWTI5a1pTQm5aVzVsY21GMGFXOXVJRzl5SUd4cGJtdHBibWNnZDJGeklISmxjWFZsYzNSbFpDNEFJR052YlhCcGJHRjBhVzl1SUdWeWNtOXljeTRnSUU1dklHTnZaR1VnWjJWdVpYSmhkR1ZrTGdvS0FGZEJVazVKVGtjNklBQkZVbEpQVWpvZ0FFbE9WRVZTVGtGTUlFVlNVazlTT2lBQVZVNUpUVkJNUlUxRlRsUkZSRG9nQUU1UFZFVTZJQUJWVGt0T1QxZE9JRVZTVWs5U09pQUFDZ0JCeE1vUEN5SktBUUFBU3dFQUFFd0JBQUJOQVFBQVRnRUFBRThCQUFCUUFRQUFVUUVBQUZJQkFFSHd5ZzhMSWtvQkFBQlRBUUFBVEFFQUFFMEJBQUJPQVFBQVR3RUFBRkFCQUFBR0FBQUFVZ0VBUVp6TER3c2pTZ0VBQUZRQkFBQlZBUUFBVFFFQUFFNEJBQUJQQVFBQVpXNTBjbmt0Y0c5cGJuUUFRY3pMRHd1NUFnRUFBQUFBQUFBQVkyeHBaVzUwSUhaMWJHdGhiakV3TUFCamJHbGxiblFnYjNCbGJtZHNNVEF3QUhSaGNtZGxkQzFsYm5ZZ2MzQnBjbll4TGpFQWRHRnlaMlYwTFdWdWRpQnpjR2x5ZGpFdU1nQjBZWEpuWlhRdFpXNTJJSE53YVhKMk1TNHpBSFJoY21kbGRDMWxibllnYzNCcGNuWXhMalFBZEdGeVoyVjBMV1Z1ZGlCemNHbHlkakV1TlFCMFlYSm5aWFF0Wlc1MklITndhWEoyVlc1cmJtOTNiZ0IwWVhKblpYUXRaVzUySUhaMWJHdGhiakV1TUFCMFlYSm5aWFF0Wlc1MklIWjFiR3RoYmpFdU1RQjBZWEpuWlhRdFpXNTJJSFoxYkd0aGJqRXVNZ0IwWVhKblpYUXRaVzUySUhaMWJHdGhibFZ1YTI1dmQyNEFkR0Z5WjJWMExXVnVkaUJ2Y0dWdVoyd0FFOThEQUJqZkF3QXUzd01BSGQ4REFDN2ZBd0F1M3dNQUx0OERBQ3ZmQXdBQkFBQUFBQUFBQUFJQVFaVE9Ed3VmQVFNQUFBQm1NVFlBYVRnQWRUZ0FhVEUyQUhVeE5nQnBOalFBZFRZMEFHRjFBR0Z6Ym5ZQWFRQjFBRWtBY0FCMEFITUFRUUJUQUVVQVdRQXlBRE1BUXdBeEFGSXlBRUlBVUFCTkFITjBjblZqZEMwQVlteHZZMnN0QUhNbFpBQnpKWEFBSldRQUlEd0FMQUErQURvZ0FDQUFXekJkQUFvQUtBQnZaaUFBQUNrQWJnQmhibTl1ZVcxdmRYTWdiV1Z0WW1WeUlBQWdiMllnQUV4RlZrVk1JQUJCdk04UEM2SUJWZ0VBQUZjQkFBQllBUUFBS1FFQUFDb0JBQUJaQVFBQVdnRUFBRnNCQUFCY0FRQUFMd0VBQURBQkFBQXhBUUFBWFFFQUFGNEJBQUF5QVFBQU13RUFBRFFCQUFBMUFRQUFOZ0VBQUY4QkFBQTNBUUFBT0FFQUFHQUJBQUJoQVFBQVlnRUFBR01CQUFCa0FRQUFaUUVBQUdZQkFBQm5BUUFBYUFFQUFHa0JBQUJxQVFBQWF3RUFBR3dCQUFCdEFRQUFiZ0VBQUc4QkFBQndBUUFBY1FFQUFISUJBRUhvMEE4TGhnRnpBUUFBZEFFQUFIVUJBQUFwQVFBQUtnRUFBQ3NCQUFBc0FRQUFMUUVBQUM0QkFBQjJBUUFBZHdFQUFERUJBQUI0QVFBQWVRRUFBRElCQUFBekFRQUFOQUVBQURVQkFBQTJBUUFBZWdFQUFEY0JBQUE0QVFBQWV3RUFBSHdCQUFCOUFRQUFmZ0VBQUg4QkFBQ0FBUUFBZ1FFQUFJSUJBQUNEQVFBQWhBRUFBSVVCQUFDR0FRQkIrTkVQQzg5U2h3RUFBQ2NCQUFDSUFRQUFLUUVBQUNvQkFBQXJBUUFBTEFFQUFDMEJBQUF1QVFBQUx3RUFBREFCQUFDSkFRQUFpZ0VBQUlzQkFBQXlBUUFBTXdFQUFJd0JBQUNOQVFBQWpnRUFBSThCQUFBM0FRQUFPQUVBQUpBQkFBQ1JBUUFBa2dFQUFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBVk9jREFFN25Bd0JRNXdNQVV1Y0RBRmJuQXdCWjV3TUFXK2NEQUVkTVgwOUZVMTkwWlhoMGRYSmxYek5FQUVkTVgwOUZVMTl6ZEdGdVpHRnlaRjlrWlhKcGRtRjBhWFpsY3dCSFRGOUZXRlJmWm5KaFoxOWtaWEIwYUFCSFRGOVBSVk5mUlVkTVgybHRZV2RsWDJWNGRHVnlibUZzQUVkTVgwOUZVMTlGUjB4ZmFXMWhaMlZmWlhoMFpYSnVZV3hmWlhOemJETUFSMHhmUlZoVVgxbFZWbDkwWVhKblpYUUFSMHhmUlZoVVgzTm9ZV1JsY2w5MFpYaDBkWEpsWDJ4dlpBQkhURjlGV0ZSZmMyaGhaRzkzWDNOaGJYQnNaWEp6QUVkTVgwRlNRbDkwWlhoMGRYSmxYM0psWTNSaGJtZHNaUUJIVEY4elJFeGZZWEp5WVhsZmIySnFaV04wY3dCSFRGOUJVa0pmYzJoaFpHbHVaMTlzWVc1bmRXRm5aVjgwTWpCd1lXTnJBRWRNWDBGU1FsOTBaWGgwZFhKbFgyZGhkR2hsY2dCSFRGOUJVa0pmWjNCMVgzTm9ZV1JsY2pVQVIweGZRVkpDWDNObGNHRnlZWFJsWDNOb1lXUmxjbDl2WW1wbFkzUnpBRWRNWDBGU1FsOWpiMjF3ZFhSbFgzTm9ZV1JsY2dCSFRGOUJVa0pmZEdWemMyVnNiR0YwYVc5dVgzTm9ZV1JsY2dCSFRGOUJVa0pmWlc1b1lXNWpaV1JmYkdGNWIzVjBjd0JIVEY5QlVrSmZkR1Y0ZEhWeVpWOWpkV0psWDIxaGNGOWhjbkpoZVFCSFRGOUJVa0pmZEdWNGRIVnlaVjl0ZFd4MGFYTmhiWEJzWlFCSFRGOUJVa0pmYzJoaFpHVnlYM1JsZUhSMWNtVmZiRzlrQUVkTVgwRlNRbDlsZUhCc2FXTnBkRjloZEhSeWFXSmZiRzlqWVhScGIyNEFSMHhmUVZKQ1gyVjRjR3hwWTJsMFgzVnVhV1p2Y20xZmJHOWpZWFJwYjI0QVIweGZRVkpDWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxBRWRNWDBGU1FsOXphR0ZrWlhKZllYUnZiV2xqWDJOdmRXNTBaWEp6QUVkTVgwRlNRbDl6YUdGa1pYSmZaSEpoZDE5d1lYSmhiV1YwWlhKekFFZE1YMEZTUWw5emFHRmtaWEpmWjNKdmRYQmZkbTkwWlFCSFRGOUJVa0pmWkdWeWFYWmhkR2wyWlY5amIyNTBjbTlzQUVkTVgwRlNRbDl6YUdGa1pYSmZkR1Y0ZEhWeVpWOXBiV0ZuWlY5ellXMXdiR1Z6QUVkTVgwRlNRbDkyYVdWM2NHOXlkRjloY25KaGVRQkhURjlCVWtKZlozQjFYM05vWVdSbGNsOXBiblEyTkFCSFRGOUJVa0pmWjNCMVgzTm9ZV1JsY2w5bWNEWTBBRWRNWDBGU1FsOXphR0ZrWlhKZlltRnNiRzkwQUVkTVgwRlNRbDl6Y0dGeWMyVmZkR1Y0ZEhWeVpUSUFSMHhmUVZKQ1gzTndZWEp6WlY5MFpYaDBkWEpsWDJOc1lXMXdBRWRNWDBGU1FsOXphR0ZrWlhKZmMzUmxibU5wYkY5bGVIQnZjblFBUjB4ZlFWSkNYM0J2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVBUjB4ZlFWSkNYM05vWVdSbGNsOTJhV1YzY0c5eWRGOXNZWGxsY2w5aGNuSmhlUUJIVEY5QlVrSmZabkpoWjIxbGJuUmZjMmhoWkdWeVgybHVkR1Z5Ykc5amF3QkhURjlCVWtKZmMyaGhaR1Z5WDJOc2IyTnJBRWRNWDBGU1FsOTFibWxtYjNKdFgySjFabVpsY2w5dlltcGxZM1FBUjB4ZlFWSkNYM05oYlhCc1pWOXphR0ZrYVc1bkFFZE1YMHRJVWw5emFHRmtaWEpmYzNWaVozSnZkWEJmWW1GemFXTUFSMHhmUzBoU1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5MmIzUmxBRWRNWDB0SVVsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZllYSnBkR2h0WlhScFl3QkhURjlMU0ZKZmMyaGhaR1Z5WDNOMVltZHliM1Z3WDJKaGJHeHZkQUJIVEY5TFNGSmZjMmhoWkdWeVgzTjFZbWR5YjNWd1gzTm9kV1ptYkdVQVIweGZTMGhTWDNOb1lXUmxjbDl6ZFdKbmNtOTFjRjl6YUhWbVpteGxYM0psYkdGMGFYWmxBRWRNWDB0SVVsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZlkyeDFjM1JsY21Wa0FFZE1YMHRJVWw5emFHRmtaWEpmYzNWaVozSnZkWEJmY1hWaFpBQkhURjlMU0ZKZmJXVnRiM0o1WDNOamIzQmxYM05sYldGdWRHbGpjd0JIVEY5RldGUmZjMmhoWkdWeVgyRjBiMjFwWTE5cGJuUTJOQUJIVEY5RldGUmZjMmhoWkdWeVgyNXZibDlqYjI1emRHRnVkRjluYkc5aVlXeGZhVzVwZEdsaGJHbDZaWEp6QUVkTVgwVllWRjl6YUdGa1pYSmZhVzFoWjJWZmJHOWhaRjltYjNKdFlYUjBaV1FBUjB4ZlJWaFVYM0J2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVBUjB4ZlJWaFVYMk52Ym5SeWIyeGZabXh2ZDE5aGRIUnlhV0oxZEdWekFFZE1YMFZZVkY5dWIyNTFibWxtYjNKdFgzRjFZV3hwWm1sbGNnQkhURjlGV0ZSZmMyRnRjR3hsY214bGMzTmZkR1Y0ZEhWeVpWOW1kVzVqZEdsdmJuTUFSMHhmUlZoVVgzTmpZV3hoY2w5aWJHOWphMTlzWVhsdmRYUUFSMHhmUlZoVVgyWnlZV2R0Wlc1MFgybHVkbTlqWVhScGIyNWZaR1Z1YzJsMGVRQkhURjlGV0ZSZlluVm1abVZ5WDNKbFptVnlaVzVqWlFCSFRGOUZXRlJmWW5WbVptVnlYM0psWm1WeVpXNWpaVElBUjB4ZlJWaFVYMkoxWm1abGNsOXlaV1psY21WdVkyVmZkWFpsWXpJQVIweGZSVmhVWDJSbGJXOTBaVjkwYjE5b1pXeHdaWEpmYVc1MmIyTmhkR2x2YmdCSFRGOUZXRlJmYzJoaFpHVnlYekUyWW1sMFgzTjBiM0poWjJVQVIweGZSVmhVWDNOb1lXUmxjbDg0WW1sMFgzTjBiM0poWjJVQVIweGZSMDlQUjB4RlgyTndjRjl6ZEhsc1pWOXNhVzVsWDJScGNtVmpkR2wyWlFCSFRGOUhUMDlIVEVWZmFXNWpiSFZrWlY5a2FYSmxZM1JwZG1VQVIweGZRVTFFWDNOb1lXUmxjbDlpWVd4c2IzUUFSMHhmUVUxRVgzTm9ZV1JsY2w5MGNtbHVZWEo1WDIxcGJtMWhlQUJIVEY5QlRVUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgzWmxjblJsZUY5d1lYSmhiV1YwWlhJQVIweGZRVTFFWDJkamJsOXphR0ZrWlhJQVIweGZRVTFFWDJkd2RWOXphR0ZrWlhKZmFHRnNabDltYkc5aGRBQkhURjlCVFVSZmRHVjRkSFZ5WlY5bllYUm9aWEpmWW1saGMxOXNiMlFBUjB4ZlFVMUVYMmR3ZFY5emFHRmtaWEpmYVc1ME1UWUFSMHhmUVUxRVgzTm9ZV1JsY2w5cGJXRm5aVjlzYjJGa1gzTjBiM0psWDJ4dlpBQkhURjlCVFVSZmMyaGhaR1Z5WDJaeVlXZHRaVzUwWDIxaGMyc0FSMHhmUVUxRVgyZHdkVjl6YUdGa1pYSmZhR0ZzWmw5bWJHOWhkRjltWlhSamFBQkhURjlKVGxSRlRGOXphR0ZrWlhKZmFXNTBaV2RsY2w5bWRXNWpkR2x2Ym5NeUFFZE1YMDVXWDNOaGJYQnNaVjl0WVhOclgyOTJaWEp5YVdSbFgyTnZkbVZ5WVdkbEFFZE1YMDVXWDJkbGIyMWxkSEo1WDNOb1lXUmxjbDl3WVhOemRHaHliM1ZuYUFCSFRGOU9WbDkyYVdWM2NHOXlkRjloY25KaGVUSUFSMHhmVGxaZmMzUmxjbVZ2WDNacFpYZGZjbVZ1WkdWeWFXNW5BRWRNWDA1V1dGOXRkV3gwYVhacFpYZGZjR1Z5WDNacFpYZGZZWFIwY21saWRYUmxjd0JIVEY5T1ZsOXphR0ZrWlhKZllYUnZiV2xqWDJsdWREWTBBRWRNWDA1V1gyTnZibk5sY25aaGRHbDJaVjl5WVhOMFpYSmZkVzVrWlhKbGMzUnBiV0YwYVc5dUFFZE1YMDVXWDNOb1lXUmxjbDl1YjNCbGNuTndaV04wYVhabFgybHVkR1Z5Y0c5c1lYUnBiMjRBUjB4ZlRsWmZjMmhoWkdWeVgzTjFZbWR5YjNWd1gzQmhjblJwZEdsdmJtVmtBRWRNWDA1V1gzTm9ZV1JwYm1kZmNtRjBaVjlwYldGblpRQkhURjlPVmw5eVlYbGZkSEpoWTJsdVp3QkhURjlPVmw5bWNtRm5iV1Z1ZEY5emFHRmtaWEpmWW1GeWVXTmxiblJ5YVdNQVIweGZUbFpmWTI5dGNIVjBaVjl6YUdGa1pYSmZaR1Z5YVhaaGRHbDJaWE1BUjB4ZlRsWmZjMmhoWkdWeVgzUmxlSFIxY21WZlptOXZkSEJ5YVc1MEFFZE1YMDVXWDIxbGMyaGZjMmhoWkdWeUFFZE1YMDVXWDJOdmIzQmxjbUYwYVhabFgyMWhkSEpwZUFCSFRGOU9WbDl6YUdGa1pYSmZjMjFmWW5WcGJIUnBibk1BUjB4ZlRsWmZhVzUwWldkbGNsOWpiMjl3WlhKaGRHbDJaVjl0WVhSeWFYZ0FSMHhmUVU1RVVrOUpSRjlsZUhSbGJuTnBiMjVmY0dGamExOWxjek14WVFCSFRGOUxTRkpmWW14bGJtUmZaWEYxWVhScGIyNWZZV1IyWVc1alpXUUFSMHhmVDBWVFgzTmhiWEJzWlY5MllYSnBZV0pzWlhNQVIweGZUMFZUWDNOb1lXUmxjbDlwYldGblpWOWhkRzl0YVdNQVIweGZUMFZUWDNOb1lXUmxjbDl0ZFd4MGFYTmhiWEJzWlY5cGJuUmxjbkJ2YkdGMGFXOXVBRWRNWDA5RlUxOTBaWGgwZFhKbFgzTjBiM0poWjJWZmJYVnNkR2x6WVcxd2JHVmZNbVJmWVhKeVlYa0FSMHhmUlZoVVgyZGxiMjFsZEhKNVgzTm9ZV1JsY2dCSFRGOUZXRlJmWjJWdmJXVjBjbmxmY0c5cGJuUmZjMmw2WlFCSFRGOUZXRlJmWjNCMVgzTm9ZV1JsY2pVQVIweGZSVmhVWDNCeWFXMXBkR2wyWlY5aWIzVnVaR2x1WjE5aWIzZ0FSMHhmUlZoVVgzTm9ZV1JsY2w5cGIxOWliRzlqYTNNQVIweGZSVmhVWDNSbGMzTmxiR3hoZEdsdmJsOXphR0ZrWlhJQVIweGZSVmhVWDNSbGMzTmxiR3hoZEdsdmJsOXdiMmx1ZEY5emFYcGxBRWRNWDBWWVZGOTBaWGgwZFhKbFgySjFabVpsY2dCSFRGOUZXRlJmZEdWNGRIVnlaVjlqZFdKbFgyMWhjRjloY25KaGVRQkhURjlQUlZOZloyVnZiV1YwY25sZmMyaGhaR1Z5QUVkTVgwOUZVMTluWlc5dFpYUnllVjl3YjJsdWRGOXphWHBsQUVkTVgwOUZVMTluY0hWZmMyaGhaR1Z5TlFCSFRGOVBSVk5mY0hKcGJXbDBhWFpsWDJKdmRXNWthVzVuWDJKdmVBQkhURjlQUlZOZmMyaGhaR1Z5WDJsdlgySnNiMk5yY3dCSFRGOVBSVk5mZEdWemMyVnNiR0YwYVc5dVgzTm9ZV1JsY2dCSFRGOVBSVk5mZEdWemMyVnNiR0YwYVc5dVgzQnZhVzUwWDNOcGVtVUFSMHhmVDBWVFgzUmxlSFIxY21WZlluVm1abVZ5QUVkTVgwOUZVMTkwWlhoMGRYSmxYMk4xWW1WZmJXRndYMkZ5Y21GNUFFZE1YMFZZVkY5a1pYWnBZMlZmWjNKdmRYQUFSMHhmUlZoVVgyMTFiSFJwZG1sbGR3QkhURjlGV0ZSZmMyaGhaR1Z5WDNKbFlXeDBhVzFsWDJOc2IyTnJBRWRNWDA5V1VsOXRkV3gwYVhacFpYY0FSMHhmVDFaU1gyMTFiSFJwZG1sbGR6SUFSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6QUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOXBiblE0QUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOXBiblF4TmdCSFRGOUZXRlJmYzJoaFpHVnlYMlY0Y0d4cFkybDBYMkZ5YVhSb2JXVjBhV05mZEhsd1pYTmZhVzUwTXpJQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMmx1ZERZMEFFZE1YMFZZVkY5emFHRmtaWEpmWlhod2JHbGphWFJmWVhKcGRHaHRaWFJwWTE5MGVYQmxjMTltYkc5aGRERTJBRWRNWDBWWVZGOXphR0ZrWlhKZlpYaHdiR2xqYVhSZllYSnBkR2h0WlhScFkxOTBlWEJsYzE5bWJHOWhkRE15QUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOW1iRzloZERZMEFFZE1YMFZZVkY5emFHRmtaWEpmYzNWaVozSnZkWEJmWlhoMFpXNWtaV1JmZEhsd1pYTmZhVzUwT0FCSFRGOUZXRlJmYzJoaFpHVnlYM04xWW1keWIzVndYMlY0ZEdWdVpHVmtYM1I1Y0dWelgybHVkREUyQUVkTVgwVllWRjl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZaWGgwWlc1a1pXUmZkSGx3WlhOZmFXNTBOalFBUjB4ZlJWaFVYM05vWVdSbGNsOXpkV0puY205MWNGOWxlSFJsYm1SbFpGOTBlWEJsYzE5bWJHOWhkREUyQUNOa1pXWnBibVVnUjB4ZlJWTWdNUW9qWkdWbWFXNWxJRWRNWDBaU1FVZE5SVTVVWDFCU1JVTkpVMGxQVGw5SVNVZElJREVLSTJSbFptbHVaU0JIVEY5UFJWTmZkR1Y0ZEhWeVpWOHpSQ0F4Q2lOa1pXWnBibVVnUjB4ZlQwVlRYM04wWVc1a1lYSmtYMlJsY21sMllYUnBkbVZ6SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmWm5KaFoxOWtaWEIwYUNBeENpTmtaV1pwYm1VZ1IweGZUMFZUWDBWSFRGOXBiV0ZuWlY5bGVIUmxjbTVoYkNBeENpTmtaV1pwYm1VZ1IweGZUMFZUWDBWSFRGOXBiV0ZuWlY5bGVIUmxjbTVoYkY5bGMzTnNNeUF4Q2lOa1pXWnBibVVnUjB4ZlJWaFVYMWxWVmw5MFlYSm5aWFFnTVFvalpHVm1hVzVsSUVkTVgwVllWRjl6YUdGa1pYSmZkR1Y0ZEhWeVpWOXNiMlFnTVFvalpHVm1hVzVsSUVkTVgwVllWRjl6YUdGa2IzZGZjMkZ0Y0d4bGNuTWdNUW9qWkdWbWFXNWxJRWRNWDBGT1JGSlBTVVJmWlhoMFpXNXphVzl1WDNCaFkydGZaWE16TVdFZ01Rb2paR1ZtYVc1bElFZE1YMDlGVTE5ellXMXdiR1ZmZG1GeWFXRmliR1Z6SURFS0kyUmxabWx1WlNCSFRGOVBSVk5mYzJoaFpHVnlYMmx0WVdkbFgyRjBiMjFwWXlBeENpTmtaV1pwYm1VZ1IweGZUMFZUWDNOb1lXUmxjbDl0ZFd4MGFYTmhiWEJzWlY5cGJuUmxjbkJ2YkdGMGFXOXVJREVLSTJSbFptbHVaU0JIVEY5UFJWTmZkR1Y0ZEhWeVpWOXpkRzl5WVdkbFgyMTFiSFJwYzJGdGNHeGxYekprWDJGeWNtRjVJREVLSTJSbFptbHVaU0JIVEY5RldGUmZaMlZ2YldWMGNubGZjMmhoWkdWeUlERUtJMlJsWm1sdVpTQkhURjlGV0ZSZloyVnZiV1YwY25sZmNHOXBiblJmYzJsNlpTQXhDaU5rWldacGJtVWdSMHhmUlZoVVgyZHdkVjl6YUdGa1pYSTFJREVLSTJSbFptbHVaU0JIVEY5RldGUmZjSEpwYldsMGFYWmxYMkp2ZFc1a2FXNW5YMkp2ZUNBeENpTmtaV1pwYm1VZ1IweGZSVmhVWDNOb1lXUmxjbDlwYjE5aWJHOWphM01nTVFvalpHVm1hVzVsSUVkTVgwVllWRjkwWlhOelpXeHNZWFJwYjI1ZmMyaGhaR1Z5SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmZEdWemMyVnNiR0YwYVc5dVgzQnZhVzUwWDNOcGVtVWdNUW9qWkdWbWFXNWxJRWRNWDBWWVZGOTBaWGgwZFhKbFgySjFabVpsY2lBeENpTmtaV1pwYm1VZ1IweGZSVmhVWDNSbGVIUjFjbVZmWTNWaVpWOXRZWEJmWVhKeVlYa2dNUW9qWkdWbWFXNWxJRWRNWDA5RlUxOW5aVzl0WlhSeWVWOXphR0ZrWlhJZ01Rb2paR1ZtYVc1bElFZE1YMDlGVTE5blpXOXRaWFJ5ZVY5d2IybHVkRjl6YVhwbElERUtJMlJsWm1sdVpTQkhURjlQUlZOZlozQjFYM05vWVdSbGNqVWdNUW9qWkdWbWFXNWxJRWRNWDA5RlUxOXdjbWx0YVhScGRtVmZZbTkxYm1ScGJtZGZZbTk0SURFS0kyUmxabWx1WlNCSFRGOVBSVk5mYzJoaFpHVnlYMmx2WDJKc2IyTnJjeUF4Q2lOa1pXWnBibVVnUjB4ZlQwVlRYM1JsYzNObGJHeGhkR2x2Ymw5emFHRmtaWElnTVFvalpHVm1hVzVsSUVkTVgwOUZVMTkwWlhOelpXeHNZWFJwYjI1ZmNHOXBiblJmYzJsNlpTQXhDaU5rWldacGJtVWdSMHhmVDBWVFgzUmxlSFIxY21WZlluVm1abVZ5SURFS0kyUmxabWx1WlNCSFRGOVBSVk5mZEdWNGRIVnlaVjlqZFdKbFgyMWhjRjloY25KaGVTQXhDaU5rWldacGJtVWdSMHhmUlZoVVgzTm9ZV1JsY2w5dWIyNWZZMjl1YzNSaGJuUmZaMnh2WW1Gc1gybHVhWFJwWVd4cGVtVnljeUF4Q2dBalpHVm1hVzVsSUVkTVgwNVdYM05vWVdSbGNsOXViM0JsY25Od1pXTjBhWFpsWDJsdWRHVnljRzlzWVhScGIyNGdNUW9BSTJSbFptbHVaU0JIVEY5R1VrRkhUVVZPVkY5UVVrVkRTVk5KVDA1ZlNFbEhTQ0F4Q2lOa1pXWnBibVVnUjB4ZlFWSkNYM1JsZUhSMWNtVmZjbVZqZEdGdVoyeGxJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZjMmhoWkdsdVoxOXNZVzVuZFdGblpWODBNakJ3WVdOcklERUtJMlJsWm1sdVpTQkhURjlCVWtKZmRHVjRkSFZ5WlY5bllYUm9aWElnTVFvalpHVm1hVzVsSUVkTVgwRlNRbDluY0hWZmMyaGhaR1Z5TlNBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDNObGNHRnlZWFJsWDNOb1lXUmxjbDl2WW1wbFkzUnpJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZZMjl0Y0hWMFpWOXphR0ZrWlhJZ01Rb2paR1ZtYVc1bElFZE1YMEZTUWw5MFpYTnpaV3hzWVhScGIyNWZjMmhoWkdWeUlERUtJMlJsWm1sdVpTQkhURjlCVWtKZlpXNW9ZVzVqWldSZmJHRjViM1YwY3lBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDNSbGVIUjFjbVZmWTNWaVpWOXRZWEJmWVhKeVlYa2dNUW9qWkdWbWFXNWxJRWRNWDBGU1FsOTBaWGgwZFhKbFgyMTFiSFJwYzJGdGNHeGxJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZjMmhoWkdWeVgzUmxlSFIxY21WZmJHOWtJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZaWGh3YkdsamFYUmZZWFIwY21saVgyeHZZMkYwYVc5dUlERUtJMlJsWm1sdVpTQkhURjlCVWtKZlpYaHdiR2xqYVhSZmRXNXBabTl5YlY5c2IyTmhkR2x2YmlBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZjMmhoWkdWeVgyRjBiMjFwWTE5amIzVnVkR1Z5Y3lBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDNOb1lXUmxjbDlrY21GM1gzQmhjbUZ0WlhSbGNuTWdNUW9qWkdWbWFXNWxJRWRNWDBGU1FsOXphR0ZrWlhKZlozSnZkWEJmZG05MFpTQXhDaU5rWldacGJtVWdSMHhmUVZKQ1gyUmxjbWwyWVhScGRtVmZZMjl1ZEhKdmJDQXhDaU5rWldacGJtVWdSMHhmUVZKQ1gzTm9ZV1JsY2w5MFpYaDBkWEpsWDJsdFlXZGxYM05oYlhCc1pYTWdNUW9qWkdWbWFXNWxJRWRNWDBGU1FsOTJhV1YzY0c5eWRGOWhjbkpoZVNBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDJkd2RWOXphR0ZrWlhKZmFXNTBOalFnTVFvalpHVm1hVzVsSUVkTVgwRlNRbDluY0hWZmMyaGhaR1Z5WDJad05qUWdNUW9qWkdWbWFXNWxJRWRNWDBGU1FsOXphR0ZrWlhKZlltRnNiRzkwSURFS0kyUmxabWx1WlNCSFRGOUJVa0pmYzNCaGNuTmxYM1JsZUhSMWNtVXlJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZjM0JoY25ObFgzUmxlSFIxY21WZlkyeGhiWEFnTVFvalpHVm1hVzVsSUVkTVgwRlNRbDl6YUdGa1pYSmZjM1JsYm1OcGJGOWxlSEJ2Y25RZ01Rb2paR1ZtYVc1bElFZE1YMEZTUWw5ellXMXdiR1ZmYzJoaFpHbHVaeUF4Q2lOa1pXWnBibVVnUjB4ZlFWSkNYM0J2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVnTVFvalpHVm1hVzVsSUVkTVgwRlNRbDltY21GbmJXVnVkRjl6YUdGa1pYSmZhVzUwWlhKc2IyTnJJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZkVzVwWm05eWJWOWlkV1ptWlhKZmIySnFaV04wSURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYMjV2Ymw5amIyNXpkR0Z1ZEY5bmJHOWlZV3hmYVc1cGRHbGhiR2w2WlhKeklERUtJMlJsWm1sdVpTQkhURjlGV0ZSZmMyaGhaR1Z5WDJsdFlXZGxYMnh2WVdSZlptOXliV0YwZEdWa0lERUtJMlJsWm1sdVpTQkhURjlGV0ZSZmNHOXpkRjlrWlhCMGFGOWpiM1psY21GblpTQXhDaU5rWldacGJtVWdSMHhmUlZoVVgyTnZiblJ5YjJ4ZlpteHZkMTloZEhSeWFXSjFkR1Z6SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYm05dWRXNXBabTl5YlY5eGRXRnNhV1pwWlhJZ01Rb2paR1ZtYVc1bElFZE1YMFZZVkY5emFHRmtaWEpmTVRaaWFYUmZjM1J2Y21GblpTQXhDaU5rWldacGJtVWdSMHhmUlZoVVgzTm9ZV1JsY2w4NFltbDBYM04wYjNKaFoyVWdNUW9qWkdWbWFXNWxJRWRNWDBWWVZGOXpZVzF3YkdWeWJHVnpjMTkwWlhoMGRYSmxYMloxYm1OMGFXOXVjeUF4Q2lOa1pXWnBibVVnUjB4ZlJWaFVYM05qWVd4aGNsOWliRzlqYTE5c1lYbHZkWFFnTVFvalpHVm1hVzVsSUVkTVgwVllWRjltY21GbmJXVnVkRjlwYm5adlkyRjBhVzl1WDJSbGJuTnBkSGtnTVFvalpHVm1hVzVsSUVkTVgwVllWRjlpZFdabVpYSmZjbVZtWlhKbGJtTmxJREVLSTJSbFptbHVaU0JIVEY5RldGUmZZblZtWm1WeVgzSmxabVZ5Wlc1alpUSWdNUW9qWkdWbWFXNWxJRWRNWDBWWVZGOWlkV1ptWlhKZmNtVm1aWEpsYm1ObFgzVjJaV015SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmWkdWdGIzUmxYM1J2WDJobGJIQmxjbDlwYm5adlkyRjBhVzl1SURFS0kyUmxabWx1WlNCSFRGOUxTRkpmYzJoaFpHVnlYM04xWW1keWIzVndYMkpoYzJsaklERUtJMlJsWm1sdVpTQkhURjlMU0ZKZmMyaGhaR1Z5WDNOMVltZHliM1Z3WDNadmRHVWdNUW9qWkdWbWFXNWxJRWRNWDB0SVVsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZllYSnBkR2h0WlhScFl5QXhDaU5rWldacGJtVWdSMHhmUzBoU1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5aVlXeHNiM1FnTVFvalpHVm1hVzVsSUVkTVgwdElVbDl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZjMmgxWm1ac1pTQXhDaU5rWldacGJtVWdSMHhmUzBoU1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5emFIVm1abXhsWDNKbGJHRjBhWFpsSURFS0kyUmxabWx1WlNCSFRGOUxTRkpmYzJoaFpHVnlYM04xWW1keWIzVndYMk5zZFhOMFpYSmxaQ0F4Q2lOa1pXWnBibVVnUjB4ZlMwaFNYM05vWVdSbGNsOXpkV0puY205MWNGOXhkV0ZrSURFS0kyUmxabWx1WlNCRlgwZE1YMFZZVkY5emFHRmtaWEpmWVhSdmJXbGpYMmx1ZERZMElERUtJMlJsWm1sdVpTQkZYMGRNWDBWWVZGOXphR0ZrWlhKZmNtVmhiSFJwYldWZlkyeHZZMnNnTVFvalpHVm1hVzVsSUVkTVgwRk5SRjl6YUdGa1pYSmZZbUZzYkc5MElERUtJMlJsWm1sdVpTQkhURjlCVFVSZmMyaGhaR1Z5WDNSeWFXNWhjbmxmYldsdWJXRjRJREVLSTJSbFptbHVaU0JIVEY5QlRVUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgzWmxjblJsZUY5d1lYSmhiV1YwWlhJZ01Rb2paR1ZtYVc1bElFZE1YMEZOUkY5blkyNWZjMmhoWkdWeUlERUtJMlJsWm1sdVpTQkhURjlCVFVSZlozQjFYM05vWVdSbGNsOW9ZV3htWDJac2IyRjBJREVLSTJSbFptbHVaU0JIVEY5QlRVUmZkR1Y0ZEhWeVpWOW5ZWFJvWlhKZlltbGhjMTlzYjJRZ01Rb2paR1ZtYVc1bElFZE1YMEZOUkY5bmNIVmZjMmhoWkdWeVgybHVkREUySURFS0kyUmxabWx1WlNCSFRGOUJUVVJmYzJoaFpHVnlYMmx0WVdkbFgyeHZZV1JmYzNSdmNtVmZiRzlrSURFS0kyUmxabWx1WlNCSFRGOUJUVVJmYzJoaFpHVnlYMlp5WVdkdFpXNTBYMjFoYzJzZ01Rb2paR1ZtYVc1bElFZE1YMEZOUkY5bmNIVmZjMmhoWkdWeVgyaGhiR1pmWm14dllYUmZabVYwWTJnZ01Rb2paR1ZtYVc1bElFZE1YMGxPVkVWTVgzTm9ZV1JsY2w5cGJuUmxaMlZ5WDJaMWJtTjBhVzl1Y3pJZ01Rb2paR1ZtYVc1bElFZE1YMDVXWDNOaGJYQnNaVjl0WVhOclgyOTJaWEp5YVdSbFgyTnZkbVZ5WVdkbElERUtJMlJsWm1sdVpTQkhURjlPVmw5blpXOXRaWFJ5ZVY5emFHRmtaWEpmY0dGemMzUm9jbTkxWjJnZ01Rb2paR1ZtYVc1bElFZE1YMDVXWDNacFpYZHdiM0owWDJGeWNtRjVNaUF4Q2lOa1pXWnBibVVnUjB4ZlRsWmZjMmhoWkdWeVgyRjBiMjFwWTE5cGJuUTJOQ0F4Q2lOa1pXWnBibVVnUjB4ZlRsWmZZMjl1YzJWeWRtRjBhWFpsWDNKaGMzUmxjbDkxYm1SbGNtVnpkR2x0WVhScGIyNGdNUW9qWkdWbWFXNWxJRWRNWDA1V1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5d1lYSjBhWFJwYjI1bFpDQXhDaU5rWldacGJtVWdSMHhmVGxaZmMyaGhaR2x1WjE5eVlYUmxYMmx0WVdkbElERUtJMlJsWm1sdVpTQkhURjlPVmw5eVlYbGZkSEpoWTJsdVp5QXhDaU5rWldacGJtVWdSMHhmVGxaZlpuSmhaMjFsYm5SZmMyaGhaR1Z5WDJKaGNubGpaVzUwY21saklERUtJMlJsWm1sdVpTQkhURjlPVmw5amIyMXdkWFJsWDNOb1lXUmxjbDlrWlhKcGRtRjBhWFpsY3lBeENpTmtaV1pwYm1VZ1IweGZUbFpmYzJoaFpHVnlYM1JsZUhSMWNtVmZabTl2ZEhCeWFXNTBJREVLSTJSbFptbHVaU0JIVEY5T1ZsOXRaWE5vWDNOb1lXUmxjaUF4Q2lOa1pXWnBibVVnUjB4ZlRsWmZZMjl2Y0dWeVlYUnBkbVZmYldGMGNtbDRJREVLSTJSbFptbHVaU0JIVEY5T1ZsOXBiblJsWjJWeVgyTnZiM0JsY21GMGFYWmxYMjFoZEhKcGVDQXhDaU5rWldacGJtVWdSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYMlY0Y0d4cFkybDBYMkZ5YVhSb2JXVjBhV05mZEhsd1pYTmZhVzUwT0NBeENpTmtaV1pwYm1VZ1IweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMmx1ZERFMklERUtJMlJsWm1sdVpTQkhURjlGV0ZSZmMyaGhaR1Z5WDJWNGNHeHBZMmwwWDJGeWFYUm9iV1YwYVdOZmRIbHdaWE5mYVc1ME16SWdNUW9qWkdWbWFXNWxJRWRNWDBWWVZGOXphR0ZrWlhKZlpYaHdiR2xqYVhSZllYSnBkR2h0WlhScFkxOTBlWEJsYzE5cGJuUTJOQ0F4Q2lOa1pXWnBibVVnUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgyWnNiMkYwTVRZZ01Rb2paR1ZtYVc1bElFZE1YMFZZVkY5emFHRmtaWEpmWlhod2JHbGphWFJmWVhKcGRHaHRaWFJwWTE5MGVYQmxjMTltYkc5aGRETXlJREVLSTJSbFptbHVaU0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZlpteHZZWFEyTkNBeENpTmtaV1pwYm1VZ1IweGZSVmhVWDNOb1lXUmxjbDl6ZFdKbmNtOTFjRjlsZUhSbGJtUmxaRjkwZVhCbGMxOXBiblE0SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYM04xWW1keWIzVndYMlY0ZEdWdVpHVmtYM1I1Y0dWelgybHVkREUySURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYM04xWW1keWIzVndYMlY0ZEdWdVpHVmtYM1I1Y0dWelgybHVkRFkwSURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYM04xWW1keWIzVndYMlY0ZEdWdVpHVmtYM1I1Y0dWelgyWnNiMkYwTVRZZ01Rb0FJMlJsWm1sdVpTQkhURjlqYjNKbFgzQnliMlpwYkdVZ01Rb0FJMlJsWm1sdVpTQkhURjlqYjIxd1lYUnBZbWxzYVhSNVgzQnliMlpwYkdVZ01Rb0FJMlJsWm1sdVpTQkhURjlGV0ZSZlpHVjJhV05sWDJkeWIzVndJREVLSTJSbFptbHVaU0JIVEY5RldGUmZiWFZzZEdsMmFXVjNJREVLSTJSbFptbHVaU0JIVEY5T1ZsOXphR0ZrWlhKZmMyMWZZblZwYkhScGJuTWdNUW9BSTJSbFptbHVaU0JIVEY5UFZsSmZiWFZzZEdsMmFXVjNJREVLSTJSbFptbHVaU0JIVEY5UFZsSmZiWFZzZEdsMmFXVjNNaUF4Q2dBalpHVm1hVzVsSUVkTVgwZFBUMGRNUlY5amNIQmZjM1I1YkdWZmJHbHVaVjlrYVhKbFkzUnBkbVVnTVFvalpHVm1hVzVsSUVkTVgwZFBUMGRNUlY5cGJtTnNkV1JsWDJScGNtVmpkR2wyWlNBeENpTmtaV1pwYm1VZ1IweGZTMGhTWDJKc1pXNWtYMlZ4ZFdGMGFXOXVYMkZrZG1GdVkyVmtJREVLQUNOa1pXWnBibVVnVmxWTVMwRk9JQUFsWkFBS0FDTmtaV1pwYm1VZ1IweGZVMUJKVWxZZ0FIWmxjblJsZUFCbWNtRm5iV1Z1ZEFCamIyMXdkWFJsQUhSbGMzTmxiR3hoZEdsdmJpQmpiMjUwY205c0FIUmxjM05sYkd4aGRHbHZiaUJsZG1Gc2RXRjBhVzl1QUdkbGIyMWxkSEo1QUhKaGVTMW5aVzVsY21GMGFXOXVBR2x1ZEdWeWMyVmpkR2x2YmdCaGJua3RhR2wwQUdOc2IzTmxjM1F0YUdsMEFHMXBjM01BWTJGc2JHRmliR1VBYldWemFBQjBZWE5yQUhWdWEyNXZkMjRnYzNSaFoyVUFibTkwSUhOMWNIQnZjblJsWkNCcGJpQjBhR2x6SUhOMFlXZGxPZ0J1YjNRZ2MzVndjRzl5ZEdWa0lIZHBkR2dnZEdocGN5QndjbTltYVd4bE9nQmxlSFJsYm5OcGIyNGdBQ0JwY3lCaVpXbHVaeUIxYzJWa0lHWnZjaUFBYm05MElITjFjSEJ2Y25SbFpDQm1iM0lnZEdocGN5QjJaWEp6YVc5dUlHOXlJSFJvWlNCbGJtRmliR1ZrSUdWNGRHVnVjMmx2Ym5NQUFHWmxZWFIxY21VZ2JtOTBJSGxsZENCcGJYQnNaVzFsYm5SbFpBQmtaWEJ5WldOaGRHVmtMQ0J0WVhrZ1ltVWdjbVZ0YjNabFpDQnBiaUJtZFhSMWNtVWdjbVZzWldGelpRQWdaR1Z3Y21WallYUmxaQ0JwYmlCMlpYSnphVzl1SUFBN0lHMWhlU0JpWlNCeVpXMXZkbVZrSUdsdUlHWjFkSFZ5WlNCeVpXeGxZWE5sQUNWeklIQnliMlpwYkdVN0lISmxiVzkyWldRZ2FXNGdkbVZ5YzJsdmJpQWxaQUJ1YnlCc2IyNW5aWElnYzNWd2NHOXlkR1ZrSUdsdUFGUm9aU0JtYjJ4c2IzZHBibWNnWlhoMFpXNXphVzl1SUcxMWMzUWdZbVVnWlc1aFlteGxaQ0IwYnlCMWMyVWdkR2hwY3lCbVpXRjBkWEpsT2dCeVpYRjFhWEpsWkNCbGVIUmxibk5wYjI0Z2JtOTBJSEpsY1hWbGMzUmxaRG9BVUc5emMybGliR1VnWlhoMFpXNXphVzl1Y3lCcGJtTnNkV1JsT2dCeVpYRjFhWEpsQUdWdVlXSnNaUUJrYVhOaFlteGxBSGRoY200QVltVm9ZWFpwYjNJZ2JtOTBJSE4xY0hCdmNuUmxaRG9BSTJWNGRHVnVjMmx2YmdCaGJHd0FaWGgwWlc1emFXOXVJQ2RoYkd3bklHTmhibTV2ZENCb1lYWmxJQ2R5WlhGMWFYSmxKeUJ2Y2lBblpXNWhZbXhsSnlCaVpXaGhkbWx2Y2dCbGVIUmxibk5wYjI0Z2JtOTBJSE4xY0hCdmNuUmxaRG9BWlhoMFpXNXphVzl1SUdseklHOXViSGtnY0dGeWRHbGhiR3g1SUhOMWNIQnZjblJsWkRvQUkyVjRkR1Z1YzJsdmJpQkhURjlPVmw5dFpYTm9YM05vWVdSbGNnQTZJQUFBQUlQeEF3QjM5d01BVnZnREFFSFFwQkFMTjRQeEF3Q2g4QU1BZC9jREFGYjRBd0IzOXdNQWh2Z0RBSGYzQXdDMitBTUFkL2NEQUovM0F3QVc4Z01Bdi9FREFIZjNBd0RNOXdNQVFaQ2xFQXZKQWIveEF3Q2g4QU1BZC9jREFNejNBd0M5OEFNQWQvY0RBSi8zQXdBQUFBQUFkL2NEQVByM0F3QzA3QU1BZC9jREFDajRBd0J1YjNRZ1lXeHNiM2RsWkNCM2FHVnVJR2RsYm1WeVlYUnBibWNnVTFCSlVpMVdBRzV2ZENCaGJHeHZkMlZrSUhkb1pXNGdkWE5wYm1jZ1IweFRUQ0JtYjNJZ1ZuVnNhMkZ1QUc5dWJIa2dZV3hzYjNkbFpDQjNhR1Z1SUhWemFXNW5JRWRNVTB3Z1ptOXlJRloxYkd0aGJnQnZibXg1SUdGc2JHOTNaV1FnZDJobGJpQm5aVzVsY21GMGFXNW5JRk5RU1ZJdFZnQkI1S1lRQzlsc2t3RUFBSlFCQUFDZ0FBQUFvUUFBQUtJQUFBQ2pBQUFBcEFBQUFLVUFBQUNtQUFBQXB3QUFBS2dBQUFDcEFBQUFxZ0FBQUtzQUFBQ3NBQUFBclFBQUFLNEFBQUN2QUFBQXNBQUFBTEVBQUFDeUFBQUFzd0FBQUxRQUFBQzFBQUFBdGdBQUFMY0FBQUM0QUFBQXVRQUFBTG9BQUFDN0FBQUF2QUFBQUwwQUFBQytBQUFBdndBQUFNQUFBQURCQUFBQXdnQUFBTU1BQUFERUFBQUF4UUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUJoYkd4dlkyRjBiM0k4VkQ0Nk9tRnNiRzlqWVhSbEtITnBlbVZmZENCdUtTQW5iaWNnWlhoalpXVmtjeUJ0WVhocGJYVnRJSE4xY0hCdmNuUmxaQ0J6YVhwbEFBQUFBQURvRGdRQUFBOEVBQlVQQkFBdER3UUE3dzRFQVBnT0JBQTJEd1FBUlE4RUFGSVBCQUJhRHdRQVpnOEVBR3NQQkFCNUR3UUFkQThFQUcxdmRtVWdjMlZqYjI1a0lHTm9hV3hrSUhSdklHWnBjbk4wSUdOb2FXeGtBR0ZrWkNCelpXTnZibVFnWTJocGJHUWdhVzUwYnlCbWFYSnpkQ0JqYUdsc1pBQnpkV0owY21GamRDQnpaV052Ym1RZ1kyaHBiR1FnYVc1MGJ5Qm1hWEp6ZENCamFHbHNaQUJ0ZFd4MGFYQnNlU0J6WldOdmJtUWdZMmhwYkdRZ2FXNTBieUJtYVhKemRDQmphR2xzWkFCdFlYUnlhWGdnYlhWc2RDQnpaV052Ym1RZ1kyaHBiR1FnYVc1MGJ5Qm1hWEp6ZENCamFHbHNaQUIyWldOMGIzSWdjMk5oYkdVZ2MyVmpiMjVrSUdOb2FXeGtJR2x1ZEc4Z1ptbHljM1FnWTJocGJHUUFiV0YwY21sNElITmpZV3hsSUhObFkyOXVaQ0JqYUdsc1pDQnBiblJ2SUdacGNuTjBJR05vYVd4a0FHUnBkbWxrWlNCelpXTnZibVFnWTJocGJHUWdhVzUwYnlCbWFYSnpkQ0JqYUdsc1pBQnRiMlFnYzJWamIyNWtJR05vYVd4a0lHbHVkRzhnWm1seWMzUWdZMmhwYkdRQVlXNWtJSE5sWTI5dVpDQmphR2xzWkNCcGJuUnZJR1pwY25OMElHTm9hV3hrQUc5eUlITmxZMjl1WkNCamFHbHNaQ0JwYm5SdklHWnBjbk4wSUdOb2FXeGtBR1Y0WTJ4MWMybDJaU0J2Y2lCelpXTnZibVFnWTJocGJHUWdhVzUwYnlCbWFYSnpkQ0JqYUdsc1pBQnNaV1owSUhOb2FXWjBJSE5sWTI5dVpDQmphR2xzWkNCcGJuUnZJR1pwY25OMElHTm9hV3hrQUhKcFoyaDBJSE5vYVdaMElITmxZMjl1WkNCamFHbHNaQ0JwYm5SdklHWnBjbk4wSUdOb2FXeGtBR1JwY21WamRDQnBibVJsZUFCcGJtUnBjbVZqZENCcGJtUmxlQUE2SUdScGNtVmpkQ0JwYm1SbGVDQm1iM0lnYzNSeWRXTjBkWEpsQUhabFkzUnZjaUJ6ZDJsNmVteGxBRzFoZEhKcGVDQnpkMmw2ZW14bEFHRmtaQUJ6ZFdKMGNtRmpkQUJqYjIxd2IyNWxiblF0ZDJselpTQnRkV3gwYVhCc2VRQmthWFpwWkdVQWJXOWtBSEpwWjJoMExYTm9hV1owQUd4bFpuUXRjMmhwWm5RQVltbDBkMmx6WlNCaGJtUUFhVzVqYkhWemFYWmxMVzl5QUdWNFkyeDFjMmwyWlMxdmNnQkRiMjF3WVhKbElFVnhkV0ZzQUVOdmJYQmhjbVVnVG05MElFVnhkV0ZzQUVOdmJYQmhjbVVnVEdWemN5QlVhR0Z1QUVOdmJYQmhjbVVnUjNKbFlYUmxjaUJVYUdGdUFFTnZiWEJoY21VZ1RHVnpjeUJVYUdGdUlHOXlJRVZ4ZFdGc0FFTnZiWEJoY21VZ1IzSmxZWFJsY2lCVWFHRnVJRzl5SUVWeGRXRnNBRVZ4ZFdGc0FFNXZkRVZ4ZFdGc0FIWmxZM1J2Y2kxelkyRnNaUUIyWldOMGIzSXRkR2x0WlhNdGJXRjBjbWw0QUcxaGRISnBlQzEwYVcxbGN5MTJaV04wYjNJQWJXRjBjbWw0TFhOallXeGxBRzFoZEhKcGVDMXRkV3gwYVhCc2VRQnNiMmRwWTJGc0xXOXlBR3h2WjJsallXd3RlRzl5QUd4dloybGpZV3d0WVc1a0FHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpRQmhaR1JUWVhSMWNtRjBaUUJ6ZFdKMGNtRmpkRk5oZEhWeVlYUmxBR0YyWlhKaFoyVUFZWFpsY21GblpWSnZkVzVrWldRQWJYVnNkR2x3Ykhrek1uZ3hOZ0E4ZFc1cmJtOTNiaUJ2Y0Q0QUlDZ0FLUUFLQUU1bFoyRjBaU0IyWVd4MVpRQk9aV2RoZEdVZ1kyOXVaR2wwYVc5dVlXd0FRbWwwZDJselpTQnViM1FBVUc5emRDMUpibU55WlcxbGJuUUFVRzl6ZEMxRVpXTnlaVzFsYm5RQVVISmxMVWx1WTNKbGJXVnVkQUJRY21VdFJHVmpjbVZ0Wlc1MEFHTnZjSGtnYjJKcVpXTjBBRU52Ym5abGNuUWdhVzUwT0Y5MElIUnZJR0p2YjJ3QVEyOXVkbVZ5ZENCMWFXNTBPRjkwSUhSdklHSnZiMndBUTI5dWRtVnlkQ0JwYm5ReE5sOTBJSFJ2SUdKdmIyd0FRMjl1ZG1WeWRDQjFhVzUwTVRaZmRDQjBieUJpYjI5c0FFTnZiblpsY25RZ2FXNTBJSFJ2SUdKdmIyd0FRMjl1ZG1WeWRDQjFhVzUwSUhSdklHSnZiMndBUTI5dWRtVnlkQ0JwYm5RMk5DQjBieUJpYjI5c0FFTnZiblpsY25RZ2RXbHVkRFkwSUhSdklHSnZiMndBUTI5dWRtVnlkQ0JtYkc5aGRERTJYM1FnZEc4Z1ltOXZiQUJEYjI1MlpYSjBJR1pzYjJGMElIUnZJR0p2YjJ3QVEyOXVkbVZ5ZENCa2IzVmliR1VnZEc4Z1ltOXZiQUJEYjI1MlpYSjBJR0p2YjJ3Z2RHOGdhVzUwT0Y5MEFFTnZiblpsY25RZ1ltOXZiQ0IwYnlCMWFXNTBPRjkwQUVOdmJuWmxjblFnWW05dmJDQjBieUJwYmpFMmRGOTBBRU52Ym5abGNuUWdZbTl2YkNCMGJ5QjFhVzUwTVRaZmRBQkRiMjUyWlhKMElHSnZiMndnZEc4Z2FXNTBBRU52Ym5abGNuUWdZbTl2YkNCMGJ5QjFhVzUwQUVOdmJuWmxjblFnWW05dmJDQjBieUJwYm5RMk5BQkRiMjUyWlhKMElHSnZiMndnZEc4Z2RXbHVkRFkwQUVOdmJuWmxjblFnWW05dmJDQjBieUJtYkc5aGRERTJYM1FBUTI5dWRtVnlkQ0JpYjI5c0lIUnZJR1pzYjJGMEFFTnZiblpsY25RZ1ltOXZiQ0IwYnlCa2IzVmliR1VBUTI5dWRtVnlkQ0JwYm5RNFgzUWdkRzhnYVc1ME1UWmZkQUJEYjI1MlpYSjBJR2x1ZERoZmRDQjBieUJwYm5RQVEyOXVkbVZ5ZENCcGJuUTRYM1FnZEc4Z2FXNTBOalFBUTI5dWRtVnlkQ0JwYm5RNFgzUWdkRzhnZFdsdWREaGZkQUJEYjI1MlpYSjBJR2x1ZERoZmRDQjBieUIxYVc1ME1UWmZkQUJEYjI1MlpYSjBJR2x1ZERoZmRDQjBieUIxYVc1MEFFTnZiblpsY25RZ2FXNTBPRjkwSUhSdklIVnBiblEyTkFCRGIyNTJaWEowSUhWcGJuUTRYM1FnZEc4Z2FXNTBPRjkwQUVOdmJuWmxjblFnZFdsdWREaGZkQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnZFdsdWREaGZkQ0IwYnlCcGJuUUFRMjl1ZG1WeWRDQjFhVzUwT0Y5MElIUnZJR2x1ZERZMEFFTnZiblpsY25RZ2RXbHVkRGhmZENCMGJ5QjFhVzUwTVRaZmRBQkRiMjUyWlhKMElIVnBiblE0WDNRZ2RHOGdkV2x1ZEFCRGIyNTJaWEowSUhWcGJuUTRYM1FnZEc4Z2RXbHVkRFkwQUVOdmJuWmxjblFnYVc1ME9GOTBJSFJ2SUdac2IyRjBNVFpmZEFCRGIyNTJaWEowSUdsdWREaGZkQ0IwYnlCbWJHOWhkQUJEYjI1MlpYSjBJR2x1ZERoZmRDQjBieUJrYjNWaWJHVUFRMjl1ZG1WeWRDQjFhVzUwT0Y5MElIUnZJR1pzYjJGME1UWmZkQUJEYjI1MlpYSjBJSFZwYm5RNFgzUWdkRzhnWm14dllYUUFRMjl1ZG1WeWRDQjFhVzUwT0Y5MElIUnZJR1J2ZFdKc1pRQkRiMjUyWlhKMElHbHVkREUyWDNRZ2RHOGdhVzUwT0Y5MEFFTnZiblpsY25RZ2FXNTBNVFpmZENCMGJ5QnBiblFBUTI5dWRtVnlkQ0JwYm5ReE5sOTBJSFJ2SUdsdWREWTBBRU52Ym5abGNuUWdhVzUwTVRaZmRDQjBieUIxYVc1ME9GOTBBRU52Ym5abGNuUWdhVzUwTVRaZmRDQjBieUIxYVc1ME1UWmZkQUJEYjI1MlpYSjBJR2x1ZERFMlgzUWdkRzhnZFdsdWRBQkRiMjUyWlhKMElHbHVkREUyWDNRZ2RHOGdkV2x1ZERZMEFFTnZiblpsY25RZ2FXNTBNVFpmZENCMGJ5Qm1iRzloZERFMlgzUUFRMjl1ZG1WeWRDQnBiblF4Tmw5MElIUnZJR1pzYjJGMEFFTnZiblpsY25RZ2FXNTBNVFpmZENCMGJ5QmtiM1ZpYkdVQVEyOXVkbVZ5ZENCMWFXNTBNVFpmZENCMGJ5QnBiblE0WDNRQVEyOXVkbVZ5ZENCMWFXNTBNVFpmZENCMGJ5QnBiblF4Tmw5MEFFTnZiblpsY25RZ2RXbHVkREUyWDNRZ2RHOGdhVzUwQUVOdmJuWmxjblFnZFdsdWRERTJYM1FnZEc4Z2FXNTBOalFBUTI5dWRtVnlkQ0IxYVc1ME1UWmZkQ0IwYnlCMWFXNTBPRjkwQUVOdmJuWmxjblFnZFdsdWRERTJYM1FnZEc4Z2RXbHVkQUJEYjI1MlpYSjBJSFZwYm5ReE5sOTBJSFJ2SUhWcGJuUTJOQUJEYjI1MlpYSjBJSFZwYm5ReE5sOTBJSFJ2SUdac2IyRjBNVFpmZEFCRGIyNTJaWEowSUhWcGJuUXhObDkwSUhSdklHWnNiMkYwQUVOdmJuWmxjblFnZFdsdWRERTJYM1FnZEc4Z1pHOTFZbXhsQUVOdmJuWmxjblFnYVc1MElIUnZJR2x1ZERoZmRBQkRiMjUyWlhKMElHbHVkQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnYVc1MElIUnZJR2x1ZERZMEFFTnZiblpsY25RZ2FXNTBJSFJ2SUhWcGJuUTRYM1FBUTI5dWRtVnlkQ0JwYm5RZ2RHOGdkV2x1ZERFMlgzUUFRMjl1ZG1WeWRDQnBiblFnZEc4Z2RXbHVkQUJEYjI1MlpYSjBJR2x1ZENCMGJ5QjFhVzUwTmpRQVEyOXVkbVZ5ZENCcGJuUWdkRzhnWm14dllYUXhObDkwQUVOdmJuWmxjblFnYVc1MElIUnZJR1pzYjJGMEFFTnZiblpsY25RZ2FXNTBJSFJ2SUdSdmRXSnNaUUJEYjI1MlpYSjBJSFZwYm5RZ2RHOGdhVzUwT0Y5MEFFTnZiblpsY25RZ2RXbHVkQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnZFdsdWRDQjBieUJwYm5RQVEyOXVkbVZ5ZENCMWFXNTBJSFJ2SUdsdWREWTBBRU52Ym5abGNuUWdkV2x1ZENCMGJ5QjFhVzUwT0Y5MEFFTnZiblpsY25RZ2RXbHVkQ0IwYnlCMWFXNTBNVFpmZEFCRGIyNTJaWEowSUhWcGJuUWdkRzhnZFdsdWREWTBBRU52Ym5abGNuUWdkV2x1ZENCMGJ5Qm1iRzloZERFMlgzUUFRMjl1ZG1WeWRDQjFhVzUwSUhSdklHWnNiMkYwQUVOdmJuWmxjblFnZFdsdWRDQjBieUJrYjNWaWJHVUFRMjl1ZG1WeWRDQnBiblEyTkNCMGJ5QnBiblE0WDNRQVEyOXVkbVZ5ZENCcGJuUTJOQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnYVc1ME5qUWdkRzhnYVc1MEFFTnZiblpsY25RZ2FXNTBOalFnZEc4Z2RXbHVkRGhmZEFCRGIyNTJaWEowSUdsdWREWTBJSFJ2SUhWcGJuUXhObDkwQUVOdmJuWmxjblFnYVc1ME5qUWdkRzhnZFdsdWRBQkRiMjUyWlhKMElHbHVkRFkwSUhSdklIVnBiblEyTkFCRGIyNTJaWEowSUdsdWREWTBJSFJ2SUdac2IyRjBNVFpmZEFCRGIyNTJaWEowSUdsdWREWTBJSFJ2SUdac2IyRjBBRU52Ym5abGNuUWdhVzUwTmpRZ2RHOGdaRzkxWW14bEFFTnZiblpsY25RZ2RXbHVkRFkwSUhSdklHbHVkRGhmZEFCRGIyNTJaWEowSUhWcGJuUTJOQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnZFdsdWREWTBJSFJ2SUdsdWRBQkRiMjUyWlhKMElIVnBiblEyTkNCMGJ5QnBiblEyTkFCRGIyNTJaWEowSUhWcGJuUTJOQ0IwYnlCMWFXNTBPRjkwQUVOdmJuWmxjblFnZFdsdWREWTBJSFJ2SUhWcGJuUXhOZ0JEYjI1MlpYSjBJSFZwYm5RMk5DQjBieUIxYVc1MEFFTnZiblpsY25RZ2RXbHVkRFkwSUhSdklHWnNiMkYwTVRaZmRBQkRiMjUyWlhKMElIVnBiblEyTkNCMGJ5Qm1iRzloZEFCRGIyNTJaWEowSUhWcGJuUTJOQ0IwYnlCa2IzVmliR1VBUTI5dWRtVnlkQ0JtYkc5aGRERTJYM1FnZEc4Z2FXNTBPRjkwQUVOdmJuWmxjblFnWm14dllYUXhObDkwSUhSdklHbHVkREUyWDNRQVEyOXVkbVZ5ZENCbWJHOWhkREUyWDNRZ2RHOGdhVzUwQUVOdmJuWmxjblFnWm14dllYUXhObDkwSUhSdklHbHVkRFkwQUVOdmJuWmxjblFnWm14dllYUXhObDkwSUhSdklIVnBiblE0WDNRQVEyOXVkbVZ5ZENCbWJHOWhkREUyWDNRZ2RHOGdkV2x1ZERFMlgzUUFRMjl1ZG1WeWRDQm1iRzloZERFMlgzUWdkRzhnZFdsdWRBQkRiMjUyWlhKMElHWnNiMkYwTVRaZmRDQjBieUIxYVc1ME5qUUFRMjl1ZG1WeWRDQm1iRzloZERFMlgzUWdkRzhnWm14dllYUUFRMjl1ZG1WeWRDQm1iRzloZERFMlgzUWdkRzhnWkc5MVlteGxBRU52Ym5abGNuUWdabXh2WVhRZ2RHOGdabXh2WVhReE5sOTBBRU52Ym5abGNuUWdabXh2WVhRZ2RHOGdaRzkxWW14bEFFTnZiblpsY25RZ1pteHZZWFFnZEc4Z2FXNTBPRjkwQUVOdmJuWmxjblFnWm14dllYUWdkRzhnYVc1ME1UWmZkQUJEYjI1MlpYSjBJR1pzYjJGMElIUnZJR2x1ZEFCRGIyNTJaWEowSUdac2IyRjBJSFJ2SUdsdWREWTBBRU52Ym5abGNuUWdabXh2WVhRZ2RHOGdkV2x1ZERoZmRBQkRiMjUyWlhKMElHWnNiMkYwSUhSdklIVnBiblF4Tmw5MEFFTnZiblpsY25RZ1pteHZZWFFnZEc4Z2RXbHVkQUJEYjI1MlpYSjBJR1pzYjJGMElIUnZJSFZwYm5RMk5BQkRiMjUyWlhKMElHUnZkV0pzWlNCMGJ5Qm1iRzloZERFMlgzUUFRMjl1ZG1WeWRDQmtiM1ZpYkdVZ2RHOGdabXh2WVhRQVEyOXVkbVZ5ZENCa2IzVmliR1VnZEc4Z2FXNTBPRjkwQUVOdmJuWmxjblFnWkc5MVlteGxJSFJ2SUdsdWRERTJYM1FBUTI5dWRtVnlkQ0JrYjNWaWJHVWdkRzhnYVc1MEFFTnZiblpsY25RZ1pHOTFZbXhsSUhSdklHbHVkRFkwQUVOdmJuWmxjblFnWkc5MVlteGxJSFJ2SUhWcGJuUTRYM1FBUTI5dWRtVnlkQ0JrYjNWaWJHVWdkRzhnZFdsdWRERTJYM1FBUTI5dWRtVnlkQ0JrYjNWaWJHVWdkRzhnZFdsdWRBQkRiMjUyWlhKMElHUnZkV0pzWlNCMGJ5QjFhVzUwTmpRQVEyOXVkbVZ5ZENCMWFXNTBOalJmZENCMGJ5QndiMmx1ZEdWeUFFTnZiblpsY25RZ2NHOXBiblJsY2lCMGJ5QjFhVzUwTmpSZmRBQnlZV1JwWVc1ekFHUmxaM0psWlhNQWMybHVaUUJqYjNOcGJtVUFkR0Z1WjJWdWRBQmhjbU1nYzJsdVpRQmhjbU1nWTI5emFXNWxBR0Z5WXlCMFlXNW5aVzUwQUdoNWNDNGdjMmx1WlFCb2VYQXVJR052YzJsdVpRQm9lWEF1SUhSaGJtZGxiblFBWVhKaklHaDVjQzRnYzJsdVpRQmhjbU1nYUhsd0xpQmpiM05wYm1VQVlYSmpJR2g1Y0M0Z2RHRnVaMlZ1ZEFCbGVIQUFiRzluQUdWNGNESUFiRzluTWdCemNYSjBBR2x1ZG1WeWMyVWdjM0Z5ZEFCQlluTnZiSFYwWlNCMllXeDFaUUJUYVdkdUFFWnNiMjl5QUhSeWRXNWpBSEp2ZFc1a0FISnZkVzVrUlhabGJnQkRaV2xzYVc1bkFFWnlZV04wYVc5dUFHbHpibUZ1QUdsemFXNW1BR1pzYjJGMFFtbDBjMVJ2U1c1MEFHWnNiMkYwUW1sMGMxUnZWV2x1ZEFCcGJuUkNhWFJ6Vkc5R2JHOWhkQUIxYVc1MFFtbDBjMVJ2Um14dllYUUFaRzkxWW14bFFtbDBjMVJ2U1c1ME5qUUFaRzkxWW14bFFtbDBjMVJ2VldsdWREWTBBR2x1ZERZMFFtbDBjMVJ2Ukc5MVlteGxBSFZwYm5RMk5FSnBkSE5VYjBSdmRXSnNaUUJtYkc5aGRERTJRbWwwYzFSdlNXNTBNVFlBWm14dllYUXhOa0pwZEhOVWIxVnBiblF4TmdCcGJuUXhOa0pwZEhOVWIwWnNiMkYwTVRZQWRXbHVkREUyUW1sMGMxUnZSbXh2WVhReE5nQndZV05yVTI1dmNtMHllREUyQUhWdWNHRmphMU51YjNKdE1uZ3hOZ0J3WVdOclZXNXZjbTB5ZURFMkFIVnVjR0ZqYTFWdWIzSnRNbmd4TmdCd1lXTnJTR0ZzWmpKNE1UWUFkVzV3WVdOclNHRnNaako0TVRZQWNHRmphekUyQUhCaFkyc3pNZ0J3WVdOck5qUUFkVzV3WVdOck16SUFkVzV3WVdOck1UWUFkVzV3WVdOck9BQlFZV05yVTI1dmNtMDBlRGdBVlc1d1lXTnJVMjV2Y20wMGVEZ0FVR0ZqYTFWdWIzSnROSGc0QUZWdWNHRmphMVZ1YjNKdE5IZzRBRkJoWTJ0RWIzVmliR1V5ZURNeUFGVnVjR0ZqYTBSdmRXSnNaVEo0TXpJQWNHRmphMGx1ZERKNE16SUFkVzV3WVdOclNXNTBNbmd6TWdCd1lXTnJWV2x1ZERKNE16SUFkVzV3WVdOclZXbHVkREo0TXpJQWNHRmphMGx1ZERKNE1UWUFkVzV3WVdOclNXNTBNbmd4TmdCd1lXTnJWV2x1ZERKNE1UWUFkVzV3WVdOclZXbHVkREo0TVRZQWNHRmphMGx1ZERSNE1UWUFkVzV3WVdOclNXNTBOSGd4TmdCd1lXTnJWV2x1ZERSNE1UWUFkVzV3WVdOclZXbHVkRFI0TVRZQWNHRmphMFpzYjJGME1uZ3hOZ0IxYm5CaFkydEdiRzloZERKNE1UWUFiR1Z1WjNSb0FHNXZjbTFoYkdsNlpRQmtVR1I0QUdSUVpIa0FabmRwWkhSb0FHUlFaSGhHYVc1bEFHUlFaSGxHYVc1bEFHWjNhV1IwYUVacGJtVUFaRkJrZUVOdllYSnpaUUJrVUdSNVEyOWhjbk5sQUdaM2FXUjBhRU52WVhKelpRQnBiblJsY25CdmJHRjBaVUYwUTJWdWRISnZhV1FBWkdWMFpYSnRhVzVoYm5RQWFXNTJaWEp6WlFCMGNtRnVjM0J2YzJVQVlXNTVBR0ZzYkFCaGNuSmhlU0JzWlc1bmRHZ0FSVzFwZEZOMGNtVmhiVlpsY25SbGVBQkZibVJUZEhKbFlXMVFjbWx0YVhScGRtVUFRWFJ2YldsalEyOTFiblJsY2tsdVkzSmxiV1Z1ZEFCQmRHOXRhV05EYjNWdWRHVnlSR1ZqY21WdFpXNTBBRUYwYjIxcFkwTnZkVzUwWlhJQWRHVjRkSFZ5WlZOcGVtVUFkR1Y0ZEhWeVpWRjFaWEo1VEc5a0FIUmxlSFIxY21WUmRXVnllVXhsZG1Wc2N3QjBaWGgwZFhKbFUyRnRjR3hsY3dCcGJXRm5aVkYxWlhKNVUybDZaUUJwYldGblpWRjFaWEo1VTJGdGNHeGxjd0JwYldGblpVeHZZV1FBWW1sMFJtbGxiR1JTWlhabGNuTmxBR0pwZEVOdmRXNTBBR1pwYm1STVUwSUFabWx1WkUxVFFnQmpiM1Z1ZEV4bFlXUnBibWRhWlhKdmN3QmpiM1Z1ZEZSeVlXbHNhVzVuV21WeWIzTUFibTlwYzJVQVltRnNiRzkwQUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI0QVlXNTVTVzUyYjJOaGRHbHZiZ0JoYkd4SmJuWnZZMkYwYVc5dWN3QmhiR3hKYm5adlkyRjBhVzl1YzBWeGRXRnNBSE4xWW1keWIzVndSV3hsWTNRQWMzVmlaM0p2ZFhCQmJHd0FjM1ZpWjNKdmRYQkJibmtBYzNWaVozSnZkWEJCYkd4RmNYVmhiQUJ6ZFdKbmNtOTFjRUp5YjJGa1kyRnpkQUJ6ZFdKbmNtOTFjRUp5YjJGa1kyRnpkRVpwY25OMEFITjFZbWR5YjNWd1FtRnNiRzkwQUhOMVltZHliM1Z3U1c1MlpYSnpaVUpoYkd4dmRBQnpkV0puY205MWNFSmhiR3h2ZEVKcGRFVjRkSEpoWTNRQWMzVmlaM0p2ZFhCQ1lXeHNiM1JDYVhSRGIzVnVkQUJ6ZFdKbmNtOTFjRUpoYkd4dmRFbHVZMngxYzJsMlpVSnBkRU52ZFc1MEFITjFZbWR5YjNWd1FtRnNiRzkwUlhoamJIVnphWFpsUW1sMFEyOTFiblFBYzNWaVozSnZkWEJDWVd4c2IzUkdhVzVrVEZOQ0FITjFZbWR5YjNWd1FtRnNiRzkwUm1sdVpFMVRRZ0J6ZFdKbmNtOTFjRk5vZFdabWJHVUFjM1ZpWjNKdmRYQlRhSFZtWm14bFdHOXlBSE4xWW1keWIzVndVMmgxWm1ac1pWVndBSE4xWW1keWIzVndVMmgxWm1ac1pVUnZkMjRBYzNWaVozSnZkWEJCWkdRQWMzVmlaM0p2ZFhCTmRXd0FjM1ZpWjNKdmRYQk5hVzRBYzNWaVozSnZkWEJOWVhnQWMzVmlaM0p2ZFhCQmJtUUFjM1ZpWjNKdmRYQlBjZ0J6ZFdKbmNtOTFjRmh2Y2dCemRXSm5jbTkxY0VsdVkyeDFjMmwyWlVGa1pBQnpkV0puY205MWNFbHVZMngxYzJsMlpVMTFiQUJ6ZFdKbmNtOTFjRWx1WTJ4MWMybDJaVTFwYmdCemRXSm5jbTkxY0VsdVkyeDFjMmwyWlUxaGVBQnpkV0puY205MWNFbHVZMngxYzJsMlpVRnVaQUJ6ZFdKbmNtOTFjRWx1WTJ4MWMybDJaVTl5QUhOMVltZHliM1Z3U1c1amJIVnphWFpsV0c5eUFITjFZbWR5YjNWd1JYaGpiSFZ6YVhabFFXUmtBSE4xWW1keWIzVndSWGhqYkhWemFYWmxUWFZzQUhOMVltZHliM1Z3UlhoamJIVnphWFpsVFdsdUFITjFZbWR5YjNWd1JYaGpiSFZ6YVhabFRXRjRBSE4xWW1keWIzVndSWGhqYkhWemFYWmxRVzVrQUhOMVltZHliM1Z3UlhoamJIVnphWFpsVDNJQWMzVmlaM0p2ZFhCRmVHTnNkWE5wZG1WWWIzSUFjM1ZpWjNKdmRYQkRiSFZ6ZEdWeVpXUkJaR1FBYzNWaVozSnZkWEJEYkhWemRHVnlaV1JOZFd3QWMzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSTmFXNEFjM1ZpWjNKdmRYQkRiSFZ6ZEdWeVpXUk5ZWGdBYzNWaVozSnZkWEJEYkhWemRHVnlaV1JCYm1RQWMzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSUGNnQnpkV0puY205MWNFTnNkWE4wWlhKbFpGaHZjZ0J6ZFdKbmNtOTFjRkYxWVdSQ2NtOWhaR05oYzNRQWMzVmlaM0p2ZFhCUmRXRmtVM2RoY0VodmNtbDZiMjUwWVd3QWMzVmlaM0p2ZFhCUmRXRmtVM2RoY0ZabGNuUnBZMkZzQUhOMVltZHliM1Z3VVhWaFpGTjNZWEJFYVdGbmIyNWhiQUJ6ZFdKbmNtOTFjRkJoY25ScGRHbHZiazVXQUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSQlpHUk9WZ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrVFhWc1RsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRTFwYms1V0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUk5ZWGhPVmdCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1FXNWtUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkU5eVRsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRmh2Y2s1V0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkpibU5zZFhOcGRtVkJaR1JPVmdCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1NXNWpiSFZ6YVhabFRYVnNUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVsdVkyeDFjMmwyWlUxcGJrNVdBSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JKYm1Oc2RYTnBkbVZOWVhoT1ZnQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtTVzVqYkhWemFYWmxRVzVrVGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFbHVZMngxYzJsMlpVOXlUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVsdVkyeDFjMmwyWlZodmNrNVdBSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JGZUdOc2RYTnBkbVZCWkdST1ZnQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtSWGhqYkhWemFYWmxUWFZzVGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFVjRZMngxYzJsMlpVMXBiazVXQUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSRmVHTnNkWE5wZG1WTllYaE9WZ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrUlhoamJIVnphWFpsUVc1a1RsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRVY0WTJ4MWMybDJaVTl5VGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFVjRZMngxYzJsMlpWaHZjazVXQUdOc2FYQUFhWE5tYVc1cGRHVUFiRzluTVRBQWNtTndBSE5oZEhWeVlYUmxBSE53WVhKelpWUmxlR1ZzYzFKbGMybGtaVzUwQUcxcGJrbHVkbTlqWVhScGIyNXpBRzFoZUVsdWRtOWpZWFJwYjI1ekFHRmtaRWx1ZG05allYUnBiMjV6QUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliUUJ0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMEFZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdEFHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJnQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNEFZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVBRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTBBYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlFCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdEFHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJnQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNEFZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVBRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTBBYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlFCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdEFHMWlZMjUwQUdaeVlXZHRaVzUwVFdGemEwWmxkR05vUVUxRUFHWnlZV2R0Wlc1MFJtVjBZMmhCVFVRQVkzVmlaVVpoWTJWSmJtUmxlQUJqZFdKbFJtRmpaVU52YjNKa0FITjFZbkJoYzNOTWIyRmtBSE4xWW5CaGMzTk1iMkZrVFZNQVEyOXVjM1J5ZFdOMElISmxabVZ5Wlc1alpTQjBlWEJsQUVKaFpDQjFibUZ5ZVNCdmNBQnViMlJsSUdseklITjBhV3hzSUVWUGNFNTFiR3doQUZObGNYVmxibU5sQ2dCTWFXNXJaWElnVDJKcVpXTjBjd29BUTI5dGJXRUFSblZ1WTNScGIyNGdSR1ZtYVc1cGRHbHZiam9nQUVaMWJtTjBhVzl1SUVOaGJHdzZJQUJHZFc1amRHbHZiaUJRWVhKaGJXVjBaWEp6T2lBQVEyOXVjM1J5ZFdOMElHWnNiMkYwQUVOdmJuTjBjblZqZENCa2IzVmliR1VBUTI5dWMzUnlkV04wSUhabFl6SUFRMjl1YzNSeWRXTjBJSFpsWXpNQVEyOXVjM1J5ZFdOMElIWmxZelFBUTI5dWMzUnlkV04wSUdSMlpXTXlBRU52Ym5OMGNuVmpkQ0JrZG1Wak13QkRiMjV6ZEhKMVkzUWdaSFpsWXpRQVEyOXVjM1J5ZFdOMElHSnZiMndBUTI5dWMzUnlkV04wSUdKMlpXTXlBRU52Ym5OMGNuVmpkQ0JpZG1Wak13QkRiMjV6ZEhKMVkzUWdZblpsWXpRQVEyOXVjM1J5ZFdOMElHbHVkRGhmZEFCRGIyNXpkSEoxWTNRZ2FUaDJaV015QUVOdmJuTjBjblZqZENCcE9IWmxZek1BUTI5dWMzUnlkV04wSUdrNGRtVmpOQUJEYjI1emRISjFZM1FnYVc1MEFFTnZibk4wY25WamRDQnBkbVZqTWdCRGIyNXpkSEoxWTNRZ2FYWmxZek1BUTI5dWMzUnlkV04wSUdsMlpXTTBBRU52Ym5OMGNuVmpkQ0IxYVc1ME9GOTBBRU52Ym5OMGNuVmpkQ0IxT0habFl6SUFRMjl1YzNSeWRXTjBJSFU0ZG1Wak13QkRiMjV6ZEhKMVkzUWdkVGgyWldNMEFFTnZibk4wY25WamRDQjFhVzUwQUVOdmJuTjBjblZqZENCMWRtVmpNZ0JEYjI1emRISjFZM1FnZFhabFl6TUFRMjl1YzNSeWRXTjBJSFYyWldNMEFFTnZibk4wY25WamRDQnBiblEyTkFCRGIyNXpkSEoxWTNRZ2FUWTBkbVZqTWdCRGIyNXpkSEoxWTNRZ2FUWTBkbVZqTXdCRGIyNXpkSEoxWTNRZ2FUWTBkbVZqTkFCRGIyNXpkSEoxWTNRZ2RXbHVkRFkwQUVOdmJuTjBjblZqZENCMU5qUjJaV015QUVOdmJuTjBjblZqZENCMU5qUjJaV016QUVOdmJuTjBjblZqZENCMU5qUjJaV00wQUVOdmJuTjBjblZqZENCcGJuUXhObDkwQUVOdmJuTjBjblZqZENCcE1UWjJaV015QUVOdmJuTjBjblZqZENCcE1UWjJaV016QUVOdmJuTjBjblZqZENCcE1UWjJaV00wQUVOdmJuTjBjblZqZENCMWFXNTBNVFpmZEFCRGIyNXpkSEoxWTNRZ2RURTJkbVZqTWdCRGIyNXpkSEoxWTNRZ2RURTJkbVZqTXdCRGIyNXpkSEoxWTNRZ2RURTJkbVZqTkFCRGIyNXpkSEoxWTNRZ2JXRjBNZ0JEYjI1emRISjFZM1FnYldGME1uZ3pBRU52Ym5OMGNuVmpkQ0J0WVhReWVEUUFRMjl1YzNSeWRXTjBJRzFoZERONE1nQkRiMjV6ZEhKMVkzUWdiV0YwTXdCRGIyNXpkSEoxWTNRZ2JXRjBNM2cwQUVOdmJuTjBjblZqZENCdFlYUTBlRElBUTI5dWMzUnlkV04wSUcxaGREUjRNd0JEYjI1emRISjFZM1FnYldGME5BQkRiMjV6ZEhKMVkzUWdaRzFoZERJQVEyOXVjM1J5ZFdOMElHUnRZWFF5ZURNQVEyOXVjM1J5ZFdOMElHUnRZWFF5ZURRQVEyOXVjM1J5ZFdOMElHUnRZWFF6ZURJQVEyOXVjM1J5ZFdOMElHUnRZWFF6QUVOdmJuTjBjblZqZENCa2JXRjBNM2cwQUVOdmJuTjBjblZqZENCa2JXRjBOSGd5QUVOdmJuTjBjblZqZENCa2JXRjBOSGd6QUVOdmJuTjBjblZqZENCa2JXRjBOQUJEYjI1emRISjFZM1FnYVcxaGRESUFRMjl1YzNSeWRXTjBJR2x0WVhReWVETUFRMjl1YzNSeWRXTjBJR2x0WVhReWVEUUFRMjl1YzNSeWRXTjBJR2x0WVhRemVESUFRMjl1YzNSeWRXTjBJR2x0WVhRekFFTnZibk4wY25WamRDQnBiV0YwTTNnMEFFTnZibk4wY25WamRDQnBiV0YwTkhneUFFTnZibk4wY25WamRDQnBiV0YwTkhnekFFTnZibk4wY25WamRDQnBiV0YwTkFCRGIyNXpkSEoxWTNRZ2RXMWhkRElBUTI5dWMzUnlkV04wSUhWdFlYUXllRE1BUTI5dWMzUnlkV04wSUhWdFlYUXllRFFBUTI5dWMzUnlkV04wSUhWdFlYUXplRElBUTI5dWMzUnlkV04wSUhWdFlYUXpBRU52Ym5OMGNuVmpkQ0IxYldGME0zZzBBRU52Ym5OMGNuVmpkQ0IxYldGME5IZ3lBRU52Ym5OMGNuVmpkQ0IxYldGME5IZ3pBRU52Ym5OMGNuVmpkQ0IxYldGME5BQkRiMjV6ZEhKMVkzUWdZbTFoZERJQVEyOXVjM1J5ZFdOMElHSnRZWFF5ZURNQVEyOXVjM1J5ZFdOMElHSnRZWFF5ZURRQVEyOXVjM1J5ZFdOMElHSnRZWFF6ZURJQVEyOXVjM1J5ZFdOMElHSnRZWFF6QUVOdmJuTjBjblZqZENCaWJXRjBNM2cwQUVOdmJuTjBjblZqZENCaWJXRjBOSGd5QUVOdmJuTjBjblZqZENCaWJXRjBOSGd6QUVOdmJuTjBjblZqZENCaWJXRjBOQUJEYjI1emRISjFZM1FnWm14dllYUXhObDkwQUVOdmJuTjBjblZqZENCbU1UWjJaV015QUVOdmJuTjBjblZqZENCbU1UWjJaV016QUVOdmJuTjBjblZqZENCbU1UWjJaV00wQUVOdmJuTjBjblZqZENCbU1UWnRZWFF5QUVOdmJuTjBjblZqZENCbU1UWnRZWFF5ZURNQVEyOXVjM1J5ZFdOMElHWXhObTFoZERKNE5BQkRiMjV6ZEhKMVkzUWdaakUyYldGME0zZ3lBRU52Ym5OMGNuVmpkQ0JtTVRadFlYUXpBRU52Ym5OMGNuVmpkQ0JtTVRadFlYUXplRFFBUTI5dWMzUnlkV04wSUdZeE5tMWhkRFI0TWdCRGIyNXpkSEoxWTNRZ1pqRTJiV0YwTkhnekFFTnZibk4wY25WamRDQm1NVFp0WVhRMEFFTnZibk4wY25WamRDQnpkSEoxWTNSMWNtVUFRMjl1YzNSeWRXTjBJR052YldKcGJtVmtJSFJsZUhSMWNtVXRjMkZ0Y0d4bGNnQkRiMjV6ZEhKMVkzUWdjbVZtWlhKbGJtTmxBRU52Ym5OMGNuVmpkQ0JqYjI5d1pYSmhkR2wyWlNCdFlYUnlhWGdBYlc5a1pnQndiM2NBYldsdUFHMWhlQUJqYkdGdGNBQnRhWGdBYzNSbGNBQnpiVzl2ZEdoemRHVndBR1JwYzNSaGJtTmxBR1J2ZEMxd2NtOWtkV04wQUdOeWIzTnpMWEJ5YjJSMVkzUUFabUZqWlMxbWIzSjNZWEprQUhKbFpteGxZM1FBY21WbWNtRmpkQUJ2ZFhSbGNpQndjbTlrZFdOMEFFVnRhWFJXWlhKMFpYZ0FSVzVrVUhKcGJXbDBhWFpsQUVKaGNuSnBaWElBVFdWdGIzSjVRbUZ5Y21sbGNnQk5aVzF2Y25sQ1lYSnlhV1Z5UVhSdmJXbGpRMjkxYm5SbGNnQk5aVzF2Y25sQ1lYSnlhV1Z5UW5WbVptVnlBRTFsYlc5eWVVSmhjbkpwWlhKSmJXRm5aUUJOWlcxdmNubENZWEp5YVdWeVUyaGhjbVZrQUVkeWIzVndUV1Z0YjNKNVFtRnljbWxsY2dCeVpXRmtTVzUyYjJOaGRHbHZiZ0J6ZDJsNmVteGxTVzUyYjJOaGRHbHZibk1BYzNkcGVucHNaVWx1ZG05allYUnBiMjV6VFdGemEyVmtBSGR5YVhSbFNXNTJiMk5oZEdsdmJnQnRhVzR6QUcxaGVETUFiV2xrTXdCMGFXMWxBRUYwYjIxcFkwRmtaQUJCZEc5dGFXTk5hVzRBUVhSdmJXbGpUV0Y0QUVGMGIyMXBZMEZ1WkFCQmRHOXRhV05QY2dCQmRHOXRhV05ZYjNJQVFYUnZiV2xqUlhoamFHRnVaMlVBUVhSdmJXbGpRMjl0Y0ZOM1lYQUFRWFJ2YldsalRHOWhaQUJCZEc5dGFXTlRkRzl5WlFCQmRHOXRhV05EYjNWdWRHVnlRV1JrQUVGMGIyMXBZME52ZFc1MFpYSlRkV0owY21GamRBQkJkRzl0YVdORGIzVnVkR1Z5VFdsdUFFRjBiMjFwWTBOdmRXNTBaWEpOWVhnQVFYUnZiV2xqUTI5MWJuUmxja0Z1WkFCQmRHOXRhV05EYjNWdWRHVnlUM0lBUVhSdmJXbGpRMjkxYm5SbGNsaHZjZ0JCZEc5dGFXTkRiM1Z1ZEdWeVJYaGphR0Z1WjJVQVFYUnZiV2xqUTI5MWJuUmxja052YlhCVGQyRndBR2x0WVdkbFUzUnZjbVVBYVcxaFoyVkJkRzl0YVdOQlpHUUFhVzFoWjJWQmRHOXRhV05OYVc0QWFXMWhaMlZCZEc5dGFXTk5ZWGdBYVcxaFoyVkJkRzl0YVdOQmJtUUFhVzFoWjJWQmRHOXRhV05QY2dCcGJXRm5aVUYwYjIxcFkxaHZjZ0JwYldGblpVRjBiMjFwWTBWNFkyaGhibWRsQUdsdFlXZGxRWFJ2YldsalEyOXRjRk4zWVhBQWFXMWhaMlZCZEc5dGFXTk1iMkZrQUdsdFlXZGxRWFJ2YldsalUzUnZjbVVBYVcxaFoyVk1iMkZrVEc5a0FHbHRZV2RsVTNSdmNtVk1iMlFBZEdWNGRIVnlaUUIwWlhoMGRYSmxVSEp2YWdCMFpYaDBkWEpsVEc5a0FIUmxlSFIxY21WUFptWnpaWFFBZEdWNGRIVnlaVVpsZEdOb0FIUmxlSFIxY21WR1pYUmphRTltWm5ObGRBQjBaWGgwZFhKbFVISnZhazltWm5ObGRBQjBaWGgwZFhKbFRHOWtUMlptYzJWMEFIUmxlSFIxY21WUWNtOXFURzlrQUhSbGVIUjFjbVZRY205cVRHOWtUMlptYzJWMEFIUmxlSFIxY21WSGNtRmtBSFJsZUhSMWNtVkhjbUZrVDJabWMyVjBBSFJsZUhSMWNtVlFjbTlxUjNKaFpBQjBaWGgwZFhKbFVISnZha2R5WVdSUFptWnpaWFFBZEdWNGRIVnlaVWRoZEdobGNnQjBaWGgwZFhKbFIyRjBhR1Z5VDJabWMyVjBBSFJsZUhSMWNtVkhZWFJvWlhKUFptWnpaWFJ6QUhSbGVIUjFjbVZEYkdGdGNBQjBaWGgwZFhKbFQyWm1jMlYwUTJ4aGJYQUFkR1Y0ZEhWeVpVZHlZV1JEYkdGdGNBQjBaWGgwZFhKbFIzSmhaRTltWm5ObGRFTnNZVzF3QUhSbGVIUjFjbVZIWVhSb1pYSk1iMlFBZEdWNGRIVnlaVWRoZEdobGNreHZaRTltWm5ObGRBQjBaWGgwZFhKbFIyRjBhR1Z5VEc5a1QyWm1jMlYwY3dCemNHRnljMlZVWlhoMGRYSmxBSE53WVhKelpWUmxlSFIxY21WUFptWnpaWFFBYzNCaGNuTmxWR1Y0ZEhWeVpVeHZaQUJ6Y0dGeWMyVlVaWGgwZFhKbFRHOWtUMlptYzJWMEFITndZWEp6WlZSbGVHVnNSbVYwWTJnQWMzQmhjbk5sVkdWNFpXeEdaWFJqYUU5bVpuTmxkQUJ6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaQUJ6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaRTltWm5ObGRBQnpjR0Z5YzJWVVpYaDBkWEpsUjJGMGFHVnlBSE53WVhKelpWUmxlSFIxY21WSFlYUm9aWEpQWm1aelpYUUFjM0JoY25ObFZHVjRkSFZ5WlVkaGRHaGxjazltWm5ObGRITUFjM0JoY25ObFNXMWhaMlZNYjJGa0FITndZWEp6WlZSbGVIUjFjbVZEYkdGdGNBQnpjR0Z5YzJWVVpYaDBkWEpsVDJabWMyVjBRMnhoYlhBQWMzQmhjbk5sVkdWNGRIVnlaVWR5WVdSRGJHRnRjQUJ6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaRTltWm5ObGRFTnNZVzBBYzNCaGNuTmxWR1Y0ZEhWeVpVZGhkR2hsY2t4dlpBQnpjR0Z5YzJWVVpYaDBkWEpsUjJGMGFHVnlURzlrVDJabWMyVjBBSE53WVhKelpWUmxlSFIxY21WSFlYUm9aWEpNYjJSUFptWnpaWFJ6QUhOd1lYSnpaVWx0WVdkbFRHOWhaRXh2WkFCcGJXRm5aVk5oYlhCc1pVWnZiM1J3Y21sdWRFNVdBR2x0WVdkbFUyRnRjR3hsUm05dmRIQnlhVzUwUTJ4aGJYQk9WZ0JwYldGblpWTmhiWEJzWlVadmIzUndjbWx1ZEV4dlpFNVdBR2x0WVdkbFUyRnRjR3hsUm05dmRIQnlhVzUwUjNKaFpFNVdBRzFoWjJWVFlXMXdiR1ZHYjI5MGNISnBiblJIY21Ga1EyeGhiWEJPVmdCaFpHUkRZWEp5ZVFCemRXSkNiM0p5YjNjQWRVMTFiRVY0ZEdWdVpHVmtBR2xOZFd4RmVIUmxibVJsWkFCaWFYUm1hV1ZzWkVWNGRISmhZM1FBWW1sMFptbGxiR1JKYm5ObGNuUUFabTFoQUdaeVpYaHdBR3hrWlhod0FHbHVkR1Z5Y0c5c1lYUmxRWFJUWVcxd2JHVUFhVzUwWlhKd2IyeGhkR1ZCZEU5bVpuTmxkQUJwYm5SbGNuQnZiR0YwWlVGMFZtVnlkR1Y0QUhOcGJtTnZjd0J0ZFd3QVFXeHNUV1Z0YjNKNVFtRnljbWxsY2xkcGRHaEhjbTkxY0ZONWJtTUFSR1YyYVdObFRXVnRiM0o1UW1GeWNtbGxjZ0JFWlhacFkyVk5aVzF2Y25sQ1lYSnlhV1Z5VjJsMGFFZHliM1Z3VTNsdVl3QlhiM0pyWjNKdmRYQk5aVzF2Y25sQ1lYSnlhV1Z5QUZkdmNtdG5jbTkxY0UxbGJXOXllVUpoY25KcFpYSlhhWFJvUjNKdmRYQlRlVzVqQUhOMVltZHliM1Z3UW1GeWNtbGxjZ0J6ZFdKbmNtOTFjRTFsYlc5eWVVSmhjbkpwWlhJQWMzVmlaM0p2ZFhCTlpXMXZjbmxDWVhKeWFXVnlRblZtWm1WeUFITjFZbWR5YjNWd1RXVnRiM0o1UW1GeWNtbGxja2x0WVdkbEFITjFZbWR5YjNWd1RXVnRiM0o1UW1GeWNtbGxjbE5vWVhKbFpBQjBjbUZqWlU1V0FISmxjRzl5ZEVsdWRHVnljMlZqZEdsdmJrNVdBR2xuYm05eVpVbHVkR1Z5YzJWamRHbHZiazVXQUhSbGNtMXBibUYwWlZKaGVVNVdBR1Y0WldOMWRHVkRZV3hzWVdKc1pVNVdBSGR5YVhSbFVHRmphMlZrVUhKcGJXbDBhWFpsU1c1a2FXTmxjelI0T0U1V0FFeHZZV1FnWTI5dmNHVnlZWFJwZG1VZ2JXRjBjbWw0QUZOMGIzSmxJR052YjNCbGNtRjBhWFpsSUcxaGRISnBlQUJOZFd4QlpHUWdZMjl2Y0dWeVlYUnBkbVVnYldGMGNtbGpaWE1BU1hOSVpXeHdaWEpKYm5adlkyRjBhVzl1QUVKaFpDQmhaMmR5WldkaGRHbHZiaUJ2Y0FCVVpYTjBJR052Ym1ScGRHbHZiaUJoYm1RZ2MyVnNaV04wQURvZ2JtOGdjMmh2Y25SamFYSmpkV2wwQURvZ1JteGhkSFJsYmdBNklFUnZiblJHYkdGMGRHVnVBRU52Ym1ScGRHbHZiZ29BZEhKMVpTQmpZWE5sQ2dCMGNuVmxJR05oYzJVZ2FYTWdiblZzYkFvQVptRnNjMlVnWTJGelpRb0FRMjl1YzNSaGJuUTZDZ0FuQUNjZ0tBQXBDZ0JNYjI5d0lIZHBkR2dnWTI5dVpHbDBhVzl1SUFCdWIzUWdBSFJsYzNSbFpDQm1hWEp6ZEFBNklGVnVjbTlzYkFBNklFUnZiblJWYm5KdmJHd0FPaUJFWlhCbGJtUmxibU41SUFCTWIyOXdJRU52Ym1ScGRHbHZiZ29BVG04Z2JHOXZjQ0JqYjI1a2FYUnBiMjRLQUV4dmIzQWdRbTlrZVFvQVRtOGdiRzl2Y0NCaWIyUjVDZ0JNYjI5d0lGUmxjbTFwYm1Gc0lFVjRjSEpsYzNOcGIyNEtBRUp5WVc1amFEb2dTMmxzYkFCQ2NtRnVZMmc2SUVKeVpXRnJBRUp5WVc1amFEb2dRMjl1ZEdsdWRXVUFRbkpoYm1Ob09pQlNaWFIxY200QVkyRnpaVG9nQUVSbGJXOTBaUUJrWldaaGRXeDBPaUFBUW5KaGJtTm9PaUJWYm10dWIzZHVJRUp5WVc1amFBQWdkMmwwYUNCbGVIQnlaWE56YVc5dUNnQnpkMmwwWTJnQVkyOXVaR2wwYVc5dUNnQmliMlI1Q2dCVGFHRmtaWElnZG1WeWMybHZiam9nQUZKbGNYVmxjM1JsWkNBQWFXNGdlR1ppSUcxdlpHVUtBSFpsY25ScFkyVnpJRDBnQUdsdWNIVjBJSEJ5YVcxcGRHbDJaU0E5SUFCMlpYSjBaWGdnYzNCaFkybHVaeUE5SUFCMGNtbGhibWRzWlNCdmNtUmxjaUE5SUFCMWMybHVaeUJ3YjJsdWRDQnRiMlJsQ2dCcGJuWnZZMkYwYVc5dWN5QTlJQUJ0WVhoZmRtVnlkR2xqWlhNZ1BTQUFiM1YwY0hWMElIQnlhVzFwZEdsMlpTQTlJQUJuYkY5R2NtRm5RMjl2Y21RZ2NHbDRaV3dnWTJWdWRHVnlJR2x6SUdsdWRHVm5aWElLQUdkc1gwWnlZV2REYjI5eVpDQnZjbWxuYVc0Z2FYTWdkWEJ3WlhJZ2JHVm1kQW9BZFhOcGJtY2daV0Z5YkhsZlpuSmhaMjFsYm5SZmRHVnpkSE1LQUhWemFXNW5JSEJ2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVLQUhWemFXNW5JQUIxYzJsdVp3QWdBR2x1ZEdWeWJHOWpheUJ2Y21SbGNtbHVaeUE5SUFCdFlYaGZjSEpwYldsMGFYWmxjeUE5SUFCc2IyTmhiRjl6YVhwbElEMGdLQUFzSUFCc2IyTmhiRjl6YVhwbElHbGtjeUE5SUNnQVFjaVRFUXVJQXdnQUFBQ1ZBUUFBbGdFQUFKY0JBQUNZQVFBQW1RRUFBSm9CQUFDYkFRQUFuQUVBQUowQkFBQ2VBUUFBT2dBL0lBQWdJQUFzSUc5d1pYSmhkR2x2YmlCaGRDQUFkSEoxWlFCbVlXeHpaUUJqYjI1emRDQmliMjlzQUNWa0lDZ2xjeWtBWTI5dWMzUWdhVzUwT0Y5MEFDVjFJQ2dsY3lrQVkyOXVjM1FnZFdsdWREaGZkQUJqYjI1emRDQnBiblF4Tmw5MEFHTnZibk4wSUhWcGJuUXhObDkwQUdOdmJuTjBJR2x1ZEFCamIyNXpkQ0IxYVc1MEFDVnNiR1FnS0NWektRQmpiMjV6ZENCcGJuUTJORjkwQUNWc2JIVWdLQ1Z6S1FCamIyNXpkQ0IxYVc1ME5qUmZkQUJWYm10dWIzZHVJR052Ym5OMFlXNTBBQzB4TGlOSlRrWUFLekV1STBsT1JnQXhMaU5KVGtRQUpXWUFKUzB1TVRObEFDQTZJQUF4QURBQUFBQ2RSd1FBeVVjRUFLcEhCQUM0UndRQTJFY0VBT1pIQkFEZlJ3UUFhVzVrZFdOMGFYWmxJR3h2YjNBZ2FXNWtaWGdnYlc5a2FXWnBaV1FBYkdsdGFYUmhkR2x2Ym5NQUFFNXZiaTFqYjI1emRHRnVkQzFwYm1SbGVDMWxlSEJ5WlhOemFXOXVBRUhjbGhFTEtRZ0FBQUNmQVFBQUNnQUFBQXNBQUFDZ0FRQUFvUUVBQUE0QUFBQ2lBUUFBRUFBQUFCRUFBQUFTQUVHUWx4RUx2eGtJQUFBQW93RUFBS1FCQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBcFFFQUFCQUFBQUFSQUFBQUVnQUFBRXhwYm10cGJtY2dBQ0J6ZEdGblpUb2dBQW9BWTJGdUozUWdhR0Z1Wkd4bElHMTFiSFJwY0d4bElHVnVkSEo1SUhCdmFXNTBjeUJ3WlhJZ2MzUmhaMlVBYzNSaFoyVnpJRzExYzNRZ2JXRjBZMmdnZDJobGJpQnNhVzVyYVc1bklHbHVkRzhnWVNCemFXNW5iR1VnYzNSaFoyVUFZMkZ1SjNRZ2JHbHVheUJqYjIxd2FXeGhkR2x2YmlCMWJtbDBjeUJtY205dElHUnBabVpsY21WdWRDQnpiM1Z5WTJVZ2JHRnVaM1ZoWjJWekFFTmhibTV2ZENCamNtOXpjeUJzYVc1cklFVlRJR0Z1WkNCa1pYTnJkRzl3SUhCeWIyWnBiR1Z6QUc1MWJXSmxjaUJ2WmlCcGJuWnZZMkYwYVc5dWN5QnRkWE4wSUcxaGRHTm9JR0psZEhkbFpXNGdZMjl0Y0dsc1lYUnBiMjRnZFc1cGRITUFRMjl1ZEhKaFpHbGpkRzl5ZVNCc1lYbHZkWFFnYldGNFgzWmxjblJwWTJWeklIWmhiSFZsY3dCRGIyNTBjbUZrYVdOMGIzSjVJR3hoZVc5MWRDQjJaWEowYVdObGN5QjJZV3gxWlhNQVEyOXVkSEpoWkdsamRHOXllU0JzWVhsdmRYUWdiV0Y0WDNCeWFXMXBkR2wyWlhNZ2RtRnNkV1Z6QUVOdmJuUnlZV1JwWTNSdmNua2dhVzV3ZFhRZ2JHRjViM1YwSUhCeWFXMXBkR2wyWlhNQVEyOXVkSEpoWkdsamRHOXllU0J2ZFhSd2RYUWdiR0Y1YjNWMElIQnlhVzFwZEdsMlpYTUFaMnhmUm5KaFowTnZiM0prSUhKbFpHVmpiR0Z5WVhScGIyNXpJRzExYzNRZ2JXRjBZMmdnWVdOeWIzTnpJSE5vWVdSbGNuTUFRMjl1ZEhKaFpHbGpkRzl5ZVNCcGJuQjFkQ0IyWlhKMFpYZ2djM0JoWTJsdVp3QkRiMjUwY21Ga2FXTjBiM0o1SUhSeWFXRnVaMnhsSUc5eVpHVnlhVzVuQUVOdmJuUnlZV1JwWTNSdmNua2diRzlqWVd3Z2MybDZaUUJEYjI1MGNtRmthV04wYjNKNUlHeHZZMkZzSUhOcGVtVWdjM0JsWTJsaGJHbDZZWFJwYjI0Z2FXUnpBRU52Ym5SeVlXUnBZM1J2Y25rZ1pHVndkR2dnYkdGNWIzVjBjd0JEYjI1MGNtRmthV04wYjNKNUlIaG1ZbDl6ZEhKcFpHVUFUWFZzZEdsd2JHVWdablZ1WTNScGIyNGdZbTlrYVdWeklHbHVJRzExYkhScGNHeGxJR052YlhCcGJHRjBhVzl1SUhWdWFYUnpJR1p2Y2lCMGFHVWdjMkZ0WlNCemFXZHVZWFIxY21VZ2FXNGdkR2hsSUhOaGJXVWdjM1JoWjJVNkFDQWdJQ0FBVkhsd1pYTWdiWFZ6ZENCdFlYUmphRG9BVTNSdmNtRm5aU0J4ZFdGc2FXWnBaWEp6SUcxMWMzUWdiV0YwWTJnNkFGQnlaV05wYzJsdmJpQnhkV0ZzYVdacFpYSnpJRzExYzNRZ2JXRjBZMmc2QUZCeVpYTmxibU5sSUc5bUlHbHVkbUZ5YVdGdWRDQnhkV0ZzYVdacFpYSWdiWFZ6ZENCdFlYUmphRG9BVUhKbGMyVnVZMlVnYjJZZ2NISmxZMmx6WlNCeGRXRnNhV1pwWlhJZ2JYVnpkQ0J0WVhSamFEb0FTVzUwWlhKd2IyeGhkR2x2YmlCaGJtUWdZWFY0YVd4cFlYSjVJSE4wYjNKaFoyVWdjWFZoYkdsbWFXVnljeUJ0ZFhOMElHMWhkR05vT2dCTlpXMXZjbmtnY1hWaGJHbG1hV1Z5Y3lCdGRYTjBJRzFoZEdOb09nQk1ZWGx2ZFhRZ2NYVmhiR2xtYVdOaGRHbHZiaUJ0ZFhOMElHMWhkR05vT2dCSmJtbDBhV0ZzYVhwbGNuTWdiWFZ6ZENCdFlYUmphRG9BT2lBaUFDSWdkbVZ5YzNWeklDSUFJZ29BVFdsemMybHVaeUJsYm5SeWVTQndiMmx1ZERvZ1JXRmphQ0J6ZEdGblpTQnlaWEYxYVhKbGN5QnZibVVnWlc1MGNua2djRzlwYm5RQVJXNTBjbmtnY0c5cGJuUWdibTkwSUdadmRXNWtBRTl1YkhrZ2IyNWxJSEIxYzJoZlkyOXVjM1JoYm5RZ1lteHZZMnNnYVhNZ1lXeHNiM2RsWkNCd1pYSWdjM1JoWjJVQVoyeGZRMnhwY0VScGMzUmhibU5sQUdkc1gwTnNhWEJXWlhKMFpYZ0FRMkZ1SUc5dWJIa2dkWE5sSUc5dVpTQnZaaUJuYkY5RGJHbHdSR2x6ZEdGdVkyVWdiM0lnWjJ4ZlEyeHBjRlpsY25SbGVDQW9aMnhmUTJ4cGNFUnBjM1JoYm1ObElHbHpJSEJ5WldabGNuSmxaQ2tBWjJ4ZlEzVnNiRVJwYzNSaGJtTmxBRU5oYmlCdmJteDVJSFZ6WlNCdmJtVWdiMllnWjJ4ZlEzVnNiRVJwYzNSaGJtTmxJRzl5SUdkc1gwTnNhWEJXWlhKMFpYZ2dLR2RzWDBOc2FYQkVhWE4wWVc1alpTQnBjeUJ3Y21WbVpYSnlaV1FwQUdkc1gwWnlZV2REYjJ4dmNnQm5iRjlHY21GblJHRjBZUUJEWVc1dWIzUWdkWE5sSUdkc1gwWnlZV2REYjJ4dmNpQnZjaUJuYkY5R2NtRm5SR0YwWVNCM2FHVnVJSFZ6YVc1bklIVnpaWEl0WkdWbWFXNWxaQ0J2ZFhSd2RYUnpBRU5oYm01dmRDQjFjMlVnWW05MGFDQm5iRjlHY21GblEyOXNiM0lnWVc1a0lHZHNYMFp5WVdkRVlYUmhBSGhtWWw5emRISnBaR1VnYVhNZ2RHOXZJSE50WVd4c0lIUnZJR2h2YkdRZ1lXeHNJR0oxWm1abGNpQmxiblJ5YVdWek9nQWdJQ0FnZUdaaVgySjFabVpsY2lBQUxDQjRabUpmYzNSeWFXUmxJQUFzSUcxcGJtbHRkVzBnYzNSeWFXUmxJRzVsWldSbFpEb2dBSGhtWWw5emRISnBaR1VnYlhWemRDQmlaU0J0ZFd4MGFYQnNaU0J2WmlBNElHWnZjaUJpZFdabVpYSWdhRzlzWkdsdVp5QmhJR1J2ZFdKc1pTQnZjaUEyTkMxaWFYUWdhVzUwWldkbGNqb0FlR1ppWDNOMGNtbGtaU0J0ZFhOMElHSmxJRzExYkhScGNHeGxJRzltSURRNkFIaG1ZbDl6ZEhKcFpHVWdiWFZ6ZENCaVpTQnRkV3gwYVhCc1pTQnZaaUF5SUdadmNpQmlkV1ptWlhJZ2FHOXNaR2x1WnlCaElHaGhiR1lnWm14dllYUWdiM0lnTVRZdFltbDBJR2x1ZEdWblpYSTZBSGhtWWw5emRISnBaR1VnYVhNZ2RHOXZJR3hoY21kbE9nQXNJR052YlhCdmJtVnVkSE1nS0RFdk5DQnpkSEpwWkdVcElHNWxaV1JsWkNCaGNtVWdBQ3dnWjJ4ZlRXRjRWSEpoYm5ObWIzSnRSbVZsWkdKaFkydEpiblJsY214bFlYWmxaRU52YlhCdmJtVnVkSE1nYVhNZ0FFRjBJR3hsWVhOMElHOXVaU0J6YUdGa1pYSWdiWFZ6ZENCemNHVmphV1o1SUdGdUlHOTFkSEIxZENCc1lYbHZkWFFvZG1WeWRHbGpaWE05TGk0dUtRQkJkQ0JzWldGemRDQnZibVVnYzJoaFpHVnlJRzExYzNRZ2MzQmxZMmxtZVNCaGJpQnBibkIxZENCc1lYbHZkWFFnY0hKcGJXbDBhWFpsQUVGMElHeGxZWE4wSUc5dVpTQnphR0ZrWlhJZ2JYVnpkQ0J6Y0dWamFXWjVJR0Z1SUc5MWRIQjFkQ0JzWVhsdmRYUWdjSEpwYldsMGFYWmxBRUYwSUd4bFlYTjBJRzl1WlNCemFHRmtaWElnYlhWemRDQnpjR1ZqYVdaNUlHRWdiR0Y1YjNWMEtHMWhlRjkyWlhKMGFXTmxjeUE5SUhaaGJIVmxLUUJ3YjNOMFgyUmxjSFJvWDJOdmRtVnlZV2RsSUhKbGNYVnBjbVZ6SUdWaGNteDVYMlp5WVdkdFpXNTBYM1JsYzNSekFFOXViSGtnYjI1bElITm9ZV1JsY2xKbFkyOXlaRTVXSUdKMVptWmxjaUJpYkc5amF5QnBjeUJoYkd4dmQyVmtJSEJsY2lCemRHRm5aUUJuYkY5UWIzTnBkR2x2YmdCbmJGOVFiM05wZEdsdmJsQmxjbFpwWlhkT1ZnQkRZVzRnYjI1c2VTQjFjMlVnYjI1bElHOW1JR2RzWDFCdmMybDBhVzl1SUc5eUlHZHNYMUJ2YzJsMGFXOXVVR1Z5Vm1sbGQwNVdBR2RzWDBOc2FYQkVhWE4wWVc1alpWQmxjbFpwWlhkT1ZnQkRZVzRnYjI1c2VTQjFjMlVnYjI1bElHOW1JR2RzWDBOc2FYQkVhWE4wWVc1alpTQnZjaUJuYkY5RGJHbHdSR2x6ZEdGdVkyVlFaWEpXYVdWM1RsWUFaMnhmUTNWc2JFUnBjM1JoYm1ObFVHVnlWbWxsZDA1V0FFTmhiaUJ2Ym14NUlIVnpaU0J2Ym1VZ2IyWWdaMnhmUTNWc2JFUnBjM1JoYm1ObElHOXlJR2RzWDBOMWJHeEVhWE4wWVc1alpWQmxjbFpwWlhkT1ZnQm5iRjlNWVhsbGNnQm5iRjlNWVhsbGNsQmxjbFpwWlhkT1ZnQkRZVzRnYjI1c2VTQjFjMlVnYjI1bElHOW1JR2RzWDB4aGVXVnlJRzl5SUdkc1gweGhlV1Z5VUdWeVZtbGxkMDVXQUdkc1gxWnBaWGR3YjNKMFRXRnphd0JuYkY5V2FXVjNjRzl5ZEUxaGMydFFaWEpXYVdWM1RsWUFRMkZ1SUc5dWJIa2dkWE5sSUc5dVpTQnZaaUJuYkY5V2FXVjNjRzl5ZEUxaGMyc2diM0lnWjJ4ZlZtbGxkM0J2Y25STllYTnJVR1Z5Vm1sbGQwNVdBRUYwSUd4bFlYTjBJRzl1WlNCemFHRmtaWElnYlhWemRDQnpjR1ZqYVdaNUlHRWdiR0Y1YjNWMEtHMWhlRjl3Y21sdGFYUnBkbVZ6SUQwZ2RtRnNkV1VwQUU5dWJIa2diMjVsSUhSaGMydE9WaUJwYm5SbGNtWmhZMlVnWW14dlkyc2dhWE1nWVd4c2IzZGxaQ0J3WlhJZ2MyaGhaR1Z5QUZWdWEyNXZkMjRnVTNSaFoyVXVBRkpsWTNWeWMybHZiaUJrWlhSbFkzUmxaRG9BSUdOaGJHeHBibWNnQUU1dklHWjFibU4wYVc5dUlHUmxabWx1YVhScGIyNGdLR0p2WkhrcElHWnZkVzVrT2lBQWQyaGxiaUJ0YjNKbElIUm9ZVzRnYjI1bElHWnlZV2R0Wlc1MElITm9ZV1JsY2lCdmRYUndkWFFzSUdGc2JDQnRkWE4wSUdoaGRtVWdiRzlqWVhScGIyNGdjWFZoYkdsbWFXVnljd0JuYkY4QUFBQVFBQUFBWVd4c2IyTmhkRzl5UEZRK09qcGhiR3h2WTJGMFpTaHphWHBsWDNRZ2Jpa2dKMjRuSUdWNFkyVmxaSE1nYldGNGFXMTFiU0J6ZFhCd2IzSjBaV1FnYzJsNlpRQkIzTEFSQ3lrSUFBQUFwZ0VBQUtjQkFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0JCa0xFUkN5a0lBQUFBcUFFQUFLa0JBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdCQnhMRVJDeWtJQUFBQXFnRUFBS3NCQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQkIrTEVSQzIwSUFBQUFyQUVBQUswQkFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUFnQUFBQUNBQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFFSHdzaEVMNHc2dUFRQUFyd0VBQUFvQUFBQ3dBUUFBREFBQUFBMEFBQUFPQUFBQXNRRUFBQkFBQUFBUkFBQUFFZ0FBQUdGdWIyNUFBRzExYzNRZ1ltVWdabTlzYkc5M1pXUWdZbmtnYldGamNtOGdibUZ0WlFBalpHVm1hVzVsQUFCaVlXUWdZWEpuZFcxbGJuUUFaSFZ3YkdsallYUmxJRzFoWTNKdklIQmhjbUZ0WlhSbGNnQnRhWE56YVc1bklIQmhjbVZ1ZEdobGMybHpBRzFwYzNOcGJtY2djM0JoWTJVZ1lXWjBaWElnYldGamNtOGdibUZ0WlFCTllXTnlieUJ5WldSbFptbHVaV1E3SUdaMWJtTjBhVzl1TFd4cGEyVWdkbVZ5YzNWeklHOWlhbVZqZEMxc2FXdGxPZ0JOWVdOeWJ5QnlaV1JsWm1sdVpXUTdJR1JwWm1abGNtVnVkQ0J1ZFcxaVpYSWdiMllnWVhKbmRXMWxiblJ6T2dCTllXTnlieUJ5WldSbFptbHVaV1E3SUdScFptWmxjbVZ1ZENCaGNtZDFiV1Z1ZENCdVlXMWxjem9BVFdGamNtOGdjbVZrWldacGJtVmtPeUJrYVdabVpYSmxiblFnYzNWaWMzUnBkSFYwYVc5dWN6b0FJM1Z1WkdWbUFHTmhiaUJ2Ym14NUlHSmxJR1p2Ykd4dmQyVmtJR0o1SUdFZ2MybHVaMnhsSUcxaFkzSnZJRzVoYldVQWJXRjRhVzExYlNCdVpYTjBhVzVuSUdSbGNIUm9JR1Y0WTJWbFpHVmtBQ05wWmk4amFXWmtaV1l2STJsbWJtUmxaZ0FqWld4cFppQmhablJsY2lBalpXeHpaUUFqWld4cFpnQWpaV3h6WlNCaFpuUmxjaUFqWld4elpRQWpaV3h6WlFCMWJtVjRjR1ZqZEdWa0lIUnZhMlZ1Y3lCbWIyeHNiM2RwYm1jZ1pHbHlaV04wYVhabEFDTmxibVJwWmdBamFXWUFJMnhwYm1VQVpHVm1hVzVsWkFCdWIyNXdiM0owWVdKc1pTQjNhR1Z1SUdWNGNHRnVaR1ZrSUdaeWIyMGdiV0ZqY205eklHWnZjaUJ3Y21Wd2NtOWpaWE56YjNJZ1pYaHdjbVZ6YzJsdmJnQmpZVzV1YjNRZ2RYTmxJR2x1SUhCeVpYQnliMk5sYzNOdmNpQmxlSEJ5WlhOemFXOXVJSGRvWlc0Z1pYaHdZVzVrWldRZ1puSnZiU0J0WVdOeWIzTUFhVzVqYjNKeVpXTjBJR1JwY21WamRHbDJaU3dnWlhod1pXTjBaV1FnYVdSbGJuUnBabWxsY2dCd2NtVndjbTlqWlhOemIzSWdaWFpoYkhWaGRHbHZiZ0JsZUhCbFkzUmxaQ0FuS1NjQVltRmtJR1Y0Y0hKbGMzTnBiMjRBWkdsMmFYTnBiMjRnWW5rZ01BQmpZVzRuZENCbGRtRnNkV0YwWlNCbGVIQnlaWE56YVc5dUFIVnVaR1ZtYVc1bFpDQnRZV055YnlCcGJpQmxlSEJ5WlhOemFXOXVJRzV2ZENCaGJHeHZkMlZrSUdsdUlHVnpJSEJ5YjJacGJHVUFJMmxtWkdWbUFDTnBabTVrWldZQWRXNWxlSEJsWTNSbFpDQjBiMnRsYm5NZ1ptOXNiRzkzYVc1bklDTnBabVJsWmlCa2FYSmxZM1JwZG1VZ0xTQmxlSEJsWTNSbFpDQmhJRzVsZDJ4cGJtVUFiWFZ6ZENCaVpTQm1iMnhzYjNkbFpDQmllU0JoSUdobFlXUmxjaUJ1WVcxbEFDTnBibU5zZFdSbEFHVjRjR1ZqZEdWa0lHNWxkMnhwYm1VZ1lXWjBaWElnYUdWaFpHVnlJRzVoYldVNkFDVnpBR1Y0ZEhKaElHTnZiblJsYm5RZ1lXWjBaWElnYUdWaFpHVnlJRzVoYldVNkFDTnNhVzVsSUFBZ0FDSUFJZ29BQ2dCRGIzVnNaQ0J1YjNRZ2NISnZZMlZ6Y3lCcGJtTnNkV1JsSUdScGNtVmpkR2wyWlFCbWIzSWdhR1ZoWkdWeUlHNWhiV1U2SUNWekFHMTFjM1FnWW5rZ1ptOXNiRzkzWldRZ1lua2dZVzRnYVc1MFpXZHlZV3dnYkdsMFpYSmhiQUFBR0dJRUFHWnBiR1Z1WVcxbExXSmhjMlZrSUNOc2FXNWxBQ05sY25KdmNnQmthWEpsWTNScGRtVWdiWFZ6ZENCbGJtUWdkMmwwYUNCaElHNWxkMnhwYm1VQUkzQnlZV2R0WVFCcGJuWmhiR2xrSUhCeVpYQnliMk5sYzNOdmNpQmpiMjF0WVc1a0FDTjJaWEp6YVc5dUFHMTFjM1FnYjJOamRYSWdabWx5YzNRZ2FXNGdjMmhoWkdWeUFHMTFjM1FnWW1VZ1ptOXNiRzkzWldRZ1lua2dkbVZ5YzJsdmJpQnVkVzFpWlhJQVltRmtJSEJ5YjJacGJHVWdibUZ0WlRzZ2RYTmxJR1Z6TENCamIzSmxMQ0J2Y2lCamIyMXdZWFJwWW1sc2FYUjVBR0poWkNCMGIydGxibk1nWm05c2JHOTNhVzVuSUhCeWIyWnBiR1VnTFMwZ1pYaHdaV04wWldRZ2JtVjNiR2x1WlFCbGVIUmxibk5wYjI0Z2JtRnRaU0J1YjNRZ2MzQmxZMmxtYVdWa0FDTmxlSFJsYm5OcGIyNEFaWGgwWlc1emFXOXVJRzVoYldVZ1pYaHdaV04wWldRQUp6b25JRzFwYzNOcGJtY2dZV1owWlhJZ1pYaDBaVzV6YVc5dUlHNWhiV1VBWW1Wb1lYWnBiM0lnWm05eUlHVjRkR1Z1YzJsdmJpQnViM1FnYzNCbFkybG1hV1ZrQUdWNGRISmhJSFJ2YTJWdWN5QXRMU0JsZUhCbFkzUmxaQ0J1Wlhkc2FXNWxBRzFwYzIxaGRHTm9aV1FnYzNSaGRHVnRaVzUwY3dBQUFBQTdZZ1FBYVc1MllXeHBaQ0JrYVhKbFkzUnBkbVU2QUNNQWFXNTJZV3hwWkNCa2FYSmxZM1JwZG1VQWFHVmhaR1Z5SUc1aGJXVWdkRzl2SUd4dmJtY0FKV1FBWm1sc1pXNWhiV1V0WW1GelpXUWdYMTlHU1V4RlgxOEFSVzVrSUc5bUlHbHVjSFYwSUdsdUlHMWhZM0p2QUcxaFkzSnZJR1Y0Y0dGdWMybHZiZ0JGYm1RZ2IyWWdiR2x1WlNCcGJpQnRZV055YnlCemRXSnpkR2wwZFhScGIyNDZBSFZ1Wlhod1pXTjBaV1FnSnlNbkFGUnZieUJtWlhjZ1lYSm5jeUJwYmlCTllXTnlid0JVYjI4Z2JXRnVlU0JoY21keklHbHVJRzFoWTNKdkFFSGN3UkVMS3NnQkFBREpBUUFBeWdFQUFNc0JBQURNQVFBQXpRRUFBTTRCQUFEUEFRQUEwQUVBQU5FQkFBRFNBUUJCa01JUkMzRFRBUUFBMUFFQUFOVUJBQURXQVFBQTF3RUFBTmdCQUFEWkFRQUEyZ0VBQU5zQkFBRFJBUUFBMGdFQUFBQmhiR3h2WTJGMGIzSThWRDQ2T21Gc2JHOWpZWFJsS0hOcGVtVmZkQ0J1S1NBbmJpY2daWGhqWldWa2N5QnRZWGhwYlhWdElITjFjSEJ2Y25SbFpDQnphWHBsQUVHTXd4RUxMZHdCQUFEZEFRQUEzZ0VBQU44QkFBRGdBUUFBMkFFQUFOa0JBQURhQVFBQTJ3RUFBT0VCQUFEaUFRQUFPQUJCeE1NUkN5M2pBUUFBNUFFQUFNai8vLy9JLy8vL0FBQUFBT1VCQUFEbUFRQUF4R0VFQVB4aEJBQVFZZ1FBMkdFRUFEZ0FRZnpERVF0YTV3RUFBT2dCQUFESS8vLy95UC8vL3dBQUFBRHBBUUFBNmdFQUFFZE1YMGRQVDBkTVJWOWpjSEJmYzNSNWJHVmZiR2x1WlY5a2FYSmxZM1JwZG1VQVIweGZSMDlQUjB4RlgybHVZMngxWkdWZlpHbHlaV04wYVhabEFFSGd4QkVMa0FYVEFRQUE2d0VBQU93QkFBRHRBUUFBN2dFQUFOZ0JBQURaQVFBQTJnRUFBTnNCQUFEUkFRQUEwZ0VBQUo1YkJBREpXUVFBeVZrRUFHdGJCQUJUV3dRQWwxc0VBS0piQkFBOFltRmtJSFJ2YTJWdVBnQitJU1ZlSmlvb0tTMHJQWHdzTGp3K0x6ODdPbHRkZTMwalhBQUFnUUFBQUNCa0JBQ0NBQUFBSTJRRUFJTUFBQUFtWkFRQWhBQUFBQ2xrQkFDRkFBQUFMR1FFQUlZQUFBQXZaQVFBaHdBQUFESmtCQUNOQUFBQU5XUUVBSTRBQUFBNFpBUUFqd0FBQUR0a0JBQ0lBQUFBUG1RRUFJa0FBQUJDWkFRQWlnQUFBRVprQkFDTEFBQUFTV1FFQUl3QUFBQk1aQVFBa0FBQUFFOWtCQUNSQUFBQVVtUUVBSklBQUFCVlpBUUFrd0FBQUZoa0JBQ1VBQUFBVzJRRUFKVUFBQUJlWkFRQWxnQUFBR0ZrQkFDakFBQUFaR1FFQUtRQUFBQnJaQVFBcFFBQUFIRmtCQUNwQUFBQWRHUUVBS2dBQUFCNVpBUUFxZ0FBQUg1a0JBQ21BQUFBaEdRRUFLY0FBQUNLWkFRQXF3QUFBSkZrQkFDc0FBQUFsbVFFQUswQUFBQ2RaQVFBcmdBQUFLTmtCQUN2QUFBQXEyUUVBTEFBQUFDd1pBUUFzUUFBQUw1a0JBQ3lBQUFBd1dRRUFMTUFBQURMWkFRQXRBQUFBTlJrQkFDMUFBQUEzV1FFQUxZQUFBRHBaQVFBS3owQUxUMEFLajBBTHowQUpUMEFQajRBUER3QUppWUFmSHdBWGw0QVBqNDlBRHc4UFFBbVBRQjhQUUJlUFFBOVBRQWhQUUErUFFBOFBRQXRMUUFyS3dBNk9nQmtaV1pwYm1VQWRXNWtaV1lBYVdZQVpXeHBaZ0JsYkhObEFHVnVaR2xtQUdsbVpHVm1BR2xtYm1SbFpnQnNhVzVsQUhCeVlXZHRZUUJsY25KdmNnQjJaWEp6YVc5dUFHTnZjbVVBWTI5dGNHRjBhV0pwYkdsMGVRQmxjd0JsZUhSbGJuTnBiMjRBWDE5TVNVNUZYMThBWDE5R1NVeEZYMThBWDE5V1JWSlRTVTlPWDE4QWFXNWpiSFZrWlFCQi9Na1JDd252QVFBQThBRUFBRHdBUVpES0VRc3Q4UUVBQVBJQkFBREUvLy8veFAvLy93QUFBQUR6QVFBQTlBRUFBQkJsQkFCSVpRUUFYR1VFQUNSbEJBQThBRUhJeWhFTEd2VUJBQUQyQVFBQXhQLy8vOFQvLy84QUFBQUE5d0VBQVBnQkFFSHN5aEVMZS9rQkFBRDZBUUFBK3dFQUFQd0JBQUQ5QVFBQS9nRUFBUDhCQUFBQUFnQUFBUUlBQUFJQ0FBQURBZ0FBQkFJQUFBVUNBQUFHQWdBQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUJCOE1zUkM5VUowd0VBQUFjQ0FBQUdBQUFBQmdBQUFBWUFBQURZQVFBQTJRRUFBTm9CQUFEYkFRQUEwUUVBQU5JQkFBQmlZV1FnWTJoaGNtRmpkR1Z5SUdsdUlHWnNiMkYwSUdWNGNHOXVaVzUwQUFCa2IzVmliR1VnWm14dllYUnBibWN0Y0c5cGJuUWdjM1ZtWm1sNEFHWnNiMkYwSUd4cGRHVnlZV3dnYm1WbFpITWdZU0JrWldOcGJXRnNJSEJ2YVc1MElHOXlJR1Y0Y0c5dVpXNTBBR2hoYkdZZ1pteHZZWFJwYm1jdGNHOXBiblFnYzNWbVptbDRBR1pzYjJGMGFXNW5MWEJ2YVc1MElITjFabVpwZUFCbWJHOWhkQ0JzYVhSbGNtRnNJSFJ2YnlCc2IyNW5BSFZ1Wlhod1pXTjBaV1FBSndCdlkzUmhiQ0JoYm1RZ2FHVjRJSE5sY1hWbGJtTmxjeUJ1YjNRZ2MzVndjRzl5ZEdWa0FGd0FaWGh3WldOMFpXUUFIR2NFQURSbkJBQmNad1FBUjB4ZlFWSkNYMmR3ZFY5emFHRmtaWEpmYVc1ME5qUUFSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6QUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOXBiblEyTkFBQUFKaG5CQUEwWndRQXNHY0VBRWRNWDBGTlJGOW5jSFZmYzJoaFpHVnlYMmx1ZERFMkFFZE1YMFZZVkY5emFHRmtaWEpmWlhod2JHbGphWFJmWVhKcGRHaHRaWFJwWTE5MGVYQmxjMTlwYm5ReE5nQnVZVzFsSUhSdmJ5QnNiMjVuQUdKaFpDQmthV2RwZENCcGJpQm9aWGhoWkdWamFXMWhiQ0JzYVhSbGNtRnNBR2hsZUdGa1pXTnBiV0ZzSUd4cGRHVnlZV3dnZEc5dklHSnBad0JvWlhoaFpHVmphVzFoYkNCc2FYUmxjbUZzSUhSdmJ5QnNiMjVuQURZMExXSnBkQ0JvWlhoaFpHVmphVzFoYkNCc2FYUmxjbUZzQURFMkxXSnBkQ0JvWlhoaFpHVmphVzFoYkNCc2FYUmxjbUZzQUc1MWJXVnlhV01nYkdsMFpYSmhiQ0IwYjI4Z2JHOXVad0J2WTNSaGJDQnNhWFJsY21Gc0lHUnBaMmwwSUhSdmJ5QnNZWEpuWlFCdlkzUmhiQ0JzYVhSbGNtRnNJSFJ2YnlCaWFXY0FOalF0WW1sMElHOWpkR0ZzSUd4cGRHVnlZV3dBTVRZdFltbDBJRzlqZEdGc0lHeHBkR1Z5WVd3QWJuVnRaWEpwWXlCc2FYUmxjbUZzSUhSdmJ5QmlhV2NBTmpRdFltbDBJR3hwZEdWeVlXd0FNVFl0WW1sMElDQnNhWFJsY21Gc0FERTJMV0pwZENCc2FYUmxjbUZzQUVWdVpDQnZaaUJwYm5CMWRDQnBiaUJqYjIxdFpXNTBBR052YlcxbGJuUUFSVzVrSUc5bUlHeHBibVVnYVc0Z2MzUnlhVzVuQUhOMGNtbHVad0J3Y21Wd2NtOWpaWE56YjNJZ1pHbHlaV04wYVhabElHTmhibTV2ZENCaVpTQndjbVZqWldSbFpDQmllU0JoYm05MGFHVnlJSFJ2YTJWdUFDTUFjM1J5YVc1bklHeHBkR1Z5WVd4eklHNXZkQ0J6ZFhCd2IzSjBaV1FBSWlJQVkyaGhjbUZqZEdWeUlHeHBkR1Z5WVd4eklHNXZkQ0J6ZFhCd2IzSjBaV1FBSlhNQWRXNWxlSEJsWTNSbFpDQnNiMk5oZEdsdmJnQWpJd0IxYm1WNGNHVmpkR1ZrSUd4dlkyRjBhVzl1T3lCbGJtUWdiMllnY21Wd2JHRmpaVzFsYm5RZ2JHbHpkQUIxYm1WNGNHVmpkR1ZrSUd4dlkyRjBhVzl1T3lCbGJtUWdiMllnWVhKbmRXMWxiblFBYm05MElITjFjSEJ2Y25SbFpDQm1iM0lnZEdobGMyVWdkRzlyWlc1ekFHTnZiV0pwYm1Wa0lIUnZhMlZ1Y3lCaGNtVWdkRzl2SUd4dmJtY0FZMjl0WW1sdVpXUWdkRzlyWlc0Z2FYTWdhVzUyWVd4cFpBQnRhWE56YVc1bklDTmxibVJwWmdCQjBOVVJDejdUQVFBQUNBSUFBQWtDQUFBS0FnQUFDd0lBQU5nQkFBRFpBUUFBMmdFQUFOc0JBQURSQVFBQTBnRUFBSFJ2YTJWdUlIQmhjM1JwYm1jZ0tDTWpLUUJCbU5ZUkN5N1RBUUFBREFJQUFBMENBQUFPQWdBQUR3SUFBTmdCQUFEWkFRQUEyZ0VBQU5zQkFBRFJBUUFBMGdFQUFDVnpBRUhRMWhFTEt0TUJBQUFRQWdBQUVRSUFBQklDQUFBVEFnQUFGQUlBQUJVQ0FBRGFBUUFBMndFQUFORUJBQURTQVFCQmhOY1JDM1FXQWdBQUZ3SUFBQmdDQUFBTEFBQUFHUUlBQUJvQ0FBQU9BQUFBR3dJQUFCQUFBQUFjQWdBQUVnQUFBQ2dBS1FBQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUJCaE5nUkN5a0lBQUFBSFFJQUFCNENBQUFMQUFBQUh3SUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdCQnVOZ1JDeWtnQWdBQUlRSUFBQ0lDQUFBTEFBQUFJd0lBQUNRQ0FBQU9BQUFBSlFJQUFCQUFBQUFSQUFBQUVnQkI4TmdSQzVzQ0pnSUFBQ2NDQUFBb0FnQUFLUUlBQUNvQ0FBQXJBZ0FBTEFJQUFDMENBQUF1QWdBQUx3SUFBREFDQUFBdkx5QlBjRTF2WkhWc1pWQnliMk5sYzNObFpDQUFDZ0FqYkdsdVpTQXhDZ0JIVEZOTUxuTjBaQzQwTlRBQVUxQldYMFZZVkY5d2FIbHphV05oYkY5emRHOXlZV2RsWDJKMVptWmxjZ0JUVUZaZlMwaFNYM1oxYkd0aGJsOXRaVzF2Y25sZmJXOWtaV3dBVTFCV1gwdElVbDl3YjNOMFgyUmxjSFJvWDJOdmRtVnlZV2RsQUZOUVZsOUZXRlJmWm5KaFoyMWxiblJmYzJoaFpHVnlYMmx1ZEdWeWJHOWphd0JUVUZaZlRsWmZZMjl0Y0hWMFpWOXphR0ZrWlhKZlpHVnlhWFpoZEdsMlpYTUFVMUJXWDA1V1gzSmhlVjkwY21GamFXNW5BRk5RVmw5T1ZsOXRaWE5vWDNOb1lXUmxjZ0JCbE5zUkMrZ0VNUUlBQURJQ0FBQmhiR3h2WTJGMGIzSThWRDQ2T21Gc2JHOWpZWFJsS0hOcGVtVmZkQ0J1S1NBbmJpY2daWGhqWldWa2N5QnRZWGhwYlhWdElITjFjSEJ2Y25SbFpDQnphWHBsQUFCVFVGWmZUbFpmYzJGdGNHeGxYMjFoYzJ0ZmIzWmxjbkpwWkdWZlkyOTJaWEpoWjJVQVUxQldYMDVXWDNacFpYZHdiM0owWDJGeWNtRjVNZ0JUVUZaZlRsWmZjM1JsY21WdlgzWnBaWGRmY21WdVpHVnlhVzVuQUZOUVZsOU9WbDluWlc5dFpYUnllVjl6YUdGa1pYSmZjR0Z6YzNSb2NtOTFaMmdBVTFCV1gwNVdYMlp5WVdkdFpXNTBYM05vWVdSbGNsOWlZWEo1WTJWdWRISnBZd0JUVUZaZlIwOVBSMHhGWDJoc2MyeGZablZ1WTNScGIyNWhiR2wwZVRFQVUxQldYMFZZVkY5emFHRmtaWEpmZG1sbGQzQnZjblJmYVc1a1pYaGZiR0Y1WlhJQVUxQldYMHRJVWw5emFHRmtaWEpmWkhKaGQxOXdZWEpoYldWMFpYSnpBRk5RVmw5RldGUmZjMmhoWkdWeVgzTjBaVzVqYVd4ZlpYaHdiM0owQUZOUVZsOUxTRkpmYzJoaFpHVnlYMkpoYkd4dmRBQlRVRlpmUVUxRVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5MlpYSjBaWGhmY0dGeVlXMWxkR1Z5QUZOUVZsOUxTRkpmWkdWMmFXTmxYMmR5YjNWd0FGTlFWbDlMU0ZKZmJYVnNkR2wyYVdWM0FGTlFWbDlGV0ZSZlpuSmhaMjFsYm5SZmFXNTJiMk5oZEdsdmJsOWtaVzV6YVhSNUFGTlFWbDlPVmxoZmJYVnNkR2wyYVdWM1gzQmxjbDkyYVdWM1gyRjBkSEpwWW5WMFpYTUFVMUJXWDBWWVZGOW1jbUZuYldWdWRGOW1kV3hzZVY5amIzWmxjbVZrQUZOUVZsOU9WbDl6YUdGa2FXNW5YM0poZEdVQVUxQldYMDVXWDNOb1lXUmxjbDl6YlY5aWRXbHNkR2x1Y3dCQmhPQVJDNmtLVTFCV1gwdElVbDh4Tm1KcGRGOXpkRzl5WVdkbEFGTlFWbDlMU0ZKZk9HSnBkRjl6ZEc5eVlXZGxBQUJPWldsMGFHVnlJR0VnWm5KdmJuUXRaVzVrSUdOdmJuTjBZVzUwSUc1dmNpQmhJSE53WldNZ1kyOXVjM1JoYm5RdUFGTlFWbDlMU0ZKZmMzUnZjbUZuWlY5aWRXWm1aWEpmYzNSdmNtRm5aVjlqYkdGemN3QlRVRlpmVGxaZlkyOXZjR1Z5WVhScGRtVmZiV0YwY21sNEFGTlFWbDlGV0ZSZlpHVnpZM0pwY0hSdmNsOXBibVJsZUdsdVp3QlRVRlpmUVUxRVgyZHdkVjl6YUdGa1pYSmZhR0ZzWmw5bWJHOWhkRjltWlhSamFBQm5iRjlUWldOdmJtUmhjbmxXYVdWM2NHOXlkRTFoYzJ0T1ZnQkhURjlPVmw5emRHVnlaVzlmZG1sbGQxOXlaVzVrWlhKcGJtY0FaMnhmVTJWamIyNWtZWEo1VUc5emFYUnBiMjVPVmdCbmJGOVdhV1YzY0c5eWRFMWhjMnNBUjB4ZlRsWmZkbWxsZDNCdmNuUmZZWEp5WVhreUFHZHNYMUJ2YzJsMGFXOXVVR1Z5Vm1sbGQwNVdBRWRNWDA1V1dGOXRkV3gwYVhacFpYZGZjR1Z5WDNacFpYZGZZWFIwY21saWRYUmxjd0JuYkY5V2FXVjNjRzl5ZEUxaGMydFFaWEpXYVdWM1RsWUFKRWRzYjJKaGJBQm1iM0pqYVc1bklETXlMV0pwZENCMlpXTjBiM0lnZEhsd1pTQjBieUJ1YjI0Z05qUXRZbWwwSUhOallXeGhjZ0JtYjNKamFXNW5JRzV2YmlBek1pMWlhWFFnZG1WamRHOXlJSFI1Y0dVQWJXRjBjbWw0SUhOM2FYcDZiR1VBZFc1cmJtOTNiaUJuYkhOc1lXNW5JR0pwYm1GeWVTQnZjR1Z5WVhScGIyNEFkVzVyYm05M2JpQm5iSE5zWVc1bklIVnVZWEo1QUZOUVZsOUJUVVJmYzJoaFpHVnlYMmx0WVdkbFgyeHZZV1JmYzNSdmNtVmZiRzlrQUZOUVZsOUJUVVJmYzJoaFpHVnlYMlp5WVdkdFpXNTBYMjFoYzJzQVIweGZRVTFFWDNSbGVIUjFjbVZmWjJGMGFHVnlYMkpwWVhOZmJHOWtBRk5RVmw5QlRVUmZkR1Y0ZEhWeVpWOW5ZWFJvWlhKZlltbGhjMTlzYjJRQVUxQldYMDVXWDNOb1lXUmxjbDlwYldGblpWOW1iMjkwY0hKcGJuUUFVbVZ6Vkhsd1pRQlRVRlpmUzBoU1gzQm9lWE5wWTJGc1gzTjBiM0poWjJWZlluVm1abVZ5QUZOUVZsOUJUVVJmWjNCMVgzTm9ZV1JsY2w5b1lXeG1YMlpzYjJGMEFGTlFWbDlKVGxSRlRGOXphR0ZrWlhKZmFXNTBaV2RsY2w5bWRXNWpkR2x2Ym5NeUFGTlFWbDlCVFVSZmMyaGhaR1Z5WDJKaGJHeHZkQUJUVUZaZlFVMUVYMmRqYmw5emFHRmtaWElBVTFCV1gwdElVbDl6ZFdKbmNtOTFjRjkyYjNSbEFHbHVkbTlqWVhScGIyNGdiM0JsY21GMGFXOXVBRk5RVmw5T1ZsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZmNHRnlkR2wwYVc5dVpXUUFiV2x6YzJsdVp5QjFjMlZ5SUdaMWJtTjBhVzl1T3lCc2FXNXJaWElnYm1WbFpITWdkRzhnWTJGMFkyZ2dkR2hoZEFCVFVGWmZTMGhTWDNOb1lXUmxjbDloZEc5dGFXTmZZMjkxYm5SbGNsOXZjSE1BZFc1cmJtOTNiaUJuYkhOc1lXNW5JR0ZuWjNKbFoyRjBaUUJ3WVhKaGJRQmhjbWNBVTFCV1gwVllWRjlrWlcxdmRHVmZkRzlmYUdWc2NHVnlYMmx1ZG05allYUnBiMjRBVTFCV1gwdElVbDl6YUdGa1pYSmZZMnh2WTJzQWRXNXJibTkzYmlCdmNHVnlZWFJwYjI0Z2QybDBhQ0J1YnlCaGNtZDFiV1Z1ZEhNQVUxQldYMEZOUkY5bmNIVmZjMmhoWkdWeVgybHVkREUyQUZOUVZsOUJUVVJmYzJoaFpHVnlYM1J5YVc1aGNubGZiV2x1YldGNEFCTUFBQUFVQUFBQUZRQUFBQk1BQUFBV0FBQUFGd0FBQUFBQUFBQUJBQUFBQWdBQUFBTUFBQUFFQUFBQUJRQUFBTUVVQUFEQ0ZBQUF3eFFBQU1RVUFBREZGQUFBeGhRQUFKTVVBQUNVRkFBQUFnQUFBQUlBQUFBQUFBQUFBZ0JCdk9vUkMva0JBUUFBQUFjQUFBQUdBQUFBQndBQUFBY0FBQUFIQUFBQUJ3QUFBQWNBQUFBRUFBQUEyaFFBQU40VUFBRGJGQUFBMEJRQUFORVVBQUFIQUFBQUJ3QUFBQWNBQUFBSEFBQUFBQUFBQUFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQS8vLy9md1lBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBRkFBQUFQLy8vMzhWQUFBQUZnQUFBQmNBQUFBWUFBQUEvLy8vZnhrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQS8vLy9meDRBQUFBZkFBQUFJQUFBQUNFQUFBRC8vLzkvSXdBQUFDUUFBQUFpQUFBQUpRQUFBQ1lBQUFBbkFFSEU3QkVMY3dFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBUWNEdEVRc2dOUUlBQURZQ0FBQlNaWE5VZVhCbEFHbHVaR1Y0WVdKc1pRQUFBQU1DSXdjQVFlanRFUXRMTndJQUFEZ0NBQUJoYkd4dlkyRjBiM0k4VkQ0Nk9tRnNiRzlqWVhSbEtITnBlbVZmZENCdUtTQW5iaWNnWlhoalpXVmtjeUJ0WVhocGJYVnRJSE4xY0hCdmNuUmxaQ0J6YVhwbEFFSEE3aEVMQmprQ0FBQTZBZ0JCME80UkN3WTdBZ0FBUEFJQVFZenZFUXZ5QVFFQUFBQUJBQUFBQWdBQUFBTUFBQUFDQUFBQUFnQUFBQUVBQUFBQ0FBQUFVMUJXWDBGTlJGOW5jSFZmYzJoaFpHVnlYMmx1ZERFMkFGTlFWbDlCVFVSZlozQjFYM05vWVdSbGNsOW9ZV3htWDJac2IyRjBBRk5RVmw5T1ZsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZmNHRnlkR2wwYVc5dVpXUUFVMUJXWDB0SVVsODRZbWwwWDNOMGIzSmhaMlVBVTFCV1gwdElVbDh4Tm1KcGRGOXpkRzl5WVdkbEFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBQUFBQVBnSUFBRDhDQUVHSThSRUxNUEMzQkFBdEt5QWdJREJZTUhnQUtHNTFiR3dwQUFBQUFCRUFDZ0FSRVJFQUFBQUFCUUFBQUFBQUFBa0FBQUFBQ3dCQndQRVJDeUVSQUE4S0VSRVJBd29IQUFFVENRc0xBQUFKQmdzQUFBc0FCaEVBQUFBUkVSRUFRZkh4RVFzQkN3QkIrdkVSQ3hnUkFBb0tFUkVSQUFvQUFBSUFDUXNBQUFBSkFBc0FBQXNBUWF2eUVRc0JEQUJCdC9JUkN4VU1BQUFBQUF3QUFBQUFDUXdBQUFBQUFBd0FBQXdBUWVYeUVRc0JEZ0JCOGZJUkN4VU5BQUFBQkEwQUFBQUFDUTRBQUFBQUFBNEFBQTRBUVovekVRc0JFQUJCcS9NUkN4NFBBQUFBQUE4QUFBQUFDUkFBQUFBQUFCQUFBQkFBQUJJQUFBQVNFaElBUWVMekVRc09FZ0FBQUJJU0VnQUFBQUFBQUFrQVFaUDBFUXNCQ3dCQm4vUVJDeFVLQUFBQUFBb0FBQUFBQ1FzQUFBQUFBQXNBQUFzQVFjMzBFUXNCREFCQjJmUVJDMUlNQUFBQUFBd0FBQUFBQ1F3QUFBQUFBQXdBQUF3QUFEQXhNak0wTlRZM09EbEJRa05FUlVZdE1GZ3JNRmdnTUZndE1IZ3JNSGdnTUhnQWFXNW1BRWxPUmdCdVlXNEFUa0ZPQUM0QUFBQUFnTGdFQUVIVTlSRUxBa2NDQUVINzlSRUxCZi8vLy8vL0FFSEE5aEVMNXhmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BQUVDQXdRRkJnY0lDZi8vLy8vLy8vOEtDd3dORGc4UUVSSVRGQlVXRnhnWkdoc2NIUjRmSUNFaUkvLy8vLy8vL3dvTERBME9EeEFSRWhNVUZSWVhHQmthR3h3ZEhoOGdJU0lqLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0FCQWdRSEF3WUZBQUFBQUFBQUFBTUFBQUFFQUFBQUJBQUFBQVlBQUFDRCthSUFSRTV1QVB3cEZRRFJWeWNBM1RUMUFHTGJ3QUE4bVpVQVFaQkRBR05SL2dDNzNxc0F0MkhGQURwdUpBRFNUVUlBU1FiZ0FBbnFMZ0Fja3RFQTZ4MytBQ214SEFEb1BxY0E5VFdDQUVTN0xnQ2M2WVFBdENad0FFRitYd0RXa1RrQVU0TTVBSnowT1FDTFg0UUFLUG05QVBnZk93RGUvNWNBRDVnRkFCRXY3d0FLV29zQWJSOXRBTTkrTmdBSnl5Y0FSayszQUo1bVB3QXQ2bDhBdWlkMUFPWHJ4d0E5ZS9FQTl6a0hBSkpTaWdEN2Erb0FIN0ZmQUFoZGpRQXdBMVlBZS94R0FQQ3Jhd0Fndk04QU52U2FBT09wSFFCZVlaRUFDQnZtQUlXWlpRQ2dGRjhBalVCb0FJRFkvd0FuYzAwQUJnWXhBTXBXRlFESnFITUFlK0pnQUd1TXdBQVp4RWNBeldmREFBbm8zQUJaZ3lvQWkzYkVBS1ljbGdCRXI5MEFHVmZSQUtVK0JRQUZCLzhBTTM0L0FNSXk2QUNZVDk0QXUzMHlBQ1k5d3dBZWErOEFuL2hlQURVZk9nQi84c29BOFljZEFIeVFJUUJxSkh3QTFXNzZBREF0ZHdBVk8wTUF0UlRHQU1NWm5RQ3R4TUlBTEUxQkFBd0FYUUNHZlVZQTQzRXRBSnZHbWdBellnQUF0Tko4QUxTbmx3QTNWZFVBMXo3MkFLTVFHQUJOZHZ3QVpKMHFBSERYcXdCamZQZ0FlckJYQUJjVjV3REFTVllBTzliWkFLZUVPQUFrSThzQTFvcDNBRnBVSXdBQUg3a0E4UW9iQUJuTzN3Q2ZNZjhBWmg1cUFKbFhZUUNzKzBjQWZuL1lBQ0psdHdBeTZJa0E1cjlnQU8vRXpRQnNOZ2tBWFQvVUFCYmUxd0JZTzk0QTNwdVNBTklpS0FBb2h1Z0E0bGhOQU1iS01nQUk0eFlBNEgzTEFCZkFVQUR6SGFjQUdPQmJBQzRUTkFDREVtSUFnMGdCQVBXT1d3Q3RzSDhBSHVueUFFaEtRd0FRWjlNQXF0M1lBSzVmUWdCcVljNEFDaWlrQU5PWnRBQUdwdklBWEhkL0FLUENnd0JoUElnQWluTjRBSytNV2dCdjE3MEFMYVpqQVBTL3l3Q05nZThBSnNGbkFGWEtSUURLMlRZQUtLalNBTUpoalFBU3lYY0FCQ1lVQUJKR213REVXY1FBeU1WRUFFMnlrUUFBRi9NQTFFT3RBQ2xKNVFEOTFSQUFBTDc4QUI2VXpBQnd6dTRBRXo3MUFPenhnQUN6NThNQXgvZ29BSk1GbEFEQmNUNEFMZ216QUF0Rjh3Q0lFcHdBcXlCN0FDNjFud0JIa3NJQWV6SXZBQXhWYlFCeXA1QUFhK2NmQURITGxnQjVGa29BUVhuaUFQVGZpUURvbEpjQTR1YUVBSmt4bHdDSTdXc0FYMTgyQUx2OURnQkltclFBWjZSc0FIRnlRZ0NOWFRJQW54VzRBTHpsQ1FDTk1TVUE5M1E1QURBRkhBQU5EQUVBU3dob0FDenVXQUJIcXBBQWRPY0NBTDNXSkFEM2ZhWUFia2h5QUo4Vzd3Q09sS1lBdEpIMkFORlRVUURQQ3ZJQUlKZ3pBUFZMZmdDeVkyZ0EzVDVmQUVCZEF3Q0ZpWDhBVlZJcEFEZGt3QUJ0MkJBQU1rZ3lBRnRNZFFCT2NkUUFSVlJ1QUFzSndRQXE5V2tBRkdiVkFDY0huUUJkQkZBQXREdmJBT3AyeFFDSCtSY0FTV3Q5QUIwbnVnQ1dhU2tBeHN5c0FLMFVWQUNRNG1vQWlObUpBQ3h5VUFBRXBMNEFkd2VVQVBNd2NBQUEvQ2NBNm5Hb0FHYkNTUUJrNEQwQWw5MkRBS00vbHdCRGxQMEFEWWFNQURGQjNnQ1NPWjBBM1hDTUFCZTM1d0FJM3pzQUZUY3JBRnlBb0FCYWdKTUFFQkdTQUEvbzJBQnNnSzhBMi85TEFEaVFEd0JaR0hZQVlxVVZBR0hMdXdESGlia0FFRUM5QU5MeUJBQkpkU2NBNjdiMkFOc2l1d0FLRktvQWlTWXZBR1NEZGdBSk96TUFEcFFhQUZFNnFnQWRvOElBcisydUFGd21FZ0J0d2swQUxYcWNBTUJXbHdBRFA0TUFDZkQyQUN0QWpBQnRNWmtBT2JRSEFBd2dGUURZdzFzQTlaTEVBTWF0U3dCT3lxVUFwemZOQU9hcE5nQ3JrcFFBM1VKb0FCbGozZ0Iyak84QWFJdFNBUHpiTndDdW9hc0EzeFV4QUFDdW9RQU0rOW9BWkUxbUFPMEZ0d0FwWlRBQVYxYS9BRWYvT2dCcStia0FkYjd6QUNpVDN3Q3JnREFBWm96MkFBVExGUUQ2SWdZQTJlUWRBRDJ6cEFCWEc0OEFOczBKQUU1QzZRQVR2cVFBTXlPMUFQQ3FHZ0JQWmFnQTBzR2xBQXMvRHdCYmVNMEFJL2wyQUh1TEJBQ0pGM0lBeHFaVEFHOXU0Z0R2NndBQW0wcFlBTVRhdHdDcVpyb0Fkcy9QQU5FQ0hRQ3g4UzBBakpuQkFNT3Rkd0NHU05vQTkxMmdBTWFBOUFDczhDOEEzZXlhQUQ5Y3ZBRFEzbTBBa01jZkFDcmJ0Z0NqSlRvQUFLK2FBSzFUa3dDMlZ3UUFLUzIwQUV1QWZnRGFCNmNBZHFvT0FIdFpvUUFXRWlvQTNMY3RBUHJsL1FDSjIvNEFpYjc5QU9SMmJBQUdxZndBUG9Cd0FJVnVGUUQ5aC84QUtENEhBR0ZuTXdBcUdJWUFUYjNxQUxQbnJ3Q1BiVzRBbFdjNUFERy9Xd0NFMTBnQU1OOFdBTWN0UXdBbFlUVUF5WERPQURETHVBQy9iUDBBcEFDaUFBVnM1QUJhM2FBQUlXOUhBR0lTMGdDNVhJUUFjR0ZKQUd0VzRBQ1pVZ0VBVUZVM0FCN1Z0d0F6OGNRQUUyNWZBRjB3NUFDRkxxa0FIYkxEQUtFeU5nQUl0NlFBNnJIVUFCYjNJUUNQYWVRQUovOTNBQXdEZ0FDTlFDMEFUODJnQUNDbG1RQ3pvdE1BTDEwS0FMVDVRZ0FSMnNzQWZiN1FBSnZid1FDckY3MEF5cUtCQUFocVhBQXVWUmNBSndCVkFIOFU4QURoQjRZQUZBdGtBSlpCalFDSHZ0NEEydjBxQUdzbHRnQjdpVFFBQmZQK0FMbS9uZ0JvYWs4QVNpcW9BRS9FV2dBdCtMd0ExMXFZQVBUSGxRQU5UWTBBSURxbUFLUlhYd0FVUDdFQWdEaVZBTXdnQVFCeDNZWUF5ZDYyQUw5ZzlRQk5aUkVBQVFkckFJeXdyQUN5d05BQVVWVklBQjc3RGdDVmNzTUFvd1k3QU1CQU5RQUczSHNBNEVYTUFFNHArZ0RXeXNnQTZQTkJBSHhrM2dDYlpOZ0EyYjR4QUtTWHd3QjNXTlFBYWVQRkFQRGFFd0M2T2p3QVJoaEdBRlYxWHdEU3ZmVUFicExHQUt3dVhRQU9STzBBSEQ1Q0FHSEVod0FwL2VrQTU5YnpBQ0o4eWdCdmtUVUFDT0RGQVAvWGpRQnVhdUlBc1AzR0FKTUl3UUI4WFhRQWE2MnlBTTF1blFBK2Nuc0F4aEZxQVBmUHFRQXBjOThBdGNtNkFMY0FVUURpc2cwQWRMb2tBT1Y5WUFCMDJJb0FEUlVzQUlFWURBQitacFFBQVNrV0FKOTZkZ0Q5L2I0QVZrWHZBTmwrTmdEczJSTUFpN3E1QU1TWC9BQXhxQ2NBOFc3REFKVEZOZ0RZcUZZQXRLaTFBTS9NRGdBU2lTMEFiMWMwQUN4V2lRQ1p6dU1BMWlDNUFHdGVxZ0ErS3B3QUVWL01BUDBMU2dEaDlQc0FqanR0QU9LR0xBRHAxSVFBL0xTcEFPL3UwUUF1TmNrQUx6bGhBRGdoUkFBYjJjZ0FnZndLQVB0S2FnQXZITmdBVTdTRUFFNlpqQUJVSXN3QUtsWGNBTURHMWdBTEdaWUFHbkM0QUdtVlpBQW1XbUFBUDFMdUFIOFJEd0QwdFJFQS9NdjFBRFM4TFFBMHZPNEE2RjNNQU4xZVlBQm5qcHNBa2pQdkFNa1h1QUJoV0pzQTRWZThBRkdEeGdEWVBoQUEzWEZJQUMwYzNRQ3ZHS0VBSVN4R0FGbnoxd0RaZXBnQW5sVEFBRStHK2dCV0J2d0E1WG11QUlraU5nQTRyU0lBWjVQY0FGWG9xZ0NDSmpnQXl1ZWJBRkVOcEFDWk03RUFxZGNPQUdrRlNBQmxzdkFBZjRpbkFJaE1sd0Q1MFRZQUlaS3pBSHVDU2dDWXp5RUFRSi9jQU54SFZRRGhkRG9BWit0Q0FQNmQzd0JlMUY4QWUyZWtBTHFzZWdCVjlxSUFLNGdqQUVHNlZRQlpiZ2dBSVNxR0FEbEhnd0NKNCtZQTVaN1VBRW43UUFEL1Z1a0FIQS9LQU1WWmlnQ1UraXNBMDhIRkFBL0Z6d0RiV3E0QVI4V0dBSVZEWWdBaGhqc0FMSG1VQUJCaGh3QXFUSHNBZ0N3YUFFTy9FZ0NJSnBBQWVEeUpBS2pFNUFEbDIzc0F4RHJDQUNiMDZnRDNaNG9BRFpLL0FHV2pLd0E5azdFQXZYd0xBS1JSM0FBbjNXTUFhZUhkQUpxVUdRQ29LWlVBYU00b0FBbnR0QUJFbnlBQVRwaktBSENDWXdCK2ZDTUFEN2t5QUtmMWpnQVVWdWNBSWZFSUFMV2RLZ0J2ZmswQXBSbFJBTFg1cXdDQzM5WUFsdDFoQUJZMkFnREVPcDhBZzZLaEFITHRiUUE1alhvQWdyaXBBR3N5WEFCR0oxc0FBRFR0QU5JQWR3RDg5RlVBQVZsTkFPQnhnQUJCczQ0U0M1MEJRUHNoK1Q4QUFBQUFMVVIwUGdBQUFJQ1lSdmc4QUFBQVlGSE1lRHNBQUFDQWd4dndPUUFBQUVBZ0pYbzRBQUFBZ0NLQzR6WUFBQUFBSGZOcE5VKzdZUVZuck4wL0dDMUVWUHNoNlQrYjlvSFNDM1B2UHhndFJGVDdJZmsvNG1VdkluOHJlandIWEJRekpxYUJQTDNMOEhxSUIzQThCMXdVTXlhbWtUd1lMVVJVK3lIcFB4Z3RSRlQ3SWVtLzBpRXpmM3paQWtEU0lUTi9mTmtDd0FCQjM0OFNDekdBR0MxRVZQc2hDVUFZTFVSVSt5RUp3QUFBQUFBQUFPQS9BQUFBQUFBQTRMOEFBQUFBQUFEd1B3QUFBQUFBQVBnL0FFR1lrQklMQ0FiUXowUHIvVXcrQUVHcmtCSUx2UWhBQTdqaVB3QUFBQUFDQUFBQUF3QUFBQVVBQUFBSEFBQUFDd0FBQUEwQUFBQVJBQUFBRXdBQUFCY0FBQUFkQUFBQUh3QUFBQ1VBQUFBcEFBQUFLd0FBQUM4QUFBQTFBQUFBT3dBQUFEMEFBQUJEQUFBQVJ3QUFBRWtBQUFCUEFBQUFVd0FBQUZrQUFBQmhBQUFBWlFBQUFHY0FBQUJyQUFBQWJRQUFBSEVBQUFCL0FBQUFnd0FBQUlrQUFBQ0xBQUFBbFFBQUFKY0FBQUNkQUFBQW93QUFBS2NBQUFDdEFBQUFzd0FBQUxVQUFBQy9BQUFBd1FBQUFNVUFBQURIQUFBQTB3QUFBQUVBQUFBTEFBQUFEUUFBQUJFQUFBQVRBQUFBRndBQUFCMEFBQUFmQUFBQUpRQUFBQ2tBQUFBckFBQUFMd0FBQURVQUFBQTdBQUFBUFFBQUFFTUFBQUJIQUFBQVNRQUFBRThBQUFCVEFBQUFXUUFBQUdFQUFBQmxBQUFBWndBQUFHc0FBQUJ0QUFBQWNRQUFBSGtBQUFCL0FBQUFnd0FBQUlrQUFBQ0xBQUFBandBQUFKVUFBQUNYQUFBQW5RQUFBS01BQUFDbkFBQUFxUUFBQUswQUFBQ3pBQUFBdFFBQUFMc0FBQUMvQUFBQXdRQUFBTVVBQUFESEFBQUEwUUFBQUFBQUFBRDRpZ1FBU0FJQUFFa0NBQUQ3QVFBQS9BRUFBRW9DQUFCTEFnQUEvd0VBQUFBQ0FBQUJBZ0FBVEFJQUFBTUNBQUJOQWdBQUJRSUFBRTRDQUFBSUFBQUFBQUFBQURDTEJBRDFBUUFBOWdFQUFQai8vLy80Ly8vL01Jc0VBUGNCQUFENEFRQUEvSWtFQUJDS0JBQUVBQUFBQUFBQUFIaUxCQURuQVFBQTZBRUFBUHovLy8vOC8vLy9lSXNFQU9rQkFBRHFBUUFBTElvRUFFQ0tCQUFBQUFBQWRJb0VBRThDQUFCUUFnQUFUbE4wTTE5Zk1qaHBiM05mWW1GelpVVUFBQUFBdGdRQVlJb0VBQUFBQUFDNGlnUUFVUUlBQUZJQ0FBQk9VM1F6WDE4eU9XSmhjMmxqWDJsdmMwbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQUFDaTJCQUNNaWdRQWRJb0VBRTVUZEROZlh6SXhOV0poYzJsalgzTjBjbVZoYldKMVprbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQUFBQUF0Z1FBeElvRUFFNVRkRE5mWHpJeE0ySmhjMmxqWDJsemRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBSVMyQkFBQWl3UUFBQUFBQUFFQUFBQzRpZ1FBQS9ULy8wNVRkRE5mWHpJeE0ySmhjMmxqWDI5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBSVMyQkFCSWl3UUFBQUFBQUFFQUFBQzRpZ1FBQS9ULy93SUFBTUFEQUFEQUJBQUF3QVVBQU1BR0FBREFCd0FBd0FnQUFNQUpBQURBQ2dBQXdBc0FBTUFNQUFEQURRQUF3QTRBQU1BUEFBREFFQUFBd0JFQUFNQVNBQURBRXdBQXdCUUFBTUFWQUFEQUZnQUF3QmNBQU1BWUFBREFHUUFBd0JvQUFNQWJBQURBSEFBQXdCMEFBTUFlQUFEQUh3QUF3QUFBQUxNQkFBRERBZ0FBd3dNQUFNTUVBQUREQlFBQXd3WUFBTU1IQUFERENBQUF3d2tBQU1NS0FBRERDd0FBd3d3QUFNTU5BQURURGdBQXd3OEFBTU1BQUF5N0FRQU13d0lBRE1NREFBekRCQUFNMDJsdVptbHVhWFI1QUc1aGJnQkI4SmdTQzBqUmRKNEFWNTI5S29Cd1VnLy8vejRuQ2dBQUFHUUFBQURvQXdBQUVDY0FBS0NHQVFCQVFnOEFnSmFZQUFEaDlRVVlBQUFBTlFBQUFIRUFBQUJyLy8vL3p2di8vNUsvLy84QVFjQ1pFZ3NqM2hJRWxRQUFBQUQvLy8vLy8vLy8vLy8vLy8vQWpBUUFGQUFBQUVNdVZWUkdMVGdBUVlpYUVnc0QxSXdFQUVHZ21oSUxCa3hEWDBGTVRBQkJzSm9TQzI5TVExOURWRmxRUlFBQUFBQk1RMTlPVlUxRlVrbERBQUJNUTE5VVNVMUZBQUFBQUFCTVExOURUMHhNUVZSRkFBQk1RMTlOVDA1RlZFRlNXUUJNUTE5TlJWTlRRVWRGVXdCTVFVNUhBRU11VlZSR0xUZ0FVRTlUU1ZnQVRWVlRURjlNVDBOUVFWUklBQUFBQUFDZ2pnUUFRYUNkRWd2L0FRSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBTWdBaUFDSUFJZ0FpQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJZQVRBQk1BRXdBVEFCTUFFd0FUQUJNQUV3QVRBQk1BRXdBVEFCTUFFd0FqWUNOZ0kyQWpZQ05nSTJBallDTmdJMkFqWUJNQUV3QVRBQk1BRXdBVEFCTUFJMVFqVkNOVUkxUWpWQ05VSXhRakZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZCTUFFd0FUQUJNQUV3QVRBQ05ZSTFnaldDTllJMWdqV0NNWUl4Z2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z1RBQk1BRXdBVEFBZ0JCb0tFU0N3T3drZ1FBUWJTbEVndjVBd0VBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQUFBQk1BQUFBVUFBQUFGUUFBQUJZQUFBQVhBQUFBR0FBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0FBQUI4QUFBQWdBQUFBSVFBQUFDSUFBQUFqQUFBQUpBQUFBQ1VBQUFBbUFBQUFKd0FBQUNnQUFBQXBBQUFBS2dBQUFDc0FBQUFzQUFBQUxRQUFBQzRBQUFBdkFBQUFNQUFBQURFQUFBQXlBQUFBTXdBQUFEUUFBQUExQUFBQU5nQUFBRGNBQUFBNEFBQUFPUUFBQURvQUFBQTdBQUFBUEFBQUFEMEFBQUErQUFBQVB3QUFBRUFBQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIQUFBQVNBQUFBRWtBQUFCS0FBQUFTd0FBQUV3QUFBQk5BQUFBVGdBQUFFOEFBQUJRQUFBQVVRQUFBRklBQUFCVEFBQUFWQUFBQUZVQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnQUFBRnNBQUFCY0FBQUFYUUFBQUY0QUFBQmZBQUFBWUFBQUFFRUFBQUJDQUFBQVF3QUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQklBQUFBU1FBQUFFb0FBQUJMQUFBQVRBQUFBRTBBQUFCT0FBQUFUd0FBQUZBQUFBQlJBQUFBVWdBQUFGTUFBQUJVQUFBQVZRQUFBRllBQUFCWEFBQUFXQUFBQUZrQUFBQmFBQUFBZXdBQUFId0FBQUI5QUFBQWZnQUFBSDhBUWJDdEVnc0R3SmdFQUVIRXNSSUwrUU1CQUFBQUFnQUFBQU1BQUFBRUFBQUFCUUFBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBQUFBRVFBQUFCSUFBQUFUQUFBQUZBQUFBQlVBQUFBV0FBQUFGd0FBQUJnQUFBQVpBQUFBR2dBQUFCc0FBQUFjQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFEWUFBQUEzQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVlRQUFBR0lBQUFCakFBQUFaQUFBQUdVQUFBQm1BQUFBWndBQUFHZ0FBQUJwQUFBQWFnQUFBR3NBQUFCc0FBQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFBQWN3QUFBSFFBQUFCMUFBQUFkZ0FBQUhjQUFBQjRBQUFBZVFBQUFIb0FBQUJiQUFBQVhBQUFBRjBBQUFCZUFBQUFYd0FBQUdBQUFBQmhBQUFBWWdBQUFHTUFBQUJrQUFBQVpRQUFBR1lBQUFCbkFBQUFhQUFBQUdrQUFBQnFBQUFBYXdBQUFHd0FBQUJ0QUFBQWJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFBQUFlZ0FBQUhzQUFBQjhBQUFBZlFBQUFINEFBQUIvQUVIQXVSSUxTREF4TWpNME5UWTNPRGxoWW1Oa1pXWkJRa05FUlVaNFdDc3RjRkJwU1c1T0FDVndBR3dBYkd3QUFFd0FKUUFBQUFBQUpYQUFBQUFBSlVrNkpVMDZKVk1nSlhBbFNEb2xUUUJCa0xvU0M0RUJKUUFBQUcwQUFBQXZBQUFBSlFBQUFHUUFBQUF2QUFBQUpRQUFBSGtBQUFBbEFBQUFXUUFBQUMwQUFBQWxBQUFBYlFBQUFDMEFBQUFsQUFBQVpBQUFBQ1VBQUFCSkFBQUFPZ0FBQUNVQUFBQk5BQUFBT2dBQUFDVUFBQUJUQUFBQUlBQUFBQ1VBQUFCd0FBQUFBQUFBQUNVQUFBQklBQUFBT2dBQUFDVUFBQUJOQUVHZ3V4SUx2UVFsQUFBQVNBQUFBRG9BQUFBbEFBQUFUUUFBQURvQUFBQWxBQUFBVXdBQUFDVk1aZ0F3TVRJek5EVTJOemc1QUNVdU1FeG1BRU1BQUFBQUFBQklvd1FBWmdJQUFHY0NBQUJvQWdBQUFBQUFBS2lqQkFCcEFnQUFhZ0lBQUdnQ0FBQnJBZ0FBYkFJQUFHMENBQUJ1QWdBQWJ3SUFBSEFDQUFCeEFnQUFjZ0lBQUFBQUFBQVFvd1FBY3dJQUFIUUNBQUJvQWdBQWRRSUFBSFlDQUFCM0FnQUFlQUlBQUhrQ0FBQjZBZ0FBZXdJQUFBQUFBQURnb3dRQWZBSUFBSDBDQUFCb0FnQUFmZ0lBQUg4Q0FBQ0FBZ0FBZ1FJQUFJSUNBQUFBQUFBQUJLUUVBSU1DQUFDRUFnQUFhQUlBQUlVQ0FBQ0dBZ0FBaHdJQUFJZ0NBQUNKQWdBQWRISjFaUUFBQUFCMEFBQUFjZ0FBQUhVQUFBQmxBQUFBQUFBQUFHWmhiSE5sQUFBQVpnQUFBR0VBQUFCc0FBQUFjd0FBQUdVQUFBQUFBQUFBSlcwdkpXUXZKWGtBQUFBQUpRQUFBRzBBQUFBdkFBQUFKUUFBQUdRQUFBQXZBQUFBSlFBQUFIa0FBQUFBQUFBQUpVZzZKVTA2SlZNQUFBQUFKUUFBQUVnQUFBQTZBQUFBSlFBQUFFMEFBQUE2QUFBQUpRQUFBRk1BQUFBQUFBQUFKV0VnSldJZ0pXUWdKVWc2SlUwNkpWTWdKVmtBQUFBQUpRQUFBR0VBQUFBZ0FBQUFKUUFBQUdJQUFBQWdBQUFBSlFBQUFHUUFBQUFnQUFBQUpRQUFBRWdBQUFBNkFBQUFKUUFBQUUwQUFBQTZBQUFBSlFBQUFGTUFBQUFnQUFBQUpRQUFBRmtBQUFBQUFBQUFKVWs2SlUwNkpWTWdKWEFBSlFBQUFFa0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQWdBQUFBSlFBQUFIQUFRZWkvRWd2WENoQ2dCQUNLQWdBQWl3SUFBR2dDQUFCT1UzUXpYMTh5Tm14dlkyRnNaVFZtWVdObGRFVUFBQUFvdGdRQStKOEVBRHkxQkFBQUFBQUFrS0FFQUlvQ0FBQ01BZ0FBYUFJQUFJMENBQUNPQWdBQWp3SUFBSkFDQUFDUkFnQUFrZ0lBQUpNQ0FBQ1VBZ0FBbFFJQUFKWUNBQUNYQWdBQW1BSUFBRTVUZEROZlh6STFZM1I1Y0dWSmQwVkZBRTVUZEROZlh6SXhNR04wZVhCbFgySmhjMlZGQUFBQXRnUUFjcUFFQUlTMkJBQmdvQVFBQUFBQUFBSUFBQUFRb0FRQUFnQUFBSWlnQkFBQ0FBQUFBQUFBQUNTaEJBQ0tBZ0FBbVFJQUFHZ0NBQUNhQWdBQW13SUFBSndDQUFDZEFnQUFuZ0lBQUo4Q0FBQ2dBZ0FBVGxOME0xOWZNamRqYjJSbFkzWjBTV05qTVRGZlgyMWljM1JoZEdWZmRFVkZBRTVUZEROZlh6SXhNbU52WkdWamRuUmZZbUZ6WlVVQUFBQUFBTFlFQUFLaEJBQ0V0Z1FBNEtBRUFBQUFBQUFDQUFBQUVLQUVBQUlBQUFBY29RUUFBZ0FBQUFBQUFBQ1lvUVFBaWdJQUFLRUNBQUJvQWdBQW9nSUFBS01DQUFDa0FnQUFwUUlBQUtZQ0FBQ25BZ0FBcUFJQUFFNVRkRE5mWHpJM1kyOWtaV04yZEVsRWMyTXhNVjlmYldKemRHRjBaVjkwUlVVQUFJUzJCQUIwb1FRQUFBQUFBQUlBQUFBUW9BUUFBZ0FBQUJ5aEJBQUNBQUFBQUFBQUFBeWlCQUNLQWdBQXFRSUFBR2dDQUFDcUFnQUFxd0lBQUt3Q0FBQ3RBZ0FBcmdJQUFLOENBQUN3QWdBQVRsTjBNMTlmTWpkamIyUmxZM1owU1VScFl6RXhYMTl0WW5OMFlYUmxYM1JGUlFBQWhMWUVBT2loQkFBQUFBQUFBZ0FBQUJDZ0JBQUNBQUFBSEtFRUFBSUFBQUFBQUFBQWdLSUVBSW9DQUFDeEFnQUFhQUlBQUtvQ0FBQ3JBZ0FBckFJQUFLMENBQUN1QWdBQXJ3SUFBTEFDQUFCT1UzUXpYMTh5TVRaZlgyNWhjbkp2ZDE5MGIxOTFkR1k0U1V4dE16SkZSVVVBQUFBb3RnUUFYS0lFQUF5aUJBQUFBQUFBNEtJRUFJb0NBQUN5QWdBQWFBSUFBS29DQUFDckFnQUFyQUlBQUswQ0FBQ3VBZ0FBcndJQUFMQUNBQUJPVTNRelgxOHlNVGRmWDNkcFpHVnVYMlp5YjIxZmRYUm1PRWxNYlRNeVJVVkZBQUFvdGdRQXZLSUVBQXlpQkFCT1UzUXpYMTh5TjJOdlpHVmpkblJKZDJNeE1WOWZiV0p6ZEdGMFpWOTBSVVVBQUFDRXRnUUE3S0lFQUFBQUFBQUNBQUFBRUtBRUFBSUFBQUFjb1FRQUFnQUFBRTVUZEROZlh6STJiRzlqWVd4bE5WOWZhVzF3UlFBQUFDaTJCQUF3b3dRQUVLQUVBRTVUZEROZlh6STNZMjlzYkdGMFpVbGpSVVVBS0xZRUFGU2pCQUFRb0FRQVRsTjBNMTlmTWpkamIyeHNZWFJsU1hkRlJRQW90Z1FBZEtNRUFCQ2dCQUJPVTNRelgxOHlOV04wZVhCbFNXTkZSUUFBQUlTMkJBQ1Vvd1FBQUFBQUFBSUFBQUFRb0FRQUFnQUFBSWlnQkFBQ0FBQUFUbE4wTTE5Zk1qaHVkVzF3ZFc1amRFbGpSVVVBQUFBQUtMWUVBTWlqQkFBUW9BUUFUbE4wTTE5Zk1qaHVkVzF3ZFc1amRFbDNSVVVBQUFBQUtMWUVBT3lqQkFBUW9BUUFBQUFBQUdpakJBQ3pBZ0FBdEFJQUFHZ0NBQUMxQWdBQXRnSUFBTGNDQUFBQUFBQUFpS01FQUxnQ0FBQzVBZ0FBYUFJQUFMb0NBQUM3QWdBQXZBSUFBQUFBQUFBa3BRUUFpZ0lBQUwwQ0FBQm9BZ0FBdmdJQUFMOENBQURBQWdBQXdRSUFBTUlDQUFEREFnQUF4QUlBQU1VQ0FBREdBZ0FBeHdJQUFNZ0NBQUJPVTNRelgxOHlOMjUxYlY5blpYUkpZMDVUWHpFNWFYTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlVWRkFFNVRkRE5mWHpJNVgxOXVkVzFmWjJWMFNXTkZSUUJPVTNRelgxOHlNVFJmWDI1MWJWOW5aWFJmWW1GelpVVUFBQUMyQkFEcXBBUUFoTFlFQU5Ta0JBQUFBQUFBQVFBQUFBU2xCQUFBQUFBQWhMWUVBSkNrQkFBQUFBQUFBZ0FBQUJDZ0JBQUNBQUFBREtVRUFFSEl5aElMeXdINHBRUUFpZ0lBQU1rQ0FBQm9BZ0FBeWdJQUFNc0NBQURNQWdBQXpRSUFBTTRDQUFEUEFnQUEwQUlBQU5FQ0FBRFNBZ0FBMHdJQUFOUUNBQUJPVTNRelgxOHlOMjUxYlY5blpYUkpkMDVUWHpFNWFYTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJNVgxOXVkVzFmWjJWMFNYZEZSUUFBQUlTMkJBRElwUVFBQUFBQUFBRUFBQUFFcFFRQUFBQUFBSVMyQkFDRXBRUUFBQUFBQUFJQUFBQVFvQVFBQWdBQUFPQ2xCQUJCbk13U0M5OEI0S1lFQUlvQ0FBRFZBZ0FBYUFJQUFOWUNBQURYQWdBQTJBSUFBTmtDQUFEYUFnQUEyd0lBQU53Q0FBRGRBZ0FBVGxOME0xOWZNamR1ZFcxZmNIVjBTV05PVTE4eE9XOXpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpZMDVUWHpFeFkyaGhjbDkwY21GcGRITkpZMFZGUlVWRlJRQk9VM1F6WDE4eU9WOWZiblZ0WDNCMWRFbGpSVVVBVGxOME0xOWZNakUwWDE5dWRXMWZjSFYwWDJKaGMyVkZBQUFBdGdRQXBxWUVBSVMyQkFDUXBnUUFBQUFBQUFFQUFBREFwZ1FBQUFBQUFJUzJCQUJNcGdRQUFBQUFBQUlBQUFBUW9BUUFBZ0FBQU1pbUJBQkJoTTRTQzc4QnFLY0VBSW9DQUFEZUFnQUFhQUlBQU44Q0FBRGdBZ0FBNFFJQUFPSUNBQURqQWdBQTVBSUFBT1VDQUFEbUFnQUFUbE4wTTE5Zk1qZHVkVzFmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYM0IxZEVsM1JVVUFBQUNFdGdRQWVLY0VBQUFBQUFBQkFBQUF3S1lFQUFBQUFBQ0V0Z1FBTktjRUFBQUFBQUFDQUFBQUVLQUVBQUlBQUFDUXB3UUFRY3pQRWd1YkM2aW9CQURuQWdBQTZBSUFBR2dDQUFEcEFnQUE2Z0lBQU9zQ0FBRHNBZ0FBN1FJQUFPNENBQUR2QWdBQStQLy8vNmlvQkFEd0FnQUE4UUlBQVBJQ0FBRHpBZ0FBOUFJQUFQVUNBQUQyQWdBQVRsTjBNMTlmTWpoMGFXMWxYMmRsZEVsalRsTmZNVGxwYzNSeVpXRnRZblZtWDJsMFpYSmhkRzl5U1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZSVVVBVGxOME0xOWZNamwwYVcxbFgySmhjMlZGQUFDMkJBQmhxQVFBVGxOME0xOWZNakl3WDE5MGFXMWxYMmRsZEY5algzTjBiM0poWjJWSlkwVkZBQUFBQUxZRUFIeW9CQUNFdGdRQUhLZ0VBQUFBQUFBREFBQUFFS0FFQUFJQUFBQjBxQVFBQWdBQUFLQ29CQUFBQ0FBQUFBQUFBSlNwQkFEM0FnQUErQUlBQUdnQ0FBRDVBZ0FBK2dJQUFQc0NBQUQ4QWdBQS9RSUFBUDRDQUFEL0FnQUErUC8vLzVTcEJBQUFBd0FBQVFNQUFBSURBQUFEQXdBQUJBTUFBQVVEQUFBR0F3QUFUbE4wTTE5Zk1qaDBhVzFsWDJkbGRFbDNUbE5mTVRscGMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNYZE9VMTh4TVdOb1lYSmZkSEpoYVhSelNYZEZSVVZGUlVVQVRsTjBNMTlmTWpJd1gxOTBhVzFsWDJkbGRGOWpYM04wYjNKaFoyVkpkMFZGQUFBQXRnUUFhYWtFQUlTMkJBQWtxUVFBQUFBQUFBTUFBQUFRb0FRQUFnQUFBSFNvQkFBQ0FBQUFqS2tFQUFBSUFBQUFBQUFBT0tvRUFBY0RBQUFJQXdBQWFBSUFBQWtEQUFCT1UzUXpYMTh5T0hScGJXVmZjSFYwU1dOT1UxOHhPVzl6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVEJmWDNScGJXVmZjSFYwUlFBQUFBQzJCQUFacWdRQWhMWUVBTlNwQkFBQUFBQUFBZ0FBQUJDZ0JBQUNBQUFBTUtvRUFBQUlBQUFBQUFBQXVLb0VBQW9EQUFBTEF3QUFhQUlBQUF3REFBQk9VM1F6WDE4eU9IUnBiV1ZmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFBQUFBQ0V0Z1FBY0tvRUFBQUFBQUFDQUFBQUVLQUVBQUlBQUFBd3FnUUFBQWdBQUFBQUFBQk1xd1FBaWdJQUFBMERBQUJvQWdBQURnTUFBQThEQUFBUUF3QUFFUU1BQUJJREFBQVRBd0FBRkFNQUFCVURBQUFXQXdBQVRsTjBNMTlmTWpFd2JXOXVaWGx3ZFc1amRFbGpUR0l3UlVWRkFFNVRkRE5mWHpJeE1HMXZibVY1WDJKaGMyVkZBQUFBQUFDMkJBQXNxd1FBaExZRUFCQ3JCQUFBQUFBQUFnQUFBQkNnQkFBQ0FBQUFSS3NFQUFJQUFBQUFBQUFBd0tzRUFJb0NBQUFYQXdBQWFBSUFBQmdEQUFBWkF3QUFHZ01BQUJzREFBQWNBd0FBSFFNQUFCNERBQUFmQXdBQUlBTUFBRTVUZEROZlh6SXhNRzF2Ym1WNWNIVnVZM1JKWTB4aU1VVkZSUUNFdGdRQXBLc0VBQUFBQUFBQ0FBQUFFS0FFQUFJQUFBQkVxd1FBQWdBQUFBQUFBQUEwckFRQWlnSUFBQ0VEQUFCb0FnQUFJZ01BQUNNREFBQWtBd0FBSlFNQUFDWURBQUFuQXdBQUtBTUFBQ2tEQUFBcUF3QUFUbE4wTTE5Zk1qRXdiVzl1Wlhsd2RXNWpkRWwzVEdJd1JVVkZBSVMyQkFBWXJBUUFBQUFBQUFJQUFBQVFvQVFBQWdBQUFFU3JCQUFDQUFBQUFBQUFBS2lzQkFDS0FnQUFLd01BQUdnQ0FBQXNBd0FBTFFNQUFDNERBQUF2QXdBQU1BTUFBREVEQUFBeUF3QUFNd01BQURRREFBQk9VM1F6WDE4eU1UQnRiMjVsZVhCMWJtTjBTWGRNWWpGRlJVVUFoTFlFQUl5c0JBQUFBQUFBQWdBQUFCQ2dCQUFDQUFBQVJLc0VBQUlBQUFBQUFBQUFUSzBFQUlvQ0FBQTFBd0FBYUFJQUFEWURBQUEzQXdBQVRsTjBNMTlmTWpsdGIyNWxlVjluWlhSSlkwNVRYekU1YVhOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmWjJWMFNXTkZSUUFBQUxZRUFDcXRCQUNFdGdRQTVLd0VBQUFBQUFBQ0FBQUFFS0FFQUFJQUFBQkVyUVFBUWZEYUVndWJBZkN0QkFDS0FnQUFPQU1BQUdnQ0FBQTVBd0FBT2dNQUFFNVRkRE5mWHpJNWJXOXVaWGxmWjJWMFNYZE9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5TVRGZlgyMXZibVY1WDJkbGRFbDNSVVVBQUFDMkJBRE9yUVFBaExZRUFJaXRCQUFBQUFBQUFnQUFBQkNnQkFBQ0FBQUE2SzBFQUVHVTNCSUxtd0dVcmdRQWlnSUFBRHNEQUFCb0FnQUFQQU1BQUQwREFBQk9VM1F6WDE4eU9XMXZibVY1WDNCMWRFbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpFeFgxOXRiMjVsZVY5d2RYUkpZMFZGQUFBQXRnUUFjcTRFQUlTMkJBQXNyZ1FBQUFBQUFBSUFBQUFRb0FRQUFnQUFBSXl1QkFCQnVOMFNDNXNCT0s4RUFJb0NBQUErQXdBQWFBSUFBRDhEQUFCQUF3QUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpkMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTWGRGUlFBQUFMWUVBQmF2QkFDRXRnUUEwSzRFQUFBQUFBQUNBQUFBRUtBRUFBSUFBQUF3cndRQVFkemVFZ3Y3RHJDdkJBQ0tBZ0FBUVFNQUFHZ0NBQUJDQXdBQVF3TUFBRVFEQUFCT1UzUXpYMTh5T0cxbGMzTmhaMlZ6U1dORlJRQk9VM1F6WDE4eU1UTnRaWE56WVdkbGMxOWlZWE5sUlFBQUFBQUF0Z1FBamE4RUFJUzJCQUI0cndRQUFBQUFBQUlBQUFBUW9BUUFBZ0FBQUtpdkJBQUNBQUFBQUFBQUFBaXdCQUNLQWdBQVJRTUFBR2dDQUFCR0F3QUFSd01BQUVnREFBQk9VM1F6WDE4eU9HMWxjM05oWjJWelNYZEZSUUFBQUFDRXRnUUE4SzhFQUFBQUFBQUNBQUFBRUtBRUFBSUFBQUNvcndRQUFnQUFBRk4xYm1SaGVRQk5iMjVrWVhrQVZIVmxjMlJoZVFCWFpXUnVaWE5rWVhrQVZHaDFjbk5rWVhrQVJuSnBaR0Y1QUZOaGRIVnlaR0Y1QUZOMWJnQk5iMjRBVkhWbEFGZGxaQUJVYUhVQVJuSnBBRk5oZEFBQUFBQlRBQUFBZFFBQUFHNEFBQUJrQUFBQVlRQUFBSGtBQUFBQUFBQUFUUUFBQUc4QUFBQnVBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRlFBQUFCMUFBQUFaUUFBQUhNQUFBQmtBQUFBWVFBQUFIa0FBQUFBQUFBQVZ3QUFBR1VBQUFCa0FBQUFiZ0FBQUdVQUFBQnpBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRlFBQUFCb0FBQUFkUUFBQUhJQUFBQnpBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRVlBQUFCeUFBQUFhUUFBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJUQUFBQVlRQUFBSFFBQUFCMUFBQUFjZ0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJUQUFBQWRRQUFBRzRBQUFBQUFBQUFUUUFBQUc4QUFBQnVBQUFBQUFBQUFGUUFBQUIxQUFBQVpRQUFBQUFBQUFCWEFBQUFaUUFBQUdRQUFBQUFBQUFBVkFBQUFHZ0FBQUIxQUFBQUFBQUFBRVlBQUFCeUFBQUFhUUFBQUFBQUFBQlRBQUFBWVFBQUFIUUFBQUFBQUFBQVNtRnVkV0Z5ZVFCR1pXSnlkV0Z5ZVFCTllYSmphQUJCY0hKcGJBQk5ZWGtBU25WdVpRQktkV3g1QUVGMVozVnpkQUJUWlhCMFpXMWlaWElBVDJOMGIySmxjZ0JPYjNabGJXSmxjZ0JFWldObGJXSmxjZ0JLWVc0QVJtVmlBRTFoY2dCQmNISUFTblZ1QUVwMWJBQkJkV2NBVTJWd0FFOWpkQUJPYjNZQVJHVmpBQUFBU2dBQUFHRUFBQUJ1QUFBQWRRQUFBR0VBQUFCeUFBQUFlUUFBQUFBQUFBQkdBQUFBWlFBQUFHSUFBQUJ5QUFBQWRRQUFBR0VBQUFCeUFBQUFlUUFBQUFBQUFBQk5BQUFBWVFBQUFISUFBQUJqQUFBQWFBQUFBQUFBQUFCQkFBQUFjQUFBQUhJQUFBQnBBQUFBYkFBQUFBQUFBQUJOQUFBQVlRQUFBSGtBQUFBQUFBQUFTZ0FBQUhVQUFBQnVBQUFBWlFBQUFBQUFBQUJLQUFBQWRRQUFBR3dBQUFCNUFBQUFBQUFBQUVFQUFBQjFBQUFBWndBQUFIVUFBQUJ6QUFBQWRBQUFBQUFBQUFCVEFBQUFaUUFBQUhBQUFBQjBBQUFBWlFBQUFHMEFBQUJpQUFBQVpRQUFBSElBQUFBQUFBQUFUd0FBQUdNQUFBQjBBQUFBYndBQUFHSUFBQUJsQUFBQWNnQUFBQUFBQUFCT0FBQUFid0FBQUhZQUFBQmxBQUFBYlFBQUFHSUFBQUJsQUFBQWNnQUFBQUFBQUFCRUFBQUFaUUFBQUdNQUFBQmxBQUFBYlFBQUFHSUFBQUJsQUFBQWNnQUFBQUFBQUFCS0FBQUFZUUFBQUc0QUFBQUFBQUFBUmdBQUFHVUFBQUJpQUFBQUFBQUFBRTBBQUFCaEFBQUFjZ0FBQUFBQUFBQkJBQUFBY0FBQUFISUFBQUFBQUFBQVNnQUFBSFVBQUFCdUFBQUFBQUFBQUVvQUFBQjFBQUFBYkFBQUFBQUFBQUJCQUFBQWRRQUFBR2NBQUFBQUFBQUFVd0FBQUdVQUFBQndBQUFBQUFBQUFFOEFBQUJqQUFBQWRBQUFBQUFBQUFCT0FBQUFid0FBQUhZQUFBQUFBQUFBUkFBQUFHVUFBQUJqQUFBQUFBQUFBRUZOQUZCTkFBQUFRUUFBQUUwQUFBQUFBQUFBVUFBQUFFMEFBQUFBQUFBQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUFBQUFBQW9LZ0VBUEFDQUFEeEFnQUE4Z0lBQVBNQ0FBRDBBZ0FBOVFJQUFQWUNBQUFBQUFBQWpLa0VBQUFEQUFBQkF3QUFBZ01BQUFNREFBQUVBd0FBQlFNQUFBWURBQUFBQUFBQVBMVUVBRWtEQUFCS0F3QUFCZ0FBQUU1VGRETmZYekl4TkY5ZmMyaGhjbVZrWDJOdmRXNTBSUUFBQUFBQXRnUUFJTFVFQUdKaGMybGpYM04wY21sdVp3QWxaQUFsZFFBbGJHeGtBSFpsWTNSdmNnQlFkWEpsSUhacGNuUjFZV3dnWm5WdVkzUnBiMjRnWTJGc2JHVmtJUUJUZERsMGVYQmxYMmx1Wm04QUFBQUF0Z1FBZ2JVRUFFNHhNRjlmWTNoNFlXSnBkakV4Tmw5ZmMyaHBiVjkwZVhCbFgybHVabTlGQUFBQUFDaTJCQUNZdFFRQWtMVUVBRTR4TUY5ZlkzaDRZV0pwZGpFeE4xOWZZMnhoYzNOZmRIbHdaVjlwYm1adlJRQUFBQ2kyQkFESXRRUUF2TFVFQUFBQUFBRHN0UVFBU3dNQUFFd0RBQUJOQXdBQVRnTUFBRThEQUFCUUF3QUFVUU1BQUZJREFBQUFBQUFBY0xZRUFFc0RBQUJUQXdBQVRRTUFBRTREQUFCUEF3QUFWQU1BQUZVREFBQldBd0FBVGpFd1gxOWplSGhoWW1sMk1USXdYMTl6YVY5amJHRnpjMTkwZVhCbFgybHVabTlGQUFBQUFDaTJCQUJJdGdRQTdMVUVBQUFBQUFETXRnUUFTd01BQUZjREFBQk5Bd0FBVGdNQUFFOERBQUJZQXdBQVdRTUFBRm9EQUFCT01UQmZYMk40ZUdGaWFYWXhNakZmWDNadGFWOWpiR0Z6YzE5MGVYQmxYMmx1Wm05RkFBQUFLTFlFQUtTMkJBRHN0UVFBUWVEdEVnc0JBUUJCOE8wU0M5WUJqZ0FBQUFJQUFBQzBBUUFBalFBQUFBTUFBQUMxQVFBQWZBQUFBQVFBQUFDMkFRQUFYZ0FBQUFVQUFBQzNBUUFBSmdBQUFBWUFBQUM0QVFBQWtBQUFBQWNBQUFDNUFRQUFrUUFBQUFjQUFBQzZBUUFBUGdBQUFBZ0FBQUM3QVFBQWtnQUFBQWdBQUFDOEFRQUFQQUFBQUFnQUFBQzlBUUFBa3dBQUFBZ0FBQUMrQVFBQWh3QUFBQWtBQUFDL0FRQUFoZ0FBQUFrQUFBREFBUUFBS3dBQUFBb0FBQURCQVFBQUxRQUFBQW9BQUFEQ0FRQUFLZ0FBQUFzQUFBRERBUUFBTHdBQUFBc0FBQUN5QVFBQUpRQUFBQXNBQUFDekFRQkIwTzhTQ3lFckFBQUF4QUVBQUMwQUFBREZBUUFBZmdBQUFNWUJBQUFoQUFBQXh3RUFBQVVBUWZ6dkVnc0NRQUlBUVpUd0Vnc0xRUUlBQUVJQ0FBQllJQVVBUWF6d0Vnc0JBZ0JCdS9BU0N3WC8vLy8vL3dCQmdQRVNDd0VGQUVHTThSSUxBa1VDQUVHazhSSUxEa0VDQUFCR0FnQUFhQ0FGQUFBRUFFRzg4UklMQVFFQVFjdnhFZ3NGQ3YvLy8vOEFRY0R6RWdzRGtDUUYiOwogICAgaWYgKCF0YSgpKSB7CiAgICAgIGxldCB1YSA9IE87CiAgICAgIE8gPSBjLmxvY2F0ZUZpbGUgPyBjLmxvY2F0ZUZpbGUodWEsIHYpIDogdiArIHVhOwogICAgfQogICAgZnVuY3Rpb24gd2EoKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKEEpIHJldHVybiBuZXcgVWludDhBcnJheShBKTsKICAgICAgICBpZiAodykgcmV0dXJuIHcoTyk7CiAgICAgICAgdGhyb3cgImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjsKICAgICAgfSBjYXRjaCAoYSkgewogICAgICAgIEQoYSk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHhhKCkgewogICAgICByZXR1cm4gQSB8fCAoIXQgJiYgIXUpIHx8ICJmdW5jdGlvbiIgIT09IHR5cGVvZiBmZXRjaAogICAgICAgID8gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgYSh3YSgpKTsKICAgICAgICAgIH0pCiAgICAgICAgOiBmZXRjaChPLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pCiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgICAgaWYgKCFhLm9rKSB0aHJvdyAiZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIiArIE8gKyAiJyI7CiAgICAgICAgICAgICAgcmV0dXJuIGEuYXJyYXlCdWZmZXIoKTsKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICByZXR1cm4gd2EoKTsKICAgICAgICAgICAgfSk7CiAgICB9CiAgICBwYS5wdXNoKHsKICAgICAgSigpIHsKICAgICAgICB5YSgpOwogICAgICB9LAogICAgfSk7CiAgICBsZXQgemEgPSBbbnVsbCwgW10sIFtdXSwKICAgICAgUCA9IDA7CiAgICBmdW5jdGlvbiBBYSgpIHsKICAgICAgUCArPSA0OwogICAgICByZXR1cm4gQ1soUCAtIDQpID4+IDJdOwogICAgfQogICAgbGV0IFEgPSB7fSwKICAgICAgQmEgPSB7fTsKICAgIGZ1bmN0aW9uIENhKCkgewogICAgICBpZiAoIVIpIHsKICAgICAgICBsZXQgYSA9IHsKICAgICAgICAgICAgVVNFUjogIndlYl91c2VyIiwKICAgICAgICAgICAgTE9HTkFNRTogIndlYl91c2VyIiwKICAgICAgICAgICAgUEFUSDogIi8iLAogICAgICAgICAgICBQV0Q6ICIvIiwKICAgICAgICAgICAgSE9NRTogIi9ob21lL3dlYl91c2VyIiwKICAgICAgICAgICAgTEFORzoKICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAoIm9iamVjdCIgPT09IHR5cGVvZiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLmxhbmd1YWdlcyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdKSB8fAogICAgICAgICAgICAgICAgIkMiCiAgICAgICAgICAgICAgKS5yZXBsYWNlKCItIiwgIl8iKSArICIuVVRGLTgiLAogICAgICAgICAgICBfOiByLAogICAgICAgICAgfSwKICAgICAgICAgIGI7CiAgICAgICAgZm9yIChiIGluIEJhKSBhW2JdID0gQmFbYl07CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBmb3IgKGIgaW4gYSkgZC5wdXNoKGIgKyAiPSIgKyBhW2JdKTsKICAgICAgICBSID0gZDsKICAgICAgfQogICAgICByZXR1cm4gUjsKICAgIH0KICAgIGxldCBSOwogICAgZnVuY3Rpb24gUyhhKSB7CiAgICAgIHJldHVybiAwID09PSBhICUgNCAmJiAoMCAhPT0gYSAlIDEwMCB8fCAwID09PSBhICUgNDAwKTsKICAgIH0KICAgIGZ1bmN0aW9uIFQoYSwgYikgewogICAgICBmb3IgKHZhciBkID0gMCwgZSA9IDA7IGUgPD0gYjsgZCArPSBhW2UrK10pOwogICAgICByZXR1cm4gZDsKICAgIH0KICAgIGxldCBVID0gWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdLAogICAgICBXID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdOwogICAgZnVuY3Rpb24gWChhLCBiKSB7CiAgICAgIGZvciAoYSA9IG5ldyBEYXRlKGEuZ2V0VGltZSgpKTsgMCA8IGI7ICkgewogICAgICAgIGxldCBkID0gYS5nZXRNb250aCgpLAogICAgICAgICAgZSA9IChTKGEuZ2V0RnVsbFllYXIoKSkgPyBVIDogVylbZF07CiAgICAgICAgaWYgKGIgPiBlIC0gYS5nZXREYXRlKCkpCiAgICAgICAgICAoYiAtPSBlIC0gYS5nZXREYXRlKCkgKyAxKSwKICAgICAgICAgICAgYS5zZXREYXRlKDEpLAogICAgICAgICAgICAxMSA+IGQgPyBhLnNldE1vbnRoKGQgKyAxKSA6IChhLnNldE1vbnRoKDApLCBhLnNldEZ1bGxZZWFyKGEuZ2V0RnVsbFllYXIoKSArIDEpKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgIGEuc2V0RGF0ZShhLmdldERhdGUoKSArIGIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBhOwogICAgfQogICAgZnVuY3Rpb24gRGEoYSwgYiwgZCwgZSkgewogICAgICBmdW5jdGlvbiBnKGEsIGIsIGQpIHsKICAgICAgICBmb3IgKGEgPSAibnVtYmVyIiA9PT0gdHlwZW9mIGEgPyBhLnRvU3RyaW5nKCkgOiBhIHx8ICIiOyBhLmxlbmd0aCA8IGI7ICkgYSA9IGRbMF0gKyBhOwogICAgICAgIHJldHVybiBhOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGYoYSwgYikgewogICAgICAgIHJldHVybiBnKGEsIGIsICIwIik7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gaChhLCBiKSB7CiAgICAgICAgZnVuY3Rpb24gVihhKSB7CiAgICAgICAgICByZXR1cm4gMCA+IGEgPyAtMSA6IDAgPCBhID8gMSA6IDA7CiAgICAgICAgfQogICAgICAgIGxldCBkOwogICAgICAgIDAgPT09IChkID0gVihhLmdldEZ1bGxZZWFyKCkgLSBiLmdldEZ1bGxZZWFyKCkpKSAmJgogICAgICAgICAgMCA9PT0gKGQgPSBWKGEuZ2V0TW9udGgoKSAtIGIuZ2V0TW9udGgoKSkpICYmCiAgICAgICAgICAoZCA9IFYoYS5nZXREYXRlKCkgLSBiLmdldERhdGUoKSkpOwogICAgICAgIHJldHVybiBkOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIG4oYSkgewogICAgICAgIHN3aXRjaCAoYS5nZXREYXkoKSkgewogICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpIC0gMSwgMTEsIDI5KTsKICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCksIDAsIDMpOwogICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLCAwLCAyKTsKICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGEuZ2V0RnVsbFllYXIoKSwgMCwgMSk7CiAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCkgLSAxLCAxMSwgMzEpOwogICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpIC0gMSwgMTEsIDMwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24geihhKSB7CiAgICAgICAgYSA9IFgobmV3IERhdGUoYS5BICsgMTkwMCwgMCwgMSksIGEuRyk7CiAgICAgICAgbGV0IGIgPSBuKG5ldyBEYXRlKGEuZ2V0RnVsbFllYXIoKSArIDEsIDAsIDQpKTsKICAgICAgICByZXR1cm4gMCA+PSBoKG4obmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLCAwLCA0KSksIGEpCiAgICAgICAgICA/IDAgPj0gaChiLCBhKQogICAgICAgICAgICA/IGEuZ2V0RnVsbFllYXIoKSArIDEKICAgICAgICAgICAgOiBhLmdldEZ1bGxZZWFyKCkKICAgICAgICAgIDogYS5nZXRGdWxsWWVhcigpIC0gMTsKICAgICAgfQogICAgICBsZXQgbSA9IENbKGUgKyA0MCkgPj4gMl07CiAgICAgIGUgPSB7CiAgICAgICAgTjogQ1tlID4+IDJdLAogICAgICAgIE06IENbKGUgKyA0KSA+PiAyXSwKICAgICAgICBEOiBDWyhlICsgOCkgPj4gMl0sCiAgICAgICAgQzogQ1soZSArIDEyKSA+PiAyXSwKICAgICAgICBCOiBDWyhlICsgMTYpID4+IDJdLAogICAgICAgIEE6IENbKGUgKyAyMCkgPj4gMl0sCiAgICAgICAgRjogQ1soZSArIDI0KSA+PiAyXSwKICAgICAgICBHOiBDWyhlICsgMjgpID4+IDJdLAogICAgICAgIFg6IENbKGUgKyAzMikgPj4gMl0sCiAgICAgICAgTDogQ1soZSArIDM2KSA+PiAyXSwKICAgICAgICBPOiBtID8gKG0gPyBJKEgsIG0sIHZvaWQgMCkgOiAiIikgOiAiIiwKICAgICAgfTsKICAgICAgZCA9IGQgPyBJKEgsIGQsIHZvaWQgMCkgOiAiIjsKICAgICAgbSA9IHsKICAgICAgICAiJWMiOiAiJWEgJWIgJWQgJUg6JU06JVMgJVkiLAogICAgICAgICIlRCI6ICIlbS8lZC8leSIsCiAgICAgICAgIiVGIjogIiVZLSVtLSVkIiwKICAgICAgICAiJWgiOiAiJWIiLAogICAgICAgICIlciI6ICIlSTolTTolUyAlcCIsCiAgICAgICAgIiVSIjogIiVIOiVNIiwKICAgICAgICAiJVQiOiAiJUg6JU06JVMiLAogICAgICAgICIleCI6ICIlbS8lZC8leSIsCiAgICAgICAgIiVYIjogIiVIOiVNOiVTIiwKICAgICAgICAiJUVjIjogIiVjIiwKICAgICAgICAiJUVDIjogIiVDIiwKICAgICAgICAiJUV4IjogIiVtLyVkLyV5IiwKICAgICAgICAiJUVYIjogIiVIOiVNOiVTIiwKICAgICAgICAiJUV5IjogIiV5IiwKICAgICAgICAiJUVZIjogIiVZIiwKICAgICAgICAiJU9kIjogIiVkIiwKICAgICAgICAiJU9lIjogIiVlIiwKICAgICAgICAiJU9IIjogIiVIIiwKICAgICAgICAiJU9JIjogIiVJIiwKICAgICAgICAiJU9tIjogIiVtIiwKICAgICAgICAiJU9NIjogIiVNIiwKICAgICAgICAiJU9TIjogIiVTIiwKICAgICAgICAiJU91IjogIiV1IiwKICAgICAgICAiJU9VIjogIiVVIiwKICAgICAgICAiJU9WIjogIiVWIiwKICAgICAgICAiJU93IjogIiV3IiwKICAgICAgICAiJU9XIjogIiVXIiwKICAgICAgICAiJU95IjogIiV5IiwKICAgICAgfTsKICAgICAgZm9yICh2YXIgbCBpbiBtKSBkID0gZC5yZXBsYWNlKG5ldyBSZWdFeHAobCwgImciKSwgbVtsXSk7CiAgICAgIGxldCBGID0gIlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLAogICAgICAgIHZhID0KICAgICAgICAgICJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5zcGxpdCgKICAgICAgICAgICAgIiAiLAogICAgICAgICAgKTsKICAgICAgbSA9IHsKICAgICAgICAiJWEiKGEpIHsKICAgICAgICAgIHJldHVybiBGW2EuRl0uc3Vic3RyaW5nKDAsIDMpOwogICAgICAgIH0sCiAgICAgICAgIiVBIihhKSB7CiAgICAgICAgICByZXR1cm4gRlthLkZdOwogICAgICAgIH0sCiAgICAgICAgIiViIihhKSB7CiAgICAgICAgICByZXR1cm4gdmFbYS5CXS5zdWJzdHJpbmcoMCwgMyk7CiAgICAgICAgfSwKICAgICAgICAiJUIiKGEpIHsKICAgICAgICAgIHJldHVybiB2YVthLkJdOwogICAgICAgIH0sCiAgICAgICAgIiVDIihhKSB7CiAgICAgICAgICByZXR1cm4gZigoKGEuQSArIDE5MDApIC8gMTAwKSB8IDAsIDIpOwogICAgICAgIH0sCiAgICAgICAgIiVkIihhKSB7CiAgICAgICAgICByZXR1cm4gZihhLkMsIDIpOwogICAgICAgIH0sCiAgICAgICAgIiVlIihhKSB7CiAgICAgICAgICByZXR1cm4gZyhhLkMsIDIsICIgIik7CiAgICAgICAgfSwKICAgICAgICAiJWciKGEpIHsKICAgICAgICAgIHJldHVybiB6KGEpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpOwogICAgICAgIH0sCiAgICAgICAgIiVHIihhKSB7CiAgICAgICAgICByZXR1cm4geihhKTsKICAgICAgICB9LAogICAgICAgICIlSCIoYSkgewogICAgICAgICAgcmV0dXJuIGYoYS5ELCAyKTsKICAgICAgICB9LAogICAgICAgICIlSSIoYSkgewogICAgICAgICAgYSA9IGEuRDsKICAgICAgICAgIDAgPT0gYSA/IChhID0gMTIpIDogMTIgPCBhICYmIChhIC09IDEyKTsKICAgICAgICAgIHJldHVybiBmKGEsIDIpOwogICAgICAgIH0sCiAgICAgICAgIiVqIihhKSB7CiAgICAgICAgICByZXR1cm4gZihhLkMgKyBUKFMoYS5BICsgMTkwMCkgPyBVIDogVywgYS5CIC0gMSksIDMpOwogICAgICAgIH0sCiAgICAgICAgIiVtIihhKSB7CiAgICAgICAgICByZXR1cm4gZihhLkIgKyAxLCAyKTsKICAgICAgICB9LAogICAgICAgICIlTSIoYSkgewogICAgICAgICAgcmV0dXJuIGYoYS5NLCAyKTsKICAgICAgICB9LAogICAgICAgICIlbiIoKSB7CiAgICAgICAgICByZXR1cm4gIlxuIjsKICAgICAgICB9LAogICAgICAgICIlcCIoYSkgewogICAgICAgICAgcmV0dXJuIDAgPD0gYS5EICYmIDEyID4gYS5EID8gIkFNIiA6ICJQTSI7CiAgICAgICAgfSwKICAgICAgICAiJVMiKGEpIHsKICAgICAgICAgIHJldHVybiBmKGEuTiwgMik7CiAgICAgICAgfSwKICAgICAgICAiJXQiKCkgewogICAgICAgICAgcmV0dXJuICJcdCI7CiAgICAgICAgfSwKICAgICAgICAiJXUiKGEpIHsKICAgICAgICAgIHJldHVybiBhLkYgfHwgNzsKICAgICAgICB9LAogICAgICAgICIlVSIoYSkgewogICAgICAgICAgbGV0IGIgPSBuZXcgRGF0ZShhLkEgKyAxOTAwLCAwLCAxKSwKICAgICAgICAgICAgZCA9IDAgPT09IGIuZ2V0RGF5KCkgPyBiIDogWChiLCA3IC0gYi5nZXREYXkoKSk7CiAgICAgICAgICBhID0gbmV3IERhdGUoYS5BICsgMTkwMCwgYS5CLCBhLkMpOwogICAgICAgICAgcmV0dXJuIDAgPiBoKGQsIGEpCiAgICAgICAgICAgID8gZigKICAgICAgICAgICAgICAgIE1hdGguY2VpbCgKICAgICAgICAgICAgICAgICAgKDMxIC0KICAgICAgICAgICAgICAgICAgICBkLmdldERhdGUoKSArCiAgICAgICAgICAgICAgICAgICAgKFQoUyhhLmdldEZ1bGxZZWFyKCkpID8gVSA6IFcsIGEuZ2V0TW9udGgoKSAtIDEpIC0gMzEpICsKICAgICAgICAgICAgICAgICAgICBhLmdldERhdGUoKSkgLwogICAgICAgICAgICAgICAgICAgIDcsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICApCiAgICAgICAgICAgIDogMCA9PT0gaChkLCBiKQogICAgICAgICAgICAgID8gIjAxIgogICAgICAgICAgICAgIDogIjAwIjsKICAgICAgICB9LAogICAgICAgICIlViIoYSkgewogICAgICAgICAgbGV0IGIgPSBuKG5ldyBEYXRlKGEuQSArIDE5MDAsIDAsIDQpKSwKICAgICAgICAgICAgZCA9IG4obmV3IERhdGUoYS5BICsgMTkwMSwgMCwgNCkpLAogICAgICAgICAgICBlID0gWChuZXcgRGF0ZShhLkEgKyAxOTAwLCAwLCAxKSwgYS5HKTsKICAgICAgICAgIHJldHVybiAwID4gaChlLCBiKQogICAgICAgICAgICA/ICI1MyIKICAgICAgICAgICAgOiAwID49IGgoZCwgZSkKICAgICAgICAgICAgICA/ICIwMSIKICAgICAgICAgICAgICA6IGYoCiAgICAgICAgICAgICAgICAgIE1hdGguY2VpbCgKICAgICAgICAgICAgICAgICAgICAoYi5nZXRGdWxsWWVhcigpIDwgYS5BICsgMTkwMAogICAgICAgICAgICAgICAgICAgICAgPyBhLkcgKyAzMiAtIGIuZ2V0RGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICA6IGEuRyArIDEgLSBiLmdldERhdGUoKSkgLyA3LAogICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9LAogICAgICAgICIldyIoYSkgewogICAgICAgICAgcmV0dXJuIGEuRjsKICAgICAgICB9LAogICAgICAgICIlVyIoYSkgewogICAgICAgICAgbGV0IGIgPSBuZXcgRGF0ZShhLkEsIDAsIDEpLAogICAgICAgICAgICBkID0gMSA9PT0gYi5nZXREYXkoKSA/IGIgOiBYKGIsIDAgPT09IGIuZ2V0RGF5KCkgPyAxIDogNyAtIGIuZ2V0RGF5KCkgKyAxKTsKICAgICAgICAgIGEgPSBuZXcgRGF0ZShhLkEgKyAxOTAwLCBhLkIsIGEuQyk7CiAgICAgICAgICByZXR1cm4gMCA+IGgoZCwgYSkKICAgICAgICAgICAgPyBmKAogICAgICAgICAgICAgICAgTWF0aC5jZWlsKAogICAgICAgICAgICAgICAgICAoMzEgLQogICAgICAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpICsKICAgICAgICAgICAgICAgICAgICAoVChTKGEuZ2V0RnVsbFllYXIoKSkgPyBVIDogVywgYS5nZXRNb250aCgpIC0gMSkgLSAzMSkgKwogICAgICAgICAgICAgICAgICAgIGEuZ2V0RGF0ZSgpKSAvCiAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICkKICAgICAgICAgICAgOiAwID09PSBoKGQsIGIpCiAgICAgICAgICAgICAgPyAiMDEiCiAgICAgICAgICAgICAgOiAiMDAiOwogICAgICAgIH0sCiAgICAgICAgIiV5IihhKSB7CiAgICAgICAgICByZXR1cm4gKGEuQSArIDE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpOwogICAgICAgIH0sCiAgICAgICAgIiVZIihhKSB7CiAgICAgICAgICByZXR1cm4gYS5BICsgMTkwMDsKICAgICAgICB9LAogICAgICAgICIleiIoYSkgewogICAgICAgICAgYSA9IGEuTDsKICAgICAgICAgIGxldCBiID0gMCA8PSBhOwogICAgICAgICAgYSA9IE1hdGguYWJzKGEpIC8gNjA7CiAgICAgICAgICByZXR1cm4gKGIgPyAiKyIgOiAiLSIpICsgU3RyaW5nKCIwMDAwIiArICgoYSAvIDYwKSAqIDEwMCArIChhICUgNjApKSkuc2xpY2UoLTQpOwogICAgICAgIH0sCiAgICAgICAgIiVaIihhKSB7CiAgICAgICAgICByZXR1cm4gYS5POwogICAgICAgIH0sCiAgICAgICAgIiUlIigpIHsKICAgICAgICAgIHJldHVybiAiJSI7CiAgICAgICAgfSwKICAgICAgfTsKICAgICAgZm9yIChsIGluIG0pIDAgPD0gZC5pbmRleE9mKGwpICYmIChkID0gZC5yZXBsYWNlKG5ldyBSZWdFeHAobCwgImciKSwgbVtsXShlKSkpOwogICAgICBsID0gRWEoZCk7CiAgICAgIGlmIChsLmxlbmd0aCA+IGIpIHJldHVybiAwOwogICAgICBCLnNldChsLCBhKTsKICAgICAgcmV0dXJuIGwubGVuZ3RoIC0gMTsKICAgIH0KICAgIGZ1bmN0aW9uIEVhKGEpIHsKICAgICAgZm9yICh2YXIgYiA9IDAsIGQgPSAwOyBkIDwgYS5sZW5ndGg7ICsrZCkgewogICAgICAgIGxldCBlID0gYS5jaGFyQ29kZUF0KGQpOwogICAgICAgIDU1Mjk2IDw9IGUgJiYgNTczNDMgPj0gZSAmJiAoZSA9ICg2NTUzNiArICgoZSAmIDEwMjMpIDw8IDEwKSkgfCAoYS5jaGFyQ29kZUF0KCsrZCkgJiAxMDIzKSk7CiAgICAgICAgMTI3ID49IGUgPyArK2IgOiAoYiA9IDIwNDcgPj0gZSA/IGIgKyAyIDogNjU1MzUgPj0gZSA/IGIgKyAzIDogYiArIDQpOwogICAgICB9CiAgICAgIGIgPSBBcnJheShiICsgMSk7CiAgICAgIGlhKGEsIGIsIDAsIGIubGVuZ3RoKTsKICAgICAgcmV0dXJuIGI7CiAgICB9CiAgICBsZXQgR2EgPSB7CiAgICAgICAgZigpIHt9LAogICAgICAgIGMoKSB7CiAgICAgICAgICBjLl9fX2Vycm5vX2xvY2F0aW9uICYmIChDW2MuX19fZXJybm9fbG9jYXRpb24oKSA+PiAyXSA9IDYzKTsKICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9LAogICAgICAgIG4oYSwgYikgewogICAgICAgICAgUCA9IGI7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZCA9IEFhKCk7CiAgICAgICAgICAgIGxldCBlID0gQWEoKTsKICAgICAgICAgICAgaWYgKC0xID09PSBkIHx8IDAgPT09IGUpIHZhciBnID0gLTI4OwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgZiA9IFEuS1tkXTsKICAgICAgICAgICAgICBpZiAoZiAmJiBlID09PSBmLlUpIHsKICAgICAgICAgICAgICAgIGxldCBoID0gKHZvaWQgMCkuVChmLlMpOwogICAgICAgICAgICAgICAgUS5SKGQsIGgsIGUsIGYuZmxhZ3MsIGYub2Zmc2V0KTsKICAgICAgICAgICAgICAgICh2b2lkIDApLlcoaCk7CiAgICAgICAgICAgICAgICBRLktbZF0gPSBudWxsOwogICAgICAgICAgICAgICAgZi5QICYmIEZhKGYuVik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBnOwogICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICByZXR1cm4gRChuKSwgLW4uSTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGEoKSB7fSwKICAgICAgICBiKCkgewogICAgICAgICAgRCgpOwogICAgICAgIH0sCiAgICAgICAgayhhLCBiLCBkKSB7CiAgICAgICAgICBILnNldChILnN1YmFycmF5KGIsIGIgKyBkKSwgYSk7CiAgICAgICAgfSwKICAgICAgICBsKGEpIHsKICAgICAgICAgIGxldCBiID0gQi5sZW5ndGg7CiAgICAgICAgICBpZiAoMjE0NzQxODExMiA8IGEpIHJldHVybiAhMTsKICAgICAgICAgIGZvciAobGV0IGQgPSAxOyA0ID49IGQ7IGQgKj0gMikgewogICAgICAgICAgICBsZXQgZSA9IGIgKiAoMSArIDAuMiAvIGQpOwogICAgICAgICAgICBlID0gTWF0aC5taW4oZSwgYSArIDEwMDY2MzI5Nik7CiAgICAgICAgICAgIGUgPSBNYXRoLm1heCgxNjc3NzIxNiwgYSwgZSk7CiAgICAgICAgICAgIDAgPCBlICUgNjU1MzYgJiYgKGUgKz0gNjU1MzYgLSAoZSAlIDY1NTM2KSk7CiAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgRS5ncm93KChNYXRoLm1pbigyMTQ3NDE4MTEyLCBlKSAtIEouYnl0ZUxlbmd0aCArIDY1NTM1KSA+PiAxNik7CiAgICAgICAgICAgICAgICBtYShFLmJ1ZmZlcik7CiAgICAgICAgICAgICAgICB2YXIgZyA9IDE7CiAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgIH0gY2F0Y2ggKGYpIHt9CiAgICAgICAgICAgICAgZyA9IHZvaWQgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZykgcmV0dXJuICEwOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuICExOwogICAgICAgIH0sCiAgICAgICAgZChhLCBiKSB7CiAgICAgICAgICBsZXQgZCA9IDA7CiAgICAgICAgICBDYSgpLmZvckVhY2goZnVuY3Rpb24gKGUsIGcpIHsKICAgICAgICAgICAgbGV0IGYgPSBiICsgZDsKICAgICAgICAgICAgZyA9IENbKGEgKyA0ICogZykgPj4gMl0gPSBmOwogICAgICAgICAgICBmb3IgKGYgPSAwOyBmIDwgZS5sZW5ndGg7ICsrZikgQltnKysgPj4gMF0gPSBlLmNoYXJDb2RlQXQoZik7CiAgICAgICAgICAgIEJbZyA+PiAwXSA9IDA7CiAgICAgICAgICAgIGQgKz0gZS5sZW5ndGggKyAxOwogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGUoYSwgYikgewogICAgICAgICAgbGV0IGQgPSBDYSgpOwogICAgICAgICAgQ1thID4+IDJdID0gZC5sZW5ndGg7CiAgICAgICAgICBsZXQgZSA9IDA7CiAgICAgICAgICBkLmZvckVhY2goZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgZSArPSBhLmxlbmd0aCArIDE7CiAgICAgICAgICB9KTsKICAgICAgICAgIENbYiA+PiAyXSA9IGU7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGgoKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGooKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGcoYSwgYiwgZCwgZSkgewogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZm9yICh2YXIgZyA9IDAsIGYgPSAwOyBmIDwgZDsgZisrKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgaCA9IENbKGIgKyA4ICogZikgPj4gMl0sIG4gPSBDWyhiICsgKDggKiBmICsgNCkpID4+IDJdLCB6ID0gMDsgeiA8IG47IHorKykgewogICAgICAgICAgICAgICAgbGV0IG0gPSBIW2ggKyB6XSwKICAgICAgICAgICAgICAgICAgbCA9IHphW2FdOwogICAgICAgICAgICAgICAgMCA9PT0gbSB8fCAxMCA9PT0gbSA/ICgoMSA9PT0gYSA/IHggOiB5KShJKGwsIDApKSwgKGwubGVuZ3RoID0gMCkpIDogbC5wdXNoKG0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBnICs9IG47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQ1tlID4+IDJdID0gZzsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICB9IGNhdGNoIChGKSB7CiAgICAgICAgICAgIHJldHVybiBEKEYpLCBGLkk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtZW1vcnk6IEUsCiAgICAgICAgbygpIHt9LAogICAgICAgIGkoKSB7fSwKICAgICAgICBtKGEsIGIsIGQsIGUpIHsKICAgICAgICAgIHJldHVybiBEYShhLCBiLCBkLCBlKTsKICAgICAgICB9LAogICAgICAgIHRhYmxlOiBlYSwKICAgICAgfSwKICAgICAgSGEgPSAoZnVuY3Rpb24gKCkgewogICAgICAgIGZ1bmN0aW9uIGEoYSkgewogICAgICAgICAgYy5hc20gPSBhLmV4cG9ydHM7CiAgICAgICAgICBMLS07CiAgICAgICAgICBjLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMgJiYgYy5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKEwpOwogICAgICAgICAgMCA9PSBMICYmIChudWxsICE9PSBNICYmIChjbGVhckludGVydmFsKE0pLCAoTSA9IG51bGwpKSwgTiAmJiAoKGEgPSBOKSwgKE4gPSBudWxsKSwgYSgpKSk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGIoYikgewogICAgICAgICAgYShiLmluc3RhbmNlKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gZChhKSB7CiAgICAgICAgICByZXR1cm4geGEoKQogICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoYSkgewogICAgICAgICAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShhLCBlKTsKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLnRoZW4oYSwgZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICB5KCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiICsgYSk7CiAgICAgICAgICAgICAgRChhKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHZhciBlID0geyBlbnY6IEdhLCB3YXNpX3NuYXBzaG90X3ByZXZpZXcxOiBHYSB9OwogICAgICAgIEwrKzsKICAgICAgICBjLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMgJiYgYy5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKEwpOwogICAgICAgIGlmIChjLmluc3RhbnRpYXRlV2FzbSkKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBjLmluc3RhbnRpYXRlV2FzbShlLCBhKTsKICAgICAgICAgIH0gY2F0Y2ggKGcpIHsKICAgICAgICAgICAgcmV0dXJuIHkoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIgKyBnKSwgITE7CiAgICAgICAgICB9CiAgICAgICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmICgKICAgICAgICAgICAgQSB8fAogICAgICAgICAgICAiZnVuY3Rpb24iICE9PSB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcgfHwKICAgICAgICAgICAgdGEoKSB8fAogICAgICAgICAgICAiZnVuY3Rpb24iICE9PSB0eXBlb2YgZmV0Y2gKICAgICAgICAgICkKICAgICAgICAgICAgcmV0dXJuIGQoYik7CiAgICAgICAgICBmZXRjaChPLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pLnRoZW4oZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKGEsIGUpLnRoZW4oYiwgZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICB5KCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIiArIGEpOwogICAgICAgICAgICAgIHkoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIik7CiAgICAgICAgICAgICAgZChiKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9KTsKICAgICAgICB9KSgpOwogICAgICAgIHJldHVybiB7fTsKICAgICAgfSkoKTsKICAgIGMuYXNtID0gSGE7CiAgICB2YXIgeWEgPSAoYy5fX193YXNtX2NhbGxfY3RvcnMgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAoeWEgPSBjLl9fX3dhc21fY2FsbF9jdG9ycyA9IGMuYXNtLnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9KTsKICAgIGMuX2NvbnZlcnRfZ2xzbF90b19zcGlydiA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIChjLl9jb252ZXJ0X2dsc2xfdG9fc3BpcnYgPSBjLmFzbS5xKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfTsKICAgIGMuX2Rlc3Ryb3lfb3V0cHV0X2J1ZmZlciA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIChjLl9kZXN0cm95X291dHB1dF9idWZmZXIgPSBjLmFzbS5yKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfTsKICAgIGMuX21hbGxvYyA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIChjLl9tYWxsb2MgPSBjLmFzbS5zKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfTsKICAgIHZhciBGYSA9IChjLl9mcmVlID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAoRmEgPSBjLl9mcmVlID0gYy5hc20udCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgICAgfSksCiAgICAgIGphID0gKGMuc3RhY2tTYXZlID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAoamEgPSBjLnN0YWNrU2F2ZSA9IGMuYXNtLnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICAgIH0pLAogICAgICBHID0gKGMuc3RhY2tBbGxvYyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gKEcgPSBjLnN0YWNrQWxsb2MgPSBjLmFzbS52KS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgICB9KSwKICAgICAga2EgPSAoYy5zdGFja1Jlc3RvcmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIChrYSA9IGMuc3RhY2tSZXN0b3JlID0gYy5hc20udykuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgICAgfSk7CiAgICBjLmR5bkNhbGxfdmkgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAoYy5keW5DYWxsX3ZpID0gYy5hc20ueCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgIH07CiAgICBjLmR5bkNhbGxfdiA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIChjLmR5bkNhbGxfdiA9IGMuYXNtLnkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9OwogICAgYy5hc20gPSBIYTsKICAgIGxldCBZOwogICAgYy50aGVuID0gZnVuY3Rpb24gKGEpIHsKICAgICAgaWYgKFkpIGEoYyk7CiAgICAgIGVsc2UgewogICAgICAgIGxldCBiID0gYy5vblJ1bnRpbWVJbml0aWFsaXplZDsKICAgICAgICBjLm9uUnVudGltZUluaXRpYWxpemVkID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgYiAmJiBiKCk7CiAgICAgICAgICBhKGMpOwogICAgICAgIH07CiAgICAgIH0KICAgICAgcmV0dXJuIGM7CiAgICB9OwogICAgTiA9IGZ1bmN0aW9uIElhKCkgewogICAgICBZIHx8IFooKTsKICAgICAgWSB8fCAoTiA9IElhKTsKICAgIH07CiAgICBmdW5jdGlvbiBaKCkgewogICAgICBmdW5jdGlvbiBhKCkgewogICAgICAgIGlmICghWSAmJiAoKFkgPSAhMCksICFmYSkpIHsKICAgICAgICAgIEsocGEpOwogICAgICAgICAgSyhxYSk7CiAgICAgICAgICBpZiAoYy5vblJ1bnRpbWVJbml0aWFsaXplZCkgYy5vblJ1bnRpbWVJbml0aWFsaXplZCgpOwogICAgICAgICAgaWYgKGMucG9zdFJ1bikKICAgICAgICAgICAgZm9yICgiZnVuY3Rpb24iID09PSB0eXBlb2YgYy5wb3N0UnVuICYmIChjLnBvc3RSdW4gPSBbYy5wb3N0UnVuXSk7IGMucG9zdFJ1bi5sZW5ndGg7ICkgewogICAgICAgICAgICAgIGxldCBhID0gYy5wb3N0UnVuLnNoaWZ0KCk7CiAgICAgICAgICAgICAgcmEudW5zaGlmdChhKTsKICAgICAgICAgICAgfQogICAgICAgICAgSyhyYSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghKDAgPCBMKSkgewogICAgICAgIGlmIChjLnByZVJ1bikKICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PT0gdHlwZW9mIGMucHJlUnVuICYmIChjLnByZVJ1biA9IFtjLnByZVJ1bl0pOyBjLnByZVJ1bi5sZW5ndGg7ICkgc2EoKTsKICAgICAgICBLKG9hKTsKICAgICAgICAwIDwgTCB8fAogICAgICAgICAgKGMuc2V0U3RhdHVzCiAgICAgICAgICAgID8gKGMuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksCiAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgYy5zZXRTdGF0dXMoIiIpOwogICAgICAgICAgICAgICAgfSwgMSk7CiAgICAgICAgICAgICAgICBhKCk7CiAgICAgICAgICAgICAgfSwgMSkpCiAgICAgICAgICAgIDogYSgpKTsKICAgICAgfQogICAgfQogICAgYy5ydW4gPSBaOwogICAgaWYgKGMucHJlSW5pdCkKICAgICAgZm9yICgiZnVuY3Rpb24iID09PSB0eXBlb2YgYy5wcmVJbml0ICYmIChjLnByZUluaXQgPSBbYy5wcmVJbml0XSk7IDAgPCBjLnByZUluaXQubGVuZ3RoOyApCiAgICAgICAgYy5wcmVJbml0LnBvcCgpKCk7CiAgICBaKCk7CgogICAgcmV0dXJuIE1vZHVsZTsKICB9Owp9KSgpOwppZiAodHlwZW9mIGV4cG9ydHMgPT09ICJvYmplY3QiICYmIHR5cGVvZiBtb2R1bGUgPT09ICJvYmplY3QiKSBtb2R1bGUuZXhwb3J0cyA9IE1vZHVsZTsKZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmVbImFtZCJdKQogIGRlZmluZShbXSwgZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIE1vZHVsZTsKICB9KTsKZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICJvYmplY3QiKSBleHBvcnRzWyJNb2R1bGUiXSA9IE1vZHVsZTsKZXhwb3J0IGRlZmF1bHQgKCgpID0+IHsKICBjb25zdCBpbml0aWFsaXplID0gKCkgPT4gewogICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIE1vZHVsZSh7CiAgICAgICAgbG9jYXRlRmlsZSgpIHsKICAgICAgICAgIGNvbnN0IGkgPSBpbXBvcnQubWV0YS51cmwubGFzdEluZGV4T2YoIi8iKTsKICAgICAgICAgIHJldHVybiBpbXBvcnQubWV0YS51cmwuc3Vic3RyaW5nKDAsIGkpICsgIi9nbHNsYW5nLndhc20iOwogICAgICAgIH0sCiAgICAgICAgb25SdW50aW1lSW5pdGlhbGl6ZWQoKSB7CiAgICAgICAgICByZXNvbHZlKHsKICAgICAgICAgICAgY29tcGlsZUdMU0xaZXJvQ29weTogdGhpcy5jb21waWxlR0xTTFplcm9Db3B5LAogICAgICAgICAgICBjb21waWxlR0xTTDogdGhpcy5jb21waWxlR0xTTCwKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgIH0pOwogICAgfSk7CiAgfTsKCiAgbGV0IGluc3RhbmNlOwogIHJldHVybiAoKSA9PiB7CiAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgIGluc3RhbmNlID0gaW5pdGlhbGl6ZSgpOwogICAgfQogICAgcmV0dXJuIGluc3RhbmNlOwogIH07Cn0pKCk7Cg=="; +var twgsl_default = "bGV0IE1vZHVsZSA9IGZ1bmN0aW9uIChNb2R1bGUpIHsKICBNb2R1bGUgPSBNb2R1bGUgfHwge307CiAgdmFyIE1vZHVsZSA9IHR5cGVvZiBNb2R1bGUgIT09ICJ1bmRlZmluZWQiID8gTW9kdWxlIDoge307CiAgbGV0IG1vZHVsZU92ZXJyaWRlcyA9IE9iamVjdC5hc3NpZ24oe30sIE1vZHVsZSk7CiAgbGV0IGFyZ3VtZW50c18gPSBbXTsKICBsZXQgdGhpc1Byb2dyYW0gPSAiLi90aGlzLnByb2dyYW0iOwogIGxldCBxdWl0XyA9IChzdGF0dXMsIHRvVGhyb3cpID0+IHsKICAgIHRocm93IHRvVGhyb3c7CiAgfTsKICBsZXQgRU5WSVJPTk1FTlRfSVNfV0VCID0gdHlwZW9mIHdpbmRvdyA9PT0gIm9iamVjdCI7CiAgbGV0IEVOVklST05NRU5UX0lTX1dPUktFUiA9IHR5cGVvZiBpbXBvcnRTY3JpcHRzID09PSAiZnVuY3Rpb24iOwogIGxldCBFTlZJUk9OTUVOVF9JU19OT0RFID0KICAgIHR5cGVvZiBwcm9jZXNzID09PSAib2JqZWN0IiAmJgogICAgdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMgPT09ICJvYmplY3QiICYmCiAgICB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlID09PSAic3RyaW5nIjsKICBsZXQgc2NyaXB0RGlyZWN0b3J5ID0gIiI7CiAgZnVuY3Rpb24gbG9jYXRlRmlsZShwYXRoKSB7CiAgICBpZiAoTW9kdWxlWyJsb2NhdGVGaWxlIl0pIHsKICAgICAgcmV0dXJuIE1vZHVsZVsibG9jYXRlRmlsZSJdKHBhdGgsIHNjcmlwdERpcmVjdG9yeSk7CiAgICB9CiAgICByZXR1cm4gc2NyaXB0RGlyZWN0b3J5ICsgcGF0aDsKICB9CiAgbGV0IHJlYWRfLCByZWFkQXN5bmMsIHJlYWRCaW5hcnksIHNldFdpbmRvd1RpdGxlOwogIGZ1bmN0aW9uIGxvZ0V4Y2VwdGlvbk9uRXhpdChlKSB7CiAgICBpZiAoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXMpIHJldHVybjsKICAgIGxldCB0b0xvZyA9IGU7CiAgICBlcnIoImV4aXRpbmcgZHVlIHRvIGV4Y2VwdGlvbjogIiArIHRvTG9nKTsKICB9CiAgaWYgKEVOVklST05NRU5UX0lTX05PREUpIHsKICAgIGlmIChFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHsKICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gcmVxdWlyZSgicGF0aCIpLmRpcm5hbWUoc2NyaXB0RGlyZWN0b3J5KSArICIvIjsKICAgIH0gZWxzZSB7CiAgICAgIHNjcmlwdERpcmVjdG9yeSA9IF9fZGlybmFtZSArICIvIjsKICAgIH0KICAgIHZhciBmcywgbm9kZVBhdGg7CiAgICBpZiAodHlwZW9mIHJlcXVpcmUgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgZnMgPSByZXF1aXJlKCJmcyIpOwogICAgICBub2RlUGF0aCA9IHJlcXVpcmUoInBhdGgiKTsKICAgIH0KICAgIHJlYWRfID0gKGZpbGVuYW1lLCBiaW5hcnkpID0+IHsKICAgICAgZmlsZW5hbWUgPSBub2RlUGF0aFsibm9ybWFsaXplIl0oZmlsZW5hbWUpOwogICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCBiaW5hcnkgPyB1bmRlZmluZWQgOiAidXRmOCIpOwogICAgfTsKICAgIHJlYWRCaW5hcnkgPSAoZmlsZW5hbWUpID0+IHsKICAgICAgbGV0IHJldCA9IHJlYWRfKGZpbGVuYW1lLCB0cnVlKTsKICAgICAgaWYgKCFyZXQuYnVmZmVyKSB7CiAgICAgICAgcmV0ID0gbmV3IFVpbnQ4QXJyYXkocmV0KTsKICAgICAgfQogICAgICByZXR1cm4gcmV0OwogICAgfTsKICAgIHJlYWRBc3luYyA9IChmaWxlbmFtZSwgb25sb2FkLCBvbmVycm9yKSA9PiB7CiAgICAgIGZpbGVuYW1lID0gbm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTsKICAgICAgZnMucmVhZEZpbGUoZmlsZW5hbWUsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHsKICAgICAgICBpZiAoZXJyKSBvbmVycm9yKGVycik7CiAgICAgICAgZWxzZSBvbmxvYWQoZGF0YS5idWZmZXIpOwogICAgICB9KTsKICAgIH07CiAgICBpZiAocHJvY2Vzc1siYXJndiJdLmxlbmd0aCA+IDEpIHsKICAgICAgdGhpc1Byb2dyYW0gPSBwcm9jZXNzWyJhcmd2Il1bMV0ucmVwbGFjZSgvXFwvZywgIi8iKTsKICAgIH0KICAgIGFyZ3VtZW50c18gPSBwcm9jZXNzWyJhcmd2Il0uc2xpY2UoMik7CiAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgbW9kdWxlWyJleHBvcnRzIl0gPSBNb2R1bGU7CiAgICB9CiAgICBwcm9jZXNzWyJvbiJdKCJ1bmNhdWdodEV4Y2VwdGlvbiIsIGZ1bmN0aW9uIChleCkgewogICAgICBpZiAoIShleCBpbnN0YW5jZW9mIEV4aXRTdGF0dXMpKSB7CiAgICAgICAgdGhyb3cgZXg7CiAgICAgIH0KICAgIH0pOwogICAgcHJvY2Vzc1sib24iXSgidW5oYW5kbGVkUmVqZWN0aW9uIiwgZnVuY3Rpb24gKHJlYXNvbikgewogICAgICB0aHJvdyByZWFzb247CiAgICB9KTsKICAgIHF1aXRfID0gKHN0YXR1cywgdG9UaHJvdykgPT4gewogICAgICBpZiAoa2VlcFJ1bnRpbWVBbGl2ZSgpKSB7CiAgICAgICAgcHJvY2Vzc1siZXhpdENvZGUiXSA9IHN0YXR1czsKICAgICAgICB0aHJvdyB0b1Rocm93OwogICAgICB9CiAgICAgIGxvZ0V4Y2VwdGlvbk9uRXhpdCh0b1Rocm93KTsKICAgICAgcHJvY2Vzc1siZXhpdCJdKHN0YXR1cyk7CiAgICB9OwogICAgTW9kdWxlWyJpbnNwZWN0Il0gPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAiW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF0iOwogICAgfTsKICB9IGVsc2UgaWYgKEVOVklST05NRU5UX0lTX1dFQiB8fCBFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHsKICAgIGlmIChFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHsKICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gc2VsZi5sb2NhdGlvbi5ocmVmOwogICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpIHsKICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7CiAgICB9CiAgICBpZiAoc2NyaXB0RGlyZWN0b3J5LmluZGV4T2YoImJsb2I6IikgIT09IDApIHsKICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gc2NyaXB0RGlyZWN0b3J5LnN1YnN0cigKICAgICAgICAwLAogICAgICAgIHNjcmlwdERpcmVjdG9yeS5yZXBsYWNlKC9bPyNdLiovLCAiIikubGFzdEluZGV4T2YoIi8iKSArIDEsCiAgICAgICk7CiAgICB9IGVsc2UgewogICAgICBzY3JpcHREaXJlY3RvcnkgPSAiIjsKICAgIH0KICAgIHsKICAgICAgcmVhZF8gPSAodXJsKSA9PiB7CiAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsKICAgICAgfTsKICAgICAgaWYgKEVOVklST05NRU5UX0lTX1dPUktFUikgewogICAgICAgIHJlYWRCaW5hcnkgPSAodXJsKSA9PiB7CiAgICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgICB4aHIub3BlbigiR0VUIiwgdXJsLCBmYWxzZSk7CiAgICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHhoci5yZXNwb25zZSk7CiAgICAgICAgfTsKICAgICAgfQogICAgICByZWFkQXN5bmMgPSAodXJsLCBvbmxvYWQsIG9uZXJyb3IpID0+IHsKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICJhcnJheWJ1ZmZlciI7CiAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+IHsKICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09IDIwMCB8fCAoeGhyLnN0YXR1cyA9PSAwICYmIHhoci5yZXNwb25zZSkpIHsKICAgICAgICAgICAgb25sb2FkKHhoci5yZXNwb25zZSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIG9uZXJyb3IoKTsKICAgICAgICB9OwogICAgICAgIHhoci5vbmVycm9yID0gb25lcnJvcjsKICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgfTsKICAgIH0KICAgIHNldFdpbmRvd1RpdGxlID0gKHRpdGxlKSA9PiAoZG9jdW1lbnQudGl0bGUgPSB0aXRsZSk7CiAgfSBlbHNlIHsKICB9CiAgbGV0IG91dCA9IE1vZHVsZVsicHJpbnQiXSB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpOwogIHZhciBlcnIgPSBNb2R1bGVbInByaW50RXJyIl0gfHwgY29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7CiAgT2JqZWN0LmFzc2lnbihNb2R1bGUsIG1vZHVsZU92ZXJyaWRlcyk7CiAgbW9kdWxlT3ZlcnJpZGVzID0gbnVsbDsKICBpZiAoTW9kdWxlWyJhcmd1bWVudHMiXSkgYXJndW1lbnRzXyA9IE1vZHVsZVsiYXJndW1lbnRzIl07CiAgaWYgKE1vZHVsZVsidGhpc1Byb2dyYW0iXSkgdGhpc1Byb2dyYW0gPSBNb2R1bGVbInRoaXNQcm9ncmFtIl07CiAgaWYgKE1vZHVsZVsicXVpdCJdKSBxdWl0XyA9IE1vZHVsZVsicXVpdCJdOwogIGxldCB3YXNtQmluYXJ5OwogIGlmIChNb2R1bGVbIndhc21CaW5hcnkiXSkgd2FzbUJpbmFyeSA9IE1vZHVsZVsid2FzbUJpbmFyeSJdOwogIGxldCBub0V4aXRSdW50aW1lID0gTW9kdWxlWyJub0V4aXRSdW50aW1lIl0gfHwgdHJ1ZTsKICBpZiAodHlwZW9mIFdlYkFzc2VtYmx5ICE9PSAib2JqZWN0IikgewogICAgYWJvcnQoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTsKICB9CiAgbGV0IHdhc21NZW1vcnk7CiAgbGV0IEFCT1JUID0gZmFsc2U7CiAgbGV0IEVYSVRTVEFUVVM7CiAgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgdGV4dCkgewogICAgaWYgKCFjb25kaXRpb24pIHsKICAgICAgYWJvcnQodGV4dCk7CiAgICB9CiAgfQogIGxldCBVVEY4RGVjb2RlciA9IHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gInVuZGVmaW5lZCIgPyBuZXcgVGV4dERlY29kZXIoInV0ZjgiKSA6IHVuZGVmaW5lZDsKICBmdW5jdGlvbiBVVEY4QXJyYXlUb1N0cmluZyhoZWFwT3JBcnJheSwgaWR4LCBtYXhCeXRlc1RvUmVhZCkgewogICAgbGV0IGVuZElkeCA9IGlkeCArIG1heEJ5dGVzVG9SZWFkOwogICAgbGV0IGVuZFB0ciA9IGlkeDsKICAgIHdoaWxlIChoZWFwT3JBcnJheVtlbmRQdHJdICYmICEoZW5kUHRyID49IGVuZElkeCkpICsrZW5kUHRyOwogICAgaWYgKGVuZFB0ciAtIGlkeCA+IDE2ICYmIGhlYXBPckFycmF5LmJ1ZmZlciAmJiBVVEY4RGVjb2RlcikgewogICAgICByZXR1cm4gVVRGOERlY29kZXIuZGVjb2RlKGhlYXBPckFycmF5LnN1YmFycmF5KGlkeCwgZW5kUHRyKSk7CiAgICB9CiAgICBsZXQgc3RyID0gIiI7CiAgICB3aGlsZSAoaWR4IDwgZW5kUHRyKSB7CiAgICAgIGxldCB1MCA9IGhlYXBPckFycmF5W2lkeCsrXTsKICAgICAgaWYgKCEodTAgJiAxMjgpKSB7CiAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodTApOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGxldCB1MSA9IGhlYXBPckFycmF5W2lkeCsrXSAmIDYzOwogICAgICBpZiAoKHUwICYgMjI0KSA9PSAxOTIpIHsKICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKHUwICYgMzEpIDw8IDYpIHwgdTEpOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGxldCB1MiA9IGhlYXBPckFycmF5W2lkeCsrXSAmIDYzOwogICAgICBpZiAoKHUwICYgMjQwKSA9PSAyMjQpIHsKICAgICAgICB1MCA9ICgodTAgJiAxNSkgPDwgMTIpIHwgKHUxIDw8IDYpIHwgdTI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdTAgPSAoKHUwICYgNykgPDwgMTgpIHwgKHUxIDw8IDEyKSB8ICh1MiA8PCA2KSB8IChoZWFwT3JBcnJheVtpZHgrK10gJiA2Myk7CiAgICAgIH0KICAgICAgaWYgKHUwIDwgNjU1MzYpIHsKICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh1MCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbGV0IGNoID0gdTAgLSA2NTUzNjsKICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiB8IChjaCA+PiAxMCksIDU2MzIwIHwgKGNoICYgMTAyMykpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gc3RyOwogIH0KICBmdW5jdGlvbiBVVEY4VG9TdHJpbmcocHRyLCBtYXhCeXRlc1RvUmVhZCkgewogICAgcmV0dXJuIHB0ciA/IFVURjhBcnJheVRvU3RyaW5nKEhFQVBVOCwgcHRyLCBtYXhCeXRlc1RvUmVhZCkgOiAiIjsKICB9CiAgZnVuY3Rpb24gc3RyaW5nVG9VVEY4QXJyYXkoc3RyLCBoZWFwLCBvdXRJZHgsIG1heEJ5dGVzVG9Xcml0ZSkgewogICAgaWYgKCEobWF4Qnl0ZXNUb1dyaXRlID4gMCkpIHJldHVybiAwOwogICAgbGV0IHN0YXJ0SWR4ID0gb3V0SWR4OwogICAgbGV0IGVuZElkeCA9IG91dElkeCArIG1heEJ5dGVzVG9Xcml0ZSAtIDE7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkgewogICAgICBsZXQgdSA9IHN0ci5jaGFyQ29kZUF0KGkpOwogICAgICBpZiAodSA+PSA1NTI5NiAmJiB1IDw9IDU3MzQzKSB7CiAgICAgICAgbGV0IHUxID0gc3RyLmNoYXJDb2RlQXQoKytpKTsKICAgICAgICB1ID0gKDY1NTM2ICsgKCh1ICYgMTAyMykgPDwgMTApKSB8ICh1MSAmIDEwMjMpOwogICAgICB9CiAgICAgIGlmICh1IDw9IDEyNykgewogICAgICAgIGlmIChvdXRJZHggPj0gZW5kSWR4KSBicmVhazsKICAgICAgICBoZWFwW291dElkeCsrXSA9IHU7CiAgICAgIH0gZWxzZSBpZiAodSA8PSAyMDQ3KSB7CiAgICAgICAgaWYgKG91dElkeCArIDEgPj0gZW5kSWR4KSBicmVhazsKICAgICAgICBoZWFwW291dElkeCsrXSA9IDE5MiB8ICh1ID4+IDYpOwogICAgICAgIGhlYXBbb3V0SWR4KytdID0gMTI4IHwgKHUgJiA2Myk7CiAgICAgIH0gZWxzZSBpZiAodSA8PSA2NTUzNSkgewogICAgICAgIGlmIChvdXRJZHggKyAyID49IGVuZElkeCkgYnJlYWs7CiAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAyMjQgfCAodSA+PiAxMik7CiAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAxMjggfCAoKHUgPj4gNikgJiA2Myk7CiAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAxMjggfCAodSAmIDYzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAob3V0SWR4ICsgMyA+PSBlbmRJZHgpIGJyZWFrOwogICAgICAgIGhlYXBbb3V0SWR4KytdID0gMjQwIHwgKHUgPj4gMTgpOwogICAgICAgIGhlYXBbb3V0SWR4KytdID0gMTI4IHwgKCh1ID4+IDEyKSAmIDYzKTsKICAgICAgICBoZWFwW291dElkeCsrXSA9IDEyOCB8ICgodSA+PiA2KSAmIDYzKTsKICAgICAgICBoZWFwW291dElkeCsrXSA9IDEyOCB8ICh1ICYgNjMpOwogICAgICB9CiAgICB9CiAgICBoZWFwW291dElkeF0gPSAwOwogICAgcmV0dXJuIG91dElkeCAtIHN0YXJ0SWR4OwogIH0KICBmdW5jdGlvbiBsZW5ndGhCeXRlc1VURjgoc3RyKSB7CiAgICBsZXQgbGVuID0gMDsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgICAgIGxldCBjID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgICAgIGlmIChjIDw9IDEyNykgewogICAgICAgIGxlbisrOwogICAgICB9IGVsc2UgaWYgKGMgPD0gMjA0NykgewogICAgICAgIGxlbiArPSAyOwogICAgICB9IGVsc2UgaWYgKGMgPj0gNTUyOTYgJiYgYyA8PSA1NzM0MykgewogICAgICAgIGxlbiArPSA0OwogICAgICAgICsraTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZW4gKz0gMzsKICAgICAgfQogICAgfQogICAgcmV0dXJuIGxlbjsKICB9CiAgbGV0IGJ1ZmZlciwgSEVBUDgsIEhFQVBVOCwgSEVBUDE2LCBIRUFQVTE2LCBIRUFQMzIsIEhFQVBVMzIsIEhFQVBGMzIsIEhFQVBGNjQ7CiAgZnVuY3Rpb24gdXBkYXRlR2xvYmFsQnVmZmVyQW5kVmlld3MoYnVmKSB7CiAgICBidWZmZXIgPSBidWY7CiAgICBNb2R1bGVbIkhFQVA4Il0gPSBIRUFQOCA9IG5ldyBJbnQ4QXJyYXkoYnVmKTsKICAgIE1vZHVsZVsiSEVBUDE2Il0gPSBIRUFQMTYgPSBuZXcgSW50MTZBcnJheShidWYpOwogICAgTW9kdWxlWyJIRUFQMzIiXSA9IEhFQVAzMiA9IG5ldyBJbnQzMkFycmF5KGJ1Zik7CiAgICBNb2R1bGVbIkhFQVBVOCJdID0gSEVBUFU4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTsKICAgIE1vZHVsZVsiSEVBUFUxNiJdID0gSEVBUFUxNiA9IG5ldyBVaW50MTZBcnJheShidWYpOwogICAgTW9kdWxlWyJIRUFQVTMyIl0gPSBIRUFQVTMyID0gbmV3IFVpbnQzMkFycmF5KGJ1Zik7CiAgICBNb2R1bGVbIkhFQVBGMzIiXSA9IEhFQVBGMzIgPSBuZXcgRmxvYXQzMkFycmF5KGJ1Zik7CiAgICBNb2R1bGVbIkhFQVBGNjQiXSA9IEhFQVBGNjQgPSBuZXcgRmxvYXQ2NEFycmF5KGJ1Zik7CiAgfQogIGxldCBJTklUSUFMX01FTU9SWSA9IE1vZHVsZVsiSU5JVElBTF9NRU1PUlkiXSB8fCAxNjc3NzIxNjsKICBsZXQgd2FzbVRhYmxlOwogIGxldCBfX0FUUFJFUlVOX18gPSBbXTsKICBsZXQgX19BVElOSVRfXyA9IFtdOwogIGxldCBfX0FUUE9TVFJVTl9fID0gW107CiAgbGV0IHJ1bnRpbWVJbml0aWFsaXplZCA9IGZhbHNlOwogIGZ1bmN0aW9uIGtlZXBSdW50aW1lQWxpdmUoKSB7CiAgICByZXR1cm4gbm9FeGl0UnVudGltZTsKICB9CiAgZnVuY3Rpb24gcHJlUnVuKCkgewogICAgaWYgKE1vZHVsZVsicHJlUnVuIl0pIHsKICAgICAgaWYgKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdID09PSAiZnVuY3Rpb24iKSBNb2R1bGVbInByZVJ1biJdID0gW01vZHVsZVsicHJlUnVuIl1dOwogICAgICB3aGlsZSAoTW9kdWxlWyJwcmVSdW4iXS5sZW5ndGgpIHsKICAgICAgICBhZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpOwogICAgICB9CiAgICB9CiAgICBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pOwogIH0KICBmdW5jdGlvbiBpbml0UnVudGltZSgpIHsKICAgIHJ1bnRpbWVJbml0aWFsaXplZCA9IHRydWU7CiAgICBpZiAoIU1vZHVsZVsibm9GU0luaXQiXSAmJiAhRlMuaW5pdC5pbml0aWFsaXplZCkgRlMuaW5pdCgpOwogICAgRlMuaWdub3JlUGVybWlzc2lvbnMgPSBmYWxzZTsKICAgIFRUWS5pbml0KCk7CiAgICBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKTsKICB9CiAgZnVuY3Rpb24gcG9zdFJ1bigpIHsKICAgIGlmIChNb2R1bGVbInBvc3RSdW4iXSkgewogICAgICBpZiAodHlwZW9mIE1vZHVsZVsicG9zdFJ1biJdID09PSAiZnVuY3Rpb24iKSBNb2R1bGVbInBvc3RSdW4iXSA9IFtNb2R1bGVbInBvc3RSdW4iXV07CiAgICAgIHdoaWxlIChNb2R1bGVbInBvc3RSdW4iXS5sZW5ndGgpIHsKICAgICAgICBhZGRPblBvc3RSdW4oTW9kdWxlWyJwb3N0UnVuIl0uc2hpZnQoKSk7CiAgICAgIH0KICAgIH0KICAgIGNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQT1NUUlVOX18pOwogIH0KICBmdW5jdGlvbiBhZGRPblByZVJ1bihjYikgewogICAgX19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpOwogIH0KICBmdW5jdGlvbiBhZGRPbkluaXQoY2IpIHsKICAgIF9fQVRJTklUX18udW5zaGlmdChjYik7CiAgfQogIGZ1bmN0aW9uIGFkZE9uUG9zdFJ1bihjYikgewogICAgX19BVFBPU1RSVU5fXy51bnNoaWZ0KGNiKTsKICB9CiAgbGV0IHJ1bkRlcGVuZGVuY2llcyA9IDA7CiAgbGV0IHJ1bkRlcGVuZGVuY3lXYXRjaGVyID0gbnVsbDsKICBsZXQgZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gbnVsbDsKICBmdW5jdGlvbiBnZXRVbmlxdWVSdW5EZXBlbmRlbmN5KGlkKSB7CiAgICByZXR1cm4gaWQ7CiAgfQogIGZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koaWQpIHsKICAgIHJ1bkRlcGVuZGVuY2llcysrOwogICAgaWYgKE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKSB7CiAgICAgIE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKHJ1bkRlcGVuZGVuY2llcyk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIHJlbW92ZVJ1bkRlcGVuZGVuY3koaWQpIHsKICAgIHJ1bkRlcGVuZGVuY2llcy0tOwogICAgaWYgKE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKSB7CiAgICAgIE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKHJ1bkRlcGVuZGVuY2llcyk7CiAgICB9CiAgICBpZiAocnVuRGVwZW5kZW5jaWVzID09IDApIHsKICAgICAgaWYgKHJ1bkRlcGVuZGVuY3lXYXRjaGVyICE9PSBudWxsKSB7CiAgICAgICAgY2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7CiAgICAgICAgcnVuRGVwZW5kZW5jeVdhdGNoZXIgPSBudWxsOwogICAgICB9CiAgICAgIGlmIChkZXBlbmRlbmNpZXNGdWxmaWxsZWQpIHsKICAgICAgICBsZXQgY2FsbGJhY2sgPSBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ7CiAgICAgICAgZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gbnVsbDsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CiAgfQogIGZ1bmN0aW9uIGFib3J0KHdoYXQpIHsKICAgIHsKICAgICAgaWYgKE1vZHVsZVsib25BYm9ydCJdKSB7CiAgICAgICAgTW9kdWxlWyJvbkFib3J0Il0od2hhdCk7CiAgICAgIH0KICAgIH0KICAgIHdoYXQgPSAiQWJvcnRlZCgiICsgd2hhdCArICIpIjsKICAgIGVycih3aGF0KTsKICAgIEFCT1JUID0gdHJ1ZTsKICAgIEVYSVRTVEFUVVMgPSAxOwogICAgd2hhdCArPSAiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7CiAgICBsZXQgZSA9IG5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3Iod2hhdCk7CiAgICB0aHJvdyBlOwogIH0KICBsZXQgZGF0YVVSSVByZWZpeCA9ICJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIjsKICBmdW5jdGlvbiBpc0RhdGFVUkkoZmlsZW5hbWUpIHsKICAgIHJldHVybiBmaWxlbmFtZS5zdGFydHNXaXRoKGRhdGFVUklQcmVmaXgpOwogIH0KICBmdW5jdGlvbiBpc0ZpbGVVUkkoZmlsZW5hbWUpIHsKICAgIHJldHVybiBmaWxlbmFtZS5zdGFydHNXaXRoKCJmaWxlOi8vIik7CiAgfQogIGxldCB3YXNtQmluYXJ5RmlsZTsKICB3YXNtQmluYXJ5RmlsZSA9ICJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCOXdad1lBRi9BWDlnQW45L0FYOWdBbjkvQUdBQmZ3QmdBMzkvZndGL1lBTi9mMzhBWUFSL2YzOS9BR0FFZjM5L2Z3Ri9ZQVYvZjM5L2Z3QmdCWDkvZjM5L0FYOWdCbjkvZjM5L2Z3QmdCbjkvZjM5L2Z3Ri9ZQWgvZjM5L2YzOS9md0YvWUFkL2YzOS9mMzkvQVg5Z0IzOS9mMzkvZjM4QVlBRjlBWDFnQ0g5L2YzOS9mMzkvQUdBQUFHQUZmMzkvZlgwQVlBRjhBWHhnQW45L0FYMWdCWDkrZm41K0FHQUNmMzhCZm1BQmZ3RjlZQVYvZjM5L2ZnRi9ZQXAvZjM5L2YzOS9mMzkvQVg5Z0FYMEJmMkFKZjM5L2YzOS9mMzkvQVg5Z0MzOS9mMzkvZjM5L2YzOS9BWDlnQTM5L2ZRQmdBbjkvQVh4Z0FBRi9ZQVYvZjM5OGZBQmdBbjkrQUdBR2YzOS9mMzUvQVg5Z0RIOS9mMzkvZjM5L2YzOS9md0YvWUFaL2YzMTlmWDBBWUFWL2YzOS9mQUYvWUFGL0FYNWdCSDkrZm44QVlBbC9mMzkvZjM5L2YzOEFZQXAvZjM5L2YzOS9mMzkvQUdBRmYzOStmMzhBWUFOL2ZuOEJmbUFDZlgwQmZXQUZmMzkvZjMwQVlBUi9mMzkrQUdBQmZBRjlZQVYvZjM5K2ZnQmdBbjk4QUdBQmZBRi9ZQUo4ZndGOFlBUi9mWDk5QUdBTWYzOS9mWDE5ZlgxOWZYMTlBR0FEZkh4L0FYeGdBbng4QVh4Z0IzOS9mMzE5ZlgwQVlBUi9mMzk5QUdBQ2YzMEFZQU4vZjM4QmZtQURmMzk4QUdBR2YzOThmSHg4QUdBRGYzOStBR0FQZjM5L2YzOS9mMzkvZjM5L2YzOS9BR0FFZjM5L2Z3RitZQUo5ZndGOVlBcC9mMzE5ZlgxOWZYMTlBR0FJZjM5OWZYMTlmWDBBWUFkL2YzOS9mMzUrQVg5Z0JuOS9mMzkrZmdGL1lBRi9BWHhnQlg5L2YzOThBR0FEZjMxL0FHQURmMzkrQVg5Z0FuOStBWDlnQTM5OGZ3QmdCSDUrZm40QmYyQUVmM3gvZkFCZ0JIOStmMzRBWUFOL2ZuOEFZQUorZndGL1lBSjhmd0Y5WUF4L2YzOThmSHg4Zkh4OGZId0FZQWQvZjM5OGZIeDhBR0FHZjM5L2YzNS9BR0FVZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM4QmYyQUJmZ0YvWUFSL2YzOThBR0FFZjM5L2ZnRi9ZQVIvZjM5K0FYNWdBbjEvQVg5Z0FueC9BWDlnQW41K0FYeGdCbjkvZjM5OGZ3Ri9ZQUovZkFGL1lBSi9mUUYvWUFSL2YzNS9BR0FFZjM5OWZ3QmdCWDk5ZjMxL0FHQUNmWDBCZjJBRGZYOTlBWDlnQ0g5L2YzOTlmWDkrQUdBRGYzOS9BWHhnQTM5L2Z3RjlZQUovZlFGOVlBcC9mM3g4Zkh4OGZIeDhBR0FDZm40QmZXQURmbjUrQVg5Z0FBRjlZQWgvZjN4OGZIeDhmQUJnQVh3QVlBQUJmQUpWRGdGaEFXRUFCZ0ZoQVdJQUVRRmhBV01BQ1FGaEFXUUFBd0ZoQVdVQUJRRmhBV1lBQUFGaEFXY0FBQUZoQVdnQUJ3RmhBV2tBQUFGaEFXb0FCd0ZoQVdzQUNRRmhBV3dBQVFGaEFXMEFBUUZoQVc0QUFnT1RLNUVyQVFBR0F3RURBUUFEQ1FNQkFBRURBQU1EQVFFQkF3SUJCQVVDQUFVQUFBVUNBUUFEQUFFWEJRSUZBUUlFQUVZQUFSY0ZBUUlDQXdFUEFBRUFBQTRBQVFVREFRTUFBZ0VEQVFBQ0FBQUJBQVVEQWdBQUFDWURCUUFBQVFRQ0xRSUFCaEVCQWkxSEFBSUNBUUVFQUFBQkJBSUFBQUFGQUFBRUJRQUdBUTREQWdRQkJBTUJCUUlCQXdVQkFRRUJBQUVCQWdFSkFRSUJBZ0FCQlFNQ0F3RUFCZ0VEQVFZQUFnQUFBUUFBQlFFQUFnRUFBQjhCQWdJRkFSVUJBQUVKQUFzQ0FBSUJBUUlFQkFVRkFRTVNFaUFBQlFFQ0FBVUFCQUFCQVFRREFRQUZBUUFBQVFFQkNRQUVBUXNBQWdVQUVRVXVBUW9GQWdrQkFRRUNBUWNCQVFNQ0F3WUFBUU1BQVFFREJBRUVBZ0lBQXdJQkJBRUFBUUFEQVFnSEFBRURBUUlFQkFRVkFRQUZBUUVCQXdVRUFBQUJCQVVCQkFVSEFBUUFCQVFHQkFFSUp3RUVCd0FDQVFBQUJRSUZBUUVCQXdNSEFnSUNBUUlCQVFFQUFBQUFBd1VCQVFJQUFBRUFBUUVEQXdBR0FBQUZBQUlFQkFFQkFRVUFBQUlEQUFFVkJBRUZBUUlDQUFBQkFnUUZBQVVEQXdNQUFRRUJCQUlKQ1FFQUFnc0NCQUFDQXdFQ0F3RUVBZ1FBQndNQkVRUUFCQU1IQlFVQkFBSUFBd01CQkFBQUFBRUFBUU1CQVFBQUFBQUVFaElnQWdBQ0FnSUJBUU1DQVFFRUFBQUJCQVFBQlFBQUFBQUNBQUVEQUFFQUFBRUFBUUlBQUVnU0VpQUJJUzh2QndJREJ3RUJBZ0VBQVFJQkFBRURCd1VCQUFJQ0FRTkpBUVVBQWdNQ0FnQUFBZ0FFQVFJRkFRTUZBd0lGQUFBQUFRQUJDUWtIQkFFQUFBSUdCVW93TVRJRkNRc0RBQU1FQUFnQ0FBRUNCUU1IQUFZSEFRSUhBUUlDQXdVQkJBSUhCd0VIQXdNRkJnSUNBUVFCQlFJR0NRSUJEQXdHQUFBQUFETUhBUVFGQWdBQkF3RUJBQUlDQWdFQkFnRUJBd2NFQUFJQ0FnUUFEQUFBQWdNQ0FnSUNBd1VCQkFRQkJRRUZBZ0FBQWdNQUFnUUZBUUFDQWdJQkFBQUdBZ01BQkFFRkFBRUVCUUlKQVFBREFnVUFDUVVCQlFBQUFRQURCUU1BRFFFTkFRY0JCQVVCQVFJQkF3RUhBZ01HQVFBRkFBVUFBUVVDQWdFQ0FnQUxDd0FGQlFFQUFFc0JEQVVFSHdNQU1Bc0FBZ0FBQUFJQ0FBTUZJUUFuVEFFQUFRTUFBUUlCQUFFQ0JBY0JCZ1FDQlFBQUJRSURBQWdBQUFBQUF3RUlCQUlBQWdFRkFnVUJBd0FFQVFFQUFBQUJBd2NCQUFFQkFRQUJBZ0VCQUFNQUFBQUNBUUVGQlFJREF3STBBVFJOVGdJQVR3RUhJZ1FISVFFQ0JBTUJBZ1FGQVFBQUdRRUFHUUVCQUFJQUJBQUNBZ0FBQUFFRVVGRUNEeG9IQVFFQkFRUUhBUUFCQUFjSkJ3SUZBZ0VES0FBQkFBTUNBUTBBQkFJQ0FRVUlBd0FCQkFBTkJBQURBUUFBQUFVQUFBQUhBd0VBQVFBQkJRRUZBZ2NBQkFFRUF3RUNBZ0VIQkFBSEFRTUFBQVFDQVFFSUJRTURBQUFCQlFFQkF3RUZBd0FBQXdVQ0FBQUJBZ0VGQXdBMU5WSUhCQTRIQ3dRRUFCd01FQWtDQlFFRkF3RVBFelkzRHhNRUFCTUlBZ0VDQndRRUJBQUlBUUVIQVFJSkFRTUFBZ0FBQUFBQUF3Y0RBd1FCQXdjQkF3TUJCZ0lEQUFBQUFBRUFBQUVEQWdBQUNRRUFBQUFLQUFZRkFRUUZCQWtJQ2dvRUFRWUpHeHNDQXdZR0FBQUFBQUVDQWdJSEF3TUVCd0lDQVFJREFnTUJCQUlMQXdNQkF3QUFBd0VCQVFBQkJRWUNBZ0VBQWdFQ0FRTUJBUUFCQmdBQUF3Y0FBUUFDQVFJQ0FRTURBZ1FDQWdNSUFnSUVBZ0lRQXdJQUJnSUFPRGhUQXdNQUFBQUJBeG9hQlF3TEJ3UlVDZ1lIQndVRUJ3UUVDZ1VCQVFVR0JoSURBQUFBQWdJQUNnSUNBQUFFQmdRQ0FBRU5BZ0VCRFFBRUFBQUFBQUFBQUFBQUJ3RU1BQUFBQUFJQUFRb0FCd2NURHc4QUFnRUhCUUVBQlFBQUJBRlZBUVFIQUFFQkFRTUJBUXdIQ0FFQkFRQU1DUUVIQkFNQ0FnQUFBd1VCQVFVQkFnRUhBZ1lDQUFBQ0FRQUJBZ1VDQmlJREJBSUVCZ1VDQUFNQkJBQUZBd0lGQmdJQ0F3QURCUUlJQVEwSEFRSUJBZ1VFQWdJRUNRUUhCd1VFQkFRQkFRQUVBQUVFQlFVREFRVUJBd01IQUFBREFRSUJCd0FFQndFRUFnd0NCUUVDQXdJREFRa0hBQUVCQUFNQUNRRUVCd2NDQkFFRUFBRUFBUUVCRFFJRUFRQURBZ01CQUFBREF3QUhBQUFCQWdBSEFRQUFBQUFCQlFJQUFRQUJBd0FDQWdFREF3QUZCQVVGQkFZQkFnVUZBZ0VCQlFzQUFBRUFBZ1VGQlFFQkF3QUdBQUFDQXdFRkFRSURBQTBDQWdZQ0FRRUNBZ2NDRFFVQ0JRSURBZ1VCQVFZQ0NRRUZWZ0FGQlRrNVZ6b0FDZ1lHQVFRTERRUUdDZ1pZQlFFY0NBY0dBZ2tFQkFFTEFBNEJCUVVHQlFZQkFSRUxBQXNCQUFBQUFBQUFBQUFTSUFBcEFBVVFDZ01KQkFBRUNnSUFBZ0FBQkNNSUJDTUlPd0FBQUFBS0NBQUNBZ01BQUFjQ0JBb0RBd01CTVRvREFRTWhCQVVKQndVQldRWUFBQVFBQ0FReldsc1REeE5jRlFRUER4TVhGeE1DQWdjQkJBRUJBZ0lGQVFFQ0NRUUVYUUVFQUFJSkJ3RUFCUUFBQUFJQ0RnVUdCZ0VCQmdzSkJnTUNBZ0lGQVFJRkF3SUlBZ0lCQVFRTEFRTUxBd0lIQVFFREFnSUNBZ01EQUFJQ0FBTUFBQUFBQVFJREF3WUpDUWNGQkFRQUFRRUJBUWtDQVFFQ0F3QUNBQUVDQUFJQUN3QUNBZ0lDQWdZQkFnRUhBd0lHQ0NZWEFnSUJBQVFGQVFFQkFRTUFBQUFEQWdNRkFnRUNCd01BQXdVREFnSUFBd0lDQWdJQ0FnSUNBZ0FEQXdZQ0FnSUhCUUVIQVFZRUFRY0JBd1VDQlFBR0FRTUFFQkFPRUFZSEFSY0VBZ2NCQUFRR0JnSURCQVFCQUFVQ0FnRUhBUU1DQ1FFQkFnY0NBQUFBQUFBQ0JBY0pBUVFIQVFRQkJ3UUVBUUVBQWdJRUFnSUFDUUlEQWdVREFBQUFDUUlDQWdNQkFRTUVCd2NBQUFVQkJnSUFBQXdDQ0FNQ0FnSUNBZ0lDQkFVQ0FRSUNBZ0lBQlFFQUF4c2JBQTBDQWdJQ0FRSURCQUVKQUFJRkF3SUNBZ0lDQlFFQkFBSURCd0VBQmdNQ0FBRUFCUUVDQWdJREF3SURBZ01EQWdJREF3RURBZ1FCQWdNQ0FnQUZBZ01DQWdBQUF3SUNBQUFDQWd3Q0FnWUNBZ0VBQlFZQUJRQUFBQUVIQXdFRkRRY05BZ0FBQndVQkJRVUJBd0VDQWdJREF3SURBZ0FDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBQVlCQWdNQ0FnSUFDd0VBRFFZT0F3SUNBUUlGQWdRSEVRa0FBUUFBQWdRREF3QUFBQUlEQXdNREhSMDhBQUFFQkFBRUN3SUNBZ0FFQkFBRUFBSUVYZ0VBQkFvRkFBZGZDZ29GQ2dVS0JRNEdFQXNJQ2dVS0JRb0ZEZ2dPQmdvRkNnVUtCUW9GRGdZYUdoMEtDZ1VPQ0EwT0JnNEdDZ1VLQlFvR0NnVU9CZ0lGQ2dVUUJBZ0tCUW9GQ2dVS0JRb0ZDZ1VDQ2dVa0pEMEtCUW9GQ2dVS0JRRUtCUkFJQ2dVT0Jnb0ZDZ1VLQlFJS0JRb0ZDZ1VGQ2dVT0JnNEdBQTRHRGdZRUFRRUJCUUlDUGdRT0JDTUdDQWdDQmdVRkJBRUZCUVFjQlFRTUJRY05BUVpnQkEwV0JRZ0dCZzRHQmlNR0JtRUlZZ3NMQVFFSEJ5SUxJZ3NPQVdOa0JBc0JDUVlIQncxbENRY0xEaGtNR1FrQ0FnWUdGQUVPQ0FZQkxnWVFCQVVFRGdFQkFBWUdBQUFBQUFVT0FBQUdBQU1BQlFFS0F3TUFBQUFBQUFBQUFBRUNCQVFBQVFvTUNRd01DQWtNREFBREFBTURBUkVmQXdNRUFRSUJBUUVCQVFFQkFRRUJBUUVCQVFJQ0FBQURDQVEvS1FRRVB5a0FBUUFBQWh3QkFBQUZBaHdDQUFJQ0NnSUNBQUlDQWdJQ0Nnb0lDZ1VLQ0FvS0NnNE9CUTRJQlE0S0JRc0NDZ1FHQldZRVowQUhDd2RBT3djQkJBZ0hBQUVBQUFRRUFBRUJCRDRCQXdFQkFBQUFBd0FEQlFNRkFnTU1BUUVGQ2dJQUFBRURBQUFESlFrQkF3QUNBUUFBQUFBQkFRb0RBQU1BQmlvZEJBQUFIUUlFQVFJQlBBRUZBQWtQRHpZV0JpY1ZBZzhQRHdBQUxFRUFRbWdQTERjUEtBa1BMRUlQRHc4UGFXcERGUTVyRlFCREQyeEJEMjF1YnlRQUFBQUFBQUFBQUFvQkNBTUJBU1FCQVFJOUJRRURCUUVEQWdjREFnY0JBZ0FBQWdZQ0JBQUJCUUFDQmdNQkFRRUJBQUFBQUFBQ0FBQUVBQUFFQUFFSkJBUUJBUVVKQVFVQUJBUUFCQUFFQlFFQkFnVUhBUVlDQXdjRkFBVUJBZ0VCQkFRQ0NnRUJBUUVCQVFBQUFBQUZBQUFDQUFBQUFBQUFBQUVFQUFFQ0FBRUFBQUVKQ1FJQUFBQUFBZ0FDQWdJTEFnRUpDUWtKQ1FrSkNRa0pDUWtKQ1FJSkNRa0pDUWtKQ1FrSkNRa0pCd2tKQ1FrSkNRa0pDUVVEQXdVRUJRVUFBZ0FEQXdFREJnZ0JBZ1VCQlFFRkFnRUNBQUFBQlFVR0FnTURBZ1VFRGdVRkFnTUNBd2NFQUFJQkJ3QUVBQVlEQUFFRkFBQUFBQWNKQkFRRkJRRUJCQVFiQ1FRQ0JBUUNBQUFDQUFFQUFRQUFCQWdDQlFVQ0FnSUFBd0lISHdnREFBSUNBUWNHQUFBQ0FnTURBZ0lFQkFBQ0FnQUZCd1FCQndFQ0FnSUNBZ0lGQUFVR0FBUUFCQWtDQVFVRkJBRUJBUUVBQVFBQUFBQUNBUUFNQUFFQkFnTURCUUlBQWdFRkF3SUJBd0lHQUFJQ0FnTUNBd0lDQXdZQ0FBUUNBZ0FGQlFNQUFnRUZBd01DQmdNREF3QUJBQVVDQUFrQUJBVUNCUU1DQWdNRkF3TUNBd0FGQXdNQ0FnVURNaG9BQXdFREFRRURBd0lBQUFFQkF3RUZBZ0lvQlFRR0F3SUNBd0lCQXdNQ0F3UURBd0lEQWdNQ0F3SUdCZ1VCQVFJQkJBWUJBUUVGQkFBQUJRRUNBZ0lCQlFjRUFnQUFBZ01BQUEwTEFBSUlBZ0FJQ0FZQUJRSUFBZ2NBRFFRSUFnUUNCQUlFQkFBREF3TUhCd0FGQVFFRUJBVUVBUUlIQWdRSEJBa0JDZ1FKQndZQ0FRUUFDUUFCQkFFRUJ3a0hCd0lFQVFjQkF3WUFBZ0lCQWdFQ0FnVUVBUUVEQkFJQ0FRQUNBQVFCQUFRQkFBUUJBUUlIQVFJREF3Y0FCQU1CQlFJQ0FRVUNBQUFIQUFNQ0FBQURBQUlGQVFVQkJnVUZCUUlDQWdZQkJnVUdCZ0VBQlFRQ0NRRURBUUVBQlFJRUJ3UUpCZ01BQ3drREJnNEJCQUFIQkFFREFBc0ZBUUlFQVFFQkF3TUNBUUVMQVFNQ0FnSUdCZ0lBQmdVQUNRc0hBd0lEQmdBQkF3TUJBd2NDQWdNQ0FnSURBZ0lDQlFZREJ3Y0pCd0VIQWdRRUFRRUJCQUlDQWdNREFBQUNBUUFDQUFJQUFnQUFBQUFBQUFBQ0FRSUNBZ0FBQkFNQ0FRQUNBZ0FDQUFBQUFRRUJBQUFCQVFFQUFBSURBQUlGQVFJQ0FnRUNBZ0lCQUFRRkFnSUJCUUFFQmdBQ0F3TURBd3dBQUFNRERRRUNBZ0lEQVFZREFBY0FBQnNEQVFFQkFBQUFEQU1BQWdBQkFRTUNBZ0lDQUFJRkFnSUNBQU1CQWdZRkFnQURBd1lFQmdFRUF3VUJEQUVHQmdRRUJBQUhBQUFDQXdNTkJnc0VDUU1BQVFNRkFBQUFDd0VBQXdBSEFBQURBZ1VGQUFJQUFBQUFCZ0lEQWdBREF3RUNBZ0lDQXdVQ0FnTUNBd0lGQWdJR0FBQUhCZ0lCQXdNREF3TURBZ0lDQXdNQ0F3SUNBZ0lCQXdNRkFRRUZBZ0lCQWdJQ0FBSUZCUUVDQlFJRUJRQUZBQUFEQUFJQ0FnSUNBZ0lEQUFRR0FBSUNBUUVERmhZQ0JBQUFBZ1FGQUFBQUFnSUNBd0lDQlFVQUF3VUZBQUlDQmdRSkFnWUJBZ01BQUFZQUFBQUFBQUFaQXdFREJRVURBQUFBQWdNbUJnSUdBQU1IQWdBREJRRUFBUUVBQVFBQkFBQUNCZ1FCQXdRQkJRRUFBUUFCQUFNR0JnY0pBUU1BQUFFQ0FnWUJBUVVEQVFZQkJ3QUZEUXNNQkFFSkF3TUhCUUFEQlFJQ0FBQUFBZ0lBQmdVRkFnSUNBZ01DQmdBRUFBQUNBZ1VGRFFNREJRRUNBZ0lDQXdJQkFnVUNBd01EQXdNQ0FRTUVCUUlGQXdNRUNRa0VDUUFMQVFzTkFRSUxDUXNKQWdrSkNRd0pDUXdCREFBWkN3QUFBUUVEQUFJRUF3WUNBZ0lHQVFNSkF3SUNBZ0VDQkFjSkFBUU5CQVVFQlFRRkJBVUVCUVFGQkFVRUJRUUZBUVFGQkFVRUJRUUZCQVVFQlFRRkJBVUVCQVFGQkFVR0JRUU9FQW9LQXdFREZCUVVBUUlBQVFJQUFRSUJBZ0VBRkJRVUFSNGVIZ0VCQWdFQ0FRQUFBZ0VBQVFnSUNBZ0lDQWdJQ0FFSUNBZ0lDQWdJQ0FnSUFRZ0lBQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0JDQWdJQ0FJSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdEQXdBQUFBQUtDZ2dJQmdZR0NBb0VFUWdHQ1FNR0NRZ0RBd01EQXdRQkJBRUFBd2tJQkFjQkJBRUVBUWNIQndRSUFBTURDUVFIQkFFRUFRTUpCQWNFQVFRQkJ3Y0hCQWtDQWdJQ0F3TURBd0FEQUFnREFBTUFBQUFBQXdNSUF3TUFBd0FEQUFNQUFBQUFDQUFKQ0FBSkRBd0RBQW9LQzBRTFJBME5EUTBJRFEwTUN3c0xDd3NNQ0FzTEN3c0xDVVVsR0FrWUNRa0pSU1VZQ1JnSkNRc0xDd3NMQ3dzSUN3c0xDd3NMQ3dzTENBc0RDQXNFQmdrSUJBWUpDQWdFQVFBQUFnRUVBZ0VBQUFJQkJBZ0NBd01BQXdBREFBWURLZ0VCQUFRQUJBTUFBd0FFQUFRREF3QXJCQVFyQkFFQ0FBRUNBQVFDQUFRQ0FBUUNBQU1FQWdBREJBSUFBd1FDQUFNRUFnQURCQUlBQXdRQ0FBTUVBZ0FEQWdJQUFnQUJEUVFEQXdJQUF3RUNBQUVDQUFJQUFnQUNBZ0FCQWdBQkFnQUJBZ0FCQWdBQkFnQUJBZ0FCQWdBRkJnRUNBQVFDQUFNRUFnQURCQUlBQXdRQ0FBTUVBZ0FEQWdBREFnRUFBd1FDQUFNRUFnQUVBZ0FFQWdBSEFnQUVBZ0FFQWdFQUJBSUFBd0lDQUFjQ0FBUUNBQWNDQUFRQ0FBSUFBZ0FCQWdBQkFnQUNBQUVDQUFJQUFnQUNBZ0FCQWdBQkFnQUJBZ0FCQWdBSEFnQUVBZ0FCQWdBQkFnQUJBZ0FGQWdBQ0FBSUFBZ0FDQUFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBZ0FEQWdBREFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRTUNBQUVDQUFJQUF3SUFBd0lBQXdJQUF3SUFBd0lBQXdJQUFnQUNBQUlBQWdBQ0FBTUNBQUlBQWdBQ0FBTUJBZ0FCQWdBQ0FBTUNBQU1DQUFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUVDQUFFREF3SUFBd0lBQWdBQ0FBSUFBd0lBQXdJQUF3SUFBd3dEQkFJQUFnQUJBUUlDQUFJQUFRSUFBZ0FDQUFFQ0FBSUFBZ0FDQUFFQ0FBSUFBZ0FCQWdBQkFnQUJBZ0FDQUFFQ0FBSUFBZ0FGQWdBQkJRSUFBUTBJQWdBREF3TUFBd01EQkFRQ0JBSUVBZ1FFQWdRQ0JBUUNCQVFDQkFJRUJBSUVBZ1FFQWdRRUJBSUVCQUlFQUFFQ0FnQUNCQUlFQWdRQ0JBSUVBZ1FDQkFJRUFnTUVBZ1FFQUFFQkFnQUFBUUlDQUFRQUFRSUFBQUVDQUFBQUFRSUFBQUVDQUFBQUFRSUNBQUFBQUFFQ0FnQUJBQUVGQWdBQUFRUUJBZ0FHQUFFQkFnQUJBQUFBQUFBQUFBQUFBQU1BQVFJQkFRMEFBUUFCQWdBQUFRRURBZ0FEQlFNREFBQUFBUUVEQXdNREJBUUVBZ0FCQWdBQ0FnQURBd01EQXdnQ0FBRUJBZ01EQWdJQUFnQUNBZ0FCQWdNQ0FBTUJBd0lBQWdJQUFnSUFBZ0lBQVFJQUFnSUFBZ0FDQUFFQ0FBTUNBZ0FDQWdBQ0FBSUNBQUVCQXdJQ0FnSUNBZ0lDQWdJQ0FnTUJBUUVCQVFFQkFRRUJBUUVCQUFJQUFBSUFBQUlBQVFJQUFnQUNBQUlBQ0FFQ0NBRUNBQUVDQUFFQ0FBZ0JBZ0FCQWdBQkFnQUNBQWdCQWdBQ0FBZ0JBZ0FDQUFJQUNBZ0RBZ0FCQVFFQUFBSUJBUUVCQWdBQUFRRUNBUUVDQVFFQ0FRRUNBUUVCQndFQ0FRRUFBZ0VCQVFFQkFRSUJBUUlCQVFJQkFRSUJBUUVCQUFBQ0FRRUNBUUVDQVFFQUFnRUJBZ0VCQWdFREF3TURBQUFEQXdNREF3TUJBZ0VCQWdFQkFnRUZBUUVXRmdJQkF3SUJBd0VCQXdFQkF3VUZCUVVGQlFVRkJRVUZBUU1CQVFJQkFnSUhBUUVCQVFJQkFRSUJBZ0VDQVFJQkFnRUFBUUFCQUFFQkFRTUJBd0lDQUFJQ0FBSUNBQUVDQWdBQ0FRVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUVCUVFGQkFVRUJRUUZCQVVFQlFRRkJBVUVCUVFGQkFVRkJRUUZCQVVFQlFRRkJBVUVCUVFGQkFFRkJBVUVCUVFGQkFVREJBVUVCUVFGQkFVSEJBVUVCUVFGQkFVRUJRUUZCQVVFQlFRRkJBVUVCUVFGQkFVRUJRUUZCQVVFQlFRRkVRUUhBWEFCMmh2YUd3VUhBUUdBQW9DQUFnWUpBWDhCUWZESzRBSUxCeVlJQVc4Q0FBRndBSk1SQVhFQW5pc0JjZ0NnRmdGekFRQUJkQURnQVFGMUFCOEJkZ0RaSUFuQkxRRUFRUUVMMlJ2VERDeVFDNU1vNXljc1JPUWdMRVJFTEVTL0YrVWx5Q1gxSkN3VHJTQ3lJRVJFdWd4RVJJZ0lod2lRSUpNZ1JDd1RoU0FzUkN3VCt4OUVMQlB3SDBTb0Vka2YyQjlFTEJPNUgwU2tIL0FxNWlwRUxCT3BLa1FzRTZRcVJDd1RsaXBFOGg3M0tmWXBSTW9lNmlucEtVUXNFK2dwUktjZTV5bm1LVVFzRStVcFJFUkVnQjdrS2VNcFJNc2Q0U25nS1VRc1JFUkVFNkFvUkN3VG55aEVMRVJFc2hucUorWW5SQ3dUTEVUVko5UW4weWNUdmhqUEorVUR6U2VwR013bnl5ZktKODRua2hoRWlBaUhDTGNudkNkRUxCTzFKN1luUkN4RVJDd1RxQ2RFTEJQbEE1WW5rQ2VQSjRrbmdTZWZKNUlZUkk0RTZDWXNFOUFqUkN3VHVDTkVFK1VEb0FMOUE3d1J2Qkg2SC9rZitCOUVFK1VEb0FMOUE3Y1J0eEgySC9VZjlCOUVFK1VEb0FMOUE5QUowQW0xRWZNZjhoOUVFK1VEb0FMOUE4OEp6d215RWZFZnNSRkU3eC91SCswZm9BTHJCdXdmNngvcUgra2ZFK1VEb0FMOUE2d1JyQkhvSCtjZjVoOUVFK1VEb0FMOUE5QUowQW0xRWVVZjVCOUVFK1VEb0FMOUE4OEp6d215RWVNZnNSRkVMQlBpSCtFZk1SUGdIeFBmSDk0Zk1SUGRIOXdmMngvYUg1MFIxeC9XSDlVZjFCL1RIeXdUMGgvUkh5d1QwQi9QSHhQT0g4MGZFOHdmZ2dZVHl4K0JCaFBLSDhrZkU4Z2Z4eDhUeGgvRkh4UEVIOE1mRThJZndSOFR3QisvSHhPK0g3MGZFN3dmdXg4VHVoKzRIeE8zSDdZZkU3VWZ0QjhUc3greUh4T3hIN0FmRTY4ZnJoOFRyUitzSHhPckg2b2ZFNmtmcUI4VHB4K2RLeE9jSzVzckU1b3JtU3NUbUN1WEt4T1dLNVVyRTVRcmt5c1RraXVSS3hPUUs0OHJFNDRyalNzVGpDdUxLeE9LSzRrckU0Z3JoeXNUaGl1Rkt4T0VLNE1yRTRJcmdTc1RnQ3YvS2hQK0t2MHFFL3dxK3lvVCtpcjRLaFAzS3ZZcUUvVXE5Q29UOHlyeUtoUHhLdThxRSs0cTdTb1Q3Q3JyS2hQcUt1a3FFK2dxNXlvVDVTcmtLaFBqS3VJcUUrRXE0Q29UM3lyZUtoUGRLdHdxRTlzcTJpb1QyU3JZS2hQWEt0WXFFNkVmMVNvVG9SL1VLaFBUS3RJcUU5RXEwQ29UenlyT0toUE5Lc3dxRThzcXlpb1R5U3JJS2hQSEtzWXFFOFVxeENvVHd5ckNLaFBCS3NBcUU3OHF2aW9UdlNxOEtoTzdLcm9xRTdrcXVDb1R0eXEyS2hPMUtyUXFFN01xc2lvVHNTcXdLaE92S3E0cUU2MHFyQ29UcXlxcUtpd1RvQUtvS2xKU29BS1FJbzhpaXlLeUZJWWlueUxCSWI0aHNTR25JWU1pc2hUU0lld1R5Qk9FSWM0Z3pTQ2ZJSTRnalNESklNZ2d4eURHSU1VZ3hDRERJTUlnd0NEQklMOGd2aUM5SUx3Z3V5QzZJTGtndHlDMUlMTWdzU0N3SUs0Z3JDQ3JJS29ncVNDb0lLY2dwaUNsSUtRZ295Q2lJS0Vnb0NDZUlKY2cvQitXSUpJZ2tTQ1BJSXdnaXlDS0lJa2doeUNJSUlZZ2hDQ0NJTndoK1NHYkZNd2crQ0RySU9VZzB5RFNJTkVneXlES0lMZ2d0aUMwSUs4Z25TQ2NJSnNnbWlDWklKZ2dsU0NVSUlNZ2dTQ0FJUDhmL2gvOUg5QWd6eUFzRTZjcXBpb3hFNlVxRTZNcW9pb3hFNkVxRTZBcW55b3hFNTRxRTUwcW5Db3hFNXNxaXgrYUtwa3FSSW9mbUNxWEtrUXNFNVVxUklnSWh3aVRLcFFxUklnSWh3aVJLcElxUklnSWh3aVBLcEFxUkN3VGpTcU9La1FzRTRzcWpDcEVMQk9KS29vcVJDd1RoeXFJS2tRc0U0VXFoaXBFTEJPRUt2MGVSQ3dUZ2lxREtrUXNFNEVxUkN4RVJDd1Q5eDVFTEJPQUtrUXNFL1FlUkN3VC95bEVneEZFL1NsRUxCUDdLZndwUkN3VCtTbjZLVVFzRS9ncFJQVXAxUUxWQXRVQzFRTFZBdFVDMVFMVkF0VUM5Q256S2ZJcDhTbndLZThwN2ludEtld3A2eW5pQXVJcDRnTGZLZUlDNGdMaUF1SUM0Z0xpQXVJQzRnTGlBcmdkdHgzZUtlc0c2d2F2SGE4ZHVCMjNIZDBwb0FMY0tkc3AyaW5WQXRVQzFRTFZBdFVDMVFMVkF0VUMxUUlzRXhNVEV4TVRFeE1URXhNVG9BTHJCdGtwNndickJzd2N5eHpYS2RncFJDd1QxaW5WS2RRcExCUFRLZElwMFNrc1JFU2RCZUFFblFYZ0JKMEY0QVRvQjZJRW9nU2lCSjBGNEFTaUJJQVExUXVUQ2RRTEV5d1QxUXNzRTRnYzBDa3NFeE1UblFYZ0JLSUVMQk1UaHh6UEtkUUxuUVhnQktJRUxCTVRMQk1UblFYZ0JKMEY0QVNpQktJRUxCTVRMQk1zRTRBY3ppa1RFeFAvRzgwcEV4UFNDOHdwNEFRVHl5bktLZk1iaHltRUtZVXBoaW1ES2NrcDhodk5Cc2dwdVF2SEtmRWJ4aW53RzhVcExCT2lCS0lFRXl3VEU4MEx6Z3YwRDg0TDlBL09DL1FQemdzc0V4UHhEL0VQOFE4VGdCRFZDOVFMZ0JEVkM5UUxFeE9kQmVBRW9nUXNFOFFwd3lsU1VzSXBMRVFzRThFcHdDbS9LVVJFUkJPK0tiMHB2Q21wR0xzcFJFUXNFN29wdVNtNEtTd1R0eW0yS2JVcExFUXNFMFJFTEJPMEtiTXBzaW14S2JBcFJDd1RyeW5oRC9FRDhRT3VLVVFzRTYwcHJDbXJLU3hFTEJPcUtha3BxQ2xFTEJPbkthWXBwU2xFTEJPa0thTXB4UXZGQzZJcFJDd1RvU25ERy9FRDhRT2dLVVFzRTU4cHdSdnhBL0VEbmlsRUxCT2RLWndwbXltNkc1b3BSQ3dUbVNtWUtaY3BSQk1zRTVVcHVCdVVLVVFzRTVNcGtpbVJLVVFzRTVBcGp5bU9LVVFzRTQwcGpDbUxLVVFzRTRvcGlTbUlLVVR6Ry9JYlJCTkVSRVJFTEJPQ0thb2I4UVB4QTRFcFJFUXNFNEFwL3lqK0tQMG8vQ2hFTEJQN0tOY1AraWhFTEVRc0Uva28rQ2d4RThnR3hnLzNLUFlvUkN3VDlTZ1Q5Q2p6S0RFVC9Sb1Q4aWp4S0RFVC9Sb3NFL0FvN3lneEUrNG9SQ3dUN1NnVDdDanJLREVUeUFZVDZpanBLREVUNkNoRUxCUG5LRVFUNWlqbEtERVR5QVlUNUNqaktERVQ0aWdUNFNqZ0tERVQzeWdUM2lqZEtERVQzQ2dzRTlzb1JCUGFLTmtvTVJQWUtCUFhLTllvTVJQVktCUFVLTk1vTVJQU0tDd1QwU2hFTEJQT0tNd2N5eHpQS05Bb0U4MG96Q2d4RThnR0U4c295aWd4RThnR0U4a295Q2d4RThnR0U4Y294aWd4RThVb0U4UW93eWd4RThJb0U4RW93Q2d4RTc4b0U3NG92U2d4RTd3b1JFUzhHa1FzRTdjb3JTZ1R0aWlzS0JQNkNLc29FN1lhcWlnVHRTaXBLQk8wS0tnb0xCT3pLS2NvRTdJb3BpZ1RzU2lsS0JPd0tLUW9FNjhvb3lqNUNFU2lLS0VvcXhxZEM2NG9xeG9Ub0FMWER4TzdLT0VQRTdvb3Foc1R1U2pER3hPNEtNRWJSRVJFb0FJc0U1NG9uU2d4RTV3b0xCT2JLSm9vTVJQVkJ5d1RtU2lZS0RFVGx5Z3NFNVlvbFNneEU1UW9MQk9TS0pFb01SUFZCeE9RS0VRVGp5aU9LREVUZ2dzVGpTaU1LREVUZ2dzc0U0c29paWd4RTRrb0xCT0lLSWNvTVJPR0tCT0ZLSVFvTVJPREtCT0NLSUVvTVJPQUtCUC9KLzRuTVJQOUp4UDhKL3NuTVJPQ0M2OForaWY1SjZzWitDZjNKL1lud3dqMUovUW5FL01uRS9JbjhTY3hFL0FuRSs4bjdpY3hFNElMTEJQdEord25NUlBySi80TzZTZWdHZWduTEJQbEorUW5NUlBqSjlvSTRpZHQ0U2ZsRHVBbmtnUGZKOW9PM2ljVDNTZmNKekVUMnljVDJpZlpKekVUMkNjVDF5ZldKekVUOEFxOEdOSW4wU2VnQXRBbjRnSEFEc2dueHllREFja25peGpHSjhVbnhDZnpBOE1ud2lmQko4QW5FNzhudmljeEU3MG51eWU2SjdrbnVDZlhCVVMwSjFKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVXJNbkxCT3lKMUpTVWxKU1VsSlNVaXhTVWxKU1VsSlNVbElzL1FQMUY3Y09zU2NzTEZJc0xGS3dKOVlGUkxjT3J5Y3NMTGNPcmljc0xQTVgzd3F0Snl3c0xDeXNKOVlGUk44S3F5Y3NMTjhLcWljc0xOOEtxU2NzTEN3VHB5ZW1KekVUcFNla0o2TW42eGUwRGl3VG9TZWdKekVUbmllZEo1d25MQk9iSjVvbk1ST1pKNWdubHljVGxTZVVKekVUa3llU0o1RW5MQk9PSjQwbk1ST01KNHNuaWljVGlDZUhKekVUMVFlR0o0VW5MQk9FSjRNbk1SUFZCNEluZ0NjVC95YitKakVUMVFmOUp2d21FL3NtK2lZeEU5VUgrU2I0SnBFQzl5YlhEeXdzNUFNVDlpYjFKakVUOUNiekp2SW1FL0VtOENZeEUrOG03aWJ0SnBFQzdDYmhEeXdzNUFPUkF1c202aVlzTE9RRGtRTHBKdWNtTEN6a0E1RUM1aWJsSml3czVBT1JBdVFtNHlZc0xPUURrUUxpSnVFbUxDemtBNUVDNENiZkppd3M1QU9SQXQ0bTNTWXNMT1FEa1FMY0p0c21MQ3prQTVFQzJpYlpKaXdzNUFPUkF0Z20xeVlzTE9RRExCUFdKdFVtTVJQVUp0TW0waWFSQXN3bXN4Y3NMSmNPa1FMTEpyTVhMQ3lYRHBFQ3lpYkpKaXdzeUNha0Y2d214U2JFSml3c3d5YVJBc0ltd1NZc0xLOFhveGVySnNBbXZ5YXFKaXdzdmlhcEpwRUN1aWE1Sml3c2x3NmlGNmdtdUNhM0ppd3N0aWFSQXE0bXNDWXNMSzhta1FMUkp0QW1MQ3pQSnBFQ3ppYk5KaXdzdFJlUkFzY214aVlzTEs4WHBSZXRKcjBtdkNZc0xMc21rUUsxSnJRbUxDeTFGNUVDc3lheUppd3NzU2FZRHFjbUU2WW1wU1l4RTZRbW95YWlKaXdUb1NhZ0pqRVRueWFNQko0bUU1MG1uQ1l4RTVzbUU1b21tU1l4RTY0Y0U1Z21seVl4RTY0Y0U1WW1sU1l4RTVRbUU1TW1raVl4RS84V0U1RW1rQ1l4RTQ4bUU0NG1qU1l4RTR3bUU0c21paVl4RTRrbUU0Z21oeVl4RS84V0U0WW1oU1l4RTY4SEU0UW1neVl4RTRJbUU0RW1nQ1l4RTZBQ0UvOGwvaVV4RTZBQ0UvMGwvQ1V4RS93V0Uvc2wraVV4RS9rbEUvZ2w5eVV4RTZBQ0UvWWw5U1V4RS93V0UvUWw4eVV4RS9JbEUvRWw4Q1V4RTZBQ0xCUHZKZTRsTVJQdEpld2w2eVVxRStvbDZTVXhFL1lXTEJQb0plY2xNUlBtSmVRbDVoYmxGdVFXNHhiaUZ1RVc0QmJmRnQ0VzNCYmJGdG9XMlJiWUZ0Y1cxaGJWRnRRVzB4YlNGdEVXMEJiT0ZzMFd6QmJMRnNvV3lSYklGc2NXeGhiRkZzUVd3eGJDRnNFV3VoYmpKZUlsNFNYMkF2VUM5QUs0RnVBbDN5WGVKZllDOVFMMEFyY1czU1hjSmRzbDlnTDFBdlFDdGhiYUpka2wyQ1gyQXZVQzlBSXNFOWNsMWlVeEUvVU5FOVVsMUNVeEUvVU5FOU1sMGlVeEUvVU50UmJSSmRBbHp5WE9KYzBsekNVVHl5WEtKVEVUeVNVVHh5WEdKVEVUeFNVVHhDWERKVEVUd2lVVHdTWEFKVEVUdnlVVHZpVzlKVEVUdkNVVHV5VzZKVEVUdVNVVHVDVzNKVEVUdGlVVHRTVzBKVEVUc3lVVHNpV3hKVEVUc1JZVHNDV3ZKVEVUc1Jhd0ZxNGxyU1dzSmZZQzlRTDBBcThXcXlXcUpha2w5Z0wxQXZRQ0U2Z2xweVV4RTZZbEU2VWxwQ1V4RTZNbHJSYWlKYUVsb0NYMkF2VUM5QUlUbnlXZUpURVQ4ZzBUblNXY0pURVQ4ZzBUbXlXYUpURVQ4ZzJxRnBrbG1DV1hKZllDOVFMMEFoT1dKWlVsTVJQeERST1VKWk1sTVJQeERST1NKWkVsTVJQeERST1FKWThsTVJPb0ZoT09KWTBsTVJPb0ZxY1dqQ1dMSllvbDlnTDFBdlFDcGhhSkpZZ2xoeVgyQXZVQzlBS2xGb1lsaFNXRUpmWUM5UUwwQXFRV2d5V0NKWUVsOWdMMUF2UUNveGFBSmY4ay9pVDJBdlVDOUFLaEZ2MGsvQ1Q3SlBZQzlRTDBBaFA2SlBra01SUDRKQlAzSlBZa01SUDBKQlB6SlBJa01SUHhKQlB3Sk84a01SUHVKQlB0Sk93a01SUHJKQlBxSk9ra01SUG9KQlBuSk9Za01SUGxKQlBrSk9Na01SUGlKSjhXNFNUZ0pOOGs5Z0wxQXZRQ25oYmVKTjBrM0NUMkF2VUM5QUlUMnlUYUpERVQyU1FUMkNUWEpERVQxaVFUMVNUVUpERVQweVFUMGlUUkpERVQwQ1FUenlUT0pERVR6U1FUekNUTEpERVR5aVFUeVNUSUpERVR4eVFUeGlURkpERVR4Q1FUd3lUQ0pERVR3U1FUd0NTL0pERVR2aVFUdlNTOEpERVR1eVFUdWlTNUpERVR1Q1FUdHlTMkpERVR0U1FUdENTekpERVRzaVFUc1NTd0pERVRyeVFUcmlTdEpERVRyQ1FUcXlTcUpERVRxU1FUcUNTbkpERVRwaVFUcFNTa0pERVRveVFzRTZJa29TUXhFK0lDRTZBa255UXhFL0FLTEJPZUpKMGtNUk9nQWhPY0pKc2tNUlB3Q2hPYUpKa2tNUlB3Q2l3VG1DU1hKREVUbGlRc0U1VWtsQ1F4RTVNa0U1SWtrU1F4RTVBa0U0OGtqaVF4RTQwa0U0d2tpeVF4RTRva0xCT0pKSWdrTVJPSEpDd1RoaVNGSkRFVGhDUXNFNE1rZ2lReEU0RWtFNEFrL3lNeEUvNGpFLzBqL0NNeEUvc2pMQlA2SS9rak1SUDRJeFAzSS9Zak1ST3ZCeFAxSS9Rak1ST3ZCeFB6SS9Jak1SUHhJeFB3SSs4ak1ST3ZCeFB1SSswak1SUHNJeFBySStvak1SUHBJeFBvSStjak1ST3ZCeFBtSStVak1ST3ZCeFBrSStNak1SUGlJeFBoSStBak1SUGZJeFBlSTkwak1SUGNJeFBiSTlvak1SUFpJeFBZSTljak1SUFdJK3NWMVNQVUk5TWozQUxiQXRJakU5RWp6eU14RTg0akU4MGp6Q014RThzakU4b2p5U014RThnakU4Y2p4aU14RThVakU4UWp3eU14RThJakU4RWp3Q014RTc4ajZSVytJNzBqdkNQY0F0c0N1eVBvRmJvanVTTzNJOXdDMndMbkZlWVZ0aU8xSTdRajNBTGJBdWNWNVJXekk3SWpzU1BjQXRzQ3NDUGpGYThqcmlPdEk5d0Myd0tzSStJVnF5T3FJNmtqM0FMYkFxZ2o0UlduSTZZanBTUGNBdHNDcENQZ0ZhTWpvaU9oSTl3QzJ3S2dJeXdUbnlPZUl6RVRuU01zRTVvam1TTXhFNWdqRTVjamxpTXhFNVVqRTVRamt5TXhFNUlqTEJPUkk1QWpNUk9QSXhPT0k0MGpNUk9NSXhPTEk0b2pNUk9KSXhPSUk0Y2pNUk9HSXhPRkk0UWpNUk9ESXhPQ0k0RWpNUlBpQWhPQUkvOGlNUk9nQWhQK0l2MGlNUlA4SWhQN0l2b2lNUlA1SXM0VitDTDNJdllpOVNMMEl2TWk4aUx4SWhQd0l1OGlNUlAyRmhQdUl1MGlNUlBzSXJVVjZ5THFJdWtpM0FMYkF1Z2l0QlhuSXVZaTVTTGNBdHNDNUNLekZlTWk0aUxoSXR3QzJ3TGdJcklWM3lMZUl0MGkzQUxiQXR3aXNSWGJJdG9pMlNMY0F0c0MyQ0t3RmRjaTFpTFZJdHdDMndMVUlxOFYweUxTSXRFaTNBTGJBdEFpcmhYUElzNGl6U0xjQXRzQ3pDSVR5eUxLSWpFVHlTSVR5Q0xISWpFVHhpSVR4U0xFSWpFVHd5SVR3aUxCSWpFVHdDSzlJakdoSXBFaUg0VWlNYThoc0NHeUlia2h0eUcxSWJNaG9DR2hJYUlocWlHb0lhVWhveUZTdnlLK0lwb0t1Q0xpQXZBVTdoVHRGRkpTdHlMc0ZMWWltQXExSXBnS2t3cVdEYlFpc3lLeUlyRWkyUlNWRGVJQzhCVHVGTzBVVWxLd0l1d1VyeUtZQ3E0aW1BclJDYWtpcWlLb0lxMGlyQ0tySXBVS25BM3FGT2tVbEFxYURkOFUzaFM3QW8wTnB5S21JcVVpcENLN0FjMFVveUtpSXJvaXZDSzdJc0FVbFNLVUlwTWlraUx4RkxraS9nVGFGTUFVbUNMREZKY2lsaUtWRFp3aW15S2FJcGtpbFFxY0Rlb1U2UlR4Rk5vVWxRMmdJc01VbmlLZElwUUttZzNmRk40VXdST0hJY1locEJQb0lPY2c1aUNNSXFVVDdDRHFJT2tnaUNMc0RJOGhqaUdOSVl3aGl5SENFNG9oaVNHSUlkOE1yaFAwSVBNZzhpRHhJT2tNc3hPRElZSWhnU0dBSWY4Zy9pRDlJUHdnK3lENklQa2c5eUQxRE9zVHhTSEVJY01od2lGU3dDRy9JY3dUelJQOERQc00rZ3lkSVp3aHpoUFBFK1VEK1F6NERKOGhuaUhORTg4VExCTVRtaUdaSVpnaGx5R1dJWlVobENHVEljSVRraUdSSVpBaEU4UVR4Qk9YQ1AwRC9RT2JJZjBERThjVHhoT1hDRkpTeFJQeEF4UEhFOFlUbHdoU1VzVVQ4UU1UeXhQS0U1Y0lVbExKRS9FREU4c1R5aE9YQ0ZKU3lSUHhBeXdUamlLTklpd1RpaUtKSWhPSElvUWlnaUtCSXFzVXF4U0FJdjhoL2lIOUlmd2hFL3NoK2lINElmY2hvQlNnRlBZaDlTSDBJZk1oOGlFVDhTSHdJZThoN2lIdElld2g2eUhxSVJQcEllZ2g1eUhtSWVVaDVDSGpJZUloTEJQRkMrRWg0Q0hmSWQ0aDNTSGJJYTRoclNHc0lhc2hxU0dtSWFRaExCUEZDOW9oMlNIWUlkY2gxaUhWSWIwaHZDRzdJYm9odUNHMkliUWhyeFAySVBVZzZBem5ET1lNNVF6a0RPTU00Z3k3RTdvVHVSTzRFN2NUdGhPMUU3d1RoaUdGSWVnTTV3em1ET1VNNUF6akRPSU11eE82RTdrVHVCTzNFN1lUdFJQdURPMEoxQ0h1RE8wSjB5SHRDZTBKRS9nSitBbTdCYnNGdXdXTUZGTFpBOWtERS9nSitBbTdCYnNGdXdXTUZGTFpBOWtERS9jSjl3bTdCZllKOWdtTEZGTFpBOWtERS9jSjl3bTdCZllKOWdtTEZGTFpBOWtEcGhQdElQd00rd3o2RElvVWlSU0lGSWNVaGhUMUNhY1Q3aUQ4RFBzTStneUtGSWtVaUJTSEZJWVU5UW1xRSs4ZzVRUDVEUGdNaFJTREZJSVVnUlQxQ1lBVXF4UHdJT1VEK1F6NERJVVVneFNDRklFVTlRbUFGQlBSSWRBaEU4OGh6aUVUelNITUlSUExJY29oRSswVHlTSGlBaFB0RThnaDRnSVRFeXdUeHlIckV5d1RMQk1zRXl3VHJoT3pFeXhFUkN3VE1USGpJTnNnM1NEZUlCUFhJQlBXSU5VZ3lBYlVJQlBhSU53ZzN5QVQ0aURoSU9BZ0U5Z2dDdjZBVDVFckRnQWdBQ0FCSUFFUTNBRVErd2tMR1FBZ0FCQzRCZ1JBSUFBUTFBZ2dBQkNTQ2hDUkRRc2dBQXViQXdFRGZ5TUFRYkFDYXlJRUpBQUNRQ0FDUVFOR0JFQWdBU2dDa0FVaUJTQUJLQUtVQlNJR1JnUkFJQVJCQURZQ2FDQUVRZ0EzQTJBZ0FTZ0NBQ0VHSUFSQjBBQnFRZHo0REJBVUlRVWdCQ0FFS0FKb05nSW9JQVFnQkNrRFlEY0RJQ0FFUWZBQWFpQUVRU0JxSUFaQkVHb2dCVUVERU5JRklnWkJ0UGdNRUE0YUlBWVFFU0FGRUE4YUlBRW9BcFFGSVFZZ0FTZ0NrQVVoQlFzZ0JTQUdUd1JBSUFSQkFEWUNTQ0FFUWdBM0EwQWdCRUVBTmdLQUFTQUVRZEFBYWtIYytBd1FGQ0VCSUFRZ0JDZ0NTRFlDR0NBRUlBUXBBMEEzQXhBZ0FDQUVRUkJxSUFSQjhBQnFJZ0FnQVVFREVOSUZHaUFCRUE4YUlBQVFGZ3dDQ3lBQklBVkJBV28yQXBBRkN5QUVRZkFBYWhCVklBUUNmeUFEUlFSQUlBUkJBRFlDTUVFQURBRUxJQVJCMEFCcUlnVWdBU0FERU1FVklBUkI4QUJxSUFVUW5nRWdCUkFQR2lBRVFRQTJBakFnQXlnQ05Bc2lBellDT0NBRVFRQTJBalFnQVNnQ0FDRUJJQVFnQXpZQ0NDQUVJQVFwQXpBM0F3QWdBQ0FFSUFGQkVHb2dCRUh3QUdvaUFDQUNFTklGR2lBQUVBOGFDeUFFUWJBQ2FpUUFDOG9CQVFOL0l3QkJFR3NpQVNRQUFrQWdBQ2dDdkFFaUFrRUVSZzBBSUFBb0FxZ0JSUTBBUVFJaEF5QUNRUVpxSWdKQkMwMEVRQ0FDUVFKMFFmU3ZEV29vQWdBaEF3c2dBQ2dDdEFFZ0FDMEF1d0VpQWlBQ1FSaDBRUmgxUVFCSUd3UkFJQUFRNGdGQjMvQU1FQTRnQUVHd0FXb1FFaERpQVJvTElBRWdBRUVFYWhCQ0lBQkJtQUZxSUFOQjJpc2dBRUdJQVdvZ0FTZ0NBQ0FCSUFFc0FBdEJBRWdiRUxvT0lBRVFEeG9MSUFCQnNBRnFFQThhSUFCQm1BRnFFQllnQUJDN0FSb2dBVUVRYWlRQUN5MEJBWDhnQUNBQktBSUFJQUVnQVMwQUN5SUFRUmgwUVJoMVFRQklJZ0liSUFFb0FnUWdBQ0FDR3hEN0NRc0dBQ0FBRUI4TEVBQWdBQ0FCSUFFUTNBRVEyUXdnQUFzMEFRRi9JQUJCQVNBQUd5RUFBa0FEUUNBQUVPQUJJZ0VOQVVIZ3lpQW9BZ0FpQVFSQUlBRVJFUUFNQVFzTEVBRUFDeUFCQ3p3QkFYOENRQUovSUFBZ0FDZ0NFQ0lCUmdSQUlBQWlBU2dDQUVFUWFnd0JDeUFCUlEwQklBRW9BZ0JCRkdvTElRQWdBU0FBS0FJQUVRTUFDd3R1QVFGL0l3QkJJR3NpQlNRQUlBVWdBRFlDSENBRklBRTJBaGdnQlNBQ05nSVVJQVVnQXpZQ0VDQUZJQVEyQWd3Z0JTZ0NIQ0lBSUFVb0FoZzJBZ0FnQUNBRktBSVVOZ0lFSUFBZ0JTZ0NFRFlDQ0NBQUlBVW9BZ3cyQWd3Z0FFRVFhaEJKR2lBRlFTQnFKQUFnQUF1WEV3RVFmeU1BUWZBQWF5SUVKQUFnQkNBQU5nSm9JQVFnQkNnQ2FDSUlOZ0pzSXdCQkVHc2lCeVFBSUFjZ0NEWUNEQ0FIUWR6NEREWUNDQ0FIRU1nWUlBY29BZ3doQUNBSEtBSUlJUUVqQUVFd2F5SUZKQUFnQlNBSE5nSXNJQVVnQURZQ0tDQUZJQUUyQWlRakFFRVFheUlBSkFBZ0FDQUZRUmhxSWcwMkFnUWdBRUVCTmdJQUlBQW9BZ1FpQVNBQVFRaHFFTUFZSUFFZ0FDZ0NBRFlDQkNBQklSQWdBU2dDQkNFQ0l3QkJFR3NpQXlRQUlBTWdBVFlDRENBRElBSTJBZ2dnQXlnQ0RDRUNJQU1vQWdnaEJpTUFRUkJySWdFa0FDQUJJQUkyQWd3Z0FTQUdOZ0lJSUFFb0FnZ2hEeUFCS0FJTUlRWWpBRUVRYXlJQ0pBQWdBaUFHTmdJTUl3QkJFR3NnQWlnQ0REWUNEQ0FDUVJCcUpBQWdEMEhWcXRVcVN3UkFFUHNCQUFzZ0FTZ0NDRUV3YkVFRUVOTUlJUUlnQVVFUWFpUUFJQU5CRUdva0FDQVFJQUkyQWdnZ0FFRVFhaVFBSXdCQkVHc2lBQ0FOTmdJTUlBQW9BZ3dvQWdnaEFDQUZLQUlvSVFFZ0JTZ0NKQ0VDSXdCQk1Hc2lBeVFBSUFNZ0FEWUNKQ0FESUFFMkFpQWdBeUFDTmdJY0lBTW9BaVFoQVNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUVFQU5nSUlJQUFvQWd3aUFpQUFLQUlJRUwwWUdpQUNRWmplRHpZQ0FDQUNJQUFvQWdnMkFnZ2dBRUVRYWlRQUlBRkJ4T0lTTmdJQUl3QkJFR3NpQUNRQUlBQWdBVUVNYWpZQ0RDQUFJQU5CS0dvMkFnZ2dBQ2dDREJES0Rob2dBRUVRYWlRQUlBRVE2Z29oQUNBRFFSQnFJZzRnQXlnQ0lDZ0NBQkFVR2lBRElBTW9BaHdRRkJvakFFRVFheUlHSkFBZ0JpQUFOZ0lNSUFZZ0RqWUNDQ0FHSUFNMkFnUWdCaWdDRENJQUlBWW9BZ2dRVkJvZ0JpZ0NCQ0VCSXdCQklHc2lBaVFBSUFJZ0FFRU1hallDSENBQ0lBRTJBaGdnQWlnQ0hDSUFJQUlvQWhnUVZCb2dBa0VRYWlBQUVNb1lJQUlnQWlrREVEY0RDQ0FDUVFocUlRb2pBRUZBYWlJQkpBQWdBU0FBUVF4cUlndzJBandnQVVFQU9nQTdJQXdReHc0Z0FVRUFOZ0kwSUFGQkFEWUNNQU5BSUFFb0FqQWdDaEM0QVVrRVFDQUJRUUE2QUM4Z0FVRUFOZ0lvSUFFZ0Npa0NBRGNESUNBQktBSXdJUWtnQVNBQktRTWdOd01JSXdCQlFHb2lBQ1FBSUFBZ0NUWUNPQ0FBSUFGQkwybzJBalFnQUNBQlFTaHFOZ0l3SUFBZ0FVRUlhaUlKSUFBb0FqZ1F4QTQyQWl3Z0FFRWdhaUlMSUFBb0Fpd2dDUkM0QVNBQUtBSTRheENSR0NBQUlBc1ErZ0kyQWh3Z0FDQUxFTEVZTmdJWUFrQWdBQ2dDR0NnQ0FFVUVRQ0FBUVFBNkFEOE1BUXRCN0p3Z0xRQUFSUVJBUWVpY0lFRUtFSkFEUWV5Y0lFRUJPZ0FBQzBIMG5DQXRBQUJGQkVCQjhKd2dRUXNRa0FOQjlKd2dRUUU2QUFBTFFmeWNJQzBBQUVVRVFFSDRuQ0JCREJDUUEwSDhuQ0JCQVRvQUFBdEJoSjBnTFFBQVJRUkFRWUNkSUVHRkFSQ1FBMEdFblNCQkFUb0FBQXRCakowZ0xRQUFSUVJBUVlpZElFRU5FSkFEUVl5ZElFRUJPZ0FBQzBHVW5TQXRBQUJGQkVCQmtKMGdRYWpBQUJDUUEwR1VuU0JCQVRvQUFBdEJuSjBnTFFBQVJRUkFRWmlkSUVHcHdBQVFrQU5CbkowZ1FRRTZBQUFMQWtBQ1FDQUFLQUljRUpJQ1FlaWNJQkNTQWtZTkFDQUFLQUljRUpJQ1FmQ2NJQkNTQWtZTkFDQUFLQUljRUpJQ1FmaWNJQkNTQWtZTkFDQUFLQUljRUpJQ1FZQ2RJQkNTQWtZTkFDQUFLQUljRUpJQ1FaaWRJQkNTQWtZTkFDQUFLQUljRUpJQ1FaQ2RJQkNTQWtjTkFRc2dBQ2dDTkVFQk9nQUFJQUFvQWpBZ0FDZ0NHQ2dDQURZQ0FDQUFRUUU2QUQ4TUFRc2dBQ2dDSEJDU0FrR0luU0FRa2dKR0JFQWdBQ2dDTkVFQk9nQUFJQUFvQWpBZ0FDZ0NHQ2dDQURZQ0FDQUFJQUFvQWpnZ0FDZ0NHQ2dDQUdvMkFoUWdBQ2dDRkNBSkVMZ0JTUVJBSUFBZ0NTQUFLQUlVRU1RT05nSVFJQUJCQ0dvaUN5QUFLQUlRSUFrUXVBRWdBQ2dDRkdzUWtSZ2dBQ0FMRVBvQ05nSUVJQUFnQ3hDeEdEWUNBQ0FBS0FJQUtBSUFSUVJBSUFCQkFEb0FQd3dEQ3lBQUtBSUVFSklDUWVpY0lCQ1NBa1lFUUNBQUtBSXdJQUFvQWhnb0FnQWdBQ2dDQUNnQ0FHbzJBZ0FMQ3lBQVFRRTZBRDhNQVFzZ0FDZ0NORUVBT2dBQUlBQkJBVG9BUHdzZ0FDMEFQeG9nQUVGQWF5UUFBa0FnQVMwQUwwRUJjUVJBSUFGQkdHb2lBQ0FLSUFFb0FqUWdBU2dDTUNBQktBSTBheEM0R0NBTUlBQVF0eGdnQVNBQktBSW9JQUVvQWpCcU5nSXdJQUVnQVNnQ01EWUNOQXdCQ3lBQklBRW9BakJCQVdvMkFqQUxEQUVMQ3lBQktBSTBJQW9RdUFGSkJFQWdBVUVRYWlJQUlBb2dBU2dDTkVGL0VMZ1lJQXdnQUJDM0dBc2dBVUVCT2dBN0lBRXRBRHRCQVhGRkJFQWdEQkMyR0FzZ0FVRkFheVFBSUFKQklHb2tBQ0FHUVJCcUpBQWdBeEFQR2lBT0VBOGFJQU5CTUdva0FDTUFRUkJySWdBZ0RUWUNEQ0FBSUFBb0Fnd2lBU2dDQ0RZQ0NDQUJRUUEyQWdnZ0JTQUFLQUlJTmdJRUlBVW9BZ1FRNmdvaEFTQUZLQUlFSVFNakFFRWdheUlBSkFBZ0FDQUJOZ0ljSUFBZ0F6WUNHQ0FBUVFBNkFCY2dCRUhnQUdvaUF5SUJFTXNPSUFFZ0FDZ0NIRFlDQUNBQklBQW9BaGcyQWdRZ0FTZ0NBQ0VDSUFBZ0FTZ0NBRFlDQkNBQUlBSTJBZ0FqQUVFUWF5QUJOZ0lNSUFCQkFUb0FGeUFBTFFBWFFRRnhSUVJBSUFFUXpnY0xJQUJCSUdva0FDTUFRUkJySWdBa0FDQUFJQTAyQWdnZ0FDQUFLQUlJSWdFMkFnd2dBU2dDQ0FSQUlBRWdBU2dDQ0NBQktBSUVFTDhZQ3lBQUtBSU1HaUFBUVJCcUpBQWdCVUV3YWlRQUlBZEJFR29rQUNBRUlBZ29BZ1EyQWpBZ0JFRUFOZ0kwSXdCQkVHc2lBQ0FFUVRocUlnRTJBZ3dnQUNBRVFUQnFOZ0lJSUFBb0Fnd2lCU0FBS0FJSUtRSUFOd0lBSUFVZ0FDZ0NDQ2tDQURjQ0NDQURFSklDSVFVakFFRVFheUlBSUFSQnlBQnFJZ0kyQWd3Z0FDQUJOZ0lJSUFBZ0JUWUNCQ0FBS0FJTUlnRWdBQ2dDQ0NJRktRSUFOd0lBSUFFZ0JTa0NDRGNDQ0NBQklBQW9BZ1EyQWhBZ0NDZ0NEQ0VCSUFnb0FnZ2hCeUFFUVJocUlnVWdDRUVRYWhEdENpQUVRU2hxSUFVUXloZ2dCRUVRYWlBREVNa1lJQVFnQkNrREtEY0RDQ0FFSUFRcEF4QTNBd0FqQUVGQWFpSUFKQUFnQUNBQk5nSThJQUFnQnpZQ09DQUFJQUkyQWpRZ0FDZ0NQQ0VESUFBUXp3Z2FJQUJCQXpZQ0FDQUFJQUFvQWpnMkFpUWdBQ0FBS0FJMElnRXBBZ0EzQWdRZ0FDQUJLQUlRTmdJVUlBQWdBU2tDQ0RjQ0RDQUFRUmhxSUFSQkNHb1E1UTBqQUVFUWF5SUJKQUFnQVNBQVFTeHFOZ0lNSUFFZ0JEWUNDQ0FCS0FJTUlRSWdBU0FCS0FJSUVNa1lJQUVnQWhER0dDQUJFTTRISUFGQkVHb2tBQ0FESUFBUXFBY2dBQkNIQlNBRUVNNEhJQUJCUUdza0FDQUZFQThhUWVTY0lDZ0NBQVJBSUFnb0FneEI1SndnS0FJQUVRTUFDeUFFUWVBQWFoRE9CeUFJUVJCcUVGRWdCQ2dDYkJvZ0JFSHdBR29rQUFzUkFDQUFLQUlFUVFocUlBRVFEaG9nQUFzTUFDQUFFTk1KSUFBUXdCRUxZQUVCZndKQUlBQkJER29nQVJEM0ZpSUJMd0VDSWdJRVFDQUFMd0VjSUFFdkFRQWlBU0FDYWtrTkFTQUFLQUlBSUFGQkFuUnFLQUlBRHd0QjV0UUlRZG14QTBIb0FFR0N4Z0VRQUFBTFFmKy9BVUhac1FOQjZRQkJnc1lCRUFBQUMwSUJBWDhqQUVHZ0FXc2lBU1FBSUFBdEFPMENCRUFnQVVHVG53VkIzd0JCQmlBQVFjZ0NhaEFYSWdCQkdHcEI5TzhFRUE0YUlBQVFHQXNnQVVHZ0FXb2tBQXN1QVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1JZ0FReHc0Z0FFRUFOZ0lNSUFGQkVHb2tBQ0FBQzc0QkFRVi9Jd0JCRUdzaUF5UUFJQU1nQURZQ0RDQURLQUlNSVFBakFFRVFheUlDSkFBZ0FpQUFOZ0lJSUFJZ0FpZ0NDQ0lCTmdJTUl3QkJFR3NpQkNRQUlBUWdBVFlDRENBRUtBSU1JZ0FRNmdFaEJTQUFJQVVnQUJEcUFTQUFFTmtGUVRSc2FpQUFFT29CSUFBUXR3WkJOR3hxSUFBUTZnRWdBQkRaQlVFMGJHb1F0Z1lnQkVFUWFpUUFJQUVvQWdBRVFDQUJFS1lZSUFFUXR3RWdBU2dDQUNBQkVOa0ZFTVVZQ3lBQ0tBSU1HaUFDUVJCcUpBQWdBMEVRYWlRQUM4b01BUWQvQWtBZ0FFVU5BQ0FBUVFocklnSWdBRUVFYXlnQ0FDSUJRWGh4SWdCcUlRVUNRQ0FCUVFGeERRQWdBVUVEY1VVTkFTQUNJQUlvQWdBaUFXc2lBa0d3blNBb0FnQkpEUUVnQUNBQmFpRUFRYlNkSUNnQ0FDQUNSd1JBSUFGQi93Rk5CRUFnQWlnQ0NDSUVJQUZCQTNZaUFVRURkRUhJblNCcVJob2dCQ0FDS0FJTUlnTkdCRUJCb0owZ1FhQ2RJQ2dDQUVGK0lBRjNjVFlDQUF3REN5QUVJQU0yQWd3Z0F5QUVOZ0lJREFJTElBSW9BaGdoQmdKQUlBSWdBaWdDRENJQlJ3UkFJQUlvQWdnaUF5QUJOZ0lNSUFFZ0F6WUNDQXdCQ3dKQUlBSkJGR29pQkNnQ0FDSUREUUFnQWtFUWFpSUVLQUlBSWdNTkFFRUFJUUVNQVFzRFFDQUVJUWNnQXlJQlFSUnFJZ1FvQWdBaUF3MEFJQUZCRUdvaEJDQUJLQUlRSWdNTkFBc2dCMEVBTmdJQUN5QUdSUTBCQWtBZ0FpZ0NIQ0lFUVFKMFFkQ2ZJR29pQXlnQ0FDQUNSZ1JBSUFNZ0FUWUNBQ0FCRFFGQnBKMGdRYVNkSUNnQ0FFRitJQVIzY1RZQ0FBd0RDeUFHUVJCQkZDQUdLQUlRSUFKR0cyb2dBVFlDQUNBQlJRMENDeUFCSUFZMkFoZ2dBaWdDRUNJREJFQWdBU0FETmdJUUlBTWdBVFlDR0FzZ0FpZ0NGQ0lEUlEwQklBRWdBellDRkNBRElBRTJBaGdNQVFzZ0JTZ0NCQ0lCUVFOeFFRTkhEUUJCcUowZ0lBQTJBZ0FnQlNBQlFYNXhOZ0lFSUFJZ0FFRUJjallDQkNBQUlBSnFJQUEyQWdBUEN5QUNJQVZQRFFBZ0JTZ0NCQ0lCUVFGeFJRMEFBa0FnQVVFQ2NVVUVRRUc0blNBb0FnQWdCVVlFUUVHNG5TQWdBallDQUVHc25TQkJySjBnS0FJQUlBQnFJZ0EyQWdBZ0FpQUFRUUZ5TmdJRUlBSkJ0SjBnS0FJQVJ3MERRYWlkSUVFQU5nSUFRYlNkSUVFQU5nSUFEd3RCdEowZ0tBSUFJQVZHQkVCQnRKMGdJQUkyQWdCQnFKMGdRYWlkSUNnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQVBDeUFCUVhoeElBQnFJUUFDUUNBQlFmOEJUUVJBSUFVb0FnZ2lCQ0FCUVFOMklnRkJBM1JCeUowZ2FrWWFJQVFnQlNnQ0RDSURSZ1JBUWFDZElFR2duU0FvQWdCQmZpQUJkM0UyQWdBTUFnc2dCQ0FETmdJTUlBTWdCRFlDQ0F3QkN5QUZLQUlZSVFZQ1FDQUZJQVVvQWd3aUFVY0VRQ0FGS0FJSUlnTkJzSjBnS0FJQVNSb2dBeUFCTmdJTUlBRWdBellDQ0F3QkN3SkFJQVZCRkdvaUJDZ0NBQ0lERFFBZ0JVRVFhaUlFS0FJQUlnTU5BRUVBSVFFTUFRc0RRQ0FFSVFjZ0F5SUJRUlJxSWdRb0FnQWlBdzBBSUFGQkVHb2hCQ0FCS0FJUUlnTU5BQXNnQjBFQU5nSUFDeUFHUlEwQUFrQWdCU2dDSENJRVFRSjBRZENmSUdvaUF5Z0NBQ0FGUmdSQUlBTWdBVFlDQUNBQkRRRkJwSjBnUWFTZElDZ0NBRUYrSUFSM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBVkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBWTJBaGdnQlNnQ0VDSURCRUFnQVNBRE5nSVFJQU1nQVRZQ0dBc2dCU2dDRkNJRFJRMEFJQUVnQXpZQ0ZDQURJQUUyQWhnTElBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQWdBa0cwblNBb0FnQkhEUUZCcUowZ0lBQTJBZ0FQQ3lBRklBRkJmbkUyQWdRZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FBc2dBRUgvQVUwRVFDQUFRWGh4UWNpZElHb2hBUUovUWFDZElDZ0NBQ0lEUVFFZ0FFRURkblFpQUhGRkJFQkJvSjBnSUFBZ0EzSTJBZ0FnQVF3QkN5QUJLQUlJQ3lFQUlBRWdBallDQ0NBQUlBSTJBZ3dnQWlBQk5nSU1JQUlnQURZQ0NBOExRUjhoQkNBQVFmLy8vd2ROQkVBZ0FFRUlkaUlCSUFGQmdQNC9ha0VRZGtFSWNTSUVkQ0lCSUFGQmdPQWZha0VRZGtFRWNTSURkQ0lCSUFGQmdJQVBha0VRZGtFQ2NTSUJkRUVQZGlBRElBUnlJQUZ5YXlJQlFRRjBJQUFnQVVFVmFuWkJBWEZ5UVJ4cUlRUUxJQUlnQkRZQ0hDQUNRZ0EzQWhBZ0JFRUNkRUhRbnlCcUlRY0NRQUpBQWtCQnBKMGdLQUlBSWdOQkFTQUVkQ0lCY1VVRVFFR2tuU0FnQVNBRGNqWUNBQ0FISUFJMkFnQWdBaUFITmdJWURBRUxJQUJCR1NBRVFRRjJhMEVBSUFSQkgwY2JkQ0VFSUFjb0FnQWhBUU5BSUFFaUF5Z0NCRUY0Y1NBQVJnMENJQVJCSFhZaEFTQUVRUUYwSVFRZ0F5QUJRUVJ4YWlJSFFSQnFLQUlBSWdFTkFBc2dCeUFDTmdJUUlBSWdBellDR0FzZ0FpQUNOZ0lNSUFJZ0FqWUNDQXdCQ3lBREtBSUlJZ0FnQWpZQ0RDQURJQUkyQWdnZ0FrRUFOZ0lZSUFJZ0F6WUNEQ0FDSUFBMkFnZ0xRY0NkSUVIQW5TQW9BZ0JCQVdzaUFFRi9JQUFiTmdJQUN3c01BQ0FBSUFGQnJBRVEvUklMc1FFQkJuOGpBRUVnYXlJQ0pBQWdBa0VZYWlJRElBQVEzd01hQWtBZ0F4Q1NCRVVOQUNBQ1FSQnFJZ01nQUNBQUtBSUFRUXhyS0FJQWFoQitJQU1RL1FRaEJDQURFR1FnQWtFSWFpQUFFTklFSVFVZ0FDQUFLQUlBUVF4cktBSUFhaUlHRUp3RElRY2dBaUFFSUFVb0FnQWdCaUFISUFFZ0JDZ0NBQ2dDR0JFSkFEWUNFQ0FERU5FRVJRMEFJQUFnQUNnQ0FFRU1heWdDQUdwQkJSQ1BBd3NnQWtFWWFoRGdBeUFDUVNCcUpBQWdBQXU3QVFFQmZ3SkFBa0FnQUJES0F3UkFJQUZGRFFFZ0FVRUJOZ0lBSUFBUEN5QUFSUVJBUVFBaEFDQUJSUTBCSUFGQkFUWUNBRUVBRHdzZ0FDZ0NCQ0lDRUpFREJFQWdBVVVOQWlBQklBQW9BaHcyQWdBTUFnc2dBa0h3cWhKR0JFQWdBUVJBSUFFZ0FDZ0NKRFlDQUFzZ0FDZ0NIQThMSUFKQmtLSVNSZ1JBSUFGRkRRSWdBQ2dDSENJQ0tBSUVRWkNqRWtjZ0FrVnlEUUlnQVNBQ0tBSU1OZ0lBREFJTElBRkZEUUFnQVVFQk5nSUFDeUFBRHdzZ0FDZ0NHQXNTQUNBQVFRQTJBaVFnQUNBQUtBSWdFRFlMU3dFQmZ5QUFLQUlrSWdJZ0FDZ0NLRThFUUNBQUlBQW9BaWdpQWtFQmRFRUNJQUliRURrZ0FDZ0NKQ0VDQ3lBQUlBSkJBV28yQWlRZ0FDZ0NJQ0FDUVFKMGFpQUJLQUlBTmdJQUMwb0JBWDhDUUNBQUtBSUFJQUVvQWdBZ0FTZ0NCQ0lCSUFBb0FnUWlBaUFCSUFKSkd4RExDeUlDRFFCQkFDRUNJQUFvQWdRaUFDQUJSZzBBUVg5QkFTQUFJQUZKR3lFQ0N5QUNDdzBBSUFBZ0FTQUNFQnNRelFJTFlBRURmeU1BUVJCcklnTWtBQ0FBS0FJRUlRQWdBU2dDQUNFRklBTWdBU2dDQkNBQkxRQUxJZ1FnQkVFWWRFRVlkVUVBU0NJRUd6WUNEQ0FESUFVZ0FTQUVHellDQ0NBRElBTXBBd2czQXdBZ0FDQURJQUlRMVFFZ0EwRVFhaVFBQzl3QkFRUi9JQUFvQWhBaEJBSkFBa0FnQUNnQ0ZDSURRU0JKQkVBZ0JDRUNEQUVMSUFBb0FnUWhBd0pBSUFBb0FnaEJBMnBCZkhFaUJVSDUvZ05yUWY3L2Uwc0VRQ0FESVFJTUFRc2dBRUdRZ0FSQkVCRFpBaUlDTmdJRVFRQWhCU0FDUVFBMkFvQ0FCQ0FEQkVBZ0F5QUNOZ0tBZ0FRTUFRc2dBQ0FDTmdJQUN5QUFJQVZCaUFGcU5nSUlJQUFnQWlBRmFpSUNOZ0lRSUFKRkRRRWdBaUFFTmdLRUFVRUFJUU1nQWtFQU5nS0FBU0FFUVlBQmFpQUFRUXhxSUFRYklBSTJBZ0FMSUFBZ0EwRUJhallDRkNBQ0lBTkJBblJxSUFFMkFnQUxDd2NBSUFBUWdRRUxZZ0VDZnlNQVFhQUJheUlESkFBZ0EwR1FBV29pQkNBQlFmZ0VhaUFDRU1rS0lBTVFpQU1pQVVFSWFrSHptZ2tRRGlBQ0VDRkIrSm9KRUE0Z0JCQVNRY3VGQ1JBT0dpQUFJQUZCREdvUVFpQUJFTHNDR2lBRUVBOGFJQU5Cb0FGcUpBQUxEd0FnQUJEVENTQUFMUUFFUVFGR0N3UUFJQUFMSVFBZ0FDQUJJQUlRK0FZaUFTa0NBRGNDQUNBQUlBRW9BZ2cyQWdnZ0FSQlZDOEVCQVFKL0l3QkJvQUZySWdJa0FDQUNRUUEyQXB3QkFrQUNRQUpBSUFFb0FnQkJnQU5xSUFFb0FnZ2dBU2dDRENBQ1Fad0JhaERCQ0VVRVFDQUNLQUtjQVEwQkN5QUFRYjR2RUJRYURBRUxJQUVvQWdBZ0FTZ0NCQkFnSWdORkRRRWdBa0VRYWhET0FTRUJJQUlnQTBFQkVNVUZJQUVnQWhBU0dpQUNFQThhSUFGQjkvQU1FQTRhSUFFZ0FpZ0NuQUVvQWdBUURob2dBQ0FCUVFScUVFSWdBUkM3QVJvTElBSkJvQUZxSkFBUEMwRzFMa0dsbXdKQjB3aEIzUEVJRUFBQUN3OEFJQUFvQWdRZ0FSRExBeG9nQUFzUEFDQUFFTk1KSUFBdEFBUkJBa1lMQXdBQkN4c0JBWDhnQUNnQ0FDSUJCRUFnQUNBQk5nSUVJQUVRSHdzZ0FBdnpBUUVGZnlNQVFhQUJheUlFSkFBQ1FBSkFJQUZGQkVBZ0JFRzNtd1ZCeWlSQkNDQUFLQUlFRUJjaUFFRVlha0dKeHdFUURob2dBQkFZREFFTFFRRWhBa0VCSUFFb0Fnd2lBM1FpQlNBQUtBS3dLeUFEUVFOMlFmei8vLzhCY1dvaUF5Z0NBQ0lHY1VVRVFDQURJQVVnQm5JMkFnQU1BZ3NnQkVHM213VkIwaVJCQ0NBQUtBSUVFQmNpQWtFWWFrR21sZ2tRRGhvZ0FpQUJLQUlFUVFScUVKb0JJZ05CR0dvaUFFSDA4UXdRRGhvZ0FFR0Q1QXNRRGhvZ0EwRVFhaUFCUVJCcUVLNERJQUJCMi9nTUVBNGFJQUJCOFBVTEVBNGFJQUFnQVJEZEF5QUNFQmdMUVFBaEFnc2dCRUdnQVdva0FDQUNDd3NBSUFCQnJJVVFFSklUQ3lZQUlBQWdBaUFCSUFFUTBnZ1FuUk1pQVNrQ0FEY0NBQ0FBSUFFb0FnZzJBZ2dnQVJCVkN4TUFJQUZGSUFBZ0FVWnlSUVJBSUFFUUh3c0wraVFBQWtBZ0FTZ0NBQ2dDQUJCSFJRUkFRZHo0RENFQkRBRUxRY2lSQ3lFQkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQnVpQnJEczhFb3dJQkFxSUNvZ0tpQWdNRUJhSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFnWUhDQWtLQ3d3TkRnOFFvZ0tpQXFJQ29nSVJFaE1VRmFJQ29nS2lBcUlDR1JvYkhCMGVIeUFoSWlNa0pTWW5LQ2txS3l3dG9nS2lBcUlDTGk4d01USXpvZ0kwTlRZM09EazZPenc5UGo5QVFVSkRSRVZHUjBoSlNrdWlBcUlDb2dKTVRVNVBVRkZTVTFSVlZsZFlXYUlDb2dLaUFxSUNXbHRjb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDWFY1ZllHRmlZMlJsWm1kb2FXcHJiRzF1YjNCeGNuTjBkWFozZUhtaUFxSUNvZ0tpQXFJQ29nS2lBcUlDZXFJQ29nS2lBbnVpQXFJQ2ZLSUNvZ0tpQXFJQ29nS2lBcUlDZlg1L2dBR0JBWUlCZ3dHRUFZVUJoZ0dIQVlnQmlRR0tBWXNCakFHTkFZNEJvZ0tpQXFJQ29nS1BBWkFCa1FHU0FaTUJsQUdWQVpZQmx3R1lBWmtCbWdHYkFad0JuUUdlQVo4Qm9nS2lBcUlDb0FHaEFhSUJvd0drQWFVQnBnR25BYWdCcVFHcUFhc0JyQUd0QWE0QnJ3R3dBYkVCc2dHekFiUUJ0UUdpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcllCdHdHNEFia0J1Z0c3QWJ3QnZRRytBYjhCd0FIQkFjSUJ3d0hFQWFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nTEZBY1lCeHdHaUFxSUNvZ0xJQWNrQnlnR2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUN5d0hNQWMwQnpnSFBBZEFCb2dMU0FkTUIxQUhWQWRZQjF3R2lBcUlDb2dLaUFxSUMyQUhaQWRvQjJ3SGNBZDBCM2dIZkFlQUJvZ0tpQXVFQjRnSGpBYUlDb2dMa0FhSUM1UUhtQWFJQ29nS2lBcUlDNXdHaUF1Z0JvZ0tpQXVrQm9nTHFBYUlDb2dMc0FlMEJvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXU0Qjd3R2lBdkFCb2dMeEFmSUI4d0dpQXFJQzlRR2lBdllCOXdHaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dMNEFma0IrZ0g3QWZ3Qm9nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQy9RRUFDd0pBSUFKQnN5WnJEZ3FCQW9JQ2d3S0VBb1VDaGdLSEFvZ0NpUUtLQWdBTEFrQWdBa0dQTkdzT0NJOENrQUtpQXBFQ2tnS1RBcFFDbFFJQUN3SkFJQUpCcVNWckRnWCtBYUlDb2dML0FZQUNBQXNDUUNBQ1FjODBhdzRERmhjWUFBc0NRQ0FDUWVJN2F3NERud0tnQXFFQ0FBc0NRQ0FDUWJrd2F3NENpd0tNQWdBTEFrQWdBa0g1TkdzT0FwWUNsd0lBQ3dKQUlBSkJselZyRGdLWUFwa0NBQXNDUUNBQ1FaZzVhdzRDblFMUkFRQUxJQUpCeGpCR0RZd0NJQUpCbWpKR0Rlb0JJQUpCMnpKR0RZMENJQUpCalRaR0Raa0NJQUpCMVRaR0Rab0NJQUpCdmpkR0Rac0NJQUpCenpkR0RmTUJJQUpCK2poR0RaMENJQUpCbHp4SERhRUNRZHVlQ3lFQkRLSUNDMEdkaUFzaEFReWhBZ3RCaS84S0lRRU1vQUlMUWRDNEN5RUJESjhDQzBHQXJnc2hBUXllQWd0QnpxTUxJUUVNblFJTFFhV3NDeUVCREp3Q0MwSG9vUXNoQVF5YkFndEIwcGdMSVFFTW1nSUxRZWlPQ3lFQkRKa0NDMEcvaFFzaEFReVlBZ3RCNS93S0lRRU1sd0lMUWVUeUNpRUJESllDQzBIZzZRb2hBUXlWQWd0QjV1RUtJUUVNbEFJTFFldTFDeUVCREpNQ0MwSG1xZ3NoQVF5U0FndEIzdnNLSVFFTWtRSUxRWnJ5Q2lFQkRKQUNDMEdXNlFvaEFReVBBZ3RCbk9FS0lRRU1qZ0lMUVlPL0N5RUJESTBDQzBHNmlRc2hBUXlNQWd0QmhZQUxJUUVNaXdJTFFaVDNDaUVCRElvQ0MwR3dqUXNoQVF5SkFndEJ5WU1MSVFFTWlBSUxRZWI2Q2lFQkRJY0NDMEgwOEFvaEFReUdBZ3RCK09jS0lRRU1oUUlMUVlHK0N5RUJESVFDQzBHZ3N3c2hBUXlEQWd0Qm9hZ0xJUUVNZ2dJTFFibWVDeUVCRElFQ0MwSDJsUXNoQVF5QUFndEIvb3NMSVFFTS93RUxRYzJDQ3lFQkRQNEJDMEdxK1FvaEFRejlBUXRCZys4S0lRRU0vQUVMUWQ3bUNpRUJEUHNCQzBIN3ZBc2hBUXo2QVF0Qm83SUxJUUVNK1FFTFFkZW5DeUVCRFBnQkMwSGpuUXNoQVF6M0FRdEIrSlFMSVFFTTlnRUxRWU9MQ3lFQkRQVUJDMEh4NVFvaEFRejBBUXRCNExzTElRRU04d0VMUVpLeEN5RUJEUElCQzBIYnBnc2hBUXp4QVF0QjU1d0xJUUVNOEFFTFFmeVRDeUVCRE84QkMwSCtnQXNoQVF6dUFRdEJnL2dLSVFFTTdRRUxRZER0Q2lFQkRPd0JDMEdKNVFvaEFRenJBUXRCcHJvTElRRU02Z0VMUVlXd0N5RUJET2tCQzBIWHBRc2hBUXpvQVF0QndKc0xJUUVNNXdFTFFiYVNDeUVCRE9ZQkMwR2VpUXNoQVF6bEFRdEI2ZjhLSVFFTTVBRUxRZmoyQ2lFQkRPTUJDMEgzN0FvaEFRemlBUXRCMCtRS0lRRU00UUVMUWMyNUN5RUJET0FCQzBHbXJ3c2hBUXpmQVF0QitLUUxJUUVNM2dFTFFlR2FDeUVCRE4wQkMwR2trUXNoQVF6Y0FRdEIrWWNMSVFFTTJ3RUxRZWYrQ2lFQkROb0JDMEdhOWdvaEFRelpBUXRCcSt3S0lRRU0yQUVMUVlma0NpRUJETmNCQzBIbG1Rc2hBUXpXQVF0QnFaQUxJUUVNMVFFTFFZR0hDeUVCRE5RQkMwSDMvUW9oQVF6VEFRdEJwdlVLSVFFTTBnRUxRYS9yQ2lFQkRORUJDMEdINHdvaEFRelFBUXRCK3JjTElRRU16d0VMUWFxdEN5RUJETTRCQzBIam9nc2hBUXpOQVF0QnBwa0xJUUVNekFFTFFlT1BDeUVCRE1zQkMwSG5oZ3NoQVF6S0FRdEIzZjBLSVFFTXlRRUxRZk9yQ3lFQkRNZ0JDMEcyb1FzaEFRekhBUXRCb0pnTElRRU14Z0VMUWRDWEN5RUJETVVCQzBHQ2pnc2hBUXpFQVF0Qm00UUxJUUVNd3dFTFFiVDdDaUVCRE1JQkMwSHc4UW9oQVF6QkFRdEI3T2dLSVFFTXdBRUxRZUxnQ2lFQkRMOEJDMEhKdmdzaEFReStBUXRCa3JRTElRRU12UUVMUWVXb0N5RUJETHdCQzBIVG53c2hBUXk3QVF0QjhKWUxJUUVNdWdFTFFZQ05DeUVCRExrQkMwR1pnd3NoQVF5NEFRdEJ0dm9LSVFFTXR3RUxRY3J3Q2lFQkRMWUJDMEhPNXdvaEFReTFBUXRCMTcwTElRRU10QUVMUWZ5eUN5RUJETE1CQzBIOXB3c2hBUXl5QVF0QmxaNExJUUVNc1FFTFFhcVZDeUVCRExBQkMwSGNpd3NoQVF5dkFRdEJxNElMSVFFTXJnRUxRWWo1Q2lFQkRLMEJDMEhqN2dvaEFReXNBUXRCdnVZS0lRRU1xd0VMUWR1OEN5RUJES29CQzBHRHNnc2hBUXlwQVF0QnVyc0xJUUVNcUFFTFFkYVRDeUVCREtjQkMwSGQ5d29oQVF5bUFRdEI2SWdMSVFFTXBRRUxRYlAvQ2lFQkRLUUJDMEhDOWdvaEFReWpBUXRCMCt3S0lRRU1vZ0VMUWEva0NpRUJES0VCQzBHcHVRc2hBUXlnQVF0QmdxOExJUUVNbndFTFFkU2tDeUVCREo0QkMwRzltZ3NoQVF5ZEFRdEJoSkVMSVFFTW5BRUxRZG1IQ3lFQkRKc0JDMEhIL2dvaEFReWFBUXRCOXZVS0lRRU1tUUVMUVlmc0NpRUJESmdCQzBIajR3b2hBUXlYQVF0QnBMZ0xJUUVNbGdFTFFkU3RDeUVCREpVQkMwR2lvd3NoQVF5VUFRdEJndlVLSVFFTWt3RUxRWXZyQ2lFQkRKSUJDMEhqNGdvaEFReVJBUXRCenJjTElRRU1rQUVMUWY2c0N5RUJESThCQzBHM29nc2hBUXlPQVF0QitwZ0xJUUVNalFFTFFiZVBDeUVCREl3QkMwRzdoZ3NoQVF5TEFRdEJzZjBLSVFFTWlnRUxRYlAwQ2lFQkRJa0JDMEhmNmdvaEFReUlBUXRCanVJS0lRRU1od0VMUWVtMkN5RUJESVlCQzBHeHF3c2hBUXlGQVF0QmpxRUxJUUVNaEFFTFFmaVhDeUVCRElNQkMwSEM4Z29oQVF5Q0FRdEJ2dWtLSVFFTWdRRUxRY1RoQ2lFQkRJQUJDMEdidFFzaEFReC9DMEc2cWdzaEFReCtDMEd6b0FzaEFReDlDMEdrbHdzaEFReDhDMEhXalFzaEFReDdDMEh2Z3dzaEFReDZDMEdJK3dvaEFReDVDMEhFOFFvaEFReDRDMEhHNkFvaEFReDNDMEc4NEFvaEFReDJDMEdqdmdzaEFReDFDMEh3c3dzaEFReDBDMEhEcUFzaEFReHpDMEd4bndzaEFReHlDMEhHbGdzaEFReHhDMEhXakFzaEFReHdDMEh2Z2dzaEFReHZDMEdNK2dvaEFReHVDMEdnOEFvaEFReHRDMEd4cHdzaEFReHNDMEc5blFzaEFReHJDMEhTbEFzaEFReHFDMEhaaWdzaEFReHBDMEhhZ1FzaEFReG9DMEczK0FvaEFReG5DMEdFN2dvaEFReG1DMEc1NVFvaEFReGxDMEdDdXdzaEFReGtDMEhnc0FzaEFReGpDMEdwcGdzaEFReGlDMEcxbkFzaEFReGhDMEdta3dzaEFReGdDMEdEaWdzaEFReGZDMEhPZ0FzaEFReGVDMEdxamdzaEFReGRDMEdCaFFzaEFReGNDMEdwL0FvaEFReGJDMEh2dEFzaEFReGFDMEdPcWdzaEFReFpDMEdIb0FzaEFReFlDMEdTbkFzaEFReFhDMEdEa3dzaEFReFdDMEhnaVFzaEFReFZDMEdyZ0FzaEFReFVDMEc2OXdvaEFReFRDMEd0N1FvaEFReFNDMEhnc1FzaEFReFJDMEdEdWdzaEFReFFDMEhpcndzaEFReFBDMEcwcFFzaEFReE9DMEdkbXdzaEFReE5DMEdUa2dzaEFReE1DMEhGaUFzaEFReExDMEhacmdzaEFReEtDMEducEFzaEFReEpDMEdQbWdzaEFReElDMEhUa0FzaEFReEhDMEdyaHdzaEFReEdDMEdkL2dvaEFReEZDMEhNOVFvaEFReEVDMEhWNndvaEFReERDMEd4NHdvaEFReENDMEg5b2dzaEFReEJDMEhBbVFzaEFReEFDMEg5andzaEFRdy9DMEhmOUFvaEFRdytDMEc2NGdvaEFRdzlDMEdydHdzaEFRdzhDMEdPaGdzaEFRdzdDMEdMOUFvaEFRdzZDMEc0dGdzaEFRdzVDMEhmb0FzaEFRdzRDMEd5Z1FzaEFRdzNDMEhEaEFzaEFRdzJDMEdHL0FvaEFRdzFDMEdhNkFvaEFRdzBDMEdJNEFvaEFRd3pDMEhDc3dzaEFRd3lDMEdEbndzaEFRd3hDMEdZbGdzaEFRd3dDMEdnakFzaEFRd3ZDMEdhNXdvaEFRd3VDMEhxN3dvaEFRd3RDMEdodlFzaEFRd3NDMEhKc2dzaEFRd3JDMEhXdWdzaEFRd3FDMEcxc0FzaEFRd3BDMEg3cFFzaEFRd29DMEhrbXdzaEFRd25DMEhha2dzaEFRd21DMEh3a1FzaEFRd2xDMEczOHdvaEFRd2tDMEdUdGdzaEFRd2pDMEdPcXdzaEFRd2lDMEcxaXdzaEFRd2hDMEdFZ2dzaEFRd2dDMEhoK0FvaEFRd2ZDMEc4N2dvaEFRd2VDMEdYNWdvaEFRd2RDMEdHdkFzaEFRd2NDMEc0c1FzaEFRd2JDMEdKcHdzaEFRd2FDMEdWblFzaEFRd1pDMEdxbEFzaEFRd1lDMEhNdEFzaEFRd1hDMEdacVFzaEFRd1dDMEhNbFFzaEFRd1ZDMEhpcVFzaEFRd1VDMEhOckFzaEFRd1RDMEdRb2dzaEFRd1NDMEdNandzaEFRd1JDMEhqaFFzaEFRd1FDMEdML1FvaEFRd1BDMEhkOHdvaEFRd09DMEdzNmdvaEFRd05DMEdNOHdvaEFRd01DMEdJNmdvaEFRd0xDMEhtK1FvaEFRd0tDMEcvN3dvaEFRd0pDMEd6aWdzaEFRd0lDMEdXOFFvaEFRd0hDMEc4cVFzaEFRd0dDMEd1dkFzaEFRd0ZDMEhIdFFzaEFRd0VDMEdHdVFzaEFRd0RDMEcycmdzaEFRd0NDMEdFcEFzaEFRd0JDMEhjK0F3aEFRc2dBQ0FCRUJRYUN3OEFJQUFnQUJEU0J5QUJhaENSQkF0YkFRTi9JQUVnQUNnQ0tFc0VRQ0FBS0FJZ0lRSWdBQ0FCRUw0SklBQW9BaVFoQTBFQUlRRURRQ0FCSUFOR0JFQWdBQ0FDRURZRklBRkJBblFpQkNBQUtBSWdhaUFDSUFScUtBSUFOZ0lBSUFGQkFXb2hBUXdCQ3dzTEMvd0NBUWgvSXdCQkVHc2lCU1FBSUFBUUhDQUNLQUlBSVFJZ0JVRUFPZ0FNSUFVZ0FqWUNDQ01BUVJCcklnSWtBQ0FDSUFFMkFnd0Nmd0pBSUFVb0FnZ2lBeWdDQkNJR1JRMEFJQU1vQWdBaUJDQUdRUUowYWlFS0lBUW9BZ0FoQ1VFQklRWkJBU0VIQTBBZ0JDQUtSd1JBSUFRb0FnQWlBMFVOQWlBSVFmOEJjVVVFUUNBRElBTW9BZ0FvQWhnUkFBQWhDQXNnQmtIL0FYRUVmeUFHUVFBZ0F5QURLQUlBS0FJVUVRQUFHd1ZCQUFzaEJpQUhRUUZ4UlNBRElBbEdja1VFUUNBRElBa1ExZ2dnQjNFaEJ3c2dCRUVFYWlFRURBRUxDeUFDSUFZNkFBb2dBaUFJT2dBTElBZEJBWEVFUUNBQUlBRWdCU2dDQ0NJQUtBSUFLQUlBSUFBb0FnUVFxZ1lNQWdzakFFRVFheUlCSkFBZ0FFSEVBV29pQUJDMUJ5RURJQUlvQWd3aEJDQUJJQVVwQWdnM0F3Z2dBQ0FESUFRZ0FVRUlhaUFDTFFBS0lBSXRBQXNRd2hnaUF4QW9JQUFnQUNnQ0dFRUJhallDR0NBQlFSQnFKQUFnQXd3QkMwRUFDeUVBSUFKQkVHb2tBQ0FGUVJCcUpBQWdBQXMrQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDREFKL0lBRW9BZ3dpQUJDNEJrRUJjUVJBSUFBUXlRNE1BUXNnQUJESURnc2hBQ0FCUVJCcUpBQWdBQXR5QWdKL0FYd2pBRUVnYXlJQ0pBQWdBa0VJYWlJQklBQWdBQ2dDQUNnQ0pCRUNBQ0FCRVBBTEl3QkJFR3NpQUNRQUlBQWdBa0VZYWpZQ0NDQUFRUWhxSUFGQmZ5QUJMUUFJSWdFZ0FVSC9BVVliUVFKMFFhQ0NFR29vQWdBUkhnQWhBeUFBUVJCcUpBQWdBa0VnYWlRQUlBTUxEQUFnQUJEVENTQUFFS2tSQzE0QUlBQWdBQ0FCRU1FQkVMb0JJZ0FFUUVFQklRRUNRQUpBQWtBZ0FDOEJIa0VVYXc0REFnRUJBQXRCMVpJSFFmaXJBa0dSQjBIVm93TVFBQUFMSUFBb0FnQW9BZ2doQVFzZ0FROExRYWt2UWZpckFrR0pCMEhWb3dNUUFBQUxDd0FnQUVHNGdoQVFraE1MZ0FFQkJYOGpBRUhRQUdzaUF5UUFJQU5CRUdvaUJDQUJJQUVvQWdBb0Fnd1JBZ0FnQTBFZ2FpSUZRWjNmQmlBRUVEVWdBMEV3YWlJR0lBVkIxL0FKRUMwZ0EwRkFheUlISUFZZ0F5QUNFUGtISWdJUVRpQUFJQWNnQVVFUWFoQW5JQWNRRHhvZ0FoQVBHaUFHRUE4YUlBVVFEeG9nQkJBUEdpQURRZEFBYWlRQUM2SURBUVovSXdCQndBUnJJZ0lrQUNBQ1FmZ0FhaUlFUWdBM0Fyd0RJQVJDZ0lDQWdNQUJOd0swQXlBRUlBUTJBckFESUFSQkRCQ0dFQ0FDUW9DQWdJQ0FBVGNDYkNBQ0lBSkJ5QUJxTmdKb0lBRW9BZ0FpQXlnQ0FDSUJJQU1vQWdSQkFuUnFJUVVnQWtIb0FHb2hCd05BQWtBQ2Z5QUJJQVZIQkVBZ0FTZ0NBQ0lES0FJRUlnWkJrSUlTUnlBRFJYSkZCRUFnQWlBRFFTUnFOZ0l3SUFKQnlBQnFJQUpCTUdvUUpBd0RDeUFDSUFZMkFqQWdBa0ZBYXlBRUlBSkJNR29nQTBFUWFpSUdFS2NjSUFJb0FrQkJBa2NOQWlBREJIOGdBeWdDQkJEMkF3VkJBQXNOQWlBQ1FSQnFJZ1VnQXlBREtBSUFLQUlNRVFJQUlBSkJJR29pQTBHNnR3b2dCUkExSUFKQk1Hb2lBU0FEUWNIWUF4QXRJQUFnQVNBR0VDY2dBUkFQR2lBREVBOGFJQVVRRHhvZ0FDQUJRYUR1QXhBVUlnQWdBaWdDUkJDR0FTQUFFQThhUVFBTUFRc2dBa0VBT2dBTUlBSWdCellDQ0NBQUlBSkJDR3BCd3RnREVLWWNDeUVBSUFKQnlBQnFFQ01nQkJDa0hDQUVRUUEyQXJRRElBUWdCQ2dDc0FNUU5pQUNRY0FFYWlRQUlBQVBDeUFCUVFScUlRRU1BQXNBQzZNQkFRTi9Jd0JCSUdzaUJDUUFBa0FnQVNnQ01DSUNRUkJ4QkVBZ0FTZ0NMQ0lDSUFFb0FoZ2lBMGtFUUNBQklBTTJBaXdnQXlFQ0N5QUJLQUlVSVFNZ0FVRWdhaERuQ2lBQUlBTWdBaUFFUVJocUVKQU5HZ3dCQ3lBQ1FRaHhCRUFnQVNnQ0VDRUNJQUVvQWdnaEF5QUJRU0JxRU9jS0lBQWdBeUFDSUFSQkVHb1FrQTBhREFFTElBRkJJR29RNXdvZ0FDQUVRUWhxRUprWUdnc2dCRUVnYWlRQUMrb0hBZ1IvQVg0akFFSFFBbXNpQWlRQUlBQWdBU2dDQkJBekdpQUFJQUVvQWdRb0FpZ1FNeG9nQWtIQUFtb2dBU2dDQkNnQ0tFRWthaEJUQWtBZ0FTZ0NCQ2dDSkNJREJFQWdBQ0FERURNYUlBSkJxQUZxSWdNZ0FTZ0NCQ2dDSkVFa2FoQlRJQU5CNmZRQ0VLWUpJUVFnQXhBUEdpQUVSUTBCSUFJZ0FpZ0N4QUlnQWkwQXl3SWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nSzhBaUFDSUFJb0FzQUNJQUpCd0FKcUlBTWJOZ0s0QWlBQ0lBSXBBN2dDTndOSUl3QkJJR3NpQXlRQUlBTWdBaWtDU0NJR053TVFJQVpDZ0lDQWdIQ0RRb0NBZ0lDQUFsSUVmMEVBQlNBRFFSQTJBaHdnQTBHQzBBUTJBaGdnQXlBREtRTVlOd01JSUFOQkVHb2dBMEVJYWhBbFJRc2hCQ0FEUVNCcUpBQWdCQ0lEQkVBZ0FrRUJPZ0NzQVNBQ0lBTTJBcWdCSUFCQnVCMXFJQUpCcUFGcUlBRW9BZ0FRK3dzTUFnc2dBa0dvQVdvUVNTSURRUWhxSWdSQjh0b0hFQTRhSUFRZ0FrSEFBbW9pQlJBU0dpQUVRZHI0REJBT0dpQUNRUUUyQWpnZ0FrS0JnSUNBRURjQ2xBRWdBa0hJaUJJMkFwQUJJQUpCQ1RZQ2pBRWdBa0dRMndjMkFvZ0JJQUlnQWlnQ3hBSWdBaTBBeXdJaUJDQUVRUmgwUVJoMVFRQklJZ1FiTmdLa0FTQUNJQUlvQXNBQ0lBVWdCQnMyQXFBQklBSWdBaWtEa0FFM0F6QWdBaUFDS1FPSUFUY0RLQ0FDSUFJcEE2QUJOd05BSUFKQlFHc2dBa0V3YWlBRElBSkJLR29RMWc4Z0FrSDRBR29pQkNBRFFReHFFRUlnQUNBRUlBRW9BZ1JCRUdvUXl4QWdCQkFQR2lBREVGRU1BUXNnQWlBQ0tBTEVBaUFDTFFETEFpSURJQU5CR0hSQkdIVkJBRWdpQXhzMkFuUWdBaUFDS0FMQUFpQUNRY0FDYWlBREd6WUNjQ0FDSUFJcEEzQTNBeUFqQUVFZ2F5SURKQUFnQXlBQ0tRSWdJZ1kzQXhBZ0JrS0FnSUNBY0lOQ2dJQ0FnTkFDVWdSL1FRQUZJQU5CRlRZQ0hDQURRZjRKTmdJWUlBTWdBeWtER0RjRENDQURRUkJxSUFOQkNHb1FKVVVMSVFRZ0EwRWdhaVFBSUFRaUF3UkFJQUpCQURvQXJBRWdBaUFETmdLb0FTQUFRYmdkYWlBQ1FhZ0JhaUFCS0FJQUVQc0xEQUVMSUFKQnFBRnFFRWtpQTBFSWFpSUVRWWVXQ1JBT0dpQUVJQUpCd0FKcUlnVVFFaG9nQkVIYStBd1FEaG9nQWtFQk5nSVFJQUpDZ1lDQWdCQTNBbHdnQWtITWlCSTJBbGdnQWtIYytBdzJBbEFnQWkwQXl3SWhCQ0FDUVFBMkFsUWdBaUFDS0FMRUFpQUVJQVJCR0hSQkdIVkJBRWdpQkJzMkFtd2dBaUFDS0FMQUFpQUZJQVFiTmdKb0lBSWdBaWtEV0RjRENDQUNJQUlwQTFBM0F3QWdBaUFDS1FOb053TVlJQUpCR0dvZ0FrRUlhaUFESUFJUTFnOGdBa0g0QUdvaUJDQURRUXhxRUVJZ0FDQUVJQUVvQWdSQkVHb1F5eEFnQkJBUEdpQURFRkVMSUFKQndBSnFFQThhSUFKQjBBSnFKQUFMQXdBQUMzY0JBWDhDUUFKQUEwQWdBQ0FCRUxvQklnRkZEUUlDUUFKQUFrQWdBUzhCSGlJQ1FSUnJEZ1VFQkFRQkFRQUxJQUpCN2lsSERRRkJBQThMSUFFb0FnQW9BZ3dQQ3lBQktBSWtJZ0VOQUF0QjFaSUhRZmlyQWtHQ0IwRzc3Z0lRQUFBTFFRRVBDMEdwTDBINHF3SkI3QVpCdSs0Q0VBQUFDNWNDQWdSL0FYMGpBRUd3QVdzaUFpUUFBbjFEQUFDQWZ5QUFRd0RnZjBkZURRQWFRd0FBZ1A4Z0FFTUE0SC9IWFEwQUdpQUF2Q0lCUWYvLy8vOEhjVVVnQVVHQWdJRDhCM0ZCZ0lDQS9BZEdja1VFUUVHQVFDRURBa0FnQVNBQWl5SUZRd0FBZ0RoZ0JIOUJnRUFGSUFWREFBQ0FNMkJGRFFFZ0FVRVhka0gvQVhFaUEwSHhBR3RCZFUwRVFDQUNRZUNmQlVINUFVRUpJQUpCb0FGcUVCMGlBUkFYSWdSQkdHcEJpZHdJRUE0YUlBUVFHQ0FCRUI0Z0FrSGdud1ZCL2dGQkNTQUNRYUFCYWhBZElnRVFGeUlFUVJocVFiZmJDQkFPR2lBRUVCZ2dBUkFlQzBGL1FmNEFJQU5yZEF0eHZnd0NDME1BQUFBQVF3QUFBSUFnQUVNQUFBQUFYaHNNQVFzZ0FBc2hCU0FDUWJBQmFpUUFJQVVMRlFBZ0FFR2tLa0hwQVVIc0FVR0NnSkFWRUkwVEN6b0NBWDhCZmlBQktRTUlJZ01nQUNrREVJTWdBMUVFZndOQUlBQkZJQUFnQVVaeVJRUkFJQUFvQWdBaEFBd0JDd3NnQUVFQVJ3VkJBQXNMWlFFRGZ5TUFRUkJySWdJa0FDQUFFSWdESWdBZ0FDZ0NBRUVNYXlJREtBSUFhaUlCSUFFb0FnUkJoQWh5TmdJRUlBSkJDR29pQVNBQUlBTW9BZ0JxRUlzR0VJWUlJQUVRWkNBQUlBQW9BZ0JCREdzb0FnQnFRUWsyQWdnZ0FrRVFhaVFBSUFBTEZ3QWdBQkROQ1NBQUxRQUlRUUZIQkVBUWJ3QUxJQUFMVWdFQmZ5TUFRYkFCYXlJSEpBQWdBQ0FCUmlBQ1FRQWdBRVVnQVVWeUczSkZCRUFnQnlBRklBWWdBeUFIUWFBQmFoQWRJZ0FRRnlJQlFSaHFJQVFRRGhvZ0FSQVlJQUFRSGdzZ0IwR3dBV29rQUFzM0FRRi9JQUFvQWdRaUFRUkFJQUVoQUFOQUlBQWlBU2dDQUNJQURRQUxJQUVQQ3dOQUlBQWdBQ2dDQ0NJQUtBSUFSdzBBQ3lBQUN4RUFJQUFvQWdSQkNHb2dBUkFTR2lBQUN5RUFJQUFnQVNBQ0VQUVpJZ0VwQWdBM0FnQWdBQ0FCS0FJSU5nSUlJQUVRVlFzUEFDQUFLQUlJRUxFSElBQVF0d0lMQ3dBZ0FDQUJRUlVROVFZTENBQWdBQkM3QWhvTEJBQkJBQXNOQUNBQUlBRkJDR29RK1FjYUM1a0JBUU4vSUFFc0FBdEJBRTRFUUNBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlJTmdJSUlBQVBDeUFCS0FJQUlRTUNRQUpBQWtBZ0FTZ0NCQ0lCRU5VSUJFQWdBQkNLQlNFQ0lBQWdBUkNMQlF3QkN5QUFFSmdHSUFGQmNFOE5BU0FBSUFFUWx3WkJBV29pQkJDVUJpSUNFSllHSUFBZ0JCQ1ZCaUFBSUFFUTB3UUxJQUlRZ3dFZ0F5QUJRUUZxRUxrREdnd0JDeEM0QXdBTElBQUxKUUVCZndOQUlBRkJBMGNFUUNBQUlBRkJBblJxUVFBMkFnQWdBVUVCYWlFQkRBRUxDd3NzQUNBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlZTmdJWUlBQWdBU2tDRURjQ0VDQUFJQUVwQWdnM0FnZ2dBQXN1QVFGL0l3QkJFR3NpQVNRQUlBQUVmeUFBUVFocUJTQUJRUWhxRUpnRUN5Z0NBQ0VBSUFGQkVHb2tBQ0FBQzRJTEFSSi9Jd0JCSUdzaUJ5UUFJQWRCQURZQ0dDQUhRZ0EzQXhBZ0FTZ0NFQ2dDR0NFRUl3QkJNR3NpQ1NRQUlBZEJFR29pQ2lBRUVONENJQW9nQkVFRWFoRGVBaUFLSUFSQkNHb1EzZ0lnQ2lBRVFReHFFTjRDSUFvZ0JFRVFhaERlQWlBS0tBSUFJUThnQ2lnQ0JDRVFJQWxDQURjREtDQUpRUUEyQWlRZ0NVRUFPZ0FqSUFsQkFEb0FJa0VnRUJVaUFpQUtOZ0lFSUFKQitQWVNOZ0lBSUFJZ0JEWUNIQ0FDUVFBNkFBZ2dBaUFKUVNKcU5nSVlJQUlnQ1VFamFqWUNGQ0FDSUFsQkpHbzJBaEFnQWlBSlFTaHFOZ0lNSUFrZ0FqWUNHQ0FKUVFocUlRVWdCRUVjYWlFRElBUkJJR29oQWdOQUlBTWdBaWdDQUNJQ1JnUkFJQVJCNEFCcUlRTWdCRUhrQUdvaEFnTkFJQU1nQWlnQ0FDSUNSZ1JBSUFSQnBBRnFJUU1nQkVHb0FXb2hBZ05BSUFNZ0FpZ0NBQ0lDUmdSQUlBUW9BdVFCSWdJRVFDQUNJQVZCQVJDTkF3c2dCQ2dDNkFFaUFnUkFJQUlnQlVFQkVJMERDeUFFUWZBQmFpRURJQVJCOUFGcUlRSURRQ0FESUFJb0FnQWlBa1lFUUNBRVFiUUNhaUVESUFSQnVBSnFJUUlEUUNBRElBSW9BZ0FpQWtZRVFDQUVRZmdDYWlFRElBUkIvQUpxSVFJRFFDQURJQUlvQWdBaUFrWUVRQ0FFUWJ3RGFpRURJQVJCd0FOcUlRSURRQ0FESUFJb0FnQWlBa1lFUUNBRVFZQUVhaUVESUFSQmhBUnFJUUlEUUNBRElBSW9BZ0FpQWtZRVFDQUVRWWdGYWlFRElBUkJqQVZxSVFJRFFDQURJQUlvQWdBaUFrWUVRQ0FFUWN3RmFpRURJQVJCMEFWcUlRSURRQ0FESUFJb0FnQWlBa1lFUUNBRVFjUUVhaUVESUFSQnlBUnFJUUlEUUNBRElBSW9BZ0FpQWtZRVFDQUVLQUtRQmlFUklBUW9Bb3dHSVFJRFFDQUNJQkZHQkVBQ1FDQUVLQUtjQmlFRElBUW9BcGdHSVFJRFFDQUNJQU5HRFFFZ0FpQUZRUUVRalFNZ0FrRkFheUVDREFBTEFBc0ZJQUlvQWdBaENDTUFRU0JySWcwa0FDQU5JQVUyQWd3Z0RVR3c5QkkyQWdnZ0RTQU5RUWhxSWdzMkFoZ0NRQ0FJS0FJQUlnTUVRQ0FESUF0QkFSRCtBa1VOQVFzZ0NDZ0NDQ0VHSUFnb0FnUWhBd05BSUFNZ0JrY0VRQ0FES0FJQUlRd2dBMEVFYWlFRElBd2dDMEVCRVA0Q0RRRU1BZ3NMSUFoQkZHb2hEQ0FJUVJocUlRTURRQ0FNSUFNb0FnQWlCa2NFUUNBR1FRUnFJUU1nQmlBTFFRRVEvZ0lOQVF3Q0N3c2dDQ2dDV0NFU0lBZ29BbFFoQXdOQUlBTWdFa2NFUUNBREtBSUFJUVlnQTBFRWFpRURRUUFoREFKQUlBWW9BZ1FpRGdSQUlBNGdDMEVCRVA0Q1JRMEJDeUFHUVF4cUlSTWdCa0VRYWlFR0EwQWdCaWdDQUNJT0lCTkdJZ3dOQVNBT1FRUnFJUVlnRGlBTFFRRVEvZ0lOQUFzTElBd05BUXdDQ3dzZ0NDZ0NZQ0lEQkVBZ0F5QUxRUUVRL2dKRkRRRUxJQWdvQW1naEJpQUlLQUprSVFNRFFDQURJQVpHRFFFZ0F5Z0NBQ0VJSUFOQkJHb2hBeUFJSUF0QkFSRCtBZzBBQ3dzZ0N4QVdJQTFCSUdva0FDQUNRUVJxSVFJTUFRc0xCU0FDSUFWQkFSQ05BeUFDUVFScUlRSU1BUXNMQlNBQ0lBVkJBUkNOQXlBQ1FRUnFJUUlNQVFzTEJTQUNJQVZCQVJDTkF5QUNRUVJxSVFJTUFRc0xCU0FDSUFWQkFSQ05BeUFDUVFScUlRSU1BUXNMQlNBQ0lBVkJBUkNOQXlBQ1FRUnFJUUlNQVFzTEJTQUNJQVZCQVJDTkF5QUNRUVJxSVFJTUFRc0xCU0FDSUFWQkFSQ05BeUFDUVFScUlRSU1BUXNMQlNBQ0lBVkJBUkNOQXlBQ1FRUnFJUUlNQVFzTEJTQUNJQVZCQVJDTkF5QUNRUVJxSVFJTUFRc0xCU0FDSUFWQkFSQ05BeUFDUVFScUlRSU1BUXNMQlNBQ0lBVkJBUkNOQXlBQ1FRUnFJUUlNQVFzTElBVVFGaUFLS0FJQUlCQWdEMnRxUVFocklBUW9BZ3cyQWdBZ0NVRXdhaVFBSUFkQkFEWUNDQ0FIUWdBM0F3QWdBU0FIRU5NS0lBQWdBU2dDRUNnQ0JDQUhLQUlBSWdBZ0J5Z0NCQ0FBYTBFQ2RTQUhLQUlRSWdBZ0J5Z0NGQ0FBYTBFQ2RVRWdFSTBYSUFjUU1ob2dDaEF5R2lBSFFTQnFKQUFMQ3dBZ0FFR2dpeElRMFF3TFRnRURmeU1BUWJBQmF5SUJKQUFnQUJDdEV5SUFSUVJBSUFGQjJLOERRYzBBUVE0Z0FVR2dBV29RSFNJQ0VCY2lBMEVZYWtIdHFRZ1FEaG9nQXhBWUlBSVFIZ3NnQVVHd0FXb2tBQ0FBQ3c0QUlBQWdBU2tDQURjQ0FDQUFDMFFCQW44akFFRVFheUlDSkFBZ0FFRUFFQ0loQVFOQUlBRkZJQUFnQVVaeVJRUkFJQUpCQURZQ0RDQUJJZ0FnQWtFTWFoQWlJUUVNQVFzTElBSkJFR29rQUNBQkM4TUJBUU4vSXdCQklHc2lBeVFBSUFBdEFBUWhCU0FBS0FJQUlnQVFIQ0FBUWNnQ2FpRUFBa0FnQlFSQUlBRW9BZ0FoQlNBRElBRW9BZ1FnQVMwQUN5SUVJQVJCR0hSQkdIVkJBRWdpQkJzMkFod2dBeUFGSUFFZ0JCczJBaGdnQXlBREtRTVlOd01JSUFBZ0EwRUlhaUFDRVBrQkRBRUxJQUVvQWdBaEJTQURJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFZCQUVnaUJCczJBaFFnQXlBRklBRWdCQnMyQWhBZ0F5QURLUU1RTndNQUlBQWdBeUFDRU5VQkN5QURRU0JxSkFBTEVnQWdBRUVBTmdJVUlBQWdBQ2dDRUJBMkN6VUJBMzhqQUVFZ2F5SUNKQUFnQWtFSWFpQUNRUlZxSWdNZ0FrRWdhaUlFSUFFUW1STWdBQ0FESUFJb0FnZ1E1Z2tnQkNRQUN4Z0FJQUF0QUJsRkJFQkJBQThMSUFBZ0FDMEFHQkNSQkFzTEFDQUFRYXlDRUJEUkRBc1BBQ0FBRU0wSklBQXRBQWhCQWtZTEN3QWdBRUdnaVJJUTRSSUxDd0FnQUNnQ0FCRE1CeG9MdUFJQkIzOGpBRUhnQUdzaUF5UUFJQU1nQVRZQ1hDQUFJQU5CM0FCcUVPd0JSUVJBSUFOQjBBQnFJZ0VnQWhDSEZ5QURRVGhxSUFCQkZHb2lCeUFEUVVCcklBRVFWQ0lDRUpjTElBTXRBRHhGQkVBZ0EwRW9haUFEUWRBQWFrR3h2UVVRdUFKQkFDRUJJQU10QUR3aEJBTkFJQVFFUUNBRFFTaHFFQThhQlNBRFFRaHFJZ1lnQVJDTUJDQURRUmhxSWdRZ0JpQURRU2hxSWdVb0FnQWdCU0FGTFFBTElnaEJHSFJCR0hWQkFFZ2lDUnNnQlNnQ0JDQUlJQWtiRUowVElnVXBBZ0EzQWdBZ0JDQUZLQUlJTmdJSUlBVVFWU0FDSUFRUW5nRWdCQkFQR2lBR0VBOGFJQVFnQnlBQ0VKY0xJQU1nQXlnQ0dEWUNPQ0FESUFNdEFCd2lCRG9BUENBQlFRRnFJUUVNQVFzTEN5QUFJQU5CM0FCcUVKZ0xJQUlRNEFJZ0FoQVBHaUFEUWRBQWFoQVBHZ3NnQTBIZ0FHb2tBQXNkQUNBQUtBSVFJZ0JGQkVBUWJ3QUxJQUFnQUNnQ0FDZ0NHQkVBQUFzTEFDQUFRZ0EzQWdBZ0FBdFdBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQUovSUFGQlAwMEVRQ0FBS1FNQUlBR3RpS2RCQVhFTUFRdEJBQ0FBS0FJSUlnQkZEUUFhSUFBZ0FrRU1haERBQXlBQVFRUnFSd3NoQVNBQ1FSQnFKQUFnQVFzU0FDQUFJQUkyQWdRZ0FDQUJOZ0lBSUFBTFlBRUNmeU1BUWNBQmF5SUNKQUFnQWlBQk5nSzhBU0FCUlFSQUlBSkJDR3BCcFlvRlFZOEJRUWdnQWtHb0FXb1FIU0lCRUJjaUEwRVlha0dscWdnUURob2dBeEFZSUFFUUhnc2dBRUVRYWlBQ1Fid0JhaER3SENBQ1FjQUJhaVFBQzVRQ0FRTi9Jd0JCMEFGcklnVWtBQ0FGSUFNMkFzUUJJQVVnQkRnQ3lBRWdBeERLQTBVRVFDQUZRUkJxUWNXdEJVR1ZCRUVJSUFWQnNBRnFFQjBpQmhBWElnZEJHR3BCd3VZSUVBNGFJQWNRR0NBR0VCNExJQUFDZnlBQUFuOGdCSXREQUFDQWYxMUZCRUFnQlVHd0FXb2lBQ0FESUFNb0FnQW9BZ3dSQWdBZ0JTQUZLQUswQVNBRkxRQzdBU0lHSUFaQkdIUkJHSFZCQUVnaUJoczJBZ3dnQlNBRktBS3dBU0FBSUFZYk5nSUlJQVVnQlNrRENEY0RBQ0FGUVJCcUlnWWdCQ0FGRVA0RElBRWdCaUFDRUYwZ0JoQVBHaUFBRUE4YVFRSWdBUzBBQkVVTkFob2dBU0FERUpFQkRBRUxJQUVvQWdBZ0JVSEVBV29nQlVISUFXb1Fyd0lMTmdJQVFRRUxPZ0FFSUFWQjBBRnFKQUFMR3dFQmZ5QUFLQUlBSVFJZ0FDQUJOZ0lBSUFJRVFDQUNFQjhMQ3hVQUlBQkJoT0VTTmdJQUlBQkJGR29RdXdZZ0FBdlhCUUVGZnlNQVFSQnJJZ1lrQUNBR1FRaHFJQUVnQWlBREVEZ1FsZ01DUUFKQUlBWW9BZ2dFUUNBR0tBSU1EUUVMSUFBUVp4b01BUXNnQVNnQ0FDRUJJQVpCQ0dvaEJ5TUFRU0JySWdNa0FBSkFBa0FDUUFKQUFrQUNRQ0FCSUFJUStBb0VRRUVCSVFRZ0FrRUJFRGdpQWtFbmF5SUZRUVpMUVFFZ0JYUkJ5UUJ4UlhJTkFRd0NDMEVCSVFRQ1FDQUNLQUlVSWdKQjd3QnJJZ1ZCSEUxQkFFRUJJQVYwUVlHQWdzZ0JjUnNOQUNBQ1FhMEJheUlGUVFaTlFRQkJBU0FGZEVIVkFIRWJEUUJCQUNFRUMwRUJJUVVnQWtHc0FXc2lDRUVHVFVFQVFRRWdDSFJCMVFCeEd3MERBa0FnQWtHR0FXc09CQVFEQXdRQUN5QUNRZkFBUmcwRERBSUxBa0FDUUNBQ1FRVnJEZ01DQVFJQUN5QUNRY29BUmcwQkMwRUFJUVFMUVFFaEJTQUNRY3NBUmlBQ1FTWnJJZ0pCQmsxQkFFRUJJQUowUWNrQWNSdHlEUUVMSUFSRkRRRkJBQ0VGUVFFaEJBc0NRQ0FIS0FJQUlnSUVRQ0FIS0FJRURRRUxJQUZCQURvQWxBTWdBVUdvQkdwQi9mQU1FQmthSUFBUVp4b01BZ3NnQjBFRWFpRUlJQUlRN2dNaUFrVUVRQ0FCUVFBNkFKUURJQUZCcUFScVFiVHpDeEFaSUFnb0FnQW9BZ1JCQkdvUXNBTkIyL2dNRUJrYUlBQVFaeG9NQWdzQ1FDQUZCRUFnQVNBQ0VJNFpJZ0pGRFFFZ0EwRUFOZ0lZSUFOQ0FEY0RFQ0FEUWdBM0F3Z2dBQ0FDSUFGQklHb2lBQ0FEUVFocUlBSWdBQ0FDS0FJQUtBSUlFUUVBSUFnUTFnUVFhUm9NQXdzZ0JFVU5BQUovUVFBaEJDQUNLQUlFSWdWQnNNc1NSZ1JBSUFGQmtBTnFFT3dEREFFTEFrQWdCVUdvekJKSERRQWdBaWdDQ0NnQ0JFR3d5eEpIRFFBZ0FVR1FBMm9pQkNBRUVPd0RJQUlvQWd3US93SWhCQXNnQkFzaUFrVU5BQ0FEUVFBMkFoZ2dBMElBTndNUUlBTkNBRGNEQ0NBQUlBSWdBVUVnYWlJQUlBTkJDR29nQWlBQUlBSW9BZ0FvQWdnUkFRQWdDQkRXQkJCcEdnd0NDeUFBSUFjUVd4b01BUXNnQUNBSEVGc2FDeUFEUVNCcUpBQUxJQVpCRUdva0FBc0ZBQkFCQUFzWEFDQUFJQUVRdWdFaUFFVUVRRUVBRHdzZ0FDOEJIZ3RNQVFGL0lBQW9BaFFpQWlBQUtBSVlUd1JBSUFBZ0FDZ0NHQ0lDUVFGMFFRSWdBaHNRMWdJZ0FDZ0NGQ0VDQ3lBQUlBSkJBV28yQWhRZ0FDZ0NFQ0FDUVFKMGFpQUJLQUlBTmdJQUM1UUNBUU4vSXdCQjBBRnJJZ1VrQUNBRklBTTJBc1FCSUFVZ0JEZ0N5QUVnQXhES0EwVUVRQ0FGUVJCcVFjV3RCVUdWQkVFSUlBVkJzQUZxRUIwaUJoQVhJZ2RCR0dwQnd1WUlFQTRhSUFjUUdDQUdFQjRMSUFBQ2Z5QUFBbjhnQkl0REFBQ0FmMTFGQkVBZ0JVR3dBV29pQUNBRElBTW9BZ0FvQWd3UkFnQWdCU0FGS0FLMEFTQUZMUUM3QVNJR0lBWkJHSFJCR0hWQkFFZ2lCaHMyQWd3Z0JTQUZLQUt3QVNBQUlBWWJOZ0lJSUFVZ0JTa0RDRGNEQUNBRlFSQnFJZ1lnQkNBRkVQNERJQUVnQmlBQ0VGMGdCaEFQR2lBQUVBOGFRUUlnQVMwQUJFVU5BaG9nQVNBREVKRUJEQUVMSUFFb0FnQWdCVUhFQVdvZ0JVSElBV29RclFJTE5nSUFRUUVMT2dBRUlBVkIwQUZxSkFBTG1BSUJBMzhqQUVIUUFXc2lCU1FBSUFVZ0F6WUN4QUVnQlNBRU9RUElBU0FERU1vRFJRUkFJQVZCRUdwQnhhMEZRWlVFUVFnZ0JVR3dBV29RSFNJR0VCY2lCMEVZYWtIQzVnZ1FEaG9nQnhBWUlBWVFIZ3NnQUFKL0lBQUNmeUFFbVVRQUFBQUFBQUR3ZjJORkJFQWdCVUd3QVdvaUFDQURJQU1vQWdBb0Fnd1JBZ0FnQlNBRktBSzBBU0FGTFFDN0FTSUdJQVpCR0hSQkdIVkJBRWdpQmhzMkFnd2dCU0FGS0FLd0FTQUFJQVliTmdJSUlBVWdCU2tEQ0RjREFDQUZRUkJxSWdZZ0JDQUZFSVlHSUFFZ0JpQUNFRjBnQmhBUEdpQUFFQThhUVFJZ0FTMEFCRVVOQWhvZ0FTQURFSkVCREFFTElBRW9BZ0FnQlVIRUFXb2dCVUhJQVdvUXJnSUxOZ0lBUVFFTE9nQUVJQVZCMEFGcUpBQUxPQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDSUFJQUZCQ0dvZ0FSRHBDaG9nQUJDdkF5QUFFRlVnQVVFUWFpUUFJQUFMQ1FBZ0FDQUJFTklCQzV3QkFRUi9Ba0FnQVNBQUVEc2lBa3NFUUNNQVFSQnJJZ1FrQUNBQklBSnJJZ0lFUUNBQUVKc0JJUU1nQUJBN0lnRWdBbW9oQlNBQ0lBTWdBV3RMQkVBZ0FDQURJQVVnQTJzZ0FTQUJRUUFROUFrTElBQVF3UU1pQXhDREFTQUJhaUFDUVFBUW5CUWdBQ0FGRUpnSUlBUkJBRG9BRHlBRElBVnFJQVJCRDJvUTBRSUxJQVJCRUdva0FBd0JDeUFBSUFBUXdRTVFnd0VnQVJDb0V3c0xDd0FnQUNBQlFSWVE5UVlMTGdFQmZ3SkFJQUFnQVJBZ0lnRkZEUUFnQVM4QkhrRXJSdzBBSUFBZ0FTZ0NKRUVCUVFFUWdoWWhBZ3NnQWdzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFNkFBQWdBMEVCYWlFRElBSkJBV3NpQWcwQUN3c2dBQXNWQUNBQUxRQVlSUVJBUVFBUEN5QUFRUUFRa1FRTEtnRUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBU2dDREJEQkF4Q0RBU0VBSUFGQkVHb2tBQ0FBQ3d3QUlBQWdBVUgwQmhEYUNRc3pBUUYvSUFJRVFDQUFJUU1EUUNBRElBRXRBQUE2QUFBZ0EwRUJhaUVESUFGQkFXb2hBU0FDUVFGcklnSU5BQXNMSUFBTERBQWdBQ0FCUVJ4cUVQa0dDNjBNQVFaL0l3QkJFR3NpQkNRQUlBUWdBRFlDREFKQUlBQkIwd0ZOQkVCQjhQOE5RYkNCRGlBRVFReHFFUFVVS0FJQUlRSU1BUXNnQUVGOFR3UkFFRzhBQ3lBRUlBQWdBRUhTQVc0aUJrSFNBV3dpQW1zMkFnaEJzSUVPUWZDQ0RpQUVRUWhxRVBVVVFiQ0JEbXRCQW5VaEJRTkFJQVZCQW5SQnNJRU9haWdDQUNBQ2FpRUNRUVVoQUFOQUFrQWdBRUV2UmdSQVFkTUJJUUFEUUNBQ0lBQnVJZ0VnQUVrTkJTQUNJQUFnQVd4R0RRSWdBaUFBUVFwcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVF4cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVJCcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVJKcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVJacUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVJ4cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVI1cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVNScUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVNocUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVNwcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVM1cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVRScUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVRwcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVR4cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUWNJQWFpSUJiaUlESUFGSkRRVWdBaUFCSUFOc1JnMENJQUlnQUVIR0FHb2lBVzRpQXlBQlNRMEZJQUlnQVNBRGJFWU5BaUFDSUFCQnlBQnFJZ0Z1SWdNZ0FVa05CU0FDSUFFZ0EyeEdEUUlnQWlBQVFjNEFhaUlCYmlJRElBRkpEUVVnQWlBQklBTnNSZzBDSUFJZ0FFSFNBR29pQVc0aUF5QUJTUTBGSUFJZ0FTQURiRVlOQWlBQ0lBQkIyQUJxSWdGdUlnTWdBVWtOQlNBQ0lBRWdBMnhHRFFJZ0FpQUFRZUFBYWlJQmJpSURJQUZKRFFVZ0FpQUJJQU5zUmcwQ0lBSWdBRUhrQUdvaUFXNGlBeUFCU1EwRklBSWdBU0FEYkVZTkFpQUNJQUJCNWdCcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUWVvQWFpSUJiaUlESUFGSkRRVWdBaUFCSUFOc1JnMENJQUlnQUVIc0FHb2lBVzRpQXlBQlNRMEZJQUlnQVNBRGJFWU5BaUFDSUFCQjhBQnFJZ0Z1SWdNZ0FVa05CU0FDSUFFZ0EyeEdEUUlnQWlBQVFmZ0FhaUlCYmlJRElBRkpEUVVnQWlBQklBTnNSZzBDSUFJZ0FFSCtBR29pQVc0aUF5QUJTUTBGSUFJZ0FTQURiRVlOQWlBQ0lBQkJnZ0ZxSWdGdUlnTWdBVWtOQlNBQ0lBRWdBMnhHRFFJZ0FpQUFRWWdCYWlJQmJpSURJQUZKRFFVZ0FpQUJJQU5zUmcwQ0lBSWdBRUdLQVdvaUFXNGlBeUFCU1EwRklBSWdBU0FEYkVZTkFpQUNJQUJCamdGcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVpRQmFpSUJiaUlESUFGSkRRVWdBaUFCSUFOc1JnMENJQUlnQUVHV0FXb2lBVzRpQXlBQlNRMEZJQUlnQVNBRGJFWU5BaUFDSUFCQm5BRnFJZ0Z1SWdNZ0FVa05CU0FDSUFFZ0EyeEdEUUlnQWlBQVFhSUJhaUlCYmlJRElBRkpEUVVnQWlBQklBTnNSZzBDSUFJZ0FFR21BV29pQVc0aUF5QUJTUTBGSUFJZ0FTQURiRVlOQWlBQ0lBQkJxQUZxSWdGdUlnTWdBVWtOQlNBQ0lBRWdBMnhHRFFJZ0FpQUFRYXdCYWlJQmJpSURJQUZKRFFVZ0FpQUJJQU5zUmcwQ0lBSWdBRUd5QVdvaUFXNGlBeUFCU1EwRklBSWdBU0FEYkVZTkFpQUNJQUJCdEFGcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUWJvQmFpSUJiaUlESUFGSkRRVWdBaUFCSUFOc1JnMENJQUlnQUVHK0FXb2lBVzRpQXlBQlNRMEZJQUlnQVNBRGJFWU5BaUFDSUFCQndBRnFJZ0Z1SWdNZ0FVa05CU0FDSUFFZ0EyeEdEUUlnQWlBQVFjUUJhaUlCYmlJRElBRkpEUVVnQWlBQklBTnNSZzBDSUFJZ0FFSEdBV29pQVc0aUF5QUJTUTBGSUFJZ0FTQURiRVlOQWlBQ0lBQkIwQUZxSWdGdUlnTWdBVWtOQlNBQVFkSUJhaUVBSUFJZ0FTQURiRWNOQUFzTUFRc2dBaUFBUVFKMFFmRC9EV29vQWdBaUFXNGlBeUFCU1EwRElBQkJBV29oQUNBQ0lBRWdBMnhIRFFFTEMwRUFJQVZCQVdvaUFDQUFRVEJHSWdBYklRVWdBQ0FHYWlJR1FkSUJiQ0VDREFBTEFBc2dCRUVRYWlRQUlBSUx3Z0VCQlg4akFFRVFheUlDSkFBZ0FrSGNGellDQkNBQ0lBQTJBZ0FnQWtFQU5nSUlJd0JCRUdzaUF5UUFJQUFvQWdCQmYwY0VRQ0FESUFOQkNHb2dBaEN3RkJDQUF5RUJBMEFnQUNnQ0FFRUJSZzBBQ3lBQUtBSUFSUVJBSUFCQkFUWUNBQ0FCS0FJQUtBSUFJZ0VvQWdBZ0FTZ0NDQ0lGUVFGMWFpRUVJQUVvQWdRaEFTQUVJQVZCQVhFRWZ5QUVLQUlBSUFGcUtBSUFCU0FCQ3hFREFDQUFRWDgyQWdBTEN5QURRUkJxSkFBZ0FDZ0NCQ0VBSUFKQkVHb2tBQ0FBUVFGckMza0JCSDlCb01NVklRRkJ2d1VoQWdOQUlBSUVRQ0FDSUFKQkFYWWlBMEYvYzJvZ0F5QUJJQU5CNkFCc2FpSURLQUlFSUFCSklnUWJJUUlnQTBIb0FHb2dBU0FFR3lFQkRBRUxDd0pBSUFGQnVQNFpSZzBBSUFFb0FnUWdBRWNOQUNBQktBSUFEd3RCZ0xvSlFiMndBa0hMQVVHeXZnTVFBQUFMK1FRQkIzOGpBRUVRYXlJSUpBQWdBUkMwQmlBSVFRaHFJQUVRc0JRaEJ5QUFRUWhxSWdNb0FnQWlBU0FBS0FJTUVJSUVJQUpOQkg4Q1FDQURLQUlBSWdRZ0F5Z0NCQkNDQkNJQklBSkJBV29pQUVrRVFDTUFRU0JySWdra0FBSkFJQUFnQVdzaUJDQURFTllGS0FJQUlBTW9BZ1FpQUd0QkFuVk5CRUFnQXlBRUVPY1REQUVMSUFNUThBa2hCU0FESUFNb0FnQWdBQkNDQkNBRWFoRFhFeUVBSUFNb0FnQWdBeWdDQkJDQ0JDRUdJQWxCQ0dvaUFVRU1haENZQkVFRWFpQUZFSUFER2lBQklBQUVmeUFCS0FJUUlBQVEwUk1GUVFBTElnVTJBZ0FnQVNBRklBWkJBblJxSWdZMkFnZ2dBU0FHTmdJRUlBRVE3Z2tnQlNBQVFRSjBhallDQUNNQVFSQnJJZ0FrQUNBQUlBRW9BZ2cyQWdBZ0FTZ0NDQ0VGSUFBZ0FVRUlhallDQ0NBQUlBVWdCRUVDZEdvMkFnUWdBQ0lFS0FJQUlRVURRQ0FFS0FJRUlBVkhCRUFnQlJEVUV5QUVJQVFvQWdCQkJHb2lCVFlDQUF3QkN3c2dCQ2dDQ0NBRUtBSUFOZ0lBSUFCQkVHb2tBQ0FCUVFScUlnUWlBQ0FBS0FJQUlBTW9BZ1FnQXlnQ0FDSUZheUlBYXlJR05nSUFJQUJCQUVvRVFDQUdJQVVnQUJCOUdnc2dBeUFFRUtrQklBTkJCR29nQVVFSWFoQ3BBU0FERU5ZRklBRVE3Z2tRcVFFZ0FTQUJLQUlFTmdJQUlBRWdBU2dDQkJEYkR5QUJLQUlBSWdBRVFDQUJLQUlRSUFBZ0FSRHVDU2dDQUNBQktBSUFhMEVDZFJEdkRBc0xJQWxCSUdva0FBd0JDeUFBSUFGSkJFQWdBeUFFSUFCQkFuUnFFTmdUQ3dzZ0F5Z0NBQVVnQVFzZ0FoQ0hCeUlBS0FJQUlnRUVmeUFCRU13SEdpQURLQUlBSUFJUWh3Y0ZJQUFMSUFjUXBRZzJBZ0FnQnlnQ0FDRUFJQWRCQURZQ0FDQUFCRUFnQUJETUJ4b0xJQWhCRUdva0FBc1ZBUUYvSXdCQkVHc2lBU0FBTmdJTUlBRW9BZ3dMRndBZ0FDZ0NCRUc0clJKR0JIOGdBQ2dDR0FVZ0FBc0w3amtERlg4Q2ZRRitJd0JCRUdzaUZpUUFJQllnQVRZQ0RBSkFJQUF0QUpRRFJRMEFJQUFvQXJ3RklnVkZCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrR3Q1QUFRR1JvTUFRc2dCU0FCRU9rQklnVkZCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrR1RsUXdRR1NBV1FReHFFQzhhREFFTEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFVb0FoQU9Ed0FCQWdNRUJRb0tDZ2NHQ0FzSkRBc0xJQUJCa0FOcUVKd0xJUU1NQ3dzZ0FFR1FBMm9Rb2hvaEF3d0tDeUFGSUFVb0FnQW9BaVFSQUFBaEFpTUFRUkJySWdFa0FBSi9JQUlvQWhSQklFWUVRQ0FBUVpBRGFpRUFJQUl0QUJnRVFDQUFFT3dEREFJTElBQVE3UU1NQVFzZ0FFRUFPZ0NVQXlBQVFhZ0Vha0htaUF3UUdTRUFJQUVnQWlnQ0ZEWUNEQ0FBSUFGQkRHb1FMeHBCQUFzaEF5QUJRUkJxSkFBTUNRc2dCU0FGS0FJQUtBSXNFUUFBSVFFakFFRVFheUlDSkFBQ2Z5QUJLQUlVUVNCR0JFQWdBRUdRQTJvUWxnVU1BUXNnQUVFQU9nQ1VBeUFBUWFnRWFrSE9pQXdRR1NFQUlBSWdBU2dDRkRZQ0RDQUFJQUpCREdvUUx4cEJBQXNoQXlBQ1FSQnFKQUFNQ0FzZ0JTQUZLQUlBS0FJMEVRQUFJZ0VvQWhnaEFpQUFJQUFvQXJ3RklBRW9BaFFRandSQkFCQ0ZBU0lCQkg4Z0FFR1FBMm9nQVNBQ0VQOENCVUVBQ3lFRERBY0xJQVVnQlNnQ0FDZ0NQQkVBQUNJQ0tBSVVJZ0VnQVNnQ0FDZ0NPQkVBQUNJQktBSVlJUU1nQWlnQ0dDRUNJQUFnQUNnQ3ZBVWdBU2dDRkJDUEJFRUFFSVVCSWdFRWZ5TUFRVEJySWdra0FDQUpJQUkyQWdnZ0NTQUJOZ0lNSUFrZ0F6WUNCQ0FBUVpBRGFpSUFLQUlBSVF3Z0NVRVFhaUFCSUFJZ0F4QzNHaUFKUVJocUlBbEJIR29nQ1VFZ2FoQy9CeUVFSUF4QjNBRnFJUThDUUFKQUlBd29BdUFCSWc1RkRRQWdEeWdDQUFKL0lBNUJBV3NnQkhFZ0Rta2lBa0VCVFEwQUdpQUVJQVFnRGtrTkFCb2dCQ0FPY0FzaUFFRUNkR29vQWdBaUFVVU5BQ0FPUVFGcklSTWdDU2dDSUNFU0lBa29BaHdoRFNBSktBSVlJUVVnQWtFQlN5RUNBMEFnQVNnQ0FDSUJSUTBCSUFRZ0FTZ0NCQ0lEUndSQUFrQWdBa1VFUUNBRElCTnhJUU1NQVFzZ0F5QU9TUTBBSUFNZ0RuQWhBd3NnQUNBRFJnMEJEQUlMSUFFcEFnaENJSWluSWdjb0FnZ2dCVWNOQUNBSEtBSU1JQTFIRFFBZ0J5Z0NFQ0FTUncwQUN3d0JDeUFNUWNBQmFpSUJFS29ESWdjZ0NTZ0NEQ0FKS0FJSUlBa29BZ1FRdHhvZ0FTQUhFQ2dnQVNBQktBSVlRUUZxTmdJWUFrQWdEQ2dDNEFFaUFrVU5BQ0FQS0FJQUFuOGdBa0VCYXlBRWNTQUNhU0lEUVFGTkRRQWFJQVFnQWlBRVN3MEFHaUFFSUFKd0N5SUFRUUowYWlnQ0FDSUJSUTBBSUFKQkFXc2hEU0FEUVFGTElRVURRQ0FCS0FJQUlnRkZEUUVnQkNBQktBSUVJZ05IQkVBQ1FDQUZSUVJBSUFNZ0RYRWhBd3dCQ3lBQ0lBTkxEUUFnQXlBQ2NDRURDeUFBSUFOSERRSUxJQUVvQWd3Z0J4RG1CVVVOQUFzTUFRdEJFQkFWSWhRZ0JEWUNCQ0FVSUFTdElBZXRRaUNHaERjQ0NDQVVRUUEyQWdBZ0RFSGtBV29oQ2dKQVFRQWdBaUFNS0FMb0FVRUJhck1pR1NBTUtnTHNBU0lZSUFLemxGNGJEUUFDUUFKQUFuOUJBaUFDSUFKQkFXdHhRUUJISUFKQkEwbHlJQUpCQVhSeUlnRUNmeUFaSUJpVmpTSVlRd0FBZ0U5ZElCaERBQUFBQUdCeEJFQWdHS2tNQVF0QkFBc2lBQ0FBSUFGSkd5SUFRUUZHRFFBYUlBQWdBQ0FBUVFGcmNVVU5BQm9nQUJCL0N5SUxJQXdvQXVBQklnSk5CRUFnQWlBTFRRMENJQUpCQTBraEFBSi9JQXdvQXVnQnN5QU1LZ0xzQVpXTkloaERBQUNBVDEwZ0dFTUFBQUFBWUhFRVFDQVlxUXdCQzBFQUN5RUJJQUlnQ3lBQUlBSnBRUUZMY2dSL0lBRVFmd1VnQVVFQlFTQWdBVUVCYTJkcmRDQUJRUUpKR3dzaUFDQUFJQXRKR3lJTFRRMENJQXRGRFFFTElBdEJnSUNBZ0FSSkJFQWdEeUFMUVFKMEVCVVFiQ0FNSUFzMkF1QUJRUUFoQVFOQUlBRWdDMFlFUUNBTUtBTGtBU0lDUlEwRUlBSW9BZ1FoQlFKQUlBdHBJZ0JCQVUwRVFDQUZJQXRCQVd0eElRVU1BUXNnQlNBTFNRMEFJQVVnQzNBaEJRc2dEeWdDQUNBRlFRSjBhaUFLTmdJQUlBdEJBV3NoRXlBQVFRRkxJUklEUUNBQ0tBSUFJZ0JGRFFVZ0FDZ0NCQ0VEQWtBZ0VrVUVRQ0FESUJOeElRTU1BUXNnQXlBTFNRMEFJQU1nQzNBaEF3c0NRQ0FESUFWR0RRQWdBQ0VCSUFOQkFuUWlEaUFQS0FJQWFpSU5LQUlBUlFSQUlBMGdBallDQUNBRElRVU1BUXNEUUFKQUlBRWlBeWdDQUNJQlJRUkFRUUFoQVF3QkN5QUFLQUlNSUFFb0Fnd1E1Z1VoRFNBREtBSUFJUUVnRFEwQkN3c2dBaUFCTmdJQUlBTWdEeWdDQUNBT2FpZ0NBQ2dDQURZQ0FDQVBLQUlBSUE1cUtBSUFJQUEyQWdBTUFRc2dBQ0VDREFBTEFBVWdEeWdDQUNBQlFRSjBha0VBTmdJQUlBRkJBV29oQVF3QkN3QUxBQXNRK3dFQUN5QVBRUUFRYkNBTVFRQTJBdUFCQ3lBTUtBTGdBU0lDSUFKQkFXc2lBSEZGQkVBZ0FDQUVjU0VBREFFTElBSWdCRXNFUUNBRUlRQU1BUXNnQkNBQ2NDRUFDd0pBQWtBZ0R5Z0NBQ0FBUVFKMGFpSUFLQUlBSWdGRkJFQWdGQ0FNS0FMa0FUWUNBQ0FNSUJRMkF1UUJJQUFnQ2pZQ0FDQVVLQUlBSWdCRkRRSWdBQ2dDQkNFQkFrQWdBaUFDUVFGcklnQnhSUVJBSUFBZ0FYRWhBUXdCQ3lBQklBSkpEUUFnQVNBQ2NDRUJDeUFQS0FJQUlBRkJBblJxSVFFTUFRc2dGQ0FCS0FJQU5nSUFDeUFCSUJRMkFnQUxJQXdnRENnQzZBRkJBV28yQXVnQkN5QUpRVEJxSkFBZ0J3VkJBQXNoQXd3R0N5QUZJQVVvQWdBb0FtUVJBQUFoQXlNQVFSQnJJZ1VrQUFKL1FRQWdBQ0FBS0FLOEJTQURLQUlVRUk4RVFRQVFoUUVpQWtVTkFCb2dCVUVBTmdJTVFRQWdBQ0FESUFWQkRHb1FuUmxGRFFBYUlBQWdBU0FESUFCQmtBTnFJQUpCQUNBRktBSU1FS0VhRUp3WkN5RURJQVZCRUdva0FBd0ZDeUFGSUFVb0FnQW9BbHdSQUFBaEJ5TUFRU0JySWdRa0FDQUVJQUFvQXJRRklBRVFsQUZCQUJBNElnSTJBaHdDZjBFQUlBQWdBa0VBRUlVQklnVkZEUUFhSUFjb0Fod2lBaUFIS0FJZ1JnUkFJQUJCQURvQWxBTWdBRUdvQkdwQm9PMEVFQmthUVFBTUFRc2dBaWdDQUFSQUlBQkJBRG9BbEFNZ0FFR29CR3BCaDdrS0VCa2hBU0FFSUFBb0Fyd0ZJQWNRandRMkFoQWdBU0FFUVJCcUVDOUJsdFVBRUJrYVFRQU1BUXNnQUNnQ3VBVWdCMEVZYWlJREtBSUFFSklGSWdKRkJFQWdBRUVBT2dDVUF5QUFRYWdFYWtHSHVRb1FHU0VCSUFRZ0FDZ0N2QVVnQnhDUEJEWUNFQ0FCSUFSQkVHb1FMMEdQd3dzUUdTQURFQzlCck44QUVCa2FRUUFNQVFzZ0JDQUNFTHNPSWhvM0F4QWdHa0tBZ0lDQUVGb0VRQ0FBUVFBNkFKUURJQUJCcUFScVFZZTVDaEFaSVFFZ0JDQUFLQUs4QlNBSEVJOEVOZ0lBSUFFZ0JCQXZRWTIxREJBWklBUkJFR29RL0E0YVFRQU1BUXNnQkVFQU5nSU1RUUFnQUNBSElBUkJER29RblJsRkRRQWFJQUJCeEFacUlnSWdCRUVjYWhDcEFnUkFJQVFnQUNnQ3ZBVWdCeENQQkRZQ0NDQUVJQUlnQkVFSWFoQ1dBUXNnQUNBQklBY2dBRUdRQTJvZ0JTQWFweUFFS0FJTUVLRWFFSndaQ3lFRElBUkJJR29rQUF3RUN5QUZJQVVvQWdBb0Ftd1JBQUFoQWlNQVFlQUNheUlHSkFBZ0JpQUJOZ0xjQWlBR1FkQUNhaUFBSWdRZ0FSRFVCd0pBQWtBQ1FDQUdLQUxVQWlBR0tBTFFBaUlCYXlJQVFReEdCRUFDUUNBQktBSUFLQUlBSWdGQkFtc09BZ01DQUFzZ0JFRUFPZ0NVQXlBRVFhZ0Vha0gwd1FzUUdTQUdRZHdDYWhBdlFkLzlDeEFaSVFBZ0JpQUJOZ0xBQVNBQUlBWkJ3QUZxRUpFRkdnd0NDeUFBUVF4dFFRSkpEUUZCQUNFQklBUkJBRG9BbEFNZ0JFR29CR3BCdGRBSkVCa2dCa0hjQW1vUUwwRys1UWtRR1NFQUlBWWdCaWdDMUFJZ0JpZ0MwQUpyUVF4dE5nTEFBU0FBSUFaQndBRnFFQzhhREFJTElBWkJ3QUZxSUFSQnhBWnFJQVpCM0FKcUVKWUJDeUFHUW9DQWdJQ0FBVGNDeEFJZ0JpQUdRYUFDYWpZQ3dBSUNRQ0FHUVpBQ2FpQUNRUlJxRUxBQklnd29BZ0FpQVNBTUtBSUVJZ0pHQkVCQkFDRUJJQVJCQURvQWxBTWdCRUdvQkdwQjZvc01FQmtoQUNBR1FjQUJhaUlDSUFRb0FyUUZJQVlvQXR3Q0VKUUJFRmdnQUNBQ0VFMGFJQUlRRHhvTUFRc2dCa0VBTmdLSUFpQUdRZ0EzQTRBQ0lBUkJJR29oQ3lBRVFjZ0VhaUVVSUFSQnFBUnFJUTRnQmtIZ0FXb2hFZ0pBQTBBQ1FBSkFJQUlnQVd0QkFuVWdBMHNFUUNBR0lBUWdCQ2dDdkFVZ0FTQURRUUowYWlnQ0FCQ1BCQ0lOUVFBUWhRRWlBRFlDL0FFZ0FFVU5BaUFHUVlBQ2FpQUdRZndCYWhEWkJpQUdRY0FCYWlBRUlBWW9BdHdDSUFNUSt3NUJBU0VBSUFZb0F0d0NJUWNnQmlnQ3hBRWhCU0FHS0FMQUFTRUJBbjhDZndOQVFRUWdBU0FGUmcwQ0dpQUJLQUlBSWdvZ0FTZ0NCQ0lDUmdSQUlBUkJBRG9BbEFNZ0RrR25DQkFaR2tFQURBSUxBa0FDUUNBS0tBSUFRUXRISUFJZ0NtdEJCVWx5RFFCQkFDRUFBa0FDUUNBS0tBSUVEZ1VCQUFNQ0FnTUxJQVFnQXpZQ3FBWU1BUXNnQkNBTk5nS3NCaUFFSUFNMkFxUUdJQVFnQnpZQ29BWUxJQUZCREdvaEFRd0JDd3NnQkVFQU9nQ1VBeUFPUWFhTkNoQVpJQUVvQWdCQkJHb1FMeHBCQUFzaEFFRUJDeUVDSUFaQndBRnFFS1FDSUFCRkRRRWdCa0lBTndQd0FTQUdRb0NBZ0lDQUFUY0M1QUVnQmlBR1FjQUJhallDNEFFZ0JrR3dBV29nQkNBR0tBTGNBaUFERVBzT1FRQWhBQ0FHS0FLMEFTRU5JQVlvQXJBQklRRURRQUovQWtBZ0FTQU5SZ1IvUVFnRklBRVErZzROQVVFQklBRW9BZ0FvQWdCQkdFWU5BaG9nQmtINEFHb2hDU0FHS0FMY0FpRUtJQVlvQXZ3QklRSWpBRUh3QUdzaUNDUUFJQWdnQXpZQ2JBSkFJQUVvQWdBaUR5QUJLQUlFSWdkR0JFQWdCRUVBT2dDVUF5QUVRYWdFYWtHbkNCQVpHaUFKUWdBM0F4Z2dDVUlBTndNUUlBbENBRGNEQ0NBSlFnQTNBd0FnQ1VJQU53TXdJQWxDZ0lDQWdJQUJOd0lrSUFrZ0NUWUNJQXdCQ3lBSVFvQ0FnSUNBQVRjQ1ZDQUlRZ0EzQTJBZ0NDQUlRVEJxTmdKUUFrQUNRQUpBQWtBQ1FBSkFJQThvQWdBaUJRNElCQU1EQXdFRUF3SUFDeUFGUVJoclFRSkpEUU1nQlVFalJ3MENJQWNnRDJ0QkNFY0VRQ0FFUVFBNkFKUURJQVJCcUFScVFidmtDUkFaSVFJZ0NDQUJLQUlFSUFFb0FnQnJRUUoxUVFGck5nSVFJQUlnQ0VFUWFoQXZRYi8rQ1JBWklBaEI3QUJxRUM5QnhMRUtFQmtoQWlBSVFSaHFJZ1VnQkNBS0VQOEtJQUlnQlJCTkdpQUZFQThhSUFsQ0FEY0RHQ0FKUWdBM0F4QWdDVUlBTndNSUlBbENBRGNEQUNBSlFnQTNBekFnQ1VLQWdJQ0FnQUUzQWlRZ0NTQUpOZ0lnREFVTElBaEJBRFlDS0NBSVFnQTNBeUFnQ0VJQU53TVlJQWdnRHpVQ0JEY0RFQ01BUVJCcklnVWtBQ0FGSUFSQklHb2lBaUFJUVJCcUVPa0ZOZ0lNSUFJZ0NFRVlhaUFGUVF4cUVPQWFJUUlnQlVFUWFpUUFJQWhCTUdvZ0FoQ1FCUXdEQ3lBRVFRQTZBSlFESUFSQnFBUnFRYzc5Q1JBWklBaEI3QUJxRUM5QnhMRUtFQmtoQWlBSVFSaHFJZ1VnQkNBS0VQOEtJQUlnQlJCTkdpQUZFQThhREFJTElBY2dEMnRCQ0VjRVFDQUVRUUE2QUpRRElBUkJxQVJxUWZua0NSQVpJUUlnQ0NBQktBSUVJQUVvQWdCclFRSjFRUUZyTmdJUUlBSWdDRUVRYWhBdlFiLytDUkFaSUFoQjdBQnFFQzlCeExFS0VCa2hBaUFJUVJocUlnVWdCQ0FLRVA4S0lBSWdCUkJOR2lBRkVBOGFEQUlMSUE4b0FnUWhCU0FDSVFjRFFDQUhFTWdESWdvb0FnUWhCeUFLUlNBSFFkak1Fa2R5UlFSQUlBb29BZ2doQnd3QkN3c2dDa0VBSUFkQndNd1NSaHRGQkVBZ0JFRUFPZ0NVQXlBRVFhZ0Vha0hDdXdvUUdTRUNJQWhCR0dvaUJTQUtJQW9vQWdBb0Fnd1JBZ0FnQWlBRkVFMGFJQVVRRHhvTUFnc2dCVUVJUVJBZ0NpZ0NFRUVDUmh0R0RRRWdBaWdDQkVIQXpCSkhCRUFnQkVFQU9nQ1VBeUFFUWFnRWFrR1p2d0VRR1JvTUFnc2dDRUVBTmdJb0lBaENBRGNESUNBSVFnQTNBeGdnQ0VFd2FpSUhJQVJCSUdvaUFpQUlRUmhxSWdVZ0FTZ0NBRUVFYWhEd0hoQ1FCU0FDRUJ3Z0NDQUVLQUlvTmdJWUlBUWdCQ2dDTEVFQmFpSUNOZ0lzSUFnZ0FqWUNFQ0FJUVFVMkFnd2dCeUFFUWF3QmFpQUZJQWhCRUdvZ0NFRU1haEMwR1JDUUJRd0JDeUFFUVFBNkFKUURJQVJCcUFScVFjSDlDeEFaSUFFb0FnQVFMMEhDL1FrUUdTQUlRZXdBYWhBdlFjU3hDaEFaSVFJZ0NFRVlhaUlGSUFRZ0NoRC9DaUFDSUFVUVRSb2dCUkFQR2dzZ0NTQUlRVEJxRUpZWkdnc2dDRUV3YWhBakN5QUlRZkFBYWlRQUlBWkJ3QUZxSVFVakFFRVFheUlLSkFBZ0NTZ0NJQ0lISUFrb0FpUkJBblJxSVFJRFFDQUNJQWRHQkVBQ1FDQUtJQWxCTUdvUW1od2dDU2tETUNFYUEwQWdDaTBBQ0NJQ1FUOUdJQm9nQ2lrREFGRnhEUUVnQlNBRktRTXdRZ0VnQXExQ09JWkNPSWVHaERjRE1DQUtFSU1RREFBTEFBc0ZJQW9nQnlnQ0FEWUNBQ0FGSUFvUUpDQUhRUVJxSVFjTUFRc0xJQXBCRUdva0FDQUVMUUNVQXlFQ0lBa1FJeUFDRFFGQkFRc2hBaUFHUWJBQmFoQ2tBaUFCSUExR0JFQWdCa0d3QVdvaUFpQVVJQVlvQXR3Q0lBTVE5UWdnQmtFQU5nS0lBU0FHUWdBM0E0QUJJQVpDQURjRGVDQUdLQUw4QVNJQklBc2dBU2dDQUNnQ0NCRUJBQ0VCSUFZZ0VqWUNhQ0FHSUFZb0F1QUJJQVpCd0FGcVJ6b0FiQ0FHSUFzZ0JrSDRBR29nQWlBQklBWkI2QUJxRU1BYU5nSjBJQk1nQUVFQmNXb2hFeUFHUWFBQ2FpQUdRZlFBYWhBa0lBSVFEeHBCQUNFQ0N5QUdRY0FCYWhBakRBUUxJQUFMSVFBZ0FVRU1haUVCREFBTEFBc2dCaWdDeEFKRkRRRWdGQ0FHS0FMY0FpQUdRY0FCYWlJQ1FZdmpCUkFVSWdBUXhRWWdBQkFQR2lBR1FiQUJhaUFVSUFZb0F0d0NFTk1IRUZRaENTQUxFQndnQ1NnQ0FDRUJJQVlnQ1NnQ0JDQUpMUUFMSWdBZ0FFRVlkRUVZZFVFQVNDSUFHellDWkNBR0lBRWdDU0FBR3pZQ1lDQUdJQVlwQTJBM0F3Z2dBaUFFUWFnQ2FpQUdRUWhxRUpnRElBWkJBRFlDaUFFZ0JrSUFOd09BQVNBR1FnQTNBM2dnQmlBTElBSVE4d0kyQXZ3Qkl3QkJFR3NpRWlRQUlBc1FIQ0FMSUFzb0FneEJBV29pQURZQ0RDQVNJQUEyQWdnakFFRVFheUlPSkFBZ0MwR01BV29pRFJDWERDRUZJQVlvQXZ3QklRTWdFaWdDQ0NFQ0lBc29BZ2doQVNBT0lBWkJvQUpxSWdkQklHbzJBZ2dnQnlnQ0lDRUFJQTVCQURvQUJDQU9RY0NjSURZQ0FDQU9JQUFnQjBjNkFBd2dEU0FGSUFFZ0FpQUdRZmdBYWlBRElBNUJDR29nRGhDWURDSUFFQ2dnRFNBTktBSVlRUUZxTmdJWUlBNUJFR29rQUNBU1FSQnFKQUFnRENnQ0JDQU1LQUlBYTBFQ2RTQVRSZ1JBSUFaQitBQnFJQVJCMkFacUlBQW9BaVJCSkdvUW14a0xJQVFnQmtGQWF5QUdRY0FCYWlJUEVGWWdBQkQ1RGlBR1FTQnFJQThRVmlFQUlBWWdCaWdDZ0FJMkFoQWdCaWtDaEFJaEdpQUdRUUEyQW9nQ0lBWWdHamNDRkNBR1FnQTNBNEFDUVFBaEFpTUFRZUFBYXlJWEpBQWdCQ2dDa0FNaEVDQVhRVEJxSUJkQkVHb2dBQkJXSUJjZ0JrRVFhaUlPSWhNUXNBRWlBUkNxR2lBUVFld0NhaUVWSUFFUU1ob2dGeWdDT0NFRkFrQUNRQ0FRS0FMd0FpSUtSUTBBSUJVb0FnQUNmeUFLUVFGcklBVnhJQXBwSWdOQkFVME5BQm9nQlNBRklBcEpEUUFhSUFVZ0NuQUxJZ0pCQW5ScUtBSUFJZ0ZGRFFBZ0YwRTRhaUVTSUFwQkFXc2hEU0FEUVFGTElRY0RRQ0FCS0FJQUlnRkZEUUVnQlNBQktBSUVJZ05IQkVBQ1FDQUhSUVJBSUFNZ0RYRWhBd3dCQ3lBRElBcEpEUUFnQXlBS2NDRURDeUFDSUFOR0RRRU1BZ3NnQVNnQ0RFRUlhaUFTRUxZQ1JRMEFDeUFCS0FJTUlRc01BUXNqQUVFd2F5SURKQUFnRUVIUUFtb2lBUkMxQnlFTElBTkJFR29nQUJCV0lRQWdBeUFUS0FJQU5nSUFJQU1nRXlnQ0JEWUNCQ0FESUJNb0FnZzJBZ2dnRTBFQU5nSUlJQk5DQURjQ0FDQUxJQUFnQXhDcUdpQURFRElhSUFFZ0N4QW9JQUVnQVNnQ0dFRUJhallDR0NBRFFUQnFKQUFDUUNBUUtBTHdBaUlIUlEwQUlCVW9BZ0FDZnlBSFFRRnJJQVZ4SUFkcElnQkJBVTBOQUJvZ0JTQUZJQWRKRFFBYUlBVWdCM0FMSWdKQkFuUnFLQUlBSWdGRkRRQWdDMEVJYWlFU0lBZEJBV3NoRFNBQVFRRkxJUUFEUUNBQktBSUFJZ0ZGRFFFZ0JTQUJLQUlFSWdOSEJFQUNRQ0FBUlFSQUlBTWdEWEVoQXd3QkN5QURJQWRKRFFBZ0F5QUhjQ0VEQ3lBQ0lBTkhEUUlMSUFFb0FneEJDR29nRWhDMkFrVU5BQXNNQVF0QkVCQVZJZ2dnQlRZQ0JDQUlJQVd0SUF1dFFpQ0doRGNDQ0NBSVFRQTJBZ0FnRUVIMEFtb2hGQUpBUVFBZ0J5QVFLQUw0QWtFQmFyTWlHU0FRS2dMOEFpSVlJQWV6bEY0YkRRQUNRQUpBQW45QkFpQUhJQWRCQVd0eFFRQkhJQWRCQTBseUlBZEJBWFJ5SWdFQ2Z5QVpJQmlWalNJWVF3QUFnRTlkSUJoREFBQUFBR0J4QkVBZ0dLa01BUXRCQUFzaUFDQUFJQUZKR3lJQVFRRkdEUUFhSUFBZ0FDQUFRUUZyY1VVTkFCb2dBQkIvQ3lJUklCQW9BdkFDSWdKTkJFQWdBaUFSVFEwQ0lBSkJBMGtoQUFKL0lCQW9BdmdDc3lBUUtnTDhBcFdOSWhoREFBQ0FUMTBnR0VNQUFBQUFZSEVFUUNBWXFRd0JDMEVBQ3lFQklBSWdFU0FBSUFKcFFRRkxjZ1IvSUFFUWZ3VWdBVUVCUVNBZ0FVRUJhMmRyZENBQlFRSkpHd3NpQUNBQUlCRkpHeUlSVFEwQ0lCRkZEUUVMSUJGQmdJQ0FnQVJKQkVBZ0ZTQVJRUUowRUJVUWJDQVFJQkUyQXZBQ1FRQWhBUU5BSUFFZ0VVWUVRQ0FRS0FMMEFpSUNSUTBFSUFJb0FnUWhCd0pBSUJGcElnQkJBVTBFUUNBSElCRkJBV3R4SVFjTUFRc2dCeUFSU1EwQUlBY2dFWEFoQndzZ0ZTZ0NBQ0FIUVFKMGFpQVVOZ0lBSUJGQkFXc2hFeUFBUVFGTElSSURRQ0FDS0FJQUlnQkZEUVVnQUNnQ0JDRURBa0FnRWtVRVFDQURJQk54SVFNTUFRc2dBeUFSU1EwQUlBTWdFWEFoQXdzQ1FDQURJQWRHRFFBZ0FDRUJJQU5CQW5RaUNpQVZLQUlBYWlJTktBSUFSUVJBSUEwZ0FqWUNBQ0FESVFjTUFRc0RRQUpBSUFFaUF5Z0NBQ0lCUlFSQVFRQWhBUXdCQ3lBQUtBSU1RUWhxSUFFb0FneEJDR29RdGdJaERTQURLQUlBSVFFZ0RRMEJDd3NnQWlBQk5nSUFJQU1nRlNnQ0FDQUthaWdDQUNnQ0FEWUNBQ0FWS0FJQUlBcHFLQUlBSUFBMkFnQU1BUXNnQUNFQ0RBQUxBQVVnRlNnQ0FDQUJRUUowYWtFQU5nSUFJQUZCQVdvaEFRd0JDd0FMQUFzUSt3RUFDeUFWUVFBUWJDQVFRUUEyQXZBQ0N5QVFLQUx3QWlJSElBZEJBV3NpQUhGRkJFQWdBQ0FGY1NFQ0RBRUxJQVVnQjBrRVFDQUZJUUlNQVFzZ0JTQUhjQ0VDQ3dKQUFrQWdGU2dDQUNBQ1FRSjBhaUlBS0FJQUlnRkZCRUFnQ0NBUUtBTDBBallDQUNBUUlBZzJBdlFDSUFBZ0ZEWUNBQ0FJS0FJQUlnQkZEUUlnQUNnQ0JDRUJBa0FnQnlBSFFRRnJJZ0J4UlFSQUlBQWdBWEVoQVF3QkN5QUJJQWRKRFFBZ0FTQUhjQ0VCQ3lBVktBSUFJQUZCQW5ScUlRRU1BUXNnQ0NBQktBSUFOZ0lBQ3lBQklBZzJBZ0FMSUJBZ0VDZ0MrQUpCQVdvMkF2Z0NDeUFYUVRCcUVKMExHaUFYUWVBQWFpUUFJQXNoQVNBT0VESWFJQVlvQXR3Q0lRQWdCRUhBRFdvZ0R4Q2FHU0FBTmdJQUlBa1FEeG9NQXd0QkFDRUJBa0FnQWc0RkFBTURBd0FEQ3lBRFFRRnFJUU1nRENnQ0FDRUJJQXdvQWdRaEFnd0JDd3RCQUNFQkN5QUdRWUFDYWhBeUdnc2dEQkF5R2lBR1FhQUNhaEFqQ3lBR1FkQUNhaENrQWlBR1FlQUNhaVFBSUFFaEF3d0RDeUFGSUFVb0FnQW9BbndSQUFBYUl3QkJFR3NpQkNRQUlBUWdBVFlDRENBRUlBQW9BclFGSUFFUWxBRWlCVUVCRURnaUJ6WUNDQ0FGUVFBUU9DRUZBa0FnQUNnQ29BWWdCMFlFUUNBQVFRWTJBclFHSUFBZ0FUWUNzQVlNQVFzZ0FDQUhRUUFRaFFFaUIwVUVRQ0FBUVFBNkFKUURJQUJCcUFScVFjUENDeEFaSUFSQkRHb1FMMEh3dkFvUUdTQUVRUWhxRUM4YURBRUxBa0FnQUVHZ0JXb2dCUkNZRHlJQlFRaEhEUUJCQ0NFQklBQkJ4QVpxSWdNZ0JFRUlhaENwQWtVTkFDQUVJQU1nQkVFTWFoQ1dBVUVISVFFTFFRVWdBU0FCUVFGclFRSkpHeUVCQWtBQ1FBSkFJQUlPQWdFQUFnc2dBRUdRQTJvZ0J5QUJRUUFRbXdzaEF3d0NDeUFBUVpBRGFpQUhJQUZCQUJDaER5RUREQUVMUVFBaEF5QUFRUUE2QUpRRElBQkJxQVJxUWRQdUN4QVpJUUFnQkNBQ05nSUFJQUFnQkJDUkJSb0xJQVJCRUdva0FBd0NDeUFBUVpBRGFoQ2NDeUVEREFFTElBQkJBRG9BbEFNZ0FFR29CR3BCNE1JTEVCa2dGa0VNYWhBdlFlMjFEQkFaSVFFZ0ZpQUFLQUswQlNBV0tBSU1FSlFCRUZnZ0FTQVdFRTBhSUJZUUR4b0xJQlpCRUdva0FDQURDMkFCQTM4akFFRVFheUlESkFBZ0FDZ0NCQ0VBSUFFb0FnQWhCU0FESUFFb0FnUWdBUzBBQ3lJRUlBUkJHSFJCR0hWQkFFZ2lCQnMyQWd3Z0F5QUZJQUVnQkJzMkFnZ2dBeUFES1FNSU53TUFJQUFnQXlBQ0VLd0VJQU5CRUdva0FBc2ZBQ0FBTFFBTEVQc0VCRUFnQUNnQ0FDQUFLQUlJRVAwSkVQd0pDeUFBQzRFQkFRRi9Jd0JCd0FGcklnUWtBQ0FFSUFNNkFMc0JJQVFnQWpZQ3ZBRWdBaERLQTBVRVFDQUVRUWhxUWNXdEJVR1ZCRUVJSUFSQnFBRnFFQjBpQWhBWElnTkJHR3BCd3VZSUVBNGFJQU1RR0NBQ0VCNExJQUVvQWdBZ0JFRzhBV29nQkVHN0FXb1F0UVVoQVNBQVFRRTZBQVFnQUNBQk5nSUFJQVJCd0FGcUpBQUxDZ0FnQUJEQkF5QUJhZ3VOQWdFRWZ5TUFRYkFCYXlJSUpBQWdDRUVvYWhET0FTRUhJQWhCR0dvaUNTQUZFT0VESUFjZ0NSQVNRYWFyQ2hBT0lRVWdDRUVJYWlJS0lBUVE0UU1nQlNBS0VCSWFJQW9RRHhvZ0NSQVBHaUFES0FJb0lBUW9BaWhIQkVBZ0IwSE1qQW9RRGlFRUlBaEJHR29pQlNBREVPRURJQVFnQlJBU0dpQUZFQThhQ3lBSFFaK1dDaEFPR2lBSElBRW9BZ0JCZ0FOcVFSd2dBaWdDQkNnQ0FCQ1BBUkFPR2dKQUlBRW9BaEJGRFFBZ0IwR1k2UVlRRGlBQktBSVFFQ0ZCaStZR0VBNGFJQVpCLy8vLy93ZEdEUUFnQjBHUG1Bb1FEaG9nQnlBQktBSUFRWUFEYWtFTUlBWVFqd0VRRGhvTElBZEIvSmNJRUE0YUlBQWdCMEVFYWhCQ0lBY1F1d0VhSUFoQnNBRnFKQUFMQ0FBZ0FFRUFFR3dMRkFBZ0FTZ0NoQU1oQVNBQUVFa2dBVFlDa0FFTEtBQWdBQ2dDQUNnQ0FDSUFJQUlnQUNnQ0FDZ0NEQkVCQUNJQUlBRWdBQ2dDQUNnQ0RCRUJBQXNzQVFKL0FrQWdBQ0FCRUxvQklnTkZEUUFnQXk4QkhrRVhSdzBBSUFBZ0FDQUJFTUVCRUhjaEFnc2dBZ3RIQVFKL0l3QkJFR3NpQXlRQUlBTkJBRFlDREVIQ3dnSWhCQUpBSUFBZ0FTQUNJQU5CREdvUTNRSU5BQ0FES0FJTUlnQkZEUUFnQUNnQ0FDRUVDeUFEUVJCcUpBQWdCQXVxQXdFSWZ5TUFRUkJySWdVa0FDQUFLQUtRQVNJQkJFQWdCU0FBUVF4cUVFSWpBRUVRYXlJRUpBQWdCQ0FCS0FJQU5nSUFJQVJCQkhJZ0JSQlVJUWdDUUNBQlFRUnFJZ0lvQWdRZ0FpZ0NDRWtFUUNBQ0lBSW9BZ1FnQkJEUURrRVFhallDQkF3QkN5TUFRU0JySWdja0FDQUhRUWhxSUFJZ0FpZ0NCQ0FDS0FJQWEwRUVkVUVCYWhEZ0dDQUNLQUlFSUFJb0FnQnJRUVIxSUFKQkNHb1EwZzRpQVNnQ0NDQUVFTkFPR2lBQklBRW9BZ2hCRUdvMkFnZ2dBaWdDQUNFR0lBSW9BZ1FoQXdOQUlBTWdCa2NFUUNBQktBSUVRUkJySUFOQkVHc2lBeERRRGhvZ0FTQUJLQUlFUVJCck5nSUVEQUVMQ3lBQ0tBSUFJUU1nQWlBQktBSUVOZ0lBSUFFZ0F6WUNCQ0FDS0FJRUlRTWdBaUFCS0FJSU5nSUVJQUVnQXpZQ0NDQUNLQUlJSVFNZ0FpQUJLQUlNTmdJSUlBRWdBellDRENBQklBRW9BZ1EyQWdBZ0FTZ0NCQ0VHQTBBZ0JpQUJLQUlJSWdOSEJFQWdBU0FEUVJCck5nSUlJQU5CREdzUUR4b01BUXNMSUFFb0FnQWlBUVJBSUFFUUh3c2dCMEVnYWlRQUN5QUNLQUlFR2lBSUVBOGFJQVJCRUdva0FDQUZFQThhQ3lBQUVGRWdCVUVRYWlRQUM0OEtBZzUvQW40akFFSGdBbXNpQWlRQUlBSWdBVFlDRkNBQ0lBQTJBZ3dnQWlBQ1FSUnFOZ0lJQWtBZ0FVVUVRQ0FDUVFocUVOOFZJUUVNQVFzZ0FTZ0NCQ0lERUpFREJFQWdBQ0FCS0FJWUVKRUJJUU1nQUNnQ0FDQUNLQUlVSUFNZ0FTZ0NIQkNxQmlFQkRBRUxJQU5COEtvU1JnUkFJQUFnQVNnQ0hCQ1JBU0VESUFBb0FnQWdBaWdDRkNBRElBRW9BaVFRcWdZaEFRd0JDeUFEUVpDaUVrWUVRQUpBSUFFb0Fod2lBeWdDQkVHUW94SkhJQU5GY2cwQUlBTW9BZ3doQXlBQ1FRRTZBRVFnQWlBRE5nSkFJQUFnQVNnQ0dCQ1JBU0lCUlEwQUlBQW9BZ0FnQWlnQ0ZDQUJJQUpCUUdzUXZnRW9BZ0FRcWdZaEFRd0NDMEVBSVFFTUFRc2dBeERtQXdSQUlBSkJRR3NRb2dZaEF5QUNRb0NBZ0lEQUFEY0NOQ0FDSUFKQklHb2lCVFlDTUNBRklBRW9Ba2dRMWdJZ0FTZ0NSQ0lMSUFFb0FraEJBblJxSVE0Z0FrRXdhaUVQQW44Q1FBTkFJQXNnRGtZTkFTQUNJQXNvQWdBaUJTZ0NLRFlDR0NBQ1FRQTJBc2dDSUFKQjJBSnFJQU1nQWtFWWFpQUNRY2dDYWhEWkZRSkFJQUlvQXRnQ0RRQWdBeWdDZ0FJaENDQUNJQUFnQlNnQ0tCQ1JBU0lGTmdMVUFpQURLQUtBQWlBSVJnUkFJQUlvQXR3Q0lBVTJBZ0FNQVFzZ0FrRVlhaUVLSXdCQndBRnJJZ1FrQUNBREtBTDBBU0FES0FMOEFTSUZRWllCYkVHV0FXcEI1QUJ1U1FSQUlBTWdCVUVCZEVFQ2FoQ3dFUXNnQkVHNEFXb2dBeUFLRVBJRUlBTW9BdlFCSWdoQkFXc2hCU0FLS0FJQUlRd2dBeWdDOEFFaERTQUVLQUs4QVNFS0lBUW9BcmdCSVFsQkFDRUhBa0FEUUNBSElBaEhCRUFnRFNBSlFSUnNhaUlHTFFBSVJRUkFJQUlvQXRRQ0lRVWdCa0VCT2dBSUlBWWdCVFlDQkNBR0lBdzJBZ0FnQkNnQ3ZBRWhDQ0FOSUFsQkZHeHFJZ1VnQnpZQ0VDQUZJQWcyQWd3Z0F5QURLQUw4QVVFQmFqWUMvQUVnQXlBREtBS0FBa0VCYWpZQ2dBSWdBaUFHUVFScU5nTE1BaUFDUVFBMkFzZ0NEQU1MQWtBZ0JpZ0NEQ0FLUncwQUlBd2dCaWdDQUVjTkFDQUdJQUlvQXRRQ05nSUVJQVlnRERZQ0FDQURJQU1vQW9BQ1FRRnFOZ0tBQWlBQ0lBWkJCR28yQXN3Q0lBSkJBVFlDeUFJTUF3c2dCeUFHS0FJUVN3UkFJQUlvQXRRQ0lRVWdCRUVCT2dDb0FTQUVJQWMyQXJBQklBUWdCVFlDcEFFZ0JDQU1OZ0tnQVNBRUlBbzJBcXdCSUFRZ0J6WUNFQ0FFSUFRcEE2Z0JJaEEzQXdnZ0JDQUVLUU9nQVNJUk53TUFJQVFnQmlnQ0VEWUNzQUVnQkNBR0tRSUlOd09vQVNBRUlBWXBBZ0EzQTZBQklBWWdCellDRUNBR0lCRTNBZ0FnQmlBUU53SUlJQVFnQkNnQ3NBRkJBV28yQXJBQklBTWdDVUVCYWlBREtBTDBBWEFnQkVHZ0FXb1FzZ1FnQXlBREtBTDhBVUVCYWpZQy9BRWdBeUFES0FLQUFrRUJhallDZ0FJZ0FpQUdRUVJxTmdMTUFpQUNRUUEyQXNnQ0RBTUZJQWxCQVdwQkFDQUZJQWxIR3lFSklBZEJBV29oQnd3Q0N3QUxDeUFFUVlhMUEwSHJBMEVPSUFSQm9BRnFFQjBpQ0JBWElnVkJHR3BCbGpVUURob2dCUkFZSUFKQ0FEY0N5QUlnQ0JBZUN5QUVRY0FCYWlRQUlBSWdBaWtEeUFJM0E5Z0NDeUFDSUFJb0F0d0NLQUlBSWdVMkFod2dCUVJBSUF0QkJHb2hDeUFDUVNCcUlBSkJIR29RY1F3QkN3dEJBQXdCQ3lBQUtBSUFJUUFnQXlnQy9BRkJBVVlFUUNBQUlBSW9BaFFnQWlnQ01DZ0NBQ0FCS0FKSUVLb0dEQUVMSUFJZ0R6WUMyQUlnQWlBQ0tBSXdJQUpCSUdwSE9nRGNBaUFBSUFFZ0FrSFlBbW9RT2dzaEFTQUNRU0JxRUY0Z0F4Q2hCZ3dCQ3lBQ1FRaHFFTjhWSVFFTElBSkI0QUpxSkFBZ0FRdW5Fd1FMZndKK0FYd0JmU01BUVJCcklnc2tBQ0FMSUFBMkFnZ0NRQ0FDUlFSQUlBdEJDR29RMHhnTUFRc2dBaWdDQkNJRFFjRC9FVVlFUUFKQUlBSW9BaVFRMFJoRkJFQWdBVUVJYWlJRFFabi9DQkFPR2lBQUlBRWdBaWdDSkJDU0FTQURRZS8yQ0JBT0dnd0JDeUFBSUFFZ0FpZ0NKQkNTQVFzZ0FVRUlhaUlEUWRhOUJSQU9HaUFBSUFFZ0FpZ0NLQkNTQVNBRFFkUzlCUkFPR2d3QkN5QURRWUNBRWtZRVFDQUJRUWhxSWdOQm1mOElFQTRhSUFBZ0FTQUNLQUlvRUpJQklBTkI5L0FNRUE0YUlBQWdBU0FDS0FJa0VNd1lJQU5COS9BTUVBNGFJQUFnQVNBQ0tBSXNFSklCSUFOQjcvWUlFQTRhREFFTElBTkJ3UDRSUmdSQUlBRkJDR29pQTBIcjVnWVFEaG9nQUNBQklBSW9BaVFRa2dFZ0EwSFkrUWdRRGhvZ0FDQUJJQUlvQWlnUWtnRWdBMEh2OWdnUURob01BUXNnQTBHNDdnOUdCRUFnQUNBQklBSVEwaGdNQVFzZ0EwSDQ3UTlHQkVBZ0FpZ0NKQ0VDSXdCQklHc2lBeVFBQWtBQ1FDQUNSUTBBSUFJb0FnUkJ5T2tQUncwQUlBSW9BbHdFUUNBRFFRQTZBQndnQXlBQ1FkZ0FhallDR0NBQUlBRWdBMEVZYWhEN0FpQUJRUWhxUWZmd0RCQU9HZ3NnQTBFSWFpSUVJQUpCSkdvUVV5QUJRUWhxSWdnZ0JCQVNHaUFJUWRycEJoQU9HaUFFRUE4YUlBSW9Ba3dpQkNBQ0tBSlFRUUowYWlFRkEwQWdCQ0FGUmdSQUlBaEJpK1lHRUE0YURBTUxJQVFvQWdBaUJpQUNLQUpNS0FJQVJ3UkFJQWhCOU8wTUVBNGFDeUFBSUFFZ0JoQ1NBU0FFUVFScUlRUU1BQXNBQ3lBRFFRaHFJZ0FnQWtFa2FoQlRJQUZCQ0dvZ0FCQVNHaUFBRUE4YUN5QURRU0JxSkFBTUFRc2dBeENyQ1FSQUl3QkJJR3NpQ0NRQUlBZ2dBRFlDQ0FKQUlBSkZCRUFnQ0VFSWFoRFFHQXdCQ3lBQ0tBSUVJZ0JCK1B3UFJnUkFJQUZCQ0dwQmdNd0RRZWJqQXlBQ0xRQWtHeEFPR2d3QkN5QUFRYmo5RDBZRVFDQUNLQUl3UlFSQUlBaEJFR29oQmlBQ0t3TW9JUkFqQUVIQUFtc2lBaVFBSUFKQnNBRnFFSWdESVFNZ0VMMGlEMElBVXdSQUlBTkJDR3BCTFJEZUJDQVBRdi8vLy8vLy8vLy8vd0NESVE4TEFrQUNRQUpBSUJBUTJSaEJBbXNPQXdBQkFBRUxJd0JCb0FGcklnQWtBQ0FBSUE4M0E1Z0JJQUJCQ0dvUVNTSUVJQUJCbUFGcUVOSUpHaUFDSUFSQkRHb1FRaUFFRUZFZ0FFR2dBV29rQUNBRFFRaHFJQUlRRWhvZ0FoQVBHZ3dCQ3lBRFFRaHFJZ1JCMlNjUURob2dEMEwvLy8vLy8vLy9CNE1oRGlBUFFqU0lwMEgvQjJzaUFFR0FDRVlFUUNBT1VBUkFJQVJCMXBnSUVBNUJnQWdRdkFJYURBSUxJQTVDQklZaERrRU5JUUFEUUNBT1FnK0RVQVJBSUFCQkFXc2hBQ0FPUWdTSUlRNE1BUXNMSUFSQng1VUlFQTRpQkNBRUtBSUFRUXhySWdVb0FnQnFJZ2NnQnlnQ0JFRzFmM0ZCQ0hJMkFnUWdCQ0FGS0FJQWFrRXdOZ0pNSUFRZ0JTZ0NBR29nQURZQ0RDQUVJQTRRd3dSQjE1Z0lFQTRpQUNBQUtBSUFRUXhyS0FJQWFpSUVJQVFvQWdSQnRYOXhRUUp5TmdJRUlBQkJnQWdRdkFJYURBRUxJQTVRQkVBZ0FrSHRyZ1ZCL1FCQkR5QUNRYUFCYWhBZElnVVFGeUlIUVJocVFiN2FDQkFPR2lBSEVCZ2dCUkFlQ3dOQUlBNUNnSUNBZ0lDQWdBaURVQVJBSUFCQkFXc2hBQ0FPUWdHR0lRNE1BUXNMSUFSQmo0c0hFQTRhSUFCQkFXb2hDaUFPUWdTR1FvQ0FnSUNBZ0lDQUFZVWlEbEJGQkVCQkRTRUFBMEFnRGtJUGcxQUVRQ0FBUVFGcklRQWdEa0lFaUNFT0RBRUxDeUFFUWZ5WENCQU9JZ1VnQlNnQ0FFRU1heUlIS0FJQWFpSUpJQWtvQWdSQnRYOXhRUWh5TmdJRUlBVWdCeWdDQUdwQk1EWUNUQ0FGSUFjb0FnQnFJQUEyQWd3Z0JTQU9FTU1FR2dzZ0JFSER2d0lRRGlJQUlBQW9BZ0JCREdzaUJDZ0NBR29pQlNBRktBSUVRWUFRY2pZQ0JDQUFJQVFvQWdCcUlnUWdCQ2dDQkVHMWYzRkJBbkkyQWdRZ0FDQUtFTHdDR2dzZ0JpQURRUXhxRUVJZ0F4QzdBaG9nQWtIQUFtb2tBQ0FCUVFocUlBWVFFaG9nQmhBUEdnd0NDeUFJUVJCcUlRb2dBaXNES0xZaEVTTUFRY0FDYXlJRUpBQWdCRUd3QVdvUWlBTWhCU0FSdkNJQVFRQklCRUFnQlVFSWFrRXRFTjRFSUFCQi8vLy8vd2R4SVFBTEFrQUNRQUpBSUJFUTJoaEJBbXNPQXdBQkFBRUxJd0JCb0FGcklnTWtBQ0FESUFBMkFwd0JJQU5CQ0dvUVNTSUFJQU5CbkFGcUVJVUlHaUFFSUFCQkRHb1FRaUFBRUZFZ0EwR2dBV29rQUNBRlFRaHFJQVFRRWhvZ0JCQVBHZ3dCQ3lBRlFRaHFJZ1pCMlNjUURob2dBRUgvLy84RGNTRURJQUJCRjNaQi93QnJJZ0JCZ0FGR0JFQWdBMFVFUUNBR1FkYVlDQkFPUVlBQkVMd0NHZ3dDQ3lBRFFRRjBJUU5CQmlFQUEwQWdBMEVQY1VVRVFDQUFRUUZySVFBZ0EwRUVkaUVEREFFTEN5QUdRY2VWQ0JBT0lnWWdCaWdDQUVFTWF5SUhLQUlBYWlJSklBa29BZ1JCdFg5eFFRaHlOZ0lFSUFZZ0J5Z0NBR3BCTURZQ1RDQUdJQWNvQWdCcUlBQTJBZ3dnQmlBREVDRkIxNWdJRUE0aUFDQUFLQUlBUVF4cktBSUFhaUlESUFNb0FnUkJ0WDl4UVFKeU5nSUVJQUJCZ0FFUXZBSWFEQUVMSUFORkJFQWdCRUh0cmdWQi9RQkJEeUFFUWFBQmFoQWRJZ2NRRnlJSlFSaHFRYjdhQ0JBT0dpQUpFQmdnQnhBZUN3TkFJQU5CZ0lDQUJIRkZCRUFnQUVFQmF5RUFJQU5CQVhRaEF3d0JDd3NnQmtHUGl3Y1FEaG9nQUVFQmFpRU1JQU5CQVhSQmdJQ0FDSE1pQXdSQVFRWWhBQU5BSUFOQkQzRkZCRUFnQUVFQmF5RUFJQU5CQkhZaEF3d0JDd3NnQmtIOGx3Z1FEaUlISUFjb0FnQkJER3NpQ1NnQ0FHb2lEU0FOS0FJRVFiVi9jVUVJY2pZQ0JDQUhJQWtvQWdCcVFUQTJBa3dnQnlBSktBSUFhaUFBTmdJTUlBY2dBeEFoR2dzZ0JrSER2d0lRRGlJQUlBQW9BZ0JCREdzaUF5Z0NBR29pQmlBR0tBSUVRWUFRY2pZQ0JDQUFJQU1vQWdCcUlnTWdBeWdDQkVHMWYzRkJBbkkyQWdRZ0FDQU1FTHdDR2dzZ0NpQUZRUXhxRUVJZ0JSQzdBaG9nQkVIQUFtb2tBQ0FCUVFocUlBb1FFaG9nQVNBQ0tBSXdFT1FWSUFvUUR4b01BUXNnQUVHdyt3OUdCRUFnQVNBQ1FTaHFFTWtaSUFJb0FqQVE3QmNNQVFzZ0NFRUlhaERRR0FzZ0NFRWdhaVFBREFFTElBTkJ3SUFTUmdSQUl3QkJFR3NpQXlRQUFrQWdBaWdDSkJEUkdFVUVRQ0FCUVFocUlnUkJtZjhJRUE0YUlBQWdBU0FDS0FJa0VKSUJJQVJCNy9ZSUVBNGFEQUVMSUFBZ0FTQUNLQUlrRUpJQkN5QUJRUWhxSWdCQi9KY0lFQTRhSUFNZ0FpZ0NLRUVrYWhCVElBQWdBeEFTR2lBREVBOGFJQU5CRUdva0FBd0JDeUFEUWVpREVrWUVRQ0FCUVFocVFiRzlCUkFPR2d3QkN5QURRWUNCRWtZRVFDQUNLQUlrSWdOQkJFMEVRQ0FCUVFocUlBTkJBblJCcU9JU2FpZ0NBQkFPR2dzZ0FVRUlhaUlEUVpuL0NCQU9HaUFBSUFFZ0FpZ0NLQkNTQVNBRFFlLzJDQkFPR2d3QkN5QUxRUWhxRU5NWUN5QUxRUkJxSkFBTGRRRUNmeU1BUVJCcklnSWtBRUVnRUJVaUEwRUFOZ0lBSUFJZ0FFRUlhallDQkNBQ1FRRTJBZ2dnQTBFSWFpQUJFT3NGR2lBRElBQTJBZ1FnQXlBQUtBSUFJZ0UyQWdBZ0FTQUROZ0lFSUFBZ0F6WUNBQ0FBSUFBb0FnaEJBV28yQWdnZ0FrRUFOZ0lBSUFJUWl3RWdBa0VRYWlRQUN6WUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUFnQWtFTWFoRHNBU0lBQkg4Z0FDZ0NEQVZCQUFzaEFTQUNRUkJxSkFBZ0FRc1NBQ0FBUVFBMkFrUWdBQ0FBS0FKQUVEWUw0d1FDQ1g4Q2ZTTUFRUkJySWdra0FDTUFRUkJySWdja0FDQUNLQUlBSVFZZ0NRSi9Ba0FnQVNnQ0JDSURSUTBBSUFFb0FnQUNmeUFEUVFGcklBWnhJQU5wSWdwQkFVME5BQm9nQmlBRElBWkxEUUFhSUFZZ0EzQUxJZ1JCQW5ScUtBSUFJZ1ZGRFFBZ0EwRUJheUVMSUFwQkFVc2hDZ05BSUFVb0FnQWlCVVVOQVNBR0lBVW9BZ1FpQ0VjRVFBSkFJQXBGQkVBZ0NDQUxjU0VJREFFTElBTWdDRXNOQUNBSUlBTndJUWdMSUFRZ0NFY05BZ3NnQlNnQ0NDQUdSdzBBQzBFQURBRUxJQWNnQVNBR0lBSVF3eEFDUUVFQUlBTWdBU2dDREVFQmFyTWlEU0FCS2dJUUlnd2dBN09VWGhzTkFDQUJJQU1nQTBFQmEzRkJBRWNnQTBFRFNYSWdBMEVCZEhJaUJBSi9JQTBnREpXTklneERBQUNBVDEwZ0RFTUFBQUFBWUhFRVFDQU1xUXdCQzBFQUN5SUNJQUlnQkVrYkVNTUJJQUVvQWdRaUF5QURRUUZyY1VVRVFDQURRUUZySUFaeElRUU1BUXNnQXlBR1N3UkFJQVloQkF3QkN5QUdJQU53SVFRTEFrQWdCRUVDZENJQ0lBRW9BZ0JxS0FJQUlnUkZCRUFnQnlnQ0FDQUJLQUlJTmdJQUlBRWdCeWdDQURZQ0NDQUJLQUlBSUFKcUlBRkJDR28yQWdBZ0J5Z0NBQ0lFS0FJQUlnSkZEUUVnQWlnQ0JDRUZBa0FnQXlBRFFRRnJJZ0p4UlFSQUlBSWdCWEVoQlF3QkN5QURJQVZMRFFBZ0JTQURjQ0VGQ3lBQktBSUFJQVZCQW5ScUlBUTJBZ0FNQVFzZ0J5Z0NBQ0FFS0FJQU5nSUFJQVFnQnlnQ0FEWUNBQXNnQnlnQ0FDRUZJQWRCQURZQ0FDQUJJQUVvQWd4QkFXbzJBZ3dnQnhDTEFVRUJDem9BRENBSklBVTJBZ2dnQjBFUWFpUUFJQUFnQ1NnQ0NEWUNBQ0FBSUFrdEFBdzZBQVFnQ1VFUWFpUUFDMkFCQVg4Z0FDZ0NCQ0lDQkVBZ0FpZ0NBQ0FCRUZkQkFVRUJRZFdlQ0VIUXB3TkI4QUFRU3dzZ0FDQUJFTTBESWdGRkJFQkJBQThMSUFBZ0FSQ2tBeUVCSUFBb0FnQW9BZ2dnQVJCWFFRRkJBVUdobXdoQjBLY0RRZlFBRUVzZ0FRc1NBQ0FCRVBzRUJIOGdBQVVnQVJDbEF3c0w4Z0VCQlg4akFFRWdheUlESkFBZ0F5QUJOZ0lRSXdCQkVHc2lBaVFBSUFNZ0FDQUNRUXhxSUFFUXJRWWlCQ2dDQUNJQkJIOUJBQVZCSUJBVklRRWdBaUFBUVFScU5nSUVJQUlnQVRZQ0FDQURLQUlRS0FJQUlRVWdBVUVBTmdJY0lBRWdBVUVVYWlJR05nSVlJQUVnQlRZQ0VDQUJJQVkyQWhRZ0FrRUJPZ0FJSUFBZ0FpZ0NEQ0FFSUFJb0FnQVErQUlnQWlnQ0FDRUJJQUpCQURZQ0FDQUNLQUlBSVFBZ0FrRUFOZ0lBSUFBRVFDQUNMUUFJQkVBZ0FFRVVhaEREQ2dzZ0FBUkFJQUFRSHdzTFFRRUxPZ0FjSUFNZ0FUWUNHQ0FDUVJCcUpBQWdBeWdDR0NFQUlBTkJJR29rQUNBQVFSUnFDeEVBSUFCQkdHb2dBU2dDQUJBT0dpQUFDeHNCQVg5QkNpRUJJQUFRdUFZRWZ5QUFFSklLUVFGckJVRUtDd3VuQXdFRWZ5QUFRWWdJYWlnQ0FDRUVBa0FnQUVHTUNHb29BZ0JCQTJwQmZIRWlBMEhkL2dOclFmNy9lMHNFUUNBRUlRSU1BUXNnQUVHUWdBUkJFQkRaQWlJQ05nS0lDRUVBSVFNZ0FrRUFOZ0tBZ0FRZ0JBUkFJQVFnQWpZQ2dJQUVEQUVMSUFBZ0FqWUNoQWdMSUFBZ0EwR2tBV28yQW93SUlBSWdBMm9pQTBGL05nSU1JQU1nQVRZQ0NDQURRUUE2QUFRZ0EwRUFOZ0lBSUFOQkVHb1E2d3NhSUFOQkFEWUNvQUVnQUVHVUNHb29BZ0FoQkFKQUFrQWdBRUdZQ0dvb0FnQWlBa0VnU1FSQUlBUWhBUXdCQ3lBQUtBS0lDQ0VCQWtBZ0FDZ0NqQWhCQTJwQmZIRWlCVUg1L2dOclFmNy9lMHNFUUNBQklRSU1BUXNnQUVHUWdBUkJFQkRaQWlJQ05nS0lDRUVBSVFVZ0FrRUFOZ0tBZ0FRZ0FRUkFJQUVnQWpZQ2dJQUVEQUVMSUFBZ0FqWUNoQWdMSUFBZ0FpQUZhaUlCTmdLVUNDQUFJQVZCaUFGcU5nS01DQ0FDUlEwQklBRWdCRFlDaEFGQkFDRUNJQUZCQURZQ2dBRWdCRUdBQVdvZ0FFR1FDR29nQkJzZ0FUWUNBQXNnQUNBQ1FRRnFOZ0tZQ0NBQklBSkJBblJxSUFNMkFnQUxJQUJCbkFocUlnQWdBQ2dDQUVFQmFqWUNBQ0FEQ3hzQUlBRkJBQ0FBS0FJQVFmR1ZCQ0FBS0FJRUtBSUFFS2tFR3dzMkFDQUFMQUFMUVFCSUJFQWdBQ2dDQUJBZkN5QUFJQUVwQWdBM0FnQWdBQ0FCS0FJSU5nSUlJQUZCQURvQUN5QUJRUUE2QUFBTERBQWdBQ0FCUWJBREVQMFNDM1VCQW44akFFSFFBV3NpQlNRQUlBQWdBaWdDQUNBRFFRSjBhaWdDQUJCNFJRUkFJQVZCRUdvaUF5QUFRWElnQWhBUUlBVWdCQkNrQmlBRElBVVFFaG9nQTBHVXpRb1FEaG9nQXlBQkVCSWFJQU5CeWQ4QUVBNGFJQVVvQXN3QklRWWdCUkFQR2lBREVCRUxJQVZCMEFGcUpBQWdCZ3NiQVFGL1FRd1FGU0lDSUFFMkFnQWdBaUFBS1FJRU53SUVJQUlMRGdBZ0FDQUJJQUVRaGcwUXNCTUxGd0FnQUNBQlFRRnJFTDBZSWdCQnlLSVBOZ0lBSUFBTHJ3RUJBbjhqQUVFUWF5SURKQUFnQXlBQk9nQVBBa0FDUUFKQUlBQVF1QVpGQkVCQkNpRUNJQUFReUE0aUFVRUtSZzBCSUFBUWlnVWhBaUFBSUFGQkFXb1Fpd1VNQXdzZ0FCQ1NDaUVDSUFBUXlRNGlBU0FDUVFGcklnSkhEUUVMSUFBZ0FrRUJJQUlnQWtFQUVQUUpJQUloQVFzZ0FCRFVDQ0VDSUFBZ0FVRUJhaERUQkFzZ0FTQUNhaUlBSUFOQkQyb1EwUUlnQTBFQU9nQU9JQUJCQVdvZ0EwRU9haERSQWlBRFFSQnFKQUFMMHdFQ0EzOENmZ0pBSUFBcEEzQWlCRkJGSUFRZ0FDa0RlQ0FBS0FJRUlnRWdBQ2dDTENJQ2E2eDhJZ1ZYY1VVRVFDQUFFS1lOSWdOQkFFNE5BU0FBS0FJc0lRSWdBQ2dDQkNFQkN5QUFRbjgzQTNBZ0FDQUJOZ0pvSUFBZ0JTQUNJQUZyckh3M0EzaEJmdzhMSUFWQ0FYd2hCU0FBS0FJRUlRRWdBQ2dDQ0NFQ0FrQWdBQ2tEY0NJRVVBMEFJQVFnQlgwaUJDQUNJQUZyckZrTkFDQUJJQVNuYWlFQ0N5QUFJQUkyQW1nZ0FDQUZJQUFvQWl3aUFDQUJhNng4TndONElBQWdBVThFUUNBQlFRRnJJQU02QUFBTElBTUxMQUFnQUVFQU5nSVVJQUJCQURZQ0JDQUFJQUJCREdvMkFnZ2dBRUdFNFJJMkFnQWdBQ0FCRUw0T0lBQUxGZ0FnQUNBQ0VJUUJJZ0FnQUNnQ0FDZ0NEQkVDQUFzU0FDQUFRUUEyQWdnZ0FDQUFLQUlFRURZTEhBRUJmeUFBS0FJQUlRSWdBQ0FCS0FJQU5nSUFJQUVnQWpZQ0FBc1NBQ0FBUVFBMkFnd2dBQ0FBS0FJSUVEWUwyUUVDQlg4QmZpTUFRUkJySWdRa0FDQUFRUUEyQWhRZ0FFRUFOZ0lFSUFBZ0FFRU1haUlGTmdJSUlBQkJoT0VTTmdJQUFrQWdBU2dDQkNJRFFRRk5CRUFnQVNnQ0FDSUJJQU5CQW5ScUlRWURRQ0FCSUFaR0RRSWdBQ0FDUVFGcUlnTTJBZ1FnQlNBQ1FRSjBhaUFCS0FJQU5nSUFJQUZCQkdvaEFTQURJUUlNQUFzQUN5TUFRUkJySWdJa0FFRU1FQlVoQXlBQ0lBRXBBZ0FpQnpjREFDQUNJQWMzQXdnZ0F5QUNFT2NESVFFZ0FrRVFhaVFBSUFSQkFEWUNDQ0FBUVJScUlBRVFqUVVnQkVFSWFoQzdCZ3NnQkVFUWFpUUFJQUFMZ0FNQkRIOGdBQ2dDQUNJRUtBTEVCaUlISUFBb0FneEdCRUFnQUNnQ0NBOExJd0JCRUdzaUFTUUFJd0JCd0FGcklnTWtBQ0FEUWJnQmFpQUVJQUJCQkdvaUFoQ3dFaUFFS0FLMEJpSUlRUUZySVFrZ0FpZ0NBQ0VLSUFRb0FyQUdJUXNnQXlnQ3ZBRWhEQ0FES0FLNEFTRUNBa0FEUUNBRklBaEhCRUFnQ3lBQ1FZZ0JiR29pQmkwQWVFVUVRQ0FCUVFBMkFnd2dBVUVBT2dBSURBTUxBa0FnQmlnQ2dBRWdERWNOQUNBS0lBWW9BZ0JIRFFBZ0FTQUNOZ0lNSUFGQkFUb0FDQXdEQ3lBRklBWW9Bb1FCU3dSQUlBRkJBRFlDRENBQlFRQTZBQWdNQXdVZ0FrRUJha0VBSUFJZ0NVY2JJUUlnQlVFQmFpRUZEQUlMQUFzTElBTkJDR3BCaHJVRFFaNEVRUTRnQTBHb0FXb1FIU0lDRUJjaUJVRVlha0hTTlJBT0dpQUZFQmdnQVVFQU5nSU1JQUZCQURvQUNDQUNFQjRMSUFOQndBRnFKQUFnQVNnQ0RDRURJQVFvQXJBR0lRSWdBUzBBQ0NFRUlBRkJFR29rQUNBQUlBYzJBZ3dnQUNBQ0lBTkJpQUZzYWtFSWFrRUFJQVFiSWdBMkFnZ2dBQXQrQVFGL0l3QkJ3QUZySWdRa0FDQUVJQUkyQXJRQklBUWdBellDdUFFZ0FoREtBMFVFUUNBRVFjV3RCVUdWQkVFSUlBUkJvQUZxRUIwaUFoQVhJZ05CR0dwQnd1WUlFQTRhSUFNUUdDQUNFQjRMSUFFb0FnQWdCRUcwQVdvZ0JFRzRBV29ReHdJaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBSUFSQndBRnFKQUFMUEFFQ2Z3SkFJQUFnQVJDNkFTSURSUTBBUVFFaEFnSkFBa0FnQXk4QkhrRVdhdzRDQWdBQkN5QUFJQUFnQVJEQkFSQjNEd3RCQUNFQ0N5QUNDMG9CQW44akFFR3dBV3NpQVNRQUlBQXRBTkVDQkVBZ0FVR3BxUVZCaWdGQkJTQUJRYUFCYWhBZElnQVFGeUlDUVJocVFjalVDQkFPR2lBQ0VCZ2dBQkFlQ3lBQlFiQUJhaVFBQzJJQkFuOGdBRUVBTmdJSUlBQkNBRGNDQUNBQktBSUVJZ0lnQVNnQ0FDSURSd1JBSUFBZ0FpQURhMEVDZFJEUEJTQUFLQUlFSVFJZ0FDQUJLQUlFSUFFb0FnQWlBMnNpQVVFQVNnUi9JQUlnQXlBQkVIMGdBV29GSUFJTE5nSUVDeUFBQzM0QkFYOGpBRUhBQVdzaUJDUUFJQVFnQWpZQ3RBRWdCQ0FETmdLNEFTQUNFTW9EUlFSQUlBUkJ4YTBGUVpVRVFRZ2dCRUdnQVdvUUhTSUNFQmNpQTBFWWFrSEM1Z2dRRGhvZ0F4QVlJQUlRSGdzZ0FTZ0NBQ0FFUWJRQmFpQUVRYmdCYWhERUFpRUJJQUJCQVRvQUJDQUFJQUUyQWdBZ0JFSEFBV29rQUFzUEFDQUFFTTBKSUFBdEFBaEJBVVlMandFQkFuOENRQUpBQWtBZ0FDMEFDeUlERVBzRVJRUkFRUUVoQWlBREVLVURJZ05CQVVZTkFTQUFJQU5CQVdvUXdBVWdBQ0VDREFNTElBQW9BZ1FpQXlBQUtBSUlFUDBKUVFGcklnSkhEUUVMSUFBZ0FrRUJJQUlnQWtFQUVQY01JQUloQXdzZ0FDZ0NBQ0VDSUFBZ0EwRUJhaENIQkFzZ0FpQURRUUowYWlJQUlBRVFtUUlnQUVFRWFrRUFFSmtDQ3dvQUlBQVFyQUZCQUVjTENnQWdBQkN0RTBFQVJ3c3NBUUovQWtBZ0FDQUJFTG9CSWdORkRRQWdBeThCSGtFWFJ3MEFJQUFnQUNBQkVNRUJFRkFoQWdzZ0Fnc0pBQ0FBUVFnUXdCSUxHQUVCZnlNQVFSQnJJZ0VnQURZQ0RDQUJLQUlNS0FJRUMzNEJBMzhqQUVHd0FXc2lCU1FBSUFBZ0FTZ0NEQkRrRUNBQUtBSUFJZ01nQVNnQ0RDSUVRUUowYWlnQ0FBUkFJQVZCb3JBRFFlc0FRUWtnQlVHZ0FXb1FIU0lERUJjaUJFRVlha0d3cHdnUURob2dCQkFZSUFNUUhpQUJLQUlNSVFRZ0FDZ0NBQ0VEQ3lBRElBUkJBblJxSUFJMkFnQWdCVUd3QVdva0FBc01BQ0FBSUFGQnJBRVEyZ2tMT3dFQmZ5QUFRZWlNRGlnQ0FDSUJOZ0lBSUFBZ0FVRU1heWdDQUdwQjlJd09LQUlBTmdJQUlBQkJCR29RMFFrYUlBQkJPR29RL2dRYUlBQUw1UVFDQ1g4Q2ZTTUFRUkJySWdna0FDTUFRUkJySWdVa0FDQUJLQUlBSVFNZ0NBSi9Ba0FnQUNnQ0JDSUNSUTBBSUFBb0FnQUNmeUFDUVFGcklBTnhJQUpwSWdaQkFVME5BQm9nQXlBQ0lBTkxEUUFhSUFNZ0FuQUxJZ2RCQW5ScUtBSUFJZ1JGRFFBZ0FrRUJheUVKSUFaQkFVc2hDZ05BSUFRb0FnQWlCRVVOQVNBRElBUW9BZ1FpQmtjRVFBSkFJQXBGQkVBZ0JpQUpjU0VHREFFTElBSWdCa3NOQUNBR0lBSndJUVlMSUFZZ0IwY05BZ3NnQkNnQ0RDSUdJQUVvQWdRZ0JpZ0NBQ2dDQ0JFQkFFVU5BQXRCQUF3QkN5QUZJQUFnQXlBQkVQY0xBa0JCQUNBQ0lBQW9BZ3hCQVdxeklnc2dBQ29DRUNJTUlBS3psRjRiRFFBZ0FDQUNJQUpCQVd0eFFRQkhJQUpCQTBseUlBSkJBWFJ5SWdFQ2Z5QUxJQXlWalNJTFF3QUFnRTlkSUF0REFBQUFBR0J4QkVBZ0M2a01BUXRCQUFzaUJ5QUJJQWRMR3hDS0Z5QUFLQUlFSWdJZ0FrRUJhM0ZGQkVBZ0FrRUJheUFEY1NFSERBRUxJQUlnQTBzRVFDQURJUWNNQVFzZ0F5QUNjQ0VIQ3dKQUlBZEJBblFpQXlBQUtBSUFhaWdDQUNJQlJRUkFJQVVvQWdBZ0FDZ0NDRFlDQUNBQUlBVW9BZ0EyQWdnZ0FDZ0NBQ0FEYWlBQVFRaHFOZ0lBSUFVb0FnQWlBU2dDQUNJRFJRMEJJQU1vQWdRaEJBSkFJQUlnQWtFQmF5SURjVVVFUUNBRElBUnhJUVFNQVFzZ0FpQUVTdzBBSUFRZ0FuQWhCQXNnQUNnQ0FDQUVRUUowYWlBQk5nSUFEQUVMSUFVb0FnQWdBU2dDQURZQ0FDQUJJQVVvQWdBMkFnQUxJQVVvQWdBaEJDQUZRUUEyQWdBZ0FDQUFLQUlNUVFGcU5nSU1JQVVRaXdGQkFRczZBQXdnQ0NBRU5nSUlJQVZCRUdva0FDQUlLQUlJR2lBSVFSQnFKQUFMd0FFQkJuOENRQ0FBS0FJRUlnTkZEUUFnQVNnQ0FDRUVJQUFvQWdBQ2Z5QURRUUZySUFSeElBTnBJZ0pCQVUwTkFCb2dCQ0FESUFSTERRQWFJQVFnQTNBTElnVkJBblJxS0FJQUlnQkZEUUFnQTBFQmF5RUdJQUpCQVVzaEJ3TkFJQUFvQWdBaUFFVU5BU0FFSUFBb0FnUWlBa2NFUUFKQUlBZEZCRUFnQWlBR2NTRUNEQUVMSUFJZ0Ewa05BQ0FDSUFOd0lRSUxJQUlnQlVjTkFnd0JDeUFBS0FJTUlnSWdBU2dDQkNBQ0tBSUFLQUlJRVFFQVJRMEFDeUFBRHd0QkFBc1FBQ0FBTFFBRVJRUkFFRzhBQ3lBQUN4RUFJQUJCS0VIWi93TkJmRUVERU1vQkN6TUJBWDlCekx3Z0xRQUFCRUJCeUx3Z0tBSUFEd3RCdnQ0R0VQd0VJUUJCekx3Z1FRRTZBQUJCeUx3Z0lBQTJBZ0FnQUF1QkFRRUNmd05BQWtBZ0FDQUJFTG9CSWdJRVFBSkFBa0FDUUFKQUlBSXZBUjRpQTBFVWF3NEZBd01EQWdBQkN5QUNLQUlBS0FJSUlRRU1CUXNnQTBIdUtVY05Bd3NnQWlnQ0FDZ0NDQ0VCQ3lBQkR3dEJxUzlCK0tzQ1FjOEdRWUNXQkJBQUFBc2dBaWdDSkNJQkRRQUxRZFdTQjBINHF3SkI1Z1pCZ0pZRUVBQUFDN2NCQVFKL0lBQWdBUkN3QVNJQVFReHFJQUZCREdvUXZCWWdBRUVZYWlBQlFSaHFRU2dRZlJvZ0FFRkFheUlBUVFBMkFnZ2dBRUlBTndJQUlBRkJRR3NpQVNnQ0JDSUNJQUVvQWdBaUEwY0VRQ0FDSUFOclFRTjFJZ0pCZ0lDQWdBSlBCRUFRQVFBTElBQWdBaEM4RnlJRE5nSUFJQUFnQXpZQ0JDQUFJQU1nQWtFRGRHbzJBZ2dnQUNnQ0JDRUNJQUFnQVNnQ0JDQUJLQUlBSWdGcklnQkJBRW9FZnlBQ0lBRWdBQkI5SUFCcUJTQUNDellDQkFzTGpBUUNDWDhCZlFKQUFuOUJBaUFCUVFGR0RRQWFJQUVnQVNBQlFRRnJjVVVOQUJvZ0FSQi9DeUlDSUFBb0FnUWlBVTBFUUNBQklBSk5EUUVnQVVFRFNTRURBbjhnQUNnQ0RMTWdBQ29DRUpXTklndERBQUNBVDEwZ0MwTUFBQUFBWUhFRVFDQUxxUXdCQzBFQUN5RUVJQUVnQWlBRElBRnBRUUZMY2dSL0lBUVFmd1VnQkVFQlFTQWdCRUVCYTJkcmRDQUVRUUpKR3dzaUFTQUJJQUpKR3lJQ1RRMEJDeUFBSVFOQkFDRUJBa0FnQWdSQUlBTWdBaENYQXhCc0lBTWdBallDQkFOQUlBRWdBa1lFUUNBREtBSUlJZ1JGRFFNZ0EwRUlhaUVBSUFRb0FnUWhCZ0pBSUFKcElnRkJBVTBFUUNBR0lBSkJBV3R4SVFZTUFRc2dBaUFHU3cwQUlBWWdBbkFoQmdzZ0F5Z0NBQ0FHUVFKMGFpQUFOZ0lBSUFKQkFXc2hDQ0FCUVFGTElRa0RRQ0FFS0FJQUlnQkZEUVFnQUNnQ0JDRUZBa0FnQ1VVRVFDQUZJQWh4SVFVTUFRc2dBaUFGU3cwQUlBVWdBbkFoQlFzQ1FDQUZJQVpHRFFBZ0FDRUJJQVZCQW5RaUJ5QURLQUlBYWlJS0tBSUFSUVJBSUFvZ0JEWUNBQ0FGSVFZTUFRc0RRQ0FCSWdVb0FnQWlBUVJBSUFBb0FnZ2dBU2dDQ0VZTkFRc0xJQVFnQVRZQ0FDQUZJQU1vQWdBZ0Iyb29BZ0FvQWdBMkFnQWdBeWdDQUNBSGFpZ0NBQ0FBTmdJQURBRUxJQUFoQkF3QUN3QUZJQU1vQWdBZ0FVRUNkR3BCQURZQ0FDQUJRUUZxSVFFTUFRc0FDd0FMSUFOQkFCQnNJQU5CQURZQ0JBc0xDMFlCQW44akFFRVFheUlESkFBZ0FoRG5DaUFBSUFOQkNHb1FtUmdpQUNBQklBRVEwZ2dpQVNBQklBSVFPeUlFYWhEYURDQUFJQUlRZXlBRUVQNEdHaUFEUVJCcUpBQUxCd0FnQUNBQlNRdkpDZ0lGZnc5K0l3QkI0QUJySWdVa0FDQUVRdi8vLy8vLy96K0RJUXdnQWlBRWhVS0FnSUNBZ0lDQWdJQi9neUVLSUFKQy8vLy8vLy8vUDRNaURVSWdpQ0VPSUFSQ01JaW5RZi8vQVhFaEJ3SkFBa0FnQWtJd2lLZEIvLzhCY1NJSlFmLy9BV3RCZ29CK1R3UkFJQWRCLy84QmEwR0JnSDVMRFFFTElBRlFJQUpDLy8vLy8vLy8vLy8vQUlNaUMwS0FnSUNBZ0lEQS8vOEFWQ0FMUW9DQWdJQ0FnTUQvL3dCUkcwVUVRQ0FDUW9DQWdJQ0FnQ0NFSVFvTUFnc2dBMUFnQkVMLy8vLy8vLy8vLy84QWd5SUNRb0NBZ0lDQWdNRC8vd0JVSUFKQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFSQ2dJQ0FnSUNBSUlRaENpQURJUUVNQWdzZ0FTQUxRb0NBZ0lDQWdNRC8vd0NGaEZBRVFDQUNJQU9FVUFSQVFvQ0FnSUNBZ09ELy93QWhDa0lBSVFFTUF3c2dDa0tBZ0lDQWdJREEvLzhBaENFS1FnQWhBUXdDQ3lBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQUlBRWdDNFFoQWtJQUlRRWdBbEFFUUVLQWdJQ0FnSURnLy84QUlRb01Bd3NnQ2tLQWdJQ0FnSURBLy84QWhDRUtEQUlMSUFFZ0M0UlFCRUJDQUNFQkRBSUxJQUlnQTRSUUJFQkNBQ0VCREFJTElBdEMvLy8vLy8vL1AxZ0VRQ0FGUWRBQWFpQUJJQTBnQVNBTklBMVFJZ1liZVNBR1FRWjByWHluSWdaQkQyc1F6QUpCRUNBR2F5RUdJQVVwQTFnaURVSWdpQ0VPSUFVcEExQWhBUXNnQWtMLy8vLy8vLzgvVmcwQUlBVkJRR3NnQXlBTUlBTWdEQ0FNVUNJSUcza2dDRUVHZEsxOHB5SUlRUTlyRU13Q0lBWWdDR3RCRUdvaEJpQUZLUU5JSVF3Z0JTa0RRQ0VEQ3lBRFFnK0dJZ3RDZ0lEKy93K0RJZ0lnQVVJZ2lDSUVmaUlRSUF0Q0lJZ2lFeUFCUXYvLy8vOFBneUlCZm53aUQwSWdoaUlSSUFFZ0FuNThJZ3NnRVZTdElBSWdEVUwvLy8vL0Q0TWlEWDRpRlNBRUlCTitmQ0lSSUF4Q0Q0WWlFaUFEUWpHSWhFTC8vLy8vRDRNaUF5QUJmbndpRkNBUElCQlVyVUlnaGlBUFFpQ0loSHdpRHlBQ0lBNUNnSUFFaENJTWZpSVdJQTBnRTM1OElnNGdFa0lnaUVLQWdJQ0FDSVFpQWlBQmZud2lFQ0FESUFSK2ZDSVNRaUNHZkNJWGZDRUJJQWNnQ1dvZ0JtcEIvLzhBYXlFR0FrQWdBaUFFZmlJWUlBd2dFMzU4SWdRZ0dGU3RJQVFnQkNBRElBMStmQ0lFVnExOElBSWdESDU4SUFRZ0JDQVJJQlZVclNBUklCUldyWHg4SWdSV3JYd2dBeUFNZmlJRElBSWdEWDU4SWdJZ0ExU3RRaUNHSUFKQ0lJaUVmQ0FFSUFKQ0lJWjhJZ0lnQkZTdGZDQUNJQUlnRUNBU1ZxMGdEaUFXVkswZ0RpQVFWcTE4ZkVJZ2hpQVNRaUNJaEh3aUFsYXRmQ0FDSUFJZ0R5QVVWSzBnRHlBWFZxMThmQ0lDVnExOElnUkNnSUNBZ0lDQXdBQ0RVRVVFUUNBR1FRRnFJUVlNQVFzZ0MwSS9pQ0VESUFSQ0FZWWdBa0kvaUlRaEJDQUNRZ0dHSUFGQ1A0aUVJUUlnQzBJQmhpRUxJQU1nQVVJQmhvUWhBUXNnQmtILy93Rk9CRUFnQ2tLQWdJQ0FnSURBLy84QWhDRUtRZ0FoQVF3QkN3SitJQVpCQUV3RVFFRUJJQVpySWdkQmdBRlBCRUJDQUNFQkRBTUxJQVZCTUdvZ0N5QUJJQVpCL3dCcUlnWVF6QUlnQlVFZ2FpQUNJQVFnQmhETUFpQUZRUkJxSUFzZ0FTQUhFSndHSUFVZ0FpQUVJQWNRbkFZZ0JTa0RNQ0FGS1FNNGhFSUFVcTBnQlNrRElDQUZLUU1RaElRaEN5QUZLUU1vSUFVcEF4aUVJUUVnQlNrREFDRUNJQVVwQXdnTUFRc2dCRUwvLy8vLy8vOC9neUFHclVJd2hvUUxJQXFFSVFvZ0MxQWdBVUlBV1NBQlFvQ0FnSUNBZ0lDQWdIOVJHMFVFUUNBS0lBSkNBWHdpQVNBQ1ZLMThJUW9NQVFzZ0N5QUJRb0NBZ0lDQWdJQ0FnSCtGaEZCRkJFQWdBaUVCREFFTElBb2dBaUFDUWdHRGZDSUJJQUpVclh3aENnc2dBQ0FCTndNQUlBQWdDamNEQ0NBRlFlQUFhaVFBQ3owQkFuOENRQ0FBSUFFUXVnRWlBMFVOQUVFQklRSUNRQUpBSUFNdkFSNUJGV3NPQXdJQkFBRUxJQUFnQUNBQkVNRUJFRkFQQzBFQUlRSUxJQUlMRmdBZ0FDZ0NKQ0FBS0FJZ2EwRWNiU0FBRU5JSGF3dHNBUU4vSXdCQnNBRnJJZ0lrQUNBQUtBSzBCa1VFUUNBQ1FibWhCVUdFQjBFSElBSkJvQUZxRUIwaUF4QVhJZ1JCR0dwQjQrUUlFQTRhSUFRUUdDQURFQjRMSUFFRVFDQUFLQUt3QmlBQUtBSzBCa0hnQUd4cVFlQUFheUFCRVBJSUN5QUNRYkFCYWlRQUlBRUxid0VEZnlBQUtBSUVJUVlDUUNBQUtBSUlJQVJxSUFOeElnY2dBbXRCL3Y5N1N3UkFJQVloQlF3QkN5QUFRWkNBQkVFUUVOa0NJZ1UyQWdSQkFDRUhJQVZCQURZQ2dJQUVJQVlFUUNBR0lBVTJBb0NBQkF3QkN5QUFJQVUyQWdBTElBQWdCeUFCYWpZQ0NDQUZJQWRxQ3ljQUlBQXRBS0FEUlFSQVFmWHZDRUg0cXdKQnlnSkJsODRDRUFBQUN5QUFLQUo0UWNRRGF3dWJBZ0VDZnlNQVFlQUJheUlHSkFBQ1FDQUFJQU1vQWdBZ0JFRUNkR29vQWdBUUlDOEJIaUFDUmcwQUlBWkJBRFlDM0FFQ1FDQUFRWUFEYWlBQ0lBWkIzQUZxRUtrR1JRUkFJQVlvQXR3QkRRRUxJQVpCR0dvaUFpQUFRWElnQXhBUUlBWkJDR29pQUNBRkVLUUdJQUlnQUJBU0dpQUNRZTIxREJBT0dpQUNRWmJOQ2hBT0dpQUNJQUVRRWhvZ0FrSEI3UVFRRGhvZ0JpZ0MxQUVoQnlBQUVBOGFJQUlRRVF3QkN5QUdRUmhxSWdJZ0FFRnlJQU1RRUNBR1FRaHFJZ0FnQlJDa0JpQUNJQUFRRWhvZ0FrSHR0UXdRRGhvZ0FrR1d6UW9RRGhvZ0FpQUJFQklhSUFKQmc3RUtFQTRhSUFKQnNMOENFQTRhSUFJZ0JpZ0MzQUVRalFRb0Fyd0JJUWNnQUJBUEdpQUNFQkVMSUFaQjRBRnFKQUFnQnd0MUFRSi9Jd0JCRUdzaUFpUUFRU0FRRlNJRFFRQTJBZ0FnQWlBQVFRaHFOZ0lFSUFKQkFUWUNDQ0FEUVFocUlBRVEwUUVhSUFNZ0FEWUNCQ0FESUFBb0FnQWlBVFlDQUNBQklBTTJBZ1FnQUNBRE5nSUFJQUFnQUNnQ0NFRUJhallDQ0NBQ1FRQTJBZ0FnQWhDTEFTQUNRUkJxSkFBTFBRRUNmeUFBUWVDTURqWUNPQ0FBUWN5TURqWUNBQ0FBSUFCQkJHb2lBUkNOR0NJQ1FjeU1EallDQUNBQVFlQ01EallDT0NBQlFSQVF1QkVnQWdzd0FRRi9JQUFvQWdRaUFpQUFLQUlJUndSQUlBSWdBU2dDQURZQ0FDQUFJQUpCQkdvMkFnUVBDeUFBSUFFUXdoQUxPQUVCZnlNQVFTQnJJZ0lrQUNBQ0lBRTJBaEFnQWtFWWFpQUFJQUVnQWtFUWFoQ09EeUFDS0FJWUlRQWdBa0VnYWlRQUlBQkJER29MVXdFQmZ5QUJLQUlRSWdKRkJFQWdBRUVBTmdJUUlBQVBDeUFCSUFKR0JFQWdBQ0FBTmdJUUlBRW9BaEFpQVNBQUlBRW9BZ0FvQWd3UkFnQWdBQThMSUFBZ0FpQUNLQUlBS0FJSUVRQUFOZ0lRSUFBTERnQWdBQ0FCSUFFUTBnZ1FuQk1MWUFFQmZ5TUFRUkJySWdNa0FDQURJQUkyQWdnZ0F5QUJOZ0lNUVFBaEFnSkFJQUZGRFFBZ0FDZ0NBRUdzSFdvZ0FTQUFLQUlFS0FJQVFSQnFFTE1jUlEwQUlBQW9BZ2dnQTBFTWFpQURRUWhxRUo4Q0lRSUxJQU5CRUdva0FDQUNDOVlCQVFKL0FrQUNRQUpBSUFFb0FnQUVRQ0FCS0FJRVJRMEJJQUlvQWdCRkRRSWdBaWdDQkVVTkF5QUFLQUlBSUFFUWpBTWhBeUFBS0FJQUlBRkJCR29RakFNb0FnUWhCQ0FES0FJRUlRRWdBQ2dDQUNBQ0VJd0RJUU1nQUNnQ0FDQUNRUVJxRUl3RElRQkJBU0VDSUFNb0FnUWlBeUFCVFFSL0lBUWdBQ2dDQkVrZ0FTQURUWEVGUVFFTER3dEIxUzFCeDdZRFFhY0NRZHp4Q0JBQUFBdEJtT2NFUWNlMkEwR29Ba0hjOFFnUUFBQUxRY3N0UWNlMkEwR3BBa0hjOFFnUUFBQUxRWTNuQkVISHRnTkJxZ0pCM1BFSUVBQUFDdzBBSUFBZ0FTQUNRUUlReFF3TEhRQWdBU0FDTmdJQUlBRWdBQ2tDQkRjQ0JDQUJJQUFvQWd3MkFnd0xHd0VCZjBFSUVCVWlBaUFCTmdJQUlBSWdBQ2dDQkRZQ0JDQUNDd2tBSUFCQkFCQ0dBZ3VvQVFJQ2Z3RjlJd0JCSUdzaUJTUUFJQVVDZnlBRElBU1VFRVlpQjR0REFBQ0FmMTFGQkVBZ0JVRUFPZ0FZUVFBTUFRc2dCU0FIT0FJWVFRRUxPZ0FjQWtBZ0JTMEFIRVVFUUNBRlFRaHFJZ1lnQTBIZG1BZ2dCQkRxQmlBQklBWWdBaEJkSUFZUUR4b2dBQ0FCTFFBRUJIOGdBRU1BQUFBQUVFWTRBZ0JCQVFWQkFnczZBQVFNQVFzZ0JTb0NHQkJHSVFNZ0FFRUJPZ0FFSUFBZ0F6Z0NBQXNnQlVFZ2FpUUFDMm9DQVg4QmZTTUFRUkJySWdVa0FDQUFBbjhDUUNBRElBU1VJZ2FMUXdBQWdIOWRSUVJBSUFVZ0EwSGRtQWdnQkJEc0JpQUJJQVVnQWhCZElBVVFEeHBCQWlBQkxRQUVSUTBDR2lBQVFRQTJBZ0FNQVFzZ0FDQUdPQUlBQzBFQkN6b0FCQ0FGUVJCcUpBQUxiZ0lCZndGOEl3QkJFR3NpQlNRQUlBQUNmd0pBSUFNZ0JLSWlCcGxFQUFBQUFBQUE4SDlqUlFSQUlBVWdBMEhkbUFnZ0JCRHRCaUFCSUFVZ0FoQmRJQVVRRHhwQkFpQUJMUUFFUlEwQ0dpQUFRZ0EzQXdBTUFRc2dBQ0FHT1FNQUMwRUJDem9BQ0NBRlFSQnFKQUFMYVFFRGZ3SkFJQUFpQVVFRGNRUkFBMEFnQVMwQUFFVU5BaUFCUVFGcUlnRkJBM0VOQUFzTEEwQWdBU0lDUVFScUlRRWdBaWdDQUNJRFFYOXpJQU5CZ1lLRUNHdHhRWUNCZ29SNGNVVU5BQXNEUUNBQ0lnRkJBV29oQWlBQkxRQUFEUUFMQ3lBQklBQnJDOGtCQVFOL0FrQWdBU0FDRUxvQklnTUVRQUovQWtBQ1FDQURLQUlrSWdWRkJFQkJBQ0VDREFFTFFRQWhBa0VBSUFFZ0JSQlFSUTBDR2tFQUlBRWdCUkErUVNCSERRSWFRUUVoQWlBREx3RWVFS01DRFFFTFFRQU1BUXRCQUNBREx3RWVFTDhJRFFBYUlBTXZBUjVCTGtjRVFDQURLQUlFSUFNb0FnQWlBV3RCRUVjTkF5QUJLQUlNSVFRTFFRRUxJUUVnQUNBRU5nSUVJQUFnQVRvQUFTQUFJQUk2QUFBUEMwR3BMMEg0cXdKQjdRbEJpQzRRQUFBTFFhcjJCa0g0cXdKQi93bEJpQzRRQUFBTExRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhvQW1vZ0FrRU1haEMzQ0NFQUlBSkJFR29rQUNBQUM2RVVBaEYvQVg0akFFSGdBMnNpQWlRQUFrQWdBUVJBSUFKQkFUWUNGQ0FDSUFFMkFsZ2dBaUFDUWRnQWFqWUNFQ0FDSUFJcEF4QTNBd2dnQUVFUWFpRU9JQUpCR0dvZ0FrRUlhaEN5Q1NFS0lBSkJzQU5xUVFSeUlROERRQ0FLS0FJa0lnRUVRQ0FLSUFGQkFXc2lBVFlDSkNBS0tBSWdJQUZCQW5ScU5RSUFJUk1nQUNnQ0JDRVFJQUpDZ0lDQWdJQUVOd0xjQWlBQ0lBSkIyQUJxSWdFMkF0Z0NJQUZCQVJDUURDQUNJQUlvQXR3Q0lnTkJBV28yQXR3Q0lBSW9BdGdDSUFOQkEzUnFJQk0zQWdBZ0FpQUJOZ0pRSUFJZ0FUWUNTQU5BQWtBZ0FpZ0MzQUlpQVVVTkFDQUNJQUZCQVdzaUFUWUMzQUlnQWlnQzJBSWdBVUVEZEdvaUFTZ0NCQ0VKSUFJZ0FTZ0NBQ0lCTmdKRUFrQWdBUkNUQ0NJTFJRMEFBa0FDUUFKQUlBc29BZ1FpQVVINDdROUdCRUFnQWtIb0Ftb2dDeWdDSkNJRFFTUnFFRlloQVNBQ0lBTTJBdHdESUE0Z0FSRDlFQ0lIUlFSQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBSW9BdmdDRGdrQUFRSURCQVVHQndnTkN5QUFLQUlJSVFNZ0FrR3dBMm9pRFNBQkVGTWpBRUhRQVdzaUFTUUFJQU5CakFGcUlnTkJoQmhxS0FJQUlBTW9Bb3dZSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFnQXlBRVFRRjBRUUpxRUlBUkN5QUJRY2dCYWlBRElBSkIzQU5xSWdRUXNoQWdBU0FOTmdMRUFTQUJJQVEyQXNBQklBTW9Bb1FZSWdaQkFXc2hEQ0FFS0FJQUlSRWdBeWdDZ0JnaEJTQUJLQUxNQVNFU0lBRW9Bc2dCSVFkQkFDRUlBa0FEUUNBR0lBaEhCRUFnQlNBSFFRVjBhaUlFTFFBVVJRUkFJQUZCQ0dvaUJpQUJRY0FCYWhDOEhpQUVJQVlRMVI0Z0JrRUVjaENWQWlBQktBTE1BU0VHSUFVZ0IwRUZkR29pQlNBSU5nSWNJQVVnQmpZQ0dDQURJQU1vQW93WVFRRnFOZ0tNR0NBRElBTW9BcEFZUVFGcU5nS1FHQ0FDSUFSQkJHbzJBb3dESUFKQkFEWUNpQU1NQXdzQ1FDQUVLQUlZSUJKSERRQWdFU0FFS0FJQVJ3MEFJQUpCQWpZQ2lBTWdBaUFFUVFScU5nS01Bd3dEQ3lBSUlBUW9BaHhMQkVBZ0FVR29BV29pQmlBQlFjQUJhaEM4SGlBQlFRaHFJQVlRMUI0aEJTQUJLQUxNQVNFTUlBVWdDRFlDSENBRklBdzJBaGdnQmtFRWNoQ1ZBaUFGSUFRUTdCQWdCU0FGS0FJY1FRRnFOZ0ljSUFNZ0IwRUJhaUFES0FLRUdIQWdCUkRUSGlBRElBTW9Bb3dZUVFGcU5nS01HQ0FESUFNb0FwQVlRUUZxTmdLUUdDQUNJQVJCQkdvMkFvd0RJQUpCQURZQ2lBTWdCUkQrQnd3REJTQUhRUUZxUVFBZ0J5QU1SeHNoQnlBSVFRRnFJUWdNQWdzQUN3c2dBVUVJYWtHR3RRTkI2d05CRGlBQlFhZ0JhaEFkSWdNUUZ5SUVRUmhxUVpZMUVBNGFJQVFRR0NBQ1FnQTNBb2dESUFNUUhnc2dBVUhRQVdva0FDQU5FQThhREF3TElBQW9BZ2doQXlBQlFSUnFFTUFSS0FJQUlRRWdBa0VDT2dDOEF5QUNJQUUyQXJBRElBSkJpQU5xSUFOQmpBRnFJQUpCM0FOcUlBSkJzQU5xSWdFUTdBUWdBUkNWQWd3TEN5QUFLQUlJSVFNZ0FVRVVhaENwRVNnQ0FDRUJJQUpCQlRvQXZBTWdBaUFCTmdLd0F5QUNRWWdEYWlBRFFZd0JhaUFDUWR3RGFpQUNRYkFEYWlJQkVPd0VJQUVRbFFJTUNnc2dBQ2dDQ0NFRElBRkJGR29pQVMwQUJFRURSd1JBREJFTElBRW9BZ0FoQVNBQ1FRWTZBTHdESUFJZ0FUWUNzQU1nQWtHSUEyb2dBMEdNQVdvZ0FrSGNBMm9nQWtHd0Eyb2lBUkRzQkNBQkVKVUNEQWtMSUFBb0FnZ2hBeUFCUVJScUlnRXRBQVJCQkVjRVFBd1FDeUFCS0FJQUlRRWdBa0VFT2dDOEF5QUNJQUUyQXJBRElBSkJpQU5xSUFOQmpBRnFJQUpCM0FOcUlBSkJzQU5xSWdFUTdBUWdBUkNWQWd3SUN5QUFLQUlJSVFNZ0FVRVVhaUlCTFFBRVFRVkhCRUFNRHdzZ0FTZ0NBQ0VCSUFKQkNUb0F2QU1nQWlBQk5nS3dBeUFDUVlnRGFpQURRWXdCYWlBQ1Fkd0RhaUFDUWJBRGFpSUJFT3dFSUFFUWxRSU1Cd3NnQUNnQ0NDRURJQUZCRkdvaUFTMEFCRUVHUndSQURBNExJQUVvQWdBaEFTQUNRUU02QUx3RElBSWdBVFlDc0FNZ0FrR0lBMm9nQTBHTUFXb2dBa0hjQTJvZ0FrR3dBMm9pQVJEc0JDQUJFSlVDREFZTElBQW9BZ2doQXlBQlFSUnFJZ0V0QUFSQkIwY0VRQXdOQ3lBQktBSUFJUUVnQWtFSU9nQzhBeUFDSUFFMkFyQURJQUpCaUFOcUlBTkJqQUZxSUFKQjNBTnFJQUpCc0FOcUlnRVE3QVFnQVJDVkFnd0ZDeUFBS0FJSUlRTWdBVUVVYWlJQkxRQUVRUWhIQkVBTURBc2dBU2dDQUNFQklBSkJCem9BdkFNZ0FpQUJOZ0t3QXlBQ1FZZ0RhaUFEUVl3QmFpQUNRZHdEYWlBQ1FiQURhaUlCRU93RUlBRVFsUUlNQkFzZ0FpQUFLQUlBSWdRMkFyQURJQThnQVJCV0dpQUNRUUEyQXRBRElBSWdCQ2dDc0FoQkFXczJBdFFESUFKQnNBTnFFSThNUlEwQ0lBSkJzQU5xRUk4TUtBSUFLQUlBSUFkSERRSWdBQ2dDRENFQklBSWdBQ2dDL0JFMkFxQURJQUlnQWtHd0Eyb1Fqd3dvQWdBMkFxUURJQUlnQXlnQ0lEWUNtQU1nQWlBREtRSVlOd09RQXlBQ0lBTXBBaEEzQTRnRElBSkJxQU5xSUFFZ0FrR2dBMm9nQWtHSUEyb1F2aDRnQWlnQ3FBTkJBa1lOQWlBQUtBTDhFU0VESUFKQnNBTnFFSThNSVEwZ0F5Z0NLQ0lFSUFNb0Fpd2lBVWtOQVNBQklBRkJBWFFpQmtFQ0lBRWJJZ1ZQRFFFZ0F5Z0NKQ0VJSUFOQkJHb2lEQ0VCSUFNZ0JVRUlUd1IvUVg4Z0JVRUNkQ0FGUWYvLy8vOERTeHNRRlNFQklBWUZRUWdMTmdJc0lBTWdBVFlDSkVFQUlRRURRQ0FCSUFSR0JFQWdEQ0FJRURZZ0F5Z0NLQ0VFREFNRklBRkJBblFpQlNBREtBSWthaUFGSUFocUtBSUFOZ0lBSUFGQkFXb2hBUXdCQ3dBTEFBc2dBVUc0N2c5R0JFQWdBQ0FMS0FJa0VOOEJEQVFMSUFGQndQNFJSdzBESUFBZ0N5Z0NKQkRmQVF3REN5QURJQVJCQVdvMkFpZ2dBeWdDSkNBRVFRSjBhaUFOS0FJQU5nSUFDeUFBS0FJSUlRRWdBa0VCT2dDOEF5QUNJQWMyQXJBRElBSkJpQU5xSUFGQmpBRnFJQUpCM0FOcUlBSkJzQU5xSWdFUTdBUWdBUkNWQWdzZ0N5Z0NKQ0lES0FJRVFjanBEMGNnQTBWeURRQWdBeWdDVENJQklBTW9BbEJCQW5ScUlRTURRQ0FCSUFOR0RRRWdBaUFCS0FJQU5nS3dBeUFLSUFKQnNBTnFFQ1FnQVVFRWFpRUJEQUFMQUFzZ0FpZ0NSQ0VCSUFJZ0VEWUM3QUlnQWlBQ1FjUUFhallDNkFJZ0FVVUVRQ0FDUWVnQ2FoQ09EQTBDREFFTElBRW9BZ1FpQTBIQS94RkdCRUFnQWtISUFHb2dBU2dDSkNBQktBSW9JQWxCQVdvUWpRd01BZ3NnQTBHQWdCSkdCRUFnQWtISUFHb2dBU2dDS0NBQktBSXNJQWxCQVdvUWpRd01BZ3NnQTBIQS9oRkdCRUFnQWtIUUFHb2dBU2dDS0NBSlFRRnFFSzBGREFJTElBTkJ1TzRQUmdSQUlBRW9Ba2dpQXlBQktBSk1RUUowYWlFQklBbEJBV29oQkFOQUlBRWdBMFlOQXlBQlFRUnJJZ0VvQWdBaEJTQUNJQVEyQXJRRElBSWdCVFlDc0FNZ0FrSFlBR29nQWtHd0Eyb1ErUVVNQUFzQUN5QURRY0NBRWtZRVFDQUNRZEFBYWlBQktBSWtJQWxCQVdvUXJRVU1BZ3NnQTBHQWdSSkdCRUFnQWtIUUFHb2dBU2dDS0NBSlFRRnFFSzBGREFJTElBSkI2QUpxRUk0TURRRUxDeUFDUVFBMkF0d0NJQUpCMkFCcUlBSW9BdGdDRURZTUFRc0xJQW9RSXdzZ0FrSGdBMm9rQUE4TEVHOEFDL0V0QVF0L0l3QkJFR3NpQ3lRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBUWZRQlRRUkFRYUNkSUNnQ0FDSUZRUkFnQUVFTGFrRjRjU0FBUVF0Skd5SUdRUU4ySWdCMklnRkJBM0VFUUFKQUlBRkJmM05CQVhFZ0FHb2lBa0VEZENJQlFjaWRJR29pQUNBQlFkQ2RJR29vQWdBaUFTZ0NDQ0lEUmdSQVFhQ2RJQ0FGUVg0Z0FuZHhOZ0lBREFFTElBTWdBRFlDRENBQUlBTTJBZ2dMSUFGQkNHb2hBQ0FCSUFKQkEzUWlBa0VEY2pZQ0JDQUJJQUpxSWdFZ0FTZ0NCRUVCY2pZQ0JBd01DeUFHUWFpZElDZ0NBQ0lIVFEwQklBRUVRQUpBUVFJZ0FIUWlBa0VBSUFKcmNpQUJJQUIwY1NJQVFRRnJJQUJCZjNOeElnQWdBRUVNZGtFUWNTSUFkaUlCUVFWMlFRaHhJZ0lnQUhJZ0FTQUNkaUlBUVFKMlFRUnhJZ0Z5SUFBZ0FYWWlBRUVCZGtFQ2NTSUJjaUFBSUFGMklnQkJBWFpCQVhFaUFYSWdBQ0FCZG1vaUFVRURkQ0lBUWNpZElHb2lBaUFBUWRDZElHb29BZ0FpQUNnQ0NDSURSZ1JBUWFDZElDQUZRWDRnQVhkeElnVTJBZ0FNQVFzZ0F5QUNOZ0lNSUFJZ0F6WUNDQXNnQUNBR1FRTnlOZ0lFSUFBZ0Jtb2lDQ0FCUVFOMElnRWdCbXNpQTBFQmNqWUNCQ0FBSUFGcUlBTTJBZ0FnQndSQUlBZEJlSEZCeUowZ2FpRUJRYlNkSUNnQ0FDRUNBbjhnQlVFQklBZEJBM1owSWdSeFJRUkFRYUNkSUNBRUlBVnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEJDQUJJQUkyQWdnZ0JDQUNOZ0lNSUFJZ0FUWUNEQ0FDSUFRMkFnZ0xJQUJCQ0dvaEFFRzBuU0FnQ0RZQ0FFR29uU0FnQXpZQ0FBd01DMEdrblNBb0FnQWlDa1VOQVNBS1FRRnJJQXBCZjNOeElnQWdBRUVNZGtFUWNTSUFkaUlCUVFWMlFRaHhJZ0lnQUhJZ0FTQUNkaUlBUVFKMlFRUnhJZ0Z5SUFBZ0FYWWlBRUVCZGtFQ2NTSUJjaUFBSUFGMklnQkJBWFpCQVhFaUFYSWdBQ0FCZG1wQkFuUkIwSjhnYWlnQ0FDSUNLQUlFUVhoeElBWnJJUVFnQWlFQkEwQUNRQ0FCS0FJUUlnQkZCRUFnQVNnQ0ZDSUFSUTBCQ3lBQUtBSUVRWGh4SUFacklnRWdCQ0FCSUFSSklnRWJJUVFnQUNBQ0lBRWJJUUlnQUNFQkRBRUxDeUFDS0FJWUlRa2dBaUFDS0FJTUlnTkhCRUFnQWlnQ0NDSUFRYkNkSUNnQ0FFa2FJQUFnQXpZQ0RDQURJQUEyQWdnTUN3c2dBa0VVYWlJQktBSUFJZ0JGQkVBZ0FpZ0NFQ0lBUlEwRElBSkJFR29oQVFzRFFDQUJJUWdnQUNJRFFSUnFJZ0VvQWdBaUFBMEFJQU5CRUdvaEFTQURLQUlRSWdBTkFBc2dDRUVBTmdJQURBb0xRWDhoQmlBQVFiOS9TdzBBSUFCQkMyb2lBRUY0Y1NFR1FhU2RJQ2dDQUNJSVJRMEFRUUFnQm1zaEJBSkFBa0FDUUFKL1FRQWdCa0dBQWtrTkFCcEJIeUFHUWYvLy93ZExEUUFhSUFCQkNIWWlBQ0FBUVlEK1AycEJFSFpCQ0hFaUFIUWlBU0FCUVlEZ0gycEJFSFpCQkhFaUFYUWlBaUFDUVlDQUQycEJFSFpCQW5FaUFuUkJEM1lnQUNBQmNpQUNjbXNpQUVFQmRDQUdJQUJCRldwMlFRRnhja0VjYWdzaUIwRUNkRUhRbnlCcUtBSUFJZ0ZGQkVCQkFDRUFEQUVMUVFBaEFDQUdRUmtnQjBFQmRtdEJBQ0FIUVI5SEczUWhBZ05BQWtBZ0FTZ0NCRUY0Y1NBR2F5SUZJQVJQRFFBZ0FTRURJQVVpQkEwQVFRQWhCQ0FCSVFBTUF3c2dBQ0FCS0FJVUlnVWdCU0FCSUFKQkhYWkJCSEZxS0FJUUlnRkdHeUFBSUFVYklRQWdBa0VCZENFQ0lBRU5BQXNMSUFBZ0EzSkZCRUJCQUNFRFFRSWdCM1FpQUVFQUlBQnJjaUFJY1NJQVJRMERJQUJCQVdzZ0FFRi9jM0VpQUNBQVFReDJRUkJ4SWdCMklnRkJCWFpCQ0hFaUFpQUFjaUFCSUFKMklnQkJBblpCQkhFaUFYSWdBQ0FCZGlJQVFRRjJRUUp4SWdGeUlBQWdBWFlpQUVFQmRrRUJjU0lCY2lBQUlBRjJha0VDZEVIUW55QnFLQUlBSVFBTElBQkZEUUVMQTBBZ0FDZ0NCRUY0Y1NBR2F5SUNJQVJKSVFFZ0FpQUVJQUViSVFRZ0FDQURJQUViSVFNZ0FDZ0NFQ0lCQkg4Z0FRVWdBQ2dDRkFzaUFBMEFDd3NnQTBVTkFDQUVRYWlkSUNnQ0FDQUdhMDhOQUNBREtBSVlJUWNnQXlBREtBSU1JZ0pIQkVBZ0F5Z0NDQ0lBUWJDZElDZ0NBRWthSUFBZ0FqWUNEQ0FDSUFBMkFnZ01DUXNnQTBFVWFpSUJLQUlBSWdCRkJFQWdBeWdDRUNJQVJRMERJQU5CRUdvaEFRc0RRQ0FCSVFVZ0FDSUNRUlJxSWdFb0FnQWlBQTBBSUFKQkVHb2hBU0FDS0FJUUlnQU5BQXNnQlVFQU5nSUFEQWdMSUFaQnFKMGdLQUlBSWdGTkJFQkJ0SjBnS0FJQUlRQUNRQ0FCSUFacklnSkJFRThFUUVHb25TQWdBallDQUVHMG5TQWdBQ0FHYWlJRE5nSUFJQU1nQWtFQmNqWUNCQ0FBSUFGcUlBSTJBZ0FnQUNBR1FRTnlOZ0lFREFFTFFiU2RJRUVBTmdJQVFhaWRJRUVBTmdJQUlBQWdBVUVEY2pZQ0JDQUFJQUZxSWdFZ0FTZ0NCRUVCY2pZQ0JBc2dBRUVJYWlFQURBb0xJQVpCckowZ0tBSUFJZ0pKQkVCQnJKMGdJQUlnQm1zaUFUWUNBRUc0blNCQnVKMGdLQUlBSWdBZ0Jtb2lBallDQUNBQ0lBRkJBWEkyQWdRZ0FDQUdRUU55TmdJRUlBQkJDR29oQUF3S0MwRUFJUUFnQmtFdmFpSUVBbjlCK0tBZ0tBSUFCRUJCZ0tFZ0tBSUFEQUVMUVlTaElFSi9Od0lBUWZ5Z0lFS0FvSUNBZ0lBRU53SUFRZmlnSUNBTFFReHFRWEJ4UWRpcTFhb0ZjellDQUVHTW9TQkJBRFlDQUVIY29DQkJBRFlDQUVHQUlBc2lBV29pQlVFQUlBRnJJZ2h4SWdFZ0JrME5DVUhZb0NBb0FnQWlBd1JBUWRDZ0lDZ0NBQ0lISUFGcUlna2dCMDBnQXlBSlNYSU5DZ3RCM0tBZ0xRQUFRUVJ4RFFRQ1FBSkFRYmlkSUNnQ0FDSURCRUJCNEtBZ0lRQURRQ0FESUFBb0FnQWlCMDhFUUNBSElBQW9BZ1JxSUFOTERRTUxJQUFvQWdnaUFBMEFDd3RCQUJDYkJpSUNRWDlHRFFVZ0FTRUZRZnlnSUNnQ0FDSUFRUUZySWdNZ0FuRUVRQ0FCSUFKcklBSWdBMnBCQUNBQWEzRnFJUVVMSUFVZ0JrMGdCVUgrLy8vL0IwdHlEUVZCMktBZ0tBSUFJZ0FFUUVIUW9DQW9BZ0FpQXlBRmFpSUlJQU5OSUFBZ0NFbHlEUVlMSUFVUW13WWlBQ0FDUncwQkRBY0xJQVVnQW1zZ0NIRWlCVUgrLy8vL0Iwc05CQ0FGRUpzR0lnSWdBQ2dDQUNBQUtBSUVha1lOQXlBQ0lRQUxJQUJCZjBZZ0JrRXdhaUFGVFhKRkJFQkJnS0VnS0FJQUlnSWdCQ0FGYTJwQkFDQUNhM0VpQWtIKy8vLy9CMHNFUUNBQUlRSU1Cd3NnQWhDYkJrRi9Sd1JBSUFJZ0JXb2hCU0FBSVFJTUJ3dEJBQ0FGYXhDYkJob01CQXNnQUNJQ1FYOUhEUVVNQXd0QkFDRUREQWNMUVFBaEFnd0ZDeUFDUVg5SERRSUxRZHlnSUVIY29DQW9BZ0JCQkhJMkFnQUxJQUZCL3YvLy93ZExEUUVnQVJDYkJpSUNRWDlHUVFBUW13WWlBRUYvUm5JZ0FDQUNUWElOQVNBQUlBSnJJZ1VnQmtFb2FrME5BUXRCMEtBZ1FkQ2dJQ2dDQUNBRmFpSUFOZ0lBUWRTZ0lDZ0NBQ0FBU1FSQVFkU2dJQ0FBTmdJQUN3SkFBa0FDUUVHNG5TQW9BZ0FpQkFSQVFlQ2dJQ0VBQTBBZ0FpQUFLQUlBSWdFZ0FDZ0NCQ0lEYWtZTkFpQUFLQUlJSWdBTkFBc01BZ3RCc0owZ0tBSUFJZ0JCQUNBQUlBSk5HMFVFUUVHd25TQWdBallDQUF0QkFDRUFRZVNnSUNBRk5nSUFRZUNnSUNBQ05nSUFRY0NkSUVGL05nSUFRY1NkSUVING9DQW9BZ0EyQWdCQjdLQWdRUUEyQWdBRFFDQUFRUU4wSWdGQjBKMGdhaUFCUWNpZElHb2lBellDQUNBQlFkU2RJR29nQXpZQ0FDQUFRUUZxSWdCQklFY05BQXRCckowZ0lBVkJLR3NpQUVGNElBSnJRUWR4UVFBZ0FrRUlha0VIY1JzaUFXc2lBellDQUVHNG5TQWdBU0FDYWlJQk5nSUFJQUVnQTBFQmNqWUNCQ0FBSUFKcVFTZzJBZ1JCdkowZ1FZaWhJQ2dDQURZQ0FBd0NDeUFBTFFBTVFRaHhJQUVnQkV0eUlBSWdCRTF5RFFBZ0FDQURJQVZxTmdJRVFiaWRJQ0FFUVhnZ0JHdEJCM0ZCQUNBRVFRaHFRUWR4R3lJQWFpSUJOZ0lBUWF5ZElFR3NuU0FvQWdBZ0JXb2lBaUFBYXlJQU5nSUFJQUVnQUVFQmNqWUNCQ0FDSUFScVFTZzJBZ1JCdkowZ1FZaWhJQ2dDQURZQ0FBd0JDMEd3blNBb0FnQWdBa3NFUUVHd25TQWdBallDQUFzZ0FpQUZhaUVCUWVDZ0lDRUFBa0FDUUFKQUFrQUNRQUpBQTBBZ0FTQUFLQUlBUndSQUlBQW9BZ2dpQUEwQkRBSUxDeUFBTFFBTVFRaHhSUTBCQzBIZ29DQWhBQU5BSUFRZ0FDZ0NBQ0lCVHdSQUlBRWdBQ2dDQkdvaUF5QUVTdzBEQ3lBQUtBSUlJUUFNQUFzQUN5QUFJQUkyQWdBZ0FDQUFLQUlFSUFWcU5nSUVJQUpCZUNBQ2EwRUhjVUVBSUFKQkNHcEJCM0ViYWlJSElBWkJBM0kyQWdRZ0FVRjRJQUZyUVFkeFFRQWdBVUVJYWtFSGNSdHFJZ1VnQmlBSGFpSUdheUVBSUFRZ0JVWUVRRUc0blNBZ0JqWUNBRUdzblNCQnJKMGdLQUlBSUFCcUlnQTJBZ0FnQmlBQVFRRnlOZ0lFREFNTFFiU2RJQ2dDQUNBRlJnUkFRYlNkSUNBR05nSUFRYWlkSUVHb25TQW9BZ0FnQUdvaUFEWUNBQ0FHSUFCQkFYSTJBZ1FnQUNBR2FpQUFOZ0lBREFNTElBVW9BZ1FpQkVFRGNVRUJSZ1JBSUFSQmVIRWhDUUpBSUFSQi93Rk5CRUFnQlNnQ0NDSUJJQVJCQTNZaUEwRURkRUhJblNCcVJob2dBU0FGS0FJTUlnSkdCRUJCb0owZ1FhQ2RJQ2dDQUVGK0lBTjNjVFlDQUF3Q0N5QUJJQUkyQWd3Z0FpQUJOZ0lJREFFTElBVW9BaGdoQ0FKQUlBVWdCU2dDRENJQ1J3UkFJQVVvQWdnaUFTQUNOZ0lNSUFJZ0FUWUNDQXdCQ3dKQUlBVkJGR29pQkNnQ0FDSUJEUUFnQlVFUWFpSUVLQUlBSWdFTkFFRUFJUUlNQVFzRFFDQUVJUU1nQVNJQ1FSUnFJZ1FvQWdBaUFRMEFJQUpCRUdvaEJDQUNLQUlRSWdFTkFBc2dBMEVBTmdJQUN5QUlSUTBBQWtBZ0JTZ0NIQ0lCUVFKMFFkQ2ZJR29pQXlnQ0FDQUZSZ1JBSUFNZ0FqWUNBQ0FDRFFGQnBKMGdRYVNkSUNnQ0FFRitJQUYzY1RZQ0FBd0NDeUFJUVJCQkZDQUlLQUlRSUFWR0cyb2dBallDQUNBQ1JRMEJDeUFDSUFnMkFoZ2dCU2dDRUNJQkJFQWdBaUFCTmdJUUlBRWdBallDR0FzZ0JTZ0NGQ0lCUlEwQUlBSWdBVFlDRkNBQklBSTJBaGdMSUFVZ0NXb2lCU2dDQkNFRUlBQWdDV29oQUFzZ0JTQUVRWDV4TmdJRUlBWWdBRUVCY2pZQ0JDQUFJQVpxSUFBMkFnQWdBRUgvQVUwRVFDQUFRWGh4UWNpZElHb2hBUUovUWFDZElDZ0NBQ0lDUVFFZ0FFRURkblFpQUhGRkJFQkJvSjBnSUFBZ0FuSTJBZ0FnQVF3QkN5QUJLQUlJQ3lFQUlBRWdCallDQ0NBQUlBWTJBZ3dnQmlBQk5nSU1JQVlnQURZQ0NBd0RDMEVmSVFRZ0FFSC8vLzhIVFFSQUlBQkJDSFlpQVNBQlFZRCtQMnBCRUhaQkNIRWlBWFFpQWlBQ1FZRGdIMnBCRUhaQkJIRWlBblFpQXlBRFFZQ0FEMnBCRUhaQkFuRWlBM1JCRDNZZ0FTQUNjaUFEY21zaUFVRUJkQ0FBSUFGQkZXcDJRUUZ4Y2tFY2FpRUVDeUFHSUFRMkFod2dCa0lBTndJUUlBUkJBblJCMEo4Z2FpRUJBa0JCcEowZ0tBSUFJZ0pCQVNBRWRDSURjVVVFUUVHa25TQWdBaUFEY2pZQ0FDQUJJQVkyQWdBTUFRc2dBRUVaSUFSQkFYWnJRUUFnQkVFZlJ4dDBJUVFnQVNnQ0FDRUNBMEFnQWlJQktBSUVRWGh4SUFCR0RRTWdCRUVkZGlFQ0lBUkJBWFFoQkNBQklBSkJCSEZxSWdNb0FoQWlBZzBBQ3lBRElBWTJBaEFMSUFZZ0FUWUNHQ0FHSUFZMkFnd2dCaUFHTmdJSURBSUxRYXlkSUNBRlFTaHJJZ0JCZUNBQ2EwRUhjVUVBSUFKQkNHcEJCM0ViSWdGcklnZzJBZ0JCdUowZ0lBRWdBbW9pQVRZQ0FDQUJJQWhCQVhJMkFnUWdBQ0FDYWtFb05nSUVRYnlkSUVHSW9TQW9BZ0EyQWdBZ0JDQURRU2NnQTJ0QkIzRkJBQ0FEUVNkclFRZHhHMnBCTDJzaUFDQUFJQVJCRUdwSkd5SUJRUnMyQWdRZ0FVSG9vQ0FwQWdBM0FoQWdBVUhnb0NBcEFnQTNBZ2hCNktBZ0lBRkJDR28yQWdCQjVLQWdJQVUyQWdCQjRLQWdJQUkyQWdCQjdLQWdRUUEyQWdBZ0FVRVlhaUVBQTBBZ0FFRUhOZ0lFSUFCQkNHb2hBaUFBUVFScUlRQWdBaUFEU1EwQUN5QUJJQVJHRFFNZ0FTQUJLQUlFUVg1eE5nSUVJQVFnQVNBRWF5SUNRUUZ5TmdJRUlBRWdBallDQUNBQ1FmOEJUUVJBSUFKQmVIRkJ5SjBnYWlFQUFuOUJvSjBnS0FJQUlnRkJBU0FDUVFOMmRDSUNjVVVFUUVHZ25TQWdBU0FDY2pZQ0FDQUFEQUVMSUFBb0FnZ0xJUUVnQUNBRU5nSUlJQUVnQkRZQ0RDQUVJQUEyQWd3Z0JDQUJOZ0lJREFRTFFSOGhBQ0FDUWYvLy93ZE5CRUFnQWtFSWRpSUFJQUJCZ1A0L2FrRVFka0VJY1NJQWRDSUJJQUZCZ09BZmFrRVFka0VFY1NJQmRDSURJQU5CZ0lBUGFrRVFka0VDY1NJRGRFRVBkaUFBSUFGeUlBTnlheUlBUVFGMElBSWdBRUVWYW5aQkFYRnlRUnhxSVFBTElBUWdBRFlDSENBRVFnQTNBaEFnQUVFQ2RFSFFueUJxSVFFQ1FFR2tuU0FvQWdBaUEwRUJJQUIwSWdWeFJRUkFRYVNkSUNBRElBVnlOZ0lBSUFFZ0JEWUNBQXdCQ3lBQ1FSa2dBRUVCZG10QkFDQUFRUjlIRzNRaEFDQUJLQUlBSVFNRFFDQURJZ0VvQWdSQmVIRWdBa1lOQkNBQVFSMTJJUU1nQUVFQmRDRUFJQUVnQTBFRWNXb2lCU2dDRUNJRERRQUxJQVVnQkRZQ0VBc2dCQ0FCTmdJWUlBUWdCRFlDRENBRUlBUTJBZ2dNQXdzZ0FTZ0NDQ0lBSUFZMkFnd2dBU0FHTmdJSUlBWkJBRFlDR0NBR0lBRTJBZ3dnQmlBQU5nSUlDeUFIUVFocUlRQU1CUXNnQVNnQ0NDSUFJQVEyQWd3Z0FTQUVOZ0lJSUFSQkFEWUNHQ0FFSUFFMkFnd2dCQ0FBTmdJSUMwR3NuU0FvQWdBaUFDQUdUUTBBUWF5ZElDQUFJQVpySWdFMkFnQkJ1SjBnUWJpZElDZ0NBQ0lBSUFacUlnSTJBZ0FnQWlBQlFRRnlOZ0lFSUFBZ0JrRURjallDQkNBQVFRaHFJUUFNQXd0Qm1La2dRVEEyQWdCQkFDRUFEQUlMQWtBZ0IwVU5BQUpBSUFNb0Fod2lBRUVDZEVIUW55QnFJZ0VvQWdBZ0EwWUVRQ0FCSUFJMkFnQWdBZzBCUWFTZElDQUlRWDRnQUhkeElnZzJBZ0FNQWdzZ0IwRVFRUlFnQnlnQ0VDQURSaHRxSUFJMkFnQWdBa1VOQVFzZ0FpQUhOZ0lZSUFNb0FoQWlBQVJBSUFJZ0FEWUNFQ0FBSUFJMkFoZ0xJQU1vQWhRaUFFVU5BQ0FDSUFBMkFoUWdBQ0FDTmdJWUN3SkFJQVJCRDAwRVFDQURJQVFnQm1vaUFFRURjallDQkNBQUlBTnFJZ0FnQUNnQ0JFRUJjallDQkF3QkN5QURJQVpCQTNJMkFnUWdBeUFHYWlJQ0lBUkJBWEkyQWdRZ0FpQUVhaUFFTmdJQUlBUkIvd0ZOQkVBZ0JFRjRjVUhJblNCcUlRQUNmMEdnblNBb0FnQWlBVUVCSUFSQkEzWjBJZ1J4UlFSQVFhQ2RJQ0FCSUFSeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQVNBQUlBSTJBZ2dnQVNBQ05nSU1JQUlnQURZQ0RDQUNJQUUyQWdnTUFRdEJIeUVBSUFSQi8vLy9CMDBFUUNBRVFRaDJJZ0FnQUVHQS9qOXFRUkIyUVFoeElnQjBJZ0VnQVVHQTRCOXFRUkIyUVFSeElnRjBJZ1VnQlVHQWdBOXFRUkIyUVFKeElnVjBRUTkySUFBZ0FYSWdCWEpySWdCQkFYUWdCQ0FBUVJWcWRrRUJjWEpCSEdvaEFBc2dBaUFBTmdJY0lBSkNBRGNDRUNBQVFRSjBRZENmSUdvaEFRSkFBa0FnQ0VFQklBQjBJZ1Z4UlFSQVFhU2RJQ0FGSUFoeU5nSUFJQUVnQWpZQ0FBd0JDeUFFUVJrZ0FFRUJkbXRCQUNBQVFSOUhHM1FoQUNBQktBSUFJUVlEUUNBR0lnRW9BZ1JCZUhFZ0JFWU5BaUFBUVIxMklRVWdBRUVCZENFQUlBRWdCVUVFY1dvaUJTZ0NFQ0lHRFFBTElBVWdBallDRUFzZ0FpQUJOZ0lZSUFJZ0FqWUNEQ0FDSUFJMkFnZ01BUXNnQVNnQ0NDSUFJQUkyQWd3Z0FTQUNOZ0lJSUFKQkFEWUNHQ0FDSUFFMkFnd2dBaUFBTmdJSUN5QURRUWhxSVFBTUFRc0NRQ0FKUlEwQUFrQWdBaWdDSENJQVFRSjBRZENmSUdvaUFTZ0NBQ0FDUmdSQUlBRWdBellDQUNBRERRRkJwSjBnSUFwQmZpQUFkM0UyQWdBTUFnc2dDVUVRUVJRZ0NTZ0NFQ0FDUmh0cUlBTTJBZ0FnQTBVTkFRc2dBeUFKTmdJWUlBSW9BaEFpQUFSQUlBTWdBRFlDRUNBQUlBTTJBaGdMSUFJb0FoUWlBRVVOQUNBRElBQTJBaFFnQUNBRE5nSVlDd0pBSUFSQkQwMEVRQ0FDSUFRZ0Jtb2lBRUVEY2pZQ0JDQUFJQUpxSWdBZ0FDZ0NCRUVCY2pZQ0JBd0JDeUFDSUFaQkEzSTJBZ1FnQWlBR2FpSURJQVJCQVhJMkFnUWdBeUFFYWlBRU5nSUFJQWNFUUNBSFFYaHhRY2lkSUdvaEFFRzBuU0FvQWdBaEFRSi9RUUVnQjBFRGRuUWlCaUFGY1VVRVFFR2duU0FnQlNBR2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFVZ0FDQUJOZ0lJSUFVZ0FUWUNEQ0FCSUFBMkFnd2dBU0FGTmdJSUMwRzBuU0FnQXpZQ0FFR29uU0FnQkRZQ0FBc2dBa0VJYWlFQUN5QUxRUkJxSkFBZ0FBczZBZ0YvQVg0akFFRVFheUlESkFBZ0FSQWNJQU1nQWlrQ0FDSUVOd01BSUFNZ0JEY0RDQ0FBSUFGQmlBSnFJQU1RbUFNZ0EwRVFhaVFBQzNVQkEzOGdBQ0FBS0FJQVFReHJLQUlBYWtFS0VKc1NJUUlqQUVFUWF5SUJKQUFnQVVFSWFpSURJQUFRM3dNYUFrQWdBeENTQkVVTkFDQUJJQUFRMGdRZ0FoQ1hEUkRSQkVVTkFDQUFJQUFvQWdCQkRHc29BZ0JxUVFFUWp3TUxJQUZCQ0dvUTRBTWdBVUVRYWlRQUlBQVFuQWdnQUF0VUFRSi9Jd0JCRUdzaUF5UUFJQUFvQWdBaEJDQUFLQUlFSVFBZ0F5QUJOZ0lJSUFNZ0JDQUFRUVJxSUFOQkNHb1F5eGsyQWd3Z0F5QUNOZ0lBSUFRZ0EwRU1haUFERU1zWklRQWdBMEVRYWlRQUlBQUxEZ0FnQUJBY0lBQkJFR29RemhBTEpRRUJmMEVRRUJVaUFpQUJOZ0lBSUFJZ0FDa0NCRGNDQkNBQ0lBQW9BZ3cyQWd3Z0Fnc0pBQ0FBRUhzZ0FXb0xTZ0VCZnlBQUlBRkpCRUFnQUNBQklBSVFmUThMSUFJRVFDQUFJQUpxSVFNZ0FTQUNhaUVCQTBBZ0EwRUJheUlESUFGQkFXc2lBUzBBQURvQUFDQUNRUUZySWdJTkFBc0xJQUFMSFFBZ0FFSHNBR29RcmdjYUlBQkJJR29RcmdjYUlBQkJFR29RTWhvTFVRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd0Nmd0pBSUFCQkNHb2dBa0VNYWhDZUFpSUJEUUFnQUVIUUFHb2dBa0VNYWhDZUFpSUJEUUJCQUF3QkN5QUJLQUlNQ3lFQUlBSkJFR29rQUNBQUN5b0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3b0FnQVFnd0VoQUNBQlFSQnFKQUFnQUFzU0FDQUFJQUVvQWdBZ0FTZ0NCQ0FDRUc0THNBRUJCWDhDUUNBQUtBSUVJZ0pGRFFBZ0FTZ0NBQ0VESUFBb0FnQUNmeUFDUVFGcklBTnhJQUpwSWdGQkFVME5BQm9nQXlBQ0lBTkxEUUFhSUFNZ0FuQUxJZ1JCQW5ScUtBSUFJZ0JGRFFBZ0FrRUJheUVGSUFGQkFVc2hCZ05BSUFBb0FnQWlBRVVOQVNBRElBQW9BZ1FpQVVjRVFBSkFJQVpGQkVBZ0FTQUZjU0VCREFFTElBRWdBa2tOQUNBQklBSndJUUVMSUFFZ0JFY05BZ3dCQ3lBQUtBSUlJQU5IRFFBTElBQVBDMEVBQ3ljQkFYOGdBQ2dDRENJQklBQW9BaEJHQkVBZ0FDQUFLQUlBS0FJa0VRQUFEd3NnQVNnQ0FBc05BQ0FBRU9VVVFSaDBRUmgxQ3lvQkFYOENRQ0FBSUFFUXVnRWlBRVVOQUNBQUx3RWVRUlZIRFFBZ0FDZ0NBQ2dDREVVaEFnc2dBZ3NsQUNBQVFiamtFallDQUNBQVFRUnFJQUZCQkdvUXVRY2FJQUFnQVNnQ0VEWUNFQ0FBQzBBQkFuOGpBRUVnYXlJQ0pBQWdBa0VRYWlBQVFRUnFFTGtISWdBZ0FpQUJRUVJxRUxrSElnRVF1eGNoQXlBQkVLUUNJQUFRcEFJZ0FrRWdhaVFBSUFNTGN3RUJmeU1BUVNCcklnVWtBQ0FGSUFJMkFoZ2dCU0FCTmdJY0lBVWdBellDRkNBRklBUTJBaEFnQlNBQUtBSUFJZ0VnQlVFY2FpQUZRUmhxRU1jRE5nSU1JQVVnQUNnQ0FDQUZRUlJxSUFWQkVHb1F4d00yQWdnZ0FTQUZRUXhxSUFWQkNHb1E1UWdoQUNBRlFTQnFKQUFnQUFzSUFDQUFFRlVnQUFzTEFDQUFJQUVnQWhDeEZBc05BQ0FBRUk4Q0lBRkJBblJxQzZnQ0FRTi9Jd0JCOEFGcklnWWtBQ0FHSUFJMkF0d0JJQVpCckljZ05nTFlBU0FHSUFaQjJBRnFJZ2cyQXVnQkFrQWdBQ0FJSUFNZ0JCQ0pCQTBBSUFaQkFEWUMxQUVDUUNBQVFZQURhaUFES0FJZ0lBSWdCa0hVQVdvUXdRaEZCRUFnQmlnQzFBRU5BUXNnQmtFUWFpSUNJQUJCY2lBREVCQWdCaUFGRUtRR0lBSWdCaEFTR2lBQ1FlMjFEQkFPR2lBQ1FaYk5DaEFPR2lBQ0lBRVFFaG9nQWtIQjdRUVFEaG9nQmlnQ3pBRWhCeUFHRUE4YUlBSVFFUXdCQ3lBR1FSQnFJZ0lnQUVGeUlBTVFFQ0FHSUFVUXBBWWdBaUFHRUJJYUlBSkI3YlVNRUE0YUlBSkJsczBLRUE0YUlBSWdBUkFTR2lBQ1FZT3hDaEFPR2lBQ0lBWW9BdFFCRUkwRUtBSzhBU0VISUFZUUR4b2dBaEFSQ3lBR1FkZ0JhaEFXSUFaQjhBRnFKQUFnQnd0UUFRRi9BbjhDZjBFQ0lBQXZBUjRpQVVFZ1JnMEFHa0VDSUFGQkowWU5BQm9nQVVIN0FFY0VRRUgvLy8vL0J5QUJRVHRIRFFJYVFRTU1BUXRCQkFzaEFTQUFLQUlBSUFGQkFuUnFLQUlBQ3d0cUFBSkFJQUF0QUF4RkJFQWdBU2dDQkVVTkFTQUFLQUlFQkVBZ0FCRHlDZ3NnQUNBQk5nSUVJQUFnQVNnQ0NEWUNDQ0FCSUFBMkFnZ2dBQ2dDQ0NBQU5nSUVEd3RCaHJnSlFkVzFBMEd1QVVIVzZ3TVFBQUFMUWVPd0NVSFZ0UU5CcndGQjF1c0RFQUFBQ3cwQUlBQWdBU0FDUVFFUXhRd0xDd0FnQUVHc2lSSVEwUXdMS0FFQmYwRUVFQVVRb1JNaUFFRzA1UTgyQWdBZ0FFSEk1UTgyQWdBZ0FFR1k1ZzlCQWhBRUFBdG1BUU4vSXdCQkVHc2lBeVFBSUFBb0FnQWlBQkFjSUFFb0FnQWhCU0FESUFFb0FnUWdBUzBBQ3lJRUlBUkJHSFJCR0hWQkFFZ2lCQnMyQWd3Z0F5QUZJQUVnQkJzMkFnZ2dBeUFES1FNSU53TUFJQUJCeUFKcUlBTWdBaENzQkNBRFFSQnFKQUFMZmdFQ2Z5TUFRY0FCYXlJRUpBQWdCQ0FDTmdLMEFTQUVJQU0zQTdnQklBSVF5Z05GQkVBZ0JFSEZyUVZCbFFSQkNDQUVRYUFCYWhBZElnSVFGeUlGUVJocVFjTG1DQkFPR2lBRkVCZ2dBaEFlQ3lBQktBSUFJQVJCdEFGcUlBUkJ1QUZxRU1ZQ0lRRWdBRUVCT2dBRUlBQWdBVFlDQUNBRVFjQUJhaVFBQzE4QkFYOGdBRUVBTmdJUVFid0JFQlVpQWtHQTh4ODJBZ0FnQWlBQktRSUFOd0lFSUFJZ0FTZ0NDRFlDRENBQ1FSQnFJQUZCREdvUXZSWWdBa0VrYWlBQlFTQnFFTFVJSUFKQjhBQnFJQUZCN0FCcUVMVUlJQUFnQWpZQ0VDQUFDellBSUFBZ0FTa0NBRGNDQUNBQUlBSW9BZ0EyQWdnZ0FFRU1haUFERUxRQ0dpQUFRU0JxSUFRUXdnRWdBRUhzQUdvZ0JSRENBUXR1QVFOL0l3QkJvQUZySWdRa0FDQUVRUmhxRU00QklRTWdCRUVJYWlJRklBSVE0UU1nQXlBRkVCSkJ0TlVKRUE0YUlBVVFEeG9nQXlBQktBSUFRWUFEYWtFUUlBSVE5d0VRandFUURob2dBMEg4bHdnUURob2dBQ0FEUVFScUVFSWdBeEM3QVJvZ0JFR2dBV29rQUF1R0FRRUJmMEdlMHdZaEFnSkFBa0FDUUFKQUFrQUNRQUpBSUFFT0d3SUJBZ1lHQUFBQUFBQUNCZ1lHQmdZR0FnRURBZ0VDQVFJQkJBVUxRY1NHQmlFQ0RBVUxRYVB6QWlFQ0RBUUxRZitWQXlFQ0RBTUxRYmUyQ1VIUGx3SkJod05Ca1NvUUFBQUxRWXEyQ1VIUGx3SkJpZ05Ca1NvUUFBQUxRY0xDQWlFQ0N5QUFJQUlRRkJvTGJnSUNmd0YrSXdCQklHc2lCU1FBUWNBQUVCVWhCaUFES0FJQUlRTWdBaWdDQUNFQ0lBRW9BZ0FoQVNBQUtBSUFJUUFnQlNBRUtRSUFJZ2MzQXdBZ0JTQUhOd01JSUFZZ0FDQUJJQUlnQXlBRlFSQnFJQVVRakJnaUFCQ3JEaUVCSUFBUTJnVWdCVUVnYWlRQUlBRUxpZ0VCQkg4akFFRVFheUlDSkFBZ0FDZ0M0QWdpQXlBQVFlUUlhaWdDQUVHTUFXeHFJUVFEUUFKQUlBTWdCRWNFUUNBQ0lBUkJqQUZySWdRMkFnQWdBU2dDQUNFRElBSkJBRFlDQ0NBQ0lBTTJBZ1FnQWlBRUtBS0lBVUVCYXpZQ0RDQUNFTjRjUlEwQklBSVEzaHdvQWdBaEJRc2dBa0VRYWlRQUlBVVBDeUFBS0FMZ0NDRUREQUFMQUFzTkFDQUFJQUZCbU9rUEVNSU1DeElBSUFCQnFCMXFJQUFnQVJDcUJSQ2xIZ3NrQVFGL0lBQW9BZ0FoQWlBQUlBRTJBZ0FnQWdSQUlBSWdBQkRHQlNnQ0FCRURBQXNMQ1FBZ0FDQUJFT1lVQzJFQkFYOGdBMEgvLy8vL0J6WUNBQUpBQWtBZ0FVVU5BQ0FBSUFFUXVnRWlBRVVOQVNBQUx3RWVRU0JIRFFBZ0F5QUFLQUlBSWdBb0FnZzJBZ0FnQWlBQUtBSU1OZ0lBUVFFaEJBc2dCQThMUWFrdlFmaXJBa0hyQ0VHMndRSVFBQUFMSHdBZ0FDZ0NFQ0lBUlFSQUVHOEFDeUFBSUFFZ0FDZ0NBQ2dDR0JFQkFBc3BBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBSUFKQkRHb1FpUUloQUNBQ1FSQnFKQUFnQUF0ZEFRTi9Jd0JCc0FGcklnSWtBQ0FBUWFRS2FpZ0NBRUVDVHdSQUlBQkJwQXBxSWdFZ0FTZ0NBRUVCYXlJQk5nSUFJQUpCQ0dvaUF5QUFLQUtnQ2lBQlFhUUJiR29pQUJDMkVDQUFFUGdISUFNUStBY0xJQUpCc0FGcUpBQUxqUUVCQW44akFFRWdheUlDSkFBZ0FrRVFhaUFBUWRnbmFpZ0NBQ0FBUWR3bmFpZ0NBRUdrQVd4cVFhUUJheUlBRU9NUUlBSkJDR29nQUJEaUVDQUJRU1JxSVFBRFFDQUNLQUlRSWdFZ0FpZ0NDRVlFUUNBQ1FTQnFKQUFGSUFFUXNBa2lBU2dDQ0NFRElBSWdBU2tDQURjREdDQUFJQUpCR0dvUTRSQWdBellDQUNBQ1FSQnFFT0FRREFFTEN3dDZBUU4vSXdCQnNBRnJJZ0lrQUNBQ1FRaHFFSm9lSVFNZ0FFR2tDbW9vQWdBaUFTQUFRYWdLYWlnQ0FFOEVRQ0FBSUFCQnFBcHFLQUlBSWdGQkFYUkJBaUFCR3hDc0hTQUFLQUtrQ2lFQkN5QUFJQUZCQVdvMkFxUUtJQUFvQXFBS0lBRkJwQUZzYWlBREVMWVFJQU1RK0FjZ0FrR3dBV29rQUFzOUFRRi9Jd0JCSUdzaUFTUUFJQUZCRUdvaUJDQUNFTzRFSUFFZ0F5QUVFTVFCSUFBZ0FVR0w1Z1lRTFNBQkVBOGFJQVFRRHhvZ0FVRWdhaVFBQ3hJQUlBQW9BZ0FnQUNBQUxRQUxFUHNFR3dzSkFDQUFJQUVRMWhRTENRQWdBQkRYQlJBZkN4Z0JBWDhqQUVFUWF5SUJJQUEyQWd3Z0FTZ0NEQ2dDQUF0U0FRSi9Jd0JCSUdzaUFpUUFJQUFnQVJEdURrVUVRQ0FDSUFFUVh5QUNRUkJxSWdOQnZic0ZJQUlRTlNBQUlBRWdBeERGQmlBREVBOGFJQUlRRHhvTElBQWdBUkRUQnlFQUlBSkJJR29rQUNBQUN3d0FJQUFnQVVHSUJ4RGFDUXRCQVFKL0l3QkJFR3NpQVNRQUlBQXRBQXdpQWtIL0FVY0VRQ0FCUVFocUlBQWdBa0VDZEVIY2lCSnFLQUlBRVFJQUN5QUFRZjhCT2dBTUlBRkJFR29rQUF2d0JnRUxmeU1BUWVBQmF5SURKQUFnQXlBQk5nTGNBUUpBQWtBZ0FVVU5BQ0FESUFFb0FnZ2lCRFlDMkFFZ0F5QUFJQUVvQWhRZ0FpQUVRUkJxSWd3UXBoNGlCVFlDMUFFZ0JVVUVRQ0FCSVFJTUFndEJBQ0VDSUFCQnJCMXFJUWNnQVNnQ0ZDRUdJd0JCNEFCcklnUWtBQ0FHSUFVUWlnbEJmMGNpRFVVRVFDQUVRUkJxSWdnZ0J5Z0NDQ0FHRUtjQklBUkJJR29pQmtIS2xRa2dDQkExSUFSQk1Hb2lDU0FHUWRLU0NSQXRJQVFnQnlnQ0NDQUZFS2NCSUFSQlFHc2lDaUFKSUFRUVRpQUVRZEFBYWlJTElBcEI4NW9KRUMwZ0J5QUxJQXdRSnlBTEVBOGFJQW9RRHhvZ0JCQVBHaUFKRUE4YUlBWVFEeG9nQ0JBUEdnc2dCRUhnQUdva0FDQU5SUTBCSUFOQkFEWUMwQUVDUUNBQVFhUTRhaUFEUWRnQmFoRDJCUTBBSUFFb0Fod2lBVVVFUUNBRFFUQnFRYmViQlVHZERrRUlJQUFvQWdRUUZ5SUFRUkJxSUFNb0F0Z0JRUkJxRUs0RElBQkJHR3BCOFBnSUVBNGFJQUFnQXlnQzJBRW9BZ1JCQkdvUW1nRkJHR3BCbU04REVBNGFJQUFRR0F3Q0N5QURRU2hxSWdJZ0FFRUlhaUFGSUFFZ0F5Z0MyQUZCRUdvUWlRMGdBaEF3RFFFZ0F5QURRU2hxRUJvb0FnQWlBallDMEFFZ0FnMEFJQU5CTUdwQnQ1c0ZRYW9PUVFnZ0FDZ0NCQkFYSWdKQkVHb2dBeWdDMkFGQkVHb1FyZ01nQWtFWWFpSUFRZjM0Q0JBT0dpQURRUmhxSWdRZ0FTQUJLQUlBS0FJSUVRQUFJZ0VnQVNnQ0FDZ0NEQkVDQUNBQUlBUVFFaG9nQUVIVjJ3c1FEaG9nQTBFSWFpSUJJQVVnQlNnQ0FDZ0NEQkVDQUNBQUlBRVFFaG9nQUVISzBRTVFEaG9nQVJBUEdpQUVFQThhSUFJUUdBd0JDeUFBS0FJQUlnRVFIQ0FCUWFnQmFpSUVFUE1GSVFjZ0F5Z0MzQUVoQlNBQVFZdzBhaWdDQUNFR0lBTW9BdFFCSVFnZ0F5Z0MwQUVoQWlNQVFTQnJJZ0VrQUNBQklBZzJBaGdnQVNBR05nSWNJQUVnQWpZQ0ZDQUJJQVVvQWdnMkFoQWdBU0FDUVFCSE5nSU1JQUZCQURvQUN5QUJJQVVvQWhBMkFnUWdCeUFCS0FJUUlBRW9BaGdnQVNnQ0RDQUJLQUljSUFFb0FoUWdBUzBBQ3lBQktBSUVFSndGSWdKQjBKVVNOZ0lFSUFKQmdKWVNOZ0lBSUFJZ0JUWUNMQ0FDUWZDVkVqWUNBQ0FCUVNCcUpBQWdCQ0FDRUNnZ0JDQUVLQUlZUVFGcU5nSVlJQUlnQXlnQzNBRXBBeUEzQXlBZ0FDZ0NBQ0lBRUJ3Z0FFSGtBV29nQXlnQzJBRWdBaENvSGd3QkMwRUFJUUlMSUFOQjRBRnFKQUFnQWd0eUFRTi9JQUJDZ0lDQWdCQTNBZ2dnQUNBQU5nSUVJQUFnQVNnQ0JDSUNFUEFRSUFFb0FnQWlBU0FDUVFKMGFpRUVJQUFvQWdnaEF3Ti9JQUVnQkVZRWZ5QUFCU0FBSUFOQkFXb2lBallDQ0NBQUtBSUVJQU5CQW5ScUlBRW9BZ0EyQWdBZ0FVRUVhaUVCSUFJaEF3d0JDd3NMaWdZQ0NIOEJmaU1BUVpBQmF5SURKQUFnQXlBQk5nS01BU0FEUVFBMkFvZ0JJQU5CQURZQ2hBRWdBMEtBZ0lDQXdBQTNBbndnQXlBRFFlZ0FhallDZUNBQ0tBSUFJZ0VnQWlnQ0JFRU1iR29oQmtFQUlRSURmeUFCSUFaR0JIOGdBeUFDTmdKQUlBTWdBaUFFYWtFQmF5SUJJQUVnQkhCck5nSmtJQU5CRUdvaUJpQUFJQU5CakFGcUVLb01JQUFRSENNQVFkQUJheUlCSkFBZ0FVRVlhaUFHRUZZaEFpQUJRUUE2QUJRZ0FTQURRZWdBYWlJRVFSQnFOZ0lRSUFGQk9Hb2dBaUFCUVJCcUlBTW9Bb1FCSUFNb0FtUWdBMEZBYXlJSktBSUFFSTBKSWdjb0FnZ2hDQ0FCSUFjMkFnd2dBU0FJTmdJSUFrQWdBRUVRYWlJRlFSeHFJZ29nQVVFSWFoQzlBU0lBQkVBZ0FDZ0NEQ0VBREFFTEl3QkJNR3NpQWlRQUlBVVFuaEVoQUNBQ1FSQnFJQVlRVmlFR0lBSWdCRUVRYWpZQ0NDQUNJQVFvQWhBZ0JFYzZBQXdnQlNBQUlBWWdBa0VJYWlBREtBS0VBU0FES0FKa0lBa29BZ0FRalFraUFCQW9JQVVnQlNnQ0dFRUJhallDR0NBQ1FUQnFKQUFnQVNBQU5nSU1JQUVnQ0RZQ0NDQUtJQUZCQ0dvUXZBRUxJQWNRelFZYUlBRkIwQUZxSkFBZ0JCQmVJQU5Ca0FGcUpBQWdBQVVnQXlBQktBSUlJZ0lnQWlnQ0FDZ0NGQkVBQUNJQ1FRRWdBaHMyQW1RZ0F5QUJLQUlJSWdJZ0FpZ0NBQ2dDRUJFQUFEWUNZQ0FESUFRZ0F5Z0NaQ0lDSUFJZ0JFa2JJZ1EyQW9RQklBTWdBaUFES0FLSUFXcEJBV3NpQlNBRklBSndhellDaUFFZ0F5QUJLUUlBSWdzM0F3Z2dBeUFMTndNNElBTkJRR3NpQnlBQUlBTkJDR29RNFFFZ0F5QURLQUo4TmdJMElBTkJBRG9BTENBRFFRQTZBQ2dnQTBFQU9nQWdJQU5CQURvQUhDQURRUUE2QUJnZ0EwRUFPZ0FVSUFOQkFEb0FFQ0FBRUJ3akFFRWdheUlGSkFBZ0FFSHdBR29pQWlBQ0VKOFJJQVVnQnhCV0lBRW9BZ2dnQXlnQ05DQURLQUtJQVNBREtBSmtJQU1vQW1BZ0EwRVFhaERhRHlJSEVDZ2dBaUFDS0FJWVFRRnFOZ0lZSUFWQklHb2tBQ0FESUFjMkFsd2dBMEhvQUdvZ0EwSGNBR29RY1NBRElBTW9Bb2dCSUFNb0FtQnFJZ0kyQW9nQklBRkJER29oQVF3QkN3c0xDUUFnQUNBQk5nSUFDd2tBSUFBZ0FSQ2VBUXNOQUNBQUtBSUFFT1FVR2lBQUN4MEFJQUJCOEFCcUVLNEhHaUFBUVNScUVLNEhHaUFBUVJScUVESWFDd3NBSUFBZ0FVRjhFTk1GQzdBQkFRVi9Ba0FnQUNnQ0JDSUNSUTBBSUFFb0FnQWhBeUFBS0FJQUFuOGdBa0VCYXlBRGNTQUNhU0lCUVFGTkRRQWFJQU1nQWlBRFN3MEFHaUFESUFKd0N5SUVRUUowYWlnQ0FDSUFSUTBBSUFKQkFXc2hCU0FCUVFGTElRWURRQ0FBS0FJQUlnQkZEUUVnQUNnQ0JDSUJJQU5IQkVBQ1FDQUdSUVJBSUFFZ0JYRWhBUXdCQ3lBQklBSkpEUUFnQVNBQ2NDRUJDeUFCSUFSSERRSU1BUXNnQUNnQ0NDQURSdzBBQ3lBQUR3dEJBQXVoQVFFRWZ5QUFFQndqQUVFd2F5SURKQUFnQTBFSWFpQUJLQUlBSUFJb0FnQkJBQkRsQnlJRUtBSUlJUVVnQXlBRU5nSUVJQU1nQlRZQ0FBSkFJQUJCRUdvaUJFRWNhaUlHSUFNUXZRRWlBQVJBSUFBb0Fnd2hBQXdCQ3lBRUlBUVFwZ1FnQVNnQ0FDQUNLQUlBUVFBUTVRY2lBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQURJQUEyQWdRZ0F5QUZOZ0lBSUFZZ0F4QzhBUXNnQTBFd2FpUUFJQUFMQkFCQkFBc05BQ0FBS0FJQUVOUVVHaUFBQzBvQkFuOENRQ0FBTFFBQUlnSkZJQUlnQVMwQUFDSURSM0lOQUFOQUlBRXRBQUVoQXlBQUxRQUJJZ0pGRFFFZ0FVRUJhaUVCSUFCQkFXb2hBQ0FDSUFOR0RRQUxDeUFDSUFOckN5RUJBWDhnQUVFcGF5SUFRUXROQkg4Z0FFRUNkRUdVdUExcUtBSUFCVUVBQ3dzV0FDQUFLQUlBQkVBZ0FCRDJEaUFBS0FJQUVCOExDejRBSUFCQkFEWUNDQ0FBUWdBM0FnQWdBQ0FCS0FJQU5nSUFJQUFnQVNnQ0JEWUNCQ0FBSUFFb0FnZzJBZ2dnQVVFQU5nSUlJQUZDQURjQ0FDQUFDN0lNQVFWL0l3QkI0QUZySWdVa0FDQUZJQU0yQWhRZ0FTZ0NCQ0VHQWtBZ0EwVU5BQ0FES0FJTUlnZ2dCaWdDQkNBR0tBSUFJZ1pyUVFKMVR3MEFJQVlnQ0VFQ2RHb29BZ0FpQmtVTkFDQUdRUUFnQmlnQ0JFR29sQkpHR3lFSEN5QUZJQUUyQWdnZ0JTQUZRUlJxTmdJTUFrQWdBMFVFUUNBQUlBVkJDR29RNUJ3TUFRc0NRQ0FES0FJRUlnWkJnSUFTUmdSQUlBTW9BaVJCZm5GQkJFWUVRQ0FGUVRCcUlBRWdBaUFES0FJb1FRQVFwZ0lnQVNnQzRLY0NJQU1RbkFFaUJFRUJPZ0FFSUFRZ0JTZ0NOQkJxSUFWQjBBRnFJQUVnQkNBREtBSXNRUUFRcGdJZ0JTQUNOZ0lZSUFVZ0JTZ0MxQUUyQWh3TUFnc2dCVUV3YWlBQklBSWdBeWdDS0VFQUVLWUNJQVZCMEFGcUlBRWdCU2dDTUNBREtBSXNRUUFRcGdJZ0FTZ0M0S2NDSUFNUW5BRWlBU0FGS0FJMEVHb2dBU0FGS0FMVUFSQnFJQVVnQVRZQ0hDQUZJQVVvQXRBQk5nSVlEQUVMSUFaQndQNFJSZ1JBSUFWQkdHb2dBU0FDSUFNb0FpaEJBQkNtQWd3QkN5QUdRYmp1RDBZRVFDQUZRUmhxSUFFZ0FpQURFUFVjREFFTElBZEJBRWNnQkhJaEJ5QUdRZmp0RDBZRVFDQUZRVEJxSWdRZ0F5Z0NKRUVrYWhCVElBRW9BdUNuQWlBREVKd0JJUVlnQkJBUEdpQUJLQUlFSUFNUWdnTWlBMFVFUUNBRlFUQnFRYVdLQlVHcENVRUlJQVZCMEFGcUVCMGlCQkFYSWdoQkdHcEJ5WjBJRUE0YUlBZ1FHQ0FFRUI0TEl3QkJFR3NpQkNBRE5nSU1JQVVnQTBFc2FpSUlJQWdnQkVFTWFpQURLQUlFSWdOQjBKVVNSaHNnQTBHb2xCSkdHeWdDQUNJRFFRQWdBeWdDQkVIWW5CSkdHeUlJS0FJc0lnUTJBaXdnQlNBQk5nSWdJQVVnQlVFc2FqWUNKQ0FFUlFSQUlBVkJHR29nQlVFZ2FoRGpIQXdDQ3dKQUFrQWdCQ2dDQkNJRFFjQ2NFa1lFUUFKQUlBUW9BbGdpQXlnQ0JFR0FreEpISUFORmNnMEFJQU1vQWtBUTNBWkZEUUFnQkNnQ0RDSUhLQUlFUVlDWkVrY2dCMFZ5UlFSQUlBY29Ba1FpQXlBSEtBSklRUUowYWlFSFFRRWhCQU5BSUFNZ0IwWUVRQ0FDSVFNZ0JBMEdJQUVvQXVDbkFpZ0NyQWdoQXd3R0JTQURLQUlBS0FKY0lRZ2dCVUVBT2dBMElBVWdDRUU4YWpZQ01BSkFJQVZCTUdvUWx4QWlDQVJBSUFFb0FnQWlDUkFjSUFsQjVBRnFJQWdRbGhBb0FoQWlDRUVOUmlBSVFRaEdSdzBCQzBFQUlRUUxJQU5CQkdvaEF3d0JDd0FMQUFzZ0JDZ0NDQ0VESUFWQkFEb0FOQ0FGSUFOQk9HbzJBakFnQlVFd2FoQ1hFQ0lEQkVBZ0FTZ0NBQ0lFRUJ3Z0JFSGtBV29nQXhDV0VDZ0NFQ0lEUVExR0lBTkJDRVp6RFFNTElBRW9BdUNuQWlnQ3JBZ2hBd3dEQ3lBR0lBSVFhaUFCS0FMZ3B3SWhBeUFGSUFRMkFqQWdBMEc0Q0dvZ0JVRXdhaENEQWlFRElBY2dCQ2dDRENnQ0JFSFlyQkpIY2cwQ0lBRW9BdUNuQWlnQytBY2dCQ2dDVUVIOEFHeHFLQUp3SVFNTUFnc0NRQUpBQWtBZ0EwR1FuQkpHQkVBZ0JnSi9JQUlnQkNnQ0NDZ0NCRUhZK0JGSERRQWFJQUlnQjBFQmN5QUVLQUlZUVFGR2NnMEFHaUFCS0FMZ3B3SW9BcXdJQ3hCcURBRUxJQU5CcUp3U1J3MEJJQVlnQWhCcUlBRW9BdUNuQWlFRElBVWdCRFlDTUNBRFFiZ0lhaUFGUVRCcUVJTUNJUWtDUUNBRUtBSU1LQUlFSWdOQjJLd1NSZ1JBSUFkRkRRRWdCU0FJS0FJUUlnTTJBakFnQmdKL0lBTW9BZ1JCa0p3U1JnUkFJQU1vQWhoQkFVWU5BeUFCS0FMZ3B3SW9BcXdJREFFTElBRW9BdUNuQWtHNENHb2dCVUV3YWhDREFnc1FhZ3dCQ3lBRFFiaXRFa2NOQUNBSFJRMEJDeUFHSUFrUWFnc2dCU0FHTmdMVUFTQUZJQUkyQXRBQkRBRUxJQVZCMEFGcUlBVkJJR29RNHh3TElBVWdCU2tEMEFFM0F4Z01Bd3NnQWlFREN5QUdJQU1RYWlBRklBWTJBdFFCSUFVZ0FqWUMwQUVnQlNBRktRUFFBVGNER0F3QkN5QUdRY0QvRVVZRVFDQUZRVEJxSUFFZ0FpQURLQUlrSUFjUXBnSWdCVUhRQVdvZ0FTQUZLQUl3SUFNb0FpaEJBQkNtQWlBQktBTGdwd0pCQUJDY0FTSUJJQVVvQWpRUWFpQUJJQVVvQXRRQkVHb2dCU0FCTmdJY0lBVWdCU2dDMEFFMkFoZ01BUXNnQmhDckNRUkFJQVVnQWpZQ0hDQUZJQUkyQWhnTUFRc2dCa0hBZ0JKR0JFQWdCVUVZYWlBQklBSWdBeWdDSkNBSEVLWUNEQUVMSUFaQmdJRVNSZ1JBSUFWQkdHb2dBU0FDSUFNb0FpZ2dCeENtQWd3QkN5QUZRUmhxSUFWQkNHb1E1QndMSUFBZ0JTa0RHRGNDQUFzZ0JVSGdBV29rQUF0S0FRRi9JQUJCQURZQ0RDQUFJQU0yQWhBZ0FRUkFJQUVRbHdNaEJBc2dBQ0FFTmdJQUlBQWdCQ0FDUVFKMGFpSUNOZ0lJSUFBZ0JDQUJRUUowYWpZQ0RDQUFJQUkyQWdRZ0FBc3BBUUYvSUFBb0FnQkJyQjFxSUFBb0FnUW9BZ0JCRUdvUWloQUVmeUFBS0FJSUVQVUZCVUVBQ3dzTUFDQUFJQUVRbmdKQkFFY0xDQUFnQUMwQUlCb0xOZ0VCZnlBQUlBQW9BaFFpQWtFQmFqWUNGQ0FBS0FJSUlBSXRBQUJCQW5ScUtBTHdBaUlDSUFBZ0FTQUNLQUlBS0FJSUVRUUFDN2tDQVFOL0l3QkJFR3NpQXlRQUFrQWdBQ0FCUmcwQUlBRW9BaEFoQWlBQUlBQW9BaEFpQkVZRVFDQUJJQUpHQkVBZ0FDQURJQUFvQWdBb0Fnd1JBZ0FnQUNnQ0VDSUNJQUlvQWdBb0FoQVJBd0FnQUVFQU5nSVFJQUVvQWhBaUFpQUFJQUlvQWdBb0Fnd1JBZ0FnQVNnQ0VDSUNJQUlvQWdBb0FoQVJBd0FnQVVFQU5nSVFJQUFnQURZQ0VDQURJQUVnQXlnQ0FDZ0NEQkVDQUNBRElBTW9BZ0FvQWhBUkF3QWdBU0FCTmdJUURBSUxJQUFnQVNBQUtBSUFLQUlNRVFJQUlBQW9BaEFpQWlBQ0tBSUFLQUlRRVFNQUlBQWdBU2dDRURZQ0VDQUJJQUUyQWhBTUFRc2dBU0FDUmdSQUlBRWdBQ0FCS0FJQUtBSU1FUUlBSUFFb0FoQWlBaUFDS0FJQUtBSVFFUU1BSUFFZ0FDZ0NFRFlDRUNBQUlBQTJBaEFNQVFzZ0FDQUNOZ0lRSUFFZ0JEWUNFQXNnQTBFUWFpUUFDeE1BSUFBUUhDQUFRY1FCYWlBQklBSVFzeEVMRXdBZ0FCQWNJQUJCeEFGcUlBRWdBaEM1RVFzVEFDQUFFQndnQUVIRUFXb2dBU0FDRUtvUkMzVUJBWDRnQUNBQklBUitJQUlnQTM1OElBTkNJSWdpQWlBQlFpQ0lJZ1IrZkNBRFF2Ly8vLzhQZ3lJRElBRkMvLy8vL3crRElnRitJZ1ZDSUlnZ0F5QUVmbndpQTBJZ2lId2dBU0FDZmlBRFF2Ly8vLzhQZzN3aUFVSWdpSHczQXdnZ0FDQUZRdi8vLy84UGd5QUJRaUNHaERjREFBc01BQ0FBSUFGQjdpa1E5UVlMREFBZ0FFRUFJQUFRdEFNYkM1NEJBUUovSXdCQm9BRnJJZ1FrQUNBRVFSaHFFTTRCSVFNQ1FBSkFJQUVvQWhCQmYwY0VRQ0FDTHdFZVFSNUhEUUlnQTBHam5Ra1FEaUFCS0FJUUVMd0NHaUFEUWN6cEJoQU9JQUlvQWlnUUlVR0w1Z1lRRGhvTUFRc2dCRUVJYWlJQklBSVE0UU1nQXlBQkVCSWFJQUVRRHhvTElBQWdBMEVFYWhCQ0lBTVF1d0VhSUFSQm9BRnFKQUFQQzBIaDdnQkJrSjBDUWNNRlFiK0dCUkFBQUFzbUFDQUFJQUVvQWdBMkFnQWdBRUVFYWlBQlFRUnFFTEFCR2lBQUlBRW9BaEEyQWhBZ0FBdHlBUU4vSUFCQ2dJQ0FnQ0EzQWd3Z0FDQUFOZ0lJSUFBZ0FTZ0NCQ0lDRUxjSElBRW9BZ0FpQVNBQ1FRSjBhaUVFSUFBb0Fnd2hBd04vSUFFZ0JFWUVmeUFBQlNBQUlBTkJBV29pQWpZQ0RDQUFLQUlJSUFOQkFuUnFJQUVvQWdBMkFnQWdBVUVFYWlFQklBSWhBd3dCQ3dzTEp3QWdBQ2dDQkNBQktBSUVRUUZCQ2tIWTB3aEI4S3NGUVNjUVN5QUFLQUlBSUFFb0FnQkdDeHNCQVg4Z0FDZ0NBQ0VCSUFCQkFEWUNBQ0FCQkVBZ0FSQWZDd3RIQVFKL0lBQVFWU0FBSUFFb0FnQWdBU0FCTFFBTElnTkJHSFJCR0hWQkFFZ2lCQnNnQVNnQ0JDQURJQVFiSWdFZ0FTQUNFTndCSWdOcUVOb01JQUFnQWlBREVQNEdHZ3UvQkFFR2Z5TUFRWkFCYXlJREpBQWdBQ2dDQkNFR0lBQW9BZ0FpQnlnQ0pDRUZJQU5DZ0lDQWdJQUJOd0tFQVNBRElBTkI0QUJxSWdRMkFvQUJJQVFnQlJBNUlBTkJnQUZxSVFoQkFDRUVBMEFnQkNBRlJrVUVRQ0FESUFjb0FpQWdCRUVDZEdvb0FnQW9BaFEyQWhBZ0JFRUJhaUVFSUFOQjRBQnFJQU5CRUdvUUpBd0JDd3NnQmlnQ0VDRUVRUUFoQlNBRFFRQTZBRXdnQXlBSU5nSklJQU5CMEFCcUlBUWdBU0FDSUFOQnlBQnFJQUFvQWdnb0FnQWdBQ2dDRENnQ0FFRVFhaUFFS0FJQUtBSVVFUTRBQWtBZ0F5Z0NVQ0lCUlEwQUlBWWdBQ2dDQUNBQkVQWUxSUTBBSUFOQkFEWUNSQ0FESUFNb0FsQW9BamdnQUNnQ0NDZ0NBQkRZQmlJQk5nSkFBa0FnQVVFQlJ3MEFJQU1nQUNnQ0RDZ0NBRFlDRUNBR1FhUTRhaUFEUVJCcUVQWUZCRUFnQTBFQU5nSkFEQUVMSUFOQkVHb2lBU0FHSUFBb0FnQWdBeWdDVUJEY0hRSi9RUUVnQVJEYkhRMEFHaUFHSUFNb0FsZ2lBa0VCZFdwQkNHb2hBU0FES0FKVUlRUWdBa0VCY1FSQUlBRW9BZ0FnQkdvb0FnQWhCQXNnQXlnQ1VDZ0NDQ0VDSUFOQkVHb1EyaDBoQlNBRFFRQTZBQVFnQXlBRlFTQnFOZ0lBSUFOQkNHb2lCU0FCSUFJZ0F5QUFLQUlNS0FJQVFSQnFJQVFSQ0FCQkFTQUZFQ3RGRFFBYUlBTWdBMEVJYWhBYUtBSUFOZ0pFUVFBTElRUWdBMEVRYWhEWkhVRUFJUVVnQkEwQkN5QUdLQUlBSUFBb0Fnd2dBMEhRQUdvZ0EwRkFheUFBS0FJQUlBWkJqRFJxSUFOQnhBQnFJQUFvQWhBUXdCQWhCUXNnQTBIZ0FHb1FJeUFEUVpBQmFpUUFJQVVMRUFBZ0FDMEFDRVVFUUJCdkFBc2dBQXRIQVFGL0lBQkJ1SW9PS0FJQUlnRTJBZ0FnQUNBQlFReHJLQUlBYWtIWWlnNG9BZ0EyQWdBZ0FFSGNpZzRvQWdBMkFnZ2dBRUVNYWhEUkNSb2dBRUZBYXhEK0JCb2dBQXU3QVFFR2Z5TUFRU0JySWdJa0FDQUNRUmhxSWdNZ0FCRGZBeG9DUUNBREVKSUVSUTBBSUFBZ0FDZ0NBRUVNYXlnQ0FHb1F1QUVhSUFKQkVHb2lBeUFBSUFBb0FnQkJER3NvQWdCcUVINGdBeEQ5QkNFRUlBTVFaQ0FDUVFocUlBQVEwZ1FoQlNBQUlBQW9BZ0JCREdzb0FnQnFJZ1lRbkFNaEJ5QUNJQVFnQlNnQ0FDQUdJQWNnQVJEY0ZEWUNFQ0FERU5FRVJRMEFJQUFnQUNnQ0FFRU1heWdDQUdwQkJSQ1BBd3NnQWtFWWFoRGdBeUFDUVNCcUpBQWdBQXNrQVFGL0lBSkJBRTRFZnlBQUlBSkIvd0Z4UVFKMGFpZ0NBQ0FCY1VFQVJ3VkJBQXNMR0FBZ0FDMEFBRUVnY1VVRVFDQUJJQUlnQUJDMERSb0xDd3NBSUFBZ0FVRVVFUFVHQzI0QkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBQkI2QUpxSUFOQkRHb1F3QU1pQVNBQVFld0Nha1lFZjBFQUJTQUJLQUlVSVFBZ0FVRVlhaUVCQTBBQ1FDQUFJQUZHRFFBZ0FDZ0NFQ0FDUmcwQUlBQVFUQ0VBREFFTEN5QUFJQUZIQ3lFQUlBTkJFR29rQUNBQUMvVUpBZzEvQW4wakFFRVFheUlLSkFBakFFRVFheUlISkFBZ0FpZ0NBQ0lEUlFSQVFmR1ZCRUhOclFOQkxrSGM4UWdRQUFBTElBTVF0eGNoQ0NBS0FuOENRQ0FCS0FJRUlnTkZEUUFnQVNnQ0FBSi9JQU5CQVdzZ0NIRWdBMmtpQmtFQlRRMEFHaUFJSUFNZ0NFc05BQm9nQ0NBRGNBc2lCVUVDZEdvb0FnQWlCRVVOQUNBRFFRRnJJUWtnQmtFQlN5RUxBMEFnQkNnQ0FDSUVSUTBCSUFnZ0JDZ0NCQ0lHUndSQUFrQWdDMFVFUUNBR0lBbHhJUVlNQVFzZ0F5QUdTdzBBSUFZZ0EzQWhCZ3NnQlNBR1J3MENDeUFFUVFocUlBSVF2UmRGRFFBTFFRQU1BUXRCREJBVklRUWdCeUFCUVFocU5nSUVJQWNnQkRZQ0FDQUNLQUlBSVFZZ0FrRUFOZ0lBSUFRZ0JqWUNDQ0FIUVFFNkFBZ2dCRUVBTmdJQUlBUWdDRFlDQkFKQVFRQWdBeUFCS0FJTVFRRnFzeUlRSUFFcUFoQWlFU0FEczVSZUd3MEFBa0FDZjBFQ0lBTWdBMEVCYTNGQkFFY2dBMEVEU1hJZ0EwRUJkSElpQWdKL0lCQWdFWldOSWhCREFBQ0FUMTBnRUVNQUFBQUFZSEVFUUNBUXFRd0JDMEVBQ3lJRklBSWdCVXNiSWdKQkFVWU5BQm9nQWlBQ0lBSkJBV3R4UlEwQUdpQUNFSDhMSWdVZ0FTZ0NCQ0lDVFFSQUlBSWdCVTBOQVNBQ1FRTkpJUVFDZnlBQktBSU1zeUFCS2dJUWxZMGlFRU1BQUlCUFhTQVFRd0FBQUFCZ2NRUkFJQkNwREFFTFFRQUxJUU1nQWlBRklBUWdBbWxCQVV0eUJIOGdBeEIvQlNBRFFRRkJJQ0FEUVFGcloydDBJQU5CQWtrYkN5SURJQU1nQlVrYklnVk5EUUVMUVFBaEFnSkFJQVVpQkFSQUlBRWdCQkNYQXhCc0lBRWdCRFlDQkFOQUlBSWdCRVlFUUNBQktBSUlJZ05GRFFNZ0FVRUlhaUVDSUFNb0FnUWhCZ0pBSUFScElnVkJBVTBFUUNBR0lBUkJBV3R4SVFZTUFRc2dCQ0FHU3cwQUlBWWdCSEFoQmdzZ0FTZ0NBQ0FHUVFKMGFpQUNOZ0lBSUFSQkFXc2hEQ0FGUVFGTElRMERRQ0FES0FJQUlnVkZEUVFnQlNnQ0JDRUNBa0FnRFVVRVFDQUNJQXh4SVFJTUFRc2dBaUFFU1EwQUlBSWdCSEFoQWdzZ0FpQUdSd1JBSUFKQkFuUWlDeUFCS0FJQWFpSUpLQUlBQkVBZ0JVRUlhaUVPSUFVaEFnTkFBa0FnQWlJSktBSUFJZ0pGQkVCQkFDRUNEQUVMSUE0Z0FrRUlhaEM5RnlFUElBa29BZ0FoQWlBUERRRUxDeUFESUFJMkFnQWdDU0FCS0FJQUlBdHFLQUlBS0FJQU5nSUFJQUVvQWdBZ0Myb29BZ0FnQlRZQ0FBd0NDeUFKSUFNMkFnQWdBaUVHQ3lBRklRTU1BQXNBQlNBQktBSUFJQUpCQW5ScVFRQTJBZ0FnQWtFQmFpRUNEQUVMQUFzQUN5QUJRUUFRYkNBQlFRQTJBZ1FMQ3lBQktBSUVJZ01nQTBFQmEzRkZCRUFnQTBFQmF5QUljU0VGREFFTElBTWdDRXNFUUNBSUlRVU1BUXNnQ0NBRGNDRUZDd0pBSUFWQkFuUWlCU0FCS0FJQWFpZ0NBQ0lDUlFSQUlBY29BZ0FnQVNnQ0NEWUNBQ0FCSUFjb0FnQTJBZ2dnQVNnQ0FDQUZhaUFCUVFocU5nSUFJQWNvQWdBaUFpZ0NBQ0lGUlEwQklBVW9BZ1FoQkFKQUlBTWdBMEVCYXlJRmNVVUVRQ0FFSUFWeElRUU1BUXNnQXlBRVN3MEFJQVFnQTNBaEJBc2dBU2dDQUNBRVFRSjBhaUFDTmdJQURBRUxJQWNvQWdBZ0FpZ0NBRFlDQUNBQ0lBY29BZ0EyQWdBTElBY29BZ0FoQkNBSFFRQTJBZ0FnQVNBQktBSU1RUUZxTmdJTUlBY29BZ0FoQVNBSFFRQTJBZ0FnQVFSQUlBY3RBQWdFUUNBQlFRaHFFSVVER2dzZ0FRUkFJQUVRSHdzTFFRRUxPZ0FNSUFvZ0JEWUNDQ0FIUVJCcUpBQWdBQ0FLS0FJSU5nSUFJQUFnQ2kwQUREb0FCQ0FLUVJCcUpBQUxvZ0VCQlg4akFFRVFheUlFSkFBZ0JDQUNOZ0lNUVFBaEFnSkFJQUZGRFFBZ0FDZ0NBRUdzSFdvaEJTQUFLQUlFS0FJQVFSQnFJUWNqQUVFUWF5SUdKQUFnQVJDeEd5SUlSUVJBSUFVZ0JrSGFoZ2tRRkNJRklBY1FKeUFGRUE4YUN5QUdRUkJxSkFBZ0NFVU5BQ0FFSUFBb0FnZ2dBU0FERU5NQklnRTJBZ2dnQVVVTkFDQUFLQUlNSUFSQkNHb2dCRUVNYWhEQUNTRUNDeUFFUVJCcUpBQWdBZ3NMQUNBQVFmUzhJQkRlQXdzVEFDQUFFQndnQUVIRUFXb2dBU0FDRUxZUkN4RUFJQUJCTEVIVi93TkJmRUVERU1vQkN4TUFJQUFRSENBQVFjUUJhaUFCSUFJUXZSRUxFd0FnQUJBY0lBQkJ4QUZxSUFFZ0FoQ3JFUXVjQVFFRGZ3SkFJQUFRTzBVZ0FpQUJhMEVGU0hJTkFDQUJJQUlRZ0FvZ0FrRUVheUVFSUFBUWV5SUNJQUFRTzJvaEJnSkFBMEFDUUNBQ0xBQUFJZ0JCL3dCcklRVWdBU0FFVHcwQUlBVkIvd0Z4UVlJQlR3UkFJQUVvQWdBZ0FFY05Bd3NnQVVFRWFpRUJJQUlnQmlBQ2EwRUJTbW9oQWd3QkN3c2dCVUgvQVhGQmdnRkpEUUVnQkNnQ0FFRUJheUFBU1EwQkN5QURRUVEyQWdBTEN4TUFJQUFnQVNBQ0lBQW9BZ0FvQWd3UkJBQUxEQUFnQUNBQkVPWVVRUUZ6QzI4QkFYOGpBRUdBQW1zaUJTUUFJQVJCZ01BRWNTQUNJQU5NY2tVRVFDQUZJQUZCL3dGeElBSWdBMnNpQTBHQUFpQURRWUFDU1NJQkd4QjVHaUFCUlFSQUEwQWdBQ0FGUVlBQ0VMNENJQU5CZ0FKcklnTkIvd0ZMRFFBTEN5QUFJQVVnQXhDK0Fnc2dCVUdBQW1va0FBdFFBUUYrQWtBZ0EwSEFBSEVFUUNBQklBTkJRR3F0aGlFQ1FnQWhBUXdCQ3lBRFJRMEFJQUlnQTYwaUJJWWdBVUhBQUNBRGE2MkloQ0VDSUFFZ0JJWWhBUXNnQUNBQk53TUFJQUFnQWpjRENBc1hBQ0FBSUFFUXVnRWlBRVVFUUVFQUR3c2dBQ2dDSkF0MUFRTi9Jd0JCRUdzaUJDUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FFSUFNMkFnZ2pBRUVnYXlJRkpBQWdBRUdNQVdvaUF4RDhCeUFBS0FJSUlBUW9BZ2dnQVNBRklBSVFWaENkRHlFQUlBTWdBQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUZRU0JxSkFBZ0JFRVFhaVFBSUFBTFJnRUNmeU1BUVJCcklnUWtBQ0FFUVFBMkFnd2dBQ2dDQUNBQklBSWdCRUVNYWhDOUF5SUZSUVJBSUFBZ0FTQUNJQU1nQkNnQ0RCQ3lGaUVGQ3lBRVFSQnFKQUFnQlFzSkFDQUFRUlFRa3hNTEp3RUJmeU1BUVJCcklnSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDQUNLQUlJTFFBQU9nQUFDenNCQVg4akFFRVFheUlDSkFBZ0FpQUFJQUJCMkFKcUlBRVFyUThpQVRZQ0RDQUFJQUZCRUdvZ0FrRU1haEN6QXlFQUlBSkJFR29rQUNBQUN4b0FJQUJCQUNBQUJIOGdBQ2dDQkVHb21CSVFTQVZCQUFzYkN3NEFJQUFRSENBQVFSQnFFTXdRQ3d3QUlBRWdBaWdDQURZQ0FBdGJBUU4vSUFFZ0FDZ0NHRXNFUUNBQUtBSVFJUUlnQUNBQkVNRUpJQUFvQWhRaEEwRUFJUUVEUUNBQklBTkdCRUFnQUNBQ0VEWUZJQUZCQW5RaUJDQUFLQUlRYWlBQ0lBUnFLQUlBTmdJQUlBRkJBV29oQVF3QkN3c0xDeFlBSUFFZ0FqWUNBQ0FCUVFScUlBQkJCR29RVkJvTEhnRUJmMEVRRUJVaUFpQUJOZ0lBSUFKQkJHb2dBRUVFYWhCVUdpQUNDOG9FQVFoL1FRUWdBU0FCUVFSTkd5RUVJQUJCQVNBQUd5RUdBMEFqQUVFUWF5SUhKQUFnQjBFQU5nSU1Ba0FDZnlBRVFRaEdCRUFnQmhEZ0FRd0JDeUFFUVFOeElBUkJCRWx5RFFFZ0JFRUNkaUlBSUFCQkFXdHhRVUFnQkdzZ0JrbHlEUUVDZjBFUUlRTUNRRUVRUVJBZ0JDQUVRUkJOR3lJQUlBQkJFRTBiSWdFZ0FVRUJhM0ZGQkVBZ0FTRUFEQUVMQTBBZ0F5SUFRUUYwSVFNZ0FDQUJTUTBBQ3dzZ0JrRkFJQUJyVHdSQVFaaXBJRUV3TmdJQVFRQU1BUXRCQUVFUUlBWkJDMnBCZUhFZ0JrRUxTUnNpQXlBQWFrRU1haERnQVNJQ1JRMEFHaUFDUVFocklRRUNRQ0FBUVFGcklBSnhSUVJBSUFFaEFBd0JDeUFDUVFScklnZ29BZ0FpQ1VGNGNTQUFJQUpxUVFGclFRQWdBR3R4UVFocklnSWdBRUVBSUFJZ0FXdEJEMDBiYWlJQUlBRnJJZ0pySVFVZ0NVRURjVVVFUUNBQktBSUFJUUVnQUNBRk5nSUVJQUFnQVNBQ2FqWUNBQXdCQ3lBQUlBVWdBQ2dDQkVFQmNYSkJBbkkyQWdRZ0FDQUZhaUlGSUFVb0FnUkJBWEkyQWdRZ0NDQUNJQWdvQWdCQkFYRnlRUUp5TmdJQUlBRWdBbW9pQlNBRktBSUVRUUZ5TmdJRUlBRWdBaENoQ2dzQ1FDQUFLQUlFSWdGQkEzRkZEUUFnQVVGNGNTSUNJQU5CRUdwTkRRQWdBQ0FESUFGQkFYRnlRUUp5TmdJRUlBQWdBMm9pQVNBQ0lBTnJJZ05CQTNJMkFnUWdBQ0FDYWlJQ0lBSW9BZ1JCQVhJMkFnUWdBU0FERUtFS0N5QUFRUWhxQ3dzaUFFVU5BQ0FISUFBMkFnd0xJQWNvQWd3aEFDQUhRUkJxSkFBQ1FDQUFCSDhnQUFWQjRNb2dLQUlBSWdBTkFVRUFDdzhMSUFBUkVRQU1BQXNBQ3d3QUlBQWdBUkRXRkVFQmN3c09BQ0FBUVFScUVBOGFJQUFRSHdzS0FDQUFRUVJxRUE4YUM1SUNBZ0YrQ0g4Q2Z5QUFLQUlBSVFvZ0FTRUxRWG9nQUNnQ0JDSUdSUTBBR2tGOUlBTkZEUUFhQTBCQmR5QUdOUUlBSUFSWURRRWFBa0FnQmlnQ0JDQUVwMEVNYkdvaUFDZ0NBQ0FMUncwQUlBQW9BZ1FoQnlBQUtBSUlJUWdnQ2hDSERpRUpJQWNoQVNBSUlRQURRQ0FCQkVBZ0FTQUJRUUYySWdWQmYzTnFJQVVnQUNBRlFlQUFiR29pQlNnQ0JDQUNTU0lNR3lFQklBVkI0QUJxSUFBZ0RCc2hBQXdCQlNBSUlBZEI0QUJzYWlFQkEwQWdBQ0FCUmcwRElBQW9BZ1FnQWtjTkF3SkFJQUFvQWxnZ0NVMEVRQ0FKSUFBb0FseE5EUUVMSUFBb0FoQU5BQ0FBS0FJSURRQWdBRUhnQUdvaEFBd0JDd3NnQXlBQU5nSUFRUUFNQkFzQUN3QUxJQVJDQVh3aEJBd0FDd0FMQ3pBQkFYOGdBQ2dDQkNJQ0lBQW9BZ2hIQkVBZ0FpQUJLQUlBTmdJQUlBQWdBa0VFYWpZQ0JBOExJQUFnQVJDNERnc3dBUUYvSUFBb0FnUWlBaUFBS0FJSVNRUkFJQUlnQVNnQ0FEWUNBQ0FBSUFKQkJHbzJBZ1FQQ3lBQUlBRVF1QTRMemdJQkEzOGdBQ0FCUndSL0lBRXRBQXNpQTBFWWRFRVlkU0VDSUFBc0FBdEJBRTRFUUNBQ1FRQk9CRUFnQUNBQktRSUFOd0lBSUFBZ0FTZ0NDRFlDQ0E4TElBRW9BZ0FoQkNBQktBSUVJUUVqQUVFUWF5SUNKQUFDUUNBQlFRcE5CRUFnQUJDS0JTRURJQUFnQVJDTEJTQURFSU1CSUFRZ0FSQzVBeG9nQWtFQU9nQVBJQUVnQTJvZ0FrRVBhaERSQWd3QkN5QUFRUW9nQVVFS2F5QUFFTWdPSWdCQkFDQUFJQUVnQkJDV0NBc2dBa0VRYWlRQUR3c2dBU2dDQUNBQklBSkJBRWdpQWhzaEJDQUJLQUlFSUFNZ0Foc2hBU01BUVJCcklnSWtBQUpBSUFFZ0FCQ1NDaUlEU1FSQUlBQVExQWdoQXlBQUlBRVEwd1FnQXhDREFTQUVJQUVRdVFNYUlBSkJBRG9BRHlBQklBTnFJQUpCRDJvUTBRSU1BUXNnQUNBRFFRRnJJQUVnQTJ0QkFXb2dBQkRKRGlJQVFRQWdBQ0FCSUFRUWxnZ0xJQUpCRUdva0FFRUFCU0FBQ3hvTFNnRUJmd0pBSUFGRkRRQWdBU2dDRENJQklBQW9BZ1FnQUNnQ0FDSUFhMEVDZFU4TkFDQUFJQUZCQW5ScUtBSUFJZ0JCQUNBQUJIOGdBQ2dDQkJEWkhBVkJBQXNiSVFJTElBSUxBd0FCQy9NREFRVi9Jd0JCSUdzaUF5UUFJQU1nQVRZQ0RBSkFJQUZGQkVCQkFDRUJEQUVMSUFFb0FoUW9BZ1JCdUswU1J3MEFJQUFvQWdBaUFSQWNJQUZCcUFGcUlnVVE4d1VoQVNBREtBSU1JUVFnQUVHTU5Hb29BZ0FoQmlNQVFkQUJheUlDSkFBZ0FpQUdOZ0xNQVNBQ0lBUW9BZ2cyQWdnZ0FpQUVLQUlVRUlRQk5nS29BU0FDUVFNMkFzZ0JJQUpCQURZQ3hBRWdBaUFFTFFBb09nRERBU0FDSUFRb0FoQTJBcndCSUFFZ0FpZ0NDQ0FDS0FLb0FTQUNLQUxJQVNBQ0tBTE1BVUVBSUFJdEFNTUJJQUlvQXJ3QkVKd0ZJZ0ZCcUpRU05nSUVJQUZCMkpRU05nSUFJQUVnQkRZQ0xDQUJRY2lVRWpZQ0FDQUVLQUlVS0FJRVFiaXRFa2NFUUNBQ1FRaHFRZEczQlVFZ1FRa2dBa0dvQVdvUUhTSUVFQmNpQmtFWWFrSHM3UWdRRGhvZ0JoQVlJQVFRSGdzZ0FrSFFBV29rQUNBRklBRVFLQ0FGSUFVb0FoaEJBV28yQWhnZ0FTQURLQUlNS1FNZ053TWdJQUFvQWdBaUFoQWNJQUpCNUFGcUlBTW9BZ3dvQWdnZ0FSQ29IaUFBUWNncmFpQUFRWWcwYWhDSkRDRUNJQU1vQWd3aUJDZ0NFQ0lBUlEwQUlBQW9BZ1FpQlVHUW5CSkdCRUFnQXlBRU5nSWNJQU1nQURZQ0dDQURRUkJxSUFKQkZHb2dBMEVZYWhEM0JRd0JDeUFGUWNDY0VrY05BQ0FESUFBMkFoQWdBMEVZYWlBQ1FUeHFJQU5CRUdvUXF3VUxJQU5CSUdva0FDQUJDNnNCQVFSL0l3QkJFR3NpQWlRQUlBQWdBU2dDQURZQ0FDTUFRUkJySWdNa0FDQUFRUVJxSWdVZ0FVRUVhaUlFUndSQUlBTWdCRUVRYWpZQ0NDQURJQVFvQWhBZ0JFYzZBQXdnQlNBRFFRaHFFTWdKQ3lBRFFSQnFKQUFnQUNBQlJ3UkFJQUlnQVVFd2FqWUNDQ0FDSUFFb0FqQWdBVUVnYWtjNkFBd2dBRUVnYWlBQ1FRaHFFSllmQ3lBQVFUeHFJQUZCUEdvUWxSOGdBQ0FCS0FLSUFUWUNpQUVnQWtFUWFpUUFJQUFMTlFBZ0FDQUJLQUlBTmdJQUlBQkJCR29nQVVFRWFoQ1lIeG9nQUVFOGFpQUJRVHhxRUl3UklBQWdBU2dDaUFFMkFvZ0JJQUFMQ2dBZ0FDZ0NBQkRrQVFzMkFRRitBbjlCQUNBQUtBSUVJZ0FwQXhCQ2hhQ0FpSUlJZ3lJQklBRkNBWDJEVUEwQUdrRUJJQUFRc0FVTkFCb2dBQkNWRVFzTENnQWdBQ2dDQUJEVUFnczRBUUYrQW45QkFDQUFLQUlFSWdBcEF4QkN3TUNBaW9DSWdDQ0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FCQ3dCUTBBR2lBQUVKY1JDd3NTQUNBQUxRQllCRUFnQUVFSWFoQ1ZBUXNMRmdBZ0FTQUNOZ0lBSUFGQkJHb2dBRUVFYWhDNUZnc2ZBUUYvUWNnQkVCVWlBaUFCTmdJQUlBSkJCR29nQUVFRWFoQzVGaUFDQ3hNQUlBQWdBVFlDQUNBQVFReHFFSndDSUFBTEVRQWdBQ0FCSUFFb0FnQW9BaFFSQWdBTER3QWdBQ0FBS0FJQUtBSVFFUUFBQ3dzQUlBQkI3THdnRU40REMzSUJBWDRDZnlBQUtRT0FBU0lDUW9DQWdBS0RVQVJBUVFFZ0FDQUJRUlZCRUJDR0JBMEJHaUFBS1FPQUFTRUNDeUFDUW9DQWdJQ0FFSU5RQkg1QkFTQUFJQUZCRlVFSUVJWUVEUUVhSUFBcEE0QUJCU0FDQzBLQUJJTlFCRUJCQVNBQUlBRkJGa0VRRUlZRURRRWFDMEVBQ3dzTUFDQUFFQndnQUNnQzRBRUxEd0FnQUNBQVFkZ0NhaUFCRVBNTkMzb0JBMzhqQUVFUWF5SUNKQUFnQWlBQk5nSUlJQUFvQWdRaEF5QUFRUXhxSWdFb0FnQWdBQ2dDQ0NJQVFRRjFhaUlFSUFFb0FnUWdBU2dDQ0NBQktBSU1JQUZCRUdvZ0FVRWthaUFCUWZBQWFpQUNLQUlJSUFCQkFYRUVmeUFFS0FJQUlBTnFLQUlBQlNBREN4RU1BQ0VBSUFKQkVHb2tBQ0FBQ3c0QUlBQkJER29RbkFJZ0FCQWZDd29BSUFCQkRHb1FuQUlMakF3QkNuOENRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUFvQWhBT0d4c0FBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVCRVNFeFFWRmhjWUdSb0xJQUFnQUNnQ0FDZ0NJQkVBQUNFQVFSUVFGU0FBRVBBQklnQkIrUGNTTmdJQURCc0xJQUFnQUNnQ0FDZ0NLQkVBQUNFQVFSd1FGU0FBRVBBQklnRkI3S0FUTmdJQUlBRWdBQ2dDRkRZQ0ZDQUJJQUF0QUJnNkFCZ01IUXNnQUNBQUtBSUFLQUl3RVFBQUlRQkJHQkFWSUFBUThBRWlBVUgwb2hNMkFnQU1HZ3NnQUNBQUtBSUFLQUk0RVFBQUlRQkJIQkFWSUFBUThBRWlBVUdRanhNMkFnQU1HZ3NnQUNBQUtBSUFLQUpBRVFBQUlRQkJIQkFWSUFBUThBRWlBVUdNa1JNMkFnQU1HUXNnQUNBQUtBSUFLQUpJRVFBQUlRQkJNQkFWSUFBUThBRWlBVUdJa3hNMkFnQWdBU0FBS1FJVU53SVVJQUVnQUNrQ0hEY0NIQ0FCSUFBcEFpUTNBaVFnQVNBQUtBSXNOZ0lzREJrTElBQWdBQ2dDQUNnQ1VCRUFBQ0VBUVJRUUZTQUFFUEFCSWdCQmdQb1NOZ0lBREJVTElBQWdBQ2dDQUNnQ1dCRUFBQ0VBUVJnUUZTQUFFUEFCSWdGQi9LUVROZ0lBREJVTElBQWdBQ2dDQUNnQ1lCRUFBQ0VBUVNnUUZTQUFFUEFCSWdGQmhKVVROZ0lBSUFFZ0FDZ0NGRFlDRkNBQlFSaHFJQUJCR0dvUXRoY01GZ3NnQUNBQUtBSUFLQUpvRVFBQUlRQkJHQkFWSUFBUThBRWlBVUdBbHhNMkFnQU1Fd3NnQUNBQUtBSUFLQUp3RVFBQUlRRkJMQkFWSUFFUThBRWlCVUg4bUJNMkFnQWdCVUVVYWlBQlFSUnFFTEFCR2lBRlFTQnFJZ0JDQURjQ0JDQUFJQUJCQkdvaUJ6WUNBQ0FCUVNCcUlnRW9BZ0FoQXlBQlFRUnFJUWdEUUNBRElBaEhCRUFqQUVFUWF5SUVKQUFqQUVFZ2F5SUJKQUFnQkNBQUlBY2dBVUVjYWlBQlFSaHFJQU5CRUdvaUNSQ1NEaUlLS0FJQUlnSUVmMEVBQlVFZ0VCVWhBaUFCUVFocUlnWWdBRUVFYWpZQ0JDQUdJQUkyQWdBZ0FrRVFhaUFKRUp3T0dpQUdRUUU2QUFnZ0FDQUJLQUljSUFvZ0FTZ0NDQkQ0QWlBQktBSUlJUUlnQVVFQU5nSUlJQVlRbmhkQkFRczZBQXdnQkNBQ05nSUlJQUZCSUdva0FDQUVLQUlJR2lBRVFSQnFKQUFnQXhCTUlRTU1BUXNMSUFVUEN5QUFJQUFvQWdBb0FuZ1JBQUFoQUVFZ0VCVWdBQkR3QVNJQlFZU25FellDQUNBQlFSUnFJQUJCRkdvUVZCb01Fd3NnQUNBQUtBSUFLQUtBQVJFQUFDRUFRUndRRlNBQUVQQUJJZ0ZCK0pvVE5nSUFEQkVMSUFBZ0FDZ0NBQ2dDaUFFUkFBQWhBRUVrRUJVZ0FCRHdBU0lCUWZTY0V6WUNBQ0FCSUFBb0FoUTJBaFFnQVVFWWFpQUFRUmhxRUxBQkdnd1JDeUFBSUFBb0FnQW9BcEFCRVFBQUlRQkJGQkFWSUFBUThBRWlBRUdJL0JJMkFnQU1EUXNnQUNBQUtBSUFLQUtZQVJFQUFDRUFRUlFRRlNBQUVQQUJJZ0JCa1A0U05nSUFEQXdMSUFBZ0FDZ0NBQ2dDb0FFUkFBQWhBRUVVRUJVZ0FCRHdBU0lBUVppQUV6WUNBQXdMQ3lBQUlBQW9BZ0FvQXFnQkVRQUFJUUJCRkJBVklBQVE4QUVpQUVHZ2doTTJBZ0FNQ2dzZ0FDQUFLQUlBS0FLd0FSRUFBQ0VBUVJnUUZTQUFFUEFCSWdGQmpLa1ROZ0lBREFvTElBQWdBQ2dDQUNnQ3VBRVJBQUFoQUVFZ0VCVWdBQkR3QVNJQlFaU3JFellDQUNBQklBQXBBaFEzQWhRZ0FTQUFLQUljTmdJY0RBc0xJQUFnQUNnQ0FDZ0N3QUVSQUFBaEFFRVVFQlVnQUJEd0FTSUFRYWlFRXpZQ0FBd0hDeUFBSUFBb0FnQW9Bc2dCRVFBQUlRQkJGQkFWSUFBUThBRWlBRUd3aGhNMkFnQU1CZ3NnQUNBQUtBSUFLQUxRQVJFQUFDRUFRUlFRRlNBQUVQQUJJZ0JCdUlnVE5nSUFEQVVMSUFBZ0FDZ0NBQ2dDMkFFUkFBQWhBRUVrRUJVZ0FCRHdBU0lCUWZDZUV6WUNBQ0FCSUFBcEFoUTNBaFFnQVNBQUtRSWNOd0ljREFjTElBQWdBQ2dDQUNnQzRBRVJBQUFoQUVFVUVCVWdBQkR3QVNJQVFjQ0tFellDQUF3REN5QUFJQUFvQWdBb0F1Z0JFUUFBSVFCQkZCQVZJQUFROEFFaUFFSElqQk0yQWdBTUFndEJvNmdKUVlDZ0FrR0pBVUdOcmdRUUFBQUxJQUFnQUNnQ0FDZ0NHQkVBQUNFQVFSUVFGU0FBRVBBQklnQkI4UFFTTmdJQUlBQVBDeUFBRHdzZ0FTQUFLQUlVTmdJVURBRUxJQUVnQUNrQ0ZEY0NGQXNnQVF1bEFnRUNmeUFESUFFMkFnZ2dBMElBTndJQUlBSWdBellDQUNBQUtBSUFLQUlBSWdFRVFDQUFJQUUyQWdBZ0FpZ0NBQ0VEQ3lBRElBTWdBQ2dDQkNJRlJqb0FEQU5BQWtBZ0F5QUZSZzBBSUFNb0FnZ2lBaTBBREEwQUFrQWdBaUFDS0FJSUlnRW9BZ0FpQkVZRVFBSkFJQUVvQWdRaUJFVU5BQ0FFTFFBTURRQU1BZ3NnQXlBQ0tBSUFSd1JBSUFJUXlnZ2dBaWdDQ0NJQ0tBSUlJUUVMSUFKQkFUb0FEQ0FCUVFBNkFBd2dBUkRKQ0F3Q0N3SkFJQVJGRFFBZ0JDMEFEQTBBREFFTElBTWdBaWdDQUVZRVFDQUNFTWtJSUFJb0FnZ2lBaWdDQ0NFQkN5QUNRUUU2QUF3Z0FVRUFPZ0FNSUFFUXlnZ01BUXNnQWtFQk9nQU1JQUVnQVNBRlJqb0FEQ0FFUVFFNkFBd2dBU0VEREFFTEN5QUFJQUFvQWdoQkFXbzJBZ2dMSUFFQmZ5TUFRUkJySWdFa0FDQUFLQUlBRVB3Q0lRQWdBVUVRYWlRQUlBQUxKd0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RCQ0RBU0VBSUFGQkVHb2tBQ0FBQzhFSEFRVi9Jd0JCSUdzaUJTUUFJQUZCQ0dvaEF5QUNLQUlBSWdJb0FnQWlCaUFDS0FJRVFRSjBhaUVIUVFFaEFnTkFJQVlnQjBjRVFDQUZJQVlvQWdBMkFnd2dBa0VCY1VVRVFDQURRZmZ3REJBT0dnc2dBMEdkM3dZUURob2dCU2dDRENFQ0lBVWdBRFlDQUNBRklBVkJER28yQWdRQ1FBSkFJQUpGRFFBZ0FpZ0NCQ0lFUWFqNkQwWUVRQ0FGSUFJb0FpUTJBaEFnQlNBQ0tBSW9OZ0lVSUFVZ0FpZ0NMRFlDR0NBRFFkSDRDQkFPR2tFQUlRSURRQ0FDUVFOSEJFQWdCVUVRYWlBQ1FRSjBhaWdDQUNJRUJFQWdBZ1JBSUFOQjlPME1FQTRhQ3lBQUlBRWdCQkNTQVFzZ0FrRUJhaUVDREFFTEN5QURRZS8yQ0JBT0dnd0NDeUFFUVlqcUQwWUVRQ0FCSUFJb0FpUVFtUWthREFJTElBUkJzUG9SUmdSQUlBTkJ5UGdJRUE0YUlBQWdBU0FDS0FJa0VKSUJJQU5CNy9ZSUVBNGFEQUlMSUFSQndQc1JSZ1JBSUFOQjVQY0lFQTRhSUFBZ0FTQUNLQUlrRUpJQklBTkI3L1lJRUE0YURBSUxJQVJCbVAwUlJnUkFJQU5CN1BjSUVBNGFJQUFnQVNBQ0tBSWtFSklCSUFOQjcvWUlFQTRhREFJTElBUkIrUG9SUmdSQUlBTkJoZmdJRUE0YUlBQWdBU0FDS0FJa0VKSUJJQU5CNy9ZSUVBNGFEQUlMSUFSQmtJSVNSZ1JBSUFFZ0FrRWthaERWR0F3Q0N5QUVRZEQ4RVVZRVFDQURRWXY1Q0JBT0dpQUFJQUVnQWlnQ0pCQ1NBU0FDS0FJb0JFQWdBMEgwN1F3UURob2dBQ0FCSUFJb0FpZ1FrZ0VMSUFOQjcvWUlFQTRhREFJTElBUkJxSUlTUmdSQUlBTkJudU1BRUE0YURBSUxJQVJCaVB3UlJnUkFJQU5CeVBrSUVBNGFJQUFnQVNBQ0tBSWtFSklCSUFOQjcvWUlFQTRhREFJTElBUkJ3SUlTUmdSQUlBTkI1ZUlERUE0YURBSUxJQVJCb0lNU1JnUkFJQU5COVBZSUVBNGFJQUFnQVNBQ0tBSWtFSklCSUFOQjcvWUlFQTRhREFJTElBUkIrUDBSUmdSQUlBTkI2dmdJRUE0YUlBQWdBU0FDS0FJa0VKSUJJQU5CNy9ZSUVBNGFEQUlMSUFSQjRQMFJSZ1JBSUFOQnEvZ0lFQTRhSUFBZ0FTQUNLQUlrRUpJQklBTkI3L1lJRUE0YURBSUxJQVJCMklJU1JnUkFJQU5CdnZrSUVBNGFJQUVnQWtFa2FoRExBMEVJYWtIdjlnZ1FEaG9NQWdzZ0JCRDJBMFVOQUNBRFFiTDRDQkFPR2lBRlFSQnFJZ1FnQWlBQ0tBSUFLQUlRRVFJQUlBTWdCQkFTR2lBRFFlLzJDQkFPR2lBRUVBOGFEQUVMSXdCQm9BRnJJZ0lrQUNBQ1FlNnBCVUhkQTBFUElBVW9BZ0JCOUFKcUVCY2lCRUVZYWtHQWtRa1FEaG9nQkNBRktBSUVLQUlBS0FJRVFRUnFFSm9CUVJocVFmT2FDUkFPR2lBRUVCZ2dBa0dnQVdva0FBc2dCa0VFYWlFR1FRQWhBZ3dCQ3dzZ0JVRWdhaVFBQ3lNQkFYOGpBRUVRYXlJQkpBQWdBQkREQXlFQUlBRkJFR29rQUNBQUlBQkJCSFp6Q3pBQkFYOGdBQ2dDQkNJQ0lBQW9BZ2hKQkVBZ0FpQUJLQUlBTmdJQUlBQWdBa0VFYWpZQ0JBOExJQUFnQVJEQ0VBdENBUUovQWtBZ0FrVU5BQ0FBS0FJd0lRTWdBQ2dDTENFQ0EwQWdBaUFEUmcwQklBRWdBaENLQWlFRUlBSkJRR3NoQWlBRURRQUxRUUFQQ3lBQklBQVFpZ0lMb1FzQ0QzOENmU01BUVNCcklnZ2tBQ0FJSUFJMkFnZ2dDQ0FCTmdJTUlBQW9BZ0FoQkNBSVFSQnFJQUVnQWhDNEdpQUVRYXdCYWlFSElBaEJHR29nQ0VFY2FoQ3dEQ0VGQWtBQ1FDQUVLQUt3QVNJQVJRMEFJQWNvQWdBQ2Z5QUFRUUZySUFWeElBQnBJZ0ZCQVUwTkFCb2dCU0FBSUFWTERRQWFJQVVnQUhBTElnTkJBblJxS0FJQUlnSkZEUUFnQUVFQmF5RUpJQWdvQWh3aEJpQUlLQUlZSVFvZ0FVRUJTeUVNQTBBZ0FpZ0NBQ0lDUlEwQklBVWdBaWdDQkNJQlJ3UkFBa0FnREVVRVFDQUJJQWx4SVFFTUFRc2dBQ0FCU3cwQUlBRWdBSEFoQVFzZ0FTQURSZzBCREFJTElBSW9BZ3dpQ3lnQ0NDQUtSdzBBSUFzb0Fnd2dCa2NOQUFzTUFRc2dCRUdRQVdvaUFCRDhBeUlCSUFnb0Fnd2dDQ2dDQ0JDNEdpQUFJQUVRS0NBQUlBQW9BaGhCQVdvMkFoZ2dBU0VMQWtBZ0JDZ0NzQUVpQUVVTkFDQUhLQUlBQW44Z0FFRUJheUFGY1NBQWFTSUJRUUZORFFBYUlBVWdBQ0FGU3cwQUdpQUZJQUJ3Q3lJRFFRSjBhaWdDQUNJQ1JRMEFJQUJCQVdzaENTQUJRUUZMSVFZRFFDQUNLQUlBSWdKRkRRRWdCU0FDS0FJRUlnRkhCRUFDUUNBR1JRUkFJQUVnQ1hFaEFRd0JDeUFBSUFGTERRQWdBU0FBY0NFQkN5QUJJQU5IRFFJTElBSW9BZ3dpQVNnQ0NDQUxLQUlJUncwQUlBRW9BZ3dnQ3lnQ0RFY05BQXNNQVF0QkVCQVZJZ29nQlRZQ0JDQUtJQVd0SUF1dFFpQ0doRGNDQ0NBS1FRQTJBZ0FnQkVHMEFXb2hEQUpBUVFBZ0FDQUVLQUs0QVVFQmFyTWlFaUFFS2dLOEFTSVRJQUN6bEY0YkRRQkJBaUVEQWtBZ0FDQUFRUUZyY1VFQVJ5QUFRUU5KY2lBQVFRRjBjaUlCQW44Z0VpQVRsWTBpRWtNQUFJQlBYU0FTUXdBQUFBQmdjUVJBSUJLcERBRUxRUUFMSWdJZ0FTQUNTeHNpQVVFQlJnMEFJQUVnQVVFQmEzRkZCRUFnQVNFRERBRUxJQUVRZnlFRElBUW9BckFCSVFBTEFrQUNRQUpBSUFBZ0EwOEVRQ0FBSUFOTkRRTWdBRUVEU1NFQ0FuOGdCQ2dDdUFHeklBUXFBcndCbFkwaUVrTUFBSUJQWFNBU1F3QUFBQUJnY1FSQUlCS3BEQUVMUVFBTElRRWdBQ0FESUFJZ0FHbEJBVXR5Qkg4Z0FSQi9CU0FCUVFGQklDQUJRUUZyWjJ0MElBRkJBa2tiQ3lJQklBRWdBMGtiSWdOTkJFQWdCQ2dDc0FFaEFBd0VDeUFEUlEwQkN5QURRWUNBZ0lBRVNRUkFJQWNnQTBFQ2RCQVZFR3dnQkNBRE5nS3dBVUVBSVFJRFFDQUNJQU5HQkVBZ0JDZ0N0QUVpQ1VVTkJBVWdCeWdDQUNBQ1FRSjBha0VBTmdJQUlBSkJBV29oQWd3QkN3c2dDU2dDQkNFR0FrQWdBMmtpQUVFQlRRUkFJQVlnQTBFQmEzRWhCZ3dCQ3lBRElBWkxEUUFnQmlBRGNDRUdDeUFIS0FJQUlBWkJBblJxSUF3MkFnQWdBMEVCYXlFUElBQkJBVXNoRUFOQUlBa29BZ0FpQUVVTkF5QUFLQUlFSVFFQ1FDQVFSUVJBSUFFZ0QzRWhBUXdCQ3lBQklBTkpEUUFnQVNBRGNDRUJDd0pBSUFFZ0JrWU5BQ0FBSVFJZ0FVRUNkQ0lPSUFjb0FnQnFJZzBvQWdCRkJFQWdEU0FKTmdJQUlBRWhCZ3dCQ3dOQUFrQWdBaUlCS0FJQUlnSkZEUUFnQUNnQ0RDSU5LQUlJSUFJb0Fnd2lFU2dDQ0VjTkFDQU5LQUlNSUJFb0FneEdEUUVMQ3lBSklBSTJBZ0FnQVNBSEtBSUFJQTVxS0FJQUtBSUFOZ0lBSUFjb0FnQWdEbW9vQWdBZ0FEWUNBQXdCQ3lBQUlRa01BQXNBQ3hEN0FRQUxRUUFoQUNBSFFRQVFiQ0FFUVFBMkFyQUJEQUVMSUFNaEFBc2dBQ0FBUVFGcklnRnhSUVJBSUFFZ0JYRWhBd3dCQ3lBQUlBVkxCRUFnQlNFRERBRUxJQVVnQUhBaEF3c0NRQUpBSUFjb0FnQWdBMEVDZEdvaUFTZ0NBQ0lDUlFSQUlBb2dCQ2dDdEFFMkFnQWdCQ0FLTmdLMEFTQUJJQXcyQWdBZ0NpZ0NBQ0lCUlEwQ0lBRW9BZ1FoQWdKQUlBQWdBRUVCYXlJQmNVVUVRQ0FCSUFKeElRSU1BUXNnQUNBQ1N3MEFJQUlnQUhBaEFnc2dCeWdDQUNBQ1FRSjBhaUVDREFFTElBb2dBaWdDQURZQ0FBc2dBaUFLTmdJQUN5QUVJQVFvQXJnQlFRRnFOZ0s0QVFzZ0NFRWdhaVFBSUFzTEN3QWdBQ0FCTmdJQUlBQUxOZ0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQVFSL0lBQWdBVUVRYWlBQ1FReHFFTE1EQlVFQUN5RUJJQUpCRUdva0FDQUJDemdCQVg4Q1FDQUJSUTBBSUFFb0Fnd2lBU0FBS0FJRUlBQW9BZ0FpQUd0QkFuVlBEUUFnQUNBQlFRSjBhaWdDQUJEWkVDRUNDeUFDQytVRUFnaC9BbjRqQUVIQUFXc2lBeVFBSUFNZ0FDZ0M0QWdnQUVIa0NHb29BZ0JCakFGc2FrR01BV3NpQkRZQ0FDQUJLQUlBSVFBZ0EwRUFOZ0lJSUFNZ0FEWUNCQ0FESUFRb0FvZ0JRUUZyTmdJTUFrQWdBeERtQ3dSQUlBTVE1Z3NnQWpZQ0FBd0JDeUFFS0FKOElBUW9Bb1FCSWdCQmxnRnNRWllCYWtIa0FHNUpCRUFnQkNBQVFRRjBRUUpxRU9VTEN5QURRYmdCYWlBRUlBRVFtZ2tnQkNnQ2ZDSUpRUUZySVFvZ0FTZ0NBQ0VHSUFRb0FuZ2hDQ0FES0FLOEFTRUhJQU1vQXJnQklRRkJBQ0VBQTBBZ0FDQUpSd1JBSUFnZ0FVRVViR29pQlMwQUNFVUVRQ0FGUVFFNkFBZ2dCU0FDTmdJRUlBVWdCallDQUNBSUlBRkJGR3hxSWdFZ0FEWUNFQ0FCSUFjMkFnd2dCQ0FFS0FLRUFVRUJhallDaEFFZ0JDQUVLQUtJQVVFQmFqWUNpQUVNQXdzZ0J5QUZLQUlNUmdSQUlBWWdCU2dDQUVZTkF3c2dBQ0FGS0FJUVN3UkFJQU5CQVRvQXFBRWdBeUFBTmdLd0FTQURJQUkyQXFRQklBTWdCallDb0FFZ0F5QUhOZ0tzQVNBRElBQTJBaEFnQXlBREtRT29BU0lMTndNSUlBTWdBeWtEb0FFaUREY0RBQ0FESUFVb0FoQTJBckFCSUFNZ0JTa0NDRGNEcUFFZ0F5QUZLUUlBTndPZ0FTQUZJQUEyQWhBZ0JTQU1Od0lBSUFVZ0N6Y0NDQ0FESUFNb0FyQUJRUUZxTmdLd0FTQUVJQUZCQVdvZ0JDZ0NmSEFnQTBHZ0FXb1E1QXNnQkNBRUtBS0VBVUVCYWpZQ2hBRWdCQ0FFS0FLSUFVRUJhallDaUFFTUF3VWdBVUVCYWtFQUlBRWdDa2NiSVFFZ0FFRUJhaUVBREFJTEFBc0xJQU5CaHJVRFFlc0RRUTRnQTBHZ0FXb1FIU0lBRUJjaUFVRVlha0dXTlJBT0dpQUJFQmdnQUJBZUN5QURRY0FCYWlRQUMzb0JBMzhqQUVFUWF5SUJKQUFnQVVFQU9nQU1JQUVnQUVIa0FHbzJBZ2dDZnlBQktBSUlJZ0lvQWdBaUFDQUNLQUlFUVFKMGFpRURBMEJCQUNBQUlBTkdEUUVhSUFBb0FnQWhBaUFBUVFScUlRQWdBaWdDQkVHSTZnOUhEUUFMSUFJTElnQUVmeUFBS0FJa0JVRi9DeUVBSUFGQkVHb2tBQ0FBQ3lZQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkJFQWdBU0FCS0FJQUtBSUVFUU1BQ3lBQUN5MEJBWDhnQUNBQktBSUFJZ0lwQWdBM0FnQWdBRUVJYWlBQ1FRaHFFSXNSSUFBZ0FTZ0NCQ2dDQURZQ1ZBc0xBQ0FBUWFpMUFoRE5EQXZjQVFFRGZ5QUFRYkNLRGpZQ1FDQUFRWWlLRGpZQ0FDQUFRWnlLRGpZQ0NDQUFRY0NLRGlnQ0FDSUJOZ0lBSUFBZ0FVRU1heWdDQUdwQnhJb09LQUlBTmdJQUlBQkJBRFlDQkNBQUlBQW9BZ0JCREdzb0FnQnFJQUJCREdvaUF4RHZCaUFBSWdGQnlJb09LQUlBSWdJMkFnZ2dBa0VNYXlnQ0FDQUJRUWhxYWtITWlnNG9BZ0EyQWdBZ0FVRzhpZzRvQWdBaUFqWUNBQ0FCSUFKQkRHc29BZ0JxUWRDS0RpZ0NBRFlDQUNBQlFkU0tEaWdDQURZQ0NDQUJRWWlLRGpZQ0FDQUFRWnlLRGpZQ0NDQUFRYkNLRGpZQ1FDQURRUmdRdUJFZ0FRc1JBQ0FBSUFFZ0FDZ0NBQ2dDTEJFQkFBdkxDUUlFZndWK0l3QkI4QUJySWdZa0FDQUVRdi8vLy8vLy8vLy8vd0NESVFrQ1FBSkFJQUZRSWdVZ0FrTC8vLy8vLy8vLy8vOEFneUlLUW9DQWdJQ0FnTUQvL3dCOVFvQ0FnSUNBZ01DQWdIOVVJQXBRRzBVRVFDQURRZ0JTSUFsQ2dJQ0FnSUNBd1AvL0FIMGlDMEtBZ0lDQWdJREFnSUIvVmlBTFFvQ0FnSUNBZ01DQWdIOVJHdzBCQ3lBRklBcENnSUNBZ0lDQXdQLy9BRlFnQ2tLQWdJQ0FnSURBLy84QVVSdEZCRUFnQWtLQWdJQ0FnSUFnaENFRUlBRWhBd3dDQ3lBRFVDQUpRb0NBZ0lDQWdNRC8vd0JVSUFsQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFSQ2dJQ0FnSUNBSUlRaEJBd0NDeUFCSUFwQ2dJQ0FnSUNBd1AvL0FJV0VVQVJBUW9DQWdJQ0FnT0QvL3dBZ0FpQUJJQU9GSUFJZ0JJVkNnSUNBZ0lDQWdJQ0FmNFdFVUNJRkd5RUVRZ0FnQVNBRkd5RUREQUlMSUFNZ0NVS0FnSUNBZ0lEQS8vOEFoWVJRRFFFZ0FTQUtoRkFFUUNBRElBbUVRZ0JTRFFJZ0FTQURneUVESUFJZ0JJTWhCQXdDQ3lBRElBbUVVRVVOQUNBQklRTWdBaUVFREFFTElBTWdBU0FCSUFOVUlBa2dDbFlnQ1NBS1VSc2lDQnNoQ2lBRUlBSWdDQnNpQzBMLy8vLy8vLzgvZ3lFSklBSWdCQ0FJR3lJQ1FqQ0lwMEgvL3dGeElRY2dDMEl3aUtkQi8vOEJjU0lGUlFSQUlBWkI0QUJxSUFvZ0NTQUtJQWtnQ1ZBaUJSdDVJQVZCQm5TdGZLY2lCVUVQYXhETUFpQUdLUU5vSVFrZ0Jpa0RZQ0VLUVJBZ0JXc2hCUXNnQVNBRElBZ2JJUU1nQWtMLy8vLy8vLzgvZ3lFRUlBZEZCRUFnQmtIUUFHb2dBeUFFSUFNZ0JDQUVVQ0lIRzNrZ0IwRUdkSzE4cHlJSFFROXJFTXdDUVJBZ0Iyc2hCeUFHS1FOWUlRUWdCaWtEVUNFREN5QUVRZ09HSUFOQ1BZaUVRb0NBZ0lDQWdJQUVoQ0VCSUFsQ0E0WWdDa0k5aUlRaEJDQUNJQXVGSVEwQ2ZpQURRZ09HSWdJZ0JTQUhSZzBBR2lBRklBZHJJZ2RCL3dCTEJFQkNBQ0VCUWdFTUFRc2dCa0ZBYXlBQ0lBRkJnQUVnQjJzUXpBSWdCa0V3YWlBQ0lBRWdCeENjQmlBR0tRTTRJUUVnQmlrRE1DQUdLUU5BSUFZcEEwaUVRZ0JTcllRTElRa2dCRUtBZ0lDQWdJQ0FCSVFoRENBS1FnT0dJUW9DUUNBTlFnQlRCRUJDQUNFRFFnQWhCQ0FKSUFxRklBRWdESVdFVUEwQ0lBb2dDWDBoQWlBTUlBRjlJQWtnQ2xhdGZTSUVRdi8vLy8vLy8vOERWZzBCSUFaQklHb2dBaUFFSUFJZ0JDQUVVQ0lIRzNrZ0IwRUdkSzE4cDBFTWF5SUhFTXdDSUFVZ0Iyc2hCU0FHS1FNb0lRUWdCaWtESUNFQ0RBRUxJQWtnQ253aUFpQUpWSzBnQVNBTWZId2lCRUtBZ0lDQWdJQ0FDSU5RRFFBZ0NVSUJneUFFUWorR0lBSkNBWWlFaENFQ0lBVkJBV29oQlNBRVFnR0lJUVFMSUF0Q2dJQ0FnSUNBZ0lDQWY0TWhBU0FGUWYvL0FVNEVRQ0FCUW9DQWdJQ0FnTUQvL3dDRUlRUkNBQ0VEREFFTFFRQWhCd0pBSUFWQkFFb0VRQ0FGSVFjTUFRc2dCa0VRYWlBQ0lBUWdCVUgvQUdvUXpBSWdCaUFDSUFSQkFTQUZheENjQmlBR0tRTUFJQVlwQXhBZ0Jpa0RHSVJDQUZLdGhDRUNJQVlwQXdnaEJBc2dBcWRCQjNFaUJVRUVTNjBnQkVJOWhpQUNRZ09JaENJQ2ZDSURJQUpVclNBRVFnT0lRdi8vLy8vLy96K0RJQWV0UWpDR2hDQUJoSHdoQkFKQUlBVkJCRVlFUUNBRUlBTkNBWU1pQVNBRGZDSURJQUZVclh3aEJBd0JDeUFGUlEwQkN3c2dBQ0FETndNQUlBQWdCRGNEQ0NBR1FmQUFhaVFBQ3hvQUlBQWdBU0FDUVkvREJVR2hLVUdiMmdGQmhkMENFSVFUQ3pnQkFYOGpBRUVnYXlJQ0pBQWdBaUFCTmdJUUlBSkJHR29nQUNBQklBSkJFR29ROEJnZ0FpZ0NHQ0VBSUFKQklHb2tBQ0FBUVF4cUN6NEJBWDhqQUVFZ2F5SURKQUFnQXlBQk5nSU1JQU5Cc1BNU05nSUlJQU1nQTBFSWFpSUJOZ0lZSUFBZ0FTQUNFUDRDR2lBQkVCWWdBMEVnYWlRQUMwTUJBWDhqQUVFUWF5SUNKQUFnQWlBQU5nSU1JQUlnQVRvQUN5QUNLQUlNSWdBZ0Fpd0FDeUFBS0FJQUtBSWNFUUVBUVJoMFFSaDFJUUFnQWtFUWFpUUFJQUFMTHdFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2dBaWdDQ0JDT0VTQUNRUkJxSkFBTEpBRUJmeU1BUVJCcklnSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDQUNLQUlJTmdJQUN3b0FJQUJCc0xRU0VFZ0xRQUVCZnlBQVFhVGhFallDQUFOQUlBQW9BZ2dpQVMwQURDQUJSWEpGQkVBZ0FCRHpDaUlCRVBJS0lBRWdBU2dDQUNnQ0JCRURBQXdCQ3dzZ0FCRGFEZ3VyQlFJS2Z3SjlJd0JCSUdzaUJ5UUFJQWNnQVRZQ0VDQUhRUkJxSVFrakFFRVFheUlGSkFBZ0FSRDBBeUVESUFjQ2Z3SkFJQUFvQWdRaUFrVU5BQ0FBS0FJQUFuOGdBa0VCYXlBRGNTQUNhU0lJUVFGTkRRQWFJQU1nQWlBRFN3MEFHaUFESUFKd0N5SUdRUUowYWlnQ0FDSUVSUTBBSUFKQkFXc2hDaUFCS0FJQUlRc2dDRUVCU3lFSUEwQWdCQ2dDQUNJRVJRMEJJQU1nQkNnQ0JDSUJSd1JBQWtBZ0NFVUVRQ0FCSUFweElRRU1BUXNnQVNBQ1NRMEFJQUVnQW5BaEFRc2dBU0FHUncwQ0N5QUVLQUlJSUF0SERRQUxRUUFNQVF0QkZCQVZJUUVnQlNBQVFRaHFOZ0lFSUFVZ0FUWUNBQ0FCUVFocUlnUWdDU2dDQUNnQ0FEWUNBQ0FFUVFScUVPZ1lJQVZCQVRvQUNDQUJRUUEyQWdBZ0FTQUROZ0lFQWtCQkFDQUNJQUFvQWd4QkFXcXpJZ3dnQUNvQ0VDSU5JQUt6bEY0YkRRQWdBQ0FDSUFKQkFXdHhRUUJISUFKQkEwbHlJQUpCQVhSeUlnRUNmeUFNSUEyVmpTSU1Rd0FBZ0U5ZElBeERBQUFBQUdCeEJFQWdES2tNQVF0QkFBc2lCaUFCSUFaTEd4RERBU0FBS0FJRUlnSWdBa0VCYTNGRkJFQWdBa0VCYXlBRGNTRUdEQUVMSUFJZ0Ewc0VRQ0FESVFZTUFRc2dBeUFDY0NFR0N3SkFJQVpCQW5RaUF5QUFLQUlBYWlnQ0FDSUJSUVJBSUFVb0FnQWdBQ2dDQ0RZQ0FDQUFJQVVvQWdBMkFnZ2dBQ2dDQUNBRGFpQUFRUWhxTmdJQUlBVW9BZ0FpQVNnQ0FDSURSUTBCSUFNb0FnUWhCQUpBSUFJZ0FrRUJheUlEY1VVRVFDQURJQVJ4SVFRTUFRc2dBaUFFU3cwQUlBUWdBbkFoQkFzZ0FDZ0NBQ0FFUVFKMGFpQUJOZ0lBREFFTElBVW9BZ0FnQVNnQ0FEWUNBQ0FCSUFVb0FnQTJBZ0FMSUFVb0FnQWhCQ0FGUVFBMkFnQWdBQ0FBS0FJTVFRRnFOZ0lNSUFVUWdBbEJBUXM2QUJ3Z0J5QUVOZ0lZSUFWQkVHb2tBQ0FIS0FJWUlRQWdCMEVnYWlRQUlBQkJER29MVWdFQmZ5QUFLQUtFQWlJQ0lBQW9Bb2dDVHdSQUlBQWdBQ2dDaUFJaUFrRUJkRUVDSUFJYkVQWUtJQUFvQW9RQ0lRSUxJQUFnQWtFQmFqWUNoQUlnQUNnQ2dBSWdBa0VDZEdvZ0FTZ0NBRFlDQUF2RkNBRUpmeU1BUWNBQ2F5SURKQUFnQXlBQk5nSzhBaUFBS0FJQUlRY2dBMEtBZ0lDQWdBRTNBclFDSUFNZ0EwR1FBbW9pQmpZQ3NBSWdCaUFDS0FJRUlnUVFPU0FEUW9DQWdJQ0FBVGNDaEFJZ0F5QURRZUFCYWlJR05nS0FBaUFHSUFRUU9TQUNLQUlBSWdJZ0JFRURkR29oQ3lBRFFiQUNhaUVGQTM4Z0FpQUxSZ1IvUVFBaENDQUFLQUlFRUhvRVFDQUhLQUlBSUFBb0FnUVFla0VBRUlVQklnSWdCeWdDQ0NBQ0tBSUFLQUlJRVFFQUlRZ0xJQWNvQWdnaEJpQURRUUEyQXRBQklBTkNBRGNEeUFFZ0EwSUFOd1BBQVNBSEtBSUlJZ0lRSENBRFFZZ0JhaUlKSUFOQitBQnFRWlM5QlJBVUlnb2dBUkRKQXhBdElBTWdBeWdDakFFZ0F5MEFrd0VpQVNBQlFSaDBRUmgxUVFCSUlnRWJOZ0tjQVNBRElBTW9Bb2dCSUFrZ0FSczJBcGdCSUFNZ0F5a0RtQUUzQXhBZ0EwR2dBV29pQ3lBQ1FZZ0NhaUFEUVJCcUVKOEVJQU1nQlRZQ2NDQURJQU1vQXJBQ0lBTkJrQUpxUnpvQWRDQURRUUEyQW13Z0J5Z0NDQ0lFRUJ3Z0F5QUhLQUlJSWdFb0FnZzJBakJCQVNFQ0lBRWdBU2dDREVFQmFpSUJOZ0lNSUFNZ0FUWUNLQ0FFUVl3QmFpSUVJQVFRM3dzZ0F5Z0NNQ0FES0FJb0lBTW9BcndDRU1rYUlnRVFLQ0FFSUFRb0FoaEJBV28yQWhnZ0F5QUJOZ0k0SUFjb0FnZ2hCQ01BUVJCcklnVWtBQ0FGUVFBMkFnd2dCQkFjSUFVZ0JDZ0NDRFlDQ0NBRUlBUW9BZ3hCQVdvaUFUWUNEQ0FGSUFFMkFnQWdCRUdNQVdvZ0JVRUlhaUFGSUFWQkRHb1F0QmtoQVNBRlFSQnFKQUFnQTBFQ05nSkVJQU1nQVRZQ1BDQURJQU5CT0dvMkFrQWdBeUFES1FOQU53TUlJQU1nQTBISUFHb2dBMEVJYWhDMUFpSUVRUWhxTmdKZ0lBUW9BZ2doQVNBRFFRQTZBQ1FnQTBIQW5DQTJBaUFnQXlBQklBUkhPZ0JrSXdCQkVHc2lCU1FBSUFVZ0NEWUNDQ0FGUVFBMkFnUWdCU0FHSUFzUTh3STJBZ0FnQmlBRFFjQUJhaUFGSUFOQjhBQnFJQVZCQ0dvZ0JVRUVhaUFEUWVBQWFpQURRU0JxRUw0S0lRRWdCaER5QWlBQkVQNEtJQVZCRUdva0FDQUVFS29CSUFrUUR4b2dDaEFQR2lBSEtBSUlJUVFnQVNnQ0pFRWthaUVCSXdCQkVHc2lCaVFBSUFZZ0JDQUJFTm9FTmdJTUlBUWdCRUhZQW1vZ0JrRU1haUFEUWVBQmFoQ1ZCQ0VCSUFaQkVHb2tBQUpBSUFBb0FnUVFlZ1JBSUFOQm9BRnFJQWNvQWdBZ0FDZ0NCQkI2UVFBUWhRRWdBUkJwSVFFZ0J5QUFLQUlFSUFOQkdHb2dBUkJiRUpVRklRSU1BUXNnQnlBSEtBSUlJQUVRbndzUXlRRWFDeUFEUWVBQmFoQWpJQU5Ca0FKcUVDTWdBMEhBQW1va0FDQUNCU0FIS0FJSUlRUWdBMEhBQVdvaUNTQUlFRjhnQTBHZ0FXb2lDa0hEdndJZ0NSQTFJQUlvQWdBaUJpQUhLQUlJSUFZb0FnQW9BZ2dSQVFBaEJpQURRUUE2QU53QklBTkJ3SndnTmdMWUFTQURJQVFnQ2lBR0lBTkIyQUZxRU1RWk5nSklJQU5Ca0FKcUlBTkJ5QUJxRUNRZ0NoQVBHaUFKRUE4YUlBTkI0QUZxSUFKQkJHb1FKQ0FDUVFocUlRSWdDRUVCYWlFSURBRUxDd3ZWRUFJTmZ3SjlJd0JCd0FGcklnTWtBQ0FESUFJMkFyd0JBa0FnQVNnQ0hDZ0NBQzBBQUVVRVFDQUFFR2NhREFFTEFrQUNRQUpBQWtBQ1FBSkFBa0FnQVNBQ0VPMElRUUZyRGdZQUFRTUNCQVVHQ3lBQktBSWNJZ0VvQWdCQkFEb0FBQ0FCUWZteERCQVpJQU5CdkFGcUVDOGFJQUFRWnhvTUJnc2dBQ0FCSUFJUWxBSkJKR29RV3lnQ0FDZ0NCRUdRekJKR0RRVWdBMEVJYWtHNW9RVkI4aE5CQnlBRFFhZ0JhaEFkSWdBUUZ5SUJRUmhxUVlMdENCQU9HaUFCRUJnZ0FCQWVEQVVMSUFFb0FnUVFsZ1VoQWlBRFFRQTJBaGdnQTBJQU53TVFJQU5DQURjRENDQURRb0NBZ0lDQWdJRDRQemNEcUFFZ0EwRUJOZ0lFSUFBZ0FpQUJLQUlJSUFOQkNHb2dBMEdvQVdvZ0EwRUVhaEQ2Q2hCcEdnd0VDeUFCS0FJY0lnRW9BZ0JCQURvQUFDQUJRYjJ6REJBWklBTkJ2QUZxRUM4YUlBQVFaeG9NQXdzZ0FTZ0NIQ0lCS0FJQVFRQTZBQUFnQVVIOXNnd1FHU0FEUWJ3QmFoQXZHaUFBRUdjYURBSUxJQU5CcUFGcUlBRW9BaUFnQVNnQ0xCQ1RBaEJVSVFJZ0FTZ0NCQkR0QXlFRUlBRW9BZ2doQVNBRFFRQTJBaGdnQTBJQU53TVFJQU5DQURjRENDQUFJQVFnQVNBRFFRaHFJQUlRNUFVUWFSb2dBaEFQR2d3QkN5QUJRY0FHYWlBRFFid0JhaERzQVNJRUJFQWdBMEdvQVdvZ0FTZ0NJQ0FES0FLOEFSQ1RBaEJVSVFJZ0JDZ0NEQ0VFSUFFb0FnZ2hBU0FEUVFBMkFoZ2dBMElBTndNUUlBTkNBRGNEQ0NBQUlBUWdBU0FEUVFocUlBSVE1QVVRYVJvZ0FoQVBHZ3dCQ3lBQktBSUFJUVFnQXlnQ3ZBRWhCU01BUVJCcklnSWtBQ0FDSUFVMkFnd2dCRUdBQjJvZ0FrRU1haERzQVNFRUlBSkJFR29rQUNBRUJFQWdBMEdvQVdvZ0FTZ0NJQ0FES0FLOEFSQ1RBaEJVSVFJZ0FTZ0NBQ0FCS0FJUUlBTW9BcndCRUpRQkVIcEJBQkNGQVNFRUlBRW9BZ2doQVNBRFFRQTJBaGdnQTBJQU53TVFJQU5DQURjRENDQUFJQVFnQVNBRFFRaHFJQUlRNUFVUWFSb2dBaEFQR2d3QkN5QUJRZFFHYWlJRUlBTkJ2QUZxRUtrQ0JFQWdBQ0VQSXdCQklHc2lDQ1FBSUFnZ0EwRzhBV29pQ1RZQ0VFRUFJUUFqQUVFUWF5SUdKQUFnQ1NnQ0FDRUJJQWdDZndKQUlBUW9BZ1FpQWtVTkFDQUVLQUlBQW44Z0FrRUJheUFCY1NBQ2FTSUhRUUZORFFBYUlBRWdBU0FDU1EwQUdpQUJJQUp3Q3lJQVFRSjBhaWdDQUNJRlJRMEFJQUpCQVdzaENpQUhRUUZMSVFzRFFDQUZLQUlBSWdWRkRRRWdBU0FGS0FJRUlnZEhCRUFDUUNBTFJRUkFJQWNnQ25FaEJ3d0JDeUFDSUFkTERRQWdCeUFDY0NFSEN5QUFJQWRIRFFJTElBVW9BZ2dnQVVjTkFBdEJBQXdCQzBFVUVCVWhCU0FHSUFSQkNHbzJBZ1FnQmlBRk5nSUFJQVZCQ0dvaUJ5QUlLQUlRS0FJQU5nSUFJQWRCQkdvUVp4b2dCa0VCT2dBSUlBVkJBRFlDQUNBRklBRTJBZ1FDUUVFQUlBSWdCQ2dDREVFQmFyTWlFQ0FFS2dJUUloRWdBck9VWGhzTkFDQUVJQUlnQWtFQmEzRkJBRWNnQWtFRFNYSWdBa0VCZEhJaUFBSi9JQkFnRVpXTkloQkRBQUNBVDEwZ0VFTUFBQUFBWUhFRVFDQVFxUXdCQzBFQUN5SUNJQUFnQWtzYkVNTUJJQVFvQWdRaUFpQUNRUUZyY1VVRVFDQUNRUUZySUFGeElRQU1BUXNnQVNBQ1NRUkFJQUVoQUF3QkN5QUJJQUp3SVFBTEFrQWdBRUVDZENJQklBUW9BZ0JxS0FJQUlnQkZCRUFnQmlnQ0FDQUVLQUlJTmdJQUlBUWdCaWdDQURZQ0NDQUVLQUlBSUFGcUlBUkJDR28yQWdBZ0JpZ0NBQ0lBS0FJQUlnRkZEUUVnQVNnQ0JDRUZBa0FnQWlBQ1FRRnJJZ0Z4UlFSQUlBRWdCWEVoQlF3QkN5QUNJQVZMRFFBZ0JTQUNjQ0VGQ3lBRUtBSUFJQVZCQW5ScUlBQTJBZ0FNQVFzZ0JpZ0NBQ0FBS0FJQU5nSUFJQUFnQmlnQ0FEWUNBQXNnQmlnQ0FDRUZJQVpCQURZQ0FDQUVJQVFvQWd4QkFXbzJBZ3dnQmhDTEFVRUJDem9BSENBSUlBVTJBaGdnQmtFUWFpUUFJQWdvQWhnaEFDQUlRU0JxSkFBZ0R5QUFRUXhxRUZzYUlBUWdDUkRYQnd3QkN5QUJLQUlVSUFNb0Fyd0JFSklGQkVBZ0FDQUJLQUlBSUFNb0Fyd0JFTnNGREFFTElBRW9BaEFnQXlnQ3ZBRVFsQUVpQlVVRVFDQUJLQUljSWdFb0FnQkJBRG9BQUNBQlFjakRDeEFaSUFOQnZBRnFFQzlCaU0wQ0VCa2FJQUFRWnhvTUFRc0NRQ0FGS0FJVUlnSkJBVWNFUUNBQ1FUdEhEUUVnQTBHb0FXb2dBU2dDSUNBREtBSzhBUkNUQWhCVUlRSWdBU0FCS0FJQUlBVVFla0VCRUlVQklBTW9BcndCRUl3UElRUWdBU2dDQ0NFQklBTkJBRFlDR0NBRFFnQTNBeEFnQTBJQU53TUlJQUFnQkNBQklBTkJDR29nQWhEa0JSQnBHaUFDRUE4YURBSUxJQUFnQVNnQ0FDSUFJQUFnQlJCNlFRQVFoUUVROVFvTUFRc2dBeWdDdkFFaEJDQUJLQUlNSWdJUXdBWWdCQkNVQVNFRUl3QkJFR3NpQ1NRQUlBa2dCRFlDRENBQ0xRQnNRUUp4UlFSQUl3QkJJR3NpQkNRQUlBSkJ4QUJxRUk0SklBSW9BaGdpQmlnQ2tBWWhEQ0FHS0FLTUJpRUlBMEFnQ0NBTVJ3UkFJQWdvQWdBaUJpZ0NXQ0VOSUFZb0FsUWhCd05BSUFjZ0RVWUVRQ0FJUVFScUlRZ01Bd1VnQkNBSEtBSUFJZzQyQWhBZ0JDQUNOZ0lNSUFSQnNOZ1NOZ0lJSUFRZ0JFRUlhaUlLTmdJWUl3QkJJR3NpQmlRQUlBWWdDallDRENBR1FZellFallDQ0NBR0lBWkJDR29pQ3pZQ0dDQU9JQXRCQUJDNkdSb2dDeEFXSUFaQklHb2tBQ0FIUVFScUlRY2dDaEFXREFFTEFBc0FDd3NnQWlBQ0tBSnNRUUp5TmdKc0lBUkJJR29rQUFzZ0FrSEVBR29nQ1VFTWFoRDFBeUlDQkg4Z0FpZ0NEQVZCQUFzaEFpQUpRUkJxSkFBQ1FDQUNSUTBBSUFFZ0FoRHFBeEI4SWdKRkRRQWdBaWdDQ0VGL1J3MEFJQUFnQVNnQ0FDSUFJQUFnQlJCNlFRQVFoUUVROVFvTUFRc2dBU2dDSENJQktBSUFRUUE2QUFBZ0FVR0F3QXNRR1NBRFFid0JhaEF2UWR2NERCQVpJUUlnQTBFSWFpSUJJQVVRV0NBQ0lBRVFUUm9nQVJBUEdpQUFFR2NhQ3lBRFFjQUJhaVFBQ3hrQUlBQkJnSUNBZ0FSUEJFQVErd0VBQ3lBQVFRSjBFQlVMcmdFQ0EzOEJmaU1BUWNBQmF5SURKQUFnQWlnQ0JFVUVRQ0FEUVJCcVFadTFCVUVlUVFvZ0EwR3dBV29RSFNJRUVCY2lCVUVZYWtIQTRnZ1FEaG9nQlJBWUlBUVFIZ3NnQXlBQlFRUnFOZ0lRSUFJcEFnQWhCaUFEUVFBMkFod2dBeUFHTndJVUlBTWdBU2dDRkVFQmF6WUNJQUpBSUFOQkVHb1E2UnNFUUNBQUlBTkJFR29RNlJzUVZob01BUXNnQXlBR053TUFJQU1nQmpjRENDQUFJQUVnQXhEdUR3c2dBMEhBQVdva0FBc1JBQ0FBTFFBZ0JFQWdBRUVJYWhBV0N3c2FBQ0FBSUFBb0FnUVEydzhnQUNnQ0FDSUFCRUFnQUJBZkN3c0hBQ0FBRUxjQ0N5Y0JBWDhnQUNnQ1RDSUJRWDlHQkVBZ0FDQUFRU0FRbXhJaUFUWUNUQXNnQVVFWWRFRVlkUXZBRFFFR2Z5TUFRWUFDYXlJQ0pBQWdBaUFCTmdKMElBSWdBRFlDYUNBQ0lBSkI5QUJxTmdKc0FrQUNRQ0FCUlFSQUlBSkI2QUJxRUtJUkRBRUxJQUVvQWdRaUEwR3dxUkpHQkVBZ0FpQUFFTlFDTmdMMEFTQUNRUU0yQXZBQklBSkJBallDakFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FrSENrUUkyQXV3QklBSWdBaWdDZERZQzZBRWdBaUFDUWVBQmFqWUNpQUVnQWlBQ0tRT0lBVGNEQ0NBQVFRVWdBa0VJYWhDWUFpRUJEQUlMSUFOQjBLZ1NSZ1JBSUFJZ0FCRFVBallDOUFFZ0FrRUROZ0x3QVNBQ1FRSTJBb3dCSUFKQkJUWUM1QUVnQWtIUzl3QTJBdUFCSUFKQndwRUNOZ0xzQVNBQ0lBSW9BblEyQXVnQklBSWdBa0hnQVdvMkFvZ0JJQUlnQWlrRGlBRTNBeEFnQUVFRUlBSkJFR29RbUFJaEFRd0NDeUFEUWZDZkVrWUVRQ0FBRU9RQklRUWdBQkQxQlNFR0lBQVExQUloQXlBQ0lBQVFwd2syQXZRQklBSkJBellDOEFFZ0FrRUNOZ0w4QVNBQ1FRVTJBdVFCSUFKQjB2Y0FOZ0xnQVNBQ1FjS1JBallDN0FFZ0FpQUNLQUowTmdMb0FTQUNJQUpCNEFGcUlnVTJBdmdCSUFJZ0Fpa0QrQUUzQXpBZ0FFRURJQUpCTUdvUW1BSWhBU0FDSUFNMkF2UUJJQUpCQXpZQzhBRWdBa0VDTmdLc0FTQUNJQVUyQXFnQklBSWdBaWtEcUFFM0F5Z2dBa0hDa1FJMkF1d0JJQUlnQkRZQzZBRWdBa0VGTmdMa0FTQUNRZEwzQURZQzRBRWdBaUFBUVFVZ0FrRW9haENZQWpZQ3NBRWdBaUFETmdLY0FTQUNRUU0yQXBnQklBSkJBallDcEFFZ0FrSENrUUkyQXBRQklBSWdCallDa0FFZ0FrRUZOZ0tNQVNBQ1FkTDNBRFlDaUFFZ0FpQUNRWWdCYWpZQ29BRWdBaUFDS1FPZ0FUY0RJQ0FBUVFRZ0FrRWdhaENZQWlFQUlBSkJBallDdkFFZ0FpQUFOZ0swQVNBQ0lBSkJzQUZxTmdLNEFTQUNJQUlwQTdnQk53TVlJQUlnQWtIQUFXb2dBa0VZYWhDMUFpSUFRUWhxTmdMWUFTQUNJQUFnQUNnQ0NFYzZBTndCSUFGQmhBRnFJQUpCMkFGcUVNVUpJQUFRcWdFTUFnc2dBeENSQXdSQUlBSWdBU2dDSERZQ2hBRWdBU2dDR0NFQklBSWdBRFlDZUNBQ0lBSkI5QUJxTmdKOElBRkZCRUFnQWtINEFHb1FvUkVNQWdzZ0FTZ0NCQ0lCUWJDcEVrWUVRQ0FDSUFBUTFBSTJBdUFCSUFBZ0FrSGdBV29pQkNBQ1FZUUJhaENmQWlFQklBSW9Bb1FCSVFNZ0FpQUJOZ0wwQVNBQ1FRTTJBdkFCSUFKQkJUWUM1QUVnQWtIUzl3QTJBdUFCSUFKQndwRUNOZ0xzQVNBQ0lBSW9BblEyQXVnQklBSWdCRFlDaUFFZ0FrRUNOZ0tNQVNBQ0lBSXBBNGdCTndNNElBQWdBMEVDZEVHTS9ReHFLQUlBSUFKQk9Hb1FtQUloQVF3REN5QUJRZENvRWtZRVFDQUNJQUFRMUFJMkF1QUJJQUFnQWtIZ0FXb2lCQ0FDUVlRQmFoQ2ZBaUVCSUFJb0FvUUJJUU1nQWlBQk5nTDBBU0FDUVFNMkF2QUJJQUpCQlRZQzVBRWdBa0hTOXdBMkF1QUJJQUpCd3BFQ05nTHNBU0FDSUFJb0FuUTJBdWdCSUFJZ0JEWUNpQUVnQWtFQ05nS01BU0FDSUFJcEE0Z0JOd05BSUFBZ0EwRUNkRUdZL1F4cUtBSUFJQUpCUUdzUW1BSWhBUXdEQ3lBQlFmQ2ZFa1lFUUNBQ0lBQVE1QUUyQXVBQklBQWdBa0hnQVdvaUJ5QUNRWVFCYWhDZkFpRUVJQUlnQUJEMUJUWUM0QUVnQUNBQ1FlQUJhaUFDUVlRQmFoQ2ZBaUVHSUFJZ0FCRFVBallDNEFFZ0FDQUNRZUFCYWlBQ1FZUUJhaENmQWlFRElBSWdBQkNuQ1RZQzRBRWdBQ0FDUWVBQmFpQUNRWVFCYWhDZkFpRUJJQUlvQW9RQklRVWdBaUFCTmdMMEFTQUNRUU0yQXZBQklBSkJBallDL0FFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FrSENrUUkyQXV3QklBSWdBaWdDZERZQzZBRWdBaUFITmdMNEFTQUNJQUlwQS9nQk53TmdJQUFnQlVFQ2RFR2svUXhxS0FJQUlBSkI0QUJxRUpnQ0lRRWdBaWdDaEFFaEJTQUNJQU0yQXZRQklBSkJBellDOEFFZ0FrRUNOZ0tzQVNBQ0lBYzJBcWdCSUFJZ0Fpa0RxQUUzQTFnZ0FrSENrUUkyQXV3QklBSWdCRFlDNkFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FpQUFJQVZCQW5SQmpQME1haWdDQUNBQ1FkZ0FhaENZQWpZQ3NBRWdBaWdDaEFFaEJDQUNJQU0yQXB3QklBSkJBellDbUFFZ0FrRUNOZ0trQVNBQ1FjS1JBallDbEFFZ0FpQUdOZ0tRQVNBQ1FRVTJBb3dCSUFKQjB2Y0FOZ0tJQVNBQ0lBSkJpQUZxTmdLZ0FTQUNJQUlwQTZBQk53TlFJQUFnQkVFQ2RFR1kvUXhxS0FJQUlBSkIwQUJxRUpnQ0lRQWdBa0VDTmdLOEFTQUNJQUEyQXJRQklBSWdBa0d3QVdvMkFyZ0JJQUlnQWlrRHVBRTNBMGdnQWlBQ1FjQUJhaUFDUWNnQWFoQzFBaUlBUVFocU5nTFlBU0FDSUFBZ0FDZ0NDRWM2QU53QklBRkJoQUZxSUFKQjJBRnFFTVVKSUFBUXFnRU1Bd3NnQWtINEFHb1FvUkVNQVFzZ0FrSG9BR29Rb2hFTFFRQWhBUXNnQWtHQUFtb2tBQ0FCQzV3TUFRVi9Jd0JCZ0FKcklnSWtBQ0FDSUFFMkFuUWdBaUFBTmdKb0lBSWdBa0gwQUdvMkFtd0NRQUpBSUFGRkJFQWdBa0hvQUdvUXBCRU1BUXNnQVNnQ0JDSURRYkNwRWtZRVFDQUNJQUUyQXZRQklBSkJCVFlDOEFFZ0FrRUNOZ0tNQVNBQ1FaKzJCRFlDN0FFZ0FpQUJOZ0xvQVNBQ1FRVTJBdVFCSUFKQjB2Y0FOZ0xnQVNBQ0lBSkI0QUZxTmdLSUFTQUNJQUlwQTRnQk53TUlJQUJCRVNBQ1FRaHFFSmdDSVFFTUFnc2dBMEhRcUJKR0JFQWdBaUFCTmdMMEFTQUNRUVUyQXZBQklBSkJBallDakFFZ0FrR2Z0Z1EyQXV3QklBSWdBVFlDNkFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FpQUNRZUFCYWpZQ2lBRWdBaUFDS1FPSUFUY0RFQ0FBUVJBZ0FrRVFhaENZQWlFQkRBSUxJQU5COEo4U1JnUkFJQUlnQVRZQzlBRWdBa0VGTmdMd0FTQUNRUUkyQXZ3QklBSWdBa0hnQVdvaUJUWUMrQUVnQWlBQ0tRUDRBVGNETUNBQ1FaKzJCRFlDN0FFZ0FpQUJOZ0xvQVNBQ1FRVTJBdVFCSUFKQjB2Y0FOZ0xnQVNBQVFROGdBa0V3YWhDWUFpRUJJQUFRNUFFaEF5QUFFUFVGSVFRZ0FpQUROZ0wwQVNBQ1FRVTJBdkFCSUFKQkFqWUNyQUVnQWlBRk5nS29BU0FDSUFJcEE2Z0JOd01vSUFKQm43WUVOZ0xzQVNBQ0lBTTJBdWdCSUFKQkJUWUM1QUVnQWtIUzl3QTJBdUFCSUFJZ0FFRVJJQUpCS0dvUW1BSTJBckFCSUFJZ0JEWUNuQUVnQWtFRk5nS1lBU0FDUVFJMkFxUUJJQUpCbjdZRU5nS1VBU0FDSUFRMkFwQUJJQUpCQlRZQ2pBRWdBa0hTOXdBMkFvZ0JJQUlnQWtHSUFXbzJBcUFCSUFJZ0Fpa0RvQUUzQXlBZ0FFRVFJQUpCSUdvUW1BSWhBQ0FDUVFJMkFyd0JJQUlnQURZQ3RBRWdBaUFDUWJBQmFqWUN1QUVnQWlBQ0tRTzRBVGNER0NBQ0lBSkJ3QUZxSUFKQkdHb1F0UUlpQUVFSWFqWUMyQUVnQWlBQUlBQW9BZ2hIT2dEY0FTQUJRWVFCYWlBQ1FkZ0JhaERGQ1NBQUVLb0JEQUlMSUFNUWtRTUVRQ0FDSUFFb0Fod2lBellDaEFFZ0FTZ0NHQ0VFSUFJZ0FEWUNlQ0FDSUFKQjlBQnFOZ0o4SUFSRkJFQWdBa0g0QUdvUW94RU1BZ3NnQkNnQ0JDSUVRYkNwRWtZRVFDQUNJQUUyQXZRQklBSkJCVFlDOEFFZ0FrR2Z0Z1EyQXV3QklBSWdBVFlDNkFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FpQUNRZUFCYWpZQ2lBRWdBa0VDTmdLTUFTQUNJQUlwQTRnQk53TTRJQUFnQTBFQ2RFSG8vQXhxS0FJQUlBSkJPR29RbUFJaEFRd0RDeUFFUWRDb0VrWUVRQ0FDSUFFMkF2UUJJQUpCQlRZQzhBRWdBa0dmdGdRMkF1d0JJQUlnQVRZQzZBRWdBa0VGTmdMa0FTQUNRZEwzQURZQzRBRWdBaUFDUWVBQmFqWUNpQUVnQWtFQ05nS01BU0FDSUFJcEE0Z0JOd05BSUFBZ0EwRUNkRUgwL0F4cUtBSUFJQUpCUUdzUW1BSWhBUXdEQ3lBRVFmQ2ZFa1lFUUNBQ0lBQVE1QUUyQXVBQklBQWdBa0hnQVdvaUJpQUNRWVFCYWhDZkFpRURJQUlnQUJEMUJUWUM0QUVnQUNBQ1FlQUJhaUFDUVlRQmFoQ2ZBaUVFSUFJb0FvUUJJUVVnQWlBQk5nTDBBU0FDUVFVMkF2QUJJQUpCQWpZQy9BRWdBa0dmdGdRMkF1d0JJQUlnQVRZQzZBRWdBa0VGTmdMa0FTQUNRZEwzQURZQzRBRWdBaUFHTmdMNEFTQUNJQUlwQS9nQk53TmdJQUFnQlVFQ2RFR0EvUXhxS0FJQUlBSkI0QUJxRUpnQ0lRRWdBaWdDaEFFaEJTQUNJQU0yQXZRQklBSkJCVFlDOEFFZ0FrRUNOZ0tzQVNBQ0lBWTJBcWdCSUFJZ0Fpa0RxQUUzQTFnZ0FrR2Z0Z1EyQXV3QklBSWdBellDNkFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FpQUFJQVZCQW5SQjZQd01haWdDQUNBQ1FkZ0FhaENZQWpZQ3NBRWdBaWdDaEFFaEF5QUNJQVEyQXB3QklBSkJCVFlDbUFFZ0FrRUNOZ0trQVNBQ1FaKzJCRFlDbEFFZ0FpQUVOZ0tRQVNBQ1FRVTJBb3dCSUFKQjB2Y0FOZ0tJQVNBQ0lBSkJpQUZxTmdLZ0FTQUNJQUlwQTZBQk53TlFJQUFnQTBFQ2RFSDAvQXhxS0FJQUlBSkIwQUJxRUpnQ0lRQWdBa0VDTmdLOEFTQUNJQUEyQXJRQklBSWdBa0d3QVdvMkFyZ0JJQUlnQWlrRHVBRTNBMGdnQWlBQ1FjQUJhaUFDUWNnQWFoQzFBaUlBUVFocU5nTFlBU0FDSUFBZ0FDZ0NDRWM2QU53QklBRkJoQUZxSUFKQjJBRnFFTVVKSUFBUXFnRU1Bd3NnQWtINEFHb1FveEVNQVFzZ0FrSG9BR29RcEJFTFFRQWhBUXNnQWtHQUFtb2tBQ0FCQzAwQkFuOGpBRUVnYXlJQ0pBQkJDQkFWSVFNZ0FrRUJOZ0lRSUFJZ0FrRVlhallDRENBRElBRTJBZ0FnQXlBQUtBSUVOZ0lFSUFKQkFEWUNDQ0FDUVFocUVJc0JJQUpCSUdva0FDQURDeTBBSUFKRkJFQWdBQ2dDQkNBQktBSUVSZzhMSUFBZ0FVWUVRRUVCRHdzZ0FDZ0NCQ0FCS0FJRUVLSUNSUXMvQUNBQUxRQUxFUHNFQkVBZ0FDZ0NBQ0FBS0FJSUVQMEpFUHdKQ3lBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlJTmdJSUlBRkJBQkRBQlNBQlFRQVFtUUlMTkFFQmZ5TUFRUkJySWdVa0FDQUZRUWhxSUFRUXR3TWhCQ0FBSUFFZ0FpQURFTE1VSVFBZ0JCQzJBeUFGUVJCcUpBQWdBQXMrQVFGL0l3QkJFR3NpQlNRQUlBVWdCRFlDRENBRlFRaHFJQUlRdHdNaEFpQUFJQUVnQXlBRktBSU1FSnNLSVFBZ0FoQzJBeUFGUVJCcUpBQWdBQXNtQVFGL0FrQWdBVVVOQUNBQkVKTUlJZ0lOQUNBQUlBRkIyT2dQRU9FRVFRQWhBZ3NnQWdzSUFDQUFRZjhCY1F0L0FnSi9BWDRqQUVFUWF5SURKQUFnQUFKK0lBRkZCRUJDQUF3QkN5QURJQUVnQVVFZmRTSUNjeUFDYXlJQ3JVSUFJQUpuSWdKQjBRQnFFTXdDSUFNcEF3aENnSUNBZ0lDQXdBQ0ZRWjZBQVNBQ2E2MUNNSVo4SUFGQmdJQ0FnSGh4clVJZ2hvUWhCQ0FES1FNQUN6Y0RBQ0FBSUFRM0F3Z2dBMEVRYWlRQUM3UUJBUUYvQWtBQ1FBSkFBa0FnQVVVTkFDQUFJQUVRdWdFaUFVVU5BU0FCTHdFZVFSaEhEUUFnQUNBQktBSUFLQUlJRUxvQklnQkZEUUlnQUM4QkhrRVhSdzBESUFNZ0FTZ0NBQ0lCS0FJTU5nSUFJQUlnQUNnQ0FDSUFLQUlNTmdJQUlBUWdBU2dDQ0RZQ0FDQUZJQUFvQWdnMkFnQkJBU0VHQ3lBR0R3dEI0aTVCK0tzQ1Fic0lRYVRCQWhBQUFBdEJwUzlCK0tzQ1FjQUlRYVRCQWhBQUFBdEIxWklIUWZpckFrSERDRUdrd1FJUUFBQUxpUUVCQTM4akFFRkFhaUlDSkFBZ0FrRXdhaUFCTHdFZUVJRUJFQlFoQXlBQUlBRW9BamdvQWdBUW53RWhCQ0FDUVFocUlBTVFWQ0VBUVJBUUZTSUJRZkNPSURZQ0FDQUJJQUFwQWdBM0FnUWdBU0FBS0FJSU5nSU1JQUFRVlNBQ0lBRTJBaWdnQkVHZ0Eyb2dBa0VZYWlJQkVNMEJJQUVRRmlBQUVBOGFJQU1RRHhvZ0FrRkFheVFBQzRNQ0FRSi9Ba0FDUUFKQUlBRkZJQUpGY2cwQUlBQWdBUkM2QVNJQlJRMEJJQUV2QVI0aUJFRWJSZ1IvSUFBZ0FTZ0NBQ2dDQ0JDNkFTSUJSUTBESUFFdkFSNEZJQVFMUWYvL0EzRkJHVWNOQUNBQktBSUVJQUVvQWdBaUFHc2lBVUVDZFVFTGF5SURRWDVQQkVBZ0FpQUFLQUlJTmdJQUlBSWdBQ2dDRERZQ0JDQUNJQUFvQWhBMkFnZ2dBaUFBS0FJVU5nSU1JQUlnQUNnQ0dEWUNFQ0FDSUFBb0FodzJBaFFnQWlBQUtBSWdOZ0lZUWYvLy8vOEhJUVFnQWlBQlFTaFBCSDhnQUNnQ0pBVkIvLy8vL3djTE5nSWNDeUFEUVgxTElRTUxJQU1QQzBHcEwwSEdyd0pCNVFCQnljRUNFQUFBQzBHcEwwSEdyd0pCNlFCQnljRUNFQUFBQ3hFQUlBQkJGRUh0L3dOQmZFRURFTW9CQzFNQUlBQWdBU2dDQURZQ0FDQUFJQUVvQWdRMkFnUWdBQ0FCS0FJSU5nSUlJQUFnQVNnQ0REWUNEQ0FBUVJCcUlBRkJFR29RdlJZZ0FFRWthaUFCUVNScUVMVUlJQUJCOEFCcUlBRkI4QUJxRUxVSUN4SUFJQUJCQURZQ0VDQUFJQUFvQWd3UU5ndUFOUUVMZnlNQVFmQUhheUlDSkFBQ1FDQUFJQUVRandRaUF3MEFRUUFoQXlBQ1FRQTJBdWdISUFJZ0FDZ0NCQkN3QmlJRU5nTHNCeUFFUlEwQUlBQWdCQ0FCRU1NWEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFFb0FoQU9HeHdBQ3d3TkRnOEJFQkVTRXhRVkZnSURCQVVYR0FZSENCa0pDaG9MSUFJZ0FDZ0NCRFlDMEFjZ0FrRVVOZ0t3QnlBQ1FRQTJBdEFFSUFKQ0FEY0RpQVVnQWlBQ1FkQUhhaUFDUWJBSGFpQUNRZEFFYWlBQ1Fld0hhaUFDUVlnRmFoQ0NBallDNkFjTUhBc2dBaUFBS0FJRU5nTFFCeUFDUVJvMkFyQUhJQUpCQURZQzBBUWdBa0lBTndPSUJTQUNJQUpCMEFkcUlBSkJzQWRxSUFKQjBBUnFJQUpCN0FkcUlBSkJpQVZxRUlJQ05nTG9Cd3diQ3lBQ0lBQW9BZ1EyQXRBSElBSkJJallDc0FjZ0FrRUFOZ0xRQkNBQ1FnQTNBNGdGSUFJZ0FrSFFCMm9nQWtHd0Iyb2dBa0hRQkdvZ0FrSHNCMm9nQWtHSUJXb1FnZ0kyQXVnSERCb0xJQUlnQUNnQ0JEWUMwQWNnQWtFak5nS3dCeUFDUVFBMkF0QUVJQUpDQURjRGlBVWdBaUFDUWRBSGFpQUNRYkFIYWlBQ1FkQUVhaUFDUWV3SGFpQUNRWWdGYWhDQ0FqWUM2QWNNR1FzZ0FpQUFLQUlFTmdMUUJ5QUNRU1EyQXJBSElBSkJBRFlDMEFRZ0FrSUFOd09JQlNBQ0lBSkIwQWRxSUFKQnNBZHFJQUpCMEFScUlBSkI3QWRxSUFKQmlBVnFFSUlDTmdMb0J3d1lDeUFDSUFBb0FnUTJBdEFISUFKQkpUWUNzQWNnQWtFQU5nTFFCQ0FDUWdBM0E0Z0ZJQUlnQWtIUUIyb2dBa0d3QjJvZ0FrSFFCR29nQWtIc0Iyb2dBa0dJQldvUWdnSTJBdWdIREJjTElBSWdBQ2dDQkRZQzBBY2dBa0hDQWpZQ3NBY2dBa0VBTmdMUUJDQUNRZ0EzQTRnRklBSWdBa0hRQjJvZ0FrR3dCMm9nQWtIUUJHb2dBa0hzQjJvZ0FrR0lCV29RZ2dJMkF1Z0hEQllMSUFJZ0FDZ0NCRFlDMEFjZ0FrSEhBallDc0FjZ0FrRUFOZ0xRQkNBQ1FnQTNBNGdGSUFJZ0FrSFFCMm9nQWtHd0Iyb2dBa0hRQkdvZ0FrSHNCMm9nQWtHSUJXb1FnZ0kyQXVnSERCVUxJQUlnQUNnQ0JEWUMwQWNnQWtIZEtUWUNzQWNnQWtFQU5nTFFCQ0FDUWdBM0E0Z0ZJQUlnQWtIUUIyb2dBa0d3QjJvZ0FrSFFCR29nQWtIc0Iyb2dBa0dJQldvUWdnSTJBdWdIREJRTElBSWdBQ2dDQkRZQzBBY2dBa0g0SWpZQ3NBY2dBa0VBTmdMUUJDQUNRZ0EzQTRnRklBSWdBa0hRQjJvZ0FrR3dCMm9nQWtIUUJHb2dBa0hzQjJvZ0FrR0lCV29RZ2dJMkF1Z0hEQk1MSUFJZ0FDZ0NCRFlDMEFjZ0FrR2hLVFlDc0FjZ0FrRUFOZ0xRQkNBQ1FnQTNBNGdGSUFJZ0FrSFFCMm9nQWtHd0Iyb2dBa0hRQkdvZ0FrSHNCMm9nQWtHSUJXb1FnZ0kyQXVnSERCSUxJQUlnQUNnQ0JEWUNxQVFnQWtFVk5nS0FCQ0FDUVFBMkF0Z0RJQUVnQVNnQ0FDZ0NLQkVBQUNnQ0ZDRURJQUpCQVRZQ3pBY2dBaUFETmdLd0F5QUNJQUpCc0FOcU5nTElCeUFDSUFJcEE4Z0hOd01JSUFKQjBBZHFJQUpCQ0dvUXF3RWhCQ0FDUVFZMkFvZ0ZJQUpCaUFWcUlnTkJCSElnQkJDbUFSb2dBU0FCS0FJQUtBSW9FUUFBTFFBWUlRVWdBa0VCTmdLc0J5QUNJQVUyQW9nRElBSWdBa0dJQTJvMkFxZ0hJQUlnQWlrRHFBYzNBd0FnQWtHd0Iyb2dBaENyQVNFRklBSkJCallDcEFVZ0FrR29CV29nQlJDbUFSb2dBa0VDTmdMVUJDQUNJQU0yQXRBRUlBSWdBa0dvQkdvZ0FrR0FCR29nQWtIWUEyb2dBa0hzQjJvZ0FrSFFCR29RZ2dJMkF1Z0hJQUpCd0FWcUlRTURRQ0FEUVJockVHMGFJQU5CSEdzaUF5QUNRWWdGYWtjTkFBc2dCUkJ0R2lBRUVHMGFEQkVMSUFJZ0FDZ0NCRFlDMEFRZ0FrRVdOZ0tvQkNBQ1FRQTJBb0FFSUFFZ0FTZ0NBQ2dDTUJFQUFDZ0NGQ0VESUFKQkFUWUNwQWNnQWlBRE5nTFlBeUFDSUFKQjJBTnFOZ0tnQnlBQ0lBSXBBNkFITndNUUlBSkIwQWRxSUFKQkVHb1Fxd0VoQXlBQ1FRWTJBb2dGSUFKQmlBVnFJZ1JCQkhJaUJTQURFS1lCR2lBQ1FRRTJBclFISUFJZ0JEWUNzQWNnQWlBQ1FkQUVhaUFDUWFnRWFpQUNRWUFFYWlBQ1Fld0hhaUFDUWJBSGFoQ0NBallDNkFjZ0JSQnRHaUFERUcwYURCQUxJQUFnQVNBQktBSUFLQUk0RVFBQUtBSVVFSzBESWdSRkRSQWdBaUFBS0FJRU5nS29CQ0FDUVJjMkFvQUVJQUpCQVRZQ25BY2dBa0VBTmdMWUF5QUNJQUpCc0FOcU5nS1lCeUFDSUFJcEE1Z0hOd01nSUFJZ0JEWUNzQU1nQWtIUUIyb2dBa0VnYWhDckFTRUVJQUpCQVRZQ2lBVWdBa0dJQldvaUEwRUVjaUFFRUtZQkdpQUJJQUVvQWdBb0FqZ1JBQUFvQWhnaEJTQUNRUUUyQXBRSElBSWdCVFlDaUFNZ0FpQUNRWWdEYWpZQ2tBY2dBaUFDS1FPUUJ6Y0RHQ0FDUWJBSGFpQUNRUmhxRUtzQklRVWdBa0VHTmdLa0JTQUNRYWdGYWlBRkVLWUJHaUFDUVFJMkF0UUVJQUlnQXpZQzBBUWdBaUFDUWFnRWFpQUNRWUFFYWlBQ1FkZ0RhaUFDUWV3SGFpQUNRZEFFYWhDQ0FqWUM2QWNnQWtIQUJXb2hBd05BSUFOQkdHc1FiUm9nQTBFY2F5SURJQUpCaUFWcVJ3MEFDeUFGRUcwYUlBUVFiUm9NRHdzZ0FDQUJJQUVvQWdBb0FrQVJBQUFvQWhRUXJRTWlCRVVORHlBQ0lBQW9BZ1EyQXFnRUlBSkJHRFlDZ0FRZ0FrRUJOZ0tNQnlBQ1FRQTJBdGdESUFJZ0FrR3dBMm8yQW9nSElBSWdBaWtEaUFjM0F6QWdBaUFFTmdLd0F5QUNRZEFIYWlBQ1FUQnFFS3NCSVFRZ0FrRUJOZ0tJQlNBQ1FZZ0ZhaUlEUVFSeUlBUVFwZ0VhSUFFZ0FTZ0NBQ2dDUUJFQUFDZ0NHQ0VGSUFKQkFUWUNoQWNnQWlBRk5nS0lBeUFDSUFKQmlBTnFOZ0tBQnlBQ0lBSXBBNEFITndNb0lBSkJzQWRxSUFKQktHb1Fxd0VoQlNBQ1FRWTJBcVFGSUFKQnFBVnFJQVVRcGdFYUlBSkJBallDMUFRZ0FpQUROZ0xRQkNBQ0lBSkJxQVJxSUFKQmdBUnFJQUpCMkFOcUlBSkI3QWRxSUFKQjBBUnFFSUlDTmdMb0J5QUNRY0FGYWlFREEwQWdBMEVZYXhCdEdpQURRUnhySWdNZ0FrR0lCV3BIRFFBTElBVVFiUm9nQkJCdEdnd09DeUFBSUFFZ0FTZ0NBQ2dDU0JFQUFDSUVLQUlVRUswRElnVkZEUTRnQWlBQUtBSUVOZ0w4QmlBQ1FSazJBdmdHSUFKQkFUWUNoQVVnQWtFQU5nTDBCaUFDSUFKQi9BUnFOZ0tBQlNBQ0lBSXBBNEFGTndOd0lBSWdCVFlDL0FRZ0FrSFFCMm9nQWtId0FHb1Fxd0VoQlNBQ1FRRTJBb2dGSUFKQmlBVnFJZ05CQkhJZ0JSQ21BUm9nQkNnQ0dDRUdJQUpCQVRZQzlBUWdBaUFHTmdMc0JDQUNJQUpCN0FScU5nTHdCQ0FDSUFJcEEvQUVOd05vSUFKQnNBZHFJQUpCNkFCcUVLc0JJUVlnQWtFUk5nS2tCU0FDUWFnRmFpQUdFS1lCR2lBRUtBSWNJUWNnQWtFQk5nTE1CQ0FDSUFjMkFzUUVJQUlnQWtIRUJHbzJBc2dFSUFJZ0Fpa0R5QVEzQTJBZ0FrSFFCR29nQWtIZ0FHb1Fxd0VoQnlBQ1FRWTJBc0FGSUFKQnhBVnFJQWNRcGdFYUlBUXRBQ0FoQ0NBQ1FRRTJBcVFFSUFJZ0NEWUNuQVFnQWlBQ1Fad0VhallDb0FRZ0FpQUNLUU9nQkRjRFdDQUNRYWdFYWlBQ1FkZ0FhaENyQVNFSUlBSkJCallDM0FVZ0FrSGdCV29nQ0JDbUFSb2dCQzBBSVNFSklBSkJBVFlDL0FNZ0FpQUpOZ0wwQXlBQ0lBSkI5QU5xTmdMNEF5QUNJQUlwQS9nRE53TlFJQUpCZ0FScUlBSkIwQUJxRUtzQklRa2dBa0VHTmdMNEJTQUNRZndGYWlBSkVLWUJHaUFFS0FJa0lRb2dBa0VCTmdMVUF5QUNJQW8yQXN3RElBSWdBa0hNQTJvMkF0QURJQUlnQWlrRDBBTTNBMGdnQWtIWUEyb2dBa0hJQUdvUXF3RWhDaUFDUVFZMkFwUUdJQUpCbUFacUlBb1FwZ0VhSUFRb0FpZ2hDeUFDUVFFMkFxd0RJQUlnQ3pZQ3BBTWdBaUFDUWFRRGFqWUNxQU1nQWlBQ0tRT29BemNEUUNBQ1FiQURhaUFDUVVCckVLc0JJUXNnQWtFVU5nS3dCaUFDUWJRR2FpQUxFS1lCR2lBRUtBSXNJUVFnQWtFQk5nS0VBeUFDSUFRMkF2d0NJQUlnQWtIOEFtbzJBb0FESUFJZ0Fpa0RnQU0zQXpnZ0FrR0lBMm9nQWtFNGFoQ3JBU0VFSUFKQkdUWUN6QVlnQWtIUUJtb2dCQkNtQVJvZ0FrRUlOZ0xzQmlBQ0lBTTJBdWdHSUFKQi9BWnFJQUpCK0FacUlBSkI5QVpxSUFKQjdBZHFJQUpCNkFacUVJSUNJUXdnQWlnQzZBY2hBeUFDSUF3MkF1Z0hJQU1FUUNBRElBTW9BZ0FvQWdRUkF3QUxJQUpCNkFacUlRTURRQ0FEUVJockVHMGFJQU5CSEdzaUF5QUNRWWdGYWtjTkFBc2dCQkJ0R2lBTEVHMGFJQW9RYlJvZ0NSQnRHaUFJRUcwYUlBY1FiUm9nQmhCdEdpQUZFRzBhREEwTElBQWdBU0FCS0FJQUtBSllFUUFBS0FJVUVLMERJZ1JGRFEwZ0FpQUFLQUlFTmdMUUJDQUNRUnMyQXFnRUlBSkJBVFlDOUFJZ0FrRUFOZ0tBQkNBQ0lBSkIyQU5xTmdMd0FpQUNJQUlwQS9BQ053TjRJQUlnQkRZQzJBTWdBa0hRQjJvZ0FrSDRBR29RcXdFaEF5QUNRUUUyQW9nRklBSkJpQVZxSWdSQkJISWlCU0FERUtZQkdpQUNRUUUyQXJRSElBSWdCRFlDc0FjZ0FpQUNRZEFFYWlBQ1FhZ0VhaUFDUVlBRWFpQUNRZXdIYWlBQ1FiQUhhaENDQWpZQzZBY2dCUkJ0R2lBREVHMGFEQXdMSUFBZ0FTQUJLQUlBS0FKZ0VRQUFLQUlVRUswRElnUkZEUXdnQWlBQUtBSUVOZ0tvQkNBQ1FSdzJBb0FFSUFKQkFUWUM3QUlnQWtFQU5nTFlBeUFDSUFKQnNBTnFOZ0xvQWlBQ0lBSXBBK2dDTndPSUFTQUNJQVEyQXJBRElBSkIwQWRxSUFKQmlBRnFFS3NCSVFRZ0FrRUJOZ0tJQlNBQ1FZZ0ZhaUlEUVFSeUlBUVFwZ0VhSUFFZ0FTZ0NBQ2dDWUJFQUFDZ0NHQ0VGSUFKQkFUWUM1QUlnQWlBRk5nS0lBeUFDSUFKQmlBTnFOZ0xnQWlBQ0lBSXBBK0FDTndPQUFTQUNRYkFIYWlBQ1FZQUJhaENyQVNFRklBSkJBVFlDcEFVZ0FrR29CV29nQlJDbUFSb2dBa0VDTmdMVUJDQUNJQU0yQXRBRUlBSWdBa0dvQkdvZ0FrR0FCR29nQWtIWUEyb2dBa0hzQjJvZ0FrSFFCR29RZ2dJMkF1Z0hJQUpCd0FWcUlRTURRQ0FEUVJockVHMGFJQU5CSEdzaUF5QUNRWWdGYWtjTkFBc2dCUkJ0R2lBRUVHMGFEQXNMSUFBZ0FTQUJLQUlBS0FKb0VRQUFLQUlVRUswRElnUkZEUXNnQWlBQUtBSUVOZ0xRQkNBQ1FSMDJBcWdFSUFKQkFUWUMzQUlnQWtFQU5nS0FCQ0FDSUFKQjJBTnFOZ0xZQWlBQ0lBSXBBOWdDTndPUUFTQUNJQVEyQXRnRElBSkIwQWRxSUFKQmtBRnFFS3NCSVFNZ0FrRUJOZ0tJQlNBQ1FZZ0ZhaUlFUVFSeUlnVWdBeENtQVJvZ0FrRUJOZ0swQnlBQ0lBUTJBckFISUFJZ0FrSFFCR29nQWtHb0JHb2dBa0dBQkdvZ0FrSHNCMm9nQWtHd0Iyb1FnZ0kyQXVnSElBVVFiUm9nQXhCdEdnd0tDeUFDUVFBMkFyZ0hJQUpDQURjRHNBY2dBU0FCS0FJQUtBSndFUUFBSWdRb0FoUWhBeUFFS0FJWUlRVWdBa0dJQldwQkJISWhCZ05BSUFNZ0JVY0VRQ0FBSUFNb0FnQVFyUU1pQkVVTkNTQUNRUUUyQXRRQ0lBSWdCRFlDMEFRZ0FpQUNRZEFFYWpZQzBBSWdBaUFDS1FQUUFqY0RtQUVnQWtIUUIyb2dBa0dZQVdvUXF3RWhCQ0FDUVFFMkFvZ0ZJQVlnQkJDbUFTRUhJQUpCc0FkcUlBSkJpQVZxRUs0R0lBY1FiUm9nQkJCdEdpQURRUVJxSVFNTUFRc0xJQUlnQUNnQ0JEWUNpQVVnQWtFZU5nTFFCeUFDUVFBMkF0QUVJQUlnQWtHSUJXb2dBa0hRQjJvZ0FrSFFCR29nQWtIc0Iyb2dBa0d3QjJvaUF4Q2REallDNkFjZ0F4RGFCUXdKQ3lBQklBRW9BZ0FvQW5nUkFBQkJGR29oQlNBQ1FiQUhhaUlHUVFBMkFnZ2dCa0lBTndJQUl3QkJFR3NpQXlRQUlBTkJBRFlDRENBRktBSUVJQVV0QUFzaUJDQUVRUmgwUVJoMVFRQklHeUVJUVFBaEJBTkFJQVFnQ0VzRVFDQUlRUUZxUVFOeEJFQWdCaUFEUVF4cUVONENDeUFEUVJCcUpBQUZJQU1nQkNBSVNRUi9JQVVvQWdBZ0JTQUZMQUFMUVFCSUd5QUVhaTBBQUFWQkFBc2dCRUVEY1NJS1FRTjBkQ0FIY2lJSE5nSU1JQXBCQTBZRVFDQUdJQU5CREdvUTNnSWdBMEVBTmdJTVFRQWhCd3NnQkVFQmFpRUVEQUVMQ3lBQ0lBQW9BZ1EyQXFnRUlBSkJIellDZ0FRZ0FrRUFOZ0xZQXlNQVFSQnJJZ1FrQUNBQ1FkQUhhaUlEUVFBMkFoUWdBMEVBTmdJRUlBTWdBMEVNYWlJRk5nSUlJQU5CaE9FU05nSUFBa0FnQmlnQ0JDQUdLQUlBSWdkcklnaEJDVThFUUNBR0VJWVlJUVVnQkVFQU5nSUlJQU5CRkdvZ0JSQ05CU0FFUVFocUVMc0dEQUVMSUFNZ0NFRUNkU0lJTmdJRUEwQWdDQ0FKUmcwQklBVWdDVUVDZENJS2FpQUhJQXBxS0FJQU5nSUFJQWxCQVdvaENRd0FDd0FMSUFSQkVHb2tBQ0FDUVFvMkFvZ0ZJQUpCaUFWcUlnUkJCSElpQlNBREVLWUJHaUFDUVFFMkF0UUVJQUlnQkRZQzBBUWdBaUFDUWFnRWFpQUNRWUFFYWlBQ1FkZ0RhaUFDUWV3SGFpQUNRZEFFYWhDQ0FqWUM2QWNnQlJCdEdpQURFRzBhSUFZUU1ob01DQXNnQUNBQklBRW9BZ0FvQW9BQkVRQUFJZ1FvQWhRUXJRTWlCVVVOQ0NBQ0lBQW9BZ1EyQXFnRUlBSkJJRFlDZ0FRZ0FrRUFOZ0xZQXlBRUtBSVlJUU1nQWtFQk5nTE1BaUFDSUFNMkFyQURJQUlnQWtHd0EybzJBc2dDSUFJZ0Fpa0R5QUkzQTZnQklBSkIwQWRxSUFKQnFBRnFFS3NCSVFRZ0FrRVFOZ0tJQlNBQ1FZZ0ZhaUlEUVFSeUlBUVFwZ0VhSUFKQkFUWUN4QUlnQWlBRk5nS0lBeUFDSUFKQmlBTnFOZ0xBQWlBQ0lBSXBBOEFDTndPZ0FTQUNRYkFIYWlBQ1FhQUJhaENyQVNFRklBSkJBVFlDcEFVZ0FrR29CV29nQlJDbUFSb2dBa0VDTmdMVUJDQUNJQU0yQXRBRUlBSWdBa0dvQkdvZ0FrR0FCR29nQWtIWUEyb2dBa0hzQjJvZ0FrSFFCR29RZ2dJMkF1Z0hJQUpCd0FWcUlRTURRQ0FEUVJockVHMGFJQU5CSEdzaUF5QUNRWWdGYWtjTkFBc2dCUkJ0R2lBRUVHMGFEQWNMSUFKQkFEWUN1QWNnQWtJQU53T3dCd0pBSUFBZ0FTQUJLQUlBS0FLSUFSRUFBQ0lFS0FJVUVLMERJZ1ZGRFFBZ0FrRUJOZ0s4QWlBQ0lBVTJBdEFFSUFJZ0FrSFFCR28yQXJnQ0lBSWdBaWtEdUFJM0E3Z0JJQUpCMEFkcUlBSkJ1QUZxRUtzQklRVWdBa0VCTmdLSUJTQUNRWWdGYWlJR1FRUnlJZ2NnQlJDbUFTRUlJQUpCc0FkcUlBWVFyZ1lnQ0JCdEdpQUZFRzBhSUFRb0Fod2hCaUFFS0FJWUlRUURRQ0FFSUFaSEJFQWdBQ0FFS0FJQUVLMERJZ1ZGRFFJZ0FrRUJOZ0swQWlBQ0lBVTJBdEFFSUFJZ0FrSFFCR28yQXJBQ0lBSWdBaWtEc0FJM0E3QUJJQUpCMEFkcUlBSkJzQUZxRUtzQklRVWdBa0VCTmdLSUJTQUhJQVVRcGdFaENDQUNRYkFIYWlBQ1FZZ0ZhaEN1QmlBSUVHMGFJQVVRYlJvZ0JFRUVhaUVFREFFTEN5QUNJQUFvQWdRMkFvZ0ZJQUpCSVRZQzBBY2dBa0VBTmdMUUJDQUNJQUpCaUFWcUlBSkIwQWRxSUFKQjBBUnFJQUpCN0FkcUlBSkJzQWRxSWdNUW5RNDJBdWdISUFNUTJnVU1Cd3NnQWtHd0Iyb1EyZ1VNQndzZ0FpQUFLQUlFTmdMUUJDQUNRU1kyQXFnRUlBSkJBRFlDZ0FRZ0FTQUJLQUlBS0FLd0FSRUFBQ2dDRkNFRElBSkJBVFlDckFJZ0FpQUROZ0xZQXlBQ0lBSkIyQU5xTmdLb0FpQUNJQUlwQTZnQ053UEFBU0FDUWRBSGFpQUNRY0FCYWhDckFTRURJQUpCR1RZQ2lBVWdBa0dJQldvaUJFRUVjaUlGSUFNUXBnRWFJQUpCQVRZQ3RBY2dBaUFFTmdLd0J5QUNJQUpCMEFScUlBSkJxQVJxSUFKQmdBUnFJQUpCN0FkcUlBSkJzQWRxRUlJQ05nTG9CeUFGRUcwYUlBTVFiUm9NQlFzZ0FpQUFLQUlFTmdLb0JDQUNRU2MyQW9BRUlBSkJBRFlDMkFNZ0FrRUFOZ0t3QXlBQklBRW9BZ0FvQXJnQkVRQUFLQUlVSVFNZ0FrRUJOZ0trQWlBQ0lBTTJBb2dESUFJZ0FrR0lBMm8yQXFBQ0lBSWdBaWtEb0FJM0E5QUJJQUpCMEFkcUlBSkIwQUZxRUtzQklRUWdBa0VCTmdLSUJTQUNRWWdGYWlJRFFRUnlJQVFRcGdFYUlBRWdBU2dDQUNnQ3VBRVJBQUFvQWhnaEJTQUNRUUUyQXB3Q0lBSWdCVFlDNkFZZ0FpQUNRZWdHYWpZQ21BSWdBaUFDS1FPWUFqY0R5QUVnQWtHd0Iyb2dBa0hJQVdvUXF3RWhCU0FDUVJBMkFxUUZJQUpCcUFWcUlBVVFwZ0VhSUFKQkFqWUMxQVFnQWlBRE5nTFFCQ0FDSUFKQnFBUnFJQUpCZ0FScUlBSkIyQU5xSUFKQnNBTnFJQUpCMEFScUVJSUNOZ0xvQnlBQ1FjQUZhaUVEQTBBZ0EwRVlheEJ0R2lBRFFSeHJJZ01nQWtHSUJXcEhEUUFMSUFVUWJSb2dCQkJ0R2d3RUN5QUFJQUVnQVNnQ0FDZ0MyQUVSQUFBaUJDZ0NGQkN0QXlJRlJRMEVJQUlnQUNnQ0JEWUMyQU1nQWtIdUtUWUNzQU1nQWtFQk5nS1VBaUFDUVFBMkFvZ0RJQUlnQWtIb0JtbzJBcEFDSUFJZ0Fpa0RrQUkzQS9BQklBSWdCVFlDNkFZZ0FrSFFCMm9nQWtId0FXb1Fxd0VoQlNBQ1FRRTJBb2dGSUFKQmlBVnFJZ05CQkhJZ0JSQ21BUm9nQkNnQ0dDRUdJQUpCQVRZQ2pBSWdBaUFHTmdMOEJpQUNJQUpCL0FacU5nS0lBaUFDSUFJcEE0Z0NOd1BvQVNBQ1FiQUhhaUFDUWVnQmFoQ3JBU0VHSUFKQkJUWUNwQVVnQWtHb0JXb2dCaENtQVJvZ0JDZ0NIQ0VISUFKQkFUWUNoQUlnQWlBSE5nTDRCaUFDSUFKQitBWnFOZ0tBQWlBQ0lBSXBBNEFDTndQZ0FTQUNRZEFFYWlBQ1FlQUJhaENyQVNFSElBSkJBVFlDd0FVZ0FrSEVCV29nQnhDbUFSb2dCQ2dDSUNFRUlBSkJBVFlDL0FFZ0FpQUVOZ0wwQmlBQ0lBSkI5QVpxTmdMNEFTQUNJQUlwQS9nQk53UFlBU0FDUWFnRWFpQUNRZGdCYWhDckFTRUVJQUpCQVRZQzNBVWdBa0hnQldvZ0JCQ21BUm9nQWtFRU5nS0VCQ0FDSUFNMkFvQUVJQUlnQWtIWUEyb2dBa0d3QTJvZ0FrR0lBMm9nQWtIc0Iyb2dBa0dBQkdvUWdnSTJBdWdISUFKQitBVnFJUU1EUUNBRFFSaHJFRzBhSUFOQkhHc2lBeUFDUVlnRmFrY05BQXNnQkJCdEdpQUhFRzBhSUFZUWJSb2dCUkJ0R2d3REMwSHJwd2xCeHFVQ1Fhc0RRWVRPQWhBQUFBc2dBa0d3QjJvUTJnVkJBQ0VEREFJTElBSWdBQ2dDQkRZQzBBY2dBa0VUTmdLd0J5QUNRUUEyQXRBRUlBSkNBRGNEaUFVZ0FpQUNRZEFIYWlBQ1FiQUhhaUFDUWRBRWFpQUNRZXdIYWlBQ1FZZ0ZhaENDQWpZQzZBY0xJQUFvQWdRZ0FrSG9CMm9Rd2hjZ0FDZ0NCQ0lES0FJWUtBTFVCU0VFSUFNdEFHeEJBWEVFUUNBREVNQUdJQVFRMmdvTElBSW9BdXdISVFVakFFRWdheUlFSkFBZ0FTZ0NDQ0VHSUFFb0FnUWhBd05BSUFNZ0JrWUVRQUpBSUFFZ0FTZ0NBQ2dDY0JFQUFDSUJSUTBBSUFGQkpHb2hCaUFFUVJCcVFRUnlJUWNnQVNnQ0lDRUJBMEFnQVNBR1JnMEJJQVJCRUdvZ0FVRVFhaENjRGlnQ0FDRUlJQVFvQWhnaENTQUVLQUlVSVFNRFFDQURJQWxHQkVBZ0J4Q2tBaUFCRUV3aEFRd0NCU0FBSUFVZ0JDQURFTEFCSWdwQkFTQUlFTUVYSUFvUU1ob2dBMEVNYWlFRERBRUxBQXNBQ3dBTElBUkJJR29rQUFVZ0FDQUZJQVJCRUdvZ0F4Q3dBU0lIUVFCQkFCREJGeUFIRURJYUlBTkJER29oQXd3QkN3c2dBaWdDNkFjaEFDQUNRUUEyQXVnSElBSW9BdXdISVFNZ0FFVU5BQ0FBSUFBb0FnQW9BZ1FSQXdBTElBSkI4QWRxSkFBZ0F3dlZCQUVCZnlNQVFVQnFJZ0lrQUNBQ0lBQTJBandnQWlBQk5nSTRJQUlnQWlnQ09DSUFLUUlJTndNd0lBSWdBQ2tDQURjREtDQUNLQUk0S0FJUUJFQWdBaWdDUENBQ0tBSTRLQUlRRU1VT1FkWHFCaERvQ2hvTElBSW9BaWdFUUNBQ0tBSThJQUpCS0dvUXN4aEIxZW9HRU9nS0dpQUNLQUlzQkVBZ0FpZ0NQQ0FDUVN4cUVMTVlHZ3NnQWlnQ09DZ0NFQVJBSUFJb0Fqd1EwQWdRMEFnYUlBSWdBaWdDUERZQ0lDQUNJQUlvQWlnMkFod0RRQ0FDS0FJY0lBSW9BakJOQkVBZ0FpZ0NIQ0FDS0FJNEtBSVFRUmhxRU1zSFFRRnFTUVJBSUFJZ0FpZ0NPQ2dDRUVFWWFpQUNLQUljUVFGckVNWU9FTGdCTmdJWUlBSW9BandoQVNBQ0lBSW9BamdvQWhCQkdHb2dBaWdDSEVFQmF4REdEaWtDQURjREVDQUNJQUlwQXhBM0F3QWpBRUVRYXlJQUpBQWdBQ0FCTmdJTUlBQW9BZ3dnQWhDMkJCb2dBRUVRYWlRQUlBSW9BandRMEFnYUFrQUNRQ0FDS0FJY0lBSW9BaWhIRFFBZ0FpZ0NIQ0FDS0FJd1J3MEFJQUpCSUdvaUFFRWdJQUlvQWl4QkFXc1F5UWNnQWlBQ0tBSTBJQUlvQWl4ck5nSU1JQUpCQVRZQ0NDQUFRZDRBSUFKQkRHb2dBa0VJYWhDSkJTZ0NBQkRKQnd3QkN3SkFJQUlvQWh3Z0FpZ0NLRVlFUUNBQ1FTQnFJZ0JCSUNBQ0tBSXNRUUZyRU1rSElBQkIzZ0FnQWlnQ0dDQUNLQUlzUVFGcmF4REpCd3dCQ3dKQUlBSW9BaHdnQWlnQ01FWUVRQ0FDUVNCcVFkNEFJQUlvQWpSQkFXc1F5UWNNQVFzZ0FrRWdha0hlQUNBQ0tBSVlFTWtIQ3dzTElBSW9BandRMEFnYUN5QUNJQUlvQWh4QkFXbzJBaHdNQVFzTEN3c2dBaWdDUEJvZ0FrRkFheVFBQ3d3QUl3QkJFR3NnQURZQ0RBc1VBQ0FBS0FJRVFRaHFJQUVvQWdBUURob2dBQXM0QUNNQVFSQnJJZ0FrQUNBQktBSUFJUUVnQUVFQU9nQU1JQUFnQVRZQ0NDQUFRUWhxSUFJUWx3a2hBU0FBUVJCcUpBQWdBVUVCY3d0TUFRRi9JQUFvQWd3aUFpQUFLQUlRVHdSQUlBQWdBQ2dDRUNJQ1FRRjBRUUlnQWhzUXR3Y2dBQ2dDRENFQ0N5QUFJQUpCQVdvMkFnd2dBQ2dDQ0NBQ1FRSjBhaUFCS0FJQU5nSUFDMmtCQTM4akFFRVFheUlFSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlETmdJTUlBUWdBellDQ0NBQVFZd0JhaUlERUw4QklnVWdBQ2dDQ0NBRUtBSUlJQUVnQWlnQ0FCQ1VFUm9nQXlBRkVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFVaEFDQUVRUkJxSkFBZ0FBc1RBQ0FBUlFSQVFRQVBDeUFBS0FJRUVKRURDMk1CQTM4akFFSFFBV3NpQkNRQUlBUkJFR29pQlNBQUtBSUVJZ1lvQWdCQmNpQUFLQUlJRUJBZ0JDQUdLQUlBSUFNUU55QUZJQVFRRWhvZ0JTQUNFQTRhSUFVZ0FSQVNHaUFFS0FMTUFTRUFJQVFRRHhvZ0JSQVJJQVJCMEFGcUpBQWdBQXNTQUNBQUtBSUFJZ0FFUUNBQUVMUVVHZ3NMRGdBZ0FDQUJFTFFVTmdJQUlBQUxDZ0JCNUx3REVKWU1BQXNTQUNBQ0JFQWdBQ0FCSUFJUWZSb0xJQUFMQ2dBZ0FFRXdhMEVLU1F1bEFRRURmeU1BUVJCcklnUWtBQ0FDSUFBUTNnRWlBMEVFYWlFRklBTW9BZ0FoQXdKL0EwQWdBeUFGUndSQVFRRWdBU0FES0FJUVJnMENHaUFERUV3aEF3d0JDd3RCQUNBQ0lBQVFJQzhCSGtFZVJ3MEFHaUFFSUFBZ0FoQ0tGaUFFS0FJRUlRVWdCQ2dDQUNFREEwQWdCU0FESWdCSEJFQWdBRUVFYWlFRElBQW9BZ0FnQVNBQ0VMc0RSUTBCQ3dzZ0JCQXlHaUFBSUFWSEN5RURJQVJCRUdva0FDQURDejhBSUFCQndBSnFFQjRnQUVHQUFtb1E3aHNnQUVIY0FXb1EvQThnQUVHOEFXb1F5Z1FnQUVHZ0FXb1F5Z1FnQUVHRUFXb1F5Z1FnQUVFSWFoRGREd3UvQWdFQ2Z5TUFRZUFCYXlJRUpBQWdBaThCSGlFRkFrQWdBU2dDRUNJQlFYOUhCRUFnQlVFZVJ3UkFJQVJCSUdvaUF5QUFRWElnQWhBUUlBUkJFR29pQUNBQ0VPRURJQU1nQUJBU0dpQURRWS90QnhBT0dpQUVLQUxjQVNFQklBQVFEeG9nQXhBUkRBSUxJQU1nQWlnQ0FDQUJRUUowYWlnQ0NEWUNBRUVBSVFFTUFRc2dCVUVlUmdSQUlBUkJJR29pQXlBQVFYSWdBaEFRSUFSQkVHb2lBQ0FDRU9FRElBTWdBQkFTR2lBRFFmM3RCeEFPR2lBRUtBTGNBU0VCSUFBUUR4b2dBeEFSREFFTElBVVFvd0lFUUNBRElBSW9BaVEyQWdCQkFDRUJEQUVMUVFBaEFTQUFJQUlvQWlRZ0F5QUVRUXhxRUlnQ0RRQWdCRUVnYWlJRElBQkJjaUFDRUJBZ0JFRVFhaUlBSUFJUTRRTWdBeUFBRUJJYUlBTkJ6YXNIRUE0YUlBUW9BdHdCSVFFZ0FCQVBHaUFERUJFTElBUkI0QUZxSkFBZ0FRdWhBUUVEZnlNQVFmQUJheUlESkFBZ0EwRXdhaUlFSUFFb0FnQkJkaUFCS0FJSUVCQWdBMEVnYWlJRklBRW9BZ0FnQWhBM0lBUWdCUkFTR2lBRFFSQnFJZ0lnQVNnQ0FDQUJLQUlFRUw4RElBUWdBaEFTR2lBRVFkTEVDeEFPR2lBRElBRW9BZ0FnQVNnQ0RDZ0NLQkFxSUFRZ0F4QVNHaUFFUWZmd0RCQU9HaUFBSUFRUWtCY2dBeEFQR2lBQ0VBOGFJQVVRRHhvZ0JCQVJJQU5COEFGcUpBQUxTd0VCZnlNQVFSQnJJZ01rQUNBRFFRQTJBZ3dDUUNBQlFZQURha0ViSUFJZ0EwRU1haERkQWdSQUlBQkJ3c0lDRUJRYURBRUxJQUFnQXlnQ0RDZ0NBQkFVR2dzZ0EwRVFhaVFBQ3pNQkFYOENRQ0FCSUFBb0FnUWdBRUVFYWlJQ0VONFhJZ0FnQWtjRVFDQUJLQUlBSUFBb0FoQlBEUUVMSUFJaEFBc2dBQXMrQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDREFKL0lBRW9BZ3dpQUJDNEJrRUJjUVJBSUFBUTFBZ01BUXNnQUJDS0JRc2hBQ0FCUVJCcUpBQWdBQXRCQVFGL0l3QkJFR3NpQWlBQU5nSU1JQUlnQVRZQ0NDQUNJQUlvQWd3b0FnQTJBZ1FnQWlnQ0RDQUNLQUlJS0FJQU5nSUFJQUlvQWdnZ0FpZ0NCRFlDQUFzcEFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0NDQUJRUWhxUVFRUXp3Y2hBQ0FCUVJCcUpBQWdBQXNNQUNBQUlBQW9BZ1FRMkE0TENRQWdBRUVBRU5rT0M3QUNBUWgvSXdCQkVHc2lBaVFBSXdCQndBRnJJZ01rQUNBRFFiZ0JhaUFBSUFFUTFnNGdBQ2dDWkNJRlFRRnJJUVlnQVNnQ0FDRUhJQUFvQW1BaENDQURLQUs4QVNFSklBTW9BcmdCSVFCQkFDRUJBa0FEUUNBQklBVkhCRUFnQ0NBQVFRUjBhaUlFTFFBRVJRUkFJQUpCQURZQ0RDQUNRUUE2QUFnTUF3c0NRQ0FFS0FJSUlBbEhEUUFnQnlBRUtBSUFSdzBBSUFJZ0FEWUNEQ0FDUVFFNkFBZ01Bd3NnQVNBRUtBSU1Td1JBSUFKQkFEWUNEQ0FDUVFBNkFBZ01Bd1VnQUVFQmFrRUFJQUFnQmtjYklRQWdBVUVCYWlFQkRBSUxBQXNMSUFOQkNHcEJoclVEUVo0RVFRNGdBMEdvQVdvUUhTSUFFQmNpQVVFWWFrSFNOUkFPR2lBQkVCZ2dBa0VBTmdJTUlBSkJBRG9BQ0NBQUVCNExJQU5Cd0FGcUpBQWdBaTBBQ0NFQUlBSkJFR29rQUNBQUN3MEFJQUFnQVNBQ1FSQVEyUWtMSWdBRFFDQUFSU0FBS0FJRVFiRE9Fa2R5UlFSQUlBQW9BaVFoQUF3QkN3c2dBQXNpQUNBQVFRRnFJZ0JCOGdCTEJFQkJyT0lHRHdzZ0FFRUNkRUdzdWhKcUtBSUFDK2tCQVFGK0lBQkZCRUJCQUE4TEFuOUJBQ0FBS0FJRUlnQXBBeEJDaGVTQWdvS0FpUW1ESWdFZ0FVSUJmWU5RRFFBYVFRRUNmMEVBSUFBcEF4QkNnYVNBZ0lDQWlRR0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FCQ0JDQTBBR2dKL1FRQWdBQ2tERUVLQm9JQ0FnSUNJQVlNaUFTQUJRZ0Y5ZzFBTkFCcEJBU0FBRUlJSURRQWFJQUFRbndrTEN3MEFHZ0ovUVFBZ0FDa0RFRUtFNElDQ2dvQ0FDSU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFUElIRFFBYUFuOUJBQ0FBS1FNUVFvU2dnSUNDZ0lBSWd5SUJJQUZDQVgyRFVBMEFHa0VCSUFBUWdBWU5BQm9nQUJDWUVRc0xDd3NSQUNBQVFRaHFJQUVvQWdBUUlSb2dBQXNSQUNBQUtBSUFJZ0FRSENBQVFjZ0NhZ3U5QVFFRWZ5TUFRUkJySWdNa0FBSkFJQUZGRFFBZ0EwRUFOZ0lJSUFNZ0FUWUNCQ0FESUFCQkNHbzJBZ0FnQXlBQUtBTGNCRUVCYXpZQ0RDQURFTFFjQkVBZ0F4QzBIQkJtSVFJTUFRc2dBRUc0SUdvb0FnQWlBaUFBUWJ3Z2FpZ0NBRUVGZEdvaEJDQUJLQUlFSVFVRFFBSkFJQUlnQkVjRVFDQUZJQUlvQWdBUVNFVU5BU0FDUVFocUlBRVFpZ0lpQWcwREN5QUJJQUFnQVNnQ0FDZ0NDQkVCQUNFQ0RBSUxJQUpCSUdvaEFnd0FDd0FMSUFOQkVHb2tBQ0FDQ3d3QUlBQVFnUjBnQUJDbUVBdU9BUUVCZnlBQUtBSUVJZ0lFUUNBQ0tBSUFJQUVRVjBFQlFRRkIxWjRJUWRDbkEwSHdBQkJMQ3lBQUlBRVF6UU1pQVVVRVFFRUFEd3RCQUNFQ0FrQWdBVVVOQUNBQlFRQWdBUVIvSUFFb0FnUkJtT2dQRUVnRlFRQUxHeUlDRFFBZ0FDQUJRWmpvRHhEaEJFRUFJUUlMSUFBb0FnQW9BZ2dnQWhCWFFRRkJBVUdobXdoQjBLY0RRZlFBRUVzZ0Fnc1hBQ0FBSUFFUXJ3a2lBRVVFUUVFQUR3c2dBQ2dDRUFzS0FDQUFLQUlBRVBVRkMyQUJBWDRDZjBFQUlBQW9BZ1FpQUNrREVFS0VoSUNJZ29nQmd5SUJJQUZDQVgyRFVBMEFHa0VCSUFBUXNBVU5BQm9DZjBFQUlBQXBBeEJDaElTQWdJS0FBWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFSUVJRFFBYUlBQVFnQVlMQ3dzS0FDQUFLQUlBRU5jR0N6Z0JBWDRDZjBFQUlBQW9BZ1FpQUNrREVFTEFnSUNJZ0lpSUlZTWlBU0FCUWdGOWcxQU5BQnBCQVNBQUVMQUZEUUFhSUFBUW9CMExDN3dCQVFOL0l3QkJFR3NpQkNRQUlBQVE4d2toQXdKQUFrQWdBeUFCSUFJUW5RZ2lCVWtFUUNBQUlBRVE5Uk1OQVNBQUlBTWdCU0FEYXlBQUtBSUVJQUF0QUFzUW1BRWlBMEVBSUFNUTl3d0xJQUFRandJaEF3TkFJQUVnQWtjRVFDQURJQUVvQWdBUW1RSWdBVUVFYWlFQklBTkJCR29oQXd3QkN3c2dBMEVBRUprQ0lBQWdCUkR5Q1F3QkN5QUFJQVFnQVNBQ0VJd0hJZ0VRandJZ0FTZ0NCQ0FCTFFBTEVKZ0JFTEFUSUFFUWh3RWFDeUFFUVJCcUpBQWdBQXVvQVFJQ2Z3RjlJd0JCSUdzaUJTUUFJQVVDZnlBRElBU1NFRVlpQjR0REFBQ0FmMTFGQkVBZ0JVRUFPZ0FZUVFBTUFRc2dCU0FIT0FJWVFRRUxPZ0FjQWtBZ0JTMEFIRVVFUUNBRlFRaHFJZ1lnQTBIYm1BZ2dCQkRxQmlBQklBWWdBaEJkSUFZUUR4b2dBQ0FCTFFBRUJIOGdBRU1BQUFBQUVFWTRBZ0JCQVFWQkFnczZBQVFNQVFzZ0JTb0NHQkJHSVFNZ0FFRUJPZ0FFSUFBZ0F6Z0NBQXNnQlVFZ2FpUUFDMm9DQVg4QmZTTUFRUkJySWdVa0FDQUFBbjhDUUNBRElBU1NJZ2FMUXdBQWdIOWRSUVJBSUFVZ0EwSGJtQWdnQkJEc0JpQUJJQVVnQWhCZElBVVFEeHBCQWlBQkxRQUVSUTBDR2lBQVFRQTJBZ0FNQVFzZ0FDQUdPQUlBQzBFQkN6b0FCQ0FGUVJCcUpBQUxiZ0lCZndGOEl3QkJFR3NpQlNRQUlBQUNmd0pBSUFNZ0JLQWlCcGxFQUFBQUFBQUE4SDlqUlFSQUlBVWdBMEhibUFnZ0JCRHRCaUFCSUFVZ0FoQmRJQVVRRHhwQkFpQUJMUUFFUlEwQ0dpQUFRZ0EzQXdBTUFRc2dBQ0FHT1FNQUMwRUJDem9BQ0NBRlFSQnFKQUFMREFBZ0FFR0Nob0FnTmdBQUN3OEFJQUFnQUNnQ0FDZ0NEQkVBQUFzUkFDQUFJQUVnQVNnQ0FDZ0NIQkVDQUFzUkFDQUFJQUVnQVNnQ0FDZ0NHQkVDQUF1dkFRRUdmeU1BUVNCcklnSWtBQ0FDUVJocUlnTWdBQkRmQXhvQ1FDQURFSklFUlEwQUlBSkJFR29pQXlBQUlBQW9BZ0JCREdzb0FnQnFFSDRnQXhEOUJDRUVJQU1RWkNBQ1FRaHFJQUFRMGdRaEJTQUFJQUFvQWdCQkRHc29BZ0JxSWdZUW5BTWhCeUFDSUFRZ0JTZ0NBQ0FHSUFjZ0FTQUVLQUlBS0FJb0VRa0FOZ0lRSUFNUTBRUkZEUUFnQUNBQUtBSUFRUXhyS0FJQWFrRUZFSThEQ3lBQ1FSaHFFT0FESUFKQklHb2tBQXRJQVFGL0lBQW9BZ0FoQWlBQkVJQUJJUUFnQWlnQ0NDSUJJQUlvQWd3UWdnUWdBRXNFZnlBQklBQVFod2NvQWdCQkFFY0ZRUUFMUlFSQUVHOEFDeUFCSUFBUWh3Y29BZ0FMUHdBZ0FDQUJOZ0lFSUFCQkFEb0FBQ0FCSUFFb0FnQkJER3NvQWdCcUlnRW9BaEJGQkVBZ0FTZ0NTQ0lCQkVBZ0FSQ2NDQXNnQUVFQk9nQUFDeUFBQzMwQkFYOENRQ0FBS0FJRUlnRWdBU2dDQUVFTWF5Z0NBR29RdFFaRkRRQWdBQ2dDQkNJQklBRW9BZ0JCREdzb0FnQnFJZ0VvQWhBTkFDQUJFTGdCUVlEQUFIRkZEUUFnQUNnQ0JDSUJJQUVvQWdCQkRHc29BZ0JxRUxVR0VKRUhRWDlIRFFBZ0FDZ0NCQ0lBSUFBb0FnQkJER3NvQWdCcVFRRVFqd01MQzFNQkFuOGpBRUdRQVdzaUFpUUFJQUpCQ0dvUXpnRWlBMEhYNlFZUURpQUJLQUlvRUNGQjU3Z0NFQTRnQVM4QkhoQ0JBUkFPUWUvMkNCQU9HaUFBSUFOQkJHb1FRaUFERUxzQkdpQUNRWkFCYWlRQUN6b0JBWDlCbU1JTklRSURmeUFDUWRqR0RVWUVRRUVBRHdzZ0FDQUNLQUlBUmdSL0lBSWdBVUVDZEdvb0FnUUZJQUpCRUdvaEFnd0JDd3NMeUJBQkNuOGpBRUhRQUdzaUFpUUFJQUpCQURZQ1NBSi9Ba0FnQWdKL0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBU2dDRUE0YkZRQUJBaFlQRUFNUkVoTVVCQnNhQlFZSENBa1pDZ3NNR0EwT0Z3c2dBaUFCRVBjQ05nSklJQUpCR0dvZ0FFRXdhaUFDUWNnQWFoREJBaUFDS0FJWUtBSUlEQjBMSUFJZ0FSRDNBallDU0NBQ1FSaHFJQUJCTUdvZ0FrSElBR29Rd1FJZ0FpZ0NHQ2dDQ0F3Y0N5QUNJQUVROXdJMkFrZ2dBa0VZYWlBQVFUQnFJQUpCeUFCcUVNRUNJQUlvQWhnb0FnZ01Hd3NnQWlBQkVQY0NOZ0pJSUFKQkdHb2dBRUV3YWlBQ1FjZ0FhaERCQWlBQ0tBSVlLQUlJREJvTElBSWdBUkQzQWpZQ1NDQUNRUmhxSUFCQk1Hb2dBa0hJQUdvUXdRSWdBaWdDR0NnQ0NBd1pDeUFDSUFFUTl3STJBa2dnQWtFWWFpQUFRVEJxSUFKQnlBQnFFTUVDSUFJb0FoZ29BZ2dNR0FzZ0FpQUJFUGNDTmdKSUlBSkJHR29nQUVFd2FpQUNRY2dBYWhEQkFpQUNLQUlZS0FJSURCY0xJQUlnQVJEM0FqWUNTQ0FDUVJocUlBQkJNR29nQWtISUFHb1F3UUlnQWlnQ0dDZ0NDQXdXQ3lBQ0lBRVE5d0kyQWtnZ0FrRVlhaUFBUVRCcUlBSkJ5QUJxRU1FQ0lBSW9BaGdvQWdnTUZRc2dBaUFCRVBjQ05nSklJQUpCR0dvZ0FFRXdhaUFDUWNnQWFoREJBaUFDS0FJWUtBSUlEQlFMSUFJZ0FSRDNBallDU0NBQ1FSaHFJQUJCTUdvZ0FrSElBR29Rd1FJZ0FpZ0NHQ2dDQ0F3VEN5QUNJQUVROXdJMkFrZ2dBa0VZYWlBQVFUQnFJQUpCeUFCcUVNRUNJQUlvQWhnb0FnZ01FZ3NnQWlBQkVQY0NOZ0pJSUFKQkdHb2dBRUV3YWlBQ1FjZ0FhaERCQWlBQ0tBSVlLQUlJREJFTElBSWdBUkQzQWpZQ1NDQUNRUmhxSUFCQk1Hb2dBa0hJQUdvUXdRSWdBaWdDR0NnQ0NBd1FDeUFDSUFFUTl3STJBa2dnQWtFWWFpQUFRVEJxSUFKQnlBQnFFTUVDSUFJb0FoZ29BZ2dNRHdzZ0FpQUFJQUVnQVNnQ0FDZ0NRQkVBQUNJREtBSVVFT01ETmdJWUlBSWdBeWdDR0RZQ0tFRWNFQlVnQWlnQ0dDQUNLQUlvRUxJWERBd0xJQUlnQUNBQklBRW9BZ0FvQWtnUkFBQWlBeWdDRkJEakF6WUNHQ0FDSUFNb0FoZzJBaWdnQWlBREtBSWNOZ0lJSUFJZ0F5MEFJRG9BUnlBQ0lBTXRBQ0U2QUVZZ0FpQURLQUlrTmdKQUlBSWdBeWdDS0RZQ1BDQUNJQU1vQWl3MkFqaEJNQkFWSUFJb0FoZ2dBaWdDS0NBQ0tBSUlJQUl0QUVjZ0FpMEFSaUFDUVVCcktBSUFJQUlvQWp3Z0FpZ0NPQkN3Rnd3TEN5QUNJQUFnQVNBQktBSUFLQUpZRVFBQUtBSVVFT01ETmdJWVFSZ1FGU0VESUFJb0FoZ2hCQ0FEUW9DQWdJQ0FBVGNDRENBRFFnQTNBZ1FnQXlBRU5nSVVJQU5CL0tRVE5nSUFJQU1NQ2dzZ0FpQUJJQUVvQWdBb0FtQVJBQUFpQXlnQ0ZEWUNHRUVvRUJVZ0FpZ0NHQ0FEUVJocUVLNFhEQWtMSUFJZ0FDQUJJQUVvQWdBb0FtZ1JBQUFvQWhRUTR3TTJBaGhCR0JBVklBSW9BaGdRclJjTUNBc2dBU0FCS0FJQUtBSndFUUFBSVFVZ0FrRUFOZ0l3SUFKQ0FEY0RLQ0FDUVNocUlBVW9BaGdnQlNnQ0ZHdEJBblVRcXdRZ0JTZ0NHQ0VFSUFVb0FoUWhBd05BSUFNZ0JFWUVRQ0FDUVN3UUZTQUNRU2hxRUt3WElnUTJBa2dnQlVFa2FpRUdJQUpCR0dwQkJISWhCeUFFSUFRb0FnQW9BbXdSQUFBaENDQUZLQUlnSVFVRFFDQUZJQVpHQkVBZ0FrRW9haEF5R2d3TUN5QUNRUmhxSUFWQkVHb1FuQTRvQWdBaENTQUNLQUlnSVFvZ0FpZ0NIQ0VEQTBBZ0F5QUtSZ1JBSUFjUXBBSWdCUkJNSVFVTUFnVWdDQ0FKSUFKQkNHb2dBeEN3QVNJTEVLc1hJQXNRTWhvZ0EwRU1haUVEREFFTEFBc0FDd0FGSUFJZ0FDQURLQUlBRU9NRE5nSVlJQU5CQkdvaEF5QUNRU2hxSUFKQkdHb1EvUUlNQVFzQUN3QUxJQUlnQVJEM0FqWUNTQ0FDUVJocUlBQkJNR29nQWtISUFHb1F3UUlnQWlnQ0dDZ0NDQXdJQ3lBQ0lBQWdBU0FCS0FJQUtBSTRFUUFBSWdNb0FoUVE0d00yQWhnZ0FpQURLQUlZTmdJb1FSd1FGU0FDS0FJWUlBSW9BaWdRdEJjTUJRdEJvNmdKUWNhbEFrSDRCRUcrbHdRUUFBQUxJQUlnQUNBQklBRW9BZ0FvQXRnQkVRQUFJZ01vQWhRUTR3TTJBaGdnQWlBREtBSVlOZ0lvSUFJZ0F5Z0NIRFlDQ0NBQ0lBTW9BaUEyQWtCQkpCQVZJQUlvQWhnZ0FpZ0NLQ0FDS0FJSUlBSkJRR3NvQWdBUXB4Y01Bd3NnQWlBQklBRW9BZ0FvQXJnQkVRQUFJZ1VvQWhRMkFoZ2dBaUFGS0FJWU5nSW9RU0FRRlNFRElBSW9BaGdoQkNBQ0tBSW9JUVlnQTBLQWdJQ0F3QUkzQWd3Z0EwSUFOd0lFSUFOQkFEWUNIQ0FESUFZMkFoZ2dBeUFFTmdJVUlBTkJsS3NUTmdJQUlBSWdBeUlFTmdKSUlBVW9BaHdpQTBVTkF5QUVJQVFvQWdBb0FyUUJFUUFBSUFBZ0F4RGpBeUlESUFNb0FnQW9BbndSQUFBMkFod01Bd3NnQVNBQktBSUFLQUtJQVJFQUFDSURLQUlVSVFRZ0FrRUFOZ0lnSUFKQ0FEY0RHQ0FDUVJocUlBTW9BaHdnQXlnQ0dHdEJBblVRcXdRZ0F5Z0NIQ0VGSUFNb0FoZ2hBd05BSUFNZ0JVWUVRQ0FDSUFBZ0JCRGpBellDS0NBQ1FTUVFGU0FDS0FJb0lBSkJHR29pQXhDcEZ5SUVOZ0pJSUFNUU1ob01CQVVnQWlBQUlBTW9BZ0FRNHdNMkFpZ2dBMEVFYWlFRElBSkJHR29nQWtFb2FoRDlBZ3dCQ3dBTEFBc2dBaUFBSUFFZ0FTZ0NBQ2dDZ0FFUkFBQWlBeWdDRkJEakF6WUNHQ0FDSUFNb0FoZzJBaWhCSEJBVklBSW9BaGdnQWlnQ0tCQ1dEZ3NpQkRZQ1NBc2dCRUVFYWlFRUlBRW9BZ2doQlNBQktBSUVJUU1EZnlBRElBVkdCSDhnQWtFWWFpQUFRVEJxSUFKQnlBQnFFTUVDSUFJb0FoZ29BZ2dGSUFRZ0FrRVlhaUFERUxBQklnRVFuZzRnQVJBeUdpQURRUXhxSVFNTUFRc0xDeUVCSUFJb0FrZ2hBQ0FDUVFBMkFrZ2dBQVJBSUFBZ0FDZ0NBQ2dDQkJFREFBc2dBa0hRQUdva0FDQUJDd1FBSUFFTEJ3QWdBQ2dDQ0FzS0FDQUFRYml3RWhCSUMwOEJBbjhnQUVFQU5nSUlJQUJDQURjQ0FDQUJLQUlFSWdJRVFDQUFJQUlRendVZ0FDZ0NCQ0VESUFBZ0FrRUFTZ1IvSUFNZ0FTZ0NBQ0FDUVFKMElnRVFmU0FCYWdVZ0F3czJBZ1FMSUFBTElnQWdBQ2dDQUNJQUlBRW9BZ0FRbEFJb0FnQWdBQ0FDS0FJQUVKUUNLQUlBU1FzY0FDQUFLQUlBSWdBZ0FSQ1VBaWdDQUNBQUlBSVFsQUlvQWdCSkN3a0FJQUFvQWdRUVlBczNBUUYvSXdCQkVHc2lBeVFBSUFJb0FnQVEvQUloQWlBQktBTEVCQ0VCSUFBZ0FqWUNCQ0FBSUFJZ0FYQTJBZ0FnQTBFUWFpUUFDMVlCQW44Z0FDZ0NBQ0lCS0FJc0lnSUVmeUFDQlNBQkVQWUlJZ0pCbU5JU05nSUFJQUpCNE1zU05nSUVJQUVnQWhBb0lBRWdBU2dDR0VFQmFqWUNHQ0FDSVFFZ0FDZ0NBQ0FCTmdJc0lBQW9BZ0FvQWl3TEMxWUJBbjhnQUNnQ0FDSUJLQUlrSWdJRWZ5QUNCU0FCRVBZSUlnSkI2TkVTTmdJQUlBSkJzTXNTTmdJRUlBRWdBaEFvSUFFZ0FTZ0NHRUVCYWpZQ0dDQUNJUUVnQUNnQ0FDQUJOZ0lrSUFBb0FnQW9BaVFMQ3lJQUEwQWdBRVVnQUNnQ0JFR1F6QkpIY2tVRVFDQUFLQUlJSVFBTUFRc0xJQUFMVGdFRGZ5TUFRYkFCYXlJQkpBQWdBQkNqQ3lJQVJRUkFJQUZCMks4RFFjMEFRUTRnQVVHZ0FXb1FIU0lDRUJjaUEwRVlha0h0cVFnUURob2dBeEFZSUFJUUhnc2dBVUd3QVdva0FDQUFDekFCQW44akFFRXdheUlDSkFBZ0FpQUFFUFViSVFNZ0FDQUJFTWdQSUFFZ0F4RElEeUFERUprRElBSkJNR29rQUFzRUFFRUVDNW9CQVFWL0FrQWdBQ2dDQkNBQUxRQUxJZ0lnQWtFWWRFRVlkU0lGUVFCSUd5SUdJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFVpQkVFQVNCdEhEUUFnQVNnQ0FDQUJJQVJCQUVnYklRRWdCVUVBVGdSQUEwQWdBa1VoQXlBQ1JRMENJQUF0QUFBZ0FTMEFBRWNOQWlBQlFRRnFJUUVnQUVFQmFpRUFJQUpCQVdzaEFnd0FDd0FMSUFBb0FnQWdBU0FHRU1zTFJTRURDeUFEQ3drQUlBQkJDR29RRmdzS0FDQUFLQUlBRU1NREM3Y0JBUVovSUFFUTlBTWhBd0pBSUFBb0FnUWlBa1VOQUNBQUtBSUFBbjhnQWtFQmF5QURjU0FDYVNJRVFRRk5EUUFhSUFNZ0FpQURTdzBBR2lBRElBSndDeUlGUVFKMGFpZ0NBQ0lBUlEwQUlBSkJBV3NoQmlBQktBSUFJUWNnQkVFQlN5RUVBMEFnQUNnQ0FDSUFSUTBCSUFNZ0FDZ0NCQ0lCUndSQUFrQWdCRVVFUUNBQklBWnhJUUVNQVFzZ0FTQUNTUTBBSUFFZ0FuQWhBUXNnQVNBRlJ3MENEQUVMSUFBb0FnZ2dCMGNOQUFzZ0FBOExRUUFMQ2dBZ0FFSEFnUklRU0FzS0FDQUFLQUlBRUtnRUMwUUNBWDhCZmdKQUlBQW9BaEJCQVVvTkFDQUJLQUlFSWdBcEF4QkNoSUNBaUlJSWd5SURJQU5DQVgyRFVBMEFRUUVoQWlBQUVMQUZEUUFnQUJDQUJpRUNDeUFDQ3dvQUlBQW9BZ0FRcHdrTFJnSUJmd0YrQWtBZ0FDZ0NFRUVCU2cwQUlBRW9BZ1FpQUNrREVFTEFnSUNJZ0lpQUlJTWlBeUFEUWdGOWcxQU5BRUVCSVFJZ0FCQ3dCUTBBSUFBUXNSQWhBZ3NnQWdzMUFRSi9Jd0JCOEFCcklnSWtBQ0FDUVFocUlBQVFqUkVoQXlBQUlBRVFtZ3dnQVNBREVKb01JQU1RNmdJZ0FrSHdBR29rQUFzUkFDQUFRUkJCOGY4RFFYeEJBeERLQVFzRUFFRUJDM1FCQkg4akFFR2dBV3NpQXlRQUlBTkJDR29RU1NJRVFRaHFRZFMxQ2hBT0dpQUVJQUVRd2hFaUJVRUlhaUlHUVpQbkNSQU9HaUFHUWZPYUNSQU9HaUFESUFJcEFnQTNBNWdCSUFVZ0EwR1lBV29RdGdSQkNHcEI4NW9KRUE0YUlBQWdCRUVNYWhCQ0lBUVFVU0FEUWFBQmFpUUFDNmdCQWdKL0FYMGpBRUVnYXlJRkpBQWdCUUovSUFNZ0JKTVFSaUlIaTBNQUFJQi9YVVVFUUNBRlFRQTZBQmhCQUF3QkN5QUZJQWM0QWhoQkFRczZBQndDUUNBRkxRQWNSUVJBSUFWQkNHb2lCaUFEUWN5WUNDQUVFT29HSUFFZ0JpQUNFRjBnQmhBUEdpQUFJQUV0QUFRRWZ5QUFRd0FBQUFBUVJqZ0NBRUVCQlVFQ0N6b0FCQXdCQ3lBRktnSVlFRVloQXlBQVFRRTZBQVFnQUNBRE9BSUFDeUFGUVNCcUpBQUxhZ0lCZndGOUl3QkJFR3NpQlNRQUlBQUNmd0pBSUFNZ0JKTWlCb3REQUFDQWYxMUZCRUFnQlNBRFFjeVlDQ0FFRU93R0lBRWdCU0FDRUYwZ0JSQVBHa0VDSUFFdEFBUkZEUUlhSUFCQkFEWUNBQXdCQ3lBQUlBWTRBZ0FMUVFFTE9nQUVJQVZCRUdva0FBdHVBZ0YvQVh3akFFRVFheUlGSkFBZ0FBSi9Ba0FnQXlBRW9TSUdtVVFBQUFBQUFBRHdmMk5GQkVBZ0JTQURRY3lZQ0NBRUVPMEdJQUVnQlNBQ0VGMGdCUkFQR2tFQ0lBRXRBQVJGRFFJYUlBQkNBRGNEQUF3QkN5QUFJQVk1QXdBTFFRRUxPZ0FJSUFWQkVHb2tBQXNLQUNBQklBQnJRUUoxQzBFQkFYOGdBQ0FCTndOd0lBQWdBQ2dDTENBQUtBSUVJZ0pyckRjRGVDQUFJQUZRSUFBb0FnZ2lBQ0FDYTZ3Z0FWZHlCSDhnQUFVZ0FpQUJwMm9MTmdKb0Mwc0JBbndnQUNBQW9pSUJJQUNpSWdJZ0FTQUJvcUlnQVVTblJqdU1oODNHUHFKRWRPZks0dmtBS3IrZ29pQUNJQUZFc3Z0dWlSQVJnVCtpUkhlc3kxUlZWY1cvb0tJZ0FLQ2d0Z3RQQVFGOElBQWdBS0lpQUNBQUlBQ2lJZ0dpSUFCRWFWRHU0RUtUK1Q2aVJDY2VEK2lId0ZhL29LSWdBVVJDT2dYaFUxV2xQNklnQUVTQlhnejkvLy9mdjZKRUFBQUFBQUFBOEQrZ29LQzJDMVlCQW44akFFRWdheUlFSkFBZ0FrRVhhMEYrVHdSQUlBUkJ1SmdnTmdJSUlBUWdBcTBnQTYxQ0lJYUVOd0lNSUFRZ0JFRUlhaUlDTmdJWUlBQWdBU0FDUVFFUW93b2hCU0FDRUJZTElBUkJJR29rQUNBRkN3a0FJQUFnQVRZQ0JBc0xBQ0FBQkVBZ0FCQWZDd3RZQVFGL0FrQWdBaWdDQkNBQ0tBSUFJZ0pyUVFKMUlBTk5EUUFnQUNBQ0lBTkJBblJxS0FJQUVMb0JJZ0F2QVI1QkRFY05BQUpBSUFBb0FpQkJDR3NPQXdBQkFBRUxJQUVnQUNnQ0FDZ0NFQkNLQWlFRUN5QUVDOHZuQVFJcWZ3WitJd0JCb0R4ckloc2tBQ0FBRUpnRUloSkJBRFlDQkNBU1FRaHFFTU1MSVNNZ0VrSUFOd0xVQVNBU1FvQ0FnSUNBQkRjQ3pBRWdFa0tBZ0FRM0FzUUJJQkpDQURjQ3ZBRWdFa0lnTndLMEFTQVNRZ0EzQXF3QklCSkNnSUNBZ0lDQXdBQTNBcVFCSUJKQ0FEY0NuQUVnRWtLQWdJQ0FnQVEzQXBRQklCSkNnSUFFTndLTUFTQVNRZ0EzQW9RQklCSkIzQUZxRU5NTElTUWdFa0dBQW1vZ0VpZ0NBQkR2RHlFbElCSkJ3QUpxRUIwaElpQVNRUUE3QWRBQ0lCSWdBU2dDQ0RZQ0FDQVNJQUVvQWd3MkFnUWdFaUFCRUxvWE9nRFFBaUFTUWJ3QmFpRW1JQkpCb0FGcUlTY2dFa0dFQVdvaEtBSkFJQUV0QU93Q1JRMEFJQUVRdWhkRkRRQWdHMEVRYWlJSUlBRTJBZ0FnQVJBY0lBZ2dBVUhJQW1vaUJUWUNCQ0FJUVFBNkFBd2dDQ0FCTmdJSVFjajJBQkFWSWdBZ0FUWUNCQ0FBUWRqUUFHcENBRGNDQUNBQVFkRFFBR3BDZ0lDQWdJQU1Od0lBSUFCQnpOQUFhaUFBUWN3RmFpSUNOZ0lBSUFBZ0FFSDBBbW8yQXNnRklBQWdBRUh3QW1vMkFzUUZJQUFnQUVIc0FtbzJBc0FGSUFBZ0FFSG9BbW8yQXJ3RklBQWdBRUhrQW1vMkFyZ0ZJQUFnQUVIZ0FtbzJBclFGSUFBZ0FFSGNBbW8yQXJBRklBQWdBRUhZQW1vMkFxd0ZJQUFnQUVIVUFtbzJBcWdGSUFBZ0FFRTRhallDcEFVZ0FDQUFRVEJxTmdLZ0JTQUFJQUJCS0dvMkFwd0ZJQUFnQUVIUUFtbzJBcGdGSUFBZ0FFSE1BbW8yQXBRRklBQWdBRUhJQW1vMkFwQUZJQUFnQUVIRUFtbzJBb3dGSUFBZ0FFSEFBbW8yQW9nRklBQWdBRUc4QW1vMkFvUUZJQUFnQUVHNEFtbzJBb0FGSUFBZ0FFRzBBbW8yQXZ3RUlBQWdBRUd3QW1vMkF2Z0VJQUFnQUVHc0FtbzJBdlFFSUFBZ0FFR29BbW8yQXZBRUlBQWdBRUdrQW1vMkF1d0VJQUFnQUVHZ0FtbzJBdWdFSUFBZ0FFR2NBbW8yQXVRRUlBQWdBRUdZQW1vMkF1QUVJQUFnQUVHVUFtbzJBdHdFSUFBZ0FFR1FBbW8yQXRnRUlBQWdBRUdNQW1vMkF0UUVJQUFnQUVHSUFtbzJBdEFFSUFBZ0FFR0VBbW8yQXN3RUlBQWdBRUdBQW1vMkFzZ0VJQUFnQUVIOEFXbzJBc1FFSUFBZ0FFSDRBV28yQXNBRUlBQWdBRUgwQVdvMkFyd0VJQUFnQUVId0FXbzJBcmdFSUFBZ0FFSHNBV28yQXJRRUlBQWdBRUhvQVdvMkFyQUVJQUFnQUVIa0FXbzJBcXdFSUFBZ0FFSGdBV28yQXFnRUlBQWdBRUhjQVdvMkFxUUVJQUFnQUVIWUFXbzJBcUFFSUFBZ0FFSFVBV28yQXB3RUlBQWdBRUhRQVdvMkFwZ0VJQUFnQUVITUFXbzJBcFFFSUFBZ0FFSElBV28yQXBBRUlBQWdBRUhFQVdvMkFvd0VJQUFnQUVIQUFXbzJBb2dFSUFBZ0FFRzhBV28yQW9RRUlBQWdBRUc0QVdvMkFvQUVJQUFnQUVHMEFXbzJBdndESUFBZ0FFR3dBV28yQXZnRElBQWdBRUdzQVdvMkF2UURJQUFnQUVHb0FXbzJBdkFESUFBZ0FFR2tBV28yQXV3RElBQWdBRUdnQVdvMkF1Z0RJQUFnQUVHY0FXbzJBdVFESUFBZ0FFR1lBV28yQXVBRElBQWdBRUdVQVdvMkF0d0RJQUFnQUVHUUFXbzJBdGdESUFBZ0FFR01BV28yQXRRRElBQWdBRUdJQVdvMkF0QURJQUFnQUVHRUFXbzJBc3dESUFBZ0FFR0FBV28yQXNnRElBQWdBRUg4QUdvMkFzUURJQUFnQUVINEFHbzJBc0FESUFBZ0FFSDBBR28yQXJ3RElBQWdBRUh3QUdvMkFyZ0RJQUFnQUVIc0FHbzJBclFESUFBZ0FFSG9BR28yQXJBRElBQWdBRUhrQUdvMkFxd0RJQUFnQUVIZ0FHbzJBcWdESUFBZ0FFSGNBR28yQXFRRElBQWdBRUhZQUdvMkFxQURJQUFnQUVIVUFHbzJBcHdESUFBZ0FFSFFBR28yQXBnRElBQWdBRUhNQUdvMkFwUURJQUFnQUVISUFHbzJBcEFESUFBZ0FFSEVBR28yQW93RElBQWdBRUZBYXlJRE5nS0lBeUFBSUFCQklHbzJBb1FESUFBZ0FFRVlhallDZ0FNZ0FDQUFRUkJxTmdMOEFpQUFJQUJCQ0dvMkF2Z0NJQUJCNEpRUU5nTDBBaUFBUWNpVUVEWUM4QUlnQUVHd2xCQTJBdXdDSUFCQm1KUVFOZ0xvQWlBQVFZQ1VFRFlDNUFJZ0FFSG9reEEyQXVBQ0lBQkIwSk1RTmdMY0FpQUFRYmlURURZQzJBSWdBRUdna3hBMkF0UUNJQUJCaUpNUU5nTFFBaUFBUWZDU0VEWUN6QUlnQUVIWWtoQTJBc2dDSUFCQndKSVFOZ0xFQWlBQVFhaVNFRFlDd0FJZ0FFR1FraEEyQXJ3Q0lBQkIrSkVRTmdLNEFpQUFRZUNSRURZQ3RBSWdBRUhJa1JBMkFyQUNJQUJCc0pFUU5nS3NBaUFBUVppUkVEWUNxQUlnQUVHQWtSQTJBcVFDSUFCQjZKQVFOZ0tnQWlBQVFkQ1FFRFlDbkFJZ0FFRzRrQkEyQXBnQ0lBQkJvSkFRTmdLVUFpQUFRWWlRRURZQ2tBSWdBRUh3anhBMkFvd0NJQUJCMkk4UU5nS0lBaUFBUWNDUEVEWUNoQUlnQUVHb2p4QTJBb0FDSUFCQmtJOFFOZ0w4QVNBQVFmaU9FRFlDK0FFZ0FFSGdqaEEyQXZRQklBQkJ5STRRTmdMd0FTQUFRYkNPRURZQzdBRWdBRUdZamhBMkF1Z0JJQUJCZ0k0UU5nTGtBU0FBUWVpTkVEWUM0QUVnQUVIUWpSQTJBdHdCSUFCQnVJMFFOZ0xZQVNBQVFhQ05FRFlDMUFFZ0FFR0lqUkEyQXRBQklBQkI4SXdRTmdMTUFTQUFRZGlNRURZQ3lBRWdBRUhBakJBMkFzUUJJQUJCcUl3UU5nTEFBU0FBUVpDTUVEWUN2QUVnQUVINGl4QTJBcmdCSUFCQjRJc1FOZ0swQVNBQVFjaUxFRFlDc0FFZ0FFR3dpeEEyQXF3QklBQkJtSXNRTmdLb0FTQUFRWUNMRURZQ3BBRWdBRUhvaWhBMkFxQUJJQUJCMElvUU5nS2NBU0FBUWJpS0VEWUNtQUVnQUVHZ2loQTJBcFFCSUFCQmlJb1FOZ0tRQVNBQVFmQ0pFRFlDakFFZ0FFSFlpUkEyQW9nQklBQkJ3SWtRTmdLRUFTQUFRYWlKRURZQ2dBRWdBRUdRaVJBMkFud2dBRUg0aUJBMkFuZ2dBRUhnaUJBMkFuUWdBRUhJaUJBMkFuQWdBRUd3aUJBMkFtd2dBRUdZaUJBMkFtZ2dBRUdBaUJBMkFtUWdBRUhvaHhBMkFtQWdBRUhRaHhBMkFsd2dBRUc0aHhBMkFsZ2dBRUdnaHhBMkFsUWdBRUdJaHhBMkFsQWdBRUh3aGhBMkFrd2dBRUhZaGhBMkFrZ2dBRUhBaGhBMkFrUWdBMEdvaGhBMkFnQWdBRUVDTmdJOElBQkJrSVlRTmdJNElBQkJBVFlDTkNBQVFaQ0dFRFlDTUNBQVFRQTJBaXdnQUVHUWhoQTJBaWdnQUVFRE5nSWtJQUJCNElVUU5nSWdJQUJCQWpZQ0hDQUFRZUNGRURZQ0dDQUFRUUUyQWhRZ0FFSGdoUkEyQWhBZ0FFRUFOZ0lNSUFCQjRJVVFOZ0lJSUFCQndJVVFOZ0lBSUFKQjRBQVFxUXdnQUVITTR3QnFRZ0EzQWdBZ0FFSEU0d0JxUW9DQWdJQ0FBemNDQUNBQVFjRGpBR29nQUVIZzBBQnFJZ0kyQWdBZ0FrRVlFSVFJSUFCQndQWUFha0lBTndJQUlBQkJ1UFlBYWtLQWdJQ0FnQU0zQWdBZ0FFRzA5Z0JxSUFCQjFPTUFhaUlDTmdJQUlBSkJHQkNFQ0NBSUlBQTJBaEFnQ0VFVWFpSUFRb0NBZ0lDQUJEY0NoQUVnQUNBQU5nS0FBU0FBUVl3QmFpSUNRZ0EzQW93WUlBSkJoQmhxUW9DQWdJQ0FERGNDQUNBQ0lBSTJBb0FZSUFKQjRBQVE4aEFnQUVHZ0dXb2lBRUlBTndMc0F5QUFRb0NBZ0lDQUF6Y0M1QU1nQUNBQU5nTGdBeUFBUVJnUTd4QWdDRUdvSFdvZ0FSQ0FBeUVBSXdCQkVHc2lBeVFBSUFFUUhDQUlRYXdkYWlJSElBRkJpQUpxTmdJQUlBRVFIQ0FISUFBMkFnZ2dCeUFGTmdJRUl3QkJ3QUZySWdBa0FDQUFRUkJxRUpvZUlRUWdBRUVCTmdLOEFTQUFJQVEyQXJnQklBQWdBQ2tEdUFFM0F3Z2dCMEVNYWlJQ1FhUUtha0tBZ0lDQWdBRTNBZ0FnQWlBQ05nS2dDaUFDSUFBb0Fnd2lCaENzSFNBQUtBSUlJZ1VnQmtHa0FXeHFJUWtEZnlBRklBbEdCSDhnQWdVZ0FpQUNLQUtrQ2lJR1FRRnFOZ0trQ2lBQ0tBS2dDaUFHUWFRQmJHb2lCa0tBZ0lDQTRBQTNBcFFCSUFZZ0JqWUNrQUVnQmlBRlFaQUJhaENySFNBR0lBVXBBcHdCTndLY0FTQUZRYVFCYWlFRkRBRUxDeUVDSUFRUStBY2dBRUhBQVdva0FDQUhJQWhCbkRScUlnQTJBc0FLSUFjZ0NFR3NLV29pQlRZQ3ZBb2dCeUFJUWZBbmFpSUhOZ0s0Q2lBRFFRQTZBQXdnQTBFQk5nSUlJQUlnQTBFSWFpSUdRUUVRK3dzZ0EwRUJPZ0FNSUFOQkFUWUNDQ0FDSUFaQkJCRDdDeUFEUVJCcUpBQWdCeERmQmhvZ0NFR2tLV3BDZ0lDQWdJQUJOd0lBSUFoQm9DbHFJQWhCZ0NscU5nSUFJQVVRb2dZYUlBaEJ1Q3RxUWdBM0FnQWdDRUlBTndLd0t5QUlRY1FyYWtJQU53SUFJQWhCQXpZQ3dDc2dDRUhNSzJwQ0FEY0NBQ0FJUWRRcmFrS0FnSUNBZ0lDQXdEODNBZ0FnQ0VIY0syb1FvZ1lhSUFoQjRDMXFFTEFlSUFoQjlEQnFFTEFlSUFoQm1EUnFRUUEyQWdBZ0NFR1FOR3BDQURjQ0FDQUlRZ0EzQW9nMElBQVFvZ1lhSUFoQm9EWnFFS0lHR2lBSVFhUTRhaERlQmhvZ0NFR0lPbXBCQURZQ0FDQUlRWUE2YWtJQU53SUFJQWhCL0RscVFkM3JBVFlDQUNBSVFRQTJBdmc1SUFoQmpEcHFFS0lHR2tFQUlRQWpBRUdnQVdzaUh5UUFBa0FnQ0NnQ0JDZ0NEQTBBSUFnb0FnQWlBaEFjSUFKQjVBRnFJQWdvQWdBb0Fnd1E1QkFnQ0NnQ0FDSUNFQndnQWlnQ3BBRWlCVUVmYWtFRmRpSURJQWhCc0N0cUlnSW9BZ2hMQkVBZ0FpZ0NBQ0VHSUFJZ0F4RENEU0FDS0FJQUlRUkJBQ0VIQTBBZ0FpZ0NCQ0FIVFFSQUlBWVFpQVFGSUFRZ0IwRUNkQ0lKYWlBR0lBbHFLQUlBTmdJQUlBZEJBV29oQnd3QkN3c0xJQUlvQWdRaUJ5QURJQU1nQjBrYklRWWdBaWdDQUNFRUEwQWdCaUFIUmdSQUlBSWdBellDQkFVZ0JDQUhRUUowYWtFQU5nSUFJQWRCQVdvaEJ3d0JDd3NnQlVFZmNTSURCRUFnQWlnQ0FDQUNLQUlFUVFKMGFrRUVheUlISUFjb0FnQkJmeUFEZEVGL2MzRTJBZ0FMSUFJZ0JUWUNEQUovSUFnb0FnQVE4Z0loQXlBSUtBSUVJUUlqQUVHUXl3QnJJZ1lrQUNBR1FkQUlha0lBTndNQUlBWkJ5QWhxUW9DQWdJQ0FBemNEQUNBR1FjUUlhaUFHUVNScUloQTJBZ0FnQmtFQU5nSWdJQVpDZ0lDQWdJQUVOd01ZSUFaQ2dJQUVOd01RSUFaQ0FEY0RDQ0FHSUFoQkZHb2lIRFlDQkNBR0lBSTJBZ0FnRUVFWUVJSVJJQVpCNUNacVFnQTNBZ0FnQmtIY0ptcENnSUNBZ0lBTU53SUFJQVpCMkNacUlBWkIyQWhxSWdvMkFnQWdDa0hnQUJDQkVTQUdRZkFvYWtLQWdJQ0FnQWczQXdBZ0JrSHNLR29nQmtIc0ptb2lCVFlDQUNBR1FmZ29haUlFUW9DQWdJQ0FDRGNDaEFJZ0JDQUVOZ0tBQWlBRVFZd0NhaUlDUWdBM0Fvd01JQUpCaEF4cVFvQ0FnSUNBRERjQ0FDQUNJQUkyQW9BTUlBSkI0QUFRN1JBZ0JpZ0NCRUdNQVdvZ0F5Z0NxQUlRZ0JFZ0JDQURLQUtvQWlJSEVQWUtJQUlnQnhEWEhpQURLQUtrQWlJWklBTW9BcWdDUVFKMGFpRU5JQVpCc0RkcUlRd2dCa0VVYWlFUEEwQUNRQ0FOSUJsSEJFQWdHU2dDQUNFUklBWW9BZ3doQXdKQUlBWW9BaEJCQTJwQmZIRWlBa0hSL3dOclFmNy9lMHNFUUNBRElRY01BUXNnQmtHUWdBUkJFQkRaQWlJSE5nSU1JQWRCQURZQ2dJQUVBa0FnQXdSQUlBTWdCellDZ0lBRURBRUxJQVlnQnpZQ0NBdEJBQ0VDQ3lBR0lBSkJNR28yQWhBZ0FpQUhhaUlMUW9DQWdJQ0FBVGNDS0NBTElBdEJCR28yQWlRZ0N5QVJOZ0lBSUFZb0FoZ2hBd0pBSUFZb0Fod2lDVUVnU1FSQUlBTWhBZ3dCQ3dKQUlBSkJNMnBCZkhFaUNVSDUvZ05yUWY3L2Uwc0VRQ0FISVFJTUFRc2dCa0dRZ0FSQkVCRFpBaUlDTmdJTVFRQWhDU0FDUVFBMkFvQ0FCQ0FISUFJMkFvQ0FCQXNnQmlBQ0lBbHFJZ0kyQWhnZ0JpQUpRWWdCYWpZQ0VDQUNJQU0yQW9RQlFRQWhDU0FDUVFBMkFvQUJJQU5CZ0FGcUlBOGdBeHNnQWpZQ0FBc2dCaUFKUVFGcU5nSWNJQUlnQ1VFQ2RHb2dDellDQUNBR0lBczJBdUJKSUFZZ0JpZ0NJRUVCYWpZQ0lDQUdRYWpKQUdvZ0JpQVJFT29lQWtBZ0JpZ0NxRWtpQjBGL1JnMEFJQVlvQXNnSUlna2dCaWdDMEFnaUFrR1dBV3hCbGdGcVFlUUFia2tFUUNBUUlBSkJBWFJCQW1vUTZSNGdCaWdDeUFnaENTQUdLQUtvU1NFSEN5QUpRUUZySVJFZ0J5QUpjQ0VDSUFZZ0JrSGd5UUJxTmdMc1NTQUdJQVpCcU1rQWFqWUM2RWxCQUNFREEwQWdBeUFKUndSQUlBWW9Bc1FJSUFKQkxHeHFJZ3N0QUNCRkJFQWdCa0dZTjJvaUFpQUdRZWpKQUdvUS9BVWdDeUFDRUpVTUlBc2dBellDS0NBTElBYzJBaVFnQmlBR0tBTFFDRUVCYWpZQzBBZ2dCaUFHS0FMVUNFRUJhallDMUFnTUF3c2dDeUFISUFaQnFNa0FhaEM1Q1EwQ0lBTWdDeWdDS0VzRVFDQUdRZkRKQUdvaUNTQUdRZWpKQUdvUS9BVWdCa0dZTjJvZ0NSQ1VEQ0VKSUFZZ0F6WUN3RGNnQmlBSE5nSzhOeUFKSUFzUTRRWWdCaUFHS0FMQU4wRUJhallDd0RjZ0VDQUNRUUZxSUFZb0FzZ0ljQ0FKRU9nZUlBWWdCaWdDMEFoQkFXbzJBdEFJSUFZZ0JpZ0MxQWhCQVdvMkF0UUlJQWtRcWdJTUF3VWdBa0VCYWtFQUlBSWdFVWNiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVpCbURkcVFZYTFBMEhyQTBFT0lBWkI4TWtBYWhBZElnSVFGeUVESUF4QmxqVVFEaG9nQXhBWUlBSVFIZ3NnQmlnQzhDZ2lCeUFHS0FMMEtDSUNTUTBCSUFJZ0FrRUJkQ0lMUVFJZ0Foc2lBMDhOQVNBR0tBTHNLQ0VKSUFVaEFpQUdJQU5Cd0FCUEJIOUJmeUFEUVFKMElBTkIvLy8vL3dOTEd4QVZJUUlnQ3dWQndBQUxOZ0wwS0NBR0lBSTJBdXdvUVFBaEF3TkFJQU1nQjBZRVFDQUZJQWtRTmlBR0tBTHdLQ0VIREFNRklBTkJBblFpQWlBR0tBTHNLR29nQWlBSmFpZ0NBRFlDQUNBRFFRRnFJUU1NQVFzQUN3QUxJQVlnQ2pZQ3BEY2dCaUFHS1FNQU53S2NOeUFHSUJBMkFwZzNJd0JCc0FKcklnSWtBQ0FDUVFocUVNc2VJUXNnQWtFQk5nS3NBaUFDSUFzMkFxZ0NJQUlnQWlrRHFBSTNBd0FnQmtHb04yb2lCMEhrRVdwQ2dJQ0FnSUFCTndJQUlBY2dCellDNEJFZ0J5QUNLQUlFSWdrUXhoNGdBaWdDQUNJRElBbEJuQUpzYWlFUkEzOGdBeUFSUmdSL0lBY0ZJQWNnQnlnQzVCRWlDVUVCYWpZQzVCRWdCeWdDNEJFZ0NVR2NBbXhxSWdsQ2dJQ0FnT0FBTndLTUFpQUpJQWsyQW9nQ0lBa2dBMEdJQW1vUXd4NGdDU0FES1FLVUFqY0NsQUlnQTBHY0Ftb2hBd3dCQ3dzaENTQUxFUHNISUFKQnNBSnFKQUFnQmtFQU5nS1VTU0FHSUFZb0FzUUlJZ0kyQXZCSklBWWdBaUFHS0FMSUNFRXNiR28yQXZSSklBWkI4TWtBYWhEL0VDQUdJQVlvQXNRSUlBWW9Bc2dJUVN4c2FpSUNOZ0tzU1NBR0lBSTJBcWhKSUFaQnFNa0FhaEQvRUNBR0tBS29TU0VEQWtBRFFDQURJQVlvQXZCSklnSkhCRUFnQWkwQUlFVU5BaUFKSUFJZ0FpZ0NIQ2dDQUJEbkhob2dBaUFHS0FMMFNVWU5BU0FHSUFKQkxHbzJBdkJKSUFaQjhNa0FhaEQvRUF3QkN3c2dCaWdDN0NnaUJ5QUdLQUx3S0VFQ2RHb2hFUU5BQWtBQ1FDQUhJQkZIQkVBZ0JpZ0NsRWtoRFNBR0lBY29BZ0FpQWpZQ2xFa2dCaUFDTmdLa1NTQUNLQUlBSVFJZ0JpQUdRYVRKQUdvMkFweEpJQVlnQmtHWU4ybzJBcGhKSUFKRkJFQWdCa0dZeVFCcUVPWWVEQU1MSUFJb0FnUWlBMEhZOXhGR0JFQWdCa0dZTjJvZ0JrSHd5UUJxSUFJb0FpUkJKR29RVmlBQ0VQOEhJQUlvQWtnaUF5QUNLQUpNUVFKMGFpRUxBMEFnQXlBTFJnMEVJQU1vQWdBaEFpQUdRUUE2QUt4SklBWWdBa0U4YWpZQ3FFa2dCa0dZTjJvaURDQUdRYWpKQUdvUXVBa2dEQ0FDS0FJb0VOOEJJQU5CQkdvaEF3d0FDd0FMSUFOQm1QZ1JSZ1JBSUFaQm1EZHFJZ01nQmtId3lRQnFJQUlvQWlSQkpHb1FWaUFDRVA4SElBTWdBaWdDS0JEZkFRd0RDeUFEUWZqekQwY05BU0FHUVpnM2FpSURJQVpCcU1rQWFpQUNLQUlrUVNScUVGWWdBaEQvQnlBR1FRQTZBT3hKSUFZZ0FrSGtBR28yQXVoSklBTWdCa0hveVFCcUVMZ0pJQVpCQURvQTVFa2dCaUFDUWZnQWFqWUM0RWtnQXlBR1FlREpBR29RdUFrZ0FpZ0NTQ0lESUFJb0FreEJBblJxSVF3RFFDQURJQXhHQkVBZ0JrR1lOMm9nQWlnQ1ZCRGZBU0FKRUxjSklBSW9Ba2dpQXlBQ0tBSk1RUUowYWlFTEEwQWdBeUFMUmdSQUlBSW9BbGdpQWdSQUlBWkJBRG9BekVrZ0JpQUNRY1FBYWpZQ3lFa2dCa0dZTjJvZ0JrSEl5UUJxRVA0UUN5QUpFTFlKREFZTElBWWdBeWdDQUNJTU5nTFVTU0FHSUFrZ0RDZ0NKRUVrYWhEOUVDSU1OZ0xRU1NBTUJFQWdCa0hJeVFCcUlBWW9BcUEzUWFBWmFpQUdRZFRKQUdvZ0JrSFF5UUJxRVB3UUN5QUdRWmczYWlBR1FmREpBR29nQmlnQzFFa29BaVJCSkdvUVZpQUdLQUxVU1JEL0J5QURRUVJxSVFNTUFBc0FCU0FES0FJQUlRc2dCa0VBT2dEY1NTQUdJQXRCT0dvMkF0aEpJQVpCbURkcUlnOGdCa0hZeVFCcUVMZ0pJQThnQ3lnQ0tCRGZBU0FEUVFScUlRTU1BUXNBQ3dBTFFRQWhCd05BSUFrb0F1UVJJQWROQkVBZ0NVRUFOZ0xrRVFVZ0NTZ0M0QkVnQjBHY0FteHFFUHNISUFkQkFXb2hCd3dCQ3dzZ0NTQUpLQUxnRVJBMkFrQWdCaWdDQUNnQ0RBMEFJQVlvQXV3b0lnTWdCaWdDOENoQkFuUnFJUUlEUUNBQ0lBTkdCRUFnQmlnQzdDZ2lDU0FHS0FMd0tFRUNkR29oRVNBR1FZaktBR29oRFNBR1FjUTNhaUVDQTBBZ0NTQVJSZzBESUFrb0FnQWlCeWdDQUJEN0VFVUVRQ0FHUWdBM0E1QTVJQVpDZ0lDQWdNQUJOd09JT1NBR0lBSTJBb1E1SUFaQ2dJQ0FnSUFCTndLOE55QUdJQVpCbURkcUlnTTJBcmczSUFKQkRCRDZFQ0FHSUFZMkFxeEpJQVlnQXpZQ3FFa2dCa0dveVFCcUlBY1E1UjRFUUNBR1FvQ0FnSUNBQWpjQzlFb2dCaUFHUWZESkFHb2lBellDOEVvZ0EwRUJFT1FlSUFZZ0JpZ0M5RW9pQTBFQmFqWUM5RW9nQmlnQzhFb2dBMEVEZEdvaUEwRUFOZ0lFSUFNZ0J6WUNBQU5BSUFZb0F2QktJQVlvQXZSS1FRTjBha0VJYXlJREtBSUVJZ3dnQXlnQ0FDSUxLQUlvU1FSQUlBWkJxTWtBYWlBTEtBSWtJQXhCQW5ScUlnc29BZ0FRNVI1RkJFQWdBeUFES0FJRVFRRnFOZ0lFREFJTElBc29BZ0FoRENBR0tBTDBTaUlESUFZb0F2aEtJZ3RQQkVBZ0JrSHd5UUJxSUF0QkFYUkJBaUFMR3hEa0hpQUdLQUwwU2lFREN5QUdJQU5CQVdvMkF2UktJQVlvQXZCS0lBTkJBM1JxSWdOQkFEWUNCQ0FESUF3MkFnQU1BUXNnQkNBTEVQa1FJQVpCbURkcUVPTWVJQVlnQmlnQzlFb2lDMEVCYXlJTU5nTDBTaUFHS0FMd1NpRURJQXdFUUNBTFFRTjBJQU5xUVF4cklnTWdBeWdDQUVFQmFqWUNBQXdCQ3dzZ0JrRUFOZ0wwU2lBR1FmREpBR29nQXhBMkN5QUVJQWNRK1JBZ0JpZ0N2RGNFUUNBR1FmREpBR3BCbHE0RlFiSUZRUWdnQmlnQ0FCQVhJUU1nRFVHUDhRZ1FEaG9nQXhBWUN5QUNFT0llSUFaQkFEWUNpRGtnQWlBR0tBS0VPUkEySUFaQm1EZHFFQ01MSUFsQkJHb2hDUXdBQ3dBTElBTW9BZ0FpQnlnQ0FCRDdFQVJBSUFRZ0J4RDVFQXNnQTBFRWFpRUREQUFMQUFzZ0JpQUdRZmdxYWlJQ05nS1lOeUFHSUFJb0FnQWdCRWM2QUp3M0lBWkJtRGRxSWdjb0FnQWdCaWdDQkNJQ1FZQUJha2NFUUFKQVFRQWhBeUFITFFBRUJFQWdBaERjQlNBQ0lBY29BZ0FpQXlrQ0FEY0NnQUVnQWlBREtBSUlOZ0tJQVNBSEtBSUFJZ0pCQURZQ0NDQUNRZ0EzQWdBTUFRc0NRQ0FDS0FLSUFTQUhLQUlBSWdjb0FnUkpCRUFnQWhEY0JTQUNJQWNvQWdRUTNnNE1BUXNnQWtFQU5nS0VBUXNnQWlBSEtBSUVJZ2syQW9RQkEwQWdBeUFKUndSQUlBTkJBblFpQ3lBQ0tBS0FBV29nQnlnQ0FDQUxhaWdDQURZQ0FDQURRUUZxSVFNTUFRc0xDd3NnQmlnQ0FDZ0NEQ0VKSUFSQmpBSnFJZ0lRMFI0Z0FrR0VER3BCQURZQ0FDQUNJQUlvQW9BTUVEWWdCQkNUQlNBR1FRQTJBdkFvSUFVZ0JpZ0M3Q2dRTmlBS0VPRWVJQVpCQURZQzNDWWdDaUFHS0FMWUpoQTJJQkFRNEI0Z0VCRGZIaUFRSUFZb0FzUUlFRFpCQUNBR0tBSWNJZ0lnQWtFZlN5SUNHeUVGUVFBZ0JpZ0NHQ0FDR3lFRUlBWW9BaFFoQndOQVFRQWhBd0pBQTBBZ0JDQUhSeUFESUFWSGNrVUVRQ0FHS0FJSUlRTURRQ0FEUlEwRElBTW9Bb0NBQkNFQ0lBTVFIeUFDSVFNTUFBc0FDeUFISUFOQkFuUnFLQUlBSWdKQkFEWUNLQ0FDUVFScUlBSW9BaVFRTmlBRFFRRnFJZ05CSUVjTkFBc2dCeWdDZ0FFaEJ3d0JDd3NnQmtHUXl3QnFKQUFnQ1VVTUJnc2dBeERkQlFSQUlBWkJtRGRxSWdNZ0JrSHd5UUJxSUFJb0FpUkJKR29RVmlBQ0VQOEhJQU1nQWhEZUhnd0JDeUFEUWVqMUQwWWdBMEdvOWc5R2NnMEFJQU5Cd1BZUFJnUkFJQVpCbURkcUlBSW9BaVFRM3dFTUFRc2dCa0dZeVFCcUVPWWVDeUFHSUEwMkFwUkpJQWRCQkdvaEJ3d0FDd0FMRUc4QUN5QUdJQWRCQVdvMkF2QW9JQVlvQXV3b0lBZEJBblJxSUFZb0F1QkpOZ0lBSUJsQkJHb2hHUXdBQ3dBTFJRMEFRUUFoR1NNQVFlQUJheUlRSkFBZ0NDQUlLQUlBRVBJQ0VETWFJQkJDZ0lDQWdNQUFOd0xVQVNBUUlCQkJ3QUZxTmdMUUFTQUlLQUtVQVNJUklBZ29BcGdCUVFKMGFpRXBJQkJCMEFGcUlTb0NRQUpBQTBBZ0VTQXBSd1JBSUJBZ0VTZ0NBQ0lDTmdLOEFTQUlJQUlRTXhvZ0VDZ0N2QUVoQkNBUUlBZzJBZ0FnRUNBUVFid0JhallDQkFKQUFrQWdCQVJBSUFRb0FnUWlBa0hvOVE5R0JFQWdFQ0FFUVNScUlnSTJBdHdCSUJCQndBRnFJQkJCM0FGcUVIRWdDQ0FDRUVNTUF3c2dBa0dvOWc5R0JFQWdCQ2dDTkNJRElBUW9BamhCQW5ScUlRVWdDRUh3SjJvaEJ3Ti9JQU1nQlVZRWYwRUJCU0FJSUFNb0FnQWlCaEF6R2lNQVFSQnJJZ0lrQUNBQ1FRaHFJQWRCSEdvZ0JrRWthaUlHRUp3ZElBSW9BZ2doQkNBQ1FSQnFKQUFnQkVFQ1J3UkFJQWNnQmhDbkJBc2dBMEVFYWlFRERBRUxDeG9NQXdzZ0FoRGhDQVJBSXdCQm9BRnJJaE1rQUNBSUlBUW9BaVFRTXhvQ1FBSkFBa0FDZnlBRVJTQUVLQUlFSWdKQm1QZ1JSM0pGQkVBZ0NDQUVLQUlvRU5BRElnSUVmeUFDQlVFQUN3d0JDeUFFUlNBQ1FkajNFVWR5RFFGQkFDRU5RZ0FoTEVFQUlSY2pBRUdnQjJzaUJTUUFJQVZCQURvQTlBWWdCU0FFTmdMOEJpQUZJQVJCNUFCcU5nTHdCaUFGSUFWQi9BWnFOZ0w0QmlBSVFhd2RhaUlHSUFWQjhBWnFRUWdRc1FNaEF5QUZLQUw4QmlFQ0FrQUNRQ0FEUlEwQUlBSW9Ba3hCZ0lBQlNRMEFJQVZCZ0FkcUlnSWdCVUg0Qm1vUThSMGdCVUdRQjJvaUEwR2VpZ2tnQWhBMUlBVkJ5QUZxSWdjZ0EwRzk1UWtRTFNBRlFlQUdhaUlHSUFVb0F2d0dLQUpNRUY4Z0JVR1lCbW9pQ1NBSElBWVFUaUFGUVRocUlnc2dDVUd2M1FrUUxTQUZRZEFHYWlJS1FmLy9BQkJmSUFWQjhBRnFJZ3dnQ3lBS0VFNGdDQ0FNSUFVb0F2d0dRUkJxRUNjZ0RCQVBHaUFLRUE4YUlBc1FEeG9nQ1JBUEdpQUdFQThhSUFjUUR4b2dBeEFQR2lBQ0VBOGFEQUVMSUFWQkFEb0F6QVlnQlNBQ1FlUUFhallDeUFZZ0JpQUZRY2dHYWhCQlJRMEFJQVVvQXZ3R0lnTW9BbVFpQWlBREtBSm9RUUowYWlFSEEwQWdBaUFIUndSQUlBVWdBaWdDQUNJRE5nSTRJQWdnQXhBekdpQUZLQUk0SVFNZ0JTQUlOZ0x3QVNBRklBVkJPR28yQXZRQkFrQWdBd1JBSUFNb0FnUVE5Z01OQVFzakFFRVFheUlDSkFBZ0JTZ0M4QUVoQXlBRktBTDBBU2dDQUNFSElBSkJFellDRENBQ1FmQ2dBVFlDQ0NBQ0lBSXBBd2czQXdBZ0F5QUhJQUlRUUNBQ1FSQnFKQUFNQXdzZ0FrRUVhaUVDSUFnZ0F4Q3NCUTBCREFJTEN5QUZRb0NBZ0lDQUFUY0N2QVlnQlNnQy9BWWhBaUFGSUFWQm1BWnFJZ00yQXJnR0lBTWdBaWdDVEJBNUlBVkI4QUZxSWc5Q0FEY0NuQVFnRDBLQWdJQ0F3QUUzQXBRRUlBOGdEellDa0FRZ0QwRU1FTG9RSUFVb0F2d0dJZ0lvQWtnaUF5QUNLQUpNUVFKMGFpRVdRZ0VoTHdKL0FrQUNRQU5BSUFNZ0ZrY0VRQ0FGSUFNb0FnQWlBallDMEFZZ0NDQUNFRE1hSUFnZ0JTZ0MwQVlvQWlRUU14b2dCVUdBQjJvZ0R5QUZLQUxRQmlnQ0pFRWthaUFGUWRBR2FoRHdIU0FGS0FLQUIwRUNSZ1JBSUFWQmtBZHFJZ01nQlNnQzBBWW9BaVJCSkdvUVV5QUZRY2dCYWlJSFFmQ1BDU0FERURVZ0JVRTRhaUlDSUFkQjg1b0pFQzBnQ0NBQ0lBVW9BdEFHUVJCcUVDY2dBaEFQR2lBSEVBOGFJQU1RRHhvZ0NDQUNRZXZyQXhBVUlnSWdCU2dDaEFjb0FnQkJFR29RaGdFZ0FoQVBHZ3dFQ3lBRklBZ2dCU2dDMEFZb0FpZ1EwQU1pQWpZQ0lDQUNSUTBESUFnZ0FoRDZIU0VDSUFVb0FpQVFtQWxGQkVBZ0JVSElBV29pQWlBSVFhZ2RhaUFGS0FJZ0VLY0JJQVZCT0dvaUF5QUNRY244QVJBdElBZ2dBeUFGS0FMUUJrRVFhaEFuSUFNUUR4b2dBaEFQR2d3RUN5QUZLQUlnSWdjZ0J5Z0NBQ2dDRkJFQUFDRUhJQVVvQWlBaUNTQUpLQUlBS0FJUUVRQUFJUXNnQlVFQU9nRHNBU0FGSUFVb0F0QUdRVHhxTmdMb0FTQUdJQVZCNkFGcUVFRkZEUU1nRFNBQ0lBSWdEVWtiSVExQkFDRU1JQVZCQURvQTVBRWdCVUVBT2dEZ0FTQUZRUUE2QU5nQklBVkJBRG9BMUFFZ0JVRUFPZ0RRQVNBRlFRQTZBTXdCSUFWQkFEb0F5QUVnQlNnQzBBWWlBaWdDUENJSklBSkJRR3NvQWdCQkFuUnFJUlVnQjYwaExpQUxyU0V3UVFBaENpQXNJUzFCQUNFT0EwQWdDU0FWUndSQUlBVWdDU2dDQUNJQ05nSVFJQWdnQWhBekdpQUZLQUlRSVFJZ0JTQUlOZ0xnQmlBRklBVkJFR28yQXVRR0FrQUNRQ0FDQkVBZ0FpZ0NCQ0lIUWFDREVrWUVRQ0FJS0FMRUt5RUhJQWhCeHM4RE5nTEVLeUFJS0FMQUt5RUxJQWhCQVRZQ3dDc0NRQUpBSUFnZ0NDQUNLQUlrRUlVQ1FRQVFsZ0lpRGtVTkFDQU9LQUljSWc1RkJFQWdDQ0FGUVRocVFmN2xBaEFVSWdNZ0FpZ0NKRUVRYWhBbklBTVFEeG9NQVFzZ0RoRHZIU0l0SUN4YURRRWdDQ0FGUVRocVFhajNBUkFVSWdNZ0FrRVFhaEFuSUFNUUR4b0xJQWdnQnpZQ3hDc2dDQ0FMTmdMQUt3d0tDeUFJSUFjMkFzUXJJQWdnQ3pZQ3dDdEJBU0VPREFNTElBZEI0UDBSUmdSQUlBZ29Bc1FySVFjZ0NFSC84UUkyQXNRcklBZ29Bc0FySVFzZ0NFRUJOZ0xBS3dKQUFrQWdDQ0FJSUFJb0FpUVFoUUpCQUJDV0FpSUtSUTBBSUFvb0FoUVFyZ2xGQkVBZ0NDQUZRVGhxUWNmVEF4QVVJZ01nQWtFUWFoQW5JQU1RRHhvTUFRc2dDaWdDSENJS1JRUkFJQWdnQlVFNGFrR2k1Z0lRRkNJRElBSkJFR29RSnlBREVBOGFEQUVMSUFvUVl5SXVRZ0JWSUM1N1FnSlVjUTBCSUFnZ0JVRTRha0gzOEFFUUZDSURJQUpCRUdvUUp5QURFQThhQ3lBSUlBYzJBc1FySUFnZ0N6WUN3Q3NNQ2dzZ0NDQUhOZ0xFS3lBSUlBczJBc0FySUM1Qy8vLy8vdytESVM1QkFTRUtEQU1MSUFkQitQMFJSZ1JBSUFnb0FzUXJJUWNnQ0VHZHhRTTJBc1FySUFnb0FzQXJJUXNnQ0VFQk5nTEFLeUFJSUFnZ0FpZ0NKQkNGQWtFQUVKWUNJZ3hGRFFnZ0RDZ0NGQkR6QjBVRVFDQUlJQVZCT0dwQmo5UURFQlFpQXlBQ1FSQnFFQ2NnQXhBUEdnd0pDeUFNS0FJY0lneEZCRUFnQ0NBRlFUaHFRY1htQWhBVUlnTWdBaWdDSkVFUWFoQW5JQU1RRHhvTUNRc2dEQkJqUWdCWEJFQWdDQ0FGUVRocVFkSHhBUkFVSWdNZ0FrRVFhaEFuSUFNUUR4b01DUXNnTUNBTUVPOGRJakZZQkVBZ0NDQUhOZ0xFS3lBSUlBczJBc0FySURGQy8vLy8vdytESVRCQkFTRU1EQVFMSXdCQk1Hc2lBeVFBSUFOQkNHb2dBMEVRYWlJSklBTkJKV29nTUJDWUV5QUZRWUFIYWlJR0lBa2dBeWdDQ0JEbUNTQURRVEJxSkFBZ0JVR1FCMm9pQTBIVi9nZ2dCaEExSUFWQk9Hb2lDU0FEUWUvMkNCQXRJQWdnQ1NBQ1FSQnFFQ2NnQ1JBUEdpQURFQThhSUFZUUR4b01DQXNnQjBHWS9SRkdCRUFnQlVFNGFpSUhJQWdnQWhDSURDQUhFREFOQ1NBRlFUaHFFQm9vQWdBaEFpQUZRUUU2QU13QklBVWdBallDeUFFTUF3c2dCMEg0K2hGR0JFQWdCVUU0YWlJSElBZ2dBaENIRENBSEVEQU5DU0FGUVRocUVCb29BZ0FoQWlBRlFRRTZBTlFCSUFVZ0FqWUMwQUVNQXdzZ0IwSFEvQkZHQkVBZ0JVRTRhaUlISUFnZ0FoQ0dEQ0FIRUdJTkNTQUZJQVZCT0dvUVNpa0NBRGNEMkFFZ0JTMEE0QUVOQXlBRlFRRTZBT0FCREFNTElBZEJxSUlTUmdSQUlBVkJBVG9BNUFFTUF3c2dCMEhZZ2hKR0JFQWdCVUVBT2dBOElBVWdCU2dDMEFaQlBHbzJBamdnQmlBRlFUaHFRUVVRc1FORkRRTWdCVUVPTmdLVUJ5QUZRZUtaQVRZQ2tBY2dCU0FGS1FPUUJ6Y0RDQ0FJSUFVb0FoQWdCVUVJYWhCQURBa0xJQWNROWdNTkFRc2pBRUVRYXlJQ0pBQWdCU2dDNEFZaEF5QUZLQUxrQmlnQ0FDRUhJQUpCRGpZQ0RDQUNRZUtaQVRZQ0NDQUNJQUlwQXdnM0F3QWdBeUFISUFJUVFDQUNRUkJxSkFBTUJ3c2dDQ0FDRUt3RlJRMEdDeUFKUVFScUlRa01BUXNMSUE1RklBb2dESEpGY2tVRVFDQUlJQVZCT0dwQjk4UURFQlFpQWlBRktBTFFCa0VRYWhBbklBSVFEeG9NQkFzZ0xTQXVmRUlCZlNJc0lDd2dMb0o5SWl4Q2dJQ0FnQkJhQkVBZ0JVRTRhaEJKSWdKQkNHb2lBMEh4SmhBT0dpQUNJQUlvQWdCQkRHc29BZ0JxSWdjZ0J5Z0NCRUcxZjNGQkNISTJBZ1FnQXlBc0VNTUVHaUFEUWNFbkVBNGFJQUlnQWlnQ0FFRU1heWdDQUdvaUJ5QUhLQUlFUWJWL2NVRUljallDQkNBRFFYOFFJUm9nQTBIeHJnRVFEaG9nQlVHUUIyb2lBeUFDUVF4cUVFSWdDQ0FESUFVb0F0QUdRUkJxRUNjZ0F4QVBHaUFDRUZFTUJBVWdDQ2dDQUNFQ0lBVW9BdEFHS0FJa0lRY2dCU0FGS0FLOEJqWUNrQWNnQlNBc1BnS0FCeUFGSUM0K0F1QUdJQVVnTUQ0Q0VDQUNFQndnQjBFa2FpRU9JQVZCeUFGcUlSVWpBRUVnYXlJTEpBQWdBa0h3QUdvaUNTZ0NCQ0VIQWtBZ0FpZ0NlRUVEYWtGOGNTSUtRYUgvQTJ0Qi92OTdTd1JBSUFjaEFnd0JDeUFKUVpDQUJFRVFFTmtDSWdJMkFnUkJBQ0VLSUFKQkFEWUNnSUFFSUFjRVFDQUhJQUkyQW9DQUJBd0JDeUFKSUFJMkFnQUxJQWtnQ2tIZ0FHbzJBZ2dnQlNnQzBBWWhEQ0FMSUE0UVZpRVVJQVVvQWlBaERpQUZLQUtRQnlFYUlBVW9Bb0FISVJnZ0JTZ0M0QVloSFNBRktBSVFJUjRqQUVIUUFXc2lCeVFBSUFjZ0dqWUN5QUVnQnlBT05nTE1BU0FISUJnMkFzUUJJQWNnSFRZQ3dBRWdCeUFlTmdLOEFTTUFRU0JySWc0a0FDQUNJQXBxSUE0Z0ZCQldJQWNvQXN3QklBY29Bc2dCSUFjb0FzUUJJQWNvQXNBQklBY29BcndCSUJVUTJnOGlBa0dZbVJJMkFnUWdBa0dRbWhJMkFnQWdEa0VnYWlRQUlBSWdERFlDWENBQ1FkeVpFallDQUNBTVJRUkFJQWRCQ0dwQnVaZ0ZRUzFCQ1NBSFFhZ0JhaEFkSWdvUUZ5SU1RUmhxUWZHcUNCQU9HaUFNRUJnZ0NoQWVDeUFIUWRBQmFpUUFJQWtnQWhBb0lBa2dDU2dDR0VFQmFqWUNHQ0FMUVNCcUpBQWdCU0FDTmdJNElBZ29BZ0FpQWhBY0lBSkI1QUZxSUFVb0F0QUdJQVVvQWpnUXVRRWdMeUF1SUM0Z0wxUWJJUzhnQTBFRWFpRURJQ3dnTUh3aExDQUZRWmdHYWlBRlFUaHFFQ1FNQWdzQUN3c2dMQ0F2ZkVJQmZTSXRJQzBnTDRKOUlpMUNnSUNBZ0JCYUJFQWdCVUU0YWhCSklnSkJDR29pQTBHS0p4QU9HaUFDSUFJb0FnQkJER3NvQWdCcUlnY2dCeWdDQkVHMWYzRkJDSEkyQWdRZ0F5QXRFTU1FR2lBRFFkV3VBUkFPR2lBRlFjZ0JhaUlESUFKQkRHb1FRaUFJSUFNZ0JTZ0MvQVpCRUdvUUp5QURFQThhSUFJUVVRd0NDeUFJS0FJQUlRSWdCU2dDL0FZb0FpUWhBeUFGSUM4K0FqZ2dCU0F0UGdMSUFTQUZJQ3crQXBBSElBSVFIQ01BUWRBQmF5SUpKQUFnQlNnQy9BWWhCeUFKUVJCcUlBTkJKR29pRlJCV0lRTWdDVUVBT2dBTUlBa2dCVUdZQm1vaUNrRWdhallDQ0NBSlFUQnFJQWNnQXlBSlFRaHFJQVVvQWpnZ0JTZ0N5QUVnQlNnQ2tBY1E5QnNpRGlnQ0NDRVdJQWtnRGpZQ0JDQUpJQlkyQWdBQ1FDQUNRUkJxSWdKQkhHb2lGQ0FKRUwwQklnTUVRQ0FES0FJTUlRSU1BUXNqQUVFd2F5SUxKQUFnQWlJREtBSUVJUWNDUUNBQ0tBSUlRUWRxUVhoeElneEI0ZjREYTBIKy8zdExCRUFnQnlFQ0RBRUxJQU5Ca0lBRVFSQVEyUUlpQWpZQ0JFRUFJUXdnQWtFQU5nS0FnQVFnQndSQUlBY2dBallDZ0lBRURBRUxJQU1nQWpZQ0FBc2dBeUFNUWFBQmFqWUNDQ0FDSUF4cUlRSWdCU2dDL0FZaEJ5QUxRUkJxSUJVUVZpRU1JQXNnQ2tFZ2FqWUNDQ0FMSUFvb0FpQWdDa2M2QUF3Z0F5QUNJQWNnRENBTFFRaHFJQVVvQWpnZ0JTZ0N5QUVnQlNnQ2tBY1E5QnNpQWhBb0lBTWdBeWdDR0VFQmFqWUNHQ0FMUVRCcUpBQWdDU0FDTmdJRUlBa2dGallDQUNBVUlBa1F2QUVMSUE0UXpRWWFJQWxCMEFGcUpBQWdCU0FDSWdNMkFqUWdDRUdzS1dvaEIwRUFJUUlEUUFKQUFrQWdBaUFGS0FLOEJrOE5BQ0FGSUFKQkFuUWlDU0FGS0FLNEJtb2lDeWdDQUNnQ0tDSUtOZ0tRQnlBS0tBSUVRZkNrRWtZRVFDQUZJQXNvQWdBb0FseEJFR28yQXNnQklBVkJPR29nQnlBRlFUUnFJQVZCeUFGcUVLa0pEQUVMSUFWQk9Hb2dCeUFGUVpBSGFoRC9DeUFGTFFBOFJRMEJJQVZCeUFGcUlBY2dCVUUwYWlBRlFUaHFFS2tKQ3lBSUtBS0lOQ0lDQkg4Z0FpZ0NRQkNFQXdWQmZ3c2hGQ0FGS0FJMElRd2pBRUdRQTJzaUN5UUFBa0FnRENnQ1NFVUVRQ0FHSUF0QkNHcEIrL3dCRUJRaUFpQU1LQUtZQVVFUWFoQW5JQUlRRHhvTUFRc2dDMEVJYWhEZUJpRWFJQXdvQWtRaURpQU1LQUpJUVFKMGFpRWRJQXRCK0FGcUlSNERRQUpBSUE0Z0hVWWlGdzBBQWtBZ0RpZ0NBQ0lKS0FJb0lnSW9BZ1JCa0tJU1J5QUNSWEpGQkVBQ1FDQUNLQUljS0FJRVFhaWpFa2NOQUNBSklBd29Ba1FnRENnQ1NFRUNkR3BCQkdzb0FnQkdEUUFnQmlBTFFlQUJha0c3N1FBUUZDSUNJQWtvQWx4QkVHb1FKeUFDRUE4YURBTUxJQUlRM0F0RkRRRWdCaUFKS0FKY0tBSW9RUkJxRU5zTERBSUxJQVlnQWhEZUN3MEFJQVlnQzBIZ0FXcEJqdXdBRUJRaUFpQUpLQUpjUVJCcUVDY2dBaEFQR2d3QkN5QUpLQUpjSWdJb0Fqd2lDaUFDUVVCcktBSUFRUUowYWlFZ0lBbEJQR29oSVVFQUlRSkJBQ0VWUVFBaEdFRUFJUU1EUUFKQUlBb2dJRWNFUUNBS0tBSUFJZ2RGRFFFZ0J5Z0NCQ0lXUWFpQ0VrWUVRQ0FISVFNTUFnc2dGa0dZL1JGR0JFQWdDUzBBUUVVRVFDQUxRZUFCYWtIbm1nVkJ2QkJCQ0NBTFFZQURhaEFkSWhZUUZ5RVlJQjVCNHVnSUVBNGFJQmdRR0NBV0VCNExRUUVoR0NBR0lBY2dJUkMrQVNnQ0FDQUpLQUlvSUJvZ0ZDQUpLQUpjUVJCcVFRQVFyUndOQWd3RUN5QVdRZmo2RVVZRVFDQUdJQWNnQ1NnQ0tDQVVRUUFRdnh4RkRRUkJBU0FWSUFZb0FnZ2dCeENXQ1NnQ0VFRUpSaHNoRlF3Q0N5QVdRZEQ4RVVZRVFDQUdJQWNpQWlBSktBSW9FTDRjUlEwRURBSUxJQlpCK1AwUlJ3MEJJQWtvQWlndEFCQkJBbkVOQVNBR0lBdEI0QUZxUWFld0JCQVVJZ0lnQjBFUWFoQW5JQUlRRHhvTUF3c2dBMFVnRlVIL0FYRnlSUVJBSUFZZ0MwSGdBV3BCbis4Q0VCUWlBaUFEUVJCcUVDY2dBaEFQR2d3REN5QU9RUVJxSVE0Z0FrVWdHSElOQXlBR0lBdEI0QUZxUVpuaUFoQVVJZ01nQWtFUWFoQW5JQU1RRHhvTUFnc2dDa0VFYWlFS0RBQUxBQXNMSUJvUTNRWUxJQXRCa0FOcUpBQkJBQ0FYUlEwRUdpQUZJQTFCQVdvaUFqWUNNQ0FDUVlBQ1R3UkFJQVZCMEFacUlnTWdCVUg0Qm1vUThSMGdCVUhnQm1vaUIwR2VpZ2tnQXhBMUlBVkJnQWRxSWdZZ0IwSEZyd29RTFNBRlFTQnFJZ2tnQWhCZklBVkJrQWRxSWdJZ0JpQUpFRTRnQlVISUFXb2lDeUFDUWJmZENSQXRJQVZCRUdvaUNrSC9BUkJmSUFWQk9Hb2lEU0FMSUFvUVRpQUlJQTBnQlNnQy9BWkJFR29RSnlBTkVBOGFJQW9RRHhvZ0N4QVBHaUFDRUE4YUlBa1FEeG9nQmhBUEdpQUhFQThhSUFNUUR4b01CQXNnQlVFNGFpQUlRWXc2YWlBRlFUUnFJQVZCTUdvUXlSQWdCU2dDTkF3RUN5QUZLQUs0QmlBSmFpZ0NBQ0FETmdJa0lBSkJBV29oQWd3QUN3QUxJQWdnQnpZQ3hDc2dDQ0FMTmdMQUt3dEJBQXNoRFNBUEVPNGRJQThRN3dzZ0R5QVBLQUtRQkJBMklBVkJtQVpxRUNNTElBVkJvQWRxSkFBZ0RRc2lBMFVOQVNBSUtBSUFJZ0lRSENBQ1FlUUJhaUFFSUFNUXVRRU1BZ3NnRTBHM213VkIyUjFCQ0NBSUtBSUVFQmNpQWtFWWFpSURRZTYvQ3hBT0dpQURRZHVTQXhBT0dpQUNFQmdMUVFBaEF3c2dFMEdnQVdva0FDQUREUU1NQmdzZ0FrSDQ4dzlHQkVBQ2Z5TUFRYUFJYXlJR0pBQWdCaUFFTmdLTUNDQUlJQVFvQWlRUU14b2dCa0dNQ0dvaEJ5QUlLQUlBSWdRUUhDQUVLQUtzQVNFREFrQWdCQ2dDc0FGQkIycEJlSEVpQlVIaDlRTnJRZjcvZTBzRVFDQURJUUlNQVFzZ0JFR1FnQVJCRUJEWkFpSUNOZ0tzQVVFQUlRVWdBa0VBTmdLQWdBUWdBd1JBSUFNZ0FqWUNnSUFFREFFTElBUWdBallDcUFFTElBUWdCVUdnQ21vMkFyQUJJQUlnQldvaEN5QUhLQUlBSVFVakFFRVFheUlESkFBZ0EwRUROZ0lNSUFOQkFEb0FCQ0FESUFWQjVBQnFOZ0lBSUFNb0FnQWlBaWdDQUNJSElBSW9BZ1JCQW5ScUlRa0RRQ0FKSUFjaUFrY0VRQ0FDUVFScUlRY2dBaWdDQUNJS0JIOGdDaWdDQkJDOUhnVkJBQXRGRFFFTEN5QURJQUlnQ1VjNkFBc2dBeWdDRENFSElBTXRBQXNoQ1NBTEVJc2NJZ0pCaUpFU05nSUFJQUpCQ0dvUWlod2dBaUFKT2dBOElBSWdCellDT0NBQ1FZQ1RFallDQkNBQ1FiQ1RFallDQUNBQ0lBVTJBa0FnQWtHZ2t4STJBZ0FnQWtIay93d3BBZ0EzQWtRZ0FrSHMvd3dwQWdBM0Frd2dBa0gwL3d3cEFnQTNBbFFnQWtIY0FHb1Ezd1lhSUFKQjdBRnFFSklKR2lBQ1Fld0RhaENTQ1JvZ0FrSHNCV29RM3dZYUlBSkIvQVpxSWdkQ2dJQ0FnSUFCTndKRUlBY2dCellDUUNBSFFjd0FhaENpQmhvZ0FrSE1DV3BCQUVFb0VIa2FJQUpDQURjRGdBb2dBa0lJTndQNENTQUNRWWdLYWtJQU53TUFJQUpCbUFwcVFRQTZBQUFnQWtFQU9nQ1VDaUFDUVpBS2FrR0FnSUQ4QXpZQ0FDQURRUkJxSkFBZ0JFR29BV29nQWhBb0lBUWdCQ2dDd0FGQkFXbzJBc0FCSUFZZ0FqWUNpQWdnQ0NnQ0FDSURFQndnQTBIa0FXb2dCaWdDakFnZ0FoQzVBU0FJS0FLSU5DRWhJQWdnQWpZQ2lEUWdDRUc0SFdvaUZoQ05BaUFHS0FLTUNDSUNLQUprSWdjZ0FpZ0NhRUVDZEdvaERDQUlRYXdkYWlFTEEwQUNRQUpBSUFjZ0RFY0VRQ0FHSUFjb0FnQWlBallDa0FnZ0NDQUNFRE1hSUFZb0FwQUlJUW9nQmlBSU5nSklJQVlnQmtHUUNHbzJBa3dDUUFKQUlBb0VRQ0FLS0FJRUlnSkJrSUlTUmdSQUlBZ2dDa0VrYWhCRERBWUxJQUpCaU9vUFJpQUNRY0NDRWtaeURRVWdBa0dvK2c5R0JFQWdCa0dZQW1vaEJVRUFJUU5CQUNFSkl3QkJnQUZySWdJa0FDQUNRZWdBYWlFRUEwQWdCQ0FKUVFOMGFpSU5RUUE2QUFRZ0RVRUFPZ0FBSUFsQkFXb2lDVUVEUncwQUN3TkFBa0FnQTBFRFJnUkFJQUlnQ2lnQ0pEWUNXQ0FDSUFvb0FpZzJBbHdnQWlBS0tBSXNOZ0pnSUFKQ2dJQ0FnREEzQTFBZ0FpQUNRVUJyTmdKTUlBSkNnSUNBZ0RBM0F6Z2dBaUFDUVNocU5nSTBJQUpCTkdvaEQwRUFJUU1DUUFOQUFrQWdBMEVEUmcwQUlBSkIyQUJxSUFOQkFuUnFLQUlBSWdsRkRRQWdBaUFJSUFrUWhRSWlEVFlDSkNBTlJRUkFJQVZCQWpvQUhBd0RDeUFDSUEwb0FoUWlEVFlDSUFKQUlBMEVmd0ovUVFBZ0RTZ0NCQ0lOS1FNUVFzREFnSUtBZ0lnaGd5SXNJQ3hDQVgyRFVBMEFHa0VCSUEwUThnY05BQm9nRFJDZ0hRc0ZRUUFMQkVBZ0FpZ0NKQ2dDR0VFQmEwRUNTUTBCQ3lBSUlBSkJFR3BCOC9vR0VCUWlBeUFKUVJCcUVDY2dBeEFQR2lBRlFRSTZBQndNQXdzZ0EwRUJhaUVESUFKQlFHc2dBa0VrYWhEQUJDQUNRU2hxSUFKQklHb1F3QVFNQVFzTElBSkJBRG9BRENBQ0lBODJBZ2dnQWtFSWFoQzNDeUlKUlFSQUlBZ2dBa0VRYWtHdStnWVFGQ0lESUFwQkVHb1FKeUFERUE4YUlBVkJBam9BSEF3QkN5QUpLQUlFUWRDZ0VrWUVRQ0FJS0FJQUVOUUNJUWtMUVFBaEF3TkFJQUlvQWxBZ0Ewc0VRQ0FJSUFJb0Frd2dBMEVDZEdvb0FnQWdDUkNXQWlJS1JRUkFJQVZCQWpvQUhBd0RDd0pBSUFvb0Fod2lDZ1JBSUFvUVkwSUFWd1JBSUFnZ0FrRVFha0dPaGdjUUZDSUVJQUpCMkFCcUlBTkJBblJxS0FJQVFSQnFFQ2NnQkJBUEdpQUZRUUk2QUJ3TUJRc2dCQ0FEUVFOMGFpSU5JQW9RV1RZQ0FDQU5MUUFFRFFFZ0RVRUJPZ0FFREFFTElBUWdBMEVEZEdvaUNpMEFCRVVOQUNBS1FRQTZBQVFMSUFOQkFXb2hBd3dCQ3dzZ0JEVUNBRUlCSUFRdEFBUWJJU3hCQVNFREEwQWdBMEVEUndSQUlBUWdBMEVEZEdvaUNUVUNBRUlCSUFrdEFBUWJJQ3grSWl4Q2dJQ0FnQkJhQkVBZ0NDQUNRUkJxUVpMQ0F4QVVJZ1FnQWtIWUFHb2dBMEVDZEdvb0FnQkJFR29RSnlBRUVBOGFJQVZCQWpvQUhBd0RCU0FEUVFGcUlRTU1BZ3NBQ3dzZ0JTQUVLUUlBTndJRUlBVWdCQ2tDRURjQ0ZDQUZJQVFwQWdnM0Fnd2dCVUVCT2dBY0N5QUNRU2hxRUt3RElBSkJRR3NRckFNZ0FrR0FBV29rQUF3QkN5QUVJQU5CQTNScUlnbEJBVFlDQUNBSkxRQUVSUVJBSUFsQkFUb0FCQXNnQTBFQmFpRUREQUVMQ3lBRkVPWWRJQVV0QUJ4QkFrWU5BeUFHS0FLSUNDRURJQVpCbUFKcUlnSVE1aDBnQWkwQUhFRUJSd1JBRUc4QUN5QUNLUUlNSVN3Z0Fpa0NCQ0V0SUFNZ0Fpa0NGRGNDVkNBRElDdzNBa3dnQXlBdE53SkVEQVlMSUFJUTlnTU5BUXNqQUVFUWF5SUNKQUFnQmlnQ1NDRURJQVlvQWt3b0FnQWhCeUFDUVFrMkFnd2dBa0dobmdFMkFnZ2dBaUFDS1FNSU53TUFJQU1nQnlBQ0VFQWdBa0VRYWlRQURBRUxJQWdnQ2hDc0JRMERDMEVBSVFjTUFRdEJBQ0VISUFaQkFEb0FoQWdnQmlBR0tBS01DRUhrQUdvMkFvQUlJQXNnQmtHQUNHb1FRVVVOQUNBR1FaZ0NhaUlDUWdBM0F0d0ZJQUpDZ0lDQWdNQUJOd0xVQlNBQ0lBSTJBdEFGSUFKQkRCREZFQ0FHS0FLTUNDSURLQUpJSWdjZ0F5Z0NURUVDZEdvaEZVRUFJUU1DUUFKQUEwQWdCeUFWUndSQUlBZ2dCeWdDQUNJRkVETWFJQVpCa0FKcUlBSWdCU2dDSkVFa2FpQUZRUkJxSWdRUW5oNGdCaWdDa0FKQkFrWUVRQ0FHUWNnQWFpSUhJQVVvQWlSQkpHb1FVeUFHUVlBQ2FpSUZRZmVLQ1NBSEVNUUJJQVpCa0FocUlnTWdCVUh6bWdrUUxTQUlJQU1nQkJBbklBTVFEeG9nQlJBUEdpQUlJQU5CNitzREVCUWlBeUFHS0FLVUFoQ0dBU0FERUE4YUlBY1FEeG9NQXdzZ0JpZ0NqQWdoQ2tFQUlRbEJBQ0VOSXdCQjhBQnJJZ1FrQUNBRUlBTTJBa2dnQkNBRk5nSk1JQWdnQlNnQ0pCQXpHaUFFSUFnMkFrQWdCQ0FFUWN3QWFqWUNSQ0FFUVFBNkFEd2dCRUVBT2dBNElBUkJBRG9BTkNBRVFRQTZBREFnQkVFQU9nQXNJQVJCQURvQUtDQUtFTndHSVFvZ0JDZ0NUQ0lNS0FJNElnVWdEQ2dDUEVFQ2RHb2hEd0pBQWtBQ1FBSkFJQW9FUUNBSVFhd2RhaUVPQTBBZ0JTQVBSZzBDSUFRZ0JTZ0NBQ0lLTmdJa0lBZ2dDaEF6R2lBRUtBSWtJUW9nQkNBSU5nSVlJQVFnQkVFa2FqWUNIQUpBSUFwRkRRQUNRQ0FLS0FJRUlneEJtUDBSUmdSQUlBUkIwQUJxSWd3Z0NDQUtFSWdNSUF3UU1BMEdJQVJCMEFCcUVCb29BZ0FoQ2lBRVFRRTZBRHdnQkNBS05nSTREQUVMSUF4QitQb1JSZ1JBSUFSQjBBQnFJZ3dnQ0NBS0VJY01JQXdRS3cwQkRBWUxJQXhCcUlJU1JnMEFJQXhCMFB3UlJnUkFJQVJCMEFCcUlnd2dDQ0FLRUlZTUlBd1FzZ0VOQVF3R0N5QU1FUFlEQkVBZ0NDQUtFS3dGRFFFTUJnc2dERUhBK3hGR0JFQWdCRUVBT2dCVUlBUWdCQ2dDVEVFNGFqWUNVQ0FPSUFSQjBBQnFRUU1Rc1FNRVFDQUVRUk0yQW13Z0JFSEltQUUyQW1nZ0JDQUVLUU5vTndNQUlBZ2dCQ2dDSkNBRUVFQU1Cd3NnQkVIZ0FHb2lDU0FJSUFvUTNSQWdDUkF3RFFZZ0JFSGdBR29RR2lnQ0FDRUtRUUVoQ1NBRVFRRTZBRFFnQkNBS05nSXdEQUVMSUF4QnNQb1JSdzBCSUFSQkFEb0FWQ0FFSUFRb0FreEJPR28yQWxBZ0RpQUVRZEFBYWtFREVMRURCRUFnQkVFVE5nSnNJQVJCeUpnQk5nSm9JQVFnQkNrRGFEY0RDQ0FJSUFRb0FpUWdCRUVJYWhCQURBWUxJQVJCNEFCcUlnMGdDQ0FLRU40UUlBMFFNQTBGSUFSQjRBQnFFQm9vQWdBaENrRUJJUTBnQkVFQk9nQXNJQVFnQ2pZQ0tBc2dCVUVFYWlFRkRBRUxDeU1BUVJCcklnVWtBQ0FFS0FJWUlRa2dCQ2dDSENnQ0FDRUtJQVZCRXpZQ0RDQUZRY2lZQVRZQ0NDQUZJQVVwQXdnM0F3QWdDU0FLSUFVUVFDQUZRUkJxSkFBTUFnc0RRQ0FGSUE5R0RRRWdCQ0FGS0FJQUlnbzJBbWdnQ0NBS0VETWFJQVFvQW1naENpQUVJQWcyQWxRZ0JDQUVRZWdBYWpZQ1VBSkFJQW9FUUNBS0tBSUVFUFlERFFFTEl3QkJJR3NpQ1NRQUlBUW9BbFFoQ2lBRUtBSlFLQUlBSWdVRWZ3Si9RUUFnQlNnQ0JDSUZLUU1RUW9LQWlLQ0VvWUNBd1FDRElpd2dMRUlCZllOUURRQWFRUUVDZjBFQUlBVXBBeEJDZ29DQW9JQ2dnSUFCZ3lJc0lDeENBWDJEVUEwQUdrRUJJQVVRN0IwTkFCb2dCUkRIRUFzTkFCb0NmMEVBSUFVcEF4QkNnSUNJZ0lTQmdJREFBSU1pTENBc1FnRjlnMUFOQUJwQkFTQUZFT3NkRFFBYUlBVVE2aDBMQ3dWQkFBc2hCU0FFS0FKUUtBSUFJUTBDZnlBRkJFQWdDVUgzbHdFMkFoaEJJeUVNSUFsQkdHb01BUXNnQ1VISW1BRTJBaEJCRXlFTUlBbEJFR29MSWdVZ0REWUNCQ0FKSUFVcEFnQTNBd2dnQ2lBTklBbEJDR29RUUNBSlFTQnFKQUFNQXdzZ0JVRUVhaUVGSUFnZ0NoQ3NCUTBBQ3d3QkMwRUFJUVVnQkVFQU9nQVVJQVFnQkNnQ1RFRTRhallDRUNBSVFhd2RhaUlQSUFSQkVHb1FRVVVOQWlBRUlBZ2dCQ2dDVENnQ0tCRFFBeUlLTmdKb0lBcEZEUUFnQ0VFQUlBb2dCQ2dDVENnQ0tFRVFhaERvQkEwQklBUkJRR3NRb2g0TUFndEJBQ0VGREFFTEFrQWdDaWdDQkVIWXJCSkhEUUFnQ0NBS0tBSWNJQW9vQWhnZ0JDZ0NURUVRYWhEb0JBMEFJQVJCUUdzUW9oNE1BUXNnQkVFQU9nQllJQVJCQURvQVVDQUpSU0FOUlhKRkJFQWdCRUV3YWhDK0FUVUNBQ0VzSUFSQktHb1F2Z0UxQWdBaExTQUVRUUU2QUZnZ0JDQXNJQzFDSUlhRU53TlFDeUFJS0FJQUlRa2dCRUVBTmdKZ0lBUkJBRFlDR0NBRVFYODJBaVFnQ1JBY0l3QkJJR3NpQlNRQUlBbEJxQUZxSWdrUXZSQWhDaUFFS0FJa0lRMGdCQ2dDR0NFTUlBUW9BbUFoRGlBRUtBSm9JUk1nQkNnQ1NDRVhJQVFvQWt3aEZDQUZJQVFwQWpnaUxEY0RHQ0FGSUFRb0FsZzJBaEFnQlNBRUtRSlFOd01JSUFVZ0xEY0RBQ0FKSUFvZ0ZDQVhJQk1nRGlBTUlBMGdCVUVJYWlBRkVQSVBJZ3dRS0NBSklBa29BaGhCQVdvMkFoZ2dCVUVnYWlRQUlBZ29BZ0FpQlJBY0lBVkI1QUZxSUFRb0Frd2dEQkM1QVNNQVFiQUJheUlLSkFBZ0RDZ0NDQ0VPSUFwQkFEb0FyQUVnQ2lBT1FUaHFJZ1UyQXFnQlFRRWhEUUpBSUFwQnFBRnFRUVFRbHdrTkFBSkFBa0FDUUNBTUtBSU1JZ2tvQWdSQjJLd1NSeUFKUlhJTkFDQUtRUUE2QUtRQklBb2dCVFlDb0FFZ0R5QUtRYUFCYWtFQ0VMRURSUTBBQWtBZ0NTZ0NIQ0lUUVFOckRnY0JBZ0VDQUFBQUFnc2dEeWdDdUFvaEJTQUtRUU0yQWhBZ0JVRWNhaUFLUVJCcUVLMEVSUTBCSUF3b0Fnd2hDUXNnQ1JDWUNTRUpJQXdvQWd3aEJTQUpCRUFnQlMwQUVFRUJjUTBESUE4Z0NrRVFha0hHdHdRUUZDSUZJQTRvQWloQkVHb1FKeUFGRUE4YURBSUxJQVVFZndKL1FRQWdCU2dDQkNJRktRTVFRc0NBZ0lTUWlJU0FBWU1pTENBc1FnRjlnMUFOQUJwQkFTQUZFTmtMRFFBYUFuOUJBQ0FGS1FNUVFzQ0FnSVNBaUFTRElpd2dMRUlCZllOUURRQWFRUUVnQlJEWUN3MEFHaUFGRUpzY0N3c0ZRUUFMRFFJZ0NpQVBLQUlJSUF3b0Fnd1Fwd0VnQ2tFUWFpSUZRZjNFQ2lBS0VEVWdEeUFGSUE1QkVHb1FKeUFGRUE4YUlBb1FEeG9NQVFzZ0NrRVFhaEJKSWdWQkNHcEI0WTBKRUE0YUlBVWdFeEMxQzBFSWFrSEczQVFRRGhvZ0NpQUZRUXhxRUVJZ0R5QUtJQTVCRUdvUUp5QUtFQThhSUFVUVVRdEJBQ0VOQ3lBS1FiQUJhaVFBSUF4QkFDQU5HeUVGQ3lBRVFmQUFhaVFBSUFWRkRRSWdCaWdDaUFnZ0JSQ2RIZ0pBSUFVb0Fnd1E4QVlpQlVVTkFDQUdLQUtNQ0JDRUF5SUVRUUpMRFFBZ0JTQUVRUUYwRUp3ZUN5QURRUUZxSVFNZ0IwRUVhaUVIREFFTEN3SkFJQVlvQW93SUtBSlVJZ01FUUNBSUlBTVEwQU1pQ1VVTkFnd0JDeUFJS0FJQUVJUU1JUWtMSUFZb0FvZ0lJQWsyQWdnZ0JpZ0NqQWdRM0FZaEJ5QUdLQUtNQ0NFREFrQUNRQUpBQWtBQ1FDQUhCRUFnQmtFQU9nRDhBU0FHSUFOQjVBQnFOZ0w0QVVFQklRTWdCa0g0QVdwQkF4Q1hDVVVFUUNBR1FRQTZBUFFCSUFZZ0JpZ0NqQWhCNUFCcU5nTHdBU0FHUWZBQmFrRUVFSmNKSVFNTElBWW9Bb3dJSWdVb0FuZ2lCeUFGS0FKOFFRSjBhaUVLQTBBZ0J5QUtSZzBDSUFnZ0J5Z0NBQ0lGRURNYUlBVkZEUU1DUUFKL0lBVW9BZ1FpQkVHWS9SRkdCRUFnQmtISUFHb2lCQ0FJSUFVUWlBeEJBU0FFRURBTkFSb2dCaWdDaUFnaEJTQUdRY2dBYWhBYUtBSUFJUVFnQlVHWUNtcEJBVG9BQUNBRklBUTJBcFFLUVFBTUFRc2dCRUg0K2hGR0JFQWdCa0hJQUdvaUJDQUlJQVVRaHd3Z0JCQXJRUUZ6REFFTElBUVE5Z01FUUNBSUlBVVFyQVZCQVhNTUFRc2dCRUhRL0JGR0JFQWdCa0hJQUdvaUJDQUlJQVVRaGd3Z0JCQ3lBVUVCY3d3QkN5QUVRYWlDRWtZTkFTQUVRYkQ2RVVZRVFDQURSUTBHSUFaQnlBQnFJZ1FnQ0NBRkVONFFJQVFRSzBFQmN3d0JDeUFEUVFGeklBUkJ3UHNSUjNJTkJTQUdRY2dBYWlJRUlBZ2dCUkRkRUNBRUVDdEJBWE1MRFFnTElBZEJCR29oQnd3QUN3QUxJQU1vQW54RkRRQWdDQ0FES0FKNEtBSUFJZ01RTXhvZ0JrRWxOZ0pNSUFaQmxyZ0JOZ0pJSUFZZ0Jpa0RTRGNET0NBSUlBTWdCa0U0YWhCQURBVUxBa0FnQ1JEd0JpSURSUTBBUVFBaEJ5QUlRUUFnQXlBR0tBS01DRUVRYWhEb0JFVUVRQ0FHUVpBSWFpSURJQVlvQW93SUtBSWtRU1JxRUZNZ0JrSElBR29pQlVIdjd3a2dBeEExSUFnZ0JTQUdLQUtNQ0VFUWFoQ0dBU0FGRUE4YUlBTVFEeG9NQndzZ0JpZ0NqQWdRaEFNaUIwRUNTdzBBSUFNZ0IwRUJkRUVCY2hDY0hnc2dCaWdDaUFnaEJ5TUFRU0JySWdNa0FDQURRUkJxSUFoQjJDZHFLQUlBSUFoQjNDZHFLQUlBUWFRQmJHcEJwQUZySWdVUTR4QWdBMEVJYWlBRkVPSVFJQWRCZ0FwcUlRY0RRQ0FES0FJUUlnVWdBeWdDQ0VZRVFDQURRU0JxSkFBRklBVVFzQWtpQlNnQ0NDRUVJQU1nQlNrQ0FEY0RHQ0FISUFOQkdHb1E0UkFnQkRZQ0FDQURRUkJxRU9BUURBRUxDeUFHS0FLTUNCRGNCZ1JBSUFoQmdDbHFJQVpCaUFocUVDUUxJQVlvQW93SUtBSllJZ05GRFFNZ0NDQURFRE1hSUFnb0FwQTBCRUFnQmtISUFHcEJ0NXNGUWVrSVFRZ2dDQ2dDQkJBWElnTkJHR3BCcmN3QUVBNGFJQU1RR0F3RkN5QUdLQUtNQ0NnQ1dDRURJQWdvQWdBaUJ4QWNJQWRCcUFGcUlnUWhLeUFFRVBFRklRa2dCa0dJQ0dvb0FnQWhCU01BUWNBQmF5SUhKQUFnQnlBRk5nSzhBU0FGS0FKQUlRVWdCMEVBTmdJSUlBa2dCU2dDV0VFQUlBY29BcndCRU5jTElnVkJzSTRTTmdJRUlBVkJxSThTTmdJQUlBVkIrSTRTTmdJQUlBY29BcndCUlFSQUlBZEJDR3BCK0pJRlFTaEJDU0FIUWFnQmFoQWRJZ2tRRnlJS1FSaHFRY3l4Q0JBT0dpQUtFQmdnQ1JBZUN5QUhRY0FCYWlRQUlDc2dCUkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUlLQUlBSWdjUUhDQUhRZVFCYWlBRElBVVF1UUVnRmhDTkFnSkFJQU5GRFFBQ1FDQURLQUlFSWdkQnVQTVBSZ1JBSUFOQjRBQnFJZ2tvQWdBaUJ5QURLQUprUVFKMGFpRUtBa0FEUUNBSElBcEdEUUVnQ0NBSEtBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBZ2dCRUVrYWhCRElBZEJCR29oQnd3QkN3c2dCa0VRTmdKTUlBWkJnNGNCTmdKSUlBWWdCaWtEU0RjREFDQUlJQVFnQmhCQURBVUxJQVpCQURvQWxBZ2dCaUFKTmdLUUNDQUxJQVpCa0FocUVFRU5BUXdFQ3lBSFFkaUVFa1lFUUNBRFFUaHFJZ2tvQWdBaUJ5QURLQUk4UVFKMGFpRUtBa0FEUUNBSElBcEdEUUVnQ0NBSEtBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBZ2dCRUVrYWhCRElBZEJCR29oQnd3QkN3c2dCa0VPTmdKTUlBWkI1SVlCTmdKSUlBWWdCaWtEU0RjRENDQUlJQVFnQmtFSWFoQkFEQVVMSUFaQkFEb0FsQWdnQmlBSk5nS1FDQ0FMSUFaQmtBaHFFRUZGRFFRTUFRc2dCMEc0OEE5R0JFQWdBMEUwYWlJSktBSUFJZ2NnQXlnQ09FRUNkR29oQ2dKQUEwQWdCeUFLUmcwQklBZ2dCeWdDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FJSUFSQkpHb1FReUFIUVFScUlRY01BUXNMSUFaQkRUWUNUQ0FHUWFhSEFUWUNTQ0FHSUFZcEEwZzNBeEFnQ0NBRUlBWkJFR29RUUF3RkN5QUdRUUE2QUpRSUlBWWdDVFlDa0FnZ0N5QUdRWkFJYWhCQlJRMEVEQUVMSUFkQitQQVBSZ1JBSUFOQk1Hb2lDU2dDQUNJSElBTW9BalJCQW5ScUlRb0NRQU5BSUFjZ0NrWU5BU0FJSUFjb0FnQWlCQkF6R2dKQUlBUkZEUUFnQkNnQ0JFR1FnaEpIRFFBZ0NDQUVRU1JxRUVNZ0IwRUVhaUVIREFFTEN5QUdRUTgyQWt3Z0JrSHpoZ0UyQWtnZ0JpQUdLUU5JTndNWUlBZ2dCQ0FHUVJocUVFQU1CUXNnQmtFQU9nQ1VDQ0FHSUFrMkFwQUlJQXNnQmtHUUNHb1FRVVVOQkF3QkN5QUhRZmp4RDBZRVFDQURRY2dBYWlJSktBSUFJZ2NnQXlnQ1RFRUNkR29oQ2dKQUEwQWdCeUFLUmcwQklBZ2dCeWdDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FJSUFSQkpHb1FReUFIUVFScUlRY01BUXNMSUFaQkVUWUNUQ0FHUVpTSEFUWUNTQ0FHSUFZcEEwZzNBeUFnQ0NBRUlBWkJJR29RUUF3RkN5QUdRUUE2QUpRSUlBWWdDVFlDa0FnZ0N5QUdRWkFJYWhCQlJRMEVEQUVMSUFkQmlJVVNSdzBCSUFOQk1Hb2lDU2dDQUNJSElBTW9BalJCQW5ScUlRb0NRQU5BSUFjZ0NrWU5BU0FJSUFjb0FnQWlCQkF6R2dKQUlBUkZEUUFnQkNnQ0JFR1FnaEpIRFFBZ0NDQUVRU1JxRUVNZ0IwRUVhaUVIREFFTEN5QUdRUkEyQWt3Z0JrRzBod0UyQWtnZ0JpQUdLUU5JTndNb0lBZ2dCQ0FHUVNocUVFQU1CQXNnQmtFQU9nQ1VDQ0FHSUFrMkFwQUlJQXNnQmtHUUNHb1FRVVVOQXdzZ0NDQUZFSXdDQ3lBSUtBS01OQ0VFSUFnZ0JUWUNqRFFnQ0NBRklBZ29BcEEwSWdrZ0JSczJBcEEwSUFnZ0NDZ0NsRFFpQ2tFQmFpSUhOZ0tVTkFKL0lBZEJnQUZQQkVBZ0JrR1FDR29pQjBIL0FCQmZJQVpCeUFCcUlnVkJwcXdLSUFjUU5TQUlJQVVnQTBFUWFoQW5JQVVRRHhvZ0J4QVBHa0VBREFFTElBWWdCaWdDakFnb0FsaEJ4QUJxTmdKSUlBWkJBRG9BVENBRlFRQWdDQ0FHUWNnQWFoRGFCaHNMSVFjZ0NDQUpOZ0tRTkNBSUlBbzJBcFEwSUFnZ0JEWUNqRFFNQWdzZ0JrRVlOZ0xzQVNBR1FmMjNBVFlDNkFFZ0JpQUdLUVBvQVRjRE1DQUlJQVVnQmtFd2FoQkFEQU1MUVFBaEJ3c2dGaENMQWlBSFJRMEJJQVlvQW9nSUlnTWdCeWtER0NJc053UDRDU0FzUWdHRFVBMEFJQU1nTEVKMmcwSUloRGNEK0FrTFFRQWhCeUFHUVFBNkFFUWdCaUFHS0FLTUNFSDRBR28yQWtBZ0N5QUdRVUJyRUVGRkRRRWdDQ2dDaURRaUF3Ui9JQU1vQWtBUWhBTUZRWDhMSVE4Z0JpZ0NpQWdoQ1NNQVFmQUJheUlOSkFBZ0NTZ0NRQ0lNUWVRQWFpSUZLQUlBSWdvZ0RDZ0NhRUVDZEdvaEJBSkFBMEFnQkNBS1J3UkFBa0FnQ2lnQ0FDSURSUTBBSUFNb0FnUWlEa0dvK2c5R0JFQWdEQkNFQTBFQ1JnMEJJQXNnRFVFSWFrR0F2UUVRRkNJRklBTkJFR29RSnlBRkVBOGFRUUFoQ2d3RUN5QU9RY0NDRWtjTkFDQUpLQUlJS0FJRVFaQzFFa2NOQUNBTElBMUJDR3BCbGRJREVCUWlCU0FEUVJCcUVDY2dCUkFQR2tFQUlRb01Bd3NnQ2tFRWFpRUtEQUVMQ3lBTUtBSk1JZ1JCZ0FKUEJFQWdEVUhBQVdvaUF5QUVFRjhnRFVIUUFXb2lCVUdmNEFrZ0F4QTFJQTFCNEFGcUlnUWdCVUdXM1FrUUxTQU5RYkFCYWlJSlFmOEJFRjhnRFVFSWFpSUtJQVFnQ1JCT0lBc2dDaUFNUVJCcUVDY2dDaEFQR2lBSkVBOGFJQVFRRHhvZ0JSQVBHaUFERUE4YVFRQWhDZ3dCQ3dKQUlBa29BZ2dpQXlnQ0JFR1F0UkpHRFFBZ0F5MEFFRUVCY1VVRVFDQUxJQTFCQ0dwQjM1QUVFQlFpQXlBTUtBSlVRUkJxRUNjZ0F4QVBHa0VBSVFvTUFnc2dEQ2dDV0NJREJFQUNRQ0FES0FKSUlnVkZEUUFnQXlnQ1JDQUZRUUowYWtFRWF5Z0NBQ0lEUlEwQUlBc29BZ2dnQXhDTEVDMEFHRUVJY1VVTkFnc2dDeUFOUVFocVFhak9BaEFVSWdNZ0RFRVFhaEFuSUFNUUR4cEJBQ0VLREFJTElBMUJBRG9BckFFZ0RTQUZOZ0tvQVNBTElBMUJxQUZxUVFBUXNRTkZEUUFnRFVFSWFrSG5tZ1ZCL2dkQkNDQUxLQUlFRUJjaUJFRVlhaUlEUWNLSUNoQU9HaUFOUWVBQmFpSUZJQXdvQWlSQkpHb1FVeUFESUFVUUVob2dBMEdERmhBT0dpQUZFQThhSUFRUUdBc2dEQkRjQmdSQVFRQWhDa0VBSVE0akFFSGdCMnNpQkNRQUlBUWdEellDM0FjZ0JDQUpLQUpBTmdMWUJ5QUVRZUFHYWhDTURDRVBJQVFnQkVHSUJXb1EzZ1lpRlRZQ2dBVWdCQ0FQTmdMMEJDQUVJQXMyQXZBRUlBUWdCRUhjQjJvMkF2d0VJQVFnQkVIWUIyb2lBellDK0FRZ0JDQUxOZ0xrQkNBRUlBTTJBdWdFSUFRZ0JFSHdCR28yQXVBRUlBa29BaXdpQlNBSktBSXdRUUowYWlFWEFrQURRQ0FGSUJkSEJFQWdCU2dDQUNJVEtBSUlJUU1nQkVFQU9nRGNCQ0FFSUFOQk9HbzJBdGdFSUJNb0Fnd2hGQ0FFSUJNcEFtd2lMRGNEMEFRZ0JDQURLUUlZTndNd0lBUWdBeWdDSURZQ09DQUVJQU1wQWhBM0F5Z2dCQ0FzTndNZ0lBVkJCR29oQlNBRVFlQUVhaUFFUWRnRWFpQVVJQVJCS0dwQkFDQUVRU0JxRUwwY0RRRU1BZ3NMSUE4UTZnVWdGUkRxQkNBSktBSUlJZ1VvQWdSQmtMVVNSd1JBSUFSQkFEb0F6QVFnQkNBRUtBTFlCeUlEUWZnQWFqWUN5QVFnQkNBSktRS1VDaUlzTndQQUJDQUVJQU1vQWlBMkFoZ2dCQ0FES1FJWU53TVFJQU1wQWhBaExTQUVJQ3czQXdBZ0JDQXROd01JSUFSQjRBUnFJQVJCeUFScUlBVWdCRUVJYWtFQklBUVF2UnhGRFFFTEFrQWdCQ2dDMkFjUWhBTU5BQ0FFUVFrMkF2Z0JJQThnQkVINEFXb1FyUVFOQUNBSktBS01BaUlGSUFrb0FwQUNRUUowYWlFREEwQWdBeUFGUndSQUlBVW9BZ0FvQWdnaERpQUVRUUE2QUx3RUlBUWdEa0U0YWpZQ3VBUWdCRUc0QkdvUWx4QWlEZ1JBSUFzb0FnZ2dEaENXQ1NnQ0VFRUpSZzBEQ3lBRlFRUnFJUVVNQVFzTElBc2dCRUg0QVdwQnhZY0VFQlFpQXlBRUtBTFlCMEVRYWhBbklBTVFEeHBCQUNFT0RBRUxBa0FnQkNnQzJBY1FoQU5CQWtjTkFFRUFJUTRnQkVFQU9nQzBCQ0FFSUFRb0F0Z0hRZVFBYWpZQ3NBUWdCQ2dDc0FRaUF5Z0NBQ0lGSUFNb0FnUkJBblJxSVJNRFFDQVRJQVVpQTBjRVFDQURRUVJxSVFVZ0F5Z0NBQ0lYQkg4Z0Z5Z0NCRUdvK2c4UVNBVkJBQXRGRFFFTEN5QURJQk5IRFFBZ0N5QUVRZmdCYWtHdHNBRVFGQ0lESUFRb0F0Z0hRUkJxRUNjZ0F4QVBHZ3dCQ3lBRVFmZ0JhaUlEUWdBM0Fxd0NJQU5DZ0lDQWdNQUJOd0trQWlBRElBTTJBcUFDSUFOQkRCQ0lFQ0FKS0FLTUFpSUZJQWtvQXBBQ1FRSjBhaUVYQTBBQ1FDQUZJQmRHSWc1RkJFQWdCQ0FGS0FJQUloTW9BZ2dpRkVFQUlCUW9BZ1JCMlBnUlJoc2lGRFlDOUFFZ0ZFVU5BU0FFSUJNb0FsZ2lGRFlDOEFFZ0JDQVRLUUpRTndQb0FTQVVRZjhCY1VVTkFTQUVRZUFCYWlBRElBUkI2QUZxSUFSQjlBRnFFTHdjSUFRb0F1QUJRUUpIRFFFZ0JFRUFPZ0RjQVNBRUlBUW9BdGdISWhSQjVBQnFOZ0xZQVNBTElBUkIyQUZxUVFFUXNRTkZEUUVnQkNnQzVBRW9BZ0FoRXlBRVFRQTZBTlFCSUFRZ0UwRTRhallDMEFFZ0N5QUVRZEFCYWtFQkVMRURSUTBCSUFSQndBRnFJaE1nRkNnQ0pFRWthaEJUSUFSQjRBQnFJaGRCOFlrSklCTVF4QUVnQkVId0FHb2lGQ0FYUWFEM0NCQXRJQVJCMEFCcUlob2dCQ2dDNkFFUVh5QUVRWUFCYWlJWUlCUWdHaEJPSUFSQmtBRnFJaDBnR0VIRStBZ1FMU0FFUVVCckloNGdCQ2dDN0FFUVh5QUVRYUFCYWlJZ0lCMGdIaEJPSUFSQnNBRnFJZ1VnSUVIdjlnZ1FMU0FMSUFVZ0JDZ0M5QUZCRUdvUUp5QUZFQThhSUNBUUR4b2dIaEFQR2lBZEVBOGFJQmdRRHhvZ0doQVBHaUFVRUE4YUlCY1FEeG9nQ3lBRlFkcnVBeEFVSWdVZ0JDZ0M1QUVvQWdCQkVHb1FoZ0VnQlJBUEdpQVRFQThhQ3lBREVMb2NJQU1RdVJ3TUFnc2dCVUVFYWlFRkRBQUxBQXNnRlJEZEJpQVBFSzRMSUFSQjRBZHFKQUFnRGtVTkFRdEJBU0VLSUFrcEEvZ0pRZ2lFUWdoUkRRQWdEVUhnQVdvaUJTQU1LQUlrUVNScUVGTWdEVUVJYWtIbm1nVkJqZ2hCQ0NBTEtBSUVFQmNpQkVFWWFpSURRWnVOQ1JBT0dpQURJQVVRRWhvZ0EwSFlpd3dRRGhvZ0NVSDRDV29wQXdBaExDTUFRU0JySWdNa0FDQURJQ3czQXhnZ0JFRVFhaUlQUVFocUlndEJpQWdRRGhvZ0EwRUlhaUFEUVJocUVKb2NJQU1wQXhnaExFRUJJUWtEUUNBRExBQVFJZ3hCUDBZZ0xDQURLUU1JVVhGRkJFQWdDVVVFUUNBTFFmVHREQkFPR2dzZ0QwRUlhaUFNUVFOTEJIOUJyT0lHQlNBTVFRSjBRWWlPRW1vb0FnQUxFQTRhSUFOQkNHb1FneEJCQUNFSkRBRUxDeUFMUVlJSUVBNGFJQU5CSUdva0FDQUVFQmdnQlJBUEdnc2dEVUh3QVdva0FDQUtSUTBCQWtBZ0JpZ0NqQWdRM0FaRkRRQWdCaWdDaUFnaUF5Z0NqQVFpQnlBREtBS1FCRUVDZEdvaEJRTkFJQVVnQjBZTkFTQUhLQUlBSVFRZ0JpZ0NpQWdoQ1NNQVFSQnJJZ01rQUNBRElBazJBZ3dnQkVIa0NXb2dBMEVNYWhEWkJpQURRUkJxSkFBZ0IwRUVhaUVIREFBTEFBc2dCaWdDaUFnaEJ3d0JDMEVBSVFjTElBSVFtQjRnQWhEa0hTQUNJQUlvQXRBRkVEWUxJQllRaXdJZ0NDQWhOZ0tJTkNBR1FhQUlhaVFBSUFjTUFnc2dCMEVFYWlFSERBQUxBQXRGRFFZTUF3c2dBaERkQlFSQVFRQWhBaU1BUWFBQmF5SUtKQUFnQ2tFUWFoRGZCaUVNSUFnb0FwZzBJUllnQ0NBTU5nS1lOQUpBSUFnZ0JFRUJFS3dlSWdkRkRRQWdCeWdDQkVHUW5CSkhEUUFnQ2tFQU9nQU1JQW9nQkVFNGFqWUNDQ0FJUWF3ZGFpSUpJQXBCQ0dvUVFVVU5BQ0FJUWR3cmFpRUxRUUFoRFNNQVFUQnJJZ1FrQUNBRUlBY29BZ2dpQXpZQ0hBSkFBa0FDUUNBSEtBSVVRUWxHRFFBZ0J5Z0NEQkRjQzBVTkFDQUpJQU1vQWlnaUJRUi9JQVVGSUFNb0Fpd0xRUkJxRU5zTERBRUxJQVFnQ1RZQ0VDQUVJQVJCSEdvMkFoUWdBMFVFUUNBRVFSQnFFTUFjREFFTEFrQUNRQ0FES0FJRUlnVkIyUGdSUmdSQUFrQWdCeWdDSUNJRlJRMEFJQVVvQWhoQkEwZ05BQ0FKSUFSQklHcEIvK1FDRUJRaUF5QUZLQUlJUVJCcUVDY2dBeEFQR2d3RUN5QURLQUpFRFFFZ0J5Z0NEQkNFQVJEWUR3MEJJQWtnQkVFZ2FrR00yUVFRRkNJRElBUW9BaHhCRUdvUUp5QURFQThhREFNTElBVkI2UGtSUmdSQUl3QkIwQUJySWdVa0FDQUhLQUlJSVFZZ0J5Z0NEQkNFQVNFUEFuOENRQUpBSUFjb0FpQWlEa1VOQUNBT0tBSVlRUU5JRFFBZ0NTQUZRVUJyUWNqbEFoQVVJZ01nRGlnQ0NFRVFhaEFuREFFTElBWW9BamdpQXlBR0tBSThRUUowYWlFVkEwQWdBeUFWUndSQUFrQWdBeWdDQUNJVEtBSUVRWWo4RVVjTkFDQUhMd0ZjSVE0Z0JVRUFOZ0pJSUFVZ0Rqc0JSQ0FGSUFzMkFrQWdCU0FMS0FLQUFrRUJhellDVENBRlFVQnJFSXdRUlEwQUlBVkJRR3NRakJBb0FnQWdCMFlOQUNBSklBVkJNR29pQmtHOHpBTVFGQ0lESUJOQkVHb1FKeUFERUE4YUlBVkJFR29pQ3lBT0VQWUVJQVZCSUdvaUQwR3ZzUW9nQ3hBMUlBWWdEMEdlNmdZUUxTQUZRVUJyRUl3UUtBSUFLQUlJSVFNZ0JVRUFPZ0FNSUFVZ0EwRTRhallDQ0NBSklBWUNmeUFGS0FJSUlnNG9BZ0FpQXlBT0tBSUVRUUowYWlFVkEwQkJBQ0FESUJWR0RRRWFJQU1vQWdBaERpQURRUVJxSVFNZ0RpZ0NCRUdJL0JGSERRQUxJQTRMUVJCcUVJWUJJQVlRRHhvZ0R4QVBHaUFMRUE4YVFRQU1CQXNnQTBFRWFpRUREQUVMQzBFQklBOFF5Z01OQVJvZ0JVRXdhaUlESUFrb0FnZ2dEeENuQVNBRlFVQnJJZ3NnQTBIYWhBa1FMU0FKSUFzZ0JrRVFhaEFuSUFzUUR4b0xJQU1RRHhwQkFBc2hBeUFGUWRBQWFpUUFJQU1OQWd3RUN5QUZRYUQ1RVVZTkFTQUVRUkJxRU1BY0RBSUxJQWtnQnhEQ0hFVU5BZ3NDUUFKQUFrQWdCeWdDRkVFRGF3NEdBQUVDQWdFQkFnc2dDU0FFUVNCcVFjeUJDUkFVSWdNZ0JDZ0NIRUVRYWhBbklBTVFEeG9NQWd0QkFTRU5JQVFvQWh3aEJVRUFJUU1qQUVFUWF5SUxKQUFnQzBFQU9nQU1JQXNnQlVFNGFpSU9OZ0lJSUFzb0FnZ2lCaWdDQUNJRklBWW9BZ1JCQW5ScUlROERRQ0FQSUFVaUJrY0VRQ0FHUVFScUlRVWdCaWdDQUNJVkJIOGdGU2dDQkVHdytoRVFTQVZCQUF0RkRRRUxDeUFHSUE5SEJFQWdDMEVBT2dBRUlBc2dEallDQUNBTEtBSUFJZ1VvQWdBaUF5QUZLQUlFUVFKMGFpRUdBMEFnQmlBRElnVkhCRUFnQlVFRWFpRURJQVVvQWdBaUR3Ui9JQThvQWdSQndQc1JFRWdGUVFBTFJRMEJDd3NnQlNBR1J5RURDeUFMUVJCcUpBQWdBdzBDSUFrZ0JFRWdha0d4c1FFUUZDSURJQVFvQWh4QkVHb1FKeUFERUE4YURBRUxJQVJCQURvQURDQUVJQVFvQWh4Qk9HbzJBZ2dDZnlBRUtBSUlJZ1VvQWdBaUF5QUZLQUlFUVFKMGFpRUdBMEJCQUNBRElBWkdEUUVhSUFNb0FnQWhCU0FEUVFScUlRTWdCU2dDQkVHdytoRkhEUUFMSUFVTElRWWdCRUVBT2dBRUlBUWdCQ2dDSEVFNGFqWUNBRUVCSVEwQ2Z5QUVLQUlBSWdVb0FnQWlBeUFGS0FJRVFRSjBhaUVMQTBCQkFDQURJQXRHRFFFYUlBTW9BZ0FoQlNBRFFRUnFJUU1nQlNnQ0JFSEEreEZIRFFBTElBVUxJQVp5UlEwQklBa2dCRUVnYWtIdXNBRVFGQ0lESUFRb0FoeEJFR29RSnlBREVBOGFDMEVBSVEwTElBUkJNR29rQUNBTlJRMEFJQXdvQWhBaUFpQU1LQUlVUVFKMGFpRURBMEFnQWlBRFJnUkFBa0FnQnlnQ0RCQ0VBU0lDUlEwQUlBSW9BZ1JCa0tJU1J3MEFJQWdvQWdBaUF4QWNJQU5CNUFGcUlBSVEzQkFpQTBVTkFDQURLQUlRSWdJZ0F5Z0NGRUVDZEdvaEF3TkFJQUlnQTBZTkFTQUNLQUlBSVFVZ0NDZ0NBQ0lHRUJ3Z0JrSGtBV29nQnlBRkVOc1FJQUpCQkdvaEFnd0FDd0FMQlNBQ0tBSUFJUVVnQ0NnQ0FDSUdFQndnQmtIa0FXb2dCeUFGRU5zUUlBSkJCR29oQWd3QkN3c2dCeUVDQ3lBSUlCWTJBcGcwSUF3UXJnUWdDa0dnQVdva0FDQUNSUTBHREFNTElBSkJ3UFlQUmcwQkN5TUFRYUFCYXlJQ0pBQWdBa0czbXdWQnRnRkJDQ0FRS0FJQUtBSUVFQmNpQTBFWWFpSUhRZTYvQ3hBT0dpQUhRZjc5Q3hBT0dpQURJQkFvQWdRb0FnQW9BZ1JCQkdvUW1nRWFJQU1RR0NBQ1FhQUJhaVFBREFRTElBZ2dCQkN0SGtVTkF3c2dFVUVFYWlFUkRBRUxDMEVBSVFOQkFDRVJJd0JCTUdzaUJDUUFJQVJCQURzQktDQUlLQUlBRVBJQ0lnSW9BcVFDSWdrZ0FpZ0NxQUpCQW5ScUlRMGdDRUhjSzJvaERDQUlRYWdkYWlFTEFrQURRQ0FKSUExR0lnOE5BUUpBSUFrb0FnQWlBaWdDQkVIbytSRkhJQUpGY2tVRVFFRUFJUVVqQUVHZ0FXc2lCaVFBSUFzb0FnQWlCeEFjQWtBZ0FrVU5BQ0FDS0FJTUlnb2dCeWdDNkFFZ0J5Z0M1QUVpQjJ0QkFuVlBEUUFnQnlBS1FRSjBhaWdDQUNJSFJRMEFJQWRCQUNBSEtBSUVRWkNjRWtZYklRVUxJQVZGQkVBZ0N5Z0NBQ0lIRUJ3Z0JrSDlyQU5CTTBFSUlBZEJ5QUpxRUJjaUNrRVlha0dtbGdrUURob2dDaUFDS0FJRVFRUnFFSm9CSWc1QkdHb2lCMEhjOFF3UURob2dCMEdENUFzUURob2dEa0VRYWlBQ1FSQnFFSzRESUFkQjIvZ01FQTRhSUFkQjhQVUxFQTRhSUFjZ0FoRGRBeUFLRUJnTElBWkJvQUZxSkFBZ0JTRUdJQVJCQURvQUpDQUVJQUpCT0dvMkFpQWdCQ2dDSUNJSEtBSUFJZ1VnQnlnQ0JFRUNkR29oQ2dOQUlBb2dCU0lIUndSQUlBZEJCR29oQlNBSEtBSUFJZzRFZnlBT0tBSUVRWWo4RVJCSUJVRUFDMFVOQVFzTEFrQWdCeUFLUndSQUlBWXZBVndoQnd3QkN3TkFJQkVOQXlNQVFSQnJJZ2NrQUNBSFFRaHFJQXdnQkVFb2FoQ2hIaUFITFFBSUlRb2dCMEVRYWlRQUlBUXZBU2doQlNBS0JFQkJBU0VSSUFWQi8vOERSZzBCSUFRZ0JVRUJhanNCS0VFQUlSRU1BUXNMUWYvL0F5RUhJQVZCLy84RFJnUkFRUUVoRVF3QkN5QUVJQVZCQVdvN0FTaEJBQ0VSSUFVaEJ3c2dCaUFIT3dGY0N5QUpRUVJxSVFrTUFRc0xJQVJCLy84REVGOGdCRUVRYWlJSFFlS3NDaUFFRURVZ0NDQUhJQUpCRUdvUUp5QUhFQThhSUFRUUR4b0xJQVJCTUdva0FDQVBSUTBCSXdCQnNBRnJJZ2NrQUNBSVFiUVphaUlDS0FMa0F5RUdJQWRCcUFGcUlnVWdBaWdDNEFNaUJEWUNBQ0FGSUFRZ0JrRVViR28yQWdRZ0JSQ3NDU0FIUWFBQmFpSUZJQUlvQXVBRElBSW9BdVFEUVJSc2FpSUNOZ0lFSUFVZ0FqWUNBQ0FGRUt3SklBaEJxQjFxSVFRZ0IwRVlhaUVLQTBBZ0J5Z0NxQUVpQWlBSEtBS2dBVWNFUUNBRUlBSVF1Z0lpQWlnQ0JCQ0tEQ0lSUlFSQUlBZEJ0NXNGUWVRR1FRZ2dDQ2dDQkJBWElRWWdDa0dtbGdrUURob2dCaUFDS0FJRUtBSUVRUVJxRUpvQklnbEJHR29pQlVIYzhRd1FEaG9nQlVHRDVBc1FEaG9nQ1VFUWFpQUNLQUlFUVJCcUVLNERJQVZCMi9nTUVBNGFJQVZCOFBVTEVBNGFJQWxCR0dvZ0FpZ0NCQkRkQXlBR0VCZ0xJQUlvQWdBaEJTTUFRYUFCYXlJSkpBQWdCQ2dDQUNJQ0VCd2dBa0hrQVdvZ0JSQ2pCeUlDUlFSQUlBUW9BZ0FpQmhBY0lBbEIvYXdEUVROQkNDQUdRY2dDYWhBWElndEJHR3BCcHBZSkVBNGFJQXNnQlNnQ0JFRUVhaENhQVNJTlFSaHFJZ1pCM1BFTUVBNGFJQVpCZytRTEVBNGFJQTFCRUdvZ0JVRVFhaEN1QXlBR1FkdjREQkFPR2lBR1FmRDFDeEFPR2lBR0lBVVEzUU1nQ3hBWUN5QUpRYUFCYWlRQUFrQWdBa1VOQUNBQ0tBSUVJZ1ZCcUp3U1JnUi9JQUpCMUFCcUJTQUZRY0NjRWtjTkFTQUNRZHdBYWdzZ0VUWUNBQXNnQjBHb0FXb1E2UVFNQVFzTElBZEJzQUZxSkFBZ0VFRUFPZ0MwQVNBUUlDbzJBckFCSUFoQnJCMXFJZ2NnRUVHd0FXcEJqc29ERUtZY1JRMEJJQkJCQURvQXJBRWdFQ0FJUWFBcGFpSUVOZ0tvQVFKL0l3QkJNR3NpQWlRQUlBSWdCellDS0NBQ0lBYzJBaUFnQWlBQ1FTaHFJZ1UyQWlRZ0FpQUhOZ0lZSUFJZ0JUWUNIQ0FDSUFjMkFoQWdBaUFGTmdJVUlBSWdBa0VRYWpZQ0NDQUNJQUpCR0dvMkFnUWdBaUFDUVNCcU5nSUFJQkFvQXFnQklnVW9BZ0FpRVNBRktBSUVRUUowYWlFSkEwQUNRQUpBSUFrZ0VVWWlDdzBBSUFJZ0VTZ0NBQ0lHSUFZUXNoeEZEUUFnQmlnQ2pBUWlCU0FHS0FLUUJFRUNkR29oQ2dOQUlBVWdDa1lOQWlBRktBSUFJUTBnQlVFRWFpRUZJQUlnRFNBR0VMSWNEUUFMQ3lBQ1FUQnFKQUFnQ3d3Q0N5QVJRUVJxSVJFTUFBc0FDMFVOQVNBUVFRQTZBS1FCSUJBZ0JEWUNvQUVDZnlNQVFTQnJJZ0lrQUNBUUtBS2dBU0lHS0FJQUlnVWdCaWdDQkVFQ2RHb2hCQU5BQWtBQ1FDQUVJQVZHSWdzTkFDQUZLQUlBSVFZZ0FrRUFOZ0ljSUFKQkFEWUNHQ0FDSUFjMkFoQWdBaUFDUVJocU5nSU1JQUlnQWtFY2FqWUNDQ0FDUVFocUlBWWdCaEN4SEVVTkFDQUdLQUtNQkNJSklBWW9BcEFFUVFKMGFpRUtBMEFnQ1NBS1JnMENJQWtvQWdBaEVTQUpRUVJxSVFrZ0FrRUlhaUFSSUFZUXNSd05BQXNMSUFKQklHb2tBQ0FMREFJTElBVkJCR29oQlF3QUN3QUxSUTBCSUFnb0FnQWlCeEFjUVFBaEJVRUFJUUlnQnlnQ29BRWlBMEVmVFFSQUlBY29BcHdCSVJrZ0F5RUNDeUFIS0FLWUFTRVJJQkJCR0dvaEJFRUJJUU1EUUNBUklCbEdJQUlnQlVaeERRSWdDQ2dDc0NzZ0VRUi9JQkVnQlVFQ2RHb29BZ0FGUVFBTElnY29BZ3dpQmtFRGRrSDgvLy8vQVhGcUtBSUFJQVoyUVFGeFJRUkFJQkJCdDVzRlFkTUJRUWdnQ0NnQ0JCQVhJUVlnQkVHbWxna1FEaG9nQmlBSEtBSUVRUVJxRUpvQklnbEJHR29pQTBHNThRd1FEaG9nQTBHRDVBc1FEaG9nQ1VFUWFpQUhRUkJxRUs0RElBTkIyL2dNRUE0YUlBTkI4UFVMRUE0YUlBTWdCeERkQXlBR0VCaEJBQ0VEQ3lBUlJRUkFRUUFoRVF3QkN5QUZRUUZxSWdWQklFY05BQ0FSS0FLQUFTRVJRUUFoQlF3QUN3QUxRUUFoQXdzZ0VFSEFBV29RWGlBUVFlQUJhaVFBQWtBZ0F5SUhEUUFnQ0NnQ0JDSUNLQUlNRFFBZ0gwRzNtd1ZCaXdGQkNDQUNFQmNpQWtFWWFrSEM4d1FRRGhvZ0FoQVlEQUVMSUI5QkFUWUNBQ0FJUVl3b2FpQWZFSzBFSVFrZ0NDZ0NBQ0lDRUJ3akFFR2dBV3NpQkNRQUlBSkJxQUZxSWdZb0FnUWhBd0pBSUFZb0FnaEJBMnBCZkhFaUJVSEovQU5yUWY3L2Uwc0VRQ0FESVFJTUFRc2dCa0dRZ0FSQkVCRFpBaUlDTmdJRVFRQWhCU0FDUVFBMkFvQ0FCQ0FEQkVBZ0F5QUNOZ0tBZ0FRTUFRc2dCaUFDTmdJQUN5QUdJQVZCdUFOcU5nSUlJQVFnSEVHQUFXbzJBcGdCSUFRZ0hDZ0NnQUVnSEVjNkFKd0JJQVJCQ0dvZ0NFSHdKMm9RdFIwaEF5QUNJQVZxRU9rSElnSkJzSmNTTmdJRUlBSkI0SmNTTmdJQUlBSkIwSmNTTmdJQUlBSkJDR29nQkVHWUFXb1F6eGtnQWtHVUFtb2dBeEMxSFJvZ0FrSUFOd0tzQXlBQ1FnQTNBcVFESUFKQmdJQ0EvQU0yQXJRRElBTVFyZ1FnQmlBQ0VDZ2dCaUFHS0FJWVFRRnFOZ0lZSUFSQm9BRnFKQUFqQUVFZ2F5SURKQUFnQTBFUWFpQUlRZGduYWlnQ0FDQUlRZHduYWlnQ0FFR2tBV3hxUWFRQmF5SUZFT01RSUFOQkNHb2dCUkRpRUNBQ1FhUURhaUVGQTBBZ0F5Z0NFQ0lHSUFNb0FnaEdCRUFnQTBFZ2FpUUFCU0FHRUxBSklnWW9BZ2doQkNBRElBWXBBZ0EzQXhnZ0JTQURRUmhxRU9FUUlBUTJBZ0FnQTBFUWFoRGdFQXdCQ3dzZ0NDZ0NBQ0lERUJ3Z0F5QUNOZ0tFQWlBSklBZEJBWE55UlFSQUFuOGdDQ2dDQUNFQ0l3QkI0UEVDYXlJRUpBQWdCQ0FDTmdJSUlBSVFIQ0FFSUFKQjVBRnFOZ0lNSUFJUUhDQUVRZUNuQW1wQ0FEY0RBQ0FFUWRpbkFtcENnSUNBZ01BQk53TUFJQVJCMUtjQ2FpQUVRUlJxSWhBMkFnQWdCQ0FDUWNnQ2FqWUNFQ0FRUVF3UXNCQWdIQ2dDZ0FFaURDQWNLQUtFQVVFQ2RHb2hIQ0FFUVpqWkFtb2hGaUFFUVlEWkFtcEJCSEloRlNBRVFiakFBbXBCQkhJaEV5QUVRWkMrQW1vaEdTQUVRZHk3QW1vaEN5QUVRZWk2QW1vaEZ5QUVRWlM1QW1vaEZDQUVRYWl3QW1vaENpQUVRWWlvQW1vaER5QUVRWXl3QW1vaEVRTkFBa0FDUUNBTUlCeEdJaHBGQkVBZ0RDZ0NBQ0lGS0FJRVFmanpEMGNnQlVWeURRSWdCQ0FGTmdLMHdBSWdCQ2dDQ0NFTklBUkI4S2NDYWhCVklBUkNnSUNBZ0lBRU53S0VzQUlnQkVLQWdBUTNBdnl2QWlBRVFnQTNBdlN2QWlBRVFvQ0FnSUNBQVRjQzdLOENJQVFnRHpZQzZLOENRUUFoQXlBRVFRQTJBb0NvQWlBUlFRQTJBaGdnRVVJQU53SVFJQkZDQURjQ0NDQVJRZ0EzQWdBZ0JFR0EyUUpxRU5NR0lRSWdCRUtBZ0lDQWdBRTNBb3k1QWlBRUlBbzJBb2k1QWlBS1FRRVFsUjBEUUNBRFFRRkhCRUFnQkNBRUtBS011UUlpQmtFQmFqWUNqTGtDSUFRb0FvaTVBaUFHUVl3QmJHb2dBaUFEUVl3QmJHb1FsQjBnQTBFQmFpRUREQUVMQ3lBQ0VNNERJQlFRM2dZaEdDQVhFSXdNR2lBTFFnQTNBcXdDSUF0Q2dJQ0FnTUFCTndLa0FpQUxJQXMyQXFBQ0lBc1EraHdnQkVJQU53S013QUlnQkVLQWdJQ0F3QUUzQW9UQUFpQUVJQmsyQW9EQUFpQVpRUXdRcnhBZ0JFRUFOZ0tzd0FJZ0JFS0FnSUNBZ0FRM0FxVEFBaUFFUW9DQUJEY0NuTUFDSUFSQ0FEY0NsTUFDSUFSQmdOa0NhaUlESUFVb0FpUkJKR29RVXlBRVFmQ25BbW9pQWlBREVKNEJJQU1RRHhvZ0JFRUJOZ0tFcUFJZ0JFSUJOd0w4cHdJZ0JDQUNRUUFRbkFFMkFwQ3dBaUFFSUFKQkFCQ2NBVFlDbExBQ0lBUWdBa0VBRUp3Qk5nS1lzQUlnQkNBQ1FRQVFuQUUyQXB5d0FpQUVJQUpCQUJDY0FUWUNvTEFDSUFVb0FsUUVRQ0FFSUFSQjhLY0Nha0VBRUp3Qk5nS2tzQUlMSUFVb0Frd2lCaUFFS0FMd3J3SkxCRUFnQkNnQzZLOENJUTRnRHlBR0VKTWRRUUFoQ1FOQUlBUW9BdXl2QWlBSlRRUkFJQThnRGhBMkJTQUpRZndBYkNJQ0lBUW9BdWl2QW1vaUF5QUNJQTVxSWdJcEFnQTNBZ0FnQXlBQ0tRQU5Od0FOSUFNZ0Fpa0NDRGNDQ0NBRFFSaHFJQUpCR0dvUTFRWWFJQU5CeEFCcUlBSkJ4QUJxRU5VR0dpQURJQUlvQW5nMkFuZ2dBeUFDS1FKd053SndJQUlRcmhBZ0NVRUJhaUVKREFFTEN3c2dCQ2dDN0s4Q0lRTWdCQUovQTBBZ0F5QUdUUVJBQWtBZ0JDZ0M3SzhDSWdJZ0JpQUNJQVpMR3lFSkEwQWdBaUFKUndSQUlBUW9BdWl2QWlBQ1Fmd0FiR29pQTBJQU53SVlJQU5CQURvQUZDQURRb0NBZ0lBZ053SUFJQU5DQURjQ1JDQURRUUEyQW5nZ0EwSUFOd0p3SUFOQkFEWUNFQ0FEUW9DQWdJQWdOd0lJSUFOQ0FEY0NJQ0FEUWdBM0FpZ2dBMElBTndJd0lBTkNnSUNBZ0lBQk53SThJQU1nQTBFWWFqWUNPQ0FEUWdBM0Frd2dBMElBTndKVUlBTkNBRGNDWENBRFFvQ0FnSUNBQVRjQ2FDQURJQU5CeEFCcU5nSmtJQUpCQVdvaEFnd0JDd3NnQkNBR05nTHNyd0lnRFVIa0FXb2hDVUVBSVFNRFFDQUZLQUpNSUFOTEJFQWdCRUdBMlFKcUlBVW9Ba2dnQTBFQ2RHb29BZ0FpQWlnQ0pFRWthaEJUSUEwUUhDQUVJQWtnQWhDU0hTSUdOZ0s0d0FJZ0EwSDhBR3dpQWlBRUtBTG9yd0pxSUFZMkFnQWdCRUh3cHdKcVFRQVFuQUVoQmlBRUtBTG9yd0lnQW1vZ0JqWUNjQUpBSUFRb0FyakFBaUlPS0FJTUtBSUVRZGlzRWtZRVFDQUVRZkNuQW1wQkFCQ2NBU0VHSUFRb0F1aXZBaUFDYWlBR05nSjBJQVJCOEtjQ2FrRUFFSndCSVFZZ0JDZ0M2SzhDSUFKcUlnSWdCallDZUNBRUlBUW9BcmpBQWpZQzJQRUNJQW9nQkVIWThRSnFJQUlvQW5RUWd3TWdHQ0FFUWJqQUFtb1FrUjBNQVFzZ0JDQU9OZ0xZOFFJZ0NpQUVRZGp4QW1vZ0JoQ0RBd3NnQTBFQmFpRURJQVJCZ05rQ2FoQVBHZ3dCQ3dzZ0JDZ0MyS2NDSUFRb0F1Q25BaUlDUVpZQmJFR1dBV3BCNUFCdVNRUkFJQkFnQWtFQmRFRUNhaENRSFFzZ0JFSFk4UUpxSUJBZ0JFRzB3QUpxSWdJUWp4MGdCQ2dDMktjQ0lnbEJBV3NoRFNBRUlBUkI4S2NDYWpZQzFQRUNJQVFnQWpZQzBQRUNRUUFoQXlBRUtBSzB3QUloRGlBRUtBTGM4UUloQmlBRUtBTFVwd0loR0NBRUtBTFk4UUloQWdOQUlBTWdDVWNFUUNBWUlBSkIwQmhzYWlJRkxRREVHRVVFUUNBRVFZRFpBbW9pQWlBRVFkRHhBbW9RN0FzZ0JTQUNFSTRkSVFJZ0ZSQ2xCU0FGSUFNMkFzd1lJQVVnQmpZQ3lCZ2dCQ0FFS0FMZ3B3SkJBV28yQXVDbkFpQUVJQVFvQXVTbkFrRUJhallDNUtjQ0lBSkJCR29NQmdzZ0JpQUZLQUxJR0VZRVFDQU9JQVVvQWdCR0RRTUxJQU1nQlNnQ3pCaExCRUFnQkVHNHdBSnFJZ2tnQkVIUThRSnFFT3dMSUFSQmdOa0NhaUFKRUkwZElRa2dCQ0FETmdMTThRSWdCQ0FHTmdMSThRSWdFeENsQlNBSklBVVFyUkFnQkNBRUtBTE04UUpCQVdvMkFzenhBaUFRSUFKQkFXb2dCQ2dDMktjQ2NDQUpFSXdkSUFRZ0JDZ0M0S2NDUVFGcU5nTGdwd0lnQkNBRUtBTGtwd0pCQVdvMkF1U25BaUFKRVBFSERBTUZJQUpCQVdwQkFDQUNJQTFIR3lFQ0lBTkJBV29oQXd3Q0N3QUxDeUFFUVlEWkFtcEJoclVEUWVzRFFRNGdCRUc0d0FKcUVCMGlBaEFYSVFNZ0ZrR1dOUkFPR2lBREVCZ2dBaEFlUVFBTUF3c0ZJQVFvQXVpdkFpQURRUUZySWdOQi9BQnNhaEN1RUF3QkN3c2dCVUVFYWdzMkF1aW5BaUFFUWZDbkFtb1FwUVVnQkNnQ3RNQUNLQUpZSWdJRVFDQUVRUWhxSUFRb0F1aW5BaWdDc0FnZ0FoRGpCQm9MSUFRZ0JFRzB3QUpxSWdNMkF2U25BaUFFSUFSQkNHb2lCVFlDOEtjQ0lBUWdCRUdBMlFKcUVPc0xJZ0kyQXJ6QUFpQUVJQVJCOEtjQ2FqWUN4TUFDSUFRZ0F6WUN3TUFDSUFRZ0JUWUN1TUFDSUFSQnVNQUNha0VCRUt3UUJFQWdCRUc0d0FKcVFRUVFyQkFFUUNBRVFiakFBbXBCQWhDc0VCb0xJQUlROEFjZ0JDZ0M2S2NDSWdJb0FyUUlSUTBDSUFJUTZnc2dCRUdBMlFKcUVPc0xJUUlnQkNnQzZLY0NLQUswQ0NBQ0VKd0pJQUlnQkNnQzZLY0NRYXdJYWhEU0JnUkFJQVFvQXVpbkFrRUFOZ0lVQzBFQUlRTURRQ0FFS0FLMHdBSW9Ba3dnQTAwRVFDQUNFUEFIREFRRklBUkI4S2NDYWlBQ0lBTVFxeEFoQlNBRUtBTG9wd0lvQXZnSElBTkIvQUJzYWlJR0lBVTJBZ3dnQmtFQU5nSVFJQU5CQVdvaEF3d0JDd0FMQUFzZ0FoRHdCd3NnRUJDTEhTQVFFSW9kSUJBZ0JDZ0MxS2NDRURZZ0JFSGc4UUpxSkFBZ0dnd0RDMEVBSVFrRFFDQUpJQVFvQXJUQUFpZ0NURThOQVNBRUtBTG9wd0lpQXlnQytBY2dDVUg4QUd4cUlnSW9BbmdFUUNBREVPb0xJQVJCZ05rQ2FoRHJDeUVOSUFJb0FuZ2dEUkNjQ1NBTklBUW9BdWluQWtHc0NHb1EwZ1lFUUNBQ1FRRTZBQlFMSUFKQnhBQnFJUVVnQWtFWWFpRUdRUUFoQXdOQUlBUW9BclRBQWlnQ1RDQURUUVJBSUEwUThBY0ZJQVJCOEtjQ2FpQU5JQU1RcXhBaERpQUVJQVFvQWd3Z0JDZ0N0TUFDS0FKSUlBTkJBblJxS0FJQUVKSWROZ0s0d0FJZ0JTRUNBa0FDUUFKQUlBNE9BZ0FCQWdzZ0JpRUNDeUFDSUFSQnVNQUNhaEFrQ3lBRFFRRnFJUU1NQVFzTEN5QUpRUUZxSVFrTUFBc0FDeUFNUVFScUlRd01BQXNBQzBVTkFRc2dCeUVBQ3lBZlFhQUJhaVFBSUFCRkJFQWdFa0VBT2dEUUFnc2dDRUdNT21vUW9RWWdDRUdrT0dvUTNRWWdDRUdnTm1vUW9RWWdDRUdjTkdvUW9RWWdDRUgwTUdvUXJ4NGdDRUhnTFdvUXJ4NGdDRUhjSzJvUW9RWWdDRUhJSzJvaUF5Z0NDQ0VBQTBBZ0FBUkFJQUFvQWdBaEFpQUFRUXhxRUxZZElBQVFIeUFDSVFBTUFRc0xJQU1RdHdJZ0NFR3dLMm9Rd2dnZ0NFR3NLV29Rb1FZZ0NFR0FLV29RSXlBSVFmQW5haEN1QkNBSVFiZ2RhaUVDUVFBaEFBTkFJQUlvQXFRS0lBQk5CRUFnQWtFQU5nS2tDZ1VnQWlnQ29Bb2dBRUdrQVd4cUVQZ0hJQUJCQVdvaEFBd0JDd3NnQWlBQ0tBS2dDaEEySUFoQkZHb2lBa0dnR1dvaUFCRHNIaUFBUVFBMkF1UURJQUFnQUNnQzRBTVFOaUFDUVl3QmFpSUFFT3NlSUFBUTJSNGdBQ0FBS0FLQUdCQTJJQUlRM0FVZ0NFRVFhaENGQXhvTElBRVFIQ0FqSUFGQkVHb1EzdzhnQVJBY0lDZ2dBVUdNQVdvUXlnVWdBUkFjSUNjZ0FVR29BV29ReWdVZ0FSQWNJQ1lnQVVIRUFXb1F5Z1VnRWlBQkVQSUNOZ0xZQVNBQkVCd2dKQ0FCUWVRQmFoRDdEeUFCRUJ3Z0pTQUJRWWdDYWhEcUd5QUJFQndqQUVGQWFpSUNKQUFnQVNnQ3pBSWhBeUFCS0FMSUFpRUFBMEFnQUNBRFJnUkFJQUpCUUdza0FBVWdJaUFDUVFocUlBQVF4UWNpQnhDb0J5QUhFSWNGSUFCQk5Hb2hBQXdCQ3dzZ0FSQWNJQUZCQVRvQTdRSUNRQ0FTTFFEUUFnMEFJQklvQXN3Q0RRQWdHMEVaTmdJTUlCdEJoL0lFTmdJSUlCc2dHeWtEQ0RjREFDQWlRUVVnR3hDcEJ3c2dHMEdnUEdva0FDQVNDeDBBSUFBZ0FVSDgvLy8vQjBFQlFmLy8vLzhEUVlDQWdJQUVFTmdKQ3pRQkFuOGpBRUdRQVdzaUFpUUFJQUlRaUFNaUEwRUlhaUFCRUNFYUlBQWdBMEVNYWhCQ0lBTVF1d0lhSUFKQmtBRnFKQUFMRGdBZ0FDQUJLQUlBRUE0YUlBQUxTZ0FnQUVIdy9BODJBZ0FnQUVISUFtb1FIaUFBUVlnQ2FoRHVHeUFBUWVRQmFoRDhEeUFBUWNRQmFoREtCQ0FBUWFnQmFoREtCQ0FBUVl3QmFoREtCQ0FBUVJCcUVOMFBJQUFMNlFFQkIzOGpBRUVRYXlJRUpBQWdCQ0FCTmdJTUFuOGdCRUVNYWlJRkVMNFhJUUlDUUNBQVFSeHFJZ0VvQWdRaUFFVU5BQ0FCS0FJQUFuOGdBRUVCYXlBQ2NTQUFhU0lCUVFGTkRRQWFJQUlnQUNBQ1N3MEFHaUFDSUFCd0N5SUdRUUowYWlnQ0FDSURSUTBBSUFCQkFXc2hCeUFCUVFGTElRZ0RRQ0FES0FJQUlnTkZEUUVnQXlnQ0JDSUJJQUpIQkVBQ1FDQUlSUVJBSUFFZ0IzRWhBUXdCQ3lBQUlBRkxEUUFnQVNBQWNDRUJDeUFCSUFaSERRSU1BUXNnQTBFSWFpQUZFSnNPUlEwQUN5QUREQUVMUVFBTElnQUVmeUFBS0FJTUJVRUFDeUVBSUFSQkVHb2tBQ0FBQ3pFQkFuOGdBRUVFYWlFQ0lBQW9BZ2doQUFOQUlBQWdBa2NFUUNBQUtBSUVJUU1nQUNBQkVMRU9JQU1oQUF3QkN3c0xQZ0FnQUNBQkVORUhJZ0JCQkdvUTJRZEJBVWNFUUVHOXFBbEJxcWdDUWJNQlFmbnBCQkFBQUFzZ0FDZ0NHQ0lCSUFCQkRHb2dBUnNvQWdBb0FnQUxHd0VCZnlNQVFSQnJJZ0VnQURZQ0RDQUJLQUlNTFFBQVFRRnhDNG9IQVFOL0l3QkI0QUJySWdJa0FBSkFJQUZGQkVCQkFDRUJJQUJCQURvQWxBTWdBRUdvQkdwQm00c0VFQmthREFFTElBSWdBUkRJQXlJRE5nSU1JQUlnQURZQ0FDQUNJQUpCREdvMkFnUUNRQ0FEUlEwQUlBTW9BZ1FpQkVIZ3l4SkdCRUFnQWtFQU5nSTRJQUpDQURjRE1DQUNRZ0EzQXlnZ0FrRUFOZ0lRSUFKQkFUWUNXQ0FBUVNCcUlBSkJLR29nQWtFUWFpQUNRZGdBYWhDekNDRUJEQUlMSUFSQnNNc1NSZ1JBSUFKQkFEWUNPQ0FDUWdBM0F6QWdBa0lBTndNb0lBSkJBRFlDRUNBQ1FRSTJBbGdnQUVFZ2FpQUNRU2hxSUFKQkVHb2dBa0hZQUdvUXN3Z2hBUXdDQ3lBRVFjakxFa1lFUUNBQ1FRQTJBamdnQWtJQU53TXdJQUpDQURjREtDQUNRUUEyQWhBZ0FrRUJOZ0pZSXdCQkVHc2lBeVFBSUFCQklHb2lBQkFjSUFBZ0FDZ0NERUVCYWlJQk5nSU1JQU1nQVRZQ0NDQUFRWXdCYWlJQklBRVF5d1FnQUNnQ0NDQURLQUlJSUFKQktHb2dBaWdDRUxjZ0FpZ0NXQkRMRFNJQUVDZ2dBU0FCS0FJWVFRRnFOZ0lZSUFBaEFTQURRUkJxSkFBTUFnc2dCRUdvekJKR0JFQWdBa0VBTmdJNElBSkNBRGNETUNBQ1FnQTNBeWdnQWlBRElBQkJJR29pQUNBREtBSUFLQUlJRVFFQU5nSVFJQUFnQWtFb2FpQUNRUkJxRUlNTElRRU1BZ3NnQkVIQXpCSkdCRUFnQWtFQU5nSTRJQUpDQURjRE1DQUNRZ0EzQXlnZ0FpQURJQUJCSUdvaUFDQURLQUlBS0FJSUVRRUFOZ0lRSUFBZ0FrRW9haUFDUVJCcUVJTUxJUUVNQWdzZ0JFSFl6QkpHQkVBZ0FrRUFOZ0k0SUFKQ0FEY0RNQ0FDUWdBM0F5Z2dBaUFESUFCQklHb2lBQ0FES0FJQUtBSUlFUUVBTmdJUUlBQWdBa0VvYWlBQ1FSQnFFSU1MSVFFTUFnc2dCRUdZeXhKR0JFQWdBa0VBTmdJNElBSkNBRGNETUNBQ1FnQTNBeWdnQWtFQU9nQVFJQUJCSUdvZ0FrRW9haUFDUVJCcUVQSU9JUUVNQWdzZ0JFSEl6aEpIRFFBZ0FrS0FnSUNBZ0FFM0Frd2dBaUFDUVNocU5nSklJQU1vQWlnaEJDQURLQUlrSVFNRFFDQURJQVJIQkVBZ0FpQUFJQU1vQWdBUWt3UTJBaEFnQTBFRWFpRURJQUpCS0dvZ0FrRVFhaEFrREFFTEN5QUNRUUEyQWlBZ0FrSUFOd01ZSUFKQ0FEY0RFQ0FDSUFFZ0FFRWdhaUlBSUFFb0FnQW9BZ2dSQVFBMkFsZ2dBQ0FDUVJCcUlBSkIyQUJxSUFKQktHb2lBQkNWQkNFQklBQVFJd3dCQ3lBQ0tBSUFJZ0JCQURvQWxBTWdBRUdvQkdwQitZd01FQmtnQWlnQ0JDZ0NBQ2dDQkVFRWFoQ3dBeHBCQUNFQkN5QUNRZUFBYWlRQUlBRUx0UUVCQkg5QkFDQUFLQUlVSWdJZ0FrRWZTeUlDR3lFRVFRQWdBQ2dDRUNBQ0d5RUNJQUJCREdvaEFRTkFJQUVvQWdBaEEwRUFJUUVDUUFOQUlBSWdBMGNnQVNBRVIzSkZCRUFnQUNnQ0FDRUJBMEFnQVVVTkF5QUJLQUtBZ0FRaEFpQUJFQjhnQWlFQkRBQUxBQXNnQXlBQlFRSjBhaWdDQUJvZ0FVRUJhaUlCUVNCSERRQUxJQU5CZ0FGcUlRRU1BUXNMSUFCQkFEWUNHQ0FBUW9DQWdJQ0FCRGNDRUNBQVFvQ0FCRGNDQ0NBQVFnQTNBZ0FMeFFFQkJuOGpBRUV3YXlJRUpBQWdCQ0FDS0FJQU5nSXNJQVFnQXhEVkJpRUNJd0JCRUdzaUJTUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FGSUFNMkFnZ2pBRUVRYXlJREpBQWdBRUdNQVdvaUJoRDlCU0VISUFRb0Fpd2hDQ0FGS0FJSUlRa2dBQ2dDQ0NFQUlBTWdBa0VnYWpZQ0NDQURJQUlvQWlBZ0FrYzZBQXdnQmlBSElBQWdDU0FCSUFnZ0EwRUlhaEQrQlNJQUVDZ2dCaUFHS0FJWVFRRnFOZ0lZSUFOQkVHb2tBQ0FGUVJCcUpBQWdBaEFqSUFSQk1Hb2tBQ0FBQzNnQkJYOGdBQ2dDeEFRaUJVRUJheUVHQWtBRFFDQURJQVZHRFFFZ0FDZ0N3QVFnQVVFd2JHb2lCQzBBSUFSQUlBSWdBaWdDTENJSElBUW9BaXhMQkg4Z0JDQUNFUEFESUFJb0Fpd0ZJQWNMUVFGcU5nSXNJQUZCQVdwQkFDQUJJQVpIR3lFQklBTkJBV29oQXd3QkN3c2dCQ0FDRU1nUEN3c1NBQ0FBSUFFUWtBa2lBRUVCT2dBZ0lBQUxDd0FnQUVFQU5nSUFJQUFMRGdBZ0FCQ0dHeUFBSUFFUXp3c0xqQWNCQzM4akFFR2dBbXNpQlNRQVFRd2dBVUdXQVd4QjVBQnVJZ0VnQVVFTVRSc2lCQ0FBS0FMRUJFc0VRQ0FGUW9DQWdJQ0FBVGNDbEFJZ0JTQUZRUkJxSWdFMkFwQUNJQUVnQUNnQzBBUVFoeHNnQUNnQ3dBUWlBU0FBS0FMRUJFRXdiR29oQmdOQUFrQWdBU0FHUmdSQUlBQVE0QndnQUNBRUVQa1BJQVVvQXBBQ0lnRWdCU2dDbEFKQkJYUnFJUWtNQVFzZ0FTMEFJQVJBSUFFUTRBWWhCeUFGUVJCcUlnSW9Bb1FDSWdNZ0FpZ0NpQUpQQkVBZ0FpQUNLQUtJQWlJRFFRRjBRUUlnQXhzUWh4c2dBaWdDaEFJaEF3c2dBaUFEUVFGcU5nS0VBaUFDS0FLQUFpQURRUVYwYWlBSEVKQUpHZ3NnQVVFd2FpRUJEQUVMQ3dOQUlBRWdDVWNFUUNNQVFkQUJheUlDSkFBZ0FDZ0N4QVFnQUNnQzBBUWlBMEdXQVd4QmxnRnFRZVFBYmtrRVFDQUFJQU5CQVhSQkFtb1FtZ1FMSUFKQnlBRnFJQUFnQVJEckF5QUNJQUZCQ0dvMkFzUUJJQUlnQVRZQ3dBRWdBQ2dDeEFRaUNFRUJheUVLSUFFb0FnQWhDeUFBS0FMQUJDRUVJQUlvQXN3QklRd2dBaWdDeUFFaEJrRUFJUWNDUUFOQUlBY2dDRWNFUUNBRUlBWkJNR3hxSWdNdEFDQkZCRUFnQWlBQ1FjQUJhaENFR3lBRElBSVFtUVFnQWtFSWFoQVdJQUlvQXN3QklRZ2dCQ0FHUVRCc2FpSUVJQWMyQWl3Z0JDQUlOZ0lvSUFBZ0FDZ0MwQVJCQVdvMkF0QUVJQUFnQUNnQzFBUkJBV28yQXRRRUlBVWdBMEVJYWpZQ0RDQUZRUUEyQWdnTUF3c0NRQ0FES0FJb0lBeEhEUUFnQ3lBREtBSUFSdzBBSUFWQkFqWUNDQ0FGSUFOQkNHbzJBZ3dNQXdzZ0J5QURLQUlzU3dSQUlBSkJvQUZxSWdRZ0FrSEFBV29RaEJzZ0FpQUVFSmNFSVFRZ0FpZ0N6QUVoQ0NBRUlBYzJBaXdnQkNBSU5nSW9JQUpCcUFGcUVCWWdCQ0FERVBBRElBUWdCQ2dDTEVFQmFqWUNMQ0FBSUFaQkFXb2dBQ2dDeEFSd0lBUVFsZ1FnQUNBQUtBTFFCRUVCYWpZQzBBUWdBQ0FBS0FMVUJFRUJhallDMUFRZ0JTQURRUWhxTmdJTUlBVkJBRFlDQ0NBRUVKa0REQU1GSUFaQkFXcEJBQ0FHSUFwSEd5RUdJQWRCQVdvaEJ3d0NDd0FMQ3lBQ1FZYTFBMEhyQTBFT0lBSkJvQUZxRUIwaUF4QVhJZ1JCR0dwQmxqVVFEaG9nQkJBWUlBVkNBRGNDQ0NBREVCNExJQUpCMEFGcUpBQWdBVUVnYWlFQkRBRUxDeUFGUVJCcUlRRkJBQ0VBQTBBZ0FTZ0NoQUlnQUUwRVFDQUJRUUEyQW9RQ0JTQUJLQUtBQWlBQVFRVjBha0VJYWhBV0lBQkJBV29oQUF3QkN3c2dBU0FCS0FLQUFoQTJDeUFGUWFBQ2FpUUFDdzhBSUFBZ0FVSEV1UkpCRFJDTUNBc1FBQ0FBRUtFYklBQWdBQ2dDWUJBMkM0VUJBUUovSXdCQndBRnJJZ01rQUNBRElBRTJBcndCSUFBZ0F5Z0N2QUVRekJzaUFFSFFzaEkyQWdRZ0FFR1VzeEkyQWdBZ0FDQUNOd01RSUFCQjhMSVNOZ0lBSUFKQ0E0TkNBVkVFUUNBRFFRaHFRYmF6QlVFb1FRMGdBMEdvQVdvUUhTSUJFQmNpQkVFWWFrR1Y1UWdRRGhvZ0JCQVlJQUVRSGdzZ0EwSEFBV29rQUNBQUN5WUFJQUZCQVdvaUFVRUdUUVJBSUFCQkNHb2dBVUVDZEVHd3NoSnFLQUlBRUE0YUN5QUFDN2dNQVE5L0l3QkJzQUZySWdNa0FDQURRYUFCYWhCVkFrQWdBaWdDQkVVRVFDQURRYUFCYWtIYS9BSVEwZ0VNQVFzZ0EwR2dBV29nQTBHSUFXb2dBaEQ1QnlJQ0VKNEJJQUlRRHhvTEFrQUNmeUFEUVlnQmFpQUJRUVJxSWdzZ0EwR2dBV29RNXhzaURpZ0NBQ0lDS0FJUUlnOGdEaWdDRkVZRVFDQU9LQUlRREFFTEl3QkJFR3NpQ2lRQUl3QkJ3QUZySWd3a0FDTUFRUkJySWdna0FDQU9RUVJxSWcwb0FnQWhCU0FJSUEwb0FnUWdEUzBBQ3lJRUlBUkJHSFJCR0hWQkFFZ2lCQnMyQWdRZ0NDQUZJQTBnQkJzMkFnQWdDQkRmR3lFRklBSW9BZ1FoQkNBTUlBVTJBcndCSUF3Z0JTQUVjRFlDdUFFZ0NFRVFhaVFBSUFJb0FnUWlDVUVCYXlFSUlBd29BcmdCSVJBQ1FBTkFJQWtnRVVjRVFDQUNLQUlBSUJCQk1HeHFJZ2N0QUNSRkJFQWdDa0VBTmdJTUlBcEJBRG9BQ0F3REN5QU1LQUs4QVNFRVFRQWhCU01BUVJCcklnWWtBQ0FFSUFjb0FpaEdCRUFnRFNnQ0FDRUZJQVlnRFNnQ0JDQU5MUUFMSWdRZ0JFRVlkRUVZZFVFQVNDSUVHellDQkNBR0lBVWdEU0FFR3pZQ0FDQUdJQWNRM2hzaEJRc2dCa0VRYWlRQUlBVUVRQ0FLSUJBMkFnd2dDa0VCT2dBSURBTUxJQkVnQnlnQ0xFc0VRQ0FLUVFBMkFnd2dDa0VBT2dBSURBTUZJQkJCQVdwQkFDQUlJQkJIR3lFUUlCRkJBV29oRVF3Q0N3QUxDeUFNUVFocVFZYTFBMEdlQkVFT0lBeEJxQUZxRUIwaUJSQVhJZ1JCR0dwQjBqVVFEaG9nQkJBWUlBcEJBRFlDRENBS1FRQTZBQWdnQlJBZUN5QU1RY0FCYWlRQUlBb29BZ3doQlNBQ0tBSUFJUVFnQ2kwQUNDRUNJQXBCRUdva0FDQU9JQTgyQWhRZ0RpQUVJQVZCTUd4cVFRaHFRUUFnQWhzaUFqWUNFQ0FDQzBVRVFDQURJQU1vQXFRQklBTXRBS3NCSWdJZ0FrRVlkRUVZZFVFQVNDSUNHellDaEFFZ0F5QURLQUtnQVNBRFFhQUJhaUFDR3pZQ2dBRWdBeUFES1FPQUFUY0RFQ0FBSUFFZ0EwRVFhaER1RHd3QkMwRUFJUUlnQTBIZ0FHb2dBVUVZYWlJSElBTkJvQUZxRU9jYklnOFE1aHNFUUNBUEVPMFBLQUlBSVFJTElBTkIwQUJxRUZVRFFDQURJQUpCQVdvaUFqWUNmQ0FEUVRCcUlnZ2dBMEdnQVdwQnNiMEZFTGdDSUFOQklHb2lCQ0FDRUY4Z0EwRkFheUlKSUFnZ0JCQk9JQU5CMEFCcUlnVWdDUkNlQVNBSkVBOGFJQVFRRHhvZ0NCQVBHaUFESUFNb0FsUWdBeXdBV3lJRVFmOEJjU0FFUVFCSUlnUWJOZ0pFSUFNZ0F5Z0NVQ0FGSUFRYk5nSkFJd0JCRUdzaUJTUUFJQVZCQ0dvZ0N5QUpFT1ViSUFVdEFBZ2hCQ0FGUVJCcUpBQWdCQTBBQ3lBRElBTW9BbFFnQXkwQVd5SUVJQVJCR0hSQkdIVkJBRWdpQkJzMkFod2dBeUFES0FKUUlBTkIwQUJxSUFRYk5nSVlJQU1nQXlrREdEY0RDQ0FBSUFFZ0EwRUlhaER1RHdKQUlBOFE1aHNFUUNBUEVPMFBJQUkyQWdBTUFRc2pBRUhBQVdzaUJpUUFJQWNvQWdRZ0J5Z0NEQ0lBUVpZQmJFR1dBV3BCNUFCdVNRUkFJQWNnQUVFQmRFRUNhaERaR3dzZ0EwRkFheUVMSUFaQnVBRnFJQWNnQTBHZ0FXb2lCQkRtRHlBR0lBTkIvQUJxTmdLMEFTQUdJQVEyQXJBQklBY29BZ1FpQWtFQmF5RUJJQVlvQXJnQklRaEJBQ0VGQWtBRFFDQUNJQVZIQkVBZ0J5Z0NBQ0lBSUFoQkhHeHFJZ2t0QUJCRkJFQWdCaUFHUWJBQmFoRFlHeUFKSUFZUTF4c2dCaEFQR2lBR0tBSzhBU0VCSUFBZ0NFRWNiR29pQUNBRk5nSVlJQUFnQVRZQ0ZDQUhJQWNvQWd4QkFXbzJBZ3dnQnlBSEtBSVFRUUZxTmdJUUlBc2dDVUVNYWpZQ0JDQUxRUUEyQWdBTUF3c2dDU0FHS0FLOEFTQUVFT1VQQkVBZ0MwRUNOZ0lBSUFzZ0NVRU1hallDQkF3REN5QUZJQWtvQWhoTEJFQWdCa0dnQVdvaUFTQUdRYkFCYWhEWUd5QUdJQUVRMWhzaEFpQUdLQUs4QVNFQUlBSWdCVFlDR0NBQ0lBQTJBaFFnQVJBUEdpQUNJQWtRNUE4Z0FpQUNLQUlZUVFGcU5nSVlJQWNnQ0VFQmFpQUhLQUlFY0NBQ0VOVWJJQWNnQnlnQ0RFRUJhallDRENBSElBY29BaEJCQVdvMkFoQWdDeUFKUVF4cU5nSUVJQXRCQURZQ0FDQUNFS3dIREFNRklBaEJBV3BCQUNBQklBaEhHeUVJSUFWQkFXb2hCUXdDQ3dBTEN5QUdRWWExQTBIckEwRU9JQVpCb0FGcUVCMGlBUkFYSWdCQkdHcEJsalVRRGhvZ0FCQVlJQXRDQURjQ0FDQUJFQjRMSUFaQndBRnFKQUFMSUFOQjBBQnFFQThhSUE5QkJHb1FEeG9MSUE1QkJHb1FEeG9nQTBHZ0FXb1FEeG9nQTBHd0FXb2tBQXNYQUNBQUtBSUVRYWlVRWtZRWZ5QUFLQUlzQlNBQUN3dWdBUUVFZnlBQktBSUFJUVFnQVVFQU5nSUFJQUFnQkRZQ0FDQUFJQUVvQWdRMkFnUWdBVUVBTmdJRUlBQWdBU2dDQ0NJQ05nSUlJQUFnQVNnQ0RDSUROZ0lNSUFBZ0FTZ0NFRFlDRUNBREJFQWdBRUVJYWlFRElBSW9BZ1FoQWdKQUlBQW9BZ1FpQUNBQVFRRnJJZ1Z4UlFSQUlBSWdCWEVoQWd3QkN5QUFJQUpMRFFBZ0FpQUFjQ0VDQ3lBRUlBSkJBblJxSUFNMkFnQWdBVUlBTndJSUN3c0pBQ0FBRU9nSEVCOExod0VCQTM4Z0FTQUJLQUlFSUFBb0FnUWdBQ2dDQUNJRWF5SURheUlDTmdJRUlBTkJBRW9FUUNBQ0lBUWdBeEI5R2lBQktBSUVJUUlMSUFBb0FnQWhBeUFBSUFJMkFnQWdBU0FETmdJRUlBQW9BZ1FoQWlBQUlBRW9BZ2cyQWdRZ0FTQUNOZ0lJSUFBb0FnZ2hBaUFBSUFFb0FndzJBZ2dnQVNBQ05nSU1JQUVnQVNnQ0JEWUNBQXNSQUNBQUlBRW9BZ2dvQWlSQkpHb1FVd3NSQUNBQVFTQkI0ZjhEUVhoQkJ4REtBUXNSQUNBQVFTaEIyZjhEUVhoQkJ4REtBUXRNQVFGL0lBQW9BaFFpQWlBQUtBSVlUd1JBSUFBZ0FDZ0NHQ0lDUVFGMFFRSWdBaHNRL0FzZ0FDZ0NGQ0VDQ3lBQUlBSkJBV28yQWhRZ0FDZ0NFQ0FDUVFKMGFpQUJLQUlBTmdJQUN3NEFJQUFRSENBQVFSQnFFTUFkQzkwQkFRWi9Jd0JCNEFCcklnTWtBQ0FESUFJMkFsd2dBaWdDQkNJSVFjanBEMFlFUUNBRFFVQnJJZ1VnQTBFd2FpQUJFQlFpQVVIeW1na1FMU0FEUVNCcUlnWWdBa0VrYWhCVElBTkIwQUJxSWdjZ0JTQUdFRTRnQTBFSWFpSUVJQWRCOUlVQkVDMGdBQ0FFSUFKQkVHb1FKeUFFRUE4YUlBY1FEeG9nQmhBUEdpQUZFQThhSUFFUUR4b2dCQ0FBUWFBQmFpQURRZHdBYWhEVEVBSkFJQU10QUJoRkRRQWdBeTBBRkVFQlJ3MEFJQU1vQWdnaUFVVU5BQ0FBUWFnZGFpQUJFSjBKQ3lBRFFRaHFFTkVRQ3lBRFFlQUFhaVFBSUFoQnlPa1BSd3NPQUNBQUlBQWdBUkNLSGhDbEhndGlBUUovSXdCQklHc2lBaVFBQWtBZ0FTQUFLQUlJSUFBb0FnQWlBMnRCQW5WTEJFQWdBVUdBZ0lDQUJFOE5BU0FBSUFKQkNHb2dBU0FBS0FJRUlBTnJRUUoxSUFCQkNHb1Fwd0lpQUJDakJDQUFFSm9EQ3lBQ1FTQnFKQUFQQ3hBQkFBc05BQ0FBSUFFZ0FrRUFFTVVNQzVVQ0FRZC9Jd0JCRUdzaUFpUUFJd0JCc0FGcklnTWtBQ0FBS0FKa0lnVkJBV3NoQnlBQktBSUFJZ1lnQlhBaEFTQUFLQUpnSVFoQkFDRUFBa0FEUUNBQUlBVkhCRUFnQ0NBQlFRUjBhaUlFTFFBRVJRUkFJQUpCQURZQ0RDQUNRUUE2QUFnTUF3c0NRQ0FFS0FJSUlBWkhEUUFnQmlBRUtBSUFSdzBBSUFJZ0FUWUNEQ0FDUVFFNkFBZ01Bd3NnQUNBRUtBSU1Td1JBSUFKQkFEWUNEQ0FDUVFBNkFBZ01Bd1VnQVVFQmFrRUFJQUVnQjBjYklRRWdBRUVCYWlFQURBSUxBQXNMSUFOQmhyVURRWjRFUVE0Z0EwR2dBV29RSFNJQUVCY2lBVUVZYWtIU05SQU9HaUFCRUJnZ0FrRUFOZ0lNSUFKQkFEb0FDQ0FBRUI0TElBTkJzQUZxSkFBZ0FpMEFDQ0VBSUFKQkVHb2tBQ0FBQ3c0QUlBQkJIR29RcmdzZ0FCQmVDMk1DQW44QmZpTUFRUkJySWdNa0FDQUJJQUVvQWhRaUJFRUJhallDRkNBQktBSUlJQVF0QUFCQkFuUnFLQUtVQlNFRUlBTWdBaWtDQUNJRk53TUlJQVFvQWdBb0FnZ2hBaUFESUFVM0F3QWdBQ0FFSUFFZ0F5QUNFUVlBSUFOQkVHb2tBQXNOQUNBQVFSeHFFRjRnQUJCZUMxY0JBbjhnQVNBQUtBSklTd1JBSUFBb0FrQWhBaUFBSUFFUXJ4RkJBQ0VCQTBBZ0FDZ0NSQ0FCVFFSQUlBQWdBaEEyQlNBQlFRTjBJZ01nQUNnQ1FHb2dBaUFEYWlrQ0FEY0NBQ0FCUVFGcUlRRU1BUXNMQ3d2cEFRRUdmeU1BUVNCcklRUWdBQ2dDOUFFaUJrRUJheUVIQWtBRFFDQUZJQVpHRFFFZ0FDZ0M4QUVnQVVFVWJHb2lBeTBBQ0FSQUlBSWdBaWdDRUNJSUlBTW9BaEJMQkg4Z0JDQURLQUlRTmdJWUlBUWdBeWtDQ0RjREVDQUVJQU1wQWdBM0F3Z2dBeUFDS0FJUU5nSVFJQU1nQWlrQ0NEY0NDQ0FESUFJcEFnQTNBZ0FnQWlBRUtBSVlOZ0lRSUFJZ0JDa0RFRGNDQ0NBQ0lBUXBBd2czQWdBZ0FpZ0NFQVVnQ0F0QkFXbzJBaEFnQVVFQmFrRUFJQUVnQjBjYklRRWdCVUVCYWlFRkRBRUxDeUFESUFJcEFnQTNBZ0FnQXlBQ0tBSVFOZ0lRSUFNZ0Fpa0NDRGNDQ0FzTEhRRUJmeU1BUVJCcklnRWtBQ0FBRUxNTUlRQWdBVUVRYWlRQUlBQUxFUUFnQUVFWVFlbi9BMEY0UVFjUXlnRUxGd0FnQUJETkNTQUFMUUFJUVFKSEJFQVFid0FMSUFBTEhRRUJmaUFBUVFocUlBRXBBZ0FpQXFjZ0FrSWdpS2NRK3drYUlBQUxFZ0FnQUVIRUFFRzkvd05CZkVFREVNb0JDeHNBSUFBZ0FVSGtBRzRpQUJEb0NTQUFRWngvYkNBQmFoRG9DUXZKQVFFRGZ5TUFRUkJySWdVa0FDQUZJQUUyQWdoQkFDRUJRUVloQmdKQUFrQWdBQ0FGUVFocUVKQUNEUUJCQkNFR0lBTkJ3QUFnQUNnQ0FCRHRBU0lIRU1rQ1JRMEFJQU1nQnhEM0JDRUJBMEFDUUNBQlFUQnJJUUVnQUJDaEFpSUhJQVZCQ0dvUTJnSkZJQVJCQWtoeURRQWdBMEhBQUNBSEtBSUFFTzBCSWdZUXlRSkZEUU1nQkVFQmF5RUVJQU1nQmhEM0JDQUJRUXBzYWlFQkRBRUxDMEVDSVFZZ0J5QUZRUWhxRUpBQ1JRMEJDeUFDSUFJb0FnQWdCbkkyQWdBTElBVkJFR29rQUNBQkM5TUJBUU4vSXdCQkVHc2lCaVFBSUFZZ0FUWUNDRUVBSVFGQkJpRUZBa0FDUUNBQUlBWkJDR29RaHdJTkFDQUFLQUlBRU80QklRZEJCQ0VGSUFNb0FnaEJ3QUFnQnhDOUFrVU5BQ0FESUFjUXZBVWhBUU5BQWtBZ0FVRXdheUVCSUFBUW13SWlCeUFHUVFocUVNb0NSU0FFUVFKSWNnMEFJQWNvQWdBUTdnRWhCU0FES0FJSVFjQUFJQVVRdlFKRkRRTWdCRUVCYXlFRUlBTWdCUkM4QlNBQlFRcHNhaUVCREFFTEMwRUNJUVVnQnlBR1FRaHFFSWNDUlEwQkN5QUNJQUlvQWdBZ0JYSTJBZ0FMSUFaQkVHb2tBQ0FCQzVZQkFRTi9Jd0JCRUdzaUJDUUFJQVFnQXpZQ0RDQUVRUWhxSUFFUXR3TWhCaUFFS0FJTUlRTWpBRUVRYXlJQkpBQWdBU0FETmdJTUlBRWdBellDQ0VGL0lRVUNRRUVBUVFBZ0FpQURFSnNLSWdOQkFFZ05BQ0FBSUFOQkFXb2lBeERnQVNJQU5nSUFJQUJGRFFBZ0FDQURJQUlnQVNnQ0RCQ2JDaUVGQ3lBQlFSQnFKQUFnQlNFQUlBWVF0Z01nQkVFUWFpUUFJQUFMWXdBZ0FoQzRBVUd3QVhFaUFrRWdSZ1JBSUFFUEN3SkFJQUpCRUVjTkFBSkFBa0FnQUMwQUFDSUNRU3RyRGdNQUFRQUJDeUFBUVFGcUR3c2dBa0V3UnlBQklBQnJRUUpJY2cwQUlBQXRBQUZCSUhKQitBQkhEUUFnQUVFQ2FpRUFDeUFBQ3d3QUlBQWdBUkNiRFVFQmN3c3VBQUpBSUFBUXVBRkJ5Z0J4SWdBRVFDQUFRY0FBUmdSQVFRZ1BDeUFBUVFoSERRRkJFQThMUVFBUEMwRUtDd2NBSUFBUU8wVUxUQUVCZnlBQUtBSVFJZ0lnQUNnQ0ZFOEVRQ0FBSUFBb0FoUWlBa0VCZEVFQ0lBSWJFTHdOSUFBb0FoQWhBZ3NnQUNBQ1FRRnFOZ0lRSUFBb0Fnd2dBa0VDZEdvZ0FTZ0NBRFlDQUFzWEFDQUFJQU0yQWhBZ0FDQUNOZ0lNSUFBZ0FUWUNDQXNSQUNBQ0JFQWdBQ0FCSUFJUW5nMGFDd3V4QVFFR2Z5TUFRU0JySWdJa0FDQUNRUmhxSWdNZ0FCRGZBeG9DUUNBREVKSUVSUTBBSUFKQkVHb2lBeUFBSUFBb0FnQkJER3NvQWdCcUVINGdBeEQ5QkNFRUlBTVFaQ0FDUVFocUlBQVEwZ1FoQlNBQUlBQW9BZ0JCREdzb0FnQnFJZ1lRbkFNaEJ5QUNJQVFnQlNnQ0FDQUdJQWNnQVNBRUtBSUFLQUljRVJnQU5nSVFJQU1RMFFSRkRRQWdBQ0FBS0FJQVFReHJLQUlBYWtFRkVJOERDeUFDUVJocUVPQURJQUpCSUdva0FDQUFDMzBDQW44QmZpTUFRU0JySWdVa0FDQUZJQU1nQTBJL2h5QUVJQVJDUDRjUXNBSWdBQUovQWtBZ0JTa0RDQ0FGS1FNQUlnZENQNGRSRFFBZ0JVRVFhaUlHSUFOQjNaZ0lJQVFRN2dZZ0FTQUdJQUlRWFNBR0VBOGFRZ0FoQnlBQkxRQUVEUUJCQWd3QkN5QUFJQWMzQXdCQkFRczZBQWdnQlVFZ2FpUUFDL29CQWdOK0FuOGpBRUVRYXlJRkpBQUNmaUFCdlNJRFF2Ly8vLy8vLy8vLy93Q0RJZ0pDZ0lDQWdJQ0FnQWg5UXYvLy8vLy8vLy92L3dCWUJFQWdBa0k4aGlFRUlBSkNCSWhDZ0lDQWdJQ0FnSUE4ZkF3QkN5QUNRb0NBZ0lDQWdJRDQvd0JhQkVBZ0EwSThoaUVFSUFOQ0JJaENnSUNBZ0lDQXdQLy9BSVFNQVFzZ0FsQUVRRUlBREFFTElBVWdBa0lBSUFPblowRWdhaUFDUWlDSXAyY2dBa0tBZ0lDQUVGUWJJZ1pCTVdvUXpBSWdCU2tEQUNFRUlBVXBBd2hDZ0lDQWdJQ0F3QUNGUVl6NEFDQUdhNjFDTUlhRUN5RUNJQUFnQkRjREFDQUFJQUlnQTBLQWdJQ0FnSUNBZ0lCL2c0UTNBd2dnQlVFUWFpUUFDd2tBSUFDOVFqU0lwd3RxQVFGL0l3QkJNR3NpQXlRQUlBTWdBVFlDQ0NBRFFRaHFRUVJ5SUFJUVZDRUNRUlFRRlNJQlFlU1VJRFlDQUNBQklBTW9BZ2cyQWdRZ0FVRUlhaUFDRUZRYUlBTWdBVFlDS0NBQVFhQURhaUFEUVJocUlnQVFrd0VnQUJBV0lBSVFEeG9nQTBFd2FpUUFDNXdCQVFOL0l3QkI4QUZySWdVa0FDQUZRWmlJSURZQzJBRWdCU0FGUWRnQmFpSUhOZ0xvQVNBQUlBY2dBaUFERUlrRVJRUkFJQVZCR0dvaUF5QUFRWElnQWhBUUlBVkJDR29pQUNBRUVLUUdJQU1nQUJBU0dpQURRZTIxREJBT0dpQURRWmJOQ2hBT0dpQURJQUVRRWhvZ0EwSGpxd1FRRGhvZ0JTZ0MxQUVoQmlBQUVBOGFJQU1RRVFzZ0JVSFlBV29RRmlBRlFmQUJhaVFBSUFZTHVBSUJBMzhqQUVId0FXc2lCaVFBSUFZZ0JUb0E3d0VDUUFKQUlBSW9BaUJCQ2tjTkFDQUdRZENISURZQ0VDQUdJQVpCRUdvMkFpQUNRQ0FDS0FJRUlBSW9BZ0FpQld0QkFuVWdBMDBOQUNBQUlBVWdBMEVDZEdvb0FnQVF1Z0VpQlM4QkhrRU1SdzBBSUFVb0FpQkJDa2NOQUNBR1FSQnFJZ2NnQlNnQ0FDZ0NFQkNLQWlFSUlBY1FGa0VBSVFVZ0NFVU5BUXdDQ3lBR1FSQnFFQllMSUFaQjlJY2dOZ0xRQVNBR0lBWkIwQUZxSWdjMkF1QUJJQVlnQmtIdkFXbzJBdFFCUVFBaEJTQUFJQWNnQWlBREVJa0VSUVJBSUFaQkVHb2lBeUFBUVhJZ0FoQVFJQVlnQkJDa0JpQURJQVlRRWhvZ0EwSHR0UXdRRGhvZ0EwR1d6UW9RRGhvZ0F5QUJFQklhSUFOQjBZd0VFQTRhSUFZb0Fzd0JJUVVnQmhBUEdpQURFQkVMSUFaQjBBRnFFQllMSUFaQjhBRnFKQUFnQlF2Q0FRRUZmMEVBSUFBb0FoUWlBaUFDUVI5TElnSWJJUVJCQUNBQUtBSVFJQUliSVFVZ0FFRU1haUVCQTBBZ0FTZ0NBQ0VEUVFBaEFRSkFBMEFnQXlBRlJ5QUJJQVJIY2tVRVFDQUFLQUlBSVFFRFFDQUJSUTBESUFFb0FvQ0FCQ0VDSUFFUUh5QUNJUUVNQUFzQUN5QURJQUZCQW5ScUtBSUFJZ0lnQWlnQ0FDZ0NBQkVBQUJvZ0FVRUJhaUlCUVNCSERRQUxJQU5CZ0FGcUlRRU1BUXNMSUFCQkFEWUNHQ0FBUW9DQWdJQ0FCRGNDRUNBQVFvQ0FCRGNDQ0NBQVFnQTNBZ0FMRVFBZ0FFRTRRY24vQTBGNFFRY1F5Z0VMQ0FBZ0FDMEFKQm9Mc3dzQkJYOGpBRUVRYXlJRkpBQWdBaWdDTENJRElBSkJDR29nQXhzb0FnQWhBeUFDRUxnWElRUWdCU0FBTmdJTUlBTWdCQ0FGUVF4cUVKb0ZJQUlRdUJkR0JFQWdCU0FBTmdJSUlBVkJDR29oQmdKQUlBSW9BaXdpQXcwQUlBSW9BZ1JCQ0VjTkFFRUFJUU1qQUVFUWF5SUVKQUFDUUNBQ0tBSXNSUVJBRU13WElRY2dCRUVBTmdJSUlBSkJMR29nQnhDTkJTQUVRUWhxRUxzR0EwQWdBeUFDS0FJRVR3MENJQUlvQWl3Z0FpZ0NDQ0FEUVFKMGFoRFpCaUFEUVFGcUlRTU1BQXNBQzBHbXZRVkJpYXdEUWIwRFFjeTZCUkFBQUFzZ0FrRUFOZ0lFSUFSQkVHb2tBQ0FDS0FJc0lRTUxBa0FnQXdSQUlBTWdCaEQ5QWd3QkN5QUNLQUlJSUFJb0FnUWlBMEVDZEdvZ0JpZ0NBRFlDQUNBQ0lBTkJBV28yQWdRTElBQW9BaEFnQVVFR2RDQUJRUUoyYW1wQng0eWlqZ1pySUFGeklRTWdBQ2dDQ0NFRUlBQW9BZ1FoQVFKL0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUEwQWdBU0FFUmdSQUFrQWdBQ2dDRUE0YkhRQURCQVVHQndnSkNnc01EUTRQRUJFU0V4UVZGaGNZR1JvYkhBc0ZJQU1nQVJDWkRpRURJQUZCREdvaEFRd0JDd3NnQUNBQUtBSUFLQUlnRVFBQUlnQWdBeUFDSUFBb0FnQW9BdXdCRVFRQURCc0xJQUFnQUNnQ0FDZ0NLQkVBQUNJQUlBTWdBaUFBS0FJQUtBTHNBUkVFQUF3YUN5QUFJQUFvQWdBb0FqQVJBQUFpQUNBRElBSWdBQ2dDQUNnQzdBRVJCQUFNR1FzZ0FDQUFLQUlBS0FJNEVRQUFJZ0FnQXlBQ0lBQW9BZ0FvQXV3QkVRUUFEQmdMSUFBZ0FDZ0NBQ2dDUUJFQUFDSUFJQU1nQWlBQUtBSUFLQUxzQVJFRUFBd1hDeUFBSUFBb0FnQW9Ba2dSQUFBaUFDQURJQUlnQUNnQ0FDZ0M3QUVSQkFBTUZnc2dBQ0FBS0FJQUtBSlFFUUFBSWdBZ0F5QUNJQUFvQWdBb0F1d0JFUVFBREJVTElBQWdBQ2dDQUNnQ1dCRUFBQ0lBSUFNZ0FpQUFLQUlBS0FMc0FSRUVBQXdVQ3lBQUlBQW9BZ0FvQW1BUkFBQWlBQ0FESUFJZ0FDZ0NBQ2dDN0FFUkJBQU1Fd3NnQUNBQUtBSUFLQUpvRVFBQUlnQWdBeUFDSUFBb0FnQW9BdXdCRVFRQURCSUxJQUFnQUNnQ0FDZ0NjQkVBQUNJQUlBTWdBaUFBS0FJQUtBTHNBUkVFQUF3UkN5QUFJQUFvQWdBb0FuZ1JBQUFpQUNBRElBSWdBQ2dDQUNnQzdBRVJCQUFNRUFzZ0FDQUFLQUlBS0FLQUFSRUFBQ0lBSUFNZ0FpQUFLQUlBS0FMc0FSRUVBQXdQQ3lBQUlBQW9BZ0FvQW9nQkVRQUFJZ0FnQXlBQ0lBQW9BZ0FvQXV3QkVRUUFEQTRMSUFBZ0FDZ0NBQ2dDa0FFUkFBQWlBQ0FESUFJZ0FDZ0NBQ2dDN0FFUkJBQU1EUXNnQUNBQUtBSUFLQUtZQVJFQUFDSUFJQU1nQWlBQUtBSUFLQUxzQVJFRUFBd01DeUFBSUFBb0FnQW9BcUFCRVFBQUlnQWdBeUFDSUFBb0FnQW9BdXdCRVFRQURBc0xJQUFnQUNnQ0FDZ0NxQUVSQUFBaUFDQURJQUlnQUNnQ0FDZ0M3QUVSQkFBTUNnc2dBQ0FBS0FJQUtBS3dBUkVBQUNJQUlBTWdBaUFBS0FJQUtBTHNBUkVFQUF3SkN5QUFJQUFvQWdBb0FyZ0JFUUFBSWdBZ0F5QUNJQUFvQWdBb0F1d0JFUVFBREFnTElBQWdBQ2dDQUNnQ3dBRVJBQUFpQUNBRElBSWdBQ2dDQUNnQzdBRVJCQUFNQndzZ0FDQUFLQUlBS0FMSUFSRUFBQ0lBSUFNZ0FpQUFLQUlBS0FMc0FSRUVBQXdHQ3lBQUlBQW9BZ0FvQXRBQkVRQUFJZ0FnQXlBQ0lBQW9BZ0FvQXV3QkVRUUFEQVVMSUFBZ0FDZ0NBQ2dDMkFFUkFBQWlBQ0FESUFJZ0FDZ0NBQ2dDN0FFUkJBQU1CQXNnQUNBQUtBSUFLQUxnQVJFQUFDSUFJQU1nQWlBQUtBSUFLQUxzQVJFRUFBd0RDeUFBSUFBb0FnQW9BdWdCRVFBQUlnQWdBeUFDSUFBb0FnQW9BdXdCRVFRQURBSUxRYU9vQ1VHQW9BSkI3d0ZCeHRVREVBQUFDeUFBSUFBb0FnQW9BaGdSQUFBaUFDQURJQUlnQUNnQ0FDZ0M3QUVSQkFBTElRRUNRQ0FDS0FJc0lnQUVRQ0FBSUFBb0FnUkJCR3MyQWdRTUFRc2dBaUFDS0FJRVFRRnJOZ0lFQ3dzZ0JVRVFhaVFBSUFFTERRQWdBQkN2QVNBQUtBTFlBUXNYQUNBQUtBSVFCRUFnQUNBQklBSWdBeUFFRUxvT0N3dVZBUUVDZnlNQVFSQnJJZ01rQUNBRElBRTJBZ3dDUUNBQlFUOU5CRUFnQUNBQUtRTUFRZ0VnQWEyR2hEY0RBQXdCQ3lNQVFSQnJJZ0VrQUNBQUtBSUlJZ0pGQkVCQkRCQVZJZ0pDQURjQ0JDQUNJQUpCQkdvMkFnQWdBVUVBTmdJSUlBQkJDR29nQWhEWkRpQUJRUWhxRU1VRElBQW9BZ2doQWdzZ0FVRVFhaVFBSUFNZ0FpQURRUXhxRU5VRkN5QURRUkJxSkFBTEdRRUJmeU1BUVJCcklnRWdBRFlDRENBQktBSU1LQUlBUlF0RUFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQ0lBSUFJb0FnZ2lBU0FCS0FJQVFReHJLQUlBYWhDMUJqWUNBQ0FDUVJCcUpBQWdBQXMyQVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0NDRUFJQUlvQWd3UStnSWdBRFlDQkNBQ1FSQnFKQUFMVVFFQmZ5TUFRUkJySWdNa0FDQUNLQUprQkVBZ0EwRUFPZ0FNSUFNZ0FrSGdBR28yQWdnZ0FDQUJJQU5CQ0dvUSt3SWdBVUVJYWtIMzhBd1FEaG9MSUFGQkNHcEJpQWdRRGhvZ0EwRVFhaVFBQ3pFQkFuOGdBQ2dDQ0NFQkEwQWdBUVJBSUFFb0FnQWhBaUFCUVF4cUVESWFJQUVRSHlBQ0lRRU1BUXNMSUFBUXR3SUxpQUVCQVg4akFFRVFheUlFSkFBZ0JDQUNOZ0lJSUFRZ0F5Z0NBRFlDQkNNQVFSQnJJZ0lrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ00yQWd3Z0FpQUROZ0lJSUFCQmpBRnFJZ01nQXhERkFpQUFLQUlJSUFJb0FnZ2dBU0FFS0FJSUlBUW9BZ1FRK3g0aUFCQW9JQU1nQXlnQ0dFRUJhallDR0NBQ1FSQnFKQUFnQkVFUWFpUUFJQUFMSndFQmZ5TUFRUkJySWdFa0FDQUJRUWhxSUFBUTl4a2dBU2dDQ0NFQUlBRkJFR29rQUNBQUM4NENBZ1IvQVg0akFFR0FBV3NpQkNRQUlBUkJDR29nQXhEUkFTRUZJQVJCSUdvaUF5QUNOZ0lFSUFNZ0FUWUNBQ0FEUVFocUlBVVEwUUVhSUFOQ0FEY0NUQ0FEUW9DQWdJQ0FBVGNDUkNBRFFVQnJJQU5CSUdvMkFnQWdBMElBTndCUklBQkJNR29pQWlnQ2hBWWlBU0FDS0FLSUJrOEVRQ0FDS0FLSUJpSUFRUUYwUVFJZ0FCc2lBQ0FDS0FLSUJrc0VRQ0FDS0FLQUJpRUdRUWdoQVNBQ0lRY2dBRUVJVHdSQVFYOGdBSzFDNEFCK0lnaW5JQWhDSUlpbkd4QVZJUWNnQUNFQkN5QUNJQWMyQW9BR0lBSWdBVFlDaUFaQkFDRUJBMEFnQWlnQ2hBWWdBVTBFUUNBQ0lBWVFOZ1VnQVVIZ0FHd2lBQ0FDS0FLQUJtb2dBQ0FHYWlJQUVKY1BJQUFROHdnZ0FVRUJhaUVCREFFTEN3c2dBaWdDaEFZaEFRc2dBaUFCUVFGcU5nS0VCaUFDS0FLQUJpQUJRZUFBYkdvZ0F4Q1hEeUFERVBNSUlBVVFGaUFFUVlBQmFpUUFDMTBBSUFCQnVQUVBOZ0lFSUFCQjJQUVBOZ0lBSUFCQjZQUVBOZ0lFSUFCQm5QVVBOZ0lBSUFBZ0FqWUNEQ0FBSUFFMkFnZ2dBRUdJOVE4MkFnQWdBQ0FES1FJQU53SVFJQUFnQXlrQ0NEY0NHQ0FBSUFNb0FoQTJBaUFnQUFzN0FRRi9Jd0JCRUdzaUFpUUFJQUlnQUNBQVFkZ0NhaUFCRVBNTklnRTJBZ3dnQUNBQlFSQnFJQUpCREdvUXN3TWhBQ0FDUVJCcUpBQWdBQXNaQUNBQUxRQWdCRUFnQUNBQkVJVWJEd3NnQUNBQkVNOExDeGNBSUFBb0FnQWlBQ0FBSUFFZ0FpQURFSkliRUlFREM1WVFBUXQvSXdCQm9BSnJJZ0lrQUFKQUFrQURRQ0FCS0FJRUlnUkJrTFVTUmcwQ0lBUkJrS29TUmdSQUlBQW9BZ0JCQkdvUXRBc2hBd3dEQ3lBRVFhQ3pFa1lFUUNBQUtBSUFRUVJxRU5NUElRTU1Bd3NnQkVIUXFCSkdCRUFnQUNnQ0FFRUVha0hkOEFZUXlnWWhBd3dEQ3lBRVFiQ3BFa1lFUUNBQUtBSUFRUVJxRU9RSElRTU1Bd3NnQkVIUXBSSkdCRUFnQUNnQ0FFRUVhaERTRHlFRERBTUxJQVJCOEtvU1JnMEJJQUVRc2dJaUJBUkFJQUlnQUNBRUtBSVlFTjBFSWdFMkFwZ0NJQVF0QUNBRVFDQUVLQUljUVFOSEJFQWdBa0hvQUdwQjJLZ0ZRZWNBUVF3Z0FrR0lBbW9RSFNJQkVCY2lBMEVZYWtIUG1nZ1FEaG9nQXhBWUlBRVFIZ3NnQUNnQ0FDRUFJQUpCR3pZQ2FDQUFLQUlFSWdFaERDQUNRZWdBYWlFRElBRkIyQUpxSVFRakFFRXdheUlBSkFBZ0FFRWdhaUFDUVpnQ2FoRGdCd0ovSUFBb0FpaEZCRUFnQUNBQklBTVFxZ3dnQVNBRUlBQVF6Z0lNQVFzZ0FDQUJJQU1RcWd3Z0FTQUVJQUFnQUVFZ2FoQ3pDd3NoQVNBQVFTQnFFS2dCSUFCQk1Hb2tBQ0FNSUFFUWdRTWhBd3dFQ3lBQUtBSUFRUVJxSUFFZ0JDZ0NIQkNkR3lFRERBTUxJQUVvQWdSQmtLSVNSZ1JBSUFBZ0FTZ0NHQkRkQkNFRUlBSkNnSUNBZ0JBM0E1QUNJQUlnQWtHSUFtbzJBb3dDSUFFb0FpZ2lCU0FCS0FJc1J3UkFJQUFvQWdBaEF5QUNJQVUyQXBnQ0l3QkJFR3NpQlNRQUlBTVFIQ0FESUFNb0FneEJBV29pQmpZQ0RDQUZJQVkyQWdnZ0EwR01BV29nQTBFSWFpQUZRUWhxSUFOQjJBSnFJQUpCbUFKcUVKTWJJUU1nQlVFUWFpUUFJQUlnQXpZQ2FDQUNRWWdDYWlBQ1FlZ0FhaEN1QlFzZ0FrR0lBbXBCQkhJaEJRSi9JQUVvQWh3aUNDZ0NCQ0lEUWFpakVrWUVRQ0FBS0FJQUlRQWdBaUFGTmdKZ0lBSWdBaWdDakFJZ0FrR0lBbXBIT2dCa0lBQkJCR29nQkNBQ1FlQUFhaERqQnd3QkN5QURRZWlNRWtZRVFDQUNJQUFnQ0NnQ0RDZ0NDQkNPSGpZQ2FDQUFLQUlBSVFFZ0FpQUZOZ0pZSUFJZ0FpZ0NqQUlnQWtHSUFtcEhPZ0JjSXdCQkVHc2lBeVFBSUFFb0FnUWhDQ0FESUFJcEFsZzNBd2dqQUVIZ0FHc2lBQ1FBSUFFb0FnUWhCU0FBUVFVMkFqd2dBRUhzR3pZQ09DQUFJQUFwQXpnM0F3Z2dBRUZBYXlJSElBVWdBRUVJYWhEaEFTQUFJQVEyQWhBZ0FTZ0NCQ0VFSUFJb0FtZ2hCaU1BUVJCcklnRWtBQ0FCSUFRZ0JrRVFhaUFHS0FJa1FTUnFFUE1OSWdZMkFnd2dCQ0FHUVJCcUlBRkJER29Rc3dNaEJDQUJRUkJxSkFBZ0FFRUNOZ0ljSUFBZ0JEWUNGQ0FBSUFCQkVHbzJBaGdnQUNBQUtRTVlOd01BSUFVZ0JTQUlRZGdDYWlBSElBQkJJR29nQUJDMUFpSUJJQU5CQ0dvUXh3OFFnUU1oQkNBQkVLb0JJQUJCNEFCcUpBQWdBMEVRYWlRQUlBUU1BUXNnQTBHQWpSSkdCRUFnQUNnQ0JCRE9CQ0lHS0FMd0FpSURJQVlvQXZRQ1FRSjBhaUVLQWtBRFFDQURJQXBHRFFFQ1FDQURLQUlBSWdZb0FnUkJtUGdSUnlBR1JYSkZCRUFnQUNnQ0JDSUhFSzhCUVFBaENRSkFJQVpGRFFBZ0JpZ0NEQ0lMSUFjb0F1QUJJQWNvQXR3QklnZHJRUUoxVHcwQUlBY2dDMEVDZEdvb0FnQWlCMEVBSUFjRWZ5QUhLQUlFRU5NTkJVRUFDeHNoQ1FzZ0FTQUpSZzBCQ3lBRFFRUnFJUU1NQVFzTElBQW9BZ0FoQVNBQ1FlZ0FhaUlESUFBZ0FrRTRhaUFHS0FJa1FTUnFFRllRN3djZ0FVRUVhaUFERU1zR0RBSUxJQUlnQUNBSUtBSU1LQUlJRUpjQk5nSm9JQUFvQWdBaEFDQUNJQVUyQWpBZ0FpQUNLQUtNQWlBQ1FZZ0Nha2M2QURRZ0FFRUVhaUFFSUFKQjZBQnFJQUpCTUdvUTBROE1BUXNnQTBHUW94SkhCRUFnQUNnQ0FDSUJFQndnQWtIb0FHb2lBMEhZcUFWQmpRRkJEQ0FCUWNnQ2FoQVhJZ0ZCcUtJU0VKb0JHaUFCRUJnZ0FDZ0NBQ0VBSUFJZ0JUWUNLQ0FDSUFJb0Fvd0NJQUpCaUFKcVJ6b0FMQ0FDUVFFMkFtZ2dBRUVFYWlBRUlBTWdBa0VvYWhEaUJ3d0JDeUFJS0FJTUlRRWdBa0VCT2dCc0lBSWdBVFlDYUNBQUtBSUFJUUFnQWtIb0FHb1F2Z0VvQWdBaEFTQUNJQVUyQWlBZ0FpQUJOZ0tZQWlBQ0lBSW9Bb3dDSUFKQmlBSnFSem9BSkNBQVFRUnFJQVFnQWtHWUFtb2dBa0VnYWhEaUJ3c2hBeUFDUVlnQ2FoQ29BUXdEQ3lBQkVQQUdJZ1FFUUNBQUtBSUFJUUVnQWtIb0FHb2lBeUFBSUFJZ0JFRVlhaEJXRU84SElBRkJCR29nQXhETEJpRUREQU1MSUFFb0FnUWlCRUc0clJKR0JFQWdBU2dDR0NFQkRBRUxDeUFFUWZDa0VrWUVRQ0FBS0FJQVFRUnFJQUFnQVNnQ0dCRGRCQkNjR3lFRERBSUxJQVJCa0tjU1JnUkFJQUFvQWdCQkJHb2dBU2dDR0JDYkd5RUREQUlMSUFSQnNLWVNSZ1JBSUFBb0FnQkJCR29nQVNnQ0dCQ2FHeUVEREFJTElBUkI4S2NTUmdSQUlBQW9BZ0JCQkdwQnFaWURFTW9HSVFNTUFnc2dCRUhRcXhKR0JFQWdBQ2dDQUVFRWFpQUJLQUlZSUFBZ0FTZ0NIQkRkQkJDWkd5RUREQUlMSUFSQm1LNFNSZ1JBSUFBb0FnQkJCR29nQVNnQ0dDQUFJQUVvQWh3UTNRUVFtQnNoQXd3Q0N5QUVRZGl2RWtZRVFDQUFLQUlBUVFScUlBRW9BaGdnQVNnQ0hDQUJLQUlnRUpZYklRTU1BZ3NnQkVINHJoSkdCRUFnQUNnQ0FFRUVhaUFCS0FJWUVKVWJJUU1NQWdzZ0JFSFlyQkpHQkVBZ0FTZ0NIQ0lFUVFkR0JFQWdBU2dDSUNFREN5QUFLQUlBUVFScUlBQWdBU2dDR0JEZEJDQUVJQU1RMEE4aEF3d0NDeUFBS0FJQUlnQVFIQ0FDUWVnQWFrSFlxQVZCdVFGQkRDQUFRY2dDYWhBWElnQkJHR29pQkVIdXZ3c1FEaG9nQkVIaWxBd1FEaG9nQUNBQktBSUVRUVJxRUpvQkdpQUFFQmdNQVFzZ0FDQUJLQUlZRU4wRUlRTWdBQ2dDQUVFRWFpQURJQUVvQWlRZ0FTZ0NJQkNVR3lFREN5QUNRYUFDYWlRQUlBTUxLQUVCZnlNQVFSQnJJZ0lrQUNBQ0lBRTZBQThnQUNBQ1FROXFRUUVRK3drYUlBSkJFR29rQUFzcUFDQUFJQUVwQWdBM0FnQWdBQ0FCS1FJSU53SUlJQUFnQVNrQ0VEY0NFQ0FBSUFFb0FoZzJBaGdMREFBZ0FCRG9CeG9nQUJBZkMzSUJBbjhqQUVHZ0FXc2lCQ1FBSUFSQjE0d0ZRZVVBUVFFZ0FCRE1BeEFYSWdCQkdHb2lBMEdxOGd3UURob2dBMEd1OEF3UURob2dBQ0FCS0FJRVFRUnFFSm9CSWdGQkdHb2lBMEhiK0F3UURob2dBMEhWc0F3UURob2dBU0FDUVFScUVKb0JHaUFBRUJnZ0JFR2dBV29rQUFzTUFDQUFJQUVvQWdBUWxRa0x3VFVDQzM4QmZpTUFRWUFEYXlJREpBQWdBeUFDTmdJVUlBTWdBRFlDQ0NBRElBTkJGR28yQWd3Q1FDQUNCRUFnQWlnQ0JDSUVRZmpyRDBZRVFDQUNLQUlrSWdRb0FnUkI2SU1TUmdSQUlBTkJHR29nQUNBQklBSW9BaWhCQUJDbUFpQURLQUlZSVFFTUF3c2dBMEVZYWlBQUlBRWdCRUVBRU80SElBTkIyQUZxSUFBZ0F5Z0NHQ0FDS0FJb1FRQVFwZ0lnQXlnQ0hDSUJJQU1vQXR3QkVHb2dBQ2dDNEtjQ1FiZ0lhaUFEUVNCcUlBRVFnd01nQXlnQzJBRWhBUXdDQ3lBRVFianpEMFlFUUNBRFFSaHFFTk1HSVFZZ0FDZ0M0S2NDUWJnSWFoQ2VFQ0FDS0FKRUlnUWdBaWdDU0VFQ2RHb2hCUU5BSUFRZ0JVY0VRQ0FBSUFFZ0JDZ0NBQ0lIRU9NRUlRRWdCRUVFYWlFRUlBQW9BZ1FnQnhEaEFpMEFHRUVJY1EwQkN3c0NRQ0FBS0FJRUlBSVE0UUlvQWd3aUJFVU5BQ0FFS0FJRVFlQ1VFa2NOQUNBRUtBSUlJZ1JCQUNBRUtBSUVRZmp3RDBZYktBSW9JZ1JGRFFBZ0FDZ0NCQ0FDRU9FQ0xRQVlRUXh4UlEwQUlBQWdBU0FFRU9NRUlRRUxJQUFvQWdRaEJFRUFJUVVDUUNBQ1JRMEFJQUlvQWd3aUJ5QUVLQUlFSUFRb0FnQWlCR3RCQW5WUERRQWdCQ0FIUVFKMGFpZ0NBQ0lFUlEwQUlBUkJBQ0FFS0FJRVFiQ09Fa1liSVFVTEFrQWdCVVVOQUNBQUtBTGdwd0lpQlNnQytBY2lCQ0FGS0FMOEIwSDhBR3hxSVFVRFFDQUVJQVZHRFFFZ0JDZ0NlQ0lIQkVBZ0FDZ0M0S2NDSVFnZ0F5QUVLQUlBTmdMWUFTQUhJQWhCdUFocUlBTkIyQUZxRUlNQ0VHb0xJQVJCL0FCcUlRUU1BQXNBQ3lBR0lBQW9BdUNuQWlJRVFad1JhaWdDQUVHTUFXd2dCRUdZRVdvb0FnQnFRWXdCYXhEM0hDRUVJQUFvQXVDbkFrRzRDR29RblJBQ1FDQUFLQUlFSUFJUTRRSXRBQmhCQ0hGRkRRQWdBMEhZQVdvZ0JCQ2tCU0FEUWJnQmFpQUVFS01GSUFNb0FyZ0JJUVlEUUNBREtBTFlBU0lGSUFaR0RRRWdCUkM2QWlFRklBQW9BdUNuQWtHNENHb2dCU0FGS0FJRUVJTURJQU5CMkFGcUVPa0VEQUFMQUFzZ0EwSFlBV29oQlNBQUtBSUVJUVpCQUNFSEFrQWdBa1VOQUNBQ0tBSU1JZ0lnQmlnQ0JDQUdLQUlBSWdaclFRSjFUdzBBSUFZZ0FrRUNkR29vQWdBUTRBc2hCd3NnQjBFNGFpSUNLQUtrQWlFR0lBVWdBaWdDb0FJaUJ6WUNBQ0FGSUFjZ0JrRXdiR28yQWdRZ0JSRC9DQ0FEUWJnQmFpSUZJQUlvQXFBQ0lBSW9BcVFDUVRCc2FpSUNOZ0lFSUFVZ0FqWUNBQ0FGRVA4SUEwQWdBeWdDMkFFaUFpQURLQUs0QVVjRVFDQUNFT2dMSVFJZ0FDZ0M0S2NDSVFVZ0F5QUNLQUlnTmdMNEFpQUZRYVFSYWlBRFFmZ0NhaEQySENBRFFkZ0JhaEQ0SEF3QkN3c2dCQkRPQXd3Q0N5QUVRYmpzRDBZRVFBSi9JQUFvQWdRZ0FoRGhBaUlDRU5nY0JFQWdBaERUQWd3QkN3TkFRUUFnQWlnQ0RDSUNSUTBCR2lBQ0VOZ2NSUTBBQ3lBQ0VOTUNDeUVGSUFBb0F1Q25BaUFGRU04R0lRWWdBMEc0QVdvZ0FDZ0M0S2NDUWFRUmFpSUNFS0lGSUFOQitBSnFJQUlRb1FVZ0JrR1lBV29oQndOQUlBTW9BcmdCSWdJZ0F5Z0MrQUpHRFFNZ0F5QUNFTDRCS0FJQUlnSTJBdEFCQWtBQ1FDQUNSU0FDS0FJRVFhaWNFa2R5RFFBZ0FpZ0NVQ0lFRU5NQ0lnaEJBQ0FGSUFoR0d3MEJBMEFnQkNnQ0RDSUVSUTBCSUFRZ0JVY05BQXNNQVFzZ0EwRUFOZ0lZSUFOQjJBRnFJQWNnQTBIUUFXb2dBMEVZYWhDYkNRSkFJQU1vQXRnQkJFQWdBeWdDM0FFaEJBd0JDeUFHS0FLZ0FpRUVJQU5CR0dvaUNDQUNFS1FFSUFBb0F1Q25Ba0VBRUp3QklRSWdDQkFQR2lBRElBSTJBdkFDSUFZb0FxQUNJQVJHQkVBZ0F5Z0MzQUVpQkNBQ05nSUFEQUVMSUFOQkdHb2dCeUFEUWRBQmFpQURRZkFDYWhEdkJTQURLQUljSVFRTElBUW9BZ0FnQUNnQzRLY0NRYmdJYWlBRFFkQUJhaENEQWhCcUN5QURRYmdCYWhDZ0JRd0FDd0FMSUFSQmdJUVNSZ1JBSUFOQnVBRnFJQUFnQVNBQ0tBSWtRUUFRcGdJZ0FDZ0M0S2NDSUFJUW5BRWlDRUVCT2dBRUlBZ2dBeWdDdkFFUWFnSi9JQUFvQWdRZ0FoRGhBaUlFS0FJRVFlQ1VFa2NFUUFOQVFRQWdCQ2dDRENJRVJRMENHaUFFS0FJRVFlQ1VFa2NOQUFzTElBUUxJUVlnQUNnQzRLY0NJQVlRendZaEJ5QURRZmdDYWlBQUtBTGdwd0pCcEJGcUlnUVFvZ1VnQTBId0Ftb2dCQkNoQlNBSFFaZ0JhaUVLQTBBZ0F5Z0MrQUlpQkNBREtBTHdBa1lFUUNBQUtBSUVJQUlRNFFJcEF4aENDRkVOQkNBQUtBTGdwd0pCQUJDY0FTSUJJQWdRYWd3RUJTQURJQVFRdmdFb0FnQWlCVFlDNkFJQ1FBSkFJQVZGSUFVb0FnUkJxSndTUjNJTkFDQUZLQUpRSWdRUTB3SWlDVUVBSUFZZ0NVWWJEUUVEUUNBRUtBSU1JZ1JGRFFFZ0JDQUdSdzBBQ3d3QkN5QURRUUEyQWhnZ0EwSFlBV29nQ2lBRFFlZ0NhaUFEUVJocUVKc0pBa0FnQXlnQzJBRUVRQ0FES0FMY0FTRUVEQUVMSUFjb0FxQUNJUVFnQTBFWWFpSUpJQVVRcEFRZ0FDZ0M0S2NDUVFBUW5BRWhCU0FKRUE4YUlBTWdCVFlDMEFFZ0J5Z0NvQUlnQkVZRVFDQURLQUxjQVNJRUlBVTJBZ0FNQVFzZ0EwRVlhaUFLSUFOQjZBSnFJQU5CMEFGcUVPOEZJQU1vQWh3aEJBc2dCQ2dDQUNBQUtBTGdwd0pCdUFocUlBTkI2QUpxRUlNQ0VHb0xJQU5CK0FKcUVLQUZEQUVMQUFzQUN5QUVRZmp1RDBZRVFDQURRUmhxSUFBZ0FTQUNLQUlrRVBVY0lBTW9BaGdoQVF3Q0N5QUVRY0NFRWtZRVFDQURRUmhxSUFBZ0FTQUNLQUlrUVFBUTdnY2dBQ2dDNEtjQ1FiZ0lhaUFEUVNCcUlnUVFnd0loQVNBRFFkZ0JhaUFBSUFNb0FoZ2dBaWdDS0VFQUVLWUNJQUFvQXVDbkFrRUFFSndCSWdJZ0F5Z0MzQUVRYWlBQkJFQWdBaUFCRUdvTElBTW9BaHdpQVNBQ0VHb2dBQ2dDNEtjQ1FiZ0lhaUFFSUFFUWd3TWdBeWdDMkFFaEFRd0NDeUFFUWJqdkQwWUVRQUovSUFBb0FnUWdBaERoQWlJQ0VOUWNCRUFnQWhEVEFnd0JDd05BUVFBZ0FpZ0NEQ0lDUlEwQkdpQUNFTlFjUlEwQUN5QUNFTk1DQ3lFQ0lBTkJHR29nQUNnQzRLY0NJQUlRendaQkRHb2lBaENrQlNBRFFkZ0JhaUFDRUtNRklBTW9BdGdCSVFJRFFDQURLQUlZSWdRZ0FrWU5BeUFFRUxvQ0lnUW9BZ1FpQlNBQUtBTGdwd0pCdUFocUlBUVFnd0lpQkVjRVFDQUZJQVFRYWdzZ0EwRVlhaERwQkF3QUN3QUxJQVJCK084UFJnMEJJQVJCMklRU1JnUkFJQUFvQWdRaEJBSkFJQUpGRFFBZ0FpZ0NEQ0lHSUFRb0FnUWdCQ2dDQUNJRWEwRUNkVThOQUNBRUlBWkJBblJxS0FJQUlnUkZEUUFnQkVFQUlBUW9BZ1JCa0pJU1Joc2hCUXNnQlNFSUlBQW9BdUNuQWtFQUVKd0JJUWNnQVNFRklBSW9BaVFpQkFSQUlBQWdBU0FFRU9NRUlRVUxJQUFvQXVDbkFpQUlFTThHSWdaQmtMTUNFTklCSUFOQjJBRnFJQUFvQXVDbkFrR2tFV29pQkJDaUJTQURRYmdCYWlBRUVLRUZJQVpCREdvaENnTkFJQU1vQXRnQklnUWdBeWdDdUFGR0JFQUNRQ0FDS0FJb0lnUkZEUUFnQTBHNEFXb2dBQ0FISUFSQkFCQ21BaUFBS0FMZ3B3SWdBaENjQVNJRlFRRTZBQVFnQlNBREtBSzhBUkJxSUFOQitBSnFJQUFvQXVDbkFrR2tFV29pQkJDaUJTQURRZkFDYWlBRUVLRUZJQVpCbUFGcUlRa0RRQ0FES0FMNEFpSUVJQU1vQXZBQ1JnMEJJQU1nQkJDK0FTZ0NBQ0lFTmdMb0FpQURRUUEyQWhnZ0EwSFlBV29nQ1NBRFFlZ0NhaUFEUVJocUVKc0pBa0FnQXlnQzJBRUVRQ0FES0FMY0FTRUVEQUVMSUFZb0FxQUNJUXdnQTBFWWFpSU5JQVFRcEFRZ0FDZ0M0S2NDUVFBUW5BRWhDeUFORUE4YUlBTWdDellDMEFFZ0JpZ0NvQUlnREVZRVFDQURLQUxjQVNJRUlBczJBZ0FNQVFzZ0EwRVlhaUFKSUFOQjZBSnFJQU5CMEFGcUVPOEZJQU1vQWh3aEJBc2dCQ2dDQUNBQUtBTGdwd0pCdUFocUlBTkI2QUpxRUlNQ0VHb2dBMEg0QW1vUW9BVU1BQXNBQ3lBQUlBVWdBaWdDTUJEakJDRUVJQWNnQWlnQ0xDSUZCSDhnQUNBRUlBVVE0d1FGSUFRTEVHb2dCeUFCRUdvZ0EwRVlhaUFLRUtRRklBTkIyQUZxSUFvUW93VWdBeWdDMkFFaEJBTkFBa0FnQkNBREtBSVlJZ1ZHQkVBZ0EwRVlhaUFHUVpnQmFpSUVFS1FGSUFOQjJBRnFJQVFRb3dVZ0F5Z0MyQUVoQlF3QkN5QUZFTG9DSWdVb0FnUWlDaUFBS0FMZ3B3SkJ1QWhxSUFVUWd3SWlCVWNFUUNBS0lBVVFhZ3NnQTBFWWFoRHBCQXdCQ3dzRFFDQUZJQU1vQWhnaUJFY0VRQ0FFRUxvQ0lRUWdBQ2dDNEtjQ1FiZ0lhaUFFSUFRb0FnUVFnd01nQTBFWWFoRHBCQXdCQ3dzQ1FDQUNLQUlrSWdKRkRRQWdBaWdDQkVHNDhnOUhEUUFnQUNnQzRLY0NJUVFnQXlBQUtBSUVJQUlvQWlRUW93YzJBaGdnQkVHa0VXb2dBMEVZYWhEMkhBc2dBQ2dDNEtjQ0lBZ1FuQkFnQVNBSElBZ3BBeGhDQ0ZFYklRRU1CQVVnQXlBRUVMNEJLQUlBSWdRMkF2Z0NJQU5CR0dvaUNTQUVFS1FFSUFBb0F1Q25Ba0VBRUp3QklRUWdDUkFQR2lBRElBUTJBdkFDSUFRZ0FDZ0M0S2NDUWJnSWFpQURRZmdDYWlJTEVJTUNFR29nQ1NBS0lBc2dBMEh3QW1vUTd3VWdBQ2dDNEtjQ1FiZ0lhaUFMSUFRUWd3TWdBMEhZQVdvUW9BVU1BUXNBQ3dBTElBUkJpSVVTUmdSQUlBQW9BZ1FoQkFKQUlBSkZEUUFnQWlnQ0RDSUdJQVFvQWdRZ0JDZ0NBQ0lFYTBFQ2RVOE5BQ0FFSUFaQkFuUnFLQUlBSWdSRkRRQWdCRUVBSUFRb0FnUkJ1SjhTUmhzaEJRc2dCU0VJSUFBb0F1Q25Ba0VBRUp3QklRVWdBQ2dDNEtjQ0lBZ1F6d1lpQmtHWXN3SVEwZ0VnQTBIWUFXb2dBQ2dDNEtjQ1FhUVJhaUlFRUtJRklBTkJ1QUZxSUFRUW9RVWdCa0VNYWlFS0EwQWdBeWdDMkFFaUJDQURLQUs0QVVZRVFDQURRUmhxSUFBZ0JTQUNLQUlrUVFBUXBnSWdBQ2dDNEtjQ0lBSVFuQUVpQ1VFQk9nQUVJQWtnQXlnQ0hCQnFJQU5CdUFGcUlBQW9BdUNuQWtHa0VXb2lCQkNpQlNBRFFmZ0NhaUFFRUtFRklBWkJtQUZxSVFjRFFDQURLQUs0QVNJRUlBTW9BdmdDUmdSQUlBVWdBQ0FKSUFJb0FpZ1E0d1FRYWlBRklBRVFhaUFEUVJocUlBb1FwQVVnQTBIWUFXb2dDaENqQlNBREtBTFlBU0VDQTBBQ1FDQUNJQU1vQWhnaUJFWUVRQ0FEUVJocUlBY1FwQVVnQTBIWUFXb2dCeENqQlNBREtBTFlBU0VFREFFTElBUVF1Z0lpQkNnQ0JDSUdJQUFvQXVDbkFrRzRDR29nQkJDREFpSUVSd1JBSUFZZ0JCQnFDeUFEUVJocUVPa0VEQUVMQ3dOQUlBUWdBeWdDR0NJQ1J3UkFJQUlRdWdJaEFpQUFLQUxncHdKQnVBaHFJQUlnQWlnQ0JCQ0RBeUFEUVJocUVPa0VEQUVMQ3lBQUtBTGdwd0lnQ0JDY0VDQUJJQVVnQ0NrREdFSUlVUnNoQVF3R0JTQURJQVFRdmdFb0FnQWlCRFlDMEFFZ0EwRUFOZ0lZSUFOQjJBRnFJQWNnQTBIUUFXb2dBMEVZYWhDYkNRSkFJQU1vQXRnQkJFQWdBeWdDM0FFaEJBd0JDeUFHS0FLZ0FpRU1JQU5CR0dvaURTQUVFS1FFSUFBb0F1Q25Ba0VBRUp3QklRc2dEUkFQR2lBRElBczJBdkFDSUFZb0FxQUNJQXhHQkVBZ0F5Z0MzQUVpQkNBTE5nSUFEQUVMSUFOQkdHb2dCeUFEUWRBQmFpQURRZkFDYWhEdkJTQURLQUljSVFRTElBUW9BZ0FnQUNnQzRLY0NRYmdJYWlBRFFkQUJhaENEQWhCcUlBTkJ1QUZxRUtBRkRBRUxBQXNBQlNBRElBUVF2Z0VvQWdBaUJEWUMrQUlnQTBFWWFpSUhJQVFRcEFRZ0FDZ0M0S2NDUVFBUW5BRWhCQ0FIRUE4YUlBTWdCRFlDOEFJZ0JDQUFLQUxncHdKQnVBaHFJQU5CK0FKcUlna1Fnd0lRYWlBSElBb2dDU0FEUWZBQ2FoRHZCU0FBS0FMZ3B3SkJ1QWhxSUFrZ0JCQ0RBeUFEUWRnQmFoQ2dCUXdCQ3dBTEFBc2dCRUc0OEE5R0JFQWdBQ2dDQkNFRUFrQWdBa1VOQUNBQ0tBSU1JZ2NnQkNnQ0JDQUVLQUlBSWdSclFRSjFUdzBBSUFRZ0IwRUNkR29vQWdBaUJFVU5BQ0FFUVFBZ0JDZ0NCRUc0a3hKR0d5RUdDeUFHSVFvZ0EwSDRBbW9nQUNBQklBSW9BaVJCQUJDbUFrRUJJUWdnQUNnQzRLY0NJQUlRbkFFaUIwRUJPZ0FFSUFjZ0F5Z0MvQUlRYWlBRFFSaHFFTk1HSVFRZ0EwSFlBV29RMHdZaEJpQURJQUEyQXVnQ0lBTkI2QUpxSUFjZ0FpZ0NLQ0FFRVBRY0lRa2dBQ2dDQkNBQ0tBSW9FT0VDS1FNWUlRNGdBaWdDTENJTEJFQWdBMEhvQW1vZ0J5QUxJQVlROUJ3aEJTQUFLQUlFSUFJb0Fpd1E0UUl0QUJoQkNIRkJBM1loQ0FzZ0RrSUlneUVPSUFOQjhBSnFJQUFvQXVDbkFrR2tFV29pQWhDaUJTQURRZEFCYWlBQ0VLRUZBMEFnQXlnQzhBSWlBaUFES0FMUUFVWUVRQUpBSUFvcEF4aENDRkVOQUNBQUtBTGdwd0pCQUJDY0FTSUJJQWtRYWlBRlJRMEFJQUVnQlJCcUN5QUdFTTRESUFRUXpnTU1CQVVnQXlBQ0VMNEJLQUlBSWdjMkFzd0JBa0FnQkNBRFFjd0JhaERuQzBVRVFDQUdJQU5CekFGcUVPY0xSUTBCQ3lBRFFiZ0JhaUlMSUFjUXBBUWdBQ2dDNEtjQ1FRQVFuQUVoQWlBTEVBOGFBa0FnRGxBTkFDQUVJQU5CekFGcUVPY0xCRUFnQTBFQU5nTEFBU0FESUFjMkFyd0JJQU1nQkRZQ3VBRWdBeUFFS0FLSUFVRUJhellDeEFFZ0FpQURRYmdCYWhEbUN5Z0NBQkJxREFFTElBSWdBQ2dDNEtjQ1FiZ0lhaUFEUWN3QmFoQ0RBaEJxQ3dKQUlBaEZEUUFnQmlBRFFjd0JhaERuQ3dSQUlBTkJBRFlDd0FFZ0F5QUhOZ0s4QVNBRElBWTJBcmdCSUFNZ0JpZ0NpQUZCQVdzMkFzUUJJQUlnQTBHNEFXb1E1Z3NvQWdBUWFnd0JDeUFDSUFBb0F1Q25Ba0c0Q0dvZ0EwSE1BV29RZ3dJUWFnc2dBQ2dDNEtjQ1FiZ0lhaUFEUWN3QmFpQUNFSU1EQ3lBRFFmQUNhaENnQlF3QkN3QUxBQXNnQkVId2hCSkdCRUFnQTBFWWFpQUFJQUVnQWlnQ0pFRUFFTzRISUFBb0F1Q25Ba0c0Q0dvZ0EwRWdhaUlGRUlNQ0lRSWdBQ2dDNEtjQ1FRQVFuQUVpQkNBREtBSVlJZ0VRYWlBQ0JFQWdCQ0FDRUdvTElBTW9BaHdpQWlBRUVHb2dBQ2dDNEtjQ1FiZ0lhaUFGSUFJUWd3TU1BZ3NnQkVINDhBOUdCRUFnQUNnQ0JDQUNFT0VDSVFVZ0FDZ0M0S2NDUVFBUW5BRWhCQ0FBS0FMZ3B3SWdCUkRQQmlJSFFhSzBBaERTQVNBRFFkZ0JhaUFBS0FMZ3B3SkJwQkZxSWdZUW9nVWdBMEc0QVdvZ0JoQ2hCU0FIUVF4cUlRWURRQ0FES0FMWUFTSUlJQU1vQXJnQlJnUkFJQVFnQUNBRUlBSW9BaVFRNHdRUWFpQUVJQUVRYWlBRFFSaHFJQVlRcEFVZ0EwSFlBV29nQmhDakJTQURLQUxZQVNFQ0EwQUNRQ0FDSUFNb0FoZ2lCa1lFUUNBRFFSaHFJQWRCbUFGcUlnSVFwQVVnQTBIWUFXb2dBaENqQlNBREtBTFlBU0VHREFFTElBWVF1Z0lpQmlnQ0JDSUlJQUFvQXVDbkFrRzRDR29nQmhDREFpSUdSd1JBSUFnZ0JoQnFDeUFEUVJocUVPa0VEQUVMQ3dOQUlBWWdBeWdDR0NJQ1J3UkFJQUlRdWdJaEFpQUFLQUxncHdKQnVBaHFJQUlnQWlnQ0JCQ0RBeUFEUVJocUVPa0VEQUVMQ3lBQUtBTGdwd0lnQlJDY0VDQUJJQVFnQlNrREdFSUlVUnNoQVF3RUJTQURJQWdRdmdFb0FnQWlDRFlDOEFJZ0EwRVlhaUlKSUFnUXBBUWdBeUFBS0FMZ3B3SWdDQ2dDQ0JDY0FTSUlOZ0xRQVNBSUlBQW9BdUNuQWtHNENHb2dBMEh3QW1vaUNoQ0RBaEJxSUFOQitBSnFJQVlnQ2lBRFFkQUJhaER2QlNBQUtBTGdwd0pCdUFocUlBb2dDQkNEQXlBSkVBOGFJQU5CMkFGcUVLQUZEQUVMQUFzQUN5QUVRYmp4RDBZRVFBSkFJQUlvQWlRaUFnUkFJQU5CR0dvZ0FDQUJJQUpCQUJDbUFpQUFLQUxncHdJb0FyUUlJQU1vQWh3UWFpQURLQUlZSVFFTUFRc2dBUTBBSUFOQkdHcEJwWW9GUWFBSVFRZ2dBMEhZQVdvUUhTSUJFQmNpQWtFWWFrSHJxd2dRRGhvZ0FoQVlJQUVRSGtFQUlRRUxJQUFvQXVDbkFpSUNLQUw0QnlJRUlBSW9BdndIUWZ3QWJHb2hBZ05BSUFJZ0JFWU5BeUFFS0FKNElnVUVRQ0FBS0FMZ3B3SWhCaUFESUFRb0FnQTJBaGdnQlNBR1FiZ0lhaUFEUVJocUVJTUNFR29MSUFSQi9BQnFJUVFNQUFzQUN5QUVRZmp4RDBZRVFDQUFLQUlFSVFRQ1FDQUNSUTBBSUFJb0Fnd2lCaUFFS0FJRUlBUW9BZ0FpQkd0QkFuVlBEUUFnQkNBR1FRSjBhaWdDQUNJRVJRMEFJQVJCQUNBRUtBSUVRY2lhRWtZYklRVUxJQVVoQmlBRFFiZ0JhaUFBSUFFZ0FpZ0NKRUVBRUtZQ0lBQW9BdUNuQWlBQ0VKd0JJZ2xCQVRvQUJDQUpJQU1vQXJ3QkVHb2dCaWtER0VJSVVnUkFJQUFvQXVDbkFrRUFFSndCSVFjTElBQW9BdUNuQWlBR0VNOEdJZ3BCMUtRREVOSUJJQUlvQWpnaUJTQUNLQUk4UVFKMGFpRUxJQXBCbUFGcUlRSURRQUpBSUFVZ0MwWUVRQ0FEUVJocUlBSVFwQVVnQTBIWUFXb2dBaENqQlNBREtBTFlBU0VFREFFTElBQW9BZ1FnQlNnQ0FDSUVFT0VDSVFnZ0FDZ0M0S2NDUWJnSWFoQ2VFQ0FBSUFrZ0JDZ0NRQkRqQkNFRUlBY0VRQ0FISUFRUWFnc0NRQ0FJTFFBWVFRaHhSUTBBSUFOQitBSnFJQUFvQXVDbkFrR2tFV29pQkJDaUJTQURRZkFDYWlBRUVLRUZBMEFnQXlnQytBSWlCQ0FES0FMd0FrWU5BU0FESUFRUXZnRW9BZ0FpQ0RZQzZBSUNRQUpBSUFoRklBZ29BZ1JCcUp3U1IzSU5BQ0FJS0FKUUlnUVEwd0lpREVFQUlBWWdERVliRFFFRFFDQUVLQUlNSWdSRkRRRWdCQ0FHUncwQUN3d0JDeUFEUVFBMkFoZ2dBMEhZQVdvZ0FpQURRZWdDYWlBRFFSaHFFSnNKQWtBZ0F5Z0MyQUVFUUNBREtBTGNBU0VFREFFTElBb29BcUFDSVFRZ0EwRVlhaUlNSUFnUXBBUWdBQ2dDNEtjQ1FRQVFuQUVoQ0NBTUVBOGFJQU1nQ0RZQzBBRWdDaWdDb0FJZ0JFWUVRQ0FES0FMY0FTSUVJQWcyQWdBTUFRc2dBMEVZYWlBQ0lBTkI2QUpxSUFOQjBBRnFFTzhGSUFNb0Fod2hCQXNnQkNnQ0FDQUFLQUxncHdKQnVBaHFJQU5CNkFKcUVJTUNFR29MSUFOQitBSnFFS0FGREFBTEFBc2dBQ2dDNEtjQ1FiZ0lhaENkRUNBRlFRUnFJUVVNQVFzTEEwQWdCQ0FES0FJWUlnSkhCRUFnQWhDNkFpRUNJQUFvQXVDbkFrRzRDR29nQWlBQ0tBSUVFSU1ESUFOQkdHb1E2UVFNQVFzTElBY2dBU0FIR3lFQkRBSUxJQVJCdVBJUFJnUkFJQU1nQUNnQ0JDQUNLQUlrRUtNSElnVTJBdGdCQWtBZ0FpZ0NKQ2dDTENJRVJRUkFJQUVoQkF3QkN5QURRUmhxSUFBZ0FTQUVRUUFRcGdJZ0F5Z0NIQ0VFSUFNb0FoZ2hBU0FGS0FJTUtBSUVRZGlzRWtjTkFDQUFLQUlFSUFJb0FpUW9BaXdRc2dvb0FnZ2lCU2dDQkVHQWdSSkhJQVZGY2cwQUlBVVE4eHdROGh4RkRRQWdBQ2dDNEtjQ1FmZ1NhaUVHSXdCQkVHc2lCU1FBSUFWQkNHb2dCaUFEUWRnQmFoRFRIQ0FGS0FJSUdpQUZRUkJxSkFBTElBQW9BdUNuQWtHNENHb2dBMEhZQVdvZ0JCQ0RBeUFDS0FJa0lnSW9BZ1JCMlBnUlJ3MENJQUFvQXVDbkFpRUZJQUFvQWdRaEFFRUFJUVFDUUNBQ1JRMEFJQUlvQWd3aUFpQUFLQUlFSUFBb0FnQWlBR3RCQW5WUERRQWdBQ0FDUVFKMGFpZ0NBQ0lBUlEwQUlBQkJBQ0FBS0FJRVFhaWNFa1liSVFRTElBTWdCRFlDR0NBRlFhUVJhaUFEUVJocUVKRWREQUlMSUFSQndQWVBSZzBCQ3lNQVFiQUJheUlBSkFBZ0FFRVFha0dsaWdWQmpBbEJDQ0FES0FJSUtBSUlFQmNpQVVFWWFpSUNRYWVNREJBT0dpQUNJQUFnQXlnQ0RDZ0NBQ2dDQkNnQ0JCQVVJZ0lRRWhvZ0FoQVBHaUFCRUJnZ0FFR3dBV29rQUVFQUlRRUxJQU5CZ0FOcUpBQWdBUXUxQVFFRWZ5QUJJQUFvQXNnQlN3UkFJQUFvQXNBQklRTWdBQ0FCRU8wZEEwQWdBQ2dDeEFFZ0FrMEVRQ0FBSUFNUU5nVWdBa0VFZENJRUlBQW9Bc0FCYWlJRklBTWdCR29pQkNrQ0FEY0NBQ0FGSUFRcEFnZzNBZ2dnQWtFQmFpRUNEQUVMQ3dzZ0FDZ0N4QUVpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHQkVBZ0FDQUJOZ0xFQVFVZ0FDZ0N3QUVnQWtFRWRHb2lBMElBTndJSUlBTkJBRG9BQkNBRFFRQTZBQUFnQWtFQmFpRUNEQUVMQ3dzWkFDQUFJQUVnQWlBRFFaanpEMEdzOHc5QitQSVBFTUVNQ3pnQUlBQVFIQ0FBUWFnQmFpSUFJQUFReXdRZ0FTZ0NBQ0FDS0FJQUlBTW9BZ0FRL2hzaUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkN3d0FJQUFnQVJDbENVRUFSd3YyQlFFRWZ5TUFRZkFCYXlJRUpBQWdCQ0FCTmdMc0FTQUNFSVFCSWdVb0FnUWhBUUpBQWtBZ0JVVWdBVUdBbVJKSGNrVUVRRUVCSVFZZ0JVSGNBR29nQkVIc0FXb1FxUUlOQWlBRUtBTHNBU0VDSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCSUFWQjNBQnFJQUZCREdvUWxnRWdBVUVRYWlRQUlBVW9Ba1FpQVNBRktBSklRUUowYWlFREEwQWdBU0FEUmcwREFrQWdBU2dDQUNJQ0tBSmNJZ2RGRFFBZ0FDQUVLQUxzQVNBQ0tBSW9JQWNvQWloQkVHb1E2QVFOQUNBRVFkZ0FhaEJKSWdaQkNHb2lBVUdRL2drUURob2dCRUhJQUdvaUJ5QUFRYWdkYWlBRkVLY0JJQUVnQnhBU0dpQUJRZnlYQ0JBT0dpQUVRVGhxSWdVZ0JFRVlhaUlESUFKQkNHb1FWaEJUSUFFZ0JSQVNHaUFGRUE4YUlBY1FEeG9nQXlBR1FReHFFRUlnQUNBRElBSW9BbHhCRUdvUWhnRWdBeEFQR2lBR0VGRU1Bd3NnQVVFRWFpRUJEQUFMQUFzZ0JDZ0M3QUVoQWdKQUlBVkZJQUZCa0tJU1IzSkZCRUJCQnlFQklBSkJCMGNFUUNBRktBSWNJZ0VvQWdRaUJrR29veEpHQkVBZ0FDQUVRZGdBYWtHTjJ3UVFGQ0lBSUFNUUp5QUFFQThhREFRTElBWkJrS01TUmdSL0lBRW9BZ3doQVNBRVFRRTZBQlFnQkNBQk5nSVFJQVJCRUdvUXZnRW9BZ0JCLy84RFN3MERJQVFvQXV3QkJTQUNDeUVCQ3lBQUlBRWdCU2dDR0NBREVPZ0VJUVlNQXd0QkFTRUdJQUpCQm10QkFrc05BaUFBUWF3ZGFpQUZFTWtjRFFJZ0JFSFlBR29RU1NJQ1FRaHFJZ1pCZ0pZSkVBNGFJQVJCR0dvaUFTQUFRYWdkYWlBRkVLY0JJQVlnQVJBU0dpQUdRYnlXQ1JBT0dpQUNJQVFvQXV3QkVMVUxRUWhxUWYrOUJCQU9HaUFCRUE4YUlBRWdBa0VNYWhCQ0lBQWdBU0FERUNjZ0FSQVBHaUFDRUZFTUFRc2dCRUU0YWlJQklBUkJFR29RdmdFb0FnQVFYeUFFUWNnQWFpSUNRZHY1Q0NBQkVEVWdCRUVZYWlJRklBSkJ2SklLRUMwZ0JFS0FnQVFROXdZZ0JFSFlBR29pQmlBRklBUVFUaUFBSUFZZ0F4QW5JQVlRRHhvZ0JCQVBHaUFGRUE4YUlBSVFEeG9nQVJBUEdndEJBQ0VHQ3lBRVFmQUJhaVFBSUFZTEl3RUJmeUFBS0FJQUlnRWdBQ2dDQkVjRVFDQUFJQUZCRkdvMkFnQWdBQkNzQ1FzTEtBQWdBRUVBTmdMRUFTQUFRUXdRNUFRZ0FFRUFOZ0xNQVNBQUlBQW9BdEFCUVFGcU5nTFFBUXZCQVFFR2Z5TUFRUkJySVFRZ0FDZ0N4QUVpQmtFQmF5RUhBa0FEUUNBRklBWkdEUUVnQUNnQ3dBRWdBVUVFZEdvaUF5MEFCQVJBSUFJZ0FpZ0NEQ0lJSUFNb0FneExCSDhnQkNBREtRSUlOd01JSUFRZ0F5a0NBRGNEQUNBRElBSXBBZ2czQWdnZ0F5QUNLUUlBTndJQUlBSWdCQ2tEQ0RjQ0NDQUNJQVFwQXdBM0FnQWdBaWdDREFVZ0NBdEJBV28yQWd3Z0FVRUJha0VBSUFFZ0IwY2JJUUVnQlVFQmFpRUZEQUVMQ3lBRElBSXBBZ0EzQWdBZ0F5QUNLUUlJTndJSUN3dTVCQUVIZnlNQVFkQUJheUlFSkFBZ0FVR0VHR29vQWdBZ0FTZ0NqQmdpQlVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FCSUFWQkFYUkJBbW9RZ0JFTElBUkJ5QUZxSUFFZ0FoQ3lFQ0FFSUFNMkFzUUJJQVFnQWpZQ3dBRWdBU2dDaEJnaUIwRUJheUVJSUFJb0FnQWhDU0FCS0FLQUdDRUdJQVFvQXN3QklRb2dCQ2dDeUFFaEEwRUFJUUlDUUFOQUlBSWdCMGNFUUNBR0lBTkJCWFJxSWdVdEFCUkZCRUFnQkVFSWFpSUhJQVJCd0FGcUVOWWVJQVVnQnhEVkhpQUhRUVJ5RUpVQ0lBUW9Bc3dCSVFjZ0JpQURRUVYwYWlJRElBSTJBaHdnQXlBSE5nSVlJQUVnQVNnQ2pCaEJBV28yQW93WUlBRWdBU2dDa0JoQkFXbzJBcEFZSUFBZ0JVRUVhallDQkNBQVFRQTJBZ0FNQXdzQ1FDQUZLQUlZSUFwSERRQWdDU0FGS0FJQVJ3MEFJQUJCQWpZQ0FDQUFJQVZCQkdvMkFnUU1Bd3NnQWlBRktBSWNTd1JBSUFSQnFBRnFJZ2dnQkVIQUFXb1ExaDRnQkVFSWFpQUlFTlFlSVFZZ0JDZ0N6QUVoQnlBR0lBSTJBaHdnQmlBSE5nSVlJQWhCQkhJUWxRSWdCaUFGRU93UUlBWWdCaWdDSEVFQmFqWUNIQ0FCSUFOQkFXb2dBU2dDaEJod0lBWVEweDRnQVNBQktBS01HRUVCYWpZQ2pCZ2dBU0FCS0FLUUdFRUJhallDa0JnZ0FDQUZRUVJxTmdJRUlBQkJBRFlDQUNBR0VQNEhEQU1GSUFOQkFXcEJBQ0FESUFoSEd5RURJQUpCQVdvaEFnd0NDd0FMQ3lBRVFRaHFRWWExQTBIckEwRU9JQVJCcUFGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFSQjBBRnFKQUFMTmdFQmZ5QUJJQUVvQWhRaUFrRUJhallDRkNBQUlBRW9BZ2dnQWkwQUFFRUNkR29vQXBRRklnQWdBU0FBS0FJQUtBSU1FUVVBQ3pZQkFYOGdBU0FCS0FJVUlnSkJBV28yQWhRZ0FDQUJLQUlJSUFJdEFBQkJBblJxS0FMd0FpSUFJQUVnQUNnQ0FDZ0NEQkVGQUFzU0FDQUFJQUVRNHdZaUFFRUJPZ0JZSUFBTG53RUJCSDhnQVNBQUtBSmNSZ1IvQWtBZ0FpZ0NBQ0FBS0FJQVJ3MEFJQUlvQWdRZ0FDZ0NCRWNOQUNBQ0tBSk1JZ0VnQUNnQ1RFY05BQ0FBS0FKSUlRTWdBaWdDU0NFRVFRQWhBZ05BQWtBZ0FTQUNJZ0JHQkVBZ0FTRUFEQUVMSUFRZ0FFRURkQ0lDYWlJRktBSUFJQUlnQTJvaUJpZ0NBRWNOQUNBQVFRRnFJUUlnQlNnQ0JDQUdLQUlFUmcwQkN3c2dBQ0FCVHlFREN5QURCVUVBQ3dzUUFDQUFFSTRmSUFBZ0FSRG1CaUFBQ3pjQkFYOGpBRUVRYXlJREpBQWdBaWdDQUJEOEFpRUNJQUVvQXZRQklRRWdBQ0FDTmdJRUlBQWdBaUFCY0RZQ0FDQURRUkJxSkFBTHZ3RUJCSDhnQVNBQUtBTDRBVXNFUUNBQUtBTHdBU0VESUFBZ0FSQ3VEQU5BSUFBb0F2UUJJQUpOQkVBZ0FDQURFRFlGSUFKQkZHd2lCQ0FBS0FMd0FXb2lCU0FESUFScUlnUXBBZ0EzQWdBZ0JTQUVLQUlRTmdJUUlBVWdCQ2tDQ0RjQ0NDQUNRUUZxSVFJTUFRc0xDeUFBS0FMMEFTSUNJQUVnQVNBQ1NSc2hCUU5BSUFJZ0JVWUVRQ0FBSUFFMkF2UUJCU0FBS0FMd0FTQUNRUlJzYWlJRFFnQTNBZ3dnQTBFQU9nQUlJQU5CQURvQUFDQUNRUUZxSVFJTUFRc0xDMmtCQVg4Z0FDZ0NBQ0VFSXdCQkVHc2lBQ1FBQWtBZ0JDMEFEQ0FEUmdSQUlBRWdBaWdDQURZQ0FBd0JDeUFBSUFJMkFnd2dBQ0FFTmdJSUlBQW9BZ3doQWlBQUtBSUlJZ0VRbFFJZ0FpZ0NBQ0VDSUFFZ0F6b0FEQ0FCSUFJMkFnQUxJQUJCRUdva0FBdWhBUUVDZnlNQVFSQnJJZ0FrQUFKQUlBRWdBaWdDQkNJR1FmQ0ZFRWNFZnlBR1FmQ3FFa2NOQVNBQ0tBSWtJQU5IRFFFZ0FpZ0NJQ0FFUncwQklBSW9BaGdGSUFJTEVLc0NJZ0pGQkVBTUFRc2dBQ0FDTmdJTUlBRW9BZ0FoQWlBQUlBUTJBZ1FnQUNBQ0lBQkJER29nQUVFRWFpSUNFSjhDTmdJSUlBRW9BZ0FoQVNBQUlBTTJBZ1FnQVNBQVFRaHFJQUlRd0FraEJRc2dBRUVRYWlRQUlBVUxWd0VEZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUpCRldvaUF5QUNRU0JxSWdSR0lBRkJBRTV5Qkg4Z0F3VWdBMEV0T2dBQVFRQWdBV3NoQVNBRFFRRnFDeUFFSUFFUW1STWdBQ0FESUFJb0FnZ1E1Z2tnQkNRQUN4TUFJQUFnQVVFQUlBQW9BZ0FvQWpRUkJBQUx6UU1CQTM4akFFRWdheUlJSkFBZ0NDQUNOZ0lRSUFnZ0FUWUNHQ0FJUVFocUlnRWdBeEIrSUFFUThBSWhDU0FCRUdSQkFDRUJJQVJCQURZQ0FBSkFBMEFnQmlBSFJpQUJjZzBCQWtBZ0NFRVlhaUFJUVJCcUVKQUNEUUFDUUNBSklBWW9BZ0FROXdSQkpVWUVRQ0FHUVFScUlnRWdCMFlOQWdKL0FrQWdDU0FCS0FJQUVQY0VJZ0pCeFFCR0RRQkJBQ0VLSUFKQi93RnhRVEJHRFFBZ0JpRUJJQUlNQVFzZ0JrRUlhaUFIUmcwRElBSWhDaUFKSUFZb0FnZ1E5d1FMSVFJZ0NDQUFJQWdvQWhnZ0NDZ0NFQ0FESUFRZ0JTQUNJQW9nQUNnQ0FDZ0NKQkVNQURZQ0dDQUJRUWhxSVFZTUFRc2dDVUVCSUFZb0FnQVF5UUlFUUFOQUFrQWdCeUFHUVFScUlnWkdCRUFnQnlFR0RBRUxJQWxCQVNBR0tBSUFFTWtDRFFFTEN3TkFJQWhCR0dvZ0NFRVFhaERhQWtVTkFpQUpRUUVnQ0NnQ0dCRHRBUkRKQWtVTkFpQUlRUmhxRUtFQ0dnd0FDd0FMSUFrZ0NDZ0NHQkR0QVJDRUJ5QUpJQVlvQWdBUWhBZEdCRUFnQmtFRWFpRUdJQWhCR0dvUW9RSWFEQUVMSUFSQkJEWUNBQXNnQkNnQ0FDRUJEQUVMQ3lBRVFRUTJBZ0FMSUFoQkdHb2dDRUVRYWhDUUFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0NDZ0NHQ0VBSUFoQklHb2tBQ0FBQzlrREFRTi9Jd0JCSUdzaUNDUUFJQWdnQWpZQ0VDQUlJQUUyQWhnZ0NFRUlhaUlCSUFNUWZpQUJFTU1DSVFrZ0FSQmtRUUFoQWlBRVFRQTJBZ0FDUUFOQUlBWWdCMFlnQW5JTkFRSkFJQWhCR0dvZ0NFRVFhaENIQWcwQUFrQWdDU0FHTEFBQUVMd0ZRU1ZHQkVBZ0JrRUJhaUlDSUFkR0RRSUNmd0pBSUFrZ0Fpd0FBQkM4QlNJQlFjVUFSZzBBUVFBaENpQUJRZjhCY1VFd1JnMEFJQVloQWlBQkRBRUxJQVpCQW1vZ0IwWU5BeUFCSVFvZ0NTQUdMQUFDRUx3RkN5RUJJQWdnQUNBSUtBSVlJQWdvQWhBZ0F5QUVJQVVnQVNBS0lBQW9BZ0FvQWlRUkRBQTJBaGdnQWtFQ2FpRUdEQUVMSUFrb0FnZ2lBVUVCSUFZc0FBQVF2UUlFUUFOQUFrQWdCeUFHUVFGcUlnWkdCRUFnQnlFR0RBRUxJQUZCQVNBR0xBQUFFTDBDRFFFTEN3TkFJQWhCR0dvZ0NFRVFhaERLQWtVTkFpQUlLQUlZRU80QklRRWdDU2dDQ0VFQklBRVF2UUpGRFFJZ0NFRVlhaENiQWhvTUFBc0FDeUFKSUFnb0FoZ1E3Z0VRaUFjZ0NTQUdMQUFBRUlnSFJnUkFJQVpCQVdvaEJpQUlRUmhxRUpzQ0dnd0JDeUFFUVFRMkFnQUxJQVFvQWdBaEFnd0JDd3NnQkVFRU5nSUFDeUFJUVJocUlBaEJFR29RaHdJRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFnb0FoZ2hBQ0FJUVNCcUpBQWdBQXNXQUNBQUlBRWdBaUFESUFBb0FnQW9BakFSQndBYUN3c0FJQUJCZ0FGeFFRZDJDOUFDQVFSL0l3QkJJR3NpQXlRQUFrQUNRQU5BSUFOQkNHb2dBVUVDZEdvQ2YwRUJJQUYwUWYvLy8vOEhjU0lFUVFGeVJRUkFJQUZCQW5Rb0FnQU1BUXNnQVNBQVFkejREQ0FFR3hDN0ZBc2lCRFlDQUNBRVFYOUdEUUVnQVVFQmFpSUJRUVpIRFFBTFFRQVF1aFJGQkVCQjZONFBJUUlnQTBFSWFrSG8zZzlCR0JDa0NFVU5Ba0dBM3c4aEFpQURRUWhxUVlEZkQwRVlFS1FJUlEwQ1FRQWhBVUhvdWlBdEFBQkZCRUFEUUNBQlFRSjBRYmk2SUdvZ0FVSGMrQXdRdXhRMkFnQWdBVUVCYWlJQlFRWkhEUUFMUWVpNklFRUJPZ0FBUWRDNklFRzR1aUFvQWdBMkFnQUxRYmk2SUNFQ0lBTkJDR3BCdUxvZ1FSZ1FwQWhGRFFKQjBMb2dJUUlnQTBFSWFrSFF1aUJCR0JDa0NFVU5Ba0VZRU9BQklnSkZEUUVMSUFJZ0F5a0RDRGNDQUNBQ0lBTXBBeGczQWhBZ0FpQURLUU1RTndJSURBRUxRUUFoQWdzZ0EwRWdhaVFBSUFJTEN3QWdBRUhJdXlBUTNnTUxOd0FnQUVIWWp3NDJBZ0FnQUVFQUVNd1VJQUJCSEdvUVpDQUFLQUlnRUI4Z0FDZ0NKQkFmSUFBb0FqQVFIeUFBS0FJOEVCOGdBQXVvQVFBQ1FDQUJRWUFJVGdSQUlBQkVBQUFBQUFBQTRIK2lJUUFnQVVIL0Qwa0VRQ0FCUWY4SGF5RUJEQUlMSUFCRUFBQUFBQUFBNEgraUlRQkIvUmNnQVNBQlFmMFhUaHRCL2c5cklRRU1BUXNnQVVHQmVFb05BQ0FBUkFBQUFBQUFBR0FEb2lFQUlBRkJ1SEJMQkVBZ0FVSEpCMm9oQVF3QkN5QUFSQUFBQUFBQUFHQURvaUVBUWZCb0lBRWdBVUh3YUV3YlFaSVBhaUVCQ3lBQUlBRkIvd2RxclVJMGhyK2lDMElCQVg4Z0FTQUNiQ0VFSUFRQ2Z5QURLQUpNUVFCSUJFQWdBQ0FFSUFNUXRBME1BUXNnQUNBRUlBTVF0QTBMSWdCR0JFQWdBa0VBSUFFYkR3c2dBQ0FCYmdzTEFDQUFJQUZCSUJEMUJnc2FBQ0FBSUFFZ0FrR3A0d1ZCK0NKQi85a0JRZGZjQWhDRUV3dkNBUUVDZnlNQVFjQUJheUlFSkFBZ0JDQUJLQUlBSWdOQmRpQURJQUVvQWdRUUlCQVFJQVJCMDlrS0VBNGFJQVFnQVVFRWFoQ3pCeUlEUWE3bkNSQU9HaUFESUFGQkRHb1FqUVFpQTBHR2tRb1FEaG9nQXlBQlFRaHFFSTBFSWdOQnRzUUpFQTRhSUFOQjR2OEpRZkxaQ2tHbHlRb2dBUzBBRVJzZ0FTMEFFaHNRRGhvZ0EwRzg4d0ZCenZNQklBRXRBQkFiRUE0YUlBTkJzdjRKRUE0YUlBTWdBaEFoR2lBRFFmZndEQkFPR2lBQUlBTVFrQmNnQkJBUklBUkJ3QUZxSkFBTENRQWdBQ0FCTmdJVUM0a0RBUU4vSXdCQklHc2lBaVFBSUFCQjhQd1BOZ0lBSUFCQkJHb2dBQkNBQXhvakFFRVFheUlCSkFCQmtPZ1BRWkRvRHlnQ0FDSURRUUZxTmdJQUlBRkJDR29nQXhDQUF4b2dBU2dDQ0NFRElBRkJFR29rQUNBRElRRWdBRUYvTmdJTUlBQWdBVFlDQ0NBQVFSQnFFTU1MR2lBQVFRQTJBdHdCSUFCQ2dJQ0FnSUFFTndMVUFTQUFRb0NBQkRjQ3pBRWdBRUlBTndMRUFTQUFRaUEzQXJ3QklBQkNBRGNDdEFFZ0FFS0FnSUNBZ0lEQUFEY0NyQUVnQUVJQU53S2tBU0FBUW9DQWdJQ0FCRGNDbkFFZ0FFS0FnQVEzQXBRQklBQkNBRGNDakFFZ0FDQUFLQUlNUVFGcUlnRTJBZ3dnQWlBQk5nSVlJQUpCQURZQ0VDQUNRZ0EzQXdnZ0FrSUFOd01BSUFCQmpBRnFJZ0VnQVJDakRpQUFLQUlJSUFJb0FoZ2dBaERhR1NJREVDZ2dBU0FCS0FJWVFRRnFOZ0lZSUFBZ0F6WUM0QUVnQUVIa0FXb1Ewd3NhSUFCQmlBSnFJQUFvQWdnUTd3OGFJQUJCeUFKcUVCMGFJQUJCQURZQzZBSWdBRUlBTndMZ0FpQUFRZ0EzQXRnQ0lBQkJBVHNCN0FJZ0FrRWdhaVFBSUFBTE9BRUJmeU1BUVNCcklnSWtBQ0FDSUFFMkFoQWdBa0VZYWlBQUlBRWdBa0VRYWhDaUp5QUNLQUlZSVFBZ0FrRWdhaVFBSUFCQkRHb0xNQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDSUFRU3hxRU00SElBQkJHR29RRHhvZ0FVRVFhaVFBQzMwQkFuOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSWdBVFlDQ0NBQ0tBSU1JUUVnQWlnQ0NDRURJd0JCRUdzaUFDUUFJQUFnQVRZQ0JDQUFJQU0yQWdBQ2Z5QUFRUWhxSUFBb0FnQWdBQ2dDQkJERUdFRUJjUVJBSUFBb0FnQU1BUXNnQUNnQ0JBc2hBU0FBUVJCcUpBQWdBU0VBSUFKQkVHb2tBQ0FBQzMwQkFuOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSWdBVFlDQ0NBQ0tBSU1JUUVnQWlnQ0NDRURJd0JCRUdzaUFDUUFJQUFnQVRZQ0JDQUFJQU0yQWdBQ2Z5QUFRUWhxSUFBb0FnUWdBQ2dDQUJERUdFRUJjUVJBSUFBb0FnQU1BUXNnQUNnQ0JBc2hBU0FBUVJCcUpBQWdBU0VBSUFKQkVHb2tBQ0FBQ3lvQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUlBRW9BZ3dRK2dJUWd3RWhBQ0FCUVJCcUpBQWdBQXMyQVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0NDRUFJQUlvQWd3UStnSWdBRG9BQ3lBQ1FSQnFKQUFMUVFFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFBUTNSZ2hBeUFCS0FJQUlRRWdBa0VBT2dBRUlBSWdBVFlDQUNBQUlBSVF6eGdnQXhEY0dDQUNRUkJxSkFBTEpRRUJmeUFBS0FJQUlRSWdBQ0FCTmdJQUlBSUVRQ0FDQkVBZ0FoQXlHZ3NnQWhBZkN3c1NBQ0FBS0FJQUlBRkJBQkE0UVFFUXZnWUxEd0FnQUNBQUVOSUhJQUZxRU5FSEN5UUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUFnQWtFTWFoQWtJQUpCRUdva0FBc1ZBQ0FBS0FJRVFRaHFJQUVvQWdBUXZBSWFJQUFMQ3dBZ0FDQUJRUVFRMmdrTEZBQWdBRUVBTmdLRUFpQUFJQUFvQW9BQ0VEWUxFQUFnQUNnQ0NDQUJJQUlnQXhEK0NBczlBUUovSXdCQkVHc2lBeVFBUVFFaEJDQUFJQUVnQTBFSWFpQUNFRnNRaHc5RkJFQWdBQ0FCSUFNZ0FoQmJFSThMSVFRTElBTkJFR29rQUNBRUMxWUJBbjhnQUNnQ0FDSUJLQUlvSWdJRWZ5QUNCU0FCRVBZSUlnSkJnTklTTmdJQUlBSkJ5TXNTTmdJRUlBRWdBaEFvSUFFZ0FTZ0NHRUVCYWpZQ0dDQUNJUUVnQUNnQ0FDQUJOZ0lvSUFBb0FnQW9BaWdMQzdFQkFRUi9Ba0FnQUNnQ0JDSUNJQUFvQWdoSkJFQWdBU2dDQUNFRElBRkJBRFlDQUNBQ0lBTTJBZ0FnQUNBQ1FRUnFOZ0lFREFFTEl3QkJJR3NpQXlRQUlBTkJDR29nQUNBQUtBSUVJQUFvQWdCclFRSjFRUUZxRUlzRUlBQW9BZ1FnQUNnQ0FHdEJBblVnQUVFSWFoQ25BaUlDS0FJSUlRUWdBU2dDQUNFRklBRkJBRFlDQUNBRUlBVTJBZ0FnQWlBRVFRUnFOZ0lJSUFBZ0FoRDdDQ0FDRUo0TElBTkJJR29rQUNBQUtBSUVHZ3NMSEFBZ0FDQUJLQUlBS0FJQU5nSUFJQUJCQkdvZ0FTZ0NCQkJXR2d1bEFRRURmeUFBS0FLRUFpSUNJQUFvQW9nQ1R3UkFJQUFvQW9nQ0lnSkJBWFJCQWlBQ0d5SUNJQUFvQW9nQ1N3UkFJQUFvQW9BQ0lRUWdBQ0FDRU8wTFFRQWhBZ05BSUFBb0FvUUNJQUpOQkVBZ0FDQUVFRFlGSUFKQkJYUWlBeUFBS0FLQUFtb2dBeUFFYWlJREVJd2NJQU1ROHdNZ0FrRUJhaUVDREFFTEN3c2dBQ2dDaEFJaEFnc2dBQ0FDUVFGcU5nS0VBaUFBS0FLQUFpQUNRUVYwYWlBQkVJd2NDekVBSUFJb0FnQWhBZ05BQWtBZ0FDQUJSd1IvSUFBb0FnQWdBa2NOQVNBQUJTQUJDdzhMSUFCQkJHb2hBQXdBQ3dBTEtRQWdBRUYvTmdJQUlBQkJCR29RbUFRYUlBQkJBRG9BR0NBQVFRQTJBaEFnQUVJQU53SUlJQUFMdGdJQkFYOGpBRUhBQVdzaUNDUUFJQWdnQkRZQ3VBRWdDQ0FCTmdLOEFTQUFJQWdvQXJ3QklBZ29BcmdCRVAwUElnQkJnSjhTTmdJRUlBQkJzSjhTTmdJQUlBQWdCam9BS0NBQVFnZzNBeUFnQUNBRk5nSWNJQUFnQXpZQ0dDQUFJQUkyQWhRZ0FDQUhOZ0lRSUFCQm9KOFNOZ0lBSUFKRkJFQWdDRUVJYWtHR3FBVkJLRUVKSUFoQnFBRnFFQjBpQVJBWElnSkJHR3BCdTlNSUVBNGFJQUlRR0NBQkVCNExJQU5CQVVZZ0JVRUFSMGNFUUNBSVFRaHFRWWFvQlVFcFFRa2dDRUdvQVdvUUhTSUJFQmNpQWtFWWFrSGgyZ2dRRGhvZ0FoQVlJQUVRSGdzQ1FDQUZSUTBBSUFBb0FoUWdCU0FGS0FJQUtBSUlFUUFBUmcwQUlBaEJDR3BCaHFnRlFTdEJDU0FJUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRZFRwQ0JBT0dpQUNFQmdnQVJBZUN5QUlRY0FCYWlRQUlBQUxCd0FnQUJEb0J3c0xBQ0FBUVFBMkFoZ2dBQXRNQVFGL0lBQW9BaVFpQWlBQUtBSW9Ud1JBSUFBZ0FDZ0NLQ0lDUVFGMFFRSWdBaHNRdXdrZ0FDZ0NKQ0VDQ3lBQUlBSkJBV28yQWlRZ0FDZ0NJQ0FDUVFKMGFpQUJLQUlBTmdJQUN5TUJBWDhnQUNnQ0FDSUJJQUFvQWdSSEJFQWdBQ0FCUVJCcU5nSUFJQUFRa3hBTEN5VUFJQUFnQVNnQ3dBRWdBU2dDeEFGQkJIUnFJZ0UyQWdRZ0FDQUJOZ0lBSUFBUWt4QUxLd0VCZnlBQktBTEVBU0VDSUFBZ0FTZ0N3QUVpQVRZQ0FDQUFJQUVnQWtFRWRHbzJBZ1FnQUJDVEVBc2pBQ0FBSUFFb0FuZ2dBU2dDZkVFVWJHb2lBVFlDQkNBQUlBRTJBZ0FnQUJDc0NRc3BBUUYvSUFFb0Fud2hBaUFBSUFFb0FuZ2lBVFlDQUNBQUlBRWdBa0VVYkdvMkFnUWdBQkNzQ1F0NkFRRi9JQUJCcEJocUVQMGNJQUJCb0JacUlnRVEvQndnQVJET0NTQUFRZXdUYWlJQkVLSVFJQUVRK2h3Z0FVRUFOZ0tzQWlBQklBRW9BckFDUVFGcU5nS3dBaUFCRUtNUUlBQkIrQkpxRUs0TElBQkJwQkZxRU4wR0lBQkJ1QWhxRUtjUUlBQkJoQWhxRVBzY0lBQkJHR29RcVJBZ0FCQVBHZ3ZsQVFFS2Z5TUFRZEFBYXlJREpBQWdBMEVRYWlJR0lBQWdBUkNZSFNBRFFTQnFJZ2RCeGJjS0lBWVFOU0FEUVRCcUlnZ2dCMEc0NXdrUUxTQURRVUJySWdVZ0NDQURJQUlRK1FjaUNSQk9JQUVvQWdoQkVHb2hDaU1BUVJCcklnUWtBQ0FBS0FJQUlnc1FIQ0FGS0FJQUlRd2dCQ0FGS0FJRUlBVXRBQXNpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0lNSUFRZ0RDQUZJQUliTmdJSUlBUWdCQ2tEQ0RjREFDQUxRY2dDYWlBRUlBb1ExUUVnQkVFUWFpUUFJQVVRRHhvZ0NSQVBHaUFJRUE4YUlBY1FEeG9nQmhBUEdpQUFJQUVvQWdnUW5Ra2dBMEhRQUdva0FBc1hBQ0FBSUFFUXFnUWlBRVVFUUVFQUR3c2dBQ2dDRkF2eUJBSUdmd0YrSXdCQjhBQnJJZ01rQUNBQUtBSUVJUWdDUUNBQUtBSUFLQUlBSWdRb0FnUkJ5T2tQUmtFQUlBUWJSUVJBSUFOQlFHc2lBU0FFUVNScUVGTWdBMEhRQUdvaUFrSGtpZ2tnQVJBMUlBTkI0QUJxSWdVZ0FrSHptZ2tRTFNBQUtBSUFLQUlBS1FJWUlRbEJBQ0VFSUFOQkFEWUNPQ0FESUFrM0F6QWdBeUFKTndNb0lBZ2dCU0FEUVNocUVDY2dCUkFQR2lBQ0VBOGFJQUVRRHhvTUFRc2dCQ2dDVUNFRkFrQWdBU0FDSUFFZ0Foc2lBa1lFUUNBQklBVkdEUUlnQTBFWWFpSUNJQVJCSkdvUVV5QURRVUJySWdSQjg1b0pJQUlRTlNBRFFkQUFhaUlGSUFSQmsrQUpFQzBnQTBFSWFpSUdJQUVRWHlBRFFlQUFhaUlCSUFVZ0JoQk9JQU5CS0dvaUJ5QUJRWU9HQVJBdElBZ2dCeUFBS0FJQUtBSUFRUkJxRUNjZ0J4QVBHaUFCRUE4YUlBWVFEeG9nQlJBUEdpQUVFQThhSUFJUUR4b01BUXNnQVNBRlN3UkFJQU5CR0dvaUFpQUVRU1JxRUZNZ0EwRkFheUlFUWZPYUNTQUNFRFVnQTBIUUFHb2lCU0FFUWZYRkNSQXRJQU5CQ0dvaUJpQUJFRjhnQTBIZ0FHb2lBU0FGSUFZUVRpQURRU2hxSWdjZ0FVR0RoZ0VRTFNBSUlBY2dBQ2dDQUNnQ0FFRVFhaEFuSUFjUUR4b2dBUkFQR2lBR0VBOGFJQVVRRHhvZ0JCQVBHaUFDRUE4YURBRUxJQUlnQlU4TkFTQURRUmhxSWdFZ0JFRWthaEJUSUFOQlFHc2lCRUh6bWdrZ0FSQTFJQU5CMEFCcUlnVWdCRUdteFFrUUxTQURRUWhxSWdZZ0FoQmZJQU5CNEFCcUlnSWdCU0FHRUU0Z0EwRW9haUlISUFKQmc0WUJFQzBnQ0NBSElBQW9BZ0FvQWdCQkVHb1FKeUFIRUE4YUlBSVFEeG9nQmhBUEdpQUZFQThhSUFRUUR4b2dBUkFQR2d0QkFDRUVDeUFEUWZBQWFpUUFJQVFMUXdFRGZ5QUFLQUlFSVFNQ1FDQUFLQUlBUVFGQkFCQ29CU0lGUlEwQUlBTWdCU2dDVENnQ0FCRFFBeUlEUlEwQUlBQW9BZ2dnQXlBQklBSVF3Z0loQkFzZ0JBdkNvQUVDSlg4Q2ZpTUFRWUFGYXlJS0pBQWdDa0tBZ0lDQWdBZzNBclFDSUFvZ0NrRXdhallDc0FJZ0FDZ0NCQ0VGSUFwQ2dJQ0FnSUFFTndMMEJDQUtJQXBCOEFKcUlnSTJBdkFFUVFFaEZDQUNRUUVRa0F3Z0NpQUtLQUwwQkNJRVFRRnFOZ0wwQkNBS0tBTHdCQ0FFUVFOMGFpSUVRUUEyQWdRZ0JDQUJOZ0lBSUFCQm9EWnFJUlVnQ2lBQ05nTG9BaUFLSUFJMkF1QUNBbjhDUUFKQUEwQWdDaWdDOUFRaUFrVU5BaUFLSUFKQkFXc2lBallDOUFRZ0NpZ0M4QVFnQWtFRGRHb2lBaWdDQkNFRElBb2dBaWdDQUNJQ05nTGNBaUFDRUpNSUlnSUVRQ0FLSUFJMkF0QUNJQU5CZ1FSUEJFQWdDa0hBQW1vaUJFR0FCQkJmSUFwQkVHb2lBMEdJcndvZ0JCQTFJQUFnQXlBQ1FSQnFFQ2NnQXhBUEdpQUVFQThhREFNTElBQWdBaEF6UlEwQ0lBb2dBa0VBSUFJb0FnUkJnSUFTUmhzaUFqWUN3QUlDUUNBQ1JRMEFJQUlvQWlSQmZuRkJCRWNOQUNBS1FSQnFJQlVnQWtFb2FpQUtRY0FDYWhDVUhnc2dDa0V3YWlBS1FkQUNhaENVQXdzZ0NpZ0MzQUloQWlBS0lBVTJBc1FDSUFvZ0NrSGNBbW8yQXNBQ0lBSUVRQ0FDS0FJRUlnUkJ3UDhSUmdSQUlBcEI0QUpxSUFJb0FpUWdBaWdDS0NBRFFRRnFFSk1lREFJTElBUkJnSUFTUmdSQUlBcEI0QUpxSUFJb0FpZ2dBaWdDTENBRFFRRnFFSk1lREFJTElBUkJ3UDRSUmdSQUlBcEI2QUpxSUFJb0FpZ2dBMEVCYWhDdEJRd0NDeUFFUWJqdUQwWUVRQ0FDS0FKSUlnUWdBaWdDVEVFQ2RHb2hBaUFEUVFGcUlRTURRQ0FDSUFSR0RRTWdCQ2dDQUNFR0lBb2dBellDRkNBS0lBWTJBaEFnQkVFRWFpRUVJQXBCOEFKcUlBcEJFR29RK1FVTUFBc0FDeUFFUWNDQUVrWUVRQ0FLUWVnQ2FpQUNLQUlrSUFOQkFXb1FyUVVNQWdzZ0JFR0FnUkpHQkVBZ0NrSG9BbW9nQWlnQ0tDQURRUUZxRUswRkRBSUxDeUFLUWNBQ2FoQ09EQTBBQzBFQUlSUU1BUXRCQUF3QkMwRUJDeUVFUVFBaEFpQUtRUUEyQXZRRUlBcEI4QUpxSUFvb0F2QUVFRFlDUUNBRVJTQVVSWElOQUNBQVFhUTRhaUVZSUFCQnJCMXFJUllnQUVHTU5Hb2hHU0FLS0FLd0FpSWFJQW9vQXJRQ1FRSjBhaUVVQWtBQ1FBSkFBMEFnRkNBYVJnMEJJQW9nRkVFRWF5SVVLQUlBSWdJMkFpd2dDaUFBTmdMd0FpQUtJQXBCTEdvMkF2UUNJQUpGQkVBZ0NrSHdBbW9Ra2g0TUJBc0NmeUFDS0FJRUlnUkJ3UDhSUmdSQVFRQWhCQ01BUWRBQWF5SURKQUFnQXlBQ05nSk1JQU1nQUNBQUlBQkJxQjFxSWdjZ0FpZ0NLQkNxQkVFQUVKWUNFT01DSWdZMkFrZ0NRQ0FHUlEwQUlBTWdCeUFDS0FJa0VLb0VJZ0kyQWtRZ0JpZ0NHRUVCUndSQUlBTWdBQ0FDUVFBUWxnSWlBallDUkFzQ1FDQUNSUTBBSUFNZ0FpZ0NGQ0lGRUlRQklnUTJBa0FnQXlBQU5nSXdJQU1nQTBITUFHbzJBamdnQXlBRFFVQnJOZ0kwSUFNQ2Z3SkFBa0FnQkVVTkFDQUVLQUlFSWdoQmtLSVNSZzBCSUFnUWtRTU5BU0FJUWZDcUVrY05BQ0FBS0FJQUlRZ2dBeUFFS0FJWU5nSWdJQU1nQkNnQ0lEWUNFQ0FJSUFOQklHb2dBMEVRYWhDZkFnd0NDeU1BUVRCcklnSWtBQ0FDSUFNb0FqQWlCa0dvSFdvZ0F5Z0NOQ2dDQUJDbkFTQUNRUkJxSWdSQjlKRUpJQUlRTlNBQ1FTQnFJZ1VnQkVIem1na1FMU0FHSUFVZ0F5Z0NPQ2dDQUVFUWFoQW5JQVVRRHhvZ0JCQVBHaUFDRUE4YUlBSkJNR29rQUF3Q0N5QUVLQUlZQ3lJSU5nSThRUUFoQkNBSVJRMEJJQVlvQWhRUWhBRWlDQkN1Q1VVRVFDQURRUkJxSWdJZ0J5QUlFS2NCSUFOQklHb2lCVUhHbWdrZ0FoQTFJQU5CTUdvaUJ5QUZRZk9hQ1JBdElBQWdCeUFHS0FJSVFSQnFFQ2NnQnhBUEdpQUZFQThhSUFJUUR4b01BZ3NnQlNnQ0JFRzRyUkpHQkVBZ0FDZ0NBQ0VFSUFNZ0JTZ0NIRFlDTUNBRElBVW9BaUEyQWlBZ0F5QUVJQU5CUEdvZ0EwRXdhaUFEUVNCcUVLMEpOZ0k4Q3lBRFFRQTJBaUFnQXlBQ0tBSVlJQVlvQWhnUTJBWWlCRFlDRUFKQUFrQWdCRUVCUncwQUlBTWdBeWdDVERZQ01DQUFRYVE0YWlBRFFUQnFFUFlGUlEwQUlBTkJBRFlDRUF3QkN5QURRVEJxSVFVZ0FFRUlhaUVISUFNb0Fqd2hDeU1BUWRBQWF5SUVKQUFDUUNBR0tBSWNJZ2hGQkVBZ0JVRUJPZ0FFSUFWQkFEWUNBQXdCQ3lBRVFRQTJBa3dnQWlnQ0ZCQ0VBU0FFUWN3QWFoQWlHZ0pBSUFnUVl5SW5RZ0JaQkVBZ0JEVUNUQ0lvVUNBbklDaFVjZzBCQ3lBRVFVQnJFRlVnQkNnQ1RDSUpCRUFnQkVFUWFpSUlJQWxCQVdzUVh5QUVRU0JxSWdsQmtaY0lJQWdRTlNBRVFUQnFJZ3dnQ1VIVXZRVVFMU0FFUVVCcklBd1FuZ0VnREJBUEdpQUpFQThhSUFnUUR4b0xJQVFnSnhEM0JpQUVRUkJxSWdoQnFNUUpJQVFRTlNBRVFTQnFJZ2tnQ0VIMHdBRVFMU0FFUVRCcUlnd2dDU0FFUVVCckVFNGdCeUFNSUFZb0FnaEJFR29RWFNBTUVBOGFJQWtRRHhvZ0NCQVBHaUFFRUE4YUlBVWdCeTBBQkFSL0lBVWdCeUFMRUpFQk5nSUFRUUVGUVFJTE9nQUVJQVJCUUdzUUR4b01BUXNnQWlnQ0hDSUhSUVJBSUFWQkFUb0FCQ0FGUVFBMkFnQU1BUXNnQnlBbnB5QUhLQUlBS0FJTUVRRUFJUWNnQlVFQk9nQUVJQVVnQnpZQ0FBc2dCRUhRQUdva0FDQUZFQ3RGRFFFZ0F5QURRVEJxRUJvb0FnQTJBaUFMSUFNZ0JpMEFLQVIvUVFFRklBSXRBQ2hCQUVjTE9nQVBJQUFvQWdBaEJDQURJQUlvQWhBMkFqQWdCQkFjSUFSQnFBRnFJZ1VoSENBRkVNc0VJUVFnQXlnQ1RDRUdJQU1vQWp3aEJ5QURLQUlRSVFnZ0F5Z0NSQ0VKSUFNb0FrZ2hEQ0FBUVl3MGFpZ0NBQ0VMSUFNb0FpQWhEU0FETFFBUElROGdBeWdDTUNFT0l3QkJJR3NpQWlRQUlBSWdCellDR0NBQ0lBWTJBaHdnQWlBSU5nSVVJQUlnQ3pZQ0VDQUNJQTAyQWd3Z0FpQVBPZ0FMSUFJZ0RqWUNCQ0FFSUFJb0Fod2dBaWdDR0NBQ0tBSVVJQUlvQWhBZ0FpZ0NEQ0FDTFFBTElBSW9BZ1FRbkFVaUJFSHdreEkyQWdRZ0JFR2dsQkkyQWdBZ0JDQU1OZ0l3SUFRZ0NUWUNMQ0FFUVpDVUVqWUNBQ0FDUVNCcUpBQWdIQ0FFRUNnZ0JTQUZLQUlZUVFGcU5nSVlJQVFnQXlnQ1NDa0RJQ0FES0FKRUtRTWdoRGNESUF3QkMwRUFJUVFMSUFOQjBBQnFKQUFnQkF3QkN5QUVRWUNBRWtZRVFFRUFJUVlqQUVIZ0FHc2lCU1FBSUFVZ0FqWUNYQUpBSUFCQnFCMXFJZ1FnQWlnQ0tCQ3FCQ0lEUlNBRUlBSW9BaXdRcWdRaUJFVnlEUUFnQXlnQ0ZCQ0VBU0VJSUFRb0FoUVFoQUVoQ1NBRklBTW9BaGdnQkNnQ0dCRFlCaUlITmdKWUlBVkJRR3NnQUNnQ0VDSU1JQUlvQWlRZ0NDQUpJQWNnQWtFUWFrRUFJQXdvQWdBb0FoQVJFQUFnQlNnQ1FFVU5BQ0FGS0FKRUVJRU1CRUFnQUNBRElBVW9Ba1FRbGdJaUEwVU5BUXNnQlNnQ1NCQ0JEQVJBSUFBZ0JDQUZLQUpJRUpZQ0lnUkZEUUVMSUFBZ0F4RGpBaUlEUlEwQUlBQWdCQkRqQWlJRVJRMEFJQVZCQURZQ1BDQUZJQUkyQWlnQ1FDQUFRYVE0YWlBRlFTaHFFUFlGQkVBZ0JVRUFOZ0pZREFFTEFrQWdBeWdDR0VFQlJ3MEFJQVFvQWhnTkFDQURLQUljSVFJZ0JVRUJOZ0pZSUFVZ0FqWUNQQXdCQ3lBSFFRRkhEUUJCQVNFQ0lBVW9Ba3dnQlNnQ1VFRUJjWElFUUNBRklBTW9BaHcyQWhnZ0JDZ0NIQ0VHSUFWQkFqWUNKQ0FGSUFZMkFod2dCU0FGUVJocU5nSWdJQVVnQlNrRElEY0RDQUpBSUFBZ0JVRW9haUFGUVFocUVMVUNJZ1lvQWdnZ0JTZ0NSQ0FES0FJSVFSQnFFTlVRUlEwQUlBQWdCa0VJYWlJSUtBSUFRUVJxSUFVb0FrZ2dCQ2dDQ0VFUWFoRFZFRVVOQUNBQUlBVW9BbEFpQ1VFQmRXcEJDR29oQnlBRktBSk1JUUlnQ1VFQmNRUkFJQWNvQWdBZ0Ftb29BZ0FoQWdzZ0JVRUFPZ0FVSUFVZ0NEWUNFQ0FGUVJocUlnZ2dCeUFGS0FKQUlBVkJFR29nQlNnQ1hFRVFhaUFDRVFnQVFRRWhBaUFJRUN0RkRRQWdCU0FGUVJocUVCb29BZ0EyQWp4QkFDRUNDeUFHRUtvQlFRQWhCaUFDUlEwQkRBSUxJQVZCQXpZQ1dBc2dCU0FETFFBb0JIOUJBUVVnQkMwQUtFRUFSd3M2QUNnZ0FDZ0NBQ0FGUWR3QWFpQUZRVUJySUFWQjJBQnFJQUJCakRScUlBVkJQR29nQlVFb2FoRFVFQ0lHSUFNcEF5QWdCQ2tESUlRM0F5QUxJQVZCNEFCcUpBQWdCZ3dCQ3lBRVFjRCtFVVlFUUVFQUlRUWpBRUVnYXlJREpBQWdBeUFDTmdJY0FrQWdBQ0FBSUFCQnFCMXFJQUlvQWlnUXFnUkJBQkNXQWhEakFpSUlSUTBBSUFNZ0FDQUNLQUlrRU5BRElnWTJBaGdnQmtVTkFDTUFRZUFBYXlJRkpBQUNRQ0FBUWF3ZGFpSUhLQUlJSUFJb0FpZ1Fwd1VRaEFFaUNSRFpEMFVFUUNBRlFUQnFJZ3dnQnlnQ0NDQUpFS2NCSUFWQlFHc2lDVUh6bWdrZ0RCQTFJQVZCMEFCcUlnc2dDVUdwTUJBdElBY2dDeUFDS0FJb1FSQnFFQ2NnQ3hBUEdpQUpFQThhSUF3UUR4cEJBQ0VNREFFTElBWVEyUTlGQkVBZ0JVRXdhaUlKSUFjb0FnZ2dCaENuQVNBRlFVQnJJZ3hCMjRzSklBa1FOU0FGUWRBQWFpSUxJQXhCODVvSkVDMGdCeUFMSUFJb0FpUkJFR29RSnlBTEVBOGFJQXdRRHhvZ0NSQVBHa0VBSVF3TUFRc2dDUkMzSENBR0VMY2NSaUlNRFFBZ0JVRVFhaUlMSUFjb0FnZ2dDUkNuQVNBRlFTQnFJZ2xCdzQ0SklBc1FOU0FGUVRCcUlnMGdDVUd6akFrUUxTQUZJQWNvQWdnZ0JoQ25BU0FGUVVCcklnOGdEU0FGRUU0Z0JVSFFBR29pRGlBUFFmT2FDUkF0SUFjZ0RpQUNRUkJxRUNjZ0RoQVBHaUFQRUE4YUlBVVFEeG9nRFJBUEdpQUpFQThhSUFzUUR4b0xJQVZCNEFCcUpBQWdERVVOQUNBRElBZ29BaGdpQkRZQ0ZBSkFBa0FDUUNBRVFRRkdCRUFnQXlBQ05nSUlJQUJCcERocUlBTkJDR29ROWdWRkRRRWdBMEVBTmdJVUN5QURRUUEyQWhBTUFRc2dBMEVJYWlFRklBZ29BaHdoQnlNQVFkQUFheUlFSkFBZ0JDQUdFRncyQWhBZ0JDQUNRUkJxTmdJRUlBUWdCRUVRYWpZQ0NDQUVJQUJCQ0dvMkFnQWdBQ2dDQ0NFSklBUkJBRFlDVEFKQUlBY2dCeWdDQUNnQ0NCRUFBQ0lDSUFSQnpBQnFFQ0lnQWtZRVFDQUZJQVFnQnhDbEZBd0JDeUFFUW9DQWdJQ0FBVGNDUkNBRUlBUkJJR29pQWpZQ1FDQUNJQVFvQWt3UU9TQUVRVUJySVF4QkFDRUNBa0FDUUFOQUlBSWdCQ2dDVEU4TkFTQUdRUUFRSWlFTElBUWdCeUFDSUFjb0FnQW9BZ3dSQVFBMkFoUWdCRUVZYWlJTklBa2dDeUFFSUFJZ0JFRVVhaENpRkNBTkVDc0VRQ0FFUVNCcUlBUkJHR29RR2hBa0lBSkJBV29oQWd3QkN3c2dCRUVZYWhBOUdpQUZRUUk2QUFRTUFRc2dCQ0FNTmdJWUlBUWdCQ2dDUUNBRVFTQnFSem9BSENBSklBWWdCRUVZYWhBNklRSWdCVUVCT2dBRUlBVWdBallDQUFzZ0JFRWdhaEFqQ3lBRVFkQUFhaVFBSUFVUUswVU5BU0FESUFOQkNHb1FHaWdDQURZQ0VBc2dBQ2dDQUNFQ0lBTWdDQzBBS0RvQUNDQUNJQU5CSEdvZ0EwRVlhaUFEUVJScUlBQkJqRFJxSUFOQkVHb2dBMEVJYWhEVUVDSUVJQWdwQXlBM0F5QU1BUXRCQUNFRUN5QURRU0JxSkFBZ0JBd0JDeUFFUWJqdUQwWUVRRUlBSVNjakFFR2dCR3NpQlNRQUlBVWdBallDbEFFZ0JTQUNLQUlrSWdRMkFwQUJJQUFnQkJBekdpQUZJQVFvQWlRaUJEWUNqQUVnQUNBRUVETWFJQVZDZ0lDQWdJQUJOd0tFQVNBRklBVkI0QUJxSWdRMkFvQUJJQVFnQWlnQ1RCQTVJQVZCQVRZQ1hDQUFRYWdkYWlFR1FRQWhCQUovQWtBQ1FBTkFJQUlvQWt3Z0JFc0VRQ0FGSUFZZ0FpZ0NTQ0FFUVFKMGFpZ0NBQkNxQkNJQ05nS1FBaUFDUlEwQ0lBVkI0QUJxSUFWQmtBSnFFQ1FnQlNBRktBSmNJQVVvQXBBQ0tBSVlFTmdHTmdKY0lBUkJBV29oQkNBRktBS1FBaWtESUNBbmhDRW5JQVVvQXBRQklRSU1BUXNMSUNkQ2Q0TWhKeUFGS0FLQUFTSUNJQVVvQW9RQlFRSjBhaUVEQTBBZ0F5QUNJZ1JIQkVBZ0JFRUVhaUVDSUFRb0FnQXRBQ2hGRFFFTEN5QUZJQU1nQkVjNkFGc2dCU0FBTmdKRUlBVWdCVUhiQUdvaUJ6WUNVQ0FGSUFWQmxBRnFJZ0kyQWt3Z0JTQUZRZHdBYWlJRU5nSklJQVVnQlVIZ0FHb2lBellDUUNBRklBQTJBaWdnQlNBSE5nSTRJQVVnQWpZQ05DQUZJQVEyQWpBZ0JTQUROZ0lzSUFVZ0FEWUNGQ0FGSUFWQktHbzJBaVFnQlNBRU5nSWdJQVVnQXpZQ0hDQUZJQUkyQWhnZ0JTQUZRVUJyTmdJUUlBVkJtQUZxSUFCQm9BRnFJQVZCakFGcUVOTVFBa0FDUUNBRkxRQ29BVVVFUUNBRlFaQUNha0czbXdWQm9SRkJDQ0FBS0FJRUVCY2lBMEVZYWlJQ1FaNkxDUkFPR2lBRlFmQURhaUlFSUFVb0Fvd0JRU1JxRUZNZ0FpQUVFQklhSUFKQnJmQUVFQTRhSUFRUUR4b2dBeEFZREFFTElBVW9BcGdCSWdkRklBVXRBS1FCSWdKQkFVZHlSUVJBSUFZZ0J4Q0tEQ0VESUFVZ0FEWUNrQUlnQlNBRlFaZ0JhallDbUFJZ0JTQUZRWXdCYWpZQ2xBSWdBMFVFUUNBRlFaQUNhaENJSGd3Q0N5QURLQUlFSWdJUTB3MEVRQ0FGUVJCcUlBTVEwaEFoQkF3REN5QUNRWUNURWtZRVFDQUFRWTNUQWlBRktBS01BUkNwQkVVTkFpQUZLQUtVQVNFQ1FRQWhDQ01BUVNCcklnY2tBQ0FISUFNMkFoZ2dCeUFDTmdJY1FRQWhCQUpBSUFBZ0JVSGdBR29pQWlBREVQWUxSUTBBSUFkQkFUb0FGeUFBS0FJQUlRWWdCMEVETmdJUUlBZEJBRFlDRENBR0VCd2pBRUVRYXlJREpBQWdCa0dvQVdvaUJoRFBIU0VKSUFjb0FoQWhEQ0FIS0FJWUlRc2dCeWdDSENFTklBTWdBa0VnYWpZQ0NDQURJQUlvQWlBZ0FrYzZBQXdnQmlBSklBMGdDeUFNSUFOQkNHb2dBRUdNTkdvaUd5Z0NBRUVBSUFjdEFCY1FpUndpQWhBb0lBWWdCaWdDR0VFQmFqWUNHQ0FEUVJCcUpBQWdCeWdDR0NFR0l3QkJFR3NpQXlRQUlBTWdBallDRENBR1FkZ0phaUFEUVF4cUVOa0dJQU5CRUdva0FDQUNJQWNvQWhncEEvZ0pJQ2VFTndNZ0lBQkJyQjFxSVFZZ0FDZ0NqRFFoQ3lNQVFZQURheUlESkFBZ0FpZ0NMQ0lNS0FJRUlRMGdBaWdDQ0NFSklBTkIwQUpxSUFOQjRBSnFJQXhCQUNBTlFZQ1RFa1liSWd3b0FrQW9BaVJCSkdvUVZoQlRBa0FnQzBVRVFDQUdJQU5CRUdwQnRxb0VFQlFpQmlBSlFSQnFFQ2NnQmhBUEdnd0JDd0pBSUF3b0FrQVEzQVlFUUNBR0lBTkJFR3BCOS8wQ0VCUWlCaUFKUVJCcUVDY2dCaEFQR2d3QkN5QUpLQUpNSWdzZ0RDZ0NNQ0lOUmdSQUlBTkJLR29oRUFOQUFrQUNmd0pBSUFJb0FsUWdDRXNFUUNBSVFRSjBJZzBnRENnQ0xHb29BZ0FpRVNnQ0RDSUxJQVlvQWdnZ0NTZ0NTQ0FOYWlnQ0FDSVBFS2NGRUlRQkloTkhCRUFnQTBIZ0FXb2lDU0FJUVFGcUVGOGdBMEh3QVdvaUNFSDB5d2tnQ1JBMUlBTkJnQUpxSWd3Z0NFR2xqQWtRTFNBRFFaQUNhaUlOSUF3Z0EwSFFBbW9RVGlBRFFhQUNhaUlPSUExQmxKa0pFQzBnQTBIUUFXb2lFQ0FHS0FJSUlBc1Fwd0VnQTBHd0Ftb2lDeUFPSUJBUVRpQURRY0FDYWlJUklBdEJwWWtKRUMwZ0EwSEFBV29pRWlBR0tBSUlJQk1RcHdFZ0EwR3dBV29pRXlBUklCSVFUaUFEUVJCcUloY2dFMEh6bWdrUUxTQUdJQmNnRDBFUWFoQW5JQmNRRHhvZ0V4QVBHaUFTRUE4YUlCRVFEeG9nQ3hBUEdpQVFFQThhSUE0UUR4b2dEUkFQR2lBTUVBOGFJQWdRRHhvZ0NSQVBHZ3dIQ3lBTEtBSUVRZGlzRWtjTkF5QUdLQUs0Q2lFT0lBTkJBellDRUNBT1FSeHFJQU5CRUdvUXJRUU5BeUFDS0FKUUlBMXFLQUlBS0FJUUtBSU1JZzBvQWdRaERpQUxRUUFnQ3lnQ0JFSFlyQkpHR3lnQ0dDRVNJQTFCQUNBT1FkaXNFa1liSWdzZ0RVRUFJQTVCdUswU1Joc2lEWEpGQkVBZ0EwRVFha0hubWdWQnZ3MUJDQ0FEUWJBQmFoQWRJZ3NRRnlFT0lCQkJxcGtJRUE0YUlBNFFHQ0FMRUI0TUFnc2dDMFVOQVNBTFFSaHFEQUlMUVFFaENDQUNLQUlVS0FJRVFaQzFFa2NOQmdKQUlBSW9BZ3dvQWdnaURFVU5BQ0FNS0FJRVFmanVEMGNOQUNBTUtBSWtJQUlvQWdoR0RRY0xJQU5Cc0FGcUlnaEJtNDBKSUFOQjBBSnFFTVFCSUFOQkVHb2lEQ0FJUWZ2UkF4QXRJQVlnRENBSlFSQnFFQ2NnREJBUEdpQUlFQThhREFVTElBMUJHR29MSVFzZ0N5Z0NBQ0FTUmcwQUlCRW9BZ2doQ3lBRFFRQTZBQXdnQXlBTFFUaHFOZ0lJSUFZZ0EwRUlha0VHRUxFRFJRMEFJQVlnQTBFUWFrSDF1UVFRRkNJR0lBOUJFR29RSnlBR0VBOGFEQU1MSUFoQkFXb2hDQXdBQ3dBTElBTkJnQUpxSWdoQndJVUtJQU5COEFGcVFjRVRRYm9wSUFzZ0RVc2JFQlFpRXhBMUlBTkJrQUpxSWdzZ0NFR2JqQWtRTFNBRFFhQUNhaUlOSUFzZ0EwSFFBbW9RVGlBRFFiQUNhaUlQSUExQnJkc0tFQzBnQTBIZ0FXb2lEaUFNS0FJd0VGOGdBMEhBQW1vaURDQVBJQTRRVGlBRFFiQUJhaUlRSUF4QjlzZ0pFQzBnQTBIUUFXb2lFU0FDS0FKVUVGOGdBMEVRYWlJU0lCQWdFUkJPSUFZZ0VpQUpRUkJxRUNjZ0VoQVBHaUFSRUE4YUlCQVFEeG9nREJBUEdpQU9FQThhSUE4UUR4b2dEUkFQR2lBTEVBOGFJQWdRRHhvZ0V4QVBHZ3RCQUNFSUN5QURRZEFDYWhBUEdpQURRWUFEYWlRQUlBaEZEUUFnQUNnQ2lEUWlBd1JBSUFNZ0J5Z0NHQkRSSFNBQUtBS0lOQ0FDRU5nZElBY29BaGdpQmlnQ2pBUWlBeUFHS0FLUUJFRUNkR29oQmdOQUlBTWdCa1lFUUNBSEtBSVlJZ1lvQW93Q0lnTWdCaWdDa0FKQkFuUnFJUVlEUUNBRElBWkdCRUFqQUVId0FHc2lBeVFBSUFNZ0FpZ0NMQ0lHUVFBZ0JpZ0NCRUdBa3hKR0d5SUdOZ0prUVFFaERBSkFJQVpGRFFBZ0JpZ0NRQ0VHSUFOQkFEb0FYQ0FESUFaQjVBQnFOZ0pZSUFOQjJBQnFRUWNRbHdrTkFDQURJQUEyQWxBZ0FFSElLMm9pQmlBRFFlUUFhaENKRENFSklBWWdBRUdJTkdvUWlRd2hDeUFEUVVCclFnQTNBd0FnQTBJQU53TTRJQU5CZ0lDQS9BTTJBa2dnQTBJQU53TW9JQU5DQURjRElDQURRWUNBZ1B3RE5nSXdJQXRCRkdvaERTQUxRVHhxSVJBZ0MwRW9haUVSSUFsQlBHb2hFaUFKUVJScUlROGdDVUVvYWlFVFFRQWhCZ0pBQTBBZ0JpQUNLQUpVVHlJTVJRUkFBa0FnQmtFQ2RDSU9JQUlvQWxCcUtBSUFJZ2dvQWhRb0FnUkIyS3dTUncwQUlBTWdDQ2dDRURZQ0hDQURJQU1vQW1Rb0Fpd2dEbW9vQWdBMkFnZ2dFeUFEUVFocUVQY0hCRUFnQTBFZ2FpQURRUnhxRU9jRUJFQWdBMEVnYWlBRFFSeHFFUFlIS0FJQUlRWWdBMEVBTmdJTUlBTWdCallDQ0NBRFFSQnFRYTdlQXhBVUlRWWdBMEhRQUdvZ0NDQURRUWhxRVBVSElBWVFEeG9NQlFzZ0EwRTRhaUFEUVJ4cUVPY0VCRUFnQTBFNGFpQURRUnhxRVBZSEtBSUFJUVlnQTBFQU5nSU1JQU1nQmpZQ0NDQURRUkJxUWZuL0JCQVVJUVlnQTBIUUFHb2dDQ0FEUVFocUVQVUhJQVlRRHhvTUJRc2dEeUFEUVJ4cUVPY0VCRUFnRHlBRFFSeHFFUFlIS0FJQUlRWWdBMEVCTmdJTUlBTWdCallDQ0NBRFFSQnFRZm4vQkJBVUlRWWdBMEhRQUdvZ0NDQURRUWhxRVBVSElBWVFEeG9NQlFzZ0NTQURRUnhxRU9jRUJFQWdDU0FEUVJ4cUVQWUhLQUlBSVFZZ0EwRUJOZ0lNSUFNZ0JqWUNDQ0FEUVJCcVFhN2VBeEFVSVFZZ0EwSFFBR29nQ0NBRFFRaHFFUFVISUFZUUR4b01CUXNnQXlBSU5nSU1JQU1nQXlnQ0hEWUNDQ0FEUWVnQWFpQURRU0JxSUFOQkNHb1E5d1VnQXlnQ0hDSU1SUTBCSUF3b0FnUWlEa0dRbkJKR0JFQWdBeUFJTmdJTUlBTWdERFlDQ0NBRFFlZ0FhaUFMSUFOQkNHb1E5d1VNQWdzZ0RrSEFuQkpIRFFFZ0F5QU1OZ0pvSUFOQkNHb2dFU0FEUWVnQWFoQ3JCUXdCQ3lBRElBTW9BbVFvQWl3Z0Rtb29BZ0EyQWdnZ0VpQURRUWhxRVBjSFJRMEFJQU5CSUdvZ0EwRWNhaERuQkFSQUlBTkJJR29nQTBFY2FoRDJCeWdDQUNFR0lBTkJBRFlDRENBRElBWTJBZ2dnQTBFUWFrR3UzZ01RRkNFR0lBTkIwQUJxSUFnZ0EwRUlhaEQxQnlBR0VBOGFEQVFMSUFrZ0EwRWNhaERuQkFSQUlBa2dBMEVjYWhEMkJ5Z0NBQ0VHSUFOQkFUWUNEQ0FESUFZMkFnZ2dBMEVRYWtHdTNnTVFGQ0VHSUFOQjBBQnFJQWdnQTBFSWFoRDFCeUFHRUE4YURBUUxJQU1nQ0RZQ0RDQURJQU1vQWh3MkFnZ2dBMEhvQUdvZ0EwRTRhaUFEUVFocUVQY0ZJQU1vQWh3aURFVU5BQ0FNS0FJRUlnNUJrSndTUmdSQUlBTWdDRFlDRENBRElBdzJBZ2dnQTBIb0FHb2dEU0FEUVFocUVQY0ZEQUVMSUE1QndKd1NSdzBBSUFNZ0REWUNhQ0FEUVFocUlCQWdBMEhvQUdvUXF3VUxJQVpCQVdvaEJnd0JDd3NnQ1VFY2FpRUdBMEFnQmlnQ0FDSUdCRUFnQXlBR0tRSUlOd01JSUFOQjZBQnFJQTBnQTBFSWFoRDNCUXdCQlNBSlFRaHFJUVlEUUNBR0tBSUFJZ1pGRFFNZ0F5QUdLUUlJTndNSUlBTkI2QUJxSUFzZ0EwRUlhaEQzQlF3QUN3QUxBQXNBQ3lBRFFTQnFFRThnQTBFNGFoQlBDeUFEUWZBQWFpUUFJQXhGRFFVZ0IwRUFPZ0FFSUFjZ0FrSFFBR28yQWdBZ0J5Z0NHQ0lFS0FLOEJ5SURJQVFvQXNBSFFRTjBhaUVJQTBBZ0F5QUlSd1JBSUFNb0FnQWlCaWdDQkNFSklBTW9BZ1FoQkNBR1JTQUpRY0NjRWtkeVJRUkFJQWNvQWdBb0FnQWdCaWdDVUVFQ2RHb29BZ0FRb0FRaUJrRUFJQVlvQWdSQjJKd1NSaHNvQWl3aEJnc0NRQ0FFUlFSQVFRQWhCQXdCQ3lBRUtBSUVRY0NjRWtjTkFDQUhLQUlBS0FJQUlBUW9BbEJCQW5ScUtBSUFFS0FFSWdSQkFDQUVLQUlFUWRpY0VrWWJLQUlzSVFRTElBQW9Bb2cwSUFZZ0JCRDVIU0FEUVFocUlRTU1BUXNMQlNBQUtBS0lOQ0FES0FJQUVQWWRJQU5CQkdvaEF3d0JDd3NGSUFBb0FvZzBJQU1vQWdBUTBSMGdBMEVFYWlFRERBRUxDd3NnQUNnQ0FDQUhLQUljUVNScUlCc2dCMEVZYWhEMUhTRUVJQUFvQWdBaUF4QWNJQU5CNUFGcUlBY29BaHdvQWlRZ0JCQzVBU0FDSVFRTElBZEJJR29rQUF3REN5QUNFUGtWQkVBZ0JVRUxOZ0wwQXlBRlFhUHBBRFlDOEFNZ0JTQUZLUVB3QXpjRENDQUdJQU1nQlVFSWFoQ21CUXdDQ3lBRlFaQUNhaENJSGd3QkN5QUhRWDlHSUFKQkFrZHlSUVJBSUFCQjhPOENJQVVvQW93QkVLa0VSUTBCSUFVb0FwUUJJUXRCQUNFTUl3QkI4QUJySWdZa0FDQUdJQXMyQW13Z0JVSGdBR29pQ0NnQ0lDSUVJQWdvQWlSQkFuUnFJUUpCQVNFREEzOGdBaUFFUmdSL0lBWkJBRFlDYUNBR1FnQTNBMkJCQUNFRUl3QkJFR3NpQ1NRQUlBZ29BaVFoRFNBR1FTQnFJZ0pDZ0lDQWdJQUJOd0lrSUFJZ0FqWUNJQ0FDSUEwUU9RTkFJQVFnRFVjRVFDQUpJQWdvQWlBZ0JFRUNkR29vQWdBb0FoUTJBZ3dnQWlBSlFReHFFQ1FnQkVFQmFpRUVEQUVMQ3lBSlFSQnFKQUFnQUNnQ0VDRUVJQVpCQURvQVhDQUdJQVpCUUdzMkFsZ2dCa0hnQUdvZ0JDQUhJQVpCMkFCcUlBTWdDMEVRYWlBRUtBSUFLQUlJRVFvQUlBWW9BbUFoQkNBQ0VDTUNRQ0FFUlEwQUFrQWdCMEh4QUVZRVFDQUFJQWdvQWlBb0FnQkJBQkNXQWlFQ0lBZ29BaUFnQWpZQ0FDQUlLQUlnS0FJQVJRMENJQVlvQW1BaEJBd0JDeUFBSUFnZ0JCRDJDMFVOQVFzZ0JDMEFVQVJBSUFBZ0JrRWdha0hlN3dJUUZDSUNJQVlvQW14QkVHb1F5eEFnQWhBUEdnc2dCa0VBTmdKVUlBWWdBeUFFS0FJNEVOZ0dJZ0kyQWxBQ1FDQUNRUUZIRFFBZ0JpQUdLQUpzSWdrMkFpQWdBRUdrT0dvZ0JrRWdhaEQyQlFSQUlBWkJBRFlDVUF3QkN5QUdRU0JxSWdJZ0FDQUlJQVFRM0IwQ2YwRUJJQUlRMngwTkFCb2dBQ0FHS0FKb0lndEJBWFZxUVFocUlRSWdCaWdDWkNFRElBdEJBWEVFUUNBQ0tBSUFJQU5xS0FJQUlRTUxJQVFvQWdnaEN5QUdRU0JxRU5vZElRMGdCa0VBT2dBVUlBWWdEVUVnYWpZQ0VDQUdRUmhxSWcwZ0FpQUxJQVpCRUdvZ0NVRVFhaUFERVFnQVFRRWdEUkFyUlEwQUdpQUdJQVpCR0dvUUdpZ0NBRFlDVkVFQUN5RUNJQVpCSUdvUTJSMGdBZzBCQ3lBR0lBUW9Ba0JCMWdCcklnSkJHMGxCZ1lENVB5QUNkbkVFZjBFQkJTQUlLQUlnSWdNZ0NDZ0NKRUVDZEdvaEJBTkFJQVFnQXlJQ1J3UkFJQUpCQkdvaEF5QUNLQUlBTFFBb1JRMEJDd3NnQWlBRVJ3czZBQ0FnQUNnQ0FDQUdRZXdBYWlBR1FlQUFhaUFHUWRBQWFpQUlJQUJCakRScUlBWkIxQUJxSUFaQklHb1F3QkFoQWlBQUtBS0lOQ0lJQkVBZ0JpZ0NZQ0VESXdCQkVHc2lCQ1FBSUFRZ0F6WUNEQ01BUVJCcklnTWtBQ0FEUVFocUlBaEI3QVZxSWdoQkhHb2dCRUVNYWlJSkVNb2RJQU1vQWdnaEN5QURRUkJxSkFBZ0MwRUNSd1JBSUFnZ0NSQnhDeUFFUVJCcUpBQWdBQ2dDaURRZ0FoRFlIUXNnQUVHc0hXb2hBeU1BUWRBQWF5SUVKQUJCQVNFSUFrQWdBaWdDTENJSktBSUVRZmlQRWtjZ0NVVnlEUUFnQkNBSktBSkFRUmRyUVFKSlFRRjBJZ3MyQWt3Z0MwVU5BQ0FES0FLNENrRWNhaUFFUWN3QWFoQ3RCQTBBSUFSQklHb2lDRUhpakFrZ0JFRVFhaUFKRUkwY0VCUWlEeEExSUFSQk1Hb2lDU0FJUWQyS0NoQXRJd0JCa0FGcklnc2tBQ0FMRUVraURTQUVLQUpNRUtVYklBUWdEVUVNYWhCQ0lBMFFVU0FMUVpBQmFpUUFJQVJCUUdzaUN5QUpJQVFRVGlBRElBc2dBaWdDQ0VFUWFoQW5JQXNRRHhvZ0JCQVBHaUFKRUE4YUlBZ1FEeG9nRHhBUEdrRUFJUWdMSUFSQjBBQnFKQUFnQ0VVTkFDQUhRZGNBYTBFUFNRUkFRUUFoQ0NNQVFTQnJJZ1FrQUNBRUlBSTJBaHdnQWlnQ0xDSUpLQUlFUWZpUEVrY2dDVVZ5UlFSQUlBUkJFR29nQ1JDTkhCQVVJUXNnQkNBRE5nSUlJQVFnQ1VFSWFqWUNBQ0FFSUFSQkhHbzJBZ1FnQkVFSVFYaEJCeEMxSEFSQUlBUkJBa0VBUVFNUXRSd2hDQXNnQ3hBUEdnc2dCRUVnYWlRQUlBaEZEUUVnQmtFQU9nQU1JQVlnQWtIUUFHbzJBZ2dnQmlnQ1lDRUlJd0JCb0FGcklnUWtBQ0FJUVFocUlnbEJDeEQrRHlJSVFYOUdCRUFnQkVHM213VkJ5QlpCQ0NBQUtBSUVFQmNpQzBFWWFrR0U0Z0VRRGhvZ0N4QVlDd0pBSUFZb0FnZ29BZ0FnQ0VFQ2RHb29BZ0FRb0FRaUNFVU5BQ0FJS0FJRVFkaWNFa2NOQUNBSUtBSXNJZ2dvQWd3UWhBRW9BZ1JCMks4U1JnMEFJQWxCQ2hEK0R5SUpRWDlHQkg5QkFBVWdCaWdDQ0NnQ0FDQUpRUUowYWlnQ0FCQ2dCQ0lKUVFBZ0NTZ0NCRUhZbkJKR0d5Z0NMQXNoQ1NBQUtBS0lOQ0FJSUFrUStSMExJQVJCb0FGcUpBQUxJQWRCMWdCR0JFQWpBRUd3QVdzaUJDUUFBbjlCQUNBQ0tBSXNJZ2NvQWdSQitJOFNSeUFIUlhJTkFCb2dBaWdDVkVVRVFDQUVRZWVhQlVIYkRFRUlJQVJCb0FGcUVCMGlCeEFYSWdoQkdHcEIxdGdJRUE0YUlBZ1FHQ0FIRUI0TElBSW9BbEFvQWdBaUNDZ0NGQ0lIUVFBZ0J5Z0NCRUhZckJKR0d5SUhSUVJBSUFSQjU1b0ZRZDRNUVFnZ0JFR2dBV29RSFNJSkVCY2lDMEVZYWtIN3FBZ1FEaG9nQ3hBWUlBa1FIZ3NnQkNBSEtBSVlJZ2MyQXFBQklBY29BZ1JCOEtRU1J3UkFJQU1vQXJ3S0lRa2pBRUVRYXlJSEpBQWdCMEVJYWlBSklBUkJvQUZxRU1nUUlBY3RBQWdoQ1NBSFFSQnFKQUJCQVNBSlJRMEJHZ3NnQXlBRVFhQ1VCQkFVSWdjZ0NDZ0NDRUVRYWhBbklBY1FEeHBCQUFzaEJ5QUVRYkFCYWlRQUlBZEZEUUVMSXdCQk1Hc2lCQ1FBUVFFaENBSkFJQUlvQWhRb0FnUkJrTFVTUncwQUFrQWdBaWdDRENJSFJRMEFJQWNvQWdnaUIwVU5BQ0FIS0FJRVFmanVEMGNOQUNBSEtBSWtJQUlvQWdoR0RRRUxRUUFoQ0NBRUlBSW9BaXdpQjBFQUlBY29BZ1JCK0k4U1Joc29Ba0EyQWhBZ0JFRWdhaUlKSUFSQkVHb2lCeEQ0RUNBRVFkZU5DU0FKRU1RQklBY2dCRUg3MFFNUUxTQURJQWNnQWlnQ0NFRVFhaEFuSUFjUUR4b2dCQkFQR2lBSkVBOGFDeUFFUVRCcUpBQWdBa0VBSUFnYklRd0xJQVpCOEFCcUpBQWdEQVVnQXlBRUtBSUFLQUlZRU5nR0lRTWdCRUVFYWlFRURBRUxDeUVFREFJTElBZEZJQUpCQlVkeVJRUkFBa0FnQlNnQ2pBRWlBaWdDQkVISTZROUdEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQjBFbGF3NEtBUWtKQWdrSkF3a0pCQUFMQWtBZ0IwRXhhdzRLQlFrSkJna0pCd2tKQ0FBTEFrQWdCMEhjQUVjRVFDQUhRU0pHRFFFQ1FDQUhRZElBUndSQUlBZEIxd0JHRFFFZ0IwRWNSdzBNSUFBb0FnQWhBaUFGSUFVb0FvUUJOZ0tRQWlBQ0lBVkJrQUpxRUljZUlRTWdCVUtBZ0lDQWdBRTNBcFFFSUFVZ0JVSHdBMm9pQWpZQ2tBUWdBaUFGS0FLRUFTSUNFRGtnQlVHUUJHb2hCMEVBSVFRRFFDQUNJQVJIQkVBZ0JTQUZLQUtBQVNBRVFRSjBhaWdDQUNnQ0ZCQ0VBVFlDa0FJZ0JFRUJhaUVFSUFWQjhBTnFJQVZCa0FKcUVDUU1BUXNMUVFBaEJDQUZRUUE2QU93RElBVWdCellDNkFNQ1FDQUZRZWdEYWhDM0N5SUhSUVJBSUFBZ0JVR1FBbW9pQWtHeWhRRVFGQ0lESUFVb0FwUUJRUkJxRUNjZ0F4QVBHaUFDRU40R0lRTURRQ0FGS0FLRUFTQUVUUVJBSUFNUTNRWkJBQ0VFREFNTElBVWdCRUVDZENJSElBVW9Bb0FCYWlnQ0FDZ0NGRFlDZ0FJakFFRVFheUlDSkFBZ0FrRUlhaUFESUFWQmdBSnFFTWtkSUFJb0FnZ2hDQ0FDUVJCcUpBQWdDRUVDUndSQUlBVkJ3QUZxSWdJZ0JCQmZJQVZCMEFGcUlnaEJtTXdKSUFJUU5TQUZRZUFCYWlJSklBaEI3NU1KRUMwZ0JVR3dBV29pRENBR0lBVW9Bb0FCSUFkcUtBSUFLQUlVRUtjQklBVkI4QUZxSWdzZ0NTQU1FRTRnQlVHQUFtb2lEU0FMUWZPYUNSQXRJQUFnRFNBRktBS0FBU0FIYWlnQ0FDZ0NDRUVRYWhDR0FTQU5FQThhSUFzUUR4b2dEQkFQR2lBSkVBOGFJQWdRRHhvZ0FoQVBHZ3NnQkVFQmFpRUVEQUFMQUFzZ0FDQUZLQUtVQVVFUWFpSUNJQUlnQWlBSElBTkJBQkRXRUNJQ1JRMEFJQVZCRUdvZ0FoRFNFQ0VFQ3lBRlFmQURhaEFqREE4TElBVkJRR3RCQlVFQUVMa0NJUVFNRGdzZ0JVRkFhMEVHUVFBUXVRSWhCQXdOQ3lBRlFVQnJRUWRCQUJDNUFpRUVEQXdMSUFWQlFHdEJDRUVBRUxrQ0lRUU1Dd3NnQlVGQWEwRUpRUUFRdVFJaEJBd0tDeUFGUVVCclFRcEJBQkM1QWlFRURBa0xJQVZCUUd0QkMwRUFFTGtDSVFRTUNBc2dCVUZBYTBFTVFRQVF1UUloQkF3SEN5QUZRVUJyUVExQkFCQzVBaUVFREFZTElBVkJRR3RCRGtFQUVMa0NJUVFNQlFzZ0JVRkFhMEVQUVFBUXVRSWhCQXdFQ3lBRlFVQnJRUkJCQUJDNUFpRUVEQU1MSUFBZ0J5QUNFSVllSWdKRkRRRWdCVUVRYWlBQ0VOSVFJUVFNQWdzZ0FrVUVRQ0FGUWZBRGFpSUNRWVdLQ1NBRlFaZ0JhaERFQVNBRlFaQUNhaUlFSUFKQjg1b0pFQzBnQUNBRUlBVW9BcFFCUVJCcUVDY2dCQkFQR2lBQ0VBOGFEQUVMSUFWQkN6WUNsQUlnQlVHajZRQTJBcEFDSUFVZ0JTa0RrQUkzQXdBZ0FDQUZLQUtNQVVFUWFpQUZRWmdCYWlBRkVJVWVDMEVBSVFRTElBVkJtQUZxRU5FUUlBUU5BUXRCQUF3QkN5QUVLQUlzSWdJRWZ3Si9RUUFnQWlnQ0JDSUNLUU1RUW9DRmdLQ0FnSUNBd0FDRElpY2dKMElCZllOUURRQWFRUUVnQWtHUW5oSVFTQTBBR2lBQ1FjaWVFaEJJQ3dWQkFBc0VRQ0FBS0FJQUlRSWdCU0FFS0FJVU5nS1FBaUFDSUFWQmtBRnFJQUJCakRScUlBVkJrQUpxRU5BUUlRSWdBQ2dDQUNJREVCd2dBMEhrQVdvZ0JTZ0NrQUVnQWhDNUFRc2dCQ0VtUVFBaEhTQUFRYXdkYWlFRElBQW9Bb3cwSVFjakFFRkFhaUlDSkFBZ0FpQUVOZ0lJUVFFaENBSkFJQVFvQWl3aUJpMEFQRVVnQjBWeURRQWdCeWdDQ0NJSFJRMEFJQVFvQWdnaEJDQUhLQUlFUWZqdUQwY05BQ0FIS0FJa0lBUkhEUUFnQWlBRE5nSUFJQUlnQWtFSWFqWUNCQUpBSUFZb0FnUWlCRUdBa3hKR0JFQWdBa0VRYWlJRUlBWW9Ba0FvQWlSQkpHb1FVeUFDUVNCcUlnZEJnbzBKSUFRUU5TQUNRVEJxSWdnZ0IwSFQ0Z01RTFNBRElBZ2dBaWdDQ0NnQ0NFRVFhaEFuSUFnUUR4b2dCeEFQR2lBRUVBOGFJQU1vQWdnZ0JpZ0NRQkNkQ1F3QkN5QUVRZmlQRWtZRVFDQUNJQVlvQWtBMkFnd2dBa0VRYWlJRUlBSkJER29RK0JBZ0FrRWdhaUlHUWI2TkNTQUVFRFVnQWtFd2FpSUhJQVpCODVvSkVDMGdBeUFISUFJb0FnZ29BZ2hCRUdvUUp5QUhFQThhSUFZUUR4b2dCQkFQR2d3QkN5QUVRY2llRWtZRVFDQURJQUpCTUdwQnl2SUVFQlFpQkNBQ0tBSUlLQUlJUVJCcUVDY2dCQkFQR2d3QkN5QUVRWkNlRWtZRVFDQURJQUpCTUdwQm9mSUVFQlFpQkNBQ0tBSUlLQUlJUVJCcUVDY2dCQkFQR2d3QkN5TUFRUkJySWdRa0FDQUNLQUlBSUFSQjh2SUVFQlFpQXlBQ0tBSUVLQUlBS0FJSVFSQnFFQ2NnQXhBUEdpQUVRUkJxSkFBTFFRQWhDQXNnQWtGQWF5UUFJQ1lnSFNBSUd3c2hBaUFGUWVBQWFoQWpJQVZCb0FScUpBQWdBZ3dCQ3lBRVFmanREMFlFUUVFQUlRTWpBRUhRQW1zaUJDUUFJQVFnQWpZQ25BSWdCQ0FDS0FJa0lnSTJBcGdDSUFBZ0FoQXpHaUFFUVlBQ2FpQUFRYUFCYWlBRVFaZ0NhaERURUFKQUFrQWdCQzBBa0FKRkJFQWdCRUhnQUdwQnQ1c0ZRZW9YUVFnZ0FDZ0NCQkFYSWdWQkdHb2lBa0dlaXdrUURob2dCRUV3YWlJRElBUW9BcGdDUVNScUVGTWdBaUFERUJJYUlBSkJyZkFFRUE0YUlBTVFEeG9nQlJBWURBRUxJQVFvQW9BQ0lnSkZJQVF0QUl3Q0lnVkJBVWR5UlFSQUlBQkJxQjFxSUFJUWlnd2lBa1VOQWdKQUFrQWdBaWdDQkNJRkVQWVZCRUFnQkNBQ05nTE1BaUFFUVRCcUlBUW9BcGdDUVNScUVGWWhCeUFBS0FJQUlnSVFIQ0FDUWFnQmFpSUdJUjRnQmhEekJTRUZJQVFvQXB3Q0lRZ2dBRUdNTkdvb0FnQWhDU0FFS0FMTUFpRURJd0JCSUdzaUFpUUFJQUlnQ1RZQ0dDQUNJQWcyQWh3Z0FpQURLQUlNTmdJVUlBSWdBeWdDRURZQ0VDQUNJQU1vQWh3MkFnd2dBa0VBT2dBTElBVWdBaWdDSENBQ0tBSVVJQUlvQWhBZ0FpZ0NHQ0FDS0FJTUlBSXRBQXRCQUJDY0JTSUZRZGljRWpZQ0JDQUZRWWllRWpZQ0FDQUZJQU0yQWl3Z0JVRzRuUkkyQWdBQ1FDQURLQUlNS0FJRVFkaXNFa2NOQUNBREtBSWdJZ2hGRFFBZ0NDZ0NFQ0VEQ3lBRklBTTJBaEFnQWtFZ2FpUUFJQjRnQlNJREVDZ2dCaUFHS0FJWVFRRnFOZ0lZQWtBZ0FDZ0NqRFFpQWtVTkFBSi9JQUlvQWdSQitKUVNSd1JBQTBCQkFDQUNLQUlNSWdKRkRRSWFJQUlvQWdSQitKUVNSdzBBQ3dzZ0Fnc2lBa1VOQUNBQ0VNMFFJZ2dvQXV3Q1JRMEFJQVJCNEFCcUlnSWdDRUU0YWpZQ0FDQUNRUVJxSUFjUVZob2dBa0VBTmdJZ0lBSWdDQ2dDNkFKQkFXczJBaVFDUUNBQ0VMc2RSUTBBSUFJUTl4MG9BZ0FnQ0NnQzhBSkpEUUFnQkVHZ0Ftb2lBeUFIRUZNZ0JFR3dBbW9pQlVHVmtBa2dBeEExSUFSQndBSnFJZ1lnQlVIem1na1FMU0FBSUFZZ0NDZ0M3QUpCRUdvUUp5QUdFQThhSUFVUUR4b2dBeEFQR2lBRElBY1FVeUFGUVo2TENTQURFRFVnQmlBRlFZWHZBeEF0SUFBZ0JpQUNFUGNkS0FJRUtBSUlRUkJxRUlZQklBWVFEeG9nQlJBUEdpQURFQThhSUFNZ0J4QlRJQVZCbm9zSklBTVFOU0FHSUFWQjd1d0RFQzBnQUNBR0lBUW9BcHdDUVJCcUVJWUJJQVlRRHhvZ0JSQVBHaUFERUE4YVFRQWhBd3dFQ3dzZ0JDQUVLQUxNQWlJRlFRQWdCU2dDQkVHUW5CSkdHeUlDTmdLZ0FpQUFLQUtJTkNJR0JFQWdBa1VOQWlNQVFSQnJJZ1VrQUNBRklBSTJBZ3dnQmtIY0FHb2dCVUVNYWlJSEVJVU1JQVpCN0FGcUlBY1EwQjBnQlVFUWFpUUFJQUFvQWdBaUJSQWNJQVZCNUFGcUlBSVEzQkFpQlVVTkFpQUZLQUlRSWdJZ0JTZ0NGRUVDZEdvaEJRTkFJQUlnQlVZTkF5QUFLQUtJTkNBQ0tBSUFFUFlkSUFKQkJHb2hBZ3dBQ3dBTElBVW9BZ2dvQWdRaUFrSG8rUkZHQkVBZ0FDZ0NtRFFpQWtVTkFpQUNJQVJCb0FKcUVJVU1JQUFvQWdBaUFoQWNJQUpCNUFGcUlBUW9BcUFDRU53UUlnVkZEUUlnQlNnQ0VDSUNJQVVvQWhSQkFuUnFJUVVEUUNBQ0lBVkdEUU1nQkNBQ0tBSUFOZ0pnSUFBb0FwZzBJQVJCNEFCcUVJVU1JQUpCQkdvaEFnd0FDd0FMSUFKQjJQZ1JSdzBCSUFSQnNBSnFJZ1VnQnhCVElBUkJ3QUpxSWdKQjFZc0pJQVVRTlNBRVFlQUFhaUlESUFKQmplOE1FQzBnQWhBUEdpQUZFQThhSUFJZ0EwSGhxZ1FRdUFJZ0FDQUNJQVFvQXB3Q1FSQnFFQ2NnQWhBUEdpQUNJQU5CaCs4REVMZ0NJQUFnQWlBRUtBTE1BaWdDQ0VFUWFoQ0dBU0FDRUE4YUlBTVFEeHBCQUNFRERBSUxJQVVRMHcwRVFDQUVJQUkyQW1BZ0FFSHhsUVFnQkNnQ21BSVFxUVJGRFFRZ0FDZ0NBQ0FFUVp3Q2FpQUFRWXcwYWlBRVFlQUFhaERRRUNFRERBVUxJQVZCZ0pNU1J3MEVJQVFnQWpZQ1lDQUFRWTNUQWlBRUtBS1lBaENwQkVVTkF5QUFLQUlBSUFSQm5BSnFJQUJCakRScUlBUkI0QUJxRVBVZElRTU1CQXNnQkNnQ3pBSWhCU01BUVJCcklnSWtBQ0FDSUFNMkFnd2dCVUVrYWlBQ1FReHFFQ1FnQWtFUWFpUUFDd3dDQ3lBQ1JTQUZRUVZIY2tVRVFDQUVJQUFnQWlBRUtBS1lBaENHSGlJQ05nSmdJQUpGRFFFZ0FDZ0NBQ0FFUVp3Q2FpQUFRWXcwYWlBRVFlQUFhaERRRUNFRERBSUxJQUpCZjBZZ0JVRUNSM0pGQkVBZ0JFRXdha0hSL1FJUUZDRUNJQVFvQXB3Q0lnTXBBaGdoSnlBRUlBTW9BaUEyQW5BZ0JDQW5Od05vSUFRZ0p6Y0RZQ0FBSUFJZ0JFSGdBR29RSnlBQ0VBOGFEQUVMSUFRZ0FrRUFJQVZCQTBZYklnWTJBbUFnQmdSQUlBQkJoWTBCSUFRb0FwZ0NFS2tFUlEwQ0lBQW9BZ0FpQWhBY0lBSkJxQUZxSWdVaEh5QUZFS29ESVFNZ0JDZ0NuQUloQmlBQVFZdzBhaWdDQUNFSElBUW9BbUFoQ0NNQVFSQnJJZ0lrQUNBQ0lBYzJBZ2dnQWlBR05nSU1JQU1nQWlnQ0RDQUNLQUlJRU9vSElnTkI4SVVTTmdJRUlBTkIrSWtTTmdJQUlBTWdDRFlDRUNBRFFlaUpFallDQUNBQ1FSQnFKQUFnSHlBREVDZ2dCU0FGS0FJWVFRRnFOZ0lZREFJTElBUWdBa0VBSUFWQkJFWWJJZ1kyQW1BZ0JnUkFJQUJCeU53RUlBUW9BcGdDRUtrRVJRMENJQUFvQWdBaUFoQWNJQUpCcUFGcUlnVWhJQ0FGRUtvRElRTWdCQ2dDbkFJaEJpQUFRWXcwYWlnQ0FDRUhJQVFvQW1BaENDTUFRUkJySWdJa0FDQUNJQWMyQWdnZ0FpQUdOZ0lNSUFNZ0FpZ0NEQ0FDS0FJSUVPb0hJZ05CaUlZU05nSUVJQU5CbUlvU05nSUFJQU1nQ0RZQ0VDQURRWWlLRWpZQ0FDQUNRUkJxSkFBZ0lDQURFQ2dnQlNBRktBSVlRUUZxTmdJWURBSUxJQVFnQWtFQUlBVkJCa1liSWdZMkFtQWdCZ1JBSUFCQnk5QURJQVFvQXBnQ0VLa0VSUTBDSUFBb0FnQWlBaEFjSUFKQnFBRnFJZ1VoSVNBRkVLb0RJUU1nQkNnQ25BSWhCaUFBUVl3MGFpZ0NBQ0VISUFRb0FtQWhDQ01BUVJCcklnSWtBQ0FDSUFjMkFnZ2dBaUFHTmdJTUlBTWdBaWdDRENBQ0tBSUlFT29ISWdOQm9JWVNOZ0lFSUFOQnVJb1NOZ0lBSUFNZ0NEWUNFQ0FEUWFpS0VqWUNBQ0FDUVJCcUpBQWdJU0FERUNnZ0JTQUZLQUlZUVFGcU5nSVlEQUlMSUFRZ0FrRUFJQVZCQjBZYklnWTJBbUFnQmdSQUlBQkI1NzRESUFRb0FwZ0NFS2tFUlEwQ0lBQW9BZ0FpQWhBY0lBSkJxQUZxSWdVaElpQUZFS29ESVFNZ0JDZ0NuQUloQmlBQVFZdzBhaWdDQUNFSElBUW9BbUFoQ0NNQVFSQnJJZ0lrQUNBQ0lBYzJBZ2dnQWlBR05nSU1JQU1nQWlnQ0RDQUNLQUlJRU9vSElnTkJ1SVlTTmdJRUlBTkIySW9TTmdJQUlBTWdDRFlDRUNBRFFjaUtFallDQUNBQ1FSQnFKQUFnSWlBREVDZ2dCU0FGS0FJWVFRRnFOZ0lZREFJTElBUWdBa0VBSUFWQkNFWWJJZ1kyQW1BZ0JnUkFJQUJCcG9rRUlBUW9BcGdDRUtrRVJRMENJQUFvQWdBaUFoQWNJQUpCcUFGcUlnVWhJeUFGRUtvRElRTWdCQ2dDbkFJaEJpQUFRWXcwYWlnQ0FDRUhJQVFvQW1BaENDTUFRUkJySWdJa0FDQUNJQWMyQWdnZ0FpQUdOZ0lNSUFNZ0FpZ0NEQ0FDS0FJSUVPb0hJZ05CMElZU05nSUVJQU5CK0lvU05nSUFJQU1nQ0RZQ0VDQURRZWlLRWpZQ0FDQUNRUkJxSkFBZ0l5QURFQ2dnQlNBRktBSVlRUUZxTmdJWURBSUxJQVFnQWtFQUlBVkJDVVliSWdJMkFtQWdBZ1JBSUFCQm12b0FJQVFvQXBnQ0VLa0VSUTBDSUFBb0FnQWlBaEFjSUFKQnFBRnFJZ1VoSkNBRkVLb0RJUU1nQkNnQ25BSWhCaUFBUVl3MGFpZ0NBQ0VISUFRb0FtQWhDQ01BUVJCcklnSWtBQ0FDSUFjMkFnZ2dBaUFHTmdJTUlBTWdBaWdDRENBQ0tBSUlFT29ISWdOQjZJWVNOZ0lFSUFOQm1Jc1NOZ0lBSUFNZ0NEWUNFQ0FEUVlpTEVqWUNBQ0FDUVJCcUpBQWdKQ0FERUNnZ0JTQUZLQUlZUVFGcU5nSVlEQUlMSUFWRkJFQkJBQ0FFUVlBQ2FpQUZHeUVGSUFBb0F2ZzVJQVFvQXB3Q1JnUkFJQVJCc0FKcUlnSkJvdG9LSUFSQm9BSnFJQUJCL0RscUtBSUFFQlFpQ1JBMUlBUkJ3QUpxSWdZZ0FrSHltZ2tRTFNBRVFUQnFJZ2NnQmlBRkVFNGdCRUhnQUdvaUNDQUhRZk9hQ1JBdElBQWdDQ0FFS0FLY0FrRVFhaEFuSUFnUUR4b2dCeEFQR2lBR0VBOGFJQUlRRHhvZ0NSQVBHaUFBUVlRNmFpZ0NBQ0lHUlEwRElBUkNnSUNBZ0lBQk53SlVJQVFnQkVFd2FqWUNVQ0FBUVlBNmFpZ0NBQ0lDSUFaQkFuUnFJUU1EUUNBQ0lBTkdCRUFnQkVIZ0FHb1FTU0VDUVFBaEF5QUZLQUlBSVFZZ0JDQUVLQUtFQWlBRUxRQ0xBaUlISUFkQkdIUkJHSFZCQUVnaUJ4czJBaXdnQkNBR0lBVWdCeHMyQWlnZ0JFRUFOZ0lrSUFSQjNQZ01OZ0lnSUFRZ0JDa0RLRGNER0NBRUlBUW9BbGcyQWhBZ0JDa0NVQ0VuSUFRZ0JDa0RJRGNEQUNBRUlDYzNBd2dnQkVFWWFpQUVRUWhxSUFJZ0JCRFdEeUFFUWNBQ2FpSUZJQUpCREdvUVFpQUFJQVVnQkNnQ25BSkJFR29RaGdFZ0JSQVBHaUFDRUZFZ0JFRXdhaEFqREFVTElBUWdBaWdDQUNJR05nSmdJQVl0QUFCQjN3QkhCRUFnQkVFd2FpQUVRZUFBYWhBa0N5QUNRUVJxSVFJTUFBc0FDeUFFUVRCcUlnSkJrNHNKSUFVUXhBRWdCRUhnQUdvaUJTQUNRZk9hQ1JBdElBQWdCU0FFS0FLY0FrRVFhaEFuSUFVUUR4b2dBaEFQR2d3Q0N5QUVRZUFBYWtHM213VkJtUmxCQ0NBQUtBSUVFQmNpQmtFWWFpSUNRZTYvQ3hBT0dpQUNRZG4zQ3hBT0dpQUVRVEJxSWdVZ0JFR0FBbW9nQUNnQ0JCRGRIaUFDSUFVUUVob2dCUkFQR2lBR0VCZ01BUXRCQUNFREN5QUVRWUFDYWhEUkVDQUVRZEFDYWlRQUlBTU1BUXNnQkJDckNRUkFJd0JCd0FGcklnUWtBQ0FFSUFJMkFod2dCQ0FBTmdJUUlBUWdCRUVjYWpZQ0ZBSi9Ba0FnQWtVRVFDQUVRUkJxRVBnZERBRUxJQVFDZndKQUlBSW9BZ1FpQTBHdyt3OUdCRUFDUUFKQUFrQWdBaWdDTUE0REJBQUJBZ3NnQUNnQ0FCRFVBZ3dFQ3lBQUtBSUFFTmNHREFNTElBUkJJR3BCdDVzRlFiVVhRUWdnQUNnQ0JCQVhJZ05CR0dvaUJVSHV2d3NRRGhvZ0JVR04zZ3NRRGhvZ0EwRVFhaUFDS0FJd0VPd1hJQU1RR0F3REN5QURRYmo5RDBZRVFBSkFBa0FDUUFKQUlBSW9BakFPQXdBQkFnTUxJQUFvQWdBUXFBUU1CUXNnQUNnQ0FCRGtBUXdFQ3lBQVFhd2RhaUFDUVJCcUVJb1FSUTBFSUFBb0FnQVE5UVVNQXdzZ0JFRWdha0czbXdWQnhCZEJDQ0FBS0FJRUVCY2lBMEVZYWlJRlFlNi9DeEFPR2lBRlFlemRDeEFPR2lBRFFSQnFJQUlvQWpBUTVCVWdBeEFZREFNTElBTkIrUHdQUmdSQUlBQW9BZ0FRcWdrTUFnc2dCRUVRYWhENEhRd0NDeUFBS0FJQUVLY0pDeUlGTmdJWUlBVkZEUUFnQkVFQU5nSVFJQVJCQVRZQ0RDQUVJQVFvQWh3MkFpQUNRQ0FBUWFRNGFpQUVRU0JxRVBZRkJFQWdCRUVBTmdJTURBRUxJQVJCSUdvaEJ5QUFRUWhxSVFZZ0JDZ0NIQ0VESXdCQkVHc2lBaVFBQWtBZ0EwVUVRQ0FIUVFBNkFBUU1BUXNnQTBFUWFpRUlBa0FDUUNBREtBSUVJZ2xCK1B3UFJnUkFJQUpCQ0dvZ0JpQUZJQU10QUNRUWlBRU1BUXNnQ1VHdyt3OUdCRUFDUUFKQUFrQUNRQ0FES0FJd0RnTUFBUUlEQ3lBQ1FRaHFJQVlnQlNBREtRTW9FUDBCREFRTElBSkJDR29nQmlBRklBTW9BaWdRc1FFTUF3c2dBa0VJYWlBR0lBVWdBeWdDS0JDdEFRd0NDeUFDUVFFNkFBd2dBa0VBTmdJSURBRUxJQWxCdVAwUFJ3MEJBa0FDUUFKQUFrQWdBeWdDTUE0REFBRUNBd3NnQWtFSWFpQUdJQWdnQlNBREt3TW9FSE1NQXdzZ0FrRUlhaUFHSUFnZ0JTQURLd01vdGhCckRBSUxJQUpCQ0dvZ0JpQUlJQVVnQXlzREtMWVFSaEJ5REFFTElBSkJBVG9BRENBQ1FRQTJBZ2dMSUFjZ0Fpa0RDRGNDQUF3QkN5QUhRUUE2QUFRTElBSkJFR29rQUNBSEVDdEZEUUVnQkNBRVFTQnFFQm9vQWdBMkFoQUxJQUFvQWdBaEFpQUVRUUE2QUNBZ0FpQUVRUnhxSUFSQkdHb2dCRUVNYWlBQVFZdzBhaUFFUVJCcUlBUkJJR29RMUJBTUFRdEJBQXNoQWlBRVFjQUJhaVFBSUFJTUFRc2dCRUhBZ0JKR0JFQkJBQ0VFSXdCQm9BRnJJZ01rQUNBRElBSTJBaVFnQXlBQVFhZ2RhaUFDS0FJa0VLb0VJZ1UyQWlBZ0JRUkFBa0FnQXlBRktBSVVJZ2NRaEFFaUJqWUNIQ0FESUFVb0FoQTJBaGdnQTBFQU5nSVVJQU1nQlMwQUtEb0FFeUFBSUFJb0FpZ1FNeG9nQXlBQU5nSUFJQU1nQTBFa2FqWUNDQ0FESUFOQkhHbzJBZ1FnQmtVRVFDQURFUFFkREFFTElBWW9BZ1FpQWhEbUF3UkFJQU5COEFCcUlBTW9BaVFvQWloQkpHb1FWaUVJSUFZb0FrUWlBaUFHS0FKSVFRSjBhaUVHQW44Q1FBSkFBMEFnQWlBR1JnMEJJQU5CS0dvZ0FpZ0NBQ0lFUVFocUVGWWdDQkMyQWlFSklBSkJCR29oQWlBSlJRMEFDeUFESUFRMkFtQWdCQTBCQ3lBRFFaQUJhaUlDSUFnUVV5QURRY2dBYWlJRVFiUDlDU0FDRURVZ0EwRW9haUlGSUFSQjlPVUVFQzBnQUNBRklBTW9BaVJCRUdvUUp5QUZFQThhSUFRUUR4b2dBaEFQR2tFQURBRUxJQU1nQkNnQ0tEWUNGQ0FIS0FJRVFiaXRFa1lFUUNBQUtBSUFJUUlnQXlBSEtBSWNOZ0lvSUFNZ0J5Z0NJRFlDU0NBRElBSWdBMEVVYWlBRFFTaHFJQU5CeUFCcUVLMEpOZ0lVQ3lBRFFTaHFJUUlnQlNnQ0hDSUZCSDhnQlNBRUtBSXNJQVVvQWdBb0Fnd1JBUUFGUVFBTElRUWdBa0VCT2dBRUlBSWdCRFlDQUVFQUlBSVFNQTBBR2lBQUtBSUFJUUlnQTBFb2FoQWFJUVFnQWhBY0lBSkJxQUZxSWdVaEpTQUZFTXNFSVFZZ0F5Z0NKQ0VISUFNb0FoUWhDQ0FBUVl3MGFpZ0NBQ0VKSUFRb0FnQWhEQ0FES0FJZ0lRUWdBeWdDWUNFTElBTXRBQk1oRFNBREtBSVlJUThqQUVFZ2F5SUNKQUFnQWlBSU5nSVlJQUlnQnpZQ0hDQUNJQWsyQWhRZ0FpQU1OZ0lRSUFJZ0RUb0FDeUFDSUE4MkFnUWdBaUFFTmdJTUlBSWdCQ2dDR0RZQ0FDQUdJQUlvQWh3Z0FpZ0NHQ0FDS0FJQUlBSW9BaFFnQWlnQ0VDQUNLQUlNSUFJdEFBc2dBaWdDQkJDQkhDSUVRYUNXRWpZQ0JDQUVRWmlYRWpZQ0FDQUVJQXMyQWpBZ0JFSG9saEkyQWdBZ0FrRWdhaVFBSUNVZ0JDSUNFQ2dnQlNBRktBSVlRUUZxTmdJWUlBSUxJUVFNQVFzZ0FoQ1JBd1JBSUFOQmtBRnFJZ1FnQXlnQ0pDZ0NLRUVrYWhCVElBTW9BcFFCSVFnZ0F5MEFtd0VoQWlBRFFvQ0FnSURBQURjQ2hBRWdBeUFEUWZBQWFpSUpOZ0tBQVNBSklBZ2dBaUFDUVJoMFFSaDFRUUJJR3lJSUVQd0xJQU1vQXBBQklBUWdBeTBBbXdFaUJFRVlkRUVZZFVFQVNDSUpHeUlDSUFNb0FwUUJJQVFnQ1J0cUlRUWdBMEdBQVdvaERBSi9Ba0FEUUNBQ0lBUkdEUUVDUUFKQUFrQUNRQUpBQWtBQ1FDQUNMQUFBSWdsQjhnQnJEZ2tGQkFRRUJBTUZBUUlBQ3lBSlFlRUFhdzRIQWdFREF3TURBQU1MSUFOQkFUWUNLQXdFQ3lBRFFRSTJBaWdNQXdzZ0EwRUROZ0lvREFJTElBTkI0QUJxUWJua0FSQVVJUVFnQXlnQ0pDZ0NLQ0lDS1FJUUlTY2dBeUFDS0FJZ05nSllJQU1nSnpjRFVDQURJQ2MzQTBnZ0F5Z0NWQ0VGSUFNMUFsQWhKeUFEUVNocUlnSWdBelVDU0NBREtBS0VBU0lHSUFNb0FreHFyVUlnaG9RM0FnQWdBaUFuSUFVZ0JtcXRRaUNHaERjQ0NDQUNJQU1vQWxnMkFoQWdBQ0FFSUFJUUp5QUVFQThhUVFBTUJBc2dBMEVBTmdJb0N5QURRZkFBYWlBRFFTaHFFS2NFSUFKQkFXb2hBaUFES0FLQUFTQURLQUtFQVVFQ2RHcEJCR3NvQWdBZ0JpZ0NIRWtOQUFzZ0FDQURRU2hxUWFUOUFSQVVJZ0lnQXlnQ0pDZ0NLRUVRYWhBbklBSVFEeHBCQUF3QkN5QUlRUVZyUVh0TkJFQWdBQ0FEUVNocVFhUEZBeEFVSWdJZ0F5Z0NKQ2dDS0VFUWFoQW5JQUlRRHhwQkFBd0JDeUFES0FLUUFTQURRWkFCYWlBRExRQ2JBU0lDUVJoMFFSaDFRUUJJSWdrYklnUWdBeWdDbEFFZ0FpQUpHMm9oQ1NBRUlRSUNRQU5BSUFJZ0NVWU5BU0FDTFFBQVFlRUFheUlMUVJGTFFRRWdDM1JCdzRBSWNVVnlSUVJBSUFKQkFXb2hBZ3dCQ3dzRFFDQUVJQWxHRFFFZ0JDMEFBQ0VDSUFSQkFXb2hCQ0FDUWZjQWEwSC9BWEZCQkVrTkFBc2dBQ0FEUVNocVFkd25FQlFpQWlBREtBSWtLQUlvUVJCcUVDY2dBaEFQR2tFQURBRUxJQU1nQlRZQ1lBSkFJQWhCQVVZRVFDQURJQVlvQWhnaUFqWUNGQ0FIS0FJRVFiaXRFa2NOQVNBQUtBSUFJUUlnQXlBSEtBSWNOZ0lvSUFNZ0J5Z0NJRFlDU0NBRElBSWdBMEVVYWlBRFFTaHFJQU5CeUFCcUVLMEpJZ0kyQWhRTUFRc2dBQ2dDQUNFQ0lBTWdCaWdDR0RZQ0tDQURJQWcyQWtnZ0F5QUNJQU5CS0dvZ0EwSElBR29RbndJaUFqWUNGQ0FESUFBZ0JSRGpBallDWUFzZ0EwRUFPZ0JNSUFNZ0REWUNTQ0FEUVNocUlRY2pBRUV3YXlJRUpBQUNRQ0FGS0FJY0lnVkZCRUFnQjBFQk9nQUVJQWRCQURZQ0FBd0JDeUFES0FKSUlnZ29BZ1FpQ1VFQlJnUkFJQVVnQ0NnQ0FDZ0NBQ0FGS0FJQUtBSU1FUUVBSVFJZ0IwRUJPZ0FFSUFjZ0FqWUNBQXdCQ3lBRVFvQ0FnSURBQURjQ0pDQUVJQVJCRUdvaUJqWUNJQ0FHSUFrUTFnSWdCRUVnYWlFTVFRQWhCZ05BSUFZZ0NVY0VRQ0FFSUFVZ0NDZ0NBQ0FHUVFKMGFpZ0NBQ0FGS0FJQUtBSU1FUUVBTmdJc0lBWkJBV29oQmlBRVFSQnFJQVJCTEdvUWNRd0JDd3NnQUNnQ0NDRUZJQVFnRERZQ0NDQUVJQVJCRUdvaUJpQUVLQUlnUnpvQURDQUZJQUlnQkVFSWFoQTZJUUlnQjBFQk9nQUVJQWNnQWpZQ0FDQUdFRjRMSUFSQk1Hb2tBRUVBSUFjUU1BMEFHaUFBS0FJQUlRSWdBMEVvYWhBYUlRZ2dBaEFjSXdCQkVHc2lCU1FBSUFKQnFBRnFJZ1lvQWdRaEJBSkFJQVlvQWdoQkIycEJlSEVpQjBHeC93TnJRZjcvZTBzRVFDQUVJUUlNQVFzZ0JrR1FnQVJCRUJEWkFpSUNOZ0lFUVFBaEJ5QUNRUUEyQW9DQUJDQUVCRUFnQkNBQ05nS0FnQVFNQVFzZ0JpQUNOZ0lBQ3lBR0lBZEIwQUJxTmdJSUlBSWdCMm9oQnlBREtBSmdJUVFnQ0NnQ0FDRUlJQUJCakRScUtBSUFJUWtnQXlnQ0ZDRU1JQU1vQWlRaEN5QUZJQU5COEFCcUlnSkJFR28yQWdnZ0JTQUNLQUlRSUFKSE9nQU1JQU10QUJNaERTQURLQUlZSVE4akFFRWdheUlDSkFBZ0FpQU1OZ0lZSUFJZ0N6WUNIQ0FDSUFrMkFoUWdBaUFJTmdJUUlBSWdEVG9BQ3lBQ0lBODJBZ1FnQWlBRU5nSU1JQUlnQkNnQ0dEWUNBQ0FISUFJb0Fod2dBaWdDR0NBQ0tBSUFJQUlvQWhRZ0FpZ0NFQ0FDS0FJTUlBSXRBQXNnQWlnQ0JCQ0JIQ0lFUWJpV0VqWUNCQ0FFUWFpWEVqWUNBQ0FFUWZpV0VqWUNBQ0FFUVRCcUlnZENnSUNBZ01BQU53SVVJQWNnQnpZQ0VDQUhJQVZCQ0dvUXN4MGdBa0VnYWlRQUlBWWdCQ0lDRUNnZ0JpQUdLQUlZUVFGcU5nSVlJQVZCRUdva0FDQUNDeUVFSUFOQjhBQnFFRjRnQTBHUUFXb1FEeG9NQVFzZ0F4RDBIUXNMSUFOQm9BRnFKQUFnQkF3QkN5QUVRWUNCRWtZRVFDTUFRZUFBYXlJRUpBQWdCQ0FDTmdKY0FrQUNRQ0FBUWFnZGFpSUdJQUlvQWlnUXFnUWlBMFVOQUNBREtBSVVJUVVnQkVFQU5nSlVJQVJCQURZQ1VDQUVRUU0yQWt3Q1FBSkFBa0FDUUNBQ0tBSWtJZ2NPQXdBQ0FRSUxBa0FnQlVVZ0JTZ0NCRUc0clJKSGNrVUVRQ0FGS0FJWUVJUUJFSzBiQkVBZ0FDQUVRVEJxUVkzYUJCQVVJZ01nQWlnQ0tFRVFhaEFuSUFNUUR4b01CZ3NnQWlnQ0tDSUhLQUlFSVFnQ1FDQUhSU0FJUWNEL0VVZHlSUVJBSUFZZ0J5Z0NKQkNuQlJDRUFSQzBBdzBCQ3lBSFFRQWdDRUhBZ0JKR0d5SUhSUTBDSUFZZ0J5Z0NKQkNuQlJDRUFSQzBBMFVOQWdzZ0FDQUVRVEJxUWZ2RkFCQVVJZ01nQWlnQ0tFRVFhaEFuSUFNUUR4b01CUXNnQUNBRVFUQnFRWlBuQWhBVUlnTWdBaWdDS0VFUWFoQW5JQU1RRHhvTUJBc2dBQ2dDQUNFQ0lBUWdCU2dDR0RZQ01DQUVJQVVvQWh3MkFoZ2dCQ0FGS0FJZ05nSkFJQVFnQWlBRVFUQnFJQVJCR0dvZ0JFRkFheENTRVRZQ1dDQUVJQU1vQWhBMkFsUU1BZ3NnQlNnQ0JFSFlyQkpHUVFBZ0JSdEZCRUFnQkVGQWF5SURJQVlnQlJDbkFTQUVRUmhxSWdWQmhKVUpJQU1RTlNBRVFUQnFJZ1lnQlVIem1na1FMU0FBSUFZZ0FpZ0NLRUVRYWhBbklBWVFEeG9nQlJBUEdpQURFQThhREFNTElBQW9BZ0FoQWlBRUlBVW9BaGcyQWpBZ0JDQUZLQUljTmdJWUlBUWdCU2dDSURZQ1FDQUVJQUlnQkVFd2FpQUVRUmhxSUFSQlFHc1FyUWsyQWxnZ0JDQURLQUlRTmdKVURBRUxJQVJCTUdvZ0FDZ0NFQ0lHSUFjZ0JTQURLQUlZSUFKQkVHb2dCaWdDQUNnQ0RCRUtBQ0FFS0FJd0lnWkZEUUVnQkNBR05nSllJQVFvQWpRUWdRd0VRQ0FBSUFNZ0JDZ0NOQkNXQWlJRFJRMENDeUFBSUFNUTR3SWlBMFVOQVNBRUlBTW9BaGdpQWpZQ1RDQUNRUUZIRFFBZ0JDZ0NQQ0lGUVFGeElnZ2dCQ2dDT0NJQ2NnUkFJQUFnQlVFQmRXcEJDR29oQnlBSUJFQWdCeWdDQUNBQ2FpZ0NBQ0VDQ3lBREtBSWNJUVVnQkVFQk5nSVVJQVFnQlRZQ0RDQUVJQVJCREdvMkFoQWdCQ0FFS1FNUU53TUFJQVFnQkVFWWFpQUVFSmNDSWdWQkJHbzJBaWdnQkNBRklBVW9BZ1JIT2dBc0lBUkJRR3NpQ0NBSElBWWdCRUVvYWlBREtBSUlRUkJxSUFJUkNBQWdCUkNvQVNBSUVDdEZEUUlnQkNBRVFVQnJFQm9vQWdBMkFsQU1BUXNnQkVFRE5nSk1DeUFBS0FJQUlRSWdCQ0FETFFBb09nQXdJQUlRSENBQ1FhZ0JhaUlGSUFVUTh3VWdCQ2dDWENBRUtBSllJQVFvQWt3Z0FFR01OR29vQWdBZ0JDZ0NVQ0FFTFFBd0lBUW9BbFFRbkFVaUFoQW9JQVVnQlNnQ0dFRUJhallDR0NBQ0lBTXBBeUEzQXlBTUFRdEJBQ0VDQ3lBRVFlQUFhaVFBSUFJTUFRc2dCRUhvZ3hKSERRTWdDaUFBS0FJQUlnSVFoQXcyQWhBZ0NrRUROZ0xBQWlBS1FRQTJBdEFDSUFwQkFEb0E2QUlnQWhBY0lBSkJxQUZxSWdJZ0FoRHpCU0FLS0FJc0lBb29BaEFnQ2lnQ3dBSWdHU2dDQUVFQUlBb3RBT2dDUVFBUW5BVWlCQkFvSUFJZ0FpZ0NHRUVCYWpZQ0dDQUVDeUVFUVFBaEFpQUVSUTBFQWtBZ0JCRFpFQ0lGUlEwQUlBQW9Bc1FySWdORkRRQWdBQ2dDd0NzaEJpQUtJQU0yQWlBZ0NpQURFTndCTmdJa0lBb2dDaWtESURjRENDQUtRUWhxSVFrakFFSHdBR3NpQXlRQUFrQWdCU2dDR0NJSFJTQUdJQWRPY2cwQUlBTkJNR29pQ0NBRFFTQnFJQWtRK1FjaUQwR1U0QWtRTFNBRFFSQnFJZ2tnQmhDNEhDQURRVUJySWd3Z0NDQUpFRTRnQTBIUUFHb2lDeUFNUWVqY0NSQXRJQU1nQlNnQ0dCQzRIQ0FEUWVBQWFpSU5JQXNnQXhCT0lCWWdEU0FGS0FJSVFSQnFFQ2NnRFJBUEdpQURFQThhSUFzUUR4b2dEQkFQR2lBSkVBOGFJQWdRRHhvZ0R4QVBHaUFGS0FJTUlnaEZEUUFnQ0NnQ0NDSUlSUTBBSUFnb0FnUkJ1UElQUncwQUlBZ29BaVFvQWdSQm9Qa1JSdzBBSUJZZ0EwSGdBR3BCbjRBSkVCUWlDU0FJUVJCcUVJWUJJQWtRRHhvTElBTkI4QUJxSkFBZ0IwVWdCaUFIVG5KRkRRVUxJQUFvQWdBaUFoQWNJQUpCNUFGcUlBb29BaXdnQkJDNUFTQUVJUUlnQ2lnQ0xDSUVJQUZHRFFRZ0JVVU5BQ0FGS0FJY1JRMEFJQXBCQURZQ0dDQUtJQVEyQWhRZ0NpQVZOZ0lRSUFvZ0FDZ0NvRGhCQVdzMkFod2dDa0VRYWhDQ0RFVU5BQ0FGS0FJY0VQb0JJUUlnQ2tFUWFoQ0NEQ0VFQWtBZ0FrVUVRQ0FFS0FJQUtBSWtRUVJHRFFFTElBSkJBWE1nQ2tFUWFoQ0NEQ2dDQUNnQ0pFRUZSM0lOQVFzZ0NrRVFhaENDRENFQ0lBQW9BZ1FoQlNBQ0tBSUFLQUlzSVFRZ0NrS0FnSUNBZ0FRM0F2UUVJQW9nQ2tId0Ftb2lBallDOEFRZ0FrRUJFSkFNSUFvZ0NpZ0M5QVFpQTBFQmFqWUM5QVFnQ2lnQzhBUWdBMEVEZEdvaUEwRUFOZ0lFSUFNZ0JEWUNBQ0FLSUFJMkF1Z0NJQW9nQWpZQzRBSURRQUpBSUFvb0F2UUVJZ0lFUUNBS0lBSkJBV3NpQWpZQzlBUWdDaWdDOEFRZ0FrRURkR29pQWlnQ0JDRURJQW9nQWlnQ0FDSUNOZ0xjQWlBQ0VKTUlJZ0lFUUNBS0lBSTJBc0FDSXdCQkVHc2lBaVFBSUFKQkNHb2dHQ0FLUWNBQ2FoQ2hIU0FDS0FJSUdpQUNRUkJxSkFBTElBb29BdHdDSVFJZ0NpQUZOZ0xVQWlBS0lBcEIzQUpxTmdMUUFpQUNSUTBCSUFJb0FnUWlCRUhBL3hGR0JFQWdDa0hnQW1vZ0FpZ0NKQ0FDS0FJb0lBTkJBV29RalF3TUF3c2dCRUdBZ0JKR0JFQWdDa0hnQW1vZ0FpZ0NLQ0FDS0FJc0lBTkJBV29RalF3TUF3c2dCRUhBL2hGR0JFQWdDa0hvQW1vZ0FpZ0NLQ0FEUVFGcUVLMEZEQU1MSUFSQnVPNFBSZ1JBSUFJb0FrZ2lCaUFDS0FKTVFRSjBhaUVFSUFOQkFXb2hBZ05BSUFRZ0JrWU5CQ0FFUVFScklnUW9BZ0FoQXlBS0lBSTJBc1FDSUFvZ0F6WUN3QUlnQ2tId0Ftb2dDa0hBQW1vUStRVU1BQXNBQ3lBRVFjQ0FFa1lFUUNBS1FlZ0NhaUFDS0FJa0lBTkJBV29RclFVTUF3c2dCRUdBZ1JKSERRRWdDa0hvQW1vZ0FpZ0NLQ0FEUVFGcUVLMEZEQUlMSUFwQkFEWUM5QVFnQ2tId0Ftb2dDaWdDOEFRUU5nd0NDeUFLUWRBQ2FoQ09EQTBBQ3d0QkFDRUNJQXBCQURZQzlBUWdDa0h3QW1vZ0NpZ0M4QVFRTmd3REN5QUtRZkFDYWtHM213VkJoZ3hCQ0NBQUtBSUVFQmNpQUVFWWFrSGN5d1FRRGhvZ0FCQVlEQUVMSUFwQjhBSnFFSkllQzBFQUlRSUxJQXBCTUdvUWt3VWdDa0dBQldva0FDQUNDKzBFQWdwL0FuMGpBRUVRYXlJSkpBQWpBRUVRYXlJR0pBQWdBaWdDQUJEREF5RUVJQWtDZndKQUlBRW9BZ1FpQTBVTkFDQUJLQUlBQW44Z0EwRUJheUFFY1NBRGFTSUlRUUZORFFBYUlBUWdBeUFFU3cwQUdpQUVJQU53Q3lJSFFRSjBhaWdDQUNJRlJRMEFJQU5CQVdzaENpQUNLQUlBSVFzZ0NFRUJTeUVNQTBBZ0JTZ0NBQ0lGUlEwQklBUWdCU2dDQkNJSVJ3UkFBa0FnREVVRVFDQUlJQXB4SVFnTUFRc2dBeUFJU3cwQUlBZ2dBM0FoQ0FzZ0J5QUlSdzBDQ3lBRktBSUlJQXRIRFFBTFFRQU1BUXNnQmlBQklBUWdBaERERUFKQVFRQWdBeUFCS0FJTVFRRnFzeUlOSUFFcUFoQWlEaUFEczVSZUd3MEFJQUVnQXlBRFFRRnJjVUVBUnlBRFFRTkpjaUFEUVFGMGNpSUNBbjhnRFNBT2xZMGlEVU1BQUlCUFhTQU5Rd0FBQUFCZ2NRUkFJQTJwREFFTFFRQUxJZ2NnQWlBSFN4c1F3d0VnQVNnQ0JDSURJQU5CQVd0eFJRUkFJQU5CQVdzZ0JIRWhCd3dCQ3lBRElBUkxCRUFnQkNFSERBRUxJQVFnQTNBaEJ3c0NRQ0FIUVFKMElnUWdBU2dDQUdvb0FnQWlBa1VFUUNBR0tBSUFJQUVvQWdnMkFnQWdBU0FHS0FJQU5nSUlJQUVvQWdBZ0JHb2dBVUVJYWpZQ0FDQUdLQUlBSWdJb0FnQWlCRVVOQVNBRUtBSUVJUVVDUUNBRElBTkJBV3NpQkhGRkJFQWdCQ0FGY1NFRkRBRUxJQU1nQlVzTkFDQUZJQU53SVFVTElBRW9BZ0FnQlVFQ2RHb2dBallDQUF3QkN5QUdLQUlBSUFJb0FnQTJBZ0FnQWlBR0tBSUFOZ0lBQ3lBR0tBSUFJUVVnQmtFQU5nSUFJQUVnQVNnQ0RFRUJhallDRENBR0VJc0JRUUVMT2dBTUlBa2dCVFlDQ0NBR1FSQnFKQUFnQUNBSktBSUlOZ0lBSUFBZ0NTMEFERG9BQkNBSlFSQnFKQUFMUFFFRGZ5QUJLQUlvSWdJZ0FTZ0NMRUVDZEdvaEFRTkFJQUVnQWtZaUEwVUVRQ0FDS0FJQUlRUWdBa0VFYWlFQ0lBQWdCQkNxQlEwQkN3c2dBd3N6QVFGL0l3QkJFR3NpQXlRQUlBQW9BZ0FoQUNBRElBSTJBZ3dnQXlBQk5nSUlJQUFnQTBFSWFoRDVCU0FEUVJCcUpBQUxUQUVCZnlBQUtBSUlJZ0lnQUNnQ0RFOEVRQ0FBSUFBb0Fnd2lBa0VCZEVFQ0lBSWJFUEFRSUFBb0FnZ2hBZ3NnQUNBQ1FRRnFOZ0lJSUFBb0FnUWdBa0VDZEdvZ0FTZ0NBRFlDQUFzVUFDQUFRVHhxRUpVQklBQkJCR29Rc0FRZ0FBc0tBQ0FBUWZDRkVCQklDMHdCQVg4Z0FDZ0NSQ0lDSUFBb0FraFBCRUFnQUNBQUtBSklJZ0pCQVhSQkFpQUNHeEN4QkNBQUtBSkVJUUlMSUFBZ0FrRUJhallDUkNBQUtBSkFJQUpCQTNScUlBRXBBZ0EzQWdBTEtBQWdBRUVBTmdMMEFTQUFRUXdROHdRZ0FFRUFOZ0w4QVNBQUlBQW9Bb0FDUVFGcU5nS0FBZ3NTQUNBQVFlUUFRWjMvQTBGOFFRTVF5Z0VMVEFFQmZ5QUFLQUlFSWdJZ0FDZ0NDRThFUUNBQUlBQW9BZ2dpQWtFQmRFRUNJQUliRUtvU0lBQW9BZ1FoQWdzZ0FDQUNRUUZxTmdJRUlBQW9BZ0FnQWtFQ2RHb2dBU2dDQURZQ0FBc1RBQ0FBRUJ3Z0FFSEVBV29nQVNBQ0VLMFJDeDBBSUFFZ0FqWUNBQ0FCSUFBcEFnUTNBZ1FnQVNBQUtRSU1Od0lNQ3lVQkFYOUJGQkFWSWdJZ0FUWUNBQ0FDSUFBcEFnUTNBZ1FnQWlBQUtRSU1Od0lNSUFJTER3QWdBQ0FBS0FJQUtBSWtFUUFBQ3hFQUlBQWdBU0FCS0FJQUtBSWdFUUlBQ3hFQUlBQWdBU0FCS0FJQUtBSXNFUUlBQ3djQUlBQVFkQm9MRXdBZ0FDQUJRUUFnQUNnQ0FDZ0NKQkVFQUFzNUFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCQ1BBaUFBS0FJRUlBQXRBQXNRbUFGQkFuUnFFSUFES0FJQUlRQWdBVUVRYWlRQUlBQUxMUUVCZnlNQVFSQnJJZ0VrQUNBQlFRaHFJQUFRd1FNZ0FCQTdhaENBQXlnQ0FDRUFJQUZCRUdva0FDQUFDeFlBSUFBZ0FTQUNJQU1nQUNnQ0FDZ0NJQkVIQUJvTENRQWdBQ0FCT2dBTEN3NEFJQUFRdWhRRVFDQUFFQjhMQ3hBQUlBQkJJRVlnQUVFSmEwRUZTWElMa1FFQkFuOGdBQ0FCRUxvQklnRUVRQUpBSUFFdkFSNGlCRUV5UnlBRVFTdEhjUTBBSUFBZ0FTZ0NKQkJRUlEwQUlBSUNmZ0pBQWtBQ1FDQUJLQUlFSUFFb0FnQWlBR3RCQW5WQkJHc09BZ0FDQVFzZ0FEVUNEQXdDQzBISzhRWkIrS3NDUWVNSlFhM3lCaEFBQUFzZ0FDa0NEQXMzQXdCQkFTRURDeUFERHd0Qi9xZ0pRZmlyQWtIV0NVR3Q4Z1lRQUFBTExRRUNmd0pBSUFBZ0FSQzZBU0lEUlEwQUlBTXZBUjVCRjBjTkFDQUFJQUFnQVJEQkFSQy9BaUVDQ3lBQ0Mwc0JBWDhnQVVFTWFpQUNFUGNXSWdJdkFRSWlBeUFDTHdFQUlnSnFJQUV2QVJ4TEJFQkIvNzhCUVo2cEFrRXlRWUxHQVJBQUFBc2dBQ0FCS0FJQUlBSkJBblJxSUFOQkFSQ1JEZ3NIQUNBQVFRUnFDdzBBSUFBZ0FVSFlrU0FRend3TDdnWUJCSDhqQUVIUUFtc2lCQ1FBSUFFdkFSNGhCU0FFUVpBQmFpQUFJQUlRM1FFZ0JDZ0NsQUVoQXlBRUxRQ1JBU0VHQWtBZ0FDQUJJQUlReWcwaUFnMEFRUUFoQWlBR1JRMEFBa0FDUUFKQUlBTkJBV3NPQlFFQ0FnSUFBZ3NnQUVHQUFXcEI0U2tRYUEwQ0lBUkJrQUZxSWdNZ0FFRnlJQUVRRUNBRElBVVFnUUVRRGhvZ0EwSHp2QWtRRGhvZ0EwSG04QVVRRGhvZ0JDZ0N6QUloQWlBREVCRU1BZ3NnQUVHQUFXb2lCa0hoS1JCb1JRMEFJQVpCNGlrUWFBMEFJQVJCa0FGcUlnTWdBRUZ5SUFFUUVDQURRYWkvQ2hBT0dpQURRYUFSRUE0YUlBUW9Bc3dDSVFJZ0F4QVJEQUVMSUFBb0FnQW9BZ0FRUjBVTkFDQURRUVpOUVFCQkFTQURkRUhlQUhFYlJRUkFJQVJCa0FGcUlnTWdBRUZ5SUFFUUVDQUVRWUFCYWlJQklBQkJuaVFRTnlBRElBRVFFaG9nQXlBRkVJRUJFQTRhSUFOQjJ1QUNFQTRhSUFRb0Fzd0NJUUlnQVJBUEdpQURFQkVNQVFzZ0FDZ0NBQ2dDQUVFQlJ5QURRUU5IY2tVRVFDQUFRWUFCYWlJRFFjY2lFR2dOQVNBRFFjOGlFR2dOQVNBRVFaQUJhaUlESUFCQmNpQUJFQkFnQkVHQUFXb2lBU0FBUWRVMkVEY2dBeUFCRUJJYUlBTWdCUkNCQVJBT0dpQURRZWYxQkJBT0dpQUVLQUxNQWlFQ0lBRVFEeG9nQXhBUkRBRUxBa0FDUUNBRFFRSnJEZ1VCQWdJQ0FBSUxJQVJCa0FGcUlnTWdBRUdnSkJBM0lBQWdBU2dDT0NnQ0FCQ2ZBU0VGSUFSQjJBQnFJQU1RVkNFQVFSQVFGU0lCUWFTUUlEWUNBQ0FCSUFBcEFnQTNBZ1FnQVNBQUtBSUlOZ0lNSUFBUVZTQUVJQUUyQW5nZ0JVR2dBMm9nQkVIb0FHb2lBUkROQVNBQkVCWWdBQkFQR2lBREVBOGFEQUVMSUFSQmtBRnFJZ01nQUVHWk9SQTNJQUFnQVNnQ09DZ0NBQkNmQVNFR0lBUkJNR29nQXhCVUlRTkJFQkFWSWdWQnlKQWdOZ0lBSUFVZ0F5a0NBRGNDQkNBRklBTW9BZ2cyQWd3Z0F4QlZJQVFnQlRZQ1VDQUdRYUFEYWlBRVFVQnJJZ1VRelFFZ0JSQVdJQU1RRHhvZ0FDZ0NsQU5CQVVZRVFDQUVRWUFCYWlJRElBQkJtRGtRTnlBRVFaQUJhaUlGSUFNUW5nRWdBeEFQR2lBQUlBRW9BamdvQWdBUW53RWhBeUFFUVFocUlBVVFWQ0VBUVJBUUZTSUJRZXlRSURZQ0FDQUJJQUFwQWdBM0FnUWdBU0FBS0FJSU5nSU1JQUFRVlNBRUlBRTJBaWdnQTBHZ0Eyb2dCRUVZYWlJQkVNMEJJQUVRRmlBQUVBOGFDeUFFUVpBQmFoQVBHZ3NnQkVIUUFtb2tBQ0FDQ3hzQUlBQWdBaUFCRUNBaUFDZ0NBRUVJYWlBQUtBSUVFSUFMR2d1WkFRRUJmeU1BUVNCcklnSWtBQ0FBSUFGSEJFQWdBQkRLQkNBQ0lBQW9BaGcyQWhnZ0FpQUFLUUlRTndNUUlBSWdBQ2tDQ0RjRENDQUNJQUFwQWdBM0F3QWdBQ0FCS0FJWU5nSVlJQUFnQVNrQ0VEY0NFQ0FBSUFFcEFnZzNBZ2dnQUNBQktRSUFOd0lBSUFFZ0FpZ0NHRFlDR0NBQklBSXBBeEEzQWhBZ0FTQUNLUU1JTndJSUlBRWdBaWtEQURjQ0FBc2dBa0VnYWlRQUMwZ0JBbjhqQUVFUWF5SUZKQUFnQlVFQU5nSU1JQUFvQWdBZ0FTQUNJQVZCREdvUXZRTWlCa1VFUUNBQUlBRWdBaUFESUFRZ0JTZ0NEQkQzRFNFR0N5QUZRUkJxSkFBZ0JndFVBUU4vUVFFaEFnSkFJQUFvQWhBaUF5QUJLQUlRSWdSSURRQWdBeUFFU2dSQVFRQVBDeUFBS0FJQUlnTWdBU2dDQUNJRVNRMEFRUUFoQWlBRElBUkxEUUFnQUVFRWFpQUJRUVJxRVB3TklRSUxJQUlMR2dFQmZ5QUFMd0VlUVF4R0JIOGdBQ2dDSUJDd0J3VkJBQXNMSXdBZ0FFSEVBR29RTWhvZ0FFRTRhaEF5R2lBQVFSeHFFRElhSUFCQkVHb1FNaG9MTXdFQmZ5QUJRWUNBZ0lBRVR3UkFFQUVBQ3lBQUlBRVFsd01pQWpZQ0FDQUFJQUkyQWdRZ0FDQUNJQUZCQW5ScU5nSUlDMFFCQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lNQWtBZ0FTQURRUXhxRU93QklnRkZCRUFnQUNBREtBSU1FSXdFREFFTElBQWdBVUVNYWhCVUdnc2dBMEVRYWlRQUN4QUFJQUJCQjBZZ0FFRjljVUVJUm5JTFBnQWdBQkRPQVNJQUlBRW9BZ2cyQXBBQklBQWdBU2tDQURjQ2lBRWdBRUdZQVdvZ0FoRFJBUm9nQUVHd0FXb2dBeEJVR2lBQUlBUTJBcndCSUFBTFlBRUNmeU1BUVRCcklnTWtBQ0FEUWdBM0F5QWdBeUFCS0FJd05nSW9JQUVvQWhBaEJDQURRUkJxUWR6NERCQVVJUUVnQXlBREtBSW9OZ0lJSUFNZ0F5a0RJRGNEQUNBQUlBTWdCQ0FCSUFJUTBnVWFJQUVRRHhvZ0EwRXdhaVFBQzBNQkFYOGdBRUVFYWlFQUlBRW9BZ0FoQVFOL0lBQW9BZ0FpQUVVRVFFRUFEd3NnQVNBQUtBSVFJZ0pKRFFBZ0FTQUNUUVIvUVFFRklBQkJCR29oQUF3QkN3c0xtZ0VCQkg4akFFRVFheUlFSkFBakFFRVFheUlESkFBZ0JDQUJJQU5CREdvZ0FoQ3RCaUlHS0FJQUlnVUVmMEVBQlVFVUVCVWhCU0FESUFGQkJHbzJBZ1FnQlNBQ0tBSUFOZ0lRSUFOQkFUb0FDQ0FCSUFNb0Fnd2dCaUFGRVBnQ0lBTkJBRFlDQUNBREVJc0JRUUVMT2dBTUlBUWdCVFlDQ0NBRFFSQnFKQUFnQUNBRUtBSUlOZ0lBSUFBZ0JDMEFERG9BQkNBRVFSQnFKQUFMQndBZ0FFRUlhZ3NWQUNBQVFiamtFallDQUNBQVFRUnFFS1FDSUFBTElnRUJmeU1BUVJCcklnSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDQUNLQUlJUmdzSkFDQUFRVFFRdnhJTEZnQWdBQ2dDQUFSQUlBQVE5QmdnQUNnQ0FCQWZDd3VuRlFJT2Z3SjlJd0JCZ0FOcklnTWtBQ0FESUFJMkF2d0NBa0FnQVMwQWxBTkZCRUFnQUJCbkdnd0JDeUFDSUFFb0F1Z05SZ1JBSUFOQm9BRnFJQUVnQVVIMERXb29BZ0FRMndVZ0EwSHdBbW9nQVNBQlFmZ05haWdDQUJEYkJTQURRZWdDYWlBQklBRkIvQTFxS0FJQUVOc0ZJQUZCa0FOcUlBTW9BcUFCUVFNUS93SWhBaUFEUVFBMkFwQUJJQU5DQURjRGlBRWdBMElBTndPQUFTQUNJQUZCSUdvaUFSRDZDQ0VFSUFOQkF6WUMzQUlnQXlBRU5nTGdBaUFESUFOQjRBRnFOZ0xZQWlBRElBTXBBOWdDTndNQUlBTWdBeWdDcEFFMkF1QUJJQU1nQXlnQzlBSTJBdVFCSUFNZ0F5Z0M3QUkyQXVnQklBQWdBaUFCSUFOQmdBRnFJQU5CNEFKcUlBTkJzQUZxSUFNUThnWWlBQkRRR1JCcEdpQUFFS3dEREFFTElBSWdBVUgwRFdvb0FnQkdCRUFnQTBFQU5nTFFBaUFEUWdBM0E4Z0NJQU5DQURjRHdBSWdBU0FCUWZBTmFpSUNLQUlBUVFBUWhRRWhCQ0FCS0FLNEJTRUdJQUVvQXJ3RklBSW9BZ0FRNlFFaEFpQUJRWUFPYWlnQ0FDRUZJQU5CQVRZQ3ZBSWdBeUFGTmdLQUFTQURJQU5CZ0FGcU5nSzRBaUFESUFNcEE3Z0NOd01nSUFZZ0FpQURRYkFCYWlBRFFTQnFFT2NESWdJUTRnb2hCaUFESUFNb0F0QUNOZ0lZSUFNZ0F5a0R5QUkzQXhBZ0F5QURLUVBBQWpjRENDQUFJQUVnQTBFSWFpQUVJQVlROXdvZ0FoQXlHZ3dCQ3lBQ0lBRkIrQTFxS0FJQVJnUkFJQU5CQURZQ3NBSWdBMElBTndPb0FpQURRZ0EzQTZBQ0lBRWdBVUh3RFdvaUFpZ0NBRUVBRUlVQklRUWdBU2dDdUFVaEJpQUJLQUs4QlNBQ0tBSUFFT2tCSVFJZ0FVR0VEbW9vQWdBaEJTQURRUUUyQXB3Q0lBTWdCVFlDZ0FFZ0F5QURRWUFCYWpZQ21BSWdBeUFES1FPWUFqY0RRQ0FHSUFJZ0EwR3dBV29nQTBGQWF4RG5BeUlDRU9JS0lRWWdBeUFES0FLd0FqWUNPQ0FESUFNcEE2Z0NOd013SUFNZ0F5a0RvQUkzQXlnZ0FDQUJJQU5CS0dvZ0JDQUdFUGNLSUFJUU1ob01BUXNnQWlBQlFmd05haWdDQUVZRVFDQURRUUEyQXBBQ0lBTkNBRGNEaUFJZ0EwSUFOd09BQWlBQklBRkI4QTFxSWdJb0FnQkJBQkNGQVNFRUlBRW9BcmdGSVFZZ0FTZ0N2QVVnQWlnQ0FCRHBBU0VDSUFGQmlBNXFLQUlBSVFVZ0EwRUJOZ0w4QVNBRElBVTJBb0FCSUFNZ0EwR0FBV28yQXZnQklBTWdBeWtEK0FFM0EyQWdCaUFDSUFOQnNBRnFJQU5CNEFCcUVPY0RJZ0lRNGdvaEJpQURJQU1vQXBBQ05nSllJQU1nQXlrRGlBSTNBMUFnQXlBREtRT0FBamNEU0NBQUlBRWdBMEhJQUdvZ0JDQUdFUGNLSUFJUU1ob01BUXNnQVNnQ3RBVWdBaENVQVNJRVJRUkFJQUZCQURvQWxBTWdBVUdvQkdwQnlNTUxFQmtnQTBIOEFtb1FMMEhIeXdJUUdSb2dBQkJuR2d3QkN5QURRZUFCYWlBQklBUVFsUmtnQVNBRUVIcEJBQkNGQVNJS1JRUkFJQUFRWnhvTUFRc0NRQUpBQWtBQ1FBSkFBa0FnQkNnQ0ZDSUdRU2xyRGd3Q0FnSURCUUVGQlFVRkJBUUFDeUFHUVFGSERRUUxJQUFnQ2lBQklBb1Frd1FRYVJvTUJBc2dBU2dDdUFVZ0FoQ1NCU0lDUlFSQUlBRkJBRG9BbEFNZ0FVR29CR3BCeU1NTEVCa2dBMEg4QW1vUUwwRzcxUUFRR1JvZ0FCQm5HZ3dFQ3lBRElBTW9BdkFCTmdKNElBTWdBeWtENkFFM0EzQWdBeUFES1FQZ0FUY0RhQ0FBSUFFZ0EwSG9BR29nQ2lBQ0VQY0tEQU1MSUFGQjdBWnFJZ1lnQTBIOEFtb1E3QUVpQWdSQUlBQWdDaUFCUVNCcUlBSkJER29RMmdRUWFSb01Bd3NnQTBLQWdJQ0FnQUUzQXRRQklBTWdBMEd3QVdvaUFqWUMwQUVnQXlBQ05nS0lBU0FESUFFMkFvUUJJQU5CNk9FU05nS0FBU0FESUFOQmdBRnFJZ0kyQXBBQklBUWdBaER3RGlFRUlBSVFGZ0pBSUFSRkJFQWdBQkJuR2d3QkN5QURJQW9nQVVFZ2FpSUxJQW9vQWdBb0FnZ1JBUUEyQW9BQklBTWdDeUFEUWVBQmFpQURRWUFCYWlBRFFiQUJhaENWQkNJT05nTG9BaUFCS0FLMEJTSUNJUVFnQWlBREtBTDhBaERtRnlFQ0l3QkJJR3NpQlNRQUlBVkJBRFlDSENBRlFZanhFallDQUNBRklBVTJBaEFnQlNBRlFSeHFOZ0lFSXdCQklHc2lCeVFBSUFjZ0JUWUNEQ0FIUWNEd0VqWUNDQ0FISUFkQkNHb2lERFlDR0FKQUFrQWdBa1VOQUNBQ0xRQVpSUTBCSUFRZ0FoQmdFT1lYSUFKSERRQWdBaTBBR1VVTkFTQUVRUmhxSVE4Z0JDQUNFT2dYSVFRRFFDQUVJQTlHRFFJZ0JDZ0NFQ0FDUncwQ0lBUW9BaFFoQ1VFQUlRZ0RRQ0FKS0FJa0lBa29BaUJyUVJ4dElBaEhCRUFDUUNBSklBZ1F2dzRpRFNnQ0FDSVFRUU5HRFFBZ0VCREdDa1VOQUNBQ0VHQWdEU2dDR0NJUUlBMUJER29nRUJzb0FnQW9BZ0JIRFFBZ0RDQUpJQWdRNVJjTkFBd0ZDeUFJUVFGcUlRZ01BUXNMSUFRUVRDRUVEQUFMQUF0QjdiZ0pRZGFqQWtHWEFVSCs1UU1RQUFBTElBd1FGaUFIUVNCcUpBQWdCUkFXSUFVb0Fod2hBaUFGUVNCcUpBQWdBa0VCUmdSQUlBQWdDaUFPRUdrYURBRUxJQU5Cb0FGcUlBRkJ5QVJxSUFNb0F2d0NFSk1DRUZRaURDRUNJd0JCTUdzaUFTUUFJQUZDZ0lDQWdNQUFOd0lrSUFFZ0FVRVFhaUlFTmdJZ0lBRkJBRFlDQ0NBQklBTW9BdWdDTmdJTUlBRWdDeUFDRU9jRk5nSUVJQXNnQzBIWUFtb2dBVUVFYWlBQlFRaHFJZ0lnQWtFRWNpQUVFUGNhSVFRZ0FoQzhCeUFCUVRCcUpBQWdDeER5QWlBRUVJRUxJQVFvQWlRaEFTQURJQU1vQXZ3Q05nS0FBU0FEUVlBQmFpSU5RUVJ5SUFGQkpHb1FWaG9qQUVFUWF5SUpKQUJCQUNFQ0l3QkJFR3NpQnlRQUlBMG9BZ0FoQVNBSkFuOENRQ0FHS0FJRUlnUkZEUUFnQmlnQ0FBSi9JQVJCQVdzZ0FYRWdCR2tpQ0VFQlRRMEFHaUFCSUFFZ0JFa05BQm9nQVNBRWNBc2lBa0VDZEdvb0FnQWlCVVVOQUNBRVFRRnJJUTRnQ0VFQlN5RVBBMEFnQlNnQ0FDSUZSUTBCSUFFZ0JTZ0NCQ0lJUndSQUFrQWdEMFVFUUNBSUlBNXhJUWdNQVFzZ0JDQUlTdzBBSUFnZ0JIQWhDQXNnQWlBSVJ3MENDeUFGS0FJSUlBRkhEUUFMUVFBTUFRdEJLQkFWSVFVZ0J5QUdRUWhxTmdJRUlBY2dCVFlDQUNBRlFRaHFJQTBRaFFrYUlBZEJBVG9BQ0NBRlFRQTJBZ0FnQlNBQk5nSUVBa0JCQUNBRUlBWW9BZ3hCQVdxekloRWdCaW9DRUNJU0lBU3psRjRiRFFBZ0JpQUVJQVJCQVd0eFFRQkhJQVJCQTBseUlBUkJBWFJ5SWdJQ2Z5QVJJQktWalNJUlF3QUFnRTlkSUJGREFBQUFBR0J4QkVBZ0Vha01BUXRCQUFzaUJDQUNJQVJMR3hEREFTQUdLQUlFSWdRZ0JFRUJhM0ZGQkVBZ0JFRUJheUFCY1NFQ0RBRUxJQUVnQkVrRVFDQUJJUUlNQVFzZ0FTQUVjQ0VDQ3dKQUlBSkJBblFpQWlBR0tBSUFhaWdDQUNJQlJRUkFJQWNvQWdBZ0JpZ0NDRFlDQUNBR0lBY29BZ0EyQWdnZ0JpZ0NBQ0FDYWlBR1FRaHFOZ0lBSUFjb0FnQWlBU2dDQUNJQ1JRMEJJQUlvQWdRaEJRSkFJQVFnQkVFQmF5SUNjVVVFUUNBQ0lBVnhJUVVNQVFzZ0JDQUZTdzBBSUFVZ0JIQWhCUXNnQmlnQ0FDQUZRUUowYWlBQk5nSUFEQUVMSUFjb0FnQWdBU2dDQURZQ0FDQUJJQWNvQWdBMkFnQUxJQWNvQWdBaEJTQUhRUUEyQWdBZ0JpQUdLQUlNUVFGcU5nSU1JQWNRZ0FsQkFRczZBQXdnQ1NBRk5nSUlJQWRCRUdva0FDQURJQWtvQWdnMkF2QUNJQU1nQ1MwQUREb0E5QUlnQ1VFUWFpUUFJQUFnQ2lBTElBd1EwZ0lRYVJvZ0RCQVBHZ3NnQTBHd0FXb1FJd3dDQ3lBQlFRQTZBSlFESUFGQnFBUnFRYm5kQXhBWkdpQUFFR2NhREFFTElBRkJBRG9BbEFNZ0FVR29CR3BCejRVS0VCa2hBaUFEUWJBQmFpSUJJQVFRV0NBQ0lBRVFUUm9nQVJBUEdpQUFFR2NhQ3lBRFFZQURhaVFBQ3hRQUlBQkJBRFlDaEFFZ0FDQUFLQUtBQVJBMkN3b0FJQUJCNk9vUEVFZ0xyQUVCQVg4akFFRXdheUlISkFBZ0J5QUNOZ0lvSUFjZ0FUWUNMQ0FISUFNMkFpUWdCeUFFTmdJZ0lBY2dCVFlDSENBSElBWTJBaGdnQnlBQUtBSUFJZ0VnQjBFc2FpQUhRU2hxRU1jRE5nSVFJQWNnQUNnQ0FDQUhRU1JxSUFkQklHb1F4d00yQWd3Z0J5QUJJQWRCRUdvZ0IwRU1haERLR1RZQ0ZDQUhJQUFvQWdBZ0IwRWNhaUFIUVJocUVNY0ROZ0lJSUFFZ0IwRVVhaUFIUVFocUVPVUlJUUFnQjBFd2FpUUFJQUFMQ3dBZ0FDQUJRUU1RMEJJTHJBRUJBWDhqQUVFd2F5SUhKQUFnQnlBQ05nSW9JQWNnQVRZQ0xDQUhJQU0yQWlRZ0J5QUVOZ0lnSUFjZ0JUWUNIQ0FISUFZMkFoZ2dCeUFBS0FJQUlnRWdCMEVzYWlBSFFTaHFFTWNETmdJUUlBY2dBQ2dDQUNBSFFTUnFJQWRCSUdvUXh3TTJBZ3dnQnlBQklBZEJFR29nQjBFTWFoRGxDRFlDRkNBSElBQW9BZ0FnQjBFY2FpQUhRUmhxRU1jRE5nSUlJQUVnQjBFVWFpQUhRUWhxRU1vWklRQWdCMEV3YWlRQUlBQUxpZ0VCQVg4akFFRWdheUlDSkFBZ0FpQUJOZ0ljQW44Z0FVRUVUd1JBSUFBb0Fod2lBQ2dDQUVFQU9nQUFJQUJCLzVJS0VCa2hBQ0FDUVFNMkFnQWdBQ0FDRUM5QjdiVU1FQmtnQWtFY2FoQXZHa0VBREFFTElBSkJvTmNTS1FNQU53TUFJQUpCcU5jU0tRTUFOd01JSUFBb0FnZ2dBaUFCUVFKMGFoQ3hEd3NoQVNBQ1FTQnFKQUFnQVF0U0FRSi9JQUFvQWdnaEFDTUFRUkJySWdRa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdVMkFnd2dCQ0FGTmdJSUlBQkJqQUZxSUFCQkNHb2dCRUVJYWlBQklBSWdBeERjR2lFQUlBUkJFR29rQUNBQUN5RUFJQUJDZ0lDQWdJQUJOd0lrSUFBZ0FEWUNJQ0FBSUFGQklHb1F2UmtnQUF1QUFRRUNmeU1BUVJCcklnUWtBQ0FFSUFBZ0FTQUNFSzBQTmdJTUl3QkJFR3NpQWlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQXpZQ0RDQUNJQU0yQWdnZ0FFR01BV29pQXlBREVMOEJJQUFvQWdnZ0FpZ0NDQ0FCSUFRb0Fnd1FsQkVpQUJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FDUVJCcUpBQWdCRUVRYWlRQUlBQUxWUUVCZnlNQVFiQUJheUlESkFBZ0FDQUJJQUlRblJvZ0FTQUFFSjRQUlFSQUlBTkJvWjBGUWZBQlFRY2dBMEdnQVdvUUhTSUFFQmNpQVVFWWFrR1YwUWdRRGhvZ0FSQVlJQUFRSGdzZ0EwR3dBV29rQUFzd0FRRi9Ba0FnQUNnQ0NDQUJLQUlJUncwQUlBQW9BZ3dnQVNnQ0RFY05BQ0FBS0FJUUlBRW9BaEJHSVFJTElBSUxEd0FnQUNBQVFkZ0NhaUFCRUswUEM2NEJBUVIvSUFFZ0FDZ0NhRXNFUUNBQUtBSmdJUU1nQUNBQkVLd2JBMEFnQUNnQ1pDQUNUUVJBSUFBZ0F4QTJCU0FDUVFSMElnUWdBQ2dDWUdvaUJTQURJQVJxSWdRcEFnQTNBZ0FnQlNBRUtRSUlOd0lJSUFKQkFXb2hBZ3dCQ3dzTElBQW9BbVFpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHQkVBZ0FDQUJOZ0prQlNBQUtBSmdJQUpCQkhScUlnTkNBRGNDQ0NBRFFRQTZBQVFnQTBFQU9nQUFJQUpCQVdvaEFnd0JDd3NMUWdFQmZpQUJLUU1BSVFJakFFRVFheUlCSkFBZ0FTQUNOd01JSUFGQkFEWUNCQ0FBSUFCQjJBSnFJQUZCQ0dvZ0FVRUVhaENDQ1NFQUlBRkJFR29rQUNBQUN5UUFJQUJCQURZQ1pDQUFRUVlRNkFVZ0FFRUFOZ0pzSUFBZ0FDZ0NjRUVCYWpZQ2NBdFBBUUYvSUFFb0FoQWlBa1VFUUNBQVFRQTJBaEFnQUE4TElBRWdBa1lFUUNBQUlBQTJBaEFnQVNnQ0VDSUJJQUFnQVNnQ0FDZ0NEQkVDQUNBQUR3c2dBQ0FDTmdJUUlBRkJBRFlDRUNBQUM0VUJBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNDQ0FFSUFFMkFnd2dCQ0FETmdJRUlBQWdCQ2dDRENBRUtBSUlJQVFvQWdRUS9oc2lBRUdRbUJJMkFnUWdBRUg0bUJJMkFnQWdBQ0lCUWRpWUVqWUNBQ0FCUVRocUlnQkNBRGNDckFJZ0FFS0FnSUNBNEFBM0FxUUNJQUFnQURZQ29BSWdBRUVHRVBnUElBUkJFR29rQUNBQkN6TUFJQUFRaUE0Z0FDQUJLQUlBTmdJQUlBQWdBU2dDQkRZQ0JDQUFJQUVvQWdnMkFnZ2dBVUVBTmdJSUlBRkNBRGNDQUFzWEFDQUFLQUlBRVBJQ0lBQWdBQ2dDQkJET0JCQ1JHUXY3QkFJSWZ3SitJd0JCd0FGcklnUWtBQ0FCS0FKOElBRW9Bb1FCSWdWQmxnRnNRWllCYWtIa0FHNUpCRUFnQVNBRlFRRjBRUUpxRU9VTEN5QUVRYmdCYWlBQklBSVFtZ2tnQVNnQ2ZDSUtRUUZySVFzZ0FpZ0NBQ0VISUFFb0FuZ2hDU0FFS0FLOEFTRUlJQVFvQXJnQklRWkJBQ0VDQWtBRFFDQUNJQXBIQkVBZ0NTQUdRUlJzYWlJRkxRQUlSUVJBSUFNb0FnQWhBeUFGUVFFNkFBZ2dCU0FETmdJRUlBVWdCellDQUNBSklBWkJGR3hxSWdNZ0FqWUNFQ0FESUFnMkFnd2dBU0FCS0FLRUFVRUJhallDaEFFZ0FTQUJLQUtJQVVFQmFqWUNpQUVnQUNBRlFRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBVW9BZ3dnQ0VjTkFDQUhJQVVvQWdCSERRQWdCU0FES0FJQU5nSUVJQVVnQnpZQ0FDQUJJQUVvQW9nQlFRRnFOZ0tJQVNBQUlBVkJCR28yQWdRZ0FFRUJOZ0lBREFNTElBSWdCU2dDRUVzRVFDQURLQUlBSVFNZ0JFRUJPZ0NvQVNBRUlBSTJBckFCSUFRZ0F6WUNwQUVnQkNBSE5nS2dBU0FFSUFnMkFxd0JJQVFnQWpZQ0VDQUVJQVFwQTZnQklndzNBd2dnQkNBRUtRT2dBU0lOTndNQUlBUWdCU2dDRURZQ3NBRWdCQ0FGS1FJSU53T29BU0FFSUFVcEFnQTNBNkFCSUFVZ0FqWUNFQ0FGSUEwM0FnQWdCU0FNTndJSUlBUWdCQ2dDc0FGQkFXbzJBckFCSUFFZ0JrRUJhaUFCS0FKOGNDQUVRYUFCYWhEa0N5QUJJQUVvQW9RQlFRRnFOZ0tFQVNBQklBRW9Bb2dCUVFGcU5nS0lBU0FBSUFWQkJHbzJBZ1FnQUVFQU5nSUFEQU1GSUFaQkFXcEJBQ0FHSUF0SEd5RUdJQUpCQVdvaEFnd0NDd0FMQ3lBRVFZYTFBMEhyQTBFT0lBUkJvQUZxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBQkNBRGNDQUNBQkVCNExJQVJCd0FGcUpBQUxZQUVCZnlBQUtBSUVJZ0lFUUNBQ0tBSUFJQUVRVjBFQlFRRkIxWjRJUWRDbkEwSHdBQkJMQ3lBQUlBRVF6UU1pQVVVRVFFRUFEd3NnQUNBQkVJUUNJUUVnQUNnQ0FDZ0NDQ0FCRUZkQkFVRUJRYUdiQ0VIUXB3TkI5QUFRU3lBQkN4SUFJQUJCOEFKQmtmMERRWGhCQnhES0FRdWVCd0VFZnlBQVFvQ0FnSUFnTndJTUlBQWdBRFlDQ0NNQVFUQnJJZ01rQUNBQUlBSW9BZ3dRdHdjZ0EwRUFOZ0lvSUFNZ0FqWUNKQ0FESUFGQnlDQnFOZ0lnSUFNZ0FVSGNnQUZxS0FJQVFRRnJOZ0lzQWtBZ0EwRWdhaEMxQVFSQUlBTkJJR29RV2lJRktBTFlBU0lFSUFVb0F0d0JRUmhzYWlFRkEwQWdCQ0FGUmdSQUlBSW9BZ2dpQlNBQ0tBSU1RUUowYWlFQ0EwQWdBaUFGUmdSQUlBTkJJR29RV2lJQ0tBTElBaUlFSUFJb0Fzd0NRUmhzYWlFQ0EwQWdBaUFFUmcwR0lBTWdBU0FFRUdZUWhBSTJBaEFnQUNBRFFSQnFFTElESUFSQkdHb2hCQXdBQ3dBTElBTWdBMEVnYWhCYUlnUkIyQUpxTmdJUUlBVW9BZ0FoQmlBRFFRQTJBaGdnQXlBR05nSVVJQU1nQkVHY0NXb29BZ0JCQVdzMkFod0NRQ0FEUVJCcUVMUUJSUTBBSUFOQkVHb1FyQUVpQmlnQ1lDSUVJQVlvQW1SQkdHeHFJUVlEUUNBRUlBWkdEUUVnQXlBQklBUVFaaENFQWpZQ0RDQUFJQU5CREdvUXNnTWdCRUVZYWlFRURBQUxBQXNnQTBFZ2FoQmFJUVFnQXlBRktBSUFOZ0lRSUFRZ0EwRVFhaERHQTBVRVFDQURJQUVnQlNnQ0FCRHdCVFlDRUNBQUlBTkJFR29Rc2dNTElBTWdBMEVnYWhCYUlnUkJvQWxxTmdJUUlBVW9BZ0FoQmlBRFFRQTJBaGdnQXlBR05nSVVJQU1nQkVIa0Qyb29BZ0JCQVdzMkFod0NRQ0FEUVJCcUVMUUJSUTBBSUFOQkVHb1FyQUVpQmlnQ1lDSUVJQVlvQW1SQkdHeHFJUVlEUUNBRUlBWkdEUUVnQXlBQklBUVFaaENFQWpZQ0RDQUFJQU5CREdvUXNnTWdCRUVZYWlFRURBQUxBQXNnQlVFRWFpRUZEQUFMQUFVZ0F5QUJJQVFRWmhDRUFqWUNFQ0FBSUFOQkVHb1FzZ01nQkVFWWFpRUVEQUVMQUFzQUN5QUNLQUlJSWdVZ0FpZ0NERUVDZEdvaEFnTkFJQUlnQlVZRVFDQURRU0JxRUxVQlJRMENJQU5CSUdvUVdpSUNLQUxJQWlJRUlBSW9Bc3dDUVJoc2FpRUNBMEFnQWlBRVJnMERJQU1nQVNBRUVHWVFoQUkyQWhBZ0FDQURRUkJxRUxJRElBUkJHR29oQkF3QUN3QUZJQU1nQVNBRktBSUFFUEFGTmdJUUlBQWdBMEVRYWhDeUF3SkFJQU5CSUdvUXRRRkZEUUFnQXlBRFFTQnFFRm9pQkVHZ0NXbzJBaEFnQlNnQ0FDRUdJQU5CQURZQ0dDQURJQVkyQWhRZ0F5QUVRZVFQYWlnQ0FFRUJhellDSENBRFFSQnFFTFFCUlEwQUlBTkJFR29RckFFaUJpZ0NZQ0lFSUFZb0FtUkJHR3hxSVFZRFFDQUVJQVpHRFFFZ0F5QUJJQVFRWmhDRUFqWUNEQ0FBSUFOQkRHb1FzZ01nQkVFWWFpRUVEQUFMQUFzZ0JVRUVhaUVGREFFTEFBc0FDeUFEUVRCcUpBQUxFUUFnQUVFd1FkSC9BMEY0UVFjUXlnRUx2d0VCQm44akFFRVFheUVFSUFBb0FtUWlCa0VCYXlFSEFrQURRQ0FGSUFaR0RRRWdBQ2dDWUNBQlFRUjBhaUlETFFBRUJFQWdBaUFDS0FJTUlnZ2dBeWdDREVzRWZ5QUVJQU1wQWdnM0F3Z2dCQ0FES1FJQU53TUFJQU1nQWlrQ0NEY0NDQ0FESUFJcEFnQTNBZ0FnQWlBRUtRTUlOd0lJSUFJZ0JDa0RBRGNDQUNBQ0tBSU1CU0FJQzBFQmFqWUNEQ0FCUVFGcVFRQWdBU0FIUnhzaEFTQUZRUUZxSVFVTUFRc0xJQU1nQWlrQ0FEY0NBQ0FESUFJcEFnZzNBZ2dMQ3c0QUlBQVFIQ0FBUVJCcUVNSWRDeWtCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFUWl4NGdBaTBBQ0NFQUlBSkJFR29rQUNBQUMrb0VBZ3AvQW4wakFFRVFheUlKSkFBakFFRVFheUlHSkFBZ0FoRDBBeUVFSUFrQ2Z3SkFJQUVvQWdRaUEwVU5BQ0FCS0FJQUFuOGdBMEVCYXlBRWNTQURhU0lJUVFGTkRRQWFJQVFnQXlBRVN3MEFHaUFFSUFOd0N5SUhRUUowYWlnQ0FDSUZSUTBBSUFOQkFXc2hDaUFDS0FJQUlRc2dDRUVCU3lFTUEwQWdCU2dDQUNJRlJRMEJJQVFnQlNnQ0JDSUlSd1JBQWtBZ0RFVUVRQ0FJSUFweElRZ01BUXNnQXlBSVN3MEFJQWdnQTNBaENBc2dCeUFJUncwQ0N5QUZLQUlJSUF0SERRQUxRUUFNQVFzZ0JpQUJJQVFnQWhEM0N3SkFRUUFnQXlBQktBSU1RUUZxc3lJTklBRXFBaEFpRGlBRHM1UmVHdzBBSUFFZ0F5QURRUUZyY1VFQVJ5QURRUU5KY2lBRFFRRjBjaUlDQW44Z0RTQU9sWTBpRFVNQUFJQlBYU0FOUXdBQUFBQmdjUVJBSUEycERBRUxRUUFMSWdjZ0FpQUhTeHNRd3dFZ0FTZ0NCQ0lESUFOQkFXdHhSUVJBSUFOQkFXc2dCSEVoQnd3QkN5QURJQVJMQkVBZ0JDRUhEQUVMSUFRZ0EzQWhCd3NDUUNBSFFRSjBJZ1FnQVNnQ0FHb29BZ0FpQWtVRVFDQUdLQUlBSUFFb0FnZzJBZ0FnQVNBR0tBSUFOZ0lJSUFFb0FnQWdCR29nQVVFSWFqWUNBQ0FHS0FJQUlnSW9BZ0FpQkVVTkFTQUVLQUlFSVFVQ1FDQURJQU5CQVdzaUJIRkZCRUFnQkNBRmNTRUZEQUVMSUFNZ0JVc05BQ0FGSUFOd0lRVUxJQUVvQWdBZ0JVRUNkR29nQWpZQ0FBd0JDeUFHS0FJQUlBSW9BZ0EyQWdBZ0FpQUdLQUlBTmdJQUN5QUdLQUlBSVFVZ0JrRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUdFSXNCUVFFTE9nQU1JQWtnQlRZQ0NDQUdRUkJxSkFBZ0FDQUpLQUlJTmdJQUlBQWdDUzBBRERvQUJDQUpRUkJxSkFBTDBBWUNCWDhCZmlNQVFTQnJJZ01rQUFKQUFrQURRQ0FCUlEwQ0lBRW9BZ1FpQWtINDZ3OUdCRUFnQUNBQktBSWtFTjhCSUFBZ0FTZ0NLQkRmQVF3REN5QUNRYmp6RDBZRVFDQUFRUkJxSWdJUXR3a2dBMEVBT2dBRUlBTWdBVUhFQUdvMkFnQWdBQ0FERVA0UUlBSVF0Z2tNQXdzZ0FrR0FoQkpHQkVBZ0FDQUJLQUlrRU44QkRBTUxJQUpCK080UFJnUkFJQUFnQVNnQ0pCRGZBUXdEQ3lBQ1FjQ0VFa1lFUUNBQUlBRW9BaVFRM3dFZ0FDQUJLQUlvRU44QkRBTUxJQUpCMklRU1JnMEJJQUpCOElRU1JnUkFJQUFnQVNnQ0pCRGZBUXdEQ3lBQ1FmandEMFlFUUNBQVFSQnFJZ0lRdHdrZ0FTZ0NKQ0VFSUFOQkFEb0FCQ0FESUFSQnhBQnFOZ0lBSUFBZ0F4RCtFQ0FBSUFFb0FpZ1ErQVVnQWhDMkNRd0RDeUFDUWJqd0QwWUVRQ0FBSUFFb0FpUVEzd0VnQUNBQktBSW9FUGdGSUFFb0Fpd2lBUTBCREFNTEN5QUNRYmp4RDBZRVFDQUFJQUVvQWlRUTN3RU1BZ3NnQWtINDhROUdCRUFnQUNBQktBSWtFTjhCSUFFb0FqZ2lBaUFCS0FJOFFRSjBhaUVGQTBBZ0FpQUZSZzBESUFJb0FnQWlCQ2dDTkNJQklBUW9BamhCQW5ScUlRWURRQ0FCSUFaR0JFQWdBQ0FFS0FKQUVQZ0ZJQUpCQkdvaEFnd0NCU0FBSUFFb0FnQW9BaVFRM3dFZ0FVRUVhaUVCREFFTEFBc0FDd0FMSUFKQnVQSVBSZ1JBSUFNZ0FFRVFhaUFCS0FJa0tBSWtRU1JxRVAwUUlnSTJBaHdnQVVFa2FpRUJJQUlFUUNBRElBQW9BZ2hCb0JscUlBRWdBMEVjYWhEOEVBc2dBQ0FCS0FJQUVONGVJQUFnQXlBQktBSUFLQUlrUVNScUVGWWdBU2dDQUJEL0J3d0NDeUFDUVlpRkVrWUVRQ0FBUVJCcUlnSVF0d2tnQUNBQktBSWtFTjhCSUFBZ0FTZ0NLQkQ0QlNBQ0VMWUpEQUlMSUFKQndQWVBSZ1JBSUFBZ0FTZ0NKQkRmQVF3Q0N5QUJCSDhDZjBFQUlBRW9BZ1FpQWlrREVFS2d3SkNJZ0lDQWdDU0RJZ2NnQjBJQmZZTlFEUUFhUVFFZ0FrRzQ3QThRU0EwQUdnSi9RUUFnQWlrREVFS2dnSUNJZ0lDQWdDU0RJZ2NnQjBJQmZZTlFEUUFhUVFFZ0FrRzQ3dzhRU0EwQUdpQUNRZmp2RHhCSUN3c0ZRUUFMRFFFZ0FDZ0NCQ0FCRUxRSkRBRUxJQUJCRUdvaUFoQzNDU0FBSUFFb0FpUVErQVVnQUNBQktBSW9FTjhCSUFBZ0FTZ0NMQkQ0QlNBQUlBRW9BakFRK0FVZ0FoQzJDUXNnQTBFZ2FpUUFDMDRCQW44Z0FDZ0NoQUlpQWlBQUtBS0lBaUlEVHdSQUlBQWdBMEVCZEVFQ0lBTWJFSkFNSUFBb0FvUUNJUUlMSUFBZ0FrRUJhallDaEFJZ0FDZ0NnQUlnQWtFRGRHb2dBU2tDQURjQ0FBc1VBQ0FBSUFFUVZpSUFJQUVvQWh3MkFod2dBQXN5QVFKL0l3QkJrQUZySWdJa0FDQUNFRWtpQXlBQktBSUFFTFVMR2lBQUlBTkJER29RUWlBREVGRWdBa0dRQVdva0FBc1dBQ0FBSUFFb0FnQVFWaUFCS0FJRUtBSUFOZ0ljQ3hJQUlBQkIxQUJCcmY4RFFYeEJBeERLQVF1MEFnRUNmeU1BUWNBQmF5SUdKQUFnQmlBQ05nS3dBU0FHSUFFMkFyZ0JJQUFnQmlnQ3VBRWdCaWdDc0FFZ0F4RE5CeUlBUWJqdUR6WUNCQ0FBUWV6dUR6WUNBQ0FBSUFRMkFpUWdBRUhZN2c4MkFnQWdBRUVvYWlBRkVMOEpJQUFvQWlRaUFRUi9JQUVGSUFaQnRhY0ZRUjlCQUNBR1FhQUJhaEFkSWdFUUZ5SUNRUmhxUVlHZUNCQU9HaUFDRUJnZ0FSQWVJQUFvQWlRTEVGY2dBQ2dDQ0VFQlFRQkI0OElJUWJXbkJVRWdFRXNnQUNnQ1NDSUNJQUFvQWt4QkFuUnFJUUVnQmtFWWFpRURBMEFnQVNBQ1J3UkFJQUlvQWdBaUJFVUVRQ0FHUWJXbkJVRWlRUUFnQmtHZ0FXb1FIU0lGRUJjaEJ5QURRY0syQ0JBT0dpQUhFQmdnQlJBZUN5QUVFRmNnQUNnQ0NFRUJRUUJCak1zSVFiV25CVUVqRUVzZ0FrRUVhaUVDREFFTEN5QUdRY0FCYWlRQUlBQUx5UUVCQkg4akFFRVFheUlHSkFBQ1FDQUFSUVJBREFFTElBUW9BZ3doQ0NBQ0lBRnJJZ2xCQUVvRVFDQUFJQUVnQ1NBQUtBSUFLQUl3RVFRQUlBbEhEUUVMSUFnZ0F5QUJheUlCYTBFQUlBRWdDRWdiSWdGQkFFb0VRQ0FHSUFFZ0JSQ0pCaUFBSUFZb0FnQWdCaUFHTEFBTFFRQklHeUFCSUFBb0FnQW9BakFSQkFBaEJTQUdFQThhSUFFZ0JVY05BUXNnQXlBQ2F5SUJRUUJLQkVBZ0FDQUNJQUVnQUNnQ0FDZ0NNQkVFQUNBQlJ3MEJDeUFFUVFBMkFnd2dBQ0VIQ3lBR1FSQnFKQUFnQndzS0FDQUFRYkNoRWhCSUN3OEFJQUFnQVNBQ1FiLzVBQkRyRWdzT0FDQUFJQUVnQWtIZFBSRHJFZ3NOQUNBQUlBRkIrT3dQRU9FSkN3b0FJQUFvQWdBUXFna0xPQUVCZmdKL1FRQWdBQ2dDQkNJQUtRTVFRb0NnZ0lpQWlJQUlneUlCSUFGQ0FYMkRVQTBBR2tFQklBQVFzQVVOQUJvZ0FCQ1lFUXNMZEFFRWZ5TUFRYUFCYXlJREpBQWdBMEVJYWhCSklnUkJDR3BCMUxVS0VBNGFJQVFnQVJDNkVTSUZRUWhxSWdaQmsrY0pFQTRhSUFaQjg1b0pFQTRhSUFNZ0Fpa0NBRGNEbUFFZ0JTQURRWmdCYWhDMkJFRUlha0h6bWdrUURob2dBQ0FFUVF4cUVFSWdCQkJSSUFOQm9BRnFKQUFMVFFFQ2Z5TUFRU0JySWdJa0FFRU1FQlVoQXlBQ1FRRTJBaEFnQWlBQ1FSaHFOZ0lNSUFNZ0FUWUNBQ0FESUFBcEFnUTNBZ1FnQWtFQU5nSUlJQUpCQ0dvUWl3RWdBa0VnYWlRQUlBTUxVUUVCZnlNQVFSQnJJZ2drQUNBSUlBSTJBZ0FnQ0NBQk5nSUlJQUFnQ0NnQ0NDQUlLQUlBSUFNUTh3WWlBQ0FITmdJRUlBQWdCallDQUNBQUlBUTJBaVFnQUNBRk5nSUFJQWhCRUdva0FDQUFDNE1CQVFOL0l3QkJFR3NpQXlRQUlBQVFtQVlnQVVGd1NRUkFBa0FnQVJEVkNBUkFJQUFnQVJDTEJTQUFFSW9GSVFRTUFRc2dBQ0FCRUpjR1FRRnFJZ1VRbEFZaUJCQ1dCaUFBSUFVUWxRWWdBQ0FCRU5NRUN5QUVFSU1CSUFFZ0FoQ2NGQ0FEUVFBNkFBOGdBU0FFYWlBRFFROXFFTkVDSUFOQkVHb2tBQThMRUxnREFBdFhBUUYvSXdCQkVHc2lBeVFBSUFFdEFBQUVmeUFEUWdBM0F3Z2dBMEVFYWlBQklBRVEzQUVnQTBFSWFpQUNFUE1NSWdGQmZVMEVRQ0FBSUFNb0FnUTJBZ0FMSUFGQmZra0ZRUUFMSVFFZ0EwRVFhaVFBSUFFTHRnZ0JBbjlCMkx3Z0xRQUFCRUJCMUx3Z0tBSUFEd3RCdU1rZ1FRRVFvd0VpQUVINGxBODJBZ0FnQUVFSWFoRHBFeUVCSUFCQm1BRnFRYjdlQmhBVUdpQUJFUElNUWZER0lFRUJFT1lUR2lBQVFmREdJRUdvdXlBUWdBRVFnZ0ZCK01ZZ1FRRVE1Uk1hSUFCQitNWWdRYkM3SUJDQUFSQ0NBVUdBeHlCQkFSRGtFeG9nQUVHQXh5QkI5THdnRUlBQkVJSUJRWkRISUVFQkVPTVRHaUFBUVpESElFSHN2Q0FRZ0FFUWdnRkJtTWNnUVFFUW93RWFRWmpISUVHVXBBODJBZ0FnQUVHWXh5QkIvTHdnRUlBQkVJSUJRYURISUVFQkVLTUJJZ0ZCZ0o4UE5nSUFJQUVRd0FFMkFnZ2dBRUdneHlCQmhMMGdFSUFCRUlJQlFiREhJRUVCRUtNQkdrR3d4eUJCcUtVUE5nSUFJQUJCc01jZ1FZeTlJQkNBQVJDQ0FVRzR4eUJCQVJDakFScEJ1TWNnUVpDbkR6WUNBQ0FBUWJqSElFR2N2U0FRZ0FFUWdnRkJ3TWNnUVFFUW93RWFRY0RISUVHY3BnODJBZ0FnQUVIQXh5QkJsTDBnRUlBQkVJSUJRY2pISUVFQkVLTUJHa0hJeHlCQmhLZ1BOZ0lBSUFCQnlNY2dRYVM5SUJDQUFSQ0NBVUhReHlCQkFSRGlFeG9nQUVIUXh5QkJyTDBnRUlBQkVJSUJRZWpISUVFQkVPRVRHaUFBUWVqSElFRzB2U0FRZ0FFUWdnRkJpTWdnUVFFUW93RWFRWWpJSUVIVXJRODJBZ0FnQUVHSXlDQkJ1THNnRUlBQkVJSUJRWkRJSUVFQkVLTUJHa0dReUNCQnlLOFBOZ0lBSUFCQmtNZ2dRY0M3SUJDQUFSQ0NBVUdZeUNCQkFSQ2pBUnBCbU1nZ1FaeXhEellDQUNBQVFaaklJRUhJdXlBUWdBRVFnZ0ZCb01nZ1FRRVFvd0VhUWFESUlFR0VzdzgyQWdBZ0FFR2d5Q0JCMExzZ0VJQUJFSUlCUWFqSUlFRUJFT0FUR2lBQVFhaklJRUg0dXlBUWdBRVFnZ0ZCc01nZ1FRRVEzeE1hSUFCQnNNZ2dRWUM4SUJDQUFSQ0NBVUc0eUNCQkFSRGVFeG9nQUVHNHlDQkJpTHdnRUlBQkVJSUJRY0RJSUVFQkVOMFRHaUFBUWNESUlFR1F2Q0FRZ0FFUWdnRkJ5TWdnUVFFUW93RWFRY2pJSUVHSXlBODJBZ0FnQUVISXlDQkJtTHdnRUlBQkVJSUJRZERJSUVFQkVLTUJHa0hReUNCQnJNa1BOZ0lBSUFCQjBNZ2dRYUM4SUJDQUFSQ0NBVUhZeUNCQkFSQ2pBUnBCMk1nZ1FkREtEellDQUNBQVFkaklJRUdvdkNBUWdBRVFnZ0ZCNE1nZ1FRRVFvd0VhUWVESUlFSDB5dzgyQWdBZ0FFSGd5Q0JCc0x3Z0VJQUJFSUlCUWVqSUlFRUJFTndUR2lBQVFlaklJRUhZdXlBUWdBRVFnZ0ZCK01nZ1FRRVEyeE1hSUFCQitNZ2dRZUM3SUJDQUFSQ0NBVUdJeVNCQkFSQ2pBUnBCa01rZ0VOQVRRWWpKSUVIMHZBODJBZ0FnQUVHSXlTQkI2THNnRUlBQkVJSUJRWmpKSUVFQkVLTUJHa0dneVNBUTBCTkJtTWtnUVpDK0R6WUNBQ0FBUVpqSklFSHd1eUFRZ0FFUWdnRkJxTWtnUVFFUTJoTWFJQUJCcU1rZ1FiaThJQkNBQVJDQ0FVR3d5U0JCQVJEWkV4b2dBRUd3eVNCQndMd2dFSUFCRUlJQlFkQzhJRUc0eVNBMkFnQkIyTHdnUVFFNkFBQkIxTHdnUWRDOElEWUNBRUhRdkNBTElRRUJmeU1BUVJCcklnRWtBQ0FCUVFocUlBQVF0d01RdGdNZ0FVRVFhaVFBQ3djQUlBQkJBRWNMWmdJQmZ3SitJd0JCRUdzaUJTUUFJQUFDZndKQUlBUkNBRk1nQXlBRWZDSUhJQU5UUndSQUlBVWdBMEhibUFnZ0JCRHVCaUFCSUFVZ0FoQmRJQVVRRHhvZ0FTMEFCQTBCUVFJTUFnc2dCeUVHQ3lBQUlBWTNBd0JCQVFzNkFBZ2dCVUVRYWlRQUMrc0JBUVIvSXdCQkVHc2lDQ1FBQWtBZ0FFVU5BQ01BUVJCcklnWWdCRFlDRENBR0tBSU1LQUlNSVFZZ0FpQUJheUlIUVFCS0JFQWdBQ0FCSUFkQkFuWWlCeENTRFNBSFJ3MEJDeUFHSUFNZ0FXdEJBblVpQVd0QkFDQUJJQVpJR3lJQlFRQktCRUFnQUNBSUlBRWdCUkQ5RENJRkVJOENJQUVRa2cwaEJpQUZFSWNCR2lBQklBWkhEUUVMSUFNZ0Ftc2lBVUVBU2dSQUlBQWdBaUFCUVFKMklnRVFrZzBnQVVjTkFRc2pBRUVRYXlJQklBUTJBZ3dnQVVFQU5nSUlJQUVnQVNnQ0RDSUNLQUlNTmdJRUlBSWdBU2dDQ0RZQ0RDQUJLQUlFR2lBQUlRa0xJQWhCRUdva0FDQUpDeWdCQVg4akFFRVFheUlCSkFBZ0FVRUlhaUFBRUk4Q0VJQURLQUlBSVFBZ0FVRVFhaVFBSUFBTExBQUNRQ0FBSUFGR0RRQURRQ0FBSUFGQkFXc2lBVThOQVNBQUlBRVE5eFFnQUVFQmFpRUFEQUFMQUFzTEtBRUJmeU1BUVJCcklnRWtBQ0FCUVFocUlBQVF3UU1RZ0FNb0FnQWhBQ0FCUVJCcUpBQWdBQXNjQUNBQVFZQ0FnSUFFVHdSQUVQc0JBQXNnQUVFQ2RFRUVFTk1JQ3drQUlBQkJBUkRUQ0FzVEFDQUFFUG9DSUFGQmdJQ0FnSGh5TmdJSUN3d0FJQUFRK2dJZ0FUWUNBQXNrQUNBQVFRdFBCSDhnQUVFUWFrRndjU0lBSUFCQkFXc2lBQ0FBUVF0R0d3VkJDZ3NMQ0FBZ0FCRFJDQm9MRndBZ0FDQUNOZ0ljSUFBZ0FUWUNGQ0FBSUFFMkFoZ0xyd0VCQm44akFFRWdheUlDSkFBZ0FrRVlhaUlESUFBUTN3TWFBa0FnQXhDU0JFVU5BQ0FDUVJCcUlnTWdBQ0FBS0FJQVFReHJLQUlBYWhCK0lBTVEvUVFoQkNBREVHUWdBa0VJYWlBQUVOSUVJUVVnQUNBQUtBSUFRUXhyS0FJQWFpSUdFSndESVFjZ0FpQUVJQVVvQWdBZ0JpQUhJQUVnQkNnQ0FDZ0NGQkVZQURZQ0VDQURFTkVFUlEwQUlBQWdBQ2dDQUVFTWF5Z0NBR3BCQlJDUEF3c2dBa0VZYWhEZ0F5QUNRU0JxSkFBTFVnRUNmMEg0bUNBb0FnQWlBU0FBUVFkcVFYaHhJZ0pxSVFBQ1FDQUNRUUFnQUNBQlRSc05BQ0FBUHdCQkVIUkxCRUFnQUJBSVJRMEJDMEg0bUNBZ0FEWUNBQ0FCRHd0Qm1La2dRVEEyQWdCQmZ3dFFBUUYrQWtBZ0EwSEFBSEVFUUNBQ0lBTkJRR3F0aUNFQlFnQWhBZ3dCQ3lBRFJRMEFJQUpCd0FBZ0EydXRoaUFCSUFPdElnU0loQ0VCSUFJZ0JJZ2hBZ3NnQUNBQk53TUFJQUFnQWpjRENBdmJBUUlCZndKK1FRRWhCQUpBSUFCQ0FGSWdBVUwvLy8vLy8vLy8vLzhBZ3lJRlFvQ0FnSUNBZ01ELy93QldJQVZDZ0lDQWdJQ0F3UC8vQUZFYkRRQWdBa0lBVWlBRFF2Ly8vLy8vLy8vLy93Q0RJZ1pDZ0lDQWdJQ0F3UC8vQUZZZ0JrS0FnSUNBZ0lEQS8vOEFVUnNOQUNBQUlBS0VJQVVnQm9TRVVBUkFRUUFQQ3lBQklBT0RRZ0JaQkVCQmZ5RUVJQUFnQWxRZ0FTQURVeUFCSUFOUkd3MEJJQUFnQW9VZ0FTQURoWVJDQUZJUEMwRi9JUVFnQUNBQ1ZpQUJJQU5WSUFFZ0ExRWJEUUFnQUNBQ2hTQUJJQU9GaEVJQVVpRUVDeUFFQ3lJQkFYOGdBQ0FCRUxFQ0JIOGdBQ0FBSUFFUXVnRW9BZ0FvQWdnUVVBVkJBQXNMSXdFQmZ5QUFLQUo0SWdFZ0FDZ0NkRVlFUUVFQUR3c2dBVUhFQTJzb0FreEJBRWNMZ2dNQkJIOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUFrQUNRQUpBQW45QkFDQUJSUTBBR2lBQVFZd0RhaUlGSUFKQkRHb2lBUkQxQXlFRUlBVWdBUkNlQnlFRElBUUVRQ0FES0FJQURBRUxRUUFoQVNBRFFRQTJBZ0FDUUNBQ0tBSU1LQUlFSWdORkRRQWdBaWdDRENJRUlBTkdEUUFnQkNnQ0tDSUJRU0J4QkVBZ0FrRUNOZ0lFSUFJZ0JEWUNBQ0FBUWRBQ2FpQUNFTlVWS0FJQUlnRkZEUU1nQVJER0JTZ0NBQ2dDQUNJQlJRMEVJQUVvQWhBaUFTQUNLQUlNUmdSQUlBQWdBeENnQmtFQmFpRUJEQUlMSUFBZ0FSQ2dCa0VCYWlFQkRBRUxJQUZCQ0hFRVFDQUFRZVFDYWlBQ1FReHFFSjRIS0FJQUlnRkZEUVVnQUNBQkVLQUdJUUVNQVFzZ0F5Z0NLQ0VCSUFBZ0F4Q2dCaUFCUVFaeFFRQkhhaUVCQ3lBRklBSkJER29RbmdjZ0FUWUNBQ0FGSUFKQkRHb1FuZ2NvQWdBTElRQWdBa0VRYWlRQUlBQVBDMEgxNmdCQmtxb0NRZGNDUVk2aUF4QUFBQXRCNXVvQVFaS3FBa0hiQWtHT29nTVFBQUFMUWMvNkFVR1NxZ0pCNlFKQmpxSURFQUFBQ3d3QUlBQVFzZ1VnQUJET0NRc29BQ0FBUWdBM0F2d0JJQUJDZ0lDQWdNQUJOd0wwQVNBQUlBQTJBdkFCSUFCQkRCRHpCQ0FBQzdJQkFRTi9Jd0JCd0FGcklnSWtBQUpBQWtBZ0FDQUJRUVFRR3hBZ0lnUUVRQ0FFTHdFZVFReEdEUUVMSUFJZ0FFRjJJQUVRRUNBQ1FaM01BaEFPR2lBQ0tBSzhBU0VESUFJUUVRd0JDeUFFUVFJUUd5QUJRUUlRRzBjRVFDQUNJQUJCZGlBQkVCQWdBa0hUTWhBT0dpQUNLQUs4QVNFRElBSVFFUXdCQ3lBRVFRTVFHMEVCUmcwQUlBSWdBRUYySUFFUUVDQUNRWjNNQWhBT0dpQUNLQUs4QVNFRElBSVFFUXNnQWtIQUFXb2tBQ0FEQ3g4QUlBRW9BaEFpQVVVRVFCQnZBQXNnQUNBQklBRW9BZ0FvQWhnUkFnQUxSZ0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQUVIRUEyb2dBa0VNYWhDZUFpSUFSUVJBUWRXU0IwR1B0QU5CL3dGQnZhb0JFQUFBQ3lBQ1FSQnFKQUFnQUVFTWFnc1VBQ0FBUWNJcVFaQUNRWk1DUVpqd0J4Q05Fd3NzQUNBQVFRaDBRWUNBL0FkeElBQkJHSFJ5SUFCQkNIWkJnUDREY1NBQVFSaDJjbklnQUNBQlFRRkdHd3N3QVFGL0lBQW9BZ1FpQWlBQUtBSUlTUVJBSUFJZ0FTZ0NBRFlDQUNBQUlBSkJCR28yQWdRUEN5QUFJQUVRa2hjTDVBRUJCbjhDZnlBQUtBSUFJUU1nQVNFR1FYb2dBQ2dDQ0NJQVJRMEFHa0Y5SUFKRkRRQWFJQUFvQWdBaEJDQUFLQUlFSVFjZ0F4Q0hEaUVESUFRaEFTQUhJUUFEZnlBQkJIOGdBU0FCUVFGMklnVkJmM05xSUFVZ0FDQUZRZWdBYkdvaUJTZ0NCQ0FHU1NJSUd5RUJJQVZCNkFCcUlBQWdDQnNoQUF3QkJTQUhJQVJCNkFCc2FpRUVBa0FEUUVGM0lRRWdBQ0FFUmcwQklBQW9BZ1FnQmtjTkFRSkFJQUFvQW1BZ0EwMEVRQ0FESUFBb0FtUk5EUUVMSUFBb0FsZ05BQ0FBS0FJSURRQWdBRUhvQUdvaEFBd0JDd3NnQWlBQU5nSUFRUUFoQVFzZ0FRc0xDd3RqQVFGL0l3QkJFR3NpQkNRQUlBUWdBallDQ0NBRUlBRTJBZ3dnQkNBRE5nSUVJQUFRSENBQVFjUUJhaUlBSUFBUXFnTWdCQ2dDRENBRUtBSUlJQVFvQWdRUTV4Y2lBUkFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJJUUFnQkVFUWFpUUFJQUFMUWdFQmZ5QUJLQUlBSVFJakFFRVFheUlCSkFBZ0FTQUNOZ0lJSUFGQkFUWUNCQ0FBSUFCQjJBSnFJQUZCQ0dvZ0FVRUVhaEN6Q0NFQUlBRkJFR29rQUNBQUN3OEFJQUJCQWlBQklBSWdBeERQQkF0bkFRSi9JQUJCQkdvaEJBSkFJQUFvQWdRaUEwVUVRQ0FFSVFBTUFRc2dBaWdDQUNFQ0EwQWdBeUlBS0FJUUlnTWdBa3NFUUNBQUlRUWdBQ2dDQUNJRERRRU1BZ3NnQWlBRFRRMEJJQUJCQkdvaEJDQUFLQUlFSWdNTkFBc0xJQUVnQURZQ0FDQUVDNG9CQVFKL0lBQW9BZ1FnQUNnQ0NFa0VRQ0FBSUFBb0FnUWdBUkRGQ0VFY2FqWUNCQThMSXdCQklHc2lBeVFBSUFOQkNHb2dBQ0FBS0FJRUlBQW9BZ0JyUVJ4dFFRRnFFTWdJSUFBb0FnUWdBQ2dDQUd0QkhHMGdBRUVJYWhESENDSUNLQUlJSUFFUXhRZ2FJQUlnQWlnQ0NFRWNhallDQ0NBQUlBSVEzQW9nQWhER0NDQURRU0JxSkFBTFFBRUJmeUFBS0FJSUlnTWdBaUFCYTJvaEFnTkFJQUlnQTBaRkJFQWdBeUFCS0FJQU5nSUFJQUZCQkdvaEFTQURRUVJxSVFNTUFRc0xJQUFnQWpZQ0NBdW1BUUVGZnlNQVFTQnJJZ0lrQUNBQUtBSVlJZ1FvQWd3aEFRSkFBa0FnQkNnQ0ZDSUZCRUFnQVNBRktBTHdBVWtOQVF3Q0N5QUJRZjcvL3dGTERRRUxJQVFnQVVFQmFqWUNEQ0FCSVFNTEFrQWdBdzBBSUFBb0FqQkZEUUFnQWtFUWFrR0N4QWNRRkNFQklBSkNBRGNEQUNBQ1FRQTJBZ2dnQUVFZ2FrRUNRZHo0RENBQ0lBRW9BZ0FnQVNBQkxBQUxRUUJJR3hDNkRpQUJFQThhQ3lBQ1FTQnFKQUFnQXdzSkFDQUFRUlFRdnhJTG1BTUJCWDhqQUVFUWF5SUVKQUFnQkNBQU5nSU1JQVFnQVRvQUN5QUVJQUkyQWdRZ0JDZ0NERUVNYWlFQklBUXNBQXNoQWlBRUtBSUVJUU1qQUVFd2F5SUFKQUFnQUNBQk5nSXNJQUFnQWpvQUt5QUFJQU0yQWlRZ0FDZ0NMRUVJYWlFQ0l3QkJFR3NpQVNBQVFSaHFOZ0lNSUFFZ0FqWUNDQ0FCS0FJTUlnSWdBU2dDQ0RZQ0FDQUNRUUEyQWdRZ0FDZ0NKQ0VDSUFBZ0FDa0RHRGNEQ0NNQVFTQnJJZ0VrQUNBQklBSTJBaHdnQVNBQVFTdHFOZ0lZSUFFZ0FDa0NDRGNERUNBQktBSWNFSU1CSVFNZ0FTZ0NHQ0VGSUFFZ0FTa0RFRGNEQ0NBQlFRaHFJUVlqQUVFUWF5SUNKQUFnQWlBRE5nSU1JQUlnQlRZQ0NBTkFJQUlvQWd3RVFDQUNLQUlJSVFVZ0JoQ0RBU0VISXdCQkVHc2lBeVFBSUFNZ0J6WUNEQ0FESUFVMkFnZ2dBeWdDRENJRktBSUFJQU1vQWdnc0FBQVEzZ1FnQlNnQ0JBUkFJQVVvQWdBZ0JTZ0NCQkFPR2dzZ0EwRVFhaVFBSUFZUWd3RWFJQUlnQWlnQ0RFRUJhellDREF3QkN3c2dBQ0FHS1FJQU53SVFJQUpCRUdva0FDQUJRU0JxSkFBZ0FFRXdhaVFBSUFSQkVHb2tBQXR2QVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dDUUNBQ0tBSU1JZ0FvQWdRZ0FpZ0NDQ2dDQUVZRVFDQUFMUUFJUVFGeElBSW9BZ2d0QUFSQkFYRkdEUUVMSUFBUW9SZ2dBQ0FDS0FJSUlnRW9BZ0EyQWdRZ0FDQUJMUUFFT2dBSUN5QUNRUkJxSkFBTFh3RURmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2pBRUVRYXlJQUlBSW9BZ3hCQkdvMkFnd2dBQ2dDRENFQklBQkJBVFlDQ0NBQklBQW9BZ2dpQXlBQktBSUFJZ0ZxTmdJQUlBQWdBU0FEYWpZQ0JDQUFLQUlFR2lBQ1FSQnFKQUFMSndFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQkRHQnlFQUlBRkJFR29rQUNBQUN5d0JBWDhqQUVFZ2F5SUZJQUEyQWh3Z0JTQUJOZ0lZSUFVZ0FqWUNGQ0FGSUFNMkFoQWdCU0FFTmdJTUN5TUJBWDhqQUVFUWF5SUJJQUEyQWd3Z0FTZ0NEQ0lBS0FJRUlBQW9BZ0JyUVRSdEN6RUJBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3UStnSXRBQXRCZ0FGeFFRQkhJUUFnQVVFUWFpUUFJQUFMTVFBZ0FFSFk5dzgyQWdRZ0FFSDQ5dzgyQWdBZ0FFR0ErQTgyQWdRZ0FFSGMrQTgyQWdBZ0FFR2crQTgyQWdBZ0FBc0xBQ0FBUVFBUTJBZ2dBQXNKQUNBQVFRQVFqUVVMRFFBZ0FDQUJRZWowRHhEQ0RBdURBZ0VEZnlNQVFTQnJJZ1VrQUNBQklRY2dCQkR1QXlFRUFrQUNRQ0FES0FJVUlnRkJ3Z0ZySWdaQkMwMUJBRUVCSUFaMFFmOFljUnNOQUNBQlFmNEFheUlCUVExTlFRQkJBU0FCZEVIVjVBQnhHdzBBUVFBaEFTQUhJQU1RK0FwRkRRRWdBMEVCRURnaUEwRW1heUlHUVFkTlFRQkJBU0FHZEVIYkFYRWJJQU5CeVFCclFRTkpjZzBBSUFOQkJXc09Bd0FCQUFFTElBUWhBUXNDUUFKQUlBRWlBd1JBSUFNZ0FpZ0NBQ0lCUncwQkN5QUFJQUlRV3hvTUFRc2dCVUVBTmdJWUlBVkNBRGNERUNBRlFnQTNBd2dnQUNBQklBZEJJR29pQUNBRlFRaHFJQUVnQUNBQktBSUFLQUlJRVFFQUlBSkJCR29RMWdRUWFSb0xJQVZCSUdva0FBdUVCUUVIZnlNQVFVQnFJZ01rQUNBRElBRTJBaXdnQXlBQ09nQWtJQU1nQVRZQ0lDQURJQUUyQWh3Z0F5QUFOZ0lZSUFOQ0FEY0RDQ0FEUWdBM0F3QWdBMEdBZ0lEOEF6WUNFQ0FBUWFnSGFpQUFRYndIYWlBQ0d5RUdJQUpCQVhNaEJ5QURRU0JxSVFnZ0EwRVlha0VFY2lFSkFrQURRQ0FHSUFOQkxHb1E3QUVpQkFSQUlBUW9BZ3doQkF3Q0N5QURJQU5CTEdvUTdBRUVRQ0FEUVFocUlRQkJBQ0VFQTBBZ0FDZ0NBQ0lBUlEwRElBTWdBQ2dDQ0RZQ01DQUdJQU5CTUdvUTBBRkJBRFlDQUF3QUN3QUxJQU5CTUdvZ0F5QURRU3hxRUpZQklBQW9BclFGSUFNb0Fpd1FsQUVpQkVVRVFDQUFLQUswQlNBQkVKUUJJUUVnQUVFQU9nQ1VBeUFBUWFnRWFrR2Z3QW9RR1NFQUlBTkIzTWNFUVp6bUFTQUNHellDUENBQUlBTkJQR29Rc0FOQmtOa0tFQmtnQ0JBdlFmellDaEFaSUFrUUwwR2E3Z3dRR1NFQUFrQWdBUVJBSUFOQk1Hb2dBUkJZREFFTElBTkJNR29RVlFzZ0FDQURRVEJxSWdBUVRSb2dBQkFQR2tFQUlRUU1BZ3NDUUFKQUFrQUNRQ0FFS0FJVUlnVkJ3UUJyUVFOSkRRQUNRQUpBSUFWQjB3QnJEZ1FCQlFVREFBc2dCVUU5UndSQUlBVkJ4Z0JHRFFJZ0JVSGtBRVlOQkNBRlFUdEhJQVZCTjBkeERRVWdBMEVJYWlFQUEwQWdBQ2dDQUNJQVJRMElJQU1nQUNnQ0NEWUNNQ0FHSUFOQk1Hb1EwQUVnQkRZQ0FBd0FDd0FMSUFNZ0JFRUFFRGcyQWl3TUJRc2dBeUFFUVFBUU9EWUNMQXdFQ3lBRElBUkJBQkE0TmdJc0RBTUxJQU1nQkNBSEVEZzJBaXdNQWdzZ0F5QUVRUUFRT0RZQ0xBd0JDd3NnQTBFSWFpRUFRUUFoQkFOQUlBQW9BZ0FpQUVVTkFTQURJQUFvQWdnMkFqQWdCaUFEUVRCcUVOQUJRUUEyQWdBTUFBc0FDeUFERUU4Z0EwRkFheVFBSUFRTFFnQWdBU2dDQUVFS1J3UkFRYjdUQmtIbnNBTkI1d0JCZ0wwREVBQUFDeUFBSUFGQkJHb2lBQ2dDRkNJQklBQkJDR29nQVJzb0FnQWdBQkRRQjBFQkVPZ09DNk1DQVFWL0lBQXRBR3hCQVhGRkJFQWpBRUVRYXlJRUpBQWdCQ0FBS0FJWU5nSUVRVFFRRlNFQ0lBUW9BZ1FoQlNBQ1FnQTNBZ0FnQWtHQWdJRDhBellDRUNBQ1FnQTNBaUFnQWtJQU53SUlJQUpCR0dvaUEwSUFOd0lBSUFJZ0F6WUNGQ0FDUWdBM0FpZ2dBa0dBZ0lEOEF6WUNNQ01BUVNCcklnRWtBQ0FGQkVBZ0FTQUNOZ0lVSUFGQkFEWUNFQ0FCUVp3Tk5nSU1JQUZCMFBFU05nSUlJQUVnQVVFSWFpSUROZ0lZSUFVZ0F4Q2hEaUFERUJZZ0FTQUNOZ0lVSUFGQkFEWUNFQ0FCUVowTk5nSU1JQUZCMFBFU05nSUlJQUVnQXpZQ0dDQUZJQU1Rb1E0Z0F4QVdDeUFCUVNCcUpBQWdCRUVBTmdJSUlBQkJPR29nQWhDRUdTQUVRUWhxRUlNWklBQWdBQ2dDYkVFQmNqWUNiQ0FFUVJCcUpBQUxJQUFvQWpnTEpRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBQ0FDUVF4cUVKWVBJQUpCRUdva0FBczdBUUYvSXdCQkVHc2lBaVFBSUFJZ0FDQUFRZGdDYWlBQkVNOFBJZ0UyQWd3Z0FDQUJRUkJxSUFKQkRHb1Fzd01oQUNBQ1FSQnFKQUFnQUF1TUFRRUNmeU1BUVNCcklnTWtBQUpBSUFJb0FnQWlCQ2dDQkVINHl4SkdRUUFnQkJ0RkJFQWdBU2dDSENJQktBSUFRUUE2QUFBZ0FVSDMvZ01RR1JvZ0FCQm5HZ3dCQ3lBRUtBSUlJUVFnQTBFQU5nSVlJQU5DQURjREVDQURRZ0EzQXdnZ0EwRUNOZ0lFSUFBZ0JDQUJJQU5CQ0dvZ0EwRUVhaUFDUVFScUVOZ0hFR2thQ3lBRFFTQnFKQUFMOEFJQkEzOGpBRUd3QVdzaUFpUUFJQUlnQVRZQ3JBRUNRQ0FCUlEwQUlBQkJwQUZxSWdFZ0FrR3NBV29RcVFJTkFDQUNRU0JxSUFFZ0FrR3NBV29pQVJDV0FTQUFJQUJCQkdvZ0FSRFFBU2dDQUNJQkVPWUtJZ01FZnlBRFFRQVFPQVZCQUFzUXhBWUNRQ0FCRU9ZS0lnTUVRQ0FES0FJVVFmWUJSZzBCQzBFQUlRTUxJQUFnQXdSL0lBTkJBUkE0QlVFQUN4REVCZ0pBQWtBQ1FBSkFJQUVRMXdRaUF5Z0NGRUg1QVdzT0F3QUNBUU1MSUFBZ0EwRUFFRGdReEFZTUFnc2dBa0tBZ0lDQWdBUTNBcVFCSUFJZ0FrRWdhaUlFTmdLZ0FTQUNRZWpYRWpZQ0NDQUNJQUpCQ0dvaUF6WUNHQ0FDSUFRMkFnd2dBU0FERU9VS0lBTVFGaUFDS0FLZ0FTSUJJQUlvQXFRQlFRSjBhaUVEQTBBZ0FTQURSZ1JBSUFKQklHb1EzQVVNQXdVZ0FDQUJLQUlBRU1RR0lBRkJCR29oQVF3QkN3QUxBQXNnQUNBRFFRSVFPQkRFQmlBQUlBTkJBUkE0RU1RR0N5QUFRUmhxSUFKQnJBRnFFTHNaQ3lBQ1FiQUJhaVFBQzlJQkFRSi9Jd0JCSUdzaUF5UUFJQUFnQVJEdURrVUVRQ0FESUFJUW5ob2dBMEVRYWlJQ0lBQWdBeENkR2lNQVFSQnJJZ1FrQUNBRUlBRTJBZ3dDZnlBQUlBRVE3ZzRFUUNBQUtBSUFRUUE2QUFBZ0FFR3l3d3NRR1NBRVFReHFJZ0VRTDBHWnBBd1FHU0FBUVFocUlBRVFtQXNRVFNnQ0FDMEFBRUVBUnd3QkMwRUFJQUFnQWhDZUQwVU5BQm9nQUVFSWFpQUVRUXhxRUpnTElBSVE0QUlnQkNnQ0RDRUJJQUJCSEdvZ0FoQ2ZEeUFCTmdJQVFRQUxHaUFFUVJCcUpBQWdBaEFQR2lBREVBOGFDeUFEUVNCcUpBQUxSZ0VCZnlBQlJRUkFRUUFQQ3lBQUtBSUVJZ0lFUUNBQ0tBSUFJQUVvQWdoQkFVRUJRZERTQ0VIUXB3TkJqQUVRU3dzZ0FDQUJJQUFnQVNnQ0FDZ0NDQkVCQUJDa0F3c3JBQ0FBUWFBSmFoRC9HaUFBUWRnQ2FoRC9HaUFBUWVnQmFoQ2NCQ0FBUWZnQWFoQ2NCQ0FBRUs0TEN3Y0FJQUFvQWdRTEZRQWdBQ2dDQUNJQUlBQWdBU0FDRU04UEVJRURDeE1BSUFBb0FnQWlBQ0FBSUFFUTRRY1FnUU1MRXdBZ0FDZ0NBQ0lBSUFBZ0FSRHpBaENCQXdzV0FDQUFRWWpBRWpZQ0JDQUFRYWpBRWpZQ0FDQUFDeTBBSUFCQjhMQVNOZ0lBSUFCQmhBRnFFS29CSUFCQjhBQnFFRThnQUVIY0FHb1FUeUFBUVRScUVGNGdBQXN3QVFOL0lBQW9BZ0FnQUNBQUxRQUxJZ0ZCR0hSQkdIVkJBRWdpQWhzaUF5QURJQUFvQWdRZ0FTQUNHMm9RNkE4THdnd0NDbjhDZmlNQVFkQUJheUlDSkFBZ0FpQUJOZ0lNSUFCQm9CWnFJUWtnQUVHVUdHb29BZ0FnQUVHY0dHb29BZ0FpQTBHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FKSUFOQkFYUkJBbW9RbEJBTElBSkJ5QUZxSUFrZ0FrRU1haER5QkNBQUtBS1VHQ0lJUVFGcklRb2dBRUdRR0dvb0FnQWhCeUFDS0FMTUFTRUdJQUlvQXNnQklRTUNRQUovQWtBRFFDQUZJQWhHRFFFZ0J5QURRUlJzYWlJRUxRQUlSUVJBSUFSQkFUb0FDQ0FFUVFBMkFnUWdCQ0FCTmdJQUlBY2dBMEVVYkdvaUFTQUZOZ0lRSUFFZ0JqWUNEQ0FBSUFBb0Fwd1lRUUZxTmdLY0dDQUFRYUFZYWlJQklBRW9BZ0JCQVdvaUJ6WUNBQ0FFUVFScURBTUxBa0FnQmlBRUtBSU1SZ1JBSUFRb0FnQWdBVVlOQVFzZ0JTQUVLQUlRU3dSQUlBSkJBVG9BdUFFZ0FpQUZOZ0xBQVNBQ1FRQTJBclFCSUFJZ0FUWUNzQUVnQWlBR05nSzhBU0FDSUFVMkFpQWdBaUFDS1FPNEFTSU1Od01ZSUFJZ0Fpa0RzQUVpRFRjREVDQUNJQVFvQWhBMkFzQUJJQUlnQkNrQ0NEY0R1QUVnQWlBRUtRSUFOd093QVNBRUlBVTJBaEFnQkNBTk53SUFJQVFnRERjQ0NDQUNJQUlvQXNBQlFRRnFOZ0xBQVNBSklBTkJBV29nQUNnQ2xCaHdJQUpCc0FGcUVMSUVJQUFnQUNnQ25CaEJBV28yQXB3WUlBQkJvQmhxSWdFZ0FTZ0NBRUVCYWlJSE5nSUFJQVJCQkdvTUJBc2dBMEVCYWtFQUlBTWdDa2NiSVFNZ0JVRUJhaUVGREFFTEN5QUVRUVJxSVFVTUFnc2dBa0VRYWtHR3RRTkI2d05CRGlBQ1FiQUJhaEFkSWdFUUZ5SURRUmhxUVpZMUVBNGFJQU1RR0NBQkVCNGdBRUdnR0dvb0FnQWhCMEVBQ3lFRklBQkJxQmhxS0FJQUlRUUNRQ0FBUWF3WWFpZ0NBRUVEYWtGOGNTSURRZDM5QTJ0Qi92OTdTd1JBSUFRaEFRd0JDeUFBUVpDQUJFRVFFTmtDSWdFMkFxZ1lRUUFoQXlBQlFRQTJBb0NBQkNBRUJFQWdCQ0FCTmdLQWdBUU1BUXNnQUNBQk5nS2tHQXNnQUNBRFFhUUNhallDckJnZ0FTQURha0VBUWFRQ0VIa2lCaEJWSUFaQkRHb1Ewd1lhSUFaQm1BRnFFTk1HR2lBQVFiUVlhaWdDQUNFRUFrQUNRQ0FBUWJnWWFpZ0NBQ0lEUVNCSkJFQWdCQ0VCREFFTElBQW9BcWdZSVFFQ1FDQUFLQUtzR0VFRGFrRjhjU0lJUWZuK0EydEIvdjk3U3dSQUlBRWhBd3dCQ3lBQVFaQ0FCRUVRRU5rQ0lnTTJBcWdZUVFBaENDQURRUUEyQW9DQUJDQUJCRUFnQVNBRE5nS0FnQVFNQVFzZ0FDQUROZ0trR0FzZ0FDQURJQWhxSWdFMkFyUVlJQUFnQ0VHSUFXbzJBcXdZSUFORkRRRWdBU0FFTmdLRUFVRUFJUU1nQVVFQU5nS0FBU0FFUVlBQmFpQUFRYkFZYWlBRUd5QUJOZ0lBQ3lBQUlBTkJBV28yQXJnWUlBRWdBMEVDZEdvZ0JqWUNBQXNnQUVHOEdHb2lBU0FCS0FJQVFRRnFOZ0lBSUFjZ0FDZ0NvQmhHQkVBZ0JTQUdOZ0lBREFFTElBQW9BcFFZSUFBb0Fwd1lJZ0ZCbGdGc1FaWUJha0hrQUc1SkJFQWdDU0FCUVFGMFFRSnFFSlFRQ3lBQ1FjZ0JhaUFKSUFKQkRHb1E4Z1FnQUNnQ2xCZ2lDa0VCYXlFTElBQW9BcEFZSVFnZ0FpZ0NEQ0VFSUFJb0Fzd0JJUWNnQWlnQ3lBRWhBMEVBSVFVRFFDQUZJQXBIQkVBZ0NDQURRUlJzYWlJQkxRQUlSUVJBSUFGQkFUb0FDQ0FCSUFZMkFnUWdBU0FFTmdJQUlBZ2dBMEVVYkdvaUF5QUZOZ0lRSUFNZ0J6WUNEQ0FBSUFBb0Fwd1lRUUZxTmdLY0dDQUFJQUFvQXFBWVFRRnFOZ0tnR0NBQlFRUnFJUVVNQXdzQ1FDQUJLQUlNSUFkSERRQWdCQ0FCS0FJQVJ3MEFJQUVnQmpZQ0JDQUJJQVEyQWdBZ0FDQUFLQUtnR0VFQmFqWUNvQmdnQVVFRWFpRUZEQU1MSUFVZ0FTZ0NFRXNFUUNBQ1FRRTZBTGdCSUFJZ0JUWUN3QUVnQWlBR05nSzBBU0FDSUFRMkFyQUJJQUlnQnpZQ3ZBRWdBaUFGTmdJZ0lBSWdBaWtEdUFFaUREY0RHQ0FDSUFJcEE3QUJJZzAzQXhBZ0FpQUJLQUlRTmdMQUFTQUNJQUVwQWdnM0E3Z0JJQUlnQVNrQ0FEY0RzQUVnQVNBRk5nSVFJQUVnRFRjQ0FDQUJJQXczQWdnZ0FpQUNLQUxBQVVFQmFqWUN3QUVnQ1NBRFFRRnFJQUFvQXBRWWNDQUNRYkFCYWhDeUJDQUFJQUFvQXB3WVFRRnFOZ0tjR0NBQUlBQW9BcUFZUVFGcU5nS2dHQ0FCUVFScUlRVU1Bd1VnQTBFQmFrRUFJQU1nQzBjYklRTWdCVUVCYWlFRkRBSUxBQXNMSUFKQkVHcEJoclVEUWVzRFFRNGdBa0d3QVdvUUhTSUFFQmNpQVVFWWFrR1dOUkFPR2lBQkVCZ2dBQkFlUVFBaEJRc2dCU2dDQUNFQUlBSkIwQUZxSkFBZ0FBdWdBUUVDZnlBQVFlQ0FBV29RRmlBQVFjZ2dhaUlCRU93Y0lBRVEyaG9nQVNBQktBS0FZQkEySUFCQnVCNXFJUUpCQUNFQkEwQWdBaWdDaEFJZ0FVMEVRQ0FDUVFBMkFvUUNCU0FDS0FLQUFpQUJRUVYwYWhEekF5QUJRUUZxSVFFTUFRc0xJQUlnQWlnQ2dBSVFOaUFBUWVBRWFpSUJFT1ljSUFFUTBSb2dBU0FCS0FMQUdSQTJJQUJCQ0dvaUFCRGdIQ0FBRU0wYUlBQWdBQ2dDd0FRUU5ndnpBZ0VDZnlNQVFmQUFheUlFSkFBZ0FDQUNOZ0lFSUFBZ0FUWUNBQ0FBUVFocUlnRkNBRGNEMEFRZ0FVS0FnSUNBd0FFM0FzUUVJQUVnQVRZQ3dBUWdBVUVNRVBrUElBQkI0QVJxSWdGQ0FEY0N6QmtnQVVIRUdXcENnSUNBZ0lBR053SUFJQUVnQVRZQ3dCa2dBVUV3RU9vUElBQkJ2Q0JxUW9DQWdJQ0FBVGNDQUNBQVFiZ2dhaUFBUWJnZWFqWUNBQ0FBUWNnZ2FpSUJRZ0EzQTVCZ0lBRkJoT0FBYWtLQWdJQ0E0QUEzQWdBZ0FTQUJOZ0tBWUNBQlFRWVE0ZzhnQUVId2dBRnFRUUEyQWdBQ1FDQURSUTBBSUFJUXJ3RWdBa0dFQW1vaUFTZ0NCQ0VESUFSQktHb2lBaUFCS0FJQUlnVTJBZ0FnQWlBRklBTkJNR3hxTmdJRUlBSVEvd2dnQkVFZ2FpSUNJQUVvQWdBZ0FTZ0NCRUV3YkdvaUFUWUNCQ0FDSUFFMkFnQWdBaEQvQ0FOQUlBUW9BaWdpQVNBRUtBSWdSZzBCSUFSQjBBQnFJQUFnQkVFd2FpQUVJQUVRNkF0QkNHb1FWaEJXRU84SElBUkJLR29RK0J3TUFBc0FDeUFFUWZBQWFpUUFJQUFMNFFFQkNIOGpBRUhBQVdzaUFpUUFJQUpCdUFGcUlBQkJIR29nQVJEdUhDQUFLQUtBQVNJRlFRRnJJUVlnQUNnQ2ZDRUhJQUVvQWdBaENDQUNLQUs4QVNFSklBSW9BcmdCSVFGQkFDRUFBa0FEUUNBQUlBVkhCRUFnQnlBQlFRUjBhaUlFTFFBRVJRMENBa0FnQkNnQ0NDQUpSdzBBSUFnZ0JDZ0NBRWNOQUVFQklRTU1Bd3NnQkNnQ0RDQUFTUTBDSUFGQkFXcEJBQ0FCSUFaSEd5RUJJQUJCQVdvaEFBd0JDd3NnQWtFSWFrR0d0UU5CbmdSQkRpQUNRYWdCYWhBZElnQVFGeUlCUVJocVFkSTFFQTRhSUFFUUdDQUFFQjRMSUFKQndBRnFKQUFnQXdzbUFDQUFRZ0EzQW9RQklBQkNnSUNBZ09BQU53SjhJQUFnQURZQ2VDQUFRUVlRcFJBZ0FBc05BQ0FBSUFGQnNPc1BFT0VKQzBvQkFYOGpBRUVRYXlJQ0pBQWdBRUtBZ0lDQWdBRTNBaVFnQUNBQU5nSWdJQUlnQVVFZ2FqWUNDQ0FDSUFFb0FpQWdBVWM2QUF3Z0FDQUNRUWhxRUpBUklBSkJFR29rQUNBQUN3MEFJQUFnQVVINDhnOFF3Z3dMRGdBZ0FCQWNJQUJCRUdvUXZCQUxVQUVDZnlNQVFSQnJJZ0lnQVRZQ0RDQUNJQUEyQWdoQkFDRUFRUUFoQVFOQUlBRkJBa1pGQkVBZ0FrRUlhaUFCUVFKMGFpZ0NBQ0lESUFBZ0FDQURTQnNoQUNBQlFRRnFJUUVNQVFzTElBQUxPZ0VCZndKQUlBQW9BZ1FpQWlBQUtBSUlTUVJBSUFJZ0FTZ0NBRFlDQUNBQUlBSkJCR28yQWdRTUFRc2dBQ0FCRU1JUUlBQW9BZ1FhQ3d2ZkJBSUpmd0orSXdCQkVHc2lCeVFBSUFFb0FnQWlBaWdDQUNJRklBSW9BZ1JCQW5ScUlRWkNDQ0VMUVFFaEFnSi9BMEFnQlNBR1J3UkFJQUFnQlNnQ0FDSURFRE1hUVFBZ0FDQURFSU1NSWdSRkRRSWFJQVFnQWlJRE9nQWdRUUFoQWlBREJFQWdCQ2tER0NJTUlBdENkNE9FSVFzZ0RFSUlnMElEaUtjaEFnc2dCVUVFYWlFRkRBRUxDeUFBS0FLTU5DQUxOd01ZSUFFb0FnQWhBU0FIUVFBNkFBd2dCeUFCTmdJSUlBQkJyQjFxSVFJakFFRWdheUlBSkFBZ0J5Z0NDQ0lES0FJQUlnRWdBeWdDQkVFQ2RHb2hBd0pBQTBBZ0FTQURSZ1JBUVFFaEFRd0NDeUFCS0FJQUlRVWdBVUVFYWlFQklBSW9BZ2dnQlJDTEVDMEFJQTBBQ3lBQVFRRTZBQndnQUVFQk5nSVlJQUJCQ0dwQjM3MEVFQlFoQVNBQUlBQXBBeGczQXdBZ0FTRURRUUFoQmlNQVFVQnFJZ2drQUFKL0FuOGpBRUVnYXlJQkpBQWdBa0VNYWlJSktBS2dDaUlLSUFsQnBBcHFLQUlBUWFRQmJHb2hCQU5BQWtBZ0JDQUtSd1JBSUFFZ0JFR2tBV3NpQkRZQ0NDQUFLUUlBSVFzZ0FVRUFOZ0lVSUFFZ0N6Y0NEQ0FCSUFRb0FxQUJRUUZyTmdJWUlBRkJDR29ROHgxRkRRRWdBVUVJYWhES0VDZ0NBQ0VHQ3lBQlFTQnFKQUFnQmd3Q0N5QUpLQUtnQ2lFS0RBQUxBQXNpQkVFRFJ3UkFJQWhCQ0dvUXp3Z2hBU0FFRUtjYklRWWdBVUVJTmdJa0lBRWdCallDQUNBQklBVXBBaEEzQWdRZ0FTQUZLUUlZTndJTUlBRWdCU2dDSURZQ0ZDQUJRUmhxSUFNUTRBSWdBaWdDQkNBQkVLZ0hJQUVRaHdWQkFDQUVRUUZHRFFFYUMwRUJDeUVCSUFoQlFHc2tBQ0FERUE4YUN5QUFRU0JxSkFBZ0FRc2hBQ0FIUVJCcUpBQWdBQXNOQUNBQUlBRkJ1TzBQRU9FSkN3b0FJQUFRaEFOQmYwY0xEQUFnQUJEcUJDQUFFSXNNQ3lnQUlBQkNBRGNDekFFZ0FFS0FnSUNBd0FFM0FzUUJJQUFnQURZQ3dBRWdBRUVNRU9RRUlBQUxJQUFnQUVLQWdJQ0F3QUEzQWhRZ0FDQUFOZ0lRSUFCQkhHb1FqQXdhSUFBTEVBQWdBQzBBSUVVRVFCQnZBQXNnQUFzd0FRSi9Jd0JCTUdzaUFpUUFJQUlnQUJDMUNTRURJQUFnQVJDekNTQUJJQU1Rc3drZ0F4Q3FBaUFDUVRCcUpBQUxEUUFnQUNBQlFaajNFUkRoQ1FzVkFDQUFJQUVRbng4aUFDQUJLQUpVTmdKVUlBQUxmQUVGZnlBQVFlUVNhaWdDQUNJRlFRRnJJUVlDUUFOQUlBTWdCVVlOQVNBQUtBTGdFaUFCUWVRQWJHb2lCQzBBV0FSQUlBSWdBaWdDWUNJSElBUW9BbUJMQkg4Z0JDQUNFUHNESUFJb0FtQUZJQWNMUVFGcU5nSmdJQUZCQVdwQkFDQUJJQVpIR3lFQklBTkJBV29oQXd3QkN3c2dCQ0FDRUpvTUN3c2xBQ0FDRUk4ZklRSWdBVUhrRW1vb0FnQWhBU0FBSUFJMkFnUWdBQ0FDSUFGd05nSUFDdzRBSUFBZ0FSRGpCa0VCT2dCWUN3b0FJQUJCdlRFUXpRd0xDd0FnQUVIcXVnVVF6UXdMSEFBZ0FFS0FnSUNBd0FBM0FoUWdBQ0FBTmdJUUlBQWdBUkRJQ1FzUkFDQUFJQUVnQWlBRFFkM3dCaER1RWdzSEFDQUJLQUlBQ3hFQUlBQWdBU0FDSUFOQjdQNEdFTzRTQzVVQkFRUi9Jd0JCb0FGcklnUWtBQ0FFSUFNNUE1QUJJQVFnQVRrRG1BRWdCQkJKSWdWQkNHcEI4NW9KRUE0YUlBVWdCRUdZQVdvUTBna2lCMEVJYWlJR1FmZndEQkFPR2lBR0lBSVFEaG9nQmtIMzhBd1FEaG9nQnlBRVFaQUJhaERTQ1VFSWFpSUNRY2VLQ1JBT0dpQUNRYi81QUJBT0dpQUNRZk9hQ1JBT0dpQUFJQVZCREdvUVFpQUZFRkVnQkVHZ0FXb2tBQXQyQVFOL0l3QkJrQUZySWdVa0FDQUZFRWtpQmtFSWFpSUVRZk9hQ1JBT0dpQUVJQUVRbWdZZ0JFSDM4QXdRRGhvZ0JDQUNFQTRhSUFSQjkvQU1FQTRhSUFRZ0F4Q2FCaUFFUWNlS0NSQU9HaUFFUWQwOUVBNGFJQVJCODVvSkVBNGFJQUFnQmtFTWFoQkNJQVlRVVNBRlFaQUJhaVFBQzBvQUlBQkJBRFlDRkNBQUlBRTJBaGdnQUVFQU5nSU1JQUJDZ3FDQWdPQUFOd0lFSUFBZ0FVVTJBaEFnQUVFZ2FrRUFRU2dRZVJvZ0FFRWNhaERyRkNBQVFvQ0FnSUJ3TndKSUN3d0FJQUJCQUNBQUVNa0pHd3R4QVFOL0l3QkJvQUZySWdNa0FDQURRUWhxRUVraUJFRUlhaUlGUWRTMUNoQU9HaUFGSUFFUW1nWWdCVUdUNXdrUURob2dCVUh6bWdrUURob2dBeUFDS1FJQU53T1lBU0FFSUFOQm1BRnFFTFlFUVFocVFmT2FDUkFPR2lBQUlBUkJER29RUWlBRUVGRWdBMEdnQVdva0FBdHlBUU4vSUFCQ2dJQ0FnREEzQWhBZ0FDQUFOZ0lNSUFBZ0FTZ0NCQ0lDRUx3TklBRW9BZ0FpQVNBQ1FRSjBhaUVFSUFBb0FoQWhBd04vSUFFZ0JFWUVmeUFBQlNBQUlBTkJBV29pQWpZQ0VDQUFLQUlNSUFOQkFuUnFJQUVvQWdBMkFnQWdBVUVFYWlFQklBSWhBd3dCQ3dzTEdRQWdBQ0FCSUFJZ0EwRzQ2UTlCMk9vUFFaanBEeERCREF0SUFRRi9Jd0JCRUdzaUJpUUFJQVlnQlRZQ0RDQUdJQVEzQXdBZ0FDQUdLQUlNSUFZcEF3QVFuUVFpQUNBRE5nSUVJQUFnQWpZQ0FDQUFJQUUyQWdBZ0JrRVFhaVFBSUFBTEdnQWdBQ0FCRUxvQklnQkZCRUJCQUE4TElBQXZBUjRnQWtZTGpRRUJCSDhqQUVIZ0FXc2lCQ1FBSUFSQklHb2lCU0FBS0FJRUlnWW9BZ0JCY2lBQUtBSUlFQkFnQkVFUWFpSUhJQVlvQWdBZ0F4QTNJQVVnQnhBU0dpQUZRYVRDQ2hBT0dpQUVJQVlvQWdBb0FnQW9BZ0FRZ1FJZ0JTQUVFQklhSUFVZ0FoQU9HaUFGSUFFUUVob2dCQ2dDM0FFaEFDQUVFQThhSUFjUUR4b2dCUkFSSUFSQjRBRnFKQUFnQUF0YUFRTi9Jd0JCTUdzaUFpUUFJQUpCQ0dvZ0FrRVFhaUlESUFKQkpHb2lCRVlnQVVJQVdYSUVmeUFEQlNBRFFTMDZBQUJDQUNBQmZTRUJJQU5CQVdvTElBUWdBUkNZRXlBQUlBTWdBaWdDQ0JEbUNTQUNRVEJxSkFBTERnQWdBQ0FCSUFFUTBnZ1EvZ1lMRXdBZ0FDQUJLQUlBSWdBMkFnQWdBQkMwQmd1SUFRRURmeU1BUVJCcklnUWtBQUpBSUFFdEFBQWlBMFVFUUVFQUlRTU1BUXNDUUNBQkxRQUJSUVJBSUFBZ0F6b0FBQXdCQzBFQUlRTWdCRUVNYWlBQklBSVFpZ1pGRFFFQ1FDQUVLQUlNSWdVZ0FoRGhEQ0lCUVg5SERRQkJJQ0VCSUFWQnI4QUFSZzBBSUFWQm9BRkhEUUlMSUFBZ0FUb0FBQXRCQVNFREN5QUVRUkJxSkFBZ0F3c1JBQ0FBS0FJQUlnQUVRQ0FBRU1FRkN3c09BQ0FBSUFFUS9BUTJBZ0FnQUF0dUFRTi9Ba0FnQVJDR0RTSUNRZkQvLy84RFNRUkFBa0FnQWhDRUNnUkFJQUFnQWhEQUJRd0JDeUFBSUFJUWl3ZEJBV29pQXhDVEJpSUVFSmtDSUFBZ0F4Q0tCeUFBSUFJUWh3UWdCQ0VBQ3lBQUlBRWdBaERDQkNBQUlBSkJBblJxUVFBUW1RSU1BUXNRdUFNQUN3dUNBUUVEZnlNQVFSQnJJZ1VrQUFKQUlBSWdBQkNiQVNJRUlBQVFPeUlEYTAwRVFDQUNSUTBCSUFBUXdRTVFnd0VpQkNBRGFpQUJJQUlRdVFNYUlBQWdBaUFEYWlJQkVKZ0lJQVZCQURvQUR5QUJJQVJxSUFWQkQyb1EwUUlNQVFzZ0FDQUVJQUlnQTJvZ0JHc2dBeUFEUVFBZ0FpQUJFSllJQ3lBRlFSQnFKQUFnQUF1eUFRRUdmeU1BUVJCcklnTWtBQ0FCS0FJQUlRaEJBQ0FBS0FJQUlnY2dBQkRHQlNnQ0FFSGRGMFlpQkJ0QmZ5QUNLQUlBSUFkcklnVkJBWFFpQmtFRUlBWWJJQVZCLy8vLy93ZFBHeUlGRUtJS0lnWUVRQ0FFUlFSQUlBQVFwUWdhQ3lBRFFkc1hOZ0lFSUFBZ0EwRUlhaUFHSUFOQkJHb1E5QUVpQkJENkV5RUFJQVFRMkFFZ0FTQUFLQUlBSUFnZ0IydHFOZ0lBSUFJZ0FDZ0NBQ0FGUVh4eGFqWUNBQ0FEUVJCcUpBQVBDeEJ2QUF1V0FRRUVmeUFCTFFBTEVQc0VSUVJBSUFBZ0FTa0NBRGNDQUNBQUlBRW9BZ2cyQWdnZ0FBOExJQUFoQWlBQktBSUFJUVFDUUFKQUFrQWdBU2dDQkNJREVJUUtCRUFnQWlBREVNQUZEQUVMSUFOQjhQLy8vd05QRFFFZ0FpQURFSXNIUVFGcUlnVVFrd1lpQVJDWkFpQUNJQVVRaWdjZ0FpQURFSWNFSUFFaEFnc2dBaUFFSUFOQkFXb1F3Z1FNQVFzUXVBTUFDeUFBQ3hFQUlBQWdBQ2dDQUVFRWFqWUNBQ0FBQ3hFQUlBQWdBQ2dDQUVFQmFqWUNBQ0FBQzlJQ0FRRi9Ba0FDUUNBREtBSUFJQUpIRFFCQkt5RUtJQUFnQ1NnQ1lFY0VRRUV0SVFvZ0NTZ0NaQ0FBUncwQkN5QURJQUpCQVdvMkFnQWdBaUFLT2dBQURBRUxBa0FnQmhBN1JTQUFJQVZIY2tVRVFFRUFJUVlnQ0NnQ0FDSUFJQWRyUVo4QlNnMEJJQVFvQWdBaEFTQUlJQUJCQkdvMkFnQWdBQ0FCTmdJQURBSUxRWDhoQmlBSklBbEI2QUJxSUFBUWdBMGdDV3NpQUVIY0FFb05BQ0FBUVFKMUlRVUNRQUpBQWtBZ0FVRUlhdzREQUFJQUFRc2dBU0FGU2cwQkRBSUxJQUZCRUVjZ0FFSFlBRWh5RFFBZ0F5Z0NBQ0lBSUFKR0lBQWdBbXRCQWtweURRRWdBRUVCYXkwQUFFRXdSdzBCSUFSQkFEWUNBQ0FESUFCQkFXbzJBZ0FnQUNBRlFZQ1REMm90QUFBNkFBQkJBQThMSUFNZ0F5Z0NBQ0lBUVFGcU5nSUFJQUFnQlVHQWt3OXFMUUFBT2dBQUlBUWdCQ2dDQUVFQmFqWUNBRUVBSVFZTElBWVBDeUFFUVFBMkFnQkJBQXNSQUNBQUlBRWdBQ2dDQUNnQ0hCRUJBQXNMQUNBQVFiUzlJQkRlQXd1YkF3RURmeU1BUVJCcklnb2tBQ0FLSUFBNkFBOENRQUpBQWtBZ0F5Z0NBQ0FDUncwQVFTc2hDeUFBUWY4QmNTSU1JQWt0QUJoSEJFQkJMU0VMSUFrdEFCa2dERWNOQVFzZ0F5QUNRUUZxTmdJQUlBSWdDem9BQUF3QkN5QUdFRHRGSUFBZ0JVZHlSUVJBUVFBaEFDQUlLQUlBSWdFZ0IydEJud0ZLRFFJZ0JDZ0NBQ0VBSUFnZ0FVRUVhallDQUNBQklBQTJBZ0FNQVF0QmZ5RUFBbjhnQ1NJRlFScHFJUVlnQ2kwQUR5RUhBMEFDUUNBRklBWkhCSDhnQlMwQUFDQUhSdzBCSUFVRklBWUxEQUlMSUFWQkFXb2hCUXdBQ3dBTElBbHJJZ1ZCRjBvTkFRSkFBa0FDUUNBQlFRaHJEZ01BQWdBQkN5QUJJQVZLRFFFTUF3c2dBVUVRUnlBRlFSWkljZzBBSUFNb0FnQWlBU0FDUmlBQklBSnJRUUpLY2cwQ0lBRkJBV3N0QUFCQk1FY05Ba0VBSVFBZ0JFRUFOZ0lBSUFNZ0FVRUJhallDQUNBQklBVkJnSk1QYWkwQUFEb0FBQXdDQ3lBRElBTW9BZ0FpQUVFQmFqWUNBQ0FBSUFWQmdKTVBhaTBBQURvQUFDQUVJQVFvQWdCQkFXbzJBZ0JCQUNFQURBRUxRUUFoQUNBRVFRQTJBZ0FMSUFwQkVHb2tBQ0FBQ3dvQUlBQWdBVUVDZEdvTEVRQWdBQ0FCSUFBb0FnQW9BZ3dSQVFBTEN3QWdBRUdzdlNBUTNnTUxFQUFnQUNBQlFZQ0FnSUI0Y2pZQ0NBc2tBQ0FBUVFKUEJIOGdBRUVFYWtGOGNTSUFJQUJCQVdzaUFDQUFRUUpHR3dWQkFRc0xqQUVCQkg4Z0FDRURBa0FnQVNBQ0VKMElJZ1JCOFAvLy93TkpCRUFDUUNBRUVJUUtCRUFnQXlBRUVNQUZEQUVMSUFNZ0JCQ0xCMEVCYWlJRkVKTUdJZ1lRbVFJZ0F5QUZFSW9ISUFNZ0JCQ0hCQ0FHSVFNTEEwQWdBU0FDUndSQUlBTWdBU2dDQUJDWkFpQURRUVJxSVFNZ0FVRUVhaUVCREFFTEN5QURRUUFRbVFJTUFRc1F1QU1BQ3lBQUN3OEFJQUFnQUNnQ0FDZ0NIQkVBQUFzTUFDQUFJQUZCQkdvUStRWUxEd0FnQUNBQUtBSVlJQUZxTmdJWUN3Y0FJQUJCZjBZTER3QWdBQ0FBS0FJQUtBSVlFUUFBQ3dvQUlBQkJHSFJCR0hVTEZBQWdBU0FBSUFFb0FnQWdBQ2dDQUJEMkZCc0xpZ0VCQW44Z0FTZ0NBQ0lESUFBb0FnQVF4UUVoQkNBQ0tBSUFJQU1ReFFFaEF3Si9Ba0FnQkVVRVFFRUFJQU5GRFFJYUlBRWdBaENwQVVFQklBRW9BZ0FnQUNnQ0FCREZBVVVOQWhvZ0FDQUJFS2tCREFFTElBTUVRQ0FBSUFJUXFRRkJBUThMSUFBZ0FSQ3BBVUVCSUFJb0FnQWdBU2dDQUJERkFVVU5BUm9nQVNBQ0VLa0JDMEVDQ3d1RkFRSURmd0YrQWtBZ0FFS0FnSUNBRUZRRVFDQUFJUVVNQVFzRFFDQUJRUUZySWdFZ0FFSUtnQ0lGUXZZQmZpQUFmS2RCTUhJNkFBQWdBRUwvLy8vL253RldJUUlnQlNFQUlBSU5BQXNMSUFXbklnSUVRQU5BSUFGQkFXc2lBU0FDUVFwdUlnTkI5Z0ZzSUFKcVFUQnlPZ0FBSUFKQkNVc2hCQ0FESVFJZ0JBMEFDd3NnQVF0NEFRTjhSQUFBQUFBQUFQQy9JQUFnQUtJaUFpQUFvaUlESUFJZ0FxSWlCS0lnQkNBQ1JNMGJsNys1WW9NL29rUk85T3o4clYxb1A2Q2lJQUpFempPTWtQTWRtVCtpUlA1YWhoM0pWS3Mvb0tDaUlBTWdBa1J5bjVrNC9STEJQNkpFbjhrWU5FMVYxVCtnb2lBQW9LQWlBS01nQUNBQkc3WUxaQUlCZndGK0l3QkJFR3NpQWlRQUlBQUNmaUFCUlFSQVFnQU1BUXNnQWlBQnJVSUFJQUZuSWdGQjBRQnFFTXdDSUFJcEF3aENnSUNBZ0lDQXdBQ0ZRWjZBQVNBQmE2MUNNSVo4SVFNZ0Fpa0RBQXMzQXdBZ0FDQUROd01JSUFKQkVHb2tBQXZ3QVFJQ2Z3SjhJQUM4SWdGQmdJQ0EvQU5HQkVCREFBQUFBQThMQWtBZ0FVR0FnSUQ4QjJ0Qi8vLy9oM2hOQkVBZ0FVRUJkQ0lDUlFSQUVLY1ZEd3NnQVVHQWdJRDhCMFlOQVNBQ1FZQ0FnSGhKSUFGQkFFNXhSUVJBSUFBUXRRMFBDeUFBUXdBQUFFdVV2RUdBZ0lEY0FHc2hBUXRCa09FTkt3TUFJQUVnQVVHQWdNejVBMnNpQVVHQWdJQjhjV3UrdXlBQlFROTJRZkFCY1NJQ1FZamZEV29yQXdDaVJBQUFBQUFBQVBDL29DSURJQU9pSWdTaVFaamhEU3NEQUNBRG9rR2c0UTByQXdDZ29DQUVvaUFCUVJkMXQwR0k0UTByQXdDaUlBSkJrTjhOYWlzREFLQWdBNkNndGlFQUN5QUFDd2dBSUFDOFFSUjJDOEVEQVFaL0l3QkJ3QUZySWdRa0FDQUFJQUlRSUNFQ0lBQWdBeEFnSVFNQ1FBSkFJQUl2QVI1QjdpbEdCRUFnQXk4QkhrSHVLVVlOQVFzZ0JDQUFRWElnQVJBUUlBUkJtTE1CRUE0YUlBUW9BcndCSVFJZ0JCQVJEQUVMSUFKQkFoQWJJUVVnQWtFREVCc2hCaUFDUVFRUUd5RUNJQU5CQWhBYklRY2dBMEVERUJzaENDQURRUVFRR3lFRElBUWdBQ0FGRU4wQklBUW9BZ1FoQlNBRUxRQUJJUWtnQkNBQUlBY1EzUUVDUUNBSlJRMEFJQVF0QUFGRkRRQWdCU0FFS0FJRVJnMEFJQVFnQUVGeUlBRVFFQ0FFUWMzSENoQU9HaUFFUWZtV0F4QU9HaUFFS0FLOEFTRUNJQVFRRVF3QkN5QUVJQUFnQmhEZEFTQUVLQUlFSVFVZ0JDMEFBU0VHSUFRZ0FDQUlFTjBCQWtBZ0JrVU5BQ0FFTFFBQlJRMEFJQVVnQkNnQ0JFWU5BQ0FFSUFCQmNpQUJFQkFnQkVIK3h3b1FEaG9nQkVINWxnTVFEaG9nQkNnQ3ZBRWhBaUFFRUJFTUFRc2dCQ0FBSUFJUTNRRWdCQ2dDQkNFRklBUXRBQUVoQmlBRUlBQWdBeERkQVVFQUlRSWdCa1VOQUNBRUxRQUJSUTBBSUFVZ0JDZ0NCRVlOQUNBRUlBQkJjaUFCRUJBZ0JFR3l5QW9RRGhvZ0JFSDVsZ01RRGhvZ0JDZ0N2QUVoQWlBRUVCRUxJQVJCd0FGcUpBQWdBZ3NpQVFGL0lBQWdBUkN4QWdSL0lBQWdBQ0FCRUxvQktBSUFLQUlJRUhjRlFRQUxDeTBCQW44Q1FDQUFJQUVRdWdFaUEwVU5BQ0FETHdFZVFSZEhEUUFnQUNBQUlBRVF3UUVRN3dFaEFnc2dBZ3NMQUNBQUlBRkJFeEQxQmdzNEFRRi9Jd0JCSUdzaUFpUUFJQUlnQVRZQ0VDQUNRUmhxSUFBZ0FTQUNRUkJxRUlNUElBSW9BaGdoQUNBQ1FTQnFKQUFnQUVFTWFndTlBUUVHZnlBQ0tBSUFJZ1FvQWdBaEJRSi9Ba0FnQVNnQ0FDSUdLQUlBSWdjZ0FDZ0NBQ0lES0FJQUlnaFBCRUJCQUNBRklBZFBEUUlhSUFFZ0JEWUNBQ0FDSUFZMkFnQkJBU0FCS0FJQUlnSW9BZ0FnQUNnQ0FDSURLQUlBVHcwQ0dpQUFJQUkyQWdBZ0FTQUROZ0lBREFFTElBVWdCMGtFUUNBQUlBUTJBZ0FnQWlBRE5nSUFRUUVQQ3lBQUlBWTJBZ0FnQVNBRE5nSUFRUUVnQWlnQ0FDSUFLQUlBSUFoUERRRWFJQUVnQURZQ0FDQUNJQU0yQWdBTFFRSUxDNjBaQVFoL0l3QkIwQUZySWdRa0FFR2VuU0F0QUFCRkJFQkJucDBnUVFFNkFBQkJuWjBnUVFFNkFBQUxJQUV2QVI0aEJnSkFBa0FnQTBFQmF5SUZJQUVvQWdRZ0FTZ0NBQ0lIYTBFQ2RTSUpTUVJBSUFjZ0JVRUNkR29vQWdBaUIwRUNka0VCY1NBSFFmK0hmbkVRMVExcUlBa2dBMnRHRFFFZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBIM2x3TVFEaG9nQkNnQ3pBRWhBaUFERUJFTUFndEJBQ0VISUFVZ0NVWU5BQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRZmVYQXhBT0dpQUVLQUxNQVNFQ0lBTVFFUXdCQ3lBQ0tBSVFJQWRCd0FCeElndEJCblpGY1FSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFOQm5NY0VFQTRhSUFRb0Fzd0JJUUlnQXhBUkRBRUxBa0FDUUFKQUlBZEZEUUFnQjBHNGdBUnhFTlVOUVFKUEJFQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0JDQUFRYllrRURjZ0F5QUVFQklhSUFOQjVlMEJFQTRhSUFRb0Fzd0JJUUlnQkJBUEdpQURFQkVNQkFzZ0JoRDdGU0VLQW44Q1FDQUdRZGdBYXlJRlFRWk5RUUJCQVNBRmRFSFZBSEViRFFBZ0JrR3lBbXNpQlVFR1RVRUFRUUVnQlhSQjFRQnhHdzBBUVFBTUFRdEJBUXNoQlFKL0lBWkI0Z0JyUVFKUEJFQWdCU0FHUWNBQ1J3MEJHZ3NnQUVHQUFXcEJseWNRYUFzaENBSi9JQVpCdWdKSEJFQkJBQ0FHUWVBQVJ3MEJHZ3NnQUVHQUFXcEJrU2NRYUFzaENRSi9Ba0FDUUFKQUFrQUNRQUpBQWtBZ0IwRUJjUVJBSUFrZ0NuSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEdQdmdFUURob2dCQ2dDekFFaEFpQURFQkVNRFFzZ0FDQUFJQUVvQWdBZ0EwRUNkR29vQWdBUXpRSVFkMFVFUUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWZDTEFoQU9HaUFFS0FMTUFTRUNJQU1RRVF3TkN5QUNLQUlFUVFSUERRRWdBMEVCYWlFREN3Si9JQWRCQW5FRVFDQUlJQVpCM3dCR2NpQUdRYmtDUmlBSmNuSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhPNFFrUURob2dBMEdncFFNUURob2dCQ2dDekFFaEFpQURFQkVNRGdzZ0IwRUVjUVJBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CbWJFRUVBNGFJQVFvQXN3QklRSWdBeEFSREE0TElBQWdBU2dDQUNBRFFRSjBhaWdDQUJETkFpRUlBa0FnQlNBSmNrRUJSZ1JBSUFBZ0NCQjNEUUVnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEdjM0FvUURob2dBMEhVNHdRUURob2dCQ2dDekFFaEFpQURFQkVNRHdzZ0FDQUlFRkFOQUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWRla0NoQU9HaUFEUWFTbEF4QU9HaUFFS0FMTUFTRUNJQU1RRVF3T0N5QUNLQUlFUVFSSkJFQWdBMEVCYWlFRFFRQU1BZ3NnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhPM2dRUURob2dCQ2dDekFFaEFpQURFQkVNRFF0QkFDQUhRUVJ4UlEwQUdpQUZSUVJBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CMHIwQkVBNGFJQVFvQXN3QklRSWdBeEFSREEwTElBQWdBMEVDZENJRklBRW9BZ0JxS0FJQUVNMENJUWtnQUNBRklBRW9BZ0JxS0FJRUVNMENJUWdDUUNBQUlBa1FyZ0VFUUNBQUlBZ1FyZ0VOQVFzZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHTDhRa1FEaG9nQTBHVmxnRVFEaG9nQkNnQ3pBRWhBaUFERUJFTURRc2dBaENpQnlFRklBQWdDUkJGSVFrZ0FDQUlFRVVoQ0NBRklBbEhCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEdmdEFvUURob2dBeUFGRUNFYUlBTkI2SkVLRUE0YUlBTWdDUkFoR2lBRUtBTE1BU0VDSUFNUUVRd05DeUFGSUFoSERRSWdBMEVDYWlFRFFRRUxJUWtnQjBFSWNRUkFJQUlvQWdSQkEwWUVRQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRZmVDQ1JBT0dpQUVLQUxNQVNFQ0lBTVFFUXdOQ3lBQUlBQWdBU2dDQUNBRFFRSjBhaWdDQUNJRkVNMENJZ2dReHdGRkJFQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0EwSG44UWtRRGhvZ0EwRzgwQUVRRGhvZ0JDZ0N6QUVoQWlBREVCRU1EUXNnQUNBRkVIQVFvd0pGQkVBZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHbThnQVFEaG9nQkNnQ3pBRWhBaUFERUJFTURRc2dBaENpQnlJRklBQWdDQkJGSWdoSERRTWdBMEVCYWlFREN3SkFJQWRCRUhGRkRRQWdBaWdDQkVFRFJnUkFJQVJCRUdvaUF5QUFRWElnQVJBUUlBTkJ0b01KRUE0YUlBUW9Bc3dCSVFJZ0F4QVJEQTBMSUFBZ0FDQUJLQUlBSUFOQkFuUnFLQUlBRU0wQ0lnVVF4d0ZGQkVBZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHZjhna1FEaG9nQTBHODBBRVFEaG9nQkNnQ3pBRWhBaUFERUJFTURRc2dBaENpQnlJSUlBQWdCUkJGSWdWSEJFQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0EwSHp0QW9RRGhvZ0F5QUlFQ0VhSUFOQjZKRUtFQTRhSUFNZ0JSQWhHaUFFS0FMTUFTRUNJQU1RRVF3TkN5QURRUUZxSVFNZ0FDZ0NCQzBBTEEwQUlBQW9BZ0FvQWdBUVIwVWdCa0hnQUd0QkFrbHlJQVpCdWdKclFRSkpjZzBBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQVFnQUVHM0pCQTNJQU1nQkJBU0dpQURRYXVnQVJBT0dpQUVLQUxNQVNFQ0lBUVFEeG9nQXhBUkRBd0xJQWRCSUhFRVFDQUdRZUFBYTBFQ1NTQUdRYm9DYTBFQ1NYSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEdLN3dFUURob2dCQ2dDekFFaEFpQURFQkVNRFFzZ0FpZ0NCRUVEUmdSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFOQjhJTUpFQTRhSUFRb0Fzd0JJUUlnQXhBUkRBMExJQUFnQUNBQktBSUFJQU5CQW5ScUtBSUFJZ2dRelFJUUlDSUZSUTBFSUFVdkFSNUJIRWNFUUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWVMMEJoQU9HaUFFS0FMTUFTRUNJQU1RRVF3TkN5QUVRZ0EzQXdBZ0FDQUZLQUlBS0FJTUlBUVF3d1ZGRFFVZ0JDa0RBRUlFVWdSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFOQjR2UUdFQTRhSUFRb0Fzd0JJUUlnQXhBUkRBMExBa0FnQUNBRktBSUFLQUlJSWdVUXRnRUVRQ0FBSUFVUVJVRUNSZzBCQ3lBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUVlTQ0J4QU9HaUFFS0FMTUFTRUNJQU1RRVF3TkN5QUFJQWdRY0JDakFrVUVRQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRZDd5QUJBT0dpQUVLQUxNQVNFQ0lBTVFFUXdOQ3lBRFFRRnFJUU1MSUFNZ0MwVU5CeG9nQmtIZkFHc2lCVUVFUzBFQklBVjBRUmx4UlhJTkJRd0dDeUFFUVJCcUlnTWdBRUZ5SUFFUUVDQURRY0xkQkJBT0dpQUVLQUxNQVNFQ0lBTVFFUXdLQ3lBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWZlekNoQU9HaUFESUFVUUlSb2dBMEhva1FvUURob2dBeUFJRUNFYUlBUW9Bc3dCSVFJZ0F4QVJEQWtMSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CeDdRS0VBNGFJQU1nQlJBaEdpQURRZWlSQ2hBT0dpQURJQWdRSVJvZ0JDZ0N6QUVoQWlBREVCRU1DQXRCbXk5QnhxOENRZW9EUVlMQ0FSQUFBQXRCckowSlFjYXZBa0h6QTBHQ3dnRVFBQUFMSUFaQnVRSkdJQVpCd0FKR2NnMEFJQVJCRUdvaUF5QUFRWElnQVJBUUlBTkJtZXNNRUE0YUlBTkJtODRLRUE0YUlBTkIvdjhFRUE0YUlBUW9Bc3dCSVFJZ0F4QVJEQVVMSUFJb0FoQkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEd1NGdFUURob2dCQ2dDekFFaEFpQURFQkVNQlFzZ0FDQUFJQUVvQWdBZ0EwRUNkR29vQWdBUXpRSVFVRVVOQWlBRFFRRnFDeUVESUFkQmdBRnhCRUFnQ1NBS2NrVUVRQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRYS9KQ2hBT0dpQURRWUgvQkJBT0dpQUVLQUxNQVNFQ0lBTVFFUXdGQ3lBQUlBQWdBU2dDQUNBRFFRSjBhaWdDQUJETkFoQjNSUVJBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CbjR3Q0VBNGFJQVFvQXN3QklRSWdBeEFSREFVTElBSW9BZ1JCQkU4RVFDQUVRUkJxSWdNZ0FFRnlJQUVRRUNBRFFZZmVCQkFPR2lBRUtBTE1BU0VDSUFNUUVRd0ZDeUFDS0FJUURRTWdBMEVCYWlFREN5QUhRWUFDY1FSQUlBWkI0d0JIQkVBZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHanV3SVFEaG9nQTBIakFCQ0JBUkFPR2lBRFFhNi9BaEFPR2lBRElBWVFnUUVRRGhvZ0JDZ0N6QUVoQWlBREVCRU1CUXNnQjBHQUNIRkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhkdmdJUURob2dBMEhqQUJDQkFSQU9HaUFFS0FMTUFTRUNJQU1RRVF3RkN5QUFJQUVnQVNnQ0FDQURRUUowYWlnQ0FCRElCU0lDRFFRZ0EwRUJhaUVEQ3lBSFFZQUVjVVVOQUNBR1FlSUFSaUFHUWNBQ1JuSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhvdWdJUURob2dBMEhpQUJDQkFSQU9HaUFEUWRPNUFoQU9HaUFEUWNBQ0VJRUJFQTRhSUFOQnJyOENFQTRhSUFNZ0JoQ0JBUkFPR2lBRUtBTE1BU0VDSUFNUUVRd0VDeUFIUVlBSWNVVUVRQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRWW0rQWhBT0dpQURJQVlRZ1FFUURob2dCQ2dDekFFaEFpQURFQkVNQkFzZ0FDQUJJQUVvQWdBZ0EwRUNkR29vQWdBUXlBVWlBZzBEQzBFQUlRSU1BZ3NnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhtaEFJUURob2dCQ2dDekFFaEFpQURFQkVNQVFzZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHMGp3Y1FEaG9nQkNnQ3pBRWhBaUFERUJFTElBUkIwQUZxSkFBZ0FnczRBUUYvUVFNaEFpQUFRY0FDUmlBQVFlSUFhMEVDU1hJZ0FTZ0NCRUVEUm5FRWYwRURCU0FCRUtJSElBRW9BZ3hxSUFBUTFnMXFDd3RTQUFKL0lBQW9BZ1FpQUVFR1N3UkFRUUFnQUVILy8vLy9CMGNOQVJwQjFaSUhRY2F2QWtIZUFVR3V5UU1RQUFBTFFRRWdBSFFpQUVIU0FIRkZCRUFnQUVFTWNVVUVRRUVCRHd0QkF3OExRUUlMQzBvQkFYOENRQ0FCUlEwQUlBRW9BZ3dpQVNBQUtBSUVJQUFvQWdBaUFHdEJBblZQRFFBZ0FDQUJRUUowYWlnQ0FDSUFRUUFnQUFSL0lBQW9BZ1FROWhVRlFRQUxHeUVDQ3lBQ0N4MEFJQUFvQXBBRFFRRkhCSDhnQUNnQ2tBTkJBa1pCQm5RRlFTQUxDNnNGQVFWL0l3QkJJR3NpQmlRQVFRRWhCd0pBQWtBQ1FBSkFBa0FEUUFKQUFrQUNRQUpBSUFNZ0FCQWdJZ1V2QVI1QkZXc09EQUVCQWdnQUFBQURDUWNGQmdVTElBTkJnQUZxUVk0cUVHZ0VRQ0FES0FLY0EwRURkaUVFREFrTFFkV1NCMEdvbWdKQndnSkJrOGNERUFBQUN5QUZLQUlBS0FJSVFRTjJJUVFNQndzZ0JTZ0NBQ0lBS0FJTUlBZHNJUWNnQUNnQ0NDRUFEQUVMQ3lBRElBVW9BZ0FvQWd3UUlDSUlMd0VlRUw4SURRUWdDQzhCSGtFclJnUkFJQWdvQWdBb0FneEJBV3NoQkNBRktBSUFLQUlJSUFFZ0FpQURFS1VISVFFZ0F5QUFFTjRCSWdCQkJHb2hBaUFBS0FJQUlRQURRQUpBSUFBZ0FrWUVmMEVBQlNBQUtBSVFRUVpIRFFFZ0FDZ0NGQ2dDQUFzZ0JHd2dBV29oQkF3SEN5QUFFRXdoQUF3QUN3QUxRY3Z5Q0VHb21nSkIwZ0pCazhjREVBQUFDMEhWa2dkQnFKb0NRWWdEUVpQSEF4QUFBQXNnQXlnQ21BTWhCQXdDQ3lBR1FSQnFJQUFnQXhESkJRSkFJQVlvQWhBaUJTQUdLQUlVSWdGR0JIOUJBQVZCZnlFRUlBWkJDR29nQXlBQUlBRWdCV3RCQW5WQkFXc2lCUkRjRFNBQlFRUnJJUUVnQmlnQ0NDRUFBMEFDUUNBR0tBSU1JQUJHQkVBZ0JFRi9SdzBCUWNYQ0EwR29tZ0pCZ1FOQms4Y0RFQUFBQ3lBQUtBSWdJQVZIRFFNZ0FDZ0NFRUVqUmdSQUlBQW9BaFFvQWdBaEJBc2dBQkJNSVFBTUFRc0xJQUVvQWdBaEFDQUdJQVUyQWdRZ0JpQUFOZ0lBSUFJZ0JoQzFDaUVBSUFFb0FnQWdBQ0FDSUFNUXBRY2dCR29MSVFRZ0JrRVFhaEF5R2d3Q0MwR2lKRUdvbWdKQitnSkJrOGNERUFBQUN5QUZLQUlBSWdRb0Fnd2hBQ0FCS0FJQVFRRkdCRUFnQVNnQ0JDQUFiQ0VFREFFTElBTWdCQ2dDQ0JBZ0tBSUFJZ1FvQWd3aEJTQUVLQUlJSUFFZ0FpQURFS1VISVFJZ0FTZ0NCQ0FGUVFGcmJDQUFJQUpzYWlFRUN5QUdRU0JxSkFBZ0JDQUhiQXZtQXdFRmZ5TUFRU0JySWdZa0FFRUJJUWNDZndKQUFrQUNRQUpBQWtBRFFBSkFBa0FDUUNBRUlBQVFJQ0lGTHdFZVFSVnJEZ3dJQ0FFQ0FBQUFCQVFGQndZSEN5QUVRWUFCYWtHT0toQm9CRUFnQkNnQ25BTkJBM1lNQ1F0QjFaSUhRYWlhQWtISkFVRzF5Z0FRQUFBTFFRUWdCU2dDQUNJQUtBSU1JZ1VnQlVFRFJoc2dCMndoQnlBQUtBSUlJUUFNQVFzTElBVW9BZ0FpQlNnQ0NDRUFBbjhnQWlnQ0FFRUJSZ1JBSUFBZ0FTQUNJQU1nQkJDbUJ3d0JDeUFGS0FJTUlRVWdCQ0FBRUNBb0FnQW9BZ2dnQVNBQ0lBTWdCQkNtQjBFRUlBVWdCVUVEUmh0c0N5SUFJQUZGRFFVYUlBQkJEMnBCY0hFTUJRc2dCU2dDQUNnQ0NDQUJJQUlnQXlBRUVLWUhJZ0FnQVVVTkJCb2dBRUVQYWtGd2NRd0VDeUFHUVJCcUlBQWdCQkRKQlNBR0tBSVVJQVlvQWhCclFRSjFJUWxCQUNFRlFRRWhBZ05BSUFVZ0NVWUVRQ0FHUVJCcUVESWFJQUpCRDJwQmNIRWdBaUFCR3d3RkJTQUdLQUlRSUFWQkFuUnFLQUlBSVFnZ0JpQUZOZ0lNSUFZZ0FEWUNDQ0FDSUFnZ0FTQURJQVpCQ0dvUXRRb2dBeUFFRUtZSElnZ2dBaUFJU3hzaEFpQUZRUUZxSVFVTUFRc0FDd0FMSUFRb0FwZ0REQUlMUWRXU0IwR29tZ0pCZ2dKQnRjb0FFQUFBQ3lBRktBSUFLQUlJUVFOMkN5RUFJQVpCSUdva0FDQUFJQWRzQzhRQ0FRSi9JQU1nQVNBQUVOUUJJUVFnQXlBQ0lBRVExQUVoQlFKQUFuOENmeUFFUlFSQVFRQWhCQ0FGUlEwRElBRW9BZ0FoQkNBQklBSW9BZ0EyQWdBZ0FpQUVOZ0lBSUFFb0FnUWhCQ0FCSUFJb0FnUTJBZ1FnQWlBRU5nSUVRUUVoQkNBRElBRWdBQkRVQVVVTkF5QUFLQUlBSVFNZ0FDQUJLQUlBTmdJQUlBRWdBellDQUNBQVFRUnFJUU1nQVVFRWFnd0JDeUFBS0FJQUlRUWdCUVJBSUFCQkJHb2hBeUFBSUFJb0FnQTJBZ0FnQWlBRU5nSUFJQUpCQkdvaEFrRUJEQUlMSUFBZ0FTZ0NBRFlDQUNBQklBUTJBZ0FnQUNnQ0JDRUVJQUFnQVNnQ0JEWUNCQ0FCSUFRMkFnUkJBU0VFSUFNZ0FpQUJFTlFCUlEwQ0lBRkJCR29oQXlBQktBSUFJUUFnQVNBQ0tBSUFOZ0lBSUFJZ0FEWUNBQ0FDUVFScUN5RUNRUUlMSVFRZ0F5Z0NBQ0VBSUFNZ0FpZ0NBRFlDQUNBQ0lBQTJBZ0FMSUFRTHJBTUJCbjhnQVNnQ0FFRUNUZ1JBSUFBZ0FDZ0NERUVCYWpZQ0RBc0NRQ0FBS0FJRUlBQW9BZ2hKQkVBZ0FDQUFLQUlFSUFFUXhRZEJOR28yQWdRTUFRc2pBRUVnYXlJR0pBQWdBQ0FBS0FJRUlBQW9BZ0JyUVRSdFFRRnFFUDhWSVFNZ0FDZ0NCQ0FBS0FJQWEwRTBiU0VFSUFaQkNHb2lBa0VBTmdJTUlBSWdBRUVJYWlJSE5nSVFJQU1FUUNBSElBTVEvaFVoQlFzZ0FpQUZOZ0lBSUFJZ0JTQUVRVFJzYWlJRU5nSUlJQUlnQlNBRFFUUnNhallDRENBQ0lBUTJBZ1FnQWlnQ0NDQUJFTVVIR2lBQ0lBSW9BZ2hCTkdvMkFnZ2dBQ2dDQUNFRElBQW9BZ1FoQVFOQUlBRWdBMGNFUUNBQ0tBSUVRVFJySUFGQk5Hc2lBUkRGQnhvZ0FpQUNLQUlFUVRSck5nSUVEQUVMQ3lBQUtBSUFJUUVnQUNBQ0tBSUVOZ0lBSUFJZ0FUWUNCQ0FBS0FJRUlRRWdBQ0FDS0FJSU5nSUVJQUlnQVRZQ0NDQUFLQUlJSVFFZ0FDQUNLQUlNTmdJSUlBSWdBVFlDRENBQ0lBSW9BZ1EyQWdBZ0FpZ0NCQ0VCQTBBZ0FTQUNLQUlJSWdOSEJFQWdBaUFEUVRScklnTTJBZ2dnQXhDSEJRd0JDd3NnQWlnQ0FDSUJCRUFnQVJBZkN5QUdRU0JxSkFBTElBQW9BZ1FhQzBBQkFuOGpBRUZBYWlJRUpBQWdCRUVJYWhEUENDSURJQUUyQWlRZ0EwRUNOZ0lBSUFOQkdHb2dBaERsRFNBQUlBTVFxQWNnQXhDSEJTQUVRVUJySkFBTFd3RUJmeU1BUVJCcklnSWtBQ0FDUVFBMkFnd0NRQUpBSUFFb0FnQkJnQU5xUVNBZ0FTZ0NCQ0FDUVF4cUVOMENSUVJBSUFJb0Fnd2lBUTBCQ3lBQVFjTENBaEFVR2d3QkN5QUFJQUVvQWdBUUZCb0xJQUpCRUdva0FBdU9BUUVEZnlNQVFTQnJJZ0lrQUNBQ1FRQTJBaHdnQUVHQUEycEJJQ0FCSUFKQkhHb1EzUUlhSUFJb0Fod2lBUVJBQWtBZ0FrRUlhaUFCS0FJUUlBRW9BaFFReEFnaUFTa0RBRkFFUUNBQktBSUlJZ1JGRFFFZ0JDZ0NDRVVOQVFzZ0FDQUJFTUFOSVFNTElBRkJDR29ReFFNZ0FrRWdhaVFBSUFNUEMwR3loZ1ZCZzVRQ1FmRUJRWW51QWhBQUFBc1BBQ0FBTFFBUUJFQWdBQkFQR2dzTFZRQWdBQ0FCS1FJQU53SUFJQUFnQWlnQ0FEWUNDQ0FES0FJQUlRRWdBQ0FFTmdJUUlBQWdBVFlDRENBQUlBVW9BZ0EyQWhRZ0FFRVlhaUFHRUxRQ0dpQUFRU3hxSUFjUXdnRWdBRUg0QUdvZ0NCRENBUXNXQUNBQVFVQnJFRElhSUFCQkRHb1FNaG9nQUJBeUN3Z0FJQUVvQWdCRkN4QUFJQUJCQ1VZZ0FFRitjVUVLUm5JTEhRRUJmd05BSUFBRVFDQUFLQUlBSVFFZ0FCQWZJQUVoQUF3QkN3c0xNQUVCZnlBQUtBSUVJZ0lnQUNnQ0NFY0VRQ0FDSUFFb0FnQTJBZ0FnQUNBQ1FRUnFOZ0lFRHdzZ0FDQUJFSklYQ3c0QUlBQWdBU2dDQUJBaEdpQUFDNjR2QWhSL0FuMGpBRUdBQkdzaUJ5UUFJQWRCb0FGcUlBQVF5d29oQUNBR0JFQWdCa0VBTmdJQUl3QkJJR3NpQ0NRQUFrQWdCZ1JBSUFZb0FnQkZEUUVMUWE3SEFVR1VzZ0pCOWdCQjh1VUJFQUFBQ3lBSUlBWTJBZ3dnQ0VHSXNoTTJBZ2dnQ0NBSVFRaHFJZ28yQWhnZ0FDQUtFTVVLSUFvUUZpQUlRU0JxSkFBTElBY2dBQ2dDQURZQ0FDQUhJQUFvQWdnMkFnUWdCeUFBS0FJRU5nSUlJQUFvQWd3aENDQUhJQVUyQWh3Z0J5QUVOZ0lZSUFjZ0FUWUNGQ0FISUFCQkVHb2lGallDRUNBSElBZzJBZ3dnQjBFZ2FoQ2FGeUFIUWFnQ2FpQUNJQU1nQmhDWkZ5SUFFSmdYSVEwZ0FCQ1FEZ0pBQWtBZ0RTZ0NBQ0lBUlFSQUlBZEJxQUpxSWdFZ0J4Q2RBaUFCUVlqM0J4QU9HaUFIS0FMa0F5RUFJQUVRRVF3QkN5QUhLQUlrSWdGQkJFMEVRQ0FIUWFnQ2FpSUJJQWNRblFJZ0FVR0h3UWtRRGhvZ0FTQUhLQUlrRUNFYUlBRkJuTEVLRUE0YUlBRkJCUkFoR2lBSEtBTGtBeUVBSUFFUUVRd0JDeUFISUFFMkF1UUJJQWNnQURZQzRBRWdCMEhnQVdvZ0IwRTBhaEQ2RmdSQUlBZEJxQUpxSWdFZ0J4Q2RBaUFCUWF1TENSQU9HaUFCSUFjb0FxZ0NRUXhyS0FJQWFpSUFJQUFvQWdSQnRYOXhRUWh5TmdJRUlBRWdEU2dDQUJDekJ5SUFRZnVYQ0JBT0dpQUFLQUs4QVNFQUlBRVFFUXdCQ3lBSElBY29BalJGUlRvQU9DQUhRZUFCYWlBSEtBSTBJQWRCeUFGcUVKc1hCRUFnQjBHb0Ftb2lBU0FIUVg4UTB3VWdBVUhCNmdNUURob2dCeWdDNUFNaEFDQUJFQkVNQVFzZ0J5Z0NHQ0lBQkVBZ0J5Z0NGQ0FIS0FJMElBY29Bc2dCSUFjb0Fzd0JJQWNvQXRBQklBY29BdFFCSUFjb0F0Z0JJQUFSRFFBaUFBMEJDeUFIUVFVMkFpd2dCMEhZQUdvaEVDQUhRZEFBYWlFUklBZEJQR29oRHlBSFFlUUFhaUVTSUFkQmlBSnFJUTRnQjBHUUFXb2hDQ0FIUWZnQmFrRUdjaUVYSUFkQitBQnFJUW9nQjBHRUFXb2hFd0pBQTBBZ0J5Z0NMQ0lCSUFjb0FpUWlBazhOQVNBSElBY29BakJCQVdvMkFqQWdCMEVBTmdLUUFpQU9RZ0EzQXdBZ0IwSUFOd09BQWlBSFFnQTNBL2dCSUFjZ0J4Q1dGellDOUFFZ0J5QUhLQUtFQVRZQ2lBRWdFeUFIUWZRQmFoRGVBaUFISUFjb0FuZzJBbndnQnlnQ0xDQUhLQUlrU1FSQUlBZEJBRHNCOGdFZ0J5Z0M5QUVnQjBIeUFXb2dGeENGRndKQUlBY3ZBZklCUlFSQUlBZEJxQUpxSWdFZ0J4Q2RBaUFCUWY3ZkN4QU9HaUFCSUFjdkFmSUJFQ0VhSUFjb0F1UURJUUFnQVJBUkRBRUxJQWNnQnk4Qi9nRWdCMEhzQVdvUXFRWUVRQ0FIUWFnQ2FpSUJJQWNRblFJZ0FVSGdwZ3dRRGhvZ0FTQUhMd0grQVJBaEdpQUhLQUxrQXlFQUlBRVFFUXdCQ3lBSElBY29BcEFCTmdLVUFTQUhJQWNvQWl3aUMwRUJhaUlKTmdJc1FRQWhBQU5BSUFjb0F1d0JJZ0V2QVJBaUFpQUFTd1JBSUFnZ0FTQUNJQUJCZjNOcVFRSjBha0VVYWhDeUJ5QUFRUUZxSVFBTUFRc0xBMEFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQWNvQWl3aUFpQUxJQWN2QWZJQklnVnFJZ1pKQkVBZ0J5Z0NrQUVnQnlnQ2xBRkdCRUFnQjBHb0Ftb2lBU0FIRUowQ0lBRkIvTGtDRUE0YUlBRWdCeWdDN0FFUWpRUWlBRUdTeVFvUURob2dBQ0FMRUNFYUlBQkI5L1FKRUE0YUlBQWdBaUFMYTBILy93TnhFQ0VhSUFCQnA5d0pFQTRhSUFBZ0J5OEI4Z0VRSVJvZ0FFSDhsd2dRRGhvZ0FDZ0N2QUVoQUNBQkVCRU1GQXNDZnlBSUtBSUFJQWdvQWdSSEJFQURRQ0FJS0FJRVFRUnJJZ0FvQWdBaEFTQUlJQUEyQWdSQkFDRUNJd0JCRUdzaUFDUUFJQUFnQVRZQ0RBSkFBa0FDUUFKQUFrQUNRQ0FCUVRGckRnUUFBUUlEQlFzZ0NDQUFRUXhxRUxJSElBQkJLRFlDQ0NBSUlBQkJDR29RcUFZTUF3c2dDQ0FBUVF4cUVMSUhJQUJCS3pZQ0NDQUlJQUJCQ0dvUXFBWU1BZ3NnQ0NBQVFReHFFTElIUVFFaEFpQUFRUUUyQWdnZ0NDQUFRUWhxSWdNUXFBWWdBRUV0TmdJSUlBZ2dBeENvQmd3Q0N5QUlJQUJCREdvUXNnY2dBRUVHTmdJSUlBZ2dBRUVJYWlJQ0VLZ0dJQUJCS0RZQ0NDQUlJQUlRcUFZTFFRRWhBZ3NnQUVFUWFpUUFJQUlOQUFzZ0FRd0JDMEhUN3doQnFMRUNRYzREUWR6cEJCQUFBQXNoQXlBSEx3SCtBU0VNSUFkQ0FEY0QrQU1nQnlBRE5nTDBBeUFIUVFFN0FmSURJQWNnQnlnQ0xDSUFJQXRySWdVN0FmQURJQUFnQnlnQ0pFOE5FQ0FISUFjUWxoY2lBallDN0FOQklTRUVRUmtoQVFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRElnQWlCa0VCYXc1SkFnQUJBd01HQkFVSENBc0xDd3NMQ3dzTEN3c1BEd3NMQ3dzTEN3c0xDd3NPRGc0T0RnOFBBZzBNQmc4SENBb1BEdzhQRHc0TEN3c0xEZ3NMQ3dzTEN3c0xDd3NMQ3dzTENROExJQUlORHlBSFFhZ0NhaUlCSUFkQmRoRFRCU0FCUWNlTkJ4QU9HaUFIS0FMa0F5RUFJQUVRRVF3aUN5QUNSUVJBSUFkQnFBSnFJZ0VnQjBGMkVOTUZJQUZCc1kwSEVBNGFJQWNvQXVRRElRQWdBUkFSRENJTElBY2dBallDaUFJZ0R5QU9FT3dCQkVBZ0IwR29BbW9pQVNBSFFYWVEwd1VnQVVHNDNnb1FEaG9nQVNBSEtBS0lBaEFoR2lBQlFmM1NCQkFPR2lBSEtBTGtBeUVBSUFFUUVRd2lDeUFIUWZnQmFrRVFRUXdnREJEUUFodHFLQUlBSVFBZ0R5QU9FTkFCSUFBMkFnQU1Ed3NnQWtVRVFDQUhRYWdDYWlJQklBZEJkaERUQlNBQlFkT05CeEFPR2lBSEtBTGtBeUVBSUFFUUVRd2hDeUFIUVFFMkF2UURJQXhCREVjZ0JVSC8vd054UVFOSGNnME9JQklnQjBIc0Eyb1E3QUVpQUVVRVFDQUhRYWdDYWlJQklBZEJkaERUQlNBQlFhSGVDaEFPR2lBQklBY29BdXdERUNFYUlBRkI0SVFGRUE0YUlBY29BdVFESVFBZ0FSQVJEQ0VMSUFjZ0FDZ0NERFlDZ0FJTURnc2dBZzBOSUFkQnFBSnFJZ0VnQnhDZEFpQUJJQU1RdXdnUURob2dBVUhWalFjUURob2dCeWdDNUFNaEFDQUJFQkVNSHdzZ0RFRU1SdzBXSUFjb0FvQUNJZ0JGRFJVZ0J5QUFJQUlnQjBHWUFtb1F3UWhGQkVBZ0J5Z0NtQUpCRUdvZ0NCQzZDQXdOQ3lBSEtBS0FBaEN3QndSQUlBZEJNVFlDcUFJZ0NDQUhRYWdDYWhDb0Jnd05DeUFIUWFnQ2FpSUJJQWNRblFJZ0FVR2YrZ3NRRGhvZ0FTQUNFQ0VhSUFjb0F1UURJUUFnQVJBUkRCNExJQXhCTkVjTkV3SkFJQUpCQUU0RVFBSi9RYUN1RXlFQUEwQUNRRUYzUVFBZ0FFR0FzaE5IQkg4Z0FDZ0NBQ0FDUncwQklBQUZRWUN5RXd0QmdMSVRSaHNNQWdzZ0FFRUlhaUVBREFBTEFBdEZEUUVMSUFkQnFBSnFJZ0VnQnhDZEFpQUJRYWJQQ2hBT0dpQUJRUWdRdXdnUURob2dBVUh0dFF3UURob2dBU0FDRUNFYUlBY29BdVFESVFBZ0FSQVJEQjRMSUFkQkFEWUNtQUlnQnlBQ0lBZEJtQUpxRUtrR1JRUkFJQWNvQXBnQ0lnQXRBRlZGRFJNZ0FDMEFWRVVORWlBQUx3RVFRUUZORFJFZ0FFRWNhaUFJRUxvSURBd0xJQWRCcUFKcUlnRWdCMEYvRU5NRklBRkI0SVlGRUE0YUlBY29BdVFESVFBZ0FSQVJEQjBMSUFkQklEWUMvQU1nQjBLR2dJQ0FFRGNDOUFNTUNnc2dCMEVKTmdMMEF5QU1RU3RHSUF4Qk1rWnlSUVJBSUF4Qit3RkdCRUFnQnlBSElBa1F5Z28yQXBnQ0FrQWdEeUFIUVpnQ2FoRHNBU0lBQkVBZ0FDZ0NEQ0lBRFFFTElBZEJxQUpxSWdFZ0J4Q2RBaUFCUWR6WENoQU9HaUFCSUFjb0FwZ0NFQ0VhSUFGQnVJY0VFQTRhSUFjb0F1UURJUUFnQVJBUkRCNExJQUFnQnlnQ21BSkdCRUFnQjBHb0Ftb2lBU0FIRUowQ0lBRkIzTmNLRUE0YUlBRWdCeWdDbUFJUUlSb2dBVUhqMFFNUURob2dCeWdDNUFNaEFDQUJFQkVNSGdzZ0J5QUhRZkFEYWlBQUVKVVhJZ0FOSFNBSEtBTDRBMEVEYTBGOVN3MExJQWRCcUFKcUlnRWdCeENkQWlBQlFkelhDaEFPR2lBQklBY29BcGdDRUNFYUlBRkIzdkFCRUE0YUlBY29BdVFESVFBZ0FSQVJEQjBMUWJMaUFFSDNsUUpCd3dSQnora0VFQUFBQ3lBSEtBS0VBaUlBUlEwTklBY2dCMEh3QTJvZ0FCQ1ZGeUlBUlEwSkRCc0xJQWRCbUFKcUlBMG9BZ0FnQnlnQ0xDSUFRUUowYWlBSEtBSWtJQUJySWdCQkFCQ1JEZ0pBSUFjb0Fwd0NJQWN0QUtNQ0lnRWdBVUVZZEVFWWRVRUFTQ0lDR3lJQklBQkJBblJHQkVCQkFDRUZJQWNnQ3lBTUlBTVFsQmNoQUF3QkN5QUJRUUoyUVFGcUlRQWdBVUg4L3c5UEJFQWdCMEdvQW1vaUFTQUhFSjBDSUFGQjFwTUtFQTRhSUFGQi8vOERFQ0VhSUFGQm91d0xFQTRhSUFFZ0FCQWhHaUFCUWNtM0F4QU9HaUFIS0FMa0F5RUFJQUVRRVVFQUlRVU1BUXNnQjBFS05nTDBBeUFISUFBN0FmSURRUUVoQlNBTVFRdEdCRUFDZjBFQlFiR0xCeUFIS0FLWUFpQUhRWmdDYWlBQ0d5SUFFS0lDUlEwQUdrRUNRWlRnQkNBQUVLSUNSUTBBR2tFRFFlamZBU0FBRUtJQ1JRMEFHa0VFUVlnbElBQVFvZ0pGRFFBYVFRVkJpZmtCSUFBUW9nSkZEUUFhUVFaQnFEWWdBQkNpQWtVTkFCcEJCMEgxd0FJZ0FCQ2lBa1VOQUJwQkNFR2VqQWNnQUJDaUFrVU5BQnBCQ2tIOWl3Y2dBQkNpQWtVTkFCcEJDVUdaMVFjZ0FFRWNFS2dOUlEwQUdrRUFRUXRCZzRrSUlBQkJEQkNvRFJzTElnQkZCRUFnQjBHb0Ftb2lBU0FIRUowQ0lBRkJpb2dKRUE0YUlBRWdCMEdZQW1vUUVob2dBVUh6bWdrUURob2dCeWdDNUFNaEFDQUJFQkZCQUNFRkRBSUxJQWNvQW9nQ1JRME5Jd0JCSUdzaUFTUUFJQUVnRGpZQ0VDQUJRUmhxSUJJZ0RpQUJRUkJxRUk0UElBRW9BaGdoQWlBQlFTQnFKQUFnQWlBQU5nSU1Dd3NnQjBHWUFtb1FEeG9nQlEwSURCb0xRY2dBSVFFTElBY2dBVFlDOUFNZ0FTRUFDeUFISUFNZ0FpQUhRWmdDYWhEZEFrVUVRQ0FIS0FLWUFrRVlhaUFJRUxvSURBWUxJQWRCcUFKcUlnRWdCeENkQWlBQlFhYlBDaEFPR2lBQklBQVF1d2dRRGhvZ0FVSFNyQXdRRGhvZ0FTQUNFQ0VhSUFjb0F1UURJUUFnQVJBUkRCY0xRU1loQkFzZ0J5QUVOZ0wwQXlBRUlRWUxRWUNBZ0lCNElRQWdBaUVGQWtBRFFDQUZSUTBCQWtBZ0FDQUZjUVJBSUFjZ0F5QUFJQWRCbUFKcUVOMENEUUVnQnlnQ21BSkJHR29nQ0JDNkNDQUFJQVZ6SVFVTElBQkJBWFloQUF3QkN3c2dCMEdvQW1vaUFTQUhFSjBDSUFGQnBzOEtFQTRhSUFFZ0JoQzdDQkFPR2lBQlFkS3NEQkFPR2lBQklBSVFJUm9nQVVHUXlna1FEaG9nQVNBQUVDRWFJQWNvQXVRRElRQWdBUkFSREJVTElBSU5BaUFISUFOQkFDQUhRYWdDYWhEZEFnMENJQWNvQXFnQ1FSaHFJQWdRdWdnTUFnc2dCMEdvQW1vaUFTQUhFSjBDSUFGQmtKUU1FQTRhSUFFZ0F4QzhBaG9nQnlnQzVBTWhBQ0FCRUJFTUV3c2dCeUFDTmdLRUFnc2dCeWdDOUFNUWdoZEZEUUVnQjBId0Eyb2hBQUpBSUFvb0FnUWlBU0FLS0FJSVJ3UkFJQUVnQUNrQ0FEY0NBQ0FCSUFBcEFnZzNBZ2dnQ2lBQlFSQnFOZ0lFREFFTEl3QkJJR3NpQWlRQUlBSkJDR29nQ2lBS0tBSUVJQW9vQWdCclFRUjFRUUZxRU9BWUlBb29BZ1FnQ2lnQ0FHdEJCSFVnQ2tFSWFoRFNEaUlCS0FJSUlnUWdBQ2tDQURjQ0FDQUVJQUFwQWdnM0FnZ2dBU0FCS0FJSVFSQnFOZ0lJSUFvZ0FSQ2pCQ0FCRUpNWElBSkJJR29rQUFzZ0J5Z0NMQ0lBSUFjdkFmSURhaUlCSUFjb0FpUkxEUkFDUUNBSExRQTRSUTBBSUEwb0FnQWlBaUFCUVFKMGFpRURJQUlnQUVFQ2RHb2hBQ0FIS0FJMElRSURRQ0FBSUFOR0RRRWdCeUFBS0FJQUlBSVFwd1kyQXFnQ0lCTWdCMEdvQW1vUTN3SWdBRUVFYWlFQURBQUxBQXNnQnlBQk5nSXNRUUFoQUF3UkN3SkFJQWNvQXBRQklnQWdCeWdDa0FGSEJIOGdBRUVFYXlnQ0FDSUFRU2hySWdGQklrOUMvNE9BZ0NBZ0FhMklRZ0dEVUhJRWZ5QUFRVEZyUVFSSkJVRUJDMFVOQVNBTElBY3ZBZklCSWdWcUlRWWdCeWdDTEFVZ0Fnc2dCa2NFUUNBSFFhZ0NhaUlCSUFjUW5RSWdBVUh5dlFJUURob2dBU0FIS0FMc0FSQ05CQ0lBUVpMSkNoQU9HaUFBSUFzUUlSb2dBRUdtNHdrUURob2dBQ0FITHdIeUFSQWhHaUFBUWVmSkNoQU9HaUFBSUFjb0Fpd2dDMnNRSVJvZ0FFSERod2dRRGhvZ0FDZ0N2QUVoQUNBQkVCRU1GQXNnQnlnQ2lBRWdCeWdDaEFGcklRQUNRQUpBSUFjdEFEZ0VRQ0FBUVFKMUlBVkdEUUZCbU9jSVFmZVZBa0dBQTBIaXpRSVFBQUFMSUFCQkJFY05BUXNnQnk4Qi9nRWlBQkRRQWtVTkVFRURJUVpCQUNFVVFRQWhEQUpBQWtBQ1FDQUFRUlZyRGdJQUFRSUxRUUpCQVNBSElBdEJBMm9ReWdvYklRWUxJQWNnQzBFQ2FoREtDaUVVSUFZaERBc2dCeWdDaUFJaEJBSkFJQWNvQWxRaUJrVU5BQUpBSUFacFFRRkxJZ0ZGQkVBZ0JrRUJheUFFY1NFRkRBRUxJQVFpQlNBR1NRMEFJQVFnQm5BaEJRc2dCeWdDVUNBRlFRSjBhaWdDQUNJSlJRMEFJQVpCQVdzaEFnTkFJQWtvQWdBaUNVVU5BU0FFSUFrb0FnUWlBRWNFUUFKQUlBRkZCRUFnQUNBQ2NTRUFEQUVMSUFBZ0Jra05BQ0FBSUFad0lRQUxJQUFnQlVjTkFnc2dDU2dDQ0NBRVJ3MEFDd3dRQzBFVUVCVWlDU0FFTmdJSUlBa2dCRFlDQkNBSlFRQTJBZ0FnQ1VJQU53SU1RUUFnQmlBSEtBSmNRUUZxc3lJYklBY3FBbUFpSENBR3M1UmVHdzBPUVFJaEF3SkFJQVlnQmtFQmEzRkJBRWNnQmtFRFNYSWdCa0VCZEhJaUFBSi9JQnNnSEpXTklodERBQUNBVDEwZ0cwTUFBQUFBWUhFRVFDQWJxUXdCQzBFQUN5SUJJQUFnQVVzYklnQkJBVVlOQUNBQUlBQkJBV3R4UlFSQUlBQWhBd3dCQ3lBQUVIOGhBeUFIS0FKVUlRWUxJQU1nQmswRVFDQURJQVpQRFE0Z0JrRURTU0VCQW44Z0J5Z0NYTE1nQnlvQ1lKV05JaHREQUFDQVQxMGdHME1BQUFBQVlIRUVRQ0FicVF3QkMwRUFDeUVBSUFZZ0F5QUJJQVpwUVFGTGNnUi9JQUFRZndVZ0FFRUJRU0FnQUVFQmEyZHJkQ0FBUVFKSkd3c2lBQ0FBSUFOSkd5SURUUVJBSUFjb0FsUWhCZ3dQQ3lBRFJRME1DeUFEUVlDQWdJQUVTUVJBSUJFZ0EwRUNkQkFWRUd3Z0J5QUROZ0pVUVFBaEFBTkFJQUFnQTBZRVFDQUhLQUpZSWdGRkRROEZJQWNvQWxBZ0FFRUNkR3BCQURZQ0FDQUFRUUZxSVFBTUFRc0xJQUVvQWdRaEJnSkFJQU5wUVFGTEloaEZCRUFnQmlBRFFRRnJjU0VHREFFTElBTWdCa3NOQUNBR0lBTndJUVlMSUFjb0FsQWdCa0VDZEdvZ0VEWUNBQ0FEUVFGcklSa0RRQ0FCS0FJQUlnSkZEUTRnQWlnQ0JDRUZBa0FnR0VVRVFDQUZJQmx4SVFVTUFRc2dBeUFGU3cwQUlBVWdBM0FoQlFzQ1FDQUZJQVpHRFFBZ0FpRUFJQVZCQW5RaUZTQUhLQUpRYWlJYUtBSUFSUVJBSUJvZ0FUWUNBQ0FGSVFZTUFRc0RRQ0FBSWdVb0FnQWlBQVJBSUFJb0FnZ2dBQ2dDQ0VZTkFRc0xJQUVnQURZQ0FDQUZJQWNvQWxBZ0ZXb29BZ0FvQWdBMkFnQWdCeWdDVUNBVmFpZ0NBQ0FDTmdJQURBRUxJQUloQVF3QUN3QUxFUHNCQUF0QjBOY0lRZmVWQWtHQ0EwSGl6UUlRQUFBTElBZEJxQUpxSWdFZ0J4Q2RBaUFCUWVDN0FoQU9HaUFCSUFjb0F1d0JFSTBFSWdCQmtza0tFQTRhSUFBZ0N4QWhHaUFBUVpyMUNSQU9HaUFBSUFjdkFmSUJFQ0VhSUFCQjVzRUhFQTRhSUFBb0Fyd0JJUUFnQVJBUkRCSUxRWnE4Q0VIM2xRSkI0QVZCeitrRUVBQUFDMEhON1FSQjk1VUNRZThFUWMvcEJCQUFBQXRCcU80RVFmZVZBa0hHQkVIUDZRUVFBQUFMUWVLRUIwSDNsUUpCbHdSQnora0VFQUFBQzBHTjVBQkI5NVVDUVpZRVFjL3BCQkFBQUF0QnNwWUVRZmVWQWtHVkJFSFA2UVFRQUFBTFFkN1BCRUgzbFFKQmh3UkJ6K2tFRUFBQUMwR24xQVpCOTVVQ1FmSURRYy9wQkJBQUFBdEJ3YzhFUWZlVkFrSHhBMEhQNlFRUUFBQUxRUUFoQmlBUlFRQVFiQ0FIUVFBMkFsUU1BUXNnQXlFR0N5QUdJQVpCQVdzaUFIRkZCRUFnQUNBRWNTRUZEQUVMSUFRZ0Jra0VRQ0FFSVFVTUFRc2dCQ0FHY0NFRkN3SkFBa0FnQnlnQ1VDQUZRUUowYWlJQktBSUFJZ0JGQkVBZ0NTQUhLQUpZTmdJQUlBY2dDVFlDV0NBQklCQTJBZ0FnQ1NnQ0FDSUFSUTBDSUFBb0FnUWhBQUpBSUFZZ0JrRUJheUlCY1VVRVFDQUFJQUZ4SVFBTUFRc2dBQ0FHU1EwQUlBQWdCbkFoQUFzZ0J5Z0NVQ0FBUVFKMGFpRUFEQUVMSUFrZ0FDZ0NBRFlDQUFzZ0FDQUpOZ0lBQ3lBSElBY29BbHhCQVdvMkFsd0xJQWtnRkRZQ0VDQUpJQXcyQWd3TElBMG9BZ0FoQUNBSElBY3ZBZklCT3dIOEFTQUhJQWNvQW5naUFUWUNqQUlnQnlBSEtBSjhJQUZyUVFSMk93R1FBaUFISUFjb0FvUUJJQUFnQzBFQ2RHb2dCeTBBT0JzMkF2Z0JJQWNvQWh3aUFBUkFJQWNvQWhRZ0IwSDRBV29nQUJFQkFDSUFEUVFMUVFBaEFBd0RDeUFISUFzZ0RDQURFSlFYSVFBTElBQkZEUUFMQ3lBQVJRMEJEQU1MQzBIRndBRkI5NVVDUWJnQ1FlTE5BaEFBQUF0QkFDRUFJQUVnQWtjTkFRc2dEU0FIUWFnQ2FoQ2FGeUlCRUpnWElRSWdBUkNRRGlBQ0VKQU9JQllRRmlBSFFZQUVhaVFBSUFBUEMwR3B3QUZCOTVVQ1FhQUNRYyswQkJBQUFBc1JBQ0FBUVRCQjBmOERRWHhCQXhES0FRdlRBUUVGZnlBQ0tBSUFJZ1FvQWdBb0FnQWhCUUovQWtBZ0FTZ0NBQ0lHS0FJQUtBSUFJZ2NnQUNnQ0FDSURLQUlBS0FJQVR3UkFRUUFnQlNBSFR3MENHaUFCSUFRMkFnQWdBaUFHTmdJQVFRRWdBU2dDQUNJQ0tBSUFLQUlBSUFBb0FnQWlBeWdDQUNnQ0FFOE5BaG9nQUNBQ05nSUFJQUVnQXpZQ0FBd0JDeUFGSUFkSkJFQWdBQ0FFTmdJQUlBSWdBellDQUVFQkR3c2dBQ0FHTmdJQUlBRWdBellDQUVFQklBSW9BZ0FpQUNnQ0FDZ0NBQ0FES0FJQUtBSUFUdzBCR2lBQklBQTJBZ0FnQWlBRE5nSUFDMEVDQ3d0YkFRTi9JQUVnQUNnQ0VFc0VRQ0FBS0FJSUlRSWdBQ0FCRUt3V0lBQW9BZ3doQTBFQUlRRURRQ0FCSUFOR0JFQWdBQ0FDRURZRklBRkJBblFpQkNBQUtBSUlhaUFDSUFScUtBSUFOZ0lBSUFGQkFXb2hBUXdCQ3dzTEN4a0FJQUFnQVVjRVFDQUFJQUVvQWdBZ0FTZ0NCQkQ5RmdzTDJnRUJCSDhnQUVFQU5nSUlJQUJDQURjQ0FDQUJLQUlFSWdJZ0FTZ0NBQ0lEUndSQUlBSWdBMnRCREcwaUFrSFdxdFdxQVU4RVFCQUJBQXNnQUNBQ0VKVWFJZ00yQWdBZ0FDQUROZ0lFSUFBZ0F5QUNRUXhzSWdWcU5nSUlJQUVvQWdBaEF5QUJLQUlFSVFFakFFRVFheUlFSkFBZ0JDQUFOZ0lBSUFRZ0FDZ0NCQ0lDTmdJRUlBUWdBaUFGYWpZQ0NDQUVRUVJ5SVFJRFFDQUJJQU5IQkVBZ0FpZ0NBQ0FERUxBQkdpQUNJQUlvQWdCQkRHbzJBZ0FnQTBFTWFpRUREQUVMQ3lBRUtBSUFJQVFvQWdRMkFnUWdCRUVRYWlRQUN5QUFDNHNEQVFSL0FrQWdBQ2dDQkNJRElBQW9BZ2hKQkVBZ0FTZ0NBQ0VCSUFNZ0FpZ0NBRFlDQkNBRElBRTJBZ0FnQUNBRFFRaHFOZ0lFREFFTEl3QkJJR3NpQlNRQUlBVkJDR29nQUNBQUtBSUVJQUFvQWdCclFRTjFRUUZxRUpvT0lBQW9BZ1FnQUNnQ0FHdEJBM1VnQUVFSWFoRFFDaUVESUFFb0FnQWhCQ0FES0FJSUlnRWdBaWdDQURZQ0JDQUJJQVEyQWdBZ0F5QUJRUWhxTmdJSUlBQW9BZ0FoQWlBQUtBSUVJUUVEUUNBQklBSkhCRUFnQXlnQ0JFRUlheUlFSUFGQkNHc2lBU2dDQURZQ0FDQUJLQUlFSVFZZ0FVRUFOZ0lFSUFRZ0JqWUNCQ0FESUFNb0FnUkJDR3MyQWdRTUFRc0xJQUFvQWdBaEFTQUFJQU1vQWdRMkFnQWdBeUFCTmdJRUlBQW9BZ1FoQVNBQUlBTW9BZ2cyQWdRZ0F5QUJOZ0lJSUFBb0FnZ2hBU0FBSUFNb0FndzJBZ2dnQXlBQk5nSU1JQU1nQXlnQ0JEWUNBQ0FES0FJRUlRSURRQ0FDSUFNb0FnZ2lBVWNFUUNBRElBRkJDR3MyQWdnZ0FVRUVheENGQXhvTUFRc0xJQU1vQWdBaUFRUkFJQUVRSHdzZ0JVRWdhaVFBSUFBb0FnUWFDd3VZQWdFRWZ5TUFRYkFDYXlJSUpBQWdDQ0FFS0FJQU5nSVFBa0FnQ0VFd2FrR0FBaUFESUFoQkVHb1FuQW9pQlVIL0FVMEVRQ0FBUVFJZ0FTQUNJQWhCTUdvUXp3UU1BUXNnQlVFQVRnUkFJQWhCSUdvaUJrRUFOZ0lJSUFaQ0FEY0NBQ0FGUVFGcUlnVUVRQ0FGUVFCSUJFQVFBUUFMSUFZZ0JSQVZJZ2MyQWdBZ0JpQUhOZ0lFSUFZZ0JTQUhhallDQ0NBRklBWW9BZ1FpQjJvaEJRTkFJQVVnQjBZRVFDQUdJQVUyQWdRRklBZEJBRG9BQUNBSFFRRnFJUWNNQVFzTEN5QUdLQUlFSVFjZ0JpZ0NBQ0VGSUFnZ0JDZ0NBRFlDQUNBRklBY2dCV3NnQXlBSUVKd0tHaUFBUVFJZ0FTQUNJQVlvQWdBUXp3UWdCaEF5R2d3QkN5QUFRUUlnQVNBQ1FjakJCQkRQQkFzZ0NFR3dBbW9rQUFzSkFDQUFRUWhxRUY0TE1RRUJmeUFBS0FJVUlnRkJmMFlFUUVHSThBaEIzNllEUWVJRFFaV0RCUkFBQUFzZ0FDQUJRUUZxSWdBMkFoUWdBQXRFQVFGL0l3QkJFR3NpQWlRQUlBSkNBRGNDQkNBQ0lBSkJCSEkyQWdBZ0FDQUJJQUlnQUNnQ0FDZ0NDQkVFQUNFQUlBSWdBaWdDQkJDdURpQUNRUkJxSkFBZ0FBczlBQ0FBRVBrQ1FaS3hxUG9IYWtHVHBBWnpJZ0JCQW5aQmx2aXArZ2R6SUFFb0FnQnFJQUJ6SWdCQkFuWkJsdmlwK2dkeklBSW9BZ0JxSUFCekN5RUFJQUFvQWh3aUFFVUVRRUhIa2dkQjU3QURRZnNCUVo3dUJCQUFBQXNnQUF1S0JBRUJmeU1BUWNBQmF5SUhKQUFnQnlBQ05nS3dBU0FISUFFMkFyZ0JJd0JCSUdzaUFTUUFJQUFnQnlnQ3VBRWdCeWdDc0FFZ0F5QUJJQVFRVmhDZER5SURRY2pwRHpZQ0JDQURRZnpwRHpZQ0FDQUJRU0JxSkFBZ0EwSG82UTgyQWdBZ0EwRkFheUlBUW9DQWdJQXdOd0lRSUFBZ0FEWUNEQ0FBSUFVUTJCY2dBMEhZQUdvaUFFRUFOZ0lJSUFCQ0FEY0NBRUVBSVFFQ1FDQUdMUUFFQkVBZ0FCRENDQ0FBSUFZb0FnQWlBU2tDQURjQ0FDQUFJQUVvQWdnMkFnZ2dCaWdDQUNJQlFRQTJBZ2dnQVVJQU53SUFEQUVMQWtBZ0FDZ0NDQ0FHS0FJQUlnSW9BZ1JKQkVBZ0FCRENDQ0FBSUFJb0FnUVF3ZzBNQVFzZ0FFRUFOZ0lFQ3lBQUlBSW9BZ1FpQkRZQ0JBTkFJQUVnQkVjRVFDQUJRUUowSWdVZ0FDZ0NBR29nQWlnQ0FDQUZhaWdDQURZQ0FDQUJRUUZxSVFFTUFRc0xDeUFES0FKUUlnRkZCRUFnQjBIeG5RVkJJRUVBSUFkQm9BRnFFQjBpQVJBWElnSkJHR3BCa3VNSUVBNGFJQUlRR0NBQkVCNGdBeWdDVUNFQkN5QURLQUpNSWdJZ0FVRUNkR29oQVFOQUlBRWdBa1lFUUFKQUlBQW9BZ0FpQWlBREtBSmNRUUowYWlFQUEwQWdBQ0FDUmcwQklBSW9BZ0FRVnlBREtBSUlRUUZCQUVIZHhBaEI4WjBGUVNVUVN5QUNRUVJxSVFJTUFBc0FDd1VnQWlnQ0FCQlhJQU1vQWdoQkFFRUFRZG5LQ0VIeG5RVkJJaEJMSUFKQkJHb2hBZ3dCQ3dzZ0IwSEFBV29rQUNBREMrOEJBUUYvSXdCQklHc2lBeVFBSUFNZ0FEWUNIQ0FESUFFMkFoZ2dBeUFDTmdJVUlBTW9BaHdpQUNnQ0NDRUNJQU5CQURZQ0VDQURBbjhnQXlnQ0dBUkFJQU1vQWhoQkFXc01BUXRCQUFzMkFoZ2dBd0ovSUFNb0FoUUVRQ0FES0FJVVFRRnJEQUVMUVFBTE5nSVVJQU1nQXlnQ0dEWUNEQU5BUVFBaEFTQURLQUlNSUFNb0FoUkpCSDhnQXlnQ0RDQUFLQUlBS0FJQVNRVkJBQXRCQVhFRVFDQURBbjhnQUNnQ0JDQURLQUlNRU1RT0xBQUFRUWxHQkVBZ0FpZ0NCQXdCQzBFQkN5QURLQUlRYWpZQ0VDQURJQU1vQWd4QkFXbzJBZ3dNQVFzTElBTW9BaEFoQUNBRFFTQnFKQUFnQUFzakFRRi9Jd0JCRUdzaUFTQUFOZ0lNSUFFb0Fnd2lBQ2dDQkNBQUtBSUFhMEVVYlFzakFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJLQUlNRUE4YUlBRkJFR29rQUF0NUFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQ0lBSUFJb0FnZ2lBU2tDQURjQ0FDQUFJQUVwQWhBM0FoQWdBQ0FCS1FJSU53SUlJQUJCR0dvZ0FpZ0NDRUVZYWhCVUdpQUFJQUlvQWdncEFpUTNBaVFnQUVFc2FpQUNLQUlJUVN4cUVLZ1lJQUpCRUdva0FDQUFDeGdCQVg4akFFRVFheUlCSUFBMkFnd2dBU2dDRENnQ0dBc0pBQ0FBUVF3UXdCSUxUd0VDZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RFRU1haUVDSXdCQkVHc2lBQ1FBSUFBZ0FqWUNEQ0FBS0FJTVFRUnFFSklDSVFJZ0FFRVFhaVFBSUFJaEFDQUJRUkJxSkFBZ0FBdFdBUUYvSXdCQkVHc2lBeVFBSUFNZ0FEWUNEQ0FESUFFNkFBc2dBeUFDTmdJRUlBTW9BZ3doQUFOQUlBTWdBeWdDQkNJQlFRRnJOZ0lFSUFFRVFDQUFLQUlBSUFOQkMyb1FzaGdNQVFzTElBTkJFR29rQUFzMUFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJLQUlNSWdBUXR3RW9BZ0FnQUNnQ0FHdEJBM1VoQUNBQlFSQnFKQUFnQUFzakFRRi9Jd0JCRUdzaUFTQUFOZ0lNSUFFb0Fnd2lBQ2dDQkNBQUtBSUFhMEVEZFF0YUFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0NBSkFJQUVvQWdnaUFFRUVhaERCR0VGL1JnUkFJQUFnQUNnQ0FDZ0NDQkVEQUNBQlFRRTZBQThNQVFzZ0FVRUFPZ0FQQ3lBQkxRQVBRUUZ4SVFBZ0FVRVFhaVFBSUFBTEdRQWdBQ0FCSUFJZ0EwSDQ2QTlCak9rUFFkam9EeERCREF1S0FRRURmeU1BUVJCcklnRWtBQ0FCSUFBMkFnZ2dBU0FCS0FJSUlnQTJBZ3dnQUNnQ0JBUkFJQUFvQWdRaEFDTUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpZ0NEQ0lBRU13SFFRRnhCRUFDUUNBQVFRaHFJZ01vQWdBRVFDQURFTUVZUVg5SERRRUxJQUFnQUNnQ0FDZ0NFQkVEQUFzTElBSkJFR29rQUFzZ0FTZ0NEQm9nQVVFUWFpUUFDNk1CQVFKL0lBRWhBZ05BSUFKQkJFOEVRQ0FBS0FBQVFaWFR4OTRGYkNJRFFSaDJJQU56UVpYVHg5NEZiQ0FCUVpYVHg5NEZiSE1oQVNBQ1FRUnJJUUlnQUVFRWFpRUFEQUVMQ3dKQUFrQUNRQUpBSUFKQkFXc09Bd0lCQUFNTElBQXRBQUpCRUhRZ0FYTWhBUXNnQUMwQUFVRUlkQ0FCY3lFQkN5QUJJQUF0QUFCelFaWFR4OTRGYkNFQkN5QUJRUTEySUFGelFaWFR4OTRGYkNJQVFROTJJQUJ6Q3lJQkFYOGdBQ2dDRkNJQkJFQWdBU2dDQkE4TElBQW9BZ2dnQUNnQ0JFRUNkR29MREFBZ0FDQUJRWjhGRU1jU0N5SUJBbjlCQWlBQUxRQVlJZ0VnQUMwQUdTSUFja0VBUnlJQ0lBQWJJQUlnQVJzTEx3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUVJYWlBQ1FReHFFSjRDSVFBZ0FrRVFhaVFBSUFCQkRHb0xod0lCQTM4akFFSFFBR3NpQXlRQUlBQkJBRFlDQ0NBQVFnQTNBZ0FnQTBGQWF5QUJLQUxBQlNBQ0VOc0tJQU5DQURjRE1DQURRZ0EzQXlnZ0EwR0FnSUQ4QXpZQ09DQURLQUpFSVFVZ0F5Z0NRQ0VCQTBBZ0FTQUZSa1VFUUFKQUlBRW9BZ0FpQWlnQ0ZFSEhBRWNOQUNBRElBSkJBUkE0SWdRMkFpUWdCRUVUUmlBRVFlc3BSbklOQUNBRFFSaHFJQU5CS0dvZ0EwRWthaENXQVNBRExRQWNSUTBBSUFOQkFEWUNJQ0FEUWdBM0F4Z2dBaUFEUVJocUlnUVEwd29nQUNBRFFRaHFJQU1vQWhoQkNHb2dBeWdDSEJDQUN5SUNFUGdPSUFJUU1ob2dCQkF5R2dzZ0FVRUVhaUVCREFFTEN5QURRU2hxRUU4Z0EwRkFheEF5R2lBRFFkQUFhaVFBQ3hFQUlBQW9BZ1FnQVNnQ0FCREJCa0VCQzlzQkFRTi9Jd0JCUUdvaUF5UUFBa0FDUUFKQUlBSW9BZ0FpQkVVTkFDQUNLQUlFUlEwQUlBUVE5d2dOQVFzZ0FDQUNFRnNhREFFTElBSW9BZ0FpQkNnQ0JFR296QkpISUFSRmNrVUVRQ0FESUFFb0FnUWlCU0FGRU93RElBUW9BZ3dRL3dJaUJDQUJLQUlJSWdFUStnZzJBamdnQWlnQ0JDRUNJQU5CQVRZQ0pDQURJQUkyQWh3Z0F5QURRUnhxTmdJZ0lBTWdBeWtESURjRENDQUFJQVFnQVNBRFFUaHFJQU5CS0dvZ0EwRUlhaENYQWlJQUVJc0xFR2thSUFBUXFBRU1BUXNnQUNBQklBTkJFR29nQWhCYkVPWUlDeUFEUVVCckpBQUxOZ0VCZnlBQUlBRVE3QUVpQWtVRVFBOExJd0JCRUdzaUFTUUFJQUlvQWdBYUlBRWdBQ0FDRUxBWklBRVFpd0VnQVVFUWFpUUFDMUlCQW44Z0FDZ0NDQ0VBSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lCVFlDRENBRUlBVTJBZ2dnQUVHTUFXb2dBRUVJYWlBRVFRaHFJQUVnQWlBREVPa2FJUUFnQkVFUWFpUUFJQUFMSXdFQmZ5QUFLQUlVSWdGRkJFQWdBQ2dDQkE4TElBRW9BZ1FnQVNnQ0FHdEJBblVMckFFQkJYOGdBQ2dDQ0NFREl3QkJFR3NpQkNRQUlBTVFIQ0FESUFNb0FneEJBV29pQURZQ0RDQUVJQUEyQWdnakFFRVFheUlBSkFBZ0EwR01BV29pQlJDOUNpRUdJQVFvQWdnaEJ5QURLQUlJSVFNZ0FFRUFPZ0FNSUFBZ0FrRWdhallDQ0NBQVFRQTZBQVFnQUVIQW5DQTJBZ0FnQlNBR0lBTWdCeUFCSUFCQkNHb2dBQkNBRENJQkVDZ2dCU0FGS0FJWVFRRnFOZ0lZSUFCQkVHb2tBQ0FCSVFBZ0JFRVFhaVFBSUFBTHd3WUJDWDhqQUVGQWFpSURKQUFnQXlBQk5nSThJQU1nQURZQ01DQURJQU5CUEdvaUJEWUNOQ0FESUFBMkFpZ2dBeUFFTmdJc0lBTWdBRFlDSUNBRElBQTJBaGdnQXlBQU5nSVFJQU1nQURZQ0NDQURJQUEyQWdBZ0F5QUVOZ0lFSUFOQk1Hb2hBQ0FEUVNocUlRUWdBMEVnYWlFR0lBTkJHR29oQlNBRFFSQnFJUWNnQTBFSWFpRUlJd0JCSUdzaUFpUUFJQUlnQVRZQ0hBSi9JQUZGQkVBZ0F4REZHZ3dCQ3lBQ0lBSkJHR28yQWhRZ0FpQUJLQUlFTmdJTUlBSWdBa0VjYWpZQ0VDQUNJQUpCRkdvMkFnZ2dBaWdDRENJQlFaQ3FFa1lFUUNBQ0tBSUlLQUlBSUFBZ0FpZ0NFQ2dDQUJERUdqWUNBQXNDUUNBQlFaQ3FFa1lOQUNBQ0tBSU1JZ0JCb0xNU1JnUkFJQUlvQWdnb0FnQWdCQ0FDS0FJUUtBSUFFTVFhTmdJQUN5QUFRYUN6RWtZTkFDQUNLQUlNRU9ZRElnQUVRQ0FDS0FJSUtBSUFJQVlvQWdBaUFVRUlhaUFCSUFJb0FoQW9BZ0FRd3hvUXl3WTJBZ0FMSUFBTkFDQUNLQUlNSWdaQmtLSVNSZ1JBSUFJb0FnZ29BZ0FoQ2lBQ0tBSVFLQUlBSVFRakFFRXdheUlBSkFBZ0JTZ0NBQ0VCQW44Z0JDZ0NIQ0lGS0FJRUlnbEJxS01TUmdSQUlBRWdCQ2dDR0JEYkJ5RUVJQUJCQURvQUxDQUFRY0NjSURZQ0tDQUJRUWhxSUFRZ0FFRW9haERqQnd3QkN3SkFJQWxCa0tNU1JnUkFJQUFnQlNnQ0REWUNJQXdCQ3lBQktBTDRBaUlGRUJ3Z0FFSGFBRFlDSENBQVFmcXRBVFlDR0NBQUlBQXBBeGczQXdBZ0JVSElBbXBCRENBQUVLa0hJQUJCQVRZQ0lBc2dBRUVCT2dBa0lBRWdCQ2dDR0JEYkJ5RUVJQUJCSUdvUXZnRW9BZ0FoQlNBQVFRQTZBQXdnQUVIQW5DQTJBZ2dnQUNBRk5nSVFJQUZCQ0dvZ0JDQUFRUkJxSUFCQkNHb1E0Z2NMSVFFZ0FFRXdhaVFBSUFvZ0FUWUNBQXNnQmtHUW9oSkdEUUFnQWlnQ0RDSUJRZGlzRWtZRVFDQUNLQUlJS0FJQUlBY29BZ0FpQUVFSWFpQUFJQUlvQWhBb0FnQWlBQ2dDR0JEYkJ5QUFLQUljSUFBb0FpQVEwQTgyQWdBTElBRkIyS3dTUmcwQUlBSW9BZ3dpQUVHNHJSSkdCRUFnQWlnQ0NDZ0NBQ0FJS0FJQUlBSW9BaEFvQWdBb0FoZ1Eyd2MyQWdBTElBQkJ1SzBTUmcwQUlBSW9BZ2dvQWdBZ0F4REZHallDQUFzZ0FpZ0NGQ2dDQUFzaEFDQUNRU0JxSkFBZ0EwRkFheVFBSUFBTE5BRUJmeU1BUVJCcklnTWtBQ0FESUFFb0FnQTJBZ3dnQUNBQVFkZ0NhaUFEUVF4cUlBSVFsUVFoQUNBRFFSQnFKQUFnQUFzcEFRSi9JQUFvQWdnaEFRTkFJQUVFUUNBQktBSUFJUUlnQVJBZklBSWhBUXdCQ3dzZ0FCQzNBZ3NMQUNBQUlBRkJBQkRRRWdzUEFDQUFJQUVRdkFwQkFUb0ExQUlMU0FFQmZ5TUFRU0JySWdJa0FDQUJLQUlBSVFFZ0FrRUJOZ0ljSUFJZ0FUWUNGQ0FDSUFKQkZHbzJBaGdnQWlBQ0tRTVlOd01JSUFBZ0FrRUlhaENYQWhvZ0FrRWdhaVFBQ3c4QUlBQWdBRUhZQW1vZ0FSRFBEd3ZKQVFFRWZ5TUFRUkJySWdRa0FDQUFLQUlBSVFZZ0JDQURLUUlBTndNSUl3QkI0QUJySWdNa0FDQUFLQUlBSVFVZ0EwRUZOZ0k4SUFOQjdCczJBamdnQXlBREtRTTROd01JSUFOQlFHc2lCeUFGSUFOQkNHb1E0UUVnQXlBQk5nSVFJQUFvQWdBZ0FoQ3hDeUVBSUFOQkFqWUNIQ0FESUFBMkFoUWdBeUFEUVJCcU5nSVlJQU1nQXlrREdEY0RBQ0FGSUFVZ0JrSFlBbW9nQnlBRFFTQnFJQU1RdFFJaUFDQUVRUWhxRU1jUEVJRURJUUVnQUJDcUFTQURRZUFBYWlRQUlBUkJFR29rQUNBQkM4NENBUWwvSXdCQkVHc2lCQ1FBSUFBb0FnQWhCeUFFSUFJcEFnQTNBd2dqQUVIZ0FHc2lBaVFBSUFBb0FnQWhBQ0FDUVFVMkFqd2dBa0hzR3pZQ09DQUNJQUlwQXpnM0F4QWdBa0ZBYXlJSUlBQWdBa0VRYWhEaEFTQUNRUUUyQWlRZ0FpQUJOZ0ljSUFJZ0FrRWNhallDSUNBQ0lBSXBBeUEzQXdnZ0FDRUxJQUpCS0dvZ0FrRUlhaENYQWlFREl3QkJFR3NpQlNRQUlBQVFIQ0FBSUFBb0FneEJBV29pQVRZQ0RDQUZJQUUyQWdnakFFRVFheUlCSkFBZ0FFR01BV29pQmhDekJTRUpJQVVvQWdnaENpQUFLQUlJSVFBZ0FTQURRUVJxTmdJSUlBRWdBeWdDQkNBRFJ6b0FEQ0FCSUFRcEFnZzNBd0FnQmlBSklBQWdDaUFIUWRnQ2FpQUlJQUZCQ0dvZ0FSREJCeUlBRUNnZ0JpQUdLQUlZUVFGcU5nSVlJQUZCRUdva0FDQUZRUkJxSkFBZ0N5QUFFSUVESVFBZ0F4Q29BU0FDUWVBQWFpUUFJQVJCRUdva0FDQUFDd3NBSUFCQjdQNEdFTW9HQzgwQ0FRRi9Jd0JCd0FGcklnUWtBQ0FFSUFJMkFyZ0JJQVFnQVRZQ3ZBRWdCQ0FET2dDM0FTQUVRY0MwRWhDekJFR1NzYWo2QjJwQms2UUdjeUlCUVFKMlFaYjRxZm9IY3lBRUtBSzRBV29nQVhNaUFVRUNka0dXK0tuNkIzTWdCRUc4QVdvUStRSnFJQUZ6SWdGQkFuWkJsdmlwK2dkeklBUXRBTGNCYWlBQmN6WUNvQUVnQkVJSE53TUFJQUFnQkNnQ29BRWdCQ2tEQUJDZEJDSUFRYkMwRWpZQ0JDQUFRZlMwRWpZQ0FDQUFRZEMwRWpZQ0FDQUFJQVFvQXJ3Qk5nSVlJQUFnQkNnQ3VBRWlBVFlDSENBQUlBUXRBTGNCT2dBZ0lBRkJBVTBFZnlBRVFaNmFCVUVsUVEwZ0JFR2dBV29RSFNJQkVCY2lBa0VZYWtIOTFnZ1FEaG9nQWhBWUlBRVFIaUFBS0FJY0JTQUJDMEVGVHdSQUlBUkJucG9GUVNaQkRTQUVRYUFCYWhBZElnRVFGeUlDUVJocVFiN1ZDQkFPR2lBQ0VCZ2dBUkFlQ3lBRVFjQUJhaVFBSUFBTEZ3QWdBQ0FCRUZZaUFFRWNhaUFCUVJ4cUVGWWFJQUFMQ0FBZ0FDMEFPQm9MS3dFQmZ5QUFRZGlZRWpZQ0FDQUFRVGhxSWdFUS9Cc2dBUkQ1R3lBQklBRW9BcUFDRURZZ0FCRFNDd3NXQUNBQVFlaVhFallDQkNBQVFZaVlFallDQUNBQUMwNEJBWDhqQUVFUWF5SURKQUFnQXlBQ05nSUlJQU1nQVRZQ0RDQUFJQU1vQWd3Z0F5Z0NDQkQ5RHlJQVFiQ1FFallDQkNBQVFlQ1FFallDQUNBQVFkQ1FFallDQUNBRFFSQnFKQUFnQUF0bUFRTi9Jd0JCTUdzaUFpUUFJQUFvQWdBaEFDQUNJQUVvQWtBb0FpUkJKR29RVXlBQ1FSQnFJZ05CdW93SklBSVFOU0FDUVNCcUlnUWdBMEh6bWdrUUxTQUFJQVFnQVNnQ1FFRVFhaENHQVNBRUVBOGFJQU1RRHhvZ0FoQVBHaUFDUVRCcUpBQUxzZ0lCQ0g4akFFRVFheUlDSkFBakFFSEFBV3NpQXlRQUlBTkJ1QUZxSUFBZ0FSRDFDeUFBS0FMRUFTSUZRUUZySVFZZ0FTZ0NBQ0VISUFBb0FzQUJJUWdnQXlnQ3ZBRWhDU0FES0FLNEFTRUFRUUFoQVFKQUEwQWdBU0FGUndSQUlBZ2dBRUVFZEdvaUJDMEFCRVVFUUNBQ1FRQTJBZ3dnQWtFQU9nQUlEQU1MQWtBZ0JDZ0NDQ0FKUncwQUlBY2dCQ2dDQUVjTkFDQUNJQUEyQWd3Z0FrRUJPZ0FJREFNTElBRWdCQ2dDREVzRVFDQUNRUUEyQWd3Z0FrRUFPZ0FJREFNRklBQkJBV3BCQUNBQUlBWkhHeUVBSUFGQkFXb2hBUXdDQ3dBTEN5QURRUWhxUVlhMUEwR2VCRUVPSUFOQnFBRnFFQjBpQUJBWElnRkJHR3BCMGpVUURob2dBUkFZSUFKQkFEWUNEQ0FDUVFBNkFBZ2dBQkFlQ3lBRFFjQUJhaVFBSUFJdEFBZ2hBQ0FDUVJCcUpBQWdBQXQ2QVFGL0l3QkJzQUZySWdJa0FBSi9Ba0FDUUFKQUFrQWdBVUVCYXc0RUFBSURBUU1MSUFBb0FxQUlEQU1MSUFBb0FxUUlEQUlMSUFBb0FxZ0lEQUVMSUFKQnBZb0ZRWlFDUVFnZ0FrR2dBV29RSFNJQUVCY2lBVUVZYWtHKzh3Z1FEaG9nQVJBWUlBQVFIa0VBQ3lFQklBSkJzQUZxSkFBZ0FRdmNCZ0VGZnlNQVFkQUJheUlGSkFBZ0JTQUROZ0lVSUFVZ0FUWUNDQ0FGSUFWQkZHbzJBZ3dDUUNBRFJRUkFJQUFnQlVFSWFoRGlIQXdCQ3dKQUlBTW9BZ1FpQmtINDdROUdCRUFDUUFKQUlBRW9BZ1FnQXhDQ0F4Q2dCQ0lHUVFBZ0JpZ0NCRUhZbkJKR0d5SUhLQUlzSWdZb0FnUWlDRUdRbkJKR0JFQWdCU0FDTmdMQUFTQUZJQUVvQXVDbkFpZ0NyQWcyQXNRQkRBRUxJQWhCcUp3U1JnUkFJQVZCSUdvaUJ5QURLQUlrUVNScUVGTWdBU2dDNEtjQ1FRQVFuQUVoQXlBSEVBOGFJQUVvQXVDbkFpRUJJQVVnQmpZQ0lDQUJRYmdJYWlBSEVJTUNJZ0ZGSUFSRmNrVUVRQ0FESUFFUWFnc2dCU0FETmdMRUFTQUZJQUkyQXNBQkRBSUxJQVZCSUdwQnBZb0ZRWjhMUVFnZ0FTZ0NDQkFYSWdGQkdHb2lBa0doamd3UURob2dBaUFGUWNBQmFpQUhLQUlzS0FJRUtBSUVFQlFpQWhBU0dpQUNFQThhSUFFUUdDQUZRZ0EzQThBQkMwRUFJUVlMSUFVZ0JqWUN5QUVNQVFzZ0JrSEEveEZHQkVBZ0JVRWdhaUFCSUFJZ0F5Z0NKRUVCRU80SElBVkJHR29nQVNBRktBSWdJQU1vQWloQkFCQ21BaUFGS0FJa0lnRWdCU2dDSEJCcUlBVWdBVFlDeEFFZ0JTQUZLQUlZTmdMQUFTQUZJQVVvQWlnMkFzZ0JEQUVMSUFaQndJQVNSZ1JBSUFWQndBRnFJQUVnQWlBREtBSWtRUUVRN2djTUFRc2dCa0dBZ1JKR0JFQWdBeWdDSkVFQ1JnUkFJQVVnQVNnQ0JDQURFSUlES0FJUUlnWTJBaGdnQlVFZ2FpSUlJQVlRcEFRZ0FTZ0M0S2NDUVFBUW5BRWhCeUFJRUE4YUFrQWdBU2dDNEtjQ1FiZ0lhaUFGUVJocUVJTUNJZ2hGRFFBQ1FDQUVEUUFnQXlnQ0pFRUNSd1JBSUFWQklHcEJwWW9GUWVRS1FRZ2dCVUhBQVdvUUhTSUVFQmNpQ1VFWWFrR3lzZ2dRRGhvZ0NSQVlJQVFRSGdzZ0FTZ0NCQ0FERVBNY0lnTVE0UndpQkVVRVFDQURFUEljRFFFZ0JVRWdha0dsaWdWQjhBcEJDQ0FGUWNBQmFoQWRJZ0VRRnlJRFFSaHFRZkhyQ0JBT0dpQURFQmdnQVJBZURBRUxJQUVvQXVDbkFpRUJJQVVnQkNnQ0xEWUNJQ0FCUWZnU2FpQUZRU0JxRU1ZRFJRMEJDeUFISUFnUWFnc2dCU0FHTmdMSUFTQUZJQWMyQXNRQklBVWdBallDd0FFTUFnc2dCVUhBQVdvZ0FTQUNJQU1vQWlnZ0JCRHVCd3dCQ3lBRlFjQUJhaUFGUVFocUVPSWNDeUFBSUFVcEE4QUJOd0lBSUFBZ0JTZ0N5QUUyQWdnTElBVkIwQUZxSkFBTHd3WUJDbjhqQUVIZ0FHc2lBeVFBQWtBZ0FTZ0NCRVVFUUNBQUlBSVFWaG9NQVFzZ0EwRXdhaUFCUWVBRWFpSUVJQUlnQTBGQWF4Q2JCUkRhSENBREtBSXdSUVJBSUFGQnNCNXFLQUlBSVFjQ1FDQUJRZkNBQVdvb0FnQUVRQ0FEUVJCcUlBRkI0SUFCYWlBRFFVQnJJQUlRVmhEU0hBd0JDeUFCS0FJQUlnZ1FIQ0FEUVVCcklnVWdBaEJUSUFNZ0F5Z0NSQ0FETFFCTElnWWdCa0VZZEVFWWRVRUFTQ0lHR3pZQ1BDQURJQU1vQWtBZ0JTQUdHellDT0NBRElBTXBBemczQXdnZ0EwRVFhaUFJUVlnQ2FpQURRUWhxRUo4RUlBVVFEeG9MQWtBZ0J5QUJLQUt3SGtZRVFDQURLQUkwSUFOQkVHb1Ezd1FNQVFzakFFSGdBV3NpQVNRQUlBUkJ4QmxxS0FJQUlna2dCQ2dDekJraUJVR1dBV3hCbGdGcVFlUUFia2tFUUNBRUlBVkJBWFJCQW1vUXh4b2dCQ2dDeEJraENRc2dBMEZBYXlFSElBSW9BZ0FoQ2lBQklBTkJFR28yQXR3QklBRWdBallDMkFFZ0NVRUJheUVMSUFvZ0NYQWhDRUVBSVFZQ1FBTkFJQVlnQ1VjRVFDQUVLQUxBR1NJTUlBaEJ4QUJzYWlJRkxRQTRSUVJBSUFFZ0FVSFlBV29RL0FnZ0JTQUJFTDhhSUF3Z0NFSEVBR3hxSWdJZ0JqWUNRQ0FDSUFvMkFqd2dCQ0FFS0FMTUdVRUJhallDekJrZ0JDQUVLQUxRR1VFQmFqWUMwQmtnQnlBRlFSeHFOZ0lFSUFkQkFEWUNBQXdEQ3lBRklBb2dBaEMrR2dSQUlBRWdBVUhZQVdvUS9BZ0NRQ0FGTFFBNEJFQWdCU0FCRUtBUERBRUxJQVVnQVJES0N3c2dCQ0FFS0FMUUdVRUJhallDMEJrZ0J5QUZRUnhxTmdJRUlBZEJBVFlDQUF3REN5QUdJQVVvQWtCTEJFQWdBVUdnQVdvaUFpQUJRZGdCYWhEOENDQUJJQUlRdXhvaUFpQUdOZ0pBSUFJZ0NqWUNQQ0FDSUFVUXFBOGdBaUFDS0FKQVFRRnFOZ0pBSUFRZ0NFRUJhaUFFS0FMRUdYQWdBaEN3R2lBRUlBUW9Bc3daUVFGcU5nTE1HU0FFSUFRb0F0QVpRUUZxTmdMUUdTQUhJQVZCSEdvMkFnUWdCMEVBTmdJQUlBSVE1d2NNQXdVZ0NFRUJha0VBSUFnZ0MwY2JJUWdnQmtFQmFpRUdEQUlMQUFzTElBRkJoclVEUWVzRFFRNGdBVUdnQVdvUUhTSUNFQmNpQlVFWWFrR1dOUkFPR2lBRkVCZ2dCMElBTndJQUlBSVFIZ3NnQVVIZ0FXb2tBQ0FESUFNcEEwQTNBekFMQ3lBQUlBTW9BalFRVmhvTElBTkI0QUJxSkFBTEl3RUJmeUFBUVJ4cUlnRVErUndnQUVFQU5nS0FBU0FCSUFBb0Fud1FOaUFBRUY0TEV3QWdBQzBBeEJnRVFDQUFRUVJxRUtVRkN3c0tBQ0FBUVpDcUVoQklDMEVCQVg0Z0FFVUVRRUVBRHdzQ2YwRUFJQUFvQWdRaUFDa0RFRUtBd0lDQ2dJQ0lBWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFSjhKRFFBYUlBQVE4Z2NMQzhZQkFRVi9Jd0JCRUdzaUF5UUFJQU1nQVRZQ0RDQUFLQUlFSVFFQ1FDQUFLQUlBUVFGQkFCQ29CU0lDUlEwQUlBRWdBaWdDVENnQ0FCQ3ZDU0lDUlEwQUlBQW9BZ2doQkNBRElBSW9BaEEyQWdnZ0JDQURRUXhxSUFOQkNHb1FrUkVpQWlFR1FRQWhCU0FCUWF3ZGFpRUJJQUFvQWd3b0FnQkJFR29oQkNNQVFSQnJJZ0FrQUNBQ0tBSWNFSVFCRU1VY0lnSkZCRUFnQVNBQVFkcjdCaEFVSWdFZ0JCQW5JQUVRRHhvTElBQkJFR29rQUNBR0lBVWdBaHNoQkFzZ0EwRVFhaVFBSUFRTDhRRUJCSDhqQUVIUUFHc2lBeVFBSUFBb0FnQWlBQ0FEUVVCclFlZkdBQkFVSWdRZ0FTZ0NDRUVRYWhBbklBUVFEeG9DUUFKQUFrQWdBaWdDQkE0Q0FBRUNDeUFBSUFOQlFHdEJydTBERUJRaUFDQUNLQUlBS0FJSVFSQnFFSVlCSUFBUUR4b01BUXNnQTBGQWF5SUJJQUlvQWdBb0Fnd29BaEFvQWtBb0FpUkJKR29RVXlBRFFabStDaUFDUVFocUVNUUJJQU5CRUdvaUJDQURRWTJPQ1JBdElBTkJJR29pQlNBRUlBRVFUaUFEUVRCcUlnWWdCVUh6bWdrUUxTQUFJQVlnQWlnQ0FDZ0NDRUVRYWhDR0FTQUdFQThhSUFVUUR4b2dCQkFQR2lBREVBOGFJQUVRRHhvTElBTkIwQUJxSkFBTEZ3QWdBQ0FCRVBVRElnQkZCRUFRQVFBTElBQkJER29Md1FFQkJuOENmeUFCS0FJQUVNTURJUU1DUUNBQUtBSUVJZ0pGRFFBZ0FDZ0NBQUovSUFKQkFXc2dBM0VnQW1raUFFRUJUUTBBR2lBRElBSWdBMHNOQUJvZ0F5QUNjQXNpQlVFQ2RHb29BZ0FpQkVVTkFDQUNRUUZySVFZZ0FTZ0NBQ0VCSUFCQkFVc2hCd05BSUFRb0FnQWlCRVVOQVNBRUtBSUVJZ0FnQTBjRVFBSkFJQWRGQkVBZ0FDQUdjU0VBREFFTElBQWdBa2tOQUNBQUlBSndJUUFMSUFBZ0JVY05BZ3dCQ3lBRUtBSUlJQUZIRFFBTElBUU1BUXRCQUF0QkFFY0xEQUFnQUJDdEhTQUFFTFFRQ3hNQUlBQWdBU2dDQUNBQktBSUVFTmtNSUFBTEl3RUJmeU1BUVNCcklnTWtBQ0FESUFFZ0FoRHFIaUFBSUFNUVV5QURRU0JxSkFBTERBQWdBQkRGSGlBQUVPZ1FDM0VCQTM4Z0FDZ0NCQ0VDQWtBZ0FDZ0NDRUVEYWtGOGNTSURRY0gvQTJ0Qi92OTdTd1JBSUFJaEFRd0JDeUFBUVpDQUJFRVFFTmtDSWdFMkFnUkJBQ0VESUFGQkFEWUNnSUFFSUFJRVFDQUNJQUUyQW9DQUJBd0JDeUFBSUFFMkFnQUxJQUFnQTBGQWF6WUNDQ0FCSUFOcUN4QUFJQUF0QUJSRkJFQVFid0FMSUFBTEVnQWdBQzBBRkFSQUlBQkJCR29RbFFJTEM2a0JBUVIvSXdCQk1Hc2lBeVFBSUFCQkVHb2dBU0FDRU9jZUlnWkZJQUlnQmtaeVJRUkFJQU5CSUdvaUJTQUJFRk1nQUNnQ0JDRUJJQU5CZ3BBSklBVVF4QUVnQTBFUWFpSUVJQU5CODVvSkVDMGdBU0FFSUFKQkVHb1F3QjRnQkJBUEdpQURFQThhSUFBb0FnUWhBQ0FEUWZPYUNTQUZFTVFCSUFRZ0EwSFk3UU1RTFNBQUlBUWdCa0VRYWhDL0hpQURRUkJxRUE4YUlBTVFEeG9nQlJBUEdnc2dBMEV3YWlRQUN4Y0FJQUFnQVNnQ0FCQ2ZIeUFCS0FJRUtBSUFOZ0pVQ3dvQUlBQkIwS2dTRUVnTENnQWdBRUd3cVJJUVNBc3VBUUYvSUFBZ0FSQ2REQ0lBUW9DQWdJQWdOd0l3SUFBZ0FFRWNhaUlDTmdJc0lBSWdBVUVzYWhDVUh5QUFDNVlDQWdOL0FYNGdBU0FBUWVnU2FpZ0NBRXNFUUNBQUtBTGdFaUVESUFBaEFpQUFJQUZCR0U4RWYwRi9JQUd0UXVRQWZpSUZweUFGUWlDSXB4c1FGU0VDSUFFRlFSZ0xOZ0xvRWlBQUlBSTJBdUFTUVFBaEFnTkFJQUFvQXVRU0lBSk5CRUFnQUNBREVEWUZJQUpCNUFCc0lnUWdBQ2dDNEJKcUlBTWdCR29pQkJDTkVSb2dCQkRxQWlBQ1FRRnFJUUlNQVFzTEN5QUFRZVFTYWlnQ0FDRUNBMEFnQVNBQ1R3UkFBa0FnQUNnQzVCSWlBaUFCSUFFZ0Fra2JJUVFEUUNBQ0lBUkdEUUVnQUNnQzRCSWdBa0hrQUd4cUlnTkNBRGNDWENBRFFRQTZBRmdnQTBFQU9nQUFJQUpCQVdvaEFnd0FDd0FMQlNBQUtBTGdFaUFDUVFGcklnSkI1QUJzYWhEcUFnd0JDd3NnQUNBQk5nTGtFZ3U4QXdFR2Z5TUFRZUFDYXlJQ0pBQWdBa0hRQVdvUWlBTWlCQ0FFS0FJQVFReHJJZ01vQWdCcUlnVWdCU2dDQkVHRUNISTJBZ1FnQWtISUFXb2lCU0FFSUFNb0FnQnFFSXNHRUlZSUlBVVFaQ0FFSUFRb0FnQkJER3NvQWdCcVFSUTJBZ2dnQkVFSWFpQUJLZ0lBRUprTklBSkJ1QUZxSUFSQkRHb1FRaUFFSUFKQnNBRnFFT0FVQWtBZ0FTb0NBQ0FDS3dPd0FiWmJCRUFEUUFKQUlBSW9BcndCSUFJdEFNTUJJZ0VnQVVFWWRFRVlkU0lHUVFCSUlnRWJJZ05CQWtrTkFDQUNLQUs0QVNJRklBSkJ1QUZxSUFFYklnY2dBMEVCYXlJQmFpMEFBRUV3UncwQUlBTWdCMnBCQW1zdEFBQkJMa1lOQUFKQUlBWkJBRWdFUUNBQ0lBRTJBcndCREFFTElBSWdBVG9Bd3dFZ0FrRzRBV29oQlFzZ0FTQUZha0VBT2dBQURBRUxDeUFBUVFocUlBSkJ1QUZxRUJJYURBRUxJQUpCR0dvaUJTQUNRU0JxRUlnRElnTWdBeWdDQUVFTWF5Z0NBR29RaXdZUWhnZ2dCUkJrSUFNZ0F5Z0NBRUVNYXlnQ0FHcEJDVFlDQ0NBRFFRaHFJQUVxQWdBUW1RMGdBa0VJYWlJQklBTkJER29RUWlBQVFRaHFJQUVRRWhvZ0FSQVBHaUFERUxzQ0dnc2dBa0c0QVdvUUR4b2dCQkM3QWhvZ0FrSGdBbW9rQUNBQUMxUUJBbjhqQUVFUWF5SURKQUFnQUNBQkVINGdBMEVJYWlJQUlBRkJIR29pQkJENUJpQUVJQUlRbGdvZ0FVRUJFTXdVSUFBUVpDQUJLQUlZSWdBRVFDQURJQUFnQWhDeERDQURFR1FMSUFOQkVHb2tBQXNNQUNBQUVMb01HaUFBRUI4TEJ3QWdBQkM2REF2V0FnRUNmeU1BUVVCcUlnd2tBQ0FNUVRocUlnMGdBU0FDSUFjZ0NDQUtJQXNReWdrQ1FDQU5FREFFUUNBQVFRSTZBQVFNQVFzZ0RFRXdhaUlOSUFFZ0FpQURJQXhCT0dvUUdpb0NBQkRaQVNBTkVEQUVRQ0FBUVFJNkFBUU1BUXNnREVFb2FpSU5JQUVnQWlBRUlBVWdDaUFMRU1vSklBMFFNQVJBSUFCQkFqb0FCQXdCQ3lBTVFTQnFJZzBnQVNBQ0lBWWdERUVvYWhBYUtnSUFFTmtCSUEwUU1BUkFJQUJCQWpvQUJBd0JDeUFNUVJocUlnMGdBU0FDSUFRZ0JTQUhJQWdReWdrZ0RSQXdCRUFnQUVFQ09nQUVEQUVMSUF4QkVHb2lEU0FCSUFJZ0NTQU1RUmhxRUJvcUFnQVEyUUVnRFJBd0JFQWdBRUVDT2dBRURBRUxJQXhCQ0dvaURTQUJJQUlnREVFd2FoQWFLZ0lBSUF4QklHb1FHaW9DQUJEL0F5QU5FREFFUUNBQVFRSTZBQVFNQVFzZ0FDQUJJQUlnREVFSWFoQWFLZ0lBSUF4QkVHb1FHaW9DQUJEV0F3c2dERUZBYXlRQUM5WUNBUUovSXdCQlFHb2lEQ1FBSUF4Qk9Hb2lEU0FCSUFJZ0J5QUlJQW9nQ3hETENRSkFJQTBRTUFSQUlBQkJBam9BQkF3QkN5QU1RVEJxSWcwZ0FTQUNJQU1nREVFNGFoQWFLZ0lBRU5vQklBMFFNQVJBSUFCQkFqb0FCQXdCQ3lBTVFTaHFJZzBnQVNBQ0lBUWdCU0FLSUFzUXl3a2dEUkF3QkVBZ0FFRUNPZ0FFREFFTElBeEJJR29pRFNBQklBSWdCaUFNUVNocUVCb3FBZ0FRMmdFZ0RSQXdCRUFnQUVFQ09nQUVEQUVMSUF4QkdHb2lEU0FCSUFJZ0JDQUZJQWNnQ0JETENTQU5FREFFUUNBQVFRSTZBQVFNQVFzZ0RFRVFhaUlOSUFFZ0FpQUpJQXhCR0dvUUdpb0NBQkRhQVNBTkVEQUVRQ0FBUVFJNkFBUU1BUXNnREVFSWFpSU5JQUVnQWlBTVFUQnFFQm9xQWdBZ0RFRWdhaEFhS2dJQUVJQUVJQTBRTUFSQUlBQkJBam9BQkF3QkN5QUFJQUVnQWlBTVFRaHFFQm9xQWdBZ0RFRVFhaEFhS2dJQUVOY0RDeUFNUVVCckpBQUwxQUlCQW44akFFSHdBR3NpRENRQUlBeEI0QUJxSWcwZ0FTQUNJQWNnQ0NBS0lBc1F6QWtDUUNBTkVHSUVRQ0FBUVFJNkFBZ01BUXNnREVIUUFHb2lEU0FCSUFJZ0F5QU1RZUFBYWhCS0t3TUFFTnNCSUEwUVlnUkFJQUJCQWpvQUNBd0JDeUFNUVVCcklnMGdBU0FDSUFRZ0JTQUtJQXNRekFrZ0RSQmlCRUFnQUVFQ09nQUlEQUVMSUF4Qk1Hb2lEU0FCSUFJZ0JpQU1RVUJyRUVvckF3QVEyd0VnRFJCaUJFQWdBRUVDT2dBSURBRUxJQXhCSUdvaURTQUJJQUlnQkNBRklBY2dDQkRNQ1NBTkVHSUVRQ0FBUVFJNkFBZ01BUXNnREVFUWFpSU5JQUVnQWlBSklBeEJJR29RU2lzREFCRGJBU0FORUdJRVFDQUFRUUk2QUFnTUFRc2dEQ0FCSUFJZ0RFSFFBR29RU2lzREFDQU1RVEJxRUVvckF3QVFnUVFnREJCaUJFQWdBRUVDT2dBSURBRUxJQUFnQVNBQ0lBd1FTaXNEQUNBTVFSQnFFRW9yQXdBUTJBTUxJQXhCOEFCcUpBQUxKQUFnQUVFSWFpQUJJQU5MQkg5QnJPSUdCU0FCUVFKMElBSnFLQUlBQ3hBT0dpQUFDMGNCQVg4Q1FDQUJSUTBBSUFFb0Fnd2lBU0FBS0FJRUlBQW9BZ0FpQUd0QkFuVlBEUUFnQUNBQlFRSjBhaWdDQUNJQVJRMEFJQUJCQUNBQUtBSUVJQUpHR3lFREN5QURDK1VCQVFaL0l3QkI4QUZySWdFa0FDQUJRZUFBYWhCSklRY2dBVUhRQUdvaUNDQUJJQUVRZ2dZZ0IwRUlhaUlDSUFnUUVob2dBa0gwN1F3UURob2dBVUZBYXlJSklBRWdBUkNCQmlBQ0lBa1FFaG9nQWtIMDdRd1FEaG9nQWlBQlFUQnFJQVlRRkNJS0VCSWFJQUpCOU8wTUVBNGFJQUlnQVVFZ2FpQUZFQlFpQ3hBU0dpQUNRZlR0REJBT0dpQUNJQUZCRUdvZ0JCQVVJZ3dRRWhvZ0FrRzE5QWtRRGhvZ0FpQUJJQU1RRkNJQ0VCSWFJQUlRRHhvZ0RCQVBHaUFMRUE4YUlBb1FEeG9nQ1JBUEdpQUlFQThhSUFBZ0IwRU1haEJDSUFjUVVTQUJRZkFCYWlRQUMzWUJBbjhqQUVFUWF5SUFKQUFDUUNBQklBSW9BZ1FpQlVId2hSQkhCSDhnQlVHWXJoSkhEUUVnQWlnQ0dDQURSdzBCSUFJb0Fod0ZJQUlMRUtzQ0lnSkZCRUFNQVFzZ0FDQUNOZ0lNSUFFb0FnQWhBU0FBSUFNMkFnZ2dBU0FBUVFocUlBQkJER29Ra1JFaEJBc2dBRUVRYWlRQUlBUUxTZ0VCZnlNQVFSQnJJZ1lrQUFKQUlBRW9BZ0FnQldzZ0JFa2lBUTBBSUFJb0FnQWlBa1VOQUNBR0lBQkJCR29nQXhDNEFpQUNJQVlRbmdFZ0JoQVBHZ3NnQmtFUWFpUUFJQUVMakFFQkEzOGpBRUhRQVdzaUF5UUFJQU5CRUdvaUJDQUFLQUlFSWdVb0FnQkJjaUFBS0FJSUVCQWdBeUFGS0FJQUlBSVFOeUFFSUFNUUVob2dCRUhRbGdvUURob2dCQ0FGS0FJQVFZQURha0VjSUFBb0Fnd29BZ1FvQWdBUWp3RVFEaG9nQkVHeDJRd1FEaG9nQkNBQkVCSWFJQU1vQXN3QklRQWdBeEFQR2lBRUVCRWdBMEhRQVdva0FDQUFDN29CQVFWL0l3QkI0QUZySWdRa0FDQUFLQUlNUVFJUTRnTWhCeUFFUVNCcUlnTWdBQ2dDQkNJRktBSUFRWElnQUNnQ0NCQVFJQVJCRUdvaUJpQUZLQUlBSUFjUU55QURJQVlRRWhvZ0EwR2t3Z29RRGhvZ0JDQUZLQUlBS0FJQUtBSUFFSUVDSUFNZ0JCQVNHaUFEUWVlV0NoQU9HaUFESUFVb0FnQkJnQU5xUVJ3Z0FDZ0NEQkNQQVJBT0dpQURJQUlRRGhvZ0F5QUJFQklhSUFRb0F0d0JJUUFnQkJBUEdpQUdFQThhSUFNUUVTQUVRZUFCYWlRQUlBQUxGd0FnQUVFQUlBQUVmeUFBS0FJRUVMZ1NCVUVBQ3hzTDR3TUJCbjhqQUVHd0Eyc2lDeVFBQWtBQ1FDQUFLQUlBS0FJQUtBSUFFRWRGRFFBZ0JCRDNBU0lOUVFGR0lBMUIvLy8vL3dkR2NrVUVRQ0FMUWZBQmFpSU1JQUFvQWdCQmNpQUVFQkFnQzBIZ0FXb2lEaUFBS0FJQUlBb1FOeUFNSUE0UUVob2dEQ0FKRUE0YUlBdEIwQUZxSWc4Z0FDQUJJQUlnQXlBRVFmLy8vLzhIRUlvQklBd2dEeEFTR2lBTVFmZndEQkFPR2lBTFFjQUJhaUlCSUFBZ0JCQ0FBaUFNSUFFUUVob2dDeWdDckFNaERTQUJFQThhSUE4UUR4b2dEaEFQR2lBTUVCRU1BZ3NnQUVFb2FpRU1JQUFvQWlRaERRTkFJQXdnRFVZTkFTQU5LQUlRSWhBZ0NFY0VRQ0FMUWZBQmFpSU1JQUFvQWdCQmNpQUVFQkFnQzBIZ0FXb2lEaUFBS0FJQUlBY1FOeUFNSUE0UUVob2dEQ0FHRUE0YUlBdEIwQUZxSWc4Z0FDQUJJQUlnQXlBRUlCQVFpZ0VnRENBUEVCSWFJQXNvQXF3RElRMGdEeEFQR2lBT0VBOGFJQXdRRVF3REJTQU5FRXdoRFF3QkN3QUxBQXRCQUNFTklBQW9BaEFOQUNBTElBUW9BaWcyQXRBQklBQkJCR29nQzBIUUFXb1FtUUVoQXlBTFFRQTJBdVFCSUFzZ0JUWUM0QUVnQ3lBQU5nTEFBU0FMUVFocUlnd2dDMEhnQVdvZ0MwSEFBV29nQVNBQ0lBUVEvd0VnQXlBTFFmQUJhaUFNRVA0QklnQVFrd0VnQUJBV0lBd1E2QUVMSUF0QnNBTnFKQUFnRFF1QkJRRUhmeU1BUWNBRGF5SUpKQUFDUUFKQUlBQW9BZ0FvQWdBb0FnQVFSMFVOQUNBQktBSUVLQUlBSVFzZ0JCRDNBU0lLSUFkR0lBcEIvLy8vL3dkR2NrVUVRQ0FMUVFFUTRnTWhDaUFKUVlBQ2FpSUlJQUFvQWdCQmNpQUVFQkFnQ1VId0FXb2lEQ0FBS0FJQUlBb1FOeUFJSUF3UUVob2dDVUhnQVdvaURTQUFLQUlBS0FJQUtBSUFFSUVDSUFnZ0RSQVNHaUFJUVltV0NoQU9HaUFJSUFBb0FnQkJnQU5xUVJ3Z0N4Q1BBUkFPR2lBSUlBWVFEaG9nQ1VIUUFXb2lDeUFBSUFFZ0FpQURJQVJCLy8vLy93Y1FpZ0VnQ0NBTEVCSWFJQWhCOS9BTUVBNGFJQWxCd0FGcUlnRWdBQ0FFRUlBQ0lBZ2dBUkFTR2lBSktBSzhBeUVLSUFFUUR4b2dDeEFQR2lBTkVBOGFJQXdRRHhvZ0NCQVJEQUlMSUFCQktHb2hDQ0FBS0FJa0lRb0RRQ0FJSUFwR0RRRWdDaWdDRUNJT1FRUkhCRUFnQzBFQUVPSURJUW9nQ1VHQUFtb2lDQ0FBS0FJQVFYSWdCQkFRSUFsQjhBRnFJZ3dnQUNnQ0FDQUtFRGNnQ0NBTUVCSWFJQWxCNEFGcUlnMGdBQ2dDQUNnQ0FDZ0NBQkNCQWlBSUlBMFFFaG9nQ0VHSmxnb1FEaG9nQ0NBQUtBSUFRWUFEYWtFY0lBc1Fqd0VRRGhvZ0NFR3Q0d3dRRGhvZ0NVSFFBV29pQ3lBQUlBRWdBaUFESUFRZ0RoQ0tBU0FJSUFzUUVob2dDU2dDdkFNaENpQUxFQThhSUEwUUR4b2dEQkFQR2lBSUVCRU1Bd1VnQ2hCTUlRb01BUXNBQ3dBTFFRQWhDaUFBS0FJUURRQWdDU0FFS0FJb05nTGdBU0FBUVFScUlBbEI0QUZxRUprQklRTWdDVUVBTmdMMEFTQUpJQVUyQXZBQklBa2dBRFlDMEFFZ0NVRUlhaUlJSUFsQjhBRnFJQWxCMEFGcUlBRWdBaUFFRVA4QklBTWdDVUdBQW1vZ0NCRCtBU0lBRUpNQklBQVFGaUFJRU9nQkN5QUpRY0FEYWlRQUlBb0xrZ0lCQkg4akFFRVFheUlJSkFBZ0FCQ1lCaUFDUVc0Z0FXdE5CRUFnQUJEQkF5RUpRVzhoQ2lBQlFlYi8vLzhIVFFSQUlBZ2dBVUVCZERZQ0NDQUlJQUVnQW1vMkFnd2dDRUVNYWlBSVFRaHFFSWtGS0FJQUVKY0dRUUZxSVFvTElBb1FsQVloQWlBRUJFQWdBaENEQVNBSkVJTUJJQVFRdVFNYUN5QUdCRUFnQWhDREFTQUVhaUFISUFZUXVRTWFDeUFESUFRZ0JXb2lDMnNoQnlBRElBdEhCRUFnQWhDREFTQUVhaUFHYWlBSkVJTUJJQVJxSUFWcUlBY1F1UU1hQ3lBQlFRRnFJZ0ZCQzBjRVFDQUpJQUVRa1EwTElBQWdBaENXQmlBQUlBb1FsUVlnQUNBRUlBWnFJQWRxSWdBUTB3UWdDRUVBT2dBSElBQWdBbW9nQ0VFSGFoRFJBaUFJUVJCcUpBQVBDeEM0QXdBTEN3QWdCQ0FDTmdJQVFRTUxHUUFnQUJDNEJnUkFJQUFnQVJEVEJBOExJQUFnQVJDTEJRczVBUUovSXdCQkVHc2lBeVFBSUFOQkNHb2lCQ0FCRUg0Z0FpQUVFSVVISWdFUTd3STJBZ0FnQUNBQkVPNENJQVFRWkNBRFFSQnFKQUFMTndFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSWdNZ0FCQitJQU1ROEFKQmdKTVBRWnFURHlBQkVQb0VJQU1RWkNBQ1FSQnFKQUFnQVFzNUFRSi9Jd0JCRUdzaUF5UUFJQU5CQ0dvaUJDQUJFSDRnQWlBRUVJa0hJZ0VRN3dJNkFBQWdBQ0FCRU80Q0lBUVFaQ0FEUVJCcUpBQUxkQUVDZnlNQVFSQnJJZ0VrQUNBQUlBQW9BZ0JCREdzb0FnQnFFTFVHQkVBZ0FVRUlhaUlDSUFBUTN3TWFBa0FnQWhDU0JFVU5BQ0FBSUFBb0FnQkJER3NvQWdCcUVMVUdFSkVIUVg5SERRQWdBQ0FBS0FJQVFReHJLQUlBYWtFQkVJOERDeUFCUVFocUVPQURDeUFCUVJCcUpBQUxDUUFnQUNBQkVJSUVDN29FQWdSOUFuOENRQUpBQWtBQ2ZRSkFJQUM4SWdaQi8vLy8vd2R4SWdWQnhQRFdqQVJQQkVBZ0JVR0FnSUQ4QjBzTkJTQUdRUUJJQkVCREFBQ0F2dzhMSUFCRGdIR3hRbDVGRFFFZ0FFTUFBQUIvbEE4TElBVkJtZVRGOVFOSkRRSWdCVUdScTVUOEEwc05BQ0FHUVFCT0JFQkJBU0VGUTlIM0Z6Y2hBU0FBUTRCeE1iK1NEQUlMUVg4aEJVUFI5eGUzSVFFZ0FFT0FjVEUva2d3QkN3Si9JQUJETzZxNFA1UkRBQUFBUHlBQW1KSWlBWXREQUFBQVQxMEVRQ0FCcUF3QkMwR0FnSUNBZUFzaUJiSWlBa1BSOXhjM2xDRUJJQUFnQWtPQWNURy9sSklMSWdBZ0FDQUJreUlBa3lBQmt5RUJEQUVMSUFWQmdJQ0FtQU5KRFFGQkFDRUZDeUFBSUFCREFBQUFQNVFpQTVRaUFpQUNJQUpERUREUE9wUkRhSWdJdlpLVVF3QUFnRCtTSWdSREFBQkFRQ0FFSUFPVWt5SURrME1BQU1CQUlBQWdBNVNUbFpRaEF5QUZSUVJBSUFBZ0FDQURsQ0FDazVNUEN5QUFJQU1nQVpPVUlBR1RJQUtUSVFFQ1FBSkFBa0FnQlVFQmFnNERBQUlCQWdzZ0FDQUJrME1BQUFBL2xFTUFBQUMva2c4TElBQkRBQUNBdmwwRVFDQUJJQUJEQUFBQVA1S1RRd0FBQU1DVUR3c2dBQ0FCa3lJQUlBQ1NRd0FBZ0QrU0R3c2dCVUVYZENJR1FZQ0FnUHdEYXI0aEFpQUZRVGxQQkVBZ0FDQUJrME1BQUlBL2tpSUFJQUNTUXdBQUFIK1VJQUFnQXBRZ0JVR0FBVVliUXdBQWdMK1NEd3RCZ0lDQS9BTWdCbXUrSVFNZ0JVRVdUUVI5UXdBQWdEOGdBNU1nQUNBQms1SUZJQUFnQVNBRGtwTkRBQUNBUDVJTElBS1VJUUFMSUFBTDVRVURCSHdCZndGK0FrQUNRQUpBQW53Q1FDQUF2U0lHUWlDSXAwSC8vLy8vQjNFaUJVSDYwSTJDQkU4RVFDQUF2VUwvLy8vLy8vLy8vLzhBZzBLQWdJQ0FnSUNBK1A4QVZnMEZJQVpDQUZNRVFFUUFBQUFBQUFEd3Z3OExJQUJFN3puNi9rSXVoa0JrUlEwQklBQkVBQUFBQUFBQTRIK2lEd3NnQlVIRDNOaitBMGtOQWlBRlFiSEZ3djhEU3cwQUlBWkNBRmtFUUVFQklRVkVkang1TmU4NTZqMGhBU0FBUkFBQTRQNUNMdWEvb0F3Q0MwRi9JUVZFZGp4NU5lODU2cjBoQVNBQVJBQUE0UDVDTHVZL29Bd0JDd0ovSUFCRS9vSXJaVWNWOXoraVJBQUFBQUFBQU9BL0lBQ21vQ0lCbVVRQUFBQUFBQURnUVdNRVFDQUJxZ3dCQzBHQWdJQ0FlQXNpQmJjaUFrUjJQSGsxN3pucVBhSWhBU0FBSUFKRUFBRGcva0l1NXIraW9Bc2lBQ0FBSUFHaElnQ2hJQUdoSVFFTUFRc2dCVUdBZ01Ea0Ewa05BVUVBSVFVTElBQWdBRVFBQUFBQUFBRGdQNklpQTZJaUFpQUNJQUlnQWlBQ0lBSkVMY01KYnJmOWlyNmlSRGxTNW9iS3o5QStvS0pFdDl1cW5obk9GTCtnb2tTRlZmNFpvQUZhUDZDaVJQUVFFUkVSRWFHL29LSkVBQUFBQUFBQThEK2dJZ1JFQUFBQUFBQUFDRUFnQkNBRG9xRWlBNkZFQUFBQUFBQUFHRUFnQUNBRG9xR2pvaUVESUFWRkJFQWdBQ0FBSUFPaUlBS2hvUThMSUFBZ0F5QUJvYUlnQWFFZ0FxRWhBUUpBQWtBQ1FDQUZRUUZxRGdNQUFnRUNDeUFBSUFHaFJBQUFBQUFBQU9BL29rUUFBQUFBQUFEZ3Y2QVBDeUFBUkFBQUFBQUFBTkMvWXdSQUlBRWdBRVFBQUFBQUFBRGdQNkNoUkFBQUFBQUFBQURBb2c4TElBQWdBYUVpQUNBQW9FUUFBQUFBQUFEd1A2QVBDeUFGUWY4SGFxMUNOSWEvSVFJZ0JVRTVUd1JBSUFBZ0FhRkVBQUFBQUFBQThEK2dJZ0FnQUtCRUFBQUFBQUFBNEgraUlBQWdBcUlnQlVHQUNFWWJSQUFBQUFBQUFQQy9vQThMUkFBQUFBQUFBUEEvUWY4SElBVnJyVUkwaHI4aUE2RWdBQ0FCb2FBZ0FDQUJJQU9nb1VRQUFBQUFBQUR3UDZBZ0JVRVRUUnNnQXFJaEFBc2dBQXVaQVFFRGZDQUFJQUNpSWdNZ0F5QURvcUlnQTBSODFjOWFPdG5sUGFKRTY1d3JpdWJsV3I2Z29pQURJQU5FZmY2eFYrTWR4ejZpUk5WaHdSbWdBU3Evb0tKRXB2Z1FFUkVSZ1QrZ29DRUZJQU1nQUtJaEJDQUNSUVJBSUFRZ0F5QUZva1JKVlZWVlZWWEZ2NkNpSUFDZ0R3c2dBQ0FESUFGRUFBQUFBQUFBNEQraUlBVWdCS0tob2lBQm9TQUVSRWxWVlZWVlZjVS9vcUNoQzVJQkFRTjhSQUFBQUFBQUFQQS9JQUFnQUtJaUFrUUFBQUFBQUFEZ1A2SWlBNkVpQkVRQUFBQUFBQUR3UHlBRW9TQURvU0FDSUFJZ0FpQUNSSkFWeXhtZ0Fmbytva1IzVWNFV2JNRld2NkNpUkV4VlZWVlZWYVUvb0tJZ0FpQUNvaUlESUFPaUlBSWdBa1RVT0lpKzZmcW92YUpFeExHMHZaN3VJVDZnb2tTdFVweUFUMzZTdnFDaW9LSWdBQ0FCb3FHZ29Bc3JBQ0FBSUFCRGE5TU52SlJEdWhNdnZaS1VRM1dxS2o2U0lBQ1VJQUJEcnVVMHY1UkRBQUNBUDVLVkM0MEJBQ0FBSUFBZ0FDQUFJQUJFQ2ZmOURlRTlBaitpUklpeUFYWGc3MGsvb0tKRU80OW90U2lDcEwrZ29rUlZSSWdPVmNISlA2Q2lSSDF2NndNUzF0Uy9vS0pFVlZWVlZWVlZ4VCtnSUFDaUlBQWdBQ0FBSUFCRWdwSXVzY1c0c3oraVJGa0JqUnRzQnVhL29LSkV5SXBabk9VcUFFQ2dva1JMTFlvY0p6b0R3S0NpUkFBQUFBQUFBUEEvb0tNTFF3RURmd0pBSUFKRkRRQURRQ0FBTFFBQUlnUWdBUzBBQUNJRlJnUkFJQUZCQVdvaEFTQUFRUUZxSVFBZ0FrRUJheUlDRFFFTUFnc0xJQVFnQldzaEF3c2dBd3NVQVFGL0lBQW9BZ0FoQVNBQVFRQTJBZ0FnQVF1ZEF3TUJmZ04vQTN3Q1FBSkFBa0FDUUNBQXZTSUJRZ0JaQkVBZ0FVSWdpS2NpQWtILy96OUxEUUVMSUFGQy8vLy8vLy8vLy8vL0FJTlFCRUJFQUFBQUFBQUE4TDhnQUNBQW9xTVBDeUFCUWdCWkRRRWdBQ0FBb1VRQUFBQUFBQUFBQUtNUEN5QUNRZi8vdi84SFN3MENRWUNBd1A4RElRTkJnWGdoQkNBQ1FZQ0F3UDhEUndSQUlBSWhBd3dDQ3lBQnB3MEJSQUFBQUFBQUFBQUFEd3NnQUVRQUFBQUFBQUJRUTZLOUlnRkNJSWluSVFOQnkzY2hCQXNnQkNBRFFlSytKV29pQWtFVWRtcTNJZ1pFQUFEZy9rSXU1aitpSUFGQy8vLy8vdytESUFKQi8vOC9jVUdld1pyL0EycXRRaUNHaEw5RUFBQUFBQUFBOEwrZ0lnQWdBQ0FBUkFBQUFBQUFBQUJBb0tNaUJTQUFJQUJFQUFBQUFBQUE0RCtpb2lJSElBVWdCYUlpQlNBRm9pSUFJQUFnQUVTZnhualFDWnJEUDZKRXIzaU9IY1Z4ekQrZ29rUUUrcGVabVpuWlA2Q2lJQVVnQUNBQUlBQkVSRkkrM3hMeHdqK2lSTjREeTVaa1JzYy9vS0pFV1pNaWxDUkowaitnb2tTVFZWVlZWVlhsUDZDaW9LQ2lJQVpFZGp4NU5lODU2ajJpb0NBSG9hQ2dJUUFMSUFBTDBoWUNDSDhJZmlNQVFjQUJheUlGSkFBZ0F5QURLQUlBS0FJSUVRQUFFTElDSWdoRkJFQWdCVUVJYWtIRnJRVkI2UWhCQ0NBRlFiQUJhaEFkSWdZUUZ5SUhRUmhxUWR5WkNCQU9HaUFIRUJnZ0JoQWVDeUFJS0FJWUlRWUNRQUpBQWtBQ1FBSkFJQWdvQWh4QkFtc09Bd0FCQWdNTElBVWdBVFlDQ0NBRklBSXBBZ2czQWhRZ0JTQUNLQUlRTmdJY0lBVWdBaWtDQURjQ0RDQUZJQVkyQWlBZ0EwRUFJQU1vQWdBb0Fnd1JBUUFoQmlBRFFRRWdBeWdDQUNnQ0RCRUJBQ0VESUFSQkFDQUVLQUlBS0FJTUVRRUFJUWdnQkVFQklBUW9BZ0FvQWd3UkFRQWhCQ0FHSUFZb0FnQW9BZ2dSQUFBaUIwVUVRQ0FBUVFBNkFBUU1CQXNnQlVFSWFrRUVjaUVDQWtBQ1FDQUhLQUlFSWdkQjBLQVNSZ1JBSUFWQnNBRnFJUWNnQmhCaklRMGdBeEJqSVE0Z0NCQmpJUThnQkJCaklSQWpBRUV3YXlJREpBQWdBMEVnYWlJRUlBRWdBaUFOSUE4UXhBUUNRQ0FFRUdJRVFDQUhRUUk2QUFnTUFRc2dBMEVRYWlJRUlBRWdBaUFPSUJBUXhBUWdCQkJpQkVBZ0IwRUNPZ0FJREFFTElBTWdBU0FDSUFOQklHb1FTaWtEQUNBRFFSQnFFRW9wQXdBUWpnWWdBeEJpQkVBZ0IwRUNPZ0FJREFFTElBY2dBeWtEQURjREFDQUhJQU1wQXdnM0F3Z0xJQU5CTUdva0FDQUhFTElCQkVBZ0JVR29BV29nQVNBRktBSWdJQVZCc0FGcUVFb3BBd0FRL1FFTUFnc2dCVUVDT2dDc0FRd0JDeUFIUWZDZkVrWUVRQ0FGUWFnQmFpQUZRUWhxSUFZUVBDQURFRHdnQ0JBOElBUVFQQkRBRlF3QkN5QUhRYkNwRWtZRVFDQUZRYWdCYWlBRlFRaHFJQVlRTkNBREVEUWdDQkEwSUFRUU5CQzhGUXdCQ3lBSFFaQ3FFa1lFUUNBRlFiQUJhaUlDSUFZUVlTQURFR0VnQ0JCaElBUVFZUkM0RlNBQ0VDc0VRQ0FGUWFnQmFpQUJJQVVvQWlBZ0JVR3dBV29RR2lnQ0FCQ3hBUXdDQ3lBRlFRSTZBS3dCREFFTElBZEJvTE1TUmdSQUlBVkJzQUZxSWdJZ0JoQlpJQU1RV1NBSUVGa2dCQkJaRUxnVklBSVFLd1JBSUFWQnFBRnFJQUVnQlNnQ0lDQUZRYkFCYWhBYUtBSUFFSzBCREFJTElBVkJBam9BckFFTUFRc2dCMEhRcUJKSERRRWdCVUdvQVdvZ0JVRUlhaUFHRUQ4Z0F4QS9JQWdRUHlBRUVEOFFyUlVMSUFBZ0JTa0RxQUUzQWdBTUJBc2dBRUVBT2dBRURBTUxJQVVnQVRZQ0NDQUZJQUlwQWdnM0FoUWdCU0FDS0FJUU5nSWNJQVVnQWlrQ0FEY0NEQ0FGSUFZMkFpQWdBMEVBSUFNb0FnQW9BZ3dSQVFBaEJpQURRUUVnQXlnQ0FDZ0NEQkVCQUNFSUlBTkJBaUFES0FJQUtBSU1FUUVBSVFNZ0JFRUFJQVFvQWdBb0Fnd1JBUUFoQnlBRVFRRWdCQ2dDQUNnQ0RCRUJBQ0VKSUFSQkFpQUVLQUlBS0FJTUVRRUFJUW9nQmlBR0tBSUFLQUlJRVFBQUlnUkZCRUFnQUVFQU9nQUVEQU1MSUFWQkNHcEJCSEloQWdKQUFrQWdCQ2dDQkNJRVFkQ2dFa1lFUUNBRlFiQUJhaUVFSUFZUVl5RU5JQWdRWXlFT0lBTVFZeUVQSUFjUVl5RVFJQWtRWXlFUklBb1FZeUVTSXdCQjBBQnJJZ01rQUNBRFFVQnJJZ1lnQVNBQ0lBMGdFQkRFQkFKQUlBWVFZZ1JBSUFSQkFqb0FDQXdCQ3lBRFFUQnFJZ1lnQVNBQ0lBNGdFUkRFQkNBR0VHSUVRQ0FFUVFJNkFBZ01BUXNnQTBFZ2FpSUdJQUVnQWlBUElCSVF4QVFnQmhCaUJFQWdCRUVDT2dBSURBRUxJQU5CRUdvaUJpQUJJQUlnQTBGQWF4QktLUU1BSUFOQk1Hb1FTaWtEQUJDT0JpQUdFR0lFUUNBRVFRSTZBQWdNQVFzZ0F5QUJJQUlnQTBFUWFpSUNFRW9wQXdBZ0EwRWdhaEJLS1FNQUVJNEdJQU1nQXlrRENEY0RHQ0FESUFNcEF3QTNBeEFnQWhCaUJFQWdCRUVDT2dBSURBRUxJQVFnQXlrREVEY0RBQ0FFSUFNcEF4ZzNBd2dMSUFOQjBBQnFKQUFnQkJDeUFRUkFJQVZCcUFGcUlBRWdCU2dDSUNBRlFiQUJhaEJLS1FNQUVQMEJEQUlMSUFWQkFqb0FyQUVNQVFzZ0JFSHdueEpHQkVBZ0JVR29BV29nQlVFSWFpQUdFRHdnQ0JBOElBTVFQQ0FIRUR3Z0NSQThJQW9RUEJDcUZRd0JDeUFFUWJDcEVrWUVRQ0FGUWFnQmFpQUZRUWhxSUFZUU5DQUlFRFFnQXhBMElBY1FOQ0FKRURRZ0NoQTBFS1VWREFFTElBUkJrS29TUmdSQUlBVkJzQUZxSWdJZ0JoQmhJQWdRWVNBREVHRWdCeEJoSUFrUVlTQUtFR0VRb1JVZ0FoQXJCRUFnQlVHb0FXb2dBU0FGS0FJZ0lBVkJzQUZxRUJvb0FnQVFzUUVNQWdzZ0JVRUNPZ0NzQVF3QkN5QUVRYUN6RWtZRVFDQUZRYkFCYWlJQ0lBWVFXU0FJRUZrZ0F4QlpJQWNRV1NBSkVGa2dDaEJaRUtFVklBSVFLd1JBSUFWQnFBRnFJQUVnQlNnQ0lDQUZRYkFCYWhBYUtBSUFFSzBCREFJTElBVkJBam9BckFFTUFRc2dCRUhRcUJKSERRRWdCVUdvQVdvZ0JVRUlhaUFHRUQ4Z0NCQS9JQU1RUHlBSEVEOGdDUkEvSUFvUVB4Q2ZGUXNnQUNBRktRT29BVGNDQUF3REN5QUFRUUE2QUFRTUFnc2dCU0FCTmdJSUlBVWdBaWtDQ0RjQ0ZDQUZJQUlvQWhBMkFod2dCU0FDS1FJQU53SU1JQVVnQmpZQ0lDQURRUUFnQXlnQ0FDZ0NEQkVCQUNFR0lBTkJBU0FES0FJQUtBSU1FUUVBSVFnZ0EwRUNJQU1vQWdBb0Fnd1JBUUFoQnlBRFFRTWdBeWdDQUNnQ0RCRUJBQ0VESUFSQkFDQUVLQUlBS0FJTUVRRUFJUWtnQkVFQklBUW9BZ0FvQWd3UkFRQWhDaUFFUVFJZ0JDZ0NBQ2dDREJFQkFDRUxJQVJCQXlBRUtBSUFLQUlNRVFFQUlRd2dCaUFHS0FJQUtBSUlFUUFBSWdSRkJFQWdBRUVBT2dBRURBSUxJQVZCQ0dwQkJISWhBZ0pBQWtBZ0JDZ0NCQ0lFUWRDZ0VrWUVRQ0FGUWJBQmFpRUVJQVlRWXlFTklBZ1FZeUVPSUFjUVl5RVBJQU1RWXlFUUlBa1FZeUVSSUFvUVl5RVNJQXNRWXlFVElBd1FZeUVVSXdCQjRBQnJJZ01rQUNBRFFkQUFhaUlHSUFFZ0FpQU5JQkVReEFRQ1FDQUdFR0lFUUNBRVFRSTZBQWdNQVFzZ0EwRkFheUlHSUFFZ0FpQU9JQklReEFRZ0JoQmlCRUFnQkVFQ09nQUlEQUVMSUFOQk1Hb2lCaUFCSUFJZ0R5QVRFTVFFSUFZUVlnUkFJQVJCQWpvQUNBd0JDeUFEUVNCcUlnWWdBU0FDSUJBZ0ZCREVCQ0FHRUdJRVFDQUVRUUk2QUFnTUFRc2dBMEVRYWlJR0lBRWdBaUFEUWRBQWFoQktLUU1BSUFOQlFHc1FTaWtEQUJDT0JpQUdFR0lFUUNBRVFRSTZBQWdNQVFzZ0F5QUJJQUlnQTBFUWFpSUdFRW9wQXdBZ0EwRXdhaEJLS1FNQUVJNEdJQU1nQXlrRENEY0RHQ0FESUFNcEF3QTNBeEFnQmhCaUJFQWdCRUVDT2dBSURBRUxJQU1nQVNBQ0lBTkJFR29pQWhCS0tRTUFJQU5CSUdvUVNpa0RBQkNPQmlBRElBTXBBd2czQXhnZ0F5QURLUU1BTndNUUlBSVFZZ1JBSUFSQkFqb0FDQXdCQ3lBRUlBTXBBeEEzQXdBZ0JDQURLUU1ZTndNSUN5QURRZUFBYWlRQUlBUVFzZ0VFUUNBRlFhZ0JhaUFCSUFVb0FpQWdCVUd3QVdvUVNpa0RBQkQ5QVF3Q0N5QUZRUUk2QUt3QkRBRUxJQVJCOEo4U1JnUkFJQVZCcUFGcUlBVkJDR29nQmhBOElBZ1FQQ0FIRUR3Z0F4QThJQWtRUENBS0VEd2dDeEE4SUF3UVBCQ2RGUXdCQ3lBRVFiQ3BFa1lFUUNBRlFhZ0JhaUFGUVFocUlBWVFOQ0FJRURRZ0J4QTBJQU1RTkNBSkVEUWdDaEEwSUFzUU5DQU1FRFFRbUJVTUFRc2dCRUdRcWhKR0JFQWdCVUd3QVdvaUFpQUdFR0VnQ0JCaElBY1FZU0FERUdFZ0NSQmhJQW9RWVNBTEVHRWdEQkJoRUpRVklBSVFLd1JBSUFWQnFBRnFJQUVnQlNnQ0lDQUZRYkFCYWhBYUtBSUFFTEVCREFJTElBVkJBam9BckFFTUFRc2dCRUdnc3hKR0JFQWdCVUd3QVdvaUFpQUdFRmtnQ0JCWklBY1FXU0FERUZrZ0NSQlpJQW9RV1NBTEVGa2dEQkJaRUpRVklBSVFLd1JBSUFWQnFBRnFJQUVnQlNnQ0lDQUZRYkFCYWhBYUtBSUFFSzBCREFJTElBVkJBam9BckFFTUFRc2dCRUhRcUJKSERRRWdCVUdvQVdvZ0JVRUlhaUFHRUQ4Z0NCQS9JQWNRUHlBREVEOGdDUkEvSUFvUVB5QUxFRDhnREJBL0VJNFZDeUFBSUFVcEE2Z0JOd0lBREFJTElBQkJBRG9BQkF3QkN5QUJLQUlBSWdFUUhDQUZRUWhxUWNXdEJVSDhDRUVJSUFGQnlBSnFFQmNpQVVFWWFrR3owQUVRRGhvZ0FSQVlJQUJCQWpvQUJBc2dCVUhBQVdva0FBdkpCZ0VNZnlNQVFkQUJheUlDSkFBZ0FDZ0NUQVJBSUFCQnpBQnFJUWtnQWtFQU5nTElBU0FDUWdBM0E4QUJJQUpCd0FGcUlBRW9BZ1FnQVNnQ0FHdEJBblVRcXdRZ0FFRTRhaUVFSUFCQkdHb2hCU0FDUWRnQWFrRUVjaUVISUFFb0FnUWhDQ0FCS0FJQUlRRURRQ0FCSUFoR0JFQUNRQ0FKS0FJQUlnRXRBQ2hCQkhGRkRRQWdBRUdZQW1vZ0NSQ0dCU0lJSUFKQndBRnFFTGdISUFJQ2Z5QUFLQUpNSVFFakFFRVFheUlISkFBZ0IwRUROZ0lNSUFjZ0FUWUNDQUpBQW44Z0IwRUlhaUlFRU04VklRVUNRQ0FBS0FMVUFpSUJSUTBBSUFBb0F0QUNBbjhnQVVFQmF5QUZjU0FCYVNJR1FRRk5EUUFhSUFVZ0FTQUZTdzBBR2lBRklBRndDeUlLUVFKMGFpZ0NBQ0lEUlEwQUlBRkJBV3NoQ3lBRUtBSUVJUXdnQkNnQ0FDRU5JQVpCQVVzaEJnTkFJQU1vQWdBaUEwVU5BU0FGSUFNb0FnUWlCRWNFUUFKQUlBWkZCRUFnQkNBTGNTRUVEQUVMSUFFZ0JFc05BQ0FFSUFGd0lRUUxJQVFnQ2tjTkFnd0JDeUFES0FJSUlBMUhEUUFnQXlnQ0RDQU1SdzBBQ3lBRERBRUxRUUFMSWdFRVFDQUJLQUlRSWdGRkRRRWdCMEVRYWlRQUlBRU1BZ3RCOWZJSVFaS3FBa0c0QWtIb25RTVFBQUFMUWFySUFVR1NxZ0pCdWdKQjZKMERFQUFBQ3hER0JTZ0NCRUVFYXlnQ0FDZ0NFQ0lCTmdKWUlBRWdBQ2dDVEVZTkFDQUlJQUpCMkFCcUVNOEJJQWtvQWdBaEFRc2pBRUVRYXlJREpBQWdBVUhFQUdvaEJDQUJRUnhxSVFVZ0FrSEFBV29pQnlJQUtBSUVJUWdnQUNnQ0FDRUFBMEFnQUNBSVJnUkFJQU5CRUdva0FBVWdBQ2dDQUNFR0lBTWdBVFlDRENBR1FSQnFJQU5CREdvUS9RSWdCU0FBRU04QklBQW9BZ0FoQmlBRElBRTJBZ2dnQmtFNGFpQURRUWhxRVAwQ0lBUWdBQkRQQVNBQVFRUnFJUUFNQVFzTElBbEJBRFlDQUNBSEVESWFJQUpCMEFGcUpBQVBDeUFDSUFFb0FnQWlBellDdkFFZ0FrRUlhaUFERUtzS0lRTWdBaUFDS0FLOEFUWUNXQ0FISUFNUXFRZ2hCaUFDUWJBQmFpQUZJQUpCMkFCcUVOWVZJQUl0QUxRQklRb2dBaWdDc0FFaEN5QUdFTTRGSUFNUXpnVWdDZ1JBSUFKQjJBQnFJQVFnQWtHOEFXb1FsZ0VMSUFJZ0MwRU1hallDV0NBQlFRUnFJUUVnQWtIQUFXb2dBa0hZQUdvUS9RSU1BQXNBQzBIVG93bEJrcW9DUVpJQlFhTHFCQkFBQUF0bUFDQUFJQUVwQWdBM0FnQWdBQ0FCS1FJSU53SUlJQUJCRUdvZ0FVRVFhaENsQWhvZ0FFRWNhaUFCUVJ4cUVLVUNHaUFBSUFFcEFqQTNBakFnQUNBQktRSW9Od0lvSUFCQk9Hb2dBVUU0YWhDbEFob2dBRUhFQUdvZ0FVSEVBR29RcFFJYUlBQUxXZ0FnQUVFb2FpRUFJQUZGQkVBakFFRVFheUlCSkFBZ0FVRUFOZ0lNSUFFZ0FEWUNDQ0FCUVFocVFRZEJBQkRiRFNBQlFSQnFKQUFQQ3dKQUlBRkJCMGtFUUNBQUlBQW9BZ0JCQVNBQmRISTJBZ0FNQVFzUUFRQUxDNGtOQVFoL0l3QkIwQUZySWdRa0FDQUJMd0VlSVFVZ0JFRVFhaUFBSUFFZ0FoQWJJZ1lRM1FFQ1FDQUVMUUFRUlFSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFNZ0JSQ0JBUkFPR2lBRFFZdy9FQTRhSUFRb0Fzd0JJUUlnQXhBUkRBRUxJQVF0QUJGRkJFQkJBQ0VDSUFBdEFJQUJRUUp4UlEwQklBQkJnQUZxSWdOQjdTa1FhRVVFUUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWNMRUFCQU9HaUFFS0FMTUFTRUNJQU1RRVF3Q0N5QURMUUFBUVFKeFJRMEJJQU5CN1NrUWFFVU5BU0FBSUFZUWNCQ2pBZzBCSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5Cak1VQUVBNGFJQVFvQXN3QklRSWdBeEFSREFFTElBUW9BaFFpQmtFZWNSRFZEU0lKUVFKUEJFQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0F5QUZFSUVCRUE0YUlBTkIyTUFBRUE0YUlBUW9Bc3dCSVFJZ0F4QVJEQUVMSUFaQkVIRkZJQUFvQXBRRFFRTkhja1VFUUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWIzZUJ4QU9HaUFFS0FMTUFTRUNJQU1RRVF3QkN3SkFJQVpCZ01BQWNTSUtSUTBBSUFCQmdBRnFRZUVwRUdnTkFDQUVRUkJxSWdNZ0FFRnlJQUVRRUNBRElBVVFnUUVRRGhvZ0EwSGR2UWtRRGhvZ0EwSG04QVVRRGhvZ0JDZ0N6QUVoQWlBREVCRU1BUXNDUUNBR1FZQ0FBWEVpQ0VVTkFDQUFRWUFCYWtIaEtSQm9EUUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBeUFGRUlFQkVBNGFJQU5CcHIwSkVBNGFJQU5CNXZBRkVBNGFJQVFvQXN3QklRSWdBeEFSREFFTEFrQWdCa0dBSUhGRkRRQWdBRUdBQVdwQjRTa1FhQTBBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU1nQlJDQkFSQU9HaUFEUWJ1OENSQU9HaUFEUWVid0JSQU9HaUFFS0FMTUFTRUNJQU1RRVF3QkN3SkFJQVpCZ0lBQ2NVVU5BQ0FBUVlBQmFrSGhLUkJvUlFSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFNZ0JSQ0JBUkFPR2lBRFFiYndCUkFPR2lBRUtBTE1BU0VDSUFNUUVRd0NDeUFCTHdFZUlnZEI0d0ZySWd0QkQwMGdDMEVCUjNFZ0IwRytBa1lnQjBIdUsydEJBa2x5Y2lBSFFaTXZSbklnQjBIa0FVWnlJQWRCdndKR2NnMEFJQVJCRUdvaUF5QUFRWElnQVJBUUlBTkJ0NTBCRUE0YUlBUW9Bc3dCSVFJZ0F4QVJEQUVMQWtBZ0JrSEFBSEZGRFFBZ0FDMEFnQUZCQW5FTkFDQUVRUkJxSWdNZ0FFRnlJQUVRRUNBRElBVVFnUUVRRGhvZ0EwSEQrUUVRRGhvZ0JDZ0N6QUVoQWlBREVCRU1BUXNnQmtHQXdBRnhSU0FHUWNBL2NYSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBeUFGRUlFQkVBNGFJQU5CL3BNQkVBNGFJQVFvQXN3QklRSWdBeEFSREFFTElBWkJDbkVpQnlBSVJYSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBeUFGRUlFQkVBNGFJQU5CbDhRQkVBNGFJQVFvQXN3QklRSWdBeEFSREFFTElBWkJESEVpQ0NBS1JYSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBeUFGRUlFQkVBNGFJQU5CczhNQkVBNGFJQVFvQXN3QklRSWdBeEFSREFFTEFrQWdBQ2dDQUNnQ0FCQkhSUTBBSUFWQjRRRkhJQWx5UlFSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFRZ0FFSDhKQkEzSUFNZ0JCQVNHaUFEUWVFQkVJRUJFQTRhSUFOQjFzRUFFQTRhSUFRb0Fzd0JJUUlnQkJBUEdpQURFQkVNQWdzZ0NVVWdCVUhoQVVaeVJRUkFJQVJCRUdvZ0FDQURFTjBCSUFRdEFCQkZEUUVnQkNnQ0ZFRUVSdzBCSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQVFnQUVHaEpCQTNJQU1nQkJBU0dpQURJQVVRZ1FFUURob2dBMEhBckFRUURob2dCQ2dDekFFaEFpQUVFQThhSUFNUUVRd0NDeUFHUWNBeWNTQUZRZUVCUjNJTkFDQUVRUkJxSWdNZ0FFRnlJQUVRRUNBRUlBQkIvU1FRTnlBRElBUVFFaG9nQTBIaEFSQ0JBUkFPR2lBRFFiYVRBUkFPR2lBRUtBTE1BU0VDSUFRUUR4b2dBeEFSREFFTEFrQWdCVUcvQWtZRVFDQUhSUTBCSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CazZVS0VBNGFJQU5CdndJUWdRRVFEaG9nQkNnQ3pBRWhBaUFERUJFTUFnc2dDRVVnQWtFRlJ5QUZRZVlCUjNKeURRQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0EwSG1BUkNCQVJBT0dpQURRZnFTQXhBT0dpQUVLQUxNQVNFQ0lBTVFFUXdCQzBFQUlRSWdBQ2dDQUNnQ0FCQkhSUTBBQWtBQ1FDQUZRZU1CYXc0Q0FBRUNDeUFHUVJ4eFJRMEJJQVJCRUdvaUF5QUFRWElnQVJBUUlBUWdBRUg3SkJBM0lBTWdCQkFTR2lBRFFlbkNBQkFPR2lBRUtBTE1BU0VDSUFRUUR4b2dBeEFSREFFTElBWkJHbkZGRFFBZ0JFRVFhaUlESUFCQmNpQUJFQkFnQkNBQVFmb2tFRGNnQXlBRUVCSWFJQU5CMWNNQUVBNGFJQVFvQXN3QklRSWdCQkFQR2lBREVCRUxJQVJCMEFGcUpBQWdBZ3ZhQmdFRmZ5TUFRZEFCYXlJREpBQkIvLy8vL3djaEJnSkFBa0FDUUFKQUFrQWdBUzhCSGlJRVFUMXJEZ1FCQWdNREFBdEIvLy8vL3djaEJTQUVRZThwYXc0Q0FBRURDeUFBSUFBZ0FVRUNFQnNRSUNnQ0pCQWdRUUVRR3lFRkRBSUxJQUFnQUNBQlFRQVFHeEFnS0FJa0VDQkJBUkFiSVFVTUFRc2dBQ0FBSUFGQkFCQWJFQ0FvQWlRUUlFRUJFQnNoQlNBQUlBQWdBVUVCRUJzUUlDZ0NKQkFnUVFFUUd5RUdDd0pBSUFJZ0FTZ0NFQ0FCS0FJTWEwRUVkVThFUUNBRlFlVXBSd1JBUVFBaEJDQUdRZVVwUncwQ0N5QURRUkJxSWdJZ0FFRjJJQUVRRUNBRElBQkI1Q1FRTnlBQ0lBTVFFaG9nQWtIM2d3Z1FEaG9nQXlnQ3pBRWhCQ0FERUE4YUlBSVFFUXdCQ3lBQklBSVFHeUlIUVFoeEJFQWdBUzhCSGlJRVFlOHBSeUFFUVQxSGNVVUVRQ0FEUVJCcUlnSWdBRUYySUFFUUVDQUNRWStIQ0JBT0dpQURLQUxNQVNFRUlBSVFFUXdDQ3lBSFFTQnhSUVJBSUFOQkVHb2lBaUFBUVhZZ0FSQVFJQUpCMklRSUVBNGFJQU1vQXN3QklRUWdBaEFSREFJTElBQWdBU0FCSUFkQkQzRVF6ZzBnQW1wQkFXc1FHeERJQlNJRURRRUxBa0FDUUNBSFFSQnhCRUFnQVM4QkhpSUVRZkFwUnlBRVFUNUhjVVVFUUNBRFFSQnFJZ0lnQUVGMklBRVFFQ0FDUVo3ckJ4QU9HaUFES0FMTUFTRUVJQUlRRVF3RUN5QUhRU0J4UlFSQUlBTkJFR29pQWlBQVFYWWdBUkFRSUFKQjA3RUtFQTRhSUFKQnRJUUlFQTRhSUFNb0Fzd0JJUVFnQWhBUkRBUUxJQUFnQVNBQklBZEJIM0VRemcwZ0FtcEJBV3NRR3hESUJTSUVSUTBCREFNTElBZEJJSEZGRFFFTElBVkI1U2xHSUFWQkRFMUJBRUVCSUFWMFFiUXljUnR5UlFSQUlBTkJFR29pQWlBQVFYWWdBUkFRSUFKQmlPb01FQTRhSUFKQit2a0pFQTRhSUFKQnU3SUhFQTRhSUFNb0Fzd0JJUVFnQWhBUkRBSUxJQVpCNVNsR0lBWkIvLy8vL3dkR2NpQUdRUXhOUVFCQkFTQUdkRUcwTW5FYmNnMEFJQU5CRUdvaUFpQUFRWFlnQVJBUUlBSkJpT29NRUE0YUlBSkIrdmtKRUE0YUlBSkJ1N0lIRUE0YUlBTW9Bc3dCSVFRZ0FoQVJEQUVMUVFBaEJDQUhRUUp4SUFWQjVTbEhJQVpCNVNsSGNYSU5BQ0FEUVJCcUlnSWdBRUYySUFFUUVDQURJQUJCNUNRUU55QUNJQU1RRWhvZ0FrSDNnd2dRRGhvZ0F5Z0N6QUVoQkNBREVBOGFJQUlRRVFzZ0EwSFFBV29rQUNBRUM2QURBUU4vSXdCQjBBRnJJZ01rQUNBQ1FRQTJBZ0FDUUFKQUFrQUNRQUpBQWtBZ0FTOEJIa0VWYXc0S0FBQUJBZ1VGQlFNRkJBVUxJQUpCQVRZQ0FBd0VDd0pBSUFBZ0FTZ0NLRUVWUWNBQUVJWUVSUVJBSUFBZ0FTZ0NLRUVXUWNBQUVJWUVSUTBCQ3lBQlFRSVFHMEVEU1EwQUlBSkJBallDQUF3RUN5QUNRUUUyQWdBTUF3c2dBQ0FBSUFGQkFSQWJFQ0FnQWhDdENCb2dBaUFCUVFJUUd5QUNLQUlBYkRZQ0FBd0NDeUFBSUFBZ0FVRUJFQnNRSUNBQ0VLMElHaUFEUVJCcUlBQWdBVUVDRUJzUTNRRWdBeTBBRUVVTkFTQURMUUFSUlEwQklBSWdBaWdDQUNBREtBSVViRFlDQUF3QkN5QUFJQUVvQWloQkhoREFBa1VFUUVFQklRVURRQ0FCS0FJUUlBRW9BZ3hyUVFSMUlBVk5CRUJCQUNFRURBTUxJQU5CQURZQ0VDQUFJQUFnQVNBRkVCc1FJQ0FEUVJCcUVLMElJZ1FOQWlBQ0lBSW9BZ0FnQXlnQ0VHbzJBZ0FnQlVFQmFpRUZEQUFMQUFzZ0EwRVFhaUlDSUFCQmNpQUJFQkFnQXlBQVFiWW1FRGNnQWlBREVCSWFJQUpCKytJQ0VBNGFJQU1vQXN3QklRUWdBeEFQR2lBQ0VCRUxJQU5CMEFGcUpBQWdCQXZxQVFFRGZ5TUFRY0FCYXlJREpBQUNRQUpBQWtBZ0FTOEJIa0d4QW1zaUJFRVBTMEVCSUFSMFFmK2ZBbkZGY2tVRVFDQUFJQUVvQWlRUUlDSUVSUTBESUFRdkFSNUJIa2NFUUNBRElBQkJjaUFCRUJBZ0EwR0Q4QUFRRGhvZ0F5Z0N2QUVoQVNBREVCRU1Bd3NDUUNBRUtBSUVJQVFvQWdBaUJXdEJFRVlFUUNBQUlBVW9BZ2dRVUEwQkN5QURJQUJCY2lBQkVCQWdBMEdrL3dJUURob2dBeWdDdkFFaEFTQURFQkVNQXdzZ0FpQUVLQUlBS0FJTU5nSUFEQUVMSUFJZ0FTZ0NKRFlDQUF0QkFDRUJDeUFEUWNBQmFpUUFJQUVQQzBHYkwwSEdyd0pCN1FWQmtaWUVFQUFBQ3dvQUlBQkJnSjhTRUVnTHpBTUNCSDhCZmdKQUFrQUNRQ0FDRGdNQ0FnQUJDeUFCUVFScktBSUFJQUFvQWdSUERRRWdBQ2tDQUNFSklBQWdBVUVJYXlJQUtRSUFOd0lBSUFBZ0NUY0NBQXdCQ3lBQ1FZQUJUQVJBSUFBZ0FVWU5BU0FBSVFJRFFDQUNRUWhxSWdJZ0FVWU5BaUFDS1FJQUlnbENJSWluSVFRZ0FpRURBMEFDUUFKQUlBQWdBMFlFUUNBQUlRTU1BUXNnQTBFRWF5Z0NBQ0FFU3cwQkN5QURJQWszQWdBTUFnc2dBeUFEUVFocklnTXBBZ0EzQWdBTUFBc0FDd0FMSUFJZ0FrRUJkaUlHYXlFSElBQWdCa0VEZENJSWFpRUZJQUlnQkV3RVFDQUFJQVVnQmlBREVJUVdJQVVnQVNBSElBTWdDR29pQVJDRUZpQURJQUpCQTNScUlRUWdBU0VDQTBBZ0FTQURSZ1JBQTBBZ0FpQUVSZzBFSUFBZ0Fpa0NBRGNDQUNBQVFRaHFJUUFnQWtFSWFpRUNEQUFMQUFzZ0FpQUVSZ1JBQTBBZ0FTQURSZzBFSUFBZ0F5a0NBRGNDQUNBQVFRaHFJUUFnQTBFSWFpRUREQUFMQUFVQ1FDQUNLQUlFSUFNb0FnUkpCRUFnQUNBQ0tRSUFOd0lBSUFKQkNHb2hBZ3dCQ3lBQUlBTXBBZ0EzQWdBZ0EwRUlhaUVEQ3lBQVFRaHFJUUFNQVFzQUN3QUxJQUFnQlNBR0lBTWdCQkN3Q0NBRklBRWdCeUFESUFRUXNBZ2dBQ0FGSUFFZ0JpQUhJQU1nQkJEYURRc0xNd0VCZndKQUlBQW9BZ0FnQVNnQ0FFY05BQ0FBUVFScUlBRkJCR29ReXdoRkRRQWdBQ2dDRUNBQktBSVFSaUVDQ3lBQ0M2a0JBUUYvSUFCQ0FEY0NBQ0FBUVFBMkFoZ2dBRUtBZ0lDQWdBUTNBaEFnQUVLQWdBUTNBZ2dqQUVFZ2F5SUNRUmhxSUFBb0FoZzJBZ0FnQWlBQUtRSVFOd01RSUFJZ0FDa0NDRGNEQ0NBQ0lBQXBBZ0EzQXdBZ0FDQUJLQUlZTmdJWUlBQWdBU2tDRURjQ0VDQUFJQUVwQWdnM0FnZ2dBQ0FCS1FJQU53SUFJQUVnQWlnQ0dEWUNHQ0FCSUFJcEF4QTNBaEFnQVNBQ0tRTUlOd0lJSUFFZ0Fpa0RBRGNDQUNBQUMyY0JBbjhqQUVFUWF5SUZKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUVOZ0lNSUFVZ0JEWUNDQ0FBUVl3QmFpSUVJQVFReXdRZ0FDZ0NDQ0FGS0FJSUlBRWdBalFDQUNBREtBSUFFTjRLSWdBUUtDQUVJQVFvQWhoQkFXbzJBaGdnQlVFUWFpUUFJQUFMTlFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFSFlBMm9nQWtFTWFoQ2VBaUVBSUFKQkVHb2tBQ0FBUVF4cVFRQWdBQnNMTXdBZ0FDQUJFTEFCSWdCQkRHb2dBVUVNYWhDOEZpQUFRUmhxSUFGQkdHcEJLQkI5R2lBQVFVQnJJQUZCUUdzUXBRSWFDK1lDQVFKL0l3QkJvQUZySWdVa0FDQUZRUUEyQXB3QkFrQWdBQ2dDQUNBQklBSWdCVUdjQVdvUXZRTWlCZzBBSUFBb0FnQWdCU2dDbkFFUXRnRkZCRUFnQlVHUUFXb2lBQ0FCSUFJUXN3SWdCVUVJYWlJQklBQkJxTVFIRUMwZ0JDQUJFSWtDSVFZZ0FSQVBHaUFBRUE4YURBRUxJQUFvQWdBZ0JTZ0NuQUVRUlNFR0lBQW9BZ0FnQlNnQ25BRVFSU0FEUndSQUlBVkJDR29RemdFaEFDQUZRWkFCYWlJRElBRWdBaEN6QWlBQUlBTVFFa0crNVFrUURpQUdFQ0ZCcGFzSEVBNGFJQU1RRHhvZ0F5QUFRUVJxRUVJZ0JDQURFSWtDSVFZZ0JVR1FBV29RRHhvZ0FCQzdBUm9NQVF0QkFDRUdJQUFvQWdBZ0JTZ0NuQUVRUGlJRFFTQkdEUUFnQlVFSWFoRE9BU0VBSUFWQmtBRnFJZ1lnQVNBQ0VMTUNJQUFnQmhBU1FmMm1DaEFPSUFNUUlVSDhsd2dRRGhvZ0JoQVBHaUFHSUFCQkJHb1FRaUFFSUFZUWlRSWhCaUFGUVpBQmFoQVBHaUFBRUxzQkdnc2dCVUdnQVdva0FDQUdDK3NCQVFWL0l3QkJJR3NpQXlRQUlBTWdBVFlDRUNNQVFSQnJJZ0lrQUNBRElBQWdBa0VNYWlBQkVLMEdJZ1FvQWdBaUFRUi9RUUFGUVNBUUZTRUJJQUlnQUVFRWFqWUNCQ0FDSUFFMkFnQWdBeWdDRUNnQ0FDRUZJQUZCR0dvaUJrSUFOd0lBSUFFZ0JUWUNFQ0FCSUFZMkFoUWdBa0VCT2dBSUlBQWdBaWdDRENBRUlBSW9BZ0FRK0FJZ0FpZ0NBQ0VCSUFKQkFEWUNBQ0FDS0FJQUlRQWdBa0VBTmdJQUlBQUVRQ0FDTFFBSUJFQWdBRUVVYWhEeEZnc2dBQVJBSUFBUUh3c0xRUUVMT2dBY0lBTWdBVFlDR0NBQ1FSQnFKQUFnQXlnQ0dDRUFJQU5CSUdva0FDQUFRUlJxQ3hJQUlBQUVRQ0FBUVJCcUVCWUxJQUFRSHd1bUFRRUNmeU1BUVJCcklnSWtBQ0FBUVJOR0lBQkJHVXR5UlFSQUlBSkJER29pQVFSQUlBRkJrTU1WTmdJQUN5QUNRUWhxSWdFRVFDQUJRYmorR1RZQ0FBc2dBa0VFYWlJQkJFQWdBRUVUUmlBQVFSbExjZ1IvUVhvRklBRkIwTGtUTmdJQVFRQUxHZ3RCS0JBVklnRWdBRFlDQUNBQklBSW9BZ3cyQWdRZ0FTQUNLQUlJTmdJSUlBSW9BZ1FoQUNBQlFRQTJBaUFnQVNBQU5nSU1DeUFDUVJCcUpBQWdBUXMxQVFKL0lBQWhBd05BSUFNaUFrRUVhaUVESUFJb0FnQU5BQXNEUUNBQUlBSkdSUVJBSUFFZ0FrRUVheUlDRUxJSERBRUxDd3NkQUNBQVFja0FTd1JBUWVMQkFnOExJQUJCQW5SQjZPMGZhaWdDQUFzZUFRRi9RUUVoQVNBQVFiMENSaUFBUVFKclFRZEpjaUFBUWNvQ1JuSUxMd0VCZnlBQVFjY0FheUlCUVFSTklBRkJBa2R4SUFCQnpBSkdJQUJCZ0N4clFRSkpjbkpGQkVCQkFBOExRUUVMRmdCQ2dvQ0FnSURBM3c4Z0FLMklweUFBUVRWSmNRc0tBQ0FBUVRCclFRVkpDd3NBSUFCQisva0NFSTRUQzVrQkFRWi9BbjlCZWlBQUtBSU1JZ1ZGRFFBYVFYMGdBMFVOQUJvZ0JTZ0NBQ0VIQTBCQmR5QUVJQWRHRFFFYUFrQUNRQ0FGS0FJRUlBUkJER3hxSWdZb0FnQWdBVWNOQUNBR0tBSUVJUWhCQUNFQUEwQWdBQ0FJUmcwQklBWW9BZ2dpQ1NBQVFkQUFiR29vQWdRZ0FrWU5BaUFBUVFGcUlRQU1BQXNBQ3lBRVFRRnFJUVFNQVFzTElBTWdDU0FBUWRBQWJHbzJBZ0JCQUFzTEVRQWdBRUVBTmdJRUlBQW9BZ0FRaUFRTENRQWdBRUVRYWhCZUN6a0JBWDhnQUVFQU5nSUlJQUJDQURjREFBTi9JQUVnQTBZRWZ5QUFCU0FBSUFJZ0EwRUNkR29vQWdBUTBBUWdBMEVCYWlFRERBRUxDd3NjQUNBQUlBRW9BZ0EyQWdBZ0FFRUVhaUFCUVFScUVLWUJHaUFBQ3owQkFuOGdBQ2dDQkNFQ0EwQWdBaUFBS0FJSUlnRkhCRUFnQUNBQlFSeHJOZ0lJSUFGQkdHc1FiUm9NQVFzTElBQW9BZ0FpQUFSQUlBQVFId3NMU2dFQmZ5QUFRUUEyQWd3Z0FDQUROZ0lRSUFFRVFDQUJFSWtZSVFRTElBQWdCRFlDQUNBQUlBUWdBa0VjYkdvaUFqWUNDQ0FBSUFRZ0FVRWNiR28yQWd3Z0FDQUNOZ0lFSUFBTEhBQWdBQ0FCUWFTU3lTUkJIRUhKcEpMSkFFSEtwSkxKQUJEU0RBdFJBUUovSUFBZ0FDZ0NBQ0lCS0FJRUlnSTJBZ0FnQWdSQUlBSWdBRFlDQ0FzZ0FTQUFLQUlJTmdJSUlBQW9BZ2dpQWlBQ0tBSUFJQUJIUVFKMGFpQUJOZ0lBSUFFZ0FEWUNCQ0FBSUFFMkFnZ0xVUUVDZnlBQUlBQW9BZ1FpQVNnQ0FDSUNOZ0lFSUFJRVFDQUNJQUEyQWdnTElBRWdBQ2dDQ0RZQ0NDQUFLQUlJSWdJZ0FpZ0NBQ0FBUjBFQ2RHb2dBVFlDQUNBQklBQTJBZ0FnQUNBQk5nSUlDekFCQW44Z0FDZ0NCQ0lESUFBb0FnQWlBR3NnQVNnQ0JDQUJLQUlBSWdGclJnUi9JQUFnQXlBQkVQWVhCVUVBQ3d0MEFRRi9Jd0JCRUdzaUJDUUFJQVFnQURZQ0FDQUVJQUFvQWdRaUFEWUNCQ0FFSUFBZ0EwRWNiR28yQWdnZ0JFRUVjaUVBQTBBZ0FTQUNSd1JBSUFBb0FnQWdBUkNJR0JvZ0FDQUFLQUlBUVJ4cU5nSUFJQUZCSEdvaEFRd0JDd3NnQkNnQ0FDQUVLQUlFTmdJRUlBUkJFR29rQUF1SkJBRUZmeU1BUVJCcklnUWtBQ0FFSUFBMkFnd2dCQ0FCTmdJSUFrQWdCQ2dDRENJRktBSUVJQVVRdHdFb0FnQkpCRUFnQkNnQ0NDRUJJd0JCSUdzaUFDUUFJQUFnQlRZQ0hDQUFJQUUyQWhnZ0FDZ0NIQ0lESVFJakFFRVFheUlCSUFCQkNHb2lCallDRENBQklBSTJBZ2dnQVVFQk5nSUVJQUVvQWd3aUFpQUJLQUlJTmdJQUlBSWdBU2dDQ0NnQ0JEWUNCQ0FDSUFFb0FnZ29BZ1FnQVNnQ0JFRVViR28yQWdnZ0F4QzNBU0FBS0FJTUVJTUJJQUFvQWhnUXdnNGdBQ0FBS0FJTVFSUnFOZ0lNSUFZUXpRNGdBRUVnYWlRQURBRUxJQVFvQWdnaEFDTUFRU0JySWdFa0FDQUJJQVUyQWh3Z0FTQUFOZ0lZSUFFZ0FTZ0NIQ0lDRUxjQk5nSVVJQUlRd3dkQkFXb2hBeU1BUVNCcklnQWtBQ0FBSUFJMkFoZ2dBQ0FETmdJVUlBQWdBQ2dDR0NJREVKMFlOZ0lRSUFBb0FoUWdBQ2dDRUVzRVFDQURFT3dLQUFzZ0FDQURFTEVHTmdJTUFrQWdBQ2dDRENBQUtBSVFRUUYyVHdSQUlBQWdBQ2dDRURZQ0hBd0JDeUFBSUFBb0FneEJBWFEyQWdnZ0FDQUFRUWhxSUFCQkZHb1FpUVVvQWdBMkFod0xJQUFvQWh3aEF5QUFRU0JxSkFBZ0FTQURJQUlRd3djZ0FTZ0NGQkNjR0NBQktBSVVJQUVvQWdnUWd3RWdBU2dDR0JEQ0RpQUJJQUVvQWdoQkZHbzJBZ2dnQWlBQkVKc1lJQUVRbWhnZ0FVRWdhaVFBQ3lNQVFSQnJJZ0FnQlRZQ0RDQUFLQUlNS0FJRUdpQUVRUkJxSkFBTEp3RUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBU2dDREVFTWFoRFFDQm9nQVVFUWFpUUFDNzRCQVFWL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0tBSU1JZ0JCQWpZQ0FDTUFRUkJySWdFa0FDQUJJQUJCQkdvMkFnd2dBU2dDRENJRFFnQTNBZ0FnQTBJQU53SUlJd0JCRUdzaUJDUUFJQVFnQXpZQ0RDQUVLQUlNSWdVUXl3NGdCVUVJYWhETERpQUVRUkJxSkFBZ0EwRUFOZ0lRSUFGQkVHb2tBQ0FBUVJocUVIUWFJQUJCQURZQ0tDTUFRUkJySWdFZ0FFRXNhallDRENBQlFRQTJBZ2dnQVNnQ0RDSUJRUUEyQWdBZ0FVRUFOZ0lFSUFKQkVHb2tBQ0FBQ3pnQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUlBRkIvZ3MyQWdnZ0FTZ0NEQ0lBUVFocUlBRW9BZ2dSQUFBYUlBRkJFR29rQUNBQUN5Y0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3UStnSWhBQ0FCUVJCcUpBQWdBQXNuQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1FTndCSVFBZ0FVRVFhaVFBSUFBTHVBRUJBbjhqQUVFUWF5SUNKQUFnQWlBQU5nSUlJQUlnQVRZQ0JBSkFJQUlvQWdRUXd4aEJBWEVFUUNBQ0lBSW9BZ1EyQWdBZ0FpZ0NDQ0VCSUFJb0FnQWhBeU1BUVJCcklnQWtBQ0FBSUFFMkFnd2dBQ0FETmdJSUlBQW9BZ3dnQUNnQ0NCRFpBaUVCSUFCQkVHb2tBQ0FDSUFFMkFnd01BUXNnQWlnQ0NDRUJJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFLQUlNRUJVaEFTQUFRUkJxSkFBZ0FpQUJOZ0lNQ3lBQ0tBSU1JUUFnQWtFUWFpUUFJQUFMS2dFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQkQ2QWlnQ0FDRUFJQUZCRUdva0FDQUFDeGdCQVg4akFFRVFheUlCSUFBMkFnd2dBU2dDREVFTFNRdVFCZ0VHZnlNQVFSQnJJZ1FrQUNBRUlBRTJBZ3dDUUNBQUlBQW9BZ0FvQWh3UkFBQWdBU0FCS0FJQUtBSWNFUUFBUncwQUlBQWdBQ2dDQUNnQ0NCRUFBQ0FCSUFFb0FnQW9BZ2dSQUFCSERRQWdBQ0FBS0FJQUtBSUlFUUFBSVFNZ0JDQUFOZ0lBSUFRZ0JFRU1hallDQkFKQUlBTkZEUUFnQXlnQ0JDSUJFSkVEQkVCQkFDRUJBMEFnQVNBREtBSWNUeUlDRFFNZ0FDQUJJQUFvQWdBb0Fnd1JBUUFoQlNBRUtBSU1JZ1lnQVNBR0tBSUFLQUlNRVFFQUlRWWdBVUVCYWlFQklBVWdCaERXQ0EwQUN3d0NDeUFCUWZDcUVrWUVRRUVBSVFFRFFDQUJJQU1vQWlSUElnSU5BeUFBSUFFZ0FDZ0NBQ2dDREJFQkFDRUZJQVFvQWd3aUJpQUJJQVlvQWdBb0Fnd1JBUUFoQmlBQlFRRnFJUUVnQlNBR0VOWUlEUUFMREFJTElBRkJrS0lTUmdSQUlBTW9BaHdpQVNnQ0JFR1FveEpISUFGRmNnMENJQUVvQWd3aEF3TkFJQU1nQWlJQlJ3UkFJQUZCQVdvaEFpQUFJQUVnQUNnQ0FDZ0NEQkVCQUNBRUtBSU1JZ1VnQVNBRktBSUFLQUlNRVFFQUVOWUlEUUVMQ3lBQklBTlBJUUlNQWdzZ0FSRG1BMFVOQUNBREtBSklJUU1EUUNBRElBSWlBVWNFUUNBQlFRRnFJUUlnQUNBQklBQW9BZ0FvQWd3UkFRQWdCQ2dDRENJRklBRWdCU2dDQUNnQ0RCRUJBQkRXQ0EwQkN3c2dBU0FEVHlFQ0RBRUxJd0JCMEFGcklnQWtBQ0FBUWNBQmFpQUVLQUlBSWdFZ0FTZ0NBQ2dDSkJFQ0FDQUFRYkFCYWlBRUtBSUVLQUlBSWdFZ0FTZ0NBQ2dDSkJFQ0FDQUFMUURJQVVVRVFDQUFRY0d2QlVIUkFFRUlJQUJCb0FGcUVCMGlBUkFYSWdKQkdHcEJudUFJRUE0YUlBSVFHQ0FCRUI0TElBQXRBTGdCUlFSQUlBQkJ3YThGUWRJQVFRZ2dBRUdnQVdvUUhTSUJFQmNpQWtFWWFrSGIzd2dRRGhvZ0FoQVlJQUVRSGdzakFFRVFheUlCSkFBZ0FFR3dBV29pQlMwQUNDSUNRZjhCUmlBQ0lBQkJ3QUZxSWdZdEFBZ2lBMFlnQWtIL0FVZHhJQU5CL3dGR0lnY2JJZ0pGSUFkeVJRUkFJQU5CQW5SQnlQZ1BhaWdDQUNFQ0lBRWdBVFlDQ0NBQlFRaHFJQVlnQlNBQ0VRUUFJUUlMSUFGQkVHb2tBQ0FBUWRBQmFpUUFDeUFFUVJCcUpBQWdBZ3NLQUNBQVFZRUNPd0FDQ3lVQkFYOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBZ1JBSUFJUTJ3NExJQUlRSHdzTEN3QWdBRUVBRVBFS0lBQUxJQUFnQUVIMDRCSTJBZ0FnQUVFc2FoRG1EaUFBUVNCcUVOb0ZJQUFRNVE0TGpRc0JESDhqQUVGQWFpSUZKQUFnQlNBQk5nSThJQVZCQURZQ09DQUZRZ0EzQXpBZ0JVRWdhaUFBSUFFUTFBY2dBRUVnYWlFSklBUkJBWE1oRHlBQVFaQURhaUVRSUFCQjFBMXFJUXdnQUVHb0JHb2hDeUFGS0FJa0lRNGdCU2dDSUNFQkEwQUNRQ0FCSUE1R0RRQWdBU2dDQUNJR0lBRW9BZ1FpQ0VZRVFDQUFRUUE2QUpRRElBdEJqOEVMRUJrZ0JVRThhaEF2UVprSUVCa29BZ0F0QUFCQkFFY2hDZ3dCQ3dKQUlBWW9BZ0JCQzBjTkFDQUlJQVpyUVFSR0JFQWdBRUVBT2dDVUF5QUxRY2ZBQ3hBWklBVkJQR29RTDBIaTV3UVFHU2dDQUMwQUFFRUFSeUVLREFJTEFrQUNRQ0FHS0FJRUlnaEJFbXNpQmtFWlN3MEFBa0JCQVNBR2RFSEJub0FZY1VVRVFDQUdRUUpIRFFKQkFDRUdBa0FnQUNnQ3RBVWdCU2dDUEJDVUFTSUhSUTBBSUFjb0FoUkJPMGNOQUNBQUtBSzBCU0FIRUhvUWxBRWlCMFVOQUNBSEtBSVVRU0JIRFFBZ0FDZ0N0QVVnQjBFQkVEZ1FsQUVpQjBVTkFDQUhLQUlVUVJ4SERRQWdBQ2dDdUFVZ0IwRUJFRGdRa2dVaUIwVU5BQ0FISUFjb0FnQW9BamdSQUFBaEJnc0NRQ0FHQkVBZ0JoQzdEa0lCVVEwQkN5QUFRUUE2QUpRRElBdEJ0cVlIRUJrYUN5QU1JQVZCUEdvUTBBRkJGRFlDQUNBRVJRMERJQkFRN1FNaEJnd0JDeUFNSUFWQlBHb1EwQUVnQ0RZQ0FDQUFJQUlvQWdBUWpoa2lCa1VnQkVWeURRSUxJQUlnQmpZQ0FBd0JDeUFJUVFGSERRQWdEQ0FGUVR4cUVOQUJRUUUyQWdBTUFnc0NmMEVKSVFZQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBaEJEMnNPSFEwTUFna01DZ3dEREFjTUNBUUdCUXdNREF3TURBd01EQXdNREFBQkN3dEJEQXdOQzBFRkRBd0xRUU1NQ3d0QkFnd0tDMEVHREFrTFFRY01DQXRCQkF3SEMwRUlEQVlMUVEwTUJRdEJDZ3dFQzBFTERBTUxJQWhGRFFFTFFRQWhCaUFBS0FLZ0JVRUFPZ0FBSUFBb0FxUUZRUWhxSWdkQjMvOExFQTRhSUFjZ0NCQWhHZ3NnQmdzaUNFVWdEM0pGQkVBZ0JVRUFOZ0lZSUFWQ0FEY0RFQ0FGUWdBM0F3Z2pBRUVRYXlJR0pBQWdCaUFJTmdJTUlBTWdDU0FGUVFocUlBWkJER29RaUJvUWtBVWdCaWdDREVFTFJnUkFJQU1nQXlrRE1FSUJoRGNETUFzZ0JrRVFhaVFBREFFTElBaEZEUUVMQWtBZ0JFVU5BQ0FCRVBvT1JRMEFJQVZCTUdvZ0FSRDREZ3NnQVNnQ0FDSUdLQUlBSWdoQklrWUVmeUFCS0FJRUlBWnJRUVJHQkVBZ0FFRUFPZ0NVQXlBTFFaM0FDeEFaSUFWQlBHb1FMMEhpNXdRUUdTZ0NBQzBBQUVFQVJ5RUtEQUlMSUFWQkFEWUNHQ0FGUWdBM0F4QWdCVUlBTndNSUlBVWdBU2dDQURVQ0JEY0RBQ01BUVJCcklnWWtBQ0FHSUFrZ0JSRHBCVFlDRENNQVFSQnJJZ2drQUNBSkVCd2dDU0FKS0FJTVFRRnFJZ2MyQWd3Z0NDQUhOZ0lJSUFsQmpBRnFJZ2NnQnhDL0FTQUpLQUlJSUFnb0FnZ2dCVUVJYWlBR0tBSU1FSUFmSWcwUUtDQUhJQWNvQWhoQkFXbzJBaGdnQ0VFUWFpUUFJQTBoQ0NBR1FSQnFKQUFnQXlBSUVKQUZJQUVvQWdBaUJpZ0NBQVVnQ0F0QklVWUVRQ0FCS0FJRUlBWnJRUVJHQkVBZ0FFRUFPZ0NVQXlBTFFldkFDeEFaSUFWQlBHb1FMMEhpNXdRUUdTZ0NBQzBBQUVFQVJ5RUtEQUlMSUFWQkFEWUNHQ0FGUWdBM0F4QWdCVUlBTndNSUlBVWdBU2dDQURVQ0JEY0RBQ01BUVJCcklnWWtBQ0FHSUFrZ0JSRHBCVFlDRENNQVFSQnJJZ2drQUNBSkVCd2dDU0FKS0FJTVFRRnFJZ2MyQWd3Z0NDQUhOZ0lJSUFsQmpBRnFJZ2NnQnhDL0FTQUpLQUlJSUFnb0FnZ2dCVUVJYWlBR0tBSU1FSU1mSWcwUUtDQUhJQWNvQWhoQkFXbzJBaGdnQ0VFUWFpUUFJQTBoQ0NBR1FSQnFKQUFnQXlBSUVKQUZDeUFCUVF4cUlRRU1BUXNMSUFWQklHb1FwQUlDUUNBQklBNUhEUUFnQkFSQVFRQWhDaUFBSUFJb0FnQWdCVUV3YWlBREVPOE9SUTBCQ3lBQUxRQ1VBMEVBUnlFS0N5QUZRVEJxRUtRQ0lBVkJRR3NrQUNBS0MrdE1BaE4vQW4wakFFRWdheUlPSkFBZ0RpQUJOZ0lJQWtBQ1FDQUFRZVFIYWlJVUlBNUJDR29ROVFNaUJBUkFJQVFvQWd3aEJBd0JDeUFBSUFFUWp4a2lDRVVFUUVFQUlRUU1BUXNnRGlBQk5nSUlBa0FnRGtFWWFpQUFRZEFIYWlBT1FRaHFFSk1ERU9jWUlnTVE1UmhGQkVCQkFDRUVJQUJCQURvQWxBTWdBRUdvQkdwQjgvVUpFQmtoQWlBT1FRaHFJZ0FnQVJCWUlBTWdBaUFBRUUxQjIvZ01FQmtvQWdRUTVoZ2FJQUFRRHhvTUFRc0NRQ0FERU9RWURRQUNRQ0FJS0FJVVFScEdCRUFnQXhEVkRnd0JDeUFJRU1nQlFRZEhCRUJCQUNFRUlBQkJBRG9BbEFNZ0FFR29CR3BCeE93TEVCa2hBU0FPUVFocUlnQWdDQkJZSUFFZ0FCQk5HaUFBRUE4YURBTUxJQWhCQlJBNFFRSkhJQWhCQmhBNFJYRkZCRUFnRGtFSWFpQUFJQUVRWUJEVUJ5QU9LQUlNSVFZZ0RpZ0NDQ0VFQTBBZ0JDQUdSZ1JBQWtBZ0RrRUlhaENrQWlBQ0lBVnhRUUZ4QkVBZ0FFRUFPZ0NVQXlBQVFhZ0Vha0hydmdRUUdTRUdJQTVCQ0dvaUJDQUJFRmdnQmlBRUVFMGFJQVFRRHhvTElBSWdCWEpCQVhGRkJFQWdBRUVBT2dDVUF5QUFRYWdFYWtHdHZnUVFHU0VHSUE1QkNHb2lCQ0FCRUZnZ0JpQUVFRTBhSUFRUUR4b0xJQUpCQVhGRkRRQWdBeERpR0F3RUN3VWdCQ2dDQkNBRUtBSUFJZ3ByUVFSR0JFQWdDaWdDQUNJS1FSbEdJQVZ5SVFVZ0NrRVlSaUFDY2lFQ0N5QUVRUXhxSVFRTUFRc0xJQU1RNFJnTUFRc2dBeERYQ0FzZ0F4RGtHQTBBUVFBaEJDQUFRUUE2QUpRRElBQkJxQVJxUWNMSENSQVpJUUlqQUVHUUFXc2lBQ1FBSUE1QkNHb2lBU0FESUFBUVNSRG1HQ0lEUVF4cUVFSWdBeEJSSUFCQmtBRnFKQUFnQWlBQkVFMGFJQUVRRHhvTUFRc0NmeUFETFFBQUJFQWdBeTBBQVNFQ1FRQWhCQ01BUVNCcklnd2tBQ0FNSUFJMkFnd2dBQ2dDa0FNaEJ5QU1RUkJxSUFJUXRCb2dCMEdjQTJvaENTQU1LQUlZSVFBQ1FBSkFJQWNvQXFBRElnSkZEUUFDUUNBQ2FTSUdRUUZOQkVBZ0FrRUJheUFBY1NFRURBRUxJQUlnQUNJRVN3MEFJQUFnQW5BaEJBc2dDU2dDQUNBRVFRSjBhaWdDQUNJRFJRMEFJQUpCQVdzaENDQUdRUUZMSVFZRFFDQURLQUlBSWdORkRRRWdBQ0FES0FJRUlnVkhCRUFDUUNBR1JRUkFJQVVnQ0hFaEJRd0JDeUFDSUFWTERRQWdCU0FDY0NFRkN5QUVJQVZHRFFFTUFnc2dBeWdDRENJS0tBSUlJQUJIRFFBTERBRUxJQWRCZ0FOcUlnSVE4UXNpQ2lBTUtBSU1FTFFhSUFJZ0NoQW9JQUlnQWlnQ0dFRUJhallDR0FKQUlBY29BcUFESWdKRkRRQUNRQ0FDYVNJR1FRRk5CRUFnQWtFQmF5QUFjU0VFREFFTElBSWdBQ0lFU3cwQUlBQWdBbkFoQkFzZ0NTZ0NBQ0FFUVFKMGFpZ0NBQ0lEUlEwQUlBSkJBV3NoQ0NBR1FRRkxJUVlEUUNBREtBSUFJZ05GRFFFZ0FDQURLQUlFSWdWSEJFQUNRQ0FHUlFSQUlBVWdDSEVoQlF3QkN5QUNJQVZMRFFBZ0JTQUNjQ0VGQ3lBRUlBVkhEUUlMSUFNb0Fnd29BZ2dnQ2lnQ0NFY05BQXNNQVF0QkVCQVZJZ3NnQURZQ0JDQUxJQUN0SUFxdFFpQ0doRGNDQ0NBTFFRQTJBZ0FnQjBHa0Eyb2hEUUpBUVFBZ0FpQUhLQUtvQTBFQmFyTWlGU0FIS2dLc0F5SVdJQUt6bEY0YkRRQkJBaUVFQWtBZ0FpQUNRUUZyY1VFQVJ5QUNRUU5KY2lBQ1FRRjBjaUlEQW44Z0ZTQVdsWTBpRlVNQUFJQlBYU0FWUXdBQUFBQmdjUVJBSUJXcERBRUxRUUFMSWdZZ0F5QUdTeHNpQTBFQlJnMEFJQU1nQTBFQmEzRkZCRUFnQXlFRURBRUxJQU1RZnlFRUlBY29BcUFESVFJTEFrQUNRQUpBSUFJZ0JFOEVRQ0FDSUFSTkRRTWdBa0VEU1NFR0FuOGdCeWdDcUFPeklBY3FBcXdEbFkwaUZVTUFBSUJQWFNBVlF3QUFBQUJnY1FSQUlCV3BEQUVMUVFBTElRTWdBaUFFSUFZZ0FtbEJBVXR5Qkg4Z0F4Qi9CU0FEUVFGQklDQURRUUZyWjJ0MElBTkJBa2tiQ3lJRElBTWdCRWtiSWdSTkJFQWdCeWdDb0FNaEFnd0VDeUFFUlEwQkN5QUVRWUNBZ0lBRVNRUkFJQWtnQkVFQ2RCQVZFR3dnQnlBRU5nS2dBMEVBSVFNRFFDQURJQVJHQkVBZ0J5Z0NwQU1pQlVVTkJBVWdDU2dDQUNBRFFRSjBha0VBTmdJQUlBTkJBV29oQXd3QkN3c2dCU2dDQkNFR0FrQWdCR2tpQWtFQlRRUkFJQVlnQkVFQmEzRWhCZ3dCQ3lBRUlBWkxEUUFnQmlBRWNDRUdDeUFKS0FJQUlBWkJBblJxSUEwMkFnQWdCRUVCYXlFUklBSkJBVXNoRWdOQUlBVW9BZ0FpQ0VVTkF5QUlLQUlFSVFJQ1FDQVNSUVJBSUFJZ0VYRWhBZ3dCQ3lBQ0lBUkpEUUFnQWlBRWNDRUNDd0pBSUFJZ0JrWU5BQ0FJSVFNZ0FrRUNkQ0lQSUFrb0FnQnFJaEFvQWdCRkJFQWdFQ0FGTmdJQUlBSWhCZ3dCQ3dOQUlBTWlBaWdDQUNJREJFQWdDQ2dDRENnQ0NDQURLQUlNS0FJSVJnMEJDd3NnQlNBRE5nSUFJQUlnQ1NnQ0FDQVBhaWdDQUNnQ0FEWUNBQ0FKS0FJQUlBOXFLQUlBSUFnMkFnQU1BUXNnQ0NFRkRBQUxBQXNNQ1F0QkFDRUNJQWxCQUJCc0lBZEJBRFlDb0FNTUFRc2dCQ0VDQ3lBQ0lBSkJBV3NpQkhGRkJFQWdBQ0FFY1NFRURBRUxJQUFnQWtrRVFDQUFJUVFNQVFzZ0FDQUNjQ0VFQ3dKQUFrQWdDU2dDQUNBRVFRSjBhaUlBS0FJQUlnTkZCRUFnQ3lBSEtBS2tBellDQUNBSElBczJBcVFESUFBZ0RUWUNBQ0FMS0FJQUlnQkZEUUlnQUNnQ0JDRURBa0FnQWlBQ1FRRnJJZ0J4UlFSQUlBQWdBM0VoQXd3QkN5QUNJQU5MRFFBZ0F5QUNjQ0VEQ3lBSktBSUFJQU5CQW5ScUlRTU1BUXNnQ3lBREtBSUFOZ0lBQ3lBRElBczJBZ0FMSUFjZ0J5Z0NxQU5CQVdvMkFxZ0RDeUFNUVNCcUpBQWdDZ3dCQ3dKQUlBTXRBQUlFUUNBQUtBSzhCU0FJRUdBUTZRRWlCQ0FFS0FJQUtBSkVFUUFBSWdWRkJFQkJBQ0VFSUFCQkFEb0FsQU1nQUVHb0JHcEJrWkVFRUJraEFTQU9RUWhxSWdBZ0NCQllJQUVnQUJCTkdpQUFFQThhREFRTElBVW9BaGdoQWdKQUlBVXRBQ0FpQmtVTkFBSkFJQUpCQVdzT0F3RUFBUUFMUVFBaEJDQUFRUUE2QUpRRElBQkJxQVJxUWJqMkNSQVpJQUJCeUFScUlBRVFZQkNUQWhCTlFlMjFEQkFaSVFJZ0RrRUlhaUlBSUFFUVdDQUNJQUFRVFJvZ0FCQVBHZ3dFQzBFQUlRUUNmd0pBQWtBZ0JnUkFRUUloQmdKQUFrQWdBa0VCYXc0REF3RUFBUXRCQlF3RUN5QUFLQUtnQlVFQU9nQUFJQUFvQXFRRlFRaHFJZ1pCL2NnSkVBNGFEQUlMSUFKQkJFOEVRQ0FBS0FLZ0JVRUFPZ0FBSUFBb0FxUUZRUWhxSWdaQjZQNExFQTRhREFJTElBSkJBblJCNElBTmFpZ0NBQ0VHQ3lBR0RBRUxJQVlnQWhDOEFocEJmd3NpQWtGL1JnMERBa0FnQXkwQUF5QURMUUFHY2tVRVFDQUZLQUlvSWdZTkFRc2dBQ0FJUVFBUU9FRUFFSVVCSVFZZ0JTMEFJU0VJQWtBZ0JTZ0NIRVVFUUNBRExRQUZSUTBCQ3lBQUlRUWdDRVVOQTBFQUlRQWpBRUVnYXlJTUpBQWdEQ0FDTmdJTUlBUW9BcEFESVFjZ0RFRVFhaUFDRUxJYUlBZEIvQU5xSVFrZ0RDZ0NHQ0VFQWtBQ1FDQUhLQUtBQkNJQ1JRMEFBa0FnQW1raUJrRUJUUVJBSUFKQkFXc2dCSEVoQUF3QkN5QUNJQVFpQUVzTkFDQUVJQUp3SVFBTElBa29BZ0FnQUVFQ2RHb29BZ0FpQTBVTkFDQUNRUUZySVFnZ0JrRUJTeUVHQTBBZ0F5Z0NBQ0lEUlEwQklBUWdBeWdDQkNJRlJ3UkFBa0FnQmtVRVFDQUZJQWh4SVFVTUFRc2dBaUFGU3cwQUlBVWdBbkFoQlFzZ0FDQUZSZzBCREFJTElBTW9BZ3dpQ2lnQ0NDQUVSdzBBQ3d3QkN5QUhRZUFEYWlJQ0VQRUxJZ29nRENnQ0RCQ3lHaUFDSUFvUUtDQUNJQUlvQWhoQkFXbzJBaGdDUUNBSEtBS0FCQ0lDUlEwQUFrQWdBbWtpQmtFQlRRUkFJQUpCQVdzZ0JIRWhBQXdCQ3lBQ0lBUWlBRXNOQUNBRUlBSndJUUFMSUFrb0FnQWdBRUVDZEdvb0FnQWlBMFVOQUNBQ1FRRnJJUWdnQmtFQlN5RUdBMEFnQXlnQ0FDSURSUTBCSUFRZ0F5Z0NCQ0lGUndSQUFrQWdCa1VFUUNBRklBaHhJUVVNQVFzZ0FpQUZTdzBBSUFVZ0FuQWhCUXNnQUNBRlJ3MENDeUFES0FJTUtBSUlJQW9vQWdoSERRQUxEQUVMUVJBUUZTSUxJQVEyQWdRZ0N5QUVyU0FLclVJZ2hvUTNBZ2dnQzBFQU5nSUFJQWRCaEFScUlRMENRRUVBSUFJZ0J5Z0NpQVJCQVdxekloVWdCeW9DakFRaUZpQUNzNVJlR3cwQVFRSWhBQUpBSUFJZ0FrRUJhM0ZCQUVjZ0FrRURTWElnQWtFQmRISWlBd0ovSUJVZ0ZwV05JaFZEQUFDQVQxMGdGVU1BQUFBQVlIRUVRQ0FWcVF3QkMwRUFDeUlHSUFNZ0Jrc2JJZ05CQVVZTkFDQURJQU5CQVd0eFJRUkFJQU1oQUF3QkN5QURFSDhoQUNBSEtBS0FCQ0VDQ3dKQUFrQUNRQ0FBSUFKTkJFQWdBQ0FDVHcwRElBSkJBMGtoQmdKL0lBY29Bb2dFc3lBSEtnS01CSldOSWhWREFBQ0FUMTBnRlVNQUFBQUFZSEVFUUNBVnFRd0JDMEVBQ3lFRElBSWdBQ0FHSUFKcFFRRkxjZ1IvSUFNUWZ3VWdBMEVCUVNBZ0EwRUJhMmRyZENBRFFRSkpHd3NpQXlBQUlBTkxHeUlBVFFSQUlBY29Bb0FFSVFJTUJBc2dBRVVOQVFzZ0FFR0FnSUNBQkVrRVFDQUpJQUJCQW5RUUZSQnNJQWNnQURZQ2dBUkJBQ0VEQTBBZ0FDQURSZ1JBSUFjb0FvUUVJZ1ZGRFFRRklBa29BZ0FnQTBFQ2RHcEJBRFlDQUNBRFFRRnFJUU1NQVFzTElBVW9BZ1FoQmdKQUlBQnBJZ0pCQVUwRVFDQUdJQUJCQVd0eElRWU1BUXNnQUNBR1N3MEFJQVlnQUhBaEJnc2dDU2dDQUNBR1FRSjBhaUFOTmdJQUlBQkJBV3NoRVNBQ1FRRkxJUklEUUNBRktBSUFJZ2hGRFFNZ0NDZ0NCQ0VDQWtBZ0VrVUVRQ0FDSUJGeElRSU1BUXNnQUNBQ1N3MEFJQUlnQUhBaEFnc0NRQ0FDSUFaR0RRQWdDQ0VESUFKQkFuUWlEeUFKS0FJQWFpSVFLQUlBUlFSQUlCQWdCVFlDQUNBQ0lRWU1BUXNEUUNBRElnSW9BZ0FpQXdSQUlBZ29BZ3dvQWdnZ0F5Z0NEQ2dDQ0VZTkFRc0xJQVVnQXpZQ0FDQUNJQWtvQWdBZ0Qyb29BZ0FvQWdBMkFnQWdDU2dDQUNBUGFpZ0NBQ0FJTmdJQURBRUxJQWdoQlF3QUN3QUxEQXdMUVFBaEFpQUpRUUFRYkNBSFFRQTJBb0FFREFFTElBQWhBZ3NnQWlBQ1FRRnJJZ0J4UlFSQUlBQWdCSEVoQUF3QkN5QUNJQVJMQkVBZ0JDRUFEQUVMSUFRZ0FuQWhBQXNDUUFKQUlBa29BZ0FnQUVFQ2RHb2lBQ2dDQUNJRFJRUkFJQXNnQnlnQ2hBUTJBZ0FnQnlBTE5nS0VCQ0FBSUEwMkFnQWdDeWdDQUNJQVJRMENJQUFvQWdRaEF3SkFJQUlnQWtFQmF5SUFjVVVFUUNBQUlBTnhJUU1NQVFzZ0FpQURTdzBBSUFNZ0FuQWhBd3NnQ1NnQ0FDQURRUUowYWlFRERBRUxJQXNnQXlnQ0FEWUNBQXNnQXlBTE5nSUFDeUFISUFjb0FvZ0VRUUZxTmdLSUJBc2dERUVnYWlRQUlBb01CQXNnQ0FSQUlBSkJBVWNFUUNBQVFRQTZBSlFESUFCQnFBUnFRYXYzQ1JBWklBQkJ5QVJxSUFFUVlCQ1RBaEJOUWUyMURCQVpJUU1nRGtFSWFpSUVJQUVRV0NBRElBUVFUUm9nQkJBUEdndEJBQ0VFSXdCQklHc2lDeVFBSUFzZ0JqWUNDQ0FMSUFJMkFnd2dBQ2dDa0FNaEJ5QUxRUkJxSUFJZ0JoQ3hHaUFIUWF3RWFpRUpJQXRCR0dvZ0MwRWNhaENoQ3lFSUFrQUNRQ0FIS0FLd0JDSUFSUTBBSUFrb0FnQUNmeUFBUVFGcklBaHhJQUJwSWdKQkFVME5BQm9nQ0NBQUlBaExEUUFhSUFnZ0FIQUxJZ1JCQW5ScUtBSUFJZ1ZGRFFBZ0FFRUJheUVHSUFzb0Fod2hEQ0FMS0FJWUlRMGdBa0VCU3lFQ0EwQWdCU2dDQUNJRlJRMEJJQWdnQlNnQ0JDSURSd1JBQWtBZ0FrVUVRQ0FESUFaeElRTU1BUXNnQUNBRFN3MEFJQU1nQUhBaEF3c2dBeUFFUmcwQkRBSUxJQVVvQWd3aUNpZ0NDQ0FOUncwQUlBb29BZ3dnREVjTkFBc01BUXNnQjBHUUJHb2lBQkQ4QXlJS0lBc29BZ3dnQ3lnQ0NCQ3hHaUFBSUFvUUtDQUFJQUFvQWhoQkFXbzJBaGdDUUNBSEtBS3dCQ0lBUlEwQUlBa29BZ0FDZnlBQVFRRnJJQWh4SUFCcElnSkJBVTBOQUJvZ0NDQUFJQWhMRFFBYUlBZ2dBSEFMSWdSQkFuUnFLQUlBSWdWRkRRQWdBRUVCYXlFR0lBSkJBVXNoQWdOQUlBVW9BZ0FpQlVVTkFTQUlJQVVvQWdRaUEwY0VRQUpBSUFKRkJFQWdBeUFHY1NFRERBRUxJQUFnQTBzTkFDQURJQUJ3SVFNTElBTWdCRWNOQWdzZ0JTZ0NEQ0lES0FJSUlBb29BZ2hIRFFBZ0F5Z0NEQ0FLS0FJTVJ3MEFDd3dCQzBFUUVCVWlEQ0FJTmdJRUlBd2dDSzBnQ3ExQ0lJYUVOd0lJSUF4QkFEWUNBQ0FIUWJRRWFpRU5Ba0JCQUNBQUlBY29BcmdFUVFGcXN5SVZJQWNxQXJ3RUloWWdBTE9VWGhzTkFFRUNJUVFDUUNBQUlBQkJBV3R4UVFCSElBQkJBMGx5SUFCQkFYUnlJZ0lDZnlBVklCYVZqU0lWUXdBQWdFOWRJQlZEQUFBQUFHQnhCRUFnRmFrTUFRdEJBQXNpQXlBQ0lBTkxHeUlDUVFGR0RRQWdBaUFDUVFGcmNVVUVRQ0FDSVFRTUFRc2dBaEIvSVFRZ0J5Z0NzQVFoQUFzQ1FBSkFBa0FnQUNBRVR3UkFJQUFnQkUwTkF5QUFRUU5KSVFNQ2Z5QUhLQUs0QkxNZ0J5b0N2QVNWalNJVlF3QUFnRTlkSUJWREFBQUFBR0J4QkVBZ0Zha01BUXRCQUFzaEFpQUFJQVFnQXlBQWFVRUJTM0lFZnlBQ0VIOEZJQUpCQVVFZ0lBSkJBV3RuYTNRZ0FrRUNTUnNMSWdJZ0FpQUVTUnNpQkUwRVFDQUhLQUt3QkNFQURBUUxJQVJGRFFFTElBUkJnSUNBZ0FSSkJFQWdDU0FFUVFKMEVCVVFiQ0FISUFRMkFyQUVRUUFoQlFOQUlBUWdCVVlFUUNBSEtBSzBCQ0lDUlEwRUJTQUpLQUlBSUFWQkFuUnFRUUEyQWdBZ0JVRUJhaUVGREFFTEN5QUNLQUlFSVFZQ1FDQUVhU0lBUVFGTkJFQWdCaUFFUVFGcmNTRUdEQUVMSUFRZ0Jrc05BQ0FHSUFSd0lRWUxJQWtvQWdBZ0JrRUNkR29nRFRZQ0FDQUVRUUZySVJFZ0FFRUJTeUVTQTBBZ0FpZ0NBQ0lBUlEwRElBQW9BZ1FoQXdKQUlCSkZCRUFnQXlBUmNTRUREQUVMSUFNZ0JFa05BQ0FESUFSd0lRTUxBa0FnQXlBR1JnMEFJQUFoQlNBRFFRSjBJZzhnQ1NnQ0FHb2lFQ2dDQUVVRVFDQVFJQUkyQWdBZ0F5RUdEQUVMQTBBQ1FDQUZJZ01vQWdBaUJVVU5BQ0FBS0FJTUloQW9BZ2dnQlNnQ0RDSVRLQUlJUncwQUlCQW9BZ3dnRXlnQ0RFWU5BUXNMSUFJZ0JUWUNBQ0FESUFrb0FnQWdEMm9vQWdBb0FnQTJBZ0FnQ1NnQ0FDQVBhaWdDQUNBQU5nSUFEQUVMSUFBaEFnd0FDd0FMREF3TFFRQWhBQ0FKUVFBUWJDQUhRUUEyQXJBRURBRUxJQVFoQUFzZ0FDQUFRUUZySWdSeFJRUkFJQVFnQ0hFaEJBd0JDeUFBSUFoTEJFQWdDQ0VFREFFTElBZ2dBSEFoQkFzQ1FBSkFJQWtvQWdBZ0JFRUNkR29pQkNnQ0FDSUZSUVJBSUF3Z0J5Z0N0QVEyQWdBZ0J5QU1OZ0swQkNBRUlBMDJBZ0FnRENnQ0FDSUVSUTBDSUFRb0FnUWhCUUpBSUFBZ0FFRUJheUlFY1VVRVFDQUVJQVZ4SVFVTUFRc2dBQ0FGU3cwQUlBVWdBSEFoQlFzZ0NTZ0NBQ0FGUVFKMGFpRUZEQUVMSUF3Z0JTZ0NBRFlDQUFzZ0JTQU1OZ0lBQ3lBSElBY29BcmdFUVFGcU5nSzRCQXNnQzBFZ2FpUUFJQW9NQkFzakFFRWdheUlMSkFBZ0N5QUdOZ0lJSUFzZ0FqWUNEQ0FBS0FLUUF5RUhJQXRCRUdvZ0FpQUdFSzhhSUFkQjNBUnFJUWtnQzBFWWFpQUxRUnhxRUtFTElRZ0NRQUpBSUFjb0F1QUVJZ0JGRFFBZ0NTZ0NBQUovSUFCQkFXc2dDSEVnQUdraUFrRUJUUTBBR2lBSUlBQWdDRXNOQUJvZ0NDQUFjQXNpQkVFQ2RHb29BZ0FpQlVVTkFDQUFRUUZySVFZZ0N5Z0NIQ0VNSUFzb0FoZ2hEU0FDUVFGTElRSURRQ0FGS0FJQUlnVkZEUUVnQ0NBRktBSUVJZ05IQkVBQ1FDQUNSUVJBSUFNZ0JuRWhBd3dCQ3lBQUlBTkxEUUFnQXlBQWNDRURDeUFESUFSR0RRRU1BZ3NnQlNnQ0RDSUtLQUlJSUExSERRQWdDaWdDRENBTVJ3MEFDd3dCQ3lBSFFjQUVhaUlBRVB3RElnb2dDeWdDRENBTEtBSUlFSzhhSUFBZ0NoQW9JQUFnQUNnQ0dFRUJhallDR0FKQUlBY29BdUFFSWdCRkRRQWdDU2dDQUFKL0lBQkJBV3NnQ0hFZ0FHa2lBa0VCVFEwQUdpQUlJQUFnQ0VzTkFCb2dDQ0FBY0FzaUJFRUNkR29vQWdBaUJVVU5BQ0FBUVFGcklRWWdBa0VCU3lFQ0EwQWdCU2dDQUNJRlJRMEJJQWdnQlNnQ0JDSURSd1JBQWtBZ0FrVUVRQ0FESUFaeElRTU1BUXNnQUNBRFN3MEFJQU1nQUhBaEF3c2dBeUFFUncwQ0N5QUZLQUlNSWdNb0FnZ2dDaWdDQ0VjTkFDQURLQUlNSUFvb0FneEhEUUFMREFFTFFSQVFGU0lNSUFnMkFnUWdEQ0FJclNBS3JVSWdob1EzQWdnZ0RFRUFOZ0lBSUFkQjVBUnFJUTBDUUVFQUlBQWdCeWdDNkFSQkFXcXpJaFVnQnlvQzdBUWlGaUFBczVSZUd3MEFRUUloQkFKQUlBQWdBRUVCYTNGQkFFY2dBRUVEU1hJZ0FFRUJkSElpQWdKL0lCVWdGcFdOSWhWREFBQ0FUMTBnRlVNQUFBQUFZSEVFUUNBVnFRd0JDMEVBQ3lJRElBSWdBMHNiSWdKQkFVWU5BQ0FDSUFKQkFXdHhSUVJBSUFJaEJBd0JDeUFDRUg4aEJDQUhLQUxnQkNFQUN3SkFBa0FDUUNBQUlBUlBCRUFnQUNBRVRRMERJQUJCQTBraEF3Si9JQWNvQXVnRXN5QUhLZ0xzQkpXTkloVkRBQUNBVDEwZ0ZVTUFBQUFBWUhFRVFDQVZxUXdCQzBFQUN5RUNJQUFnQkNBRElBQnBRUUZMY2dSL0lBSVFmd1VnQWtFQlFTQWdBa0VCYTJkcmRDQUNRUUpKR3dzaUFpQUNJQVJKR3lJRVRRUkFJQWNvQXVBRUlRQU1CQXNnQkVVTkFRc2dCRUdBZ0lDQUJFa0VRQ0FKSUFSQkFuUVFGUkJzSUFjZ0JEWUM0QVJCQUNFRkEwQWdCQ0FGUmdSQUlBY29BdVFFSWdKRkRRUUZJQWtvQWdBZ0JVRUNkR3BCQURZQ0FDQUZRUUZxSVFVTUFRc0xJQUlvQWdRaEJnSkFJQVJwSWdCQkFVMEVRQ0FHSUFSQkFXdHhJUVlNQVFzZ0JDQUdTdzBBSUFZZ0JIQWhCZ3NnQ1NnQ0FDQUdRUUowYWlBTk5nSUFJQVJCQVdzaEVTQUFRUUZMSVJJRFFDQUNLQUlBSWdCRkRRTWdBQ2dDQkNFREFrQWdFa1VFUUNBRElCRnhJUU1NQVFzZ0F5QUVTUTBBSUFNZ0JIQWhBd3NDUUNBRElBWkdEUUFnQUNFRklBTkJBblFpRHlBSktBSUFhaUlRS0FJQVJRUkFJQkFnQWpZQ0FDQURJUVlNQVFzRFFBSkFJQVVpQXlnQ0FDSUZSUTBBSUFBb0Fnd2lFQ2dDQ0NBRktBSU1JaE1vQWdoSERRQWdFQ2dDRENBVEtBSU1SZzBCQ3dzZ0FpQUZOZ0lBSUFNZ0NTZ0NBQ0FQYWlnQ0FDZ0NBRFlDQUNBSktBSUFJQTlxS0FJQUlBQTJBZ0FNQVFzZ0FDRUNEQUFMQUFzTUN3dEJBQ0VBSUFsQkFCQnNJQWRCQURZQzRBUU1BUXNnQkNFQUN5QUFJQUJCQVdzaUJIRkZCRUFnQkNBSWNTRUVEQUVMSUFBZ0NFc0VRQ0FJSVFRTUFRc2dDQ0FBY0NFRUN3SkFBa0FnQ1NnQ0FDQUVRUUowYWlJRUtBSUFJZ1ZGQkVBZ0RDQUhLQUxrQkRZQ0FDQUhJQXcyQXVRRUlBUWdEVFlDQUNBTUtBSUFJZ1JGRFFJZ0JDZ0NCQ0VGQWtBZ0FDQUFRUUZySWdSeFJRUkFJQVFnQlhFaEJRd0JDeUFBSUFWTERRQWdCU0FBY0NFRkN5QUpLQUlBSUFWQkFuUnFJUVVNQVFzZ0RDQUZLQUlBTmdJQUN5QUZJQXcyQWdBTElBY2dCeWdDNkFSQkFXbzJBdWdFQ3lBTFFTQnFKQUFnQ2d3REN3Si9RditBZ0orOEFTQUdyWWhDQVlOUUlBWkJKRTl5UlFSQUlBWkJBblJCOElBTmFpZ0NBQXdCQ3lBQUtBS2dCVUVBT2dBQUlBQW9BcVFGUVFocUlnTkI3T01MRUE0YUlBTWdCaEM4QWhwQkFBc2lBMFVOQXlNQVFUQnJJZ2NrQUNBSElBTTJBaEFnQnlBQ05nSVVJQWRCQXpZQ0RDQUFRWkFEYWlJRUtBSUFJUW9nQjBFWWFpQUNJQU5CQXhDdUdpQUhLQUlvSUFjb0FpUWdCeWdDSUVHU3NhajZCMnBCazZRR2N5SUFRUUoyUVpiNHFmb0hjMm9nQUhNaUFFRUNka0dXK0tuNkIzTnFJQUJ6SVFVZ0NrR01CV29oQ1FKQUFrQWdDaWdDa0FVaUFFVU5BQ0FKS0FJQUFuOGdBRUVCYXlBRmNTQUFhU0lEUVFGTkRRQWFJQVVnQUNBRlN3MEFHaUFGSUFCd0N5SUVRUUowYWlnQ0FDSUNSUTBBSUFCQkFXc2hDQ0FIS0FJa0lRd2dCeWdDSUNFTklBTkJBVXNoQXdOQUlBSW9BZ0FpQWtVTkFTQUZJQUlvQWdRaUJrY0VRQUpBSUFORkJFQWdCaUFJY1NFR0RBRUxJQUFnQmtzTkFDQUdJQUJ3SVFZTElBUWdCa1lOQVF3Q0N5QUNLQUlNSWdzb0FnZ2dEVWNOQUNBTEtBSU1JQXhIRFFBTERBRUxJQXBCOEFScUlnQVFxZ01pQ3lBSEtBSVVJQWNvQWhBZ0J5Z0NEQkN1R2lBQUlBc1FLQ0FBSUFBb0FoaEJBV28yQWhnQ1FDQUtLQUtRQlNJQVJRMEFJQWtvQWdBQ2Z5QUFRUUZySUFWeElBQnBJZ05CQVUwTkFCb2dCU0FBSUFWTERRQWFJQVVnQUhBTElnUkJBblJxS0FJQUlnSkZEUUFnQUVFQmF5RUlJQU5CQVVzaEF3TkFJQUlvQWdBaUFrVU5BU0FGSUFJb0FnUWlCa2NFUUFKQUlBTkZCRUFnQmlBSWNTRUdEQUVMSUFBZ0Jrc05BQ0FHSUFCd0lRWUxJQVFnQmtjTkFnc2dBaWdDRENJR0tBSUlJQXNvQWdoSERRQWdCaWdDRENBTEtBSU1SdzBBQ3d3QkMwRVFFQlVpRENBRk5nSUVJQXdnQmEwZ0M2MUNJSWFFTndJSUlBeEJBRFlDQUNBS1FaUUZhaUVOQWtCQkFDQUFJQW9vQXBnRlFRRnFzeUlWSUFvcUFwd0ZJaFlnQUxPVVhoc05BRUVDSVFNQ1FDQUFJQUJCQVd0eFFRQkhJQUJCQTBseUlBQkJBWFJ5SWdRQ2Z5QVZJQmFWalNJVlF3QUFnRTlkSUJWREFBQUFBR0J4QkVBZ0Zha01BUXRCQUFzaUFpQUNJQVJKR3lJRVFRRkdEUUFnQkNBRVFRRnJjVVVFUUNBRUlRTU1BUXNnQkJCL0lRTWdDaWdDa0FVaEFBc0NRQUpBQWtBZ0FDQURUd1JBSUFBZ0EwME5BeUFBUVFOSklRSUNmeUFLS0FLWUJiTWdDaW9DbkFXVmpTSVZRd0FBZ0U5ZElCVkRBQUFBQUdCeEJFQWdGYWtNQVF0QkFBc2hCQ0FBSUFNZ0FpQUFhVUVCUzNJRWZ5QUVFSDhGSUFSQkFVRWdJQVJCQVd0bmEzUWdCRUVDU1JzTElnUWdBeUFFU3hzaUEwMEVRQ0FLS0FLUUJTRUFEQVFMSUFORkRRRUxJQU5CZ0lDQWdBUkpCRUFnQ1NBRFFRSjBFQlVRYkNBS0lBTTJBcEFGUVFBaEFnTkFJQUlnQTBZRVFDQUtLQUtVQlNJQVJRMEVCU0FKS0FJQUlBSkJBblJxUVFBMkFnQWdBa0VCYWlFQ0RBRUxDeUFBS0FJRUlRZ0NRQ0FEYVNJRVFRRk5CRUFnQ0NBRFFRRnJjU0VJREFFTElBTWdDRXNOQUNBSUlBTndJUWdMSUFrb0FnQWdDRUVDZEdvZ0RUWUNBQ0FEUVFGcklSRWdCRUVCU3lFU0EwQWdBQ2dDQUNJRVJRMERJQVFvQWdRaEJnSkFJQkpGQkVBZ0JpQVJjU0VHREFFTElBTWdCa3NOQUNBR0lBTndJUVlMQWtBZ0JpQUlSZzBBSUFRaEFpQUdRUUowSWc4Z0NTZ0NBR29pRUNnQ0FFVUVRQ0FRSUFBMkFnQWdCaUVJREFFTEEwQUNRQ0FDSWdZb0FnQWlBa1VOQUNBRUtBSU1JaEFvQWdnZ0FpZ0NEQ0lUS0FJSVJ3MEFJQkFvQWd3Z0V5Z0NERVlOQVFzTElBQWdBallDQUNBR0lBa29BZ0FnRDJvb0FnQW9BZ0EyQWdBZ0NTZ0NBQ0FQYWlnQ0FDQUVOZ0lBREFFTElBUWhBQXdBQ3dBTERBb0xRUUFoQUNBSlFRQVFiQ0FLUVFBMkFwQUZEQUVMSUFNaEFBc2dBQ0FBUVFGcklnUnhSUVJBSUFRZ0JYRWhCQXdCQ3lBQUlBVkxCRUFnQlNFRURBRUxJQVVnQUhBaEJBc0NRQUpBSUFrb0FnQWdCRUVDZEdvaUJDZ0NBQ0lDUlFSQUlBd2dDaWdDbEFVMkFnQWdDaUFNTmdLVUJTQUVJQTAyQWdBZ0RDZ0NBQ0lFUlEwQ0lBUW9BZ1FoQWdKQUlBQWdBRUVCYXlJRWNVVUVRQ0FDSUFSeElRSU1BUXNnQUNBQ1N3MEFJQUlnQUhBaEFnc2dDU2dDQUNBQ1FRSjBhaUVDREFFTElBd2dBaWdDQURZQ0FBc2dBaUFNTmdJQUN5QUtJQW9vQXBnRlFRRnFOZ0tZQlFzZ0IwRXdhaVFBSUFzTUFndEJBQ0VFSUFCQkFEb0FsQU1nQUVHb0JHcEIzN2NLRUJraEFpQU9RUWhxSWdBZ0FSQllJQUlnQUJCTkdpQUFFQThhREFJTFFRQWhBQ01BUVNCcklnd2tBQ0FNSUFJMkFnd2dCQ2dDa0FNaEJ5QU1RUkJxSUFJUXN4b2dCMEhNQTJvaENTQU1LQUlZSVFRQ1FBSkFJQWNvQXRBRElnSkZEUUFDUUNBQ2FTSUdRUUZOQkVBZ0FrRUJheUFFY1NFQURBRUxJQUlnQkNJQVN3MEFJQVFnQW5BaEFBc2dDU2dDQUNBQVFRSjBhaWdDQUNJRFJRMEFJQUpCQVdzaENDQUdRUUZMSVFZRFFDQURLQUlBSWdORkRRRWdCQ0FES0FJRUlnVkhCRUFDUUNBR1JRUkFJQVVnQ0hFaEJRd0JDeUFDSUFWTERRQWdCU0FDY0NFRkN5QUFJQVZHRFFFTUFnc2dBeWdDRENJS0tBSUlJQVJIRFFBTERBRUxJQWRCc0FOcUlnSVE4UXNpQ2lBTUtBSU1FTE1hSUFJZ0NoQW9JQUlnQWlnQ0dFRUJhallDR0FKQUlBY29BdEFESWdKRkRRQUNRQ0FDYVNJR1FRRk5CRUFnQWtFQmF5QUVjU0VBREFFTElBSWdCQ0lBU3cwQUlBUWdBbkFoQUFzZ0NTZ0NBQ0FBUVFKMGFpZ0NBQ0lEUlEwQUlBSkJBV3NoQ0NBR1FRRkxJUVlEUUNBREtBSUFJZ05GRFFFZ0JDQURLQUlFSWdWSEJFQUNRQ0FHUlFSQUlBVWdDSEVoQlF3QkN5QUNJQVZMRFFBZ0JTQUNjQ0VGQ3lBQUlBVkhEUUlMSUFNb0Fnd29BZ2dnQ2lnQ0NFY05BQXNNQVF0QkVCQVZJZ3NnQkRZQ0JDQUxJQVN0SUFxdFFpQ0doRGNDQ0NBTFFRQTJBZ0FnQjBIVUEyb2hEUUpBUVFBZ0FpQUhLQUxZQTBFQmFyTWlGU0FIS2dMY0F5SVdJQUt6bEY0YkRRQkJBaUVBQWtBZ0FpQUNRUUZyY1VFQVJ5QUNRUU5KY2lBQ1FRRjBjaUlEQW44Z0ZTQVdsWTBpRlVNQUFJQlBYU0FWUXdBQUFBQmdjUVJBSUJXcERBRUxRUUFMSWdZZ0F5QUdTeHNpQTBFQlJnMEFJQU1nQTBFQmEzRkZCRUFnQXlFQURBRUxJQU1RZnlFQUlBY29BdEFESVFJTEFrQUNRQUpBSUFBZ0FrMEVRQ0FBSUFKUERRTWdBa0VEU1NFR0FuOGdCeWdDMkFPeklBY3FBdHdEbFkwaUZVTUFBSUJQWFNBVlF3QUFBQUJnY1FSQUlCV3BEQUVMUVFBTElRTWdBaUFBSUFZZ0FtbEJBVXR5Qkg4Z0F4Qi9CU0FEUVFGQklDQURRUUZyWjJ0MElBTkJBa2tiQ3lJRElBQWdBMHNiSWdCTkJFQWdCeWdDMEFNaEFnd0VDeUFBUlEwQkN5QUFRWUNBZ0lBRVNRUkFJQWtnQUVFQ2RCQVZFR3dnQnlBQU5nTFFBMEVBSVFNRFFDQUFJQU5HQkVBZ0J5Z0MxQU1pQlVVTkJBVWdDU2dDQUNBRFFRSjBha0VBTmdJQUlBTkJBV29oQXd3QkN3c2dCU2dDQkNFR0FrQWdBR2tpQWtFQlRRUkFJQVlnQUVFQmEzRWhCZ3dCQ3lBQUlBWkxEUUFnQmlBQWNDRUdDeUFKS0FJQUlBWkJBblJxSUEwMkFnQWdBRUVCYXlFUklBSkJBVXNoRWdOQUlBVW9BZ0FpQ0VVTkF5QUlLQUlFSVFJQ1FDQVNSUVJBSUFJZ0VYRWhBZ3dCQ3lBQUlBSkxEUUFnQWlBQWNDRUNDd0pBSUFJZ0JrWU5BQ0FJSVFNZ0FrRUNkQ0lQSUFrb0FnQnFJaEFvQWdCRkJFQWdFQ0FGTmdJQUlBSWhCZ3dCQ3dOQUlBTWlBaWdDQUNJREJFQWdDQ2dDRENnQ0NDQURLQUlNS0FJSVJnMEJDd3NnQlNBRE5nSUFJQUlnQ1NnQ0FDQVBhaWdDQUNnQ0FEWUNBQ0FKS0FJQUlBOXFLQUlBSUFnMkFnQU1BUXNnQ0NFRkRBQUxBQXNNQ0F0QkFDRUNJQWxCQUJCc0lBZEJBRFlDMEFNTUFRc2dBQ0VDQ3lBQ0lBSkJBV3NpQUhGRkJFQWdBQ0FFY1NFQURBRUxJQUlnQkVzRVFDQUVJUUFNQVFzZ0JDQUNjQ0VBQ3dKQUFrQWdDU2dDQUNBQVFRSjBhaUlBS0FJQUlnTkZCRUFnQ3lBSEtBTFVBellDQUNBSElBczJBdFFESUFBZ0RUWUNBQ0FMS0FJQUlnQkZEUUlnQUNnQ0JDRURBa0FnQWlBQ1FRRnJJZ0J4UlFSQUlBQWdBM0VoQXd3QkN5QUNJQU5MRFFBZ0F5QUNjQ0VEQ3lBSktBSUFJQU5CQW5ScUlRTU1BUXNnQ3lBREtBSUFOZ0lBQ3lBRElBczJBZ0FMSUFjZ0J5Z0MyQU5CQVdvMkF0Z0RDeUFNUVNCcUpBQWdDZ3NoQkNBT0lBRTJBZ2dqQUVFZ2F5SUFKQUFnQUNBT1FRaHFJZ0UyQWhBZ0FFRVlhaUFVSUFFZ0FFRVFhaENERHlBQUtBSVlJUUVnQUVFZ2FpUUFJQUVnQkRZQ0RBc0xJQTVCSUdva0FDQUVEd3NRK3dFQUN3a0FJQUFvQWdBUVlBdS9BUUVFZnlBQUxRQnNRUVJ4UlFSQUl3QkJFR3NpQXlRQUlBTWdBQ2dDR0RZQ0JFRVlFQlVoQWlBREtBSUVJUVFnQWtJQU53SUFJQUlnQkRZQ0ZDQUNRWUNBZ1B3RE5nSVFJQUpDQURjQ0NBSkFJQUlvQWhRaUFVVU5BQ0FCUVlnRmFpRUVJQUZCakFWcUlRRURRQ0FCS0FJQUlnRWdCRVlOQVNBQ0lBRVE3UmNnQVVFRWFpRUJEQUFMQUFzZ0EwRUFOZ0lJSUFCQlBHb2dBaEQrR0NBRFFRaHFFUDBZSUFBZ0FDZ0NiRUVFY2pZQ2JDQURRUkJxSkFBTElBQW9BandMcGlvQkVYOGdBQzBBYlVHQUFYRkZCRUFqQUVFUWF5SU5KQUFnRFNBQU5nSUVRZmdBRUJVaEJTQU5LQUlFSVFZZ0JVSUFOd0lJSUFVZ0JqWUNCQ0FGSUFCQklHbzJBZ0FnQlVJQU53SWNJQVZDQURjQ01DQUZRZ0EzQWtRZ0JVSUFOd0prSUFWQ0FEY0NFQ0FGUVlDQWdQd0ROZ0lZSUFWQ0FEY0NKQ0FGUVlDQWdQd0ROZ0lzSUFWQ0FEY0NPQ0FGUVVCclFZQ0FnUHdETmdJQUlBVkNBRGNDVENBRlFnQTNBbFFnQlVLQWdJQ0FnSUNBd0Q4M0Fsd2dCVUlBTndKc0lBVkJnSUNBL0FNMkFuUWdCaWdDR0NFQkl3QkJJR3NpQ1NRQUlBbEJFR29nQVJERkZ5QUZRZVFBYWlFQ0lBa29BaFFoQXlBSktBSVFJUVlEUUNBRElBWkdCRUFDUUNBSlFSQnFJZ1lRTWhvZ0JpQUJFTVlYSUFrb0FoUWhFQ0FKS0FJUUlRWURRQ0FHSUJCR0JFQWdDVUVRYWhBeUdpQUZLQUpFSWdZZ0JTZ0NTQ0lDUmcwQ0FrQUNRQU5BQWtBZ0FpQUdSZ1JBSUFVb0FrZ2hBaUFGS0FKRUlRWU1BUXNnQmlnQ0JDZ0NFRUVVUmdSQUlBVWdCaWdDQUJEcEFTSUJSUTBFSUFFZ0FTZ0NBQ2dDZkJFQUFDSUJSUTBESUFZb0FnUWlBeUFES0FJQUtBSzBBUkVBQUNBQk5nSWNDeUFHUVFocUlRWU1BUXNMQTBBZ0FpQUdSd1JBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCaWdDQkNJQktBSVFRUWxyRGdZQUFRSUdBd1FHQ3lBQklBRW9BZ0FvQWx3UkFBQW9BaFFpQXlBREtBSUFLQUs0QVJFQUFDSURSUTBGSUFFZ0FTZ0NBQ2dDWEJFQUFDQURLQUljRUlRRkRBVUxJQUVnQVNnQ0FDZ0NaQkVBQUNnQ0ZDSURJQU1vQWdBb0FyZ0JFUUFBSWdORkRRUWdBU0FCS0FJQUtBSmtFUUFBSUFNb0Fod1FoQVVNQkFzZ0FTQUJLQUlBS0FKc0VRQUFJZ0VvQWhRaEJDQUJLQUlZSVFFRFFDQUJJQVJHRFFRZ0JDZ0NBQ0lESUFNb0FnQW9BcmdCRVFBQUJFQWdCQ0FFS0FJQUlnTWdBeWdDQUNnQ3VBRVJBQUFvQWh3aUF6WUNBQ0FEUlEwRUN5QUVRUVJxSVFRTUFBc0FDeUFCSUFFb0FnQW9BbndSQUFBb0FoUWlBeUFES0FJQUtBSzRBUkVBQUNJRFJRMENJQUVnQVNnQ0FDZ0NmQkVBQUNBREtBSWNFSVFGREFJTElBRWdBU2dDQUNnQ2hBRVJBQUFpQVNnQ0ZDSURJQU1vQWdBb0FyZ0JFUUFBSWdNRVFDQUJJQU1vQWh3UWhBVUxJQUVvQWh3aEF5QUJLQUlZSVFRRFFDQURJQVJHRFFJZ0JDZ0NBQ0lCSUFFb0FnQW9BcmdCRVFBQUJFQWdCQ0FFS0FJQUlnRWdBU2dDQUNnQ3VBRVJBQUFvQWh3MkFnQUxJQVJCQkdvaEJBd0FDd0FMUWYvdkEwSEdwUUpCeUFkQmw1Y0JFQUFBQ3lBR1FRaHFJUVlNQVFzTElBVW9Ba2doQWlBRktBSkVJUVlEUUNBQ0lBWkdCRUFnQlVIUUFHb2hDeUFGS0FKSUlRTURRQ0FGS0FKRUlRSkJBQ0VFQTBBZ0FpQURSZ1JBSUFSQkFYRU5BaUFGUVJ4cUlRY2dCVUVJYWlFQklBVkJNR29oQ0NBRktBSkVJUVFEUUFKQUFrQWdBeUFFUmdSQUlBVkIyQUJxSVFZTUFRc2dCQ2dDQkNJR1JRMEJJQVlnQmlnQ0FDZ0N0QUVSQUFBTkFTQUVRUVJxSVFJZ0NVRVFhaUFGS0FJRUVONElJQVFvQWdBUTJ3b2dDU2dDRkNFS0lBa29BaEFoQmdOQUlBWWdDa1lFUUNBSlFRaHFJQWdnQWhEQkFpQUpLQUlJS0FJSUlRSWdDU0FFS0FJQU5nSUVJQUVnQ1VFRWFpSUdFTkFCSUFJMkFnQWdCQ2dDQUNFQ0lBa2dDU2dDQ0NnQ0NEWUNCQ0FISUFZUW53NGdBallDQUNBSklBUW9BZ0EyQWdRZ0N5QUdFTmNISUFsQkVHb1FNaG9NQXdVZ0JTQUdLQUlBSUFJb0FnQVF4QmNnQmtFRWFpRUdEQUVMQUFzQUN3TkFJQVlvQWdBaUJnUkFJQVlvQWd3aEFpQUJJQVpCQ0dvUTBBRWdBallDQUF3QkN3c2dCVUU0YWlJQklRSURRQ0FDS0FJQUlnSkZEUXdnQVNFR0EwQWdCaWdDQUNJR1JRMEJJQUlvQWdnaUF5QUdLQUlJSWdSR0RRQWdBeUFFRUw0SFJRMEFDd3RCNTdZSlFjYWxBa0dxQVVHQXVnRVFBQUFMSUFSQkNHb2hCQXdBQ3dBRkFrQWdBaUlHS0FJRUlnZEZEUUFEUUNBR1FRaHFJZ0VnQTBZTkFRSkFJQVlvQWd3aUNFVU5BQ0FISUFnUXZnZEZEUUFDUUNBSUtBSVFJQWNvQWhCR0JFQWdCU2dDU0NFS0lBVW9Ba1FoQkFOQUFrQWdCQ0FLUndSQUlBUW9BZ1FpQTBVTkFRSkFBa0FDUUFKQUFrQWdBeWdDRUVFSmF3NEdBQUVDQmdNRUJnc2dBeUFES0FJQUtBSmNFUUFBS0FJVUlBaEhEUVVnQXlBREtBSUFLQUpjRVFBQUlBY1FoQVVNQlFzZ0F5QURLQUlBS0FKa0VRQUFLQUlVSUFoSERRUWdBeUFES0FJQUtBSmtFUUFBSUFjUWhBVU1CQXNnQXlBREtBSUFLQUpzRVFBQUlnd29BaFFoQXlBTUtBSVlJUXdEUUNBRElBeEdEUVFnQ0NBREtBSUFSZ1JBSUFNZ0J6WUNBQXNnQTBFRWFpRUREQUFMQUFzZ0F5QURLQUlBS0FKOEVRQUFLQUlVSUFoSERRSWdBeUFES0FJQUtBSjhFUUFBSUFjUWhBVU1BZ3NnQ0NBRElBTW9BZ0FvQW9RQkVRQUFJZ01vQWhSR0JFQWdBeUFIRUlRRkN5QURLQUljSVF3Z0F5Z0NHQ0VEQTBBZ0F5QU1SZzBDSUFnZ0F5Z0NBRVlFUUNBRElBYzJBZ0FMSUFOQkJHb2hBd3dBQ3dBTERBTUxJQVJCQ0dvaEJBd0FDd0FMUWFxaUNVSEdwUUpCNlFkQnNwY0VFQUFBQ3lBR0tBSU1JUU1nQmtFQU5nSU1JQU1FUUNBRElBTW9BZ0FvQWdRUkF3QUxJQWtnQVNnQ0FEWUNFQ0FMSUFsQkVHb1EwQUVnQnpZQ0FFRUJJUVFMSUFVb0FrZ2hBeUFCSVFZTUFBc0FDeUFDUVFocUlRSU1BUXNBQ3dBTEFBc2dCaWdDQkNJQktBSVFRUlJHQkVBZ0JrRUFOZ0lFSUFFZ0FTZ0NBQ2dDQkJFREFBc2dCa0VJYWlFR0RBQUxBQXRCdzc4Q1FjYWxBa0hhQUVHQXVnRVFBQUFMUWZ6N0FFSEdwUUpCMkFCQmdMb0JFQUFBQlNBR0tBSUFJUU5CQUNFRUl3QkI4QUJySWdFa0FBSkFBa0FDUUFKQUlBTW9BaFFRcFE1RkRRQWdBVUVBTmdKc0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU1vQWhRaUFrRVRhdzRWQVFJREJBVUdCd2dKQ2dzTUh4MGNHeG9aR0JjV0FBc2dBa0hDQWtZTkZDQUNRY2NDUmcwVElBSkIrQ0pHRFJFZ0FrR2hLVVlORUNBQ1FkMHBSZzBTSUFKQjdpbEhEUThnQVVFa0VCVWdCU0FEUVFBUU9CRHBBU0FEUVFFUU9DQURRUUlRT0NBRFFRTVFPQkNuRnpZQ2JBd2ZDMEVVRUJVaUFrSUFOd0lFSUFKQjhQUVNOZ0lBSUFKQ0FEY0NEQ0FCSUFJMkFtd01IZ3RCRkJBVklnSkNBRGNDQkNBQ1FmajNFallDQUNBQ1FvQ0FnSUFRTndJTUlBRWdBallDYkF3ZEMwRWNFQlVoQWlBRFFRQVFPQ0VFSUFOQkFSQTRJUWNnQWtLQWdJQ0FJRGNDRENBQ1FnQTNBZ1FnQWlBRU5nSVVJQUpCN0tBVE5nSUFJQUlnQjBFQVJ6b0FHQ0FCSUFJMkFtd01IQXRCR0JBVklRSWdBMEVBRURnaEJDQUNRb0NBZ0lBd053SU1JQUpDQURjQ0JDQUNJQVEyQWhRZ0FrSDBvaE0yQWdBZ0FTQUNOZ0pzREJzTElBRkJIQkFWSUFVZ0EwRUFFRGdRNlFFZ0EwRUJFRGdRdEJjMkFtd01HZ3NnQVVFY0VCVWdCU0FEUVFBUU9CRHBBU0FEUVFFUU9CQ3lGellDYkF3WkMwRUFJUUlnQXhESUFVRUlUd1JBSUFOQkJ4QTRJUUlMSUFGQk1CQVZJQVVnQTBFQUVEZ1E2UUVnQTBFQkVEZ2dBMEVDRURnZ0EwRURFRGhCQVVZZ0EwRUVFRGhCQVVZZ0EwRUZFRGdnQTBFR0VEZ2dBaEN3RnpZQ2JBd1lDMEVVRUJVaUFrSUFOd0lFSUFKQmdQb1NOZ0lBSUFKQ2dJQ0FnUEFBTndJTUlBRWdBallDYkF3WEMwRVlFQlVoQWlBRklBTkJBQkE0RU9rQklRUWdBa0tBZ0lDQWdBRTNBZ3dnQWtJQU53SUVJQUlnQkRZQ0ZDQUNRZnlrRXpZQ0FDQUJJQUkyQW13TUZnc2dBU0FEUVFFUU9EWUNhQ0FGUWVRQWFpQUJRZWdBYWhEUUFTZ0NBQ0lMUlEwRUlBRkJBVFlDVkNBQlFRSTJBaGdnQVNBQlFSaHFOZ0pRSUFFZ0FTa0RVRGNEQUNBQlFkZ0FhaUFCRU9jRElRY2dBVUVBTmdKSUlBRkJBRG9BUndKQUlBc29BaFFpQkVFeVJ3MEFJQVVvQWdRUTNnZ2hCQ0FCSUFGQnh3QnFOZ0l3SUFGQjBJNFROZ0lvSUFFZ0FVRW9haUlPTmdJNElBRWdBVUhJQUdvMkFpd2dBU2dDYUNFS0l3QkJJR3NpQWlRQUlBSWdEallDRENBQ1FmRHZFallDQ0NBQ0lBSkJDR29pRERZQ0dDTUFRUkJySWdna0FDQUlJQVFnQ2hEdkZ5QUlLQUlFSVJFZ0NDZ0NBQ0VFQWtBRFFDQUVJQkZHRFFFQ1FBSkFBa0FDUUFKQUlBUW9BZ0FpQ2lnQ0ZDSVBRY2NBYXc0Q0FRSUFDeUFQUWN3Q1JnMEFJQTlCZ0N4SERRTUxJQXBCQVJBNFFRRkhEUUVnRENBS0VJa0NEUUVNQkFzZ0NrRUNFRGhCQVVjTkFDQU1JQW9RaVFKRkRRTUxJQVJCQkdvaEJBd0JDd3RCM3A4SlFkdWlBa0hnQTBIazJ3SVFBQUFMSUFnUU1ob2dDRUVRYWlRQUlBd1FGaUFDUVNCcUpBQWdEaEFXSUFzb0FoUWhCQ0FCTFFCSFJRMEFJQWNnQVVISUFHb1EzZ0lMQWtBZ0JFRXlSeUFFUVN0SGNVVUVRQ0FISUFjb0FnUWdDMEVDRU5FSElnSW9BaGdpQkNBQ1FReHFJQVFiS0FJQUlBdEJBaERSQjBFRWFoRFFCeERqQ2lBSEtBSUFJZ0lnQVMwQVJ6WUNBQXdCQ3lBSEtBSUFLQUlBUVFKSERRUWdCeUFCUWVnQWFoRGVBaUFIS0FJQUlRSUxJQWNvQWdRZ0FtdEJCRTBOQWlBQklBRW9BbWcyQWhnZ0FVRVlhaUlDUVFSeUlBY1FzQUVoQkNBQlFTZ1FGU0FGSUFOQkFCQTRFT2tCSUFJUXJoYzJBbXdnQVNBRFFRQVFPRFlDRkNBRlFkQUFhaUlDSUFGQkZHb1FxUUlpQ0FSQUlBRWdBeEJnTmdJVUlBVkJ4QUJxSUFGQkZHb2lDeUFCUWV3QWFoQzZCeUFCS0FKc0lRb2dBU0FERUdBMkFoUWdBaUFMRU5BQklBbzJBZ0FnQVNnQ2JCb0xJQVFRTWhvZ0J4QXlHaUFJUlEwVkRCWUxJQUZCR0JBVklBVWdBMEVBRURnUTZRRVFyUmMyQW13Z0FTQURRUUFRT0RZQ0dDQUZRZEFBYWlJQ0lBRkJHR29RcVFKRkRSUWdBU0FERUdBMkFoZ2dCVUhFQUdvZ0FVRVlhaUlFSUFGQjdBQnFFTG9ISUFFb0Ftd2hCeUFCSUFNUVlEWUNHQ0FDSUFRUTBBRWdCellDQUF3U0N5QUJRUUEyQWlBZ0FVSUFOd01ZSUFWQjBBQnFJUWRCQUNFQ0EwQWdBeERJQVNBQ1RRUkFJQUZCTEJBVklBRkJHR29RckJjMkFtd2dCRUVCY1NJQ0JFQWdBU0FERUdBMkFsZ2dCVUhFQUdvZ0FVSFlBR29pQkNBQlFld0FhaEM2QnlBQktBSnNJUWdnQVNBREVHQTJBbGdnQnlBRUVOQUJJQWcyQWdBZ0FTZ0NiQm9MSUFGQkdHb1FNaG9nQWtVTkZRd1dCU0FCSUFNZ0FoQTRJZ2cyQWxnZ0FTQUZJQWdRNlFFMkFtZ2dBa0VCYWlFQ0lBRkJHR29nQVVIb0FHb1EvUUlnQnlBQlFkZ0FhaENwQWtFQVJ5QUVjaUVFREFFTEFBc0FDMEgraEFkQnhxVUNRZXdGUVo3R0FoQUFBQXRCcllJRlFjYWxBa0hwQlVHZXhnSVFBQUFMUWNFdVFjYWxBa0hIQlVHZXhnSVFBQUFMSUFVb0FnQWhBaUFCUVFBMkFpQWdBVUxwQmpjREdDQUNRUUZCeHFVQ0lBRkJHR3BCNUpNRUVNOEVEQThMUVJRUUZTSUNRZ0EzQWdRZ0FrSElqQk0yQWdBZ0FrS0FnSUNBb0FNM0Fnd2dBU0FDTmdKc0RBNExRUlFRRlNJQ1FnQTNBZ1FnQWtIQWloTTJBZ0FnQWtLQWdJQ0FrQU0zQWd3Z0FTQUNOZ0pzREEwTFFSUVFGU0lDUWdBM0FnUWdBa0c0aUJNMkFnQWdBa0tBZ0lDQThBSTNBZ3dnQVNBQ05nSnNEQXdMUVJRUUZTSUNRZ0EzQWdRZ0FrR3doaE0yQWdBZ0FrS0FnSUNBNEFJM0Fnd2dBU0FDTmdKc0RBc0xRUlFRRlNJQ1FnQTNBZ1FnQWtHb2hCTTJBZ0FnQWtLQWdJQ0EwQUkzQWd3Z0FTQUNOZ0pzREFvTElBRWdBMEVBRURnaUJEWUNHRUVnRUJVaEFpQURRUUVRT0NFRElBSkNnSUNBZ01BQ053SU1JQUpDQURjQ0JDQUNRUUEyQWh3Z0FpQUROZ0lZSUFJZ0JEWUNGQ0FDUVpTckV6WUNBQ0FCSUFJMkFtd2dCVUhFQUdvZ0FVRVlhaUlDSUFGQjdBQnFFTG9ISUFFb0Ftd2hBeUFGUWRBQWFpQUNFTkFCSUFNMkFnQU1Cd3RCR0JBVklRSWdBMEVBRURnaEJDQUNRb0NBZ0lDd0FqY0NEQ0FDUWdBM0FnUWdBaUFFTmdJVUlBSkJqS2tUTmdJQUlBRWdBallDYkF3SUMwRVVFQlVpQWtJQU53SUVJQUpCb0lJVE5nSUFJQUpDZ0lDQWdLQUNOd0lNSUFFZ0FqWUNiQXdIQzBFVUVCVWlBa0lBTndJRUlBSkJtSUFUTmdJQUlBSkNnSUNBZ0pBQ053SU1JQUVnQWpZQ2JBd0dDMEVVRUJVaUFrSUFOd0lFSUFKQmtQNFNOZ0lBSUFKQ2dJQ0FnSUFDTndJTUlBRWdBallDYkF3RkMwRVVFQlVpQWtJQU53SUVJQUpCaVB3U05nSUFJQUpDZ0lDQWdQQUJOd0lNSUFFZ0FqWUNiQXdFQ3lBQklBTkJBQkE0TmdKWUlBVkIwQUJxSWdjZ0FVSFlBR29RcVFJaEFpQUZJQUVvQWxnUTZRRWhDQ0FCUVFBMkFpQWdBVUlBTndNWUlBSkJBRWNoQkVFQklRSURRQ0FERU1nQklBSk5CRUFnQVVFa0VCVWdDQ0FCUVJocUVLa1hOZ0pzSUFSQkFYRWlBZ1JBSUFFZ0F4QmdOZ0pvSUFWQnhBQnFJQUZCNkFCcUlnUWdBVUhzQUdvUXVnY2dBU2dDYkNFSUlBRWdBeEJnTmdKb0lBY2dCQkRRQVNBSU5nSUFJQUVvQW13YUN5QUJRUmhxRURJYUlBSkZEUVVNQmdVZ0FTQURJQUlRT0NJTE5nSm9JQUVnQlNBTEVPa0JOZ0pJSUFKQkFXb2hBaUFCUVJocUlBRkJ5QUJxRVAwQ0lBY2dBVUhvQUdvUXFRSkJBRWNnQkhJaEJBd0JDd0FMQUFzZ0FTQURRUUVRT0NJQ05nSVlJQUZCSEJBVklBVWdBaERwQVNBRFFRQVFPQkNXRGpZQ2JDQUZRZEFBYWlJQ0lBRkJHR29RcVFKRkJFQWdBU0FERUdBMkFsZ2dBaUFCUWRnQWFoRFhCd3dEQ3lBQklBTVFZRFlDV0NBRlFjUUFhaUFCUWRnQWFpSUVJQUZCN0FCcUVMb0hJQUVvQW13aEJ5QUJJQU1RWURZQ1dDQUNJQVFRMEFFZ0J6WUNBQXNnQVNnQ2JCb01BZ3RCSUJBVklRSWdBVUVJYWlJRUlBTkJBQkNQQlJDL0JpQUNRZ0EzQWdRZ0FrS0FnSUNBd0FFM0Fnd2dBa0dFcHhNMkFnQWdBaUFFS1FJQU53SVVJQUlnQkNnQ0NEWUNIQ0FFRUZVZ0FTQUNOZ0pzSUFRUUR4b0xJQUVnQXhCZ0lnSTJBbWdnQWtVTkFTQUJLQUpzUlEwQ0lBRkJHR29nQlNnQ0JCRGVDQ0FDRU5zS0lBRW9BaHdoQWlBQktBSVlJUVFEUUNBQ0lBUkdCRUFnQVNBQktBSnNOZ0pJSUFGQjJBQnFJQVZCTUdvZ0FVSElBR29Rd1FJZ0FTZ0NXQ2dDQ0NFQ0lBVkJDR29nQVVIb0FHb1EwQUVnQWpZQ0FDQUJLQUpvSVFJZ0FTQUJLQUpZS0FJSU5nSVVJQVZCSEdvZ0FVRVVhaENmRGlBQ05nSUFJQUVvQWtnaEFpQUJRUUEyQWtnZ0FTZ0NiQm9nQWdSQUlBSWdBaWdDQUNnQ0JCRURBQXNnQVVFWWFoQXlHZ1VnQlNBRUtBSUFJQUVvQW13UXhCY2dCRUVFYWlFRURBRUxDd3NnQVVId0FHb2tBQXdDQ3lBRktBSUFJUUFnQVVFQU5nSWdJQUZDN2dZM0F4Z2dBRUVCUWNhbEFpQUJRUmhxUWRIbUJCRFBCRUVCRUFNQUN5QUZLQUlBSVFBZ0FVRUFOZ0lnSUFGQzhBWTNBeGdnQUVFQlFjYWxBaUFCUVJocVFmZzhFTThFUVFFUUF3QUxJQVpCQkdvaEJnd0JDd0FMQUFzRklBa2dCaWdDQUNJRUVHQTJBZ2dnQWlBSlFRaHFFTkFCSUFRMkFnQWdCa0VFYWlFR0RBRUxDeUFKUVNCcUpBQWdEVUVBTmdJSUlBQkJ6QUZxSUFVUWdCa2dEVUVJYWhEL0dDQUFJQUFvQW14QmdJQUNjallDYkNBTlFSQnFKQUFMSUFBb0Fzd0JDN2dDQWdSL0FuNENRQUpBQWtBQ1FDQUREZ01DQWdBQkN5QUJRUWhySWdFcEF3QWlDaUFBS1FNQUlndGFEUUVnQUNBS053TUFJQUVnQ3pjREFBOExJQU5CZ0FGTUJFQUNRQ0FBSWdJZ0FTSUVSZzBBSUFJaEFRTkFJQUZCQ0dvaUFTQUVSZzBCSUFFcEF3QWhDaUFCSVFBRFFBSkFBa0FnQUNBQ1JnUkFJQUloQUF3QkN5QUtJQUJCQ0dzaUF5a0RBQ0lMVkEwQkN5QUFJQW8zQXdBTUFnc2dBQ0FMTndNQUlBTWhBQXdBQ3dBTEFBc1BDeUFESUFOQkFYWWlCMnNoQ0NBQUlBZEJBM1FpQ1dvaEJpQURJQVZLRFFFZ0FDQUdJQUlnQnlBRUVLMFpJQVlnQVNBQ0lBZ2dCQ0FKYWlJQkVLMFpJQVFnQVNBQklBUWdBMEVEZEdvZ0FCQ3NHUXNQQ3lBQUlBWWdBaUFISUFRZ0JSRGdDQ0FHSUFFZ0FpQUlJQVFnQlJEZ0NDQUFJQVlnQVNBQ0lBY2dDQ0FFSUFVUWdBOExDZ0FnQUVIWTlnOFFTQXRJQVFGL1FSQVFGU0VFSUFBZ0FVRUlhallDQkNBQUlBUTJBZ0FnQXlnQ0FDZ0NBQ0VCSUFSQkFEWUNEQ0FFSUFFMkFnZ2dBRUVCT2dBSUlBUkJBRFlDQUNBRUlBSTJBZ1FMRGdBZ0FDQUJLQUlBSUFJUWxSa0xRd0VCZlNBQktnSUFJUUlqQUVFUWF5SUJKQUFnQVNBQ3V6a0RDQ0FCUVFFMkFnUWdBQ0FBUWRnQ2FpQUJRUWhxSUFGQkJHb1ErZ29oQUNBQlFSQnFKQUFnQUFzTkFDQUFJQUVnQWtFUEVOa0pDNnNCQVFKL0l3QkJNR3NpQXlRQUFrQUNRQUpBSUFJb0FnQWlCRVVOQUNBQ0tBSUVSUTBBSUFRb0FnUkI0TXNTUncwQkN5QUFJQUlRV3hvTUFRc2dBU2dDQkJEc0F5RUVJQU1nQVNnQ0NDSUJRUVJxRUxRTE5nSW9JQUlvQWdRaEFpQURRUUUyQWhRZ0F5QUNOZ0lNSUFNZ0EwRU1hallDRUNBRElBTXBBeEEzQXdBZ0FDQUVJQUVnQTBFb2FpQURRUmhxSUFNUWx3SWlBQkNMQ3hCcEdpQUFFS2dCQ3lBRFFUQnFKQUFMTmdFQmZ5TUFRUkJySWdNa0FDQURJQUFnQVJEQ0JqWUNEQ0FBSUFCQjJBSnFJQU5CREdvZ0FoQ2lDeUVBSUFOQkVHb2tBQ0FBQ3hJQUlBQW9BZ2dnQVNBQ0lBTWdCQkRWR1F2TEF3RUVmd0pBQWtBQ1FDQUNEZ01DQWdBQkN5QUJRUVJySWdFb0FnQWlBaWdDQ0NBQUtBSUFJZ01vQWdoUERRRWdBQ0FDTmdJQUlBRWdBellDQUF3QkN5QUNRWUFCVEFSQUlBQWdBVVlOQVNBQUlRSURRQ0FDUVFScUlnSWdBVVlOQWlBQ0tBSUFJUVVnQWlFREEwQUNRQUpBSUFBZ0EwWUVRQ0FBSVFNTUFRc2dCU2dDQ0NBRFFRUnJJZ1FvQWdBaUJpZ0NDRWtOQVFzZ0F5QUZOZ0lBREFJTElBTWdCallDQUNBRUlRTU1BQXNBQ3dBTElBSWdBa0VCZGlJR2F5RUhJQUFnQmtFQ2RDSUlhaUVGSUFJZ0JFd0VRQ0FBSUFVZ0JpQURFSzRaSUFVZ0FTQUhJQU1nQ0dvaUFSQ3VHU0FESUFKQkFuUnFJUVFnQVNFQ0EwQWdBU0FEUmdSQUEwQWdBaUFFUmcwRUlBQWdBaWdDQURZQ0FDQUFRUVJxSVFBZ0FrRUVhaUVDREFBTEFBc2dBaUFFUmdSQUEwQWdBU0FEUmcwRUlBQWdBeWdDQURZQ0FDQUFRUVJxSVFBZ0EwRUVhaUVEREFBTEFBVUNRQ0FDS0FJQUlnVW9BZ2dnQXlnQ0FDSUdLQUlJU1FSQUlBQWdCVFlDQUNBQ1FRUnFJUUlNQVFzZ0FDQUdOZ0lBSUFOQkJHb2hBd3NnQUVFRWFpRUFEQUVMQUFzQUN5QUFJQVVnQmlBRElBUVE2UWdnQlNBQklBY2dBeUFFRU9rSUlBQWdCU0FCSUFZZ0J5QURJQVFRZ1E4TEMrVURBZ1YvQVg0akFFRVFheUlISkFBQ1FBSkFBa0FnQXc0REFnSUFBUXNnQWlBQlFRaHJJZ0VnQUJEb0EwVU5BU0FBS1FJQUlRc2dBQ0FCS1FJQU53SUFJQUVnQ3pjQ0FBd0JDeUFEUVlBQlRBUkFJQUFnQVVZTkFTQUFJUVVEUUNBRlFRaHFJZ1VnQVVZTkFpQUhJQVVwQWdBM0F3Z2dCU0VFQTBBQ1FBSkFJQUFnQkVZRVFDQUFJUVFNQVFzZ0FpQUhRUWhxSUFSQkNHc2lBeERvQXcwQkN5QUVJQWNwQXdnM0FnQU1BZ3NnQkNBREtRSUFOd0lBSUFNaEJBd0FDd0FMQUFzZ0F5QURRUUYySWdocklRa2dBQ0FJUVFOMElncHFJUVlnQXlBRlRBUkFJQUFnQmlBQ0lBZ2dCQkNwR1NBR0lBRWdBaUFKSUFRZ0Ntb2lBUkNwR1NBRUlBTkJBM1JxSVFVZ0FTRURBMEFnQVNBRVJnUkFBMEFnQXlBRlJnMEVJQUFnQXlrQ0FEY0NBQ0FBUVFocUlRQWdBMEVJYWlFRERBQUxBQXNnQXlBRlJnUkFBMEFnQVNBRVJnMEVJQUFnQkNrQ0FEY0NBQ0FBUVFocUlRQWdCRUVJYWlFRURBQUxBQVVDUUNBQ0lBTWdCQkRvQXdSQUlBQWdBeWtDQURjQ0FDQURRUWhxSVFNTUFRc2dBQ0FFS1FJQU53SUFJQVJCQ0dvaEJBc2dBRUVJYWlFQURBRUxBQXNBQ3lBQUlBWWdBaUFJSUFRZ0JSRHFDQ0FHSUFFZ0FpQUpJQVFnQlJEcUNDQUFJQVlnQVNBQ0lBZ2dDU0FFSUFVUS93NExJQWRCRUdva0FBdlpBd0VFZndKQUFrQUNRQ0FERGdNQ0FnQUJDeUFDSUFGQkJHc2lBU2dDQUNBQUtBSUFFT2tEUlEwQklBQW9BZ0FoQWlBQUlBRW9BZ0EyQWdBZ0FTQUNOZ0lBREFFTElBTkJnQUZNQkVBZ0FDQUJSZzBCSUFBaEF3TkFJQU5CQkdvaUF5QUJSZzBDSUFNb0FnQWhCaUFESVFRRFFBSkFBa0FnQUNBRVJnUkFJQUFoQkF3QkN5QUNJQVlnQkVFRWF5SUZLQUlBRU9rRERRRUxJQVFnQmpZQ0FBd0NDeUFFSUFVb0FnQTJBZ0FnQlNFRURBQUxBQXNBQ3lBRElBTkJBWFlpQjJzaENDQUFJQWRCQW5RaUNXb2hCaUFESUFWTUJFQWdBQ0FHSUFJZ0J5QUVFTGdaSUFZZ0FTQUNJQWdnQkNBSmFpSUJFTGdaSUFRZ0EwRUNkR29oQlNBQklRTURRQ0FCSUFSR0JFQURRQ0FESUFWR0RRUWdBQ0FES0FJQU5nSUFJQUJCQkdvaEFDQURRUVJxSVFNTUFBc0FDeUFESUFWR0JFQURRQ0FCSUFSR0RRUWdBQ0FFS0FJQU5nSUFJQUJCQkdvaEFDQUVRUVJxSVFRTUFBc0FCUUpBSUFJZ0F5Z0NBQ0FFS0FJQUVPa0RCRUFnQUNBREtBSUFOZ0lBSUFOQkJHb2hBd3dCQ3lBQUlBUW9BZ0EyQWdBZ0JFRUVhaUVFQ3lBQVFRUnFJUUFNQVFzQUN3QUxJQUFnQmlBQ0lBY2dCQ0FGRU9zSUlBWWdBU0FDSUFnZ0JDQUZFT3NJSUFBZ0JpQUJJQUlnQnlBSUlBUWdCUkNDRHdzTHVPa0JBekovQVg0Q2ZTTUFRWUFJYXlJTUpBQUNmMEVCSUFJdEFBQU5BQm9nREVIb0FHb2lCRUtBZ0lDQXdBQTNBaFFnQkNBRU5nSVFJQVFnQVVHd0FXb1FzaDBnQkNnQ0VDRUlJQVFvQWhRaEJ5QU1JQUEyQXVnR0lBeEJBRFlDMkFjZ0IwR0JBVTRFUUNBTVFaQUZhaUFIRVBVWklBd29BcFFGSVFVZ0RFSFlCMm9nRENnQ2tBVWlBeEJzQ3lBSUlBZ2dCMEVDZEdvZ0RFSG9CbW9nQnlBRElBVVE2d2dnREVIWUIyb1Fpd0VnREVHUUJXb2dCQkMwSFNFRElBUVFYaUFBUWNBR2FpRUZJQU1vQWhBaUJDQURLQUlVUVFKMGFpRUpJQXhCZ0FGcUlRMERRQUpBSUFRZ0NVWUVRQ0FERUY0Z0FTZ0NBQ0lEUVF4cUlTc2dBMEVRYWlFRUlBTVExd1FoTENBREVPWUtJUzBNQVFzZ0RDQUVLQUlBSWdjMkF0Z0hJQUFvQWhBZ0J4Q1VBU0lIUlFSQUlBeEI2QUJxUWJtaEJVR1pHa0VISUF4QjZBWnFFQjBpQ0JBWElRb2dEVUhabXdnUURob2dDaEFZSUFnUUhnc2dBQ2dDQUNBSEVIcEJBQkNGQVNFSElBeEJBRFlDZUNBTVFnQTNBM0FnREVJQU53Tm9JQUFvQWdBaENpQU1RZ0EzQTZBSElBeENBRGNEcUFjZ0RFSUFOd093QnlBTVFnQTNBNWdISUF4Q0FEY0R5QWNnREVLQWdJQ0FnQUUzQXJ3SElBd2dERUdZQjJvaUNEWUN1QWNnRENBS0lBd29BdGdIUVFCQkFDQUhRUUFnQ0JENUNqWUM2QVlnQUNBQUlBeEI2QUJxSWdvZ0RFSG9CbW9pQmhDU0N4REpBUm9nQ0JBaklBd2dBQ2dDQkNBSFFRQkJBQkNiQ3pZQzZBWWdDaUFGSUF4QjJBZHFJQVlRN2dnZ0JFRUVhaUVFREFFTEN3SkFBMEFnQkNnQ0FDSUlJQ3RHRFFFQ1FBSkFJQWdnTEVZZ0NDQXRSbklOQUNBSUtBSVVJZ05CTzBZZ0EwSDRBVVp5RFFCQkFDRUhJd0JCb0FKcklnMGtBQUpBSUFBb0Fod29BZ0F0QUFCRkRRQWdDQkJnSVNJQ1FDQUlFSG9pQTBVTkFDQUFLQUlBSWdRb0FxQUdJQU5HQkVBZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBHcHJ3d1FHU0VFSUExQjZBQnFJZ01nQ0JCWUlBUWdBeEJOS0FJQUxRQUFRUUJISVFjZ0F4QVBHZ3dDQ3lBRElBUW9BckFHUncwQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQjNLNE1FQmtoQkNBTlFlZ0FhaUlESUFnUVdDQUVJQU1RVFNnQ0FDMEFBRUVBUnlFSElBTVFEeG9NQVFzQ1FBSkFJQUFnSWhDVUFpSVlSUVJBSUFBb0Fod2hCQXdCQ3lBTlFaZ0NhaEJuSVJ4QkFTRUhJQmdvQWpRTkFpQU5RZWdBYWlFS1FRQWhCa0VBSVFSQkFDRVFJd0JCa0FGcklna2tBQUpBSUFnUVlFVUVRQ0FLRUdjYURBRUxJQWdvQWhRaEJRSkFJQWdRZWtVTkFDQUFLQUlBSUFnUWVrRUFFSVVCSWdRTkFDQUFLQUljSWdNb0FnQkJBRG9BQUNBRFFaSHpDeEFaSVFRZ0NVRXdhaUlESUFnUVdDQUVJQU1RVFJvZ0F4QVBHaUFLRUdjYURBRUxRUTRoQXdKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRWUFCYXc1SURRMEFBQUVCQWdJQ0F3NERBdzRCQVFFQkFRNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0JBVUlCdzRPQkFVSkNRb0tDd3NNREFRT0JRNExEZ2tPREE0S0RnNE9EZzRPQ0FZSERndEJEeUVEREF3TFFSQWhBd3dMQzBFUklRTU1DZ3RCRWlFRERBa0xRUVloQXd3SUMwRUhJUU1NQnd0QkF5RUREQVlMUVFFaEF3d0ZDMEVDSVFNTUJBdEJDU0VEREFNTFFRc2hBd3dDQzBFSUlRTU1BUXRCQ2lFREN5QUpJQU0yQW93QklBbEJnQUZxSUFBZ0NFRUFFRzRnQUNnQ0FDRU9JQWtvQW9BQklRWWdDVUV3YWlJRklBQWdDRUVCRUc0Z0NVSDRBR29oQ3lNQVFTQnJJZ01rQUFKQUFrQWdCaER1QXlJR0lBVW9BZ0FRN2dOR0RRQWdDQ2dDRkNJUFFhb0JheUlRUVIxTlFRQkJBU0FRZEVHRGdJREFBM0ViUlFSQUlBOUJnQUZySWc5QkJFdEJBU0FQZEVFVmNVVnlEUUVMSUFOQkFEWUNHQ0FEUWdBM0F4QWdBMElBTndNSUlBc2dCaUFPUVNCcUlnc2dBMEVJYWlBR0lBc2dCaWdDQUNnQ0NCRUJBQ0FGUVFScUVOWUVFR2thREFFTElBc2dCUkJiR2dzZ0EwRWdhaVFBQWtBQ1FDQUpLQUtBQVVVTkFDQUpLQUtFQVVVTkFDQUpLQUo0UlEwQUlBa29BbndOQVFzZ0NoQm5HZ3dDQ3lBSlFVQnJRUUEyQWdBZ0NVSUFOd000SUFsQ0FEY0RNQ0FKUVRCcUlnTWdCQ0FBSUFNZ0NVR01BV29nQ1VHQUFXcEJCSElnQ1VINEFHcEJCSElRNkFnUWFTRURJQW9nQUNnQ0FDQUpRZkFBYWlBREVGc2dDQ0FKS0FLQUFSQzlCZ3dCQ3lBSlFRQTJBb3dCSUFsQkF6WUNiQUpBSUFrQ2YwRURJQVZCL2dCclFRSkpEUUFhSUFWQnlBRkhCRUFnQlVHb0FVY05Ba0VFREFFTFFRRUxOZ0pzSUFsQmdBRnFJZ01nQUNBSVFRQVFiaUFKUVVCclFRQTJBZ0FnQ1VJQU53TTRJQWxDQURjRE1DQUpRVEJxSWdVZ0JDQUFJQVVnQ1VIc0FHb2dBMEVFY2hEWUJ4QnBJUU1nQ2lBQUtBSUFJQWxCNEFCcUlBTVFXeUFJSUFrb0FvQUJFTDBHREFFTFFjSVRJUU1DUUFKQUFrQUNRQUpBSUFWQm1nRnJEZ1FFQUFFQ0F3dEJ6djRDSVFNTUF3dEJ2dlFDSVFNTUFndEJ4c0VESVFNTUFRc2dCVUhVQUVjRVFDQUZFSTRMSWdOQmYwY0VRQUpBSUFOQkxFY0VRQ0FEUVNGSERRRWpBRUdnQVdzaUF5UUFJQWdvQWhRUWpnc1F5UU1oQkNBRFFRQTJBcGdCSUFOQ0FEY0RrQUVnQTBJQU53T0lBU0FBS0FJSUlnVVFIQ0FESUFRMkFvQUJJQU1nQkJEY0FUWUNoQUVnQXlBREtRT0FBVGNERUNBRFFTaHFJZ1FnQlVHSUFtb2dBMEVRYWhDWUF5QURJQUFnQTBHSUFXb2lCU0FFRUlvTE5nS2NBU0FEUWZnQWFpQUFJQWhCQUJCdUlBTkI2QUJxSWdZZ0FDQUlRUUVRYmlBRFFmQUFhaUFBSUFZUWlBc2dBMEhZQUdvaUJpQUFJQWhCQWhCdUlBTkI0QUJxSUFBZ0JoQ0lDeUFBS0FJSUlRWWdBMEVETmdJa0lBTWdBeWdDZkRZQ2lBRWdBeUFES0FKME5nS01BU0FESUFNb0FtUTJBcEFCSUFNZ0JUWUNJQ0FESUFNcEF5QTNBd2dnQmlBRFFad0JhaUFFSUFOQkNHb1FzZ2tpQkJDSkN5RUZJQVFRSXdKQUlBQW9BZ0FnQ0JCNlFRQVFoUUVpQkVVRVFDQUFLQUljSWdRb0FnQkJBRG9BQUNBRVFiMkFEQkFaSVFVZ0EwRW9haUlFSUFnUVdDQUZJQVFRVFJvZ0JCQVBHaUFLRUdjYURBRUxJQU5CS0dvZ0JDQUZFR2toQkNBS0lBQW9BZ0FnQTBFWWFpQUVFRnNnQ0NBREtBSjRFTDBHQ3lBRFFhQUJhaVFBREFVTEl3QkJvQUZySWdNa0FDQUlLQUlVRUk0TEVNa0RJUVFnQTBFQU5nS1lBU0FEUWdBM0E1QUJJQU5DQURjRGlBRWdBQ2dDQ0NJRkVCd2dBeUFFTmdLQUFTQURJQVFRM0FFMkFvUUJJQU1nQXlrRGdBRTNBd2dnQTBFZ2FpSUVJQVZCaUFKcUlBTkJDR29RbUFNZ0F5QUFJQU5CaUFGcUlnVWdCQkNLQ3pZQ25BRWdBMEg0QUdvZ0FDQUlRUUFRYmlBRFFmQUFhaUFBSUFoQkFSQnVJQU5CNEFCcUlnWWdBQ0FJUVFJUWJpQURRZWdBYWlBQUlBWVFpQXNnQTBIUUFHb2lCaUFBSUFoQkF4QnVJQU5CMkFCcUlBQWdCaENJQ3lBQUtBSUlJUVlnQTBFRU5nSWNJQU1nQXlnQ2ZEWUNpQUVnQXlBREtBSjBOZ0tNQVNBRElBTW9BbXcyQXBBQklBTWdBeWdDWERZQ2xBRWdBeUFGTmdJWUlBTWdBeWtER0RjREFDQUdJQU5CbkFGcUlBUWdBeEN5Q1NJRUVJa0xJUVVnQkJBakFrQWdBQ2dDQUNBSUVIcEJBQkNGQVNJRVJRUkFJQUFvQWh3aUJDZ0NBRUVBT2dBQUlBUkJ2WUFNRUJraEJTQURRU0JxSWdRZ0NCQllJQVVnQkJCTkdpQUVFQThhSUFvUVp4b01BUXNnQTBFZ2FpQUVJQVVRYVNFRUlBb2dBQ2dDQUNBRFFSQnFJQVFRV3lBSUlBTW9BbmdRdlFZTElBTkJvQUZxSkFBTUJBdEJBQ0VFSXdCQjRBQnJJZ01rQUNBSUtBSVVFSTRMRU1rRElRVWdBMEVBTmdKWUlBTkNBRGNEVUNBRFFnQTNBMGdnQUNnQ0NDSUdFQndnQXlBRk5nSkFJQU1nQlJEY0FUWUNSQ0FESUFNcEEwQTNBd0FnQTBFUWFpSUZJQVpCaUFKcUlBTVFtQU1nQXlBQUlBTkJ5QUJxSWdZZ0JSQ0tDellDWENBRFFvQ0FnSUNBQVRjQ05DQURJQVUyQWpBZ0JrRUVjaUVGUVFBaEJnTkFJQWdReUFFZ0JFMEVRQ0FBS0FJSUlBTkIzQUJxSUFOQkVHb1FpUXNoQkFKQUlBQW9BZ0FnQ0JCNlFRQVFoUUVpQlVVRVFDQUFLQUljSWdRb0FnQkJBRG9BQUNBRVFiMkFEQkFaSVFVZ0EwSElBR29pQkNBSUVGZ2dCU0FFRUUwYUlBUVFEeG9nQ2hCbkdnd0JDeUFEUWNnQWFpQUZJQVFRYVNFRUlBb2dBQ2dDQUNBRFFRaHFJQVFRV3lBSUlBWVF2UVlMSUFOQkVHb1FJeUFEUWVBQWFpUUFCU0FEUWNnQWFpQUFJQWdnQkJCdUlBTW9Ba2doQ3lBRFFSQnFJQVVRSkNBRVFRRnFJUVFnQmlBTElBWWJJUVlNQVFzTERBTUxJQVZCalFGR0JFQWpBRUVnYXlJREpBQWdBMEVZYWlBQUlBaEJBQkJ1SUFOQkVHb2dBQ0FJUVFFUWJnSkFBa0FDUUNBREtBSVlSUTBBSUFNb0FoeEZEUUFnQXlnQ0VFVU5BQ0FES0FJVURRRUxJQW9RWnhvTUFRc2dBeUFBS0FJSUlBTkJHR3BCQkhJaUJDQURRUkJxUVFSeUlnVVExQmsyQWd3Z0F5QUFLQUlJUVpYVUFTQURRUXhxRU9jSU5nSUlJQU1nQUNnQ0NDQUZJQU5CQ0dvUXh3TTJBZ1FnQUNnQ0NDQUVJQU5CQkdvUTVRZ2hCQ0FLSUFNb0FoZ2dCQkJwR2dzZ0EwRWdhaVFBREFNTElBVkJ3UUJyUVFGTkJFQWpBRUh3QVdzaUJTUUFBa0FnQ0JESUFVVUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRYVhCQVJBWkdpQUtFR2NhREFFTElBQWdDRUVBRURnaUF4RHRDQ0lFQkVBZ0FDQUlFR0FRbEFJZ0JEWUNOQ0FBSUFNUWxBSWhBeUFBSUFnUVlCQ1VBa0VrYWlBRFFTUnFFRnNhSUFvUVp4b01BUXNnQUNnQ0VDQURFSlFCRUhvaEJpQUlFTWdCSVJNZ0JVSG9BV29RWnlFTFFRRWhCQ0FBS0FJQUlnNG9BcndHSUFOR0JFQWdBQ2dDRUNBSVFRRVFPQkNVQVNJRVJRUkFJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkI1UHdMRUJraEJDQUZRUWhxSWdNZ0NCQllJQVFnQXhCTkdpQURFQThhSUFvUVp4b01BZ3NnQUNnQ0ZDQUVFSUlZSWdSRkJFQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSFM0UXNRR1NFRUlBVkJDR29pQXlBSUVGZ2dCQ0FERUUwYUlBTVFEeG9nQ2hCbkdnd0NDeUFFSUFRb0FnQW9BamdSQUFBaUJFVUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRYXY0Q3hBWklRUWdCVUVJYWlJRElBZ1FXQ0FFSUFNUVRSb2dBeEFQR2lBS0VHY2FEQUlMSUFVZ0JCQzdEaUkxTndPb0FRSkFJRFVnRGpVQ3BBWlJEUUFDUUNBT05RS29CaUExVVFSQUlBQWdDQkJnRUpRQ0lnUkZEUUlnQkVFRE5nSTBEQUVMSUFBb0Fod2lBeWdDQUVFQU9nQUFJQU5CM2Z3SkVCa2dCVUdvQVdvUS9BNUJvUFFFRUJrYUN5QUtFR2NhREFJTElBNG9BcmdHSVFZZ0JVRUlhaUFBS0FJZ0lBTVFrd0lRVkNFRElBc2dBQ2dDQ0NBREVOSUNOZ0lFSUFzZ0FDZ0NBQ0FHUVFFUWhRRTJBZ0FnQXhBUEdrRUNJUVFMQWtBZ0N5Z0NBQVJBSUFzb0FnUU5BUXNnQlVFSWFpSURJQUFnQ0VFQUVHNGdDeUFERUZzYUlBc29BZ0FvQWdSQitNc1NSdzBBSUFWQkNHb2lBeUFBSUFWQjRBRnFJQXNRV3hEREJpQUxJQU1RV3hvTElBQW9BaFFoRWtFQUlROGpBRUVRYXlJREpBQWdCVUhRQVdvaURrRUFOZ0lJSUE1Q0FEY0NBQ0FPSUFnUXlBRVFxd1FEUUNBSUVNZ0JJQTlMQkVBQ1FDQUlJQThRandVaUVTZ0NBRUVCUndSQUlBTkJBRFlDRENBT0lBTkJER29RL1FJTUFRc2dBeUFTSUJFb0FoZ2lGQ0FSUVF4cUlCUWJLQUlBS0FJQUVKSUZOZ0lJSUE0Z0EwRUlhaERQQVFzZ0QwRUJhaUVQREFFTEN5QURRUkJxSkFBQ1FBSkFJQUFvQWhBZ0JoQ1VBU0lEQkVBZ0F5Z0NGRUVnUmcwQkN5QUFLQUljSWdNb0FnQkJBRG9BQUNBRFFZU2JDUkFaSVFNZ0JTQUlFR0EyQWdnZ0F5QUZRUWhxRUM5QjF2OERFQmthSUFvUVp4b01BUXNnQzBFRWFpRVJJQU5CQUJBNElSUWdCU0FEUVFFUU9DSU9OZ0xNQVNBVElBUWdCQ0FUU1JzaEZTQUZRU0JxSVJZZ0JVR29BV3BCQkhJaEV5QUVJUU1EUUFKL0FrQWdBeUFWUndSQUlBVW9BdEFCSUFOQkFuUnFLQUlBSWdaRkRRRWdCaUFHS0FJQUtBSTRFUUFBSWc5RkRRRUNmZ0pBSUE4b0FnUWlCaUFHS0FJQUtBSW9FUUFBSWdZRVFDQUdLQUlVSWhKQndRQlBEUUVDZmdKQUlBOGdEeWdDQUNnQ09CRUFBQ0lHQkVBZ0VrRWdTdzBCSUFZUWd4aXNEQVVMUWdBZ0R5QVBLQUlBS0FKWUVRQUFEUUVhUWRPeENVRzJtUUpCakFGQjk5VURFQUFBQ3lBR0lBWW9BZ0FvQW1BUkFBQWlEeWdDQkNBUEtBSUFhMEVJUndSQVFiaUZCMEhRcVFOQjBnRkI5TlFERUFBQUN5QUdJQVlvQWdBb0FtQVJBQUFvQWdBMUFnUkNJSVlnQmlBR0tBSUFLQUpnRVFBQUtBSUFOUUlBaEFzTUFndEI5OGNCUWJhWkFrSC9BRUgzMVFNUUFBQUxRY2p6QmtHMm1RSkJnUUZCOTlVREVBQUFDeUUxUVFBTUFnc2dFQVJBSUFBZ0NCQmdFSlFDUVFJMkFqUWdBQ0FJRUdBUWxBSkJKR29nQ3hCYkdnc2dDeUFBSUFzb0FnQWdDQkJnRUl3UE5nSUFJQW9nQ3hCYkdnd0RDMElBSVRWQkFRc2hCaUFGSURVM0E4QUJJQUFvQWhBZ0RoQ1VBU0lQUlFSQUlBQW9BaHdpQmlnQ0FFRUFPZ0FBSUFaQmw1d0pFQmtnQlVITUFXb1FMMEhwcVFvUUdTRUdJQVVnQXlBRWF6WUNxQUVnQmlBRlFhZ0JhaEF2UVpmc0N4QVpJUVFnQlVFSWFpSURJQWdRV0NBRUlBTVFUUm9nQXhBUEdpQUtFR2NhREFJTEFrQUNRQUpBQWtBQ1FDQVBLQUlVUVJkckRnZ0FBd0lDQWdNREFRSUxBbjhnQmtVRVFDQUZJQTlCQVJBNElnWTJBcWdCSUFVcEE4QUJJalVnQnExVUJFQWdOVUlFV2dSQUlBQW9BaHdpQmlnQ0FFRUFPZ0FBSUFaQjFNTUpFQmtnQlVIQUFXb1FoUTlCNjlzSkVCa2hCaUFGUVFNMkFnZ2dCaUFGUVFocUVDOGFJQVVwQThBQklUVUxJQVZCQURZQ0dDQUZRZ0EzQXhBZ0JVSUFOd01JSUFVZ0FDQTFweERoQlRZQ3ZBRWdBQ0FGUVFocUlCRWdCVUc4QVdvUWxBVU1BZ3NnQUNnQ0hDSUVLQUlBUVFBNkFBQWdCRUdFbXdrUUdTRUVJQVVnQ0JCZ05nSUlJQVFnQlVFSWFoQXZRZnVhQ1JBWklRUWdCU0FJSUFNUU9EWUN2QUVnQkNBRlFid0JhaEF2UWRPMUNoQVpJQVZCd0FGcUVJVVBRWUd1Q2hBWklBVkJxQUZxRUM5QjhvY0JFQmthSUFvUVp4b01Cd3NnQlVFQU5nSVlJQVZDQURjREVDQUZRZ0EzQXdnZ0JVR29BV29nQUNBSUlBTVFiaUFBSUFWQkNHb2dFU0FURU9JRkN5RUdJQVVnRDBFQUVEZ2lEallDekFGQkFTRVFEQU1MSUFZRVFDQUFLQUljSWdRb0FnQkJBRG9BQUNBRVFZU2JDUkFaSVFRZ0JTQUlFR0EyQWdnZ0JDQUZRUWhxRUM5Qis1b0pFQmtoQkNBRklBZ2dBeEE0TmdLb0FTQUVJQVZCcUFGcUVDOUJ0WnNKRUJrZ0JVSE1BV29RTHhvZ0NoQm5HZ3dGQ3lBRklBOFF5QUVpQmpZQ3ZBRWdCU2tEd0FFaU5VSUFVeUExSUFhdFduSkZCRUFnQlVHb0FXb2lFaUFBS0FJZ0lBNGdOYWNROVFnZ0FDZ0NDQ0VHSUFWQkFEWUNHQ0FGUWdBM0F4QWdCVUlBTndNSUlBWWdCVUVJYWlBUklCSVFod3NoQmlBRklBOGdCU2dDd0FFUU9DSU9OZ0xNQVNBU0VBOGFEQU1MSUFBb0Fod2lBeWdDQUVFQU9nQUFJQU5CaEpzSkVCa2hBeUFGSUFnUVlEWUNDQ0FESUFWQkNHb1FMMEczdFFvUUdTQUZRY0FCYWhDRkQwR1Rtd2tRR1NBRlFjd0JhaEF2UVlhcUNoQVpJQVZCdkFGcUVDOUIzcG9CRUJrYUlBb1FaeG9NQkFzZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBIeW13a1FHU0FGUWN3QmFoQXZRZTIxREJBWklRUWdCVUVJYWlJRElBOFFXQ0FFSUFNUVRSb2dBeEFQR2lBS0VHY2FEQU1MSUFWQkFEWUNHQ0FGUWdBM0F4QWdCVUlBTndNSUlBVkJxQUZxSUFBZ0NDQURFRzRnQUNBRlFRaHFJQkVnRXhEaUJTRUdJQVVnRDBFQUVEZ2lEallDekFFTElBQW9BaGdnRGlBVUVNQVhJUThDUUNBQUtBSUFJQTlCQVJDRkFTSVBCRUFnRHlnQ0JFR1F6QkpHRFFFTElBVkJDR3BCdWFFRlFhVWpRUWNnQlVHb0FXb1FIU0lTRUJjaEZ5QVdRYm50Q0JBT0dpQVhFQmdnRWhBZUN5QUxJQVZCQ0dvZ0R5QUdFR2tRV3hvZ0EwRUJhaUVEREFBTEFBc2dCVUhRQVdvUU1ob0xJQVZCOEFGcUpBQU1Bd3NnQlVIOEFFWUVRQ0FBS0FJSUlRTWdDVUZBYTBFQU5nSUFJQWxDQURjRE9DQUpRZ0EzQXpBZ0JDQURJQVFvQWdBb0FnZ1JBUUFoQlNBSlFZQUJhaUlHSUFBZ0NFRUFFRzRnQ2lBRUlBTWdDVUV3YWlBRklBWkJCSElRMWdRUWFSb01Bd3NnQlVIQ0FXc2lBMEVDVFFSQUlBbEJnQUZxSUFBZ0NFRUFFRzRnQUNnQ0FDRUZJQWxCS0dvaUJpQUFJQWhCQVJCdUlBbEIrQUJxSUFVZ0JoQ0hHUUpBQWtBQ1FBSkFJQU1PQXdFQ0FBTUxJQWxCRERZQ2pBRU1BZ3NnQ1VFd2FpSURJQUFvQWdBZ0NVRWdhaUFKUVlBQmFpSUZFRnNRaHhrZ0JTQURFRnNhSUFsQkRUWUNqQUVNQVFzZ0NVRXdhaUVHSUFBb0FnQWhEaUFKUVJocUlBbEJnQUZxSWc4UVd5RUZJd0JCSUdzaUF5UUFBa0FDUUNBRktBSUFJZ3RGRFFBZ0N4RDNDRVVOQUNBT0lBVW9BZ0FRaVJraEN5QURRUUEyQWhnZ0EwSUFOd01RSUFOQ0FEY0RDQ0FHSUFzZ0RrRWdhaUlPSUFOQkNHb2dDeUFPSUFzb0FnQW9BZ2dSQVFBZ0JVRUVhaERXQkJCcEdnd0JDeUFHSUFVUVd4b0xJQU5CSUdva0FDQVBJQVlRV3hvZ0NVRU5OZ0tNQVFzZ0NVRkFhMEVBTmdJQUlBbENBRGNET0NBSlFnQTNBekFnQ1VFUWFpQUVJQUFnQ1VFd2FpQUpRWXdCYWlBSlFZQUJha0VFY2lBSlFmZ0Fha0VFY2hEb0NCQnBJUU1nQ2lBQUtBSUFJQWxCQ0dvZ0F4QmJJQWdnQ1NnQ2dBRVF2UVlNQXd0QkJ5RURBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FGUWJVQmF3NExCZ3dCREFJTUJBd0REQVVBQ3lBRlFjMEFhdzRGQ1FzSUJnY0tDMEVHSVFNTUJBdEJDeUVEREFNTFFRa2hBd3dDQzBFS0lRTU1BUXRCQ0NFREN5QUpJQU0yQWhBZ0NVR0FBV29pQXlBQUlBaEJBQkJ1SUFsQitBQnFJZ1VnQUNBSVFRRVFiaUFKUVVCcklnWkJBRFlDQUNBSlFnQTNBemdnQ1VJQU53TXdJQWtnQUNBSlFUQnFJZ3NnQ1VFUWFpQURRUVJ5SUFWQkJISVE2QWcyQWdRZ0JrRUFOZ0lBSUFsQ0FEY0RPQ0FKUWdBM0F6QWdDVUVFTmdJQUlBb2dCQ0FBSUFzZ0NTQUpRUVJxRU5nSEVHa2FEQWtMSUFsQ2dJQ0FnSUFCTndKVUlBa2dDVUV3YWpZQ1VDQUpRWUFCYWtFRWNpRUZRUUFoQXdKQUFrQURRQ0FJRU1nQklBTk5EUUVnQ1VHQUFXb2dBQ0FJSUFNUWJnSkFJQWtvQW9BQlJRMEFJQWtvQW9RQlJRMEFJQWxCTUdvZ0JSQWtJQU5CQVdvaEF3d0JDd3NnQ2hCbkdnd0JDeUFKSUFRZ0FDZ0NDQ0lESUFRb0FnQW9BZ2dSQVFBMkFvQUJJQW9nQkNBRElBbEJnQUZxSUFsQk1Hb1EzQWNRYVJvTElBbEJNR29RSXd3SUN5TUFRUkJySWdNa0FDQURRUWhxSUFBZ0NFRUFFRzRDUUFKQUlBTW9BZ2dFUUNBREtBSU1EUUVMSUFvUVp4b01BUXNnQ0VFQUVEZ2hCQ0FBS0FJUUlBUVFsQUVRZWlFRUlBb2dBQ0FJSUFNZ0EwRUlhaEJiSUFSQkFSRFhHUXNnQTBFUWFpUUFEQWNMSXdCQmdBSnJJZ01rQUNBSVFRQVFPQ0VPSUFoQkFSQTRJUThnQUNnQ0VDQU9FSlFCSVFRZ0FDZ0NFQ0FQRUpRQklRVWdBQ2dDR0NBRUVIb1E2UUVpQkNBRUtBSUFLQUkwRVFBQUtBSVlJUXNnQUNnQ0dDQUZFSG9RNlFFaUJDQUVLQUlBS0FJMEVRQUFLQUlZSVFVZ0EwSG9BV29nQUNBSUVPTUlJQUFvQWdBZ0NCQjZRUUFRaFFFaUJBUkFJQVJCQUNBRUtBSUVRYWpNRWtZYklRWUxJQU5DZ0lDQWdJQUJOd0xjQVNBRklBdHFJUkVnQXlBRFFiZ0JhallDMkFFZ0EwRUVjaUVRSUFOQkdHb2hFMEVDSVFRQ1FBSkFBMEFnQ0JESUFTQUVTd1JBSUFNZ0NDQUVFRGdpQlRZQ3RBRUNRQ0FGSUF0SkJFQWdBeUFBSUE0UWxnTUNRQ0FES0FJQVJRMEFJQU1vQWdSRkRRQWdBeUFBSUFVUTRRVTJBckFCSUFNZ0FDQURRZWdCYWlBUUlBTkJzQUZxRUpRRk5nS2dBU0FEUWJnQmFpQURRYUFCYWhBa0RBSUxJQW9RWnhvTUJRc2dCU0FSU1FSQUlBVWdDMnNpQlVFRVR3UkFJQU5CdWFFRlFla2tRUWNnQTBHZ0FXb1FIU0lTRUJjaEZDQVRRZGEwQ0JBT0dpQVVFQmdnRWhBZUN5QURJQUFnRHhDV0F3SkFJQU1vQWdCRkRRQWdBeWdDQkVVTkFDQURJQUFnQlJEaEJUWUNzQUVnQXlBQUlBTkI2QUZxSUJBZ0EwR3dBV29RbEFVMkFxQUJJQU5CdUFGcUlBTkJvQUZxRUNRTUFnc2dDaEJuR2d3RkN5QUZRWDlIRFFNZ0F5QUFLQUlBSUFZb0FnZ1Frd1EyQWdBZ0EwRzRBV29nQXhBa0N5QUVRUUZxSVFRTUFRc0xJQU1nQmlBQUtBSUlJZ1FRK2dnMkFnQWdDaUFHSUFRZ0EwSG9BV29nQXlBRFFiZ0JhaENWQkJCcEdnd0JDeUFBS0FJY0lnUW9BZ0JCQURvQUFDQUVRY0NjQ1JBWklRUWdBeUFJRUdBMkFnQWdCQ0FERUM5QnRxVU1FQmtnQTBHMEFXb1FMeG9nQ2hCbkdnc2dBMEc0QVdvUUl5QURRWUFDYWlRQURBWUxJQWxCUUd0QkFEWUNBQ0FKUWdBM0F6Z2dDVUlBTndNd0lBbEJnQUZxSWdNZ0FDQUlRUUFRYmlBSlFmZ0FhaUlGSUFBZ0NFRUJFRzRnQ2lBRUlBQWdDVUV3YWlBRFFRUnlJQVZCQkhJUTRnVVFhUm9NQlFzZ0JVRU1SZzBCQ3lBRlFlMEFhMEVEVFFSQUl3QkI0QUJySWdNa0FDQUlLQUlVSVFZZ0FDZ0NBQ0FJRUhwQkFCQ0ZBU0VFSUFOQjJBQnFJQUFnQ0VFQUVHNENRQUpBSUFNb0FsZ2lCUVJBSUFNb0Fsd05BUXNnQ2hCbkdnd0JDeUFESUFVUTdnTWlCVFlDV0FKQUFrQUNmeUFHUWU4QWEwRUJUUVJBSUFRZ0JSRDRDQTBCR2lBQUtBSWNJZ1FvQWdCQkFEb0FBQ0FFUWJieUN4QVpJUVVnQTBFb2FpSUVJQWdRV0NBRklBUVFUUm9nQkJBUEdnd0RDd0pBQWtBZ0JrSHRBR3NPQWdBQkJBc2dCUkNtRHdSQUlBQW9BZ0FnQXlnQ1dCQ0lHUXdDQ3lBQUtBSWNJZ1FvQWdCQkFEb0FBQ0FFUWNMdkN4QVpJUVVnQTBFb2FpSUVJQWdRV0NBRklBUVFUUm9nQkJBUEdnd0RDeUFGRUtZUFJRMEJJQUFvQWdBZ0F5Z0NXQkNKR1FzaUJVVU5BU0FEUW9DQWdJQ0FBVGNDVENBRElBTkJLR29pQmpZQ1NDQUdJQU5CMkFCcVFRUnlFQ1FnQUNnQ0NDRUxJQU5CQ0dvaURpQUFJQWdRNHdnZ0F5QUZJQUFvQWdnZ0JTZ0NBQ2dDQ0JFQkFEWUNBQ0FEUVNCcUlBVWdDeUFPSUFNZ0JoQ1ZCQkJwSVFZQ1FDQUVJQVZHQkVBZ0NpQUdFRnNhREFFTElBQW9BZ2doQlNBRFFRaHFJZ3NnQUNBSUVPTUlJQW9nQkNBRklBc2dCQ0FBS0FJSUlBUW9BZ0FvQWdnUkFRQWdCa0VFYWhEV0JCQnBHZ3NnQTBFb2FoQWpEQUlMSUFBb0Fod2lCQ2dDQUVFQU9nQUFJQVJCbC9BTEVCa2hCU0FEUVNocUlnUWdDQkJZSUFVZ0JCQk5HaUFFRUE4YUN5QUtFR2NhQ3lBRFFlQUFhaVFBREFRTEFrQUNRQ0FGUWFrQlJ3UkFJQVZCeEFCR0RRRWdCVUVCUncwQ0lBb2dBQ2dDQUNBRUVQVUtEQVlMSXdCQjBBQnJJZ01rQUNBRFFjZ0FhaUFBSUFoQkFCQnVJQU5CUUdzZ0FDQUlRUUVRYmlBRFFUaHFJQUFnQ0VFQ0VHNENRQUpBQWtBZ0F5Z0NRQkR1QXlJRktBSUVRYWpNRWtZTkFDQUZFS2NQRFFBZ0JSQ2xEdzBBSUFVb0FnUkJtTXNTUncwQkN5QURRb0NBZ0lDQUFUY0NMQ0FESUFOQkNHb2lCRFlDS0NBRUlBTkJPR3BCQkhJUUpDQUVJQU5CUUd0QkJISVFKQ0FFSUFOQnlBQnFRUVJ5RUNRZ0NpQUZJQUFvQWdoQjMvRUFJQVFRNHhrUWFSb2dCQkFqREFFTElBb1FaeG9MSUFOQjBBQnFKQUFNQlFzakFFRkFhaUlESkFBQ1FDQUlFTWdCUVFKSEJFQWdBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFSDE3QXNRR1NFRklBTkJDR29pQkNBSUVGZ2dCU0FFRUUwYUlBUVFEeG9nQ2hCbkdnd0JDeUFJUVFBUU9DRUVJQWhCQVJBNElRVWdBQ2dDRUNBRUVKUUJFSG9oQmlBQUtBSVFJQVlRbEFGQkFSQTRJUVlnQTBFd2FpQUFLQUlnSUFZZ0JSRDFDQUpBSUFNb0FqUWdBeTBBT3lJRklBVkJHSFJCR0hWQkFFZ2JSUVJBSUFBb0Fod2lCQ2dDQUVFQU9nQUFJQVJCNG9jTUVCa2hCU0FEUVFocUlnUWdDQkJZSUFVZ0JCQk5HaUFFRUE4YUlBb1FaeG9NQVFzZ0EwRW9haUFBSUFRUWxnTUNRQ0FES0FJb0lnUUVRQ0FES0FJc0RRRUxJQW9RWnhvTUFRc2dCQ2dDQkVINHl4SkdCRUFnQTBFSWFpSUVJQUFnQTBFZ2FpQURRU2hxSWdVUVd4RERCaUFGSUFRUVd4b0xJQUFvQWdnaEJDQURRUUEyQWhnZ0EwSUFOd01RSUFOQ0FEY0RDQ0FESUFRZ0EwRUlhaUlFSUFOQktHcEJCSElnQTBFd2FoQ0hDellDSENBRElBQW9BZ2dpQlNBRFFSeHFFTjRITmdJSUlBVkJyNk1ESUFRUTV3Z2hCQ0FLSUFBb0FnQWdDQkI2UVFBUWhRRWdCQkJwR2dzZ0EwRXdhaEFQR2dzZ0EwRkFheVFBREFRTElBb1FaeG9NQXdzZ0FDZ0NBQ0FJRUpBWkJFQWdDaEJuR2d3REN5QUFLQUlBSUFnUStBcEZCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdyd1FzUUdTRURJQWtnQ0VFQUVEZzJBakFnQXlBSlFUQnFFQzhhSUFvUVp4b01Bd3NqQUVHQUEyc2lCU1FBSUFVZ0NFRUJFRGdpQXpZQy9BSUNRQ0FEUVRWR0JFQWdCVUdZQVdvZ0FDQUlRUUlRYmlBRlFmQUNhaUlESUFBZ0NFRURFRzRnQlVId0FHb2dBQ0FERU5ZSElBQW9BZ2doQXlBRlFRSTJBdXdDSUFVb0FwZ0JJUVFnQlNBRktBS2NBVFlDV0NBRklBVW9BblEyQWx3Z0JTQUZRZGdBYWpZQzZBSWdCU0FGS1FQb0FqY0RDQ0FLSVRNZ0JDRXdJQVZCeUFGcUlBVkJDR29RdFFJaEJDTUFRUkJySWc0a0FDQU9JQU5CcHBFQ0VNSUdOZ0lNSXdCQklHc2lCaVFBSUFZZ0RpZ0NERFlDSENBRElBTkIyQUpxSVRJZ0JrRWNhaUV2SXdCQkVHc2lDeVFBSUFaQkNHb2lBMEtBZ0lDQUlEY0NEQ0FESUFNMkFnZ2dDeUFFUVFocU5nSUlJQXNnQkNnQ0NDQUVSem9BRENBRElBdEJDR29RMVIwZ0MwRVFhaVFBSURJZ0x5QURFS29QSVFzZ0F4Q3FBU0FHUVNCcUpBQWdEa0VRYWlRQUlETWdNQ0FMRUdrYUlBUVFxZ0VNQVFzQ1FDQUFLQUlBSUFnUWVrRUFFSVVCSWdzUW93OEVRQUpBQWtBQ1FBSkFBa0FnQTBIRkFHc09CQUVDQXdRQUN5QURRU0ZIRFFVZ0JVSHdBR29nQUNBSVFRSVFiaUFGS0FKd0tBSUVRY0RNRWtjRVFDQUZRY2dCYWtHNW9RVkJqUjlCQnlBRlFaZ0JhaEFkSWdNUUZ5SUVRUmhxUWFqcUNCQU9HaUFFRUJnZ0F4QWVDeUFLSUFBb0FnUVFsZ1VnQUNnQ0NFR0c0d0FnQlVId0FHcEJCSElRNXdnUWFSb01CZ3NnQUNnQ0JCQ1dCU0VESUFBb0FnZ2hCQ0FGUVlDQWdQd0ROZ0xJQVNBS0lBTWdCQ0FGUWNnQmFoRGtDQkJwR2d3RkN5QUZRY0FCYWlBQUlBaEJBaEJ1SUFWQnVBRnFJQUFnQ0VFREVHNGdCVUd3QVdvZ0FDQUlRUVFRYmlBRktBTEFBU2dDQkVISXl4SkhCRUFnQlVISUFXcEJ1YUVGUVo4ZlFRY2dCVUdZQVdvUUhTSURFQmNpQkVFWWFrSFU3Z2dRRGhvZ0JCQVlJQU1RSGdzZ0JTZ0N1QUVvQWdSQnlNc1NSd1JBSUFWQnlBRnFRYm1oQlVHZ0gwRUhJQVZCbUFGcUVCMGlBeEFYSWdSQkdHcEJwdTRJRUE0YUlBUVFHQ0FERUI0TElBVW9BckFCS0FJRVFjakxFa2NFUUNBRlFjZ0Jha0c1b1FWQm9SOUJCeUFGUVpnQmFoQWRJZ01RRnlJRVFSaHFRWUR2Q0JBT0dpQUVFQmdnQXhBZUN5QUFLQUlFRUpZRklRWWdBQ2dDQ0NFRUlBVkJBRFlDcUFFZ0JVSUFOd09nQVNBRlFnQTNBNWdCSUFWQkFEWUNnQUVnQlVJQU53TjRJQVZDQURjRGNDQUZRUU0yQW13Z0JTQUFJQVZCOEFCcUlBVkI3QUJxSUFWQndBRnFRUVJ5RU5nSE5nS0VBU0FGSUFVb0FzUUJOZ0tJQVNBRlFRQTJBbWdnQlVJQU53TmdJQVZDQURjRFdDQUZRUWcyQWxRZ0FDZ0NDQ0VMSUFWQkFEWUNTQ0FGUVVCclFnQTNBd0FnQlVJQU53TTRJd0JCRUdzaUF5UUFJQU5CRURZQ0RDQURJQVZCdUFGcVFRUnlLQUlBTmdJSUlBTWdCVUd3QVdwQkJISW9BZ0EyQWdRZ0N5QUZRVGhxSUFOQkRHb2dBMEVJYWlBRFFRUnFFTlVaSVFzZ0EwRVFhaVFBSUFVZ0N6WUNVQ0FBS0FJSUlRTWdCVUVBTmdJd0lBVWdBeUFGUVRCcUVPUUlOZ0kwSUFBZ0JVSFlBR29nQlVIVUFHb2dCVUhRQUdvZ0JVRTBhaERvQ0NFRElBVkJBellDbEFFZ0JTQUROZ0tNQVNBRklBVkJoQUZxTmdLUUFTQUZJQVVwQTVBQk53TVFJQW9oTkNBR0lURWdCVUhJQVdvZ0JVRVFhaER5QmlFR0l3QkJJR3NpQXlRQUlBTWdCRUhmOFFBUXdnWTJBaHdnQkNBRlFaZ0JhaUFEUVJ4cUlBTWdCaENMR1NJRUVPd09JUXNnQkJDc0F5QURRU0JxSkFBZ05DQXhJQXNRYVJvZ0JoQ3NBd3dFQ3lBRlFmQUFhaUFBSUFoQkFoQnVJQVZCMkFCcUlBQWdDRUVERUc0Z0JTZ0NjQ2dDQkVISXl4SkhCRUFnQlVISUFXcEJ1YUVGUWJVZlFRY2dCVUdZQVdvUUhTSURFQmNpQkVFWWFrR203Z2dRRGhvZ0JCQVlJQU1RSGdzZ0JTZ0NXQ2dDQkVISXl4SkhCRUFnQlVISUFXcEJ1YUVGUWJZZlFRY2dCVUdZQVdvUUhTSURFQmNpQkVFWWFrSFU3Z2dRRGhvZ0JCQVlJQU1RSGdzZ0FDZ0NCQkNXQlNFR0lBQW9BZ2doQkNBRlFZQ0FnSUFFTmdLWUFTQUZJQVFnQlVIWUFHcEJCSElpQXlBRlFmQUFha0VFY2lJTEVNY0ROZ0tFQVNBRklBUWdBeUFGUVlRQmFoREhBellDT0NNQVFSQnJJZ01rQUNBRFFSQTJBZ3dnQXlBRUlBVkJtQUZxRU9RSU5nSUlJQU1nQlNnQ09EWUNCQ0FFSUFOQkRHb2dBMEVJYWlBRFFRUnFFSVlMSVE0Z0EwRVFhaVFBSUFVZ0RqWUN5QUVnQ2lBR0lBUWdDeUFGUWNnQmFoRGxDQkJwR2d3REN5QUZRZkFBYWlBQUlBaEJBaEJ1SUFWQjJBQnFJQUFnQ0VFREVHNGdCVUU0YWlBQUlBaEJCQkJ1SUFVb0FuQW9BZ1JCeU1zU1J3UkFJQVZCeUFGcVFibWhCVUhHSDBFSElBVkJtQUZxRUIwaUF4QVhJZ1JCR0dwQnB1NElFQTRhSUFRUUdDQURFQjRMSUFVb0FsZ29BZ1JCeU1zU1J3UkFJQVZCeUFGcVFibWhCVUhISDBFSElBVkJtQUZxRUIwaUF4QVhJZ1JCR0dwQjFPNElFQTRhSUFRUUdDQURFQjRMSUFVb0FqZ29BZ1JCeU1zU1J3UkFJQVZCeUFGcVFibWhCVUhJSDBFSElBVkJtQUZxRUIwaUF4QVhJZ1JCR0dwQnF1OElFQTRhSUFRUUdDQURFQjRMSUFBb0Fod29BZ0F0QUFCRkJFQWdDaEJuR2d3REN5QUFLQUlJSVFNZ0JTZ0NPQ0VMSUFWQkFEWUN3QUVnQlNBRElBVkI4QUJxUVFSeUlBVkJ3QUZxRU5JWk5nS1lBU0FBS0FJSUlRUWdCVUVBTmdLNEFTQUVJQVZCMkFCcVFRUnlJQVZCdUFGcUVOSVpJUVFnQlVFRE5nSXNJQVVnQkRZQ25BRWdCU0FGS0FJOE5nS2dBU0FGSUFWQm1BRnFOZ0lvSUFVZ0JTa0RLRGNER0NBRlFjZ0JhaUFGUVJocUVQSUdJUVlqQUVFUWF5SUVKQUFnQkNBRFFjajNBQkRDQmpZQ0RDQURJQU5CMkFKcUlBUkJER29nQmhEUUdTRU9JQVJCRUdva0FDQUZJQTQyQW9RQklBb2dDeUFESUFWQmhBRnFRZG9uRU1nYUVHa2FJQVlRckFNTUFnc2dBMEVpUncwQUl3QkIwQUpySWdNa0FDQURRY2dDYWlBQUlBaEJBaEJ1SUFNb0FzZ0NJZ1JCQUNBRUtBSUVRY0RNRWtZYklndEZCRUFnQTBHWUFXcEJ1YUVGUVlJZ1FRY2dBMEc0QW1vUUhTSUVFQmNpQmtFWWFrR09tUWdRRGhvZ0JoQVlJQVFRSGdzZ0N5Z0NEQ0FMS0FJUVJ3UkFJQU5CbUFGcVFibWhCVUdESUVFSElBTkJ1QUpxRUIwaUJCQVhJZ1pCR0dwQjRwOElFQTRhSUFZUUdDQUVFQjRMSUFNZ0FDZ0NDQ0lFTmdLUUFTQURJQU5CeUFKcUlnODJBcFFCSUFOQmdJQ0EvQU0yQXJnQ0lBTkJBRFlDcUFFZ0EwSUFOd09nQVNBRFFnQTNBNWdCSXdCQklHc2lCaVFBSUFZZ0JFR0c0d0FRd2dZMkFod2dCa0VJYWlJT0lBOUJCSElRNEFjZ0JDQURRWmdCYWlJUElBWkJIR29nRGhDeUR5RVFJQTRRcUFFZ0JrRWdhaVFBSUFNZ0VEWUNpQUVqQUVFUWF5SUdKQUFnQmtFUk5nSU1JQVlnQkNBRFFiZ0NhaERrQ0RZQ0NDQUdJQU1vQW9nQk5nSUVJQVFnQmtFTWFpQUdRUWhxSUFaQkJHb1FoZ3NoRGlBR1FSQnFKQUFnQXlBT05nS01BU0FFRUJ3Z0EwRUJOZ0tFQVNBRFFZM0dBVFlDZ0FFZ0F5QURLUU9BQVRjRENDQVBJQVJCaUFKcUlBTkJDR29RbndRZ0FDQUVJQVFnRHlBRFFZd0JhaENuQ3hEUENoREpBUm9nQXlBRU5nS0lBU0FESUFRMkFuZ2dBeUFFTmdKd0FrQUNRQUpBQWtBQ1FDQUxLQUlNUVFKckRnTUFBUUlEQ3lBRElBTkJrQUZxSWdaQkFFRUFFT01CTmdLNEFpQURJQVpCQUVFQkVPTUJOZ0pzSUFNZ0JrRUJRUUFRNHdFMkFtZ2dBeUFHUVFGQkFSRGpBVFlDWkNBRElBUWdBMEdZQVdvaUJpQURRZVFBYWhDRkN6WUNYQ0FESUFRZ0JoRE9HVFlDVkNBRElBUWdBMEhVQUdvZ0EwSHNBR29ReHdNMkFsZ2dBeUFFSUFOQjNBQnFJQU5CMkFCcUVNMFpOZ0pnSUFNZ0JDQUdFTTRaTmdKSUlBTWdCQ0FEUWNnQWFpQURRZWdBYWhESEF6WUNUQ0FESUFRZ0JpQURRYmdDYWhDRkN6WUNSQ0FESUFRZ0EwSE1BR29nQTBIRUFHb1F6UmsyQWxBakFFRVFheUlHSkFBZ0JDZ0NCRUhZQW1vaERpTUFRUkJySWdza0FDQUxJQVJCQkdvaUR4RGtCellDQ0NBUElBNUIvL2NHSUF0QkNHb1FwUXNoRGlBTFFSQnFKQUFnQmlBT05nSUlJQVFnQkVIWUFtb2dCa0VJYWlBRFFlQUFhaUFEUWRBQWFoQ3JEeUVFSUFaQkVHb2tBQ0FLSUFNb0FzZ0NJQVFRYVJvTUF3c2dBMEdRQVdvaUJrRUFRUUFRNHdFaERpQUdRUUJCQVJEakFTRVBJQVpCQUVFQ0VPTUJJUkFnQmtFQlFRQVE0d0VoRVNBR1FRRkJBUkRqQVNFVElBWkJBVUVDRU9NQklSSWdCa0VDUVFBUTR3RWhGQ0FHUVFKQkFSRGpBU0VWSUFNZ0EwR0lBV29pQ3lBVElBWkJBa0VDRU9NQklnWWdFaUFWRVBJQk5nSm9JQU1nQ3lBUUlCVWdEeUFHRVBJQk5nSmtJQU1nQ3lBUElCSWdFQ0FURVBJQk5nSmdJQU1nQkNBRFFlZ0FhaUFEUWVRQWFpQURRZUFBYWhDRUR6WUNiQ0FESUFzZ0VpQVVJQkVnQmhEeUFUWUNXQ0FESUFzZ0RpQUdJQkFnRkJEeUFUWUNWQ0FESUFzZ0VDQVJJQTRnRWhEeUFUWUNVQ0FESUFRZ0EwSFlBR29nQTBIVUFHb2dBMEhRQUdvUWhBODJBbHdnQXlBTElCRWdGU0FUSUJRUThnRTJBa2dnQXlBTElBOGdGQ0FPSUJVUThnRTJBa1FnQXlBTElBNGdFeUFQSUJFUThnRTJBa0FnQXlBRUlBTkJ5QUJxSUFOQnhBQnFJQU5CUUdzUWhBODJBa3dqQUVFUWF5SUdKQUFnQkNnQ0JFSFlBbW9oRGlNQVFSQnJJZ3NrQUNBTElBUkJCR29pRHhEa0J6WUNDQ0FQSUE1QnkvWUdJQXRCQ0dvUXBRc2hEaUFMUVJCcUpBQWdCaUFPTmdJSUlBUWdCRUhZQW1vZ0JrRUlhaUFEUWV3QWFpQURRZHdBYWlBRFFjd0FhaENtR1NFTElBWkJFR29rQUNBRElBczJBcmdDSUFRZ0EwR1lBV29nQTBHNEFtb1FoUXNoQkNBS0lBTW9Bc2dDSUFRUWFSb01BZ3NnQXlBRFFaQUJhaUlMUVFCQkFCRGpBU0l1TmdLNEFpQURJQXRCQUVFQkVPTUJOZ0pzSUF0QkFFRUNFT01CSVE0Z0MwRUFRUU1RNHdFaER5QURJQXRCQVVFQUVPTUJJaEkyQW1nZ0MwRUJRUUVRNHdFaEVDQUxRUUZCQWhEakFTRVJJQXRCQVVFREVPTUJJUk1nQzBFQ1FRQVE0d0VoRkNBTFFRSkJBUkRqQVNFVklBdEJBa0VDRU9NQklSWWdDMEVDUVFNUTR3RWhGeUFMUVFOQkFCRGpBU0VaSUF0QkEwRUJFT01CSVJzZ0MwRURRUUlRNHdFaEdpQURRWWdCYWlJR0lCWWdDMEVEUVFNUTR3RWlDeUFYSUJvUThnRWhIU0FHSUJVZ0N5QVhJQnNROGdFaEhpQUdJQlVnR2lBV0lCc1E4Z0VoSHlBR0lCRWdDeUFUSUJvUThnRWhJeUFHSUJBZ0N5QVRJQnNROGdFaEpDQUdJQkFnR2lBUklCc1E4Z0VoSlNBR0lCRWdGeUFUSUJZUThnRWhKaUFHSUJBZ0Z5QVRJQlVROGdFaEp5QUdJQkFnRmlBUklCVVE4Z0VoS0NBR0lCUWdDeUFYSUJrUThnRWhJQ0FHSUJRZ0dpQVdJQmtROGdFaElTQUdJQklnQ3lBVElCa1E4Z0VoS1NBR0lCSWdHaUFSSUJrUThnRWhHaUFHSUJJZ0Z5QVRJQlFROGdFaEZ5QUdJQklnRmlBUklCUVE4Z0VoS2lBR0lCUWdHeUFWSUJrUThnRWhGaUFHSUJJZ0d5QVFJQmtROGdFaEdTQUdJQklnRlNBUUlCUVE4Z0VoRWlBRElBTkIrQUJxSWdZZ0VDQWRJQkVnSGlBVElCOFE0QVUyQWx3Z0F5QURRZkFBYWlJTElBUWdBMEhzQUdvUTN3VWdIU0FPSUI0Z0R5QWZFTjRGTmdKWUlBTWdCaUFES0FKc0lDTWdEaUFrSUE4Z0pSRGdCVFlDVkNBRElBc2dCQ0FEUWV3QWFoRGZCU0FtSUE0Z0p5QVBJQ2dRM2dVMkFsQWdBeUFFSUFOQjNBQnFJQU5CMkFCcUlBTkIxQUJxSUFOQjBBQnFFSVFMTmdKZ0lBTWdDeUFFSUFOQjZBQnFFTjhGSUIwZ0VTQWdJQk1nSVJEZUJUWUNTQ0FESUFZZ0xpQWRJQTRnSUNBUElDRVE0QVUyQWtRZ0F5QUxJQVFnQTBHNEFtb1Ezd1VnSXlBT0lDa2dEeUFhRU40Rk5nSkFJQU1nQmlBREtBSzRBaUFtSUE0Z0Z5QVBJQ29RNEFVMkFqd2dBeUFFSUFOQnlBQnFJQU5CeEFCcUlBTkJRR3NnQTBFOGFoQ0VDellDVENBRElBWWdBeWdDYUNBZUlCQWdJQ0FUSUJZUTRBVTJBalFnQXlBTElBUWdBMEc0QW1vUTN3VWdIaUFES0FKc0lDQWdEeUFXRU40Rk5nSXdJQU1nQmlBREtBSzRBaUFrSUFNb0Ftd2dLU0FQSUJrUTRBVTJBaXdnQXlBTElBUWdBMEc0QW1vUTN3VWdKeUFES0FKc0lCY2dEeUFTRU40Rk5nSW9JQU1nQkNBRFFUUnFJQU5CTUdvZ0EwRXNhaUFEUVNocUVJUUxOZ0k0SUFNZ0N5QUVJQU5CNkFCcUVOOEZJQjhnRUNBaElCRWdGaERlQlRZQ0lDQURJQVlnQXlnQ3VBSWdIeUFES0FKc0lDRWdEaUFXRU9BRk5nSWNJQU1nQ3lBRUlBTkJ1QUpxRU44RklDVWdBeWdDYkNBYUlBNGdHUkRlQlRZQ0dDQURJQVlnQXlnQ3VBSWdLQ0FES0FKc0lDb2dEaUFTRU9BRk5nSVVJQU1nQkNBRFFTQnFJQU5CSEdvZ0EwRVlhaUFEUVJScUVJUUxOZ0lrSXdCQkVHc2lCaVFBSUFRb0FnUkIyQUpxSVE0akFFRVFheUlMSkFBZ0N5QUVRUVJxSWc4UTVBYzJBZ2dnRHlBT1FlVHhCaUFMUVFocUVLVUxJUTRnQzBFUWFpUUFJQVlnRGpZQ0NDQUVJQVJCMkFKcUlBWkJDR29nQTBIZ0FHb2dBMEhNQUdvZ0EwRTRhaUFEUVNScUVLVVpJUXNnQmtFUWFpUUFJQU1nQ3pZQ1pDQUVJQU5CbUFGcUlBTkI1QUJxRUlVTElRUWdDaUFES0FMSUFpQUVFR2thREFFTElBaEJBUkE0SVFZZ0FDZ0NIQ0lFS0FJQVFRQTZBQUFnQkVIVzd3a1FHU0VMSUFOQnVBSnFJZ1FnQmhEUkdTQUxJQVFRVFJvZ0JCQVBHaUFLRUdjYUN5QURRZEFDYWlRQURBRUxJQVZCbUFGcUlBTVEwUmxCQUNFRUFrQWdCU2dDbkFFZ0JTMEFvd0VpQXlBRFFSaDBRUmgxUVFCSUcwVUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRY09HQ2hBWklBVkIvQUpxRUM4YUlBb1FaeG9NQVFzZ0JVS0FnSUNBZ0FFM0F1d0JJQVVnQlVISUFXbzJBdWdCSUFWQjhBQnFRUVJ5SVFOQkFpRUdBa0FEUUNBSUVNZ0JJQVpMQkVBZ0JVSHdBR29nQUNBSUlBWVFiaUFGS0FKMEJFQWdCU2dDY0NFT0lBVkJ5QUZxSUFNUUpDQUdRUUZxSVFZZ0JDQU9JQVFiSVFRTUFnVWdBQ2dDSENJREtBSUFJZ1F0QUFBRVFDQUVRUUE2QUFBZ0EwSHo1d1FRR1JvTElBb1FaeG9NQXdzQUN3c2dCVUh3QUdvZ0N5QUFLQUlJSUFWQm1BRnFJQVZCeUFGcUVONFpFR2toQXlBS0lBQW9BZ0FnQlVFZ2FpQURFRnNnQ0NBRUVMMEdDeUFGUWNnQmFoQWpDeUFGUVpnQmFoQVBHZ3NnQlVHQUEyb2tBQXdDQzBITjR3TWhBd3NnQ1NBRE5nSjRJQWxDZ0lDQWdJQUJOd0pVSUFrZ0NVRXdhaUlETmdKUUlBbEJnQUZxSWdVZ0FDQUlRUUFRYmlBRElBVkJCSElRSkNBS0lBUWdBQ2dDQ0NBSlFmZ0FhaUFERUxBUEVHa2FJQU1RSXdzZ0NVR1FBV29rQUNBY0lBb1FXeG9nQUNnQ0hDSUVLQUlBTFFBQVJRMEJJQmdvQWpRTkFpQWNLQUlFUlEwQUlCZ3RBQnhGQkVBZ0RVSG9BR3BCdWFFRlFiNGJRUWNnRFVHSUFtb1FIU0lERUJjaUJFRVlha0dqNlFnUURob2dCQkFZSUFNUUhnc0NRQUpBSUJndEFDRU5BQ0FZTFFBZ0RRQWdHQ2dDREVFQlJnMEJDeUFBSUFnZ0RVSGdBR29nSEJCYkVKVUZJUWNNQXdzZ0RTQWlOZ0pvSUExQjZBQnFJZzVCQkhJZ0hCQmJHaU1BUVJCcklnc2tBRUVBSVFjakFFRVFheUlLSkFBZ0RpZ0NBQ0VESUFzQ2Z3SkFJQUJCMUFacUlnUW9BZ1FpQlVVTkFDQUVLQUlBQW44Z0JVRUJheUFEY1NBRmFTSUdRUUZORFFBYUlBTWdBeUFGU1EwQUdpQURJQVZ3Q3lJSFFRSjBhaWdDQUNJSlJRMEFJQVZCQVdzaER5QUdRUUZMSVJBRFFDQUpLQUlBSWdsRkRRRWdBeUFKS0FJRUlnWkhCRUFDUUNBUVJRUkFJQVlnRDNFaEJnd0JDeUFGSUFaTERRQWdCaUFGY0NFR0N5QUdJQWRIRFFJTElBa29BZ2dnQTBjTkFBdEJBQXdCQzBFVUVCVWhDU0FLSUFSQkNHbzJBZ1FnQ2lBSk5nSUFJQWxCQ0dvaUJpQU9LQUlBTmdJQUlBWkJCR29nRGtFRWFoQmJHaUFLUVFFNkFBZ2dDVUVBTmdJQUlBa2dBellDQkFKQVFRQWdCU0FFS0FJTVFRRnFzeUkySUFRcUFoQWlOeUFGczVSZUd3MEFJQVFnQlNBRlFRRnJjVUVBUnlBRlFRTkpjaUFGUVFGMGNpSUhBbjhnTmlBM2xZMGlOa01BQUlCUFhTQTJRd0FBQUFCZ2NRUkFJRGFwREFFTFFRQUxJZ1VnQlNBSFNSc1F3d0VnQkNnQ0JDSUZJQVZCQVd0eFJRUkFJQVZCQVdzZ0EzRWhCd3dCQ3lBRElBVkpCRUFnQXlFSERBRUxJQU1nQlhBaEJ3c0NRQ0FIUVFKMElnY2dCQ2dDQUdvb0FnQWlBMFVFUUNBS0tBSUFJQVFvQWdnMkFnQWdCQ0FLS0FJQU5nSUlJQVFvQWdBZ0Iyb2dCRUVJYWpZQ0FDQUtLQUlBSWdNb0FnQWlCMFVOQVNBSEtBSUVJUWtDUUNBRklBVkJBV3NpQjNGRkJFQWdCeUFKY1NFSkRBRUxJQVVnQ1VzTkFDQUpJQVZ3SVFrTElBUW9BZ0FnQ1VFQ2RHb2dBellDQUF3QkN5QUtLQUlBSUFNb0FnQTJBZ0FnQXlBS0tBSUFOZ0lBQ3lBS0tBSUFJUWtnQ2tFQU5nSUFJQVFnQkNnQ0RFRUJhallDRENBS0VJc0JRUUVMT2dBTUlBc2dDVFlDQ0NBS1FSQnFKQUFnRFNBTEtBSUlOZ0tJQWlBTklBc3RBQXc2QUl3Q0lBdEJFR29rQUNBQUtBSWNLQUlBTFFBQVFRQkhJUWNNQWd0QkFDRUhJQVFvQWdBaUF5MEFBRVVOQVNBSUtBSVVJZ1ZCNXdCclFRUk5CRUJCQUNFRVFRQWhDU01BUWNBQmF5SURKQUFDUUNBQUlBZ1FqUXNpQjBVTkFDQUFJQWNRNUJraUJVVU5BQUpBQWtBQ1FBSkFJQWdvQWhRaUJFSG5BR3NPQlFBQUFRSUNBd3NnQTBLQWdJQ0FnQUUzQXJRQklBTWdBMEdRQVdvMkFyQUJJQUFnQ0JDTUN5RUhJQU5CQVRZQ1hDQURJQWMyQWtBZ0F5QURRVUJyTmdKWUlBTWdBeWtEV0RjRENDQURRZUFBYWlBRFFRaHFFTElKSVFjZ0JFSG5BRVlFUUNBRFFVQnJJZ1FnQUNBSVFRRVFiaUFISUFSQkJISVFKQXNnQXlBQUtBSUlRZENoQVNBSEVPTVpOZ0pVSUFVb0FnZ2lCRUYrY1VFRVJnUkFJQU5CQURZQ1VDQURRZ0EzQTBnZ0EwSUFOd05BSUFNZ0FFRUNFT0laTmdJNElBTWdBQ0FEUVVCcklBTkIxQUJxSUFOQk9Hb1FsQVUyQWxRTElBTkJrQUZxSUFOQjFBQnFFQ1FnQkJDekd3UkFJQUFvQWdnaEJDQURJQUFnQ0JDTUN6WUNRQ0FESUFSQm5aWUJJQU5CUUdzaUJCRG5DRFlDUUNBRFFaQUJhaUFFRUNRTElBQW9BZ0FnQ0JCNlFRQVFoUUVoQkNBRFFUaHFJZ1lnQUNBRFFUQnFJQU5CUUdzQ2Z5QUFLQUlFSVFVQ1FDQUVSUTBBSUFRb0FnUWlDa0hneXhKR0JFQWdCUkR0QXd3Q0N5QUVJQXBCc01zU1JnMEJHaUFLUWFqTUVrY05BQ0FFS0FJSUlncEZEUUFnQ2lnQ0JDSUpRZURMRWtZRVFDQUZJQVVRN1FNZ0JDZ0NEQkQvQWd3Q0N5QUVRUUFnQ1VHd3l4SkdHeUVKQ3lBSkN5SUVBbjhnQXlnQ3RBRkJBazhFUUNBRElBUWdBQ2dDQ0NJRklBUW9BZ0FvQWdnUkFRQTJBamdnQlNBRFFUaHFJQU5Ca0FGcUVOd0hEQUVMSUFNb0FyQUJLQUlBQ3hCcElnUVFXeERXQnlBRUlBWVFXeG9nQUNBSUlBTkJLR29nQkJCYkVKVUZJUVFnQnhBaklBTkJrQUZxRUNNTUF3c2dBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFSEtwUXdRR1NFRUlBTkJrQUZxSWdjZ0NCQllJQVFnQnhCTktBSUFMUUFBUVFCSElRUWdCeEFQR2d3Q0N5QURRYTZrQVVIenV3RWdCRUhxQUVZYk5nSmdJQUFvQWdnaEJDQURJQUFnQ0JDTUN6WUNrQUVnQkNBRFFlQUFhaUFEUVpBQmFoQ3BEeUVFSUFBb0FnQWdDQkI2UVFBUWhRRWlCeWdDQkVHd3l4SkhCRUFnQnlBQUtBSUlJZ1VnQnlnQ0FDZ0NDQkVCQUNFSklBTkJBVFlDSkNBRElBazJBa0FnQXlBRFFUaHFOZ0lnSUFNZ0F5a0RJRGNERUNBRElBUTJBamdnQlNBRFFVQnJJQU5Ca0FGcUlBTkJFR29RbHdJaUJSQ0xDeUVFSUFVUXFBRUxJQUFnQ0NBRFFSaHFJQU5Ca0FGcUlBY2dCQkJwRUZzUWxRVWhCQXdCQ3lBQUtBSWNJZ1FvQWdCQkFEb0FBQ0FFUWI3ZEN4QVpJUVFnQTBHUUFXb2lCeUFJRUZnZ0JDQUhFRTBvQWdBdEFBQkJBRWNoQkNBSEVBOGFDeUFEUWNBQmFpUUFJQVFoQnd3Q0MwRUJJUWNDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFWQk9Xc09Ld2dMQ3dzQ0FRTUxDd3NMQ3dzTEN3c0xDd3NMQ3dZTEN3c0hCQXNMQ3d3TURBd01EQXdNREF3TURBd0FDd0pBQWtBZ0JVSGdBV3NPRmdvTURBRUJBUUVCQVFFQkFRRUJBUUVCQVFFTURCQUFDd0pBSUFWQmt3RnJEZ1lHREE0T0RnNEFDeUFGUWI0Q2EwRUNTU0FGUWU0cmEwRUNTWElOQUNBRlJRMFBJQVZCREVZTkNpQUZRWk12UncwTEN5TUFRYUFDYXlJREpBQWdBeUFJTmdLY0FpQURJQUEyQXBnQ0lBTWdDRFlDbEFJZ0F5QUFOZ0tRQWlBRElBZzJBb3dDSUFNZ0FEWUNpQUlDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ0NnQ0ZDSUVRZU1CYXc0UUFRSURCQVFGQmdjSUNRb0xEQTBPRHdBTElBUkJ2Z0pyUVFKSklBUkI3aXRyUVFKSmNrVWdCRUdUTDBkeERROGdBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFSGgrd3NRR1NFRUlBTkIwQUZxSWdjZ0NCQllJQVFnQnhCTktBSUFMUUFBUVFCSElRUWdCeEFQR2d3UUN5QURRZEFCYWlJRUlBTkJrQUpxUVFBUTZ3RWdBMEVCTmdLRUFpQURJQVEyQW9BQ0lBTWdBeWtEZ0FJM0F3QWdBMEdZQW1wQjVnQWdBeENWQXlFRURBOExJQU5CMEFGcUlnUWdBMEdRQW1vaUIwRUFFT3NCSUFOQjJBRnFJQWRCQXhEckFTQURRUUkyQXZ3QklBTWdCRFlDK0FFZ0F5QURLUVA0QVRjRENDQURRWmdDYWtIbkFDQURRUWhxRUpVRElRUU1EZ3NnQTBIUUFXb2lCQ0FEUVpBQ2FpSUhRUUFRNndFZ0EwSFlBV29nQjBFREVPc0JJQU5CQWpZQzlBRWdBeUFFTmdMd0FTQURJQU1wQS9BQk53TVFJQU5CbUFKcVFlOEFJQU5CRUdvUWxRTWhCQXdOQ3lBRFFkQUJhaUlISUFOQmtBSnFJZ1JCQUJEckFTQURRZGdCYWlBRVFRVVE2d0VnQTBIZ0FXb2dCRUVFRU9zQklBTkJBellDN0FFZ0F5QUhOZ0xvQVNBRElBTXBBK2dCTndNWUlBTkJtQUpxUWZBQUlBTkJHR29RbFFNaEJBd01DeUFEUWRBQmFpSUVJQU5Ca0FKcVFRQVE2d0VnQTBIWUFXb2dBMEdJQW1vUTNCa2dBMEVDTmdMTUFTQURJQVEyQXNnQklBTWdBeWtEeUFFM0F5QWdBMEdZQW1wQjZBQWdBMEVnYWhDVkF5RUVEQXNMSUFOQjBBRnFJZ1FnQTBHUUFtcEJBQkRyQVNBRFFkZ0JhaUFEUVlnQ2FoRGNHU0FEUVFJMkFzUUJJQU1nQkRZQ3dBRWdBeUFES1FQQUFUY0RLQ0FEUVpnQ2FrSHBBQ0FEUVNocUVKVURJUVFNQ2dzZ0EwSFFBV29pQkNBRFFaQUNhaUlIUVFBUTZ3RWdBMEhZQVdvZ0IwRURFT3NCSUFOQkFqWUN2QUVnQXlBRU5nSzRBU0FESUFNcEE3Z0JOd013SUFOQm1BSnFRZWdBSUFOQk1Hb1FsUU1oQkF3SkN5QURRZEFCYWlJRUlBTkJrQUpxSWdkQkFCRHJBU0FEUWRnQmFpQUhRUU1RNndFZ0EwRUNOZ0swQVNBRElBUTJBckFCSUFNZ0F5a0RzQUUzQXpnZ0EwR1lBbXBCNlFBZ0EwRTRhaENWQXlFRURBZ0xJQU5CMEFGcUlnUWdBMEdRQW1vaUIwRUFFT3NCSUFOQjJBRnFJQWRCQXhEckFTQURRUUkyQXF3QklBTWdCRFlDcUFFZ0F5QURLUU9vQVRjRFFDQURRWmdDYWtIckFDQURRVUJyRUpVRElRUU1Cd3NnQTBIUUFXb2lCQ0FEUVpBQ2FpSUhRUUFRNndFZ0EwSFlBV29nQjBFREVPc0JJQU5CQWpZQ3BBRWdBeUFFTmdLZ0FTQURJQU1wQTZBQk53TklJQU5CbUFKcVFlc0FJQU5CeUFCcUVKVURJUVFNQmdzZ0EwSFFBV29pQkNBRFFaQUNhaUlIUVFBUTZ3RWdBMEhZQVdvZ0IwRURFT3NCSUFOQkFqWUNuQUVnQXlBRU5nS1lBU0FESUFNcEE1Z0JOd05RSUFOQm1BSnFRZW9BSUFOQjBBQnFFSlVESVFRTUJRc2dBMEhRQVdvaUJDQURRWkFDYWlJSFFRQVE2d0VnQTBIWUFXb2dCMEVERU9zQklBTkJBallDbEFFZ0F5QUVOZ0tRQVNBRElBTXBBNUFCTndOWUlBTkJtQUpxUWVvQUlBTkIyQUJxRUpVRElRUU1CQXNnQTBIUUFXb2lCQ0FEUVpBQ2FpSUhRUUFRNndFZ0EwSFlBV29nQjBFREVPc0JJQU5CQWpZQ2pBRWdBeUFFTmdLSUFTQURJQU1wQTRnQk53TmdJQU5CbUFKcVFld0FJQU5CNEFCcUVKVURJUVFNQXdzZ0EwSFFBV29pQkNBRFFaQUNhaUlIUVFBUTZ3RWdBMEhZQVdvZ0IwRURFT3NCSUFOQkFqWUNoQUVnQXlBRU5nS0FBU0FESUFNcEE0QUJOd05vSUFOQm1BSnFRZTBBSUFOQjZBQnFFSlVESVFRTUFnc2dBMEhRQVdvaUJDQURRWkFDYWlJSFFRQVE2d0VnQTBIWUFXb2dCMEVERU9zQklBTkJBallDZkNBRElBUTJBbmdnQXlBREtRTjROd053SUFOQm1BSnFRZTRBSUFOQjhBQnFFSlVESVFRTUFRc2dBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFSDUrd3NRR1NFRUlBTkIwQUZxSWdjZ0NCQllJQVFnQnhCTktBSUFMUUFBUVFCSElRUWdCeEFQR2dzZ0EwR2dBbW9rQUNBRUlRY01EZ3RCQUNFSElBaEJBQkE0SVFrZ0NFRUJFRGdoQkNBQUtBSVFJQWtRbEFFUWVpQUFLQUlBS0FLd0JrWUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRZnl0REJBWklRUWdEVUhvQUdvaUF5QUlFRmdnQkNBREVFMG9BZ0F0QUFCQkFFY2hCeUFERUE4YURBNExJQTFCbUFKcUlBQWdCQkNXQXlBTktBS1lBa1VORFNBTktBS2NBa1VORFNBTlFkZ0FhaEJuSVFVQ1FBSkFBa0FnQUNBSkVPMElRUU5yRGdRQUFnSUJBZ3RCQVNFSFFRQWhBd0pBSUFBb0FoUWdCQkNTQlNJRVJRMEFJQVFnQkNnQ0FDZ0NQQkVBQUNJRVJRMEFJQVFRaGc5REFBQ0FQMXNoQXdzZ0F3MFBJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkJtLzhMRUJraEJDQU5RZWdBYWlJRElBZ1FXQ0FFSUFNUVRTZ0NBQzBBQUVFQVJ5RUhJQU1RRHhvTUR3c2dEVUhvQUdvaUF5QUFJQUFvQWl3UWxnTWdCU0FERUZzYUlBVW9BZ0FvQWdSQitNc1NSZ1JBSUExQjZBQnFJZ01nQUNBTlFkQUFhaUFGRUZzUXd3WWdCU0FERUZzYUN5QU5RUUEyQW5nZ0RVSUFOd053SUExQ0FEY0RhQ0FOSUFBb0FnQWdBQ2dDQkJEc0F4Q1RCRFlDaUFJZ0JTQUFJQTFCNkFCcUlBVkJCR29nRFVHSUFtb1E0Z1UyQWdRZ0JTZ0NBQ0lFS0FJRUlnTkJrTXdTUnlBRVJYSUVmeUFEQlNBRklBUW9BZ2dpQkRZQ0FDQUVLQUlFQzBIWXpCSkhEUUFnQlNBRUtBSUlJZ00yQWdBZ0F3MEFJQTFCNkFCcVFibWhCVUdQSEVFSElBMUJpQUpxRUIwaUF4QVhJZ1JCR0dwQi9Mc0lFQTRhSUFRUUdDQURFQjRMQWtBZ0JTZ0NBQ0lFQkVBZ0JTZ0NCQ0lERFFFTElBMUI2QUJxSWdNZ0FDQUpFSllESUFVZ0F4QmJHaUFGS0FJRUlRTWdCU2dDQUNFRUN5QUVSU0FEUlhJTkRTQUVLQUlFUWZqTEVrWUVRQ0FOUWVnQWFpSURJQUFnRFVISUFHb2dCUkJiRU1NR0lBVWdBeEJiR2dzZ0RVRUFOZ0o0SUExQ0FEY0RjQ0FOUWdBM0EyZ2dBQ0FBSUExQjZBQnFJQVZCQkdvZ0RVR1lBbXBCQkhJUTVoa1F5UUVhSUFBb0Fod29BZ0F0QUFCQkFFY2hCd3dOQ3dKQUFrQUNRQ0FBSUFoQkFCQTRJZ01RN1FoQkEyc09Bd0FDQVFJTElBQWdDQkJnRUpRQ1FRUTJBalFNRGdzZ0RVR0lBbW9nQUNnQ0lDQUFLQUlvRUpNQ0VGUWhBeUFBS0FJSUlRUWdEVUVBTmdKNElBMUNBRGNEY0NBTlFnQTNBMmdnRFNBRUlBMUI2QUJxSWdRZ0F4RGtCVFlDbUFJZ0RVRUFOZ0o0SUExQ0FEY0RjQ0FOUWdBM0EyZ2dEU0FBS0FJQUlBQW9BZ1FRN0FNUWt3UTJBbGdnRFNBQUlBUWdEVUdZQW1vZ0RVSFlBR29RNGdVMkFwZ0NBa0FnQUNnQ0FDQUlFSHBCQUJDRkFTSUVFS1VQUlFSQUlBQW9BaHdpQkNnQ0FFRUFPZ0FBSUFSQndLME1FQmtoQnlBTlFlZ0FhaUlFSUFnUVdDQUhJQVFRVFNnQ0FDMEFBRUVBUnlFSElBUVFEeG9NQVFzZ0FDQUlJQTFCUUdzZ0RVSG9BR29nQkNBTktBS1lBaEJwRUZzUWp3c2hCd3NnQXhBUEdnd05DeUFOUWVnQWFpQUFJQU1RbGdNZ0RTZ0NhQ0lEUlEwTFFRQWhCeUFOS0FKc1JRME1Ba0FnQXlnQ0JDSUVRZmpMRWtZRVFDQU5RWWdDYWlJRElBQWdEVUU0YWlBTlFlZ0FhaUlFRUZzUXd3WWdCQ0FERUZzYURBRUxJQVJCa013U1J3UkFJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkIxTk1FRUJrYURBNExJQTBnQXlnQ0NEWUNhQXNnQUNBSUlBMUJNR29nRFVIb0FHb1FXeENWQlNFSERBd0xRUUFoQnlBTlFZZ0NhaUFBSUFoQkFCQnVJQTFCbUFKcUlBQWdDRUVCRUc0Z0FDZ0NIQ2dDQUMwQUFFVU5DeUFOS0FLSUFpZ0NCRUg0eXhKR0JFQWdEVUhvQUdvaUF5QUFJQTFCS0dvZ0RVR0lBbW9pQkJCYkVNTUdJQVFnQXhCYkdnc2dEU2dDbUFJb0FnUkIrTXNTUmdSQUlBMUI2QUJxSWdNZ0FDQU5RU0JxSUExQm1BSnFJZ1FRV3hEREJpQUVJQU1RV3hvTElBMUJBRFlDZUNBTlFnQTNBM0FnRFVJQU53Tm9JQUFnQUNBTlFlZ0FhaUFOUVlnQ2FrRUVjaUFOUVpnQ2FrRUVjaERtR1JESkFSb2dBQ2dDSENnQ0FDMEFBRUVBUnlFSERBc0xJQUFnQ0VFQUVEZ2lBeER0Q0NJRUJFQWdBQ0FJRUdBUWxBSWdCRFlDTkNBQUlBTVFsQUloQXlBQUlBZ1FZQkNVQWtFa2FpQURRU1JxRUZzYURBc0xJQTFCR0dvaUJDQUFJQU1RbGdNZ0RVSG9BR29nQUNBRUlBZ1FqUThnRFNnQ2FFVU5DVUVBSVFjZ0RTZ0NiRVVOQ2lBQUlBZ2dEVUVRYWlBTlFlZ0FhaEJiRUpVRklRY01DZ3RCQUNFRVFRQWhCaU1BUWFBQmF5SURKQUFnQTBHWUFXb2dBQ0FJUVFBUWJpQURRWkFCYWlBQUlBaEJBUkJ1SUFNb0FwZ0JJZ2NFUUNBSFFRQWdCeWdDQkVHb3pCSkdHeUVHQ3lBREtBS1FBU0lIQkVBZ0IwRUFJQWNvQWdSQnFNd1NSaHNoQkFzZ0RVRUlhaUVGQWtBQ1FBSkFJQUFvQWdBZ0NCQjZRUUFRaFFFaUIwVU5BQ0FHUlNBSEtBSUVJZ2xCd013U1IzSU5BQ0FIUVFBZ0NVSEF6QkpHR3lJSEtBSUlJZ2tnQmlnQ0NFY05BQ0FKSUFRb0FnaEhEUUFnQnlnQ0RDSUpJQVFvQWd4SERRQWdCeWdDRUNBR0tBSU1SZzBCQ3lBQUtBSWNJZ1FvQWdCQkFEb0FBQ0FFUWVmZ0NSQVpJUWNnQTBIZ0FHb2lCQ0FJRUZnZ0J5QUVFRTBhSUFRUUR4b2dCUkJuR2d3QkN5QURRb0NBZ0lDQUFUY0NoQUVnQXlBRFFlQUFhallDZ0FFZ0EwR1lBV3BCQkhJaEN5QURRWkFCYWtFRWNpRU9RUUFoQkFOQUlBUWdDVThFUUNBRElBY2dBQ2dDQ0NJRUVMWWFOZ0l3SUFVZ0J5QUVJQU5CTUdvZ0EwSGdBR29pQkJEY0J4QnBHaUFFRUNNTUFnc2dBMEtBZ0lDQWdBRTNBbFFnQXlBRFFUQnFOZ0pRUVFBaENTQURRUUEyQWlnZ0EwSUFOd01nSUFOQ0FEY0RHQ0FESUFBZ0JCRGhCVFlDRUNBRElBQWdBMEVZYWlBT0lBTkJFR29RbEFVMkFpd0RRQ0FIS0FJUUlBbE5CRUFnQXlBR0lBQW9BZ2dpQ1JENkNEWUNFQ0FESUFrZ0EwRVFhaUFEUVRCcUlna1EzQWMyQWhnZ0JFRUJhaUVFSUFOQjRBQnFJQU5CR0dvUUpDQUpFQ01nQnlnQ0RDRUpEQUlGSUFOQkFEWUNLQ0FEUWdBM0F5QWdBMElBTndNWUlBTWdBQ0FKRU9FRk5nSU1JQU1nQUNBRFFSaHFJZ29nQ3lBRFFReHFJZzhRbEFVMkFoQWdBMEVBTmdJb0lBTkNBRGNESUNBRFFnQTNBeGdnQTBFUU5nSU1JQU1nQUNBS0lBOGdBMEVzYWlBRFFSQnFFT2dJTmdJWUlBbEJBV29oQ1NBRFFUQnFJQW9RSkF3QkN3QUxBQXNBQ3lBRFFhQUJhaVFBSUFBZ0NDQUZFSlVGSVFjTUNRc2pBRUh3QUdzaUF5UUFJQUFvQWdBZ0NCQjZRUUFRaFFFaEJ5QURRZWdBYWlJRUlBQWdDRUVBRUc0Z0EwSGdBR29nQUNBSVFRRVFiaUFEUWRnQWFpQUFJQWhCQWhCdUlBTkJ5QUJxRUZVZ0EwRTRhaUFBS0FJZ0lBZ1FZQkNUQWhCVUlRVUNRQ0FBSUFnZ0EwRXdhaUFFRUZzUWh3OGlDUVJBSUFOQnlBQnFJZ29nQlJEZ0FpQUFLQUlJSVFRZ0EwRUFOZ0lvSUFOQ0FEY0RJQ0FEUWdBM0F4Z2dBeUFFSUFvUTBnSTJBaFFnQkNBRFFSaHFJQU5CRkdvZ0EwSG9BR3BCQkhJUTJ4a01BUXNnQTBFWWFpSUVJQUFvQWlBZ0JSRGxCU0FEUWNnQWFpSUtJQVFRbmdFZ0JCQVBHaUFESUFjZ0FDZ0NDQ0lHSUFjb0FnQW9BZ2dSQVFBMkFoZ2dBMEVBTmdJVUlBWWdDaUFFSUFOQkZHb2dBMEhvQUdwQkJISVEyUmtoQ2lBQUtBSUlJUVlnQTBFQU5nSW9JQU5DQURjRElDQURRZ0EzQXhnZ0FDQUdJQVFnQ2hEWUdSREpBUm9MSUFOQkFEWUNLQ0FEUWdBM0F5QWdBMElBTndNWUlBTWdBQ2dDQ0NBRFFjZ0FhaERTQWpZQ0VDQURJQUFnQTBFWWFpQURRUkJxSUFOQjJBQnFRUVJ5RU9JRklnUTJBaFFDZjBFQUlBUkZEUUFhSUFBZ0FDZ0NDQ0FEUVJScUlBTkI0QUJxUVFSeUVJRUpFTWtCR2lBSkJFQWdBQ2dDSENnQ0FDMEFBRUVBUnd3QkN5QUFJQWdnQTBFSWFpQUhJQUFvQWdnZ0EwSElBR29RMGdJUWFSQ1BDd3NoQnlBRkVBOGFJQU5CeUFCcUVBOGFJQU5COEFCcUpBQU1DQXNqQUVId0FHc2lCQ1FBSUFBb0FnQWdDQkI2UVFBUWhRRWhCeUFFUWVnQWFpQUFJQWhCQUJCdUlBUkI0QUJxSWdNZ0FDQUlRUUVRYmlBRVFkQUFhaEJWSUFSQlFHc2dBQ2dDSUNBSUVHQVFrd0lRVkNFRkFrQWdBQ0FJSUFSQk9Hb2dBeEJiRUljUElna0VRQ0FFUWRBQWFpSUtJQVVRNEFJZ0FDZ0NDQ0VESUFSQkFEWUNNQ0FFUWdBM0F5Z2dCRUlBTndNZ0lBUWdBeUFLRU5JQ05nSVlJQU1nQkVFZ2FpQUVRUmhxSUFSQjRBQnFRUVJ5RU5zWkRBRUxJQVJCSUdvaUF5QUFLQUlnSUFVUTVRVWdCRUhRQUdvaUNpQURFSjRCSUFNUUR4b2dCQ0FISUFBb0FnZ2lCaUFIS0FJQUtBSUlFUUVBTmdJZ0lBUkJBRFlDR0NBR0lBb2dBeUFFUVJocUlBUkI0QUJxUVFSeUVOa1pJUW9nQUNnQ0NDRUdJQVJCQURZQ01DQUVRZ0EzQXlnZ0JFSUFOd01nSUFBZ0JpQURJQW9RMkJrUXlRRWFDeUFFUVJocUlBQWdDQ0FFUVJCcUlBUkJJR29nQnlBQUtBSUlJQVJCMEFCcUVOSUNFR2tRV3lBSUVIcEJBaERYR1VFQUlRTUNRQ0FFS0FJWVJRMEFJQVFvQWh4RkRRQWdBQ0FBS0FJSUlBUkJHR3BCQkhJZ0JFSG9BR3BCQkhJUWdRa1F5UUVhSUFrRVFDQUFLQUljS0FJQUxRQUFRUUJISVFNTUFRc2dBQ0FJSUFSQkNHb2dCeUFBS0FJSUlBUkIwQUJxRU5JQ0VHa1Fqd3NoQXdzZ0JSQVBHaUFFUWRBQWFoQVBHaUFFUWZBQWFpUUFJQU1oQnd3SEN5TUFRWkFCYXlJSEpBQWdCMEdBQVdvZ0FDZ0NJQ0FJUVFBUU9CQ1RBaEJVSVFrZ0IwRUFOZ0o0SUFkQ0FEY0RjQ0FIUWdBM0EyZ2dBQ2dDQ0NJRkVCd2dDU2dDQUNFRUlBY2dDU2dDQkNBSkxRQUxJZ01nQTBFWWRFRVlkVUVBU0NJREd6WUNaQ0FISUFRZ0NTQURHellDWUNBSElBY3BBMkEzQXdnZ0IwRXdhaUlFSUFWQmlBSnFJQWRCQ0dvUW1BTWdCeUFBSUFkQjZBQnFJZ1VnQkJDS0N6WUNmQ0FIUW9DQWdJQ0FBVGNDVkNBSElBUTJBbEFnQlVFRWNpRVBRUUVoQmdKQUEwQWdDQkRJQVNBR1N3UkFJQWdnQmhBNElRUWdCMEhvQUdvUVp5RUZBa0FnQUNnQ0VDQUVFSlFCSWdvRWZ5QUFJQW9RZ1JvRlFRQUxCRUFnQjBFb2FpRUxJQUFvQWdBaERpTUFRUkJySWdva0FDQUtJQTRvQXJRRklBUVFsQUUyQWd3Q1FDQU9RZEFIYWlBS1FReHFFS1VKSWc0RVFDQUxJQTVCREdvUTV4Z2FEQUVMSUFzUTZCZ0xJQXBCRUdva0FBSkFJQUFvQWdBZ0JDQUhMUUFxRUw0R0lnUkZCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdENFFFUUdTZ0NBQzBBQUVFQVJ5RUREQUVMSUFkQklHb2lDaUFBSUFRUVlCQ1dBeUFGSUFvUVd4b2dCU0FBS0FJQUlBUVEzQWcyQWdBTElBUU5BUXdFQ3lBSFFTaHFJZ1FnQUNBSUlBWVFiaUFGSUFRUVd4b0xJQU1oQkVFQUlRTWdCU2dDQUVVTkFpQUhLQUpzUlEwQ0lBZEJLR29pQXlBQUlBZEJHR29nQlJCYklBQW9BaEFnQ0NBR0VEZ1FsQUVRalE4Z0JTQURFRnNhSUFkQk1Hb2dEeEFrSUFaQkFXb2hCaUFFSVFNTUFRc0xJQUFvQWh3b0FnQXRBQUJGQkVCQkFDRUREQUVMSUFBb0FnZ2dCMEg4QUdvZ0IwRXdhaENKQ3lFRElBQW9BZ0FnQ0JCNlFRQVFoUUVpQkVVRVFDQUFLQUljSWdNb0FnQkJBRG9BQUNBRFFiMkFEQkFaSVFNZ0IwSG9BR29pQkNBSUVGZ2dBeUFFRUUwb0FnQXRBQUJCQUVjaEF5QUVFQThhREFFTElBUW9BZ1JCZ01zU1JnUkFJQUFvQWdnaEJDQUhRUUEyQW5nZ0IwSUFOd053SUFkQ0FEY0RhQ0FBSUFRZ0IwSG9BR29nQXhDU0R4REpBVUVBUnlFRERBRUxJQUFnQ0NBSFFSQnFJQVFnQXhCcEVKVUZJUU1MSUFkQk1Hb1FJeUFKRUE4YUlBZEJrQUZxSkFBZ0EwRUJjU0VIREFZTFFRQWhCQ01BUVNCcklnTWtBQUovQTBBZ0JFRURSd1JBSUFnZ0JCQTRJUWNnQUNnQ0ZDQUhFSklGSWdjRVFDQURRUlJxSUFSQkFuUnFJQWNRaFJnMkFnQWdCRUVCYWlFRURBSUZJQUFvQWh3aUJDZ0NBRUVBT2dBQUlBUkI1K2tCRUJrb0FnQXRBQUJCQUVjTUF3c0FDd3NnQXlBREtBSVVJZ1EyQWhBQ2Z5QUVRUUpIQkVBZ0FDZ0NIQ0lFS0FJQVFRQTZBQUFnQkVHSm93d1FHVUhCM3dzUUdTQURRUkJxRUM4TUFRc2dBeWdDSENJSFFRaHhCRUFnQXlnQ0dDRUZJQU1nQjBGM2NTSUVOZ0lNQWtBQ1FBSkFJQWRCZ0FKeEJFQWdCVUVDUndSQUlBQW9BaHdpQkNnQ0FFRUFPZ0FBSUFSQmhxc0VFQmtNQmdzZ0FDQUFLQUlJSWdRZ0JFR2w2Z0VRMWhrUW53c1F5UUVhSUFNZ0IwSDNmWEVpQkRZQ0RDQUhRY0FBY1EwQkRBTUxJQWRCd0FCeFJRMENJQVZCQVVZTkFRc2dBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFRzNxd1FRR1F3REN5QUFJQUFvQWdnaUJDQUVRY1hxQVJEV0dSQ2ZDeERKQVJvZ0F5QUhRYmQvY1NJRU5nSU1DMEVCSUFSRkRRSWFJQUFvQWh3aUJDZ0NBRUVBT2dBQUlBUkJvZTBMRUJrZ0EwRU1haEF2REFFTElBQW9BaHdpQkNnQ0FFRUFPZ0FBSUFSQi91TURFQmtMS0FJQUxRQUFRUUJIQ3lFSElBTkJJR29rQUF3RkN5QUFLQUlBSUFnUWtCa05CQ0FBS0FJY0lnUW9BZ0FoQXdzZ0EwRUFPZ0FBSUFSQnQ4TUtFQmtoQXlBTklBZ29BaFEyQW9nQ0lBTWdEVUdJQW1vUUwwSHR0UXdRR1NFRUlBMUI2QUJxSWdNZ0NCQllJQVFnQXhCTktBSUFMUUFBUVFCSElRY2dBeEFQR2d3REMwRUFJUVJCQUNFSFFRQWhEMEVBSVE0akFFR3dBbXNpQlNRQUlBVkNnSUNBZ0lBQk53S2tBaUFGSUFWQmdBSnFOZ0tnQWlBSUtBSVVJUkVDUUNBQUlBZ1FqUXNpRTBVTkFDQUZJQUFnQ0JDTUN6WUMwQUVnQlVHQUFtb2dCVUhRQVdvUUpDQVJRZGNBYXlJRFFSSkxRUUVnQTNSQi80MFFjVVZ5UlFSQUl3QkJNR3NpQ1NRQUlBaEJBQkE0SVFNQ1FDQUFLQUlBSUFOQkFCQytCaUlEUlFSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQjgrNEpFQmtoQ2lBSlFRaHFJZ01nQ0JCWUlBb2dBeEJOR2d3QkN5QUpRU0JxSUFBb0FpQWdBeEJnRUpNQ0VGUWhBeUFBS0FJSUlRUWdDVUVJYWlJS0lBQWdDQkRqQ0NBRUlBb2dBeERrQlNFRUN5QURFQThhSUFsQk1Hb2tBQ0FGSUFRMkF0QUJJQVJGRFFFZ0JVR0FBbW9nQlVIUUFXb1FKQXNnQUNnQ0FDQVRFTndJRU9FWklndEZCRUFnQUNnQ0hDZ0NBRUVBT2dBQURBRUxJQVZCQVRZQy9BRWdCVUhRQVdvaENTTUFRZEFBYXlJS0pBQUNRQ0FBS0FJQUxRQ1VBMFVFUUNBQUtBSWNLQUlBUVFBNkFBQWdDVUlBTndJWUlBbENBRGNDRUNBSlFnQTNBZ2dnQ1VJQU53SUFJQWxDZ0lDQWdJQUJOd0lrSUFrZ0NUWUNJQXdCQ3lBQUlBZ1FqUXNpQTBVRVFDQUpRZ0EzQWdBZ0NVSUFOd0lZSUFsQ0FEY0NFQ0FKUWdBM0FnZ2dDVUtBZ0lDQWdBRTNBaVFnQ1NBSk5nSWdEQUVMSUFnUXlBRkZCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdvOXdzUUdTRUVJQXBCS0dvaUF5QUlFRmdnQkNBREVFMGFJQU1RRHhvZ0NVSUFOd0lZSUFsQ0FEY0NFQ0FKUWdBM0FnZ2dDVUlBTndJQUlBbENnSUNBZ0lBQk53SWtJQWtnQ1RZQ0lBd0JDeUFLUWNnQWFpQUFJQWhCQVJCdUFrQWdDaWdDU0FSQUlBb29Ba3dOQVFzZ0NVSUFOd0lBSUFsQ0FEY0NHQ0FKUWdBM0FoQWdDVUlBTndJSUlBbENnSUNBZ0lBQk53SWtJQWtnQ1RZQ0lBd0JDeUFBSUFNUTVCa2lBMFVFUUNBSlFnQTNBZ0FnQ1VJQU53SVlJQWxDQURjQ0VDQUpRZ0EzQWdnZ0NVS0FnSUNBZ0FFM0FpUWdDU0FKTmdJZ0RBRUxJQU1vQWdnaUJFRUZUUVIvSUFSQkFuUkIvUDhNYWlnQ0FBVkJBQXNoQmlBRUVMTWJJUmdnQmtFRWEwRjhUUVJBSUFBb0Fod2lCQ2dDQUVFQU9nQUFJQVJCM3VnSkVCa2dBeWdDQkVFRWFoQ3dBMEdyd1FrUUdTRUVJQXBCS0dvaUF5QUlFRmdnQkNBREVFMGFJQU1RRHhvTElBb2dCaUFZYWlBSUtBSVVRZHNBYXlJVVFRUkphaUlTTmdKRUFrQUNRQ0FLS0FKSUVPNERJZ01RcHc5RkJFQWdBeENsRDBVTkFRdEJBU0VRSUFwQkFUWUNRQXdCQ3lBREtBSUVRYWpNRWtZRVFDQURLQUlJSVFRZ0NpQURLQUlNSWhBMkFrQWdCQ0VESUJBTkFRc2dBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSEM1QXNRR1NFRUlBcEJLR29pQXlBSUVGZ2dCQ0FERUUwYUlBTVFEeG9nQ1VJQU53SVlJQWxDQURjQ0VDQUpRZ0EzQWdnZ0NVSUFOd0lBSUFsQ2dJQ0FnSUFCTndJa0lBa2dDVFlDSUF3QkN5QVFJQkpKQkVBZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBIVjNBb1FHU0FLUWNRQWFoQXZRZU8vQ1JBWklBcEJRR3NRTDBHSWdBd1FHU0VFSUFwQktHb2lBeUFJRUZnZ0JDQURFRTBhSUFNUUR4b2dDVUlBTndJWUlBbENBRGNDRUNBSlFnQTNBZ2dnQ1VJQU53SUFJQWxDZ0lDQWdJQUJOd0lrSUFrZ0NUWUNJQXdCQ3lBSklBazJBaUFnQ1VLQWdJQ0FnQUUzQWlRZ0NpQVVRUVJKSWdRNkFEUWdDaUFETmdJd0lBb2dCallDTENBS0lBQTJBaWdnQ2tFNGFpQUtRY2dBYWhCYkdpQVlCRUFnQ2lBS1FTaHFFTVlaTmdJWUlBa2dDa0VZYWhBa0lBQW9BZ2doQkNBS0lBQWdCaERoQlRZQ0dDTUFRUkJySWdZa0FDQUdJQXBCeUFCcVFRUnlLQUlBTmdJTUlBWWdDaWdDR0RZQ0NDQUVJQVJCMkFKcUlBWkJER29nQmtFSWFoRCtDQ0VFSUFaQkVHb2tBQ0FLSUFRMkFpUWdBeENuRHdSQUlBb2dBQ2dDQ0VIdTVRUWdDa0VrYWhEbkNDSUVOZ0lrQ3lBS1FSaHFJZ1lnQUNBS1FSQnFJQU1nQkJCcEVPWUlJQWtnQmtFRWNoQWtEQUVMSUFRZ0VDQVNSM0pGQkVBZ0NrRVlhaUlESUFBZ0NrRUlhaUFLUWNnQWFoQmJFTllISUFrZ0EwRUVjaEFrREFFTElBb2dDa0VvYWhER0dUWUNHQ0FKSUFwQkdHb1FKQXNnQ2tIUUFHb2tBQ0FGS0FMMEFTSURCRUFnQlNnQzhBRWlCeUFEUVFKMGFpRURBa0FDUUFKQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQURRQ0FESUFkR0JFQUNRRUVCSVFrZ0JTQUZLQUw4QVVFQmFqWUMvQUVnQlNBSUVNZ0JOZ0xNQVNBRklBZzJBc2dCSUFVZ0FEWUN4QUVnQlNBRlFZQUNhallDd0FFZ0JTQUZRY3dCYWpZQ3ZBRWdCU0FGUWZ3QmFqWUN1QUVnQlVHb0FXb1FWU0FSUWRjQWF3NE5BQUFFQkFBQUJBUUhBd2tIQmdVTEJTQUZJQWNvQWdBMkFuZ2dCMEVFYWlFSElBVkJnQUpxSUFWQitBQnFFQ1FNQVFzTElBVkJxQUZxUWRlMUJCRFNBVUVBSVFsQkFRd0lDeUFGUWFnQmFrSHg3d0VRMGdFZ0N5Z0NCRUdnelJKR0RRWWdCVUtBZ0lDQWdBRTNBcHdCSUFVZ0JVSDRBR29pQXpZQ21BRWdCVUh3QUdvaUJDQUFJQWdnQlNnQy9BRVFiaUFGUVRCcUlnY2dBQ0FFRU9ZSUlBTWdCMEVFY2hBa0lBVW9BcUFDSWdjZ0JTZ0NwQUpCQW5ScUlRTURRQ0FESUFkR0JFQWdCVUdBQW1vZ0JVSDRBR29pQXhDZ0N5QURFQ01NQ0FVZ0JTQUhLQUlBTmdJd0lBZEJCR29oQnlBRlFmZ0FhaUFGUVRCcUVDUU1BUXNBQ3dBTElBVkJxQUZxUWJIdkF4RFNBVUVCSVE5QkFDRUhRUUFoQ1VFQklRNGdCVUc0QVdvUTN4bEZEUW9NQndzZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBINDVBc1FHU0VFSUFWQitBQnFJZ01nQ0JCWUlBUWdBeEJOS0FJQUxRQUFRUUJISVFjZ0F4QVBHZ3dKQ3lBRlFhZ0Jha0gxNmdNUTBnRWdCU2dDL0FFaUF5QUZLQUxNQVVrRVFDQUZRZmdBYWlJRUlBQWdDQ0FERUc0Z0JVSG9BR29nQkJCYklRb2pBRUhBQVdzaUF5UUFJQXNFZnlBTFFRQWdDeWdDQkVHQXpoSkdHd1ZCQUFzaENTQUtLQUlBRU80RElRUUNmeUFKUlFSQUlBQW9BaHdpQkNnQ0FFRUFPZ0FBSUFSQjhJb01FQmtoQnlBRFFSQnFJZ1FnQ0JCWUlBY2dCQkJOR2lBRUVBOGFRUUFNQVFzQ2Z5QUFLQUlBSVFjZ0NTZ0NEQ0VKSXdCQkVHc2lCaVFBQW44Q1FDQUpRUkZMRFFCQkFTQUpkQ0lRUWFTU0NuRkZCRUFnRUVISXBBRnhSUVJBUVFFZ0NYUkJrTWtFY1VVTkFpQUhRWkFEYWhEdEF3d0RDeUFIUVpBRGFoRHNBd3dDQ3lBSFFaQURhaENXQlF3QkN5QUhRUUE2QUpRRElBZEJxQVJxUWJmUkNSQVpJUkFnQmlBSk5nSU1JQkFnQmtFTWFoQ1JCUnBCQUFzaEVDQUdRUkJxSkFCQkFDQVFSUTBBR2lBSFFaQURhaUFRUVFRUS93SUxJZ2RGQkVBZ0FDZ0NIQ2dDQUVFQU9nQUFRUUFNQVFzQ1FDQUhLQUlFUWFqTUVrWUVRQ0FIS0FJTVFRUkdEUUVMSUFOQkVHcEJ1YUVGUWFZdlFRY2dBMEd3QVdvUUhTSUdFQmNpRUVFWWFrR1JuQWdRRGhvZ0VCQVlJQVlRSGdzQ1FDQUhFS2dhRFFBZ0J4Q2xHZzBBSUFjUXBob05BQ0FEUVJCcVFibWhCVUdvTDBFSElBTkJzQUZxRUIwaUJoQVhJaEJCR0dwQnhPVUlFQTRhSUJBUUdDQUdFQjRMQWtBZ0JDQUhSZzBBQWtBQ1FDQUVFS1lQSUFjUXFCcEhEUUFnQkJEM0NDQUhFS1VhUncwQUlBUVFwQThnQnhDbUdrWU5BUXNnQUNnQ0hDSUVLQUlBUVFBNkFBQWdCRUhGand3UUdTRUhJQU5CRUdvaUJDQUlFRmdnQnlBRUVFMGFJQVFRRHhwQkFBd0NDeUFBS0FJQUlRY2pBRUVRYXlJR0pBQUNmeUFKUVFKckloQkJFRThFUUNBSFFRQTZBSlFESUFkQnFBUnFRYmZSQ1JBWklRY2dCaUFKTmdJTUlBY2dCa0VNYWhDUkJScEJBQXdCQ3lBUVFRSjBRWVNDRFdvb0FnQUxJUWNnQmtFUWFpUUFJQU1nQnpZQ0RDQUhRUVZyUVh0TkJFQWdBMEVRYWtHNW9RVkJ1aTlCQnlBRFFiQUJhaEFkSWdrUUZ5SUdRUmhxUWR6VkNCQU9HaUFHRUJnZ0NSQWVDd0pBQWtBZ0JCQ2pEMFVFUUNBRElBUkJBQ0FFS0FJRVFhak1Fa1liS0FJTUlnWTJBZ2dnQmlBSFNRMEJJQVpCQTBzTkF3d0NDMEVCSVFZZ0EwRUJOZ0lJSUFkQkFra05BUXNnQUNnQ0hDSUVLQUlBUVFBNkFBQWdCRUc5aWd3UUdTQURRUWhxRUM5QjVzUUpFQmtnQTBFTWFoQXZRZmovQ3hBWklRY2dBMEVRYWlJRUlBZ1FXQ0FISUFRUVRSb2dCQkFQR2tFQURBSUxJQVFRb3c5RkJFQWdCRUVBSUFRb0FnUkJxTXdTUmhzb0FnZ2hCQXNnQUNnQ0JDQUVRUVFRL3dJaEJ5QURRb0NBZ0lDQUFUY0NOQ0FESUFOQkVHb2lDVFlDTUNBSklBcEJCR29RSkNBRFFiQUJha0VFY2lFSkEwQWdCa0VFUndSQUlBTkJzQUZxSUFBb0FnQWdCQkQxQ2lBRFFSQnFJQWtRSkNBR1FRRnFJUVlNQVFzTElBTWdCeUFBS0FJSUlnUWdCeWdDQUNnQ0NCRUJBRFlDc0FFZ0NpQUVJQU5Cc0FGcUlBTkJFR29pQkJEY0J6WUNCQ0FFRUNNTElBb29BZ1FMSVFRZ0EwSEFBV29rQUNBRklBUTJBakFnQkVVTkJ5QUZRWUFDYWlBRlFUQnFFQ1FnQlNBRktBTDhBVUVCYWpZQy9BRU1BZ3NnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdXcXd3UUdTRUVJQVZCK0FCcUlnTWdDQkJZSUFRZ0F4Qk5LQUlBTFFBQVFRQkhJUWNnQXhBUEdnd0lDeUFGUWFnQmFrSEMvd1FRMGdFTFFRQWhCMEVBSVFrTUF3c2dCVUdvQVdwQm5POERFTklCUVFBaEIwRUJJUTRnQlVHNEFXb1EzeGtOQWd3RkN5QUZJQVVvQXZ3QlFRRnFOZ0w4QVVFQUN5RUhRUUVoRGd0QkFDRUdJQVZCQURZQ1pDQUZLQUw4QVNJRElBVW9Bc3dCSWdSSkJFQWdCU0FJSUFNUU9DSUdOZ0prSUFVZ0JTZ0MvQUZCQVdvaUF6WUMvQUVnQlNnQ3pBRWhCQXNnQmtFQmNVVWdBeUFFVDNKRkJFQWdEd1JBSUFBb0Fod2lBeWdDQUVFQU9nQUFJQU5CaU80TEVCa2hCQ0FGUWZnQWFpSURJQWdRV0NBRUlBTVFUU2dDQUMwQUFFRUFSeUVISUFNUUR4b01CQXNnQ1FSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQnllMExFQmtoQkNBRlFmZ0FhaUlESUFnUVdDQUVJQU1RVFNnQ0FDMEFBRUVBUnlFSElBTVFEeG9NQkFzZ0JVR29BV3BCL2NVQkVQZ0dHaUFGUWZnQWFpSURJQUFnQ0NBRktBTDhBUkJ1SUFWQmdBSnFJQU5CQkhJUUpDQUZJQVpCQVhNaUJqWUNaQ0FGSUFVb0F2d0JRUUZxSWdNMkF2d0JJQVVvQXN3QklRUUxBa0FnQmtFQ2NVVWdBeUFFVDNKRkJFQWdEZ1JBSUFWQnFBRnFRYmlBQXhENEJob0xBa0FnQ1NBUGNrRUJSZ1JBSUFnZ0JTZ0MvQUVRT0NFRVFRQWhBd0pBSUFBb0FoUWdCQkNTQlNJS1JRMEFBa0FnQ2lBS0tBSUFLQUk4RVFBQUlnUUVRQ0FFRUlZUFF3QUFBQUJiSVFRTUFRdEJBU0VFSUFvZ0NpZ0NBQ2dDV0JFQUFFVU5BUXNnQkNFREN5QUREUUVnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEhuakFjUUdTRUVJQVZCK0FCcUlnTWdDQkJZSUFRZ0F4Qk5LQUlBTFFBQVFRQkhJUWNnQXhBUEdnd0dDeUFGUWZnQWFpQUFJQWdnQlNnQy9BRVFiaUFMS0FJRVFhRE5Fa1lFUUNBRlFUQnFJZ01nQUNBRlFkZ0FhaUFGUWZnQWFpSUVFRnNRNWdnZ0JDQURFRnNhQ3lBRlFZQUNhaUFGUWZnQWFrRUVjaEFrQ3lBRklBWkJBbk1pQmpZQ1pDQUZJQVVvQXZ3QlFRRnFOZ0w4QVF3QkN3SkFJQkZCM3dCckRnUUFBUUVBQVFzZ0N3Ui9BbjlCQUNBTEtBSUVJZ01wQXhCQ2dJQ1NnSUtBZ0lBRWd5STFJRFZDQVgyRFVBMEFHa0VCSUFNUXBCa05BQm9nQTBIUXpSSVFTQXNGUVFBTERRQWdCU0FBS0FJQUlBQW9BZ1FRN0FNUWt3UTJBbmdnQlVHQUFtb2dCVUg0QUdvUUpBc2dCa0VFY1VVZ0JTZ0N6QUVpQkNBRktBTDhBU0lEUVFGcVRYSkZCRUFnRHdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQml1RUxFQmtoQkNBRlFmZ0FhaUlESUFnUVdDQUVJQU1RVFNnQ0FDMEFBRUVBUnlFSElBTVFEeG9NQkFzZ0NRUkFJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkJ6dUFMRUJraEJDQUZRZmdBYWlJRElBZ1FXQ0FFSUFNUVRTZ0NBQzBBQUVFQVJ5RUhJQU1RRHhvTUJBc2dCVUdvQVdwQnFQOEVFUGdHR2lBRlFmZ0FhaUlESUFBZ0NDQUZLQUw4QVJCdUlBVkJnQUpxSWdRZ0EwRUVjaUlKRUNRZ0F5QUFJQWdnQlNnQy9BRkJBV29RYmlBRUlBa1FKQ0FGSUFaQkJITWlCallDWkNBRklBVW9BdndCUVFKcUlnTTJBdndCSUFVb0Fzd0JJUVFMSUFaQkNIRkZJQU1nQkU5eVJRUkFJQkZCMXdCcklnUkJDazBnQkVFSVIzRkZCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEhjNXdzUUdTRUVJQVZCK0FCcUlnTWdDQkJZSUFRZ0F4Qk5LQUlBTFFBQVFRQkhJUWNnQXhBUEdnd0VDeUFMS0FJSVFRRnJRUU5QQkVBZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBHVDZ3c1FHU0VFSUFWQitBQnFJZ01nQ0JCWUlBUWdBeEJOS0FJQUxRQUFRUUJISVFjZ0F4QVBHZ3dFQ3lBRlFkQUFhaUlFSUFBZ0NDQURFRzRnQlVINEFHb2lBeUFBSUFRUTFnY2dCVUdBQW1vZ0EwRUVjaEFrSUFVZ0JrRUljeUlHTmdKa0lBVWdCU2dDL0FGQkFXb2lBellDL0FFZ0JTZ0N6QUVoQkFzZ0JrSEFBSEZGSUFNZ0JFOXlSUVJBSUFWQnlBQnFJZ1FnQUNBSUlBTVFiaUFGUWZnQWFpSURJQUFnQkJEbUNDQUZRWUFDYWlBRFFRUnlFQ1FnQlNBR1FjQUFjeUlHTmdKa0lBVWdCU2dDL0FGQkFXbzJBdndCQ3lBR0JFQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSHcvUWdRR1NBRlFlUUFhaEF2UWNHMURCQVpJUVFnQlVINEFHb2lBeUFJRUZnZ0JDQURFRTBvQWdBdEFBQkJBRWNoQnlBREVBOGFEQU1MSUFVb0FxQUNJZ1lnQlNnQ3BBSkJBblJxSVFNRFFDQURJQVpHRFFJZ0JpZ0NBQ0VFSUFaQkJHb2hCaUFFRFFBTEMwRUFJUWNNQVFzZ0JTQUFLQUlJSUFWQnFBRnFJQVZCZ0FKcUVONFpJZ2syQWtRQ1FBSkFJQWdRZWdSQVFRQWhBd0pBSUFBb0FnQWdDQkI2UVFBUWhRRWlCRVVOQUNBRUlnTW9BZ1JCcU13U1J3MEFJQVFvQWdnaEF3c2dDd1IvQW45QkFDQUxLQUlFSWdvcEF4QkNnSUNRa0lDQWdJSUVneUkxSURWQ0FYMkRVQTBBR2tFQklBcEJvTTBTRUVnTkFCb2dDaENrR1FzRlFRQUxSU0FIUVFGeklCRkIzd0JIY1hKRkJFQWdBQ2dDQ0NFS0lBVkJRR3RCQURZQ0FDQUZRZ0EzQXpnZ0JVSUFOd013SUFVZ0JDQUtJQVFvQWdBb0FnZ1JBUUEyQWlnZ0JTQUpOZ0lRSUFVZ0FDZ0NBQ0FERUpNRU5nSVVJQVVnQUNnQ0FDQURFSk1FTmdJWUlBQW9BZ0FnQXhDVEJDRUhJQVZCQkRZQ0pDQUZJQWMyQWh3Z0JTQUZRUkJxTmdJZ0lBVWdCU2tESURjREFDQUZRZmdBYWlBRkVOMFpJZ1loQ1NNQVFTQnJJZ2NrQUNBSElBVW9BaWcyQWh3Z0NpQUZRVEJxSUFkQkhHb2dCeUFKRUo0TUlnb1F4UmtoQ1NBS0VGNGdCMEVnYWlRQUlBWVFYZ3NDUUNBQUtBSUFJQk1RanhraUJ3UkFJQWNvQWhSQkdVWU5BUXNnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEd0aVFvUUdTRUVJQVZCK0FCcUlnTWdFeEJZSUFRZ0F4Qk5LQUlBTFFBQUlRY2dBeEFQR2d3REN5QURJQUFvQWdBZ0IwRUFFRGhCQUJDRkFTSUhSd1JBSUFBb0FnZ2hBeUFGUVFBMkFvZ0JJQVZDQURjRGdBRWdCVUlBTndONElBTWdCVUg0QUdvZ0JDQURJQVFvQWdBb0FnZ1JBUUFnQlVIRUFHb1ExZ1FoQ1FzQ1FDQUhLQUlFUWNqTEVrWU5BQ0FSUWRjQWF5SURRUkpMUVFFZ0EzUkIvNDBRY1VWeURRQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSFk4UU1RR1NnQ0FDMEFBQ0VIREFNTElBQWdDQ0FGUVFocUlBUWdDUkJwRUpVRkdnd0JDeUFBS0FJSUlRTWdCVUVBTmdLSUFTQUZRZ0EzQTRBQklBVkNBRGNEZUNBQUlBTWdCVUg0QUdvZ0NSQ1NEeERKQVJvTElBQW9BaHdvQWdBdEFBQWhCd3NnQjBIL0FYRkJBRWNoQndzZ0JVR29BV29RRHhvTElBVkIwQUZxRUNNTElBVkJnQUpxRUNNZ0JVR3dBbW9rQUF3Q0N5QURRUUE2QUFBZ0JFR3Z0QXdRR1NFRUlBMUI2QUJxSWdNZ0NCQllJQVFnQXhCTktBSUFMUUFBUVFCSElRY2dBeEFQR2d3QkMwRUFJUWNMSUExQm9BSnFKQUFnQjBVTkFRc2dDRUVFYWlFRURBRUxDMEVBREFFTEFrQWdBU2dDNEFFaUEwVU5BQ0FNUW9DQWdJREFBRGNDakFjZ0RDQU1RZWdHYWlJRU5nS0lCeUFFSUFNUTh4a2dBU2dDM0FFaUJDQUJLQUxnQVVFRGRHb2hBd05BQWtBZ0F5QUVSZ1JBSUF3b0FvZ0hJUWdnRENnQ2pBY2hCeUFNSUFBMkFwQUZRUUFoQkNBTVFRQTJBdGdIUVFBaEF5QUhRWUVCVGdSQUlBeEI2QUJxSUFjUThoa2dEQ2dDYkNFRElBeEIyQWRxSUF3b0FtZ2lCQkJzQ3lBSUlBZ2dCMEVEZEdvZ0RFR1FCV29pQ0NBSElBUWdBeERxQ0NBTVFkZ0hhaENMQVNBSUVONEdJUW9nRENnQ2lBY2lCQ0FNS0FLTUIwRURkR29oQXlBTVFlZ0Fha0VFY2lFSERBRUxJQXdnQkNrQ0FDSTFOd05vSUFBZ05hY1FsQUlvQWd3RVFDQU1RZWdHYWlBTVFlZ0FhaEQ0R1FzZ0JFRUlhaUVFREFFTEN3TkFJQU1nQkVjRVFDQU1JQVFwQWdBM0EyZ2dDaUFIRUt3Y0dpQUVRUWhxSVFRTUFRc0xJQXhCNkFCcUVNUVBJUWNnRENnQ2lBY2lCQ0FNS0FLTUIwRURkR29oRGdOQUlBUWdEa1lFUUNBTUtBS0lCeUlFSUF3b0Fvd0hRUU4wYWlFQkEwQWdBU0FFUmdSQUlBY1F3dzhnQ2hEZEJpQU1RZWdHYWhBakRBUUZJQXdnQUNnQ0NDQUFLQUlnSUFRcEFnQWlOYWNRa3dJUTBnSTJBaEFnREVFQU5nTGdCeUFNSURWQ0lJaW5JZ00yQXR3SElBd2dCellDMkFjZ0RDQUhLQUtnQkVFQmF6WUM1QWNnREFKL0lBeEIyQWRxRVBFWkJFQWdBQ2dDQ0NBTVFkZ0hhaER4R1JEYUJBd0JDeUFNUVRocUlBQWdBeENXQXlBTUtBSThDellDV0NBQUlBQW9BZ2dnREVFUWFpQU1RZGdBYWhDQkNSREpBUm9nQkVFSWFpRUVEQUVMQUFzQUN5QU1JQVFvQWdBMkFtUWpBRUVRYXlJSUpBQWpBRUd3QVdzaUNTUUFJQW9vQXNRQklnWkJBV3NoRHlBTUtBSmtJZ3NnQm5BaEF5QUtLQUxBQVNFUVFRQWhCUUpBQTBBZ0JTQUdSd1JBSUJBZ0EwRUVkR29pRFMwQUJFVUVRQ0FJUVFBMkFnd2dDRUVBT2dBSURBTUxBa0FnRFNnQ0NDQUxSdzBBSUFzZ0RTZ0NBRWNOQUNBSUlBTTJBZ3dnQ0VFQk9nQUlEQU1MSUFVZ0RTZ0NERXNFUUNBSVFRQTJBZ3dnQ0VFQU9nQUlEQU1GSUFOQkFXcEJBQ0FESUE5SEd5RURJQVZCQVdvaEJRd0NDd0FMQ3lBSlFZYTFBMEdlQkVFT0lBbEJvQUZxRUIwaUF4QVhJZ1ZCR0dwQjBqVVFEaG9nQlJBWUlBaEJBRFlDRENBSVFRQTZBQWdnQXhBZUN5QUpRYkFCYWlRQUlBZ3RBQWdoQXlBSVFSQnFKQUFnQXdSQUlBeEJPR29pQXlBQUtBSWdJZ2tnRENnQ1pCQ1RBa0cwdVFVUXVBSWdERUVRYWlJSUlBRW9BZ1FRWHlBTVFkZ0hhaUlGSUFNZ0NCQk9JQXhCMkFCcUlnMGdDU0FGRU9VRklBVVFEeG9nQ0JBUEdpQURFQThhSUFBb0FnZ2lDUkFjSUF3Z0RDZ0NYQ0FNTFFCaklnWWdCa0VZZEVFWWRVRUFTQ0lHR3pZQ05DQU1JQXdvQWxnZ0RTQUdHellDTUNBTUlBd3BBekEzQXdnZ0F5QUpRWWdDYWlBTVFRaHFFSmdESUFnZ0F4QldJUU1nREVINEIyb2dCeUFNUWVRQWFpQUZFSnNGRVBBWklBd29BdmdIUlFSQUlBY29BcUFFSVFnZ0RFSFlCMm9nQXhCV0lRTUNRQ0FIS0FLZ0JDQUlSZ1JBSUF3b0F2d0hJQU1RM3dRTUFRc2pBRUhRQVdzaUNDUUFJQWNvQXBRRUlna2dCeWdDbkFRaUJVR1dBV3hCbGdGcVFlUUFia2tFUUNBSElBVkJBWFJCQW1vUXFCa2dCeWdDbEFRaENRc2dEQ2dDWkNFTklBZ2dBellDekFFZ0NDQU1RZVFBYWpZQ3lBRWdDVUVCYXlFUElBMGdDWEFoQmlBSEtBS1FCQ0VMUVFBaEF3SkFBMEFnQXlBSlJ3UkFJQXNnQmtFc2JHb2lCUzBBSUVVRVFDQUlRUWhxSWdrZ0NFSElBV29RbUFVZ0JTQUpFSzBMSUFzZ0JrRXNiR29pQ1NBRE5nSW9JQWtnRFRZQ0pDQUhJQWNvQXB3RVFRRnFOZ0tjQkNBSElBY29BcUFFUVFGcU5nS2dCQ0FNSUFWQkJHbzJBdFFISUF4QkFEWUMwQWNNQXdzQ1FDQUZLQUlrSUExSERRQWdEU0FGS0FJQVJ3MEFJQWhCQ0dvaUF5QUlRY2dCYWhDWUJRSkFJQVV0QUNBRVFDQUZJQU1RK2hvTUFRc2dCU0FERUs4TEN5QUhJQWNvQXFBRVFRRnFOZ0tnQkNBTUlBVkJCR28yQXRRSElBeEJBVFlDMEFjTUF3c2dBeUFGS0FJb1N3UkFJQWhCcUFGcUlna2dDRUhJQVdvUW1BVWdDRUVJYWlBSkVLd0xJZ2tnQXpZQ0tDQUpJQTAyQWlRZ0NTQUZFSVFKSUFrZ0NTZ0NLRUVCYWpZQ0tDQUhJQVpCQVdvZ0J5Z0NsQVJ3SUFrUXF3c2dCeUFIS0FLY0JFRUJhallDbkFRZ0J5QUhLQUtnQkVFQmFqWUNvQVFnRENBRlFRUnFOZ0xVQnlBTVFRQTJBdEFISUFrUXFnSU1Bd1VnQmtFQmFrRUFJQVlnRDBjYklRWWdBMEVCYWlFRERBSUxBQXNMSUFoQkNHcEJoclVEUWVzRFFRNGdDRUdvQVdvUUhTSURFQmNpQlVFWWFrR1dOUkFPR2lBRkVCZ2dERUlBTndMUUJ5QURFQjRMSUFoQjBBRnFKQUFnRENBTUtRUFFCemNEK0FjTEN5QU1JQUFvQWdnaUF5QUFLQUlnSUF3b0FtUVFrd0lRMGdJMkF0Z0hJQUFnQXlBRElBeEJPR29nREVIWUIyb1Fwd3NRendvUXlRRWFJQXhCMkFCcUVBOGFDeUFFUVFocUlRUU1BQXNBQ3lBQ1FRRTZBQUJCQVFzaEFDQU1RWUFJYWlRQUlBQUxGd0FnQUNBQkVKUUNJZ0JGQkVCQkFBOExJQUFvQWpRTG1BVUNDWDhDZlNNQVFSQnJJZ3NrQUNNQVFSQnJJZ1lrQUNBQ0tBSUFJUWNnQ3dKL0FrQWdBU2dDQkNJRVJRMEFJQUVvQWdBQ2Z5QUVRUUZySUFkeElBUnBJZ2hCQVUwTkFCb2dCeUFFSUFkTERRQWFJQWNnQkhBTElnbEJBblJxS0FJQUlnVkZEUUFnQkVFQmF5RU1JQWhCQVVzaENBTkFJQVVvQWdBaUJVVU5BU0FISUFVb0FnUWlDa2NFUUFKQUlBaEZCRUFnQ2lBTWNTRUtEQUVMSUFRZ0Nrc05BQ0FLSUFSd0lRb0xJQWtnQ2tjTkFnc2dCU2dDQ0NBSFJ3MEFDMEVBREFFTFFSQVFGU0VJSUFZZ0FVRUlhallDQkNBR0lBZzJBZ0FnQ0NBQ0tBSUFOZ0lJSUFnZ0F5Z0NBRFlDRENBR1FRRTZBQWdnQ0VFQU5nSUFJQWdnQnpZQ0JBSkFRUUFnQkNBQktBSU1RUUZxc3lJT0lBRXFBaEFpRFNBRXM1UmVHdzBBSUFFZ0JDQUVRUUZyY1VFQVJ5QUVRUU5KY2lBRVFRRjBjaUlEQW44Z0RpQU5sWTBpRFVNQUFJQlBYU0FOUXdBQUFBQmdjUVJBSUEycERBRUxRUUFMSWdJZ0FpQURTUnNRd3dFZ0FTZ0NCQ0lFSUFSQkFXdHhSUVJBSUFSQkFXc2dCM0VoQ1F3QkN5QUVJQWRMQkVBZ0J5RUpEQUVMSUFjZ0JIQWhDUXNDUUNBSlFRSjBJZ0lnQVNnQ0FHb29BZ0FpQTBVRVFDQUdLQUlBSUFFb0FnZzJBZ0FnQVNBR0tBSUFOZ0lJSUFFb0FnQWdBbW9nQVVFSWFqWUNBQ0FHS0FJQUlnTW9BZ0FpQWtVTkFTQUNLQUlFSVFVQ1FDQUVJQVJCQVdzaUFuRkZCRUFnQWlBRmNTRUZEQUVMSUFRZ0JVc05BQ0FGSUFSd0lRVUxJQUVvQWdBZ0JVRUNkR29nQXpZQ0FBd0JDeUFHS0FJQUlBTW9BZ0EyQWdBZ0F5QUdLQUlBTmdJQUN5QUdLQUlBSVFVZ0JrRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUdFSXNCUVFFTE9nQU1JQXNnQlRZQ0NDQUdRUkJxSkFBZ0FDQUxLQUlJTmdJQUlBQWdDeTBBRERvQUJDQUxRUkJxSkFBTDNRWUJDWDhqQUVIUUFXc2lCU1FBSUFVZ0F6WUN5QUVnQlNBQ05nTE1BU0FGSUFRMkFzUUJJQVVnQUNnQ0FDSUhJQU1RZkNnQ0NEWUN3QUVnQlFKL0lBUkZCRUFnQnlnQzdBWWdCeWdDNkFaclFRSjFEQUVMSUFjZ0JCQjhLQUlJQ3lJSU5nSzhBU0FGSUFBb0FnUWlCQ2dDRkNJREJIOGdCQ2dDRUNBRFFRSjBha0VFYXlnQ0FBVkJBQXNpQkRZQ3VBRWdCU0FJTmdLMEFTQUNRUU5HQkVBZ0JFVUVRQ0FGUWJtaEJVSDlEVUVISUFWQm9BRnFFQjBpQXhBWElnSkJHR3BCN1p3SUVBNGFJQUlRR0NBREVCNExJQVFvQWhSQkJFY0VRQ0FGUWJtaEJVSCtEVUVISUFWQm9BRnFFQjBpQXhBWElnSkJHR3BCbmJrSUVBNGFJQUlRR0NBREVCNExJQVVnQkNnQ0pEWUN0QUVnQlNBRUtBSUFOZ0s0QVFzZ0JTQUJOZ0tnQVVFc0VCVWhBaUFGS0FLZ0FTRUxJQVVvQXN3QklRb2dCU2dDeUFFaERTQUZLQUxFQVNFSklBVW9Bc0FCSVF3Z0JTZ0N2QUVoQ0NBRktBSzBBU0VFUVFBaEFTQUNJQVVvQXJnQklnWTJBZ0FDUUFKQUlBcEJBMFlFUUNBQ0lBSTJBZ1FNQVFzQ1FDQUdSUTBBSUFZb0FoQWdDMDROQUNBR0tBSUVJUUVMSUFJZ0FUWUNCQ0FLUVFSSERRQWdBaUFDTmdJSUlBSWhBUXdCQ3lBR0JFQWdBaUFMSUFZb0FoQktCSDhnQmlnQ0NBVkJBQXMyQWdnZ0FrRUFJQXBCQW10QkEwa2lBeHNoQVNBRElBWkZjZzBCUVFBaEFTQUdLQUlRSUF0T0RRRWdCaWdDRENFQkRBRUxJQUpCQURZQ0NDQUNRUUFnQ2tFQ2EwRURTUnNoQVFzZ0FpQUVOZ0lvSUFJZ0NEWUNKQ0FDSUF3MkFpQWdBaUFKTmdJY0lBSWdEVFlDR0NBQ0lBbzJBaFFnQWlBTE5nSVFJQUlnQVRZQ0RDQUZJQUkyQWdBZ0IwR2NCMm9pQVNnQ0pDSUNJQUVvQWloUEJFQWdBU2dDS0NJQ1FRRjBRUUlnQWhzaUFpQUJLQUlvU3dSQUlBRW9BaUFoRENBQklBSVF2Z2xCQUNFSkEwQWdBU2dDSkNBSlRRUkFJQUVnREJBMkJTQU1JQWxCQW5RaUJHb2lDQ2dDQUNFRElBRW9BaUFoQWlBSVFRQTJBZ0FnQWlBRWFpQUROZ0lBSUFnUWl3RWdDVUVCYWlFSkRBRUxDd3NnQVNnQ0pDRUNDeUFCSUFKQkFXbzJBaVFnQlNnQ0FDRURJQUVvQWlBaEFTQUZRUUEyQWdBZ0FTQUNRUUowYWlBRE5nSUFJQVVRaXdFZ0JTQUhLQUs4QnlBSEtBTEFCMEVDZEdwQkJHc29BZ0EyQWdBZ0FDZ0NCQ0FGRUhFZ0JTZ0NBQ0VBSUFWQjBBRnFKQUFnQUF2WUJnRUVmeU1BUWNBQmF5SUpKQUFnQ1NBRk5nSXNJQWtnQWpZQ05DQUpJQVFReUFNaUFqWUNNQUpBSUFKRkRRQWdBaWdDQkVHUXpCSkhEUUFnQ1NBQ0tBSUlJZ0kyQWpBTElBa2dDRFlDS0NBSklBTTJBaVFnQ1NBSE5nSWNJQWtnQVRZQ0dDQUpJQUEyQWhRZ0NTQUdOZ0lJSUFrZ0NVRTBhallDSUNBSklBbEJNR28yQWhBZ0NTQUpRU3hxTmdJTUFuOGdBa1VFUUNBSlFRaHFFSUlhREFFTEFrQWdBaWdDQkNJRVFjRE1Fa1lFUUVFQUlRVWdDVUVBTmdLSUFTQURJQWxCaUFGcUVKOEZJQUlvQWd3aUJFRUFJQVJCQUVvYklRUWdBQ2dDQkNBQ0tBSUlJQUlvQWhBUS93SWhBZ05BSUFRZ0JVY0VRQ0FES0FJZ0lBTW9BaVJCQW5ScVFRUnJJQVUyQWdBZ0FDQUpRVGhxSUFFUVZDSUtJQWtvQWpRZ0NVR0lBV29nQXhEakJTSUxJQUlnQ1NnQ0xDQUdJQWNnQ0JEd0NDRU1JQXNRSXlBS0VBOGFJQVZCQVdvaEJTQU1EUUVNQXdzTElBQW9BaHdvQWdBdEFBQkJBRWNNQWdzZ0JFSFl6QkpHQkVBZ0FpZ0NERVVFUUNBQUtBSWNJZ0FvQWdCQkFEb0FBQ0FBUWJXRUJoQVpLQUlBTFFBQVFRQkhEQU1MUVFBaEJTQUpRUUEyQW5nZ0F5QUpRZmdBYWhDZkJTQUNLQUlJSVFRRFFDQUNLQUlNSUFWS0JFQWdBeWdDSUNBREtBSWtRUUowYWtFRWF5QUZOZ0lBSUFBZ0NVRTRhaUFCRUZRaUNpQUpLQUkwSUFsQmlBRnFJQU1RNHdVaUN5QUVJQWtvQWl3Z0JpQUhJQWdROEFnaERDQUxFQ01nQ2hBUEdpQUZRUUZxSVFVZ0RBMEJEQU1MQ3lBQUtBSWNLQUlBTFFBQVFRQkhEQUlMSUFSQnlNNFNSZ1JBUVFBaEJTQUpRUUEyQW9nQklBTWdDVUdJQVdvUW53VUNRQU5BSUFVZ0FpZ0NLQ0FDS0FJa2EwRUNkVTROQVNBREtBSWdJQU1vQWlSQkFuUnFRUVJySUFVMkFnQWdDVUdJQVdvZ0JoQ0dHaUVFSUFsQitBQnFJZ3NnQUNnQ0FDSUtJQUlnQlJDTkdTQUtJQUlnQ3lBRUVPOE9JUW9nQ3hDa0FnSkFJQXBGRFFBZ0FDQUpRZWdBYWlBQkVGUWlDaUFKS0FJMElBbEJPR29nQXhEakJTSUxJQUlvQWlRZ0JVRUNkR29vQWdBZ0NTZ0NMQ0FFSUFjZ0NCRHdDQ0VNSUFzUUl5QUtFQThhSUF4RkRRQWdBQ2dDQUNBR0lBUVFoQm9RN1E0Z0JCQWpJQVZCQVdvaEJRd0JDd3NnQkJBakRBSUxJQUFvQWh3b0FnQXRBQUJCQUVjTUFnc2dDVUVJYWhDQ0dnd0JDMEVBQ3lFRElBbEJ3QUZxSkFBZ0F3dllCZ0VFZnlNQVFjQUJheUlKSkFBZ0NTQUZOZ0lzSUFrZ0FqWUNOQ0FKSUFRUXlBTWlBallDTUFKQUlBSkZEUUFnQWlnQ0JFR1F6QkpIRFFBZ0NTQUNLQUlJSWdJMkFqQUxJQWtnQ0RZQ0tDQUpJQU0yQWlRZ0NTQUhOZ0ljSUFrZ0FUWUNHQ0FKSUFBMkFoUWdDU0FHTmdJSUlBa2dDVUUwYWpZQ0lDQUpJQWxCTUdvMkFoQWdDU0FKUVN4cU5nSU1BbjhnQWtVRVFDQUpRUWhxRUljYURBRUxBa0FnQWlnQ0JDSUVRY0RNRWtZRVFFRUFJUVVnQ1VFQU5nS0lBU0FESUFsQmlBRnFFSjhGSUFJb0Fnd2lCRUVBSUFSQkFFb2JJUVFnQUNnQ0JDQUNLQUlJSUFJb0FoQVEvd0loQWdOQUlBUWdCVWNFUUNBREtBSWdJQU1vQWlSQkFuUnFRUVJySUFVMkFnQWdBQ0FKUVRocUlBRVFWQ0lLSUFrb0FqUWdDVUdJQVdvZ0F4RGpCU0lMSUFJZ0NTZ0NMQ0FHSUFjZ0NCRHhDQ0VNSUFzUUl5QUtFQThhSUFWQkFXb2hCU0FNRFFFTUF3c0xJQUFvQWh3b0FnQXRBQUJCQUVjTUFnc2dCRUhZekJKR0JFQWdBaWdDREVVRVFDQUFLQUljSWdBb0FnQkJBRG9BQUNBQVFiV0VCaEFaS0FJQUxRQUFRUUJIREFNTFFRQWhCU0FKUVFBMkFuZ2dBeUFKUWZnQWFoQ2ZCU0FDS0FJSUlRUURRQ0FDS0FJTUlBVktCRUFnQXlnQ0lDQURLQUlrUVFKMGFrRUVheUFGTmdJQUlBQWdDVUU0YWlBQkVGUWlDaUFKS0FJMElBbEJpQUZxSUFNUTR3VWlDeUFFSUFrb0Fpd2dCaUFISUFnUThRZ2hEQ0FMRUNNZ0NoQVBHaUFGUVFGcUlRVWdEQTBCREFNTEN5QUFLQUljS0FJQUxRQUFRUUJIREFJTElBUkJ5TTRTUmdSQVFRQWhCU0FKUVFBMkFvZ0JJQU1nQ1VHSUFXb1Fud1VDUUFOQUlBVWdBaWdDS0NBQ0tBSWthMEVDZFU4TkFTQURLQUlnSUFNb0FpUkJBblJxUVFScklBVTJBZ0FnQ1VHSUFXb2dCaENHR2lFRUlBbEIrQUJxSWdzZ0FDZ0NBQ0lLSUFJZ0JSQ05HU0FLSUFJZ0N5QUVFTzhPSVFvZ0N4Q2tBZ0pBSUFwRkRRQWdBQ0FKUWVnQWFpQUJFRlFpQ2lBSktBSTBJQWxCT0dvZ0F4RGpCU0lMSUFJb0FpUWdCVUVDZEdvb0FnQWdDU2dDTENBRUlBY2dDQkR4Q0NFTUlBc1FJeUFLRUE4YUlBeEZEUUFnQUNnQ0FDQUdJQVFRaEJvUTdRNGdCQkFqSUFWQkFXb2hCUXdCQ3dzZ0JCQWpEQUlMSUFBb0Fod29BZ0F0QUFCQkFFY01BZ3NnQ1VFSWFoQ0hHZ3dCQzBFQUN5RURJQWxCd0FGcUpBQWdBd3RoQVFKL0l3QkJ3QUZySWdJa0FDQUNJQUUyQXJ3QklBQXRBRmdFUUNBQ1FRaHFRYm1oQlVIV0JrRUhJQUpCcUFGcUVCMGlBUkFYSWdOQkdHcEJwOVFJRUE0YUlBTVFHQ0FCRUI0TElBQkJJR29nQWtHOEFXb1FKQ0FDUWNBQmFpUUFDeGtBSUFCQnpBQnFFSWNKSUFCQklHb1FJeUFBUVFocUVCWUxUd0VCZjBFWUVCVWhCQ0FBSUFGQkNHbzJBZ1FnQUNBRU5nSUFJQU1vQWdBb0FnQWhBU0FFUVFBMkFoUWdCRUlBTndJTUlBUWdBVFlDQ0NBQVFRRTZBQWdnQkVFQU5nSUFJQVFnQWpZQ0JBdFdBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNEQ0FBRUZVQ1FDQUJRVEJxSUFSQkRHb1FuZ0lpQVVVTkFDQUJLQUlRSUFFb0Fnd2lBV3RCREcwZ0EwME5BQ0FBSUFFZ0EwRU1iR29RNEFJTElBUkJFR29rQUFzUkFDQUFRUWhCK2Y4RFFYeEJBeERLQVFzTEFDQUFRYkRMRWhDK0RBc1lBUUYvUVFFaEFTQUFFUGNJQkg5QkFRVWdBQkNrRHdzTERRQWdBRUh3MEJJMkFnQWdBQXNsQVFGL0lBRkJCR29nQUNnQ0NDSUNJQUVnQWlnQ0FDZ0NDQkVCQUNBQUtBSU1FSjBiQzJnQkFYOGdBQ2dDQUNBQUtBSUVJQUZCQkdvUXZSb2dBQ2dDQUNFQ0lBQWdBU2dDQkRZQ0FDQUJJQUkyQWdRZ0FDZ0NCQ0VDSUFBZ0FTZ0NDRFlDQkNBQklBSTJBZ2dnQUNnQ0NDRUNJQUFnQVNnQ0REWUNDQ0FCSUFJMkFnd2dBU0FCS0FJRU5nSUFDeFlBSUFBZ0FTZ0NBQkJXUVJ4cUlBRW9BZ1FRVmhvTE9BRUNmeU1BUVJCcklnSWtBQ0FDUVFocUlBQkJMR29nQVJER0dpQUNLQUlJSVFNZ0FrRVFhaVFBSUFOQkFrY0VRQ0FBSUFFUUpBc0xad0VDZnlNQVFSQnJJZ1VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ1EyQWd3Z0JTQUVOZ0lJSUFCQmpBRnFJZ1FnQkJERkFpQUFLQUlJSUFVb0FnZ2dBU0FDS0FJQUlBTW9BZ0FROVI0aUFCQW9JQVFnQkNnQ0dFRUJhallDR0NBRlFSQnFKQUFnQUFzMEFRSi9JQUFvQWdBaEFTQUFLQUlFSVFJRFFBSkFJQUVnQWtZTkFDQUJMUUFrRFFBZ0FDQUJRVEJxSWdFMkFnQU1BUXNMQ3lZQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkJFQWdBQzBBQ0JvZ0FRUkFJQUVRSHdzTEMza0JBWDhqQUVFUWF5SURKQUFnQXlBQktBSUFOZ0lNSUFNZ0FpZ0NBRFlDQ0NNQVFSQnJJZ0VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0kyQWd3Z0FTQUNOZ0lJSUFCQmpBRnFJQUJCQ0dvZ0FVRUlhaUFBUWRnQ2FpQURRUXhxSUFOQkNHb1F6eG9oQUNBQlFSQnFKQUFnQTBFUWFpUUFJQUFMWndFQ2Z5TUFRUkJySWdVa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdRMkFnd2dCU0FFTmdJSUlBQkJqQUZxSWdRZ0JCRExCQ0FBS0FJSUlBVW9BZ2dnQVNBQ0tRTUFJQU1vQWdBUTNnb2lBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUZRUkJxSkFBZ0FBc1hBQ0FCS0FJQUlBQkJFR3BIQkVBZ0FDQUJFTWdKQ3dzd0FRSi9Jd0JCTUdzaUFpUUFJQUlnQUJEK0dpRURJQUFnQVJDL0R5QUJJQU1Rdnc4Z0F4Q3FBaUFDUVRCcUpBQUxHd0FnQUNBQktBSUFOZ0lBSUFCQkJHb2dBVUVFYWhCV0dpQUFDOWdCQVFOL0lBRWdBQ2dDbUFSTEJFQWdBQ2dDa0FRaEF5QUFJQUVRdVIwRFFDQUFLQUtVQkNBQ1RRUkFJQUFnQXhBMkJTQUNRU3hzSWdRZ0FDZ0NrQVJxSUFNZ0JHb2lCQkQrR2hvZ0JCQ3FBaUFDUVFGcUlRSU1BUXNMQ3lBQUtBS1VCQ0VDQTBBZ0FTQUNUd1JBQWtBZ0FDZ0NsQVFpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHRFFFZ0FDZ0NrQVFnQWtFc2JHb2lBMElBTndJa0lBTkJBRG9BSUNBRFFRQTZBQUFnQWtFQmFpRUNEQUFMQUFzRklBQW9BcEFFSUFKQkFXc2lBa0VzYkdvUXFnSU1BUXNMSUFBZ0FUWUNsQVFMUHdFQ2Z5QUFLQUlBQkVBZ0FDZ0NBQ0VDSUFBb0FnUWhBUU5BSUFFZ0FrY0VRQ0FCUVFSckVJVURJUUVNQVFzTElBQWdBallDQkNBQUtBSUFFQjhMQzRvQkFRSi9JQUFvQWhBaEFpQUFRUUEyQWhBQ1FBSi9JQUFnQWtZRVFDQUFJZ0lvQWdCQkVHb01BUXNnQWtVTkFTQUNLQUlBUVJScUN5RURJQUlnQXlnQ0FCRURBQXNnQVNnQ0VDSUNSUVJBSUFCQkFEWUNFQThMSUFFZ0FrWUVRQ0FBSUFBMkFoQWdBU2dDRUNJQklBQWdBU2dDQUNnQ0RCRUNBQThMSUFBZ0FqWUNFQ0FCUVFBMkFoQUxFZ0FnQUMwQWVBUkFJQUJCQ0dvUW5BUUxDNm9EQVFOL0FrQURRQUpBQWtBZ0FDZ0NCQ0lDUWJpdEVrY0VRQ0FBSUFGR0RRUWdBa0h3bnhKR0JFQWdBVVVOQXlBQktBSUVJZ0JCc0trU1JnUkFRUUVQQzBFQ1FYOGdBRUhRcUJKR0d3OExJQUpCMEtBU1J3MEJJQUZGRFFJZ0FTZ0NCQ0lBUVpDcUVrWUVRRUVERHdzZ0FFR2dzeEpHQkVCQkJBOExJQUJCOEo4U1JnUkFRUVVQQ3lBQVFiQ3BFa1lFUUVFR0R3dEJCMEYvSUFCQjBLZ1NSaHNQQ3lBQUtBSVlJQUZHRFFNTEFuOENRQUpBSUFJUWtRTUVRRUYvSVFJZ0FSQ3lBaUlCUlEwQklBQW9BaHdnQVNnQ0hFY05BU0FCUVJocURBTUxJQUpCOEtvU1JnUkFRWDhoQWlBQlJRMEJJQUVvQWdSQjhLb1NSdzBCSUFBb0FpUWdBU2dDSkVjTkFTQUFLQUlnSUFFb0FpQkhEUUVNQWdzZ0FrR1FvaEpHQkVCQmZ5RUNJQUZGRFFFZ0FTZ0NCRUdRb2hKSERRRWdBQ2dDSENBQktBSWNSZzBDREFFTElBSVE1Z05GRFFNZ0FDZ0NrQUVoQTBFQUlRSURRQ0FDSUFOR0RRUWdBa0VDZENFRUlBSkJBV29oQWlBRUlBQW9Bb3dCYWlnQ0FDQUJSdzBBQ3dzZ0FnOExJQUZCR0dvTElRRWdBQ2dDR0NFQUlBRW9BZ0FoQVF3QkN3dEJmdzhMUVFBTFZRRUJmeU1BUVJCcklnTWtBQ0FESUFFMkFnd2dBMElBTndNQUlBQWdBeWdDRENBREtRTUFFSjBFSWdCQjBMRVNOZ0lFSUFCQmxMSVNOZ0lBSUFBZ0FqWUNHQ0FBUWZDeEVqWUNBQ0FEUVJCcUpBQWdBQXZuQmdJTWZ3RjhJd0JCc0FKcklnSWtBQ0FDUVlBQmFoQkpJUVlDUUNBQktBSklJZ05GQkVBZ0FCQlZEQUVMSUFJQ2Z5QUJLQUpFSUFOQkFuUnFRUVJyS0FJQUlnTW9BamdnQXlnQ01Hb2lDYmdRdHcwaURwbEVBQUFBQUFBQTRFRmpCRUFnRHFvTUFRdEJnSUNBZ0hnTFFRRnFOZ0o4SUFJQ2Z5QUJJQUVvQWdBb0FoQVJBQUM0RUxjTklnNlpSQUFBQUFBQUFPQkJZd1JBSUE2cURBRUxRWUNBZ0lCNEMwRUJhallDZUNBQ0FuOGdBU0FCS0FJQUtBSVVFUUFBdUJDM0RTSU9tVVFBQUFBQUFBRGdRV01FUUNBT3Fnd0JDMEdBZ0lDQWVBdEJBV28yQW5RZ0FpQUNRZmdBYWpZQ2JDQUNJQUpCOUFCcU5nSm9JQUlnQWtIOEFHbzJBbVFnQWlBR05nSmdJQUVnQVNnQ0FDZ0NGQkVBQUNFSElBRWdBU2dDQUNnQ0VCRUFBQ0VFSUFKQjBBQnFJZ1VnQVJDRUFTSURJQU1vQWdBb0Fnd1JBZ0FnQmtFSWFpSURRYm53REJBT0dpQURJQVlvQWdoQkRHc29BZ0JxSUFJb0FudzJBZ3dnQTBIMzhBd1FEaG9nQTBHcitBZ1FEaG9nQXlBR0tBSUlRUXhyS0FJQWFpQUNLQUowTmdJTUlBTWdCeEFoR2lBRFFlajRDQkFPR2lBRElBWW9BZ2hCREdzb0FnQnFJQUlvQW5nMkFnd2dBeUFFRUNFYUlBTkI4dEFKRUE0YUlBTWdCUkFTR2lBRFFmbndEQkFPR2lBRkVBOGFRUUFoQndOQUlBRW9Ba2dnQjAwRVFDQUpJQUVnQVNnQ0FDZ0NFQkVBQUNJQlJ3UkFJQUpCNEFCcUlBbEJBU0FCSUFscklBSkJxSmdJRUJRaUFSRGNEeUFCRUE4YUN5QURRY2J3REJBT0dpQURJQVlvQWdoQkRHc29BZ0JxSUFJb0FuUWdBaWdDZUNBQ0tBSjhhbW8yQWd3Z0EwSDM4QXdRRGhvZ0EwSGM2UVlRRGhvZ0FDQUdRUXhxRUVJRklBRW9Ba1FnQjBFQ2RHb2lCQ2dDQUNFRkFrQWdCMFVOQUNBRVFRUnJLQUlBSWdSRkRRQWdCU2dDTUNJSUlBUW9BamdnQkNnQ01Hb2lCRVlOQUNBQ1FlQUFhaUFFUVFFZ0NDQUVheUFDUVVCclFmNlhDQkFVSWdRUTNBOGdCQkFQR2dzZ0FrRXdhaUlJSUFKQmtBSnFJZ1FnQlVFSWFoQldFRk1nQlNnQ09DRUxJQVVvQWpRaERDQUZLQUl3SVEwZ0JDQUlRZXkxREJDNEFpQUNRUkJxSWdvZ0JTZ0NLQkNFQVNJRklBVW9BZ0FvQWd3UkFnQWdBa0VnYWlJRklBUWdDaEJPSUFKQjRBQnFJQTBnRENBTElBVVEzQThnQjBFQmFpRUhJQVVRRHhvZ0NoQVBHaUFFRUE4YUlBZ1FEeG9NQVFzTEN5QUdFRkVnQWtHd0Ftb2tBQXV4QWdJQ2ZnTi9Jd0JCRUdzaUNDUUFJQWhCeUxBU0lBRVF4Z3MyQWd3Z0FpZ0NBQ0lLS0FJQUlna2dDaWdDQkVFQ2RHb2hDa0lISVFZRFFDQUpJQXBIQkVBZ0JrSitneUFHSUFrb0FnQW9BaWdwQXhBaUJrSUJnMUFiSWdkQ2U0TWdCeUFHUWdTRFVCc2lCMEo5Z3lBSElBWkNBb05RR3lFR0lBbEJCR29oQ1F3QkN3c2dDQ0FHTndNQUlBQWdDQ2dDRENBSUtRTUFFSjBFSWdCQnVMQVNOZ0lFSUFCQnBMRVNOZ0lBSUFCQjhMQVNOZ0lBSUFCQkdHb2dBUkJXR2lBQVFUUnFJQUlRNlFZZ0FFSUFOd0pjSUFBZ0JUWUNXQ0FBSUFRMkFsUWdBQ0FETmdKUUlBQkNBRGNDWkNBQVFnQTNBM0FnQUVHQWdJRDhBellDYkNBQVFnQTNBM2dnQUVLQWdJQ0FJRGNEa0FFZ0FDQUFRWVFCYWpZQ2pBRWdBRUdBZ0lEOEF6WUNnQUVnQ0VFUWFpUUFJQUFMVGdFQ2Z5QUFLQUlNQkVBZ0FDZ0NDQkN4QnlBQVFRQTJBZ2dnQUNnQ0JDRUNBMEFnQVNBQ1JnUkFJQUJCQURZQ0RBVWdBQ2dDQUNBQlFRSjBha0VBTmdJQUlBRkJBV29oQVF3QkN3c0xDeE1BSUFBdEFQQVBCRUFnQUVFSWFoREhCZ3NMSEFBZ0FDQUJLQUlBTmdJQUlBQkJDR29nQVVFSWFoRHJCUm9nQUFzT0FDQUFRU3hxRU4wR0lBQVFJd3NnQUNBQVFvQ0FnSUNBQVRjQ0pDQUFJQUEyQWlBZ0FFRXNhaERlQmhvZ0FBc1VBQ0FBUVlpUkVqWUNBQ0FBUVF4cUVDTWdBQXNJQUNBQUxRQThHZ3NOQUNBQUlBRkIrTzBQRU44U0M2Y0JBUVIvSXdCQm9BRnJJZ01rQUNBQUtBSUFJZ0lRSENBQ1FlUUJhaUFCRUpZUUlnUkZCRUFnQUNnQ0FDSUFFQndnQTBIOXJBTkJNMEVJSUFCQnlBSnFFQmNpQWtFWWFrR21sZ2tRRGhvZ0FpQUJLQUlFUVFScUVKb0JJZ1ZCR0dvaUFFSGM4UXdRRGhvZ0FFR0Q1QXNRRGhvZ0JVRVFhaUFCUVJCcUVLNERJQUJCMi9nTUVBNGFJQUJCOFBVTEVBNGFJQUFnQVJEZEF5QUNFQmdMSUFOQm9BRnFKQUFnQkF0WEFRSi9JQUFvQWdBaUFpZ0NBQ0lBSUFJb0FnUkJBblJxSVFJRFFBSkFJQUFnQWtZTkFDQUFLQUlBSWdNb0FnUkIwSXNTUnlBRFJYSkZCRUFnQXlnQ05DQUJSZzBCQ3lBQVFRUnFJUUFNQVFzTElBQWdBa2NMcUFFQkFYNGdBQkRLQXdSL1FRRUZJQUFFZndKL1FRQWdBQ2dDQkNJQUtRTVFRb0NBd0xDSXNJQ0VMSU1pQVNBQlFnRjlnMUFOQUJwQkFRSi9RUUFnQUNrREVFS0FnSUNnZ0lDQWhDaURJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FFSHdwQklRU0EwQUdpQUFFSkVEQ3cwQUdnSi9RUUFnQUNrREVFS0FnTUNRaUxDQWdBU0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FFSHdxaElRU0EwQUdpQUFFS0ljQ3dzRlFRQUxDd3NtQUNBQlFRRnFJZ0ZCQTAwRVFDQUFRUWhxSUFGQkFuUkJ4SXdTYWlnQ0FCQU9HZ3NnQUFzMkFRRi9Jd0JCRUdzaUF5UUFJQUlvQWdBUS9BSWhBaUFCS0FKOElRRWdBQ0FDTmdJRUlBQWdBaUFCY0RZQ0FDQURRUkJxSkFBTDJ3UUNDSDhDZmlNQVFjQUJheUlFSkFBZ0FTZ0NmQ0FCS0FLRUFTSUZRWllCYkVHV0FXcEI1QUJ1U1FSQUlBRWdCVUVCZEVFQ2FoRGxDd3NnQkVHNEFXb2dBU0FDRUpvSklBRW9BbndpQ2tFQmF5RUxJQUlvQWdBaEJ5QUJLQUo0SVFrZ0JDZ0N2QUVoQ0NBRUtBSzRBU0VHUVFBaEFnSkFBMEFnQWlBS1J3UkFJQWtnQmtFVWJHb2lCUzBBQ0VVRVFDQURLQUlBSVFNZ0JVRUJPZ0FJSUFVZ0F6WUNCQ0FGSUFjMkFnQWdDU0FHUVJSc2FpSURJQUkyQWhBZ0F5QUlOZ0lNSUFFZ0FTZ0NoQUZCQVdvMkFvUUJJQUVnQVNnQ2lBRkJBV28yQW9nQklBQWdCVUVFYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FGS0FJTUlBaEhEUUFnQnlBRktBSUFSdzBBSUFCQkFqWUNBQ0FBSUFWQkJHbzJBZ1FNQXdzZ0FpQUZLQUlRU3dSQUlBTW9BZ0FoQXlBRVFRRTZBS2dCSUFRZ0FqWUNzQUVnQkNBRE5nS2tBU0FFSUFjMkFxQUJJQVFnQ0RZQ3JBRWdCQ0FDTmdJUUlBUWdCQ2tEcUFFaUREY0RDQ0FFSUFRcEE2QUJJZzAzQXdBZ0JDQUZLQUlRTmdLd0FTQUVJQVVwQWdnM0E2Z0JJQVFnQlNrQ0FEY0RvQUVnQlNBQ05nSVFJQVVnRFRjQ0FDQUZJQXczQWdnZ0JDQUVLQUt3QVVFQmFqWUNzQUVnQVNBR1FRRnFJQUVvQW54d0lBUkJvQUZxRU9RTElBRWdBU2dDaEFGQkFXbzJBb1FCSUFFZ0FTZ0NpQUZCQVdvMkFvZ0JJQUFnQlVFRWFqWUNCQ0FBUVFBMkFnQU1Bd1VnQmtFQmFrRUFJQVlnQzBjYklRWWdBa0VCYWlFQ0RBSUxBQXNMSUFSQmhyVURRZXNEUVE0Z0JFR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdnVBUUVFZnlNQVFVQnFJZ0lrQUNBQ1FvQ0FnSUNBQVRjQ05DQUNJQUpCRUdvaUF6WUNNQ0FEUVFFUXNRa2dBaWdDTUNBQ0tBSTBJZ05CQW5ScUlBQTJBZ0FnQWlBRFFRRnFJZ0EyQWpRRFFDQUFCRUFnQWlBQ0tBSXdJQUJCQVdzaUFFRUNkR29vQWdBaUF6WUNEQ0FDSUFBMkFqUWdBUVJBSUFFZ0FrRU1haER3SEFzZ0F5Z0NJQ0lBSUFNb0FpUkJBblJxSVFVRFFDQUFJQVZHQkVBZ0FpZ0NOQ0VBREFNTElBSWdBQ2dDQUNJRU5nSUlJQVFvQXFBQlJRUkFJQVFnQXpZQ29BRWdBa0VRYWlBQ1FRaHFFTzhjQ3lBQVFRUnFJUUFNQUFzQUN3c2dBa0VRYWhBaklBSkJRR3NrQUF1UEJnRURmeU1BUVRCcklnSWtBQUpBSUFGRkRRQUNRQ0FBSUFFUWlnd2lBMFVOQUFKL0lBTW9BZ1FpQkVIWW5CSkdCRUFnQXlnQ0xFRUlhZ3dCQ3lBRUVMQUtCRUFnQXlnQ0VDSURSUTBDSUFNb0FnUkJnSmtTUncwQ0lBTkJtQUZxREFFTElBUVFsaDFGRFFFZ0F5Z0NFRUZBYXdzb0FnQWlBVVVOQVFzZ0FTZ0NCQ0lEUWRqM0VVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05Cbm9vSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUVpqNEVVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CdjRvSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWRqNEVVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CMVlzSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWVENUQwWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CLzRrSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWVqNUVVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05Cc1pZSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWFENUVVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CZ29nSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWJEckQwWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CaDRzSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWZqekQwY05BQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CbTQwSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnc2dBa0V3YWlRQUN3MEFJQUFnQVVHNDh3OFEzeElMQ2dBZ0FFR2dzeElRU0F2MEJBSUxmd0o5SXdCQkVHc2lDQ1FBSXdCQkVHc2lCaVFBSUFFb0FnQWhBd0pBQWtBZ0FDZ0NCQ0lDUlEwQUlBQW9BZ0FDZnlBQ1FRRnJJQU54SUFKcElnVkJBVTBOQUJvZ0F5QUNJQU5MRFFBYUlBTWdBbkFMSWdkQkFuUnFLQUlBSWdSRkRRQWdBa0VCYXlFS0lBVkJBVXNoQ3dOQUlBUW9BZ0FpQkVVTkFTQURJQVFvQWdRaUJVY0VRQUpBSUF0RkJFQWdCU0FLY1NFRkRBRUxJQUlnQlVzTkFDQUZJQUp3SVFVTElBVWdCMGNOQWd0QkFDRUZJQVFvQWd3aUNTQUJLQUlFSWd4R0RRSWdDU0FNSUFrb0FnQW9BZ2dSQVFCRkRRQUxEQUVMSUFZZ0FDQURJQUVROXdzQ1FFRUFJQUlnQUNnQ0RFRUJhck1pRFNBQUtnSVFJZzRnQXJPVVhoc05BQ0FBSUFJZ0FrRUJhM0ZCQUVjZ0FrRURTWElnQWtFQmRISWlBUUovSUEwZ0RwV05JZzFEQUFDQVQxMGdEVU1BQUFBQVlIRUVRQ0FOcVF3QkMwRUFDeUlISUFFZ0Iwc2JFUDRXSUFBb0FnUWlBaUFDUVFGcmNVVUVRQ0FDUVFGcklBTnhJUWNNQVFzZ0FpQURTd1JBSUFNaEJ3d0JDeUFESUFKd0lRY0xBa0FnQjBFQ2RDSURJQUFvQWdCcUtBSUFJZ0ZGQkVBZ0JpZ0NBQ0FBS0FJSU5nSUFJQUFnQmlnQ0FEWUNDQ0FBS0FJQUlBTnFJQUJCQ0dvMkFnQWdCaWdDQUNJQktBSUFJZ05GRFFFZ0F5Z0NCQ0VFQWtBZ0FpQUNRUUZySWdOeFJRUkFJQU1nQkhFaEJBd0JDeUFDSUFSTERRQWdCQ0FDY0NFRUN5QUFLQUlBSUFSQkFuUnFJQUUyQWdBTUFRc2dCaWdDQUNBQktBSUFOZ0lBSUFFZ0JpZ0NBRFlDQUFzZ0JpZ0NBQ0VFSUFaQkFEWUNBRUVCSVFVZ0FDQUFLQUlNUVFGcU5nSU1JQVlRaXdFTElBZ2dCVG9BRENBSUlBUTJBZ2dnQmtFUWFpUUFJQWdvQWdnYUlBaEJFR29rQUF2S0FRRUhmd0pBSUFBb0FnUWlBMFVOQUNBQktBSUFJUVFnQUNnQ0FBSi9JQU5CQVdzZ0JIRWdBMmtpQWtFQlRRMEFHaUFFSUFNZ0JFc05BQm9nQkNBRGNBc2lCVUVDZEdvb0FnQWlBRVVOQUNBRFFRRnJJUVlnQWtFQlN5RUhBMEFnQUNnQ0FDSUFSUTBCSUFRZ0FDZ0NCQ0lDUndSQUFrQWdCMFVFUUNBQ0lBWnhJUUlNQVFzZ0FpQURTUTBBSUFJZ0EzQWhBZ3NnQWlBRlJ3MENEQUVMSUFBb0Fnd2lBaUFCS0FJRUlnaEhCRUFnQWlBSUlBSW9BZ0FvQWdnUkFRQkZEUUVMQ3lBQUR3dEJBQXRLQVFGL0l3QkJJR3NpQWlRQUlBSWdBQ2tDR0RjREdDQUNJQUFwQWhBM0F4QWdBaUFBS1FJSU53TUlJQUlnQUNrQ0FEY0RBQ0FBSUFFUXZoQWdBU0FDRUw0UUlBSkJJR29rQUF0Q0FRRi9JQUZCZ0lDQWdBUlBCRUJCdk5BQkVKWU1BQXRCLy8vLy93TWdBQ2dDQ0NBQUtBSUFheUlBUVFGMUlnSWdBU0FCSUFKSkd5QUFRZnovLy84SFR4c0xDQUFnQUMwQU1Cb0x0d0VCQm44Z0FSRDBBeUVEQWtBZ0FDZ0NCQ0lDUlEwQUlBQW9BZ0FDZnlBQ1FRRnJJQU54SUFKcElnUkJBVTBOQUJvZ0F5QUNJQU5MRFFBYUlBTWdBbkFMSWdWQkFuUnFLQUlBSWdCRkRRQWdBa0VCYXlFR0lBRW9BZ0FoQnlBRVFRRkxJUVFEUUNBQUtBSUFJZ0JGRFFFZ0FDZ0NCQ0lCSUFOSEJFQUNRQ0FFUlFSQUlBRWdCbkVoQVF3QkN5QUJJQUpKRFFBZ0FTQUNjQ0VCQ3lBQklBVkhEUUlNQVFzZ0FDZ0NDQ0FIUncwQUN5QUFEd3RCQUFzMEFRTi9JQUVRM0FFaUF5QUFLQUlFSUFBdEFBc2lCQ0FFUVJoMFFSaDFRUUJJRzBZRWZ5QUFJQUVnQXhDYkV3VkJBUXRGQ3c0QUlBQVFIQ0FBUVJCcUVMd2RDeEFBSUFBUUhDQUFRUkJxSUFFUS9SMEx3Z1lDQ0g4Q2ZpTUFRY0FCYXlJRkpBQWdBU2dDOUFFZ0FTZ0MvQUVpQkVHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUWVBQWF5SUdKQUJCRENBRVFRRjBRUUpxUVpZQmJFSGtBRzRpQkNBRVFReE5HeUlISUFFb0F2UUJTd1JBSUFaQ2dJQ0FnSUFCTndKVUlBWWdCa0VRYWlJRU5nSlFJQVFnQVNnQy9BRVFzUVFnQVNnQzhBRWlCQ0FCS0FMMEFVRVViR29oQ0FOQUFrQWdCQ0FJUmdSQUlBRVFzZ1VnQVNBSEVQTUVJQVlvQWxBaUJDQUdLQUpVUVFOMGFpRUhEQUVMSUFRdEFBZ0VRQ0FHUVJCcUlBUVF1Z0lRc1FVTElBUkJGR29oQkF3QkN3c0RRQ0FFSUFkSEJFQWdCa0VJYWlBQklBUWdCRUVFYWhDcENTQUVRUWhxSVFRTUFRc0xJQVpCRUdvUWxRRUxJQVpCNEFCcUpBQUxJQVZCdUFGcUlBRWdBaER5QkNBQktBTDBBU0lLUVFGcklRc2dBaWdDQUNFSElBRW9BdkFCSVFnZ0JTZ0N2QUVoQ1NBRktBSzRBU0VHUVFBaEFnSkFBMEFnQWlBS1J3UkFJQWdnQmtFVWJHb2lCQzBBQ0VVRVFDQURLQUlBSVFNZ0JFRUJPZ0FJSUFRZ0F6WUNCQ0FFSUFjMkFnQWdCU2dDdkFFaEF5QUlJQVpCRkd4cUlnWWdBallDRUNBR0lBTTJBZ3dnQVNBQktBTDhBVUVCYWpZQy9BRWdBU0FCS0FLQUFrRUJhallDZ0FJZ0FDQUVRUVJxTmdJRUlBQkJBRFlDQUF3REN3SkFJQVFvQWd3Z0NVY05BQ0FISUFRb0FnQkhEUUFnQUVFQ05nSUFJQUFnQkVFRWFqWUNCQXdEQ3lBQ0lBUW9BaEJMQkVBZ0F5Z0NBQ0VESUFWQkFUb0FxQUVnQlNBQ05nS3dBU0FGSUFNMkFxUUJJQVVnQnpZQ29BRWdCU0FKTmdLc0FTQUZJQUkyQWhBZ0JTQUZLUU9vQVNJTU53TUlJQVVnQlNrRG9BRWlEVGNEQUNBRklBUW9BaEEyQXJBQklBVWdCQ2tDQ0RjRHFBRWdCU0FFS1FJQU53T2dBU0FFSUFJMkFoQWdCQ0FOTndJQUlBUWdERGNDQ0NBRklBVW9BckFCUVFGcU5nS3dBU0FCSUFaQkFXb2dBU2dDOUFGd0lBVkJvQUZxRUxJRUlBRWdBU2dDL0FGQkFXbzJBdndCSUFFZ0FTZ0NnQUpCQVdvMkFvQUNJQUFnQkVFRWFqWUNCQ0FBUVFBMkFnQU1Bd1VnQmtFQmFrRUFJQVlnQzBjYklRWWdBa0VCYWlFQ0RBSUxBQXNMSUFWQmhyVURRZXNEUVE0Z0JVR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCVUhBQVdva0FBc09BQ0FBRUJ3Z0FFRVFhaEQrSFFzS0FDQUFRZkQ2RHhCSUN6UUJBbjhnQUNnQ0FDRUJJQUFvQWdRaEFnTkFBa0FnQVNBQ1JnMEFJQUV0QUFnTkFDQUFJQUZCRkdvaUFUWUNBQXdCQ3dzTHB3RUJCSDhnQUJBY0l3QkJNR3NpQkNRQUlBUkJDR29nQVNnQ0FDQUNLQUlBSUFNb0FnQVF2UXNpQlNnQ0NDRUdJQVFnQlRZQ0JDQUVJQVkyQWdBQ1FDQUFRUkJxSWdWQkhHb2lCeUFFRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQlNBRkVLWUVJQUVvQWdBZ0FpZ0NBQ0FES0FJQUVMMExJZ0FRS0NBRklBVW9BaGhCQVdvMkFoZ2dCQ0FBTmdJRUlBUWdCallDQUNBSElBUVF2QUVMSUFSQk1Hb2tBQ0FBQ3hNQUlBQkZCRUJCQUE4TElBQW9BZ1FRdHhBTGlnRUJBbjhnQUNBQk5nTDRPU0FBUVlnNmFrRUFOZ0lBSUFCQmdEcHFRZ0EzQWdBZ0FFSDhPV3BCOFpVRU5nSUFJQUJCcUIxcUlRTWdBQ0FCRUtvRklRRWpBRUVRYXlJQUpBQUNRQ0FCUlEwQUlBRVEyQkFpQWcwQUlBQkJCRFlDRENBQVFmR1ZCRFlDQ0NBQUlBQXBBd2czQXdBZ0F5QUJJQUFRcGdWQkFDRUNDeUFBUVJCcUpBQWdBZ3NRQUNBQUxRQU1SUVJBRUc4QUN5QUFDNFlCQVFOL0lBRWdBQ2dDS0VzRVFDQUFLQUlnSVFNZ0FDRUNJQUFnQVVFSVR3Ui9RWDhnQVVFQ2RDQUJRZi8vLy84RFN4c1FGU0VDSUFFRlFRZ0xOZ0lvSUFBZ0FqWUNJQ0FBS0FJa0lRSkJBQ0VCQTBBZ0FTQUNSZ1JBSUFBZ0F4QTJCU0FCUVFKMElnUWdBQ2dDSUdvZ0F5QUVhaWdDQURZQ0FDQUJRUUZxSVFFTUFRc0xDd3R5QVFOL0lBQkNnSUNBZ0lBQk53SWtJQUFnQURZQ0lDQUFJQUVvQWdRaUFoQTVJQUVvQWdBaUFTQUNRUUowYWlFRUlBQW9BaVFoQXdOL0lBRWdCRVlFZnlBQUJTQUFJQU5CQVdvaUFqWUNKQ0FBS0FJZ0lBTkJBblJxSUFFb0FnQTJBZ0FnQVVFRWFpRUJJQUloQXd3QkN3c0xUQUVCZndKQUlBQXRBQ0FpQWlBQkxRQWdSZ1JBSUFKRkRRRWdBQ0FCRU44RUlBQWdBU2dDSERZQ0hBd0JDeUFDQkVBZ0FCQ1JEQXdCQ3lBQUlBRVE3aEFMSUFBZ0FTa0NKRGNDSkF0REFRRi9Jd0JCb0FGcklnSWtBQ0FDUVphdUJVSC9BRUVJSUFBUUZ5SUFRUmhxUWZxVERCQU9HaUFBSUFFb0FnUkJCR29RbWdFYUlBQVFHQ0FDUWFBQmFpUUFDeXNBSUFCQkFEb0FJQ0FBUVFBNkFBQWdBUzBBSUFSQUlBQWdBUkR1RUFzZ0FDQUJLUUlrTndJa0lBQUxXQUVDZnlNQVFhQUNheUlCSkFBZ0FFSGtFV29vQWdCQkFrOEVRQ0FBUWVRUmFpSUNJQUlvQWdCQkFXc2lBallDQUNBQklBQW9BdUFSSUFKQm5BSnNhaUlBRU9jUUlBQVErd2NnQVJEN0J3c2dBVUdnQW1va0FBdDNBUU4vSXdCQm9BSnJJZ0lrQUNBQ0VNc2VJUU1nQUVIa0VXb29BZ0FpQVNBQVFlZ1JhaWdDQUU4RVFDQUFJQUJCNkJGcUtBSUFJZ0ZCQVhSQkFpQUJHeERHSGlBQUtBTGtFU0VCQ3lBQUlBRkJBV28yQXVRUklBQW9BdUFSSUFGQm5BSnNhaUFERU9jUUlBTVErd2NnQWtHZ0Ftb2tBQXZrQkFJRGZ3RitJQUVvQWdBaUFpZ0NBQ0lCSUFJb0FnUkJBblJxSVFRRFFBSkFJQUFDZndKQUlBRWdCRWNFUUFKQUlBRW9BZ0FpQTBVTkFDQURLQUlFSWdKQnNQb1JSaUFDUWZqNkVVWnlJQUpCd1BzUlJpQUNRWWo4RVVaeWNnMENJQUpCMFB3UlJnUkFJQUFnQXlnQ0pCRGZBU0FEUVNocURBUUxJQUpCbVAwUlJpQUNRZUQ5RVVaeUlBSkIrUDBSUm5JTkFpQUNRYWo2RDBZRVFDQUFJQU1vQWlRUTN3RWdBQ0FES0FJb0VOOEJJQU5CTEdvTUJBc2dBaEQyQTBVTkFDQURLQUlvSWdJZ0F5Z0NMRUVDZEdvaEF3TkFJQUlnQTBZTkJTQUFJQUlvQWdBUTN3RWdBa0VFYWlFQ0RBQUxBQXNnQXdSL0FuOUJBQ0FES0FJRUlnSXBBeEJDaHFHS2hJU2hrS0RDQUlNaUJTQUZRZ0Y5ZzFBTkFCcEJBUUovUVFBZ0Fpa0RFRUtDZ0lpQWhLR0FnTUlBZ3lJRklBVkNBWDJEVUEwQUdrRUJBbjlCQUNBQ0tRTVFRb0tBaUlDQW9JQ0FBb01pQlNBRlFnRjlnMUFOQUJwQkFTQUNFTWNRRFFBYUlBSkJrSUlTRUVnTERRQWFBbjlCQUNBQ0tRTVFRb0NBaUlDRWdZQ0F3QUNESWdVZ0JVSUJmWU5RRFFBYVFRRWdBaERxSFEwQUdpQUNFT3NkQ3dzTkFCb0NmMEVBSUFJcEF4QkNoS0dDaElDQWtLQUNneUlGSUFWQ0FYMkRVQTBBR2tFQkFuOUJBQ0FDS1FNUVFvQ2hnZ1NESWdVZ0JVSUJmWU5RRFFBYVFRRWdBaEM5SGcwQUdpQUNRWWpxRHhCSUN3MEFHZ0ovUVFBZ0Fpa0RFRUtFZ0lDQWdJQ1FvQUtESWdVZ0JVSUJmWU5RRFFBYVFRRWdBa0hZZ2hJUVNBMEFHaUFDUWFDREVoQklDd3NMQlVFQUN3MERJQUFvQWdRZ0F4QzBDUXdEQ3c4TElBTkJKR29MS0FJQUVOOEJDeUFCUVFScUlRRU1BQXNBQ3hrQkFYOGdBU0FBS0FJa1JnUi9JQUlnQUJDMkFnVkJBQXNMR3dBZ0FFS0FnSUNBRURjQ0NDQUFJQUEyQWdRZ0FDQUJFUGdlQzE4QkJIOGdBU0FBS0FJb1N3UkFJQUFvQWlBaEFpQUFJQUVRdmdrZ0FDZ0NKQ0VESUFBb0FpQWhCRUVBSVFFRFFDQUJJQU5HQkVBZ0FDQUNFRFlGSUFRZ0FVRUNkQ0lGYWlBQ0lBVnFLQUlBTmdJQUlBRkJBV29oQVF3QkN3c0xDME1CQW44Z0FDZ0NBQ0VCSUFCQkFEWUNBQUpBSUFGRkRRQWdBQ2dDQkNFQUEwQWdBaUFBS0FJQVR3MEJJQUpCQVdvaEFpQUJFSzhGUVl3QmFpRUJEQUFMQUFzTGhBUUJCSDhqQUVHZ0FXc2lCU1FBQWtBQ1FBSkFJQUlPQXdJQ0FBRUxJQUZCQkdzb0FnQWdBQ2dDaUFGUERRRWdBQ0FCUVl3QmF4Q2NEQXdCQ3lBQ1FRQk1CRUFnQUNBQlJnMEJJQUFoQkFOQUlBUkJqQUZxSWdRZ0FVWU5BaUFGUVJCcUlBUVE1UUloQWlBRUlRTURRQUpBQWtBZ0FDQURSZ1JBSUFBaEF3d0JDeUFGS0FLWUFTQURRUVJyS0FJQVNRMEJDeUFESUFJUTVBSWFJQUlRcndVYURBSUxJQU1nQTBHTUFXc2lBeERrQWhvTUFBc0FDd0FMSUFBZ0FrRUJkaUlHUVl3QmJDSUlhaUVISUFJZ0JFd0VRQ0FGUVFBMkFnZ2dCU0FETmdJUUlBVWdCVUVJYWpZQ0ZDQUFJQWNnQmlBREVKTWZJQVVnQmpZQ0NDQUhJQUVnQWlBR2F5QURJQWhxSWdFUWt4OGdCU0FDTmdJSUlBTWdBa0dNQVd4cUlRUWdBU0VDQTBBQ1FDQUJJQU5HQkVBRFFDQUNJQVJHRFFJZ0FDQUNFT1FDUVl3QmFpRUFJQUpCakFGcUlRSU1BQXNBQ3lBQ0lBUkdCRUFEUUNBQklBTkdEUUlnQUNBREVPUUNRWXdCYWlFQUlBTkJqQUZxSVFNTUFBc0FCUUpBSUFJb0FvZ0JJQU1vQW9nQlNRUkFJQUFnQWhEa0Fob2dBa0dNQVdvaEFnd0JDeUFBSUFNUTVBSWFJQU5CakFGcUlRTUxJQUJCakFGcUlRQU1BZ3NBQ3dzZ0JVRVFhaEM4Q1F3QkN5QUFJQWNnQmlBRElBUVF2UWtnQnlBQklBSWdCbXNpQWlBRElBUVF2UWtnQUNBSElBRWdCaUFDSUFNZ0JCQ0pFUXNnQlVHZ0FXb2tBQXNUQUNBQUlBRkIvLy8vL3dOQkFrRUlFT01TQ3h3QUlBQkNnSUNBZ0lBQk53SWtJQUFnQURZQ0lDQUFJQUVRa0JFTG5RRUJCSDhnQUJBY0l3QkJNR3NpQXlRQUlBTkJDR29nQVNnQ0FDQUNLQUlBRU1JTElnUW9BZ2doQlNBRElBUTJBZ1FnQXlBRk5nSUFBa0FnQUVFUWFpSUVRUnhxSWdZZ0F4QzlBU0lBQkVBZ0FDZ0NEQ0VBREFFTElBUWdCQkNtQkNBQktBSUFJQUlvQWdBUXdnc2lBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQURJQUEyQWdRZ0F5QUZOZ0lBSUFZZ0F4QzhBUXNnQTBFd2FpUUFJQUFMRXdBZ0FDQUJRZi8vLy84RFFRSkJCQkR0RWdzakFDQUFJQUVwQWdBM0FnQWdBRUVJYWlBQlFRaHFFSlVmSUFBZ0FTZ0NWRFlDVkF2UEZRSVNmd0YrSXdCQjhBMXJJZ2drQUNBSVFid0tha0tBZ0lDQWdBRTNBZ0FnQ0NBSVFkZ0JhaUlKTmdLNENpQUpJQUl0QUFBUW5COGdBVUVJYWlFUklBaEIvQXRxSVJjZ0NFSEFDMnBCQkhJaEdDQUlRYmdLYWlFWkFrQUNRQU5BQWtBZ0FpMEFBQ0FRVFFSQUlCSU5BeUFJUWRnQmFpSUJFSnNmSUFnZ0dUWUMwQUVnQ0NBQklBZ29BcmdLUnpvQTFBRWdCeWdDRUNJQlJRMEJJQUVnQ0VIUUFXb2dBU2dDQUNnQ0dCRUNBQ0FBUVFCQnlBQVFlU0lBUW9DQWdJQ0FBVGNDVENBQUlBQkJDR28yQWtnTUJBc0NRQ0FFS0FJQUloTW9BZ1FpQ1NBQ0tBSUVJQkJCS0d4cUlnMHRBQUFpQzBjRVFDQUpJQXNnQ1NBTFN4c2dDU0FMSUFrZ0Mwa2JJZ3RyUVFOc0lnb05BUXNnQmlnQ01DQUdLQUlVYWlJSklBMHRBQUlnRFMwQUFXcHJJZ3BCQUNBSklBcFBHeUVLQzBFQUlRa2dDRUZBYXlBR0VJTUlJUTREUUNBSklBdEdCRUFDUUNBS0RRQkJBQ0VKUVFBaENnTkFJQTB0QUFFZ0NVc0VRQUpBSUEwb0FnUWdDVUVEZEdvaURDMEFCRUgvQVVZTkFBSkFJQWdvQWxRZ0NVME5BQ0FKUVFKMElnOGdDQ2dDVUdvb0FnQWlGVVVOQUNBQktBSUVJUllnQ0NBTVFRUnFOZ0wwRENBSUlBVTJBdkFNSUFnZ0RUWUM3QXdnQ0NBUk5nTG9EQ0FJSUE0MkF1UU1JQWdnRmpZQzRBd2dDRUhnREdvZ0ZSQ3JBaUlNUlEwQUlBa2dDQ2dDVkU4RVFDQU9JQWxCQVdvUW53d0xJQWdvQWxBZ0Qyb2dERFlDQUF3QkN5QUtRUUZxSVFvTElBbEJBV29oQ1F3QkN3c2dDZzBBUVFBaENVRUFJUW9EUUNBSklBMHRBQUpQRFFFQ1FDQUpRUU4wSWd3Z0RTZ0NDR29pRHkwQUJFSC9BVVlOQUFKQUlBZ29BbkFnQ1UwTkFDQUlLQUpzSUF4cUtRSUFJaHBDZ0lDQWdIQ0RRb0NBZ0lBUVVnMEFJQUVvQWdRaERDQUlJQTlCQkdvMkF2UU1JQWdnQlRZQzhBd2dDQ0FOTmdMc0RDQUlJQkUyQXVnTUlBZ2dEallDNUF3Z0NDQU1OZ0xnRENBSUlCbzNBNEFMSUFnZ0dqY0RBQ0FJUWNnS2FpQUlRZUFNYWlBSUVLOEVJQWdvQXN3S1FRRkdEUUVMSUFwQkFXb2hDZ3NnQ1VFQmFpRUpEQUFMQUFzZ0NFS0FnSUNBZ0FFM0FxUU5JQWdnQ0VIZ0RHbzJBcUFOQWtBZ0NnMEFJQWhCNEF4cUlBc1FzUVJCQUNFSkEwQWdDU0FMUmcwQklBRW9BZ1FoRENBSUlBMG9BZ3dnQ1VFRGRHb2lGU2dDQkRZQzNBb2dDQ0FGTmdMWUNpQUlJQTAyQXRRS0lBZ2dFVFlDMEFvZ0NDQU9OZ0xNQ2lBSUlBdzJBc2dLSUFoQnlBcHFJQk1vQWdBZ0NVRUNkR29vQWdBUWhBRVFxd0loRmlBSUtBS2tEU0lNSUFnb0FxZ05JZzlQQkVBZ0NFSGdER29nRDBFQmRFRUNJQThiRUxFRUlBZ29BcVFOSVF3TElBZ2dERUVCYWpZQ3BBMGdDQ2dDb0EwZ0RFRURkR29pRENBV05nSUFJQXdnRlNnQ0FEWUNCQ0FKUVFGcUlRa01BQXNBQ3lBSUlBMDJBc0FMSUJnZ0RoQ0RDQm9nRnlBSVFlQU1haUlKRUlzUklBZ2dDallDeUF3Z0NSQ1ZBU0FPRUxBRUlBZ29Bc2dNSWdsRklRb2dGQ0FRSUFrYklSUWdDaUFTYWlFU0lBZ29BcndLSWdrZ0NDZ0N3QXBQQkVBZ0NFSFlBV29RbVI4Z0NDZ0N2QW9oQ1FzZ0NDQUpRUUZxTmdLOENpQUlLQUs0Q2lBSlFZd0JiR29nQ0VIQUMyb2lDUkRsQWhvZ0VFRUJhaUVRSUFrUXJ3VWFEQU1GSUFFb0FnUWhEQ0FJSUEwb0Fnd2dDVUVEZEdvb0FnUTJBdlFNSUFnZ0JUWUM4QXdnQ0NBTk5nTHNEQ0FJSUJFMkF1Z01JQWdnRGpZQzVBd2dDQ0FNTmdMZ0RDQUtJQXBCQW1vZ0NFSGdER29nRXlnQ0FDQUpRUUowYWlnQ0FCQ0VBUkNyQWhzaENpQUpRUUZxSVFrTUFRc0FDd0FMQ3hCdkFBc2dDRUtBZ0lDQWdBRTNBOEFCSUFnZ0NFSDhBR29pRERZQ3ZBRWdDRUtBZ0lDQUlEY0NkQ0FJSUFoQjRBQnFOZ0p3SUFoQ2dJQ0FnTUFBTndOWUlBZ2dDRUZBYTBFRWNpSVROZ0pVQWtBQ1FDQVNRUUZHQkVBZ0NFRkFheUFJS0FLNENpQVVRWXdCYkdvUTVBSW9BZ0FoQ1F3QkN5QUVLQUlBSVFjZ0NFRUlhaUFHRUpnZklRMGdDRUdrQzJwQ2dJQ0FnSUFCTndJQUlBZ2dDRUdBQzJvaUFqWUNvQXNnQnlnQ0JDRUVJQWhCZnpZQ3dBc2dDRUhBQzJvaENTQUNJQVFRdXdrZ0FpZ0NKQ0lHSUFRZ0JDQUdTUnNoQ2lBQ0tBSWdJUXNEUUNBR0lBcEdCRUFnQWlBRU5nSWtCU0FMSUFaQkFuUnFJQWtvQWdBMkFnQWdCa0VCYWlFR0RBRUxDeUFJS0FLNENpSUxJQWdvQXJ3S1FZd0JiR29oRWtFQUlRbEJBQ0VLQTBBZ0NpRUVJQWtoQWlBTElCSkdCRUFDUUNBRVFRRkxCRUFnQ0VIWUFXb1FteDhnQ0VISUNtb2dEUkNEQ0NFRUlBaEI0QXhxRUVraUJrRUlhaUlDUWJ1cENoQU9HaUFDSUFNUURocEJBQ0VKQTBBQ1FBSkFJQWxCZjBZTkFDQUpJQVFvQWhSSkJFQWdCQ2dDRUNBSlFRSjBhaWdDQUNJS0RRSUxJQWxGRFFBZ0FrR0w1Z1lRRGhvTElBSkJtZjhJRUE0YUlBY29BZ0FpQ1NBSEtBSUVRUUowYWlFTFFRRWhCd05BQWtBZ0NTQUxSZ1JBSUFKQngvWU1FQTRhSUFnb0FyZ0tJZ2tnQ0NnQ3ZBcEJqQUZzYWlFSEEwQWdCeUFKUmcwQ0lBa29Bb2dCUlFSQUlBSkIzL0FNRUE0YUlBRWdCaUFKS0FJQUlBTVFseDhnQWhEaUFSb0xJQWxCakFGcUlRa01BQXNBQ3lBSktBSUFJUW9nQjBVRVFDQUNRZlR0REJBT0dnc2dDRUhBQzJvaUJ5QUtJQW9vQWdBb0Fnd1JBZ0FnQWlBSEVCSWFJQWxCQkdvaENTQUhFQThhUVFBaEJ3d0JDd3NnQVNnQ0JDSURFQndnQ0VIQUMyb2lBa0hsdFFWQjVnMUJDQ0FEUWNnQ2FoQVhJUU1nQ0VHd0Myb2lCeUFHUVF4cUVFSWdBMEVZYWlBSEVCSWFJQWNRRHhvZ0F4QVlJQVlRVVNBRUVMQUVJQUpCQUVFd0VIa2FJQWhCOUF0cVFvQ0FnSUFnTndJQUlBaEI4QXRxSUFoQjRBdHFOZ0lBSUFoQjNBdHFRUVEyQWdBZ0NFSFVDMm9nQWtFRWNqWUNBQ0FJUWZ3TGFrRUFRY0FBRUhraEFpQUlRY0FNYWtLQWdJQ0FnQUUzQXdBZ0NFRzhER29nQWpZQ0FDQUlRUUEyQXNnTURBTUxJQUpCOU8wTVFkcnBCaUFKR3hBT0dpQUlRY0FMYWlJTElBb2dDaWdDQUNnQ0RCRUNBQ0FDSUFzUUVob2dDVUVCYWlFSklBc1FEeG9NQUFzQUN5QUlRY0FMYWlBQ0VPVUNHZ3NnQ0VHQUMyb1FJeUFJUVVCcklBaEJ3QXRxSWdJUTVBSWhBeUFDRUs4RkdpQU5FTEFFSUFNb0FnQWlDUTBDSUFCQkFFSElBQkI1SWdCQ2dJQ0FnSUFCTndKTUlBQWdBRUVJYWpZQ1NBd0RCUUpBSUFzb0FvZ0JSUVJBSUF0QmlBRnFJUkJCQUNFT1FRQWhCa0VBSVFrQ2Z3TkFJQWNvQWdRZ0NVMEVRQ0FDSUE1RkRRSWFCU0FKUVFKMElnOGdCeWdDQUdvb0FnQWdDeWdDZkNBSlFRTjBhaWdDQUJDS0NTRUtBa0FnQ2lBSUtBS2dDeUFQYWlJUEtBSUFJaFJKQkVBZ0R5QUtOZ0lBUVFFaERnd0JDeUFLSUJSTElBWnlJUVlMSUFsQkFXb2hDUXdCQ3dzZ0JFRUJhaUVLSUFaQkFYRUVRQ0FDSVFrTUF3c2dDeUVKSUFKRkRRSWdBa0dJQVdvaEVDQUxDeUVKSUJCQkFUWUNBQXNnQkNFS0N5QUxRWXdCYWlFTERBRUxBQXNBQ3dKQUlBa29BaEFpQXdSQUlBaEI0QXhxUVFCQ0FCQ2RCQ0lDUWZDRkVEWUNCQ0FDUVlpY0VEWUNBQ0FCS0FJRUlRUWdDQ0FETmdMVUN5QUlJQVUyQXRBTElBZ2dDQ2dDUURZQ3pBc2dDQ0FSTmdMSUN5QUlJQk0yQXNRTElBZ2dCRFlDd0FzZ0NFSEFDMm9nQWhDckFpSUtEUUVnQVNnQ0JDSUJFQndnQ0VIQUMycEI1YlVGUVpnTFFRZ2dBVUhJQW1vUUZ5SUJRUmhxUVk3OUFoQU9HaUFCRUJnZ0FFRUFRY2dBRUhraUFFS0FnSUNBZ0FFM0Frd2dBQ0FBUVFocU5nSklEQUlMSUFFb0FnUVFoQXdoQ2dzZ0NDZ0NRQ0VCSUFBZ0NqWUNCQ0FBSUFFMkFnQWdBRUVJYWlBTUVJd1JDeUFJUVVCckVLOEZHZ3NnQ0VIWUFXb1FpaEVnQ0VId0RXb2tBQXNsQUNBQUVLZ01JQUJCR0JDRUNDQUFRUUEyQXV3U0lBQWdBQ2dDOEJKQkFXbzJBdkFTQ3hrQUlBRW9BZ0FpQVNBQVFRaHFSd1JBSUFBZ0FSQ29IUXNMS0FFQmZ3TkFJQUJCQVhFZ0FVRWZTM0pGQkVBZ0FFRUJkaUVBSUFGQkFXb2hBUXdCQ3dzZ0FRdDVBUU4vSXdCQmtBRnJJZ1VrQUNBRkVFa2lCa0VJYWlJRVFmT2FDUkFPR2lBRUlBRVF2QUlhSUFSQjkvQU1FQTRhSUFRZ0FoQU9HaUFFUWZmd0RCQU9HaUFFSUFNUXZBSWFJQVJCeDRvSkVBNGFJQVJCdXYwR0VBNGFJQVJCODVvSkVBNGFJQUFnQmtFTWFoQkNJQVlRVVNBRlFaQUJhaVFBQzBjQkFYOGdBUzBBQkFSQUlBQVFYaUFBSUFFb0FnQWlBaWtDQURjQ0VDQUFJQUlvQWdnMkFoZ2dBU2dDQUNJQVFRQTJBZ2dnQUVJQU53SUFEd3NnQUNBQktBSUFFS1VNQ3hNQUlBQkZCRUJCQUE4TElBQW9BZ1FRNWdNTGx3RUJBbjhqQUVFZ2F5SUhKQUFnQjBFWWFpSUlJQUVnQWlBRElBWVEyUUVDUUNBSUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFUWFpSUlJQUVnQWlBRklBUVEyUUVnQ0JBd0JFQWdBRUVDT2dBRURBRUxJQWRCQ0dvaUNDQUJJQUlnQjBFWWFoQWFLZ0lBSUFkQkVHb1FHaW9DQUJEL0F5QUlFREFFUUNBQVFRSTZBQVFNQVFzZ0FDQUhLUU1JTndJQUN5QUhRU0JxSkFBTGx3RUJBbjhqQUVFZ2F5SUhKQUFnQjBFWWFpSUlJQUVnQWlBRElBWVEyZ0VDUUNBSUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFUWFpSUlJQUVnQWlBRklBUVEyZ0VnQ0JBd0JFQWdBRUVDT2dBRURBRUxJQWRCQ0dvaUNDQUJJQUlnQjBFWWFoQWFLZ0lBSUFkQkVHb1FHaW9DQUJDQUJDQUlFREFFUUNBQVFRSTZBQVFNQVFzZ0FDQUhLUU1JTndJQUN5QUhRU0JxSkFBTG5BRUJBbjhqQUVFd2F5SUhKQUFnQjBFZ2FpSUlJQUVnQWlBRElBWVEyd0VDUUNBSUVHSUVRQ0FBUVFJNkFBZ01BUXNnQjBFUWFpSUlJQUVnQWlBRklBUVEyd0VnQ0JCaUJFQWdBRUVDT2dBSURBRUxJQWNnQVNBQ0lBZEJJR29RU2lzREFDQUhRUkJxRUVvckF3QVFnUVFnQnhCaUJFQWdBRUVDT2dBSURBRUxJQUFnQnlrREFEY0RBQ0FBSUFjcEF3ZzNBd2dMSUFkQk1Hb2tBQXRLQVFKL0l3QkJzQUZySWdFa0FDQUFMUUFJUlFSQUlBRkJoNmtEUVk0QlFRNGdBVUdnQVdvUUhTSUFFQmNpQWtFWWFrRzAzZ2dRRGhvZ0FoQVlJQUFRSGdzZ0FVR3dBV29rQUFzVUFDQUFRUUEyQXZRQklBQWdBQ2dDOEFFUU5nc1lBUUY5SUFBcUFnd2lBVU1BQUFBQVd5QUJ2RUVBVG5FTENBQWdBQ2dDREVVTEdBQWdBRUhnaEE0MkFnQWdBRUVnYWhBUEdpQUFFSm9LQzdzREFRWi9Jd0JCNEFKcklnSWtBQ0FDUWRBQmFoQ0lBeUlFSUFRb0FnQkJER3NpQXlnQ0FHb2lCU0FGS0FJRVFZUUljallDQkNBQ1FjZ0JhaUlGSUFRZ0F5Z0NBR29RaXdZUWhnZ2dCUkJrSUFRZ0JDZ0NBRUVNYXlnQ0FHcEJGRFlDQ0NBRVFRaHFJQUVyQXdBUW1BMGdBa0c0QVdvZ0JFRU1haEJDSUFRZ0FrR3dBV29RNEJRQ1FDQUJLd01BSUFJckE3QUJZUVJBQTBBQ1FDQUNLQUs4QVNBQ0xRRERBU0lCSUFGQkdIUkJHSFVpQmtFQVNDSUJHeUlEUVFKSkRRQWdBaWdDdUFFaUJTQUNRYmdCYWlBQkd5SUhJQU5CQVdzaUFXb3RBQUJCTUVjTkFDQURJQWRxUVFKckxRQUFRUzVHRFFBQ1FDQUdRUUJJQkVBZ0FpQUJOZ0s4QVF3QkN5QUNJQUU2QU1NQklBSkJ1QUZxSVFVTElBRWdCV3BCQURvQUFBd0JDd3NnQUVFSWFpQUNRYmdCYWhBU0dnd0JDeUFDUVJocUlnVWdBa0VnYWhDSUF5SURJQU1vQWdCQkRHc29BZ0JxRUlzR0VJWUlJQVVRWkNBRElBTW9BZ0JCREdzb0FnQnFRUkUyQWdnZ0EwRUlhaUFCS3dNQUVKZ05JQUpCQ0dvaUFTQURRUXhxRUVJZ0FFRUlhaUFCRUJJYUlBRVFEeG9nQXhDN0Fob0xJQUpCdUFGcUVBOGFJQVFRdXdJYUlBSkI0QUpxSkFBZ0FBdEtBUUovSXdCQnNBRnJJZ0VrQUNBQUxRQUVSUVJBSUFGQmg2a0RRWTRCUVE0Z0FVR2dBV29RSFNJQUVCY2lBa0VZYWtHMDNnZ1FEaG9nQWhBWUlBQVFIZ3NnQVVHd0FXb2tBQXNNQUNBQVF3QUFmME1RK3hJTER3QWdBRUgvQVVNQUFQNUNFUHdTQytrQkF3Ti9BWDBCZkNNQVFSQnJJZ01rQUNBQktBSUVJUVVnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnUkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUVLQUlFSWdSQjhKOFNSZ1JBSUFJUVBDRUhJQU5CQ0dvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBSG5SQnpEQUVMSUFSQnNLa1NSZ1JBSUFJUU5DRUdJQU5CQ0dvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBR2p4QnJEQUVMSUFSQjBLZ1NSdzBCSUFJUVB5RUdJQU5CQ0dvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBR2p4QkdFSElMSUFBZ0F5a0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBTkJFR29rQUF1SkFnRUJmeU1BUWNBQmF5SUlKQUFnQ0NBQ05nS3dBU0FJSUFFMkFyZ0JJQUFnQ0NnQ3VBRWdDQ2dDc0FFZ0F4RFpCQ0lBUWVqcUR6WUNCQ0FBUWFEckR6WUNBQ0FBSUFZMkFpd2dBQ0FGTmdJb0lBQWdCRFlDSkNBQVFZanJEellDQUNBQVFUQnFJQWNRd1JBQ1FDQUFLQUlrSWdGRkJFQWdDRUc3dGdWQklFRUFJQWhCb0FGcUVCMGlBUkFYSWdKQkdHcEIxTDBJRUE0YUlBSVFHQ0FCRUI0Z0FDZ0NKQ0lCUlEwQkN5QUJLQUlFUWNqcEQwY05BQ0FJUWJ1MkJVRWlRUUFnQ0VHZ0FXb1FIU0lCRUJjaUFrRVlha0crNndnUURob2dBaEFZSUFFUUhnc2dBQ2dDTEJCWElBQW9BZ2hCQVVFQVFadkdDRUc3dGdWQkpCQkxJQWhCd0FGcUpBQWdBQXN4QVFGL0lBRWdCVThFUUJBQkFBc2dCQ0FBS0FJSUlBQW9BZ0JySWdBZ0EzVWlCaUFCSUFFZ0Jra2JJQUFnQWs4YkMwY0JBWDhqQUVFUWF5SUVKQUFnQkNBRE5nSU1JQVFnQVNnQ0FEWUNDQ0FFSUFJb0FnQTJBZ1FnQUNBRVFReHFJQVJCQ0dvZ0JFRUVhaENHQ3lFQUlBUkJFR29rQUNBQUN6a0JBWDhqQUVFUWF5SURKQUFnQXlBQk5nSU1JQUFnQW1vZ0EwRU1haENlQWlJQUJIOGdBQ2dDREFWQkFBc2hBU0FEUVJCcUpBQWdBUXNwQUFKQUlBTW9BZ1JCQWtjRVFDQURLQUlBSUFWSERRRUxJQUFnQkRjQ0FBOExJQUJDQURjQ0FBc29BUUYrSUFBZ0F5Z0NBQ0lCSUFWTFFRRWdBWFFnQkhGRmNnUitRZ0FGSUFNcEFnQUxOd0lBQzNZQkEzOGpBRUhRQUdzaUFTUUFJQUZCUUdzaUJDQUNFTzBFSUFGQk1Hb2lCU0FDRU8wRUlBRWdBeUFFRU1RQklBRkJFR29pQWlBQlFmVHREQkF0SUFGQklHb2lCaUFDSUFVUVRpQUFJQVpCaStZR0VDMGdCaEFQR2lBQ0VBOGFJQUVRRHhvZ0JSQVBHaUFFRUE4YUlBRkIwQUJxSkFBTGhnSUNBWDhDZmlNQVFkQUFheUlBSkFBZ0FFSUFOd000SUFCQ0FEY0RNQUpBSUFJZ0F5QUFRVGhxSUFCQk1Hb1ErU3BGRFFBZ0FDQUFLUU00SWdVM0F5QWdBQ0FGTndNUUlBQkJLR29nQVNBQVFSQnFFSzhFSUFBcEF5Z2lCVUtBZ0lDQWNJTkNnSUNBZ0JCU0RRQWdBQ0FBS1FNd0lnWTNBeGdnQUNBR053TUlJQUJCS0dvZ0FTQUFRUWhxRUs4RUlBQXBBeWdpQmtLQWdJQ0FjSU5DZ0lDQWdCQlNEUUFnQUNBRnB5SUNOZ0lvSUFBZ0JqNENUQ0FCS0FJQUlnUVFIQ0FBSUFJZ0JFRVFhaEMxR3pZQ1NDQUJLQUlBSVFFZ0FDQUROZ0pFSUFFZ0FFSEVBR29nQUVFb2FpQUFRY3dBYWlBQVFjZ0FhaENqSHlFRUN5QUFRZEFBYWlRQUlBUUxWUUVDZnlNQVFSQnJJZ0FrQUFKQUlBSW9BZ1FpQlVId2hSQkhCRUFnQlVHUXB4SkhEUUVnQWlnQ0dDQURSdzBCQ3lBQktBSUFJUUVnQUNBRE5nSU1JQUVnQUVFTWFoQ29DU0VFQ3lBQVFSQnFKQUFnQkF0bkFRTi9Jd0JCc0FGcklnTWtBQ0FBS0FJQUlnUVFIQ0FEUVJCcVFZR1pCU0FDUVFnZ0JFSElBbW9RRnlJRVFSaHFJZ1VnQVJBT0dpQURJQUFvQWdRb0FnQWlBQ0FBS0FJQUtBSU1FUUlBSUFVZ0F4QVNHaUFERUE4YUlBUVFHQ0FEUWJBQmFpUUFDeUFBSUFFRVFDQUJLQUlFSUFKR0JFQWdBUThMSUFBZ0FTQUNFT0VFQzBFQUMwUUJBWDhqQUVFUWF5SUVKQUFnQkNBQktBSUFOZ0lNSUFBb0FnUWdBMm9nQkVFTWFoQ2xDU0VBSUFRb0Fnd2hBU0FFUVJCcUpBQWdBRUVNYWlBQklBSnFJQUFiQzVBQkFRUi9Jd0JCMEFGcklnTWtBQ0FBS0FJTVFRSVE0Z01oQmlBRFFSQnFJZ1FnQUNnQ0JDSUZLQUlBUVhJZ0FDZ0NDQkFRSUFNZ0JTZ0NBQ0FHRURjZ0JDQURFQklhSUFSQjBKWUtFQTRhSUFRZ0JTZ0NBRUdBQTJwQkhDQUFLQUlNRUk4QkVBNGFJQVFnQWhBT0dpQUVJQUVRRWhvZ0F5Z0N6QUVoQUNBREVBOGFJQVFRRVNBRFFkQUJhaVFBSUFBTHdBRUJCWDhqQUVIZ0FXc2lCQ1FBSUFBb0Fnd29BZ0JCQWhEaUF5RUhJQVJCSUdvaUF5QUFLQUlFSWdVb0FnQkJjaUFBS0FJSUVCQWdCRUVRYWlJR0lBVW9BZ0FnQnhBM0lBTWdCaEFTR2lBRFFhVENDaEFPR2lBRUlBVW9BZ0FvQWdBb0FnQVFnUUlnQXlBRUVCSWFJQU5CNTVZS0VBNGFJQU1nQlNnQ0FFR0FBMnBCSENBQUtBSU1LQUlBRUk4QkVBNGFJQU1nQWhBT0dpQURJQUVRRWhvZ0JDZ0MzQUVoQUNBRUVBOGFJQVlRRHhvZ0F4QVJJQVJCNEFGcUpBQWdBQXMrQVFGL0lBRkJDSFVoQmlBQUlBSWdBVUVCY1FSL0lBTW9BZ0FnQmhEVkRBVWdCZ3NnQTJvZ0JFRUNJQUZCQW5FYklBVWdBQ2dDQUNnQ0dCRUlBQXN1QVFGL0l3QkJFR3NpQXlRQUlBQWdBMEVJYWlBREVPa0tJZ0FnQVNBQ0VORVVJQUFRcndNZ0EwRVFhaVFBQzBvQkFuOGdBQkI3SVFJZ0FCQTdJUU1qQUVFUWF5SUFKQUFnQUNBQk9nQVBRWDhoQVNBREJFQWdBaUFESUFCQkQyb1E3eGdpQVNBQ2EwRi9JQUViSVFFTElBQkJFR29rQUNBQkN4a0FJQUFnQVVFQmRFR2czdzlxTHdFQU93QUFJQUJCQW1vTEZnQWdBZ1JBSUFFUU94b0xJQUJCZ29hQUlEWUFBQXVoQ1FFTGZ5TUFRYkFCYXlJRUpBQWdCRUYvTmdLZ0FTQUVRb2FBZ0lEQUxUY0RtQUVnQkVLTGdJQ0FrQlEzQTVBQklBUkNsNENBZ1BBRE53T0lBU0FFUXJ1QWdJRHdCamNEZ0FFZ0JFSUFOd0trQVNBRUlBSTZBQTRnQkVFbE9nQU5JQVJCQURvQUR5QUJRZVFEYWlFTUlBRkIyQU5xSVEwZ0FVSE1BMm9oQ1NBQlFhd0JhaUVLSUFGQkJHb2hDeUFFUVJCcUlnVkI1QUFnQkVFTmFpQUVRWUFCYWlBQktBSUFFQUlnQldvaEJpQUVJQVUyQWdnZ0FCQjBJUUFnQWtINEFFY2hEZ05BSUFVZ0JrY0VRQ0FES0FJSVFRRWdCU3dBQUJDOUFnUkFJQUJCSUJDa0FTQURLQUlJSVFJRFFBSkFJQVlnQlVFQmFpSUZSZ1JBSUFZaEJRd0JDeUFDUVFFZ0JTd0FBQkM5QWcwQkN3c2dCQ0FGTmdJSURBSUZJQVFnQlRZQ0JDQUVRUUEyQWdBQ1FDQUVRUVJxSUFZZ0N5QUtJQU1nQkJEZURDQUxheUlDUWFjQlRBUkFJQUJCSlJDa0FTQUFRY0VBUWVFQUlBSkIxQUJJR3hDa0FTQUVJQVFvQWdRMkFnZ01BUXNnQkNBRk5nSUVJQVJCQkdvZ0JpQUtJQWtnQXlBRUVONE1JQXBySWdKQkRHMGhCeUFDUVo4Q1RBUkFJQUJCSlJDa0FTQUFRY0lBUWVJQUlBSkJrQUZJR3hDa0FRSkFJQTROQUNBQklBZEJER3hxUWF3QmFrRUFFSWtCSVFJZ0F5Z0NDRUhBQUNBQ0xBQUFFTDBDUlEwQUlBQVF3UU1nQUJBN2FrRUJhMEh0QURvQUFBc2dCQ0FFS0FJRU5nSUlEQUVMQWtBZ0NSQTdRUUFnRFJBN2EwWU5BQ0FFSUFVMkFnUWdCRUVFYWlBR0lBa2dEQ0FESUFRUTNnd2dDV3RCRjBvTkFDQUFRU1VRcEFFZ0FFSHdBQkNrQVNBRUlBUW9BZ1EyQWdnTUFRc2dCQ0FGTmdJRUlBTW9BZ2hCd0FBZ0JTd0FBQ0lDRUwwQ0JFQkJBQ0VDQWtBZ0JBSi9RUVlnQmlBRUtBSUlJZ2RHRFFBYVFRUWdBeWdDQ0VIQUFDQUhMQUFBSWdnUXZRSkZEUUFhUVFRaEJ5QURJQWdRdkFVaEFnTkFBa0FnQkNBRUtBSUlRUUZxSWdnMkFnZ2dBa0V3YXlFQ0lBWWdDRVlnQjBFQ1NYSU5BQ0FES0FJSVFjQUFJQWdzQUFBaUNCQzlBa1VOQXlBSFFRRnJJUWNnQXlBSUVMd0ZJQUpCQ214cUlRSU1BUXNMSUFZZ0NFY05BVUVDQ3lBRUtBSUFjallDQUFzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ1FRWnJEZ2NDQXdFQkFRUUZBQXNDUUNBQ1FUZHJEZ2NJQVFFQkNRRUtBQXNnQWtFWFJnMEZJQUpCSDBZTkJpQUNRZXdDUmcwS0lBSkJqUkJHRFFzTElBUW9BZ2doQWdOQUlBSWdCVVlORFNBQUlBVXNBQUFRcEFFZ0JVRUJhaUVGREFBTEFBc2dBRUVsRUtRQklBQkI5d0FRcEFFTUN3c2dBRUVsRUtRQklBQkI5UUFRcEFFTUNnc2dBRUVsRUtRQklBQkJ5UUFRcEFFTUNRc2dBRUVsRUtRQklBQkI3UUFRcEFFTUNBc2dBRUVsRUtRQklBQkJ5QUFRcEFFTUJ3c2dBRUVsRUtRQklBQkI1QUFRcEFFTUJnc2dBRUVsRUtRQklBQkJ6UUFRcEFFTUJRc2dBRUVsRUtRQklBQkIwd0FRcEFFTUJBc2dBRUVsRUtRQklBQkIrUUFRcEFFTUF3c2dBRUVsRUtRQklBQkI2Z0FRcEFFTUFnc2dBRUVsRUtRQklBQkIyUUFRcEFFTUFRc2dBa0VsUmdSQUlBQkJKUkNrQVNBQVFTVVFwQUVnQkNBRlFRRnFOZ0lJREFFTElBQWdBaENrQVNBRUlBVkJBV28yQWdnTElBUW9BZ2doQlF3Q0N3QUxDeUFFUWJBQmFpUUFDL2NKQVFwL0l3QkI0QVJySWdRa0FDQUVRb2FBZ0lEQUxUY0R5QVFnQkVLTGdJQ0FrQlEzQThBRUlBUkNsNENBZ1BBRE53TzRCQ0FFUXJ1QWdJRHdCamNEc0FRZ0JFSUFOd0xVQkNBRVFYODJBdEFFSUFRZ0Fqb0F2Z01nQkVFbE9nQzlBeUFFUVFBNkFMOERJQVJCd0FOcUlnVkI1QUFnQkVHOUEyb2dCRUd3QkdvZ0FTZ0NBQkFDR2lBRUlBUkJJR29pQmpZQ0hDQUVRZ0EzQXhBZ0JDQUZOZ0lNSUFZZ0JFRU1ha0hrQUNBRVFSQnFJQUVvQWdBUW9nTWlCa0YvUndSQUlBRkI1QU5xSVF3Z0FVSE1BMm9oQ1NBQlFhd0JhaUVLSUFGQkJHb2hDeUFFUVNCcUlnVWdCa0VDZEdvaEJpQUFFUE1CSVFBZ0FrSDRBRWNoRFFOQUlBVWdCa2NFUUNBRFFRRWdCU2dDQUJESkFnUkFJQUJCSUJDekFRTkFBa0FnQmlBRlFRUnFJZ1ZHQkVBZ0JpRUZEQUVMSUFOQkFTQUZLQUlBRU1rQ0RRRUxDeUFFSUFVMkFod01BZ1VnQkNBRk5nSUlJQVJCQURZQ0JBSkFJQVJCQ0dvZ0JpQUxJQW9nQXlBRVFRUnFFT0FNSUF0cklnSkJwd0ZNQkVBZ0FFRWxFTE1CSUFCQndRQkI0UUFnQWtIVUFFZ2JFTE1CSUFRZ0JDZ0NDRFlDSEF3QkN5QUVJQVUyQWdnZ0JFRUlhaUFHSUFvZ0NTQURJQVJCQkdvUTRBd2dDbXNpQWtFTWJTRUhJQUpCbndKTUJFQWdBRUVsRUxNQklBQkJ3Z0JCNGdBZ0FrR1FBVWdiRUxNQkFrQWdEUTBBSUFOQndBQWdBU0FIUVF4c2FrR3NBV3BCQUJEMUFTZ0NBQkRKQWtVTkFDQUFFSThDSUFBb0FnUWdBQzBBQ3hDWUFVRUNkR3BCQkd0QjdRQTJBZ0FMSUFRZ0JDZ0NDRFlDSEF3QkN3SkFJQUVvQXRBRElBRXRBTmNERUpnQlFRQWdBU2dDM0FNZ0FTMEE0d01RbUFGclJnMEFJQVFnQlRZQ0NDQUVRUWhxSUFZZ0NTQU1JQU1nQkVFRWFoRGdEQ0FKYTBFWFNnMEFJQUJCSlJDekFTQUFRZkFBRUxNQklBUWdCQ2dDQ0RZQ0hBd0JDeUFFSUFVMkFnZ2dBMEhBQUNBRktBSUFFTWtDQkVCQkFDRUNBa0FnQkFKL1FRWWdCaUFFS0FJY0lnZEdEUUFhUVFRZ0EwSEFBQ0FIS0FJQUlnY1F5UUpGRFFBYUlBTWdCeEQzQkNFQ1FRUWhCd05BQWtBZ0JDQUVLQUljUVFScUlnZzJBaHdnQWtFd2F5RUNJQVlnQ0VZZ0IwRUNTWElOQUNBRFFjQUFJQWdvQWdBaUNCREpBa1VOQXlBSFFRRnJJUWNnQXlBSUVQY0VJQUpCQ214cUlRSU1BUXNMSUFZZ0NFY05BVUVDQ3lBRUtBSUVjallDQkFzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ1FRWnJEZ2NDQXdFQkFRUUZBQXNDUUNBQ1FUZHJEZ2NJQVFFQkNRRUtBQXNnQWtFWFJnMEZJQUpCSDBZTkJpQUNRZXdDUmcwS0lBSkJqUkJHRFFzTElBUW9BaHdoQWdOQUlBSWdCVVlORFNBQUlBVW9BZ0FRc3dFZ0JVRUVhaUVGREFBTEFBc2dBRUVsRUxNQklBQkI5d0FRc3dFTUN3c2dBRUVsRUxNQklBQkI5UUFRc3dFTUNnc2dBRUVsRUxNQklBQkJ5UUFRc3dFTUNRc2dBRUVsRUxNQklBQkI3UUFRc3dFTUNBc2dBRUVsRUxNQklBQkJ5QUFRc3dFTUJ3c2dBRUVsRUxNQklBQkI1QUFRc3dFTUJnc2dBRUVsRUxNQklBQkJ6UUFRc3dFTUJRc2dBRUVsRUxNQklBQkIwd0FRc3dFTUJBc2dBRUVsRUxNQklBQkIrUUFRc3dFTUF3c2dBRUVsRUxNQklBQkI2Z0FRc3dFTUFnc2dBRUVsRUxNQklBQkIyUUFRc3dFTUFRc2dCVUVFYWlFQ0FrQWdBeUFGS0FJQUVQY0VRU1ZHQkVBZ0FFRWxFTE1CSUFCQkpSQ3pBUXdCQ3lBQUlBVW9BZ0FRc3dFTElBUWdBallDSEFzZ0JDZ0NIQ0VGREFJTEFBc0xJQVJCNEFScUpBQVBDeEJ2QUF2a0FRSUNmd0Y5SXdCQklHc2lCU1FBQWtBQ1FBSkFJQVM4SWdaREFBQUFBQkJHSWdlOGMwRUFUaUFFSUFkYmNVVUVRRU1BQUFDQUVFWWlCN3dnQm5OQkFFZ2dCQ0FIWEhJTkFRc01BUXNnQXlBRWxSQkdJZ2VMUXdBQWdIOWRSUTBBSUFWQkFUb0FIQ0FGSUFjNEFoZ01BUXNnQlVFQU9nQWNJQVZCQURvQUdBc0NRQ0FGTFFBY1JRUkFJQVZCQ0dvaUJpQURRZG1TQnlBRUVPb0dJQUVnQmlBQ0VGMGdCaEFQR2lBQUlBRXRBQVFFZnlBQUlBTTRBZ0JCQVFWQkFnczZBQVFNQVFzZ0JTb0NHQkJHSVFNZ0FFRUJPZ0FFSUFBZ0F6Z0NBQXNnQlVFZ2FpUUFDd2tBSUFBUTdnd1FId3NIQUNBQVFReHFDeE1BSUFBUTFnVW9BZ0FnQUNnQ0FHdEJBblVMQ2dBZ0FFRUlhaERXQlFzUkFDQUFJQUVnQVNnQ0FDZ0NLQkVDQUFzY0FDQUFMUUFMRVBzRUJFQWdBQ0FCRUljRUR3c2dBQ0FCRU1BRkN5RUJBWDlCQVNFQklBQXRBQXNRK3dRRWZ5QUFLQUlJRVAwSlFRRnJCVUVCQ3d2VEFRRUVmeU1BUVJCcklnWWtBQ0FBRUpnR1FXOGhCeUFDUVc4Z0FXdE5CRUFnQUJEQkF5RUlJQUZCNXYvLy93ZE5CRUFnQmlBQlFRRjBOZ0lJSUFZZ0FTQUNhallDRENBR1FReHFJQVpCQ0dvUWlRVW9BZ0FRbHdaQkFXb2hCd3NnQnhDVUJpRUNJQVFFUUNBQ0VJTUJJQWdRZ3dFZ0JCQzVBeG9MSUFNZ0JDQUZhaUlKUndSQUlBSVFnd0VnQkdvZ0NCQ0RBU0FFYWlBRmFpQURJQWxyRUxrREdnc2dBVUVCYWlJQlFRdEhCRUFnQ0NBQkVKRU5DeUFBSUFJUWxnWWdBQ0FIRUpVR0lBWkJFR29rQUE4TEVMZ0RBQXNNQUNBQUlBRW9Ba1EyQUFBTENBQWdBQkR6QVJvTENBQkIvLy8vL3djTEJRQkIvd0FMMEFFQkFuOGdBa0dBRUhFRVFDQUFRU3M2QUFBZ0FFRUJhaUVBQ3lBQ1FZQUljUVJBSUFCQkl6b0FBQ0FBUVFGcUlRQUxJQUpCaEFKeElnTkJoQUpIQkVBZ0FFR3UxQUE3QUFBZ0FFRUNhaUVBQ3lBQ1FZQ0FBWEVoQWdOQUlBRXRBQUFpQkFSQUlBQWdCRG9BQUNBQVFRRnFJUUFnQVVFQmFpRUJEQUVMQ3lBQUFuOENRQ0FEUVlBQ1J3UkFJQU5CQkVjTkFVSEdBRUhtQUNBQ0d3d0NDMEhGQUVIbEFDQUNHd3dCQzBIQkFFSGhBQ0FDR3lBRFFZUUNSZzBBR2tISEFFSG5BQ0FDR3dzNkFBQWdBMEdFQWtjTHFnRUJBWDhDUUNBRFFZQVFjVVVOQUNBQ1JTQURRY29BY1NJRVFRaEdJQVJCd0FCR2NuSU5BQ0FBUVNzNkFBQWdBRUVCYWlFQUN5QURRWUFFY1FSQUlBQkJJem9BQUNBQVFRRnFJUUFMQTBBZ0FTMEFBQ0lFQkVBZ0FDQUVPZ0FBSUFCQkFXb2hBQ0FCUVFGcUlRRU1BUXNMSUFBQ2YwSHZBQ0FEUWNvQWNTSUJRY0FBUmcwQUdrSFlBRUg0QUNBRFFZQ0FBWEViSUFGQkNFWU5BQnBCNUFCQjlRQWdBaHNMT2dBQUMzd0JBMzhqQUVFUWF5SUVKQUFDUUNBRVFRaHFJQUFRM3dNaUJTMEFBRVVOQUNBQUlBQW9BZ0JCREdzb0FnQnFJZ01vQWhnZ0FTQUJJQUpxSWdJZ0FTQURLQUlFUWJBQmNVRWdSaHNnQWlBRElBTVFuQU1RL3dVTkFDQUFJQUFvQWdCQkRHc29BZ0JxUVFVUWpoRUxJQVVRNEFNZ0JFRVFhaVFBSUFBTENRQWdBQ0FCRUtFVUN3c0FJQUJCLy8vLy93ZHhDd29BSUFBZ0FSQ1lBVVVMMFFRQkMzOGpBRUdBQVdzaUNpUUFJQW9nQVRZQ2VDQUNJQU1RZ2dvaENDQUtRZHNYTmdJUUlBcEJDR29nQ2tFUWFpSUpFSUVLSVE0Q1FDQUlRZVVBVHdSQUlBZ1E0QUVpQ1VVTkFTQU9JQWtRaGdJTElBa2hCeUFDSVFFRFFDQUJJQU5HQkVBRFFBSkFJQUFnQ2tINEFHb1EyZ0pCQUNBSUcwVUVRQ0FBSUFwQitBQnFFSkFDUlEwQklBVWdCU2dDQUVFQ2NqWUNBQXdCQ3lBQUtBSUFFTzBCSVF3Z0JrVUVRQ0FFSUF3UWhBY2hEQXNnRFVFQmFpRVBRUUFoRUNBSklRY2dBaUVCQTBBZ0FTQURSZ1JBSUE4aERTQVFSUTBESUFBUW9RSWFJQWtoQnlBQ0lRRWdDQ0FMYWtFQ1NRMERBMEFnQVNBRFJnUkFEQVVGQWtBZ0J5MEFBRUVDUncwQUlBRW9BZ1FnQVMwQUN4Q1lBU0FOUmcwQUlBZEJBRG9BQUNBTFFRRnJJUXNMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBRkFrQWdCeTBBQUVFQlJ3MEFJQUVnRFJEMUFTZ0NBQ0VSQWtBZ0JnUi9JQkVGSUFRZ0VSQ0VCd3NnREVZRVFFRUJJUkFnQVNnQ0JDQUJMUUFMRUpnQklBOUhEUUlnQjBFQ09nQUFJQXRCQVdvaEN3d0JDeUFIUVFBNkFBQUxJQWhCQVdzaENBc2dCMEVCYWlFSElBRkJER29oQVF3QkN3QUxBQXNMQWtBQ1FBTkFJQUlnQTBZTkFTQUpMUUFBUVFKSEJFQWdDVUVCYWlFSklBSkJER29oQWd3QkN3c2dBaUVEREFFTElBVWdCU2dDQUVFRWNqWUNBQXNnRGhEWUFTQUtRWUFCYWlRQUlBTVBCUUpBSUFFb0FnUWdBUzBBQ3hEK0NVVUVRQ0FIUVFFNkFBQU1BUXNnQjBFQ09nQUFJQXRCQVdvaEN5QUlRUUZySVFnTElBZEJBV29oQnlBQlFReHFJUUVNQVFzQUN3QUxFRzhBQ3l3QUFrQWdBQ0FCUmcwQUEwQWdBQ0FCUVFScklnRlBEUUVnQUNBQkVLa0JJQUJCQkdvaEFBd0FDd0FMQ3dzQUlBQkJBQ0FCRUxFVUN3b0FJQUVnQUd0QkRHMEx2d1FCQzM4akFFR0FBV3NpQ2lRQUlBb2dBVFlDZUNBQ0lBTVFnZ29oQ0NBS1Fkc1hOZ0lRSUFwQkNHb2dDa0VRYWlJSkVJRUtJUThDUUNBSVFlVUFUd1JBSUFnUTRBRWlDVVVOQVNBUElBa1FoZ0lMSUFraEJ5QUNJUUVEUUNBQklBTkdCRUFEUUFKQUlBQWdDa0g0QUdvUXlnSkJBQ0FJRzBVRVFDQUFJQXBCK0FCcUVJY0NSUTBCSUFVZ0JTZ0NBRUVDY2pZQ0FBd0JDeUFBS0FJQUVPNEJJUTBnQmtVRVFDQUVJQTBRaUFjaERRc2dERUVCYWlFUVFRQWhEaUFKSVFjZ0FpRUJBMEFnQVNBRFJnUkFJQkFoRENBT1JRMERJQUFRbXdJYUlBa2hCeUFDSVFFZ0NDQUxha0VDU1EwREEwQWdBU0FEUmdSQURBVUZBa0FnQnkwQUFFRUNSdzBBSUFFUU95QU1SZzBBSUFkQkFEb0FBQ0FMUVFGcklRc0xJQWRCQVdvaEJ5QUJRUXhxSVFFTUFRc0FDd0FGQWtBZ0J5MEFBRUVCUncwQUlBRWdEQkRtQVN3QUFDRVJBa0FnRFVIL0FYRWdCZ1IvSUJFRklBUWdFUkNJQnd0Qi93RnhSZ1JBUVFFaERpQUJFRHNnRUVjTkFpQUhRUUk2QUFBZ0MwRUJhaUVMREFFTElBZEJBRG9BQUFzZ0NFRUJheUVJQ3lBSFFRRnFJUWNnQVVFTWFpRUJEQUVMQUFzQUN3c0NRQUpBQTBBZ0FpQURSZzBCSUFrdEFBQkJBa2NFUUNBSlFRRnFJUWtnQWtFTWFpRUNEQUVMQ3lBQ0lRTU1BUXNnQlNBRktBSUFRUVJ5TmdJQUN5QVBFTmdCSUFwQmdBRnFKQUFnQXc4RkFrQWdBUkMvQkVVRVFDQUhRUUU2QUFBTUFRc2dCMEVDT2dBQUlBdEJBV29oQ3lBSVFRRnJJUWdMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBTEVHOEFDd2NBSUFCQkFra0xNQUVCZnlNQVFSQnJJZ01rQUNBQUlBTkJDR29nQXhEcENpSUFJQUVnQWhDTEZ5QUFFSzhESUFOQkVHb2tBQ0FBQ3cwQUlBQkJJRVlnQUVFSlJuSUxGd0FnQUVFd2EwRUtTU0FBUVNCeVFlRUFhMEVHU1hJTE9RQWdBRUgvL3dkTkJIOGdBRUVEZGtFZmNTQUFRUWgyUVpEeURtb3RBQUJCQlhSeVFaRHlEbW90QUFBZ0FFRUhjWFpCQVhFRlFRQUxDMElBQW44Z0FFSC8vd2ROQkVBZ0FFRURka0VmY1NBQVFRaDJRZERURG1vdEFBQkJCWFJ5UWREVERtb3RBQUFnQUVFSGNYWkJBWEVNQVFzZ0FFSCsvd3RKQ3dzS0FDQUFFSVFOSUFCSEN3b0FJQUFRaFEwZ0FFY0xKd0FnQUVFZ1NTQUFRZjhBYTBFaFNYSWdBRUYrY1VHb3dBQkdjaUFBUWZuL0EydEJBMGx5QzFNQUlBQkIvZ0ZOQkg4Z0FFRUJha0gvQUhGQklFc0ZJQUJCL3Y4RGNVSCsvd05ISUFCQi9QOERhMEdFZ01BQVNYRWdBRUdBd0FOclFmay9TU0FBUWFqQUFFbHlJQUJCcXNBQWEwSFc3d0pKY25JTEN6b0JBMzhnQUVVRVFFRUFEd3RCb0s4T0lRRURRQ0FCSWdJb0FnQWlBd1JBSUFKQkJHb2hBU0FBSUFOSERRRUxDeUFDUVFBZ0F4dEJBRWNMMmdJQkJuOGpBRUVRYXlJSEpBQWdBMEdzdWlBZ0F4c2lCU2dDQUNFREFrQUNRQUpBSUFGRkJFQWdBdzBCREFNTFFYNGhCQ0FDUlEwQ0lBQWdCMEVNYWlBQUd5RUdBa0FnQXdSQUlBSWhBQXdCQ3lBQkxRQUFJZ0JCR0hSQkdIVWlBMEVBVGdSQUlBWWdBRFlDQUNBRFFRQkhJUVFNQkF0QjlLa2dLQUlBS0FJQVJRUkFJQVlnQTBIL3Z3TnhOZ0lBUVFFaEJBd0VDeUFBUWNJQmF5SUFRVEpMRFFFZ0FFRUNkRUd3a1E5cUtBSUFJUU1nQWtFQmF5SUFSUTBDSUFGQkFXb2hBUXNnQVMwQUFDSUlRUU4ySWdsQkVHc2dBMEVhZFNBSmFuSkJCMHNOQUFOQUlBQkJBV3NoQUNBSVFZQUJheUFEUVFaMGNpSURRUUJPQkVBZ0JVRUFOZ0lBSUFZZ0F6WUNBQ0FDSUFCcklRUU1CQXNnQUVVTkFpQUJRUUZxSWdFdEFBQWlDRUhBQVhGQmdBRkdEUUFMQ3lBRlFRQTJBZ0JCbUtrZ1FSazJBZ0JCZnlFRURBRUxJQVVnQXpZQ0FBc2dCMEVRYWlRQUlBUUxmQUVEZjBGL0lRTUNRQ0FBUVg5R0RRQWdBU2dDVEVFQVRpRUVBa0FDUUNBQktBSUVJZ0pGQkVBZ0FSQ25EUm9nQVNnQ0JDSUNSUTBCQ3lBQ0lBRW9BaXhCQ0d0TERRRUxJQVJGRFFGQmZ3OExJQUVnQWtFQmF5SUNOZ0lFSUFJZ0FEb0FBQ0FCSUFFb0FnQkJiM0UyQWdBZ0FFSC9BWEVoQXdzZ0F3c2RBQ0FBSUFFZ0FpQURJQVFnQlNBR0lBY2dBQ2dDQUNnQ0RCRU1BQXNSQUNBQUVQb0NLQUlJUWYvLy8vOEhjUXNOQUNBQVFReHFFUDRFR2lBQUN3MEFJQUJCQkdvUS9nUWFJQUFMRFFBZ0FFRUlhaEQrQkJvZ0FBc2RBQ0FCS0FJQUVMUUdJQUFvQWdBUXpBY2FJQUFnQVNnQ0FEWUNBQXNMQUNBQVFmaUNEaEQ2RWdzRUFFRi9DemNCQVg4akFFRVFheUlHSkFBZ0JpQUNOZ0lNSUFZZ0FUWUNDQ0FBSUFFb0FnQWdBeUFHUVFocUlBUWdCUkRvRkNBR1FSQnFKQUFMRkFBZ0FFSDRnZzQyQWdBZ0FFRUVhaEJrSUFBTDN3TUJBMzhqQUVHZ0FXc2lCQ1FBUVg4aEJTQUVJQUZCQVd0QkFDQUJHellDbEFFZ0JDQUFJQVJCbmdGcUlBRWJJZ1kyQXBBQklBUkJBRUdRQVJCNUlnQkJmellDVENBQVFkY1hOZ0lrSUFCQmZ6WUNVQ0FBSUFCQm53RnFOZ0lzSUFBZ0FFR1FBV28yQWxRQ1FDQUJRUUJJQkVCQm1La2dRVDAyQWdBTUFRc2dCa0VBT2dBQVFRQWhCQ01BUWRBQmF5SUJKQUFnQVNBRE5nTE1BU0FCUWFBQmFpSURRUUJCS0JCNUdpQUJJQUVvQXN3Qk5nTElBUUpBUVFBZ0FpQUJRY2dCYWlBQlFkQUFhaUFERVAwVVFRQklCRUJCZnlFQ0RBRUxJQUFvQWt4QkFFNGhCU0FBS0FJQUlRTWdBQ2dDU0VFQVRBUkFJQUFnQTBGZmNUWUNBQXNDZndKQUFrQWdBQ2dDTUVVRVFDQUFRZEFBTmdJd0lBQkJBRFlDSENBQVFnQTNBeEFnQUNnQ0xDRUVJQUFnQVRZQ0xBd0JDeUFBS0FJUURRRUxRWDhnQUJDa0ZRMEJHZ3NnQUNBQ0lBRkJ5QUZxSUFGQjBBQnFJQUZCb0FGcUVQMFVDeUVDSUFRRVFDQUFRUUJCQUNBQUtBSWtFUVFBR2lBQVFRQTJBakFnQUNBRU5nSXNJQUJCQURZQ0hDQUFLQUlVSVFRZ0FFSUFOd01RSUFKQmZ5QUVHeUVDQ3lBQUlBQW9BZ0FpQkNBRFFTQnhjallDQUVGL0lBSWdCRUVnY1JzaEFpQUZSUTBBQ3lBQlFkQUJhaVFBSUFJaEJRc2dBRUdnQVdva0FDQUZDeW9CQVg4akFFRVFheUlFSkFBZ0JDQUROZ0lNSUFBZ0FTQUNJQU1RbXdvaEFDQUVRUkJxSkFBZ0FBc1lBUUYvSXdCQkVHc2lBU0FBT1FNSUlBRXJBd2dnQUtJTDFBRURBbndCZndGK0FuMENRQ0FBRUprSFFmOFBjU0lEUXdBQXNFSVFtUWRKRFFCREFBQUFBQ0FBdkVHQWdJQjhSZzBCR2tNQUFJQi9FSmtISUFOTkJFQWdBQ0FBa2c4TElBQkRGM0t4UWw0RVFFRUFFTGtORHdzZ0FFTzA4Yy9DWFVVTkFFRUFFTGdORHd0QjRNc05Ld01BUWRqTERTc0RBQ0FBdTZJaUFTQUJRZERMRFNzREFDSUJvQ0lDSUFHaG9TSUJva0hveXcwckF3Q2dJQUVnQWFLaVFmRExEU3NEQUNBQm9rUUFBQUFBQUFEd1A2Q2dJQUs5SWdSQ0w0WWdCS2RCSDNGQkEzUkJzTWtOYWlrREFIeS9vcllMQytnQ0FnTi9BMzBnQUx3aUFrSC8vLy8vQjNFaUFVR0FnSURrQkU4RVFDQUFROW9QeVQ4Z0FKZ2dBTHhCLy8vLy93ZHhRWUNBZ1B3SFN4c1BDd0pBQW44Z0FVSC8vLy8yQTAwRVFFRi9JQUZCZ0lDQXpBTlBEUUVhREFJTElBQ0xJUUFnQVVILy85LzhBMDBFUUNBQlFmLy92L2tEVFFSQUlBQWdBSkpEQUFDQXY1SWdBRU1BQUFCQWtwVWhBRUVBREFJTElBQkRBQUNBdjVJZ0FFTUFBSUEva3BVaEFFRUJEQUVMSUFGQi8vL3ZnQVJOQkVBZ0FFTUFBTUMva2lBQVF3QUF3RCtVUXdBQWdEK1NsU0VBUVFJTUFRdERBQUNBdnlBQWxTRUFRUU1MSVFNZ0FDQUFsQ0lGSUFXVUlnUWdCRU5IRXRxOWxFT1l5a3kra3BRaEJpQUZJQVFnQkVNbHJIdzlsRU1OOVJFK2twUkRxYXFxUHBLVUlRUWdBVUgvLy8vMkEwMEVRQ0FBSUFBZ0JpQUVrcFNURHdzZ0EwRUNkQ0lCUWREaURXb3FBZ0FnQUNBR0lBU1NsQ0FCUWVEaURXb3FBZ0NUSUFDVGt5SUFqQ0FBSUFKQkFFZ2JJUUFMSUFBTHBRRUJBbjhDZndKQUlBQW9Ba3dpQVVFQVRnUkFJQUZGRFFGQnJLa2dLQUlBSUFGQi8vLy8vM3R4UncwQkN5QUFLQUlFSWdFZ0FDZ0NDRWNFUUNBQUlBRkJBV28yQWdRZ0FTMEFBQXdDQ3lBQUVLWU5EQUVMSUFCQnpBQnFJZ0VnQVNnQ0FDSUNRZi8vLy84RElBSWJOZ0lBQW44Z0FDZ0NCQ0lDSUFBb0FnaEhCRUFnQUNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQUJDbURRc2hBQ0FCRUtVSUdpQUFDd3VKREFFR2Z5QUFJQUZxSVFVQ1FBSkFJQUFvQWdRaUFrRUJjUTBBSUFKQkEzRkZEUUVnQUNnQ0FDSUNJQUZxSVFFQ1FDQUFJQUpySWdCQnRKMGdLQUlBUndSQUlBSkIvd0ZOQkVBZ0FDZ0NDQ0lFSUFKQkEzWWlBa0VEZEVISW5TQnFSaG9nQUNnQ0RDSURJQVJIRFFKQm9KMGdRYUNkSUNnQ0FFRitJQUozY1RZQ0FBd0RDeUFBS0FJWUlRWUNRQ0FBSUFBb0Fnd2lBa2NFUUNBQUtBSUlJZ05Cc0owZ0tBSUFTUm9nQXlBQ05nSU1JQUlnQXpZQ0NBd0JDd0pBSUFCQkZHb2lCQ2dDQUNJRERRQWdBRUVRYWlJRUtBSUFJZ01OQUVFQUlRSU1BUXNEUUNBRUlRY2dBeUlDUVJScUlnUW9BZ0FpQXcwQUlBSkJFR29oQkNBQ0tBSVFJZ01OQUFzZ0IwRUFOZ0lBQ3lBR1JRMENBa0FnQUNnQ0hDSUVRUUowUWRDZklHb2lBeWdDQUNBQVJnUkFJQU1nQWpZQ0FDQUNEUUZCcEowZ1FhU2RJQ2dDQUVGK0lBUjNjVFlDQUF3RUN5QUdRUkJCRkNBR0tBSVFJQUJHRzJvZ0FqWUNBQ0FDUlEwREN5QUNJQVkyQWhnZ0FDZ0NFQ0lEQkVBZ0FpQUROZ0lRSUFNZ0FqWUNHQXNnQUNnQ0ZDSURSUTBDSUFJZ0F6WUNGQ0FESUFJMkFoZ01BZ3NnQlNnQ0JDSUNRUU54UVFOSERRRkJxSjBnSUFFMkFnQWdCU0FDUVg1eE5nSUVJQUFnQVVFQmNqWUNCQ0FGSUFFMkFnQVBDeUFFSUFNMkFnd2dBeUFFTmdJSUN3SkFJQVVvQWdRaUFrRUNjVVVFUUVHNG5TQW9BZ0FnQlVZRVFFRzRuU0FnQURZQ0FFR3NuU0JCckowZ0tBSUFJQUZxSWdFMkFnQWdBQ0FCUVFGeU5nSUVJQUJCdEowZ0tBSUFSdzBEUWFpZElFRUFOZ0lBUWJTZElFRUFOZ0lBRHd0QnRKMGdLQUlBSUFWR0JFQkJ0SjBnSUFBMkFnQkJxSjBnUWFpZElDZ0NBQ0FCYWlJQk5nSUFJQUFnQVVFQmNqWUNCQ0FBSUFGcUlBRTJBZ0FQQ3lBQ1FYaHhJQUZxSVFFQ1FDQUNRZjhCVFFSQUlBVW9BZ2dpQkNBQ1FRTjJJZ0pCQTNSQnlKMGdha1lhSUFRZ0JTZ0NEQ0lEUmdSQVFhQ2RJRUdnblNBb0FnQkJmaUFDZDNFMkFnQU1BZ3NnQkNBRE5nSU1JQU1nQkRZQ0NBd0JDeUFGS0FJWUlRWUNRQ0FGSUFVb0Fnd2lBa2NFUUNBRktBSUlJZ05Cc0owZ0tBSUFTUm9nQXlBQ05nSU1JQUlnQXpZQ0NBd0JDd0pBSUFWQkZHb2lBeWdDQUNJRURRQWdCVUVRYWlJREtBSUFJZ1FOQUVFQUlRSU1BUXNEUUNBRElRY2dCQ0lDUVJScUlnTW9BZ0FpQkEwQUlBSkJFR29oQXlBQ0tBSVFJZ1FOQUFzZ0IwRUFOZ0lBQ3lBR1JRMEFBa0FnQlNnQ0hDSUVRUUowUWRDZklHb2lBeWdDQUNBRlJnUkFJQU1nQWpZQ0FDQUNEUUZCcEowZ1FhU2RJQ2dDQUVGK0lBUjNjVFlDQUF3Q0N5QUdRUkJCRkNBR0tBSVFJQVZHRzJvZ0FqWUNBQ0FDUlEwQkN5QUNJQVkyQWhnZ0JTZ0NFQ0lEQkVBZ0FpQUROZ0lRSUFNZ0FqWUNHQXNnQlNnQ0ZDSURSUTBBSUFJZ0F6WUNGQ0FESUFJMkFoZ0xJQUFnQVVFQmNqWUNCQ0FBSUFGcUlBRTJBZ0FnQUVHMG5TQW9BZ0JIRFFGQnFKMGdJQUUyQWdBUEN5QUZJQUpCZm5FMkFnUWdBQ0FCUVFGeU5nSUVJQUFnQVdvZ0FUWUNBQXNnQVVIL0FVMEVRQ0FCUVhoeFFjaWRJR29oQWdKL1FhQ2RJQ2dDQUNJRFFRRWdBVUVEZG5RaUFYRkZCRUJCb0owZ0lBRWdBM0kyQWdBZ0Fnd0JDeUFDS0FJSUN5RUJJQUlnQURZQ0NDQUJJQUEyQWd3Z0FDQUNOZ0lNSUFBZ0FUWUNDQThMUVI4aEJDQUJRZi8vL3dkTkJFQWdBVUVJZGlJQ0lBSkJnUDQvYWtFUWRrRUljU0lFZENJQ0lBSkJnT0FmYWtFUWRrRUVjU0lEZENJQ0lBSkJnSUFQYWtFUWRrRUNjU0lDZEVFUGRpQURJQVJ5SUFKeWF5SUNRUUYwSUFFZ0FrRVZhblpCQVhGeVFSeHFJUVFMSUFBZ0JEWUNIQ0FBUWdBM0FoQWdCRUVDZEVIUW55QnFJUWNDUUFKQVFhU2RJQ2dDQUNJRFFRRWdCSFFpQW5GRkJFQkJwSjBnSUFJZ0EzSTJBZ0FnQnlBQU5nSUFJQUFnQnpZQ0dBd0JDeUFCUVJrZ0JFRUJkbXRCQUNBRVFSOUhHM1FoQkNBSEtBSUFJUUlEUUNBQ0lnTW9BZ1JCZUhFZ0FVWU5BaUFFUVIxMklRSWdCRUVCZENFRUlBTWdBa0VFY1dvaUIwRVFhaWdDQUNJQ0RRQUxJQWNnQURZQ0VDQUFJQU0yQWhnTElBQWdBRFlDRENBQUlBQTJBZ2dQQ3lBREtBSUlJZ0VnQURZQ0RDQURJQUEyQWdnZ0FFRUFOZ0lZSUFBZ0F6WUNEQ0FBSUFFMkFnZ0xDNTRJQVF0L0lBQkZCRUFnQVJEZ0FROExJQUZCUUU4RVFFR1lxU0JCTURZQ0FFRUFEd3NDZjBFUUlBRkJDMnBCZUhFZ0FVRUxTUnNoQmlBQVFRaHJJZ1VvQWdRaUNVRjRjU0VFQWtBZ0NVRURjVVVFUUVFQUlBWkJnQUpKRFFJYUlBWkJCR29nQkUwRVFDQUZJUUlnQkNBR2EwR0FvU0FvQWdCQkFYUk5EUUlMUVFBTUFnc2dCQ0FGYWlFSEFrQWdCQ0FHVHdSQUlBUWdCbXNpQTBFUVNRMEJJQVVnQ1VFQmNTQUdja0VDY2pZQ0JDQUZJQVpxSWdJZ0EwRURjallDQkNBSElBY29BZ1JCQVhJMkFnUWdBaUFERUtFS0RBRUxRYmlkSUNnQ0FDQUhSZ1JBUWF5ZElDZ0NBQ0FFYWlJRUlBWk5EUUlnQlNBSlFRRnhJQVp5UVFKeU5nSUVJQVVnQm1vaUF5QUVJQVpySWdKQkFYSTJBZ1JCckowZ0lBSTJBZ0JCdUowZ0lBTTJBZ0FNQVF0QnRKMGdLQUlBSUFkR0JFQkJxSjBnS0FJQUlBUnFJZ01nQmtrTkFnSkFJQU1nQm1zaUFrRVFUd1JBSUFVZ0NVRUJjU0FHY2tFQ2NqWUNCQ0FGSUFacUlnUWdBa0VCY2pZQ0JDQURJQVZxSWdNZ0FqWUNBQ0FESUFNb0FnUkJmbkUyQWdRTUFRc2dCU0FKUVFGeElBTnlRUUp5TmdJRUlBTWdCV29pQWlBQ0tBSUVRUUZ5TmdJRVFRQWhBa0VBSVFRTFFiU2RJQ0FFTmdJQVFhaWRJQ0FDTmdJQURBRUxJQWNvQWdRaUEwRUNjUTBCSUFOQmVIRWdCR29pQ2lBR1NRMEJJQW9nQm1zaERBSkFJQU5CL3dGTkJFQWdCeWdDQ0NJRUlBTkJBM1lpQWtFRGRFSEluU0JxUmhvZ0JDQUhLQUlNSWdOR0JFQkJvSjBnUWFDZElDZ0NBRUYrSUFKM2NUWUNBQXdDQ3lBRUlBTTJBZ3dnQXlBRU5nSUlEQUVMSUFjb0FoZ2hDd0pBSUFjZ0J5Z0NEQ0lJUndSQUlBY29BZ2dpQWtHd25TQW9BZ0JKR2lBQ0lBZzJBZ3dnQ0NBQ05nSUlEQUVMQWtBZ0IwRVVhaUlFS0FJQUlnSU5BQ0FIUVJCcUlnUW9BZ0FpQWcwQVFRQWhDQXdCQ3dOQUlBUWhBeUFDSWdoQkZHb2lCQ2dDQUNJQ0RRQWdDRUVRYWlFRUlBZ29BaEFpQWcwQUN5QURRUUEyQWdBTElBdEZEUUFDUUNBSEtBSWNJZ05CQW5SQjBKOGdhaUlDS0FJQUlBZEdCRUFnQWlBSU5nSUFJQWdOQVVHa25TQkJwSjBnS0FJQVFYNGdBM2R4TmdJQURBSUxJQXRCRUVFVUlBc29BaEFnQjBZYmFpQUlOZ0lBSUFoRkRRRUxJQWdnQ3pZQ0dDQUhLQUlRSWdJRVFDQUlJQUkyQWhBZ0FpQUlOZ0lZQ3lBSEtBSVVJZ0pGRFFBZ0NDQUNOZ0lVSUFJZ0NEWUNHQXNnREVFUFRRUkFJQVVnQ1VFQmNTQUtja0VDY2pZQ0JDQUZJQXBxSWdJZ0FpZ0NCRUVCY2pZQ0JBd0JDeUFGSUFsQkFYRWdCbkpCQW5JMkFnUWdCU0FHYWlJRElBeEJBM0kyQWdRZ0JTQUthaUlDSUFJb0FnUkJBWEkyQWdRZ0F5QU1FS0VLQ3lBRklRSUxJQUlMSWdJRVFDQUNRUWhxRHdzZ0FSRGdBU0lGUlFSQVFRQVBDeUFGSUFCQmZFRjRJQUJCQkdzb0FnQWlBa0VEY1JzZ0FrRjRjV29pQWlBQklBRWdBa3NiRUgwYUlBQVFIeUFGQzk0QkFRVi9BMEFDUUNBQUlBRVF1Z0VpQkVVTkFDQUNJQVFRaWdJRVFFRUJEd3NDUUFKQUlBUXZBUjRpQlVFWGF5SUhRUXBMRFFCQkFTQUhkQ0lJUWZjQWNRMEJJQWhCZ0FseFJRUkFJQWRCQ1VjTkFTQUFJQUVReFJVZ0EwRUJjMEVCY1hJTkEwRUJJUU1nQkVFQ0VCc2hBUXdFQ3lBRFFYOXpJQVZCSVVaeERRSkJBU0VCQTBBZ0FTQUVLQUlRSUFRb0FneHJRUVIxSWdWSklRWWdBU0FGVHcwRElBUWdBUkFiSVFVZ0FVRUJhaUVCSUFBZ0JTQUNJQU5CQVhFUW93cEZEUUFMREFJTElBVkI3aWxIRFFFTElBUkJBUkFiSVFFTUFRc0xJQVlMaVFJQkJIOGpBRUVnYXlJREpBQWdBRUlBTndJRUlBQWdBRUVFYWpZQ0FDQURJQUVnQWhDNkFTSUNOZ0ljSUFJRVFDQURRUUEyQWhnZ0EwSUFOd01RSUFOQkVHb2dBMEVjYWhEUEFRTkFJQU1vQWhRaUFpQURLQUlRUndSQUlBSkJCR3NpQkNnQ0FDRUNJQU1nQkRZQ0ZDQUNLQUk0SWdRRVFDQURJQUVnQkNnQ0FCQ2xDaEN3QVNJRUtBSUFJUUlnQXlnQ0JDRUZJQUJCQkdvaEJnTkFJQUlnQlVjRVFDQUFJQVlnQWhDZEZpQUNRUVJxSVFJTUFRc0xJQVFRTWhvTUFnc2dBaWdDUkNFRUlBSW9Ba0FoQWdOQUlBSWdCRVlOQWlBRElBSW9BZ0EyQWdBZ0FrRUlhaUVDSUFOQkVHb2dBeERQQVF3QUN3QUxDeUFEUVJCcUVESWFDeUFEUVNCcUpBQUxPUUVCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQUVIc0Eyb2dBa0VNYWhDZUFpRUJJQUpCRUdva0FDQUJRUXhxSUFCQmdBUnFJQUViQ3dnQUlBQkI5QUJxQzJJQkFYOGpBRUVRYXlJREpBQWdBeUFDTmdJTUlBQUNmeUFCUVJocUlBTkJER29RbmdJaUFrVUVRRUVBSVFKQkFBd0JDeUFESUFKQkRHb2lBaWdDQURZQ0NDQUJRVGhxSUFOQkNHb1FuZ0pGQ3pvQUJDQUFJQUkyQWdBZ0EwRVFhaVFBQ3h3QkFYOGdBQ2dDTENJQklBQW9BakJHQkVCQkFBOExJQUVvQWdBTEJ3QWdBRUVzYWd2eUFRRUVmeU1BUWNBQmF5SURKQUFnQXlBQk5nSzhBUUpBSUFBb0FoQkJBa1lFUUNBRFFRaHFJQUVRcXdvaEJTQURJQUUyQWxnZ0EwSFlBR29pQkVFRWNpQUZFS2tJSVFFZ0EwR3dBV29nQUVFWWFpQUVFTllWSUFNdEFMUUJJUVFnQXlnQ3NBRWhCaUFCRU00RklBVVF6Z1VDUUNBQ0JFQWdBQ2dDVEEwRElBQkJPR29nQTBHOEFXb1Exd2NnQUNBR1FReHFOZ0pNSUFCQkxHb2dBRUhNQUdvUXp3RU1BUXNnQkVVTkFDQURRZGdBYWlBQVFUaHFJQU5CdkFGcUVKWUJDeUFEUWNBQmFpUUFRUUFQQzBHMXF3bEJrcW9DUWZvQVFZT2VBeEFBQUF0Qm1xWUpRWktxQWtHREFVR0RuZ01RQUFBTE5nQWdBQ0FCTmdJQUlBQkJCR3BCQUVFcUVIa2FJQUJDQURjQ1NDQUFRVUJyUWdBM0FnQWdBRUlBTndJNElBQkNBRGNDTUNBQUM0Z0xBUUYvSXdCQndBRnJJaFFrQUFKQUlBQWdBQ0FCUVFFUUpoQndRZDBwUndSQUlCUWdBRUZ5SUFFUUVDQVVRWkQxQlJBT0dpQVVLQUs4QVNFQ0lCUVFFUXdCQ3dKQUlBSkJmMFlOQUNBQUlBQWdBU0FDRUNZaUFoQlFCRUFnQUNBQ0VENUJJRVlOQVFzZ0ZDQUFRWElnQVJBUUlCUkJwSU1DRUE0YUlCUW9BcndCSVFJZ0ZCQVJEQUVMQWtBZ0EwRi9SZzBBSUFBZ0FDQUJJQU1RSmlJQ0VGQUVRQ0FBSUFJUVBrRWdSZzBCQ3lBVUlBQkJjaUFCRUJBZ0ZFSDdnZ0lRRGhvZ0ZDZ0N2QUVoQWlBVUVCRU1BUXNDUUNBRVFYOUdEUUFnQUNBQUlBRWdCQkFtSWdJUVVBUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFZZUFBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUExQmYwWU5BQ0FBSUFBZ0FTQU5FQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFiS0FBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUFaQmYwWU5BQ0FBSUFBZ0FTQUdFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFZaUNBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUFoQmYwWU5BQ0FBSUFBZ0FTQUlFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFiMkZBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUFsQmYwWU5BQ0FBSUFBZ0FTQUpFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFZcUhBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUFwQmYwWU5BQ0FBSUFBZ0FTQUtFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFmR0hBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUF0QmYwWU5BQ0FBSUFBZ0FTQUxFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFkT0dBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUF4QmYwWU5BQ0FBSUFBZ0FTQU1FQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFicUhBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUE1QmYwWU5BQUpBSUFBZ0FDQUJJQTRRSmlJQ0VJNEJSUTBBSUFBZ0FoQkZRUU5IRFFBZ0FDQUNFRDVCSUVZTkFRc2dGQ0FBUVhJZ0FSQVFJQlJCa3NvQkVBNGFJQlFvQXJ3QklRSWdGQkFSREFFTEFrQWdEMEYvUmcwQUlBQWdBQ0FCSUE4UUppSUNFSGNFUUNBQUlBSVFQa0VnUmcwQkN5QVVJQUJCY2lBQkVCQWdGRUdsaXdJUURob2dGQ2dDdkFFaEFpQVVFQkVNQVFzQ1FDQVFRWDlHRFFBQ1FDQUFJQUFnQVNBUUVDWWlBaENPQVVVTkFDQUFJQUlRUlVFRFJ3MEFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFkckpBUkFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUJGQmYwWU5BQ0FBSUFBZ0FTQVJFQ1lpQWhCM0JFQWdBQ0FDRUQ1QklFWU5BUXNnRkNBQVFYSWdBUkFRSUJSQi9vb0NFQTRhSUJRb0Fyd0JJUUlnRkJBUkRBRUxBa0FnQlVGL1JnMEFJQUFnQUNBQklBVVFKaUlDRUZBRVFDQUFJQUlRUGtFZ1JnMEJDeUFVSUFCQmNpQUJFQkFnRkVIaWdRSVFEaG9nRkNnQ3ZBRWhBaUFVRUJFTUFRc0NRQ0FTUVg5R0RRQWdBQ0FCSUJJUUd4QWdJZ0l2QVI1Qk8wWUVRQ0FDUVFJUUcwSGFLVVlOQVNBQ1FRSVFHMEhlS1VZTkFRc2dGQ0FBUVhJZ0FSQVFJQlJCNFBvRkVBNGFJQlFvQXJ3QklRSWdGQkFSREFFTEFrQWdCMEYvUmcwQUlBQWdBQ0FCSUFjUUppSUNFTzhCQkVBZ0FDQUNFRDVCSUVZTkFRc2dGQ0FBUVhJZ0FSQVFJQlJCb1lnQ0VBNGFJQlFvQXJ3QklRSWdGQkFSREFFTFFRQWhBaUFUUVg5R0RRQWdBQ0FCSUJNUUd4QWdJZ012QVI1Qk8wWUVRQ0FEUVFJUUcwR0pLa1lOQVFzZ0ZDQUFRWElnQVJBUUlCUkIyTTBGRUE0YUlCUW9BcndCSVFJZ0ZCQVJDeUFVUWNBQmFpUUFJQUlMSkFBZ0FFSUFOd0lFSUFBZ0FFRUVhallDQUNBQUlBRW9BZ0FnQVVFRWFoRG5GaUFBQzdZQkFRSi9Jd0JCd0FGcklnTWtBQUpBQWtBZ0FDQUJJQUlRR3hBZ0lnUUVRQ0FFTHdFZVFReEdEUUVMSUFNZ0FFRjJJQUVRRUNBRFFlakxBaEFPR2lBREtBSzhBU0VDSUFNUUVRd0JDeUFFUVFJUUd5QUJRUUlRRzBjRVFDQURJQUJCZGlBQkVCQWdBMEdaTWhBT0dpQURLQUs4QVNFQ0lBTVFFUXdCQzBFQUlRSWdCRUVERUJ0QkFrWU5BQ0FESUFCQmRpQUJFQkFnQTBIb3l3SVFEaG9nQXlnQ3ZBRWhBaUFERUJFTElBTkJ3QUZxSkFBZ0FnczBBUUYvSXdCQkVHc2lCQ1FBSUFBZ0JFR3NxZ1FRRkNJQVFRSWdBU0FDSUFNUTlnRWhBU0FBRUE4YUlBUkJFR29rQUNBQkN3b0FJQUJCd0pzU0VFZ0xhQUVFZnlNQVFSQnJJZ1VrQUFKL1FRRWhBZ0pBSUFBb0FnQWlBeUFCS0FJQUlnUkpEUUJCQUNBRElBUkxEUUVhSUFBb0FnUWlBeUFCS0FJRUlnUkpEUUJCQUNFQ0lBTWdCRXNOQUNBQUtBSUlJQUVvQWdoSklRSUxJQUlMSVFBZ0JVRVFhaVFBSUFBTFNnRUJmd0pBSUFGRkRRQWdBU2dDRENJQklBQW9BZ1FnQUNnQ0FDSUFhMEVDZFU4TkFDQUFJQUZCQW5ScUtBSUFJZ0JCQUNBQUJIOGdBQ2dDQkJENUZRVkJBQXNiSVFJTElBSUxpd0lCQkg4akFFRVFheUlESkFBQ1FBSkFBa0FDUUFOQUFrQUNRQUpBSUFFZ0FCQWdJZ0l2QVI1QkZXc09EQVlHQVFFQUFBQUJBUUlGQkFVTElBRkJnQUZxUVk0cUVHZ0VRQ0FCS0FLY0EwRURkaUVDREFjTFFkV1NCMEdvbWdKQmt3SkJvc29BRUFBQUN5QUNLQUlBS0FJSUlRQU1BUXNMSUFNZ0FDQUJFTWtGSUFNb0FnUWdBeWdDQUd0QkFuVWhCRUVBSVFCQkFTRUNBMEFnQUNBRVJnUkFJQU1RTWhvTUJRVWdBeWdDQUNBQVFRSjBhaWdDQUNBQkVMTUtJZ1VnQWlBQ0lBVkpHeUVDSUFCQkFXb2hBQXdCQ3dBTEFBc2dBU2dDbUFNaEFnd0NDMEhWa2dkQnFKb0NRYThDUWFMS0FCQUFBQXNnQWlnQ0FDZ0NDRUVEZGlFQ0N5QURRUkJxSkFBZ0Fnc1FBQ0FBS0FJQUlnQUVRQ0FBRUI4TEMra0lBd3gvQW4wQmZpQUJLUUlBSWhCQ0lJaW5JZ2RCSG5jZ0VLY2lCWE1oQ0FKQUFrQWdBQ2dDQkNJQ1JRMEFBa0FnQW1raUFVRUJUUVJBSUFnZ0FrRUJhM0VoQXd3QkN5QUNJQWdpQTBzTkFDQUlJQUp3SVFNTElBQW9BZ0FnQTBFQ2RHb29BZ0FpQkVVTkFDQUNRUUZySVFZZ0FVRUJTeUVKQTBBZ0JDZ0NBQ0lFUlEwQklBZ2dCQ2dDQkNJQlJ3UkFBa0FnQ1VVRVFDQUJJQVp4SVFFTUFRc2dBU0FDU1EwQUlBRWdBbkFoQVFzZ0FTQURSdzBDQ3lBRUtBSUlJQVZIRFFBZ0JDZ0NEQ0FIUncwQUN3d0JDMEVZRUJVaUJDQVFOd0lJSUFRZ0NEWUNCQ0FFUVFBMkFnQWdCRUlCTndJUUlBQkJDR29oQ1FKQVFRQWdBaUFBS0FJTVFRRnFzeUlQSUFBcUFoQWlEaUFDczVSZUd3MEFRUUloQXdKQUlBSWdBa0VCYTNGQkFFY2dBa0VEU1hJZ0FrRUJkSElpQVFKL0lBOGdEcFdOSWc1REFBQ0FUMTBnRGtNQUFBQUFZSEVFUUNBT3FRd0JDMEVBQ3lJRklBRWdCVXNiSWdGQkFVWU5BQ0FCSUFGQkFXdHhSUVJBSUFFaEF3d0JDeUFCRUg4aEF5QUFLQUlFSVFJTEFrQUNRQUpBSUFJZ0EwOEVRQ0FDSUFOTkRRTWdBa0VEU1NFSEFuOGdBQ2dDRExNZ0FDb0NFSldOSWc1REFBQ0FUMTBnRGtNQUFBQUFZSEVFUUNBT3FRd0JDMEVBQ3lFQklBSWdBeUFISUFKcFFRRkxjZ1IvSUFFUWZ3VWdBVUVCUVNBZ0FVRUJhMmRyZENBQlFRSkpHd3NpQVNBQklBTkpHeUlEVFFSQUlBQW9BZ1FoQWd3RUN5QURSUTBCQ3lBRFFZQ0FnSUFFU1FSQUlBQWdBMEVDZEJBVkVHd2dBQ0FETmdJRVFRQWhBUU5BSUFFZ0EwWUVRQUpBSUFBb0FnZ2lCdzBBREFVTEJTQUFLQUlBSUFGQkFuUnFRUUEyQWdBZ0FVRUJhaUVCREFFTEN5QUhLQUlFSVFZQ1FDQURhU0lCUVFGTkJFQWdCaUFEUVFGcmNTRUdEQUVMSUFNZ0Jrc05BQ0FHSUFOd0lRWUxJQUFvQWdBZ0JrRUNkR29nQ1RZQ0FDQURRUUZySVFzZ0FVRUJTeUVNQTBBZ0J5Z0NBQ0lDUlEwRElBSW9BZ1FoQlFKQUlBeEZCRUFnQlNBTGNTRUZEQUVMSUFNZ0JVc05BQ0FGSUFOd0lRVUxBa0FnQlNBR1JnMEFJQUloQVNBRlFRSjBJZ29nQUNnQ0FHb2lEU2dDQUVVRVFDQU5JQWMyQWdBZ0JTRUdEQUVMQTBBQ1FDQUJJZ1VvQWdBaUFVVU5BQ0FDS0FJSUlBRW9BZ2hIRFFBZ0FpZ0NEQ0FCS0FJTVJnMEJDd3NnQnlBQk5nSUFJQVVnQUNnQ0FDQUthaWdDQUNnQ0FEWUNBQ0FBS0FJQUlBcHFLQUlBSUFJMkFnQU1BUXNnQWlFSERBQUxBQXNRK3dFQUMwRUFJUUlnQUVFQUVHd2dBRUVBTmdJRURBRUxJQU1oQWdzZ0FpQUNRUUZySWdGeFJRUkFJQUVnQ0hFaEF3d0JDeUFDSUFoTEJFQWdDQ0VEREFFTElBZ2dBbkFoQXdzQ1FBSkFJQUFvQWdBZ0EwRUNkR29pQXlnQ0FDSUJSUVJBSUFRZ0FDZ0NDRFlDQUNBQUlBUTJBZ2dnQXlBSk5nSUFJQVFvQWdBaUFVVU5BaUFCS0FJRUlRRUNRQ0FDSUFKQkFXc2lBM0ZGQkVBZ0FTQURjU0VCREFFTElBRWdBa2tOQUNBQklBSndJUUVMSUFBb0FnQWdBVUVDZEdvaEFRd0JDeUFFSUFFb0FnQTJBZ0FMSUFFZ0JEWUNBQXNnQUNBQUtBSU1RUUZxTmdJTUN5QUVRUkJxQ3hjQUlBQWdBUkRzQVNJQVJRUkFFQUVBQ3lBQVFReHFDN0VUQWhSL0FuNGpBRUdBQW1zaUNDUUFJQWNvQWdRaUN5MEFLa1VFUUNBTExRQW5SU0FEY1NFU1FRRWhFeUFITFFDbkEwVUVRQ0FMTFFBbVFRQkhJUk1MSUFnZ0JEb0ErZ0VnQ0NBVE9nRDVBU0FJSUJJNkFQZ0JJQWdnQWpZQzlBRWdDQ0FCTmdMd0FTQUlJQUEyQXV3QklBZ2dCellDNkFFZ0NFSFlBV29nQUNBSEVNa0ZJQWhCQURZQzBBRWdDRUlBTndQSUFTQUlRZEFCYWlFUUFrQUNRQUpBQWtBQ2Z5QUlLQUxjQVNJSklBZ29BdGdCSWdOR0JFQWdDUXdCQ3lBSklBTnJJZ05CL2YvLy93ZFBEUUVnQ0NBRFFRSjFRUUFnRUJDSEZpSUpJQWtvQWdRZ0NDZ0N6QUVpQ3lBSUtBTElBU0lEYXlJTWF5SUtOZ0lFSUF4QkFFb0VRQ0FLSUFNZ0RCQjlHaUFKS0FJRUlRb2dDQ2dDekFFaEN5QUlLQUxJQVNFREN5QUlJQW8yQXNnQklBa2dBellDQkNBSUlBa29BZ2cyQXN3QklBa2dDellDQ0NBSUtBTFFBU0VMSUFnZ0NTZ0NERFlDMEFFZ0NTQUROZ0lBSUFrZ0N6WUNEQ0FKRUlZV0lBZ29BdGdCSVFrZ0NDZ0MzQUVMSUFsclFRSjFyU0VkQTBBZ0hDQWRVUVJBSUFnb0Fzd0JJUXNnQ0NnQ3lBRWhDaUFJUVFBMkFnQWdDeUFLYXlJTVFRTjFJUVZCQUNFRFFRQWhDU0FNUVlFSVNBMEZJQVVoQ1FOQUlBbEJBRXdFUUVFQUlRbEJBQ0VEREFZTElBbEJBM1FRRlNJRERRVWdDVUVCZGlFSkRBQUxBQXNnQ0VIQUFXb2dCeUFBSUJ5bkVOd05RWDhoQXlBSUtBTEFBU0VKQTBBZ0NDZ0N4QUVnQ1VZRVFDQURJQVZxSVFzQ1FDQUlLQUxNQVNJRElBZ29BdEFCSWdwSkJFQWdBeUFMclVJZ2hpQWNoRGNDQUNBSUlBTkJDR28yQXN3QkRBRUxJQU1nQ0NnQ3lBRWlDV3RCQTNVaURFRUJhaUlEUVlDQWdJQUNUdzBFSUFoQi8vLy8vd0VnQ2lBSmF5SUtRUUoxSWdrZ0F5QURJQWxKR3lBS1Fmai8vLzhIVHhzZ0RDQVFFSWNXSVEwZ0NDZ0NDQ0FMclVJZ2hpQWNoRGNDQUNBSUlBZ29BZ2hCQ0dvaUNqWUNDQ0FJSUFnb0FnUWdDQ2dDekFFaURDQUlLQUxJQVNJSmF5SUxheUlETmdJRUlBdEJBRW9FUUNBRElBa2dDeEI5R2lBSUtBSUlJUW9nQ0NnQ3pBRWhEQ0FJS0FMSUFTRUpJQWdvQWdRaEF3c2dDQ0FKTmdJRUlBZ2dBellDeUFFZ0NDQUtOZ0xNQVNBSUlBdzJBZ2dnQ0NnQzBBRWhBeUFJSUFnb0FndzJBdEFCSUFnZ0F6WUNEQ0FOSUFrMkFnQWdEUkNHRmdzZ0hFSUJmQ0VjREFJTElCd2dDVFVDSUZJTkF5QUpLQUlRUVNOR0JFQWdDU2dDRkNnQ0FDRURDeUFKRUV3aENRd0FDd0FMQUFzUUFRQUxRZFFrUWFpYUFrSGdBMEdsTFJBQUFBc2dDQ0FERUd3TElBb2dDeUFGSUFNZ0NSQ3dDQ0FJUVFBUWJDQUVRUUZ6SVJoQkFDRURBa0FDUUFOQUlBZ29Bc3dCSUFnb0FzZ0JJZ1ZyUVFOMUlCVk5CRUJCQUNFS0RBTUxJQVVnRlVFRGRHb2lCU2dDQkNFTklBZ29BdGdCSUFVb0FnQWlEa0VDZEdvb0FnQWhDaUFJSUE0MkFnUWdDQ0FBTmdJQUlBWWdDQkMxQ2lFUkFuOGdCQVJBSUFvZ0J4Q3pDZ3dCQ3lBS0lCSWdFU0FHSUFjUXBnY0xJUVVnQnlBS0VDQWlEQzhCSGlFVUlBb2dFU0FHSUFjUXBRY2hHU0FOUVg5R0JFQWdDQ0FJUWVnQmFpQU9FSU1GSUFoQnk5Z0NFQTRhSUFnb0Fyd0JJUW9nQ0JBUkRBTUxBa0FDUUFKQUlCUkJGMFlnR0hFZ0UzRUVRQ0FNS0FJQUtBSUlJQWNRc3dvaUN3Ui9JQTBnQzNBRklBMExSUTBCSUFnZ0NFSG9BV29nRGhDREJTQUlRWmJPQ1JBT0dpQUlJQTBRSVJvZ0NFR1JzZ29RRGhvZ0NDQUxFQ0VhSUFnb0Fyd0JJUW9nQ0JBUkRBWUxJQVVFZnlBTklBVndCU0FOQ3dSQUlBZ2dDRUhvQVdvZ0RoQ0RCU0FJUVpiT0NSQU9HaUFJSUEwUUlSb2dDRUhVaEFvUURob2dDQ0FGRUNFYUlBZ29BcndCSVFvZ0NCQVJEQVlMSUFNZ0RVME5BUXdFQ3lBRElBMUxEUU1DUUNBS0lCRWdCaUFIRUtVSElnTkJFRTBFUUNBRklRc2dBeUFOYWtFQmF5QU5jMEVRVHcwQkRBTUxJQVVoQ3lBTlFROXhSUTBDQ3lBSUlBaEI2QUZxSUE0UWd3VWdDRUhIelFrUURob2dDQ0FORUNFYUlBZ29BcndCSVFvZ0NCQVJEQVFMQWtBZ0ZFRVlSd1JBSUJSQkhrWU5BU0FGSVFzTUFnc2dFU2dDQkNFRElBVWlDd1IvSUFNZ0JYQUZJQU1MUlEwQklBZ2dDRUhvQVdvZ0RoQ0RCU0FJUVlIRUNoQU9HaUFJSUFNUUlSb2dDRUcxZ0FvUURob2dDQ0FGRUNFYUlBZ29BcndCSVFvZ0NCQVJEQVFMSUFVaEN5QUtJQUVnQWlBU0lBUWdEU0FHSUFjUXR3b2lDZzBEQ3dOQUFrQWdEQzhCSGtIKy93TnhRUnhHQkVBZ0J5QU1LQUlBS0FJSUlob1FJQ0VRSUFjZ0RDZ0NLQkRlQVNJRFFRUnFJUW9nQXlnQ0FDRUpRUUFoQXdOQUlBa2dDa2NFUUFKQUlBa29BaEJCQmtjTkFDQUpLQUlVS0FJQUlnTkZCRUFnQ0NBSVFlZ0JhaUFPRUlNRklBaEJ1NDRIRUE0YUlBZ29BcndCSVFvZ0NCQVJEQWtMSUFzRVFDQURJQXR3UlEwQkN5QUlJQWhCNkFGcUlBNFFnd1VnQ0VIaXd3b1FEaG9nQ0NBSktBSVVFTE1ISWdCQnRZQUtFQTRhSUFBZ0JSQWhHaUFBS0FLOEFTRUtJQWdRRVF3SUN5QUpFRXdoQ1F3QkN3dEJBU0VXSUF3dkFSNUJIRVlFUUNBSUlBY2dEQ2dDQUNnQ0RCRGRBVUVCSUFnb0FnUWlDeUFMUVFGTkd5RVdDeUFRTHdFZVFSNUhCRUFnRnlFS0RBSUxRUUFoQ1NBSVFRQTZBTUFCSUFoQkFEWUNDQ0FJUWdBM0FnQWdDRUVRRUlVV0lBZ3RBTUFCSVJzakFFRVFheUlLSkFBZ0NDSUxJQWdvQWdRaURFRVFhaUlQTmdJRUlBeEJBQ0FQUVFGcklBeEJBV3R6UVNCSkcwVUVRQ0FMS0FJQUlBOUJBV3RCQlhaQkFDQVBRU0ZQRzBFQ2RHcEJBRFlDQUFzZ0N5Z0NBQ0VQSUFvZ0RFRWZjVFlDRENBS0lBOGdERUVEZGtIOC8vLy9BWEZxTmdJSUlBcEJDR3BCRUNBYkVOc05JQXBCRUdva0FBTkFBa0FDUUFKQUFrQWdDU0FXUmdSQVFRRWhEQXdCQzBFQklReEJBU0FESUFsc0lBMXFJZ3RCRDNGMElnOGdDQ2dDQUNnQ0FIRkZEUUVMSUJjaENnd0JDeUFhSUFFZ0FpQVNJQVFnQ3lBR0lBY1F0d29pQ2tVTkFVRUFJUXdMSUFnUXRBb2dERVVOQnd3REN5QUlLQUlBSWdzZ0N5Z0NBQ0FQY2pZQ0FDQUpRUUZxSVFrTUFBc0FDeUFOSUJscUlRTUNRQ0FFRFFBQ1FDQVVRUnhyRGdNQUFRQUJDeUFESUFWcVFRRnJRUUFnQld0eElRTUxJQlZCQVdvaEZRd0NDeUFRS0FJb0lRc0NmeUFFQkVBZ0N5QUhFTE1LREFFTElBc2dFaUFSSUFZZ0J4Q21Cd3NoQ3lBS0lSY2dFQ0lNS0FJb0lCRWdCaUFIRUtVSElnb2dBMDBOQUFzTElBZ2dDRUhvQVdvZ0RoQ0RCU0FJUWVMRENoQU9HaUFJSUFNUUlSb2dDRUhkcndvUURob2dDQ0FLRUNFYUlBZ29BcndCSVFvZ0NCQVJEQUVMSUFnZ0NFSG9BV29nRGhDREJTQUlRWmJPQ1JBT0dpQUlJQTBRSVJvZ0NFSDF6UWtRRGhvZ0NDQURRUUZyRUNFYUlBZ29BcndCSVFvZ0NCQVJDeUFJS0FMSUFTSUFCRUFnQ0NBQU5nTE1BU0FBRUI4TElBaEIyQUZxRURJYUN5QUlRWUFDYWlRQUlBb0wxZ0lCQlg4akFFRkFhaUlGSkFBZ0JVRXdhaUFBSUFNUXlRVURRQUpBQWtBZ0JTZ0NOQ0FGS0FJd0lnUnJRUUoxSUFaTEJFQWdBeUFFSUFaQkFuUnFLQUlBSWdRUUlDOEJIaUFDUncwQ0lBTWdCQkRlQVNJRVFRUnFJUWdnQkNnQ0FDRUVRUUFoQndOQUlBUWdDRVlFUUNBRElBQVEzZ0VpQkVFRWFpRUlJQVFvQWdBaEJBTkFJQVFnQ0VZRVFDQUhRUUZ4RFFaQkFDRUdEQVVGSUFFZ0JDZ0NFQkNLQWdSQUlBWWdCQ2dDSUVZZ0IzSWhCd3NnQkJCTUlRUU1BUXNBQ3dBRklBRWdCQ2dDRUJDS0FpQUhjaUVISUFRUVRDRUVEQUVMQUFzQUN5QUZRU0JxSUFBZ0F4Q0tGaUFGS0FJa0lRQWdCU2dDSUNFRUEwQWdBQ0FFUmlJR1JRUkFJQVFvQWdBZ0JVRUlhaUFCRU5FQklnY2dBaUFERUxnS0lRZ2dCeEFXSUFSQkJHb2hCQ0FJRFFFTEN5QUZRU0JxRURJYUN5QUZRVEJxRURJYUlBVkJRR3NrQUNBR0R3c2dCa0VCYWlFR0RBQUxBQXQxQVFKL0l3QkJnQUZySWdVa0FDQUZRZWdBYWlBQkVORUJJUUVnQlVIUUFHb2dBaERSQVNFQ0lBVkJPR29nQXhEUkFTRURJQVZCQURZQ01DQUFJQUVnQWlBRElBVkJJR29pQmlBRlFRaHFJQVFRMFFFaUFCQ1NGaUFBRUJZZ0JoQVdJQU1RRmlBQ0VCWWdBUkFXSUFWQmdBRnFKQUFMU3dFQ2Z5QUFRUVJxSVFBZ0FTZ0NBQ0VCQTM4Z0FDZ0NBQ0lBUlFSQVFRQVBDeUFCS0FJQUlnSWdBQ2dDRUNnQ0FDSURTUTBBSUFJZ0EwMEVmMEVCQlNBQVFRUnFJUUFNQVFzTEM5TUJBUVIvSXdCQjhBRnJJZ01rQUNBQUVNc0JJZ0lvQWl3aUJDQUNLQUl3UmdSL1FRQUZJQVFvQWdBb0FnQWdBVVlMQkVBZ0EwRXdhaUlDSUFCQmRTQUFJQUFReXdFb0FnQVFJQkFRSUFKQnVwc0tFQTRhSUFOQklHb2lCQ0FBSUFFUUtpQUNJQVFRRWhvZ0FrSC9od29RRGhvZ0EwRVFhaUlCSUFBZ0FCRExBU2dDQUJBcUlBSWdBUkFTR2lBQ1FhNmFDaEFPR2lBRElBQWdBQkRMQVNnQ1RDZ0NBQkFxSUFJZ0F4QVNHaUFES0FMc0FTRUZJQU1RRHhvZ0FSQVBHaUFFRUE4YUlBSVFFUXNnQTBId0FXb2tBQ0FGQzRBR0FRWi9JQUFnQVNnQ0FEWUNBQ0FBSUFFb0FnUTJBZ1FnQUVFSWFpQUJRUWhxSWdJUXZoc2lBMEV3YWlBQ1FUQnFFTDRiR2lBRFFlQUFhaUFDUWVBQWFoQ3lDQm9nQUVHRUFXb2dBVUdFQVdvUXNnZ2FJQUJCb0FGcUlBRkJvQUZxRUxJSUdpQUFRYndCYWlBQlFid0JhaEN5Q0JvZ0FDQUJLQUxZQVRZQzJBRWdBRUhjQVdvZ0FVSGNBV29pQWhDbEFpSURRUXhxSUFKQkRHb1FvUVFnQXlBQ0tBSWdOZ0lnSXdCQkVHc2lCU1FBSUFCQmdBSnFJZ0lnQVVHQUFtb2lBeWdDQURZQ0FDTUFRUkJySWdRa0FDQUNRUVJxSWdaQkFEWUNDQ0FHUWdBM0FnQWdCRUVCT2dBTUlBUWdBMEVFYWpZQ0NDQUdJQVJCQ0dvUTR4c2dCRUVRYWlRQUlBWWdBeWtDRURjQ0RDTUFRUkJySWdRa0FDQUNRUmhxSWdaQkFEWUNDQ0FHUWdBM0FnQWdCRUVCT2dBTUlBUWdBMEVZYWpZQ0NDQUdJQVJCQ0dvUTRoc2dCRUVRYWlRQUlBWWdBeWtDSkRjQ0RDQURLQUlzSVFRZ0FrS0FnQVEzQWpnZ0FrSUFOd0l3SUFJZ0JEWUNMQ0FGSUFJcEFqZzNBd2dnQlNBQ0tRSXdOd01BSUFJZ0F5a0NPRGNDT0NBQ0lBTXBBakEzQWpBZ0F5QUZLUU1JTndJNElBTWdCU2tEQURjQ01DQUZRUkJxSkFBakFFRVFheUlGSkFBZ0JTQUFRY0FDYWpZQ0RDQUZJQUZCd0FKcU5nSUlJQVVvQWd3aUJpRURJQVVvQWdnaEJDTUFRUkJySWdJa0FDQUNJQU0yQWd3Z0FpQUVOZ0lJSUFJb0Fnd2lCRUVBTmdJQUlBUkJBRFlDQkNBQ1FRQTJBZ1FnQWlnQ0NCQzNBU0VISXdCQkVHc2lBeVFBSUFNZ0JFRUlhallDRENBRElBSkJCR28yQWdnZ0F5QUhOZ0lFSUFNb0Fnd2lCeUFES0FJSUVNd09JQWNnQXlnQ0JCQ2tHQ0FEUVJCcUpBQWdCQkN2QXlBRUlBSW9BZ2dvQWdBMkFnQWdCQ0FDS0FJSUtBSUVOZ0lFSUFJb0FnZ1F0d0VvQWdBaEF5QUVFTGNCSUFNMkFnQWdBaWdDQ0JDM0FVRUFOZ0lBSUFJb0FnaEJBRFlDQkNBQ0tBSUlRUUEyQWdBZ0FrRVFhaVFBSUFZZ0JTZ0NDQ2dDRERZQ0RDQUZRUkJxSkFBZ0FTMEEwQUloQWlBQVFRQTZBTkVDSUFBZ0Fqb0EwQUlnQVJDdkFTQUJRUUU2QU5FQ0lBQUxFZ0FnQUVIc0FFR1Yvd05CZkVFREVNb0JDOEVCQVFWL0l3QkJFR3NpQ1NRQUlBQVFIQ0FBSUFBb0FneEJBV29pQ0RZQ0RDQUpJQWcyQWdnakFFRWdheUlJSkFBZ0FFR01BV29pQ2hDaUZpRUxJQUlvQWdBaEFpQUpLQUlJSVF3Z0FDZ0NDQ0VBSUFnZ0F5a0NBRGNER0NBRktBSUFJUU1nQkNnQ0FDRUVJQWdnQmlrQ0FEY0RFQ0FJSUFjcEFnQTNBd2dnQ2lBTElBQWdEQ0FCSUFJZ0NFRVlhaUFFSUFNZ0NFRVFhaUFJUVFocUVPTWRJZ0FRS0NBS0lBb29BaGhCQVdvMkFoZ2dDRUVnYWlRQUlBbEJFR29rQUNBQUMwZ0JBbjhqQUVFUWF5SUZKQUFnQlVFQU5nSU1JQUFvQWdBZ0FTQUNJQVZCREdvUXZRTWlCa1VFUUNBQUlBRWdBaUFESUFRZ0JTZ0NEQkMrRmlFR0N5QUZRUkJxSkFBZ0Jnc2JBQ0FBSUFFcEFnQTNBZ0FnQUVFSWFpQUJRUWhxRUZZYUlBQUxSZ0VDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUNnQ0FDQUJJQUlnQkVFTWFoQzlBeUlGUlFSQUlBQWdBU0FDSUFNZ0JDZ0NEQkN6RmlFRkN5QUVRUkJxSkFBZ0JRdWJBZ0VEZnlNQVFkQUJheUlESkFBZ0FTOEJIaUVFQWtBQ1FDQUFJQUlRVUEwQUlBQWdBaEMyQVEwQUlBTkJFR29pQWlBQVFYSWdBUkFRSUFNZ0FFR3RKUkEzSUFJZ0F4QVNHaUFDUWFlc0RCQU9HaUFDSUFRUWdRRVFEaG9nQXlnQ3pBRWhCU0FERUE4YUlBSVFFUXdCQ3dKQUlBQW9BZ0FvQWdBUVIwVU5BQ0FBSUFJUVBrRWdSZzBBSUFOQkVHb2lBaUFBUVhJZ0FSQVFJQU1nQUVHdEpSQTNJQUlnQXhBU0dpQUNRZnVyREJBT0dpQUNJQVFRZ1FFUURob2dBeWdDekFFaEJTQURFQThhSUFJUUVRd0JDeUFFUWMwQlJnMEFJQUVvQWlRZ0FrWU5BQ0FEUVJCcUlnSWdBRUZ5SUFFUUVDQUNRZDJmREJBT0dpQUNJQVFRZ1FFUURob2dBeWdDekFFaEJTQUNFQkVMSUFOQjBBRnFKQUFnQlF0Y0FRTi9Ba0FnQUNnQ0NFVU5BQ0FBS0FJRUlnRW9BZ0FpQXlBQUtBSUFJZ0lvQWdRMkFnUWdBaWdDQkNBRE5nSUFJQUJCQURZQ0NBTkFJQUFnQVVZTkFTQUJLQUlFSVFJZ0FVRUlhaEFXSUFFUUh5QUNJUUVNQUFzQUN3c2ZBQ0FCQkVBZ0FDQUJLQUlBRU1RS0lBQWdBU2dDQkJERUNpQUJFQjhMQ3d3QUlBQkJFR29nQVJDSUNRc0tBQ0FBUVFGclFRVkpDeDBBSUFCQjd3QkxCRUJCM1BnTUR3c2dBRUVDZEVHUXRoTnFLQUlBQ3drQUlBQkJBQkNPRGdzbkFRRi9Jd0JCRUdzaUF5UUFJQU1nQWpZQ0RDQUFJQUVnQTBFTWFoRFNIQ0FEUVJCcUpBQUxOUUFnQVNBQUtBSWtUd1JBUWN6QUFVSDNsUUpCcndGQjNmc0FFQUFBQ3lBQUtBSWdJQUZCQW5ScUtBSUFJQUFvQWpRUXB3WUxKZ0FnQUNBQktRTUFOd01BSUFBZ0FTa0RDRGNEQ0NBQVFSQnFJQUZCRUdvUTBRRWFJQUFMUkFBZ0FpQUJMd0VZVHdSQVFZUEJBVUgzbFFKQnhBQkJzZWtFRUFBQUN5QUFJQUVvQWdBZ0FTZ0NGQ0FDUVFSMGFpSUFMd0VBUVFKMGFpQUFMd0VDUVFFUWtRNExNQUVDZndKL1FRRWdBQ2dDQUNJQ0lBRW9BZ0FpQTBrTkFCcEJBQ0FDSUFOTERRQWFJQUFvQWdRZ0FTZ0NCRWtMQ3ljQUlBRUVRQ0FBSUFFb0FnQVF6Z29nQUNBQktBSUVFTTRLSUFGQkZHb1FwQUlnQVJBZkN3dG5BUUovSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ01BUVJCcklnRWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQVNBRE5nSUlJQUJCakFGcUlBQkJDR29nQVVFSWFpQUFRZGdDYWlBQ1FReHFFTEVYSVFBZ0FVRVFhaVFBSUFKQkVHb2tBQ0FBQzBvQkFYOGdBRUVBTmdJTUlBQWdBellDRUNBQkJFQWdBUkM4RnlFRUN5QUFJQVEyQWdBZ0FDQUVJQUpCQTNScUlnSTJBZ2dnQUNBRUlBRkJBM1JxTmdJTUlBQWdBallDQkNBQUM2WUxBUWwvSXdCQkVHc2lDU1FBSUFBUXlCZEZCRUFqQUVFd2F5SUdKQUFDUUNBQUtBSVFJZ0pCZ0FoUEJFQWdBQ0FDUVlBSWF6WUNFQ0FHSUFBb0FnUWlBaWdDQURZQ0dDQUFJQUpCQkdvMkFnUWdBQ0FHUVJocUVLUU9EQUVMQWtBZ0FDZ0NDQ0lESUFBb0FnUnJRUUoxSWdRZ0FDZ0NEQ0lDSUFBb0FnQWlCV3NpQjBFQ2RVa0VRQ0FDSUFOR0RRRWdCa0dBSUJBVk5nSVlJQUFnQmtFWWFoQ2tEZ3dDQ3lBR1FSaHFRUUVnQjBFQmRTQUNJQVZHR3lBRUlBQkJER29RcHdJaEFrR0FJQkFWSVFNZ0JrR0FDRFlDRUNBR0lBQkJGR28yQWd3Z0JpQUROZ0lFSXdCQklHc2lCeVFBQWtBZ0FpZ0NDQ0lESUFJb0FneEhCRUFnQXlFRURBRUxJQUlvQWdRaUJDQUNLQUlBSWdWTEJFQWdBeUFFYXlFSUlBUWdCQ0FGYTBFQ2RVRUJha0YrYlVFQ2RDSUthaUVGSUFNZ0JFY0VRQ0FGSUFRZ0NCRG5BUm9nQWlnQ0JDRURDeUFDSUFVZ0NHb2lCRFlDQ0NBQ0lBTWdDbW8yQWdRTUFRc2dCMEVJYWtFQklBTWdCV3RCQVhVZ0F5QUZSaHNpQXlBRFFRSjJJQUlvQWhBUXB3SWlBeUFDS0FJRUlBSW9BZ2dRcndZZ0FpZ0NBQ0VFSUFJZ0F5Z0NBRFlDQUNBRElBUTJBZ0FnQWlnQ0JDRUVJQUlnQXlnQ0JEWUNCQ0FESUFRMkFnUWdBaWdDQ0NFRUlBSWdBeWdDQ0RZQ0NDQURJQVEyQWdnZ0FpZ0NEQ0VFSUFJZ0F5Z0NERFlDRENBRElBUTJBZ3dnQXhDYUF5QUNLQUlJSVFRTElBUWdCaWdDQkRZQ0FDQUNJQUlvQWdoQkJHbzJBZ2dnQjBFZ2FpUUFJQVpCQURZQ0NDQUFLQUlJSVFVRFFDQUFLQUlFSUFWR0JFQWdBQ2dDQUNFRElBQWdBaWdDQURZQ0FDQUNJQU0yQWdBZ0FDQUNLQUlFTmdJRUlBSWdCVFlDQkNBQUtBSUlJUU1nQUNBQ0tBSUlOZ0lJSUFJZ0F6WUNDQ0FBS0FJTUlRTWdBQ0FDS0FJTU5nSU1JQUlnQXpZQ0RDQUdRUWhxRUlzQklBSVFtZ01NQXdVZ0JVRUVheUVGSXdCQklHc2lDQ1FBQWtBZ0FpZ0NCQ0lESUFJb0FnQkhCRUFnQXlFRURBRUxJQUlvQWdnaUJ5QUNLQUlNSWdSSkJFQWdCeUFFSUFkclFRSjFRUUZxUVFKdFFRSjBJZ3BxSVFRZ0F5QUhSd1JBSUFRZ0J5QURheUlIYXlJRUlBTWdCeERuQVJvZ0FpZ0NDQ0VEQ3lBQ0lBUTJBZ1FnQWlBRElBcHFOZ0lJREFFTElBaEJDR3BCQVNBRUlBTnJRUUYxSUFNZ0JFWWJJZ01nQTBFRGFrRUNkaUFDS0FJUUVLY0NJZ01nQWlnQ0JDQUNLQUlJRUs4R0lBSW9BZ0FoQkNBQ0lBTW9BZ0EyQWdBZ0F5QUVOZ0lBSUFJb0FnUWhCQ0FDSUFNb0FnUTJBZ1FnQXlBRU5nSUVJQUlvQWdnaEJDQUNJQU1vQWdnMkFnZ2dBeUFFTmdJSUlBSW9BZ3doQkNBQ0lBTW9BZ3cyQWd3Z0F5QUVOZ0lNSUFNUW1nTWdBaWdDQkNFRUN5QUVRUVJySUFVb0FnQTJBZ0FnQWlBQ0tBSUVRUVJyTmdJRUlBaEJJR29rQUF3QkN3QUxBQXNnQmtHQUlCQVZOZ0lZSUFaQkdHb2hCeU1BUVNCcklnVWtBQUpBSUFBb0FnUWlBaUFBS0FJQVJ3UkFJQUloQXd3QkN5QUFLQUlJSWdRZ0FDZ0NEQ0lEU1FSQUlBUWdBeUFFYTBFQ2RVRUJha0VDYlVFQ2RDSUlhaUVESUFJZ0JFY0VRQ0FESUFRZ0Ftc2lCR3NpQXlBQ0lBUVE1d0VhSUFBb0FnZ2hBZ3NnQUNBRE5nSUVJQUFnQWlBSWFqWUNDQXdCQ3lBRlFRaHFRUUVnQXlBQ2EwRUJkU0FDSUFOR0d5SUNJQUpCQTJwQkFuWWdBRUVNYWhDbkFpSUNJQUFvQWdRZ0FDZ0NDQkN2QmlBQUtBSUFJUU1nQUNBQ0tBSUFOZ0lBSUFJZ0F6WUNBQ0FBS0FJRUlRTWdBQ0FDS0FJRU5nSUVJQUlnQXpZQ0JDQUFLQUlJSVFNZ0FDQUNLQUlJTmdJSUlBSWdBellDQ0NBQUtBSU1JUU1nQUNBQ0tBSU1OZ0lNSUFJZ0F6WUNEQ0FDRUpvRElBQW9BZ1FoQXdzZ0EwRUVheUFIS0FJQU5nSUFJQUFnQUNnQ0JFRUVhellDQkNBRlFTQnFKQUFnQmlBQUtBSUVJZ0lvQWdBMkFoZ2dBQ0FDUVFScU5nSUVJQUFnQnhDa0Rnc2dCa0V3YWlRQUN5QUpRUWhxSUFBUTF4Y2dDU2dDRENBQktBSUFOZ0lBSUFBZ0FDZ0NGRUVCYWpZQ0ZDQUpRUkJxSkFBTDJnRUJCWDhqQUVFZ2F5SUhKQUFDUUNBRElBSnJJZ1JCQUV3TkFDQUVRUUoxSWdVZ0FDZ0NDQ0FBS0FJRUlnWnJRUUoxVEFSQUFrQWdCaUFCYXlJSVFRSjFJZ1FnQlU0RVFDQURJUVFNQVFzZ0FDQUNJQVJCQW5ScUlnUWdBeEQzRGlBSVFRQk1EUUlMSUFBZ0FTQUdJQUVnQlVFQ2RHb1F1UTRnQWlBRVJnMEJJQUVnQWlBRUlBSnJFT2NCR2d3QkN5QUhRUWhxSUFBZ0JpQUFLQUlBYTBFQ2RTQUZhaENqQ1NBQklBQW9BZ0JyUVFKMUlBQkJDR29RcHdJaUJDQUNJQU1RcndZZ0FDQUVJQUVRK3hjZ0JCQ2FBd3NnQjBFZ2FpUUFDNE1CQVFOL0l3QkJFR3NpQWlRQUlBSWdBQkRQRnlBQUVOSUhha0VRZENBQUx3RVVja0dBZ0FScU5nSU1JQUVnQWtFTWFoRGZBaUFBS0FJa0lRTWdBQ2dDSUNFQUEwQWdBQ0FEUmdSQUlBSkJFR29rQUFVZ0FTQUJLQUlFSUFBb0FoZ2lCQ0FBUVF4cUlBUWJLQUlBSUFCQkJHb1EwQWNRNHdvZ0FFRWNhaUVBREFFTEN3c2dBUUYvUVFFaEFTQUFLQUlVUWIwQ1J3Ui9JQUFRcUE1QjZBQkdCVUVCQ3d1YUF3RUpmeUFBS0FKQUlnRUVmeUFCQlNNQVFSQnJJZ1VrQUVFNEVCVWlBVUVBTmdJd0lBRkNBRGNES0NBQlFnQTNBeGdnQVVJQU53TUlJQUVnQUVFRWFqWUNBQ0FCUVFBMkFpQWdBVUVBTmdJUUlBVkJBRFlDQ0NBQVFVQnJJQUVROVJnZ0JVRUlhaEQzR0NBQUtBSkFJUU1nQUNnQ0dDRUJJd0JCUUdvaUJpUUFJQUZCNEFCcUlRZ2dBVUhrQUdvaEFnTkFJQWdnQWlnQ0FDSUhSZ1JBSUFaQlFHc2tBQVVnQmlBSEVOY0tJUVFqQUVFZ2F5SUNKQUFDUUNBRUtBSVVRUXBHQkVBZ0FrRVFhaUlKSUFRUThCY1F2d1lnQWlnQ0VDQUpJQUlzQUJ0QkFFZ2JJQUpCREdvUWpRNEVRQ0FEUVFocUlBSW9BZ3dRMEFRTElBSkJFR29RRHhvZ0FrRWdhaVFBREFFTFFmU3pDVUhPcEFKQktFR3U3Z0lRQUFBTElBUVEyZ2dhSUFkQkJHb2hBZ3dCQ3dzZ0FVRWNhaUVFSUFGQklHb2hBZ05BSUFJb0FnQWlBaUFFUndSQUlBTWdBa0VBRURnUTRSY2dBa0VFYWlFQ0RBRUxDeUFESUFGQnNZc0hFS0FPTmdJb0lBTWdBVUdlakFjUW9BNDJBaXdnQXlBQlFmMkxCeENnRGpZQ01DQUZRUkJxSkFBZ0FDZ0NRQXNMYXdJQmZnRi9BMEFDUUNBQ1FzQUFVUVJBSUFBb0FnZ2lBRVVOQVNBQVFRUnFJUU1nQUNnQ0FDRUFBMEFnQUNBRFJnMENJQUVnQUNnQ0VCREJCaUFBRUV3aEFBd0FDd0FMSUFBcEF3QWdBb2hDQVlOUVJRUkFJQUVnQXFjUXdRWUxJQUpDQVh3aEFnd0JDd3NMeFFFQkEzOGdBRUlBTndJRUlBQkJBRG9BRENBQVFmVGdFallDQUNBQUlBRXBBaEEzQWhBZ0FDQUJLUUlZTndJWUlBQkJJR29pQWtFQU5nSUlJQUpDQURjQ0FDQUJLQUlrSWdNZ0FTZ0NJQ0lFUndSQUlBSWdBeUFFYTBFY2JTSURFTDBPSUFJZ0FTZ0NJQ0FCS0FJa0lBTVF6QWdMSUFCQkxHb2lBa0VBTmdJSUlBSkNBRGNDQUNBQktBSXdJZ01nQVNnQ0xDSUVSd1JBSUFJZ0F5QUVhMEVHZFNJREVPQVhJQUlnQVNnQ0xDQUJLQUl3SUFNUXNnNExJQUFnQVNrQ09EY0NPQ0FBQ3lJQkFYOERRQ0FBUVFKSVJRUkFJQUJCQVhZaEFDQUJRUUZxSVFFTUFRc0xJQUVMamdFQkEzOUJBU0VEQWtBZ0FDZ0NBQ0lDUVFFZ0FTZ0NBQ0lFRzBVTkFDQUNSU0FFY2tVRVFFRUFEd3NnQWtVZ0JFVnlSUVJBSUFJUXdBY2dBU2dDQUJEQUIwa05BVUVBSVFNZ0FTZ0NBQkRBQnlBQUtBSUFFTUFIU1EwQkN5QUFLQUlFSWdCRklBRW9BZ1FpQWtFQVIzRWhBeUFBUlNBQ1JYSU5BQ0FBRU1BSElBRW9BZ1FRd0FkSklRTUxJQU1MT3dFQmZ5QUFJQUVRNnhjZ0FDQUJFTFFPSUFFb0FqQWhBaUFCS0FJc0lRRURRQ0FCSUFKSEJFQWdBQ0FCRU5vS0lBRkJRR3NoQVF3QkN3c0xDd0FnQUNBQklBSVE3eGNMYUFFQmZ5QUFLQUlBSUFBb0FnUWdBVUVFYWhEeEZ5QUFLQUlBSVFJZ0FDQUJLQUlFTmdJQUlBRWdBallDQkNBQUtBSUVJUUlnQUNBQktBSUlOZ0lFSUFFZ0FqWUNDQ0FBS0FJSUlRSWdBQ0FCS0FJTU5nSUlJQUVnQWpZQ0RDQUJJQUVvQWdRMkFnQUxnZ01CQlg4akFFRWdheUlISkFBQ1FDQURJQUpySWdSQkFFd05BQ0FFUVFKMUlnVWdBQ2dDQ0NBQUtBSUVJZ1pyUVFKMVRBUkFBa0FnQmlBQmF5SUlRUUoxSWdRZ0JVNEVRQ0FESVFRTUFRc2dBQ0FDSUFSQkFuUnFJZ1FnQXhEM0RpQUlRUUJNRFFJTElBQWdBU0FHSUFFZ0JVRUNkR29RdVE0Z0FpQUVSZzBCSUFFZ0FpQUVJQUpyRU9jQkdnd0JDeUFIUVFocUlBQWdCaUFBS0FJQWEwRUNkU0FGYWhDTEJDQUJJQUFvQWdCclFRSjFJQUJCQ0dvUXB3SWlCQ0FDSUFNUXJ3WWdCQ0FFS0FJRUlBRWdBQ2dDQUNJRGF5SUNheUlGTmdJRUlBSkJBRW9FUUNBRklBTWdBaEI5R2dzZ0FDZ0NCQ0VDQTBBZ0FTQUNSd1JBSUFRb0FnZ2dBU2dDQURZQ0FDQUVJQVFvQWdoQkJHbzJBZ2dnQVVFRWFpRUJEQUVMQ3lBQUtBSUFJUUVnQUNBRUtBSUVOZ0lBSUFRZ0FUWUNCQ0FBS0FJRUlRRWdBQ0FFS0FJSU5nSUVJQVFnQVRZQ0NDQUFLQUlJSVFFZ0FDQUVLQUlNTmdJSUlBUWdBVFlDRENBRUlBUW9BZ1EyQWdBZ0JCQ2FBd3NnQjBFZ2FpUUFDMTRCQVg4akFFRVFheUlHSkFBZ0JpQUNOZ0lBSUFZZ0FUWUNDQ0FBSUFZb0FnZ2dCaWdDQUNBREVMWU9JZ0JCc1BzUE5nSUVJQUJCNVBzUE5nSUFJQUFnQlRZQ01DQUFJQVEzQXlnZ0FFSFErdzgyQWdBZ0JrRVFhaVFBSUFBTENRQWdBQkR6RnhBZkN4OEFJQUFnQVRZQ0JDQUFRWnpzRWpZQ0FDQUFRUWhxSUFJUXNBRWFJQUFMd1FJQkIzOENRQUpBQWtBZ0FDMEFDeUlDUVJoMFFSaDFJZ1JCQUU0RVFFRUJJUU1nQkVFQlJnMEJJQUFnQkVFQmFqb0FDd3dEQ3lBQUtBSUVJZ0lnQUNnQ0NFSC8vLy8vQjNGQkFXc2lBMGNOQVF0QjcvLy8vd01oQlFKQUlBTkI3Ly8vL3dOSEJFQWdBQ2dDQUNBQUlBQXNBQXRCQUVnYklRY2dBMEhtLy8vL0FVMEVRRUVDSUFOQkFXb2lBaUFEUVFGMElnUWdBaUFFU3hzaUFrRURja0VCYWlBQ1FRSkpHeUVGQ3lBRkVKY0RJUWdnQXdSQUlBZ2hBaUFISVFRZ0F5RUdBMEFnQmdSQUlBSWdCQ2dDQURZQ0FDQUVRUVJxSVFRZ0FrRUVhaUVDSUFaQkFXc2hCZ3dCQ3dzTElBTkJBVWNFUUNBSEVCOExJQUFnQ0RZQ0FDQUFJQVZCZ0lDQWdIaHlOZ0lJREFFTEVBRUFDeUFESVFJTElBQWdBa0VCYWpZQ0JDQUFLQUlBSVFBTElBQWdBa0VDZEdvaUFFRUFOZ0lFSUFBZ0FUWUNBQXVnRWdJT2Z3SjlBbjhnQUNFTEl3QkJNR3NpQkNRQUlBUWdBVFlDTEFKQUFrQWdBaWdDQkNBQ0tBSUFSZ1JBSUFSQkxHb1FnUmdoQUF3QkN5QUVJQUVnQVNnQ0FDZ0NJQkVBQUNJQU5nSW9JQUFFUUNBQ0tBSUVJQUlvQWdBaUFHdEJCRWNOQWtFWUVCVWdCQ2dDS0NBQUtBSUFRUUJIRVB3WElRQU1BUXNnQkNBQklBRW9BZ0FvQWlnUkFBQWlBRFlDSkNBQUJFQWdCRUVrYWlBQ0VJQVlJUUFNQVFzZ0JDQUJJQUVvQWdBb0FqQVJBQUFpQURZQ0lDQUFCRUFnQkVFZ2FpQUNFUDhYSVFBTUFRc2dCQ0FCSUFFb0FnQW9BamdSQUFBaUFEWUNIQ0FBQkVBZ0JFRVFhaUFMSUFJUTVBcEJBQ0VBQWtBZ0JDZ0NFQ0lCSUFRb0FoUWlCMFlOQUNBQklRSURRQ0FDSUFkSEJFQUNRQ0FDS0FJQUlnWW9BZ1FpQXlBREtBSUFLQUlnRVFBQURRQWdCaWdDQkNJRElBTW9BZ0FvQWlnUkFBQU5BQ0FHS0FJRUlnTWdBeWdDQUNnQ01CRUFBRVVOQXdzZ0FrRUVhaUVDREFFTEN5QUJLQUlBS0FJRUlRTURRQ0FCSUFkSEJFQWdBU2dDQUNFQ0lBRkJCR29oQVNBQ0tBSUVJQU5HRFFFTUFnc0xRUmdRRlNBRUtBSWNJZ0VnQkVFUWFoRGdDaUlBUVpqckVqWUNBQ0FBSUFFb0FoUTJBaFFMSUFSQkVHb1FNaG9NQVFzZ0JDQUJJQUVvQWdBb0FrQVJBQUFpQURZQ0RDQUFCRUFnQkVFUWFpQUxJQUlRNUFvZ0JDZ0NFQ0FFS0FJVVJnUi9RUUFGUVJnUUZTQUVLQUlNSWdBZ0JFRVFhaERnQ2lJQlFZanRFallDQUNBQklBQW9BaFEyQWhRZ0FRc2hBQ0FFUVJCcUVESWFEQUVMSUFRZ0FTQUJLQUlBS0FKd0VRQUFJZ0EyQWdnZ0FBUkFJQVJCRUdvZ0N5QUNFT1FLSUFRb0FoQWdCQ2dDRkVZRWYwRUFCU0FFUVFocUlBUkJFR29RL2hjTElRQWdCRUVRYWhBeUdnd0JDeUFFSUFFZ0FTZ0NBQ2dDWUJFQUFDSUFOZ0lFSUFCRkJFQkJBQ0VBREFFTElBUkJFR29nQ3lBQ0VPUUtJQVFvQWhBZ0JDZ0NGRVlFZjBFQUJTQUVRUVJxSUFSQkVHb1EvUmNMSVFBZ0JFRVFhaEF5R2dzZ0JFRXdhaVFBSUFBTUFRdEJ3S29KUWJhWkFrSDZBVUdqNGdBUUFBQUxJZ0ZGQkVCQkFBOExJd0JCSUdzaUNTUUFJQWtnQVRZQ0dDQUpJQUUyQWd3akFFRVFheUlNSkFCQkFDRUFJd0JCRUdzaUNpUUFBbjhnQ1VFTWFpSU9LQUlBSVFNakFFRWdheUlFSkFBZ0JFRVFhaUlDRUZVZ0FpQURLQUlFRVBnWEFrQUNRQ0FESUFNb0FnQW9BalFSQUFBaUFnUkFJQUlnQWlnQ0FDZ0NZQkVBQUNJREtBSUVJUUlnQXlnQ0FDRURBMEFnQWlBRFJnMENJQVJCRUdvZ0F5Z0NBQkRoQ2lBRFFRUnFJUU1NQUFzQUN5QURJQU1vQWdBb0FrUVJBQUFpQWdSQUlBSWdBaWdDQUNnQ1lCRUFBQ0lES0FJRUlRSWdBeWdDQUNFREEwQWdBaUFEUmcwQ0lBUkJFR29nQXlnQ0FCRDRGeUFEUVFScUlRTU1BQXNBQ3lBRElBTW9BZ0FvQWxnUkFBQkZEUUVnQkVFUWFrRUFFT0VLQ3lBRVFSQnFJZ2NvQWdBZ0J5QUhMUUFMSWdaQkdIUkJHSFZCQUVnaUF4c2lBaUFDSUFjb0FnUWdCaUFERzBFQ2RHb1E2QThoQWlBSExBQUxRUUJJQkVBZ0J5Z0NBQkFmQ3lBRVFTQnFKQUFnQWd3QkMwRzZ0d2xCMEtrRFFkY0RRZHp4Q0JBQUFBc2hCeUFNQW44Q1FDQUxRU1JxSWdVb0FnUWlBMFVOQUNBRktBSUFBbjhnQTBFQmF5QUhjU0FEYVNJQ1FRRk5EUUFhSUFjZ0F5QUhTdzBBR2lBSElBTndDeUlBUVFKMGFpZ0NBQ0lFUlEwQUlBTkJBV3NoRFNBQ1FRRkxJUUlEUUNBRUtBSUFJZ1JGRFFFZ0J5QUVLQUlFSWdaSEJFQUNRQ0FDUlFSQUlBWWdEWEVoQmd3QkN5QURJQVpMRFFBZ0JpQURjQ0VHQ3lBQUlBWkhEUUlMSUFRb0FnZ2dEaWdDQUJENUYwVU5BQXRCQUF3QkN5QUtJQVVnQnlBT0VNTVFBa0JCQUNBRElBVW9BZ3hCQVdxekloSWdCU29DRUNJUklBT3psRjRiRFFBQ1FBSi9RUUlnQXlBRFFRRnJjVUVBUnlBRFFRTkpjaUFEUVFGMGNpSUNBbjhnRWlBUmxZMGlFVU1BQUlCUFhTQVJRd0FBQUFCZ2NRUkFJQkdwREFFTFFRQUxJZ0FnQUNBQ1NSc2lBRUVCUmcwQUdpQUFJQUFnQUVFQmEzRkZEUUFhSUFBUWZ3c2lDQ0FGS0FJRUlnTk5CRUFnQXlBSVRRMEJJQU5CQTBraEFBSi9JQVVvQWd5eklBVXFBaENWalNJUlF3QUFnRTlkSUJGREFBQUFBR0J4QkVBZ0Vha01BUXRCQUFzaEFpQURJQWdnQUNBRGFVRUJTM0lFZnlBQ0VIOEZJQUpCQVVFZ0lBSkJBV3RuYTNRZ0FrRUNTUnNMSWdBZ0FDQUlTUnNpQ0UwTkFRdEJBQ0VEQWtBZ0NBUkFJQVVnQ0JDWEF4QnNJQVVnQ0RZQ0JBTkFJQU1nQ0VZRVFDQUZLQUlJSWdCRkRRTWdCVUVJYWlFRElBQW9BZ1FoQkFKQUlBaHBJZ0pCQVUwRVFDQUVJQWhCQVd0eElRUU1BUXNnQkNBSVNRMEFJQVFnQ0hBaEJBc2dCU2dDQUNBRVFRSjBhaUFETmdJQUlBaEJBV3NoRUNBQ1FRRkxJUTREUUNBQUtBSUFJZ0pGRFFRZ0FpZ0NCQ0VHQWtBZ0RrVUVRQ0FHSUJCeElRWU1BUXNnQmlBSVNRMEFJQVlnQ0hBaEJnc0NRQ0FFSUFaR0RRQWdBaUVESUFaQkFuUWlEeUFGS0FJQWFpSU5LQUlBUlFSQUlBMGdBRFlDQUNBR0lRUU1BUXNEUUFKQUlBTWlCaWdDQUNJRFJRUkFRUUFoQXd3QkN5QUNLQUlJSUFNb0FnZ1ErUmNoRFNBR0tBSUFJUU1nRFEwQkN3c2dBQ0FETmdJQUlBWWdCU2dDQUNBUGFpZ0NBQ2dDQURZQ0FDQUZLQUlBSUE5cUtBSUFJQUkyQWdBTUFRc2dBaUVBREFBTEFBVWdCU2dDQUNBRFFRSjBha0VBTmdJQUlBTkJBV29oQXd3QkN3QUxBQXNnQlVFQUVHd2dCVUVBTmdJRUN3c2dCU2dDQkNJRElBTkJBV3R4UlFSQUlBTkJBV3NnQjNFaEFBd0JDeUFESUFkTEJFQWdCeUVBREFFTElBY2dBM0FoQUFzQ1FDQUFRUUowSWdBZ0JTZ0NBR29vQWdBaUFrVUVRQ0FLS0FJQUlBVW9BZ2cyQWdBZ0JTQUtLQUlBTmdJSUlBVW9BZ0FnQUdvZ0JVRUlhallDQUNBS0tBSUFJZ0lvQWdBaUFFVU5BU0FBS0FJRUlRUUNRQ0FESUFOQkFXc2lBSEZGQkVBZ0FDQUVjU0VFREFFTElBTWdCRXNOQUNBRUlBTndJUVFMSUFVb0FnQWdCRUVDZEdvZ0FqWUNBQXdCQ3lBS0tBSUFJQUlvQWdBMkFnQWdBaUFLS0FJQU5nSUFDeUFLS0FJQUlRUWdDa0VBTmdJQUlBVWdCU2dDREVFQmFqWUNEQ0FLRUlzQlFRRUxPZ0FNSUF3Z0JEWUNDQ0FLUVJCcUpBQWdDU0FNS0FJSU5nSVFJQWtnREMwQUREb0FGQ0FNUVJCcUpBQWdDUzBBRkFSQUlBdEJPR29nQ1VFWWFoQ1hCU0FKS0FJWUlRRUxJQWtvQWhBb0FnZ2hBQ0FKUVFBMkFoZ2dBUVJBSUFFZ0FTZ0NBQ2dDQkJFREFBc2dDVUVnYWlRQUlBQUw2QUVCQlg4akFFRWdheUlISkFBQ1FDQURJQUpySWdSQkFFd05BQ0FFUVFKMUlnWWdBQ2dDQ0NBQUtBSUVJZ1JyUVFKMVRBUkFJQVlnQkNBQmF5SUlRUUoxSWdWS0JFQWdBQ0FESUFJZ0JVRUNkR29pQTJzaUJVRUFTZ1IvSUFRZ0F5QUZFSDBnQldvRklBUUxOZ0lFSUFoQkFFd05BZ3NnQUNBQklBUWdBU0FHUVFKMGFoQzVEaUFDSUFOR0RRRWdBU0FDSUFNZ0Ftc1E1d0VhREFFTElBZEJDR29nQUNBRUlBQW9BZ0JyUVFKMUlBWnFFS01KSUFFZ0FDZ0NBR3RCQW5VZ0FFRUlhaENuQWlJRUlBSWdBeEN2QmlBQUlBUWdBUkQ3RnlBRUVKb0RDeUFIUVNCcUpBQUxzQUVCQTM4akFFRWdheUlESkFBZ0EwRUFOZ0lZSUFOQ0FEY0RFQ0FDS0FJRUlRUWdBaWdDQUNFQ0FrQUNRQU5BSUFJZ0JFWU5BU0FESUFFZ0FpZ0NBQkNTQlNJRk5nSU1JQVVFUUNBQ1FRUnFJUUlnQTBFUWFpQURRUXhxRU04QkRBRUxDeUFBUVFBMkFnZ2dBRUlBTndJQURBRUxJQUFnQXlnQ0VEWUNBQ0FBSUFNb0FoUTJBZ1FnQUNBREtBSVlOZ0lJSUFOQkFEWUNHQ0FEUWdBM0F4QUxJQU5CRUdvUU1ob2dBMEVnYWlRQUMxQUJBbjhqQUVFd2F5SUNKQUFnQWlBQkVORUJJUUZCSUJBVklnTkJvT01TTmdJQUlBTkJDR29nQVJEUkFSb2dBaUFETmdJb0lBQWdBa0VZYWlJQUVJNFlJQUFRRmlBQkVCWWdBa0V3YWlRQUMwc0JBbjhqQUVFUWF5SUJKQUFnQVVFSWFpQUFFUGNaSUFFb0FnZ2lBaUFBS0FJUVJnUi9RUUFGSUFJb0FnZ2lBRUVBSUFBb0FoUkJmbkZCOWdGR0d3c2hBQ0FCUVJCcUpBQWdBQXNrQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1FTkVJR2lBQlFSQnFKQUFMWlFFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2hBU01BUVJCcklnQWtBQ0FBSUFFMkFnd2dBQ0FDUVFocU5nSUlJQUFvQWd3aUFVRUlhaUFBS0FJSUtBSUFFQTRhSUFCQkVHb2tBQ0FCSVFBZ0FrRVFhaVFBSUFBTE9nRUJmeU1BUVNCcklnTWtBQ0FESUFBMkFod2dBeUFCTmdJWUlBTWdBallDRkNBREtBSWNJZ0FRdWhnZ0FCQzVHQ0FEUVNCcUpBQWdBQXNxQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1RUXhxRU1vT0lRQWdBVUVRYWlRQUlBQUw5UUVCQW44akFFRVFheUlESkFBZ0F5QUFOZ0lNSUFNZ0FUWUNDQ0FESUFJMkFnUUNRQ0FES0FJRUVNTVlRUUZ4QkVBZ0F5QURLQUlFTmdJQUlBTW9BZ3doQVNBREtBSUlJUUlnQXlnQ0FDRUVJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFJQUkyQWdnZ0FDQUVOZ0lFSUFBb0Fnd2hBaUFBS0FJRUlRUWpBRUVRYXlJQkpBQWdBU0FDTmdJTUlBRWdCRFlDQ0NBQktBSUlHZ3dCQ3lBREtBSU1JUUVnQXlnQ0NDRUNJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFJQUkyQWdnZ0FDZ0NEQ0VDSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQXNnQVNnQ0RCQWZJQUZCRUdva0FDQUFRUkJxSkFBZ0EwRVFhaVFBQ3h3QkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTVFielFBUkNXREFBTFV3RUNmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2dBaUFCTmdJSUlBSW9BZ2doQXlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNBRE5nSUlJQUFnQVNnQ0NFRU1haEJDSUFGQkVHb2tBQ0FDUVJCcUpBQUx4Z0VCQTM4akFFRVFheUlFSkFBQ1FBSkFJQUVvQWdRZ0FTMEFDeUlESUFOQkdIUkJHSFZCQUVnYklnVWdBaWdDQkNBQ0xRQUxJZ01nQTBFWWRFRVlkVUVBU0JzaUEwa05BQ0FFSUFFZ0JTQURheUFERU84S0lBUWdBaER5QXlFRElBUVFEeG9nQTBVTkFDQUFJQUZCQUNBQktBSUVJQUV0QUFzaUFDQUFRUmgwUVJoMVFRQklHeUFDS0FJRUlBSXRBQXNpQUNBQVFSaDBRUmgxUVFCSUcyc1E3d29NQVFzZ0FDQUJLUUlBTndJQUlBQWdBU2dDQ0RZQ0NDQUJFRlVMSUFSQkVHb2tBQXRvQVFGL0l3QkJFR3NpQkNRQUlBUWdBellDRENBQUlBUkJDR29nQVJEQkRpRUFJQUlnQVJBN0lnTkxCRUFRM1F3QUN5QUJFSHNoQVNBRUlBTWdBbXMyQWdRZ0FDQUJJQUpxSUFSQkRHb2dCRUVFYWhDSUJTZ0NBQkRaRENBQUVLOERJQVJCRUdva0FBc3JBUUYvSXdCQkVHc2lBaVFBSUFJZ0FTZ0NBRFlDRENBQUtBSUVJQUpCREdvUXp3RWdBa0VRYWlRQUM0c0JBUUovSUFBb0FnQWhBaUFBSUFFMkFnQWdBZ1JBSUFJRVFDQUNRZVFBYWhDSENTQUNRZUFBYWhDRkF4b2dBa0hVQUdvaUFDZ0NBQVJBSUFBb0FnQWhBeUFBS0FJRUlRRURRQ0FCSUFOSEJFQWdBVUVFYXhDNkJpRUJEQUVMQ3lBQUlBTTJBZ1FnQUNnQ0FCQWZDeUFDUVJCcUVKSURHaUFDUVFScUVJY0pJQUlRaFFNYUN5QUNFQjhMQzFnQkFYOENRQ0FBTFFBTVJRUkFJQUFvQWdRaUFVVU5BU0FCSUFBb0FnZzJBZ2dnQUNnQ0NDQUJOZ0lFSUFCQ0FEY0NCQThMUVlhNENVSFZ0UU5CeWdGQmtqQVFBQUFMUVpPd0NVSFZ0UU5CekFGQmtqQVFBQUFMSndBZ0FDZ0NDQ0lBTFFBTVFRRWdBQnNFUUVHZXJ3bEJtcWdEUWFNQ1FaUTZFQUFBQ3lBQUN3d0FJQUFnQUNnQ0FCRHpHQXNRQUNBQUlBSWdBU0FDRUpNRUVHa2FDMThCQTM4Z0FTQUFLQUtJQWtzRVFDQUFLQUtBQWlFQ0lBQWdBUkRrRGlBQUtBS0VBaUVEUVFBaEFRTkFJQUVnQTBZRVFDQUFJQUlRTmdVZ0FVRUNkQ0lFSUFBb0FvQUNhaUFDSUFScUtBSUFOZ0lBSUFGQkFXb2hBUXdCQ3dzTEMvOEZBZ0YvQVgwakFFRXdheUlGSkFBZ0F4RElBeUVESUFVZ0FUWUNDQUpBSUFORkJFQWdBQ0FGUVFocUVJb1pEQUVMQWtBZ0F5Z0NCQ0lEUWVETEVrWUVRQ0FGQW44Q1FBSkFJQVFvQWdRaUF5QURLQUlBS0FJb0VRQUFCRUFnQkNnQ0JDSURJQU1vQWdBb0FpZ1JBQUFvQWhSQklFY05BU0FFSUFRb0FnQW9BamdSQUFBaUF3UkFJQU1RZ3hnTUJBc2dCQ0FFS0FJQUtBSllFUUFBUlEwQ1FRQU1Bd3RCaThnQlFiYVpBa0hUQUVHZy93WVFBQUFMUWZXQUIwRzJtUUpCMUFCQm9QOEdFQUFBQzBIVHNRbEJ0cGtDUWRrQVFhRC9CaEFBQUFzaUF6WUNJQ0FCUVpBRGFoRHNBeUVFSUFOQmdJQ0FnSGhHQkVBZ0JTQUJRU1JxRUxRTE5nSW9JQVZCQURZQ0dDQUZJQUZCSUdvaUFTQUNJQVZCSUdvZ0JVRVlhaEN6Q0RZQ0hDQUZRUkJxSUFRZ0FTQUNJQVZCS0dvZ0JVRWNhaENpQ3hCcEdnd0NDeUFGSUFPc053TW9JQVZCQVRZQ0hDQUZRUkJxSUFRZ0FVRWdhaUFDSUFWQktHb2dCVUVjYWhDQ0NSQnBHZ3dCQ3lBRFFiRExFa1lFUUNBQlFaQURhaER0QXlFRElBVWdCQkNGR0swM0F5Z2dCVUVDTmdJZ0lBVkJFR29nQXlBQlFTQnFJQUlnQlVFb2FpQUZRU0JxRUlJSkVHa2FEQUVMSUFOQnlNc1NSZ1JBSUFVQ2Z5QUVFTHdPSWdaRC8vOS9mMTRFUUNBRlFRQTJBaWhCQWd3QkN5QUdRLy8vZi85ZEJFQWdCVUVCTmdJb1FRSU1BUXNnQlNBR09BSW9RUUVMT2dBc0lBVkJLR29RS3dSQUlBRkJrQU5xRUpZRklRTWdCU0FFRUx3T3V6a0RJQ0FGUVFFMkFod2dCVUVRYWlBRElBRkJJR29nQWlBRlFTQnFJQVZCSEdvUStnb1FhUm9NQWdzZ0FVRUFPZ0NVQXlBQlFhZ0Vha0hGdFF3UUdTRUJJQVVnQkJDOERqZ0NJQ0FCS0FJRUlBVkJJR29RaFFnYUlBVkJFR29RWnhvTUFRc2dBMEdZeXhKR0JFQWdCU0FFSUFRb0FnQW9BbGdSQUFBRWYwRUFCU0FFSUFRb0FnQW9Ba0FSQUFBdEFCUkJBRWNMT2dBb0lBVkJFR29nQVVHUUEyb1FvaG9nQVVFZ2FpQUNJQVZCS0dvUTZoVVFhUm9NQVFzZ0JVRVFhaUFGUVFocUVJb1pDeUFBSUFWQkVHb1FXeG9MSUFWQk1Hb2tBQXNNQUNBQUlBRkI1QVVReFJJTGl3UUJBMzhqQUVIZ0FHc2lCeVFBSUFjZ0F6WUNXQ0FISUFJMkFsd2dCeUFFTmdKVUlBY2dCVFlDVUFKQUlBUkZCRUJCQUNFRUlBQkJBRG9BbEFNZ0FFR29CR3BCNUlvRUVCa2FEQUVMUVFBaEJDQUFJQUVnQjBIVUFHb2dCaUFDUVFSR0JIOGdCMEVBTmdKY1FRQUZJQUlMUVFWSEVOc0lSUTBBSUFCQklHb2lBaEFjSUFCQnlBUnFJQUVRa3dJaUFTZ0NBQ0VESUFjZ0FTZ0NCQ0FCTFFBTElnUWdCRUVZZEVFWWRVRUFTQ0lFR3pZQ0xDQUhJQU1nQVNBRUd6WUNLQ0FISUFjcEF5ZzNBd0FnQjBFd2FpSUlJQUJCcUFKcUlBY1FtQU1nQjBFQU5nSWdJQWRDQURjREdDQUhRZ0EzQXhBZ0J5QUhLQUpVSWdBZ0FpQUFLQUlBS0FJSUVRRUFOZ0lJSXdCQlFHb2lBU1FBSXdCQkVHc2lBeVFBSUFGQkVHb2lBRUlBTndJQUlBQkNBRGNDQ0NBQVFvQ0FnSURBQURjQ0pDQUFJQUJCRUdvaUNUWUNJQ0FBSUFjb0FnZzJBZ0FnQUNBQ0lBY29BbHdRNmhnZ0J5Z0NXQ0VGSXdCQkVHc2lCQ1FBSUFRZ0JUWUNEQ0FGQkVBZ0FDQUNJQVJCREdvUXpRODJBZ2dMSUFSQkVHb2tBQ0FBSUFjb0FsQTJBZ3dnQXlBR1FTQnFOZ0lJSUFNZ0JpZ0NJQ0FHUnpvQURDQUpJQU5CQ0dvUWd3a2dBMEVRYWlRQUlBRWdBaUFJRVBNQ05nSU1JQUlnQjBFUWFpQUJRUXhxSUFBZ0FFRUVhaUFBUVFocUlBQkJER29nQUVFUWFoQ3BDeUVFSUFBUXd3Z2dBVUZBYXlRQUN5QUhRZUFBYWlRQUlBUUxad0VDZnlNQVFSQnJJZ1VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ1EyQWd3Z0JTQUVOZ0lJSUFCQmpBRnFJZ1FnQkJETEJDQUFLQUlJSUFVb0FnZ2dBU0FDS3dNQUlBTW9BZ0FReXcwaUFCQW9JQVFnQkNnQ0dFRUJhallDR0NBRlFSQnFKQUFnQUFzNEFRRi9Jd0JCSUdzaUFpUUFJQUlnQVRZQ0VDQUNRUmhxSUFBZ0FTQUNRUkJxRUlZWklBSW9BaGdoQUNBQ1FTQnFKQUFnQUVFTWFnc3BBUUYvSXdCQkVHc2lBaVFBSUFBZ0FTQUJJQUJyUVFKMUVOZ0tRUUYwRUtJTklBSkJFR29rQUF0Z0FRRi9JQUJDZ0lDQWdJQUJOd0lrSUFBZ0FEWUNJQUpBSUFFdEFBUUVRQ0FBRUNNZ0FDQUJLQUlBSWdJcEFnQTNBaUFnQUNBQ0tBSUlOZ0lvSUFFb0FnQWlBVUVBTmdJSUlBRkNBRGNDQUF3QkN5QUFJQUVvQWdBUXZSa0xJQUFMa2dFQkEzOGpBRUhBQVdzaUFpUUFJQUlnQVRZQ3ZBRWdBVVVFUUNBQ1FRaHFRZE8wQlVIK0FFRUFJQUpCcUFGcUVCMGlBeEFYSWdSQkdHcEJ1ZElJRUE0YUlBUVFHQ0FERUI0TElBRVFWeUFBS0FJSVFRRkJBRUdOendoQjA3UUZRZjhBRUVzZ0FFSDhBbW9nQWtHOEFXb1FKQ0FDSUFJb0Fyd0JOZ0lJSUFCQkpHb2dBa0VJYWhDVUF5QUNRY0FCYWlRQUMwNEJBWDhqQUVFUWF5SURKQUFDUUFKQUlBRW9BclFGSWdGRkRRQWdBU0FDRUpRQklnRkZEUUFnQUNBQkVGZ01BUXNnQXlBQ0VGOGdBRUdMdlFvZ0F4QTFJQU1RRHhvTElBTkJFR29rQUFzMEFRRi9JQUJCQURZQ0NDQUFRZ0EzQWdBZ0FTQUNSd1JBSUFBZ0FpQUJhMEVDZFNJREVNOEZJQUFnQVNBQ0VQY09DeUFBQzVNQkFRTi9Jd0JCd0FGcklnSWtBQ0FDSUFFMkFyd0JJQUZGQkVBZ0FrRUlha0hUdEFWQjZRQkJBQ0FDUWFnQmFoQWRJZ01RRnlJRVFSaHFRY1d2Q0JBT0dpQUVFQmdnQXhBZUN5QUJFRmNnQUNnQ0NFRUJRUUJCMnNjSVFkTzBCVUhxQUJCTElBQkJxQU5xSUFKQnZBRnFFTE1aSUFJZ0FpZ0N2QUUyQWdnZ0FFRWthaUFDUVFocUVKUURJQUpCd0FGcUpBQUxTQUVDZnlNQVFTQnJJZ0lrQUNBQUtBSUlJUU1nQWtFQU5nSVlJQUpDQURjREVDQUNRZ0EzQXdnZ0F5QUNRUWhxSUFFUTJnY2hBU0FBS0FJRUlBRTJBaWdnQWtFZ2FpUUFDeTRCQVg4akFFRVFheUlESkFBZ0F5QUNLQUlBTmdJTUlBQWdBU0FEUVF4cUVQc1lJUUFnQTBFUWFpUUFJQUFMU0FFQ2Z5TUFRUkJySWdVa0FDQUZJQUJCQkdvaUJpQUdLQUlBUWRnQ2FoRGhHallDQ0NBQUlBQkIyQUpxSUFWQkNHb2dBU0FDSUFNZ0JCQ2xHU0VBSUFWQkVHb2tBQ0FBQzBrQkFYOGpBRUVRYXlJREpBQWdBMEVRTmdJTUlBTWdBQ0FCRU5vRU5nSUlJQU1nQWlnQ0FEWUNCQ0FBSUFOQkRHb2dBMEVJYWlBRFFRUnFFSVlMSVFBZ0EwRVFhaVFBSUFBTFVRRUNmeU1BUVJCcklnUWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnVTJBZ3dnQkNBRk5nSUlJQUJCakFGcUlBQkJDR29nQkVFSWFpQUFRZGdDYWlBQklBSWdBeEMyR1NFQUlBUkJFR29rQUNBQUN6OEJBWDhqQUVFUWF5SUVKQUFnQkNBQ0tBSUFOZ0lNSUFRZ0FDQURFT2NGTmdJSUlBQWdBU0FFUVF4cUlBUkJDR29RL2dnaEFDQUVRUkJxSkFBZ0FBdXJBUUVDZnlNQVFUQnJJZ01rQUFKQUFrQUNRQ0FDS0FJQUlnUkZEUUFnQWlnQ0JFVU5BQ0FFS0FJRVFiRExFa2NOQVFzZ0FDQUNFRnNhREFFTElBRW9BZ1FRN1FNaEJDQURJQUVvQWdnaUFVRUVhaERURHpZQ0tDQUNLQUlFSVFJZ0EwRUJOZ0lVSUFNZ0FqWUNEQ0FESUFOQkRHbzJBaEFnQXlBREtRTVFOd01BSUFBZ0JDQUJJQU5CS0dvZ0EwRVlhaUFERUpjQ0lnQVFpd3NRYVJvZ0FCQ29BUXNnQTBFd2FpUUFDemtCQVg4akFFRVFheUlESkFBZ0F5QUFJQUVvQWdBUWdRTTJBZ3dnQUNBQVFkZ0NhaUFEUVF4cUlBSVFsUVFoQUNBRFFSQnFKQUFnQUFzT0FDQUFLQUlJSUFFZ0FoRE9BZ3VsQVFFRWZ5TUFRUkJySWdRa0FDQUVJQUVvQWdBMkFnd2pBRUVnYXlJQkpBQWdBU0FFS0FJTU5nSWNJQUFnQUVIWUFtb2hCaUFCUVJ4cUlRVWpBRUVRYXlJQUpBQWdBVUVJYWlJRFFvQ0FnSUFRTndJSUlBTWdBellDQkNBQUlBSkJCR28yQWdnZ0FDQUNLQUlFSUFKSE9nQU1JQU1nQUVFSWFoRDRIaUFBUVJCcUpBQWdCaUFGSUFNaUFCQ3lEeUVDSUFBUXFBRWdBVUVnYWlRQUlBUkJFR29rQUNBQ0MyWUJCSDhqQUVFd2F5SURKQUFDUUNBQUlBRVFqUXNpQWtVRVFFRUFJUUFNQVFzZ0EwRWdhaUFBS0FJZ0lBSVFZQkNUQWhCVUlRSWdBQ2dDQ0NFRUlBTkJDR29pQlNBQUlBRVE0d2dnQkNBRklBSVE1QVVoQUNBQ0VBOGFDeUFEUVRCcUpBQWdBQXVXQVFFQ2Z5TUFRUkJySWdJa0FBSkFJQUVReUFGRkJFQWdBQ2dDSENJQUtBSUFRUUE2QUFBZ0FFSEMvQXNRR1NFQUlBSWdBUkJZSUFBZ0FoQk5HaUFDRUE4YURBRUxJQUZCQUJBNElRTWdBQ2dDQUNBRFFRRVF2Z1lpQXcwQUlBQW9BaHdpQUNnQ0FFRUFPZ0FBSUFCQnJ2QUpFQmtoQUNBQ0lBRVFXQ0FBSUFJUVRSb2dBaEFQR2tFQUlRTUxJQUpCRUdva0FDQURDNFlCQVFGL1FSQWhBUUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkJ5UUZyRGc4QUFRRUNEZzBEQkFVR0J3Z0pDZ3NNQzBFc0R3dEJJUThMUWNFQUR3dEJHUThMUVJ3UEMwRXBEd3RCR3c4TFFSNFBDMEVyRHd0QkdnOExRUjBQQzBFcUR3c2dBRUdVQVVZTkFndEJmeUVCQ3lBQkR3dEJGZ3U1QkFFSWZ5TUFRVEJySWdVa0FBSkFJQUlvQWdCRkRRQWdBaWdDQkVVTkFFRUJJUU1nQUNBQkVHQVFsQUlvQWpSQkFrWU5BQ0FGUVJCcUlnTWdBQ0FGUVNocUlBSVFXeUFCRUkwUElBSWdBeEJiR2lBQ0lBQWdBaWdDQUNBQkVHQVFqQTgyQWdBZ0FDZ0NBQ0VFSUFFUVlDRUdJQUlvQWdBaEJ5QUNLQUlFSVFrakFFSFFBR3NpQXlRQUlBTWdDVFlDVENBRVFTQnFJZ2tRSENBRVFjZ0VhaUFHRUpNQ0lnWW9BZ0FoQ2lBRElBWW9BZ1FnQmkwQUN5SUlJQWhCR0hSQkdIVkJBRWdpQ0JzMkFpd2dBeUFLSUFZZ0NCczJBaWdnQXlBREtRTW9Od01BSUFOQk1Hb2lDaUFFUWFnQ2FpQURFSmdESUFOQkFEWUNJQ0FEUWdBM0F4Z2dBMElBTndNUUlBTWdCeUFKSUFjb0FnQW9BZ2dSQVFBMkFnZ2pBRUV3YXlJR0pBQWpBRUVRYXlJSEpBQWdCa0VJYWlJRVFnQTNBZ0FnQkVLQWdJQ0F3QUEzQWh3Z0JDQUVRUWhxSWdnMkFoZ2dCQ0FES0FJSU5nSUFJQVFnQXlnQ1REWUNCQ0FIUVFBNkFBd2dCMEhBbkNBMkFnZ2dDQ0FIUVFocUVJTUpJQWRCRUdva0FDQUdJQWtnQ2hEekFqWUNCQ0FKSUFOQkVHb2dCa0VFYWlBRUlBUkJCR29nQ0JEMERTRUhJQVFRdkFjZ0JrRXdhaVFBSUFjaEJDQURRZEFBYWlRQUlBVWdCRFlDSkNBRVJRUkFRUUFoQXd3QkN5QUZRUUEyQWlBZ0JVSUFOd01ZSUFWQ0FEY0RFQ0FBSUFBZ0JVRVFhaUlESUFWQkpHb1FrZ3NReVFFYUlBVWdBUkJnTmdJTUlBTWdBRUhBQm1vZ0JVRU1haUFDRU80SUlBQW9BaHdvQWdBdEFBQkJBRWNoQXdzZ0JVRXdhaVFBSUFNTERRQWdBRUc0NkE4MkFnQWdBQXNNQUNBQUtBSUlJQUVRdXhFTFVBRUNmeUFBS0FJSUlRQWpBRUVRYXlJREpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRU5nSU1JQU1nQkRZQ0NDQUFRWXdCYWlBQVFRaHFJQU5CQ0dvZ0FTQUNFTEVYSVFBZ0EwRVFhaVFBSUFBTEhBQWdBQ2dDQUNBQklBSVFPQkNVQWlJQUJFQWdBRUVCT2dBZ0N3dkRBUUVDZnlNQVFjQUJheUlESkFBZ0F5QUNOZ0s4QVNBRElBRTJBckFCSUFNZ0EwRzhBV29pQWpZQ3RBRUNRQ0FCUVlnSGFpQUNFT3dCSWdJRVFDQUNLQUlNSWdFb0FnUWlBaWdDRkVFN1JnUkFJQUFnQTBHd0FXb2dBaERIR1F3Q0N5QUFJQUVwQWl3M0FnQU1BUXNnQVNnQ0VDQURLQUs4QVJDVUFTSUJSUVJBSUFOQnVhRUZRWmdtUVFjZ0EwR2dBV29RSFNJQ0VCY2lCRUVZYWtIM213Z1FEaG9nQkJBWUlBSVFIZ3NnQUNBRFFiQUJhaUFCRU1jWkN5QURRY0FCYWlRQUN3a0FJQUJCQUJDUER3dVFCUUlKZndKOUl3QkJJR3NpQnlRQUlBY2dBVFlDRUNBSFFSQnFJUWdqQUVFUWF5SUZKQUFnQVNnQ0FDRUJJQWNDZndKQUlBQW9BZ1FpQWtVTkFDQUFLQUlBQW44Z0FrRUJheUFCY1NBQ2FTSUdRUUZORFFBYUlBRWdBU0FDU1EwQUdpQUJJQUp3Q3lJRFFRSjBhaWdDQUNJRVJRMEFJQUpCQVdzaENTQUdRUUZMSVFvRFFDQUVLQUlBSWdSRkRRRWdBU0FFS0FJRUlnWkhCRUFDUUNBS1JRUkFJQVlnQ1hFaEJnd0JDeUFDSUFaTERRQWdCaUFDY0NFR0N5QURJQVpIRFFJTElBUW9BZ2dnQVVjTkFBdEJBQXdCQ3lBRklBQWdBU0FJRU9JSUFrQkJBQ0FDSUFBb0FneEJBV3F6SWdzZ0FDb0NFQ0lNSUFLemxGNGJEUUFnQUNBQ0lBSkJBV3R4UVFCSElBSkJBMGx5SUFKQkFYUnlJZ01DZnlBTElBeVZqU0lMUXdBQWdFOWRJQXREQUFBQUFHQnhCRUFnQzZrTUFRdEJBQXNpQWlBQ0lBTkpHeEREQVNBQUtBSUVJZ0lnQWtFQmEzRkZCRUFnQWtFQmF5QUJjU0VEREFFTElBRWdBa2tFUUNBQklRTU1BUXNnQVNBQ2NDRURDd0pBSUFOQkFuUWlBeUFBS0FJQWFpZ0NBQ0lCUlFSQUlBVW9BZ0FnQUNnQ0NEWUNBQ0FBSUFVb0FnQTJBZ2dnQUNnQ0FDQURhaUFBUVFocU5nSUFJQVVvQWdBaUFTZ0NBQ0lEUlEwQklBTW9BZ1FoQkFKQUlBSWdBa0VCYXlJRGNVVUVRQ0FESUFSeElRUU1BUXNnQWlBRVN3MEFJQVFnQW5BaEJBc2dBQ2dDQUNBRVFRSjBhaUFCTmdJQURBRUxJQVVvQWdBZ0FTZ0NBRFlDQUNBQklBVW9BZ0EyQWdBTElBVW9BZ0FoQkNBRlFRQTJBZ0FnQUNBQUtBSU1RUUZxTmdJTUlBVW9BZ0FoQUNBRlFRQTJBZ0FnQUFSQUlBVXRBQWdFUUNBQVFReHFFSlVMQ3lBQUJFQWdBQkFmQ3d0QkFRczZBQndnQnlBRU5nSVlJQVZCRUdva0FDQUhLQUlZSVFBZ0IwRWdhaVFBSUFCQkRHb0xrUVVDQ1g4Q2ZTTUFRUkJySWdra0FDTUFRUkJySWdZa0FDQUNFTTRHSVFVZ0NRSi9Ba0FnQVNnQ0JDSURSUTBBSUFFb0FnQUNmeUFEUVFGcklBVnhJQU5wSWdoQkFVME5BQm9nQlNBRElBVkxEUUFhSUFVZ0EzQUxJZ2RCQW5ScUtBSUFJZ1JGRFFBZ0EwRUJheUVLSUFoQkFVc2hDd05BSUFRb0FnQWlCRVVOQVNBRklBUW9BZ1FpQ0VjRVFBSkFJQXRGQkVBZ0NDQUtjU0VJREFFTElBTWdDRXNOQUNBSUlBTndJUWdMSUFjZ0NFY05BZ3NnQkVFSWFpQUNFUElEUlEwQUMwRUFEQUVMUVJRUUZTRUVJQVlnQVVFSWFqWUNCQ0FHSUFRMkFnQWdCRUVJYWlBQ0VGUWFJQVpCQVRvQUNDQUVRUUEyQWdBZ0JDQUZOZ0lFQWtCQkFDQURJQUVvQWd4QkFXcXpJZ3dnQVNvQ0VDSU5JQU96bEY0YkRRQWdBU0FESUFOQkFXdHhRUUJISUFOQkEwbHlJQU5CQVhSeUlnSUNmeUFNSUEyVmpTSU1Rd0FBZ0U5ZElBeERBQUFBQUdCeEJFQWdES2tNQVF0QkFBc2lCeUFDSUFkTEd4Q2NEeUFCS0FJRUlnTWdBMEVCYTNGRkJFQWdBMEVCYXlBRmNTRUhEQUVMSUFNZ0JVc0VRQ0FGSVFjTUFRc2dCU0FEY0NFSEN3SkFJQWRCQW5RaUJTQUJLQUlBYWlnQ0FDSUNSUVJBSUFZb0FnQWdBU2dDQ0RZQ0FDQUJJQVlvQWdBMkFnZ2dBU2dDQUNBRmFpQUJRUWhxTmdJQUlBWW9BZ0FpQWlnQ0FDSUZSUTBCSUFVb0FnUWhCQUpBSUFNZ0EwRUJheUlGY1VVRVFDQUVJQVZ4SVFRTUFRc2dBeUFFU3cwQUlBUWdBM0FoQkFzZ0FTZ0NBQ0FFUVFKMGFpQUNOZ0lBREFFTElBWW9BZ0FnQWlnQ0FEWUNBQ0FDSUFZb0FnQTJBZ0FMSUFZb0FnQWhCQ0FHUVFBMkFnQWdBU0FCS0FJTVFRRnFOZ0lNSUFZUW13OUJBUXM2QUF3Z0NTQUVOZ0lJSUFaQkVHb2tBQ0FBSUFrb0FnZzJBZ0FnQUNBSkxRQU1PZ0FFSUFsQkVHb2tBQXZEQlFJSWZ3SjlJd0JCSUdzaUJ5UUFJQWNnQVRZQ0VDTUFRUkJySWdRa0FDQUJLQUlBSVFFZ0J3Si9Ba0FnQUNnQ0JDSUNSUTBBSUFBb0FnQUNmeUFDUVFGcklBRnhJQUpwSWdaQkFVME5BQm9nQVNBQklBSkpEUUFhSUFFZ0FuQUxJZ1ZCQW5ScUtBSUFJZ05GRFFBZ0FrRUJheUVJSUFaQkFVc2hDUU5BSUFNb0FnQWlBMFVOQVNBQklBTW9BZ1FpQmtjRVFBSkFJQWxGQkVBZ0JpQUljU0VHREFFTElBSWdCa3NOQUNBR0lBSndJUVlMSUFVZ0JrY05BZ3NnQXlnQ0NDQUJSdzBBQzBFQURBRUxRUmdRRlNFRElBUWdBRUVJYWpZQ0JDQUVJQU0yQWdBZ0EwRUlhaUlHSUFjb0FoQW9BZ0EyQWdBZ0JrRUVhaEJWSUFSQkFUb0FDQ0FEUVFBMkFnQWdBeUFCTmdJRUFrQkJBQ0FDSUFBb0FneEJBV3F6SWdvZ0FDb0NFQ0lMSUFLemxGNGJEUUFnQUNBQ0lBSkJBV3R4UVFCSElBSkJBMGx5SUFKQkFYUnlJZ1VDZnlBS0lBdVZqU0lLUXdBQWdFOWRJQXBEQUFBQUFHQnhCRUFnQ3FrTUFRdEJBQXNpQWlBQ0lBVkpHeEREQVNBQUtBSUVJZ0lnQWtFQmEzRkZCRUFnQWtFQmF5QUJjU0VGREFFTElBRWdBa2tFUUNBQklRVU1BUXNnQVNBQ2NDRUZDd0pBSUFWQkFuUWlCU0FBS0FJQWFpZ0NBQ0lCUlFSQUlBUW9BZ0FnQUNnQ0NEWUNBQ0FBSUFRb0FnQTJBZ2dnQUNnQ0FDQUZhaUFBUVFocU5nSUFJQVFvQWdBaUFTZ0NBQ0lGUlEwQklBVW9BZ1FoQXdKQUlBSWdBa0VCYXlJRmNVVUVRQ0FESUFWeElRTU1BUXNnQWlBRFN3MEFJQU1nQW5BaEF3c2dBQ2dDQUNBRFFRSjBhaUFCTmdJQURBRUxJQVFvQWdBZ0FTZ0NBRFlDQUNBQklBUW9BZ0EyQWdBTElBUW9BZ0FoQXlBRVFRQTJBZ0FnQUNBQUtBSU1RUUZxTmdJTUlBUW9BZ0FoQUNBRVFRQTJBZ0FnQUFSQUlBUXRBQWdFUUNBQVFReHFFQThhQ3lBQUJFQWdBQkFmQ3d0QkFRczZBQndnQnlBRE5nSVlJQVJCRUdva0FDQUhLQUlZSVFBZ0IwRWdhaVFBSUFCQkRHb0xDUUFnQUVFTUVNd1NDd2tBSUFCQkNCRE1FZ3ViQ3dJTmZ3SjlJd0JCTUdzaUJ5UUFJQWNnQWpZQ0NDQUhJQUUyQWd3Z0J5QUROZ0lFSUFBb0FnQWhCU0FIUVJCcUlBRWdBaUFERUxrYUlBZEJHR29nQjBFY2FpQUhRU0JxRUw4SElRWWdCVUg4QUdvaENRSkFBa0FnQlNnQ2dBRWlBMFVOQUNBSktBSUFBbjhnQTBFQmF5QUdjU0FEYVNJQlFRRk5EUUFhSUFZZ0F5QUdTdzBBR2lBR0lBTndDeUlBUVFKMGFpZ0NBQ0lDUlEwQUlBTkJBV3NoQ0NBSEtBSWdJUVFnQnlnQ0hDRUtJQWNvQWhnaERDQUJRUUZMSVEwRFFDQUNLQUlBSWdKRkRRRWdCaUFDS0FJRUlnRkhCRUFDUUNBTlJRUkFJQUVnQ0hFaEFRd0JDeUFCSUFOSkRRQWdBU0FEY0NFQkN5QUFJQUZHRFFFTUFnc2dBaWtDQ0VJZ2lLY2lDeWdDQ0NBTVJ3MEFJQXNvQWd3Z0NrY05BQ0FMS0FJUUlBUkhEUUFMREFFTElBVkI0QUJxSWdFUXFnTWlBaUFIS0FJTUlBY29BZ2dnQnlnQ0JCQzVHaUFCSUFJUUtDQUJJQUVvQWhoQkFXbzJBaGdnQWlFTEFrQWdCU2dDZ0FFaUEwVU5BQ0FKS0FJQUFuOGdBMEVCYXlBR2NTQURhU0lCUVFGTkRRQWFJQVlnQXlBR1N3MEFHaUFHSUFOd0N5SUFRUUowYWlnQ0FDSUNSUTBBSUFOQkFXc2hDQ0FCUVFGTElRUURRQ0FDS0FJQUlnSkZEUUVnQmlBQ0tBSUVJZ0ZIQkVBQ1FDQUVSUVJBSUFFZ0NIRWhBUXdCQ3lBQklBTkpEUUFnQVNBRGNDRUJDeUFBSUFGSERRSUxJQUlvQWd3Z0N4RG1CVVVOQUFzTUFRdEJFQkFWSWdvZ0JqWUNCQ0FLSUFhdElBdXRRaUNHaERjQ0NDQUtRUUEyQWdBZ0JVR0VBV29oREFKQVFRQWdBeUFGS0FLSUFVRUJhck1pRVNBRktnS01BU0lTSUFPemxGNGJEUUFDUUFKQUFuOUJBaUFESUFOQkFXdHhRUUJISUFOQkEwbHlJQU5CQVhSeUlnQUNmeUFSSUJLVmpTSVJRd0FBZ0U5ZElCRkRBQUFBQUdCeEJFQWdFYWtNQVF0QkFBc2lBU0FBSUFGTEd5SUFRUUZHRFFBYUlBQWdBQ0FBUVFGcmNVVU5BQm9nQUJCL0N5SUVJQVVvQW9BQklnQk5CRUFnQUNBRVRRMENJQUJCQTBraEFnSi9JQVVvQW9nQnN5QUZLZ0tNQVpXTkloRkRBQUNBVDEwZ0VVTUFBQUFBWUhFRVFDQVJxUXdCQzBFQUN5RUJJQUFnQkNBQ0lBQnBRUUZMY2dSL0lBRVFmd1VnQVVFQlFTQWdBVUVCYTJkcmRDQUJRUUpKR3dzaUFDQUFJQVJKR3lJRVRRMENJQVJGRFFFTElBUkJnSUNBZ0FSSkJFQWdDU0FFUVFKMEVCVVFiQ0FGSUFRMkFvQUJRUUFoQWdOQUlBSWdCRVlFUUNBRktBS0VBU0lEUlEwRUlBTW9BZ1FoQ0FKQUlBUnBJZ0JCQVUwRVFDQUlJQVJCQVd0eElRZ01BUXNnQkNBSVN3MEFJQWdnQkhBaENBc2dDU2dDQUNBSVFRSjBhaUFNTmdJQUlBUkJBV3NoRHlBQVFRRkxJUkFEUUNBREtBSUFJZ0JGRFFVZ0FDZ0NCQ0VCQWtBZ0VFVUVRQ0FCSUE5eElRRU1BUXNnQVNBRVNRMEFJQUVnQkhBaEFRc0NRQ0FCSUFoR0RRQWdBQ0VDSUFGQkFuUWlEU0FKS0FJQWFpSU9LQUlBUlFSQUlBNGdBellDQUNBQklRZ01BUXNEUUFKQUlBSWlBU2dDQUNJQ1JRUkFRUUFoQWd3QkN5QUFLQUlNSUFJb0Fnd1E1Z1VoRGlBQktBSUFJUUlnRGcwQkN3c2dBeUFDTmdJQUlBRWdDU2dDQUNBTmFpZ0NBQ2dDQURZQ0FDQUpLQUlBSUExcUtBSUFJQUEyQWdBTUFRc2dBQ0VEREFBTEFBVWdDU2dDQUNBQ1FRSjBha0VBTmdJQUlBSkJBV29oQWd3QkN3QUxBQXNRK3dFQUN5QUpRUUFRYkNBRlFRQTJBb0FCQ3lBRktBS0FBU0lESUFOQkFXc2lBSEZGQkVBZ0FDQUdjU0VBREFFTElBTWdCa3NFUUNBR0lRQU1BUXNnQmlBRGNDRUFDd0pBQWtBZ0NTZ0NBQ0FBUVFKMGFpSUFLQUlBSWdKRkJFQWdDaUFGS0FLRUFUWUNBQ0FGSUFvMkFvUUJJQUFnRERZQ0FDQUtLQUlBSWdCRkRRSWdBQ2dDQkNFQ0FrQWdBeUFEUVFGcklnQnhSUVJBSUFBZ0FuRWhBZ3dCQ3lBQ0lBTkpEUUFnQWlBRGNDRUNDeUFKS0FJQUlBSkJBblJxSVFJTUFRc2dDaUFDS0FJQU5nSUFDeUFDSUFvMkFnQUxJQVVnQlNnQ2lBRkJBV28yQW9nQkN5QUhRVEJxSkFBZ0N3dFdBUUovSUFBb0FnQWlBU2dDSENJQ0JIOGdBZ1VnQVJEMkNDSUNRYmpSRWpZQ0FDQUNRWURMRWpZQ0JDQUJJQUlRS0NBQklBRW9BaGhCQVdvMkFoZ2dBaUVCSUFBb0FnQWdBVFlDSENBQUtBSUFLQUljQ3dzUEFDQUFRU1JxRURJYUlBQVErUWdMUFFFQ2Z5QUFLQUlFSVFJRFFDQUNJQUFvQWdnaUFVY0VRQ0FBSUFGQkJHc2lBVFlDQ0NBQkVJVURHZ3dCQ3dzZ0FDZ0NBQ0lBQkVBZ0FCQWZDd3Q5QVFKL0l3QkJFR3NpQXlRQUlBTWdBVFlDRENNQVFSQnJJZ0VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0kyQWd3Z0FTQUNOZ0lJSUFCQmpBRnFJZ0lnQWhDL0FTQUFLQUlJSUFFb0FnZ2dBRUhZQW1vZ0F5Z0NEQkNhSHlJQUVDZ2dBaUFDS0FJWVFRRnFOZ0lZSUFGQkVHb2tBQ0FEUVJCcUpBQWdBQXM5QVFGL0l3QkJFR3NpQWlRQUlBQWdBVWNFUUNBQ0lBRkJJR28yQWdnZ0FpQUJLQUlnSUFGSE9nQU1JQUFnQWtFSWFoQ1FFUXNnQWtFUWFpUUFDeWdBSUFBb0FnQkJrckdvK2dkcVFaT2tCbk1pQUVFQ2RrR1crS242QjNNZ0FSRDVBbW9nQUhNTFFRRUJmeU1BUVNCcklnUWtBQ0FFSUFJb0FnQTJBaHdnQkVFSWFpSUNJQU1RNEFjZ0FDQUJJQVJCSEdvZ0FoQ3lEeUVBSUFJUXFBRWdCRUVnYWlRQUlBQUxld0VGZnlNQVFSQnJJZ0VrQUFKQUlBQW9BZ0FpQWlnQ3NBSWlBeUFBS0FJTVJnUkFJQUFvQWdnaEFBd0JDeUFCUVFocUlBSWdBRUVFYWhEZEdpQUNLQUtnQWlFQ0lBRXRBQWdoQkNBQktBSU1JUVVnQUNBRE5nSU1JQUFnQWlBRlFSaHNha0VFYWtFQUlBUWJJZ0EyQWdnTElBRkJFR29rQUNBQUMwOEJBbjhqQUVFUWF5SURKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUVOZ0lNSUFNZ0JEWUNDQ0FBUVl3QmFpQUFRUWhxSUFOQkNHb2dBRUhZQW1vZ0FTQUNFTndhSVFBZ0EwRVFhaVFBSUFBTHRBRUJBbjhnQUNnQ0FDSUVJUVVqQUVIUUFHc2lBQ1FBSUFCQlFHc2dBeERnQndKL0lBQW9Ba2hGQkVBZ0FDQUNOZ0lZSUFBZ0FoRGNBVFlDSENBQUlBQXBBeGczQXdBZ0FFRWdhaUlDSUFRZ0FCRGhBU0FFSUFFZ0FoRE9BZ3dCQ3lBQUlBSTJBaEFnQUNBQ0VOd0JOZ0lVSUFBZ0FDa0RFRGNEQ0NBQVFTQnFJZ0lnQkNBQVFRaHFFT0VCSUFRZ0FTQUNJQUJCUUdzUXN3c0xJUUVnQUVGQWF4Q29BU0FBUWRBQWFpUUFJQVVnQVJDQkF3c2JBQ0FBSUFFb0FnQTJBZ0FnQUVFSWFpQUJRUWhxRUw4TElBQUxjQUVDZnlNQVFUQnJJZ01rQUNBRFFvQ0FnSURBQURjQ0pDQURJQU5CRUdvaUJEWUNJQ0FEUVFBMkFnZ2dBeUFDS0FJQU5nSU1JQU1nQUNBQkVQTUNOZ0lFSUFBZ0FFSFlBbW9nQTBFRWFpQURRUWhxSWdBZ0FFRUVjaUFFRVBRTklRRWdBQkM4QnlBRFFUQnFKQUFnQVF0ckFRRi9BMEFDUUNBQVJTQUFLQUlFSWdKQndQOFJSM0pGQkVBZ0FDZ0NKQ0FCRUtnTElBQW9BaWdROGhvTkFTQUJJQUFvQWlnUThSb01BUXNnQUVVZ0FrSEFnQkpIY2dSL0lBQkZJQUpCZ0lFU1IzSU5BU0FBUVNocUJTQUFRU1JxQ3lnQ0FDRUFEQUVMQ3d2Q0FRRUZmeU1BUVJCcklna2tBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnZzJBZ3dnQ1NBSU5nSUlJd0JCRUdzaUNDUUFJQUJCakFGcUlnb1FoeDhoQ3lBR0tBSUFJUVlnQlNnQ0FDRUZJQVFvQWdBaEJDQURLQUlBSVFNZ0FpZ0NBQ0VDSUFrb0FnZ2hEQ0FBS0FJSUlRQWdDQ0FIUVJCcU5nSUlJQWdnQnlnQ0VDQUhSem9BRENBS0lBc2dBQ0FNSUFFZ0FpQURJQVFnQlNBR0lBaEJDR29RaUI4aUFCQW9JQW9nQ2lnQ0dFRUJhallDR0NBSVFSQnFKQUFnQ1VFUWFpUUFJQUFMV1FFQ2Z5QUJJQUFvQW9nQ1N3UkFJQUFvQW9BQ0lRSWdBQ0FCRU8wTFFRQWhBUU5BSUFBb0FvUUNJQUZOQkVBZ0FDQUNFRFlGSUFGQkJYUWlBeUFBS0FLQUFtb2dBaUFEYWhDRkNSb2dBVUVCYWlFQkRBRUxDd3NMZUFFRmZ5QUFLQUtVQkNJRlFRRnJJUVlDUUFOQUlBTWdCVVlOQVNBQUtBS1FCQ0FCUVN4c2FpSUVMUUFnQkVBZ0FpQUNLQUlvSWdjZ0JDZ0NLRXNFZnlBRUlBSVFoQWtnQWlnQ0tBVWdCd3RCQVdvMkFpZ2dBVUVCYWtFQUlBRWdCa2NiSVFFZ0EwRUJhaUVEREFFTEN5QUVJQUlRdnc4TEN4SUFJQUFnQVJDRkNTSUFRUUU2QUNBZ0FBc09BQ0FBRUpFTUlBQWdBUkN2Q3dzTUFDQUFFT29GSUFBUXVBc0xEZ0FnQUNBQkVJVUpRUUU2QUNBTEpRQWdBQkR2Q3lBQVFRd1FoZ2tnQUVFQU5nS2NCQ0FBSUFBb0FxQUVRUUZxTmdLZ0JBdENBUUYvSUFFb0FnQWhBaU1BUVJCcklnRWtBQ0FCSUFJMkFnZ2dBVUVDTmdJRUlBQWdBRUhZQW1vZ0FVRUlhaUFCUVFScUVJTWJJUUFnQVVFUWFpUUFJQUFMcVFNQkIzOGdBQ2dDQUNJR0lRc2pBRUhnQUdzaUFDUUFJd0JCSUdzaUJ5UUFJd0JCRUdzaUNDUUFJd0JCSUdzaUNTUUFJd0JCSUdzaUJTUUFJQVZCQ0dvaUNpQURFUE1RSUFVZ0JTZ0NEQ0FGTFFBVElnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQ0hDQUZJQVVvQWdnZ0NpQURHellDR0NBRklBVXBBeGczQXdBZ0NTQUdJQVVRNFFFZ0NoQVBHaUFGUVNCcUpBQWdCaUFHUWRnQ2FpQUpFTTRDSVFNZ0NVRWdhaVFBSUFnZ0F6WUNEQ0FHSUFOQkVHb2dDRUVNYWhDekF5RURJQWhCRUdva0FDQUhJQU0yQWhBZ0JpQUVFTTBQSVFNZ0IwRUNOZ0ljSUFjZ0F6WUNGQ0FISUFkQkVHbzJBaGdnQnlBSEtRTVlOd01JSUFCQnlBQnFJQWRCQ0dvUXRRSWFJQWRCSUdva0FBSi9JQUFvQWxSRkJFQWdBQ0FDTmdJZ0lBQWdBaERjQVRZQ0pDQUFJQUFwQXlBM0F3Z2dBRUVvYWlJQ0lBWWdBRUVJYWhEaEFTQUdJQUVnQWhET0Fnd0JDeUFBSUFJMkFoZ2dBQ0FDRU53Qk5nSWNJQUFnQUNrREdEY0RFQ0FBUVNocUlnSWdCaUFBUVJCcUVPRUJJQVlnQVNBQ0lBQkJ5QUJxRUpFYkN5RUJJQUJCeUFCcUVLb0JJQUJCNEFCcUpBQWdDeUFCRUlFREM2MEJBUVovSXdCQkVHc2lCU1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lCRFlDRENBRklBUTJBZ2dqQUVFUWF5SUVKQUFnQUVHTUFXb2lCaEN6QlNFSElBVW9BZ2doQ0NBQUtBSUlJUUFnQkNBRFFRUnFOZ0lJSUFNb0FnUWhDU0FFUVFBNkFBUWdCRUhBbkNBMkFnQWdCQ0FESUFsSE9nQU1JQVlnQnlBQUlBZ2dBU0FDSUFSQkNHb2dCQkRCQnlJQUVDZ2dCaUFHS0FJWVFRRnFOZ0lZSUFSQkVHb2tBQ0FGUVJCcUpBQWdBQXNMQUNBQVFicjlCaERLQmdzUEFDQUFJQUZCbUxZU1FRa1FqQWdMRHdBZ0FDQUJRWWkyRWtFREVJd0lDM3dCQm44Q1FDQUFLQUlBSWdFb0FnUWlCVVVOQUNBQktBSUFLQUlBSVFGQkFTRUNBMEFnQWlBRlJnUkFJQUVoQkF3Q0N3SkFJQUFvQWdBb0FnQWdBa0VDZEdvb0FnQWlBeUFCUmcwQUlBTWdBUkNLQ1VGL1J3MEFJQUVnQXhDS0NTRUdJQU1oQVNBR1FYOUdEUUlMSUFKQkFXb2hBZ3dBQ3dBTElBUUxFZ0FnQUVFQU5nSmtJQUFnQUNnQ1lCQTJDdzBBSUFCQmxMRVNOZ0lBSUFBTHl3RUJBWDhqQUVFUWF5SUZKQUFnQlNBQ05nSUlJQVVnQVRZQ0RDQUZJQU0yQWdRZ0JVSG9yeElRc3dSQmtyR28rZ2RxUVpPa0JuTWlBVUVDZGtHVytLbjZCM01nQlNnQ0RHb2dBWE1pQVVFQ2RrR1crS242QjNNZ0JTZ0NDR29nQVhNaUFVRUNka0dXK0tuNkIzTWdCU2dDQkdvZ0FYTTJBZ0FnQUNBRktBSUFJQVVvQWd3UWl3a2lBRUhZcnhJMkFnUWdBRUdjc0JJMkFnQWdBRUg0cnhJMkFnQWdBQ0FGS0FJSU5nSWNJQVVvQWdRaEFTQUFJQVEyQWlRZ0FDQUJOZ0lnSUFWQkVHb2tBQ0FBQzJrQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBSkJpSzhTSUFKQkRHb1F4Z3MyQWdnZ0FrSUFOd01BSUFBZ0FpZ0NDQ0FDS1FNQUVKMEVJZ0JCK0s0U05nSUVJQUJCdks4U05nSUFJQUJCbUs4U05nSUFJQUFnQWlnQ0REWUNHQ0FDUVJCcUpBQWdBQXNmQUNBQUlBRWdBa0hrc2dWQnVLNFNRZHl1RWtHWXJoSkJxSzRTRU5nU0N5VUFJQUFnQVNBQ0lBTkJKMEdGdHdWQkprSFlyUkpCL0swU1FiaXRFa0hJclJJUTFSSUxKUUFnQUNBQklBSWdBMEVrUVlhY0JVRWpRZmlzRWtHY3JSSkIyS3dTUWVpc0VoRFZFZ3RKQVFGL0l3QkJFR3NpQWlRQUlBQkNnSUNBZ01BQU53SmtJQUFnQURZQ1lDQUNJQUZCNEFCcU5nSUlJQUlnQVNnQ1lDQUJSem9BRENBQUlBSkJDR29RdGhzZ0FrRVFhaVFBQ3g4QUlBQWdBU0FDUVkyeUJVSHdxeEpCbEt3U1FkQ3JFa0hncXhJUTJCSUxWUUVCZnlNQVFSQnJJZ0lrQUNBQVFvQ0FnSURnQURjQ1pDQUFJQUEyQW1BZ0FpQUJRZUFBYWpZQ0NDQUNJQUVvQW1BZ0FVYzZBQXdnQUNBQ1FRaHFFTFFiSUFKQkVHb2tBQ0FBSUFFcEFtdzNBbXdnQUF1S0F3RUJmeU1BUWNBQmF5SURKQUFnQXlBQ05nSzRBU0FESUFFMkFyd0JJQU5Cd0xRU0lBTkJ1QUZxSUFOQnZBRnFFTHNiTmdLb0FTQURRZ2MzQXdnZ0FDQURLQUtvQVNBREtRTUlFSjBFSWdCQjhLb1NOZ0lFSUFCQnRLc1NOZ0lBSUFCQmtLc1NOZ0lBSUFNb0Fyd0JJZ0VvQWhnaEFpQUFJQUUyQWh3Z0FDQUNOZ0lZSUFBZ0FTZ0NIQ0lCTmdJZ0lBQWdBeWdDdUFFMkFpUWdBVUVCVFFSL0lBTkJDR3BCdm9zRlFTZEJBQ0FEUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRY0xXQ0JBT0dpQUNFQmdnQVJBZUlBQW9BaUFGSUFFTFFRVlBCRUFnQTBFSWFrRytpd1ZCS0VFQUlBTkJxQUZxRUIwaUFSQVhJZ0pCR0dwQmc5VUlFQTRhSUFJUUdDQUJFQjRMSUFBb0FpUWlBVUVCVFFSL0lBTkJDR3BCdm9zRlFTbEJBQ0FEUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRZDdXQ0JBT0dpQUNFQmdnQVJBZUlBQW9BaVFGSUFFTFFRVlBCRUFnQTBFSWFrRytpd1ZCS2tFQUlBTkJxQUZxRUIwaUFSQVhJZ0pCR0dwQm45VUlFQTRhSUFJUUdDQUJFQjRMSUFOQndBRnFKQUFnQUFzMUFDQUFFTDhiSWdCQk1Hb1F2eHNhSUFCQkFEWUNlQ0FBUW9DQWdJQ0FCRGNDY0NBQVFvQ0FCRGNDYUNBQVFnQTNBbUFnQUFzYkFDQUFJQUVvQWdBMkFnQWdBRUVJYWlBQlFRaHFFTUFiSUFBTEJBQkJBZ3NvQUNBQUVMTUVRWkt4cVBvSGFrR1RwQVp6SWdCQkFuWkJsdmlwK2dkeklBRW9BZ0JxSUFCekM4c0JBUUovSXdCQndBRnJJZ0lrQUNBQ0lBRTJBcndCSUFKQmdLVVNFTE1FUVpLeHFQb0hha0dUcEFaeklnRkJBblpCbHZpcCtnZHpJQUpCdkFGcUVQa0NhaUFCY3pZQ3FBRWdBa0lHTndNSUlBQWdBaWdDcUFFZ0Fpa0RDQkNkQkNJQVFmQ2tFallDQkNBQVFiU2xFallDQUNBQVFaQ2xFallDQUNBQUlBSW9BcndCSWdFMkFoZ2dBU2dDQkVHNHJSSkdCRUFnQWtFSWFrSHJ1QVZCSTBFQUlBSkJxQUZxRUIwaUFSQVhJZ05CR0dwQjF1d0lFQTRhSUFNUUdDQUJFQjRMSUFKQndBRnFKQUFnQUFzYkFDQUFJQUZCNUtNU1FjQ2tFa0dRb3hKQmdNaVFtSGdRd0F3TGpRTUNBWDhCZmlNQVFjQUJheUlISkFBZ0J5QUROZ0s0QVNBSElBSTJBcndCSUFjZ0JEWUN0QUVnQnlBRk5nS3dBU0FIUWFDaUVoQ3pCRUdTc2FqNkIycEJrNlFHY3lJQ1FRSjJRWmI0cWZvSGN5QUhRYndCYWhENUFtb2dBbk1pQWtFQ2RrR1crS242QjNNZ0J5Z0N1QUZxSUFKeklnSkJBblpCbHZpcCtnZHpJQWNvQXJRQmFpQUNjeUlDUVFKMlFaYjRxZm9IY3lBSEtBS3dBV29nQW5NMkFxQUJJQWNDZmdKK0lBY29BcndCS0FJRUlnSkJrS01TUmdSQUlBRXBBeEFpQ0VJRGd3d0JDMElBSUFKQnFLTVNSZzBCR2lBQktRTVFJUWhDQUFzZ0NFSUVnNFFMTndNQUlBQWdCeWdDb0FFZ0J5a0RBQkNkQkNJQVFaQ2lFallDQkNBQVFkaWlFallDQUNBQUlBRTJBaGdnQUVHMG9oSTJBZ0FnQUNBSEtBSzhBVFlDSENBQUlBY29BcmdCTmdJZ0lBQWdCeWdDdEFFMkFpUWdCeWdDc0FFaEFpQUFJQVkyQWl3Z0FDQUNOZ0lvSUFGRkJFQWdCMEgyaWdWQnh3QkJEU0FIUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRWWJUQ0JBT0dpQUNFQmdnQVJBZUN5QUhRY0FCYWlRQUlBQUxEZ0FnQUNBQkVPWUhRUUU2QURnTEZBQWdBa1VFUUVFQUR3c2dBQ0FCSUFJUXBBZ0xKZ0FnQUNBQktRSUFOd0lBSUFBZ0FTZ0NDRFlDQ0NBQkVGVWdBQ0FCS0FJTU5nSU1JQUFMRkFBZ0FFSDRuQkkyQWdBZ0FFRWthaEFqSUFBTERBQWdBQkROQ3hvZ0FCQWZDdzRBSUFBZ0FSQ1FDVUVCT2dBZ0N4RUFJQUF0QUNRRVFDQUFRUUE2QUNRTEN4UUFJQUFnQVJCV0lnQWdBU2tDSERjQ0hDQUFDeFFBSUFCQnlKZ1NOZ0lBSUFCQkpHb1FUeUFBQ3k4QUlBQkNBRGNDQUNBQVFRQTJBaUFnQUVJQU53SVFJQUJDQURjQ0NDQUFRb0NBZ0lDQWdJREFQemNDR0NBQUN3a0FJQUFRa3drUUh3c01BQ0FBRUpNSkdpQUFFQjhMRmdBZ0FDZ0NDQ0lBUVFBZ0FDZ0NCRUc0OHc5R0d3dGFBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNDQ0FFSUFFMkFnd2dCQ0FETmdJRUlBQWdCQ2dDRENBRUtBSUlJQVFvQWdRUTdBVWlBRUdZamhJMkFnUWdBRUdZanhJMkFnQWdBRUhvamhJMkFnQWdCRUVRYWlRQUlBQUxDZ0FnQUVINHJoSVFTQXNLQUNBQVFkQ3hFaEJJQ3hVQUlBQWdBUkRtQnlJQUlBRW9BamcyQWpnZ0FBc3BBUUYvSXdCQkVHc2lBaVFBSUFBZ0FrSE9oUWtRRkNJQUlBRVFKeUFBRUE4YUlBSkJFR29rQUFzdEFBSi9Ba0FnQUJDRUFTSUFSUTBBSUFBb0FnUkJrS0lTUncwQVFRRWdBQ2dDSEJEQkhBMEJHZ3RCQUFzTHdnRUJCWDhqQUVHd0FXc2lCQ1FBSUFNb0FoUWlCeENFQVNBQ1JpSUlSUVJBSUFSQklHb1FTU0lHUVFocUlnTkJ1YklLRUE0YUlBTWdBU0FCS0FJQUtBSU1FUUFBRUE0YUlBTkI5WlVKRUE0YUlBUkJFR29pQlNBQUtBSUlJQUlRcHdFZ0F5QUZFQklhSUFOQjZaVUpFQTRhSUFRZ0FDZ0NDQ0FIRUtjQklBTWdCQkFTR2lBRFFmT2FDUkFPR2lBRUVBOGFJQVVRRHhvZ0JTQUdRUXhxRUVJZ0FDQUZJQUZCRUdvUUp5QUVRUkJxRUE4YUlBWVFVUXNnQkVHd0FXb2tBQ0FJQzlZQkFRUi9Jd0JCRUdzaUF5UUFJQU1nQVRZQ0RDQURJQU5CREdvMkFnZ0NRQ0FCUlFSQUlBTkJDR29ReWh3aEJBd0JDMEVCSVFRZ0FTZ0NCQ0lDRUpFRElBSkI4S29TUm5JZ0FrSHdwQkpHY2cwQUlBSkJrS0lTUmdSQUlBRW9BaHdvQWdSQnFLTVNSZ1JBUVFBaEJBd0NDeUFBSUFFb0FoZ1EzZ3NoQkF3QkN5QUNFT1lEQkVBZ0FTZ0NSQ0lDSUFFb0FraEJBblJxSVFFRFFDQUJJQUpHSWdRTkFpQUNLQUlBSVFVZ0FrRUVhaUVDSUFBZ0JTZ0NLQkRlQ3cwQUN3d0JDeUFEUVFocUVNb2NJUVFMSUFOQkVHb2tBQ0FFQ3hFQUlBQkJPRUhKL3dOQmZFRURFTW9CQ3hvQUlBQkJBQ0FBQkg4Z0FDZ0NCRUdZamhJUVNBVkJBQXNiQzA0QkEzOGpBRUd3QVdzaUFTUUFJQUFRNGdzaUFFVUVRQ0FCUWRpdkEwSE5BRUVPSUFGQm9BRnFFQjBpQWhBWElnTkJHR3BCN2FrSUVBNGFJQU1RR0NBQ0VCNExJQUZCc0FGcUpBQWdBQXVaQWdFTGZ5TUFRYkFCYXlJREpBQUNRQ0FBS0FJQUlnRW9BdENuQWlJSklBQW9BZ3hHQkVBZ0FDZ0NDQ0VCREFFTElBQW9BZ1FRL0FJaEJpQUJRY1NuQW1vb0FnQWlCMEVCYXlFS0lBWWdCM0FoQWlBQUtBSUVJUXNnQVNnQ3dLY0NJUWdDUUFKQUEwQWdCQ0FIUndSQVFRQWhBU0FJSUFKQjBCaHNhaUlGTFFERUdFVU5BeUFHSUFVb0FzZ1lSZ1JBSUFzZ0JTZ0NBRVlOQXdzZ0JTZ0N6QmdnQkVrTkF5QUNRUUZxUVFBZ0FpQUtSeHNoQWlBRVFRRnFJUVFNQVFzTElBTkJoclVEUVo0RVFRNGdBMEdnQVdvUUhTSUJFQmNpQWtFWWFrSFNOUkFPR2lBQ0VCZ2dBUkFlUVFBaEFRd0JDeUFJSUFKQjBCaHNha0VFYWlFQkN5QUFJQWsyQWd3Z0FDQUJOZ0lJQ3lBRFFiQUJhaVFBSUFFTEhnQWdBQ2dDQkNBQkVJSURFUEFQSWdCQkFDQUFLQUlFUWFDUkVrWWJDK2NCQVFaL0l3QkJJR3NoQkNBQUtBSjhJZ1pCQVdzaEJ3SkFBMEFnQlNBR1JnMEJJQUFvQW5nZ0FVRVViR29pQXkwQUNBUkFJQUlnQWlnQ0VDSUlJQU1vQWhCTEJIOGdCQ0FES0FJUU5nSVlJQVFnQXlrQ0NEY0RFQ0FFSUFNcEFnQTNBd2dnQXlBQ0tBSVFOZ0lRSUFNZ0Fpa0NDRGNDQ0NBRElBSXBBZ0EzQWdBZ0FpQUVLQUlZTmdJUUlBSWdCQ2tERURjQ0NDQUNJQVFwQXdnM0FnQWdBaWdDRUFVZ0NBdEJBV28yQWhBZ0FVRUJha0VBSUFFZ0IwY2JJUUVnQlVFQmFpRUZEQUVMQ3lBRElBSXBBZ0EzQWdBZ0F5QUNLQUlRTmdJUUlBTWdBaWtDQ0RjQ0NBc0xtZ1lDQzM4Q2ZpTUFRZkFCYXlJQ0pBQUNRRUVHSUFGQmxnRnNRZVFBYmlJQklBRkJCazBiSWdRZ0FDZ0NmRTBOQUNBQ1FvQ0FnSURBQURjQ0pDQUNJQUkyQWlBZ0FpQUFLQUtFQVJEbEhDQUFLQUo0SWdFZ0FDZ0NmRUVVYkdvaEJnTkFJQUVnQmtZRVFDQUFFSUVkSUFBZ0JCQ2xFQ0FDS0FJZ0lnUWdBaWdDSkVFRGRHb2hDU0FDUWNnQWFpRUtBMEFnQkNBSlJnUkFJQUpCQURZQ0pDQUNJQUlvQWlBUU5nd0VDeUFBS0FKOElBQW9Bb1FCSWdGQmxnRnNRWllCYWtIa0FHNUpCRUFnQUNBQlFRRjBRUUpxRU9VTEN5QUNRZWdCYWlBQUlBUVFtZ2tnQUNnQ2ZDSUlRUUZySVFzZ0FDZ0NlQ0VNUVFBaEFTQUNLQUxzQVNFR0lBSW9BdWdCSVFVQ1FBTkFJQUVnQ0VjRVFDQU1JQVZCRkd4cUlnTXRBQWhGQkVBZ0JDa0NBQ0VOSUFOQkFUb0FDQ0FESUEwM0FnQWdBeUFHTmdJTUlBTWdBVFlDRUNBQUlBQW9Bb1FCUVFGcU5nS0VBU0FBSUFBb0FvZ0JRUUZxTmdLSUFRd0RDeUFFS0FJQUlRY2dCaUFES0FJTVJnUkFJQWNnQXlnQ0FFWU5Bd3NnQVNBREtBSVFTd1JBSUFRb0FnUWhDQ0FDUVFFNkFOZ0JJQUlnQVRZQzRBRWdBaUFJTmdMVUFTQUNJQWMyQXRBQklBSWdCallDM0FFZ0FrRkFheUFCTmdJQUlBSWdBaWtEMkFFaURUY0RPQ0FDSUFJcEE5QUJJZzQzQXpBZ0FpQURLQUlRTmdMZ0FTQUNJQU1wQWdnM0E5Z0JJQUlnQXlrQ0FEY0QwQUVnQXlBQk5nSVFJQU1nRGpjQ0FDQURJQTAzQWdnZ0FpQUNLQUxnQVVFQmFqWUM0QUVnQUNBRlFRRnFJQUFvQW54d0lBSkIwQUZxRU9RTElBQWdBQ2dDaEFGQkFXbzJBb1FCSUFBZ0FDZ0NpQUZCQVdvMkFvZ0JEQU1GSUFWQkFXcEJBQ0FGSUF0SEd5RUZJQUZCQVdvaEFRd0NDd0FMQ3lBQ1FUQnFRWWExQTBIckEwRU9JQUpCMEFGcUVCMGlBUkFYSVFNZ0NrR1dOUkFPR2lBREVCZ2dBUkFlQ3lBRVFRaHFJUVFNQUFzQUN5QUJMUUFJQkVBZ0FSQzZBaUVISUFJb0FpUWlCU0FDS0FJb0lnTlBCRUFnQWlBRFFRRjBRUUlnQXhzUTVSd2dBaWdDSkNFRkN5QUNJQVZCQVdvMkFpUWdBaWdDSUNBRlFRTjBhaUFIS1FJQU53SUFDeUFCUVJScUlRRU1BQXNBQ3lBQ1FmQUJhaVFBQzNZQkJYOGdBQ2dDQUNJQ0tBS0lBU0lESUFBb0FneEdCRUFnQUNnQ0NBOExJd0JCRUdzaUFTUUFJQUZCQ0dvZ0FpQUFRUVJxRUpnUUlBRW9BZ3doQkNBQ0tBSjRJUUlnQVMwQUNDRUZJQUZCRUdva0FDQUNJQVJCRkd4cVFRUnFRUUFnQlJzaEFTQUFJQU0yQWd3Z0FDQUJOZ0lJSUFFTEtRRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBQWdBUkNZRUNBQ0xRQUlJUUFnQWtFUWFpUUFJQUFMRUFBZ0FDMEFKRVVFUUJCdkFBc2dBQXNiQUNBQUlBRW9BZ0EyQWdBZ0FFRUVhaUFCUVFScUVJZ2RJQUFMaXdFQkEzOUJBQ0FBUVpnSWFpZ0NBQ0lCSUFGQkgwc2lBUnNoQWtFQUlBQkJsQWhxS0FJQUlBRWJJUU1nQUVHUUNHb29BZ0FoQVFOQVFRQWhBQUpBQTBBZ0FTQURSaUFBSUFKR2NRMEJJQUZGQkVCQkFDRUJRYUFCUVFBMkFnQU1BUXNnQVNBQVFRSjBhaWdDQUVFQU5nS2dBU0FBUVFGcUlnQkJJRWNOQUFzZ0FTZ0NnQUVoQVF3QkN3c0xRUUVCZnlBQVFnQTNBb2dCSUFCQ2dJQ0FnT0FBTndLQUFTQUFJQUJCSEdvaUFUWUNmQ0FBUW9DQWdJREFBRGNDRkNBQUlBQTJBaEFnQVVFR0VKOFFJQUFMSEFBZ0FDQUJLQUlBS0FJQU5nSUFJQUJCQkdvZ0FTZ0NCQkNJSFFzU0FDQUFJQUZCLy8vL1AwRUZRUWdReXhJTGlBRUJCSDhqQUVFUWF5SURKQUFnQVMwQUJDSUNRZjhCUmlBQ0lBQXRBQVFpQkVZZ0FrSC9BVWR4SUFSQi93RkdJZ1ViSWdKRklBVnlSUVJBSXdCQkVHc2lBaVFBSUFJZ0EwRUlhallDQUNBQ1FaaUpFaWtEQURjRENDQUNJQUFnQVNBQ1FRaHFJQVJCQW5ScUtBSUFFUVFBSVFBZ0FrRVFhaVFBSUFBaEFnc2dBMEVRYWlRQUlBSUxOQUVCZndOQUlBQW9BcFFFSUFGTkJFQWdBRUVBTmdLVUJBVWdBQ2dDa0FRZ0FVRXNiR29RcWdJZ0FVRUJhaUVCREFFTEN3c1JBQ0FBTFFBSVFmOEJSZ1JBRUc4QUN3c1JBQ0FBUVF4QjlmOERRWHhCQXhES0FRdDRBUVYvSUFBb0FvUURJZ1ZCQVdzaEJnSkFBMEFnQXlBRlJnMEJJQUFvQW9BRElBRkJCWFJxSWdRdEFCUUVRQ0FDSUFJb0Fod2lCeUFFS0FJY1N3Ui9JQVFnQWhDaUNTQUNLQUljQlNBSEMwRUJhallDSENBQlFRRnFRUUFnQVNBR1J4c2hBU0FEUVFGcUlRTU1BUXNMSUFRZ0FoQytFQXNMVmdFQmZ5QUJJQUFvQWhoR0JIOGpBRUVRYXlJREpBQkJBQ0VCQWtBZ0FpZ0NBQ0FBS0FJQVJ3MEFJQUlvQWdRZ0FDZ0NCRWNOQUNBQ0tBSUlJQUFvQWdoR0lRRUxJQUVoQUNBRFFSQnFKQUFnQUFWQkFBc0xOd0VCZnlNQVFSQnJJZ01rQUNBQ0tBSUFFUHdDSVFJZ0FTZ0N4QUVoQVNBQUlBSTJBZ1FnQUNBQ0lBRndOZ0lBSUFOQkVHb2tBQXMzQVFGL0l3QkJFR3NpQXlRQUlBSW9BZ0FRd3dNaEFpQUJLQUxFQVNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBZ0EwRVFhaVFBQzZjQkFRVi9JQUlvQWpBaUF5QUJLQUlrSWdRZ0F5QUVTUnNoQmtFQUlRTURRQUpBSUFNZ0JrWU5BQ0FEUVFKMElnUWdBaWdDTEdvb0FnQW9BZ3dpQlJDQkRBUkFJQUFnQVNnQ0lDQUVhaWdDQUNBRkVKWUNJZ2RGRFFFZ0FTZ0NJQ0FFYWlBSE5nSUFDeUFGS0FJRVFiaXRFa2NFUUNBQUlBRW9BaUFnQkdvb0FnQVE0d0lpQlVVTkFTQUJLQUlnSUFScUlBVTJBZ0FMSUFOQkFXb2hBd3dCQ3dzZ0F5QUdUd3M2QVFGL1FSQVFGU0VFSUFBZ0FVRUlhallDQkNBQUlBUTJBZ0FnQkNBREtRSUFOd0lJSUFCQkFUb0FDQ0FFUVFBMkFnQWdCQ0FDTmdJRUN5Z0FJQUFnQVJCV0lnQWdBU2dDTERZQ0xDQUFJQUVwQWlRM0FpUWdBQ0FCS1FJY053SWNJQUFMK2dFQkJIOGdBU0FBS0FLSUEwc0VRQ0FBS0FLQUF5RUZRUXdoQWlBQUlRTWdBVUVNVHdSQVFYOGdBVUVGZENBQlFmLy8vejlMR3hBVklRTWdBU0VDQ3lBQUlBTTJBb0FESUFBZ0FqWUNpQU1EUUNBQUtBS0VBeUFFVFFSQUlBQWdCUkEyQlNBRVFRVjBJZ01nQUNnQ2dBTnFJZ0lnQXlBRmFpSURLUUlBTndJQUlBSWdBeWtDR0RjQ0dDQUNJQU1wQWhBM0FoQWdBaUFES1FJSU53SUlJQVJCQVdvaEJBd0JDd3NMSUFBb0FvUURJZ1FnQVNBQklBUkpHeUVEQTBBZ0F5QUVSZ1JBSUFBZ0FUWUNoQU1GSUFBb0FvQURJQVJCQlhScUlnSkNBRGNDR0NBQ1FRQTZBQlFnQWtFQU9nQUFJQVJCQVdvaEJBd0JDd3NMbHdjQkJIOGdBRUtBZ0lDQXdBQTNBaFFnQUNBQU5nSVFJd0JCTUdzaUF5UUFJQUFnQWlnQ0ZCRFdBaUFEUVFBMkFpZ2dBeUFDTmdJa0lBTWdBVUhJSUdvMkFpQWdBeUFCUWR5QUFXb29BZ0JCQVdzMkFpd0NRQ0FEUVNCcUVMVUJCRUFnQTBFZ2FoQmFJZ1VvQXRnQklnUWdCU2dDM0FGQkdHeHFJUVVEUUNBRUlBVkdCRUFnQWlnQ0VDSUZJQUlvQWhSQkFuUnFJUUlEUUNBQ0lBVkdCRUFnQTBFZ2FoQmFJZ0lvQXNnQ0lnUWdBaWdDekFKQkdHeHFJUUlEUUNBQ0lBUkdEUVlnQXlBQklBUVFaaENFQWpZQ0VDQUFJQU5CRUdvUWNTQUVRUmhxSVFRTUFBc0FDeUFESUFOQklHb1FXaUlFUWRnQ2FqWUNFQ0FGS0FJQUlRWWdBMEVBTmdJWUlBTWdCallDRkNBRElBUkJuQWxxS0FJQVFRRnJOZ0ljQWtBZ0EwRVFhaEMwQVVVTkFDQURRUkJxRUt3QklnWW9BbUFpQkNBR0tBSmtRUmhzYWlFR0EwQWdCQ0FHUmcwQklBTWdBU0FFRUdZUWhBSTJBZ3dnQUNBRFFReHFFSEVnQkVFWWFpRUVEQUFMQUFzZ0EwRWdhaEJhSVFRZ0F5QUZLQUlBTmdJUUlBUWdBMEVRYWhER0EwVUVRQ0FESUFFZ0JTZ0NBQkR3QlRZQ0VDQUFJQU5CRUdvUWNRc2dBeUFEUVNCcUVGb2lCRUdnQ1dvMkFoQWdCU2dDQUNFR0lBTkJBRFlDR0NBRElBWTJBaFFnQXlBRVFlUVBhaWdDQUVFQmF6WUNIQUpBSUFOQkVHb1F0QUZGRFFBZ0EwRVFhaENzQVNJR0tBSmdJZ1FnQmlnQ1pFRVliR29oQmdOQUlBUWdCa1lOQVNBRElBRWdCQkJtRUlRQ05nSU1JQUFnQTBFTWFoQnhJQVJCR0dvaEJBd0FDd0FMSUFWQkJHb2hCUXdBQ3dBRklBTWdBU0FFRUdZUWhBSTJBaEFnQUNBRFFSQnFFSEVnQkVFWWFpRUVEQUVMQUFzQUN5QUNLQUlRSWdVZ0FpZ0NGRUVDZEdvaEFnTkFJQUlnQlVZRVFDQURRU0JxRUxVQlJRMENJQU5CSUdvUVdpSUNLQUxJQWlJRUlBSW9Bc3dDUVJoc2FpRUNBMEFnQWlBRVJnMERJQU1nQVNBRUVHWVFoQUkyQWhBZ0FDQURRUkJxRUhFZ0JFRVlhaUVFREFBTEFBVWdBeUFCSUFVb0FnQVE4QVUyQWhBZ0FDQURRUkJxRUhFQ1FDQURRU0JxRUxVQlJRMEFJQU1nQTBFZ2FoQmFJZ1JCb0FscU5nSVFJQVVvQWdBaEJpQURRUUEyQWhnZ0F5QUdOZ0lVSUFNZ0JFSGtEMm9vQWdCQkFXczJBaHdnQTBFUWFoQzBBVVVOQUNBRFFSQnFFS3dCSWdZb0FtQWlCQ0FHS0FKa1FSaHNhaUVHQTBBZ0JDQUdSZzBCSUFNZ0FTQUVFR1lRaEFJMkFnd2dBQ0FEUVF4cUVIRWdCRUVZYWlFRURBQUxBQXNnQlVFRWFpRUZEQUVMQUFzQUN5QURRVEJxSkFBTG53RUNBWDhCZmlNQVFTQnJJZ01rQUNBRElBSTJBaHdnQXlBQUtBS2dDaUFBUWFRS2FpZ0NBRUdrQVd4cVFhUUJheUlBTmdJSUlBRXBBZ0FoQkNBRFFRQTJBaFFnQXlBRU53SU1JQU1nQUNnQ29BRkJBV3MyQWhnQ1FDQURRUWhxRVBNZEJFQWdBeUFEUVFocUVNb1FJZ0FvQWdBMkFod2dBQ0FDTmdJQUlBTW9BaHdhREFFTElBTkJDR29nQUNBQklBTkJIR29ROGgwTElBTkJJR29rQUF0ZkFRUi9JQUVnQUNnQ0dFc0VRQ0FBS0FJUUlRSWdBQ0FCRU1FSklBQW9BaFFoQXlBQUtBSVFJUVJCQUNFQkEwQWdBU0FEUmdSQUlBQWdBaEEyQlNBRUlBRkJBblFpQldvZ0FpQUZhaWdDQURZQ0FDQUJRUUZxSVFFTUFRc0xDd3VaQVFFRWZ5QUFFQndqQUVFd2F5SUNKQUFnQWtFUWFpQUJLQUlBRUxzTElnTW9BZ2doQkNBQ0lBTTJBZ3dnQWlBRU5nSUlBa0FnQUVFUWFpSURRUnhxSWdVZ0FrRUlhaEM5QVNJQUJFQWdBQ2dDRENFQURBRUxJQU1nQXhDbEJDQUJLQUlBRUxzTElnQVFLQ0FESUFNb0FoaEJBV28yQWhnZ0FpQUFOZ0lNSUFJZ0JEWUNDQ0FGSUFKQkNHb1F2QUVMSUFKQk1Hb2tBQ0FBQy84REFRbC9Jd0JCRUdzaUJTUUFJQVVnQVRZQ0RDQUFLQUlFSVFFQ1FDQUFLQUlBUVFKQkFCQ29CU0lHUlEwQUlBRWdCaWdDVENnQ0FDSUNOZ0w0T1NBQlFZUTZha0tSZ0lDQWtBSTNBZ0FnQVVHQU9tcEI0SWNTTmdJQUlBRkIvRGxxUVpyNkFEWUNBQ0FCUWFnZGFpRUhJQUVnQWhDcUJTRURJd0JCRUdzaUFpUUFBa0FnQTBVTkFDQURRUUFnQXdSL0lBTW9BZ1FRNEIwRlFRQUxHeUlFRFFBZ0FrRU1OZ0lNSUFKQm12b0FOZ0lJSUFJZ0Fpa0RDRGNEQUNBSElBTWdBaENtQlVFQUlRUUxJQUpCRUdva0FDQUVJZ0pGRFFBZ0FTQUdLQUpNS0FJRUVOOFFJZ05GRFFBZ0FpZ0NFQ0VFSUFFb0FnQWlCaEFjSUFVZ0JDQUdRUkJxRUxVYk5nSUlJQUFvQWdnaEJDQUZJQUlvQWhBMkFnUWdCU0FES0FJUU5nSUFJQVFnQlVFTWFpQUZRUVJxSUFVZ0JVRUlhaENqSHlJRUlRcEJBQ0VKSUFGQnJCMXFJUUlnQUNnQ0RDZ0NBRUVRYWlFREl3QkJFR3NpQVNRQUFuOENRQUpBQWtBQ1FDQUVLQUlnRGdRQUFRRUNBUXNnQWlBQlFjLzZBaEFVSWdBZ0F4QW5EQUlMSUFJZ0FVSDIrZ0lRRkNJQUlBTVFKd3dCQ3lBRUtBSVlRUVJQQkVBZ0FpQUJRWXJ4QkJBVUlnQWdBeEFuREFFTFFRRWdCQ2dDSEVFQmEwRVJTUTBCR2lBQ0lBRkJ1WXNCRUJRaUFDQURFQ2NMSUFBUUR4cEJBQXNoQUNBQlFSQnFKQUFnQ2lBSklBQWJJUWdMSUFWQkVHb2tBQ0FJQzFRQkFYOGpBRUVRYXlJREpBQWdBMEVJYWlBQklBSVF5QkFnQUFKL0lBTXRBQWdFUUNBQUlBRW9BdkFCSUFNb0FneEJGR3hxS0FJRU5nSUFRUUVNQVFzZ0FFRUFPZ0FBUVFBTE9nQUVJQU5CRUdva0FBdjZBZ0VDZnlNQVFjQUJheUlHSkFBZ0JpQUNOZ0t3QVNBR0lBRTJBcmdCSUFBZ0JpZ0N1QUVnQmlnQ3NBRWdBeERsQkNJQVFianpEellDQkNBQVFlenpEellDQUNBQVFkanpEellDQUNBQVFTUnFJQVFRdndrZ0FFSFFBR29pQVVLQWdJQ0F3QUEzQWhRZ0FTQUJOZ0lRSUFFZ0JTZ0NBQkNsRENBQUtBSkVJZ0lnQUNnQ1NFRUNkR29oQVNBR1FSaHFJUU1EUUFKQUlBRWdBa1lFUUNBQUtBSmdJZ0lnQUNnQ1pFRUNkR29oQVNBR1FSaHFJUU1EUUNBQklBSkdEUUlnQWlnQ0FDSUVSUVJBSUFaQnA1SUZRU0pCQUNBR1FhQUJhaEFkSWdVUUZ5RUhJQU5CbWFjSUVBNGFJQWNRR0NBRkVCNExJQVFRVnlBQUtBSUlRUUZCQUVIZHhBaEJwNUlGUVNNUVN5QUNRUVJxSVFJTUFBc0FDeUFDS0FJQUlnUkZCRUFnQmtHbmtnVkJIa0VBSUFaQm9BRnFFQjBpQlJBWElRY2dBMEhxblFnUURob2dCeEFZSUFVUUhnc2dCQkJYSUFBb0FnaEJBVUVBUWFYQ0NFR25rZ1ZCSHhCTElBSkJCR29oQWd3QkN3c2dCa0hBQVdva0FDQUFDeUVBSUFBUVhDSUFCSDhnQUFSL0lBQW9BZ1FRZ0FZRlFRQUxRUUZ6QlVFQUN3dDNBUVYvSUFBb0FnQWlBaWdDZ0FJaUF5QUFLQUlNUmdSQUlBQW9BZ2dQQ3lNQVFSQnJJZ0VrQUNBQlFRaHFJQUlnQUVFRWFoRElFQ0FCS0FJTUlRUWdBaWdDOEFFaEFpQUJMUUFJSVFVZ0FVRVFhaVFBSUFJZ0JFRVViR3BCQkdwQkFDQUZHeUVCSUFBZ0F6WUNEQ0FBSUFFMkFnZ2dBUXZ3bFFJQ00zOEJmaU1BUVNCckloSWtBQ0FTSUFFMkFnd2dFaUFBTmdJQUlCSWdFa0VNYWpZQ0JBSi9Ba0FDUUNBQlJRMEFJQUVvQWdRaUFrRzQ4dzlHQkVBZ0FDQUJFSmNlREFNTElBSkIySVFTUmdSQUl3QkJrQUZySWdJa0FDQUNJQUUyQW13Z0FDZ0NBQ0lCRUJ3Z0FVR29BV29pQkNFZElBUVE4UVVoQXlBQ0tBSnNJUVlnQUVHUU5Hb2lCeWdDQUNFRklBQkJpRFJxSWdzb0FnQWhDU01BUVJCcklnRWtBQ0FCSUFVMkFnZ2dBU0FHTmdJTUlBRWdDVFlDQkNBRElBRW9BZ3dnQVNnQ0NDQUJLQUlFRU93RklnTkJrSklTTmdJRUlBTkJ3SklTTmdJQUlBTkJBRFlDN0FJZ0EwR3draEkyQWdBZ0FVRVFhaVFBSUIwZ0F4QW9JQVFnQkNnQ0dFRUJhallDR0NBQ0tBSnNJUVFnQUNnQ0FDSUJFQndnQVVIa0FXb2dCQ0FERUxrQklBQkJ1QjFxSWdrUWpRSWdBRUdzSFdvaEJnSkFBa0FDUUNBRVJRMEFBa0FnQkNnQ0JDSUJRYmp6RDBZRVFDQUVRZUFBYWlJSUtBSUFJZ0VnQkNnQ1pFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVEWUNoQUVnQWtHRGh3RTJBb0FCSUFJZ0Fpa0RnQUUzQXpnZ0FDQUZJQUpCT0dvUVFBd0VDeUFDUVFBNkFIUWdBaUFJTmdKd0lBWWdBa0h3QUdvUVFRMEJEQU1MSUFGQjJJUVNSZ1JBSUFSQk9Hb2lDQ2dDQUNJQklBUW9BanhCQW5ScUlRb0NRQU5BSUFFZ0NrWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTQyQW9RQklBSkI1SVlCTmdLQUFTQUNJQUlwQTRBQk53TkFJQUFnQlNBQ1FVQnJFRUFNQkFzZ0FrRUFPZ0IwSUFJZ0NEWUNjQ0FHSUFKQjhBQnFFRUZGRFFNTUFRc2dBVUc0OEE5R0JFQWdCRUUwYWlJSUtBSUFJZ0VnQkNnQ09FRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkRUWUNoQUVnQWtHbWh3RTJBb0FCSUFJZ0Fpa0RnQUUzQTBnZ0FDQUZJQUpCeUFCcUVFQU1CQXNnQWtFQU9nQjBJQUlnQ0RZQ2NDQUdJQUpCOEFCcUVFRkZEUU1NQVFzZ0FVSDQ4QTlHQkVBZ0JFRXdhaUlJS0FJQUlnRWdCQ2dDTkVFQ2RHb2hDZ0pBQTBBZ0FTQUtSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRHpZQ2hBRWdBa0h6aGdFMkFvQUJJQUlnQWlrRGdBRTNBMUFnQUNBRklBSkIwQUJxRUVBTUJBc2dBa0VBT2dCMElBSWdDRFlDY0NBR0lBSkI4QUJxRUVGRkRRTU1BUXNnQVVINDhROUdCRUFnQkVISUFHb2lDQ2dDQUNJQklBUW9Ba3hCQW5ScUlRb0NRQU5BSUFFZ0NrWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUkUyQW9RQklBSkJsSWNCTmdLQUFTQUNJQUlwQTRBQk53TllJQUFnQlNBQ1FkZ0FhaEJBREFRTElBSkJBRG9BZENBQ0lBZzJBbkFnQmlBQ1FmQUFhaEJCUlEwRERBRUxJQUZCaUlVU1J3MEJJQVJCTUdvaUNDZ0NBQ0lCSUFRb0FqUkJBblJxSVFvQ1FBTkFJQUVnQ2tZTkFTQUFJQUVvQWdBaUJSQXpHZ0pBSUFWRkRRQWdCU2dDQkVHUWdoSkhEUUFnQUNBRlFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBQ1FSQTJBb1FCSUFKQnRJY0JOZ0tBQVNBQ0lBSXBBNEFCTndOZ0lBQWdCU0FDUWVBQWFoQkFEQU1MSUFKQkFEb0FkQ0FDSUFnMkFuQWdCaUFDUWZBQWFoQkJSUTBDQ3lBQUlBTVFqQUlMSUFBb0FvdzBJUWdnQUNBRE5nS01OQ0FBSUFNZ0FDZ0NrRFFpQ2lBREd6WUNrRFFnQUNBQUtBS1VOQ0lOUVFGcUlnRTJBcFEwQW44Q1FDQUJRWUFCVHdSQUlBSkI4QUJxSWdGQi93QVFYeUFDUVlBQmFpSURRYWFzQ2lBQkVEVWdBQ0FESUFSQkVHb1FKeUFERUE4YUlBRVFEeG9NQVFzZ0FpZ0NiQ0lCS0FJa0lnUUVRQ0FBSUFRUU14b2dBQ0FFRUlNTUlnRkZEUUVnQXlBREtRTVlJQUVwQXhpRU53TVlJQUlvQW13aEFRc2dBU2dDS0NJRUJFQWdBQ0FBSUFRUWhRSVE0d0lpQVVVTkFTQURJQUUyQXV3Q0lBTWdBeWtER0NBQktRTWdoRGNER0NBQ0tBSnNJUUVMSUFBZ0FTZ0NMQ0lFQkg4Z0FDQUVFRE1hSUFBZ0JCQ0REQ0lCUlEwQklBTWdBeWtER0NBQktRTVloRGNER0NBQ0tBSnNCU0FCQ3lnQ01CQXpHaUFBS0FJQUlBSW9BbXhCTUdvZ0J5QUxFTm9RSVFVZ0FpZ0NiQ2dDTUNFRUlBQW9BZ0FpQVJBY0lBRkI1QUZxSUFRZ0JSQzVBU0FKRUkwQ0FrQUNRQUpBSUFSRkRRQUNRQ0FFS0FJRUlnRkJ1UE1QUmdSQUlBUkI0QUJxSWdzb0FnQWlBU0FFS0FKa1FRSjBhaUVNQWtBRFFDQUJJQXhHRFFFZ0FDQUJLQUlBSWdjUU14b0NRQ0FIUlEwQUlBY29BZ1JCa0lJU1J3MEFJQUFnQjBFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUU5nS0VBU0FDUVlPSEFUWUNnQUVnQWlBQ0tRT0FBVGNEQ0NBQUlBY2dBa0VJYWhCQURBUUxJQUpCQURvQWRDQUNJQXMyQW5BZ0JpQUNRZkFBYWhCQkRRRU1Bd3NnQVVIWWhCSkdCRUFnQkVFNGFpSUxLQUlBSWdFZ0JDZ0NQRUVDZEdvaERBSkFBMEFnQVNBTVJnMEJJQUFnQVNnQ0FDSUhFRE1hQWtBZ0IwVU5BQ0FIS0FJRVFaQ0NFa2NOQUNBQUlBZEJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEallDaEFFZ0FrSGtoZ0UyQW9BQklBSWdBaWtEZ0FFM0F4QWdBQ0FISUFKQkVHb1FRQXdFQ3lBQ1FRQTZBSFFnQWlBTE5nSndJQVlnQWtId0FHb1FRVVVOQXd3QkN5QUJRYmp3RDBZRVFDQUVRVFJxSWdzb0FnQWlBU0FFS0FJNFFRSjBhaUVNQWtBRFFDQUJJQXhHRFFFZ0FDQUJLQUlBSWdjUU14b0NRQ0FIUlEwQUlBY29BZ1JCa0lJU1J3MEFJQUFnQjBFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFTk5nS0VBU0FDUWFhSEFUWUNnQUVnQWlBQ0tRT0FBVGNER0NBQUlBY2dBa0VZYWhCQURBUUxJQUpCQURvQWRDQUNJQXMyQW5BZ0JpQUNRZkFBYWhCQlJRMEREQUVMSUFGQitQQVBSZ1JBSUFSQk1Hb2lDeWdDQUNJQklBUW9BalJCQW5ScUlRd0NRQU5BSUFFZ0RFWU5BU0FBSUFFb0FnQWlCeEF6R2dKQUlBZEZEUUFnQnlnQ0JFR1FnaEpIRFFBZ0FDQUhRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTgyQW9RQklBSkI4NFlCTmdLQUFTQUNJQUlwQTRBQk53TWdJQUFnQnlBQ1FTQnFFRUFNQkFzZ0FrRUFPZ0IwSUFJZ0N6WUNjQ0FHSUFKQjhBQnFFRUZGRFFNTUFRc2dBVUg0OFE5R0JFQWdCRUhJQUdvaUN5Z0NBQ0lCSUFRb0FreEJBblJxSVF3Q1FBTkFJQUVnREVZTkFTQUFJQUVvQWdBaUJ4QXpHZ0pBSUFkRkRRQWdCeWdDQkVHUWdoSkhEUUFnQUNBSFFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBQ1FSRTJBb1FCSUFKQmxJY0JOZ0tBQVNBQ0lBSXBBNEFCTndNb0lBQWdCeUFDUVNocUVFQU1CQXNnQWtFQU9nQjBJQUlnQ3pZQ2NDQUdJQUpCOEFCcUVFRkZEUU1NQVFzZ0FVR0loUkpIRFFFZ0JFRXdhaUlMS0FJQUlnRWdCQ2dDTkVFQ2RHb2hEQUpBQTBBZ0FTQU1SZzBCSUFBZ0FTZ0NBQ0lIRURNYUFrQWdCMFVOQUNBSEtBSUVRWkNDRWtjTkFDQUFJQWRCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRURZQ2hBRWdBa0cwaHdFMkFvQUJJQUlnQWlrRGdBRTNBekFnQUNBSElBSkJNR29RUUF3REN5QUNRUUE2QUhRZ0FpQUxOZ0p3SUFZZ0FrSHdBR29RUVVVTkFnc2dBQ0FGRUl3Q0N5QUFLQUtNTkNFTElBQWdCVFlDakRRZ0FDQUZJQUFvQXBBMElnd2dCUnMyQXBBMElBQWdBQ2dDbERRaURrRUJhaUlCTmdLVU5BSi9JQUZCZ0FGUEJFQWdBa0h3QUdvaUFVSC9BQkJmSUFKQmdBRnFJZ2RCcHF3S0lBRVFOU0FBSUFjZ0JFRVFhaEFuSUFjUUR4b2dBUkFQR2tFQURBRUxJQUlnQWlnQ2JDZ0NNRUhFQUdvMkFvQUJJQUpCQURvQWhBRWdCVUVBSUFBZ0FrR0FBV29RMmdZYkN5RUJJQUFnRERZQ2tEUWdBQ0FPTmdLVU5DQUFJQXMyQW93MERBRUxRUUFoQVFzZ0NSQ0xBaUFCUlEwQUlBTWdBeWtER0NBRktRTVloQ0kxTndNWUlBTWdOVUp4ZzBJSUlEVkNBb05DQW9ZZ0FpZ0NiQ2dDS0J1RU53TVlJQU1oTFVFQUlSNGpBRUV3YXlJQkpBQUNRQUpBSUFNcEF4aFFCRUFnQVVFZ2FrSHM1QUFRRkNFRUlBTW9BZ2dpQXlrQ0VDRTFJQUVnQXlnQ0lEWUNHQ0FCSURVM0F4QWdBU0ExTndNSUlBWWdCQ0FCUVFocUVDY01BUXRCQVNFRUlBTW9BdXdDSWdWRkRRRWdCU2dDRkJDRUFTSUZLQUlFUWRDbEVrWU5BU0FCUVNCcUlnUWdCaWdDQ0NBRkVLY0JJQUZCQ0dvaUJVRzB5QWtnQkJBMUlBWWdCU0FES0FMc0FpZ0NDRUVRYWhBbklBVVFEeG9MSUFRUUR4cEJBQ0VFQ3lBQlFUQnFKQUFnTFNBZUlBUWJEQUVMUVFBTElRRWdBQ0FLTmdLUU5DQUFJQTAyQXBRMElBQWdDRFlDakRRTUFRdEJBQ0VCQ3lBSkVJc0NJQUpCa0FGcUpBQWdBUXdEQ3lBQ1FmandEMFlFUUNNQVFjQUJheUlESkFBZ0F5QUJOZ0tVQVNBQUtBSUFJZ0VRSENBQlFhZ0JhaUlFSVI4Z0JCRHhCU0VDSUFNb0FwUUJJUVlnQUVHUU5Hb2lDU2dDQUNFRklBQkJpRFJxSWdvb0FnQWhCeU1BUWNBQmF5SUJKQUFnQVNBRk5nSzRBU0FCSUFZMkFyd0JJQUVnQnpZQ3RBRWdBaUFCS0FLOEFTQUJLQUs0QVNBQktBSzBBUkRzQlNJQ1FlQ1VFallDQkNBQ1FiaVZFallDQUNBQ1FaaVZFallDQUNBQktBSzRBVVVFUUNBQlFkeVBCVUVkUVFrZ0FVR2dBV29RSFNJR0VCY2lCVUVZYWtHSm5RZ1FEaG9nQlJBWUlBWVFIZ3NnQVNnQ3RBRkZCRUFnQVVIY2p3VkJIa0VKSUFGQm9BRnFFQjBpQmhBWElnVkJHR3BCekxFSUVBNGFJQVVRR0NBR0VCNExJQUZCd0FGcUpBQWdIeUFDRUNnZ0JDQUVLQUlZUVFGcU5nSVlJQU1vQXBRQklRUWdBQ2dDQUNJQkVCd2dBVUhrQVdvZ0JDQUNFTGtCSUFCQnVCMXFJZ3NRalFJZ0FFR3NIV29oQmdKQUFrQUNRQ0FFUlEwQUFrQWdCQ2dDQkNJQlFianpEMFlFUUNBRVFlQUFhaUlIS0FJQUlnRWdCQ2dDWkVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRURZQ3RBRWdBMEdEaHdFMkFyQUJJQU1nQXlrRHNBRTNBMkFnQUNBRklBTkI0QUJxRUVBTUJBc2dBMEVBT2dDa0FTQURJQWMyQXFBQklBWWdBMEdnQVdvUVFRMEJEQU1MSUFGQjJJUVNSZ1JBSUFSQk9Hb2lCeWdDQUNJQklBUW9BanhCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QURRUTQyQXJRQklBTkI1SVlCTmdLd0FTQURJQU1wQTdBQk53Tm9JQUFnQlNBRFFlZ0FhaEJBREFRTElBTkJBRG9BcEFFZ0F5QUhOZ0tnQVNBR0lBTkJvQUZxRUVGRkRRTU1BUXNnQVVHNDhBOUdCRUFnQkVFMGFpSUhLQUlBSWdFZ0JDZ0NPRUVDZEdvaENBSkFBMEFnQVNBSVJnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBTkJEVFlDdEFFZ0EwR21od0UyQXJBQklBTWdBeWtEc0FFM0EzQWdBQ0FGSUFOQjhBQnFFRUFNQkFzZ0EwRUFPZ0NrQVNBRElBYzJBcUFCSUFZZ0EwR2dBV29RUVVVTkF3d0JDeUFCUWZqd0QwWUVRQ0FFUVRCcUlnY29BZ0FpQVNBRUtBSTBRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVBOZ0swQVNBRFFmT0dBVFlDc0FFZ0F5QURLUU93QVRjRGVDQUFJQVVnQTBINEFHb1FRQXdFQ3lBRFFRQTZBS1FCSUFNZ0J6WUNvQUVnQmlBRFFhQUJhaEJCUlEwRERBRUxJQUZCK1BFUFJnUkFJQVJCeUFCcUlnY29BZ0FpQVNBRUtBSk1RUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVJOZ0swQVNBRFFaU0hBVFlDc0FFZ0F5QURLUU93QVRjRGdBRWdBQ0FGSUFOQmdBRnFFRUFNQkFzZ0EwRUFPZ0NrQVNBRElBYzJBcUFCSUFZZ0EwR2dBV29RUVVVTkF3d0JDeUFCUVlpRkVrY05BU0FFUVRCcUlnY29BZ0FpQVNBRUtBSTBRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVFOZ0swQVNBRFFiU0hBVFlDc0FFZ0F5QURLUU93QVRjRGlBRWdBQ0FGSUFOQmlBRnFFRUFNQXdzZ0EwRUFPZ0NrQVNBRElBYzJBcUFCSUFZZ0EwR2dBV29RUVVVTkFnc2dBQ0FDRUl3Q0N5QUFLQUtNTkNFTklBQWdBallDakRRZ0FDQUNJQUFvQXBBMElnd2dBaHMyQXBBMElBQWdBQ2dDbERRaURrRUJhaUlCTmdLVU5BSi9JQUZCZ0FGUEJFQWdBMEdnQVdvaUFVSC9BQkJmSUFOQnNBRnFJZ0pCcHF3S0lBRVFOU0FBSUFJZ0JFRVFhaEFuSUFJUUR4b2dBUkFQR2tFQURBRUxJQUFnQXlnQ2xBRW9BaVFRTXhvZ0FDZ0NBQ0FES0FLVUFVRWthaUFKSUFvUTJoQWhCeUFES0FLVUFTZ0NKQ0VFSUFBb0FnQWlBUkFjSUFGQjVBRnFJQVFnQnhDNUFTQUxFSTBDQWtBQ1FBSkFJQVJGRFFBQ1FDQUVLQUlFSWdGQnVQTVBSZ1JBSUFSQjRBQnFJZ2dvQWdBaUFTQUVLQUprUVFKMGFpRVBBa0FEUUNBQklBOUdEUUVnQUNBQktBSUFJZ1VRTXhvQ1FDQUZSUTBBSUFVb0FnUkJrSUlTUncwQUlBQWdCVUVrYWhCRElBRkJCR29oQVF3QkN3c2dBMEVRTmdLMEFTQURRWU9IQVRZQ3NBRWdBeUFES1FPd0FUY0RNQ0FBSUFVZ0EwRXdhaEJBREFRTElBTkJBRG9BcEFFZ0F5QUlOZ0tnQVNBR0lBTkJvQUZxRUVFTkFRd0RDeUFCUWRpRUVrWUVRQ0FFUVRocUlnZ29BZ0FpQVNBRUtBSThRUUowYWlFUEFrQURRQ0FCSUE5R0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRU9OZ0swQVNBRFFlU0dBVFlDc0FFZ0F5QURLUU93QVRjRE9DQUFJQVVnQTBFNGFoQkFEQVFMSUFOQkFEb0FwQUVnQXlBSU5nS2dBU0FHSUFOQm9BRnFFRUZGRFFNTUFRc2dBVUc0OEE5R0JFQWdCRUUwYWlJSUtBSUFJZ0VnQkNnQ09FRUNkR29oRHdKQUEwQWdBU0FQUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFOQkRUWUN0QUVnQTBHbWh3RTJBckFCSUFNZ0F5a0RzQUUzQTBBZ0FDQUZJQU5CUUdzUVFBd0VDeUFEUVFBNkFLUUJJQU1nQ0RZQ29BRWdCaUFEUWFBQmFoQkJSUTBEREFFTElBRkIrUEFQUmdSQUlBUkJNR29pQ0NnQ0FDSUJJQVFvQWpSQkFuUnFJUThDUUFOQUlBRWdEMFlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVE4MkFyUUJJQU5CODRZQk5nS3dBU0FESUFNcEE3QUJOd05JSUFBZ0JTQURRY2dBYWhCQURBUUxJQU5CQURvQXBBRWdBeUFJTmdLZ0FTQUdJQU5Cb0FGcUVFRkZEUU1NQVFzZ0FVSDQ4UTlHQkVBZ0JFSElBR29pQ0NnQ0FDSUJJQVFvQWt4QkFuUnFJUThDUUFOQUlBRWdEMFlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVJFMkFyUUJJQU5CbEljQk5nS3dBU0FESUFNcEE3QUJOd05RSUFBZ0JTQURRZEFBYWhCQURBUUxJQU5CQURvQXBBRWdBeUFJTmdLZ0FTQUdJQU5Cb0FGcUVFRkZEUU1NQVFzZ0FVR0loUkpIRFFFZ0JFRXdhaUlJS0FJQUlnRWdCQ2dDTkVFQ2RHb2hEd0pBQTBBZ0FTQVBSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRURZQ3RBRWdBMEcwaHdFMkFyQUJJQU1nQXlrRHNBRTNBMWdnQUNBRklBTkIyQUJxRUVBTUF3c2dBMEVBT2dDa0FTQURJQWcyQXFBQklBWWdBMEdnQVdvUVFVVU5BZ3NnQUNBSEVJd0NDeUFBS0FLTU5DRVBJQUFnQnpZQ2pEUWdBQ0FISUFBb0FwQTBJaEVnQnhzMkFwQTBJQUFnQUNnQ2xEUWlFMEVCYWlJQk5nS1VOQUpBSUFGQmdBRlBCRUFnQTBHZ0FXb2lBVUgvQUJCZklBTkJzQUZxSWdaQnBxd0tJQUVRTlNBQUlBWWdCRUVRYWhBbklBWVFEeG9nQVJBUEdrRUFJUUVNQVFzZ0F5Z0NsQUVvQWlRaEJFRUFJUUVnQTBFQU9nQ2NBU0FESUFSQnhBQnFOZ0tZQVNBQUlBTkJtQUZxRU5vR1JRMEFJQUlnQnlrREdDSTFOd01ZSUFNb0FwUUJLQUlvSWdRRVFDQUFJQVFRTXhvZ0F5Z0NsQUVpQkNnQ0tDRUZJQUFvQWdBaUNCQWNJQWhCcUFGcUlnZ2hJQ0FJRVBFRklSQWdCQ2dDS0NFVUlBa29BZ0FoQ1NBS0tBSUFJUW9qQUVIQUFXc2lCQ1FBSUFRZ0NUWUN1QUVnQkNBVU5nSzhBU0FFSUFvMkFyUUJJQkFnQkNnQ3ZBRWdCQ2dDdUFFZ0JDZ0N0QUVRMXdzaUNVSDRsQkkyQWdRZ0NVSElsUkkyQWdBZ0NVR29sUkkyQWdBZ0JDZ0N1QUZGQkVBZ0JFSGNqd1ZCSjBFSklBUkJvQUZxRUIwaUNoQVhJaEJCR0dwQmlaMElFQTRhSUJBUUdDQUtFQjRMSUFRb0FyUUJSUVJBSUFSQjNJOEZRU2hCQ1NBRVFhQUJhaEFkSWdvUUZ5SVFRUmhxUWN5eENCQU9HaUFRRUJnZ0NoQWVDeUFFUWNBQmFpUUFJQ0FnQ1JBb0lBZ2dDQ2dDR0VFQmFqWUNHQ0FBS0FJQUlnUVFIQ0FFUWVRQmFpQUZJQWtRdVFFZ0N4Q05BZ0pBQWtBQ1FDQUZSUTBBQWtBZ0JTZ0NCQ0lFUWJqekQwWUVRQ0FGUWVBQWFpSUtLQUlBSWdRZ0JTZ0NaRUVDZEdvaEVBSkFBMEFnQkNBUVJnMEJJQUFnQkNnQ0FDSUlFRE1hQWtBZ0NFVU5BQ0FJS0FJRVFaQ0NFa2NOQUNBQUlBaEJKR29RUXlBRVFRUnFJUVFNQVFzTElBTkJFRFlDdEFFZ0EwR0Rod0UyQXJBQklBTWdBeWtEc0FFM0F3QWdBQ0FJSUFNUVFBd0VDeUFEUVFBNkFLUUJJQU1nQ2pZQ29BRWdCaUFEUWFBQmFoQkJEUUVNQXdzZ0JFSFloQkpHQkVBZ0JVRTRhaUlLS0FJQUlnUWdCU2dDUEVFQ2RHb2hFQUpBQTBBZ0JDQVFSZzBCSUFBZ0JDZ0NBQ0lJRURNYUFrQWdDRVVOQUNBSUtBSUVRWkNDRWtjTkFDQUFJQWhCSkdvUVF5QUVRUVJxSVFRTUFRc0xJQU5CRGpZQ3RBRWdBMEhraGdFMkFyQUJJQU1nQXlrRHNBRTNBd2dnQUNBSUlBTkJDR29RUUF3RUN5QURRUUE2QUtRQklBTWdDallDb0FFZ0JpQURRYUFCYWhCQlJRMEREQUVMSUFSQnVQQVBSZ1JBSUFWQk5Hb2lDaWdDQUNJRUlBVW9BamhCQW5ScUlSQUNRQU5BSUFRZ0VFWU5BU0FBSUFRb0FnQWlDQkF6R2dKQUlBaEZEUUFnQ0NnQ0JFR1FnaEpIRFFBZ0FDQUlRU1JxRUVNZ0JFRUVhaUVFREFFTEN5QURRUTAyQXJRQklBTkJwb2NCTmdLd0FTQURJQU1wQTdBQk53TVFJQUFnQ0NBRFFSQnFFRUFNQkFzZ0EwRUFPZ0NrQVNBRElBbzJBcUFCSUFZZ0EwR2dBV29RUVVVTkF3d0JDeUFFUWZqd0QwWUVRQ0FGUVRCcUlnb29BZ0FpQkNBRktBSTBRUUowYWlFUUFrQURRQ0FFSUJCR0RRRWdBQ0FFS0FJQUlnZ1FNeG9DUUNBSVJRMEFJQWdvQWdSQmtJSVNSdzBBSUFBZ0NFRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0EwRVBOZ0swQVNBRFFmT0dBVFlDc0FFZ0F5QURLUU93QVRjREdDQUFJQWdnQTBFWWFoQkFEQVFMSUFOQkFEb0FwQUVnQXlBS05nS2dBU0FHSUFOQm9BRnFFRUZGRFFNTUFRc2dCRUg0OFE5R0JFQWdCVUhJQUdvaUNpZ0NBQ0lFSUFVb0FreEJBblJxSVJBQ1FBTkFJQVFnRUVZTkFTQUFJQVFvQWdBaUNCQXpHZ0pBSUFoRkRRQWdDQ2dDQkVHUWdoSkhEUUFnQUNBSVFTUnFFRU1nQkVFRWFpRUVEQUVMQ3lBRFFSRTJBclFCSUFOQmxJY0JOZ0t3QVNBRElBTXBBN0FCTndNZ0lBQWdDQ0FEUVNCcUVFQU1CQXNnQTBFQU9nQ2tBU0FESUFvMkFxQUJJQVlnQTBHZ0FXb1FRVVVOQXd3QkN5QUVRWWlGRWtjTkFTQUZRVEJxSWdvb0FnQWlCQ0FGS0FJMFFRSjBhaUVRQWtBRFFDQUVJQkJHRFFFZ0FDQUVLQUlBSWdnUU14b0NRQ0FJUlEwQUlBZ29BZ1JCa0lJU1J3MEFJQUFnQ0VFa2FoQkRJQVJCQkdvaEJBd0JDd3NnQTBFUU5nSzBBU0FEUWJTSEFUWUNzQUVnQXlBREtRT3dBVGNES0NBQUlBZ2dBMEVvYWhCQURBTUxJQU5CQURvQXBBRWdBeUFLTmdLZ0FTQUdJQU5Cb0FGcUVFRkZEUUlMSUFBZ0NSQ01BZ3NnQUNnQ2pEUWhDQ0FBSUFrMkFvdzBJQUFnQ1NBQUtBS1FOQ0lLSUFrYk5nS1FOQ0FBSUFBb0FwUTBJaEJCQVdvaUJEWUNsRFFDZnlBRVFZQUJUd1JBSUFOQm9BRnFJZ1JCL3dBUVh5QURRYkFCYWlJSlFhYXNDaUFFRURVZ0FDQUpJQVZCRUdvUUp5QUpFQThhSUFRUUR4cEJBQXdCQ3lBRElBTW9BcFFCS0FJb1FjUUFhallDc0FFZ0EwRUFPZ0MwQVNBSlFRQWdBQ0FEUWJBQmFoRGFCaHNMSVFRZ0FDQUtOZ0tRTkNBQUlCQTJBcFEwSUFBZ0NEWUNqRFFNQVF0QkFDRUVDeUFMRUlzQ0lBUkZEUUVnQWlrREdDQUVLUU1ZaENFMUN5QUNJRFZDY1lNZ05VSUNoa0lJZzRRM0F4Z2dCeUV1UVFBaElTTUFRVEJySWdFa0FDQUNLUU1ZUWdCU0lnVkZCRUFnQVVFZ2FrSHc1QUFRRkNFRUlBSW9BZ2dpQnlrQ0VDRTFJQUVnQnlnQ0lEWUNHQ0FCSURVM0F4QWdBU0ExTndNSUlBWWdCQ0FCUVFocUVDY2dCQkFQR2dzZ0FVRXdhaVFBSUM0Z0lTQUZHeUVCQ3lBQUlCRTJBcEEwSUFBZ0V6WUNsRFFnQUNBUE5nS01OQXdCQzBFQUlRRUxJQXNRaXdJZ0FrRUFJQUViQ3lFQklBQWdERFlDa0RRZ0FDQU9OZ0tVTkNBQUlBMDJBb3cwREFFTFFRQWhBUXNnQ3hDTEFpQURRY0FCYWlRQUlBRU1Bd3NnQWtHSWhSSkdCRUFqQUVHUUFXc2lBeVFBSUFNZ0FUWUNiQ0FBS0FJQUlnRVFIQ0FCUWFnQmFpSUVJU0lnQkJEeEJTRUNJQU1vQW13aEJpQUFRWkEwYWlJSEtBSUFJUVVnQUVHSU5Hb2lDU2dDQUNFTEl3QkJFR3NpQVNRQUlBRWdCVFlDQ0NBQklBWTJBZ3dnQVNBTE5nSUVJQUlnQVNnQ0RDQUJLQUlJSUFFb0FnUVE3QVVpQWtHNG54STJBZ1FnQWtIb254STJBZ0FnQWtFQU5nTHNBaUFDUWRpZkVqWUNBQ0FCUVJCcUpBQWdJaUFDRUNnZ0JDQUVLQUlZUVFGcU5nSVlJQU1vQW13aEJDQUFLQUlBSWdFUUhDQUJRZVFCYWlBRUlBSVF1UUVnQUVHNEhXb2lDeENOQWlBQVFhd2RhaUVGQWtBQ1FBSkFJQVJGRFFBQ1FDQUVLQUlFSWdGQnVQTVBSZ1JBSUFSQjRBQnFJZ2dvQWdBaUFTQUVLQUprUVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1lRTXhvQ1FDQUdSUTBBSUFZb0FnUkJrSUlTUncwQUlBQWdCa0VrYWhCRElBRkJCR29oQVF3QkN3c2dBMEVRTmdLRUFTQURRWU9IQVRZQ2dBRWdBeUFES1FPQUFUY0RPQ0FBSUFZZ0EwRTRhaEJBREFRTElBTkJBRG9BZENBRElBZzJBbkFnQlNBRFFmQUFhaEJCRFFFTUF3c2dBVUhZaEJKR0JFQWdCRUU0YWlJSUtBSUFJZ0VnQkNnQ1BFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJR0VETWFBa0FnQmtVTkFDQUdLQUlFUVpDQ0VrY05BQ0FBSUFaQkpHb1FReUFCUVFScUlRRU1BUXNMSUFOQkRqWUNoQUVnQTBIa2hnRTJBb0FCSUFNZ0F5a0RnQUUzQTBBZ0FDQUdJQU5CUUdzUVFBd0VDeUFEUVFBNkFIUWdBeUFJTmdKd0lBVWdBMEh3QUdvUVFVVU5Bd3dCQ3lBQlFiandEMFlFUUNBRVFUUnFJZ2dvQWdBaUFTQUVLQUk0UVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1lRTXhvQ1FDQUdSUTBBSUFZb0FnUkJrSUlTUncwQUlBQWdCa0VrYWhCRElBRkJCR29oQVF3QkN3c2dBMEVOTmdLRUFTQURRYWFIQVRZQ2dBRWdBeUFES1FPQUFUY0RTQ0FBSUFZZ0EwSElBR29RUUF3RUN5QURRUUE2QUhRZ0F5QUlOZ0p3SUFVZ0EwSHdBR29RUVVVTkF3d0JDeUFCUWZqd0QwWUVRQ0FFUVRCcUlnZ29BZ0FpQVNBRUtBSTBRUUowYWlFS0FrQURRQ0FCSUFwR0RRRWdBQ0FCS0FJQUlnWVFNeG9DUUNBR1JRMEFJQVlvQWdSQmtJSVNSdzBBSUFBZ0JrRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVBOZ0tFQVNBRFFmT0dBVFlDZ0FFZ0F5QURLUU9BQVRjRFVDQUFJQVlnQTBIUUFHb1FRQXdFQ3lBRFFRQTZBSFFnQXlBSU5nSndJQVVnQTBId0FHb1FRVVVOQXd3QkN5QUJRZmp4RDBZRVFDQUVRY2dBYWlJSUtBSUFJZ0VnQkNnQ1RFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJR0VETWFBa0FnQmtVTkFDQUdLQUlFUVpDQ0VrY05BQ0FBSUFaQkpHb1FReUFCUVFScUlRRU1BUXNMSUFOQkVUWUNoQUVnQTBHVWh3RTJBb0FCSUFNZ0F5a0RnQUUzQTFnZ0FDQUdJQU5CMkFCcUVFQU1CQXNnQTBFQU9nQjBJQU1nQ0RZQ2NDQUZJQU5COEFCcUVFRkZEUU1NQVFzZ0FVR0loUkpIRFFFZ0JFRXdhaUlJS0FJQUlnRWdCQ2dDTkVFQ2RHb2hDZ0pBQTBBZ0FTQUtSZzBCSUFBZ0FTZ0NBQ0lHRURNYUFrQWdCa1VOQUNBR0tBSUVRWkNDRWtjTkFDQUFJQVpCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRURZQ2hBRWdBMEcwaHdFMkFvQUJJQU1nQXlrRGdBRTNBMkFnQUNBR0lBTkI0QUJxRUVBTUF3c2dBMEVBT2dCMElBTWdDRFlDY0NBRklBTkI4QUJxRUVGRkRRSUxJQUFnQWhDTUFnc2dBQ2dDakRRaENDQUFJQUkyQW93MElBQWdBaUFBS0FLUU5DSUtJQUliTmdLUU5DQUFJQUFvQXBRMElnMUJBV29pQVRZQ2xEUUNRQ0FCUVlBQlR3UkFJQU5COEFCcUlnRkIvd0FRWHlBRFFZQUJhaUlDUWFhc0NpQUJFRFVnQUNBQ0lBUkJFR29RSnlBQ0VBOGFJQUVRRHhwQkFDRUJEQUVMUVFBaEFTQUFJQUFnQXlnQ2JDZ0NKQkNGQWhEakFpSUVSUTBBSUFJZ0JEWUM3QUlnQWlBQ0tRTVlJQVFwQXlDRU53TVlJQUFnQXlnQ2JDZ0NLQkF6R2lBQUtBSUFJQU1vQW14QktHb2dCeUFKRU5vUUlRY2dBeWdDYkNnQ0tDRUdJQUFvQWdBaUJCQWNJQVJCNUFGcUlBWWdCeEM1QVNBTEVJMENBa0FDUUFKQUlBWkZEUUFDUUNBR0tBSUVJZ1JCdVBNUFJnUkFJQVpCNEFCcUlnd29BZ0FpQkNBR0tBSmtRUUowYWlFT0FrQURRQ0FFSUE1R0RRRWdBQ0FFS0FJQUlna1FNeG9DUUNBSlJRMEFJQWtvQWdSQmtJSVNSdzBBSUFBZ0NVRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0EwRVFOZ0tFQVNBRFFZT0hBVFlDZ0FFZ0F5QURLUU9BQVRjRENDQUFJQWtnQTBFSWFoQkFEQVFMSUFOQkFEb0FkQ0FESUF3MkFuQWdCU0FEUWZBQWFoQkJEUUVNQXdzZ0JFSFloQkpHQkVBZ0JrRTRhaUlNS0FJQUlnUWdCaWdDUEVFQ2RHb2hEZ0pBQTBBZ0JDQU9SZzBCSUFBZ0JDZ0NBQ0lKRURNYUFrQWdDVVVOQUNBSktBSUVRWkNDRWtjTkFDQUFJQWxCSkdvUVF5QUVRUVJxSVFRTUFRc0xJQU5CRGpZQ2hBRWdBMEhraGdFMkFvQUJJQU1nQXlrRGdBRTNBeEFnQUNBSklBTkJFR29RUUF3RUN5QURRUUE2QUhRZ0F5QU1OZ0p3SUFVZ0EwSHdBR29RUVVVTkF3d0JDeUFFUWJqd0QwWUVRQ0FHUVRScUlnd29BZ0FpQkNBR0tBSTRRUUowYWlFT0FrQURRQ0FFSUE1R0RRRWdBQ0FFS0FJQUlna1FNeG9DUUNBSlJRMEFJQWtvQWdSQmtJSVNSdzBBSUFBZ0NVRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0EwRU5OZ0tFQVNBRFFhYUhBVFlDZ0FFZ0F5QURLUU9BQVRjREdDQUFJQWtnQTBFWWFoQkFEQVFMSUFOQkFEb0FkQ0FESUF3MkFuQWdCU0FEUWZBQWFoQkJSUTBEREFFTElBUkIrUEFQUmdSQUlBWkJNR29pRENnQ0FDSUVJQVlvQWpSQkFuUnFJUTRDUUFOQUlBUWdEa1lOQVNBQUlBUW9BZ0FpQ1JBekdnSkFJQWxGRFFBZ0NTZ0NCRUdRZ2hKSERRQWdBQ0FKUVNScUVFTWdCRUVFYWlFRURBRUxDeUFEUVE4MkFvUUJJQU5CODRZQk5nS0FBU0FESUFNcEE0QUJOd01nSUFBZ0NTQURRU0JxRUVBTUJBc2dBMEVBT2dCMElBTWdERFlDY0NBRklBTkI4QUJxRUVGRkRRTU1BUXNnQkVINDhROUdCRUFnQmtISUFHb2lEQ2dDQUNJRUlBWW9Ba3hCQW5ScUlRNENRQU5BSUFRZ0RrWU5BU0FBSUFRb0FnQWlDUkF6R2dKQUlBbEZEUUFnQ1NnQ0JFR1FnaEpIRFFBZ0FDQUpRU1JxRUVNZ0JFRUVhaUVFREFFTEN5QURRUkUyQW9RQklBTkJsSWNCTmdLQUFTQURJQU1wQTRBQk53TW9JQUFnQ1NBRFFTaHFFRUFNQkFzZ0EwRUFPZ0IwSUFNZ0REWUNjQ0FGSUFOQjhBQnFFRUZGRFFNTUFRc2dCRUdJaFJKSERRRWdCa0V3YWlJTUtBSUFJZ1FnQmlnQ05FRUNkR29oRGdKQUEwQWdCQ0FPUmcwQklBQWdCQ2dDQUNJSkVETWFBa0FnQ1VVTkFDQUpLQUlFUVpDQ0VrY05BQ0FBSUFsQkpHb1FReUFFUVFScUlRUU1BUXNMSUFOQkVEWUNoQUVnQTBHMGh3RTJBb0FCSUFNZ0F5a0RnQUUzQXpBZ0FDQUpJQU5CTUdvUVFBd0RDeUFEUVFBNkFIUWdBeUFNTmdKd0lBVWdBMEh3QUdvUVFVVU5BZ3NnQUNBSEVJd0NDeUFBS0FLTU5DRU1JQUFnQnpZQ2pEUWdBQ0FISUFBb0FwQTBJZzRnQnhzMkFwQTBJQUFnQUNnQ2xEUWlEMEVCYWlJRU5nS1VOQUovSUFSQmdBRlBCRUFnQTBId0FHb2lCRUgvQUJCZklBTkJnQUZxSWdsQnBxd0tJQVFRTlNBQUlBa2dCa0VRYWhBbklBa1FEeG9nQkJBUEdrRUFEQUVMSUFNZ0F5Z0NiQ2dDS0VIRUFHbzJBb0FCSUFOQkFEb0FoQUVnQjBFQUlBQWdBMEdBQVdvUTJnWWJDeUVFSUFBZ0RqWUNrRFFnQUNBUE5nS1VOQ0FBSUF3MkFvdzBEQUVMUVFBaEJBc2dDeENMQWlBRVJRMEFJQUlnQWlrREdDQUhLUU1ZaEVKeGcwSUloRGNER0NBQ0lTOUJBQ0VqSXdCQk1Hc2lBU1FBQWtBQ1FDQUNLUU1ZVUFSQUlBRkJJR3BCZytVQUVCUWhCQ0FDS0FJSUlnSXBBaEFoTlNBQklBSW9BaUEyQWhnZ0FTQTFOd01RSUFFZ05UY0RDQ0FGSUFRZ0FVRUlhaEFuREFFTFFRRWhCQ0FDS0FMc0FpSUdSUTBCSUFZb0FoUVFoQUVpQmlnQ0JFSFFwUkpHRFFFZ0FVRWdhaUlFSUFVb0FnZ2dCaENuQVNBQlFRaHFJZ1pCMnNnSklBUVFOU0FGSUFZZ0FpZ0M3QUlvQWdoQkVHb1FKeUFHRUE4YUN5QUVFQThhUVFBaEJBc2dBVUV3YWlRQUlDOGdJeUFFR3lFQkN5QUFJQW8yQXBBMElBQWdEVFlDbERRZ0FDQUlOZ0tNTkF3QkMwRUFJUUVMSUFzUWl3SWdBMEdRQVdva0FDQUJEQU1MSUFKQnVQQVBSZ1JBSXdCQmtBRnJJZ0lrQUNBQ0lBRTJBbXdnQUNnQ0FDSUJFQndnQVVHb0FXb2lCQ0VrSUFRUThRVWhBeUFDS0FKc0lRWWdBRUdRTkdvaUJ5Z0NBQ0VGSUFCQmlEUnFJZ2tvQWdBaEN5TUFRUkJySWdFa0FDQUJJQVUyQWdnZ0FTQUdOZ0lNSUFFZ0N6WUNCQ0FESUFFb0Fnd2dBU2dDQ0NBQktBSUVFT3dGSWdOQnVKTVNOZ0lFSUFOQjZKTVNOZ0lBSUFOQkFEWUM3QUlnQTBIWWt4STJBZ0FnQVVFUWFpUUFJQ1FnQXlJR0VDZ2dCQ0FFS0FJWVFRRnFOZ0lZSUFJb0Ftd2hBeUFBS0FJQUlnRVFIQ0FCUWVRQmFpQURJQVlRdVFFZ0FFRzRIV29pQ3hDTkFpQUFRYXdkYWlFRkFrQUNRQUpBSUFORkRRQUNRQ0FES0FJRUlnRkJ1UE1QUmdSQUlBTkI0QUJxSWdnb0FnQWlBU0FES0FKa1FRSjBhaUVLQWtBRFFDQUJJQXBHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUU5nS0VBU0FDUVlPSEFUWUNnQUVnQWlBQ0tRT0FBVGNET0NBQUlBUWdBa0U0YWhCQURBUUxJQUpCQURvQWRDQUNJQWcyQW5BZ0JTQUNRZkFBYWhCQkRRRU1Bd3NnQVVIWWhCSkdCRUFnQTBFNGFpSUlLQUlBSWdFZ0F5Z0NQRUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEallDaEFFZ0FrSGtoZ0UyQW9BQklBSWdBaWtEZ0FFM0EwQWdBQ0FFSUFKQlFHc1FRQXdFQ3lBQ1FRQTZBSFFnQWlBSU5nSndJQVVnQWtId0FHb1FRVVVOQXd3QkN5QUJRYmp3RDBZRVFDQURRVFJxSWdnb0FnQWlBU0FES0FJNFFRSjBhaUVLQWtBRFFDQUJJQXBHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFTk5nS0VBU0FDUWFhSEFUWUNnQUVnQWlBQ0tRT0FBVGNEU0NBQUlBUWdBa0hJQUdvUVFBd0VDeUFDUVFBNkFIUWdBaUFJTmdKd0lBVWdBa0h3QUdvUVFVVU5Bd3dCQ3lBQlFmandEMFlFUUNBRFFUQnFJZ2dvQWdBaUFTQURLQUkwUVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VQTmdLRUFTQUNRZk9HQVRZQ2dBRWdBaUFDS1FPQUFUY0RVQ0FBSUFRZ0FrSFFBR29RUUF3RUN5QUNRUUE2QUhRZ0FpQUlOZ0p3SUFVZ0FrSHdBR29RUVVVTkF3d0JDeUFCUWZqeEQwWUVRQ0FEUWNnQWFpSUlLQUlBSWdFZ0F5Z0NURUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJFVFlDaEFFZ0FrR1Vod0UyQW9BQklBSWdBaWtEZ0FFM0ExZ2dBQ0FFSUFKQjJBQnFFRUFNQkFzZ0FrRUFPZ0IwSUFJZ0NEWUNjQ0FGSUFKQjhBQnFFRUZGRFFNTUFRc2dBVUdJaFJKSERRRWdBMEV3YWlJSUtBSUFJZ0VnQXlnQ05FRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FBSUFSQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVEWUNoQUVnQWtHMGh3RTJBb0FCSUFJZ0Fpa0RnQUUzQTJBZ0FDQUVJQUpCNEFCcUVFQU1Bd3NnQWtFQU9nQjBJQUlnQ0RZQ2NDQUZJQUpCOEFCcUVFRkZEUUlMSUFBZ0JoQ01BZ3NnQUNnQ2pEUWhDQ0FBSUFZMkFvdzBJQUFnQmlBQUtBS1FOQ0lLSUFZYk5nS1FOQ0FBSUFBb0FwUTBJZzFCQVdvaUFUWUNsRFFDUUNBQlFZQUJUd1JBSUFKQjhBQnFJZ0ZCL3dBUVh5QUNRWUFCYWlJRVFhYXNDaUFCRURVZ0FDQUVJQU5CRUdvUUp5QUVFQThhSUFFUUR4cEJBQ0VCREFFTFFRQWhBU0FBSUFBZ0FpZ0NiQ2dDSkJDRkFoRGpBaUlEUlEwQUlBWWdBellDN0FJZ0JpQURLUU1nUW5lRE53TVlJQUFnQWlnQ2JDZ0NLQkF6R2lBQUtBSUFJQUlvQW14QktHb2dCeUFKRUpVZUlRY2dBaWdDYkNnQ0tDRURJQUFvQWdBaUJCQWNJQVJCNUFGcUlBTWdCeEM1QVNBTEVJMENBa0FDUUFKQUlBTkZEUUFDUUNBREtBSUVJZ1JCdVBNUFJnUkFJQU5CNEFCcUlnd29BZ0FpQkNBREtBSmtRUUowYWlFT0FrQURRQ0FFSUE1R0RRRWdBQ0FFS0FJQUlna1FNeG9DUUNBSlJRMEFJQWtvQWdSQmtJSVNSdzBBSUFBZ0NVRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0FrRVFOZ0tFQVNBQ1FZT0hBVFlDZ0FFZ0FpQUNLUU9BQVRjRENDQUFJQWtnQWtFSWFoQkFEQVFMSUFKQkFEb0FkQ0FDSUF3MkFuQWdCU0FDUWZBQWFoQkJEUUVNQXdzZ0JFSFloQkpHQkVBZ0EwRTRhaUlNS0FJQUlnUWdBeWdDUEVFQ2RHb2hEZ0pBQTBBZ0JDQU9SZzBCSUFBZ0JDZ0NBQ0lKRURNYUFrQWdDVVVOQUNBSktBSUVRWkNDRWtjTkFDQUFJQWxCSkdvUVF5QUVRUVJxSVFRTUFRc0xJQUpCRGpZQ2hBRWdBa0hraGdFMkFvQUJJQUlnQWlrRGdBRTNBeEFnQUNBSklBSkJFR29RUUF3RUN5QUNRUUE2QUhRZ0FpQU1OZ0p3SUFVZ0FrSHdBR29RUVVVTkF3d0JDeUFFUWJqd0QwWUVRQ0FEUVRScUlnd29BZ0FpQkNBREtBSTRRUUowYWlFT0FrQURRQ0FFSUE1R0RRRWdBQ0FFS0FJQUlna1FNeG9DUUNBSlJRMEFJQWtvQWdSQmtJSVNSdzBBSUFBZ0NVRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0FrRU5OZ0tFQVNBQ1FhYUhBVFlDZ0FFZ0FpQUNLUU9BQVRjREdDQUFJQWtnQWtFWWFoQkFEQVFMSUFKQkFEb0FkQ0FDSUF3MkFuQWdCU0FDUWZBQWFoQkJSUTBEREFFTElBUkIrUEFQUmdSQUlBTkJNR29pRENnQ0FDSUVJQU1vQWpSQkFuUnFJUTRDUUFOQUlBUWdEa1lOQVNBQUlBUW9BZ0FpQ1JBekdnSkFJQWxGRFFBZ0NTZ0NCRUdRZ2hKSERRQWdBQ0FKUVNScUVFTWdCRUVFYWlFRURBRUxDeUFDUVE4MkFvUUJJQUpCODRZQk5nS0FBU0FDSUFJcEE0QUJOd01nSUFBZ0NTQUNRU0JxRUVBTUJBc2dBa0VBT2dCMElBSWdERFlDY0NBRklBSkI4QUJxRUVGRkRRTU1BUXNnQkVINDhROUdCRUFnQTBISUFHb2lEQ2dDQUNJRUlBTW9Ba3hCQW5ScUlRNENRQU5BSUFRZ0RrWU5BU0FBSUFRb0FnQWlDUkF6R2dKQUlBbEZEUUFnQ1NnQ0JFR1FnaEpIRFFBZ0FDQUpRU1JxRUVNZ0JFRUVhaUVFREFFTEN5QUNRUkUyQW9RQklBSkJsSWNCTmdLQUFTQUNJQUlwQTRBQk53TW9JQUFnQ1NBQ1FTaHFFRUFNQkFzZ0FrRUFPZ0IwSUFJZ0REWUNjQ0FGSUFKQjhBQnFFRUZGRFFNTUFRc2dCRUdJaFJKSERRRWdBMEV3YWlJTUtBSUFJZ1FnQXlnQ05FRUNkR29oRGdKQUEwQWdCQ0FPUmcwQklBQWdCQ2dDQUNJSkVETWFBa0FnQ1VVTkFDQUpLQUlFUVpDQ0VrY05BQ0FBSUFsQkpHb1FReUFFUVFScUlRUU1BUXNMSUFKQkVEWUNoQUVnQWtHMGh3RTJBb0FCSUFJZ0Fpa0RnQUUzQXpBZ0FDQUpJQUpCTUdvUVFBd0RDeUFDUVFBNkFIUWdBaUFNTmdKd0lBVWdBa0h3QUdvUVFVVU5BZ3NnQUNBSEVJd0NDeUFBS0FLTU5DRU1JQUFnQnpZQ2pEUWdBQ0FISUFBb0FwQTBJZzRnQnhzMkFwQTBJQUFnQUNnQ2xEUWlEMEVCYWlJRU5nS1VOQUovSUFSQmdBRlBCRUFnQWtId0FHb2lCRUgvQUJCZklBSkJnQUZxSWdsQnBxd0tJQVFRTlNBQUlBa2dBMEVRYWhBbklBa1FEeG9nQkJBUEdrRUFEQUVMSUFJZ0FpZ0NiQ2dDS0VIRUFHbzJBb0FCSUFKQkFEb0FoQUVnQjBFQUlBQWdBa0dBQVdvUTJnWWJDeUVFSUFBZ0RqWUNrRFFnQUNBUE5nS1VOQ0FBSUF3MkFvdzBEQUVMUVFBaEJBc2dDeENMQWlBRVJRMEFJQVlnQmlrREdDQUhLUU1ZaENJMU53TVlJQVlDZmlBQ0tBSnNLQUlzSWdNRVFDQUFJQU1RTXhvZ0FDQUNLQUpzS0FJc0VJTU1JZ05GRFFJZ0Jpa0RHQ0FES1FNWWhBd0JDeUExUWdpRUN6Y0RHQ01BUVNCcklnRWtBQ0FHS0FMc0FpZ0NGQkNFQVNJREtBSUVJZ1JCMEtVU1J3UkFJQUVnQlNnQ0NDQURFS2NCSUFGQkVHb2lBMEdLeUFrZ0FSQTFJQVVnQXlBR0tBTHNBaWdDQ0VFUWFoQW5JQU1RRHhvZ0FSQVBHZ3NnQVVFZ2FpUUFJQVpCQUNBRVFkQ2xFa1liSVFFTElBQWdDallDa0RRZ0FDQU5OZ0tVTkNBQUlBZzJBb3cwREFFTFFRQWhBUXNnQ3hDTEFpQUNRWkFCYWlRQUlBRU1Bd3NnQWtINDhROUdCRUFqQUVHZ0FXc2lCU1FBSUFVZ0FUWUNPQ0FBS0FJQUlnRVFIQ0FCUWFnQmFpSUVJU1VnQkJDakhTRUNJQVVvQWpnaEF5QUFRWkEwYWlnQ0FDRUdJQUJCaURScUtBSUFJUWNqQUVIQUFXc2lBU1FBSUFFZ0JqWUN1QUVnQVNBRE5nSzhBU0FCSUFjMkFyUUJJQUlnQVNnQ3ZBRWdBU2dDdUFFZ0FTZ0N0QUVRN0FVaUFrSEltaEkyQWdRZ0FrR1lteEkyQWdBZ0FrSUFOd0xzQWlBQ1FlaWFFallDQUNBQ1FRQTJBdlFDSUFFb0FyZ0JSUVJBSUFGQm01UUZRUjVCQ1NBQlFhQUJhaEFkSWdNUUZ5SUdRUmhxUVltZENCQU9HaUFHRUJnZ0F4QWVDeUFCS0FLMEFVVUVRQ0FCUVp1VUJVRWZRUWtnQVVHZ0FXb1FIU0lERUJjaUJrRVlha0hNc1FnUURob2dCaEFZSUFNUUhnc2dBVUhBQVdva0FDQWxJQUlpQXhBb0lBUWdCQ2dDR0VFQmFqWUNHQ0FGS0FJNElRSWdBQ2dDQUNJQkVCd2dBVUhrQVdvZ0FpQURFTGtCSUFCQnVCMXFJaFFRalFJZ0FFR3NIV29oQ3dKQUFrQUNRQ0FDUlEwQUFrQWdBaWdDQkNJQlFianpEMFlFUUNBQ1FlQUFhaUlHS0FJQUlnRWdBaWdDWkVFQ2RHb2hCd0pBQTBBZ0FTQUhSZzBCSUFBZ0FTZ0NBQ0lFRURNYUFrQWdCRVVOQUNBRUtBSUVRWkNDRWtjTkFDQUFJQVJCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQVZCRURZQ2RDQUZRWU9IQVRZQ2NDQUZJQVVwQTNBM0F3Z2dBQ0FFSUFWQkNHb1FRQXdFQ3lBRlFRQTZBRVFnQlNBR05nSkFJQXNnQlVGQWF4QkJEUUVNQXdzZ0FVSFloQkpHQkVBZ0FrRTRhaUlHS0FJQUlnRWdBaWdDUEVFQ2RHb2hCd0pBQTBBZ0FTQUhSZzBCSUFBZ0FTZ0NBQ0lFRURNYUFrQWdCRVVOQUNBRUtBSUVRWkNDRWtjTkFDQUFJQVJCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQVZCRGpZQ2RDQUZRZVNHQVRZQ2NDQUZJQVVwQTNBM0F4QWdBQ0FFSUFWQkVHb1FRQXdFQ3lBRlFRQTZBRVFnQlNBR05nSkFJQXNnQlVGQWF4QkJSUTBEREFFTElBRkJ1UEFQUmdSQUlBSkJOR29pQmlnQ0FDSUJJQUlvQWpoQkFuUnFJUWNDUUFOQUlBRWdCMFlOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFGUVEwMkFuUWdCVUdtaHdFMkFuQWdCU0FGS1FOd053TVlJQUFnQkNBRlFSaHFFRUFNQkFzZ0JVRUFPZ0JFSUFVZ0JqWUNRQ0FMSUFWQlFHc1FRVVVOQXd3QkN5QUJRZmp3RDBZRVFDQUNRVEJxSWdZb0FnQWlBU0FDS0FJMFFRSjBhaUVIQWtBRFFDQUJJQWRHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQlVFUE5nSjBJQVZCODRZQk5nSndJQVVnQlNrRGNEY0RJQ0FBSUFRZ0JVRWdhaEJBREFRTElBVkJBRG9BUkNBRklBWTJBa0FnQ3lBRlFVQnJFRUZGRFFNTUFRc2dBVUg0OFE5R0JFQWdBa0hJQUdvaUJpZ0NBQ0lCSUFJb0FreEJBblJxSVFjQ1FBTkFJQUVnQjBZTkFTQUFJQUVvQWdBaUJCQXpHZ0pBSUFSRkRRQWdCQ2dDQkVHUWdoSkhEUUFnQUNBRVFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBRlFSRTJBblFnQlVHVWh3RTJBbkFnQlNBRktRTndOd01vSUFBZ0JDQUZRU2hxRUVBTUJBc2dCVUVBT2dCRUlBVWdCallDUUNBTElBVkJRR3NRUVVVTkF3d0JDeUFCUVlpRkVrY05BU0FDUVRCcUlnWW9BZ0FpQVNBQ0tBSTBRUUowYWlFSEFrQURRQ0FCSUFkR0RRRWdBQ0FCS0FJQUlnUVFNeG9DUUNBRVJRMEFJQVFvQWdSQmtJSVNSdzBBSUFBZ0JFRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0JVRVFOZ0owSUFWQnRJY0JOZ0p3SUFVZ0JTa0RjRGNETUNBQUlBUWdCVUV3YWhCQURBTUxJQVZCQURvQVJDQUZJQVkyQWtBZ0N5QUZRVUJyRUVGRkRRSUxJQUFnQXhDTUFnc2dBQ2dDakRRaEdTQUFJQU0yQW93MElBQWdBeUFBS0FLUU5DSWFJQU1iTmdLUU5DQUFJQUFvQXBRMElodEJBV29pQVRZQ2xEUUNmd0pBQWtBZ0FVR0FBVThFUUNBRlFVQnJJZ0ZCL3dBUVh5QUZRZkFBYWlJRFFhYXNDaUFCRURVZ0FDQURJQUpCRUdvUUp5QURFQThhSUFFUUR4b01BUXNnQUNBQUlBVW9BamdvQWlRUWhRSVE0d0lpQWcwQkMwRUFEQUVMSUFNZ0Fpa0RJRUozZ3pjREdDQUZJQUlvQWhRMkFwd0JJQVZDZ0lDQWdJQUJOd0tVQVNBRklBVkI4QUJxSWdFMkFwQUJJQUVnQlVHY0FXb1FKQ0FGS0FJNElnRW9BamdpQkNBQktBSThRUUowYWlFR0lBVkJrQUZxSVFjQ1FBTkFJQVFnQmtjRVFDQUVLQUlBSWdrb0FqUWlBU0FKS0FJNFFRSjBhaUVKQTBBZ0FTQUpSd1JBSUFFb0FnQW9BaVFpQ0FSQUlBQWdDQkNGQWlJSVJRUkFRUUFoQkF3R0N5QUZJQWdvQWhRUWhBRTJBa0FnQlVId0FHb2dCVUZBYXhBa0N5QUJRUVJxSVFFTUFRc0xJQVJCQkdvaEJBd0JDd3NnQlVFQU9nQnNJQVVnQnpZQ2FBSkFJQVZCNkFCcUVMY0xJZ2tFUUNBSkVQTUhEUUVMSUFBb0FnQVExQUloQ1F0QkFDRUVJQUFnQWlBSkVKWUNSUTBBSUFVb0FqZ2lBaWdDV0NJQklBSW9BbHhCQW5ScUlRWUNRQU5BSUFFZ0JrWU5BU0FBSUFFb0FnQWlBaEF6R2dKQUlBSkZEUUFnQWlnQ0JFR1FnaEpIRFFBZ0FDQUNRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUZRUXMyQWtRZ0JVSGJGellDUUNBRklBVXBBMEEzQXdBZ0FDQUNJQVVRUUF3QkN5QUZRUUE2QUdRZ0JTQUZLQUk0UWRnQWFqWUNZQ0FMSUFWQjRBQnFFRUZGRFFBZ0JVS0FnSUNBd0FBM0FsUWdCU2dDT0NFQklBVWdCVUZBYXlJQ05nSlFJQUlnQVNnQ1BCRFdBaUFGS0FJNElnSW9BamdpQVNBQ0tBSThRUUowYWlFTUlBTkI3QUpxSVE0Q2Z3SkFBMEFnQVNBTVJnMEJJQUFnQVNnQ0FDSUNFRE1hSXdCQjRBQnJJZ2NrQUNBSElBSTJBandnQUNnQ0FDSUNFQndnQUVHUU5Hb2hDaUFBUVlnMGFpRU5JQUpCcUFGcUlnSWhKaUFDS0FJRUlRWUNRQ0FDS0FJSVFRZHFRWGh4SWdoQmdmMERhMEgrLzN0TEJFQWdCaUVFREFFTElBSkJrSUFFUVJBUTJRSWlCRFlDQkVFQUlRZ2dCRUVBTmdLQWdBUWdCZ1JBSUFZZ0JEWUNnSUFFREFFTElBSWdCRFlDQUFzZ0FpQUlRWUFEYWpZQ0NDQUhLQUk4SVE4Z0NpZ0NBQ0VLSUEwb0FnQWhEU01BUWNBQmF5SUdKQUFnQmlBS05nSzRBU0FHSUE4MkFyd0JJQVlnRFRZQ3RBRWdCQ0FJYWlBR0tBSzhBU0FHS0FLNEFTQUdLQUswQVJEc0JTSUVRWmlhRWpZQ0JDQUVRYWliRWpZQ0FDQUVRZ0EzQXV3Q0lBUkIrSm9TTmdJQUlBUkNBRGNDOUFJZ0JpZ0N1QUZGQkVBZ0JrR2JsQVZCTEVFSklBWkJvQUZxRUIwaUNCQVhJZ3BCR0dwQmlaMElFQTRhSUFvUUdDQUlFQjRMSUFZb0FyUUJSUVJBSUFaQm01UUZRUzFCQ1NBR1FhQUJhaEFkSWdnUUZ5SUtRUmhxUWN5eENCQU9HaUFLRUJnZ0NCQWVDeUFHUWNBQmFpUUFJQ1lnQkJBb0lBSWdBaWdDR0VFQmFqWUNHQ0FFSVFZZ0J5Z0NQQ0VDSUFBb0FnQWlCQkFjSUFSQjVBRnFJQUlnQmhDNUFTQUFRYmdkYWlJUEVJMENBa0FDUUFKQUlBSkZEUUFnQUVHc0hXb2hDQUpBSUFJb0FnUWlCRUc0OHc5R0JFQWdBa0hnQUdvaURTZ0NBQ0lFSUFJb0FtUkJBblJxSVJFQ1FBTkFJQVFnRVVZTkFTQUFJQVFvQWdBaUNoQXpHZ0pBSUFwRkRRQWdDaWdDQkVHUWdoSkhEUUFnQUNBS1FTUnFFRU1nQkVFRWFpRUVEQUVMQ3lBSFFSQTJBbFFnQjBHRGh3RTJBbEFnQnlBSEtRTlFOd01JSUFBZ0NpQUhRUWhxRUVBTUJBc2dCMEVBT2dCRUlBY2dEVFlDUUNBSUlBZEJRR3NRUVEwQkRBTUxJQVJCMklRU1JnUkFJQUpCT0dvaURTZ0NBQ0lFSUFJb0FqeEJBblJxSVJFQ1FBTkFJQVFnRVVZTkFTQUFJQVFvQWdBaUNoQXpHZ0pBSUFwRkRRQWdDaWdDQkVHUWdoSkhEUUFnQUNBS1FTUnFFRU1nQkVFRWFpRUVEQUVMQ3lBSFFRNDJBbFFnQjBIa2hnRTJBbEFnQnlBSEtRTlFOd01RSUFBZ0NpQUhRUkJxRUVBTUJBc2dCMEVBT2dCRUlBY2dEVFlDUUNBSUlBZEJRR3NRUVVVTkF3d0JDeUFFUWJqd0QwWUVRQ0FDUVRScUlnMG9BZ0FpQkNBQ0tBSTRRUUowYWlFUkFrQURRQ0FFSUJGR0RRRWdBQ0FFS0FJQUlnb1FNeG9DUUNBS1JRMEFJQW9vQWdSQmtJSVNSdzBBSUFBZ0NrRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0IwRU5OZ0pVSUFkQnBvY0JOZ0pRSUFjZ0J5a0RVRGNER0NBQUlBb2dCMEVZYWhCQURBUUxJQWRCQURvQVJDQUhJQTAyQWtBZ0NDQUhRVUJyRUVGRkRRTU1BUXNnQkVINDhBOUdCRUFnQWtFd2FpSU5LQUlBSWdRZ0FpZ0NORUVDZEdvaEVRSkFBMEFnQkNBUlJnMEJJQUFnQkNnQ0FDSUtFRE1hQWtBZ0NrVU5BQ0FLS0FJRVFaQ0NFa2NOQUNBQUlBcEJKR29RUXlBRVFRUnFJUVFNQVFzTElBZEJEellDVkNBSFFmT0dBVFlDVUNBSElBY3BBMUEzQXlBZ0FDQUtJQWRCSUdvUVFBd0VDeUFIUVFBNkFFUWdCeUFOTmdKQUlBZ2dCMEZBYXhCQlJRMEREQUVMSUFSQitQRVBSZ1JBSUFKQnlBQnFJZzBvQWdBaUJDQUNLQUpNUVFKMGFpRVJBa0FEUUNBRUlCRkdEUUVnQUNBRUtBSUFJZ29RTXhvQ1FDQUtSUTBBSUFvb0FnUkJrSUlTUncwQUlBQWdDa0VrYWhCRElBUkJCR29oQkF3QkN3c2dCMEVSTmdKVUlBZEJsSWNCTmdKUUlBY2dCeWtEVURjREtDQUFJQW9nQjBFb2FoQkFEQVFMSUFkQkFEb0FSQ0FISUEwMkFrQWdDQ0FIUVVCckVFRkZEUU1NQVFzZ0JFR0loUkpIRFFFZ0FrRXdhaUlOS0FJQUlnUWdBaWdDTkVFQ2RHb2hFUUpBQTBBZ0JDQVJSZzBCSUFBZ0JDZ0NBQ0lLRURNYUFrQWdDa1VOQUNBS0tBSUVRWkNDRWtjTkFDQUFJQXBCSkdvUVF5QUVRUVJxSVFRTUFRc0xJQWRCRURZQ1ZDQUhRYlNIQVRZQ1VDQUhJQWNwQTFBM0F6QWdBQ0FLSUFkQk1Hb1FRQXdEQ3lBSFFRQTZBRVFnQnlBTk5nSkFJQWdnQjBGQWF4QkJSUTBDQ3lBQUlBWVFqQUlMSUFBb0FvdzBJUkVnQUNBR05nS01OQ0FBSUFZZ0FDZ0NrRFFpRXlBR0d6WUNrRFFnQUNBQUtBS1VOQ0lRUVFGcUlnUTJBcFEwQWtBQ1FDQUVRWUFCVHdSQUlBZEJRR3NpQkVIL0FCQmZJQWRCMEFCcUlnWkJwcXdLSUFRUU5TQUFJQVlnQWtFUWFoQW5JQVlRRHhvZ0JCQVBHZ3dCQ3lBR1FmQUNhaUlWSUFjb0Fqd29BamdRcXdRZ0J5Z0NQQ0lDS0FJMElnUWdBaWdDT0VFQ2RHb2hGaUFBUWFnZGFpRVhBMEFDUUNBRUlCWkhCRUFnQnlBRUtBSUFJZ0kyQWtBZ0FDQUNFRE1hSUFBb0FzUXJJUW9nQUVIRDBBRTJBc1FySUFBb0FzQXJJUTBnQUVFQk5nTEFLeUFIUVFBMkFsd2dCeWdDUUNnQ0pDSUNSUTBCQWtBZ0FDQVhJQUlRcWdRZ0NSQ1dBaUlDUlEwQUlBSW9BaFFRcmdsRkJFQWdBQ0FIUWRBQWFrSFUwZ01RRkNJQ0lBY29Ba0JCRUdvUUp5QUNFQThhREFFTElBY2dBaWdDSENJQ05nSmNJQUlOQWlBQUlBZEIwQUJxUWVmbUFoQVVJZ0lnQnlnQ1FFRVFhaEFuSUFJUUR4b0xJQUFnQ2pZQ3hDc2dBQ0FOTmdMQUt3d0RDeUFBSUFjb0Fqd29Ba0FRTXhvZ0FDQUhLQUk4S0FKQUVKY2VJZ0pGRFFJZ0JpQUNOZ0xzQWlBR0lBSXBBeGczQXhnTUF3c2dBQ2dDQUNJQ0VCd2dBa0dvQVdvaUNCRDhBeUVDSUFkQlFHc29BZ0FoR0NBSEtBSmNJUndnQWhEcEJ5SUNRYkNhRWpZQ0JDQUNRYmliRWpZQ0FDQUNJQncyQWd3Z0FpQVlOZ0lJSUFKQmlKc1NOZ0lBSUFnZ0FoQW9JQWdnQ0NnQ0dFRUJhallDR0NBSElBSTJBbEFnRlNBSFFkQUFhaERaQmlBQUlBbzJBc1FySUFBZ0RUWUN3Q3NnQkVFRWFpRUVEQUFMQUF0QkFDRUdDeUFBSUJNMkFwQTBJQUFnRURZQ2xEUWdBQ0FSTmdLTU5Bd0JDMEVBSVFZTElBOFFpd0lnQjBIZ0FHb2tBQ0FGSUFZMkFqd2dCZ1JBSUFWQlFHc2dCVUU4YWlJQ0VIRWdBeUFES1FNWUlBVW9BandwQXhpRU53TVlJQTRnQWhEWkJpQUFJQVVvQWp3UWpBSWdBVUVFYWlFQkRBRUxDMEVBREFFTElBTWdBeWtER0NJMVFnS0dRZ2lESURWQ2ZZT0VOd01ZSUFVb0FqZ2hDRUVBSVFwQkFDRUVJd0JCZ0FOcklnWWtBQUpBSUFnb0Fqd2lBa0dBZ0FGUEJFQWdCa0hRQW1vaUFTQUNFRjhnQmtIZ0Ftb2lBa0dRNHdrZ0FSQTFJQVpCOEFKcUlnUWdBa0dPM0FrUUxTQUdRY0FDYWlJSFFmLy9BQkJmSUFaQkNHb2lDU0FFSUFjUVRpQUxJQWtnQ0VFUWFoQW5JQWtRRHhvZ0J4QVBHaUFFRUE4YUlBSVFEeG9nQVJBUEdnd0JDeUFMS0FJSUlBZ29BaVFRcHdVaUVSRHpCMFVFUUNBTElBWkJDR3BCcFlFRUVCUWlBU0FJS0FJa1FSQnFFQ2NnQVJBUEdnd0JDeUFHUVFocUlnZENBRGNEc0FJZ0IwS0FnSUNBNEFBM0FxUUNJQWNnQnpZQ29BSWdCMEVHRUljUUlBZ29BamdpRHlBSUtBSThRUUowYWlFVkFuOENRQU5BSUE4Z0ZVY0VRQ0FMS0FJSUlRSWdEeWdDQUNFQkl3QkJvQUZySWdra0FDQUNLQUlBSWdvUUhBSi9JQXBCNUFGcUlBRVE0UUlpQ2tVRVFDQUNLQUlBSWdJUUhDQUpRZjJzQTBFelFRZ2dBa0hJQW1vUUZ5SUtRUmhxUWFhV0NSQU9HaUFLSUFFb0FnUkJCR29RbWdFaURVRVlhaUlDUWR6eERCQU9HaUFDUVlQa0N4QU9HaUFOUVJCcUlBRkJFR29RcmdNZ0FrSGIrQXdRRGhvZ0FrSHc5UXNRRGhvZ0FpQUJFTjBESUFvUUdFRUFEQUVMSUFwQkFDQUtLQUlFUVppYUVrWWJDeUVCSUFsQm9BRnFKQUFnQVNnQzhBSWhDaUFCS0FMMEFpRVdBMEFDUUNBS0lCWkhCRUFnQ2lnQ0FDSUJLQUlNSWdKRkJFQWdCRVVFUUNBQklRUU1Bd3NnQ3lBR1FmQUNhaUlDUWZIaEF4QVVJZ2tnQVNnQ0NFRVFhaEFuSUFrUUR4b2dDeUFDUWNUa0F4QVVJZ0lnQkNnQ0NFRVFhaENHQVF3R0N5QUNJQUlvQWdBb0FnZ1JBQUFnRVVjRVFDQUxJQVpCOEFKcVFhTFpCeEFVSWdJZ0FTZ0NDRUVRYWhBbkRBWUxJQVlnQVNnQ0RCQlpOZ0lBSUFFb0FnZ2hEU01BUWVBQmF5SUNKQUFnQnlnQ3BBSWdCeWdDc0FJaUNVR1dBV3hCbGdGcVFlUUFia2tFUUNBSElBbEJBWFJCQW1vUW1Cd0xJd0JCRUdzaUNTUUFJQWtnQmpVQ0FEY0RBQ0FKRUxNTUlRd2dCeWdDcEFJaERpQUNJQXcyQXR3QklBSWdEQ0FPY0RZQzJBRWdDVUVRYWlRQUlBY29BcVFDSWhkQkFXc2hHQ0FHTlFJQUlUVWdCeWdDb0FJaEV5QUNLQUxjQVNFUUlBSW9BdGdCSVF4QkFDRU9Ba0FEUUNBT0lCZEhCRUFnRXlBTVFUQnNhaUlKTFFBZ1JRUkFJQUlnRFNnQ0lEWUNHQ0FDSUEwcEFoZzNBeEFnQWlBTktRSVFOd01JSUFrZ05UY0RBQ0FKSUFJcEF3ZzNBd2dnQ1NBQ0tRTVFOd01RSUFrZ0FpZ0NHRFlDR0NBSlFRRTZBQ0FnQWlnQzNBRWhEU0FUSUF4Qk1HeHFJZ3dnRGpZQ0xDQU1JQTAyQWlnZ0J5QUhLQUt3QWtFQmFqWUNzQUlnQnlBSEtBSzBBa0VCYWpZQ3RBSWdCaUFKUVFocU5nTEVBaUFHUVFBMkFzQUNEQU1MQWtBZ0NTZ0NLQ0FRUncwQUlBa3BBd0FnTlZJTkFDQUdRUUkyQXNBQ0lBWWdDVUVJYWpZQ3hBSU1Bd3NnRGlBSktBSXNTd1JBSUFJZ0RTZ0NJRFlDd0FFZ0FpQU5LUUlZTndPNEFTQUNJQTBwQWhBM0E3QUJJQUlnRGpZQzFBRWdBaUFRTmdMUUFTQUNJRFUzQTZnQklBSkJBVG9BeUFFZ0FrRUlhaUlPSUFKQnFBRnFJZzFCTUJCOUdpQU5JQWxCTUJCOUdpQUpJQTVCTUJCOUlRa2dBaUFDS0FMVUFVRUJhallDMUFFZ0J5QU1RUUZxSUFjb0FxUUNjQ0FORUpjY0lBY2dCeWdDc0FKQkFXbzJBckFDSUFjZ0J5Z0N0QUpCQVdvMkFyUUNJQVlnQ1VFSWFqWUN4QUlnQmtFQU5nTEFBZ3dEQlNBTVFRRnFRUUFnRENBWVJ4c2hEQ0FPUVFGcUlRNE1BZ3NBQ3dzZ0FrRUlha0dHdFFOQjZ3TkJEaUFDUWFnQmFoQWRJZ2tRRnlJTlFSaHFRWlkxRUE0YUlBMFFHQ0FHUWdBM0FzQUNJQWtRSGdzZ0FrSGdBV29rQUNBR0tBTEFBa0VDUncwQklCRUVmeUFSS0FJRUVKVWNCVUVBQ3lFRUlBWW9BZ0FoQWdKQUlBUUVRQ0FHUWRBQ2FpQUNFUFlFREFFTElBWkIwQUpxSUFJUVh3c2dCa0hnQW1vaUJFR1lrUWtnQmtIUUFtb2lDUkExSUFaQjhBSnFJZ0lnQkVIem1na1FMU0FMSUFJZ0FTZ0NDRUVRYWhBbklBSVFEeG9nQkJBUEdpQUpFQThhSUFzZ0FrRys3Z01RRkNJQ0lBWW9Bc1FDRUlZQkRBVUxJQTlCQkdvaER3d0RDeUFLUVFScUlRb01BQXNBQ3d0QkFTQUVEUUVhSUFzZ0JrSHdBbXBCcCtJREVCUWlBaUFJUVJCcUVDY0xJQUlRRHhwQkFBc2hDaUFIRUtvY0lBY1F1UndMSUFaQmdBTnFKQUFnQ2dzaEJDQUZRVUJyRUY0TElBVkI4QUJxRUNNZ0EwRUFJQVFiQ3lFQklBQWdHallDa0RRZ0FDQWJOZ0tVTkNBQUlCazJBb3cwREFFTFFRQWhBUXNnRkJDTEFpQUZRYUFCYWlRQUlBRU1Bd3NnQWtINDZ3OUdCRUFqQUVIZ0FHc2lBaVFBSUFJZ0FUWUNQQ0FBS0FJQUlBSkJQR29nQUVHUU5Hb2dBRUdJTkdvUTVnUWhCQ0FDS0FJOElRTWdBQ2dDQUNJQkVCd2dBVUhrQVdvZ0F5QUVFTGtCSUFRUTB3SWhCeUFBUWJnZGFpSUxFSTBDSUFCQnJCMXFJUVlDUUFKQUFrQWdBMFVOQUFKQUlBTW9BZ1FpQVVHNDh3OUdCRUFnQTBIZ0FHb2lDU2dDQUNJQklBTW9BbVJCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUkEyQWxRZ0FrR0Rod0UyQWxBZ0FpQUNLUU5RTndNSUlBQWdCU0FDUVFocUVFQU1CQXNnQWtFQU9nQkVJQUlnQ1RZQ1FDQUdJQUpCUUdzUVFRMEJEQU1MSUFGQjJJUVNSZ1JBSUFOQk9Hb2lDU2dDQUNJQklBTW9BanhCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTQyQWxRZ0FrSGtoZ0UyQWxBZ0FpQUNLUU5RTndNUUlBQWdCU0FDUVJCcUVFQU1CQXNnQWtFQU9nQkVJQUlnQ1RZQ1FDQUdJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFiandEMFlFUUNBRFFUUnFJZ2tvQWdBaUFTQURLQUk0UVFKMGFpRUlBa0FEUUNBQklBaEdEUUVnQUNBQktBSUFJZ1VRTXhvQ1FDQUZSUTBBSUFVb0FnUkJrSUlTUncwQUlBQWdCVUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VOTmdKVUlBSkJwb2NCTmdKUUlBSWdBaWtEVURjREdDQUFJQVVnQWtFWWFoQkFEQVFMSUFKQkFEb0FSQ0FDSUFrMkFrQWdCaUFDUVVCckVFRkZEUU1NQVFzZ0FVSDQ4QTlHQkVBZ0EwRXdhaUlKS0FJQUlnRWdBeWdDTkVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRHpZQ1ZDQUNRZk9HQVRZQ1VDQUNJQUlwQTFBM0F5QWdBQ0FGSUFKQklHb1FRQXdFQ3lBQ1FRQTZBRVFnQWlBSk5nSkFJQVlnQWtGQWF4QkJSUTBEREFFTElBRkIrUEVQUmdSQUlBTkJ5QUJxSWdrb0FnQWlBU0FES0FKTVFRSjBhaUVJQWtBRFFDQUJJQWhHRFFFZ0FDQUJLQUlBSWdVUU14b0NRQ0FGUlEwQUlBVW9BZ1JCa0lJU1J3MEFJQUFnQlVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUk5nSlVJQUpCbEljQk5nSlFJQUlnQWlrRFVEY0RLQ0FBSUFVZ0FrRW9haEJBREFRTElBSkJBRG9BUkNBQ0lBazJBa0FnQmlBQ1FVQnJFRUZGRFFNTUFRc2dBVUdJaFJKSERRRWdBMEV3YWlJSktBSUFJZ0VnQXlnQ05FRUNkR29oQ0FKQUEwQWdBU0FJUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVEWUNWQ0FDUWJTSEFUWUNVQ0FDSUFJcEExQTNBekFnQUNBRklBSkJNR29RUUF3REN5QUNRUUE2QUVRZ0FpQUpOZ0pBSUFZZ0FrRkFheEJCUlEwQ0N5QUFJQVFRakFJTElBQW9Bb3cwSVFnZ0FDQUVOZ0tNTkNBQUlBY2dBQ2dDa0RRaUNpQUhHellDa0RRZ0FDQUFLQUtVTkNJSFFRRnFJZ0UyQXBRMEFrQWdBVUdBQVU4RVFDQUNRVUJySWdGQi93QVFYeUFDUWRBQWFpSUVRYWFzQ2lBQkVEVWdBQ0FFSUFOQkVHb1FKeUFFRUE4YUlBRVFEeHBCQUNFQkRBRUxRUUFoQVNBQUlBSW9BandvQWlRUWhRSWlBMFVOQUNBQ0tBSThJZ2tvQWlRb0FnUWhCU0FBSUFrb0FpZ1FoUUlpQ1VVTkFDQUZRZWlERWtjRVFDQUFJQWtnQXlnQ0ZCQ0VBUkNXQWlJSlJRMEJDeUFBSUFrUTR3SWlDVVVOQUNBRUlBa3BBeUFpTlRjREdDQUZRZWlERWtjRVFDQUVJQU1wQXlBZ05ZUTNBeGdnQUNBREVOY1FDeUFFUVFBZ0JpQUNLQUk4SWdFZ0FFR29IV29nQVNnQ0tCQ25CUkNwSEJzaEFRc2dBQ0FLTmdLUU5DQUFJQWMyQXBRMElBQWdDRFlDakRRTUFRdEJBQ0VCQ3lBTEVJc0NJQUpCNEFCcUpBQWdBUXdEQ3lBQ1FianNEMFlFUUNNQVFlQUFheUlESkFBZ0F5QUJOZ0k4SUFBb0FnQWdBMEU4YWlBQVFaQTBhaUFBUVlnMGFoRG1CQ0VDSUFNb0Fqd2hCQ0FBS0FJQUlnRVFIQ0FCUWVRQmFpQUVJQUlRdVFFZ0FoRFRBaUVISUFCQnVCMXFJZ2tRalFJZ0FFR3NIV29oQmdKQUFrQUNRQ0FFUlEwQUFrQWdCQ2dDQkNJQlFianpEMFlFUUNBRVFlQUFhaUlMS0FJQUlnRWdCQ2dDWkVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRURZQ1ZDQURRWU9IQVRZQ1VDQURJQU1wQTFBM0F3Z2dBQ0FGSUFOQkNHb1FRQXdFQ3lBRFFRQTZBRVFnQXlBTE5nSkFJQVlnQTBGQWF4QkJEUUVNQXdzZ0FVSFloQkpHQkVBZ0JFRTRhaUlMS0FJQUlnRWdCQ2dDUEVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRGpZQ1ZDQURRZVNHQVRZQ1VDQURJQU1wQTFBM0F4QWdBQ0FGSUFOQkVHb1FRQXdFQ3lBRFFRQTZBRVFnQXlBTE5nSkFJQVlnQTBGQWF4QkJSUTBEREFFTElBRkJ1UEFQUmdSQUlBUkJOR29pQ3lnQ0FDSUJJQVFvQWpoQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVEwMkFsUWdBMEdtaHdFMkFsQWdBeUFES1FOUU53TVlJQUFnQlNBRFFSaHFFRUFNQkFzZ0EwRUFPZ0JFSUFNZ0N6WUNRQ0FHSUFOQlFHc1FRVVVOQXd3QkN5QUJRZmp3RDBZRVFDQUVRVEJxSWdzb0FnQWlBU0FFS0FJMFFRSjBhaUVJQWtBRFFDQUJJQWhHRFFFZ0FDQUJLQUlBSWdVUU14b0NRQ0FGUlEwQUlBVW9BZ1JCa0lJU1J3MEFJQUFnQlVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQTBFUE5nSlVJQU5CODRZQk5nSlFJQU1nQXlrRFVEY0RJQ0FBSUFVZ0EwRWdhaEJBREFRTElBTkJBRG9BUkNBRElBczJBa0FnQmlBRFFVQnJFRUZGRFFNTUFRc2dBVUg0OFE5R0JFQWdCRUhJQUdvaUN5Z0NBQ0lCSUFRb0FreEJBblJxSVFnQ1FBTkFJQUVnQ0VZTkFTQUFJQUVvQWdBaUJSQXpHZ0pBSUFWRkRRQWdCU2dDQkVHUWdoSkhEUUFnQUNBRlFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBRFFSRTJBbFFnQTBHVWh3RTJBbEFnQXlBREtRTlFOd01vSUFBZ0JTQURRU2hxRUVBTUJBc2dBMEVBT2dCRUlBTWdDellDUUNBR0lBTkJRR3NRUVVVTkF3d0JDeUFCUVlpRkVrY05BU0FFUVRCcUlnc29BZ0FpQVNBRUtBSTBRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVFOZ0pVSUFOQnRJY0JOZ0pRSUFNZ0F5a0RVRGNETUNBQUlBVWdBMEV3YWhCQURBTUxJQU5CQURvQVJDQURJQXMyQWtBZ0JpQURRVUJyRUVGRkRRSUxJQUFnQWhDTUFnc2dBQ2dDakRRaEJTQUFJQUkyQW93MElBQWdCeUFBS0FLUU5DSUxJQWNiTmdLUU5DQUFJQUFvQXBRMElnZEJBV29pQVRZQ2xEUUNmeUFCUVlBQlR3UkFJQU5CUUdzaUFVSC9BQkJmSUFOQjBBQnFJZ0pCcHF3S0lBRVFOU0FBSUFJZ0JFRVFhaEFuSUFJUUR4b2dBUkFQR2tFQURBRUxJQUpDQWpjREdDQUNJVEJCQUNFbkl3QkJFR3NpQkNRQUFuOENRQUovSUFJaUFSQzJIQVJBSUFJUTB3SU1BUXNEUUVFQUlBSW9BZ3dpQWtVTkFSb2dBaEMySEVVTkFBc2dBaERUQWd0RkJFQWdCaUFFUWRya0F4QVVJZ0lnQVNnQ0NFRVFhaEFuREFFTFFRRkJBU0FCRUpBUVJRMEJHaUFHSUFSQmtvZ0lFQlFpQWlBQktBSUlRUkJxRUNjTElBSVFEeHBCQUFzaEFTQUVRUkJxSkFBZ01DQW5JQUViQ3lFQklBQWdDellDa0RRZ0FDQUhOZ0tVTkNBQUlBVTJBb3cwREFFTFFRQWhBUXNnQ1JDTEFpQURRZUFBYWlRQUlBRU1Bd3NnQWtHQWhCSkdCRUFqQUVIZ0FHc2lBaVFBSUFJZ0FUWUNQQ0FBS0FJQUlnRVFIQ0FCUWFnQmFpSUVJU2dnQkJEeEJTRURJQUlvQWp3aEJpQUFRWkEwYWlnQ0FDRUZJQUJCaURScUtBSUFJUWNqQUVFUWF5SUJKQUFnQVNBRk5nSUlJQUVnQmpZQ0RDQUJJQWMyQWdRZ0F5QUJLQUlNSUFFb0FnZ2dBU2dDQkJEc0JTSURRY0NQRWpZQ0JDQURRZkNQRWpZQ0FDQURRUUEyQXV3Q0lBTkI0SThTTmdJQUlBRkJFR29rQUNBb0lBTWlCaEFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUNLQUk4SVFNZ0FDZ0NBQ0lCRUJ3Z0FVSGtBV29nQXlBR0VMa0JJQUJCdUIxcUlnY1FqUUlnQUVHc0hXb2hCUUpBQWtBQ1FDQURSUTBBQWtBZ0F5Z0NCQ0lCUWJqekQwWUVRQ0FEUWVBQWFpSUpLQUlBSWdFZ0F5Z0NaRUVDZEdvaEN3SkFBMEFnQVNBTFJnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJFRFlDVkNBQ1FZT0hBVFlDVUNBQ0lBSXBBMUEzQXdnZ0FDQUVJQUpCQ0dvUVFBd0VDeUFDUVFBNkFFUWdBaUFKTmdKQUlBVWdBa0ZBYXhCQkRRRU1Bd3NnQVVIWWhCSkdCRUFnQTBFNGFpSUpLQUlBSWdFZ0F5Z0NQRUVDZEdvaEN3SkFBMEFnQVNBTFJnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEallDVkNBQ1FlU0dBVFlDVUNBQ0lBSXBBMUEzQXhBZ0FDQUVJQUpCRUdvUVFBd0VDeUFDUVFBNkFFUWdBaUFKTmdKQUlBVWdBa0ZBYXhCQlJRMEREQUVMSUFGQnVQQVBSZ1JBSUFOQk5Hb2lDU2dDQUNJQklBTW9BamhCQW5ScUlRc0NRQU5BSUFFZ0MwWU5BU0FBSUFFb0FnQWlCQkF6R2dKQUlBUkZEUUFnQkNnQ0JFR1FnaEpIRFFBZ0FDQUVRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTAyQWxRZ0FrR21od0UyQWxBZ0FpQUNLUU5RTndNWUlBQWdCQ0FDUVJocUVFQU1CQXNnQWtFQU9nQkVJQUlnQ1RZQ1FDQUZJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFmandEMFlFUUNBRFFUQnFJZ2tvQWdBaUFTQURLQUkwUVFKMGFpRUxBa0FEUUNBQklBdEdEUUVnQUNBQktBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VQTmdKVUlBSkI4NFlCTmdKUUlBSWdBaWtEVURjRElDQUFJQVFnQWtFZ2FoQkFEQVFMSUFKQkFEb0FSQ0FDSUFrMkFrQWdCU0FDUVVCckVFRkZEUU1NQVFzZ0FVSDQ4UTlHQkVBZ0EwSElBR29pQ1NnQ0FDSUJJQU1vQWt4QkFuUnFJUXNDUUFOQUlBRWdDMFlOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJFMkFsUWdBa0dVaHdFMkFsQWdBaUFDS1FOUU53TW9JQUFnQkNBQ1FTaHFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0NUWUNRQ0FGSUFKQlFHc1FRVVVOQXd3QkN5QUJRWWlGRWtjTkFTQURRVEJxSWdrb0FnQWlBU0FES0FJMFFRSjBhaUVMQWtBRFFDQUJJQXRHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUU5nSlVJQUpCdEljQk5nSlFJQUlnQWlrRFVEY0RNQ0FBSUFRZ0FrRXdhaEJBREFNTElBSkJBRG9BUkNBQ0lBazJBa0FnQlNBQ1FVQnJFRUZGRFFJTElBQWdCaENNQWdzZ0FDZ0NqRFFoQ1NBQUlBWTJBb3cwSUFBZ0JpQUFLQUtRTkNJTElBWWJOZ0tRTkNBQUlBQW9BcFEwSWdoQkFXb2lBVFlDbERRQ2Z3SkFBa0FnQVVHQUFVOEVRQ0FDUVVCcklnRkIvd0FRWHlBQ1FkQUFhaUlFUWFhc0NpQUJFRFVnQUNBRUlBTkJFR29RSnlBRUVBOGFJQUVRRHhvTUFRc2dBQ0FBSUFJb0Fqd29BaVFRaFFJUTR3SWlBUTBCQzBFQURBRUxJQVlnQVRZQzdBSWdCaUFCS1FNZ1FnS0VOd01ZSUFBb0FvdzBJUVFqQUVFZ2F5SUJKQUFDZndKQUlBWW9BdXdDS0FJVUVJUUJJZ01vQWdSQjBLVVNSd1JBSUFFZ0JTZ0NDQ0FERUtjQklBRkJFR29pQTBHRXlBa2dBUkExSUFVZ0F5QUdLQUxzQWlnQ0NFRVFhaEFuSUFNUUR4b2dBUkFQR2d3QkN3SkFBMEFnQkVVTkFTQUVLQUlFSWdOQjRKUVNSZzBCSUFOQitKUVNSd1JBSUFRb0Fnd2hCQXdCQ3d0QkFTQUVFTllMSWdNb0FraEJBblFnQXlnQ1JHcEJCR3NvQWdBZ0JpZ0NDRVlOQWhvZ0JTQUJRUkJxSWdOQmpKb0RFQlFpQ2lBR0tBSUlRUkJxRUNjZ0NoQVBHaUFGSUFOQmxPMERFQlFpQXlBRUtBSUlRUkJxRUlZQklBTVFEeG9NQVFzZ0JTQUJRUkJxUWNhYUF4QVVJZ01nQmlnQ0NFRVFhaEFuSUFNUUR4b0xRUUFMSVFNZ0FVRWdhaVFBSUFaQkFDQURHd3NoQVNBQUlBczJBcEEwSUFBZ0NEWUNsRFFnQUNBSk5nS01OQXdCQzBFQUlRRUxJQWNRaXdJZ0FrSGdBR29rQUNBQkRBTUxJQUpCK080UFJnUkFJd0JCNEFCcklnSWtBQ0FDSUFFMkFqd2dBQ2dDQUNBQ1FUeHFJQUJCa0RScUlBQkJpRFJxRU9ZRUlRa2dBaWdDUENFRElBQW9BZ0FpQVJBY0lBRkI1QUZxSUFNZ0NSQzVBU0FKRU5NQ0lRVWdBRUc0SFdvaUJ4Q05BZ0pBQWtBQ1FDQURSUTBBSUFCQnJCMXFJUVFDUUNBREtBSUVJZ0ZCdVBNUFJnUkFJQU5CNEFCcUlnc29BZ0FpQVNBREtBSmtRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnWVFNeG9DUUNBR1JRMEFJQVlvQWdSQmtJSVNSdzBBSUFBZ0JrRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRVFOZ0pVSUFKQmc0Y0JOZ0pRSUFJZ0Fpa0RVRGNEQ0NBQUlBWWdBa0VJYWhCQURBUUxJQUpCQURvQVJDQUNJQXMyQWtBZ0JDQUNRVUJyRUVFTkFRd0RDeUFCUWRpRUVrWUVRQ0FEUVRocUlnc29BZ0FpQVNBREtBSThRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnWVFNeG9DUUNBR1JRMEFJQVlvQWdSQmtJSVNSdzBBSUFBZ0JrRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRU9OZ0pVSUFKQjVJWUJOZ0pRSUFJZ0Fpa0RVRGNERUNBQUlBWWdBa0VRYWhCQURBUUxJQUpCQURvQVJDQUNJQXMyQWtBZ0JDQUNRVUJyRUVGRkRRTU1BUXNnQVVHNDhBOUdCRUFnQTBFMGFpSUxLQUlBSWdFZ0F5Z0NPRUVDZEdvaENBSkFBMEFnQVNBSVJnMEJJQUFnQVNnQ0FDSUdFRE1hQWtBZ0JrVU5BQ0FHS0FJRVFaQ0NFa2NOQUNBQUlBWkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEVFlDVkNBQ1FhYUhBVFlDVUNBQ0lBSXBBMUEzQXhnZ0FDQUdJQUpCR0dvUVFBd0VDeUFDUVFBNkFFUWdBaUFMTmdKQUlBUWdBa0ZBYXhCQlJRMEREQUVMSUFGQitQQVBSZ1JBSUFOQk1Hb2lDeWdDQUNJQklBTW9BalJCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCaEF6R2dKQUlBWkZEUUFnQmlnQ0JFR1FnaEpIRFFBZ0FDQUdRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTgyQWxRZ0FrSHpoZ0UyQWxBZ0FpQUNLUU5RTndNZ0lBQWdCaUFDUVNCcUVFQU1CQXNnQWtFQU9nQkVJQUlnQ3pZQ1FDQUVJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFmanhEMFlFUUNBRFFjZ0FhaUlMS0FJQUlnRWdBeWdDVEVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lHRURNYUFrQWdCa1VOQUNBR0tBSUVRWkNDRWtjTkFDQUFJQVpCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRVRZQ1ZDQUNRWlNIQVRZQ1VDQUNJQUlwQTFBM0F5Z2dBQ0FHSUFKQktHb1FRQXdFQ3lBQ1FRQTZBRVFnQWlBTE5nSkFJQVFnQWtGQWF4QkJSUTBEREFFTElBRkJpSVVTUncwQklBTkJNR29pQ3lnQ0FDSUJJQU1vQWpSQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQmhBekdnSkFJQVpGRFFBZ0JpZ0NCRUdRZ2hKSERRQWdBQ0FHUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJBMkFsUWdBa0cwaHdFMkFsQWdBaUFDS1FOUU53TXdJQUFnQmlBQ1FUQnFFRUFNQXdzZ0FrRUFPZ0JFSUFJZ0N6WUNRQ0FFSUFKQlFHc1FRVVVOQWdzZ0FDQUpFSXdDQ3lBQUtBS01OQ0VHSUFBZ0NUWUNqRFFnQUNBRklBQW9BcEEwSWdzZ0JSczJBcEEwSUFBZ0FDZ0NsRFFpQlVFQmFpSUJOZ0tVTkFKQUFrQUNRQ0FCUVlBQlR3UkFJQUpCUUdzaUFVSC9BQkJmSUFKQjBBQnFJZ1JCcHF3S0lBRVFOU0FBSUFRZ0EwRVFhaEFuSUFRUUR4b2dBUkFQR2d3QkN5QUFJQUlvQWp3b0FpUVFoUUlpQVEwQkMwRUFJUWtNQVFzZ0NTQUJLUU1nTndNWUN5QUFJQXMyQXBBMElBQWdCVFlDbERRZ0FDQUdOZ0tNTkF3QkMwRUFJUWtMSUFjUWl3SWdBa0hnQUdva0FDQUpEQU1MSUFKQndJUVNSZ1JBSXdCQjRBQnJJZ0lrQUNBQ0lBRTJBalFnQUNnQ0FDQUNRVFJxSUFCQmtEUnFJQUJCaURScUVPWUVJUVlnQWlnQ05DRURJQUFvQWdBaUFSQWNJQUZCNUFGcUlBTWdCaEM1QVNBR0VOTUNJUWNnQUVHNEhXb2lDUkNOQWlBQVFhd2RhaUVFQWtBQ1FBSkFJQU5GRFFBQ1FDQURLQUlFSWdGQnVQTVBSZ1JBSUFOQjRBQnFJZ3NvQWdBaUFTQURLQUprUVFKMGFpRUlBa0FEUUNBQklBaEdEUUVnQUNBQktBSUFJZ1VRTXhvQ1FDQUZSUTBBSUFVb0FnUkJrSUlTUncwQUlBQWdCVUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VRTmdKTUlBSkJnNGNCTmdKSUlBSWdBaWtEU0RjREFDQUFJQVVnQWhCQURBUUxJQUpCQURvQVBDQUNJQXMyQWpnZ0JDQUNRVGhxRUVFTkFRd0RDeUFCUWRpRUVrWUVRQ0FEUVRocUlnc29BZ0FpQVNBREtBSThRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRU9OZ0pNSUFKQjVJWUJOZ0pJSUFJZ0Fpa0RTRGNEQ0NBQUlBVWdBa0VJYWhCQURBUUxJQUpCQURvQVBDQUNJQXMyQWpnZ0JDQUNRVGhxRUVGRkRRTU1BUXNnQVVHNDhBOUdCRUFnQTBFMGFpSUxLQUlBSWdFZ0F5Z0NPRUVDZEdvaENBSkFBMEFnQVNBSVJnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEVFlDVENBQ1FhYUhBVFlDU0NBQ0lBSXBBMGczQXhBZ0FDQUZJQUpCRUdvUVFBd0VDeUFDUVFBNkFEd2dBaUFMTmdJNElBUWdBa0U0YWhCQlJRMEREQUVMSUFGQitQQVBSZ1JBSUFOQk1Hb2lDeWdDQUNJQklBTW9BalJCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTgyQWt3Z0FrSHpoZ0UyQWtnZ0FpQUNLUU5JTndNWUlBQWdCU0FDUVJocUVFQU1CQXNnQWtFQU9nQThJQUlnQ3pZQ09DQUVJQUpCT0dvUVFVVU5Bd3dCQ3lBQlFmanhEMFlFUUNBRFFjZ0FhaUlMS0FJQUlnRWdBeWdDVEVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRVRZQ1RDQUNRWlNIQVRZQ1NDQUNJQUlwQTBnM0F5QWdBQ0FGSUFKQklHb1FRQXdFQ3lBQ1FRQTZBRHdnQWlBTE5nSTRJQVFnQWtFNGFoQkJSUTBEREFFTElBRkJpSVVTUncwQklBTkJNR29pQ3lnQ0FDSUJJQU1vQWpSQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJBMkFrd2dBa0cwaHdFMkFrZ2dBaUFDS1FOSU53TW9JQUFnQlNBQ1FTaHFFRUFNQXdzZ0FrRUFPZ0E4SUFJZ0N6WUNPQ0FFSUFKQk9Hb1FRVVVOQWdzZ0FDQUdFSXdDQ3lBQUtBS01OQ0VMSUFBZ0JqWUNqRFFnQUNBSElBQW9BcEEwSWdnZ0J4czJBcEEwSUFBZ0FDZ0NsRFFpQjBFQmFpSUJOZ0tVTkFKQUlBRkJnQUZQQkVBZ0FrRTRhaUlCUWY4QUVGOGdBa0hJQUdvaUJFR21yQW9nQVJBMUlBQWdCQ0FEUVJCcUVDY2dCQkFQR2lBQkVBOGFRUUFoQVF3QkMwRUFJUUVnQUNBQ0tBSTBLQUlrRUlVQ0lnTkZEUUFnQUNBQUlBSW9BalFvQWlnUWhRSVE0d0lpQlVVTkFDQUFJQU1RMXhBZ0JpQUZLUU1nSUFNcEF5Q0VOd01ZSUFNb0FoUVFoQUVoQ2lBRktBSVVFSVFCSVEwZ0F5Z0NHQ0FGS0FJWUVOZ0dJUU1nQWtISUFHb2dBQ2dDRUNJRklBSW9BalFpRENnQ0xDQUtJQTBnQXlBTVFSQnFRUUVnQlNnQ0FDZ0NFQkVRQUNBQ0tBSklJZ05GRFFBZ0JrRUFJQVFnQWlnQ05DQURFS2tjR3lFQkN5QUFJQWcyQXBBMElBQWdCellDbERRZ0FDQUxOZ0tNTkF3QkMwRUFJUUVMSUFrUWl3SWdBa0hnQUdva0FDQUJEQU1MSUFKQnVPOFBSZ1JBSXdCQjRBQnJJZ0lrQUNBQ0lBRTJBandnQUNnQ0FDQUNRVHhxSUFCQmtEUnFJQUJCaURScUVPWUVJUVlnQWlnQ1BDRURJQUFvQWdBaUFSQWNJQUZCNUFGcUlBTWdCaEM1QVNBR0VOTUNJUWNnQUVHNEhXb2lDUkNOQWlBQVFhd2RhaUVGQWtBQ1FBSkFJQU5GRFFBQ1FDQURLQUlFSWdGQnVQTVBSZ1JBSUFOQjRBQnFJZ3NvQWdBaUFTQURLQUprUVFKMGFpRUlBa0FEUUNBQklBaEdEUUVnQUNBQktBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VRTmdKVUlBSkJnNGNCTmdKUUlBSWdBaWtEVURjRENDQUFJQVFnQWtFSWFoQkFEQVFMSUFKQkFEb0FSQ0FDSUFzMkFrQWdCU0FDUVVCckVFRU5BUXdEQ3lBQlFkaUVFa1lFUUNBRFFUaHFJZ3NvQWdBaUFTQURLQUk4UVFKMGFpRUlBa0FEUUNBQklBaEdEUUVnQUNBQktBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VPTmdKVUlBSkI1SVlCTmdKUUlBSWdBaWtEVURjREVDQUFJQVFnQWtFUWFoQkFEQVFMSUFKQkFEb0FSQ0FDSUFzMkFrQWdCU0FDUVVCckVFRkZEUU1NQVFzZ0FVRzQ4QTlHQkVBZ0EwRTBhaUlMS0FJQUlnRWdBeWdDT0VFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lFRURNYUFrQWdCRVVOQUNBRUtBSUVRWkNDRWtjTkFDQUFJQVJCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRFRZQ1ZDQUNRYWFIQVRZQ1VDQUNJQUlwQTFBM0F4Z2dBQ0FFSUFKQkdHb1FRQXdFQ3lBQ1FRQTZBRVFnQWlBTE5nSkFJQVVnQWtGQWF4QkJSUTBEREFFTElBRkIrUEFQUmdSQUlBTkJNR29pQ3lnQ0FDSUJJQU1vQWpSQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVE4MkFsUWdBa0h6aGdFMkFsQWdBaUFDS1FOUU53TWdJQUFnQkNBQ1FTQnFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0N6WUNRQ0FGSUFKQlFHc1FRVVVOQXd3QkN5QUJRZmp4RDBZRVFDQURRY2dBYWlJTEtBSUFJZ0VnQXlnQ1RFRUNkR29oQ0FKQUEwQWdBU0FJUmcwQklBQWdBU2dDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FBSUFSQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVUWUNWQ0FDUVpTSEFUWUNVQ0FDSUFJcEExQTNBeWdnQUNBRUlBSkJLR29RUUF3RUN5QUNRUUE2QUVRZ0FpQUxOZ0pBSUFVZ0FrRkFheEJCUlEwRERBRUxJQUZCaUlVU1J3MEJJQU5CTUdvaUN5Z0NBQ0lCSUFNb0FqUkJBblJxSVFnQ1FBTkFJQUVnQ0VZTkFTQUFJQUVvQWdBaUJCQXpHZ0pBSUFSRkRRQWdCQ2dDQkVHUWdoSkhEUUFnQUNBRVFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBQ1FSQTJBbFFnQWtHMGh3RTJBbEFnQWlBQ0tRTlFOd013SUFBZ0JDQUNRVEJxRUVBTUF3c2dBa0VBT2dCRUlBSWdDellDUUNBRklBSkJRR3NRUVVVTkFnc2dBQ0FHRUl3Q0N5QUFLQUtNTkNFTElBQWdCallDakRRZ0FDQUhJQUFvQXBBMElnZ2dCeHMyQXBBMElBQWdBQ2dDbERRaUIwRUJhaUlCTmdLVU5BSi9JQUZCZ0FGUEJFQWdBa0ZBYXlJQlFmOEFFRjhnQWtIUUFHb2lCRUdtckFvZ0FSQTFJQUFnQkNBRFFSQnFFQ2NnQkJBUEdpQUJFQThhUVFBTUFRc2dCa0lFTndNWUFrQWdCaERORUNJQlJRMEFJQUVvQXV3Q0RRQWdBaWdDUENFRElBRWdBU2dDNUFJMkF2QUNJQUVnQXpZQzdBSUxJQVloTVVFQUlTa2dBQ2dDakRRaEF5TUFRUkJySWdFa0FFRUJJUVFDUUVFQklBTVFrQkFpQXdSQUlBVWdBVUgxeXdBUUZDSUVJQVlvQWdoQkVHb1FKeUFFRUE4YVFRQWhCQ0FESUFZb0FnaEdEUUVnQXlBR0tBSU1LQUlJUmcwQklBVWdBVUdVN1FNUUZDSUdJQU5CRUdvUWhnRWdCaEFQR2d3QkN5QUdFTTBRRFFBZ0JTQUJRWUswQWhBVUlnTWdCaWdDQ0VFUWFoQW5JQU1RRHhwQkFDRUVDeUFCUVJCcUpBQWdNU0FwSUFRYkN5RUJJQUFnQ0RZQ2tEUWdBQ0FITmdLVU5DQUFJQXMyQW93MERBRUxRUUFoQVFzZ0NSQ0xBaUFDUWVBQWFpUUFJQUVNQXdzZ0FrSDQ3dzlHQkVBakFFSGdBR3NpQWlRQUlBSWdBVFlDUENBQUtBSUFJQUpCUEdvZ0FFR1FOR29nQUVHSU5Hb2lCeERtQkNFSklBSW9BandoQXlBQUtBSUFJZ0VRSENBQlFlUUJhaUFESUFrUXVRRWdDUkRUQWlFRklBQkJ1QjFxSWdzUWpRSUNRQUpBQWtBZ0EwVU5BQ0FBUWF3ZGFpRUVBa0FnQXlnQ0JDSUJRYmp6RDBZRVFDQURRZUFBYWlJSUtBSUFJZ0VnQXlnQ1pFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJR0VETWFBa0FnQmtVTkFDQUdLQUlFUVpDQ0VrY05BQ0FBSUFaQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVEWUNWQ0FDUVlPSEFUWUNVQ0FDSUFJcEExQTNBd2dnQUNBR0lBSkJDR29RUUF3RUN5QUNRUUE2QUVRZ0FpQUlOZ0pBSUFRZ0FrRkFheEJCRFFFTUF3c2dBVUhZaEJKR0JFQWdBMEU0YWlJSUtBSUFJZ0VnQXlnQ1BFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJR0VETWFBa0FnQmtVTkFDQUdLQUlFUVpDQ0VrY05BQ0FBSUFaQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkRqWUNWQ0FDUWVTR0FUWUNVQ0FDSUFJcEExQTNBeEFnQUNBR0lBSkJFR29RUUF3RUN5QUNRUUE2QUVRZ0FpQUlOZ0pBSUFRZ0FrRkFheEJCUlEwRERBRUxJQUZCdVBBUFJnUkFJQU5CTkdvaUNDZ0NBQ0lCSUFNb0FqaEJBblJxSVFvQ1FBTkFJQUVnQ2tZTkFTQUFJQUVvQWdBaUJoQXpHZ0pBSUFaRkRRQWdCaWdDQkVHUWdoSkhEUUFnQUNBR1FTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBQ1FRMDJBbFFnQWtHbWh3RTJBbEFnQWlBQ0tRTlFOd01ZSUFBZ0JpQUNRUmhxRUVBTUJBc2dBa0VBT2dCRUlBSWdDRFlDUUNBRUlBSkJRR3NRUVVVTkF3d0JDeUFCUWZqd0QwWUVRQ0FEUVRCcUlnZ29BZ0FpQVNBREtBSTBRUUowYWlFS0FrQURRQ0FCSUFwR0RRRWdBQ0FCS0FJQUlnWVFNeG9DUUNBR1JRMEFJQVlvQWdSQmtJSVNSdzBBSUFBZ0JrRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRVBOZ0pVSUFKQjg0WUJOZ0pRSUFJZ0Fpa0RVRGNESUNBQUlBWWdBa0VnYWhCQURBUUxJQUpCQURvQVJDQUNJQWcyQWtBZ0JDQUNRVUJyRUVGRkRRTU1BUXNnQVVINDhROUdCRUFnQTBISUFHb2lDQ2dDQUNJQklBTW9Ba3hCQW5ScUlRb0NRQU5BSUFFZ0NrWU5BU0FBSUFFb0FnQWlCaEF6R2dKQUlBWkZEUUFnQmlnQ0JFR1FnaEpIRFFBZ0FDQUdRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUkUyQWxRZ0FrR1Vod0UyQWxBZ0FpQUNLUU5RTndNb0lBQWdCaUFDUVNocUVFQU1CQXNnQWtFQU9nQkVJQUlnQ0RZQ1FDQUVJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFZaUZFa2NOQVNBRFFUQnFJZ2dvQWdBaUFTQURLQUkwUVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1lRTXhvQ1FDQUdSUTBBSUFZb0FnUkJrSUlTUncwQUlBQWdCa0VrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VRTmdKVUlBSkJ0SWNCTmdKUUlBSWdBaWtEVURjRE1DQUFJQVlnQWtFd2FoQkFEQU1MSUFKQkFEb0FSQ0FDSUFnMkFrQWdCQ0FDUVVCckVFRkZEUUlMSUFBZ0NSQ01BZ3NnQUNnQ2pEUWhCaUFBSUFrMkFvdzBJQUFnQlNBQUtBS1FOQ0lJSUFVYk5nS1FOQ0FBSUFBb0FwUTBJZ1ZCQVdvaUFUWUNsRFFDUUNBQlFZQUJUd1JBSUFKQlFHc2lBVUgvQUJCZklBSkIwQUJxSWdSQnBxd0tJQUVRTlNBQUlBUWdBMEVRYWhBbklBUVFEeG9nQVJBUEdrRUFJUWtNQVFzZ0J5Z0NBQ0lCS0FMd0NRMEFJQUVnQ1RZQzhBa0xJQUFnQ0RZQ2tEUWdBQ0FGTmdLVU5DQUFJQVkyQW93MERBRUxRUUFoQ1FzZ0N4Q0xBaUFDUWVBQWFpUUFJQWtNQXdzZ0FrSHdoQkpHQkVBakFFSGdBR3NpQXlRQUlBTWdBVFlDUENBQUtBSUFJQU5CUEdvZ0FFR1FOR29nQUVHSU5Hb1E1Z1FoQmlBREtBSThJUVFnQUNnQ0FDSUJFQndnQVVIa0FXb2dCQ0FHRUxrQklBWVEwd0loQnlBQVFiZ2RhaUlKRUkwQ0lBQkJyQjFxSVFJQ1FBSkFBa0FnQkVVTkFBSkFJQVFvQWdRaUFVRzQ4dzlHQkVBZ0JFSGdBR29pQ3lnQ0FDSUJJQVFvQW1SQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVJBMkFsUWdBMEdEaHdFMkFsQWdBeUFES1FOUU53TUlJQUFnQlNBRFFRaHFFRUFNQkFzZ0EwRUFPZ0JFSUFNZ0N6WUNRQ0FDSUFOQlFHc1FRUTBCREFNTElBRkIySVFTUmdSQUlBUkJPR29pQ3lnQ0FDSUJJQVFvQWp4QkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVE0MkFsUWdBMEhraGdFMkFsQWdBeUFES1FOUU53TVFJQUFnQlNBRFFSQnFFRUFNQkFzZ0EwRUFPZ0JFSUFNZ0N6WUNRQ0FDSUFOQlFHc1FRVVVOQXd3QkN5QUJRYmp3RDBZRVFDQUVRVFJxSWdzb0FnQWlBU0FFS0FJNFFRSjBhaUVJQWtBRFFDQUJJQWhHRFFFZ0FDQUJLQUlBSWdVUU14b0NRQ0FGUlEwQUlBVW9BZ1JCa0lJU1J3MEFJQUFnQlVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQTBFTk5nSlVJQU5CcG9jQk5nSlFJQU1nQXlrRFVEY0RHQ0FBSUFVZ0EwRVlhaEJBREFRTElBTkJBRG9BUkNBRElBczJBa0FnQWlBRFFVQnJFRUZGRFFNTUFRc2dBVUg0OEE5R0JFQWdCRUV3YWlJTEtBSUFJZ0VnQkNnQ05FRUNkR29oQ0FKQUEwQWdBU0FJUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFOQkR6WUNWQ0FEUWZPR0FUWUNVQ0FESUFNcEExQTNBeUFnQUNBRklBTkJJR29RUUF3RUN5QURRUUE2QUVRZ0F5QUxOZ0pBSUFJZ0EwRkFheEJCUlEwRERBRUxJQUZCK1BFUFJnUkFJQVJCeUFCcUlnc29BZ0FpQVNBRUtBSk1RUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVJOZ0pVSUFOQmxJY0JOZ0pRSUFNZ0F5a0RVRGNES0NBQUlBVWdBMEVvYWhCQURBUUxJQU5CQURvQVJDQURJQXMyQWtBZ0FpQURRVUJyRUVGRkRRTU1BUXNnQVVHSWhSSkhEUUVnQkVFd2FpSUxLQUlBSWdFZ0JDZ0NORUVDZEdvaENBSkFBMEFnQVNBSVJnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBTkJFRFlDVkNBRFFiU0hBVFlDVUNBRElBTXBBMUEzQXpBZ0FDQUZJQU5CTUdvUVFBd0RDeUFEUVFBNkFFUWdBeUFMTmdKQUlBSWdBMEZBYXhCQlJRMENDeUFBSUFZUWpBSUxJQUFvQW93MElRc2dBQ0FHTmdLTU5DQUFJQWNnQUNnQ2tEUWlDQ0FIR3pZQ2tEUWdBQ0FBS0FLVU5DSUtRUUZxSWdFMkFwUTBBbjhDUUFKQUlBRkJnQUZQQkVBZ0EwRkFheUlCUWY4QUVGOGdBMEhRQUdvaUFrR21yQW9nQVJBMUlBQWdBaUFFUVJCcUVDY2dBaEFQR2lBQkVBOGFEQUVMSUFBZ0F5Z0NQQ2dDSkJDRkFpSUJEUUVMUVFBTUFRc2dCaUFCS1FNZ053TVlJQUFnQVJEWEVDQUdJVEpCQUNFcUlBTW9BandoQlNNQVFUQnJJZ1FrQUFKL0FrQUNRQ0FDSWdFb0FnZ2dCU2dDSkNJR0VLZ2NJZ0pGRFFBZ0FpZ0NMQ2dDQ0NJQ1JRMEFBbjlCNHVBQklBSW9BZ1FpQjBHdzZ3OUdEUUFhUVl1QUNTQUhRZUQ1RDBZTkFCb2dCMEhvK1JGSERRRkJ3WVFKQ3lFSElBRWdCRUVnYWlJRklBY1FGQ0lISUFaQkVHb1FKeUFIRUE4YUlBUWdBaWdDSkVFa2FoQlRJQVJCRUdvaUJrSHptZ2tnQkJBMUlBVWdCa0c5NmdZUUxTQUJJQVVnQWtFUWFoQ0dBU0FGRUE4YUlBWVFEeG9nQkJBUEdnd0JDd0pBSUFFb0FnZ2dCaENuQlNJQ0JFQWdBaWdDQkVHNHJSSkdEUUVMSUFRZ0FTZ0NDQ0FDRUtjQklBUkJFR29pQWtHc2xRa2dCQkExSUFSQklHb2lCU0FDUWZPYUNSQXRJQUVnQlNBR1FSQnFFQ2NnQlJBUEdpQUNFQThhSUFRUUR4b01BUXNnQWlnQ0dCRHpCMFVFUUNBRVFSQnFJZ0lnQkVFZ2FrSFAwd0JCNnRNQUlBVXRBQ2diRUJRaUJVR3RqUUlRdUFJZ0FTQUNJQVpCRUdvUUp5QUNFQThhSUFVUUR4b01BUXRCQVNBQ0tBSWdRUUZIRFFFYUlBUWdBU2dDQ0NBQ0VKa2RJQVJCRUdvaUFrR3drUWtnQkJBMUlBUkJJR29pQmlBQ1FmT2FDUkF0SUFFZ0JpQUZRUkJxRUNjZ0JoQVBHaUFDRUE4YUlBUVFEeG9MUVFBTElRRWdCRUV3YWlRQUlESWdLaUFCR3dzaEFTQUFJQWcyQXBBMElBQWdDallDbERRZ0FDQUxOZ0tNTkF3QkMwRUFJUUVMSUFrUWl3SWdBMEhnQUdva0FDQUJEQU1MSUFKQnVQRVBSZ1JBSXdCQjRBQnJJZ0lrQUNBQ0lBRTJBandnQUNnQ0FDQUNRVHhxSUFCQmtEUnFJQUJCaURScUlna1E1Z1FoQlNBQ0tBSThJUU1nQUNnQ0FDSUJFQndnQVVIa0FXb2dBeUFGRUxrQklBVVEwd0loQnlBQVFiZ2RhaUlJRUkwQ0lBQkJyQjFxSVFZQ1FBSkFBa0FnQTBVTkFBSkFJQU1vQWdRaUFVRzQ4dzlHQkVBZ0EwSGdBR29pQ3lnQ0FDSUJJQU1vQW1SQkFuUnFJUW9DUUFOQUlBRWdDa1lOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJBMkFsUWdBa0dEaHdFMkFsQWdBaUFDS1FOUU53TUlJQUFnQkNBQ1FRaHFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0N6WUNRQ0FHSUFKQlFHc1FRUTBCREFNTElBRkIySVFTUmdSQUlBTkJPR29pQ3lnQ0FDSUJJQU1vQWp4QkFuUnFJUW9DUUFOQUlBRWdDa1lOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVE0MkFsUWdBa0hraGdFMkFsQWdBaUFDS1FOUU53TVFJQUFnQkNBQ1FSQnFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0N6WUNRQ0FHSUFKQlFHc1FRVVVOQXd3QkN5QUJRYmp3RDBZRVFDQURRVFJxSWdzb0FnQWlBU0FES0FJNFFRSjBhaUVLQWtBRFFDQUJJQXBHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFTk5nSlVJQUpCcG9jQk5nSlFJQUlnQWlrRFVEY0RHQ0FBSUFRZ0FrRVlhaEJBREFRTElBSkJBRG9BUkNBQ0lBczJBa0FnQmlBQ1FVQnJFRUZGRFFNTUFRc2dBVUg0OEE5R0JFQWdBMEV3YWlJTEtBSUFJZ0VnQXlnQ05FRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FBSUFSQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkR6WUNWQ0FDUWZPR0FUWUNVQ0FDSUFJcEExQTNBeUFnQUNBRUlBSkJJR29RUUF3RUN5QUNRUUE2QUVRZ0FpQUxOZ0pBSUFZZ0FrRkFheEJCUlEwRERBRUxJQUZCK1BFUFJnUkFJQU5CeUFCcUlnc29BZ0FpQVNBREtBSk1RUUowYWlFS0FrQURRQ0FCSUFwR0RRRWdBQ0FCS0FJQUlnUVFNeG9DUUNBRVJRMEFJQVFvQWdSQmtJSVNSdzBBSUFBZ0JFRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRVJOZ0pVSUFKQmxJY0JOZ0pRSUFJZ0Fpa0RVRGNES0NBQUlBUWdBa0VvYWhCQURBUUxJQUpCQURvQVJDQUNJQXMyQWtBZ0JpQUNRVUJyRUVGRkRRTU1BUXNnQVVHSWhSSkhEUUVnQTBFd2FpSUxLQUlBSWdFZ0F5Z0NORUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJFRFlDVkNBQ1FiU0hBVFlDVUNBQ0lBSXBBMUEzQXpBZ0FDQUVJQUpCTUdvUVFBd0RDeUFDUVFBNkFFUWdBaUFMTmdKQUlBWWdBa0ZBYXhCQlJRMENDeUFBSUFVUWpBSUxJQUFvQW93MElRb2dBQ0FGTmdLTU5DQUFJQWNnQUNnQ2tEUWlEU0FIR3pZQ2tEUWdBQ0FBS0FLVU5DSU1RUUZxSWdFMkFwUTBBa0FnQVVHQUFVOEVRQ0FDUVVCcklnRkIvd0FRWHlBQ1FkQUFhaUlFUWFhc0NpQUJFRFVnQUNBRUlBTkJFR29RSnlBRUVBOGFJQUVRRHhwQkFDRUJEQUVMSUFWQ0FUY0RHQUovSUFJb0Fqd29BaVFpQXdSQVFRQWhBU0FBSUFBZ0F4Q0ZBaERqQWlJRVJRMENJQWtvQWdBb0FnZ2lBeWdDQkVHUXRSSkhCRUFnQUNBRUlBTVFsZ0lpQkVVTkF3c2dCU0FGS1FNWUlBUXBBeUJDZDRPRU53TVlJQVFvQWhRTUFRc2dBQ2dDQUJDRURBc2hBU0FGSVROQkFDRXJJQUlvQWp3aEJDQUFLQUtJTkNnQ0NDRUZJQUFvQW93MElRa2pBRUhnQUdzaUF5UUFBa0FnQlJDRUFTQUJSd1JBSUFOQkVHb2lCeUFHS0FJSUlBRVFwd0VnQTBFZ2FpSUJRYUtaQ1NBSEVEVWdBMEV3YWlJSklBRkJsSmtKRUMwZ0F5QUdLQUlJSUFVUXB3RWdBMEZBYXlJRklBa2dBeEJPSUFOQjBBQnFJZ3NnQlVIem1na1FMU0FHSUFzZ0JFRVFhaEFuSUFzUUR4b2dCUkFQR2lBREVBOGFJQWtRRHhvZ0FSQVBHaUFIRUE4YVFRQWhBUXdCQ3lBR0tBSUlJQVFRaXhBaEIwRUFJUUZCQUNBSkVKQVFJZ1ZGQkVCQkFTRUJEQUVMSUFZZ0EwSFFBR3BCaGNzQUVCUWlDU0FFUVJCcUVDY2dDUkFQR2lBRklBY29BZ2hHRFFBZ0JTQUhLQUlNS0FJSVJnMEFJQVlnQTBIUUFHcEJsTzBERUJRaUJDQUZRUkJxRUlZQklBUVFEeG9MSUFOQjRBQnFKQUFnTXlBcklBRWJJUUVMSUFBZ0RUWUNrRFFnQUNBTU5nS1VOQ0FBSUFvMkFvdzBEQUVMUVFBaEFRc2dDQkNMQWlBQ1FlQUFhaVFBSUFFTUF3c2dBa0c0OGc5R0JFQWpBRUhnQUdzaUFpUUFJQUlnQVRZQ1BDQUFLQUlBSUFKQlBHb2dBRUdRTkdvaUNTQUFRWWcwYWhEbUJDRUdJQUlvQWp3aEF5QUFLQUlBSWdFUUhDQUJRZVFCYWlBRElBWVF1UUVnQmhEVEFpRUhJQUJCdUIxcUlnc1FqUUlnQUVHc0hXb2hCQUpBQWtBQ1FDQURSUTBBQWtBZ0F5Z0NCQ0lCUWJqekQwWUVRQ0FEUWVBQWFpSUlLQUlBSWdFZ0F5Z0NaRUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJFRFlDVkNBQ1FZT0hBVFlDVUNBQ0lBSXBBMUEzQXdnZ0FDQUZJQUpCQ0dvUVFBd0VDeUFDUVFBNkFFUWdBaUFJTmdKQUlBUWdBa0ZBYXhCQkRRRU1Bd3NnQVVIWWhCSkdCRUFnQTBFNGFpSUlLQUlBSWdFZ0F5Z0NQRUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEallDVkNBQ1FlU0dBVFlDVUNBQ0lBSXBBMUEzQXhBZ0FDQUZJQUpCRUdvUVFBd0VDeUFDUVFBNkFFUWdBaUFJTmdKQUlBUWdBa0ZBYXhCQlJRMEREQUVMSUFGQnVQQVBSZ1JBSUFOQk5Hb2lDQ2dDQUNJQklBTW9BamhCQW5ScUlRb0NRQU5BSUFFZ0NrWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTAyQWxRZ0FrR21od0UyQWxBZ0FpQUNLUU5RTndNWUlBQWdCU0FDUVJocUVFQU1CQXNnQWtFQU9nQkVJQUlnQ0RZQ1FDQUVJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFmandEMFlFUUNBRFFUQnFJZ2dvQWdBaUFTQURLQUkwUVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1VRTXhvQ1FDQUZSUTBBSUFVb0FnUkJrSUlTUncwQUlBQWdCVUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VQTmdKVUlBSkI4NFlCTmdKUUlBSWdBaWtEVURjRElDQUFJQVVnQWtFZ2FoQkFEQVFMSUFKQkFEb0FSQ0FDSUFnMkFrQWdCQ0FDUVVCckVFRkZEUU1NQVFzZ0FVSDQ4UTlHQkVBZ0EwSElBR29pQ0NnQ0FDSUJJQU1vQWt4QkFuUnFJUW9DUUFOQUlBRWdDa1lOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJFMkFsUWdBa0dVaHdFMkFsQWdBaUFDS1FOUU53TW9JQUFnQlNBQ1FTaHFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0NEWUNRQ0FFSUFKQlFHc1FRVVVOQXd3QkN5QUJRWWlGRWtjTkFTQURRVEJxSWdnb0FnQWlBU0FES0FJMFFRSjBhaUVLQWtBRFFDQUJJQXBHRFFFZ0FDQUJLQUlBSWdVUU14b0NRQ0FGUlEwQUlBVW9BZ1JCa0lJU1J3MEFJQUFnQlVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUU5nSlVJQUpCdEljQk5nSlFJQUlnQWlrRFVEY0RNQ0FBSUFVZ0FrRXdhaEJBREFNTElBSkJBRG9BUkNBQ0lBZzJBa0FnQkNBQ1FVQnJFRUZGRFFJTElBQWdCaENNQWdzZ0FDZ0NqRFFoQ0NBQUlBWTJBb3cwSUFBZ0J5QUFLQUtRTkNJS0lBY2JOZ0tRTkNBQUlBQW9BcFEwSWcxQkFXb2lBVFlDbERRQ2Z5QUJRWUFCVHdSQUlBSkJRR3NpQVVIL0FCQmZJQUpCMEFCcUlnUkJwcXdLSUFFUU5TQUFJQVFnQTBFUWFoQW5JQVFRRHhvZ0FSQVBHa0VBREFFTElBQWdBaWdDUENnQ0pCQXpHa0VBSUFBZ0FpZ0NQQ2dDSkVFQUVLd2VJZ05GRFFBYUlBa29BZ0FoQlNBRFFRQWdBeWdDQkVHb25CSkdHeUVISXdCQkVHc2lBU1FBSUFjb0FnZ29BaVFoQ1NBRktBTGtBaUVNSUFFZ0J6WUNEQ0FCSUF3MkFnZ2dBU0FGUVRocUlBbEJKR29nQVVFSWFoRDdHeUFCUVJCcUpBQWdBeWdDSUNJQkJFQWdCaUFCS1FNZ053TVlDeUFHSVRSQkFDRXNJd0JCTUdzaUFTUUFJQUVnQXlnQ0NDSUdOZ0lVQW44Q1FDQURLQUlNRU53TEJFQWdCQ0FHS0FJb0lnTUVmeUFEQlNBR0tBSXNDMEVRYWhEYkN3d0JDeUFCSUFRMkFnZ2dBU0FCUVJScU5nSU1JQVpGQkVBZ0FVRUlhaERESEF3QkN5QUdLQUlFSWdWQjJQZ1JSZ1JBSUFGQkFEb0FMQ0FCSUFaQk9HbzJBaWdDUUNBRUlBRkJLR3BCQWhDeEEwVU5BQ0FES0FJTUVJUUJMUUFRUVFGeERRQWdCQ0FCUVJocVFhdVFCQkFVSWdNZ0JpZ0NLQ0lFSUFZZ0JCdEJFR29RSnlBREVBOGFEQUlMSUFRZ0F4RENIQXdDQ3lBRlFlRDVEMFlFUUNNQVFTQnJJZ1lrQUNBREtBSUlJUWRCQVNFRkFrQWdBeWdDREJDRUFTSURMUUFRUVFGeERRQWdBeWdDQkVIWXJCSkdEUUFnQmlBRUtBSUlJQU1RcHdFZ0JrRVFhaUlESUFaQndvQUpFQzBnQkNBRElBZEJFR29RSnlBREVBOGFJQVlRRHhwQkFDRUZDeUFHUVNCcUpBQWdCUXdDQzBFQklBVkJvUGtSUmcwQkdpQUJRUWhxRU1NY0MwRUFDeUVESUFGQk1Hb2tBQ0EwSUN3Z0F4c0xJUUVnQUNBS05nS1FOQ0FBSUEwMkFwUTBJQUFnQ0RZQ2pEUU1BUXRCQUNFQkN5QUxFSXNDSUFKQjRBQnFKQUFnQVF3REN5QUNRY0QyRDBZRVFDQUFJQUVRclI0TUF3c2dBa0c0N1E5SERRQWdBQ0FTUVJCcVFidkxBQkFVSWdBZ0VpZ0NERUVRYWhBbklBQVFEeG9NQVFzakFFRWdheUlBSkFBZ0VpZ0NBQ0VDSUFCQkVHb2lBVUduakF3Z0FDQVNLQUlFS0FJQUtBSUVLQUlFRUJRaUF4QTFJQUlnQVNBU0tBSUVLQUlBUVJCcUVDY2dBUkFQR2lBREVBOGFJQUJCSUdva0FBdEJBQXNoQUNBU1FTQnFKQUFnQUFzT0FDQUFFQndnQUVFUWFoQ1pIZ3M0QVFKL0l3QkJFR3NpQWlRQUlBSkJDR29nQUVFY2FpQUJFT2dkSUFJb0FnZ2hBeUFDUVJCcUpBQWdBMEVDUndSQUlBQWdBUkJ4Q3d1a0FnRURmMEVDSVFRZ0FTQUNLQUlrSWdNMkF2ZzVJQUZCaERwcVFvT0FnSUF3TndJQUlBRkJnRHBxUWJ5SUVqWUNBQ0FCUWZ3NWFrR21pUVEyQWdBQ1FDQUJRYWdkYWlBQklBTVFxZ1VRa0I0aUEwVU5BQ0FBSUFNMUFoQWdBaWdDS0NJQ0JINGdBU0FDTmdMNE9TQUJRWVE2YWtLRGdJQ0FNRGNDQUNBQlFZQTZha0d3aUJJMkFnQWdBVUg4T1dwQjU3NEROZ0lBSUFGQnFCMXFJUVVnQVNBQ0VLb0ZJUUZCQUNFQ0l3QkJFR3NpQXlRQUFrQWdBVVVOQUNBQlFRQWdBUVIvSUFFb0FnUVEzaDBGUVFBTEd5SUNEUUFnQTBFV05nSU1JQU5CNTc0RE5nSUlJQU1nQXlrRENEY0RBQ0FGSUFFZ0F4Q21CVUVBSVFJTElBTkJFR29rQUNBQ1JRMEJJQUkxQWhCQ0lJWUZRZ0FMaERjQ0FFRUJJUVFMSUFBZ0JEb0FDQXZGQVFFRWZ5QUJJQUlvQWlRaUF6WUMrRGtnQVVHRU9tcENqWUNBZ05BQk53SUFJQUZCZ0RwcVFhQ0hFallDQUNBQlFmdzVha0hMMEFNMkFnQWdBVUdvSFdvaEJpQUJJQU1RcWdVaEJDTUFRUkJySWdNa0FBSkFJQVJGRFFBZ0JCQ1JIaUlGRFFBZ0EwRU5OZ0lNSUFOQnk5QUROZ0lJSUFNZ0F5a0RDRGNEQUNBR0lBUWdBeENtQlVFQUlRVUxJQU5CRUdva0FDQUFJQVVpQXdSL0lBRW9BZ0FpQVJBY0lBRkI1QUZxSUFJZ0F4QzVBU0FBSUFNb0FoQTJBZ0JCQVFWQkFnczZBQVFMRndBZ0FDQUJJQUpCa3NzRFFhSFRBMEdsMEFNUXhBd0wwZ1lDQ1g4Q2ZTTUFRU0JySWdna0FDQUlJQUUyQWhBakFFRVFheUlGSkFBZ0FSRDBBeUVFSUFnQ2Z3SkFJQUFvQWdRaUFrVU5BQ0FBS0FJQUFuOGdBa0VCYXlBRWNTQUNhU0lHUVFGTkRRQWFJQVFnQWlBRVN3MEFHaUFFSUFKd0N5SUhRUUowYWlnQ0FDSURSUTBBSUFKQkFXc2hDU0FCS0FJQUlRb2dCa0VCU3lFR0EwQWdBeWdDQUNJRFJRMEJJQVFnQXlnQ0JDSUJSd1JBQWtBZ0JrVUVRQ0FCSUFseElRRU1BUXNnQVNBQ1NRMEFJQUVnQW5BaEFRc2dBU0FIUncwQ0N5QURLQUlJSUFwSERRQUxRUUFNQVF0QjNBQVFGU0VESUFVZ0FFRUlhallDQkNBRklBTTJBZ0FnQ0NnQ0VDRUJJd0JCRUdzaUJpUUFJQVlnQVRZQ0NDQURRUWhxSWdFZ0JpZ0NDQ2dDQURZQ0FDQUJRUVJxUVFCQjBBQVFlU0lCUWdBM0FnQWdBVUlBTndJVUlBRkJnSUNBL0FNMkFoQWdBVUlBTndJb0lBRkNBRGNDUENBQlFnQTNBZ2dnQVVJQU53SWNJQUZCZ0lDQS9BTTJBaVFnQVVJQU53SXdJQUZCZ0lDQS9BTTJBamdnQVVJQU53SkVJQUZCZ0lDQS9BTTJBa3dnQmtFUWFpUUFJQVZCQVRvQUNDQURRUUEyQWdBZ0F5QUVOZ0lFQWtCQkFDQUNJQUFvQWd4QkFXcXpJZ3NnQUNvQ0VDSU1JQUt6bEY0YkRRQWdBQ0FDSUFKQkFXdHhRUUJISUFKQkEwbHlJQUpCQVhSeUlnRUNmeUFMSUF5VmpTSUxRd0FBZ0U5ZElBdERBQUFBQUdCeEJFQWdDNmtNQVF0QkFBc2lCeUFCSUFkTEd4RERBU0FBS0FJRUlnSWdBa0VCYTNGRkJFQWdBa0VCYXlBRWNTRUhEQUVMSUFJZ0JFc0VRQ0FFSVFjTUFRc2dCQ0FDY0NFSEN3SkFJQWRCQW5RaUJDQUFLQUlBYWlnQ0FDSUJSUVJBSUFVb0FnQWdBQ2dDQ0RZQ0FDQUFJQVVvQWdBMkFnZ2dBQ2dDQUNBRWFpQUFRUWhxTmdJQUlBVW9BZ0FpQVNnQ0FDSUVSUTBCSUFRb0FnUWhBd0pBSUFJZ0FrRUJheUlFY1VVRVFDQURJQVJ4SVFNTUFRc2dBaUFEU3cwQUlBTWdBbkFoQXdzZ0FDZ0NBQ0FEUVFKMGFpQUJOZ0lBREFFTElBVW9BZ0FnQVNnQ0FEWUNBQ0FCSUFVb0FnQTJBZ0FMSUFVb0FnQWhBeUFGUVFBMkFnQWdBQ0FBS0FJTVFRRnFOZ0lNSUFVb0FnQWhBQ0FGUVFBMkFnQWdBQVJBSUFVdEFBZ0VRQ0FBUVF4cUVMWWRDeUFBQkVBZ0FCQWZDd3RCQVFzNkFCd2dDQ0FETmdJWUlBVkJFR29rQUNBSUtBSVlJUUFnQ0VFZ2FpUUFJQUJCREdvTHB3RUJCSDhqQUVHZ0FXc2lBeVFBSUFBb0FnQWlBaEFjSUFKQjVBRnFJQUVRb0I0aUJFVUVRQ0FBS0FJQUlnQVFIQ0FEUWYyc0EwRXpRUWdnQUVISUFtb1FGeUlDUVJocVFhYVdDUkFPR2lBQ0lBRW9BZ1JCQkdvUW1nRWlCVUVZYWlJQVFkenhEQkFPR2lBQVFZUGtDeEFPR2lBRlFSQnFJQUZCRUdvUXJnTWdBRUhiK0F3UURob2dBRUh3OVFzUURob2dBQ0FCRU4wRElBSVFHQXNnQTBHZ0FXb2tBQ0FFQ3hRQUlBQkJBRFlDeEFFZ0FDQUFLQUxBQVJBMkN5VUFJQUJDQURjQ2JDQUFRb0NBZ0lEZ0FEY0NaQ0FBSUFBMkFtQWdBRUVHRU9nRklBQUxVUUVDZnlNQVFSQnJJZ1FrQUNBQUtBSUFJUVVnQkNBRE5nSU1JQVFnQWpZQ0NDQUZJQVJCQ0dvaUFoRDVCU0FBS0FJQUlRQWdCQ0FETmdJTUlBUWdBVFlDQ0NBQUlBSVErUVVnQkVFUWFpUUFDOWdCQWdSL0FYNGpBRUdnQVdzaUFpUUFJQUFvQWdBb0FnQWlBUVIvQW45QkFDQUJLQUlFSWdFcEF4QkNnSUNBZ29qSWdJRFFBSU1pQlNBRlFnRjlnMUFOQUJwQkFTQUJFS3NKRFFBYUFuOUJBQ0FCS1FNUVFvQ0FnSUtJZ0lDQTBBQ0RJZ1VnQlVJQmZZTlFEUUFhUVFFZ0FSQ2lIUTBBR2lBQlFlaURFaEJJQ3dzRlFRQUxJZ0ZGQkVBZ0FrSEFxZ05CbHdGQkFDQUFLQUlFRUJjaUEwRVlhaUlFUVlpUERCQU9HaUFFSUFBb0FnQW9BZ0FpQUFSL0lBQW9BZ1FvQWdRRlFlSGlCZ3NRRGhvZ0F4QVlDeUFDUWFBQmFpUUFJQUVMaHdJQkMzOGpBRUd3QVdzaUJDUUFBa0FnQUNnQ0FDSUZLQUt3Q0NJSUlBQW9BaVJHQkVBZ0FDZ0NJQ0VCREFFTElBQkJCR29oQ1NBRlFhUUlhaWdDQUNJSFFRRnJJUW9nQUNnQ0JDSUxJQWR3SVFJQ1FBSkFBMEFnQXlBSFJ3UkFJQVVvQXFBSUlBSkJMR3hxSWdZdEFDQkZEUU1nQ3lBR0tBSWtSZ1JBSUFrZ0JoQzJBZzBEQ3lBR0tBSW9JQU5KRFFNZ0FrRUJha0VBSUFJZ0NrY2JJUUlnQTBFQmFpRUREQUVMQ3lBRVFZYTFBMEdlQkVFT0lBUkJvQUZxRUIwaUFSQVhJZ0pCR0dwQjBqVVFEaG9nQWhBWUlBRVFIa0VBSVFFTUFRc2dCU2dDb0FnZ0FrRXNiR3BCSEdvaEFRc2dBQ0FJTmdJa0lBQWdBVFlDSUFzZ0JFR3dBV29rQUNBQkM0Z0JBUUovSUFFZ0FDZ0NpQUpMQkVBZ0FDZ0NnQUloQXlBQUlRSWdBQ0FCUVNCUEJIOUJmeUFCUVFOMElBRkIvLy8vL3dGTEd4QVZJUUlnQVFWQklBczJBb2dDSUFBZ0FqWUNnQUpCQUNFQkEwQWdBQ2dDaEFJZ0FVMEVRQ0FBSUFNUU5nVWdBVUVEZENJQ0lBQW9Bb0FDYWlBQ0lBTnFLUUlBTndJQUlBRkJBV29oQVF3QkN3c0xDeEVBSUFBdEFDQUVRQ0FBUVFBNkFDQUxDeHNBSUFBZ0FTZ0NBRFlDQUNBQVFRUnFJQUZCQkdvUTJoNGdBQXVlQndFRWZ5QUFRb0NBZ0lBUU53SUlJQUFnQURZQ0JDTUFRVEJySWdNa0FDQUFJQUlvQWdnUThCQWdBMEVBTmdJb0lBTWdBallDSkNBRElBRkJ5Q0JxTmdJZ0lBTWdBVUhjZ0FGcUtBSUFRUUZyTmdJc0FrQWdBMEVnYWhDMUFRUkFJQU5CSUdvUVdpSUZLQUxZQVNJRUlBVW9BdHdCUVJoc2FpRUZBMEFnQkNBRlJnUkFJQUlvQWdRaUJTQUNLQUlJUVFKMGFpRUNBMEFnQWlBRlJnUkFJQU5CSUdvUVdpSUNLQUxJQWlJRUlBSW9Bc3dDUVJoc2FpRUNBMEFnQWlBRVJnMEdJQU1nQVNBRUVHWVFoQUkyQWhBZ0FDQURRUkJxRUs0RklBUkJHR29oQkF3QUN3QUxJQU1nQTBFZ2FoQmFJZ1JCMkFKcU5nSVFJQVVvQWdBaEJpQURRUUEyQWhnZ0F5QUdOZ0lVSUFNZ0JFR2NDV29vQWdCQkFXczJBaHdDUUNBRFFSQnFFTFFCUlEwQUlBTkJFR29RckFFaUJpZ0NZQ0lFSUFZb0FtUkJHR3hxSVFZRFFDQUVJQVpHRFFFZ0F5QUJJQVFRWmhDRUFqWUNEQ0FBSUFOQkRHb1FyZ1VnQkVFWWFpRUVEQUFMQUFzZ0EwRWdhaEJhSVFRZ0F5QUZLQUlBTmdJUUlBUWdBMEVRYWhER0EwVUVRQ0FESUFFZ0JTZ0NBQkR3QlRZQ0VDQUFJQU5CRUdvUXJnVUxJQU1nQTBFZ2FoQmFJZ1JCb0FscU5nSVFJQVVvQWdBaEJpQURRUUEyQWhnZ0F5QUdOZ0lVSUFNZ0JFSGtEMm9vQWdCQkFXczJBaHdDUUNBRFFSQnFFTFFCUlEwQUlBTkJFR29RckFFaUJpZ0NZQ0lFSUFZb0FtUkJHR3hxSVFZRFFDQUVJQVpHRFFFZ0F5QUJJQVFRWmhDRUFqWUNEQ0FBSUFOQkRHb1FyZ1VnQkVFWWFpRUVEQUFMQUFzZ0JVRUVhaUVGREFBTEFBVWdBeUFCSUFRUVpoQ0VBallDRUNBQUlBTkJFR29RcmdVZ0JFRVlhaUVFREFFTEFBc0FDeUFDS0FJRUlnVWdBaWdDQ0VFQ2RHb2hBZ05BSUFJZ0JVWUVRQ0FEUVNCcUVMVUJSUTBDSUFOQklHb1FXaUlDS0FMSUFpSUVJQUlvQXN3Q1FSaHNhaUVDQTBBZ0FpQUVSZzBESUFNZ0FTQUVFR1lRaEFJMkFoQWdBQ0FEUVJCcUVLNEZJQVJCR0dvaEJBd0FDd0FGSUFNZ0FTQUZLQUlBRVBBRk5nSVFJQUFnQTBFUWFoQ3VCUUpBSUFOQklHb1F0UUZGRFFBZ0F5QURRU0JxRUZvaUJFR2dDV28yQWhBZ0JTZ0NBQ0VHSUFOQkFEWUNHQ0FESUFZMkFoUWdBeUFFUWVRUGFpZ0NBRUVCYXpZQ0hDQURRUkJxRUxRQlJRMEFJQU5CRUdvUXJBRWlCaWdDWUNJRUlBWW9BbVJCR0d4cUlRWURRQ0FFSUFaR0RRRWdBeUFCSUFRUVpoQ0VBallDRENBQUlBTkJER29RcmdVZ0JFRVlhaUVFREFBTEFBc2dCVUVFYWlFRkRBRUxBQXNBQ3lBRFFUQnFKQUFMRWdBZ0FDQUJFUG9GSWdCQkFUb0FJQ0FBQ3c0QUlBQVFrUXdnQUNBQkVPNFFDMTRCQTM5QkNCQUZFS0VUSWdOQnJPWVBOZ0lBSUFBUTNBRWlBVUVOYWhBVklnSkJBRFlDQ0NBQ0lBRTJBZ1FnQWlBQk5nSUFJQU1nQWhEdUNTQUFJQUZCQVdvUWZUWUNCQ0FESWdCQjNPWVBOZ0lBSUFCQi9PWVBRUUVRQkFBTEVnQWdBRUh3QUVHUi93TkJmRUVERU1vQkMvWUNBUUYvSXdCQjBBRnJJZ2NrQUNBSElBSTJBc0FCSUFjZ0FUWUN5QUVnQnlBRU5nSzhBU0FBSUFjb0FzZ0JJQWNvQXNBQklBTWdCeWdDdkFFUTRCa2lBRUhZOXhFMkFnUWdBRUdNK0JFMkFnQWdBRUg0OXhFMkFnQWdBRUVvYWlBRkVMOEpJQUJCMUFCcUlBWVE2UVlnQUNnQ1NDSUNJQUFvQWt4QkFuUnFJUUVnQjBFZ2FpRURBMEFDUUNBQklBSkdCRUFnQUNnQ1pDSUNJQUFvQW1oQkFuUnFJUUVnQjBFZ2FpRURBMEFnQVNBQ1JnMENJQUlvQWdBaUJFVUVRQ0FIUVFocVFmR1hCVUVsUVFBZ0IwR29BV29RSFNJRkVCY2hCaUFEUVptbkNCQU9HaUFHRUJnZ0JSQWVDeUFFRUZjZ0FDZ0NDRUVCUVFCQjNjUUlRZkdYQlVFbUVFc2dBa0VFYWlFQ0RBQUxBQXNnQWlnQ0FDSUVSUVJBSUFkQkNHcEI4WmNGUVNGQkFDQUhRYWdCYWhBZElnVVFGeUVHSUFOQnRyVUlFQTRhSUFZUUdDQUZFQjRMSUFRUVZ5QUFLQUlJUVFGQkFFR2R5UWhCOFpjRlFTSVFTeUFDUVFScUlRSU1BUXNMSUFkQjBBRnFKQUFnQUF1WUFRSUNmd0YrSUFFZ0FFR0lDMm9vQWdCTEJFQWdBQ2dDZ0FzaEF5QUFJUUlnQUNBQlFSQlBCSDlCZnlBQnJVTFlBSDRpQktjZ0JFSWdpS2NiRUJVaEFpQUJCVUVRQ3pZQ2lBc2dBQ0FDTmdLQUMwRUFJUUVEUUNBQUtBS0VDeUFCVFFSQUlBQWdBeEEyQlNBQlFkZ0FiQ0lDSUFBb0FvQUxhaUFDSUFOcUlnSVE0d1lhSUFKQkNHb1FsUUVnQVVFQmFpRUJEQUVMQ3dzTFFnRUJmd0pBSUFBdEFGZ2lBaUFCTFFCWVJnUkFJQUpGRFFFZ0FDQUJFTUlKREFFTElBSUVRQ0FBRUk0ZkRBRUxJQUFnQVJEbUJnc2dBQ0FCS1FKY053SmNDMVVCQW44Z0FVRUlhaUVGSUFJb0FnQWlCQ2dDQUNJQ0lBUW9BZ1JCakFGc2FpRUVBMEFnQWlBRVJ3UkFJQVZCMy9BTUVBNGFJQUFnQVNBQ0tBSUFJQU1RbHg4Z0JSRGlBUm9nQWtHTUFXb2hBZ3dCQ3dzTE5RRUNmeU1BUVpBQmF5SUNKQUFnQWlBQUVPVUNJUU1nQUNBQkVPUUNHaUFCSUFNUTVBSWFJQU1RcndVYUlBSkJrQUZxSkFBTElRQWdBRUtBZ0lDQXdBQTNBaFFnQUNBQU5nSVFJQUFnQVVFUWFoQ2xEQ0FBQzBvQkFYOGpBRUVRYXlJQ0pBQWdBRUtBZ0lDQXdBQTNBaFFnQUNBQU5nSVFJQUlnQVVFUWFqWUNDQ0FDSUFFb0FoQWdBVWM2QUF3Z0FDQUNRUWhxRU1nSklBSkJFR29rQUNBQUMwZ0JBbjhnQUNBQkVOWUNJQUFvQWhRaUFpQUJJQUVnQWtrYklRTURRQ0FDSUFOR0JFQWdBQ0FCTmdJVUJTQUFLQUlRSUFKQkFuUnFRUUEyQWdBZ0FrRUJhaUVDREFFTEN3dTRCZ0VOZnlNQVFhQU5heUlDSkFBQ1FFRVlJQUZCbGdGc1FlUUFiaUlCSUFGQkdFMGJJZ1VnQUVIa0Vtb29BZ0JORFFBZ0FrR01DMnBDZ0lDQWdJQUNOd0lBSUFJZ0FrRUlhaUlCTmdLSUN5QUJJQUFvQXV3U0VKa01JQUFvQXVBU0lnRWdBQ2dDNUJKQjVBQnNhaUVIQTBBZ0FTQUhSZ1JBSUFBUXhBa2dBQ0FGRUlRSUlBSW9Bb2dMSWdRZ0FpZ0NqQXRCMkFCc2FpRUpJQUpCb0F0cUlRb2dBa0hBREdvaEN5QUNRYkFMYWlFTVFRQWhCd05BQWtBZ0JDQUpSZ1JBQTBBZ0J5QUNLQUtNQzA4TkFpQUNLQUtJQ3lBSFFkZ0FiR3BCQ0dvUWxRRWdCMEVCYWlFSERBQUxBQXNnQUNnQzVCSWdBQ2dDN0JJaUFVR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBRkJBWFJCQW1vUW9Bd0xJQUpCbUExcUlBQWdCQkRsQmlBQ0lBUkIxQUJxTmdLVURTQUNJQVEyQXBBTklBQW9BdVFTSWdaQkFXc2hEU0FBS0FMZ0VpRU9RUUFoQVNBQ0tBS2NEU0VJSUFJb0FwZ05JUU1DUUFOQUlBRWdCa2NFUUNBT0lBTkI1QUJzYWlJRkxRQllSUVJBSUFKQm1BdHFJZ01nQWtHUURXb1FnQWdnQlNBREVQRUVHaUFLRUpVQklBVWdBVFlDWUNBRklBZzJBbHdnQUNBQUtBTHNFa0VCYWpZQzdCSWdBQ0FBS0FMd0VrRUJhallDOEJJTUF3c2dCU0FJSUFRUThBUU5BaUFCSUFVb0FtQkxCRUFnQWtHNERHb2lCaUFDUVpBTmFoQ0FDQ0FDUVpnTGFpQUdFTzhFSVFZZ0FpQUJOZ0w0Q3lBQ0lBZzJBdlFMSUFzUWxRRWdCaUFGRVBzRElBSWdBaWdDK0F0QkFXbzJBdmdMSUFBZ0EwRUJhaUFBS0FMa0VuQWdCaERrQmlBQUlBQW9BdXdTUVFGcU5nTHNFaUFBSUFBb0F2QVNRUUZxTmdMd0VpQUdFT29DREFNRklBTkJBV3BCQUNBRElBMUhHeUVESUFGQkFXb2hBUXdDQ3dBTEN5QUNRWmdMYWtHR3RRTkI2d05CRGlBQ1FiZ01haEFkSWdFUUZ5RURJQXhCbGpVUURob2dBeEFZSUFFUUhnc2dCRUhZQUdvaEJBd0JDd3NnQWtFQU5nS01DeUFDUVFocUlBSW9Bb2dMRURZTUFnc2dBUzBBV0FSQUlBSW9Bb3dMSWdNZ0FpZ0NrQXNpQkU4RVFDQUNRUWhxSUFSQkFYUkJBaUFFR3hDWkRDQUNLQUtNQ3lFREN5QUNJQU5CQVdvMkFvd0xJQUlvQW9nTElBTkIyQUJzYWlBQkVPTUdHZ3NnQVVIa0FHb2hBUXdBQ3dBTElBSkJvQTFxSkFBTDJBRUJBMzhnQUJBY0l3QkJFR3NpQkNRQUlBQkJxQUZxSWdVUS9BY2hCaUFCS0FJQUlRRWdCQ0FDUVNCcU5nSUlJQVFnQWlnQ0lDQUNSem9BRENBREtBSUFJUUlqQUVFUWF5SUFKQUFnQUNBQ05nSUlJQUFnQVRZQ0RDQUFRUUU2QUFjakFFRVFheUlCSkFBZ0FDZ0NEQ0VDSUFFZ0JDa0NDRGNEQ0NBR0lBSWdBVUVJYWlBQUtBSUlJQUF0QUFjUS93OGlBa0dRbmhJMkFnUWdBa0hBbmhJMkFnQWdBVUVRYWlRQUlBSkJzSjRTTmdJQUlBQkJFR29rQUNBRklBSWlBQkFvSUFVZ0JTZ0NHRUVCYWpZQ0dDQUVRUkJxSkFBZ0FBdTRCZ0VOZnlNQVFhQU5heUlDSkFBQ1FFRVlJQUZCbGdGc1FlUUFiaUlCSUFGQkdFMGJJZ1VnQUVIa0Vtb29BZ0JORFFBZ0FrR01DMnBDZ0lDQWdJQUNOd0lBSUFJZ0FrRUlhaUlCTmdLSUN5QUJJQUFvQXV3U0VKa01JQUFvQXVBU0lnRWdBQ2dDNUJKQjVBQnNhaUVIQTBBZ0FTQUhSZ1JBSUFBUXhBa2dBQ0FGRUlRSUlBSW9Bb2dMSWdRZ0FpZ0NqQXRCMkFCc2FpRUpJQUpCb0F0cUlRb2dBa0hBREdvaEN5QUNRYkFMYWlFTVFRQWhCd05BQWtBZ0JDQUpSZ1JBQTBBZ0J5QUNLQUtNQzA4TkFpQUNLQUtJQ3lBSFFkZ0FiR3BCQ0dvUWxRRWdCMEVCYWlFSERBQUxBQXNnQUNnQzVCSWdBQ2dDN0JJaUFVR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBRkJBWFJCQW1vUW9nd0xJQUpCbUExcUlBQWdCQkRsQmlBQ0lBUkIxQUJxTmdLVURTQUNJQVEyQXBBTklBQW9BdVFTSWdaQkFXc2hEU0FBS0FMZ0VpRU9RUUFoQVNBQ0tBS2NEU0VJSUFJb0FwZ05JUU1DUUFOQUlBRWdCa2NFUUNBT0lBTkI1QUJzYWlJRkxRQllSUVJBSUFKQm1BdHFJZ01nQWtHUURXb1FnQWdnQlNBREVQRUVHaUFLRUpVQklBVWdBVFlDWUNBRklBZzJBbHdnQUNBQUtBTHNFa0VCYWpZQzdCSWdBQ0FBS0FMd0VrRUJhallDOEJJTUF3c2dCU0FJSUFRUThBUU5BaUFCSUFVb0FtQkxCRUFnQWtHNERHb2lCaUFDUVpBTmFoQ0FDQ0FDUVpnTGFpQUdFTzhFSVFZZ0FpQUJOZ0w0Q3lBQ0lBZzJBdlFMSUFzUWxRRWdCaUFGRVBzRElBSWdBaWdDK0F0QkFXbzJBdmdMSUFBZ0EwRUJhaUFBS0FMa0VuQWdCaERrQmlBQUlBQW9BdXdTUVFGcU5nTHNFaUFBSUFBb0F2QVNRUUZxTmdMd0VpQUdFT29DREFNRklBTkJBV3BCQUNBRElBMUhHeUVESUFGQkFXb2hBUXdDQ3dBTEN5QUNRWmdMYWtHR3RRTkI2d05CRGlBQ1FiZ01haEFkSWdFUUZ5RURJQXhCbGpVUURob2dBeEFZSUFFUUhnc2dCRUhZQUdvaEJBd0JDd3NnQWtFQU5nS01DeUFDUVFocUlBSW9Bb2dMRURZTUFnc2dBUzBBV0FSQUlBSW9Bb3dMSWdNZ0FpZ0NrQXNpQkU4RVFDQUNRUWhxSUFSQkFYUkJBaUFFR3hDWkRDQUNLQUtNQ3lFREN5QUNJQU5CQVdvMkFvd0xJQUlvQW9nTElBTkIyQUJzYWlBQkVPTUdHZ3NnQVVIa0FHb2hBUXdBQ3dBTElBSkJvQTFxSkFBTHJ3RUJBWDhnQUJBY0l3QkJNR3NpQVNRQUlBQkJxQUZxSWdBUXZSQWhCeUFHS0FJQUlRWWdCU2dDQUNFRklBUW9BZ0FoQkNBREtBSUFJUU1nQWlnQ0FDRUNJQUZCQURvQUtDQUJJQUVvQWlnMkFoQWdBVUVBT2dBZ0lBRkJBRG9BSENBQlFRQTZBQmdnQVNBQktRTWdOd01JSUFFZ0FTa0RHRGNEQUNBQUlBZEJBQ0FDSUFNZ0JDQUZJQVlnQVVFSWFpQUJFUElQSWdJUUtDQUFJQUFvQWhoQkFXbzJBaGdnQVVFd2FpUUFJQUlMZlFFRmZ5QUFRWVRMQUdvb0FnQWlCVUVCYXlFR0FrQURRQ0FESUFWR0RRRWdBQ2dDZ0VzZ0FVSGtBR3hxSWdRdEFGZ0VRQ0FDSUFJb0FtQWlCeUFFS0FKZ1N3Ui9JQVFnQWhEN0F5QUNLQUpnQlNBSEMwRUJhallDWUNBQlFRRnFRUUFnQVNBR1J4c2hBU0FEUVFGcUlRTU1BUXNMSUFRZ0FoQ2FEQXNMWndFRGZ3SkFJQUFvQWhnZ0FTZ0NCRWtFUUNBQUVGNGdBQ0FCS0FJRUVNRUpEQUVMSUFCQkFEWUNGQXNnQUNBQktBSUVJZ00yQWhRRFFDQUNJQU5IQkVBZ0FrRUNkQ0lFSUFBb0FoQnFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3c21BQ0FDRUk4ZklRSWdBVUdFeXdCcUtBSUFJUUVnQUNBQ05nSUVJQUFnQWlBQmNEWUNBQXU3QmdFTmZ5TUFRYUF1YXlJQ0pBQUNRRUhnQUNBQlFaWUJiRUhrQUc0aUFTQUJRZUFBVFJzaUJTQUFRWVRMQUdvb0FnQk5EUUFnQWtHTUxHcENnSUNBZ0lBSU53SUFJQUlnQWtFSWFpSUJOZ0tJTENBQklBQW9Bb3hMRUpBZklBQW9Bb0JMSWdFZ0FDZ0NoRXRCNUFCc2FpRUhBMEFnQVNBSFJnUkFJQUFRbkJFZ0FDQUZFS2tNSUFJb0FvZ3NJZ1FnQWlnQ2pDeEIyQUJzYWlFSklBSkJvQ3hxSVFvZ0FrSEFMV29oQ3lBQ1FiQXNhaUVNUVFBaEJ3TkFBa0FnQkNBSlJnUkFBMEFnQnlBQ0tBS01MRThOQWlBQ0tBS0lMQ0FIUWRnQWJHcEJDR29RbFFFZ0IwRUJhaUVIREFBTEFBc2dBQ2dDaEVzZ0FDZ0NqRXNpQVVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FBSUFGQkFYUkJBbW9RcHd3TElBSkJtQzVxSUFBZ0JCQ21EQ0FDSUFSQjFBQnFOZ0tVTGlBQ0lBUTJBcEF1SUFBb0FvUkxJZ1pCQVdzaERTQUFLQUtBU3lFT1FRQWhBU0FDS0FLY0xpRUlJQUlvQXBndUlRTUNRQU5BSUFFZ0JrY0VRQ0FPSUFOQjVBQnNhaUlGTFFCWVJRUkFJQUpCbUN4cUlnTWdBa0dRTG1vUWdBZ2dCU0FERVBFRUdpQUtFSlVCSUFVZ0FUWUNZQ0FGSUFnMkFsd2dBQ0FBS0FLTVMwRUJhallDakVzZ0FDQUFLQUtRUzBFQmFqWUNrRXNNQXdzZ0JTQUlJQVFROEFRTkFpQUJJQVVvQW1CTEJFQWdBa0c0TFdvaUJpQUNRWkF1YWhDQUNDQUNRWmdzYWlBR0VPOEVJUVlnQWlBQk5nTDRMQ0FDSUFnMkF2UXNJQXNRbFFFZ0JpQUZFUHNESUFJZ0FpZ0MrQ3hCQVdvMkF2Z3NJQUFnQTBFQmFpQUFLQUtFUzNBZ0JoQ2tEQ0FBSUFBb0FveExRUUZxTmdLTVN5QUFJQUFvQXBCTFFRRnFOZ0tRU3lBR0VPb0NEQU1GSUFOQkFXcEJBQ0FESUExSEd5RURJQUZCQVdvaEFRd0NDd0FMQ3lBQ1FaZ3Nha0dHdFFOQjZ3TkJEaUFDUWJndGFoQWRJZ0VRRnlFRElBeEJsalVRRGhvZ0F4QVlJQUVRSGdzZ0JFSFlBR29oQkF3QkN3c2dBa0VBTmdLTUxDQUNRUWhxSUFJb0FvZ3NFRFlNQWdzZ0FTMEFXQVJBSUFJb0Fvd3NJZ01nQWlnQ2tDd2lCRThFUUNBQ1FRaHFJQVJCQVhSQkFpQUVHeENRSHlBQ0tBS01MQ0VEQ3lBQ0lBTkJBV28yQW93c0lBSW9Bb2dzSUFOQjJBQnNhaUFCRU9NR0dnc2dBVUhrQUdvaEFRd0FDd0FMSUFKQm9DNXFKQUFMTlFFQmZ3TkFJQUFvQXVRU0lBRk5CRUFnQUVFQU5nTGtFZ1VnQUNnQzRCSWdBVUhrQUd4cUVPb0NJQUZCQVdvaEFRd0JDd3NMbWdJQ0EzOEJmaUFCSUFCQmlNc0FhaWdDQUVzRVFDQUFLQUtBU3lFRElBQWhBaUFBSUFGQjRBQlBCSDlCZnlBQnJVTGtBSDRpQmFjZ0JVSWdpS2NiRUJVaEFpQUJCVUhnQUFzMkFvaExJQUFnQWpZQ2dFdEJBQ0VDQTBBZ0FDZ0NoRXNnQWswRVFDQUFJQU1RTmdVZ0FrSGtBR3dpQkNBQUtBS0FTMm9nQXlBRWFpSUVFSTBSR2lBRUVPb0NJQUpCQVdvaEFnd0JDd3NMSUFCQmhNc0FhaWdDQUNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDaEVzaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDZ0VzZ0FrSGtBR3hxSWdOQ0FEY0NYQ0FEUVFBNkFGZ2dBMEVBT2dBQUlBSkJBV29oQWd3QUN3QUxCU0FBS0FLQVN5QUNRUUZySWdKQjVBQnNhaERxQWd3QkN3c2dBQ0FCTmdLRVN3dG1BUUovSXdCQklHc2lBeVFBSUFOQkNHb2lCQ0FDRUtBUklBTWdBeWdDRENBRExRQVRJZ0lnQWtFWWRFRVlkVUVBU0NJQ0d6WUNIQ0FESUFNb0FnZ2dCQ0FDR3pZQ0dDQURJQU1wQXhnM0F3QWdBQ0FCSUFNUTRRRWdCQkFQR2lBRFFTQnFKQUFMNmdJQkEzOGpBRUZBYWlJQ0pBQWdBaUFCTmdJY0lBSWdBRFlDRUNBQ0lBSkJIR28yQWhRQ2Z5QUJCRUFnQVNnQ0JDSURRWkNxRWtZRVFDQUNRUWsyQWpBZ0FrR3cvQVEyQWl3Z0FpQUJOZ0lvSUFKQkNUWUNKQ0FDUWVuTkF6WUNJQ0FDSUFBUXFnazJBalFnQWtFQ05nSThJQUlnQWtFZ2FqWUNPQ0FDSUFJcEF6ZzNBd0FnQUVFQklBSVFtQUlNQWdzZ0EwR2dzeEpHQkVBZ0FrRUpOZ0l3SUFKQnNQd0VOZ0lzSUFJZ0FUWUNLQ0FDUVFrMkFpUWdBa0hwelFNMkFpQWdBaUFBRUtvSk5nSTBJQUpCQWpZQ1BDQUNJQUpCSUdvMkFqZ2dBaUFDS1FNNE53TUlJQUJCQWlBQ1FRaHFFSmdDREFJTEN5TUFRYkFCYXlJQUpBQWdBaWdDRUNJQkVCd2dBRUVRYWtHQm1RVkI2UUZCQ0NBQlFjZ0NhaEFYSWdGQkdHb2lBMEhSa3d3UURob2dBQ0FDS0FJVUtBSUFJZ1FnQkNnQ0FDZ0NEQkVDQUNBRElBQVFFaG9nQUJBUEdpQUJFQmdnQUVHd0FXb2tBRUVBQ3lFQUlBSkJRR3NrQUNBQUN6a0JBWDhnQVVFQVIwRWZkQ0VCQTBBZ0FFR0FnSUNBZUhFZ0FVY2dBa0VmUzNKRkJFQWdBRUVCZENFQUlBSkJBV29oQWd3QkN3c2dBZ3QzQVFOL0l3QkJrQUZySWdVa0FDQUZFRWtpQmtFSWFpSUVRZk9hQ1JBT0dpQUVJQUVRSVJvZ0JFSDM4QXdRRGhvZ0JDQUNFQTRhSUFSQjkvQU1FQTRhSUFRZ0F4QWhHaUFFUWNlS0NSQU9HaUFFUWZEOEJoQU9HaUFFUWZPYUNSQU9HaUFBSUFaQkRHb1FRaUFHRUZFZ0JVR1FBV29rQUF0QUFnSi9BWDVCRENFQ0lBQWhBeUFCUVF4UEJFQkJmeUFCclVJVWZpSUVweUFFUWlDSXB4c1FGU0VESUFFaEFnc2dBQ0FETmdMd0FTQUFJQUkyQXZnQkMxY0JBWDhqQUVFUWF5SUZKQUFnQlNBQ05nSUFJQVVnQVRZQ0NDQUFJQVVvQWdnZ0JTZ0NBQ0FERU5rRUlnQkIrT3dQTmdJRUlBQkJyTzBQTmdJQUlBQWdCRFlDSkNBQVFaanREellDQUNBRlFSQnFKQUFnQUFzTkFFR1RwQVlnQUNBQkVMUVJDeVFBSUFFZ0FpQUJLQUlBS0FJSUVRSUFJQUFnQVVFRWFpSUFFUGtHSUFBZ0FoQ1dDZ3NwQVFKL0l3QkJFR3NpQVNRQUlBRWdBRGNEQ0NBQlFRaHFRUWdRendjaEFpQUJRUkJxSkFBZ0Fnc2dBUUYvSXdCQkVHc2lBU1FBSUFBcEF3QVFzZ3doQUNBQlFSQnFKQUFnQUF0eUFRTi9Jd0JCb0FGcklnTWtBQ0FEUVFocUVFa2lCRUVJYWlJRlFkUzFDaEFPR2lBRklBRVF2QUlhSUFWQmsrY0pFQTRhSUFWQjg1b0pFQTRhSUFNZ0Fpa0NBRGNEbUFFZ0JDQURRWmdCYWhDMkJFRUlha0h6bWdrUURob2dBQ0FFUVF4cUVFSWdCQkJSSUFOQm9BRnFKQUFMY1FFRGZ5TUFRYUFCYXlJREpBQWdBMEVJYWhCSklnUkJDR29pQlVIVXRRb1FEaG9nQlNBQkVDRWFJQVZCaytjSkVBNGFJQVZCODVvSkVBNGFJQU1nQWlrQ0FEY0RtQUVnQkNBRFFaZ0JhaEMyQkVFSWFrSHptZ2tRRGhvZ0FDQUVRUXhxRUVJZ0JCQlJJQU5Cb0FGcUpBQUxZUUVCZnlNQVFSQnJJZ1FrQUNBQUFuOGdBQUo5UXdBQUFBQVFSaUFEWGdSQUlBRWdCRUd0a1FjUUZDSUFJQUlRWFNBQUVBOGFRUUlnQVMwQUJFVU5BaHBEQUFBQUFCQkdEQUVMSUFPUkVFWUxPQUlBUVFFTE9nQUVJQVJCRUdva0FBdGRBUUovSXdCQkVHc2lCQ1FBSUFBQ2Z3SkFJQU5EQUFBQUFGMEVRQ0FCSUFSQnJaRUhFQlFpQlNBQ0VGMGdCUkFQR2tFQ0lBRXRBQVJGRFFJYUlBQkJBRFlDQUF3QkN5QUFJQU9ST0FJQUMwRUJDem9BQkNBRVFSQnFKQUFMWVFFQ2Z5TUFRUkJySWdRa0FDQUFBbjhDUUNBRFJBQUFBQUFBQUFBQVl3UkFJQUVnQkVHdGtRY1FGQ0lGSUFJUVhTQUZFQThhUVFJZ0FTMEFCRVVOQWhvZ0FFSUFOd01BREFFTElBQWdBNTg1QXdBTFFRRUxPZ0FJSUFSQkVHb2tBQXRCQUNBQUFuOGdBVU1BNEg5SFhnUkFJQUJCQURZQ0FFRUNEQUVMSUFGREFPQi94MTBFUUNBQVFRRTJBZ0JCQWd3QkN5QUFJQUVRUmpnQ0FFRUJDem9BQkFzVkFDQUFRWWpyRHpZQ0FDQUFRVEJxRUtvQklBQUw2UUVCQW44akFFRVFheUlISkFBQ1FDQUNLQUlBSWdZZ0JpZ0NBQ2dDQ0JFQUFDSUdSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCaWdDQkNJR1FmQ2ZFa1lFUUNBSFFRaHFJQUVnQWlnQ0FCQThJQU1vQWdBUVBDQUVLQUlBRUR3Z0JTZ0NBQkE4RUpJU0RBRUxJQVpCc0trU1JnUkFJQWRCQ0dvZ0FTQUNLQUlBRURRZ0F5Z0NBQkEwSUFRb0FnQVFOQ0FGS0FJQUVEUVFrUklNQVFzZ0JrSFFxQkpIRFFFZ0IwRUlhaUFCSUFJb0FnQVFQeUFES0FJQUVEOGdCQ2dDQUJBL0lBVW9BZ0FRUHhDUUVnc2dBQ0FIS1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQjBFUWFpUUFDM1VCQW44akFFRVFheUlFSkFBZ0JDQUFOZ0lNSUFRZ0FUWUNDQ0FFSUFJMkFnUWdCQ2dDRENFQklBUW9BZ2doQWlBRUtBSUVJUVVqQUVFUWF5SUFKQUFnQUNBQk5nSU1JQUFnQWpZQ0NDQUFJQVUyQWdRZ0FDZ0NDQ0FBS0FJRUlBTnNRUVFRNndvZ0FFRVFhaVFBSUFSQkVHb2tBQXM1QVFGL0l3QkJFR3NpQkNRQUlBSW9BZ0FRL0FJaEFpQUJJQU5xS0FJQUlRRWdBQ0FDTmdJRUlBQWdBaUFCY0RZQ0FDQUVRUkJxSkFBTExBRUNmeUFBS0FJRUlnSWdBVVlFUUVFQkR3c2dBa0dvekJKR0JIOGdBQ2dDQ0NnQ0JDQUJSZ1ZCQUFzTE1BRUJmeU1BUVJCcklnTWtBQ0FESUFBUTVBYzJBZ2dnQUNBQklBSWdBMEVJYWhDbEN5RUFJQU5CRUdva0FDQUFDME1CQVg4akFFRVFheUlHSkFBZ0JpQUZOZ0lNSUFBZ0JpZ0NEQkROR3lJQUlBUTJBZ1FnQUNBRE5nSUFJQUFnQVRZQ0RDQUFJQUkyQWdBZ0JrRVFhaVFBSUFBTFNnRUJmeU1BUVJCcklnY2tBQ0FISUFJMkFnQWdCeUFCTmdJSUlBQWdCeWdDQ0NBSEtBSUFJQU1RMlFRaUFDQUdOZ0lFSUFBZ0JUWUNBQ0FBSUFRMkFnQWdCMEVRYWlRQUlBQUxOUUVCZndKQUlBRkZEUUFnQVVFQUlBRUVmeUFCS0FJRUlBSVFTQVZCQUFzYklnTU5BQ0FBSUFFZ0FoRGhCRUVBSVFNTElBTUxTZ0VDZnlNQVFhQUJheUlFSkFBZ0JDQURJQUpCQ0NBQUtBSUFLQUlFRUJjaUJVRVlhaUFCRUE0YUlBVWdBQ2dDQkNnQ0FDZ0NCRUVFYWhDYUFSb2dCUkFZSUFSQm9BRnFKQUFMeEFFQ0JYOEJmaU1BUVJCcklnZ2tBQ0FCS0FMQUt5RUpJQUZCQVRZQ3dDc2dBVUhFSzJvaUJ5Z0NBQ0VLSUFjZ0JUWUNBRUVDSVFjQ1FDQUJJQUVnQWlnQ0pCQ0ZBa0VBRUpZQ0lnWkZEUUFnQmlnQ0ZCQ3VDVVVFUUNBQklBZ2dCQkFVSWdZZ0FrRVFhaEFuSUFZUUR4b01BUXNnQmlnQ0hCQmpJZ3RDQUZNRVFDQUJJQWdnQXhBVUlnWWdBa0VRYWhBbklBWVFEeG9NQVFzZ0FDQUxQZ0lBUVFFaEJ3c2dBQ0FIT2dBRUlBRWdDallDeENzZ0FTQUpOZ0xBS3lBSVFSQnFKQUFMWGdFQ2Z5TUFRVUJxSWdVa0FDQUZRUWhxRU04SUlnUkJDRFlDSkNBRUlBTTJBZ0FnQkNBQ0tRSUFOd0lFSUFRZ0Fpa0NDRGNDRENBRUlBSW9BaEEyQWhRZ0JFRVlhaUFCRU9VTklBQWdCQkNvQnlBRUVJY0ZJQVZCUUdza0FBczhBUUYrSUFCRkJFQkJBQThMQW45QkFDQUFLQUlFSWdBcEF4QWdBNE1pQkNBRVFnRjlnMUFOQUJwQkFTQUFJQUlRU0EwQUdpQUFJQUVRU0FzTEp3QWdBU0FDTmdJQUlBRWdBQ2tDQkRjQ0JDQUJJQUFwQWd3M0Fnd2dBU0FBS0FJVU5nSVVDeThCQVg5QkdCQVZJZ0lnQVRZQ0FDQUNJQUFwQWdRM0FnUWdBaUFBS1FJTU53SU1JQUlnQUNnQ0ZEWUNGQ0FDQzUwQkFRRi9Jd0JCd0FGcklnc2tBQ0FMSUFJMkFyQUJJQXNnQVRZQ3VBRWdBQ0FMS0FLNEFTQUxLQUt3QVNBREVPVUVJZ0FnQ2pZQ0JDQUFJQWsyQWdBZ0FDQUVOZ0lrSUFBZ0NEWUNBQ0FFQkg4Z0JBVWdDeUFGUVJ4QkFDQUxRYUFCYWhBZElnRVFGeUlDUVJocUlBY1FEaG9nQWhBWUlBRVFIaUFBS0FJa0N4QlhJQUFvQWdoQkFVRUFJQVlnQlVFZEVFc2dDMEhBQVdva0FDQUFDMThCQW44akFFR3dBV3NpQVNRQUlBRkJJR29RU1NJQ1FRaHFJZ1VnQVVFUWFpQUVFQlFpQmhBU0dpQUZRYlgwQ1JBT0dpQUZJQUVnQXhBVUlnVVFFaG9nQlJBUEdpQUdFQThhSUFBZ0FrRU1haEJDSUFJUVVTQUJRYkFCYWlRQUMzVUJBWDhqQUVFUWF5SUFKQUFDUUNBQklBSW9BZ1JCOElVUVJ3Ui9JQUlRc2dJaUFrVU5BU0FDS0FJY0lBTkhEUUVnQWlnQ0dBVWdBZ3NRcXdJaUFrVUVRQXdCQ3lBQUlBSTJBZ3dnQVNnQ0FDRUJJQUFnQXpZQ0NDQUJJQUJCREdvZ0FFRUlhaENmQWlFRUN5QUFRUkJxSkFBZ0JBdE1BUUovSXdCQmtBRnJJZ1FrQUNBRUVFa2lCVUVJYWlBQktBSUFJZ0VnQTBzRWYwR3M0Z1lGSUFGQkFuUWdBbW9vQWdBTEVBNGFJQUFnQlVFTWFoQkNJQVVRVVNBRVFaQUJhaVFBQ3k0QkFuOGpBRUVRYXlJQ0pBQWdBQ2dDQUNBQ0lBRVFGQ0lESUFBb0FnUVEvQUVnQXhBUEdpQUNRUkJxSkFBTG9nRUJCWDhqQUVFUWF5SUdKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUZOZ0lNSUFZZ0JUWUNDQ0FBUVl3QmFpSUZFUGNmSVFjZ0FDZ0NDQ0VJSUFZb0FnZ2hDU01BUVJCcklnQWtBQ0FBSUFrMkFnQWdBQ0FJTmdJSUlBY2dBQ2dDQ0NBQUtBSUFJQUVRNVFRaUFTQUVOZ0lFSUFFZ0F6WUNBQ0FCSUFJMkFnQWdBRUVRYWlRQUlBVWdCeEFvSUFVZ0JTZ0NHRUVCYWpZQ0dDQUdRUkJxSkFBZ0J3dTNBUUVFZnlNQVFaQUJheUlESkFBZ0FDQUJSZ1IvUVFFRklBTkI4QUJxRU5vVkl3QkJJR3NpQkNRQUlBUWdBallDQ0NBRUlBUkJDR29pQlRZQ0dDQURRVEJxSWdZZ0FTQUZFSnNqSUFVUUZpQUVRU0JxSkFBZ0EwRVFhaUlCRU5vVklBTWdBRFlDRENBRFFkQUFhaUFHSUFFZ0EwRU1haENjSXlBREtBSlFJUUFnQXlnQ2NDRUJJQU5CMkFCcUVCWWdBMEVZYWhBV0lBTkJPR29RRmlBRFFmZ0FhaEFXSUFBZ0FVY0xJUUFnQTBHUUFXb2tBQ0FBQ3pjQkFYOGdBRUVBTmdJUVFjZ0JFQlVpQXlBQ05nSUFJQU1nQVNrQ0FEY0NCQ0FEUVF4cUlBRkJDR29RcXdNZ0FDQUROZ0lRSUFBTGNnRUNmeU1BUVNCcklnTWtBQ0FEUVFocUlnSWdBQ0FBS0FJQUtBSWtFUUlBSUFJUThBc2pBRUVRYXlJQUpBQWdBQ0FEUVJocU5nSUlJQUJCQ0dvZ0FrRi9JQUl0QUFnaUFpQUNRZjhCUmh0QkFuUWdBV29vQWdBUkFRQWhBaUFBUVJCcUpBQWdBaUVBSUFOQklHb2tBQ0FBQ3pRQkFYOGdBU0FGVHdSQUVBRUFDeUFFSUFBb0FnZ2dBQ2dDQUdzZ0EyMGlBRUVCZENJR0lBRWdBU0FHU1JzZ0FDQUNUeHNMTWdFQ2Z5QUFRYXptRHpZQ0FDQUFLQUlFUVF4cklnRWdBU2dDQ0VFQmF5SUNOZ0lJSUFKQkFFZ0VRQ0FCRUI4TElBQUxRQUVCZnlBQlFRaDFJUWNnQUNBQ0lBTWdBVUVCY1FSL0lBUW9BZ0FnQnhEVkRBVWdCd3NnQkdvZ0JVRUNJQUZCQW5FYklBWWdBQ2dDQUNnQ0ZCRUtBQXNLQUNBQUlBRnFLQUlBQzEwQkFYOGdBQ2dDRUNJRFJRUkFJQUJCQVRZQ0pDQUFJQUkyQWhnZ0FDQUJOZ0lRRHdzQ1FDQUJJQU5HQkVBZ0FDZ0NHRUVDUncwQklBQWdBallDR0E4TElBQkJBVG9BTmlBQVFRSTJBaGdnQUNBQUtBSWtRUUZxTmdJa0N3c2dBQUpBSUFBb0FnUWdBVWNOQUNBQUtBSWNRUUZHRFFBZ0FDQUNOZ0ljQ3d1YUFRQWdBRUVCT2dBMUFrQWdBQ2dDQkNBQ1J3MEFJQUJCQVRvQU5BSkFJQUFvQWhBaUFrVUVRQ0FBUVFFMkFpUWdBQ0FETmdJWUlBQWdBVFlDRUNBRFFRRkhEUUlnQUNnQ01FRUJSZzBCREFJTElBRWdBa1lFUUNBQUtBSVlJZ0pCQWtZRVFDQUFJQU0yQWhnZ0F5RUNDeUFBS0FJd1FRRkhEUUlnQWtFQlJnMEJEQUlMSUFBZ0FDZ0NKRUVCYWpZQ0pBc2dBRUVCT2dBMkN3dUVBUUVEZnlNQVFSQnJJZ01rQUNBQUVKZ0dJQUpCY0VrRVFBSkFJQUlRMVFnRVFDQUFJQUlRaXdVZ0FCQ0tCU0VFREFFTElBQWdBaENYQmtFQmFpSUZFSlFHSWdRUWxnWWdBQ0FGRUpVR0lBQWdBaERUQkFzZ0JCQ0RBU0FCSUFJUXVRTWFJQU5CQURvQUR5QUNJQVJxSUFOQkQyb1EwUUlnQTBFUWFpUUFEd3NRdUFNQUM0UUJBUUovSXdCQkVHc2lCQ1FBSUFBUW1BWWdBMEZ3U1FSQUFrQWdBeERWQ0FSQUlBQWdBaENMQlNBQUVJb0ZJUU1NQVFzZ0FDQURFSmNHUVFGcUlnVVFsQVlpQXhDV0JpQUFJQVVRbFFZZ0FDQUNFTk1FQ3lBREVJTUJJQUVnQWhDNUF4b2dCRUVBT2dBUElBSWdBMm9nQkVFUGFoRFJBaUFFUVJCcUpBQVBDeEM0QXdBTFBRQWdBVUhqQUUwRVFDQUFJQUVRb0JNUEN5QUJRZWNIVFFSQUlBQWdBVUhrQUc0aUFCQ2ZFeUFBUVp4L2JDQUJhaERvQ1E4TElBQWdBUkM0QkFzdkFDQUJRWS9PQUUwRVFDQUFJQUVRMnd3UEN5QUFJQUZCa000QWJpSUFFTnNNSUFCQjhMRi9iQ0FCYWhDNEJBc0tBRUhrdkFNUXNCZ0FDNVVFQVF0L0l3QkJnQUZySWdza0FDQUNJQU1RZ2dvaENDQUxRZHNYTmdJUUlBdEJDR29nQzBFUWFpSUpFSUVLSVE0Q1FDQUlRZVVBVHdSQUlBZ1E0QUVpQ1VVTkFTQU9JQWtRaGdJTElBa2hCaUFDSVFjRFFDQURJQWRHQkVBRFFBSkFJQUFvQWdBaUJpQUJSaUlIUVFFZ0NCc0VRQ0FIUlEwQklBVWdCU2dDQUVFQ2NqWUNBQXdCQ3lBTVFRRnFJUTlCQUNFTklBUWdCaXdBQUJDSUJ5RVFJQWtoQmlBQ0lRY0RRQ0FESUFkR0JFQWdEeUVNSUExRkRRTWdBQ0FBS0FJQVFRRnFOZ0lBSUFraEJpQUNJUWNnQ0NBS2FrRUNTUTBEQTBBZ0F5QUhSZ1JBREFVRkFrQWdCaTBBQUVFQ1J3MEFJQWNRT3lBTVJnMEFJQVpCQURvQUFDQUtRUUZySVFvTElBWkJBV29oQmlBSFFReHFJUWNNQVFzQUN3QUZBa0FnQmkwQUFFRUJSdzBBQWtBZ0JDQUhJQXdRaVFFc0FBQVFpQWNnRUVZRVFFRUJJUTBnQnhBN0lBOUhEUUlnQmtFQ09nQUFJQXBCQVdvaENnd0JDeUFHUVFBNkFBQUxJQWhCQVdzaENBc2dCa0VCYWlFR0lBZEJER29oQnd3QkN3QUxBQXNMQWtBQ1FBTkFJQUlnQTBZTkFTQUpMUUFBUVFKSEJFQWdDVUVCYWlFSklBSkJER29oQWd3QkN3c2dBaUVEREFFTElBVWdCU2dDQUVFRWNqWUNBQXNnRGhEWUFTQUxRWUFCYWlRQUlBTVBCUUpBSUFjUXZ3UkZCRUFnQmtFQk9nQUFEQUVMSUFaQkFqb0FBQ0FLUVFGcUlRb2dDRUVCYXlFSUN5QUdRUUZxSVFZZ0IwRU1haUVIREFFTEFBc0FDeEJ2QUFzWUFDQUFRWWllRHpZQ0FDQUFLQUlRRU1FRklBQVE3QXdMcndRQkMzOGpBRUdBQVdzaUN5UUFJQUlnQXhDQ0NpRUlJQXRCMnhjMkFoQWdDMEVJYWlBTFFSQnFJZ2tRZ1FvaERnSkFJQWhCNVFCUEJFQWdDQkRnQVNJSlJRMEJJQTRnQ1JDR0Fnc2dDU0VISUFJaEJnTkFJQU1nQmtZRVFBTkFBa0FnQUNnQ0FDSUdJQUZHSWdkQkFTQUlHd1JBSUFkRkRRRWdCU0FGS0FJQVFRSnlOZ0lBREFFTElBeEJBV29oRDBFQUlRMGdCQ0FHS0FJQUVJUUhJUkFnQ1NFSElBSWhCZ05BSUFNZ0JrWUVRQ0FQSVF3Z0RVVU5BeUFBSUFBb0FnQkJCR28yQWdBZ0NTRUhJQUloQmlBSUlBcHFRUUpKRFFNRFFDQURJQVpHQkVBTUJRVUNRQ0FITFFBQVFRSkhEUUFnQmlnQ0JDQUdMUUFMRUpnQklBeEdEUUFnQjBFQU9nQUFJQXBCQVdzaENnc2dCMEVCYWlFSElBWkJER29oQmd3QkN3QUxBQVVDUUNBSExRQUFRUUZIRFFBQ1FDQUVJQVlnREJEMUFTZ0NBQkNFQnlBUVJnUkFRUUVoRFNBR0tBSUVJQVl0QUFzUW1BRWdEMGNOQWlBSFFRSTZBQUFnQ2tFQmFpRUtEQUVMSUFkQkFEb0FBQXNnQ0VFQmF5RUlDeUFIUVFGcUlRY2dCa0VNYWlFR0RBRUxBQXNBQ3dzQ1FBSkFBMEFnQWlBRFJnMEJJQWt0QUFCQkFrY0VRQ0FKUVFGcUlRa2dBa0VNYWlFQ0RBRUxDeUFDSVFNTUFRc2dCU0FGS0FJQVFRUnlOZ0lBQ3lBT0VOZ0JJQXRCZ0FGcUpBQWdBdzhGQWtBZ0JpZ0NCQ0FHTFFBTEVQNEpSUVJBSUFkQkFUb0FBQXdCQ3lBSFFRSTZBQUFnQ2tFQmFpRUtJQWhCQVdzaENBc2dCMEVCYWlFSElBWkJER29oQmd3QkN3QUxBQXNRYndBTFV3RUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBRVF0d01oQVNBQVFZQUJUd1JBUVg5QmZ5QUFRZjhCY1VIMHFTQW9BZ0FvQWdBYklBQkJnSDl4UVlDL0EwY2JJUUFMSUFFUXRnTWdBa0VRYWlRQUlBQUxDQUFnQUVHVUJHb0xDQUFnQUVHSUJHb0xDQUFnQUVIOEEyb0xDQUFnQUVId0Eyb0xDQUFnQUVIWUEyb0xDQUFnQUVHNEFXb0xCd0FnQUVFUWFnc1ZBQ0FBUWJ5ZUR6WUNBQ0FBS0FJSUVNRUZJQUFMYmdJQmZ3RjlJd0JCRUdzaUJTUUFJQUFDZndKQUlBUkRBQUFBQUZ3RVFDQURJQVNWSWdhTFF3QUFnSDlkRFFFTElBVWdBMEhaa2djZ0JCRHNCaUFCSUFVZ0FoQmRJQVVRRHhvZ0F5RUdJQUV0QUFRTkFFRUNEQUVMSUFBZ0JqZ0NBRUVCQ3pvQUJDQUZRUkJxSkFBTGRnSUJmd0Y4SXdCQkVHc2lCU1FBSUFBQ2Z3SkFJQVJFQUFBQUFBQUFBQUJpQkVBZ0F5QUVveUlHbVVRQUFBQUFBQUR3ZjJNTkFRc2dCU0FEUWRtU0J5QUVFTzBHSUFFZ0JTQUNFRjBnQlJBUEdpQURJUVlnQVMwQUJBMEFRUUlNQVFzZ0FDQUdPUU1BUVFFTE9nQUlJQVZCRUdva0FBc29BUUYvSUFCQnpKVVBOZ0lBQWtBZ0FDZ0NDQ0lCUlEwQUlBQXRBQXhGRFFBZ0FSQWZDeUFBQzcwQ0FRSi9Jd0JCRUdzaUN5UUFBa0FnQWlnQ0FDSUtJQW9vQWdBb0FnZ1JBQUFpQ2tVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFvb0FnUWlDa0h3bnhKR0JFQWdDMEVJYWlBQklBSW9BZ0FRUENBREtBSUFFRHdnQkNnQ0FCQThJQVVvQWdBUVBDQUdLQUlBRUR3Z0J5Z0NBQkE4SUFnb0FnQVFQQ0FKS0FJQUVEd1FuUlVNQVFzZ0NrR3dxUkpHQkVBZ0MwRUlhaUFCSUFJb0FnQVFOQ0FES0FJQUVEUWdCQ2dDQUJBMElBVW9BZ0FRTkNBR0tBSUFFRFFnQnlnQ0FCQTBJQWdvQWdBUU5DQUpLQUlBRURRUW1CVU1BUXNnQ2tIUXFCSkhEUUVnQzBFSWFpQUJJQUlvQWdBUVB5QURLQUlBRUQ4Z0JDZ0NBQkEvSUFVb0FnQVFQeUFHS0FJQUVEOGdCeWdDQUJBL0lBZ29BZ0FRUHlBSktBSUFFRDhRamhVTElBQWdDeWtEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQXRCRUdva0FBc1lBQ0FBS0FJSUVNQUJSd1JBSUFBb0FnZ1F3UVVMSUFBTEhRQUNRQ0FBSUFGR0JFQWdBVUVBT2dCNERBRUxJQUVnQWhDaEZBc0xrd0lCQW44akFFRVFheUlKSkFBQ1FDQUNLQUlBSWdnZ0NDZ0NBQ2dDQ0JFQUFDSUlSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdDQ2dDQkNJSVFmQ2ZFa1lFUUNBSlFRaHFJQUVnQWlnQ0FCQThJQU1vQWdBUVBDQUVLQUlBRUR3Z0JTZ0NBQkE4SUFZb0FnQVFQQ0FIS0FJQUVEd1FxaFVNQVFzZ0NFR3dxUkpHQkVBZ0NVRUlhaUFCSUFJb0FnQVFOQ0FES0FJQUVEUWdCQ2dDQUJBMElBVW9BZ0FRTkNBR0tBSUFFRFFnQnlnQ0FCQTBFS1VWREFFTElBaEIwS2dTUncwQklBbEJDR29nQVNBQ0tBSUFFRDhnQXlnQ0FCQS9JQVFvQWdBUVB5QUZLQUlBRUQ4Z0JpZ0NBQkEvSUFjb0FnQVFQeENmRlFzZ0FDQUpLUU1JTndJQURBRUxJQUJCQURvQUJBc2dDVUVRYWlRQUMra0JBUUovSXdCQkVHc2lCeVFBQWtBZ0FpZ0NBQ0lHSUFZb0FnQW9BZ2dSQUFBaUJrVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBWW9BZ1FpQmtId254SkdCRUFnQjBFSWFpQUJJQUlvQWdBUVBDQURLQUlBRUR3Z0JDZ0NBQkE4SUFVb0FnQVFQQkRBRlF3QkN5QUdRYkNwRWtZRVFDQUhRUWhxSUFFZ0FpZ0NBQkEwSUFNb0FnQVFOQ0FFS0FJQUVEUWdCU2dDQUJBMEVMd1ZEQUVMSUFaQjBLZ1NSdzBCSUFkQkNHb2dBU0FDS0FJQUVEOGdBeWdDQUJBL0lBUW9BZ0FRUHlBRktBSUFFRDhRclJVTElBQWdCeWtEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQWRCRUdva0FBc01BQ0FBSUFBb0FnQVFod1FMTkFFQmZ5TUFRUkJySWdVa0FDQUZRUWhxSUFRUXR3TWhCQ0FBSUFFZ0FpQURFSThLSVFBZ0JCQzJBeUFGUVJCcUpBQWdBQXN3QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQWhDM0F5RUNJQUFnQVJDakRTRUFJQUlRdGdNZ0EwRVFhaVFBSUFBTElRQWdBRUdBbnc4MkFnQWdBQ2dDQ0JEQUFVY0VRQ0FBS0FJSUVNRUZDeUFBQ3dzQUlBQWdBU0FDRVBBVEM5QUJBUVIvSXdCQkVHc2lCaVFBUWUvLy8vOERJUWNnQWtIdi8vLy9BeUFCYTAwRVFDQUFFSThDSVFnZ0FVSG0vLy8vQVUwRVFDQUdJQUZCQVhRMkFnZ2dCaUFCSUFKcU5nSU1JQVpCREdvZ0JrRUlhaENKQlNnQ0FCQ0xCMEVCYWlFSEN5QUhFSk1HSVFJZ0JBUkFJQUlnQ0NBRUVNSUVDeUFESUFRZ0JXb2lDVWNFUUNBQ0lBUkJBblFpQkdvZ0JDQUlhaUFGUVFKMGFpQURJQWxyRU1JRUN5QUJRUUZxSWdGQkFrY0VRQ0FJSUFFUS9Ba0xJQUFnQWhDWkFpQUFJQWNRaWdjZ0JrRVFhaVFBRHdzUXVBTUFDd3dBSUFBZ0FVRVFhaEJVR2dzSEFDQUFLQUlNQ3d3QUlBQWdBVUVNYWhCVUdnc0hBQ0FBTEFBSkN3Y0FJQUFzQUFnTGl3RUJBMzhnQUNFREFrQWdBVUh3Ly8vL0Ewa0VRQUpBSUFFUWhBb0VRQ0FESUFFUXdBVU1BUXNnQXlBQkVJc0hRUUZxSWdRUWt3WWlCUkNaQWlBRElBUVFpZ2NnQXlBQkVJY0VJQVVoQXdzZ0F5RUVJQUVpQlFSQUEwQWdCQ0FDTmdJQUlBUkJCR29oQkNBRlFRRnJJZ1VOQUFzTElBTWdBVUVDZEdwQkFCQ1pBZ3dCQ3hDNEF3QUxJQUFMMVFNQUFrQUNRQ0FBSUFWR0JFQWdBUzBBQUVVTkFrRUFJUVVnQVVFQU9nQUFJQVFnQkNnQ0FDSUFRUUZxTmdJQUlBQkJMam9BQUNBSEVEdEZEUUVnQ1NnQ0FDSUFJQWhyUVo4QlNnMEJJQW9vQWdBaEFTQUpJQUJCQkdvMkFnQWdBQ0FCTmdJQVFRQVBDd0pBSUFBZ0JrY05BQ0FIRUR0RkRRQWdBUzBBQUVVTkFrRUFJUVVnQ1NnQ0FDSUFJQWhyUVo4QlNnMEJJQW9vQWdBaEFTQUpJQUJCQkdvMkFnQWdBQ0FCTmdJQUlBcEJBRFlDQUVFQUR3dEJmeUVGSUFzZ0MwR0FBV29nQUJDQURTQUxheUlBUWZ3QVNnMEFJQUJCQW5WQmdKTVBhaTBBQUNFR0FrQUNRQ0FBUVh0eElnVkIyQUJIQkVBZ0JVSGdBRWNOQVNBRElBUW9BZ0FpQUVjRVFFRi9JUVVnQUVFQmF5MEFBRUhmQUhFZ0FpMEFBRUgvQUhGSERRUUxJQVFnQUVFQmFqWUNBQ0FBSUFZNkFBQkJBQThMSUFKQjBBQTZBQUFNQVFzZ0JrSGZBSEVpQXlBQ0xRQUFSdzBBSUFJZ0EwR0FBWEk2QUFBZ0FTMEFBRVVOQUNBQlFRQTZBQUFnQnhBN1JRMEFJQWtvQWdBaUFTQUlhMEdmQVVvTkFDQUtLQUlBSVFJZ0NTQUJRUVJxTmdJQUlBRWdBallDQUFzZ0JDQUVLQUlBSWdGQkFXbzJBZ0FnQVNBR09nQUFRUUFoQlNBQVFkUUFTZzBBSUFvZ0NpZ0NBRUVCYWpZQ0FBc2dCUThMUVg4TFZRRUNmeU1BUVJCcklnWWtBQ0FHUVFocUlnVWdBUkIrSUFVUThBSkJnSk1QUWFDVER5QUNFUG9FSUFNZ0JSQ0ZCeUlCRU5vRE5nSUFJQVFnQVJEdkFqWUNBQ0FBSUFFUTdnSWdCUkJrSUFaQkVHb2tBQXNxQUFOQUFrQWdBQ0FCUndSL0lBQW9BZ0FnQWtjTkFTQUFCU0FCQ3c4TElBQkJCR29oQUF3QUN3QUx5UU1BQWtBQ1FDQUFJQVZHQkVBZ0FTMEFBRVVOQWtFQUlRVWdBVUVBT2dBQUlBUWdCQ2dDQUNJQVFRRnFOZ0lBSUFCQkxqb0FBQ0FIRUR0RkRRRWdDU2dDQUNJQUlBaHJRWjhCU2cwQklBb29BZ0FoQVNBSklBQkJCR28yQWdBZ0FDQUJOZ0lBUVFBUEN3SkFJQUFnQmtjTkFDQUhFRHRGRFFBZ0FTMEFBRVVOQWtFQUlRVWdDU2dDQUNJQUlBaHJRWjhCU2cwQklBb29BZ0FoQVNBSklBQkJCR28yQWdBZ0FDQUJOZ0lBSUFwQkFEWUNBRUVBRHd0QmZ5RUZJQXNnQzBFZ2FpQUFFS2NVSUF0cklnQkJIMG9OQUNBQVFZQ1REMm90QUFBaEJnSkFBa0FDUUFKQUlBQkJmbkZCRm1zT0F3RUNBQUlMSUFNZ0JDZ0NBQ0lBUndSQUlBQkJBV3N0QUFCQjN3QnhJQUl0QUFCQi93QnhSdzBFQ3lBRUlBQkJBV28yQWdBZ0FDQUdPZ0FBUVFBUEN5QUNRZEFBT2dBQURBRUxJQVpCM3dCeElnTWdBaTBBQUVjTkFDQUNJQU5CZ0FGeU9nQUFJQUV0QUFCRkRRQWdBVUVBT2dBQUlBY1FPMFVOQUNBSktBSUFJZ0VnQ0d0Qm53RktEUUFnQ2lnQ0FDRUNJQWtnQVVFRWFqWUNBQ0FCSUFJMkFnQUxJQVFnQkNnQ0FDSUJRUUZxTmdJQUlBRWdCam9BQUVFQUlRVWdBRUVWU2cwQUlBb2dDaWdDQUVFQmFqWUNBQXNnQlE4TFFYOExWUUVDZnlNQVFSQnJJZ1lrQUNBR1FRaHFJZ1VnQVJCK0lBVVF3d0pCZ0pNUFFhQ1REeUFDRUw4RklBTWdCUkNKQnlJQkVOb0RPZ0FBSUFRZ0FSRHZBam9BQUNBQUlBRVE3Z0lnQlJCa0lBWkJFR29rQUFzTkFDQUFJQUVnQWtKL0VLUU5Dd2tBSUFCQkFSQzFGQXNKQUNBQVFRQVF0UlFMSXdFQ2Z5QUFJUUVEUUNBQklnSkJCR29oQVNBQ0tBSUFEUUFMSUFJZ0FHdEJBblVMc0FJQkJIOGdBQUovQWtBZ0FDSUNRUU54QkVBRFFDQUNMUUFBSWdGRklBRkJQVVp5RFFJZ0FrRUJhaUlDUVFOeERRQUxDd0pBSUFJb0FnQWlBVUYvY3lBQlFZR0NoQWhyY1VHQWdZS0VlSEVOQUFOQUlBRkJ2ZnIwNlFOeklnRkJmM01nQVVHQmdvUUlhM0ZCZ0lHQ2hIaHhEUUVnQWlnQ0JDRUJJQUpCQkdvaEFpQUJRWUdDaEFocklBRkJmM054UVlDQmdvUjRjVVVOQUFzTEEwQWdBaUlCTFFBQUlnTUVRQ0FCUVFGcUlRSWdBMEU5UncwQkN3c2dBUXdCQ3lBQ0N5SUNSZ1JBUVFBUEN3SkFJQUFnQWlBQWF5SURhaTBBQUEwQVFiQzZJQ2dDQUNJQ1JRMEFJQUlvQWdBaUFVVU5BQU5BQWtBZ0FDQUJJQU1RcUExRkJFQWdBU0FEYWlJQkxRQUFRVDFHRFFFTElBSW9BZ1FoQVNBQ1FRUnFJUUlnQVEwQkRBSUxDeUFCUVFGcUlRUUxJQVFMc1g0RUJuOEJmUUY4QVg0akFFSEFCbXNpQmlRQUFrQWdBVVVFUUNBQVFRQTZBQVFNQVFzQ1FBSkFBa0FnQVNnQ0JDSUhRWkQrRHhCSUJFQWdCaUFETmdMTUJDQUJLQUlJSUFOR0RRSkJBQ0VISUFORkRRTWdBeWdDQkNJSVFkQ2dFa1lFUUNBR0FuOGdBU3NERUNJTlJBQUFBQUFBQU9CRFpBUkFJQVpCQURZQ29BVkJBZ3dCQ3lBTlJBQUFBQUFBQU9ERFl3UkFJQVpCQVRZQ29BVkJBZ3dCQ3lBR0FuNGdEWmxFQUFBQUFBQUE0RU5qQkVBZ0RiQU1BUXRDZ0lDQWdJQ0FnSUNBZndzM0E2QUZRUUVMT2dDb0JTQUdRYUFGYWhDeUFRUkFJQUlnQmtITUJHb2dCa0dnQldvUVNoREdBaUVCREFRTElBRXJBeEFoRFNBR1FlZ0VhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQXV3RUlBWXRBUE1FSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUxvQkNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndNWUlBWkJnQVZxSUEwZ0JrRVlhaENHQmlBQkVBOGFJQUlRSENBQ1FjZ0NhaUVCQW44Q2Z3SkFBa0FnQlFSQUlBWWdCaWdDaEFVZ0JpMEFpd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53TUlJQUVnQmtFSWFpQUVFUGtCQWtBZ0JrR2dCV29RdFFRb0FnQU9BZ0FEQWdzZ0JrTC8vLy8vLy8vLy8vOEFOd1BvQkNBQ0lBWkJ6QVJxSUFaQjZBUnFFTVlDREFNTElBWWdCaWdDaEFVZ0JpMEFpd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53TVFJQUVnQmtFUWFpQUVFTlVCUVFJTUF3c2dCa0dBQldvUUR4b01CUXNnQmtLQWdJQ0FnSUNBZ0lCL053UG9CQ0FDSUFaQnpBUnFJQVpCNkFScUVNWUNDeUVCUVFFTElRY2dCa0dBQldvUUR4b01CQXNnQ0VId254SkdCRUFnQmdKL0lBRXJBeEFpRFVULy8vLy8vLy92ZjJRRVFDQUdRUUEyQXFBRlFRSU1BUXNnRFVULy8vLy8vLy92LzJNRVFDQUdRUUUyQXFBRlFRSU1BUXNnQmlBTk9RT2dCVUVCQ3pvQXFBVWdCa0dnQldvUXNnRUVRQ0FDSUFaQnpBUnFJQVpCb0FWcUVFb1FyZ0loQVF3RUN5QUJLd01RSVEwZ0JrSG9CR29pQVNBRElBTW9BZ0FvQWd3UkFnQWdCaUFHS0FMc0JDQUdMUUR6QkNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXVRRUlBWWdCaWdDNkFRZ0FTQURHellDNEFRZ0JpQUdLUVBnQkRjRE1DQUdRWUFGYWlBTklBWkJNR29RaGdZZ0FSQVBHaUFDRUJ3Z0FrSElBbW9oQVFKL0FuOENRQUpBSUFVRVFDQUdJQVlvQW9RRklBWXRBSXNGSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDM0FRZ0JpQUdLQUtBQlNBR1FZQUZhaUFER3pZQzJBUWdCaUFHS1FQWUJEY0RJQ0FCSUFaQklHb2dCQkQ1QVFKQUlBWkJvQVZxRUxVRUtBSUFEZ0lBQXdJTElBWkMvLy8vLy8vLy8vZi9BRGNENkFRZ0FpQUdRY3dFYWlBR1FlZ0VhaEN1QWd3REN5QUdJQVlvQW9RRklBWXRBSXNGSWdJZ0FrRVlkRUVZZFVFQVNDSUNHellDMUFRZ0JpQUdLQUtBQlNBR1FZQUZhaUFDR3pZQzBBUWdCaUFHS1FQUUJEY0RLQ0FCSUFaQktHb2dCQkRWQVVFQ0RBTUxJQVpCZ0FWcUVBOGFEQVVMSUFaQy8vLy8vLy8vLzNjM0ErZ0VJQUlnQmtITUJHb2dCa0hvQkdvUXJnSUxJUUZCQVFzaEJ5QUdRWUFGYWhBUEdnd0VDeUFJUVpDcUVrWUVRRUVDSVFnQ2YwRUFJQUVyQXhBaURVUUFBTUQvLy8vZlFXUU5BQnBCQVNBTlJBQUFBQUFBQU9EQll3MEFHa0VCSVFnQ2Z5QU5tVVFBQUFBQUFBRGdRV01FUUNBTnFnd0JDMEdBZ0lDQWVBc0xJUWNnQmlBSU9nRHNCQ0FHSUFjMkF1Z0VJQVpCNkFScUVDc0VRQ0FDSUFaQnpBUnFJQVpCNkFScUVCb1F4QUloQVF3RUN5QUJLd01RSVEwZ0JrR0FCV29pQVNBRElBTW9BZ0FvQWd3UkFnQWdCaUFHS0FLRUJTQUdMUUNMQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXVRRUlBWWdCaWdDZ0FVZ0FTQURHellDNEFRZ0JpQUdLUVBnQkRjRFNDQUdRYUFGYWlBTklBWkJ5QUJxRUlZR0lBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3Si9Ba0FDUUNBRkJFQWdCaUFHS0FLa0JTQUdMUUNyQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXR3RUlBWWdCaWdDb0FVZ0JrR2dCV29nQXhzMkF0Z0VJQVlnQmlrRDJBUTNBemdnQVNBR1FUaHFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkIvLy8vL3djMkFvQUZJQUlnQmtITUJHb2dCa0dBQldvUXhBSU1Bd3NnQmlBR0tBS2tCU0FHTFFDckJTSUNJQUpCR0hSQkdIVkJBRWdpQWhzMkF0UUVJQVlnQmlnQ29BVWdCa0dnQldvZ0FoczJBdEFFSUFZZ0Jpa0QwQVEzQTBBZ0FTQUdRVUJySUFRUTFRRkJBZ3dEQ3lBR1FhQUZhaEFQR2d3RkN5QUdRWUNBZ0lCNE5nS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVNUUNDeUVCUVFFTElRY2dCa0dnQldvUUR4b01CQXNnQ0VHZ3N4SkdCRUJCQWlFSUFuOUJBQ0FCS3dNUUlnMUVBQURnLy8vLzcwRmtEUUFhUVFFZ0RVUUFBQUFBQUFBQUFHTU5BQnBCQVNFSUFuOGdEVVFBQUFBQUFBRHdRV01nRFVRQUFBQUFBQUFBQUdaeEJFQWdEYXNNQVF0QkFBc0xJUWNnQmlBSU9nRHNCQ0FHSUFjMkF1Z0VJQVpCNkFScUVDc0VRQ0FDSUFaQnpBUnFJQVpCNkFScUVCb1F4d0loQVF3RUN5QUJLd01RSVEwZ0JrR0FCV29pQVNBRElBTW9BZ0FvQWd3UkFnQWdCaUFHS0FLRUJTQUdMUUNMQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXVRRUlBWWdCaWdDZ0FVZ0FTQURHellDNEFRZ0JpQUdLUVBnQkRjRFlDQUdRYUFGYWlBTklBWkI0QUJxRUlZR0lBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3Si9Ba0FDUUNBRkJFQWdCaUFHS0FLa0JTQUdMUUNyQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXR3RUlBWWdCaWdDb0FVZ0JrR2dCV29nQXhzMkF0Z0VJQVlnQmlrRDJBUTNBMUFnQVNBR1FkQUFhaUFFRVBrQkFrQWdCa0hvQkdvUVBTZ0NBQTRDQUFNQ0N5QUdRWDgyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29ReHdJTUF3c2dCaUFHS0FLa0JTQUdMUUNyQlNJQ0lBSkJHSFJCR0hWQkFFZ2lBaHMyQXRRRUlBWWdCaWdDb0FVZ0JrR2dCV29nQWhzMkF0QUVJQVlnQmlrRDBBUTNBMWdnQVNBR1FkZ0FhaUFFRU5VQlFRSU1Bd3NnQmtHZ0JXb1FEeG9NQlFzZ0JrRUFOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTWNDQ3lFQlFRRUxJUWNnQmtHZ0JXb1FEeG9NQkFzZ0NFR3dxUkpHQkVBZ0JnSi9JQUVyQXhBaURVUUFBQURnLy8vdlIyUUVRQ0FHUVFBMkF1Z0VRUUlNQVFzZ0RVUUFBQURnLy8vdngyTUVRQ0FHUVFFMkF1Z0VRUUlNQVFzZ0JpQU50amdDNkFSQkFRczZBT3dFSUFaQjZBUnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RcndJaEFRd0VDeUFCS3dNUUlRMGdCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0RlQ0FHUWFBRmFpQU5JQVpCK0FCcUVJWUdJQUVRRHhvZ0FoQWNJQUpCeUFKcUlRRUNmd0ovQWtBQ1FDQUZCRUFnQmlBR0tBS2tCU0FHTFFDckJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF0d0VJQVlnQmlnQ29BVWdCa0dnQldvZ0F4czJBdGdFSUFZZ0Jpa0QyQVEzQTJnZ0FTQUdRZWdBYWlBRUVQa0JBa0FnQmtIb0JHb1FQU2dDQUE0Q0FBTUNDeUFHUWYvLy8vc0hOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFSzhDREFNTElBWWdCaWdDcEFVZ0JpMEFxd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9BcUFGSUFaQm9BVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53TndJQUVnQmtId0FHb2dCQkRWQVVFQ0RBTUxJQVpCb0FWcUVBOGFEQVVMSUFaQi8vLy9lellDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN2QWdzaEFVRUJDeUVISUFaQm9BVnFFQThhREFRTElBaEIwS2dTUmdSQVF3QUFBQUFRUmhvZ0JrSG9CR29pQndKL0lBRXJBeEFpRFVRQUFBQUFBUHp2UUdRRVFDQUhRUUEyQWdCQkFnd0JDeUFOUkFBQUFBQUEvTy9BWXdSQUlBZEJBVFlDQUVFQ0RBRUxJQWNnRGJZUVJqZ0NBRUVCQ3pvQUJDQUhFQ3NFUUNBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RclFJaEFRd0VDeUFCS3dNUUlRMGdCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0RrQUVnQmtHZ0JXb2dEU0FHUVpBQmFoQ0dCaUFCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDZndKQUFrQWdCUVJBSUFZZ0JpZ0NwQVVnQmkwQXF3VWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nTGNCQ0FHSUFZb0FxQUZJQVpCb0FWcUlBTWJOZ0xZQkNBR0lBWXBBOWdFTndPQUFTQUJJQVpCZ0FGcUlBUVErUUVDUUNBR1FlZ0VhaEE5S0FJQURnSUFBd0lMSUFaREFPQi9SeEJHT0FLQUJTQUNJQVpCekFScUlBWkJnQVZxRUswQ0RBTUxJQVlnQmlnQ3BBVWdCaTBBcXdVaUFpQUNRUmgwUVJoMVFRQklJZ0liTmdMVUJDQUdJQVlvQXFBRklBWkJvQVZxSUFJYk5nTFFCQ0FHSUFZcEE5QUVOd09JQVNBQklBWkJpQUZxSUFRUTFRRkJBZ3dEQ3lBR1FhQUZhaEFQR2d3RkN5QUdRd0RnZjhjUVJqZ0NnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoQ3RBZ3NoQVVFQkN5RUhJQVpCb0FWcUVBOGFEQVFMSUFoQjBLVVNSdzBESUFZZ0FTc0RFQ0lOUkFBQUFBQUFBQUFBWWlBTnZVSUFVM0k2QUtBRklBSWdCa0hNQkdvZ0JrR2dCV29RdFFVaEFRd0NDeUFIUWZqOUR4QklCRUFnQmlBRE5nTE1CQ0FCS0FJSUlBTkdEUUpCQUNFSElBTkZEUU1nQXlnQ0JDSUlRZENnRWtZRVFDQUJLUU1RSVE1QkFTRUhJQVpCQVRvQXFBVWdCaUFPTndPZ0JTQUdRYUFGYWhDeUFRUkFJQUlnQmtITUJHb2dCa0dnQldvUVNoREdBaUVCREFVTElBRXBBeEFoRGlBR1FlZ0VhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQXV3RUlBWXRBUE1FSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUxvQkNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndPb0FTQUdRWUFGYWlBT0lBWkJxQUZxRVBFR0lBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3Si9Ba0FDUUNBRkJFQWdCaUFHS0FLRUJTQUdMUUNMQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXR3RUlBWWdCaWdDZ0FVZ0JrR0FCV29nQXhzMkF0Z0VJQVlnQmlrRDJBUTNBNWdCSUFFZ0JrR1lBV29nQkJENUFRSkFJQVpCb0FWcUVMVUVLQUlBRGdJQUF3SUxJQVpDLy8vLy8vLy8vLy8vQURjRDZBUWdBaUFHUWN3RWFpQUdRZWdFYWhER0Fnd0RDeUFHSUFZb0FvUUZJQVl0QUlzRklnSWdBa0VZZEVFWWRVRUFTQ0lDR3pZQzFBUWdCaUFHS0FLQUJTQUdRWUFGYWlBQ0d6WUMwQVFnQmlBR0tRUFFCRGNEb0FFZ0FTQUdRYUFCYWlBRUVOVUJRUUlNQXdzZ0JrR0FCV29RRHhvTUJRc2dCa0tBZ0lDQWdJQ0FnSUIvTndQb0JDQUNJQVpCekFScUlBWkI2QVJxRU1ZQ0N5RUJRUUVMSVFjZ0JrR0FCV29RRHhvTUJBc2dDRUh3bnhKR0JFQWdBU2tERUNFT1FRRWhCeUFHUVFFNkFLZ0ZJQVlnRHJrNUE2QUZJQVpCb0FWcUVMSUJCRUFnQWlBR1Fjd0VhaUFHUWFBRmFoQktFSzRDSVFFTUJRc2dBU2tERUNFT0lBWkI2QVJxSWdFZ0F5QURLQUlBS0FJTUVRSUFJQVlnQmlnQzdBUWdCaTBBOHdRaUF5QURRUmgwUVJoMVFRQklJZ01iTmdMa0JDQUdJQVlvQXVnRUlBRWdBeHMyQXVBRUlBWWdCaWtENEFRM0E4QUJJQVpCZ0FWcUlBNGdCa0hBQVdvUThRWWdBUkFQR2lBQ0VCd2dBa0hJQW1vaEFRSi9BbjhDUUFKQUlBVUVRQ0FHSUFZb0FvUUZJQVl0QUlzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzNBUWdCaUFHS0FLQUJTQUdRWUFGYWlBREd6WUMyQVFnQmlBR0tRUFlCRGNEc0FFZ0FTQUdRYkFCYWlBRUVQa0JBa0FnQmtHZ0JXb1F0UVFvQWdBT0FnQURBZ3NnQmtMLy8vLy8vLy8vOS84QU53UG9CQ0FDSUFaQnpBUnFJQVpCNkFScUVLNENEQU1MSUFZZ0JpZ0NoQVVnQmkwQWl3VWlBaUFDUVJoMFFSaDFRUUJJSWdJYk5nTFVCQ0FHSUFZb0FvQUZJQVpCZ0FWcUlBSWJOZ0xRQkNBR0lBWXBBOUFFTndPNEFTQUJJQVpCdUFGcUlBUVExUUZCQWd3REN5QUdRWUFGYWhBUEdnd0ZDeUFHUXYvLy8vLy8vLzkzTndQb0JDQUNJQVpCekFScUlBWkI2QVJxRUs0Q0N5RUJRUUVMSVFjZ0JrR0FCV29RRHhvTUJBc2dDRUdRcWhKR0JFQkJBU0VISUFaQkFrRUJJQUVwQXhBaURrS0FnSUNBQ0gxQ2dJQ0FnSEJVR3pvQTdBUWdCa0VCSUE2bklBNUNnSUNBZ0hoVEcwRUFJQTVDLy8vLy93ZFhHellDNkFRZ0JrSG9CR29RS3dSQUlBSWdCa0hNQkdvZ0JrSG9CR29RR2hERUFpRUJEQVVMSUFFcEF4QWhEaUFHUVlBRmFpSUJJQU1nQXlnQ0FDZ0NEQkVDQUNBR0lBWW9Bb1FGSUFZdEFJc0ZJZ01nQTBFWWRFRVlkVUVBU0NJREd6WUM1QVFnQmlBR0tBS0FCU0FCSUFNYk5nTGdCQ0FHSUFZcEErQUVOd1BZQVNBR1FhQUZhaUFPSUFaQjJBRnFFUEVHSUFFUUR4b2dBaEFjSUFKQnlBSnFJUU1DZndKL0FrQUNRQ0FGQkVCQkFDRUJJQVlnQmlnQ3BBVWdCaTBBcXdVaUJTQUZRUmgwUVJoMVFRQklJZ1ViTmdMY0JDQUdJQVlvQXFBRklBWkJvQVZxSUFVYk5nTFlCQ0FHSUFZcEE5Z0VOd1BJQVNBRElBWkJ5QUZxSUFRUStRRUNRQ0FHUWVnRWFoQTlLQUlBRGdJQUF3SUxJQVpCLy8vLy93YzJBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1F4QUlNQXdzZ0JpQUdLQUtrQlNBR0xRQ3JCU0lCSUFGQkdIUkJHSFZCQUVnaUFSczJBdFFFSUFZZ0JpZ0NvQVVnQmtHZ0JXb2dBUnMyQXRBRUlBWWdCaWtEMEFRM0E5QUJJQU1nQmtIUUFXb2dCQkRWQVVFQ0RBTUxJQVpCb0FWcUVBOGFEQVlMSUFaQmdJQ0FnSGcyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29ReEFJTElRRkJBUXNoQnlBR1FhQUZhaEFQR2d3RUN5QUlRYUN6RWtZRVFFRUJJUWNnQmtFQ1FRRWdBU2tERUNJT1F2Ly8vLzhQVmhzNkFPd0VJQVpCQVNBT3B5QU9RZ0JURzBFQUlBNUMvLy8vL3c5WEd6WUM2QVFnQmtIb0JHb1FLd1JBSUFJZ0JrSE1CR29nQmtIb0JHb1FHaERIQWlFQkRBVUxJQUVwQXhBaERpQUdRWUFGYWlJQklBTWdBeWdDQUNnQ0RCRUNBQ0FHSUFZb0FvUUZJQVl0QUlzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzVBUWdCaUFHS0FLQUJTQUJJQU1iTmdMZ0JDQUdJQVlwQStBRU53UHdBU0FHUWFBRmFpQU9JQVpCOEFGcUVQRUdJQUVRRHhvZ0FoQWNJQUpCeUFKcUlRTUNmd0ovQWtBQ1FDQUZCRUJCQUNFQklBWWdCaWdDcEFVZ0JpMEFxd1VpQlNBRlFSaDBRUmgxUVFCSUlnVWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQVViTmdMWUJDQUdJQVlwQTlnRU53UGdBU0FESUFaQjRBRnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkJmellDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaERIQWd3REN5QUdJQVlvQXFRRklBWXRBS3NGSWdFZ0FVRVlkRUVZZFVFQVNDSUJHellDMUFRZ0JpQUdLQUtnQlNBR1FhQUZhaUFCR3pZQzBBUWdCaUFHS1FQUUJEY0Q2QUVnQXlBR1FlZ0JhaUFFRU5VQlFRSU1Bd3NnQmtHZ0JXb1FEeG9NQmdzZ0JrRUFOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTWNDQ3lFQlFRRUxJUWNnQmtHZ0JXb1FEeG9NQkFzZ0NFR3dxUkpHQkVBZ0FTa0RFQ0VPSUFaQkFUb0E3QVFnQmlBT3ViWTRBdWdFSUFaQjZBUnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RcndJaEFRd0VDeUFCS1FNUUlRNGdCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0RpQUlnQmtHZ0JXb2dEaUFHUVlnQ2FoRHhCaUFCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDZndKQUFrQWdCUVJBSUFZZ0JpZ0NwQVVnQmkwQXF3VWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nTGNCQ0FHSUFZb0FxQUZJQVpCb0FWcUlBTWJOZ0xZQkNBR0lBWXBBOWdFTndQNEFTQUJJQVpCK0FGcUlBUVErUUVDUUNBR1FlZ0VhaEE5S0FJQURnSUFBd0lMSUFaQi8vLy8rd2MyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29RcndJTUF3c2dCaUFHS0FLa0JTQUdMUUNyQlNJQ0lBSkJHSFJCR0hWQkFFZ2lBaHMyQXRRRUlBWWdCaWdDb0FVZ0JrR2dCV29nQWhzMkF0QUVJQVlnQmlrRDBBUTNBNEFDSUFFZ0JrR0FBbW9nQkJEVkFVRUNEQU1MSUFaQm9BVnFFQThhREFVTElBWkIvLy8vZXpZQ2dBVWdBaUFHUWN3RWFpQUdRWUFGYWhDdkFnc2hBVUVCQ3lFSElBWkJvQVZxRUE4YURBUUxJQWhCMEtnU1JnUkFRd0FBQUFBUVJob2dCa0hvQkdvaUJ3Si9JQUVwQXhBaURrTGgvd05aQkVBZ0IwRUFOZ0lBUVFJTUFRc2dEa0tmZ0h4WEJFQWdCMEVCTmdJQVFRSU1BUXNnQnlBT3ViWVFSamdDQUVFQkN6b0FCQ0FIRUNzRVFDQUNJQVpCekFScUlBWkI2QVJxRUJvUXJRSWhBUXdFQ3lBQktRTVFJUTRnQmtHQUJXb2lBU0FESUFNb0FnQW9BZ3dSQWdBZ0JpQUdLQUtFQlNBR0xRQ0xCU0lESUFOQkdIUkJHSFZCQUVnaUF4czJBdVFFSUFZZ0JpZ0NnQVVnQVNBREd6WUM0QVFnQmlBR0tRUGdCRGNEb0FJZ0JrR2dCV29nRGlBR1FhQUNhaER4QmlBQkVBOGFJQUlRSENBQ1FjZ0NhaUVCQW44Q2Z3SkFBa0FnQlFSQUlBWWdCaWdDcEFVZ0JpMEFxd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53T1FBaUFCSUFaQmtBSnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkRBT0IvUnhCR09BS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVLMENEQU1MSUFZZ0JpZ0NwQVVnQmkwQXF3VWlBaUFDUVJoMFFSaDFRUUJJSWdJYk5nTFVCQ0FHSUFZb0FxQUZJQVpCb0FWcUlBSWJOZ0xRQkNBR0lBWXBBOUFFTndPWUFpQUJJQVpCbUFKcUlBUVExUUZCQWd3REN5QUdRYUFGYWhBUEdnd0ZDeUFHUXdEZ2Y4Y1FSamdDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN0QWdzaEFVRUJDeUVISUFaQm9BVnFFQThhREFRTElBaEIwS1VTUncwRElBWWdBU2tERUVJQVVqb0FvQVVnQWlBR1Fjd0VhaUFHUWFBRmFoQzFCU0VCREFJTEFrQWdCMEhBL2c4UVNBUkFJQVlnQXpZQ3pBUWdBU2dDQ0NBRFJnMERRUUFoQnlBRFJRMEVJQU1vQWdRaUNFSFFvQkpHQkVBZ0FUVUNEQ0VPSUFaQkFUb0FxQVVnQmlBT053T2dCU0FHUWFBRmFoQ3lBUVJBSUFJZ0JrSE1CR29nQmtHZ0JXb1FTaERHQWlFQkRBVUxJQVlnQVRVQ0REY0RnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoREdBaUVCREFRTElBaEI4SjhTUmdSQUlBRW9BZ3doQnlBR1FRRTZBS2dGSUFZZ0I3ZzVBNkFGSUFaQm9BVnFFTElCQkVBZ0FpQUdRY3dFYWlBR1FhQUZhaEJLRUs0Q0lRRU1CUXNnQVNnQ0RDRUhJQVpCNkFScUlnRWdBeUFES0FJQUtBSU1FUUlBSUFZZ0JpZ0M3QVFnQmkwQTh3UWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nTGtCQ0FHSUFZb0F1Z0VJQUVnQXhzMkF1QUVJQVlnQmlrRDRBUTNBN2dDSUFaQmdBVnFJQWNnQmtHNEFtb1F0UXdnQVJBUEdpQUNFQndnQWtISUFtb2hBUUovQW44Q1FBSkFJQVVFUUNBR0lBWW9Bb1FGSUFZdEFJc0ZJZ01nQTBFWWRFRVlkVUVBU0NJREd6WUMzQVFnQmlBR0tBS0FCU0FHUVlBRmFpQURHellDMkFRZ0JpQUdLUVBZQkRjRHFBSWdBU0FHUWFnQ2FpQUVFUGtCQWtBZ0JrR2dCV29RdFFRb0FnQU9BZ0FEQWdzZ0JrTC8vLy8vLy8vLzkvOEFOd1BvQkNBQ0lBWkJ6QVJxSUFaQjZBUnFFSzRDREFNTElBWWdCaWdDaEFVZ0JpMEFpd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53T3dBaUFCSUFaQnNBSnFJQVFRMVFGQkFnd0RDeUFHUVlBRmFoQVBHZ3dGQ3lBR1F2Ly8vLy8vLy85M053UG9CQ0FDSUFaQnpBUnFJQVpCNkFScUVLNENDeUVCUVFFTElRY2dCa0dBQldvUUR4b01CUXNnQ0VHUXFoSkdCRUFnQmtFQ1FRRWdBU2dDRENJRFFRQklHem9BcEFVZ0JpQURRUUFnQTBFQVNoczJBcUFGSUFaQm9BVnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQm9BVnFFQm9ReEFJaEFRd0ZDeUFHSUFFb0FndzJBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1F4QUloQVF3RUN5QUlRYUN6RWtZRVFDQUJLQUlNSVFNZ0JrRUJPZ0NrQlNBR0lBTTJBcUFGSUFaQm9BVnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQm9BVnFFQm9ReHdJaEFRd0ZDeUFHSUFFb0FndzJBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1F4d0loQVF3RUN5QUlRYkNwRWtZRVFDQUJLQUlNSVFjZ0JrRUJPZ0RzQkNBR0lBZXpPQUxvQkNBR1FlZ0VhaEFyQkVCQkFTRUhJQUlnQmtITUJHb2dCa0hvQkdvUUdoQ3ZBaUVCREFZTElBRW9BZ3doQnlBR1FZQUZhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQW9RRklBWXRBSXNGSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUtBQlNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndQUUFpQUdRYUFGYWlBSElBWkIwQUpxRUxVTUlBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3SkFBa0FnQlFSQUlBWWdCaWdDcEFVZ0JpMEFxd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53UEFBaUFCSUFaQndBSnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkIvLy8vK3djMkFvQUZJQUlnQmtITUJHb2dCa0dBQldvUXJ3SWhBVUVCREFNTElBWWdCaWdDcEFVZ0JpMEFxd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9BcUFGSUFaQm9BVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53UElBaUFCSUFaQnlBSnFJQVFRMVFGQkFnd0NDeUFHUWFBRmFoQVBHZ3dFQ3lBR1FmLy8vM3MyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29RcndJaEFVRUJDeUVISUFaQm9BVnFFQThhREFVTElBaEIwS2dTUmdSQVF3QUFBQUFRUmhvZ0JrSG9CR29pQndKL0lBRW9BZ3dpQ0VIaC93TlBCRUFnQjBFQU5nSUFRUUlNQVFzZ0J5QUlzeEJHT0FJQVFRRUxPZ0FFSUFjUUt3UkFRUUVoQnlBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RclFJaEFRd0dDeUFCS0FJTUlRY2dCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0Q2QUlnQmtHZ0JXb2dCeUFHUWVnQ2FoQzFEQ0FCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDUUFKQUlBVUVRQ0FHSUFZb0FxUUZJQVl0QUtzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzNBUWdCaUFHS0FLZ0JTQUdRYUFGYWlBREd6WUMyQVFnQmlBR0tRUFlCRGNEMkFJZ0FTQUdRZGdDYWlBRUVQa0JBa0FnQmtIb0JHb1FQU2dDQUE0Q0FBTUNDeUFHUXdEZ2YwY1FSamdDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN0QWlFQlFRRU1Bd3NnQmlBR0tBS2tCU0FHTFFDckJTSUNJQUpCR0hSQkdIVkJBRWdpQWhzMkF0UUVJQVlnQmlnQ29BVWdCa0dnQldvZ0FoczJBdEFFSUFZZ0Jpa0QwQVEzQStBQ0lBRWdCa0hnQW1vZ0JCRFZBVUVDREFJTElBWkJvQVZxRUE4YURBUUxJQVpEQU9CL3h4QkdPQUtBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFSzBDSVFGQkFRc2hCeUFHUWFBRmFoQVBHZ3dGQ3lBSVFkQ2xFa2NOQkNBR0lBRW9BZ3hCQUVjNkFLQUZRUUVoQnlBQ0lBWkJ6QVJxSUFaQm9BVnFFTFVGSVFFTUJBc2dCMEdvL2c4UVNBUkFJQVlnQXpZQ3pBUWdBU2dDQ0NBRFJnMERRUUFoQnlBRFJRMEVJQU1vQWdRaUNFSFFvQkpHQkVBZ0FUUUNEQ0VPSUFaQkFUb0FxQVVnQmlBT053T2dCU0FHUWFBRmFoQ3lBUVJBSUFJZ0JrSE1CR29nQmtHZ0JXb1FTaERHQWlFQkRBVUxJQVlnQVRRQ0REY0RnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoREdBaUVCREFRTElBaEI4SjhTUmdSQUlBRW9BZ3doQnlBR1FRRTZBS2dGSUFZZ0I3YzVBNkFGSUFaQm9BVnFFTElCQkVCQkFTRUhJQUlnQmtITUJHb2dCa0dnQldvUVNoQ3VBaUVCREFZTElBRW9BZ3doQnlBR1FlZ0VhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQXV3RUlBWXRBUE1FSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUxvQkNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndPQUF5QUdRWUFGYWlBSElBWkJnQU5xRUxRTUlBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3SkFBa0FnQlFSQUlBWWdCaWdDaEFVZ0JpMEFpd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53UHdBaUFCSUFaQjhBSnFJQVFRK1FFQ1FDQUdRYUFGYWhDMUJDZ0NBQTRDQUFNQ0N5QUdRdi8vLy8vLy8vLzMvd0EzQStnRUlBSWdCa0hNQkdvZ0JrSG9CR29RcmdJaEFVRUJEQU1MSUFZZ0JpZ0NoQVVnQmkwQWl3VWlBaUFDUVJoMFFSaDFRUUJJSWdJYk5nTFVCQ0FHSUFZb0FvQUZJQVpCZ0FWcUlBSWJOZ0xRQkNBR0lBWXBBOUFFTndQNEFpQUJJQVpCK0FKcUlBUVExUUZCQWd3Q0N5QUdRWUFGYWhBUEdnd0VDeUFHUXYvLy8vLy8vLzkzTndQb0JDQUNJQVpCekFScUlBWkI2QVJxRUs0Q0lRRkJBUXNoQnlBR1FZQUZhaEFQR2d3RkN5QUlRWkNxRWtZRVFDQUJLQUlNSVFNZ0JrRUJPZ0NrQlNBR0lBTTJBcUFGSUFaQm9BVnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQm9BVnFFQm9ReEFJaEFRd0ZDeUFHSUFFb0FndzJBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1F4QUloQVF3RUN5QUlRYUN6RWtZRVFDQUdRUUpCQVNBQktBSU1JZ05CQUVnaUJCczZBS1FGSUFaQkFTQURJQVFiTmdLZ0JTQUdRYUFGYWhBckJFQWdBaUFHUWN3RWFpQUdRYUFGYWhBYUVNY0NJUUVNQlFzZ0JpQUJLQUlNTmdLQUJTQUNJQVpCekFScUlBWkJnQVZxRU1jQ0lRRU1CQXNnQ0VHd3FSSkdCRUFnQVNnQ0RDRUhJQVpCQVRvQTdBUWdCaUFIc2pnQzZBUWdCa0hvQkdvUUt3UkFRUUVoQnlBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RcndJaEFRd0dDeUFCS0FJTUlRY2dCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0RtQU1nQmtHZ0JXb2dCeUFHUVpnRGFoQzBEQ0FCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDUUFKQUlBVUVRQ0FHSUFZb0FxUUZJQVl0QUtzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzNBUWdCaUFHS0FLZ0JTQUdRYUFGYWlBREd6WUMyQVFnQmlBR0tRUFlCRGNEaUFNZ0FTQUdRWWdEYWlBRUVQa0JBa0FnQmtIb0JHb1FQU2dDQUE0Q0FBTUNDeUFHUWYvLy8vc0hOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFSzhDSVFGQkFRd0RDeUFHSUFZb0FxUUZJQVl0QUtzRklnSWdBa0VZZEVFWWRVRUFTQ0lDR3pZQzFBUWdCaUFHS0FLZ0JTQUdRYUFGYWlBQ0d6WUMwQVFnQmlBR0tRUFFCRGNEa0FNZ0FTQUdRWkFEYWlBRUVOVUJRUUlNQWdzZ0JrR2dCV29RRHhvTUJBc2dCa0gvLy85N05nS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVLOENJUUZCQVFzaEJ5QUdRYUFGYWhBUEdnd0ZDeUFJUWRDb0VrWUVRRU1BQUFBQUVFWWFJQVpCNkFScUlnY0NmeUFCS0FJTUlnaEI0ZjhEVGdSQUlBZEJBRFlDQUVFQ0RBRUxJQWhCbjRCOFRBUkFJQWRCQVRZQ0FFRUNEQUVMSUFjZ0NMSVFSamdDQUVFQkN6b0FCQ0FIRUNzRVFFRUJJUWNnQWlBR1Fjd0VhaUFHUWVnRWFoQWFFSzBDSVFFTUJnc2dBU2dDRENFSElBWkJnQVZxSWdFZ0F5QURLQUlBS0FJTUVRSUFJQVlnQmlnQ2hBVWdCaTBBaXdVaUF5QURRUmgwUVJoMVFRQklJZ01iTmdMa0JDQUdJQVlvQW9BRklBRWdBeHMyQXVBRUlBWWdCaWtENEFRM0E3QURJQVpCb0FWcUlBY2dCa0d3QTJvUXRBd2dBUkFQR2lBQ0VCd2dBa0hJQW1vaEFRSi9Ba0FDUUNBRkJFQWdCaUFHS0FLa0JTQUdMUUNyQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXR3RUlBWWdCaWdDb0FVZ0JrR2dCV29nQXhzMkF0Z0VJQVlnQmlrRDJBUTNBNkFESUFFZ0JrR2dBMm9nQkJENUFRSkFJQVpCNkFScUVEMG9BZ0FPQWdBREFnc2dCa01BNEg5SEVFWTRBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1FyUUloQVVFQkRBTUxJQVlnQmlnQ3BBVWdCaTBBcXdVaUFpQUNRUmgwUVJoMVFRQklJZ0liTmdMVUJDQUdJQVlvQXFBRklBWkJvQVZxSUFJYk5nTFFCQ0FHSUFZcEE5QUVOd09vQXlBQklBWkJxQU5xSUFRUTFRRkJBZ3dDQ3lBR1FhQUZhaEFQR2d3RUN5QUdRd0RnZjhjUVJqZ0NnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoQ3RBaUVCUVFFTElRY2dCa0dnQldvUUR4b01CUXNnQ0VIUXBSSkhEUVFnQmlBQktBSU1RUUJIT2dDZ0JVRUJJUWNnQWlBR1Fjd0VhaUFHUWFBRmFoQzFCU0VCREFRTElBZEI4UDRQRUVnRVFDQUdJQU0yQXN3RUlBRW9BZ2dnQTBZTkEwRUFJUWNnQTBVTkJDQURLQUlFSWdoQjBLQVNSZ1JBSUFZQ2Z5QUJLZ0lNSWd4REFBQUFYMTRFUUNBR1FRQTJBcUFGUVFJTUFRc2dERU1BQUFEZlhRUkFJQVpCQVRZQ29BVkJBZ3dCQ3lBR0FuNGdESXREQUFBQVgxMEVRQ0FNcmd3QkMwS0FnSUNBZ0lDQWdJQi9DemNEb0FWQkFRczZBS2dGSUFaQm9BVnFFTElCQkVBZ0FpQUdRY3dFYWlBR1FhQUZhaEJLRU1ZQ0lRRU1CUXNDUUFKQUlBWkJvQVZxRUxVRUtBSUFEZ0lCQUFRTElBWkNnSUNBZ0lDQWdJQ0FmemNEZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaERHQWlFQkRBVUxJQVpDLy8vLy8vLy8vLy8vQURjRGdBVWdBaUFHUWN3RWFpQUdRWUFGYWhER0FpRUJEQVFMSUFoQjhKOFNSZ1JBSUFZQ2Z5QUJLZ0lNdXlJTlJQLy8vLy8vLys5L1pBUkFJQVpCQURZQ29BVkJBZ3dCQ3lBTlJQLy8vLy8vLysvL1l3UkFJQVpCQVRZQ29BVkJBZ3dCQ3lBR0lBMDVBNkFGUVFFTE9nQ29CU0FHUWFBRmFoQ3lBUVJBUVFFaEJ5QUNJQVpCekFScUlBWkJvQVZxRUVvUXJnSWhBUXdHQ3lBQktnSU1JUXdnQmtIb0JHb2lBU0FESUFNb0FnQW9BZ3dSQWdBZ0JpQUdLQUxzQkNBR0xRRHpCQ0lESUFOQkdIUkJHSFZCQUVnaUF4czJBdVFFSUFZZ0JpZ0M2QVFnQVNBREd6WUM0QVFnQmlBR0tRUGdCRGNEeUFNZ0JrR0FCV29nRENBR1FjZ0RhaEQrQXlBQkVBOGFJQUlRSENBQ1FjZ0NhaUVCQW44Q1FBSkFJQVVFUUNBR0lBWW9Bb1FGSUFZdEFJc0ZJZ01nQTBFWWRFRVlkVUVBU0NJREd6WUMzQVFnQmlBR0tBS0FCU0FHUVlBRmFpQURHellDMkFRZ0JpQUdLUVBZQkRjRHVBTWdBU0FHUWJnRGFpQUVFUGtCQWtBZ0JrR2dCV29RdFFRb0FnQU9BZ0FEQWdzZ0JrTC8vLy8vLy8vLzkvOEFOd1BvQkNBQ0lBWkJ6QVJxSUFaQjZBUnFFSzRDSVFGQkFRd0RDeUFHSUFZb0FvUUZJQVl0QUlzRklnSWdBa0VZZEVFWWRVRUFTQ0lDR3pZQzFBUWdCaUFHS0FLQUJTQUdRWUFGYWlBQ0d6WUMwQVFnQmlBR0tRUFFCRGNEd0FNZ0FTQUdRY0FEYWlBRUVOVUJRUUlNQWdzZ0JrR0FCV29RRHhvTUJBc2dCa0wvLy8vLy8vLy9kemNENkFRZ0FpQUdRY3dFYWlBR1FlZ0VhaEN1QWlFQlFRRUxJUWNnQmtHQUJXb1FEeG9NQlFzZ0NFR1FxaEpHQkVCQkFpRUhBbjlCQUNBQktnSU1JZ3k3UkFBQXdQLy8vOTlCWkEwQUdrRUJJQXhEQUFBQXoxME5BQnBCQVNFSEFuOGdESXREQUFBQVQxMEVRQ0FNcUF3QkMwR0FnSUNBZUFzTElRRWdCaUFIT2dDa0JTQUdJQUUyQXFBRklBWkJvQVZxRUNzRVFDQUNJQVpCekFScUlBWkJvQVZxRUJvUXhBSWhBUXdGQ3dKQUFrQWdCa0dnQldvUVBTZ0NBQTRDQVFBRUN5QUdRWUNBZ0lCNE5nS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVNUUNJUUVNQlFzZ0JrSC8vLy8vQnpZQ2dBVWdBaUFHUWN3RWFpQUdRWUFGYWhERUFpRUJEQVFMSUFoQm9MTVNSZ1JBUVFJaEJ3Si9RUUFnQVNvQ0RDSU11MFFBQU9ELy8vL3ZRV1FOQUJwQkFTQU1Rd0FBQUFCZERRQWFRUUVoQndKL0lBeERBQUNBVDEwZ0RFTUFBQUFBWUhFRVFDQU1xUXdCQzBFQUN3c2hBU0FHSUFjNkFLUUZJQVlnQVRZQ29BVWdCa0dnQldvUUt3UkFJQUlnQmtITUJHb2dCa0dnQldvUUdoREhBaUVCREFVTEFrQUNRQ0FHUWFBRmFoQTlLQUlBRGdJQkFBUUxJQVpCQURZQ2dBVWdBaUFHUWN3RWFpQUdRWUFGYWhESEFpRUJEQVVMSUFaQmZ6WUNnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoREhBaUVCREFRTElBaEJzS2tTUmdSQUlBWUNmeUFCS2dJTUlneEQvLzkvZjE0RVFDQUdRUUEyQXVnRVFRSU1BUXNnREVQLy8zLy9YUVJBSUFaQkFUWUM2QVJCQWd3QkN5QUdJQXc0QXVnRVFRRUxPZ0RzQkNBR1FlZ0VhaEFyQkVCQkFTRUhJQUlnQmtITUJHb2dCa0hvQkdvUUdoQ3ZBaUVCREFZTElBRXFBZ3doRENBR1FZQUZhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQW9RRklBWXRBSXNGSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUtBQlNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndQZ0F5QUdRYUFGYWlBTUlBWkI0QU5xRVA0RElBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3SkFBa0FnQlFSQUlBWWdCaWdDcEFVZ0JpMEFxd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53UFFBeUFCSUFaQjBBTnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkIvLy8vK3djMkFvQUZJQUlnQmtITUJHb2dCa0dBQldvUXJ3SWhBVUVCREFNTElBWWdCaWdDcEFVZ0JpMEFxd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9BcUFGSUFaQm9BVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53UFlBeUFCSUFaQjJBTnFJQVFRMVFGQkFnd0NDeUFHUWFBRmFoQVBHZ3dFQ3lBR1FmLy8vM3MyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29RcndJaEFVRUJDeUVISUFaQm9BVnFFQThhREFVTElBaEIwS2dTUmdSQVF3QUFBQUFRUmhvZ0JrSG9CR29pQnlBQktnSU1FTGtNSUFjUUt3UkFRUUVoQnlBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RclFJaEFRd0dDeUFCS2dJTUlRd2dCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0QrQU1nQmtHZ0JXb2dEQ0FHUWZnRGFoRCtBeUFCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDUUFKQUlBVUVRQ0FHSUFZb0FxUUZJQVl0QUtzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzNBUWdCaUFHS0FLZ0JTQUdRYUFGYWlBREd6WUMyQVFnQmlBR0tRUFlCRGNENkFNZ0FTQUdRZWdEYWlBRUVQa0JBa0FnQmtIb0JHb1FQU2dDQUE0Q0FBTUNDeUFHUXdEZ2YwY1FSamdDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN0QWlFQlFRRU1Bd3NnQmlBR0tBS2tCU0FHTFFDckJTSUNJQUpCR0hSQkdIVkJBRWdpQWhzMkF0UUVJQVlnQmlnQ29BVWdCa0dnQldvZ0FoczJBdEFFSUFZZ0Jpa0QwQVEzQS9BRElBRWdCa0h3QTJvZ0JCRFZBVUVDREFJTElBWkJvQVZxRUE4YURBUUxJQVpEQU9CL3h4QkdPQUtBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFSzBDSVFGQkFRc2hCeUFHUWFBRmFoQVBHZ3dGQ3lBSVFkQ2xFa2NOQkNBR0lBRXFBZ3dpREVNQUFBQUFYQ0FNdkVFQVNISTZBS0FGUVFFaEJ5QUNJQVpCekFScUlBWkJvQVZxRUxVRklRRU1CQXNnQjBIWS9nOFFTQVJBSUFZZ0F6WUN6QVFnQVNnQ0NDQURSZzBEUVFBaEJ5QURSUTBFSUFNb0FnUWlDRUhRb0JKR0JFQWdCZ0ovSUFFcUFnd2lERU1BQUFCZlhnUkFJQVpCQURZQ29BVkJBZ3dCQ3lBTVF3QUFBTjlkQkVBZ0JrRUJOZ0tnQlVFQ0RBRUxJQVlDZmlBTWkwTUFBQUJmWFFSQUlBeXVEQUVMUW9DQWdJQ0FnSUNBZ0g4TE53T2dCVUVCQ3pvQXFBVWdCa0dnQldvUXNnRUVRQ0FDSUFaQnpBUnFJQVpCb0FWcUVFb1F4Z0loQVF3RkN3SkFBa0FnQmtHZ0JXb1F0UVFvQWdBT0FnRUFCQXNnQmtLQWdJQ0FnSUNBZ0lCL053T0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVNWUNJUUVNQlFzZ0JrTC8vLy8vLy8vLy8vOEFOd09BQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTVlDSVFFTUJBc2dDRUh3bnhKR0JFQWdCZ0ovSUFFcUFneTdJZzFFLy8vLy8vLy83MzlrQkVBZ0JrRUFOZ0tnQlVFQ0RBRUxJQTFFLy8vLy8vLy83LzlqQkVBZ0JrRUJOZ0tnQlVFQ0RBRUxJQVlnRFRrRG9BVkJBUXM2QUtnRklBWkJvQVZxRUxJQkJFQkJBU0VISUFJZ0JrSE1CR29nQmtHZ0JXb1FTaEN1QWlFQkRBWUxJQUVxQWd3aERDQUdRZWdFYWlJQklBTWdBeWdDQUNnQ0RCRUNBQ0FHSUFZb0F1d0VJQVl0QVBNRUlnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzVBUWdCaUFHS0FMb0JDQUJJQU1iTmdMZ0JDQUdJQVlwQStBRU53T1FCQ0FHUVlBRmFpQU1JQVpCa0FScUVQNERJQUVRRHhvZ0FoQWNJQUpCeUFKcUlRRUNmd0pBQWtBZ0JRUkFJQVlnQmlnQ2hBVWdCaTBBaXdVaUF5QURRUmgwUVJoMVFRQklJZ01iTmdMY0JDQUdJQVlvQW9BRklBWkJnQVZxSUFNYk5nTFlCQ0FHSUFZcEE5Z0VOd09BQkNBQklBWkJnQVJxSUFRUStRRUNRQ0FHUWFBRmFoQzFCQ2dDQUE0Q0FBTUNDeUFHUXYvLy8vLy8vLy8zL3dBM0ErZ0VJQUlnQmtITUJHb2dCa0hvQkdvUXJnSWhBVUVCREFNTElBWWdCaWdDaEFVZ0JpMEFpd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53T0lCQ0FCSUFaQmlBUnFJQVFRMVFGQkFnd0NDeUFHUVlBRmFoQVBHZ3dFQ3lBR1F2Ly8vLy8vLy85M053UG9CQ0FDSUFaQnpBUnFJQVpCNkFScUVLNENJUUZCQVFzaEJ5QUdRWUFGYWhBUEdnd0ZDeUFJUVpDcUVrWUVRRUVDSVFjQ2YwRUFJQUVxQWd3aURMdEVBQURBLy8vLzMwRmtEUUFhUVFFZ0RFTUFBQURQWFEwQUdrRUJJUWNDZnlBTWkwTUFBQUJQWFFSQUlBeW9EQUVMUVlDQWdJQjRDd3NoQVNBR0lBYzZBS1FGSUFZZ0FUWUNvQVVnQmtHZ0JXb1FLd1JBSUFJZ0JrSE1CR29nQmtHZ0JXb1FHaERFQWlFQkRBVUxBa0FDUUNBR1FhQUZhaEE5S0FJQURnSUJBQVFMSUFaQmdJQ0FnSGcyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29ReEFJaEFRd0ZDeUFHUWYvLy8vOEhOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTVFDSVFFTUJBc2dDRUdnc3hKR0JFQkJBaUVIQW45QkFDQUJLZ0lNSWd5N1JBQUE0UC8vLys5QlpBMEFHa0VCSUF4REFBQUFBRjBOQUJwQkFTRUhBbjhnREVNQUFJQlBYU0FNUXdBQUFBQmdjUVJBSUF5cERBRUxRUUFMQ3lFQklBWWdCem9BcEFVZ0JpQUJOZ0tnQlNBR1FhQUZhaEFyQkVBZ0FpQUdRY3dFYWlBR1FhQUZhaEFhRU1jQ0lRRU1CUXNDUUFKQUlBWkJvQVZxRUQwb0FnQU9BZ0VBQkFzZ0JrRUFOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTWNDSVFFTUJRc2dCa0YvTmdLQUJTQUNJQVpCekFScUlBWkJnQVZxRU1jQ0lRRU1CQXNnQ0VHd3FSSkdCRUFnQmdKL0lBRXFBZ3dpREVQLy8zOS9YZ1JBSUFaQkFEWUM2QVJCQWd3QkN5QU1RLy8vZi85ZEJFQWdCa0VCTmdMb0JFRUNEQUVMSUFZZ0REZ0M2QVJCQVFzNkFPd0VJQVpCNkFScUVDc0VRRUVCSVFjZ0FpQUdRY3dFYWlBR1FlZ0VhaEFhRUs4Q0lRRU1CZ3NnQVNvQ0RDRU1JQVpCZ0FWcUlnRWdBeUFES0FJQUtBSU1FUUlBSUFZZ0JpZ0NoQVVnQmkwQWl3VWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nTGtCQ0FHSUFZb0FvQUZJQUVnQXhzMkF1QUVJQVlnQmlrRDRBUTNBNmdFSUFaQm9BVnFJQXdnQmtHb0JHb1EvZ01nQVJBUEdpQUNFQndnQWtISUFtb2hBUUovQWtBQ1FDQUZCRUFnQmlBR0tBS2tCU0FHTFFDckJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF0d0VJQVlnQmlnQ29BVWdCa0dnQldvZ0F4czJBdGdFSUFZZ0Jpa0QyQVEzQTVnRUlBRWdCa0dZQkdvZ0JCRDVBUUpBSUFaQjZBUnFFRDBvQWdBT0FnQURBZ3NnQmtILy8vLzdCellDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN2QWlFQlFRRU1Bd3NnQmlBR0tBS2tCU0FHTFFDckJTSUNJQUpCR0hSQkdIVkJBRWdpQWhzMkF0UUVJQVlnQmlnQ29BVWdCa0dnQldvZ0FoczJBdEFFSUFZZ0Jpa0QwQVEzQTZBRUlBRWdCa0dnQkdvZ0JCRFZBVUVDREFJTElBWkJvQVZxRUE4YURBUUxJQVpCLy8vL2V6WUNnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoQ3ZBaUVCUVFFTElRY2dCa0dnQldvUUR4b01CUXNnQ0VIUXFCSkdCRUJEQUFBQUFCQkdHaUFHUWVnRWFpSUhJQUVxQWd3UXVRd2dCeEFyQkVCQkFTRUhJQUlnQmtITUJHb2dCa0hvQkdvUUdoQ3RBaUVCREFZTElBRXFBZ3doRENBR1FZQUZhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQW9RRklBWXRBSXNGSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUtBQlNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndQQUJDQUdRYUFGYWlBTUlBWkJ3QVJxRVA0RElBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3SkFBa0FnQlFSQUlBWWdCaWdDcEFVZ0JpMEFxd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53T3dCQ0FCSUFaQnNBUnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkRBT0IvUnhCR09BS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVLMENJUUZCQVF3REN5QUdJQVlvQXFRRklBWXRBS3NGSWdJZ0FrRVlkRUVZZFVFQVNDSUNHellDMUFRZ0JpQUdLQUtnQlNBR1FhQUZhaUFDR3pZQzBBUWdCaUFHS1FQUUJEY0R1QVFnQVNBR1FiZ0VhaUFFRU5VQlFRSU1BZ3NnQmtHZ0JXb1FEeG9NQkFzZ0JrTUE0SC9IRUVZNEFvQUZJQUlnQmtITUJHb2dCa0dBQldvUXJRSWhBVUVCQ3lFSElBWkJvQVZxRUE4YURBVUxJQWhCMEtVU1J3MEVJQVlnQVNvQ0RDSU1Rd0FBQUFCY0lBeThRUUJJY2pvQW9BVkJBU0VISUFJZ0JrSE1CR29nQmtHZ0JXb1F0UVVoQVF3RUN5QUhRWWovRHhCSUJFQWdCaUFETmdLQUJTQUJLQUlJSUFOR0RRTkJBQ0VISUFORkRRUWdBeWdDQkNJRFFkQ2dFa1lFUUNBR0lBRXhBQXczQTZBRklBSWdCa0dBQldvZ0JrR2dCV29ReGdJaEFRd0VDeUFEUWZDZkVrWUVRQ0FHSUFFdEFBeTRPUU9nQlNBQ0lBWkJnQVZxSUFaQm9BVnFFSzRDSVFFTUJBc2dBMEdRcWhKR0JFQWdCaUFCTFFBTU5nS2dCU0FDSUFaQmdBVnFJQVpCb0FWcUVNUUNJUUVNQkFzZ0EwR2dzeEpHQkVBZ0JpQUJMUUFNTmdLZ0JTQUNJQVpCZ0FWcUlBWkJvQVZxRU1jQ0lRRU1CQXNnQTBHd3FSSkdCRUFnQmlBQkxRQU1zemdDb0FVZ0FpQUdRWUFGYWlBR1FhQUZhaEN2QWlFQkRBUUxJQU5CMEtnU1JnUkFRd0FBQUFBUVJob2dCaUFCTFFBTXN4QkdPQUtnQlNBQ0lBWkJnQVZxSUFaQm9BVnFFSzBDSVFFTUJBc2dBMEhRcFJKSERRUWdCaUFCTFFBTU9nQ2dCU0FDSUFaQmdBVnFJQVpCb0FWcUVMVUZJUUVNQXdzZ0IwSHcrdzhRU0FSQUFrQUNRQUpBSUFNUThBWWlCd1JBUVFFZ0J5Z0NTQ0lJSUFoQkFVMGJJUWtnQnlnQ1JDSUtLQUlBS0FJb0lRaEJBU0VIQTBBZ0J5QUpSZzBDSUFkQkFuUWhDeUFIUVFGcUlRY2dDaUFMYWlnQ0FDZ0NLQ0FJUmcwQUMwRUFJUUVnQWhBY0lBWkJvQVZxUWNXdEJVSC9Ba0VJSUFKQnlBSnFFQmNpQWtFWWFrR2dNeEFPR2lBQ0VCZ01BZ3NnQTBFQUVDSWhDQXNnQmtHZ0JXb2lCeUFCS0FJTUlBSWdDQ0FFSUFVUWlBMGdCeEF3UlEwQkMwRUNJUWNNQlFzZ0JrR2dCV29RR2lnQ0FFVU5BVUVCSVFjZ0FpQURJQVpCb0FWcUVCb29BZ0FnQVNnQ0VCQ3FCaUVCREFRTEFrQWdCMEhvK0E4UVNBUkFJQUVnQVNnQ0FDZ0NFQkVBQUNFSUlBWkNnSUNBZ01BQU53S1VCU0FHSUFaQmdBVnFJZ2MyQXBBRklBY2dDQkRXQWlBR1FRQTJBdmdFQWtBZ0F4RHdCaUlIQkVBZ0NDQUhLQUpJUndSQVFRQWhBU0FDRUJ3Z0JrR2dCV3BCeGEwRlFkY0NRUWdnQWtISUFtb1FGeUlDUVJocVFkbjlBQkFPR2lBQ0VCaEJBaUVIREFRTElBWWdCellDcEFVZ0JrSHNoQkEyQXFBRkRBRUxJQVlnQTBFQUVDSTJBcVFGSUFaQmtJVVFOZ0tnQlFzZ0JpQUdRYUFGYWlJSE5nS3dCU0FISUFaQjZBUnFFS3dDSUFjUUZpQUdRWkFGYWlFSlFRQWhCd05BQWtBZ0J5QUlSd1JBSUFaQm9BVnFJZ29nQVNBSElBRW9BZ0FvQWd3UkFRQWdBaUFHUWVnRWFpQUdLQUtVQlJDS0FpQUVJQVVRaUEwZ0NoQXdCSDlCQWdVZ0JrR2dCV29RR2lnQ0FBMENRUUVMSVFkQkFDRUJEQVFMSUFZZ0NUWUNvQVVnQmlBR0tBS1FCU0FHUVlBRmFrYzZBS1FGUVFFaEJ5QUNJQU1nQmtHZ0JXb1FPaUVCREFNTElBWkJnQVZxSUFaQm9BVnFFQm9RY1NBSFFRRnFJUWNNQUFzQUN5QUFRUUE2QUFRTUJRc2dCa0hvQkdvUUZpQUdRWUFGYWhCZURBTUxRUUVoQjBFQUlRRU1BZ3RCQUNFQkMwRUJJUWNMSUFBZ0J6b0FCQ0FBSUFFMkFnQUxJQVpCd0FacUpBQUxPUUFnQXlBREtBSUFLQUlJRVFBQUlBSkdCRUFnQUVFQk9nQUVJQUFnQXpZQ0FBOExJQUFnQXlBQktBSUFJQUlnQkNBQkxRQUVFSWdOQ3dzQUlBQkJoTDBnRU40REN5Y0JBWDhnQUVFRWFoREZGQ0VDSUFCQnpKTU9OZ0lBSUFKQjRKTU9OZ0lBSUFJZ0FSRHZCZ3NuQVFGL0lBQkJCR29ReHhRaEFpQUFRZHlRRGpZQ0FDQUNRZkNRRGpZQ0FDQUNJQUVRN3dZTENRQWdBQkM3QWhBZkN3c0FJQUJCL0x3Z0VONERDdzRBUVFBZ0FDQUFRWDhRMkFVYkN6QUJBWDhqQUVFUWF5SUVKQUFnQUNBRVFRaHFJQU1Rd1E0aUFDQUJJQUlRMFJRZ0FCQ3ZBeUFFUVJCcUpBQWdBQXNMQUNBQUlBRkJBUkRyQ2dzVEFDQUFJQUVnQWlBQUtBSUFLQUl3RVFRQUN6Y0JBWDhqQUVFUWF5SUdKQUFnQmlBQ05nSU1JQVlnQVRZQ0NDQUFJQUVvQWdBZ0F5QUdRUWhxSUFRZ0JSRFNGQ0FHUVJCcUpBQUxrZ0lCQW44akFFRVFheUlCSkFBZ0FDQUFLQUlBUVF4cktBSUFhaERHQndSQUlBRWdBRFlDRENBQlFRQTZBQWdnQUNBQUtBSUFRUXhyS0FJQWFpSUNLQUlRUlFSQUlBSW9Ba2dpQWdSQUlBSVFsQTBMSUFGQkFUb0FDQXNDUUNBQkxRQUlFT0lVUlEwQUlBQWdBQ2dDQUVFTWF5Z0NBR29ReGdjUWtRZEJmMGNOQUNBQUlBQW9BZ0JCREdzb0FnQnFFTmNVQ3dKQUlBRW9BZ3dpQUNBQUtBSUFRUXhyS0FJQWFoREdCMFVOQUNBQktBSU1JZ0FnQUNnQ0FFRU1heWdDQUdvaUFDZ0NFQTBBSUFBUXVBRkJnTUFBY1VVTkFDQUJLQUlNSWdBZ0FDZ0NBRUVNYXlnQ0FHb1F4Z2NRa1FkQmYwY05BQ0FCS0FJTUlnQWdBQ2dDQUVFTWF5Z0NBR29RMXhRTEN5QUJRUkJxSkFBTENRQWdBQkRaRkJBZkN3a0FJQUFRa3dvUUh3c3BBUUYvQWtBZ0FDZ0NBQ0lDUlEwQUlBSWdBUkRoRkVGL0VOZ0ZSUTBBSUFCQkFEWUNBQXNnQUF1bkFRRUdmeU1BUVNCcklnSWtBQ0FDUVJocUlnTWdBQkRmQXhvQ1FDQURFSklFUlEwQUlBSkJFR29pQXlBQUlBQW9BZ0JCREdzb0FnQnFFSDRnQXhEOUJDRUVJQU1RWkNBQ1FRaHFJQUFRMGdRaEJTQUFJQUFvQWdCQkRHc29BZ0JxSWdZUW5BTWhCeUFDSUFRZ0JTZ0NBQ0FHSUFjZ0FSRGJGRFlDRUNBREVORUVSUTBBSUFBZ0FDZ0NBRUVNYXlnQ0FHcEJCUkNQQXdzZ0FrRVlhaERnQXlBQ1FTQnFKQUFMcUFFQkJuOGpBRUVnYXlJQ0pBQWdBa0VZYWlJRElBQVEzd01hQWtBZ0F4Q1NCRVVOQUNBQ1FSQnFJZ01nQUNBQUtBSUFRUXhyS0FJQWFoQitJQU1RL1FRaEJDQURFR1FnQWtFSWFpQUFFTklFSVFVZ0FDQUFLQUlBUVF4cktBSUFhaUlHRUp3RElRY2dBaUFFSUFVb0FnQWdCaUFISUFHN0VOc1VOZ0lRSUFNUTBRUkZEUUFnQUNBQUtBSUFRUXhyS0FJQWFrRUZFSThEQ3lBQ1FSaHFFT0FESUFKQklHb2tBQXNKQUNBQUVKUUtFQjhMQndBZ0FDQUJSZ3NKQUNBQUVKVUtFQjhMRUFBZ0FDQUJOd01JSUFCQ0FEY0RBQXN6QVFGL0lBSUVRQ0FBSVFNRFFDQURJQUVvQWdBMkFnQWdBMEVFYWlFRElBRkJCR29oQVNBQ1FRRnJJZ0lOQUFzTElBQUxrZ0lCQ0g4Q1FDQUJRUUpJRFFBZ0FVRUNhMEVCZGlJSklBSWdBR3NpQkVFQ2RVZ05BQ0FBSUFSQkFYVWlCRUVCYWlJRlFRSjBhaUVEQW44Z0FTQUVRUUpxSWdkTUJFQWdBeWdDQUF3QkN5QURRUVJxSUFNZ0F5Z0NBQ0lHSUFNb0FnUWlDQkRGQVNJRUd5RURJQWNnQlNBRUd5RUZJQWdnQmlBRUd3c2lCaUFDS0FJQUlnY1F4UUVOQUFOQUFrQWdBeUVFSUFJZ0JqWUNBQ0FGSUFsS0RRQWdBQ0FGUVFGMElnSkJBWElpQlVFQ2RHb2hBd0ovSUFFZ0FrRUNhaUlJVEFSQUlBTW9BZ0FNQVFzZ0EwRUVhaUFESUFNb0FnQWlCaUFES0FJRUlnb1F4UUVpQWhzaEF5QUlJQVVnQWhzaEJTQUtJQVlnQWhzTElRWWdCQ0VDSUFZZ0J4REZBVVVOQVFzTElBUWdCellDQUFzTGlnRUJBWDhnQUNBQklBSWdBeENoRFNFRklBUW9BZ0FnQXlnQ0FCREZBUVIvSUFNZ0JCQ3BBU0FES0FJQUlBSW9BZ0FReFFGRkJFQWdCVUVCYWc4TElBSWdBeENwQVNBQ0tBSUFJQUVvQWdBUXhRRkZCRUFnQlVFQ2FnOExJQUVnQWhDcEFTQUJLQUlBSUFBb0FnQVF4UUZGQkVBZ0JVRURhZzhMSUFBZ0FSQ3BBU0FGUVFScUJTQUZDd3RxQVFGL0lBQWdBU0FDRUpRSElRUWdBeWdDQUNBQ0tBSUFFTVVCQkg4Z0FpQURFS2tCSUFJb0FnQWdBU2dDQUJERkFVVUVRQ0FFUVFGcUR3c2dBU0FDRUtrQklBRW9BZ0FnQUNnQ0FCREZBVVVFUUNBRVFRSnFEd3NnQUNBQkVLa0JJQVJCQTJvRklBUUxDNFVJQVFkL0EwQWdBVUVFYXlFR0EwQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRWdBQ0lEYXlJQVFRSjFJZ1FPQmdjSEFBUUJBZ01MSUFZb0FnQWdBeWdDQUJERkFVVU5CaUFESUFZUXFRRVBDeUFESUFOQkJHb2dBMEVJYWlBR0VLRU5HZzhMSUFNZ0EwRUVhaUFEUVFocUlBTkJER29nQmhDZ0RSb1BDeUFBUWZzQVRBUkFJQUVoQkNBRElBTkJCR29nQTBFSWFpSUJFSlFIR2lBRFFReHFJUUlEUUNBQ0lBUkhCRUFnQWlJQUtBSUFJZ1lnQVNnQ0FDSUZFTVVCQkVBRFFBSkFJQUFnQlRZQ0FDQURJQUVpQUVZRVFDQURJUUFNQVFzZ0JpQUFRUVJySWdFb0FnQWlCUkRGQVEwQkN3c2dBQ0FHTmdJQUN5QUNJZ0ZCQkdvaEFnd0JDd3NQQ3lBQ1JRUkFBa0FnQVNBRFJnMEFBa0FnQVNBRGF5SUFRUVZJRFFBZ0FFRUNkU0lDUVFKclFRRjJJUUFEUUNBQVFRQklEUUVnQXlBQ0lBTWdBRUVDZEdvUW53MGdBRUVCYXlFQURBQUxBQXNnQVNBRGEwRUNkU0VDSUFFaEFBTkFJQUFnQVVZRVFDQUJJQU5yUVFKMUlRQURRQ0FBUVFGS0JFQWdBeUFCUVFScklnRVFxUUVnQXlBQVFRRnJJZ0FnQXhDZkRRd0JDd3NNQWdzZ0FDZ0NBQ0FES0FJQUVNVUJCRUFnQUNBREVLa0JJQU1nQWlBREVKOE5DeUFBUVFScUlRQU1BQXNBQ3c4TElBTWdCRUVCZEVGOGNXb2hCd0ovSUFCQm5SOVBCRUFnQXlBRElBUkJmSEVpQUdvZ0J5QUFJQWRxSUFZUW9BME1BUXNnQXlBSElBWVFsQWNMSVFnZ0FrRUJheUVDSUFZaEFDQURLQUlBSWdVZ0J5Z0NBQ0lFRU1VQlJRUkFBMEFnQUVFRWF5SUFJQU5HQkVBZ0EwRUVhaUVFSUFVZ0JpZ0NBQkRGQVEwRkEwQWdCQ0FHUmcwSElBVWdCQ2dDQUJERkFRUkFJQVFnQmhDcEFTQUVRUVJxSVFRTUJ3VWdCRUVFYWlFRURBRUxBQXNBQ3lBQUtBSUFJQVFReFFGRkRRQUxJQU1nQUJDcEFTQUlRUUZxSVFnTElBTkJCR29pQkNBQVR3MEJBMEFnQnlnQ0FDRUpBMEFnQkNJRlFRUnFJUVFnQlNnQ0FDQUpFTVVCRFFBTEEwQWdBRUVFYXlJQUtBSUFJQWtReFFGRkRRQUxJQUFnQlVrRVFDQUZJUVFNQXdVZ0JTQUFFS2tCSUFBZ0J5QUZJQWRHR3lFSElBaEJBV29oQ0F3QkN3QUxBQXNnQXlBRFFRUnFJQVlRbEFjYURBSUxBa0FnQkNBSFJnMEFJQWNvQWdBZ0JDZ0NBQkRGQVVVTkFDQUVJQWNRcVFFZ0NFRUJhaUVJQ3lBSVJRUkFJQU1nQkJENEZDRUZJQVJCQkdvaUFDQUJFUGdVQkVBZ0JDRUJJQU1oQUNBRlJRMEZEQU1MSUFVTkF3c2dCQ0FEYXlBQklBUnJTQVJBSUFNZ0JDQUNFS0lOSUFSQkJHb2hBQXdEQ3lBRVFRUnFJQUVnQWhDaURTQUVJUUVnQXlFQURBTUxJQVloQlNBRUlBWkdEUUFEUUNBREtBSUFJUWNEUUNBRUlnQkJCR29oQkNBSElBQW9BZ0FReFFGRkRRQUxBMEFnQnlBRlFRUnJJZ1VvQWdBUXhRRU5BQXNnQUNBRlR3MENJQUFnQlJDcEFRd0FDd0FMQ3dzTGlRSUFBa0FnQUFSL0lBRkIvd0JORFFFQ1FFSDBxU0FvQWdBb0FnQkZCRUFnQVVHQWYzRkJnTDhEUmcwRERBRUxJQUZCL3c5TkJFQWdBQ0FCUVQ5eFFZQUJjam9BQVNBQUlBRkJCblpCd0FGeU9nQUFRUUlQQ3lBQlFZQkFjVUdBd0FOSElBRkJnTEFEVDNGRkJFQWdBQ0FCUVQ5eFFZQUJjam9BQWlBQUlBRkJESFpCNEFGeU9nQUFJQUFnQVVFR2RrRS9jVUdBQVhJNkFBRkJBdzhMSUFGQmdJQUVhMEgvL3o5TkJFQWdBQ0FCUVQ5eFFZQUJjam9BQXlBQUlBRkJFblpCOEFGeU9nQUFJQUFnQVVFR2RrRS9jVUdBQVhJNkFBSWdBQ0FCUVF4MlFUOXhRWUFCY2pvQUFVRUVEd3NMUVppcElFRVpOZ0lBUVg4RlFRRUxEd3NnQUNBQk9nQUFRUUVMbUFRQ0IzOEVmaU1BUVJCcklnZ2tBQUpBQWtBQ1FDQUNRU1JNQkVBZ0FDMEFBQ0lGRFFFZ0FDRUVEQUlMUVppcElFRWNOZ0lBUWdBaEF3d0NDeUFBSVFRQ1FBTkFJQVZCR0hSQkdIVVF3Z1ZGRFFFZ0JDMEFBU0VGSUFSQkFXb2hCQ0FGRFFBTERBRUxBa0FnQlVIL0FYRWlCVUVyYXc0REFBRUFBUXRCZjBFQUlBVkJMVVliSVFjZ0JFRUJhaUVFQ3dKL0FrQWdBa0VRY2tFUVJ3MEFJQVF0QUFCQk1FY05BRUVCSVFrZ0JDMEFBVUhmQVhGQjJBQkdCRUFnQkVFQ2FpRUVRUkFNQWdzZ0JFRUJhaUVFSUFKQkNDQUNHd3dCQ3lBQ1FRb2dBaHNMSWdxdElReEJBQ0VDQTBBQ1FFRlFJUVVDUUNBRUxBQUFJZ1pCTUd0Qi93RnhRUXBKRFFCQnFYOGhCU0FHUWVFQWEwSC9BWEZCR2trTkFFRkpJUVVnQmtIQkFHdEIvd0Z4UVJsTERRRUxJQVVnQm1vaUJpQUtUZzBBSUFnZ0RFSUFJQXRDQUJDd0FrRUJJUVVDUUNBSUtRTUlRZ0JTRFFBZ0N5QU1maUlOSUFhdElnNUNmNFZXRFFBZ0RTQU9mQ0VMUVFFaENTQUNJUVVMSUFSQkFXb2hCQ0FGSVFJTUFRc0xJQUVFUUNBQklBUWdBQ0FKR3pZQ0FBc0NRQUpBSUFJRVFFR1lxU0JCeEFBMkFnQWdCMEVBSUFOQ0FZTWlERkFiSVFjZ0F5RUxEQUVMSUFNZ0MxWU5BU0FEUWdHRElRd0xJQXluSUFkeVJRUkFRWmlwSUVIRUFEWUNBQ0FEUWdGOUlRTU1BZ3NnQXlBTFdnMEFRWmlwSUVIRUFEWUNBQXdCQ3lBTElBZXNJZ09GSUFOOUlRTUxJQWhCRUdva0FDQURDMzhDQW44Q2ZpTUFRYUFCYXlJRUpBQWdCQ0FCTmdJOElBUWdBVFlDRkNBRVFYODJBaGdnQkVFUWFpSUZRZ0FRZ3dRZ0JDQUZJQU5CQVJDQ0ZTQUVLUU1JSVFZZ0JDa0RBQ0VISUFJRVFDQUNJQUVnQkNnQ0ZDQUVLQUtJQVdvZ0JDZ0NQR3RxTmdJQUN5QUFJQVkzQXdnZ0FDQUhOd01BSUFSQm9BRnFKQUFMUVFFQ2Z5TUFRUkJySWdFa0FFRi9JUUlDUUNBQUVLY05EUUFnQUNBQlFROXFRUUVnQUNnQ0lCRUVBRUVCUncwQUlBRXRBQThoQWdzZ0FVRVFhaVFBSUFJTGZBRUNmeUFBSUFBb0FrZ2lBVUVCYXlBQmNqWUNTQ0FBS0FJVUlBQW9BaHhIQkVBZ0FFRUFRUUFnQUNnQ0pCRUVBQm9MSUFCQkFEWUNIQ0FBUWdBM0F4QWdBQ2dDQUNJQlFRUnhCRUFnQUNBQlFTQnlOZ0lBUVg4UEN5QUFJQUFvQWl3Z0FDZ0NNR29pQWpZQ0NDQUFJQUkyQWdRZ0FVRWJkRUVmZFF0bEFRTi9JQUpGQkVCQkFBOExBa0FnQUMwQUFDSURSUTBBQTBBQ1FDQUJMUUFBSWdWRkRRQWdBa0VCYXlJQ1JTQURJQVZIY2cwQUlBRkJBV29oQVNBQUxRQUJJUU1nQUVFQmFpRUFJQU1OQVF3Q0N3c2dBeUVFQ3lBRVFmOEJjU0FCTFFBQWF3c1dBQ0FBUlFSQVFRQVBDMEdZcVNBZ0FEWUNBRUYvQzU4REFRSi9Jd0JCTUdzaUJTUUFBa0FnQkNBRUtBSUFLQUlJRVFBQUVMSUNSUVJBSUFRZ0JDZ0NBQ2dDQ0JFQUFDSUdSUVJBSUFCQkFEb0FCQXdDQ3dKQUFrQWdCaWdDQkNJR1FmQ2ZFa1lFUUNBRklBRWdBaUFESUFRUVBKa1Fjd3dCQ3lBR1FiQ3BFa1lFUUNBRklBRWdBaUFESUFRUU5Jc1Fhd3dCQ3lBR1FkQ29Fa2NOQVNBRklBRWdBaUFESUFRUVA0c1FSaEJ5Q3lBQUlBVXBBd0EzQWdBTUFnc2dBRUVBT2dBRURBRUxJQVZCSUdvaUJpQUJJQUlnQkNBRUVLY0lJQVlRTUFSQUlBQkJBam9BQkF3QkN5QUZJQUUyQWdBZ0JTQUNLUUlJTndJTUlBVWdBaWdDRURZQ0ZDQUZJQUlwQWdBM0FnUWdCU0FETmdJWUlBVkJJR29RR2lJQktBSUFJZ0lnQWlnQ0FDZ0NDQkVBQUNJQ1JRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0FpZ0NCQ0lDUWZDZkVrWUVRQ0FGUVNocUlBVWdBU2dDQUJBOEVQa1VEQUVMSUFKQnNLa1NSZ1JBSUFWQktHb2dCU0FCS0FJQUVEUVE4eFFNQVFzZ0FrSFFxQkpIRFFFZ0JVRW9haUFGSUFFb0FnQVFQeER2RkFzZ0FDQUZLUU1vTndJQURBRUxJQUJCQURvQUJBc2dCVUV3YWlRQUMrQUJBUUovSUFKQkFFY2hBd0pBQWtBQ1FDQUFRUU54UlNBQ1JYSU5BQ0FCUWY4QmNTRUVBMEFnQUMwQUFDQUVSZzBDSUFKQkFXc2lBa0VBUnlFRElBQkJBV29pQUVFRGNVVU5BU0FDRFFBTEN5QURSUTBCSUFBdEFBQWdBVUgvQVhGR0lBSkJCRWx5UlFSQUlBRkIvd0Z4UVlHQ2hBaHNJUU1EUUNBQUtBSUFJQU56SWdSQmYzTWdCRUdCZ29RSWEzRkJnSUdDaEhoeERRSWdBRUVFYWlFQUlBSkJCR3NpQWtFRFN3MEFDd3NnQWtVTkFRc2dBVUgvQVhFaEFRTkFJQUVnQUMwQUFFWUVRQ0FBRHdzZ0FFRUJhaUVBSUFKQkFXc2lBZzBBQ3d0QkFBdC9BZ0YvQVg0Z0FMMGlBMEkwaUtkQi93OXhJZ0pCL3c5SEJId2dBa1VFUUNBQklBQkVBQUFBQUFBQUFBQmhCSDlCQUFVZ0FFUUFBQUFBQUFEd1E2SWdBUkNzRFNFQUlBRW9BZ0JCUUdvTE5nSUFJQUFQQ3lBQklBSkIvZ2RyTmdJQUlBTkMvLy8vLy8vLy80ZUFmNE5DZ0lDQWdJQ0FnUEEvaEw4RklBQUxDNVVEQWdOL0Ezd2pBRUVRYXlJREpBQUNRQ0FBdkNJRVFmLy8vLzhIY1NJQ1FkcWZwTzRFVFFSQUlBRWdBTHNpQmlBR1JJUEl5VzB3WCtRL29rUUFBQUFBQUFBNFE2QkVBQUFBQUFBQU9NT2dJZ1ZFQUFBQVVQc2grYitpb0NBRlJHTmlHbUcwRUZHK29xQWlCemtEQUNBSFJBQUFBR0Q3SWVtL1l5RUVBbjhnQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSVFJZ0JBUkFJQUVnQmlBRlJBQUFBQUFBQVBDL29DSUZSQUFBQUZEN0lmbS9vcUFnQlVSallocGh0QkJSdnFLZ09RTUFJQUpCQVdzaEFnd0NDeUFIUkFBQUFHRDdJZWsvWkVVTkFTQUJJQVlnQlVRQUFBQUFBQUR3UDZBaUJVUUFBQUJRK3lINXY2S2dJQVZFWTJJYVliUVFVYjZpb0RrREFDQUNRUUZxSVFJTUFRc2dBa0dBZ0lEOEIwOEVRQ0FCSUFBZ0FKTzdPUU1BUVFBaEFnd0JDeUFESUFJZ0FrRVhka0dXQVdzaUFrRVhkR3UrdXprRENDQURRUWhxSUFNZ0FrRUJRUUFRbFJVaEFpQURLd01BSVFVZ0JFRUFTQVJBSUFFZ0JabzVBd0JCQUNBQ2F5RUNEQUVMSUFFZ0JUa0RBQXNnQTBFUWFpUUFJQUlMdndvREJId0Zmd0YrSXdCQk1Hc2lCeVFBQWtBQ1FBSkFJQUM5SWd0Q0lJaW5JZ1pCLy8vLy93ZHhJZ2hCK3RTOWdBUk5CRUFnQmtILy96OXhRZnZESkVZTkFTQUlRZnl5aTRBRVRRUkFJQXRDQUZrRVFDQUJJQUJFQUFCQVZQc2grYitnSWdCRU1XTmlHbUcwMEwyZ0lnSTVBd0FnQVNBQUlBS2hSREZqWWhwaHROQzlvRGtEQ0VFQklRWU1CUXNnQVNBQVJBQUFRRlQ3SWZrL29DSUFSREZqWWhwaHROQTlvQ0lDT1FNQUlBRWdBQ0FDb1VReFkySWFZYlRRUGFBNUF3aEJmeUVHREFRTElBdENBRmtFUUNBQklBQkVBQUJBVlBzaENjQ2dJZ0JFTVdOaUdtRzA0TDJnSWdJNUF3QWdBU0FBSUFLaFJERmpZaHBodE9DOW9Ea0RDRUVDSVFZTUJBc2dBU0FBUkFBQVFGVDdJUWxBb0NJQVJERmpZaHBodE9BOW9DSUNPUU1BSUFFZ0FDQUNvVVF4WTJJYVliVGdQYUE1QXdoQmZpRUdEQU1MSUFoQnU0enhnQVJOQkVBZ0NFRzgrOWVBQkUwRVFDQUlRZnl5eTRBRVJnMENJQXRDQUZrRVFDQUJJQUJFQUFBd2YzelpFc0NnSWdCRXlwU1RwNUVPNmIyZ0lnSTVBd0FnQVNBQUlBS2hSTXFVazZlUkR1bTlvRGtEQ0VFRElRWU1CUXNnQVNBQVJBQUFNSDk4MlJKQW9DSUFSTXFVazZlUkR1azlvQ0lDT1FNQUlBRWdBQ0FDb1VUS2xKT25rUTdwUGFBNUF3aEJmU0VHREFRTElBaEIrOFBrZ0FSR0RRRWdDMElBV1FSQUlBRWdBRVFBQUVCVSt5RVp3S0FpQUVReFkySWFZYlR3dmFBaUFqa0RBQ0FCSUFBZ0FxRkVNV05pR21HMDhMMmdPUU1JUVFRaEJnd0VDeUFCSUFCRUFBQkFWUHNoR1VDZ0lnQkVNV05pR21HMDhEMmdJZ0k1QXdBZ0FTQUFJQUtoUkRGallocGh0UEE5b0RrRENFRjhJUVlNQXdzZ0NFSDZ3K1NKQkVzTkFRc2dBQ0FBUklQSXlXMHdYK1Evb2tRQUFBQUFBQUE0UTZCRUFBQUFBQUFBT01PZ0lnTkVBQUJBVlBzaCtiK2lvQ0lDSUFORU1XTmlHbUcwMEQyaUlnU2hJZ1ZFR0MxRVZQc2g2YjlqSVFrQ2Z5QURtVVFBQUFBQUFBRGdRV01FUUNBRHFnd0JDMEdBZ0lDQWVBc2hCZ0pBSUFrRVFDQUdRUUZySVFZZ0EwUUFBQUFBQUFEd3Y2QWlBMFF4WTJJYVliVFFQYUloQkNBQUlBTkVBQUJBVlBzaCtiK2lvQ0VDREFFTElBVkVHQzFFVlBzaDZUOWtSUTBBSUFaQkFXb2hCaUFEUkFBQUFBQUFBUEEvb0NJRFJERmpZaHBodE5BOW9pRUVJQUFnQTBRQUFFQlUreUg1djZLZ0lRSUxJQUVnQWlBRW9TSUFPUU1BQWtBZ0NFRVVkaUlKSUFDOVFqU0lwMEgvRDNGclFSRklEUUFnQVNBQ0lBTkVBQUJnR21HMDBEMmlJZ0NoSWdVZ0EwUnpjQU11aWhtak82SWdBaUFGb1NBQW9hRWlCS0VpQURrREFDQUpJQUM5UWpTSXAwSC9EM0ZyUVRKSUJFQWdCU0VDREFFTElBRWdCU0FEUkFBQUFDNktHYU03b2lJQW9TSUNJQU5Fd1VrZ0pacURlem1pSUFVZ0FxRWdBS0doSWdTaElnQTVBd0FMSUFFZ0FpQUFvU0FFb1RrRENBd0JDeUFJUVlDQXdQOEhUd1JBSUFFZ0FDQUFvU0lBT1FNQUlBRWdBRGtEQ0VFQUlRWU1BUXNnQzBMLy8vLy8vLy8vQjROQ2dJQ0FnSUNBZ0xEQkFJUy9JUUJCQUNFR1FRRWhDUU5BSUFkQkVHb2dCa0VEZEdvQ2Z5QUFtVVFBQUFBQUFBRGdRV01FUUNBQXFnd0JDMEdBZ0lDQWVBdTNJZ0k1QXdBZ0FDQUNvVVFBQUFBQUFBQndRYUloQUVFQklRWWdDU0VLUVFBaENTQUtEUUFMSUFjZ0FEa0RJRUVDSVFZRFFDQUdJZ2xCQVdzaEJpQUhRUkJxSUFsQkEzUnFLd01BUkFBQUFBQUFBQUFBWVEwQUN5QUhRUkJxSUFjZ0NFRVVka0dXQ0dzZ0NVRUJha0VCRUpVVklRWWdCeXNEQUNFQUlBdENBRk1FUUNBQklBQ2FPUU1BSUFFZ0J5c0RDSm81QXdoQkFDQUdheUVHREFFTElBRWdBRGtEQUNBQklBY3JBd2c1QXdnTElBZEJNR29rQUNBR0MvNERBd044QW44QmZpQUF2U0lHUWlDSXAwSC8vLy8vQjNFaUJFR0FnTUNnQkU4RVFDQUFSQmd0UkZUN0lmay9JQUNtSUFDOVF2Ly8vLy8vLy8vLy93Q0RRb0NBZ0lDQWdJRDQvd0JXR3c4TEFrQUNmeUFFUWYvLzcvNERUUVJBUVg4Z0JFR0FnSUR5QTA4TkFSb01BZ3NnQUpraEFDQUVRZi8veS84RFRRUkFJQVJCLy8rWC93Tk5CRUFnQUNBQW9FUUFBQUFBQUFEd3Y2QWdBRVFBQUFBQUFBQUFRS0NqSVFCQkFBd0NDeUFBUkFBQUFBQUFBUEMvb0NBQVJBQUFBQUFBQVBBL29LTWhBRUVCREFFTElBUkIvLytOZ0FSTkJFQWdBRVFBQUFBQUFBRDR2NkFnQUVRQUFBQUFBQUQ0UDZKRUFBQUFBQUFBOEQrZ295RUFRUUlNQVF0RUFBQUFBQUFBOEw4Z0FLTWhBRUVEQ3lFRklBQWdBS0lpQWlBQ29pSUJJQUVnQVNBQklBRkVMMnhxTEVTMG9yK2lSSnI5M2xJdDNxMi9vS0pFYlpwMHIvS3dzNytnb2tSeEZpUCt4bkc4djZDaVJNVHJtSm1abWNtL29LSWhBeUFDSUFFZ0FTQUJJQUVnQVVRUjJpTGpPcTJRUDZKRTZ3MTJKRXQ3cVQrZ29rUlJQZENnWmcyeFA2Q2lSRzRnVE1YTlJiYy9vS0pFLzRNQWtpUkp3aitnb2tRTlZWVlZWVlhWUDZDaUlRRWdCRUgvLysvK0EwMEVRQ0FBSUFBZ0F5QUJvS0toRHdzZ0JVRURkQ0lFUWJEaERXb3JBd0FnQUNBRElBR2dvaUFFUWREaERXb3JBd0NoSUFDaG9TSUFtaUFBSUFaQ0FGTWJJUUFMSUFBTHhnSUNBMzBDZndKQUFuMENmUUpBSUFDOElnUkJ6NmZROWdOTUJFQWdCRUdBZ0lEOGUwOEVRRU1BQUlEL0lBQkRBQUNBdjFzTkJCb2dBQ0FBazBNQUFBQUFsUThMSUFSQkFYUkJnSUNBdUFaSkRRUWdCRUdhN05mMGUwOE5BVU1BQUFBQURBSUxJQVJCLy8vLyt3ZExEUU1MSUFCREFBQ0FQNUlpQWJ4QmpmYXJBbW9pQlVFWGRrSC9BR3NoQkNBQUlBR1RRd0FBZ0QrU0lBQWdBVU1BQUlDL2twTWdCVUgvLy8rREJFc2JJQUdWUXdBQUFBQWdCVUgvLy8vZkJFMGJJUUlnQlVILy8vOERjVUh6aWRUNUEycStRd0FBZ0wrU0lRQWdCTElMSWdORGdIRXhQNVFnQUNBQUlBQkRBQUFBUUpLVklnRWdBQ0FBUXdBQUFEK1VsQ0lBSUFFZ0FaUWlBU0FCSUFHVUlnRkQ3dW1SUHBSRHFxb3FQNUtVSUFFZ0FVTW1ubmcrbEVNVHpzdytrcFNTa3BRZ0EwUFI5eGMzbENBQ2twSWdBSk9Ta2dzUEN5QUFDOVFEQXdKL0JId0JmaUFBdlNJSFFpQ0lweUVCQWtBQ2ZBSjhBa0FnQVVINWhPcitBMHNnQjBJQVdYRkZCRUFnQVVHQWdNRC9lMDhFUUVRQUFBQUFBQUR3L3lBQVJBQUFBQUFBQVBDL1lRMEVHaUFBSUFDaFJBQUFBQUFBQUFBQW93OExJQUZCQVhSQmdJQ0F5Z2RKRFFRZ0FVSEYvY3IrZTA4TkFVUUFBQUFBQUFBQUFBd0NDeUFCUWYvL3YvOEhTdzBEQ3lBQVJBQUFBQUFBQVBBL29DSUR2U0lIUWlDSXAwSGl2aVZxSWdGQkZIWkIvd2RySVFJZ0FDQURvVVFBQUFBQUFBRHdQNkFnQUNBRFJBQUFBQUFBQVBDL29LRWdBVUgvLzcrQUJFc2JJQU9qUkFBQUFBQUFBQUFBSUFGQi8vKy9tZ1JOR3lFRklBZEMvLy8vL3crRElBRkIvLzgvY1VHZXdaci9BMnF0UWlDR2hMOUVBQUFBQUFBQThMK2dJUUFnQXJjTElnTkVBQURnL2tJdTVqK2lJQUFnQUNBQVJBQUFBQUFBQUFCQW9LTWlCQ0FBSUFCRUFBQUFBQUFBNEQraW9pSUdJQVFnQktJaUJDQUVvaUlBSUFBZ0FFU2Z4bmpRQ1pyRFA2SkVyM2lPSGNWeHpEK2dva1FFK3BlWm1ablpQNkNpSUFRZ0FDQUFJQUJFUkZJKzN4THh3aitpUk40RHk1WmtSc2Mvb0tKRVdaTWlsQ1JKMGorZ29rU1RWVlZWVlZYbFA2Q2lvS0NpSUFORWRqeDVOZTg1NmoyaUlBV2dvQ0FHb2FDZ0N3OExJQUFMMHdNQ0FuNENmeU1BUVNCcklnUWtBQUpBSUFGQy8vLy8vLy8vLy8vL0FJTWlBMEtBZ0lDQWdJREFnRHg5SUFOQ2dJQ0FnSUNBd1AvREFIMVVCRUFnQVVJRWhpQUFRanlJaENFRElBQkMvLy8vLy8vLy8vOFBneUlBUW9HQWdJQ0FnSUNBQ0ZvRVFDQURRb0dBZ0lDQWdJQ0F3QUI4SVFJTUFnc2dBMEtBZ0lDQWdJQ0FnRUI5SVFJZ0FFS0FnSUNBZ0lDQWdBaFNEUUVnQWlBRFFnR0RmQ0VDREFFTElBQlFJQU5DZ0lDQWdJQ0F3UC8vQUZRZ0EwS0FnSUNBZ0lEQS8vOEFVUnRGQkVBZ0FVSUVoaUFBUWp5SWhFTC8vLy8vLy8vL0E0TkNnSUNBZ0lDQWdQei9BSVFoQWd3QkMwS0FnSUNBZ0lDQStQOEFJUUlnQTBMLy8vLy8vLysvLzhNQVZnMEFRZ0FoQWlBRFFqQ0lweUlGUVpIM0FFa05BQ0FFUVJCcUlBQWdBVUwvLy8vLy8vOC9nMEtBZ0lDQWdJREFBSVFpQWlBRlFZSDNBR3NRekFJZ0JDQUFJQUpCZ2ZnQUlBVnJFSndHSUFRcEF3aENCSVlnQkNrREFDSUFRanlJaENFQ0lBUXBBeEFnQkNrREdJUkNBRkt0SUFCQy8vLy8vLy8vLy84UGc0UWlBRUtCZ0lDQWdJQ0FnQWhhQkVBZ0FrSUJmQ0VDREFFTElBQkNnSUNBZ0lDQWdJQUlVZzBBSUFKQ0FZTWdBbndoQWdzZ0JFRWdhaVFBSUFJZ0FVS0FnSUNBZ0lDQWdJQi9nNFMvQzBVQkFYOGpBRUVRYXlJRkpBQWdCU0FCSUFJZ0F5QUVRb0NBZ0lDQWdJQ0FnSCtGRUlvRElBVXBBd0FoQVNBQUlBVXBBd2czQXdnZ0FDQUJOd01BSUFWQkVHb2tBQXZCQVFFRGZ3SkFJQUVnQWlnQ0VDSURCSDhnQXdVZ0FoQ2tGUTBCSUFJb0FoQUxJQUlvQWhRaUJXdExCRUFnQWlBQUlBRWdBaWdDSkJFRUFBOExBa0FnQWlnQ1VFRUFTQVJBUVFBaEF3d0JDeUFCSVFRRFFDQUVJZ05GQkVCQkFDRUREQUlMSUFBZ0EwRUJheUlFYWkwQUFFRUtSdzBBQ3lBQ0lBQWdBeUFDS0FJa0VRUUFJZ1FnQTBrTkFTQUFJQU5xSVFBZ0FTQURheUVCSUFJb0FoUWhCUXNnQlNBQUlBRVFmUm9nQWlBQ0tBSVVJQUZxTmdJVUlBRWdBMm9oQkFzZ0JBc01BQ0FBSUFDVElnQWdBSlVMRlFFQmZ5TUFRUkJySWdFZ0FEZ0NEQ0FCS2dJTUMrWURBd1o4QVg0RGZ3SkFBa0FDUUFKQUlBQzlJZ2RDQUZrRVFDQUhRaUNJcHlJSVFmLy9QMHNOQVFzZ0IwTC8vLy8vLy8vLy8vOEFnMUFFUUVRQUFBQUFBQUR3dnlBQUlBQ2lvdzhMSUFkQ0FGa05BU0FBSUFDaFJBQUFBQUFBQUFBQW93OExJQWhCLy8rLy93ZExEUUpCZ0lEQS93TWhDVUdCZUNFS0lBaEJnSURBL3dOSEJFQWdDQ0VKREFJTElBZW5EUUZFQUFBQUFBQUFBQUFQQ3lBQVJBQUFBQUFBQUZCRG9yMGlCMElnaUtjaENVSExkeUVLQ3lBS0lBbEI0cjRsYWlJSVFSUjJhcmNpQlVRQVlKOVFFMFRUUDZJaUFTQUhRdi8vLy84UGd5QUlRZi8vUDNGQm5zR2Evd05xclVJZ2hvUy9SQUFBQUFBQUFQQy9vQ0lBSUFBZ0FFUUFBQUFBQUFEZ1A2S2lJZ09odlVLQWdJQ0FjSU8vSWdSRUFBQWdGWHZMMnoraUlnS2dJZ1lnQWlBQklBYWhvQ0FBSUFCRUFBQUFBQUFBQUVDZ295SUJJQU1nQVNBQm9pSUNJQUtpSWdFZ0FTQUJSSi9HZU5BSm1zTS9va1N2ZUk0ZHhYSE1QNkNpUkFUNmw1bVptZGsvb0tJZ0FpQUJJQUVnQVVSRVVqN2ZFdkhDUDZKRTNnUExsbVJHeHorZ29rUlpreUtVSkVuU1A2Q2lSSk5WVlZWVlZlVS9vS0tnb0tJZ0FDQUVvU0FEb2FBaUFFUUFBQ0FWZTh2YlA2SWdCVVEySy9FUjgvNVpQYUlnQUNBRW9FVFZyWnJLT0pTN1BhS2dvS0NnSVFBTElBQUxEQUFnQUVNQUFBQVFFSThWQ3d3QUlBQkRBQUFBY0JDUEZRdXRCQU1EZkFOL0FuNENmQUpBSUFBUXhnUkIvdzl4SWdSRUFBQUFBQUFBa0R3UXhnUWlCV3NpQmtRQUFBQUFBQUNBUUJER0JDQUZhMGtFUUNBRUlRVU1BUXNnQmtFQVNBUkFJQUJFQUFBQUFBQUE4RCtnRHd0QkFDRUZSQUFBQUFBQUFKQkFFTVlFSUFSTERRQkVBQUFBQUFBQUFBQWdBTDBpQjBLQWdJQ0FnSUNBZUZFTkFScEVBQUFBQUFBQThIOFF4Z1FnQkUwRVFDQUFSQUFBQUFBQUFQQS9vQThMSUFkQ0FGTUVRRVFBQUFBQUFBQUFFQkNkQ2c4TFJBQUFBQUFBQUFCd0VKMEtEd3RCK01zTkt3TUFJQUNpUVlETURTc0RBQ0lCb0NJQ0lBR2hJZ0ZCa013Tkt3TUFvaUFCUVlqTURTc0RBS0lnQUtDZ0lnQWdBS0lpQVNBQm9pQUFRYkRNRFNzREFLSkJxTXdOS3dNQW9LSWdBU0FBUWFETURTc0RBS0pCbU13Tkt3TUFvS0lnQXIwaUNLZEJCSFJCOEE5eElnUkI2TXdOYWlzREFDQUFvS0NnSVFBZ0JFSHd6QTFxS1FNQUlBaENMWVo4SVFjZ0JVVUVRQUo4SUFoQ2dJQ0FnQWlEVUFSQUlBZENnSUNBZ0lDQWdJZy9mYjhpQVNBQW9pQUJvRVFBQUFBQUFBQUFmNklNQVFzZ0IwS0FnSUNBZ0lDQThEOTh2eUlCSUFDaUlnSWdBYUFpQUVRQUFBQUFBQUR3UDJNRWZCQ3NGVVFBQUFBQUFBQVFBS0lRcXhWRUFBQUFBQUFBQUFBZ0FFUUFBQUFBQUFEd1A2QWlBeUFDSUFFZ0FLR2dJQUJFQUFBQUFBQUE4RDhnQTZHZ29LQkVBQUFBQUFBQThMK2dJZ0FnQUVRQUFBQUFBQUFBQUdFYkJTQUFDMFFBQUFBQUFBQVFBS0lMRHdzZ0I3OGlBU0FBb2lBQm9Bc0xld0VFZnlBQVFRQTJBZ2dnQUNBQU5nSUVJQUFnQURZQ0FDQUJLQUlJSWdVRVFDQUJLQUlFSWdRb0FnQWlBaUFCS0FJQUlnTW9BZ1EyQWdRZ0F5Z0NCQ0FDTmdJQUlBQW9BZ0FpQWlBRU5nSUVJQVFnQWpZQ0FDQUFJQU0yQWdBZ0F5QUFOZ0lFSUFBZ0FDZ0NDQ0FGYWpZQ0NDQUJRUUEyQWdnTEMxc0JBMzhnQVNBQUtBSVVTd1JBSUFBb0Fnd2hBaUFBSUFFUWdCWWdBQ2dDRUNFRFFRQWhBUU5BSUFFZ0EwWUVRQ0FBSUFJUU5nVWdBVUVDZENJRUlBQW9BZ3hxSUFJZ0JHb29BZ0EyQWdBZ0FVRUJhaUVCREFFTEN3c0wzZ0lCQkg4Q1FBSkFBMEFnQVM4QkhpSUVJQUl2QVI1SERRSWdBd1JBSUFBZ0FTZ0NLQkRlQVNJR1FRUnFJUVFnQUNBQ0tBSW9FTjRCSWdWQkJHb2hCeUFGS0FJQUlRVURRQ0FGSUFkSEJFQWdCaWdDQUNBRUlBVkJFR29RL0JVZ0JFWU5CU0FGRUV3aEJRd0JDd3NnQVM4QkhpRUVDMEVBSVFVQ1FBSkFJQVJCLy84RGNVRWNhdzREQUFNQkF3c2dBVUVDRUJzZ0FrRUNFQnRIRFFOQkFTRUZJQUZCQVJBYklnRWdBa0VCRUJzaUFrWU5BaUFBSUFFUUlDRUJJQUFnQWhBZ0lRSWdBVVVOQTBFQUlRVWdBZzBCREFJTEN5QUJLQUlRSWdZZ0FTZ0NEQ0lIYXlBQ0tBSVFJQUlvQWd4clJ3MEFRUUVoQkFOQUlBUWdCaUFIYTBFRWRVOGlCUTBCSUFFZ0JCQWJJZ1lnQWlBRUVCc2lCMGNFUUNBQUlBWVFJQ0lHUlNBQUlBY1FJQ0lIUlhJTkFpQUFJQVlnQnlBREVMME5SUTBDQ3lBRVFRRnFJUVFnQVNnQ0RDRUhJQUVvQWhBaEJnd0FDd0FMSUFVUEMwRUFDeU1CQVg4Z0FDQUJFTEVDQkg4Z0FDQUFJQUVRdWdFb0FnQW9BZ2dRN3dFRlFRQUxDMzRCQW44akFFRVFheUlESkFBZ0FpQUNLQUlBTmdJRUFrQUNRQ0FCUlEwQUlBQWdBUkM2QVNJQVJRMEJJQUF2QVI1QkhrY05BQ0FDSUFNZ0FDZ0NBRUVJYWlBQUtBSUVFSUFMSWdBUTdRVWdBQkF5R2lBQ0tBSUFJQUlvQWdSSElRUUxJQU5CRUdva0FDQUVEd3RCcVM5QitLc0NRZFVJUWV1NUFSQUFBQXNOQUNBQVFaQUJhaUFCRUwwVkN4RUFJQUFvQW5BaUFDQUJFTUlWSUFCR0N5Y0JBWDlCZnlBQlFRSjBJQUZCLy8vLy93TkxHeEFWSVFJZ0FDQUJOZ0lJSUFBZ0FqWUNBQXNaQUNBQUlBRTJBZ1FnQUVIb2tpQTJBZ0FnQUNBQU5nSVFDemdCQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCSUFJUXB3b2dBeWdDQ0NFQklBQWdBeTBBRERvQUJDQUFJQUUyQWdBZ0EwRVFhaVFBQ3lVQUlBQW9BaEFFUUVIcXdRSkJrcW9DUWZJQVFlK1dCQkFBQUFzZ0FDQUJOZ0lRUVFBTHhRRUJCWDhqQUVFUWF5SUZKQUFqQUVFUWF5SUNKQUJCSUJBVklnTkJBRFlDQUNBQ0lBQkJyQUpxSWdSQkNHbzJBZ1FnQWtFQk5nSUlJQU5CQ0dvZ0FSQ1VGaG9nQXlBRU5nSUVJQU1nQkNnQ0FDSUdOZ0lBSUFZZ0F6WUNCQ0FFSUFNMkFnQWdCQ0FFS0FJSVFRRnFOZ0lJSUFKQkFEWUNBQ0FDRUlzQklBSkJFR29rQUNBQUtBS3NBaUVDSUFFb0FoQWhBeUFGSUFFb0FnQTJBZ3dnQlNBRE5nSUlJQUJCMEFKcUlBVkJDR29RMVJVZ0FrRUlhaUlBTmdJQUlBVkJFR29rQUNBQUN6MEJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUlnQURZQ0NDQUJRVGhxSUFKQkNHb1EvUUlnQUVIRUFHb2dBa0VNYWhEUEFTQUNRUkJxSkFBTEpBQWdBQ0FCTmdJQUlBQkJCR29nQkJDd0FSb2dBQ0FETmdJVUlBQWdBallDRUNBQUMvSUVBUWQvSXdCQm9BSnJJZ1FrQUNBQkx3RWVJUWNnQkVIZ0FHb2dBQ0FDRU4wQklBUW9BbVFoQXlBRUxRQmhJUVVDUUNBQUlBRWdBaERLRFNJQ0RRQkJBQ0VDSUFWRkRRQUNRQ0FBS0FJQUtBSUFFRWRGRFFBQ1FDQUFLQUlBS0FJQVFRRkdEUUFnQnhDSkRrVWdBMEVEUm5JTkFDQUVRZUFBYWlJRElBQkJjaUFCRUJBZ0JFSFFBR29pQVNBQVFhSWtFRGNnQXlBQkVCSWFJQU1nQnhDQkFSQU9HaUFEUVlhRENoQU9HaUFEUWFPVEFoQU9HaUFFS0FLY0FpRUNJQUVRRHhvZ0F4QVJEQUlMSUFOQkEwWWdCMEhnQVVkeVJRUkFJQVJCNEFCcUlnZ2dBRUhLSkJBM0lBQWdBU2dDT0NnQ0FCQ2ZBU0VKSUFSQktHb2dDQkJVSVFWQkVCQVZJZ1pCM0k4Z05nSUFJQVlnQlNrQ0FEY0NCQ0FHSUFVb0FnZzJBZ3dnQlJCVklBUWdCallDU0NBSlFhQURhaUFFUVRocUlnWVF6UUVnQmhBV0lBVVFEeG9nQ0JBUEdnc2dBMEVDUmdSQUlBUkI0QUJxSWdnZ0FFR2RKQkEzSUFBZ0FTZ0NPQ2dDQUJDZkFTRUpJQVFnQ0JCVUlRVkJFQkFWSWdaQmdKQWdOZ0lBSUFZZ0JTa0NBRGNDQkNBR0lBVW9BZ2cyQWd3Z0JSQlZJQVFnQmpZQ0lDQUpRYUFEYWlBRVFSQnFJZ1lRelFFZ0JoQVdJQVVRRHhvZ0NCQVBHZ3dCQ3lBRFFRUnJRWDFMRFFBZ0JFSGdBR29pQXlBQVFYSWdBUkFRSUFSQjBBQnFJZ0VnQUVHY0pCQTNJQU1nQVJBU0dpQURJQWNRZ1FFUURob2dBMEc5Z3dvUURob2dBMEdWa3dJUURob2dCQ2dDbkFJaEFpQUJFQThhSUFNUUVRd0JDeUFIRUlrT1JTQURRWDV4UVFKR2NnMEFJQVJCNEFCcUlnTWdBRUZ5SUFFUUVDQURJQWNRZ1FFUURob2dBMEhKa2dJUURob2dCQ2dDbkFJaEFpQURFQkVMSUFSQm9BSnFKQUFnQWd2WkFnRURmeU1BUWRBQmF5SURKQUFnQVM4QkhpRUVJQU5CRUdvZ0FDQUNFTjBCQWtBZ0F5MEFFRVVFUUNBRFFSQnFJZ0lnQUVGeUlBRVFFQ0FDSUFRUWdRRVFEaG9nQWtHN1B4QU9HaUFES0FMTUFTRUVJQUlRRVF3QkN5QURMUUFSUlFSQVFRQWhCQ0FBTFFDQUFVRUNjVVVOQVNBQVFZQUJhaUlGUWUwcEVHaEZCRUFnQTBFUWFpSUNJQUJCY2lBQkVCQWdBa0h5MmdrUURob2dBa0hqeFFBUURob2dBeWdDekFFaEJDQUNFQkVNQWdzZ0JTMEFBRUVDY1VVTkFTQUZRZTBwRUdoRkRRRWdBQ0FDRUhBUW93SU5BU0FEUVJCcUlnSWdBRUZ5SUFFUUVDQUNRWUNTQ2hBT0dpQUNRY0hGQUJBT0dpQURLQUxNQVNFRUlBSVFFUXdCQzBFQUlRUWdBeWdDRkVFSFNRMEFJQU5CRUdvaUJTQUFRWElnQVJBUUlBVkI0dkFNRUE0YUlBTWdBQ0FBSUFJUUlCREJGU0FGSUFNUUVob2dBeWdDekFFaEJDQURFQThhSUFVUUVRc2dBMEhRQVdva0FDQUVDMTRCQVg4akFFRVFheUlHSkFBZ0JpQUNOZ0lBSUFZZ0FUWUNDQ0FBSUFZb0FnZ2dCaWdDQUNBREVMWU9JZ0JCdVAwUE5nSUVJQUJCN1AwUE5nSUFJQUFnQlRZQ01DQUFJQVE1QXlnZ0FFSFkvUTgyQWdBZ0JrRVFhaVFBSUFBTGN3RURmeU1BUWNBQmF5SUNKQUFnQUNBQlFRTVFHeUlFRU0wQ0lRTWdBQ0FFRUhBaEJBSkFBa0FnQUNBREVGQkZEUUFnQUNBREVENUJJRWNOQUVFQUlRTWdCQkNqQWcwQkN5QUNJQUJCY2lBQkVCQWdBa0dnL3dFUURob2dBaWdDdkFFaEF5QUNFQkVMSUFKQndBRnFKQUFnQXd1RUFRRUNmeU1BUVJCcklnTWtBQ0FDS0FJQUlRUWdBaWdDQkNFQ0lBTWdBUzhCSGpZQ0RBSi9RUUVnQkNBRUlBSkJBblJxSWdJZ0EwRU1haENhQlNBQ1J3MEFHa0VBSUFFdkFSNUIvdjhEY1VFY1J3MEFHaUFESUFBZ0FTZ0NBQ2dDQ0JBZ0x3RWVOZ0lJSUFRZ0FpQURRUWhxRUpvRklBSkhDeUVDSUFOQkVHb2tBQ0FDQ3g0QUlBQkJCSFpCQVhFZ0FFRURka0VCY1dwQkFrRUJJQUJCQW5FYmFndUpBUUVFZnlNQVFTQnJJZ0lrQUNBQ1FSQnFFRlVnQWtFUWFpSURBbjlCakRFZ0FVSGtBSEFpQkVFTFJpQUJRUXB3SWdWQkFVZHlSUTBBR2tHYzZ3UWdCRUVNUmlBRlFRSkhja1VOQUJwQjc2TURRZnZnQkVIdm93TWdCRUVOUnhzZ0JVRURSeHNMRU5JQklBSWdBUkNNQkNBQUlBSWdBeEJPSUFJUUR4b2dBeEFQR2lBQ1FTQnFKQUFMd3dFQkEzOGdBQ0FCSUFJZ0F4RFJEU0VGSUFRb0FnQWlCaWdDQUNBREtBSUFJZ2NvQWdCSkJIOGdBeUFHTmdJQUlBUWdCellDQUNBREtBSUFJZ1FvQWdBZ0FpZ0NBQ0lHS0FJQVR3UkFJQVZCQVdvUEN5QUNJQVEyQWdBZ0F5QUdOZ0lBSUFJb0FnQWlBeWdDQUNBQktBSUFJZ1FvQWdCUEJFQWdCVUVDYWc4TElBRWdBellDQUNBQ0lBUTJBZ0FnQVNnQ0FDSUNLQUlBSUFBb0FnQWlBeWdDQUU4RVFDQUZRUU5xRHdzZ0FDQUNOZ0lBSUFFZ0F6WUNBQ0FGUVFScUJTQUZDd3VWQVFFRGZ5QUFJQUVnQWhDZkJ5RUVJQU1vQWdBaUJTZ0NBQ0FDS0FJQUlnWW9BZ0JKQkg4Z0FpQUZOZ0lBSUFNZ0JqWUNBQ0FDS0FJQUlnTW9BZ0FnQVNnQ0FDSUZLQUlBVHdSQUlBUkJBV29QQ3lBQklBTTJBZ0FnQWlBRk5nSUFJQUVvQWdBaUFpZ0NBQ0FBS0FJQUlnTW9BZ0JQQkVBZ0JFRUNhZzhMSUFBZ0FqWUNBQ0FCSUFNMkFnQWdCRUVEYWdVZ0JBc0xZQUVCZndOQUFrQUNRQUpBQWtBZ0FTOEJIa0VWYXc0SUFBQUNBUUVCQVFNQkMwRUNRUUVnQVVFQkVCdEJ3QUJHR3lFQ0N5QUNEd3NnQUNBQUlBRkJBUkFiRUNBUTBnMGdBVUVDRUJ0c0R3c2dBQ0FCUVFFUUd4QWdJUUVNQUFzQUN3b0FJQUJCMExJU0VFZ0x2QWdCQ1g4RFFDQUJRUVJySVFnRFFDQUFJUU1EUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUVnQTJzaUJFRUNkU0lBRGdZR0JnQUVBUUlEQ3lBQlFRUnJJZ0FvQWdBaUFTZ0NBQ0FES0FJQUlnSW9BZ0JQRFFVZ0F5QUJOZ0lBSUFBZ0FqWUNBQThMSUFNZ0EwRUVhaUFEUVFocUlBRkJCR3NRMFEwYUR3c2dBeUFEUVFScUlBTkJDR29nQTBFTWFpQUJRUVJyRU5BTkdnOExJQVJCK3dCTUJFQWdBeUFEUVFScUlBTkJDR29pQlJDZkJ4b2dBMEVNYWlFQUEwQWdBQ0lDSUFGR0RRUWdBaUlHS0FJQUlnZ29BZ0FpQnlBRktBSUFJZ1FvQWdCSkJFQURRQUpBSUFZZ0JEWUNBQ0FESUFVaUFFWUVRQ0FESVFBTUFRc2dBQ0VHSUFjZ0FFRUVheUlGS0FJQUlnUW9BZ0JKRFFFTEN5QUFJQWcyQWdBTElBSkJCR29oQUNBQ0lRVU1BQXNBQ3lBQ0RRRWdBU0FEUmcwQ0lBQkJBbXRCQVhZaEJRTkFJQVZCQUVnRVFBTkFJQUJCQWtnTkJTQURLQUlBSVFJZ0F5QUJRUVJySWdFb0FnQTJBZ0FnQVNBQ05nSUFJQU1nQUVFQmF5SUFJQU1ROVJVTUFBc0FCU0FESUFBZ0F5QUZRUUowYWhEMUZTQUZRUUZySVFVTUFRc0FDd0FMSUFNZ0EwRUVhaUFCUVFSckVKOEhHZ3dCQ3lBRElBQkJBWFJCZkhGcUlRWUNmeUFFUVowZlR3UkFJQU1nQXlBQVFYeHhJZ0JxSUFZZ0FDQUdhaUFJRU5BTkRBRUxJQU1nQmlBSUVKOEhDeUVISUFKQkFXc2hBaUFJSVFBQ2Z3SkFBa0FnQXlnQ0FDSUZLQUlBSWdRZ0JpZ0NBQ2dDQUNJSlNRUkFEQUVMQTBBZ0FFRUVheUlBSUFOR0JFQWdBMEVFYWlFR0lBUWdDQ2dDQUNJQUtBSUFTUTBEQTBBZ0JpQUlSZzBHSUFZb0FnQWlCU2dDQUNBRVN3UkFJQVlnQURZQ0FDQUlJQVUyQWdBZ0JrRUVhaUVHREFVRklBWkJCR29oQmd3QkN3QUxBQXNnQUNnQ0FDSUtLQUlBSUFsUERRQUxJQU1nQ2pZQ0FDQUFJQVUyQWdBZ0IwRUJhaUVIQ3lBQUlBTkJCR29pQkVzRVFBTi9JQVlvQWdBb0FnQWhDUU5BSUFRaUJVRUVhaUVFSUFVb0FnQWlDaWdDQUNBSlNRMEFDd05BSUFCQkJHc2lBQ2dDQUNJTEtBSUFJQWxQRFFBTElBQWdCVWtFZnlBRkJTQUZJQXMyQWdBZ0FDQUtOZ0lBSUFBZ0JpQUZJQVpHR3lFR0lBZEJBV29oQnd3QkN3c2hCQXNDUUNBRUlBWkdEUUFnQmlnQ0FDSUFLQUlBSUFRb0FnQWlCU2dDQUU4TkFDQUVJQUEyQWdBZ0JpQUZOZ0lBSUFkQkFXb2hCd3NnQjBVRVFDQURJQVFROUJVaEJpQUVRUVJxSWdBZ0FSRDBGUVJBSUFRaEFTQURJUUFnQmtVTkJ3d0VDMEVDSUFZTkFob0xJQVFnQTJzZ0FTQUVhMGdFUUNBRElBUWdBaERVRFNBRVFRUnFJUUFNQlFzZ0JFRUVhaUFCSUFJUTFBMGdCQ0VCSUFNaEFBd0ZDeUFHSUFnaUJVWU5BUU4vSUFNb0FnQW9BZ0FoQkFOQUlBWWlBRUVFYWlFR0lBUWdBQ2dDQUNJSEtBSUFUdzBBQ3dOQUlBUWdCVUVFYXlJRktBSUFJZ2tvQWdCSkRRQUxJQUFnQlU4RWYwRUVCU0FBSUFrMkFnQWdCU0FITmdJQURBRUxDd3NoQlNBQUlRTWdCVUVDYXc0REFnQUJBQXNMQ3dzTElRRUJmd05BSUFBRVFDQUJRUUZxSVFFZ0FFRUJheUFBY1NFQURBRUxDeUFCQ3hzQkFYOUJBU0VCSUFCQjJ3QnJRUVJKSUFCQnRRSnJRUVJKY2dzYUFRRi9JQUF2QVI1QkRFWUVmeUFBS0FJZ0VORUZCVUVBQ3dzZkFDQUJCRUFnQUNBQktBSUFFTmdOSUFBZ0FTZ0NCQkRZRFNBQkVCOExDeDhBSUFFRVFDQUFJQUVvQWdBUTJRMGdBQ0FCS0FJRUVOa05JQUVRSHdzTHp3Z0NDbjhCZmdKQUEwQWdBQ0VIQWtBRFFDQUVSUTBEQWtBZ0F5QUdUQ0FFSUFaTWNrVUVRQ0FISVFBRFFDQURSUTBHSUFFb0FnUWdBQ2dDQkVrTkFpQURRUUZySVFNZ0FFRUlhaUVBREFBTEFBc2dBeUFFVEEwQ0lBRWhDQ0FGSVFBRFFDQUNJQWhHQkVBRFFDQUFJQVZHRFFjZ0FTQUhSZ1JBQTBBZ0FDQUZSZzBKSUFKQkNHc2lBaUFBUVFocklnQXBBZ0EzQWdBTUFBc0FCU0FDUVFocklnSWdBVUVJYXlJRElBQkJDR3NpQkNBRUtBSUVJQU1vQWdSSklnWWJLUUlBTndJQUlBQWdCQ0FHR3lFQUlBTWdBU0FHR3lFQkRBRUxBQXNBQlNBQUlBZ3BBZ0EzQWdBZ0FFRUlhaUVBSUFoQkNHb2hDQXdCQ3dBTEFBc0NRQ0FESUFSSUJFQWdBU0FBYTBFRGRTRUhJQUVnQkVFQ2JTSU1RUU4wYWlJS0tBSUVJUXNnQUNFSkEwQWdCd1JBSUFkQkFYWWlDQ0FISUFoQmYzTnFJQXNnQ1NBSVFRTjBhaUlJS0FJRVNTSU5HeUVISUFrZ0NFRUlhaUFOR3lFSkRBRUxDeUFKSUFCclFRTjFJUTBNQVFzZ0EwRUJSZ1JBSUFBcEFnQWhFU0FBSUFFcEFnQTNBZ0FnQVNBUk53SUFEd3NnQWlBQmEwRURkU0VISUFBZ0EwRUNiU0lOUVFOMGFpSUpLQUlFSVFzZ0FTRUtBMEFnQndSQUlBY2dCMEVCZGlJSVFYOXphaUFJSUFvZ0NFRURkR29pQ0NnQ0JDQUxTU0lNR3lFSElBaEJDR29nQ2lBTUd5RUtEQUVMQ3lBS0lBRnJRUU4xSVF3TElBUWdER3NoQkNBRElBMXJJUU1nQ2lFSEFrQWdBU0FKUmcwQUlBa2hCeUFCSUFwR0RRQWdBU0FKUVFocVJnUkFJQWtwQWdBaEVTQUpJQUVnQ2lBQmF5SUJFT2NCSUFGcUlnY2dFVGNDQUF3QkN5QUtJQUZCQ0dwR0JFQWdDa0VJYXlJQktRSUFJUkVnQ2lFSElBRWdDVWNFUUNBS0lBRWdDV3NpQVdzaUJ5QUpJQUVRNXdFYUN5QUpJQkUzQWdBTUFRc2dBU0VJSUFvZ0FXdEJBM1VpRUNFTElBRWdDV3RCQTNVaURpRVBJQTRnRUVZRVFBTkFJQUVnQjBZRVFDQUJJUWNNQXdVZ0J5a0NBQ0VSSUFjZ0NDa0NBRGNDQUNBSUlCRTNBZ0FnQ0VFSWFpRUlJQWRCQ0dvaEJ3d0JDd0FMQUFzRFFDQVBJQXNpQVc4aEN5QUJJUThnQ3cwQUN5QUpJQTlCQTNScUlRc0RmeUFKSUF0R0JIOGdDU0FRUVFOMGFnVWdDMEVJYXlJTElBNUJBM1FpQjJvaEFTQUxLUUlBSVJFZ0N5RUlBMEFnQ0NBQklnZ3BBZ0EzQWdBZ0FTQUhhaUFKSUE0Z0NpQUJhMEVEZFNJQmEwRURkR29nQVNBT1Noc2lBU0FMUncwQUN5QUlJQkUzQWdBTUFRc0xJUWNMSUF3Z0RXb2dBeUFFYWtnRVFDQUFJQWtnQnlBTklBd2dCU0FHRU5vTklBb2hBUXdCQ3dzZ0J5QUtJQUlnQXlBRUlBVWdCaERhRFNBSklRRWdEQ0VFSUEwaEF5QUhJUUlNQVFzTElBY2hBQ0FGSVFnRFFDQUFJQUZHQkVBRFFDQUZJQWhHRFFNZ0FTQUNSZ1JBSUFjZ0JTQUlJQVZyRU9jQkdnVUNRQ0FCS0FJRUlBVW9BZ1JKQkVBZ0J5QUJLUUlBTndJQUlBRkJDR29oQVF3QkN5QUhJQVVwQWdBM0FnQWdCVUVJYWlFRkN5QUhRUWhxSVFjTUFRc0xCU0FJSUFBcEFnQTNBZ0FnQ0VFSWFpRUlJQUJCQ0dvaEFBd0JDd3NMQzRNREFRSi9Jd0JCRUdzaUF5UUFBa0FnQVVVTkFDQUFLQUlBSVFRZ0FnUkFJQU1nQkRZQ0NDQURJQUFvQWdRMkFnd0NRQ0FES0FJTUlnQkZCRUFnQXlnQ0NDRUFEQUVMSUFNb0FnZ2lBaUFDS0FJQVFYOGdBSFJCZjBFZ0lBQnJJZ0FnQUNBQklBQWdBVWtiSWdScmRuRnlOZ0lBSUFNZ0FrRUVhaUlBTmdJSUlBRWdCR3NoQVFzZ0FFSC9BU0FCUVFWMlFRSjBJZ0FRZVJvZ0FVRmdjU0FCUndSQUlBTWdBeWdDQ0NBQWFpSUFOZ0lJSUFBZ0FDZ0NBRUYvUVNBZ0FVRWZjV3QyY2pZQ0FBc01BUXNnQXlBRU5nSUFJQU1nQUNnQ0JEWUNCQUpBSUFNb0FnUWlBRVVFUUNBREtBSUFJUUFNQVFzZ0F5Z0NBQ0lDSUFJb0FnQkJmeUFBZEVGL1FTQWdBR3NpQUNBQUlBRWdBQ0FCU1JzaUJHdDJjVUYvYzNFMkFnQWdBeUFDUVFScUlnQTJBZ0FnQVNBRWF5RUJDeUFBUVFBZ0FVRUZka0VDZENJQUVIa2FJQUZCWUhFZ0FVY0VRQ0FESUFNb0FnQWdBR29pQURZQ0FDQUFJQUFvQWdCQmYwRWdJQUZCSDNGcmRrRi9jM0UyQWdBTEN5QURRUkJxSkFBTG9nSUJDSDhqQUVGQWFpSUVKQUFnQkNBQ05nSThJQUZCNkFKcUlBUkJQR29RdHdnaEJpQUVRUUEyQWlnZ0JFRUFOZ0lZSUFSQ0FEY0RFQ0FFUVNocUlnSkJCSElnQkVFUWFpSUJFTEFCSVFnZ0JDQUROZ0k0SUFFUU1ob2dCRUgvLy8vL0J6WUNFQ0FFUVFBMkFnZ2dCRUlBTndNQUlBRkJCSElnQkJDd0FTRUpJQVFnQXpZQ0lDQUVFRElhSUFZb0FnUWhCU0FHUVFScUlnTWhCd05BSUFVRVFDQUhJQVVnQlVFUWFpQUNFTXdGSWdvYklRY2dCVUVFYWlBRklBb2JLQUlBSVFVTUFRc0xJQUFnQnpZQ0FDQUFJUXNnQmlnQ0JDRUNJQU1oQUFOQUlBSUVRQ0FDSUFBZ0FTQUNRUkJxRU13RklnTWJJUUFnQWlBQ1FRUnFJQU1iS0FJQUlRSU1BUXNMSUFzZ0FEWUNCQ0FKRURJYUlBZ1FNaG9nQkVGQWF5UUFDL01DQVFWL0l3QkJJR3NpQlNRQUFrQUNRQ0FBQkVBZ0JVRVFhaUFCSUFNUXlRVWdCU2dDRkNBRktBSVFhMEVDZFNFSUEwQWdCaUFJUmcwQ0lBVWdCallDRENBRklBRTJBZ2dnQUNBRlFRaHFJZ1FRdFFvaUJ5QUNLUUlBTndJQUlBUWdBeUFCSUFZUTNBMGdCU2dDQ0NFRUFrQUNRQU5BQWtBZ0JTZ0NEQ0FFUmdSQUlBTWdCU2dDRUNBR1FRSjBhaWdDQUNJRUVDQXZBUjVCSEdzT0F3RUJBd1FMSUFRb0FpQWdCa2NOQndKQUFrQUNRQUpBSUFRb0FoQkJCR3NPQkFBQkF3SURDeUFIUVFBMkFnQU1BZ3NnQjBFQk5nSUFEQUVMSUFjZ0JDZ0NGQ2dDQURZQ0JBc2dCQkJNSVFRTUFRc0xBa0FEUUFKQUlBTWdBeUFFRUNBb0FnQW9BZ2dpQkJBZ0x3RWVRUnhyRGdNQkFRQUNDd3NnQUNBRUlBSWdBeERkRFFzTUFRc2dBQ0FFSUFJZ0F4RGREUXNnQmtFQmFpRUdEQUFMQUF0QjN2NEFRYWlhQWtHL0IwSDU3UUFRQUFBTElBVkJFR29RTWhvZ0JVRWdhaVFBRHd0QjFDUkJxSm9DUWNvSFFmbnRBQkFBQUFzdEFRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFRY3dCYWlBQ1FReHFFTFlLSVFBZ0FrRVFhaVFBSUFBTDNnRUJCSDhqQUVFUWF5SUVKQUFnQUNnQ0FDZ0NBQ0FFUVF4cUlBUkJEbW9RaFJkQkFTRURBa0FDUUFKQUFrQUNRQUpBSUFRdkFRNGlBa0VVYXc0U0JRVUZBd01FQkFRREJBQUVBUVFGQlFVRkFndEJBaUVDQTBBZ0FpQUFLQUlFSUFBb0FnQWlCV3RCQW5WUElnTU5CU0FCSUFVZ0FrRUNkR29vQWdBUXVnRWlCVVVOQlNBQ1FRRnFJUUlnQlNBQkVOOE5EUUFMREFRTElBQW9BZ0FvQWdoQjVTbEhJUU1NQXdzZ0FrSHVLVWNOQVFzZ0FTQUFLQUlBS0FJSUVMb0JJZ0JGRFFBZ0FDQUJFTjhOSVFNTUFRdEJBQ0VEQ3lBRVFSQnFKQUFnQXd1V0FnRUdmeU1BUVJCcklnZ2tBQUpBSUFKQkFrZ05BQ0FDUVFKclFRRjJJZ2tnQXlBQWF5SUZRUU4xU0EwQUlBQWdCVUVDZFNJRlFRRnFJZ1pCQTNScUlRUWdBaUFGUVFKcUlnVktCRUFnQkVFSWFpSUhJQVFnQVNBRUlBY1ExQUVpQnhzaEJDQUZJQVlnQnhzaEJnc2dBU0FFSUFNUTFBRU5BQ0FJSUFNcEFnQTNBd2dEUUFKQUlBTWdCQ0lGS0FJQU5nSUFJQU1nQkNnQ0JEWUNCQ0FHSUFsS0RRQWdBQ0FHUVFGMElnTkJBWElpQmtFRGRHb2hCQ0FDSUFOQkFtb2lBMG9FUUNBRVFRaHFJZ2NnQkNBQklBUWdCeERVQVNJSEd5RUVJQU1nQmlBSEd5RUdDeUFGSVFNZ0FTQUVJQWhCQ0dvUTFBRkZEUUVMQ3lBRklBZ29BZ2cyQWdBZ0JTQUlLQUlNTmdJRUN5QUlRUkJxSkFBTG9BSUJBbjhnQUNBQklBSWdBeUFGRU9JTklRWWdCU0FFSUFNUTFBRUVmeUFES0FJQUlRY2dBeUFFS0FJQU5nSUFJQVFnQnpZQ0FDQURLQUlFSVFjZ0F5QUVLQUlFTmdJRUlBUWdCellDQkNBRklBTWdBaERVQVVVRVFDQUdRUUZxRHdzZ0FpZ0NBQ0VFSUFJZ0F5Z0NBRFlDQUNBRElBUTJBZ0FnQWlnQ0JDRUVJQUlnQXlnQ0JEWUNCQ0FESUFRMkFnUWdCU0FDSUFFUTFBRkZCRUFnQmtFQ2FnOExJQUVvQWdBaEF5QUJJQUlvQWdBMkFnQWdBaUFETmdJQUlBRW9BZ1FoQXlBQklBSW9BZ1EyQWdRZ0FpQUROZ0lFSUFVZ0FTQUFFTlFCUlFSQUlBWkJBMm9QQ3lBQUtBSUFJUUlnQUNBQktBSUFOZ0lBSUFFZ0FqWUNBQ0FBS0FJRUlRSWdBQ0FCS0FJRU5nSUVJQUVnQWpZQ0JDQUdRUVJxQlNBR0N3dmJBUUVDZnlBQUlBRWdBaUFFRUtjSElRVWdCQ0FESUFJUTFBRUVmeUFDS0FJQUlRWWdBaUFES0FJQU5nSUFJQU1nQmpZQ0FDQUNLQUlFSVFZZ0FpQURLQUlFTmdJRUlBTWdCallDQkNBRUlBSWdBUkRVQVVVRVFDQUZRUUZxRHdzZ0FTZ0NBQ0VESUFFZ0FpZ0NBRFlDQUNBQ0lBTTJBZ0FnQVNnQ0JDRURJQUVnQWlnQ0JEWUNCQ0FDSUFNMkFnUWdCQ0FCSUFBUTFBRkZCRUFnQlVFQ2FnOExJQUFvQWdBaEFpQUFJQUVvQWdBMkFnQWdBU0FDTmdJQUlBQW9BZ1FoQWlBQUlBRW9BZ1EyQWdRZ0FTQUNOZ0lFSUFWQkEyb0ZJQVVMQzg0TEFRbC9BMEFnQVVFRWF5RU1JQUZCQ0dzaENBTkFJQUFoQkFOQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUlBRWdCR3NpQlVFRGRTSUFEZ1lJQ0FBRUFRSURDeUFDSUFGQkNHc2lBaUFFRU5RQlJRMEhJQVFvQWdBaEFDQUVJQUlvQWdBMkFnQWdBaUFBTmdJQUlBUW9BZ1FoQWlBRUlBRkJCR3NpQUNnQ0FEWUNCQ0FBSUFJMkFnQVBDeUFFSUFSQkNHb2dCRUVRYWlBQlFRaHJJQUlRNGcwYUR3c2dCQ0FFUVFocUlBUkJFR29nQkVFWWFpQUJRUWhySUFJUTRRMGFEd3NnQlVFM1RBUkFJQUVoQlNNQVFSQnJJZ2drQUNBRUlBUkJDR29nQkVFUWFpSUJJQUlpQnhDbkJ4b2dCRUVZYWlFQ0EwQWdBaUFGUndSQUlBY2dBaUFCRU5RQkJFQWdDQ0FDS1FJQU53TUlJQUloQXdOQUFrQWdBeUFCSWdBb0FnQTJBZ0FnQXlBQUtBSUVOZ0lFSUFBZ0JFWUVRQ0FFSVFBTUFRc2dBQ0VESUFjZ0NFRUlhaUFBUVFocklnRVExQUVOQVFzTElBQWdDQ2dDQ0RZQ0FDQUFJQWdvQWd3MkFnUUxJQUlpQVVFSWFpRUNEQUVMQ3lBSVFSQnFKQUFQQ3lBRFJRUkFBa0FnQVNBRVJnMEFBa0FnQVNBRWF5SUFRUWxJRFFBZ0FFRURkU0lBUVFKclFRRjJJUU1EUUNBRFFRQklEUUVnQkNBQ0lBQWdCQ0FEUVFOMGFoRGdEU0FEUVFGcklRTU1BQXNBQ3lBQklBUnJRUU4xSVFVZ0FTRUFBMEFnQUNBQlJnUkFJQUVnQkd0QkEzVWhCUU5BSUFWQkFVb0VRQ0FGUVFKT0JFQWdCQ2dDQUNFQUlBUWdBVUVJYXlJREtBSUFOZ0lBSUFNZ0FEWUNBQ0FFS0FJRUlRQWdCQ0FES0FJRU5nSUVJQU1nQURZQ0JDQUVJQUlnQlVFQmF5QUVFT0FOQ3lBRlFRRnJJUVVnQVVFSWF5RUJEQUVMQ3d3Q0N5QUNJQUFnQkJEVUFRUkFJQUFvQWdBaEF5QUFJQVFvQWdBMkFnQWdCQ0FETmdJQUlBQW9BZ1FoQXlBQUlBUW9BZ1EyQWdRZ0JDQUROZ0lFSUFRZ0FpQUZJQVFRNEEwTElBQkJDR29oQUF3QUN3QUxEd3NnQkNBQVFRSjBRWGh4YWlFR0FuOGdCVUc1UGs4RVFDQUVJQVFnQUVFQmRFRjRjU0lBYWlBR0lBQWdCbW9nQ0NBQ0VPRU5EQUVMSUFRZ0JpQUlJQUlRcHdjTElRa2dBMEVCYXlFRElBZ2hBQ0FDSUFRZ0JoRFVBVVVFUUFOQUlBQWlCVUVJYXlJQUlBUkdCRUFnQkVFSWFpRUdJQUlnQkNBSUVOUUJEUVVEUUNBR0lBaEdEUWdnQWlBRUlBWVExQUVFUUNBR0tBSUFJUUFnQmlBSUtBSUFOZ0lBSUFnZ0FEWUNBQ0FHS0FJRUlRQWdCaUFNS0FJQU5nSUVJQXdnQURZQ0FDQUdRUWhxSVFZTUJ3VWdCa0VJYWlFR0RBRUxBQXNBQ3lBQ0lBQWdCaERVQVVVTkFBc2dCQ2dDQUNFSElBUWdBQ2dDQURZQ0FDQUFJQWMyQWdBZ0JDZ0NCQ0VISUFRZ0JVRUVheUlGS0FJQU5nSUVJQVVnQnpZQ0FDQUpRUUZxSVFrTElBUkJDR29pQlNBQVR3MEJBMEFnQlNJSFFRaHFJUVVnQWlBSElBWVExQUVOQUFOQUlBSWdBQ0lLUVFocklnQWdCaERVQVVVTkFBc2dBQ0FIU1FSQUlBY2hCUXdEQlNBSEtBSUFJUXNnQnlBQUtBSUFOZ0lBSUFBZ0N6WUNBQ0FIS0FJRUlRc2dCeUFLUVFScklnb29BZ0EyQWdRZ0NpQUxOZ0lBSUFBZ0JpQUdJQWRHR3lFR0lBbEJBV29oQ1F3QkN3QUxBQXNnQkNBRVFRaHFJQUZCQ0dzZ0FoQ25CeG9NQXdzQ1FDQUZJQVpHRFFBZ0FpQUdJQVVRMUFGRkRRQWdCU2dDQUNFQUlBVWdCaWdDQURZQ0FDQUdJQUEyQWdBZ0JTZ0NCQ0VBSUFVZ0JpZ0NCRFlDQkNBR0lBQTJBZ1FnQ1VFQmFpRUpDeUFKUlFSQUlBUWdCU0FDRUpBV0lRY2dCVUVJYWlJQUlBRWdBaENRRmdSQUlBVWhBU0FFSVFBZ0IwVU5Cd3dFQzBFQ0lBY05BaG9MSUFVZ0JHc2dBU0FGYTBnRVFDQUVJQVVnQWlBREVPTU5JQVZCQ0dvaEFBd0ZDeUFGUVFocUlBRWdBaUFERU9NTklBVWhBU0FFSVFBTUJRc2dCaUFJSWdWR0RRRURmeUFHSWdCQkNHb2hCaUFDSUFRZ0FCRFVBVVVOQUFOQUlBSWdCQ0FGSWdkQkNHc2lCUkRVQVEwQUN5QUFJQVZQQkg5QkJBVWdBQ2dDQUNFS0lBQWdCU2dDQURZQ0FDQUZJQW8yQWdBZ0FDZ0NCQ0VLSUFBZ0IwRUVheUlBS0FJQU5nSUVJQUFnQ2pZQ0FBd0JDd3NMSVFVZ0FDRUVJQVZCQW1zT0F3SUFBUUFMQ3dzTEN3a0FJQUJCQ0JDUEV3c3RBUUYvSXdCQkVHc2lBaVFBSUFJZ0FTa0NBRGNEQ0NBQUlBSW9BZ2dnQWlnQ0RCRDlGU0FDUVJCcUpBQUxId0FnQVFSQUlBQWdBU2dDQUJEbURTQUFJQUVvQWdRUTVnMGdBUkFmQ3dzbUFDQUJCRUFnQUNBQktBSUFFT2NOSUFBZ0FTZ0NCQkRuRFNBQlFSUnFFRThnQVJBZkN3czhBUUovSUFFZ0FrY0VRQ0FBS0FJRUlnUWdBU0FDSUFGcmFpSUNheUVESUFJZ0JFY0VRQ0FCSUFJZ0F4RG5BUm9MSUFBZ0FTQURhallDQkFzTGl3RUJBMzhqQUVFUWF5SURKQUFnQVFKL0lBQWdBQ0FCUmcwQUdnTkFJQUVnQVNBQUlnSkJCR29pQUVZTkFSb2dBaWdDQUNBQ0tBSUVSdzBBQ3lBQ0N5SUNSd1JBSUFKQkJHb2hBQU5BSUFFZ0FFRUVhaUlBUndSQUlBQW9BZ0FpQkNBQ0tBSUFSZzBCSUFJZ0JEWUNCQ0FDUVFScUlRSU1BUXNMSUFKQkJHb2hBUXNnQTBFUWFpUUFJQUVMTUFFQmZ5QUFLQUlFSWdJZ0FDZ0NDRWtFUUNBQ0lBRXBBZ0EzQWdBZ0FDQUNRUWhxTmdJRUR3c2dBQ0FCRUpFV0M5Y0dBUXAvSXdCQlFHb2lCQ1FBSUFFb0FnQWhCU0FCS0FJRUlRWWdCRUlBTndNd0lBUkNBRGNES0NBRVFZQ0FnUHdETmdJNElBWWdCV3RCQW5VaENRTkFJQVlnQld0QkFuVWdBMDBFUUNBRVFTaHFJZ01nQmtFRWF4Q01BeWdDQkNFRklBTWdBU2dDQkVFRWF4Q01BeUFGTmdJQUEwQWdBU2dDQkVFRWF5RUlRUUFoQ3dOQUFrQWdBU2dDQUNBSVJnUkFJQXNOQXlBQVFRQTJBZ2dnQUVJQU53SUFJQVFvQWpBaEF3TkFJQU5GRFFJZ0F5Z0NDQ0VDSUFRZ0FTZ0NBQ0FES0FJUUlBTW9BZ3dpQlNBRklBbEdHMEVDZEdvb0FnQTJBaFFnQkNBQ05nSVFJQUFnQkVFUWFoRHFEU0FES0FJQUlRTU1BQXNBQ3lBQ0lBaEJCR3NpQ0NnQ0FCQ0tBaUlHS0FJRUlRd2dCaWdDQUNFRElBUWdDVFlDSkNBRUlBUkJLR28yQWlBZ0JDQUVLUU1nTndNSUFuOGdCRUVJYWlFRkEwQUNRQ0FESUF4SEJIOGdBeWdDQUNFS0l3QkJFR3NpQnlRQUlBY2dDallDRENBRktBSUFJQWRCREdvUTV3UUVmeUFGS0FJQUlBZEJER29RakFNb0FnQWdCU2dDQkVjRlFRQUxJUW9nQjBFUWFpUUFJQXBGRFFFZ0F3VWdEQXNNQWdzZ0EwRUVhaUVEREFBTEFBc2lBeUFHS0FJRVJnMEJJQVFnQXlnQ0FEWUNFQ0FFUVNocUlBUkJFR29RakFNaEF5QUdLQUlFSVFjZ0JpZ0NBQ0VHSUFNb0FnUWhBd05BSUFNaEJTQUdJQWRHQkVBZ0JFRW9haUFJRUl3REtBSUFJQVZHRFFNZ0JFRW9haUFJRUl3RElBVTJBZ0JCQVNFTERBTUZJQVFnQmlnQ0FDSUROZ0ljQWtBQ1FDQURJQVFvQWhCR0RRQWdCRUVvYWlBRVFSeHFFT2NFUlEwQUlBUkJLR29nQkVFY2FoQ01BeWdDQUNBSlJnMEFJQVJCS0dvZ0JFRWNhaENNQXlnQ0JDRURBMEFnQXlBRlJnMENBMEFnQXlBRlNRUkFJQVJCS0dvZ0FTZ0NBQ0FEUVFKMGFoQ01BeWdDQUNFRERBRUxDd05BSUFNZ0JVME5BU0FFUVNocUlBRW9BZ0FnQlVFQ2RHb1FqQU1vQWdBaEJRd0FDd0FMQUFzZ0JTRURDeUFHUVFScUlRWU1BUXNBQ3dBTEN3c2dBQ2dDQUNFQklBQW9BZ1FoQWlNQVFSQnJJZ0FrQUNBQUlBUkJLR29pQXpZQ0NDQUJJQUlnQUVFSWFpQUNJQUZyUVFOMUVOZ0tRUUYwRU9NTklBQkJFR29rQUNBREVFOGdCRUZBYXlRQUJTQUVRU2hxSUFVZ0EwRUNkR29RakFNaUJTQUROZ0lFSUFVZ0NUWUNBQ0FEUVFGcUlRTWdBU2dDQUNFRklBRW9BZ1FoQmd3QkN3c0xGd0FnQUVFWWFoQVBHaUFBUVF4cUVBOGFJQUFRRHhvTEpnQWdBQ2dDQUNBQkVKNEJJQUFvQWdRZ0FVRU1haENlQVNBQUtBSUlJQUZCR0dvUW5nRUx3QUlCQzM4akFFSHdBV3NpQlNRQUlBVkI0QUZxSWdjUVZTQUZRZEFCYWlJSUVGVWdCVUhBQVdvaUNSQlZJQVZCbUFGcUlnWWdBU2dDQUJEdkRTQUZJQWsyQXBBQklBVWdDRFlDakFFZ0JTQUhOZ0tJQVNBRlFZZ0JhaUlCSUFZUTdRMGdCaERzRFNBRlFRaHFJZ3BCc3NNS0lBY1F4QUVnQlVFWWFpSUxJQXBCek1JS0VDMGdCVUVvYWlJTUlBc2dDQkJPSUFWQk9Hb2lEU0FNUWZmd0RCQXRJQVZCeUFCcUlnNGdEU0FDRUU0Z0JVSFlBR29pQWlBT1FmZndEQkF0SUFWQjZBQnFJZzhnQWlBRUVFNGdCVUg0QUdvaUJDQVBRYXpEQ2hBdElBRWdCQ0FKRUU0Z0JpQUJRZmZ3REJBdElBQWdCaUFERUU0Z0JoQVBHaUFCRUE4YUlBUVFEeG9nRHhBUEdpQUNFQThhSUE0UUR4b2dEUkFQR2lBTUVBOGFJQXNRRHhvZ0NoQVBHaUFKRUE4YUlBZ1FEeG9nQnhBUEdpQUZRZkFCYWlRQUM2b0JBUU4vSXdCQk1Hc2lBaVFBSUFKQklHb1FWU0FDUVJCcUVGVWdBaEJWSUFGQkFXc2lBMEVFVHdSQVFZYW9DVUdEcXdKQnZRTkJqYnNCRUFBQUN5QUNRU0JxSWdFZ0EwRUNkQ0lEUWNDRklHb29BZ0FRMGdFZ0FrRVFhaUlFSUFOQjBJVWdhaWdDQUJEU0FTQUNJQU5CNElVZ2FpZ0NBQkRTQVNBQUlBRVFWQ0lBUVF4cUlBUVFWQm9nQUVFWWFpQUNFRlFhSUFJUUR4b2dCQkFQR2lBQkVBOGFJQUpCTUdva0FBc25BQ0FCQkVBZ0FDQUJLQUlBRVBBTklBQWdBU2dDQkJEd0RTQUJRUlJxRU1NS0lBRVFId3NMRUFBZ0FDQUJRZXZSREVIaElSQzFBd3NRQUNBQUlBRkJ4OW9NUWQwaEVMVURDeXdCQVg4akFFRkFhaUlESkFBZ0FDQUJJQU5CSUdvZ0F5QUNFRllRVmhET0FpRUFJQU5CUUdza0FDQUFDN0FCQVFWL0l3QkJFR3NpQnlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQmpZQ0RDQUhJQVkyQWdnakFFRVFheUlHSkFBZ0FFR01BV29pQ0JDM0JDRUpJQVFvQWdBaEJDQURLQUlBSVFNZ0FpZ0NBQ0VDSUFjb0FnZ2hDaUFBS0FJSUlRQWdCaUFGUVJCcU5nSUlJQVlnQlNnQ0VDQUZSem9BRENBSUlBa2dBQ0FLSUFFZ0FpQURJQVFnQmtFSWFoQ0tHQ0lBRUNnZ0NDQUlLQUlZUVFGcU5nSVlJQVpCRUdva0FDQUhRUkJxSkFBZ0FBc1ZBQ0FBSUFGQnVMb01RUU5CNkNCQjN5QVFpQk1MTVFFQmZ3TkFJQUFvQWdRZ0FVMEVRQ0FBUVFBMkFnUUZJQUFvQWdBZ0FVRWNiR29RckFjZ0FVRUJhaUVCREFFTEN3dTRBZ0VDZnlNQVFhQUJheUlHSkFBQ1FDQUFLQUlBSUFVUWpnRkZCRUFnQmtHUUFXb2lBQ0FCSUFJUXN3SWdCa0VJYWlJQklBQkJ2OFFIRUMwZ0JDQUJFSWtDSVFNZ0FSQVBHaUFBRUE4YURBRUxJQUFvQWdBZ0JSQkZJUWNnQUNnQ0FDQUZFRVVnQTBjRVFDQUdRUWhxRU00QklRQWdCa0dRQVdvaUF5QUJJQUlRc3dJZ0FDQURFQkpCdnVVSkVBNGdCeEFoUWFXckJ4QU9HaUFERUE4YUlBTWdBRUVFYWhCQ0lBUWdBeENKQWlFRElBWkJrQUZxRUE4YUlBQVF1d0VhREFFTFFRQWhBeUFBS0FJQUlBVVFQaUlGUVNCR0RRQWdCa0VJYWhET0FTRUFJQVpCa0FGcUlnTWdBU0FDRUxNQ0lBQWdBeEFTUWYybUNoQU9JQVVRSVVIOGx3Z1FEaG9nQXhBUEdpQURJQUJCQkdvUVFpQUVJQU1RaVFJaEF5QUdRWkFCYWhBUEdpQUFFTHNCR2dzZ0JrR2dBV29rQUNBREN3OEFJQUFROWcwZ0FDZ0NBQkNJQkFzT0FDQUFJQUVRd0FwQkFUb0FKQXR6QVFKL0l3QkJJR3NpQkNRQUlBUkJBRFlDSEFKQUlBQW9BZ0FnQVNBQ0lBUkJIR29RdlFNaUJRMEFRUUFoQlNBQUtBSUFJQVFvQWh3UXZ3SU5BQ0FFSUFFZ0FoQ3pBaUFFUVJCcUlnQWdCRUdQemdjUUxTQURJQUFRaVFJaEJTQUFFQThhSUFRUUR4b0xJQVJCSUdva0FDQUZDeXNBSUFCQkFEb0FKQ0FBUVFBNkFBQWdBUzBBSkFSQUlBQWdBUkQ1RFFzZ0FDQUJLUUlvTndJb0lBQUxoZ0VCQm44Z0FDZ0NBQ0VDSUFBb0FnUWhCQ0FCS0FJQUlRTWdBU2dDQkNFRkl3QkJFR3NpQmlRQUlBSWhBQ0FESVFGQkFDRUNBMEFDUUNBQklBVkdEUUJCQVNFQ0lBQWdCRVlOQUNBQUtBSUFJZ01nQVNnQ0FDSUhTUTBBUVFBaEFpQURJQWRMRFFBZ0FVRUVhaUVCSUFCQkJHb2hBQXdCQ3dzZ0FpRUFJQVpCRUdva0FDQUFDekVCQVg4RFFDQUFLQUlFSUFGTkJFQWdBRUVBTmdJRUJTQUFLQUlBSUFGQk1HeHFFTXdFSUFGQkFXb2hBUXdCQ3dzTEp3QWdBUVJBSUFBZ0FTZ0NBQkQrRFNBQUlBRW9BZ1FRL2cwZ0FVRVVhaEF5R2lBQkVCOExDeWNBSUFFRVFDQUFJQUVvQWdBUS93MGdBQ0FCS0FJRUVQOE5JQUZCRkdvUThSWWdBUkFmQ3dzbkFDQUJCRUFnQUNBQktBSUFFSUFPSUFBZ0FTZ0NCQkNBRGlBQlFSQnFFRElhSUFFUUh3c0xId0FnQVFSQUlBQWdBU2dDQUJDQkRpQUFJQUVvQWdRUWdRNGdBUkFmQ3dzUEFDQUFFUDBOSUFBb0FnQVFpQVFMREFBZ0FDQUFLQUlFRU1RS0N3NEFJQUJCREdvUU1ob2dBQkFQQzFRQkEzOGpBRUd3QVdzaUFpUUFJQUlnQWtFZ2FoQ0lBeUlETmdJTUlBSkJtUEFmTmdJSUlBSWdBa0VJYWlJRU5nSVlJQUVnQkJEV0NpQUVFQllnQUNBRFFReHFFRUlnQXhDN0Fob2dBa0d3QVdva0FBdURBUUVCZnlBQkx3RUdRUXBIQkVBZ0FFSHk3UUlRRkJvUEN3SkFBa0FnQVM4QkdFRUJSZ1JBSUFFb0FoUWlBaWdDQkVFS1J3MEJJQUV2QVFRZ0FpOEJBRTBOQWlBQUlBRkJBQkRNQ2c4TFFjaUtCMEdobkFKQkgwSC92UU1RQUFBTFFiYlRCa0dobkFKQklrSC92UU1RQUFBTFFlTG5BRUdobkFKQkkwSC92UU1RQUFBTGpnRUJBWDlCZ0lBRUlRRUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBRGhzSkNRQUpBUWtKQ1FrSkFRa0pDUWtKQVFJQ0F3UUVCUVVHQmdjSUMwR0FnZ1FQQzBHQWhBUVBDMEdBaGdRUEMwRzN0Z2xCejVjQ1FmQUFRZm9wRUFBQUMwR0FpQVFQQzBHQWlnUVBDMEdBakFRUEMwR0t0Z2xCejVjQ1Fmd0FRZm9wRUFBQUMwRUFJUUVMSUFFTEp3RUJmeUFBS0FJQUlnRUVRQ0FBSUFFMkFnUWdBUkFmSUFCQkFEWUNDQ0FBUWdBM0FnQUxDeGdCQVg5QkFTRUJJQUJCenlKR0lBQkJ6UUpyUVNKSmNndGJBUUYvSUFCQitRRnJRUU5QQkg4Z0FFSDlBV3RCQWs4RWYwRUJJUUVDUUFKQUFrQWdBRUg4QVdzT0JBSUJBUUlBQ3lBQVFjQWlSaUFBUWVBaWEwRUNTWElnQUVHdUtVWnlEUUVMUVFBaEFRc2dBUVZCQVFzRlFRRUxDeVVBQW44Z0FFRTNheUlBUVJ4TkJFQkJBVUVCSUFCMFFiR1lnSUFCY1EwQkdndEJBQXNMT2dFQmZ5QUFRUzVHSUFCQnFRRkdjaUFBUVRkcklnRkJIRTFCQUVFQklBRjBRZlc0Z0lBQmNSdHlJQUJCOVFGR2NrVUVRRUVBRHd0QkFRdWdBZ0VHZjBIUXNoTWlCVUhBQTJvaEJFSHdBQ0VEQTBBZ0JDRUdJQU5GQkVCQkFBOExJQVVnQTBFQmRpSUNRUUowYWlJRUtBSUFJZ2NnQUJDaUFrRUFTQVJBSUFSQkJHb2hCU0FESUFKQmYzTnFJUU1nQmlFRURBRUxJQUloQXlBQUlBY1FvZ0pCQUVnTkFBc0RRQ0FDQkVBZ0FpQUNRUUYySWdOQmYzTnFJQU1nQlNBRFFRSjBhaUlES0FJQUlBQVFvZ0pCQUVnaUJ4c2hBaUFEUVFScUlBVWdCeHNoQlF3QkN3c2dCaUFFUVFScUlnUnJRUUoxSVFJRFFDQUNCRUFnQWtFQmRpSUdJQUlnQmtGL2Myb2dBQ0FFSUFaQkFuUnFJZ1lvQWdBUW9nSkJBRWdpQXhzaEFpQUVJQVpCQkdvZ0F4c2hCQXdCQ3d0QkFDRUNJQVZCa0xZVFJpQUVJQVZHY2dSL1FRQUZJQUVnQlVHZ2dnWnJLQUlBTmdJQVFRRUxDeTBCQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUpCRkdvUW1nc2dBaENaQ3dzZ0FoQWZDd3NMQUNBQVFmWDVBaENPRXd0TkFRRi9JQUJCOEFCcUVESWFJQUJCNUFCcUVESWFJQUJCMkFCcUVESWFJQUJCeEFCcUVFOGdBQ2dDT0JDeEJ5QUFLQUl3SVFFZ0FFRUFOZ0l3SUFFRVFDQUJFQjhMSUFCQkhHb1FUd3NUQUNBQUlBRWdBU0FDUVFKMGFpQURFT2dPQzhjQkFRTi9Ba0FDUUFKQUlBRWdBRUVFYWlJRlJ3UkFJQVFvQWdBaUJpQUJLQUlRSWdkUERRRUxJQUVoQXlBQklBQW9BZ0JIQkVBZ0FSRFdGeUlES0FJUUlBUW9BZ0JQRFFJTElBRW9BZ0JGQkVBZ0FpQUJOZ0lBSUFFUEN5QUNJQU0yQWdBZ0EwRUVhZzhMSUFZZ0IwME5BU0FGSUFFUW54Y2lBMGNFUUNBRUtBSUFJQU1vQWhCUERRRUxJQUVvQWdSRkJFQWdBaUFCTmdJQUlBRkJCR29QQ3lBQ0lBTTJBZ0FnQXc4TElBQWdBaUFFRUswR0R3c2dBaUFCTmdJQUlBTWdBVFlDQUNBREM5c0JBUU4vSUFBZ0FTQUNJQU1RbEE0aEJTQUVLQUlBSWdZb0FnQW9BZ0FnQXlnQ0FDSUhLQUlBS0FJQVNRUi9JQU1nQmpZQ0FDQUVJQWMyQWdBZ0F5Z0NBQ0lFS0FJQUtBSUFJQUlvQWdBaUJpZ0NBQ2dDQUU4RVFDQUZRUUZxRHdzZ0FpQUVOZ0lBSUFNZ0JqWUNBQ0FDS0FJQUlnTW9BZ0FvQWdBZ0FTZ0NBQ0lFS0FJQUtBSUFUd1JBSUFWQkFtb1BDeUFCSUFNMkFnQWdBaUFFTmdJQUlBRW9BZ0FpQWlnQ0FDZ0NBQ0FBS0FJQUlnTW9BZ0FvQWdCUEJFQWdCVUVEYWc4TElBQWdBallDQUNBQklBTTJBZ0FnQlVFRWFnVWdCUXNMcHdFQkEzOGdBQ0FCSUFJUXRnY2hCQ0FES0FJQUlnVW9BZ0FvQWdBZ0FpZ0NBQ0lHS0FJQUtBSUFTUVIvSUFJZ0JUWUNBQ0FESUFZMkFnQWdBaWdDQUNJREtBSUFLQUlBSUFFb0FnQWlCU2dDQUNnQ0FFOEVRQ0FFUVFGcUR3c2dBU0FETmdJQUlBSWdCVFlDQUNBQktBSUFJZ0lvQWdBb0FnQWdBQ2dDQUNJREtBSUFLQUlBVHdSQUlBUkJBbW9QQ3lBQUlBSTJBZ0FnQVNBRE5nSUFJQVJCQTJvRklBUUxDL1lJQVFsL0EwQWdBVUVFYXlFSEEwQWdBQ0VEQTBBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCSUFOcklnWkJBblVpQUE0R0JnWUFCQUVDQXdzZ0FVRUVheUlBS0FJQUlnRW9BZ0FvQWdBZ0F5Z0NBQ0lDS0FJQUtBSUFUdzBGSUFNZ0FUWUNBQ0FBSUFJMkFnQVBDeUFESUFOQkJHb2dBMEVJYWlBQlFRUnJFSlFPR2c4TElBTWdBMEVFYWlBRFFRaHFJQU5CREdvZ0FVRUVheENURGhvUEN5QUdRZnNBVEFSQUlBTWdBMEVFYWlBRFFRaHFJZ1FRdGdjYUlBTkJER29oQUFOQUlBQWlBaUFCUmcwRUlBSWlCU2dDQUNJSEtBSUFLQUlBSUFRb0FnQWlCaWdDQUNnQ0FFa0VRQU5BQWtBZ0JTQUdOZ0lBSUFNZ0JDSUFSZ1JBSUFNaEFBd0JDeUFBSVFVZ0J5Z0NBQ2dDQUNBQVFRUnJJZ1FvQWdBaUJpZ0NBQ2dDQUVrTkFRc0xJQUFnQnpZQ0FBc2dBa0VFYWlFQUlBSWhCQXdBQ3dBTElBSU5BU0FCSUFOR0RRSWdBRUVDYTBFQmRpRUVBMEFnQkVFQVNBUkFBMEFnQUVFQ1NBMEZJQU1vQWdBaEFpQURJQUZCQkdzaUFTZ0NBRFlDQUNBQklBSTJBZ0FnQXlBQVFRRnJJZ0FnQXhDaEZ3d0FDd0FGSUFNZ0FDQURJQVJCQW5ScUVLRVhJQVJCQVdzaEJBd0JDd0FMQUFzZ0F5QURRUVJxSUFGQkJHc1F0Z2NhREFFTElBTWdBRUVCZEVGOGNXb2hCUUovSUFaQm5SOVBCRUFnQXlBRElBQkJmSEVpQUdvZ0JTQUFJQVZxSUFjUWt3NE1BUXNnQXlBRklBY1F0Z2NMSVFnZ0FrRUJheUVDSUFjaEFBSi9Ba0FDUUNBREtBSUFJZ1FvQWdBb0FnQWlCaUFGS0FJQUtBSUFLQUlBSWdsSkJFQU1BUXNEUUNBQVFRUnJJZ0FnQTBZRVFDQURRUVJxSVFVZ0JpQUhLQUlBSWdBb0FnQW9BZ0JKRFFNRFFDQUZJQWRHRFFZZ0JTZ0NBQ0lFS0FJQUtBSUFJQVpMQkVBZ0JTQUFOZ0lBSUFjZ0JEWUNBQ0FGUVFScUlRVU1CUVVnQlVFRWFpRUZEQUVMQUFzQUN5QUFLQUlBSWdvb0FnQW9BZ0FnQ1U4TkFBc2dBeUFLTmdJQUlBQWdCRFlDQUNBSVFRRnFJUWdMSUFBZ0EwRUVhaUlHU3dSQUEzOGdCU2dDQUNnQ0FDZ0NBQ0VKQTBBZ0JpSUVRUVJxSVFZZ0JDZ0NBQ0lLS0FJQUtBSUFJQWxKRFFBTEEwQWdBRUVFYXlJQUtBSUFJZ3NvQWdBb0FnQWdDVThOQUFzZ0FDQUVTUVIvSUFRRklBUWdDellDQUNBQUlBbzJBZ0FnQUNBRklBUWdCVVliSVFVZ0NFRUJhaUVJREFFTEN5RUdDd0pBSUFVZ0JrWU5BQ0FGS0FJQUlnQW9BZ0FvQWdBZ0JpZ0NBQ0lFS0FJQUtBSUFUdzBBSUFZZ0FEWUNBQ0FGSUFRMkFnQWdDRUVCYWlFSUN5QUlSUVJBSUFNZ0JoQ2dGeUVGSUFaQkJHb2lBQ0FCRUtBWEJFQWdCaUVCSUFNaEFDQUZSUTBIREFRTFFRSWdCUTBDR2dzZ0JpQURheUFCSUFaclNBUkFJQU1nQmlBQ0VKVU9JQVpCQkdvaEFBd0ZDeUFHUVFScUlBRWdBaENWRGlBR0lRRWdBeUVBREFVTElBVWdCeUlFUmcwQkEzOGdBeWdDQUNnQ0FDZ0NBQ0VHQTBBZ0JTSUFRUVJxSVFVZ0JpQUFLQUlBSWdnb0FnQW9BZ0JQRFFBTEEwQWdCaUFFUVFScklnUW9BZ0FpQ1NnQ0FDZ0NBRWtOQUFzZ0FDQUVUd1IvUVFRRklBQWdDVFlDQUNBRUlBZzJBZ0FNQVFzTEN5RUVJQUFoQXlBRVFRSnJEZ01DQUFFQUN3c0xDd3N1QUNBQVFnQTNBZ1FnQUNBQ05nSVlJQUFnQVRZQ0ZDQUFRb0NBZ0lEUUFUY0NEQ0FBUWZpYUV6WUNBQ0FBQ3ljQUlBQW9BaFFnQUNnQ0dDQUJRUVowSUFGQkFuWnFha0hIaktLT0Jtc2dBWE1nQWhETkJBc1ZBQ0FBUVlpdUV6WUNBQ0FBUVN4cUVMc0dJQUFMUmdFQmZ5QUJLQUlFSVFJZ0FTZ0NBQ0VCQTM4Z0FTQUNSZ1IvSUFBRklBRW9BZ0FnQUVFR2RDQUFRUUoyYW1wQng0eWlqZ1pySUFCeklRQWdBVUVFYWlFQkRBRUxDd3NkQUNBQUlBRkIrUC8vL3dkQkFrSC8vLy8vQVVHQWdJQ0FBaERZQ1FzdkFDQUFLQUlBSWdCQkFDQUJLQUlBSWdFYlJRUkFRWU90QVVITnJRTkJPa0hjOFFnUUFBQUxJQUFnQVJDK0J3c2NBQ0FBSUFFb0FnQTJBZ0FnQUVFRWFpQUJRUVJxRUxrSEdpQUFDeUFBUWNBQUVCVWdBQ2dDQUNBQktBSUFJQUlvQWdBZ0F5Z0NBQ0FFRUtzT0M0b0JBUUovSUFBb0FnUWdBQ2dDQ0VrRVFDQUFJQUFvQWdRZ0FSQ2xBa0VNYWpZQ0JBOExJd0JCSUdzaUF5UUFJQU5CQ0dvZ0FDQUFLQUlFSUFBb0FnQnJRUXh0UVFGcUVKb1BJQUFvQWdRZ0FDZ0NBR3RCREcwZ0FFRUlhaENaRHlJQ0tBSUlJQUVRcFFJYUlBSWdBaWdDQ0VFTWFqWUNDQ0FBSUFJUStSZ2dBaEQ0R0NBRFFTQnFKQUFML3dnQ0RYOENmU01BUVNCcklna2tBQ0FKSUFFMkFoQWdDVUVRYWlFRkl3QkJFR3NpQnlRQUlBRVF2aGNoQ0NBSkFuOENRQ0FBS0FJRUlnSkZEUUFnQUNnQ0FBSi9JQUpCQVdzZ0NIRWdBbWtpQmtFQlRRMEFHaUFJSUFJZ0NFc05BQm9nQ0NBQ2NBc2lBMEVDZEdvb0FnQWlCRVVOQUNBQ1FRRnJJUW9nQmtFQlN5RUxBMEFnQkNnQ0FDSUVSUTBCSUFnZ0JDZ0NCQ0lHUndSQUFrQWdDMFVFUUNBR0lBcHhJUVlNQVFzZ0FpQUdTdzBBSUFZZ0FuQWhCZ3NnQXlBR1J3MENDeUFFUVFocUlBRVFtdzVGRFFBTFFRQU1BUXNnQnlBQUlBZ2dCUkRpQ0FKQVFRQWdBaUFBS0FJTVFRRnFzeUlQSUFBcUFoQWlFQ0FDczVSZUd3MEFBa0FDZjBFQ0lBSWdBa0VCYTNGQkFFY2dBa0VEU1hJZ0FrRUJkSElpQVFKL0lBOGdFSldOSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRElBRWdBMHNiSWdGQkFVWU5BQm9nQVNBQklBRkJBV3R4UlEwQUdpQUJFSDhMSWdVZ0FDZ0NCQ0lCVFFSQUlBRWdCVTBOQVNBQlFRTkpJUUlDZnlBQUtBSU1zeUFBS2dJUWxZMGlEME1BQUlCUFhTQVBRd0FBQUFCZ2NRUkFJQStwREFFTFFRQUxJUU1nQVNBRklBSWdBV2xCQVV0eUJIOGdBeEIvQlNBRFFRRkJJQ0FEUVFGcloydDBJQU5CQWtrYkN5SURJQU1nQlVrYklnVk5EUUVMUVFBaEFRSkFJQVVFUUNBQUlBVVFsd01RYkNBQUlBVTJBZ1FEUUNBQklBVkdCRUFnQUNnQ0NDSUNSUTBESUFCQkNHb2hBU0FDS0FJRUlRUUNRQ0FGYVNJRFFRRk5CRUFnQkNBRlFRRnJjU0VFREFFTElBUWdCVWtOQUNBRUlBVndJUVFMSUFBb0FnQWdCRUVDZEdvZ0FUWUNBQ0FGUVFGcklRc2dBMEVCU3lFTUEwQWdBaWdDQUNJRFJRMEVJQU1vQWdRaEFRSkFJQXhGQkVBZ0FTQUxjU0VCREFFTElBRWdCVWtOQUNBQklBVndJUUVMSUFFZ0JFY0VRQ0FCUVFKMElnb2dBQ2dDQUdvaUJpZ0NBQVJBSUFOQkNHb2hEU0FESVFFRFFBSkFJQUVpQmlnQ0FDSUJSUVJBUVFBaEFRd0JDeUFOSUFGQkNHb1FtdzRoRGlBR0tBSUFJUUVnRGcwQkN3c2dBaUFCTmdJQUlBWWdBQ2dDQUNBS2FpZ0NBQ2dDQURZQ0FDQUFLQUlBSUFwcUtBSUFJQU0yQWdBTUFnc2dCaUFDTmdJQUlBRWhCQXNnQXlFQ0RBQUxBQVVnQUNnQ0FDQUJRUUowYWtFQU5nSUFJQUZCQVdvaEFRd0JDd0FMQUFzZ0FFRUFFR3dnQUVFQU5nSUVDd3NnQUNnQ0JDSUNJQUpCQVd0eFJRUkFJQUpCQVdzZ0NIRWhBd3dCQ3lBQ0lBaExCRUFnQ0NFRERBRUxJQWdnQW5BaEF3c0NRQ0FEUVFKMElnTWdBQ2dDQUdvb0FnQWlBVVVFUUNBSEtBSUFJQUFvQWdnMkFnQWdBQ0FIS0FJQU5nSUlJQUFvQWdBZ0Eyb2dBRUVJYWpZQ0FDQUhLQUlBSWdFb0FnQWlBMFVOQVNBREtBSUVJUVFDUUNBQ0lBSkJBV3NpQTNGRkJFQWdBeUFFY1NFRURBRUxJQUlnQkVzTkFDQUVJQUp3SVFRTElBQW9BZ0FnQkVFQ2RHb2dBVFlDQUF3QkN5QUhLQUlBSUFFb0FnQTJBZ0FnQVNBSEtBSUFOZ0lBQ3lBSEtBSUFJUVFnQjBFQU5nSUFJQUFnQUNnQ0RFRUJhallDRENBSEVJc0JRUUVMT2dBY0lBa2dCRFlDR0NBSFFSQnFKQUFnQ1NnQ0dDRUFJQWxCSUdva0FDQUFRUXhxQzJzQkJIOGpBRUVRYXlJQ0pBQWdBRUdrQVdvaEJDQUFRYWdCYWlFQUEwQUNRQ0FFSUFBb0FnQWlBRWNFUUNBQ0lBQVE4QmNRdndZZ0FpQUJJQUVRMGdnUW14TWhCU0FDRUE4YUlBVU5BU0FBRUdBaEF3c2dBa0VRYWlRQUlBTVBDeUFBUVFScUlRQU1BQXNBQzQ0RUFRaC9JQUJCR0dvZ0FSQ1FCQ0FBUWR3QWFpQUJFSkFFSUFCQm9BRnFJQUVRa0FRZ0FDZ0M1QUVpQWdSQUlBSWdBUkN4RGdzZ0FDZ0M2QUVpQWdSQUlBSWdBUkN4RGdzZ0FFSHNBV29nQVJDUUJDQUFRYkFDYWlBQkVKQUVJQUJCOUFKcUlBRVFrQVFnQUVHNEEyb2dBUkNRQkNBQVFmd0RhaUFCRUpBRUlBQkJ3QVJxSUFFUWtBUWdBRUdFQldvZ0FSQ1FCQ0FBUWNnRmFpQUJFSkFFSUFBb0FwQUdJUWdnQUNnQ2pBWWhBQU5BSUFBZ0NFY0VRQ0FBS0FJQUlRTWpBRUVnYXlJR0pBQWdCaUFCTmdJTUlBWkI4UE1TTmdJSUlBWWdCa0VJYWlJRU5nSVlBa0FnQXlnQ0FDSUNCRUFnQWlBRVFRRVEvZ0pGRFFFTElBTW9BZ2doQlNBREtBSUVJUUlEUUNBQ0lBVkhCRUFnQWlnQ0FDRUhJQUpCQkdvaEFpQUhJQVJCQVJEK0FnMEJEQUlMQ3dKQUlBTW9BaGdpQWkwQURDQUNSWElOQUNBRFFSQnFFUE1LSVFJRFFDQUNSUTBCSUFJb0FnUWlCUzBBRENFSElBSWdCRUVCRVA0Q0lRbEJBQ0FGSUFjYklRSWdDUTBBQ3d3QkN5QURLQUpZSVFVZ0F5Z0NWQ0VDQTBBZ0FpQUZSd1JBSUFJb0FnQWhCeUFDUVFScUlRSWdCeUFFUVFFUXVoa05BUXdDQ3dzZ0F5Z0NZQ0lDQkVBZ0FpQUVRUUVRL2dKRkRRRUxJQU1vQW1naEJTQURLQUprSVFJRFFDQUNJQVZHRFFFZ0FpZ0NBQ0VESUFKQkJHb2hBaUFESUFSQkFSRCtBZzBBQ3dzZ0JCQVdJQVpCSUdva0FDQUFRUVJxSVFBTUFRc0xDeEVBSUFCQktHb1FUeUFBUVJ4cUVESWFDeElBSUFCQnVBVkJ5Zm9EUVh4QkF4REtBUXZGQWdFR2Z5TUFRU0JySWdVa0FBSkFJQUFvQWdnaUFpQUFLQUlNUndSQUlBSWhBd3dCQ3lBQUtBSUVJZ01nQUNnQ0FDSUVTd1JBSUFJZ0Eyc2hCaUFESUFNZ0JHdEJBblZCQVdwQmZtMUJBblFpQjJvaEJDQUNJQU5IQkVBZ0JDQURJQVlRNXdFYUlBQW9BZ1FoQWdzZ0FDQUVJQVpxSWdNMkFnZ2dBQ0FDSUFkcU5nSUVEQUVMSUFWQkNHcEJBU0FDSUFSclFRRjFJQUlnQkVZYklnSWdBa0VDZGlBQVFReHFFS2NDSWdJZ0FDZ0NCQ0FBS0FJSUVLOEdJQUFvQWdBaEF5QUFJQUlvQWdBMkFnQWdBaUFETmdJQUlBQW9BZ1FoQXlBQUlBSW9BZ1EyQWdRZ0FpQUROZ0lFSUFBb0FnZ2hBeUFBSUFJb0FnZzJBZ2dnQWlBRE5nSUlJQUFvQWd3aEF5QUFJQUlvQWd3MkFnd2dBaUFETmdJTUlBSVFtZ01nQUNnQ0NDRURDeUFESUFFb0FnQTJBZ0FnQUNBQUtBSUlRUVJxTmdJSUlBVkJJR29rQUFzSkFDQUFRUlVRa3hNTEd3QWdBQ0FCUWNELy8vOEhRUVZCLy8vL0gwR0FnSUFnRU5nSkN6b0JBWDhnQUNBQktRSUFOd0k0SUFBb0FqQWhBaUFBS0FJc0lRQURRQ0FBSUFKSEJFQWdBQ0FCS1FJQU53STRJQUJCUUdzaEFBd0JDd3NMVkFFQmYwSC8vLzgvSVFFQ1FDQUFLQUlVUVF4SERRQWdBQ2dDRUJEVkNpZ0NNRVVOQUNBQVFRQVFPQ0FBS0FJUUVOVUtLQUl3UncwQVFmLy8vejhnQUVFQkVEZ2lBQ0FBUWYvLy96OVBHeUVCQ3lBQkM1WUJBUUovSXdCQk1Hc2lBaVFBQWtBZ0FDMEFHUVJBSUFGRkRRRWdBQzBBR0NFRElBSkJBVFlDRkNBQ0lBRTJBZ3dnQWlBQ1FReHFOZ0lRSUFJZ0Fpa0RFRGNEQUNBQ1FSaHFJQUlRcXdFaEFTQUFLQUlnSUFOQkhHeHFRUVJxSUFFUXZnNGdBUkJ0R2lBQ1FUQnFKQUFQQzBISnZBVkI1N0FEUWI0RlFhaUJCUkFBQUF0Qm5KSUhRZWV3QTBIREJVR29nUVVRQUFBTERnQWdBQkNvRGtIbkFHdEJBa2tMc1FZQkJuOGpBRUVnYXlJSEpBQWdBRUlBTndJRUlBQWdBallDRkNBQUlBRTJBaEFnQUVFQU9nQU1JQUFnQkVFQVJ6b0FHU0FBSUFOQkFFYzZBQmdnQUVIMDRCSTJBZ0FnQVJDOUJ5RUJJQUJDQURjQ0lDQUFJQUUyQWh3Z0FFSUFOd0lvSUFCQ0FEY0NNQ0FBUWdBM0FqZ2dBRUVnYWlJR0lBQXRBQmtnQUMwQUdDQUZLQUlFSUFVb0FnQnJRUnh0YW1vUXJRNGdBQzBBR0FSQUlBZEJBallDSENBSFFRRTJBaFFnQnlBRE5nSU1JQWNnQjBFTWFqWUNFQ0FHSUFkQkhHb2dCMEVRYWhENkZ3c2dBQzBBR1FSQUlBZEJBellDSENBSFFRRTJBaFFnQnlBRU5nSU1JQWNnQjBFTWFqWUNFQ0FHSUFkQkhHb2dCMEVRYWhENkZ3c2dBQ2dDSkNFRElBVW9BZ0FoQWlBRktBSUVJUVVqQUVFZ2F5SUxKQUFnQlNBQ2F5SUJRUnh0SVFnZ0JpZ0NBQ0lKSUFNZ0NXdEJIRzFCSEd4cUlRUUNRQ0FCUVFCTURRQWdCaWdDQ0NBR0tBSUVJZ3ByUVJ4dElBaE9CRUFDUUNBS0lBUnJJZ0ZCSEcwaUNTQUlUZ1JBSUFVaEF3d0JDeUFHSUFJZ0NVRWNiR29pQXlBRklBZ2dDV3NRekFnZ0FVRUFUQTBDQ3lBR0lnVW9BZ1FpQ1NFR0lBUWdDU0FFSUFoQkhHeHFhMEVjYlVFY2JHb2lBU0VJQTBBZ0NDQUtUd1JBSUFVZ0JqWUNCQU5BSUFFZ0JFY0VRQ0FKUVJ4cklna2lCU0FCUVJ4cklnRW9BZ0EyQWdBZ0JVRUVhaUFCUVFScUVMNE9EQUVMQ3dVZ0JpQUlFTVVJUVJ4cUlRWWdDRUVjYWlFSURBRUxDeUFDSUFNZ0JCRGRGeG9NQVFzZ0MwRUlhaUFHSUFvZ0NXdEJIRzBnQ0dvUXlBZ2dCQ0FHS0FJQWEwRWNiU0FHUVFocUVNY0lJZ0VvQWdnaUNpQUZJQUpyUVJ4dFFSeHNhaUVEQTBBZ0F5QUtSd1JBSUFvZ0FoQ0lHRUVjYWlFS0lBSkJIR29oQWd3QkN3c2dBU0FETmdJSUlBRW9BZ1FhSUFZb0FnQWdCQ0FCUVFScUVQRVhJQVlvQWdRaEFnTkFJQUlnQkVjRVFDQUJLQUlJSUFRUXhRZ2FJQUVnQVNnQ0NFRWNhallDQ0NBRVFSeHFJUVFNQVFzTElBWW9BZ0FoQWlBR0lBRW9BZ1EyQWdBZ0FTQUNOZ0lFSUFZb0FnUWhBaUFHSUFFb0FnZzJBZ1FnQVNBQ05nSUlJQVlvQWdnaEFpQUdJQUVvQWd3MkFnZ2dBU0FDTmdJTUlBRWdBU2dDQkRZQ0FDQUJFTVlJQ3lBTFFTQnFKQUFnQjBFZ2FpUUFJQUFMSHdFQmYwRUJJUUVnQUNnQ0ZFRUlSd1IvSUFBUXFBNUI1d0JHQlVFQkN3dGlBUUovSXdCQklHc2lBaVFBQWtBZ0FTQUFLQUlJSUFBb0FnQWlBMnRCSEcxTEJFQWdBVUhLcEpMSkFFOE5BU0FBSUFKQkNHb2dBU0FBS0FJRUlBTnJRUnh0SUFCQkNHb1F4d2dpQUJEY0NpQUFFTVlJQ3lBQ1FTQnFKQUFQQ3hBQkFBc2ZBQ0FCQkVBZ0FDQUJLQUlBRUs0T0lBQWdBU2dDQkJDdURpQUJFQjhMQ3g4QUlBRUVRQ0FBSUFFb0FnQVFydzRnQUNBQktBSUVFSzhPSUFFUUh3c0xHUUVCZnlBQktBSUFJUUlnQVVFQU5nSUFJQUFnQWhEWUNBcytBUUYvSXdCQklHc2lBaVFBSUFJZ0FUWUNEQ0FDUWZEeUVqWUNDQ0FDSUFKQkNHb2lBVFlDR0NBQUlBRkJBUkQrQWhvZ0FSQVdJQUpCSUdva0FBdDBBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FEWUNBQ0FFSUFBb0FnUWlBRFlDQkNBRUlBQWdBMEVHZEdvMkFnZ2dCRUVFY2lFQUEwQWdBU0FDUndSQUlBQW9BZ0FnQVJEWENob2dBQ0FBS0FJQVFVQnJOZ0lBSUFGQlFHc2hBUXdCQ3dzZ0JDZ0NBQ0FFS0FJRU5nSUVJQVJCRUdva0FBdTRCZ0VIZnlBQkVFd2hCaUFCSUFBb0FnQkdCRUFnQUNBR05nSUFDeUFBSUFBb0FnaEJBV3MyQWdnZ0FDZ0NCQ0VBQW44Q1FDQUJJZ1FpQWlnQ0FDSURCRUFnQkNnQ0JFVU5BU0FFRUV3aUFpZ0NBQ0lERFFFTElBSW9BZ1FpQXcwQVFRQWhBMEVCREFFTElBTWdBaWdDQ0RZQ0NFRUFDeUVIQWtBZ0FpQUNLQUlJSWdVb0FnQWlBVVlFUUNBRklBTTJBZ0FnQUNBQ1JnUkFRUUFoQVNBRElRQU1BZ3NnQlNnQ0JDRUJEQUVMSUFVZ0F6WUNCQXNnQWkwQURFVWhDQ0FDSUFSSEJFQWdBaUFFS0FJSUlnVTJBZ2dnQlNBRUtBSUlLQUlBSUFSSFFRSjBhaUFDTmdJQUlBSWdCQ2dDQUNJRk5nSUFJQVVnQWpZQ0NDQUNJQVFvQWdRaUJUWUNCQ0FGQkVBZ0JTQUNOZ0lJQ3lBQ0lBUXRBQXc2QUF3Z0FpQUFJQUFnQkVZYklRQUxJQWdnQUVWeVJRUkFBa0FnQndSQUEwQWdBUzBBRENFQ0FrQWdBU0FCS0FJSUlnTW9BZ0JIQkVBZ0FrVUVRQ0FCUVFFNkFBd2dBMEVBT2dBTUlBTVF5Z2dnQVNBQUlBQWdBU2dDQUNJQlJoc2hBQ0FCS0FJRUlRRUxBa0FDUUFKQUFrQWdBU2dDQUNJREJFQWdBeTBBREVVTkFRc2dBU2dDQkNJQ0JFQWdBaTBBREVVTkFnc2dBVUVBT2dBTUFrQWdBQ0FCS0FJSUlnRkdCRUFnQUNFQkRBRUxJQUV0QUF3TkJnc2dBVUVCT2dBTURBZ0xJQUVvQWdRaUFrVU5BUXNnQWkwQURFVU5BUXNnQTBFQk9nQU1JQUZCQURvQURDQUJFTWtJSUFFb0FnZ2lBU2dDQkNFQ0N5QUJJQUVvQWdnaUFDMEFERG9BRENBQVFRRTZBQXdnQWtFQk9nQU1JQUFReWdnTUJBc2dBa1VFUUNBQlFRRTZBQXdnQTBFQU9nQU1JQU1ReVFnZ0FTQUFJQUFnQVNnQ0JDSUJSaHNoQUNBQktBSUFJUUVMQWtBZ0FTZ0NBQ0lDQkVBZ0FpMEFERVVOQVFzQ1FDQUJLQUlFSWdNRVFDQURMUUFNUlEwQkN5QUJRUUE2QUF3Z0FTZ0NDQ0lCTFFBTVFRQWdBQ0FCUnhzTkFpQUJRUUU2QUF3TUJRc2dBZ1IvSUFJdEFBeEZEUUVnQVNnQ0JBVWdBd3RCQVRvQURDQUJRUUE2QUF3Z0FSREtDQ0FCS0FJSUlnRW9BZ0FoQWdzZ0FTQUJLQUlJSWdBdEFBdzZBQXdnQUVFQk9nQU1JQUpCQVRvQURDQUFFTWtJREFNTElBRW9BZ2dpQXlBREtBSUFJQUZHUVFKMGFpZ0NBQ0VCREFBTEFBc2dBMEVCT2dBTUN3c2dCQkFmSUFZTDVnTUJDWDhqQUVFZ2F5SURKQUFnQXlBQk5nSWNJQUJCSUdvaUFpQURRUnhxRUlZRklnZ29BZ1FpQVNBSUtBSUFSd1JBSUFBZ0F5Z0NIQkRwRnlBQ0lBTkJIR29RaGdVaUNDZ0NBQ0VCQ3lBSUlBRTJBZ1FnQUVFVWFpRUpRUUFoQVFKQUEwQWdBeWdDSENJQ0tBSWtJQUlvQWlCclFSeHRJQUZMQkVBZ0FpQUJFTDhPS0FJQUlnSkJCVXRCQVNBQ2RFRTJjVVZ5UlFSQUlBTWdBeWdDSENBQkVKRUVJZ0kyQWhnZ0FDQUNFSlFCSWdKRkRRTWdBeUFDTmdJUUlBTWdBeWdDSERZQ0ZDTUFRUkJySWdZa0FDTUFRUkJySWdRa0FDQURRUkJxSVFvZ0NVRUVhaUVGQWtBZ0NTZ0NCQ0lIUlFSQUlBVWhBZ3dCQ3dOQUlBb2dCeUlDUVJCcUlnY1EyUW9FUUNBQ0lRVWdBaWdDQUNJSERRRU1BZ3NnQnlBS0VOa0tSUTBCSUFKQkJHb2hCU0FDS0FJRUlnY05BQXNMSUFRZ0FqWUNEQ0FHSUFVb0FnQWlBZ1IvUVFBRlFSZ1FGU0VDSUFRZ0NVRUVhallDQkNBQ0lBTXBBaEEzQWhBZ0JFRUJPZ0FJSUFrZ0JDZ0NEQ0FGSUFJUStBSWdCRUVBTmdJQUlBUVFpd0ZCQVFzNkFBd2dCaUFDTmdJSUlBUkJFR29rQUNBRElBWW9BZ2cyQWdnZ0F5QUdMUUFNT2dBTUlBWkJFR29rQUNBSUlBTkJHR29RM2dJTElBRkJBV29oQVF3QkN3c2dBMEVnYWlRQUR3dEJ4cmdKUWRhakFrRTRRZS9sQXhBQUFBdkRCUUlJZndKOUl3QkJJR3NpQnlRQUlBY2dBVFlDRUNNQVFSQnJJZ1FrQUNBQktBSUFJUUVnQndKL0FrQWdBQ2dDQkNJQ1JRMEFJQUFvQWdBQ2Z5QUNRUUZySUFGeElBSnBJZ1pCQVUwTkFCb2dBU0FCSUFKSkRRQWFJQUVnQW5BTElnVkJBblJxS0FJQUlnTkZEUUFnQWtFQmF5RUlJQVpCQVVzaENRTkFJQU1vQWdBaUEwVU5BU0FCSUFNb0FnUWlCa2NFUUFKQUlBbEZCRUFnQmlBSWNTRUdEQUVMSUFJZ0Jrc05BQ0FHSUFKd0lRWUxJQVVnQmtjTkFnc2dBeWdDQ0NBQlJ3MEFDMEVBREFFTFFUQVFGU0VESUFRZ0FFRUlhallDQkNBRUlBTTJBZ0FnQXlBSEtBSVFLQUlBTmdJSUlBTkJER3BCQUVFa0VIa2FJQVJCQVRvQUNDQURRUUEyQWdBZ0F5QUJOZ0lFQWtCQkFDQUNJQUFvQWd4QkFXcXpJZ29nQUNvQ0VDSUxJQUt6bEY0YkRRQWdBQ0FDSUFKQkFXdHhRUUJISUFKQkEwbHlJQUpCQVhSeUlnVUNmeUFLSUF1VmpTSUtRd0FBZ0U5ZElBcERBQUFBQUdCeEJFQWdDcWtNQVF0QkFBc2lBaUFDSUFWSkd4RERBU0FBS0FJRUlnSWdBa0VCYTNGRkJFQWdBa0VCYXlBQmNTRUZEQUVMSUFFZ0Fra0VRQ0FCSVFVTUFRc2dBU0FDY0NFRkN3SkFJQVZCQW5RaUJTQUFLQUlBYWlnQ0FDSUJSUVJBSUFRb0FnQWdBQ2dDQ0RZQ0FDQUFJQVFvQWdBMkFnZ2dBQ2dDQUNBRmFpQUFRUWhxTmdJQUlBUW9BZ0FpQVNnQ0FDSUZSUTBCSUFVb0FnUWhBd0pBSUFJZ0FrRUJheUlGY1VVRVFDQURJQVZ4SVFNTUFRc2dBaUFEU3cwQUlBTWdBbkFoQXdzZ0FDZ0NBQ0FEUVFKMGFpQUJOZ0lBREFFTElBUW9BZ0FnQVNnQ0FEWUNBQ0FCSUFRb0FnQTJBZ0FMSUFRb0FnQWhBeUFFUVFBMkFnQWdBQ0FBS0FJTVFRRnFOZ0lNSUFRb0FnQWhBQ0FFUVFBMkFnQWdBQVJBSUFRdEFBZ0VRQ0FBUVF4cUVQd1lDeUFBQkVBZ0FCQWZDd3RCQVFzNkFCd2dCeUFETmdJWUlBUkJFR29rQUNBSEtBSVlJUUFnQjBFZ2FpUUFJQUJCREdvTFVBRUJmeU1BUVJCcklnUWtBQ0FFSUFJMkFnQWdCQ0FCTmdJSUlBQWdCQ2dDQ0NBRUtBSUFJQU1RelFjaUFFSHcrZzgyQWdRZ0FFR2srdzgyQWdBZ0FFR1ErdzgyQWdBZ0JFRVFhaVFBSUFBTENRQWdBQkQxRnhBZkMyb0JBMzhqQUVFZ2F5SURKQUFnQTBFSWFpQUFJQUFvQWdRZ0FDZ0NBR3RCQW5WQkFXb1Fvd2tnQUNnQ0JDQUFLQUlBYTBFQ2RTQUFRUWhxRUtjQ0lnSW9BZ2dpQkNBQktBSUFOZ0lBSUFJZ0JFRUVhallDQ0NBQUlBSVFvd1FnQWhDYUF5QURRU0JxSkFBTFpRRUZmeUFCSUFBb0FnUWlCaUFEYXlJSGFpRUVJQWRCQW5VaENDQUdJUVVEUUNBQ0lBUk5CRUFnQUNBRk5nSUVJQU1nQmtjRVFDQUdJQWhCQW5ScklBRWdCeERuQVJvTEJTQUZJQVFvQWdBMkFnQWdCVUVFYWlFRklBUkJCR29oQkF3QkN3c0xZUUVCZnlNQVFSQnJJZ1VrQUNBRklBSTJBZ2dnQlNBQk5nSU1JQVVnQkRZQ0JDQUZRUXhxSVFFZ0JVRUlhaUVDSUFWQkJHb2hCQ0FBS0FJUUlnQkZCRUFRYndBTElBQWdBU0FDSUFNZ0JDQUFLQUlBS0FJWUVRZ0FJQVZCRUdva0FBdjBBUUVDZndKQUlBQW9BZ1FpQVNBQktBSUFLQUlvRVFBQUlnRUVRQ0FCS0FJVUlnSkJ3UUJQRFFFQ2ZnSkFJQUFnQUNnQ0FDZ0NPQkVBQUNJQkJFQWdBa0VnU3cwQklBRVFoQml0RHd0Q0FDQUFJQUFvQWdBb0FsZ1JBQUFOQVJwQjA3RUpRYmFaQWtINEFFSGkxUU1RQUFBTElBRWdBU2dDQUNnQ1lCRUFBQ0lBS0FJRUlBQW9BZ0JyUVFoSEJFQkJ1SVVIUWRDcEEwR3dBVUhsMUFNUUFBQUxJQUVnQVNnQ0FDZ0NZQkVBQUNnQ0FEVUNCRUlnaGlBQklBRW9BZ0FvQW1BUkFBQW9BZ0ExQWdDRUN3OExRZmZIQVVHMm1RSkI3QUJCNHRVREVBQUFDMEhJOHdaQnRwa0NRZTRBUWVMVkF4QUFBQXVKQVFFQmZ3SkFBa0FnQUNnQ0JDSUJJQUVvQWdBb0FqQVJBQUJGRFFBZ0FDZ0NCQ0lCSUFFb0FnQW9BakFSQUFBb0FoUkJJRWNOQUNBQUlBQW9BZ0FvQWp3UkFBQWlBUVJBSUFFUWhnOFBDeUFBSUFBb0FnQW9BbGdSQUFCRkRRRkRBQUFBQUE4TFFiU0FCMEcybVFKQkcwSE8rUUFRQUFBTFFacXhDVUcybVFKQklFSE8rUUFRQUFBTE13RUJmeUFCUWNxa2tza0FUd1JBRUFFQUN5QUFJQUVRaVJnaUFqWUNBQ0FBSUFJMkFnUWdBQ0FDSUFGQkhHeHFOZ0lJQzh3QkFRVi9JQUJCRkdvaEF3SkFJQUVvQWhRaUFnUkFJQUZCQURZQ0ZDQURJQUlRalFVTUFRdEJBQ0VDSUFOQkFCQ05CU0FBS0FJSUlRUWdBU2dDQ0NFRklBQW9BZ1FoQmdOQUlBRW9BZ1FpQXlBQ1RTQUNJQVpQY2tVRVFDQUVJQUpCQW5RaUEyb2dBeUFGYWlnQ0FEWUNBQ0FDUVFGcUlRSU1BUXNMQWtBZ0FpQURUdzBBSUFFb0FnZ2hCQ0FBS0FJSUlRVURRQ0FDSUFOR0RRRWdCU0FDUVFKMElnWnFJQVFnQm1vb0FnQTJBZ0FnQWtFQmFpRUNEQUFMQUFzZ0FDQUROZ0lFQ3lBQlFRQTJBZ1FMREFBZ0FDQUJRWm9GRU1jU0N6Z0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3aUFFSGc0aEkyQWdBZ0FFRUVhaEJSSUFBUWd3RWFJQUZCRUdva0FDQUFDejhCQVg4akFFRVFheUlESkFBZ0F5QUFOZ0lNSUFNZ0FUWUNDQ0FESUFJMkFnUWdBeWdDRENJQUVMb1lJQUFnQXlnQ0JCQ2tHQ0FEUVJCcUpBQWdBQXYrQVFFRWZ5TUFRUkJySWdNa0FDQURJQUEyQWd3Z0F5QUJOZ0lJSUFNZ0FqWUNCQ0FES0FJTUlRRWdBeWdDQ0NFQ0lBTW9BZ1FoQkNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNBQ05nSUlJQUFnQkRZQ0JDQUFLQUlJSVFJZ0FDZ0NCQ0VFSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCSUFRMkFnZ2dBU2dDRENFRUlBRW9BZ2doQlNNQVFSQnJJZ0lrQUNBQ0lBUTJBZ3dnQWlBRk5nSUlJQUlvQWd3aUJTQUNLQUlJSWdZcEFnQTNBZ0FnQlNBR0tBSUlOZ0lJSUFJb0FnZ1FWU0FGRUs4RElBSkJFR29rQUNBRUlBRW9BZ2dpQWlnQ0REWUNEQ0FFSUFJdEFCQTZBQkFnQVVFUWFpUUFJQUJCRUdva0FDQURRUkJxSkFBTEtBRUJmeU1BUVJCcklnSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDZ0NBQ0FDS0FJSVFSUnNhZ3NsQVFGL0l3QkJFR3NpQWlBQU5nSU1JQUlnQVRZQ0NDQUNLQUlNS0FJQUlBSW9BZ2hxQzJZQkFuOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSWdBVFlDQ0NBQ0tBSU1JUUVnQWlnQ0NDRURJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFJQU0yQWdnZ0FDZ0NEQ0lCUVFocUlBQW9BZ2dRRWhvZ0FFRVFhaVFBSUFFaEFDQUNRUkJxSkFBZ0FBc29BUUYvSXdCQkVHc2lBaUFBTmdJTUlBSWdBVFlDQ0NBQ0tBSU1LQUlBSUFJb0FnaEJBM1JxQzNrQkEzOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUlBRW9BZ3dpQWtFQU5nSUFJQUpCQURZQ0JDQUJRUUEyQWdnakFFRVFheUlBSkFBZ0FDQUNRUWhxTmdJTUlBQWdBVUVJYWpZQ0NDQUFJQUUyQWdRZ0FDZ0NEQ0lESUFBb0FnZ1F6QTRnQXhDNUdDQUFRUkJxSkFBZ0FoQ3ZBeUFCUVJCcUpBQUxLZ0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RCRDZBaTBBQ3lFQUlBRkJFR29rQUNBQUN5b0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3UStnSW9BZ1FoQUNBQlFSQnFKQUFnQUF0RkFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJJQUVvQWd3MkFnZ2dBU0FCS0FJSUVJTUJOZ0lFSUFFZ0FTZ0NCRFlDQUNBQktBSUFJUUFnQVVFUWFpUUFJQUFMSXdFQmZ5TUFRUkJySWdFZ0FEWUNEQ0FCS0FJTUlnQkJBRFlDQUNBQVFRQTJBZ1FMSVFFQmZ5TUFRUkJySWdJZ0FEWUNEQ0FDSUFFMkFnZ2dBaWdDREVFQU5nSUFDeUlCQVg4akFFRVFheUlCSUFBMkFnd2dBU2dDRENJQUtBSUFJQUFvQWdRMkFnUUxVQUVCZnlNQVFSQnJJZ01rQUNBRElBQTJBZ3dnQXlBQk5nSUlJQU1nQWpZQ0JBSkFJQU1vQWdSRkJFQWdBeWdDREJvTUFRc2dBeWdDRENBREtBSUlJQU1vQWdRUTV3RWFDeUFEUVJCcUpBQUxnaHNCQzM4akFFR3dBV3NpQ1NRQUlBa2dBVFlDRkNBSklBQTJBZ2dnQ1NBSlFSUnFOZ0lNQWtBZ0FVVUVRQ0FKUVFocUVNc1lEQUVMSUFFb0FnUWlBa0g0Nnc5R0JFQWpBRUdnQVdzaUFpUUFJQUpCQ0dvaUF5QUFFSXdCSUFBZ0F5QUJLQUlrRUpJQklBSkJFR29pQkVHZTNRc1FEaG9nQUNBRElBRW9BaWdRa2dFZ0JFSDY2UVlRRGhvZ0F4Q1FBU0FDUWFBQmFpUUFEQUVMSUFKQnVQTVBSZ1JBSXdCQm9BRnJJZ0lrQUNBQ1FRaHFJZ01nQUJDTUFTQUFJQU1nQVJEVUJDQURFSkFCSUFKQkFEb0FCQ0FDSUFGQnhBQnFOZ0lBSUFBZ0FoQ01CU0FESUFBUWpBRWdBa0VRYWtHQ0NCQU9HaUFERUpBQklBSkJvQUZxSkFBTUFRc2dBa0c0N0E5R0JFQWpBRUdnQVdzaUFTUUFJQUZCQ0dvaUFpQUFFSXdCSUFGQkVHcEI0dWtHRUE0YUlBSVFrQUVnQVVHZ0FXb2tBQXdCQ3lBQ1FZQ0VFa1lFUUNNQVFhQUJheUlDSkFBZ0FrRUlhaUlESUFBUWpBRWdBa0VRYWlJRVFjbXhDaEFPR2lBQUlBTWdBU2dDSkJDU0FTQUVRZnJwQmhBT0dpQURFSkFCSUFKQm9BRnFKQUFNQVFzZ0FrSDQ3ZzlHQkVBZ0NVRVlhaUlDSUFBUWpBRWdBQ0FDSUFFb0FpUVEwaGdnQ1VFZ2FrSDY2UVlRRGhvZ0FoQ1FBUXdCQ3lBQ1FjQ0VFa1lFUUNNQVFhQUJheUlESkFBZ0EwRUlhaUlDSUFBUWpBRWdBQ0FDSUFFb0FpUVFrZ0VnQTBFUWFpSUVRZmZ3REJBT0dpQUFJQUlnQVNnQ0xCRE1HQ0FFUVovZEN4QU9HaUFBSUFJZ0FTZ0NLQkNTQVNBRVFmcnBCaEFPR2lBQ0VKQUJJQU5Cb0FGcUpBQU1BUXNnQWtHNDd3OUdCRUFqQUVHZ0FXc2lBU1FBSUFGQkNHb2lBaUFBRUl3QklBRkJFR3BCNmVrR0VBNGFJQUlRa0FFZ0FVR2dBV29rQUF3QkN5QUNRZmp2RDBZRVFDTUFRYUFCYXlJQkpBQWdBVUVJYWlJQ0lBQVFqQUVnQVVFUWFrSHo2UVlRRGhvZ0FoQ1FBU0FCUWFBQmFpUUFEQUVMSUFKQnVQQVBSZ1JBSXdCQndBRnJJZ0lrQUNBQ1FTaHFJQUFRakFFZ0FTZ0NPQVJBSUFKQkFEb0FKQ0FDSUFGQk5HbzJBaUFnQUNBQ1FTaHFJQUpCSUdvUSt3SWdBa0V3YWtIMzhBd1FEaG9MSUFKQk1Hb2lBMEhRL2dnUURob2dBQ0FDUVNocUlnUWdBU2dDSkJDU0FTQURRWnJ1REJBT0dpQUFJQVFnQVNnQ0tCRFVCQ0FFRUpBQklBRW9BaWdoQkNBQ1FRQTZBQndnQWlBRVFjUUFhallDR0NBQUlBSkJHR29RakFVRFFBSkFJQUVvQWl3aUFRUkFJQUVvQWdRaUJFRzQ4QTlHRFFFZ0FrRW9haUlESUFBUWpBRWdBa0V3YWtIUnR3b1FEaG9nQUNBRElBRkJBQ0FFUWJqekQwWWJJZ0VRMUFRZ0F4Q1FBU0FDUVFBNkFBd2dBaUFCUWNRQWFqWUNDQ0FBSUFKQkNHb1FqQVVMSUFKQktHb2lBU0FBRUl3QklBSkJNR3BCZ2dnUURob2dBUkNRQVNBQ1FjQUJhaVFBREFNTElBSkJLR29pQkNBQUVJd0JJQU5CeWY0SUVBNGFJQUFnQkNBQktBSWtFSklCSUFOQm11NE1FQTRhSUFBZ0JDQUJLQUlvRU5RRUlBUVFrQUVnQVNnQ0tDRUVJQUpCQURvQUZDQUNJQVJCeEFCcU5nSVFJQUFnQWtFUWFoQ01CUXdBQ3dBTElBSkI4SVFTUmdSQUl3QkJvQUZySWdJa0FDQUNRUWhxSWdNZ0FCQ01BU0FBSUFNZ0FTZ0NKQkNTQVNBQ1FSQnFJZ0JCMnBnSVFjdVlDQ0FCTFFBb0d4QU9HaUFBUWZycEJoQU9HaUFERUpBQklBSkJvQUZxSkFBTUFRc2dBa0g0OEE5R0JFQWpBRUhRQW1zaUFpUUFJQUpCdUFGcUlBQVFqQUVnQVNnQ05BUkFJQUpCQURvQXRBRWdBaUFCUVRCcU5nS3dBU0FBSUFKQnVBRnFJQUpCc0FGcUVQc0NJQUpCd0FGcVFmZndEQkFPR2dzZ0FrSEFBV29pQkVIcS93a1FEaG9nQUNBQ1FiZ0JhaUlESUFFb0FpUVExQVFnQXhDUUFTQUFFTTRZSUFFb0FpUWhBeUFDUVFBNkFLd0JJQUlnQTBIRUFHbzJBcWdCSUFBZ0FrR29BV29RenhnQ1FDQUJLQUlvSWdORkRRQWdBeWdDU0VVTkFDQUNRUkJxSWdNZ0FCQ01BU0FERUpBQklBSkJ1QUZxSUFBUWpBRWdBa0hBQVdvaUEwR1hxZ29RRGhvZ0FTZ0NLQ0lGS0FKa0JFQWdBa0VBT2dBTUlBSWdCVUhnQUdvMkFnZ2dBQ0FDUWJnQmFpQUNRUWhxRVBzQ0lBTkI5L0FNRUE0YUN5QURRWWdJRUE0YUlBSkJ1QUZxSWdVUWtBRWdBU2dDS0NFQklBSkJBRG9BQkNBQ0lBRkJ4QUJxTmdJQUlBQWdBaENNQlNBRklBQVFqQUVnQTBHQ0NCQU9HaUFGRUpBQkN5QUFFTTBZSUFKQnVBRnFJZ0VnQUJDTUFTQUVRWUlJRUE0YUlBRVFrQUVnQWtIUUFtb2tBQXdCQ3lBQ1FkaUVFa1lFUUNNQVFiQUNheUlDSkFBZ0FrR2dBbW9RMUE0aEJTQUJLQUlrSWdNRVFDQUFLQUtFQXlFRUlBQWdCVFlDaEFNZ0FDQURFTThPSUFBZ0JEWUNoQU1MSUFKQmtBSnFFTlFPSVFjZ0FTZ0NMQ0lEQkVBZ0FDZ0NoQU1oQkNBQUlBYzJBb1FESUFBZ0F4RFBEaUFBSUFRMkFvUURDeUFDUWZnQWFpQUFFSXdCSUFFb0Fqd0VRQ0FDUVFBNkFIUWdBaUFCUVRocU5nSndJQUFnQWtINEFHb2dBa0h3QUdvUSt3SWdBa0dBQVdwQjkvQU1FQTRhQ3lBQ1FZQUJhaUlEUWJQVUFSQU9HaUFDUWVnQWFpQUNRZmdBYWhEZkdDRU1Ba0FDUUFKQUlBVW9BZ2dnQlNnQ0JDSUdhMEVFZFNJRURnSUNBUUFMUVFFZ0JDQUVRUUZOR3lFSUlBQW9Bb1FESVFwQkFTRUVBMEFnQkNBSVJnUkFJQUpCS0dvaUJDQUZFTkVPSUFKQjJBQnFJZ1lnQkNBQ1FUaHFRZHY0REJBVUlnZ1E3Z29nQXlBR0VCSWFJQVlRRHhvZ0NCQVBHaUFFRUE4YURBTUZJQVlnQkVFRWRHb2lDeUFMS0FJQUlBb29BZ0JxTmdJQUlBUkJBV29oQkF3QkN3QUxBQXNnQWtIWUFHb2lCQ0FDUWNnQWFpQUdRUVJxRUZRaUJpQUNRVGhxUWZycEJoQVVJZ2dRN2dvZ0F5QUVFQklhSUFRUUR4b2dDQkFQR2lBR0VBOGFDeUFEUWJ2ZEN4QU9HaUFCS0FJb0lnUUVRQ0FBSUFKQitBQnFJQVFRa2dFTElBTkJ1OTBMRUE0YUFrQUNRQUpBSUFjb0FnZ2dCeWdDQkNJR2EwRUVkU0lFRGdJQ0FRQUxRUUVnQkNBRVFRRk5HeUVJSUFBb0FvUURJUXBCQVNFRUEwQWdCQ0FJUmdSQUlBSkJDR29pQkNBSEVORU9JQUpCMkFCcUlnWWdCQ0FDUVRocVFkdjREQkFVSWdnUTdnb2dBeUFHRUJJYUlBWVFEeG9nQ0JBUEdpQUVFQThhREFNRklBWWdCRUVFZEdvaUN5QUxLQUlBSUFvb0FnQnFOZ0lBSUFSQkFXb2hCQXdCQ3dBTEFBc2dBa0hZQUdvaUJDQUNRUmhxSUFaQkJHb1FWQ0lHSUFKQk9HcEIrdWtHRUJRaUNCRHVDaUFESUFRUUVob2dCQkFQR2lBSUVBOGFJQVlRRHhvTElBd1EzaGdnQTBIMzhBd1FEaG9nQUNBQ1FmZ0FhaUlESUFFb0FqQVExQVFnQXhDUUFTQUJLQUl3SVFFZ0FrRUFPZ0FFSUFJZ0FVSEVBR28yQWdBZ0FDQUNFSXdGSUFNZ0FCQ01BU0FDUVlBQmFrR0NDQkFPR2lBREVKQUJJQWNRMHc0Z0JSRFREaUFDUWJBQ2FpUUFEQUVMSUFKQmlJVVNSZ1JBSXdCQnNBRnJJZ0lrQUNBQ1FSaHFJQUFRakFFZ0FTZ0NOQVJBSUFKQkFEb0FGQ0FDSUFGQk1HbzJBaEFnQUNBQ1FSaHFJQUpCRUdvUSt3SWdBa0VnYWtIMzhBd1FEaG9MSUFKQklHb2lCRUd1dGdRUURob2dBa0VJYWlBQ1FSaHFJZ01RM3hnaEJTQUFJQU1nQVNnQ0pCQ1NBU0FGRU40WUlBUkI5L0FNRUE0YUlBQWdBeUFCS0FJb0VOUUVJQU1Ra0FFZ0FTZ0NLQ0VCSUFKQkFEb0FCQ0FDSUFGQnhBQnFOZ0lBSUFBZ0FoQ01CU0FESUFBUWpBRWdCRUdDQ0JBT0dpQURFSkFCSUFKQnNBRnFKQUFNQVFzZ0FrRzQ4UTlHQkVBakFFR2dBV3NpQWlRQUlBSkJDR29nQUJDTUFTQUNRUkJxSWdOQjg4SUNFQTRhSUFFb0FpUUVRQ0FEUWZmd0RCQU9HaUFBSUFKQkNHb2dBU2dDSkJDU0FRc2dBMEg2NlFZUURob2dBa0VJYWhDUUFTQUNRYUFCYWlRQURBRUxJQUpCd1BZUFJnUkFJQUFnQVJEV0dBd0JDeUFDUWZqeEQwWUVRQ01BUWJBQmF5SURKQUFnQTBFWWFpQUFFSXdCSUFFb0Frd0VRQ0FEUVFBNkFCUWdBeUFCUWNnQWFqWUNFQ0FBSUFOQkdHb2dBMEVRYWhEN0FpQURRU0JxUWZmd0RCQU9HZ3NnQTBFZ2FpSUNRYno0Q0JBT0dpQUFJQU5CR0dvZ0FTZ0NKQkNTQVNBQ1FacnVEQkFPR2lBQktBSmNCRUFnQTBFQU9nQU1JQU1nQVVIWUFHbzJBZ2dnQUNBRFFSaHFJQU5CQ0dvUSt3SWdBa0gzOEF3UURob0xJQUpCaUFnUURob2dBMEVZYWlJQ0VKQUJJQUlnQUJEZEdDRU1JQUVvQWpnaUJDQUJLQUk4UVFKMGFpRUlBMEFnQkNBSVJnUkFJQXdRM0JnZ0EwRVlhaUlCSUFBUWpBRWdBMEVnYWtHQ0NCQU9HaUFCRUpBQklBTkJzQUZxSkFBRklBUW9BZ0FoQnlNQVFhQUJheUlGSkFBQ1FBSkFJQWNvQWpoQkFVY05BQ0FIS0FJMElnSWdCeWdDT0VFQ2RHb2hCZ05BSUFZZ0FpSUJSd1JBSUFGQkJHb2hBaUFCS0FJQUtBSWtEUUVMQ3lBQklBWkdEUUFnQlVFSWFpSUJJQUFRakFFZ0JVRVFha0djNGdzUURob2dBQ0FCSUFjb0FrQVExQVFNQVFzZ0JVRUlhaUFBRUl3QklBVkJFR29pQWtIWnR3b1FEaG9nQnlnQ05DSUJJQWNvQWpoQkFuUnFJUXBCQVNFR0EwQWdBU0FLUmdSQUlBSkI3YlVNRUE0YUlBQWdCVUVJYWlJQklBY29Ba0FRMUFRTUFnc2dBU2dDQUNFTElBWkZCRUFnQWtIMDdRd1FEaG9MQWtBZ0N5Z0NKQ0lHUlFSQUlBSkJwZVFBRUE0YURBRUxJQUFnQlVFSWFpQUdFSklCQ3lBQlFRUnFJUUZCQUNFR0RBQUxBQXNnQVJDUUFTQUhLQUpBSVFFZ0JVRUFPZ0FFSUFVZ0FVSEVBR28yQWdBZ0FDQUZFSXdGSUFWQkNHb2lBU0FBRUl3QklBVkJFR3BCZ2dnUURob2dBUkNRQVNBRlFhQUJhaVFBSUFSQkJHb2hCQXdCQ3dzTUFRc2dBa0c0OGc5R0JFQWdDVUVZYWlJQ0lBQVFqQUVnQUNBQ0lBRW9BaVFRMXhnZ0FoQ1FBUXdCQ3lBSlFRaHFFTXNZQ3lBSlFiQUJhaVFBQ3lrQUlBQWdBU2dDQURZQ0FDQUFJQUVwQWdRM0FnUWdBQ0FCS0FJTU5nSU1JQUZCQkdvUVZTQUFDNjBCQVFaL0l3QkJrQUZySWdVa0FDQUZFRWtpQmtFSWFpRURJQUVvQWdnaEJ5QUJLQUlFSVFJRFFBSkFJQUlnQjBjRVFFRUFJUUVnQWlnQ0NDQUNMUUFQSWdRZ0JFRVlkRUVZZFVFQVNCdEZEUUVnQWtFRWFpRUVBMEFnQWlnQ0FDQUJUUVJBSUFNZ0JCQVNHZ3dEQlNBRFFmZndEQkFPR2lBQlFRRnFJUUVNQVFzQUN3QUxJQUFnQmtFTWFoQkNJQVlRVVNBRlFaQUJhaVFBRHdzZ0F4RGlBUm9nQWtFUWFpRUNEQUFMQUF0S0FRRi9JQUJCQURZQ0RDQUFJQU0yQWhBZ0FRUkFJQUVRMnhnaEJBc2dBQ0FFTmdJQUlBQWdCQ0FDUVFSMGFpSUNOZ0lJSUFBZ0JDQUJRUVIwYWpZQ0RDQUFJQUkyQWdRZ0FBdEpBUUovSUFCQkJHb2lBQ2dDQUFSQUlBQW9BZ0FoQWlBQUtBSUVJUUVEUUNBQklBSkhCRUFnQVVFTWF4QVBHaUFCUVJCcklRRU1BUXNMSUFBZ0FqWUNCQ0FBS0FJQUVCOExDeElBSUFCQ0FEY0NBQ0FBUWdBM0FnZ2dBQXNKQUNBQVFRRTZBQUFMTmdFQmZ5TUFRUkJySWdNa0FDQUNLQUlBRVB3Q0lRSWdBU2dDWkNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBZ0EwRVFhaVFBQ3drQUlBQkJEQkRERWdzZkFDQUJCRUFnQUNBQktBSUFFTmdPSUFBZ0FTZ0NCQkRZRGlBQkVCOExDeVVCQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUlReEFNTElBSVFId3NMTndFQmZ5QUFRYlRoRWpZQ0FBTkFJQUFvQWdnaUFTMEFEQ0FCUlhKRkJFQWdBQkR6Q2hEeUNnd0JDd3NnQUVFRWFoRGFDQm9nQUFzVUFDQUFRUWhxRUpJREdpQUFRUVJxRUlVREdnc25BQ0FCQkVBZ0FDQUJLQUlBRU53T0lBQWdBU2dDQkJEY0RpQUJRUlJxRVBFWUlBRVFId3NMSndBZ0FRUkFJQUFnQVNnQ0FCRGREaUFBSUFFb0FnUVEzUTRnQVVFY2FoQXlHaUFCRUI4TEN4TUFJQUFnQVVILy8vLy9BMEVDUVNBUXloSUxKd0FnQVFSQUlBQWdBU2dDQUJEZkRpQUFJQUVvQWdRUTN3NGdBVUVVYWhEeEdDQUJFQjhMQ3g4QUlBRUVRQ0FBSUFFb0FnQVE0QTRnQUNBQktBSUVFT0FPSUFFUUh3c0xId0FnQVFSQUlBQWdBU2dDQUJEaERpQUFJQUVvQWdRUTRRNGdBUkFmQ3dzZkFDQUJCRUFnQUNBQktBSUFFT0lPSUFBZ0FTZ0NCQkRpRGlBQkVCOExDeDhBSUFFRVFDQUFJQUVvQWdBUTR3NGdBQ0FCS0FJRUVPTU9JQUVRSHdzTEZBQWdBQ0FCUWYvLy8vOERRUUpCd0FBUXl4SUxNUUFnQUVHVTRSSTJBZ0FDUUNBQUxRQU1EUUFnQUNnQ0JFVU5BRUc3OEFoQjFiVURRWkVCUWR6bEF4QUFBQXNnQUFzV0FDQUFLQUlBQkVBZ0FCRDBDaUFBS0FJQUVCOExDekFCQW44Z0FDZ0NDQ0VCQTBBZ0FRUkFJQUVvQWdBaEFpQUJRUXhxRUU4Z0FSQWZJQUloQVF3QkN3c2dBQkMzQWd0ekFRTi9JQUFRVlFKQUEwQWdBU0FDUndSQUlBRW9BZ0FoQlVFQUlRUURRQ0FFUVFSSEJFQWdCU0FFUVFOMGRpSUdRZjhCY1VVTkJDQUFJQVpCR0hSQkdIVVFwQUVnQkVFQmFpRUVEQUVMQ3lBQlFRUnFJUUVNQVFzTElBTkZEUUJCNzdRSlFaV3JBMEhsQUVHbnZnTVFBQUFMQ3g4QUlBRUVRQ0FBSUFFb0FnQVE2UTRnQUNBQktBSUVFT2tPSUFFUUh3c0xId0FnQVFSQUlBQWdBU2dDQUJEcURpQUFJQUVvQWdRUTZnNGdBUkFmQ3d2K0FRSUVmd0YrSUFFZ0FDZ0NxQVZMQkVBZ0FDZ0NvQVVoQlVFWUlRSWdBQ0VESUFGQkdFOEVRRUYvSUFHdFFoeCtJZ2FuSUFaQ0lJaW5HeEFWSVFNZ0FTRUNDeUFBSUFNMkFxQUZJQUFnQWpZQ3FBVURRQ0FBS0FLa0JTQUVUUVJBSUFBZ0JSQTJCU0FFUVJ4c0lnTWdBQ2dDb0FWcUlnSWdBeUFGYWlJREtRSUFOd0lBSUFJZ0F5Z0NHRFlDR0NBQ0lBTXBBaEEzQWhBZ0FpQURLUUlJTndJSUlBUkJBV29oQkF3QkN3c0xJQUFvQXFRRklnUWdBU0FCSUFSSkd5RURBMEFnQXlBRVJnUkFJQUFnQVRZQ3BBVUZJQUFvQXFBRklBUkJIR3hxSWdKQ0FEY0NGQ0FDUVFBNkFCQWdBa0VBT2dBQUlBUkJBV29oQkF3QkN3c0xuZ0VCQlg4akFFRVFheUlGSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlFTmdJTUlBVWdCRFlDQ0NNQVFSQnJJZ1FrQUNBQVFZd0JhaUlHRVAwRklRY2dBaWdDQUNFQ0lBVW9BZ2doQ0NBQUtBSUlJUUFnQkNBRFFReHFOZ0lJSUFRZ0F5Z0NEQ0FEUnpvQURDQUdJQWNnQUNBSUlBRWdBaUFFUVFocUVQNEZJZ0FRS0NBR0lBWW9BaGhCQVdvMkFoZ2dCRUVRYWlRQUlBVkJFR29rQUNBQUMxQUJBWDhnQWdSQUlBRW9BaUFpQUNBQktBSWtRUUowYWlFREFrQURRQ0FBSUFOR0RRRWdBQ2dDQUNnQ0JFR1kvUkZIQkVBZ0FFRUVhaUVBREFFTEN5QUFJQUkyQWdBUEN5QUJJQUlRa0FVTEN5OEJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUJCQ0dvZ0FrRU1haERzQVNFQUlBSkJFR29rQUNBQVFRQkhDNHNJQVFsL0l3QkJ3QUZySWdVa0FFRURJUWNnQlVFRE5nSzhBU0FGUVFBMkFyZ0JJQUJCSUdvaEJDQUZRU0JxSVFvZ0FpZ0NCQ0VJSUFJb0FnQWhBZ0ovQTBBZ0FpQUlSd1JBQWtBZ0JRSi9JQUlvQWdBaUJpQUNLQUlFUmdSQUlBVkJDR3BCeHFvRlFmRU5RUWNnQlVHb0FXb1FIU0lHRUJjaENTQUtRWXpaQ0JBT0dpQUpFQmdnQmhBZUlBSW9BZ0FoQmdzQ1FBSkFBa0FDUUFKQUlBWW9BZ0FpQ1VFTmF3NEZBZ0VHQXdRQUN5QUpRUjVIRFFVZ0FpZ0NCQ0FHYTBFSVJ3UkFJQUJCQURvQWxBTWdBRUdvQkdwQm1lZ0VFQmtvQWdBTUNRc2dCU0FHTlFJRU53TUlJd0JCRUdzaUJpUUFJQVlnQkNBRlFRaHFFT2tGTmdJTUlBUWdCRUhZQW1vZ0JrRU1haENNR1NFSklBWkJFR29rQUNBQ0lBTWdDUkR0RGlBQkVQZ0lSUTBGQzBFQklRY2dCVUVCTmdLOEFRd0VDeUFCRVBnSUJFQWdBRUVBT2dDVUF5QUFRYWdFYWtHTmhBWVFHU2dDQUF3SEMwRUNJUWNnQlVFQ05nSzhBUXdEQ3lBQkVQZ0lCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrSFRnd1lRR1NnQ0FBd0dDMEVDREFFTElBRVErQWdFUUNBQVFRQTZBSlFESUFCQnFBUnFRWnVEQmhBWktBSUFEQVVMUVFNTElnczJBcmdCQ3lBQ1FReHFJUUlNQVFzTEFrQUNRQ0FIUVFGR0JIOGpBRUVRYXlJQkpBQWdBVUVBT2dBTUlBRWdBMEVnYWpZQ0NDQUJRUWhxRU00Y0lRSWdBVUVRYWlRQUlBSU5BU0FGUVFNMkFyd0JRUU1GSUFjTFFRTkhEUUFnQzBVTkFRc2dBeUVNSUFSQjJBSnFJUVlnQlVHOEFXb2hBU01BUVJCcklnSWtBQUovSUFWQnVBRnFJZ2dvQWdCRkJFQWdBaUFFSUFFUTZSZzJBZ3dnQWtFQU5nSUlJd0JCRUdzaUFTUUFJQVFRSENBRUlBUW9BZ3hCQVdvaUF6WUNEQ0FCSUFNMkFnZ2dCRUdNQVdvaUF5QURFTVVDSUFRb0FnZ2dBU2dDQ0NBR0lBSW9BZ3hCQUJDRUVTSUVFQ2dnQXlBREtBSVlRUUZxTmdJWUlBUWhBeUFCUVJCcUpBQWdBd3dCQ3lBQ0lBUWdBUkRwR0RZQ0RDTUFRUkJySWdNa0FDTUFRU0JySWdja0FDTUFRU0JySWdFa0FDQUJRUWhxSWdvZ0NCRDBFQ0FCSUFFb0Fnd2dBUzBBRXlJSUlBaEJHSFJCR0hWQkFFZ2lDQnMyQWh3Z0FTQUJLQUlJSUFvZ0NCczJBaGdnQVNBQktRTVlOd01BSUFjZ0JDQUJFT0VCSUFvUUR4b2dBVUVnYWlRQUlBUWdCRUhZQW1vZ0J4RE9BaUVCSUFkQklHb2tBQ0FESUFFMkFnd2dCQ0FCUVJCcUlBTkJER29Rc3dNaEFTQURRUkJxSkFBZ0FpQUJOZ0lJSXdCQkVHc2lBU1FBSUFRUUhDQUVJQVFvQWd4QkFXb2lBellDRENBQklBTTJBZ2dnQkVHTUFXb2lBeUFERU1VQ0lBUW9BZ2dnQVNnQ0NDQUdJQUlvQWd3Z0FpZ0NDQkNFRVNJRUVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFRaEF5QUJRUkJxSkFBZ0F3c2hBU0FDUVJCcUpBQWdEQ0FCRUpBRkN5QUFRWlFEYWdzdEFBQWhBQ0FGUWNBQmFpUUFJQUFMWHdFRGZ5QUFLQUlrSVFNZ0FDZ0NJQ0VBQTBBQ1FDQUFJQU5HSWdRTkFDQUFLQUlBSWdKQmZuRkJBa2NnQWtFQmEwRUZTWEVFUUNBQklBQW9BaGdpQWlBQVFReHFJQUliS0FJQUVJb0NSUTBCQ3lBQVFSeHFJUUFNQVFzTElBUUwzZ2tDQ0g4RGZpTUFRY0FCYXlJRUpBQWdBU2dDcEFVaUNDQUJLQUtzQlNJRlFaWUJiRUdXQVdwQjVBQnVTUVJBSXdCQm9BSnJJZ2NrQUVFWUlBVkJBWFJCQW1wQmxnRnNRZVFBYmlJRklBVkJHRTBiSWdvZ0FTZ0NwQVZMQkVBZ0IwS0FnSUNBZ0FJM0FwUUNJQWNnQjBFUWFpSUZOZ0tRQWlBRklBRW9BcXdGRU9zWUlBRW9BcUFGSWdVZ0FTZ0NwQVZCSEd4cUlRc0RRQUpBSUFVZ0MwWUVRQ0FCRUtJWklBRWdDaERyRGlBSEtBS1FBaUlGSUFjb0FwUUNRUVIwYWlFR0RBRUxJQVV0QUJBRVFDQUZFTk1iSVFrZ0IwRVFhaUlHS0FLRUFpSUlJQVlvQW9nQ1R3UkFJQVlnQmlnQ2lBSWlDRUVCZEVFQ0lBZ2JFT3NZSUFZb0FvUUNJUWdMSUFZZ0NFRUJhallDaEFJZ0JpZ0NnQUlnQ0VFRWRHb2lCaUFKS1FJSU53SUlJQVlnQ1NrQ0FEY0NBQXNnQlVFY2FpRUZEQUVMQ3dOQUlBVWdCa2NFUUNBSFFRaHFJQUVnQlNBRlFRUnFFUEVPSUFWQkVHb2hCUXdCQ3dzZ0IwRVFhaENUQlFzZ0IwR2dBbW9rQUNBQktBS2tCU0VJQ3lBSVFRRnJJUW9nQWlnQ0FDSUdJQWh3SVFjZ0FTZ0NvQVVoQ1VFQUlRSUNRQU5BSUFJZ0NFY0VRQ0FKSUFkQkhHeHFJZ1V0QUJCRkJFQWdCQ0FES0FJSU5nSUlJQVFnQXlrQ0FEY0RBQ0FGSUFZMkFnQWdCU0FFS1FNQU53SUVJQVVnQkNnQ0NEWUNEQ0FGUVFFNkFCQWdDU0FIUVJ4c2FpSURJQUkyQWhnZ0F5QUdOZ0lVSUFFZ0FTZ0NyQVZCQVdvMkFxd0ZJQUVnQVNnQ3NBVkJBV28yQXJBRklBQWdCVUVFYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FGS0FJVUlBWkhEUUFnQmlBRktBSUFSdzBBSUFCQkFqWUNBQ0FBSUFWQkJHbzJBZ1FNQXdzZ0FpQUZLQUlZU3dSQUlBUWdCallDb0FFZ0JDQURLQUlJTmdLc0FTQURLUUlBSVF3Z0JFRUJPZ0N3QVNBRUlBSTJBcmdCSUFRZ0REY0NwQUVnQkNBR05nSzBBU0FFSUFJMkFoZ2dCQ0FFS1FPd0FTSU1Od01RSUFRZ0JDa0RxQUVpRFRjRENDQUVJQVFwQTZBQklnNDNBd0FnQkNBRktBSVlOZ0s0QVNBRUlBVXBBaEEzQTdBQklBUWdCU2tDQ0RjRHFBRWdCQ0FGS1FJQU53T2dBU0FGSUFJMkFoZ2dCU0FPTndJQUlBVWdERGNDRUNBRklBMDNBZ2dnQkNBRUtBSzRBVUVCYWpZQ3VBRWdCMEVCYWlBQktBS2tCWEFoQmtFQUlRY2pBRUVnYXlFRElBRW9BcVFGSWdoQkFXc2hDUUpBQTBBZ0J5QUlSZzBCSUFFb0FxQUZJQVpCSEd4cUlnSXRBQkFFUUNBRUlBUW9BcmdCSWdvZ0FpZ0NHRXNFZnlBRElBSW9BaGcyQWhnZ0F5QUNLUUlRTndNUUlBTWdBaWtDQ0RjRENDQURJQUlwQWdBM0F3QWdBaUFFS0FLNEFUWUNHQ0FDSUFRcEFyQUJOd0lRSUFJZ0JDa0NxQUUzQWdnZ0FpQUVLUUtnQVRjQ0FDQUVJQU1vQWhnMkFyZ0JJQVFnQXlrREVEY0NzQUVnQkNBREtRTUlOd0tvQVNBRUlBTXBBd0EzQXFBQklBUW9BcmdCQlNBS0MwRUJhallDdUFFZ0JrRUJha0VBSUFZZ0NVY2JJUVlnQjBFQmFpRUhEQUVMQ3lBQ0lBUXBBcUFCTndJQUlBSWdCQ2dDdUFFMkFoZ2dBaUFFS1FLd0FUY0NFQ0FDSUFRcEFxZ0JOd0lJQ3lBQklBRW9BcXdGUVFGcU5nS3NCU0FCSUFFb0FyQUZRUUZxTmdLd0JTQUFJQVZCQkdvMkFnUWdBRUVBTmdJQURBTUZJQWRCQVdwQkFDQUhJQXBIR3lFSElBSkJBV29oQWd3Q0N3QUxDeUFFUVlhMUEwSHJBMEVPSUFSQm9BRnFFQjBpQVJBWElnSkJHR3BCbGpVUURob2dBaEFZSUFCQ0FEY0NBQ0FCRUI0TElBUkJ3QUZxSkFBTFlnRUNmeU1BUVJCcklnUWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQkNBRE5nSUlJQUJCakFGcUlnTWdBeEMvQVNBQUtBSUlJQVFvQWdnZ0FTQUNMUUFBRU8wVklnQVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JFRVFhaVFBSUFBTEVnQWdBQ2dDQUNBQlFRQVFPRUVBRUw0R0M4OEJBUU4vSXdCQkVHc2lCQ1FBSUFRZ0F6WUNEQ0FBS0FJQUlRWWdBQ2dDQkNBREVEZ2hBd0pBQWtBQ1FDQUdLQUswQlNBREVKUUJJZ0JGRFFBZ0FDZ0NGQ0lGUVRKSElBVkJLMGR4RFFCQkFTRUZJQUFReUFGQkFVWU5BUXNnQmtFQU9nQ1VBeUFHUWFnRWFrSFV5d2tRR1NBRVFReHFFSkVGUWY2eENoQVpJUUVDUUNBQUJFQWdCQ0FBRUZnTUFRc2dCRUcyeEFJUUZCb0xJQUVnQkJCTktBSUFMUUFBUVFCSElRVWdCQkFQR2d3QkN5QUJJQU0yQWdBZ0FpQUFRUUFRT0RZQ0FBc2dCRUVRYWlRQUlBVUx1Z0VCQm44Q2Z5QUJFTTRHSVFNQ1FDQUFLQUlnSWdKRkRRQWdBQ2dDSEFKL0lBSkJBV3NnQTNFZ0Fta2lBRUVCVFEwQUdpQURJQUlnQTBzTkFCb2dBeUFDY0FzaUJVRUNkR29vQWdBaUJFVU5BQ0FDUVFGcklRWWdBRUVCU3lFSEEwQWdCQ2dDQUNJRVJRMEJJQVFvQWdRaUFDQURSd1JBQWtBZ0IwVUVRQ0FBSUFaeElRQU1BUXNnQUNBQ1NRMEFJQUFnQW5BaEFBc2dBQ0FGUncwQ0RBRUxJQVJCQ0dvZ0FSRHlBMFVOQUFzZ0JBd0JDMEVBQzBFQVJ3c3ZBUUovSUFBb0FnQWhBaUFBS0FJRUlRRURRQ0FCSUFKSEJFQWdBVUVNYXhBeUlRRU1BUXNMSUFBZ0FqWUNCQXMzQVFGL0lBQW9BZ1FoQXdOQUlBRWdBa2NFUUNBRElBRW9BZ0EyQWdBZ0EwRUVhaUVESUFGQkJHb2hBUXdCQ3dzZ0FDQUROZ0lFQ3g4QUlBQW9BZ1FnQUNnQ0NFY0VRQ0FBSUFFUW1Sa1BDeUFBSUFFUW1Ca0xPUUVCZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUJCckExcUlBRVFteGtnQXkwQURBUkFJQUJCSUdvUThnSWdBaENYR1FzZ0EwRVFhaVFBQ3pJQkFuOENRQ0FBS0FJQUlnSWdBQ2dDQkVZTkFDQUNLQUlBSWdCQkhrc05BRUdBd0kyQUJDQUFka0VCY1NFQkN5QUJDNUlDQVFOL0l3QkIwQUJySWdRa0FDQUFRUUEyQWdnZ0FFSUFOd0lBSUFSQlFHc2dBU2dDd0FVZ0FoRGJDaUFFUWdBM0F6QWdCRUlBTndNb0lBUkJnSUNBL0FNMkFqZ2dCQ2dDUkNFR0lBUW9Ba0FoQVFOQUlBRWdCa1pGQkVBQ1FDQUJLQUlBSWdJb0FoUkJ5QUJIRFFBZ0FrRUJFRGdnQTBjTkFDQUVJQUpCQWhBNElnVTJBaVFnQlVFVFJpQUZRZXNwUm5JTkFDQUVRUmhxSUFSQktHb2dCRUVrYWhDV0FTQUVMUUFjUlEwQUlBUkJBRFlDSUNBRVFnQTNBeGdnQWlBRVFSaHFJZ1VRMHdvZ0FDQUVRUWhxSUFRb0FoaEJER29nQkNnQ0hCQ0FDeUlDRVBnT0lBSVFNaG9nQlJBeUdnc2dBVUVFYWlFQkRBRUxDeUFFUVNocUVFOGdCRUZBYXhBeUdpQUVRZEFBYWlRQUN4VUFJQUFvQWdSQkNHb2dBU2tEQUJEREJCb2dBQXNKQUNBQVFRQVFvUmtMOVFJQkJIOGdBRUc0NEJJMkFnQWdBRUhVRFdvUVR5QUFRY0FOYWhEZEJ5QUFRYXdOYWhEZEJ5QUFRZmdIYWlJQkVLSVpJQUZCQURZQ3BBVWdBU0FCS0FLZ0JSQTJJQUJCNUFkcUVFOGdBRUhRQjJvUTNRY2dBRUc4QjJvUVR5QUFRYWdIYWhCUElBQkJsQWRxSWdJb0FnZ2hBUU5BSUFFRVFDQUJLQUlBSVFNZ0FVRU1haEQ2R0NBQkVCOGdBeUVCREFFTEN5QUNFSnNESUFCQmdBZHFFRThnQUVIc0Jtb1EzUWNnQUVIWUJtb1EzUWNnQUVIRUJtb1FUeUFBUVl3R2FoQlBJQUJCK0FWcUVFOGdBRUhrQldvUVR5QUFRZEFGYWhCUElBQkJ4QVZxRURJYUlBQkJyQVZxRVAwT0lBQkJxQVZxRUlrWElBQkJ5QVJxSWdKQnhBQnFFSm9MSUFKQk1Hb2lCQ2dDQ0NFQkEwQWdBUVJBSUFFb0FnQWhBeUFCUVF4cUVKY2FJQUVRSHlBRElRRU1BUXNMSUFRUW13TWdBa0VjYWhDYUN5QUNRUWhxRUprTElBQkJzQVJxRUJZZ0FFR1lBMm9RVVNBQVFaQURhaENqR2lBQVFTQnFFSTRFR2lBQVFSUnFFRElhSUFBUXZCb0x6UWdDQ244QmZnSkFBMEFnQlVVTkFRSkFBa0FnQkNBSFRDQUZJQWRNY2tVRVFDQUFJUWdEUUNBRVJRMEZJQU1nQVNBSUVPZ0REUUlnQkVFQmF5RUVJQWhCQ0dvaENBd0FDd0FMSUFRZ0JVd05BU0FHSVFRZ0FTRUlBMEFnQWlBSVJnUkFBMEFnQkNBR1JnMEdJQUFnQVVZRVFBTkFJQVFnQmtZTkNDQUNRUWhySWdJZ0JFRUlheUlFS1FJQU53SUFEQUFMQUFVZ0FrRUlheUlDSUFGQkNHc2lCU0FFUVFocklnY2dBeUFISUFVUTZBTWlDQnNwQWdBM0FnQWdCQ0FISUFnYklRUWdCU0FCSUFnYklRRU1BUXNBQ3dBRklBUWdDQ2tDQURjQ0FDQUVRUWhxSVFRZ0NFRUlhaUVJREFFTEFBc0FDd0pBSUFRZ0JVZ0VRQ0FCSUFoclFRTjFJUUFnQVNBRlFRSnRJZ3hCQTNScUlRc2dDQ0VKQTBBZ0FBUkFJQUJCQVhZaURTQUFJQTFCZjNOcUlBTWdDeUFKSUExQkEzUnFJZzBRNkFNaUNoc2hBQ0FKSUExQkNHb2dDaHNoQ1F3QkN3c2dDU0FJYTBFRGRTRU5EQUVMSUFSQkFVWUVRQ0FJS1FJQUlSSWdDQ0FCS1FJQU53SUFJQUVnRWpjQ0FBOExJQUlnQVd0QkEzVWhBQ0FJSUFSQkFtMGlEVUVEZEdvaENTQUJJUXNEUUNBQUJFQWdBQ0FBUVFGMklneEJmM05xSUF3Z0F5QUxJQXhCQTNScUlnd2dDUkRvQXlJS0d5RUFJQXhCQ0dvZ0N5QUtHeUVMREFFTEN5QUxJQUZyUVFOMUlRd0xJQUVnQ1VjRWZ5QUJJQXRHQkg4Z0NRVUNmeUFMSVFvZ0FTQUpRUWhxUmdSQUlBb2dBV3NoQUNBSktRSUFJUklnQVNBS1J3UkFJQWtnQVNBQUVPY0JHZ3NnQUNBSmFpSUFJQkkzQWdBZ0FBd0JDeUFLSUFGQkNHcEdCRUFnQ2tFSWF5SUFLUUlBSVJJZ0FDQUpSd1JBSUFvZ0FDQUpheUlBYXlJS0lBa2dBQkRuQVJvTElBa2dFamNDQUNBS0RBRUxBbjhnQVNBSmEwRURkU0lQSUFvZ0FXdEJBM1VpRUVjRVFDQVFJUUFnRHlFQkEwQWdBU0FBSWdGdklnQU5BQXNnQ1NBQlFRTjBhaUVPQTBBZ0NTQU9SZ1JBSUFrZ0VFRURkR29NQXdVZ0RrRUlheUlPSUE5QkEzUWlFV29oQVNBT0tRSUFJUklnRGlFQUEwQWdBQ0FCS1FJQU53SUFJQUVpQUNBUmFpQUpJQThnQ2lBQmEwRURkU0lCYTBFRGRHb2dBU0FQU2hzaUFTQU9SdzBBQ3lBQUlCSTNBZ0FNQVFzQUN3QUxJQWtoQUNBQklRb0RRQ0FBSUFGSEJFQWdBQ2tDQUNFU0lBQWdDaWtDQURjQ0FDQUtJQkkzQWdBZ0NrRUlhaUVLSUFCQkNHb2hBQXdCQ3dzZ0FRc0xDd1VnQ3dzaEFDQU1JQTFxSUFVZ0RHc2lCU0FFSUExcklnUnFTQVJBSUFnZ0NTQUFJQU1nRFNBTUlBWWdCeEQvRGlBTElRRU1BZ3NnQUNBTElBSWdBeUFFSUFVZ0JpQUhFUDhPSUF3aEJTQU5JUVFnQUNFQ0lBa2hBU0FJSVFBTUFRc0xJQVloQ0NBQUlRUURRQ0FCSUFSR0JFQURRQ0FHSUFoR0RRTWdBU0FDUmdSQUlBQWdCaUFJSUFackVPY0JHZ1VDUUNBRElBRWdCaERvQXdSQUlBQWdBU2tDQURjQ0FDQUJRUWhxSVFFTUFRc2dBQ0FHS1FJQU53SUFJQVpCQ0dvaEJnc2dBRUVJYWlFQURBRUxDd1VnQ0NBRUtRSUFOd0lBSUFoQkNHb2hDQ0FFUVFocUlRUU1BUXNMQ3d2a0NBSUtmd0orQWtBRFFDQUZSUTBCSUFRZ0Iwd2dCU0FIVEhKRkJFQWdBQ0VMQTBBZ0JFVU5BeUFCS1FNQUloSWdDeWtEQUNJVFdnUkFJQVJCQVdzaEJDQUxRUWhxSVFzTUFRc0xBa0FnQkNBRlNBUkFJQUVnQ3lJQWEwRURkU0VJSUFFZ0JVRUNiU0lNUVFOMGFpSUtLUU1BSVJJRFFDQUlCRUFnQ0VFQmRpSUpJQWdnQ1VGL2Myb2dFaUFBSUFsQkEzUnFJZ2twQXdCVUlnMGJJUWdnQUNBSlFRaHFJQTBiSVFBTUFRc0xJQUFpQ1NBTGEwRURkU0VOREFFTElBUkJBVVlFUUNBTElCSTNBd0FnQVNBVE53TUFEd3NnQWlBQklnQnJRUU4xSVFnZ0N5QUVRUUp0SWcxQkEzUnFJZ2twQXdBaEVnTkFJQWdFUUNBSUlBaEJBWFlpQ2tGL2Myb2dDaUFBSUFwQkEzUnFJZ29wQXdBZ0VsUWlEQnNoQ0NBS1FRaHFJQUFnREJzaEFBd0JDd3NnQUNJS0lBRnJRUU4xSVF3TElBRWdDVWNFZnlBQklBcEdCSDhnQ1FVQ2Z5QUtJUWdnQVNBSlFRaHFSZ1JBSUFnZ0FXc2hBQ0FKS1FNQUlSSWdBU0FJUndSQUlBa2dBU0FBRU9jQkdnc2dBQ0FKYWlJQUlCSTNBd0FnQUF3QkN5QUlJQUZCQ0dwR0JFQWdDRUVJYXlJQUtRTUFJUklnQUNBSlJ3UkFJQWdnQUNBSmF5SUFheUlJSUFrZ0FCRG5BUm9MSUFrZ0VqY0RBQ0FJREFFTEFuOGdBU0FKYTBFRGRTSVBJQWdnQVd0QkEzVWlFRWNFUUNBUUlRQWdEeUVCQTBBZ0FTQUFJZ0Z2SWdBTkFBc2dDU0FCUVFOMGFpRU9BMEFnQ1NBT1JnUkFJQWtnRUVFRGRHb01Bd1VnRGtFSWF5SU9JQTlCQTNRaUVXb2hBU0FPS1FNQUlSSWdEaUVBQTBBZ0FDQUJLUU1BTndNQUlBRWlBQ0FSYWlBSklBOGdDQ0FCYTBFRGRTSUJhMEVEZEdvZ0FTQVBTaHNpQVNBT1J3MEFDeUFBSUJJM0F3QU1BUXNBQ3dBTElBa2hBQ0FCSVFnRFFDQUFJQUZIQkVBZ0FDa0RBQ0VTSUFBZ0NDa0RBRGNEQUNBSUlCSTNBd0FnQ0VFSWFpRUlJQUJCQ0dvaEFBd0JDd3NnQVFzTEN3VWdDZ3NoQUNBTUlBMXFJQVVnREdzaUJTQUVJQTFySWdScVNBUkFJQXNnQ1NBQUlBTWdEU0FNSUFZZ0J4Q0FEeUFLSVFFTUFnc2dBQ0FLSUFJZ0F5QUVJQVVnQmlBSEVJQVBJQXdoQlNBTklRUWdBQ0VDSUFraEFTQUxJUUFNQVFzTElBSWhCd0pBQWtBZ0JDQUZTZ1JBSUFZaEF5QUJJUUlNQVFzZ0JpRURJQUFoQWdOQUlBRWdBa1lFUUFOQUFrQWdBeUFHUndSQUlBRWdCMGNOQVNBQUlBWWdBeUFHYXhEbkFSb0xEQVVMQWtBZ0FTa0RBQ0lTSUFZcEF3QWlFMVFFUUNBQUlCSTNBd0FnQVVFSWFpRUJEQUVMSUFBZ0V6Y0RBQ0FHUVFocUlRWUxJQUJCQ0dvaEFBd0FDd0FGSUFNZ0Fpa0RBRGNEQUNBRFFRaHFJUU1nQWtFSWFpRUNEQUVMQUFzQUN3TkFJQUlnQjBjRVFDQURJQUlwQXdBM0F3QWdBMEVJYWlFRElBSkJDR29oQWd3QkN3c0RRQUpBSUFNZ0JrWU5BQ0FBSUFGR0JFQURRQ0FESUFaR0RRSWdCMEVJYXlJSElBTkJDR3NpQXlrREFEY0RBQXdBQ3dBRklBZEJDR3NpQnlBRFFRaHJJZ0lwQXdBaUVpQUJRUWhySWdRcEF3QWlFeUFTSUJOV0d6Y0RBQ0FESUFJZ0VpQVRWQ0lDR3lFRElBUWdBU0FDR3lFQkRBSUxBQXNMQ3dzTDlnVUJCMzhDUUFOQUlBUkZEUUVDUUFKQUlBTWdCa3dnQkNBR1RISkZCRUFnQUNFSEEwQWdBMFVOQlNBQktBSUFJZ0FvQWdnZ0J5Z0NBQ0lJS0FJSVNRMENJQU5CQVdzaEF5QUhRUVJxSVFjTUFBc0FDeUFESUFSTURRRWdCU0VESUFFaEJ3TkFJQUlnQjBZRVFBTkFJQU1nQlVZTkJpQUFJQUZHQkVBRFFDQURJQVZHRFFnZ0FrRUVheUlDSUFOQkJHc2lBeWdDQURZQ0FBd0FDd0FGSUFKQkJHc2lBaUFCUVFScklnWW9BZ0FpQkNBRFFRUnJJZ2NvQWdBaUNDQUlLQUlJSUFRb0FnaEpJZ1FiTmdJQUlBTWdCeUFFR3lFRElBWWdBU0FFR3lFQkRBRUxBQXNBQlNBRElBY29BZ0EyQWdBZ0EwRUVhaUVESUFkQkJHb2hCd3dCQ3dBTEFBc0NRQ0FESUFSSUJFQWdBU0FIYTBFQ2RTRUFJQUVnQkVFQ2JTSUpRUUowYWlJSUtBSUFJUXdnQnlFTEEwQWdBQVJBSUFCQkFYWWlDaUFBSUFwQmYzTnFJQXdvQWdnZ0N5QUtRUUowYWlJS0tBSUFLQUlJU1NJTkd5RUFJQXNnQ2tFRWFpQU5HeUVMREFFTEN5QUxJQWRyUVFKMUlRb01BUXNnQTBFQlJnUkFJQWNnQURZQ0FDQUJJQWcyQWdBUEN5QUNJQUZyUVFKMUlRQWdCeUFEUVFKdElncEJBblJxSWdzb0FnQWhEQ0FCSVFnRFFDQUFCRUFnQUNBQVFRRjJJZ2xCZjNOcUlBa2dDQ0FKUVFKMGFpSUpLQUlBS0FJSUlBd29BZ2hKSWcwYklRQWdDVUVFYWlBSUlBMGJJUWdNQVFzTElBZ2dBV3RCQW5VaENRc2dDeUFCSUFnUXR4a2hBQ0FKSUFwcUlBUWdDV3NpQkNBRElBcHJJZ05xU0FSQUlBY2dDeUFBSUFvZ0NTQUZJQVlRZ1E4Z0NDRUJEQUlMSUFBZ0NDQUNJQU1nQkNBRklBWVFnUThnQ1NFRUlBb2hBeUFBSVFJZ0N5RUJJQWNoQUF3QkN3c2dCU0VISUFBaEF3TkFJQUVnQTBZRVFBTkFJQVVnQjBZTkF5QUJJQUpHQkVBZ0FDQUZJQWNnQldzUTV3RWFCUUpBSUFFb0FnQWlBeWdDQ0NBRktBSUFJZ1FvQWdoSkJFQWdBQ0FETmdJQUlBRkJCR29oQVF3QkN5QUFJQVEyQWdBZ0JVRUVhaUVGQ3lBQVFRUnFJUUFNQVFzTEJTQUhJQU1vQWdBMkFnQWdCMEVFYWlFSElBTkJCR29oQXd3QkN3c0xDL01GQVFaL0FrQURRQ0FGUlEwQkFrQUNRQ0FFSUFkTUlBVWdCMHh5UlFSQUlBQWhDQU5BSUFSRkRRVWdBeUFCS0FJQUlBZ29BZ0FRNlFNTkFpQUVRUUZySVFRZ0NFRUVhaUVJREFBTEFBc2dCQ0FGVEEwQklBWWhCQ0FCSVFnRFFDQUNJQWhHQkVBRFFDQUVJQVpHRFFZZ0FDQUJSZ1JBQTBBZ0JDQUdSZzBJSUFKQkJHc2lBaUFFUVFScklnUW9BZ0EyQWdBTUFBc0FCU0FDUVFScklnSWdBVUVFYXlJRklBUkJCR3NpQnlBRElBY29BZ0FnQlNnQ0FCRHBBeUlJR3lnQ0FEWUNBQ0FFSUFjZ0NCc2hCQ0FGSUFFZ0NCc2hBUXdCQ3dBTEFBVWdCQ0FJS0FJQU5nSUFJQVJCQkdvaEJDQUlRUVJxSVFnTUFRc0FDd0FMQWtBZ0JDQUZTQVJBSUFFZ0NHdEJBblVoQUNBQklBVkJBbTBpQ1VFQ2RHb2hDeUFJSVF3RFFDQUFCRUFnQUVFQmRpSUtJQUFnQ2tGL2Myb2dBeUFMS0FJQUlBd2dDa0VDZEdvaUNpZ0NBQkRwQXlJTkd5RUFJQXdnQ2tFRWFpQU5HeUVNREFFTEN5QU1JQWhyUVFKMUlRb01BUXNnQkVFQlJnUkFJQWdvQWdBaEFDQUlJQUVvQWdBMkFnQWdBU0FBTmdJQUR3c2dBaUFCYTBFQ2RTRUFJQWdnQkVFQ2JTSUtRUUowYWlFTUlBRWhDd05BSUFBRVFDQUFJQUJCQVhZaUNVRi9jMm9nQ1NBRElBc2dDVUVDZEdvaUNTZ0NBQ0FNS0FJQUVPa0RJZzBiSVFBZ0NVRUVhaUFMSUEwYklRc01BUXNMSUFzZ0FXdEJBblVoQ1FzZ0RDQUJJQXNRdHhraEFDQUpJQXBxSUFVZ0NXc2lCU0FFSUFwcklnUnFTQVJBSUFnZ0RDQUFJQU1nQ2lBSklBWWdCeENDRHlBTElRRU1BZ3NnQUNBTElBSWdBeUFFSUFVZ0JpQUhFSUlQSUFraEJTQUtJUVFnQUNFQ0lBd2hBU0FJSVFBTUFRc0xJQVloQ0NBQUlRUURRQ0FCSUFSR0JFQURRQ0FHSUFoR0RRTWdBU0FDUmdSQUlBQWdCaUFJSUFackVPY0JHZ1VDUUNBRElBRW9BZ0FnQmlnQ0FCRHBBd1JBSUFBZ0FTZ0NBRFlDQUNBQlFRUnFJUUVNQVFzZ0FDQUdLQUlBTmdJQUlBWkJCR29oQmdzZ0FFRUVhaUVBREFFTEN3VWdDQ0FFS0FJQU5nSUFJQWhCQkdvaENDQUVRUVJxSVFRTUFRc0xDd3ZHQkFJSWZ3SjlJd0JCRUdzaUJpUUFJQUlROUFNaEJ5QUFBbjhDUUNBQktBSUVJZ1JGRFFBZ0FTZ0NBQUovSUFSQkFXc2dCM0VnQkdraUNVRUJUUTBBR2lBSElBUWdCMHNOQUJvZ0J5QUVjQXNpQ0VFQ2RHb29BZ0FpQlVVTkFDQUVRUUZySVFvZ0FpZ0NBQ0VMSUFsQkFVc2hDUU5BSUFVb0FnQWlCVVVOQVNBSElBVW9BZ1FpQWtjRVFBSkFJQWxGQkVBZ0FpQUtjU0VDREFFTElBSWdCRWtOQUNBQ0lBUndJUUlMSUFJZ0NFY05BZ3NnQlNnQ0NDQUxSdzBBQzBFQURBRUxJQVlnQVNBSElBTVE0Z2dDUUVFQUlBUWdBU2dDREVFQmFyTWlEQ0FCS2dJUUlnMGdCTE9VWGhzTkFDQUJJQVFnQkVFQmEzRkJBRWNnQkVFRFNYSWdCRUVCZEhJaUFnSi9JQXdnRFpXTklneERBQUNBVDEwZ0RFTUFBQUFBWUhFRVFDQU1xUXdCQzBFQUN5SURJQUlnQTBzYkVNTUJJQUVvQWdRaUJDQUVRUUZyY1VVRVFDQUVRUUZySUFkeElRZ01BUXNnQkNBSFN3UkFJQWNoQ0F3QkN5QUhJQVJ3SVFnTEFrQWdDRUVDZENJRElBRW9BZ0JxS0FJQUlnSkZCRUFnQmlnQ0FDQUJLQUlJTmdJQUlBRWdCaWdDQURZQ0NDQUJLQUlBSUFOcUlBRkJDR28yQWdBZ0JpZ0NBQ0lDS0FJQUlnTkZEUUVnQXlnQ0JDRUZBa0FnQkNBRVFRRnJJZ054UlFSQUlBTWdCWEVoQlF3QkN5QUVJQVZMRFFBZ0JTQUVjQ0VGQ3lBQktBSUFJQVZCQW5ScUlBSTJBZ0FNQVFzZ0JpZ0NBQ0FDS0FJQU5nSUFJQUlnQmlnQ0FEWUNBQXNnQmlnQ0FDRUZJQVpCQURZQ0FDQUJJQUVvQWd4QkFXbzJBZ3dnQmhDTEFVRUJDem9BQkNBQUlBVTJBZ0FnQmtFUWFpUUFDMFlCQW44akFFRVFheUlFSkFBZ0JDQUFRUVJxSWdVZ0JTZ0NBRUhZQW1vUTRobzJBZ2dnQUNBQVFkZ0NhaUFFUVFocUlBRWdBaUFERUtZWklRQWdCRUVRYWlRQUlBQUxEd0FnQUNnQ0JDQUJFTWtaR2lBQUMwUUJBWDhnQUNnQ0JDSUJJQUVvQWdBb0FqQVJBQUFvQWhSQklFY0VRRUhCdFFsQjBLa0RRZmNCUWFIVkF4QUFBQXNnQUNBQUtBSUFLQUpnRVFBQUtBSUFLZ0lBQzRzQkFRTi9Jd0JCTUdzaUF5UUFBa0FnQUNBQkVHQWlBUkNVQWlJRlJRMEFJQVV0QUNGRkRRQWdBMEVnYWlBQUtBSWdJQUVRa3dJUVZDRUJJQU5CQURZQ0dDQURRZ0EzQXhBZ0EwSUFOd01JSUFNZ0FDZ0NDQ0FCRU5JQ05nSUVJQUFnQUNBRFFRaHFJQU5CQkdvZ0FrRUVhaERwR1JESkFSb2dBUkFQR2tFQklRUUxJQU5CTUdva0FDQUVDeE1BSUFBZ0FVSC8vLy8vQVVFRFFRUVE0eElMMEFRQkJIOGpBRUhBQVdzaUJDUUFBa0FDUUFKQUFrQUNRQUpBSUFGQkpHb2dBa0VFYWhDZUFpZ0NERUVCYXc0RkFBRUNBd1FGQ3lBQ0tBSVVJZ05GQkVBZ0JFRWdha0c1b1FWQnRSbEJCeUFFRUIwaUJoQVhJZ2RCR0dwQm5kb0lFQTRhSUFjUUdDQUdFQjRMSUFBZ0F4QjhLQUlnSWdNb0FoUkJBa2NFUUNBRVFTQnFRYm1oQlVHM0dVRUhJQVFRSFNJR0VCY2lCMEVZYWtIdHNnZ1FEaG9nQnhBWUlBWVFIZ3NnQVNnQ0NFRUJhaUlCSUFJb0FnaEdEUVFDUUNBREtBSWdJQUZMRFFBZ0F5Z0NKQ0FCVFEwQUlBQWdBQ2dDNkFZZ0FVRUNkR29vQWdBUWZDSUJLQUk0SUFOR0RRVWdBU2dDUENBRFJnMEZDeUFFUVFBMkFqQWdCRUlBTndNb0lBUkNBRGNESUNBQUlBUkJJR29Ra1FzaEJRd0VDeUFFUVFBMkFqQWdCRUlBTndNb0lBUkNBRGNESUNBQUlBUkJJR29Ra1FzaEJRd0RDeUFDS0FJSUlBRW9BZ2hCQVdwR0RRSWdCRUVBTmdJd0lBUkNBRGNES0NBRVFnQTNBeUFnQUNBRVFTQnFFSW9QSVFVTUFnc2dBQ0FDS0FJVUVId2lBU2dDbUFFZ0FTMEFud0VpQWlBQ1FSaDBRUmgxUVFCSUcwVU5BU0FCUVpRQmFpRUJJQU1FUUNBRElBRVE0QUlMSUFSQkFEWUNNQ0FFUWdBM0F5Z2dCRUlBTndNZ0lBUWdBQ2dDQ0NBQkVOSUNOZ0ljSUFSQkFEWUNFQ0FFUWdBM0F3Z2dCRUlBTndNQUl3QkJFR3NpQVNRQUlBRkJBRG9BRHlBQUlBUWdBVUVQYWhDTEdpRUNJQUZCRUdva0FDQUVJQUkyQWhnZ0FDQUVRU0JxSUFSQkhHb2dCRUVZYWhEcEdTRUZEQUVMSUFBb0Fod2lBQ2dDQUVFQU9nQUFJQUJCbTRZR0VCa2FDeUFFUWNBQmFpUUFJQVVMREFBZ0FDZ0NDQ0FCRUl3ZkMyc0JBbjhqQUVFd2F5SUJKQUFnQVVFb2FoQ1lCQ0VDSUFGQkFEWUNJQ0FCUVFBMkFoZ2dBVUlBTndNUUlBRkNBRGNEQ0NBQUlBSW9BZ0FnQVNnQ0lDQUJRUWhxRU9VRUlnQkJzTmNTTmdJRUlBQkJ0TmtTTmdJQUlBQkIwTmNTTmdJQUlBRkJNR29rQUNBQUM0a0JBUUovSXdCQkVHc2lBeVFBQWtBZ0FVVUVRRUVBSVFFTUFRc2dBU2dDQkNJRVFmakxFa1lFUUNBRFFRaHFJQUFnQWhDVUN5QUFLQUlFSUFFb0FnZ2dBeWdDQ0NBREtBSU1FS0VQSVFFTUFRc2dCRUdRekJKSERRQWdBMEVJYWlBQUlBSVFsQXNnQUNnQ0JDQUJLQUlJSUFNb0FnZ2dBeWdDREJDYkN5RUJDeUFEUVJCcUpBQWdBUXVLQWdFQ2Z5TUFRUkJySWdRa0FBSkFBa0FnQTBVTkFDQUNLQUlBUlEwQUlBSW9BZ1JGRFFBZ0FTZ0NHQ0FERUhvUTZRRWlBMFVOQUNBQ0tBSUFLQUlFUVpETUVrY05BQ0FESUFNb0FnQW9BbndSQUFCRkRRQWdCRUVJYWlBQ0VGc2hCU01BUVNCcklnSWtBQUpBSUFVb0FnQWlBeWdDQkVHUXpCSkdRUUFnQXh0RkJFQWdBU2dDSENJQktBSUFRUUE2QUFBZ0FVSEtrUVFRR1JvZ0FCQm5HZ3dCQ3lBQktBSUVJQU1vQWdnZ0F5Z0NERUVBRUtFUElRTWdBa0VBTmdJWUlBSkNBRGNERUNBQ1FnQTNBd2dnQWtFQU5nSUVJQUFnQXlBQklBSkJDR29nQWtFRWFpQUZRUVJxRU5nSEVHa2FDeUFDUVNCcUpBQU1BUXNnQUNBQ0VGc2FDeUFFUVJCcUpBQUx2d1FDQjM4Q2ZTTUFRUkJySWdZa0FDQUNLQUlBSVFVZ0FBSi9Ba0FnQVNnQ0JDSUVSUTBBSUFFb0FnQUNmeUFFUVFGcklBVnhJQVJwSWdkQkFVME5BQm9nQlNBRUlBVkxEUUFhSUFVZ0JIQUxJZ2hCQW5ScUtBSUFJZ0pGRFFBZ0JFRUJheUVKSUFkQkFVc2hDZ05BSUFJb0FnQWlBa1VOQVNBRklBSW9BZ1FpQjBjRVFBSkFJQXBGQkVBZ0J5QUpjU0VIREFFTElBUWdCMHNOQUNBSElBUndJUWNMSUFjZ0NFY05BZ3NnQWlnQ0NDQUZSdzBBQzBFQURBRUxJQVlnQVNBRklBTVE0Z2dDUUVFQUlBUWdBU2dDREVFQmFyTWlDeUFCS2dJUUlnd2dCTE9VWGhzTkFDQUJJQVFnQkVFQmEzRkJBRWNnQkVFRFNYSWdCRUVCZEhJaUFnSi9JQXNnREpXTklndERBQUNBVDEwZ0MwTUFBQUFBWUhFRVFDQUxxUXdCQzBFQUN5SURJQUlnQTBzYkVNTUJJQUVvQWdRaUJDQUVRUUZyY1VVRVFDQUVRUUZySUFWeElRZ01BUXNnQkNBRlN3UkFJQVVoQ0F3QkN5QUZJQVJ3SVFnTEFrQWdDRUVDZENJRElBRW9BZ0JxS0FJQUlnSkZCRUFnQmlnQ0FDQUJLQUlJTmdJQUlBRWdCaWdDQURZQ0NDQUJLQUlBSUFOcUlBRkJDR28yQWdBZ0JpZ0NBQ0lES0FJQUlnSkZEUUVnQWlnQ0JDRUNBa0FnQkNBRVFRRnJJZ1Z4UlFSQUlBSWdCWEVoQWd3QkN5QUNJQVJKRFFBZ0FpQUVjQ0VDQ3lBQktBSUFJQUpCQW5ScUlBTTJBZ0FNQVFzZ0JpZ0NBQ0FDS0FJQU5nSUFJQUlnQmlnQ0FEWUNBQXNnQmlnQ0FDRUNJQVpCQURZQ0FDQUJJQUVvQWd4QkFXbzJBZ3dnQmhDTEFVRUJDem9BQkNBQUlBSTJBZ0FnQmtFUWFpUUFDeVlCQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUl0QUJ3YUN5QUNFQjhMQ3drQUlBQkJBQkNBR2d0bUFRSi9Jd0JCRUdzaUF5UUFJQU1nQWlnQ0FEWUNEQ01BUVJCcklnSWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnUTJBZ3dnQWlBRU5nSUlJQUJCakFGcUlBQkJDR29nQWtFSWFpQUJJQU5CREdvUTBCb2hBQ0FDUVJCcUpBQWdBMEVRYWlRQUlBQUxLd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQUNBQklBTkJER29Ra1I4aEFDQURRUkJxSkFBZ0FBc2tBQ0FCRUhvaEFTQUFLQUlRSUFFUWxBRkJBUkE0SVFFZ0FDZ0NBQ0FCUVFBUWhRRUxDUUFnQUNnQ0FCQjZDNWdEQVFWL0l3QkIwQUZySWdNa0FDQUFLQUswQmtVRVFDQURRU0JxUWJtaEJVSGhCa0VISUFOQndBRnFFQjBpQkJBWElnVkJHR3BCNCtRSUVBNGFJQVVRR0NBRUVCNExJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFZCQUVnYlJRUkFJQU5CSUdwQnVhRUZRZUlHUVFjZ0EwSEFBV29RSFNJRUVCY2lCVUVZYWtHWDRnZ1FEaG9nQlJBWUlBUVFIZ3NnQUNnQ3NBWWhCU0FBS0FLMEJpRUhJQUFvQWdnaEJDQURRUUEyQWpBZ0EwSUFOd01vSUFOQ0FEY0RJQ0FFSUFOQklHb2dBUkRrQlNFRUlBQW9BclFHSWdGRkJFQWdBMEVnYWtITHNnTkJpZ2xCQnlBRFFjQUJhaEFkSWdFUUZ5SUdRUmhxUWVQa0NCQU9HaUFHRUJnZ0FSQWVJQUFvQXJRR0lRRUxJQUFvQXJBR0lRWWdBMEV3RUJVZ0JCQ1FHaUlFTmdJZ0lBWWdBVUhnQUd4cUlnRkI0QUJySUFRUThnZ2dBVUVVYXlBRFFTQnFJZ0VRamhvZ0FSQzNBaUFIUWVBQWJDQUZha0hnQUdzb0FnQWhBU0FESUFBMkFoQWdBeUFFTmdJTUlBTkI0TmtTTmdJSUlBTWdBMEVJYWlJRU5nSVlJQUFnQVNBQ0lBUVEyQVFnQkJBV0lBTkIwQUZxSkFBTEh3QWdBQ2dDRUNJQVJRUkFFRzhBQ3lBQUlBRWdBQ2dDQUNnQ0dCRUNBQXRDQUNBQUlBRXBBd0EzQXdBZ0FFRUlhaUFCUVFocUVORUJHaUFBUVNCcUlBRkJJR29RMVFZYUlBQkJ6QUJxSUFGQnpBQnFFS1VDR2lBQUlBRXRBRmc2QUZnTFNBQkIzeUVnQVhaQkFYRkZJQUZCRFU5eVJRUkFJQUZCQW5SQnJJQU5haWdDQUE4TElBQW9BZ0JCQURvQUFDQUFLQUlFUVFocUlnQkIyZVVMRUE0YUlBQWdBUkFoR2tFQUMwb0JBWDhnQUVFQU5nSU1JQUFnQXpZQ0VDQUJCRUFnQVJDVkdpRUVDeUFBSUFRMkFnQWdBQ0FFSUFKQkRHeHFJZ0kyQWdnZ0FDQUVJQUZCREd4cU5nSU1JQUFnQWpZQ0JDQUFDeDBBSUFBZ0FVR3ExYXJWQUVFTVFkV3ExYW9CUWRhcTFhb0JFTklNQ3pBQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkJFQWdBQzBBQ0FSQUlBRkJDR29RRHhvTElBRUVRQ0FCRUI4TEN3dWlCQUlLZndGOUFrQUNmMEVDSUFGQkFVWU5BQm9nQVNBQklBRkJBV3R4UlEwQUdpQUJFSDhMSWdJZ0FDZ0NCQ0lCVFFSQUlBRWdBazBOQVNBQlFRTkpJUU1DZnlBQUtBSU1zeUFBS2dJUWxZMGlERU1BQUlCUFhTQU1Rd0FBQUFCZ2NRUkFJQXlwREFFTFFRQUxJUVFnQVNBQ0lBTWdBV2xCQVV0eUJIOGdCQkIvQlNBRVFRRkJJQ0FFUVFGcloydDBJQVJCQWtrYkN5SUJJQUVnQWtrYklnSk5EUUVMSUFBaEEwRUFJUUFDUUNBQ0JFQWdBeUFDRUpjREVHd2dBeUFDTmdJRUEwQWdBQ0FDUmdSQUlBTW9BZ2dpQkVVTkF5QURRUWhxSVFBZ0JDZ0NCQ0VGQWtBZ0Fta2lBVUVCVFFSQUlBVWdBa0VCYTNFaEJRd0JDeUFDSUFWTERRQWdCU0FDY0NFRkN5QURLQUlBSUFWQkFuUnFJQUEyQWdBZ0FrRUJheUVJSUFGQkFVc2hDUU5BSUFRb0FnQWlBVVVOQkNBQktBSUVJUUFDUUNBSlJRUkFJQUFnQ0hFaEFBd0JDeUFBSUFKSkRRQWdBQ0FDY0NFQUN5QUFJQVZIQkVBZ0FFRUNkQ0lISUFNb0FnQnFJZ1lvQWdBRVFDQUJRUWhxSVFvZ0FTRUFBMEFDUUNBQUlnWW9BZ0FpQUVVRVFFRUFJUUFNQVFzZ0NpQUFRUWhxRVBJRElRc2dCaWdDQUNFQUlBc05BUXNMSUFRZ0FEWUNBQ0FHSUFNb0FnQWdCMm9vQWdBb0FnQTJBZ0FnQXlnQ0FDQUhhaWdDQUNBQk5nSUFEQUlMSUFZZ0JEWUNBQ0FBSVFVTElBRWhCQXdBQ3dBRklBTW9BZ0FnQUVFQ2RHcEJBRFlDQUNBQVFRRnFJUUFNQVFzQUN3QUxJQU5CQUJCc0lBTkJBRFlDQkFzTEMrVUJBUUYvSXdCQjRBRnJJZ1VrQUNBRklBSTJBdEFCSUFVZ0FUWUMyQUVnQUNBRktBTFlBU0FGS0FMUUFTQURFTmtFSWdCQm1PZ1BOZ0lFSUFCQnpPZ1BOZ0lBSUFCQnVPZ1BOZ0lBSUFWQnNBRnFJQUJCSkdvZ0JCQldJZ01RVmlFQkl3QkJFR3NpQWlRQUlBRW9BZ0JCZjBjRWZ5QUJRUVJxQlNBQ1FRaHFFSmdFQ3lnQ0FDRUJJQUpCRUdva0FDQUJJQUFvQWdoQkFVRUFRWm5LQ0VISG5nVkJHUkJMSUFNb0FnQkJmMFlFUUNBRlFjZWVCVUVhUVFBZ0JVR2dBV29RSFNJQkVCY2lBa0VZYWtHRjZnZ1FEaG9nQWhBWUlBRVFIZ3NnQlVIZ0FXb2tBQ0FBQ3owQUlBQWdBUkQxRGdSQUlBQW9BZ0JCQURvQUFDQUFRZUN3REJBWklBRVFUU2dDQUMwQUFFRUFSdzhMSUFCQkhHb2dBUkNmRDBFQU5nSUFRUUVMbmdVQ0NuOENmU01BUVNCcklnZ2tBQ0FJSUFFMkFoQWdDRUVRYWlFSkl3QkJFR3NpQlNRQUlBRVF6Z1loQXlBSUFuOENRQ0FBS0FJRUlnSkZEUUFnQUNnQ0FBSi9JQUpCQVdzZ0EzRWdBbWtpQmtFQlRRMEFHaUFESUFJZ0Ewc05BQm9nQXlBQ2NBc2lCMEVDZEdvb0FnQWlCRVVOQUNBQ1FRRnJJUW9nQmtFQlN5RUxBMEFnQkNnQ0FDSUVSUTBCSUFNZ0JDZ0NCQ0lHUndSQUFrQWdDMFVFUUNBR0lBcHhJUVlNQVFzZ0FpQUdTdzBBSUFZZ0FuQWhCZ3NnQmlBSFJ3MENDeUFFUVFocUlBRVE4Z05GRFFBTFFRQU1BUXRCR0JBVklRRWdCU0FBUVFocU5nSUVJQVVnQVRZQ0FDQUJRUWhxSUFrb0FnQVFWRUVBTmdJTUlBVkJBVG9BQ0NBQlFRQTJBZ0FnQVNBRE5nSUVBa0JCQUNBQ0lBQW9BZ3hCQVdxeklnd2dBQ29DRUNJTklBS3psRjRiRFFBZ0FDQUNJQUpCQVd0eFFRQkhJQUpCQTBseUlBSkJBWFJ5SWdFQ2Z5QU1JQTJWalNJTVF3QUFnRTlkSUF4REFBQUFBR0J4QkVBZ0RLa01BUXRCQUFzaUJ5QUJJQWRMR3hDY0R5QUFLQUlFSWdJZ0FrRUJhM0ZGQkVBZ0FrRUJheUFEY1NFSERBRUxJQUlnQTBzRVFDQURJUWNNQVFzZ0F5QUNjQ0VIQ3dKQUlBZEJBblFpQXlBQUtBSUFhaWdDQUNJQlJRUkFJQVVvQWdBZ0FDZ0NDRFlDQUNBQUlBVW9BZ0EyQWdnZ0FDZ0NBQ0FEYWlBQVFRaHFOZ0lBSUFVb0FnQWlBU2dDQUNJRFJRMEJJQU1vQWdRaEJBSkFJQUlnQWtFQmF5SURjVVVFUUNBRElBUnhJUVFNQVFzZ0FpQUVTdzBBSUFRZ0FuQWhCQXNnQUNnQ0FDQUVRUUowYWlBQk5nSUFEQUVMSUFVb0FnQWdBU2dDQURZQ0FDQUJJQVVvQWdBMkFnQUxJQVVvQWdBaEJDQUZRUUEyQWdBZ0FDQUFLQUlNUVFGcU5nSU1JQVVRbXc5QkFRczZBQndnQ0NBRU5nSVlJQVZCRUdva0FDQUlLQUlZSVFBZ0NFRWdhaVFBSUFCQkZHb0xGZ0FnQUNBQkVOOEVJQUJCSEdvZ0FVRWNhaERmQkF1TEN3SU5md0o5SXdCQk1Hc2lCeVFBSUFjZ0FqWUNDQ0FISUFFMkFnd2dCeUFETmdJRUlBQW9BZ0FoQlNBSFFSQnFJQUVnQWlBREVMb2FJQWRCR0dvZ0IwRWNhaUFIUVNCcUVMOEhJUVlnQlVITUFHb2hDUUpBQWtBZ0JTZ0NVQ0lEUlEwQUlBa29BZ0FDZnlBRFFRRnJJQVp4SUFOcElnRkJBVTBOQUJvZ0JpQURJQVpMRFFBYUlBWWdBM0FMSWdCQkFuUnFLQUlBSWdKRkRRQWdBMEVCYXlFSUlBY29BaUFoQkNBSEtBSWNJUW9nQnlnQ0dDRU1JQUZCQVVzaERRTkFJQUlvQWdBaUFrVU5BU0FHSUFJb0FnUWlBVWNFUUFKQUlBMUZCRUFnQVNBSWNTRUJEQUVMSUFFZ0Ewa05BQ0FCSUFOd0lRRUxJQUFnQVVZTkFRd0NDeUFDS1FJSVFpQ0lweUlMS0FJSUlBeEhEUUFnQ3lnQ0RDQUtSdzBBSUFzb0FoQWdCRWNOQUFzTUFRc2dCVUV3YWlJQkVLb0RJZ0lnQnlnQ0RDQUhLQUlJSUFjb0FnUVF1aG9nQVNBQ0VDZ2dBU0FCS0FJWVFRRnFOZ0lZSUFJaEN3SkFJQVVvQWxBaUEwVU5BQ0FKS0FJQUFuOGdBMEVCYXlBR2NTQURhU0lCUVFGTkRRQWFJQVlnQXlBR1N3MEFHaUFHSUFOd0N5SUFRUUowYWlnQ0FDSUNSUTBBSUFOQkFXc2hDQ0FCUVFGTElRUURRQ0FDS0FJQUlnSkZEUUVnQmlBQ0tBSUVJZ0ZIQkVBQ1FDQUVSUVJBSUFFZ0NIRWhBUXdCQ3lBQklBTkpEUUFnQVNBRGNDRUJDeUFBSUFGSERRSUxJQUlvQWd3Z0N4RG1CVVVOQUFzTUFRdEJFQkFWSWdvZ0JqWUNCQ0FLSUFhdElBdXRRaUNHaERjQ0NDQUtRUUEyQWdBZ0JVSFVBR29oREFKQVFRQWdBeUFGS0FKWVFRRnFzeUlSSUFVcUFsd2lFaUFEczVSZUd3MEFBa0FDUUFKL1FRSWdBeUFEUVFGcmNVRUFSeUFEUVFOSmNpQURRUUYwY2lJQUFuOGdFU0FTbFkwaUVVTUFBSUJQWFNBUlF3QUFBQUJnY1FSQUlCR3BEQUVMUVFBTElnRWdBQ0FCU3hzaUFFRUJSZzBBR2lBQUlBQWdBRUVCYTNGRkRRQWFJQUFRZndzaUJDQUZLQUpRSWdCTkJFQWdBQ0FFVFEwQ0lBQkJBMGtoQWdKL0lBVW9BbGl6SUFVcUFseVZqU0lSUXdBQWdFOWRJQkZEQUFBQUFHQnhCRUFnRWFrTUFRdEJBQXNoQVNBQUlBUWdBaUFBYVVFQlMzSUVmeUFCRUg4RklBRkJBVUVnSUFGQkFXdG5hM1FnQVVFQ1NSc0xJZ0FnQUNBRVNSc2lCRTBOQWlBRVJRMEJDeUFFUVlDQWdJQUVTUVJBSUFrZ0JFRUNkQkFWRUd3Z0JTQUVOZ0pRUVFBaEFnTkFJQUlnQkVZRVFDQUZLQUpVSWdORkRRUWdBeWdDQkNFSUFrQWdCR2tpQUVFQlRRUkFJQWdnQkVFQmEzRWhDQXdCQ3lBRUlBaExEUUFnQ0NBRWNDRUlDeUFKS0FJQUlBaEJBblJxSUF3MkFnQWdCRUVCYXlFUElBQkJBVXNoRUFOQUlBTW9BZ0FpQUVVTkJTQUFLQUlFSVFFQ1FDQVFSUVJBSUFFZ0QzRWhBUXdCQ3lBQklBUkpEUUFnQVNBRWNDRUJDd0pBSUFFZ0NFWU5BQ0FBSVFJZ0FVRUNkQ0lOSUFrb0FnQnFJZzRvQWdCRkJFQWdEaUFETmdJQUlBRWhDQXdCQ3dOQUFrQWdBaUlCS0FJQUlnSkZCRUJCQUNFQ0RBRUxJQUFvQWd3Z0FpZ0NEQkRtQlNFT0lBRW9BZ0FoQWlBT0RRRUxDeUFESUFJMkFnQWdBU0FKS0FJQUlBMXFLQUlBS0FJQU5nSUFJQWtvQWdBZ0RXb29BZ0FnQURZQ0FBd0JDeUFBSVFNTUFBc0FCU0FKS0FJQUlBSkJBblJxUVFBMkFnQWdBa0VCYWlFQ0RBRUxBQXNBQ3hEN0FRQUxJQWxCQUJCc0lBVkJBRFlDVUFzZ0JTZ0NVQ0lESUFOQkFXc2lBSEZGQkVBZ0FDQUdjU0VBREFFTElBTWdCa3NFUUNBR0lRQU1BUXNnQmlBRGNDRUFDd0pBQWtBZ0NTZ0NBQ0FBUVFKMGFpSUFLQUlBSWdKRkJFQWdDaUFGS0FKVU5nSUFJQVVnQ2pZQ1ZDQUFJQXcyQWdBZ0NpZ0NBQ0lBUlEwQ0lBQW9BZ1FoQWdKQUlBTWdBMEVCYXlJQWNVVUVRQ0FBSUFKeElRSU1BUXNnQWlBRFNRMEFJQUlnQTNBaEFnc2dDU2dDQUNBQ1FRSjBhaUVDREFFTElBb2dBaWdDQURZQ0FBc2dBaUFLTmdJQUN5QUZJQVVvQWxoQkFXbzJBbGdMSUFkQk1Hb2tBQ0FMQzBJQkFYOENRQ0FBTFFBNElnSWdBUzBBT0VZRVFDQUNSUTBCSUFBZ0FSQ2dEd3dCQ3lBQ0JFQWdBQkNuR2d3QkN5QUFJQUVReWdzTElBQWdBU2tDUERjQ1BBdVhBUUVCZmlBQUJIOENmMEVBSUFBb0FnUWlBQ2tERUVLQ2dJT0VnSWdpZ3lJQklBRkNBWDJEVUEwQUdrRUJBbjlCQUNBQUtRTVFRb0NBZ1lTQWlDQ0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FFSEl5eElRU0EwQUdpQUFFS0FhQ3cwQUdnSi9RUUFnQUNrREVFS0NnSUtBZ0lBQ2d5SUJJQUZDQVgyRFVBMEFHa0VCSUFBUW54b05BQm9nQUVHWXl4SVFTQXNMQlVFQUN3c0xBQ0FBUWVETEVoQytEQXMvQVFGK0lBQUVmd0ovUVFBZ0FDZ0NCQ0lBS1FNUVFvS0Fnb0NBaUNDRElnRWdBVUlCZllOUURRQWFRUUVnQUJDZ0dnMEFHaUFBRUo4YUN3VkJBQXNMQ3dBZ0FFSEl5eElRdmd3TERBQWdBQ2dDQkVISXl4SkdDelVCQW44akFFSFFBR3NpQWlRQUlBSkJDR29nQUJEYUd5RURJQUFnQVJDaUR5QUJJQU1Rb2c4Z0F4RG5CeUFDUWRBQWFpUUFDellCQVg4akFFRVFheUlESkFBZ0F5QUFJQUVRcnc4MkFnd2dBQ0FBUWRnQ2FpQURRUXhxSUFJUW9nc2hBQ0FEUVJCcUpBQWdBQXVlQVFFRmZ5TUFRUkJySWdVa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdRMkFnd2dCU0FFTmdJSUl3QkJFR3NpQkNRQUlBQkJqQUZxSWdZUS9RVWhCeUFDS0FJQUlRSWdCU2dDQ0NFSUlBQW9BZ2doQUNBRUlBTkJDR28yQWdnZ0JDQURLQUlJSUFOSE9nQU1JQVlnQnlBQUlBZ2dBU0FDSUFSQkNHb1EvZ1VpQUJBb0lBWWdCaWdDR0VFQmFqWUNHQ0FFUVJCcUpBQWdCVUVRYWlRQUlBQUxpQUVCQVg4akFFRWdheUlGSkFBZ0JTQUNLQUlBTmdJY0l3QkJJR3NpQWlRQUlBSWdBeWdDQURZQ0VDQUVLQUlBSVFNZ0FrRUNOZ0ljSUFJZ0F6WUNGQ0FDSUFKQkVHbzJBaGdnQWlBQ0tRTVlOd01JSUFWQkNHb2lBeUFDUVFocUVMVUNHaUFDUVNCcUpBQWdBQ0FCSUFWQkhHb2dBeENxRHlFQUlBTVFxZ0VnQlVFZ2FpUUFJQUFMc2dFQkEzOGpBRUVRYXlJQ0pBQUNRQUpBSUFFb0FoUWlCRVVOQUNBQUtBSUFJUU1nQkNnQ0JFRzRyUkpIRFFBZ0FTZ0NFQ0lBUlEwQUlBSWdBRFlDRENBRFFZU0VBV29nQWtFTWFoRDNCMFVOQUVFQklRQWdBU2dDQkVHZ2xoSkhEUUVnQWlBQktBSXdLQUlrTmdJSUlBTkI4SU1CYWlBQ1FRaHFFUFVESWdORkRRRWdBaUFCS0FJd0tBSXNOZ0lFSUFOQktHb2dBa0VFYWhDcEFrRUFSeUVBREFFTFFRQWhBQXNnQWtFUWFpUUFJQUFMYXdFRGZ5TUFRVEJySWdNa0FDQUNLQUlBSVFVZ0F5QUNLQUlFSUFJdEFBc2lCQ0FFUVJoMFFSaDFRUUJJSWdRYk5nSU1JQU1nQlNBQ0lBUWJOZ0lJSUFNZ0F5a0RDRGNEQUNBRFFSQnFJZ0lnQUNBREVPRUJJQUFnQVNBQ0VNNENJUUFnQTBFd2FpUUFJQUFMTmdFQmZ5TUFRUkJySWdRa0FDQUVJQU1wQWdBM0F3Z2dBQ0FBUWRnQ2FpQUJJQUlnQkVFSWFoREFHaUVBSUFSQkVHb2tBQ0FBQ3pzQkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFCQjJBSnFJQUVReWhvaUFUWUNEQ0FBSUFGQkVHb2dBa0VNYWhDekF5RUFJQUpCRUdva0FDQUFDellCQVg4akFFRVFheUlESkFBZ0F5QUFJQUVRcnc4MkFnd2dBQ0FBUWRnQ2FpQURRUXhxSUFJUWxRUWhBQ0FEUVJCcUpBQWdBQXNQQUNBQUlBQkIyQUpxSUFFUXlob0xuZ0VCQlg4akFFRVFheUlGSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlFTmdJTUlBVWdCRFlDQ0NNQVFSQnJJZ1FrQUNBQVFZd0JhaUlHRVAwRklRY2dBaWdDQUNFQ0lBVW9BZ2doQ0NBQUtBSUlJUUFnQkNBRFFRUnFOZ0lJSUFRZ0F5Z0NCQ0FEUnpvQURDQUdJQWNnQUNBSUlBRWdBaUFFUVFocUVQNEZJZ0FRS0NBR0lBWW9BaGhCQVdvMkFoZ2dCRUVRYWlRQUlBVkJFR29rQUNBQUN6WUJBWDhqQUVFUWF5SURKQUFnQXlBQUlBRVEyZ1EyQWd3Z0FDQUFRZGdDYWlBRFFReHFJQUlRb2dzaEFDQURRUkJxSkFBZ0FBczdBUUYvSXdCQkVHc2lBeVFBSUFNZ0FTZ0NBRFlDRENBRElBSW9BZ0EyQWdnZ0FDQURRUXhxSUFOQkNHb1FwQXNoQUNBRFFSQnFKQUFnQUF0bkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDTUFRUkJySWdFa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdNMkFnd2dBU0FETmdJSUlBQkJqQUZxSUFCQkNHb2dBVUVJYWlBQVFkZ0NhaUFDUVF4cUVKTWJJUUFnQVVFUWFpUUFJQUpCRUdva0FDQUFDNmNDQVFaL0l3QkJRR29pQWlRQUlBRkJCR29pQkNnQ0FFSFlBbW9oQXlBQUtBSUVLQUlnSVFVakFFR2dBV3NpQmlRQUFuOENRQUpBQWtBQ1FDQUZRUUpyRGdNQUFRSURDeUFFSUFNUTR4b01Bd3NnQkNBREVPSWFEQUlMSUFRZ0F4RGhHZ3dCQ3lBRUtBSUFJZ01RSENBR1FjQ3VBMEdrQmtFR0lBTkJ5QUpxRUJjaUEwRVlhaUlIUWE2b0NoQU9HaUFISUFVUUlSb2dBeEFZUVFBTElRTWdCa0dnQVdva0FDQUNJQUFvQWdRb0FpUTJBamdnQVNBQUtBSUFFTFVQSVFBZ0FrRUJOZ0ljSUFJZ0FEWUNGQ0FDSUFKQkZHbzJBaGdnQWlBQ0tRTVlOd01JSUFJZ0FrRWdhaUFDUVFocUVKY0NJZ0JCQkdvMkFqQWdBaUFBSUFBb0FnUkhPZ0EwSUFRZ0F5QUNRVGhxSUFKQk1Hb1E0Z2NoQVNBQUVLZ0JJQUpCUUdza0FDQUJDd3NBSUFCQjJJSVNFTndTQ3c0QUlBQWdBUkNtQzBFQk9nQjRDL0lCQWdSL0FYNGdBU0FBS0FLb0Frc0VRQ0FBS0FLZ0FpRURJQUFoQWlBQUlBRkJERThFZjBGL0lBR3RRaGgrSWdhbklBWkNJSWluR3hBVklRSWdBUVZCREFzMkFxZ0NJQUFnQWpZQ29BSkJBQ0VDQTBBZ0FDZ0NwQUlnQWswRVFDQUFJQU1RTmdVZ0FrRVliQ0lFSUFBb0FxQUNhaUlGSUFNZ0JHb2lCQ2tDQURjQ0FDQUZJQVFwQWhBM0FoQWdCU0FFS1FJSU53SUlJQUpCQVdvaEFnd0JDd3NMSUFBb0FxUUNJZ0lnQVNBQklBSkpHeUVGQTBBZ0FpQUZSd1JBSUFBb0FxQUNJQUpCR0d4cUlnTkNBRGNDRUNBRFFRQTZBQXdnQTBFQU9nQUFJQUpCQVdvaEFnd0JDd3NnQUNBQk5nS2tBZ3RQQVFKL0l3QkJFR3NpQXlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQkRZQ0RDQURJQVEyQWdnZ0FFR01BV29nQUVFSWFpQURRUWhxSUFCQjJBSnFJQUVnQWhEcEdpRUFJQU5CRUdva0FDQUFDMVFCQVg4Q1FDQUFMUUI0SWdJZ0FTMEFlRVlFUUNBQ1JRMEJJQUFnQVNnQ0FEWUNBQ0FBUVFocUlBRkJDR29ReVE4TUFRc2dBZ1JBSUFBUTZ4b01BUXNnQUNBQkVMZ1BDeUFBSUFFcEE0QUJOd09BQVF2Y0FRRURmeUFCSUFBb0FyZ0dTd1JBSUFBb0FyQUdJUU1nQUNBQkVJZ2JBMEFnQUNnQ3RBWWdBazBFUUNBQUlBTVFOZ1VnQWtHSUFXd2lCQ0FBS0FLd0Jtb2dBeUFFYWlJRUVPb2FHaUFFRUlrSklBSkJBV29oQWd3QkN3c0xJQUFvQXJRR0lRSURRQ0FCSUFKUEJFQUNRQ0FBS0FLMEJpSUNJQUVnQVNBQ1NSc2hCQU5BSUFJZ0JFWU5BU0FBS0FLd0JpQUNRWWdCYkdvaUEwSUFOd09BQVNBRFFRQTZBSGdnQTBFQU9nQUFJQUpCQVdvaEFnd0FDd0FMQlNBQUtBS3dCaUFDUVFGcklnSkJpQUZzYWhDSkNRd0JDd3NnQUNBQk5nSzBCZ3Y4QWdFTWZ5QUFLQUlBSWdRb0FxQUVJZ2NnQUNnQ0RFWUVRQ0FBS0FJSUR3c2pBRUVRYXlJQkpBQWpBRUhBQVdzaUF5UUFJQU5CdUFGcUlBUWdBRUVFYWlJQ0VNSVBJQVFvQXBRRUlnaEJBV3NoQ1NBQ0tBSUFJUW9nQkNnQ2tBUWhDeUFES0FLOEFTRU1JQU1vQXJnQklRSUNRQU5BSUFVZ0NFY0VRQ0FMSUFKQkxHeHFJZ1l0QUNCRkJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REN3SkFJQVlvQWlRZ0RFY05BQ0FLSUFZb0FnQkhEUUFnQVNBQ05nSU1JQUZCQVRvQUNBd0RDeUFGSUFZb0FpaExCRUFnQVVFQU5nSU1JQUZCQURvQUNBd0RCU0FDUVFGcVFRQWdBaUFKUnhzaEFpQUZRUUZxSVFVTUFnc0FDd3NnQTBFSWFrR0d0UU5CbmdSQkRpQURRYWdCYWhBZElnSVFGeUlGUVJocVFkSTFFQTRhSUFVUUdDQUJRUUEyQWd3Z0FVRUFPZ0FJSUFJUUhnc2dBMEhBQVdva0FDQUJLQUlNSVFNZ0JDZ0NrQVFoQWlBQkxRQUlJUVFnQVVFUWFpUUFJQUFnQnpZQ0RDQUFJQUlnQTBFc2JHcEJCR3BCQUNBRUd5SUFOZ0lJSUFBTFBnRUJmeU1BUVJCcklnVWtBQ0FGSUFNMkFnZ2dCU0FBSUFJUTh3STJBZ1FnQUNBQklBVkJCR29nQlVFSWFpQUVFUFlhSVFBZ0JVRVFhaVFBSUFBTFFnRUJmd0pBSUFBdEFDQWlBaUFCTFFBZ1JnUkFJQUpGRFFFZ0FDQUJFUG9hREFFTElBSUVRQ0FBRUpFTURBRUxJQUFnQVJDdkN3c2dBQ0FCS1FJa053SWtDellCQVg4RFFDQUFLQUtFQWlBQlRRUkFJQUJCQURZQ2hBSUZJQUFvQW9BQ0dpQUJRUUZxSVFFTUFRc0xJQUFnQUNnQ2dBSVFOZ3RRQVFGL0lBQW9Bb1FDSWdJZ0FDZ0NpQUpQQkVBZ0FDQUFLQUtJQWlJQ1FRRjBRUUlnQWhzUXFnc2dBQ2dDaEFJaEFnc2dBQ0FDUVFGcU5nS0VBaUFBS0FLQUFpQUNRUVYwYWlBQkVJVUpHZ3MzQVFGL0l3QkJFR3NpQXlRQUlBSW9BZ0FRL0FJaEFpQUJLQUtVQkNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBZ0EwRVFhaVFBQ3hZQUlBQVFzQXNnQUJEdkN5QUFJQUFvQXBBRUVEWUxLQUFnQUVJQU53S2NCQ0FBUW9DQWdJREFBVGNDbEFRZ0FDQUFOZ0tRQkNBQVFRd1FoZ2tnQUFzUkFDQUFMUURVQWtVRVFCQnZBQXNnQUFzTUFDQUFRUWhxRUljSklBQUxvd0VCQlg4akFFRVFheUlHSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlGTmdJTUlBWWdCVFlDQ0NNQVFSQnJJZ1VrQUNBQVFZd0JhaUlIRUxNRklRZ2dCaWdDQ0NFSklBQW9BZ2doQUNBRklBTkJDR28yQWdnZ0JTQURLQUlJSUFOSE9nQU1JQVVnQkNrQ0FEY0RBQ0FISUFnZ0FDQUpJQUVnQWlBRlFRaHFJQVVRd1FjaUFCQW9JQWNnQnlnQ0dFRUJhallDR0NBRlFSQnFKQUFnQmtFUWFpUUFJQUFMUWdFQmZ3SkFJQUF0QUNBaUFpQUJMUUFnUmdSQUlBSkZEUUVnQUNBQkVJVWJEQUVMSUFJRVFDQUFFSVliREFFTElBQWdBUkRQQ3dzZ0FDQUJLUU1vTndNb0N6NEJBWDhqQUVFUWF5SUNKQUFnQUNBQlJ3UkFJQUlnQVVIZ0FHbzJBZ2dnQWlBQktBSmdJQUZIT2dBTUlBQWdBa0VJYWhDMkd3c2dBa0VRYWlRQUM1WUJBUUovQWtBZ0FDMEE4QThpQWlBQkxRRHdEMFlFUUNBQ1JRMEJJQUFnQVNnQ0FEWUNBQ0FBUVFocUlnSWdBVUVJYWlJREVKb1FJQUpCK0FCcUlBTkIrQUJxRU1rUElBSkI2QUZxSUFOQjZBRnFFTWtQSUFKQjJBSnFJQU5CMkFKcUVJa2JJQUpCb0FscUlBTkJvQWxxRUlrYkRBRUxJQUlFUUNBQUVJb2JEQUVMSUFBZ0FSRGdEd3NnQUNBQktRUDREemNEK0E4TE5RRUJmd05BSUFBb0FyUUdJQUZOQkVBZ0FFRUFOZ0swQmdVZ0FDZ0NzQVlnQVVHSUFXeHFFSWtKSUFGQkFXb2hBUXdCQ3dzTHJ3RUJCSDhqQUVFUWF5SURKQUFqQUVFZ2F5SUVKQUFqQUVFZ2F5SUNKQUFnQWtFSWFpSUZJQUVRK3dVZ0FpQUNLQUlNSUFJdEFCTWlBU0FCUVJoMFFSaDFRUUJJSWdFYk5nSWNJQUlnQWlnQ0NDQUZJQUViTmdJWUlBSWdBaWtER0RjREFDQUVJQUFnQWhEaEFTQUZFQThhSUFKQklHb2tBQ0FBSUFCQjJBSnFJQVFRemdJaEFTQUVRU0JxSkFBZ0F5QUJOZ0lNSUFBZ0FVRVFhaUFEUVF4cUVMTURJUUFnQTBFUWFpUUFJQUFMcndFQkJIOGpBRUVRYXlJREpBQWpBRUVnYXlJRUpBQWpBRUVnYXlJQ0pBQWdBa0VJYWlJRklBRVE5aEFnQWlBQ0tBSU1JQUl0QUJNaUFTQUJRUmgwUVJoMVFRQklJZ0ViTmdJY0lBSWdBaWdDQ0NBRklBRWJOZ0lZSUFJZ0Fpa0RHRGNEQUNBRUlBQWdBaERoQVNBRkVBOGFJQUpCSUdva0FDQUFJQUJCMkFKcUlBUVF6Z0loQVNBRVFTQnFKQUFnQXlBQk5nSU1JQUFnQVVFUWFpQURRUXhxRUxNRElRQWdBMEVRYWlRQUlBQUxFUUFnQUJETER5QUFJQUFvQXJBR0VEWUxTZ0VCZnlNQVFUQnJJZ01rQUNBRElBSTJBZ2dnQXlBQ0VOd0JOZ0lNSUFNZ0F5a0RDRGNEQUNBRFFSQnFJZ0lnQUNBREVPRUJJQUFnQVNBQ0VNNENJUUFnQTBFd2FpUUFJQUFML3dVQkNuOGdBQ2dDQUVIWUFtb2hCU01BUVJCcklnUWtBQ0FFSUFJMkFnUWdCQ0FCTmdJSUlBUWdBellDQUFKL0lBTUVRQ0FBS0FJQUlnRWhEQ01BUWVBQWF5SUFKQUFqQUVFZ2F5SUNKQUFnQWlBQklBUkJCR29RekE4MkFnd2dBaUFFS0FJSU5nSVFJQUVnQkJETkR5RURJQUpCQXpZQ0hDQUNJQU0yQWhRZ0FpQUNRUXhxTmdJWUlBSWdBaWtER0RjREFDQUFRY2dBYWlBQ0VQSUdHaUFDUVNCcUpBQUNmeUFBS0FKWVJRUkFJQUJCdE1nQk5nSWdJQUJCdE1nQkVOd0JOZ0lrSUFBZ0FDa0RJRGNEQ0NBQVFTaHFJZ0lnQVNBQVFRaHFFT0VCSUFFZ0JTQUNFTTRDREFFTElBQkJ0TWdCTmdJWUlBQkJ0TWdCRU53Qk5nSWNJQUFnQUNrREdEY0RFQ0FBUVNocUlnSWdBU0FBUVJCcUVPRUJJd0JCRUdzaUJpUUFJQUVRSENBQklBRW9BZ3hCQVdvaUF6WUNEQ0FHSUFNMkFnZ2pBRUVRYXlJREpBQWdBVUdNQVdvaUJ4Q3pCU0VJSUFZb0FnZ2hDU0FCS0FJSUlRb2dBeUFBUWNnQWFpSUJRUXhxTmdJSUlBRW9BZ3doQ3lBRFFRQTZBQVFnQTBIQW5DQTJBZ0FnQXlBQklBdEhPZ0FNSUFjZ0NDQUtJQWtnQlNBQ0lBTkJDR29nQXhEQkJ5SUJFQ2dnQnlBSEtBSVlRUUZxTmdJWUlBTkJFR29rQUNBR1FSQnFKQUFnQVFzaEFTQUFRY2dBYWhDc0F5QUFRZUFBYWlRQUlBd2dBUkNCQXd3QkN5QUFLQUlBSWdNaERTTUFRZUFBYXlJQUpBQWpBRUVnYXlJQkpBQWdBU0FESUFSQkJHb1F6QTgyQWhBZ0JDZ0NDQ0VDSUFGQkFqWUNIQ0FCSUFJMkFoUWdBU0FCUVJCcU5nSVlJQUVnQVNrREdEY0RDQ0FBUWNnQWFpQUJRUWhxRUxVQ0dpQUJRU0JxSkFBQ2Z5QUFLQUpVUlFSQUlBQkJ0TWdCTmdJZ0lBQkJ0TWdCRU53Qk5nSWtJQUFnQUNrRElEY0RDQ0FBUVNocUlnSWdBeUFBUVFocUVPRUJJQU1nQlNBQ0VNNENEQUVMSUFCQnRNZ0JOZ0lZSUFCQnRNZ0JFTndCTmdJY0lBQWdBQ2tER0RjREVDQUFRU2hxSWdJZ0F5QUFRUkJxRU9FQklBTWdCU0FDSUFCQnlBQnFFSkViQ3lFQklBQkJ5QUJxRUtvQklBQkI0QUJxSkFBZ0RTQUJFSUVEQ3lFQUlBUkJFR29rQUNBQUM4UUJBUU4vSXdCQkVHc2lCQ1FBSUFBb0FnQWhCU0FFSUFNcEFnQTNBd2dqQUVIZ0FHc2lBeVFBSUFBb0FnQWhBQ0FEUVFVMkFqd2dBMEhzR3pZQ09DQURJQU1wQXpnM0F3Z2dBMEZBYXlJR0lBQWdBMEVJYWhEaEFTQURJQUUyQWhBZ0FpZ0NBQ0VCSUFOQkFqWUNIQ0FESUFFMkFoUWdBeUFEUVJCcU5nSVlJQU1nQXlrREdEY0RBQ0FBSUFBZ0JVSFlBbW9nQmlBRFFTQnFJQU1RdFFJaUFDQUVRUWhxRU1jUEVJRURJUUVnQUJDcUFTQURRZUFBYWlRQUlBUkJFR29rQUNBQkN3c0FJQUJCaS93Q0VNb0dDd3NBSUFCQjhQd0dFTW9HQzY0QkFRTi9Jd0JCOEE5cklnUWtBQ0FFRUl3TUlnTkIrQUJxUVFCQjhBQVFlU0VGSUFOQkJEWUM0QUVnQXlBRk5nTFlBU0FEUWVnQmFrRUFRZkFBRUhraEJTQURRUVEyQXRBQ0lBTWdCVFlDeUFJZ0EwSFlBbW9Ra0JzZ0EwR2dDV29Ra0JzZ0JFSG9EMm9nQVNBQ0lBTVFqeHNnQXhESEJpQUVLQUxzRHlFRElBQWdBVFlDQUNBQ0tBSUFJUUlnQUNBRE5nSUlJQUFnQWpZQ0JDQUFJQUVvQXBSZ05nSU1JQVJCOEE5cUpBQUxEd0FnQUNBQlFaaStFa0VSRUl3SUM1a0hBaFovQVg0akFFRXdheUlHSkFBZ0FTZ0NCQ0VVSUFFb0FnQWhEQUpBSUFBb0FnUkJBV3RCUGtzTkFDQU1JQlJCQW5ScUlSa2dBQ2tDQUNFYVFRVWhBQ0FNSVFFRFFDQUJJQmxHQkVBZ0VFVU5BaUFDUVFocVFiU09DUkFPR2lBR0lBTXBBZ0EzQXlnZ0FpQUdRU2hxRUxZRVFRaHFJZ0FnRUJBT0dpQUFRWjN6REJBT0dnVWdCaUFCS0FJQUloVTJBaUFnQmlBVkVOd0JOZ0lrSUFZZ0dqY0RHQ0FHSUJvM0F3Z2dCaUFHS1FNZ053TVFJd0JCb0FKcklnY2tBQ0FHS0FJTUlSRWdCaWdDRkNFU0lBZENnSUNBZ0lBSU53S1VBa0VCSVFnZ0J5QUhRUkJxSWdrMkFwQUNJQkZCQVdvaUV5QVNRUUZxSWcxc0lnUWdDU2dDaUFKTEJFQWdDU2dDZ0FJaER5QUpJQVFRNUE0Z0NTZ0NnQUloQzBFQUlRVURRQ0FKS0FLRUFpQUZUUVJBSUFrZ0R4QTJCU0FMSUFWQkFuUWlCR29nQkNBUGFpZ0NBRFlDQUNBRlFRRnFJUVVNQVFzTEN5QUhLQUtRQWlJS1FRQTJBZ0JCQVNFRkEzOGdCU0FOUmdSL0EwQWdDQ0FUUmdSQUFrQWdCMEVRYWlFV0lBWW9BZ2doQ1NBR0tBSVFJUTlCQVNFT0EwQWdEaUFSU3cwQklBMGdEbXdoRnlBT1FRRnJJZ1FnRFd3aEdDQUVJQWxxSVJOQkFTRUlBMEFnQ0NBU1N3UkFJQTVCQVdvaERnd0NCU0FQSUFoQkFXc2lDMm90QUFBaEJTQVRMUUFBSVFRZ0J5QUtJQXNnRjJwQkFuUnFLQUlBUVFGcU5nSUVJQWNnQ2lBSUlCaHFRUUowYWlnQ0FFRUJhallDQ0NBSElBb2dDeUFZYWtFQ2RHb29BZ0FnQkNBRlIybzJBZ3dqQUVFUWF5SUxKQUFDUUNBV0lBZEJCR29pQkVZTkFDQUVJUVVEUUNBRlFRUnFJZ1VnRmtZTkFTQUZJQVFnQlNnQ0FDQUVLQUlBU1JzaEJBd0FDd0FMSUF0QkVHb2tBQ0FIS0FLUUFpSUtJQWdnRjJwQkFuUnFJQVFvQWdBMkFnQWdDRUVCYWlFSURBRUxBQXNBQ3dBTEJTQUtJQWdnRFd4QkFuUnFJQWcyQWdBZ0NFRUJhaUVJREFFTEN5QUtJQTBnRVd3Z0VtcEJBblJxS0FJQUlRUWdCMEVRYWhDVEJTQUhRYUFDYWlRQUlBUUZJQW9nQlVFQ2RHb2dCVFlDQUNBRlFRRnFJUVVNQVFzTElnUWdBQ0FBSUFSTElnUWJJUUFnRlNBUUlBUWJJUkFnQVVFRWFpRUJEQUVMQ3dzZ0FrRUlhaUlGUVlIckN4QU9HaUFNSUJSQkFuUnFJUVFnQXlrQ0FDRWFJQXdoQVFOQUlBRWdCRWNFUUNBQktBSUFJZ01nRENnQ0FFY0VRQ0FGUWZUdERCQU9HZ3NnQlVIem1na1FEaG9nQmlBYU53TW9JQUlnQmtFb2FoQzJCRUVJYWlJQUlBTVFEaG9nQUVIem1na1FEaG9nQVVFRWFpRUJEQUVMQ3lBR1FUQnFKQUFMQ3dBZ0FFSEk2d1FRRkJvTFFnRUJmaUFBUlFSQVFRQVBDd0ovUVFBZ0FDZ0NCQ0lBS1FNUVFvQ0FnSUNRaUlTQUFZTWlBU0FCUWdGOWcxQU5BQnBCQVNBQUVOZ0xEUUFhSUFBUTJRc0xDeUFBSUFBUXNoc0VmMEVCQlNBQUVMUURCSDhnQUNnQ0dCQ3lHd1ZCQUFzTEMza0FJQUFRdVJzaUFFSFFzQkkyQWdRZ0FFSElzUkkyQWdBZ0FFR1VzUkkyQWdBZ0FFRUlhaUFCRUZZYUlBQWdCallDT0NBQUlBVTJBalFnQUNBRU5nSXdJQUFnQXpZQ0xDQUFJQUkyQWlnZ0FDQUhLUUlBTndJOElBQWdCeWtDQ0RjQ1JDQUFJQWNwQWhBM0Frd2dBQ0FIS1FJWU53SlVJQUFMSlFFQmZ5QUFLQUlJSVFJRFFDQUJJQUpHUlFSQUlBQWdBa0VFYXlJQ05nSUlEQUVMQ3d1aUFRRUNmeUFBS0FJQUlnWkJDR29pQlVIeDlnZ1FEaG9nQlNBR0tBSUlRUXhyS0FJQWFpQUFLQUlFS0FJQU5nSU1JQVVnQVJBaEdpQUZRYW40Q0JBT0dpQUZJQVlvQWdoQkRHc29BZ0JxSUFBb0FnZ29BZ0EyQWd3Z0JTQUNFQ0VhSUFWQjZQZ0lFQTRhSUFVZ0JpZ0NDRUVNYXlnQ0FHb2dBQ2dDRENnQ0FEWUNEQ0FGSUFNUUlSb2dCVUdtOEF3UURob2dCU0FFRUJJYUlBVkJvZk1NRUE0YUN4Z0FJQUJCNEFCcUVNb0VJQUJCTUdvUXZCc2dBQkM4R3d1bkFRRUVmeUFBRUk0SklBRW9BZ0FoQWlBQlFRQTJBZ0FnQUNBQ0VHd2dBQ0FCS0FJRU5nSUVJQUZCQURZQ0JDQUFJQUVvQWd3aUFqWUNEQ0FBSUFFcUFoQTRBaEFnQUNBQktBSUlJZ00yQWdnZ0FnUkFJQUJCQ0dvaEJDQURLQUlFSVFJQ1FDQUFLQUlFSWdNZ0EwRUJheUlGY1VVRVFDQUNJQVZ4SVFJTUFRc2dBaUFEU1EwQUlBSWdBM0FoQWdzZ0FDZ0NBQ0FDUVFKMGFpQUVOZ0lBSUFGQ0FEY0NDQXNMSlFBZ0FDQUJFTDBiSUFCQk1Hb2dBVUV3YWhDOUd5QUFRZUFBYWlBQlFlQUFhaERLQlFzUEFDQUFJQUVReEF0QkFUb0E4QThMQ3dBZ0FFR0wvQUlRRkJvTGx3SUJCSDhnQVNBQVFZamdBR29vQWdCTEJFQWdBQ2dDZ0dBaEJFRUdJUU1nQUNFRklBRkJCazhFUUVGL0lBRkJDM1FnQVVILy8vOEFTeHNRRlNFRklBRWhBd3NnQUNBRk5nS0FZQ0FBUVlqZ0FHb2dBellDQUFOQUlBQW9Bb1JnSUFKTkJFQWdBQ0FFRURZRklBSkJDM1FpQXlBQUtBS0FZR29nQXlBRWFpSURFTWtiR2lBREVJOEpJQUpCQVdvaEFnd0JDd3NMSUFCQmhPQUFhaWdDQUNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDaEdBaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDZ0dBZ0FrRUxkR29pQTBJQU53UDREeUFEUVFBNkFQQVBJQU5CQURvQUFDQUNRUUZxSVFJTUFBc0FDd1VnQUNnQ2dHQWdBa0VCYXlJQ1FRdDBhaENQQ1F3QkN3c2dBQ0FCTmdLRVlBdE1BUUYvQWtBZ0FDMEFFQ0lDSUFFdEFCQkdCRUFnQWtVTkFTQUFJQUVRbmdFZ0FDQUJLQUlNTmdJTURBRUxJQUlFUUNBQUVOSWJEQUVMSUFBZ0FSRHBEd3NnQUNBQktRSVVOd0lVQ3pBQkFuOGpBRUVnYXlJQ0pBQWdBaUFBRU9RYklRTWdBQ0FCRU9NUElBRWdBeERqRHlBREVLd0hJQUpCSUdva0FBc1pBUUYvSUFFZ0FDZ0NGRVlFZnlBQ0lBQVE4Z01GUVFBTEN6TUJBWDhqQUVFUWF5SURKQUFnQWhET0JpRUNJQUVvQWdRaEFTQUFJQUkyQWdRZ0FDQUNJQUZ3TmdJQUlBTkJFR29rQUF0U0FRRi9Ba0FnQUMwQUpDSUNJQUV0QUNSR0JFQWdBa1VOQVNBQUlBRXBBZ0EzQWdBZ0FFRUlhaUFCUVFocUVOOEVEQUVMSUFJRVFDQUFFTkFMREFFTElBQWdBUkQ1RFFzZ0FDQUJLUUlvTndJb0N5SUJBWDhqQUVFUWF5SUNKQUFnQUNBQklBQnJFTThISVFBZ0FrRVFhaVFBSUFBTERnQWdBQ0FCRU13TFFRRTZBQkFMbWdJQ0JIOEJmaUFCSUFCQnlCbHFLQUlBU3dSQUlBQW9Bc0FaSVFSQk1DRURJQUFoQlNBQlFUQlBCRUJCZnlBQnJVTEVBSDRpQnFjZ0JrSWdpS2NiRUJVaEJTQUJJUU1MSUFBZ0JUWUN3QmtnQUVISUdXb2dBellDQUFOQUlBQW9Bc1FaSUFKTkJFQWdBQ0FFRURZRklBSkJ4QUJzSWdNZ0FDZ0N3QmxxSUFNZ0JHb2lBeERhR3hvZ0F4RG5CeUFDUVFGcUlRSU1BUXNMQ3lBQVFjUVphaWdDQUNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDeEJraUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDd0JrZ0FrSEVBR3hxSWdOQ0FEY0NQQ0FEUVFBNkFEZ2dBMEVBT2dBQUlBSkJBV29oQWd3QUN3QUxCU0FBS0FMQUdTQUNRUUZySWdKQnhBQnNhaERuQnd3QkN3c2dBQ0FCTmdMRUdRdk9BUUVEZnlBQklBQW9BZ2hMQkVBZ0FDZ0NBQ0VESUFBZ0FSQy9GZ05BSUFBb0FnUWdBazBFUUNBREVJZ0VCU0FDUVJ4c0lnUWdBQ2dDQUdvZ0F5QUVhaUlFRU9RYkdpQUVFS3dISUFKQkFXb2hBZ3dCQ3dzTElBQW9BZ1FoQWdOQUlBRWdBazhFUUFKQUlBQW9BZ1FpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHRFFFZ0FDZ0NBQ0FDUVJ4c2FpSURRZ0EzQWhRZ0EwRUFPZ0FRSUFOQkFEb0FBQ0FDUVFGcUlRSU1BQXNBQ3dVZ0FDZ0NBQ0FDUVFGcklnSkJIR3hxRUt3SERBRUxDeUFBSUFFMkFnUUx6Z0VCQTM4Z0FTQUFLQUlJU3dSQUlBQW9BZ0FoQXlBQUlBRVE3eFlEUUNBQUtBSUVJQUpOQkVBZ0F4Q0lCQVVnQWtFd2JDSUVJQUFvQWdCcUlBTWdCR29pQkJEN0RSb2dCQkRNQkNBQ1FRRnFJUUlNQVFzTEN5QUFLQUlFSVFJRFFDQUJJQUpQQkVBQ1FDQUFLQUlFSWdJZ0FTQUJJQUpKR3lFRUEwQWdBaUFFUmcwQklBQW9BZ0FnQWtFd2JHb2lBMElBTndJb0lBTkJBRG9BSkNBRFFRQTZBQUFnQWtFQmFpRUNEQUFMQUFzRklBQW9BZ0FnQWtFQmF5SUNRVEJzYWhETUJBd0JDd3NnQUNBQk5nSUVDOTRDQVFwL0lBQW9BZ0FpQkNnQ0VDSUhJQUFvQWhSR0JFQWdBQ2dDRUE4TEl3QkJFR3NpQVNRQUl3QkJ3QUZySWdNa0FDQURRYmdCYWlBRUlBQkJCR29pQ0JEbUR5QUVLQUlFSWdsQkFXc2hDaUFES0FLNEFTRUNBa0FEUUNBRklBbEhCRUFnQkNnQ0FDQUNRUnhzYWlJR0xRQVFSUVJBSUFGQkFEWUNEQ0FCUVFBNkFBZ01Bd3NnQmlBREtBSzhBU0FJRU9VUEJFQWdBU0FDTmdJTUlBRkJBVG9BQ0F3REN5QUZJQVlvQWhoTEJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REJTQUNRUUZxUVFBZ0FpQUtSeHNoQWlBRlFRRnFJUVVNQWdzQUN3c2dBMEVJYWtHR3RRTkJuZ1JCRGlBRFFhZ0JhaEFkSWdJUUZ5SUZRUmhxUWRJMUVBNGFJQVVRR0NBQlFRQTJBZ3dnQVVFQU9nQUlJQUlRSGdzZ0EwSEFBV29rQUNBQktBSU1JUU1nQkNnQ0FDRUVJQUV0QUFnaEFpQUJRUkJxSkFBZ0FDQUhOZ0lVSUFBZ0JDQURRUnhzYWtFTWFrRUFJQUliSWdBMkFoQWdBQXVPbFFFQ0NuOENmaU1BUVNCcklnY2tBQ0FCUVRCcUlnVW9BZ1FoQkFKQUlBSW9BZ1FpQ1VFQmFpSUlJQVVvQWdnaUJtcEJnWUFFU1FSQUlBUWhBd3dCQ3lBRlFZU0FCQkFWSWdNMkFnUkJBQ0VHSUFOQkFEWUNnSUFFSUFSQmdJQUVhaUFGSUFRYklBTTJBZ0FMSUFVZ0JpQUlhallDQ0NBRklBVW9BZ3hCQVdvMkFnd0NRQ0FESUFacUlnTkZCRUFnQUJDYkJSb01BUXNnQXlBQ0tBSUFJQWdRZlNFQ0lBRW9BaXdoQXlBQktBSUFJUVFnQnlBSk5nSWNJQWNnQWpZQ0dDQUhJQWNwQXhnM0F3QWdBQ0FETmdJRUlBQWdCRFlDQUNBSEtRSUFJUTBnQUVFQU9nQVlJQUJCQURZQ0VDQUFJQTAzQWdoQkFDRUZRUUFoQ0VFQUlRa2pBRUdBQVdzaUJDUUFJQVFnQUNJQ0tRSUlJZzAzQXpnZ0JDQU5Od040SXdCQm9BZHJJZ01rQUNBRElBUXBBamdpRFRjRGtBY0NmeUFOUWlDSUlnNUNBMUVFUUNBRFFRTTJBcHdISUFOQm84VUJOZ0tZQnlBRElBTXBBNWdITndPSUIwRUFJQU5Ca0FkcUlBTkJpQWRxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0JGRUVRQ0FEUVFRMkFwd0hJQU5CMlp3Qk5nS1lCeUFESUFNcEE1Z0hOd09BQjBFQklBTkJrQWRxSUFOQmdBZHFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQlZFRVFDQURRUVUyQXB3SElBTkI4cU1ETmdLWUJ5QURJQU1wQTVnSE53UDRCa0VDSUFOQmtBZHFJQU5CK0FacUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNBMUVFUUNBRFFRTTJBcHdISUFOQnp2NENOZ0tZQnlBRElBTXBBNWdITndQd0JrRURJQU5Ca0FkcUlBTkI4QVpxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0ExRUVRQ0FEUVFNMkFwd0hJQU5Cd2hNMkFwZ0hJQU1nQXlrRG1BYzNBK2dHUVFRZ0EwR1FCMm9nQTBIb0Jtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lMVVFSQUlBTkJDellDbkFjZ0EwR3Zvd00yQXBnSElBTWdBeWtEbUFjM0ErQUdRUVVnQTBHUUIyb2dBMEhnQm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUVVUVJBSUFOQkJEWUNuQWNnQTBHTDhBSTJBcGdISUFNZ0F5a0RtQWMzQTlnR1FRWWdBMEdRQjJvZ0EwSFlCbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRlVRUkFJQU5CQlRZQ25BY2dBMEdEcEFNMkFwZ0hJQU1nQXlrRG1BYzNBOUFHUVFjZ0EwR1FCMm9nQTBIUUJtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lFVVFSQUlBTkJCRFlDbkFjZ0EwR0I4d0kyQXBnSElBTWdBeWtEbUFjM0E4Z0dRUWdnQTBHUUIyb2dBMEhJQm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUZVUVJBSUFOQkJUWUNuQWNnQTBIZitBWTJBcGdISUFNZ0F5a0RtQWMzQThBR1FRa2dBMEdRQjJvZ0EwSEFCbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRlVRUkFJQU5CQlRZQ25BY2dBMEdVcEFNMkFwZ0hJQU1nQXlrRG1BYzNBN2dHUVFvZ0EwR1FCMm9nQTBHNEJtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lFVVFSQUlBTkJCRFlDbkFjZ0EwR0gvd0kyQXBnSElBTWdBeWtEbUFjM0E3QUdRUXNnQTBHUUIyb2dBMEd3Qm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUZVUVJBSUFOQkJUWUNuQWNnQTBHOHRBSTJBcGdISUFNZ0F5a0RtQWMzQTZnR1FRd2dBMEdRQjJvZ0EwR29CbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRFVRUkFJQU5CQXpZQ25BY2dBMEh6bkFFMkFwZ0hJQU1nQXlrRG1BYzNBNkFHUVEwZ0EwR1FCMm9nQTBHZ0Jtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lFVVFSQUlBTkJCRFlDbkFjZ0EwSDVvd00yQXBnSElBTWdBeWtEbUFjM0E1Z0dRUTRnQTBHUUIyb2dBMEdZQm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSVJVUVJBSUFOQkVUWUNuQWNnQTBHcG5BRTJBcGdISUFNZ0F5a0RtQWMzQTVBR1FROGdBMEdRQjJvZ0EwR1FCbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTVVRUkFJQU5CRERZQ25BY2dBMEd2aVFFMkFwZ0hJQU1nQXlrRG1BYzNBNGdHUVJBZ0EwR1FCMm9nQTBHSUJtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lTVVFSQUlBTkJFallDbkFjZ0EwR1duQUUyQXBnSElBTWdBeWtEbUFjM0E0QUdRUkVnQTBHUUIyb2dBMEdBQm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUZVUVJBSUFOQkJUWUNuQWNnQTBIWWpBRTJBcGdISUFNZ0F5a0RtQWMzQS9nRlFSSWdBMEdRQjJvZ0EwSDRCV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJSFVRUkFJQU5CQnpZQ25BY2dBMEhDdlFFMkFwZ0hJQU1nQXlrRG1BYzNBL0FGUVJNZ0EwR1FCMm9nQTBId0JXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lMVVFSQUlBTkJDellDbkFjZ0EwR0c0d0EyQXBnSElBTWdBeWtEbUFjM0ErZ0ZRUlFnQTBHUUIyb2dBMEhvQldvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUlVUVJBSUFOQkNEWUNuQWNnQTBIcjFnUTJBcGdISUFNZ0F5a0RtQWMzQStBRlFSVWdBMEdRQjJvZ0EwSGdCV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRFVRUkFJQU5CQXpZQ25BY2dBMEdDTnpZQ21BY2dBeUFES1FPWUJ6Y0QyQVZCRmlBRFFaQUhhaUFEUWRnRmFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ3hSQkVBZ0EwRU1OZ0tjQnlBRFFiTDVCRFlDbUFjZ0F5QURLUU9ZQnpjRDBBVkJGeUFEUVpBSGFpQURRZEFGYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FneFJCRUFnQTBFTU5nS2NCeUFEUWFYNUJEWUNtQWNnQXlBREtRT1lCemNEeUFWQkdDQURRWkFIYWlBRFFjZ0ZhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdSUkJFQWdBMEVFTmdLY0J5QURRWlFrTmdLWUJ5QURJQU1wQTVnSE53UEFCVUVaSUFOQmtBZHFJQU5Cd0FWcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNDbEVFUUNBRFFRbzJBcHdISUFOQm5lTUROZ0tZQnlBRElBTXBBNWdITndPNEJVRWFJQU5Ca0FkcUlBTkJ1QVZxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0NGRUVRQ0FEUVFnMkFwd0hJQU5CNmE4RU5nS1lCeUFESUFNcEE1Z0hOd093QlVFYklBTkJrQWRxSUFOQnNBVnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQkZFRVFDQURRUVEyQXB3SElBTkIxUlUyQXBnSElBTWdBeWtEbUFjM0E2Z0ZRUndnQTBHUUIyb2dBMEdvQldvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUtVUVJBSUFOQkNqWUNuQWNnQTBHSDR3TTJBcGdISUFNZ0F5a0RtQWMzQTZBRlFSMGdBMEdRQjJvZ0EwR2dCV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJSVVRUkFJQU5CQ0RZQ25BY2dBMEhYcndRMkFwZ0hJQU1nQXlrRG1BYzNBNWdGUVI0Z0EwR1FCMm9nQTBHWUJXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lEVVFSQUlBTkJBellDbkFjZ0EwSENrUUkyQXBnSElBTWdBeWtEbUFjM0E1QUZRUjhnQTBHUUIyb2dBMEdRQldvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUVVUVJBSUFOQkJEWUNuQWNnQTBIVitBWTJBcGdISUFNZ0F5a0RtQWMzQTRnRlFTQWdBMEdRQjJvZ0EwR0lCV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTFVRUkFJQU5CQ3pZQ25BY2dBMEdYaVFFMkFwZ0hJQU1nQXlrRG1BYzNBNEFGUVNFZ0EwR1FCMm9nQTBHQUJXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lMVVFSQUlBTkJDellDbkFjZ0EwSFk0QVEyQXBnSElBTWdBeWtEbUFjM0EvZ0VRU0lnQTBHUUIyb2dBMEg0QkdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSVBVUVJBSUFOQkR6WUNuQWNnQTBHNzVnQTJBcGdISUFNZ0F5a0RtQWMzQS9BRVFTTWdBMEdRQjJvZ0EwSHdCR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJUVVRUkFJQU5CRURZQ25BY2dBMEdxNWdBMkFwZ0hJQU1nQXlrRG1BYzNBK2dFUVNRZ0EwR1FCMm9nQTBIb0JHb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lGVVFSQUlBTkJCVFlDbkFjZ0EwR1YxQUUyQXBnSElBTWdBeWtEbUFjM0ErQUVRU1VnQTBHUUIyb2dBMEhnQkdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSURVUVJBSUFOQkF6WUNuQWNnQTBIN3VnVTJBcGdISUFNZ0F5a0RtQWMzQTlnRVFTWWdBMEdRQjJvZ0EwSFlCR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRlVRUkFJQU5CQlRZQ25BY2dBMEhTOXdBMkFwZ0hJQU1nQXlrRG1BYzNBOUFFUVNjZ0EwR1FCMm9nQTBIUUJHb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lGVVFSQUlBTkJCVFlDbkFjZ0EwR2FrUUkyQXBnSElBTWdBeWtEbUFjM0E4Z0VRU2dnQTBHUUIyb2dBMEhJQkdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUdVUVJBSUFOQkJqWUNuQWNnQTBISG93TTJBcGdISUFNZ0F5a0RtQWMzQThBRVFTa2dBMEdRQjJvZ0EwSEFCR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTVVRUkFJQU5CRERZQ25BY2dBMEd6NHdNMkFwZ0hJQU1nQXlrRG1BYzNBN2dFUVNvZ0EwR1FCMm9nQTBHNEJHb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lLVVFSQUlBTkJDallDbkFjZ0EwSDdyd1EyQXBnSElBTWdBeWtEbUFjM0E3QUVRU3NnQTBHUUIyb2dBMEd3QkdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUtVUVJBSUFOQkNqWUNuQWNnQTBHTWlRRTJBcGdISUFNZ0F5a0RtQWMzQTZnRVFTd2dBMEdRQjJvZ0EwR29CR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTFVRUkFJQU5CQ3pZQ25BY2dBMEhPTVRZQ21BY2dBeUFES1FPWUJ6Y0RvQVJCTFNBRFFaQUhhaUFEUWFBRWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ1ZSQkVBZ0EwRUZOZ0tjQnlBRFFhYVJBallDbUFjZ0F5QURLUU9ZQnpjRG1BUkJMaUFEUVpBSGFpQURRWmdFYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnWlJCRUFnQTBFR05nS2NCeUFEUVplakF6WUNtQWNnQXlBREtRT1lCemNEa0FSQkx5QURRWkFIYWlBRFFaQUVhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdOUkJFQWdBMEVETmdLY0J5QURRY0czQXpZQ21BY2dBeUFES1FPWUJ6Y0RpQVJCTUNBRFFaQUhhaUFEUVlnRWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ1JSQkVBZ0EwRUVOZ0tjQnlBRFFmejRCallDbUFjZ0F5QURLUU9ZQnpjRGdBUkJNU0FEUVpBSGFpQURRWUFFYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnTlJCRUFnQTBFRE5nS2NCeUFEUWRjbE5nS1lCeUFESUFNcEE1Z0hOd1A0QTBFeUlBTkJrQWRxSUFOQitBTnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQTFFRVFDQURRUU0yQXB3SElBTkJ0dkFDTmdLWUJ5QURJQU1wQTVnSE53UHdBMEV6SUFOQmtBZHFJQU5COEFOcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNBMUVFUUNBRFFRTTJBcHdISUFOQnRDRTJBcGdISUFNZ0F5a0RtQWMzQStnRFFUUWdBMEdRQjJvZ0EwSG9BMm9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRVVRUkFJQU5CQkRZQ25BY2dBMEd6d3dNMkFwZ0hJQU1nQXlrRG1BYzNBK0FEUVRVZ0EwR1FCMm9nQTBIZ0Eyb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lKVVFSQUlBTkJDVFlDbkFjZ0EwSGZ4UU0yQXBnSElBTWdBeWtEbUFjM0E5Z0RRVFlnQTBHUUIyb2dBMEhZQTJvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSU5VUVJBSUFOQkRUWUNuQWNnQTBHKytBQTJBcGdISUFNZ0F5a0RtQWMzQTlBRFFUY2dBMEdRQjJvZ0EwSFFBMm9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTlVRUkFJQU5CRFRZQ25BY2dBMEhIOVFJMkFwZ0hJQU1nQXlrRG1BYzNBOGdEUVRnZ0EwR1FCMm9nQTBISUEyb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lOVVFSQUlBTkJEVFlDbkFjZ0EwR2Q5UUkyQXBnSElBTWdBeWtEbUFjM0E4QURRVGtnQTBHUUIyb2dBMEhBQTJvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSU1VUVJBSUFOQkREWUNuQWNnQTBHdDlRSTJBcGdISUFNZ0F5a0RtQWMzQTdnRFFUb2dBMEdRQjJvZ0EwRzRBMm9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTVVRUkFJQU5CRERZQ25BY2dBMEg0OUFJMkFwZ0hJQU1nQXlrRG1BYzNBN0FEUVRzZ0EwR1FCMm9nQTBHd0Eyb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lEVVFSQUlBTkJBellDbkFjZ0EwR21LRFlDbUFjZ0F5QURLUU9ZQnpjRHFBTkJQQ0FEUVpBSGFpQURRYWdEYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnMVJCRUFnQTBFTk5nS2NCeUFEUWV6d0JqWUNtQWNnQXlBREtRT1lCemNEb0FOQlBTQURRWkFIYWlBRFFhQURhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdkUkJFQWdBMEVITmdLY0J5QURRYU9pQVRZQ21BY2dBeUFES1FPWUJ6Y0RtQU5CUGlBRFFaQUhhaUFEUVpnRGFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ2RSQkVBZ0EwRUhOZ0tjQnlBRFFjenhBRFlDbUFjZ0F5QURLUU9ZQnpjRGtBTkJQeUFEUVpBSGFpQURRWkFEYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnZFJCRUFnQTBFSE5nS2NCeUFEUWNqM0FEWUNtQWNnQXlBREtRT1lCemNEaUFOQndBQWdBMEdRQjJvZ0EwR0lBMm9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTFVRUkFJQU5CQ3pZQ25BY2dBMEdqaVFFMkFwZ0hJQU1nQXlrRG1BYzNBNEFEUWNFQUlBTkJrQWRxSUFOQmdBTnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQlZFRVFDQURRUVUyQXB3SElBTkI3dVVFTmdLWUJ5QURJQU1wQTVnSE53UDRBa0hDQUNBRFFaQUhhaUFEUWZnQ2FoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ2hSQkVBZ0EwRUlOZ0tjQnlBRFFhemZBellDbUFjZ0F5QURLUU9ZQnpjRDhBSkJ3d0FnQTBHUUIyb2dBMEh3QW1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUdVUVJBSUFOQkJqWUNuQWNnQTBIZjhRQTJBcGdISUFNZ0F5a0RtQWMzQStnQ1FjUUFJQU5Ca0FkcUlBTkI2QUpxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0JGRUVRQ0FEUVFRMkFwd0hJQU5CK3ZFQ05nS1lCeUFESUFNcEE1Z0hOd1BnQWtIRkFDQURRWkFIYWlBRFFlQUNhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdOUkJFQWdBMEVETmdLY0J5QURRYVh3QWpZQ21BY2dBeUFES1FPWUJ6Y0QyQUpCeGdBZ0EwR1FCMm9nQTBIWUFtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lFVVFSQUlBTkJCRFlDbkFjZ0EwR0twQU0yQXBnSElBTWdBeWtEbUFjM0E5QUNRY2NBSUFOQmtBZHFJQU5CMEFKcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNDbEVFUUNBRFFRbzJBcHdISUFOQnViVUNOZ0tZQnlBRElBTXBBNWdITndQSUFrSElBQ0FEUVpBSGFpQURRY2dDYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnUlJCRUFnQTBFRU5nS2NCeUFEUWJneE5nS1lCeUFESUFNcEE1Z0hOd1BBQWtISkFDQURRWkFIYWlBRFFjQUNhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdSUkJFQWdBMEVFTmdLY0J5QURRYisxQWpZQ21BY2dBeUFES1FPWUJ6Y0R1QUpCeWdBZ0EwR1FCMm9nQTBHNEFtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lPVVFSQUlBTkJEallDbkFjZ0EwSEY2Z0UyQXBnSElBTWdBeWtEbUFjM0E3QUNRY3NBSUFOQmtBZHFJQU5Cc0FKcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNBMUVFUUNBRFFRTTJBcHdISUFOQm0vTUNOZ0tZQnlBRElBTXBBNWdITndPb0FrSE1BQ0FEUVpBSGFpQURRYWdDYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnUlJCRUFnQTBFRU5nS2NCeUFEUVp1a0F6WUNtQWNnQXlBREtRT1lCemNEb0FKQnpRQWdBMEdRQjJvZ0EwR2dBbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJSlVRUkFJQU5CQ1RZQ25BY2dBMEhONHdNMkFwZ0hJQU1nQXlrRG1BYzNBNWdDUWM0QUlBTkJrQWRxSUFOQm1BSnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQlZFRVFDQURRUVUyQXB3SElBTkJpSWNGTmdLWUJ5QURJQU1wQTVnSE53T1FBa0hQQUNBRFFaQUhhaUFEUVpBQ2FoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZzlSQkVBZ0EwRVBOZ0tjQnlBRFFiejRBRFlDbUFjZ0F5QURLUU9ZQnpjRGlBSkIwQUFnQTBHUUIyb2dBMEdJQW1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSVBVUVJBSUFOQkR6WUNuQWNnQTBIRjlRSTJBcGdISUFNZ0F5a0RtQWMzQTRBQ1FkRUFJQU5Ca0FkcUlBTkJnQUpxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0QxRUVRQ0FEUVE4MkFwd0hJQU5CbS9VQ05nS1lCeUFESUFNcEE1Z0hOd1A0QVVIU0FDQURRWkFIYWlBRFFmZ0JhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWc1UkJFQWdBMEVPTmdLY0J5QURRYXYxQWpZQ21BY2dBeUFES1FPWUJ6Y0Q4QUZCMHdBZ0EwR1FCMm9nQTBId0FXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lPVVFSQUlBTkJEallDbkFjZ0EwSDI5QUkyQXBnSElBTWdBeWtEbUFjM0ErZ0JRZFFBSUFOQmtBZHFJQU5CNkFGcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNFRkVFUUNBRFFSQTJBcHdISUFOQnBlb0JOZ0tZQnlBRElBTXBBNWdITndQZ0FVSFZBQ0FEUVpBSGFpQURRZUFCYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FoUlJCRUFnQTBFVU5nS2NCeUFEUWEzL0JEWUNtQWNnQXlBREtRT1lCemNEMkFGQjFnQWdBMEdRQjJvZ0EwSFlBV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJUlVRUkFJQU5CRVRZQ25BY2dBMEhRb1FFMkFwZ0hJQU1nQXlrRG1BYzNBOUFCUWRjQUlBTkJrQWRxSUFOQjBBRnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDRFZFRVFDQURRUTAyQXB3SElBTkI4ZThCTmdLWUJ5QURJQU1wQTVnSE53UElBVUhZQUNBRFFaQUhhaUFEUWNnQmFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RaFJSQkVBZ0EwRVVOZ0tjQnlBRFFaenZBellDbUFjZ0F5QURLUU9ZQnpjRHdBRkIyUUFnQTBHUUIyb2dBMEhBQVdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSVFVUVJBSUFOQkVEWUNuQWNnQTBHZGxnRTJBcGdISUFNZ0F5a0RtQWMzQTdnQlFkb0FJQU5Ca0FkcUlBTkJ1QUZxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0VGRUVRQ0FEUVJBMkFwd0hJQU5CcnFRQk5nS1lCeUFESUFNcEE1Z0hOd093QVVIYkFDQURRWkFIYWlBRFFiQUJhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWhGUkJFQWdBMEVSTmdLY0J5QURRZk83QVRZQ21BY2dBeUFES1FPWUJ6Y0RxQUZCM0FBZ0EwR1FCMm9nQTBHb0FXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lOVVFSQUlBTkJEVFlDbkFjZ0EwSFh0UVEyQXBnSElBTWdBeWtEbUFjM0E2QUJRZDBBSUFOQmtBZHFJQU5Cb0FGcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNFVkVFUUNBRFFSRTJBcHdISUFOQjhNVUJOZ0tZQnlBRElBTXBBNWdITndPWUFVSGVBQ0FEUVpBSGFpQURRWmdCYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FoUlJCRUFnQTBFVU5nS2NCeUFEUWJIdkF6WUNtQWNnQXlBREtRT1lCemNEa0FGQjN3QWdBMEdRQjJvZ0EwR1FBV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJWlVRUkFJQU5CR1RZQ25BY2dBMEdSZ0FNMkFwZ0hJQU1nQXlrRG1BYzNBNGdCUWVBQUlBTkJrQWRxSUFOQmlBRnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDRVZFRVFDQURRUkUyQXB3SElBTkI3LzRFTmdLWUJ5QURJQU1wQTVnSE53T0FBVUhoQUNBRFFaQUhhaUFEUVlBQmFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RaEpSQkVBZ0EwRVNOZ0tjQnlBRFFhdUFBellDbUFjZ0F5QURLUU9ZQnpjRGVFSGlBQ0FEUVpBSGFpQURRZmdBYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQndKQUlBNUNIRklOQUNBRFFSdzJBcHdISUFOQmdzRUVOZ0tZQnlBRElBTXBBNWdITndOd0lBTkJrQWRxSUFOQjhBQnFFQ1VOQUVIakFBd0JDeUFESUFRcEFqZ2lEVGNEa0FjZ0RVSWdpQ0lPUWd4UkJFQWdBMEVNTmdLY0J5QURRZlhxQXpZQ21BY2dBeUFES1FPWUJ6Y0RhRUhrQUNBRFFaQUhhaUFEUWVnQWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ3RSQkVBZ0EwRUxOZ0tjQnlBRFFjTC9CRFlDbUFjZ0F5QURLUU9ZQnpjRFlFSGxBQ0FEUVpBSGFpQURRZUFBYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FncFJCRUFnQTBFS05nS2NCeUFEUWM3L0JEWUNtQWNnQXlBREtRT1lCemNEV0VIbUFDQURRWkFIYWlBRFFkZ0FhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWd0UkJFQWdBMEVMTmdLY0J5QURRWUxyQXpZQ21BY2dBeUFES1FPWUJ6Y0RVRUhuQUNBRFFaQUhhaUFEUWRBQWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ2xSQkVBZ0EwRUpOZ0tjQnlBRFFZcitCRFlDbUFjZ0F5QURLUU9ZQnpjRFNFSG9BQ0FEUVpBSGFpQURRY2dBYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnbFJCRUFnQTBFSk5nS2NCeUFEUWRxNUJUWUNtQWNnQXlBREtRT1lCemNEUUVIcEFDQURRWkFIYWlBRFFVQnJFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQ1ZFRVFDQURRUWsyQXB3SElBTkIyeVUyQXBnSElBTWdBeWtEbUFjM0F6aEI2Z0FnQTBHUUIyb2dBMEU0YWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnbFJCRUFnQTBFSk5nS2NCeUFEUWU3d0FqWUNtQWNnQXlBREtRT1lCemNETUVIckFDQURRWkFIYWlBRFFUQnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQ1ZFRVFDQURRUWsyQXB3SElBTkJpK3NFTmdLWUJ5QURJQU1wQTVnSE53TW9RZXdBSUFOQmtBZHFJQU5CS0dvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUlVUVJBSUFOQkNEWUNuQWNnQTBHSWtRSTJBcGdISUFNZ0F5a0RtQWMzQXlCQjdRQWdBMEdRQjJvZ0EwRWdhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdsUkJFQWdBMEVKTmdLY0J5QURRWVhWQVRZQ21BY2dBeUFES1FPWUJ6Y0RHRUh1QUNBRFFaQUhhaUFEUVJocUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNEbEVFUUNBRFFRNDJBcHdISUFOQmxjQUVOZ0tZQnlBRElBTXBBNWdITndNUVFlOEFJQU5Ca0FkcUlBTkJFR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJWlVRUkFJQU5CR1RZQ25BY2dBMEhFbndNMkFwZ0hJQU1nQXlrRG1BYzNBd2hCOEFBZ0EwR1FCMm9nQTBFSWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUIwRi9JQTVDRVZJTkFCb2dBMEVSTmdLY0J5QURRWXJHQXpZQ21BY2dBeUFES1FPWUJ6Y0RBRUYvUWZFQUlBTkJrQWRxSUFNUUpSc0xJUUFnQTBHZ0Iyb2tBQUpBSUFCQmYwY0VRQ0FDUVFFMkFoQWdBaUFBTmdJVUlBSXRBQmhCQVVZTkFTQUNRUUU2QUJnTUFRc2dCQ0FDS1FJSUlnMDNBekFnQkNBTk53TndJd0JCa0FacklnTWtBQ0FESUFRcEFqQWlEVGNEZ0FZQ2Z3SkFBbjhDUUFKL0FrQUNmd0pBQWtBQ2Z3SkFBa0FDZndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDZndKQUFuOENRQUpBQWtBQ1FBSkFBa0FnRFVJZ2lLY2lBRUVrUmdSQUlBTkJKRFlDakFZZ0EwR1ovUVkyQW9nR0lBTWdBeWtEaUFZM0E1Z0ZRUUVnQTBHQUJtb2dBMEdZQldvUUpVVU5IaG9nQTBFa05nS01CaUFEUVluNkJqWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd09RQlNBRFFZQUdhaUFEUVpBRmFoQWxEUUZCQWd3ZUN5QURJQTAzQTRBR0lBQkJGMFlFUUNBRFFSYzJBb3dHSUFOQjNmVUFOZ0tJQmlBRElBTXBBNGdHTndQUUJTQURRWUFHYWlBRFFkQUZhaEFsRFFOQkF3d2VDeUFESUEwM0E0QUdJQUJCRWtZRVFDQURRUkkyQW93R0lBTkJyKzhHTmdLSUJpQURJQU1wQTRnR053UGdCVUVFSUFOQmdBWnFJQU5CNEFWcUVDVkZEUjRhSUFOQkVqWUNqQVlnQTBHKy9RWTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEMkFVZ0EwR0FCbW9nQTBIWUJXb1FKUTBHUVFVTUhnc2dBeUFOTndPQUJpQUFRUnhHRFFFTFFRQU1CUXNnQTBFY05nS01CaUFEUWY3MkFEWUNpQVlnQXlBREtRT0lCamNEK0FWQkJpQURRWUFHYWlBRFFmZ0ZhaEFsUlEwYkdpQURRUncyQW93R0lBTkJ4ZllBTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0EvQUZJQU5CZ0FacUlBTkI4QVZxRUNVTkFVRUpEQnNMSUFOQkZ6WUNqQVlnQTBHeThBWTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEeUFWQkJ5QURRWUFHYWlBRFFjZ0ZhaEFsUlEwYUdpQURRUmMyQW93R0lBTkJ3ZjRHTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0E4QUZRUWdnQTBHQUJtb2dBMEhBQldvUUpVVU5HaG9nQTBFWE5nS01CaUFEUVlQd0JqWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd080QlNBRFFZQUdhaUFEUWJnRmFoQWxEUUZCQ2d3YUN5QURRUncyQW93R0lBTkJqUFlBTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0ErZ0ZJQU5CZ0FacUlBTkI2QVZxRUNVTkEwRU1EQmtMSUFOQkZ6WUNqQVlnQTBHUy9nWTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEc0FWQkN5QURRWUFHYWlBRFFiQUZhaEFsUlEwWUdpQURRUmMyQW93R0lBTkIxTzhHTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0E2Z0ZRUTBnQTBHQUJtb2dBMEdvQldvUUpVVU5HQm9nQTBFWE5nS01CaUFEUWVQOUJqWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd09nQlNBRFFZQUdhaUFEUWFBRmFoQWxEUUpCRGd3WUMwRUJDeUVGSUFNZ0RUY0RnQVlnQUVFV1JnUkFJQU5CRmpZQ2pBWWdBMEgxOVFBMkFvZ0dJQU1nQXlrRGlBWTNBNmdFSUFOQmdBWnFJQU5CcUFScUVDVU5BMEVQREJjTElBTWdEVGNEZ0FaQkFDQUFRUkZIRFFFYUlBTkJFVFlDakFZZ0EwSEM3d1kyQW9nR0lBTWdBeWtEaUFZM0EvQUVJQU5CZ0FacUlBTkI4QVJxRUNVTkEwRVFEQllMSUFCQkYwWUxJUXNnQXlBTk53T0FCaUFBUVJ0SERRVWdBMEViTmdLTUJpQURRWnYzQURZQ2lBWWdBeUFES1FPSUJqY0RpQVZCRWlBRFFZQUdhaUFEUVlnRmFoQWxSUTBVR2lBRFFSczJBb3dHSUFOQjR2WUFOZ0tJQmlBRElBMDNBNEFHSUFNZ0F5a0RpQVkzQTRBRklBTkJnQVpxSUFOQmdBVnFFQ1VOQTBFVkRCUUxJQU5CRmpZQ2pBWWdBMEhLOEFZMkFvZ0dJQU1nRFRjRGdBWWdBeUFES1FPSUJqY0RvQVFnQTBHQUJtb2dBMEdnQkdvUUpRMEJRUk1NRXdzZ0EwRVJOZ0tNQmlBRFFkSDlCallDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndQb0JFRVJJQU5CZ0FacUlBTkI2QVJxRUNWRkRSSWFEQVFMSUFOQkZqWUNqQVlnQTBIWi9nWTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEbUFRZ0EwR0FCbW9nQTBHWUJHb1FKUTBCUVJRTUVRc2dBMEViTmdLTUJpQURRYW4yQURZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053UDRCQ0FEUVlBR2FpQURRZmdFYWhBbERRRkJHQXdRQ3lBRFFSWTJBb3dHSUFOQm0vQUdOZ0tJQmlBRElBMDNBNEFHSUFNZ0F5a0RpQVkzQTVBRVFSWWdBMEdBQm1vZ0EwR1FCR29RSlVVTkR4b2dBMEVXTmdLTUJpQURRYXIrQmpZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053T0lCRUVYSUFOQmdBWnFJQU5CaUFScUVDVkZEUThhSUFOQkZqWUNqQVlnQTBIczd3WTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEZ0FSQkdTQURRWUFHYWlBRFFZQUVhaEFsUlEwUEdpQURRUlkyQW93R0lBTkIrLzBHTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0EvZ0RJQU5CZ0FacUlBTkIrQU5xRUNVTkFrRWFEQThMSUFNZ0RUY0RnQVlMSUFNZ0RUY0RnQVlnQUVFTlJnUkFJQU5CRFRZQ2pBWWdBMEhaOWdZMkFvZ0dJQU1nQXlrRGlBWTNBN0FFUVJzZ0EwR0FCbW9nQTBHd0JHb1FKVVVORGhwQkFBd0NDeUFESUEwM0E0QUdJQUJCQlVjTkFpQURRUVUyQW93R0lBTkI3QnMyQW9nR0lBTWdBeWtEaUFZM0E3Z0VJQU5CZ0FacUlBTkJ1QVJxRUNVTkEwRWNEQTBMUVFFTElReEJBQXdDQ3lBRElBMDNBNEFHSUFCQkJrY05BaUFEUVFZMkFvd0dJQU5CaW9rRk5nS0lCaUFESUFNcEE0Z0dOd1BBQkNBRFFZQUdhaUFEUWNBRWFoQWxEUU5CSFF3S0MwRUJDeUVJUVFBTUFnc2dBeUFOTndPQUJnSkFJQUJCQkVZRVFDQURRUVEyQW93R0lBTkJpL3dDTmdLSUJpQURJQU1wQTRnR053UElCQ0FEUVlBR2FpQURRY2dFYWhBbERRRkJIZ3dKQ3lBRElBMDNBNEFHSUFCQkEwY05BQ0FEUVFNMkFvd0dJQU5CM2ZBR05nS0lCaUFESUFNcEE0Z0dOd1BnQkVFZklBTkJnQVpxSUFOQjRBUnFFQ1ZGRFFnYUlBTkJBellDakFZZ0EwSHMvZ1kyQW9nR0lBTWdEVGNEZ0FZZ0F5QURLUU9JQmpjRDJBUkJJQ0FEUVlBR2FpQURRZGdFYWhBbFJRMElHaUFEUVFNMkFvd0dJQU5CdXYwR05nS0lCaUFESUEwM0E0QUdJQU1nQXlrRGlBWTNBOUFFUVNFZ0EwR0FCbW9nQTBIUUJHb1FKVVVOQ0JwQkFRd0VDeUFBUVFSR0lRa01BZ3RCQVFzaEJpQURJQTAzQTRBR0lBWU5BZ3RCQUFzaENrRUFEQUVMSUFOQkJqWUNqQVlnQTBILzl3WTJBb2dHSUFNZ0F5a0RpQVkzQS9BRElBTkJnQVpxSUFOQjhBTnFFQ1ZGRFFGQkFRc2hCaUFESUEwM0E0QUdBa0FnQUVFSFJ3MEFJQU5CQnpZQ2pBWWdBMEd0eEFNMkFvZ0dJQU1nQXlrRGlBWTNBK2dEUVNNZ0EwR0FCbW9nQTBIb0Eyb1FKVVVOQWhvZ0EwRUhOZ0tNQmlBRFFkR21BellDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndQZ0F5QURRWUFHYWlBRFFlQURhaEFsRFFCQkpBd0NDeUFESUEwM0E0QUdBa0FnQmtVTkFDQURRUVkyQW93R0lBTkIwdllHTmdLSUJpQURJQU1wQTRnR053UFlBeUFEUVlBR2FpQURRZGdEYWhBbERRQkJKUXdDQ3lBRElBMDNBNEFHQWtBZ0FFRUhSdzBBSUFOQkJ6WUNqQVlnQTBHUHhBTTJBb2dHSUFNZ0F5a0RpQVkzQTlBRFFTWWdBMEdBQm1vZ0EwSFFBMm9RSlVVTkFob2dBMEVITmdLTUJpQURRYk9tQXpZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053UElBeUFEUVlBR2FpQURRY2dEYWhBbERRQkJKd3dDQ3lBRElBMDNBNEFHQWtBZ0JrVU5BQ0FEUVFZMkFvd0dJQU5COHZFR05nS0lCaUFESUFNcEE0Z0dOd1BBQXlBRFFZQUdhaUFEUWNBRGFoQWxEUUJCS0F3Q0N5QURJQTAzQTRBR0FrQWdBRUVIUncwQUlBTkJCellDakFZZ0EwSHh3d00yQW9nR0lBTWdBeWtEaUFZM0E3Z0RRU2tnQTBHQUJtb2dBMEc0QTJvUUpVVU5BaG9nQTBFSE5nS01CaUFEUVpXbUF6WUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd093QXlBRFFZQUdhaUFEUWJBRGFoQWxEUUJCS2d3Q0N5QURJQTAzQTRBR0FrQWdCa1VOQUNBRFFRWTJBb3dHSUFOQitQY0dOZ0tJQmlBRElBTXBBNGdHTndPb0F5QURRWUFHYWlBRFFhZ0RhaEFsRFFCQkt3d0NDeUFESUEwM0E0QUdBa0FnQUVFSFJ3MEFJQU5CQnpZQ2pBWWdBMEdseEFNMkFvZ0dJQU1nQXlrRGlBWTNBNkFEUVN3Z0EwR0FCbW9nQTBHZ0Eyb1FKVVVOQWhvZ0EwRUhOZ0tNQmlBRFFjbW1BellDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndPWUF5QURRWUFHYWlBRFFaZ0RhaEFsRFFCQkxRd0NDeUFESUEwM0E0QUdBa0FnQmtVTkFDQURRUVkyQW93R0lBTkJ5L1lHTmdLSUJpQURJQU1wQTRnR053T1FBeUFEUVlBR2FpQURRWkFEYWhBbERRQkJMZ3dDQ3lBRElBMDNBNEFHQWtBZ0FFRUhSdzBBSUFOQkJ6WUNqQVlnQTBHSHhBTTJBb2dHSUFNZ0F5a0RpQVkzQTRnRFFTOGdBMEdBQm1vZ0EwR0lBMm9RSlVVTkFob2dBMEVITmdLTUJpQURRYXVtQXpZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053T0FBeUFEUVlBR2FpQURRWUFEYWhBbERRQkJNQXdDQ3lBRElBMDNBNEFHQWtBZ0JrVU5BQ0FEUVFZMkFvd0dJQU5CNi9FR05nS0lCaUFESUFNcEE0Z0dOd1A0QWlBRFFZQUdhaUFEUWZnQ2FoQWxEUUJCTVF3Q0N5QURJQTAzQTRBR0FrQWdBRUVIUncwQUlBTkJCellDakFZZ0EwSHB3d00yQW9nR0lBTWdBeWtEaUFZM0EvQUNRVElnQTBHQUJtb2dBMEh3QW1vUUpVVU5BaG9nQTBFSE5nS01CaUFEUVkybUF6WUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd1BvQWlBRFFZQUdhaUFEUWVnQ2FoQWxEUUJCTXd3Q0N5QURJQTAzQTRBR0FrQWdCa1VOQUNBRFFRWTJBb3dHSUFOQjhmY0dOZ0tJQmlBRElBTXBBNGdHTndQZ0FpQURRWUFHYWlBRFFlQUNhaEFsRFFCQk5Bd0NDeUFESUEwM0E0QUdBa0FnQUVFSFJ3MEFJQU5CQnpZQ2pBWWdBMEdkeEFNMkFvZ0dJQU1nQXlrRGlBWTNBOWdDUVRVZ0EwR0FCbW9nQTBIWUFtb1FKVVVOQWhvZ0EwRUhOZ0tNQmlBRFFjR21BellDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndQUUFpQURRWUFHYWlBRFFkQUNhaEFsRFFCQk5nd0NDeUFESUEwM0E0QUdBa0FnQmtVTkFDQURRUVkyQW93R0lBTkJ4UFlHTmdLSUJpQURJQU1wQTRnR053UElBaUFEUVlBR2FpQURRY2dDYWhBbERRQkJOd3dDQ3lBRElBMDNBNEFHQWtBZ0FFRUhSdzBBSUFOQkJ6WUNqQVlnQTBIL3d3TTJBb2dHSUFNZ0F5a0RpQVkzQThBQ1FUZ2dBMEdBQm1vZ0EwSEFBbW9RSlVVTkFob2dBMEVITmdLTUJpQURRYU9tQXpZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053TzRBaUFEUVlBR2FpQURRYmdDYWhBbERRQkJPUXdDQ3lBRElBMDNBNEFHQWtBZ0JrVU5BQ0FEUVFZMkFvd0dJQU5CNVBFR05nS0lCaUFESUFNcEE0Z0dOd093QWlBRFFZQUdhaUFEUWJBQ2FoQWxEUUJCT2d3Q0N5QURJQTAzQTRBR0FrQWdBRUVIUncwQUlBTkJCellDakFZZ0EwSGh3d00yQW9nR0lBTWdBeWtEaUFZM0E2Z0NRVHNnQTBHQUJtb2dBMEdvQW1vUUpVVU5BaG9nQTBFSE5nS01CaUFEUVlXbUF6WUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd09nQWlBRFFZQUdhaUFEUWFBQ2FoQWxEUUJCUEF3Q0N5QURJQTAzQTRBR0FrQWdDa1VOQUNBRFFRTTJBb3dHSUFOQnRNZ0JOZ0tJQmlBRElBTXBBNGdHTndPWUFpQURRWUFHYWlBRFFaZ0NhaEFsRFFCQlBRd0NDeUFESUEwM0E0QUdBa0FnQUVFSFJ3MEFJQU5CQnpZQ2pBWWdBMEdjNWdFMkFvZ0dJQU1nQXlrRGlBWTNBNUFDSUFOQmdBWnFJQU5Ca0FKcUVDVU5BRUUrREFJTElBTWdEVGNEZ0FZQ1FDQUZSUTBBSUFOQkVqWUNqQVlnQTBHQnd3STJBb2dHSUFNZ0F5a0RpQVkzQTRnQ0lBTkJnQVpxSUFOQmlBSnFFQ1VOQUVFL0RBSUxJQU1nRFRjRGdBWUNmd0pBQWtBQ1FDQUFRUXBHQkVBZ0EwRUtOZ0tNQmlBRFFaU0dCVFlDaUFZZ0F5QURLUU9JQmpjRDhBRkJ3QUFnQTBHQUJtb2dBMEh3QVdvUUpVVU5CaG9nQTBFS05nS01CaUFEUWNDRkJUWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd1BvQVNBRFFZQUdhaUFEUWVnQmFoQWxEUUZCd1FBTUJnc2dBeUFOTndPQUJpQUFRUkJIRFFFZ0EwRVFOZ0tNQmlBRFFjOFpOZ0tJQmlBRElBTXBBNGdHTndQNEFTQURRWUFHYWlBRFFmZ0JhaEFsRFFKQndnQU1CUXNnQTBFS05nS01CaUFEUVpHRkJUWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd1BnQVVIREFDQURRWUFHYWlBRFFlQUJhaEFsUlEwRUdrRUFEQUlMSUFNZ0RUY0RnQVpCQUNBQVFReEhEUUVhSUFOQkREWUNqQVlnQTBHTzNRUTJBb2dHSUFNZ0F5a0RpQVkzQTRBQ1FRQWdBMEdBQm1vZ0EwR0FBbW9RSlEwQkdrSEVBQXdEQzBFQkN5RUdJQU1nRFRjRGdBWUNRQ0FGUlEwQUlBTkJFallDakFZZ0EwR2xHVFlDaUFZZ0F5QURLUU9JQmpjRDJBRWdBMEdBQm1vZ0EwSFlBV29RSlEwQVFjVUFEQUlMSUFNZ0RUY0RnQVlDUUNBR1JRMEFJQU5CRURZQ2pBWWdBMEd2aFFVMkFvZ0dJQU1nQXlrRGlBWTNBOUFCSUFOQmdBWnFJQU5CMEFGcUVDVU5BRUhHQUF3Q0N5QURJQTAzQTRBR0FrQWdERVVOQUNBRFFSWTJBb3dHSUFOQnVCazJBb2dHSUFNZ0F5a0RpQVkzQThnQklBTkJnQVpxSUFOQnlBRnFFQ1VOQUVISEFBd0NDeUFESUEwM0E0QUdBa0FnQlVVTkFDQURRUkkyQW93R0lBTkIrOXdFTmdLSUJpQURJQU1wQTRnR053UEFBU0FEUVlBR2FpQURRY0FCYWhBbERRQkJ5QUFNQWdzZ0F5QU5Od09BQmdKQUlBQkJHRVlFUUNBRFFSZzJBb3dHSUFOQmpCazJBb2dHSUFNZ0F5a0RpQVkzQTdBQklBTkJnQVpxSUFOQnNBRnFFQ1VOQVVISkFBd0RDeUFESUEwM0E0QUdJQUJCSFVjTkFDQURRUjAyQW93R0lBTkIzb1VGTmdLSUJpQURJQU1wQTRnR053TzRBU0FEUVlBR2FpQURRYmdCYWhBbERRQkJ5Z0FNQWdzZ0F5QU5Od09BQmdKQUlBWkZEUUFnQTBFUU5nS01CaUFEUWFtV0F6WUNpQVlnQXlBREtRT0lCamNEcUFFZ0EwR0FCbW9nQTBHb0FXb1FKUTBBUWNzQURBSUxJQU1nRFRjRGdBWUNRQ0FMUlEwQUlBTkJGellDakFZZ0EwSDhoUVUyQW9nR0lBTWdBeWtEaUFZM0E2QUJJQU5CZ0FacUlBTkJvQUZxRUNVTkFFSE1BQXdDQ3lBRElBMDNBNEFHQWtBZ0JVVU5BQ0FEUVJJMkFvd0dJQU5CbjRZRk5nS0lCaUFESUFNcEE0Z0dOd09ZQVVITkFDQURRWUFHYWlBRFFaZ0JhaEFsUlEwQ0dpQURRUkkyQW93R0lBTkJ5NFVGTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0E1QUJJQU5CZ0FacUlBTkJrQUZxRUNVTkFFSE9BQXdDQ3lBRElBMDNBNEFHQWtBZ0FFRVlSdzBBSUFOQkdEWUNqQVlnQTBIZ0dUWUNpQVlnQXlBREtRT0lCamNEaUFFZ0EwR0FCbW9nQTBHSUFXb1FKUTBBUWM4QURBSUxJQU1nRFRjRGdBWUNRQ0FGUlEwQUlBTkJFallDakFZZ0EwR2NoUVUyQW9nR0lBTWdBeWtEaUFZM0E0QUJJQU5CZ0FacUlBTkJnQUZxRUNVTkFFSFFBQXdDQ3lBRElBMDNBNEFHQWtBZ0NrVU5BQ0FEUVFNMkFvd0dJQU5COFB3R05nS0lCaUFESUFNcEE0Z0dOd040SUFOQmdBWnFJQU5CK0FCcUVDVU5BRUhSQUF3Q0N5QURJQTAzQTRBR0FrQWdDVVVOQUNBRFFRUTJBb3dHSUFOQmova0dOZ0tJQmlBRElBTXBBNGdHTndOd0lBTkJnQVpxSUFOQjhBQnFFQ1VOQUVIU0FBd0NDeUFESUEwM0E0QUdBa0FnQ0VVTkFDQURRUVUyQW93R0lBTkJ0Y1FETmdLSUJpQURJQU1wQTRnR053Tm9RZE1BSUFOQmdBWnFJQU5CNkFCcUVDVkZEUUlhSUFOQkJUWUNqQVlnQTBIWnBnTTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEWUVIVUFDQURRWUFHYWlBRFFlQUFhaEFsUlEwQ0dpQURRUVUyQW93R0lBTkI0NkVETmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0ExaEIxUUFnQTBHQUJtb2dBMEhZQUdvUUpVVU5BaG9nQTBFRk5nS01CaUFEUWZjcU5nS0lCaUFESUEwM0E0QUdJQU1nQXlrRGlBWTNBMUFnQTBHQUJtb2dBMEhRQUdvUUpRMEFRZFlBREFJTElBTWdEVGNEZ0FZQ1FDQUpSUTBBSUFOQkJEWUNqQVlnQTBIaTlnWTJBb2dHSUFNZ0F5a0RpQVkzQTBnZ0EwR0FCbW9nQTBISUFHb1FKUTBBUWRjQURBSUxJQU1nRFRjRGdBWUNRQ0FJUlEwQUlBTkJCVFlDakFZZ0EwR1h4QU0yQW9nR0lBTWdBeWtEaUFZM0EwQkIyQUFnQTBHQUJtb2dBMEZBYXhBbFJRMENHaUFEUVFVMkFvd0dJQU5CdTZZRE5nS0lCaUFESUEwM0E0QUdJQU1nQXlrRGlBWTNBemhCMlFBZ0EwR0FCbW9nQTBFNGFoQWxSUTBDR2lBRFFRVTJBb3dHSUFOQjNhRUROZ0tJQmlBRElBMDNBNEFHSUFNZ0F5a0RpQVkzQXpCQjJnQWdBMEdBQm1vZ0EwRXdhaEFsUlEwQ0dpQURRUVUyQW93R0lBTkI4U28yQW9nR0lBTWdEVGNEZ0FZZ0F5QURLUU9JQmpjREtDQURRWUFHYWlBRFFTaHFFQ1VOQUVIYkFBd0NDeUFESUEwM0E0QUdBa0FnQ1VVTkFDQURRUVEyQW93R0lBTkIrZkVHTmdLSUJpQURJQU1wQTRnR053TWdJQU5CZ0FacUlBTkJJR29RSlEwQVFkd0FEQUlMSUFNZ0RUY0RnQVlDUUNBSUJFQWdBMEVGTmdLTUJpQURRZm5EQXpZQ2lBWWdBeUFES1FPSUJqY0RHRUhkQUNBRFFZQUdhaUFEUVJocUVDVkZEUU1hSUFOQkJUWUNqQVlnQTBHZHBnTTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNERUVIZUFDQURRWUFHYWlBRFFSQnFFQ1ZGRFFNYUlBTkJCVFlDakFZZ0EwSFNvUU0yQW9nR0lBTWdEVGNEZ0FZZ0F5QURLUU9JQmpjRENDQURRWUFHYWlBRFFRaHFFQ1VOQVVIZkFBd0RDMEVBREFJTElBTkJCVFlDakFZZ0EwSHJLallDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndNQVFRQkI0QUFnQTBHQUJtb2dBeEFsR3d3QkMwRWlDeUVBSUFOQmtBWnFKQUFnQUFSQUlBSkJBallDRUNBQ0lBQTJBaFFnQWkwQUdFRUNSZzBCSUFKQkFqb0FHQXdCQ3lBRUlBSXBBZ2dpRFRjREtDQUVJQTAzQTJnakFFR0FBV3NpQXlRQUlBTWdCQ2tDS0NJTk53TndBa0FDUUFKQUFrQUNRQUpBQWtBZ0RVSWdpS2NpQlVFTVJnUkFJQU5CRERZQ2ZDQURRZHZFQXpZQ2VDQURJQU1wQTNnM0F6QWdBMEh3QUdvZ0EwRXdhaEFsRFFGQkFTRUFEQWNMSUFNZ0RUY0RjQ0FGUVFwSERRRWdBMEVLTmdKOElBTkIvS0VETmdKNElBTWdBeWtEZURjRE9DQURRZkFBYWlBRFFUaHFFQ1VOQWtFQ0lRQU1CZ3NnQTBFTU5nSjhJQU5CbHNBRE5nSjRJQU1nRFRjRGNDQURJQU1wQTNnM0F5Z2dBMEh3QUdvZ0EwRW9haEFsRFFGQkF5RUFEQVVMSUFNZ0RUY0RjQ0FGUVJSR0JFQWdBMEVVTmdKOElBTkIvdTBFTmdKNElBTWdBeWtEZURjRFFDQURRZkFBYWlBRFFVQnJFQ1VOQTBFRUlRQU1CUXNnQXlBTk53TndBa0FDUUNBRlFRNUdCRUFnQTBFT05nSjhJQU5CclNJMkFuZ2dBeUFES1FONE53TlFJQU5COEFCcUlBTkIwQUJxRUNVTkFVRUZJUUFNQndzZ0F5QU5Od053SUFWQkUwWUVRQ0FEUVJNMkFud2dBMEhxN1FRMkFuZ2dBeUFES1FONE53TllJQU5COEFCcUlBTkIyQUJxRUNVTkJFRUdJUUFNQndzZ0F5QU5Od053SUFWQkZrY05BU0FEUVJZMkFud2dBMEdKSWpZQ2VDQURJQU1wQTNnM0EyQWdBMEh3QUdvZ0EwSGdBR29RSlEwRVFRY2hBQXdHQ3lBRFFRNDJBbndnQTBIbm1nRTJBbmdnQXlBTk53TndJQU1nQXlrRGVEY0RTQ0FEUWZBQWFpQURRY2dBYWhBbERRSkJDQ0VBREFVTElBTWdEVGNEY0NBRlFRaEhEUUVnQTBFSU5nSjhJQU5CNzhNQ05nSjRJQU1nQXlrRGVEY0RhQ0FEUWZBQWFpQURRZWdBYWhBbERRSkJDU0VBREFRTElBTWdEVGNEY0NBRlFReEhEUUFnQTBFTU5nSjhJQU5Cb0NJMkFuZ2dBeUFES1FONE53TVlJQU5COEFCcUlBTkJHR29RSlEwQ1FRb2hBQXdEQ3lBRElBMDNBM0JCQ3lFQUlBVkJDMGNOQUNBRFFRczJBbndnQTBIcmx3TTJBbmdnQXlBREtRTjROd01nSUFOQjhBQnFJQU5CSUdvUUpVVU5BZ3RCQUNFQURBRUxRUXdoQUNBRFFRdzJBbndnQTBIOElUWUNlQ0FESUEwM0EzQWdBeUFES1FONE53TVFJQU5COEFCcUlBTkJFR29RSlVVTkFDQURRUXcyQW53Z0EwSGQ3UVEyQW5nZ0F5QU5Od053SUFNZ0F5a0RlRGNEQ0VFQVFRMGdBMEh3QUdvZ0EwRUlhaEFsR3lFQUN5QURRWUFCYWlRQUlBQUVRQ0FDUVFNMkFoQWdBaUFBTmdJVUlBSXRBQmhCQTBZTkFTQUNRUU02QUJnTUFRc2dCQ0FDS1FJSUlnMDNBeUFnQkNBTk53TmdJd0JCMEFCcklnTWtBQ0FESUFRcEFpQWlEVGNEUUFKL0FrQUNRQ0FOUWlDSXB5SUFRUVJHQkVBZ0EwRUVOZ0pNSUFOQjVmQUNOZ0pJSUFNZ0F5a0RTRGNEQUNBRFFVQnJJQU1RSlEwQlFRRU1Bd3NnQXlBTk53TkFJQUJCQlVZRVFDQURRUVUyQWt3Z0EwRytMVFlDU0NBRElBTXBBMGczQXdnZ0EwRkFheUFEUVFocUVDVU5BVUVDREFNTElBTWdEVGNEUUNBQVFRaEdCRUFnQTBFSU5nSk1JQU5CamRNQ05nSklJQU1nQXlrRFNEY0RFQ0FEUVVCcklBTkJFR29RSlEwQlFRTU1Bd3NnQXlBTk53TkFBa0FDUUNBQVFRZEdCRUFnQTBFSE5nSk1JQU5CL3Q0RE5nSklJQU1nQXlrRFNEY0RLQ0FEUVVCcklBTkJLR29RSlEwQlFRVU1CUXNnQXlBTk53TkFJQUJCRFVjTkFTQURRUTAyQWt3Z0EwSEcxQUEyQWtnZ0F5QURLUU5JTndNd0lBTkJRR3NnQTBFd2FoQWxEUUpCQmd3RUN5QURRUWMyQWt3Z0EwR293Z1EyQWtnZ0F5QU5Od05BSUFNZ0F5a0RTRGNESUVFSElBTkJRR3NnQTBFZ2FoQWxSUTBER2lBRFFRYzJBa3dnQTBIZzlnSTJBa2dnQXlBTk53TkFJQU1nQXlrRFNEY0RHQ0FEUVVCcklBTkJHR29RSlEwQlFRZ01Bd3NnQXlBTk53TkFJQUJCQ1VZTkFRdEJBQXdCQ3lBRFFkK1JBallDU0NBRFFRazJBa3dnQXlBREtRTklOd000UVFCQkNTQURRVUJySUFOQk9Hb1FKUnNMSVFBZ0EwSFFBR29rQUNBQUJFQWdBa0VFTmdJUUlBSWdBRFlDRkNBQ0xRQVlRUVJHRFFFZ0FrRUVPZ0FZREFFTElBUWdBaWtDQ0NJTk53TVlJQVFnRFRjRFdFRUFJUVVqQUVHZ0FXc2lBeVFBSUFNZ0JDa0NHQ0lOTndPUUFRSkFBa0FDZndKQUFrQUNRQUpBSUExQ0lJaW5JZ1pCQ2tZRVFDQURRUW8yQXB3QklBTkJoZlVDTmdLWUFTQURJQU1wQTVnQk53TklJQU5Ca0FGcUlBTkJ5QUJxRUNVTkFVRUJJUUFNQndzZ0F5QU5Od09RQVNBR1FRaEdCRUFnQTBFSU5nS2NBU0FEUWRqNEFEWUNtQUVnQXlBREtRT1lBVGNEWUNBRFFaQUJhaUFEUWVBQWFoQWxEUUpCQWlFQURBY0xJQU1nRFRjRGtBRWdCa0VIUmdSQUlBTkJCellDbkFFZ0EwR01PellDbUFFZ0F5QURLUU9ZQVRjRGNDQURRWkFCYWlBRFFmQUFhaEFsUlFSQVFRTWhBQXdJQ3lBRFFRYzJBcHdCSUFOQnJ6bzJBcGdCSUFNZ0RUY0RrQUVnQXlBREtRT1lBVGNEYUNBRFFaQUJhaUFEUWVnQWFoQWxEUUZCQkNFQURBY0xJQU1nRFRjRGtBRWdCa0VKUncwQ0lBTkJDVFlDbkFFZ0EwSGgrQUEyQXBnQklBTWdBeWtEbUFFM0EzZ2dBMEdRQVdvZ0EwSDRBR29RSlEwRFFRVWhBQXdHQzBFQURBTUxJQU5CQ0RZQ25BRWdBMEdVT3pZQ21BRWdBeUFOTndPUUFTQURJQU1wQTVnQk53TllJQU5Ca0FGcUlBTkIyQUJxRUNWRkJFQkJCaUVBREFVTElBTkJDRFlDbkFFZ0EwRzNPallDbUFFZ0F5QU5Od09RQVNBRElBTXBBNWdCTndOUUlBTkJrQUZxSUFOQjBBQnFFQ1VOQTBFSElRQU1CQXNnQXlBTk53T1FBU0FHUVF0SERRSWdBMEVMTmdLY0FTQURRY3o0QURZQ21BRWdBeUFES1FPWUFUY0RpQUVnQTBHUUFXb2dBMEdJQVdvUUpVVUVRRUVJSVFBTUJBdEJDeUVBSUFOQkN6WUNuQUVnQTBHeitRQTJBcGdCSUFNZ0RUY0RrQUVnQXlBREtRT1lBVGNEZ0FFZ0EwR1FBV29nQTBHQUFXb1FKUTBDREFNTFFRRUxJUVVnQXlBTk53T1FBU0FHUVFwR0JFQWdBMEVLTmdLY0FTQURRWUU3TmdLWUFTQURJQU1wQTVnQk53TkFJQU5Ca0FGcUlBTkJRR3NRSlVVRVFFRUpJUUFNQXd0QkNpRUFJQU5CQ2pZQ25BRWdBMEdrT2pZQ21BRWdBeUFOTndPUUFTQURJQU1wQTVnQk53TTRJQU5Ca0FGcUlBTkJPR29RSlVVTkFnc2dBeUFOTndPUUFRc2dBeUFOTndPUUFRSkFJQVpCQ2tjTkFDQURRUW8yQXB3QklBTkJ5VHMyQXBnQklBTWdBeWtEbUFFM0F6QWdBMEdRQVdvZ0EwRXdhaEFsUlFSQVFRd2hBQXdDQ3lBRFFRbzJBcHdCSUFOQjdEbzJBcGdCSUFNZ0RUY0RrQUVnQXlBREtRT1lBVGNES0NBRFFaQUJhaUFEUVNocUVDVU5BRUVOSVFBTUFRc2dBeUFOTndPUUFRSkFJQVZGRFFBZ0EwRUpOZ0tjQVNBRFFmYzZOZ0tZQVNBRElBTXBBNWdCTndNZ0lBTkJrQUZxSUFOQklHb1FKUTBBUVE0aEFBd0JDeUFESUEwM0E1QUJBa0FnQmtFS1J3MEFJQU5CQ2pZQ25BRWdBMEc2OVFJMkFwZ0JJQU1nQXlrRG1BRTNBeGdnQTBHUUFXb2dBMEVZYWhBbERRQkJEeUVBREFFTElBTWdEVGNEa0FFQ1FDQUZSUTBBSUFOQkNUWUNuQUVnQTBHYU9qWUNtQUVnQXlBREtRT1lBVGNERUNBRFFaQUJhaUFEUVJCcUVDVU5BRUVRSVFBTUFRc2dBeUFOTndPUUFTQUdRUXBIQkVCQkFDRUFEQUVMSUFOQkNqWUNuQUVnQTBHUTlRSTJBcGdCSUFNZ0F5a0RtQUUzQXdoQkFFRVJJQU5Ca0FGcUlBTkJDR29RSlJzaEFBc2dBMEdnQVdva0FDQUFCRUFnQWtFRk5nSVFJQUlnQURZQ0ZDQUNMUUFZUVFWR0RRRWdBa0VGT2dBWURBRUxJQVFnQWlrQ0NDSU5Od01RSUFRZ0RUY0RVQ01BUVRCcklnTWtBQ0FESUFRcEFoQWlEVGNESUFKL0FrQUNRQ0FOUWlDSXB5SUFRUVJHQkVBZ0EwRUVOZ0lzSUFOQitmOEVOZ0lvSUFNZ0F5a0RLRGNEQ0NBRFFTQnFJQU5CQ0dvUUpRMEJRUUVNQXdzZ0F5QU5Od01nSUFCQkNrWUVRQ0FEUVFvMkFpd2dBMEdpM2dNMkFpZ2dBeUFES1FNb053TVFJQU5CSUdvZ0EwRVFhaEFsRFFGQkFnd0RDeUFESUEwM0F5QWdBRUVGUmcwQkMwRUFEQUVMSUFOQkJUWUNMQ0FEUWE3ZUF6WUNLQ0FESUFNcEF5ZzNBeGhCQUVFRElBTkJJR29nQTBFWWFoQWxHd3NoQUNBRFFUQnFKQUFnQUFSQUlBSkJCallDRUNBQ0lBQTJBaFFnQWkwQUdFRUdSZzBCSUFKQkJqb0FHQXdCQ3lBRUlBSXBBZ2dpRFRjRENDQUVJQTAzQTBnakFFRXdheUlESkFBZ0F5QUVLUUlJSWcwM0F5QUNmd0pBQWtBZ0RVSWdpS2NpQUVFRVJnUkFJQU5CQkRZQ0xDQURRYVA3QURZQ0tDQURJQU1wQXlnM0F3Z2dBMEVnYWlBRFFRaHFFQ1VOQVVFQkRBTUxJQU1nRFRjRElDQUFRUVpHQkVBZ0EwRUdOZ0lzSUFOQjc0OENOZ0lvSUFNZ0F5a0RLRGNERUNBRFFTQnFJQU5CRUdvUUpRMEJRUUlNQXdzZ0F5QU5Od01nSUFCQkMwWU5BUXRCQUF3QkN5QURRUXMyQWl3Z0EwRzN5Z00yQWlnZ0F5QURLUU1vTndNWVFRQkJBeUFEUVNCcUlBTkJHR29RSlJzTElRQWdBMEV3YWlRQUlBQUVRQ0FDUVFjMkFoQWdBaUFBTmdJVUlBSXRBQmhCQjBZTkFTQUNRUWM2QUJnTUFRc2dCQ0FDS1FJSUlnMDNBd0FnQkNBTk53TkFJd0JCTUdzaUF5UUFJQU1nQkNrQ0FDSU5Od01nQW44Q1FDQU5RaUNJcHlJQVFRWkdCRUFnQTBFR05nSXNJQU5CdnQ4Qk5nSW9JQU1nQXlrREtEY0RFQ0FEUVNCcUlBTkJFR29RSlEwQlFRRU1BZ3NnQXlBTk53TWdBa0FnQUVFSVJ3MEFJQU5CQ0RZQ0xDQURRYzNyQkRZQ0tDQURJQU1wQXlnM0F4Z2dBMEVnYWlBRFFSaHFFQ1VOQUVFQ0RBSUxRUUFNQVFzZ0EwRUdOZ0lzSUFOQnZMVUVOZ0lvSUFNZ0RUY0RJQ0FESUFNcEF5ZzNBd2hCQUVFRElBTkJJR29nQTBFSWFoQWxHd3NoQUNBRFFUQnFKQUFnQUVVTkFDQUNRUWcyQWhBZ0FpQUFOZ0lVSUFJdEFCaEJDRVlOQUNBQ1FRZzZBQmdMSUFSQmdBRnFKQUFnQVNBQktBSUFRUUZxTmdJQUlBZEJFR29pQUNBQ0tRSUlOd0lBSUFkQkNHb2dBVUVFYWlBQUlBSVE2QnNMSUFkQklHb2tBQXRtQVFGL0lBQkJBVFlDQUNBQVFRUnFJZ0pDQURjQ0FDQUNRUUEyQWhBZ0FrSUFOd0lJSUFKQkJCRHNEeUFBUVJocUlnSkNBRGNDQUNBQ1FRQTJBaEFnQWtJQU53SUlJQUpCQkJEckR5QUFRb0NBQkRjQ09DQUFRZ0EzQWpBZ0FDQUJOZ0lzSUFBTEZ3QWdBQ2dDQkVIUWxSSkdCSDhnQUNnQ0xBVWdBQXNMQ1FBZ0FCRE5DeEFmQzY0QkFRRi9Jd0JCSUdzaUNTUUFJQWtnQXpZQ0dDQUpJQUUyQWh3Z0NTQUVOZ0lVSUFrZ0JUWUNFQ0FKUVFNMkFnd2dDVUVBTmdJSUlBQWdDU2dDSENBSktBSVlJQWtvQWd3Z0NTZ0NGQ0FKS0FJUVFRQVE5UThpQUVIQW5CSTJBZ1FnQUVING5SSTJBZ0FnQUVJQU53SllJQUFnQmpZQ1ZDQUFJQUkyQWxBZ0FFR29uUkkyQWdBZ0FDQUhLUUlBTndKZ0lBQWdCeWdDQ0RZQ2FDQUFJQWdwQWdBM0Ftd2dDVUVnYWlRQUlBQUxvd0VCQVg4akFFRWdheUlKSkFBZ0NTQUNOZ0lZSUFrZ0FUWUNIQ0FKSUFNMkFoUWdDU0FFTmdJUUlBa2dCVFlDRENBSklBWTJBZ2dnQUNBSktBSWNJQWtvQWhnZ0NTZ0NGQ0FKS0FJUUlBa29BZ3dnQ1NnQ0NCRDFEeUlBUVpDY0VqWUNCQ0FBUWVpZEVqWUNBQ0FBUVppZEVqWUNBQ0FBSUFjcEFnQTNBbEFnQUNBSEtBSUlOZ0pZSUFCQkFEc0JYQ0FBSUFncEFnQTNBbUFnQ1VFZ2FpUUFJQUFMQndBZ0FCRE5Dd3RyQUNBQUVPa0hJZ0JCK0pzU05nSUVJQUJCeUowU05nSUFJQUJCQURZQ0lDQUFJQVkyQWh3Z0FDQUZOZ0lZSUFBZ0JEWUNGQ0FBSUFNMkFoQWdBQ0FDTmdJTUlBQWdBVFlDQ0NBQVFmaWNFallDQUNBQVFvQ0FnSUNBQVRjQ1NDQUFJQUJCSkdvMkFrUWdBQXRNQVFGL0FrQWdBQzBBSkNJQ0lBRXRBQ1JHQkVBZ0FrVU5BU0FBSUFFUTN3UWdBQ0FCS1FJY053SWNEQUVMSUFJRVFDQUFFTkFMREFFTElBQWdBUkQzRHdzZ0FDQUJLUUlvTndJb0N3NEFJQUFnQVJEUkMwRUJPZ0FrQzlnQkFRTi9JQUVnQUNnQ3FBSkxCRUFnQUNnQ29BSWhBeUFBSUFFUW5od0RRQ0FBS0FLa0FpQUNUUVJBSUFBZ0F4QTJCU0FDUVRCc0lnUWdBQ2dDb0FKcUlBTWdCR29pQkJENkd4b2dCQkRNQkNBQ1FRRnFJUUlNQVFzTEN5QUFLQUtrQWlFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDcEFJaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDb0FJZ0FrRXdiR29pQTBJQU53SW9JQU5CQURvQUpDQURRUUE2QUFBZ0FrRUJhaUVDREFBTEFBc0ZJQUFvQXFBQ0lBSkJBV3NpQWtFd2JHb1F6QVFNQVFzTElBQWdBVFlDcEFJTGpRSUNCSDhCZmlBQklBQW9Bc2dFU3dSQUlBQW9Bc0FFSVFSQkRDRURJQUFoQlNBQlFReFBCRUJCZnlBQnJVSXdmaUlHcHlBR1FpQ0lweHNRRlNFRklBRWhBd3NnQUNBRk5nTEFCQ0FBSUFNMkFzZ0VBMEFnQUNnQ3hBUWdBazBFUUNBQUlBUVFOZ1VnQWtFd2JDSURJQUFvQXNBRWFpQURJQVJxSWdNUTlSc2FJQU1RbVFNZ0FrRUJhaUVDREFFTEN3c2dBQ2dDeEFRaEFnTkFJQUVnQWs4RVFBSkFJQUFvQXNRRUlnSWdBU0FCSUFKSkd5RUVBMEFnQWlBRVJnMEJJQUFvQXNBRUlBSkJNR3hxSWdOQ0FEY0RLQ0FEUVFBNkFDQWdBMEVBT2dBQUlBSkJBV29oQWd3QUN3QUxCU0FBS0FMQUJDQUNRUUZySWdKQk1HeHFFSmtEREFFTEN5QUFJQUUyQXNRRUM3TUJBUVovSUFFUXNSMGhCQUpBSUFBb0FnUWlBMFVOQUNBQUtBSUFBbjhnQTBFQmF5QUVjU0FEYVNJQ1FRRk5EUUFhSUFRZ0F5QUVTdzBBR2lBRUlBTndDeUlGUVFKMGFpZ0NBQ0lBUlEwQUlBTkJBV3NoQmlBQ1FRRkxJUWNEUUNBQUtBSUFJZ0JGRFFFZ0FDZ0NCQ0lDSUFSSEJFQUNRQ0FIUlFSQUlBSWdCbkVoQWd3QkN5QUNJQU5KRFFBZ0FpQURjQ0VDQ3lBQ0lBVkhEUUlNQVFzZ0FFRUlhaUFCRU80TFJRMEFDeUFBRHd0QkFBdUNBZ0VGZnlBQUlBRVE3UVVnQUVFTWFpSURLQUlNQkVBZ0F5Z0NDQkNDSENBRFFRQTJBZ2dnQXlnQ0JDRUVBMEFnQWlBRVJnUkFJQU5CQURZQ0RBVWdBeWdDQUNBQ1FRSjBha0VBTmdJQUlBSkJBV29oQWd3QkN3c0xJQUVvQWd3aEFpQUJRUUEyQWd3Z0F5QUNFR3dnQXlBQktBSVFOZ0lFSUFGQkFEWUNFQ0FESUFFb0FoZ2lBallDRENBRElBRXFBaHc0QWhBZ0F5QUJLQUlVSWdRMkFnZ2dBZ1JBSUFOQkNHb2hCU0FFS0FJRUlRSUNRQ0FES0FJRUlnUWdCRUVCYXlJR2NVVUVRQ0FDSUFaeElRSU1BUXNnQWlBRVNRMEFJQUlnQkhBaEFnc2dBeWdDQUNBQ1FRSjBhaUFGTmdJQUlBRkNBRGNDRkFzZ0FDQUJLQUlnTmdJZ0N4c0JBWDhnQUVFTWFpSUJLQUlJRUlJY0lBRVFtd01nQUJBeUdnc3lBQ0FBRU9rSElnQkIySkVTTmdJRUlBQkJpSklTTmdJQUlBQWdBallDRENBQUlBRTJBZ2dnQUVINGtSSTJBZ0FnQUF0SUFRSi9JQUFvQWlRaEFpQUFLQUlvSVFOQkFDRUFBMEFDUUNBQUlBTkdCRUJCZnlFQURBRUxJQUlnQUVFQ2RHb29BZ0FvQWxRZ0FVWU5BQ0FBUVFGcUlRQU1BUXNMSUFBTHFRRUJBbjhqQUVHd0FXc2lCaVFBSUFBUWl4d2lCVUdJa1JJMkFnQWdCVUVJYWhDS0hDQUZJQVE2QUR3Z0JTQUROZ0k0SUFVZ0FUWUNDQ0FDS0FJQUlnSW9BZ0FpQUNBQ0tBSUVRUUowYWlFQ0EzOGdBQ0FDUmdSL0lBRkZCRUFnQmtHa2x3VkJKVUVKSUFaQm9BRnFFQjBpQUJBWElnRkJHR3BCMmJzSUVBNGFJQUVRR0NBQUVCNExJQVpCc0FGcUpBQWdCUVVnQlNBQUtBSUFFSjBlSUFCQkJHb2hBQXdCQ3dzTEJ3QWdBQkNUQ1F0TUFRRi9Ba0FnQUMwQVBDSUNJQUV0QUR4R0JFQWdBa1VOQVNBQUlBRVFvQThnQUNBQktBSTROZ0k0REFFTElBSUVRQ0FBRUpBY0RBRUxJQUFnQVJDRUVBc2dBQ0FCS1FKQU53SkFDK2tCQVFaL0l3QkJJR3NoQkNBQUtBS2tBaUlHUVFGcklRY0NRQU5BSUFVZ0JrWU5BU0FBS0FLZ0FpQUJRUmhzYWlJRExRQU1CRUFnQWlBQ0tBSVVJZ2dnQXlnQ0ZFc0VmeUFFSUFNcEFoQTNBeGdnQkNBREtRSUlOd01RSUFRZ0F5a0NBRGNEQ0NBRElBSXBBaEEzQWhBZ0F5QUNLUUlJTndJSUlBTWdBaWtDQURjQ0FDQUNJQVFwQXhnM0FoQWdBaUFFS1FNUU53SUlJQUlnQkNrRENEY0NBQ0FDS0FJVUJTQUlDMEVCYWpZQ0ZDQUJRUUZxUVFBZ0FTQUhSeHNoQVNBRlFRRnFJUVVNQVFzTElBTWdBaWtDQURjQ0FDQURJQUlwQWhBM0FoQWdBeUFDS1FJSU53SUlDd3M5QWdGL0FYNGdBQ2tEQUNFQ0lBQXRBQWdoQVFOQUlBRkJHSFJCR0hWQlBrd0VRQ0FBSUFGQkFXb2lBVG9BQ0NBQ0lBR3RpRUlCZzFBTkFRc0xDdzRBSUFBZ0FSRGFDMEVCT2dBOEM1RUNBZ1IvQVg0Z0FTQUFLQUxvQmtzRVFDQUFLQUxnQmlFRVFRd2hBeUFBSVFVZ0FVRU1Ud1JBUVg4Z0FhMUN5QUIrSWdhbklBWkNJSWluR3hBVklRVWdBU0VEQ3lBQUlBVTJBdUFHSUFBZ0F6WUM2QVlEUUNBQUtBTGtCaUFDVFFSQUlBQWdCQkEyQlNBQ1FjZ0FiQ0lESUFBb0F1QUdhaUFESUFScUlnTVFuUndhSUFNUWxBa2dBa0VCYWlFQ0RBRUxDd3NnQUNnQzVBWWhBZ05BSUFFZ0FrOEVRQUpBSUFBb0F1UUdJZ0lnQVNBQklBSkpHeUVFQTBBZ0FpQUVSZzBCSUFBb0F1QUdJQUpCeUFCc2FpSURRZ0EzQWtBZ0EwRUFPZ0E4SUFOQkFEb0FBQ0FDUVFGcUlRSU1BQXNBQ3dVZ0FDZ0M0QVlnQWtFQmF5SUNRY2dBYkdvUWxBa01BUXNMSUFBZ0FUWUM1QVlMMndFQ0JIOEJmaUFCSUFBb0FyZ0RTd1JBSUFBb0FyQURJUVJCRENFRElBQWhCU0FCUVF4UEJFQkJmeUFCclVJa2ZpSUdweUFHUWlDSXB4c1FGU0VGSUFFaEF3c2dBQ0FGTmdLd0F5QUFJQU0yQXJnREEwQWdBQ2dDdEFNZ0FrMEVRQ0FBSUFRUU5nVWdBa0VrYkNJRElBQW9BckFEYWlBRElBUnFRU1FRZlJvZ0FrRUJhaUVDREFFTEN3c2dBQ2dDdEFNaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0JFQWdBQ0FCTmdLMEF3VWdBQ2dDc0FNZ0FrRWtiR29pQTBJQU53SWNJQU5CQURvQUdDQURRUUE2QUFBZ0FrRUJhaUVDREFFTEN3dW1BUUVEZnlBQklBQW9BcWdDU3dSQUlBQW9BcUFDSVFNZ0FDQUJFSjRjQTBBZ0FDZ0NwQUlnQWswRVFDQUFJQU1RTmdVZ0FrRXdiQ0lFSUFBb0FxQUNhaUFESUFScVFUQVFmUm9nQWtFQmFpRUNEQUVMQ3dzZ0FDZ0NwQUlpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHQkVBZ0FDQUJOZ0trQWdVZ0FDZ0NvQUlnQWtFd2JHb2lBMElBTndNb0lBTkJBRG9BSUNBRFFRQTZBQUFnQWtFQmFpRUNEQUVMQ3d1L0FRRUVmeUFCSUFBb0FxZ0NTd1JBSUFBb0FxQUNJUU1nQUNBQkVLRVFBMEFnQUNnQ3BBSWdBazBFUUNBQUlBTVFOZ1VnQWtFWWJDSUVJQUFvQXFBQ2FpSUZJQU1nQkdvaUJDa0NBRGNDQUNBRklBUXBBaEEzQWhBZ0JTQUVLUUlJTndJSUlBSkJBV29oQWd3QkN3c0xJQUFvQXFRQ0lnSWdBU0FCSUFKSkd5RUZBMEFnQWlBRlJnUkFJQUFnQVRZQ3BBSUZJQUFvQXFBQ0lBSkJHR3hxSWdOQ0FEY0NFQ0FEUVFBNkFBd2dBMEVBT2dBQUlBSkJBV29oQWd3QkN3c0xqQUlCQkg4akFFSEFBV3NpQXlRQUlBRWdBa2NFUUNBQUtBSUFJZ1FvQWdRaEJTQURJQVEyQWdBZ0F5QUJOZ0lRSUFJb0Fvd0VJZ0VnQWlnQ2tBUkJBblJxSVFZQ1FBSkFBa0FEUUNBQklBWkdEUUVnQVNnQ0FDSUFJQU1vQWhCR0RRSWdBVUVFYWlFQklBQkJtQVJxSUFOQkVHb1E3QWRGRFFBTElBVWdBQ0FES0FJUUlBTVFueHdNQVFzZ0EwRWdha0hubWdWQmtBRkJDQ0FGRUJjaUFFRVlha0dSZ1FrUURob2dBQkFZREFFTElBTWdBQkRyQndzZ0F5QUNLQUpBS0FJa1FTUnFFRk1nQTBFUWFpSUFRY21KQ1NBREVEVWdBMEVnYWlJQklBQkI4NW9KRUMwZ0JDQUJJQUlvQWtCQkVHb1FoZ0VnQVJBUEdpQUFFQThhSUFNUUR4b0xJQU5Cd0FGcUpBQUxTZ0VDZnlNQVFSQnJJZ0lrQUNBQUtBSzRDaUVESUFKQkJqWUNBQ0FEUVJ4cUlBSVFyUVFpQTBVRVFDQUFJQUpCeVBnRUVCUWlBQ0FCRUNjZ0FCQVBHZ3NnQWtFUWFpUUFJQU1McHdFQkJIOGpBRUdnQVdzaUF5UUFJQUFvQWdBaUFoQWNJQUpCNUFGcUlBRVE0UUlpQkVVRVFDQUFLQUlBSWdBUUhDQURRZjJzQTBFelFRZ2dBRUhJQW1vUUZ5SUNRUmhxUWFhV0NSQU9HaUFDSUFFb0FnUkJCR29RbWdFaUJVRVlhaUlBUWR6eERCQU9HaUFBUVlQa0N4QU9HaUFGUVJCcUlBRkJFR29RcmdNZ0FFSGIrQXdRRGhvZ0FFSHc5UXNRRGhvZ0FDQUJFTjBESUFJUUdBc2dBMEdnQVdva0FDQUVDM2NCQlg4Z0FDZ0NBQ0lDS0FLQUFpSURJQUFvQWd4R0JFQWdBQ2dDQ0E4TEl3QkJFR3NpQVNRQUlBRkJDR29nQWlBQVFRUnFFS0VlSUFFb0Fnd2hCQ0FDS0FMd0FTRUNJQUV0QUFnaEJTQUJRUkJxSkFBZ0FpQUVRUlJzYWtFRWFrRUFJQVViSVFFZ0FDQUROZ0lNSUFBZ0FUWUNDQ0FCQ3lFQkFYOGpBRUVnYXlJQ0pBQWdBQ0FDSUFGQkNHb1FWaEJUSUFKQklHb2tBQXVvQVFFSGZ5TUFRZUFBYXlJQkpBQWdBQ2dDQUNFSElBRkJFR29pQXlBQUtBSUVLQUlBSWdJZ0FpZ0NBQ2dDREJFQ0FDQUJRU0JxSWdKQjg1b0pJQU1RTlNBQlFUQnFJZ1FnQWtIZ2xna1FMU0FCSUFBb0FnZ1Erd1VnQVVGQWF5SUZJQVFnQVJCT0lBRkIwQUJxSWdZZ0JVR1Y3d01RTFNBSElBWWdBQ2dDREJDR0FTQUdFQThhSUFVUUR4b2dBUkFQR2lBRUVBOGFJQUlRRHhvZ0F4QVBHaUFCUWVBQWFpUUFDOVFPQVJKL0l3QkI4QUpySWdRa0FDQUVJQUkyQXVnQ0lBUWdBVFlDN0FJZ0FDZ0N3QW9oQnlBRUlBSTJBdHdDSUFRZ0FUWUMyQUpCQVNFRkl3QkJFR3NpQ0NRQUlBaEJDR29nQnlBRVFkZ0NhaERFSENBSUtBSUlJUWNnQ0VFUWFpUUFBa0FnQjBFQ1JpQUNRUVpyUVFKTGNnMEFJQVFnQXpZQzVBSWdCQ0FBTmdMWUFpQUVJQVJCNkFKcU5nTGdBaUFFSUFSQjdBSnFOZ0xjQWdKQUFrQWdBUkJjSWdGRkRRQWdBU2dDQkVIUXFCSkhEUUFnQkNnQzZBSkJCa2NOQUNBQUlBUkJ5QUpxUVpybkFCQVVJZ0FnQXhBbklBQVFEeG9NQVFzZ0JDZ0M3QUlpQmlnQ0JDSUJRWUNaRWtjZ0JrVnlSUVJBUVFBaEFTQUNRUWhISVFvRFFDQUdLQUpJSUFGTEJFQWdBVUVDZENJSElBWW9Ba1JxS0FJQUlnc29BaWdpQWlBQ0tBSUFLQUlVRVFBQUlRVUNRQ0FLRFFBZ0FnUi9JQUlvQWdRUW9od0ZRUUFMUlEwQUlBVkJEMnBCY0hFaEJRc2dDeWdDS0NFQ0lBUWdDeWdDWENnQ0tDSUlLUUlZTndNb0lBUWdDQ2dDSURZQ01DQUVJQWdwQWhBM0F5QWdBQ0FDSUFRb0F1Z0NJQVJCSUdvUWp4QkZCRUFnQkVHNEFtb2lBaUFHRUl3SklBUkJ5QUpxSWdGQnkvTU1JQUlRTlNBQUlBRWdCaWdDbUFGQkVHb1FoZ0VnQVJBUEdpQUNFQThhSUFSQjJBSnFFSTRRREFRTEFrQWdDeWdDTUNBRmNFVU5BQ0FBS0FLNENpRUNJQVJCQlRZQ3lBSWdBa0VjYWlBRVFjZ0NhaEN0QkEwQUlBUkJpQUZxSWhBZ0N5Z0NLQkNFQVNJQklBRW9BZ0FvQWd3UkFnQWdCRUdZQVdvaUVVR1JsQWtnRUJBMUlBUkJxQUZxSWhJZ0VVSDZsZ2tRTFNBRVFmZ0FhaUlUSUFSQjZBSnFFUHNGSUFSQnVBRnFJaFFnRWlBVEVFNGdCRUhJQVdvaUZTQVVRYmF3Q2hBdElBUkI2QUJxSWcwZ0JSQmZJQVJCMkFGcUlna2dGU0FORUU0Z0JFSG9BV29pRENBSlFmU0hDUkF0SUFSQjJBQnFJZzRnQ3hDTkVDQUVRZmdCYWlJS0lBd2dEaEJPSUFSQmlBSnFJZ2dnQ2tHdHpRa1FMU0FFUWNnQWFpSUhJQXNvQWpBUVh5QUVRWmdDYWlJRElBZ2dCeEJPSUFSQnFBSnFJZ0lnQTBHTytBZ1FMU0FFUVRocUlnRWdCUkJmSUFSQnVBSnFJZzhnQWlBQkVFNGdCRUhJQW1vaUJTQVBRYmo4QVJBdElBQWdCU0FMS0FKY1FSQnFFQ2NnQlJBUEdpQVBFQThhSUFFUUR4b2dBaEFQR2lBREVBOGFJQWNRRHhvZ0NCQVBHaUFLRUE4YUlBNFFEeG9nREJBUEdpQUpFQThhSUEwUUR4b2dGUkFQR2lBVUVBOGFJQk1RRHhvZ0VoQVBHaUFSRUE4YUlCQVFEeG9nRHlBR0VJd0pJQVZCeS9NTUlBOFFOU0FBSUFVZ0JpZ0NtQUZCRUdvUWhnRWdCUkFQR2lBUEVBOGFJQXNvQWlnaUF5Z0NCRUdBbVJKSElBTkZja1VFUUNBRVFiZ0NhaUlDSUFNUWpBa2dCRUhJQW1vaUFVR2M5QXdnQWhBMUlBQWdBU0FES0FLWUFVRVFhaENHQVNBQkVBOGFJQUlRRHhvTElBUkIyQUpxRUk0UURBUUxBa0FnQVVVTkFDQUhJQVlvQWtScVFRUnJLQUlBSWd4RklBcHlEUUFnRENnQ0tCREpDVVVOQUNBTEtBSXdJQXdvQWpCcklnZEJEM0ZGRFFBZ0FDZ0N1QW9oQWlBRVFRVTJBc2dDSUFKQkhHb2dCRUhJQW1vUXJRUU5BQ0FFUWVnQmFpSU9JQWNRWHlBRVFmZ0JhaUlLUWFLK0NTQU9FRFVnQkVHSUFtb2lDQ0FLUWFPT0NSQXRJQVJCMkFGcUlnY2dEQkNORUNBRVFaZ0NhaUlESUFnZ0J4Qk9JQVJCcUFKcUlnSWdBMEhVbHdrUUxTQUVRY2dCYWlJQklBc1FqUkFnQkVHNEFtb2lCU0lOSUFJZ0FSQk9JQVJCeUFKcUlna2dEVUdiL0FFUUxTQUFJQWtnQ3lnQ1hFRVFhaEFuSUFrUUR4b2dEUkFQR2lBQkVBOGFJQUlRRHhvZ0F4QVBHaUFIRUE4YUlBZ1FEeG9nQ2hBUEdpQU9FQThhSUEwZ0JoQ01DU0FKUWN2ekRDQU5FRFVnQUNBSklBWW9BcGdCUVJCcUVJWUJJQWtRRHhvZ0JSQVBHa0VBSVFVZ0RTQU1LQUlvSWdGQkFDQUJLQUlFUVlDWkVrWWJJZ0VRakFrZ0NVR2s4d3dnRFJBMUlBQWdDU0FCS0FLWUFVRVFhaENHQVNBRVFjZ0NhaEFQR2lBRVFiZ0NhaEFQR2lBRVFkZ0NhaENPRUF3RkN5QUJRUUZxSVFFTUFRc0xJQVFvQXV3Q0lnWW9BZ1FoQVF0QkFTRUZJQUZCa0tJU1J3MEJJQVlvQWhnaEFTQUVJQU1wQWdnM0F4QWdCQ0FES0FJUU5nSVlJQVFnQXlrQ0FEY0RDQ0FBSUFFZ0JDZ0M2QUlnQkVFSWFoQ1BFRVVOQUNBRUtBTG9Ba0VJUncwQklBQW9BcmdLSVFFZ0JFRUZOZ0xJQWlBQlFSeHFJQVJCeUFKcUVLMEVEUUVnQmkwQUtFRVBjVVVOQVNBRVFjZ0NhaUlKRUZVZ0NRSi9RZE9IQ0NBR0tBSVlFTW9ERFFBYUFrQWdCaWdDR0JDeUFpSUJSUTBBSUFFb0FoZ2lBU0FCS0FJQUtBSVFFUUFBUVFSSERRQkI1SWdJREFFTFFlRE1CMEhnNlFjZ0JpZ0NHQ2dDQkVHQW1SSkdHd3NRMGdFZ0JFSG9BV29pRENBR0tBSVlJZ0VnQVNnQ0FDZ0NEQkVDQUNBRVFmZ0JhaUlPUVkyVENTQU1FRFVnQkVHSUFtb2lDaUFPUWMrd0NoQXRJQVJCMkFGcUlnZ2dCaWdDS0JCZklBUkJtQUpxSWdjZ0NpQUlFRTRnQkVHb0Ftb2lBaUFIUWZQUERCQXRJQVJCdUFKcUlnRWdBaUFKRUU0Z0FDQUJJQU1RSnlBQkVBOGFJQUlRRHhvZ0J4QVBHaUFJRUE4YUlBb1FEeG9nRGhBUEdpQU1FQThhSUFrUUR4b0xRUUFoQlFzZ0JFSHdBbW9rQUNBRkM1Y0JBUU4vQWtBQ1FBTkFRUUFoQWlBQklnTkZEUUlnQUVFQUlBTW9BZ1FpQVVIZ2xCSkdHdzBDSUFGQitKUVNSZ1JBSUFNb0FnZ1BDMEVBSVFFZ0F5Z0NEQ0lDUlEwQUlBSW9BZ1JCa0pJU1JnUkFJQU1vQWdnaUJDQUNLQUlJS0FJc1JpSUNJQUJ5RFFJZ0F5Z0NEQ0lDUlEwQkN5QUFSU0FDSWdFb0FnUkJ1SjhTUjNJTkFBdEJBQThMSUFSQkFDQUNHeUVDQ3lBQ0N5UUFJQUFvQWhSQkJXc2lBRUVFU3dSQVFkejREQThMSUFCQkFuUkJ1SXNTYWlnQ0FBdDlBUVIvSXdCQlFHb2lCaVFBSUFBb0FnUWhCeUFHUVFocUVNOElJUVFnQTBVRVFDQUFLQUlBS0FJQUVLY2JJUVVMSUFSQkNEWUNKQ0FFSUFVMkFnQWdCQ0FCS1FJQU53SUVJQVFnQVNrQ0NEY0NEQ0FFSUFFb0FoQTJBaFFnQkVFWWFpQUNFT0FDSUFjb0FnZ2dCQkNvQnlBRUVJY0ZJQVpCUUdza0FBczBBUUovSUFBb0FnQWhBU0FBS0FJRUlRSURRQUpBSUFFZ0FrWU5BQ0FCTFFBRURRQWdBQ0FCUVJCcUlnRTJBZ0FNQVFzTEM1Z0dBZ3QvQW40akFFR1FBbXNpQWlRQUFrQkJEQ0FCUVpZQmJFSGtBRzRpQVNBQlFReE5HeUlFSUFBb0F2UUJUUTBBSUFKQ2dJQ0FnSUFCTndKRUlBSWdBallDUUNBQ0lBQW9BdndCRU5VY0lBQW9BdkFCSWdFZ0FDZ0M5QUZCRkd4cUlRWURRQ0FCSUFaR0JFQWdBQkQ4SENBQUlBUVFyeEFnQWlnQ1FDSUVJQUlvQWtSQkEzUnFJUWtnQWtIb0FHb2hDZ05BSUFRZ0NVWUVRQ0FDUVFBMkFrUWdBaUFDS0FKQUVEWU1CQXNnQUNnQzlBRWdBQ2dDL0FFaUFVR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBRkJBWFJCQW1vUWxCQUxJQUpCaUFKcUlBQWdCQkR5QkNBQUtBTDBBU0lIUVFGcklRc2dBQ2dDOEFFaERFRUFJUUVnQWlnQ2pBSWhCaUFDS0FLSUFpRUZBa0FEUUNBQklBZEhCRUFnRENBRlFSUnNhaUlETFFBSVJRUkFJQVFwQWdBaERTQURRUUU2QUFnZ0F5QU5Od0lBSUFNZ0JqWUNEQ0FESUFFMkFoQWdBQ0FBS0FMOEFVRUJhallDL0FFZ0FDQUFLQUtBQWtFQmFqWUNnQUlNQXdzZ0JDZ0NBQ0VJSUFZZ0F5Z0NERVlFUUNBSUlBTW9BZ0JHRFFNTElBRWdBeWdDRUVzRVFDQUVLQUlFSVFjZ0FrRUJPZ0Q0QVNBQ0lBRTJBb0FDSUFJZ0J6WUM5QUVnQWlBSU5nTHdBU0FDSUFZMkF2d0JJQUlnQVRZQ1lDQUNJQUlwQS9nQklnMDNBMWdnQWlBQ0tRUHdBU0lPTndOUUlBSWdBeWdDRURZQ2dBSWdBaUFES1FJSU53UDRBU0FDSUFNcEFnQTNBL0FCSUFNZ0FUWUNFQ0FESUE0M0FnQWdBeUFOTndJSUlBSWdBaWdDZ0FKQkFXbzJBb0FDSUFBZ0JVRUJhaUFBS0FMMEFYQWdBa0h3QVdvUXNnUWdBQ0FBS0FMOEFVRUJhallDL0FFZ0FDQUFLQUtBQWtFQmFqWUNnQUlNQXdVZ0JVRUJha0VBSUFVZ0MwY2JJUVVnQVVFQmFpRUJEQUlMQUFzTElBSkIwQUJxUVlhMUEwSHJBMEVPSUFKQjhBRnFFQjBpQVJBWElRTWdDa0dXTlJBT0dpQURFQmdnQVJBZUN5QUVRUWhxSVFRTUFBc0FDeUFCTFFBSUJFQWdBaWdDUkNJRklBSW9Ba2dpQTA4RVFDQUNJQU5CQVhSQkFpQURHeERWSENBQ0tBSkVJUVVMSUFJZ0JVRUJhallDUkNBQ0tBSkFJQVZCQTNScUlBRXBBZ0EzQWdBTElBRkJGR29oQVF3QUN3QUxJQUpCa0FKcUpBQUxDZ0FnQUVHQS94RVFTQXM0QVFGL0FrQWdBVVVOQUNBQktBSU1JZ0VnQUNnQ0JDQUFLQUlBSWdCclFRSjFUdzBBSUFBZ0FVRUNkR29vQWdBUWtSNGhBZ3NnQWdzTEFDQUFRZmo2RVJEY0VndVhBZ0VIZnlNQVFjQUJheUlESkFBZ0EwRzRBV29nQVNBQ0VKb0pJQUVvQW53aUJVRUJheUVHSUFJb0FnQWhCeUFCS0FKNElRZ2dBeWdDdkFFaENTQURLQUs0QVNFQ1FRQWhBUUpBQTBBZ0FTQUZSd1JBSUFnZ0FrRVViR29pQkMwQUNFVUVRQ0FBUVFBMkFnUWdBRUVBT2dBQURBTUxBa0FnQkNnQ0RDQUpSdzBBSUFjZ0JDZ0NBRWNOQUNBQUlBSTJBZ1FnQUVFQk9nQUFEQU1MSUFFZ0JDZ0NFRXNFUUNBQVFRQTJBZ1FnQUVFQU9nQUFEQU1GSUFKQkFXcEJBQ0FDSUFaSEd5RUNJQUZCQVdvaEFRd0NDd0FMQ3lBRFFRaHFRWWExQTBHZUJFRU9JQU5CcUFGcUVCMGlBUkFYSWdKQkdHcEIwalVRRGhvZ0FoQVlJQUJCQURZQ0JDQUFRUUE2QUFBZ0FSQWVDeUFEUWNBQmFpUUFDMjBCQVg4Z0FFS0FnSUNBNEFBM0Fud2dBQ0FBTmdKNElBRkIrQUJxSVFJQ1FDQUJJQUVvQW5oSEJFQWdBQkNtRUNBQUlBSW9BZ2cyQW9BQklBQWdBaWtDQURjQ2VDQUJRUUEyQW9BQklBRkNBRGNDZUF3QkN5QUFJQUlRcEJBTElBQWdBU2tDaEFFM0FvUUJJQUFMU0FFQmZ5TUFRUkJySWdJa0FDQUFJQUZIQkVBZ0FpQUJRZUFBYWpZQ0NDQUNJQUVvQW1BZ0FVYzZBQXdnQUNBQ1FRaHFFTFFiQ3lBQ1FSQnFKQUFnQUNBQktRSnNOd0pzQy9JRkFRVi9Jd0JCSUdzaUFpUUFBa0FnQUMwQXhCZ2lBeUFCTFFERUdFWUVRQ0FEUlEwQklBQWdBU2dDQURZQ0FDQUFRUVJxSUFGQkJHb1FuZ0VnQUNBQktBSVlOZ0lZSUFBZ0FTa0NFRGNDRUNBQUlBRkhCRUFnQWlBQlFmd0hhallDQUNBQ0lBRW9BdndISUFGQkhHcEhPZ0FFSUFCQkhHb2dBaENISFNBQVFZZ0lhaUlERVBzY0lBSWdBRUdnQ0dvaUJDZ0NBRFlDR0NBQ0lBQkJtQWhxSWdVcEFnQTNBeEFnQWlBQVFaQUlhaUlHS1FJQU53TUlJQUlnQXlrQ0FEY0RBQ0FFSUFGQm9BaHFJZ1FvQWdBMkFnQWdCU0FCUVpnSWFpSUZLUUlBTndJQUlBWWdBVUdRQ0dvaUJpa0NBRGNDQUNBRElBRkJpQWhxSWdNcEFnQTNBZ0FnQkNBQ0tBSVlOZ0lBSUFVZ0Fpa0RFRGNDQUNBR0lBSXBBd2czQWdBZ0F5QUNLUU1BTndJQUlBQkJ0QWhxSUFGQnRBaHFLUUlBTndJQUlBQkJyQWhxSUFGQnJBaHFLUUlBTndJQUlBQkJwQWhxSUFGQnBBaHFLUUlBTndJQUlBSWdBVUdjRVdvaUF6WUNBQ0FDSUFNb0FnQWdBVUc4Q0dwSE9nQUVJQUJCdkFocUlBSVFoaDBnQUVHb0VXb2dBVUdvRVdvUTZSd2dBRUg4RW1vZ0FVSDhFbW9RbWhBZ0FFSHdFMm9nQVVId0Uyb1E2QndnQWlBQlFaUVlhaUlETmdJQUlBSWdBeWdDQUNBQlFhUVdha2M2QUFRZ0FFR2tGbW9nQWhDRkhTQUFRYUFZYWlBQlFhQVlhaWtDQURjQ0FDQUFRYWdZYWlJREVQMGNJQUlnQUVIQUdHb2lCQ2dDQURZQ0dDQUNJQUJCdUJocUlnVXBBZ0EzQXhBZ0FpQUFRYkFZYWlJR0tRSUFOd01JSUFJZ0F5a0NBRGNEQUNBRUlBRkJ3QmhxSWdRb0FnQTJBZ0FnQlNBQlFiZ1lhaUlGS1FJQU53SUFJQVlnQVVHd0dHb2lCaWtDQURjQ0FDQURJQUZCcUJocUlnTXBBZ0EzQWdBZ0JDQUNLQUlZTmdJQUlBVWdBaWtERURjQ0FDQUdJQUlwQXdnM0FnQWdBeUFDS1FNQU53SUFEQUlMSUFCQnFCRnFJZ01nQXhEcEhDQUFRZndTYWlJRElBTVFtaEFnQUVId0Uyb2lBeUFERU9nY0RBRUxJQU1FUUNBQUVPb2NEQUVMSUFBZ0FSQ3FFQXNnQUNBQktRTElHRGNDeUJnZ0FrRWdhaVFBQzRFREFRaC9Jd0JCc0FGcklnWWtBQ0FCRVB3Q0lRUWdBRUdVR0dvb0FnQWlCMEVCYXlFSklBUWdCM0FoQXlBQVFaQVlhaWdDQUNFSUFrQUNRQUpBQTBBZ0FpQUhSd1JBSUFnZ0EwRVViR29pQlMwQUNFVU5CQUpBSUFVb0Fnd2dCRWNOQUNBRktBSUFJQUZIRFFCQkFDRUNRUUFoQlFOQUlBVWdCMFlOQlNBQUtBS1FHQ0lFSUFOQkZHd2lDR29oQVNBQ0JFQWdCQ0FJYWlJRUtBSVFSUTBGSUFJZ0FTa0NBRGNDQUNBQ0lBRXRBQWc2QUFnZ0FpQUVLQUlNTmdJTUlBSWdCQ2dDRUVFQmF6WUNFQXNnQTBFQmFrRUFJQU1nQ1VjYklRTWdCVUVCYWlFRklBRWhBZ3dBQ3dBTElBVW9BaEFnQWtrTkJDQURRUUZxUVFBZ0F5QUpSeHNoQXlBQ1FRRnFJUUlNQVFzTElBWkJoclVEUVo0RVFRNGdCa0dnQVdvUUhTSUFFQmNpQVVFWWFrSFNOUkFPR2lBQkVCZ2dBQkFlREFJTElBSkNBRGNDRENBQ1FRQTZBQWdnQWtFQU9nQUFDeUFBUVp3WWFpSUJJQUVvQWdCQkFXczJBZ0FnQUVHZ0dHb2lBQ0FBS0FJQVFRRnFOZ0lBQ3lBR1FiQUJhaVFBQzFRQkFuOGpBRUdRQVdzaUFpUUFJQUJCNUFocUtBSUFJZ0ZCQWs4RVFDQUFJQUZCQVdzaUFUWUM1QWdnQWlBQUtBTGdDQ0FCUVl3QmJHb2lBQkNaRUNFQklBQVF6Z01nQVJET0F3c2dBa0dRQVdva0FBdHhBUVIvSXdCQmtBRnJJZ0lrQUNBQ0VOTUdJUU1nQUVIa0NHb29BZ0FpQVNBQVFlZ0lhaWdDQUNJRVR3UkFJQUFnQkVFQmRFRUNJQVFiRUpVZElBQW9BdVFJSVFFTElBQWdBVUVCYWpZQzVBZ2dBQ2dDNEFnZ0FVR01BV3hxSUFNUW1SQWFJQU1RemdNZ0FrR1FBV29rQUF2Y0FRRUVmeUFCSUFBb0FtaExCRUFnQUNnQ1lDRURJQUFoQWlBQUlBRkJCazhFZjBGL0lBRkJCSFFnQVVILy8vLy9BRXNiRUJVaEFpQUJCVUVHQ3pZQ2FDQUFJQUkyQW1CQkFDRUNBMEFnQUNnQ1pDQUNUUVJBSUFBZ0F4QTJCU0FDUVFSMElnUWdBQ2dDWUdvaUJTQURJQVJxSWdRcEFnQTNBZ0FnQlNBRUtRSUlOd0lJSUFKQkFXb2hBZ3dCQ3dzTElBQW9BbVFpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJIQkVBZ0FDZ0NZQ0FDUVFSMGFpSURRZ0EzQWdnZ0EwRUFPZ0FFSUFOQkFEb0FBQ0FDUVFGcUlRSU1BUXNMSUFBZ0FUWUNaQXNQQUNBQUxRQU1CRUFnQUJBUEdnc0xEUUFnQUNBQlFoaEJEQkRlRWdzMEFRRi9BMEFnQUNnQ3BBSWdBVTBFUUNBQVFRQTJBcVFDQlNBQUtBS2dBaUFCUVJoc2FoQ2dFQ0FCUVFGcUlRRU1BUXNMQ3hFQUlBQVFvaEFnQUNBQUtBS2dBaEEyQzRnQkFRTi9Ba0FnQUNnQ2dBRWdBU2dDQkVrRVFDQUFFS1lRSUFBZ0FTZ0NCQkNBSFF3QkN5QUFRUUEyQW53TElBQWdBU2dDQkNJQ05nSjhBMEFnQWlBRFN3UkFJQU5CRkd3aUJDQUFLQUo0YWlJQ0lBRW9BZ0FnQkdvaUJDa0NBRGNDQUNBQ0lBUW9BaEEyQWhBZ0FpQUVLUUlJTndJSUlBTkJBV29oQXlBQUtBSjhJUUlNQVFzTEM3a0JBUVIvSUFFZ0FDZ0NnQUZMQkVBZ0FDZ0NlQ0VESUFBZ0FSQ0FIUU5BSUFBb0Fud2dBazBFUUNBQUlBTVFOZ1VnQWtFVWJDSUVJQUFvQW5ocUlnVWdBeUFFYWlJRUtRSUFOd0lBSUFVZ0JDZ0NFRFlDRUNBRklBUXBBZ2czQWdnZ0FrRUJhaUVDREFFTEN3c2dBQ2dDZkNJQ0lBRWdBU0FDU1JzaEJRTkFJQUlnQlVaRkJFQWdBQ2dDZUNBQ1FSUnNhaUlEUWdBM0Fnd2dBMEVBT2dBSUlBTkJBRG9BQUNBQ1FRRnFJUUlNQVFzTElBQWdBVFlDZkFzU0FDQUFRUUEyQW53Z0FDQUFLQUo0RURZTEVRQWdBQkNDSFNBQUlBQW9BdUFJRURZTElRQWdBRUtBZ0lDQWdBRTNBaVFnQUNBQU5nSWdJQUFnQVVFZ2FoQ2dIeUFBQ3hFQUlBQVFoQjBnQUNBQUtBTGdCeEEyQ3c4QUlBQWdBUkRwQzBFQk9nREVHQXUyQVFFQ2Z5TUFRUkJySWdNa0FDQURJQUFvQWdBaUJDZ0NCQ0FBS0FJRUtBSUFLQUpJSUFKQkFuUnFLQUlBRUtNSElnQTJBZ3dnQkNnQzRLY0NJUVFDUUFKQUlBQW9BZ3dvQWdSQjJLd1NSZ1JBUVFFaEFDQUJJQVFvQXZnSElBSkIvQUJzYWlJQ1FmUUFhaERTQmcwQ1FRQWhBQ0FCSUFKQjhBQnFFTklHUlEwQkRBSUxJQU1nQkVHNENHb2dBMEVNYWhDREFqWUNDRUVBSVFBZ0FTQURRUWhxRU5JR0RRRUxRUUloQUFzZ0EwRVFhaVFBSUFBTCtBRUJCWDhnQUNnQ0FDSURLQUxncHdJZ0FSRHRCeUFBS0FJRUVKd0pBa0FnQUNnQ0JDQURLQUxncHdKQnJBaHFFTklHSWdVRVFDQURJQU1vQXVDbkFpSUFJQUFvQXF3SUlBRVE4UndNQVFzQ1FDQUFLQUlFSUFNb0F1Q25Ba0d3Q0dvUTBnWkZEUUFnQXlnQzRLY0NJZ0lvQWd4QkFVY05BQ0FDUVFBMkFnd2dBaUFCTmdJUUMwRUFJUUlEUUNBQ0lBQW9BZ2dvQWdBb0FreFBEUUVnQWtIOEFHd2lCQ0FES0FMZ3B3SW9BdmdIYWlnQ0JFRUNSZ1JBSUFBb0Fnd2dBQ2dDQkNBQ0VLc1FJUVlnQXlnQzRLY0NLQUw0QnlBRWFpSUVJQVkyQWdRZ0JDQUJOZ0lJQ3lBQ1FRRnFJUUlNQUFzQUN5QUZRUUZ6Q3pJQkFuOGpBRUhRR0dzaUFpUUFJQUlnQUJDSkhTRURJQUFnQVJDYkVDQUJJQU1RbXhBZ0F4RHhCeUFDUWRBWWFpUUFDeEVBSUFCQnhBQnFFQ01nQUVFWWFoQWpDNzhCQVFSL0lBRWdBQ2dDK0FGTEJFQWdBQ2dDOEFFaEF5QUFJQUVRcmd3RFFDQUFLQUwwQVNBQ1RRUkFJQUFnQXhBMkJTQUNRUlJzSWdRZ0FDZ0M4QUZxSWdVZ0F5QUVhaUlFS1FJQU53SUFJQVVnQkNnQ0VEWUNFQ0FGSUFRcEFnZzNBZ2dnQWtFQmFpRUNEQUVMQ3dzZ0FDZ0M5QUVpQWlBQklBRWdBa2tiSVFVRFFDQUNJQVZHUlFSQUlBQW9BdkFCSUFKQkZHeHFJZ05DQURjQ0RDQURRUUE2QUFnZ0EwRUFPZ0FBSUFKQkFXb2hBZ3dCQ3dzZ0FDQUJOZ0wwQVF1akFnSURmd0YrSUFFZ0FFSElwd0pxS0FJQVN3UkFJQUFvQXNDbkFpRURJQUFoQWlBQUlBRkJERThFZjBGL0lBR3RRdEFZZmlJRnB5QUZRaUNJcHhzUUZTRUNJQUVGUVF3TE5nTElwd0lnQUNBQ05nTEFwd0pCQUNFQ0EwQWdBQ2dDeEtjQ0lBSk5CRUFnQUNBREVEWUZJQUpCMEJoc0lnUWdBQ2dDd0tjQ2FpQURJQVJxSWdRUWlSMGFJQVFROFFjZ0FrRUJhaUVDREFFTEN3c2dBRUhFcHdKcUtBSUFJUUlEUUNBQklBSlBCRUFDUUNBQUtBTEVwd0lpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHRFFFZ0FDZ0N3S2NDSUFKQjBCaHNhaUlEUWdBM0FzZ1lJQU5CQURvQXhCZ2dBMEVBT2dBQUlBSkJBV29oQWd3QUN3QUxCU0FBS0FMQXB3SWdBa0VCYXlJQ1FkQVliR29ROFFjTUFRc0xJQUFnQVRZQ3hLY0NDd29BSUFCQjBLQVNFRWdMRGdBZ0FDQUJJQUpCaEJnUXZRd0xZQUVCZndKQUlBQXRBREFpQWlBQkxRQXdSZ1JBSUFKRkRRRWdBQ0FCRU44RUlBQWdBU2dDTERZQ0xDQUFJQUVwQWlRM0FpUWdBQ0FCS1FJY053SWNEQUVMSUFJRVFDQUFFS1FkREFFTElBQWdBUkRFRUFzZ0FDQUJLUUkwTndJMEN4UUFJQUJCQURZQ2xBRWdBQ0FBS0FLUUFSQTJDNzhCQVFSL0lBRWdBQ2dDbUFGTEJFQWdBQ2dDa0FFaEF5QUFJQUVRcWgwRFFDQUFLQUtVQVNBQ1RRUkFJQUFnQXhBMkJTQUNRUmhzSWdRZ0FDZ0NrQUZxSWdVZ0F5QUVhaUlFS1FJQU53SUFJQVVnQkNrQ0VEY0NFQ0FGSUFRcEFnZzNBZ2dnQWtFQmFpRUNEQUVMQ3dzZ0FDZ0NsQUVpQWlBQklBRWdBa2tiSVFVRFFDQUNJQVZHQkVBZ0FDQUJOZ0tVQVFVZ0FDZ0NrQUVnQWtFWWJHb2lBMElBTndJUUlBTkJBRG9BRENBRFFRQTZBQUFnQWtFQmFpRUNEQUVMQ3d1WUFRRUNmeU1BUVJCcklnSWtBQ0FBUW9DQWdJRGdBRGNDbEFFZ0FDQUFOZ0tRQVNBQ0lBRkJrQUZxTmdJSUlBSWdBU2dDa0FFZ0FVYzZBQXdDUUNBQ0xRQU1CRUFnQUJDMEVDQUFJQUlvQWdnaUF5a0NBRGNDa0FFZ0FDQURLQUlJTmdLWUFTQUNLQUlJSWdOQkFEWUNDQ0FEUWdBM0FnQU1BUXNnQUNBQ0tBSUlFS3NkQ3lBQ1FSQnFKQUFnQUNBQktRS2NBVGNDbkFFTE13RUJmZ0ovUVFBZ0FDa0RFRUtBd0lDQ2dJQ0lBWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFUElIRFFBYUlBQVFud2tMQ3hJQUlBQkI2QUJCbWY4RFFYeEJBeERLQVFzMEFRSi9JQUFvQWdBaEFTQUFLQUlFSVFJRFFBSkFJQUVnQWtZTkFDQUJMUUFNRFFBZ0FDQUJRUmhxSWdFMkFnQU1BUXNMQzlnQkFRTi9JQUVnQUNnQ21BUkxCRUFnQUNnQ2tBUWhBeUFBSUFFUXVSMERRQ0FBS0FLVUJDQUNUUVJBSUFBZ0F4QTJCU0FDUVN4c0lnUWdBQ2dDa0FScUlBTWdCR29pQkJDMUNSb2dCQkNxQWlBQ1FRRnFJUUlNQVFzTEN5QUFLQUtVQkNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDbEFRaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDa0FRZ0FrRXNiR29pQTBJQU53SWtJQU5CQURvQUlDQURRUUE2QUFBZ0FrRUJhaUVDREFBTEFBc0ZJQUFvQXBBRUlBSkJBV3NpQWtFc2JHb1FxZ0lNQVFzTElBQWdBVFlDbEFRTFlRSUJmd0YrQWtBZ0FDMEFDQ0lDSUFFdEFBaEdCRUFnQWtVTkFTQUFJQUVvQWdBMkFnQWdBQ0FCS0FJRU5nSUVEQUVMSUFJRVFDQUFRUUE2QUFnTUFRc2dBU2tDQUNFRElBQkJBVG9BQ0NBQUlBTTNBZ0FMSUFBZ0FTa0NERGNDREF1Q0FRRUVmeU1BUVNCcklnRWtBQ0FCUVFocUVLc2JJZ0lvQWdnaEF5QUJJQUkyQWdRZ0FTQUROZ0lBQWtBZ0FFRWNhaUlFSUFFUXZRRWlBZ1JBSUFJb0Fnd2hBQXdCQ3lBQUlBQVF0QVFRcXhzaUFoQW9JQUFnQUNnQ0dFRUJhallDR0NBQklBSWlBRFlDQkNBQklBTTJBZ0FnQkNBQkVMd0JDeUFCUVNCcUpBQWdBQXNTQUNBQVFmUUFRWTMvQTBGOFFRTVF5Z0VMWWdFQmZ3SkFJQUF0QUJRaUFpQUJMUUFVUmdSQUlBSkZEUUVnQUNBQkVNVWREQUVMSUFJRVFDQUFRUUE2QUJRTUFRc2dBQ0FCS1FJQU53SUFJQUFnQVNnQ0VEWUNFQ0FBSUFFcEFnZzNBZ2dnQUVFQk9nQVVDeUFBSUFFcEFoZzNBaGdMcUFFQ0EzOEJmaUFCSUFBb0FxZ0JTd1JBSUFBb0FxQUJJUVJCQ0NFRElBQWhBaUFCUVFoUEJFQkJmeUFCclVJVWZpSUZweUFGUWlDSXB4c1FGU0VDSUFFaEF3c2dBQ0FDTmdLZ0FTQUFJQU0yQXFnQlFRQWhBUU5BSUFBb0FxUUJJQUZOQkVBZ0FDQUVFRFlGSUFGQkZHd2lBaUFBS0FLZ0FXb2lBeUFDSUFScUlnSXBBZ0EzQWdBZ0F5QUNLQUlRTmdJUUlBTWdBaWtDQ0RjQ0NDQUJRUUZxSVFFTUFRc0xDd3VGQVFFQ2Z5QUFFQndqQUVFUWF5SUlKQUFnQUVHb0FXb2lBQkRQSFNFSklBTW9BZ0FoQXlBQ0tBSUFJUUlnQVNnQ0FDRUJJQWdnQkVFZ2FqWUNDQ0FJSUFRb0FpQWdCRWM2QUF3Z0FDQUpJQUVnQWlBRElBaEJDR29nQlNnQ0FDQUdLQUlBSUFjdEFBQVFpUndpQVJBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FJUVJCcUpBQWdBUXNiQUNBQVFvQ0FnSUFnTndJTUlBQWdBRFlDQ0NBQUlBRVExUjBMYXdFQ2Z5TUFRU0JySWdNa0FDQURRUWhxSUFBZ0FDZ0NCQ0FBS0FJQWEwRUNkVUVCYWhDTEJDQUFLQUlFSUFBb0FnQnJRUUoxSUFCQkNHb1Fwd0lpQWlnQ0NDQUJLQUlBTmdJQUlBSWdBaWdDQ0VFRWFqWUNDQ0FBSUFJUW93UWdBaENhQXlBRFFTQnFKQUFMT2dFQmYwRU1FQlVoQkNBQUlBRkJDR28yQWdRZ0FDQUVOZ0lBSUFRZ0F5Z0NBRFlDQ0NBQVFRRTZBQWdnQkVFQU5nSUFJQVFnQWpZQ0JBc09BQ0FBSUFFUStBdEJBVG9BTUF1TkFnSUVmd0YrSUFFZ0FDZ0MyQVZMQkVBZ0FDZ0MwQVVoQkVFTUlRTWdBQ0VGSUFGQkRFOEVRRUYvSUFHdFFqeCtJZ2FuSUFaQ0lJaW5HeEFWSVFVZ0FTRURDeUFBSUFVMkF0QUZJQUFnQXpZQzJBVURRQ0FBS0FMVUJTQUNUUVJBSUFBZ0JCQTJCU0FDUVR4c0lnTWdBQ2dDMEFWcUlBTWdCR29pQXhEbEhSb2dBeENrQ1NBQ1FRRnFJUUlNQVFzTEN5QUFLQUxVQlNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDMUFVaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDMEFVZ0FrRThiR29pQTBJQU53STBJQU5CQURvQU1DQURRUUE2QUFBZ0FrRUJhaUVDREFBTEFBc0ZJQUFvQXRBRklBSkJBV3NpQWtFOGJHb1FwQWtNQVFzTElBQWdBVFlDMUFVTFlBRUJmeUFBS0FJRUlnSUVRQ0FDS0FJQUlBRVFWMEVCUVFGQjFaNElRZENuQTBId0FCQkxDeUFBSUFFUXpRTWlBVVVFUUVFQUR3c2dBQ0FCRU5ZR0lRRWdBQ2dDQUNnQ0NDQUJFRmRCQVVFQlFhR2JDRUhRcHdOQjlBQVFTeUFCQ3dvQUlBQkIrUG9SRUVnTG1RSUJCMzhqQUVIQUFXc2lBeVFBSUFOQnVBRnFJQUVnQWhEeUJDQUJLQUwwQVNJRlFRRnJJUVlnQWlnQ0FDRUhJQUVvQXZBQklRZ2dBeWdDdkFFaENTQURLQUs0QVNFQ1FRQWhBUUpBQTBBZ0FTQUZSd1JBSUFnZ0FrRVViR29pQkMwQUNFVUVRQ0FBUVFBMkFnUWdBRUVBT2dBQURBTUxBa0FnQkNnQ0RDQUpSdzBBSUFjZ0JDZ0NBRWNOQUNBQUlBSTJBZ1FnQUVFQk9nQUFEQU1MSUFFZ0JDZ0NFRXNFUUNBQVFRQTJBZ1FnQUVFQU9nQUFEQU1GSUFKQkFXcEJBQ0FDSUFaSEd5RUNJQUZCQVdvaEFRd0NDd0FMQ3lBRFFRaHFRWWExQTBHZUJFRU9JQU5CcUFGcUVCMGlBUkFYSWdKQkdHcEIwalVRRGhvZ0FoQVlJQUJCQURZQ0JDQUFRUUE2QUFBZ0FSQWVDeUFEUWNBQmFpUUFDOElHQWdoL0FuNGpBRUhBQVdzaUJTUUFJQUVvQXZRQklBRW9BdndCSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVIZ0FHc2lCaVFBUVF3Z0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRU1UUnNpQnlBQktBTDBBVXNFUUNBR1FvQ0FnSUNBQVRjQ1ZDQUdJQVpCRUdvaUJEWUNVQ0FFSUFFb0F2d0JFTEVFSUFFb0F2QUJJZ1FnQVNnQzlBRkJGR3hxSVFnRFFBSkFJQVFnQ0VZRVFDQUJFTElGSUFFZ0J4RHpCQ0FHS0FKUUlnUWdCaWdDVkVFRGRHb2hCd3dCQ3lBRUxRQUlCRUFnQmtFUWFpQUVFTG9DRUxFRkN5QUVRUlJxSVFRTUFRc0xBMEFnQkNBSFJ3UkFJQVpCQ0dvZ0FTQUVJQVJCQkdvUXlSQWdCRUVJYWlFRURBRUxDeUFHUVJCcUVKVUJDeUFHUWVBQWFpUUFDeUFGUWJnQmFpQUJJQUlROGdRZ0FTZ0M5QUVpQ2tFQmF5RUxJQUlvQWdBaEJ5QUJLQUx3QVNFSUlBVW9BcndCSVFrZ0JTZ0N1QUVoQmtFQUlRSUNRQU5BSUFJZ0NrY0VRQ0FJSUFaQkZHeHFJZ1F0QUFoRkJFQWdBeWdDQUNFRElBUkJBVG9BQ0NBRUlBTTJBZ1FnQkNBSE5nSUFJQVVvQXJ3QklRTWdDQ0FHUVJSc2FpSUdJQUkyQWhBZ0JpQUROZ0lNSUFFZ0FTZ0MvQUZCQVdvMkF2d0JJQUVnQVNnQ2dBSkJBV28yQW9BQ0lBQWdCRUVFYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FFS0FJTUlBbEhEUUFnQnlBRUtBSUFSdzBBSUFCQkFqWUNBQ0FBSUFSQkJHbzJBZ1FNQXdzZ0FpQUVLQUlRU3dSQUlBTW9BZ0FoQXlBRlFRRTZBS2dCSUFVZ0FqWUNzQUVnQlNBRE5nS2tBU0FGSUFjMkFxQUJJQVVnQ1RZQ3JBRWdCU0FDTmdJUUlBVWdCU2tEcUFFaUREY0RDQ0FGSUFVcEE2QUJJZzAzQXdBZ0JTQUVLQUlRTmdLd0FTQUZJQVFwQWdnM0E2Z0JJQVVnQkNrQ0FEY0RvQUVnQkNBQ05nSVFJQVFnRFRjQ0FDQUVJQXczQWdnZ0JTQUZLQUt3QVVFQmFqWUNzQUVnQVNBR1FRRnFJQUVvQXZRQmNDQUZRYUFCYWhDeUJDQUJJQUVvQXZ3QlFRRnFOZ0w4QVNBQklBRW9Bb0FDUVFGcU5nS0FBaUFBSUFSQkJHbzJBZ1FnQUVFQU5nSUFEQU1GSUFaQkFXcEJBQ0FHSUF0SEd5RUdJQUpCQVdvaEFnd0NDd0FMQ3lBRlFZYTFBMEhyQTBFT0lBVkJvQUZxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBQkNBRGNDQUNBQkVCNExJQVZCd0FGcUpBQUw0Z0lCQ244Z0FDZ0NBQ0lFS0FLZ0FTSUhJQUFvQWhCR0JFQWdBQ2dDREE4TEl3QkJFR3NpQVNRQUl3QkJ3QUZySWdNa0FDQURRYmdCYWlBRUlBQkJCR29pQ0JDZkhTQUVLQUtVQVNJSlFRRnJJUW9nQXlnQ3VBRWhBZ0pBQTBBZ0JTQUpSd1JBSUFRb0FwQUJJQUpCR0d4cUlnWXRBQXhGQkVBZ0FVRUFOZ0lNSUFGQkFEb0FDQXdEQ3lBR0lBTW9BcndCSUFnUW5oMEVRQ0FCSUFJMkFnd2dBVUVCT2dBSURBTUxJQVVnQmlnQ0ZFc0VRQ0FCUVFBMkFnd2dBVUVBT2dBSURBTUZJQUpCQVdwQkFDQUNJQXBIR3lFQ0lBVkJBV29oQlF3Q0N3QUxDeUFEUVFocVFZYTFBMEdlQkVFT0lBTkJxQUZxRUIwaUFoQVhJZ1ZCR0dwQjBqVVFEaG9nQlJBWUlBRkJBRFlDRENBQlFRQTZBQWdnQWhBZUN5QURRY0FCYWlRQUlBRW9BZ3doQXlBRUtBS1FBU0VFSUFFdEFBZ2hBaUFCUVJCcUpBQWdBQ0FITmdJUUlBQWdCQ0FEUVJoc2FrRUlha0VBSUFJYklnQTJBZ3dnQUF0Z0FRTi9Jd0JCRUdzaUF5UUFJQUFvQWdRaEFDQUJLQUlBSVFVZ0F5QUJLQUlFSUFFdEFBc2lCQ0FFUVJoMFFSaDFRUUJJSWdRYk5nSU1JQU1nQlNBQklBUWJOZ0lJSUFNZ0F5a0RDRGNEQUNBQUlBTWdBaEQ1QVNBRFFSQnFKQUFMZ2dFQkJIOGpBRUVnYXlJQkpBQWdBVUVJYWhEQ0d5SUNLQUlJSVFNZ0FTQUNOZ0lFSUFFZ0F6WUNBQUpBSUFCQkhHb2lCQ0FCRUwwQklnSUVRQ0FDS0FJTUlRQU1BUXNnQUNBQUVMUUVFTUliSWdJUUtDQUFJQUFvQWhoQkFXbzJBaGdnQVNBQ0lnQTJBZ1FnQVNBRE5nSUFJQVFnQVJDOEFRc2dBVUVnYWlRQUlBQUxMZ0FnQUNnQ0JFSElqaEpIQkVBRFFDQUFLQUlNSWdCRkJFQkJBQThMSUFBb0FnUkJ5STRTUncwQUN3c2dBQXVDQVFFRWZ5TUFRU0JySWdFa0FDQUJRUWhxRU1RYklnSW9BZ2doQXlBQklBSTJBZ1FnQVNBRE5nSUFBa0FnQUVFY2FpSUVJQUVRdlFFaUFnUkFJQUlvQWd3aEFBd0JDeUFBSUFBUXRBUVF4QnNpQWhBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FCSUFJaUFEWUNCQ0FCSUFNMkFnQWdCQ0FCRUx3QkN5QUJRU0JxSkFBZ0FBdEJBUU4vSUFBb0FnUWhBZ0pBSUFBb0FnQkJBVUVBRUtnRklnUkZEUUFnQWlBRUtBSk1LQUlBRU5BRElnSkZEUUFnQUNnQ0NDQUNJQUVRMHdFaEF3c2dBd3NaQUNBQUlBRWdBaUFEUWVDYkVrSHdteEpCd0pzU0VPQVNDdzhBSUFBdEFCQUVRQ0FBRUpVQ0N3dWhIQUlRZndGK0l3QkJnQUpySWdJa0FDQUFLQUlVSVFZZ0FDZ0NFQ0VJSUFBb0Fnd2hCeUFBS0FJQUlRUWdBQ2dDQkNFTklBSWdBQ2dDQ0NJTE5nSU1JQUlnRFRZQ0NBSkFJQUVFUUNBQktBSUVJZ0JCa0tvU1JnUkFJQVJCQUVFQUVMa0NJUUFNQWdzZ0FFR2dzeEpHQkVBZ0JFRUJRUUFRdVFJaEFBd0NDeUFBUWRDb0VrWUVRRUVBSVFBZ0RVR3NIV29nQ3lnQ0FFRVFhaENLRUVVTkFpQUVRUU5CQUJDNUFpRUFEQUlMSUFCQnNLa1NSZ1JBSUFSQkFrRUFFTGtDSVFBTUFnc2dBRUhRcFJKR0JFQWdCRUVFUVFBUXVRSWhBQXdDQ3lBQUVKRURCRUFnQVNnQ0hDRUFJQUV0QUNBRVFDQUFRUU5IQkVBZ0FrRVFha0czbXdWQnZoQkJDQ0FDUWNnQmFoQWRJZ01RRnlJQVFSaHFRYWVhQ0JBT0dpQUFFQmdnQXhBZUN5QUVRUkVnQVNnQ0dCQzVBaUVBREFNTElBUkJmeUFBUVFOcUlBQkJBbXRCQTA4YklBRW9BaGdRdVFJaEFBd0NDeUFBUWZDcUVrWUVRQ0FFUVg4Z0FTZ0NJQ0FCS0FJa1FRTnNhaUlBSUFCQkNHdEJDVThiSUFFb0FoZ1F1UUloQUF3Q0N5QUFRWkNpRWtZRVFDQUNJQUUyQXJRQklBSWdCeWdDSkRZQ3ZBRWdBaUFCTmdLNEFTQUNJQWdvQWdBMkFzQUJJQUpCeUFGcUlBSkJ1QUZxRU5jZElRUkJBQ0VBSUFKQkFEWUNFQ0FDUWVBQmFpQU5RZUF0YWlJRElBUWdBa0VRYWhEV0hTQUdJQUlvQXVBQkJIOGdBUVVnRFVId01Hb29BZ0FoQmlBSEtBSWtJUWNnQWtLQWdJQ0FnQUUzQWpRZ0FpQUNRUkJxSWdvMkFqQWdDaUFIRURrRFFDQUhJQXhIQkVBZ0RTZ0NBQ0VLSUFKQkFEWUMvQUVnQWlBTU5nTDRBU0FDSUFFb0FoZzJBdlFCSUFKQkFEWUM4QUVnQWtFQU5nTHNBU0FDSUFvZ0FrSDRBV29nQWtIMEFXb2dBa0h3QVdvZ0FrSHNBV29RMUIwMkF0d0JJQXhCQVdvaERDQUNRUkJxSUFKQjNBRnFFQ1FNQVFzTElBMG9BZ0FnQWtHMEFXb2dBa0VRYWlJQklBZ1FvUXdoQ2lBQkVDTWdBaUFLTmdMOEFRSkFJQVlnRFNnQzhEQkdCRUFnQWlnQzVBRWdDallDQUF3QkMwRUFJUWdqQUVHd0FXc2lDU1FBSUFNb0FvUURJZ2NnQXlnQ2pBTWlBVUdXQVd4QmxnRnFRZVFBYmtrRVFDQURJQUZCQVhSQkFtb1F5QjBnQXlnQ2hBTWhCd3NnQjBFQmF5RUJJQVFvQWd3aUJpQUhjQ0VNQWtBRFFDQUhJQWhIQkVBZ0F5Z0NnQU1pQ2lBTVFRVjBhaUlGTFFBVVJRUkFJQUlvQXZ3QklRRWdCQ2tDQUNFU0lBVWdCQ2tDQ0RjQ0NDQUZJQkkzQWdBZ0JVRUJPZ0FVSUFVZ0FUWUNFQ0FLSUF4QkJYUnFJZ0VnQ0RZQ0hDQUJJQVkyQWhnZ0F5QURLQUtNQTBFQmFqWUNqQU1nQXlBREtBS1FBMEVCYWpZQ2tBTWdBaUFGUVJCcU5nSVVJQUpCQURZQ0VBd0RDeUFGSUFZZ0JCRHpDd1JBSUFrZ0JDa0NDRGNEQ0NBSklBUXBBZ0EzQXdBZ0NTQUNLQUw4QVRZQ0VDQUZJQWtReEIwZ0F5QURLQUtRQTBFQmFqWUNrQU1nQWlBRlFSQnFOZ0lVSUFKQkFUWUNFQXdEQ3lBSUlBVW9BaHhMQkVBZ0NTQUVLUUlJTndNSUlBa2dCQ2tDQURjREFDQUNLQUw4QVNFQklBa2dCallDR0NBSklBZzJBaHdnQ1NBQk5nSVFJQWxCQVRvQUZDQUpJQVVRb2drZ0NTQUpLQUljUVFGcU5nSWNJQU1nREVFQmFpQURLQUtFQTNBZ0NSRHlDeUFESUFNb0Fvd0RRUUZxTmdLTUF5QURJQU1vQXBBRFFRRnFOZ0tRQXlBQ0lBVkJFR28yQWhRZ0FrRUFOZ0lRREFNRklBeEJBV3BCQUNBQklBeEhHeUVNSUFoQkFXb2hDQXdDQ3dBTEN5QUpRWWExQTBIckEwRU9JQWxCb0FGcUVCMGlBeEFYSWdGQkdHcEJsalVRRGhvZ0FSQVlJQUpDQURjQ0VDQURFQjRMSUFsQnNBRnFKQUFnQWlBQ0tRTVFOd1BnQVFzZ0FpZ0N0QUVMSUFJb0F1UUJLQUlBRU5NZElnRkZEUUlnQVNFUVFRQWhEaUFOUWF3ZGFpRUlJQXNvQWdBaEN5QUNLQUswQVNFREl3QkJrQUpySWdVa0FDQUxLQUpJSWdRZ0N5Z0NURUVDZEdvaEFTQURLQUlZSVF3Q1FBSkFBa0FEUUNBQklBUkdEUUVnQkNnQ0FDRUhJQVJCQkdvaEJDQUlLQUlJSUFjUXB3VVFoQUVpQUNBTUVJb0pRWDlIRFFBTElBVkIwQUZxSWdZZ0NDZ0NDQ0FBRUtjQklBVkI0QUZxSWdwQjg1b0pJQVlRTlNBRlFmQUJhaUlFSUFwQnhJOEpFQzBnQlVIQUFXb2lBeUFJS0FJSUlBd1Fwd0VnQlVHQUFtb2lBU0FFSUFNUVRpQUZRU0JxSWdBZ0FVSHptZ2tRTFNBSUlBQWdCMEVRYWhBbklBQVFEeG9nQVJBUEdpQURFQThhSUFRUUR4b2dDaEFQR2lBR0VBOGFEQUVMSUFNb0Fod2lBU2dDQkVHb294SkdCRUFnQ0NBRlFTQnFRZTRhRUJRaUFDQUxRUkJxRUNjZ0FCQVBHZ3dCQ3lBQkVNRWNCRUFnQ0NBRlFTQnFRYVUzRUJRaUFDQUxRUkJxRUNjZ0FCQVBHZ3dCQ3lBTUxRQVFRUUZ4UlFSQUlBZ2dCVUVnYWtIQjhnTVFGQ0lBSUF0QkVHb1FKeUFBRUE4YURBRUxJQUVvQWdSQmtLTVNSd1JBSUFWQklHcEI1NW9GUWFVT1FRZ2dDQ2dDQkJBWElnQkJHR3BCLytVRUVBNGFJQUFRR0F3QkMwRUJJUVFnQ3lnQ1RDSUFSUTBCSUFBZ0FTZ0NEQ0lCUmcwQklBVkJ3QUZxSWdkQmk0VUtJQVZCSUdwQnVpbEJ3Uk1nQUNBQlNSc1FGQ0lBRU1RQklBVkIwQUZxSWdZZ0IwSFoyZ29RTFNBRlFSQnFJZ29nQVJCZklBVkI0QUZxSWdRZ0JpQUtFRTRnQlVId0FXb2lBeUFFUWFUS0NoQXRJQVVnQ3lnQ1RCQmZJQVZCZ0FKcUlnRWdBeUFGRUU0Z0NDQUJJQXRCRUdvUUp5QUJFQThhSUFVUUR4b2dBeEFQR2lBRUVBOGFJQW9RRHhvZ0JoQVBHaUFIRUE4YUlBQVFEeG9MUVFBaEJBc2dCVUdRQW1va0FDQVFJQTRnQkJzaEFBd0NDeUFBRU9ZREJFQWdBaUFCTmdMY0FTQUNJQWNvQWlRMkFyd0JJQUlnQVRZQ3VBRWdBaUFJS0FJQU5nTEFBU0FDUWNnQmFpQUNRYmdCYWhEWEhTRUtRUUFoQUNBQ1FRQTJBaEFnQWtIZ0FXb2dEVUgwTUdvaUJDQUtJQUpCRUdvUTBoMGdCaUFDS0FMZ0FRUi9JQUVGSUExQmhEUnFLQUlBSVF3Z0FrS0FnSUNBZ0FFM0FqUWdBaUFDUVJCcUlnTTJBakFnQXlBQktBSklJZ1lnQnlnQ0pDSUJJQUVnQmtzYklnWVFPU0FES0FJa0lnY2dCaUFHSUFkSkd5RUJBMEFnQVNBSFJnUkFJQU1nQmpZQ0pBVWdBeWdDSUNBSFFRSjBha0VBTmdJQUlBZEJBV29oQnd3QkN3c2dBaWdDTkNFSFFRQWhBUU5BSUEwb0FnQWhBeUFCSUFkSEJFQWdBa0VBTmdMOEFTQUNJQUUyQXZnQklBSWdBVUVDZENJR0lBSW9BdHdCS0FKRWFpZ0NBQ2dDS0RZQzlBRWdBa0VBTmdMd0FTQUNRUUEyQXV3QklBTWdBa0g0QVdvZ0FrSDBBV29nQWtId0FXb2dBa0hzQVdvUTFCMGhBeUFDS0FJd0lBWnFJQU0yQWdBZ0FVRUJhaUVCREFFTEN5QURJQUpCM0FGcUlBSkJFR29pQVNBSUVLRU1JUU1nQVJBaklBSWdBellDL0FFQ1FDQU1JQTBvQW9RMFJnUkFJQUlvQXVRQklBTTJBZ0FNQVF0QkFDRUlJd0JCc0FGcklna2tBQ0FFS0FLRUF5SUhJQVFvQW93RElnRkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0JDQUJRUUYwUVFKcUVNTWRJQVFvQW9RRElRY0xJQWRCQVdzaEFTQUtLQUlNSWdZZ0IzQWhEQUpBQTBBZ0J5QUlSd1JBSUFRb0FvQURJZ01nREVFRmRHb2lCUzBBRkVVRVFDQUNLQUw4QVNFQklBb3BBZ0FoRWlBRklBb3BBZ2czQWdnZ0JTQVNOd0lBSUFWQkFUb0FGQ0FGSUFFMkFoQWdBeUFNUVFWMGFpSUJJQWcyQWh3Z0FTQUdOZ0lZSUFRZ0JDZ0NqQU5CQVdvMkFvd0RJQVFnQkNnQ2tBTkJBV28yQXBBRElBSWdCVUVRYWpZQ0ZDQUNRUUEyQWhBTUF3c2dCU0FHSUFvUTh3c0VRQ0FKSUFvcEFnZzNBd2dnQ1NBS0tRSUFOd01BSUFrZ0FpZ0MvQUUyQWhBZ0JTQUpFTVFkSUFRZ0JDZ0NrQU5CQVdvMkFwQURJQUlnQlVFUWFqWUNGQ0FDUVFFMkFoQU1Bd3NnQ0NBRktBSWNTd1JBSUFrZ0Npa0NDRGNEQ0NBSklBb3BBZ0EzQXdBZ0FpZ0MvQUVoQVNBSklBWTJBaGdnQ1NBSU5nSWNJQWtnQVRZQ0VDQUpRUUU2QUJRZ0NTQUZFS0lKSUFrZ0NTZ0NIRUVCYWpZQ0hDQUVJQXhCQVdvZ0JDZ0NoQU53SUFrUThnc2dCQ0FFS0FLTUEwRUJhallDakFNZ0JDQUVLQUtRQTBFQmFqWUNrQU1nQWlBRlFSQnFOZ0lVSUFKQkFEWUNFQXdEQlNBTVFRRnFRUUFnQVNBTVJ4c2hEQ0FJUVFGcUlRZ01BZ3NBQ3dzZ0NVR0d0UU5CNndOQkRpQUpRYUFCYWhBZElnTVFGeUlCUVJocVFaWTFFQTRhSUFFUUdDQUNRZ0EzQWhBZ0F4QWVDeUFKUWJBQmFpUUFJQUlnQWlrREVEY0Q0QUVMSUFJb0F0d0JDeUFDS0FMa0FTZ0NBQkRUSFNJQlJRMENJQUVoRVVFQUlROGdEVUdzSFdvaENDQUxLQUlBSVF3Z0FpZ0MzQUVoQXlNQVFZQUJheUlMSkFCQkFTRUtBa0FDUUNBRExRQVFRUUZ4UlFSQUlBZ2dDMEh3QUdwQitvOEVFQlFpQUNBTVFSQnFFQ2NnQUJBUEdnd0JDeUFNS0FKTUlnRkZEUUVnQXlnQ1NDSUFJQUZIQkVBZ0MwRWdhaUlIUWFhRkNpQUxRZkFBYWtHNktVSEJFeUFBSUFGTEd4QVVJZ0FReEFFZ0MwRXdhaUlHSUFkQnh0b0tFQzBnQzBFUWFpSUtJQU1vQWtnUVh5QUxRVUJySWdRZ0JpQUtFRTRnQzBIUUFHb2lBeUFFUWFUS0NoQXRJQXNnRENnQ1RCQmZJQXRCNEFCcUlnRWdBeUFMRUU0Z0NDQUJJQXhCRUdvUUp5QUJFQThhSUFzUUR4b2dBeEFQR2lBRUVBOGFJQW9RRHhvZ0JoQVBHaUFIRUE4YUlBQVFEeG9NQVFzZ0F5Z0NSQ0lHSUFGQkFuUnFJUUVEUUNBQklBWkdEUUlnQ0NnQ0NDQU1LQUpJSUFZb0FnQWlCQ2dDTEVFQ2RHb29BZ0FpQUJDbkJTRURJQVpCQkdvaEJpQUVLQUlvSUFNUWhBRkdEUUFMSUF0Qk1Hb2lCeUFJS0FJSUlBUW9BaWdRcHdFZ0MwRkFheUlHUWNpWUNTQUhFRFVnQzBIUUFHb2lDaUFHUWFhWENSQXRJQXRCSUdvaUJDQUlLQUlJSUFNUXB3RWdDMEhnQUdvaUF5QUtJQVFRVGlBTFFmQUFhaUlCSUFOQjg1b0pFQzBnQ0NBQklBQkJFR29RSnlBQkVBOGFJQU1RRHhvZ0JCQVBHaUFLRUE4YUlBWVFEeG9nQnhBUEdndEJBQ0VLQ3lBTFFZQUJhaVFBSUJFZ0R5QUtHeUVBREFJTEN5TUFRUkJySWdFa0FDQUNLQUlJSUFGQis3WUVFQlFpQUNBQ0tBSU1LQUlBUVJCcUVDY2dBQkFQR2lBQlFSQnFKQUJCQUNFQUN5QUNRWUFDYWlRQUlBQUxzd01CQ1g4akFFRVFheUlESkFBakFFSEFBV3NpQkNRQUlBUkJ1QUZxSUFFZ0FoQ3lFQ0FCUVlRWWFpZ0NBQ0lIUVFGcklRZ2dBaWdDQUNFSklBRW9Bb0FZSVFvZ0JDZ0N2QUVoQ3lBRUtBSzRBU0VDQWtBRFFDQUZJQWRIQkVBZ0NpQUNRUVYwYWlJR0xRQVVSUVJBSUFOQkFEWUNEQ0FEUVFBNkFBZ01Bd3NDUUNBR0tBSVlJQXRIRFFBZ0NTQUdLQUlBUncwQUlBTWdBallDRENBRFFRRTZBQWdNQXdzZ0JTQUdLQUljU3dSQUlBTkJBRFlDRENBRFFRQTZBQWdNQXdVZ0FrRUJha0VBSUFJZ0NFY2JJUUlnQlVFQmFpRUZEQUlMQUFzTElBUkJDR3BCaHJVRFFaNEVRUTRnQkVHb0FXb1FIU0lDRUJjaUJVRVlha0hTTlJBT0dpQUZFQmdnQTBFQU5nSU1JQU5CQURvQUNDQUNFQjRMSUFSQndBRnFKQUFDUUNBRExRQUlCRUFnQVNnQ2dCZ2dBeWdDREVFRmRHcEJCR29oQVNBQVFmOEJPZ0FNSUFCQkFEb0FBQ01BUVJCcklnSWtBQ0FBRUpVQ0lBRXRBQXdpQkVIL0FVY0VRQ0FDUVFocUlBQWdBU0FFUVFKMFFiaUpFbW9vQWdBUkJRQWdBQ0FCTFFBTU9nQU1DeUFDUVJCcUpBQWdBRUVCT2dBUURBRUxJQUJCQURvQUVDQUFRUUE2QUFBTElBTkJFR29rQUF0SkFDQUFFQndnQUVHb0FXb2lBQ0FBRVBNRklBRW9BZ0FnQWlnQ0FDQURLQUlBSUFRb0FnQWdCU2dDQUNBR0xRQUFRUUFRbkFVaUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkMwb0JBbjhqQUVFUWF5SUVKQUFnQkVFSWFpSUZJQUJCQ0dvZ0FpQUJLQUlBSUFNUWlRMGdCUkF3SWdCRkJFQWdBU0FFUVFocUVCb29BZ0EyQWdBTElBUkJFR29rQUNBQVFRRnpDNmNGQWdKL0EzNGpBRUh3QVdzaUJ5UUFJQWNnQlRZQzZBRWdCeUFFTmdMc0FTQUhJQVFnQkNnQ0FDZ0NGQkVBQUNJSU5nTGtBU0FHclNBRUlBUW9BZ0FvQWhBUkFBQWlCQVIrSUFpdElna2dCSzE4UWdGOUlnb2dDaUFKZ24wRlFnQUxJZ3NnQmhzaENRSi9Ba0FnQlVVZ0JTZ0NCQ0lFUVpDakVrZHlSUVJBSUFrZ0JUVUNESDRpQ2tLQWdJQ0FFRlFOQVNBSFFkQUFhaEJKSWdGQkNHb2lBa0dhSnhBT0dpQUJJQUVvQWdCQkRHc29BZ0JxSWdRZ0JDZ0NCRUcxZjNGQkNISTJBZ1FnQWlBS0VNTUVHaUFDUWRXdUFSQU9HaUFIUVVCcklnSWdBVUVNYWhCQ0lBQWdBaUFERUNjZ0FoQVBHaUFCRUZGQkFBd0NDeUFKUWdBZ0JFR29veEpHR3lFS0N5QUFLQUlBSVFNZ0J5QUtQZ0pRSUFjZ0NUNENRQ0FISUFzK0FpZ2dCeUFESUFkQjdBRnFJQWRCNkFGcUlBZEI1QUZxSUFkQjBBQnFJQWRCUUdzZ0IwRW9haENtSHpZQ1BDQUhJQUFnQnlnQzdBRVEraDFCQVdvaUF6WUNPQ0FEUVlBQ1R3UkFJQWRCR0dvaUFpQURFRjhnQjBFb2FpSURRYW12Q2lBQ0VEVWdCMEZBYXlJRUlBTkJ0OTBKRUMwZ0IwRUlhaUlGUWY4QkVGOGdCMEhRQUdvaUJpQUVJQVVRVGlBQUlBWWdBUkFuSUFZUUR4b2dCUkFQR2lBRUVBOGFJQU1RRHhvZ0FoQVBHa0VBREFFTElBZEIwQUJxSUFCQmpEcHFJQWRCUEdvZ0IwRTRhaERKRUNBQVFhd2RhaUVCSUFjb0Fqd2hBeU1BUVNCcklnQWtBQUovQWtBZ0F5Z0NHQ0lERUpnSlJRUkFJQUFnQVNnQ0NDQURFS2NCSUFCQkVHb2lBeUFBUWZrWkVDMGdBU0FESUFJUUp5QURFQThhSUFBUUR4b01BUXNnQVNBREVONExSUVJBSUFFZ0FFRVFha0dWR3hBVUlnRWdBaEFuSUFFUUR4b01BUXRCQVNBREVOd0xSUTBCR2lBQklBSVEyd3NMUVFBTElRRWdBRUVnYWlRQUlBRWhBQ0FIS0FJOFFRQWdBQnNMSVFBZ0IwSHdBV29rQUNBQUMzd0JBMzhqQUVFUWF5SUNKQUFnQUVISUsyb2dBRUdJTkdvUWlRd2hBd0pBSUFFb0FoQWlBRVVOQUNBQUtBSUVJZ1JCa0p3U1JnUkFJQUlnQVRZQ0RDQUNJQUEyQWdnZ0FpQURJQUpCQ0dvUTl3VU1BUXNnQkVIQW5CSkhEUUFnQWlBQU5nSUFJQUpCQ0dvZ0EwRW9haUFDRUtzRkN5QUNRUkJxSkFBTEZ3QWdBRUVBSUFBRWZ5QUFLQUlFRUxBS0JVRUFDeHNMRndBZ0FFRUFJQUFFZnlBQUtBSUVFSzhJQlVFQUN4c0xrUUlCQTM4Z0FCQWNJQUJCcUFGcUlnUWhCaUFFRUtNZElRVWdBU2dDQUNFQklBSW9BZ0FoQWlBREtBSUFJUU1qQUVIQUFXc2lBQ1FBSUFBZ0FqWUN1QUVnQUNBQk5nSzhBU0FBSUFNMkFyUUJJQVVnQUNnQ3ZBRWdBQ2dDdUFFZ0FDZ0N0QUVRMXdzaUFVSElqaEkyQWdRZ0FVRzRqeEkyQWdBZ0FVSUFOd0xzQWlBQlFZaVBFallDQUNBQUtBSzRBVVVFUUNBQVFmaVNCVUV4UVFrZ0FFR2dBV29RSFNJQ0VCY2lBMEVZYWtHSm5RZ1FEaG9nQXhBWUlBSVFIZ3NnQUNnQ3RBRkZCRUFnQUVINGtnVkJNa0VKSUFCQm9BRnFFQjBpQWhBWElnTkJHR3BCekxFSUVBNGFJQU1RR0NBQ0VCNExJQUJCd0FGcUpBQWdCaUFCSWdBUUtDQUVJQVFvQWhoQkFXbzJBaGdnQUF2NUN3SU1md0o5SXdCQndBSnJJZ2drQUNBSUlBSTJBcmdDSUFnZ0FUWUN2QUlnQUVFTWFpSUJJQWhCdkFKcUVPY0VSUVJBSUFoQkVHb2lBRUVBUVpBQkVIa2FJQUFRM3dZaENpQUlJQWdvQXJ3Q05nS2dBU0FJUWFBQmFpSUpRUVJ5SUFvUW54NGhDeU1BUVJCcklnWWtBRUVBSVFJakFFRVFheUlISkFBZ0NSRDBBeUVBSUFZQ2Z3SkFJQUVvQWdRaUEwVU5BQ0FCS0FJQUFuOGdBMEVCYXlBQWNTQURhU0lFUVFGTkRRQWFJQUFnQUNBRFNRMEFHaUFBSUFOd0N5SUNRUUowYWlnQ0FDSUZSUTBBSUFOQkFXc2hEQ0FKS0FJQUlRMGdCRUVCU3lFT0EwQWdCU2dDQUNJRlJRMEJJQUFnQlNnQ0JDSUVSd1JBQWtBZ0RrVUVRQ0FFSUF4eElRUU1BUXNnQXlBRVN3MEFJQVFnQTNBaEJBc2dBaUFFUncwQ0N5QUZLQUlJSUExSERRQUxRUUFNQVF0Qm5BRVFGU0VFSUFjZ0FVRUlhallDQkNBSElBUTJBZ0FnQkVFSWFpSUZJQWtvQWdBMkFnQWdCVUVFYWlBSlFRUnFFSjhlR2lBSFFRRTZBQWdnQkVFQU5nSUFJQVFnQURZQ0JBSkFRUUFnQXlBQktBSU1RUUZxc3lJUElBRXFBaEFpRUNBRHM1UmVHdzBBSUFFZ0F5QURRUUZyY1VFQVJ5QURRUU5KY2lBRFFRRjBjaUlDQW44Z0R5QVFsWTBpRDBNQUFJQlBYU0FQUXdBQUFBQmdjUVJBSUErcERBRUxRUUFMSWdRZ0FpQUVTeHNRd3dFZ0FTZ0NCQ0lESUFOQkFXdHhSUVJBSUFOQkFXc2dBSEVoQWd3QkN5QUFJQU5KQkVBZ0FDRUNEQUVMSUFBZ0EzQWhBZ3NDUUNBQ1FRSjBJZ0lnQVNnQ0FHb29BZ0FpQUVVRVFDQUhLQUlBSUFFb0FnZzJBZ0FnQVNBSEtBSUFOZ0lJSUFFb0FnQWdBbW9nQVVFSWFqWUNBQ0FIS0FJQUlnQW9BZ0FpQWtVTkFTQUNLQUlFSVFVQ1FDQURJQU5CQVdzaUFuRkZCRUFnQWlBRmNTRUZEQUVMSUFNZ0JVc05BQ0FGSUFOd0lRVUxJQUVvQWdBZ0JVRUNkR29nQURZQ0FBd0JDeUFIS0FJQUlBQW9BZ0EyQWdBZ0FDQUhLQUlBTmdJQUN5QUhLQUlBSVFVZ0IwRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUhFT2tkUVFFTE9nQU1JQVlnQlRZQ0NDQUhRUkJxSkFBZ0NDQUdLQUlJTmdJSUlBZ2dCaTBBRERvQURDQUdRUkJxSkFBZ0N4Q3VCQ0FLRUs0RUN5TUFRU0JySWdja0FDQUhJQWhCdkFKcUlnWTJBaEJCQUNFQ0l3QkJFR3NpQlNRQUlBWVE5QU1oQUNBSEFuOENRQ0FCS0FJRUlnUkZEUUFnQVNnQ0FBSi9JQVJCQVdzZ0FIRWdCR2tpQ1VFQlRRMEFHaUFBSUFBZ0JFa05BQm9nQUNBRWNBc2lBa0VDZEdvb0FnQWlBMFVOQUNBRVFRRnJJUW9nQmlnQ0FDRUxJQWxCQVVzaENRTkFJQU1vQWdBaUEwVU5BU0FBSUFNb0FnUWlCa2NFUUFKQUlBbEZCRUFnQmlBS2NTRUdEQUVMSUFRZ0Jrc05BQ0FHSUFSd0lRWUxJQUlnQmtjTkFnc2dBeWdDQ0NBTFJ3MEFDMEVBREFFTFFad0JFQlVoQXlBRklBRkJDR28yQWdRZ0JTQUROZ0lBSUFjb0FoQWhDU01BUVJCcklnWWtBQ0FHSUFrMkFnZ2dBMEVJYWlJSklBWW9BZ2dvQWdBMkFnQWdDVUVFYWtFQVFaQUJFSGtRM3dZYUlBWkJFR29rQUNBRlFRRTZBQWdnQTBFQU5nSUFJQU1nQURZQ0JBSkFRUUFnQkNBQktBSU1RUUZxc3lJUElBRXFBaEFpRUNBRXM1UmVHdzBBSUFFZ0JDQUVRUUZyY1VFQVJ5QUVRUU5KY2lBRVFRRjBjaUlDQW44Z0R5QVFsWTBpRDBNQUFJQlBYU0FQUXdBQUFBQmdjUVJBSUErcERBRUxRUUFMSWdRZ0FpQUVTeHNRd3dFZ0FTZ0NCQ0lFSUFSQkFXdHhSUVJBSUFSQkFXc2dBSEVoQWd3QkN5QUFJQVJKQkVBZ0FDRUNEQUVMSUFBZ0JIQWhBZ3NDUUNBQ1FRSjBJZ0lnQVNnQ0FHb29BZ0FpQUVVRVFDQUZLQUlBSUFFb0FnZzJBZ0FnQVNBRktBSUFOZ0lJSUFFb0FnQWdBbW9nQVVFSWFqWUNBQ0FGS0FJQUlnQW9BZ0FpQWtVTkFTQUNLQUlFSVFNQ1FDQUVJQVJCQVdzaUFuRkZCRUFnQWlBRGNTRUREQUVMSUFNZ0JFa05BQ0FESUFSd0lRTUxJQUVvQWdBZ0EwRUNkR29nQURZQ0FBd0JDeUFGS0FJQUlBQW9BZ0EyQWdBZ0FDQUZLQUlBTmdJQUN5QUZLQUlBSVFNZ0JVRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUZFT2tkUVFFTE9nQWNJQWNnQXpZQ0dDQUZRUkJxSkFBZ0J5Z0NHQ0VBSUFkQklHb2tBQ0FBUVF4cUlBaEJ1QUpxRUlVTUlBaEJ3QUpxSkFBTFRBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUVNYWlJQUlBSkJER29RNXdRRWZ5QUFJQUpCREdvUXBRa2lBRVVFUUJBQkFBc2dBRUVNYWdWQkFBc2hBQ0FDUVJCcUpBQWdBQXNYQUNBQUlBRWdBa0h3eWdOQi90SURRY0dUQWhERURBc1hBQ0FBSUFFZ0FrRzN5d05CNnRNRFFiVy9BeERFREF1Z0FRRUNmeUFBSUFFMkF2ZzVJQUJCaERwcVFvT0FnSUF3TndJQUlBQkJnRHBxUWFTSUVqWUNBQ0FBUWZ3NWFrR0ZqUUUyQWdBZ0FFR29IV29oQXlBQUlBRVFxZ1VoQUNNQVFSQnJJZ0VrQUFKQUlBQkZEUUFnQUVFQUlBQUVmeUFBS0FJRUVOOGRCVUVBQ3hzaUFnMEFJQUZCQmpZQ0RDQUJRWVdOQVRZQ0NDQUJJQUVwQXdnM0F3QWdBeUFBSUFFUXBnVkJBQ0VDQ3lBQlFSQnFKQUFnQWdzakFRRi9JQUFvQWdBaUFTQUFLQUlFUndSQUlBQWdBVUVZYWpZQ0FDQUFFTGtRQ3d2L0NBSU5md0o5SXdCQklHc2lDU1FBSUFrZ0FUWUNFQ0FKUVJCcUlRVWpBRUVRYXlJSEpBQWdBUkN4SFNFSUlBa0Nmd0pBSUFBb0FnUWlBa1VOQUNBQUtBSUFBbjhnQWtFQmF5QUljU0FDYVNJR1FRRk5EUUFhSUFnZ0FpQUlTdzBBR2lBSUlBSndDeUlEUVFKMGFpZ0NBQ0lFUlEwQUlBSkJBV3NoQ2lBR1FRRkxJUXNEUUNBRUtBSUFJZ1JGRFFFZ0NDQUVLQUlFSWdaSEJFQUNRQ0FMUlFSQUlBWWdDbkVoQmd3QkN5QUNJQVpMRFFBZ0JpQUNjQ0VHQ3lBRElBWkhEUUlMSUFSQkNHb2dBUkR1QzBVTkFBdEJBQXdCQ3lBSElBQWdDQ0FGRUxBZEFrQkJBQ0FDSUFBb0FneEJBV3F6SWc4Z0FDb0NFQ0lRSUFLemxGNGJEUUFDUUFKL1FRSWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJQkFuOGdEeUFRbFkwaUQwTUFBSUJQWFNBUFF3QUFBQUJnY1FSQUlBK3BEQUVMUVFBTElnTWdBU0FEU3hzaUFVRUJSZzBBR2lBQklBRWdBVUVCYTNGRkRRQWFJQUVRZndzaUJTQUFLQUlFSWdGTkJFQWdBU0FGVFEwQklBRkJBMGtoQWdKL0lBQW9BZ3l6SUFBcUFoQ1ZqU0lQUXdBQWdFOWRJQTlEQUFBQUFHQnhCRUFnRDZrTUFRdEJBQXNoQXlBQklBVWdBaUFCYVVFQlMzSUVmeUFERUg4RklBTkJBVUVnSUFOQkFXdG5hM1FnQTBFQ1NSc0xJZ01nQXlBRlNSc2lCVTBOQVF0QkFDRUJBa0FnQlFSQUlBQWdCUkNYQXhCc0lBQWdCVFlDQkFOQUlBRWdCVVlFUUNBQUtBSUlJZ0pGRFFNZ0FFRUlhaUVCSUFJb0FnUWhCQUpBSUFWcElnTkJBVTBFUUNBRUlBVkJBV3R4SVFRTUFRc2dCQ0FGU1EwQUlBUWdCWEFoQkFzZ0FDZ0NBQ0FFUVFKMGFpQUJOZ0lBSUFWQkFXc2hDeUFEUVFGTElRd0RRQ0FDS0FJQUlnTkZEUVFnQXlnQ0JDRUJBa0FnREVVRVFDQUJJQXR4SVFFTUFRc2dBU0FGU1EwQUlBRWdCWEFoQVFzZ0FTQUVSd1JBSUFGQkFuUWlDaUFBS0FJQWFpSUdLQUlBQkVBZ0EwRUlhaUVOSUFNaEFRTkFBa0FnQVNJR0tBSUFJZ0ZGQkVCQkFDRUJEQUVMSUEwZ0FVRUlhaER1Q3lFT0lBWW9BZ0FoQVNBT0RRRUxDeUFDSUFFMkFnQWdCaUFBS0FJQUlBcHFLQUlBS0FJQU5nSUFJQUFvQWdBZ0Ntb29BZ0FnQXpZQ0FBd0NDeUFHSUFJMkFnQWdBU0VFQ3lBRElRSU1BQXNBQlNBQUtBSUFJQUZCQW5ScVFRQTJBZ0FnQVVFQmFpRUJEQUVMQUFzQUN5QUFRUUFRYkNBQVFRQTJBZ1FMQ3lBQUtBSUVJZ0lnQWtFQmEzRkZCRUFnQWtFQmF5QUljU0VEREFFTElBSWdDRXNFUUNBSUlRTU1BUXNnQ0NBQ2NDRURDd0pBSUFOQkFuUWlBeUFBS0FJQWFpZ0NBQ0lCUlFSQUlBY29BZ0FnQUNnQ0NEWUNBQ0FBSUFjb0FnQTJBZ2dnQUNnQ0FDQURhaUFBUVFocU5nSUFJQWNvQWdBaUFTZ0NBQ0lEUlEwQklBTW9BZ1FoQkFKQUlBSWdBa0VCYXlJRGNVVUVRQ0FESUFSeElRUU1BUXNnQWlBRVN3MEFJQVFnQW5BaEJBc2dBQ2dDQUNBRVFRSjBhaUFCTmdJQURBRUxJQWNvQWdBZ0FTZ0NBRFlDQUNBQklBY29BZ0EyQWdBTElBY29BZ0FoQkNBSFFRQTJBZ0FnQUNBQUtBSU1RUUZxTmdJTUlBY1Fpd0ZCQVFzNkFCd2dDU0FFTmdJWUlBZEJFR29rQUNBSktBSVlJUUFnQ1VFZ2FpUUFJQUJCRUdvTEpRQWdBQ0FCS0FLUUFTQUJLQUtVQVVFWWJHb2lBVFlDQkNBQUlBRTJBZ0FnQUJDNUVBc3JBUUYvSUFFb0FwUUJJUUlnQUNBQktBS1FBU0lCTmdJQUlBQWdBU0FDUVJoc2FqWUNCQ0FBRUxrUUM4c0JBUU4vQWtBZ0FDZ0NCQ0FBS0FJQUlnTnJRUUoxSWdJZ0FVRUJhaUlCSUFBb0FnUWdBQ2dDQUd0QkFuVWlCQ0FCSUFSTEd5SUJTUVJBSXdCQklHc2lBeVFBQWtBZ0FTQUNheUlCSUFBb0FnZ2dBQ2dDQkNJRWEwRUNkVTBFUUNBQUlBRVFoQjRNQVFzZ0EwRUlhaUFBSUFRZ0FDZ0NBR3RCQW5VZ0FXb1Fpd1FnQUNnQ0JDQUFLQUlBYTBFQ2RTQUFRUWhxRUtjQ0lnSWdBUkR0SENBQUlBSVFvd1FnQWhDYUF3c2dBMEVnYWlRQURBRUxJQUVnQWtrRVFDQUFJQU1nQVVFQ2RHbzJBZ1FMQ3dzb0FDQUFRUUEyQW9RRElBQkJEQkQ1Q3lBQVFRQTJBb3dESUFBZ0FDZ0NrQU5CQVdvMkFwQURDelFCQVg4RFFDQUFLQUtNQWlBQlRRUkFJQUJCQURZQ2pBSUZJQUFvQW9nQ0lBRkJMR3hxRUtvQ0lBRkJBV29oQVF3QkN3c0xtQUVCQW44akFFRVFheUlDSkFBZ0FFS0FnSUNBNEFBM0Fvd0NJQUFnQURZQ2lBSWdBaUFCUVlnQ2FqWUNDQ0FDSUFFb0FvZ0NJQUZIT2dBTUFrQWdBaTBBREFSQUlBQVE2QkFnQUNBQ0tBSUlJZ01wQWdBM0FvZ0NJQUFnQXlnQ0NEWUNrQUlnQWlnQ0NDSURRUUEyQWdnZ0EwSUFOd0lBREFFTElBQWdBaWdDQ0JEREhnc2dBa0VRYWlRQUlBQWdBU2tDbEFJM0FwUUNDeEVBSUFBUTVoQWdBQ0FBS0FLSUFoQTJDOWdCQVFOL0lBRWdBQ2dDa0FKTEJFQWdBQ2dDaUFJaEF5QUFJQUVReEI0RFFDQUFLQUtNQWlBQ1RRUkFJQUFnQXhBMkJTQUNRU3hzSWdRZ0FDZ0NpQUpxSUFNZ0JHb2lCQkMxQ1JvZ0JCQ3FBaUFDUVFGcUlRSU1BUXNMQ3lBQUtBS01BaUVDQTBBZ0FTQUNUd1JBQWtBZ0FDZ0NqQUlpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHRFFFZ0FDZ0NpQUlnQWtFc2JHb2lBMElBTndJa0lBTkJBRG9BSUNBRFFRQTZBQUFnQWtFQmFpRUNEQUFMQUFzRklBQW9Bb2dDSUFKQkFXc2lBa0VzYkdvUXFnSU1BUXNMSUFBZ0FUWUNqQUlMMGdJQkMzOGdBQ2dDQUNJRUtBS1lBaUlJSUFBb0FpUkdCRUFnQUNnQ0lBOExJd0JCRUdzaUFTUUFJd0JCc0FGcklnVWtBQ0FFS0FLTUFpSUdRUUZySVFrZ0FFRUVhaUlLS0FJQUlnc2dCbkFoQWdKQUEwQWdBeUFHUndSQUlBUW9Bb2dDSUFKQkxHeHFJZ2N0QUNCRkJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REN5QUhJQXNnQ2hDNUNRUkFJQUVnQWpZQ0RDQUJRUUU2QUFnTUF3c2dBeUFIS0FJb1N3UkFJQUZCQURZQ0RDQUJRUUE2QUFnTUF3VWdBa0VCYWtFQUlBSWdDVWNiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVZCaHJVRFFaNEVRUTRnQlVHZ0FXb1FIU0lDRUJjaUEwRVlha0hTTlJBT0dpQURFQmdnQVVFQU5nSU1JQUZCQURvQUNDQUNFQjRMSUFWQnNBRnFKQUFnQVNnQ0RDRUNJQVFvQW9nQ0lRUWdBUzBBQ0NFRElBRkJFR29rQUNBQUlBZzJBaVFnQUNBRUlBSkJMR3hxUVJ4cVFRQWdBeHNpQURZQ0lDQUFDNmtCQVFSL0FrQWdBQzBBRkNJQ0lBRXRBQlJHQkVBZ0FrVU5BU0FBSUFFb0FnQTJBZ0FqQUVFUWF5SUNKQUFDUUNBQVFRUnFJZ010QUF4Qi93RkdJQUZCQkdvaUJTMEFEQ0lFUWY4QlJuRU5BQ0FFUWY4QlJnUkFJQU1RbFFJTUFRc2dBaUFETmdJSUlBSkJDR29nQXlBRklBUkJBblJCeUlVU2FpZ0NBQkVGQUFzZ0FrRVFhaVFBREFFTElBSUVRQ0FBRU5JZURBRUxJQUFnQVJEeEVBc2dBQ0FCS1FJWU53SVlDekFCQW44akFFRWdheUlDSkFBZ0FpQUFFTnNlSVFNZ0FDQUJFT3NRSUFFZ0F4RHJFQ0FERVA0SElBSkJJR29rQUF2eUFRRUVmeUFCSUFCQmlBeHFLQUlBU3dSQUlBQW9Bb0FNSVFSQjRBQWhBaUFBSVFVZ0FVSGdBRThFUUVGL0lBRkJCSFFnQVVILy8vLy9BRXNiRUJVaEJTQUJJUUlMSUFBZ0JUWUNnQXdnQUVHSURHb2dBallDQUFOQUlBQW9Bb1FNSUFOTkJFQWdBQ0FFRURZRklBTkJCSFFpQWlBQUtBS0FER29pQlNBQ0lBUnFJZ0lwQWdBM0FnQWdCU0FDS1FJSU53SUlJQU5CQVdvaEF3d0JDd3NMSUFCQmhBeHFLQUlBSWdNZ0FTQUJJQU5KR3lFRUEwQWdBeUFFUmdSQUlBQWdBVFlDaEF3RklBQW9Bb0FNSUFOQkJIUnFJZ0pDQURjQ0NDQUNRUUE2QUFRZ0FrRUFPZ0FBSUFOQkFXb2hBd3dCQ3dzTERnQWdBQ0FCRVBvRlFRRTZBQ0FMOUFFQ0JIOEJmaUFCSUFBb0F1Z0RTd1JBSUFBb0F1QURJUVZCR0NFQ0lBQWhCQ0FCUVJoUEJFQkJmeUFCclVJVWZpSUdweUFHUWlDSXB4c1FGU0VFSUFFaEFnc2dBQ0FFTmdMZ0F5QUFJQUkyQXVnREEwQWdBQ2dDNUFNZ0EwMEVRQ0FBSUFVUU5nVWdBMEVVYkNJRUlBQW9BdUFEYWlJQ0lBUWdCV29pQkNrQ0FEY0NBQ0FDSUFRb0FoQTJBaEFnQWlBRUtRSUlOd0lJSUFOQkFXb2hBd3dCQ3dzTElBQW9BdVFESWdNZ0FTQUJJQU5KR3lFRkEwQWdBeUFGUmdSQUlBQWdBVFlDNUFNRklBQW9BdUFESUFOQkZHeHFJZ0pDQURjQ0RDQUNRUUE2QUFnZ0FrRUFPZ0FBSUFOQkFXb2hBd3dCQ3dzTFd3RURmeUFCSUFBb0FneExCRUFnQUNnQ0JDRUNJQUFnQVJEY0hpQUFLQUlJSVFOQkFDRUJBMEFnQVNBRFJnUkFJQUFnQWhBMkJTQUJRUUowSWdRZ0FDZ0NCR29nQWlBRWFpZ0NBRFlDQUNBQlFRRnFJUUVNQVFzTEN3c09BQ0FBSUFFUWtneEJBVG9BRkF1VUFnRUVmeUFCSUFCQmlCaHFLQUlBU3dSQUlBQW9Bb0FZSVFSQjRBQWhBeUFBSVFVZ0FVSGdBRThFUUVGL0lBRkJCWFFnQVVILy8vOC9TeHNRRlNFRklBRWhBd3NnQUNBRk5nS0FHQ0FBUVlnWWFpQUROZ0lBQTBBZ0FDZ0NoQmdnQWswRVFDQUFJQVFRTmdVZ0FrRUZkQ0lESUFBb0FvQVlhaUFESUFScUlnTVEyeDRhSUFNUS9nY2dBa0VCYWlFQ0RBRUxDd3NnQUVHRUdHb29BZ0FoQWdOQUlBRWdBazhFUUFKQUlBQW9Bb1FZSWdJZ0FTQUJJQUpKR3lFRUEwQWdBaUFFUmcwQklBQW9Bb0FZSUFKQkJYUnFJZ05DQURjQ0dDQURRUUE2QUJRZ0EwRUFPZ0FBSUFKQkFXb2hBZ3dBQ3dBTEJTQUFLQUtBR0NBQ1FRRnJJZ0pCQlhScUVQNEhEQUVMQ3lBQUlBRTJBb1FZQ3pJQkFuOGpBRUdRQVdzaUFpUUFJQUlRU1NJRElBRW9BZ0FRMVE4YUlBQWdBMEVNYWhCQ0lBTVFVU0FDUVpBQmFpUUFDdzhBSUFBZ0FVSDR2UkpCQXhETURBc1BBQ0FBSUFGQmlMNFNRUU1RekF3TE1nRUNmeU1BUVpBQmF5SUNKQUFnQWhCSklnTWdBU2dDQUJDMkN4b2dBQ0FEUVF4cUVFSWdBeEJSSUFKQmtBRnFKQUFMTWdFQ2Z5TUFRWkFCYXlJQ0pBQWdBaEJKSWdNZ0FTZ0NBQkNiQkJvZ0FDQURRUXhxRUVJZ0F4QlJJQUpCa0FGcUpBQUxOd0VDZnlNQVFaQUJheUlDSkFBZ0FoQkpJZ05CQ0dvZ0FTZ0NBQkRKQXhBT0dpQUFJQU5CREdvUVFpQURFRkVnQWtHUUFXb2tBQXM2QVFKL0l3QkJFR3NpQWlRQUlBSkJDR29nQUVHTUFtb2dBUkRQSGlBQ0tBSUlJUU1nQWtFUWFpUUFJQU5CQWtjRVFDQUFJQUVRbEFNTEMrVUJBUVIvSUFFZ0FDZ0N5QUZMQkVBZ0FDZ0N3QUVoQXlBQUlRSWdBQ0FCUVF4UEJIOUJmeUFCUVFSMElBRkIvLy8vL3dCTEd4QVZJUUlnQVFWQkRBczJBc2dCSUFBZ0FqWUN3QUZCQUNFQ0EwQWdBQ2dDeEFFZ0FrMEVRQ0FBSUFNUU5nVWdBa0VFZENJRUlBQW9Bc0FCYWlJRklBTWdCR29pQkNrQ0FEY0NBQ0FGSUFRcEFnZzNBZ2dnQWtFQmFpRUNEQUVMQ3dzZ0FDZ0N4QUVpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJIQkVBZ0FDZ0N3QUVnQWtFRWRHb2lBMElBTndJSUlBTkJBRG9BQkNBRFFRQTZBQUFnQWtFQmFpRUNEQUVMQ3lBQUlBRTJBc1FCQ3hvQUlBQkJxUFlQUWVqMUQwS0FnWURBZ0lDQWdJSi9FTVlNQzZjSkFnaC9BbjRqQUVIQUFXc2lCU1FBSUFFb0F1UURJQUVvQXV3RElnUkJsZ0ZzUVpZQmFrSGtBRzVKQkVBakFFR2dBV3NpQmlRQVFSZ2dCRUVCZEVFQ2FrR1dBV3hCNUFCdUlnUWdCRUVZVFJzaUNTQUJLQUxrQTBzRVFDQUdRb0NBZ0lDQUFqY0NsQUVnQmlBR1FSQnFJZ1EyQXBBQklBUWdBU2dDN0FNUXR4NGdBU2dDNEFNaUJDQUJLQUxrQTBFVWJHb2hDZ05BQWtBZ0JDQUtSZ1JBSUFFUTdCNGdBU0FKRU84UUlBWW9BcEFCSWdRZ0JpZ0NsQUZCQTNScUlRY01BUXNnQkMwQUNBUkFJQVFRdWdJaEN5QUdRUkJxSWdjb0FvUUJJZ2dnQnlnQ2lBRlBCRUFnQnlBSEtBS0lBU0lJUVFGMFFRSWdDQnNRdHg0Z0J5Z0NoQUVoQ0FzZ0J5QUlRUUZxTmdLRUFTQUhLQUtBQVNBSVFRTjBhaUFMS1FJQU53SUFDeUFFUVJScUlRUU1BUXNMQTBBZ0JDQUhSd1JBSUFaQkNHb2dBU0FFSUFSQkJHb1EvQkFnQkVFSWFpRUVEQUVMQ3lBR1FSQnFFTndGQ3lBR1FhQUJhaVFBQ3lNQVFSQnJJZ1lrQUNBQ0tBSUFFUHdDSVFRZ0FTZ0M1QU1oQnlBRklBUTJBcndCSUFVZ0JDQUhjRFlDdUFFZ0JrRVFhaVFBSUFFb0F1UURJZ3BCQVdzaEN5QUNLQUlBSVFjZ0FTZ0M0QU1oQ0NBRktBSzhBU0VKSUFVb0FyZ0JJUVpCQUNFQ0FrQURRQ0FDSUFwSEJFQWdDQ0FHUVJSc2FpSUVMUUFJUlFSQUlBTW9BZ0FoQXlBRVFRRTZBQWdnQkNBRE5nSUVJQVFnQnpZQ0FDQUZLQUs4QVNFRElBZ2dCa0VVYkdvaUJpQUNOZ0lRSUFZZ0F6WUNEQ0FCSUFFb0F1d0RRUUZxTmdMc0F5QUJJQUVvQXZBRFFRRnFOZ0x3QXlBQUlBUkJCR28yQWdRZ0FFRUFOZ0lBREFNTEFrQWdCQ2dDRENBSlJ3MEFJQWNnQkNnQ0FFY05BQ0FBUVFJMkFnQWdBQ0FFUVFScU5nSUVEQU1MSUFJZ0JDZ0NFRXNFUUNBREtBSUFJUU1nQlVFQk9nQ29BU0FGSUFJMkFyQUJJQVVnQXpZQ3BBRWdCU0FITmdLZ0FTQUZJQWsyQXF3QklBVWdBallDRUNBRklBVXBBNmdCSWd3M0F3Z2dCU0FGS1FPZ0FTSU5Od01BSUFVZ0JDZ0NFRFlDc0FFZ0JTQUVLUUlJTndPb0FTQUZJQVFwQWdBM0E2QUJJQVFnQWpZQ0VDQUVJQTAzQWdBZ0JDQU1Od0lJSUFVZ0JTZ0NzQUZCQVdvMkFyQUJJQVpCQVdvZ0FTZ0M1QU53SVFaQkFDRUhJd0JCSUdzaEF5QUJLQUxrQXlJSVFRRnJJUWtDUUFOQUlBY2dDRVlOQVNBQktBTGdBeUFHUVJSc2FpSUNMUUFJQkVBZ0JTQUZLQUt3QVNJS0lBSW9BaEJMQkg4Z0F5QUNLQUlRTmdJWUlBTWdBaWtDQ0RjREVDQURJQUlwQWdBM0F3Z2dBaUFGS0FLd0FUWUNFQ0FDSUFVcEFxZ0JOd0lJSUFJZ0JTa0NvQUUzQWdBZ0JTQURLQUlZTmdLd0FTQUZJQU1wQXhBM0FxZ0JJQVVnQXlrRENEY0NvQUVnQlNnQ3NBRUZJQW9MUVFGcU5nS3dBU0FHUVFGcVFRQWdCaUFKUnhzaEJpQUhRUUZxSVFjTUFRc0xJQUlnQlNrQ29BRTNBZ0FnQWlBRktBS3dBVFlDRUNBQ0lBVXBBcWdCTndJSUN5QUJJQUVvQXV3RFFRRnFOZ0xzQXlBQklBRW9BdkFEUVFGcU5nTHdBeUFBSUFSQkJHbzJBZ1FnQUVFQU5nSUFEQU1GSUFaQkFXcEJBQ0FHSUF0SEd5RUdJQUpCQVdvaEFnd0NDd0FMQ3lBRlFZYTFBMEhyQTBFT0lBVkJvQUZxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBQkNBRGNDQUNBQkVCNExJQVZCd0FGcUpBQUxid0VGZnlNQVFUQnJJZ1FrQUNBQUtBTGdFU0FBUWVRUmFpZ0NBRUdjQW14cUlRSURRQUpBSUFBb0F1QVJJQUpHQkVCQkFDRUREQUVMSUFSQkNHb2dBa0djQW1zaUFpQUJFTWtlSWdVUXlCNGlCZ1JBSUFVUTZoQW9BZ0FoQXdzZ0JrVU5BUXNMSUFSQk1Hb2tBQ0FEQ3prQkFYOGdBU2dDQUNJQ0tBSUFJZ0VnQWlnQ0JFRUNkR29oQWdOQUlBRWdBa2NFUUNBQUlBRW9BZ0FRK0FVZ0FVRUVhaUVCREFFTEN3czBBUUovSUFBb0FnQWhBU0FBS0FJRUlRSURRQUpBSUFFZ0FrWU5BQ0FCTFFBZ0RRQWdBQ0FCUVN4cUlnRTJBZ0FNQVFzTEM0WURBUVovSXdCQm9BcHJJZ0lrQUVIZ0FDQUJRWllCYkVIa0FHNGlBU0FCUWVBQVRSc2lCU0FBUVlRWWFpZ0NBRXNFUUNBQ1FaUUtha0tBZ0lDQWdBZzNBZ0FnQWlBQ1FSQnFJZ0UyQXBBS0lBRWdBQ2dDakJnUTJCNGdBQ2dDZ0JnaUFTQUFLQUtFR0VFRmRHb2hCZ05BQWtBZ0FTQUdSZ1JBSUFBUTZ4NGdBQ0FGRVBJUUlBSW9BcEFLSWdFZ0FpZ0NsQXBCRkd4cUlRTU1BUXNnQVMwQUZBUkFJQUVRL1FjaEJ5QUNRUkJxSWdOQmhBcHFLQUlBSWdRZ0EwR0lDbW9vQWdCUEJFQWdBeUFEUVlnS2FpZ0NBQ0lFUVFGMFFRSWdCQnNRMkI0Z0F5Z0NoQW9oQkFzZ0F5QUVRUUZxTmdLRUNpQURLQUtBQ2lBRVFSUnNhaUFIRUpJTUdnc2dBVUVnYWlFQkRBRUxDd05BSUFFZ0EwY0VRQ0FDUVFocUlBQWdBU0FCUVFScUVPd0VJQUZCRkdvaEFRd0JDd3NnQWtFUWFpRUJRUUFoQUFOQUlBRW9Bb1FLSUFCTkJFQWdBVUVBTmdLRUNnVWdBU2dDZ0FvZ0FFRVViR3BCQkdvUWxRSWdBRUVCYWlFQURBRUxDeUFCSUFFb0FvQUtFRFlMSUFKQm9BcHFKQUFMNFFFQ0EzOEJmaUFCSUFCQmlCNXFLQUlBU3dSQUlBQW9Bb0FlSVFNZ0FDRUNJQUFnQVVIZ0FFOEVmMEYvSUFHdFFpaCtJZ1duSUFWQ0lJaW5HeEFWSVFJZ0FRVkI0QUFMTmdLSUhpQUFJQUkyQW9BZVFRQWhBZ05BSUFBb0FvUWVJQUpOQkVBZ0FDQURFRFlGSUFKQktHd2lCQ0FBS0FLQUhtb2dBeUFFYWtFb0VIMGFJQUpCQVdvaEFnd0JDd3NMSUFCQmhCNXFLQUlBSWdJZ0FTQUJJQUpKR3lFRUEwQWdBaUFFUndSQUlBQW9Bb0FlSUFKQktHeHFJZ05DQURjQ0lDQURRUUE2QUJ3Z0EwRUFPZ0FBSUFKQkFXb2hBZ3dCQ3dzZ0FDQUJOZ0tFSGd1U0FnSURmd0YrSUFFZ0FFR29DR29vQWdCTEJFQWdBQ2dDb0FnaEF5QUFJUUlnQUNBQlFSaFBCSDlCZnlBQnJVSXNmaUlGcHlBRlFpQ0lweHNRRlNFQ0lBRUZRUmdMTmdLb0NDQUFJQUkyQXFBSVFRQWhBZ05BSUFBb0FxUUlJQUpOQkVBZ0FDQURFRFlGSUFKQkxHd2lCQ0FBS0FLZ0NHb2dBeUFFYWlJRUVMVUpHaUFFRUtvQ0lBSkJBV29oQWd3QkN3c0xJQUJCcEFocUtBSUFJUUlEUUNBQklBSlBCRUFDUUNBQUtBS2tDQ0lDSUFFZ0FTQUNTUnNoQkFOQUlBSWdCRVlOQVNBQUtBS2dDQ0FDUVN4c2FpSURRZ0EzQWlRZ0EwRUFPZ0FnSUFOQkFEb0FBQ0FDUVFGcUlRSU1BQXNBQ3dVZ0FDZ0NvQWdnQWtFQmF5SUNRU3hzYWhDcUFnd0JDd3NnQUNBQk5nS2tDQXNWQUNBQVFlQ0JFallDQUNBQVFTUnFFS2dCSUFBTFhnRUJmeU1BUVJCcklnWWtBQ0FHSUFJMkFnQWdCaUFCTmdJSUlBQWdCaWdDQ0NBR0tBSUFJQU1ROHdZaUFFSFEvQkUyQWdRZ0FFR0kvUkUyQWdBZ0FDQUZOZ0lvSUFBZ0JEWUNKQ0FBUWZEOEVUWUNBQ0FHUVJCcUpBQWdBQXRnQVFGL0lBQW9BZ1FpQWdSQUlBSW9BZ0FnQVJCWFFRRkJBVUhWbmdoQjBLY0RRZkFBRUVzTElBQWdBUkROQXlJQlJRUkFRUUFQQ3lBQUlBRVE0Z1loQVNBQUtBSUFLQUlJSUFFUVYwRUJRUUZCb1pzSVFkQ25BMEgwQUJCTElBRUxFZ0FnQUVISUFFRzUvd05CZkVFREVNb0JDNVlEQVFGL0l3QkJ3QUZySWdja0FDQUhJQUkyQXJBQklBY2dBVFlDdUFFZ0FDQUhLQUs0QVNBSEtBS3dBU0FERU5rRUlnQkJtUGNSTmdJRUlBQkJ6UGNSTmdJQUlBQWdCVFlDS0NBQUlBUTJBaVFnQUVHNDl4RTJBZ0FnQUVFc2FpQUdFT2tHQWtBZ0FDZ0NKQ0lDUlFSQUlBZEJwS0FGUVI5QkFDQUhRYUFCYWhBZElnRVFGeUlDUVJocVFkUzlDQkFPR2lBQ0VCZ2dBUkFlSUFBb0FpUWlBa1VOQVFzZ0FpZ0NCRUhJNlE5SERRQWdCMEdrb0FWQklVRUFJQWRCb0FGcUVCMGlBUkFYSWdKQkdHcEJ2dXNJRUE0YUlBSVFHQ0FCRUI0TElBQW9BaWhGQkVBZ0IwR2tvQVZCSTBFQUlBZEJvQUZxRUIwaUFSQVhJZ0pCR0dwQjI3d0lFQTRhSUFJUUdDQUJFQjRMSUFBb0Fqd2lBaUFBUVVCcktBSUFRUUowYWlFQklBZEJHR29oQXdOQUlBRWdBa2NFUUNBQ0tBSUFJZ1JGQkVBZ0IwR2tvQVZCSlVFQUlBZEJvQUZxRUIwaUJSQVhJUVlnQTBHWnB3Z1FEaG9nQmhBWUlBVVFIZ3NnQkJCWElBQW9BZ2hCQVVFQVFkM0VDRUdrb0FWQkpoQkxJQUpCQkdvaEFnd0JDd3NnQjBIQUFXb2tBQ0FBQytZQkFRUi9Jd0JCb0FGcklnUWtBQ0FFUVJCcUVFa2lCa0VJYWlJRklBRVFEaG9nQXdSQUlBVkIydWtHRUE0YUlBUWdBeUFES0FJQUtBSU1FUUlBSUFVZ0JCQVNHaUFGUVl2bUJoQU9HaUFFRUE4YUN5QUZRWm4vQ0JBT0dpQUNLQUlBSWdFb0FnQWlBeUFCS0FJRVFRSjBhaUVDUVFFaEFRTkFJQUlnQTBjRVFDQURLQUlBSVFjZ0FVRUJjVVVFUUNBRlFmVHREQkFPR2dzZ0JDQUhFSVFCSWdFZ0FTZ0NBQ2dDREJFQ0FDQUZJQVFRRWhvZ0EwRUVhaUVESUFRUUR4cEJBQ0VCREFFTEN5QUZRZS8yQ0JBT0dpQUFJQVpCREdvUVFpQUdFRkVnQkVHZ0FXb2tBQXZhQndFSWZ5TUFRUkJySWdza0FBSkFBa0FEUUNBRVJRMENBa0FDUUNBRElBWk1JQVFnQmt4eVJRUkFJQUFoQndOQUlBTkZEUVlnQVNnQ2lBRWdCeWdDaUFGSkRRSWdBMEVCYXlFRElBZEJqQUZxSVFjTUFBc0FDeUFMUVFBMkFnZ2dDeUFGTmdJQUlBc2dDMEVJYWpZQ0JDQURJQVJNRFFFZ0JTRURJQUVoQndOQUlBSWdCMFlFUUFOQUlBTWdCVVlOQmlBQUlBRkdCRUFEUUNBRElBVkdEUWdnQWtHTUFXc2dBMEdNQVdzaUF4RGtBaUVDREFBTEFBVWdBeUFEUVl3QmF5SUVJQVFvQW9nQklBRkJqQUZySWdZb0FvZ0JTU0lIR3lFRElBWWdBU0FIR3lFQklBSkJqQUZySUFZZ0JDQUhHeERrQWlFQ0RBRUxBQXNBQlNBRElBY1E1UUloQXlBTElBc29BZ2hCQVdvMkFnZ2dCMEdNQVdvaEJ5QURRWXdCYWlFRERBRUxBQXNBQ3dKQUlBTWdCRWdFUUNBQklBZHJRWXdCYlNFSUlBRWdCRUVDYlNJTlFZd0JiR29pQ2lnQ2lBRWhDU0FISVF3RFFDQUlCRUFnQ0VFQmRpSUFJQWdnQUVGL2Myb2dDU0FNSUFCQmpBRnNhaUlBS0FLSUFVa2lEaHNoQ0NBTUlBQkJqQUZxSUE0YklRd01BUXNMSUF3Z0IydEJqQUZ0SVE0TUFRc2dBMEVCUmdSQUlBY2dBUkNjREF3RkN5QUNJQUZyUVl3QmJTRUlJQWNnQTBFQ2JTSU9RWXdCYkdvaURDZ0NpQUVoQ1NBQklRb0RRQ0FJQkVBZ0NDQUlRUUYySWdCQmYzTnFJQUFnQ2lBQVFZd0JiR29pQUNnQ2lBRWdDVWtpRFJzaENDQUFRWXdCYWlBS0lBMGJJUW9NQVFzTElBb2dBV3RCakFGdElRMExJQVFnRFdzaEJDQURJQTVySVFNQ2Z5QUtJQUVnREVZTkFCb2dBU0VKSUF3aUNDQUJJQXBHRFFBYUEwQWdDQ0FKRUp3TUlBaEJqQUZxSVFnZ0NVR01BV29pQ1NBS1JrVUVRQ0FKSUFFZ0FTQUlSaHNoQVF3QkN3c2dDQ0VBSUFFaUNTQUJJQWhHRFFBYUEzOGdBQ0FKRUp3TUlBQkJqQUZxSVFBZ0NpQUpRWXdCYWlJSlJnUi9JQUVoQ1NBQUlBRkhEUUVnQ0FVZ0NTQUJJQUFnQVVZYklRRU1BUXNMQ3lFQUlBMGdEbW9nQXlBRWFrZ0VRQ0FISUF3Z0FDQU9JQTBnQlNBR0VJa1JJQW9oQVF3Q0N5QUFJQW9nQWlBRElBUWdCU0FHRUlrUklBMGhCQ0FPSVFNZ0FDRUNJQXdoQVNBSElRQU1BUXNMSUFVaEJ5QUFJUU1EUUNBQklBTkdCRUFEUUNBRklBZEdEUU1nQVNBQ1JnUkFBMEFnQlNBSFJnMEZJQUFnQlJEa0FrR01BV29oQUNBRlFZd0JhaUVGREFBTEFBVUNRQ0FCS0FLSUFTQUZLQUtJQVVrRVFDQUFJQUVRNUFJYUlBRkJqQUZxSVFFTUFRc2dBQ0FGRU9RQ0dpQUZRWXdCYWlFRkN5QUFRWXdCYWlFQURBRUxBQXNBQlNBSElBTVE1UUloQkNBTElBc29BZ2hCQVdvMkFnZ2dBMEdNQVdvaEF5QUVRWXdCYWlFSERBRUxBQXNBQ3lBTEVMd0pDeUFMUVJCcUpBQUxQd0VCZndOQUlBQW9BdVFJSUFGTEJFQWdBQ2dDNEFnZ0FVR01BV3hxRUs4RkdpQUJRUUZxSVFFTUFRc0xJQUJCQURZQzVBZ2dBQ0FBS0FMZ0NCQTJDeDhBSUFCQ2dJQ0FnSUFCTndKRUlBQWdBRFlDUUNBQUlBRkJRR3NRblI4TFNBRUJmeU1BUVJCcklnSWtBQ0FBUW9DQWdJQ0FBVGNDUkNBQUlBQTJBa0FnQWlBQlFVQnJOZ0lJSUFJZ0FTZ0NRQ0FCUnpvQURDQUFJQUpCQ0dvUW5oOGdBa0VRYWlRQUN5c0FJQUJCQURvQVdDQUFRUUE2QUFBZ0FTMEFXQVJBSUFBZ0FSRG1CZ3NnQUNBQktRSmNOd0pjSUFBTEpnQWdBQ0FBS0FJWVJTQUFLQUlRSUFGeWNpSUJOZ0lRSUFBb0FoUWdBWEVFUUJCdkFBc0xsZ2NCQkg4Z0FFS0FnSUNBZ0FFM0FpUWdBQ0FBTmdJZ0l3QkJNR3NpQXlRQUlBQWdBaWdDSkJBNUlBTkJBRFlDS0NBRElBSTJBaVFnQXlBQlFjZ2dhallDSUNBRElBRkIzSUFCYWlnQ0FFRUJhellDTEFKQUlBTkJJR29RdFFFRVFDQURRU0JxRUZvaUJTZ0MyQUVpQkNBRktBTGNBVUVZYkdvaEJRTkFJQVFnQlVZRVFDQUNLQUlnSWdVZ0FpZ0NKRUVDZEdvaEFnTkFJQUlnQlVZRVFDQURRU0JxRUZvaUFpZ0N5QUlpQkNBQ0tBTE1Ba0VZYkdvaEFnTkFJQUlnQkVZTkJpQURJQUVnQkJCbUVLUUROZ0lRSUFBZ0EwRVFhaEFrSUFSQkdHb2hCQXdBQ3dBTElBTWdBMEVnYWhCYUlnUkIyQUpxTmdJUUlBVW9BZ0FoQmlBRFFRQTJBaGdnQXlBR05nSVVJQU1nQkVHY0NXb29BZ0JCQVdzMkFod0NRQ0FEUVJCcUVMUUJSUTBBSUFOQkVHb1FyQUVpQmlnQ1lDSUVJQVlvQW1SQkdHeHFJUVlEUUNBRUlBWkdEUUVnQXlBQklBUVFaaENrQXpZQ0RDQUFJQU5CREdvUUpDQUVRUmhxSVFRTUFBc0FDeUFEUVNCcUVGb2hCQ0FESUFVb0FnQTJBaEFnQkNBRFFSQnFFTVlEUlFSQUlBTWdBU0FGS0FJQUVKY0JOZ0lRSUFBZ0EwRVFhaEFrQ3lBRElBTkJJR29RV2lJRVFhQUphallDRUNBRktBSUFJUVlnQTBFQU5nSVlJQU1nQmpZQ0ZDQURJQVJCNUE5cUtBSUFRUUZyTmdJY0FrQWdBMEVRYWhDMEFVVU5BQ0FEUVJCcUVLd0JJZ1lvQW1BaUJDQUdLQUprUVJoc2FpRUdBMEFnQkNBR1JnMEJJQU1nQVNBRUVHWVFwQU0yQWd3Z0FDQURRUXhxRUNRZ0JFRVlhaUVFREFBTEFBc2dCVUVFYWlFRkRBQUxBQVVnQXlBQklBUVFaaENrQXpZQ0VDQUFJQU5CRUdvUUpDQUVRUmhxSVFRTUFRc0FDd0FMSUFJb0FpQWlCU0FDS0FJa1FRSjBhaUVDQTBBZ0FpQUZSZ1JBSUFOQklHb1F0UUZGRFFJZ0EwRWdhaEJhSWdJb0FzZ0NJZ1FnQWlnQ3pBSkJHR3hxSVFJRFFDQUNJQVJHRFFNZ0F5QUJJQVFRWmhDa0F6WUNFQ0FBSUFOQkVHb1FKQ0FFUVJocUlRUU1BQXNBQlNBRElBRWdCU2dDQUJDWEFUWUNFQ0FBSUFOQkVHb1FKQUpBSUFOQklHb1F0UUZGRFFBZ0F5QURRU0JxRUZvaUJFR2dDV28yQWhBZ0JTZ0NBQ0VHSUFOQkFEWUNHQ0FESUFZMkFoUWdBeUFFUWVRUGFpZ0NBRUVCYXpZQ0hDQURRUkJxRUxRQlJRMEFJQU5CRUdvUXJBRWlCaWdDWUNJRUlBWW9BbVJCR0d4cUlRWURRQ0FFSUFaR0RRRWdBeUFCSUFRUVpoQ2tBellDRENBQUlBTkJER29RSkNBRVFSaHFJUVFNQUFzQUN5QUZRUVJxSVFVTUFRc0FDd0FMSUFOQk1Hb2tBQXRIQVFGL0lBRXRBQVFFUUNBQUVDTWdBQ0FCS0FJQUlnSXBBZ0EzQWlBZ0FDQUNLQUlJTmdJb0lBRW9BZ0FpQUVFQU5nSUlJQUJDQURjQ0FBOExJQUFnQVNnQ0FCQ2dId3VqQVFFRWZ5QUFFQndqQUVFd2F5SURKQUFnQTBFUWFpQUJLQUlBSUFJb0FnQVF2QXNpQkNnQ0NDRUZJQU1nQkRZQ0RDQURJQVUyQWdnQ1FDQUFRUkJxSWdSQkhHb2lCaUFEUVFocUVMMEJJZ0FFUUNBQUtBSU1JUUFNQVFzZ0JDQUVFS1VFSUFFb0FnQWdBaWdDQUJDOEN5SUFFQ2dnQkNBRUtBSVlRUUZxTmdJWUlBTWdBRFlDRENBRElBVTJBZ2dnQmlBRFFRaHFFTHdCQ3lBRFFUQnFKQUFnQUF1bkFRRUVmeUFBRUJ3akFFRXdheUlFSkFBZ0JFRUlhaUFCS0FJQUlBSW9BZ0FnQXlnQ0FCQytDeUlGS0FJSUlRWWdCQ0FGTmdJRUlBUWdCallDQUFKQUlBQkJFR29pQlVFY2FpSUhJQVFRdlFFaUFBUkFJQUFvQWd3aEFBd0JDeUFGSUFVUXBnUWdBU2dDQUNBQ0tBSUFJQU1vQWdBUXZnc2lBQkFvSUFVZ0JTZ0NHRUVCYWpZQ0dDQUVJQUEyQWdRZ0JDQUdOZ0lBSUFjZ0JCQzhBUXNnQkVFd2FpUUFJQUFMZ1FZQkEzOUJxTG9nTFFBQVJRUkFJd0JCRUdzaUFDUUFRY2kzSUJDWENocEI4TGNnUVlDNElEWUNBRUhvdHlCQm1Kb2dOZ0lBUWNpM0lFR1FqZzQyQWdCQitMY2dRWDgyQWdCQi9MY2dRUUE2QUFBZ0FFRUlhaUlCUWNpM0lCQ09CMEhJdHlBZ0FVSEl0eUFvQWdBb0FnZ1JBZ0FnQVJCa0lBQkJFR29rQUVHb3NpQVF4eFFhUWFpeUlFR1VqdzQyQWdCQm9MSWdRWUNQRGpZQ0FFR2tzaUJCQURZQ0FFR29zaUJCeUxjZ0VPOEdRWWk0SUVHQW1TQkJ1TGdnRU1zVVFkQ3pJRUdJdUNBUWpBMUJ3TGdnUWFpYklFSHd1Q0FReXhSQitMUWdRY0M0SUJDTURVR2d0aUJCK0xRZ0tBSUFRUXhyS0FJQVFmaTBJR29RdFFZUWpBMUJvTElnS0FJQVFReHJLQUlBUWFDeUlHb1F5aFJCK0xRZ0tBSUFRUXhyS0FJQVFmaTBJR29ReGhSQitMUWdLQUlBUVF4cktBSUFRZmkwSUdvUXloUWpBRUVRYXlJQUpBQkIrTGdnRU5nVUdrR291U0JCZnpZQ0FFR2d1U0JCc0xrZ05nSUFRWmk1SUVHWW1pQTJBZ0JCK0xnZ1FaaVJEallDQUVHc3VTQkJBRG9BQUNBQVFRaHFJZ0ZCK0xnZ0VJNEhRZmk0SUNBQlFmaTRJQ2dDQUNnQ0NCRUNBQ0FCRUdRZ0FFRVFhaVFBUVlDeklCREZGQnBCZ0xNZ1FaeVNEallDQUVINHNpQkJpSklPTmdJQVFmeXlJRUVBTmdJQVFZQ3pJRUg0dUNBUTd3WkJ1TGtnUVlDWklFSG91U0FReVJSQnBMUWdRYmk1SUJDTERVSHd1U0JCcUpzZ1FhQzZJQkRKRkVITXRTQkI4TGtnRUlzTlFmUzJJRUhNdFNBb0FnQkJER3NvQWdCQnpMVWdhaERHQnhDTERVSDRzaUFvQWdCQkRHc29BZ0JCK0xJZ2FoRElGRUhNdFNBb0FnQkJER3NvQWdCQnpMVWdhaERHRkVITXRTQW9BZ0JCREdzb0FnQkJ6TFVnYWhESUZFR291aUJCQVRvQUFBc2pBRUVRYXlJQUpBQUNRQ0FBUVF4cUlBQkJDR29RREEwQVFiQzZJQ0FBS0FJTVFRSjBRUVJxRU9BQklnRTJBZ0FnQVVVTkFDQUFLQUlJRU9BQklnRUVRRUd3dWlBb0FnQWlBaUFBS0FJTVFRSjBha0VBTmdJQUlBSWdBUkFMUlEwQkMwR3d1aUJCQURZQ0FBc2dBRUVRYWlRQVFheXBJRUVxTmdJQVFmU3BJRUdNdXlBMkFnQUxLUUFnQUNBQklBSWdBeUFFUVltbUJVSGd4Z2hCQUVHaHFRaEJtTzRQUWF6dUQwSDQ3UThRNlJJTE1BRUJmZ0ovUVFBZ0FDa0RFRUtGb0lDQUFvTWlBU0FCUWdGOWcxQU5BQnBCQVNBQUVJSUlEUUFhSUFBUWdBWUxDMkFCQVg4Z0FDZ0NCQ0lDQkVBZ0FpZ0NBQ0FCRUZkQkFVRUJRZFdlQ0VIUXB3TkI4QUFRU3dzZ0FDQUJFTTBESWdGRkJFQkJBQThMSUFBZ0FSQ0RCaUVCSUFBb0FnQW9BZ2dnQVJCWFFRRkJBVUdobXdoQjBLY0RRZlFBRUVzZ0FRc3pBUUYrQW45QkFDQUFLUU1RUXNEQWdJS0FnSUFnZ3lJQklBRkNBWDJEVUEwQUdrRUJJQUFROGdjTkFCb2dBQkN4RUFzTENnQWdBRUhRcFJJUVNBc1RBQ0FBSUFGQi8vLy8vd0ZCQTBFQ0VPMFNDN01CQVFGL0l3QkJRR29pQXlRQUlBRWdBQ2dDRkU4RVFDQUFJQUZCQVdvUW53d0xBa0FDUUNBQUtBSVFJQUZCQW5ScUlnRW9BZ0FpQUVVTkFDQURRUUkyQWh3Z0F5QUNOZ0lVSUFNZ0FEWUNFQ0FESUFOQkVHbzJBaGdnQXlBREtRTVlOd01JSUFNZ0EwRWdhaUFEUVFocUVMVUNJZ0JCQ0dvMkFqZ2dBeUFBSUFBb0FnaEhPZ0E4SUFOQk9Hb1F0d3NoQWlBQUVLb0JJQUlOQUVFQUlRSU1BUXNnQVNBQ05nSUFDeUFEUVVCckpBQWdBZ3MxQVFGL0EwQWdBQ2dDaEVzZ0FVMEVRQ0FBUVFBMkFvUkxCU0FBS0FLQVN5QUJRZVFBYkdvUTZnSWdBVUVCYWlFQkRBRUxDd3NtQUNBQUVKc1JJQUJCNEFBUXFRd2dBRUVBTmdLTVN5QUFJQUFvQXBCTFFRRnFOZ0tRU3d0ckFRRi9JQUJCd0lVUU5nSUFJQUJCMU9NQWFpSUJFTVFKSUFFUXFBd2dBU0FBUWJUMkFHb29BZ0FRTmlBQVFlRFFBR29pQVJERUNTQUJFS2dNSUFFZ0FFSEE0d0JxS0FJQUVEWWdBRUhNQldvaUFSQ2NFU0FCRUpzUklBRWdBRUhNMEFCcUtBSUFFRFlnQUFzU0FDQUFRWmdCUWVuK0EwRjRRUWNReWdFTEVnQWdBRUhjQUVHbC93TkJmRUVERU1vQkN4QUFJQUFnQVVIQXRoSkI0QUFRekF3TERnQWdBRUhsalF4QjBnRVE0QWtMRGdBZ0FFSGxqUXhCMkFFUTRBa0xEZ0FnQUVIdGtBeEJnZ0VRNEFrTERnQWdBRUh0a0F4QmlBRVE0QWtMRHdBZ0FDQUJJQUpCM2ZBR0VPd1NDdzhBSUFBZ0FTQUNRZXorQmhEc0VndDhBUUovSXdCQm9BRnJJZ01rQUNBRFFRaHFFRWtoQkNBRElBRXBBZ0EzQTVnQklBUWdBMEdZQVdvUXRnUWlBVUVJYWtHenZRVVFEaG9nQVNBQ0VMb1JRUWhxSWdGQmsrY0pFQTRhSUFGQjg1b0pFQTRhSUFGQnYva0FFQTRhSUFGQjg1b0pFQTRhSUFBZ0JFRU1haEJDSUFRUVVTQURRYUFCYWlRQUN3c0FJQUJCSkdvUVhpQUFDeElBSUFBdEFBUkJBa2NFUUJCdkFBc2dBQXNYQUNBQUlBRWdBa0dNaEJCQnZJUVFRZkQrRHhEdkVnc1hBQ0FBSUFFZ0FrR3NneEJCM0lNUVFjRCtEeER3RWdzSUFDQUFMUUFNUlF0Y0FRSi9JQUFRL0FNaEF5QUJLQUlBSVFRZ0FpMEFBQ0VDSUFNUXVRWWlBVUdJL3c4MkFnUWdBVUg4Z2hBMkFnQWdBU0FDT2dBTUlBRWdCRFlDQ0NBQlFjeUNFRFlDQUNBQUlBRVFLQ0FBSUFBb0FoaEJBV28yQWhnZ0FRdmdBZ0VDZnlNQVFjQUJheUlHSkFBZ0JpQUNOZ0t3QVNBR0lBRTJBcmdCSUFBZ0JpZ0N1QUVnQmlnQ3NBRWdBeERsQkNJQVFianREellDQkNBQVFlenREellDQUNBQVFkanREellDQUNBQVFTUnFJQVFRNlFZZ0FDQUZOZ0pBSUFWRkJFQWdCa0dQbGdWQkgwRUFJQVpCb0FGcUVCMGlBUkFYSWdKQkdHcEIrcGtJRUE0YUlBSVFHQ0FCRUI0TElBQW9BamhGQkVBZ0JrR1BsZ1ZCSUVFQUlBWkJvQUZxRUIwaUFSQVhJZ0pCR0dwQjQrTUlFQTRhSUFJUUdDQUJFQjRMSUFBb0FrQVFWeUFBS0FJSVFRRkJBRUhpd0FoQmo1WUZRU0VRU3lBQUtBSTBJZ1VnQUNnQ09FRUNkR29oQVNBR1FSaHFJUUlEUUNBQklBVkhCRUFnQlNnQ0FDSURSUVJBSUFaQmo1WUZRU05CQUNBR1FhQUJhaEFkSWdRUUZ5RUhJQUpCdjYwSUVBNGFJQWNRR0NBRUVCNExJQU1RVnlBQUtBSUlRUUZCQUVIWnhRaEJqNVlGUVNRUVN5QUZRUVJxSVFVTUFRc0xJQVpCd0FGcUpBQWdBQXM3QVFKL1FRZ2hBaUFBSVFNZ0FVRUlUd1JBUVg4Z0FVRURkQ0FCUWYvLy8vOEJTeHNRRlNFRElBRWhBZ3NnQUNBRE5nSkFJQUFnQWpZQ1NBdm5BUUVEZnlNQVFlQUFheUlDSkFCQkRDQUJRWllCYkVIa0FHNGlBU0FCUVF4Tkd5SURJQUFvQXZRQlN3UkFJQUpDZ0lDQWdJQUJOd0pVSUFJZ0FrRVFhaUlCTmdKUUlBRWdBQ2dDL0FFUXNRUWdBQ2dDOEFFaUFTQUFLQUwwQVVFVWJHb2hCQU5BQWtBZ0FTQUVSZ1JBSUFBUXNnVWdBQ0FERVBNRUlBSW9BbEFpQVNBQ0tBSlVRUU4wYWlFRERBRUxJQUV0QUFnRVFDQUNRUkJxSUFFUXVnSVFzUVVMSUFGQkZHb2hBUXdCQ3dzRFFDQUJJQU5HUlFSQUlBSkJDR29nQUNBQklBRkJCR29RMlJVZ0FVRUlhaUVCREFFTEN5QUNRUkJxRUpVQkN5QUNRZUFBYWlRQUN4b0JBWDBnQVNvQ0RDRUNJQUJCQWpvQUNDQUFJQUs3T1FNQUMxc0NBWDhCZlNNQVFSQnJJZ0VrQUNBQklBQXFBZ3c0QWd3Z0FFRUlhaEQ1QWtHU3NhajZCMnBCazZRR2N5SUFRUUoyUVpiNHFmb0hjeUFCS2dJTUlnSzhRUUFnQWtNQUFBQUFYQnRxSUFCeklRQWdBVUVRYWlRQUlBQUxGd0FnQUNBQklBSkJ5SUVRUWZpQkVFSFkvZzhRN3hJTExBQWdBUkQ1QWlBQVFRSjJRWmI0cWZvSGMyb2dBSE1pQUVFQ2RrR1crS242QjNNZ0FpZ0NBR29nQUhNTEx3RUJmeU1BUVJCcklnRWtBQ0FCSUFBb0FndzJBZ3dnQUVFSWFpQUJRUXhxRUxBTUlRQWdBVUVRYWlRQUlBQUxGd0FnQUNBQklBSkI2SUFRUVppQkVFR28vZzhROEJJTEhBRUJmQ0FBS3dNUUlnRkVBQUFBQUFBQUFBQmhJQUc5UWdCWmNRc2xBQ0FBRUpjS0lnQkI0SVFPTmdJQUlBQkJJR29RVlNBQUlBRTJBakFnQUVFQU5nSXNDNnNCQWdKL0FYd2dBQkMwQkNFRElBRW9BZ0FoQkNBQ0t3TUFJUVVqQUVHd0FXc2lBaVFBSUFNUXVRWWlBVUdRL2c4MkFnUWdBVUc0Z0JBMkFnQWdBU0FGT1FNUUlBRWdCRFlDQ0NBQlFZaUFFRFlDQUNBRm1VUUFBQUFBQUFEd2YyTkZCRUFnQWtHTXJ3TkJKa0VDSUFKQm9BRnFFQjBpQXhBWElnUkJHR3BCaHQ0SUVBNGFJQVFRR0NBREVCNExJQUpCc0FGcUpBQWdBQ0FCRUNnZ0FDQUFLQUlZUVFGcU5nSVlJQUVMS1FFQmZ5TUFRUkJySWdJa0FDQUNJQUU1QXdnZ0FDQUNRUWhxRU5JSklRQWdBa0VRYWlRQUlBQUxGUUFnQUNBQlFkanNEMEhzN0E5QnVPd1BFTTRNQ3dnQUlBQXBBeEJRQzE0Q0FYOEJmaUFBRUxRRUlRTWdBU2dDQUNFQklBSXBBd0FoQkNBREVMa0dJZ0pCK1AwUE5nSUVJQUpCMlA4UE5nSUFJQUlnQkRjREVDQUNJQUUyQWdnZ0FrR28vdzgyQWdBZ0FDQUNFQ2dnQUNBQUtBSVlRUUZxTmdJWUlBSUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRUw4UkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1F2aEVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXVCQWdJRGZ3SjlJd0JCTUdzaUF5UUFJQUVvQWdBaEJDQURBbjhnQWhBMElnY1FSaUlHUS8vL2YzOWVCRUFnQTBFQU5nSW9RUUlNQVFzZ0JrUC8vMy8vWFFSQUlBTkJBVFlDS0VFQ0RBRUxJQU1nQmpnQ0tFRUJDem9BTEFKQUlBTkJLR29RTUFSQUlBTkJBellDRkNBRFFkM3dCallDRUNBRElBTXBBeEEzQXdnZ0EwRVlhaUlGSUFjZ0EwRUlhaEQrQXlBRUlBVWdBU2dDQkJCZElBVVFEeG9nQkMwQUJBUkFJQVFnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBd0NDeUFBUVFJNkFBUU1BUXNnQUNBRUlBRW9BZ1FnQWlBQ0tBSUFLQUlJRVFBQUlBTkJLR29RR2lvQ0FCQnJDeUFEUVRCcUpBQUxFZ0FnQUMwQUJFRUJSd1JBRUc4QUN5QUFDMjRCQTM4akFFRVFheUlGSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlFTmdJTUlBVWdCRFlDQ0NBQVFZd0JhaUlFRU1VQ0lnWWdBQ2dDQ0NBRktBSUlJQUVnQWlnQ0FDQURLQUlBRU0wUkdpQUVJQVlRS0NBRUlBUW9BaGhCQVdvMkFoZ2dCaUVBSUFWQkVHb2tBQ0FBQ3lrQkFYOGpBRUVRYXlJQ0pBQWdBaUFCT0FJSUlBQWdBa0VJYWhDRkNDRUFJQUpCRUdva0FDQUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJEV0NRd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFTU1SSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVNVVJEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29ReEJFZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF2TUF3UUJmQVYvQVgwQ2ZpTUFRUkJySWdRa0FDQUJLQUlFSVFZZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ1ZGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FGS0FJRUlnVkI4SjhTUmdSQUlBSVFQQ0VESUFSQkNHb2dBU0FHSVFnZ0FpQUNLQUlBS0FJSUVRQUFJUWNnQTcwaUNrTC8vLy8vLy8vLy8vOEFneUlMdnlFREFrQWdDMElnaUtjaUFVSHJwNGIvQTA4RVFDQUJRWUdBMElFRVR3UkFSQUFBQUFBQUFBQ0FJQU9qUkFBQUFBQUFBUEEvb0NFRERBSUxSQUFBQUFBQUFQQS9SQUFBQUFBQUFBQkFJQU1nQTZBUW53aEVBQUFBQUFBQUFFQ2dvNkVoQXd3QkN5QUJRYSt4d2Y0RFR3UkFJQU1nQTZBUW53Z2lBeUFEUkFBQUFBQUFBQUJBb0tNaEF3d0JDeUFCUVlDQXdBQkpEUUFnQTBRQUFBQUFBQUFBd0tJUW53Z2lBNW9nQTBRQUFBQUFBQUFBUUtDaklRTUxJQWdnQnlBRG1pQURJQXBDQUZNYkVITU1BUXNnQlVHd3FSSkdCRUFnQWhBMElRa2dCRUVJYWlBQklBWWdBaUFDS0FJQUtBSUlFUUFBSUFrUS9oUVFhd3dCQ3lBRlFkQ29Fa2NOQVNBQ0VEOGhDU0FFUVFocUlBRWdCaUFDSUFJb0FnQW9BZ2dSQUFBZ0NSRCtGQkJHRUhJTElBQWdCQ2tEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQVJCRUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FReHhFTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoREdFU0FJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDL0lDQXdGOEJYOEJmU01BUVJCcklnUWtBQ0FCS0FJRUlRVWdBU2dDQUNFR0FrQWdBaUFDS0FJQUtBSUlFUUFBSWdGRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBQktBSUVJZ0ZCOEo4U1JnUkFJQUlRUENFRElBUkJDR29nQmlBRklRZ2dBaUFDS0FJQUtBSUlFUUFBSVFjakFFRVFheUlDSkFBQ1FDQUR2VUlnaUtkQi8vLy8vd2R4SWdGQis4T2svd05OQkVBZ0FVR0FnSUR5QTBrTkFTQURSQUFBQUFBQUFBQUFRUUFRZ0JVaEF3d0JDeUFCUVlDQXdQOEhUd1JBSUFNZ0E2RWhBd3dCQ3lBRElBSVFyZzBoQVNBQ0t3TUFJQUlyQXdnZ0FVRUJjUkNBRlNFREN5QUNRUkJxSkFBZ0NDQUhJQU1RY3d3QkN5QUJRYkNwRWtZRVFDQUNFRFFoQ1NBRVFRaHFJQVlnQlNBQ0lBSW9BZ0FvQWdnUkFBQWdDUkQvRkJCckRBRUxJQUZCMEtnU1J3MEJJQUlRUHlFSklBUkJDR29nQmlBRklBSWdBaWdDQUNnQ0NCRUFBQ0FKRVA4VUVFWVFjZ3NnQUNBRUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JFRVFhaVFBQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCREpFUXdCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRU1nUklBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTDdnRUJBMzhqQUVFd2F5SURKQUFnQVNnQ0FDRUVJQUVvQWdRaEFTQUNJQUlvQWdBb0FnZ1JBQUFoQlNBRElBUTJBZ2dnQXlBQktRSUlOd0lVSUFNZ0FTZ0NFRFlDSENBRElBRXBBZ0EzQWd3Z0F5QUZOZ0lnQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ0ZGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FCS0FJRUlnRkI4SjhTUmdSQUlBTkJLR29nQTBFSWFpQUNFRHdRK1JRTUFRc2dBVUd3cVJKR0JFQWdBMEVvYWlBRFFRaHFJQUlRTkJEekZBd0JDeUFCUWRDb0VrY05BU0FEUVNocUlBTkJDR29nQWhBL0VPOFVDeUFBSUFNcEF5ZzNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBRFFUQnFKQUFMMVFJQkJYOGpBRUhRQUdzaUJ5UUFJQWRCQURZQ1RBSkFJQVVvQWdBaUNDQUlLQUlBS0FJSUVRQUFJZ2dnQjBITUFHb1FJaUFJUmdSQUlBQWdBeUFGS0FJQUlBWW9BZ0FReXhFTUFRc2dCMEtBZ0lDQWdBRTNBa1FnQnlBSFFTQnFJZ2cyQWtBZ0NDQUhLQUpNRURrZ0IwRkFheUVLUVFBaENBSkFBa0FEUUNBSUlBY29Ba3hQRFFFZ0FrRUFFQ0loQ3lBSElBVW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaFFnQnlBR0tBSUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSVFJQWRCR0dvaUNTQUJJQXNnQXlBRUlBaHFJQWRCRkdvZ0IwRVFhaERLRVNBSkVDc0VRQ0FIUVNCcUlBZEJHR29RR2hBa0lBaEJBV29oQ0F3QkN3c2dCMEVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCeUFLTmdJSUlBY2dCeWdDUUNBSFFTQnFSem9BRENBQklBSWdCMEVJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0IwRWdhaEFqQ3lBSFFkQUFhaVFBQzZvQ0F3Ti9BbjBDZkNNQVFSQnJJZ1FrQUNBQktBSUVJUVlnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnVkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUZLQUlFSWdWQjhKOFNSZ1JBSUFJUVBDRUpJQU1RUENFS0lBUkJDR29nQVNBR0lBSWdBaWdDQUNnQ0NCRUFBRVFBQUFBQUFBQUFBRVFBQUFBQUFBRHdQeUFKSUFwa0d4QnpEQUVMSUFWQnNLa1NSZ1JBSUFJUU5DRUhJQU1RTkNFSUlBUkJDR29nQVNBR0lBSWdBaWdDQUNnQ0NCRUFBRU1BQUFBQVF3QUFnRDhnQnlBSVhoc1Fhd3dCQ3lBRlFkQ29Fa2NOQVNBQ0VEOGhCME1BQUFBQVF3QUFnRDhnQXhBL0lBZGRHeEJHSVFjZ0JFRUlhaUFCSUFZZ0FpQUNLQUlBS0FJSUVRQUFJQWNRY2dzZ0FDQUVLUU1JTndJQURBRUxJQUJCQURvQUJBc2dCRUVRYWlRQUMvVUNBUVYvSXdCQjBBQnJJZ2drQUNBSVFRQTJBa3dDUUNBRktBSUFJZ2tnQ1NnQ0FDZ0NDQkVBQUNJSklBaEJ6QUJxRUNJZ0NVWUVRQ0FBSUFNZ0JTZ0NBQ0FHS0FJQUlBY29BZ0FRemhFTUFRc2dDRUtBZ0lDQWdBRTNBa1FnQ0NBSVFTQnFJZ2syQWtBZ0NTQUlLQUpNRURrZ0NFRkFheUVMUVFBaENRSkFBa0FEUUNBSklBZ29Ba3hQRFFFZ0FrRUFFQ0loRENBSUlBVW9BZ0FpQ2lBSklBb29BZ0FvQWd3UkFRQTJBaFFnQ0NBR0tBSUFJZ29nQ1NBS0tBSUFLQUlNRVFFQU5nSVFJQWdnQnlnQ0FDSUtJQWtnQ2lnQ0FDZ0NEQkVCQURZQ0RDQUlRUmhxSWdvZ0FTQU1JQU1nQkNBSmFpQUlRUlJxSUFoQkVHb2dDRUVNYWhETUVTQUtFQ3NFUUNBSVFTQnFJQWhCR0dvUUdoQWtJQWxCQVdvaENRd0JDd3NnQ0VFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQ0NBTE5nSUFJQWdnQ0NnQ1FDQUlRU0JxUnpvQUJDQUJJQUlnQ0JBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0NFRWdhaEFqQ3lBSVFkQUFhaVFBQzRVQ0FRRi9Jd0JCd0FGcklnWWtBQ0FHSUFJMkFyQUJJQVlnQVRZQ3VBRWdBQ0FHS0FLNEFTQUdLQUt3QVNBREVPVUVJZ0JCK09zUE5nSUVJQUJCck93UE5nSUFJQUFnQlRZQ0tDQUFJQVEyQWlRZ0FFR1k3QTgyQWdBZ0JBUi9JQVFGSUFaQnRvNEZRUjFCQUNBR1FhQUJhaEFkSWdFUUZ5SUNRUmhxUWJ1Z0NCQU9HaUFDRUJnZ0FSQWVJQUFvQWlRTEVGY2dBQ2dDQ0VFQlFRQkJvTVFJUWJhT0JVRWVFRXNnQUNnQ0tDSUJCSDhnQVFVZ0JrRzJqZ1ZCSDBFQUlBWkJvQUZxRUIwaUFSQVhJZ0pCR0dwQnBhQUlFQTRhSUFJUUdDQUJFQjRnQUNnQ0tBc1FWeUFBS0FJSVFRRkJBRUhqd3doQnRvNEZRU0FRU3lBR1FjQUJhaVFBSUFBTDNnc0RBMzhEZlFOOEl3QkJrQUZySWdVa0FDQUJLQUlFSVFZZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ2RGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FIS0FJRUlnZEI4SjhTUmdSQUlBSVFQQ0VMSUFNUVBDRU1JQVFRUENFTklBVWdCallDakFFZ0JTQUJOZ0tJQVNBRlFmZ0FhaUlESUFFZ0JpQU5JQXNRZ1FRZ0JVSG9BR29nQVNBR0lBd2dDeENCQkFKQUlBTVFZa1VFUUNBRlFlZ0FhaEJpUlEwQkN5QUZRWWdCYWhDSEF5QUZRUUk2QUFRTUFnc2dCVUhZQUdvaUF5QUJJQVlnQlVINEFHb1FTaXNEQUNBRlFlZ0FhaEJLS3dNQUVPc01JQU1RWWdSQUlBVkJpQUZxRUljRElBVkJBam9BQkF3Q0N5QUZRZGdBYWhCS0t3TUFJUXNnQlVFQk9nQlFJQVVnQzBRQUFBQUFBQUFBQUtWRUFBQUFBQUFBOEQra09RTklJQVZCT0dvaUF5QUJJQVlnQlVISUFHb1FTaXNEQUNJTElBc1Eyd0VnQlVFb2FpQUJJQVpFQUFBQUFBQUFBRUFnQ3hEYkFRSkFJQU1RWWtVRVFDQUZRU2hxRUdKRkRRRUxJQVZCaUFGcUVJY0RJQVZCQWpvQUJBd0NDeUFGUVJocUlnTWdBU0FHUkFBQUFBQUFBQWhBSUFWQktHb1FTaXNEQUJDQkJDQURFR0lFUUNBRlFZZ0JhaENIQXlBRlFRSTZBQVFNQWdzZ0JVRUlhaUlESUFFZ0JpQUZRVGhxRUVvckF3QWdCVUVZYWhCS0t3TUFFTnNCSUFNUVlnUkFJQVZCaUFGcUVJY0RJQVZCQWpvQUJBd0NDeUFGSUFFZ0JpQUNJQUlvQWdBb0FnZ1JBQUFnQlVFSWFoQktLd01BRUhNTUFRc2dCMEd3cVJKR0JFQWdBaEEwSVFnZ0F4QTBJUWtnQkJBMElRb2dCU0FHTmdKOElBVWdBVFlDZUNBRlFlZ0FhaUlESUFFZ0JpQUtJQWdRZ0FRZ0JVSFlBR29nQVNBR0lBa2dDQkNBQkFKQUlBTVFNRVVFUUNBRlFkZ0FhaEF3UlEwQkN5QUZRZmdBYWhDSEF5QUZRUUk2QUFRTUFnc2dCVUhJQUdvaUF5QUJJQVlnQlVIb0FHb1FHaW9DQUNBRlFkZ0FhaEFhS2dJQUVPb01JQU1RTUFSQUlBVkIrQUJxRUljRElBVkJBam9BQkF3Q0N5QUZRY2dBYWhBYUtnSUFJUWdnQlVFQk9nQThJQVVnQ0VNQUFBQUFsME1BQUlBL2xqZ0NPQ0FGUVNocUlnTWdBU0FHSUFWQk9Hb1FHaW9DQUNJSUlBZ1EyZ0VnQlVFWWFpQUJJQVpEQUFBQVFDQUlFTm9CQWtBZ0F4QXdSUVJBSUFWQkdHb1FNRVVOQVFzZ0JVSDRBR29RaHdNZ0JVRUNPZ0FFREFJTElBVkJDR29pQXlBQklBWkRBQUJBUUNBRlFSaHFFQm9xQWdBUWdBUWdBeEF3QkVBZ0JVSDRBR29RaHdNZ0JVRUNPZ0FFREFJTElBVkJpQUZxSWdNZ0FTQUdJQVZCS0dvUUdpb0NBQ0FGUVFocUVCb3FBZ0FRMmdFZ0F4QXdCRUFnQlVINEFHb1Fod01nQlVFQ09nQUVEQUlMSUFVZ0FTQUdJQUlnQWlnQ0FDZ0NDQkVBQUNBRlFZZ0JhaEFhS2dJQUVHc01BUXNnQjBIUXFCSkhEUUVnQWhBL0lRZ2dBeEEvSVFrZ0JCQS9JUW9nQlNBR05nSjhJQVVnQVRZQ2VDQUZRZWdBYWlJRElBRWdCaUFLSUFnUS93TWdCVUhZQUdvZ0FTQUdJQWtnQ0JEL0F3SkFJQU1RTUVVRVFDQUZRZGdBYWhBd1JRMEJDeUFGUWZnQWFoQ0hBeUFGUVFJNkFBUU1BUXNnQlVISUFHb2lBeUFCSUFZZ0JVSG9BR29RR2lvQ0FDQUZRZGdBYWhBYUtnSUFFT3dKSUFNUU1BUkFJQVZCK0FCcUVJY0RJQVZCQWpvQUJBd0JDeUFGUWNnQWFoQWFLZ0lBSVFoREFBQUFBQkJHSVFsREFBQ0FQeEJHSVFvZ0JVRUJPZ0E4SUFVZ0NpQUpJQWdnQ0NBSlhSc2lDQ0FJSUFwZUd6Z0NPQ0FGUVNocUlnTWdBU0FHSUFWQk9Hb1FHaW9DQUNJSUlBZ1EyUUVnQlVFWWFpQUJJQVpEQUFBQVFCQkdJQWdRMlFFQ1FDQURFREJGQkVBZ0JVRVlhaEF3UlEwQkN5QUZRZmdBYWhDSEF5QUZRUUk2QUFRTUFRc2dCVUVJYWlJRElBRWdCa01BQUVCQUVFWWdCVUVZYWhBYUtnSUFFUDhESUFNUU1BUkFJQVZCK0FCcUVJY0RJQVZCQWpvQUJBd0JDeUFGUVlnQmFpSURJQUVnQmlBRlFTaHFFQm9xQWdBZ0JVRUlhaEFhS2dJQUVOa0JJQU1RTUFSQUlBVkIrQUJxRUljRElBVkJBam9BQkF3QkN5QUZJQUVnQmlBQ0lBSW9BZ0FvQWdnUkFBQWdCVUdJQVdvUUdpb0NBQkJ5Q3lBQUlBVXBBd0EzQWdBTUFRc2dBRUVBT2dBRUN5QUZRWkFCYWlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkRRRVF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVNOFJJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUxoZ01FQTN3RGZ3RjlBWDRqQUVFUWF5SUdKQUFnQVNnQ0JDRUlJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJSFJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0J5Z0NCQ0lIUWZDZkVrWUVRQ0FDRUR3aEJDQUdRUWhxSUFFZ0NDQUNJQUlvQWdBb0FnZ1JBQUFDZkVRQUFBQUFBQURnUHlBRXBpRUZJQVM5UXYvLy8vLy8vLy8vL3dDRElncS9JUU1DUUNBS1FpQ0lweUlCUWNIY21JUUVUUVJBSUFNUW53Z2hBeUFCUWYvL3YvOERUUVJBSUFGQmdJREE4Z05KRFFJZ0JTQURJQU9nSUFNZ0E2SWdBMFFBQUFBQUFBRHdQNkNqb2FJTUF3c2dCU0FESUFNZ0EwUUFBQUFBQUFEd1A2Q2pvS0lNQWdzZ0F5QUZJQVdnRUpJVklRUUxJQVFMRUhNTUFRc2dCMEd3cVJKR0JFQWdBaEEwSVFrZ0JrRUlhaUFCSUFnZ0FpQUNLQUlBS0FJSUVRQUFJQWtRaGhVUWF3d0JDeUFIUWRDb0VrY05BU0FDRUQ4aENTQUdRUWhxSUFFZ0NDQUNJQUlvQWdBb0FnZ1JBQUFnQ1JDR0ZSQkdFSElMSUFBZ0Jpa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBWkJFR29rQUF1eUFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQVEwaEVNQVFzZ0JrS0FnSUNBZ0FFM0FrUWdCaUFHUVNCcUlnYzJBa0FnQnlBR0tBSk1FRGtnQmtGQWF5RUpRUUFoQndKQUFrQURRQ0FISUFZb0FreFBEUUVnQWtFQUVDSWhDaUFHSUFVb0FnQWlDQ0FISUFnb0FnQW9BZ3dSQVFBMkFoUWdCa0VZYWlJSUlBRWdDaUFESUFRZ0Iyb2dCa0VVYWhEUkVTQUlFQ3NFUUNBR1FTQnFJQVpCR0dvUUdoQWtJQWRCQVdvaEJ3d0JDd3NnQmtFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQmlBSk5nSUlJQVlnQmlnQ1FDQUdRU0JxUnpvQURDQUJJQUlnQmtFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCa0VnYWhBakN5QUdRZEFBYWlRQUM3a0RBd0Y4Qlg4QmZTTUFRUkJySWdRa0FDQUJLQUlFSVFVZ0FTZ0NBQ0VHQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ0ZGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FCS0FJRUlnRkI4SjhTUmdSQUlBSVFQQ0VESUFSQkNHb2dCaUFGSVFnZ0FpQUNLQUlBS0FJSUVRQUFJUWNqQUVFUWF5SUNKQUFDUUNBRHZVSWdpS2RCLy8vLy93ZHhJZ0ZCKzhPay93Tk5CRUFnQVVHQWdNRHlBMGtOQVNBRFJBQUFBQUFBQUFBQVFRQVFvQWdoQXd3QkN5QUJRWUNBd1A4SFR3UkFJQU1nQTZFaEF3d0JDd0pBQWtBQ1FBSkFJQU1nQWhDdURVRURjUTREQUFFQ0F3c2dBaXNEQUNBQ0t3TUlRUUVRb0FnaEF3d0RDeUFDS3dNQUlBSXJBd2dRb1FnaEF3d0NDeUFDS3dNQUlBSXJBd2hCQVJDZ0NKb2hBd3dCQ3lBQ0t3TUFJQUlyQXdnUW9RaWFJUU1MSUFKQkVHb2tBQ0FJSUFjZ0F4QnpEQUVMSUFGQnNLa1NSZ1JBSUFJUU5DRUpJQVJCQ0dvZ0JpQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBSkVJY1ZFR3NNQVFzZ0FVSFFxQkpIRFFFZ0FoQS9JUWtnQkVFSWFpQUdJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBa1FoeFVRUmhCeUN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRU5RUkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1EweEVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXZrQXdRRGZ3TjlBWHdCZmlNQVFSQnJJZ1FrQUNBQktBSUVJUVVnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnTkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQURLQUlFSWdOQjBLQVNSZ1JBSUFJUVl5RUtJQVJCQ0dvZ0FTQUNJQUlvQWdBb0FnZ1JBQUJDZnlBS1FnQlNyU0FLUWdCVEd4RDlBUXdCQ3lBRFFmQ2ZFa1lFUUFKOFJBQUFBQUFBQVBDL0lBSVFQQ0lKUkFBQUFBQUFBQUFBWXcwQUdrUUFBQUFBQUFEd1B5QUpSQUFBQUFBQUFBQUFaQTBBR2tRQUFBQUFBQUFBQUFzaENTQUVRUWhxSUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQ1JCekRBRUxJQU5Cc0trU1JnUkFBbjFEQUFDQXZ5QUNFRFFpQjBNQUFBQUFYUTBBR2tNQUFJQS9JQWREQUFBQUFGNE5BQnBEQUFBQUFBc2hCaUFFUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0JoQnJEQUVMSUFOQmtLb1NSZ1JBSUFJUVlTRURJQVJCQ0dvZ0FTQUNJQUlvQWdBb0FnZ1JBQUJCZnlBRFFRQkhJQU5CQUVnYkVMRUJEQUVMSUFOQjBLZ1NSdzBCUXdBQWdMOGhCd0pBSUFJUVB5SUlRd0FBQUFBUVJpSUdYVVVFUUVNQUFJQS9JUWNnQmlBSVhVVU5BUXNnQnhCR0lRWUxJQVJCQ0dvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBR0VISUxJQUFnQkNrRENEY0NBQXdCQ3lBQVFRQTZBQVFMSUFSQkVHb2tBQXZYQWdFRmZ5TUFRZEFBYXlJSEpBQWdCMEVBTmdKTUFrQWdCU2dDQUNJSUlBZ29BZ0FvQWdnUkFBQWlDQ0FIUWN3QWFoQWlJQWhHQkVBZ0FDQURJQVVvQWdBZ0JpZ0NBQ0FFRU5ZUkRBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RMVJFZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUF1ZUJRUUZmd0o5QW40Q2ZDTUFRUkJySWdZa0FDQUJLQUlNSVFnZ0FTZ0NDQ0VKSUFFb0FnQWhCU0FCS0FJRUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUIwVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBY29BZ1FpQjBIUW9CSkdCRUFnQWhCaklRd2dBeEJqSVEwZ0JTZ0NBQ2dDQUNnQ0NDSUNJQVFnQWlnQ0FDZ0NEQkVCQUJENkFTRUNJQVpCQ0dvZ0FTQUlLQUlBRUZ3Z0RTQU1JQUliRVAwQkRBRUxJQWRCOEo4U1JnUkFJQUlRUENFT0lBTVFQQ0VQSUFVb0FnQW9BZ0FvQWdnaUFpQUVJQUlvQWdBb0Fnd1JBUUFRK2dFaEFpQUdRUWhxSUFFZ0NTQUlLQUlBRUZ3Z0R5QU9JQUliRUhNTUFRc2dCMEd3cVJKR0JFQWdBaEEwSVFvZ0F4QTBJUXNnQlNnQ0FDZ0NBQ2dDQ0NJQ0lBUWdBaWdDQUNnQ0RCRUJBQkQ2QVNFQ0lBWkJDR29nQVNBSklBZ29BZ0FRWENBTElBb2dBaHNRYXd3QkN5QUhRWkNxRWtZRVFDQUNFR0VoQWlBREVHRWhBeUFGS0FJQUtBSUFLQUlJSWdVZ0JDQUZLQUlBS0FJTUVRRUFFUG9CSVFRZ0JrRUlhaUFCSUFnb0FnQVFYQ0FESUFJZ0JCc1FzUUVNQVFzZ0IwR2dzeEpHQkVBZ0FoQlpJUUlnQXhCWklRTWdCU2dDQUNnQ0FDZ0NDQ0lGSUFRZ0JTZ0NBQ2dDREJFQkFCRDZBU0VFSUFaQkNHb2dBU0FJS0FJQUVGd2dBeUFDSUFRYkVLMEJEQUVMSUFkQjBLZ1NSZ1JBSUFJUVB5RUtJQU1RUHlFTElBVW9BZ0FvQWdBb0FnZ2lBaUFFSUFJb0FnQW9BZ3dSQVFBUStnRWhBaUFHUVFocUlBRWdDU0FJS0FJQUVGd2dDeUFLSUFJYkVISU1BUXNnQjBIUXBSSkhEUUVnQWhENkFTRUNJQU1RK2dFaEF5QUZLQUlBS0FJQUtBSUlJZ1VnQkNBRktBSUFLQUlNRVFFQUVQb0JJUVFnQmtFSWFpQUJJQWdvQWdBUVhDQURJQUlnQkJzUWlBRUxJQUFnQmlrRENEY0NBQXdCQ3lBQVFRQTZBQVFMSUFaQkVHb2tBQXZWQWdFRmZ5TUFRZEFBYXlJSEpBQWdCMEVBTmdKTUFrQWdCU2dDQUNJSUlBZ29BZ0FvQWdnUkFBQWlDQ0FIUWN3QWFoQWlJQWhHQkVBZ0FDQURJQVVvQWdBZ0JpZ0NBQkRZRVF3QkN5QUhRb0NBZ0lDQUFUY0NSQ0FISUFkQklHb2lDRFlDUUNBSUlBY29Ba3dRT1NBSFFVQnJJUXBCQUNFSUFrQUNRQU5BSUFnZ0J5Z0NURThOQVNBQ1FRQVFJaUVMSUFjZ0JTZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNGQ0FISUFZb0FnQWlDU0FJSUFrb0FnQW9BZ3dSQVFBMkFoQWdCMEVZYWlJSklBRWdDeUFESUFRZ0NHb2dCMEVVYWlBSFFSQnFFTmNSSUFrUUt3UkFJQWRCSUdvZ0IwRVlhaEFhRUNRZ0NFRUJhaUVJREFFTEN5QUhRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUhJQW8yQWdnZ0J5QUhLQUpBSUFkQklHcEhPZ0FNSUFFZ0FpQUhRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBSFFTQnFFQ01MSUFkQjBBQnFKQUFMMmdNRUJYOENmUUorQW53akFFRVFheUlFSkFBZ0FTZ0NEQ0VHSUFFb0FnZ2hCeUFCS0FJRUlRZ2dBU2dDQUNFQkFrQWdBaUFDS0FJQUtBSUlFUUFBSWdWRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBRktBSUVJZ1ZCMEtBU1JnUkFJQUlRWXlFTElBTVFZeUVNSUFSQkNHb2dBU0FIS0FJQUVGd2dEQ0FMSUFZdEFBQWJFUDBCREFFTElBVkI4SjhTUmdSQUlBSVFQQ0VOSUFNUVBDRU9JQVJCQ0dvZ0FTQUlJQWNvQWdBUVhDQU9JQTBnQmkwQUFCc1Fjd3dCQ3lBRlFiQ3BFa1lFUUNBQ0VEUWhDU0FERURRaENpQUVRUWhxSUFFZ0NDQUhLQUlBRUZ3Z0NpQUpJQVl0QUFBYkVHc01BUXNnQlVHUXFoSkdCRUFnQWhCaElRSWdBeEJoSVFNZ0JFRUlhaUFCSUFjb0FnQVFYQ0FESUFJZ0JpMEFBQnNRc1FFTUFRc2dCVUdnc3hKR0JFQWdBaEJaSVFJZ0F4QlpJUU1nQkVFSWFpQUJJQWNvQWdBUVhDQURJQUlnQmkwQUFCc1FyUUVNQVFzZ0JVSFFxQkpHQkVBZ0FoQS9JUWtnQXhBL0lRb2dCRUVJYWlBQklBZ2dCeWdDQUJCY0lBb2dDU0FHTFFBQUd4QnlEQUVMSUFWQjBLVVNSdzBCSUFJUStnRWhBaUFERVBvQklRTWdCRUVJYWlBQklBY29BZ0FRWENBRElBSWdCaTBBQUJzUWlBRUxJQUFnQkNrRENEY0NBQXdCQ3lBQVFRQTZBQVFMSUFSQkVHb2tBQXV5QWdFRmZ5TUFRZEFBYXlJR0pBQWdCa0VBTmdKTUFrQWdCU2dDQUNJSElBY29BZ0FvQWdnUkFBQWlCeUFHUWN3QWFoQWlJQWRHQkVBZ0FDQURJQVVvQWdBUTJoRU1BUXNnQmtLQWdJQ0FnQUUzQWtRZ0JpQUdRU0JxSWdjMkFrQWdCeUFHS0FKTUVEa2dCa0ZBYXlFSlFRQWhCd0pBQWtBRFFDQUhJQVlvQWt4UERRRWdBa0VBRUNJaENpQUdJQVVvQWdBaUNDQUhJQWdvQWdBb0Fnd1JBUUEyQWhRZ0JrRVlhaUlJSUFFZ0NpQURJQVFnQjJvZ0JrRVVhaERaRVNBSUVDc0VRQ0FHUVNCcUlBWkJHR29RR2hBa0lBZEJBV29oQnd3QkN3c2dCa0VZYWhBOUdpQUFRUUk2QUFRTUFRc2dCaUFKTmdJSUlBWWdCaWdDUUNBR1FTQnFSem9BRENBQklBSWdCa0VJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JrRWdhaEFqQ3lBR1FkQUFhaVFBQzZvQ0F3TjlBMzhCZkNNQVFSQnJJZ1lrQUNBQktBSUVJUWdnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnZEZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUhLQUlFSWdkQjhKOFNSZ1JBSUFJUVBDRUpJQVpCQ0dvZ0FTQUlJQUlnQWlnQ0FDZ0NDQkVBQUNBSlJBQUFBQUFBQUFBQXBVUUFBQUFBQUFEd1A2UVFjd3dCQ3lBSFFiQ3BFa1lFUUNBQ0VEUWhBeUFHUVFocUlBRWdDQ0FDSUFJb0FnQW9BZ2dSQUFBZ0EwTUFBQUFBbDBNQUFJQS9saEJyREFFTElBZEIwS2dTUncwQklBSVFQeUVESUFJZ0FpZ0NBQ2dDQ0JFQUFDRUNRd0FBQUFBUVJpRUVJQVpCQ0dvZ0FTQUlJQUpEQUFDQVB4QkdJZ1VnQkNBRElBTWdCRjBiSWdNZ0F5QUZYaHNRY2dzZ0FDQUdLUU1JTndJQURBRUxJQUJCQURvQUJBc2dCa0VRYWlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkRjRVF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVOc1JJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUx2QWNFQW53RWZ3TjlBbjRqQUVFUWF5SUZKQUFnQVNnQ0JDRUhJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJR1JRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JpZ0NCQ0lHUWZDZkVrWUVRQ0FDRUR3aEF5QUZRZ0EzQXdnQ2ZBSjhJQU1pQkwwaURFSTBpS2RCL3c5eElnWkIvd2RySVFnQ1FDQUdRYk1JVHdSQUlBVWdCRGtEQ0NBTVF2Ly8vLy8vLy84SGcxQkZJQWhCZ0FoR2NRMEJJQXhDZ0lDQWdJQ0FnSUNBZjRPL0RBSUxJQVpCL2dkTkJFQWdCU0FNUW9DQWdJQ0FnSUNBZ0grRE53TUlJQVFNQWdzZ0RDQUlyU0lOaGtMLy8vLy8vLy8vQjROUUJFQWdCU0FFT1FNSUlBeENnSUNBZ0lDQWdJQ0FmNE8vREFJTElBVkNnSUNBZ0lDQWdIZ2dEWWNnRElNaUREY0RDQ0FFSUF5L29TRUVDeUFFQzVraUJFUUFBQUFBQUFEZ1AySWdCTDFDQUZOeVJRUkFJQU9jQW40Z0JTc0RDQ0lFUkFBQUFBQUFBUEMvb0prZ0JDQUV2VUlBVXhzaUJFUUFBQUFBQUFEd1EyTWdCRVFBQUFBQUFBQUFBR1p4QkVBZ0JMRU1BUXRDQUF1blFRRnhSUTBCR2lBRG13d0JDeUFEdlNJTVFqU0lwMEgvRDNFaUJrR3lDRTBFZkNBR1FmMEhUUVI4SUFORUFBQUFBQUFBQUFDaUJRSjhJQU1nQTVvZ0RFSUFXUnNpQTBRQUFBQUFBQUF3UTZCRUFBQUFBQUFBTU1PZ0lBT2hJZ1JFQUFBQUFBQUE0RDlrQkVBZ0F5QUVvRVFBQUFBQUFBRHd2NkFNQVFzZ0F5QUVvQ0lESUFSRUFBQUFBQUFBNEw5bFJRMEFHaUFEUkFBQUFBQUFBUEEvb0FzaUF5QURtaUFNUWdCWkd3c0ZJQU1MQ3lFRElBVWdBU0FISUFJZ0FpZ0NBQ2dDQ0JFQUFDQURFSE1NQVFzZ0JrR3dxUkpHQkVBZ0FoQTBJUW9nQlVFQU5nSUlBbjBnQ2lBRlFRaHFFSXdWaXlJSlF3QUFBRDljSUFtOFFRQklja1VFUUNBS2pnSitJQVVxQWdnaUNVTUFBSUMva29zZ0NTQUp2RUVBU0JzaUNVTUFBSUJmWFNBSlF3QUFBQUJnY1FSQUlBbXZEQUVMUWdBTHAwRUJjVVVOQVJvZ0NvME1BUXNnQ2hDSUZRc2hDaUFGSUFFZ0J5QUNJQUlvQWdBb0FnZ1JBQUFnQ2hCckRBRUxJQVpCMEtnU1J3MEJJQUlRUHlFS0lBVkRBQUFBQUJCR09BSUlJQW9nQlVFSWFoQ01GU0VKUXdBQUFBQVFSaG9DZlVNQUFBQS9FRVlpQzd3Z0NZc2lDYnh6UVFCSUlBa2dDMXh5UlFSQUlBcU9BbjRnQlNvQ0NDSUpRd0FBZ0wrU2l5QUpJQW04UVFCSUd5SUpRd0FBZ0Y5ZElBbERBQUFBQUdCeEJFQWdDYThNQVF0Q0FBdW5RUUZ4UlEwQkdpQUtqUXdCQ3lBS0VJZ1ZDeEJHSVFvZ0JTQUJJQWNnQWlBQ0tBSUFLQUlJRVFBQUlBb1FjZ3NnQUNBRktRTUFOd0lBREFFTElBQkJBRG9BQkFzZ0JVRVFhaVFBQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCRGVFUXdCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRU4wUklBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTG1BSUJCWDhqQUVFUWF5SUVKQUFnQVNnQ0JDRUdJQUVvQWdBaEJ3SkFJQUlnQWlnQ0FDZ0NDQkVBQUNJQlJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0FTZ0NCQ0lCUVpDcUVrWUVRQ0FDRUdFaEJVRUFJUUVEUUNBQlFTQkdSUVJBUVFBZ0JTQUJka0VCY1d0QmdJQ0FnSGdnQVhaeElBTnlJUU1nQVVFQmFpRUJEQUVMQ3lBRVFRaHFJQWNnQWlBQ0tBSUFLQUlJRVFBQUlBTVFzUUVNQVFzZ0FVR2dzeEpIRFFFZ0FoQlpJUVZCQUNFQkEwQWdBVUVnUmtVRVFFRUFJQVVnQVhaQkFYRnJRWUNBZ0lCNElBRjJjU0FEY2lFRElBRkJBV29oQVF3QkN3c2dCRUVJYWlBSElBSWdBaWdDQUNnQ0NCRUFBQ0FERUswQkN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRU9BUkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1EzeEVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXNwQUNBQUlBRWdBa0dTb2dGREFBQTBRMFBiRDBsQVFiWDB1K1FEUXJtNnlwTHE2UGZJUHhDRkV3dlZBZ0VGZnlNQVFkQUFheUlISkFBZ0IwRUFOZ0pNQWtBZ0JTZ0NBQ0lJSUFnb0FnQW9BZ2dSQUFBaUNDQUhRY3dBYWhBaUlBaEdCRUFnQUNBRElBVW9BZ0FnQmlnQ0FCRGlFUXdCQ3lBSFFvQ0FnSUNBQVRjQ1JDQUhJQWRCSUdvaUNEWUNRQ0FJSUFjb0Frd1FPU0FIUVVCcklRcEJBQ0VJQWtBQ1FBTkFJQWdnQnlnQ1RFOE5BU0FDUVFBUUlpRUxJQWNnQlNnQ0FDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ0ZDQUhJQVlvQWdBaUNTQUlJQWtvQWdBb0Fnd1JBUUEyQWhBZ0IwRVlhaUlKSUFFZ0N5QURJQVFnQ0dvZ0IwRVVhaUFIUVJCcUVPRVJJQWtRS3dSQUlBZEJJR29nQjBFWWFoQWFFQ1FnQ0VFQmFpRUlEQUVMQ3lBSFFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBSElBbzJBZ2dnQnlBSEtBSkFJQWRCSUdwSE9nQU1JQUVnQWlBSFFRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFIUVNCcUVDTUxJQWRCMEFCcUpBQUxtQllFQ253S2Z3SitBMzBqQUVFd2F5SU9KQUFnQVNnQ0JDRVdJQUVvQWdBaEVBSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJQlJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0FTZ0NCQ0lCUWZDZkVrWUVRQUpBQWtBZ0FoQThJZ2hFQUFBQUFBQUFBQUJqUlNBREVEd2lDa1FBQUFBQUFBQUFBR1ZGSUFpOVFnQlRJQWhFQUFBQUFBQUFBQUJpY25KeFJRMEFBbnhFQUFBQUFBQUE4RDhoQndKQUFrQUNRQ0FLdlNJWlFpQ0lweUlWUWYvLy8vOEhjU0lSSUJtbklnOXlSUTBBSUFpOUloaENJSWluSVJNZ0dLY2lFa1VnRTBHQWdNRC9BMFp4RFFBZ0NDQUtvQ0FUUWYvLy8vOEhjU0lVUVlDQXdQOEhTeUFVUVlDQXdQOEhSaUFTUVFCSGNYSWdFVUdBZ01EL0IwdHlSU0FQUlNBUlFZQ0F3UDhIUjNKeFJRMERHZ0pBQWtBQ1FBSkFBa0FDZjBFQUlCaENBRmtOQUJwQkFpQVJRZi8vLzVrRVN3MEFHa0VBSUJGQmdJREEvd05KRFFBYUlCRkJGSFloQVNBUlFZQ0FnSW9FU1EwQlFRQWdEMEd6Q0NBQmF5SURkaUlCSUFOMElBOUhEUUFhUVFJZ0FVRUJjV3NMSVJjZ0R3MENJQkZCZ0lEQS93ZEhEUUVnRkVHQWdNRC9BMnNnRW5KRkRRVWdGRUdBZ01EL0Ewa05BeUFLUkFBQUFBQUFBQUFBSUJsQ0FGa2JEQWdMSUE4TkFTQVJRWk1JSUFGcklnTjJJZ0VnQTNRZ0VVY05BRUVDSUFGQkFYRnJJUmNMSUJGQmdJREEvd05HQkVBZ0NDQVpRZ0JaRFFjYVJBQUFBQUFBQVBBL0lBaWpEQWNMSUFnZ0NLSWdGVUdBZ0lDQUJFWU5CaG9nRlVHQWdJRC9BMGNnR0VJQVUzSU5BQ0FJbnd3R0N5QUltU0VFSUJJTkFRSkFJQk5CQUVnRVFDQVRRWUNBZ0lCNFJpQVRRWUNBd1A5N1JuSWdFMEdBZ0VCR2NnMEJEQU1MSUJORklCTkJnSURBL3dkR2NnMEFJQk5CZ0lEQS93TkhEUUlMUkFBQUFBQUFBUEEvSUFTaklBUWdHVUlBVXhzaEJ5QVlRZ0JaRFFJZ0Z5QVVRWUNBd1A4RGEzSkZCRUFnQnlBSG9TSUVJQVNqREFZTElBZWFJQWNnRjBFQlJoc01CUXRFQUFBQUFBQUFBQUFnQ3BvZ0dVSUFXUnNNQkFzQ1FDQVlRZ0JaRFFBQ1FBSkFJQmNPQWdBQkFnc2dDQ0FJb1NJRUlBU2pEQVVMUkFBQUFBQUFBUEMvSVFjTEFud2dFVUdCZ0lDUEJFOEVRQ0FSUVlHQXdKOEVUd1JBUkFBQUFBQUFBUEIvUkFBQUFBQUFBQUFBSUJsQ0FGTWJJQlJCLy8rLy93Tk5EUVlhUkFBQUFBQUFBUEIvUkFBQUFBQUFBQUFBSUJWQkFFb2JEQVlMSUFkRW5IVUFpRHprTjM2aVJKeDFBSWc4NURkK29pQUhSRm56K01JZmJxVUJva1JaOC9qQ0gyNmxBYUlnR1VJQVV4c2dGRUgrLzcvL0EwME5CUm9nQjBTY2RRQ0lQT1EzZnFKRW5IVUFpRHprTjM2aUlBZEVXZlA0d2g5dXBRR2lSRm56K01JZmJxVUJvaUFWUVFCS0d5QVVRWUdBd1A4RFR3MEZHaUFFUkFBQUFBQUFBUEMvb0NJRlJFVGZYZmdMcmxRK29pQUZJQVdpUkFBQUFBQUFBT0EvSUFVZ0JVUUFBQUFBQUFEUXY2SkVWVlZWVlZWVjFUK2dvcUdpUlA2Q0syVkhGZmUvb3FBaUJDQUVJQVZFQUFBQVlFY1Y5eitpSWdTZ3ZVS0FnSUNBY0lPL0lnWWdCS0doREFFTElBUkVBQUFBQUFBQVFFT2lJZ1VnQkNBVVFZQ0F3QUJKSWdNYklRUWdCYjFDSUlpbklCUWdBeHNpQVVILy96OXhJaFZCZ0lEQS93TnlJUklnQVVFVWRVSE1kMEdCZUNBREcyb2hBMEVBSVE4Q1FDQVZRWSt4RGtrTkFDQVZRZnJzTGtrRVFFRUJJUThNQVFzZ0ZVR0FnSUQvQTNJaEVpQURRUUZxSVFNTElBOUJBM1FpQVVHUXlRMXFLd01BSUFTOVF2Ly8vLzhQZ3lBU3JVSWdob1MvSWdzZ0FVR0F5UTFxS3dNQUlnbWhJZ1ZFQUFBQUFBQUE4RDhnQ1NBTG9LTWlCS0lpRGIxQ2dJQ0FnSENEdnlJTUlBd2dES0lpQmtRQUFBQUFBQUFJUUtBZ0JDQUZJQXdnRDBFU2RDQVNRUUYyYWtHQWdLQ0FBbXF0UWlDR3Z5SUVvcUVnRENBTElBUWdDYUdob3FHaUlna2dEU0FNb0tJZ0RTQU5vaUlFSUFTaUlBUWdCQ0FFSUFRZ0JFVHZUa1ZLS0g3S1A2SkVaZHZKazBxR3pUK2dva1FCUVIycFlIVFJQNkNpUkUwbWoxRlZWZFUvb0tKRS82dHYyN1p0MnorZ29rUURNek16TXpQalA2Q2lvQ0lFb0wxQ2dJQ0FnSENEdnlJTG9pSUZJQWtnQzZJZ0RTQUVJQXRFQUFBQUFBQUFDTUNnSUFhaG9hS2dJZ1NndlVLQWdJQ0FjSU8vSWdaRTlRRmJGT0F2UHI2aUlBUWdCaUFGb2FGRS9RTTYzQW5IN2oraW9LQWlCQ0FCUWFESkRXb3JBd0FpQ1NBRUlBWkVBQUFBNEFuSDdqK2lJZ1dnb0NBRHR5SUVvTDFDZ0lDQWdIQ0R2eUlHSUFTaElBbWhJQVdob1FzaEJTQUtJQmxDZ0lDQWdIQ0R2eUlFb1NBR29pQUZJQXFpb0NJRklBWWdCS0lpQnFBaUJMMGlHS2NoQVFKQUlCaENJSWluSWdOQmdJREFoQVJPQkVBZ0EwR0FnTUNFQkdzZ0FYSU5BeUFGUlA2Q0syVkhGWmM4b0NBRUlBYWhaRVVOQVF3REN5QURRWUQ0Ly84SGNVR0FtTU9FQkVrTkFDQURRWURvdlBzRGFpQUJjZzBESUFVZ0JDQUdvV1ZGRFFBTUF3dEJBQ0VQSUFjQ2ZDQURRZi8vLy84SGNTSUJRWUdBZ1A4RFR3UitRUUJCZ0lEQUFDQUJRUlIyUWY0SGEzWWdBMm9pRWtILy96OXhRWUNBd0FCeVFaTUlJQkpCRkhaQi93OXhJZ05yZGlJQmF5QUJJQmhDQUZNYklROGdCU0FHUVlDQVFDQURRZjhIYTNVZ0VuR3RRaUNHdjZFaUJxQzlCU0FZQzBLQWdJQ0FjSU8vSWdSRUFBQUFBRU11NWoraUlna2dCU0FFSUFhaG9VVHZPZnIrUWk3bVA2SWdCRVE1YktnTVlWd2d2cUtnSWdXZ0lnWWdCaUFHSUFZZ0JxSWlCQ0FFSUFRZ0JDQUVSTkNrdm5KcE4yWStva1R4YTlMRlFiMjd2cUNpUkN6ZUphOXFWaEUvb0tKRWs3MitGbXpCWnIrZ29rUStWVlZWVlZYRlA2Q2lvU0lFb2lBRVJBQUFBQUFBQUFEQW9LTWdCaUFGSUFZZ0NhR2hJZ1NpSUFTZ29hRkVBQUFBQUFBQThEK2dJZ1M5SWhoQ0lJaW5JQTlCRkhScUlnRkIvLzgvVEFSQUlBUWdEeEQvQkF3QkN5QVlRdi8vLy84UGd5QUJyVUlnaG9TL0M2SWhCd3NnQnd3Q0N5QUhSSngxQUlnODVEZCtva1NjZFFDSVBPUTNmcUlNQVFzZ0IwUlo4L2pDSDI2bEFhSkVXZlA0d2g5dXBRR2lDeUlFbVVRQUFBQUFBQUR3ZjJORkRRQWdEa0VCT2dBb0lBNGdCRGtESUF3QkN5QU9RUUE2QUNnZ0RrRUFPZ0FnQ3lBT0xRQW9SUVJBSUE1QkVHb2lBU0FJUWJPOUJTQUtFTzBHSUJBZ0FTQVdFRjBnQVJBUEdpQVFMUUFFQkVBZ0VDQUNJQUlvQWdBb0FnZ1JBQUFRa1FFaEFTQU9RUUU2QUF3Z0RpQUJOZ0lJREFNTElBNUJBam9BREF3Q0N5QU9RUWhxSUJBZ0ZpQUNJQUlvQWdBb0FnZ1JBQUFnRGlzRElCQnpEQUVMSUFGQnNLa1NSZ1JBQWtBQ1FDQUNFRFFpR2tNQUFBQUFYVVVnQXhBMElodERBQUFBQUY5RklCcThRUUJJSUJwREFBQUFBRnh5Y25GRkRRQWdHaUFiRUlzVkloeUxRd0FBZ0g5ZFJRMEFJQTVCQVRvQUZDQU9JQnc0QWhBTUFRc2dEa0VBT2dBVUlBNUJBRG9BRUFzZ0RpMEFGRVVFUUNBT1FTQnFJZ0VnR2tHenZRVWdHeERzQmlBUUlBRWdGaEJkSUFFUUR4b2dFQzBBQkFSQUlCQWdBaUFDS0FJQUtBSUlFUUFBRUpFQklRRWdEa0VCT2dBTUlBNGdBVFlDQ0F3REN5QU9RUUk2QUF3TUFnc2dEa0VJYWlBUUlCWWdBaUFDS0FJQUtBSUlFUUFBSUE0cUFoQVFhd3dCQ3lBQlFkQ29Fa2NOQVFKQUFrQWdBaEEvSWhwREFBQUFBRjFGSUFNUVB5SWJRd0FBQUFCZlJTQWF2RUVBU0NBYVF3QUFBQUJjY25KeFJRMEFJQm9nR3hDTEZSQkdJaHlMUXdBQWdIOWRSUTBBSUE1QkFUb0FGQ0FPSUJ3NEFoQU1BUXNnRGtFQU9nQVVJQTVCQURvQUVBc2dEaTBBRkVVRVFDQU9RU0JxSWdFZ0drR3p2UVVnR3hEcUJpQVFJQUVnRmhCZElBRVFEeG9nRUMwQUJBUkFJQkFnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnRGtFQk9nQU1JQTRnQVRZQ0NBd0NDeUFPUVFJNkFBd01BUXNnRGtFSWFpQVFJQllnQWlBQ0tBSUFLQUlJRVFBQUlBNHFBaEFRY2dzZ0FDQU9LUU1JTndJQURBRUxJQUJCQURvQUJBc2dEa0V3YWlRQUN3d0FJQUJEQVA5L1J4RDdFZ3NRQUNBQVFmLy9BME1BL3Y5R0VQd1NDOGNEQVFWL0l3QkJNR3NpQkNRQUlBRW9BZ0FoQlNBRVFTaHFJZ01nQWhDNURDQUFBbjhnQUFKL0lBTVFNQVJBSUFSQkF6WUNGQ0FFUWQzd0JqWUNFQ0FFSUFRcEF4QTNBd2dnQkVFWWFpSUFJQUlnQkVFSWFoRCtBeUFGSUFBZ0FTZ0NCQkJkSUFBUUR4cEJBQ0FGTFFBRURRRWFRUUlNQWdzZ0JFRW9haEFhSVFFakFFR3dBV3NpQlNRQVFZRDhBU0VBQWtBZ0FTb0NBQ0lDSUFKY0RRQWdBb3REQUFDQWYxc0VRRUdBK0FGQmdIZ2dBa01BQUFBQVhoc2hBQXdCQ3lBQ3ZDSURRUkIyUVlDQUFuRWhBU0FEUWYvLy8vOEhjVVVFUUNBQklRQU1BUXNnQTBILy8vOERjU0VISUFOQkYzWWlCa0gvQVhFaUEwSHhBR3RCSFUwRVFDQUdRUXAwUVlDQUFXb2lBRUdBK0FOeElRTWdBRUdBZ0FKeEJFQWdCVUhnbndWQnR3SkJDU0FGUWFBQmFoQWRJZ0FRRnlJR1FSaHFRZDdaQ0JBT0dpQUdFQmdnQUJBZUN5QUhRUTEySUFGeUlBTnlJUUFNQVFzZ0EwSG5BR3RCQ1UwRVFDQUJJQWRCZ0lDQUJISkIvZ0FnQTJ0MmNpRUFEQUVMSUFWQjRKOEZRZGNDUVFrZ0JVR2dBV29RSFNJQkVCY2lBMEVZYWtIdXZ3c1FEaG9nQXhBWUlBRVFIZ3NnQlVHd0FXb2tBQ0FBUWYvL0EzRUxOZ0lBUVFFTE9nQUVJQVJCTUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRMWdrTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoRG1FU0FJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJEb0VRd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFT2NSSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMOGdFREEzOEJmUUY4SXdCQkVHc2lBeVFBSUFFb0FnUWhCU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJFVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBUW9BZ1FpQkVId254SkdCRUFnQWhBOElRY2dBMEVJYWlBQklBVWdBaUFDS0FJQUtBSUlFUUFBSUFjZ0I1MmhFSE1NQVFzZ0JFR3dxUkpHQkVBZ0FoQTBJUVlnQTBFSWFpQUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBWWdCbytURUdzTUFRc2dCRUhRcUJKSERRRWdBaEEvSVFZZ0EwRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQVlnQm8rVEVFWVFjZ3NnQUNBREtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0EwRVFhaVFBQzljQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBSUFRUTZoRU1BUXNnQjBLQWdJQ0FnQUUzQWtRZ0J5QUhRU0JxSWdnMkFrQWdDQ0FIS0FKTUVEa2dCMEZBYXlFS1FRQWhDQUpBQWtBRFFDQUlJQWNvQWt4UERRRWdBa0VBRUNJaEN5QUhJQVVvQWdBaUNTQUlJQWtvQWdBb0Fnd1JBUUEyQWhRZ0J5QUdLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lRSUFkQkdHb2lDU0FCSUFzZ0F5QUVJQWhxSUFkQkZHb2dCMEVRYWhEcEVTQUpFQ3NFUUNBSFFTQnFJQWRCR0dvUUdoQWtJQWhCQVdvaENBd0JDd3NnQjBFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQnlBS05nSUlJQWNnQnlnQ1FDQUhRU0JxUnpvQURDQUJJQUlnQjBFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCMEVnYWhBakN5QUhRZEFBYWlRQUM1NEhBd1IvQTMwRGZDTUFRZEFBYXlJRkpBQWdBU2dDQ0NFR0lBRW9BZ0FoQ0NBQktBSUVJUWNDUUNBQ0lBSW9BZ0FvQWdnUkFBQWlBVVVFUUNBQVFRQTZBQVFNQVFzQ1FBSkFJQUVvQWdRaUFVSHdueEpHQkVBZ0FoQThJUXdnQXhBOElRMGdCVUZBYXlJRElBY2dCa1FBQUFBQUFBRHdQeUFJS0FJQUtBSUFLQUlJSWdFZ0FTZ0NBQ2dDQ0JFQUFCQzBBd1IvSUFFZ0JDQUJLQUlBS0FJTUVRRUFCU0FCQ3hBOElnNFFnUVFnQXhCaUJFQWdCVUVDT2dBTURBSUxJQVZCTUdvaUFTQUhJQVlnRENBRlFVQnJFRW9yQXdBUTJ3RWdBUkJpQkVBZ0JVRUNPZ0FNREFJTElBVkJJR29pQVNBSElBWWdEU0FPRU5zQklBRVFZZ1JBSUFWQkFqb0FEQXdDQ3lBRlFSQnFJZ0VnQnlBR0lBVkJNR29RU2lzREFDQUZRU0JxRUVvckF3QVEyQU1nQVJCaUJFQWdCVUVDT2dBTURBSUxJQVZCQ0dvZ0J5QUdJQUlnQWlnQ0FDZ0NDQkVBQUNBRlFSQnFFRW9yQXdBUWN3d0JDeUFCUWJDcEVrWUVRQ0FDRURRaENTQURFRFFoQ2lBRlFVQnJJZ01nQnlBR1F3QUFnRDhnQ0NnQ0FDZ0NBQ2dDQ0NJQklBRW9BZ0FvQWdnUkFBQVF0QU1FZnlBQklBUWdBU2dDQUNnQ0RCRUJBQVVnQVFzUU5DSUxFSUFFSUFNUU1BUkFJQVZCQWpvQURBd0NDeUFGUVRCcUlnRWdCeUFHSUFrZ0JVRkFheEFhS2dJQUVOb0JJQUVRTUFSQUlBVkJBam9BREF3Q0N5QUZRU0JxSWdFZ0J5QUdJQW9nQ3hEYUFTQUJFREFFUUNBRlFRSTZBQXdNQWdzZ0JVRVFhaUlCSUFjZ0JpQUZRVEJxRUJvcUFnQWdCVUVnYWhBYUtnSUFFTmNESUFFUU1BUkFJQVZCQWpvQURBd0NDeUFGUVFocUlBY2dCaUFDSUFJb0FnQW9BZ2dSQUFBZ0JVRVFhaEFhS2dJQUVHc01BUXNnQVVIUXFCSkhEUUVnQWhBL0lRb2dBeEEvSVFzZ0NDZ0NBQ2dDQUNnQ0NDSUJJQUVvQWdBb0FnZ1JBQUFRdEFNRWZ5QUJJQVFnQVNnQ0FDZ0NEQkVCQUFVZ0FRc1FQeUVKSUFWQlFHc2lBU0FISUFaREFBQ0FQeEJHSUFrUS93TWdBUkF3QkVBZ0JVRUNPZ0FNREFFTElBVkJNR29pQVNBSElBWWdDaUFGUVVCckVCb3FBZ0FRMlFFZ0FSQXdCRUFnQlVFQ09nQU1EQUVMSUFWQklHb2lBU0FISUFZZ0N5QUpFTmtCSUFFUU1BUkFJQVZCQWpvQURBd0JDeUFGUVJCcUlnRWdCeUFHSUFWQk1Hb1FHaW9DQUNBRlFTQnFFQm9xQWdBUTFnTWdBUkF3QkVBZ0JVRUNPZ0FNREFFTElBVkJDR29nQnlBR0lBSWdBaWdDQUNnQ0NCRUFBQ0FGUVJCcUVCb3FBZ0FRY2dzZ0FDQUZLUU1JTndJQURBRUxJQUJCQURvQUJBc2dCVUhRQUdva0FBdWdBUUVDZnlNQVFTQnJJZ2NrQUNBSElBSTJBaEFnQnlBQk5nSVlJQWNnQlRZQ0NDQUhJQVEyQWdRZ0IwRUFOZ0lBSXdCQkVHc2lBU1FBSUFjb0FnZ2hBaUFIS0FJRUlRUWdCeWdDRUNFRklBY29BaGdoQ0NBQklBWXBBZ0EzQXdnZ0FDQUlJQVVnQXlBRUlBSkJBQ0FCUVFocUVOY0pJZ0JCc09zUE5nSUVJQUJCNk9zUE5nSUFJQUZCRUdva0FDQUFRZERyRHpZQ0FDQUhRU0JxSkFBZ0FBdlZBZ0VGZnlNQVFkQUFheUlISkFBZ0IwRUFOZ0pNQWtBZ0JTZ0NBQ0lJSUFnb0FnQW9BZ2dSQUFBaUNDQUhRY3dBYWhBaUlBaEdCRUFnQUNBRElBVW9BZ0FnQmlnQ0FCRHRFUXdCQ3lBSFFvQ0FnSUNBQVRjQ1JDQUhJQWRCSUdvaUNEWUNRQ0FJSUFjb0Frd1FPU0FIUVVCcklRcEJBQ0VJQWtBQ1FBTkFJQWdnQnlnQ1RFOE5BU0FDUVFBUUlpRUxJQWNnQlNnQ0FDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ0ZDQUhJQVlvQWdBaUNTQUlJQWtvQWdBb0Fnd1JBUUEyQWhBZ0IwRVlhaUlKSUFFZ0N5QURJQVFnQ0dvZ0IwRVVhaUFIUVJCcUVPd1JJQWtRS3dSQUlBZEJJR29nQjBFWWFoQWFFQ1FnQ0VFQmFpRUlEQUVMQ3lBSFFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBSElBbzJBZ2dnQnlBSEtBSkFJQWRCSUdwSE9nQU1JQUVnQWlBSFFRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFIUVNCcUVDTUxJQWRCMEFCcUpBQUx1d01FQTM4Q2ZRSitBbndqQUVFUWF5SUZKQUFnQVNnQ0JDRUdJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJRVJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JDZ0NCQ0lFUWRDZ0VrWUVRQ0FDRUdNaENTQURFR01oQ2lBRlFRaHFJQUVnQWlBQ0tBSUFLQUlJRVFBQUlBb2dDU0FKSUFwVkd4RDlBUXdCQ3lBRVFmQ2ZFa1lFUUNBQ0VEd2hDeUFERUR3aERDQUZRUWhxSUFFZ0JpQUNJQUlvQWdBb0FnZ1JBQUFnRENBTElBc2dER1FiRUhNTUFRc2dCRUd3cVJKR0JFQWdBaEEwSVFjZ0F4QTBJUWdnQlVFSWFpQUJJQVlnQWlBQ0tBSUFLQUlJRVFBQUlBZ2dCeUFISUFoZUd4QnJEQUVMSUFSQmtLb1NSZ1JBSUFJUVlTRUVJQU1RWVNFRElBVkJDR29nQVNBQ0lBSW9BZ0FvQWdnUkFBQWdBeUFFSUFNZ0JFZ2JFTEVCREFFTElBUkJvTE1TUmdSQUlBSVFXU0VFSUFNUVdTRURJQVZCQ0dvZ0FTQUNJQUlvQWdBb0FnZ1JBQUFnQXlBRUlBTWdCRWtiRUswQkRBRUxJQVJCMEtnU1J3MEJJQUlRUHlFSElBTVFQeUVJSUFWQkNHb2dBU0FHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlJQWNnQnlBSVhoc1FjZ3NnQUNBRktRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JVRVFhaVFBQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRU84UkRBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RN2hFZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUF1N0F3UURmd0o5QW40Q2ZDTUFRUkJySWdVa0FDQUJLQUlFSVFZZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ1JGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FFS0FJRUlnUkIwS0FTUmdSQUlBSVFZeUVKSUFNUVl5RUtJQVZCQ0dvZ0FTQUNJQUlvQWdBb0FnZ1JBQUFnQ1NBS0lBa2dDbFViRVAwQkRBRUxJQVJCOEo4U1JnUkFJQUlRUENFTElBTVFQQ0VNSUFWQkNHb2dBU0FHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQU1JQXNnQ3lBTVl4c1Fjd3dCQ3lBRVFiQ3BFa1lFUUNBQ0VEUWhCeUFERURRaENDQUZRUWhxSUFFZ0JpQUNJQUlvQWdBb0FnZ1JBQUFnQ0NBSElBY2dDRjBiRUdzTUFRc2dCRUdRcWhKR0JFQWdBaEJoSVFRZ0F4QmhJUU1nQlVFSWFpQUJJQUlnQWlnQ0FDZ0NDQkVBQUNBRUlBTWdBeUFFU0JzUXNRRU1BUXNnQkVHZ3N4SkdCRUFnQWhCWklRUWdBeEJaSVFNZ0JVRUlhaUFCSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUVJQU1nQXlBRVNSc1FyUUVNQVFzZ0JFSFFxQkpIRFFFZ0FoQS9JUWNnQXhBL0lRZ2dCVUVJYWlBQklBWWdBaUFDS0FJQUtBSUlFUUFBSUFnZ0J5QUhJQWhkR3hCeUN5QUFJQVVwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFGUVJCcUpBQUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRVBFUkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1E4QkVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXV0QndRRGZ3WjhBWDRCZlNNQVFSQnJJZ01rQUNBQktBSUVJUVVnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnUkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUVLQUlFSWdSQjhKOFNSZ1JBSUFJUVBDSUdSQUFBQUFBQUFBQUFaUVJBSUFFZ0EwR0lrUWNRRkNJRUlBVVFYU0FFRUE4YUlBRXRBQVFFUUNBQklBSWdBaWdDQUNnQ0NCRUFBQkNSQVNFQklBTkJBVG9BQkNBRElBRTJBZ0FNQXdzZ0EwRUNPZ0FFREFJTElBTWdBU0FGSUFJZ0FpZ0NBQ2dDQ0JFQUFBSjhBa0FDUUFKQUFrQWdCcjBpREVJQVdRUkFJQXhDSUlpbklnRkIvLzgvU3cwQkMwUUFBQUFBQUFEd3Z5QUdJQWFpb3lBTVF2Ly8vLy8vLy8vLy93Q0RVQTBFR2lBTVFnQlpEUUVnQmlBR29VUUFBQUFBQUFBQUFLTU1CQXNnQVVILy83Ly9CMHNOQWtHQWdNRC9BeUVDUVlGNElRVWdBVUdBZ01EL0EwY0VRQ0FCSVFJTUFnc2dES2NOQVVRQUFBQUFBQUFBQUF3REN5QUdSQUFBQUFBQUFGQkRvcjBpREVJZ2lLY2hBa0hMZHlFRkN5QU1Rdi8vLy84UGd5QUNRZUsrSldvaUFVSC8vejl4UVo3Qm12OERhcTFDSUlhRXYwUUFBQUFBQUFEd3Y2QWlCaUFHSUFaRUFBQUFBQUFBNEQraW9pSUpvYjFDZ0lDQWdIQ0R2eUlLUkFBQUlHVkhGZmMvb2lJSElBVWdBVUVVZG1xM0lnaWdJZ3NnQnlBSUlBdWhvQ0FHSUFaRUFBQUFBQUFBQUVDZ295SUhJQWtnQnlBSG9pSUlJQWlpSWdjZ0J5QUhSSi9HZU5BSm1zTS9va1N2ZUk0ZHhYSE1QNkNpUkFUNmw1bVptZGsvb0tJZ0NDQUhJQWNnQjBSRVVqN2ZFdkhDUDZKRTNnUExsbVJHeHorZ29rUlpreUtVSkVuU1A2Q2lSSk5WVlZWVlZlVS9vS0tnb0tJZ0JpQUtvU0FKb2FBaUJpQUtvRVFBb3U4dS9BWG5QYUlnQmtRQUFDQmxSeFgzUDZLZ29LQWhCZ3NnQmdzUWN3d0JDeUFFUWJDcEVrWUVRQ0FDRURRaURVTUFBQUFBWHdSQUlBRWdBMEdJa1FjUUZDSUVJQVVRWFNBRUVBOGFJQUV0QUFRRVFDQUJJQUlnQWlnQ0FDZ0NDQkVBQUJDUkFTRUJJQU5CQVRvQUJDQURJQUUyQWdBTUF3c2dBMEVDT2dBRURBSUxJQU1nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FORUtZVkVHc01BUXNnQkVIUXFCSkhEUUVnQWhBL0lRMURBQUFBQUJCR0lBMWdCRUFnQVNBRFFZaVJCeEFVSWdRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FFSUFNZ0FUWUNBQXdDQ3lBRFFRSTZBQVFNQVFzZ0F5QUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBMFFwaFVRUmhCeUN5QUFJQU1wQXdBM0FnQU1BUXNnQUVFQU9nQUVDeUFEUVJCcUpBQUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRVBNUkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1E4aEVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXZuQXdNRGZ3RjlBWHdqQUVFUWF5SURKQUFnQVNnQ0JDRUZJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJRVJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JDZ0NCQ0lFUWZDZkVrWUVRQ0FDRUR3aUIwUUFBQUFBQUFBQUFHVUVRQ0FCSUFOQjVKQUhFQlFpQkNBRkVGMGdCQkFQR2lBQkxRQUVCRUFnQVNBQ0lBSW9BZ0FvQWdnUkFBQVFrUUVoQVNBRFFRRTZBQVFnQXlBQk5nSUFEQU1MSUFOQkFqb0FCQXdDQ3lBRElBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0J4Q21DQkJ6REFFTElBUkJzS2tTUmdSQUlBSVFOQ0lHUXdBQUFBQmZCRUFnQVNBRFFlU1FCeEFVSWdRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FFSUFNZ0FUWUNBQXdEQ3lBRFFRSTZBQVFNQWdzZ0F5QUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBWVFtQWNRYXd3QkN5QUVRZENvRWtjTkFTQUNFRDhoQmtNQUFBQUFFRVlnQm1BRVFDQUJJQU5CNUpBSEVCUWlCQ0FGRUYwZ0JCQVBHaUFCTFFBRUJFQWdBU0FDSUFJb0FnQW9BZ2dSQUFBUWtRRWhBU0FEUVFFNkFBUWdBeUFCTmdJQURBSUxJQU5CQWpvQUJBd0JDeUFESUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQmhDWUJ4QkdFSElMSUFBZ0F5a0RBRGNDQUF3QkN5QUFRUUE2QUFRTElBTkJFR29rQUF1MEFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQWdCQkQxRVF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVQUVJJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUx2UVVFQlg4QmZRRjhBWDRqQUVFZ2F5SUVKQUFnQVNnQ0RDRUlJQUVvQWdnaEJpQUJLQUlBSVFVZ0FTZ0NCQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ2RGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FIS0FJRUlnZEI4SjhTUmdSQUlBSVFQQ0VLSUFVb0FnQW9BZ0FvQWdRaUJTQUZLQUlBS0FJSUVRQUFFTFFEQkg4Z0JTQURJQVVvQWdBb0Fnd1JBUUFGSUFVTEVHTWlDMEtCQ0ZrRVFDQUVRb0FJRVBjR0lBUkJFR29pQTBHSWdRb2dCQkExSUFFZ0F5QUdFRjBnQXhBUEdpQUVFQThhSUFFdEFBUUVRQ0FCSUFJZ0FpZ0NBQ2dDQ0JFQUFCQ1JBU0VCSUFSQkFUb0FGQ0FFSUFFMkFoQU1Bd3NnQkVFQ09nQVVEQUlMSUFSQkVHb2dBU0FHSUFnb0FnQVFYQ0FLSUF1bkVQOEVFSE1NQVFzZ0IwR3dxUkpHQkVBZ0FoQTBJUWtnQlNnQ0FDZ0NBQ2dDQkNJRklBVW9BZ0FvQWdnUkFBQVF0QU1FZnlBRklBTWdCU2dDQUNnQ0RCRUJBQVVnQlFzUVlTSURRWUVCVGdSQUlBUkJnQUVROWdRZ0JFRVFhaUlEUVlpQkNpQUVFRFVnQVNBRElBWVFYU0FERUE4YUlBUVFEeG9nQVMwQUJBUkFJQUVnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQkVFQk9nQVVJQVFnQVRZQ0VBd0RDeUFFUVFJNkFCUU1BZ3NnQkVFUWFpQUJJQVlnQ0NnQ0FCQmNJQWtnQXhDb0ZSQnJEQUVMSUFkQjBLZ1NSdzBCSUFJUVB5RUpJQVVvQWdBb0FnQW9BZ1FpQlNBRktBSUFLQUlJRVFBQUVMUURCSDhnQlNBRElBVW9BZ0FvQWd3UkFRQUZJQVVMRUdFaUEwRVJUZ1JBSUFSQkVCRDJCQ0FFUVJCcUlnTkJpSUVLSUFRUU5TQUJJQU1nQmhCZElBTVFEeG9nQkJBUEdpQUJMUUFFQkVBZ0FTQUNJQUlvQWdBb0FnZ1JBQUFRa1FFaEFTQUVRUUU2QUJRZ0JDQUJOZ0lRREFJTElBUkJBam9BRkF3QkN5QUVRUkJxSUFFZ0JpQUlLQUlBRUZ3Z0NTQURFS2dWRUVZUWNnc2dBQ0FFS1FNUU53SUFEQUVMSUFCQkFEb0FCQXNnQkVFZ2FpUUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJEM0VRd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFUFlSSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMeEFZREEzOEJmUUY4SXdCQk1Hc2lBeVFBSUFFb0FnUWhCU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJFVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBUW9BZ1FpQkVId254SkdCRUFnQWhBOElnZEVBQUFBQUFBQUFBQmxCRUFnQVNBRFFSaHFRYmlRQnhBVUlnUWdCUkJkSUFRUUR4b2dBUzBBQkFSQUlBRWdBaUFDS0FJQUtBSUlFUUFBRUpFQklRRWdBMEVCT2dBRUlBTWdBVFlDQUF3REN5QURRUUk2QUFRTUFnc2dBeUFGTmdJc0lBTWdBVFlDS0NBRFFSaHFJZ1FnQVNBRklBY1F1QXdnQkJCaUJFQWdBMEVvYWhEbkJpQURRUUk2QUFRTUFnc2dBMEVJYWlJRUlBRWdCVVFBQUFBQUFBRHdQeUFEUVJocUVFb3JBd0FRNnd3Z0JCQmlCRUFnQTBFb2FoRG5CaUFEUVFJNkFBUU1BZ3NnQXlBQklBVWdBaUFDS0FJQUtBSUlFUUFBSUFOQkNHb1FTaXNEQUJCekRBRUxJQVJCc0trU1JnUkFJQUlRTkNJR1F3QUFBQUJmQkVBZ0FTQURRUmhxUWJpUUJ4QVVJZ1FnQlJCZElBUVFEeG9nQVMwQUJBUkFJQUVnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQTBFQk9nQUVJQU1nQVRZQ0FBd0RDeUFEUVFJNkFBUU1BZ3NnQXlBRk5nSWNJQU1nQVRZQ0dDQURRUWhxSWdRZ0FTQUZJQVlRdHd3Z0JCQXdCRUFnQTBFWWFoRG5CaUFEUVFJNkFBUU1BZ3NnQTBFb2FpSUVJQUVnQlVNQUFJQS9JQU5CQ0dvUUdpb0NBQkRxRENBRUVEQUVRQ0FEUVJocUVPY0dJQU5CQWpvQUJBd0NDeUFESUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQTBFb2FoQWFLZ0lBRUdzTUFRc2dCRUhRcUJKSERRRWdBaEEvSVFaREFBQUFBQkJHSUFaZ0JFQWdBU0FEUVJocVFiaVFCeEFVSWdRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FFSUFNZ0FUWUNBQXdDQ3lBRFFRSTZBQVFNQVFzZ0F5QUZOZ0ljSUFNZ0FUWUNHQ0FEUVFocUlnUWdBU0FGSUFZUXRnd2dCQkF3QkVBZ0EwRVlhaERuQmlBRFFRSTZBQVFNQVFzZ0EwRW9haUlFSUFFZ0JVTUFBSUEvRUVZZ0EwRUlhaEFhS2dJQUVPd0pJQVFRTUFSQUlBTkJHR29RNXdZZ0EwRUNPZ0FFREFFTElBTWdBU0FGSUFJZ0FpZ0NBQ2dDQ0JFQUFDQURRU2hxRUJvcUFnQVFjZ3NnQUNBREtRTUFOd0lBREFFTElBQkJBRG9BQkFzZ0EwRXdhaVFBQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRVBrUkRBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RK0JFZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUF1VEJBRUdmeU1BUVJCcklnWWtBQ0FCS0FJSUlRa2dBU2dDQUNFRUlBRW9BZ1FoQ0FKQUlBSWdBaWdDQUNnQ0NCRUFBQ0lCUlFSQUlBQkJBRG9BQkF3QkN3SkFBa0FDUUNBQktBSUVJZ0ZCa0tvU1JnUkFJQUlRWVNFQklBTVFZU0VESUFRb0FnQW9BZ0FvQWdnUVdTSUZRU0JMSUFRb0FnQW9BZ0FvQWd3UVdTSUVRU0JMY2tVZ0JDQUZha0VoU1hGRkJFQWdDQ0FHUVlhRkNSQVVJZ2NnQ1JCZElBY1FEeG9nQ0MwQUJFVU5Ba0VnUVNBZ0JTQUZRU0JQR3lJRmF5SUhJQVFnQkNBSFN4c2hCQXNDUUNBRVJRMEFJQVJCSUVZRVFDQURJUUVNQVFzZ0FVRi9JQVIwUVg5eklnUWdCWFJCZjNOeElBTWdCSEVnQlhSeUlRRUxJQVlnQ0NBQ0lBSW9BZ0FvQWdnUkFBQWdBUkN4QVF3REN5QUJRYUN6RWtZRVFDQUNFRmtoQVNBREVGa2hBeUFFS0FJQUtBSUFLQUlJRUZraUJVRWdTeUFFS0FJQUtBSUFLQUlNRUZraUJFRWdTM0pGSUFRZ0JXcEJJVWx4UlFSQUlBZ2dCa0dHaFFrUUZDSUhJQWtRWFNBSEVBOGFJQWd0QUFSRkRRTkJJRUVnSUFVZ0JVRWdUeHNpQldzaUJ5QUVJQVFnQjBzYklRUUxBa0FnQkVVTkFDQUVRU0JHQkVBZ0F5RUJEQUVMSUFGQmZ5QUVkRUYvY3lJRUlBVjBRWDl6Y1NBRElBUnhJQVYwY2lFQkN5QUdJQWdnQWlBQ0tBSUFLQUlJRVFBQUlBRVFyUUVNQXdzZ0FFRUFPZ0FFREFNTElBWkJBam9BQkF3QkN5QUdRUUk2QUFRTElBQWdCaWtEQURjQ0FBc2dCa0VRYWlRQUM0Z0JBUU4vSXdCQnNBRnJJZ0lrQUNBQktBSUFLQUlBSWdNUUhDQUNRUkJxUWNXdEJVR0NGVUVJSUFOQnlBSnFFQmNpQTBFWWFpSUVRZGFFREJBT0dpQUNJQUVvQWdRb0FnQWlBU0FCS0FJQUtBSUlFUUFBSWdFZ0FTZ0NBQ2dDREJFQ0FDQUVJQUlRRWhvZ0FoQVBHaUFERUJnZ0FFRUNPZ0FNSUFCQkFqb0FCQ0FDUWJBQmFpUUFDOFFDQWdKL0FYd2pBRUVnYXlJREpBQWdBeUFDTmdJTUlBRW9BZ0FoQkNBRFFRQTJBZ2dnQWhBOElBTkJDR29RckEwaEJTQUNJQUlvQWdBb0FnZ1JBQUFoQWlBQktBSUVJUUVnQXlBRU5nSUFJQU1nQTBFTWFqWUNCQUpBSUFKRkJFQWdBQ0FERVBvUkRBRUxBa0FnQWlnQ0JDSUNRYkNwRWtZRVFDQURRUkJxSUFRZ0FTQUVLQUlBRU9RQklBVzJFR3NnQTBFWWFpQUVJQVFvQWdBUTFBSWdBeWdDQ0JDeEFRd0JDeUFDUWRDb0VrWUVRQ0FEUVJCcUlBUWdBU0FFS0FJQUVQVUZJQVcyRUVZUWNpQURRUmhxSUFRZ0JDZ0NBQkRVQWlBREtBSUlFTEVCREFFTElBSkI4SjhTUmdSQUlBTkJFR29nQkNBQklBUW9BZ0FRcUFRZ0JSQnpJQU5CR0dvZ0JDQUVLQUlBRUtjSklBTTBBZ2dRL1FFTUFRc2dBMEVRYWlBREVQb1JDeUFBSUFNcEF4QTNBZ0FnQUNBREtRTVlOd0lJQ3lBRFFTQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVQMFJEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29RL0JFZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF2eUFRTURmd0Y5QVh3akFFRVFheUlESkFBZ0FTZ0NCQ0VGSUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUVSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCQ2dDQkNJRVFmQ2ZFa1lFUUNBQ0VEd2hCeUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0J5QUhuS0VRY3d3QkN5QUVRYkNwRWtZRVFDQUNFRFFoQmlBRFFRaHFJQUVnQlNBQ0lBSW9BZ0FvQWdnUkFBQWdCaUFHanBNUWF3d0JDeUFFUWRDb0VrY05BU0FDRUQ4aEJpQURRUWhxSUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQmlBR2pwTVFSaEJ5Q3lBQUlBTXBBd2czQWdBTUFRc2dBRUVBT2dBRUN5QURRUkJxSkFBTDlRSUJCWDhqQUVIUUFHc2lDQ1FBSUFoQkFEWUNUQUpBSUFVb0FnQWlDU0FKS0FJQUtBSUlFUUFBSWdrZ0NFSE1BR29RSWlBSlJnUkFJQUFnQXlBRktBSUFJQVlvQWdBZ0J5Z0NBQkNBRWd3QkN5QUlRb0NBZ0lDQUFUY0NSQ0FJSUFoQklHb2lDVFlDUUNBSklBZ29Ba3dRT1NBSVFVQnJJUXRCQUNFSkFrQUNRQU5BSUFrZ0NDZ0NURThOQVNBQ1FRQVFJaUVNSUFnZ0JTZ0NBQ0lLSUFrZ0NpZ0NBQ2dDREJFQkFEWUNGQ0FJSUFZb0FnQWlDaUFKSUFvb0FnQW9BZ3dSQVFBMkFoQWdDQ0FIS0FJQUlnb2dDU0FLS0FJQUtBSU1FUUVBTmdJTUlBaEJHR29pQ2lBQklBd2dBeUFFSUFscUlBaEJGR29nQ0VFUWFpQUlRUXhxRVA0UklBb1FLd1JBSUFoQklHb2dDRUVZYWhBYUVDUWdDVUVCYWlFSkRBRUxDeUFJUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFJSUFzMkFnQWdDQ0FJS0FKQUlBaEJJR3BIT2dBRUlBRWdBaUFJRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBSVFTQnFFQ01MSUFoQjBBQnFKQUFMdGdFQkJYOGpBRUVRYXlJRUpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRE5nSU1JQVFnQXpZQ0NDQUFRWXdCYWlJREVMOEJJUVVnQUNnQ0NDRUdJQVFvQWdnaEJ5QUNLQUlBSVFJakFFRVFheUlBSkFBZ0FDQUhOZ0lBSUFBZ0JqWUNDQ0FGSUFBb0FnZ2dBQ2dDQUNBQkVQTUdJZ0ZCaU9vUE5nSUVJQUZCd09vUE5nSUFJQUVnQWpZQ0pDQUJRYWpxRHpZQ0FDQUFRUkJxSkFBZ0F5QUZFQ2dnQXlBREtBSVlRUUZxTmdJWUlBUkJFR29rQUNBRkM5VUVBd04vQTMwRGZDTUFRVEJySWdVa0FDQUJLQUlFSVFZZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ2RGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FIS0FJRUlnZEI4SjhTUmdSQUlBSVFQQ0VMSUFNUVBDRU1JQVFRUENFTklBVWdCallDTENBRklBRTJBaWdnQlVFWWFpSURJQUVnQmlBTElBd1Eyd0VnQXhCaUJFQWdCVUVvYWhEb0JpQUZRUUk2QUFRTUFnc2dCVUVJYWlJRElBRWdCaUFGUVJocUVFb3JBd0FnRFJEWUF5QURFR0lFUUNBRlFTaHFFT2dHSUFWQkFqb0FCQXdDQ3lBRklBRWdCaUFDSUFJb0FnQW9BZ2dSQUFBZ0JVRUlhaEJLS3dNQUVITU1BUXNnQjBHd3FSSkdCRUFnQWhBMElRZ2dBeEEwSVFrZ0JCQTBJUW9nQlNBR05nSWNJQVVnQVRZQ0dDQUZRUWhxSWdNZ0FTQUdJQWdnQ1JEYUFTQURFREFFUUNBRlFSaHFFT2dHSUFWQkFqb0FCQXdDQ3lBRlFTaHFJZ01nQVNBR0lBVkJDR29RR2lvQ0FDQUtFTmNESUFNUU1BUkFJQVZCR0dvUTZBWWdCVUVDT2dBRURBSUxJQVVnQVNBR0lBSWdBaWdDQUNnQ0NCRUFBQ0FGUVNocUVCb3FBZ0FRYXd3QkN5QUhRZENvRWtjTkFTQUNFRDhoQ0NBREVEOGhDU0FFRUQ4aENpQUZJQVkyQWh3Z0JTQUJOZ0lZSUFWQkNHb2lBeUFCSUFZZ0NDQUpFTmtCSUFNUU1BUkFJQVZCR0dvUTZBWWdCVUVDT2dBRURBRUxJQVZCS0dvaUF5QUJJQVlnQlVFSWFoQWFLZ0lBSUFvUTFnTWdBeEF3QkVBZ0JVRVlhaERvQmlBRlFRSTZBQVFNQVFzZ0JTQUJJQVlnQWlBQ0tBSUFLQUlJRVFBQUlBVkJLR29RR2lvQ0FCQnlDeUFBSUFVcEF3QTNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBRlFUQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVJSVNEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29RZ1JJZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF2cEFRTURmd0Y5QVh3akFFRVFheUlESkFBZ0FTZ0NCQ0VGSUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUVSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCQ2dDQkNJRVFmQ2ZFa1lFUUNBQ0VEd2hCeUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0I1d1Fjd3dCQ3lBRVFiQ3BFa1lFUUNBQ0VEUWhCaUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0JvNFFhd3dCQ3lBRVFkQ29Fa2NOQVNBQ0VEOGhCaUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0JvNFFSaEJ5Q3lBQUlBTXBBd2czQWdBTUFRc2dBRUVBT2dBRUN5QURRUkJxSkFBTHNnSUJCWDhqQUVIUUFHc2lCaVFBSUFaQkFEWUNUQUpBSUFVb0FnQWlCeUFIS0FJQUtBSUlFUUFBSWdjZ0JrSE1BR29RSWlBSFJnUkFJQUFnQXlBRktBSUFFSVFTREFFTElBWkNnSUNBZ0lBQk53SkVJQVlnQmtFZ2FpSUhOZ0pBSUFjZ0JpZ0NUQkE1SUFaQlFHc2hDVUVBSVFjQ1FBSkFBMEFnQnlBR0tBSk1UdzBCSUFKQkFCQWlJUW9nQmlBRktBSUFJZ2dnQnlBSUtBSUFLQUlNRVFFQU5nSVVJQVpCR0dvaUNDQUJJQW9nQXlBRUlBZHFJQVpCRkdvUWd4SWdDQkFyQkVBZ0JrRWdhaUFHUVJocUVCb1FKQ0FIUVFGcUlRY01BUXNMSUFaQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFZZ0NUWUNDQ0FHSUFZb0FrQWdCa0VnYWtjNkFBd2dBU0FDSUFaQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVpCSUdvUUl3c2dCa0hRQUdva0FBdk1BUUVEZnlNQVFSQnJJZ01rQUNBQktBSUVJUVFnQVNnQ0FDRUZBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnRkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUJLQUlFSWdGQmtLb1NSZ1JBSUFJUVlTSUJCSDhnQVJER0NRVkJmd3NoQVNBRFFRaHFJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBRVFzUUVNQVFzZ0FVR2dzeEpIRFFFZ0FoQlpJZ0VFZnlBQkVNWUpCVUYvQ3lFQklBTkJDR29nQlNBQ0lBSW9BZ0FvQWdnUkFBQWdBUkN0QVFzZ0FDQURLUU1JTndJQURBRUxJQUJCQURvQUJBc2dBMEVRYWlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkNHRWd3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVJVVNJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUw0QUVCQkg4akFFRVFheUlESkFBZ0FTZ0NCQ0VFSUFFb0FnQWhCUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUJSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdBU2dDQkNJQlFaQ3FFa1lFUUVGL0lRRWdBaEJoSWdaQkFXcEJBazhFUUVFZklBWWdCa0VmZGhDc0RHc2hBUXNnQTBFSWFpQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBQkVMRUJEQUVMSUFGQm9MTVNSdzBCSUFJUVdTSUJCSDlCSHlBQlFRQVFyQXhyQlVGL0N5RUJJQU5CQ0dvZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQVJDdEFRc2dBQ0FES1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQTBFUWFpUUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJDSUVnd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFSWNTSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMalFRQkJuOGpBRUVRYXlJRkpBQWdBU2dDQ0NFSUlBRW9BZ0FoQXlBQktBSUVJUWNDUUNBQ0lBSW9BZ0FvQWdnUkFBQWlBVVVFUUNBQVFRQTZBQVFNQVFzQ1FBSkFBa0FnQVNnQ0JDSUJRWkNxRWtZRVFDQUNFR0VoQmlBREtBSUFLQUlBS0FJRUVGa2lCRUVnU3lBREtBSUFLQUlBS0FJSUVGa2lBVUVnUzNKRklBRWdCR3BCSVVseFJRUkFJQWNnQlVHR2hRa1FGQ0lESUFnUVhTQURFQThhSUFjdEFBUkZEUUpCSUVFZ0lBUWdCRUVnVHhzaUJHc2lBeUFCSUFFZ0Ewc2JJUUVMQWtBZ0FVVU5BQ0FCUVNCR0JFQWdCaUVCREFFTFFRQWdCa0YvSUFGMFFYOXpJQVIwSWdaeElBUjJJZ01nQVVFQmEzWkJBWEZySUFZZ0JIWkJmM054SUFOeUlRRUxJQVVnQnlBQ0lBSW9BZ0FvQWdnUkFBQWdBUkN4QVF3REN5QUJRYUN6RWtZRVFDQUNFRmtoQmlBREtBSUFLQUlBS0FJRUVGa2lCRUVnU3lBREtBSUFLQUlBS0FJSUVGa2lBVUVnUzNKRklBRWdCR3BCSVVseFJRUkFJQWNnQlVHR2hRa1FGQ0lESUFnUVhTQURFQThhSUFjdEFBUkZEUU5CSUVFZ0lBUWdCRUVnVHhzaUJHc2lBeUFCSUFFZ0Ewc2JJUUVMQWtBZ0FVVU5BQ0FCUVNCR0JFQWdCaUVCREFFTFFYOGdBWFJCZjNNZ0JIUWdCbkVnQkhZaEFRc2dCU0FISUFJZ0FpZ0NBQ2dDQ0JFQUFDQUJFSzBCREFNTElBQkJBRG9BQkF3REN5QUZRUUk2QUFRTUFRc2dCVUVDT2dBRUN5QUFJQVVwQXdBM0FnQUxJQVZCRUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRaWhJTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoQ0pFaUFJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDNFVKQkFWL0JYd0NmZ0o5SXdCQk1Hc2lBeVFBSUFFb0FnUWhCU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJFVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBUW9BZ1FpQkVId254SkdCRUFDZkNBQ0VEd2lDeUlJRU1ZRVFmOFBjU0lFUkFBQUFBQUFBSkE4RU1ZRUlnWnJJZ2RFQUFBQUFBQUFnRUFReGdRZ0JtdFBCRUFnQ0VRQUFBQUFBQUR3UDZBZ0IwRUFTQTBCR2lBSXZTRU5Ba0JFQUFBQUFBQUFrRUFReGdRZ0JFc05BRVFBQUFBQUFBQUFBQ0FOUW9DQWdJQ0FnSUI0VVEwQ0dpQUlSQUFBQUFBQUFQQS9vRVFBQUFBQUFBRHdmeERHQkNBRVRRMENHaUFOUWdCWkJFQkVBQUFBQUFBQUFIQVFuUW9NQXdzZ0RVS0FnSUNBZ0lDenlFQlVEUUJFQUFBQUFBQUFBQkFRblFvTUFnc2dCRUVBSUExQ0FZWkNnSUNBZ0lDQWdJMkJmMWdiSVFRTElBaEJ1TXdOS3dNQUlna2dDS0FpQ2lBSm9hRWlDQ0FJb2lJSklBbWlJQWhCNE13Tkt3TUFva0hZekEwckF3Q2dvaUFKSUFoQjBNd05Ld01Bb2tISXpBMHJBd0Nnb2lBSVFjRE1EU3NEQUtJZ0NyMGlEcWRCQkhSQjhBOXhJZ1pCNk13TmFpc0RBS0Nnb0NFSUlBWkI4TXdOYWlrREFDQU9RaTJHZkNFTklBUkZCRUFDZkNBT1FvQ0FnSUFJZzFBRVFDQU5Rb0NBZ0lDQWdJQUlmYjhpQ1NBSW9pQUpvQ0lJSUFpZ0RBRUxJQTFDZ0lDQWdJQ0FnUEEvZkw4aUNTQUlvaUlLSUFtZ0lnaEVBQUFBQUFBQThEOWpCSHdRckJWRUFBQUFBQUFBRUFDaUVLc1ZSQUFBQUFBQUFBQUFJQWhFQUFBQUFBQUE4RCtnSWd3Z0NpQUpJQWlob0NBSVJBQUFBQUFBQVBBL0lBeWhvS0NnUkFBQUFBQUFBUEMvb0NJSUlBaEVBQUFBQUFBQUFBQmhHd1VnQ0F0RUFBQUFBQUFBRUFDaUN3d0JDeUFOdnlJSklBaWlJQW1nQ3lJSVJBQUFBQUFBQVBCL1kwVUVRQ0FEUVFFMkFod2dBMEhjaFFjMkFoZ2dBeUFES1FNWU53TUFJQU5CSUdvaUJDQURJQXNRcHhFZ0FTQUVJQVVRWFNBRUVBOGFJQUV0QUFRRVFDQUJJQUlnQWlnQ0FDZ0NDQkVBQUJDUkFTRUJJQU5CQVRvQUpDQURJQUUyQWlBTUF3c2dBMEVDT2dBa0RBSUxJQU5CSUdvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBSUVITU1BUXNnQkVHd3FSSkdCRUFnQWhBMElnOFFxUlVpRUVNQUFJQi9YVVVFUUNBRFFRRTJBaHdnQTBIY2hRYzJBaGdnQXlBREtRTVlOd01JSUFOQklHb2lCQ0FEUVFocUlBOFFwaEVnQVNBRUlBVVFYU0FFRUE4YUlBRXRBQVFFUUNBQklBSWdBaWdDQUNnQ0NCRUFBQkNSQVNFQklBTkJBVG9BSkNBRElBRTJBaUFNQXdzZ0EwRUNPZ0FrREFJTElBTkJJR29nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FRRUdzTUFRc2dCRUhRcUJKSERRRWdBaEEvSWc4UXFSVVFSaUlRaTBNQUFJQi9YVVVFUUNBRFFRRTJBaHdnQTBIY2hRYzJBaGdnQXlBREtRTVlOd01RSUFOQklHb2lCQ0FEUVJCcUlBOFFwUkVnQVNBRUlBVVFYU0FFRUE4YUlBRXRBQVFFUUNBQklBSWdBaWdDQUNnQ0NCRUFBQkNSQVNFQklBTkJBVG9BSkNBRElBRTJBaUFNQWdzZ0EwRUNPZ0FrREFFTElBTkJJR29nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FRRUhJTElBQWdBeWtESURjQ0FBd0JDeUFBUVFBNkFBUUxJQU5CTUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRakJJTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoQ0xFaUFJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDOXdFQXdOL0FuMENmQ01BUVRCcklnTWtBQ0FCS0FJRUlRVWdBU2dDQUNFQkFrQWdBaUFDS0FJQUtBSUlFUUFBSWdSRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBRUtBSUVJZ1JCOEo4U1JnUkFJQUlRUENJSUVMb05JZ2xFQUFBQUFBQUE4SDlqUlFSQUlBTkJBVFlDSENBRFFaTGdCRFlDR0NBRElBTXBBeGczQXdBZ0EwRWdhaUlFSUFNZ0NCQ25FU0FCSUFRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FrSUFNZ0FUWUNJQXdEQ3lBRFFRSTZBQ1FNQWdzZ0EwRWdhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWtRY3d3QkN5QUVRYkNwRWtZRVFDQUNFRFFpQmhDZUNpSUhRd0FBZ0g5ZFJRUkFJQU5CQVRZQ0hDQURRWkxnQkRZQ0dDQURJQU1wQXhnM0F3Z2dBMEVnYWlJRUlBTkJDR29nQmhDbUVTQUJJQVFnQlJCZElBUVFEeG9nQVMwQUJBUkFJQUVnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQTBFQk9nQWtJQU1nQVRZQ0lBd0RDeUFEUVFJNkFDUU1BZ3NnQTBFZ2FpQUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBY1Fhd3dCQ3lBRVFkQ29Fa2NOQVNBQ0VEOGlCaENlQ2hCR0lnZUxRd0FBZ0g5ZFJRUkFJQU5CQVRZQ0hDQURRWkxnQkRZQ0dDQURJQU1wQXhnM0F4QWdBMEVnYWlJRUlBTkJFR29nQmhDbEVTQUJJQVFnQlJCZElBUVFEeG9nQVMwQUJBUkFJQUVnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQTBFQk9nQWtJQU1nQVRZQ0lBd0NDeUFEUVFJNkFDUU1BUXNnQTBFZ2FpQUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBY1FjZ3NnQUNBREtRTWdOd0lBREFFTElBQkJBRG9BQkFzZ0EwRXdhaVFBQ3pjQkFuOGpBRUVRYXlJQ0pBQWdBU2dDQUNBQ1FkcldCQkFVSWdNZ0FTZ0NCQkQ4QVNBREVBOGFJQUJCQWpvQUJDQUNRUkJxSkFBTHNnSUJCWDhqQUVIUUFHc2lCaVFBSUFaQkFEWUNUQUpBSUFVb0FnQWlCeUFIS0FJQUtBSUlFUUFBSWdjZ0JrSE1BR29RSWlBSFJnUkFJQUFnQXlBRktBSUFFSThTREFFTElBWkNnSUNBZ0lBQk53SkVJQVlnQmtFZ2FpSUhOZ0pBSUFjZ0JpZ0NUQkE1SUFaQlFHc2hDVUVBSVFjQ1FBSkFBMEFnQnlBR0tBSk1UdzBCSUFKQkFCQWlJUW9nQmlBRktBSUFJZ2dnQnlBSUtBSUFLQUlNRVFFQU5nSVVJQVpCR0dvaUNDQUJJQW9nQXlBRUlBZHFJQVpCRkdvUWpoSWdDQkFyQkVBZ0JrRWdhaUFHUVJocUVCb1FKQ0FIUVFGcUlRY01BUXNMSUFaQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFZZ0NUWUNDQ0FHSUFZb0FrQWdCa0VnYWtjNkFBd2dBU0FDSUFaQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVpCSUdvUUl3c2dCa0hRQUdva0FBc3FBQ0FBSUFFZ0FrR3h2UUZEMnc5SlFFTUFBRFJEUWVEZGxKTUVRdmlEajlQQnU2bW13QUFRaFJNTFhnRUVmeU1BUVJCcklnWWtBQ0FHUVFocUlnY2dBU2dDQUNJSUlBRkJCR29pQ1NBQ0lBTWdCQ0FGRU1vSkFrQWdCeEFyQkVBZ0FDQUlJQWtnQVNnQ0dDQUdRUWhxRUJvcUFnQVFjZ3dCQ3lBQVFRSTZBQVFMSUFaQkVHb2tBQXRlQVFSL0l3QkJFR3NpQmlRQUlBWkJDR29pQnlBQktBSUFJZ2dnQVVFRWFpSUpJQUlnQXlBRUlBVVF5d2tDUUNBSEVDc0VRQ0FBSUFnZ0NTQUJLQUlZSUFaQkNHb1FHaW9DQUJCckRBRUxJQUJCQWpvQUJBc2dCa0VRYWlRQUMxY0JBMzhqQUVFUWF5SUdKQUFnQmlBQktBSUFJZ2NnQVVFRWFpSUlJQUlnQXlBRUlBVVF6QWtDUUNBR0VMSUJCRUFnQUNBSElBZ2dBU2dDR0NBR0VFb3JBd0FRY3d3QkN5QUFRUUk2QUFRTElBWkJFR29rQUF1eUFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQVFsQklNQVFzZ0JrS0FnSUNBZ0FFM0FrUWdCaUFHUVNCcUlnYzJBa0FnQnlBR0tBSk1FRGtnQmtGQWF5RUpRUUFoQndKQUFrQURRQ0FISUFZb0FreFBEUUVnQWtFQUVDSWhDaUFHSUFVb0FnQWlDQ0FISUFnb0FnQW9BZ3dSQVFBMkFoUWdCa0VZYWlJSUlBRWdDaUFESUFRZ0Iyb2dCa0VVYWhDVEVpQUlFQ3NFUUNBR1FTQnFJQVpCR0dvUUdoQWtJQWRCQVdvaEJ3d0JDd3NnQmtFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQmlBSk5nSUlJQVlnQmlnQ1FDQUdRU0JxUnpvQURDQUJJQUlnQmtFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCa0VnYWhBakN5QUdRZEFBYWlRQUM3Z0JBUU4vSXdCQkVHc2lCQ1FBSUFFb0FnUWhCU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUEwVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBTW9BZ1FpQTBHUXFoSkdCRUFnQWhCaEVNWUpJUU1nQkVFSWFpQUJJQUlnQWlnQ0FDZ0NDQkVBQUNBREVMRUJEQUVMSUFOQm9MTVNSdzBCSUFJUVdSREdDU0VESUFSQkNHb2dBU0FDSUFJb0FnQW9BZ2dSQUFBZ0F4Q3RBUXNnQUNBRUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JFRVFhaVFBQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCQ1dFZ3dCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRUpVU0lBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTDZBRUJCSDhqQUVFUWF5SUVKQUFnQVNnQ0JDRUZJQUVvQWdBaEJnSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJQlJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0FTZ0NCQ0lCUVpDcUVrWUVRQ0FDRUdFaEFRTkFJQUVFUUNBQlFRRnhJQU5xSVFNZ0FVRUJkaUVCREFFTEN5QUVRUWhxSUFZZ0FpQUNLQUlBS0FJSUVRQUFJQU1Rc1FFTUFRc2dBVUdnc3hKSERRRWdBaEJaSVFFRFFDQUJCRUFnQVVFQmNTQURhaUVESUFGQkFYWWhBUXdCQ3dzZ0JFRUlhaUFHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQURFSzBCQ3lBQUlBUXBBd2czQWdBTUFRc2dBRUVBT2dBRUN5QUVRUkJxSkFBTHNnSUJCWDhqQUVIUUFHc2lCaVFBSUFaQkFEWUNUQUpBSUFVb0FnQWlCeUFIS0FJQUtBSUlFUUFBSWdjZ0JrSE1BR29RSWlBSFJnUkFJQUFnQXlBRktBSUFFSmdTREFFTElBWkNnSUNBZ0lBQk53SkVJQVlnQmtFZ2FpSUhOZ0pBSUFjZ0JpZ0NUQkE1SUFaQlFHc2hDVUVBSVFjQ1FBSkFBMEFnQnlBR0tBSk1UdzBCSUFKQkFCQWlJUW9nQmlBRktBSUFJZ2dnQnlBSUtBSUFLQUlNRVFFQU5nSVVJQVpCR0dvaUNDQUJJQW9nQXlBRUlBZHFJQVpCRkdvUWx4SWdDQkFyQkVBZ0JrRWdhaUFHUVJocUVCb1FKQ0FIUVFGcUlRY01BUXNMSUFaQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFZZ0NUWUNDQ0FHSUFZb0FrQWdCa0VnYWtjNkFBd2dBU0FDSUFaQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVpCSUdvUUl3c2dCa0hRQUdva0FBdmRBUUVFZnlNQVFSQnJJZ01rQUNBQktBSUVJUVVnQVNnQ0FDRUdBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnRkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUJLQUlFSWdGQmtLb1NSZ1JBSUFJUVlTRUVRUUFoQVFOQUlBUkJBRWdnQVVFZlMzSkZCRUFnQkVFQmRDRUVJQUZCQVdvaEFRd0JDd3NnQTBFSWFpQUdJQUlnQWlnQ0FDZ0NDQkVBQUNBQkVMRUJEQUVMSUFGQm9MTVNSdzBCSUFJUVdVRUFFS3dNSVFFZ0EwRUlhaUFHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUJFSzBCQ3lBQUlBTXBBd2czQWdBTUFRc2dBRUVBT2dBRUN5QURRUkJxSkFBTHNnSUJCWDhqQUVIUUFHc2lCaVFBSUFaQkFEWUNUQUpBSUFVb0FnQWlCeUFIS0FJQUtBSUlFUUFBSWdjZ0JrSE1BR29RSWlBSFJnUkFJQUFnQXlBRktBSUFFSm9TREFFTElBWkNnSUNBZ0lBQk53SkVJQVlnQmtFZ2FpSUhOZ0pBSUFjZ0JpZ0NUQkE1SUFaQlFHc2hDVUVBSVFjQ1FBSkFBMEFnQnlBR0tBSk1UdzBCSUFKQkFCQWlJUW9nQmlBRktBSUFJZ2dnQnlBSUtBSUFLQUlNRVFFQU5nSVVJQVpCR0dvaUNDQUJJQW9nQXlBRUlBZHFJQVpCRkdvUW1SSWdDQkFyQkVBZ0JrRWdhaUFHUVJocUVCb1FKQ0FIUVFGcUlRY01BUXNMSUFaQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFZZ0NUWUNDQ0FHSUFZb0FrQWdCa0VnYWtjNkFBd2dBU0FDSUFaQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVpCSUdvUUl3c2dCa0hRQUdva0FBdVBBd1FCZkFOL0FYMEJmaU1BUVJCcklnUWtBQ0FCS0FJRUlRWWdBU2dDQUNFQkFrQWdBaUFDS0FJQUtBSUlFUUFBSWdWRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBRktBSUVJZ1ZCOEo4U1JnUkFJQUlRUENFRElBUkJDR29nQVNBR0lBSWdBaWdDQUNnQ0NCRUFBQUo4SUFPOVF2Ly8vLy8vLy8vLy93Q0RJZ2kvSVFNQ2ZDQUlRaUNJcHlJQlFjSGNtUDhEVFFSQVJBQUFBQUFBQVBBL0lBRkJnSURBOGdOSkRRRWFJQU1RbndnaUF5QURvaUFEUkFBQUFBQUFBUEEvb0NJRElBT2dvMFFBQUFBQUFBRHdQNkFNQWdzZ0FVSEIzSmlFQkUwRVFDQURFTG9OSWdORUFBQUFBQUFBOEQ4Z0E2T2dSQUFBQUFBQUFPQS9vZ3dDQ3lBRFJBQUFBQUFBQVBBL0VKSVZDd3NRY3d3QkN5QUZRYkNwRWtZRVFDQUNFRFFoQnlBRVFRaHFJQUVnQmlBQ0lBSW9BZ0FvQWdnUkFBQWdCeENRRlJCckRBRUxJQVZCMEtnU1J3MEJJQUlRUHlFSElBUkJDR29nQVNBR0lBSWdBaWdDQUNnQ0NCRUFBQ0FIRUpBVkVFWVFjZ3NnQUNBRUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JFRVFhaVFBQ3pzQkFuOGpBRUVRYXlJQ0pBQWdBa0VJYWlJRElBQVFmaUFERU1NQ0lnQWdBU0FBS0FJQUtBSWNFUUVBSVFBZ0F4QmtJQUpCRUdva0FDQUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJDZEVnd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFSndTSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMdFFNREFYd0Zmd0Y5SXdCQkVHc2lCQ1FBSUFFb0FnUWhCaUFCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJVVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBVW9BZ1FpQlVId254SkdCRUFnQWhBOElRTWdCRUVJYWlBQklBWWhDQ0FDSUFJb0FnQW9BZ2dSQUFBaEJ5TUFRUkJySWdFa0FBSjhJQU85UWlDSXAwSC8vLy8vQjNFaUFrSDd3NlQvQTAwRVFFUUFBQUFBQUFEd1B5QUNRWjdCbXZJRFNRMEJHaUFEUkFBQUFBQUFBQUFBRUtFSURBRUxJQU1nQTZFZ0FrR0FnTUQvQjA4TkFCb0NRQUpBQWtBQ1FDQURJQUVRcmcxQkEzRU9Bd0FCQWdNTElBRXJBd0FnQVNzRENCQ2hDQXdEQ3lBQkt3TUFJQUVyQXdoQkFSQ2dDSm9NQWdzZ0FTc0RBQ0FCS3dNSUVLRUltZ3dCQ3lBQkt3TUFJQUVyQXdoQkFSQ2dDQXNoQXlBQlFSQnFKQUFnQ0NBSElBTVFjd3dCQ3lBRlFiQ3BFa1lFUUNBQ0VEUWhDU0FFUVFocUlBRWdCaUFDSUFJb0FnQW9BZ2dSQUFBZ0NSQ1RGUkJyREFFTElBVkIwS2dTUncwQklBSVFQeUVKSUFSQkNHb2dBU0FHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUpFSk1WRUVZUWNnc2dBQ0FFS1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQkVFUWFpUUFDL1VDQVFWL0l3QkIwQUJySWdna0FDQUlRUUEyQWt3Q1FDQUZLQUlBSWdrZ0NTZ0NBQ2dDQ0JFQUFDSUpJQWhCekFCcUVDSWdDVVlFUUNBQUlBTWdCU2dDQUNBR0tBSUFJQWNvQWdBUW54SU1BUXNnQ0VLQWdJQ0FnQUUzQWtRZ0NDQUlRU0JxSWdrMkFrQWdDU0FJS0FKTUVEa2dDRUZBYXlFTFFRQWhDUUpBQWtBRFFDQUpJQWdvQWt4UERRRWdBa0VBRUNJaERDQUlJQVVvQWdBaUNpQUpJQW9vQWdBb0Fnd1JBUUEyQWhRZ0NDQUdLQUlBSWdvZ0NTQUtLQUlBS0FJTUVRRUFOZ0lRSUFnZ0J5Z0NBQ0lLSUFrZ0NpZ0NBQ2dDREJFQkFEWUNEQ0FJUVJocUlnb2dBU0FNSUFNZ0JDQUphaUFJUVJScUlBaEJFR29nQ0VFTWFoQ2VFaUFLRUNzRVFDQUlRU0JxSUFoQkdHb1FHaEFrSUFsQkFXb2hDUXdCQ3dzZ0NFRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0NDQUxOZ0lBSUFnZ0NDZ0NRQ0FJUVNCcVJ6b0FCQ0FCSUFJZ0NCQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dDRUVnYWhBakN5QUlRZEFBYWlRQUM1WUdCQVIvQTMwRGZnTjhJd0JCUUdvaUJTUUFJQUVvQWdBaEJ5QUJLQUlFSVFZZ0FpQUNLQUlBS0FJSUVRQUFJUUVnQlNBSE5nSUlJQVVnQmlrQ0NEY0NGQ0FGSUFZb0FoQTJBaHdnQlNBR0tRSUFOd0lNSUFVZ0FUWUNJQUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUlSUVJBSUFCQkFEb0FCQXdCQ3lBRlFRaHFRUVJ5SVFZQ1FBSkFJQWdvQWdRaUNFSFFvQkpHQkVBZ0FoQmpJUXdnQXhCaklRMGdCQkJqSVE0Z0JVRUJPZ0E0SUFVZ0RDQU5JQXdnRFZVYklnd2dEaUFNSUE1VEd6Y0RNQ0FGUVRCcUVMSUJCRUFnQlVFb2FpQUhJQUVnQlVFd2FoQktLUU1BRVAwQkRBSUxJQVZCQWpvQUxBd0JDeUFJUWZDZkVrWUVRQ0FDRUR3aER5QURFRHdoRUNBRUVEd2hFU0FGUVFFNkFEZ2dCU0FSSUJBZ0R5QVBJQkJqR3lJUElBOGdFV1FiT1FNd0lBVkJNR29Rc2dFRVFDQUZRU2hxSUFjZ0JpQUJJQVZCTUdvUVNpc0RBQkJ6REFJTElBVkJBam9BTEF3QkN5QUlRYkNwRWtZRVFDQUNFRFFoQ1NBREVEUWhDaUFFRURRaEN5QUZRUUU2QURRZ0JTQUxJQW9nQ1NBSklBcGRHeUlKSUFrZ0MxNGJPQUl3SUFWQk1Hb1FLd1JBSUFWQktHb2dCeUFHSUFFZ0JVRXdhaEFhS2dJQUVHc01BZ3NnQlVFQ09nQXNEQUVMSUFoQmtLb1NSZ1JBSUFJUVlTRUNJQU1RWVNFRElBUVFZU0VFSUFWQkFUb0FOQ0FGSUFJZ0F5QUNJQU5LR3lJQ0lBUWdBaUFFU0JzMkFqQWdCVUV3YWhBckJFQWdCVUVvYWlBSElBRWdCVUV3YWhBYUtBSUFFTEVCREFJTElBVkJBam9BTEF3QkN5QUlRYUN6RWtZRVFDQUNFRmtoQWlBREVGa2hBeUFFRUZraEJDQUZRUUU2QURRZ0JTQUNJQU1nQWlBRFN4c2lBaUFFSUFJZ0JFa2JOZ0l3SUFWQk1Hb1FLd1JBSUFWQktHb2dCeUFCSUFWQk1Hb1FHaWdDQUJDdEFRd0NDeUFGUVFJNkFDd01BUXNnQ0VIUXFCSkhEUUVnQWhBL0lRa2dBeEEvSVFvZ0JCQS9JUXNnQlVFQk9nQTBJQVVnQ3lBS0lBa2dDU0FLWFJzaUNTQUpJQXRlR3pnQ01DQUZRVEJxRUNzRVFDQUZRU2hxSUFjZ0JpQUJJQVZCTUdvUUdpb0NBQkJ5REFFTElBVkJBam9BTEFzZ0FDQUZLUU1vTndJQURBRUxJQUJCQURvQUJBc2dCVUZBYXlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkNoRWd3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVLQVNJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUw2UUVEQTM4QmZRRjhJd0JCRUdzaUF5UUFJQUVvQWdRaEJTQUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQkVVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFRb0FnUWlCRUh3bnhKR0JFQWdBaEE4SVFjZ0EwRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWViRUhNTUFRc2dCRUd3cVJKR0JFQWdBaEEwSVFZZ0EwRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWFORUdzTUFRc2dCRUhRcUJKSERRRWdBaEEvSVFZZ0EwRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWFORUVZUWNnc2dBQ0FES1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQTBFUWFpUUFDOVVDQVFWL0l3QkIwQUJySWdja0FDQUhRUUEyQWt3Q1FDQUZLQUlBSWdnZ0NDZ0NBQ2dDQ0JFQUFDSUlJQWRCekFCcUVDSWdDRVlFUUNBQUlBTWdCU2dDQUNBR0tBSUFFS01TREFFTElBZENnSUNBZ0lBQk53SkVJQWNnQjBFZ2FpSUlOZ0pBSUFnZ0J5Z0NUQkE1SUFkQlFHc2hDa0VBSVFnQ1FBSkFBMEFnQ0NBSEtBSk1UdzBCSUFKQkFCQWlJUXNnQnlBRktBSUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSVVJQWNnQmlnQ0FDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ0VDQUhRUmhxSWdrZ0FTQUxJQU1nQkNBSWFpQUhRUlJxSUFkQkVHb1FvaElnQ1JBckJFQWdCMEVnYWlBSFFSaHFFQm9RSkNBSVFRRnFJUWdNQVFzTElBZEJHR29RUFJvZ0FFRUNPZ0FFREFFTElBY2dDallDQ0NBSElBY29Ba0FnQjBFZ2FrYzZBQXdnQVNBQ0lBZEJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFkQklHb1FJd3NnQjBIUUFHb2tBQXVyQlFRQ2ZBTi9BWDRDZlNNQVFSQnJJZ2NrQUNBQktBSUVJUWdnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnWkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUdLQUlFSWdaQjhKOFNSZ1JBSUFJUVBDRUVJQU1RUENFRklBZEJDR29nQVNBSUlBSWdBaWdDQUNnQ0NCRUFBQUo4SUFRZ0JhQWdCTDFDLy8vLy8vLy8vLy8vQUlOQ2dZQ0FnSUNBZ1BqL0FGUWdCYjFDLy8vLy8vLy8vLy8vQUlOQ2dJQ0FnSUNBZ1BqL0FGaHhSUTBBR2lBRnZTSUpRaUNJcHlJRFFZQ0F3UDhEYXlBSnB5SUlja1VFUUNBRUVLOE5EQUVMSUFOQkhuWkJBbkVpQmlBRXZTSUpRaitJcDNJaEFRSkFJQWxDSUlpblFmLy8vLzhIY1NJQ0lBbW5ja1VFUUFKQUFrQWdBVUVDYXc0Q0FBRURDMFFZTFVSVSt5RUpRQXdEQzBRWUxVUlUreUVKd0F3Q0MwUVlMVVJVK3lINVB5QUVwaUFEUWYvLy8vOEhjU0lESUFoeVJRMEJHZ0pBSUFOQmdJREEvd2RHQkVBZ0FrR0FnTUQvQjBjTkFTQUJRUU4wUWZEaERXb3JBd0FNQXd0RUdDMUVWUHNoK1Q4Z0JLWWdBa0dBZ01EL0IwY2dBMEdBZ0lBZ2FpQUNUM0ZGRFFJYUFud2dCZ1JBUkFBQUFBQUFBQUFBSUFKQmdJQ0FJR29nQTBrTkFSb0xJQVFnQmFPWkVLOE5DeUVFQWtBQ1FBSkFJQUVPQXdRQUFRSUxJQVNhREFRTFJCZ3RSRlQ3SVFsQUlBUkVCMXdVTXlhbW9ieWdvUXdEQ3lBRVJBZGNGRE1tcHFHOG9FUVlMVVJVK3lFSndLQU1BZ3NnQVVFRGRFR1E0ZzFxS3dNQUlRUUxJQVFMRUhNTUFRc2dCa0d3cVJKR0JFQWdBaEEwSVFvZ0F4QTBJUXNnQjBFSWFpQUJJQWdnQWlBQ0tBSUFLQUlJRVFBQUlBb2dDeENYRlJCckRBRUxJQVpCMEtnU1J3MEJJQUlRUHlFS0lBTVFQeUVMSUFkQkNHb2dBU0FJSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUtJQXNRbHhVUVJoQnlDeUFBSUFjcEF3ZzNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBSFFSQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVLVVNEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29RcEJJZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF1U0JRUUZmd0o4QVgwQmZpTUFRUkJySWdNa0FDQUJLQUlFSVFVZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ1JGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FFS0FJRUlnUkI4SjhTUmdSQUlBSVFQQ0lJUkFBQUFBQUFBUEMvWlNBSVJBQUFBQUFBQVBBL1puSUVRQ0FCSUFOQjlMWUlFQlFpQkNBRkVGMGdCQkFQR2lBQkxRQUVCRUFnQVNBQ0lBSW9BZ0FvQWdnUkFBQVFrUUVoQVNBRFFRRTZBQVFnQXlBQk5nSUFEQU1MSUFOQkFqb0FCQXdDQ3lBRElBRWdCU0VISUFJZ0FpZ0NBQ2dDQ0JFQUFDRUdJQWk5SWd0Qy8vLy8vLy8vLy8vL0FJTy9JUWdDUUFKOElBdENOSWluUWY4UGNTSUJRZjBIVFFSQUlBRkIzd2RKRFFJZ0NDQUlvQ0lKSUFrZ0NLSkVBQUFBQUFBQThEOGdDS0dqb0F3QkN5QUlSQUFBQUFBQUFQQS9JQWlob3lJSUlBaWdDeEN4RFVRQUFBQUFBQURnUDZJaENBc2dCeUFHSUFpYUlBZ2dDMElBVXhzUWN3d0JDeUFFUWJDcEVrWUVRQ0FDRURRaUNrTUFBSUMvWHlBS1F3QUFnRDlnY2dSQUlBRWdBMEgwdGdnUUZDSUVJQVVRWFNBRUVBOGFJQUV0QUFRRVFDQUJJQUlnQWlnQ0FDZ0NDQkVBQUJDUkFTRUJJQU5CQVRvQUJDQURJQUUyQWdBTUF3c2dBMEVDT2dBRURBSUxJQU1nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FLRUpZVkVHc01BUXNnQkVIUXFCSkhEUUVnQWhBL0lRb0NRRU1BQUlDL0VFWWdDbUJGQkVCREFBQ0FQeEJHSUFwZlJRMEJDeUFCSUFOQjlMWUlFQlFpQkNBRkVGMGdCQkFQR2lBQkxRQUVCRUFnQVNBQ0lBSW9BZ0FvQWdnUkFBQVFrUUVoQVNBRFFRRTZBQVFnQXlBQk5nSUFEQUlMSUFOQkFqb0FCQXdCQ3lBRElBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0NoQ1dGUkJHRUhJTElBQWdBeWtEQURjQ0FBd0JDeUFBUVFBNkFBUUxJQU5CRUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRcHhJTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoQ21FaUFJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDKzhCQXdOL0FYMEJmQ01BUVJCcklnTWtBQ0FCS0FJRUlRVWdBU2dDQUNFQkFrQWdBaUFDS0FJQUtBSUlFUUFBSWdSRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBRUtBSUVJZ1JCOEo4U1JnUkFJQUlRUENFSElBTkJDR29nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FIRUs4TkVITU1BUXNnQkVHd3FSSkdCRUFnQWhBMElRWWdBMEVJYWlBQklBVWdBaUFDS0FJQUtBSUlFUUFBSUFZUW53b1Fhd3dCQ3lBRVFkQ29Fa2NOQVNBQ0VEOGhCaUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0JoQ2ZDaEJHRUhJTElBQWdBeWtEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQU5CRUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRcVJJTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoQ29FaUFJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDNTREQkFKOEJYOEJmUUYrSXdCQkVHc2lCU1FBSUFFb0FnUWhCeUFCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJrVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBWW9BZ1FpQmtId254SkdCRUFnQWhBOElRTWdCVUVJYWlBQklBY2hDU0FDSUFJb0FnQW9BZ2dSQUFBaENDQUR2U0lMUXYvLy8vLy8vLy8vL3dDRHZ5RURBa0FnQzBJMGlLZEIvdzl4SWdGQm1RaFBCRUFnQXhDbUNFVHZPZnIrUWk3bVA2QWhBd3dCQ3lBQlFZQUlUd1JBSUFNZ0E2QkVBQUFBQUFBQThEOGdBeUFEb2tRQUFBQUFBQUR3UDZDZklBT2dvNkFRcGdnaEF3d0JDeUFCUWVVSFNRMEFJQU1nQTZJaUJDQUVSQUFBQUFBQUFQQS9vSjlFQUFBQUFBQUE4RCtnb3lBRG9CQ3hEU0VEQ3lBSklBZ2dBNW9nQXlBTFFnQlRHeEJ6REFFTElBWkJzS2tTUmdSQUlBSVFOQ0VLSUFWQkNHb2dBU0FISUFJZ0FpZ0NBQ2dDQ0JFQUFDQUtFSmtWRUdzTUFRc2dCa0hRcUJKSERRRWdBaEEvSVFvZ0JVRUlhaUFCSUFjZ0FpQUNLQUlBS0FJSUVRQUFJQW9RbVJVUVJoQnlDeUFBSUFVcEF3ZzNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBRlFSQnFKQUFMV2dFRGZ5QUJJQUFvQWdoTEJFQWdBQ2dDQUNFQ0lBQWdBUkRDRFNBQUtBSUVJUU5CQUNFQkEwQWdBU0FEUmdSQUlBSVFpQVFGSUFGQkFuUWlCQ0FBS0FJQWFpQUNJQVJxS0FJQU5nSUFJQUZCQVdvaEFRd0JDd3NMQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCQ3NFZ3dCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRUtzU0lBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTHdBWUVCSHdEZndGOUFYNGpBRUVRYXlJSEpBQWdBU2dDQkNFSklBRW9BZ0FoQVFKQUlBSWdBaWdDQUNnQ0NCRUFBQ0lJUlFSQUlBQkJBRG9BQkF3QkN3SkFBa0FnQ0NnQ0JDSUlRZkNmRWtZRVFDQUNFRHdpQTBRQUFBQUFBQUR3djJNZ0EwUUFBQUFBQUFEd1AyUnlCRUFnQVNBSFFmMjNDQkFVSWdnZ0NSQmRJQWdRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0IwRUJPZ0FFSUFjZ0FUWUNBQXdEQ3lBSFFRSTZBQVFNQWdzZ0J5QUJJQWtnQWlBQ0tBSUFLQUlJRVFBQUFud2dBNzBpQzBJZ2lLZEIvLy8vL3dkeElnRkJnSURBL3dOUEJFQWdBMFFZTFVSVSt5SDVQNkpFQUFBQUFBQUFjRGlnSUF1bklBRkJnSURBL3dOcmNrVU5BUnBFQUFBQUFBQUFBQUFnQXlBRG9hTU1BUXNDUUNBQlFmLy8vLzREVFFSQUlBRkJnSUJBYWtHQWdJRHlBMGtOQVNBRElBTWdBNklRb3dpaUlBT2dEQUlMUkFBQUFBQUFBUEEvSUFPWm9VUUFBQUFBQUFEZ1A2SWlCWjhoQXlBRkVLTUlJUVlDZkNBQlFiUG12UDhEVHdSQVJCZ3RSRlQ3SWZrL0lBTWdCcUlnQTZBaUF5QURvRVFIWEJRekpxYVJ2S0NoREFFTFJCZ3RSRlQ3SWVrL0lBTzlRb0NBZ0lCd2c3OGlCQ0FFb0tFZ0F5QURvQ0FHb2tRSFhCUXpKcWFSUENBRklBUWdCS0toSUFNZ0JLQ2pJZ01nQTZDaG9hRkVHQzFFVlBzaDZUK2dDeUlEbWlBRElBdENBRk1iSVFNTElBTUxFSE1NQVFzZ0NFR3dxUkpHQkVBZ0FoQTBJZ3BEQUFDQXYxMGdDa01BQUlBL1huSUVRQ0FCSUFkQi9iY0lFQlFpQ0NBSkVGMGdDQkFQR2lBQkxRQUVCRUFnQVNBQ0lBSW9BZ0FvQWdnUkFBQVFrUUVoQVNBSFFRRTZBQVFnQnlBQk5nSUFEQU1MSUFkQkFqb0FCQXdDQ3lBSElBRWdDU0FDSUFJb0FnQW9BZ2dSQUFBZ0NoQ2FGUkJyREFFTElBaEIwS2dTUncwQklBSVFQeUVLQWtCREFBQ0F2eEJHSUFwZVJRUkFRd0FBZ0Q4UVJpQUtYVVVOQVFzZ0FTQUhRZjIzQ0JBVUlnZ2dDUkJkSUFnUUR4b2dBUzBBQkFSQUlBRWdBaUFDS0FJQUtBSUlFUUFBRUpFQklRRWdCMEVCT2dBRUlBY2dBVFlDQUF3Q0N5QUhRUUk2QUFRTUFRc2dCeUFCSUFrZ0FpQUNLQUlBS0FJSUVRQUFJQW9RbWhVUVJoQnlDeUFBSUFjcEF3QTNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBSFFSQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVLNFNEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29RclJJZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF2WkJBTURmd0Y4QVgwakFFRVFheUlESkFBZ0FTZ0NCQ0VGSUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUVSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCQ2dDQkNJRVFmQ2ZFa1lFUUNBQ0VEd2lCa1FBQUFBQUFBRHdQMk1FUUNBQklBTkJ2b3dIRUJRaUJDQUZFRjBnQkJBUEdpQUJMUUFFQkVBZ0FTQUNJQUlvQWdBb0FnZ1JBQUFRa1FFaEFTQURRUUU2QUFRZ0F5QUJOZ0lBREFNTElBTkJBam9BQkF3Q0N5QURJQUVnQlNBQ0lBSW9BZ0FvQWdnUkFBQUNmQ0FHdlVJMGlLZEIvdzl4SWdGQi93ZE5CRUFnQmtRQUFBQUFBQUR3djZBaUJpQUdJQWFpSUFZZ0JxQ2duNkFRc1EwTUFRc2dBVUdZQ0UwRVFDQUdJQWFnUkFBQUFBQUFBUEMvSUFZZ0JxSkVBQUFBQUFBQThMK2dueUFHb0tPZ0VLWUlEQUVMSUFZUXBnaEU3em42L2tJdTVqK2dDeEJ6REFFTElBUkJzS2tTUmdSQUlBSVFOQ0lIUXdBQWdEOWRCRUFnQVNBRFFiNk1CeEFVSWdRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FFSUFNZ0FUWUNBQXdEQ3lBRFFRSTZBQVFNQWdzZ0F5QUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBY1FteFVRYXd3QkN5QUVRZENvRWtjTkFTQUNFRDhoQjBNQUFJQS9FRVlnQjE0RVFDQUJJQU5Cdm93SEVCUWlCQ0FGRUYwZ0JCQVBHaUFCTFFBRUJFQWdBU0FDSUFJb0FnQW9BZ2dSQUFBUWtRRWhBU0FEUVFFNkFBUWdBeUFCTmdJQURBSUxJQU5CQWpvQUJBd0JDeUFESUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQnhDYkZSQkdFSElMSUFBZ0F5a0RBRGNDQUF3QkN5QUFRUUE2QUFRTElBTkJFR29rQUF1eUFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQVFzUklNQVFzZ0JrS0FnSUNBZ0FFM0FrUWdCaUFHUVNCcUlnYzJBa0FnQnlBR0tBSk1FRGtnQmtGQWF5RUpRUUFoQndKQUFrQURRQ0FISUFZb0FreFBEUUVnQWtFQUVDSWhDaUFHSUFVb0FnQWlDQ0FISUFnb0FnQW9BZ3dSQVFBMkFoUWdCa0VZYWlJSUlBRWdDaUFESUFRZ0Iyb2dCa0VVYWhDdkVpQUlFQ3NFUUNBR1FTQnFJQVpCR0dvUUdoQWtJQWRCQVdvaEJ3d0JDd3NnQmtFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQmlBSk5nSUlJQVlnQmlnQ1FDQUdRU0JxUnpvQURDQUJJQUlnQmtFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCa0VnYWhBakN5QUdRZEFBYWlRQUN6Y0JBWDhqQUVFUWF5SURKQUFnQWlnQ0FCRDhBaUVDSUFFb0FyUUdJUUVnQUNBQ05nSUVJQUFnQWlBQmNEWUNBQ0FEUVJCcUpBQUx0Z1lFQW53RGZ3RjlBWDRqQUVFUWF5SUZKQUFnQVNnQ0JDRUhJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJR1JRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JpZ0NCQ0lHUWZDZkVrWUVRQ0FDRUR3aUEwUUFBQUFBQUFEd3YyTWdBMFFBQUFBQUFBRHdQMlJ5QkVBZ0FTQUZRYm0zQ0JBVUlnWWdCeEJkSUFZUUR4b2dBUzBBQkFSQUlBRWdBaUFDS0FJQUtBSUlFUUFBRUpFQklRRWdCVUVCT2dBRUlBVWdBVFlDQUF3REN5QUZRUUk2QUFRTUFnc2dCU0FCSUFjZ0FpQUNLQUlBS0FJSUVRQUFBbndnQTcwaUNVSWdpS2RCLy8vLy93ZHhJZ0ZCZ0lEQS93TlBCRUJFQUFBQUFBQUFBQUJFR0MxRVZQc2hDVUFnQ1VJQVdSc2dDYWNnQVVHQWdNRC9BMnR5UlEwQkdrUUFBQUFBQUFBQUFDQURJQU9ob3d3QkN3SjhJQUZCLy8vLy9nTk5CRUJFR0MxRVZQc2grVDhnQVVHQmdJRGpBMGtOQVJwRUIxd1VNeWFta1R3Z0F5QURJQU9pRUtNSW9xRWdBNkZFR0MxRVZQc2grVCtnREFJTElBbENBRk1FUUVRWUxVUlUreUg1UHlBRFJBQUFBQUFBQVBBL29FUUFBQUFBQUFEZ1A2SWlBNThpQkNBRUlBTVFvd2lpUkFkY0ZETW1wcEc4b0tDaElnTWdBNkFNQWd0RUFBQUFBQUFBOEQ4Z0E2RkVBQUFBQUFBQTREK2lJZ09mSWdRZ0F4Q2pDS0lnQXlBRXZVS0FnSUNBY0lPL0lnTWdBNktoSUFRZ0E2Q2pvQ0FEb0NJRElBT2dDd3NRY3d3QkN5QUdRYkNwRWtZRVFDQUNFRFFpQ0VNQUFJQy9YU0FJUXdBQWdEOWVjZ1JBSUFFZ0JVRzV0d2dRRkNJR0lBY1FYU0FHRUE4YUlBRXRBQVFFUUNBQklBSWdBaWdDQUNnQ0NCRUFBQkNSQVNFQklBVkJBVG9BQkNBRklBRTJBZ0FNQXdzZ0JVRUNPZ0FFREFJTElBVWdBU0FISUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlFSndWRUdzTUFRc2dCa0hRcUJKSERRRWdBaEEvSVFnQ1FFTUFBSUMvRUVZZ0NGNUZCRUJEQUFDQVB4QkdJQWhkUlEwQkN5QUJJQVZCdWJjSUVCUWlCaUFIRUYwZ0JoQVBHaUFCTFFBRUJFQWdBU0FDSUFJb0FnQW9BZ2dSQUFBUWtRRWhBU0FGUVFFNkFBUWdCU0FCTmdJQURBSUxJQVZCQWpvQUJBd0JDeUFGSUFFZ0J5QUNJQUlvQWdBb0FnZ1JBQUFnQ0JDY0ZSQkdFSElMSUFBZ0JTa0RBRGNDQUF3QkN5QUFRUUE2QUFRTElBVkJFR29rQUF1eUFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQVFzeElNQVFzZ0JrS0FnSUNBZ0FFM0FrUWdCaUFHUVNCcUlnYzJBa0FnQnlBR0tBSk1FRGtnQmtGQWF5RUpRUUFoQndKQUFrQURRQ0FISUFZb0FreFBEUUVnQWtFQUVDSWhDaUFHSUFVb0FnQWlDQ0FISUFnb0FnQW9BZ3dSQVFBMkFoUWdCa0VZYWlJSUlBRWdDaUFESUFRZ0Iyb2dCa0VVYWhDeUVpQUlFQ3NFUUNBR1FTQnFJQVpCR0dvUUdoQWtJQWRCQVdvaEJ3d0JDd3NnQmtFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQmlBSk5nSUlJQVlnQmlnQ1FDQUdRU0JxUnpvQURDQUJJQUlnQmtFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCa0VnYWhBakN5QUdRZEFBYWlRQUM2d0RCQU4vQW40QmZRRjhJd0JCRUdzaUJDUUFJQUVvQWdRaEJTQUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQTBVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFNb0FnUWlBMEhRb0JKR0JFQWdBaEJqSVFZZ0JFRUlhaUFCSUFJZ0FpZ0NBQ2dDQ0JFQUFFS0FnSUNBZ0lDQWdJQi9JQVlnQmtJL2h5SUhoU0FIZlNBR1FvQ0FnSUNBZ0lDQWdIOVJHeEQ5QVF3QkN5QURRZkNmRWtZRVFDQUNFRHdoQ1NBRVFRaHFJQUVnQlNBQ0lBSW9BZ0FvQWdnUkFBQWdDWmtRY3d3QkN5QURRYkNwRWtZRVFDQUNFRFFoQ0NBRVFRaHFJQUVnQlNBQ0lBSW9BZ0FvQWdnUkFBQWdDSXNRYXd3QkN5QURRWkNxRWtZRVFDQUNFR0VoQXlBRVFRaHFJQUVnQWlBQ0tBSUFLQUlJRVFBQVFZQ0FnSUI0SUFNZ0EwRWZkU0lCY3lBQmF5QURRWUNBZ0lCNFJoc1FzUUVNQVFzZ0EwR2dzeEpHQkVBZ0FoQlpJUU1nQkVFSWFpQUJJQUlnQWlnQ0FDZ0NDQkVBQUNBREVLMEJEQUVMSUFOQjBLZ1NSdzBCSUFJUVA0c1FSaUVJSUFSQkNHb2dBU0FGSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlFSElMSUFBZ0JDa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBUkJFR29rQUF2VkFnRUZmeU1BUWRBQWF5SUhKQUFnQjBFQU5nSk1Ba0FnQlNnQ0FDSUlJQWdvQWdBb0FnZ1JBQUFpQ0NBSFFjd0FhaEFpSUFoR0JFQWdBQ0FESUFVb0FnQWdCaWdDQUJDMUVnd0JDeUFIUW9DQWdJQ0FBVGNDUkNBSElBZEJJR29pQ0RZQ1FDQUlJQWNvQWt3UU9TQUhRVUJySVFwQkFDRUlBa0FDUUFOQUlBZ2dCeWdDVEU4TkFTQUNRUUFRSWlFTElBY2dCU2dDQUNJSklBZ2dDU2dDQUNnQ0RCRUJBRFlDRkNBSElBWW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaEFnQjBFWWFpSUpJQUVnQ3lBRElBUWdDR29nQjBFVWFpQUhRUkJxRUxRU0lBa1FLd1JBSUFkQklHb2dCMEVZYWhBYUVDUWdDRUVCYWlFSURBRUxDeUFIUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFISUFvMkFnZ2dCeUFIS0FKQUlBZEJJR3BIT2dBTUlBRWdBaUFIUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUhRU0JxRUNNTElBZEIwQUJxSkFBTDBRTUNCSDhEZmlNQVFTQnJJZ1FrQUNBQktBSUlJUWNnQVNnQ0JDRUdJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJRlJRUkFJQUJCQURvQUJBd0JDd0pBSUFVb0FnUWlCVUhRb0JKR0JFQWdBaEJqSVFvZ0F4QmpJZ2xDd1AvLy93K0RVQVJBSUFvZ0NZaENmeUFKaGtKL2hVSS9JQWw5aGtLQWdJQ0FnSUNBZ0lCL2hFSUFJQXBDQUZNYmhDRUlDeUFFUVJCcUlBRWdCeWdDQUJCY0lBZ1EvUUVNQVFzQ1FBSkFJQVZCa0tvU1JnUkFJQUlRWVNFRklBTVFZU0lDUVNCUEJFQWdCRUVnRUY4Z0JFRVFhaUlEUWNYZENTQUVFRFVnQVNBRElBWVFYU0FERUE4YUlBUVFEeG9nQVMwQUJFVU5BaUFDUVI5eElRSUxRUUFoQXlBRVFSQnFJQUVnQnlnQ0FCQmNJQVVnQW5aQmZ5QUNkRUYvY3lBQ1FSOXpkRUdBZ0lDQWVISkJBQ0FGUVFCSUczSVFzUUVNQXdzZ0JVR2dzeEpHQkVBZ0FoQlpJUVVnQXhCWklnSkJJRThFUUNBRVFTQVFYeUFFUVJCcUlnTkJ4ZDBKSUFRUU5TQUJJQU1nQmhCZElBTVFEeG9nQkJBUEdpQUJMUUFFUlEwRElBSkJIM0VoQWdzZ0JFRVFhaUFCSUFjb0FnQVFYQ0FGSUFKMkVLMEJEQU1MSUFCQkFEb0FCQXdEQ3lBRVFRSTZBQlFNQVFzZ0JFRUNPZ0FVQ3lBQUlBUXBBeEEzQWdBTElBUkJJR29rQUF2VkFnRUZmeU1BUWRBQWF5SUhKQUFnQjBFQU5nSk1Ba0FnQlNnQ0FDSUlJQWdvQWdBb0FnZ1JBQUFpQ0NBSFFjd0FhaEFpSUFoR0JFQWdBQ0FESUFVb0FnQWdCaWdDQUJDM0Vnd0JDeUFIUW9DQWdJQ0FBVGNDUkNBSElBZEJJR29pQ0RZQ1FDQUlJQWNvQWt3UU9TQUhRVUJySVFwQkFDRUlBa0FDUUFOQUlBZ2dCeWdDVEU4TkFTQUNRUUFRSWlFTElBY2dCU2dDQUNJSklBZ2dDU2dDQUNnQ0RCRUJBRFlDRkNBSElBWW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaEFnQjBFWWFpSUpJQUVnQ3lBRElBUWdDR29nQjBFVWFpQUhRUkJxRUxZU0lBa1FLd1JBSUFkQklHb2dCMEVZYWhBYUVDUWdDRUVCYWlFSURBRUxDeUFIUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFISUFvMkFnZ2dCeUFIS0FKQUlBZEJJR3BIT2dBTUlBRWdBaUFIUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUhRU0JxRUNNTElBZEIwQUJxSkFBTGp3VUNCbjhFZmlNQVFTQnJJZ1FrQUNBQktBSUlJUWdnQVNnQ0JDRUdJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJRlJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JTZ0NCQ0lGUWRDZ0VrWUVRQ0FDRUdNaEN5QURFR01pQ2tJL1dBUkFRbjlDUHlBS2ZZWWlEQ0FMZ3lJTlVDQU1JQTFSY2cwQ0lBRWdCRUVRYWtHendBUVFGQ0lDSUFZUVhTQUNFQThhSUFFdEFBUU5BaUFFUVFJNkFCUU1Bd3NnQzFBRVFFSUFJUW9NQWdzZ0JFRVFhaUlDSUF0QnIrZ0dJQW9RN2dZZ0FTQUNJQVlRWFNBQ0VBOGFRZ0FoQ2lBQkxRQUVEUUVnQkVFQ09nQVVEQUlMQWtBQ1FDQUZRWkNxRWtZRVFBSkFJQUlRWVNJRklRa2dBeEJoSWdKQklFOEVRQ0FFUVNBUVh5QUVRUkJxSWdOQmpkNEpJQVFRTlNBQklBTWdCaEJkSUFNUUR4b2dCQkFQR2lBQkxRQUVSUTBESUFKQkgzRWhBZ3NnQ1VGL0lBSkJIM04wSWdOeElnZEZJQU1nQjBaeURRQWdBU0FFUVJCcVFiUEFCQkFVSWdNZ0JoQmRJQU1RRHhvZ0FTMEFCQTBBSUFSQkFqb0FGQXdGQ3lBRVFSQnFJQUVnQ0NnQ0FCQmNJQVVnQW5RUXNRRU1CQXNnQlVHZ3N4SkdCRUFnQWhCWklRVWdBeEJaSWdNaEFpQURRU0JQQkVBZ0JFRWdFRjhnQkVFUWFpSUNRWTNlQ1NBRUVEVWdBU0FDSUFZUVhTQUNFQThhSUFRUUR4b2dBUzBBQkVVTkF5QURRUjl4SVFJTEFrQWdBa1VnQlVFZ0lBSnJka1Z5RFFBZ0JFRVFhaUlISUFWQnIrZ0dJQU1RclF3Z0FTQUhJQVlRWFNBSEVBOGFJQUV0QUFRTkFDQUVRUUk2QUJRTUJRc2dCRUVRYWlBQklBZ29BZ0FRWENBRklBSjBFSzBCREFRTElBQkJBRG9BQkF3RUN5QUVRUUk2QUJRTUFnc2dCRUVDT2dBVURBRUxJQVJCRUdvZ0FTQUlLQUlBRUZ3Z0N5QUtoaEQ5QVFzZ0FDQUVLUU1RTndJQUN5QUVRU0JxSkFBTENnQWdBRUhZNkE4UVNBdlZBZ0VGZnlNQVFkQUFheUlISkFBZ0IwRUFOZ0pNQWtBZ0JTZ0NBQ0lJSUFnb0FnQW9BZ2dSQUFBaUNDQUhRY3dBYWhBaUlBaEdCRUFnQUNBRElBVW9BZ0FnQmlnQ0FCQzZFZ3dCQ3lBSFFvQ0FnSUNBQVRjQ1JDQUhJQWRCSUdvaUNEWUNRQ0FJSUFjb0Frd1FPU0FIUVVCcklRcEJBQ0VJQWtBQ1FBTkFJQWdnQnlnQ1RFOE5BU0FDUVFBUUlpRUxJQWNnQlNnQ0FDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ0ZDQUhJQVlvQWdBaUNTQUlJQWtvQWdBb0Fnd1JBUUEyQWhBZ0IwRVlhaUlKSUFFZ0N5QURJQVFnQ0dvZ0IwRVVhaUFIUVJCcUVMa1NJQWtRS3dSQUlBZEJJR29nQjBFWWFoQWFFQ1FnQ0VFQmFpRUlEQUVMQ3lBSFFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBSElBbzJBZ2dnQnlBSEtBSkFJQWRCSUdwSE9nQU1JQUVnQWlBSFFRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFIUVNCcUVDTUxJQWRCMEFCcUpBQUw3d0VDQkg4Q2ZpTUFRUkJySWdRa0FDQUJLQUlJSVFZZ0FTZ0NCQ0VISUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUZSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCU2dDQkNJRlFkQ2dFa1lFUUNBQ0VHTWhDQ0FERUdNaENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFnZ0NZVVEvUUVNQVFzZ0JVR1FxaEpHQkVBZ0FoQmhJUUlnQXhCaElRTWdCRUVJYWlBQklBWW9BZ0FRWENBQ0lBTnpFTEVCREFFTElBVkJvTE1TUncwQklBSVFXU0VDSUFNUVdTRURJQVJCQ0dvZ0FTQUdLQUlBRUZ3Z0FpQURjeEN0QVFzZ0FDQUVLUU1JTndJQURBRUxJQUJCQURvQUJBc2dCRUVRYWlRQUM5VUNBUVYvSXdCQjBBQnJJZ2NrQUNBSFFRQTJBa3dDUUNBRktBSUFJZ2dnQ0NnQ0FDZ0NDQkVBQUNJSUlBZEJ6QUJxRUNJZ0NFWUVRQ0FBSUFNZ0JTZ0NBQ0FHS0FJQUVMd1NEQUVMSUFkQ2dJQ0FnSUFCTndKRUlBY2dCMEVnYWlJSU5nSkFJQWdnQnlnQ1RCQTVJQWRCUUdzaENrRUFJUWdDUUFKQUEwQWdDQ0FIS0FKTVR3MEJJQUpCQUJBaUlRc2dCeUFGS0FJQUlna2dDQ0FKS0FJQUtBSU1FUUVBTmdJVUlBY2dCaWdDQUNJSklBZ2dDU2dDQUNnQ0RCRUJBRFlDRUNBSFFSaHFJZ2tnQVNBTElBTWdCQ0FJYWlBSFFSUnFJQWRCRUdvUXV4SWdDUkFyQkVBZ0IwRWdhaUFIUVJocUVCb1FKQ0FJUVFGcUlRZ01BUXNMSUFkQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFjZ0NqWUNDQ0FISUFjb0FrQWdCMEVnYWtjNkFBd2dBU0FDSUFkQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQWRCSUdvUUl3c2dCMEhRQUdva0FBdWZBZ0lFZndKK0l3QkJFR3NpQkNRQUlBRW9BZ2doQmlBQktBSUVJUWNnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnVkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUZLQUlFSWdWQjBLQVNSZ1JBSUFJUVl5RUlJQU1RWXlFSklBUkJDR29nQVNBR0tBSUFFRndnQ0NBSmhCRDlBUXdCQ3lBRlFaQ3FFa1lFUUNBQ0VHRWhBaUFERUdFaEF5QUVRUWhxSUFFZ0JpZ0NBQkJjSUFJZ0EzSVFzUUVNQVFzZ0JVR2dzeEpHQkVBZ0FoQlpJUUlnQXhCWklRTWdCRUVJYWlBQklBWW9BZ0FRWENBQ0lBTnlFSzBCREFFTElBVkIwS1VTUncwQklBSVErZ0VoQWlBREVQb0JJUU1nQkVFSWFpQUJJQVlvQWdBUVhDQUNJQU55RUlnQkN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxSQUVCZnlBQUlBQW9BZ0FvQW1BUkFBQWlBeWdDQkNBREtBSUFhMEVFUndSQVFlQ0tCMEhRcVFNZ0FpQUJFQUFBQ3lBQUlBQW9BZ0FvQW1BUkFBQW9BZ0FvQWdBTEtnRUJmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2pBRUVRYXlBQ0tBSU1OZ0lNSUFKQkVHb2tBQ0FCQ3pVQkFYOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSW9BZ3dpQUJDM0FTZ0NBQ0FBS0FJQWF5QUJiU0VBSUFKQkVHb2tBQ0FBQ3lvQkFYOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSW9BZ3dnQVdvUStnSWhBQ0FDUVJCcUpBQWdBQXRBQVFGL0l3QkJFR3NpQXlRQUlBQW9BZ0FoQUNBRElBSTJBZ3dnQXlBQk5nSUlJQU1nQXlrRENEY0RBQ0FBUWZRQ2FrRVBJQU1RcVFjZ0EwRVFhaVFBQzR3QkFRUi9Jd0JCTUdzaUFpUUFJQUFvQWdBaEJTQUNRUmhxSWdRZ0FTQUNRUWhxSUFBb0FnUW9BZ0FvQWdRb0FnUVFGQ0lBRURVZ0FpQUNLQUljSUFJdEFDTWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nSXNJQUlnQWlnQ0dDQUVJQU1iTmdJb0lBSWdBaWtES0RjREFDQUZRZlFDYWtFUElBSVFxUWNnQkJBUEdpQUFFQThhSUFKQk1Hb2tBQXN3QVFGL0lBQW9BZ0FoQWlBQVFRQTJBZ0FnQWdSQUlBQXRBQWdFUUNBQ0lBRnFFRElhQ3lBQ0JFQWdBaEFmQ3dzTEtnSUJmZ0YvUVg4Z0FhMGdBbjRpQTZjZ0EwSWdpS2NiRUJVaEJDQUFJQUUyQWdnZ0FDQUVOZ0lBQ3o0QkFuOGpBRUVRYXlJREpBQWdBU2dDRkVFTVJnUkFJQU1nQVVFQUVEZzJBZ3dnQUNBQ2FpQURRUXhxRUtrQ1FRQkhJUVFMSUFOQkVHb2tBQ0FFQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRU0wU0RBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29ReGhJZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUFzeEFDQUJJQUFvQWlRZ0FDZ0NJQ0lBYTBFY2JVOEVRRUdIcWdsQjU3QURJQUpCbHVrRUVBQUFDeUFBSUFGQkhHeHFDOThCQVFKL0l3QkIwQUZySWd3a0FDQU1JQUkyQXNBQklBd2dBVFlDeUFFZ0RDQUZOZ0s0QVNBTUlBUTJBclFCSUF3Z0JqWUNzQUVqQUVFUWF5SUJKQUFnRENnQ3NBRWhBaUFNS0FLNEFTRUVJQXdvQXJRQklRVWdEQ2dDd0FFaEJpQU1LQUxJQVNFTklBRWdCeWtDQURjRENDQUFJQTBnQmlBRElBVWdCQ0FDSUFGQkNHb1Exd2tpQUNBTE5nSUVJQUFnQ2pZQ0FDQUJRUkJxSkFBZ0FDQUpOZ0lBSUF3b0FyQUJSUVJBSUF3Z0NFRWhRUUFnREVHZ0FXb1FIU0lCRUJjaUFrRVlha0h5cHdnUURob2dBaEFZSUFFUUhnc2dERUhRQVdva0FDQUFDMG9CQVg4Z0FFSUFOd0lBSUFNZ0FTQUJJQU5PR3lFQkEwQUNRQ0FCUVFCS0JFQWdBQ0FCSUFKMEVCVWlCRFlDQUNBRVJRMEJJQUFnQVRZQ0JBc1BDeUFCUVFGMklRRU1BQXNBQ3prQkFuOGdCQ0VGSUFBaEJpQUJJQVJQQkVCQmZ5QUJJQU4wSUFFZ0Frc2JFQlVoQmlBQklRVUxJQUFnQmpZQ2dBRWdBQ0FGTmdLSUFRczVBUUovSUFRaEJTQUFJUVlnQVNBRVR3UkFRWDhnQVNBRGRDQUJJQUpMR3hBVklRWWdBU0VGQ3lBQUlBWTJBb0FDSUFBZ0JUWUNpQUlMTVFFQ2Z5QUFLQUlJSVFJRFFDQUNCRUFnQWlnQ0FDRURJQUlnQVdvUUR4b2dBaEFmSUFNaEFnd0JDd3NnQUJDM0FndWZBZ0lFZndKK0l3QkJFR3NpQkNRQUlBRW9BZ2doQmlBQktBSUVJUWNnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnVkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUZLQUlFSWdWQjBLQVNSZ1JBSUFJUVl5RUlJQU1RWXlFSklBUkJDR29nQVNBR0tBSUFFRndnQ0NBSmd4RDlBUXdCQ3lBRlFaQ3FFa1lFUUNBQ0VHRWhBaUFERUdFaEF5QUVRUWhxSUFFZ0JpZ0NBQkJjSUFJZ0EzRVFzUUVNQVFzZ0JVR2dzeEpHQkVBZ0FoQlpJUUlnQXhCWklRTWdCRUVJYWlBQklBWW9BZ0FRWENBQ0lBTnhFSzBCREFFTElBVkIwS1VTUncwQklBSVErZ0VoQWlBREVQb0JJUU1nQkVFSWFpQUJJQVlvQWdBUVhDQUNJQU54RUlnQkN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxXZ0VEZnlNQVFaQUJheUlFSkFBZ0JCQkpJZ05CQ0dvZ0FoQU9HaUFESUFFb0FnZ1FuZ1JCQ0dvaUJVSGE2UVlRRGhvZ0JTQUJLQUlNRU4wRElBVkJpK1lHRUE0YUlBQWdBMEVNYWhCQ0lBTVFVU0FFUVpBQmFpUUFDendCQW44akFFR1FBV3NpQkNRQUlBUVFTU0lEUVFocUlBSVFEaG9nQXlBQktBSUlFSjRFR2lBQUlBTkJER29RUWlBREVGRWdCRUdRQVdva0FBczRBUUYvSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FESUFFb0FnQTJBZ2dnQUNBRFFReHFJQU5CQ0dvUXVnOGhBQ0FEUVJCcUpBQWdBQXRYQVFKL0l3QkJJR3NpQWlRQVFSQVFGU0VESUFKQkFUWUNFQ0FDSUFKQkdHbzJBZ3dnQXlBQk5nSUFJQU1nQUNrQ0JEY0NCQ0FESUFBb0FndzJBZ3dnQWtFQU5nSUlJQUpCQ0dvUWl3RWdBa0VnYWlRQUlBTUxEd0FnQUNBQklBSkJoT0FBRUwwTUM0NEJBUVIvSXdCQm9BRnJJZ01rQUNBRFFSQnFFRWtpQkVFSWFpSUZJQUlRRGhvZ0FTZ0NIQ0lHQkVBZ0JDQUdFTFVMUVFocVFmVHREQkFPR2dzZ0F5QUJLQUlZSWdZZ0JpZ0NBQ2dDREJFQ0FDQUZJQU1RRWhvZ0JVSDA3UXdRRGhvZ0JDQUJLQUlnRUxZTEdpQURFQThhSUFWQmkrWUdFQTRhSUFBZ0JFRU1haEJDSUFRUVVTQURRYUFCYWlRQUMwWUJBbjhDUUNBQktBSUVJZ1FnQWtjTkFDQUJRUUFnQkNBQ1Joc2lBU2dDSENBQUtBSWNSdzBBSUFFb0FoZ2dBQ2dDR0VjTkFDQUJLQUlnSUFBb0FpQkdJUU1MSUFNTGlBSUJBWDhqQUVIQUFXc2lDeVFBSUFzZ0FqWUN1QUVnQ3lBQk5nSzhBU0FMSUFNMkFyUUJJQXNnQ2lBTFFiZ0JhaUFMUWJ3QmFpQUxRYlFCYWhDV0tUWUNvQUVnQzBJQU53TUFJQUFnQ3lnQ29BRWdDeWtEQUJDZEJDSUFJQWsyQWdRZ0FDQUlOZ0lBSUFBZ0J6WUNBQ0FBSUFzb0Fyd0JJZ0UyQWhnZ0FDQUxLQUs0QVRZQ0hDQUFJQXNvQXJRQklnSTJBaUFnQVNnQ0JFRzRyUkpHQkg4Z0N5QUZJQVpCRFNBTFFhQUJhaEFkSWdFUUZ5SUNRUmhxUWFuc0NCQU9HaUFDRUJnZ0FSQWVJQXNvQXJRQkJTQUNDMFVFUUNBTElBVWdCRUVOSUF0Qm9BRnFFQjBpQVJBWElnSkJHR3BCZ05JSUVBNGFJQUlRR0NBQkVCNExJQXRCd0FGcUpBQWdBQXR6QVFOL0l3QkJvQUZySWdNa0FDQURRUkJxRUVraUJFRUlhaUFDRUE0YUlBUWdBU2dDR0JDZUJFRUlhaUlGUWRycEJoQU9HaUFESUFFb0Fod2lBU0FCS0FJQUtBSU1FUUlBSUFVZ0F4QVNHaUFGUVl2bUJoQU9HaUFERUE4YUlBQWdCRUVNYWhCQ0lBUVFVU0FEUWFBQmFpUUFDemtCQW44Q1FDQUJLQUlFSWdRZ0FrY05BQ0FCUVFBZ0JDQUNSaHNpQVNnQ0dDQUFLQUlZUncwQUlBRW9BaHdnQUNnQ0hFWWhBd3NnQXd1aUFRRUJmeU1BUWNBQmF5SUlKQUFnQ0NBQ05nSzRBU0FJSUFFMkFyd0JJQWdnQnlBSVFid0JhaUlCSUFoQnVBRnFFTHNiTmdJSUlBQWdDQ2dDQ0NBQktBSUFFSXNKSWdBZ0JqWUNCQ0FBSUFVMkFnQWdBQ0FFTmdJQUlBQWdDQ2dDdUFFaUFUWUNIQ0FCUlFSQUlBaEJDR29nQTBFZlFRMGdDRUdvQVdvUUhTSUJFQmNpQWtFWWFrR2kwd2dRRGhvZ0FoQVlJQUVRSGdzZ0NFSEFBV29rQUNBQUN6d0JBbjhqQUVHUUFXc2lCQ1FBSUFRUVNTSURRUWhxSUFJUURob2dBeUFCS0FJWUVKNEVHaUFBSUFOQkRHb1FRaUFERUZFZ0JFR1FBV29rQUF0QUFRRi9Jd0JCc0FGcklnQWtBQ0FBUWVtTkJTQURRUTBnQUVHZ0FXb1FIU0lCRUJjaUJFRVlhaUFDRUE0YUlBUVFHQ0FCRUI0Z0FFR3dBV29rQUVFQUMzd0JBbjhqQUVFUWF5SUhKQUFnQnlBQ05nSUFJQWNnQVRZQ0NDTUFRUkJySWdFa0FDQUhLQUlBSVFJZ0J5Z0NDQ0VJSUFGQkFEb0FEQ0FCUWN5Y0lEWUNDQ0FBSUFnZ0FpQUJRUWhxRVA0cElnQWdCallDQkNBQUlBVTJBZ0FnQVVFUWFpUUFJQUFnQXpZQ05DQUFJQVEyQWdBZ0IwRVFhaVFBSUFBTFF3RUNmeUFBS0FJQUlnSW9BZ0FpQUNBQ0tBSUVRUUowYWlFREEwQWdBQ0FEUmdSQVFRQVBDeUFBS0FJQUlRSWdBRUVFYWlFQUlBSW9BZ1FnQVVjTkFBc2dBZ3RpQVFOL0l3QkJzQUZySWdRa0FDQUVRUkJxUWFXS0JTQURRUWdnQVNnQ0FDZ0NDQkFYSWdWQkdHb2lCaUFDRUE0YUlBWWdCQ0FCS0FJRUtBSUFLQUlFS0FJRUVCUWlBUkFTR2lBQkVBOGFJQVVRR0NBQVFnQTNBZ0FnQkVHd0FXb2tBQXRBQWdKL0FYNGdBeUVFSUFBaEJTQUJJQU5QQkVCQmZ5QUJyU0FDZmlJR3B5QUdRaUNJcHhzUUZTRUZJQUVoQkFzZ0FDQUZOZ0tnQWlBQUlBUTJBcWdDQzNrQkFYOGdBQ2dDQkNJREJFQWdBeWdDQUNBQkVGZEJBVUVCUWRXZUNFSFFwd05COEFBUVN3c2dBQ0FCRU0wRElnRkZCRUJCQUE4TEFuOGdBUVJBSUFFZ0FTZ0NCQ0FDUmcwQkdpQUFJQUVnQWhEaEJBdEJBQXNoQVNBQUtBSUFLQUlJSUFFUVYwRUJRUUZCb1pzSVFkQ25BMEgwQUJCTElBRUxqZ0VCQTM4Z0FCQWNJQUJCcUFGcUlnY2hDU0FIRUtvRElRZ2dBU2dDQUNFQklBSW9BZ0FoQWlBREtBSUFJUU1qQUVFUWF5SUFKQUFnQUNBQ05nSUlJQUFnQVRZQ0RDQUlJQUFvQWd3Z0FDZ0NDQkQ5RHlJQklBWTJBZ1FnQVNBRk5nSUFJQUVnQXpZQ0VDQUJJQVEyQWdBZ0FFRVFhaVFBSUFrZ0FTSUFFQ2dnQnlBSEtBSVlRUUZxTmdJWUlBQUxjQUlDZndGK0l3QkJJR3NpQXlRQUlBTkJDR29pQWlBQUlBQW9BZ0FvQWlRUkFnQWdBaER3Q3lNQVFSQnJJZ0FrQUNBQUlBTkJHR28yQWdnZ0FFRUlhaUFDUVg4Z0FpMEFDQ0lDSUFKQi93RkdHMEVDZENBQmFpZ0NBQkVXQUNFRUlBQkJFR29rQUNBRFFTQnFKQUFnQkF2RkFnRUdmeU1BUWNBQmF5SURKQUFnQVNnQ0FDRUVJQUFvQWd3aEJTQURRVEJxRUVraUIwRUlhaUlCUWVyd0NSQU9HaUFBS0FJSUlRWWdBQ2dDQkNFSUlBTkJBRG9BSENBRElBWWdBbW8yQWhnZ0EwRWdhaUlHSUFnZ0EwRVlha0VBRUlnUklBRWdCaEFTR2lBQkVPSUJHaUFHRUE4YUlBUW9BZ1FFUUNBQkVPSUJHaUFCSUFRb0FnUVFJUm9nQVVHaTBnRVFEaG9nQVVHYjZnWkIxZW9HSUFRb0FnUkJBVXNiRUE0YUlBRVE0Z0VhSUFOQkFEb0FGQ0FESUFRMkFoQWdCU0FISUFOQkVHb2dBQ2dDQkJDYkRBc2dCU2dDQkNJQkVCd2dBMEVnYWlJRklBZEJER29RUWlBRElBTW9BaVFnQXkwQUt5SUVJQVJCR0hSQkdIVkJBRWdpQkJzMkFnd2dBeUFES0FJZ0lBVWdCQnMyQWdnZ0FDZ0NFQ0VBSUFNZ0F5a0RDRGNEQUNBQlFjZ0NhaUFESUFBUTFRRWdCUkFQR2lBSEVGRWdBMEhBQVdva0FBczNBUUovSUFRaEJTQUFJUVlnQVNBRVR3UkFRWDhnQVNBRGRDQUJJQUpMR3hBVklRWWdBU0VGQ3lBQUlBWTJBaUFnQUNBRk5nSW9DNEVCQVFOL0l3QkJ3QUZySWdFa0FDQUJRVEJxRUVraUJFRUlhaUlDSUFGQklHcEI3UDRHRUJRaUJSQVNHaUFDUWZUdERCQU9HaUFDSUFGQkVHcEJ1djBHRUJRaUJoQVNHaUFDUWJYMENSQU9HaUFDSUFFZ0F4QVVJZ0lRRWhvZ0FoQVBHaUFHRUE4YUlBVVFEeG9nQUNBRVFReHFFRUlnQkJCUklBRkJ3QUZxSkFBTHlnRUJCWDhqQUVIZ0FXc2lBU1FBSUFGQjBBQnFFRWtoQkNBQlFVQnJJZ1VnQVNBQkVJRUdJQVJCQ0dvaUFpQUZFQklhSUFKQjlPME1FQTRhSUFGQk1Hb2lCaUFCSUFFUWdnWWdBaUFHRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUVnYWtIcy9nWVFGQ0lIRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUVRYWtHNi9RWVFGQ0lJRUJJYUlBSkJ0ZlFKRUE0YUlBSWdBU0FERUJRaUFoQVNHaUFDRUE4YUlBZ1FEeG9nQnhBUEdpQUdFQThhSUFVUUR4b2dBQ0FFUVF4cUVFSWdCQkJSSUFGQjRBRnFKQUFMMVFJQkJYOGpBRUhRQUdzaUJ5UUFJQWRCQURZQ1RBSkFJQVVvQWdBaUNDQUlLQUlBS0FJSUVRQUFJZ2dnQjBITUFHb1FJaUFJUmdSQUlBQWdBeUFGS0FJQUlBWW9BZ0FRNmhJTUFRc2dCMEtBZ0lDQWdBRTNBa1FnQnlBSFFTQnFJZ2cyQWtBZ0NDQUhLQUpNRURrZ0IwRkFheUVLUVFBaENBSkFBa0FEUUNBSUlBY29Ba3hQRFFFZ0FrRUFFQ0loQ3lBSElBVW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaFFnQnlBR0tBSUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSVFJQWRCR0dvaUNTQUJJQXNnQXlBRUlBaHFJQWRCRkdvZ0IwRVFhaERtRWlBSkVDc0VRQ0FIUVNCcUlBZEJHR29RR2hBa0lBaEJBV29oQ0F3QkN3c2dCMEVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCeUFLTmdJSUlBY2dCeWdDUUNBSFFTQnFSem9BRENBQklBSWdCMEVJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0IwRWdhaEFqQ3lBSFFkQUFhaVFBQzI0QkEzOGpBRUd3QVdzaUFTUUFJQUZCb0FGcUlnUWdBaER0QkNBQlFaQUJhaUlGSUFJUTdnUWdBUkJKSWdaQkNHb2lBaUFERUE0YUlBSWdCQkFTR2lBQ1FiRzlCUkFPR2lBQ0lBVVFFaG9nQUNBR1FReHFFRUlnQmhCUklBVVFEeG9nQkJBUEdpQUJRYkFCYWlRQUMwd0JBbjhqQUVHZ0FXc2lBU1FBSUFGQmtBRnFJZ1FnQWhEdUJDQUJFRWtpQWtFSWFpSUZJQU1RRGhvZ0JTQUVFQklhSUFBZ0FrRU1haEJDSUFJUVVTQUVFQThhSUFGQm9BRnFKQUFMblFFQkFYOGpBRUhBQVdzaURDUUFJQXdnQWpZQ3NBRWdEQ0FCTmdLNEFTQUFJQXdvQXJnQklBd29BckFCSUFNUXpRY2lBQ0FMTmdJRUlBQWdDallDQUNBQUlBUTJBaVFnQUNBSk5nSUFJQVFFZnlBRUJTQU1JQVZCSEVFQUlBeEJvQUZxRUIwaUFSQVhJZ0pCR0dvZ0NCQU9HaUFDRUJnZ0FSQWVJQUFvQWlRTEVGY2dBQ2dDQ0NBSFFRQWdCaUFGUVIwUVN5QU1RY0FCYWlRQUlBQUwvUUlFQkg4Q2ZRSitBbndqQUVFUWF5SUVKQUFnQVNnQ0NDRUdJQUVvQWdRaEJ5QUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQlVVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFVb0FnUWlCVUhRb0JKR0JFQWdBaEJqSVFvZ0F4QmpJUXNnQkVFSWFpQUJJQVlvQWdBUVhDQUtJQXRaRUlnQkRBRUxJQVZCOEo4U1JnUkFJQUlRUENFTUlBTVFQQ0VOSUFSQkNHb2dBU0FHS0FJQUVGd2dEQ0FOWmhDSUFRd0JDeUFGUWJDcEVrWUVRQ0FDRURRaENDQURFRFFoQ1NBRVFRaHFJQUVnQmlnQ0FCQmNJQWdnQ1dBUWlBRU1BUXNnQlVHUXFoSkdCRUFnQWhCaElRSWdBeEJoSVFNZ0JFRUlhaUFCSUFZb0FnQVFYQ0FDSUFOT0VJZ0JEQUVMSUFWQm9MTVNSZ1JBSUFJUVdTRUNJQU1RV1NFRElBUkJDR29nQVNBR0tBSUFFRndnQWlBRFR4Q0lBUXdCQ3lBRlFkQ29Fa2NOQVNBQ0VEOGhDQ0FERUQ4aENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFnZ0NXQVFpQUVMSUFBZ0JDa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBUkJFR29rQUFzdkFDTUFRWkFCYXlJQkpBQWdBUkJKSWdKQkNHb2dBeEFPR2lBQUlBSkJER29RUWlBQ0VGRWdBVUdRQVdva0FBdDZBUUovSXdCQm9BRnJJZ1FrQUNBRVFRaHFFRWtoQlNBRUlBRXBBZ0EzQTVnQklBVWdCRUdZQVdvUXRnUWlBVUVJYWtHenZRVVFEaG9nQVNBQ0VNSVJRUWhxSWdGQmsrY0pFQTRhSUFGQjg1b0pFQTRhSUFFZ0F4QU9HaUFCUWZPYUNSQU9HaUFBSUFWQkRHb1FRaUFGRUZFZ0JFR2dBV29rQUFzM0FRSi9JQVFoQlNBQUlRWWdBU0FFVHdSQVFYOGdBU0FEZENBQklBSkxHeEFWSVFZZ0FTRUZDeUFBSUFZMkFoQWdBQ0FGTmdJWUM1TUJBUVIvSXdCQm9BRnJJZ1VrQUNBRklBTTRBcEFCSUFVZ0FUZ0NtQUVnQlJCSklnWkJDR3BCODVvSkVBNGFJQVlnQlVHWUFXb1FoUWdpQ0VFSWFpSUhRZmZ3REJBT0dpQUhJQUlRRGhvZ0IwSDM4QXdRRGhvZ0NDQUZRWkFCYWhDRkNFRUlhaUlDUWNlS0NSQU9HaUFDSUFRUURob2dBa0h6bWdrUURob2dBQ0FHUVF4cUVFSWdCaEJSSUFWQm9BRnFKQUFMb1FFQ0FuOEJmU0FBRVB3RElRWWdBU2dDQUNFSElBSXFBZ0FoQ0NNQVFiQUJheUlDSkFBZ0JoQzVCaUlCSUFVMkFnUWdBU0FFTmdJQUlBRWdDRGdDRENBQklBYzJBZ2dnQVNBRE5nSUFJQWlMUXdBQWdIOWRSUVJBSUFKQmpLOERRU1pCQWlBQ1FhQUJhaEFkSWdZUUZ5SUhRUmhxUVliZUNCQU9HaUFIRUJnZ0JoQWVDeUFDUWJBQmFpUUFJQUFnQVJBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FCQzFZQkFuOGdBQkQ4QXlFR0lBRW9BZ0FoQnlBQ0tBSUFJUUlnQmhDNUJpSUJJQVUyQWdRZ0FTQUVOZ0lBSUFFZ0FqWUNEQ0FCSUFjMkFnZ2dBU0FETmdJQUlBQWdBUkFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJDeXNBSUFBZ0FUWUNBQ0FBUVRCcUVBOGFJQUJCSkdvUUR4b2dBRUVZYWhBUEdpQUFRUXhxRUE4YUlBQUxMZ0FnQUNBQk5nSUFJQUJCTkdvUWh3RWFJQUJCS0dvUWh3RWFJQUJCSEdvUWh3RWFJQUJCRUdvUUR4b2dBQXM1QUFOQUlBRWdBa1pGQkVBZ0FTQUJMQUFBSWdCQkFFNEVmeUFBUVFKMElBTnFLQUlBQlNBQUN6b0FBQ0FCUVFGcUlRRU1BUXNMSUFJTE9nQURRQ0FCSUFKR1JRUkFJQUVnQVNnQ0FDSUFRZjhBVFFSL0lBQkJBblFnQTJvb0FnQUZJQUFMTmdJQUlBRkJCR29oQVF3QkN3c2dBZ3VvQVFFRWZ5TUFRWUFDYXlJQUpBQWdBRUlsTndQNEFTQUFRZmdCYWlJSFFRRnlRZjcrQWlBRklBSVF1QUVRK2drUXdBRWhDQ0FBSUFRM0F3QWdBRUhnQVdvaUJpQUdRUmdnQ0NBSElBQVFvd01nQm1vaUNDQUNFTHdFSVFrZ0FFRVFhaUlISUFJUWZpQUdJQWtnQ0NBQVFTQnFJZ1lnQUVFY2FpQUFRUmhxSUFjUW1CUWdCeEJrSUFFZ0JpQUFLQUljSUFBb0FoZ2dBaUFERUk4R0lRRWdBRUdBQW1va0FDQUJDNmdCQVFOL0l3QkJvQUZySWdBa0FDQUFRaVUzQTVnQklBQkJtQUZxSWdaQkFYSkJ0cGNESUFVZ0FoQzRBUkQ2Q1JEQUFTRUhJQUFnQkRZQ0FDQUFRWXNCYWlJRUlBUkJEU0FISUFZZ0FCQ2pBeUFFYWlJSElBSVF2QVFoQ0NBQVFSQnFJZ1lnQWhCK0lBUWdDQ0FISUFCQklHb2lCQ0FBUVJ4cUlBQkJHR29nQmhDWUZDQUdFR1FnQVNBRUlBQW9BaHdnQUNnQ0dDQUNJQU1RandZaEFTQUFRYUFCYWlRQUlBRUxwd0VCQkg4akFFSHdBR3NpQUNRQUlBQkNKVGNEYUNBQVFlZ0FhaUlIUVFGeVFmNytBaUFGSUFJUXVBRVErZ2tRd0FFaENDQUFJQVEzQXdBZ0FFSFFBR29pQmlBR1FSZ2dDQ0FISUFBUW93TWdCbW9pQ0NBQ0VMd0VJUWtnQUVFUWFpSUhJQUlRZmlBR0lBa2dDQ0FBUVNCcUlnWWdBRUVjYWlBQVFSaHFJQWNRblJRZ0J4QmtJQUVnQmlBQUtBSWNJQUFvQWhnZ0FpQURFUDhGSVFFZ0FFSHdBR29rQUNBQkM2WUJBUU4vSXdCQjBBQnJJZ0FrQUNBQVFpVTNBMGdnQUVISUFHb2lCa0VCY2tHMmx3TWdCU0FDRUxnQkVQb0pFTUFCSVFjZ0FDQUVOZ0lBSUFCQk8yb2lCQ0FFUVEwZ0J5QUdJQUFRb3dNZ0JHb2lCeUFDRUx3RUlRZ2dBRUVRYWlJR0lBSVFmaUFFSUFnZ0J5QUFRU0JxSWdRZ0FFRWNhaUFBUVJocUlBWVFuUlFnQmhCa0lBRWdCQ0FBS0FJY0lBQW9BaGdnQWlBREVQOEZJUUVnQUVIUUFHb2tBQ0FCQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRUlFVERBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RK1JJZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUFzb0FDQUFJQUUyQWdBZ0FFRUVhaERyRkNBQVFnQTNBaGdnQUVJQU53SVFJQUJDQURjQ0NDQUFDMlFCQW44akFFRVFheUlDSkFBZ0FrRUJPZ0FNSUFJZ0FFTUFBQUFBbDBNQUFJQS9samdDQ0FKL0lBSkJDR29RR2lvQ0FDQUJsRU1BQUFBL2tvNGlBRU1BQUlCUFhTQUFRd0FBQUFCZ2NRUkFJQUNwREFFTFFRQUxJUU1nQWtFUWFpUUFJQU1MWXdFQ2Z5TUFRUkJySWdNa0FDQURRUUU2QUF3Z0F5QUFRd0FBZ0wrWFF3QUFnRCtXT0FJSUFuOGdBMEVJYWhBYUtnSUFJQUtVUXdBQUFEK1NqaUlBaTBNQUFBQlBYUVJBSUFDb0RBRUxRWUNBZ0lCNEN5RUVJQU5CRUdva0FDQUVJQUZ4Q3prQkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBQWdBbW9nQTBFTWFoRHNBU0lBQkg4Z0FDZ0NEQVZCQUFzaEFTQURRUkJxSkFBZ0FRdFlBUUYvSUFCQkFEWUNEQ0FBSUFNMkFoQWdBUVJBSUFFZ0JVOEVRQkQ3QVFBTElBRWdCR3dRRlNFR0N5QUFJQVkyQWdBZ0FDQUdJQUlnQkd4cUlnSTJBZ2dnQUNBR0lBRWdCR3hxTmdJTUlBQWdBallDQkNBQUMwTUJBWDhqQUVFZ2F5SUFKQUJCQ0JBVklRSWdBRUVCTmdJUUlBQWdBRUVZYWpZQ0RDQUNJQUUyQWdBZ0FFRUFOZ0lJSUFCQkNHb1Fpd0VnQUVFZ2FpUUFJQUlMUndFQmZ5TUFRUkJySWdVa0FBSkFJQUVvQWdBZ0JFWWlBUTBBSUFJb0FnQWlBa1VOQUNBRklBQkJCR29nQXhDNEFpQUNJQVVRbmdFZ0JSQVBHZ3NnQlVFUWFpUUFJQUVML1FJRUJIOENmUUorQW53akFFRVFheUlFSkFBZ0FTZ0NDQ0VHSUFFb0FnUWhCeUFCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJVVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBVW9BZ1FpQlVIUW9CSkdCRUFnQWhCaklRb2dBeEJqSVFzZ0JFRUlhaUFCSUFZb0FnQVFYQ0FLSUF0WEVJZ0JEQUVMSUFWQjhKOFNSZ1JBSUFJUVBDRU1JQU1RUENFTklBUkJDR29nQVNBR0tBSUFFRndnRENBTlpSQ0lBUXdCQ3lBRlFiQ3BFa1lFUUNBQ0VEUWhDQ0FERURRaENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFnZ0NWOFFpQUVNQVFzZ0JVR1FxaEpHQkVBZ0FoQmhJUUlnQXhCaElRTWdCRUVJYWlBQklBWW9BZ0FRWENBQ0lBTk1FSWdCREFFTElBVkJvTE1TUmdSQUlBSVFXU0VDSUFNUVdTRURJQVJCQ0dvZ0FTQUdLQUlBRUZ3Z0FpQURUUkNJQVF3QkN5QUZRZENvRWtjTkFTQUNFRDhoQ0NBREVEOGhDU0FFUVFocUlBRWdCaWdDQUJCY0lBZ2dDVjhRaUFFTElBQWdCQ2tEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQVJCRUdva0FBdGtBUUovSXdCQkVHc2lCQ1FBSUFJb0FnQWlBa1VnQVNnQ0FDSUJRY0VwYXlJRlFRUk5RUUJCQVNBRmRFRVpjUnR5UlFSQUlBUWdBRUVFYWlBREVMZ0NJQUlnQkJDZUFTQUVFQThhQ3lBRVFSQnFKQUFnQVVIRUtVWWdBVUY3Y1VIQktVWnlDME1BSUFJb0FnQWhBQ0FBUlNBQktBSUFJZ0ZCd1NscklnSkJCRTFCQUVFQklBSjBRUmx4RzNKRkJFQWdBQ0FERU5JQkN5QUJRY1FwUmlBQlFYdHhRY0VwUm5JTDNBRUJBbjhqQUVIQUFXc2lCeVFBQWtBQ1FBSkFBa0FnQUNBQklBSVFHeEFnSWdJdkFSNGlDRUUzYXc0RkFnRUJBUUlBQ3lBSVFjRUFSZzBCQ3lBSElBQkJjaUFCRUJBZ0J5QUdFQTRhSUFjb0Fyd0JJUUlnQnhBUkRBRUxBa0FnQUNBQ1FRQVFHeEFnSWdJRVFDQUNMd0VlUVNCR0RRRUxJQWNnQUVGeUlBRVFFQ0FISUFVUURob2dCeWdDdkFFaEFpQUhFQkVNQVFzZ0FDQUNRUUlRR3hBZ0lnZ0VRRUVBSVFJZ0NDOEJIaUFFUmcwQkN5QUhJQUJCY2lBQkVCQWdCeUFERUE0YUlBY29BcndCSVFJZ0J4QVJDeUFIUWNBQmFpUUFJQUlMN0FRREEzOEJmUUY4SXdCQlFHb2lDQ1FBSUFFb0FnUWhDU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUNrVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBb29BZ1FpQ2tId254SkdCRUFnQWhBOElRd2dDRUVCT2dBNElBZ2dCemNETUNBSVFUQnFFR0lFUUNBQklBaEJJR29nQXhBVUlnRWdDUkQ4QVNBQkVBOGFJQWhCQWpvQURBd0NDeUFJUVNCcUlnb2dBU0FKSUF3Z0NFRXdhaEJLS3dNQUVOc0JJQW9RWWdSQUlBRWdDRUVRYWlBREVCUWlBU0FKRVB3QklBRVFEeG9nQ0VFQ09nQU1EQUlMSUFoQkNHb2dBU0FKSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlRU0JxRUVvckF3QVFjd3dCQ3lBS1FiQ3BFa1lFUUNBQ0VEUWhDeUFJUVFFNkFDUWdDQ0FHTmdJZ0lBaEJJR29RTUFSQUlBRWdDRUV3YWlBREVCUWlBU0FKRVB3QklBRVFEeG9nQ0VFQ09nQU1EQUlMSUFoQkVHb2lDaUFCSUFrZ0N5QUlRU0JxRUJvcUFnQVEyZ0VnQ2hBd0JFQWdBU0FJUVRCcUlBTVFGQ0lCSUFrUS9BRWdBUkFQR2lBSVFRSTZBQXdNQWdzZ0NFRUlhaUFCSUFrZ0FpQUNLQUlBS0FJSUVRQUFJQWhCRUdvUUdpb0NBQkJyREFFTElBcEIwS2dTUncwQklBSVFQeUVMSUFoQklHb2lDaUFCSUFrZ0JSQkdJQVFRUmhEc0NTQUtFREFFUUNBQklBaEJNR29nQXhBVUlnRWdDUkQ4QVNBQkVBOGFJQWhCQWpvQURBd0JDeUFJUVJCcUlnb2dBU0FKSUFzZ0NFRWdhaEFhS2dJQUVOa0JJQW9RTUFSQUlBRWdDRUV3YWlBREVCUWlBU0FKRVB3QklBRVFEeG9nQ0VFQ09nQU1EQUVMSUFoQkNHb2dBU0FKSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlRUkJxRUJvcUFnQVFjZ3NnQUNBSUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0NFRkFheVFBQzlBQkFRSi9Jd0JCSUdzaUJTUUFJQU1vQWdBaEJpQUJJQUlvQWdBaUF5Z0NBQkNsQmlFQ0lBRWdBeWdDQUJDMENDRUJBa0FDUUNBQ1JRMEFJQVZCQlRZQ0VDQUNJQVZCRUdvUXdBTWdBa0VFYWtZTkFDQUJCRUFnQlVHcUtUWUNBQ0FCSUFVUXdBTWlBaUFCUVFScVJ3MEJJQVZCcVNrMkFoeEJBU0VESUFFZ0JVRWNhaERBQXlBQ1J3MENDMEVBSVFNZ0JrVU5BU0FGUVJCcUlnRWdCU0FFRUJRaUFpQUFLQUlFRUlFQkVDMGdCaUFCRUo0QklBRVFEeG9nQWhBUEdnd0JDMEVCSVFNTElBVkJJR29rQUNBREMxd0JBMzhqQUVFZ2F5SUVKQUFDUUNBQktBSUFRWDV4UVFSR0lnVU5BQ0FDS0FJQUlnSkZEUUFnQkVFUWFpSUJJQVFnQXhBVUlnWWdBQ2dDQkJDQkFSQXRJQUlnQVJDZUFTQUJFQThhSUFZUUR4b0xJQVJCSUdva0FDQUZDNThCQVFSL0l3QkIwQUZySWdZa0FDQUFLQUlJS0FJRUtBSUFJUWtnQmtFUWFpSUhJQUFvQWdRaUNDZ0NBRUZ5SUFBb0Fnd1FFQ0FHSUFnb0FnQWdCU0FFSUFrZ0EwWWJFRGNnQnlBR0VCSWFJQWRCMEpZS0VBNGFJQWNnQ0NnQ0FFR0FBMnBCSENBQUtBSUlLQUlFS0FJQUVJOEJFQTRhSUFjZ0FoQU9HaUFISUFFUUVob2dCaWdDekFFaEFDQUdFQThhSUFjUUVTQUdRZEFCYWlRQUlBQUwxUUlCQlg4akFFSFFBR3NpQnlRQUlBZEJBRFlDVEFKQUlBVW9BZ0FpQ0NBSUtBSUFLQUlJRVFBQUlnZ2dCMEhNQUdvUUlpQUlSZ1JBSUFBZ0F5QUZLQUlBSUFZb0FnQVFrUk1NQVFzZ0IwS0FnSUNBZ0FFM0FrUWdCeUFIUVNCcUlnZzJBa0FnQ0NBSEtBSk1FRGtnQjBGQWF5RUtRUUFoQ0FKQUFrQURRQ0FJSUFjb0FreFBEUUVnQWtFQUVDSWhDeUFISUFVb0FnQWlDU0FJSUFrb0FnQW9BZ3dSQVFBMkFoUWdCeUFHS0FJQUlna2dDQ0FKS0FJQUtBSU1FUUVBTmdJUUlBZEJHR29pQ1NBQklBc2dBeUFFSUFocUlBZEJGR29nQjBFUWFoQ0pFeUFKRUNzRVFDQUhRU0JxSUFkQkdHb1FHaEFrSUFoQkFXb2hDQXdCQ3dzZ0IwRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0J5QUtOZ0lJSUFjZ0J5Z0NRQ0FIUVNCcVJ6b0FEQ0FCSUFJZ0IwRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQjBFZ2FoQWpDeUFIUWRBQWFpUUFDNlFFQVFkL0l3QkJ3QU5ySWdva0FBSkFBa0FnQUNnQ0FDZ0NBQ2dDQUJCSFJRMEFJQVFROXdFaURFRUJSaUFNUWYvLy8vOEhSbkpGQkVBZ0NrR0FBbW9pQ3lBQUtBSUFRWElnQkJBUUlBcEI4QUZxSWcwZ0FDZ0NBQ0FKRURjZ0N5QU5FQklhSUFwQjRBRnFJZzRnQUNnQ0FDZ0NBQ2dDQUJDQkFpQUxJQTRRRWhvZ0N5QUlFQTRhSUFwQjBBRnFJZzhnQUNBQklBSWdBeUFFUWYvLy8vOEhFSW9CSUFzZ0R4QVNHaUFMUWZmd0RCQU9HaUFLUWNBQmFpSUJJQUFnQkJDQUFpQUxJQUVRRWhvZ0NpZ0N2QU1oRENBQkVBOGFJQThRRHhvZ0RoQVBHaUFORUE4YUlBc1FFUXdDQ3lBQVFTaHFJUXNnQUNnQ0pDRU1BMEFnQ3lBTVJnMEJJQXdvQWhBaUVBUkFJQXBCZ0FKcUlnc2dBQ2dDQUVGeUlBUVFFQ0FLUWZBQmFpSU5JQUFvQWdBZ0J4QTNJQXNnRFJBU0dpQUtRZUFCYWlJT0lBQW9BZ0FvQWdBb0FnQVFnUUlnQ3lBT0VCSWFJQXNnQmhBT0dpQUtRZEFCYWlJUElBQWdBU0FDSUFNZ0JDQVFFSW9CSUFzZ0R4QVNHaUFLS0FLOEF5RU1JQThRRHhvZ0RoQVBHaUFORUE4YUlBc1FFUXdEQlNBTUVFd2hEQXdCQ3dBTEFBdEJBQ0VNSUFBb0FoQU5BQ0FLSUFRb0FpZzJBdUFCSUFCQkJHb2dDa0hnQVdvUW1RRWhBeUFLUVFBMkF2UUJJQW9nQlRZQzhBRWdDaUFBTmdMUUFTQUtRUWhxSWdzZ0NrSHdBV29nQ2tIUUFXb2dBU0FDSUFRUS93RWdBeUFLUVlBQ2FpQUxFUDRCSWdBUWt3RWdBQkFXSUFzUTZBRUxJQXBCd0FOcUpBQWdEQXV6QlFFSGZ5TUFRY0FEYXlJSkpBQUNRQUpBSUFBb0FnQW9BZ0FvQWdBUVIwVU5BQ0FCS0FJRUtBSUFJUXNnQkJEM0FTSUtRUUZHSUFwQi8vLy8vd2RHY2tVRVFDQUxRUUVRNGdNaENpQUpRWUFDYWlJSUlBQW9BZ0JCY2lBRUVCQWdDVUh3QVdvaURTQUFLQUlBSUFvUU55QUlJQTBRRWhvZ0NVSGdBV29pRENBQUtBSUFLQUlBS0FJQUVJRUNJQWdnREJBU0dpQUlRWW1XQ2hBT0dpQUlJQUFvQWdCQmdBTnFRUndnQ3hDUEFSQU9HaUFJUWN2SERCQU9HaUFKUWRBQmFpSUxJQUFnQVNBQ0lBTWdCRUgvLy8vL0J4Q0tBU0FJSUFzUUVob2dDRUgzOEF3UURob2dDVUhBQVdvaUFTQUFJQVFRZ0FJZ0NDQUJFQklhSUFrb0Fyd0RJUW9nQVJBUEdpQUxFQThhSUF3UUR4b2dEUkFQR2lBSUVCRU1BZ3NnQUVFb2FpRU1JQUFvQWlRaENnTkFJQW9nREVZTkFVRUJJUWdnQ2lnQ0VDSU5RWk1wYTBFQ1NTQU5RZlFwYTBFQ1NYSWdEVUVGUm5JaENDQUlJQUFvQWdBb0FnQW9BZ0FRUjBWeUJFQWdDaEJNSVFvTUFRVWdDMEVBRU9JRElRb2dDVUdBQW1vaUNDQUFLQUlBUVhJZ0JCQVFJQWxCOEFGcUlnd2dBQ2dDQUNBS0VEY2dDQ0FNRUJJYUlBbEI0QUZxSWc0Z0FDZ0NBQ2dDQUNnQ0FCQ0JBaUFJSUE0UUVob2dDRUdKbGdvUURob2dDQ0FBS0FJQVFZQURha0VjSUFzUWp3RVFEaG9nQ0NBSEVBNGFJQWdnQmhBT0dpQUpRZEFCYWlJTElBQWdBU0FDSUFNZ0JDQU5FSW9CSUFnZ0N4QVNHaUFKS0FLOEF5RUtJQXNRRHhvZ0RoQVBHaUFNRUE4YUlBZ1FFUXdEQ3dBTEFBdEJBQ0VLSUFBb0FoQU5BQ0FKSUFRb0FpZzJBdUFCSUFCQkJHb2dDVUhnQVdvUW1RRWhBeUFKUVFBMkF2UUJJQWtnQlRZQzhBRWdDU0FBTmdMUUFTQUpRUWhxSWdnZ0NVSHdBV29nQ1VIUUFXb2dBU0FDSUFRUS93RWdBeUFKUVlBQ2FpQUlFUDRCSWdBUWt3RWdBQkFXSUFnUTZBRUxJQWxCd0FOcUpBQWdDZ3VuQkFFSGZ5TUFRY0FEYXlJS0pBQUNRQUpBSUFBb0FnQW9BZ0FvQWdBUVIwVU5BQ0FFRVBjQklneEJBVVlnREVILy8vLy9CMFp5UlFSQUlBcEJnQUpxSWdzZ0FDZ0NBRUZ5SUFRUUVDQUtRZkFCYWlJTklBQW9BZ0FnQ1JBM0lBc2dEUkFTR2lBS1FlQUJhaUlPSUFBb0FnQW9BZ0FvQWdBUWdRSWdDeUFPRUJJYUlBc2dDQkFPR2lBS1FkQUJhaUlQSUFBZ0FTQUNJQU1nQkVILy8vLy9CeENLQVNBTElBOFFFaG9nQzBIMzhBd1FEaG9nQ2tIQUFXb2lBU0FBSUFRUWdBSWdDeUFCRUJJYUlBb29BcndESVF3Z0FSQVBHaUFQRUE4YUlBNFFEeG9nRFJBUEdpQUxFQkVNQWdzZ0FFRW9haUVMSUFBb0FpUWhEQU5BSUFzZ0RFWU5BU0FNS0FJUUloQkJCRWNFUUNBS1FZQUNhaUlMSUFBb0FnQkJjaUFFRUJBZ0NrSHdBV29pRFNBQUtBSUFJQWNRTnlBTElBMFFFaG9nQ2tIZ0FXb2lEaUFBS0FJQUtBSUFLQUlBRUlFQ0lBc2dEaEFTR2lBTElBWVFEaG9nQ2tIUUFXb2lEeUFBSUFFZ0FpQURJQVFnRUJDS0FTQUxJQThRRWhvZ0NpZ0N2QU1oRENBUEVBOGFJQTRRRHhvZ0RSQVBHaUFMRUJFTUF3VWdEQkJNSVF3TUFRc0FDd0FMUVFBaERDQUFLQUlRRFFBZ0NpQUVLQUlvTmdMZ0FTQUFRUVJxSUFwQjRBRnFFSmtCSVFNZ0NrRUFOZ0wwQVNBS0lBVTJBdkFCSUFvZ0FEWUMwQUVnQ2tFSWFpSUxJQXBCOEFGcUlBcEIwQUZxSUFFZ0FpQUVFUDhCSUFNZ0NrR0FBbW9nQ3hEK0FTSUFFSk1CSUFBUUZpQUxFT2dCQ3lBS1FjQURhaVFBSUF3TFVBRUJmd0pBQWtBZ0FFRWFTdzBBUVFFZ0FIUWdCSEZGQkVBZ0FFRVRSZzBDSUFCQkdrY05BVUdLdGdsQno1Y0NJQU1nQVJBQUFBdEJBU0VGQ3lBRkR3dEJ0N1lKUWMrWEFpQUNJQUVRQUFBTE5BRUNmeU1BUVJCcklnSWtBQ0FBTFFBSkJFQWdBQ2dDQkNFRElBSWdBQzBBQ0RvQUNDQURJQUVRRGhvTElBSkJFR29rQUFzNUFRSi9JQUFvQWdRaEF5QUFLQUlJSVFJRFFDQUNJQU5IQkVBZ0FDQUNJQUZySWdJMkFnZ01BUXNMSUFBb0FnQWlBQVJBSUFBUUh3c0xYZ0VFZnlNQVFhQUJheUlFSkFBZ0JFRVlhaERPQVNJRklBTVFEaUVISUFSQkNHb2lCaUFCS0FJVUlnRWdBU2dDQUNnQ0RCRUNBQ0FISUFZUUVpQUNFQTRhSUFZUUR4b2dBQ0FGUVFScUVFSWdCUkM3QVJvZ0JFR2dBV29rQUF2OUFnUUVmd0o5QW40Q2ZDTUFRUkJySWdRa0FDQUJLQUlJSVFZZ0FTZ0NCQ0VISUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUZSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCU2dDQkNJRlFkQ2dFa1lFUUNBQ0VHTWhDaUFERUdNaEN5QUVRUWhxSUFFZ0JpZ0NBQkJjSUFvZ0MxVVFpQUVNQVFzZ0JVSHdueEpHQkVBZ0FoQThJUXdnQXhBOElRMGdCRUVJYWlBQklBWW9BZ0FRWENBTUlBMWtFSWdCREFFTElBVkJzS2tTUmdSQUlBSVFOQ0VJSUFNUU5DRUpJQVJCQ0dvZ0FTQUdLQUlBRUZ3Z0NDQUpYaENJQVF3QkN5QUZRWkNxRWtZRVFDQUNFR0VoQWlBREVHRWhBeUFFUVFocUlBRWdCaWdDQUJCY0lBSWdBMG9RaUFFTUFRc2dCVUdnc3hKR0JFQWdBaEJaSVFJZ0F4QlpJUU1nQkVFSWFpQUJJQVlvQWdBUVhDQUNJQU5MRUlnQkRBRUxJQVZCMEtnU1J3MEJJQUlRUHlFSUlBTVFQeUVKSUFSQkNHb2dBU0FHS0FJQUVGd2dDQ0FKWGhDSUFRc2dBQ0FFS1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQkVFUWFpUUFDM0FDQW44QmZTTUFRU0JySWdNa0FDQURRUWhxSWdJZ0FDQUFLQUlBS0FJa0VRSUFJQUlROEFzakFFRVFheUlBSkFBZ0FDQURRUmhxTmdJSUlBQkJDR29nQWtGL0lBSXRBQWdpQWlBQ1FmOEJSaHRCQW5RZ0FXb29BZ0FSRkFBaEJDQUFRUkJxSkFBZ0EwRWdhaVFBSUFRTFJBRUJmMEVCSVFJZ0FFSENBa1lnQUVFVGF5QUJTWElnQUVISEFrWWdBRUg0SWtaeWNpQUFRYUVwUmlBQVFkMHBSbklnQUVIdUtVWnlja1VFUUVFQUlRSUxJQUlMMVFJQkJYOGpBRUhRQUdzaUJ5UUFJQWRCQURZQ1RBSkFJQVVvQWdBaUNDQUlLQUlBS0FJSUVRQUFJZ2dnQjBITUFHb1FJaUFJUmdSQUlBQWdBeUFGS0FJQUlBWW9BZ0FRbGhNTUFRc2dCMEtBZ0lDQWdBRTNBa1FnQnlBSFFTQnFJZ2cyQWtBZ0NDQUhLQUpNRURrZ0IwRkFheUVLUVFBaENBSkFBa0FEUUNBSUlBY29Ba3hQRFFFZ0FrRUFFQ0loQ3lBSElBVW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaFFnQnlBR0tBSUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSVFJQWRCR0dvaUNTQUJJQXNnQXlBRUlBaHFJQWRCRkdvZ0IwRVFhaENVRXlBSkVDc0VRQ0FIUVNCcUlBZEJHR29RR2hBa0lBaEJBV29oQ0F3QkN3c2dCMEVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCeUFLTmdJSUlBY2dCeWdDUUNBSFFTQnFSem9BRENBQklBSWdCMEVJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0IwRWdhaEFqQ3lBSFFkQUFhaVFBQzBNQUlBQWdBZ0ovUVFBZ0EwVU5BQm9nQVVFSWRTSUNJQUZCQVhGRkRRQWFJQU1vQWdBZ0FoRFZEQXNnQTJvZ0JFRUNJQUZCQW5FYklBQW9BZ0FvQWh3UkJnQUwvUUlFQkg4Q2ZRSitBbndqQUVFUWF5SUVKQUFnQVNnQ0NDRUdJQUVvQWdRaEJ5QUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQlVVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFVb0FnUWlCVUhRb0JKR0JFQWdBaEJqSVFvZ0F4QmpJUXNnQkVFSWFpQUJJQVlvQWdBUVhDQUtJQXRURUlnQkRBRUxJQVZCOEo4U1JnUkFJQUlRUENFTUlBTVFQQ0VOSUFSQkNHb2dBU0FHS0FJQUVGd2dEQ0FOWXhDSUFRd0JDeUFGUWJDcEVrWUVRQ0FDRURRaENDQURFRFFoQ1NBRVFRaHFJQUVnQmlnQ0FCQmNJQWdnQ1YwUWlBRU1BUXNnQlVHUXFoSkdCRUFnQWhCaElRSWdBeEJoSVFNZ0JFRUlhaUFCSUFZb0FnQVFYQ0FDSUFOSUVJZ0JEQUVMSUFWQm9MTVNSZ1JBSUFJUVdTRUNJQU1RV1NFRElBUkJDR29nQVNBR0tBSUFFRndnQWlBRFNSQ0lBUXdCQ3lBRlFkQ29Fa2NOQVNBQ0VEOGhDQ0FERUQ4aENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFnZ0NWMFFpQUVMSUFBZ0JDa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBUkJFR29rQUF1N0FnRUVmeU1BUVVCcUlnSWtBQ0FBS0FJQUlnTkJCR3NvQWdBaEJDQURRUWhyS0FJQUlRVWdBa0lBTndJY0lBSkNBRGNDSkNBQ1FnQTNBaXdnQWtJQU53STBRUUFoQXlBQ1FRQTJBRHNnQWtJQU53SVVJQUpCZ09NUE5nSVFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FDQUZhaUVBQWtBZ0JDQUJRUUFRb0FNRVFDQUNRUUUyQWpnZ0JDQUNRUWhxSUFBZ0FFRUJRUUFnQkNnQ0FDZ0NGQkVLQUNBQVFRQWdBaWdDSUVFQlJoc2hBd3dCQ3lBRUlBSkJDR29nQUVFQlFRQWdCQ2dDQUNnQ0dCRUlBQUpBQWtBZ0FpZ0NMQTRDQUFFQ0N5QUNLQUljUVFBZ0FpZ0NLRUVCUmh0QkFDQUNLQUlrUVFGR0cwRUFJQUlvQWpCQkFVWWJJUU1NQVFzZ0FpZ0NJRUVCUndSQUlBSW9BakFOQVNBQ0tBSWtRUUZIRFFFZ0FpZ0NLRUVCUncwQkN5QUNLQUlZSVFNTElBSkJRR3NrQUNBREM1OENBZ0YrQW44Z0FBSi9JQUlnQVdzaUJVRVRUQVJBUVQwZ0JVSEFBQ0FEUWdHRWVhZHJRZEVKYkVFTWRTSUdJQVpCQTNSQm9PRVBhaWtEQUNBRFdHcElEUUVhQ3dKL0lBTkMvOEhYTDFnRVFDQUJJQU9uRU53TURBRUxJQU5DLy8rRC9xYmU0UkZZQkVBZ0FTQURRb0RDMXkrQUlnU25FTndNSUFSQ2dMNm8wQTkrSUFOOHB5SUJRWkRPQUc0aUFoQzRCQ0FDUWZDeGYyd2dBV29RdUFRTUFRc2dBU0FEUW9DQWhQNm0zdUVSZ0NJRXB4RGJEQ0FFUW9DQS9JSFpvWjV1ZmlBRGZDSURRb0RDMXkrQUlnU25JZ0ZCa000QWJpSUNFTGdFSUFKQjhMRi9iQ0FCYWhDNEJDQUVRb0MrcU5BUGZpQURmS2NpQVVHUXpnQnVJZ0lRdUFRZ0FrSHdzWDlzSUFGcUVMZ0VDeUVDUVFBTE5nSUVJQUFnQWpZQ0FBdVpBUUVDZnlBQUFuOGdBaUFCYXlJRVFRbE1CRUJCUFNBRVFTQWdBMEVCY21kclFkRUpiRUVNZFNJRklBVkJBblJCOE9BUGFpZ0NBQ0FEVFdwSURRRWFDd0ovSUFOQi84SFhMMDBFUUNBQklBTVEzQXdNQVFzZ0FTQURRWURDMXk5dUlnRVFvQk1nQVVHQXZxaFFiQ0FEYWlJQlFaRE9BRzRpQWhDNEJDQUNRZkN4ZjJ3Z0FXb1F1QVFMSVFKQkFBczJBZ1FnQUNBQ05nSUFDNG9DQVFSL0l3QkJFR3NpQ0NRQUlBSkI3di8vL3dNZ0FXdE5CRUFnQUJDUEFpRUpRZS8vLy84RElRb2dBVUhtLy8vL0FVMEVRQ0FJSUFGQkFYUTJBZ2dnQ0NBQklBSnFOZ0lNSUFoQkRHb2dDRUVJYWhDSkJTZ0NBQkNMQjBFQmFpRUtDeUFLRUpNR0lRSWdCQVJBSUFJZ0NTQUVFTUlFQ3lBR0JFQWdBaUFFUVFKMGFpQUhJQVlRd2dRTElBTWdCQ0FGYWlJTGF5RUhJQU1nQzBjRVFDQUNJQVJCQW5RaUEyb2dCa0VDZEdvZ0F5QUphaUFGUVFKMGFpQUhFTUlFQ3lBQlFRRnFJZ0ZCQWtjRVFDQUpJQUVRL0FrTElBQWdBaENaQWlBQUlBb1FpZ2NnQUNBRUlBWnFJQWRxSWdBUWh3UWdBaUFBUVFKMGFrRUFFSmtDSUFoQkVHb2tBQThMRUxnREFBdVJBUUVCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ2dnQTBGL05nSU1JQUpCZjBZZ0FCQTdJZ0pCQUVseVJRUkFJQU1nQWpZQ0FDQURJQU5CREdvZ0F4Q0lCU2dDQURZQ0JBSkFJQUFRZXlBQklBTkJCR29nQTBFSWFoQ0lCU2dDQUJETEN5SUFEUUJCZnlFQUlBTW9BZ1FpQVNBREtBSUlJZ0pKRFFBZ0FTQUNTeUVBQ3lBRFFSQnFKQUFnQUE4TEVOME1BQXRHQVFGL0lBSWdBQkNiQVNJRFRRUkFJQUFRd1FNUWd3RWlBeUFCSUFJUXpnNGdBQ0FESUFJUXFCTVBDeUFBSUFNZ0FpQURheUFBRURzaUFFRUFJQUFnQWlBQkVKWUlDN1VCQVFOL0l3QkJFR3NpQlNRQUlBQVFPeUlFUVFCUEJFQUNRQ0FDSUFBUW13RWlBeUFFYTAwRVFDQUNSUTBCSUFBUXdRTVFnd0VpQXlBRUJIOGdBaUFEYWlBRElBUVF6ZzRnQVNBQ1FRQWdBeUFFYWlBQlN4dEJBQ0FCSUFOUEcyb0ZJQUVMSUFJUXpnNGdBQ0FDSUFScUlnRVFtQWdnQlVFQU9nQVBJQUVnQTJvZ0JVRVBhaERSQWd3QkN5QUFJQU1nQWlBRWFpQURheUFFUVFCQkFDQUNJQUVRbGdnTElBVkJFR29rQUNBQUR3c1EzUXdBQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRUtJVERBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RbmhNZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUFzUkFDQUFJQUZCTUdvNkFBQWdBRUVCYWdzWkFDQUJRUWxOQkVBZ0FDQUJFSjhURHdzZ0FDQUJFT2dKQ3cwQUlBQkJnT2dQTmdJQUlBQUx6Z01FQkg4Q2ZRSjhBbjRqQUVFUWF5SUVKQUFnQVNnQ0NDRUdJQUVvQWdRaEJ5QUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQlVVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFVb0FnUWlCVUhRb0JKR0JFQWdBaEJqSVF3Z0F4QmpJUTBnQkVFSWFpQUJJQVlvQWdBUVhDQU1JQTFTRUlnQkRBRUxJQVZCOEo4U1JnUkFJQUlRUENFS0lBTVFQQ0VMSUFSQkNHb2dBU0FHS0FJQUVGd2dDNzBnQ3IyRlFnQlRJQW9nQzJKeUVJZ0JEQUVMSUFWQnNLa1NSZ1JBSUFJUU5DRUlJQU1RTkNFSklBUkJDR29nQVNBR0tBSUFFRndnQ2J3Z0NMeHpRUUJJSUFnZ0NWeHlFSWdCREFFTElBVkJrS29TUmdSQUlBSVFZU0VDSUFNUVlTRURJQVJCQ0dvZ0FTQUdLQUlBRUZ3Z0FpQURSeENJQVF3QkN5QUZRYUN6RWtZRVFDQUNFRmtoQWlBREVGa2hBeUFFUVFocUlBRWdCaWdDQUJCY0lBSWdBMGNRaUFFTUFRc2dCVUhRcUJKR0JFQWdBaEEvSVFnZ0F4QS9JUWtnQkVFSWFpQUJJQVlvQWdBUVhDQUp2Q0FJdkhOQkFFZ2dDQ0FKWEhJUWlBRU1BUXNnQlVIUXBSSkhEUUVnQWhENkFTRUNJQU1RK2dFaEF5QUVRUWhxSUFFZ0JpZ0NBQkJjSUFJZ0EzTVFpQUVMSUFBZ0JDa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBUkJFR29rQUF0S0FRRi9Jd0JCRUdzaUJDUUFJQVFnQUNBREVOWVRJUUFnQWlBQmF5SUNRUUJLQkVBZ0FDZ0NCQ0FCSUFJUWZSb2dBQ0FBS0FJRUlBSnFOZ0lFQ3lBQUVOVVRJQVJCRUdva0FBc1ZBQ0FBUVl5VkR6WUNBQ0FBS0FJSUVNRUZJQUFMRlFBZ0FFR3NsUTgyQWdBZ0FDZ0NDQkRCQlNBQUN3c0FJQUJCNk1RUEVQRVNDd3NBSUFCQjBNVVBFUEVTQ3k4QkFYOGpBRUVRYXlJREpBQWdBQ0FDRUpnSUlBTkJBRG9BRHlBQklBSnFJQU5CRDJvUTBRSWdBMEVRYWlRQUM5VUNBUVYvSXdCQjBBQnJJZ2NrQUNBSFFRQTJBa3dDUUNBRktBSUFJZ2dnQ0NnQ0FDZ0NDQkVBQUNJSUlBZEJ6QUJxRUNJZ0NFWUVRQ0FBSUFNZ0JTZ0NBQ0FHS0FJQUVLd1REQUVMSUFkQ2dJQ0FnSUFCTndKRUlBY2dCMEVnYWlJSU5nSkFJQWdnQnlnQ1RCQTVJQWRCUUdzaENrRUFJUWdDUUFKQUEwQWdDQ0FIS0FKTVR3MEJJQUpCQUJBaUlRc2dCeUFGS0FJQUlna2dDQ0FKS0FJQUtBSU1FUUVBTmdJVUlBY2dCaWdDQUNJSklBZ2dDU2dDQUNnQ0RCRUJBRFlDRUNBSFFSaHFJZ2tnQVNBTElBTWdCQ0FJYWlBSFFSUnFJQWRCRUdvUXFSTWdDUkFyQkVBZ0IwRWdhaUFIUVJocUVCb1FKQ0FJUVFGcUlRZ01BUXNMSUFkQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFjZ0NqWUNDQ0FISUFjb0FrQWdCMEVnYWtjNkFBd2dBU0FDSUFkQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQWRCSUdvUUl3c2dCMEhRQUdva0FBc0xBQ0FBUWJqR0R4RHlFZ3NMQUNBQVFhREhEeER5RWd2UkF3UUVmd0o5QW53Q2ZpTUFRUkJySWdRa0FDQUJLQUlJSVFZZ0FTZ0NCQ0VISUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUZSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCU2dDQkNJRlFkQ2dFa1lFUUNBQ0VHTWhEQ0FERUdNaERTQUVRUWhxSUFFZ0JpZ0NBQkJjSUF3Z0RWRVFpQUVNQVFzZ0JVSHdueEpHQkVBZ0FoQThJUW9nQXhBOElRc2dCRUVJYWlBQklBWW9BZ0FRWENBTHZTQUt2WVZDQUZrZ0NpQUxZWEVRaUFFTUFRc2dCVUd3cVJKR0JFQWdBaEEwSVFnZ0F4QTBJUWtnQkVFSWFpQUJJQVlvQWdBUVhDQUp2Q0FJdkhOQkFFNGdDQ0FKVzNFUWlBRU1BUXNnQlVHUXFoSkdCRUFnQWhCaElRSWdBeEJoSVFNZ0JFRUlhaUFCSUFZb0FnQVFYQ0FDSUFOR0VJZ0JEQUVMSUFWQm9MTVNSZ1JBSUFJUVdTRUNJQU1RV1NFRElBUkJDR29nQVNBR0tBSUFFRndnQWlBRFJoQ0lBUXdCQ3lBRlFkQ29Fa1lFUUNBQ0VEOGhDQ0FERUQ4aENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFtOElBaThjMEVBVGlBSUlBbGJjUkNJQVF3QkN5QUZRZENsRWtjTkFTQUNFUG9CSVFJZ0F4RDZBU0VESUFSQkNHb2dBU0FHS0FJQUVGd2dBaUFEYzBFQmN4Q0lBUXNnQUNBRUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JFRVFhaVFBQzRNREFReC9JQUFvQWdBaUJDZ0NsR0FpQnlBQUtBSU1SZ1JBSUFBb0FnZ1BDeU1BUVJCcklnRWtBQ01BUWNBQmF5SURKQUFnQTBHNEFXb2dCQ0FBUVFScUlnSVEwaElnQkVHRTRBQnFLQUlBSWdoQkFXc2hDU0FDS0FJQUlRb2dCQ2dDZ0dBaEN5QURLQUs4QVNFTUlBTW9BcmdCSVFJQ1FBTkFJQVVnQ0VjRVFDQUxJQUpCQzNScUlnWXRBUEFQUlFSQUlBRkJBRFlDRENBQlFRQTZBQWdNQXdzQ1FDQUdLQUw0RHlBTVJ3MEFJQW9nQmlnQ0FFY05BQ0FCSUFJMkFnd2dBVUVCT2dBSURBTUxJQVVnQmlnQy9BOUxCRUFnQVVFQU5nSU1JQUZCQURvQUNBd0RCU0FDUVFGcVFRQWdBaUFKUnhzaEFpQUZRUUZxSVFVTUFnc0FDd3NnQTBFSWFrR0d0UU5CbmdSQkRpQURRYWdCYWhBZElnSVFGeUlGUVJocVFkSTFFQTRhSUFVUUdDQUJRUUEyQWd3Z0FVRUFPZ0FJSUFJUUhnc2dBMEhBQVdva0FDQUJLQUlNSVFNZ0JDZ0NnR0FoQWlBQkxRQUlJUVFnQVVFUWFpUUFJQUFnQnpZQ0RDQUFJQUlnQTBFTGRHcEJDR3BCQUNBRUd5SUFOZ0lJSUFBTENRQWdBQkRmREJBZkMzOEJBMzhnQUVFTWFpSUJRWWdFYWhBUEdpQUJRZndEYWhBUEdpQUJRZkFEYWhBUEdpQUJRY3dEYWlFRElBRkI1QU5xRUE4aEFnTkFJQUpCREdzUUR5SUNJQU5IRFFBTElBRkJyQUZxSVFJRFFDQURRUXhyRUE4aUF5QUNSdzBBQ3lBQlFRUnFJUU1EUUNBQ1FReHJFQThpQWlBRFJ3MEFDeUFCRUxRVElBQUx4QUVCQkg4Z0FpQUFFUE1KSWdOTkJFQWdBQkNQQWlFRklBSUVRQ0FDSVFNQ1FDQUJJQVVpQkVZTkFDQUVJQUZySUFOQkFuUlBCRUFnQTBVTkFRTkFJQVFnQVNnQ0FEWUNBQ0FFUVFScUlRUWdBVUVFYWlFQklBTkJBV3NpQXcwQUN3d0JDeUFEUlEwQUEwQWdCQ0FEUVFGcklnTkJBblFpQm1vZ0FTQUdhaWdDQURZQ0FDQUREUUFMQ3dzZ0FDQUNFUElKSUFVZ0FrRUNkR3BCQUJDWkFnOExJQUFnQXlBQ0lBTnJJQUFvQWdRZ0FDMEFDeENZQVNJQVFRQWdBQ0FDSUFFUW1oTUxXZ0VDZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUVRdHdNaEF5QUFRZjhCY1NJQlFZQUJUd1JBUVg5QmZ5QUFRUmgwUVJoMVFmKy9BM0ZCOUtrZ0tBSUFLQUlBR3lBQVFYOUdHeUVCQ3lBREVMWURJQUpCRUdva0FDQUJDKzhOQkFWL0EzMENmZ044SXdCQjRBQnJJZ1lrQUNBR1FRQTJBa1FnQkNBRUtBSUFLQUlJRVFBQUlBWkJ4QUJxRUNJYUlBWkJBRFlDUUNBRklBVW9BZ0FvQWdnUkFBQWdCa0ZBYXhBaUdnSkFJQVlvQWtRaUJ5QUdLQUpBSWdnZ0J5QUlTeHNpQ2tFQlJnUkFJQU1vQWdBaEJ5QURLQUlFSVFJZ0JDQUVLQUlBS0FJSUVRQUFJUUVnQmlBSE5nSVFJQVlnQWlrQ0NEY0NIQ0FHSUFJb0FoQTJBaVFnQmlBQ0tRSUFOd0lVSUFZZ0FUWUNLQ0FFSUFRb0FnQW9BZ2dSQUFBaUFVVUVRQ0FBUVFBNkFBUU1BZ3NnQmtFUWFrRUVjaUVJQWtBQ1FDQUJLQUlFSWdGQjBLQVNSZ1JBSUFRUVl5RVBJQVVRWXlFT0l3QkJFR3NpQWlRQUlBWkIwQUJxSWdFQ2Z5QUJBbjRnRGxCRklBNUNmMUlnRDBLQWdJQ0FnSUNBZ0lCL1VuSnhSUVJBSUFJZ0QwR2ZuUWtnRGhEdUJpQUhJQUlnQ0JCZElBSVFEeHBDQUNBSExRQUVEUUVhUVFJTUFnc2dEeUFPZ1FzM0F3QkJBUXM2QUFnZ0FrRVFhaVFBSUFFUXNnRUVRQ0FHUWNnQWFpQUhJQVlvQWlnZ0JrSFFBR29RU2lrREFCRDlBUXdDQ3lBR1FRSTZBRXdNQVFzZ0FVSHdueEpHQkVBZ0JCQThJUkVnQlJBOElSQWpBRUVRYXlJQ0pBQWdCa0hRQUdvaUFRSi9Ba0FDUUNBUVJBQUFBQUFBQUFBQVlnUkFJQkVnRUNBUklCQ2puYUtoSWhLWlJBQUFBQUFBQVBCL1l3MEJDeUFDSUJGQm41MEpJQkFRN1FZZ0J5QUNJQWdRWFNBQ0VBOGFRUUlnQnkwQUJFVU5BaG9nQVVJQU53TUFEQUVMSUFFZ0Vqa0RBQXRCQVFzNkFBZ2dBa0VRYWlRQUlBRVFzZ0VFUUNBR1FjZ0FhaUFISUFnZ0JpZ0NLQ0FHUWRBQWFoQktLd01BRUhNTUFnc2dCa0VDT2dCTURBRUxJQUZCc0trU1JnUkFJQVFRTkNFTElBVVFOQ0VNSXdCQkVHc2lBaVFBSUFaQjBBQnFJZ0VDZndKQUFrQWdERU1BQUFBQVhBUkFJQXNnRENBTElBeVZqNVNUSWcyTFF3QUFnSDlkRFFFTElBSWdDMEdmblFrZ0RCRHNCaUFISUFJZ0NCQmRJQUlRRHhwQkFpQUhMUUFFUlEwQ0dpQUJRUUEyQWdBTUFRc2dBU0FOT0FJQUMwRUJDem9BQkNBQ1FSQnFKQUFnQVJBckJFQWdCa0hJQUdvZ0J5QUlJQVlvQWlnZ0JrSFFBR29RR2lvQ0FCQnJEQUlMSUFaQkFqb0FUQXdCQ3lBQlFaQ3FFa1lFUUNBRUVHRWhBeUFGRUdFaEFpTUFRUkJySWdRa0FDQUdRZEFBYWlJQkFuOENRQUpBQWtBQ1FBSkFJQUpCQVdvT0FnRUFBZ3RCQUNFRklBUWdBMEdmblFsQkFCREhDU0FISUFRZ0NCQmRJQVFRRHhvZ0J5MEFCQTBDREFNTElBTkJnSUNBZ0hoSERRQWdCRUdBZ0lDQWVFR2ZuUWxCZnhESENTQUhJQVFnQ0JCZElBUVFEeHBCQUNFRklBY3RBQVJGRFFJTUFRc2dBeUFDYnlFRkN5QUJJQVUyQWdCQkFRd0JDMEVDQ3pvQUJDQUVRUkJxSkFBZ0FSQXJCRUFnQmtISUFHb2dCeUFHS0FJb0lBWkIwQUJxRUJvb0FnQVFzUUVNQWdzZ0JrRUNPZ0JNREFFTElBRkJvTE1TUmdSQUlBUVFXU0VESUFVUVdTRUNJd0JCRUdzaUJDUUFJQVpCMEFCcUlnRUNmeUFCQW44Z0FrVUVRQ0FFSUFOQm41MEpRUUFRclF3Z0J5QUVJQWdRWFNBRUVBOGFRUUFnQnkwQUJBMEJHa0VDREFJTElBTWdBbkFMTmdJQVFRRUxPZ0FFSUFSQkVHb2tBQ0FCRUNzRVFDQUdRY2dBYWlBSElBWW9BaWdnQmtIUUFHb1FHaWdDQUJDdEFRd0NDeUFHUVFJNkFFd01BUXNnQVVIUXFCSkhEUUVnQmtIUUFHb2hBaUFFRUQ4aERTQUZFRDhoQ3lNQVFTQnJJZ01rQUFKQUFrQUNRQ0FMdkNJQlF3QUFBQUFRUmlJTXZITkJBRTRnQ3lBTVczRkZCRUJEQUFBQWdCQkdJZ3k4SUFGelFRQklJQXNnREZ4eURRRUxEQUVMSUEwZ0N5QU5JQXVWajVTVEVFWWlESXREQUFDQWYxMUZEUUFnQTBFQk9nQWNJQU1nRERnQ0dBd0JDeUFEUVFBNkFCd2dBMEVBT2dBWUN3SkFJQU10QUJ4RkJFQWdBMEVJYWlJQklBMUJuNTBKSUFzUTZnWWdCeUFCSUFnUVhTQUJFQThhSUFJZ0J5MEFCQVIvSUFKREFBQUFBQkJHT0FJQVFRRUZRUUlMT2dBRURBRUxJQU1xQWhnUVJpRU5JQUpCQVRvQUJDQUNJQTA0QWdBTElBTkJJR29rQUNBQ0VDc0VRQ0FHUWNnQWFpQUhJQWdnQmlnQ0tDQUdRZEFBYWhBYUtnSUFFSElNQVFzZ0JrRUNPZ0JNQ3lBQUlBWXBBMGczQWdBTUFnc2dBRUVBT2dBRURBRUxJQVpDZ0lDQWdJQUJOd0kwSUFZZ0JrRVFhaUlJTmdJd0lBZ2dDaEE1SUFaQk1Hb2hCd0pBQWtBRFFDQUpJQXBHRFFFZ0JrSFFBR29pQ0NBQklBSkJBQkFpSUFNZ0JpZ0NSRUVCUndSL0lBUWdDU0FFS0FJQUtBSU1FUUVBQlNBRUN5QUdLQUpBUVFGSEJIOGdCU0FKSUFVb0FnQW9BZ3dSQVFBRklBVUxFTElUSUFnUUt3UkFJQVpCRUdvZ0JrSFFBR29RR2hBa0lBbEJBV29oQ1F3QkN3c2dCa0hRQUdvUVBSb2dBRUVDT2dBRURBRUxJQVlnQnpZQ0NDQUdJQVlvQWpBZ0JrRVFha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJFR29RSXdzZ0JrSGdBR29rQUFzSkFDQUFFT2tNRUI4TENnQWdBQ2dDQUJEQkJRc0tBQ0FBUVFockVPSU1Dd29BSUFCQkNHc1E0d3dMQ2dBZ0FFRUlheERrREFzS0FDQUFRUWhyRU9VTUN3b0FJQUJCQ0dzUTVnd0xDZ0FnQUVFSWF4RG5EQXNLQUNBQVFRaHJFT2dNQzRZQkFRTi9JQUJCREdvaUFVR0lCR29RaHdFYUlBRkIvQU5xRUljQkdpQUJRZkFEYWhDSEFSb2dBVUhNQTJvaEF5QUJRZVFEYWhDSEFTRUNBMEFnQWtFTWF4Q0hBU0lDSUFOSERRQUxJQUZCckFGcUlRSURRQ0FEUVF4ckVJY0JJZ01nQWtjTkFBc2dBVUVFYWlFREEwQWdBa0VNYXhDSEFTSUNJQU5IRFFBTElBRVF0Qk1nQUFzNEFRSi9Jd0JCRUdzaUFpUUFJQUFnQVJCN0VQd0VJZ00yQWdBZ0EwVUVRQ0FDUWYvcENTQUJFTVFCRUc4QUN5QUNRUkJxSkFBZ0FBczJBUUYvSXdCQkVHc2lBaVFBSUFBZ0FSQjdFUHdFSWdBMkFnQWdBRVVFUUNBQ1FkYnBDU0FCRU1RQkVHOEFDeUFDUVJCcUpBQUxTQUVCZnlNQVFSQnJJZ01rQUNBQUlBSVE0eE1pQUVHOG5nODJBZ0FnQUNBQkVIc1EvQVFpQWpZQ0NDQUNSUVJBSUFOQmxPd0pJQUVReEFFUWJ3QUxJQU5CRUdva0FDQUFDMGdCQVg4akFFRVFheUlESkFBZ0FDQUNFT1FUSWdCQmlKNFBOZ0lBSUFBZ0FSQjdFUHdFSWdJMkFoQWdBa1VFUUNBRFFkSHNDU0FCRU1RQkVHOEFDeUFEUVJCcUpBQWdBQXQwQVFOL0lBQkIrSlFQTmdJQUlBQkJDR29oQVFOQUlBQW9BZ2dpQWlBQUtBSU1FSUlFSUFOTEJFQWdBaUFERUljSEtBSUFJZ0lFUUNBQ0VNd0hHZ3NnQTBFQmFpRUREQUVMQ3lBQVFaZ0JhaEFQR2lBQktBSUFCRUFnQVJEeURDQUJFUEFKSUFFb0FnQWdBUkR2Q1JEdkRBc2dBQXNFQUNBQkM1b0tBZ1YvQW40akFFSGdBR3NpQmlRQUlBWkJBRFlDUkNBRUlBUW9BZ0FvQWdnUkFBQWdCa0hFQUdvUUlob2dCa0VBTmdKQUlBVWdCU2dDQUNnQ0NCRUFBQ0FHUVVCckVDSWFBa0FnQmlnQ1JDSUpJQVlvQWtBaUNDQUlJQWxKR3lJSlFRRkdCRUFnQXlnQ0FDRUJJQU1vQWdRaEFpQUVJQVFvQWdBb0FnZ1JBQUFoQXlBR0lBRTJBaEFnQmlBQ0tRSUlOd0ljSUFZZ0FpZ0NFRFlDSkNBR0lBSXBBZ0EzQWhRZ0JpQUROZ0lvSUFRZ0JDZ0NBQ2dDQ0JFQUFDSURSUVJBSUFCQkFEb0FCQXdDQ3lBR1FSQnFRUVJ5SVFJQ1FBSkFJQU1vQWdRaUEwSFFvQkpHQkVBZ0JCQmpJUXNnQlJCaklRd2pBRUVRYXlJREpBQWdCa0hRQUdvaUJBSi9Ba0FnREZCRklBeENmMUlnQzBLQWdJQ0FnSUNBZ0lCL1VuSnhSUVJBSUFNZ0MwSFprZ2NnREJEdUJpQUJJQU1nQWhCZElBTVFEeG9nQVMwQUJBMEJRUUlNQWdzZ0N5QU1meUVMQ3lBRUlBczNBd0JCQVFzNkFBZ2dBMEVRYWlRQUlBUVFzZ0VFUUNBR1FjZ0FhaUFCSUFZb0FpZ2dCa0hRQUdvUVNpa0RBQkQ5QVF3Q0N5QUdRUUk2QUV3TUFRc2dBMEh3bnhKR0JFQWdCa0hRQUdvaUF5QUJJQUlnQkJBOElBVVFQQkRyRENBREVMSUJCRUFnQmtISUFHb2dBU0FDSUFZb0FpZ2dCa0hRQUdvUVNpc0RBQkJ6REFJTElBWkJBam9BVEF3QkN5QURRYkNwRWtZRVFDQUdRZEFBYWlJRElBRWdBaUFFRURRZ0JSQTBFT29NSUFNUUt3UkFJQVpCeUFCcUlBRWdBaUFHS0FJb0lBWkIwQUJxRUJvcUFnQVFhd3dDQ3lBR1FRSTZBRXdNQVFzZ0EwR1FxaEpHQkVBZ0JCQmhJUVFnQlJCaElRVWpBRUVRYXlJREpBQWdCa0hRQUdvaUJ3Si9Ba0FDUUFKQUFrQUNRQ0FGUVFGcURnSUJBQUlMSUFNZ0JFSFprZ2RCQUJESENTQUJJQU1nQWhCZElBTVFEeG9nQVMwQUJBMENEQU1MSUFSQmdJQ0FnSGhIRFFBZ0EwR0FnSUNBZUVIWmtnZEJmeERIQ1NBQklBTWdBaEJkSUFNUUR4cEJnSUNBZ0hnaEJDQUJMUUFFUlEwQ0RBRUxJQVFnQlcwaEJBc2dCeUFFTmdJQVFRRU1BUXRCQWdzNkFBUWdBMEVRYWlRQUlBY1FLd1JBSUFaQnlBQnFJQUVnQmlnQ0tDQUdRZEFBYWhBYUtBSUFFTEVCREFJTElBWkJBam9BVEF3QkN5QURRYUN6RWtZRVFDQUVFRmtoQXlBRkVGa2hCU01BUVJCcklnUWtBQ0FHUWRBQWFpSUhBbjhDUUNBRlJRUkFJQVFnQTBIWmtnZEJBQkN0RENBQklBUWdBaEJkSUFRUUR4b2dBUzBBQkEwQlFRSU1BZ3NnQXlBRmJpRURDeUFISUFNMkFnQkJBUXM2QUFRZ0JFRVFhaVFBSUFjUUt3UkFJQVpCeUFCcUlBRWdCaWdDS0NBR1FkQUFhaEFhS0FJQUVLMEJEQUlMSUFaQkFqb0FUQXdCQ3lBRFFkQ29Fa2NOQVNBR1FkQUFhaUlESUFFZ0FpQUVFRDhnQlJBL0VPd0pJQU1RS3dSQUlBWkJ5QUJxSUFFZ0FpQUdLQUlvSUFaQjBBQnFFQm9xQWdBUWNnd0JDeUFHUVFJNkFFd0xJQUFnQmlrRFNEY0NBQXdDQ3lBQVFRQTZBQVFNQVFzZ0JrS0FnSUNBZ0FFM0FqUWdCaUFHUVJCcUlnZzJBakFnQ0NBSkVEa2dCa0V3YWlFSUFrQUNRQU5BSUFjZ0NVWU5BU0FHUWRBQWFpSUtJQUVnQWtFQUVDSWdBeUFHS0FKRVFRRkhCSDhnQkNBSElBUW9BZ0FvQWd3UkFRQUZJQVFMSUFZb0FrQkJBVWNFZnlBRklBY2dCU2dDQUNnQ0RCRUJBQVVnQlFzUXd4TWdDaEFyQkVBZ0JrRVFhaUFHUWRBQWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FkQUFhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUlOZ0lJSUFZZ0JpZ0NNQ0FHUVJCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFUWFoQWpDeUFHUWVBQWFpUUFDeElBSUFRZ0FqWUNBQ0FISUFVMkFnQkJBd3VlQXdFRWYwRUFJUUVnQWlFQUEwQUNRQ0FBSUFOUElBRWdCRTl5RFFCQkFTRUdBa0FnQUN3QUFDSUZRUUJPRFFBZ0JVRkNTUTBCSUFWQlgwMEVRQ0FESUFCclFRSklEUUpCQWlFR0lBQXRBQUZCd0FGeFFZQUJSZzBCREFJTElBVkIvd0Z4SVFZQ1FBSkFJQVZCYjAwRVFDQURJQUJyUVFOSURRUWdBQzBBQWlFSElBQXRBQUVoQlNBR1FlMEJSZzBCSUFaQjRBRkdCRUFnQlVIZ0FYRkJvQUZHRFFNTUJRc2dCVUhBQVhGQmdBRkhEUVFNQWdzZ0F5QUFhMEVFU0NBRlFYUkxjaUFFSUFGclFRSkpjZzBESUFBdEFBTWhCeUFBTFFBQ0lRZ2dBQzBBQVNFRkFrQUNRQUpBQWtBZ0JrSHdBV3NPQlFBQ0FnSUJBZ3NnQlVId0FHcEIvd0Z4UVRCSkRRSU1CZ3NnQlVId0FYRkJnQUZHRFFFTUJRc2dCVUhBQVhGQmdBRkhEUVFMSUFoQndBRnhRWUFCUnlBSFFjQUJjVUdBQVVkeUlBWkJFblJCZ0lEd0FIRWdCVUV3Y1VFTWRISkIvLy9EQUV0eURRTWdBVUVCYWlFQlFRUWhCZ3dDQ3lBRlFlQUJjVUdBQVVjTkFndEJBeUVHSUFkQndBRnhRWUFCUncwQkN5QUJRUUZxSVFFZ0FDQUdhaUVBREFFTEN5QUFJQUpyQzVjRkFRTi9Jd0JCRUdzaUFDUUFJQUFnQWpZQ0RDQUFJQVUyQWdnQ2Z5QUFJQUkyQWd3Z0FDQUZOZ0lJQWtBQ1FBSkFBMEFnQUNnQ0RDSUJJQU5QSUFVZ0JrOXlSUVJBSUFFc0FBQWlDRUgvQVhFaEFpQUFBbjhnQ0VFQVRnUkFJQVVnQWpzQkFDQUJRUUZxREFFTFFRSWhDaUFJUVVKSkRRVWdDRUZmVFFSQUlBTWdBV3RCQWtnTkJTQUJMUUFCSWdoQndBRnhRWUFCUncwRUlBVWdDRUUvY1NBQ1FRWjBRY0FQY1hJN0FRQWdBVUVDYWd3QkN5QUlRVzlOQkVBZ0F5QUJhMEVEU0EwRklBRXRBQUloQ1NBQkxRQUJJUWdDUUFKQUlBSkI3UUZIQkVBZ0FrSGdBVWNOQVNBSVFlQUJjVUdnQVVZTkFnd0hDeUFJUWVBQmNVR0FBVVlOQVF3R0N5QUlRY0FCY1VHQUFVY05CUXNnQ1VIQUFYRkJnQUZIRFFRZ0JTQUpRVDl4SUFoQlAzRkJCblFnQWtFTWRISnlPd0VBSUFGQkEyb01BUXNnQ0VGMFN3MEZRUUVoQ2lBRElBRnJRUVJJRFFNZ0FTMEFBeUVKSUFFdEFBSWhDQ0FCTFFBQklRRUNRQUpBQWtBQ1FDQUNRZkFCYXc0RkFBSUNBZ0VDQ3lBQlFmQUFha0gvQVhGQk1FOE5DQXdDQ3lBQlFmQUJjVUdBQVVjTkJ3d0JDeUFCUWNBQmNVR0FBVWNOQmdzZ0NFSEFBWEZCZ0FGSElBbEJ3QUZ4UVlBQlIzSU5CU0FHSUFWclFRUklEUU5CQWlFS0lBRkJESFJCZ0lBTWNTQUNRUWR4SWdKQkVuUnlRZi8vd3dCTERRTWdCU0FJUVFSMlFRTnhJQUZCQW5RaUFVSEFBWEVnQWtFSWRISWdBVUU4Y1hKeVFjRC9BR3BCZ0xBRGNqc0JBQ0FBSUFWQkFtbzJBZ2dnQlNBSVFRWjBRY0FIY1NBSlFUOXhja0dBdUFOeU93RUNJQUFvQWd4QkJHb0xOZ0lNSUFBZ0FDZ0NDRUVDYWlJRk5nSUlEQUVMQ3lBQklBTkpJUW9MSUFvTUFndEJBUXdCQzBFQ0N5RUJJQVFnQUNnQ0REWUNBQ0FISUFBb0FnZzJBZ0FnQUVFUWFpUUFJQUVMeUFVQkFYOGpBRUVRYXlJQUpBQWdBQ0FDTmdJTUlBQWdCVFlDQ0FKL0lBQWdBallDRENBQUlBVTJBZ2dnQUNnQ0RDRUNBa0FEUUNBQ0lBTlBCRUJCQUNFRkRBSUxBa0FDUUNBQ0x3RUFJZ0ZCL3dCTkJFQkJBU0VGSUFZZ0FDZ0NDQ0lDYTBFQVRBMEVJQUFnQWtFQmFqWUNDQ0FDSUFFNkFBQU1BUXNnQVVIL0QwMEVRQ0FHSUFBb0FnZ2lBbXRCQWtnTkFpQUFJQUpCQVdvMkFnZ2dBaUFCUVFaMlFjQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQURBRUxJQUZCLzY4RFRRUkFJQVlnQUNnQ0NDSUNhMEVEU0EwQ0lBQWdBa0VCYWpZQ0NDQUNJQUZCREhaQjRBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFR2RrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3dKQUFrQWdBVUgvdHdOTkJFQkJBU0VGSUFNZ0FtdEJCRWdOQmlBQ0x3RUNJZ2hCZ1BnRGNVR0F1QU5IRFFFZ0JpQUFLQUlJYTBFRVNBMEdJQUFnQWtFQ2FqWUNEQ0FBSUFBb0FnZ2lBa0VCYWpZQ0NDQUNJQUZCQm5aQkQzRkJBV29pQWtFQ2RrSHdBWEk2QUFBZ0FDQUFLQUlJSWdWQkFXbzJBZ2dnQlNBQ1FRUjBRVEJ4SUFGQkFuWkJEM0Z5UVlBQmNqb0FBQ0FBSUFBb0FnZ2lBa0VCYWpZQ0NDQUNJQWhCQm5aQkQzRWdBVUVFZEVFd2NYSkJnQUZ5T2dBQUlBQWdBQ2dDQ0NJQlFRRnFOZ0lJSUFFZ0NFRS9jVUdBQVhJNkFBQU1Bd3NnQVVHQXdBTlBEUUVMUVFJTUJRc2dCaUFBS0FJSUlnSnJRUU5JRFFFZ0FDQUNRUUZxTmdJSUlBSWdBVUVNZGtIZ0FYSTZBQUFnQUNBQUtBSUlJZ0pCQVdvMkFnZ2dBaUFCUVFaMlFUOXhRWUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJQM0ZCZ0FGeU9nQUFDeUFBSUFBb0FneEJBbW9pQWpZQ0RBd0JDd3RCQVF3QkN5QUZDeUVCSUFRZ0FDZ0NERFlDQUNBSElBQW9BZ2cyQWdBZ0FFRVFhaVFBSUFFTFJRRUJmeU1BUVJCcklnVWtBQ0FGSUFRMkFnd2dCU0FCTmdJSUlBQWdBU2dDQUNBQ0lBVkJDR29nQXlnQ0FDZ0NBQ0lBS0FJQUlBQW9BZ1FRd3hNZ0JVRVFhaVFBQzRzREFRUi9JQUloQUFOQUFrQWdCQ0FIVFNBQUlBTlBjZzBBUVFFaEJRSkFJQUFzQUFBaUFVRUFUZzBBSUFGQlFra05BU0FCUVY5TkJFQWdBeUFBYTBFQ1NBMENRUUloQlNBQUxRQUJRY0FCY1VHQUFVWU5BUXdDQ3lBQlFmOEJjU0VHQWtBQ1FDQUJRVzlOQkVBZ0F5QUFhMEVEU0EwRUlBQXRBQUloQ0NBQUxRQUJJUUVnQmtIdEFVWU5BU0FHUWVBQlJnUkFJQUZCNEFGeFFhQUJSZzBEREFVTElBRkJ3QUZ4UVlBQlJ3MEVEQUlMSUFNZ0FHdEJCRWdnQVVGMFMzSU5BeUFBTFFBRElRVWdBQzBBQWlFSUlBQXRBQUVoQVFKQUFrQUNRQUpBSUFaQjhBRnJEZ1VBQWdJQ0FRSUxJQUZCOEFCcVFmOEJjVUV3U1EwQ0RBWUxJQUZCOEFGeFFZQUJSZzBCREFVTElBRkJ3QUZ4UVlBQlJ3MEVDeUFJUWNBQmNVR0FBVWNnQlVIQUFYRkJnQUZIY2cwRFFRUWhCU0FHUVJKMFFZQ0E4QUJ4SUFGQk1IRkJESFJ5UWYvL3d3QkxEUU1NQWdzZ0FVSGdBWEZCZ0FGSERRSUxRUU1oQlNBSVFjQUJjVUdBQVVjTkFRc2dCMEVCYWlFSElBQWdCV29oQUF3QkN3c2dBQ0FDYXd1NkJBRUZmeU1BUVJCcklnQWtBQ0FBSUFJMkFnd2dBQ0FGTmdJSUFuOGdBQ0FDTmdJTUlBQWdCVFlDQ0FKQUFrQURRQ0FBS0FJTUlnRWdBMDhnQlNBR1QzSkZCRUFnQVN3QUFDSUlRZjhCY1NFQ0FrQWdDRUVBVGdSQVFRRWhDQXdCQzBFQ0lRb2dDRUZDU1EwRElBaEJYMDBFUUNBRElBRnJRUUpJRFFVZ0FTMEFBU0lJUWNBQmNVR0FBVWNOQkNBSVFUOXhJQUpCQm5SQndBOXhjaUVDUVFJaENBd0JDeUFJUVc5TkJFQWdBeUFCYTBFRFNBMEZJQUV0QUFJaENTQUJMUUFCSVFnQ1FBSkFJQUpCN1FGSEJFQWdBa0hnQVVjTkFTQUlRZUFCY1VHZ0FVWU5BZ3dIQ3lBSVFlQUJjVUdBQVVZTkFRd0dDeUFJUWNBQmNVR0FBVWNOQlFzZ0NVSEFBWEZCZ0FGSERRUWdDVUUvY1NBQ1FReDBRWURnQTNFZ0NFRS9jVUVHZEhKeUlRSkJBeUVJREFFTElBaEJkRXNOQXlBRElBRnJRUVJJRFFRZ0FTMEFBeUVMSUFFdEFBSWhEQ0FCTFFBQklRa0NRQUpBQWtBQ1FDQUNRZkFCYXc0RkFBSUNBZ0VDQ3lBSlFmQUFha0gvQVhGQk1Fa05BZ3dHQ3lBSlFmQUJjVUdBQVVZTkFRd0ZDeUFKUWNBQmNVR0FBVWNOQkFzZ0RFSEFBWEZCZ0FGSElBdEJ3QUZ4UVlBQlIzSU5BMEVFSVFnZ0MwRS9jU0FNUVFaMFFjQWZjU0FDUVJKMFFZQ0E4QUJ4SUFsQlAzRkJESFJ5Y25JaUFrSC8vOE1BU3cwREN5QUZJQUkyQWdBZ0FDQUJJQWhxTmdJTUlBQWdBQ2dDQ0VFRWFpSUZOZ0lJREFFTEN5QUJJQU5KSVFvTElBb01BUXRCQVFzaEFTQUVJQUFvQWd3MkFnQWdCeUFBS0FJSU5nSUFJQUJCRUdva0FDQUJDNDRFQUNNQVFSQnJJZ0FrQUNBQUlBSTJBZ3dnQUNBRk5nSUlBbjhnQUNBQ05nSU1JQUFnQlRZQ0NDQUFLQUlNSVFFQ1FBTkFJQUVnQTA4RVFFRUFJUUlNQWd0QkFpRUNJQUVvQWdBaUFVSC8vOE1BU3lBQlFZQndjVUdBc0FOR2NnMEJBa0FDUUNBQlFmOEFUUVJBUVFFaEFpQUdJQUFvQWdnaUJXdEJBRXdOQkNBQUlBVkJBV28yQWdnZ0JTQUJPZ0FBREFFTElBRkIvdzlOQkVBZ0JpQUFLQUlJSWdKclFRSklEUUlnQUNBQ1FRRnFOZ0lJSUFJZ0FVRUdka0hBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3lBR0lBQW9BZ2dpQW1zaEJTQUJRZi8vQTAwRVFDQUZRUU5JRFFJZ0FDQUNRUUZxTmdJSUlBSWdBVUVNZGtIZ0FYSTZBQUFnQUNBQUtBSUlJZ0pCQVdvMkFnZ2dBaUFCUVFaMlFUOXhRWUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJQM0ZCZ0FGeU9nQUFEQUVMSUFWQkJFZ05BU0FBSUFKQkFXbzJBZ2dnQWlBQlFSSjJRZkFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJESFpCUDNGQmdBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFR2RrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXNnQUNBQUtBSU1RUVJxSWdFMkFnd01BUXNMUVFFTUFRc2dBZ3NoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkN4VUFJQUJCc0o4UE5nSUFJQUJCREdvUUR4b2dBQXNKQUNBQUVNd1RFQjhMRlFBZ0FFSFludzgyQWdBZ0FFRVFhaEFQR2lBQUN3a0FJQUFRemhNUUh3c0tBQ0FBRU1BQk5nSUFDeVlBQW44Q1FDQUJRUjVMRFFBZ0FDMEFlQTBBSUFCQkFUb0FlQ0FBREFFTElBRVFrd1lMQ3dvQVFielFBUkNXREFBTFBnRUNmeU1BUVJCcklnQWtBQ0FBUWYvLy8vOEROZ0lNSUFCQi8vLy8vd2MyQWdnZ0FFRU1haUFBUVFocUVJZ0ZLQUlBSVFFZ0FFRVFhaVFBSUFFTENBQWdBQkNZQkJvTER3QWdBQ2dDQUNBQUtBSUVOZ0lFQ3lRQUlBQWdBVFlDQUNBQUlBRW9BZ1FpQVRZQ0JDQUFJQUVnQWtFQ2RHbzJBZ2dnQUF0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUJFTk1USWdOTkJFQWdBQkR2Q1NJQUlBTkJBWFpKQkVBZ0FpQUFRUUYwTmdJSUlBSkJDR29nQWtFTWFoQ0pCU2dDQUNFREN5QUNRUkJxSkFBZ0F3OExFTklUQUFzSkFDQUFJQUVRaHdRTEZBQWdBQ0FCRUtNQklnQkJrTTRQTmdJQUlBQUxGQUFnQUNBQkVLTUJJZ0JCbU0wUE5nSUFJQUFMS3dBZ0FDQUJFS01CSWdCQkNHb2lBVUdJM0E4MkFnQWdBRUhVdGc4MkFnQWdBVUdFdHc4MkFnQWdBQXNyQUNBQUlBRVFvd0VpQUVFSWFpSUJRZVRiRHpZQ0FDQUFRY3kwRHpZQ0FDQUJRZnkwRHpZQ0FDQUFDeFFBSUFBZ0FSQ2pBU0lBUWZURER6WUNBQ0FBQ3hRQUlBQWdBUkNqQVNJQVFZREREellDQUNBQUN4UUFJQUFnQVJDakFTSUFRWXpDRHpZQ0FDQUFDeFFBSUFBZ0FSQ2pBU0lBUWZqQUR6WUNBQ0FBQ3lnQUlBQWdBUkNqQVNJQVFxNkFnSURBQlRjQ0NDQUFRZGlmRHpZQ0FDQUFRUkJxRUhRYUlBQUxKUUFnQUNBQkVLTUJJZ0JCcnRnQU93RUlJQUJCc0o4UE5nSUFJQUJCREdvUWRCb2dBQXNVQUNBQUlBRVFvd0VpQUVHQW93ODJBZ0FnQUFzckFDQUFJQUVRb3dFaUFFRUFPZ0FNSUFCQkFEWUNDQ0FBUWN5VkR6WUNBQ0FBUVlDV0R6WUNDQ0FBQ3hRQUlBQWdBUkNqQVNJQVFiU3REellDQUNBQUN4UUFJQUFnQVJDakFTSUFRWlN0RHpZQ0FDQUFDMDhCQW44akFFRVFheUlDSkFBZ0FpQUFJQUVRMWhNaUFDZ0NCQ0VCSUFBb0FnZ2hBd05BSUFFZ0EwWUVRQ0FBRU5VVElBSkJFR29rQUFVZ0FSRFVFeUFBSUFGQkJHb2lBVFlDQkF3QkN3c0xPUUVCZnhEVEV5QUJTUVJBRU5JVEFBc2dBQ0FBRVBBSklBRVEwUk1pQWpZQ0FDQUFJQUkyQWdRZ0FCRFdCU0FDSUFGQkFuUnFOZ0lBQ3ljQUlBQkNBRGNEQUNBQVFRaHFFSmdFUVFBNkFJQUJJQUJCSGhEb0V5QUFRUjRRNXhNZ0FBczRBUUovSXdCQkVHc2lBU1FBSUFGQkNHb2dBQkMzQXlFQVFRUkJBVUgwcVNBb0FnQW9BZ0FiSVFJZ0FCQzJBeUFCUVJCcUpBQWdBZ3NKQUNBQUVQVU1FQjhMSHdBZ0FDQUJJQVFnQWlBREtBSUFLQUlBSWdBb0FnQWdBQ2dDQkJDVERRc0VBRUYvQzYwR0FRbC9JQUlnQURZQ0FDQURRWUFFY1NFVUlBZEJBblFoRlFOQUlCTkJCRVlFUUNBTktBSUVJQTB0QUFzUW1BRkJBVXNFUUNBTkVKQUdJUVVqQUVFUWF5SUVKQUFnQkNBRk5nSUlJQVJCQ0dvUWdRY29BZ0FoQlNBRVFSQnFKQUFnQWlBRklBMFF2UVVnQWlnQ0FCRDJERFlDQUFzZ0EwR3dBWEVpQTBFUVJ3UkFJQUVnQTBFZ1JnUi9JQUlvQWdBRklBQUxOZ0lBQ3dVQ1FBSkFBa0FDUUFKQUFrQWdDQ0FUYWl3QUFBNEZBQUVEQWdRRkN5QUJJQUlvQWdBMkFnQU1CQXNnQVNBQ0tBSUFOZ0lBSUFaQklCQ0pBeUVISUFJZ0FpZ0NBQ0lQUVFScU5nSUFJQThnQnpZQ0FBd0RDeUFOS0FJRUlBMHRBQXNRL2drTkFpQU5RUUFROVFFb0FnQWhCeUFDSUFJb0FnQWlEMEVFYWpZQ0FDQVBJQWMyQWdBTUFnc2dEQ2dDQkNBTUxRQUxFUDRKSUJSRmNnMEJJQUlnREJDUUJpQU1FTDBGSUFJb0FnQVE5Z3cyQWdBTUFRc2dBaWdDQUNFV0lBUWdGV29pQkNFSEEwQUNRQ0FGSUFkTkRRQWdCa0hBQUNBSEtBSUFFTWtDUlEwQUlBZEJCR29oQnd3QkN3c2dEa0VBU2dSQUlBSW9BZ0FoRHlBT0lSQURRQ0FRUlNBRUlBZFBja1VFUUNBSFFRUnJJZ2NvQWdBaEVpQUNJQTlCQkdvaUVUWUNBQ0FQSUJJMkFnQWdFRUVCYXlFUUlCRWhEd3dCQ3dzQ1FDQVFSUVJBUVFBaEVnd0JDeUFHUVRBUWlRTWhFaUFDS0FJQUlROExBMEFnRDBFRWFpRVJJQkJCQUVvRVFDQVBJQkkyQWdBZ0VFRUJheUVRSUJFaER3d0JDd3NnQWlBUk5nSUFJQThnQ1RZQ0FBc0NRQ0FFSUFkR0JFQWdCa0V3RUlrRElROGdBaUFDS0FJQUloRkJCR29pQnpZQ0FDQVJJQTgyQWdBTUFRc0NmeUFMRUw4RUJFQkJmeUVTUVFBTUFRc2dDMEVBRU9ZQkxBQUFJUkpCQUFzaEQwRUFJUkFEUUNBRUlBZEhCRUFDUUNBUElCSkhCRUFnRHlFUkRBRUxJQUlnQWlnQ0FDSVJRUVJxTmdJQUlCRWdDallDQUVFQUlSRWdDeEE3SUJCQkFXb2lFRTBFUUNBUElSSU1BUXRCZnlFU0lBc2dFQkRtQVMwQUFFSC9BRVlOQUNBTElCQVE1Z0VzQUFBaEVnc2dCMEVFYXlJSEtBSUFJUThnQWlBQ0tBSUFJaGRCQkdvMkFnQWdGeUFQTmdJQUlCRkJBV29oRHd3QkN3c2dBaWdDQUNFSEN5QVdJQWNRZ0FvTElCTkJBV29oRXd3QkN3c0x2d0lCQVg4akFFRVFheUlLSkFBZ0NRSi9JQUFFUUNBQ0VQY1RJUUFDUUNBQkJFQWdDaUFBRUxvRklBTWdDaWdDQURZQUFDQUtJQUFRdVFVTUFRc2dDaUFBRVBFSklBTWdDaWdDQURZQUFDQUtJQUFRMndNTElBZ2dDaENoQXlBS0VJY0JHaUFFSUFBUTJnTTJBZ0FnQlNBQUVPOENOZ0lBSUFvZ0FCRHVBaUFHSUFvUW1nSWdDaEFQR2lBS0lBQVEzQU1nQnlBS0VLRURJQW9RaHdFYUlBQVF1QVVNQVFzZ0FoRDJFeUVBQWtBZ0FRUkFJQW9nQUJDNkJTQURJQW9vQWdBMkFBQWdDaUFBRUxrRkRBRUxJQW9nQUJEeENTQURJQW9vQWdBMkFBQWdDaUFBRU5zREN5QUlJQW9Rb1FNZ0NoQ0hBUm9nQkNBQUVOb0ROZ0lBSUFVZ0FCRHZBallDQUNBS0lBQVE3Z0lnQmlBS0VKb0NJQW9RRHhvZ0NpQUFFTndESUFjZ0NoQ2hBeUFLRUljQkdpQUFFTGdGQ3pZQ0FDQUtRUkJxSkFBTElnRUJmeUFCSUFCcklRTWdBQ0FCUndSQUlBSWdBQ0FERU9jQkdnc2dBaUFEYWdzVUFDQUFFSU1CSUFFUWd3RWdBaENEQVJEd0V3dnpCUUVKZnlBQ0lBQTJBZ0FnQTBHQUJIRWhGUU5BSUJSQkJFWUVRQ0FORUR0QkFVc0VRQ0FORUpJR0lRVWpBRUVRYXlJRUpBQWdCQ0FGTmdJSUlBUkJDR29RZ2djb0FnQWhCU0FFUVJCcUpBQWdBaUFGSUEwUXZnVWdBaWdDQUJEeEV6WUNBQXNnQTBHd0FYRWlBMEVRUndSQUlBRWdBMEVnUmdSL0lBSW9BZ0FGSUFBTE5nSUFDd1VDUUFKQUFrQUNRQUpBQWtBZ0NDQVVhaXdBQUE0RkFBRURBZ1FGQ3lBQklBSW9BZ0EyQWdBTUJBc2dBU0FDS0FJQU5nSUFJQVpCSUJDT0F5RVBJQUlnQWlnQ0FDSVFRUUZxTmdJQUlCQWdEem9BQUF3REN5QU5FTDhFRFFJZ0RVRUFFT1lCTFFBQUlROGdBaUFDS0FJQUloQkJBV28yQWdBZ0VDQVBPZ0FBREFJTElBd1F2d1FnRlVWeURRRWdBaUFNRUpJR0lBd1F2Z1VnQWlnQ0FCRHhFellDQUF3QkN5QUdLQUlJSVE4Z0FpZ0NBQ0VXSUFRZ0Iyb2lCQ0VSQTBBQ1FDQUZJQkZORFFBZ0QwSEFBQ0FSTEFBQUVMMENSUTBBSUJGQkFXb2hFUXdCQ3dzZ0RpSVBRUUJLQkVBRFFDQVBSU0FFSUJGUGNrVUVRQ0FSUVFGckloRXRBQUFoRUNBQ0lBSW9BZ0FpRWtFQmFqWUNBQ0FTSUJBNkFBQWdEMEVCYXlFUERBRUxDeUFQQkg4Z0JrRXdFSTREQlVFQUN5RVNBMEFnQWlBQ0tBSUFJaEJCQVdvMkFnQWdEMEVBU2dSQUlCQWdFam9BQUNBUFFRRnJJUThNQVFzTElCQWdDVG9BQUFzQ1FDQUVJQkZHQkVBZ0JrRXdFSTRESVE4Z0FpQUNLQUlBSWhCQkFXbzJBZ0FnRUNBUE9nQUFEQUVMQW44Z0N4Qy9CQVJBUVg4aEVFRUFEQUVMSUF0QkFCRG1BU3dBQUNFUVFRQUxJUTlCQUNFVEEwQWdCQ0FSUmcwQkFrQWdEeUFRUndSQUlBOGhFZ3dCQ3lBQ0lBSW9BZ0FpRUVFQmFqWUNBQ0FRSUFvNkFBQkJBQ0VTSUFzUU95QVRRUUZxSWhOTkJFQWdEeUVRREFFTFFYOGhFQ0FMSUJNUTVnRXRBQUJCL3dCR0RRQWdDeUFURU9ZQkxBQUFJUkFMSUJGQkFXc2lFUzBBQUNFUElBSWdBaWdDQUNJWFFRRnFOZ0lBSUJjZ0R6b0FBQ0FTUVFGcUlROE1BQXNBQ3lBV0lBSW9BZ0FRa1FZTElCUkJBV29oRkF3QkN3c0x1d0lCQVg4akFFRVFheUlLSkFBZ0NRSi9JQUFFUUNBQ0VQd1RJUUFDUUNBQkJFQWdDaUFBRUxvRklBTWdDaWdDQURZQUFDQUtJQUFRdVFVTUFRc2dDaUFBRVBFSklBTWdDaWdDQURZQUFDQUtJQUFRMndNTElBZ2dDaENhQWlBS0VBOGFJQVFnQUJEYUF6b0FBQ0FGSUFBUTd3STZBQUFnQ2lBQUVPNENJQVlnQ2hDYUFpQUtFQThhSUFvZ0FCRGNBeUFISUFvUW1nSWdDaEFQR2lBQUVMZ0ZEQUVMSUFJUSt4TWhBQUpBSUFFRVFDQUtJQUFRdWdVZ0F5QUtLQUlBTmdBQUlBb2dBQkM1QlF3QkN5QUtJQUFROFFrZ0F5QUtLQUlBTmdBQUlBb2dBQkRiQXdzZ0NDQUtFSm9DSUFvUUR4b2dCQ0FBRU5vRE9nQUFJQVVnQUJEdkFqb0FBQ0FLSUFBUTdnSWdCaUFLRUpvQ0lBb1FEeG9nQ2lBQUVOd0RJQWNnQ2hDYUFpQUtFQThhSUFBUXVBVUxOZ0lBSUFwQkVHb2tBQXNLQUNBQUVJMEdRUUZ6Q3lvQkFYOGdBU0FBRUk4Q0lnSlBCSDhnQWlBQUtBSUVJQUF0QUFzUW1BRkJBblJxSUFGUEJVRUFDd3NMQUNBQVFZaThJQkRlQXdzTEFDQUFRWkM4SUJEZUF3c1VBQ0FBSUFFb0FnQVExQlFnQVNnQ0FCQnBHZ3VRRVFFTmZ5TUFRYkFFYXlJTEpBQWdDeUFLTmdLa0JDQUxJQUUyQXFnRUFrQWdBQ0FMUWFnRWFoQ1FBZ1JBSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQVFzZ0MwSGRGellDWUNBTElBdEJpQUZxSUF0QmtBRnFJQXRCNEFCcUlnRVE5QUVpRWlnQ0FDSU9OZ0tFQVNBTElBNUJrQU5xTmdLQUFTQUJFSFFoRXlBTFFkQUFhaER6QVNFUUlBdEJRR3NROHdFaER5QUxRVEJxRVBNQklRMGdDMEVnYWhEekFTRVJJd0JCRUdzaUFTUUFJQXNDZnlBQ0JFQWdBU0FERVBjVElnSVF1Z1VnQ3lBQktBSUFOZ0I0SUFFZ0FoQzVCU0FOSUFFUW9RTWdBUkNIQVJvZ0FTQUNFTnNESUE4Z0FSQ2hBeUFCRUljQkdpQUxJQUlRMmdNMkFuUWdDeUFDRU84Q05nSndJQUVnQWhEdUFpQVRJQUVRbWdJZ0FSQVBHaUFCSUFJUTNBTWdFQ0FCRUtFRElBRVFod0VhSUFJUXVBVU1BUXNnQVNBREVQWVRJZ0lRdWdVZ0N5QUJLQUlBTmdCNElBRWdBaEM1QlNBTklBRVFvUU1nQVJDSEFSb2dBU0FDRU5zRElBOGdBUkNoQXlBQkVJY0JHaUFMSUFJUTJnTTJBblFnQ3lBQ0VPOENOZ0p3SUFFZ0FoRHVBaUFUSUFFUW1nSWdBUkFQR2lBQklBSVEzQU1nRUNBQkVLRURJQUVRaHdFYUlBSVF1QVVMTmdJY0lBRkJFR29rQUNBSklBZ29BZ0EyQWdBZ0JFR0FCSEVpRmtFSmRpRVhJQXNvQWh3aEFrRUFJUU5CQUNFRUEwQUNRQUpBQWtBQ1FBSkFJQU5CQkVZTkFDQUFJQXRCcUFScUVOb0NSUTBBQWtBQ1FBSkFBa0FDUUFKQUlBdEIrQUJxSUFOcUxBQUFEZ1VCQUFRREJRb0xJQU5CQTBZTkNTQUhRUUVnQUNnQ0FCRHRBUkRKQWdSQUlBdEJFR29nQUJENEV5QVJJQXNvQWhBUXN3RU1BZ3NnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdJQ3lBRFFRTkdEUWdMQTBBZ0FDQUxRYWdFYWhEYUFrVU5DQ0FIUVFFZ0FDZ0NBQkR0QVJESkFrVU5DQ0FMUVJCcUlBQVErQk1nRVNBTEtBSVFFTE1CREFBTEFBc0NRQ0FQS0FJRUlBOHRBQXNRbUFGRkRRQWdBQ2dDQUJEdEFTQVBRUUFROVFFb0FnQkhEUUFnQUJDaEFob2dCa0VBT2dBQUlBOGdCQ0FQS0FJRUlBOHRBQXNRbUFGQkFVc2JJUVFNQndzQ1FDQU5LQUlFSUEwdEFBc1FtQUZGRFFBZ0FDZ0NBQkR0QVNBTlFRQVE5UUVvQWdCSERRQWdBQkNoQWhvZ0JrRUJPZ0FBSUEwZ0JDQU5LQUlFSUEwdEFBc1FtQUZCQVVzYklRUU1Cd3NDUUNBUEtBSUVJQTh0QUFzUW1BRWlBVVVOQUNBTktBSUVJQTB0QUFzUW1BRkZEUUFnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdHQ3lBQklBMG9BZ1FnRFMwQUN4Q1lBU0lLY2tVTkJpQUdJQXBGT2dBQURBWUxBa0FnQkNBRFFRSkpjZzBBSUFOQkFrWWdDeTBBZTBFQVIzRWdGM0lOQUVFQUlRUU1CZ3NnQzBFUWFpQVFFSkFHRUlBRElRb0NRQ0FEUlEwQUlBTWdDMm90QUhkQkFVc05BQU5BQWtBZ0VCQzlCU0VCSUFvb0FnQWlEQ0FCRUwwRVJRMEFJQWRCQVNBTUtBSUFFTWtDUlEwQUlBb1FnUWNhREFFTEN5QVFFSkFHSVFFZ0NpZ0NBQ0FCYTBFQ2RTSU1JQkVvQWdRZ0VTMEFDeENZQVUwRVFDQVJFTDBGSVJRakFFRVFheUlCSkFBZ0FTQVVOZ0lJSUFFZ0FTZ0NDRUVBSUF4clFRSjBhallDQ0NBQktBSUlJUXdnQVVFUWFpUUFJQkVRdlFVaEZDQVFFSkFHSVJVakFFRVFheUlCSkFBZ0FTQVZOZ0lBSUFFZ0REWUNDQU5BQWtBZ0RDQVVFTDBFSWhWRkRRQWdEQ2dDQUNBQktBSUFLQUlBRUpzTlJRMEFJQUZCQ0dvUWdRY2hEQ0FCRUlFSEdpQU1LQUlBSVF3TUFRc0xJQUZCRUdva0FDQVZRUUZ6RFFFTElBb2dDMEVJYWlBUUVKQUdFSUFES0FJQU5nSUFDeUFMSUFvb0FnQTJBZ2dEUUFKQUlCQVF2UVVoQVNBTEtBSUlJQUVRdlFSRkRRQWdBQ0FMUWFnRWFoRGFBa1VOQUNBQUtBSUFFTzBCSUFzb0FnZ29BZ0JIRFFBZ0FCQ2hBaG9nQzBFSWFoQ0JCeG9NQVFzTElCWkZEUVVnRUJDOUJTRUJJQXNvQWdnZ0FSQzlCRVVOQlNBRklBVW9BZ0JCQkhJMkFnQkJBQ0VBREFRTFFRQWhDaUFMS0FKd0lSUWdEaUVCQTBBQ1FDQUFJQXRCcUFScUVOb0NSUTBBQW44Z0IwSEFBQ0FBS0FJQUVPMEJJZ3dReVFJRVFDQUpLQUlBSWc0Z0N5Z0NwQVJHQkVBZ0NDQUpJQXRCcEFScUVQOEdJQWtvQWdBaERnc2dDU0FPUVFScU5nSUFJQTRnRERZQ0FDQUtRUUZxREFFTElCTVFPMFVnQ2tWeUlBd2dGRWR5RFFFZ0N5Z0NnQUVnQVVZRVFDQVNJQXRCaEFGcUlBdEJnQUZxRVA4R0lBc29Bb1FCSVFFTElBc2dBVUVFYWlJT05nS0VBU0FCSUFvMkFnQWdEaUVCUVFBTElRb2dBQkNoQWhvTUFRc0xJQXBGSUJJb0FnQWdBVVp5RFFFZ0N5Z0NnQUVnQVVZRVFDQVNJQXRCaEFGcUlBdEJnQUZxRVA4R0lBc29Bb1FCSVFFTElBc2dBVUVFYWlJT05nS0VBU0FCSUFvMkFnQU1BZ3NnQ3lBQ05nSWNBa0FnQkVVTkFFRUJJUW9EUUNBRUtBSUVJQVF0QUFzUW1BRWdDazBOQVFKQUlBQWdDMEdvQkdvUWtBSkZCRUFnQUNnQ0FCRHRBU0FFSUFvUTlRRW9BZ0JHRFFFTElBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUJRc2dBQkNoQWhvZ0NrRUJhaUVLREFBTEFBdEJBU0VBSUJJb0FnQWlBU0FPUmcwQ1FRQWhBQ0FMUVFBMkFoQWdFeUFCSUE0Z0MwRVFhaERJQWlBTEtBSVFCRUFnQlNBRktBSUFRUVJ5TmdJQURBTUxRUUVoQUF3Q0N5QUJJUTRMQWtBZ0FrRUFUQTBBQWtBZ0FDQUxRYWdFYWhDUUFrVUVRQ0FBS0FJQUVPMEJJQXNvQW5SR0RRRUxJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1BZ3NEUUNBQUVLRUNJUUVnQWtFQVRBUkFRUUFoQWd3Q0N3SkFJQUVnQzBHb0JHb1FrQUpGQkVBZ0IwSEFBQ0FCS0FJQUVPMEJFTWtDRFFFTElBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUF3c2dDU2dDQUNBTEtBS2tCRVlFUUNBSUlBa2dDMEdrQkdvUS93WUxJQUVvQWdBUTdRRWhBU0FKSUFrb0FnQWlDa0VFYWpZQ0FDQUtJQUUyQWdBZ0FrRUJheUVDREFBTEFBc2dDU2dDQUNBSUtBSUFSdzBCSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFMSUJFUWh3RWFJQTBRaHdFYUlBOFFod0VhSUJBUWh3RWFJQk1RRHhvZ0VoRFlBUXdDQ3lBRFFRRnFJUU1NQUFzQUN5QUxRYkFFYWlRQUlBQUxJZ0FnQUNBQkVLVUlFSVlDSUFFUXhnVWhBU0FBRU1ZRklBRW9BZ0EyQWdBZ0FBc0xBQ0FBUWZpN0lCRGVBd3NMQUNBQVFZQzhJQkRlQXd1dkFRRUdmeU1BUVJCcklnTWtBQ0FCS0FJQUlRaEJBQ0FBS0FJQUlnY2dBQkRHQlNnQ0FFSGRGMFlpQkJ0QmZ5QUNLQUlBSUFkcklnVkJBWFFpQmtFQklBWWJJQVZCLy8vLy93ZFBHeUlGRUtJS0lnWUVRQ0FFUlFSQUlBQVFwUWdhQ3lBRFFkc1hOZ0lFSUFBZ0EwRUlhaUFHSUFOQkJHb1E5QUVpQkJENkV5RUFJQVFRMkFFZ0FTQUFLQUlBSUFnZ0IydHFOZ0lBSUFJZ0FDZ0NBQ0FGYWpZQ0FDQURRUkJxSkFBUEN4QnZBQXNsQVFGL0lBRW9BZ0FRNUJSQkdIUkJHSFVoQWlBQUlBRW9BZ0EyQWdRZ0FDQUNPZ0FBQzhnUUFRMS9Jd0JCb0FScklnc2tBQ0FMSUFvMkFwUUVJQXNnQVRZQ21BUUNRQ0FBSUF0Qm1BUnFFSWNDQkVBZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3QkN5QUxRZDBYTmdKWUlBc2dDMEg0QUdvZ0MwR0FBV29nQzBIWUFHb2lBUkQwQVNJU0tBSUFJZ3cyQW5RZ0N5QU1RWkFEYWpZQ2NDQUJFSFFoRXlBTFFjZ0FhaEIwSVEwZ0MwRTRhaEIwSVE4Z0MwRW9haEIwSVE0Z0MwRVlhaEIwSVJFakFFRVFheUlCSkFBZ0N3Si9JQUlFUUNBQklBTVEvQk1pQWhDNkJTQUxJQUVvQWdBMkFHZ2dBU0FDRUxrRklBNGdBUkNhQWlBQkVBOGFJQUVnQWhEYkF5QVBJQUVRbWdJZ0FSQVBHaUFMSUFJUTJnTTZBR2NnQ3lBQ0VPOENPZ0JtSUFFZ0FoRHVBaUFUSUFFUW1nSWdBUkFQR2lBQklBSVEzQU1nRFNBQkVKb0NJQUVRRHhvZ0FoQzRCUXdCQ3lBQklBTVEreE1pQWhDNkJTQUxJQUVvQWdBMkFHZ2dBU0FDRUxrRklBNGdBUkNhQWlBQkVBOGFJQUVnQWhEYkF5QVBJQUVRbWdJZ0FSQVBHaUFMSUFJUTJnTTZBR2NnQ3lBQ0VPOENPZ0JtSUFFZ0FoRHVBaUFUSUFFUW1nSWdBUkFQR2lBQklBSVEzQU1nRFNBQkVKb0NJQUVRRHhvZ0FoQzRCUXMyQWhRZ0FVRVFhaVFBSUFrZ0NDZ0NBRFlDQUNBRVFZQUVjU0lXUVFsMklSY2dDeWdDRkNFQ0lBY2hCRUVBSVFNRFFBSkFBa0FDUUFKQUFrQWdBMEVFUmcwQUlBQWdDMEdZQkdvUXlnSkZEUUFDUUFKQUFrQUNRQUpBQWtBZ0MwSG9BR29nQTJvc0FBQU9CUUVBQkFNRkNnc2dBMEVEUmcwSklBQW9BZ0FRN2dFaEFTQUVLQUlJUVFFZ0FSQzlBZ1JBSUF0QkNHb2dBQkQrRXlBUklBc3NBQWdRcEFFTUFnc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0lDeUFEUVFOR0RRZ0xBMEFnQUNBTFFaZ0VhaERLQWtVTkNDQUFLQUlBRU80QklRRWdCQ2dDQ0VFQklBRVF2UUpGRFFnZ0MwRUlhaUFBRVA0VElCRWdDeXdBQ0JDa0FRd0FDd0FMQWtBZ0R4QTdSUTBBSUFBb0FnQVE3Z0ZCL3dGeElBOUJBQkNKQVMwQUFFY05BQ0FBRUpzQ0dpQUdRUUE2QUFBZ0R5QVFJQThRTzBFQlN4c2hFQXdIQ3dKQUlBNFFPMFVOQUNBQUtBSUFFTzRCUWY4QmNTQU9RUUFRaVFFdEFBQkhEUUFnQUJDYkFob2dCa0VCT2dBQUlBNGdFQ0FPRUR0QkFVc2JJUkFNQndzQ1FDQVBFRHRGRFFBZ0RoQTdSUTBBSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQmdzZ0R4QTdSUVJBSUE0UU8wVU5Cd3NnQmlBT0VEdEZPZ0FBREFZTEFrQWdFQ0FEUVFKSmNnMEFJQU5CQWtZZ0N5MEFhMEVBUjNFZ0YzSU5BRUVBSVJBTUJnc2dDMEVJYWlBTkVKSUdFSUFESVFjQ1FDQURSUTBBSUFNZ0Myb3RBR2RCQVVzTkFBTkFBa0FnRFJDK0JTRUJJQWNvQWdBaUNpQUJFTDBFUlEwQUlBUW9BZ2hCQVNBS0xBQUFFTDBDUlEwQUlBY1FnZ2NhREFFTEN5QU5FSklHSVFFZ0J5Z0NBQ0FCYXlJS0lCRVFPMDBFUUNBUkVMNEZJUlFqQUVFUWF5SUJKQUFnQVNBVU5nSUlJQUVnQVNnQ0NDQUthellDQ0NBQktBSUlJUW9nQVVFUWFpUUFJQkVRdmdVaEZDQU5FSklHSVJVakFFRVFheUlCSkFBZ0FTQVZOZ0lBSUFFZ0NqWUNDQU5BQWtBZ0NpQVVFTDBFSWhWRkRRQWdDaTBBQUNBQktBSUFMUUFBUncwQUlBRkJDR29RZ2djaENpQUJFSUlIR2lBS0tBSUFJUW9NQVFzTElBRkJFR29rQUNBVlFRRnpEUUVMSUFjZ0N5QU5FSklHRUlBREtBSUFOZ0lBQ3lBTElBY29BZ0EyQWdBRFFBSkFJQTBRdmdVaEFTQUxLQUlBSUFFUXZRUkZEUUFnQUNBTFFaZ0VhaERLQWtVTkFDQUFLQUlBRU80QlFmOEJjU0FMS0FJQUxRQUFSdzBBSUFBUW13SWFJQXNRZ2djYURBRUxDeUFXUlEwRklBMFF2Z1VoQVNBTEtBSUFJQUVRdlFSRkRRVWdCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0VDMEVBSVFFZ0N5MEFaaUVVSUF3aEJ3TkFBa0FnQUNBTFFaZ0VhaERLQWtVTkFDQUFLQUlBRU80QklRb0NmeUFFS0FJSVFjQUFJQW9RdlFJRVFDQUpLQUlBSWd3Z0N5Z0NsQVJHQkVBZ0NDQUpJQXRCbEFScUVQMFRJQWtvQWdBaERBc2dDU0FNUVFGcU5nSUFJQXdnQ2pvQUFDQUJRUUZxREFFTElCTVFPMFVnQVVWeUlBcEIvd0Z4SUJSSGNnMEJJQXNvQW5BZ0IwWUVRQ0FTSUF0QjlBQnFJQXRCOEFCcUVQOEdJQXNvQW5RaEJ3c2dDeUFIUVFScUlnbzJBblFnQnlBQk5nSUFJQW9oQjBFQUN5RUJJQUFRbXdJYURBRUxDeUFCUlNBU0tBSUFJQWRHY2cwQklBc29BbkFnQjBZRVFDQVNJQXRCOUFCcUlBdEI4QUJxRVA4R0lBc29BblFoQndzZ0N5QUhRUVJxSWd3MkFuUWdCeUFCTmdJQURBSUxBa0FnRUVVTkFFRUJJUW9EUUNBUUVEc2dDazBOQVFKQUlBQWdDMEdZQkdvUWh3SkZCRUFnQUNnQ0FCRHVBVUgvQVhFZ0VDQUtFT1lCTFFBQVJnMEJDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVVMSUFBUW13SWFJQXBCQVdvaENnd0FDd0FMUVFFaEFDQVNLQUlBSWdFZ0RFWU5Ba0VBSVFBZ0MwRUFOZ0lJSUJNZ0FTQU1JQXRCQ0dvUXlBSWdDeWdDQ0FSQUlBVWdCU2dDQUVFRWNqWUNBQXdEQzBFQklRQU1BZ3NnQnlFTUN3SkFJQUpCQUV3TkFBSkFJQUFnQzBHWUJHb1Fod0pGQkVBZ0FDZ0NBQkR1QVVIL0FYRWdDeTBBWjBZTkFRc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0NDd05BSUFBUW13SWhBU0FDUVFCTUJFQkJBQ0VDREFJTEFrQWdBU0FMUVpnRWFoQ0hBa1VFUUNBQktBSUFFTzRCSVFjZ0JDZ0NDRUhBQUNBSEVMMENEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzZ0NTZ0NBQ0FMS0FLVUJFWUVRQ0FJSUFrZ0MwR1VCR29RL1JNTElBRW9BZ0FRN2dFaEFTQUpJQWtvQWdBaUIwRUJhallDQUNBSElBRTZBQUFnQWtFQmF5RUNEQUFMQUFzZ0NTZ0NBQ0FJS0FJQVJ3MEJJQVVnQlNnQ0FFRUVjallDQUVFQUlRQUxJQkVRRHhvZ0RoQVBHaUFQRUE4YUlBMFFEeG9nRXhBUEdpQVNFTmdCREFJTElBTkJBV29oQXd3QUN3QUxJQXRCb0FScUpBQWdBQXNNQUNBQUlBRW9Ba2cyQUFBTEJ3QWdBQ2dDUUFzTkFDQUFJQUZCTkdvUWdBY2FDdzBBSUFBZ0FVRW9haENBQnhvTDF3Y0JCMzhqQUVIZ0FHc2lCaVFBSUFaQkFEWUNSQ0FFSUFRb0FnQW9BZ2dSQUFBZ0JrSEVBR29RSWhvZ0JrRUFOZ0pBSUFVZ0JTZ0NBQ2dDQ0JFQUFDQUdRVUJyRUNJYUFrQWdCaWdDUkNJSElBWW9Ba0FpQ0NBSElBaExHeUlLUVFGR0JFQWdBeWdDQUNFQklBTW9BZ1FoQWlBRUlBUW9BZ0FvQWdnUkFBQWhCeUFHSUFFMkFoQWdCaUFDS1FJSU53SWNJQVlnQWlnQ0VEWUNKQ0FHSUFJcEFnQTNBaFFnQmlBSE5nSW9JQVFnQkNnQ0FDZ0NDQkVBQUNJRFJRUkFJQUJCQURvQUJBd0NDeUFHUVJCcVFRUnlJUUlDUUFKQUlBTW9BZ1FpQTBIUW9CSkdCRUFnQmtIUUFHb2lBeUFCSUFJZ0JCQmpJQVVRWXhDT0JpQURFTElCQkVBZ0JrSElBR29nQVNBR0tBSW9JQVpCMEFCcUVFb3BBd0FRL1FFTUFnc2dCa0VDT2dCTURBRUxJQU5COEo4U1JnUkFJQVpCMEFCcUlnTWdBU0FDSUFRUVBDQUZFRHdRMkFNZ0F4Q3lBUVJBSUFaQnlBQnFJQUVnQWlBR0tBSW9JQVpCMEFCcUVFb3JBd0FRY3d3Q0N5QUdRUUk2QUV3TUFRc2dBMEd3cVJKR0JFQWdCa0hRQUdvaUF5QUJJQUlnQkJBMElBVVFOQkRYQXlBREVDc0VRQ0FHUWNnQWFpQUJJQUlnQmlnQ0tDQUdRZEFBYWhBYUtnSUFFR3NNQWdzZ0JrRUNPZ0JNREFFTElBTkJrS29TUmdSQUlBUVFZU0VESUFVUVlTRUVJQVpCQVRvQVZDQUdJQU1nQkdvMkFsQWdCa0hRQUdvUUt3UkFJQVpCeUFCcUlBRWdCeUFHUWRBQWFoQWFLQUlBRUxFQkRBSUxJQVpCQWpvQVRBd0JDeUFEUWFDekVrWUVRQ0FFRUZraEF5QUZFRmtoQkNBR1FRRTZBRlFnQmlBRElBUnFOZ0pRSUFaQjBBQnFFQ3NFUUNBR1FjZ0FhaUFCSUFjZ0JrSFFBR29RR2lnQ0FCQ3RBUXdDQ3lBR1FRSTZBRXdNQVFzZ0EwSFFxQkpIRFFFZ0JrSFFBR29pQXlBQklBSWdCQkEvSUFVUVB4RFdBeUFERUNzRVFDQUdRY2dBYWlBQklBSWdCaWdDS0NBR1FkQUFhaEFhS2dJQUVISU1BUXNnQmtFQ09nQk1DeUFBSUFZcEEwZzNBZ0FNQWdzZ0FFRUFPZ0FFREFFTElBWkNnSUNBZ0lBQk53STBJQVlnQmtFUWFpSUlOZ0l3SUFnZ0NoQTVJQVpCTUdvaEN3SkFBa0FEUUNBSklBcEdEUUVnQkNFSElBVWhDQ0FHUWRBQWFpSU1JQUVnQWtFQUVDSWdBeUFHS0FKRVFRRkhCSDhnQkNBSklBUW9BZ0FvQWd3UkFRQUZJQWNMSUFZb0FrQkJBVWNFZnlBRklBa2dCU2dDQUNnQ0RCRUJBQVVnQ0FzUWhCUWdEQkFyQkVBZ0JrRVFhaUFHUWRBQWFoQWFFQ1FnQ1VFQmFpRUpEQUVMQ3lBR1FkQUFhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUxOZ0lJSUFZZ0JpZ0NNQ0FHUVJCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFUWFoQWpDeUFHUWVBQWFpUUFDdzBBSUFBZ0FVRWNhaENBQnhvTERBQWdBQ0FCS0FKQU5nQUFDd2NBSUFBb0Fqd0xEQUFnQUNBQlFUQnFFRlFhQ3d3QUlBQWdBVUVrYWhCVUdnc01BQ0FBSUFGQkdHb1FWQm9MREFBZ0FFRUJRUzBRL1F3YUN3d0FJQUJCQVVFdEVLb1lHZ3V5QWdFRmZ5TUFRZEFBYXlJR0pBQWdCa0VBTmdKTUFrQWdCU2dDQUNJSElBY29BZ0FvQWdnUkFBQWlCeUFHUWN3QWFoQWlJQWRHQkVBZ0FDQURJQVVvQWdBUWtSUU1BUXNnQmtLQWdJQ0FnQUUzQWtRZ0JpQUdRU0JxSWdjMkFrQWdCeUFHS0FKTUVEa2dCa0ZBYXlFSlFRQWhCd0pBQWtBRFFDQUhJQVlvQWt4UERRRWdBa0VBRUNJaENpQUdJQVVvQWdBaUNDQUhJQWdvQWdBb0Fnd1JBUUEyQWhRZ0JrRVlhaUlJSUFFZ0NpQURJQVFnQjJvZ0JrRVVhaENORkNBSUVDc0VRQ0FHUVNCcUlBWkJHR29RR2hBa0lBZEJBV29oQnd3QkN3c2dCa0VZYWhBOUdpQUFRUUk2QUFRTUFRc2dCaUFKTmdJSUlBWWdCaWdDUUNBR1FTQnFSem9BRENBQklBSWdCa0VJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JrRWdhaEFqQ3lBR1FkQUFhaVFBQzJFQkFYOGpBRUVRYXlJR0pBQWdCa0VBT2dBUElBWWdCVG9BRGlBR0lBUTZBQTBnQmtFbE9nQU1JQVVFUUNBR1FRMXFJQVpCRG1vUTl4UUxJQUlnQVNBQklBSW9BZ0FRenhRZ0JrRU1haUFESUFBUUFpQUJhallDQUNBR1FSQnFKQUFMUWdBZ0FTQUNJQU1nQkVFRUVMa0VJUUVnQXkwQUFFRUVjVVVFUUNBQUlBRkIwQTlxSUFGQjdBNXFJQUVnQVVIa0FFZ2JJQUZCeFFCSUcwSHNEbXMyQWdBTEMwQUFJQUlnQXlBQVFRaHFJQUFvQWdnb0FnUVJBQUFpQUNBQVFhQUNhaUFGSUFSQkFCRC9DU0FBYXlJQVFaOENUQVJBSUFFZ0FFRU1iVUVNYnpZQ0FBc0xNZ0VDZnlBQktBSUVJUU1nQVNnQ0FDRUJJQUlRK2dFaEJDQUFJQUVnQWlBQ0tBSUFLQUlJRVFBQUlBUkJBWE1RaUFFTFFBQWdBaUFESUFCQkNHb2dBQ2dDQ0NnQ0FCRUFBQ0lBSUFCQnFBRnFJQVVnQkVFQUVQOEpJQUJySWdCQnB3Rk1CRUFnQVNBQVFReHRRUWR2TmdJQUN3dENBQ0FCSUFJZ0F5QUVRUVFRdWdRaEFTQURMUUFBUVFSeFJRUkFJQUFnQVVIUUQyb2dBVUhzRG1vZ0FTQUJRZVFBU0JzZ0FVSEZBRWdiUWV3T2F6WUNBQXNMUUFBZ0FpQURJQUJCQ0dvZ0FDZ0NDQ2dDQkJFQUFDSUFJQUJCb0FKcUlBVWdCRUVBRUlNS0lBQnJJZ0JCbndKTUJFQWdBU0FBUVF4dFFReHZOZ0lBQ3d0QUFDQUNJQU1nQUVFSWFpQUFLQUlJS0FJQUVRQUFJZ0FnQUVHb0FXb2dCU0FFUVFBUWd3b2dBR3NpQUVHbkFVd0VRQ0FCSUFCQkRHMUJCMjgyQWdBTEM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkNaRkF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVKWVVJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUx4Z1VCQ244akFFRVFheUlKSkFBZ0JoRHdBaUVLSUFrZ0JoQ0ZCeUlORU80Q0lBVWdBellDQUFKQUFrQWdBQ0lITFFBQUlnWkJLMnNPQXdBQkFBRUxJQW9nQmtFWWRFRVlkUkNKQXlFR0lBVWdCU2dDQUNJSFFRUnFOZ0lBSUFjZ0JqWUNBQ0FBUVFGcUlRY0xBa0FDUUNBQ0lBY2lCbXRCQWtnTkFDQUhMUUFBUVRCSERRQWdCeTBBQVVFZ2NrSDRBRWNOQUNBS1FUQVFpUU1oQmlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFZMkFnQWdDaUFITEFBQkVJa0RJUVlnQlNBRktBSUFJZ2hCQkdvMkFnQWdDQ0FHTmdJQUlBZEJBbW9pQnlFR0EwQWdBaUFHVFEwQ0lBWXNBQUFoQ0JEQUFSb2dDQkNORlVVTkFpQUdRUUZxSVFZTUFBc0FDd05BSUFJZ0JrME5BU0FHTEFBQUlRZ1F3QUVhSUFnUXVnTkZEUUVnQmtFQmFpRUdEQUFMQUFzQ1FDQUpFTDhFQkVBZ0NpQUhJQVlnQlNnQ0FCRDZCQ0FGSUFVb0FnQWdCaUFIYTBFQ2RHbzJBZ0FNQVFzZ0J5QUdFSkVHSUEwUTd3SWhEaUFISVFnRFFDQUdJQWhOQkVBZ0F5QUhJQUJyUVFKMGFpQUZLQUlBRUlBS0JRSkFJQWtnQ3hDSkFTd0FBRUVBVEEwQUlBd2dDU0FMRUlrQkxBQUFSdzBBSUFVZ0JTZ0NBQ0lNUVFScU5nSUFJQXdnRGpZQ0FDQUxJQXNnQ1JBN1FRRnJTV29oQzBFQUlRd0xJQW9nQ0N3QUFCQ0pBeUVQSUFVZ0JTZ0NBQ0lRUVFScU5nSUFJQkFnRHpZQ0FDQUlRUUZxSVFnZ0RFRUJhaUVNREFFTEN3c0NRQUpBQTBBZ0FpQUdUUTBCSUFZdEFBQWlCMEV1UndSQUlBb2dCMEVZZEVFWWRSQ0pBeUVISUFVZ0JTZ0NBQ0lJUVFScU5nSUFJQWdnQnpZQ0FDQUdRUUZxSVFZTUFRc0xJQTBRMmdNaEJ5QUZJQVVvQWdBaUMwRUVhaUlJTmdJQUlBc2dCellDQUNBR1FRRnFJUVlNQVFzZ0JTZ0NBQ0VJQ3lBS0lBWWdBaUFJRVBvRUlBVWdCU2dDQUNBQ0lBWnJRUUowYWlJRk5nSUFJQVFnQlNBRElBRWdBR3RCQW5ScUlBRWdBa1liTmdJQUlBa1FEeG9nQ1VFUWFpUUFDK0FEQVFoL0l3QkJFR3NpQ2lRQUlBWVE4QUloQ3lBS0lBWVFoUWNpQmhEdUFnSkFJQW9RdndRRVFDQUxJQUFnQWlBREVQb0VJQVVnQXlBQ0lBQnJRUUowYWlJR05nSUFEQUVMSUFVZ0F6WUNBQUpBQWtBZ0FDSUlMUUFBSWdkQksyc09Bd0FCQUFFTElBc2dCMEVZZEVFWWRSQ0pBeUVJSUFVZ0JTZ0NBQ0lIUVFScU5nSUFJQWNnQ0RZQ0FDQUFRUUZxSVFnTEFrQWdBaUFJYTBFQ1NBMEFJQWd0QUFCQk1FY05BQ0FJTFFBQlFTQnlRZmdBUncwQUlBdEJNQkNKQXlFSElBVWdCU2dDQUNJSlFRUnFOZ0lBSUFrZ0J6WUNBQ0FMSUFnc0FBRVFpUU1oQnlBRklBVW9BZ0FpQ1VFRWFqWUNBQ0FKSUFjMkFnQWdDRUVDYWlFSUN5QUlJQUlRa1FaQkFDRUpJQVlRN3dJaERFRUFJUWNnQ0NFR0EzOGdBaUFHVFFSL0lBTWdDQ0FBYTBFQ2RHb2dCU2dDQUJDQUNpQUZLQUlBQlFKQUlBb2dCeENKQVMwQUFFVU5BQ0FKSUFvZ0J4Q0pBU3dBQUVjTkFDQUZJQVVvQWdBaUNVRUVhallDQUNBSklBdzJBZ0FnQnlBSElBb1FPMEVCYTBscUlRZEJBQ0VKQ3lBTElBWXNBQUFRaVFNaERTQUZJQVVvQWdBaURrRUVhallDQUNBT0lBMDJBZ0FnQmtFQmFpRUdJQWxCQVdvaENRd0JDd3NoQmdzZ0JDQUdJQU1nQVNBQWEwRUNkR29nQVNBQ1JoczJBZ0FnQ2hBUEdpQUtRUkJxSkFBTHh3SUVBMzhCZlFGK0FYd2pBRUVRYXlJRUpBQWdBU2dDQkNFRklBRW9BZ0FoQVFKQUlBSWdBaWdDQUNnQ0NCRUFBQ0lEUlFSQUlBQkJBRG9BQkF3QkN3SkFBa0FnQXlnQ0JDSURRZENnRWtZRVFDQUNFR01oQnlBRVFRaHFJQUVnQWlBQ0tBSUFLQUlJRVFBQVFnQWdCMzBRL1FFTUFRc2dBMEh3bnhKR0JFQWdBaEE4SVFnZ0JFRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWlhRUhNTUFRc2dBMEd3cVJKR0JFQWdBaEEwSVFZZ0JFRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWFNRUdzTUFRc2dBMEdRcWhKR0JFQWdBaEJoSVFNZ0JFRUlhaUFCSUFJZ0FpZ0NBQ2dDQ0JFQUFFRUFJQU5yRUxFQkRBRUxJQU5CMEtnU1J3MEJJQUlRUHlFR0lBUkJDR29nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FHakJCR0VISUxJQUFnQkNrRENEY0NBQXdCQ3lBQVFRQTZBQVFMSUFSQkVHb2tBQXV4QlFFS2Z5TUFRUkJySWdra0FDQUdFTU1DSVFvZ0NTQUdFSWtISWcwUTdnSWdCU0FETmdJQUFrQUNRQ0FBSWdjdEFBQWlCa0VyYXc0REFBRUFBUXNnQ2lBR1FSaDBRUmgxRUk0RElRWWdCU0FGS0FJQUlnZEJBV28yQWdBZ0J5QUdPZ0FBSUFCQkFXb2hCd3NDUUFKQUlBSWdCeUlHYTBFQ1NBMEFJQWN0QUFCQk1FY05BQ0FITFFBQlFTQnlRZmdBUncwQUlBcEJNQkNPQXlFR0lBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0Jqb0FBQ0FLSUFjc0FBRVFqZ01oQmlBRklBVW9BZ0FpQ0VFQmFqWUNBQ0FJSUFZNkFBQWdCMEVDYWlJSElRWURRQ0FDSUFaTkRRSWdCaXdBQUNFSUVNQUJHaUFJRUkwVlJRMENJQVpCQVdvaEJnd0FDd0FMQTBBZ0FpQUdUUTBCSUFZc0FBQWhDQkRBQVJvZ0NCQzZBMFVOQVNBR1FRRnFJUVlNQUFzQUN3SkFJQWtRdndRRVFDQUtJQWNnQmlBRktBSUFFTDhGSUFVZ0JTZ0NBQ0FHSUFkcmFqWUNBQXdCQ3lBSElBWVFrUVlnRFJEdkFpRU9JQWNoQ0FOQUlBWWdDRTBFUUNBRElBY2dBR3RxSUFVb0FnQVFrUVlGQWtBZ0NTQU1FSWtCTEFBQVFRQk1EUUFnQ3lBSklBd1FpUUVzQUFCSERRQWdCU0FGS0FJQUlndEJBV28yQWdBZ0N5QU9PZ0FBSUF3Z0RDQUpFRHRCQVd0SmFpRU1RUUFoQ3dzZ0NpQUlMQUFBRUk0RElROGdCU0FGS0FJQUloQkJBV28yQWdBZ0VDQVBPZ0FBSUFoQkFXb2hDQ0FMUVFGcUlRc01BUXNMQ3dOQUFrQWdBaUFHU3dSQUlBWXRBQUFpQjBFdVJ3MEJJQTBRMmdNaEJ5QUZJQVVvQWdBaUNFRUJhallDQUNBSUlBYzZBQUFnQmtFQmFpRUdDeUFLSUFZZ0FpQUZLQUlBRUw4RklBVWdCU2dDQUNBQ0lBWnJhaUlGTmdJQUlBUWdCU0FESUFFZ0FHdHFJQUVnQWtZYk5nSUFJQWtRRHhvZ0NVRVFhaVFBRHdzZ0NpQUhRUmgwUVJoMUVJNERJUWNnQlNBRktBSUFJZ2hCQVdvMkFnQWdDQ0FIT2dBQUlBWkJBV29oQmd3QUN3QUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNaRkF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKWVVJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxFd0FnQVFSQUlBQWdBaENsQXlBQkVIa2FDd3ZYQXdFSWZ5TUFRUkJySWdva0FDQUdFTU1DSVFzZ0NpQUdFSWtISWdZUTdnSUNRQ0FLRUw4RUJFQWdDeUFBSUFJZ0F4Qy9CU0FGSUFNZ0FpQUFhMm9pQmpZQ0FBd0JDeUFGSUFNMkFnQUNRQUpBSUFBaUNDMEFBQ0lIUVN0ckRnTUFBUUFCQ3lBTElBZEJHSFJCR0hVUWpnTWhDQ0FGSUFVb0FnQWlCMEVCYWpZQ0FDQUhJQWc2QUFBZ0FFRUJhaUVJQ3dKQUlBSWdDR3RCQWtnTkFDQUlMUUFBUVRCSERRQWdDQzBBQVVFZ2NrSDRBRWNOQUNBTFFUQVFqZ01oQnlBRklBVW9BZ0FpQ1VFQmFqWUNBQ0FKSUFjNkFBQWdDeUFJTEFBQkVJNERJUWNnQlNBRktBSUFJZ2xCQVdvMkFnQWdDU0FIT2dBQUlBaEJBbW9oQ0FzZ0NDQUNFSkVHUVFBaENTQUdFTzhDSVF4QkFDRUhJQWdoQmdOL0lBSWdCazBFZnlBRElBZ2dBR3RxSUFVb0FnQVFrUVlnQlNnQ0FBVUNRQ0FLSUFjUWlRRXRBQUJGRFFBZ0NTQUtJQWNRaVFFc0FBQkhEUUFnQlNBRktBSUFJZ2xCQVdvMkFnQWdDU0FNT2dBQUlBY2dCeUFLRUR0QkFXdEphaUVIUVFBaENRc2dDeUFHTEFBQUVJNERJUTBnQlNBRktBSUFJZzVCQVdvMkFnQWdEaUFOT2dBQUlBWkJBV29oQmlBSlFRRnFJUWtNQVFzTElRWUxJQVFnQmlBRElBRWdBR3RxSUFFZ0FrWWJOZ0lBSUFvUUR4b2dDa0VRYWlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkNmRkF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVKNFVJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUw2QUVDQTM4QmZpTUFRUkJySWdRa0FDQUJLQUlFSVFVZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ05GQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FES0FJRUlnTkIwS0FTUmdSQUlBSVFZeUVHSUFSQkNHb2dBU0FDSUFJb0FnQW9BZ2dSQUFBZ0JrSi9oUkQ5QVF3QkN5QURRWkNxRWtZRVFDQUNFR0VoQXlBRVFRaHFJQUVnQWlBQ0tBSUFLQUlJRVFBQUlBTkJmM01Rc1FFTUFRc2dBMEdnc3hKSERRRWdBaEJaSVFNZ0JFRUlhaUFCSUFJZ0FpZ0NBQ2dDQ0JFQUFDQURRWDl6RUswQkN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxvd01CQTM4akFFSGdBbXNpQUNRQUlBQWdBallDMEFJZ0FDQUJOZ0xZQWlBREVMNEVJUVlnQXlBQVFlQUJhaENhQ0NFSElBQkIwQUZxSUFNZ0FFSE1BbW9RbVFnZ0FFSEFBV29RZENJQklBRVFtd0VRZGlBQUlBRkJBQkNKQVNJQ05nSzhBU0FBSUFCQkVHbzJBZ3dnQUVFQU5nSUlJQUFvQXN3Q0lRTURRQUpBSUFCQjJBSnFJQUJCMEFKcUVOb0NSUTBBSUFBb0Fyd0JJQUVRT3lBQ2FrWUVRQ0FCRURzaENDQUJJQUVRTzBFQmRCQjJJQUVnQVJDYkFSQjJJQUFnQ0NBQlFRQVFpUUVpQW1vMkFyd0JDeUFBS0FMWUFoRHRBU0FHSUFJZ0FFRzhBV29nQUVFSWFpQURJQUJCMEFGcUlBQkJFR29nQUVFTWFpQUhFSU1IRFFBZ0FFSFlBbW9Rb1FJYURBRUxDeUFBUWRBQmFoQTdSU0FBS0FJTUlnTWdBRUVRYW10Qm53Rktja1VFUUNBRElBQW9BZ2cyQWdBZ0EwRUVhaUVEQ3lBRklBSWdBQ2dDdkFFZ0JDQUdFS29VTmdJQUlBQkIwQUZxSUFCQkVHb2dBeUFFRU1nQ0lBQkIyQUpxSUFCQjBBSnFFSkFDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FMWUFpRUNJQUVRRHhvZ0FFSFFBV29RRHhvZ0FFSGdBbW9rQUNBQ0N3NEFJQUFnQVVFQ2RFRUVFT3NLQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCQ2xGQXdCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRUtJVUlBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTFBnRUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBMEVJYWlBQkVMY0RJUUVnQUVIQ3Z3SWdBeWdDREJDOUZDRUFJQUVRdGdNZ0EwRVFhaVFBSUFBTHNnSUNCSDRGZnlNQVFTQnJJZ2drQUFKQUFrQUNRQ0FCSUFKSEJFQkJtS2tnS0FJQUlReEJtS2tnUVFBMkFnQWpBRUVRYXlJSkpBQVF3QUVhSXdCQkVHc2lDaVFBSXdCQkVHc2lDeVFBSUFzZ0FTQUlRUnhxUVFJUXBRMGdDeWtEQUNFRUlBb2dDeWtEQ0RjRENDQUtJQVEzQXdBZ0MwRVFhaVFBSUFvcEF3QWhCQ0FKSUFvcEF3ZzNBd2dnQ1NBRU53TUFJQXBCRUdva0FDQUpLUU1BSVFRZ0NDQUpLUU1JTndNUUlBZ2dCRGNEQ0NBSlFSQnFKQUFnQ0NrREVDRUVJQWdwQXdnaEJVR1lxU0FvQWdBaUFVVU5BU0FJS0FJY0lBSkhEUUlnQlNFR0lBUWhCeUFCUWNRQVJ3MEREQUlMSUFOQkJEWUNBQXdDQzBHWXFTQWdERFlDQUNBSUtBSWNJQUpHRFFFTElBTkJCRFlDQUNBR0lRVWdCeUVFQ3lBQUlBVTNBd0FnQUNBRU53TUlJQWhCSUdva0FBdXJCQU1FZndOK0FYMGpBRUVRYXlJREpBQWdBU2dDQ0NFRUlBRW9BZ1FoQmlBQktBSUFJUUVDUUNBQ0lBSW9BZ0FvQWdnUkFBQWlCVVVFUUNBQVFRQTZBQVFNQVFzQ2ZnSkFJQVVvQWdRaUJVR3dxUkpHQkVBZ0FoQTBJUW9nQkNnQ0FDSUNSUTBCQWtBZ0FpZ0NCQ0lFUWFDekVrWUVRQ0FEUVFocUlBRWdBaUFLdkJDdEFRd0JDeUFFUVpDcUVrWUVRQ0FEUVFocUlBRWdBaUFLdkJDeEFRd0JDMElBSUFSQnNLa1NSdzBER2lBRFFRaHFJQUVnQmlBQ0lBb1Fhd3NnQXlrRENDSUhRb0NBZ0lDQVlJTWhDQ0FIUW9DQWdJQndnd3dDQ3lBRlFaQ3FFa1lFUUNBQ0VHRWhCU0FFS0FJQUlnSkZEUUVDUUNBQ0tBSUVJZ1JCb0xNU1JnUkFJQU5CQ0dvZ0FTQUNJQVVRclFFTUFRc2dCRUdRcWhKR0JFQWdBMEVJYWlBQklBSWdCUkN4QVF3QkMwSUFJQVJCc0trU1J3MERHaUFEUVFocUlBRWdCaUFDSUFXK0VHc0xJQU1wQXdnaUIwS0FnSUNBZ0dDRElRZ2dCMEtBZ0lDQWNJTU1BZ3NnQlVHZ3N4SkdCRUFnQWhCWklRVWdCQ2dDQUNJQ1JRMEJBa0FnQWlnQ0JDSUVRYUN6RWtZRVFDQURRUWhxSUFFZ0FpQUZFSzBCREFFTElBUkJrS29TUmdSQUlBTkJDR29nQVNBQ0lBVVFzUUVNQVF0Q0FDQUVRYkNwRWtjTkF4b2dBMEVJYWlBQklBWWdBaUFGdmhCckN5QURLUU1JSWdkQ2dJQ0FnSUJnZ3lFSUlBZENnSUNBZ0hDRERBSUxJQUJCQURvQUJBd0NDMElBQ3lFSklBQWdCMEwvLy8vL0Q0TWdDVUtBZ0lDQThCK0RJQWlFaERjQ0FBc2dBMEVRYWlRQUM3Y0JBZ0o4QTM4akFFRVFheUlGSkFBQ1FBSkFBa0FnQUNBQlJ3UkFRWmlwSUNnQ0FDRUhRWmlwSUVFQU5nSUFFTUFCR2lNQVFSQnJJZ1lrQUNBR0lBQWdCVUVNYWtFQkVLVU5JQVlwQXdBZ0Jpa0RDQkN5RFNFRElBWkJFR29rQUVHWXFTQW9BZ0FpQUVVTkFTQUZLQUlNSUFGSERRSWdBeUVFSUFCQnhBQkhEUU1NQWdzZ0FrRUVOZ0lBREFJTFFaaXBJQ0FITmdJQUlBVW9BZ3dnQVVZTkFRc2dBa0VFTmdJQUlBUWhBd3NnQlVFUWFpUUFJQU1MTWdBZ0FrSC9BWEVoQWdOQUFrQWdBQ0FCUndSL0lBQXRBQUFnQWtjTkFTQUFCU0FCQ3c4TElBQkJBV29oQUF3QUN3QUx0d0VDQW4wRGZ5TUFRUkJySWdVa0FBSkFBa0FDUUNBQUlBRkhCRUJCbUtrZ0tBSUFJUWRCbUtrZ1FRQTJBZ0FRd0FFYUl3QkJFR3NpQmlRQUlBWWdBQ0FGUVF4cVFRQVFwUTBnQmlrREFDQUdLUU1JRUo0VklRTWdCa0VRYWlRQVFaaXBJQ2dDQUNJQVJRMEJJQVVvQWd3Z0FVY05BaUFESVFRZ0FFSEVBRWNOQXd3Q0N5QUNRUVEyQWdBTUFndEJtS2tnSUFjMkFnQWdCU2dDRENBQlJnMEJDeUFDUVFRMkFnQWdCQ0VEQ3lBRlFSQnFKQUFnQXd2Q0FRSURmd0YrSXdCQkVHc2lCQ1FBQW40Z0FDQUJSd1JBQWtBQ1FDQUFMUUFBSWdWQkxVY05BQ0FBUVFGcUlnQWdBVWNOQUF3QkMwR1lxU0FvQWdBaEJrR1lxU0JCQURZQ0FCREFBUm9nQUNBRVFReHFJQU1RZ3cwaEJ3SkFRWmlwSUNnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBDSUFCQnhBQkhEUUVnQWtFRU5nSUFRbjhNQkF0Qm1La2dJQVkyQWdBZ0JDZ0NEQ0FCUmcwQURBRUxRZ0FnQjMwZ0J5QUZRUzFHR3d3Q0N3c2dBa0VFTmdJQVFnQUxJUWNnQkVFUWFpUUFJQWNMNGdFQ0EzOEJmaU1BUVJCcklnUWtBQUovQWtBZ0FDQUJSd1JBQWtBQ1FDQUFMUUFBSWdWQkxVY05BQ0FBUVFGcUlnQWdBVWNOQUF3QkMwR1lxU0FvQWdBaEJrR1lxU0JCQURZQ0FCREFBUm9nQUNBRVFReHFJQU1RZ3cwaEJ3SkFRWmlwSUNnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBDSUFCQnhBQkdJQWRDLy8vLy93OVdjZzBCREFRTFFaaXBJQ0FHTmdJQUFrQWdCQ2dDRENBQlJnMEFEQUlMSUFkQ2dJQ0FnQkJVRFFNTElBSkJCRFlDQUVGL0RBTUxDeUFDUVFRMkFnQkJBQXdCQzBFQUlBZW5JZ0JySUFBZ0JVRXRSaHNMSVFBZ0JFRVFhaVFBSUFBTG1BTUJBbjhqQUVId0FXc2lBQ1FBSUFBZ0FqWUM0QUVnQUNBQk5nTG9BU0FERUw0RUlRWWdBRUhRQVdvZ0F5QUFRZDhCYWhDYkNDQUFRY0FCYWhCMElnRWdBUkNiQVJCMklBQWdBVUVBRUlrQklnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dnQUN3QTN3RWhBd05BQWtBZ0FFSG9BV29nQUVIZ0FXb1F5Z0pGRFFBZ0FDZ0N2QUVnQVJBN0lBSnFSZ1JBSUFFUU95RUhJQUVnQVJBN1FRRjBFSFlnQVNBQkVKc0JFSFlnQUNBSElBRkJBQkNKQVNJQ2FqWUN2QUVMSUFBb0F1Z0JFTzRCSUFZZ0FpQUFRYndCYWlBQVFRaHFJQU1nQUVIUUFXb2dBRUVRYWlBQVFReHFRWUNURHhDR0J3MEFJQUJCNkFGcUVKc0NHZ3dCQ3dzZ0FFSFFBV29RTzBVZ0FDZ0NEQ0lESUFCQkVHcHJRWjhCU25KRkJFQWdBeUFBS0FJSU5nSUFJQU5CQkdvaEF3c2dCU0FDSUFBb0Fyd0JJQVFnQmhDcUZEWUNBQ0FBUWRBQmFpQUFRUkJxSUFNZ0JCRElBaUFBUWVnQmFpQUFRZUFCYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0M2QUVoQWlBQkVBOGFJQUJCMEFGcUVBOGFJQUJCOEFGcUpBQWdBZ3ZsQVFJRGZ3RitJd0JCRUdzaUJDUUFBbjhDUUNBQUlBRkhCRUFDUUFKQUlBQXRBQUFpQlVFdFJ3MEFJQUJCQVdvaUFDQUJSdzBBREFFTFFaaXBJQ2dDQUNFR1FaaXBJRUVBTmdJQUVNQUJHaUFBSUFSQkRHb2dBeENERFNFSEFrQkJtS2tnS0FJQUlnQUVRQ0FFS0FJTUlBRkhEUUlnQUVIRUFFWWdCMEwvL3dOV2NnMEJEQVFMUVppcElDQUdOZ0lBQWtBZ0JDZ0NEQ0FCUmcwQURBSUxJQWRDZ0lBRVZBMERDeUFDUVFRMkFnQkIvLzhEREFNTEN5QUNRUVEyQWdCQkFBd0JDMEVBSUFlbklnQnJJQUFnQlVFdFJoc0xJUUFnQkVFUWFpUUFJQUJCLy84RGNRdXRBUUlDZndGK0l3QkJFR3NpQkNRQUFrQWdBQ0FCUndSQVFaaXBJQ2dDQUNFRlFaaXBJRUVBTmdJQUVNQUJHaUFBSUFSQkRHb2dBeEN1RkNFR0FrQkJtS2tnS0FJQUlnQUVRQ0FFS0FJTUlBRkhEUUVnQUVIRUFFY05BeUFDUVFRMkFnQkMvLy8vLy8vLy8vLy9BRUtBZ0lDQWdJQ0FnSUIvSUFaQ0FGVWJJUVlNQXd0Qm1La2dJQVUyQWdBZ0JDZ0NEQ0FCUmcwQ0N3c2dBa0VFTmdJQVFnQWhCZ3NnQkVFUWFpUUFJQVlMRmdBZ0FDQUJJQUpDZ0lDQWdJQ0FnSUNBZnhDa0RRdmFBUUlDZndGK0l3QkJFR3NpQkNRQUFuOENRQUpBQWtBQ1FBSkFJQUFnQVVjRVFFR1lxU0FvQWdBaEJVR1lxU0JCQURZQ0FCREFBUm9nQUNBRVFReHFJQU1RcmhRaEJnSkFRWmlwSUNnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBCSUFCQnhBQkdEUVFNQXd0Qm1La2dJQVUyQWdBZ0JDZ0NEQ0FCUmcwQ0N3c2dBa0VFTmdJQVFRQU1CUXNnQmtMLy8vLy9kMWNFUUNBQ1FRUTJBZ0FNQWdzZ0JrTC8vLy8vQjFjTkF3c2dBa0VFTmdJQUlBWkNBRlVOQVF0QmdJQ0FnSGdNQWd0Qi8vLy8vd2NNQVFzZ0JxY0xJUUFnQkVFUWFpUUFJQUFMQ1FBZ0FDQUJFSUFEQ3hrQUlBQWdBUkNBQXlJQVFRUnFJQUlvQWdBUWdBTWFJQUFMU1FBakFFRVFheUlFSkFBZ0FTZ0NBQ0VCSUFNb0FnQWhBeUFFUVFBNkFBd2dCQ0FETmdJSUlBRWdBaUFFUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUlBUkJFR29rQUF2SUNBRUZmeUFCS0FJQUlRUUNRQUpBQWtBQ1FBSkFBa0FDUUFKL0FrQUNRQUpBSUFORkRRQWdBeWdDQUNJSFJRMEFJQUJGQkVBZ0FpRUZEQUlMSUFOQkFEWUNBQ0FDSVFVTUFnc0NRRUgwcVNBb0FnQW9BZ0JGQkVBZ0FFVU5BU0FDUlEwTElBSWhBd05BSUFRc0FBQWlCUVJBSUFBZ0JVSC92d054TmdJQUlBQkJCR29oQUNBRVFRRnFJUVFnQTBFQmF5SUREUUVNRFFzTElBQkJBRFlDQUNBQlFRQTJBZ0FnQWlBRGF3OExJQUJGQkVBZ0FpRUZRUUFoQXd3RkN5QUNJUVZCQUF3REN5QUVFTndCRHd0QkFTRUREQUlMUVFFTElRTURRQ0FEUlFSQUlBVkZEUWdEUUFKQUFrQUNRQ0FFTFFBQUlnWkJBV3NpQjBIK0FFc0VRQ0FHSVFNTUFRc2dCRUVEY1NBRlFRVkpjZzBCQWtBRFFDQUVLQUlBSWdOQmdZS0VDR3NnQTNKQmdJR0NoSGh4RFFFZ0FDQURRZjhCY1RZQ0FDQUFJQVF0QUFFMkFnUWdBQ0FFTFFBQ05nSUlJQUFnQkMwQUF6WUNEQ0FBUVJCcUlRQWdCRUVFYWlFRUlBVkJCR3NpQlVFRVN3MEFDeUFFTFFBQUlRTUxJQU5CL3dGeElnWkJBV3NoQndzZ0IwSCtBRXNOQVFzZ0FDQUdOZ0lBSUFCQkJHb2hBQ0FFUVFGcUlRUWdCVUVCYXlJRkRRRU1DZ3NMSUFaQndnRnJJZ1pCTWtzTkJDQUVRUUZxSVFRZ0JrRUNkRUd3a1E5cUtBSUFJUWRCQVNFRERBRUxJQVF0QUFBaUEwRURkaUlHUVJCcklBWWdCMEVhZFdweVFRZExEUUlDUUFKQUFuOGdCRUVCYWlJR0lBTkJnQUZySUFkQkJuUnlJZ05CQUU0TkFCb2dCaTBBQUVHQUFXc2lCa0UvU3cwQklBUkJBbW9pQ0NBR0lBTkJCblJ5SWdOQkFFNE5BQm9nQ0MwQUFFR0FBV3NpQmtFL1N3MEJJQVlnQTBFR2RISWhBeUFFUVFOcUN5RUVJQUFnQXpZQ0FDQUZRUUZySVFVZ0FFRUVhaUVBREFFTFFaaXBJRUVaTmdJQUlBUkJBV3NoQkF3R0MwRUFJUU1NQUFzQUN3TkFBbjhnQTBVRVFBSkFBa0FnQkVFRGNTQUVMUUFBSWdOQkFXdEIvZ0JMY2tVRVFDQUVLQUlBSWdOQmdZS0VDR3NnQTNKQmdJR0NoSGh4UlEwQkN5QUVJUVlNQVFzRFFDQUZRUVJySVFVZ0JDZ0NCQ0VESUFSQkJHb2lCaUVFSUFNZ0EwR0Jnb1FJYTNKQmdJR0NoSGh4UlEwQUN3c2dBMEgvQVhFaUJFRUJhMEgrQUUwRVFDQUdRUUZxSVFRZ0JVRUJhd3dDQ3lBRVFjSUJheUlIUVRKTEJFQWdCaUVFREFVTElBWkJBV29oQkNBSFFRSjBRYkNSRDJvb0FnQWhCMEVCSVFNTUFnc2dCQzBBQUVFRGRpSURRUkJySUFkQkduVWdBMnB5UVFkTERRSUNmeUFFUVFGcUlnTWdCMEdBZ0lBUWNVVU5BQm9nQXkwQUFFSEFBWEZCZ0FGSEJFQWdCRUVCYXlFRURBWUxJQVJCQW1vaUF5QUhRWUNBSUhGRkRRQWFJQU10QUFCQndBRnhRWUFCUndSQUlBUkJBV3NoQkF3R0N5QUVRUU5xQ3lFRUlBVkJBV3NMSVFWQkFDRUREQUFMQUFzZ0JFRUJheUVFSUFjTkFTQUVMUUFBSVFNTElBTkIvd0Z4RFFBZ0FBUkFJQUJCQURZQ0FDQUJRUUEyQWdBTElBSWdCV3NQQzBHWXFTQkJHVFlDQUNBQVJRMEJDeUFCSUFRMkFnQUxRWDhQQ3lBQklBUTJBZ0FnQWdzeEFRRi9RZlNwSUNnQ0FDRUJJQUFFUUVIMHFTQkJqTHNnSUFBZ0FFRi9SaHMyQWdBTFFYOGdBU0FCUVl5N0lFWWJDNllDQVFaL0FrQWdBRUgvL3dkTERRQWdBRUgvQVhFaUJVRURiaUlDUVgxc0lBQnFRZjhCY1VFQ2RFSDRydzVxS0FJQUlBSWdBRUVJZGlJQ1FlQzZEbW90QUFCQjFnQnNha0hndWc1cUxRQUFiRUVMZGtFR2NDQUNRZERQRG1vdEFBQnFRUUowUVpDd0Rtb29BZ0FpQTBFSWRTRUNJQU5CL3dGeElnTkJBVTBFUUNBQ1FRQWdBU0FEYzJ0eElBQnFEd3NnQWtIL0FYRWlBMFVOQUNBQ1FRaDJJUUlEUUNBRFFRRjJJZ1lnQW1vaUJFRUJkRUhRdHc1cUxRQUFJZ2NnQlVZRVFDQUVRUUYwUWRHM0Rtb3RBQUJCQW5SQmtMQU9haWdDQUNJQ1FmOEJjU0lEUVFGTkJFQkJBQ0FCSUFOemF5QUNRUWgxY1NBQWFnOExRWDlCQVNBQkd5QUFhZzhMSUFJZ0JDQUZJQWRKSWdRYklRSWdCaUFESUFacklBUWJJZ01OQUFzTElBQUxFd0FnQUVFZ2NpQUFJQUJCd1FCclFScEpHd3NVQUNBQVFkOEFjU0FBSUFCQjRRQnJRUnBKR3d0QkFRRi9JQUlnQVJDR0RTSURTd1JBSUFBZ0FTQURRUUZxRUo0TkdpQUREd3NnQWdSQUlBQWdBU0FDUVFGcklnQVFuZzBnQUVFQ2RHcEJBRFlDQUFzZ0F3c2FBUUYvSUFJZ0FSRGNBU0lEU3dSQUlBQWdBUkNGRlFzZ0F3c25BQ0FBUVFCSElBQkI2TjRQUjNFZ0FFR0EzdzlIY1NBQVFiaTZJRWR4SUFCQjBMb2dSM0VMN3dJQkEzOENRQ0FCTFFBQURRQkJ2WVlHRUljTklnRUVRQ0FCTFFBQURRRUxJQUJCREd4QnNKWU9haENIRFNJQkJFQWdBUzBBQUEwQkMwSG0wd1lRaHcwaUFRUkFJQUV0QUFBTkFRdEJvK3dHSVFFTEFrQURRQ0FCSUFKcUxRQUFJZ1JGSUFSQkwwWnlSUVJBUVJjaEJDQUNRUUZxSWdKQkYwY05BUXdDQ3dzZ0FpRUVDMEdqN0FZaEF3SkFBa0FDUUFKQUFrQWdBUzBBQUNJQ1FTNUdEUUFnQVNBRWFpMEFBQTBBSUFFaEF5QUNRY01BUncwQkN5QURMUUFCUlEwQkN5QURRYVBzQmhDaUFrVU5BQ0FEUVlHK0JSQ2lBZzBCQ3lBQVJRUkFRZmlXRGlFQ0lBTXRBQUZCTGtZTkFndEJBQThMUWJTNklDZ0NBQ0lDQkVBRFFDQURJQUpCQ0dvUW9nSkZEUUlnQWlnQ0lDSUNEUUFMQzBFa0VPQUJJZ0lFUUNBQ1FSUTJBZ1FnQWtHUWxnNDJBZ0FnQWtFSWFpSUJJQU1nQkJCOUdpQUJJQVJxUVFBNkFBQWdBa0cwdWlBb0FnQTJBaUJCdExvZ0lBSTJBZ0FMSUFKQitKWU9JQUFnQW5JYklRSUxJQUlMS2dFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFSEt3d01nQVJDOUZDRUFJQUpCRUdva0FDQUFDNzhlQWc5L0JYNGpBRUdRQVdzaUJDUUFJQVJCQUVHUUFSQjVJZ05CZnpZQ1RDQURJQUEyQWl3Z0EwSGFGellDSUNBRElBQTJBbFFnQWlFUFFRQWhBQ01BUWJBQ2F5SUdKQUFnQXlnQ1RCb0NRQUpBQWtBQ1FDQURLQUlFRFFBZ0F4Q25EUm9nQXlnQ0JBMEFEQUVMSUFFdEFBQWlCVVVOQWdKQUFrQUNRQUpBQTBBQ1FBSkFJQVZCL3dGeElnSVF3Z1VFUUFOQUlBRWlCVUVCYWlFQklBVXRBQUVRd2dVTkFBc2dBMElBRUlNRUEwQUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFS1VCQ3hEQ0JRMEFDeUFES0FJRUlRRWdBeWtEY0VJQVdRUkFJQU1nQVVFQmF5SUJOZ0lFQ3lBQklBTW9BaXhyckNBREtRTjRJQlI4ZkNFVURBRUxBbjhDUUFKQUlBSkJKVVlFUUNBQkxRQUJJZ0pCS2tZTkFTQUNRU1ZIRFFJTElBTkNBQkNEQkFKQUlBRXRBQUJCSlVZRVFBTkFBbjhnQXlnQ0JDSUNJQU1vQW1oSEJFQWdBeUFDUVFGcU5nSUVJQUl0QUFBTUFRc2dBeENsQVFzaUJSRENCUTBBQ3lBQlFRRnFJUUVNQVFzZ0F5Z0NCQ0lDSUFNb0FtaEhCRUFnQXlBQ1FRRnFOZ0lFSUFJdEFBQWhCUXdCQ3lBREVLVUJJUVVMSUFFdEFBQWdCVWNFUUNBREtRTndRZ0JaQkVBZ0F5QURLQUlFUVFGck5nSUVDeUFGUVFCT0RRMUJBQ0VISUE0TkRRd0xDeUFES0FJRUlBTW9BaXhyckNBREtRTjRJQlI4ZkNFVUlBRWhCUXdEQzBFQUlRZ2dBVUVDYWd3QkN3SkFJQUlRdWdORkRRQWdBUzBBQWtFa1J3MEFJd0JCRUdzaUJDQVBOZ0lNSUFRZ0R5QUNRVEJySWdKQkFuUkJCR3RCQUNBQ1FRRkxHMm9pQWtFRWFqWUNDQ0FDS0FJQUlRZ2dBVUVEYWd3QkN5QVBLQUlBSVFnZ0QwRUVhaUVQSUFGQkFXb0xJUUZCQUNFQ0EwQWdBUzBBQUNJRUVMb0RCRUFnQVVFQmFpRUJJQUpCQ213Z0JHcEJNR3NoQWd3QkN3dEJBQ0VNSUFSQjdRQkdCRUJCQUNFS0lBaEJBRWNoRENBQkxRQUJJUVFnQVVFQmFpRUJRUUFoQUFzZ0FVRUJhaUVGUVFNaENTQU1JUWNDUUFKQUFrQUNRQUpBQWtBZ0JFSC9BWEZCd1FCckRqb0VEQVFNQkFRRURBd01EQU1NREF3TURBd0VEQXdNREFRTURBUU1EQXdNREFRTUJBUUVCQVFBQkFVTUFRd0VCQVFNREFRQ0JBd01CQXdDREFzZ0FVRUNhaUFGSUFFdEFBRkI2QUJHSWdFYklRVkJma0YvSUFFYklRa01CQXNnQVVFQ2FpQUZJQUV0QUFGQjdBQkdJZ0ViSVFWQkEwRUJJQUViSVFrTUF3dEJBU0VKREFJTFFRSWhDUXdCQzBFQUlRa2dBU0VGQzBFQklBa2dCUzBBQUNJQlFTOXhRUU5HSWdRYklSQUNRQ0FCUVNCeUlBRWdCQnNpQzBIYkFFWU5BQUpBSUF0QjdnQkhCRUFnQzBIakFFY05BVUVCSUFJZ0FrRUJUQnNoQWd3Q0N5QUlJQkFnRkJDK0ZBd0NDeUFEUWdBUWd3UURRQUovSUFNb0FnUWlBU0FES0FKb1J3UkFJQU1nQVVFQmFqWUNCQ0FCTFFBQURBRUxJQU1RcFFFTEVNSUZEUUFMSUFNb0FnUWhBU0FES1FOd1FnQlpCRUFnQXlBQlFRRnJJZ0UyQWdRTElBRWdBeWdDTEd1c0lBTXBBM2dnRkh4OElSUUxJQU1nQXF3aUVoQ0RCQUpBSUFNb0FnUWlBU0FES0FKb1J3UkFJQU1nQVVFQmFqWUNCQXdCQ3lBREVLVUJRUUJJRFFZTElBTXBBM0JDQUZrRVFDQURJQU1vQWdSQkFXczJBZ1FMUVJBaEFRSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQXRCMkFCckRpRUdDUWtDQ1FrSkNRa0JDUUlFQVFFQkNRVUpDUWtKQ1FNR0NRa0NDUVFKQ1FZQUN5QUxRY0VBYXlJQlFRWkxRUUVnQVhSQjhRQnhSWElOQ0FzZ0JrRUlhaUFESUJCQkFCQ0NGU0FES1FONFFnQWdBeWdDQkNBREtBSXNhNng5VWcwRkRBd0xJQXRCRUhKQjh3QkdCRUFnQmtFZ2FrRi9RWUVDRUhrYUlBWkJBRG9BSUNBTFFmTUFSdzBHSUFaQkFEb0FRU0FHUVFBNkFDNGdCa0VBTmdFcURBWUxJQVpCSUdvZ0JTMEFBU0lCUWQ0QVJpSUVRWUVDRUhrYUlBWkJBRG9BSUNBRlFRSnFJQVZCQVdvZ0JCc2hCd0ovQWtBQ1FDQUZRUUpCQVNBRUcyb3RBQUFpQkVFdFJ3UkFJQVJCM1FCR0RRRWdBVUhlQUVjaENTQUhEQU1MSUFZZ0FVSGVBRWNpQ1RvQVRnd0JDeUFHSUFGQjNnQkhJZ2s2QUg0TElBZEJBV29MSVFVRFFBSkFJQVV0QUFBaUJFRXRSd1JBSUFSRkRROGdCRUhkQUVZTkNBd0JDMEV0SVFRZ0JTMEFBU0lIUlNBSFFkMEFSbklOQUNBRlFRRnFJUTBDUUNBSElBVkJBV3N0QUFBaUFVMEVRQ0FISVFRTUFRc0RRQ0FCUVFGcUlnRWdCa0VnYW1vZ0NUb0FBQ0FCSUEwdEFBQWlCRWtOQUFzTElBMGhCUXNnQkNBR2FpQUpPZ0FoSUFWQkFXb2hCUXdBQ3dBTFFRZ2hBUXdDQzBFS0lRRU1BUXRCQUNFQkMwSUFJUkpCQUNFRVFRQWhCMEVBSVEwakFFRVFheUlKSkFBQ1FDQUJRUUZHQkVCQm1La2dRUncyQWdBTUFRc0RRQUovSUFNb0FnUWlBaUFES0FKb1J3UkFJQU1nQWtFQmFqWUNCQ0FDTFFBQURBRUxJQU1RcFFFTElnSVF3Z1VOQUFzQ1FBSkFJQUpCSzJzT0F3QUJBQUVMUVg5QkFDQUNRUzFHR3lFTklBTW9BZ1FpQWlBREtBSm9Sd1JBSUFNZ0FrRUJhallDQkNBQ0xRQUFJUUlNQVFzZ0F4Q2xBU0VDQ3dKQUFrQUNRQUpBSUFGQkFFY2dBVUVRUjNFZ0FrRXdSM0pGQkVBQ2Z5QURLQUlFSWdJZ0F5Z0NhRWNFUUNBRElBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBREVLVUJDeUlDUVY5eFFkZ0FSZ1JBUVJBaEFRSi9JQU1vQWdRaUFpQURLQUpvUndSQUlBTWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBTVFwUUVMSWdKQmdaUU9haTBBQUVFUVNRMERJQU1wQTNCQ0FGa0VRQ0FESUFNb0FnUkJBV3MyQWdRTElBTkNBQkNEQkF3R0N5QUJEUUZCQ0NFQkRBSUxJQUZCQ2lBQkd5SUJJQUpCZ1pRT2FpMEFBRXNOQUNBREtRTndRZ0JaQkVBZ0F5QURLQUlFUVFGck5nSUVDeUFEUWdBUWd3UkJtS2tnUVJ3MkFnQU1CQXNnQVVFS1J3MEFJQUpCTUdzaUJFRUpUUVJBUVFBaEFRTkFJQUZCQ213Z0JHb2lBVUdacytiTUFVa0NmeUFES0FJRUlnSWdBeWdDYUVjRVFDQURJQUpCQVdvMkFnUWdBaTBBQUF3QkN5QURFS1VCQ3lJQ1FUQnJJZ1JCQ1UxeERRQUxJQUd0SVJJTEFrQWdCRUVKU3cwQUlCSkNDbjRoRXlBRXJTRVZBMEFDZnlBREtBSUVJZ0VnQXlnQ2FFY0VRQ0FESUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFERUtVQkN5SUNRVEJySWdSQkNVc2dFeUFWZkNJU1FwcXo1c3lacytiTUdWcHlEUUVnRWtJS2ZpSVRJQVN0SWhWQ2Y0VllEUUFMUVFvaEFRd0NDMEVLSVFFZ0JFRUpUUTBCREFJTElBRWdBVUVCYTNFRVFDQUNRWUdVRG1vdEFBQWlCeUFCU1FSQUEwQWdBU0FFYkNBSGFpSUVRY2ZqOFRoSkFuOGdBeWdDQkNJQ0lBTW9BbWhIQkVBZ0F5QUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0F4Q2xBUXNpQWtHQmxBNXFMUUFBSWdjZ0FVbHhEUUFMSUFTdElSSUxJQUVnQjAwTkFTQUJyU0VUQTBBZ0VpQVRmaUlWSUFldFF2OEJneUlXUW4rRlZnMENJQlVnRm53aEVpQUJBbjhnQXlnQ0JDSUNJQU1vQW1oSEJFQWdBeUFDUVFGcU5nSUVJQUl0QUFBTUFRc2dBeENsQVFzaUFrR0JsQTVxTFFBQUlnZE5EUUlnQ1NBVFFnQWdFa0lBRUxBQ0lBa3BBd2hRRFFBTERBRUxJQUZCRjJ4QkJYWkJCM0ZCZ1pZT2Fpd0FBQ0VSSUFKQmdaUU9haTBBQUNJRUlBRkpCRUFEUUNBSElCRjBJQVJ5SWdkQmdJQ0F3QUJKQW44Z0F5Z0NCQ0lDSUFNb0FtaEhCRUFnQXlBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQXhDbEFRc2lBa0dCbEE1cUxRQUFJZ1FnQVVseERRQUxJQWV0SVJJTElBRWdCRTBOQUVKL0lCR3RJaE9JSWhVZ0VsUU5BQU5BSUFTdFF2OEJneUFTSUJPR2hDRVNJQUVDZnlBREtBSUVJZ0lnQXlnQ2FFY0VRQ0FESUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFERUtVQkN5SUNRWUdVRG1vdEFBQWlCRTBOQVNBU0lCVllEUUFMQ3lBQklBSkJnWlFPYWkwQUFFME5BQU5BSUFFQ2Z5QURLQUlFSWdJZ0F5Z0NhRWNFUUNBRElBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBREVLVUJDMEdCbEE1cUxRQUFTdzBBQzBHWXFTQkJ4QUEyQWdCQ2Z5RVNRUUFoRFFzZ0F5a0RjRUlBV1FSQUlBTWdBeWdDQkVFQmF6WUNCQXNnRWlBTnJDSVRoU0FUZlNFU0N5QUpRUkJxSkFBZ0F5a0RlRUlBSUFNb0FnUWdBeWdDTEd1c2ZWRU5CeUFJUlNBTFFmQUFSM0pGQkVBZ0NDQVNQZ0lBREFNTElBZ2dFQ0FTRUw0VURBSUxJQWhGRFFFZ0Jpa0RFQ0VTSUFZcEF3Z2hFd0pBQWtBQ1FDQVFEZ01BQVFJRUN5QUlJQk1nRWhDZUZUZ0NBQXdEQ3lBSUlCTWdFaEN5RFRrREFBd0NDeUFJSUJNM0F3QWdDQ0FTTndNSURBRUxJQUpCQVdwQkh5QUxRZU1BUmlJTkd5RUNBa0FnRUVFQlJnUkFJQWdoQkNBTUJFQWdBa0VDZEJEZ0FTSUVSUTBIQ3lBR1FnQTNBNmdDUVFBaEFRTkFJQVFoQUFKQUEwQUNmeUFES0FJRUlnUWdBeWdDYUVjRVFDQURJQVJCQVdvMkFnUWdCQzBBQUF3QkN5QURFS1VCQ3lJRUlBWnFMUUFoUlEwQklBWWdCRG9BR3lBR1FSeHFJQVpCRzJwQkFTQUdRYWdDYWhDUENpSUVRWDVHRFFCQkFDRUtJQVJCZjBZTkN5QUFCRUFnQUNBQlFRSjBhaUFHS0FJY05nSUFJQUZCQVdvaEFRc2dEQ0FCSUFKR2NVVU5BQXRCQVNFSElBQWdBaUlCUVFGMFFRRnlJZ0pCQW5RUW9nb2lCQTBCREFzTEMwRUFJUW9nQUNFQ0lBWkJxQUpxQkg4Z0JpZ0NxQUlGUVFBTERRZ01BUXNnREFSQVFRQWhBU0FDRU9BQklnUkZEUVlEUUNBRUlRQURRQUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RcFFFTElnUWdCbW90QUNGRkJFQkJBQ0VDSUFBaENnd0VDeUFBSUFGcUlBUTZBQUFnQVVFQmFpSUJJQUpIRFFBTFFRRWhCeUFBSUFJaUFVRUJkRUVCY2lJQ0VLSUtJZ1FOQUFzZ0FDRUtRUUFoQUF3SkMwRUFJUUVnQ0FSQUEwQUNmeUFES0FJRUlnQWdBeWdDYUVjRVFDQURJQUJCQVdvMkFnUWdBQzBBQUF3QkN5QURFS1VCQ3lJQUlBWnFMUUFoQkVBZ0FTQUlhaUFBT2dBQUlBRkJBV29oQVF3QkJVRUFJUUlnQ0NJQUlRb01Bd3NBQ3dBTEEwQUNmeUFES0FJRUlnQWdBeWdDYUVjRVFDQURJQUJCQVdvMkFnUWdBQzBBQUF3QkN5QURFS1VCQ3lBR2FpMEFJUTBBQzBFQUlRQkJBQ0VLUVFBaEFnc2dBeWdDQkNFRUlBTXBBM0JDQUZrRVFDQURJQVJCQVdzaUJEWUNCQXNnQXlrRGVDQUVJQU1vQWl4cnJId2lFMUFnQzBIakFFWWdFaUFUVW5GeURRSWdEQVJBSUFnZ0FEWUNBQXNDUUNBTkRRQWdBZ1JBSUFJZ0FVRUNkR3BCQURZQ0FBc2dDa1VFUUVFQUlRb01BUXNnQVNBS2FrRUFPZ0FBQ3lBQ0lRQUxJQU1vQWdRZ0F5Z0NMR3VzSUFNcEEzZ2dGSHg4SVJRZ0RpQUlRUUJIYWlFT0N5QUZRUUZxSVFFZ0JTMEFBU0lGRFFFTUNBc0xJQUloQUF3QkMwRUJJUWRCQUNFS1FRQWhBQXdDQ3lBTUlRY01Bd3NnRENFSEN5QU9EUUVMUVg4aERnc2dCMFVOQUNBS0VCOGdBQkFmQ3lBR1FiQUNhaVFBSUE0aEFDQURRWkFCYWlRQUlBQUxRd0FDUUNBQVJRMEFBa0FDUUFKQUFrQWdBVUVDYWc0R0FBRUNBZ1FEQkFzZ0FDQUNQQUFBRHdzZ0FDQUNQUUVBRHdzZ0FDQUNQZ0lBRHdzZ0FDQUNOd01BQ3d1TEF3SUZmd0YrSXdCQklHc2lBaVFBQWtBZ0FDMEFOQVJBSUFBb0FqQWhBeUFCUlEwQklBQkJBRG9BTkNBQVFYODJBakFNQVFzZ0FrRUJOZ0lZSUFKQkdHb2dBRUVzYWhEQkZDZ0NBQ0lFUVFBZ0JFRUFTaHNoQlFKQUEwQWdBeUFGUndSQUlBQW9BaUFRb0FvaUJrRi9SZzBDSUFKQkdHb2dBMm9nQmpvQUFDQURRUUZxSVFNTUFRc0xBa0FnQUMwQU5RUkFJQUlnQWkwQUdEb0FGd3dCQ3lBQ1FSaHFJUU1EUUFKQUlBQW9BaWdpQlNrQ0FDRUhBa0FnQUNnQ0pDQUZJQUpCR0dvaUJTQUVJQVZxSWdVZ0FrRVFhaUFDUVJkcUlBTWdBa0VNYWhET0ZFRUJhdzREQUFRQkF3c2dBQ2dDS0NBSE53SUFJQVJCQ0VZTkF5QUFLQUlnRUtBS0lnWkJmMFlOQXlBRklBWTZBQUFnQkVFQmFpRUVEQUVMQ3lBQ0lBSXRBQmc2QUJjTEFrQWdBVVVFUUFOQUlBUkJBRXdOQWlBRVFRRnJJZ1FnQWtFWWFtb3NBQUFRcFFNZ0FDZ0NJQkNRQ2tGL1J3MEFEQU1MQUFzZ0FDQUNMQUFYRUtVRElnTTJBakFNQWdzZ0Fpd0FGeENsQXlFRERBRUxRWDhoQXdzZ0FrRWdhaVFBSUFNTENRQWdBQkNhQ2hBZkN4UUFJQUVnQUNBQUtBSUFJQUVvQWdBUTloUWJDNG9EQWdaL0FYNGpBRUVnYXlJQ0pBQUNRQ0FBTFFBMEJFQWdBQ2dDTUNFRUlBRkZEUUVnQUVFQU9nQTBJQUJCZnpZQ01Bd0JDeUFDUVFFMkFoZ2dBa0VZYWlBQVFTeHFFTUVVS0FJQUlnVkJBQ0FGUVFCS0d5RUdBMEFnQXlBR1J3UkFRWDhoQkNBQUtBSWdFS0FLSWdkQmYwWU5BaUFDUVJocUlBTnFJQWM2QUFBZ0EwRUJhaUVEREFFTEN3SkFBa0FnQUMwQU5RUkFJQUlnQWl3QUdEWUNGQXdCQ3lBQ1FSaHFJUVFEUUFKQUlBQW9BaWdpQXlrQ0FDRUlBa0FnQUNnQ0pDQURJQUpCR0dvaUF5QURJQVZxSWdNZ0FrRVFhaUFDUVJScUlBUWdBa0VNYWhET0ZFRUJhdzREQUFRQkF3c2dBQ2dDS0NBSU53SUFJQVZCQ0VZTkF5QUFLQUlnRUtBS0lnWkJmMFlOQXlBRElBWTZBQUFnQlVFQmFpRUZEQUVMQ3lBQ0lBSXNBQmcyQWhRTEFrQWdBVVVFUUFOQUlBVkJBRXdOQWtGL0lRUWdCVUVCYXlJRklBSkJHR3BxTEFBQUlBQW9BaUFRa0FwQmYwY05BQXdFQ3dBTElBQWdBaWdDRkNJRU5nSXdEQUlMSUFJb0FoUWhCQXdCQzBGL0lRUUxJQUpCSUdva0FDQUVDNFVCQVFWL0l3QkJFR3NpQVNRQUlBRkJFR29oQkFKQUEwQWdBQ2dDSkNJQ0lBQW9BaWdnQVVFSWFpSURJQVFnQVVFRWFpQUNLQUlBS0FJVUVRa0FJUVZCZnlFQ0lBTkJBU0FCS0FJRUlBTnJJZ01nQUNnQ0lCQ0FCU0FEUncwQkFrQWdCVUVCYXc0Q0FRSUFDd3RCZjBFQUlBQW9BaUFROGhRYklRSUxJQUZCRUdva0FDQUNDdzBBSUFCQjJJOE9OZ0lBSUFBTEVnQWdBQkRFRkNJQVFjU1NEallDQUNBQUN4RUFJQUFnQUNnQ0JFR0F3QUJ5TmdJRUN4SUFJQUFReEJRaUFFRzhqdzQyQWdBZ0FBc0xBQ0FBUWFTMElEWUNTQXRZQVFKL0l3QkJFR3NpQXlRQUlBQVEyQlFpQUNBQk5nSWdJQUJCNEpJT05nSUFJQU5CQ0dvaUFTQUFFSTRISUFFUWlnMGhCQ0FCRUdRZ0FDQUNOZ0lvSUFBZ0JEWUNKQ0FBSUFRUWpRYzZBQ3dnQTBFUWFpUUFDd3NBSUFCQjBMTWdOZ0pJQzFnQkFuOGpBRUVRYXlJREpBQWdBQkNYQ2lJQUlBRTJBaUFnQUVId2p3NDJBZ0FnQTBFSWFpSUJJQUFRamdjZ0FSQ09EU0VFSUFFUVpDQUFJQUkyQWlnZ0FDQUVOZ0lrSUFBZ0JCQ05Cem9BTENBRFFSQnFKQUFMUEFFQ2Z5QUFLQUlvSVFJRFFDQUNCRUFnQVNBQUlBSkJBV3NpQWtFQ2RDSURJQUFvQWlScUtBSUFJQUFvQWlBZ0Eyb29BZ0FSQlFBTUFRc0xDd2tBSUFBUXV3RVFId3NkQUNBQUlBRWdBaUFESUFRZ0JTQUdJQWNnQUNnQ0FDZ0NFQkVNQUFzSEFDQUJJQUJyQ3drQUlBQWdBUkRQRkF1ZkFRRUVmeU1BUVJCcklnVWtBQ0FCSUFJUTBCUWhBeUFBRUpnR0lBTkJjRWtFUUFKQUlBTVExUWdFUUNBQUlBTVFpd1VnQUJDS0JTRUVEQUVMSUFBZ0F4Q1hCa0VCYWlJR0VKUUdJZ1FRbGdZZ0FDQUdFSlVHSUFBZ0F4RFRCQXNEUUNBQklBSkhCRUFnQkNBQkVORUNJQVJCQVdvaEJDQUJRUUZxSVFFTUFRc0xJQVZCQURvQUR5QUVJQVZCRDJvUTBRSWdCVUVRYWlRQUR3c1F1QU1BQzZ3SUFnVi9CSDRqQUVIZ0FHc2lCaVFBSUFaQkFEWUNSQ0FFSUFRb0FnQW9BZ2dSQUFBZ0JrSEVBR29RSWhvZ0JrRUFOZ0pBSUFVZ0JTZ0NBQ2dDQ0JFQUFDQUdRVUJyRUNJYUFrQWdCaWdDUkNJSklBWW9Ba0FpQ0NBSUlBbEpHeUlKUVFGR0JFQWdBeWdDQUNFQklBTW9BZ1FoQWlBRUlBUW9BZ0FvQWdnUkFBQWhCeUFHSUFFMkFoQWdCaUFDS1FJSU53SWNJQVlnQWlnQ0VEWUNKQ0FHSUFJcEFnQTNBaFFnQmlBSE5nSW9JQVFnQkNnQ0FDZ0NDQkVBQUNJRFJRUkFJQUJCQURvQUJBd0NDeUFHUVJCcVFRUnlJUUlDUUFKQUlBTW9BZ1FpQTBIUW9CSkdCRUFnQkJCaklRc2dCUkJqSVF3akFFRVFheUlESkFBZ0JrSFFBR29pQkFKL0FrQWdDeUFNZlNJT0lBdFRJQXhDQUZWSEJFQWdBeUFMUWN5WUNDQU1FTzRHSUFFZ0F5QUNFRjBnQXhBUEdpQUJMUUFFRFFGQkFnd0NDeUFPSVEwTElBUWdEVGNEQUVFQkN6b0FDQ0FEUVJCcUpBQWdCQkN5QVFSQUlBWkJ5QUJxSUFFZ0JpZ0NLQ0FHUWRBQWFoQktLUU1BRVAwQkRBSUxJQVpCQWpvQVRBd0JDeUFEUWZDZkVrWUVRQ0FHUWRBQWFpSURJQUVnQWlBRUVEd2dCUkE4RUlFRUlBTVFzZ0VFUUNBR1FjZ0FhaUFCSUFJZ0JpZ0NLQ0FHUWRBQWFoQktLd01BRUhNTUFnc2dCa0VDT2dCTURBRUxJQU5Cc0trU1JnUkFJQVpCMEFCcUlnTWdBU0FDSUFRUU5DQUZFRFFRZ0FRZ0F4QXJCRUFnQmtISUFHb2dBU0FDSUFZb0FpZ2dCa0hRQUdvUUdpb0NBQkJyREFJTElBWkJBam9BVEF3QkN5QURRWkNxRWtZRVFDQUVFR0VoQWlBRkVHRWhBeUFHUVFFNkFGUWdCaUFDSUFOck5nSlFJQVpCMEFCcUVDc0VRQ0FHUWNnQWFpQUJJQWNnQmtIUUFHb1FHaWdDQUJDeEFRd0NDeUFHUVFJNkFFd01BUXNnQTBHZ3N4SkdCRUFnQkJCWklRSWdCUkJaSVFNZ0JrRUJPZ0JVSUFZZ0FpQURhellDVUNBR1FkQUFhaEFyQkVBZ0JrSElBR29nQVNBSElBWkIwQUJxRUJvb0FnQVFyUUVNQWdzZ0JrRUNPZ0JNREFFTElBTkIwS2dTUncwQklBWkIwQUJxSWdNZ0FTQUNJQVFRUHlBRkVEOFEvd01nQXhBckJFQWdCa0hJQUdvZ0FTQUNJQVlvQWlnZ0JrSFFBR29RR2lvQ0FCQnlEQUVMSUFaQkFqb0FUQXNnQUNBR0tRTklOd0lBREFJTElBQkJBRG9BQkF3QkN5QUdRb0NBZ0lDQUFUY0NOQ0FHSUFaQkVHb2lDRFlDTUNBSUlBa1FPU0FHUVRCcUlRZ0NRQUpBQTBBZ0J5QUpSZzBCSUFaQjBBQnFJZ29nQVNBQ1FRQVFJaUFESUFZb0FrUkJBVWNFZnlBRUlBY2dCQ2dDQUNnQ0RCRUJBQVVnQkFzZ0JpZ0NRRUVCUndSL0lBVWdCeUFGS0FJQUtBSU1FUUVBQlNBRkN4RFNGQ0FLRUNzRVFDQUdRUkJxSUFaQjBBQnFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkIwQUJxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWcyQWdnZ0JpQUdLQUl3SUFaQkVHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FSQnFFQ01MSUFaQjRBQnFKQUFMVlFFQ2Z3SkFJQUFvQWdBaUFrVU5BQUovSUFJb0FoZ2lBeUFDS0FJY1JnUkFJQUlnQVNBQ0tBSUFLQUkwRVFFQURBRUxJQUlnQTBFRWFqWUNHQ0FESUFFMkFnQWdBUXNRa0FkRkRRQWdBRUVBTmdJQUN3c3hBUUYvSUFBb0Fnd2lBU0FBS0FJUVJnUkFJQUFnQUNnQ0FDZ0NLQkVBQUE4TElBQWdBVUVFYWpZQ0RDQUJLQUlBQ3lvQkFYOGdBQ2dDQUNJQkJFQWdBUkR0QVJDUUIwVUVRQ0FBS0FJQVJROExJQUJCQURZQ0FBdEJBUXNRQUNBQUVOVVVJQUVRMVJSelFRRnpDd2tBSUFCQkFSQ09FUXNMQUNBQVFhQ0VEaEQ2RWdzVUFDQUFRYUNFRGpZQ0FDQUFRUVJxRUdRZ0FBc0pBQ0FBRVA0RUVCOExGd0FnQUNBQklBSWdBeUFFSUFBb0FnQW9BaUFSSlFBTEZ3QWdBQ0FCSUFJZ0F5QUVJQUFvQWdBb0FoQVJDUUFMc1FFQkJuOGpBRUVnYXlJQ0pBQWdBa0VZYWlJRElBQVEzd01hQWtBZ0F4Q1NCRVVOQUNBQ1FSQnFJZ01nQUNBQUtBSUFRUXhyS0FJQWFoQitJQU1RL1FRaEJDQURFR1FnQWtFSWFpQUFFTklFSVFVZ0FDQUFLQUlBUVF4cktBSUFhaUlHRUp3RElRY2dBaUFFSUFVb0FnQWdCaUFISUFFZ0JDZ0NBQ2dDREJFSkFEWUNFQ0FERU5FRVJRMEFJQUFnQUNnQ0FFRU1heWdDQUdwQkJSQ1BBd3NnQWtFWWFoRGdBeUFDUVNCcUpBQWdBQXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFSm9OQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RbEFvTHFBTUJCMzhqQUVFZ2F5SURKQUFnQTBFQU5nSWNJd0JCSUdzaUJDUUFJQU5CR0dvaUJVRUFPZ0FBQWtBZ0FDQUFLQUlBUVF4cktBSUFhaUlDS0FJUVJRUkFJQUlvQWtnaUFnUkFJQUlRbkFnTEFrQWdBQ0FBS0FJQVFReHJLQUlBYWhDNEFVR0FJSEZGRFFBZ0JFRVlhaUlDSUFBZ0FDZ0NBRUVNYXlnQ0FHb1FmaUFDRU1NQ0lRY2dBaEJrSUFSQkVHb2dBQkRuRkNFQ0lBUkJDR29RbUFRaEJnTkFBa0FnQWlBR0VNb0NSUTBBSUFJb0FnQVE3Z0VoQ0NBSEtBSUlRUUVnQ0JDOUFrVU5BQ0FDRUpzQ0dnd0JDd3NnQWlBR0VJY0NSUTBBSUFBZ0FDZ0NBRUVNYXlnQ0FHcEJCaENQQXdzZ0JTQUFJQUFvQWdCQkRHc29BZ0JxS0FJUVJUb0FBQXdCQ3lBQ1FRUVFqd01MSUFSQklHb2tBQ0FGTFFBQUVPSVVCRUFnQTBFUWFpSUVJQUFnQUNnQ0FFRU1heWdDQUdvUWZpQUVRYmk3SUJEZUF5RUNJQU5CQ0dvZ0FCRG5GQ0VGSUFNUW1BUWhCaUFDSUFVb0FnQWdCaWdDQUNBQUlBQW9BZ0JCREdzb0FnQnFJQU5CSEdvZ0FTQUNLQUlBS0FJc0VRc0FHaUFFRUdRZ0FDQUFLQUlBUVF4cktBSUFhaUFES0FJY0VJOERDeUFEUVNCcUpBQUxQUUVCZnlBQUtBSVlJZ0lnQUNnQ0hFWUVRQ0FBSUFFUXBRTWdBQ2dDQUNnQ05CRUJBQThMSUFBZ0FrRUJhallDR0NBQ0lBRTZBQUFnQVJDbEF3c0xBQ0FBUWY4QmNVRUFSd3NzQVFGL0lBQW9BZ0FpQVFSQUlBRVE1UlJCZnhEWUJVVUVRQ0FBS0FJQVJROExJQUJCQURZQ0FBdEJBUXMwQVFGL0lBQW9BZ3dpQVNBQUtBSVFSZ1JBSUFBZ0FDZ0NBQ2dDS0JFQUFBOExJQUFnQVVFQmFqWUNEQ0FCTEFBQUVLVURDeW9CQVg4Z0FDZ0NEQ0lCSUFBb0FoQkdCRUFnQUNBQUtBSUFLQUlrRVFBQUR3c2dBU3dBQUJDbEF3c1FBQ0FBRU9NVUlBRVE0eFJ6UVFGekN4b0FJQUFnQVNBQktBSUFRUXhyS0FJQWFoQzFCallDQUNBQUM5Y0hBUWQvSXdCQjRBQnJJZ1lrQUNBR1FRQTJBa1FnQkNBRUtBSUFLQUlJRVFBQUlBWkJ4QUJxRUNJYUlBWkJBRFlDUUNBRklBVW9BZ0FvQWdnUkFBQWdCa0ZBYXhBaUdnSkFJQVlvQWtRaUJ5QUdLQUpBSWdnZ0J5QUlTeHNpQ2tFQlJnUkFJQU1vQWdBaEFTQURLQUlFSVFJZ0JDQUVLQUlBS0FJSUVRQUFJUWNnQmlBQk5nSVFJQVlnQWlrQ0NEY0NIQ0FHSUFJb0FoQTJBaVFnQmlBQ0tRSUFOd0lVSUFZZ0J6WUNLQ0FFSUFRb0FnQW9BZ2dSQUFBaUEwVUVRQ0FBUVFBNkFBUU1BZ3NnQmtFUWFrRUVjaUVDQWtBQ1FDQURLQUlFSWdOQjBLQVNSZ1JBSUFaQjBBQnFJZ01nQVNBQ0lBUVFZeUFGRUdNUXhBUWdBeEN5QVFSQUlBWkJ5QUJxSUFFZ0JpZ0NLQ0FHUWRBQWFoQktLUU1BRVAwQkRBSUxJQVpCQWpvQVRBd0JDeUFEUWZDZkVrWUVRQ0FHUWRBQWFpSURJQUVnQWlBRUVEd2dCUkE4RU5zQklBTVFzZ0VFUUNBR1FjZ0FhaUFCSUFJZ0JpZ0NLQ0FHUWRBQWFoQktLd01BRUhNTUFnc2dCa0VDT2dCTURBRUxJQU5Cc0trU1JnUkFJQVpCMEFCcUlnTWdBU0FDSUFRUU5DQUZFRFFRMmdFZ0F4QXJCRUFnQmtISUFHb2dBU0FDSUFZb0FpZ2dCa0hRQUdvUUdpb0NBQkJyREFJTElBWkJBam9BVEF3QkN5QURRWkNxRWtZRVFDQUVFR0VoQXlBRkVHRWhCQ0FHUVFFNkFGUWdCaUFESUFSc05nSlFJQVpCMEFCcUVDc0VRQ0FHUWNnQWFpQUJJQWNnQmtIUUFHb1FHaWdDQUJDeEFRd0NDeUFHUVFJNkFFd01BUXNnQTBHZ3N4SkdCRUFnQkJCWklRTWdCUkJaSVFRZ0JrRUJPZ0JVSUFZZ0F5QUViRFlDVUNBR1FkQUFhaEFyQkVBZ0JrSElBR29nQVNBSElBWkIwQUJxRUJvb0FnQVFyUUVNQWdzZ0JrRUNPZ0JNREFFTElBTkIwS2dTUncwQklBWkIwQUJxSWdNZ0FTQUNJQVFRUHlBRkVEOFEyUUVnQXhBckJFQWdCa0hJQUdvZ0FTQUNJQVlvQWlnZ0JrSFFBR29RR2lvQ0FCQnlEQUVMSUFaQkFqb0FUQXNnQUNBR0tRTklOd0lBREFJTElBQkJBRG9BQkF3QkN5QUdRb0NBZ0lDQUFUY0NOQ0FHSUFaQkVHb2lDRFlDTUNBSUlBb1FPU0FHUVRCcUlRc0NRQUpBQTBBZ0NTQUtSZzBCSUFRaEJ5QUZJUWdnQmtIUUFHb2lEQ0FCSUFKQkFCQWlJQU1nQmlnQ1JFRUJSd1IvSUFRZ0NTQUVLQUlBS0FJTUVRRUFCU0FIQ3lBR0tBSkFRUUZIQkg4Z0JTQUpJQVVvQWdBb0Fnd1JBUUFGSUFnTEVPZ1VJQXdRS3dSQUlBWkJFR29nQmtIUUFHb1FHaEFrSUFsQkFXb2hDUXdCQ3dzZ0JrSFFBR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDellDQ0NBR0lBWW9BakFnQmtFUWFrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQkVHb1FJd3NnQmtIZ0FHb2tBQXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFSndOQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RbFFvTFNRQWdBQUovUWVTOElDMEFBQVJBUWVDOElDZ0NBQXdCQzBIY3ZDQVFpd1lRK1FaQjVMd2dRUUU2QUFCQjRMd2dRZHk4SURZQ0FFSGN2Q0FMS0FJQUlnQTJBZ0FnQUJDMEJnc0VBRUYvQ3drQUlBQkNmeENkRFFzSkFDQUFRbjhRblEwTFdBRUVmeU1BUVJCcklnTWtBQ0FEUVFocUlnUWdBU2dDQUNJRklBRkJCR29pQmlBQ0VMWU1Ba0FnQkJBckJFQWdBQ0FGSUFZZ0FTZ0NHQ0FEUVFocUVCb3FBZ0FRY2d3QkN5QUFRUUk2QUFRTElBTkJFR29rQUFzRUFDQUFDd2NBSUFBUS9nUUx5d0VCQkg4Q1FBTkFJQUJGQkVCQkFDRUJRWkNhSUNnQ0FBUkFRWkNhSUNnQ0FCRHlGQ0VCQzBHNG5DQW9BZ0JGRFFJZ0FTQURjaUVEUWJpY0lDZ0NBQ0VBREFFTEN5QUFLQUpNUVFCT0lRSUNRQUpBSUFBb0FoUWdBQ2dDSEVZTkFDQUFRUUJCQUNBQUtBSWtFUVFBR2lBQUtBSVVEUUJCZnlFQklBSU5BUXdDQ3lBQUtBSUVJZ0VnQUNnQ0NDSUVSd1JBSUFBZ0FTQUVhNnhCQVNBQUtBSW9FU3NBR2d0QkFDRUJJQUJCQURZQ0hDQUFRZ0EzQXhBZ0FFSUFOd0lFSUFKRkRRRUxDeUFCSUFOeUMxZ0JCSDhqQUVFUWF5SURKQUFnQTBFSWFpSUVJQUVvQWdBaUJTQUJRUVJxSWdZZ0FoQzNEQUpBSUFRUUt3UkFJQUFnQlNBR0lBRW9BaGdnQTBFSWFoQWFLZ0lBRUdzTUFRc2dBRUVDT2dBRUN5QURRUkJxSkFBTEdRQWdBUkNEQVNFQklBQWdBQ2dDQUNBQlFRSjBhallDQUF0OUFRTi9Jd0JCRUdzaUJDUUFJQUFnQVJDZENDRUJBMEFnQVFSQUl3QkJFR3NpQXlBQk5nSU1JQU1vQWd4QkFYWWhBeUFFSUFBMkFnd2dCRUVNYWlBREVQUVVJQVFvQWd3aUJVRUVhaUFBSUFVb0FnQWdBaWdDQUJERkFTSUZHeUVBSUFFZ0EwRi9jMm9nQXlBRkd5RUJEQUVMQ3lBRVFSQnFKQUFnQUFzSEFDQUFJQUZJQ3h3QkFYOGdBQzBBQUNFQ0lBQWdBUzBBQURvQUFDQUJJQUk2QUFBTHFnSUJCMzlCQVNFRkFrQUNRQUpBQWtBQ1FBSkFJQUVnQUd0QkFuVU9CZ1VGQUFFQ0F3UUxJQUZCQkdzaUFTZ0NBQ0FBS0FJQUVNVUJSUTBFSUFBZ0FSQ3BBVUVCRHdzZ0FDQUFRUVJxSUFGQkJHc1FsQWNhUVFFUEN5QUFJQUJCQkdvZ0FFRUlhaUFCUVFSckVLRU5Ha0VCRHdzZ0FDQUFRUVJxSUFCQkNHb2dBRUVNYWlBQlFRUnJFS0FOR2tFQkR3c2dBQ0FBUVFScUlBQkJDR29pQkJDVUJ4b2dBRUVNYWlFQ0EwQWdBU0FDUmcwQklBSWhBd0pBSUFJb0FnQWlCeUFFS0FJQUlnZ1F4UUVFUUFOQUFrQWdBeUFJTmdJQUlBQWdCQ0lEUmdSQUlBQWhBd3dCQ3lBSElBTkJCR3NpQkNnQ0FDSUlFTVVCRFFFTEN5QURJQWMyQWdBZ0JrRUJhaUlHUVFoR0RRRUxJQUlpQkVFRWFpRUNEQUVMQ3lBQ1FRUnFJQUZHSVFVTElBVUxVUUVEZnlNQVFSQnJJZ01rQUNBRElBRW9BZ0FpQkNBQlFRUnFJZ1VnQWhDNERBSkFJQU1Rc2dFRVFDQUFJQVFnQlNBQktBSVlJQU1RU2lzREFCQnpEQUVMSUFCQkFqb0FCQXNnQTBFUWFpUUFDeElBSUFCRkJFQkJBQThMSUFBZ0FSQ2pEUXZhQWdBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCQ1dzT0VnQUlDUW9JQ1FFQ0F3UUtDUW9LQ0FrRkJnY0xJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBU2dDQURZQ0FBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVElCQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVE1CQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEFBQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEVBQURjREFBOExJQUlnQWlnQ0FFRUhha0Y0Y1NJQlFRaHFOZ0lBSUFBZ0FTc0RBRGtEQUE4TElBSWdBaWdDQUVFSGFrRjRjU0lCUVJCcU5nSUFJQUFnQVNrREFDQUJLUU1JRUxJTk9RTUFDdzhMSUFJZ0FpZ0NBQ0lCUVFScU5nSUFJQUFnQVRRQ0FEY0RBQThMSUFJZ0FpZ0NBQ0lCUVFScU5nSUFJQUFnQVRVQ0FEY0RBQThMSUFJZ0FpZ0NBRUVIYWtGNGNTSUJRUWhxTmdJQUlBQWdBU2tEQURjREFBdGVBUVIvSUFBb0FnQWhBZ05BSUFJc0FBQWlBeEM2QXdSQVFYOGhCQ0FBSUFKQkFXb2lBallDQUNBQlFjeVpzK1lBVFFSL1FYOGdBMEV3YXlJRElBRkJDbXdpQkdvZ0F5QUVRZi8vLy84SGMwb2JCVUYvQ3lFQkRBRUxDeUFCQzVjckF4eC9BbndEZmlNQVFkQUFheUlMSkFBZ0N5QUJOZ0pNSUF0Qk4yb2hIaUFMUVRocUlSa0NRQUpBQWtBQ1FBTkFJQUVoQmlBRklCTkIvLy8vL3dkelNnMEJJQVVnRTJvaEV3SkFBa0FDUUNBR0lnVXRBQUFpREFSQUEwQUNRQUpBSUF4Qi93RnhJZ0ZGQkVBZ0JTRUJEQUVMSUFGQkpVY05BU0FGSVF3RFFDQU1MUUFCUVNWSEJFQWdEQ0VCREFJTElBVkJBV29oQlNBTUxRQUNJUWdnREVFQ2FpSUJJUXdnQ0VFbFJnMEFDd3NnQlNBR2F5SUZJQk5CLy8vLy93ZHpJZzVLRFFjZ0FBUkFJQUFnQmlBRkVMNENDeUFGRFFZZ0N5QUJOZ0pNSUFGQkFXb2hCVUYvSVE4Q1FDQUJMQUFCSWdnUXVnTkZEUUFnQVMwQUFrRWtSdzBBSUFGQkEyb2hCU0FJUVRCcklROUJBU0VhQ3lBTElBVTJBa3hCQUNFSUFrQWdCU3dBQUNJSlFTQnJJZ0ZCSDBzRVFDQUZJUXdNQVFzZ0JTRU1RUUVnQVhRaUFVR0owUVJ4UlEwQUEwQWdDeUFGUVFGcUlndzJBa3dnQVNBSWNpRUlJQVVzQUFFaUNVRWdheUlCUVNCUERRRWdEQ0VGUVFFZ0FYUWlBVUdKMFFSeERRQUxDd0pBSUFsQktrWUVRQUovQWtBZ0RDd0FBU0lCRUxvRFJRMEFJQXd0QUFKQkpFY05BQ0FCUVFKMElBUnFRY0FCYTBFS05nSUFJQXhCQTJvaENVRUJJUm9nREN3QUFVRURkQ0FEYWtHQUEyc29BZ0FNQVFzZ0dnMEdJQXhCQVdvaENTQUFSUVJBSUFzZ0NUWUNURUVBSVJwQkFDRVFEQU1MSUFJZ0FpZ0NBQ0lCUVFScU5nSUFRUUFoR2lBQktBSUFDeUVRSUFzZ0NUWUNUQ0FRUVFCT0RRRkJBQ0FRYXlFUUlBaEJnTUFBY2lFSURBRUxJQXRCekFCcUVQd1VJaEJCQUVnTkNDQUxLQUpNSVFrTFFRQWhCVUYvSVFjQ2Z5QUpMUUFBUVM1SEJFQWdDU0VCUVFBTUFRc2dDUzBBQVVFcVJnUkFBbjhDUUNBSkxBQUNJZ0VRdWdORkRRQWdDUzBBQTBFa1J3MEFJQUZCQW5RZ0JHcEJ3QUZyUVFvMkFnQWdDVUVFYWlFQklBa3NBQUpCQTNRZ0EycEJnQU5yS0FJQURBRUxJQm9OQmlBSlFRSnFJUUZCQUNBQVJRMEFHaUFDSUFJb0FnQWlERUVFYWpZQ0FDQU1LQUlBQ3lFSElBc2dBVFlDVENBSFFYOXpRUjkyREFFTElBc2dDVUVCYWpZQ1RDQUxRY3dBYWhEOEZDRUhJQXNvQWt3aEFVRUJDeUVSQTBBZ0JTRUtRUndoRENBQkloSXNBQUFpQlVIN0FHdEJSa2tOQ1NBU1FRRnFJUUVnQlNBS1FUcHNha0hQK3cxcUxRQUFJZ1ZCQVd0QkNFa05BQXNnQ3lBQk5nSk1Ba0FDUUNBRlFSdEhCRUFnQlVVTkN5QVBRUUJPQkVBZ0JDQVBRUUowYWlBRk5nSUFJQXNnQXlBUFFRTjBhaWtEQURjRFFBd0NDeUFBUlEwSUlBdEJRR3NnQlNBQ0VQc1VEQUlMSUE5QkFFNE5DZ3RCQUNFRklBQkZEUWNMSUFoQi8vOTdjU0lKSUFnZ0NFR0F3QUJ4R3lFSVFRQWhEMEhuSmlFTklCa2hEQUpBQWtBZ0FFRWdJQkFDZndKL0FrQUNRQUpBQWtBQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBSUJJc0FBQWlCVUZmY1NBRklBVkJEM0ZCQTBZYklBVWdDaHNpQlVIWUFHc09JUVFVRkJRVUZCUVVGQTRVRHdZT0RnNFVCaFFVRkJRQ0JRTVVGQWtVQVJRVUJBQUxBa0FnQlVIQkFHc09CdzRVQ3hRT0RnNEFDeUFGUWRNQVJnMEpEQk1MSUFzcEEwQWhJMEhuSmd3RkMwRUFJUVVDUUFKQUFrQUNRQUpBQWtBQ1FDQUtRZjhCY1E0SUFBRUNBd1FhQlFZYUN5QUxLQUpBSUJNMkFnQU1HUXNnQ3lnQ1FDQVROZ0lBREJnTElBc29Ba0FnRTZ3M0F3QU1Gd3NnQ3lnQ1FDQVRPd0VBREJZTElBc29Ba0FnRXpvQUFBd1ZDeUFMS0FKQUlCTTJBZ0FNRkFzZ0N5Z0NRQ0FUckRjREFBd1RDMEVJSUFjZ0IwRUlUUnNoQnlBSVFRaHlJUWhCK0FBaEJRc2dHU0VHSUFWQklIRWhDU0FMS1FOQUlpTWlKRkJGQkVBRFFDQUdRUUZySWdZZ0pLZEJEM0ZCNFA4TmFpMEFBQ0FKY2pvQUFDQWtRZzlXSVFvZ0pFSUVpQ0VrSUFvTkFBc0xJQWhCQ0hGRklDTlFjZzBESUFWQkJIWkI1eVpxSVExQkFpRVBEQU1MSUJraEJTQUxLUU5BSWlNaUpGQkZCRUFEUUNBRlFRRnJJZ1VnSktkQkIzRkJNSEk2QUFBZ0pFSUhWaUVHSUNSQ0E0Z2hKQ0FHRFFBTEN5QUZJUVlnQ0VFSWNVVU5BaUFISUJrZ0Jtc2lCVUVCYWlBRklBZElHeUVIREFJTElBc3BBMEFpSTBJQVV3UkFJQXRDQUNBamZTSWpOd05BUVFFaEQwSG5KZ3dCQ3lBSVFZQVFjUVJBUVFFaEQwSG9KZ3dCQzBIcEprSG5KaUFJUVFGeElnOGJDeUVOSUNNZ0dSQ1ZCeUVHQ3lBUlFRQWdCMEVBU0JzTkRpQUlRZi8vZTNFZ0NDQVJHeUVJSUNOQ0FGSWdCM0pGQkVBZ0dTSUdJUXhCQUNFSERBd0xJQWNnSTFBZ0dTQUdhMm9pQlNBRklBZElHeUVIREFzTElBc29Ba0FpQlVITXRRZ2dCUnNpQmlJRlFRQkIvLy8vL3djZ0J5QUhRZi8vLy84SFR4c2lDQkNyRFNJTUlBVnJJQWdnREJzaUJTQUdhaUVNSUFkQkFFNEVRQ0FKSVFnZ0JTRUhEQXNMSUFraENDQUZJUWNnREMwQUFBME5EQW9MSUFjRVFDQUxLQUpBREFJTElBQkJJQ0FRUVFBZ0NCRExBa0VBREFJTElBdEJBRFlDRENBTElBc3BBMEErQWdnZ0N5QUxRUWhxSWdVMkFrQkJmeUVISUFVTElRWkJBQ0VGSUFZaERBSkFBMEFnRENnQ0FDSUpSUTBCSUF0QkJHb2dDUkQ2RkNJSlFRQklJZ29nQ1NBSElBVnJTM0pGQkVBZ0RFRUVhaUVNSUFjZ0JTQUphaUlGU3cwQkRBSUxDeUFLRFEwTFFUMGhEQ0FGUVFCSURRc2dBRUVnSUJBZ0JTQUlFTXNDUVFBaURDQUZSUTBBR2dOQUFrQWdCaWdDQUNJSFJRMEFJQXRCQkdvZ0J4RDZGQ0lISUF4cUlnd2dCVXNOQUNBQUlBdEJCR29nQnhDK0FpQUdRUVJxSVFZZ0JTQU1TdzBCQ3dzZ0JRc2lCU0FJUVlEQUFITVF5d0lnRUNBRklBVWdFRWdiSVFVTUNBc2dFVUVBSUFkQkFFZ2JEUWhCUFNFTUlBc3JBMEFoSVNBSUlROGdCU0VSUVFBaEZVRUFJUndqQUVHd0JHc2lEaVFBSUE1QkFEWUNMQUpBSUNHOUlpTkNBRk1FUUVFQklSWkJyaWNoR3lBaG1pSWh2U0VqREFFTElBOUJnQkJ4QkVCQkFTRVdRYkVuSVJzTUFRdEJ0Q2RCcnljZ0QwRUJjU0lXR3lFYklCWkZJUndMQWtBZ0kwS0FnSUNBZ0lDQStQOEFnMEtBZ0lDQWdJQ0ErUDhBVVFSQUlBQkJJQ0FRSUJaQkEyb2lCU0FQUWYvL2UzRVF5d0lnQUNBYklCWVF2Z0lnQUVHZjh3SkI4b1FHSUJGQklIRWlCaHRCdThFRFFaUFVCaUFHR3lBaElDRmlHMEVERUw0Q0lBQkJJQ0FRSUFVZ0QwR0F3QUJ6RU1zQ0lBVWdFQ0FGSUJCS0d5RU5EQUVMSUE1QkVHb2hHQUpBQW44Q1FDQWhJQTVCTEdvUXJBMGlJU0Fob0NJaFJBQUFBQUFBQUFBQVlnUkFJQTRnRGlnQ0xDSUZRUUZyTmdJc0lCRkJJSElpRkVIaEFFY05BUXdEQ3lBUlFTQnlJaFJCNFFCR0RRSWdEaWdDTENFS1FRWWdCeUFIUVFCSUd3d0JDeUFPSUFWQkhXc2lDallDTENBaFJBQUFBQUFBQUxCQm9pRWhRUVlnQnlBSFFRQklHd3NoQ1NBT1FUQnFRYUFDUVFBZ0NrRUFUaHRxSWhJaEJnTkFJQVlDZnlBaFJBQUFBQUFBQVBCQll5QWhSQUFBQUFBQUFBQUFabkVFUUNBaHF3d0JDMEVBQ3lJRk5nSUFJQVpCQkdvaEJpQWhJQVc0b1VRQUFBQUFaYzNOUWFJaUlVUUFBQUFBQUFBQUFHSU5BQXNDUUNBS1FRQk1CRUFnQ2lFSElBWWhCU0FTSVFnTUFRc2dFaUVJSUFvaEJ3TkFRUjBnQnlBSFFSMU9HeUVIQWtBZ0JrRUVheUlGSUFoSkRRQWdCNjBoSkVJQUlTTURRQ0FGSUNOQy8vLy8vdytESUFVMUFnQWdKSVo4SWlWQ2dKVHIzQU9BSWlOQ2dPeVVvd3grSUNWOFBnSUFJQVZCQkdzaUJTQUlUdzBBQ3lBanB5SUZSUTBBSUFoQkJHc2lDQ0FGTmdJQUN3TkFJQWdnQmlJRlNRUkFJQVZCQkdzaUJpZ0NBRVVOQVFzTElBNGdEaWdDTENBSGF5SUhOZ0lzSUFVaEJpQUhRUUJLRFFBTEN5QUhRUUJJQkVBZ0NVRVpha0VKYmtFQmFpRVZJQlJCNWdCR0lSY0RRRUVKUVFBZ0Iyc2lCaUFHUVFsT0d5RU5Ba0FnQlNBSVRRUkFJQWdvQWdBaEJnd0JDMEdBbE92Y0F5QU5kaUVkUVg4Z0RYUkJmM01oSDBFQUlRY2dDQ0VHQTBBZ0JpQUhJQVlvQWdBaUlDQU5kbW8yQWdBZ0h5QWdjU0FkYkNFSElBWkJCR29pQmlBRlNRMEFDeUFJS0FJQUlRWWdCMFVOQUNBRklBYzJBZ0FnQlVFRWFpRUZDeUFPSUE0b0Fpd2dEV29pQnpZQ0xDQVNJQWdnQmtWQkFuUnFJZ2dnRnhzaUJpQVZRUUowYWlBRklBVWdCbXRCQW5VZ0ZVb2JJUVVnQjBFQVNBMEFDd3RCQUNFSEFrQWdCU0FJVFEwQUlCSWdDR3RCQW5WQkNXd2hCMEVLSVFZZ0NDZ0NBQ0lOUVFwSkRRQURRQ0FIUVFGcUlRY2dEU0FHUVFwc0lnWlBEUUFMQ3lBSklBZEJBQ0FVUWVZQVJ4dHJJQlJCNXdCR0lBbEJBRWR4YXlJR0lBVWdFbXRCQW5WQkNXeEJDV3RJQkVCQkJFR2tBaUFLUVFCSUd5QU9haUFHUVlESUFHb2lEVUVKYlNJVlFRSjBha0hRSDJzaENrRUtJUVlnRlVGM2JDQU5haUlOUVFkTUJFQURRQ0FHUVFwc0lRWWdEVUVCYWlJTlFRaEhEUUFMQ3dKQUlBb29BZ0FpRnlBWElBWnVJaFVnQm13aURVWWdDa0VFYWlJZElBVkdjUTBBSUJjZ0RXc2hGd0pBSUJWQkFYRkZCRUJFQUFBQUFBQUFRRU1oSVNBR1FZQ1U2OXdEUnlBSUlBcFBjZzBCSUFwQkJHc3RBQUJCQVhGRkRRRUxSQUVBQUFBQUFFQkRJU0VMUkFBQUFBQUFBT0EvUkFBQUFBQUFBUEEvUkFBQUFBQUFBUGcvSUFVZ0hVWWJSQUFBQUFBQUFQZy9JQmNnQmtFQmRpSWRSaHNnRnlBZFNSc2hJZ0pBSUJ3TkFDQWJMUUFBUVMxSERRQWdJcG9oSWlBaG1pRWhDeUFLSUEwMkFnQWdJU0Fpb0NBaFlRMEFJQW9nQmlBTmFpSUdOZ0lBSUFaQmdKVHIzQU5QQkVBRFFDQUtRUUEyQWdBZ0NDQUtRUVJySWdwTEJFQWdDRUVFYXlJSVFRQTJBZ0FMSUFvZ0NpZ0NBRUVCYWlJR05nSUFJQVpCLzVQcjNBTkxEUUFMQ3lBU0lBaHJRUUoxUVFsc0lRZEJDaUVHSUFnb0FnQWlEVUVLU1EwQUEwQWdCMEVCYWlFSElBMGdCa0VLYkNJR1R3MEFDd3NnQ2tFRWFpSUdJQVVnQlNBR1N4c2hCUXNEUUNBRklnWWdDRTBpRFVVRVFDQUdRUVJySWdVb0FnQkZEUUVMQ3dKQUlCUkI1d0JIQkVBZ0QwRUljU0VLREFFTElBZEJmM05CZnlBSlFRRWdDUnNpQlNBSFNpQUhRWHRLY1NJS0d5QUZhaUVKUVg5QmZpQUtHeUFSYWlFUklBOUJDSEVpQ2cwQVFYY2hCUUpBSUEwTkFDQUdRUVJyS0FJQUloUkZEUUJCQ2lFTlFRQWhCU0FVUVFwd0RRQURRQ0FGSWdwQkFXb2hCU0FVSUExQkNtd2lEWEJGRFFBTElBcEJmM01oQlFzZ0JpQVNhMEVDZFVFSmJDRU5JQkZCWDNGQnhnQkdCRUJCQUNFS0lBa2dCU0FOYWtFSmF5SUZRUUFnQlVFQVNoc2lCU0FGSUFsS0d5RUpEQUVMUVFBaENpQUpJQWNnRFdvZ0JXcEJDV3NpQlVFQUlBVkJBRW9iSWdVZ0JTQUpTaHNoQ1F0QmZ5RU5JQWxCL2YvLy93ZEIvdi8vL3djZ0NTQUtjaUljRzBvTkFTQUpJQnhCQUVkcVFRRnFJUlFDUUNBUlFWOXhJaGRCeGdCR0JFQWdCeUFVUWYvLy8vOEhjMG9OQXlBSFFRQWdCMEVBU2hzaEJRd0JDeUFZSUFjZ0IwRWZkU0lGY3lBRmE2MGdHQkNWQnlJRmEwRUJUQVJBQTBBZ0JVRUJheUlGUVRBNkFBQWdHQ0FGYTBFQ1NBMEFDd3NnQlVFQ2F5SVZJQkU2QUFBZ0JVRUJhMEV0UVNzZ0IwRUFTQnM2QUFBZ0dDQVZheUlGSUJSQi8vLy8vd2R6U2cwQ0N5QUZJQlJxSWdVZ0ZrSC8vLy8vQjNOS0RRRWdBRUVnSUJBZ0JTQVdhaUlSSUE4UXl3SWdBQ0FiSUJZUXZnSWdBRUV3SUJBZ0VTQVBRWUNBQkhNUXl3SUNRQUpBQWtBZ0YwSEdBRVlFUUNBT1FSQnFJZ1ZCQ0hJaEJ5QUZRUWx5SVFvZ0VpQUlJQWdnRWtzYklnMGhDQU5BSUFnMUFnQWdDaENWQnlFRkFrQWdDQ0FOUndSQUlBVWdEa0VRYWswTkFRTkFJQVZCQVdzaUJVRXdPZ0FBSUFVZ0RrRVFha3NOQUFzTUFRc2dCU0FLUncwQUlBNUJNRG9BR0NBSElRVUxJQUFnQlNBS0lBVnJFTDRDSUFoQkJHb2lDQ0FTVFEwQUN5QWNCRUFnQUVIOGx3aEJBUkMrQWdzZ0NVRUFUQ0FHSUFoTmNnMEJBMEFnQ0RVQ0FDQUtFSlVISWdVZ0RrRVFha3NFUUFOQUlBVkJBV3NpQlVFd09nQUFJQVVnRGtFUWFrc05BQXNMSUFBZ0JVRUpJQWtnQ1VFSlRoc1F2Z0lnQ1VFSmF5RUZJQWhCQkdvaUNDQUdUdzBESUFsQkNVb2hCeUFGSVFrZ0J3MEFDd3dDQ3dKQUlBbEJBRWdOQUNBR0lBaEJCR29nQmlBSVN4c2hEU0FPUVJCcUlnVkJDSEloQnlBRlFRbHlJUklnQ0NFR0EwQWdFaUFHTlFJQUlCSVFsUWNpQlVZRVFDQU9RVEE2QUJnZ0J5RUZDd0pBSUFZZ0NFY0VRQ0FGSUE1QkVHcE5EUUVEUUNBRlFRRnJJZ1ZCTURvQUFDQUZJQTVCRUdwTERRQUxEQUVMSUFBZ0JVRUJFTDRDSUFWQkFXb2hCU0FKSUFweVJRMEFJQUJCL0pjSVFRRVF2Z0lMSUFBZ0JTQUpJQklnQldzaUJTQUZJQWxLR3hDK0FpQUpJQVZySVFrZ0JrRUVhaUlHSUExUERRRWdDVUVBVGcwQUN3c2dBRUV3SUFsQkVtcEJFa0VBRU1zQ0lBQWdGU0FZSUJWckVMNENEQUlMSUFraEJRc2dBRUV3SUFWQkNXcEJDVUVBRU1zQ0N5QUFRU0FnRUNBUklBOUJnTUFBY3hETEFpQVJJQkFnRUNBUlNCc2hEUXdCQ3lBYklCRkJHblJCSDNWQkNYRnFJUWtDUUNBSFFRdExEUUJCRENBSGF5RUZSQUFBQUFBQUFEQkFJU0lEUUNBaVJBQUFBQUFBQURCQW9pRWlJQVZCQVdzaUJRMEFDeUFKTFFBQVFTMUdCRUFnSWlBaG1pQWlvYUNhSVNFTUFRc2dJU0Fpb0NBaW9TRWhDeUFXUVFKeUlRb2dFVUVnY1NFSUlCZ2dEaWdDTENJR0lBWkJIM1VpQlhNZ0JXdXRJQmdRbFFjaUJVWUVRQ0FPUVRBNkFBOGdEa0VQYWlFRkN5QUZRUUpySWhJZ0VVRVBham9BQUNBRlFRRnJRUzFCS3lBR1FRQklHem9BQUNBUFFRaHhJUkVnRGtFUWFpRUdBMEFnQmlJRkFuOGdJWmxFQUFBQUFBQUE0RUZqQkVBZ0lhb01BUXRCZ0lDQWdIZ0xJZ1pCNFA4TmFpMEFBQ0FJY2pvQUFDQVJJQWRCQUVweVJTQWhJQWEzb1VRQUFBQUFBQUF3UUtJaUlVUUFBQUFBQUFBQUFHRnhJQVZCQVdvaUJpQU9RUkJxYTBFQlIzSkZCRUFnQlVFdU9nQUJJQVZCQW1vaEJnc2dJVVFBQUFBQUFBQUFBR0lOQUF0QmZ5RU5RZjMvLy84SElBb2dHQ0FTYXlJUmFpSUZheUFIU0EwQUlBQkJJQ0FRSUFVQ2Z3SkFJQWRGRFFBZ0JpQU9RUkJxYXlJSVFRSnJJQWRPRFFBZ0IwRUNhZ3dCQ3lBR0lBNUJFR3BySWdnTElnWnFJZ1VnRHhETEFpQUFJQWtnQ2hDK0FpQUFRVEFnRUNBRklBOUJnSUFFY3hETEFpQUFJQTVCRUdvZ0NCQytBaUFBUVRBZ0JpQUlhMEVBUVFBUXl3SWdBQ0FTSUJFUXZnSWdBRUVnSUJBZ0JTQVBRWURBQUhNUXl3SWdCU0FRSUFVZ0VFb2JJUTBMSUE1QnNBUnFKQUFnRFNJRlFRQk9EUWNNQ1FzZ0N5QUxLUU5BUEFBM1FRRWhCeUFlSVFZZ0NTRUlEQVFMSUFVdEFBRWhEQ0FGUVFGcUlRVU1BQXNBQ3lBQURRY2dHa1VOQWtFQklRVURRQ0FFSUFWQkFuUnFLQUlBSWdBRVFDQURJQVZCQTNScUlBQWdBaEQ3RkVFQklSTWdCVUVCYWlJRlFRcEhEUUVNQ1FzTFFRRWhFeUFGUVFwUERRY0RRQ0FFSUFWQkFuUnFLQUlBRFFFZ0JVRUJhaUlGUVFwSERRQUxEQWNMUVJ3aERBd0VDeUFISUF3Z0Jtc2lDU0FISUFsS0d5SUtJQTlCLy8vLy93ZHpTZzBDUVQwaERDQVFJQW9nRDJvaUJ5QUhJQkJJR3lJRklBNUtEUU1nQUVFZ0lBVWdCeUFJRU1zQ0lBQWdEU0FQRUw0Q0lBQkJNQ0FGSUFjZ0NFR0FnQVJ6RU1zQ0lBQkJNQ0FLSUFsQkFCRExBaUFBSUFZZ0NSQytBaUFBUVNBZ0JTQUhJQWhCZ01BQWN4RExBZ3dCQ3d0QkFDRVREQU1MUVQwaERBdEJtS2tnSUF3MkFnQUxRWDhoRXdzZ0MwSFFBR29rQUNBVEM3RUJBUUovSUFDOElnSkIvLy8vL3dkeElnRytJUUFDUUNBQlFkVytzdmdEVHdSQUlBRkJnWUNBaVFSUEJFQkRBQUFBQUNBQWxVTUFBSUEva2lFQURBSUxRd0FBZ0Q5REFBQUFRQ0FBSUFDU0VKNElRd0FBQUVDU2xaTWhBQXdCQ3lBQlFmbUtpL1FEVHdSQUlBQWdBSklRbmdnaUFDQUFRd0FBQUVDU2xTRUFEQUVMSUFGQmdJQ0FCRWtOQUNBQVF3QUFBTUNVRUo0SUlnQ01JQUJEQUFBQVFKS1ZJUUFMSUFDTUlBQWdBa0VBU0JzTHhBSUNBMzhCZkNNQVFSQnJJZ01rQUFKQUlBQzhJZ0pCLy8vLy93ZHhJZ0ZCMnAraytnTk5CRUFnQVVHQWdJRE1BMGtOQVNBQXUwRUFFSllISVFBTUFRc2dBVUhScCsyREJFMEVRQ0FBdXlFRUlBRkI0NWZiZ0FSTkJFQkVHQzFFVlBzaCtUOUVHQzFFVlBzaCtiOGdBa0VBU0JzZ0JLQkJBUkNXQnlFQURBSUxSQmd0UkZUN0lRbEFSQmd0UkZUN0lRbkFJQUpCQUVnYklBU2dRUUFRbGdjaEFBd0JDeUFCUWRYamlJY0VUUVJBSUFDN0lRUWdBVUhmMjcrRkJFMEVRRVRTSVROL2ZOa1NRRVRTSVROL2ZOa1N3Q0FDUVFCSUd5QUVvRUVCRUpZSElRQU1BZ3RFR0MxRVZQc2hHVUJFR0MxRVZQc2hHY0FnQWtFQVNCc2dCS0JCQUJDV0J5RUFEQUVMSUFGQmdJQ0EvQWRQQkVBZ0FDQUFreUVBREFFTElBQWdBMEVJYWhDdERTRUJJQU1yQXdnZ0FVRUJjUkNXQnlFQUN5QURRUkJxSkFBZ0FBdW9Bd01DZkFOL0FYNGdBTDBpQ0VJZ2lLY2lCVUg0Ly8vL0IzRkJxS2lXL3dOSklnWkZCRUJFR0MxRVZQc2g2VDhnQUNBQW1pQUlRZ0JaSWdjYm9VUUhYQlF6SnFhQlBDQUJJQUdhSUFjYm9hQWhBQ0FGUVI5MklRVkVBQUFBQUFBQUFBQWhBUXNnQUNBQUlBQWdBS0lpQktJaUEwUmpWVlZWVlZYVlA2SWdCQ0FESUFRZ0JLSWlBeUFESUFNZ0F5QURSSE5UWU52TGRmTytva1Nta2plZ2lINFVQNkNpUkFGbDh2TFlSRU0vb0tKRUtBTld5U0p0YlQrZ29rUTMxZ2FFOUdTV1A2Q2lSSHIrRUJFUkVjRS9vQ0FFSUFNZ0F5QURJQU1nQTBUVWVyOTBjQ3I3UHFKRTZhZndNZys0RWorZ29rUm9FSTBhOXlZd1A2Q2lSQldENFA3STIxYy9vS0pFazRSdTZlTW1naitnb2tUK1FiTWJ1cUdyUDZDaW9LSWdBYUNpSUFHZ29DSURvQ0VCSUFaRkJFQkJBU0FDUVFGMGE3Y2lCQ0FBSUFNZ0FTQUJvaUFCSUFTZ282R2dJZ0FnQUtDaElnQ2FJQUFnQlJzUEN5QUNCSHhFQUFBQUFBQUE4TDhnQWFNaUJDQUV2VUtBZ0lDQWNJTy9JZ1FnQXlBQnZVS0FnSUNBY0lPL0lnRWdBS0dob2lBRUlBR2lSQUFBQUFBQUFQQS9vS0NpSUFTZ0JTQUJDd3VLQkFJRGZ3RitBa0FDUUFKQUFrQUNmd0pBQWtBQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVLVUJDeUlDUVN0ckRnTUFBUUFCQ3lBQ1FTMUdJQUZGQW44Z0FDZ0NCQ0lESUFBb0FtaEhCRUFnQUNBRFFRRnFOZ0lFSUFNdEFBQU1BUXNnQUJDbEFRc2lBMEU2YXlJQlFYVkxjZzBCR2lBQUtRTndRZ0JaRFFJTUJRc2dBa0U2YXlFQklBSWhBMEVBQ3lFRUlBRkJka2tOQVNBRFFUQnJJZ0ZCQ2trRVFFRUFJUUlEUUNBRElBSkJDbXhxSVFFQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVLVUJDeUVESUFGQk1Hc2hBaUFDUWN5WnMrWUFTQ0FEUVRCcklnRkJDVTF4RFFBTElBS3NJUVVMQWtBZ0FVRUtUdzBBQTBBZ0E2MGdCVUlLZm54Q01IMGhCUUovSUFBb0FnUWlBU0FBS0FKb1J3UkFJQUFnQVVFQmFqWUNCQ0FCTFFBQURBRUxJQUFRcFFFTElnTkJNR3NpQVVFSlN3MEJJQVZDcm8rRjE4ZkM2Nk1CVXcwQUN3c2dBVUVLU1FSQUEwQUNmeUFBS0FJRUlnRWdBQ2dDYUVjRVFDQUFJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QUFFS1VCQzBFd2EwRUtTUTBBQ3dzZ0FDa0RjRUlBV1FSQUlBQWdBQ2dDQkVFQmF6WUNCQXRDQUNBRmZTQUZJQVFiRHdzZ0FDQUFLQUlFUVFGck5nSUVEQUVMSUFBcEEzQkNBRk1OQVFzZ0FDQUFLQUlFUVFGck5nSUVDMEtBZ0lDQWdJQ0FnSUIvQzlRekF4Qi9CMzRCZkNNQVFUQnJJZzRrQUFKQUlBSkJBazBFUUNBQ1FRSjBJZ0pCL1BzTmFpZ0NBQ0VSSUFKQjhQc05haWdDQUNFTkEwQUNmeUFCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUF3QkN5QUJFS1VCQ3lJQ0VNSUZEUUFMUVFFaENRSkFBa0FnQWtFcmF3NERBQUVBQVF0QmYwRUJJQUpCTFVZYklRa2dBU2dDQkNJQ0lBRW9BbWhIQkVBZ0FTQUNRUUZxTmdJRUlBSXRBQUFoQWd3QkN5QUJFS1VCSVFJTEFrQUNRQU5BSUFaQjlRbHFMQUFBSUFKQklISkdCRUFDUUNBR1FRWkxEUUFnQVNnQ0JDSUNJQUVvQW1oSEJFQWdBU0FDUVFGcU5nSUVJQUl0QUFBaEFnd0JDeUFCRUtVQklRSUxJQVpCQVdvaUJrRUlSdzBCREFJTEN5QUdRUU5IQkVBZ0JrRUlSZzBCSUFORklBWkJCRWx5RFFJZ0JrRUlSZzBCQ3lBQktRTndJaFJDQUZrRVFDQUJJQUVvQWdSQkFXczJBZ1FMSUFORklBWkJCRWx5RFFBZ0ZFSUFVeUVDQTBBZ0FrVUVRQ0FCSUFFb0FnUkJBV3MyQWdRTElBWkJBV3NpQmtFRFN3MEFDd3RDQUNFVUl3QkJFR3NpQXlRQUFuNGdDYkpEQUFDQWY1UzhJZ0pCLy8vLy93ZHhJZ0ZCZ0lDQUJHdEIvLy8vOXdkTkJFQWdBYTFDR1laQ2dJQ0FnSUNBZ01BL2ZBd0JDeUFDclVJWmhrS0FnSUNBZ0lEQS8vOEFoQ0FCUVlDQWdQd0hUdzBBR2tJQUlBRkZEUUFhSUFNZ0FhMUNBQ0FCWnlJQlFkRUFhaERNQWlBREtRTUFJUlFnQXlrRENFS0FnSUNBZ0lEQUFJVkJpZjhBSUFGcnJVSXdob1FMSVJVZ0RpQVVOd01BSUE0Z0ZTQUNRWUNBZ0lCNGNhMUNJSWFFTndNSUlBTkJFR29rQUNBT0tRTUlJUlFnRGlrREFDRVZEQUlMQWtBQ1FBSkFJQVlOQUVFQUlRWURRQ0FHUVovekFtb3NBQUFnQWtFZ2NrY05BUUpBSUFaQkFVc05BQ0FCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUNFQ0RBRUxJQUVRcFFFaEFnc2dCa0VCYWlJR1FRTkhEUUFMREFFTEFrQUNRQ0FHRGdRQUFRRUNBUXNDUUNBQ1FUQkhEUUFDZnlBQktBSUVJZ29nQVNnQ2FFY0VRQ0FCSUFwQkFXbzJBZ1FnQ2kwQUFBd0JDeUFCRUtVQkMwRmZjVUhZQUVZRVFDQU5JUW9nQXlFTlFRQWhBaU1BUWJBRGF5SUZKQUFDZndKQUlBRW9BZ1FpQXlBQktBSm9Sd1JBSUFFZ0EwRUJhallDQkNBRExRQUFJUUlNQVF0QkFBd0JDMEVCQ3lFREEwQUNRQUpBQWtBQ1FBSitBa0FDUUFKL0lBTkZCRUFnQVJDbEFRd0JDeUFDUVRCSEJFQkNnSUNBZ0lDQXdQOC9JUlVnQWtFdVJnMERRZ0FNQkFzZ0FTZ0NCQ0lESUFFb0FtaEdEUUZCQVNFSUlBRWdBMEVCYWpZQ0JDQURMUUFBQ3lFQ1FRRWhBd3dIQzBFQklRZ01CQXNDZnlBQktBSUVJZ0lnQVNnQ2FFY0VRQ0FCSUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFCRUtVQkN5SUNRVEJHRFFGQkFTRVFRZ0FMSVJnTUFRc0RRQ0FYUWdGOUlSZEJBU0VRQW44Z0FTZ0NCQ0lDSUFFb0FtaEhCRUFnQVNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQVJDbEFRc2lBa0V3UmcwQUMwRUJJUWdMQTBBZ0FrRWdjaUVIQWtBQ1FDQUNRVEJySWc5QkNra05BQ0FDUVM1R0lBZEI0UUJyUVFaSmNrVUVRQ0FDSVFNTUJRdEJMaUVESUFKQkxrY05BQ0FRRFFSQkFTRVFJQlFoRnd3QkN5QUhRZGNBYXlBUElBSkJPVW9iSVFJQ1FDQVVRZ2RYQkVBZ0FpQUxRUVIwYWlFTERBRUxJQlJDSEZnRVFDQUZRVEJxSUFJUXBnTWdCVUVnYWlBWklCVkNBRUtBZ0lDQWdJREEvVDhReGdFZ0JVRVFhaUFGS1FNd0lBVXBBemdnQlNrRElDSVpJQVVwQXlnaUZSREdBU0FGSUFVcEF4QWdCU2tER0NBV0lCZ1FpZ01nQlNrRENDRVlJQVVwQXdBaEZnd0JDeUFDUlNBTWNnMEFJQVZCMEFCcUlCa2dGVUlBUW9DQWdJQ0FnSUQvUHhER0FTQUZRVUJySUFVcEExQWdCU2tEV0NBV0lCZ1FpZ01nQlNrRFNDRVlRUUVoRENBRktRTkFJUllMSUJSQ0FYd2hGRUVCSVFnTElBRW9BZ1FpQWlBQktBSm9Sd1IvSUFFZ0FrRUJhallDQkNBQ0xRQUFCU0FCRUtVQkN5RUNEQUFMQUF0QkFDRUREQUVMQ3dKK0lBaEZCRUFDUUFKQUlBRXBBM0JDQUZrRVFDQUJJQUVvQWdRaUFrRUJhellDQkNBTlJRMEJJQUVnQWtFQ2F6WUNCQ0FRUlEwQ0lBRWdBa0VEYXpZQ0JBd0NDeUFORFFFTElBRkNBQkNEQkFzZ0JVSGdBR29nQ2JkRUFBQUFBQUFBQUFDaUVNVUVJQVVwQTJBaEZpQUZLUU5vREFFTElCUkNCMWNFUUNBVUlSVURRQ0FMUVFSMElRc2dGVUlCZkNJVlFnaFNEUUFMQ3dKQUFrQUNRQ0FEUVY5eFFkQUFSZ1JBSUFFZ0RSQ0JGU0lWUW9DQWdJQ0FnSUNBZ0g5U0RRTWdEUVJBSUFFcEEzQkNBRmtOQWd3REMwSUFJUllnQVVJQUVJTUVRZ0FNQkF0Q0FDRVZJQUVwQTNCQ0FGTU5BZ3NnQVNBQktBSUVRUUZyTmdJRUMwSUFJUlVMSUF0RkJFQWdCVUh3QUdvZ0NiZEVBQUFBQUFBQUFBQ2lFTVVFSUFVcEEzQWhGaUFGS1FONERBRUxJQmNnRkNBUUcwSUNoaUFWZkVJZ2ZTSVVRUUFnRVd1dFZRUkFRWmlwSUVIRUFEWUNBQ0FGUWFBQmFpQUpFS1lESUFWQmtBRnFJQVVwQTZBQklBVXBBNmdCUW45Qy8vLy8vLy8vdi8vL0FCREdBU0FGUVlBQmFpQUZLUU9RQVNBRktRT1lBVUovUXYvLy8vLy8vNy8vL3dBUXhnRWdCU2tEZ0FFaEZpQUZLUU9JQVF3QkN5QVJRZUlCYTZ3Z0ZGY0VRQ0FMUVFCT0JFQURRQ0FGUWFBRGFpQVdJQmhDQUVLQWdJQ0FnSURBLzc5L0VJb0RJQllnR0VLQWdJQ0FnSUNBL3o4UW9oVWhBaUFGUVpBRGFpQVdJQmdnRmlBRktRT2dBeUFDUVFCSUlnRWJJQmdnQlNrRHFBTWdBUnNRaWdNZ0ZFSUJmU0VVSUFVcEE1Z0RJUmdnQlNrRGtBTWhGaUFMUVFGMElBSkJBRTV5SWd0QkFFNE5BQXNMQW40Z0ZDQVJySDFDSUh3aUZhY2lBVUVBSUFGQkFFb2JJQW9nRlNBS3JWTWJJZ0ZCOFFCT0JFQWdCVUdBQTJvZ0NSQ21BeUFGS1FPSUF5RVhJQVVwQTRBRElSbENBQXdCQ3lBRlFlQUNha1FBQUFBQUFBRHdQMEdRQVNBQmF4RC9CQkRGQkNBRlFkQUNhaUFKRUtZRElBVkI4QUpxSUFVcEErQUNJQVVwQStnQ0lBVXBBOUFDSWhrZ0JTa0QyQUlpRnhDRUZTQUZLUVA0QWlFYUlBVXBBL0FDQ3lFVklBVkJ3QUpxSUFzZ0MwRUJjVVVnRmlBWVFnQkNBQkNkQmtFQVJ5QUJRU0JJY1hFaUFXb1Fsd2NnQlVHd0Ftb2dHU0FYSUFVcEE4QUNJQVVwQThnQ0VNWUJJQVZCa0FKcUlBVXBBN0FDSUFVcEE3Z0NJQlVnR2hDS0F5QUZRYUFDYWlBWklCZENBQ0FXSUFFYlFnQWdHQ0FCR3hER0FTQUZRWUFDYWlBRktRT2dBaUFGS1FPb0FpQUZLUU9RQWlBRktRT1lBaENLQXlBRlFmQUJhaUFGS1FPQUFpQUZLUU9JQWlBVklCb1FzdzBnQlNrRDhBRWlGeUFGS1FQNEFTSVZRZ0JDQUJDZEJrVUVRRUdZcVNCQnhBQTJBZ0FMSUFWQjRBRnFJQmNnRlNBVXB4Q0RGU0FGS1FQZ0FTRVdJQVVwQStnQkRBRUxRWmlwSUVIRUFEWUNBQ0FGUWRBQmFpQUpFS1lESUFWQndBRnFJQVVwQTlBQklBVXBBOWdCUWdCQ2dJQ0FnSUNBd0FBUXhnRWdCVUd3QVdvZ0JTa0R3QUVnQlNrRHlBRkNBRUtBZ0lDQWdJREFBQkRHQVNBRktRT3dBU0VXSUFVcEE3Z0JDeUVVSUE0Z0ZqY0RFQ0FPSUJRM0F4Z2dCVUd3QTJva0FDQU9LUU1ZSVJRZ0Rpa0RFQ0VWREFZTElBRXBBM0JDQUZNTkFDQUJJQUVvQWdSQkFXczJBZ1FMSUFFaEJ5QUpJUThnQXlFS1FRQWhBMEVBSVFrakFFR1F4Z0JySWdRa0FFRUFJQkZySWhBZ0RXc2hFd0pBQW44RFFDQUNRVEJIQkVBQ1FDQUNRUzVIRFFRZ0J5Z0NCQ0lCSUFjb0FtaEdEUUFnQnlBQlFRRnFOZ0lFSUFFdEFBQU1Bd3NGSUFjb0FnUWlBU0FIS0FKb1J3Ui9RUUVoQXlBSElBRkJBV28yQWdRZ0FTMEFBQVZCQVNFRElBY1FwUUVMSVFJTUFRc0xJQWNRcFFFTElRSkJBU0VJSUFKQk1FY05BQU5BSUJSQ0FYMGhGQUovSUFjb0FnUWlBU0FIS0FKb1J3UkFJQWNnQVVFQmFqWUNCQ0FCTFFBQURBRUxJQWNRcFFFTElnSkJNRVlOQUF0QkFTRURDeUFFUVFBMkFwQUdJQTRDZmdKQUFrQUNRQUpBQWtBZ0FrRXVSaUlCSUFKQk1Hc2lCVUVKVFhJRVFBTkFBa0FnQVVFQmNRUkFJQWhGQkVBZ0ZTRVVRUUVoQ0F3Q0N5QURSU0VCREFRTElCVkNBWHdoRlNBSlFmd1BUQVJBSUFzZ0ZhY2dBa0V3UmhzaEN5QUVRWkFHYWlBSlFRSjBhaUlCSUF3RWZ5QUNJQUVvQWdCQkNteHFRVEJyQlNBRkN6WUNBRUVCSVFOQkFDQU1RUUZxSWdFZ0FVRUpSaUlCR3lFTUlBRWdDV29oQ1F3QkN5QUNRVEJHRFFBZ0JDQUVLQUtBUmtFQmNqWUNnRVpCM0k4QklRc0xBbjhnQnlnQ0JDSUJJQWNvQW1oSEJFQWdCeUFCUVFGcU5nSUVJQUV0QUFBTUFRc2dCeENsQVFzaUFrRXVSaUlCSUFKQk1Hc2lCVUVLU1hJTkFBc0xJQlFnRlNBSUd5RVVJQU5GSUFKQlgzRkJ4UUJIY2tVRVFBSkFJQWNnQ2hDQkZTSVdRb0NBZ0lDQWdJQ0FnSDlTRFFBZ0NrVU5CVUlBSVJZZ0J5a0RjRUlBVXcwQUlBY2dCeWdDQkVFQmF6WUNCQXNnQTBVTkF5QVVJQlo4SVJRTUJRc2dBMFVoQVNBQ1FRQklEUUVMSUFjcEEzQkNBRk1OQUNBSElBY29BZ1JCQVdzMkFnUUxJQUZGRFFJTFFaaXBJRUVjTmdJQUMwSUFJUlVnQjBJQUVJTUVRZ0FNQVFzZ0JDZ0NrQVlpQVVVRVFDQUVJQSszUkFBQUFBQUFBQUFBb2hERkJDQUVLUU1BSVJVZ0JDa0RDQXdCQ3lBVUlCVlNJQlZDQ1ZWeUlBMUJIa3hCQUNBQklBMTJHM0pGQkVBZ0JFRXdhaUFQRUtZRElBUkJJR29nQVJDWEJ5QUVRUkJxSUFRcEF6QWdCQ2tET0NBRUtRTWdJQVFwQXlnUXhnRWdCQ2tERUNFVklBUXBBeGdNQVFzZ0VFRUJkcTBnRkZNRVFFR1lxU0JCeEFBMkFnQWdCRUhnQUdvZ0R4Q21BeUFFUWRBQWFpQUVLUU5nSUFRcEEyaENmMEwvLy8vLy8vKy8vLzhBRU1ZQklBUkJRR3NnQkNrRFVDQUVLUU5ZUW45Qy8vLy8vLy8vdi8vL0FCREdBU0FFS1FOQUlSVWdCQ2tEU0F3QkN5QVJRZUlCYTZ3Z0ZGVUVRRUdZcVNCQnhBQTJBZ0FnQkVHUUFXb2dEeENtQXlBRVFZQUJhaUFFS1FPUUFTQUVLUU9ZQVVJQVFvQ0FnSUNBZ01BQUVNWUJJQVJCOEFCcUlBUXBBNEFCSUFRcEE0Z0JRZ0JDZ0lDQWdJQ0F3QUFReGdFZ0JDa0RjQ0VWSUFRcEEzZ01BUXNnREFSQUlBeEJDRXdFUUNBRVFaQUdhaUFKUVFKMGFpSUJLQUlBSVFZRFFDQUdRUXBzSVFZZ0RFRUJhaUlNUVFsSERRQUxJQUVnQmpZQ0FBc2dDVUVCYWlFSkN3SkFJQXNnRktjaUNFb2dDMEVJU25JZ0NFRVJTbklOQUNBSVFRbEdCRUFnQkVIQUFXb2dEeENtQXlBRVFiQUJhaUFFS0FLUUJoQ1hCeUFFUWFBQmFpQUVLUVBBQVNBRUtRUElBU0FFS1FPd0FTQUVLUU80QVJER0FTQUVLUU9nQVNFVklBUXBBNmdCREFJTElBaEJDRXdFUUNBRVFaQUNhaUFQRUtZRElBUkJnQUpxSUFRb0FwQUdFSmNISUFSQjhBRnFJQVFwQTVBQ0lBUXBBNWdDSUFRcEE0QUNJQVFwQTRnQ0VNWUJJQVJCNEFGcVFRQWdDR3RCQW5SQjhQc05haWdDQUJDbUF5QUVRZEFCYWlBRUtRUHdBU0FFS1FQNEFTQUVLUVBnQVNBRUtRUG9BUkNnRlNBRUtRUFFBU0VWSUFRcEE5Z0JEQUlMSUEwZ0NFRjliR3BCRzJvaUFrRWVURUVBSUFRb0FwQUdJZ0VnQW5ZYkRRQWdCRUhnQW1vZ0R4Q21BeUFFUWRBQ2FpQUJFSmNISUFSQndBSnFJQVFwQStBQ0lBUXBBK2dDSUFRcEE5QUNJQVFwQTlnQ0VNWUJJQVJCc0FKcUlBaEJBblJCcVBzTmFpZ0NBQkNtQXlBRVFhQUNhaUFFS1FQQUFpQUVLUVBJQWlBRUtRT3dBaUFFS1FPNEFoREdBU0FFS1FPZ0FpRVZJQVFwQTZnQ0RBRUxBMEFnQkVHUUJtb2dDU0lDUVFGcklnbEJBblJxS0FJQVJRMEFDd0pBSUFoQkNXOGlBVVVFUUVFQUlReEJBQ0VCREFFTFFRQWhEQ0FCUVFscUlBRWdDRUVBU0JzaEN3SkFJQUpGQkVCQkFDRUJRUUFoQWd3QkMwR0FsT3ZjQTBFQUlBdHJRUUowUWZEN0RXb29BZ0FpRUcwaEIwRUFJUVZCQUNFR1FRQWhBUU5BSUFSQmtBWnFJQVpCQW5ScUlnTWdCU0FES0FJQUlnb2dFRzRpQ1dvaUF6WUNBQ0FCUVFGcVFmOFBjU0FCSUFORklBRWdCa1p4SWdNYklRRWdDRUVKYXlBSUlBTWJJUWdnQnlBS0lBa2dFR3hyYkNFRklBWkJBV29pQmlBQ1J3MEFDeUFGUlEwQUlBUkJrQVpxSUFKQkFuUnFJQVUyQWdBZ0FrRUJhaUVDQ3lBSUlBdHJRUWxxSVFnTEEwQWdCRUdRQm1vZ0FVRUNkR29oQ2lBSVFTUklJUWtDUUFOQUFrQWdDUTBBSUFoQkpFY05BaUFLS0FJQVFkRHArUVJORFFCQkpDRUlEQUlMSUFKQi93OXFJUU5CQUNFRkEwQWdCYTBnQkVHUUJtb2dBMEgvRDNFaUIwRUNkR29pQXpVQ0FFSWRobndpRkVLQmxPdmNBMVFFZjBFQUJTQVVRb0NVNjl3RGdDSVZRb0RzbEtOOGZpQVVmQ0VVSUJXbkN5RUZJQU1nRktjaUF6WUNBQ0FDSUFJZ0FpQUhJQU1iSUFFZ0IwWWJJQWNnQWtFQmEwSC9EM0ZIR3lFQ0lBZEJBV3NoQXlBQklBZEhEUUFMSUF4QkhXc2hEQ0FGUlEwQUN5QUNJQUZCQVd0Qi93OXhJZ0ZHQkVBZ0JFR1FCbW9pQ1NBQ1FmNFBha0gvRDNGQkFuUnFJZ01nQXlnQ0FDQUNRUUZyUWY4UGNTSUNRUUowSUFscUtBSUFjallDQUFzZ0NFRUphaUVJSUFSQmtBWnFJQUZCQW5ScUlBVTJBZ0FNQVFzTEFrQURRQ0FDUVFGcVFmOFBjU0VKSUFSQmtBWnFJQUpCQVd0Qi93OXhRUUowYWlFRkEwQkJDVUVCSUFoQkxVb2JJUklDUUFOQUlBRWhBMEVBSVFZQ1FBTkFBa0FnQXlBR2FrSC9EM0VpQVNBQ1JnMEFJQVJCa0FacUlBRkJBblJxS0FJQUlnb2dCa0VDZEVIQSt3MXFLQUlBSWdGSkRRQWdBU0FLU1EwQ0lBWkJBV29pQmtFRVJ3MEJDd3NnQ0VFa1J3MEFRZ0FoRkVFQUlRWkNBQ0VWQTBBZ0FpQURJQVpxUWY4UGNTSUJSZ1JBSUFKQkFXcEIvdzl4SWdKQkFuUWdCR3BCQURZQ2pBWUxJQVJCZ0FacUlBUkJrQVpxSUFGQkFuUnFLQUlBRUpjSElBUkI4QVZxSUJRZ0ZVSUFRb0NBZ0lEbG1yZU93QUFReGdFZ0JFSGdCV29nQkNrRDhBVWdCQ2tEK0FVZ0JDa0RnQVlnQkNrRGlBWVFpZ01nQkNrRDZBVWhGU0FFS1FQZ0JTRVVJQVpCQVdvaUJrRUVSdzBBQ3lBRVFkQUZhaUFQRUtZRElBUkJ3QVZxSUJRZ0ZTQUVLUVBRQlNBRUtRUFlCUkRHQVNBRUtRUElCU0VWUWdBaEZDQUVLUVBBQlNFV0lBeEI4UUJxSWdrZ0VXc2lFVUVBSUJGQkFFb2JJQTBnRFNBUlNpSUtHeUlOUWZBQVRBMENEQVVMSUF3Z0Vtb2hEQ0FESUFJaUFVWU5BQXRCZ0pUcjNBTWdFblloQzBGL0lCSjBRWDl6SVJCQkFDRUdJQU1oQVFOQUlBUkJrQVpxSUFOQkFuUnFJZ29nQmlBS0tBSUFJZ2NnRW5acUlnbzJBZ0FnQVVFQmFrSC9EM0VnQVNBS1JTQUJJQU5HY1NJS0d5RUJJQWhCQ1dzZ0NDQUtHeUVJSUFjZ0VIRWdDMndoQmlBRFFRRnFRZjhQY1NJRElBSkhEUUFMSUFaRkRRRWdBU0FKUndSQUlBUkJrQVpxSUFKQkFuUnFJQVkyQWdBZ0NTRUNEQU1MSUFVZ0JTZ0NBRUVCY2pZQ0FBd0JDd3NMSUFSQmtBVnFSQUFBQUFBQUFQQS9RZUVCSUExckVQOEVFTVVFSUFSQnNBVnFJQVFwQTVBRklBUXBBNWdGSUJZZ0ZSQ0VGU0FFS1FPNEJTRVpJQVFwQTdBRklSZ2dCRUdBQldwRUFBQUFBQUFBOEQ5QjhRQWdEV3NRL3dRUXhRUWdCRUdnQldvZ0ZpQVZJQVFwQTRBRklBUXBBNGdGRUtNVklBUkI4QVJxSUJZZ0ZTQUVLUU9nQlNJVUlBUXBBNmdGSWhjUXN3MGdCRUhnQkdvZ0dDQVpJQVFwQS9BRUlBUXBBL2dFRUlvRElBUXBBK2dFSVJVZ0JDa0Q0QVFoRmdzQ1FDQURRUVJxUWY4UGNTSUJJQUpHRFFBQ1FDQUVRWkFHYWlBQlFRSjBhaWdDQUNJQlFmL0p0ZTRCVFFSQUlBRkZJQU5CQldwQi93OXhJQUpHY1EwQklBUkI4QU5xSUErM1JBQUFBQUFBQU5BL29oREZCQ0FFUWVBRGFpQVVJQmNnQkNrRDhBTWdCQ2tEK0FNUWlnTWdCQ2tENkFNaEZ5QUVLUVBnQXlFVURBRUxJQUZCZ01xMTdnRkhCRUFnQkVIUUJHb2dEN2RFQUFBQUFBQUE2RCtpRU1VRUlBUkJ3QVJxSUJRZ0Z5QUVLUVBRQkNBRUtRUFlCQkNLQXlBRUtRUElCQ0VYSUFRcEE4QUVJUlFNQVFzZ0Q3Y2hHeUFDSUFOQkJXcEIvdzl4UmdSQUlBUkJrQVJxSUJ0RUFBQUFBQUFBNEQraUVNVUVJQVJCZ0FScUlCUWdGeUFFS1FPUUJDQUVLUU9ZQkJDS0F5QUVLUU9JQkNFWElBUXBBNEFFSVJRTUFRc2dCRUd3QkdvZ0cwUUFBQUFBQUFEb1A2SVF4UVFnQkVHZ0JHb2dGQ0FYSUFRcEE3QUVJQVFwQTdnRUVJb0RJQVFwQTZnRUlSY2dCQ2tEb0FRaEZBc2dEVUh2QUVvTkFDQUVRZEFEYWlBVUlCZENBRUtBZ0lDQWdJREEvejhRb3hVZ0JDa0QwQU1nQkNrRDJBTkNBRUlBRUowR0RRQWdCRUhBQTJvZ0ZDQVhRZ0JDZ0lDQWdJQ0F3UDgvRUlvRElBUXBBOGdESVJjZ0JDa0R3QU1oRkFzZ0JFR3dBMm9nRmlBVklCUWdGeENLQXlBRVFhQURhaUFFS1FPd0F5QUVLUU80QXlBWUlCa1FzdzBnQkNrRHFBTWhGU0FFS1FPZ0F5RVdBa0FnRTBFQ2F5QUpRZi8vLy84SGNVNE5BQ0FFSUJWQy8vLy8vLy8vLy8vL0FJTTNBNWdESUFRZ0ZqY0RrQU1nQkVHQUEyb2dGaUFWUWdCQ2dJQ0FnSUNBZ1A4L0VNWUJJQVFwQTVBRElBUXBBNWdEUW9DQWdJQ0FnSUM0d0FBUW9oVWhBaUFWSUFRcEE0Z0RJQUpCQUVnaUFSc2hGU0FXSUFRcEE0QURJQUViSVJZZ0ZDQVhRZ0JDQUJDZEJrRUFSeUFLSUFvZ0RTQVJSM0VnQVJ0eFJTQVRJQXdnQWtFQVRtb2lERUh1QUdwT2NRMEFRWmlwSUVIRUFEWUNBQXNnQkVId0Ftb2dGaUFWSUF3UWd4VWdCQ2tEOEFJaEZTQUVLUVA0QWdzM0F5Z2dEaUFWTndNZ0lBUkJrTVlBYWlRQUlBNHBBeWdoRkNBT0tRTWdJUlVNQkFzZ0FTa0RjRUlBV1FSQUlBRWdBU2dDQkVFQmF6WUNCQXNNQVFzQ1FBSi9JQUVvQWdRaUFpQUJLQUpvUndSQUlBRWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBRVFwUUVMUVNoR0JFQkJBU0VHREFFTFFvQ0FnSUNBZ09ELy93QWhGQ0FCS1FOd1FnQlREUU1nQVNBQktBSUVRUUZyTmdJRURBTUxBMEFDZnlBQktBSUVJZ0lnQVNnQ2FFY0VRQ0FCSUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFCRUtVQkN5SUNRVEJyUVFwSklBSkJ3UUJyUVJwSmNpQUNRZDhBUm5KRklBSkI0UUJyUVJwUGNVVUVRQ0FHUVFGcUlRWU1BUXNMUW9DQWdJQ0FnT0QvL3dBaEZDQUNRU2xHRFFJZ0FTa0RjQ0lYUWdCWkJFQWdBU0FCS0FJRVFRRnJOZ0lFQ3dKQUlBTUVRQ0FHRFFFTUJBc01BUXNEUUNBR1FRRnJJUVlnRjBJQVdRUkFJQUVnQVNnQ0JFRUJhellDQkFzZ0JnMEFDd3dDQzBHWXFTQkJIRFlDQUNBQlFnQVFnd1FMUWdBaEZBc2dBQ0FWTndNQUlBQWdGRGNEQ0NBT1FUQnFKQUFMeEFJQkFYOGpBRUhRQUdzaUJDUUFBa0FnQTBHQWdBRk9CRUFnQkVFZ2FpQUJJQUpDQUVLQWdJQ0FnSUNBLy84QUVNWUJJQVFwQXlnaEFpQUVLUU1nSVFFZ0EwSC8vd0ZKQkVBZ0EwSC8vd0JySVFNTUFnc2dCRUVRYWlBQklBSkNBRUtBZ0lDQWdJQ0EvLzhBRU1ZQlFmMy9BaUFESUFOQi9mOENUaHRCL3Y4QmF5RURJQVFwQXhnaEFpQUVLUU1RSVFFTUFRc2dBMEdCZ0g5S0RRQWdCRUZBYXlBQklBSkNBRUtBZ0lDQWdJQ0FPUkRHQVNBRUtRTklJUUlnQkNrRFFDRUJJQU5COUlCK1N3UkFJQU5CamY4QWFpRUREQUVMSUFSQk1Hb2dBU0FDUWdCQ2dJQ0FnSUNBZ0RrUXhnRkI2SUY5SUFNZ0EwSG9nWDFNRzBHYS9nRnFJUU1nQkNrRE9DRUNJQVFwQXpBaEFRc2dCQ0FCSUFKQ0FDQURRZi8vQUdxdFFqQ0dFTVlCSUFBZ0JDa0RDRGNEQ0NBQUlBUXBBd0EzQXdBZ0JFSFFBR29rQUFzMUFDQUFJQUUzQXdBZ0FDQUNRdi8vLy8vLy96K0RJQVJDTUlpblFZQ0FBbkVnQWtJd2lLZEIvLzhCY1hLdFFqQ0doRGNEQ0F2UkFRRUJmd0pBQWtBZ0FDQUJjMEVEY1FSQUlBRXRBQUFoQWd3QkN5QUJRUU54QkVBRFFDQUFJQUV0QUFBaUFqb0FBQ0FDUlEwRElBQkJBV29oQUNBQlFRRnFJZ0ZCQTNFTkFBc0xJQUVvQWdBaUFrRi9jeUFDUVlHQ2hBaHJjVUdBZ1lLRWVIRU5BQU5BSUFBZ0FqWUNBQ0FCS0FJRUlRSWdBRUVFYWlFQUlBRkJCR29oQVNBQ1FZR0NoQWhySUFKQmYzTnhRWUNCZ29SNGNVVU5BQXNMSUFBZ0Fqb0FBQ0FDUWY4QmNVVU5BQU5BSUFBZ0FTMEFBU0lDT2dBQklBQkJBV29oQUNBQlFRRnFJUUVnQWcwQUN3c0xoQUVDQW4wQmYwTUFBQUEvSUFDWUlRSWdBTHhCLy8vLy93ZHhJZ08rSVFFQ1FDQURRWmJreFpVRVRRUkFJQUVRbmdnaEFTQURRZi8vLy9zRFRRUkFJQU5CZ0lDQXpBTkpEUUlnQWlBQklBR1NJQUVnQVpRZ0FVTUFBSUEva3BXVGxBOExJQUlnQVNBQklBRkRBQUNBUDVLVmtwUVBDeUFCSUFJZ0FwSVFrUlVoQUFzZ0FBdUtBd0lEZndGOEl3QkJFR3NpQVNRQUFrQWdBTHdpQTBILy8vLy9CM0VpQWtIYW42VDZBMDBFUUNBQ1FZQ0FnTXdEU1EwQklBQzdFSVFFSVFBTUFRc2dBa0hScCsyREJFMEVRQ0FBdXlFRUlBSkI0NWZiZ0FSTkJFQWdBMEVBU0FSQUlBUkVHQzFFVlBzaCtUK2dFSVVFakNFQURBTUxJQVJFR0MxRVZQc2grYitnRUlVRUlRQU1BZ3RFR0MxRVZQc2hDY0JFR0MxRVZQc2hDVUFnQTBFQVRoc2dCS0NhRUlRRUlRQU1BUXNnQWtIVjQ0aUhCRTBFUUNBQ1FkL2J2NFVFVFFSQUlBQzdJUVFnQTBFQVNBUkFJQVJFMGlFemYzelpFa0NnRUlVRUlRQU1Bd3NnQkVUU0lUTi9mTmtTd0tBUWhRU01JUUFNQWd0RUdDMUVWUHNoR1VCRUdDMUVWUHNoR2NBZ0EwRUFTQnNnQUx1Z0VJUUVJUUFNQVFzZ0FrR0FnSUQ4QjA4RVFDQUFJQUNUSVFBTUFRc0NRQUpBQWtBQ1FDQUFJQUZCQ0dvUXJRMUJBM0VPQXdBQkFnTUxJQUVyQXdnUWhBUWhBQXdEQ3lBQkt3TUlFSVVFSVFBTUFnc2dBU3NEQ0pvUWhBUWhBQXdCQ3lBQkt3TUlFSVVFakNFQUN5QUJRUkJxSkFBZ0FBdU5BUUlCZlFKL0lBQzhJZ0pCRjNaQi93RnhJZ05CbFFGTkJIMGdBMEg5QUUwRVFDQUFRd0FBQUFDVUR3c0NmU0FBSUFDTUlBSkJBRTRiSWdCREFBQUFTNUpEQUFBQXk1SWdBSk1pQVVNQUFBQS9YZ1JBSUFBZ0FaSkRBQUNBdjVJTUFRc2dBQ0FCa2lJQUlBRkRBQUFBdjE5RkRRQWFJQUJEQUFDQVA1SUxJZ0FnQUl3Z0FrRUFUaHNGSUFBTEMwWUJBWDhDZjBFQUlBQkJGM1pCL3dGeElnRkIvd0JKRFFBYVFRSWdBVUdXQVVzTkFCcEJBRUVCUVpZQklBRnJkQ0lCUVFGcklBQnhEUUFhUVFGQkFpQUFJQUZ4R3dzTEV3QWdBRUVCZEVHQWdJQUlha0dCZ0lBSVNRdndCQVFFZndKOEFYMEJmaUFCdkNJRUVJb1ZJUUlDUUFKQUFrQUNRQ0FBdkNJRFFZQ0FnUHdIYTBHQWdJQ0llRThFUUNBQ0RRRU1Bd3NnQWtVTkFRdERBQUNBUHlFSUlBTkJnSUNBL0FOR0RRSWdCRUVCZENJQ1JRMENJQUpCZ1lDQWVFa2dBMEVCZENJQ1FZQ0FnSGhOY1VVRVFDQUFJQUdTRHdzZ0FrR0FnSUQ0QjBZTkFrTUFBQUFBSUFFZ0FaUWdBa0gvLy8vM0Iwc2dCRUVBVG5NYkR3c2dBeENLRlFSQUlBQWdBSlFoQ0NBRFFRQklCRUFnQ0l3Z0NDQUVFSWtWUVFGR0d5RUlDeUFFUVFCT0RRSkRBQUNBUHlBSWxSQzJEUThMSUFOQkFFZ0VRQ0FFRUlrVklnSkZCRUFnQUJDMURROExJQU5CLy8vLy93ZHhJUU1nQWtFQlJrRVFkQ0VGQ3lBRFFmLy8vd05MRFFBZ0FFTUFBQUJMbEx4Qi8vLy8vd2R4UVlDQWdOd0FheUVEQ3dKQUlBTWdBMEdBZ016NUEyc2lCRUdBZ0lCOGNXdSt1eUFFUVE5MlFmQUJjU0lDUVpENURXb3JBd0NpUkFBQUFBQUFBUEMvb0NJR1JBdHVTY2tXZHRJL29rUjZ4bldnYVJuWHY2QWdCaUFHb2lJSElBZWlvaUFHUk4yNnAyd0t4OTQvb2tUSTlyNUlSeFhudjZBZ0I2SWdCa1FydUNwbFJ4WDNQNklnQWtHWStRMXFLd01BSUFSQkYzVzNvS0Nnb0NBQnU2SWlCNzFDZ0lDQWdJQ0E0UC8vQUlOQ2dZQ0FnSUNBd0svQUFGUU5BQ0FIUkhIVjBmLy8vMTlBWkFSQUlBVVF1UTBQQ3lBSFJBQUFBQUFBd0dMQVpVVU5BQ0FGRUxnTkR3dEJ1TXNOS3dNQUlBZEJzTXNOS3dNQUlnWWdCNkFpQnlBR29hRWlCcUpCd01zTkt3TUFvQ0FHSUFhaW9rSEl5dzByQXdBZ0JxSkVBQUFBQUFBQThEK2dvQ0FIdlNJSklBV3RmRUl2aGlBSnAwRWZjVUVEZEVHd3lRMXFLUU1BZkwraXRpRUlDeUFJQzZBQkFRTi9JQUM4SWdKQkYzWkIvd0Z4SWdSQi93QnJJUU1DUUNBRVFaWUJUd1JBSUFFZ0FEZ0NBQ0FDUWYvLy93TnhRUUFnQTBHQUFVWWJEUUVnQWtHQWdJQ0FlSEcrRHdzZ0JFSCtBRTBFUUNBQklBSkJnSUNBZ0hoeE5nSUFJQUFQQ3lBQ0lBTjBRZi8vL3dOeFJRUkFJQUVnQURnQ0FDQUNRWUNBZ0lCNGNiNFBDeUFCUVlDQWdId2dBM1VnQW5FaUFUWUNBQ0FBSUFHK2t5RUFDeUFBQ3hjQUlBQVF1Z05CQUVjZ0FFRWdja0hoQUd0QkJrbHlDNW9EQVFaL0l3QkJFR3NpRHlRQUlBOUJDR29oRENBQktBSUFJUTBqQUVFd2F5SUtKQUFnQ2tFb2FpSUxJQTBnQVVFRWFpSU9JQUlnQmhEWkFRSkFJQXNRTUFSQUlBeEJBam9BQkF3QkN5QUtRU0JxSWdzZ0RTQU9JQU1nQnhEWkFTQUxFREFFUUNBTVFRSTZBQVFNQVFzZ0NrRVlhaUlMSUEwZ0RpQUVJQWdRMlFFZ0N4QXdCRUFnREVFQ09nQUVEQUVMSUFwQkVHb2lDeUFOSUE0Z0JTQUpFTmtCSUFzUU1BUkFJQXhCQWpvQUJBd0JDeUFLUVFocUlnc2dEU0FPSUFwQktHb1FHaW9DQUNBS1FTQnFFQm9xQWdBUTFnTWdDeEF3QkVBZ0RFRUNPZ0FFREFFTElBb2dEU0FPSUFwQkNHb2lDeEFhS2dJQUlBcEJHR29RR2lvQ0FCRFdBeUFLSUFvcEF3QTNBd2dnQ3hBd0JFQWdERUVDT2dBRURBRUxJQW9nRFNBT0lBcEJDR29pQ3hBYUtnSUFJQXBCRUdvUUdpb0NBQkRXQXlBS0lBb3BBd0EzQXdnZ0N4QXdCRUFnREVFQ09nQUVEQUVMSUF3Z0Npa0RDRGNDQUFzZ0NrRXdhaVFBQWtBZ0RCQXJCRUFnQUNBTklBNGdBU2dDR0NBUFFRaHFFQm9xQWdBUWNnd0JDeUFBUVFJNkFBUUxJQTlCRUdva0FBc1FBQ0FCakNBQklBQWJFTFlOSUFHVUMzOEJBWDhnQUx4Qi8vLy8vd2R4SWdHK0lRQUNmU0FCUVpia3hma0RUUVJBUXdBQWdEOGdBVUdBZ0lETUEwa05BUm9nQUJDZUNDSUFJQUNVSUFCREFBQ0FQNUlpQUNBQWtwVkRBQUNBUDVJUEN5QUJRWmJreFpVRVRRUkFJQUFRbmdvaUFFTUFBSUEvSUFDVmtrTUFBQUEvbEE4TElBQkRBQUNBUHhDUkZRc0xIQUFnQVVNQUFBQjZsQ0FBUTd6aklzT1NFSjRLbEVNQUFBQjZsQXNvQUNBQlJBQUFBQUFBQU1CL29pQUFSSXZkR2hWbUlKYkFvQkM2RGFKRUFBQUFBQUFBd0graUMvUUNBZ04vQVh3akFFRVFheUlCSkFBQ2ZTQUF2Q0lEUWYvLy8vOEhjU0lDUWRxZnBQb0RUUVJBUXdBQWdEOGdBa0dBZ0lETUEwa05BUm9nQUxzUWhRUU1BUXNnQWtIUnArMkRCRTBFUUNBQ1FlU1gyNEFFVHdSQVJCZ3RSRlQ3SVFsQVJCZ3RSRlQ3SVFuQUlBTkJBRWdiSUFDN29CQ0ZCSXdNQWdzZ0FMc2hCQ0FEUVFCSUJFQWdCRVFZTFVSVSt5SDVQNkFRaEFRTUFndEVHQzFFVlBzaCtUOGdCS0VRaEFRTUFRc2dBa0hWNDRpSEJFMEVRQ0FDUWVEYnY0VUVUd1JBUkJndFJGVDdJUmxBUkJndFJGVDdJUm5BSUFOQkFFZ2JJQUM3b0JDRkJBd0NDeUFEUVFCSUJFQkUwaUV6ZjN6WkVzQWdBTHVoRUlRRURBSUxJQUM3Uk5JaE0zOTgyUkxBb0JDRUJBd0JDeUFBSUFDVElBSkJnSUNBL0FkUERRQWFBa0FDUUFKQUFrQWdBQ0FCUVFocUVLME5RUU54RGdNQUFRSURDeUFCS3dNSUVJVUVEQU1MSUFFckF3aWFFSVFFREFJTElBRXJBd2dRaFFTTURBRUxJQUVyQXdnUWhBUUxJUUFnQVVFUWFpUUFJQUFMMVFJQkFYOGpBRUV3YXlJSkpBQWdDVUVCT2dBc0lBa2dBU0FGYkRZQ0tBSkFJQWxCS0dvUU1BUkFJQUJCQWpvQUJBd0JDeUFKUVFFNkFDUWdDU0FDSUFac05nSWdJQWxCSUdvUU1BUkFJQUJCQWpvQUJBd0JDeUFKUVFFNkFCd2dDU0FESUFkc05nSVlJQWxCR0dvUU1BUkFJQUJCQWpvQUJBd0JDeUFKUVFFNkFCUWdDU0FFSUFoc05nSVFJQWxCRUdvUU1BUkFJQUJCQWpvQUJBd0JDeUFKUVNocUVCb29BZ0FoQVNBSlFTQnFFQm9vQWdBaEFpQUpRUUU2QUF3Z0NTQUJJQUpxTmdJSUlBbEJDR29RTUFSQUlBQkJBam9BQkF3QkN5QUpJQWxCQ0dvaUFSQWFLQUlBSUFsQkdHb1FHaWdDQUdxdFFvQ0FnSUFRaERjRENDQUJFREFFUUNBQVFRSTZBQVFNQVFzZ0NTQUpRUWhxSWdFUUdpZ0NBQ0FKUVJCcUVCb29BZ0JxclVLQWdJQ0FFSVEzQXdnZ0FSQXdCRUFnQUVFQ09nQUVEQUVMSUFBZ0NTa0RDRGNDQUFzZ0NVRXdhaVFBQzdjUkFnTjhFWDhqQUVHd0JHc2lDU1FBSUFJZ0FrRURhMEVZYlNJSVFRQWdDRUVBU2hzaUVrRm9iR29oRENBRVFRSjBRZkRpRFdvb0FnQWlEeUFEUVFGcklndHFRUUJPQkVBZ0F5QVBhaUVJSUJJZ0Myc2hBZ05BSUFsQndBSnFJQXBCQTNScUlBSkJBRWdFZkVRQUFBQUFBQUFBQUFVZ0FrRUNkRUdBNHcxcUtBSUF0d3M1QXdBZ0FrRUJhaUVDSUFwQkFXb2lDaUFJUncwQUN3c2dERUVZYXlFUVFRQWhDQ0FQUVFBZ0QwRUFTaHNoRVNBRFFRQk1JUW9EUUFKQUlBb0VRRVFBQUFBQUFBQUFBQ0VGREFFTElBZ2dDMm9oRGtFQUlRSkVBQUFBQUFBQUFBQWhCUU5BSUFBZ0FrRURkR29yQXdBZ0NVSEFBbW9nRGlBQ2EwRURkR29yQXdDaUlBV2dJUVVnQWtFQmFpSUNJQU5IRFFBTEN5QUpJQWhCQTNScUlBVTVBd0FnQ0NBUlJpRUNJQWhCQVdvaENDQUNSUTBBQzBFdklBeHJJUlZCTUNBTWF5RVRJQXhCR1dzaEZpQVBJUWdDUUFOQUlBa2dDRUVEZEdvckF3QWhCVUVBSVFJZ0NDRUtJQWhCQUV3aURVVUVRQU5BSUFsQjRBTnFJQUpCQW5ScUFuOENmeUFGUkFBQUFBQUFBSEErb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUF1M0lnWkVBQUFBQUFBQWNNR2lJQVdnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3pZQ0FDQUpJQXBCQVdzaUNrRURkR29yQXdBZ0JxQWhCU0FDUVFGcUlnSWdDRWNOQUFzTEFuOGdCU0FRRVA4RUlnVWdCVVFBQUFBQUFBREFQNktjUkFBQUFBQUFBQ0RBb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElRNGdCU0FPdDZFaEJRSkFBa0FDUUFKL0lCQkJBRXdpRjBVRVFDQUlRUUowSUFscUlnSWdBaWdDM0FNaUFpQUNJQk4xSWdJZ0UzUnJJZ28yQXR3RElBSWdEbW9oRGlBS0lCVjFEQUVMSUJBTkFTQUlRUUowSUFscUtBTGNBMEVYZFFzaUMwRUFUQTBDREFFTFFRSWhDeUFGUkFBQUFBQUFBT0EvWmcwQVFRQWhDd3dCQzBFQUlRSkJBQ0VLSUExRkJFQURRQ0FKUWVBRGFpQUNRUUowYWlJWUtBSUFJUlJCLy8vL0J5RU5BbjhDUUNBS0RRQkJnSUNBQ0NFTklCUU5BRUVBREFFTElCZ2dEU0FVYXpZQ0FFRUJDeUVLSUFKQkFXb2lBaUFJUncwQUN3c0NRQ0FYRFFCQi8vLy9BeUVDQWtBQ1FDQVdEZ0lCQUFJTFFmLy8vd0VoQWdzZ0NFRUNkQ0FKYWlJTklBMG9BdHdESUFKeE5nTGNBd3NnRGtFQmFpRU9JQXRCQWtjTkFFUUFBQUFBQUFEd1B5QUZvU0VGUVFJaEN5QUtSUTBBSUFWRUFBQUFBQUFBOEQ4Z0VCRC9CS0VoQlFzZ0JVUUFBQUFBQUFBQUFHRUVRRUVCSVFKQkFDRU5JQWdoQ2dKQUlBZ2dEMHdOQUFOQUlBbEI0QU5xSUFwQkFXc2lDa0VDZEdvb0FnQWdEWEloRFNBS0lBOUtEUUFMSUExRkRRQWdFQ0VNQTBBZ0RFRVlheUVNSUFsQjRBTnFJQWhCQVdzaUNFRUNkR29vQWdCRkRRQUxEQU1MQTBBZ0FpSUtRUUZxSVFJZ0NVSGdBMm9nRHlBS2EwRUNkR29vQWdCRkRRQUxJQWdnQ21vaENnTkFJQWxCd0FKcUlBTWdDR29pQzBFRGRHb2dDRUVCYWlJSUlCSnFRUUowUVlEakRXb29BZ0MzT1FNQVFRQWhBa1FBQUFBQUFBQUFBQ0VGSUFOQkFFb0VRQU5BSUFBZ0FrRURkR29yQXdBZ0NVSEFBbW9nQ3lBQ2EwRURkR29yQXdDaUlBV2dJUVVnQWtFQmFpSUNJQU5IRFFBTEN5QUpJQWhCQTNScUlBVTVBd0FnQ0NBS1NBMEFDeUFLSVFnTUFRc0xBa0FnQlVFWUlBeHJFUDhFSWdWRUFBQUFBQUFBY0VGbUJFQWdDVUhnQTJvZ0NFRUNkR29DZndKL0lBVkVBQUFBQUFBQWNENmlJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUlDdDBRQUFBQUFBQUJ3d2FJZ0JhQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xOZ0lBSUFoQkFXb2hDQXdCQ3dKL0lBV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RUNJQkFoREFzZ0NVSGdBMm9nQ0VFQ2RHb2dBallDQUF0RUFBQUFBQUFBOEQ4Z0RCRC9CQ0VGSUFoQkFFNEVRQ0FJSVFNRFFDQUpJQU1pQUVFRGRHb2dCU0FKUWVBRGFpQUFRUUowYWlnQ0FMZWlPUU1BSUFCQkFXc2hBeUFGUkFBQUFBQUFBSEErb2lFRklBQU5BQXRCQUNFQUlBZ2hDZ05BSUJFZ0FDQUFJQkZMR3lFRFFRQWhBa1FBQUFBQUFBQUFBQ0VGQTBBZ0FrRURkRUhRK0ExcUt3TUFJQWtnQWlBS2FrRURkR29yQXdDaUlBV2dJUVVnQWlBRFJ5RU1JQUpCQVdvaEFpQU1EUUFMSUFsQm9BRnFJQWdnQ210QkEzUnFJQVU1QXdBZ0NrRUJheUVLSUFBZ0NFY2hBaUFBUVFGcUlRQWdBZzBBQ3dzQ1FBSkFBa0FDUUFKQUlBUU9CQUVDQWdBRUMwUUFBQUFBQUFBQUFDRUdBa0FnQ0VFQVRBMEFJQWxCb0FGcUlBaEJBM1JxSWdNckF3QWhCU0FJSVFJRFFDQUpRYUFCYWlJRUlBSkJBM1JxSUFVZ0JDQUNRUUZySWdCQkEzUnFJZ1FyQXdBaUJ5QUhJQVdnSWdXaG9Ea0RBQ0FFSUFVNUF3QWdBa0VCU3lFRUlBQWhBaUFFRFFBTElBaEJBa2dOQUNBREt3TUFJUVVnQ0NFQ0EwQWdDVUdnQVdvaUF5QUNRUU4wYWlBRklBTWdBa0VCYXlJQVFRTjBhaUlES3dNQUlnWWdCaUFGb0NJRm9hQTVBd0FnQXlBRk9RTUFJQUpCQWtzaEF5QUFJUUlnQXcwQUMwUUFBQUFBQUFBQUFDRUdBMEFnQmlBSlFhQUJhaUFJUVFOMGFpc0RBS0FoQmlBSVFRSktJUUFnQ0VFQmF5RUlJQUFOQUFzTElBa3JBNkFCSVFVZ0N3MENJQUVnQlRrREFDQUpLd09vQVNFRklBRWdCamtERUNBQklBVTVBd2dNQXd0RUFBQUFBQUFBQUFBaEJTQUlRUUJPQkVBRFFDQUlJZ0JCQVdzaENDQUZJQWxCb0FGcUlBQkJBM1JxS3dNQW9DRUZJQUFOQUFzTElBRWdCWm9nQlNBTEd6a0RBQXdDQzBRQUFBQUFBQUFBQUNFRklBaEJBRTRFUUNBSUlRTURRQ0FESWdCQkFXc2hBeUFGSUFsQm9BRnFJQUJCQTNScUt3TUFvQ0VGSUFBTkFBc0xJQUVnQlpvZ0JTQUxHemtEQUNBSkt3T2dBU0FGb1NFRlFRRWhBaUFJUVFCS0JFQURRQ0FGSUFsQm9BRnFJQUpCQTNScUt3TUFvQ0VGSUFJZ0NFY2hBQ0FDUVFGcUlRSWdBQTBBQ3dzZ0FTQUZtaUFGSUFzYk9RTUlEQUVMSUFFZ0JabzVBd0FnQ1NzRHFBRWhCU0FCSUFhYU9RTVFJQUVnQlpvNUF3Z0xJQWxCc0FScUpBQWdEa0VIY1F0eUFnSi9BWDBnQUx3aUFrSC8vLy8vQjNFaUFiNGhBQUpBQW4wZ0FVSC8vLy8zQTAwRVFDQUJRWUNBZ1B3Q1NRMENJQUFnQUpJaUF5QURJQUNVUXdBQWdEOGdBSk9Wa2d3QkN5QUFRd0FBZ0Q4Z0FKT1ZJZ0FnQUpJTEVMQU5Rd0FBQUQrVUlRQUxJQUNNSUFBZ0FrRUFTQnNMMXdJQkJIOGdBTHhCLy8vLy93ZHhRWUdBZ1B3SFNTQUJ2RUgvLy8vL0IzRkJnSUNBL0FkTmNVVUVRQ0FBSUFHU0R3c2dBYndpQWtHQWdJRDhBMFlFUUNBQUVKOEtEd3NnQWtFZWRrRUNjU0lGSUFDOElnTkJIM1p5SVFRQ1FBSkFJQU5CLy8vLy93ZHhJZ05GQkVBQ1FBSkFJQVJCQW1zT0FnQUJBd3REMnc5SlFBOExROXNQU2NBUEN5QUNRZi8vLy84SGNTSUNRWUNBZ1B3SFJ3UkFJQUpGQkVCRDJ3L0pQeUFBbUE4TElBTkJnSUNBL0FkSElBSkJnSUNBNkFCcUlBTlBjVVVFUUVQYkQ4ay9JQUNZRHdzQ2ZTQUZCRUJEQUFBQUFDQURRWUNBZ09nQWFpQUNTUTBCR2dzZ0FDQUJsWXNRbndvTElRQUNRQUpBQWtBZ0JBNERCQUFCQWdzZ0FJd1BDMFBiRDBsQUlBQkRMcjI3TTVLVER3c2dBRU11dmJzemtrUGJEMG5Ba2c4TElBTkJnSUNBL0FkR0RRRWdCRUVDZEVIQTRnMXFLZ0lBSVFBTElBQVBDeUFFUVFKMFFiRGlEV29xQWdBTG1nTUJCbjhqQUVFUWF5SVBKQUFnRDBFSWFpRU1JQUVvQWdBaERTTUFRVEJySWdva0FDQUtRU2hxSWdzZ0RTQUJRUVJxSWc0Z0FpQUdFTm9CQWtBZ0N4QXdCRUFnREVFQ09nQUVEQUVMSUFwQklHb2lDeUFOSUE0Z0F5QUhFTm9CSUFzUU1BUkFJQXhCQWpvQUJBd0JDeUFLUVJocUlnc2dEU0FPSUFRZ0NCRGFBU0FMRURBRVFDQU1RUUk2QUFRTUFRc2dDa0VRYWlJTElBMGdEaUFGSUFrUTJnRWdDeEF3QkVBZ0RFRUNPZ0FFREFFTElBcEJDR29pQ3lBTklBNGdDa0VvYWhBYUtnSUFJQXBCSUdvUUdpb0NBQkRYQXlBTEVEQUVRQ0FNUVFJNkFBUU1BUXNnQ2lBTklBNGdDa0VJYWlJTEVCb3FBZ0FnQ2tFWWFoQWFLZ0lBRU5jRElBb2dDaWtEQURjRENDQUxFREFFUUNBTVFRSTZBQVFNQVFzZ0NpQU5JQTRnQ2tFSWFpSUxFQm9xQWdBZ0NrRVFhaEFhS2dJQUVOY0RJQW9nQ2lrREFEY0RDQ0FMRURBRVFDQU1RUUk2QUFRTUFRc2dEQ0FLS1FNSU53SUFDeUFLUVRCcUpBQUNRQ0FNRUNzRVFDQUFJQTBnRGlBQktBSVlJQTlCQ0dvUUdpb0NBQkJyREFFTElBQkJBam9BQkFzZ0QwRVFhaVFBQzVnQkFnSi9BWDBnQUx3aUFrSC8vLy8vQjNFaUFiNGhBQUpBSUFGQmdJQ0FyQVJQQkVBZ0FCQ1lCME1ZY2pFL2tpRUFEQUVMSUFGQmdJQ0FnQVJQQkVBZ0FDQUFra01BQUlBL0lBQWdBSlJEQUFDQVA1S1JJQUNTbFpJUW1BY2hBQXdCQ3lBQlFZQ0FnTXdEU1EwQUlBQWdBSlFpQXlBRFF3QUFnRCtTa1VNQUFJQS9rcFVnQUpJUXNBMGhBQXNnQUl3Z0FDQUNRUUJJR3d1OEFRSUNmd0Y4SUFDOElnSkIvLy8vL3dkeElnRkJnSUNBL0FOUEJFQWdBVUdBZ0lEOEEwWUVRQ0FBdTBRWUxVUlUreUg1UDZKRUFBQUFBQUFBY0RpZ3RnOExRd0FBQUFBZ0FDQUFrNVVQQ3dKQUlBRkIvLy8vOXdOTkJFQWdBVUdBZ0lBRWEwR0FnSURJQTBrTkFTQUFJQUFnQUpRUW9naVVJQUNTRHd0RUdDMUVWUHNoK1Q5REFBQ0FQeUFBaTVOREFBQUFQNVFpQUx1ZklnTWdBeUFBRUtJSXU2S2dJZ01nQTZDaHRpSUFqQ0FBSUFKQkFFZ2JJUUFMSUFBTGF3RUJmeUFBdkVILy8vLy9CM0VpQVVILy8vLy9BMDBFUUNBQVF3QUFnTCtTSWdBZ0FDQUFsQ0FBSUFDU2twR1NFTEFORHdzZ0FVSC8vLytyQkUwRVFDQUFJQUNTUXdBQWdMOGdBQ0FBbEVNQUFJQy9rcEVnQUpLVmtoQ1lCdzhMSUFBUW1BZERHSEl4UDVJTDhBRUNBWDBDZnlBQXZDSURRZi8vLy84SGNTSUNRWUNBZ1B3RFR3UkFJQUpCZ0lDQS9BTkdCRUJEQUFBQUFFUGFEMGxBSUFOQkFFNGJEd3REQUFBQUFDQUFJQUNUbFE4TEFuMGdBa0gvLy8vM0EwMEVRRVBhRDhrL0lBSkJnWUNBbEFOSkRRRWFRMmdob2pNZ0FDQUFJQUNVRUtJSWxKTWdBSk5EMmcvSlA1SVBDeUFEUVFCSUJFQkQyZy9KUHlBQVF3QUFnRCtTUXdBQUFEK1VJZ0NSSWdFZ0FTQUFFS0lJbEVOb0lhS3prcEtUSWdBZ0FKSVBDME1BQUlBL0lBQ1RRd0FBQUQrVUlnQ1JJZ0VnQUJDaUNKUWdBQ0FCdkVHQVlIRytJZ0FnQUpTVElBRWdBSktWa2lBQWtpSUFJQUNTQ3d1ekF3RUZmeU1BUVJCcklnd2tBQ0FCS0FJQUlRMGpBRUhnQUdzaUNpUUFJQXBCMEFCcUlnc2dEU0FCUVFScUlnNGdBaUFHRU5zQkFrQWdDeEJpQkVBZ0RFRUNPZ0FJREFFTElBcEJRR3NpQ3lBTklBNGdBeUFIRU5zQklBc1FZZ1JBSUF4QkFqb0FDQXdCQ3lBS1FUQnFJZ3NnRFNBT0lBUWdDQkRiQVNBTEVHSUVRQ0FNUVFJNkFBZ01BUXNnQ2tFZ2FpSUxJQTBnRGlBRklBa1Eyd0VnQ3hCaUJFQWdERUVDT2dBSURBRUxJQXBCRUdvaUN5QU5JQTRnQ2tIUUFHb1FTaXNEQUNBS1FVQnJFRW9yQXdBUTJBTWdDeEJpQkVBZ0RFRUNPZ0FJREFFTElBb2dEU0FPSUFwQkVHb2lDeEJLS3dNQUlBcEJNR29RU2lzREFCRFlBeUFLSUFvcEF3ZzNBeGdnQ2lBS0tRTUFOd01RSUFzUVlnUkFJQXhCQWpvQUNBd0JDeUFLSUEwZ0RpQUtRUkJxSWdzUVNpc0RBQ0FLUVNCcUVFb3JBd0FRMkFNZ0NpQUtLUU1JTndNWUlBb2dDaWtEQURjREVDQUxFR0lFUUNBTVFRSTZBQWdNQVFzZ0RDQUtLUU1RTndNQUlBd2dDaWtER0RjRENBc2dDa0hnQUdva0FBSkFJQXdRc2dFRVFDQUFJQTBnRGlBQktBSVlJQXdRU2lzREFCQnpEQUVMSUFCQkFqb0FCQXNnREVFUWFpUUFDN1lEQWdOL0FYNGpBRUVnYXlJREpBQUNRQ0FCUXYvLy8vLy8vLy8vL3dDRElnVkNnSUNBZ0lDQXdNQS9mU0FGUW9DQWdJQ0FnTUMvd0FCOVZBUkFJQUZDR1lpbklRUWdBRkFnQVVMLy8vOFBneUlGUW9DQWdBaFVJQVZDZ0lDQUNGRWJSUVJBSUFSQmdZQ0FnQVJxSVFJTUFnc2dCRUdBZ0lDQUJHb2hBaUFBSUFWQ2dJQ0FDSVdFUWdCU0RRRWdBaUFFUVFGeGFpRUNEQUVMSUFCUUlBVkNnSUNBZ0lDQXdQLy9BRlFnQlVLQWdJQ0FnSURBLy84QVVSdEZCRUFnQVVJWmlLZEIvLy8vQVhGQmdJQ0EvZ2R5SVFJTUFRdEJnSUNBL0FjaEFpQUZRdi8vLy8vLy83Ky93QUJXRFFCQkFDRUNJQVZDTUlpbklnUkJrZjRBU1EwQUlBTkJFR29nQUNBQlF2Ly8vLy8vL3orRFFvQ0FnSUNBZ01BQWhDSUZJQVJCZ2Y0QWF4RE1BaUFESUFBZ0JVR0Ivd0FnQkdzUW5BWWdBeWtEQ0NJQVFobUlweUVDSUFNcEF3QWdBeWtERUNBREtRTVloRUlBVXEyRUlnVlFJQUJDLy8vL0Q0TWlBRUtBZ0lBSVZDQUFRb0NBZ0FoUkcwVUVRQ0FDUVFGcUlRSU1BUXNnQlNBQVFvQ0FnQWlGaEVJQVVnMEFJQUpCQVhFZ0Ftb2hBZ3NnQTBFZ2FpUUFJQUlnQVVJZ2lLZEJnSUNBZ0hoeGNyNEx3Z0lCQm44akFFRVFheUlOSkFBZ0RVRUlhaUVLSUFFb0FnQWhDeU1BUVRCcklnZ2tBQ0FJUVNocUlna2dDeUFCUVFScUlnd2dBaUFGRU5rQkFrQWdDUkF3QkVBZ0NrRUNPZ0FFREFFTElBaEJJR29pQ1NBTElBd2dBeUFHRU5rQklBa1FNQVJBSUFwQkFqb0FCQXdCQ3lBSVFSaHFJZ2tnQ3lBTUlBUWdCeERaQVNBSkVEQUVRQ0FLUVFJNkFBUU1BUXNnQ0VFUWFpSUpJQXNnRENBSVFTaHFFQm9xQWdBZ0NFRWdhaEFhS2dJQUVOWURJQWtRTUFSQUlBcEJBam9BQkF3QkN5QUlRUWhxSUFzZ0RDQUlRUkJxSWdrUUdpb0NBQ0FJUVJocUVCb3FBZ0FRMWdNZ0NDQUlLUU1JTndNUUlBa1FNQVJBSUFwQkFqb0FCQXdCQ3lBS0lBZ3BBeEEzQWdBTElBaEJNR29rQUFKQUlBb1FLd1JBSUFBZ0N5QU1JQUVvQWhnZ0RVRUlhaEFhS2dJQUVISU1BUXNnQUVFQ09nQUVDeUFOUVJCcUpBQUx2ZzhDQlg4UGZpTUFRZEFDYXlJRkpBQWdCRUwvLy8vLy8vOC9neUVMSUFKQy8vLy8vLy8vUDRNaENpQUNJQVNGUW9DQWdJQ0FnSUNBZ0grRElRMGdCRUl3aUtkQi8vOEJjU0VJQWtBQ1FDQUNRakNJcDBILy93RnhJZ2xCLy84QmEwR0NnSDVQQkVBZ0NFSC8vd0ZyUVlHQWZrc05BUXNnQVZBZ0FrTC8vLy8vLy8vLy8vOEFneUlNUW9DQWdJQ0FnTUQvL3dCVUlBeENnSUNBZ0lDQXdQLy9BRkViUlFSQUlBSkNnSUNBZ0lDQUlJUWhEUXdDQ3lBRFVDQUVRdi8vLy8vLy8vLy8vd0NESWdKQ2dJQ0FnSUNBd1AvL0FGUWdBa0tBZ0lDQWdJREEvLzhBVVJ0RkJFQWdCRUtBZ0lDQWdJQWdoQ0VOSUFNaEFRd0NDeUFCSUF4Q2dJQ0FnSUNBd1AvL0FJV0VVQVJBSUFNZ0FrS0FnSUNBZ0lEQS8vOEFoWVJRQkVCQ0FDRUJRb0NBZ0lDQWdPRC8vd0FoRFF3REN5QU5Rb0NBZ0lDQWdNRC8vd0NFSVExQ0FDRUJEQUlMSUFNZ0FrS0FnSUNBZ0lEQS8vOEFoWVJRQkVCQ0FDRUJEQUlMSUFFZ0RJUlFCRUJDZ0lDQWdJQ0E0UC8vQUNBTklBSWdBNFJRR3lFTlFnQWhBUXdDQ3lBQ0lBT0VVQVJBSUExQ2dJQ0FnSUNBd1AvL0FJUWhEVUlBSVFFTUFnc2dERUwvLy8vLy8vOC9XQVJBSUFWQndBSnFJQUVnQ2lBQklBb2dDbEFpQmh0NUlBWkJCblN0ZktjaUJrRVBheERNQWtFUUlBWnJJUVlnQlNrRHlBSWhDaUFGS1FQQUFpRUJDeUFDUXYvLy8vLy8vejlXRFFBZ0JVR3dBbW9nQXlBTElBTWdDeUFMVUNJSEcza2dCMEVHZEsxOHB5SUhRUTlyRU13Q0lBWWdCMnBCRUdzaEJpQUZLUU80QWlFTElBVXBBN0FDSVFNTElBVkJvQUpxSUF0Q2dJQ0FnSUNBd0FDRUloSkNENFlnQTBJeGlJUWlBa0lBUW9DQWdJQ3c1cnlDOVFBZ0FuMGlCRUlBRUxBQ0lBVkJrQUpxUWdBZ0JTa0RxQUo5UWdBZ0JFSUFFTEFDSUFWQmdBSnFJQVVwQTVnQ1FnR0dJQVVwQTVBQ1FqK0loQ0lFUWdBZ0FrSUFFTEFDSUFWQjhBRnFJQVJDQUVJQUlBVXBBNGdDZlVJQUVMQUNJQVZCNEFGcUlBVXBBL2dCUWdHR0lBVXBBL0FCUWorSWhDSUVRZ0FnQWtJQUVMQUNJQVZCMEFGcUlBUkNBRUlBSUFVcEErZ0JmVUlBRUxBQ0lBVkJ3QUZxSUFVcEE5Z0JRZ0dHSUFVcEE5QUJRaitJaENJRVFnQWdBa0lBRUxBQ0lBVkJzQUZxSUFSQ0FFSUFJQVVwQThnQmZVSUFFTEFDSUFWQm9BRnFJQUpDQUNBRktRTzRBVUlCaGlBRktRT3dBVUkvaUlSQ0FYMGlBa0lBRUxBQ0lBVkJrQUZxSUFOQ0Q0WkNBQ0FDUWdBUXNBSWdCVUh3QUdvZ0FrSUFRZ0FnQlNrRHFBRWdCU2tEb0FFaURDQUZLUU9ZQVh3aUJDQU1WSzE4SUFSQ0FWYXRmSDFDQUJDd0FpQUZRWUFCYWtJQklBUjlRZ0FnQWtJQUVMQUNJQVlnQ1NBSWEyb2hCZ0ovSUFVcEEzQWlFMElCaGlJT0lBVXBBNGdCSWc5Q0FZWWdCU2tEZ0FGQ1A0aUVmQ0lRUXVmc0FIMGlGRUlnaUNJQ0lBcENnSUNBZ0lDQXdBQ0VJaFZDQVlZaUZrSWdpQ0lFZmlJUklBRkNBWVlpREVJZ2lDSUxJQkFnRkZhdElBNGdFRmF0SUFVcEEzaENBWVlnRTBJL2lJUWdEMEkvaUh4OGZFSUJmU0lUUWlDSUloQitmQ0lPSUJGVXJTQU9JQTRnRTBMLy8vLy9ENE1pRXlBQlFqK0lJaGNnQ2tJQmhvUkMvLy8vL3crRElncCtmQ0lPVnExOElBUWdFSDU4SUFRZ0UzNGlFU0FLSUJCK2ZDSVBJQkZVclVJZ2hpQVBRaUNJaEh3Z0RpQU9JQTlDSUlaOElnNVdyWHdnRGlBT0lCUkMvLy8vL3crREloUWdDbjRpRVNBQ0lBdCtmQ0lQSUJGVXJTQVBJQThnRXlBTVF2Ny8vLzhQZ3lJUmZud2lEMWF0Zkh3aURsYXRmQ0FPSUFRZ0ZINGlHQ0FRSUJGK2ZDSUVJQUlnQ241OElnb2dDeUFUZm53aUVFSWdpQ0FLSUJCV3JTQUVJQmhVclNBRUlBcFdyWHg4UWlDR2hId2lCQ0FPVksxOElBUWdEeUFDSUJGK0lnSWdDeUFVZm53aUMwSWdpQ0FDSUF0V3JVSWdob1I4SWdJZ0QxU3RJQUlnRUVJZ2hud2dBbFN0Zkh3aUFpQUVWSzE4SWdSQy8vLy8vLy8vL3dCWUJFQWdGaUFYaENFVklBVkIwQUJxSUFJZ0JDQURJQklRc0FJZ0FVSXhoaUFGS1FOWWZTQUZLUU5RSWdGQ0FGS3RmU0VLUWdBZ0FYMGhDeUFHUWY3L0FHb01BUXNnQlVIZ0FHb2dCRUkvaGlBQ1FnR0loQ0lDSUFSQ0FZZ2lCQ0FESUJJUXNBSWdBVUl3aGlBRktRTm9mU0FGS1FOZ0lneENBRkt0ZlNFS1FnQWdESDBoQ3lBQklRd2dCa0gvL3dCcUN5SUdRZi8vQVU0RVFDQU5Rb0NBZ0lDQWdNRC8vd0NFSVExQ0FDRUJEQUVMQW40Z0JrRUFTZ1JBSUFwQ0FZWWdDMEkvaUlRaENpQUVRdi8vLy8vLy96K0RJQWF0UWpDR2hDRU1JQXRDQVlZTUFRc2dCa0dQZjB3RVFFSUFJUUVNQWdzZ0JVRkFheUFDSUFSQkFTQUdheENjQmlBRlFUQnFJQXdnRlNBR1FmQUFhaERNQWlBRlFTQnFJQU1nRWlBRktRTkFJZ0lnQlNrRFNDSU1FTEFDSUFVcEF6Z2dCU2tES0VJQmhpQUZLUU1nSWdGQ1A0aUVmU0FGS1FNd0lnUWdBVUlCaGlJQlZLMTlJUW9nQkNBQmZRc2hCQ0FGUVJCcUlBTWdFa0lEUWdBUXNBSWdCU0FESUJKQ0JVSUFFTEFDSUF3Z0FpQUNJQU1nQWtJQmd5SUJJQVI4SWdOVUlBb2dBU0FEVnExOElnRWdFbFlnQVNBU1VSdXRmQ0lDVnExOElnUWdBaUFDSUFSQ2dJQ0FnSUNBd1AvL0FGUWdBeUFGS1FNUVZpQUJJQVVwQXhnaUJGWWdBU0FFVVJ0eHJYd2lBbGF0ZkNJRUlBSWdCRUtBZ0lDQWdJREEvLzhBVkNBRElBVXBBd0JXSUFFZ0JTa0RDQ0lEVmlBQklBTlJHM0d0ZkNJQklBSlVyWHdnRFlRaERRc2dBQ0FCTndNQUlBQWdEVGNEQ0NBRlFkQUNhaVFBQy9VQkFRRi9Jd0JCSUdzaUJ5UUFJQWRCQVRvQUhDQUhJQUVnQkd3MkFoZ0NRQ0FIUVJocUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFQk9nQVVJQWNnQWlBRmJEWUNFQ0FIUVJCcUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFQk9nQU1JQWNnQXlBR2JEWUNDQ0FIUVFocUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFWWFoQWFLQUlBSVFFZ0IwRVFhaEFhS0FJQUlRSWdCMEVCT2dBRUlBY2dBU0FDYWpZQ0FDQUhFREFFUUNBQVFRSTZBQVFNQVFzZ0J5QUhFQm9vQWdBZ0IwRUlhaEFhS0FJQWFxMUNnSUNBZ0JDRU53TUFJQWNRTUFSQUlBQkJBam9BQkF3QkN5QUFJQWNwQXdBM0FnQUxJQWRCSUdva0FBdkFBUUlCZndKK1FYOGhBd0pBSUFCQ0FGSWdBVUwvLy8vLy8vLy8vLzhBZ3lJRVFvQ0FnSUNBZ01ELy93QldJQVJDZ0lDQWdJQ0F3UC8vQUZFYkRRQWdBa0wvLy8vLy8vLy8vLzhBZ3lJRlFvQ0FnSUNBZ01ELy93QldJQVZDZ0lDQWdJQ0F3UC8vQUZKeERRQWdBQ0FFSUFXRWhGQUVRRUVBRHdzZ0FTQUNnMElBV1FSQUlBRWdBbElnQVNBQ1UzRU5BU0FBSUFFZ0FvV0VRZ0JTRHdzZ0FFSUFVaUFCSUFKVklBRWdBbEViRFFBZ0FDQUJJQUtGaEVJQVVpRURDeUFEQzljR0FnUi9BMzRqQUVHQUFXc2lCU1FBQWtBQ1FBSkFJQU1nQkVJQVFnQVFuUVpGRFFBQ2Z5QUVRdi8vLy8vLy96K0RJUWtDZnlBRVFqQ0lwMEgvL3dGeElnWkIvLzhCUndSQVFRUWdCZzBCR2tFQ1FRTWdBeUFKaEZBYkRBSUxJQU1nQ1lSUUN3c2hCeUFDUWpDSXB5SUlRZi8vQVhFaUJrSC8vd0ZHRFFBZ0J3MEJDeUFGUVJCcUlBRWdBaUFESUFRUXhnRWdCU0FGS1FNUUlnRWdCU2tER0NJQ0lBRWdBaENnRlNBRktRTUlJUUlnQlNrREFDRUVEQUVMSUFFZ0FrTC8vLy8vLy84L2d5QUdyVUl3aG9RaUNpQURJQVJDLy8vLy8vLy9QNE1nQkVJd2lLZEIvLzhCY1NJSHJVSXdob1FpQ1JDZEJrRUFUQVJBSUFFZ0NpQURJQWtRblFZRVFDQUJJUVFNQWdzZ0JVSHdBR29nQVNBQ1FnQkNBQkRHQVNBRktRTjRJUUlnQlNrRGNDRUVEQUVMSUFZRWZpQUJCU0FGUWVBQWFpQUJJQXBDQUVLQWdJQ0FnSURBdThBQUVNWUJJQVVwQTJnaUNrSXdpS2RCK0FCcklRWWdCU2tEWUFzaEJDQUhSUVJBSUFWQjBBQnFJQU1nQ1VJQVFvQ0FnSUNBZ01DN3dBQVF4Z0VnQlNrRFdDSUpRakNJcDBINEFHc2hCeUFGS1FOUUlRTUxJQWxDLy8vLy8vLy9QNE5DZ0lDQWdJQ0F3QUNFSVFrZ0NrTC8vLy8vLy84L2cwS0FnSUNBZ0lEQUFJUWhDaUFHSUFkS0JFQURRQUorSUFvZ0NYMGdBeUFFVnExOUlndENBRmtFUUNBTElBUWdBMzBpQklSUUJFQWdCVUVnYWlBQklBSkNBRUlBRU1ZQklBVXBBeWdoQWlBRktRTWdJUVFNQlFzZ0MwSUJoaUFFUWorSWhBd0JDeUFLUWdHR0lBUkNQNGlFQ3lFS0lBUkNBWVloQkNBR1FRRnJJZ1lnQjBvTkFBc2dCeUVHQ3dKQUlBb2dDWDBnQXlBRVZxMTlJZ2xDQUZNRVFDQUtJUWtNQVFzZ0NTQUVJQU45SWdTRVFnQlNEUUFnQlVFd2FpQUJJQUpDQUVJQUVNWUJJQVVwQXpnaEFpQUZLUU13SVFRTUFRc2dDVUwvLy8vLy8vOC9XQVJBQTBBZ0JFSS9pQ0VCSUFaQkFXc2hCaUFFUWdHR0lRUWdBU0FKUWdHR2hDSUpRb0NBZ0lDQWdNQUFWQTBBQ3dzZ0NFR0FnQUp4SVFjZ0JrRUFUQVJBSUFWQlFHc2dCQ0FKUXYvLy8vLy8veitESUFaQitBQnFJQWR5clVJd2hvUkNBRUtBZ0lDQWdJREF3ejhReGdFZ0JTa0RTQ0VDSUFVcEEwQWhCQXdCQ3lBSlF2Ly8vLy8vL3orRElBWWdCM0t0UWpDR2hDRUNDeUFBSUFRM0F3QWdBQ0FDTndNSUlBVkJnQUZxSkFBTFdRRUJmeUFBSUFBb0FrZ2lBVUVCYXlBQmNqWUNTQ0FBS0FJQUlnRkJDSEVFUUNBQUlBRkJJSEkyQWdCQmZ3OExJQUJDQURjQ0JDQUFJQUFvQWl3aUFUWUNIQ0FBSUFFMkFoUWdBQ0FCSUFBb0FqQnFOZ0lRUVFBTHdnSUJCbjhqQUVFUWF5SU5KQUFnRFVFSWFpRUtJQUVvQWdBaEN5TUFRVEJySWdna0FDQUlRU2hxSWdrZ0N5QUJRUVJxSWd3Z0FpQUZFTm9CQWtBZ0NSQXdCRUFnQ2tFQ09nQUVEQUVMSUFoQklHb2lDU0FMSUF3Z0F5QUdFTm9CSUFrUU1BUkFJQXBCQWpvQUJBd0JDeUFJUVJocUlna2dDeUFNSUFRZ0J4RGFBU0FKRURBRVFDQUtRUUk2QUFRTUFRc2dDRUVRYWlJSklBc2dEQ0FJUVNocUVCb3FBZ0FnQ0VFZ2FoQWFLZ0lBRU5jRElBa1FNQVJBSUFwQkFqb0FCQXdCQ3lBSVFRaHFJQXNnRENBSVFSQnFJZ2tRR2lvQ0FDQUlRUmhxRUJvcUFnQVExd01nQ0NBSUtRTUlOd01RSUFrUU1BUkFJQXBCQWpvQUJBd0JDeUFLSUFncEF4QTNBZ0FMSUFoQk1Hb2tBQUpBSUFvUUt3UkFJQUFnQ3lBTUlBRW9BaGdnRFVFSWFoQWFLZ0lBRUdzTUFRc2dBRUVDT2dBRUN5QU5RUkJxSkFBTDhBRUNBbjhDZkNBQXZDSUJRWUNBZ1B3RFJnUkFRd0FBQUFBUEN3SkFJQUZCZ0lDQS9BZHJRZi8vLzRkNFRRUkFJQUZCQVhRaUFrVUVRQkNuRlE4TElBRkJnSUNBL0FkR0RRRWdBa0dBZ0lCNFNTQUJRUUJPY1VVRVFDQUFFTFVORHdzZ0FFTUFBQUJMbEx4QmdJQ0EzQUJySVFFTFFlamVEU3NEQUNBQklBRkJnSURNK1FOcklnRkJnSUNBZkhGcnZyc2dBVUVQZGtId0FYRWlBa0hvM0ExcUt3TUFva1FBQUFBQUFBRHd2NkFpQXlBRG9pSUVva0h3M2cwckF3QWdBNkpCK040Tkt3TUFvS0FnQktKQmdOOE5Ld01BSUFPaUlBSkI4TndOYWlzREFDQUJRUmQxdDZDZ29MWWhBQXNnQUFzUUFFTUFBSUMvRUxZTlF3QUFBQUNWQzVvQkFBSkFJQUZCZ0FGT0JFQWdBRU1BQUFCL2xDRUFJQUZCL3dGSkJFQWdBVUgvQUdzaEFRd0NDeUFBUXdBQUFIK1VJUUJCL1FJZ0FTQUJRZjBDVGh0Qi9nRnJJUUVNQVFzZ0FVR0JmMG9OQUNBQVF3QUFnQXlVSVFBZ0FVR2Jma3NFUUNBQlFlWUFhaUVCREFFTElBQkRBQUNBREpRaEFFRzJmU0FCSUFGQnRuMU1HMEhNQVdvaEFRc2dBQ0FCUVJkMFFZQ0FnUHdEYXI2VUM4d0JBd0o4QVg4QmZnSjlBa0FnQUJDWkIwSC9EM0VpQTBNQUFBQkRFSmtIU1EwQVF3QUFBQUFnQUx4QmdJQ0FmRVlOQVJwREFBQ0FmeENaQnlBRFRRUkFJQUFnQUpJUEN5QUFRd0FBQUFCZUJFQkJBQkM1RFE4TElBQkRBQUFXdzE5RkRRQkJBQkM0RFE4TFFiakxEU3NEQUNBQXV5SUJJQUZCc01zTkt3TUFJZ0dnSWdJZ0FhR2hJZ0dpUWNETERTc0RBS0FnQVNBQm9xSkJ5TXNOS3dNQUlBR2lSQUFBQUFBQUFQQS9vS0FnQXIwaUJFSXZoaUFFcDBFZmNVRURkRUd3eVExcUtRTUFmTCtpdGdzTHpBSUJCWDhqQUVFUWF5SUpKQUFnQVNnQ0FDRUxJd0JCMEFCcklnZ2tBQ0FJUVVCcklnb2dDeUFCUVFScUlnd2dBaUFGRU5zQkFrQWdDaEJpQkVBZ0NVRUNPZ0FJREFFTElBaEJNR29pQ2lBTElBd2dBeUFHRU5zQklBb1FZZ1JBSUFsQkFqb0FDQXdCQ3lBSVFTQnFJZ29nQ3lBTUlBUWdCeERiQVNBS0VHSUVRQ0FKUVFJNkFBZ01BUXNnQ0VFUWFpSUtJQXNnRENBSVFVQnJFRW9yQXdBZ0NFRXdhaEJLS3dNQUVOZ0RJQW9RWWdSQUlBbEJBam9BQ0F3QkN5QUlJQXNnRENBSVFSQnFJZ29RU2lzREFDQUlRU0JxRUVvckF3QVEyQU1nQ0NBSUtRTUlOd01ZSUFnZ0NDa0RBRGNERUNBS0VHSUVRQ0FKUVFJNkFBZ01BUXNnQ1NBSUtRTVFOd01BSUFrZ0NDa0RHRGNEQ0FzZ0NFSFFBR29rQUFKQUlBa1FzZ0VFUUNBQUlBc2dEQ0FCS0FJWUlBa1FTaXNEQUJCekRBRUxJQUJCQWpvQUJBc2dDVUVRYWlRQUN3d0FJd0JCRUdzZ0FEa0RDQXNjQVFGL0l3QkJFR3NpQUVLQWdJQ0FnSUNBQ0RjRENDQUFLd01JQytRQkFRWi9Jd0JCRUdzaUNpUUFJQXBCQ0dvaEJ5QUJLQUlBSVFrakFFRWdheUlHSkFBZ0JrRVlhaUlJSUFrZ0FVRUVhaUlMSUFJZ0JCRFpBUUpBSUFnUU1BUkFJQWRCQWpvQUJBd0JDeUFHUVJCcUlnZ2dDU0FMSUFNZ0JSRFpBU0FJRURBRVFDQUhRUUk2QUFRTUFRc2dCa0VJYWlJSUlBa2dDeUFHUVJocUVCb3FBZ0FnQmtFUWFoQWFLZ0lBRU5ZRElBZ1FNQVJBSUFkQkFqb0FCQXdCQ3lBSElBWXBBd2czQWdBTElBWkJJR29rQUFKQUlBY1FLd1JBSUFBZ0NTQUxJQUVvQWhnZ0NrRUlhaEFhS2dJQUVISU1BUXNnQUVFQ09nQUVDeUFLUVJCcUpBQUxGUUFnQUVITWx5QTJBZ0FnQUVFRWFoQVBHaUFBQ3hVQUlBQkJxSmNnTmdJQUlBQkJCR29RRHhvZ0FBc1ZBQ0FBUVlTWElEWUNBQ0FBUVFScUVBOGFJQUFMRlFBZ0FFSGdsaUEyQWdBZ0FFRUVhaEFQR2lBQUN4VUFJQUJCdkpZZ05nSUFJQUJCQkdvUUR4b2dBQXNWQUNBQVFaaVdJRFlDQUNBQVFRUnFFQThhSUFBTEZRQWdBRUgwbFNBMkFnQWdBRUVFYWhBUEdpQUFDeFVBSUFCQjBKVWdOZ0lBSUFCQkJHb1FEeG9nQUF2TEF3QWdBaWdDQUNFQUlBTW9BZ0FoQWlBRUtBSUFJUU1nQlNnQ0FDRUVJQUZDQURjQ0dDQUJRUUE2QUJRZ0FVRUFOZ0lRSUFFZ0F6WUNEQ0FCSUFJMkFnZ2dBU0FFTmdJRUlBRWdBRFlDQUNBQlFnQTNBaXdnQVVJQU53SWdJQUZCZ0lDQS9BTTJBaWdnQVVJQU53STBJQUZDQURjQ1BDQUJRUUEyQWtRZ0FVS0FnSUQ4QXpjQ1NDQUJRZEFBYWtFQUVLc0tHaUFCUWFBQmFrR0FnSUFDRUtzS0dpQUJRZ0EzQXZnQklBRkNBRGNDOEFFZ0FVSUFOd0tFQWlBQlFZQ0FnUHdETmdLQUFpQUJRZ0EzQW93Q0lBRkNBRGNDbUFJZ0FVR0FnSUQ4QXpZQ2xBSWdBVUlBTndLZ0FpQUJJQUZCckFKcUlnQTJBckFDSUFFZ0FEWUNyQUlnQVVHQWdJRDhBellDcUFJZ0FVRzBBbXBCQUVFc0VIa2FJQUZDQURjQzVBSWdBVUdBZ0lEOEF6WUM0QUlnQVVJQU53THNBaUFCUWdBM0F2Z0NJQUZCZ0lDQS9BTTJBdlFDSUFGQ0FEY0NnQU1nQVVJQU53S01BeUFCUVlDQWdQd0ROZ0tJQXlBQlFnQTNBcFFESUFGQnZBTnFJZ0JDQURjQ0FDQUJRUUEyQXJRRElBRWdBVUdzQTJvaUFqWUNzQU1nQVNBQ05nS3NBeUFCUVFBMkFxZ0RJQUVnQVVHZ0Eyb2lBallDcEFNZ0FTQUNOZ0tnQXlBQlFZQ0FnUHdETmdLY0F5QUJJQUEyQXJnREMxSUFBa0FnQUNnQ0FDZ0NBQkJIUlNBQlFReE5RUUJCQVNBQmRFSGZOWEViY2cwQUlBRkJpU3BHSUFGQm1pcEdjaUFCUWRBcGF5SUFRUlZOUVFCQkFTQUFkRUdEbUlNQmNSdHlEUUJCQUE4TFFRRUxwUUVCQVg4akFFRWdheUlGSkFBZ0JVRUJPZ0FjSUFVZ0FTQURiRFlDR0FKQUlBVkJHR29RTUFSQUlBQkJBam9BQkF3QkN5QUZRUUU2QUJRZ0JTQUNJQVJzTmdJUUlBVkJFR29RTUFSQUlBQkJBam9BQkF3QkN5QUZRUmhxRUJvb0FnQWhBU0FGUVJCcUVCb29BZ0FoQWlBRlFRRTZBQXdnQlNBQklBSnFOZ0lJSUFWQkNHb1FNQVJBSUFCQkFqb0FCQXdCQ3lBQUlBVXBBd2czQWdBTElBVkJJR29rQUFzM0FDQUFJQUFvQWhSQkFXczJBaFFnQUJESUYwRUtka0VCU3dSQUlBQW9BZ2hCQkdzb0FnQVFIeUFBSUFBb0FnaEJCR3NRMnc4TEMwY0JBWDhDUUNBQUlBRVE3d0VFUUVFQklRSWdBQ0FCRUQ1QndBQkdEUUVMUVFBaEFpQUFJQUVRbkFkRkRRQWdBQ0FCRUVWQkFrY05BQ0FBSUFFUVBrRWdSaUVDQ3lBQ0N6OEJBbjhDUUNBQUlBRVF1Z0VpQTBVTkFFRUJJUUlDUUFKQUlBTXZBUjVCRkdzT0JBSUJBUUFCQ3lBQUlBQWdBUkRCQVJDL0FnOExRUUFoQWdzZ0FndmtBUUVHZnlNQVFSQnJJZ29rQUNBS1FRaHFJUWNnQVNnQ0FDRUpJd0JCSUdzaUJpUUFJQVpCR0dvaUNDQUpJQUZCQkdvaUN5QUNJQVFRMmdFQ1FDQUlFREFFUUNBSFFRSTZBQVFNQVFzZ0JrRVFhaUlJSUFrZ0N5QURJQVVRMmdFZ0NCQXdCRUFnQjBFQ09nQUVEQUVMSUFaQkNHb2lDQ0FKSUFzZ0JrRVlhaEFhS2dJQUlBWkJFR29RR2lvQ0FCRFhBeUFJRURBRVFDQUhRUUk2QUFRTUFRc2dCeUFHS1FNSU53SUFDeUFHUVNCcUpBQUNRQ0FIRUNzRVFDQUFJQWtnQ3lBQktBSVlJQXBCQ0dvUUdpb0NBQkJyREFFTElBQkJBam9BQkFzZ0NrRVFhaVFBQzdVQkFRUi9Jd0JCRUdzaUF5UUFRUUVoQWdKQUlBRXBBd0JDQUZJTkFDQUJLQUlJSWdVRVFDQUZLQUlJRFFFTFFRRWhCQXNDUUNBRURRQWdBU2tEQUNBQUtRTUFnMElBVWcwQVFRQWhBaUFBS0FJSVJRMEFJQUVvQWdnaUFVVU5BQ0FCUVFScUlRSWdBU2dDQUNFQkEwQUNRQ0FCSUFKR0RRQWdBeUFCS0FJUU5nSU1JQUFvQWdnZ0EwRU1haERBQXlBQUtBSUlRUVJxUncwQUlBRVFUQ0VCREFFTEN5QUJJQUpISVFJTElBTkJFR29rQUNBQ0N3MEFJQUJCZ0FGcUlBRVF2UlVMdGdJQkEzOGpBRUV3YXlJQ0pBQUNRQ0FBUVlBQmFpSURJQUVRYUEwQUlBTWdBUkRRQkNBQVFZQURha0VnSUFFZ0FrRXNhaERkQWtVRVFDQUNRUmhxSUFJb0Fpd2lBeWdDQ0NBREtBSU1FTVFJSVFNZ0FpQUFOZ0lFSUFKQnJKVWdOZ0lBSUFJZ0FqWUNFQ0FESUFJUTFnb2dBaEFXSUFOQkNHb1F4UU1MQWtBZ0FVSE5JbXNpQTBFVlN3MEFRUUVnQTNRaUJFSHlBWEZGQkVBZ0JFR0JnT0FCY1VVRVFFRUJJQU4wUVlEZ0FIRkZEUUlnQUVFQk9nQ2tBd3dEQ3lBQVFRRTZBS1lEREFJTElBQkJnUUk3QUtFRElBQkJBVG9Bb3dNTUFRc0NRQUpBQWtBZ0FVRUdhdzRFQWdNQkFRQUxJQUZCRmtjRVFDQUJRU2RIRFFNZ0FFRUJPZ0NtQXlBQVFRRTZBS2dEREFNTElBQkJBVG9Bb1FNTUFnc2dBRUVCT2dDaUF3d0JDeUFBUVFFNkFLVURDeUFDUVRCcUpBQUw0QUVCQlg4akFFRVFheUlISkFBZ0FTZ0NBQ0VJSXdCQk1Hc2lCaVFBSUFaQklHb2lDU0FJSUFGQkJHb2lDaUFDSUFRUTJ3RUNRQ0FKRUdJRVFDQUhRUUk2QUFnTUFRc2dCa0VRYWlJSklBZ2dDaUFESUFVUTJ3RWdDUkJpQkVBZ0IwRUNPZ0FJREFFTElBWWdDQ0FLSUFaQklHb1FTaXNEQUNBR1FSQnFFRW9yQXdBUTJBTWdCaEJpQkVBZ0IwRUNPZ0FJREFFTElBY2dCaWtEQURjREFDQUhJQVlwQXdnM0F3Z0xJQVpCTUdva0FBSkFJQWNRc2dFRVFDQUFJQWdnQ2lBQktBSVlJQWNRU2lzREFCQnpEQUVMSUFCQkFqb0FCQXNnQjBFUWFpUUFDeVlBSUFBZ0FTZ0NBQ2dDQUNBQ0tBSVlJQUl2QVJ3Z0FTZ0NDQ0FCS0FJTVFlQUFFSTBYQzRJQ0FRRi9RUXNoQWdKQUFrQWdBUkRRQWcwQUlBRVFvd0lOQUVFQUlRSUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCQVdzT0p3OEdCZ1lIQndZUERRRUNEdzBEQkFVT0RRME5EUTBORFEwTkRRME5EUTBORFEwTkRRME5DZ0FMQWtBZ0FVRTJhdzRXREF3TURRMFBEUTBORFEwTkRRME5EUTBKQ1FrSkNRQUxBa0FnQVVIS0Ftc09Bd2dGQ1FBTElBRkJnQ3hyUVFKSkRRZ2dBVUc5QWtZTkRpQUJRWlVxUncwTVFRUVBDMEVCRHd0QkFnOExRUU1QQzBFRkR3dEJCZzhMUVFjUEMwRUlEd3RCQ1E4TFFRb1BDMEVMRHdzQUMwRU1RUTBnQUVFTVJoc1BDMEVOSVFJTElBSVBDMEVMUVEwZ0FFRUxSaHNMR3dFQmZ5QUFLQUp3SWdGQkRVd0VRQ0FBSUFGQkFXbzJBbkFMQ3k0QkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBQkIzQUJxSUFOQkRHb1FtQXNnQWhEZ0FpQURRUkJxSkFBTEx3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUUwYWlBQ1FReHFFSjRDSVFBZ0FrRVFhaVFBSUFCQkFFY0xQZ0VDZnlBQUtBSUVJUUlEUUNBQ0lBQW9BZ2dpQVVjRVFDQUFJQUZCeEFOcklnRTJBZ2dnQVJEd0Zob01BUXNMSUFBb0FnQWlBQVJBSUFBUUh3c0xrd1FCQjM4Z0FDZ0NBQ0VHSUFBb0FnUWhBd05BSUFNZ0JrY0VRQ0FCS0FJRVFjUURheUlDSUFOQnhBTnJJZ01wQWdBM0FnQWdBaUFES1FBTk53QU5JQUlnQXlrQ0NEY0NDQ0FDUVJocUlBTkJHR29Rb1FRZ0FrRXNhaUFEUVN4cUVLVUNHaUFDUVRocUlBTkJPR29Rb1FRZ0FpQURLQUpNTmdKTUlBSkIwQUJxSUFOQjBBQnFFS2tJR2lBQ1FhQUJhaUFEUWFBQmFoQ3BDQm9nQWtId0FXb2dBMEh3QVdvUW9RUWdBa0dFQW1vZ0EwR0VBbW9Rb1FRZ0FrR1lBbW9nQTBHWUFtb1FvUVFnQWtHc0Ftb2dBMEdzQW1vUXV3MGdBa0c0QW1vZ0EwRzRBbW9RcFFJYUlBSkJ4QUpxSUFOQnhBSnFFS1VDR2lBQ1FkQUNhaUFEUWRBQ2FoQ2hCQ0FDUWVRQ2FpQURRZVFDYWhDaEJDQUNRZmdDYWlBRFFmZ0NhaENoQkNBQ1FZd0RhaUFEUVl3RGFoQ2hCQ0FDUWFBRGFpQURRYUFEYWhDN0RTQUNRYXdEYWlBRFFhd0RhaEM3RFNBQ1FiZ0RhaUlFSUFOQnVBTnFJZ0lvQWdBMkFnQWdCQ0FDS0FJRUlnYzJBZ1FnQkNBQ0tBSUlJZ2cyQWdnZ0JFRUVhaUVGQWtBZ0NFVUVRQ0FFSUFVMkFnQU1BUXNnQnlBRk5nSUlJQUpDQURjQ0JDQUNJQUpCQkdvMkFnQUxJQUVnQVNnQ0JFSEVBMnMyQWdRTUFRc0xJQUFvQWdBaEFpQUFJQUVvQWdRMkFnQWdBU0FDTmdJRUlBQW9BZ1FoQWlBQUlBRW9BZ2cyQWdRZ0FTQUNOZ0lJSUFBb0FnZ2hBaUFBSUFFb0FndzJBZ2dnQVNBQ05nSU1JQUVnQVNnQ0JEWUNBQXNWQUNBQUlBRWdBaUFEUWNRRFFiMzd3d1FRL2hJTFBnRUNmeUFBS0FJRUlRSURRQ0FDSUFBb0FnZ2lBVWNFUUNBQUlBRkJ6QUJySWdFMkFnZ2dBUkN1QnhvTUFRc0xJQUFvQWdBaUFBUkFJQUFRSHdzTGt3RUJBbjhnQUNnQ0FDRURJQUFvQWdRaEFnTkFJQUlnQTBjRVFDQUJLQUlFUWN3QWF5QUNRY3dBYXlJQ0VMVUlJQUVnQVNnQ0JFSE1BR3MyQWdRTUFRc0xJQUFvQWdBaEFpQUFJQUVvQWdRMkFnQWdBU0FDTmdJRUlBQW9BZ1FoQWlBQUlBRW9BZ2cyQWdRZ0FTQUNOZ0lJSUFBb0FnZ2hBaUFBSUFFb0FndzJBZ2dnQVNBQ05nSU1JQUVnQVNnQ0JEWUNBQXNWQUNBQUlBRWdBaUFEUWN3QVFkaWgrUm9RL2hJTHBBSUJCSDhnQVNnQ0FDSUNJQUV2QVFSQkFuUnFJUU1nQUVFQU5nSUlJQUJDQURjQ0FDQUNJQU5IQkVBZ0FDQURJQUpySWdOQkFuVVF6d1VnQUNnQ0JDRUVJQUFnQTBFQVNnUi9JQVFnQWlBREVIMGdBMm9GSUFRTE5nSUVDeUFBUVF4cUlRSWdBU2dDRkNJRElBRXZBUmhCQkhScUlRUWdBa0VBTmdJSUlBSkNBRGNDQUNBRElBUkhCRUFnQWlBRUlBTnJJZ1JCQkhVUXV4WWdBaWdDQkNFRklBSWdCRUVBU2dSL0lBVWdBeUFFRUgwZ0JHb0ZJQVVMTmdJRUN5QUFJQUFvQWdBMkFoZ2dBQ0FCTHdFRU93RWNJQUFnQVM4QkJqc0JIaUFBSUFFb0FnZzJBaUFnQUNBQktBSU1OZ0lrSUFBZ0FTZ0NFRFlDS0NBQUlBSW9BZ0EyQWl3Z0FDQUJMd0VZT3dFd0lBQkNBRGNDTkNBQVFnQTNBandnQUVJQU53SkVJQUFMR1FBZ0FDQUJLQUlBTmdJQUlBQkJCR29nQVVFRWFoQlVHZ3NWQUNBQVFlU1VJRFlDQUNBQVFRaHFFQThhSUFBTEtnRUNmeU1BUVJCcklnRWtBQ0FBS0FJQUVNTURJUUlnQUNnQ0JDRUFJQUZCRUdva0FDQUFJQUp6QzRvQkFRTi9Jd0JCNEFCcklnSWtBQ0FDUWNnQWFpQUFLQUlFRU5FQklRTWdBaUFBS0FJQUtBSUFOZ0kwSUFKQnNKTWdOZ0l3SUFKQjFKTWdOZ0lZSUFKQitKTWdOZ0lBSUFJZ0FrRXdhaUlBTmdKQUlBSWdBa0VZYWlJRU5nSW9JQUlnQWpZQ0VDQUJJQU1nQUNBRUlBSVF1UW9nQWhBV0lBUVFGaUFBRUJZZ0F4QVdJQUpCNEFCcUpBQUx5d0lCQTM4akFFSFFBR3NpQkNRQUlBUkJRR3RDQURjREFDQUVRZ0EzQXpnZ0JFR0FnSUQ4QXpZQ1NDQUVJQVJCT0dvMkFqQWdCQ0FDTmdJVUlBUWdCRUVnYWpZQ0hDQUVJQVJCS0dvMkFoZ2dCQ0FFUVRCcU5nSVFJQUJCQURZQ0NDQUFRZ0EzQWdBZ0FTZ0NCQ0VHSUFFb0FnQWhBZ0pBQTBBZ0FpQUdSZ1JBSUFFb0FnUWhBeUFCS0FJQUlRSURRQ0FDSUFOR0RRTWdCQ0FDS0FJQU5nSU1JQVJCT0dvZ0JFRU1haEQzQjBVRVFDQUFJQVJCREdvUXp3RWdCRUVRYWlBRUtBSU1FTkFWQ3lBQ1FRUnFJUUlNQUFzQUN5QUVJQUlvQWdBaUJUWUNEQUpBSUFNZ0JSQ0tBaUlGS0FJQUlBVW9BZ1JHQkVBZ0JFRTRhaUFFUVF4cUVQY0hEUUVnQUNBRVFReHFFTThCSUFSQkVHb2dCQ2dDREJEUUZRc2dBa0VFYWlFQ0RBRUxDMEhRdVFsQng3WURRY29DUWNyOUFCQUFBQXNnQkVFNGFoQlBJQVJCMEFCcUpBQUxHUUFnQUNBQk5nSUVJQUJCakpNZ05nSUFJQUFnQURZQ0VBdGNBUUYvSXdCQkVHc2lBeVFBSUFOQkNHb2dBQ0FCRUtjS0lBTW9BZ2dpQUFSL0FuOGdBa1VFUUNBQUxRQW9RZjhBY1VVTUFRc2dBa0VIVHdSQUVBRUFDeUFBS0FJb0lBSjJRUUZ4Q3dWQkFBc2hBQ0FEUVJCcUpBQWdBQXNJQUNBQVFhd0NhZ3VPQ1FJTWZ3SjlJd0JCSUdzaUNTUUFJQWtnQVRZQ0VDQUpRUkJxSVFZakFFRVFheUlISkFBZ0FSRFBGU0VJSUFrQ2Z3SkFJQUFvQWdRaUEwVU5BQ0FBS0FJQUFuOGdBMEVCYXlBSWNTQURhU0lGUVFGTkRRQWFJQWdnQXlBSVN3MEFHaUFJSUFOd0N5SUNRUUowYWlnQ0FDSUVSUTBBSUFOQkFXc2hDaUFCS0FJRUlRc2dBU2dDQUNFTUlBVkJBVXNoQlFOQUlBUW9BZ0FpQkVVTkFTQUlJQVFvQWdRaUFVY0VRQUpBSUFWRkJFQWdBU0FLY1NFQkRBRUxJQUVnQTBrTkFDQUJJQU53SVFFTElBRWdBa2NOQWdzZ0JDZ0NDQ0FNUncwQUlBUW9BZ3dnQzBjTkFBdEJBQXdCQ3lBSElBQWdDQ0FHRUxBZEFrQkJBQ0FESUFBb0FneEJBV3F6SWc0Z0FDb0NFQ0lQSUFPemxGNGJEUUFDUUFKL1FRSWdBeUFEUVFGcmNVRUFSeUFEUVFOSmNpQURRUUYwY2lJQkFuOGdEaUFQbFkwaURrTUFBSUJQWFNBT1F3QUFBQUJnY1FSQUlBNnBEQUVMUVFBTElnSWdBU0FDU3hzaUFVRUJSZzBBR2lBQklBRWdBVUVCYTNGRkRRQWFJQUVRZndzaUJTQUFLQUlFSWdGTkJFQWdBU0FGVFEwQklBRkJBMGtoQXdKL0lBQW9BZ3l6SUFBcUFoQ1ZqU0lPUXdBQWdFOWRJQTVEQUFBQUFHQnhCRUFnRHFrTUFRdEJBQXNoQWlBQklBVWdBeUFCYVVFQlMzSUVmeUFDRUg4RklBSkJBVUVnSUFKQkFXdG5hM1FnQWtFQ1NSc0xJZ0lnQWlBRlNSc2lCVTBOQVF0QkFDRUNBa0FnQlFSQUlBQWdCUkNYQXhCc0lBQWdCVFlDQkFOQUlBSWdCVVlFUUNBQUtBSUlJZ05GRFFNZ0FFRUlhaUVCSUFNb0FnUWhCQUpBSUFWcElnSkJBVTBFUUNBRUlBVkJBV3R4SVFRTUFRc2dCQ0FGU1EwQUlBUWdCWEFoQkFzZ0FDZ0NBQ0FFUVFKMGFpQUJOZ0lBSUFWQkFXc2hDeUFDUVFGTElRd0RRQ0FES0FJQUlnRkZEUVFnQVNnQ0JDRUdBa0FnREVVRVFDQUdJQXR4SVFZTUFRc2dCU0FHU3cwQUlBWWdCWEFoQmdzQ1FDQUVJQVpHRFFBZ0FTRUNJQVpCQW5RaUNpQUFLQUlBYWlJTktBSUFSUVJBSUEwZ0F6WUNBQ0FHSVFRTUFRc0RRQUpBSUFJaUJpZ0NBQ0lDUlEwQUlBRW9BZ2dnQWlnQ0NFY05BQ0FCS0FJTUlBSW9BZ3hHRFFFTEN5QURJQUkyQWdBZ0JpQUFLQUlBSUFwcUtBSUFLQUlBTmdJQUlBQW9BZ0FnQ21vb0FnQWdBVFlDQUF3QkN5QUJJUU1NQUFzQUJTQUFLQUlBSUFKQkFuUnFRUUEyQWdBZ0FrRUJhaUVDREFFTEFBc0FDeUFBUVFBUWJDQUFRUUEyQWdRTEN5QUFLQUlFSWdNZ0EwRUJhM0ZGQkVBZ0EwRUJheUFJY1NFQ0RBRUxJQU1nQ0VzRVFDQUlJUUlNQVFzZ0NDQURjQ0VDQ3dKQUlBSkJBblFpQWlBQUtBSUFhaWdDQUNJQlJRUkFJQWNvQWdBZ0FDZ0NDRFlDQUNBQUlBY29BZ0EyQWdnZ0FDZ0NBQ0FDYWlBQVFRaHFOZ0lBSUFjb0FnQWlBU2dDQUNJQ1JRMEJJQUlvQWdRaEJBSkFJQU1nQTBFQmF5SUNjVVVFUUNBQ0lBUnhJUVFNQVFzZ0F5QUVTdzBBSUFRZ0EzQWhCQXNnQUNnQ0FDQUVRUUowYWlBQk5nSUFEQUVMSUFjb0FnQWdBU2dDQURZQ0FDQUJJQWNvQWdBMkFnQUxJQWNvQWdBaEJDQUhRUUEyQWdBZ0FDQUFLQUlNUVFGcU5nSU1JQWNRaXdGQkFRczZBQndnQ1NBRU5nSVlJQWRCRUdva0FDQUpLQUlZSVFBZ0NVRWdhaVFBSUFCQkVHb0x5UVVDQ1g4Q2ZTTUFRUkJySWdra0FDTUFRUkJySWdZa0FDQUNLQUlBSVFVZ0NRSi9Ba0FnQVNnQ0JDSURSUTBBSUFFb0FnQUNmeUFEUVFGcklBVnhJQU5wSWdkQkFVME5BQm9nQlNBRElBVkxEUUFhSUFVZ0EzQUxJZ2hCQW5ScUtBSUFJZ1JGRFFBZ0EwRUJheUVLSUFkQkFVc2hDd05BSUFRb0FnQWlCRVVOQVNBRklBUW9BZ1FpQjBjRVFBSkFJQXRGQkVBZ0J5QUtjU0VIREFFTElBTWdCMHNOQUNBSElBTndJUWNMSUFjZ0NFY05BZ3NnQkNnQ0NDQUZSdzBBQzBFQURBRUxRZHdBRUJVaEJDQUdJQUZCQ0dvMkFnUWdCaUFFTmdJQUlBUkJDR29pQnlBQ0tBSUFOZ0lBSUFkQkJHb2dBa0VFYWhDcENCb2dCa0VCT2dBSUlBUkJBRFlDQUNBRUlBVTJBZ1FDUUVFQUlBTWdBU2dDREVFQmFyTWlEQ0FCS2dJUUlnMGdBN09VWGhzTkFDQUJJQU1nQTBFQmEzRkJBRWNnQTBFRFNYSWdBMEVCZEhJaUFnSi9JQXdnRFpXTklneERBQUNBVDEwZ0RFTUFBQUFBWUhFRVFDQU1xUXdCQzBFQUN5SUlJQUlnQ0VzYkVNTUJJQUVvQWdRaUF5QURRUUZyY1VVRVFDQURRUUZySUFWeElRZ01BUXNnQXlBRlN3UkFJQVVoQ0F3QkN5QUZJQU53SVFnTEFrQWdDRUVDZENJRklBRW9BZ0JxS0FJQUlnSkZCRUFnQmlnQ0FDQUJLQUlJTmdJQUlBRWdCaWdDQURZQ0NDQUJLQUlBSUFWcUlBRkJDR28yQWdBZ0JpZ0NBQ0lDS0FJQUlnVkZEUUVnQlNnQ0JDRUVBa0FnQXlBRFFRRnJJZ1Z4UlFSQUlBUWdCWEVoQkF3QkN5QURJQVJMRFFBZ0JDQURjQ0VFQ3lBQktBSUFJQVJCQW5ScUlBSTJBZ0FNQVFzZ0JpZ0NBQ0FDS0FJQU5nSUFJQUlnQmlnQ0FEWUNBQXNnQmlnQ0FDRUVJQVpCQURZQ0FDQUJJQUVvQWd4QkFXbzJBZ3dnQmlnQ0FDRUJJQVpCQURZQ0FDQUJCRUFnQmkwQUNBUkFJQUZCREdvUXpnVUxJQUVFUUNBQkVCOExDMEVCQ3pvQURDQUpJQVEyQWdnZ0JrRVFhaVFBSUFBZ0NTZ0NDRFlDQUNBQUlBa3RBQXc2QUFRZ0NVRVFhaVFBQzRvQkFRUi9JQUFvQWpBaUFTZ0NSQ0VESUFFb0FrQWhBUUpBQTBBZ0FTQURSd1JBQWtBQ1FDQUJLQUlBSWdJdkFSNGlCRUgyQVVjRVFDQUVRZmNCUncwQ0lBRW9BZ1JCQVVZTkFRd0NDeUFCS0FJRVFRRkhEUUVMSUFJb0Fqd2dBQkRIQlVVTkFDQUJLQUlBS0FJOElnSWdBRWNOQXdzZ0FVRUlhaUVCREFFTEN5QUFLQUlJSVFJTElBSUxmUUVCZndKL0lBRW9BZ1FnQVNnQ0FHdEJBblVoQWdKQUFrQUNRQUpBQWtBZ0FDZ0NBRUVCYXc0RUJBQUJBZ01MSUFKQkFVWU1CQXNnQWtFQlJnd0RDeUFDUVFCSERBSUxRWmlyQ1VIRW1BSkJOa0dieHdNUUFBQUxJQUpGQzBVRVFFSG81Z2hCeEpnQ1FUMUJwb29CRUFBQUN5QUFRUVJxSUFFUXVBY0w1d1FDQ0g4Q2ZpTUFRY0FCYXlJRUpBQWdBU2dDOUFFZ0FTZ0MvQUVpQlVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FCSUFWQkFYUkJBbW9Rc0JFTElBUkJ1QUZxSUFFZ0FoRHlCQ0FCS0FMMEFTSUtRUUZySVFzZ0FpZ0NBQ0VISUFFb0F2QUJJUWdnQkNnQ3ZBRWhDU0FFS0FLNEFTRUdRUUFoQWdKQUEwQWdBaUFLUndSQUlBZ2dCa0VVYkdvaUJTMEFDRVVFUUNBREtBSUFJUU1nQlVFQk9nQUlJQVVnQXpZQ0JDQUZJQWMyQWdBZ0JDZ0N2QUVoQXlBSUlBWkJGR3hxSWdZZ0FqWUNFQ0FHSUFNMkFnd2dBU0FCS0FMOEFVRUJhallDL0FFZ0FTQUJLQUtBQWtFQmFqWUNnQUlnQUNBRlFRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBVW9BZ3dnQ1VjTkFDQUhJQVVvQWdCSERRQWdBRUVDTmdJQUlBQWdCVUVFYWpZQ0JBd0RDeUFDSUFVb0FoQkxCRUFnQXlnQ0FDRURJQVJCQVRvQXFBRWdCQ0FDTmdLd0FTQUVJQU0yQXFRQklBUWdCellDb0FFZ0JDQUpOZ0tzQVNBRUlBSTJBaEFnQkNBRUtRT29BU0lNTndNSUlBUWdCQ2tEb0FFaURUY0RBQ0FFSUFVb0FoQTJBckFCSUFRZ0JTa0NDRGNEcUFFZ0JDQUZLUUlBTndPZ0FTQUZJQUkyQWhBZ0JTQU5Od0lBSUFVZ0REY0NDQ0FFSUFRb0FyQUJRUUZxTmdLd0FTQUJJQVpCQVdvZ0FTZ0M5QUZ3SUFSQm9BRnFFTElFSUFFZ0FTZ0MvQUZCQVdvMkF2d0JJQUVnQVNnQ2dBSkJBV28yQW9BQ0lBQWdCVUVFYWpZQ0JDQUFRUUEyQWdBTUF3VWdCa0VCYWtFQUlBWWdDMGNiSVFZZ0FrRUJhaUVDREFJTEFBc0xJQVJCaHJVRFFlc0RRUTRnQkVHZ0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFSEFBV29rQUFzUUFDQUFRUUEyQWdBZ0FFRUFOZ0lZQ3cwQUlBQWdBVUg4a1NBUXp3d0xEUUFnQUNBQlFiU1JJQkRQREF1aUJRSUpmd0o5SXdCQklHc2lCeVFBSUFjZ0FUWUNFQ0FIUVJCcUlRZ2pBRUVRYXlJRkpBQWdBU2dDQUNFQklBY0Nmd0pBSUFBb0FnUWlBa1VOQUNBQUtBSUFBbjhnQWtFQmF5QUJjU0FDYVNJR1FRRk5EUUFhSUFFZ0FTQUNTUTBBR2lBQklBSndDeUlFUVFKMGFpZ0NBQ0lEUlEwQUlBSkJBV3NoQ1NBR1FRRkxJUW9EUUNBREtBSUFJZ05GRFFFZ0FTQURLQUlFSWdaSEJFQUNRQ0FLUlFSQUlBWWdDWEVoQmd3QkN5QUNJQVpMRFFBZ0JpQUNjQ0VHQ3lBRUlBWkhEUUlMSUFNb0FnZ2dBVWNOQUF0QkFBd0JDMEVRRUJVaEF5QUZJQUJCQ0dvMkFnUWdCU0FETmdJQUlBZ29BZ0FvQWdBaEJpQURRUUE2QUF3Z0F5QUdOZ0lJSUFWQkFUb0FDQ0FEUVFBMkFnQWdBeUFCTmdJRUFrQkJBQ0FDSUFBb0FneEJBV3F6SWdzZ0FDb0NFQ0lNSUFLemxGNGJEUUFnQUNBQ0lBSkJBV3R4UVFCSElBSkJBMGx5SUFKQkFYUnlJZ1FDZnlBTElBeVZqU0lMUXdBQWdFOWRJQXREQUFBQUFHQnhCRUFnQzZrTUFRdEJBQXNpQWlBQ0lBUkpHeEREQVNBQUtBSUVJZ0lnQWtFQmEzRkZCRUFnQWtFQmF5QUJjU0VFREFFTElBRWdBa2tFUUNBQklRUU1BUXNnQVNBQ2NDRUVDd0pBSUFSQkFuUWlCQ0FBS0FJQWFpZ0NBQ0lCUlFSQUlBVW9BZ0FnQUNnQ0NEWUNBQ0FBSUFVb0FnQTJBZ2dnQUNnQ0FDQUVhaUFBUVFocU5nSUFJQVVvQWdBaUFTZ0NBQ0lFUlEwQklBUW9BZ1FoQXdKQUlBSWdBa0VCYXlJRWNVVUVRQ0FESUFSeElRTU1BUXNnQWlBRFN3MEFJQU1nQW5BaEF3c2dBQ2dDQUNBRFFRSjBhaUFCTmdJQURBRUxJQVVvQWdBZ0FTZ0NBRFlDQUNBQklBVW9BZ0EyQWdBTElBVW9BZ0FoQXlBRlFRQTJBZ0FnQUNBQUtBSU1RUUZxTmdJTUlBVVFpd0ZCQVFzNkFCd2dCeUFETmdJWUlBVkJFR29rQUNBSEtBSVlJUUFnQjBFZ2FpUUFJQUJCREdvTE1BRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhVQW1vZ0FrRU1haERkRlMwQUFDRUFJQUpCRUdva0FDQUFDNVVIQWdSL0FYMGpBRUhBQVdzaUFTUUFBa0FnQUNnQ0FDSUVLQUlBSWdORkRRQWdBQ2dDQkNFQUlBTW9BZ1FpQTBIUW9CSkdCRUFnQVVFQU5nSVlJQUZDQURjREVDQUJRZ0EzQXdnZ0FVRzRBV29pQWlBQUlBUW9BZ0JDQUJEOUFTQUNFREFFUUNBQlFRaHFRY1d0QlVITUJFRUlJQUZCcUFGcUVCMGlBQkFYSWdKQkdHcEI3N1VJRUE0YUlBSVFHQ0FBRUI0TElBRkJ1QUZxRUJvb0FnQWhBZ3dCQ3lBRFFmQ2ZFa1lFUUNBQlFRQTJBaGdnQVVJQU53TVFJQUZDQURjRENDQUJRYmdCYWlJQ0lBQWdBVUVJYWlBRUtBSUFSQUFBQUFBQUFBQUFFSE1nQWhBd0JFQWdBVUVJYWtIRnJRVkJ6QVJCQ0NBQlFhZ0JhaEFkSWdBUUZ5SUNRUmhxUWUrMUNCQU9HaUFDRUJnZ0FCQWVDeUFCUWJnQmFoQWFLQUlBSVFJTUFRc2dBMEdRcWhKR0JFQWdBVUVBTmdJWUlBRkNBRGNERUNBQlFnQTNBd2dnQVVHNEFXb2lBaUFBSUFRb0FnQkJBQkN4QVNBQ0VEQUVRQ0FCUVFocVFjV3RCVUhNQkVFSUlBRkJxQUZxRUIwaUFCQVhJZ0pCR0dwQjc3VUlFQTRhSUFJUUdDQUFFQjRMSUFGQnVBRnFFQm9vQWdBaEFnd0JDeUFEUWFDekVrWUVRQ0FCUVFBMkFoZ2dBVUlBTndNUUlBRkNBRGNEQ0NBQlFiZ0JhaUlDSUFBZ0JDZ0NBRUVBRUswQklBSVFNQVJBSUFGQkNHcEJ4YTBGUWN3RVFRZ2dBVUdvQVdvUUhTSUFFQmNpQWtFWWFrSHZ0UWdRRGhvZ0FoQVlJQUFRSGdzZ0FVRzRBV29RR2lnQ0FDRUNEQUVMSUFOQnNLa1NSZ1JBSUFGQkFEWUNHQ0FCUWdBM0F4QWdBVUlBTndNSUlBRkJ1QUZxSWdJZ0FDQUJRUWhxSUFRb0FnQkRBQUFBQUJCcklBSVFNQVJBSUFGQkNHcEJ4YTBGUWN3RVFRZ2dBVUdvQVdvUUhTSUFFQmNpQWtFWWFrSHZ0UWdRRGhvZ0FoQVlJQUFRSGdzZ0FVRzRBV29RR2lnQ0FDRUNEQUVMSUFOQjBLZ1NSZ1JBUXdBQUFBQVFSaUVGSUFGQkFEWUNHQ0FCUWdBM0F4QWdBVUlBTndNSUlBRkJ1QUZxSWdJZ0FDQUJRUWhxSUFRb0FnQWdCUkJ5SUFJUU1BUkFJQUZCQ0dwQnhhMEZRY3dFUVFnZ0FVR29BV29RSFNJQUVCY2lBa0VZYWtIdnRRZ1FEaG9nQWhBWUlBQVFIZ3NnQVVHNEFXb1FHaWdDQUNFQ0RBRUxJQU5CMEtVU1J3MEFJQUZCQURZQ0dDQUJRZ0EzQXhBZ0FVSUFOd01JSUFGQnVBRnFJZ0lnQUNBRUtBSUFRUUFRaUFFZ0FoQXdCRUFnQVVFSWFrSEZyUVZCekFSQkNDQUJRYWdCYWhBZElnQVFGeUlDUVJocVFlKzFDQkFPR2lBQ0VCZ2dBQkFlQ3lBQlFiZ0JhaEFhS0FJQUlRSUxJQUZCd0FGcUpBQWdBZ3NWQUNBQVFleVFJRFlDQUNBQVFRUnFFQThhSUFBTEZRQWdBRUhJa0NBMkFnQWdBRUVFYWhBUEdpQUFDeFVBSUFCQnBKQWdOZ0lBSUFCQkJHb1FEeG9nQUFzVkFDQUFRWUNRSURZQ0FDQUFRUVJxRUE4YUlBQUxMUUVCZjBIWnhBTWhBZ0pBQWtBQ1FDQUJRUUZyRGdJQkFBSUxRYXUzQXlFQ0N5QUFRUWhxSUFJUURob0xDeFVBSUFCQjNJOGdOZ0lBSUFCQkJHb1FEeG9nQUFzVkFDQUFRYmlQSURZQ0FDQUFRUVJxRUE4YUlBQUxFZ0FnQUNBQklBSkJ3WThEUWNFcEVJQVRDeFVBSUFCQmxJOGdOZ0lBSUFCQkJHb1FEeG9nQUFzVkFDQUFRZkNPSURZQ0FDQUFRUVJxRUE4YUlBQUxhUUVEZnlNQVFSQnJJZ1FrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ00yQWd3Z0JDQUROZ0lJSUFCQmpBRnFJZ01RdndFaUJTQUFLQUlJSUFRb0FnZ2dBU0FDTFFBQUVPMFZHaUFESUFVUUtDQURJQU1vQWhoQkFXbzJBaGdnQlNFQUlBUkJFR29rQUNBQUN4VUFJQUJCOUl3Z05nSUFJQUJCQkdvUUR4b2dBQXVCQVFFRGZ3SkFBa0FEUUFKQUFrQWdBUzhCSGlJQ1FSeHJEZ01BQUFFREN5QUFJQUZCQVJBYkVDQWhBUXdCQ3d0QkFTRUNBMEFnQWlBQktBSVFJQUVvQWd4clFRUjFJZ1JKSVFNZ0FpQUVUdzBDSUFFZ0FoQWJJUVFnQWtFQmFpRUNJQUFnQUNBRUVDQVE3QlZGRFFBTERBRUxJQUpCN2lsSERRQkJBU0VEQ3lBREMxY0JBWDhqQUVFUWF5SUZKQUFnQlNBQ05nSUFJQVVnQVRZQ0NDQUFJQVVvQWdnZ0JTZ0NBQ0FERUxZT0lnQkIrUHdQTmdJRUlBQkJyUDBQTmdJQUlBQWdCRG9BSkNBQVFaajlEellDQUNBRlFSQnFKQUFnQUF2WEFRRURmd05BQWtBZ0FrVU5BQ0FBSUFFb0FpZ1EzZ0VpQTBFRWFpRUVJQU1vQWdBaEF3TkFJQU1nQkVZTkFTQURLQUlRUVF0R0JFQkJBQThGSUFNUVRDRUREQUVMQUFzQUMwRUFJUVFDUUFKQUlBRXZBUjRpQTBFZVN3MEFRUUVnQTNSQmdJQ0FqQU54RFFFZ0EwRVVSd1JBSUFOQkhrY05BVUVCSVFNRFFDQURJQUVvQWhBZ0FTZ0NER3RCQkhVaUJVa2hCQ0FESUFWUERRSWdBU0FERUJzaEJTQURRUUZxSVFNZ0FDQUFJQVVRSUNBQ0VPNFZSUTBBQ3d3QkMwRUJJUVFMSUFRUEN5QUFJQUZCQVJBYkVDQWhBUXdBQ3dBTCtRSUJCbjhDUUNBQkx3RWVRUjVIRFFBZ0FpOEJIa0VlUncwQUlBRW9BaEFpQkNBQktBSU1JZ1ZySUFJb0FoQWdBaWdDREd0SERRQkJBaUVEQTBBZ0JDQUZhMEVFZFNBRFN3UkFJQU5CQW5RaUJ5QUJLQUlBYWlnQ0FDSUlJQUlvQWdBZ0Iyb29BZ0JIQkVBZ0FDQUFJQWdRSUNBQUlBSW9BZ0FnQjJvb0FnQVFJQkR2RlVVTkF5QUJLQUlNSVFVZ0FTZ0NFQ0VFQ3lBRFFRRnFJUU1NQVFzTEFrQWdBUzhCSGtFZVJnUkFJQUl2QVI1QkhrY05BU0FBSUFFb0FpZ1EzZ0VpQVVFRWFpRUVJQUFnQWlnQ0tCRGVBU0lDUVFScUlRVWdBU2dDQUNFQUEwQWdBQ0FFUmlJR0JFQkJBU0VHREFRTEFrQWdBQ2dDRUVFalJ3MEFJQUlvQWdBaEF3TkFJQU1nQlVZTkFRSkFJQU1vQWhCQkkwWUVRQ0FBS0FJZ0lBTW9BaUJHRFFFTElBTVFUQ0VEREFFTEN5QUFLQUlVS0FJQUlBTW9BaFFvQWdCSERRUUxJQUFRVENFQURBQUxBQXRCbTdNSlFmK1VBa0hwQUVIMW53RVFBQUFMUWNLeUNVSC9sQUpCNndCQjlaOEJFQUFBQ3lBR0Mvc0pBUWwvSXdCQjRBRnJJZ01rQUNBRFFkQUJha0d3dndJZ0EwRVFhaUFCTHdFZUVJRUJFQlFpQkJBMUlBUVFEeG9DUUNBQUlBRW9BaVFRSUNJRUx3RWVRU0JIQkVBZ0EwRVFhaUlDSUFCQmRpQUJFQkFnQWtHaXNBb1FEaG9nQWlBRFFkQUJhaEFTR2lBQ1FaM2JDeEFPR2lBRElBQWdBU2dDS0JBcUlBSWdBeEFTR2lBQ1FZYTlBaEFPR2lBQ0lBUXZBUjRRZ1FFUURob2dBa0g4bHdnUURob2dBeWdDekFFaEJDQURFQThhSUFJUUVRd0JDeUFBSUFRb0FnQW9BZ3dRSUNFSkFrQWdBQ0FBSUFGQkFoQWJJZ1VRSUNnQ0pCQWdJZ0lFUUNBQ0x3RWVRU0JHRFFFTElBTkJFR29pQWlBQVFYWWdBUkFRSUFKQjk4d0xFQTRhSUFNZ0FDQUZFQ29nQWlBREVCSWFJQUpCMzVFS0VBNGFJQUlnQTBIUUFXb1FFaG9nQWtHQ3lRY1FEaG9nQXlnQ3pBRWhCQ0FERUE4YUlBSVFFUXdCQ3lBRUtBSUFLQUlJSUFJb0FnQWlCQ2dDQ0VjRVFDQURRUkJxSWdJZ0FFRjJJQUVRRUNBQ1FhZU9DaEFPR2lBQ0lBTkIwQUZxRUJJYUlBSkJxdWdIRUE0YUlBTW9Bc3dCSVFRZ0FoQVJEQUVMSUFBZ0JDZ0NEQkFnSVFJZ0FTZ0NCQ0lISUFFb0FnQWlCV3RCQW5VaEJBSkFRUVZCQkFKL0FrQUNRQUpBSUFFdkFSNGlCa0hEQUdzT0JBRUFBQUVBQ3lBRVFRUnJJZ1FnQUNnQ0JDZ0NIQ0lJVFEwQkRBTUxJQVJCQldzaUJDQUFLQUlFS0FJY0lnaExEUUlnQmtIR0FFWWdCa0hEQUVaeURBRUxJQVpCeGdCR0N4c2hCQU5BQWtBQ2Z3SkFBa0FnQnlBRmEwRUNkU0FFU3dSQUFrQWdBQ0FBSUFVZ0JFRUNkR29vQWdBUUlDSUZLQUlrRUNBaUJnUkFJQVl2QVI1QkZVWU5BUXNnQTBFUWFpSUNJQUJCZGlBQkVCQWdBa0gwZ3dvUURob2dBaUFEUWRBQmFoQVNHaUFDUVkzS0J4QU9HaUFES0FMTUFTRUVJQUlRRVF3SUN5QUNMd0VlSWdaQkhrc05BVUVCSUFaMFFZQ0FnSXdEY1EwQ0lBWkJIa2NOQVNBRkx3RWVRU3RIQkVBZ0EwRVFhaUlCSUFCQmRpQUZFQkFnQVVHSGhBb1FEaG9nQVNBRFFkQUJhaEFTR2lBQlFhU25CeEFPR2lBREtBTE1BU0VFSUFFUUVRd0lDeUFGS0FJQUtBSU1JZ1lnQWlnQ0JDQUNLQUlBSWdkclFRSjFJZ2hCQW1zaUNra0VRQ0FHUVFKMElBZHFRUWhxREFRTElBTkJFR29pQVNBQVFYWWdCUkFRSUFGQnErd0xFQTRhSUFFZ0EwSFFBV29RRWhvZ0FVR0t4QWtRRGhvZ0FTQUdFQ0VhSUFGQm9NMExFQTRhSUFNZ0FDQUNLQUlvRUNvZ0FTQURFQklhSUFGQjd1TUpFQTRhSUFFZ0NoQWhHaUFCUWNuYkNSQU9HaUFCSUFoQkEyc1FJUm9nQVVIOGx3Z1FEaG9nQXlnQ3pBRWhCQ0FERUE4YUlBRVFFUXdIQzBFQUlRUWdBaWdDS0NBSktBSW9SZzBHSUFOQkVHb2lCU0FBUVhZZ0FSQVFJQVVnQTBIUUFXb1FFaG9nQlVIc3R3SVFEaG9nQlNBSkx3RWVFSUVCRUE0YUlBVkJvYmdDRUE0YUlBVWdBaThCSGhDQkFSQU9HaUFGUWZpWENCQU9HaUFES0FMTUFTRUVJQVVRRVF3R0N5QUdRZTRwUncwQ0N5QUNLQUlBUVFocUN5RUNJQVJCQVdvaEJDQUFJQUlvQWdBUUlDRUNJQUVvQWdBaEJTQUJLQUlFSVFjTUFRc0xJQU5CRUdvaUFpQUFRWFlnQVJBUUlBSWdBMEhRQVdvUUVob2dBa0dTZ1FnUURob2dBeWdDekFFaEJDQUNFQkVNQVFzZ0EwRVFhaUlDSUFCQmRpQUJFQkFnQWtIcmpnb1FEaG9nQWlBRFFkQUJhaEFTR2lBQ1FlN2RDaEFPR2lBQ0lBZ1FJUm9nQWtIc3lnb1FEaG9nQWlBRUVDRWFJQUpCc2JJSEVBNGFJQU1vQXN3QklRUWdBaEFSQ3lBRFFkQUJhaEFQR2lBRFFlQUJhaVFBSUFRTDJSWUJESDhqQUVIQUFXc2lCU1FBSUFFdkFSNGhCQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBS0FKd0RnNEFBQUFBQUFBQUFBQUFBQUFCQVFjTElBUkJERWNOQkFKQUlBRW9BaUFRMFFVRVFDQUJLQUlBS0FJUUlRTUNRQUpBQWtBZ0FTZ0NJRUVJYXc0REFBSUJBZ3RCQVNBRGRFR0FnSUNNQTNGRklBTkJIVXR5RFFZTUJ3c2dBMEVkVFEwQ0RBUUxRUUVnQTNSQmdJQ0FqQU54UlNBRFFSMUxjZzBFREFVTElBRW9BaUFRc0FjaENDQUFLQUp3SVFNZ0NBUkFJQU5CQ2tvTkJpQUZJQUJCZENBQkVCQWdCVUd5NEFrUURob2dCVUdVMXdJUURob2dCU2dDdkFFaEFDQUZFQkVNQndzZ0EwRU1TZzBGSUFVZ0FFRjBJQUVRRUNBRlFRd1FnUUVRRGhvZ0JVSFFuUU1RRGhvZ0JTZ0N2QUVoQUNBRkVCRU1CZ3RCQVNBRGRFR0FnSUNNQTNGRkRRRU1Bd3NqQUVIQUFXc2lBaVFBQWtBQ1FDQUFLQUp3UVF4SERRQWdBQ0FFRU1FTkRRQWdBQkRERlNBQUxRQ2dBMFVOQUNBQUVNc0JRUUlReFEwaUF3MEJDd0pBQWtBQ1FBSkFBa0FDUUNBQUlBUVF3UTBFUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVJCTm1zT0F3RUNBd0FMQWtBQ1FDQUVRUWhyRGdVT0FRRUJCZ0FMSUFSQitBRkdEUVFnQkVHOUFrWU5EUXNnQUNnQ2NFRU1SdzBGSUFBdEFLQURSUTBGSUFJZ0FFRjBJQUVRRUNBQ1FaQ1NBeEFPR2lBQ0tBSzhBU0VESUFJUUVRd05DeUFBTFFDZ0F3UkFJQUlnQUVGMElBRVFFQ0FDUVpBV0VBNGFJQUlvQXJ3QklRTWdBaEFSREEwTElBRkJBaEFiSVFNZ0FTZ0NLQ0VFSUFFb0FpUWhDQ0FCUVFNUUd5RUJJd0JCSUdzaUJpUUFJQVlnQ0RZQ0dDQUdJQVEyQWh3Z0JpQUROZ0lVSUFZZ0FUWUNFQ0FBTFFDZ0F3UkFRWXVnQ1VINHF3SkI5QU5CbHRNQ0VBQUFDeUFBUVFFNkFLQURJQVpCSEdvaEF5QUdRUmhxSVFRZ0JrRVVhaUVJSUFaQkVHb2hDUUpBSUFCQjlBQnFJZ0VvQWdRZ0FTZ0NDRWtFUUNBQlFRaHFJQUVvQWdRaUJ5QURJQVFnQ0NBSkVMWVZJQUVnQjBIRUEybzJBZ1FNQVFzakFFRWdheUlLSkFBZ0FTZ0NCQ0FCS0FJQWEwSEVBMjFCQVdvaUIwRzkrOE1FVHdSQUVBRUFDeUFCUVFocUlnc2dDa0VJYWtHOCs4TUVJQUVvQWdnZ0FTZ0NBR3RCeEFOdElneEJBWFFpRFNBSElBY2dEVWtiSUF4QjN2MmhBazhiSUFFb0FnUWdBU2dDQUd0QnhBTnRJQXNReUJVaUJ5Z0NDQ0FESUFRZ0NDQUpFTFlWSUFjZ0J5Z0NDRUhFQTJvMkFnZ2dBU0FIRU1jVklBY1F4aFVnQ2tFZ2FpUUFDeUFCS0FJRUdpQUdJQUFReXdFMkFnd2dCaUFBUWJBRGFpQURJQVpCREdvUTdnZ2dCa0VnYWlRQVFRQWlBdzBNSUFBb0FuQkJEVWNOQ3lBQUVNc0JRUUlReFEwaUEwVU5Dd3dNQ3lBQUxRQ2dBMFVFUUNBQ0lBQkJkQ0FCRUJBZ0FrRzlGaEFPR2lBQ0tBSzhBU0VESUFJUUVRd01DeUFBRU1zQktBSWtSUTBGSUFJZ0FFRjBJQUVRRUNBQ1FjVEVBaEFPR2lBQ0tBSzhBU0VESUFJUUVRd0xDeUFBTFFDZ0EwVUVRQ0FDSUFCQmRDQUJFQkFnQWtHbUZ4QU9HaUFDS0FLOEFTRURJQUlRRVF3TEN5QUFFSjhHQkVBZ0FpQUFRWFFnQVJBUUlBSkIycXNCRUE0YUlBSW9BcndCSVFNZ0FoQVJEQXNMQWtBZ0FCRExBU2dDSkEwQUlBQW9BbkJCRFVjTkFDQUNJQUJCZENBQkVCQWdBa0dqcmdjUURob2dBaWdDdkFFaEF5QUNFQkVNQ3dzZ0FDZ0NjRUVNUmdSQUlBQVF5d0ZCQVJERkRTSUREUXNMQW44Q1FDQUFMUUNnQXdSQUlBQVFud1lOQVNBQUVNc0JJZ1F0QUJSRkJFQWdCRUVCT2dBVUl3QkJNR3NpQXlRQUlBTkJuSlFnTmdJWUlBTkJ3SlFnTmdJQUlBTWdBMEVZYWlJSU5nSW9JQU1nQXpZQ0VDQUVRWVFDYWlFSEl3QkJvQUZySWdFa0FDQUJJQVJCb0FGcU5nS1lBU0FCSUFSQjBBQnFOZ0tjQVNBQlFZZ0JhaUlKSUFSQkxHb2dBVUh3QUdvZ0NCRFJBU0lHSUFGQjJBQnFJQU1RMFFFaUNoRFJGU0FLRUJZZ0JoQVdJQUZCT0dvZ0FVSElBR29nQkNnQ01DQUVLQUlzRVA0Wklnb2dBVUVnYWlBREVORUJJZ1lnQVVFSWFpQUlFTkVCSWdzUTBSVWdDeEFXSUFZUUZpQUVRZkFCYWlJTElBRkJuQUZxRUlZRklBa1F1QWNnQVNnQ2pBRWhEQ0FCS0FLSUFTRUVBMEFnQkNBTVJnUkFBa0FnQnlBQlFaZ0JhaENHQlNBQlFUaHFFTGdISUFFb0Fqd2hCeUFCS0FJNElRUURRQ0FFSUFkR0RRRWdBU0FFS0FJQU5nSUVJQXNnQVVFRWFoQ0dCU0lKSUFnZ0FTZ0NCQkNLQWlJR0tBSUVJQVlvQWdCclFRSjFRUUZxRUtzRUlBa2dBVUdZQVdvUXp3RWdDU0FKS0FJRUlBWW9BZ0FnQmlnQ0JCRGRDaUFFUVFScUlRUU1BQXNBQ3dVZ0FTQUVLQUlBTmdJRUlBY2dBVUVFYWhDR0JTSUpJQU1nQVNnQ0JCQ0tBaUlHS0FJRUlBWW9BZ0JyUVFKMVFRRnFFS3NFSUFrZ0FVR2NBV29RendFZ0NTQUpLQUlFSUFZb0FnQWdCaWdDQkJEZENpQUVRUVJxSVFRTUFRc0xJQUZCT0dvUU1ob2dDaEF5R2lBQlFZZ0JhaEF5R2lBQlFhQUJhaVFBSUFNUUZpQUlFQllnQTBFd2FpUUFDeUFBUVFBNkFLQURRUUFNQWd0Qmg2RUpRZmlyQWtHQ0JFR082Z1FRQUFBTFFhYWxDVUg0cXdKQmhRUkJqdW9FRUFBQUN5SURSUTBKREFvTElBQXRBS0FEUlFSQUlBSWdBRUYwSUFFUUVDQUNRZmdXRUE0YUlBSW9BcndCSVFNZ0FoQVJEQW9MSUFBUW53WkZEUWdnQWlBQVFYUWdBUkFRSUFKQjZkTUhFQTRhSUFJb0Fyd0JJUU1nQWhBUkRBa0xJQUVvQWlBUTBRVUVRQ0FCS0FJQUtBSVFJUU1DUUFKQUFrQWdBU2dDSUVFSWF3NERBQUlCQWd0QkFTQURkRUdBZ0lDTUEzRkZJQU5CSFV0eURRZ01DUXNnQTBFZFRRMEZEQVlMUVFFZ0EzUkJnSUNBakFOeFJTQURRUjFMY2cwR0RBY0xJQUVvQWlBUXNBY0VRQ0FBS0FKd1FRcE1CRUFnQWlBQVFYUWdBUkFRSUFKQnN1QUpFQTRhSUFKQmxOY0NFQTRhSUFJb0Fyd0JJUU1nQWhBUkRBb0xJQUF0QUtBRFJRMElJQUFRbndZTkNDQUNJQUJCZENBQkVCQWdBa0dmblFNUURob2dBaWdDdkFFaEF5QUNFQkVNQ1FzZ0FCQ2ZCZzBISUFJZ0FFRjBJQUVRRUNBQ1FRd1FLUkFPR2lBQ1FkQ2RBeEFPR2lBQ0tBSzhBU0VESUFJUUVRd0lDeUFBRUo4R0RRWWdBaUFBUVhRZ0FSQVFJQUlnQkJBcEVBNGFJQUpCMEowREVBNGFJQUlvQXJ3QklRTWdBaEFSREFjTElBSWdBRUYwSUFFUUVDQUNJQVFRS1JBT0dpQUNRYlRkQWhBT0dpQUNLQUs4QVNFRElBSVFFUXdHQ3lBQUVNc0JJUUFnQVNnQ0tCb2dBU2dDSkJvZ0FDZ0NUQVJBUWF5a0NVR1NxZ0pCUEVIazRnRVFBQUFMUVFBaUF3MEZEQVFMUVFFZ0EzUkJnSUNBakFOeERRSUxJQU5CNVFCcklnTkJBMHNOQUNBRFFRRkhEUUVMSUFBb0FuQkJDMDRFUUNBQUtBSndRUXhJRFFJTElBSWdBRUYwSUFFUUVDQUNRZEdTQ2hBT0dpQUNRZHUxQ2hBT0dpQUNRWS9uREJBT0dpQUNRZWVHQ2hBT0dpQUNRWmVnQ0JBT0dpQUNLQUs4QVNFRElBSVFFUXdDQ3lBQUxRQ2dBdzBBSUFJZ0FFRjBJQUVRRUNBQ1FkdTFDaEFPR2lBQ1FZMklDaEFPR2lBQ1FlSVhFQTRhSUFJb0Fyd0JJUU1nQWhBUkRBRUxRUUFoQXdzZ0FrSEFBV29rQUNBRElRQU1CQXNnQTBIbEFHc2lBMEVEU3cwQUlBTkJBVWNOQVFzZ0FDZ0NjRUVMVGdSQUlBQW9BbkJCREVnTkFnc2dCU0FBUVhRZ0FSQVFJQVZCMFpJS0VBNGFJQVZCMjdVS0VBNGFJQVZCaitjTUVBNGFJQVZCNTRZS0VBNGFJQVZCbDZBSUVBNGFJQVVvQXJ3QklRQWdCUkFSREFJTElBQXRBS0FERFFBZ0JTQUFRWFFnQVJBUUlBVkIyN1VLRUE0YUlBVkJqWWdLRUE0YUlBVkI0aGNRRGhvZ0JTZ0N2QUVoQUNBRkVCRU1BUXNnQkVFT1JpRURBMEFnQUNBRUVNRU5EUUlnQUNnQ2NDQUVFTUlWSUFBb0FuQklCRUFnQlNBQVFYUWdBUkFRSUFVZ0JCQ0JBUkFPR2lBRlFmdldBaEFPR2lBRktBSzhBU0VBSUFVUUVRd0NDeUFBRU1NVklBQW9BbkFpQ0VFRFJ3UkFJQWhCREVjTkFTQUFJQUVROFJVaEFBd0NDeUFERFFBTElBVWdBRUYwSUFFUUVDQUZJQVFRZ1FFUURob2dCVUhpeGdJUURob2dCU2dDdkFFaEFDQUZFQkVMSUFBTkFRdEJBQ0VBQ3lBRlFjQUJhaVFBSUFBTFd3RUNmeU1BUWJBQmF5SURKQUFnQXlBRFFTQnFFSWdESWdRMkFoQWdBeUFDTmdJTUlBTkIwSXdnTmdJSUlBTWdBMEVJYWlJQ05nSVlJQUVnQWhEV0NpQUNFQllnQUNBRVFReHFFRUlnQkJDN0Fob2dBMEd3QVdva0FBdTFDQUVHZnlNQVFaQUNheUlHSkFBQ1FBSkFBa0FDUUFKQUlBTW9BZ1FpQlVFWGF3NEhBUU1EQXdNQUFnTUxRUUVnQkhSQkduRkZJQVJCQkV0eURRSU1Bd3NnQUMwQW93TkZEUUVNQWdzZ0JFRUNTdzBBSUFBdEFLVUREUUVMSUFaQkFEWUNHQ0FHUWdBM0F4QWdCa0VBTmdJTUlBWkJHR29oQ2dKQUlBQkJnQU5xSWdjZ0JTQUVJQVpCREdvUTNRSU5BQ0FHS0FJTUlRVUNRQUpBSUFNb0FnUkJHMGNOQUNBRktBSUVRU2RIRFFBZ0FDMEFvd01OQWlBQUtBSUFLQUlBRUVkRkRRRWdCa0VRYWlJRFFkRWlFTkFFSUFOQjBpSVEwQVFnQTBIVEloRFFCQ0FEUWRRaUVOQUVEQUVMSUFaQjBBQnFJZ01nQnlBRktBSU1JQVVvQWdnUW5SY2dCa0VRYWlJRklBTkhCRUFnQlNBREtRTUFOd01BSUFWQkNHb2dBeWdDQ0NJREJIOUJEQkFWSUFNUXJRb0ZRUUFMRU5rT0N5QUdRZGdBYWhERkF3c0NRQ0FCTHdFZVFSRkdEUUFnQUNBR1FSQnFFTDRWSVFNQ1FDQUdLUU1RVUFSQUlBWW9BaGdpQlVVTkFpQURJQVVvQWdoRmNrVU5BUXdDQ3lBRERRRUxJQVpCMEFCcUlnTWdBRUZ6SUFFUUVDQURRYlBOQ2hBT0dpQURJQUlRSVJvZ0EwSEVzUW9RRGhvZ0F5QUJMd0VlRUlFQkVBNGFJQU5CMStzTEVBNGFJQVpCUUdzaUFDQUdRUkJxSUFjUThoVWdBeUFBRUJJYUlBWW9Bb3dDSVFrZ0FCQVBHaUFERUJFTUFRc2dCaWdDRENJREtBSmNJUWNnQXlnQ1dDSUlRWDlHSUFBb0FoUWlCU0FJU1hKRklBVWdCMDF4RFFBZ0JTQUhTd1JBSUFaQjBBQnFJZ1VnQUVGd0lBRVFFQ0FHUVVCcklnZ2dBaERQRFNBRklBZ1FFaG9nQlVIaXNBb1FEaG9nQlNBQkx3RWVFSUVCRUE0YUlBVkJxTTBLRUE0YUlBVWdBeENOQkNJQVFabi9DQkFPR2lBQUlBUVFJUm9nQUVHNWlnb1FEaG9nQUNBSFFSQjJRZjhCY1JBaEdpQUFRZnlYQ0JBT0dpQUFJQWRCQ0haQi93RnhFQ0VhSUFCQjBlc0JFQTRhSUFBb0Fyd0JJUWtnQ0JBUEdpQUZFQkVNQVFzZ0F5Z0NFQ0lGSUFoQmYwWnlSUVJBSUFaQjBBQnFJZ1VnQUVGd0lBRVFFQ0FHUVVCcklnY2dBaERQRFNBRklBY1FFaG9nQlVIaXNBb1FEaG9nQlNBQkx3RWVFSUVCRUE0YUlBVkJxTTBLRUE0YUlBVWdBeENOQkNJQVFabi9DQkFPR2lBQUlBUVFJUm9nQUVHNWlnb1FEaG9nQUNBSVFSQjJRZjhCY1JBaEdpQUFRZnlYQ0JBT0dpQUFJQWhCQ0haQi93RnhFQ0VhSUFCQmp1VUJFQTRhSUFBb0Fyd0JJUWtnQnhBUEdpQUZFQkVNQVFzZ0FDQUdRVUJySUFVZ0F5Z0NGQkRFQ0NJSEVNQU5SUVJBSUFaQjBBQnFJZ1VnQUVGeElBRVFFQ0FHUVRCcUlnZ2dBaERQRFNBRklBZ1FFaG9nQlVIaXNBb1FEaG9nQlNBQkx3RWVFSUVCRUE0YUlBVkJxTTBLRUE0YUlBVWdBeENOQkNJQVFabi9DQkFPR2lBQUlBUVFJUm9nQUVHVTZRc1FEaG9nQmtFZ2FpSUJJQWNRaFE0Z0FDQUJFQklhSUFBb0Fyd0JJUWtnQVJBUEdpQUlFQThhSUFVUUVRc2dCMEVJYWhERkF3c2dDaERGQXdzZ0JrR1FBbW9rQUNBSkM3OENBUWgvUVFFaEJRSkFBa0FDUUFKQUFrQUNRQ0FCSUFCclFRSjFEZ1lGQlFBQkFnTUVDeUFCUVFScklnRW9BZ0FpQXlnQ0FDQUFLQUlBSWdJb0FnQlBEUVFnQUNBRE5nSUFJQUVnQWpZQ0FFRUJEd3NnQUNBQVFRUnFJQUZCQkdzUW53Y2FRUUVQQ3lBQUlBQkJCR29nQUVFSWFpQUJRUVJyRU5FTkdrRUJEd3NnQUNBQVFRUnFJQUJCQ0dvZ0FFRU1haUFCUVFSckVOQU5Ha0VCRHdzZ0FDQUFRUVJxSUFCQkNHb2lCQkNmQnhvZ0FFRU1haUVDQTBBZ0FTQUNSZzBCSUFJaEF3SkFJQUlvQWdBaUNDZ0NBQ0lKSUFRb0FnQWlCeWdDQUVrRVFBTkFBa0FnQXlBSE5nSUFJQUFnQkNJRFJnUkFJQUFoQXd3QkN5QUpJQU5CQkdzaUJDZ0NBQ0lIS0FJQVNRMEJDd3NnQXlBSU5nSUFJQVpCQVdvaUJrRUlSZzBCQ3lBQ0lnUkJCR29oQWd3QkN3c2dBa0VFYWlBQlJpRUZDeUFGQzd3Q0FRdC9Ba0FnQVVFQ1NBMEFJQUZCQW10QkFYWWlDeUFDSUFCcklnTkJBblZJRFFBZ0FDQURRUUYxSWdOQkFXb2lCa0VDZEdvaUJDZ0NBQ0VGQW44Z0FTQURRUUpxSWdsTUJFQWdCU2dDQUF3QkN5QUVRUVJxSUFRZ0JTZ0NBQ0lESUFRb0FnUWlDaWdDQUNJSFNTSUlHeUVFSUFvZ0JTQUlHeUVGSUFrZ0JpQUlHeUVHSUFNZ0J5QURJQWRMR3dzaEF5QURJQUlvQWdBaUNTZ0NBQ0lLU1EwQUEwQUNRQ0FFSVFNZ0FpQUZOZ0lBSUFZZ0Mwb05BQ0FBSUFaQkFYUWlBa0VCY2lJR1FRSjBhaUlFS0FJQUlRVUNmeUFCSUFKQkFtb2lERXdFUUNBRktBSUFEQUVMSUFSQkJHb2dCQ0FGS0FJQUlnSWdCQ2dDQkNJTktBSUFJZ2RKSWdnYklRUWdEU0FGSUFnYklRVWdEQ0FHSUFnYklRWWdBaUFISUFJZ0Iwc2JDeUVISUFNaEFpQUhJQXBQRFFFTEN5QURJQWsyQWdBTEN3b0FJQUJCK0pzU0VFZ0xwd0VCQW44akFFSEFBV3NpQXlRQUFrQWdBaWdDQkNJRVFRUk5JQVJCQTBkeFJRUkFJQU1nQUVGeUlBRVFFQ0FEUWFQMEFCQU9HaUFES0FLOEFTRUNJQU1RRVF3QkN5QUNLQUlRQkVBZ0F5QUFRWElnQVJBUUlBTkI2WThIRUE0YUlBTW9BcndCSVFJZ0F4QVJEQUVMSUFJb0FneEZCRUJCQUNFQ0RBRUxJQU1nQUVGeUlBRVFFQ0FEUVltUEJ4QU9HaUFES0FLOEFTRUNJQU1RRVFzZ0EwSEFBV29rQUNBQ0M3UUJBUUovSXdCQjBBRnJJZ01rQUFKQUFrQWdBQ0FBSUFGQkJCQW1JZ1FRZHdSQUlBQWdCQkErUVNCR0RRRUxJQU5CRUdvaUFpQUFRWElnQVJBUUlBSkI5Zk1ERUE0YUlBTW9Bc3dCSVFRZ0FoQVJEQUVMUVFBaEJDQUFLQUlBS0FJQUVFZEZEUUFnQWlnQ0JFRUNSdzBBSUFOQkVHb2lBaUFBUVhJZ0FSQVFJQU1nQUVHcEpSQTNJQUlnQXhBU0dpQUNRWVA1QWhBT0dpQURLQUxNQVNFRUlBTVFEeG9nQWhBUkN5QURRZEFCYWlRQUlBUUxDZ0FnQUVIWWtSSVFTQXU0QWdFRGZ5TUFRY0FCYXlJREpBQUNRQUpBQWtBZ0FpZ0NGQ0lFRGdNQ0FRQUJDd0pBQWtBQ1FBSkFJQUlvQWdRaUJRNEdBQU1EQXdFQ0F3c2dBQzBBaFFGQkVIRU5BaUFESUFCQmNpQUJFQkFnQTBIc3hRUVFEaG9nQXlnQ3ZBRWhCQ0FERUJFTUJBc2dBQzBBaEFGQkVIRU5BU0FESUFCQmNpQUJFQkFnQTBINHhBUVFEaG9nQXlnQ3ZBRWhCQ0FERUJFTUF3c2dBQzBBaFFGQmdBRnhEUUFnQXlBQVFYSWdBUkFRSUFOQnNjVUVFQTRhSUFNb0Fyd0JJUVFnQXhBUkRBSUxRUUFoQkNBRlFRTkhEUUVnQWlnQ0RFRUJSdzBCSUFBdEFJUUJRUVJ4RFFFZ0F5QUFRWElnQVJBUUlBTkJ4dFFKRUE0YUlBTkJqc2NFRUE0YUlBTW9BcndCSVFRZ0F4QVJEQUVMSUFNZ0FFRnlJQUVRRUNBRFFkU0JCeEFPR2lBREtBSzhBU0VFSUFNUUVRc2dBMEhBQVdva0FDQUVDejRCQVg4Q1FDQUFRZGNBYXlJQlFRWk5RUUJCQVNBQmRFSFZBSEViRFFBZ0FFR3hBbXNpQUVFR1RVRUFRUUVnQUhSQjFRQnhHdzBBUVFBUEMwRUJDeXdBQTBBQ1FDQUFJQUZIQkg4Z0FFRVFhaUFDRUxFSVJRMEJJQUFGSUFFTER3c2dBQkJNSVFBTUFBc0FDd3NBSUFBZ0FTQUNFSndUQ3hnQUlBRkJ4WjJ4SjA4RVFCRDdBUUFMSUFGQk5Hd1FGUXNhQUNBQUlBRkI0czdZRTBFMFFjU2RzU2RCeFoyeEp4RFNEQXM3QVFKL1FRTWhBaUFBSVFNZ0FVRURUd1JBUVg4Z0FVRUNkQ0FCUWYvLy8vOERTeHNRRlNFRElBRWhBZ3NnQUNBRE5nSU1JQUFnQWpZQ0ZBdDFBUUYvSXdCQmtBRnJJZ01rQUNBRFFRQTJBb3dCQWtBQ1FDQUJRWUFEYWtFSklBSW9BZ0FvQWhBZ0EwR01BV29Rd1FoRkJFQWdBeWdDakFFTkFRc2dBRUcrTHhBVUdnd0JDeUFERU00QklnRWdBeWdDakFFb0FnQVFEaG9nQUNBQlFRUnFFRUlnQVJDN0FSb0xJQU5Ca0FGcUpBQUxUZ0VCZndKQUlBQWdBUkFnSWdCRkRRQWdBQzhCSGtFVlJ3MEFBa0FnQWdSQUlBQkJBUkFiSWdGQklFWWhCQ0FCUVNCSERRSU1BUXRCQVNFRUN5QURSUTBBSUFCQkFoQWJSU0VFQ3lBRUN3NEFJQUFnQVJBZ0tBSUFLQUlNQzZnREFRTi9Ba0FDUUFKQUFrQWdBZzREQXdJQkFBc2dBa0VJVEFSQUlBQWdBVVlOQXlBRElnSWhCQU5BSUFRaEJTQUNJQUFpQmlrQ0FEY0NBQ0FBUVFocUlnQWdBVVlOQkNBRlFRaHFJUVFnQkNFQ0lBWW9BZ3dnQlNnQ0JFOE5BQU5BSUFJZ0JTSUNLUUlBTndJQUlBSWdBMFlFUUNBRElRSU1BZ3NnQmlnQ0RDQUNRUVJyS0FJQVR3MEJJQUpCQ0dzaEJRd0FDd0FMQUFzZ0FDQUFJQUpCQVhZaUJrRURkQ0lGYWlJRUlBWWdBeUFHRUxBSUlBUWdBU0FDSUFacklnSWdBeUFGYWlBQ0VMQUlJQVFoQWdOQUlBQWdCRVlFUUFOQUlBRWdBa1lOQlNBRElBSXBBZ0EzQWdBZ0EwRUlhaUVESUFKQkNHb2hBZ3dBQ3dBTElBRWdBa1lFUUFOQUlBQWdCRVlOQlNBRElBQXBBZ0EzQWdBZ0EwRUlhaUVESUFCQkNHb2hBQXdBQ3dBRkFrQWdBaWdDQkNBQUtBSUVTUVJBSUFNZ0Fpa0NBRGNDQUNBQ1FRaHFJUUlNQVFzZ0F5QUFLUUlBTndJQUlBQkJDR29oQUFzZ0EwRUlhaUVEREFFTEFBc0FDeUFESUFGQkNHc2lBaUFBSUFJb0FnUWdBQ2dDQkVraUFSc3BBZ0EzQWdBZ0FDQUNJQUViSVFBZ0EwRUlhaUVEQ3lBRElBQXBBZ0EzQWdBTEN6WUJBWDhnQVVFQVNBUkFFQUVBQ3lBQlFRRnJRUVYyUVFGcUlnRVFsd01oQWlBQUlBRTJBZ2dnQUVFQU5nSUVJQUFnQWpZQ0FBczVBUUovSUFBb0FnZ2hBU0FBS0FJRUlRSURRQ0FCSUFKSEJFQWdBQ0FCUVFocklnRTJBZ2dNQVFzTElBQW9BZ0FpQUFSQUlBQVFId3NMWHdFQmZ5QUFRUUEyQWd3Z0FDQUROZ0lRQWtBZ0FRUkFJQUZCZ0lDQWdBSlBEUUVnQVVFRGRCQVZJUVFMSUFBZ0JEWUNBQ0FBSUFRZ0FrRURkR29pQWpZQ0NDQUFJQVFnQVVFRGRHbzJBZ3dnQUNBQ05nSUVJQUFQQ3hEN0FRQUx3UllDRG44Q2ZpTUFRZEFBYXlJSUpBQUNRQ0FCSUFBb0FnUWlCRXNFUUFKQUlBQW9BZ2hCQlhRaUF5QUJJQVJySWhCSklBUWdBeUFRYTB0eVJRUkFJQUFnQVRZQ0JDQUVRUjl4SVFFZ0FDZ0NBQ0FFUVFOMlFmei8vLzhCY1dvaEJBd0JDeUFJUVFBMkFrZ2dDRUlBTndOQUlBaEJRR3NoRFFKL0lBRkJBRTRFUUNBQUtBSUlJZ1JCQlhSQi92Ly8vd05OQkg4Z0JFRUdkQ0lFSUFGQkgycEJZSEVpQVNBQklBUkpHd1ZCLy8vLy93Y0xEQUVMRUFFQUN5RUJJd0JCSUdzaUJ5UUFBa0FDUUNBQklBMG9BZ2hCQlhSTEJFQWdBVUVBU0EwQklBZEJBRFlDR0NBSFFnQTNBeEFnQjBFUWFpSUxJQUVRaFJZZ0RTZ0NBQ0VCSUFkQkFEWUNEQ0FISUFFMkFnZ2dCeUFOS0FJRUlnUkJIM0UyQWdRZ0J5QUJJQVJCQTNaQi9QLy8vd0Z4YWpZQ0FDTUFRU0JySWdFa0FDQUxJQWNvQWdRaUJTQUxLQUlFSWdRZ0J5Z0NEQ0lHYTJvZ0J5Z0NBQ0lKSUFjb0FnZ2lDbXRCQTNScUlnTTJBZ1FnQkVFQUlBTkJBV3NnQkVFQmEzTkJJRWtiUlFSQUlBc29BZ0FnQTBFQmEwRUZka0VBSUFOQklVOGJRUUowYWtFQU5nSUFDeUFCSUFZMkFod2dBU0FLTmdJWUlBRWdCVFlDRkNBQklBazJBaEFnQ3lnQ0FDRURJQUVnQkVFZmNUWUNEQ0FCSUFNZ0JFRURka0g4Ly8vL0FYRnFOZ0lJSXdCQk1Hc2lBeVFBSUFFb0FoZ2hCUUpBSUFFb0Fod2lCQ0FCS0FJTUlnWkdCRUFnQXlBRU5nSXNJQU1nQlRZQ0tDQURJQUVvQWhBMkFpQWdBeUFCS0FJVU5nSWtJQUVvQWdnaEJTQURJQVEyQWh3Z0F5QUZOZ0lZQWtBZ0F5Z0NKQ0FES0FJc0lnVnJJQU1vQWlBZ0F5Z0NLQ0lHYTBFRGRHb2lCRUVBVEFSQUlBTW9BaGdoQlF3QkN5QUZCRUFnQXlnQ0dDSUpJQWtvQWdCQmZ5QUZkRUYvUVNBZ0JXc2lCU0FFSUFVZ0JDQUZTQnNpQld0MmNTSUtRWDl6Y1NBR0tBSUFJQXB4Y2pZQ0FDQURJQU1vQWh3Z0JXb2lCa0VmY1RZQ0hDQURJQWtnQmtFRGRrSDgvLy8vQVhGcU5nSVlJQU1nQXlnQ0tFRUVhaUlHTmdJb0lBUWdCV3NoQkFzZ0F5Z0NHQ0FHSUFSQklHMGlDVUVDZENJR0VPY0JHaUFESUFNb0FoZ2dCbW9pQlRZQ0dDQUVJQWxCQlhScklnUkJBRXdOQUNBRElBTW9BaWdnQm1vaUJqWUNLQ0FES0FJWUlnVWdCU2dDQUVGL1FTQWdCR3QySWdsQmYzTnhJQVlvQWdBZ0NYRnlOZ0lBSUFNZ0JEWUNIQXNnQVNBRk5nSUFJQUVnQXlnQ0hEWUNCQXdCQ3lBRElBUTJBaFFnQXlBRk5nSVFJQU1nQVNnQ0VEWUNDQ0FESUFFb0FoUTJBZ3dnQVNnQ0NDRUVJQU1nQmpZQ0JDQURJQVEyQWdBQ1FDQURLQUlNSUFNb0FoUWlCR3NnQXlnQ0NDQURLQUlRSWdWclFRTjBhaUlHUVFCTUJFQWdBeWdDQkNFRURBRUxBa0FnQkVVRVFDQURLQUlFSVFRTUFRc2dBeWdDQUNJUElBOG9BZ0JCZjBFZ0lBTW9BZ1FpQ1dzaURDQU1JQVpCSUNBRWF5SU9JQVlnRGtnYklnb2dDaUFNU3hzaURHdDJRWDhnQ1hSeFFYOXpjU0FGS0FJQVFYOGdCSFJCZnlBT0lBcHJkbkZ4SWc0Z0NTQUVhM1FnRGlBRUlBbHJkaUFFSUFsSkczSTJBZ0FnQXlBSklBeHFJZ1ZCSDNFaUJEWUNCQ0FESUE4Z0JVRURka0g4Ly8vL0FYRnFJZ2syQWdBZ0NpQU1heUlGUVFCS0JFQWdDU0FKS0FJQVFYOUJJQ0FGYTNaQmYzTnhJQTRnQXlnQ0ZDQU1hblp5TmdJQUlBTWdCVFlDQkNBRklRUUxJQVlnQ21zaEJpQURJQU1vQWhCQkJHb2lCVFlDRUF0QklDQUVheUVKUVg4Z0JIUWlERUYvY3lFUEEwQWdCa0VnVGdSQUlBTW9BZ0FpQ2lBS0tBSUFJQTl4SUFVb0FnQWlCU0FFZEhJMkFnQWdBeUFLUVFScU5nSUFJQW9nQ2lnQ0JDQU1jU0FGSUFsMmNqWUNCQ0FESUFNb0FoQkJCR29pQlRZQ0VDQUdRU0JySVFZTUFRc0xJQVpCQUV3TkFDQURLQUlBSWdvZ0NpZ0NBRUYvSUFrZ0NTQUdJQVlnQ1VvYklnbHJkaUFNY1VGL2MzRWdCU2dDQUVGL1FTQWdCbXQyY1NJTUlBUjBjallDQUNBRElBUWdDV29pQlVFZmNTSUVOZ0lFSUFNZ0NpQUZRUU4yUWZ6Ly8vOEJjV29pQ2pZQ0FDQUdJQWxySWdWQkFFd05BQ0FLSUFvb0FnQkJmMEVnSUFWcmRrRi9jM0VnRENBSmRuSTJBZ0FnQXlBRk5nSUVJQVVoQkFzZ0F5Z0NBQ0VGSUFFZ0JEWUNCQ0FCSUFVMkFnQUxJQU5CTUdva0FDQUJRU0JxSkFBZ0RTZ0NBQ0VCSUEwZ0J5Z0NFRFlDQUNBSElBRTJBaEFnRFNnQ0JDRUJJQTBnQnlnQ0ZEWUNCQ0FISUFFMkFoUWdEU2dDQ0NFQklBMGdCeWdDR0RZQ0NDQUhJQUUyQWhnZ0N4QzBDZ3NnQjBFZ2FpUUFEQUVMRUFFQUN5QUlJQUFvQWdRaUFTQVFhallDUkNBQUtBSUFJUVFnQ0VFQU5nSTBJQWdnQkRZQ01DQUlJQUZCSDNFMkFpd2dDQ0FFSUFGQkEzWkIvUC8vL3dGeGFqWUNLQ0FJUVFBMkFpUWdDQ0FJS0FKQU5nSWdJQWdnQ0NrRE1EY0RFQ0FJSUFncEF5ZzNBd2dqQUVIUUFHc2lBeVFBSUFncEFoQWhFUUpBSUFnb0FoUWlBU0FJS0FJa0lnUkdCRUFnQXlBUk53TklJQU1nQ0NrQ0NDSVNOd05BSUFnb0FpQWhCQ0FESUFFMkFqd2dBeUFFTmdJNElBTWdFVGNEQ0NBRElCSTNBd0FDUUNBREtBSUVJQU1vQWd3aUFXc2dBeWdDQUNBREtBSUlJZ1ZyUVFOMGFpSUVRUUJNQkVBZ0F5Z0NPQ0VCREFFTEFrQWdBVVVFUUNBREtBSTRJUUVNQVFzZ0F5Z0NPQ0lISUFjb0FnQkJmeUFCZEVGL1FTQWdBV3NpQVNBRUlBRWdBU0FFU2hzaUJtdDJjU0lCUVg5emNTQUZLQUlBSUFGeGNqWUNBQ0FESUFNb0Fqd2dCbW9pQVVFZmNUWUNQQ0FESUFjZ0FVRURka0g4Ly8vL0FYRnFJZ0UyQWpnZ0JDQUdheUVFSUFWQkJHb2hCUXNnQVNBRklBUkJJRzBpQmtFQ2RDSUhFT2NCR2lBRElBTW9BamdnQjJvaUFUWUNPQ0FFSUFaQkJYUnJJZ1JCQUV3TkFDQUJJQUVvQWdCQmYwRWdJQVJyZGlJR1FYOXpjU0FGSUFkcUtBSUFJQVp4Y2pZQ0FDQURJQVEyQWp3TElBZ2dBVFlDT0NBSUlBTW9BancyQWp3TUFRc2dBeUFSTndNd0lBTWdDQ2tDQ0NJU053TW9JQWdvQWlBaEFTQURJQVEyQWlRZ0F5QUJOZ0lnSUFNZ0VUY0RHQ0FESUJJM0F4QUNRQ0FES0FJVUlBTW9BaHdpQkdzZ0F5Z0NFQ0FES0FJWUlnVnJRUU4wYWlJQlFRQk1CRUFnQXlnQ0pDRUVEQUVMUVNBQ2Z5QUVSUVJBSUFNb0FpUU1BUXNnQXlnQ0lDSUpJQWtvQWdCQmYwRWdJQU1vQWlRaUIyc2lDeUFMSUFGQklDQUVheUlLSUFFZ0NrZ2JJZ1lnQmlBTFN4c2lDMnQyUVg4Z0IzUnhRWDl6Y1NBRktBSUFRWDhnQkhSQmZ5QUtJQVpyZG5GeElnb2dCeUFFYTNRZ0NpQUVJQWRyZGlBRUlBZEpHM0kyQWdBZ0F5QUhJQXRxSWdkQkgzRWlERFlDSkNBRElBa2dCMEVEZGtIOC8vLy9BWEZxSWdrMkFpQWdBU0FHYXlFQklBVkJCR29oQlNBR0lBdHJJZ2RCQUVvRWZ5QUpJQWtvQWdCQmYwRWdJQWRyZGtGL2MzRWdDaUFFSUF0cWRuSTJBZ0FnQXlBSE5nSWtJQWNGSUF3TEN5SUVheUVIUVg4Z0JIUWlDMEYvY3lFSkEwQWdBVUVnVGdSQUlBTW9BaUFpQmlBR0tBSUFJQWx4SUFVb0FnQWlDaUFFZEhJMkFnQWdBeUFHUVFScU5nSWdJQVlnQmlnQ0JDQUxjU0FLSUFkMmNqWUNCQ0FGUVFScUlRVWdBVUVnYXlFQkRBRUxDeUFCUVFCTURRQWdBeWdDSUNJR0lBWW9BZ0FnQzBGL0lBY2dCeUFCSUFFZ0Iwb2JJZ2RyZG5GQmYzTnhJQVVvQWdCQmYwRWdJQUZyZG5FaUN5QUVkSEkyQWdBZ0F5QUVJQWRxSWdWQkgzRWlCRFlDSkNBRElBWWdCVUVEZGtIOC8vLy9BWEZxSWdVMkFpQWdBU0FIYXlJQlFRQk1EUUFnQlNBRktBSUFRWDlCSUNBQmEzWkJmM054SUFzZ0IzWnlOZ0lBSUFNZ0FUWUNKQ0FCSVFRTElBTW9BaUFoQVNBSUlBUTJBandnQ0NBQk5nSTRDeUFEUWRBQWFpUUFJQWdvQWp3aEFTQUlLQUk0SVFRZ0FDZ0NBQ0VESUFBZ0NDZ0NRRFlDQUNBSUlBTTJBa0FnQUNnQ0JDRURJQUFnQ0NnQ1JEWUNCQ0FJSUFNMkFrUWdBQ2dDQ0NFRElBQWdDQ2dDU0RZQ0NDQUlJQU0yQWtnZ0RSQzBDZ3NnQ0NBQk5nSWNJQWdnQkRZQ0dDQUlRUmhxSUJBZ0FoRGJEUXdCQ3lBQUlBRTJBZ1FMSUFoQjBBQnFKQUFMRFFBZ0FCQ3ZBU0FBTFFEUUFndDlBUU4vSXdCQklHc2lBeVFBSUFCQkFEWUNDQ0FBUWdBM0FnQWdBMEVRYWlBQklBSVF5UVVnQXlnQ0ZDRUVJQU1vQWhBaEFRTkFJQUVnQkVjRVFDQURJQUVvQWdBaUJUWUNEQ0FDSUFVUUlDOEJIa0VlUmdSQUlBQWdBMEVNYWhEZUFnc2dBVUVFYWlFQkRBRUxDeUFEUVJCcUVESWFJQU5CSUdva0FBdkVBd0VFZnlNQVFUQnJJZ0lrQUNBQklBQVFJQ0VESUFKQkFEWUNLQ0FDUWdBM0F5QWdBa0VBTmdJWUlBSkNBRGNERUFKQUFrQUNRQUpBQWtBZ0F5OEJIa0VjYXc0REFRRUFBZ3NnQWlBQUlBRVF5UVVnQWtFUWFpQUNFTzBGSUFJUU1ob2dBa0VnYWlBQ0tBSVVJQUlvQWhCclFRSjFRUUFRaUJZZ0FTQUFFTjRCSWdCQkJHb2hCQ0FBS0FJQUlRQURRQ0FBSUFSR0RRSUNRQ0FBS0FJUVFTTkhEUUFnQUNnQ0lDSURRWDlHRFFBZ0FDZ0NGQ2dDQUVGL1JnMEVJQUlvQWlBZ0EwRURka0g4Ly8vL0FYRnFJZ1VnQlNnQ0FFRUJJQU4wY2pZQ0FBc2dBQkJNSVFBTUFBc0FDeUFDUVNCcVFRRkJBUkNJRmlBQ0lBTkJBUkFiTmdJQUlBSkJFR29nQWhEZkFnc2dBaWdDRkNFRElBSW9BaEFoQUFOQUlBQWdBMGNFUUNBQUtBSUFJUVFnQUVFRWFpRUFJQVFnQVJDTEZrVU5BUXdDQ3dzZ0FpZ0NKQ0lBUVI5eElRUWdBaWdDSUNJRElBQkJBM1pCL1AvLy93RnhhaUVGUVFBaEFBTkFJQU1nQlVjZ0FDQUVSM0lpQVVVTkFpQURLQUlBSUFCMlFRRnhSUTBDUVFBZ0FFRUJhaUFBUVI5R0lnRWJJUUFnQXlBQlFRSjBhaUVEREFBTEFBdEJBU0VCQ3lBQ1FSQnFFRElhSUFKQklHb1F0QW9nQWtFd2FpUUFJQUVMN1FNQkNYOGdBUkN2QVNBQlFRRTZBTkVDSUFCQkFEb0EwUUlnQUNBQktBSUFOZ0lBSUFBZ0FTZ0NCRFlDQkNBQVFRaHFJQUZCQ0dvUTN3OGdBRUdFQVdvZ0FVR0VBV29ReWdVZ0FFR2dBV29nQVVHZ0FXb1F5Z1VnQUVHOEFXb2dBVUc4QVdvUXlnVWdBQ0FCS0FMWUFUWUMyQUVnQUVIY0FXb2dBVUhjQVdvUSt3OGdBRUdBQW1vZ0FVR0FBbW9RNmhzakFFRVFheUlGSkFBZ0JTQUFRY0FDYWpZQ0RDQUZJQUZCd0FKcU5nSUlJQVVvQWd3aUNTRUNJQVVvQWdnaEF5TUFRUkJySWdZa0FDQUdJQUkyQWd3Z0JpQUROZ0lJSUFZb0Fnd2hBeUFHS0FJSUlRUWpBRUVRYXlJQ0pBQWdBaUFETmdJRUlBSWdCRFlDQUNBQ0tBSUVJZ2NRb3hnZ0FpZ0NBQ0VFSXdCQkVHc2lBeVFBSUFNZ0J6WUNEQ0FESUFRMkFnZ2dBeWdDRENFSUlBTW9BZ2doQ2lNQVFSQnJJZ1FrQUNBRUlBZzJBZ1FnQkNBS05nSUFJQVFvQWdRaENDQUVLQUlBRUxjQkdpQUlFTGNCR2lBRVFSQnFKQUFnQTBFUWFpUUFJQWNnQWlnQ0FDZ0NBRFlDQUNBSElBSW9BZ0FvQWdRMkFnUWdBaWdDQUJDM0FTZ0NBQ0VESUFjUXR3RWdBellDQUNBQ0tBSUFFTGNCUVFBMkFnQWdBaWdDQUVFQU5nSUVJQUlvQWdCQkFEWUNBQ0FDUVJCcUpBQWdCa0VRYWlRQUlBa2dCU2dDQ0NnQ0REWUNEQ0FGUVJCcUpBQWdBQ0FCTFFEUUFqb0EwQUlMdFFFQkEzOGpBRUhRQVdzaUJDUUFJQUVnQUJEZUFTSUNRUVJxSVFNZ0FpZ0NBQ0VDQTBBQ1FBSkFJQUlnQTBZRVFFRUFJUUlNQVFzZ0FTZ0NBQ2dDQUJCSFJRMEJJQUlvQWhCQmZuRkJIa2NOQVNBRVFSQnFJZ01nQVVGMklBRWdBQkFnRUJBZ0JDQUJRYk1tRURjZ0F5QUVFQklhSUFOQjRzOEtFQTRhSUFNZ0FCQWhHaUFEUVpPZkFSQU9HaUFFS0FMTUFTRUNJQVFRRHhvZ0F4QVJDeUFFUWRBQmFpUUFJQUlQQ3lBQ0VFd2hBZ3dBQ3dBTFh3RUJmeUFCSUFBUTNnRWlBRUVFYWlFQklBQW9BZ0FoQUFOQUFrQWdBQ0FCUmcwQUFrQWdBQ2dDRUVFcFJ3MEFJQUFvQWhnaUFpQUFLQUlVYTBFRlNRMEFJQUpCQkdzb0FnQkJBVVlOQVFzZ0FCQk1JUUFNQVFzTElBQWdBVWNMaGdnQkNIOGpBRUhRQVdzaUJDUUFBa0FDUUNBQkx3RWVJZ1pCMFFCclFRSkpCRUFnQVNnQ0JDQUJLQUlBSWdoclFRSjFJZ05CQkVFRklBWkIwUUJHR3lJRlJnUkFJQVJCRUdvaUFpQUFRWElnQVJBUUlBSkIycmtDRUE0YUlBSWdBUzhCSGhDQkFSQU9HaUFDUVpqbUJCQU9HaUFFS0FMTUFTRUZJQUlRRVF3REN5QURJQVZySWdkQmdBSlBCRUFnQkVFUWFpSUNJQUJCY2lBQkVCQWdBa0dUdWdJUURob2dBaUFHRUlFQkVBNGFJQUpCN3QwS0VBNGFJQUpCL3dFUUlSb2dBa0hzeWdvUURob2dBaUFIRUNFYUlBSkJzYklIRUE0YUlBUW9Bc3dCSVFVZ0FoQVJEQU1MSUFJZ0FDQUlJQVZCQVd0QkFuUnFLQUlBRU0wQ0lnWTJBZ0FnQmtVTkFTQUZJQU1nQXlBRlNSc2hDQU5BSUFVZ0NFWUVRRUVBSVFVTUJBc2dBU2dDQUNBRlFRSjBhaWdDQUNFR0FrQUNRQUpBSUFBZ0FpZ0NBQkFnSWdNRVFBSkFBa0FDUUFKQUFrQUNRQUpBSUFNdkFSNGlCMEVYYXc0SUFBRUZCUVVDQmdNRUN5QUNJQU1vQWdBaUF5Z0NDRFlDQUNBR0lBTW9BZ3dpQTBrTkNTQUVRUkJxSWdJZ0FFRnlJQUVRRUNBQ1FZTGZDUkFPR2lBQ0lBTVFJUm9nQWtHeTJ3a1FEaG9nQWlBR0VDRWFJQVFvQXN3QklRVWdBaEFSREEwTElBSWdBeWdDQUNJREtBSUlOZ0lBSUFZZ0F5Z0NEQ0lEU1EwSUlBUkJFR29pQWlBQVFYSWdBUkFRSUFKQm9PSUpFQTRhSUFJZ0F4QWhHaUFDUWFyYkNSQU9HaUFDSUFZUUlSb2dCQ2dDekFFaEJTQUNFQkVNREFzZ0JFSUFOd01JSUFBZ0F5Z0NBQ2dDREJBZ0lRY2dBaUFES0FJQUtBSUlOZ0lBSUFjdkFSNFF2d2dOQnlBQUlBTW9BZ0FvQWd3Z0JFRUlhaEREQlVVTkJTQUVLUU1JSUFhdFZnMEhJQVJCRUdvaUFpQUFRWElnQVJBUUlBSkIxTjRKRUE0YUlBSWdCQ2tEQ0JEREJCb2dBa0d5MndrUURob2dBaUFHRUNFYUlBUW9Bc3dCSVFVZ0FoQVJEQXNMSUFNb0FnUWdBeWdDQUNJSGEwRUNkU0lKUVFKcklnb2dCa3NFUUNBQ0lBWkJBblFnQjJvb0FnZzJBZ0FNQndzZ0JFRVFhaUlDSUFCQmNpQUJFQkFnQWtIend3a1FEaG9nQWlBR0VDRWFJQUpCKzVrSkVBNGFJQUlnQXlnQ0tCQWhHaUFDUWUzakNSQU9HaUFDSUFvUUlSb2dBa0hKMndrUURob2dBaUFKUVFOckVDRWFJQUpCL0pjSUVBNGFJQVFvQXN3QklRVWdBaEFSREFvTElBZEI3aWxHRFFRTElBUkJFR29pQWlBQVFYSWdBUkFRSUFKQjJvRUlFQTRhSUFRb0Fzd0JJUVVnQWhBUkRBZ0xJQUlnQXlnQ0FDZ0NDRFlDQUF3REMwR2JMMEdFbndKQnhBQkJpNWNFRUFBQUMwR3NuUWxCaEo4Q1FlUUFRWXVYQkJBQUFBc2dBaUFES0FJQUtBSUlOZ0lBQ3lBRlFRRnFJUVVNQUFzQUMwR1lORUdFbndKQktFR0xsd1FRQUFBTElBUkJFR29pQWlBQVFYSWdBUkFRSUFKQmxvMEVFQTRhSUFRb0Fzd0JJUVVnQWhBUkN5QUVRZEFCYWlRQUlBVUxpQU1CQjM4akFFRVFheUlGSkFCQkFTRUhBa0FDUUFKQUFrQUNRQUpBSUFFZ0FHdEJBM1VPQmdVRkFBRUNBd1FMSUFJZ0FVRUlheUlESUFBUTFBRkZEUVFnQUNnQ0FDRUNJQUFnQXlnQ0FEWUNBQ0FESUFJMkFnQWdBQ2dDQkNFQ0lBQWdBVUVFYXlJQUtBSUFOZ0lFSUFBZ0FqWUNBQXdFQ3lBQUlBQkJDR29nQVVFSWF5QUNFS2NIR2d3REN5QUFJQUJCQ0dvZ0FFRVFhaUFCUVFocklBSVE0ZzBhREFJTElBQWdBRUVJYWlBQVFSQnFJQUJCR0dvZ0FVRUlheUFDRU9FTkdnd0JDeUFBSUFCQkNHb2dBRUVRYWlJR0lBSVFwd2NhSUFCQkdHb2hCQU5BSUFFZ0JFWU5BUUpBSUFJZ0JDQUdFTlFCQkVBZ0JTQUVLUUlBTndNSUlBUWhDQU5BQWtBZ0NDQUdJZ01vQWdBMkFnQWdDQ0FES0FJRU5nSUVJQUFnQTBZRVFDQUFJUU1NQVFzZ0F5RUlJQUlnQlVFSWFpQURRUWhySWdZUTFBRU5BUXNMSUFNZ0JTZ0NDRFlDQUNBRElBVW9BZ3cyQWdRZ0NVRUJhaUlKUVFoR0RRRUxJQVFpQmtFSWFpRUVEQUVMQ3lBRVFRaHFJQUZHSVFjTElBVkJFR29rQUNBSEMyc0JBbjhqQUVFZ2F5SURKQUFnQTBFSWFpQUFJQUFvQWdRZ0FDZ0NBR3RCQTNWQkFXb1FtZzRnQUNnQ0JDQUFLQUlBYTBFRGRTQUFRUWhxRU5BS0lnSW9BZ2dnQVNrQ0FEY0NBQ0FDSUFJb0FnaEJDR28yQWdnZ0FDQUNFS01FSUFJUTVBMGdBMEVnYWlRQUM2a0ZBUVovSXdCQlFHb2lCaVFBQWtBQ1FBSkFJQUVvQWhBRVFDQUNLQUlRUlEwQklBTW9BaEJGRFFJZ0JTZ0NFRVVOQXlBR1FnQTNBekFnQmtJQU53TW9JQVpCZ0lDQS9BTTJBamdnQmtFQU5nSWdJQVpDQURjREdDTUFRU0JySWdna0FDQUdRUmhxSWdjb0FnZ2dCeWdDQUNJSmEwRURkVUVLU1FSQUlBY2dDRUVJYWtFS0lBY29BZ1FnQ1d0QkEzVWdCMEVJYWhEUUNpSUpFS01FSUFrUTVBMExJQWhCSUdva0FDQUdJQUEyQWhBZ0JpQUJJQUFRaWdJb0FnQTJBaFFnQnlBR1FSQnFJZ2NRNmcwZ0FpQUFFTUVHSUFZZ0FDZ0NBRFlDRENBSElBWkJLR29nQmtFTWFoQ1dBUU5BSUFZb0Fod2lBQ0FHS0FJWVJ3UkFBa0FnQlNBQVFRaHJJZ2tvQWdBUWlnSkZCRUFnQVNBSktBSUFFSW9DSVFjZ0FFRUVheUlLS0FJQUlnQWdCeWdDQkVjTkFRc2dBeUFKS0FJQUVNRUdJQVlnQmlnQ0hFRUlhellDSEF3Q0N5QUFLQUlBSVFnZ0NpQUFRUVJxTmdJQUFrQWdCQ2dDRUVVTkFDQUlLQUlBSVFzZ0JpZ0NIQ0VLSUFZb0FoZ2hCd05BSUFvZ0J5SUFSd1JBSUFCQkNHb2hCeUFBS0FJQUtBSUFJQXRIRFFFTEN5QUFJQXBHRFFBZ0JDQUpLQUlBSUFnUTR4Y0xJQVlnQ0NnQ0FEWUNFQ0FHUVNocUlBWkJFR29RcVFJTkFTQUNJQWdRd1FZZ0JpQUlOZ0lRSUFZZ0FTQUlFSW9DS0FJQU5nSVVJQVpCRUdvaEJ3SkFJQVpCR0dvaUFDZ0NCQ0lKSUFBb0FnaEpCRUFnQ1NBSEtRSUFOd0lBSUFBZ0NVRUlhallDQkF3QkN5QUFJQWNRa1JZZ0FDZ0NCQm9MSUFZZ0NDZ0NBRFlDRENBSElBWkJLR29nQmtFTWFoQ1dBUXdCQ3dzZ0JrRVlhaEF5R2lBR1FTaHFFRThnQmtGQWF5UUFEd3RCd2EwSlFjZTJBMEcwQVVHSmxnTVFBQUFMUWJTdUNVSEh0Z05CdFFGQmlaWURFQUFBQzBIOXJRbEJ4N1lEUWJZQlFZbVdBeEFBQUF0QjZhNEpRY2UyQTBHM0FVR0psZ01RQUFBTDhBRUJCSDhqQUVFZ2F5SURKQUFnQXlBQk5nSVFJd0JCRUdzaUFpUUFJQU1nQUNBQ1FReHFJQUVRclFZaUJDZ0NBQ0lCQkg5QkFBVkJLQkFWSVFFZ0FpQUFRUVJxTmdJRUlBSWdBVFlDQUNBREtBSVFLQUlBSVFVZ0FVSUFOd0lVSUFFZ0JUWUNFQ0FCUWdBM0Fod2dBVUdBZ0lEOEF6WUNKQ0FDUVFFNkFBZ2dBQ0FDS0FJTUlBUWdBaWdDQUJENEFpQUNLQUlBSVFFZ0FrRUFOZ0lBSUFJb0FnQWhBQ0FDUVFBMkFnQWdBQVJBSUFJdEFBZ0VRQ0FBUVJScUVFOExJQUFFUUNBQUVCOExDMEVCQ3pvQUhDQURJQUUyQWhnZ0FrRVFhaVFBSUFNb0FoZ2hBQ0FEUVNCcUpBQWdBRUVVYWdzbUFDQUFJQUVvQWdBMkFnQWdBRUVFYWlBQlFRUnFFTEFCR2lBQUlBRXBBaEEzQWhBZ0FBdHlBUU4vSXdCQjBBRnJJZ0lrQUNBQUVNc0JJQUZCQXhEVEZRUkFJQUpCRUdvaUF5QUFRWFVnQUNBQUVNc0JLQUlBRUNBUUVDQURRYUNqQ2hBT0dpQUNJQUFnQVJBcUlBTWdBaEFTR2lBRFFmLzVBUkFPR2lBQ0tBTE1BU0VFSUFJUUR4b2dBeEFSQ3lBQ1FkQUJhaVFBSUFRTEpnRUJmeUFBTFFDQkFVRWdjVVVnQVVFdlMzSkZRb0NBd1lDQWdEWWdBYTJJcDBFQmNYRUxLZ0FDZjBFQklBQWdBUkNZRmcwQUdrRUFJQUJCSmtzTkFCcENnSUM0Z0lBSUlBQ3RpS2RCQVhFTEN6MEJBWDlCQVNFQ0FrQUNRQUpBQWtBZ0FFRUVhdzRJQWdJQ0FnSUJBUU1BQ3lBQVFSWkdJQUJCSjBaeURRRUxRUUFoQWdzZ0FnOExJQUZCQVhNTE5nRUJmd0pBSUFBUW14WU5BQ0FBUVQxclFRaEpJQUJCeXlKcklnRkJEMDFCQUVFQklBRjBRY0d2QTNFYmNnMEFRUUFQQzBFQkN4SUFJQUFRbkJZZ0FFSFZJbXRCZlhGRmNnc1hBRUtNdklEZS85SEorUU1nQUsySXB5QUFRVHBKY1FzV0FFS0RnSUNBZ0tDMkJpQUFyWWluSUFCQk5FbHhDNVlCQVFOL0l3QkJFR3NpQkNRQUl3QkJJR3NpQXlRQUlBUWdBQ0FCSUFOQkhHb2dBMEVZYWlBQ0VKSU9JZ1VvQWdBaUFRUi9RUUFGUVJRUUZTRUJJQU1nQUVFRWFqWUNEQ0FCSUFJb0FnQTJBaEFnQTBFQk9nQVFJQUFnQXlnQ0hDQUZJQUVRK0FJZ0EwRUFOZ0lJSUFOQkNHb1Fpd0ZCQVFzNkFBd2dCQ0FCTmdJSUlBTkJJR29rQUNBRUtBSUlHaUFFUVJCcUpBQUxDd0FnQUVHZy9oOFE3UUlMQ3dBZ0FFSDgvUjhRN1FJTHFHSURGbjhDZlFGK0l3QkJrQU5ySWd3a0FDQU1RUUEyQW9nRElBeENBRGNEZ0FNQ1FDQU1RWUFEYWlJRUtBSUVJQVFvQWdBaUEydEJBblVpQWlBQlFRSjJJZ1ZKQkVBakFFRWdheUlESkFBQ1FDQUZJQUpySWdVZ0JDZ0NDQ0FFS0FJRUlnSnJRUUoxVFFSQUlBUWdCUkNFSGd3QkN5QURRUWhxSUFRZ0FpQUVLQUlBYTBFQ2RTQUZhaENqQ1NBRUtBSUVJQVFvQWdCclFRSjFJQVJCQ0dvUXB3SWlBaUFGRU8wY0lBUWdBaENqQkNBQ0VKb0RDeUFEUVNCcUpBQU1BUXNnQWlBRlN3UkFJQVFnQXlBRlFRSjBhallDQkFzTElBd29Bb0FESUFBZ0FSQjlHaUFNUVFBNkFBQWdERUVvYWlFS0l3QkI4SmNCYXlJQ0pBQWpBRUVnYXlJTEpBQWdBa0hnaVFGcUlnVkIxTW9TTmdJQUlBVkJCR29RSFJvZ0JVRzQ0QkkyQWdBZ0JVRVVhaUFFRUxBQkdpQUZRU0JxRUlVRkdpTUFRUkJySWdFa0FDQUZRWkFEYWlJRVFRQTJBZ0JCb0FVUUZVRUFRYUFGRUhraUFFSUFOd0lZSUFCQ2dJQUVOd0lJSUFCQ0FEY0NBQ0FBUW9DQWdJQ0FCRGNDRUNBQVFnQTNBaUFnQUVJQU53SW9JQUJDQURjQ01DQUFRZ0EzQWtnZ0FFRkFhMEtBZ0lDQWdBUTNBZ0FnQUVLQWdBUTNBamdnQUVJQU53SlFJQUJCQURZQ1dDQUFRU0EyQW5RZ0FFS0FnSUQ4QXpjQ1hDQUFRb0NBZ0lDQWdNQUFOd0prSUFCQ0FEY0NiQ0FBUWdBM0FuZ2dBRUlBTndLQUFTQUFRUUEyQW9nQklBQkJJRFlDcEFFZ0FFSUFOd0tjQVNBQVFvQ0FnSUNBZ01BQU53S1VBU0FBUW9DQWdQd0ROd0tNQVNBQVFRQTJBcmdCSUFCQ0FEY0NzQUVnQUVJQU53S29BU0FBUWdBM0Fzd0JJQUJDZ0lDQWdJQ0F3QUEzQXNRQklBQkNnSUNBL0FNM0Fyd0JJQUJCSURZQzFBRWdBRUVBTmdMb0FTQUFRZ0EzQXVBQklBQkNBRGNDMkFFZ0FFSUFOd0w4QVNBQVFvQ0FnSUNBZ01BQU53TDBBU0FBUW9DQWdQd0ROd0xzQVNBQVFTQTJBb1FDSUFCQkFEWUNtQUlnQUVJQU53S1FBaUFBUWdBM0FvZ0NJQUJCSURZQ3RBSWdBRUlBTndLc0FpQUFRb0NBZ0lDQWdNQUFOd0trQWlBQVFvQ0FnUHdETndLY0FpQUFRUUEyQXNnQ0lBQkNBRGNDd0FJZ0FFSUFOd0s0QWlBQVFTQTJBdVFDSUFCQ0FEY0MzQUlnQUVLQWdJQ0FnSURBQURjQzFBSWdBRUtBZ0lEOEF6Y0N6QUlnQUVFQU5nTDRBaUFBUWdBM0F2QUNJQUJDQURjQzZBSWdBRUVnTmdLVUF5QUFRZ0EzQW93RElBQkNnSUNBZ0lDQXdBQTNBb1FESUFCQ2dJQ0EvQU0zQXZ3Q0lBQkJBRFlDcUFNZ0FFSUFOd0tnQXlBQVFnQTNBcGdESUFCQklEWUN4QU1nQUVJQU53SzhBeUFBUW9DQWdJQ0FnTUFBTndLMEF5QUFRb0NBZ1B3RE53S3NBeUFBUVFBMkF0Z0RJQUJDQURjQzBBTWdBRUlBTndMSUF5QUFRU0EyQXZRRElBQkNBRGNDN0FNZ0FFS0FnSUNBZ0lEQUFEY0M1QU1nQUVLQWdJRDhBemNDM0FNZ0FFRUFOZ0tJQkNBQVFnQTNBb0FFSUFCQ0FEY0MrQU1nQUVFZ05nS2tCQ0FBUWdBM0Fwd0VJQUJDZ0lDQWdJQ0F3QUEzQXBRRUlBQkNnSUNBL0FNM0Fvd0VJQUJCQURZQ3VBUWdBRUlBTndLd0JDQUFRZ0EzQXFnRUlBQkJJRFlDMUFRZ0FFSUFOd0xNQkNBQVFvQ0FnSUNBZ01BQU53TEVCQ0FBUW9DQWdQd0ROd0s4QkNBQVFRQTJBdWdFSUFCQ0FEY0M0QVFnQUVJQU53TFlCQ0FBUVNBMkFvUUZJQUJDQURjQy9BUWdBRUtBZ0lDQWdJREFBRGNDOUFRZ0FFS0FnSUQ4QXpjQzdBUWdBRUVBTmdLWUJTQUFRZ0EzQXBBRklBQkNBRGNDaUFVZ0FFR0FnSUQ4QXpZQ25BVWdBVUVBTmdJSUlBUWdBQkNrR2lBQlFRaHFFS01hSUFGQkVHb2tBQ0FGUVFFNkFKUURJQVZCbUFOcUVFa2hBQ0FGUVFBMkFzQUVJQVVnQURZQ3JBUWdCU0FGUVpRRGFqWUNxQVFqQUVFUWF5SVRKQUFnQlVHb0JHb2lFQ2tDQUNFYUlBVkJ5QVJxSWdkQ0FEY0NDQ0FISUJvM0FnQWdCMElBTndJUUlBZENBRGNDSENBSFFZQ0FnUHdETmdJWUlBZENBRGNDSkNBSFFnQTNBakFnQjBHQWdJRDhBellDTENBSFFnQTNBamdnQjBJQU53SkVJQWRCUUd0QmdJQ0EvQU0yQWdBZ0IwSUFOd0pNSUFkQmdJQ0EvQU0yQWxSQjROSVNJUTRnQjBFY2FpRUVBMzhnRGtHVTF4SkdCSDhnRTBFUWFpUUFJQWNGSUJNZ0RpZ0NBQkFVSVE4akFFRWdheUlKSkFBZ0NTQVBOZ0lRUVFBaEFDTUFRUkJySWdna0FDQVBFTTRHSVFFZ0NRSi9Ba0FnQkNnQ0JDSURSUTBBSUFRb0FnQUNmeUFEUVFGcklBRnhJQU5wSWcxQkFVME5BQm9nQVNBQklBTkpEUUFhSUFFZ0EzQUxJZ0JCQW5ScUtBSUFJZ1pGRFFBZ0EwRUJheUVSSUExQkFVc2hGQU5BSUFZb0FnQWlCa1VOQVNBQklBWW9BZ1FpRFVjRVFBSkFJQlJGQkVBZ0RTQVJjU0VOREFFTElBTWdEVXNOQUNBTklBTndJUTBMSUFBZ0RVY05BZ3NnQmtFSWFpQVBFUElEUlEwQUMwRUFEQUVMUVJnUUZTRUdJQWdnQkVFSWFqWUNCQ0FJSUFZMkFnQWdCaUFKS0FJUUlnMHBBZ0EzQWdnZ0JpQU5LQUlJTmdJUUlBMFFWU0FHUVFBMkFoUWdDRUVCT2dBSUlBWkJBRFlDQUNBR0lBRTJBZ1FDUUVFQUlBTWdCQ2dDREVFQmFyTWlHQ0FFS2dJUUloa2dBN09VWGhzTkFDQUVJQU1nQTBFQmEzRkJBRWNnQTBFRFNYSWdBMEVCZEhJaUFBSi9JQmdnR1pXTkloaERBQUNBVDEwZ0dFTUFBQUFBWUhFRVFDQVlxUXdCQzBFQUN5SURJQUFnQTBzYkVKd1BJQVFvQWdRaUF5QURRUUZyY1VVRVFDQURRUUZySUFGeElRQU1BUXNnQVNBRFNRUkFJQUVoQUF3QkN5QUJJQU53SVFBTEFrQWdBRUVDZENJQklBUW9BZ0JxS0FJQUlnQkZCRUFnQ0NnQ0FDQUVLQUlJTmdJQUlBUWdDQ2dDQURZQ0NDQUVLQUlBSUFGcUlBUkJDR28yQWdBZ0NDZ0NBQ0lBS0FJQUlnRkZEUUVnQVNnQ0JDRUdBa0FnQXlBRFFRRnJJZ0Z4UlFSQUlBRWdCbkVoQmd3QkN5QURJQVpMRFFBZ0JpQURjQ0VHQ3lBRUtBSUFJQVpCQW5ScUlBQTJBZ0FNQVFzZ0NDZ0NBQ0FBS0FJQU5nSUFJQUFnQ0NnQ0FEWUNBQXNnQ0NnQ0FDRUdJQWhCQURZQ0FDQUVJQVFvQWd4QkFXbzJBZ3dnQ0JDYkQwRUJDem9BSENBSklBWTJBaGdnQ0VFUWFpUUFJQWtvQWhnaEFDQUpRU0JxSkFBZ0FFRUFOZ0lVSUE4UUR4b2dEa0VFYWlFT0RBRUxDeG9nQlVHZ0JXb2dFQkJiR2lBRlFSSVF1UWcyQXFnRklBVkJyQVZxUVFCQk5CQjVHaUFGUWdBM0F1UUZJQVZCZ0lDQS9BTTJBdUFGSUFWQ0FEY0M3QVVnQlVJQU53UDRCU0FGUVlDQWdQd0ROZ0wwQlNBRlFnQTNBNEFHSUFWQ0FEY0NqQVlnQlVHQWdJRDhBellDaUFZZ0JVSUFOd0tVQmlBRlFnQTNBNkFHSUFWQmdJQ0EvQU0yQXB3R0lBVkNBRGNEcUFZZ0JVSUFOd080QmlBRlFvQ0FnSUF3TndPd0JpQUZRZ0EzQThBR0lBVkNBRGNEeUFZZ0JVS0FnSUNBZ0lDQXdEODNBOUFHSUFWQ0FEY0QyQVlnQlVJQU53UGdCaUFGUWdBM0F1d0dJQVZCZ0lDQS9BTTJBdWdHSUFWQ0FEY0M5QVlnQlVHQWdJRDhBellDL0FZZ0JVSUFOd09BQnlBRlFnQTNBNGdISUFWQmdJQ0EvQU0yQXBBSElBVkNBRGNDbEFjZ0JVSUFOd0tjQnlBRlFZQ0FnUHdETmdLa0J5QUZRZ0EzQTZnSElBVkNBRGNEc0FjZ0JVR0FnSUQ4QXpZQ3VBY2dCVUlBTndLOEJ5QUZRZ0EzQXNRSElBVkJnSUNBL0FNMkFzd0hJQVZDQURjRDBBY2dCVUlBTndQWUJ5QUZRZ0EzQXVRSElBVkJnSUNBL0FNMkF1QUhJQVZDQURjQzdBY2dCVUdBZ0lEOEF6WUM5QWNnQlVINEIyb2lBRUlBTndLc0JTQUFRb0NBZ0lDQUF6Y0NwQVVnQUNBQU5nS2dCU0FBUVJnUTZ3NGdCVUcwRFdwQ0FEY0NBQ0FGUWdBM0Fxd05JQVZDQURjRHdBMGdCVUc4RFdwQmdJQ0EvQU0yQWdBZ0JVSElEV3BDQURjREFDQUZRZ0EzQXRRTklBVkIwQTFxUVlDQWdQd0ROZ0lBSUFWQjNBMXFRZ0EzQWdBZ0JVSGtEV3BCZ0lDQS9BTTJBZ0FnQlVIb0RXcEJBRUVrRUhrYUlBc2dCVFlDRENBTFFkRGdFallDQ0NBTElBdEJDR29pQURZQ0dDQUFJQVZCc0FScUVLd0NJQUFRRmlBTFFTQnFKQUFnQlVFZ2FpRUFBa0FnQlJDZ0dVVUVRQ0FBRUJ3Z0FrR1lBMm9pQVNBRlFhUURhaEJDSUFJZ0FpZ0NuQU1nQWkwQW93TWlCQ0FFUVJoMFFSaDFRUUJJSWdRYk5nTGNpUUVnQWlBQ0tBS1lBeUFCSUFRYk5nTFlpUUVnQWlBQ0tRUFlpUUUzQXdnZ0JVSG9BbXBCQnlBQ1FRaHFFS2tISUFFUUR4b2dDaUFBRUlvRUdnd0JDeUFNTFFBQUJFQWpBRUVRYXlJR0pBQWpBRUVRYXlJQkpBQWdBU0FBUWY0SkVPRUhJZ1EyQWd3Z0FDQUVRUkJxSUFGQkRHb1FoUm9oQkNBQlFSQnFKQUFnQUNBQVFkZ0NhaUFHUVFocVFRTWdCQkNXR2hEbEdTRUVJQUFROGdJaEF5TUFRY0FCYXlJQkpBQWdBU0FFTmdLOEFTQUVSUVJBSUFGQkNHcEIwN1FGUWRzQVFRQWdBVUdvQVdvUUhTSUhFQmNpQ0VFWWFrSFl0Z2dRRGhvZ0NCQVlJQWNRSGdzZ0JCQlhJQU1vQWdoQkFVRUFRWTNNQ0VIVHRBVkIzQUFRU3lBQklBUTJBZ2dnQTBFa2FpQUJRUWhxRUpRRElBTkJ0QVJxSUFGQnZBRnFFQ1FnQVVIQUFXb2tBQ0FHUVJCcUpBQUxJQVZCQURvQWpBTWdBa0dBaHdGcUlBQVFpZ1FoQnlBQ1FaZ0RhaUFDUVpDRUFXb1FoUVVpQ0NBSFFRQVEwUVlpQUJEdUJTQUFFTkFHQWtBZ0FrRkFheUFJRUlvRUlnWVFpUlpGQkVBZ0NpQUdFTHdLR2d3QkN5QUNRU2hxRU13R0lnRkJpTUVTTmdJRUlBRkJ2TUVTTmdJQUlBRkNBRGNDQ0NBQlFhakJFallDQUNBQlFRQTJBaEFqQUVFUWF5SUVKQUJCQ0JBVkVNd0dJZ0JCeU1FU05nSUVJQUJCNk1JU05nSUFJQUJCNk1FU05nSUFJQVFnQURZQ0NDQUJRUWhxSWdBZ0JFRUlhaUlERUpjRklBTVF0d0lnQkVFUWFpUUFJd0JCRUdzaUJDUUFRUWdRRlJETUJpSURRZmpDRWpZQ0JDQURRZlRERWpZQ0FDQURRWmpERWpZQ0FDQUVJQU0yQWdnZ0FDQUVRUWhxSWdNUWx3VWdBeEMzQWlBRVFSQnFKQUFqQUVFUWF5SUVKQUJCQ0JBVkVNd0dJZ05CZ01RU05nSUVJQU5CdE1RU05nSUFJQU5Cb01RU05nSUFJQVFnQXpZQ0NDQUFJQVJCQ0dvaUF4Q1hCU0FERUxjQ0lBUkJFR29rQUNNQVFSQnJJZ1FrQUVFSUVCVVF6QVlpQTBIUXhSSTJBZ1FnQTBHSXhoSTJBZ0FnQTBId3hSSTJBZ0FnQkNBRE5nSUlJQUFnQkVFSWFpSURFSmNGSUFNUXR3SWdCRUVRYWlRQUl3QkJFR3NpQkNRQVFRZ1FGUkRNQmlJRFFZREhFallDQkNBRFFiVEhFallDQUNBRFFhREhFallDQUNBRUlBTTJBZ2dnQUNBRVFRaHFJZ01RbHdVZ0F4QzNBaUFFUVJCcUpBQWpBRUVRYXlJRUpBQkJDQkFWRU13R0lnTkJ3TWNTTmdJRUlBTkJwTW9TTmdJQUlBTkIrTWNTTmdJQUlBUWdBellDQ0NBQUlBUkJDR29pQUJDWEJTQUFFTGNDSUFSQkVHb2tBQ0FDUVJCcUVLTWJJUWtqQUVHZ2lRRnJJZ1FrQUNBQ1FaZ0RhaUlERUpnRUlnQkJBRFlDQkNBQVFRaHFFTU1MR2lBQVFnQTNBdFFCSUFCQ2dJQ0FnSUFFTndMTUFTQUFRb0NBQkRjQ3hBRWdBRUlBTndLOEFTQUFRaUEzQXJRQklBQkNBRGNDckFFZ0FFS0FnSUNBZ0lEQUFEY0NwQUVnQUVJQU53S2NBU0FBUW9DQWdJQ0FCRGNDbEFFZ0FFS0FnQVEzQW93QklBQkNBRGNDaEFFZ0FFSGNBV29RMHdzYUlBQkJnQUpxSUFBb0FnQVE3dzhhSUFCQndBSnFFQjBhSUFCQkFEc0IwQUlnQUVIVUFtb1FveHNhSUFSQnlJWUJhaUFCSUFZZ0NTQURRZFFDYWlBQktBSUFLQUlJRVFnQUFrQWdCQzBBbklrQkJFQWdBeUFFUWNpR0FXb1F4UThRakJZTUFRc2dCRUhnQW1vZ0JFSFlnd0ZxRUlVRklnQWdCa0VCRU5FR0lnMFE3Z1VnQXlBRVFRaHFJQUFRaWdRaUN4Q01GaUFMRUx3RElBMFEwQVlnQUJDT0JCb0xJQVJCeUlZQmFoQ0NHeUFFUWFDSkFXb2tBQ0FLSUFNUXZBb2FJQU5CMUFKcUVLSWJJQU1RdkFNZ0NSQ2lHeUFCRU1ZUEdnc2dCaEM4QXlBSUVJNEVHaUFIRUx3REN5QUZFUDRPR2lBQ1FmQ1hBV29rQUNBS0VLOEJJQXdvQXV3Q0lRQWdEQ2dDNkFJaEFRTkFJQUFnQVVZRVFDTUFRU0JySWcwa0FDQU5JQXhCS0dvaUV6WUNIQ0FNUVFBNkFBQWdERUVFYWhCVklBeEJFR3BCM1BnTUVCUWFRYXdERUJVaUJTQU5LQUljSWdRMkFnQWpBRUdBQVdzaUNDUUFJQVZCQkdvaUF4Q0ZCUm9nQXlBRUtBSUFOZ0lJSUFNZ0JDZ0NCRFlDRENBRUVLOEJJQWdRd3dzaUNVRWNhaUlHSUFSQkNHb2lCeUlBUVJ4cVJ3UkFJQVlnQUNvQ0xEZ0NFQ0FBS0FJa0lRSWdCaWdDQkFSQUlBWVFuQmNoQUFOQUlBQkZJQUpGY2tVRVFDQUFJQUlwQWdnM0FnZ2dBQ2dDQUNFQklBWWdBQkNYRnlBQ0tBSUFJUUlnQVNFQURBRUxDeUFBRUxFSEN3TkFJQUlFUUNNQVFSQnJJZ0FrQUNBQUlBWWdBa0VJYWhDRUZ5QUdJQUFvQWdBUWx4Y2dBRUVBTmdJQUlBQVFpd0VnQUVFUWFpUUFJQUlvQWdBaEFnd0JDd3NMSUFsQnpBQnFJZ1lnQjBITUFHcEhCRUFnQmlBSEtnSmNPQUlRSUFjb0FsUWhBaUFHS0FJRUJFQWdCaENjRnlFQUEwQWdBRVVnQWtWeVJRUkFJQUFnQWlrQ0NEY0NDQ0FBS0FJQUlRRWdCaUFBRUlBWElBSW9BZ0FoQWlBQklRQU1BUXNMSUFBUXNRY0xBMEFnQWdSQUl3QkJFR3NpQUNRQUlBQWdCaUFDUVFocUVJUVhJQVlnQUNnQ0FCQ0FGeUFBUVFBMkFnQWdBQkNMQVNBQVFSQnFKQUFnQWlnQ0FDRUNEQUVMQ3dzZ0EwRVFhaUFJRU44UElBZ1EzUThnQkJET0JFRVFhaUVBSUFRUXpnUkJKR29oQVNNQVFSQnJJZ2NrQUNBREVCd2dBeUFES0FJTVFRRnFJZ0kyQWd3Z0J5QUNOZ0lJSXdCQkVHc2lCaVFBSUFOQmpBRnFJZ2tRb3c0aEFpQUhLQUlJSVFzZ0F5Z0NDQ0VLSUFaQkFEb0FEQ0FHSUFGQmdBSnFOZ0lJSXdCQklHc2lBU1FBSUFFZ0N6WUNFQ0FCSUFvMkFoZ2dBaUFCUVJocUlBRkJFR29nQUJEVEdTSUFRYmozRHpZQ0FDQUFRU1JxSUFaQkNHb1F6eGtnQUVLQWdJQ0FnQUUzQXJBRklBQWdBRUdNQldvMkFxd0ZJQUJDZ0lDQWdJQUJOd0tFQlNBQUlBQkI0QVJxTmdLQUJTQUFRb0NBZ0lDQUFUY0MyQVFnQUNBQVFiUUVhallDMUFRZ0FFS0FnSUNBZ0FRM0Fxd0VJQUFnQUVHb0EybzJBcWdFSUFCQ2dJQ0FnSUFCTndLZ0F5QUFJQUJCL0FKcU5nS2NBeUFBUW9DQWdJQ0FBamNDOUFJZ0FDQUFRYkFDYWpZQzhBSWdBQ2dDcEFJaUFpQUFLQUtvQWtFQ2RHb2hDd05BSUFJZ0MwY0VRQ0FDS0FJQUlnb0VRQ0FBSUFvZ0FSQWRJZ29RekJrZ0NoQWVDeUFDUVFScUlRSU1BUXNMSUFGQklHb2tBQ0FKSUFBUUtDQUpJQWtvQWhoQkFXbzJBaGdnQmtFUWFpUUFJQWRCRUdva0FDQURJQUEyQXVBQklBUVFyd0VnQ0JEVEN5SUFJQVJCM0FGcUVMZ0hJQUFnQkNnQy9BRTJBaUFnQTBIa0FXb2dDQkQ3RHlBSUVQd1BJQVFRcndFZ0EwR0lBbW9pQUNBRVFZQUNhaUlCS0FJQU5nSUFJQUJCQkdvaUFpQUJRUVJxSWdaSEJFQWdBaUFHRVBnV0N5QUNJQVlwQWd3M0Fnd2dBRUVZYWlJQ0lBRkJHR29pQmtjRVFDQUNJQVlRenhZTElBSWdCaWtDRERjQ0RDQUFJQUVvQWl3MkFpd2dCQkN2QVNNQVFSQnJJZ3NrQUNBTElBTkJ5QUpxTmdJTUlBc2dCRUhBQW1vMkFnZ2dDeWdDRENJT0lRQWdDeWdDQ0NFQkl3QkJFR3NpQkNRQUlBUWdBRFlDRENBRUlBRTJBZ2dnQkNnQ0RDSUJJQVFvQWdoSEJFQWdCQ2dDQ0NFQ0l3QkJFR3NpQUNRQUlBQWdBVFlDRENBQUlBSTJBZ2dnQUNnQ0NDRUNJd0JCRUdzaUF5QUFLQUlNTmdJRUlBTWdBallDQUNBQVFSQnFKQUFnQkNnQ0NDZ0NBQ0VDSUFRb0FnZ29BZ1FoQXlNQVFTQnJJZ0FrQUNBQUlBRTJBaHdnQUNBQ05nSVlJQUFnQXpZQ0ZDQUFLQUljSVFJZ0FDZ0NHQ0VESUFBb0FoUWhCaU1BUVJCcklnRWtBQ0FCSUFNMkFnd2dBU0FHTmdJSUlBRW9BZ2doQmlNQVFSQnJJZ01nQVNnQ0REWUNCQ0FESUFZMkFnQWdBeWdDQUNBREtBSUVhMEUwYlNFRElBRkJFR29rQUNBQUlBTTJBaEFDUUNBQUtBSVFJQUlRMlFWTkJFQWdBQ0FBS0FJVU5nSU1JQUJCQURvQUN5QUFLQUlRSUFJUXR3WkxCRUFnQUVFQk9nQUxJQUFnQUNnQ0dEWUNEQ0FDRUxjR0lRTWpBRUVRYXlJQkpBQWdBU0FBUVF4cU5nSU1JQUVnQXpZQ0NDQUJJQUVvQWdnUWd3RTJBZ1FnQVNnQ0JDRUdJd0JCRUdzaUF5QUJLQUlNTmdJRUlBTWdCallDQUNBREtBSUVJZ1lnQmlnQ0FDQURLQUlBUVRSc2FqWUNBQ0FCUVJCcUpBQUxJQUFvQWhnaEFTQUFLQUlNSVFZZ0FpZ0NBQ0VISXdCQkVHc2lBeVFBSUFNZ0FUWUNEQ0FESUFZMkFnZ2dBeUFITmdJRUlBTW9BZ1FoRHlBREtBSU1FTkVJSVFFZ0F5Z0NDQkRSQ0NFR0lBTW9BZ1FRMFFnaEJ5TUFRUkJySWdra0FDQUpJQUUyQWd3Z0NTQUdOZ0lJSUFrZ0J6WUNCQ0FKS0FJTUlRWWdDU2dDQ0NFSElBa29BZ1FoQ2lNQVFSQnJJZ0VrQUNBQklBWTJBZ3dnQVNBSE5nSUlJQUVnQ2pZQ0JBTkFJQUVvQWd3Z0FTZ0NDRWNFUUNBQktBSUVJUWNnQVNnQ0RDRUtJd0JCRUdzaUJpUUFJQVlnQnpZQ0RDQUdJQW8yQWdnZ0JpZ0NEQ0lLSUFZb0FnZ2lCeWtDQURjQ0FDQUtJQWNwQWhBM0FoQWdDaUFIS1FJSU53SUlJQXBCR0dvZ0JpZ0NDRUVZYWhEZ0FpQUtJQVlvQWdncEFpUTNBaVFnQmlnQ0NFRXNhaUVRSXdCQkVHc2lCeVFBSUFjZ0NrRXNhallDRENBSElCQTJBZ2dnQnlnQ0RDRUtJQWNnQnlnQ0NCQ29HQ0FISUFvUXhoZ2dCeERPQnlBSFFSQnFKQUFnQmtFUWFpUUFJQUVnQVNnQ0RFRTBhallDRENBQklBRW9BZ1JCTkdvMkFnUU1BUXNMSUFFb0FnUWhCaUFCUVJCcUpBQWdDVUVRYWlRQUl3QkJFR3NpQVNBUE5nSU1JQUVnQmpZQ0NDQUJLQUlJSVFFZ0EwRVFhaVFBSUFBZ0FUWUNCQUpBSUFBdEFBdEJBWEVFUUNBQ0lBQW9BZ3dnQUNnQ0ZDQUFLQUlRSUFJUXR3WnJFS2NZREFFTElBQW9BZ1FoQXlNQVFSQnJJZ0VrQUNBQklBSTJBZ3dnQVNBRE5nSUlJQUVvQWd3aUF5QUJLQUlJRUtzWUlBRWdBeEMzQmpZQ0JDQURJQUVvQWdnUXBSZ2dBeUFCS0FJRUVLSVlJQUZCRUdva0FBc01BUXNnQWhDakdDQUNJQUFvQWhBUS94VWhBeU1BUVJCcklnRWtBQ0FCSUFJMkFnd2dBU0FETmdJSUlBRW9BZ2doRnlBQktBSU1JUU1qQUVFUWF5SUdKQUFnQmlBRE5nSU1JQVlvQWd3UXR3RWhDU01BUVJCcklnY2tBQ0FISUFrMkFnd2pBRUVRYXlBSEtBSU1OZ0lNSUFkQkVHb2tBQ0FHUWNTZHNTYzJBZ2dnQmtILy8vLy9CellDQkNBR1FRaHFJQVpCQkdvUWlBVW9BZ0FoQnlBR1FSQnFKQUFnRnlBSFN3UkFJQU1RN0FvQUN5QURFTGNCSVFjZ0FTZ0NDQ0VKSXdCQkVHc2lCaVFBSUFZZ0J6WUNEQ0FHSUFrMkFnZ2dCaWdDRENBR0tBSUlFUDRWSVFjZ0JrRVFhaVFBSUFNZ0J6WUNCQ0FESUFjMkFnQWdBeWdDQUNBQktBSUlRVFJzYWlFR0lBTVF0d0VnQmpZQ0FDTUFRUkJySWdZa0FDQUdJQU0yQWd3Z0JrRUFOZ0lJSUFZb0Fnd2lBeERxQVNFSElBTWdCeUFERU9vQklBTVEyUVZCTkd4cUlBTVE2Z0VnQXhEWkJVRTBiR29nQXhEcUFTQUdLQUlJUVRSc2FoQzJCaUFHUVJCcUpBQWdBVUVRYWlRQUlBSWdBQ2dDR0NBQUtBSVVJQUFvQWhBUXB4Z0xJQUlRcndNZ0FFRWdhaVFBQ3lBRVFSQnFKQUFnRGlBTEtBSUlLQUlNTmdJTUlBdEJFR29rQUNBSVFZQUJhaVFBSUFWQjlBSnFFQjBhSUFVZ0JVR0lBMm9pQURZQ2hBTWdBQkRVRGhvZ0JVSUFOd0tnQXlBRlFnQTNBcGdESUFWQmdJQ0EvQU0yQXFnRElBMGdCVFlDR0NNQVFkQURheUlJSkFBZ0JTZ0NBQkRPQkNJQUtBS0FCU0lISUFBb0FvUUZRUUowYWlFRFFRQWhBUU5BSUFNZ0IwWUVRQ0FGS0FJQUVNNEVJZ0FvQXRRRUlnY2dBQ2dDMkFSQkFuUnFJUUlnQ0VIQUFtb2hCQU5BSUFJZ0IwWUVRQUpBSUFFRVFDQUlRYUFCYWlJQUlBVVFqQUVnQUJDUUFRc2dCU2dDQUJET0JDSUFLQUtrQWlJSElBQW9BcWdDUVFKMGFpRVFBMEFnQnlBUVJnMEJBa0FnQnlnQ0FDSUVFUHNRRFFBZ0NDQUZOZ0tZQVFKQUlBUkZCRUFnQ0VHWUFXb1EyQmdNQVFzZ0JDZ0NCQ0lBRU9FSUJFQWpBRUhBQVdzaUNTUUFJQWtnQkRZQ0ZDQUpJQVUyQWdnZ0NTQUpRUlJxTmdJTUFrQWdCRVVFUUNBSlFRaHFFTlFZREFFTElBUW9BZ1FpQUVHWStCRkdCRUFnQ1VFb2FpSUJJQVVRakFFZ0NVRXdhaUlBUVpuaUNSQU9HaUFKUVJocUlnSWdCQ2dDSkVFa2FoQlRJQUFnQWhBU0dpQUFRWjdkQ3hBT0dpQUNFQThhSUFVZ0FTQUVLQUlvRUpJQklBQkIrdWtHRUE0YUlBRVFrQUVNQVFzZ0FFSFk5eEZHQkVCQkFDRURJd0JCZ0FKcklnSWtBQ0FFS0FKb0JFQWdBa0hvQUdvaUFDQUZFSXdCSUFKQkFEb0FaQ0FDSUFSQjVBQnFOZ0pnSUFVZ0FDQUNRZUFBYWhEN0FpQUFFSkFCQ3lBQ1FlZ0FhaUlCSUFVUWpBRWdBa0h3QUdvaUJrSDMwQWtRRGhvZ0FrRkFheUlBSUFRb0FpUkJKR29RVXlBR0lBQVFFaG9nQmtHSENCQU9HaUFBRUE4YUlBRVFrQUVnQlJET0dDQUVLQUpJSWdvZ0JDZ0NURUVDZEdvaEVTQUNRU0JxUVFSeUlSUWdBa0hRQUdvaEZRTkFJQW9nRVVjRVFDQUtLQUlBSVFzZ0JTZ0NBQ0lBRUs4QklBQkIzQUZxSUFzUXdSb2lEZ1JBQWtBZ0RpZ0NNQ0lBSUFNZ0RpZ0NOQ0lCYWtFQmF5SURJQU1nQVhCcklnRkdCRUFnQVNFQURBRUxJQUpCNkFCcUloWWlBeUFGRUl3QklBWkI0ZmdJRUE0YUlBWWdBQ0FCYXhBaEdpQUdRZS8yQ0JBT0dpQURFSkFCSUFNZ0JSQ01BU0FDUVNCcVFjYS9BeEFVSVFNakFFRXdheUlCSkFBZ0JVRUVhaEFjSUFNb0FnQWhEeUFCSUFNb0FnUWdBeTBBQ3lJU0lCSkJHSFJCR0hWQkFFZ2lFaHMyQWd3Z0FTQVBJQU1nRWhzMkFnZ2dBU0FCS1FNSU53TUFJQUZCRUdvaUVpQUZRWXdDYWlBQkVKOEVJQUpCUUdzaUR5QVNFRk1nQVVFd2FpUUFJQVlnRHhBU0dpQUdRYzZZQ0JBT0dpQVBFQThhSUFNUUR4b2dGaENRQVFzZ0RpZ0NPQ0FBYWlFREN5QUNRb0NBZ0lEQUFEY0NWQ0FDSUFKQlFHc2lBRFlDVUNBQUlBdEJRR3NpQVNnQ0FCRFdBaUFMS0FJOElnQWdBU2dDQUVFQ2RHb2hEd05BSUFBZ0QwWUVRQ0FDS0FKVUJFQWdBa0hvQUdvaUFDQUZFSXdCSUFKQkFEb0FEQ0FDSUJVMkFnZ2dCU0FBSUFKQkNHb1Erd0lnQUJDUUFRc2dBa0hvQUdvaUFDQUZFSXdCSUFKQklHb2lBU0FMS0FJa1FTUnFFRk1nQmlBQkVCSWFJQVpCN0xVTUVBNGFJQUVRRHhvZ0JTQUFJQXNvQWlnUWtnRWdCa0hVbUFnUURob2dDa0VFYWlFS0lBQVFrQUVnQWtGQWF4QmVEQU1GSUFJZ0FDZ0NBQ0lCTmdJOEFrQWdBU2dDQkVHZ2d4SkdCRUFnQWtIb0FHb2lBU0FGRUl3QklBWkJnKzRNRUE0YUlBSkJBVFlDSENBQ0lBSW9BancyQWhRZ0FpQUNRUlJxTmdJWUlBSWdBaWtER0RjREFDQUNRU0JxSUFJUWx3SWhEaUFDSUJRMkFqQWdBaUFPSUFJb0FpUkhPZ0EwSUFVZ0FTQUNRVEJxRVBzQ0lBNFFxQUVnQmtIWGtnY1FEaG9nQVJDUUFRd0JDeUFDUVVCcklBSkJQR29RY1FzZ0FFRUVhaUVBREFFTEFBc0FDd3NnQlJETkdDQUNRZWdBYWlJQUlBVVFqQUVnQWtId0FHcEJnZ2dRRGhvZ0FCQ1FBU0FDUVlBQ2FpUUFEQUVMSUFsQkNHb1ExQmdMSUFsQndBRnFKQUFNQVFzZ0FFSDQ4dzlHQkVBakFFSFFBV3NpQUNRQUlBUW9BbWdFUUNBQVFUaHFJZ0VnQlJDTUFTQUFRUUE2QURRZ0FDQUVRZVFBYWpZQ01DQUZJQUVnQUVFd2FoRDdBaUFCRUpBQkN5QUFRVGhxSUFVUWpBRWdBRUZBYXlJQlFlU1JDaEFPR2lBQVFTQnFJZ0lnQkNnQ0pFRWthaEJUSUFFZ0FoQVNHaUFCUVpuL0NCQU9HaUFDRUE4YUlBUW9Ba2dpQWlBRUtBSk1RUUowYWlFSlFRRWhCZ05BSUFJZ0NVWUVRQ0FCUWUvMkNCQU9HZ0pBSUFRb0FsUkZCRUFnQkNnQ2ZFVU5BUXNnQVVIVjJ3c1FEaG9nQkNnQ2ZBUkFJQUJCQURvQUZDQUFJQVJCK0FCcU5nSVFJQVVnQUVFNGFpQUFRUkJxRVBzQ0lBRkI5L0FNRUE0YUN5QUZJQUJCT0dvZ0JDZ0NWQkNTQVFzZ0JDZ0NXQVJBSUFGQjkvQU1FQTRhSUFVZ0FFRTRhaUFFS0FKWUVOUUVDeUFBUVRocUVKQUJJQVFvQWxnaUFRUkFJQUJCQURvQURDQUFJQUZCeEFCcU5nSUlJQVVnQUVFSWFoQ01CU0FBUVRocUlnRWdCUkNNQVNBQVFVQnJRWUlJRUE0YUlBRVFrQUVMSUFCQjBBRnFKQUFNQXdzZ0FpZ0NBQ0VESUFaRkJFQWdBVUgwN1F3UURob0xJQU1vQWp3RVFDQUFRUUE2QUJ3Z0FDQURRVGhxTmdJWUlBVWdBRUU0YWlBQVFSaHFFUHNDSUFGQjkvQU1FQTRhQ3lBQVFTQnFJZ1lnQXlnQ0pFRWthaEJUSUFFZ0JoQVNHaUFCUWV5MURCQU9HaUFHRUE4YUlBVWdBRUU0YWlBREtBSW9FSklCSUFKQkJHb2hBa0VBSVFZTUFBc0FDeUFBRU4wRkJFQWdDRUc0QW1vaUFDQUZFSXdCSUFVZ0FDQUVFTmNZSUFBUWtBRU1BUXNnQUVIQTlnOUdCRUFnQlNBRUVOWVlEQUVMSUFoQm1BRnFFTmdZQ3lBRUlBVW9BZ0FRemdRaUFDZ0NxQUpCQW5RZ0FDZ0NwQUpxUVFScktBSUFSZzBBSUFnZ0JSQ01BU0FJRUpBQkN5QUhRUVJxSVFjTUFBc0FDd1VnQnlnQ0FDRUJJQWhCdUFKcUlnQWdCUkNNQVNBQUlBRkJKR29RMVJnZ0JFSDY2UVlRRGhvZ0IwRUVhaUVISUFBUWtBRkJBU0VCREFFTEN5QUlRZEFEYWlRQUJTQUhLQUlBSVFJakFFR2dBV3NpQVNRQUlBRkJDR29nQlJDTUFTQUJRUkJxSWdSQjhyMEtFQTRhSUFJb0FqUWlBQ0FDS0FJNFFRSjBhaUVHQTBBZ0FDQUdSd1JBSUFBb0FnQWlDU0FDS0FJMEtBSUFSd1JBSUFSQjlPME1FQTRhQ3lBQlFRaHFJQWtvQWlRUXBSc2dBRUVFYWlFQURBRUxDeUFFUWZycEJoQU9HaUFCUVFocUVKQUJJQUZCb0FGcUpBQWdCMEVFYWlFSFFRRWhBUXdCQ3dzZ0RDQUZLQUwwQWlBRktBTDRBa1k2QUFBakFFRWdheUlHSkFBZ0JpQU5RUWhxSWdNMkFod2dCaUFGUWZRQ2FqWUNHQ0FHS0FJWUlRSWpBRUVRYXlJQUlBWkJFR29pQkRZQ0RDQUFLQUlNSWdGQkFUb0FBQ0FCUVFFNkFBRWdBVUVCT2dBQ0lBRkJBVG9BQXlBQlFRSTJBZ1FnQmtFQU9nQVRJQUFnQmtFSWFpSUxOZ0lNSUFBZ0JEWUNDQ0FBS0FJTUlBQW9BZ2dwQWdBM0FnQWpBRUdnQVdzaUJDUUFJQVFnQXpZQ25BRWdCQ0FMTmdLWUFTQUVJQUkyQXBRQklBUW9BcGdCSVFJakFFRVFheUlBSkFBZ0FDQUVOZ0lNSXdCQkVHc2lCeUFBS0FJTUlnRTJBZ3dnQnlnQ0RFSDA0aEkyQWdBZ0FVSGc0aEkyQWdBZ0FVRUVhaEJKR2lBQVFSQnFKQUFnQkNnQ2xBRWhBQ01BUVlBQ2F5SUJKQUFnQVNBQ05nTDhBU0FCSUFBMkF2Z0JJQUVnQkRZQzlBRWdBU2dDL0FFaENpQUJLQUwwQVNFQ0l3QkJFR3NpQUNRQUlBQWdBVUhZQUdvMkFnd2dBQ0FDTmdJSUlBQW9BZ3dpQWlBQUtBSUlOZ0lBSXdCQkVHc2lCeUFDUVFScU5nSU1JQWNvQWd3aUIwRUFOZ0lBSUFkQkFEb0FCQ0FDUVF4cUVFa2FJQUJCRUdva0FDQUJRUUU2QUZjZ0FTQUJLQUw0QVRZQ1VDQUJLQUpRSVFJakFFRVFheUlBSkFBZ0FDQUNOZ0lFSUFBb0FnUWhCeU1BUVJCcklnSWtBQ0FDSUFjMkFnUWdBaUFDS0FJRUlnY2dCeWdDQUJDVkdEWUNDQ0FDS0FJSUlRY2dBa0VRYWlRQUlBQWdCellDQ0NBQUtBSUlJUUlnQUVFUWFpUUFJQUVnQWpZQ1NDQUJLQUpRSVFJakFFRVFheUlBSkFBZ0FDQUNOZ0lFSUFBb0FnUWhCeU1BUVJCcklnSWtBQ0FDSUFjMkFnUWdBaUFDS0FJRUlnY2dCeWdDQkJDVkdEWUNDQ0FDS0FJSUlRY2dBa0VRYWlRQUlBQWdCellDQ0NBQUtBSUlJUUlnQUVFUWFpUUFJQUVnQWpZQ1FBTkFJd0JCRUdzaUFDUUFJQUFnQVVISUFHbzJBZ3dnQUNBQlFVQnJOZ0lJSUFBb0Fnd2hCeUFBS0FJSUlRZ2pBRUVRYXlJQ0pBQWdBaUFITmdJTUlBSWdDRFlDQ0NBQ0tBSU1FSklDSUFJb0FnZ1FrZ0pHSVFjZ0FrRVFhaVFBSUFCQkVHb2tBQ0FIUVg5elFRRnhCRUFnQVVFSWFpQUJRY2dBYWhDU0FoREZCeG9nQVVFQU5nSUFJQUZCQURvQUJDQUJRZGdBYWlBQkVMTUdJQUV0QUZkQkFYRkZCRUFnQVVIWUFHb1F6Z2dMSXdCQnNBSnJJZ0FrQUNBQUlBbzJBcXdDSUFBZ0FVRUlhaUlQTmdLb0FpQUFJQUZCMkFCcU5nS2tBaUFBS0FLc0FpRUhJQUFnQUNnQ3FBSkJCR28yQXFBQ0lBQWdBQ2dDb0FJMkFwd0NJQUFnQUNnQ3FBSW9BaWdFZnlBQUtBS29BaWdDS0N3QUFFRUFSd1ZCQUF0QkFYRTZBSnNDSUFBb0FxUUNJUUlnQUVFQU5nS1FBaUFBUVFFNkFKUUNJQUlnQUVHUUFtb1Fzd1lnQUVHQUFtb2lDQkRIRGlNQVFTQnJJZ0lrQUNBQ0lBZzJBaHdnQWtFR05nSVlJQUlvQWhnZ0FpZ0NIQ0lJRUxFR1N3UkFJQUlvQWhnZ0NCQ2RHRXNFUUNBSUVPd0tBQXNnQWlBSUVMY0JOZ0lVSUFJZ0FpZ0NHQ0FJRU1NSElBSW9BaFFRbkJnZ0NDQUNFSnNZSUFJUW1oZ0xJQUpCSUdva0FBSkFBa0FnQnkwQUFFRUJjVVVOQUNBQUtBS2dBaWdDRUVVTkFBSkFJQUFvQXB3Q0tBSUFCRUFnQUVIWUFXb2lBaUFBS0FLZ0FpZ0NFRUhWNmdZUXVBSWdBRUhJQVdvaUNDQUFLQUtjQWhDZ0dDQUFRZWdCYWlJSklBSWdDQkJPSUFCQkFEWUM5QUVnQUVFQU9nRDRBU0FBUVlBQ2FpQUpFTTBJSUFrUXhBY2dDQkFQR2lBQ0VBOGFEQUVMSUFCQnNBRnFJZ0lnQUNnQ29BSW9BaEFRVkJvZ0FFRUFOZ0s4QVNBQVFRQTZBTUFCSUFCQmdBSnFJQUlRelFnZ0FoREVCd3NNQVFzZ0FDZ0NuQUlvQWdBRVFDQUFRWmdCYWlJQ0lBQW9BcHdDRUtBWUlBQkJBRFlDcEFFZ0FFRUFPZ0NvQVNBQVFZQUNhaUFDRU0wSUlBSVF4QWNMQ3lBQVFRQTJBcFFCQWtBQ1FBSkFBa0FnQUNnQ3FBSW9BZ0JCQVdzT0JBQUJBZ0lEQ3lBQVFRUTJBcFFCREFJTElBQkJBallDbEFFTUFRc2dBRUVHTmdLVUFRc2dCeTBBQVVFQmNRUkFJd0JCRUdzaUFpQUFLQUtvQWlnQ0FEWUNDQUpBQWtBQ1FBSkFBa0FDUUFKQUlBSW9BZ2dPQlFBQkFnTUVCUXNnQWtIKzNBTTJBZ3dNQlFzZ0FrSGZ2Z00yQWd3TUJBc2dBa0dQMUFFMkFnd01Bd3NnQWtIOTB3RTJBZ3dNQWdzZ0FrSDVsUU0yQWd3TUFRc2dBa0hjK0F3MkFnd0xJQUJCZ0FGcUlnZ2dBaWdDREJBVUdpQUFJQUFvQXBRQk5nS01BU0FBUVFFNkFKQUJJQUJCZ0FKcUlBZ1F6UWdnQ0JERUJ3c2dBQzBBbXdKQkFYRUVRQ0FBUWVnQWFpSUNJQUFvQXFnQ0tBSW9FQlFhSUFBZ0FDZ0NsQUUyQW5RZ0FFRUFPZ0I0SUFCQmdBSnFJQUlRelFnZ0FoREVCd3NnQUVFQU5nSmtBMEFnQUNnQ1pDQUFRWUFDYWhEREIwa0VRQ0FBS0FKa0JFQWdBQ2dDcEFKQjkvQU1FSjhZQ3lBQUtBS2tBaUVDSUFBZ0FFR0FBbW9nQUNnQ1pCREREaWdDRERZQ1dDQUFJQUJCZ0FKcUlBQW9BbVFRd3c0dEFCQkJBWEU2QUZ3Z0FpQUFRZGdBYWhDekJpQUFLQUtrQWlBQVFZQUNhaUFBS0FKa0VNTU9FSjRZSUFBZ0FDZ0NaRUVCYWpZQ1pBd0JDd3NnQUNnQ3BBSWhBaUFBUVFBMkFsQWdBRUVCT2dCVUlBSWdBRUhRQUdvUXN3WWpBRUVRYXlJQ0lBQkJnQUpxTmdJTUlBSW9BZ3dpQWlnQ0FDQUNLQUlFUndSQUlBQW9BcVFDUWUyMURCQ2ZHQXNnQUNnQ3BBSWdBQ2dDcUFKQkdHb1FuaGdDUUNBSExRQUNRUUZ4UlEwQUlBQW9BcUFDS0FJUVJRMEFJQUFvQXB3Q0tBSUFSUTBBSUFBb0FxUUNFTTRJSUFBb0FxUUNJUUlnQUVFQU5nSklJQUJCQURvQVRDQUNJQUJCeUFCcUVMTUdJQUFnQUNnQ25BSW9BZ0EyQWtRRFFDQUFLQUpFSUFBb0Fwd0NLQUlJVFFSL0lBQW9Ba1FnQUNnQ29BSW9BaEJCR0dvUXl3ZE5CVUVBQzBFQmNRUkFJQUFnQUNnQ29BSW9BaEJCR0dvZ0FDZ0NSRUVCYXhER0RqWUNRQ0FBSUFBb0FrQVF1QUUyQWp3Z0FFRUJPZ0E3SUFBZ0FDZ0NRRFlDTkNBQUtBSTBJUWdqQUVFUWF5SUNKQUFnQWlBSU5nSU1JQUlvQWd3UWtnSWhDQ0FDUVJCcUpBQWdBQ0FJTmdJd0lBQW9BalFoQ0NNQVFSQnJJZ0lrQUNBQ0lBZzJBZ3dqQUVFUWF5SUlJQUlvQWd3MkFnd2dDQ2dDRENJSUtBSUFJQWdvQWdScUlRZ2dBa0VRYWlRQUlBQWdDRFlDTEFOQUlBQW9BakFnQUNnQ0xFY0VRQ0FBSUFBb0FqQXRBQUE2QUNzQ1FDQUFMQUFyUVFsR0JFQWdBQ2dDcEFKQklDQUhLQUlFRUxJR0RBRUxJQUFvQXFRQ0lRZ2pBRUVRYXlJQ0pBQWdBaUFJTmdJTUlBSWdBRUVyYWpZQ0NDQUNLQUlNUVF4cUlBSW9BZ2dRc2hnZ0FrRVFhaVFBQ3lBQUxBQXJRWUFCY1FSQUlBQkJBRG9BT3dzZ0FDQUFLQUl3UVFGcU5nSXdEQUVMQ3lBQUtBS2tBaERPQ0NBQUxRQTdRUUZ4QkVBZ0FDZ0NwQUloQWlBQVFRYzJBaUFnQUVFQU9nQWtJQUlnQUVFZ2FoQ3pCaUFBSUFCQlBHbzJBaEFnQUNBQUtBSkFOZ0lVSUFBZ0J6WUNHQUpBQWtBZ0FDZ0NSQ0FBS0FLY0FpZ0NBRWNOQUNBQUtBSkVJQUFvQXB3Q0tBSUlSdzBBSUFBb0FxUUNRU0FnQUVFUWFpSUNRUUVnQUNnQ25BSW9BZ1FRd2djUXNnWWdBQ2dDcEFJaENDQUFJQUlnQUNnQ25BSW9BZ1FnQUNnQ25BSW9BZ3dRd2djMkFnd2dBRUVCTmdJSUlBaEIzZ0FnQUVFTWFpQUFRUWhxRUlrRktBSUFFTElHREFFTEFrQWdBQ2dDUkNBQUtBS2NBaWdDQUVZRVFDQUFLQUtrQWtFZ0lBQkJFR29pQWtFQklBQW9BcHdDS0FJRUVNSUhFTElHSUFBb0FxUUNRZDRBSUFJZ0FDZ0NuQUlvQWdRZ0FDZ0NQRUVCYWhEQ0J4Q3lCZ3dCQ3dKQUlBQW9Ba1FnQUNnQ25BSW9BZ2hHQkVBZ0FDZ0NwQUpCM2dBZ0FFRVFha0VCSUFBb0Fwd0NLQUlNRU1JSEVMSUdEQUVMSUFBb0FxUUNRZDRBSUFCQkVHcEJBU0FBS0FJOFFRRnFFTUlIRUxJR0N3c0xJQUFvQXFRQ0VNNElDeUFBSUFBb0FrUkJBV28yQWtRTUFRc0xJQUFvQXFRQ0lRSWdBRUVBTmdJQUlBQkJBRG9BQkNBQ0lBQVFzd1lMSXdCQkVHc2lDQ1FBSUFnZ0FFR0FBbW8yQWdnZ0NDQUlLQUlJSWdjMkFnd2dCeENYR0NBSEtBSUFCRUFqQUVFUWF5SUpKQUFnQ1NBSE5nSU1JQWtvQWd3aUFpRU9JQUlvQWdBaEVDTUFRUkJySWdJa0FDQUNJQTQyQWd3Z0FpQVFOZ0lJSUFJZ0FpZ0NEQ0lPS0FJRU5nSUVBMEFnQWlnQ0NDQUNLQUlFUndSQUlBNFF0d0VoRUNBQ0lBSW9BZ1JCRkdzaUVUWUNCQ0FRSUJFUWd3RVFsQmdNQVFzTElBNGdBaWdDQ0RZQ0JDQUNRUkJxSkFBZ0NVRVFhaVFBSUFjUXR3RWdCeWdDQUNBSEVMRUdFSllZQ3lBSUtBSU1HaUFJUVJCcUpBQWdBRUd3QW1va0FDQUJRUUE2QUZjZ0R4Q0hCU01BUVJCcklnQWdBVUhJQUdvMkFnd2dBQ2dDRENJQUlBQW9BZ0JCTkdvMkFnQU1BUXNMSUFvdEFBTkJBWEVFUUNBQlFkZ0FhaERPQ0FzakFFRVFheUlBSkFBZ0FDQUJRZGdBYWpZQ0RDQUFLQUlNSWdJUW9SZ2dBa0VNYWhCUklBQkJFR29rQUNBQlFZQUNhaVFBSXdCQkVHc2lBQ1FBSUFBZ0F6WUNEQ0FBSUFRMkFnZ2dBeUFBS0FJSVFRUnFFTzBLSUFCQkVHb2tBQ0FFRU1BT0dpQUVRYUFCYWlRQUlBc1Fnd0VhSUFaQklHb2tBQ0FNUVFScUlnSWdBeENlQVNBREVBOGFJQU1nQlVHSUEyb1EwUTRnREVFUWFpSUJJQU1RbmdFZ0F4QVBHaUFOS0FJWUlRQWdEVUVBTmdJWUlBQUVRQ0FBQkVBZ0FFR1lBMm9RbVFzZ0FFR0lBMm9RMHc0Z0FFSDBBbW9RSGlBQVFRUnFFSTRFR2dzZ0FCQWZDeUFOUVNCcUpBQWdEQ2dDRUNBQklBd3RBQnNpQUVFWWRFRVlkVUVBU0NJRkd5QU1LQUlVSUFBZ0JSc1FEU0FCRUE4YUlBSVFEeG9nRXhDOEF5QU1RWUFEYWhBeUdpQU1RWkFEYWlRQUJVSFFzeUFnQVVFWWFoQVNFT0lCRU9JQkdpQUJRVFJxSVFFTUFRc0xDd3NBSUFCQnVQc2ZFTzBDQ3hJQUlBQkJoQUZCL2Y0RFFYeEJBeERLQVFzTEFDQUFRWlQ3SHhEdEFnc0xBQ0FBUWZENkh4RHRBZ3NMQUNBQVFjejZIeER0QWdzTEFDQUFRYWo2SHhEdEFnc0xBQ0FBUVlUNkh4RHRBZ3NRQUNBQUlBRkJxTmdNUWZFaEVMVURDN3dCQVFWL0l3QkJFR3NpQXlRQUlBTWdBU2tDQURjRENDQURJQUlwQWdBM0F3QWpBRUVRYXlJQ0pBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJQk5nSU1JQUlnQVRZQ0NDTUFRUkJySWdFa0FDQUFRWXdCYWlJRUVMMEtJUVVnQWlnQ0NDRUdJQUFvQWdnaEJ5QUJJQU1wQWdnM0F3Z2dBU0FES1FJQU53TUFJQVFnQlNBSElBWWdBRUhZQW1vZ0FVRUlhaUFCRUlBTUlnQVFLQ0FFSUFRb0FoaEJBV28yQWhnZ0FVRVFhaVFBSUFKQkVHb2tBQ0FEUVJCcUpBQWdBQXNMQUNBQVFhejRIeER0QWdzTkFDQUFJQUZCclBnZkVOQU1DenNCQW45QkFpRUNJQUFoQXlBQlFRSlBCRUJCZnlBQlFRSjBJQUZCLy8vLy93TkxHeEFWSVFNZ0FTRUNDeUFBSUFNMkFnZ2dBQ0FDTmdJUUN3c0FJQUJCblBjZkVPMENDdzBBSUFBZ0FVR2M5eDhRMEF3TEN3QWdBRUd3OWg4UTdRSUxDd0FnQUVHTTloOFE3UUlMRlFBZ0FDQUJRYkxaREVFSlFiZ2lRYlFoRUlnVEM4RUJBUUovSXdCQm9BRnJJZ1lrQUFKQUlBQW9BZ0FnQkJCUVJRUkFJQVpCa0FGcUlnQWdBU0FDRUxNQ0lBWkJDR29pQVNBQVFiN05CeEF0SUFNZ0FSQ0pBaUVGSUFFUUR4b2dBQkFQR2d3QkN5QUFLQUlBSUFRUVBpSUVRU0JHRFFBZ0JrRUlhaERPQVNFQUlBWkJrQUZxSWdVZ0FTQUNFTE1DSUFBZ0JSQVNRZTJtQ2hBT0lBUVFJVUg4bHdnUURob2dCUkFQR2lBRklBQkJCR29RUWlBRElBVVFpUUloQlNBR1FaQUJhaEFQR2lBQUVMc0JHZ3NnQmtHZ0FXb2tBQ0FGQzhFQkFRSi9Jd0JCb0FGcklnWWtBQUpBSUFBb0FnQWdCQkIzUlFSQUlBWkJrQUZxSWdBZ0FTQUNFTE1DSUFaQkNHb2lBU0FBUWZmTkJ4QXRJQU1nQVJDSkFpRUZJQUVRRHhvZ0FCQVBHZ3dCQ3lBQUtBSUFJQVFRUGlJRVFTQkdEUUFnQmtFSWFoRE9BU0VBSUFaQmtBRnFJZ1VnQVNBQ0VMTUNJQUFnQlJBU1FlMm1DaEFPSUFRUUlVSDhsd2dRRGhvZ0JSQVBHaUFGSUFCQkJHb1FRaUFESUFVUWlRSWhCU0FHUVpBQmFoQVBHaUFBRUxzQkdnc2dCa0dnQVdva0FDQUZDMEFBSUFBZ0FTa0NBRGNDQUNBQUlBRW9BZ2cyQWdnZ0FFRU1haUFCUVF4cUVMUUNHaUFBUVNCcUlBRkJJR29Rd2dFZ0FFSHNBR29nQVVIc0FHb1F3Z0VMRlFBZ0FFR0E4eDgyQWdBZ0FFRUVhaERvQVNBQUN3c0FJQUJCOFBFZkVPMENDd3NBSUFCQnpQRWZFTzBDQ3dzQUlBQkJxUEVmRU8wQ0MyZ0FJQUFnQVNrQ0FEY0NBQ0FBUVFocUlnQWdBVUVJYWlJQktBSUFOZ0lBSUFBZ0FTZ0NCRFlDQkNBQUlBRW9BZ2cyQWdnZ0FDQUJLQUlNTmdJTUlBQkJFR29nQVVFUWFoQzBBaG9nQUVFa2FpQUJRU1JxRU1JQklBQkI4QUJxSUFGQjhBQnFFTUlCQ3dzQUlBQkJoUEVmRU8wQ0N6TUJBWDhnQVVHQWdJQ0FBVThFUUJBQkFBc2dBQ0FCRU5zWUlnSTJBZ0FnQUNBQ05nSUVJQUFnQWlBQlFRUjBhallDQ0F0Z0FRSi9JQUJCQURZQ0NDQUFRZ0EzQWdBZ0FTZ0NCQ0lDSUFFb0FnQWlBMGNFUUNBQUlBSWdBMnRCQkhVUXV4WWdBQ2dDQkNFQ0lBQWdBU2dDQkNBQktBSUFJZ0ZySWdCQkFFb0VmeUFDSUFFZ0FCQjlJQUJxQlNBQ0N6WUNCQXNMSkFBZ0FDQUJLQUlBTmdJQUlBQkJCR29nQVVFRWFoQ2xBaG9nQUNBQktBSVFOZ0lRQzdNREFRSi9Jd0JCb0FGcklnWWtBQUpBQWtBZ0FDZ0NBQ0FGRUNBaUJ5OEJIa0VjUndSQUlBWkJrQUZxSWdBZ0FTQUNFTE1DSUFaQkNHb2lBU0FBUWUrVEJ4QXRJQVFnQVJDSkFpRUZJQUVRRHhvZ0FCQVBHZ3dCQ3lBQUtBSUFJQWNvQWdBb0FnZ2lCUkIzUlFSQUlBWkJrQUZxSWdBZ0FTQUNFTE1DSUFaQkNHb2lBU0FBUWRYTkJ4QXRJQVFnQVJDSkFpRUZJQUVRRHhvZ0FCQVBHZ3dCQ3lBQUtBSUFJQVVRUGlJRlFTQkhCRUFnQmtFSWFoRE9BU0VBSUFaQmtBRnFJZ01nQVNBQ0VMTUNJQUFnQXhBU1FmMm1DaEFPSUFVUUlVSDhsd2dRRGhvZ0F4QVBHaUFESUFCQkJHb1FRaUFFSUFNUWlRSWhCU0FHUVpBQmFoQVBHaUFBRUxzQkdnd0JDMEVBSVFVZ0EwVU5BQ0FHUWdBM0F3QWdBQ2dDQUNBSEtBSUFLQUlNSUFZUXd3VkZEUUVnQmlrREFDQURyVkVOQUNBR1FRaHFFTTRCSVFBZ0JrR1FBV29pQXlBQklBSVFzd0lnQUNBREVCSkJ2dVVKRUE0Z0Jpa0RBQkREQkVHbHF3Y1FEaG9nQXhBUEdpQURJQUJCQkdvUVFpQUVJQU1RaVFJaEJTQUdRWkFCYWhBUEdpQUFFTHNCR2dzZ0JrR2dBV29rQUNBRkR3dEJySjBKUVpDZEFrR3VDRUhMNVFFUUFBQUxDd0FnQUNBQlFod1F4QklMRFFBZ0FDQUJRYWp4SHhEUURBdi9Cd0VHZnlNQVFiQUdheUlGSkFBZ0FTZ0NCQ2dDQUNFSkFrQUNRQUpBQWtBZ0FDZ0NBQ2dDQUNnQ0FCQkhSUTBBQWtBQ1FBSkFBa0FDUUNBRUVQY0JJZ1pCQVdzT0F3SUJBd0FMSUFaQi8vLy8vd2RHRFFNTElBVkI4QVJxSWdjZ0FDZ0NBRUZ5SUFRUUVDQUhRWU9XQ2hBT0dpQUhJQUFvQWdCQmdBTnFRUndnQ1JDUEFSQU9HaUFIUWR1K0RCQU9HaUFGUWVBRWFpSUlJQUFnQVNBQ0lBTWdCRUgvLy8vL0J4Q0tBU0FISUFnUUVob2dCMEgzOEF3UURob2dCVUhRQkdvaUFTQUFJQVFRZ0FJZ0J5QUJFQklhSUFVb0Fxd0dJUVlnQVJBUEdpQUlFQThhSUFjUUVRd0VDeUFBS0FJUURRUWdBU2dDQkNnQ0FDRUdJQVVnQkNnQ0tEWUM0QVFnQUVFRWFpQUZRZUFFYWhDWkFTRUhJQVZCQVRZQ25BTWdCVUg1M0FjMkFwZ0RJQVZCcHlKQnF5SWdCa0VMUmhzMkFwUURJQVVnQURZQ2tBTWdCVUVBTmdLTUF5QUZRYjhRTmdLSUF5QUZRYUFEYWlBQkVMUUNHaUFGUWJRRGFpQUNFTUlCSUFWQmdBUnFJQVFRd2dGQnlBRVFGU0lHUWZ6OUh6WUNBQ0FHSUFVcEE0Z0ROd0lFSUFaQkRHb2dCVUdRQTJvaUNCQ3JBeUFGSUFZMkFvQUZJQWNnQlVId0JHb2lCaENUQVNBR0VCWWdDQkNjQWd3QkN5QUFLQUlRRFFRZ0FTZ0NCQ2dDQUNFR0lBVWdCQ2dDS0RZQzRBUWdBRUVFYWlBRlFlQUVhaENaQVNFSElBVkJBallDMUFFZ0JVRzIxUWMyQXRBQklBVkJxQ0pCckNJZ0JrRUxSaHMyQXN3QklBVWdBRFlDeUFFZ0JVRUFOZ0xFQVNBRlFiOFFOZ0xBQVNBRlFkZ0JhaUFCRUxRQ0dpQUZRZXdCYWlBQ0VNSUJJQVZCdUFKcUlBUVF3Z0ZCeUFFUUZTSUdRYUQrSHpZQ0FDQUdJQVVwQThBQk53SUVJQVpCREdvZ0JVSElBV29pQ0JDckF5QUZJQVkyQW9BRklBY2dCVUh3QkdvaUJoQ1RBU0FHRUJZZ0NCQ2NBZ3NnQUVFb2FpRUhJQUFvQWlRaEJnTkFJQVlnQjBZTkFTQUdLQUlRSWdoQkFXdEJBazhFUUNBRlFmQUVhaUlISUFBb0FnQkJjaUFFRUJBZ0JVSGdCR29pQ2lBQUtBSUFRYVlpUWFvaUlBbEJDMFliRURjZ0J5QUtFQklhSUFkQmc1WUtFQTRhSUFjZ0FDZ0NBRUdBQTJwQkhDQUpFSThCRUE0YUlBZEJpTTBNRUE0YUlBVkIwQVJxSWdrZ0FDQUJJQUlnQXlBRUlBZ1FpZ0VnQnlBSkVCSWFJQVVvQXF3R0lRWWdDUkFQR2lBS0VBOGFJQWNRRVF3REJTQUdFRXdoQmd3QkN3QUxBQXRCQUNFR0lBQW9BaEFOQUNBRklBUW9BaWcyQXRBRUlBQkJCR29nQlVIUUJHb1FtUUVoQXlBRlFRQTJBdVFFSUFWQjR4QTJBdUFFSUFVZ0FEWUNCQ0FGUVFocUlnY2dCVUhnQkdvZ0JVRUVhaUFCSUFJZ0JCRC9BU0FESUFWQjhBUnFJQWNRL2dFaUFCQ1RBU0FBRUJZZ0J4RG9BUXNnQlVHd0Jtb2tBQ0FHRHd0QjA1RUhRWkNkQWtITkUwSGcxQVFRQUFBTFFkT1JCMEdRblFKQjJoTkI0TlFFRUFBQUM3SUVBUVovSXdCQnNBTnJJZ1lrQUFKQUFrQWdBQ2dDQUNnQ0FDZ0NBQkJIUlEwQUlBUVE5d0VpQjBFQlJpQUhRZi8vLy84SFJuSkZCRUFnQmtId0FXb2lCU0FBS0FJQVFYSWdCQkFRSUFaQjRBRnFJZ2dnQUNnQ0FFR0xJeEEzSUFVZ0NCQVNHaUFGUVlPV0NoQU9HaUFGSUFBb0FnQkJnQU5xUVJ3Z0FTZ0NCQ2dDQUJDUEFSQU9HaUFGUWN2SERCQU9HaUFHUWRBQmFpSUpJQUFnQVNBQ0lBTWdCRUgvLy8vL0J4Q0tBU0FGSUFrUUVob2dCVUgzOEF3UURob2dCa0hBQVdvaUFTQUFJQVFRZ0FJZ0JTQUJFQklhSUFZb0Fxd0RJUWNnQVJBUEdpQUpFQThhSUFnUUR4b2dCUkFSREFJTElBQkJLR29oQlNBQUtBSWtJUWNEUUNBRklBZEdEUUVnQnlnQ0VDSUtRUVJIQkVBZ0JrSHdBV29pQlNBQUtBSUFRWElnQkJBUUlBWkI0QUZxSWdnZ0FDZ0NBRUdLSXhBM0lBVWdDQkFTR2lBRlFZT1dDaEFPR2lBRklBQW9BZ0JCZ0FOcVFSd2dBU2dDQkNnQ0FCQ1BBUkFPR2lBRlFkN2pEQkFPR2lBR1FkQUJhaUlKSUFBZ0FTQUNJQU1nQkNBS0VJb0JJQVVnQ1JBU0dpQUdLQUtzQXlFSElBa1FEeG9nQ0JBUEdpQUZFQkVNQXdVZ0J4Qk1JUWNNQVFzQUN3QUxRUUFoQnlBQUtBSVFEUUFnQmlBRUtBSW9OZ0xRQVNBQVFRUnFJQVpCMEFGcUVKa0JJUU1nQmtFQU5nTGtBU0FHUWVJUU5nTGdBU0FHSUFBMkFzQUJJQVpCQ0dvaUJTQUdRZUFCYWlBR1FjQUJhaUFCSUFJZ0JCRC9BU0FESUFaQjhBRnFJQVVRL2dFaUFCQ1RBU0FBRUJZZ0JSRG9BUXNnQmtHd0Eyb2tBQ0FIQzhrRUFRWi9Jd0JCc0FOcklnWWtBQUpBQWtBZ0FDZ0NBQ2dDQUNnQ0FCQkhSUTBBSUFRUTl3RWlCMEVEUmlBSFFmLy8vLzhIUm5KRkJFQWdCa0h3QVdvaUJTQUFLQUlBUVhJZ0JCQVFJQVpCNEFGcUlnZ2dBQ2dDQUVHRkl4QTNJQVVnQ0JBU0dpQUZRWU9XQ2hBT0dpQUZJQUFvQWdCQmdBTnFRUndnQVNnQ0JDZ0NBQkNQQVJBT0dpQUZRYjIvREJBT0dpQUdRZEFCYWlJSklBQWdBU0FDSUFNZ0JFSC8vLy8vQnhDS0FTQUZJQWtRRWhvZ0JVSDM4QXdRRGhvZ0JrSEFBV29pQVNBQUlBUVFnQUlnQlNBQkVCSWFJQVlvQXF3RElRY2dBUkFQR2lBSkVBOGFJQWdRRHhvZ0JSQVJEQUlMSUFCQktHb2hCU0FBS0FJa0lRY0RRQ0FGSUFkR0RRRUNRQUpBQWtBZ0J5Z0NFQ0lJRGdRQ0FRRUNBQXNnQ0VHVUtVWWdDRUgxS1VaeURRRUxJQVpCOEFGcUlnVWdBQ2dDQUVGeUlBUVFFQ0FHUWVBQmFpSUpJQUFvQWdCQmhDTVFOeUFGSUFrUUVob2dCVUdEbGdvUURob2dCU0FBS0FJQVFZQURha0VjSUFFb0FnUW9BZ0FRandFUURob2dCVUhmelF3UURob2dCa0hRQVdvaUNpQUFJQUVnQWlBRElBUWdDQkNLQVNBRklBb1FFaG9nQmlnQ3JBTWhCeUFLRUE4YUlBa1FEeG9nQlJBUkRBTUxJQWNRVENFSERBQUxBQXRCQUNFSElBQW9BaEFOQUNBR0lBUW9BaWcyQXRBQklBQkJCR29nQmtIUUFXb1FtUUVoQXlBR1FRQTJBdVFCSUFaQjRSQTJBdUFCSUFZZ0FEWUN3QUVnQmtFSWFpSUZJQVpCNEFGcUlBWkJ3QUZxSUFFZ0FpQUVFUDhCSUFNZ0JrSHdBV29nQlJEK0FTSUFFSk1CSUFBUUZpQUZFT2dCQ3lBR1FiQURhaVFBSUFjTDhBVUJDSDhqQUVHd0Eyc2lCaVFBQWtBQ1FBSkFJQUFvQWdBb0FnQW9BZ0FRUjBVTkFDQUJLQUlFS0FJQUlRVWdCQkQzQVNJSFFRRkdJQWRCLy8vLy93ZEdja1VFUUNBRlFRRVE0Z01oQnlBR1FmQUJhaUlGSUFBb0FnQkJjaUFFRUJBZ0JrSGdBV29pQ0NBQUtBSUFJQWNRTnlBRklBZ1FFaG9nQlVHRGxnb1FEaG9nQlNBQUtBSUFRWUFEYWtFY0lBRW9BZ1FvQWdBUWp3RVFEaG9nQlVITHh3d1FEaG9nQmtIUUFXb2lDU0FBSUFFZ0FpQURJQVJCLy8vLy93Y1FpZ0VnQlNBSkVCSWFJQVZCOS9BTUVBNGFJQVpCd0FGcUlnRWdBQ0FFRUlBQ0lBVWdBUkFTR2lBR0tBS3NBeUVISUFFUUR4b2dDUkFQR2lBSUVBOGFJQVVRRVF3REN5QUFRU2hxSVFrZ0FDZ0NKQ0VISUFWQnh5bHJJUW9nQlVFR1JpRUxJQVZCaFM5R0lRd0RRQ0FISUFsR0RRRWdCeWdDRUNFSUFrQUNRQUpBQWtBQ1FBSkFJQW9PSWdJQ0FRRUVCQUVCQkFnSUJBUURBd2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBUVFBQ3lBTERRTWdERVVOQndzZ0NFSENLV3RCQkU4TkJnd0RDeUFJUWNFcGEwRUdTUTBDREFVTElBaEJ3eWxyUVFKUERRUU1BUXNnQ0VIQ0tXdEJBMDhOQXdzZ0J4Qk1JUWNNQUFzQUMwRUFJUWNnQUNnQ0VBMEJJQVlnQkNnQ0tEWUMwQUVnQUVFRWFpQUdRZEFCYWhDWkFTRURJQVpCQURZQzVBRWdCa0hnRURZQzRBRWdCaUFBTmdMQUFTQUdRUWhxSWdVZ0JrSGdBV29nQmtIQUFXb2dBU0FDSUFRUS93RWdBeUFHUWZBQmFpQUZFUDRCSWdBUWt3RWdBQkFXSUFVUTZBRU1BUXNnQlVFQUVPSURJUWNnQmtId0FXb2lCU0FBS0FJQVFYSWdCQkFRSUFaQjRBRnFJZ2tnQUNnQ0FDQUhFRGNnQlNBSkVCSWFJQVZCMzVVS0VBNGFJQVVnQUNnQ0FFR0FBMnBCSENBQktBSUVLQUlBRUk4QkVBNGFJQVZCclpnS0VBNGFJQVVnQUNnQ0FFR0FBMnBCRENBSUVJOEJFQTRhSUFWQjEvZ01FQTRhSUFaQjBBRnFJZ29nQUNBQklBSWdBeUFFSUFnUWlnRWdCU0FLRUJJYUlBWW9BcXdESVFjZ0NoQVBHaUFKRUE4YUlBVVFFUXNnQmtHd0Eyb2tBQ0FIQ3hnQUlBQWdBU0FDSUFNZ0JFSGZFRUhMeHd4QkFSQ1ZDQXNZQUNBQUlBRWdBaUFESUFSQjNoQkJ2YjhNUVFNUWxRZ0xHQUFnQUNBQklBSWdBeUFFUWQwUVFjdkhERUVCRUpVSUN4Z0FJQUFnQVNBQ0lBTWdCRUhjRUVITHh3eEJBUkNWQ0F1SEF3RUdmeU1BUWJBRGF5SUZKQUFnQVNnQ0JDZ0NBQ0VIQWtBQ1FDQUFLQUlBS0FJQUtBSUFFRWRGRFFBZ0JCRDNBU0lJUVFGR0lBaEIvLy8vL3dkR2NrVUVRQ0FGUWZBQmFpSUdJQUFvQWdCQmNpQUVFQkFnQlVIZ0FXb2lDaUFBS0FJQVFlMGdFRGNnQmlBS0VCSWFJQVpCZzVZS0VBNGFJQVlnQUNnQ0FFR0FBMnBCSENBSEVJOEJFQTRhSUFaQnk4Y01FQTRhSUFWQjBBRnFJZ2NnQUNBQklBSWdBeUFFUWYvLy8vOEhFSW9CSUFZZ0J4QVNHaUFHUWZmd0RCQU9HaUFGUWNBQmFpSURJQUFnQkJDQUFpQUdJQU1RRWhvZ0JTZ0NyQU1oQ1NBREVBOGFJQWNRRHhvZ0NoQVBHaUFHRUJFTElBaEIvLy8vL3dkR0RRQWdDRUVCUncwQkMwRUFJUWtnQUNnQ0VBMEFJQVVnQkNnQ0tEWUMwQUVnQUVFRWFpQUZRZEFCYWhDWkFTRURJQVZCQURZQzVBRWdCVUhiRURZQzRBRWdCU0FBTmdMQUFTQUZRUWhxSWdZZ0JVSGdBV29nQlVIQUFXb2dBU0FDSUFRUS93RWdBeUFGUWZBQmFpQUdFUDRCSWdBUWt3RWdBQkFXSUFZUTZBRUxJQVZCc0FOcUpBQWdDUXV1QkFFRmZ5TUFRYkFEYXlJR0pBQWdBU2dDQkNnQ0FDRUlBa0FDUUNBQUtBSUFLQUlBS0FJQUVFZEZEUUFnQkJEM0FTSUhRUUZHSUFkQi8vLy8vd2RHY2tVRVFDQUdRZkFCYWlJRklBQW9BZ0JCY2lBRUVCQWdCa0hnQVdvaUNTQUFLQUlBUWJJaUVEY2dCU0FKRUJJYUlBVkJnNVlLRUE0YUlBVWdBQ2dDQUVHQUEycEJIQ0FJRUk4QkVBNGFJQVZCeThjTUVBNGFJQVpCMEFGcUlnZ2dBQ0FCSUFJZ0F5QUVRZi8vLy84SEVJb0JJQVVnQ0JBU0dpQUZRZmZ3REJBT0dpQUdRY0FCYWlJQklBQWdCQkNBQWlBRklBRVFFaG9nQmlnQ3JBTWhCeUFCRUE4YUlBZ1FEeG9nQ1JBUEdpQUZFQkVNQWdzZ0FFRW9haUVGSUFBb0FpUWhCd05BSUFVZ0IwWU5BU0FIS0FJUVFRVkdCRUFnQmtId0FXb2lCU0FBS0FJQVFYSWdCQkFRSUFaQjRBRnFJZ2tnQUNnQ0FFR3hJaEEzSUFVZ0NSQVNHaUFGUVlPV0NoQU9HaUFGSUFBb0FnQkJnQU5xUVJ3Z0NCQ1BBUkFPR2lBRlFmYmtEQkFPR2lBR1FkQUJhaUlJSUFBZ0FTQUNJQU1nQkVFRkVJb0JJQVVnQ0JBU0dpQUdLQUtzQXlFSElBZ1FEeG9nQ1JBUEdpQUZFQkVNQXdVZ0J4Qk1JUWNNQVFzQUN3QUxRUUFoQnlBQUtBSVFEUUFnQmlBRUtBSW9OZ0xRQVNBQVFRUnFJQVpCMEFGcUVKa0JJUU1nQmtFQU5nTGtBU0FHUWRvUU5nTGdBU0FHSUFBMkFzQUJJQVpCQ0dvaUJTQUdRZUFCYWlBR1FjQUJhaUFCSUFJZ0JCRC9BU0FESUFaQjhBRnFJQVVRL2dFaUFCQ1RBU0FBRUJZZ0JSRG9BUXNnQmtHd0Eyb2tBQ0FIQzk0RUFRcC9Jd0JCc0FOcklnVWtBQ0FCS0FJRUtBSUFJUW9DUUFKQUlBQW9BZ0FvQWdBb0FnQVFSMFVOQUNBRUVQY0JJZ1pCQVVZZ0JrSC8vLy8vQjBaeVJRUkFJQVZCOEFGcUlnWWdBQ2dDQUVGeUlBUVFFQ0FGUWVBQmFpSUhJQUFvQWdCQjhDQVFOeUFHSUFjUUVob2dCa0dEbGdvUURob2dCaUFBS0FJQVFZQURha0VjSUFvUWp3RVFEaG9nQmtITHh3d1FEaG9nQlVIUUFXb2lDQ0FBSUFFZ0FpQURJQVJCLy8vLy93Y1FpZ0VnQmlBSUVCSWFJQVpCOS9BTUVBNGFJQVZCd0FGcUlnRWdBQ0FFRUlBQ0lBWWdBUkFTR2lBRktBS3NBeUVKSUFFUUR4b2dDQkFQR2lBSEVBOGFJQVlRRVF3Q0N5QUFRU2hxSVEwZ0FDZ0NKQ0VJQTBBZ0NDQU5SZzBCSUFnb0FoQWlCa0dUS1d0QkFra2lEaUFHUWZRcGEwRUNTWElnQmtWeVJRUkFJQVZCOEFGcUlnY2dBQ2dDQUVGeUlBUVFFQ0FGUWVBQmFpSUxJQUFvQWdCQjd5QVFOeUFISUFzUUVob2dCMEdEbGdvUURob2dCeUFBS0FJQVFZQURha0VjSUFvUWp3RVFEaG9nQjBHYTFnRVFEaG9nQjBHcTVRd1FEaG9nQlVIUUFXb2lEQ0FBSUFFZ0FpQURJQVFnQmhDS0FTQUhJQXdRRWhvZ0JTZ0NyQU1oQ1NBTUVBOGFJQXNRRHhvZ0J4QVJDeUFPSUFaQjlDbHJRUUpKY2tFQklBWWJSUTBDSUFnUVRDRUlEQUFMQUF0QkFDRUpJQUFvQWhBTkFDQUZJQVFvQWlnMkF0QUJJQUJCQkdvZ0JVSFFBV29RbVFFaEF5QUZRUUEyQXVRQklBVkIyUkEyQXVBQklBVWdBRFlDd0FFZ0JVRUlhaUlHSUFWQjRBRnFJQVZCd0FGcUlBRWdBaUFFRVA4QklBTWdCVUh3QVdvZ0JoRCtBU0lBRUpNQklBQVFGaUFHRU9nQkN5QUZRYkFEYWlRQUlBa0x3UVFCQm44akFFR3dBMnNpQmlRQUlBRW9BZ1FvQWdBaENBSkFBa0FnQUNnQ0FDZ0NBQ2dDQUJCSFJRMEFJQVFROXdFaUIwRUJSaUFIUWYvLy8vOEhSbkpGQkVBZ0JrSHdBV29pQlNBQUtBSUFRWElnQkJBUUlBWkI0QUZxSWdrZ0FDZ0NBRUhXSUVIWklDQUlRY2tpUmhzUU55QUZJQWtRRWhvZ0JVR0RsZ29RRGhvZ0JTQUFLQUlBUVlBRGFrRWNJQWdRandFUURob2dCVUhMeHd3UURob2dCa0hRQVdvaUNDQUFJQUVnQWlBRElBUkIvLy8vL3djUWlnRWdCU0FJRUJJYUlBVkI5L0FNRUE0YUlBWkJ3QUZxSWdFZ0FDQUVFSUFDSUFVZ0FSQVNHaUFHS0FLc0F5RUhJQUVRRHhvZ0NCQVBHaUFKRUE4YUlBVVFFUXdDQ3lBQVFTaHFJUVVnQUNnQ0pDRUhBMEFnQlNBSFJnMEJJQWNvQWhBaUNnUkFJQVpCOEFGcUlnVWdBQ2dDQUVGeUlBUVFFQ0FHUWVBQmFpSUpJQUFvQWdCQjFTQkIyQ0FnQ0VISklrWWJFRGNnQlNBSkVCSWFJQVZCZzVZS0VBNGFJQVVnQUNnQ0FFR0FBMnBCSENBSUVJOEJFQTRhSUFWQml0NE1FQTRhSUFaQjBBRnFJZ2dnQUNBQklBSWdBeUFFSUFvUWlnRWdCU0FJRUJJYUlBWW9BcXdESVFjZ0NCQVBHaUFKRUE4YUlBVVFFUXdEQlNBSEVFd2hCd3dCQ3dBTEFBdEJBQ0VISUFBb0FoQU5BQ0FHSUFRb0FpZzJBdEFCSUFCQkJHb2dCa0hRQVdvUW1RRWhBeUFHUVFBMkF1UUJJQVpCMkJBMkF1QUJJQVlnQURZQ3dBRWdCa0VJYWlJRklBWkI0QUZxSUFaQndBRnFJQUVnQWlBRUVQOEJJQU1nQmtId0FXb2dCUkQrQVNJQUVKTUJJQUFRRmlBRkVPZ0JDeUFHUWJBRGFpUUFJQWNMaHdNQkJuOGpBRUd3QTJzaUJTUUFBa0FDUUNBQUtBSUFLQUlBS0FJQUVFZEZEUUFnQkJEM0FTSUhRUUZHSUFkQi8vLy8vd2RHY2tVRVFDQUZRZkFCYWlJR0lBQW9BZ0JCY2lBRUVCQWdCVUhnQVdvaUNTQUFLQUlBS0FJQUtBSUFFSUVDSUFZZ0NSQVNHaUFHUVltV0NoQU9HaUFHSUFBb0FnQkJnQU5xUVJ3Z0FTZ0NCQ2dDQUJDUEFSQU9HaUFHUWN2SERCQU9HaUFGUWRBQmFpSUtJQUFnQVNBQ0lBTWdCRUgvLy8vL0J4Q0tBU0FHSUFvUUVob2dCa0gzOEF3UURob2dCVUhBQVdvaUF5QUFJQVFRZ0FJZ0JpQURFQklhSUFVb0Fxd0RJUWdnQXhBUEdpQUtFQThhSUFrUUR4b2dCaEFSQ3lBSFFmLy8vLzhIUmcwQUlBZEJBVWNOQVF0QkFDRUlJQUFvQWhBTkFDQUZJQVFvQWlnMkF0QUJJQUJCQkdvZ0JVSFFBV29RbVFFaEF5QUZRUUEyQXVRQklBVkIxeEEyQXVBQklBVWdBRFlDd0FFZ0JVRUlhaUlHSUFWQjRBRnFJQVZCd0FGcUlBRWdBaUFFRVA4QklBTWdCVUh3QVdvZ0JoRCtBU0lBRUpNQklBQVFGaUFHRU9nQkN5QUZRYkFEYWlRQUlBZ0xod0VCQW44akFFSHdBV3NpQXlRQUlBQW9BaEJGQkVBZ0F5QUVLQUlvTmdMc0FTQUFRUVJxSUFOQjdBRnFFSmtCSVFZZ0EwRUFOZ0lVSUFOQjFoQTJBaEFnQXlBQU5nSU1JQU5CR0dvaUJTQURRUkJxSUFOQkRHb2dBU0FDSUFRUS93RWdCaUFEUWRBQmFpQUZFUDRCSWdBUWt3RWdBQkFXSUFVUTZBRUxJQU5COEFGcUpBQkJBQXVpQVFFRWZ3SkFJQUFvQWdnZ0FTZ0NCRWtFUUNBQUVQZ05JQUFnQVNnQ0JCQy9GZ3dCQ3lBQUVQWU5DeUFBSUFFb0FnUWlBallDQkFOQUlBSWdCRXNFUUNBRVFSeHNJZ01nQUNnQ0FHb2hBaUFCS0FJQUlBTnFJUU1nQWtFQU9nQVFJQUpCQURvQUFDQURMUUFRQkVBZ0FpQURFRlFpQlNBREtBSU1OZ0lNSUFWQkFUb0FFQXNnQWlBREtRSVVOd0lVSUFSQkFXb2hCQ0FBS0FJRUlRSU1BUXNMQzdZREFRcC9Jd0JCc0FOcklnVWtBQUpBQWtBZ0FDZ0NBQ2dDQUNnQ0FCQkhSUTBBSUFCQktHb2hEU0FBS0FJa0lRZ0RRQ0FJSUExR0RRRWdDQ2dDRUNJSFFaTXBhMEVDU1NJT0lBZEI5Q2xyUVFKSmNpQUhRUVZHY2tVRVFDQUZRZkFCYWlJR0lBQW9BZ0JCY2lBRUVCQWdCVUhnQVdvaUNpQUFLQUlBUWNraUVEY2dCaUFLRUJJYUlBVkIwQUZxSWdzZ0FDZ0NBQ2dDQUNnQ0FCQ0JBaUFHSUFzUUVob2dCa0dKbGdvUURob2dCaUFBS0FJQVFZQURha0VjSUFFb0FnUW9BZ0FRandFUURob2dCa0dmOHdrUURob2dCa0dyNVF3UURob2dCVUhBQVdvaURDQUFJQUVnQWlBRElBUWdCeENLQVNBR0lBd1FFaG9nQlNnQ3JBTWhDU0FNRUE4YUlBc1FEeG9nQ2hBUEdpQUdFQkVMSUE0Z0IwSDBLV3RCQWtseVJTQUhRUVZIY1EwQ0lBZ1FUQ0VJREFBTEFBdEJBQ0VKSUFBb0FoQU5BQ0FGSUFRb0FpZzJBdEFCSUFCQkJHb2dCVUhRQVdvUW1RRWhBeUFGUVFBMkF1UUJJQVZCMVJBMkF1QUJJQVVnQURZQ3dBRWdCVUVJYWlJR0lBVkI0QUZxSUFWQndBRnFJQUVnQWlBRUVQOEJJQU1nQlVId0FXb2dCaEQrQVNJQUVKTUJJQUFRRmlBR0VPZ0JDeUFGUWJBRGFpUUFJQWtMSUFBZ0FDQUJJQUlnQXlBRVFkUVFRWm5kREVHdUlrSDR2d3hCcnlJUWloTUxJZ0FnQUNBQklBSWdBeUFFUWRNUVFaUGtERUdqSWtFQ1FaSEZERUdrSWhDVUNBc2FBQ0FBSUFFZ0FpQURJQVJCMGhCQnErVU1RWi96Q1JDTEV3c2lBQ0FBSUFFZ0FpQURJQVJCMFJCQnVkNE1RWWdpUVFSQmtNSU1RWWtpRUpRSUMvWURBUVovSXdCQnNBTnJJZ1VrQUFKQUFrQWdBQ2dDQUNnQ0FDZ0NBQkJIUlEwQUFrQUNRQUpBSUFRUTl3RWlCMEVCYXc0REFnRUNBQXNnQjBILy8vLy9CMFlOQVFzZ0JVSHdBV29pQmlBQUtBSUFRWElnQkJBUUlBVkI0QUZxSWdnZ0FDZ0NBRUdHSWhBM0lBWWdDQkFTR2lBR1FlUzhEQkFPR2lBRlFkQUJhaUlKSUFBZ0FTQUNJQU1nQkVILy8vLy9CeENLQVNBR0lBa1FFaG9nQmtIMzhBd1FEaG9nQlVIQUFXb2lBU0FBSUFRUWdBSWdCaUFCRUJJYUlBVW9BcXdESVFjZ0FSQVBHaUFKRUE4YUlBZ1FEeG9nQmhBUkRBSUxJQUJCS0dvaEJpQUFLQUlrSVFjRFFDQUdJQWRHRFFFZ0J5Z0NFQ0lLUVFSSEJFQWdCVUh3QVdvaUJpQUFLQUlBUVhJZ0JCQVFJQVZCNEFGcUlnZ2dBQ2dDQUVHRkloQTNJQVlnQ0JBU0dpQUdRZS9mREJBT0dpQUZRZEFCYWlJSklBQWdBU0FDSUFNZ0JDQUtFSW9CSUFZZ0NSQVNHaUFGS0FLc0F5RUhJQWtRRHhvZ0NCQVBHaUFHRUJFTUF3VWdCeEJNSVFjTUFRc0FDd0FMUVFBaEJ5QUFLQUlRRFFBZ0JTQUVLQUlvTmdMUUFTQUFRUVJxSUFWQjBBRnFFSmtCSVFNZ0JVRUFOZ0xrQVNBRlFkQVFOZ0xnQVNBRklBQTJBc0FCSUFWQkNHb2lCaUFGUWVBQmFpQUZRY0FCYWlBQklBSWdCQkQvQVNBRElBVkI4QUZxSUFZUS9nRWlBQkNUQVNBQUVCWWdCaERvQVFzZ0JVR3dBMm9rQUNBSEN5SUFJQUFnQVNBQ0lBTWdCRUhQRUVHSzR3eEJnaUpCQkVHb3h3eEJneUlRbEFnTDFBd0JCMzhqQUVIUURHc2lCU1FBQWtBQ1FBSkFJQUFvQWdBb0FnQW9BZ0FRUjBVTkFBSkFBa0FDUUFKQUlBUVE5d0VpQjBFQmF3NERBd0VDQUFzZ0IwSC8vLy8vQjBZTkFnc2dCVUdRQzJvaUJpQUFLQUlBUVhJZ0JCQVFJQVpCdGI0TUVBNGFJQVZCZ0F0cUlnZ2dBQ0FCSUFJZ0F5QUVRZi8vLy84SEVJb0JJQVlnQ0JBU0dpQUdRZmZ3REJBT0dpQUZRZkFLYWlJQklBQWdCQkNBQWlBR0lBRVFFaG9nQlNnQ3pBd2hCeUFCRUE4YUlBZ1FEeG9nQmhBUkRBTUxJQUFvQWhBTkF5QUZJQVFvQWlnMkFvQUxJQUJCQkdvaUJ5QUZRWUFMYWlJTEVKa0JJUWdnQlVHOENXcEJBVFlDQUNBRlFiZ0pha0h0MndjMkFnQWdCVUcwQ1dwQjdpRTJBZ0FnQlNBQU5nS3dDU0FGUVFBMkFxd0pJQVZCdnhBMkFxZ0pJQVZCd0FscUlBRVF0QUlhSUFWQjFBbHFJQUlRd2dFZ0JVR2dDbW9nQkJEQ0FVSElBUkFWSWdaQmhQb2ZOZ0lBSUFZZ0JTa0RxQWszQWdRZ0JrRU1haUFGUWJBSmFpSUpFS3NESUFVZ0JqWUNvQXNnQ0NBRlFaQUxhaUlLRUpNQklBb1FGaUFKRUp3Q0lBVWdCQ2dDS0RZQ2dBc2dCeUFMRUprQklRZ2dCVUVDTmdMMEJ5QUZRYy9XQnpZQzhBY2dCVUh1SVRZQzdBY2dCU0FBTmdMb0J5QUZRUUEyQXVRSElBVkJ2eEEyQXVBSElBVkIrQWRxSUFFUXRBSWFJQVZCakFocUlBSVF3Z0VnQlVIWUNHb2dCQkRDQVVISUFSQVZJZ1pCcVBvZk5nSUFJQVlnQlNrRDRBYzNBZ1FnQmtFTWFpQUZRZWdIYWlJSkVLc0RJQVVnQmpZQ29Bc2dDQ0FLRUpNQklBVkJrQXRxRUJZZ0NSQ2NBaUFGSUFRb0FpZzJBb0FMSUFjZ0JVR0FDMm9RbVFFaENDQUZRUVEyQXF3R0lBVkJsS1VITmdLb0JpQUZRZTRoTmdLa0JpQUZJQUEyQXFBR0lBVkJBRFlDbkFZZ0JVRy9FRFlDbUFZZ0JVR3dCbW9nQVJDMEFob2dCVUhFQm1vZ0FoRENBU0FGUVpBSGFpQUVFTUlCUWNnQkVCVWlCa0hNK2g4MkFnQWdCaUFGS1FPWUJqY0NCQ0FHUVF4cUlBVkJvQVpxSWdrUXF3TWdCU0FHTmdLZ0N5QUlJQW9Ra3dFZ0JVR1FDMm9RRmlBSkVKd0NJQVVnQkNnQ0tEWUNnQXNnQnlBRlFZQUxhaENaQVNFSUlBVkJ3aWsyQXVRRUlBVkJsWk1JTmdMZ0JDQUZRZTRoTmdMY0JDQUZJQUEyQXRnRUlBVkJBRFlDMUFRZ0JVRy9FRFlDMEFRZ0JVSG9CR29nQVJDMEFob2dCVUg4QkdvZ0FoRENBU0FGUWNnRmFpQUVFTUlCUWNnQkVCVWlCa0h3K2g4MkFnQWdCaUFGS1FQUUJEY0NCQ0FHUVF4cUlBVkIyQVJxSWdrUXF3TWdCU0FHTmdLZ0N5QUlJQW9Ra3dFZ0JVR1FDMm9RRmlBSkVKd0NJQVVnQkNnQ0tEWUNnQXNnQnlBRlFZQUxhaENaQVNFSUlBVkJ3eWsyQXB3RElBVkJqWkVJTmdLWUF5QUZRZTRoTmdLVUF5QUZJQUEyQXBBRElBVkJBRFlDakFNZ0JVRy9FRFlDaUFNZ0JVR2dBMm9nQVJDMEFob2dCVUcwQTJvZ0FoRENBU0FGUVlBRWFpQUVFTUlCUWNnQkVCVWlCa0dVK3g4MkFnQWdCaUFGS1FPSUF6Y0NCQ0FHUVF4cUlBVkJrQU5xSWdrUXF3TWdCU0FHTmdLZ0N5QUlJQW9Ra3dFZ0JVR1FDMm9RRmlBSkVKd0NJQVVnQkNnQ0tEWUNnQXNnQnlBRlFZQUxhaENaQVNFR0lBVkJ4Q2syQXRRQklBVkJqNUlJTmdMUUFTQUZRZTRoTmdMTUFTQUZJQUEyQXNnQklBVkJBRFlDeEFFZ0JVRy9FRFlDd0FFZ0JVSFlBV29nQVJDMEFob2dCVUhzQVdvZ0FoRENBU0FGUWJnQ2FpQUVFTUlCUWNnQkVCVWlCMEc0K3g4MkFnQWdCeUFGS1FQQUFUY0NCQ0FIUVF4cUlBVkJ5QUZxSWdnUXF3TWdCU0FITmdLZ0N5QUdJQW9Ra3dFZ0JVR1FDMm9RRmlBSUVKd0NDeUFBUVNocUlRZ2dBQ2dDSkNFSEEwQWdCeUFJUmcwQklBY29BaEFpQmtFQmEwRUVTU0FHUWNJcGEwRURTWElnQmtHVUtVWWdCa0gxS1VaeWNnUkFJQWNRVENFSERBRUZJQVZCa0F0cUlnZ2dBQ2dDQUVGeUlBUVFFQ0FGUVlBTGFpSUpJQUFvQWdCQjZpRVFOeUFJSUFrUUVob2dDRUdremd3UURob2dCVUh3Q21vaUNpQUFJQUVnQWlBRElBUWdCaENLQVNBSUlBb1FFaG9nQlNnQ3pBd2hCeUFLRUE4YUlBa1FEeG9nQ0JBUkRBTUxBQXNBQzBFQUlRY2dBQ2dDRUEwQUlBVWdCQ2dDS0RZQzhBb2dBRUVFYWlBRlFmQUthaENaQVNFRElBVkJBRFlDaEFzZ0JVSE9FRFlDZ0FzZ0JTQUFOZ0lFSUFWQkNHb2lCaUFGUVlBTGFpQUZRUVJxSUFFZ0FpQUVFUDhCSUFNZ0JVR1FDMm9nQmhEK0FTSUFFSk1CSUFBUUZpQUdFT2dCQ3lBRlFkQU1haVFBSUFjUEMwSFRrUWRCa0owQ1FjY1FRY0RWQkJBQUFBdjJDUUVLZnlNQVFaQUlheUlGSkFBQ1FBSkFBa0FnQUNnQ0FDZ0NBQ2dDQUJCSFJRMEFBa0FDUUFKQUFrQWdCQkQzQVNJSFFRRnJEZ01DQVFNQUN5QUhRZi8vLy84SFJnMENDeUFGUWRBR2FpSUdJQUFvQWdCQmNpQUVFQkFnQlVIQUJtb2lDQ0FBS0FJQVFlQWhFRGNnQmlBSUVCSWFJQVpCL2JzTUVBNGFJQVZCc0FacUlna2dBQ0FCSUFJZ0F5QUVRZi8vLy84SEVJb0JJQVlnQ1JBU0dpQUdRZmZ3REJBT0dpQUZRYUFHYWlJQklBQWdCQkNBQWlBR0lBRVFFaG9nQlNnQ2pBZ2hCeUFCRUE4YUlBa1FEeG9nQ0JBUEdpQUdFQkVNQXdzZ0FDZ0NFQTBESUFVZ0JDZ0NLRFlDc0FZZ0FFRUVhaUlISUFWQnNBWnFJZ29RbVFFaEJpQUZRUUEyQXNRR0lBVkJ2eEEyQXNBR0lBVWdBRFlDb0FZZ0JVSGZJVFlDMUFRZ0JVRUFOZ0xRQkNBRlFkZ0VhaUlPSUFWQndBWnFJZ2dnQlVHZ0Jtb2lDU0FGUWRRRWFpSUxRYUdVQnlBRlFkQUVhaUlNSUFFZ0FpQUVFSzBISUFZZ0JVSFFCbW9pRFNBT0VLc1dJZ1lRa3dFZ0JoQVdJQVZCNEFScUVKd0NJQVVnQkNnQ0tEWUNzQVlnQnlBS0VKa0JJUVlnQlVFQU5nTEVCaUFGUWI4UU5nTEFCaUFGSUFBMkFxQUdJQVZCM3lFMkF0UUVJQVZCbENrMkF0QUVJQVZCaUFOcUlnb2dDQ0FKSUF0QnBvb0lJQXdnQVNBQ0lBUVFyUWNnQmlBTklBb1FxeFlpQmhDVEFTQUdFQllnQlVHUUEyb1FuQUlnQlNBRUtBSW9OZ0t3QmlBSElBVkJzQVpxRUprQklRY2dCVUVBTmdMRUJpQUZRYjhRTmdMQUJpQUZJQUEyQXFBR0lBVkIzeUUyQXRRRUlBVkI5U2syQXRBRUlBVkJ3QUZxSWdZZ0NDQUpJQXRCeFkwSUlBd2dBU0FDSUFRUXJRY2dCeUFOSUFZUXJoWWlCeENUQVNBSEVCWWdCVUhJQVdvUW5BSUxJQUJCS0dvaENTQUFLQUlrSVFZRFFDQUdJQWxHRFFFQ1FBSkFBa0FDUUFKQUlBWW9BaEFpQnc0RUF3RUJBUUFMSUFkQmxDbEdEUUFnQjBIMUtVY05BUXNnQVNnQ0VFRi9Sd1JBSUFVZ0JEWUMyQVlnQlNBQU5nTFVCaUFGUWZUNEh6WUMwQVlnQlNBRlFkQUdhaUlJTmdMZ0JpQUFJQUVnQWtFRUlBZ1F5d1VoQnlBSUVCWWdCMFVOQXd3R0N5QUZJQVEyQXRnR0lBVkJtUGtmTmdMUUJpQUZJQVZCMEFacU5nTGdCaUFGSUFBMkF0UUdJQVZCQURZQ3dBWWdBQ2dDQUNBQklBSWdCVUhBQm1vUXZRTWlCMFVFUUFKQUlBQW9BZ0FnQlNnQ3dBWVFjRUVjUndSQUlBVW9Bc0FHSVFjTUFRc2dCU0FBS0FJQUlBVW9Bc0FHRUNBb0FnQW9BZ2dpQnpZQ3dBWUxJQUFnQVNBQ1FRUWdCVUhRQm1vZ0J4RDNEU0VIQ3lBRlFkQUdhaEFXSUFkRkRRSU1CUXNnQlVIUUJtb2lCaUFBS0FJQVFYSWdCQkFRSUFWQndBWnFJZ2dnQUNnQ0FFSGVJUkEzSUFZZ0NCQVNHaUFHUVlYSURCQU9HaUFGUWJBR2FpSUpJQUFnQVNBQ0lBTWdCQ0FIRUlvQklBWWdDUkFTR2lBRktBS01DQ0VISUFrUUR4b2dDQkFQR2lBR0VCRU1CQXNnQlNBRU5nTFlCaUFGSUFBMkF0UUdJQVZCMFBnZk5nTFFCaUFGSUFWQjBBWnFJZ2cyQXVBR0lBQWdBU0FDUVFRZ0NCRExCU0VISUFnUUZpQUhEUU1MSUFZUVRDRUdEQUFMQUF0QkFDRUhJQUFvQWhBTkFDQUZJQVFvQWlnMkFyQUdJQUJCQkdvZ0JVR3dCbW9RbVFFaEF5QUZRUUEyQXNRR0lBVkJ6UkEyQXNBR0lBVWdBRFlDb0FZZ0JVRUlhaUlHSUFWQndBWnFJQVZCb0FacUlBRWdBaUFFRVA4QklBTWdCVUhRQm1vZ0JoRCtBU0lBRUpNQklBQVFGaUFHRU9nQkN5QUZRWkFJYWlRQUlBY1BDMEhUa1FkQmtKMENRYUlQUWNUVUJCQUFBQXZ3QndFRmZ5TUFRWUFGYXlJRkpBQUNRQUpBQWtBZ0FDZ0NBQ2dDQUNnQ0FCQkhSUTBBQWtBQ1FBSkFBa0FnQkJEM0FTSUdRUUZyRGdNQ0FRTUFDeUFHUWYvLy8vOEhSZzBDQ3lBRlFjQURhaUlISUFBb0FnQkJjaUFFRUJBZ0JVR3dBMm9pQ0NBQUtBSUFRZHdoRURjZ0J5QUlFQklhSUFkQnpiME1FQTRhSUFWQm9BTnFJZ2tnQUNBQklBSWdBeUFFUWYvLy8vOEhFSW9CSUFjZ0NSQVNHaUFIUWZmd0RCQU9HaUFGUVpBRGFpSUJJQUFnQkJDQUFpQUhJQUVRRWhvZ0JTZ0MvQVFoQmlBQkVBOGFJQWtRRHhvZ0NCQVBHaUFIRUJFTUF3c2dBQ2dDRUEwRElBVWdCQ2dDS0RZQ29BTWdBRUVFYWlBRlFhQURhaENaQVNFR0lBVkJBRFlDdEFNZ0JVRy9FRFlDc0FNZ0JTQUFOZ0tRQXlBRlFkc2hOZ0xFQVNBRlFRQTJBc0FCSUFWQnlBRnFJZ2NnQlVHd0Eyb2dCVUdRQTJvZ0JVSEVBV3BCbkpVSElBVkJ3QUZxSUFFZ0FpQUVFSzBISUFZZ0JVSEFBMm9nQnhDdUZpSUdFSk1CSUFZUUZpQUZRZEFCYWhDY0Fnc2dBRUVvYWlFSklBQW9BaVFoQndOQUlBY2dDVVlOQVFKQUFrQUNRQUpBQWtBZ0J5Z0NFQ0lHRGdRREFRRUJBQXNnQmtHVUtVWU5BQ0FHUWZVcFJ3MEJDeUFCS0FJUVFYOUhCRUFnQlNBRU5nTElBeUFGSUFBMkFzUURJQVZCNVBjZk5nTEFBeUFGSUFWQndBTnFJZ2cyQXRBRElBQWdBU0FDSUFnUXdRb2hCaUFJRUJZZ0JrVU5Bd3dHQ3lBRklBUTJBc2dESUFWQmlQZ2ZOZ0xBQXlBRklBVkJ3QU5xTmdMUUF5QUZJQUEyQXNRRElBVkJBRFlDc0FNZ0FDZ0NBQ0FCSUFJZ0JVR3dBMm9RdlFNaUJrVUVRQUpBSUFBb0FnQWdCU2dDc0FNUWNFRWNSd1JBSUFVb0FyQURJUVlNQVFzZ0JTQUFLQUlBSUFVb0FyQURFQ0FvQWdBb0FnZ2lCallDc0FNTElBQWdBU0FDSUFWQndBTnFJQVlRc3hZaEJnc2dCVUhBQTJvUUZpQUdSUTBDREFVTElBVkJ3QU5xSWdjZ0FDZ0NBRUZ5SUFRUUVDQUZRYkFEYWlJSUlBQW9BZ0JCMmlFUU55QUhJQWdRRWhvZ0IwR1J5UXdRRGhvZ0JVR2dBMm9pQ1NBQUlBRWdBaUFESUFRZ0JoQ0tBU0FISUFrUUVob2dCU2dDL0FRaEJpQUpFQThhSUFnUUR4b2dCeEFSREFRTElBVWdCRFlDeUFNZ0JTQUFOZ0xFQXlBRlFjRDNIellDd0FNZ0JTQUZRY0FEYWlJSU5nTFFBeUFBSUFFZ0FpQUlFTUVLSVFZZ0NCQVdJQVlOQXdzZ0J4Qk1JUWNNQUFzQUMwRUFJUVlnQUNnQ0VBMEFJQVVnQkNnQ0tEWUNvQU1nQUVFRWFpQUZRYUFEYWhDWkFTRURJQVZCQURZQ3RBTWdCVUhNRURZQ3NBTWdCU0FBTmdLUUF5QUZRUWhxSWdjZ0JVR3dBMm9nQlVHUUEyb2dBU0FDSUFRUS93RWdBeUFGUWNBRGFpQUhFUDRCSWdBUWt3RWdBQkFXSUFjUTZBRUxJQVZCZ0FWcUpBQWdCZzhMUWRPUkIwR1FuUUpCclE1Qi9kUUVFQUFBQ3lJQUlBQWdBU0FDSUFNZ0JFSExFRUhsNFF4QjF5RkJCRUd5eEF4QjJDRVFsQWdMN1FNQkJuOGpBRUd3QTJzaUJTUUFBa0FDUUNBQUtBSUFLQUlBS0FJQUVFZEZEUUFnQkJEM0FTSUhRUUZHSUFkQi8vLy8vd2RHY2tVRVFDQUZRZkFCYWlJR0lBQW9BZ0JCY2lBRUVCQWdCVUhnQVdvaUNDQUFLQUlBUWRVaEVEY2dCaUFJRUJJYUlBWkJyc0VNRUE0YUlBVkIwQUZxSWdrZ0FDQUJJQUlnQXlBRVFmLy8vLzhIRUlvQklBWWdDUkFTR2lBR1FmZndEQkFPR2lBRlFjQUJhaUlCSUFBZ0JCQ0FBaUFHSUFFUUVob2dCU2dDckFNaEJ5QUJFQThhSUFrUUR4b2dDQkFQR2lBR0VCRU1BZ3NnQUVFb2FpRUdJQUFvQWlRaEJ3TkFJQVlnQjBZTkFTQUhLQUlRSWdwQkEydEJmVTBFUUNBRlFmQUJhaUlHSUFBb0FnQkJjaUFFRUJBZ0JVSGdBV29pQ0NBQUtBSUFRZFFoRURjZ0JpQUlFQklhSUFaQjRNd01FQTRhSUFWQjBBRnFJZ2tnQUNBQklBSWdBeUFFSUFvUWlnRWdCaUFKRUJJYUlBVW9BcXdESVFjZ0NSQVBHaUFJRUE4YUlBWVFFUXdEQlNBSEVFd2hCd3dCQ3dBTEFBdEJBQ0VISUFBb0FoQU5BQ0FGSUFRb0FpZzJBdEFCSUFCQkJHb2dCVUhRQVdvUW1RRWhBeUFGUVFBMkF1UUJJQVZCeWhBMkF1QUJJQVVnQURZQ3dBRWdCVUVJYWlJR0lBVkI0QUZxSUFWQndBRnFJQUVnQWlBRUVQOEJJQU1nQlVId0FXb2dCaEQrQVNJQUVKTUJJQUFRRmlBR0VPZ0JDeUFGUWJBRGFpUUFJQWNMbndvQkMzOGpBRUd3Qm1zaUJTUUFJQUVvQWdRb0FnQWhDUUpBQWtBQ1FBSkFJQUFvQWdBb0FnQW9BZ0FRUjBVTkFBSkFBa0FDUUFKQUFrQWdCQkQzQVNJSFFRRnJEZ01DQVFNQUN5QUhRZi8vLy84SFJnMERDeUFGUWZBRWFpSUdJQUFvQWdCQmNpQUVFQkFnQmtHRGxnb1FEaG9nQmlBQUtBSUFRWUFEYWtFY0lBa1Fqd0VRRGhvZ0JrSGJ2Z3dRRGhvZ0JVSGdCR29pQ1NBQUlBRWdBaUFESUFSQi8vLy8vd2NRaWdFZ0JpQUpFQklhSUFaQjkvQU1FQTRhSUFWQjBBUnFJZ0VnQUNBRUVJQUNJQVlnQVJBU0dpQUZLQUtzQmlFSElBRVFEeG9nQ1JBUEdpQUdFQkVNQkFzZ0FDZ0NFQTBFUWJJaFFiWWlJQWxCQ1VZYklRb2dBRUVFYWlFTElBVkJnQVJxSVF3Z0JVRzBBMm9oRFNBRlFhQURhaUVPSUFWQmtBTnFJUWhCQUNFSEEwQWdCMEVGUmcwQ0lBVWdCQ2dDS0RZQzRBUWdCMEVDZEVIWXhnMXFLQUlBSVFZZ0N5QUZRZUFFYWhDWkFTRVBJQVVnQmpZQ25BTWdCVUhPandnMkFwZ0RJQVVnQ2pZQ2xBTWdCU0FBTmdLUUF5QUZRUUEyQW93RElBVkJ2eEEyQW9nRElBNGdBUkMwQWhvZ0RTQUNFTUlCSUF3Z0JCRENBU0FGUVFBMkFvQUZRY2dCRUJVaUJrR005aDgyQWdBZ0JpQUZLUU9JQXpjQ0JDQUdRUXhxSUFnUXF3TWdCU0FHTmdLQUJTQVBJQVZCOEFScUlnWVFrd0VnQmhBV0lBZ1FuQUlnQjBFQmFpRUhEQUFMQUFzZ0FDZ0NFQTBFSUFVZ0JDZ0NLRFlDNEFRZ0FFRUVhaUFGUWVBRWFoQ1pBU0VHSUFWQkJEWUMxQUVnQlVING9nYzJBdEFCSUFWQnN5RkJ0eUlnQ1VFSlJoczJBc3dCSUFVZ0FEWUN5QUVnQlVFQU5nTEVBU0FGUWI4UU5nTEFBU0FGUWRnQmFpQUJFTFFDR2lBRlFld0JhaUFDRU1JQklBVkJ1QUpxSUFRUXdnRkJ5QUVRRlNJSFFiRDJIellDQUNBSElBVXBBOEFCTndJRUlBZEJER29nQlVISUFXb2lDQkNyQXlBRklBYzJBb0FGSUFZZ0JVSHdCR29pQnhDVEFTQUhFQllnQ0JDY0Fnc2dBRUVvYWlFS0lBQW9BaVFoQnlBSlFRbHJJUXNEUUNBSElBcEdEUUVDUUFKQUFrQUNRQ0FIS0FJUUlnWU9CUUlCQWdNREFBc2dCa0dVS1VZZ0JrSDFLVVp5RFFJTElBVkI4QVJxSWdnZ0FDZ0NBRUZ5SUFRUUVDQUZRZUFFYWlJS0lBQW9BZ0JCc0NGQnRDSWdDVUVKUmhzUU55QUlJQW9RRWhvZ0NFR0RsZ29RRGhvZ0NDQUFLQUlBUVlBRGFrRWNJQWtRandFUURob2dDRUdCekF3UURob2dCVUhRQkdvaUNTQUFJQUVnQWlBRElBUWdCaENLQVNBSUlBa1FFaG9nQlNnQ3JBWWhCeUFKRUE4YUlBb1FEeG9nQ0JBUkRBUUxJQUFvQWdCQmdBRnFRWVlwRUdnTkFFR0IyQVVoQmtHMUlpRUlBa0FDUUFKQUlBc09BZ0VBQWdzZ0FDZ0NBRUdBQVdwQnhnQVFhQTBDUVlZaklRWU1BUXNnQUNnQ0FFR0FBV3BCeFFBUWFBMEJRWjdaQVNFR1FiRWhJUWdMSUFWQjhBUnFJZ0VnQUNnQ0FFRnlJQVFRRUNBRlFlQUVhaUlDSUFBb0FnQWdDQkEzSUFFZ0FoQVNHaUFCUWNHV0NoQU9HaUFCSUFBb0FnQkJnQU5xUVJ3Z0NSQ1BBUkFPR2lBQlFlYS9DaEFPR2lBQklBWVFEaG9nQVVHdmt3Y1FEaG9nQlNnQ3JBWWhCeUFDRUE4YUlBRVFFUXdEQ3lBSEVFd2hCd3dBQ3dBTFFRQWhCeUFBS0FJUURRQWdCU0FFS0FJb05nTFFCQ0FBUVFScUlBVkIwQVJxRUprQklRTWdCVUVBTmdMa0JDQUZRY2tRTmdMZ0JDQUZJQUEyQWdRZ0JVRUlhaUlHSUFWQjRBUnFJQVZCQkdvZ0FTQUNJQVFRL3dFZ0F5QUZRZkFFYWlBR0VQNEJJZ0FRa3dFZ0FCQVdJQVlRNkFFTElBVkJzQVpxSkFBZ0J3OExRZE9SQjBHUW5RSkJxaFZCbk5RRUVBQUFDMEhUa1FkQmtKMENRYjBWUVp6VUJCQUFBQXQ2QVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBQUtBSUFJQUVnQWlBRVFReHFFTDBESWdWRkJFQUNRQ0FBS0FJQUlBUW9BZ3dRY0VFY1J3UkFJQVFvQWd3aEJRd0JDeUFFSUFBb0FnQWdCQ2dDREJBZ0tBSUFLQUlJSWdVMkFnd0xJQUFnQVNBQ0lBTWdCUkN5RmlFRkN5QUVRUkJxSkFBZ0JRc2dBQ0FBSUFFZ0FpQURJQVJCeUJCQjZOME1RYWNoUWRMQURFR29JUkNLRXd2dEF3RUdmeU1BUWJBRGF5SUZKQUFDUUFKQUlBQW9BZ0FvQWdBb0FnQVFSMFVOQUNBRUVQY0JJZ2RCQVVZZ0IwSC8vLy8vQjBaeVJRUkFJQVZCOEFGcUlnWWdBQ2dDQUVGeUlBUVFFQ0FGUWVBQmFpSUlJQUFvQWdCQm9pRVFOeUFHSUFnUUVob2dCa0hIeGd3UURob2dCVUhRQVdvaUNTQUFJQUVnQWlBRElBUkIvLy8vL3djUWlnRWdCaUFKRUJJYUlBWkI5L0FNRUE0YUlBVkJ3QUZxSWdFZ0FDQUVFSUFDSUFZZ0FSQVNHaUFGS0FLc0F5RUhJQUVRRHhvZ0NSQVBHaUFJRUE4YUlBWVFFUXdDQ3lBQVFTaHFJUVlnQUNnQ0pDRUhBMEFnQmlBSFJnMEJJQWNvQWhBaUNrRjljVUVCUndSQUlBVkI4QUZxSWdZZ0FDZ0NBRUZ5SUFRUUVDQUZRZUFCYWlJSUlBQW9BZ0JCb1NFUU55QUdJQWdRRWhvZ0JrR1J5d3dRRGhvZ0JVSFFBV29pQ1NBQUlBRWdBaUFESUFRZ0NoQ0tBU0FHSUFrUUVob2dCU2dDckFNaEJ5QUpFQThhSUFnUUR4b2dCaEFSREFNRklBY1FUQ0VIREFFTEFBc0FDMEVBSVFjZ0FDZ0NFQTBBSUFVZ0JDZ0NLRFlDMEFFZ0FFRUVhaUFGUWRBQmFoQ1pBU0VESUFWQkFEWUM1QUVnQlVISEVEWUM0QUVnQlNBQU5nTEFBU0FGUVFocUlnWWdCVUhnQVdvZ0JVSEFBV29nQVNBQ0lBUVEvd0VnQXlBRlFmQUJhaUFHRVA0QklnQVFrd0VnQUJBV0lBWVE2QUVMSUFWQnNBTnFKQUFnQndzaUFDQUFJQUVnQWlBRElBUkJ4aEJCazk4TVFZOGhRUVJCODhJTVFaQWhFSlFJQ3hnQUlBQWdBU0FDSUFNZ0JFSEZFRUhMeHd4QkFSQ1ZDQXNhQUNBQUlBRWdBaUFESUFSQnhCQkJxdVVNUWQ3VkFSQ0xFd3NnQUNBQUlBRWdBaUFESUFSQnd4QkJsT0VNUVlVaFFkakRERUdHSVJDTUV3dUtCZ0VIZnlNQVFjQURheUlGSkFBQ1FBSkFJQUFvQWdBb0FnQW9BZ0FRUjBVTkFDQUVFUGNCSWdkQkEwWWdCMEgvLy8vL0IwWnlSUVJBSUFWQmdBSnFJZ1lnQUNnQ0FFRnlJQVFRRUNBRlFmQUJhaUlJSUFBb0FnQkI5aUFRTnlBR0lBZ1FFaG9nQlVIZ0FXb2lDU0FBS0FJQUtBSUFLQUlBRUlFQ0lBWWdDUkFTR2lBR1FaKy9EQkFPR2lBRlFkQUJhaUlLSUFBZ0FTQUNJQU1nQkVILy8vLy9CeENLQVNBR0lBb1FFaG9nQmtIMzhBd1FEaG9nQlVIQUFXb2lBU0FBSUFRUWdBSWdCaUFCRUJJYUlBVW9BcndESVFjZ0FSQVBHaUFLRUE4YUlBa1FEeG9nQ0JBUEdpQUdFQkVNQWdzZ0FFRW9haUVHSUFBb0FpUWhCd05BSUFZZ0IwY0VRQ0FIS0FJUUlnaEJCRWNFUUNBRlFZQUNhaUlHSUFBb0FnQkJjaUFFRUJBZ0JVSHdBV29pQ1NBQUtBSUFRZlVnRURjZ0JpQUpFQklhSUFWQjRBRnFJZ29nQUNnQ0FDZ0NBQ2dDQUJDQkFpQUdJQW9RRWhvZ0JrSEY0QXdRRGhvZ0JVSFFBV29pQ3lBQUlBRWdBaUFESUFRZ0NCQ0tBU0FHSUFzUUVob2dCU2dDdkFNaEJ5QUxFQThhSUFvUUR4b2dDUkFQR2lBR0VCRU1CQVVnQnhCTUlRY01BZ3NBQ3dzZ0FDZ0NJQ0lIS0FJRUlRWWdCeWdDQUNFSEEwQWdCaUFIUmcwQklBQW9BZ0FnQnlnQ0FCQzBDQ0lJQkVBZ0JVRU1OZ0tBQWlBSFFRUnFJUWNnQ0NBRlFZQUNhaERVQlEwQkN3c2dCVUdBQW1vaUJpQUFLQUlBUVhJZ0JCQVFJQVZCOEFGcUlnZ2dBQ2dDQUVINElCQTNJQVlnQ0JBU0dpQUZRZUFCYWlJSklBQW9BZ0FvQWdBb0FnQVFnUUlnQmlBSkVCSWFJQVpCbXVZTUVBNGFJQVZCMEFGcUlnb2dBQ0FCSUFJZ0F5QUVRZi8vLy84SEVJb0JJQVlnQ2hBU0dpQUZLQUs4QXlFSElBb1FEeG9nQ1JBUEdpQUlFQThhSUFZUUVRd0JDMEVBSVFjZ0FDZ0NFQTBBSUFVZ0JDZ0NLRFlDNEFFZ0FFRUVhaUFGUWVBQmFoQ1pBU0VESUFWQkFEWUM5QUVnQlVIQ0VEWUM4QUVnQlNBQU5nTFFBU0FGUVFocUlnWWdCVUh3QVdvZ0JVSFFBV29nQVNBQ0lBUVEvd0VnQXlBRlFZQUNhaUFHRVA0QklnQVFrd0VnQUJBV0lBWVE2QUVMSUFWQndBTnFKQUFnQndzZ0FDQUFJQUVnQWlBRElBUkJ3UkJCdStJTVFmSWdRZS9GREVIeklCQ01Fd3VsRFFFTWZ5TUFRZEFKYXlJRkpBQWdBU2dDQkNnQ0FDRUxBa0FDUUFKQUFrQWdBQ2dDQUNnQ0FDZ0NBQkJIUlEwQUFrQUNRQUpBQWtBQ1FDQUVFUGNCSWdaQkFXc09Bd0lCQXdBTElBWkIvLy8vL3dkR0RRTUxJQUVvQWdRb0FnQWhCaUFGUVpBSWFpSUhJQUFvQWdCQmNpQUVFQkFnQlVHQUNHb2lDQ0FBS0FJQVFkNGdRZWNnSUFaQkEwWWJFRGNnQnlBSUVCSWFJQWRCZzVZS0VBNGFJQWNnQUNnQ0FFR0FBMnBCSENBTEVJOEJFQTRhSUFkQjI3NE1FQTRhSUFWQjhBZHFJZ2tnQUNBQklBSWdBeUFFUWYvLy8vOEhFSW9CSUFjZ0NSQVNHaUFIUWZmd0RCQU9HaUFGUWVBSGFpSUJJQUFnQkJDQUFpQUhJQUVRRWhvZ0JTZ0N6QWtoQmlBQkVBOGFJQWtRRHhvZ0NCQVBHaUFIRUJFTUJBc2dBQ2dDRUEwRUlBVkIzQ0JCNVNBZ0FTZ0NCQ2dDQUVFRFJoc2lDRFlDOEFjZ0JTQUVLQUlvTmdMZ0J5QUFRUVJxSWdZZ0JVSGdCMm9pQ2hDWkFTRUhJQVZCQURZQ2hBZ2dCVUcvRURZQ2dBZ2dCU0FBTmdLVUJpQUZRUUEyQXBBR0lBVkJtQVpxSWcwZ0JVR0FDR29pRENBRlFaUUdhaUlPSUFWQjhBZHFJZzlCbUpZSElBVkJrQVpxSWhBZ0FTQUNJQVFRclFjZ0J5QUZRWkFJYWlJSklBMFF3QllpQnhDVEFTQUhFQllnQlVHZ0Jtb1FuQUlnQlNBRUtBSW9OZ0xnQnlBR0lBb1FtUUVoQnlBRlFRQTJBb1FJSUFWQnZ4QTJBb0FJSUFVZ0FEWUNsQVlnQlVHVUtUWUNrQVlnQlVISUJHb2lDaUFNSUE0Z0QwR2hpd2dnRUNBQklBSWdCQkN0QnlBSElBa2dDaERBRmlJSEVKTUJJQWNRRmlBRlFkQUVhaENjQWlBRklBUW9BaWcyQW9BSUlBWWdEQkNaQVNFSElBVkI5U2syQXBRRElBVkJ3WTRJTmdLUUF5QUZJQWcyQW93RElBVWdBRFlDaUFNZ0JVRUFOZ0tFQXlBRlFiOFFOZ0tBQXlBRlFaZ0RhaUFCRUxRQ0dpQUZRYXdEYWlBQ0VNSUJJQVZCK0FOcUlBUVF3Z0ZCeUFFUUZTSUdRY3p4SHpZQ0FDQUdJQVVwQTRBRE53SUVJQVpCREdvZ0JVR0lBMm9pQ0JDckF5QUZJQVkyQXFBSUlBY2dDUkNUQVNBSkVCWWdDQkNjQWd3QkN5QUFLQUlRRFFRZ0FTZ0NCQ2dDQUNFR0lBVWdCQ2dDS0RZQ2dBZ2dBRUVFYWlBRlFZQUlhaENaQVNFSUlBVkJCRFlDekFFZ0JVR0ZwQWMyQXNnQklBVkIzU0JCNWlBZ0JrRURSaHMyQXNRQklBVWdBRFlDd0FFZ0JVRUFOZ0s4QVNBRlFiOFFOZ0s0QVNBRlFkQUJhaUFCRUxRQ0dpQUZRZVFCYWlBQ0VNSUJJQVZCc0FKcUlBUVF3Z0ZCeUFFUUZTSUdRZkR4SHpZQ0FDQUdJQVVwQTdnQk53SUVJQVpCREdvZ0JVSEFBV29pQnhDckF5QUZJQVkyQXFBSUlBZ2dCVUdRQ0dvaUJoQ1RBU0FHRUJZZ0J4Q2NBZ3NnQUVFb2FpRUhJQUFvQWlRaENBTkFJQWNnQ0VZTkFRSkFBa0FDUUFKQUFrQWdDQ2dDRUNJR0RnVURBUUVCQXdBTElBWkJsQ2xHRFFBZ0JrSDFLVWNOQVFzZ0FTZ0NFRUYvUndSQUlBVWdCRFlDbkFnZ0JTQUJOZ0tZQ0NBRklBQTJBcFFJSUFWQnVQSWZOZ0tRQ0NBRklBVkJrQWhxSWdrMkFxQUlJQUFnQVNBQ1FRQWdDUkMvQ2lFR0lBa1FGaUFHUlEwRERBWUxJQVVnQkRZQ25BZ2dCU0FCTmdLWUNDQUZRZHp5SHpZQ2tBZ2dCU0FGUVpBSWFqWUNvQWdnQlNBQU5nS1VDQ0FGUVFBMkFvQUlJQUFvQWdBZ0FTQUNJQVZCZ0FocUVMMERJZ1pGQkVBQ1FDQUFLQUlBSUFVb0FvQUlFSEJCSEVjTkFDQUFLQUlBSUFVb0FvQUlFQ0FoQmlBQUtBSUFJQVlvQWdBb0FnZ2lCaEJ3UVJ4SERRQWdCU0FHTmdLQUNBc2dBQ0FCSUFKQkFDQUZRWkFJYWlBRktBS0FDQkMrRmlFR0N5QUZRWkFJYWhBV0lBWkZEUUlNQlFzZ0FTZ0NCQ2dDQUNFSUlBVkJrQWhxSWdjZ0FDZ0NBRUZ5SUFRUUVDQUZRWUFJYWlJSklBQW9BZ0JCMnlCQjVDQWdDRUVEUmhzUU55QUhJQWtRRWhvZ0IwR0RsZ29RRGhvZ0J5QUFLQUlBUVlBRGFrRWNJQXNRandFUURob2dCMEdleWd3UURob2dCVUh3QjJvaUNDQUFJQUVnQWlBRElBUWdCaENLQVNBSElBZ1FFaG9nQlNnQ3pBa2hCaUFJRUE4YUlBa1FEeG9nQnhBUkRBUUxJQVVnQkRZQ25BZ2dCU0FCTmdLWUNDQUZJQUEyQXBRSUlBVkJsUElmTmdLUUNDQUZJQVZCa0FocUlnazJBcUFJSUFBZ0FTQUNRUUFnQ1JDL0NpRUdJQWtRRmlBR0RRTUxJQWdRVENFSURBQUxBQXRCQUNFR0lBQW9BaEFOQUNBRklBUW9BaWcyQXZBSElBQkJCR29nQlVId0Iyb1FtUUVoQXlBRlFRQTJBb1FJSUFWQndCQTJBb0FJSUFVZ0FEWUM0QWNnQlNBRlFZQUlhaUFGUWVBSGFpQUJJQUlnQkJEL0FTQURJQVZCa0FocUlBVVEvZ0VpQUJDVEFTQUFFQllnQlJEb0FRc2dCVUhRQ1dva0FDQUdEd3RCMDVFSFFaQ2RBa0dSQ1VHYTFRUVFBQUFMUWRPUkIwR1FuUUpCcXdsQm10VUVFQUFBQ3lvQkFYOGdBRUVFYWlFREEwQWdBU0FDUndSQUlBQWdBeUFCUVJCcUVKMFdJQUVRVENFQkRBRUxDd3NkQUNBQUlBQW9BZ1FReEFvZ0FDQUFRUVJxTmdJQUlBQkNBRGNDQkFzSkFDQUFRUlFRd3hJTExRRUJmMEVrRUJVaEF5QUFJQUZCQkdvMkFnUWdBQ0FETmdJQUlBTkJFR29nQWhDMEFob2dBRUVCT2dBSUMyVUJBbjhnQUVFRWFpRUVBa0FnQUNnQ0JDSURSUVJBSUFRaEFBd0JDd05BSUFJZ0F5SUFRUkJxSWdNUXpBVUVRQ0FBSVFRZ0FDZ0NBQ0lERFFFTUFnc2dBeUFDRU13RlJRMEJJQUJCQkdvaEJDQUFLQUlFSWdNTkFBc0xJQUVnQURZQ0FDQUVDNHdCQVFSL0l3QkJFR3NpQkNRQUl3QkJFR3NpQXlRQUlBUWdBU0FEUVF4cUlBSVE2eFlpQmlnQ0FDSUZCSDlCQUFVZ0F5QUJJQUlRNmhZZ0FTQURLQUlNSUFZZ0F5Z0NBQkQ0QWlBREtBSUFJUVVnQTBFQU5nSUFJQU1RNlJaQkFRczZBQXdnQkNBRk5nSUlJQU5CRUdva0FDQUFJQVFvQWdnMkFnQWdBQ0FFTFFBTU9nQUVJQVJCRUdva0FBc3dBUUYvSXdCQkVHc2lBeVFBSUFNZ0FUWUNEQ0FESUFCQjZBSnFJQU5CREdvUXR3Z2dBaERzRmlBRFFSQnFKQUFMTEFFQmZ5QUFRWUlzUmlBQVFSdHJJZ0ZCRkUxQkFFRUJJQUYwUVlHQTRBQnhHM0pGQkVCQkFBOExRUUVMQ3dBZ0FDQUJRakFReEJJTG9RSUJCSDhnQUVHNEEyb1F4QU1nQUVHc0Eyb1F3d29nQUVHZ0Eyb1F3d29nQUVHTUEyb1FUeUFBUWZnQ2FoRFZCQ0FBUWVRQ2FoQlBJQUJCMEFKcUVFOGdBRUhFQW1vUU1ob2dBRUc0QW1vUU1ob0NRQ0FBUWF3Q2FpSUNLQUlJUlEwQUlBSW9BZ1FpQVNnQ0FDSURJQUlvQWdBaUJDZ0NCRFlDQkNBRUtBSUVJQU0yQWdBZ0FrRUFOZ0lJQTBBZ0FTQUNSZzBCSUFFb0FnUWhBeUFCUVF4cUVESWFJQUVRSHlBRElRRU1BQXNBQ3lBQVFaZ0NhaERWQkNBQVFZUUNhaERWQkNBQVFmQUJhaERWQkNBQVFhQUJhaERPQlNBQVFkQUFhaERPQlNBQVFUaHFFRThnQUVFc2FoQXlHaUFBUVJocUlnSW9BZ2doQVFOQUlBRUVRQ0FCS0FJQUlRTWdBVUVNYWhET0JTQUJFQjhnQXlFQkRBRUxDeUFDRUpzRElBQUxEQUFnQUNBQUtBSUVFUDROQ3d3QUlBQWdBQ2dDQkJDQkRnc1lBQ0FBSUFFUVZDSUFRUXhxSUFGQkRHb1FzQUVhSUFBTFB3RUNmeUFBS0FJQUJFQWdBQ2dDQUNFQ0lBQW9BZ1FoQVFOQUlBRWdBa2NFUUNBQlFSaHJFSVFPSVFFTUFRc0xJQUFnQWpZQ0JDQUFLQUlBRUI4TEMxUUJBWDlCR0JBVklRUWdBQ0FCUVFocU5nSUVJQUFnQkRZQ0FDQURLQUlBS0FJQUlRRWdCRUVRYWlJRFFnQTNBZ0FnQkNBQk5nSUlJQVFnQXpZQ0RDQUFRUUU2QUFnZ0JFRUFOZ0lBSUFRZ0FqWUNCQXNEQUFFTEl3QWdBU0FBS0FJRUlBQW9BZ0FpQUd0QkJIVlBCRUFRQVFBTElBQWdBVUVFZEdvTGF3RUNmd0pBSUFBb0FnZ2dBU2dDQkVrRVFDQUFFSUlPSUFBZ0FTZ0NCQkR2Rmd3QkN5QUFFUDBOQ3lBQUlBRW9BZ1FpQWpZQ0JBTkFJQUlnQTBzRVFDQURRVEJzSWdJZ0FDZ0NBR29nQVNnQ0FDQUNhaEQ3RFJvZ0EwRUJhaUVESUFBb0FnUWhBZ3dCQ3dzTG1BVUNDWDhDZlNNQVFSQnJJZ29rQUNNQVFSQnJJZ1lrQUNBQ0tBSUFJUWNnQ2dKL0FrQWdBU2dDQkNJRFJRMEFJQUVvQWdBQ2Z5QURRUUZySUFkeElBTnBJZ2hCQVUwTkFCb2dCeUFESUFkTERRQWFJQWNnQTNBTElnUkJBblJxS0FJQUlnVkZEUUFnQTBFQmF5RUxJQWhCQVVzaENBTkFJQVVvQWdBaUJVVU5BU0FISUFVb0FnUWlDVWNFUUFKQUlBaEZCRUFnQ1NBTGNTRUpEQUVMSUFNZ0NVc05BQ0FKSUFOd0lRa0xJQVFnQ1VjTkFnc2dCU2dDQ0NBSFJ3MEFDMEVBREFFTFFSQVFGU0VJSUFZZ0FVRUlhallDQkNBR0lBZzJBZ0FnQ0NBQ0tBSUFOZ0lJSUFnZ0FpZ0NCRFlDRENBR1FRRTZBQWdnQ0VFQU5nSUFJQWdnQnpZQ0JBSkFRUUFnQXlBQktBSU1RUUZxc3lJTklBRXFBaEFpRENBRHM1UmVHdzBBSUFFZ0F5QURRUUZyY1VFQVJ5QURRUU5KY2lBRFFRRjBjaUlFQW44Z0RTQU1sWTBpREVNQUFJQlBYU0FNUXdBQUFBQmdjUVJBSUF5cERBRUxRUUFMSWdJZ0FpQUVTUnNRd3dFZ0FTZ0NCQ0lESUFOQkFXdHhSUVJBSUFOQkFXc2dCM0VoQkF3QkN5QURJQWRMQkVBZ0J5RUVEQUVMSUFjZ0EzQWhCQXNDUUNBRVFRSjBJZ0lnQVNnQ0FHb29BZ0FpQkVVRVFDQUdLQUlBSUFFb0FnZzJBZ0FnQVNBR0tBSUFOZ0lJSUFFb0FnQWdBbW9nQVVFSWFqWUNBQ0FHS0FJQUlnUW9BZ0FpQWtVTkFTQUNLQUlFSVFVQ1FDQURJQU5CQVdzaUFuRkZCRUFnQWlBRmNTRUZEQUVMSUFNZ0JVc05BQ0FGSUFOd0lRVUxJQUVvQWdBZ0JVRUNkR29nQkRZQ0FBd0JDeUFHS0FJQUlBUW9BZ0EyQWdBZ0JDQUdLQUlBTmdJQUN5QUdLQUlBSVFVZ0JrRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUdFSXNCUVFFTE9nQU1JQW9nQlRZQ0NDQUdRUkJxSkFBZ0FDQUtLQUlJTmdJQUlBQWdDaTBBRERvQUJDQUtRUkJxSkFBTGlnRUJCWDlCZkNFREFrQWdBQ2dDQUNJQ1JRMEFJQUFvQWdSRkRRQWdBVVVFUUVGOUR3c2dBaTBBQXlFQUFrQWdBaTBBQUNJRVFRTkhJQUl0QUFFaUJVRUNSM0lnQWkwQUFpSUdRU05IY2tVRVFFRUFJUUlnQUVFSFJnMEJDeUFFUVFkSElBVkJJMGR5SUFaQkFrZHlEUUZCQVNFQ0lBQkJBMGNOQVFzZ0FTQUNOZ0lBUVFBaEF3c2dBd3ZURGdRTGZ3UitBWDBCZkNNQVFTQnJJZ2NrQUFKQUFrQUNRQ0FDS0FJRUlnTkJCbXNPQkFFQ0FnRUFDeUFEUVN0ckRnTUFBUUFCQ3lBQ0x3RUNJZ05CQTJ0Qi8vOERjVUgrL3dOSkRRQWdBU2dDQUNBQ0x3RUFRUUowYWlJRUtBSUFJUUVnQTBFQlJnUkFBa0FDUUFKQUlBSW9BZ2hCQVdzT0F3RUFBZ1FMSUFBZ0FSQzhBaG9NQXdzZ0FDQUJFQ0VhREFJTElBSW9BZ3hCRUVZRVFDQUhJQUU3QVJnakFFRVFheUlESkFBZ0F5QUhMd0VZT3dFSUlBQWhBaUFETGdFSUlnVkJDblpCSDNFaUFVRVBhMEVBSUFFZ0JVRUNkRUg4SDNFaUFISWlCaHNoQkNBQklBWkZja1VFUUFOQUlBQkJBWFFoQVNBQVFZQVFjVVVFUUNBRVFRRnJJUVFnQVNFQURBRUxDeUFCUWZnZmNTRUFDMEhjK0F4QnpKZ0lJQVZCQUU0YklRVkJBeUVCQTBBZ0FVSC8vd054UlNBQVFROXhja1VFUUNBQlFRRnJJUUVnQUVIdy93TnhRUVIySVFBTUFRc0xJQUlnQWlnQ0FFRU1heWdDQUdvaUNDZ0NCQ0VKSUFnUW5BTWhDQ0FDSUFVUURrSFpKeEFPUVRGQk1DQUdHeERlQkNBQlFmLy9BM0VpQmdSQUlBSkIvSmNJRUE0aUFTQUJLQUlBUVF4cklnVW9BZ0JxSUFZMkFnd2dBU0FGS0FJQWFrRXdOZ0pNSUFFZ0JTZ0NBR29pQlNBRktBSUVRYlYvY1VFSWNqWUNCQ0FCSUFCQi8vOERjUkFoR2dzZ0FrSER2d0lRRGlJQUlBQW9BZ0JCREdzb0FnQnFJZ0VnQVNnQ0JFRzFmM0ZCQW5JMkFnUWdBRUhibUFoQjNQZ01JQVJCRUhSQkVIVWlCVUVBVGhzUURpRUFJd0JCSUdzaUFTUUFJQUZCR0dvaUJDQUFFTjhER2dKQUlBUVFrZ1JGRFFBZ0FDQUFLQUlBUVF4cktBSUFhaEM0QVNFR0lBRkJFR29pQkNBQUlBQW9BZ0JCREdzb0FnQnFFSDRnQkJEOUJDRUtJQVFRWkNBQlFRaHFJQUFRMGdRaEN5QUFJQUFvQWdCQkRHc29BZ0JxSWd3UW5BTWhEU0FCSUFvZ0N5Z0NBQ0FNSUEwZ0JVSC8vd054SWdvZ0NpQUZJQVpCeWdCeElnVkJDRVliSUFWQndBQkdHeERjRkRZQ0VDQUVFTkVFUlEwQUlBQWdBQ2dDQUVFTWF5Z0NBR3BCQlJDUEF3c2dBVUVZYWhEZ0F5QUJRU0JxSkFBZ0FpQUNLQUlBUVF4cklnQW9BZ0JxSUFrMkFnUWdBaUFBS0FJQWFpQUlOZ0pNSUFOQkVHb2tBQXdDQ3lBSElBRTJBaEFqQUVFUWF5SUZKQUFDUUFKQUFrQWdCeW9DRUNJU0VOb1lRUUpyRGdNQUFRQUJDeUFBSUFBb0FnQkJER3NvQWdCcUlnRW9BZ2doQWlBQlFRazJBZ2dnQUNBU0VKa05JQUFnQUNnQ0FFRU1heWdDQUdvZ0FqWUNDQXdCQ3lBRklBY29BaEEyQWdnZ0FDRUNJQVVvQWdnaUJFRVhka0gvQVhFaUFVSC9BR3RCQUNBQklBUkJBWFJCL3YvL0IzRWlBSElpQmhzaEF5QUJJQVpGY2tVRVFBTkFJQUJCQVhRaEFTQUFRWUNBZ0FSeFJRUkFJQU5CQVdzaEF5QUJJUUFNQVFzTElBRkIvUC8vQjNFaEFBdEIzUGdNUWN5WUNDQUVRUUJPR3lFRVFRWWhBUU5BSUFGRklBQkJEM0Z5UlFSQUlBRkJBV3NoQVNBQVFRUjJJUUFNQVFzTElBSWdBaWdDQUVFTWF5Z0NBR29pQ0NnQ0JDRUpJQWdRbkFNaENDQUNJQVFRRGtIWkp4QU9RVEZCTUNBR0d4RGVCQ0FCQkVBZ0FrSDhsd2dRRGlJRUlBUW9BZ0JCREdzaUJpZ0NBR29nQVRZQ0RDQUVJQVlvQWdCcVFUQTJBa3dnQkNBR0tBSUFhaUlCSUFFb0FnUkJ0WDl4UVFoeU5nSUVJQVFnQUJBaEdnc2dBa0hEdndJUURpSUFJQUFvQWdCQkRHc29BZ0JxSWdFZ0FTZ0NCRUcxZjNGQkFuSTJBZ1FnQUVIYm1BaEIzUGdNSUFOQkFFNGJFQTRnQXhDOEFob2dBaUFDS0FJQVFReHJJZ0FvQWdCcUlBazJBZ1FnQWlBQUtBSUFhaUFJTmdKTUN5QUZRUkJxSkFBTUFRc2dBYTBnQkRVQ0JFSWdob1FoRGdKQUFrQUNRQ0FDS0FJSVFRRnJEZ01CQUFJREN5QUFJQTRRbWdZTUFnc2dBQ0FPRU1NRUdnd0JDeUFISUE0M0F3Z2pBRUVRYXlJQ0pBQUNRQUpBQWtBZ0J5c0RDQ0lURU5rWVFRSnJEZ01BQVFBQkN5QUFJQUFvQWdCQkRHc29BZ0JxSWdFb0FnZ2hBeUFCUVJFMkFnZ2dBQ0FURUpnTklBQWdBQ2dDQUVFTWF5Z0NBR29nQXpZQ0NBd0JDeUFDSUFjcEF3ZzNBd2hDQUNBQ0tRTUlJaEZDTkloQy93K0RJZzlDL3dkOUlBOGdFVUwvLy8vLy8vLy9CNE1pRG9SUUlnRWJJUkFnRDBJQVVpQUJja1VFUUFOQUlBNUNBWVloRHlBT1FvQ0FnSUNBZ0lBRWcxQUVRQ0FRUWdGOUlSQWdEeUVPREFFTEN5QVBRdjcvLy8vLy8vOEhneUVPQzBIYytBeEJ6SmdJSUJGQ0FGa2JJUU5DRFNFUEEwQWdEMUFpQkNBT1FnK0RRZ0JTY2tVRVFDQVBRZ0Y5SVE4Z0RrSUVpQ0VPREFFTEN5QUFJQUFvQWdCQkRHc29BZ0JxSWdVb0FnUWhCaUFGRUp3RElRVWdBQ0FERUE1QjJTY1FEa0V3UVRFZ0FSc1EzZ1FnQkVVRVFDQUFRZnlYQ0JBT0lnRWdBU2dDQUVFTWF5SURLQUlBYWlBUFBnSU1JQUVnQXlnQ0FHcEJNRFlDVENBQklBTW9BZ0JxSWdNZ0F5Z0NCRUcxZjNGQkNISTJBZ1FnQVNBT0VNTUVHZ3NnQUVIRHZ3SVFEaUlCSUFFb0FnQkJER3NvQWdCcUlnTWdBeWdDQkVHMWYzRkJBbkkyQWdRZ0FVSGJtQWhCM1BnTUlCQkNBRmtiRUE0Z0VCQ2FCaUFBSUFBb0FnQkJER3NpQVNnQ0FHb2dCallDQkNBQUlBRW9BZ0JxSUFVMkFrd0xJQUpCRUdva0FBc2dCMEVnYWlRQUN3b0FJQUVvQWdCQkRVWUx4UUVCQlg4Z0FpQUJheUlEUVFKMUlnUWdBQ2dDQ0NBQUtBSUFJZ1ZyUVFKMVRRUkFJQUVnQUNnQ0JDQUZheUlEYWlBQ0lBUWdBMEVDZFNJSFN4c2lBeUFCYXlFR0lBRWdBMGNFUUNBRklBRWdCaERuQVJvTElBUWdCMHNFUUNBQUtBSUVJUUVnQUNBQ0lBTnJJZ0pCQUVvRWZ5QUJJQU1nQWhCOUlBSnFCU0FCQ3pZQ0JBOExJQUFnQlNBR2FqWUNCQThMSUFBUWlBNGdBQ0FBSUFRUWl3UVF6d1VnQUNnQ0JDRUNJQUFnQTBFQVNnUi9JQUlnQVNBREVIMGdBMm9GSUFJTE5nSUVDN1lFQWdwL0FYMENRQUovUVFJZ0FVRUJSZzBBR2lBQklBRWdBVUVCYTNGRkRRQWFJQUVRZndzaUFpQUFLQUlFSWdGTkJFQWdBU0FDVFEwQklBRkJBMGtoQXdKL0lBQW9BZ3l6SUFBcUFoQ1ZqU0lNUXdBQWdFOWRJQXhEQUFBQUFHQnhCRUFnREtrTUFRdEJBQXNoQlNBQklBSWdBeUFCYVVFQlMzSUVmeUFGRUg4RklBVkJBVUVnSUFWQkFXdG5hM1FnQlVFQ1NSc0xJZ0VnQVNBQ1NSc2lBazBOQVFzZ0FDRURRUUFoQVFKQUlBSUVRQ0FESUFJUWx3TVFiQ0FESUFJMkFnUURRQ0FCSUFKR0JFQWdBeWdDQ0NJRlJRMERJQU5CQ0dvaEFDQUZLQUlFSVFZQ1FDQUNhU0lCUVFGTkJFQWdCaUFDUVFGcmNTRUdEQUVMSUFJZ0Jrc05BQ0FHSUFKd0lRWUxJQU1vQWdBZ0JrRUNkR29nQURZQ0FDQUNRUUZySVFrZ0FVRUJTeUVLQTBBZ0JTZ0NBQ0lBUlEwRUlBQW9BZ1FoQkFKQUlBcEZCRUFnQkNBSmNTRUVEQUVMSUFJZ0JFc05BQ0FFSUFKd0lRUUxBa0FnQkNBR1JnMEFJQUFoQVNBRVFRSjBJZ2dnQXlnQ0FHb2lCeWdDQUVVRVFDQUhJQVUyQWdBZ0JDRUdEQUVMQTBBQ1FDQUJJZ1FvQWdBaUFVVUVRRUVBSVFFTUFRc2dBQ2dDRENJSElBRW9BZ3dpQzBZTkFTQUhJQXNnQnlnQ0FDZ0NDQkVCQUNFSElBUW9BZ0FoQVNBSERRRUxDeUFGSUFFMkFnQWdCQ0FES0FJQUlBaHFLQUlBS0FJQU5nSUFJQU1vQWdBZ0NHb29BZ0FnQURZQ0FBd0JDeUFBSVFVTUFBc0FCU0FES0FJQUlBRkJBblJxUVFBMkFnQWdBVUVCYWlFQkRBRUxBQXNBQ3lBRFFRQVFiQ0FEUVFBMkFnUUxDd3NLQUNBQktBSUFRUUpHQy9zQ0FndC9BbjBnQVNBQktBSUlJZ1EyQWdRZ0FDRU1JQUVoQ3dKL1FRQWdBQ2dDQkNJQ0lBQW9BZ3hCQVdxeklnMGdBQ29DRUNJT0lBS3psRjRiUlFSQUlBQWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJREFuOGdEU0FPbFkwaURVTUFBSUJQWFNBTlF3QUFBQUJnY1FSQUlBMnBEQUVMUVFBTElnSWdBaUFEU1JzUS9oWWdBQ2dDQkNFQ0N5QUNRUUZySUFSeElBSnBJZ05CQVUwTkFCb2dCQ0FDSUFSTERRQWFJQVFnQW5BTElRY0NRQ0FBS0FJQUlBZEJBblJxS0FJQUlnVkZCRUJCQUNFRkRBRUxJQUpCQVdzaENTQURRUUZMSVFvRFFDQUZLQUlBSWdoRkRRRWdDQ2dDQkNFREFrQWdDa1VFUUNBRElBbHhJUUFNQVFzZ0F5SUFJQUpKRFFBZ0F5QUNjQ0VBQ3lBQUlBZEhEUUZCQUNFQUFrQWdBeUFFUmdSQUlBZ29BZ3dpQUNBQktBSU1JZ05HQkVCQkFTRUFEQUlMSUFBZ0F5QUFLQUlBS0FJSUVRRUFJUUFMSUFZZ0FFRUJjM0VOQWdzZ0FDQUdjaUVHSUFVb0FnQWhCUXdBQ3dBTElBd2dDeUFGRUk4WEN4Y0FRb0NBZ0lEZ240Q1FCQ0FBcllpbklBQkJPMGx4QzJrQkFYOUJBU0VCQWtBZ0FFRUJhMEVGU1EwQUFrQWdBRUVHYXc1REFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQUFBQUFBQUFBQUFBQUFBQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFMUVFBaEFRc2dBUXNLQUNBQVFSUnJRUU5KQ3o0Q0FYOEJma0VRRUJVaEF5QUFJQUZCQ0dvMkFnUWdBQ0FETmdJQUlBTWdBaWtDQUNJRU53SUlJQUJCQVRvQUNDQURRUUEyQWdBZ0F5QUVQZ0lFQ3gwQUlBRUVRQ0FCSUFCQkVIWTdBUUFMSUFJRVFDQUNJQUE3QVFBTEMyZ0JBWDhqQUVFZ2F5SUVKQUFnQkVFQU5nSWNBa0FnQVVFb2FpQUNJQU1nQkVFY2FoRGRBa1VFUUNBQUlBUW9BaHdvQWdBUUZCb01BUXNnQkVFUWFrSEZsQUVRRkNFQklBUWdBeENNQkNBQUlBRWdCQkJPSUFRUUR4b2dBUkFQR2dzZ0JFRWdhaVFBQzZnQkFRVi9Jd0JCRUdzaUJDUUFBa0FnQVNnQ0JDQUJMUUFMSWdJZ0FrRVlkRUVZZFVFQVNCdEZCRUFnQUVHeHZRVVFGQm9NQVFzZ0FCQlZJQVJCMStvR0VCUWhCU0FCS0FJQUlBRWdBUzBBQ3lJRFFSaDBRUmgxUVFCSUlnWWJJZ0lnQVNnQ0JDQURJQVliYWlFQkEwQWdBU0FDUndSQUlBQkIzd0FnQWl3QUFDSURJQVVnQXhEbkNVRi9SaHNRcEFFZ0FrRUJhaUVDREFFTEN5QUZFQThhQ3lBRVFSQnFKQUFMR2dBZ0FFRzBEellDQkNBQVFaaStGVFlDQUNBQUlBQTJBaEFMQ2dBZ0FDZ0NBQkM0Q0F1dEJBSUpmd0Y5QWtBQ2YwRUNJQUZCQVVZTkFCb2dBU0FCSUFGQkFXdHhSUTBBR2lBQkVIOExJZ0lnQUNnQ0JDSUJUUVJBSUFFZ0FrME5BU0FCUVFOSklRTUNmeUFBS0FJTXN5QUFLZ0lRbFkwaUMwTUFBSUJQWFNBTFF3QUFBQUJnY1FSQUlBdXBEQUVMUVFBTElRVWdBU0FDSUFNZ0FXbEJBVXR5Qkg4Z0JSQi9CU0FGUVFGQklDQUZRUUZyWjJ0MElBVkJBa2tiQ3lJQklBRWdBa2tiSWdKTkRRRUxJQUFoQTBFQUlRRUNRQ0FDQkVBZ0F5QUNFSmNERUd3Z0F5QUNOZ0lFQTBBZ0FTQUNSZ1JBSUFNb0FnZ2lCVVVOQXlBRFFRaHFJUUFnQlNnQ0JDRUdBa0FnQW1raUFVRUJUUVJBSUFZZ0FrRUJhM0VoQmd3QkN5QUNJQVpMRFFBZ0JpQUNjQ0VHQ3lBREtBSUFJQVpCQW5ScUlBQTJBZ0FnQWtFQmF5RUpJQUZCQVVzaENnTkFJQVVvQWdBaUFFVU5CQ0FBS0FJRUlRUUNRQ0FLUlFSQUlBUWdDWEVoQkF3QkN5QUNJQVJMRFFBZ0JDQUNjQ0VFQ3dKQUlBUWdCa1lOQUNBQUlRRWdCRUVDZENJSUlBTW9BZ0JxSWdjb0FnQkZCRUFnQnlBRk5nSUFJQVFoQmd3QkN3TkFBa0FnQVNJRUtBSUFJZ0ZGQkVCQkFDRUJEQUVMSUFBb0Fnd2lCeUFCS0FJTUlBY29BZ0FvQWdnUkFRQWhCeUFFS0FJQUlRRWdCdzBCQ3dzZ0JTQUJOZ0lBSUFRZ0F5Z0NBQ0FJYWlnQ0FDZ0NBRFlDQUNBREtBSUFJQWhxS0FJQUlBQTJBZ0FNQVFzZ0FDRUZEQUFMQUFVZ0F5Z0NBQ0FCUVFKMGFrRUFOZ0lBSUFGQkFXb2hBUXdCQ3dBTEFBc2dBMEVBRUd3Z0EwRUFOZ0lFQ3dzTGhBRUJBMzhnQWlBQmF5SURRWEJKQkVBQ1FDQURRUXBOQkVBZ0FDQURPZ0FMREFFTElBTkJEM0pCQVdvaUJSQVZJUVFnQUNBRlFZQ0FnSUI0Y2pZQ0NDQUFJQVEyQWdBZ0FDQUROZ0lFSUFRaEFBc0RRQ0FCSUFKR1JRUkFJQUFnQVMwQUFEb0FBQ0FBUVFGcUlRQWdBVUVCYWlFQkRBRUxDeUFBUVFBNkFBQVBDeEFCQUF1d0FRRUNmMEU0RUJVaEF5QUFLQUlBSVFBZ0FTZ0NBQ0VFSUFJb0FnQWhBaU1BUVJCcklnRWtBQ0FEUWdBM0FnQWdBMElBTndJVUlBTkJnSUNBL0FNMkFoQWdBMElBTndJSUlBTkNBRGNDSENBRFFZQ0FnUHdETmdJa0lBTWdBQ2dDQURZQ0tDQURJQUFvQWdnMkFpd2dBeUFBS0FJRU5nSXdJQU1nQUNnQ0REWUNOQ0FCUVFBMkFnd2dBQ0FESUFRZ0FrRUFRYlVQSUFGQkRHb1F0QWNhSUFFb0Fnd1FrUmNnQVVFUWFpUUFJQU1MNkFzQkJuOGpBRUhRQW1zaUJ5UUFJQWNnQlRZQ3lBSWdCeUFFTmdMTUFpQUhJQUVRdVFnaUFUWUN4QUlnQnlBQktBSUFOZ0t3QWlBSElBRW9BZ2cyQXJRQ0lBY2dBU2dDQkRZQ3VBSWdCeUFCS0FJTU5nSzhBa0VBSVFRQ1FDQUhLQUswQWtVTkFDQUhLQUs0QWtVTkFDQUhLQUs4QWtFQVJ5RUVDd0pBSUFSRkJFQWdBUkM0Q0NBQVFkejREQkFVR2d3QkN5QUhRUUEyQXFnQ0lBZEJrQUpxRUlnWElBWkJ3QUJ4QkVBZ0IwSEVBbW9nQjBITUFtb2dCMEhJQW1vUWpCY2hBU0FIUVFBMkFqQWdCMEdvQW1vZ0FSQ09EaUFIUVRCcUlnRVF5QW9nQnlBSEtBS29BallDTkNBSFFheXlFellDTUNBSElBRTJBa0FnQjBHUUFtb2dBUkNJQ1NBQkVCWUxJQWRCR0dvZ0IwR1FBbW9RMFFFaEJTTUFRU0JySWdna0FDQUhRVEJxSWdFZ0JrRUJka0VCY1NJS09nQUFJQUZCQUNBQlFRaHFFSWdESUFFdEFBQWlDeHNpRERZQ21BRWdDRUVJYWlBRkVORUJJUWtnQVVHZ0FXb2lCRUhRc3lBZ0RFRUlhaUFMR3pZQ0JDQUVJQWRCc0FKcU5nSUFJQVFnQmtFRWRrRUJjVG9BRkNBRUlBWkJCM1pCQVhFMkFoQWdCQ0FHUVFKMlFRRnhPZ0FKSUFRZ0Nqb0FDQ0FFSUFaQkhIUkJIM1ZCRDNFMkFnd2dCRUVZYWlBSkVPc0ZHaUFKRUJZZ0FVRUFOZ0xVQVNBQklBWkJmM05CQlhaQkFYRTZBTkFCSUFGQkFEWUExd0VnQ0VFZ2FpUUFJQVVRRmlBSElBTTJBaEFnQnlBQ05nSU1JQWNnQVRZQ0NDQUhLQUxFQWlBSFFRaHFJQWNvQXN3Q0lBY29Bc2dDUWFzUFFhd1BRUUFRdEFjYUlBZEJBRFlDQkNBQUVGVWpBRUVRYXlJRkpBQWdBU0lDTFFBQVJRUkFJQVVnQWtFVWFpSUVFRUlnQlMwQUN5RUJJQVVvQWdRaEF5QUZFQThhSUFNZ0FTQUJRUmgwUVJoMVFRQklHeUlKUVFGcUlnRVFGU0VESUFVZ0JCQkNBa0FDUUFKQUFrQWdBeUlHSUFVb0FnQWdCU0FGTEFBTFFRQklHeUlFYzBFRGNRMEFJQUZCQUVjaENBSkFJQVJCQTNGRklBRkZjZzBBQTBBZ0JpQUVMUUFBSWdnNkFBQWdDRVVOQlNBR1FRRnFJUVlnQVVFQmF5SUJRUUJISVFnZ0JFRUJhaUlFUVFOeFJRMEJJQUVOQUFzTElBaEZEUUlnQkMwQUFFVU5BeUFCUVFSSkRRQURRQ0FFS0FJQUlnaEJmM01nQ0VHQmdvUUlhM0ZCZ0lHQ2hIaHhEUUlnQmlBSU5nSUFJQVpCQkdvaEJpQUVRUVJxSVFRZ0FVRUVheUlCUVFOTERRQUxDeUFCUlEwQkN3TkFJQVlnQkMwQUFDSUlPZ0FBSUFoRkRRSWdCa0VCYWlFR0lBUkJBV29oQkNBQlFRRnJJZ0VOQUFzTFFRQWhBUXNnQmtFQUlBRVFlUm9nQlJBUEdrRUlFQlVpQVNBSk5nSUVJQUVnQXpZQ0FDQUhJQUUyQWdRTElBVkJFR29rQUNBSEtBSUVJZ1FvQWdBaEFTQUJJQVFvQWdScUlRWWpBRUVRYXlJREpBQUNRQUpBQW44Z0JpQUJheUlJUVFvZ0FDZ0NDQ0lKUWYvLy8vOEhjVUVCYXlBQUxBQUxRUUJPR3lJRlRRUkFJQWxCR0hZTUFRc2dBQ2dDQUNBQUlBQXRBQXNpQ1VFWWRFRVlkVUVBU0NJS0d5SUxJQUZOSUFzZ0FDZ0NCQ0FKSUFvYmFpQUJUM0VOQVNBQUlBVWdDQ0FGYXlBQUtBSUVJQUF0QUFzaUJTQUZRUmgwUVJoMVFRQklHeUlGUVFBZ0JSRDBDU0FBTFFBTEN5RUZJQUFvQWdBZ0FDQUZRUmgwUVJoMVFRQklHeUVGQTBBZ0FTQUdSd1JBSUFVZ0FTMEFBRG9BQUNBQlFRRnFJUUVnQlVFQmFpRUZEQUVMQ3lBRlFRQTZBQUFnQUN3QUMwRUFTQVJBSUFBZ0NEWUNCQXdDQ3lBQUlBZzZBQXNNQVFzZ0F5QUJJQVlRaXhjZ0FDQURLQUlBSUFNZ0F5MEFDeUlCUVJoMFFSaDFRUUJJSWdVYklBTW9BZ1FnQVNBRkd4RDlGU0FERUE4YUN5QURRUkJxSkFBRFFBSkFJQUFvQWdRZ0FDMEFDeUlCSUFGQkdIUkJHSFZCQUVnaUFSc2lBMFVOQUNBQUtBSUFJQUFnQVJzZ0EycEJBV3N0QUFCQkNrY05BQ0FBSWdFb0FnUWdBUzBBQ3lJRElBTkJHSFJCR0hVaUJVRUFTQnRCQVdzaEF3SkFJQVZCQUVnRVFDQUJJQU0yQWdRZ0FTZ0NBQ0VCREFFTElBRWdBem9BQ3dzZ0FTQURha0VBT2dBQURBRUxDeUFFQkVBZ0JDZ0NBQ0lBQkVBZ0FCQWZDeUFFRUI4TElBY29Bc1FDRUxnSUlBSkJ1QUZxRUJZZ0FrRUlhaEM3QWhvZ0IwR1FBbW9RRmlBSFFhZ0NhaERJQ2dzZ0IwSFFBbW9rQUF1eUFRRURmeU1BUVJCcklnTWtBRUVCSVFRQ1FBTkFJQUlFUUNBQ0lBUnhCRUFnQUNnQ0FDQUJJQVFnQTBFTWFoRGRBZzBESUFVRVFDQUFLQUlFUVlVSUVBNGFDeUFBS0FJRUlBTW9BZ3dvQWdBUURob2dCVUVCYWlFRklBSWdCSE1oQWdzZ0JFRUJkQ0VFREFFTEN3SkFJQVVOQUNBQUtBSUFJQUZCQUNBRFFRaHFFTjBDRFFBZ0FDZ0NCQ0FES0FJSUtBSUFFQTRhQ3lBRFFSQnFKQUFQQzBHem53bEIxcTRDUWNrRFFhSHBCQkFBQUF1SUFnRURmeUFCS0FJRUlRUUNRQ0FBS0FJRUlnTnBJZ1ZCQVUwRVFDQURRUUZySUFSeElRUU1BUXNnQXlBRVN3MEFJQVFnQTNBaEJBc0NRQUpBSUFKRkJFQWdBU0FBS0FJSU5nSUFJQUFnQVRZQ0NDQUFLQUlBSUFSQkFuUnFJQUJCQ0dvMkFnQWdBU2dDQUNJQ1JRMENJQUlvQWdRaEFpQUZRUUZOQkVBZ0FpQURRUUZyY1NFQ0RBSUxJQUlnQTBrTkFTQUNJQU53SVFJTUFRc2dBU0FDS0FJQU5nSUFJQUlnQVRZQ0FDQUJLQUlBSWdKRkRRRWdBaWdDQkNFQ0FrQWdCVUVCVFFSQUlBSWdBMEVCYTNFaEFnd0JDeUFDSUFOSkRRQWdBaUFEY0NFQ0N5QUNJQVJHRFFFTElBQW9BZ0FnQWtFQ2RHb2dBVFlDQUFzZ0FDQUFLQUlNUVFGcU5nSU1DNG9CQVFGL0l3QkJFR3NpQWlRQUlBQVF6Z0VpQUNBQktBS1FBVFlDa0FFZ0FDQUJLUU9JQVRjRGlBRWdBRUdZQVdvZ0FVR1lBV29RMFFFYUlBQWdBU2dDdUFFMkFyZ0JJQUFnQVNrRHNBRTNBN0FCSUFGQnNBRnFFRlVnQUNBQktBSzhBVFlDdkFFZ0FVRUVOZ0s4QVNBQ0lBRkJCR29RUWlBQUlBSVFFaG9nQWhBUEdpQUNRUkJxSkFBTEd3RUJmeUFBQkVBZ0FDZ0NEQ0lCQkVBZ0FSQWZDeUFBRUI4TEMyb0JBMzhqQUVFZ2F5SURKQUFnQTBFSWFpQUFJQUFvQWdRZ0FDZ0NBR3RCQW5WQkFXb1Fpd1FnQUNnQ0JDQUFLQUlBYTBFQ2RTQUFRUWhxRUtjQ0lnSW9BZ2dpQkNBQktBSUFOZ0lBSUFJZ0JFRUVhallDQ0NBQUlBSVFvd1FnQWhDYUF5QURRU0JxSkFBTENRQWdBRUVRRUk4VEM1QUJBUUYvSXdCQndBRnJJZ1FrQUNBRUlBQVFuUUlnQkVIZ3V3SVFEaG9nQkNBQ0VJRUJFQTRhSUFSQmtza0tFQTRhSUFRZ0FSQWhHaUFFUVkvY0NrSHNxZ29nQUNnQ0xDQUFLQUlrU1JzUURob2dCQ0FERUxzSUVBNGFJQVJCb2M0SkVBNGFJQVFnQUNnQ0xDQUJheEFoR2lBRVFmeVhDQkFPR2lBRUtBSzhBU0VBSUFRUUVTQUVRY0FCYWlRQUlBQUwzUUlCQjM4akFFSEFBV3NpQXlRQUFrQUNRQ0FDQkVBZ0FDZ0NWQ0lHUlEwQklBQW9BbEFDZnlBR1FRRnJJQUp4SUFacElnVkJBVTBOQUJvZ0FpQUNJQVpKRFFBYUlBSWdCbkFMSWdkQkFuUnFLQUlBSWdSRkRRRWdCa0VCYXlFSUlBVkJBVXNoQ1FOQUlBUW9BZ0FpQkVVTkFpQUNJQVFvQWdRaUJVY0VRQUpBSUFsRkJFQWdCU0FJY1NFRkRBRUxJQVVnQmtrTkFDQUZJQVp3SVFVTElBVWdCMFlOQVF3REN5QUVLQUlJSUFKSERRQUxJQVFvQWd3aUIwVUVRQ0FESUFBUW5RSWdBMEd6M2dvUURob2dBeUFDRUNFYUlBTkJncFFFRUE0YUlBTW9BcndCSVFRZ0F4QVJEQU1MSUFFZ0J6WUNDQ0FCSUFRb0FoQWlBRFlDRENBQklBQkJIMnBCQlhZN0FRSkJBQ0VFREFJTFFhaVNCMEgzbFFKQmhBWkJ5SllFRUFBQUN5QURJQUFRblFJZ0EwR3ozZ29RRGhvZ0F5QUNFQ0VhSUFOQmpwVUVFQTRhSUFNb0Fyd0JJUVFnQXhBUkN5QURRY0FCYWlRQUlBUUxEQUFnQUNBQUtBSXNFTW9LQzk4Q0FndC9BbjBnQVNBQktBSUlJZ1EyQWdRZ0FDRU1JQUVoQ3dKL1FRQWdBQ2dDQkNJQ0lBQW9BZ3hCQVdxeklnMGdBQ29DRUNJT0lBS3psRjRiUlFSQUlBQWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJQ0FuOGdEU0FPbFkwaURVTUFBSUJQWFNBTlF3QUFBQUJnY1FSQUlBMnBEQUVMUVFBTElnTWdBaUFEU3hzUWloY2dBQ2dDQkNFQ0N5QUNRUUZySUFSeElBSnBJZ05CQVUwTkFCb2dCQ0FDSUFSTERRQWFJQVFnQW5BTElRY0NRQ0FBS0FJQUlBZEJBblJxS0FJQUlnQkZCRUJCQUNFQURBRUxJQUpCQVdzaENTQURRUUZMSVFvRFFDQUFLQUlBSWdoRkRRRUNmeUFJS0FJRUlnTWdDWEVnQ2tVTkFCb2dBeUFDSUFOTERRQWFJQU1nQW5BTElBZEhEUUZCQUNFR0lBTWdCRVlFUUNBSUtBSU1JZ01nQVNnQ0RDQURLQUlBS0FJSUVRRUFJUVlMSUFVZ0JrRUJjM0VOQVNBRklBWnlJUVVnQUNnQ0FDRUFEQUFMQUFzZ0RDQUxJQUFRanhjTDZnSUJCWDhnQUNBQktRSUFOd0lBSUFBZ0FTMEFHRG9BR0NBQUlBRXBBaEEzQWhBZ0FDQUJLUUlJTndJSUlBQkJIR29nQVVFY2FoRGVEeUFBUVRCcUlRUWdBQ2dDUEFSQUlBQW9BamdRc1FjZ0FFRUFOZ0k0SUFBb0FqUWhBd05BSUFJZ0EwWUVRQ0FBUVFBMkFqd0ZJQVFvQWdBZ0FrRUNkR3BCQURZQ0FDQUNRUUZxSVFJTUFRc0xDeUFCS0FJd0lRSWdBVUVBTmdJd0lBUWdBaEJzSUFBZ0FTZ0NORFlDTkNBQlFRQTJBalFnQUNBQktBSThJZ0kyQWp3Z0FFRkFheUFCUVVCcktnSUFPQUlBSUFCQk9Hb2lCU0FCS0FJNElnTTJBZ0FnQWdSQUlBTW9BZ1FoQWdKQUlBQW9BalFpQXlBRFFRRnJJZ1p4UlFSQUlBSWdCbkVoQWd3QkN5QUNJQU5KRFFBZ0FpQURjQ0VDQ3lBRUtBSUFJQUpCQW5ScUlBVTJBZ0FnQVVJQU53STRDeUFBUWNRQWFpQUJRY1FBYWhEZUR5QUFRZGdBYWlBQlFkZ0FhaER0QlNBQVFlUUFhaUFCUWVRQWFoRHRCU0FBUWZBQWFpQUJRZkFBYWhEdEJTQUFDK1VCQUNBQVFnQTNBaHdnQUNBRE5nSUlJQUFnQWpZQ0JDQUFJQUUyQWdBZ0FFSUFOd0lNSUFCQ0FEY0NNQ0FBUWdBM0FrUWdBRUlBTndJa0lBQkNBRGNBRVNBQVFZQ0FnUHdETmdJc0lBQkNBRGNDT0NBQVFVQnJRWUNBZ1B3RE5nSUFJQUJDQURjQ1RDQUFRWUNBZ1B3RE5nSlVJQUJCMkFCcVFRQkJKQkI1SVFFakFFRWdheUlDSkFBZ0FTZ0NDQ0FCS0FJQUlnTnJRUVIxUVJsSkJFQWdBU0FDUVFocVFSa2dBU2dDQkNBRGEwRUVkU0FCUVFocUVOSU9JZ0VRb3dRZ0FSQ1RGd3NnQWtFZ2FpUUFJQUJCNUFCcVFSa1Fxd1FnQUVId0FHcEJHUkNyQkNBQUN3MEFJQUJCQUVFQVFRQVFtUmNMcWdFQkFuOUJmQ0VFQWtBZ0FDZ0NBQ0lEUlEwQUlBQW9BZ1JCQlVrTkFDQUNSUVJBUVgwUEN5QUNJQU1vQWdBZ0FSQ25CallDQUNBQ0lBQW9BZ0FvQWdRZ0FSQ25CaUlETmdJRUlBTkIvNEdBZUhFZ0EwR0JqQVJyUWY5elNYSU5BQ0FDSUFBb0FnQW9BZ2dnQVJDbkJqWUNDQ0FDSUFBb0FnQW9BZ3dnQVJDbkJqWUNEQ0FDSUFBb0FnQW9BaEFnQVJDbkJqWUNFQ0FDSUFBb0FnQkJGR28yQWhSQkFDRUVDeUFFQzBBQkFuOGdBQ2dDQkNFQ0EzOGdBU0FDUmdSL0lBQW9BZ2doQVNBQVFnQTNBZ2dnQVFVZ0FDZ0NBQ0FCUVFKMGFrRUFOZ0lBSUFGQkFXb2hBUXdCQ3dzTFpBRURmeU1BUVJCcklnVWtBQ0FBUVFBMkFnZ2dBRUlBTndNQUEwQWdBeUFFUndSQUlBVkJBRFlDRENBQlFTQWdBaUFFUVFKMGFpSUdLQUlBSUFWQkRHb1EzUUpGQkVBZ0FDQUdLQUlBRU5BRUN5QUVRUUZxSVFRTUFRc0xJQVZCRUdva0FBc3dBUUYvSUFBb0FnQWhBU0FBUVFBMkFnQWdBUVJBSUFBdEFBZ0VRQ0FCUVJScUVLUUNDeUFCQkVBZ0FSQWZDd3NMVHdFQ2Z5TUFRUkJySWdFa0FDQUJJQUEyQWdnZ0FVRUlhaUVDUVFFaEFBTkFJQUJCQUVvRVFDQUNJQUlvQWdBUVREWUNBQ0FBUVFGcklRQU1BUXNMSUFFb0FnZ2hBQ0FCUVJCcUpBQWdBQXZTQWdFSGYwRUJJUVVDUUFKQUFrQUNRQUpBQWtBZ0FTQUFhMEVDZFE0R0JRVUFBUUlEQkFzZ0FVRUVheUlCS0FJQUlnTW9BZ0FvQWdBZ0FDZ0NBQ0lDS0FJQUtBSUFUdzBFSUFBZ0F6WUNBQ0FCSUFJMkFnQkJBUThMSUFBZ0FFRUVhaUFCUVFSckVMWUhHa0VCRHdzZ0FDQUFRUVJxSUFCQkNHb2dBVUVFYXhDVURocEJBUThMSUFBZ0FFRUVhaUFBUVFocUlBQkJER29nQVVFRWF4Q1REaHBCQVE4TElBQWdBRUVFYWlBQVFRaHFJZ1FRdGdjYUlBQkJER29oQWdOQUlBRWdBa1lOQVNBQ0lRTUNRQ0FDS0FJQUlnY29BZ0FvQWdBZ0JDZ0NBQ0lJS0FJQUtBSUFTUVJBQTBBQ1FDQURJQWcyQWdBZ0FDQUVJZ05HQkVBZ0FDRUREQUVMSUFjb0FnQW9BZ0FnQTBFRWF5SUVLQUlBSWdnb0FnQW9BZ0JKRFFFTEN5QURJQWMyQWdBZ0JrRUJhaUlHUVFoR0RRRUxJQUlpQkVFRWFpRUNEQUVMQ3lBQ1FRUnFJQUZHSVFVTElBVUwxUUlCQ244Q1FDQUJRUUpJRFFBZ0FVRUNhMEVCZGlJTElBSWdBR3NpQTBFQ2RVZ05BQ0FBSUFOQkFYVWlBMEVCYWlJR1FRSjBhaUlFS0FJQUlRVUNmeUFCSUFOQkFtb2lDVXdFUUNBRktBSUFLQUlBREFFTElBUkJCR29nQkNBRktBSUFLQUlBSWdNZ0JDZ0NCQ0lLS0FJQUtBSUFJZ2hKSWdjYklRUWdDaUFGSUFjYklRVWdDU0FHSUFjYklRWWdBeUFJSUFNZ0NFc2JDeUVESUFNZ0FpZ0NBQ0lJS0FJQUtBSUFTUTBBQTBBQ1FDQUVJUU1nQWlBRk5nSUFJQVlnQzBvTkFDQUFJQVpCQVhRaUFrRUJjaUlHUVFKMGFpSUVLQUlBSVFVQ2Z5QUJJQUpCQW1vaUNrd0VRQ0FGS0FJQUtBSUFEQUVMSUFSQkJHb2dCQ0FGS0FJQUtBSUFJZ0lnQkNnQ0JDSU1LQUlBS0FJQUlnZEpJZ2tiSVFRZ0RDQUZJQWtiSVFVZ0NpQUdJQWtiSVFZZ0FpQUhJQUlnQjBzYkN5RUhJQU1oQWlBSElBZ29BZ0FvQWdCUERRRUxDeUFESUFnMkFnQUxDeGdBSUFCQjlKd1ROZ0lBSUFCQkdHb1FNaG9nQUJEWEJRc3BBUUYvSUFCQi9KZ1ROZ0lBSUFCQklHb2lBU0FCS0FJRUVNNEtJQUJCRkdvUU1ob2dBQkRYQlFzWUFDQUFRWVNWRXpZQ0FDQUFRUnhxRURJYUlBQVExd1VMR0FBZ0FFR0VweE0yQWdBZ0FFRVVhaEFQR2lBQUVOY0ZDeVFBSUFFb0FnQWdBRUVHZENBQVFRSjJhbXBCeDR5aWpnWnJJQUJ6SUFJZ0F4Q29Gd3VpQVFBZ0FFSUFOd0lFSUFBZ0JEWUNJQ0FBSUFNMkFod2dBQ0FDTmdJWUlBQWdBVFlDRkNBQVFvQ0FnSUNBQXpjQ0RDQUFRZkNlRXpZQ0FBSkFBa0FDUUNBQkJFQWdBa1VOQVNBRFJRMENJQVJGRFFNZ0FBOExRZnZIQVVHQW9BSkJyUVZCMkw0RkVBQUFDMEdSa2dkQmdLQUNRYTRGUWRpK0JSQUFBQXRCK3BFSFFZQ2dBa0d2QlVIWXZnVVFBQUFMUVlTU0IwR0FvQUpCc0FWQjJMNEZFQUFBQ3pnQUlBSW9BZ0FnQVNnQ0FDQUFRUVowSUFCQkFuWnFha0hIaktLT0Jtc2dBSE1pQUVFR2RHb2dBRUVDZG1wQng0eWlqZ1pySUFCekN6SUFJQUJDQURjQ0JDQUFJQUUyQWhRZ0FFS0FnSUNBNEFFM0Fnd2dBRUgwbkJNMkFnQWdBRUVZYWlBQ0VMQUJHaUFBQys4QkFRVi9Jd0JCRUdzaUJDUUFJd0JCRUdzaUF5UUFJQUVpQjBFRWFpRUZBa0FnQVNnQ0JDSUdSUVJBSUFVaEFRd0JDd05BSUFJZ0JpSUJRUkJxSWdZUXpRb0VRQ0FCSVFVZ0FTZ0NBQ0lHRFFFTUFnc2dCaUFDRU0wS1JRMEJJQUZCQkdvaEJTQUJLQUlFSWdZTkFBc0xJQU1nQVRZQ0RDQUVJQVVvQWdBaUFRUi9RUUFGUVJnUUZTRUJJQU1nQjBFRWFqWUNCQ0FCSUFJcEFnQTNBaEFnQTBFQk9nQUlJQWNnQXlnQ0RDQUZJQUVRK0FJZ0EwRUFOZ0lBSUFNUWl3RkJBUXM2QUF3Z0JDQUJOZ0lJSUFOQkVHb2tBQ0FBSUFRb0FnZzJBZ0FnQUNBRUxRQU1PZ0FFSUFSQkVHb2tBQXVMQWdFRmZ5TUFRUkJySWdRa0FDQUVJQUUyQWd3Z0FTQUFLQUlZSUFBb0FoUnJRUUoxVHdSQVFlMnBDVUdBb0FKQjhnTkJoZHNDRUFBQUN5TUFRU0JySWdNa0FDQURJQVJCREdvaUJUWUNFQ01BUVJCcklnRWtBQ0FESUFCQklHb2lCaUFCUVF4cUlBVVFyUVlpQlNnQ0FDSUFCSDlCQUFWQklCQVZJUUFnQVNBR1FRUnFOZ0lFSUFFZ0FEWUNBQ0FES0FJUUtBSUFJUWNnQUVFQU5nSWNJQUJDQURjQ0ZDQUFJQWMyQWhBZ0FVRUJPZ0FJSUFZZ0FTZ0NEQ0FGSUFFb0FnQVErQUlnQVNnQ0FDRUFJQUZCQURZQ0FDQUJFSjRYUVFFTE9nQWNJQU1nQURZQ0dDQUJRUkJxSkFBZ0F5Z0NHQ0VBSUFOQklHb2tBQ0FBUVJScUlBSVFuZzRnQkVFUWFpUUFDNGtCQVFKL0lBQkNBRGNDQkNBQVFvQ0FnSUN3QVRjQ0RDQUFRZnlZRXpZQ0FDQUFRUlJxSUFFUXNBRWFJQUFnQUVFa2FqWUNJQ0FBUWdBM0FpUWdBU2dDQkNFRElBRW9BZ0FoQVFKQUEwQWdBU0FEUmcwQklBRW9BZ0FoQWlBQlFRUnFJUUVnQWlBQ0tBSUFLQUlZRVFBQVJRMEFDMEdlOHdoQmdLQUNRZXNEUWZmd0FCQUFBQXNnQUF0SUFDQUFRZ0EzQWdRZ0FDQUJOZ0lVSUFCQ2dJQ0FnS0FCTndJTUlBQkJnSmNUTmdJQUlBRWdBU2dDQUNnQ0dCRUFBQVJBUWF2ekNFR0FvQUpCendOQjJ4d1FBQUFMSUFBTGp3RUFJQUJDQURjQ0JDQUFJQUUyQWhRZ0FFS0FnSUNBa0FFM0Fnd2dBRUdFbFJNMkFnQWdBRUVZYWlBQ0VMWVhBa0FDUUNBQkJFQWdBU0FCS0FJQUtBSVlFUUFBRFFFZ0FpZ0NDQ0FDS0FJRWEwRUVUUTBDSUFBUEMwSDd4d0ZCZ0tBQ1FhUURRZU1kRUFBQUMwR3I4d2hCZ0tBQ1FhVURRZU1kRUFBQUMwR1doUWRCZ0tBQ1FhZ0RRZU1kRUFBQUN3NEFJQUFvQWhRZ0FTQUNFTTBFQzFnQUlBQkNBRGNDQkNBQUlBZzJBaXdnQUNBSE5nSW9JQUFnQmpZQ0pDQUFJQVU2QUNFZ0FDQUVPZ0FnSUFBZ0F6WUNIQ0FBSUFJMkFoZ2dBQ0FCTmdJVUlBQkNnSUNBZ09BQU53SU1JQUJCaUpNVE5nSUFJQUFMTUFBZ0FDQUFFTDhCSUFFb0FnQWdBaWdDQUNBRElBUW9BZ0FRbGg0aUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkMxQUFJQUJDQURjQ0JDQUFJQUkyQWhnZ0FDQUJOZ0lVSUFCQ2dJQ0FnTkFBTndJTUlBQkJqSkVUTmdJQUlBRWdBU2dDQUNnQ09CRUFBRVVFUUVITDhRaEJnS0FDUWRRQ1Fad2hFQUFBQ3lBQUMyOEJCWDhqQUVHZ0FXc2lBaVFBSUFKQkdHb1F6Z0VpQTBIYTZRWVFEaUVGSUFKQkNHb2lCQ0FCS0FJVUlnWWdCaWdDQUNnQ0RCRUNBQ0FGSUFRUUVrSDA3UXdRRGlBQktBSVlFQ0ZCaStZR0VBNGFJQVFRRHhvZ0FDQURRUVJxRUVJZ0F4QzdBUm9nQWtHZ0FXb2tBQXR3QUNBQVFnQTNBZ1FnQUNBQ05nSVlJQUFnQVRZQ0ZDQUFRb0NBZ0lEQUFEY0NEQ0FBUVpDUEV6WUNBQUpBSUFFZ0FTZ0NBQ2dDSUJFQUFBMEFJQUVnQVNnQ0FDZ0NLQkVBQUEwQUlBRWdBU2dDQUNnQ01CRUFBQTBBUWRqd0NFR0FvQUpCdWdKQm05SUJFQUFBQ3lBQUN4MEFJQUFvQWhRZ0FVRUdkQ0FCUVFKMmFtcEJ4NHlpamdacklBRnpDeG9BSUFBZ0FTZ0NBRFlDQUNBQVFRUnFJQUZCQkdvUXNBRWFDMGdCQVg4akFFRXdheUlCSkFBZ0FVRUFOZ0lzSUFGQkFEWUNCQ0FCSUFGQkRHbzJBZ2dnQVVHSXJoTTJBZ0FnQUVFQUlBRVF6UVFoQUNBQkVKZ09HaUFCUVRCcUpBQWdBQXNpQVFGL0lBQW9BaXdpQVFSQUlBRW9BZ1FQQ3lBQUtBSUlJQUFvQWdSQkFuUnFDeGNBSUFBZ0FTQUJJQUJyUVFKMUVOZ0tRUUYwRUpVT0N3a0FJQUFvQXRRQ1JRdkhBZ0VGZnlNQVFUQnJJZ0lrQUFKQUlBQW9BZ1FnQUNnQ0FDSUZhMEVNYlNJRUlBRW9BZ1FnQVNnQ0FDSUdhMEVNYlVjTkFFRUJJUU1DUUFKQUlBUU9BZ0lBQVFzZ0JTQUdFTXNJSVFNTUFRdEJBQ0VESUFKQkFEWUNLQ0FDUWdBM0F5QWdBa0VBTmdJWUlBSkNBRGNERUNBQ1FTQnFJZ1VnQkJDckJDQUZJQVFRcXdRRGZ5QURJQVJHQkg4Z0FpZ0NJQ0FDS0FJa0VMa1hJQUlvQWhBZ0FpZ0NGQkM1RjBFQUlRRURRQ0FFSUFFaUFFY0VRQ0FBUVFGcUlRRWdBRUVDZENJRElBSW9BaUJxS0FJQUlBSW9BaEFnQTJvb0FnQVF5d2hCQVhORkRRRUxDeUFDUVJCcUVESWFJQUpCSUdvUU1ob2dBQ0FFVHdVZ0FpQURRUXhzSWdVZ0FDZ0NBR28yQWd3Z0FrRWdhaUFDUVF4cUlnWVEvUUlnQWlBQktBSUFJQVZxTmdJTUlBTkJBV29oQXlBQ1FSQnFJQVlRL1FJTUFRc0xJUU1MSUFKQk1Hb2tBQ0FEQ3hrQUlBQkJnSUNBZ0FKUEJFQVErd0VBQ3lBQVFRTjBFQlVMTVFBQ1FDQUFLQUlBSWdBRVFDQUJLQUlBSWdFTkFRdEJnNjBCUWMydEEwSEJBRUhjOFFnUUFBQUxJQUFnQVJDK0J3c2pBQ0FBS0FJQUlnQkZCRUJCOFpVRVFjMnRBMEVvUWR6eENCQUFBQXNnQUJDM0Z3c1lBQ0FBUWRnQWFoRENDQ0FBUVVCckVLd0RJQUFRa0FzTHBBUUJCbjhqQUVIZ0FXc2lBeVFBSUFOQndBRnFJQUFnQVJEcEFTSUVJQUlRbGc0aEJ3SkFBbjhDUUFKQUFrQWdCQ2dDRUVFSmF3NEZBZ0lDQVFBQkMwRUFEQUlMUVFFaEJRc2dCUXNFUUNBQUlBY1FyUU1oQlF3QkN5QUFLQUlFSWdZb0FoZ2lCVUhRQldvaEJBTkFJQVFvQWdBaUJDQUZRY3dGYWtjRVFBSkFJQVFvQWhSQklFY05BQ0FFUVFJUWtRUWdBVWNOQUNBRVFRRVFrUVFnQWtjTkFDQUVFR0FoQlF3REN5QUVRUVJxSVFRZ0FDZ0NCQ0lHS0FJWUlRVU1BUXNMSUFZUXNBWWhCVUhBQUJBVklRUWdBQ2dDQkNFR0lBTkJBVFlDVENBRElBTkJ4QUJxTmdKSUlBTWdBeWtEU0RjREVDQURJQUkyQWtRZ0EwSFFBR29nQTBFUWFoQ3JBU0VDSUFOQkVEWUNhQ0FEUWVnQWFpSUlRUVJ5SUFJUXBnRWFJQU5CQVRZQ0pDQURJQUUyQWh3Z0F5QURRUnhxTmdJZ0lBTWdBeWtESURjRENDQURRU2hxSUFOQkNHb1Fxd0VoQVNBRFFRRTJBb1FCSUFOQmlBRnFJQUVRcGdFYUlBTkJBallDcEFFZ0F5QUlOZ0tnQVNBRElBTXBBNkFCTndNQUlBTWdCQ0FHUVNCQkFDQUZJQU5CcUFGcUlBTVFqQmdpQmhDckRqWUN1QUVnQTBHZ0FXb2hCQ0FHRU5vRkEwQWdCRUVZYXhCdEdpQUVRUnhySWdRZ0EwSG9BR3BIRFFBTElBRVFiUm9nQWhCdEdpQUFLQUlFSUFOQnVBRnFFTUlYSUFBb0FnUVEzd2dnQlNBSEVNTVhJQU1vQXJnQklRQWdBMEVBTmdLNEFTQUFSUTBBSUFBZ0FDZ0NBQ2dDQkJFREFBc2dCeERYQlJvZ0EwSGdBV29rQUNBRkM4QUZBUVIvSXdCQm9BRnJJZ1VrQUNBRlFRRTJBbFFnQlVFQU5nS1lBU0FGUWdBM0E1QUJJQVVnQlVITUFHbzJBbEFnQlNBRktRTlFOd01nSUFVZ0FUWUNUQ0FGUWRnQWFpQUZRU0JxRUtzQklRRWdCVUVCTmdKd0lBVkI4QUJxSWdaQkJISWlCeUFCRUtZQklRZ2dCVUdRQVdvZ0JoQ3VCaUFJRUcwYUlBRVFiUm9nQXdSQUlBVkJBVFlDUkNBRklBUTJBa3dnQlNBRlFjd0FhallDUUNBRklBVXBBMEEzQXhnZ0JVSFlBR29nQlVFWWFoQ3JBU0VCSUFWQkJqWUNjQ0FISUFFUXBnRWhCQ0FGUVpBQmFpQUZRZkFBYWhDdUJpQUVFRzBhSUFFUWJSb0xJQUlvQWdBb0FnQWhBU0FGUVFFMkFqd2dCU0FCTmdKTUlBVWdCVUhNQUdvMkFqZ2dCU0FGS1FNNE53TVFJQVZCMkFCcUlBVkJFR29RcXdFaEFTQUZRUnMyQW5BZ0J5QUJFS1lCSVFRZ0JVR1FBV29nQlVId0FHb1FyZ1lnQkJCdEdpQUJFRzBhUVFFaEFRTkFJQUlvQWdRZ0FpZ0NBQ0lFYTBFQ2RTQUJUUVJBSUFVZ0FDZ0NCQ0lCTmdKWUlBVkJ5QUJCeHdBZ0F4czJBa3dnQlVFQU5nSXNJQVZCQURZQ0tDQUZJQVZCMkFCcUlBVkJ6QUJxSUFWQkxHb2dCVUVvYWlBRlFaQUJhaENkRGpZQ2NDQUJLQUpzSWdKQkJIRUVmeUFCRU40SUlBVW9BbkFRN1JjZ0FTZ0NiQVVnQWd0QkFYRUVRQ0FCRU1BR0lBVW9BbkFRMmdvTElBVW9BbkFoQWlBQktBSVlJUUVnQlVFQU5nSndJQUlnQVVHSUJXb1ErQUVnQlNnQ2NDRUJJQVZCQURZQ2NDQUJCRUFnQVNBQktBSUFLQUlFRVFNQUN5QUFLQUlFSWdBb0FoZ29BcEFGSVFFZ0FCREFCaUFCRUxRT0lBVkJrQUZxRU5vRklBVkJvQUZxSkFBRklBVWdCQ0FCUVFKMGFpZ0NBRFlDVENBRklBVkJ6QUJxTmdJd0lBVkJBVFlDTkNBRklBVXBBekEzQXdnZ0JVSFlBR29nQlVFSWFoQ3JBU0VFSUFWQkJqWUNjQ0FISUFRUXBnRWhCaUFGUVpBQmFpQUZRZkFBYWhDdUJpQUdFRzBhSUFRUWJSb2dBVUVCYWlFQkRBRUxDd3RBQVFKL0lBRW9BZ0FoQWlBQUtBSVlJUU1nQVVFQU5nSUFJQUlnQTBITUJXb1ErQUVnQUMwQWJFRUJjUVJBSUFBUXdBWWdBQ2dDR0NnQzFBVVEyZ29MQzM4QkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBTWdBQ0FDRU9NRElnRTJBZ2dnQVNBQ0VMNEhCRUFnQUVFSWFpQURRUXhxRU5BQklBRTJBZ0FnQUNBREtBSUlFSThFUlFSQUlBTW9BZ3doQVNBQVFSeHFJQU5CQ0dvUW53NGdBVFlDQUFzZ0EwRVFhaVFBRHd0QnhMd0lRY2FsQWtHSUJVSGlsZ1FRQUFBTGx3TUJCWDhqQUVFZ2F5SURKQUFDUUNBQktBSVVJZ1FRNGhkRkRRQUNRQUpBQWtBZ0JFSEhBR3NPQWdBQkFnc2dBU2dDSkNFQUlBRW9BaUFoQkNBRFFRQTJBaGdnQTBJQU53TVFRUUVnQUNBRWEwRWNiU0lBSUFCQkFVMGJJUUJCQVNFRUEwQWdBQ0FFUmdSQUlBSkJCR29nQTBFUWFpSUFFSjRPSUFBUU1ob01CQVVnQXlBQklBUVFrUVEyQWdBZ0JFRUJhaUVFSUFOQkVHb2dBeERmQWd3QkN3QUxBQXNnQVNnQ0pDRUZJQUVvQWlBaEJpQUJRUUVRa1FRaEJ5QURRUUEyQWhnZ0EwSUFOd01RUVFJaEJFRUNJQVVnQm10QkhHMGlCU0FGUVFKTkd5RUZBMEFnQkNBRlJnUkFBa0FnQWlBQ0tBSUFLQUpzRVFBQUlnRUVRQ0FCSUFjZ0EwRVFhaENyRnd3QkN5QUFLQUlBSVFBZ0EwRUFOZ0lJSUFOQ2xBYzNBd0FnQUVFQlFjYWxBaUFEUWNYekF4RFBCQXNnQTBFUWFoQXlHZ3dEQlNBRElBRWdCQkNSQkRZQ0FDQUVRUUZxSVFRZ0EwRVFhaUFERU44Q0RBRUxBQXNBQ3lBQUtBSUFJUUFnQTBFQU5nSVlJQU5DbUFjM0F4QWdBRUVCUWNhbEFpQURRUkJxUWVlOUJCRFBCQXNnQTBFZ2FpUUFDM1FCQTM4akFFRVFheUlDSkFBZ0FFRUFOZ0lJSUFCQ0FEY0NBQ0FCUWN3RmFpRURJQUZCMEFWcUlRRURRQ0FESUFFb0FnQWlBVWNFUUNBQktBSVVJZ1JCNEN0SElBUkJLV3RCQzB0eFJRUkFJQUlnQVRZQ0RDQUFJQUpCREdvUS9RSUxJQUZCQkdvaEFRd0JDd3NnQWtFUWFpUUFDMmNCQW44akFFRVFheUlDSkFBZ0FFRUFOZ0lJSUFCQ0FEY0NBQ0FCUWN3RmFpRURJQUZCMEFWcUlRRURRQ0FESUFFb0FnQWlBVWNFUUNBQktBSVVFS1VPQkVBZ0FpQUJOZ0lNSUFBZ0FrRU1haEQ5QWdzZ0FVRUVhaUVCREFFTEN5QUNRUkJxSkFBTGp3SUJCWDhqQUVFUWF5SUdKQUFnQmlBQk5nSUlJQVpCQ0dvaEFnSkFJQUJCakFacUlnRW9BZ1FpQUNBQktBSUlTUVJBSUFJb0FnQWhCQ0FDUVFBMkFnQWdBQ0FFTmdJQUlBRWdBRUVFYWpZQ0JBd0JDeU1BUVNCcklnUWtBQ0FFUVFocUlBRWdBU2dDQkNBQktBSUFhMEVDZFVFQmFoQ0xCQ0FCS0FJRUlBRW9BZ0JyUVFKMUlBRkJDR29RcHdJaUFDZ0NDQ0VGSUFJb0FnQWhBeUFDUVFBMkFnQWdCU0FETmdJQUlBQWdCVUVFYWpZQ0NDQUJJQUFRK3dnZ0FDZ0NCQ0VGQTBBZ0JTQUFLQUlJSWdOSEJFQWdBQ0FEUVFScklnTTJBZ2dnQXhEWkNCb01BUXNMSUFBb0FnQWlBQVJBSUFBUUh3c2dCRUVnYWlRQUlBRW9BZ1FhQ3lBQ0VOa0lHaUFHUVJCcUpBQUxMUUVDZnlBQUtBSUlJZ0VnQUNnQ0JDSUNhMEVJZEVFQmEwRUFJQUVnQWtjYklBQW9BaFFnQUNnQ0VHcHJDMFVCQW44Z0FDZ0NCQ0VDQTBBZ0FpQUFLQUlJSWdGSEJFQWdBQ0FCUVVCcUlnRTJBZ2dnQVNBQktBSUFLQUlBRVFBQUdnd0JDd3NnQUNnQ0FDSUFCRUFnQUJBZkN3dXJBZ0VGZnlBQUtBSUFJUVVnQUNnQ0JDRURBMEFnQXlBRlJ3UkFJQUVvQWdSQlFHb2lBa0lBTndJRUlBSkJBRG9BRENBQ1FmVGdFallDQUNBQ0lBTkJRR29pQXlnQ0VEWUNFQ0FDSUFNb0FoUTJBaFFnQWlBRExRQVlPZ0FZSUFJZ0F5MEFHVG9BR1NBQ0lBTW9BaHcyQWh3Z0FrRWdhaUFEUVNCcUVLVUNHaUFDUVN4cUlBTkJMR29RcFFJaEJDQUNJQU1wQWpnM0FqZ2dCQ2dDQUNFRUlBSW9BakFoQmdOL0lBUWdCa1lFZnlBQ0JTQUVJQU1wQWpnM0FqZ2dCRUZBYXlFRURBRUxDeG9nQVNBQktBSUVRVUJxTmdJRURBRUxDeUFBS0FJQUlRSWdBQ0FCS0FJRU5nSUFJQUVnQWpZQ0JDQUFLQUlFSVFJZ0FDQUJLQUlJTmdJRUlBRWdBallDQ0NBQUtBSUlJUUlnQUNBQktBSU1OZ0lJSUFFZ0FqWUNEQ0FCSUFFb0FnUTJBZ0FMU2dFQmZ5QUFRUUEyQWd3Z0FDQUROZ0lRSUFFRVFDQUJFTjhYSVFRTElBQWdCRFlDQUNBQUlBUWdBa0VHZEdvaUFqWUNDQ0FBSUFRZ0FVRUdkR28yQWd3Z0FDQUNOZ0lFSUFBTEdBRUJmMEVNRUJVaUFFRUFOZ0lJSUFCQ0FEY0NBQ0FBQzlnREFRaC9JQVFvQWdBaEJTQURLQUlBSVFNZ0FTQUNLQUlBTmdJQUlBRkJCR29pQVVFQU5nSVVJQUZCQURZQ0JDQUJJQUZCREdvMkFnZ2dBVUdFNFJJMkFnQWdBUkRRQnlFQUlBRW9BaFFpQkNBQlFRaHFJZ2tnQkJzb0FnQWhDaUFFSUFVZ0EydEJBblVpQ3lBQktBSUVhaUlNUVFOSmNrVUVRRUVBSVFRakFFRVFheUlHSkFBQ1FDQUJLQUlVUlFSQUVNd1hJUUlnQmtFQU5nSUlJQUZCRkdvZ0FoQ05CU0FHUVFocUVMc0dBMEFnQkNBQktBSUVUdzBDSUFFb0FnZ2dCRUVDZEdvaEJ3SkFJQUVvQWhRaUFpZ0NCQ0lJSUFJb0FnaEpCRUFnQ0NBSEtBSUFOZ0lBSUFJZ0NFRUVhallDQkF3QkN5QUNJQWNRdUE0Z0FpZ0NCQm9MSUFSQkFXb2hCQXdBQ3dBTFFhYTlCVUdKckFOQnZRTkJ6TG9GRUFBQUN5QUJRUUEyQWdRZ0JrRVFhaVFBSUFFb0FoUWhCQXNDUUNBRUJFQWdCQ0FFS0FJQUlBQWdDbXRCZkhGcUlBTWdCUkRqQ2lBQktBSVVJZ0FnQ1NBQUd5Z0NBQm9NQVFzZ0FTZ0NDQ0FNUVFKMGFpRUNJQUVRMEFjaEJBTi9JQUFnQkVFRWF5SUVTd1IvSUFBaEJBTkFJQU1nQlVjRVFDQUVJQU1vQWdBMkFnQWdBMEVFYWlFRElBUkJCR29oQkF3QkN3c2dBU0FCS0FJRUlBdHFOZ0lFSUFBRklBSkJCR3NpQWlBRUtBSUFOZ0lBREFFTEN4b0xDeVFBSUFBb0FnQUVRQ0FBRVBRS0lBQW9BZ0FRSHlBQVFRQTJBZ2dnQUVJQU53SUFDd3REQVFOL0lBQVEwZ2NoQVFOL0lBQW9BaVFnQUNnQ0lDSURhMEVjYlNBQlRRUi9JQUlGSUFNZ0FVRWNiR3BCQkdvUTJRY2dBbW9oQWlBQlFRRnFJUUVNQVFzTEM1d0NBUVYvSUFBZ0FVY0VRQUpBSUFFb0FnUWlCU0FCS0FJQUlnSnJRUVoxSWdNZ0FDZ0NDQ0FBS0FJQUlnRnJRUVoxVFFSQUlBSWdBQ2dDQkNBQmF5SUVhaUFGSUFNZ0JFRUdkU0lHU3hzaEJBTkFJQUlnQkVjRVFBSkFJQUV0QUF4RkJFQWdBU2dDQkFSQUlBRVE4Z29MREFFTFFZRzhCVUhWdFFOQi9BQkJqZVlHRUFBQUN5QUJJQUlwQWhnM0FoZ2dBU0FDS1FJUU53SVFJQUZCSUdvZ0FrRWdhaERSRnlBQlFTeHFJQUpCTEdvUTBCY2dBU0FDS1FJNE53STRJQUZCUUdzaEFTQUNRVUJySVFJTUFRc0xJQU1nQmtzRVFDQUFJQVFnQlNBRElBQW9BZ1FnQUNnQ0FHdEJCblZyRUxJT0RBSUxJQUFnQVJEekdBd0JDeUFBRU00WElBQWdBQ0FERUtZT0VPQVhJQUFnQWlBRklBTVFzZzRMQ3d2Q0FRRUVmeUFBSUFGSEJFQUNRQ0FCS0FJRUlnUWdBU2dDQUNJQ2EwRWNiU0lCSUFBb0FnZ2dBQ2dDQUNJRGEwRWNiVTBFUUNBQ0lBSWdBQ2dDQkNBRGEwRWNiU0lGUVJ4c2FpQUVJQUVnQlVzaUFoc2lCU0FERU4wWElRTWdBZ1JBSUFBZ0JTQUVJQUFvQWdRZ0FDZ0NBR3RCWkcwZ0FXb1F6QWdNQWdzZ0FDQURFUElZREFFTElBQW9BZ0FFUUNBQUVQUVlJQUFvQWdBUUh5QUFRUUEyQWdnZ0FFSUFOd0lBQ3lBQUlBQWdBUkRJQ0JDOURpQUFJQUlnQkNBQkVNd0lDd3NMNndFQkEzOUJ3QUFRRlNJQ1FnQTNBZ1FnQWtFQU93RVlJQUpCQURZQ0ZDQUNJQUUyQWhBZ0FrRUFPZ0FNSUFKQjlPQVNOZ0lBSUFFUXZRY2hBeUFDUWdBM0FpQWdBaUFETmdJY0lBSkNBRGNDS0NBQ1FnQTNBakFnQWtJQU53STRJQUlnQUNnQ0ZEWUNGQ0FDSUFBdEFCZzZBQmdnQWlBQUxRQVpPZ0FaSUFJZ0FSQzlCellDSENBQ1FTQnFJQUJCSUdvUTBSY2dBa0VzYWlBQVFTeHFFTkFYSUFJb0FqQWhCQ0FDS0FJc0lRTURRQ0FESUFSSEJFQWdBeUFCRUwwSE5nSWNJQU1RcWc0RVFDQURJQUVRc0FZUXFRNExJQU5CUUdzaEF3d0JDd3NnQWlBQUtRSTROd0k0SUFJTDhBRUJBMzhqQUVFUWF5SUVKQUFnQUVJQU53SUVJQUFnQVRZQ0VDQUFRUUE2QUF3Z0FFSDA0QkkyQWdBZ0FDQUNMd0VHTmdJVUlBQWdBaWdDREVFQVJ6b0FHQ0FBSUFJb0FoQkJBRWM2QUJrZ0FSQzlCeUVCSUFCQ0FEY0NJQ0FBSUFFMkFod2dBRUlBTndJb0lBQkNBRGNDTUNBQUlBTXBBZ0EzQWpnZ0FFRWdhaUlESUFJdkFSZ1FyUTREZnlBQ0x3RVlJQVZOQkg4Z0JFRVFhaVFBSUFBRklBUWdBaWdDQUNBQ0tBSVVJQVZCQkhScUlnRXZBUUJCQW5ScUlnWTJBZ3dnQkNBR0lBRXZBUUpCQW5ScU5nSUlJQU1nQVVFRWFpQUVRUXhxSUFSQkNHb1ExQmNnQlVFQmFpRUZEQUVMQ3d1b0FRRUNmd0pBSUFBb0FnUWdBQ2dDQ0VrRVFDQUFRUWhxSUFBb0FnUWlCQ0FCSUFJZ0F4RE5GeUFBSUFSQkhHbzJBZ1FNQVFzakFFRWdheUlGSkFBZ0FFRUlhaUlFSUFWQkNHb2dBQ0FBS0FJRUlBQW9BZ0JyUVJ4dFFRRnFFTWdJSUFBb0FnUWdBQ2dDQUd0QkhHMGdCQkRIQ0NJRUtBSUlJQUVnQWlBREVNMFhJQVFnQkNnQ0NFRWNhallDQ0NBQUlBUVEzQW9nQkJER0NDQUZRU0JxSkFBTElBQW9BZ1FhQ3hnQkFYOUJBU0VCSUFBUXJBNEVmMEVCQlNBQUVOUUtDd3MzQVFGL0lBQW9BZ0FpQVFSQUlBRWhBQU5BSUFBaUFTZ0NCQ0lBRFFBTElBRVBDd05BSUFBZ0FDZ0NDQ0lBS0FJQVJnMEFDeUFBQzAwQkEzOGdBU2dDQkNJRElBRW9BaEFnQVNnQ0ZHb2lCRUVJZGtIOC8vOEhjV29oQWlBQUlBTWdBU2dDQ0VZRWYwRUFCU0FDS0FJQUlBUkIvd2R4UVFKMGFnczJBZ1FnQUNBQ05nSUFDNmNCQVFOL0lBRXRBQVFFUUNBQUVLd0RJQUFnQVNnQ0FDSUNLUUlBTndJTUlBQWdBaWdDQ0RZQ0ZDQUJLQUlBSWdCQkFEWUNDQ0FBUWdBM0FnQVBDd0pBSUFBb0FoUWdBU2dDQUNJQktBSUVTUVJBSUFBUXJBTWdBQ0FCS0FJRUVJQVdEQUVMSUFCQkFEWUNFQXNnQUNBQktBSUVJZ00yQWhBRFFDQUNJQU5IQkVBZ0FrRUNkQ0lFSUFBb0FneHFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3dS9BZ0VFZnlNQVFSQnJJZ0lrQUNBQUtBSUVJZ01nQUNnQ0VDSUVRUWgyUWZ6Ly93ZHhhaUVCSUFJZ0F5QUFLQUlJUmdSL1FRQUZJQUVvQWdBZ0JFSC9CM0ZCQW5ScUN6WUNEQ0FDSUFFMkFnZ2dBaUFBRU5jWElBSW9BZ3doQVNBQ0tBSUVJUVFEUUFKQUlBRWdCRVlFUUNBQVFRQTJBaFFnQUNnQ0JDRUJBMEFnQUNnQ0NDQUJheUlEUVFsSkRRSWdBU2dDQUJBZklBQWdBQ2dDQkVFRWFpSUJOZ0lFREFBTEFBc2dBaUFCUVFScUlnRTJBZ3dnQVNBQ0tBSUlJZ01vQWdCclFZQWdSdzBCSUFJZ0EwRUVhallDQ0NBQ0lBTW9BZ1FpQVRZQ0RBd0JDd3RCZ0FRaEFRSkFBa0FDUUNBRFFRSjJRUUZyRGdJQkFBSUxRWUFJSVFFTElBQWdBVFlDRUFzZ0FrRVFhaVFBSUFBb0FnZ2hBaUFBS0FJRUlRRURRQ0FCSUFKSEJFQWdBU2dDQUJBZklBRkJCR29oQVF3QkN3c2dBQkNhQXdzOUFRSi9JQUFvQWdRaEFnTkFJQUlnQUNnQ0NDSUJSd1JBSUFBZ0FVRUVheUlCTmdJSUlBRVF1Z1lhREFFTEN5QUFLQUlBSWdBRVFDQUFFQjhMQys4SEFRMS9Jd0JCSUdzaUJpUUFJQVpCQURZQ0dDQUdJQUFvQWxnMkFoUWdCaUFBUWRRQWFqWUNFQ0FHSUFZcEF4QTNBd2dqQUVFUWF5SUtKQUFnQVNBQU5nSUFJQXBCQURZQ0NDTUFRUkJySWdza0FDQUxJQUUyQWdnZ0JpZ0NDQ0lBS0FJQUlRMGdCaWdDRENFQklBdEJDR29oQ0NNQVFTQnJJZ3drQUFKQUlBQW9BZ1FpQWlBQUtBSUlTUVJBSUFFZ0FrWUVRQ0FJS0FJQUlRSWdDRUVBTmdJQUlBRWdBallDQUNBQUlBRkJCR28yQWdRTUFnc2dBQ2dDQkNJSElRVWdBU0FISUFGQkJHcHJhaUlESVFRRFFDQUNJQVJOQkVBZ0FDQUZOZ0lFSUFNaEFBTkFJQUFnQVVjRVFDQUhRUVJySWdjZ0FFRUVheUlBRUxBT0RBRUxDd1VnQkNnQ0FDRUpJQVJCQURZQ0FDQUZJQWsyQWdBZ0JVRUVhaUVGSUFSQkJHb2hCQXdCQ3dzZ0FTQUlFTEFPREFFTElBeEJDR29nQUNBQ0lBQW9BZ0JyUVFKMVFRRnFFSXNFSUFFZ0FDZ0NBR3RCQW5VZ0FFRUlhaENuQWlFRUl3QkJJR3NpQnlRQUFrQWdCQ2dDQ0NJRElBUW9BZ3hIRFFBZ0JDZ0NCQ0lGSUFRb0FnQWlBa3NFUUNBRklBVWdBbXRCQW5WQkFXcEJmbTFCQW5RaUNXb2hBZ05BSUFNZ0JVY0VRQ0FDSUFVUXNBNGdBa0VFYWlFQ0lBVkJCR29oQlF3QkN3c2dCQ0FDSWdNMkFnZ2dCQ0FFS0FJRUlBbHFOZ0lFREFFTElBZEJDR3BCQVNBRElBSnJRUUYxSUFJZ0EwWWJJZ0lnQWtFQ2RpQUVLQUlRRUtjQ0lnTW9BZ2dpQlNBRUtBSUlJQVFvQWdRaUFtdHFJUWtEUUNBRklBbEhCRUFnQWlnQ0FDRU9JQUpCQURZQ0FDQUZJQTQyQWdBZ0FrRUVhaUVDSUFWQkJHb2hCUXdCQ3dzZ0F5QUpOZ0lJSUFRb0FnQWhBaUFFSUFNb0FnQTJBZ0FnQXlBQ05nSUFJQVFvQWdRaEFpQUVJQU1vQWdRMkFnUWdBeUFDTmdJRUlBUW9BZ2doQWlBRUlBTW9BZ2cyQWdnZ0F5QUNOZ0lJSUFRb0Fnd2hBaUFFSUFNb0FndzJBZ3dnQXlBQ05nSU1JQU1RMmhjZ0JDZ0NDQ0VEQ3lBSUtBSUFJUUlnQ0VFQU5nSUFJQU1nQWpZQ0FDQUVJQVFvQWdoQkJHbzJBZ2dnQjBFZ2FpUUFJQVFpQWlnQ0JCb2dBQ2dDQUNBQklnTWdBa0VFYWhDOUdpQUFLQUlFSVFRRFFDQURJQVJIQkVBZ0F5Z0NBQ0VGSUFJb0FnZ2hCeUFEUVFBMkFnQWdCeUFGTmdJQUlBSWdBaWdDQ0VFRWFqWUNDQ0FEUVFScUlRTU1BUXNMSUFBb0FnQWhBeUFBSUFJb0FnUTJBZ0FnQWlBRE5nSUVJQUFvQWdRaEF5QUFJQUlvQWdnMkFnUWdBaUFETmdJSUlBQW9BZ2doQXlBQUlBSW9BZ3cyQWdnZ0FpQUROZ0lNSUFJZ0FpZ0NCRFlDQUNBQ0VOb1hDeUFNUVNCcUpBQWdCaWdDQ0NJQUtBSUFJUUlnQ2lBQU5nSUFJQW9nQWlBQklBMXJhallDQkNBSUVMb0dHaUFMUVJCcUpBQWdDa0VJYWhDNkJob2dDa0VRYWlRQUlBWkJHR29RdWdZYUlBWkJJR29rQUFzeUFRRi9JQUFvQWdnaEFpQUFLQUlFSVFBRFFDQUFJQUpIQkVBZ0FDZ0NBQ0FCUVFBUWpRTWdBRUVFYWlFQURBRUxDd3MyQUFOQUlBQWdBVWNFUUNBQ0lBQW9BZ0EyQWdBZ0FrRUVhaUFBUVFScUVJY1lJQUpCSEdvaEFpQUFRUnhxSVFBTUFRc0xJQUlMTndFQmZ5QUFLQUlBSVFBRFFDQUJCRUFnQWlBQklBRW9BaEFnQUVraUF4c2hBaUFCUVFScUlBRWdBeHNvQWdBaEFRd0JDd3NnQWdzWUFDQUFRWUNBZ0NCUEJFQVErd0VBQ3lBQVFRWjBFQlVMTWdFQmZ5QUJRWUNBZ0NCUEJFQVFBUUFMSUFBZ0FSRGZGeUlDTmdJQUlBQWdBallDQkNBQUlBSWdBVUVHZEdvMkFnZ0xpQUVCQW44akFFRXdheUlDSkFBQ1FDQUFRUmhxSWdNZ0FSQm9EUUFnQXlBQkVOQUVJQUpCQURZQ0xDQUFLQUlBUVNBZ0FTQUNRU3hxRU4wQ0RRQWdBa0VZYWlBQ0tBSXNJZ0VvQWdnZ0FTZ0NEQkRFQ0NFQklBSWdBRFlDQkNBQ1FhanlFallDQUNBQ0lBSTJBaEFnQVNBQ0VOWUtJQUlRRmlBQlFRaHFFTVVEQ3lBQ1FUQnFKQUFMSWdFQmYwRUJJUUVnQUVISEFHdEJCVWtnQUVHQUxHdEJBa2x5SUFCQnpBSkdjZ3RQQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDQ0NBRElBRTJBZ3dnQTBFTWFpRUJJQU5CQ0dvaEFpQUFLQUlRSWdCRkJFQVFid0FMSUFBZ0FTQUNJQUFvQWdBb0FoZ1JCUUFnQTBFUWFpUUFDemtCQVg4Z0FFRUlhaUVBQTBBZ0FnUkFJQU1nQWlBQ1FSQnFJQUVRMlFvaUJCc2hBeUFDUVFScUlBSWdCQnNvQWdBaEFnd0JDd3NnQXd0VEFRRi9Jd0JCRUdzaUF5UUFJQU1nQWpZQ0NDQURJQUUyQWd3Z0EwRU1haUVCSUFOQkNHb2hBaUFBS0FJUUlnQkZCRUFRYndBTElBQWdBU0FDSUFBb0FnQW9BaGdSQkFBaEFDQURRUkJxSkFBZ0FBczJBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBSUFKQkRHb1FuZ0lpQUFSL0lBQW9BZ3dGUVFBTElRRWdBa0VRYWlRQUlBRUxPUUFnQUJDNUJpSUFRZkQ3RHpZQ0JDQUFRY0Q4RHpZQ0FDQUFJQU0yQWhBZ0FDQUNOZ0lNSUFBZ0FUWUNDQ0FBUVpEOER6WUNBQ0FBQ3o4QkFYOGpBRUVRYXlJQ0pBQWdBa0VBTmdJTUlBSWdBVFlDQ0NBQVFSUnFJZ0FnQWtFSWFpQUFLQUlFSUFCQkJHb1E1QmNoQUNBQ1FSQnFKQUFnQUF2WUFRRUhmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUVnYWlJSElBSkJER29ROVFNaUJRUkFJQUJCRkdvaEF5QUZLQUlRSVFnZ0JTZ0NEQ0VCQTBBZ0FTQUlSZ1JBSXdCQkVHc2lBQ1FBSUFVb0FnQWFJQUFnQnlBRkVMQVpJQUFRMXc0Z0FFRVFhaVFBQlNBQ0lBQWdBU2dDQUJDVUFUWUNBQ0FDSUFJb0FndzJBZ1FDUUNBRElBSWdBeWdDQkNBRFFRUnFJZ1lRNUJjaUJDQUdSd1JBSUFJZ0JFRVFhaERaQ2tVTkFRc2dCaUVFQ3lBRUlBTkJCR3BIQkVBZ0F5QUVFTE1PR2dzZ0FVRUVhaUVCREFFTEN3c2dBa0VRYWlRQUM3UUJBUVIvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQUpBSUFCQklHb2dBa0VNYWhEMUEwVU5BQ0FBSUFJb0Fnd1E2UmNnQWlnQ0RCQmdSUTBBSUFCQkdHb2hBeUFBUVJScUlRVWdBQ0FDS0FJTUVPZ1hJZ1FoQVFOQUFrQWdBU0FEUndSQUlBRW9BaEFnQWlnQ0RFWU5BU0FCSVFNTEEwQWdBeUFFUndSQUlBVWdCQkN6RGlFRURBRUxDeUFDSUFJb0Fnd1FZRFlDQ0NBQUlBSkJDR29RMXdjTUFnc2dBUkJNSVFFTUFBc0FDeUFDUVJCcUpBQUxod0VCQTM4akFFRVFheUlESkFBZ0F5QUJFR0FpQWpZQ0RBSkFJQUlFUUNBQUlBTkJER29RN0FFaUFnUkFJQUFnQWlnQ0RCRHFGd3NqQUVFZ2F5SUNKQUFnQWlBRFFReHFJZ1EyQWhBZ0FrRVlhaUFBSUFRZ0FrRVFhaENPRHlBQ0tBSVlJUUFnQWtFZ2FpUUFJQUJCREdvZ0FUWUNBQXdCQ3lBQUlBRVE2aGNMSUFOQkVHb2tBQXNzQVFGL1FmcWhBeUVDQWtBQ1FBSkFJQUZCQVdzT0FnRUFBZ3RCK3lvaEFnc2dBRUVJYWlBQ0VBNGFDd3ZkQVFFRGZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Q1FBSkFBa0FDUUNBQktBSVVJZ05CeHdCckRnVUJBUU1DQWdBTElBTkJnQ3hHRFFBZ0EwSE1Ba2NOQWdzZ0FpQUJRUUFRT0RZQ0NDQUFJQUpCQ0dvUXRRNGdBa0VNYWhEUEFRd0JDMEVCUVFJZ0EwSEtBRVliSWdRaEF3TkFJQUVReUFFZ0EwMEVRQ0FDSUFJb0FneEJBQkE0TmdJSUlBQWdBa0VJYWhDMURrRVlhaUFDUVF4cUVNOEJCU0FDSUFJb0Fnd2dBeEE0TmdJSUlBQWdBa0VJYWhDMURrRU1haUFDUVF4cUVNOEJJQU1nQkdvaEF5QUNLQUlNSVFFTUFRc0xDeUFDUVJCcUpBQUxkQUVEZnlNQVFSQnJJZ0lrQUNBQktBSUVJUVFnQVNnQ0FDRUJBMEFnQVNBRVJrVUVRQ0FDSUFFb0FnQWlBellDREFKQUFrQWdBeWdDRkVISEFFY05BQ0FEUVFFUU9FRXBSdzBBSUFBdEFBQkZEUUVMSUFBb0FnUWdBa0VNYWhEUEFRc2dBVUVFYWlFQkRBRUxDeUFDUVJCcUpBQUx1QUVCQW44akFFRWdheUlESkFBZ0F5QUNOZ0ljSUFCQkFEWUNDQ0FBUWdBM0FnQUNRQUpBSUFFZ0EwRWNhaERzQVNJQ1JRMEFJQU1nQURZQ0ZDQURRUUU2QUJBZ0EwRVFhaUFDUVF4cUVPNFhJQUlvQWh3aEJDQUNLQUlZSVFBRFFDQUFJQVJHRFFFZ0F5QUFLQUlBUVFBUU9EWUNEQ0FCSUFOQkRHb1E3QUVpQWtVTkFpQURRUkJxSUFKQkRHb1E3aGNnQUVFRWFpRUFEQUFMQUFzZ0EwRWdhaVFBRHd0QnVxd0pRZHVpQWtISEEwR1oxUUVRQUFBTERBQWdBQ0FBRU5JSEVMOE9DeThBQTBBZ0FDQUJSd1JBSUFJb0FnQkJIR3NnQVVFY2F5SUJFTVVJR2lBQ0lBSW9BZ0JCSEdzMkFnQU1BUXNMQzFZQ0FYOEJmaU1BUVRCcklnQWtBQ0FDS0FJQUlRUWdBQ0FES1FJQUlnVTNBd2dnQUNBRk53TVFJQUJCR0dvZ0FFRUlhaENyQVNFQ0lBRWdCRFlDQUNBQlFRUnFJQUlRcGdFYUlBSVFiUm9nQUVFd2FpUUFDeFVBSUFCQm5Pd1NOZ0lBSUFCQkNHb1FNaG9nQUFzZkFDQUFJQUUyQWdRZ0FFRzg2QkkyQWdBZ0FFRUlhaUFDRUxBQkdpQUFDeFVBSUFCQnZPZ1NOZ0lBSUFCQkNHb1FNaG9nQUFzeUFRRi9BMEFDUUNBQUlBRkdJZ01OQUNBQUtBSUFJQUlvQWdCSERRQWdBa0VFYWlFQ0lBQkJCR29oQUF3QkN3c2dBd3ZTQVFFRmZ5TUFRUkJySWdZa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdVMkFnd2dCaUFGTmdJSUlBQkJqQUZxSWdVUXRRY2hCeUFBS0FJSUlRZ2dCaWdDQ0NFSklBSW9BZ0FoQWlBREtBSUFJUU1nQkNnQ0FDRUVJd0JCRUdzaUFDUUFJQUFnQ1RZQ0FDQUFJQWcyQWdnZ0J5QUFLQUlJSUFBb0FnQWdBUkR6QmlJQlFhajZEellDQkNBQlFlRDZEellDQUNBQklBUTJBaXdnQVNBRE5nSW9JQUVnQWpZQ0pDQUJRY2o2RHpZQ0FDQUFRUkJxSkFBZ0JTQUhFQ2dnQlNBRktBSVlRUUZxTmdJWUlBWkJFR29rQUNBSEN4QUFJQUJCQUJEaENpQUFJQUVRNFFvTHVnRUJBbjhDUUFKQUFrQWdBQ2dDQkNBQktBSUVSdzBBSUFBZ0FDZ0NBQ2dDTkJFQUFDSUNCRUFnQVNBQktBSUFLQUkwRVFBQUlnQkZEUUVNQXdzZ0FDQUFLQUlBS0FKRUVRQUFJZ0lFUUNBQklBRW9BZ0FvQWtRUkFBQWlBRVVOQVF3REN5QUFJQUFvQWdBb0FsZ1JBQUJGRFFFZ0FTQUJLQUlBS0FKWUVRQUFRUUJISVFNTElBTVBDMEdHc2dsQjBLa0RRZThEUWR6eENCQUFBQXNnQWlBQ0tBSUFLQUpnRVFBQUlBQWdBQ2dDQUNnQ1lCRUFBQkRMQ0F1a0FRRUNmd0pBSUFBb0FnUWdBQ2dDQ0VrRVFDQUFRUWhxSUFBb0FnUWlBeUFCSUFJUThoY2dBQ0FEUVJ4cU5nSUVEQUVMSXdCQklHc2lCQ1FBSUFCQkNHb2lBeUFFUVFocUlBQWdBQ2dDQkNBQUtBSUFhMEVjYlVFQmFoRElDQ0FBS0FJRUlBQW9BZ0JyUVJ4dElBTVF4d2dpQXlnQ0NDQUJJQUlROGhjZ0F5QURLQUlJUVJ4cU5nSUlJQUFnQXhEY0NpQURFTVlJSUFSQklHb2tBQXNnQUNnQ0JCb0x1QUVCQTM4Z0FTQUJLQUlFSUFJZ0FDZ0NBQ0lFYXlJRGF5SUZOZ0lFSUFOQkFFb0VRQ0FGSUFRZ0F4QjlHZ3NnQUNnQ0JDRUVJQUVvQWdnaEF3TkFJQUlnQkVjRVFDQURJQUlvQWdBMkFnQWdBU0FEUVFScUlnTTJBZ2dnQWtFRWFpRUNEQUVMQ3lBQUtBSUFJUUlnQUNBQktBSUVOZ0lBSUFFZ0FqWUNCQ0FBS0FJRUlRSWdBQ0FCS0FJSU5nSUVJQUVnQWpZQ0NDQUFLQUlJSVFJZ0FDQUJLQUlNTmdJSUlBRWdBallDRENBQklBRW9BZ1EyQWdBTGR3RUNmeU1BUVRCcklnTWtBQ0FEUVFFMkFod2dBeUFDTmdJVUlBTWdBMEVVYWpZQ0dDQURJQU1wQXhnM0F3Z2dBMEVnYWlBRFFRaHFFT2NESVFRZ0FDQUJOZ0lFSUFCQnZPZ1NOZ0lBSUFCQkNHb2dCQkNsQWhvZ0JCQXlHaUFBSUFJNkFCUWdBRUc0NXhJMkFnQWdBMEV3YWlRQUlBQUxHd0JCRkJBVklBQW9BZ0FnQVJEZ0NpSUFRZmp1RWpZQ0FDQUFDeHNBUVJRUUZTQUFLQUlBSUFFUTRBb2lBRUdBN2hJMkFnQWdBQXNiQUVFVUVCVWdBQ2dDQUNBQkVQUVhJZ0JCb09vU05nSUFJQUFMR3dCQkZCQVZJQUFvQWdBZ0FSRDBGeUlBUWFqcEVqWUNBQ0FBQ3lNQkFYOUJDQkFWSVFFZ0FDZ0NBQ0VBSUFGQnZPWVNOZ0lBSUFFZ0FEWUNCQ0FCQys4QkFRUi9Jd0JCSUdzaUFpUUFJQUpCQURZQ0dDQUNRZ0EzQXhBQ1FBSkFBMEFnQVJESUFTQURUUVJBQWtCQkFDRURJQUVvQWhSQktXc2lCRUVLU3cwRVFRRWdCSFJCckFoeERRTWdCRVVOQUNBRVFRRkhEUVFnQWtFQU5nSU1JQUpCRUdvZ0FrRU1haERmQWd3REN3VWdBa0VRYWlBQ0tBSVVJQUVnQXhDUEJTSUVLQUlZSWdVZ0JFRU1haUFGR3lnQ0FDQUJJQU1RandWQkJHb1EwQWNRNHdvZ0EwRUJhaUVEREFFTEN5QUNRUUUyQWd3Z0FrRVFhaUFDUVF4cUVOOENDeUFBSUFBb0FnQVEzd2dnQVJCNkVPa0JJQUpCRUdvUTRnb2hBd3NnQWtFUWFoQXlHaUFDUVNCcUpBQWdBd3NPQUNBQVFaTFZBMEhMQVJDOUVnc09BQ0FBUVlQVkEwR3BBUkM5RWd1WUFRRUJmd0pBQWtBZ0FDZ0NCQ0lCSUFFb0FnQW9BaWdSQUFBRVFDQUFLQUlFSWdFZ0FTZ0NBQ2dDS0JFQUFDZ0NGRUVnUncwQklBQWdBQ2dDQUNnQ09CRUFBQ0lCQkVBZ0FSQ0VHQThMSUFBZ0FDZ0NBQ2dDV0JFQUFFVU5Ba0VBRHd0Qmk4Z0JRYmFaQWtFN1FmRCtCaEFBQUF0QjlZQUhRYmFaQWtFOFFmRCtCaEFBQUF0QjA3RUpRYmFaQWtIQkFFSHcvZ1lRQUFBTEN3QkJEQkFWSUFBUXNBRUw0d01CQjM4akFFRVFheUlISkFBZ0FDZ0NDQVJBSUFCQkZHb2hBd0pBSUFFb0FoUWlBZ1JBSUFNb0FnQWlBQVJBSUFBZ0FrY0VRQUpBSUFJb0FnUWlCU0FDS0FJQUlnRnJJZ0pCQW5VaUF5QUFLQUlJSUFBb0FnQWlCR3RCQW5WTkJFQWdBU0FBS0FJRUlBUnJJZ0pxSUFVZ0F5QUNRUUoxSWdoTEd5SUNJQUZySVFZZ0FTQUNSd1JBSUFRZ0FTQUdFT2NCR2dzZ0F5QUlTd1JBSUFBb0FnUWhBU0FBSUFVZ0Ftc2lBRUVBU2dSL0lBRWdBaUFBRUgwZ0FHb0ZJQUVMTmdJRURBSUxJQUFnQkNBR2FqWUNCQXdCQ3lBQUVJZ09JQUFnQUNBREVLTUpFTThGSUFBb0FnUWhBeUFBSUFKQkFFb0VmeUFESUFFZ0FoQjlJQUpxQlNBREN6WUNCQXNMREFJTElBSVFoaGdoQUNBSFFRQTJBZ2dnQXlBQUVJMEZJQWRCQ0dvUXV3WU1BUXRCQUNFQ0lBTkJBQkNOQlNBQUtBSUlJUVFnQVNnQ0NDRUZJQUFvQWdRaEJnTkFJQUVvQWdRaUF5QUNUU0FDSUFaUGNrVUVRQ0FFSUFKQkFuUWlBMm9nQXlBRmFpZ0NBRFlDQUNBQ1FRRnFJUUlNQVFzTEFrQWdBaUFEVHcwQUlBRW9BZ2doQVNBQUtBSUlJUVFEUUNBQ0lBTkdEUUVnQkNBQ1FRSjBJZ1ZxSUFFZ0JXb29BZ0EyQWdBZ0FrRUJhaUVDREFBTEFBc2dBQ0FETmdJRUN5QUhRUkJxSkFBUEMwR2F2UVZCaWF3RFFlY0FRWTNtQmhBQUFBdEFBUUYvSUFBZ0FTZ0NBRFlDQUNBQVFRUnFJZ0pCQURZQ0ZDQUNRUUEyQWdRZ0FpQUNRUXhxTmdJSUlBSkJoT0VTTmdJQUlBSWdBVUVFYWhDSEdDQUFDeGtBSUFCQnlxU1N5UUJQQkVBUSt3RUFDeUFBUVJ4c0VCVUxKUUFnQUNBQklBSWdBeUFFSUFVZ0JpQUhRZCtXQlVHQStnOUJtUG9QUWVENUR4RElFZ3NVQUNBQVFhRGpFallDQUNBQVFRaHFFQllnQUFzN0FRRi9JQUJCQURZQ0NDQUFRZ0EzQWdBZ0FTZ0NCQ0lDQkVBZ0FDQUNFTDBPSUFBZ0FTZ0NBQ0lCSUFFZ0FrRWNiR29nQWhETUNBc2dBQXM4QVFGL0lBQkI3SXdPS0FJQUlnSTJBZ0FnQUNBQ1FReHJLQUlBYWtId2pBNG9BZ0EyQWdBZ0FDQUFLQUlBUVF4cktBSUFhaUFCRU84R0lBQUxxQUVCQVg4akFFRWdheUlDSkFBZ0FDZ0NGQ0lBTFFBTVFRRWdBQnNFUUVIWnJ3bEJtcWdEUWJnQ1FaU2ZBeEFBQUFzQ1FBSkFBa0FnQUNnQ0ZFSDVBV3NPQXdBQkFRSUxJQUVnQUVFQUVORUhJZ0FvQWhnaUFTQUFRUXhxSUFFYktBSUFLQUlBRUlvQ0dnd0JDeUFDUVFFNkFCOGdBaUFCTmdJSUlBSkI2T01TTmdJQUlBSWdBallDRUNBQ0lBSkJIMm8yQWdRZ0FDQUNFUEFPR2lBQ0VCWUxJQUpCSUdva0FBc2FBUUYvSXdCQkVHc2lBU0FBTmdJTUlBRW9BZ3hCQURZQ0FBc3pBUUYvSXdCQkVHc2lBU1FBSUFFZ0FEWUNEQ0FCS0FJTUlnQkJBRFlDQUNBQUVJOFlJQUJCQURZQ0JDQUJRUkJxSkFBTDdnUUJBWDhqQUVGQWFpSURKQUFnQXlBQk5nSThJQU1nQWpZQ09BSkFJQU1vQWpoRkJFQWdBQkNRR0F3QkN5QURLQUk4TFFBQVFmOEFUUVJBSUFOQk1Hb2lBaUFES0FJOExRQUFFSkFESUFOQkFUWUNMQ01BUVJCcklnRWdBRFlDRENBQklBSTJBZ2dnQVNBRFFTeHFOZ0lFSUFFb0Fnd2lBQ0FCS0FJSUtBSUFOZ0lBSUFBZ0FTZ0NCQ2dDQURZQ0JBd0JDeUFESUFNb0Fqd3RBQUJCMElJTmFpMEFBRG9BS3lBRExRQXJJQU1vQWpoTEJFQWdBQkNRR0F3QkN5QURRU0JxRUk4WUlBTkJnQUU2QUI4Q1FBSkFBa0FDUUFKQUlBTXRBQ3RCQVdzT0JBQUJBZ01FQ3lBRFFSaHFJQU1vQWp3dEFBQVFrQU1nQXlBREtBSVlOZ0lnREFNTElBTWdBeWdDUEMwQUFTQURMUUFmY1RvQUh5QURRUkJxSUFNb0Fqd3RBQUZCUDNFZ0F5Z0NQQzBBQUVFZmNVRUdkSElRa0FNZ0F5QURLQUlRTmdJZ0RBSUxJQU1nQXkwQUh5QURLQUk4TFFBQklBTW9Band0QUFKeGNUb0FIeUFEUVFocUlBTW9Band0QUFKQlAzRWdBeWdDUEMwQUFFRVBjVUVNZENBREtBSThMUUFCUVQ5eFFRWjBjbklRa0FNZ0F5QURLQUlJTmdJZ0RBRUxJQU1nQXkwQUh5QURLQUk4TFFBRElBTW9Band0QUFFZ0F5Z0NQQzBBQW5GeGNUb0FIeUFESUFNb0Fqd3RBQU5CUDNFZ0F5Z0NQQzBBQUVFSGNVRVNkQ0FES0FJOExRQUJRVDl4UVF4MGNpQURLQUk4TFFBQ1FUOXhRUVowY25JUWtBTWdBeUFES0FJQU5nSWdDeUFETFFBZlJRUkFJQU5CQURvQUt5QURRU0JxUVFBUWtBTUxJd0JCRUdzaUFTQUFOZ0lNSUFFZ0EwRWdhallDQ0NBQklBTkJLMm8yQWdRZ0FTZ0NEQ0lBSUFFb0FnZ29BZ0EyQWdBZ0FDQUJLQUlFTFFBQU5nSUVDeUFEUVVCckpBQUxDUUFnQUVFQU9nQUlDdzBBSUFCQnpKbXo1Z0FRdmhJTFZnRUNmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2dBaUFCTmdJSUlBSW9BZ3doQVNBQ0tBSUlJUU1qQUVFUWF5SUFKQUFnQUNBQk5nSU1JQUFnQXpZQ0NDQUFLQUlJRU1RSElBQkJFR29rQUNBQ1FSQnFKQUFMT0FFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWdRZ0FpQUJOZ0lBSUFKQkNHb2dBaWdDQUJDUUF5QUNLQUlJSVFBZ0FrRVFhaVFBSUFBTERRQWdBQ0FCSUFKQkZCQzhEQXRZQVFKL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1JZ0FRNmdFaEFpQUFJQUlnQUJEcUFTQUFFTEVHUVJSc2FpQUFFT29CSUFBUXd3ZEJGR3hxSUFBUTZnRWdBQkN4QmtFVWJHb1F0Z1lnQVVFUWFpUUFDekFCQVg4akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFJZ0FUWUNDQ0FDS0FJTUlBSW9BZ2dReXdNYUlBSkJFR29rQUFzL0FRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQ0lBSUFJZ0FpZ0NDQkRCRGhvZ0FCQ3ZBeUFBRUZVZ0FrRVFhaVFBSUFBTHBnSUJDWDhqQUVFUWF5SUVKQUFnQkNBQU5nSUlJQVFnQkNnQ0NDSUFOZ0lNSXdCQkVHc2lCU1FBSUFVZ0FEWUNEQ0FGS0FJTUlnRWhBeUFCS0FJRUlRSWpBRUVRYXlJQkpBQWdBU0FETmdJTUlBRWdBallDQ0NBQktBSU1JUUlnQVNnQ0NDRUdJd0JCRUdzaUF5UUFJQU1nQWpZQ0JDQURJQVkyQWdBZ0F5Z0NCQ0VDQTBBZ0F5Z0NBQ0FDS0FJSVJ3UkFJQUlReUFjaEJpQUNJQUlvQWdoQkZHc2lCellDQ0NBR0lBY1Fnd0VRbEJnTUFRc0xJQU5CRUdva0FDQUJRUkJxSkFBZ0JVRVFhaVFBSUFBb0FnQUVRQ0FBRU1nSElRa2dBQ2dDQUNFSUl3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1JZ0FReHdjb0FnQWdBQ2dDQUd0QkZHMGhBQ0FCUVJCcUpBQWdDU0FJSUFBUWxoZ0xJQVFvQWd3YUlBUkJFR29rQUF2dkFnRUZmeU1BUVJCcklnTWtBQ0FESUFBMkFnd2dBeUFCTmdJSUlBTW9BZ3dpQVJDWEdDQUJFTGNCSVFJZ0FTZ0NBQ0VFSUFFb0FnUWhCU0FES0FJSVFRUnFJUVlqQUVFUWF5SUFKQUFnQUNBQ05nSU1JQUFnQkRZQ0NDQUFJQVUyQWdRZ0FDQUdOZ0lBQTBBZ0FDZ0NCQ0FBS0FJSVJ3UkFJQUFvQWd3aEFpQUFLQUlBS0FJQVFSUnJFSU1CSVFRZ0FDQUFLQUlFUVJScklnVTJBZ1FnQWlBRUlBVVF3ZzRnQUNnQ0FDSUNJQUlvQWdCQkZHczJBZ0FNQVFzTElBQkJFR29rQUNBQklBTW9BZ2hCQkdvUXdnTWdBVUVFYWlBREtBSUlRUWhxRU1JRElBRVF0d0VnQXlnQ0NCREhCeERDQXlBREtBSUlJQU1vQWdnb0FnUTJBZ0FnQVJEREJ5RUFJd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUNJQUEyQWdnZ0FpZ0NEQ0lBRU9vQklRUWdBQ0FFSUFBUTZnRWdBQkN4QmtFVWJHb2dBQkRxQVNBQUVMRUdRUlJzYWlBQUVPb0JJQUlvQWdoQkZHeHFFTFlHSUFKQkVHb2tBQ0FCRUs4RElBTkJFR29rQUF1bkFnRUNmeU1BUVNCcklnUWtBQ0FFSUFBMkFoZ2dCQ0FCTmdJVUlBUWdBallDRUNBRUlBTTJBZ3dnQkNBRUtBSVlJZ0EyQWh3Z0JFRUFOZ0lJSUFCQkRHb2dCRUVJYWlBRUtBSU1FSzRZSUFBQ2Z5QUVLQUlVQkVBZ0FCRElCeUVCSUFRb0FoUWhBeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBaUFETmdJSUlBSW9BZ3doQXlBQ0tBSUlJUVVqQUVFUWF5SUJKQUFnQVNBRE5nSU1JQUVnQlRZQ0NDQUJLQUlJSUFFb0Fnd1FreGhMQkVBUSt3RUFDeUFCS0FJSVFSUnNRUVFRMHdnaEF5QUJRUkJxSkFBZ0F5RUJJQUpCRUdva0FDQUJEQUVMUVFBTE5nSUFJQUFnQUNnQ0FDQUVLQUlRUVJSc2FpSUJOZ0lJSUFBZ0FUWUNCQ0FBS0FJQUlBUW9BaFJCRkd4cUlRRWdBQkRIQnlBQk5nSUFJQVFvQWh3YUlBUkJJR29rQUF0S0FRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJJQUVvQWd3UXR3RVFreGcyQWdnZ0FVSC8vLy8vQnpZQ0JDQUJRUWhxSUFGQkJHb1FpQVVvQWdBaEFDQUJRUkJxSkFBZ0FBc3pBUUYvSXdCQkVHc2lBaVFBSUFJZ0FEWUNEQ0FDSUFFMkFnZ2dBaWdDREVFTWFpQUNLQUlJRU1VT0dpQUNRUkJxSkFBTE13RUJmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2dBaUFCTmdJSUlBSW9BZ3hCREdvZ0FpZ0NDQkRvQ2hvZ0FrRVFhaVFBQzN3QkFYOGpBRUdnQVdzaUFpUUFJQUlnQURZQ25BRWdBaUFCTmdLWUFTQUNRUWhxRUVrYUlBSW9BcGdCS0FJQUJFQWdBa0VJYWlBQ0tBS1lBUkNZR0NBQ0tBS1lBU2dDQkFSQUlBSkJDR3BCMWVvR0VPZ0tJQUlvQXBnQlFRUnFFSmdZQ3dzZ0FDQUNRUWhxSWdBUTdRb2dBQkJSSUFKQm9BRnFKQUFMMWdvQkduOGpBRUdnQVdzaUJpUUFJQVlnQURZQ25BRWdCa0dRQVdvaUFpQUdLQUtjQVNJQVFReHFFTzBLSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCS0FJTUVEc2hBaUFCUVJCcUpBQWdBZ1JBSUFBb0FnQWlBU0FHUVpBQmFpQUFRUVJxSUFFb0FnQW9BZ2dSQlFBZ0JoQkpHaU1BUVJCcklnc2tBQ0FMSUFCQkRHbzJBZ3dnQ3lBR05nSUlJQXNvQWd3aEFDQUxLQUlJSVFFakFFRVFheUlJSkFBZ0NDQUFOZ0lNSUFnZ0FUWUNDQ0FJS0FJTUlRUWdDQ2dDQ0NFQUl3QkJFR3NpQlNRQUlBVWdCRFlDRENBRklBQTJBZ2dnQlNnQ0RDRUFJQVVvQWdnaEFTTUFRUkJySWdNa0FDQURJQUEyQWd3Z0F5QUJOZ0lJSUFNb0Fnd2lBRUVFYWlBREtBSUlRUVJxRU1JRElBQW9BZ0JCREdzb0FnQWdBR29oQUNBREtBSUlJZ0VnQVNnQ0FFRU1heWdDQUdvaEFTTUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2lBRUVFYWlBQ0tBSUlJZ0ZCQkdvUXFRRWdBRUVJYWlBQlFRaHFFTUlESUFCQkRHb2dBVUVNYWhEQ0F5QUFRUkJxSUFGQkVHb1FxUUVnQUVFVWFpQUJRUlJxRUtrQkl3QkJFR3NpQ1NRQUlBbEJDR29pQ2lBQVFSeHFJZ2NRK1FZZ0J5QUJRUnhxSWdjUWxnb2dCeUFLRUpZS0lBb1FaQ0FKUVJCcUpBQWdBRUVnYWlBQlFTQnFFS2tCSUFCQkpHb2dBVUVrYWhDcEFTQUFRU2hxSUFGQktHb1FxUUVnQUVFc2FpQUJRU3hxRUtrQklBQkJNR29nQVVFd2FoQ3BBU0FBUVRScUlBRkJOR29RcVFFZ0FFRTRhaUFCUVRocUVLa0JJQUJCUEdvZ0FVRThhaENwQVNBQVFVQnJJQUZCUUdzUXFRRWdBRUhFQUdvZ0FVSEVBR29RcVFFZ0FFSElBR29nQWlnQ0NFSElBR29Rd2dNZ0FFSE1BR29nQWlnQ0NFSE1BR29Rd2dNZ0FrRVFhaVFBSUFOQkVHb2tBQ0FGUVJCcUpBQWdCRUVNYWlFQUlBZ29BZ2hCREdvaEFTTUFRU0JySWdVa0FDQUJRU0JxSWc0UWV5RUNBbjhnQVNnQ0NDSURSUVJBUVg4aEQwRi9JUWxCZnd3QkN5QURJQUpySVFrZ0FTZ0NEQ0FDYXlFUElBRW9BaEFnQW1zTElSZ0NmeUFCS0FJVUlnTkZCRUJCZnlFS1FYOGhFRUYvREFFTElBTWdBbXNoQ2lBQktBSVlJQUpySVJBZ0FTZ0NIQ0FDYXdzaEdTQUJLQUlzSVJFZ0FFRWdhaUlTRUhzaEEwRi9JUWRCZnlFVFFYOGhGQ0FBS0FJSUlnUUVRQ0FBS0FJTUlBTnJJUk1nQUNnQ0VDQURheUVVSUFRZ0Eyc2hCd3RCZnlFTVFYOGhGVUYvSVJZZ0FDZ0NGQ0lFQkVBZ0FDZ0NHQ0FEYXlFVklBQW9BaHdnQTJzaEZpQUVJQU5ySVF3TElCRWdBbXNoR2lBQUtBSXNJUmNnQUVFd2FpQUJRVEJxRUtrQklCSVErZ0loQWlBT0VQb0NJUVFqQUVFUWF5SU5JQUlvQWdnMkFnZ2dEU0FDS1FJQU53TUFJQUlnQkNnQ0NEWUNDQ0FDSUFRcEFnQTNBZ0FnQkNBTktBSUlOZ0lJSUFRZ0RTa0RBRGNDQUNBU0VIc2hBZ0pBSUFsQmYwY0VRQ0FBSUFJZ0NXb2dBaUFQYWlBQ0lCaHFFTUVFREFFTElBQkJBRUVBUVFBUXdRUUxJQnBCZnlBUkd5RUVBa0FnQ2tGL1J3UkFJQUFnQWlBS2FpQUNJQmxxRUprR0lBQWdFQkNQQnd3QkN5QUFRUUJCQUJDWkJnc2dBQ0FDSUFScVFRQWdCRUYvUnhzMkFpd2dEaEI3SVFJQ1FDQUhRWDlIQkVBZ0FTQUNJQWRxSUFJZ0Uyb2dBaUFVYWhEQkJBd0JDeUFCUVFCQkFFRUFFTUVFQ3dKQUlBeEJmMGNFUUNBQklBSWdER29nQWlBV2FoQ1pCaUFCSUJVUWp3Y01BUXNnQVVFQVFRQVFtUVlMSUFFZ0FpQVhJQU5yUVg4Z0Z4c2lBMnBCQUNBRFFYOUhHellDTENBRlFSaHFJZ0lnQVJDT0J5QUZRUWhxSWdNZ0FCQ09CeUFGUVJCcUlnUWdBU0FERUxFTUlBUVFaQ0FERUdRZ0JTQUFJQUlRc1F3Z0JSQmtJQUlRWkNBRlFTQnFKQUFnQ0VFUWFpUUFJQXRCRUdva0FDQUdFRkVMSUFaQmtBRnFFQThhSUFaQm9BRnFKQUFMWHdFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2lBQkRxQVNFQklBQWdBU0FBRU9vQklBQVEyUVZCTkd4cUlBQVE2Z0VnQWlnQ0NFRTBiR29nQUJEcUFTQUFFTGNHUVRSc2FoQzJCaUFDUVJCcUpBQUxqQUVCQTM4akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFJb0Fnd2lBQ2dDQUFSQUl3QkJFR3NpQVNRQUlBRWdBRFlDRENBQklBRW9BZ3dpQXhDM0JqWUNDQ0FERUtZWUlBTWdBU2dDQ0JDaUdDQURFSzhESUFGQkVHb2tBQ0FBRUxjQklBQW9BZ0FnQUJEWkJSREZHQ0FBRUxjQlFRQTJBZ0FnQUVFQU5nSUVJQUJCQURZQ0FBc2dBa0VRYWlRQUN4MEJBWDhqQUVFUWF5SUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2FDNzBCQVFSL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dnQWlBQ0tBSU1JZ1FvQWdRMkFnUURRQ0FDS0FJSUlBSW9BZ1JIQkVBZ0JCQzNBU0VCSUFJZ0FpZ0NCRUUwYXlJQU5nSUVJQUFRZ3dFaEF5TUFRUkJySWdBa0FDQUFJQUUyQWd3Z0FDQUROZ0lJSUFBb0Fnd2hBeUFBS0FJSUlRVWpBRUVRYXlJQkpBQWdBU0FETmdJTUlBRWdCVFlDQ0NBQktBSUlFSWNGSUFGQkVHb2tBQ0FBUVJCcUpBQU1BUXNMSUFRZ0FpZ0NDRFlDQkNBQ1FSQnFKQUFMS2dFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQ0lBSUFBb0FnQVFwUmdnQVVFUWFpUUFDNDhEQVFOL0l3QkJJR3NpQkNRQUlBUWdBRFlDSENBRUlBRTJBaGdnQkNBQ05nSVVJQVFnQXpZQ0VDQUVLQUljSWdJaEFTQUVLQUlRSVFNakFFRVFheUlBSUFRMkFnd2dBQ0FCTmdJSUlBQWdBellDQkNBQUtBSU1JZ0VnQUNnQ0NEWUNBQ0FCSUFBb0FnZ29BZ1EyQWdRZ0FTQUFLQUlJS0FJRUlBQW9BZ1JCTkd4cU5nSUlJQUlRdHdFaEFTQUVLQUlZSVFJZ0JDZ0NGQ0VESXdCQkVHc2lBQ1FBSUFBZ0FUWUNEQ0FBSUFJMkFnZ2dBQ0FETmdJRUlBQWdCRUVFYWpZQ0FBTkFJQUFvQWdnZ0FDZ0NCRWNFUUNBQUtBSU1JUUlnQUNnQ0FDZ0NBQkNEQVNFRElBQW9BZ2doQlNNQVFSQnJJZ0VrQUNBQklBSTJBZ3dnQVNBRE5nSUlJQUVnQlRZQ0JDQUJLQUlNSVFNZ0FTZ0NDQ0VGSUFFb0FnUWhCaU1BUVJCcklnSWtBQ0FDSUFNMkFnd2dBaUFGTmdJSUlBSWdCallDQkNBQ0tBSUlJQUlvQWdRUXhRY2FJQUpCRUdva0FDQUJRUkJxSkFBZ0FDQUFLQUlJUVRScU5nSUlJQUFvQWdBaUFTQUJLQUlBUVRScU5nSUFEQUVMQ3lBQVFSQnFKQUFnQkJETkRpQUVRU0JxSkFBTGZBRUJmeU1BUVJCcklnSWtBQ0FDSUFBMkFnZ2dBaUFCTmdJRUlBSWdBaWdDQ0NJQU5nSU1JQUFnQWlnQ0JDZ0NBRFlDQUNBQUlBSW9BZ1FvQWdRMkFnUWdBQ2dDQkFSQUlBQW9BZ1FoQVNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNnQ0RCQzBCaUFBUVJCcUpBQUxJQUlvQWd3YUlBSkJFR29rQUFzSEFDQUFLQUlnQzFRQkFYOGpBRUVnYXlJREpBQWdBeUFBTmdJY0lBTWdBVFlDR0NBRElBSTZBQmNnQXlnQ0hDSUFJQU5CRUdvZ0EwRUlhaERwQ2hvZ0FDQURLQUlZSUFNc0FCY1FpUVlnQUJDdkF5QURRU0JxSkFBZ0FBc1hBUUYvSXdCQkVHc2lBaUFBTmdJTUlBSWdBVFlDQ0FzdkFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQ0FDS0FJSUVLc1lJQUpCRUdva0FBc05BQ0FBUWYvLy8vOEJFTDRTQzBVQkFYOGpBRUVRYXlJREpBQWdBeUFBTmdJTUlBTWdBVFlDQ0NBRElBSTJBZ1FnQXlnQ0RDSUFJQU1vQWdnUXpBNGdBRUVFYWlBREtBSUVFSkFESUFOQkVHb2tBQXRrQVFGL0l3QkJFR3NpQXlRQUlBTWdBRFlDRENBRElBRTJBZ2dnQXlBQ05nSUVJQU1vQWdnaEFTQURLQUlFSVFJakFFRVFheUlBSUFNb0FndzJBZ3dnQUNBQk5nSUlJQUFnQWpZQ0JDQUFLQUlJSUFBb0FnUXBBZ0EzQWdBZ0EwRVFhaVFBQ3hjQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUVBRUFDellCQVg4akFFRVFheUlCSkFBZ0FTQUFOZ0lNSXdCQkVHc2lBQ0FCS0FJTU5nSU1JQUFvQWd4QkJHb2hBQ0FCUVJCcUpBQWdBQXRoQVFKL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDRUJJQUlvQWdnaEF5TUFRUkJySWdBa0FDQUFJQUUyQWd3Z0FDQUROZ0lJSUFBb0FneEJDR29nQUNnQ0NDd0FBQkRlQkNBQVFSQnFKQUFnQWtFUWFpUUFDMmtCQW44akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFJZ0FUWUNDQ0FDS0FJTUlRRWdBaWdDQ0NFREl3QkJFR3NpQUNRQUlBQWdBVFlDRENBQUlBTTJBZ2dnQUNnQ0RDSUJRUWhxSUFBb0FnZ29BZ0FRSVJvZ0FFRVFhaVFBSUFFaEFDQUNRUkJxSkFBZ0FBdDFBUUovSXdCQkVHc2lBeVFBSUFNZ0FEWUNEQ0FESUFFMkFnZ2dBeUFDTmdJRUlBTW9BZ3doQVNBREtBSUlJUUlnQXlnQ0JDRUVJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFJQUkyQWdnZ0FDQUVOZ0lFSUFBb0FnZ2dBQ2dDQkVFRGRFRUVFT3NLSUFCQkVHb2tBQ0FEUVJCcUpBQUxXQUVDZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDSUFFT29CSVFJZ0FDQUNJQUFRNmdFZ0FCREtCMEVEZEdvZ0FCRHFBU0FBRU1zSFFRTjBhaUFBRU9vQklBQVF5Z2RCQTNScUVMWUdJQUZCRUdva0FBdmRBUUVHZnlNQVFSQnJJZ0lrQUNBQ0lBQTJBZ2dnQWlBQ0tBSUlJZ0UyQWd3Z0FSQzFHQ0FCS0FJQUJFQWpBRUVRYXlJRUpBQWdCQ0FCTmdJTUlBUW9BZ3dpQUNFRElBQW9BZ0FoQlNNQVFSQnJJZ0FrQUNBQUlBTTJBZ3dnQUNBRk5nSUlJQUFnQUNnQ0RDSURLQUlFTmdJRUEwQWdBQ2dDQ0NBQUtBSUVSd1JBSUFNUXR3RWhCU0FBSUFBb0FnUkJDR3NpQmpZQ0JDQUZJQVlRZ3dFUXJCZ01BUXNMSUFNZ0FDZ0NDRFlDQkNBQVFSQnFKQUFnQkVFUWFpUUFJQUVRdHdFZ0FTZ0NBQ0FCRU1vSEVMUVlDeUFDS0FJTUdpQUNRUkJxSkFBTHpnc0JDbjhqQUVFUWF5SUlKQUFnQ0NBQU5nSU1JQWdnQVRZQ0NBSkFJQWdvQWd3aUFTZ0NCQ0FCRUxjQktBSUFTUVJBSUFnb0FnZ2hBaU1BUVNCcklnQWtBQ0FBSUFFMkFod2dBQ0FDTmdJWUlBQW9BaHdpQXlFQ0l3QkJFR3NpQVNBQVFRaHFJZ1EyQWd3Z0FTQUNOZ0lJSUFGQkFUWUNCQ0FCS0FJTUlnSWdBU2dDQ0RZQ0FDQUNJQUVvQWdnb0FnUTJBZ1FnQWlBQktBSUlLQUlFSUFFb0FnUkJBM1JxTmdJSUlBTVF0d0VnQUNnQ0RCQ0RBU0FBS0FJWUVLOFlJQUFnQUNnQ0RFRUlhallDRENBRUVNME9EQUVMSUFnb0FnZ2hBaU1BUVNCcklnQWtBQ0FBSUFFMkFod2dBQ0FDTmdJWUlBQWdBQ2dDSENJRkVMY0JOZ0lVSUFVUXl3ZEJBV29oQWlNQVFTQnJJZ0VrQUNBQklBVTJBaGdnQVNBQ05nSVVJQUVvQWhnaEF5TUFRUkJySWdJa0FDQUNJQU0yQWd3Z0FpQUNLQUlNRUxjQkVLMFlOZ0lJSUFKQi8vLy8vd2MyQWdRZ0FrRUlhaUFDUVFScUVJZ0ZLQUlBSVFRZ0FrRVFhaVFBSUFFZ0JEWUNFQ0FCS0FJVUlBRW9BaEJMQkVBZ0F4RHNDZ0FMSUFFZ0F4REtCellDREFKQUlBRW9BZ3dnQVNnQ0VFRUJkazhFUUNBQklBRW9BaEEyQWh3TUFRc2dBU0FCS0FJTVFRRjBOZ0lJSUFFZ0FVRUlhaUFCUVJScUVJa0ZLQUlBTmdJY0N5QUJLQUljSVFJZ0FVRWdhaVFBSUFVUXl3Y2hBeUFBS0FJVUlRUWpBRUVnYXlJQkpBQWdBU0FBTmdJWUlBRWdBallDRkNBQklBTTJBaEFnQVNBRU5nSU1JQUVnQVNnQ0dDSUNOZ0ljSUFGQkFEWUNDQ0FDUVF4cUlBRkJDR29nQVNnQ0RCQ3VHQ0FDQW44Z0FTZ0NGQVJBSUFJUXlBY2hBeUFCS0FJVUlRWWpBRUVRYXlJRUpBQWdCQ0FETmdJTUlBUWdCallDQ0NBRUtBSU1JUVlnQkNnQ0NDRUhJd0JCRUdzaUF5UUFJQU1nQmpZQ0RDQURJQWMyQWdnZ0F5Z0NDQ0FES0FJTUVLMFlTd1JBRVBzQkFBc2dBeWdDQ0VFRGRFRUVFTk1JSVFZZ0EwRVFhaVFBSUFZaEF5QUVRUkJxSkFBZ0F3d0JDMEVBQ3pZQ0FDQUNJQUlvQWdBZ0FTZ0NFRUVEZEdvaUF6WUNDQ0FDSUFNMkFnUWdBaWdDQUNBQktBSVVRUU4wYWlFRElBSVF4d2NnQXpZQ0FDQUJLQUljR2lBQlFTQnFKQUFnQUNnQ0ZDQUFLQUlJRUlNQklBQW9BaGdRcnhnZ0FDQUFLQUlJUVFocU5nSUlJd0JCRUdzaUFpUUFJQUlnQlRZQ0RDQUNJQUEyQWdnZ0FpZ0NEQ0lERUxVWUlBTVF0d0VoQkNBREtBSUFJUVVnQXlnQ0JDRUdJQUlvQWdoQkJHb2hCeU1BUVNCcklnRWtBQ0FCSUFRMkFod2dBU0FGTmdJWUlBRWdCallDRkNBQklBYzJBaEFnQVNBQktBSVVJQUVvQWhoclFRTjFOZ0lNSUFFb0FoQWlCQ0FFS0FJQVFRQWdBU2dDREd0QkEzUnFOZ0lBSUFFb0FneEJBRW9FUUNBQktBSVFLQUlBSUFFb0FoZ2dBU2dDREVFRGRCQjlHZ3NnQVVFZ2FpUUFJQU1nQWlnQ0NFRUVhaERDQXlBRFFRUnFJQUlvQWdoQkNHb1F3Z01nQXhDM0FTQUNLQUlJRU1jSEVNSURJQUlvQWdnZ0FpZ0NDQ2dDQkRZQ0FDQURFTXNISVFFakFFRVFheUlFSkFBZ0JDQUROZ0lNSUFRZ0FUWUNDQ0FFS0FJTUlnRVE2Z0VoQlNBQklBVWdBUkRxQVNBQkVNb0hRUU4wYWlBQkVPb0JJQUVReWdkQkEzUnFJQUVRNmdFZ0JDZ0NDRUVEZEdvUXRnWWdCRUVRYWlRQUlBTVFyd01nQWtFUWFpUUFJd0JCRUdzaUFTUUFJQUVnQURZQ0NDQUJJQUVvQWdnaUFqWUNEQ01BUVJCcklnWWtBQ0FHSUFJMkFnd2dCaWdDRENJRElRUWdBeWdDQkNFRkl3QkJFR3NpQXlRQUlBTWdCRFlDRENBRElBVTJBZ2dnQXlnQ0RDRUZJQU1vQWdnaEJ5TUFRUkJySWdRa0FDQUVJQVUyQWdRZ0JDQUhOZ0lBSUFRb0FnUWhCUU5BSUFRb0FnQWdCU2dDQ0VjRVFDQUZFTWdISVFjZ0JTQUZLQUlJUVFocklnazJBZ2dnQnlBSkVJTUJFS3dZREFFTEN5QUVRUkJxSkFBZ0EwRVFhaVFBSUFaQkVHb2tBQ0FDS0FJQUJFQWdBaERJQnlFTElBSW9BZ0FoQ2lNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQXlnQ0RDSUNFTWNIS0FJQUlBSW9BZ0JyUVFOMUlRSWdBMEVRYWlRQUlBc2dDaUFDRUxRWUN5QUJLQUlNR2lBQlFSQnFKQUFMSUFCQklHb2tBQ0FJUVJCcUpBQUxkUUVCZnlNQVFSQnJJZ1FrQUNBRUlBRTJBZ3dnQkNBQ05nSUlJQVFnQXpZQ0JDQUVLQUlJSUFRb0Fnd2lBUkM0QVVzRVFFSFN4Z0VRc0JnQUN5QUJFSklDSUFRb0FnaHFJUUlnQkNBQkVMZ0JJQVFvQWdock5nSUFJQUFnQWlBRVFRUnFJQVFRaUFVb0FnQVF4eGdnQkVFUWFpUUFDeU1CQVg4akFFRVFheUlCSkFBZ0FTQUFOZ0lFSUFFb0FnUVF5QmdnQVVFUWFpUUFDeFlCQVg4akFFRVFheUlCSUFBMkFnUWdBU2dDQkJvTEpBRUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBU2dDREJES0Rob2dBVUVRYWlRQUN6TUJBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3aUFFSEU0aEkyQWdBZ0FFRU1haEM3R0NBQlFSQnFKQUFnQUFzeEFRRi9Jd0JCRUdzaUFpQUFOZ0lNSUFJZ0FUWUNDQ0FDS0FJTUlnQkIwT0lQTmdJQUlBQWdBaWdDQ0RZQ0JDQUFDeFFBSUFCQmlQa1BOZ0lBSUFCQkRHb1FYaUFBQ3cwQUlBQWdBU0FDUVRBUXZBd0xLd0VCZnlNQVFSQnJJZ0lrQUNBQ0lBQTJBZ3dnQWlBQk5nSUlJQUlvQWd3UWd3RWFJQUpCRUdva0FBdEJBUUovSXdCQkVHc2lBU0FBTmdJTUlBRW9BZ3doQUNBQlFYODJBZ2dnQUNBQktBSUlJZ0lnQUNnQ0FDSUFhallDQUNBQklBQWdBbW8yQWdRZ0FTZ0NCQXZWQVFBZ0FCQzVCaUlBUWVqNER6WUNCQ0FBUWJqNUR6WUNBQ0FBSUFFMkFnZ2dBRUdJK1E4MkFnQWdBRUVNYWlBQ0VPa0dJQUFnQkRvQUtTQUFJQU02QUNnZ0FFRUlhaEQ1QWtHU3NhajZCMnBCazZRR2N5SUJRUUoyUVpiNHFmb0hjeUFBTFFBb2FpQUJjeUlCUVFKMlFaYjRxZm9IY3lBQUxRQXBhaUFCY3lFQklBQW9BaHdpQWlBQUtBSWdRUUowYWlFRElBQURmeUFDSUFOR0JIOGdBUVVnQWlnQ0FDSUVJQVFvQWdBb0Fod1JBQUFnQVVFQ2RrR1crS242QjNOcUlBRnpJUUVnQWtFRWFpRUNEQUVMQ3pZQ0xDQUFDeGdCQVg4akFFRVFheUlCSUFBMkFnd2dBU2dDREVFSVN3c3ZBUUYvSXdCQkVHc2lBeUFBTmdJTUlBTWdBVFlDQ0NBRElBSTJBZ1FnQXlnQ0NDZ0NBQ0FES0FJRUtBSUFTUXNOQUNBQUlBRWdBa0UwRUx3TUMwRUJBWDhqQUVFUWF5SUNKQUFnQWlBQU5nSU1JQUlnQVRZQ0NDQUNLQUlNSWdBZ0FpZ0NDQkRDQXlBQVFRUnFJQUlvQWdoQkJHb1F3Z01nQWtFUWFpUUFDemNCQVg4akFFRVFheUlESUFBMkFnd2dBeUFCTmdJSUlBTWdBallDQkNBREtBSU1JZ0FnQXlnQ0NEWUNBQ0FBSUFNb0FnUTJBZ1FMSkFFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQkNEQVJvZ0FVRVFhaVFBQzBvQkFYOGpBRUVRYXlJQ0lBQTJBZ3dnQWlBQk5nSUlJQUlvQWd3aUFDQUNLQUlJS0FJQU5nSUFJQUFnQWlnQ0NDZ0NCRFlDQkNBQ0tBSUlRUUEyQWdBZ0FpZ0NDRUVBTmdJRUN5MEJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUFnQWlnQ0RDSUFFSHNnQUJBN0VNY1lJQUpCRUdva0FBc0xBQ0FBUWFlTURCRENFZ3VKQXdFQmZ5TUFRUkJySWdNa0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQWc0VEVnQUJBZ01FQlFZSENBa0tDd3dORGc4UUVSTUxJQUZCQ0dwQjlwb0pFQTRhREJJTElBRkJDR3BCaFFnUURob01FUXNnQVVFSWFrR3p2UVVRRGhvTUVBc2dBVUVJYWtIMW1na1FEaG9NRHdzZ0FVRUlha0dFQ0JBT0dnd09DeUFCUVFocVFhTG1CaEFPR2d3TkN5QUJRUWhxUWFqbUJoQU9HZ3dNQ3lBQlFRaHFRZHJwQmhBT0dnd0xDeUFCUVFocVFZdm1CaEFPR2d3S0N5QUJRUWhxUWFYbUJoQU9HZ3dKQ3lBQlFRaHFRWmZtQmhBT0dnd0lDeUFCUVFocVFhL29CaEFPR2d3SEN5QUJRUWhxUWYva0JoQU9HZ3dHQ3lBQlFRaHFRZHVZQ0JBT0dnd0ZDeUFCUVFocVFjeVlDQkFPR2d3RUN5QUJRUWhxUWQyWUNCQU9HZ3dEQ3lBQlFRaHFRZG1TQnhBT0dnd0NDeUFCUVFocVFaK2RDUkFPR2d3QkN5QURRUjAyQWd3Z0EwSG9pQVEyQWdnZ0F5QURLUU1JTndNQUlBQkI5QUpxUVE4Z0F4Q3BCd3NnQTBFUWFpUUFDeDhBSUFBb0FvUURJZ0JCQWlBQUtBSUFJZ0FnQUVFQ1RSdEJBbXMyQWdBTEZRQWdBQ2dDaEFNaUFDQUFLQUlBUVFKcU5nSUFDemtCQVg4Z0FTZ0NBQ0lDS0FJQUlnRWdBaWdDQkVFQ2RHb2hBZ05BSUFFZ0FrY0VRQ0FBSUFFb0FnQVF6dzRnQVVFRWFpRUJEQUVMQ3dzTkFDQUFRY2VMQkVFVUVNRVNDM0lCQVg0Z0FFVUVRRUVBRHdzQ2YwRUFJQUFvQWdRaUFDa0RFRUtCb0lDZ2dJQ0lnTkFBZ3lJQklBRkNBWDJEVUEwQUdrRUJJQUFRbFJBTkFCb0NmMEVBSUFBcEF4QkNnSUNBb0lDQWlJRFFBSU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFRYmp1RHhCSURRQWFJQUFRb2gwTEN3dDNBUVIvSUFBZ0FTQUNLQUlrRUpJQklBRkJDR29pQkVHWi93Z1FEaG9nQWlnQ1NDSURJQUlvQWt4QkFuUnFJUVZCQVNFQ0EwQWdBeUFGUndSQUlBTW9BZ0FoQmlBQ1FRRnhSUVJBSUFSQjlPME1FQTRhQ3lBQUlBRWdCaENTQVNBRFFRUnFJUU5CQUNFQ0RBRUxDeUFFUWUvMkNCQU9HZ3NOQUNBQVFibUpCRUVYRU1FU0N3c0FJQUJCdVpRTUVNSVNDMVVCQVg4akFFRVFheUlDSkFBZ0FFRUlha0hNK1FnUURob2dBQ0FCS0FJQUVLWWJRUWhxSWdCQjlPME1FQTRhSUFJZ0FTZ0NCQkQvR1NBQUlBSVFFaG9nQUVIdjlnZ1FEaG9nQWhBUEdpQUNRUkJxSkFBTFNnRURmeU1BUWFBQmF5SUNKQUFnQWtFSWFpSURJQUFRakFFZ0FrRVFhaUlFUWN6R0NSQU9HaUFBSUFNZ0FTZ0NKQkNTQVNBRVFmcnBCaEFPR2lBREVKQUJJQUpCb0FGcUpBQUwxd01CQTM4akFFRWdheUlESkFBZ0F5QUNOZ0ljSUFJb0Fqd0VRQ0FEUVFBNkFCUWdBeUFDUVRocU5nSVFJQUFnQVNBRFFSQnFFUHNDSUFGQkNHcEI5L0FNRUE0YUN5QURJQUEyQWdBZ0F5QURRUnhxTmdJRUFrQWdBaWdDQkNJRVFkajRFVVlFUUNBQlFRaHFJZ1JCblA4QkVBNGFJQUlvQWtSRkJFQWdBaWdDU0VVTkFnc2dCRUhhNlFZUURob2dBQ0FCSUFJb0FrUVFrZ0VnQWlnQ1NBUkFJQVJCOU8wTUVBNGFJQUFnQVNBQ0tBSklFSklCQ3lBRVFZdm1CaEFPR2d3QkN5QUVRZUQ1RDBZRVFDQUJRUWhxUVovcEFCQU9HZ3dCQ3lBRVFlajVFVVlFUUNBQlFRaHFRY1RTQkJBT0dnd0JDeUFFUWFENUVVWUVRQ0FCUVFocVFZSXVFQTRhREFFTEl3QkJvQUZySWdJa0FDQUNRZTZwQlVINEFrRVBJQU1vQWdCQjlBSnFFQmNpQkVFWWFrR2F2QW9RRGhvZ0JDQURLQUlFS0FJQUtBSUVRUVJxRUpvQkdpQUVFQmdnQWtHZ0FXb2tBQXNnQVVFSWFpSUNRZmZ3REJBT0dpQURJQU1vQWh3b0FpUkJKR29RVXlBQ0lBTVFFaG9nQXhBUEdpQURLQUljSWdRb0FpZ2lCUVIvSUFKQjdMVU1FQTRhSUFBZ0FTQUZFSklCSUFNb0Fod0ZJQVFMS0FJc0JFQWdBa0dlM1FzUURob2dBQ0FCSUFNb0Fod29BaXdRa2dFTElBSkIrdWtHRUE0YUlBTkJJR29rQUFzOEFRRi9Jd0JCb0FGcklnRWtBQ0FCUWU2cEJVSE1BRUVQSUFBb0FnQkI5QUpxRUJjaUFFRVlha0h1dndzUURob2dBQkFZSUFGQm9BRnFKQUFMUmdBQ2YwRUNJQUJFQUFBQUFBQUFBQUJoRFFBYUlBQWdBR0lFUUVFQUR3dEJBU0FBbVNJQVJBQUFBQUFBQVBCL1lRMEFHa0VEUVFRZ0FFUUFBQUFBQUFBUUFHTWJDd3M2QUFKL1FRSWdBRU1BQUFBQVd3MEFHaUFBSUFCY0JFQkJBQThMUVFFZ0FJc2lBRU1BQUlCL1d3MEFHa0VEUVFRZ0FFTUFBSUFBWFJzTEN4a0FJQUJCZ0lDQWdBRlBCRUFRK3dFQUN5QUFRUVIwRUJVTEhnQWdBQ2dDQUNJQVFRSWdBQ2dDQUNJQUlBQkJBazBiUVFKck5nSUFDeDRBSUFBZ0FTZ0NoQU1pQVRZQ0FDQUJJQUVvQWdCQkFtbzJBZ0FnQUFzUkFDQUFLQUlBUVFocVFlLzJDQkFPR2dzWEFDQUFJQUUyQWdBZ0FVRUlha0daL3dnUURob2dBQXNkQUNBQUlBRkI4UC8vL3dkQkEwSC8vLy8vQUVHQWdJQ0FBUkRZQ1FzUUFDQUFRUUU2QUFjZ0FFRUJPZ0FDQ3hBQUlBQkJBVG9BQmlBQVFRRTZBQUlMbWdFQUlBQWdBQzBBQUNBQkxRQUFja0VBUnpvQUFDQUFJQUF0QUFFZ0FTMEFBWEpCQUVjNkFBRWdBQ0FBTFFBQ0lBRXRBQUp5UVFCSE9nQUNJQUFnQUMwQUF5QUJMUUFEY2tFQVJ6b0FBeUFBSUFBdEFBUWdBUzBBQkhKQkFFYzZBQVFnQUNBQUxRQUZJQUV0QUFWeVFRQkhPZ0FGSUFBZ0FDMEFCaUFCTFFBR2NrRUFSem9BQmlBQUlBQXRBQWNnQVMwQUIzSkJBRWM2QUFjTFB3RUJmd0pBSUFBUTVSaEZEUUFnQUMwQUFBUkFRUUVQQ3lBQUxRQUNSUTBBUVFFaEFTQUFMUUFERFFBZ0FDMEFCaUFBTFFBSGNrRUFSeUVCQ3lBQkM1c0JBUWgvSUFBdEFBQWhBZ0pBSUFBdEFBRUVRQ0FDUlEwQkN5QUFMUUFDSWdFZ0FDMEFCU0lGSUFBdEFBUWlCaUFBTFFBR0lnY2dBQzBBQnlJSWNpSURJQUF0QUFNaUJISnlja1Z5UlFSQVFRQVBDd0pBSUFGRkRRQkJBQ0VCSUFSRklnQWdCa0VBUjNFZ0JVRUFSeUFBY1hJTkFTQUVCRUFnQTBVTkFRd0NDeUFEUlNBQ1JYSkZEUUVnQjBVTkFDQUlEUUVMUVFFaEFRc2dBUXUzQVFFQmZ5QUJRUWhxSWdKQnAva0lFQTRhSUFBdEFBQUVRQ0FDUVpmM0NCQU9HaUFBTFFBQkJFQWdBa0dVd3dJUURob0xJQUpCN3ZZSUVBNGFDeUFBTFFBQ0JFQWdBa0dZK1FnUURob2dBQzBBQXdSQUlBSkJwZmdFRUE0YUN5QUFMUUFFQkVBZ0FrSERvZ0VRRGhvTElBQXRBQVVFUUNBQ1FZZWlBeEFPR2dzZ0FDMEFCZ1JBSUFKQitQOEVFQTRhQ3lBQUxRQUhCRUFnQWtHdDNnTVFEaG9MSUFKQjd2WUlFQTRhQ3lBQ1FlLzJDQkFPR2lBQkN3NEFJQUFnQVNrQUFEY0FBQ0FBQ3drQUlBQkNBRGNBQUF1dkFRRUVmeU1BUVJCcklnTWtBQ01BUVNCcklnUWtBQ01BUVNCcklnSWtBQ0FDUVFocUlnVWdBUkQxRUNBQ0lBSW9BZ3dnQWkwQUV5SUJJQUZCR0hSQkdIVkJBRWdpQVJzMkFod2dBaUFDS0FJSUlBVWdBUnMyQWhnZ0FpQUNLUU1ZTndNQUlBUWdBQ0FDRU9FQklBVVFEeG9nQWtFZ2FpUUFJQUFnQUVIWUFtb2dCQkRPQWlFQklBUkJJR29rQUNBRElBRTJBZ3dnQUNBQlFSQnFJQU5CREdvUXN3TWhBQ0FEUVJCcUpBQWdBQXN2QVFGL0l3QkJFR3NpQXlRQUlBTWdBallDRENBQ0JFQWdBQ0FCSUFOQkRHb1F6QTgyQWdRTElBTkJFR29rQUF1YkFRRURmeUFCSUFBb0FvZ0NTd1JBSUFBb0FvQUNJUVJCRUNFQ0lBQWhBeUFCUVJCUEJFQkJmeUFCUVFSMElBRkIvLy8vL3dCTEd4QVZJUU1nQVNFQ0N5QUFJQU0yQW9BQ0lBQWdBallDaUFKQkFDRUJBMEFnQUNnQ2hBSWdBVTBFUUNBQUlBUVFOZ1VnQVVFRWRDSUNJQUFvQW9BQ2FpSURJQUlnQkdvaUFpa0NBRGNDQUNBRElBSXBBZ2czQWdnZ0FVRUJhaUVCREFFTEN3c0xvZ1FDQ244QmZRSkFBbjlCQWlBQlFRRkdEUUFhSUFFZ0FTQUJRUUZyY1VVTkFCb2dBUkIvQ3lJQ0lBQW9BZ1FpQVUwRVFDQUJJQUpORFFFZ0FVRURTU0VEQW44Z0FDZ0NETE1nQUNvQ0VKV05JZ3hEQUFDQVQxMGdERU1BQUFBQVlIRUVRQ0FNcVF3QkMwRUFDeUVFSUFFZ0FpQURJQUZwUVFGTGNnUi9JQVFRZndVZ0JFRUJRU0FnQkVFQmEyZHJkQ0FFUVFKSkd3c2lBU0FCSUFKSkd5SUNUUTBCQ3lBQUlRTkJBQ0VBQWtBZ0FnUkFJQU1nQWhDWEF4QnNJQU1nQWpZQ0JBTkFJQUFnQWtZRVFDQURLQUlJSWdSRkRRTWdBMEVJYWlFQUlBUW9BZ1FoQlFKQUlBSnBJZ0ZCQVUwRVFDQUZJQUpCQVd0eElRVU1BUXNnQWlBRlN3MEFJQVVnQW5BaEJRc2dBeWdDQUNBRlFRSjBhaUFBTmdJQUlBSkJBV3NoQ0NBQlFRRkxJUWtEUUNBRUtBSUFJZ0ZGRFFRZ0FTZ0NCQ0VBQWtBZ0NVVUVRQ0FBSUFoeElRQU1BUXNnQUNBQ1NRMEFJQUFnQW5BaEFBc2dBQ0FGUndSQUlBQkJBblFpQnlBREtBSUFhaUlHS0FJQUJFQWdBVUVJYWlFS0lBRWhBQU5BQWtBZ0FDSUdLQUlBSWdCRkJFQkJBQ0VBREFFTElBb2dBRUVJYWhDMkFpRUxJQVlvQWdBaEFDQUxEUUVMQ3lBRUlBQTJBZ0FnQmlBREtBSUFJQWRxS0FJQUtBSUFOZ0lBSUFNb0FnQWdCMm9vQWdBZ0FUWUNBQXdDQ3lBR0lBUTJBZ0FnQUNFRkN5QUJJUVFNQUFzQUJTQURLQUlBSUFCQkFuUnFRUUEyQWdBZ0FFRUJhaUVBREFFTEFBc0FDeUFEUVFBUWJDQURRUUEyQWdRTEN3dm1BUUVCZnlNQVFVQnFJZ0FrQUNBQVFUQnFJQUlRVkNFSklBUXRBQUFoQkNBREtBSUFJUU1nQUVFZ2FpQUZFRlFoQWlBQUlBWkJJR28yQWhnZ0JpZ0NJQ0VGSUFBZ0IwRWdhallDRUNBQUlBVWdCa2M2QUJ3Z0FDQUhLQUlnSUFkSE9nQVVJQUFnQ0NnQ0NEWUNDQ0FBSUFncEFnQTNBd0FnQVNBSkVGUWlBU0FFT2dBUUlBRWdBellDRENBQklBSXBBZ0EzQWhRZ0FTQUNLQUlJTmdJY0lBSVFWU0FCUVNCcUlBQkJHR29RL1FvYUlBRkJ6QUJxSUFCQkVHb1EvUW9hSUFFZ0FDZ0NDRFlDZ0FFZ0FTQUFLUUlBTndKNElBSVFEeG9nQ1JBUEdpQUFRVUJySkFBTHh3VUNCMzhDZmlNQVFiQUJheUlFSkFBZ0FTZ0N4QUVpQnlBQktBTE1BU0lEUVpZQmJFR1dBV3BCNUFCdVNRUkFJd0JCUUdvaUJTUUFRUXdnQTBFQmRFRUNha0dXQVd4QjVBQnVJZ01nQTBFTVRSc2lCaUFCS0FMRUFVc0VRQ0FGUW9DQWdJQ0FBVGNDTkNBRklBVkJFR29pQXpZQ01DQURJQUVvQXN3QkVMc0pJQUVvQXNBQklnTWdBU2dDeEFGQkJIUnFJUWNEUUFKQUlBTWdCMFlFUUNBQkVPb0VJQUVnQmhEa0JDQUZLQUl3SWdNZ0JTZ0NORUVDZEdvaEJnd0JDeUFETFFBRUJFQWdCVUVRYWlBREVMNEJFSjhGQ3lBRFFSQnFJUU1NQVFzTEEwQWdBeUFHUndSQUlBVWdBU0FERU80WUlBTkJCR29oQXd3QkN3c2dCVUVRYWhBakN5QUZRVUJySkFBZ0FTZ0N4QUVoQndzZ0IwRUJheUVKSUFJb0FnQWlCU0FIY0NFR0lBRW9Bc0FCSVFoQkFDRUNBa0FEUUNBQ0lBZEhCRUFnQ0NBR1FRUjBhaUlETFFBRVJRUkFJQU5CQVRvQUJDQURJQVUyQWdBZ0NDQUdRUVIwYWlJRElBSTJBZ3dnQXlBRk5nSUlJQUVnQVNnQ3pBRkJBV28yQXN3QklBRWdBU2dDMEFGQkFXbzJBdEFCSUFCQ0FEY0NBQXdEQ3dKQUlBTW9BZ2dnQlVjTkFDQUZJQU1vQWdCSERRQWdBRUlDTndJQURBTUxJQUlnQXlnQ0RFc0VRQ0FFSUFVMkFxZ0JJQVFnQlRZQ29BRWdCQ0FDTmdLc0FTQUVRUUU2QUtRQklBUWdCQ2tEcUFFaUNqY0RDQ0FFSUFRcEE2QUJJZ3MzQXdBZ0JDQURLUUlJTndPb0FTQUVJQU1wQWdBM0E2QUJJQU1nQ3pjQ0FDQURJQW8zQWdnZ0JDQUVLQUtzQVVFQmFqWUNyQUVnQVNBR1FRRnFJQUVvQXNRQmNDQUVRYUFCYWhEckJDQUJJQUVvQXN3QlFRRnFOZ0xNQVNBQklBRW9BdEFCUVFGcU5nTFFBU0FBUWdBM0FnQU1Bd1VnQmtFQmFrRUFJQVlnQ1VjYklRWWdBa0VCYWlFQ0RBSUxBQXNMSUFSQmhyVURRZXNEUVE0Z0JFR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUd3QVdva0FBc1hBQ0FCUlFSQVFRQVBDeUFBSUFJdEFBQWdBUkNyRFF2L0JBSUlmd0o5SXdCQkVHc2lCaVFBSUFJUTlBTWhCeUFBQW44Q1FDQUJLQUlFSWdSRkRRQWdBU2dDQUFKL0lBUkJBV3NnQjNFZ0JHa2lDVUVCVFEwQUdpQUhJQVFnQjBzTkFCb2dCeUFFY0FzaUNFRUNkR29vQWdBaUJVVU5BQ0FFUVFGcklRb2dBaWdDQUNFTElBbEJBVXNoQ1FOQUlBVW9BZ0FpQlVVTkFTQUhJQVVvQWdRaUFrY0VRQUpBSUFsRkJFQWdBaUFLY1NFQ0RBRUxJQUlnQkVrTkFDQUNJQVJ3SVFJTElBSWdDRWNOQWdzZ0JTZ0NDQ0FMUncwQUMwRUFEQUVMUVJRUUZTRUNJQVlnQVVFSWFqWUNCQ0FHSUFJMkFnQWdBeWdDQUNnQ0FDRURJQUpDQURjQ0RDQUNJQU0yQWdnZ0JrRUJPZ0FJSUFKQkFEWUNBQ0FDSUFjMkFnUUNRRUVBSUFRZ0FTZ0NERUVCYXJNaURDQUJLZ0lRSWcwZ0JMT1VYaHNOQUNBQklBUWdCRUVCYTNGQkFFY2dCRUVEU1hJZ0JFRUJkSElpQWdKL0lBd2dEWldOSWd4REFBQ0FUMTBnREVNQUFBQUFZSEVFUUNBTXFRd0JDMEVBQ3lJRElBSWdBMHNiRU1NQklBRW9BZ1FpQkNBRVFRRnJjVVVFUUNBRVFRRnJJQWR4SVFnTUFRc2dCQ0FIU3dSQUlBY2hDQXdCQ3lBSElBUndJUWdMQWtBZ0NFRUNkQ0lESUFFb0FnQnFLQUlBSWdKRkJFQWdCaWdDQUNBQktBSUlOZ0lBSUFFZ0JpZ0NBRFlDQ0NBQktBSUFJQU5xSUFGQkNHbzJBZ0FnQmlnQ0FDSUNLQUlBSWdORkRRRWdBeWdDQkNFRkFrQWdCQ0FFUVFGcklnTnhSUVJBSUFNZ0JYRWhCUXdCQ3lBRUlBVkxEUUFnQlNBRWNDRUZDeUFCS0FJQUlBVkJBblJxSUFJMkFnQU1BUXNnQmlnQ0FDQUNLQUlBTmdJQUlBSWdCaWdDQURZQ0FBc2dCaWdDQUNFRklBWkJBRFlDQUNBQklBRW9BZ3hCQVdvMkFnd2dCaENMQVVFQkN6b0FCQ0FBSUFVMkFnQWdCa0VRYWlRQUN4Z0JBWDhnQUVFTWFpSUJJQUVvQWdRUTNRNGdBQkF5R2dzdkFRRi9JQUFvQWdRaEFnTkFJQUVnQWtaRkJFQWdBa0VZYXhCdEdpQUNRUnhySVFJTUFRc0xJQUFnQVRZQ0JBc3pBUUYvSUFBb0FnUWhBZ05BSUFFZ0FrWkZCRUFnQWtGQWFpSUNJQUlvQWdBb0FnQVJBQUFhREFFTEN5QUFJQUUyQWdRTERBQWdBQ0FBS0FJQUVQSVlDekFCQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUpCSUdvUXhRTWdBa0VRYWhERkF3c2dBaEFmQ3d0Z0FRRi9JQUFvQWdRaUFnUkFJQUlvQWdBZ0FSQlhRUUZCQVVIVm5naEIwS2NEUWZBQUVFc0xJQUFnQVJETkF5SUJSUVJBUVFBUEN5QUFJQUVRdkFZaEFTQUFLQUlBS0FJSUlBRVFWMEVCUVFGQm9ac0lRZENuQTBIMEFCQkxJQUVMQ1FBZ0FFRUFFUFVZQ3p3QkFuOGdBQ2dDQkNFQ0EwQWdBaUFBS0FJSUlnRkhCRUFnQUNBQlFReHJJZ0UyQWdnZ0FSQXlHZ3dCQ3dzZ0FDZ0NBQ0lBQkVBZ0FCQWZDd3VSQVFFQ2Z5QUFLQUlBSVFNZ0FDZ0NCQ0VDQTBBZ0FpQURSd1JBSUFFb0FnUkJER3NnQWtFTWF5SUNFS1VDR2lBQklBRW9BZ1JCREdzMkFnUU1BUXNMSUFBb0FnQWhBaUFBSUFFb0FnUTJBZ0FnQVNBQ05nSUVJQUFvQWdRaEFpQUFJQUVvQWdnMkFnUWdBU0FDTmdJSUlBQW9BZ2doQWlBQUlBRW9BZ3cyQWdnZ0FTQUNOZ0lNSUFFZ0FTZ0NCRFlDQUF0QUFRSi9JQUFvQWdBRVFDQUFLQUlBSVFJZ0FDZ0NCQ0VCQTBBZ0FTQUNSd1JBSUFGQmhBRnJFS01aSVFFTUFRc0xJQUFnQWpZQ0JDQUFLQUlBRUI4TEM1Y0JBUVYvSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBellDRENBRUlBTTJBZ2dqQUVFUWF5SURKQUFnQUVHTUFXb2lCUkQ5QlNFR0lBSW9BZ0FoQWlBRUtBSUlJUWNnQUNnQ0NDRUFJQU5CQURvQURDQURRZGljSURZQ0NDQUZJQVlnQUNBSElBRWdBaUFEUVFocUVQNEZJZ0FRS0NBRklBVW9BaGhCQVdvMkFoZ2dBMEVRYWlRQUlBUkJFR29rQUNBQUN4Y0FJQUJCR0dvUU1ob2dBRUVNYWhBeUdpQUFFRElhQ3drQUlBQkJBQkQrR0F0TkFRRi9JQUFvQWdBaEFpQUFJQUUyQWdBZ0FnUkFJQUlFUUNBQ0tBSUlJUUFEUUNBQUJFQWdBQ2dDQUNFQklBQkJER29RL0JnZ0FCQWZJQUVoQUF3QkN3c2dBaEMzQWdzZ0FoQWZDd3NKQUNBQVFRQVFnQmtMdUFFQkFuOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBZ1JBSUFKQjVBQnFFRThnQWtIUUFHb1FUeUFDUWNRQWFpSUFLQUlBQkVBZ0FDZ0NBQ0VESUFBb0FnUWhBUU5BSUFFZ0EwY0VRQ0FCUVFSckVJVURHaUFCUVFocklRRU1BUXNMSUFBZ0F6WUNCQ0FBS0FJQUVCOExJQUpCTUdvaUF5Z0NDQ0VBQTBBZ0FBUkFJQUFvQWdBaEFTQUFRUWhxRUlVREdpQUFFQjhnQVNFQURBRUxDeUFERUpzRElBSkJIR29RVHlBQ1FRaHFFRThMSUFJUUh3c0xDUUFnQUVFQUVJSVpDME1CQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUpCT0dvUWh3a2dBa0VrYWhCUElBSkJHR29nQWlnQ0hCRHBEaUFDUVFScUVFOExJQUlRSHdzTENRQWdBRUVBRUlRWkN6a0JBWDhnQUNnQ0FDRUNJQUFnQVRZQ0FDQUNCRUFnQWdSQUlBSkJJR29RMVFRZ0FrRVVhaUFDS0FJWUVPb09JQUlRVHdzZ0FoQWZDd3Y1QVFFSGZ3Si9JQUpCQ0dvaEJ3SkFJQUZCd0ExcUlnUW9BZ1FpQWtVTkFDQUVLQUlBQW44Z0J5Z0NBQ0lHSUFKQkFXdHhJQUpwSWdSQkFVME5BQm9nQmlBQ0lBWkxEUUFhSUFZZ0FuQUxJZ2hCQW5ScUtBSUFJZ1ZGRFFBZ0FrRUJheUVKSUFSQkFVc2hDZ05BSUFVb0FnQWlCVVVOQVNBR0lBVW9BZ1FpQkVjRVFBSkFJQXBGQkVBZ0JDQUpjU0VFREFFTElBSWdCRXNOQUNBRUlBSndJUVFMSUFRZ0NFY05BZ3dCQ3lBRlFRaHFJQWNRdGdKRkRRQUxJQVVNQVF0QkFBc2lBa1VFUUNBQlFRQTZBSlFESUFGQnFBUnFRZWI4QWhBWkdpQUFRZHo0REJBVUdnOExJQUFnQVVISUJHb2dBaWdDSkNBREVQVUlDNzhFQWdkL0FuMGpBRUVRYXlJR0pBQWdBaWdDQUNFRklBQUNmd0pBSUFFb0FnUWlCRVVOQUNBQktBSUFBbjhnQkVFQmF5QUZjU0FFYVNJSFFRRk5EUUFhSUFVZ0JDQUZTdzBBR2lBRklBUndDeUlJUVFKMGFpZ0NBQ0lDUlEwQUlBUkJBV3NoQ1NBSFFRRkxJUW9EUUNBQ0tBSUFJZ0pGRFFFZ0JTQUNLQUlFSWdkSEJFQUNRQ0FLUlFSQUlBY2dDWEVoQnd3QkN5QUVJQWRMRFFBZ0J5QUVjQ0VIQ3lBSElBaEhEUUlMSUFJb0FnZ2dCVWNOQUF0QkFBd0JDeUFHSUFFZ0JTQURFUFFJQWtCQkFDQUVJQUVvQWd4QkFXcXpJZ3NnQVNvQ0VDSU1JQVN6bEY0YkRRQWdBU0FFSUFSQkFXdHhRUUJISUFSQkEwbHlJQVJCQVhSeUlnSUNmeUFMSUF5VmpTSUxRd0FBZ0U5ZElBdERBQUFBQUdCeEJFQWdDNmtNQVF0QkFBc2lBeUFDSUFOTEd4RERBU0FCS0FJRUlnUWdCRUVCYTNGRkJFQWdCRUVCYXlBRmNTRUlEQUVMSUFRZ0JVc0VRQ0FGSVFnTUFRc2dCU0FFY0NFSUN3SkFJQWhCQW5RaUF5QUJLQUlBYWlnQ0FDSUNSUVJBSUFZb0FnQWdBU2dDQ0RZQ0FDQUJJQVlvQWdBMkFnZ2dBU2dDQUNBRGFpQUJRUWhxTmdJQUlBWW9BZ0FpQXlnQ0FDSUNSUTBCSUFJb0FnUWhBZ0pBSUFRZ0JFRUJheUlGY1VVRVFDQUNJQVZ4SVFJTUFRc2dBaUFFU1EwQUlBSWdCSEFoQWdzZ0FTZ0NBQ0FDUVFKMGFpQUROZ0lBREFFTElBWW9BZ0FnQWlnQ0FEWUNBQ0FDSUFZb0FnQTJBZ0FMSUFZb0FnQWhBaUFHUVFBMkFnQWdBU0FCS0FJTVFRRnFOZ0lNSUFZUTF3NUJBUXM2QUFRZ0FDQUNOZ0lBSUFaQkVHb2tBQXVBQVFFQ2Z5TUFRU0JySWdNa0FBSkFBa0FnQWlnQ0FDSUVSUTBBSUFRUXBBOUZEUUFnQVNBQ0tBSUFFSWdaSVFRZ0EwRUFOZ0lZSUFOQ0FEY0RFQ0FEUWdBM0F3Z2dBQ0FFSUFGQklHb2lBQ0FEUVFocUlBUWdBQ0FFS0FJQUtBSUlFUUVBSUFKQkJHb1ExZ1FRYVJvTUFRc2dBQ0FDRUZzYUN5QURRU0JxSkFBTGp3RUJBWDhnQVVVRVFDQUFRUUE2QUpRRElBQkJxQVJxUWZmOEJCQVpHa0VBRHdzZ0FTZ0NCQ0lDUWVETEVrWWdBa0hJeXhKR2NrVWdBa0d3eXhKSGNVVUVRQ0FBUVpBRGFoRHRBdzhMSUFKQnFNd1NSZ1JBSUFCQmtBTnFJZ0FnQUJEdEF5QUJLQUlNRVA4Q0R3c2dBRUVBT2dDVUF5QUFRYWdFYWtHV3h3a1FHU0FCS0FJRVFRUnFFTEFER2tFQUM1RUJBUUYvSUFGRkJFQWdBRUVBT2dDVUF5QUFRYWdFYWtIMy9BUVFHUm9MSUFFb0FnUWlBa0hneXhKR0lBSkJ5TXNTUm5KRklBSkJzTXNTUjNGRkJFQWdBRUdRQTJvUTdBTVBDeUFCUlNBQ1Fhak1Fa2R5UlFSQUlBQkJrQU5xSWdBZ0FCRHNBeUFCS0FJTUVQOENEd3NnQUVFQU9nQ1VBeUFBUWFnRWFrR1d4d2tRR1NBQktBSUVRUVJxRUxBREdrRUFDeUVBSUFFb0FnQWlBVUVBT2dDVUF5QUJRYWdFYWtIVTFBQVFHUm9nQUJCbkdndEpBUUYvSXdCQkVHc2lBaVFBSUFCQ2dJQ0FnREEzQWhBZ0FDQUFOZ0lNSUFJZ0FVRU1hallDQ0NBQ0lBRW9BZ3dnQVVjNkFBd2dBQ0FDUVFocUVOZ1hJQUpCRUdva0FDQUFDMklCQW44akFFRVFheUlFSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlETmdJTUlBUWdBellDQ0NBQVFZd0JhaUlESUFNUXZ3RWdBQ2dDQ0NBRUtBSUlJQUVnQWlnQ0FCRCtIaUlBRUNnZ0F5QURLQUlZUVFGcU5nSVlJQVJCRUdva0FDQUFDNUlCQVFGL0l3QkJFR3NpQkNRQUlBQkJBRFlDQ0NBQVFnQTNBZ0FnQkNBQklBRkJ3QTFxSUFKQkNHb1FtaGtvQWdBZ0F4RDdEaUFFS0FJRUlRSWdCQ2dDQUNFQkEwQWdBU0FDUndSQUlBRVErZzRFUUFKQUlBQW9BZ1FnQUNnQ0NFa0VRQ0FBSUFFUW1Sa01BUXNnQUNBQkVKZ1pDeUFBS0FJRUdnc2dBVUVNYWlFQkRBRUxDeUFFRUtRQ0lBUkJFR29rQUF0UkFRSi9JQUVvQWdRaUEwSGd5eEpHQkVBZ0FFR1FBMm9RN1FNUEN3SkFJQU5CcU13U1J3MEFJQUVvQWdnb0FnUkI0TXNTUncwQUlBQkJrQU5xSWdBZ0FCRHRBeUFCS0FJTUVQOENJUUlMSUFJTGp3TUJBMzhqQUVFUWF5SUNKQUFDUUNBQUxRQ1VBMFVFUUF3QkN5QUFLQUswQlNBQkVIb1FsQUVpQTBVRVFFRUFJUU1nQUVFQU9nQ1VBeUFBUWFnRWFrSFQrQWtRR1NFQUlBSWdBUkJZSUFBZ0FoQk5HaUFDRUE4YURBRUxJQU1vQWhRaUJFRVphMEVDU1EwQUlBUkJJRWNFUUVFQUlRTWdBRUVBT2dDVUF5QUFRYWdFYWtIVCtBa1FHU0VBSUFJZ0FSQllJQUFnQWhCTkdpQUNFQThhREFFTElBQW9BclFGSUFOQkFSQTRFSlFCSWdORkJFQkJBQ0VESUFCQkFEb0FsQU1nQUVHb0JHcEJ1dlVKRUJraEFDQUNJQUVRV0NBQUlBSVFUUm9nQWhBUEdnd0JDd0pBQWtBQ1FDQURLQUlVUVJsckRnVURBd0VBQUFJTFFRQWhBeUFBUVFBNkFKUURJQUJCcUFScVFiMzJDeEFaSVFBZ0FpQUJFRmdnQUNBQ0VFMGFJQUlRRHhvTUFndEJBQ0VESUFCQkFEb0FsQU1nQUVHb0JHcEIwT1lMRUJraEFDQUNJQUVRV0NBQUlBSVFUUm9nQWhBUEdnd0JDMEVBSVFNZ0FFRUFPZ0NVQXlBQVFhZ0Vha0g2OVFzUUdTRUFJQUlnQVJCWUlBQWdBaEJOR2lBQ0VBOGFDeUFDUVJCcUpBQWdBd3NNQUNBQUlBRkIrQVVReFJJTDB3Z0JCbjhqQUVHZ0FXc2lDQ1FBSXdCQk1Hc2lBeVFBSUFCQkpHb2lCeUFDS0FLb0FoRDJDaUFEUVFBMkFpZ2dBeUFDUVNScU5nSWtJQU1nQVVISUlHbzJBaUFnQXlBQlFkeUFBV29vQWdCQkFXczJBaXdDUUNBRFFTQnFFTFVCQkVBZ0EwRWdhaEJhSWdVb0F0Z0JJZ1FnQlNnQzNBRkJHR3hxSVFVRFFDQUVJQVZHQkVBZ0FpZ0NwQUlpQlNBQ0tBS29Ba0VDZEdvaEFnTkFJQUlnQlVZRVFDQURRU0JxRUZvaUFpZ0N5QUlpQkNBQ0tBTE1Ba0VZYkdvaEFnTkFJQUlnQkVZTkJpQURJQUVnQkJCbUVMd0dOZ0lRSUFjZ0EwRVFhaENVQXlBRVFSaHFJUVFNQUFzQUN5QURJQU5CSUdvUVdpSUVRZGdDYWpZQ0VDQUZLQUlBSVFZZ0EwRUFOZ0lZSUFNZ0JqWUNGQ0FESUFSQm5BbHFLQUlBUVFGck5nSWNBa0FnQTBFUWFoQzBBVVVOQUNBRFFSQnFFS3dCSWdZb0FtQWlCQ0FHS0FKa1FSaHNhaUVHQTBBZ0JDQUdSZzBCSUFNZ0FTQUVFR1lRdkFZMkFnd2dCeUFEUVF4cUVKUURJQVJCR0dvaEJBd0FDd0FMSUFOQklHb1FXaUVFSUFNZ0JTZ0NBRFlDRUNBRUlBTkJFR29ReGdORkJFQWdBeUFCSUFVb0FnQVE5aGcyQWhBZ0J5QURRUkJxRUpRREN5QURJQU5CSUdvUVdpSUVRYUFKYWpZQ0VDQUZLQUlBSVFZZ0EwRUFOZ0lZSUFNZ0JqWUNGQ0FESUFSQjVBOXFLQUlBUVFGck5nSWNBa0FnQTBFUWFoQzBBVVVOQUNBRFFSQnFFS3dCSWdZb0FtQWlCQ0FHS0FKa1FSaHNhaUVHQTBBZ0JDQUdSZzBCSUFNZ0FTQUVFR1lRdkFZMkFnd2dCeUFEUVF4cUVKUURJQVJCR0dvaEJBd0FDd0FMSUFWQkJHb2hCUXdBQ3dBRklBTWdBU0FFRUdZUXZBWTJBaEFnQnlBRFFSQnFFSlFESUFSQkdHb2hCQXdCQ3dBTEFBc2dBaWdDcEFJaUJTQUNLQUtvQWtFQ2RHb2hBZ05BSUFJZ0JVWUVRQ0FEUVNCcUVMVUJSUTBDSUFOQklHb1FXaUlDS0FMSUFpSUVJQUlvQXN3Q1FSaHNhaUVDQTBBZ0FpQUVSZzBESUFNZ0FTQUVFR1lRdkFZMkFoQWdCeUFEUVJCcUVKUURJQVJCR0dvaEJBd0FDd0FGSUFNZ0FTQUZLQUlBRVBZWU5nSVFJQWNnQTBFUWFoQ1VBd0pBSUFOQklHb1F0UUZGRFFBZ0F5QURRU0JxRUZvaUJFR2dDV28yQWhBZ0JTZ0NBQ0VHSUFOQkFEWUNHQ0FESUFZMkFoUWdBeUFFUWVRUGFpZ0NBRUVCYXpZQ0hDQURRUkJxRUxRQlJRMEFJQU5CRUdvUXJBRWlCaWdDWUNJRUlBWW9BbVJCR0d4cUlRWURRQ0FFSUFaR0RRRWdBeUFCSUFRUVpoQzhCallDRENBSElBTkJER29RbEFNZ0JFRVlhaUVFREFBTEFBc2dCVUVFYWlFRkRBRUxBQXNBQ3lBRFFUQnFKQUFnQUVFQU5nS0VCU0FBUVFBMkFxd0VJQUJCQURZQ29BTWdBRUVBTmdMMEFpQUFRUUEyQXRnRUlBQW9BcVFDSWdJZ0FDZ0NxQUpCQW5ScUlRTWdDRUVZYWlFRUEwQWdBaUFEUndSQUFrQWdBaWdDQUNJRlJRUkFJQUVvQWdBaUJSQWNJQWhCMDdRRlFaY0JRUUFnQlVISUFtb1FGeUVGSUFSQjVzWUJFQTRhSUFVUUdBd0JDeUFCS0FJQUlnY1FIQ0FBSUFVZ0IwSElBbW9RekJrTElBSkJCR29oQWd3QkN3c2dDRUdnQVdva0FBdnZBUUVGZnlBQ1FRZEdCSDhnQVVFQUlBRUVmeUFCS0FJRVFaak9FaEJJQlVFQUN4c2lBVVVFUUVFQ0R3dEJBVUVDQW44Z0FVRUlhaUVFQWtBZ0FDZ0MzQVlpQVVVTkFDQUFLQUxZQmdKL0lBUW9BZ0FpQXlBQlFRRnJjU0FCYVNJQVFRRk5EUUFhSUFNZ0FTQURTdzBBR2lBRElBRndDeUlGUVFKMGFpZ0NBQ0lDUlEwQUlBRkJBV3NoQmlBQVFRRkxJUWNEUUNBQ0tBSUFJZ0pGRFFFZ0FpZ0NCQ0lBSUFOSEJFQUNRQ0FIUlFSQUlBQWdCbkVoQUF3QkN5QUFJQUZKRFFBZ0FDQUJjQ0VBQ3lBQUlBVkhEUUlNQVFzZ0FrRUlhaUFFRUxZQ1JRMEFDeUFDREFFTFFRQUxHd1ZCQUFzTHB5Z0JFSDhqQUVFUWF5SU1KQUFDUUFKQUFrQWdBQ2dDQkNBQUxRQUxJZ1VnQlVFWWRFRVlkVUVBU0JzRVFDTUFRUkJySWcwa0FFR29BUkFWSVFVZ0RVRyszZ1lRRkNJT0lRSWdCVUVBRUtNQklnZEIrSlFQTmdJQUlBZEJDR29RNlJNaEFTQUhRWmdCYWlBQ0VGUWhCUkNMQmlnQ0FDSUNRUWhxSUFGSEJFQWdBaWdDQ0NFR0lBSW9BZ3doQWlNQVFSQnJJZ2trQUFKQUlBWWdBaENkQ0NJSUlBRVE3d2xOQkVBZ0FpRURJQWdnQVNnQ0FDSUtJQUVvQWdRUWdnUWlDMDBpRDBVRVFDQUpJQVkyQWd3Z0NVRU1haUFMRVBRVUlBRW9BZ0FoQ2lBSktBSU1JUU1MSUFZZ0F5QUtFUFlNSVFZZ0QwVUVRQ0FCSUFNZ0FpQUlJQUVvQWdBZ0FTZ0NCQkNDQkdzUW94TU1BZ3NnQVNBR0VOZ1REQUVMSUFFb0FnQUVRQ0FCRVBJTUlBRVE4QWtnQVNnQ0FDQUJFTzhKRU84TUlBRVExZ1ZCQURZQ0FDQUJRZ0EzQXdBTElBRWdBU0FJRU5jVEVPZ1RJQUVnQmlBQ0lBZ1FveE1MSUFsQkVHb2tBQXNEUUNBQktBSUFJZ0lnQnlnQ0RCQ0NCQ0FFU3dSQUlBSWdCQkNIQnlnQ0FDSUNCRUFnQWhDMEJnc2dCRUVCYWlFRURBRUxDMEVNRUJVaEFTTUFRUkJySWdJa0FDQUJRUUFRNWhNaUFVR01sUTgyQWdBZ0FTQUZFSHNRL0FRaUF6WUNDQ0FEUlFSQUlBSkIxdXNKSUFVUXhBRU1CQXNnQWtFUWFpUUFJQWNnQVVHb3V5QVFnQUVRZ2dGQkRCQVZJUUVqQUVFUWF5SUNKQUFnQVVFQUVPVVRJZ0ZCckpVUE5nSUFJQUVnQlJCN0VQd0VJZ00yQWdnZ0EwVUVRQ0FDUVl2dENTQUZFTVFCREFRTElBSkJFR29rQUNBSElBRkJzTHNnRUlBQkVJSUJJQWRCRkJBVklBVkJBQkRBRTBIMHZDQVFnQUVRZ2dFZ0IwRU1FQlVnQlVFQUVMOFRRZXk4SUJDQUFSQ0NBVUVJRUJVaEFpQUZFSHNhSUFKQkFCQ2pBU0lDUVpTa0R6WUNBQ0FDUVlEUUR6WUNBQ0FISUFKQi9Md2dFSUFCRUlJQlFRd1FGU0VESUFVUWV5RUJJd0JCSUdzaUFpUUFJQU5CQUJDakFTSURRWUNmRHpZQ0FDQURJQUVRL0FRaUJEWUNDQ0FFUlFSQUlBSkJFR3BCaE9rSklBSWdBUkFVRURVTUJBc2dBa0VnYWlRQUlBTWlBa0hvMEE4MkFnQWdCeUFDUVlTOUlCQ0FBUkNDQVVFSUVCVWhBaUFGRUhzYUlBSkJBQkNqQVNJQ1FhaWxEellDQUNBQ1FkRFJEellDQUNBSElBSkJqTDBnRUlBQkVJSUJRUWdRRlNFQ0lBVVFleG9nQWtFQUVLTUJJZ0pCa0tjUE5nSUFJQUpCdU5JUE5nSUFJQWNnQWtHY3ZTQVFnQUVRZ2dGQkNCQVZJUUlnQlJCN0dpQUNRUUFRb3dFaUFrR2NwZzgyQWdBZ0FrR2cwdzgyQWdBZ0J5QUNRWlM5SUJDQUFSQ0NBVUVJRUJVaEFpQUZFSHNhSUFKQkFCQ2pBU0lDUVlTb0R6WUNBQ0FDUVlqVUR6WUNBQ0FISUFKQnBMMGdFSUFCRUlJQlFSZ1FGVUVBRU9JVElnSkJyS0FQTmdJQUlBVVFleUVESXdCQk1Hc2lBU1FBQWtBQ1FDQURRYjdlQmhDaUFnUkFJQUZCS0dvZ0F4RDhCaUlFS0FJQUlnWVFqUVpGRFFFZ0JoQ01CaUFDUVFocVFmeVhDQ0FFS0FJQUVQb0dSUVJBSUFJZ0Fpd0FDRG9BQ0FzZ0FrRUpha0hjK0F3Z0JDZ0NBQkQ2QmtVRVFDQUNJQUlzQUFrNkFBa0xJQUpCREdwQjNQZ01FSFVnQkJEN0Jnc2dBVUV3YWlRQURBRUxJQUZCR0dwQmx1c0pJQUZCQ0dvZ0F4QVVFRFVNQkFzZ0J5QUNRYXk5SUJDQUFSQ0NBVUVjRUJWQkFCRGhFeUlDUWRTZ0R6WUNBQ0FGRUhzaEF5TUFRVEJySWdFa0FBSkFBa0FnQTBHKzNnWVFvZ0lFUUNBQlFTaHFJQU1RL0FZaUJDZ0NBQ0lHRUkwR1JRMEJJQVlRakFZZ0FrRUlha0g4bHdnZ0JDZ0NBQkNLQmhvZ0FrRU1ha0hjK0F3Z0JDZ0NBQkNLQmhvZ0FrRVFha0hjK0F3UWRTQUVFUHNHQ3lBQlFUQnFKQUFNQVFzZ0FVRVlha0hUNmdrZ0FVRUlhaUFERUJRUU5Rd0VDeUFISUFKQnRMMGdFSUFCRUlJQlFjZ0FFQlZCQUJEZ0V5SUNRZWpFRHpZQ0FDQUNRUXhxRUhRYUlBSkJHR29RZEJvZ0FrRWthaEIwR2lBQ1FUQnFFSFFhSUFVUWV5RUVJd0JCTUdzaUFTUUFBa0FnQVVFb2FpQUVFUHdHSWdNb0FnQWlCaENOQmdSQUlBWVFqQVlnQWtFSWFrSGMrQXdnQXlnQ0FCRDZCa1VFUUNBQ1FmOEFPZ0FJQ3lBQ1FRbHFRZHo0RENBREtBSUFFUG9HUlFSQUlBSkIvd0E2QUFrTElBSkJER3BCM1BnTUVIVWdBa0VZYWlJRVFkejREQkIxSUFKQkFEWUNQQ0FDUVNScVFkejREQkIxSUFKQk1HcEIzUGdNRUhVZ0FrRkFheUFCUVJocUlBUVFWQ0lHUVFBUTZRa2dBa0hFQUdvZ0JFRUFFT2tKSUFZUUR4b2dBeEQ3QmlBQlFUQnFKQUFNQVFzTUFnc2dCeUFDUWZpN0lCQ0FBUkNDQVVISUFCQVZRUUFRM3hNaUFrSFF4UTgyQWdBZ0FrRU1haEIwR2lBQ1FSaHFFSFFhSUFKQkpHb1FkQm9nQWtFd2FoQjBHaUFGRUhzaEJDTUFRVEJySWdFa0FBSkFJQUZCS0dvZ0JCRDhCaUlES0FJQUlnWVFqUVlFUUNBR0VJd0dJQUpCQ0dwQjNQZ01JQU1vQWdBUStnWkZCRUFnQWtIL0FEb0FDQXNnQWtFSmFrSGMrQXdnQXlnQ0FCRDZCa1VFUUNBQ1FmOEFPZ0FKQ3lBQ1FReHFRZHo0REJCMUlBSkJHR29pQkVIYytBd1FkU0FDUVFBMkFqd2dBa0VrYWtIYytBd1FkU0FDUVRCcVFkejREQkIxSUFKQlFHc2dBVUVZYWlBRUVGUWlCa0VCRU9rSklBSkJ4QUJxSUFSQkFSRHBDU0FHRUE4YUlBTVErd1lnQVVFd2FpUUFEQUVMREFJTElBY2dBa0dBdkNBUWdBRVFnZ0ZCekFBUUZVRUFFTjRUSWdKQnVNWVBOZ0lBSUFKQkVHb1FkQm9nQWtFY2FoRHpBUm9nQWtFb2FoRHpBUm9nQWtFMGFoRHpBUm9nQlJCN0lRUWpBRUhBQTJzaUFTUUFBa0FnQVVHNEEyb2dCQkQ4QmlJREtBSUFJZ1lRalFZRVFDQUdFSXdHSUFKQkNHcEIzUGdNSUFNb0FnQVFpZ1pGQkVBZ0FrSC8vLy8vQnpZQ0NBc2dBa0VNYWtIYytBd2dBeWdDQUJDS0JrVUVRQ0FDUWYvLy8vOEhOZ0lNQ3lBQ1FSQnFRZHo0REJCMUlBRkNBRGNEQ0NBQlFkejRERFlDQkNBQlFSQnFJQUZCQkdwQjVBQWdBVUVJYWlBREtBSUFFS0lESWdaQmYwWU5CU0FDUVJ4cUlBRkJFR29pQkNBR1FRSjBJQVJxRU5VRElRWWdBa0VBTmdKQUlBRkIzUGdNTmdJRUlBRkNBRGNEQ0NBRUlBRkJCR3BCNUFBZ0FVRUlhaUFES0FJQUVLSURJZ2xCZjBZTkJTQUNRU2hxSUFGQkVHb2lCQ0FKUVFKMElBUnFFTlVER2lBQlFkejRERFlDQkNBQlFnQTNBd2dnQkNBQlFRUnFRZVFBSUFGQkNHb2dBeWdDQUJDaUF5SUVRWDlHRFFVZ0FrRTBhaUFCUVJCcUlna2dCRUVDZENBSmFoRFZBeG9nQVVHb0Eyb2dCaENBQnlFRUlBSkJ4QUJxUVFBUTJRTWdBa0hJQUdwQkFCRFpBeUFFRUljQkdpQURFUHNHSUFGQndBTnFKQUFNQVFzTUF3c2dCeUFDUVlpOElCQ0FBUkNDQVVITUFCQVZRUUFRM1JNaUFrR2d4dzgyQWdBZ0FrRVFhaEIwR2lBQ1FSeHFFUE1CR2lBQ1FTaHFFUE1CR2lBQ1FUUnFFUE1CR2lBRkVIc2hCQ01BUWNBRGF5SUJKQUFDUUNBQlFiZ0RhaUFFRVB3R0lnTW9BZ0FpQmhDTkJnUkFJQVlRakFZZ0FrRUlha0hjK0F3Z0F5Z0NBQkNLQmtVRVFDQUNRZi8vLy84SE5nSUlDeUFDUVF4cVFkejREQ0FES0FJQUVJb0dSUVJBSUFKQi8vLy8vd2MyQWd3TElBSkJFR3BCM1BnTUVIVWdBVUlBTndNSUlBRkIzUGdNTmdJRUlBRkJFR29nQVVFRWFrSGtBQ0FCUVFocUlBTW9BZ0FRb2dNaUJrRi9SZzBGSUFKQkhHb2dBVUVRYWlJRUlBWkJBblFnQkdvUTFRTWhCaUFDUVFBMkFrQWdBVUhjK0F3MkFnUWdBVUlBTndNSUlBUWdBVUVFYWtIa0FDQUJRUWhxSUFNb0FnQVFvZ01pQ1VGL1JnMEZJQUpCS0dvZ0FVRVFhaUlFSUFsQkFuUWdCR29RMVFNYUlBRkIzUGdNTmdJRUlBRkNBRGNEQ0NBRUlBRkJCR3BCNUFBZ0FVRUlhaUFES0FJQUVLSURJZ1JCZjBZTkJTQUNRVFJxSUFGQkVHb2lDU0FFUVFKMElBbHFFTlVER2lBQlFhZ0RhaUFHRUlBSElRUWdBa0hFQUdwQkFSRFpBeUFDUWNnQWFrRUJFTmtESUFRUWh3RWFJQU1RK3dZZ0FVSEFBMm9rQUF3QkN3d0RDeUFISUFKQmtMd2dFSUFCRUlJQlFhQUVFQlZCQUJEY0V5SUdRUXhxSVFKQkFDRUVJd0JCSUdzaUNDUUFJQUlnQlJDOUV5SUJRYXdCYWlFRElBRkJCR29oQWdOQUlBSVFkRUVNYWlJQ0lBTkhEUUFMSUFGQnpBTnFJUUlEUUNBREVIUkJER29pQXlBQ1J3MEFDeUFCUWVRRGFpRURBMEFnQWhCMFFReHFJZ0lnQTBjTkFBc2dBeEIwR2lBQlFmQURhaEIwR2lBQlFmd0RhaEIwR2lBQlFZZ0VhaEIwR2lBSVFRaHFJQVZCQVJEQUV5SUNRYXpjRHpZQ0FDTUFRYkFCYXlJREpBQWdBMEdBQVdwQkFFRXNFSGthQTBBZ0JFRUhSZ1JBQWtCQkFDRUVBMEFnQkVFTVJnMEJJQU1nQkRZQ2tBRWdBMEVRYWlJSlFlUUFRWVRmQmlBRFFZQUJhaUlLSUFFb0FnQVFBaG9nQVNBRVFReHNhaUlMUWF3QmFpQUpFSFVnQ1VIa0FFR2R1Z1VnQ2lBQktBSUFFQUlhSUF0QnZBSnFJQWtRZFNBRVFRRnFJUVFNQUFzQUN3VWdBeUFFTmdLWUFTQURRUkJxSWdsQjVBQkJtdDhHSUFOQmdBRnFJZ29nQVNnQ0FCQUNHaUFCSUFSQkRHeHFJZ3RCQkdvZ0NSQjFJQWxCNUFCQnVyc0ZJQW9nQVNnQ0FCQUNHaUFMUWRnQWFpQUpFSFVnQkVFQmFpRUVEQUVMQ3lBRFFRRTJBb2dCSUFOQkVHb2lCRUhrQUVIQ3Z3SWdBMEdBQVdvaUNTQUJLQUlBRUFJYUlBRkJ6QU5xSUFRUWRTQURRUTAyQW9nQklBUkI1QUJCd3I4Q0lBa2dBU2dDQUJBQ0dpQUJRZGdEYWlBRUVIVWdBeUFCUWVNQUlBSVE2Z2tnQVVIa0Eyb2dBeENhQWlBREVBOGFJQU1nQVVIeUFDQUNFT29KSUFGQjhBTnFJQU1RbWdJZ0F4QVBHaUFESUFGQitBQWdBaERxQ1NBQlFmd0RhaUFERUpvQ0lBTVFEeG9nQXlBQlFkZ0FJQUlRNmdrZ0FVR0lCR29nQXhDYUFpQURFQThhSUFOQnNBRnFKQUFnQWhEZkRCb2dDRUVnYWlRQUlBWkJqTGtQTmdJSUlBWkJ3TGdQTmdJQUlBY2dCa0hZdXlBUWdBRVFnZ0ZCb0FRUUZVRUFFTnNUSWdaQkRHb2hBa0VBSVFRakFFRVFheUlKSkFBZ0FpQUZJZ0lRdlJNaUEwR3NBV29oQVNBRFFRUnFJUVVEUUNBRkVQTUJRUXhxSWdVZ0FVY05BQXNnQTBITUEyb2hCUU5BSUFFUTh3RkJER29pQVNBRlJ3MEFDeUFEUWVRRGFpRUJBMEFnQlJEekFVRU1haUlGSUFGSERRQUxJQUVROHdFYUlBTkI4QU5xRVBNQkdpQURRZndEYWhEekFSb2dBMEdJQkdvUTh3RWFJQWtnQWtFQkVMOFRJZ1ZCak4wUE5nSUFJd0JCMEFScklnRWtBQ0FCUWFBRWFrRUFRU3dRZVJvZ0FVSUFOd01ZQWtBRFFBSkFJQVJCQjBZRVFFRUFJUVFEUUFKQUlBUkJERVlFUUNBQlFRRTJBcWdFSUFGQnNBTnFJZ1JCNUFCQndyOENJQUZCb0FScUlBTW9BZ0FRQWhvZ0FVSUFOd01ZSUFFZ0JEWUNGQ0FCUVNCcUlBRkJGR3BCNUFBZ0FVRVlhaUFES0FJQUVLSURJZ2hCZjBjTkFRd0VDeUFCSUFRMkFyQUVJQUZCc0FOcUlnaEI1QUJCaE44R0lBRkJvQVJxSUFNb0FnQVFBaG9nQVVJQU53TVlJQUVnQ0RZQ0NDQUJRU0JxSUFGQkNHcEI1QUFnQVVFWWFpQURLQUlBRUtJRElncEJBV3BCQVUwTkF5QURJQVJCREd4cUlndEJyQUZxSUFGQklHb2lDQ0FLUVFKMElBaHFFTlVER2lBQlFiQURhaUlLUWVRQVFaMjZCU0FCUWFBRWFpQURLQUlBRUFJYUlBRkNBRGNER0NBQklBbzJBZ2dnQ0NBQlFRaHFRZVFBSUFGQkdHb2dBeWdDQUJDaUF5SUlRUUZxUVFGTkRRTWdDMEc4QW1vZ0FVRWdhaUlLSUFoQkFuUWdDbW9RMVFNYUlBUkJBV29oQkF3QkN3c2dBMEhNQTJvZ0FVRWdhaUlFSUFoQkFuUWdCR29RMVFNYUlBRkJEVFlDcUFRZ0FVR3dBMm9pQ0VIa0FFSEN2d0lnQVVHZ0JHb2dBeWdDQUJBQ0dpQUJRZ0EzQXhnZ0FTQUlOZ0lVSUFRZ0FVRVVha0hrQUNBQlFSaHFJQU1vQWdBUW9nTWlCRUYvUmcwQklBTkIyQU5xSUFGQklHb2lDQ0FFUVFKMElBaHFFTlVER2lBQlFRaHFJZ1FnQTBIakFDQUZFT3NKSUFOQjVBTnFJQVFRb1FNZ0JCQ0hBUm9nQkNBRFFmSUFJQVVRNndrZ0EwSHdBMm9nQkJDaEF5QUVFSWNCR2lBRUlBTkIrQUFnQlJEckNTQURRZndEYWlBRUVLRURJQVFRaHdFYUlBUWdBMEhZQUNBRkVPc0pJQU5CaUFScUlBUVFvUU1nQVVFSWFoQ0hBUm9nQVVIUUJHb2tBQXdEQ3lBQklBUTJBcmdFSUFGQnNBTnFJZ2hCNUFCQm10OEdJQUZCb0FScUlBTW9BZ0FRQWhvZ0FVSUFOd01ZSUFFZ0NEWUNDQ0FCUVNCcUlBRkJDR3BCNUFBZ0FVRVlhaUFES0FJQUVLSURJZ3BCQVdwQkFVME5BQ0FESUFSQkRHeHFJZ3RCQkdvZ0FVRWdhaUlJSUFwQkFuUWdDR29RMVFNYUlBRkJzQU5xSWdwQjVBQkJ1cnNGSUFGQm9BUnFJQU1vQWdBUUFob2dBVUlBTndNWUlBRWdDallDQ0NBSUlBRkJDR3BCNUFBZ0FVRVlhaUFES0FJQUVLSURJZ2hCQVdwQkFVME5BQ0FMUWRnQWFpQUJRU0JxSWdvZ0NFRUNkQ0FLYWhEVkF4b2dCRUVCYWlFRURBRUxDd3dFQ3lBRkVPa01HaUFKUVJCcUpBQWdCa0cwdXc4MkFnZ2dCa0hvdWc4MkFnQWdCeUFHUWVDN0lCQ0FBUkNDQVVFTUVCVkJBQkNqQVNJRlFRaHFJQUlRdmhNZ0JVSDB2QTgyQWdBZ0JVR1F2dzgyQWdBZ0J5QUZRZWk3SUJDQUFSQ0NBVUVNRUJWQkFCQ2pBU0lGUVFocUlBSVF2aE1nQlVHUXZnODJBZ0FnQlVHRXdBODJBZ0FnQnlBRlFmQzdJQkNBQVJDQ0FVRUlFQlZCQUJEYUV5SUZRZWpPRHpZQ0FDQUhJQVZCdUx3Z0VJQUJFSUlCUVFnUUZVRUFFTmtUSWdWQnRNOFBOZ0lBSUFjZ0JVSEF2Q0FRZ0FFUWdnRWdEaEFQR2lBTVFRaHFJZ1VnQnpZQ0FDQUhFTFFHSUExQkVHb2tBQUpBQWtBZ0FDZ0NBQ0lFSUFBZ0FDMEFDeUlDUVJoMFFSaDFJZ0ZCQUVnYklnY3RBQUFpQTBIZkFFWUVRQ0FBS0FJRUlnTWdBaUFCUVFCSUcwRUJSZzBDSUFjdEFBRkIzd0JIRFFFTUFnc2dCUkREQWlFQ0lBTkJHSFJCR0hVaUFVRUFUZ1IvSUFJb0FnZ2dBVUgvQVhGQkFuUnFMUUFBUVNCeFFRVjJCVUVBQzBVTkFTQUFLQUlFSVFNZ0FDZ0NBQ0VFSUFBdEFBc2lBaUVCQ3lBRUlBQWdBVUVZZEVFWWRVRUFTQ0lCR3lJQUlBTWdBaUFCRzJvaEFnTkFJQUFnQWtZaUVBMEJJQUF0QUFBaUFVSGZBRWNFUUNBRkVNTUNJUU1nQVVFWWRFRVlkU0lCUVFCT0JIOGdBeWdDQ0NBQlFmOEJjVUVDZEdvdEFBQkI0QUJ4UVFCSEJVRUFDMFVOQWdzZ0FFRUJhaUVBREFBTEFBc2dCUkJrQ3lBTVFSQnFKQUFnRUE4TElBRkJHR3BCcU9vSklBRkJDR29nQkJBVUVEVU1BUXNnQVVFUWFrR282Z2tnQVVHb0Eyb2dCQkFVRURVTEVHOEFDK1VCQVFkL0FuOGdBQ2dDQUNBQUlBQXRBQXNpQVVFWWRFRVlkVUVBU0NJREd5RUVJQUFvQWdRZ0FTQURHeUVCUVFCQmc0a0lFTndCSWdKRkRRQWFJQUVnQkNJQWFpSUZJUUVqQUVFUWF5SURKQUFDUUNBQ1FZT0pDR29pQWtHRGlRaEdCRUFnQUNFQkRBRUxJQUpCZzRrSWF5SUNJQUVnQUd0S0RRQWdBMEdEaVFndEFBQTZBQTlCQVNBQ2F5RUdBMzhnQVNBQWF5SUhJQUpJRFFFZ0FDQUdJQWRxSUFOQkQyb1E3eGdpQUVVTkFTQUFRWU9KQ0NBQ0VNc0xCSDhnQUVFQmFpRUFEQUVGSUFBTEN5RUJDeUFEUVJCcUpBQkJmeUFCSWdBZ0JHc2dBQ0FGUmhzTEMyY0NBWDhCZmlNQVFSQnJJZ01rQUNBRElBSTJBZ3dDUUNBQlFkQUZhaUFEUVF4cUVLVUpJZ0ZGQkVBZ0FFSUFOd0lBSUFCQkFEWUNFQ0FBUWdBM0FnZ01BUXNnQVNrQ0RDRUVJQUJCQURZQ0VDQUFJQVEzQWdnZ0FDQUVOd0lBQ3lBRFFSQnFKQUFMRlFBZ0FDQUJFTlVHSWdBZ0FTa0RNRGNETUNBQUM1TUJBUU4vSXdCQndBRnJJZ0lrQUNBQ0lBRTJBcndCSUFGRkJFQWdBa0VJYWtIVHRBVkI5d0JCQUNBQ1FhZ0JhaEFkSWdNUUZ5SUVRUmhxUWR1OENCQU9HaUFFRUJnZ0F4QWVDeUFCRUZjZ0FDZ0NDRUVCUVFCQmo4MElRZE8wQlVINEFCQkxJQUJCc0FKcUlBSkJ2QUZxRUxrWklBSWdBaWdDdkFFMkFnZ2dBRUVrYWlBQ1FRaHFFSlFESUFKQndBRnFKQUFMYVFFQ2Z5TUFRU0JySWdNa0FDQURRUWhxSUFBZ0FDZ0NCQ0FBS0FJQWEwRU1iVUVCYWhDYUR5QUFLQUlFSUFBb0FnQnJRUXh0SUFCQkNHb1FtUThpQWlnQ0NDQUJFTEFCR2lBQ0lBSW9BZ2hCREdvMkFnZ2dBQ0FDRVBrWUlBSVErQmdnQTBFZ2FpUUFDeFFBSUFBZ0FDZ0NCQ0FCRUxBQlFReHFOZ0lFQzU0RkFncC9BbjBqQUVFZ2F5SUlKQUFnQ0NBQk5nSVFJQWhCRUdvaENTTUFRUkJySWdVa0FDQUJLQUlBSVFNZ0NBSi9Ba0FnQUNnQ0JDSUNSUTBBSUFBb0FnQUNmeUFDUVFGcklBTnhJQUpwSWdaQkFVME5BQm9nQXlBQ0lBTkxEUUFhSUFNZ0FuQUxJZ2RCQW5ScUtBSUFJZ1JGRFFBZ0FrRUJheUVLSUFaQkFVc2hDd05BSUFRb0FnQWlCRVVOQVNBRElBUW9BZ1FpQmtjRVFBSkFJQXRGQkVBZ0JpQUtjU0VHREFFTElBSWdCa3NOQUNBR0lBSndJUVlMSUFZZ0IwY05BZ3NnQkVFSWFpQUJFTFlDUlEwQUMwRUFEQUVMUVNnUUZTRUJJQVVnQUVFSWFqWUNCQ0FGSUFFMkFnQWdBVUVJYWlBSktBSUFFRlpCQURZQ0hDQUZRUUU2QUFnZ0FVRUFOZ0lBSUFFZ0F6WUNCQUpBUVFBZ0FpQUFLQUlNUVFGcXN5SU1JQUFxQWhBaURTQUNzNVJlR3cwQUlBQWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJQkFuOGdEQ0FObFkwaURFTUFBSUJQWFNBTVF3QUFBQUJnY1FSQUlBeXBEQUVMUVFBTElnY2dBU0FIU3hzUTdCZ2dBQ2dDQkNJQ0lBSkJBV3R4UlFSQUlBSkJBV3NnQTNFaEJ3d0JDeUFDSUFOTEJFQWdBeUVIREFFTElBTWdBbkFoQndzQ1FDQUhRUUowSWdNZ0FDZ0NBR29vQWdBaUFVVUVRQ0FGS0FJQUlBQW9BZ2cyQWdBZ0FDQUZLQUlBTmdJSUlBQW9BZ0FnQTJvZ0FFRUlhallDQUNBRktBSUFJZ0VvQWdBaUEwVU5BU0FES0FJRUlRUUNRQ0FDSUFKQkFXc2lBM0ZGQkVBZ0F5QUVjU0VFREFFTElBSWdCRXNOQUNBRUlBSndJUVFMSUFBb0FnQWdCRUVDZEdvZ0FUWUNBQXdCQ3lBRktBSUFJQUVvQWdBMkFnQWdBU0FGS0FJQU5nSUFDeUFGS0FJQUlRUWdCVUVBTmdJQUlBQWdBQ2dDREVFQmFqWUNEQ0FGRUlBSlFRRUxPZ0FjSUFnZ0JEWUNHQ0FGUVJCcUpBQWdDQ2dDR0NFQUlBaEJJR29rQUNBQVFTUnFDNUVGQWdsL0FuMGpBRUVRYXlJSkpBQWpBRUVRYXlJR0pBQWdBaWdDQUNFRklBa0Nmd0pBSUFFb0FnUWlBMFVOQUNBQktBSUFBbjhnQTBFQmF5QUZjU0FEYVNJSVFRRk5EUUFhSUFVZ0F5QUZTdzBBR2lBRklBTndDeUlIUVFKMGFpZ0NBQ0lFUlEwQUlBTkJBV3NoQ2lBSVFRRkxJUXNEUUNBRUtBSUFJZ1JGRFFFZ0JTQUVLQUlFSWdoSEJFQUNRQ0FMUlFSQUlBZ2dDbkVoQ0F3QkN5QURJQWhMRFFBZ0NDQURjQ0VJQ3lBSElBaEhEUUlMSUFSQkNHb2dBaEMyQWtVTkFBdEJBQXdCQzBFa0VCVWhCQ0FHSUFGQkNHbzJBZ1FnQmlBRU5nSUFJQVJCQ0dvZ0FoQldHaUFHUVFFNkFBZ2dCRUVBTmdJQUlBUWdCVFlDQkFKQVFRQWdBeUFCS0FJTVFRRnFzeUlNSUFFcUFoQWlEU0FEczVSZUd3MEFJQUVnQXlBRFFRRnJjVUVBUnlBRFFRTkpjaUFEUVFGMGNpSUNBbjhnRENBTmxZMGlERU1BQUlCUFhTQU1Rd0FBQUFCZ2NRUkFJQXlwREFFTFFRQUxJZ2NnQWlBSFN4c1E3QmdnQVNnQ0JDSURJQU5CQVd0eFJRUkFJQU5CQVdzZ0JYRWhCd3dCQ3lBRElBVkxCRUFnQlNFSERBRUxJQVVnQTNBaEJ3c0NRQ0FIUVFKMElnVWdBU2dDQUdvb0FnQWlBa1VFUUNBR0tBSUFJQUVvQWdnMkFnQWdBU0FHS0FJQU5nSUlJQUVvQWdBZ0JXb2dBVUVJYWpZQ0FDQUdLQUlBSWdJb0FnQWlCVVVOQVNBRktBSUVJUVFDUUNBRElBTkJBV3NpQlhGRkJFQWdCQ0FGY1NFRURBRUxJQU1nQkVzTkFDQUVJQU53SVFRTElBRW9BZ0FnQkVFQ2RHb2dBallDQUF3QkN5QUdLQUlBSUFJb0FnQTJBZ0FnQWlBR0tBSUFOZ0lBQ3lBR0tBSUFJUVFnQmtFQU5nSUFJQUVnQVNnQ0RFRUJhallDRENBR0VJQUpRUUVMT2dBTUlBa2dCRFlDQ0NBR1FSQnFKQUFnQUNBSktBSUlOZ0lBSUFBZ0NTMEFERG9BQkNBSlFSQnFKQUFMa2c4Q0QzOENmU01BUVlBQmF5SUlKQUFnQ0NBQk5nSjhBa0FnQUMwQWxBTkZCRUJCQUNFRERBRUxBa0FDUUFKQUlBSW9BaEJCQ1dzT0FnRUFBd3NnQUVISUJHb2dBU0FJUWRBQWFrSHJ5QUVRRkNJQ0VNVUdEQUVMSUFoQjBBQnFJZ0lnQUNBQkVOUUhJQWdvQWxRaEJDQUlLQUpRSVFZZ0FoQ2tBaUFFSUFaR0RRRWdBRUhJQkdvZ0FTQUlRZEFBYWtIdHlBRVFGQ0lDRU1VR0N5QUNFQThhSUFORkJFQkJBQ0VESUFCQkFEb0FsQU1nQUVHb0JHcEIvTE1NRUJrZ0NFSDhBR29RTHhvTUFRc2dDRUh3QUdvZ0FFSElCR29nQVJEVEJ4QlVJUTBnQUVFZ2FpSUJFQndnRFNnQ0FDRUNJQWdnRFNnQ0JDQU5MUUFMSWdRZ0JFRVlkRUVZZFVFQVNDSUVHellDVENBSUlBSWdEU0FFR3pZQ1NDQUlJQWdwQTBnM0F3QWdDRUhRQUdvaUJDQUFRYWdDYWlBSUVKZ0RJQU1nQVNBREtBSUFLQUlJRVFFQUlRSWdBQ2dDSkVIWUFtb2hCeU1BUVJCcklnRWtBQ0FCSUFJMkFnZ2dBU0FBS0FJa0lnSWdCQkR6QWpZQ0JDTUFRUkJySWdZa0FDQUNFQndnQWlBQ0tBSU1RUUZxSWdVMkFnd2dCaUFGTmdJSUlBSkJqQUZxSWdVZ0JSREZBaUFDS0FJSUlBWW9BZ2dnQnlBQktBSUVJQUVvQWdnUWlSOGlBaEFvSUFVZ0JTZ0NHRUVCYWpZQ0dDQUdRUkJxSkFBZ0FVRVFhaVFBSUFBZ0NFRW9haUFFRUZZZ0FoRDVEaUFJUVFocUlBUVFWaUVDUVFBaEJpTUFRZEFBYXlJTEpBQWdDeUFETmdJRUlBQW9BcEFESVFVZ0MwRW9haUFMUVFocUlBSVFWaUFERUt3YUlBVkJ2QUpxSVFrZ0N5Z0NNQ0VFQWtBQ1FDQUZLQUxBQWlJQVJRMEFJQWtvQWdBQ2Z5QUFRUUZySUFSeElBQnBJZ05CQVUwTkFCb2dCQ0FBSUFSTERRQWFJQVFnQUhBTElnWkJBblJxS0FJQUlnRkZEUUFnQzBFd2FpRUhJQUJCQVdzaENpQURRUUZMSVF3RFFDQUJLQUlBSWdGRkRRRWdCQ0FCS0FJRUlnTkhCRUFDUUNBTVJRUkFJQU1nQ25FaEF3d0JDeUFBSUFOTERRQWdBeUFBY0NFREN5QURJQVpHRFFFTUFnc2dBU2dDREVFSWFpQUhFTFlDUlEwQUN5QUJLQUlNSVF3TUFRc2pBRUVnYXlJQkpBQWdCVUdnQW1vaUFCQy9BU0lNSUFFZ0FoQldJQXNvQWdRUXJCb2dBQ0FNRUNnZ0FDQUFLQUlZUVFGcU5nSVlJQUZCSUdva0FBSkFJQVVvQXNBQ0lnSkZEUUFnQ1NnQ0FBSi9JQUpCQVdzZ0JIRWdBbWtpQUVFQlRRMEFHaUFFSUFJZ0JFc05BQm9nQkNBQ2NBc2lCa0VDZEdvb0FnQWlBVVVOQUNBTVFRaHFJUWNnQWtFQmF5RUtJQUJCQVVzaEFBTkFJQUVvQWdBaUFVVU5BU0FFSUFFb0FnUWlBMGNFUUFKQUlBQkZCRUFnQXlBS2NTRUREQUVMSUFJZ0Ewc05BQ0FESUFKd0lRTUxJQU1nQmtjTkFnc2dBU2dDREVFSWFpQUhFTFlDUlEwQUN3d0JDMEVRRUJVaUNpQUVOZ0lFSUFvZ0JLMGdESzFDSUlhRU53SUlJQXBCQURZQ0FDQUZRY1FDYWlFUEFrQkJBQ0FDSUFVb0FzZ0NRUUZxc3lJVElBVXFBc3dDSWhRZ0FyT1VYaHNOQUFKQUFrQUNmMEVDSUFJZ0FrRUJhM0ZCQUVjZ0FrRURTWElnQWtFQmRISWlBQUovSUJNZ0ZKV05JaE5EQUFDQVQxMGdFME1BQUFBQVlIRUVRQ0FUcVF3QkMwRUFDeUlCSUFBZ0FVc2JJZ0JCQVVZTkFCb2dBQ0FBSUFCQkFXdHhSUTBBR2lBQUVIOExJZ2NnQlNnQ3dBSWlBRTBFUUNBQUlBZE5EUUlnQUVFRFNTRUNBbjhnQlNnQ3lBS3pJQVVxQXN3Q2xZMGlFME1BQUlCUFhTQVRRd0FBQUFCZ2NRUkFJQk9wREFFTFFRQUxJUUVnQUNBSElBSWdBR2xCQVV0eUJIOGdBUkIvQlNBQlFRRkJJQ0FCUVFGcloydDBJQUZCQWtrYkN5SUJJQUVnQjBrYklnZE5EUUlnQjBVTkFRc2dCMEdBZ0lDQUJFa0VRQ0FKSUFkQkFuUVFGUkJzSUFVZ0J6WUN3QUpCQUNFQkEwQWdBU0FIUmdSQUlBVW9Bc1FDSWdKRkRRUWdBaWdDQkNFR0FrQWdCMmtpQUVFQlRRUkFJQVlnQjBFQmEzRWhCZ3dCQ3lBR0lBZEpEUUFnQmlBSGNDRUdDeUFKS0FJQUlBWkJBblJxSUE4MkFnQWdCMEVCYXlFUklBQkJBVXNoRWdOQUlBSW9BZ0FpQUVVTkJTQUFLQUlFSVFNQ1FDQVNSUVJBSUFNZ0VYRWhBd3dCQ3lBRElBZEpEUUFnQXlBSGNDRURDd0pBSUFNZ0JrWU5BQ0FBSVFFZ0EwRUNkQ0lRSUFrb0FnQnFJZzRvQWdCRkJFQWdEaUFDTmdJQUlBTWhCZ3dCQ3dOQUFrQWdBU0lES0FJQUlnRkZCRUJCQUNFQkRBRUxJQUFvQWd4QkNHb2dBU2dDREVFSWFoQzJBaUVPSUFNb0FnQWhBU0FPRFFFTEN5QUNJQUUyQWdBZ0F5QUpLQUlBSUJCcUtBSUFLQUlBTmdJQUlBa29BZ0FnRUdvb0FnQWdBRFlDQUF3QkN5QUFJUUlNQUFzQUJTQUpLQUlBSUFGQkFuUnFRUUEyQWdBZ0FVRUJhaUVCREFFTEFBc0FDeEQ3QVFBTElBbEJBQkJzSUFWQkFEWUN3QUlMSUFVb0FzQUNJZ0lnQWtFQmF5SUFjVVVFUUNBQUlBUnhJUVlNQVFzZ0FpQUVTd1JBSUFRaEJnd0JDeUFFSUFKd0lRWUxBa0FDUUNBSktBSUFJQVpCQW5ScUlnQW9BZ0FpQVVVRVFDQUtJQVVvQXNRQ05nSUFJQVVnQ2pZQ3hBSWdBQ0FQTmdJQUlBb29BZ0FpQUVVTkFpQUFLQUlFSVFFQ1FDQUNJQUpCQVdzaUFIRkZCRUFnQUNBQmNTRUJEQUVMSUFFZ0Fra05BQ0FCSUFKd0lRRUxJQWtvQWdBZ0FVRUNkR29oQVF3QkN5QUtJQUVvQWdBMkFnQUxJQUVnQ2pZQ0FBc2dCU0FGS0FMSUFrRUJhallDeUFJTElBdEJLR29RK1FnYUlBdEIwQUJxSkFBZ0RDRURJQTBRRHhvTElBaEJnQUZxSkFBZ0F3dmxBZ0VEZnlNQVFUQnJJZ01rQUNBQ1FRQTJBZ0FnQXlBQUtBSzhCU0FCRUk4RUlnRTJBaXdnQTBFZ2FpQUFJQUVRMUFjZ0F5Z0NKQ0VGSUFNb0FpQWhBUU5BQWtBQ1FDQUJJQVZHQkVCQkFTRUJEQUVMQWtBZ0FTZ0NCQ0FCS0FJQUlnUnJRUWhIRFFBZ0JDZ0NBRUVHUncwQUlBUW9BZ1FpQkEwQ0lBQkJBRG9BbEFNZ0FFR29CR3BCbThNTEVCa2dBMEVzYWhBdlFmQ09CeEFaS0FJQUxRQUFRUUJISVFFTUFRc2dBRUVBT2dDVUF5QUFRYWdFYWtHYnd3c1FHU0FEUVN4cUVDOUI5SWdLRUJraEFBSkFJQUVvQWdBaUFpQUJLQUlFUmdSQUlBTkJFR3BCMzVnSUVCUWFEQUVMSUFOQkVHb2dBaWdDQUJCZkN5QUFJQU5CRUdvaUFoQk5RYSttQ2hBWklRQWdBeUFCS0FJRUlBRW9BZ0JyUVFKMU5nSU1JQUFnQTBFTWFoQXZRZURBQVJBWktBSUFMUUFBUVFCSElRRWdBaEFQR2dzZ0EwRWdhaENrQWlBRFFUQnFKQUFnQVE4TElBSWdCRFlDQUNBQlFReHFJUUVNQUFzQUM5a0JBUWQvSXdCQkVHc2lBaVFBSUFJZ0FUWUNBQUpBSUFCQkJHb2lCQ0FDRVBjSERRQWdBaUFCTmdJTUlBSWdCQ0FDUVF4cUVLc0ZJQUJCR0dvaEJTQUJLQUpZSVFZZ0FTZ0NWQ0VFQTBBZ0JDQUdSZ1JBSUFJZ0FUWUNBQ0FBUVN4cUlBSVEvUUlNQWdzZ0JDZ0NBQ0lEUVF4cUlRY2dBMEVRYWlFREEwQWdCeUFES0FJQUlnTkdCRUFnQkVFRWFpRUVEQUlGQWtBZ0F5Z0NGRUU1UncwQUlBSWdBMEVBRURnMkFnQWdCU0FDRU5BQktBSUFJZ2hGRFFBZ0FDQUlFSjRaQ3lBRFFRUnFJUU1NQVFzQUN3QUxBQXNnQWtFUWFpUUFDOW9JQWhKL0FuMGdBQzBBYlVIQUFIRkZCRUFqQUVFUWF5SU9KQUFnRGlBQU5nSUVRY1FBRUJVaEJDQU9LQUlFSVFVakFFRVFheUlQSkFBZ0JFSUFOd0lFSUFRZ0JUWUNBQ0FFUWdBM0FpUWdCRUlBTndJTUlBUkJIR29pQVVJQU53SUFJQVJCZ0lDQS9BTTJBaFFnQkNBQk5nSVlJQVJDQURjQ0xDQUVRZ0EzQWp3Z0JFS0FnSUQ4QXpjQ05DQVBJQVVvQWhnUXhSY2dEeWdDQkNFU0lBOG9BZ0FoRUFOL0lCQWdFa1lFZnlBUEVESWFJQTlCRUdva0FDQUVCU0FFSUJBb0FnQWlDeENDR0NJTUJFQWpBRUVRYXlJRkpBQWdDeEJnSVFFZ0JTQU1OZ0lFSUFVZ0FUWUNBQ01BUVJCcklnY2tBRUVBSVFFakFFRVFheUlKSkFBZ0JTZ0NBQ0VESUFjQ2Z3SkFJQVJCQkdvaUJpZ0NCQ0lDUlEwQUlBWW9BZ0FDZnlBQ1FRRnJJQU54SUFKcElncEJBVTBOQUJvZ0F5QUNJQU5MRFFBYUlBTWdBbkFMSWdGQkFuUnFLQUlBSWdoRkRRQWdBa0VCYXlFUklBcEJBVXNoQ2dOQUlBZ29BZ0FpQ0VVTkFTQURJQWdvQWdRaURVY0VRQUpBSUFwRkJFQWdEU0FSY1NFTkRBRUxJQUlnRFVzTkFDQU5JQUp3SVEwTElBRWdEVWNOQWdzZ0NDZ0NDQ0FEUncwQUMwRUFEQUVMSUFrZ0JpQURJQVVROXdzQ1FFRUFJQUlnQmlnQ0RFRUJhck1pRkNBR0tnSVFJaE1nQXJPVVhoc05BQ0FHSUFJZ0FrRUJhM0ZCQUVjZ0FrRURTWElnQWtFQmRISWlDZ0ovSUJRZ0U1V05JaE5EQUFDQVQxMGdFME1BQUFBQVlIRUVRQ0FUcVF3QkMwRUFDeUlCSUFFZ0Nra2JFTU1CSUFZb0FnUWlBaUFDUVFGcmNVVUVRQ0FDUVFGcklBTnhJUUVNQVFzZ0FpQURTd1JBSUFNaEFRd0JDeUFESUFKd0lRRUxBa0FnQVVFQ2RDSUJJQVlvQWdCcUtBSUFJZ05GQkVBZ0NTZ0NBQ0FHS0FJSU5nSUFJQVlnQ1NnQ0FEWUNDQ0FHS0FJQUlBRnFJQVpCQ0dvMkFnQWdDU2dDQUNJREtBSUFJZ0ZGRFFFZ0FTZ0NCQ0VJQWtBZ0FpQUNRUUZySWdGeFJRUkFJQUVnQ0hFaENBd0JDeUFDSUFoTERRQWdDQ0FDY0NFSUN5QUdLQUlBSUFoQkFuUnFJQU0yQWdBTUFRc2dDU2dDQUNBREtBSUFOZ0lBSUFNZ0NTZ0NBRFlDQUFzZ0NTZ0NBQ0VJSUFsQkFEWUNBQ0FHSUFZb0FneEJBV28yQWd3Z0NSQ0xBVUVCQ3pvQURDQUhJQWcyQWdnZ0NVRVFhaVFBSUFVZ0J5Z0NDRFlDQ0NBRklBY3RBQXc2QUF3Z0IwRVFhaVFBSUFVdEFBd0VRQ0FGSUFzUVlEWUNEQ0FGSUF3MkFnZ2pBRUVnYXlJSEpBQkJHQkFWSVFzZ0J5QUVRUmhxSWd4QkJHbzJBaFFnQ3lBRktRSUlOd0lRSUFkQkFUb0FHQUpBSUF3b0FnUWlDa1VFUUNBTVFRUnFJZ0VoQXd3QkN5QUxLQUlRSVJFRFFDQUtJZ0VvQWhBZ0VVc0VRQ0FCSWdNb0FnQWlDZzBCREFJTElBRW9BZ1FpQ2cwQUN5QUJRUVJxSVFNTElBY2dBVFlDRENBTUlBY29BZ3dnQXlBTEVQZ0NJQWRCQURZQ0VDQUhRUkJxRUlzQklBZEJJR29rQUFzZ0JVRVFhaVFBQ3lBUVFRUnFJUkFNQVFzTElRRWdEa0VBTmdJSUlBQkJ5QUZxSUFFUWdoa2dEa0VJYWhDQkdTQUFJQUFvQW14QmdJQUJjallDYkNBT1FSQnFKQUFMSUFBb0FzZ0JDNjd0Q2dNc2Z3SjlBWDRqQUVFZ2F5SWdKQUJCQkJBVklnRkJFaEM1Q0RZQ0FDQWdJQUUyQWhnZ0lDQUFRYkFFYWhEUkFTRUJJd0JCSUdzaUF5UUFJQ0FvQWhnb0FnQWdBMEVJYWlBQkVPc0ZJZ0lReFFvZ0FoQVdJQU5CSUdva0FDQUJFQllDUUNBQUxRQ1VBMFVOQUNBQUtBSVVJZ0VoQnlBQUtBSVlJQUZyUVFKMUlRUWdJQ2dDR0NnQ0FDRUJJd0JCd0FWcklnNGtBQ0FPUVpnRmFpQUJFTXNLSWhraEFnSi9RVEFRRlVFQVFTUVFlU0lCUWYvLy93RTJBaUFnQVVML2g0Q0E4QjgzQWhnZ0FVTC8vNENBOEI4M0FoQWdBVUwvLzUrQThQOC9Od0lJSUFGQy8vK0FnUEFmTndJQUlBRkNBRGNDSkNBQlFZQUNPd0VzSXdCQlFHb2lBeVFBSUE1Q0FEY0RFQ0FPSUFRMkFnd2dEaUFITmdJSUlBNGdBU0ljTmdJRUlBNGdHVFlDQUNBT1FnQTNBalFnRGtJQU53TklJQTVDQURjQ1hDQU9RZ0EzQTVBQklBNUNBRGNER0NBT1FnQTNBeUFnRGtJQU53TW9JQTVCZ0lDQS9BTTJBakFnRGtJQU53SThJQTVCZ0lDQS9BTTJBa1FnRGtJQU53TlFJQTVCZ0lDQS9BTTJBbGdnRGtJQU53SmtJQTVCZ0lDQS9BTTJBbXdnRGtFQU5nS1lBU0FPUVFBMkFvZ0JJQTVDQURjRGdBRWdEa0lBTndONElBNUNBRGNEY0NBT1FnQTNBNkFCSUE1Q0FEY0RxQUVnRGtJQU53T3dBU0FPUW9DQWdJQ0FnSURBUHpjRHVBRWdEa0lBTndQQUFTQU9RZ0EzQThnQklBNUNBRGNEMEFFZ0RrSGtBV29pQVVJQU53SUFJQTVDZ0lDQWdJQ0FnTUEvTndQWUFTQU9RZ0EzQXV3QklBNGdBVFlDNEFFZ0RrSUFOd0wwQVNBT1FZQ0FnUHdETmdMOEFTQU9RZ0EzQW93Q0lBNUNBRGNDaEFJZ0RrSUFOd09ZQWlBT1FZQ0FnUHdETmdLVUFpQU9RZ0EzQTZBQ0lBNUNBRGNDckFJZ0RrR0FnSUQ4QXpZQ3FBSWdEa0lBTndLMEFpQU9RZ0EzQThBQ0lBNUJnSUNBL0FNMkFyd0NJQTVDQURjRHlBSWdEa0lBTndMVUFpQU9RWUNBZ1B3RE5nTFFBaUFPUWdBM0F0d0NJQTVCZ0lDQS9BTTJBdVFDSUE1QjdBSnFJZ0ZDQURjQ0FDQU9RZmdDYWlJRlFnQTNBd0FnRGlBQk5nTG9BaUFPSUFVMkF2UUNJQTRnR1NnQ0FEWUNnQU1nRGlBWktBSUlOZ0tFQXlBT0lCa29BZ1EyQW9nRElCa29BZ3doQVNBT1FnQTNBN0FESUE1Qy8vLy8vL2YvLy8vL0FEY0RrQU1nRGlBQk5nS01BeUFPUWdBM0E3Z0RJQTVDQURjRG1BTWdEa0lBTndPZ0F5QU9RZ0EzQWFZRElBNUNBRGNDeEFNZ0RrR0FnSUQ4QXpZQ3dBTWdEa0lBTndMTUF5QU9RZ0EzQTlnRElBNUJnSUNBL0FNMkF0UURJQTVDQURjRDRBTWdEa0lBTndMc0F5QU9RWUNBZ1B3RE5nTG9BeUFPUWdBM0F2UURJQTVCZ0lDQS9BTTJBdndESUE1QkFEWUNtQVFnRGtJQU53T1FCQ0FPUWdBM0E0Z0VJQTVDQURjRGdBUWdEa0lBTndPZ0JDQU9RWUNBZ1B3RE5nS2NCQ0FPUWdBM0E2Z0VJQTVCZ0lDQS9BTTJBckFFSUE1Q0FEY0N0QVFnRGtJQU53SzhCQ0FPUVlDQWdQd0ROZ0xFQkNBT1FnQTNBOGdFSUE1Q0FEY0QwQVFnRGtHQWdJRDhBellDMkFRZ0RrSUFOd0xjQkNBT1FnQTNBdVFFSUE1QkFEWUNpQVVnRGtFQU5nS1FCU0FPUVFFMkFwUUZJQTVDZ0lDQS9BTTNBdXdFSUJ3RVFDQVpLQUlBSWdFUVIwVWdBVUVCUm5KRkJFQWdEa0VCT2dDbkF3c2dEZ0ovSUFGQkYwMEVRRUVBUVFFZ0FYUkJnb0NRQlhFTkFSb0xRUUVMT2dDdEF5QUVCRUFnQXlBWkVNc0tJUUVnQTBHSWxTQTJBaWdnQXlBRFFTaHFJZ1UyQWpnZ0JTQUJRUkJxSWdZUXJBSWdCUkFXSUFFZ0RpQUhJQVJCK1JaQitoWkJBQkMwQnhvZ0RpZ0NHQ0VGSXdCQklHc2lDaVFBQWtBQ1FDQUZJQTVCb0FGcUlnRW9BZ2dnQVNnQ0FDSUlhMEhNQUcxTEJFQWdCVUhZb2ZrYVR3MEJJQUVnQ2tFSWFpQUZJQUVvQWdRZ0NHdEJ6QUJ0SUFGQkNHb1F5eFVpQVJES0ZTQUJFTWtWQ3lBS1FTQnFKQUFNQVFzUUFRQUxJQTRvQWh3aEJTTUFRU0JySWdva0FBSkFBa0FnQlNBT1FmUUFhaUlCS0FJSUlBRW9BZ0FpQ0d0QnhBTnRTd1JBSUFWQnZmdkRCRThOQVNBQklBcEJDR29nQlNBQktBSUVJQWhyUWNRRGJTQUJRUWhxRU1nVklnRVF4eFVnQVJER0ZRc2dDa0VnYWlRQURBRUxFQUVBQ3lBR0VCWUxJQTRvQWhSQmdJZ0VUd1JBSUE1QmdZS0VDRFlBcVFNTElBTVFpQmNnRGtINEJHb2lBU0FERUlnSklBTVFGaUFPS0FJRUxRQXRCRUFnRGlBT1FRaHFJQTVCREdvUWpCY2hCU0FEUVFBMkFnQWdEa0h3QkdvZ0JSQ09EaUFERU1nS0lBTWdEaWdDOEFRMkFnUWdBMEdzc2hNMkFnQWdBeUFETmdJUUlBRWdBeENJQ1NBREVCWUxJQU5CUUdza0FDQU9EQUVMUWNPMENVSDRxd0pCckFGQnkvc0FFQUFBQ3lFRkl3QkJrQVZySWhJa0FFRUlFQlVpQVNBRU5nSUVJQUVnQnpZQ0FDQVNJQUUyQXZBQkFrQWdBU0FTUWV3QmFoRDZGZ1JBSUJKQkFEWUM2QUVnRWtJQU53UGdBU0FTUWNBQ2FrSGMrQXdRRkNFRElCSWdFaWdDNkFFMkFsZ2dFaUFTS1FQZ0FUY0RVQ0FTUWRBRGFpQVNRZEFBYWlBQ1FSQnFJQU5CZkJEU0JTSUNRY1BNQnhBT0dpQUNLQUs4QVNFQklBSVFFU0FERUE4YURBRUxJQUVnRWlnQzdBRWdFa0hJQVdvUW14Y0VRQ0FTUVFBMkFzQUJJQkpDQURjRHVBRWdFa0hBQW1wQjNQZ01FQlFoQXlBU0lCSW9Bc0FCTmdKSUlCSWdFaWtEdUFFM0EwQWdFa0hRQTJvZ0VrRkFheUFDUVJCcUlBTkJmQkRTQlNJQ1FlZkxCeEFPR2lBQ0tBSzhBU0VCSUFJUUVTQURFQThhREFFTElCSW9Bc3dCSUFJb0FnQVFodzVMQkVBZ0VrRUFOZ0t3QVNBU1FnQTNBNmdCSUJKQndBSnFRZHo0REJBVUlRUWdFaUFTS0FLd0FUWUNFQ0FTSUJJcEE2Z0JOd01JSUJKQjBBTnFJQkpCQ0dvZ0FrRVFhaUFFUVhBUTBnVWlBMEdIaWdvUURob2dBeUFTTFFET0FSQWhHaUFEUWZ5WENCQU9HaUFESUJJdEFNMEJFQ0VhSUFOQm9zd0pFQTRhSUFNQ2YwR3pqQWNoQVFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBSW9BZ0FPR3hzQUFRWUlDZ3NNRFE0UEFnTUVCUWNKRUJFU0V4UVZGaGNZR1JvTFFmR21DQXdiQzBHRGhnY01HZ3RCaHFFSURCa0xRZDZpQ0F3WUMwSHdvUWdNRnd0QjBLTUlEQllMUWJ1aENBd1ZDMEdYb3dnTUZBdEIwYUFJREJNTFFhV2lDQXdTQzBISnBnZ01FUXRCMGFVSURCQUxRWUdsQ0F3UEMwR3hwQWdNRGd0QmlhUUlEQTBMUVppQkJ3d01DMEh5OWdZTUN3dEJvYVlJREFvTFFiZTJDVUhQbHdKQndRQkJ5TU1DRUFBQUMwSC84d1lNQ0F0QithVUlEQWNMUWIveEJnd0dDMEdwcFFnTUJRdEJtUEVHREFRTFFkbWtDQXdEQzBHS3RnbEJ6NWNDUWRBQVFjakRBaEFBQUF0QjNQZ01JUUVMSUFFTEVBNGFJQU5CL0pjSUVBNGFJQU1vQXJ3QklRRWdBeEFSSUFRUUR4b01BUXNnRWlnQzFBRWdCU2dDQkNnQ0lFc0VRQ0FTUVFBMkFxQUJJQkpDQURjRG1BRWdFa0hBQW1wQjNQZ01FQlFoQXlBU0lCSW9BcUFCTmdJZ0lCSWdFaWtEbUFFM0F4Z2dFa0hRQTJvZ0VrRVlhaUFDUVJCcUlBTkJmQkRTQlNJQ1FhM0tDaEFPR2lBQ0lBVW9BZ1JCSUdvUXN3Y2lBVUg4bHdnUURob2dBU2dDdkFFaEFTQUNFQkVnQXhBUEdnd0JDeUFTUWZBQWFpQUNFTXNLSVFFZ0VrRzg4QjgyQXRBRElCSWdFa0hRQTJvaUF6WUM0QU1nQXlBQlFSQnFJaU1RckFJZ0F4QVdJQUVnQlNBSElBUkJBRUd2RUVFQUVMUUhHaUFDSUFVZ0J5QUVRUUJCc0JCQkFCQzBCeUlCUlFSQUlCSkJBRFlDYUNBU1FnQTNBMkFnQlNnQ3BBRWhFeUFTUWN3Q2FpRVZJQVVvQXFBQklRcEJBQ0VEQTBBQ1FBSkFJQW9nRTBjRVFDQVNJQW8yQXZnQklBb3ZBUjRpQVVFUFJ3MEJJQXBCQVJBYklRUWdFaWdDK0FGQkFCQWJJUkFnRWtHd0Ftb2lBU0FTS0FMNEFVRUNFTVVGSUJKQndBSnFJZ1lRVlNBR1FRQTJBaFFnQmtJQU53SU1JQVlnQVJEZ0FpQVNRUUEyQXFBQ0lCSkNBRGNEbUFKQkF5RUJBMEFnRWlnQytBRWlBaWdDRUNBQ0tBSU1JZ2RyUVFSMUlBRk5CRUFqQUVFUWF5SUpKQUFnQ1NBUU5nSUlJQWtnQkRZQ0RDQUZRY0FCYWlBSlFReHFJZzhRM2dKQkFDRUVJd0JCSUdzaURTUUFJQTBnRHpZQ0VDQU5RUkJxSVJZakFFRVFheUlCSkFBZ0NTZ0NEQ0VDSUEwQ2Z3SkFJQVZCeEFOcUlnZ29BZ1FpQjBVTkFDQUlLQUlBQW44Z0IwRUJheUFDY1NBSGFTSU1RUUZORFFBYUlBSWdBaUFIU1EwQUdpQUNJQWR3Q3lJRVFRSjBhaWdDQUNJVVJRMEFJQWRCQVdzaEZ5QU1RUUZMSVJzRFFDQVVLQUlBSWhSRkRRRWdBaUFVS0FJRUlneEhCRUFDUUNBYlJRUkFJQXdnRjNFaERBd0JDeUFISUF4TERRQWdEQ0FIY0NFTUN5QUVJQXhIRFFJTElCUW9BZ2dnQWtjTkFBdEJBQXdCQ3lBQklBZ2dBaUFXRVBVV0FrQkJBQ0FISUFnb0FneEJBV3F6SWkwZ0NDb0NFQ0l1SUFlemxGNGJEUUFnQ0NBSElBZEJBV3R4UVFCSElBZEJBMGx5SUFkQkFYUnlJZ1FDZnlBdElDNlZqU0l0UXdBQWdFOWRJQzFEQUFBQUFHQnhCRUFnTGFrTUFRdEJBQXNpQnlBRUlBZExHeEREQVNBSUtBSUVJZ2NnQjBFQmEzRkZCRUFnQjBFQmF5QUNjU0VFREFFTElBSWdCMGtFUUNBQ0lRUU1BUXNnQWlBSGNDRUVDd0pBSUFSQkFuUWlCQ0FJS0FJQWFpZ0NBQ0lDUlFSQUlBRW9BZ0FnQ0NnQ0NEWUNBQ0FJSUFFb0FnQTJBZ2dnQ0NnQ0FDQUVhaUFJUVFocU5nSUFJQUVvQWdBaUFpZ0NBQ0lFUlEwQklBUW9BZ1FoRkFKQUlBY2dCMEVCYXlJRWNVVUVRQ0FFSUJSeElSUU1BUXNnQnlBVVN3MEFJQlFnQjNBaEZBc2dDQ2dDQUNBVVFRSjBhaUFDTmdJQURBRUxJQUVvQWdBZ0FpZ0NBRFlDQUNBQ0lBRW9BZ0EyQWdBTElBRW9BZ0FoRkNBQlFRQTJBZ0FnQ0NBSUtBSU1RUUZxTmdJTUlBRW9BZ0FoQWlBQlFRQTJBZ0FnQWdSQUlBRXRBQWdFUUNBQ1FReHFFSU1PQ3lBQ0JFQWdBaEFmQ3d0QkFRczZBQndnRFNBVU5nSVlJQUZCRUdva0FDQU5LQUlZSVFFZ0RVRWdhaVFBSUFrZ0FVRU1haUFKUVFocUVOVUZRUUFoQWlNQVFTQnJJZzBrQUNBTklBODJBaEFnRFVFUWFpRVBJd0JCRUdzaUFTUUFJQWtvQWd3aEJDQU5BbjhDUUNBRlFjd0JhaUlJS0FJRUlnZEZEUUFnQ0NnQ0FBSi9JQWRCQVdzZ0JIRWdCMmtpREVFQlRRMEFHaUFFSUFRZ0Iwa05BQm9nQkNBSGNBc2lBa0VDZEdvb0FnQWlGRVVOQUNBSFFRRnJJUllnREVFQlN5RVhBMEFnRkNnQ0FDSVVSUTBCSUFRZ0ZDZ0NCQ0lNUndSQUFrQWdGMFVFUUNBTUlCWnhJUXdNQVFzZ0J5QU1TdzBBSUF3Z0IzQWhEQXNnQWlBTVJ3MENDeUFVS0FJSUlBUkhEUUFMUVFBTUFRc2dBU0FJSUFRZ0R4RDBDQUpBUVFBZ0J5QUlLQUlNUVFGcXN5SXRJQWdxQWhBaUxpQUhzNVJlR3cwQUlBZ2dCeUFIUVFGcmNVRUFSeUFIUVFOSmNpQUhRUUYwY2lJQ0FuOGdMU0F1bFkwaUxVTUFBSUJQWFNBdFF3QUFBQUJnY1FSQUlDMnBEQUVMUVFBTElnY2dBaUFIU3hzUXd3RWdDQ2dDQkNJSElBZEJBV3R4UlFSQUlBZEJBV3NnQkhFaEFnd0JDeUFFSUFkSkJFQWdCQ0VDREFFTElBUWdCM0FoQWdzQ1FDQUNRUUowSWdRZ0NDZ0NBR29vQWdBaUFrVUVRQ0FCS0FJQUlBZ29BZ2cyQWdBZ0NDQUJLQUlBTmdJSUlBZ29BZ0FnQkdvZ0NFRUlhallDQUNBQktBSUFJZ0lvQWdBaUJFVU5BU0FFS0FJRUlSUUNRQ0FISUFkQkFXc2lCSEZGQkVBZ0JDQVVjU0VVREFFTElBY2dGRXNOQUNBVUlBZHdJUlFMSUFnb0FnQWdGRUVDZEdvZ0FqWUNBQXdCQ3lBQktBSUFJQUlvQWdBMkFnQWdBaUFCS0FJQU5nSUFDeUFCS0FJQUlSUWdBVUVBTmdJQUlBZ2dDQ2dDREVFQmFqWUNEQ0FCS0FJQUlRSWdBVUVBTmdJQUlBSUVRQ0FCTFFBSUJFQWdBa0VNYWhEMEZnc2dBZ1JBSUFJUUh3c0xRUUVMT2dBY0lBMGdGRFlDR0NBQlFSQnFKQUFnRFNnQ0dDRUJJQTFCSUdva0FBSkFJQUZCREdvaUFpZ0NCQ0FDS0FJSVNRUkFJQUlnQWlnQ0JDQUdFUE1XUVJocU5nSUVEQUVMSXdCQklHc2lDQ1FBSUFoQkNHb2hBU0FDS0FJRUlBSW9BZ0JyUVJodFFRRnFJZ1JCcTlXcTFRQlBCRUFRQVFBTFFhclZxdFVBSUFJb0FnZ2dBaWdDQUd0QkdHMGlCMEVCZENJTUlBUWdCQ0FNU1JzZ0IwSFZxdFVxVHhzaEJDQUNLQUlFSUFJb0FnQnJRUmh0SVF4QkFDRUhJQUZCQURZQ0RDQUJJQUpCQ0dvMkFoQWdCQVJBSUFSQnE5V3ExUUJQQkVBUSt3RUFDeUFFUVJoc0VCVWhCd3NnQVNBSE5nSUFJQUVnQnlBTVFSaHNhaUlNTmdJSUlBRWdCeUFFUVJoc2FqWUNEQ0FCSUF3MkFnUWdBU2dDQ0NBR0VQTVdHaUFCSUFFb0FnaEJHR28yQWdnZ0FpZ0NBQ0VNSUFJb0FnUWhCQU5BSUFRZ0RFY0VRQ0FCS0FJRVFSaHJJZ2NnQkVFWWF5SUVLUUlBTndJQUlBY2dCQ2dDQ0RZQ0NDQUVFRlVnQjBFTWFpQUVRUXhxRUtVQ0dpQUJJQUVvQWdSQkdHczJBZ1FNQVFzTElBSW9BZ0FoQkNBQ0lBRW9BZ1EyQWdBZ0FTQUVOZ0lFSUFJb0FnUWhCQ0FDSUFFb0FnZzJBZ1FnQVNBRU5nSUlJQUlvQWdnaEJDQUNJQUVvQWd3MkFnZ2dBU0FFTmdJTUlBRWdBU2dDQkRZQ0FDQUJLQUlFSVFRRFFDQUVJQUVvQWdnaUIwY0VRQ0FCSUFkQkdHc2lCellDQ0NBSEVJUU9HZ3dCQ3dzZ0FTZ0NBQ0lCQkVBZ0FSQWZDeUFJUVNCcUpBQUxJQUlvQWdRYUlBbEJFR29rQUFKL0FrQWdFaWdDWkNJRUlCSW9BbUFpQVVZTkFBTkFJQUVnQkVZTkFTQUJLQUlBSWdKQkFCQWJJUWNnRWtHSUFtb2lDQ0FDUVFJUXhRVWdFa0d3QW1vZ0NCRHlBeUFISUJCR2NTSUhCRUFnRWtIUUEyb2lBaUFGUVhJZ0VpZ0MrQUVRRUNBQ1FiLzdCeEFPR2lBU0tBS01CU0VESUFJUUVRc2dBVUVFYWlFQklCSkJpQUpxRUE4YUlBZEZEUUFMUVFBTUFRc2dFU0FRUVg1eFFmUXBSbkloRVNBTElCQkJreWxyUVFKSmNpRUxJQkpCNEFCcUlCSkIrQUZxRU04QlFRRUxJUUVnRWtHWUFtb1FNaG9nQmhDRURob2dFa0d3QW1vUUR4b2dBVVVFUUNBRElRRU1CUXNnRWlnQytBRXZBUjRoQVF3REJTQVNJQUlvQWdBZ0J5QUJRUVIwYWk4QkFFRUNkR29vQWdBMkF0QURJQlVnRWtIUUEyb1Ezd0lnQVVFQmFpRUJEQUVMQUFzQUN3SkFJQVVvQXBBRFFmLy8vLzhIUndSQUlBVW9BcFFEUWYvLy8vOEhSdzBCQ3lBU1FkQURhaUlESUFWQmRFRUFFQkFnQTBHOTB3Y1FEaG9nRWlnQ2pBVWhBU0FERUJFTUFnc2dCUzBBb0FNRVFDQVNRZEFEYWlJRElBVkJkRUVBRUJBZ0EwR1k5d2NRRGhvZ0VpZ0NqQVVoQVNBREVCRU1BZ3NDUUNBRlFZQUJha0dPS2hCb1JRMEFJQVVvQXB3RERRQWdFa0hRQTJvaUF5QUZRWFJCQUJBUUlBTkJsZFFIRUE0YUlCSW9Bb3dGSVFFZ0F4QVJEQUlMSUFzZ0VYRkJBWEVFUUNBU1FkQURhaUlESUFWQmRFRUFFQkFnRWtIQUFtb2lBaUFGUWI0M0VEY2dBeUFDRUJJYUlBTkI4T1VIRUE0YUlCSW9Bb3dGSVFFZ0FoQVBHaUFERUJFTUFnc2dCU2dDTEFSQUlCSkJ3QUpxRUlnRElRUWdCU2dDS0NFQlFRQWhDaUFTUWJBQ2FpSUlJZ0pCQURZQ0NDQUNRZ0EzQWdBZ0FTRURBMEFnQXdSQUlBcEJBV29oQ2lBREtBSUFJUU1NQVFzTElBb0VRQ0FDSUFvUXp3VWdBaWdDQkNFREEwQWdBUVJBSUFNZ0FTZ0NDRFlDQUNBRFFRUnFJUU1nQVNnQ0FDRUJEQUVMQ3lBQ0lBTTJBZ1FMSUJJZ0JUWUNvQUlnRWlBRk5nSXdJQkpCOS9BTU5nS3NBaUFTSUFSQkNHbzJBcWdDSUJKQkFEWUNuQUlnRWtHeEVEWUNtQUlnRWlBU0tRT29BamNET0NBU0lCSXBBNWdDTndNb0lCSkIwQU5xSVFNZ0VpZ0NzQUloQVNBU0tBSzBBaUVKSUJKQktHb2hCeU1BUVJCcklnSWtBQU5BSUFFZ0NVY0VRQ01BUVJCcklnb2tBQ0FLSUFFMkFnZ2dCeWdDQUNFR0lBSWdCeWdDQ0NBSEtBSUVJZ3RCQVhWcUlnd2dDaWdDQ0NnQ0FDQUxRUUZ4Qkg4Z0RDZ0NBQ0FHYWlnQ0FBVWdCZ3NSQlFBZ0NrRVFhaVFBSUJJb0FqZ2dBaEFTR2lBU0tBSThJZ29FUUNBU0tBSTRJQW9RRGhvTElBRkJCR29oQVNBQ0VBOGFEQUVMQ3lBRElCSXBBamczQWdBZ0FrRVFhaVFBSUJKQmlBSnFJZ0lnQkVFTWFoQkNJQU1nQlVGMlFRQVFFQ0FEUWZmMURCQU9HaUFTUWZnQmFpSUhJQUpCQUNBU0tBS01BaUFTTEFDVEFpSUJRZjhCY1NBQlFRQklHMEVCYXhEdkNpQURJQWNRRWhvZ0VpZ0NqQVVoQVNBSEVBOGFJQU1RRVNBQ0VBOGFJQWdRTWhvZ0JCQzdBaG9nQVEwQ0N5TUFRU0JySWdNa0FDQUZFS1lLSWdFb0FnUWhCQ0FCS0FJQUlRRURRQUpBSUFFZ0JFWUVRQ0FGRUtZS0lnRW9BZ1FoQkNBQktBSUFJUUVNQVFzZ0EwRUFOZ0lZSUFOQ0FEY0RFQ0FESUFFUXFBb2lBallDRENBQ0JFQWdBMEVRYWlBRFFReHFFTThCQ3dOQUlBTW9BaFFpQWlBREtBSVFSd1JBSUFKQkJHc2lCeWdDQUNFQ0lBTWdCellDRkNBQ0xRQXNEUUVnQWtFQk9nQXNJQUlvQWlBaEJ5QUNLQUljSVFvRFFDQUhJQXBHRFFJZ0F5QUtLQUlBTmdJSUlBcEJCR29oQ2lBRFFSQnFJQU5CQ0dvUXp3RU1BQXNBQ3dzZ0FVSEVBMm9oQVNBRFFSQnFFRElhREFFTEN3TkFBa0FDUUNBQklBUkhCRUFnQTBFQU5nSVlJQU5DQURjREVDQURJQUVRcUFvaUFqWUNEQ0FDQkVBZ0EwRVFhaUFEUVF4cUVNOEJDd05BSUFNb0FoUWlBaUFES0FJUVJnMENJQUpCQkdzaUJ5Z0NBQ0VDSUFNZ0J6WUNGQ0FDTFFBdERRQWdBa0VCT2dBdElBSW9Ba2doQnlBQ0tBSkVJUW9EUUNBSElBcEdEUUVnQXlBS0tBSUFOZ0lJSUFwQkJHb2hDaUFEUVJCcUlBTkJDR29RendFTUFBc0FDd0FMSUFOQklHb2tBQXdCQ3lBQlFjUURhaUVCSUFOQkVHb1FNaG9NQVFzTFFRQWhDa0VBSVFNQ1FBTkFBa0FnQlNnQ3BBRWdCU2dDb0FFaUFXdEJ6QUJ0SUFOTkJFQURRQ0FGS0FLa0FTQUZLQUtnQVNJRGEwSE1BRzBnQ2tzRVFDTUFRZkFCYXlJQkpBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBTWdDa0hNQUd4cUlnZ3ZBUjRpQTBFQlJnUi9Ba0FDUUNBRklBZ29BaVFRblFjRVFDQUJRVEJxSWdjZ0JVRjJJQWdRRUNBSFFkV1NCQkFPR2d3QkN5QUZMUUNBQVVFQ2NVVU5BU0FGSUFnb0FpUVE4UUpGRFFFZ0JTQUlLQUlrRUlFRkRRRWdBVUV3YWlJSElBVkJkaUFJRUJBZ0IwSDdzd0VRRGhvTElBRW9BdXdCSVFJZ0J4QVJJQUlOQ1FzZ0NDOEJIZ1VnQXd0Qi8vOERjU0lEUWZRcGEwRUNUd1JBQWtBZ0EwR0VLbXNPQWdJREFBc2dBMEgrSzJzT0FnTUVCUXNnQlNBSUtBSTRLQUlBRUo4QlFRUWdBVUV3YWtHNmd3TVFGQ0lERU1jRUlBTVFEeG9nQlNBSUtBSTRLQUlBRUo4QklRSWdBVUhnalNBMkFnZ2dBU0FCUVFocUlnTTJBaGdnQWtHc0Eyb2dBeEROQVNBREVCWU1CZ3NnQlNBSUtBSTRLQUlBRUo4QlFRUWdBVUV3YWtINmdnTVFGQ0lERU1jRUlBTVFEeG9NQlFzZ0NDZ0NKQ0VESUFVZ0NDZ0NPQ2dDQUJDZkFVRUVJQUZCTUdwQndJSURFQlFpQWhESEJDQUNFQThhSUFVZ0F4Qy9BZzBFSUFGQk1Hb2lBeUFGUVhJZ0NCQVFJQU5CNXB3TUVBNGFJQU1nQ0M4QkhoQXBFQTRhSUFFb0F1d0JJUUlnQXhBUkRBVUxJQVVnQ0VFQUVDWWlBd1JBSUFVZ0F4Qy9BZzBFQ3lBQlFUQnFJZ2NnQlVGMklBZ1FFQ0FIUWF5T0FoQU9HaUFCS0FMc0FTRUNEQUlMQWtBZ0JTQUlLQUlrSWdNUXV4VU5BQ0FGSUFNUXh3RU5BQ0FCUVRCcUlnY2dCVUYySUFnUUVDQUhRZEdKQkJBT0dpQUJLQUxzQVNFQ0RBSUxJQVVnQ0VFQ0VDWWdBMGNFUUNBQlFUQnFJZ2NnQlVGMklBZ1FFQ0FIUWVDNUNoQU9HaUFCS0FMc0FTRUNEQUlMSUFVZ0NFRURFQ1lnQTBZTkFpQUJRVEJxSWdjZ0JVRjJJQWdRRUNBSFFaTzVDaEFPR2lBQktBTHNBU0VDREFFTElBTkJ3Q2RIRFFFZ0JTQUlJQWhCQWhBYklnTVF5ZzBpQWcwQ0lBRkJNR29nQlNBREVOMEJBa0FnQVMwQU1VVU5BQ0FCS0FJMElnTkJBMFlnQTBFQlJuSU5BQ0FCUVRCcUlnY2dCVUZ5SUFnUUVDQUJRU0JxSWdNZ0JVR3NKQkEzSUFjZ0F4QVNHaUFIUWVyWEJCQU9HaUFCS0FMc0FTRUNJQU1RRHhvTUFRc2dCU0FJS0FJa0VMb1ZEUUVnQVVFd2FpSUhJQVZCY2lBSUVCQWdCMEh5OFFFUURob2dBU2dDN0FFaEFnc2dCeEFSSUFJTkFRdEJBQ0VDQ3lBQlFmQUJhaVFBSUFJaUFRMEhJd0JCNEFGcklnRWtBQUpBQWtBQ1FBSkFBa0FnQ0M4QkhrRUdhdzREQUFNQkF3c0NRQ0FGSUFoQkFCQWJJZ1FRSUNJREJFQWdBeThCSGtFZVJnMEJDeUFCUVNCcUlnSWdCVUYySUFnUUVDQUNRYzNZQ3hBT0dpQUJRUkJxSWdZZ0JTQUVFQ29nQWlBR0VCSWFJQUpCeU80SEVBNGFJQUVvQXR3QklRUU1BZ3NnQ0VFQkVCc2lCQ0FES0FJRUlBTW9BZ0JyUVFKMVFRSnJTUTBDSUFGQklHb2lBaUFGUVhZZ0NCQVFJQUpCcjhnTEVBNGFJQUZCRUdvaUJpQUZJQVFRS2lBQ0lBWVFFaG9nQWtHczJBc1FEaG9nQVNBRklBTW9BaWdRS2lBQ0lBRVFFaG9nQWtIMm1BY1FEaG9nQVNnQzNBRWhCQ0FCRUE4YURBRUxJQVVnQ0VFQUVCc2lBeEFnSWdJRVFDQUNMd0VlUVFkR0RRSUxJQUZCSUdvaUFpQUZRWFlnQ0JBUUlBSkI3c1FMRUE0YUlBRkJFR29pQmlBRklBTVFLaUFDSUFZUUVob2dBa0c1NkFjUURob2dBU2dDM0FFaEJBc2dCaEFQR2lBQ0VCRWdCQTBCQzBFQUlRUUxJQUZCNEFGcUpBQWdCQ0lCRFFjakFFSHdBV3NpQ3lRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUlJZ012QVI0aUJFSEhBR3NPQlFBQ0F3VUVBUXNnQTBFQkVCc2hBU0FGSUFOQkFCQWJFQ0FpQWtVRVFDQUxRVEJxSWdFZ0JVRjJJQU1RRUNBQlFhejNCQkFPR2lBTEtBTHNBU0VHSUFFUUVRd0tDeUFGS0FJQUtBSUFFRWRGSUFGQmZuRkJDRWR5UlFSQUlBdEJNR29pQWlBRlFYWWdBeEFRSUF0QklHb2lCQ0FGUWIwa0VEY2dBaUFFRUJJYUlBSkJwbzBKRUE0YUlBdEJFR29pQnlBRklBRVF2d01nQWlBSEVCSWFJQUpCdlpzSEVBNGFJQXNvQXV3QklRWWdCeEFQR2lBRUVBOGFJQUlRRVF3S0N5QUJFTzRXQkVBZ0MwRXdhaUlCSUFWQmRpQURFQkFnQVVHbWd3VVFEaG9nQ3lnQzdBRWhCaUFCRUJFTUNnc2dBaThCSGlJRVFja0FSZzBLUVFFZ0FYUkJzQUZ4UlNBQlFRZExja1VFUUNBTFFUQnFJZ0lnQlVGMklBTVFFQ0FMUVNCcUlnUWdCU0FCRUw4RElBSWdCQkFTR2lBQ1FmR1pBUkFPR2lBTEtBTHNBU0VHSUFRUUR4b2dBaEFSREFvTElBc2dBallDTENBTElBTTJBaWdnQ3lBRk5nSWdJQXNnQVRZQ0pBSkFBa0FDUUFKQUFrQUNRQ0FCUVFGckRpc0FBUUVNREFJTUFRRUJBd3dMQ3dzTEN3UUxDd3NFQ3dzTERBd01Dd1FMQkFRRURBc0xEQXdNREF3RUJRc2dCRUV3YTBFRFNRMExJQXRCTUdvaUFTQUxRU0JxUVFBUXZnTWdBVUh0MUFBUURob2dDeWdDN0FFaEJpQUJFQkVNRGdzZ0JFRWVSZzBLSUF0Qk1Hb2lBU0FMUVNCcVFRQVF2Z01nQVVITGpnUVFEaG9nQ3lnQzdBRWhCaUFCRUJFTURRc2dCRUVjYXlJRVFRUk5RUUJCQVNBRWRFRVRjUnNOQ1NBTFFUQnFJZ0VnQzBFZ2FrRUFFTDRESUFGQnRmOERFQTRhSUFzb0F1d0JJUVlnQVJBUkRBd0xBa0FnQkVFN1JnMEFJQVFRb3dJTkFDQUxRVEJxSWdFZ0JVRnlJQU1RRUNBQlFmeUhBUkFPR2lBTEtBTHNBU0VHSUFFUUVRd01Dd0pBSUFVdEFJQUJRUUp4UlEwQUlBTkJBaEFiUVJsSERRQWdBaThCSGhDakFnMEpJQXRCTUdvaUFTQUxRU0JxUVFBUXZnTWdBVUgveHdNUURob2dDeWdDN0FFaEJpQUJFQkVNREFzZ0FpOEJIa0U3UmcwSUlBdEJNR29pQVNBTFFTQnFRUUFRdmdNZ0FVR1d1d1FRRGhvZ0N5Z0M3QUVoQmlBQkVCRU1Dd3NnQkVFN1JnMEhJQXRCTUdvaUFTQUxRU0JxUVFBUXZnTWdBVUdXdXdRUURob2dDeWdDN0FFaEJpQUJFQkVNQ2dzZ0FVSHJLV3RCQWtrTkJRd0dDeUFFUWN3Q1J3MEtJQU5CQVJBYkVPNFdEUWtnQzBFd2FpSUJJQVZCZGlBREVCQWdBVUhwZ3dVUURob2dDeWdDN0FFaEJpQUJFQkVNQ0FzQ1FDQUZJQU5CQUJBYklnSVFJQ0lCQkVBZ0FTOEJIa0VlUmcwQkN5QUxRVEJxSWdFZ0JVRjJJQU1RRUNBQlFjalBDeEFPR2lBTFFTQnFJZ1FnQlNBQ0VDb2dBU0FFRUJJYUlBRkJ5TzRIRUE0YUlBc29BdXdCSVFZZ0JCQVBHaUFCRUJFTUNBc2dBMEVCRUJzaEJDQUVJQUVvQWdRZ0FTZ0NBR3RCQW5VaUIwRUNheUlHVHdSQUlBdEJNR29pQVNBRlFYWWdBeEFRSUFGQnI4UUpFQTRhSUFFZ0JCQWhHaUFCUWJiRkN4QU9HaUFMUVNCcUlnUWdCU0FDRUNvZ0FTQUVFQklhSUFGQmhPUUpFQTRhSUFFZ0JoQWhHaUFCUWNuYkNSQU9HaUFCSUFkQkEyc1FJUm9nQVVIOGx3Z1FEaG9nQ3lnQzdBRWhCaUFFRUE4YUlBRVFFUXdJQ3dKQUFrQWdBMEVDRUJzaUFVRUJhdzR2QVFFQkNnb0JDZ0VCQVFvS0Nnb0tDZ29LQ2dFS0FRb0tDZ0VCQVFvS0NnRUJBUW9LQ2dFQkFRRUJBUUVCQVFFQUN5QUJRZlVpYTBFQ1NTQUJRZXNwYTBFQ1NYSWdBVUdDTEVaeURRQWdBVUcwS1VjTkNRc2dDMEV3YWlJQ0lBVkJkaUFERUJBZ0MwRWdhaUlFSUFVZ0FSQy9BeUFDSUFRUUVob2dBa0dibWdFUURob2dDeWdDN0FFaEJpQUVFQThhSUFJUUVRd0hDeUFGSUFOQkFCQWJFQ0FpQVNnQ1FDRUVJQUVvQWtRaEFnTkFJQUlnQkVZTkNBSkFJQVFvQWdBaUJ5OEJIaUlCUWNjQWF5SUdRUVJOUVFCQkFTQUdkRUVaY1JzZ0FVRUZSaUFCUWN3Q1JuSnlSUVJBSUFjUXpRVkZEUUVMSUFSQkNHb2hCQXdCQ3dzZ0MwRXdhaUlCSUFWQmRpQURFQkFnQVVIZXdBa1FEaG9nQVVHTDdBd1FEaG9nQVVHMTN3TVFEaG9nQ3lnQzdBRWhCaUFCRUJFTUJnc0NRQ0FGSUFOQkFCQWJJZ1FRSUNJQlJRMEFJQUV2QVI1QnlRQkhEUUJCQVNFRUEwQWdCRUVCYWlJQklBTW9BaEFnQXlnQ0RHdEJCSFZQRFFnZ0F5QUVFQnNoQWlBRElBRVFHeUVIQWtBZ0JTQUNFQ0FpQVFSQUlBRXZBUjVCSGtZTkFRc2dDMEV3YWlJQklBVkJkaUFERUJBZ0FVR2R6d3NRRGhvZ0MwRWdhaUlFSUFVZ0FoQXFJQUVnQkJBU0dpQUJRY2p1QnhBT0dpQUxLQUxzQVNFR0lBUVFEeG9nQVJBUkRBZ0xJQVJCQW1vaEJDQUhJQUVvQWdRZ0FTZ0NBR3RCQW5VaUJrRUNheUlKU1EwQUN5QUxRVEJxSWdFZ0JVRjJJQU1RRUNBQlFhL0VDUkFPR2lBQklBY1FJUm9nQVVHQ3hRc1FEaG9nQzBFZ2FpSUVJQVVnQWhBcUlBRWdCQkFTR2lBQlFZVGtDUkFPR2lBQklBa1FJUm9nQVVISjJ3a1FEaG9nQVNBR1FRTnJFQ0VhSUFGQi9KY0lFQTRhSUFzb0F1d0JJUVlnQkJBUEdpQUJFQkVNQmdzZ0MwRXdhaUlCSUFWQmRpQURFQkFnQVVISnlBc1FEaG9nQzBFZ2FpSUNJQVVnQkJBcUlBRWdBaEFTR2lBQlFlTE9CeEFPR2lBTEtBTHNBU0VHSUFJUUR4b2dBUkFSREFVTEFrQWdCU0FEUVFBUUd5SUVFQ0FpQVVVTkFDQUJMd0VlUWNrQVJ3MEFRUUVoQkFOQUlBUWdBeWdDRUNBREtBSU1hMEVFZFU4TkJ5QUZJQU1nQkJBYklnY1FJQ0lCQkVBZ0JFRUJhaUVFSUFFdkFSNUJ5UUJIRFFFTEN5QUxRVEJxSWdFZ0JVRjJJQU1RRUNBQlFaM0pDeEFPR2lBTFFTQnFJZ0lnQlNBSEVDb2dBU0FDRUJJYUlBc29BdXdCSVFZZ0FoQVBHaUFCRUJFTUJRc2dDMEV3YWlJQklBVkJkaUFERUJBZ0FVSDJ5QXNRRGhvZ0MwRWdhaUlDSUFVZ0JCQXFJQUVnQWhBU0dpQUJRZUxPQnhBT0dpQUxLQUxzQVNFR0lBSVFEeG9nQVJBUkRBUUxBa0FnQkVFM2F3NEZBQUlDQWdBQ0N5QUZJQUlvQWlRUWNFRWdSZzBBSUF0Qk1Hb2lBU0FMUVNCcVFRQVF2Z01nQVVINy93TVFEaG9nQ3lnQzdBRWhCaUFCRUJFTUF3c2dCU2dDQUNnQ0FCQkhSUTBEUVFJaEJBSkFJQVVnQWlnQ0pCQWdJZ2RGRFFBZ0J5Z0NFQ0FIS0FJTWEwRWhTUTBBSUFkQkFSQWJJUVFMQWtBQ1FBSkFBa0FDUUFKQUFrQWdBVUVOYXc0V0JRVUtCUVVLQ2dvS0Nnb0tDZ29LQ2dvQkFRSURBd0FMSUFGQkswWU5BeUFFUVFGR0lBRkJwU2xIY2cwSklBdEJNR29pQVNBTFFTQnFRZmswRUw0RElBRkJpQ3dRRGhvZ0N5Z0M3QUVoQmlBQkVCRU1DQXNnQkVIUUtXc2lCMEVQVFEwRURBWUxJQVJCQTBZTkJ5QUxRVEJxSWdFZ0MwRWdha0VBRUw0RElBRkJ2WTRCRUE0YUlBc29BdXdCSVFZZ0FSQVJEQVlMQWtBQ1FDQUVEZ01JQVFnQUN5QUVRUXhHRFFjTElBdEJNR29pQVNBTFFTQnFRZHN5RUw0RElBRkI0WTRCRUE0YUlBc29BdXdCSVFZZ0FSQVJEQVVMSUFSRkRRVWdDMEV3YWlJQklBdEJJR3BCbGpRUXZnTWdBVUdwandFUURob2dDeWdDN0FFaEJpQUJFQkVNQkFzZ0JFRjljVUVCUmcwRUlBdEJNR29pQVNBTFFTQnFRYjRrRUw0RElBRkJ0Q3NRRGhvZ0N5Z0M3QUVoQmlBQkVCRU1Bd3RCQVNBSGRFR0RtQU54UlEwQkRBTUxJQXRCTUdvaUFTQUxRU0JxUVFBUXZnTWdBVUdRM1FJUURob2dDeWdDN0FFaEJpQUJFQkVNQVFzQ1FBSkFJQVJCQVdzT0F3TUJBd0FMSUFSQmlTcEdEUUlMSUF0Qk1Hb2lCQ0FGUVhZZ0FoQVFJQXRCRUdvaUFpQUZRWkEwRURjZ0JDQUNFQklhSUFzZ0JTQUJFTDhESUFRZ0N4QVNHaUFFUWRhUEFSQU9HaUFMS0FMc0FTRUdJQXNRRHhvZ0FoQVBHaUFFRUJFTElBWU5BZ3NnQXk4QkhpRUVDMEVBSVFZQ1FBSkFBa0FDUUFKQUlBUkIvLzhEY1NJQlFjY0FhdzRGQVFJRkF3UUFDeUFCUWN3Q1J3MEVDeUFES0FJQUlnRW9BZ2doQWlBQktBSUVJUVFnQzBFQU5nSW9JQXRDQURjRElDQURLQUlFSWdjZ0FXdEJEVThFUUNBTFFTQnFRUUFnQVVFTWFpQUhFTklLQ3lBTElBSTJBakFnQzBFd2FpSUJRUVJ5SUF0QklHb2lBaEN3QVNFSElBdEJmellDUUNBRklBUWdBUkR0RmlBSEVESWFJQUlRTWhvTUF3c2dBeWdDQUNJQktBSU1JUUlnQVNnQ0NDRUVJQUVvQWdRaEJ5QUxRUUEyQWlnZ0MwSUFOd01nSUFNb0FnUWlDU0FCYTBFUlR3UkFJQXRCSUdwQkFDQUJRUkJxSUFrUTBnb0xJQXNnQWpZQ01DQUxRVEJxSWdGQkJISWdDMEVnYWlJQ0VMQUJJUWtnQ3lBRU5nSkFJQVVnQnlBQkVPMFdJQWtRTWhvZ0FoQXlHZ3dDQ3lBRklBTW9BZ0FvQWdRUTNnRWlFMEVFYWlFVVFRSWhCQU5BSUFRZ0F5Z0NCQ0FES0FJQUlnRnJRUUoxVHcwQ0lBRWdCRUVDZEdvb0FnQWhBU0FUS0FJQUlRY2pBRUVRYXlJUEpBQWdEeUFCTmdJTUlBVkI2QUpxSUE5QkRHb1F0d2dpQ1VFRWFpRUJBMEFnQnlBVVJ3UkFJQWRCRUdvaEVTTUFRUkJySWhBa0FDTUFRU0JySWd3a0FDQVFBbjhnREVFY2FpRU5JQXhCR0dvaEFnSkFBa0FDUUNBQklBbEJCR29pRlVjRVFDQVJJQUZCRUdvaUZoRE1CVVVOQVFzZ0FTRUNJQUVnQ1NnQ0FFY0VRQ0FCRU5ZWElnSkJFR29nRVJETUJVVU5BZ3NnQVNnQ0FFVUVRQ0FOSUFFMkFnQWdBUXdFQ3lBTklBSTJBZ0FnQWtFRWFnd0RDeUFXSUJFUXpBVkZEUUVnRlNBQkVKOFhJZ0pIQkVBZ0VTQUNRUkJxRU13RlJRMEJDeUFCS0FJRVJRUkFJQTBnQVRZQ0FDQUJRUVJxREFNTElBMGdBallDQUNBQ0RBSUxJQWtnRFNBUkVPc1dEQUVMSUEwZ0FUWUNBQ0FDSUFFMkFnQWdBZ3NpRFNnQ0FDSUNCSDlCQUFVZ0RFRUlhaUlWSUFrZ0VSRHFGaUFKSUF3b0Fod2dEU0FNS0FJSUVQZ0NJQXdvQWdnaEFpQU1RUUEyQWdnZ0ZSRHBGa0VCQ3pvQURDQVFJQUkyQWdnZ0RFRWdhaVFBSUJBb0FnZ2FJQkJCRUdva0FDQUhFRXdoQnd3QkN3c2dEMEVRYWlRQUlBUkJBV29oQkF3QUN3QUxJQVVnQXlnQ0FDZ0NCQkRlQVNJQ1FRUnFJUWxCQWlFRUEwQWdCRUVCY2lJSElBTW9BZ1FnQXlnQ0FDSUJhMEVDZFU4TkFTQUJJQVJCQW5ScUtBSUFJUXdnQVNBSFFRSjBhaWdDQUNFUklBSW9BZ0FoQnlNQVFTQnJJZ0VrQUNBQklBdzJBaHdnQVVFSWFrRUVjaUVNSUFWQjZBSnFJQUZCSEdvUXR3Z2hEUU5BSUFjZ0NVWUVRQ0FCUVNCcUpBQUZJQUZCQ0dvZ0IwRVFhaEMwQWlFUUlBRWdFVFlDR0NBQklBMGdFQkRzRmlBTUVESWFJQWNRVENFSERBRUxDeUFFUVFKcUlRUU1BQXNBQ3lBTFFmQUJhaVFBSUFZaUFRMEhBbjlCQUNFQkFrQUNRQUpBQWtBZ0F5OEJIa0VLYXc0REFBRUNBd3NqQUVIUUFXc2lBaVFBQWtBZ0JTSUJLQUlVUWYrSEJFMEVRQ0FDUWNBQmFpSUVJQU5CR0dvUWhnNENmd0pBSUFSQjNRQVF4d29RcGdrTkFDQUNRY0FCYWtFUkVNY0tFS1lKRFFBZ0FrSEFBV3BCNlFBUXh3b1FwZ2tOQUVFQkRBRUxJQUlnQVVGd0lBTVFFQ0FDSUFKQndBRnFFQklhSUFKQm9za0hFQTRhSUFJb0Fyd0JJUUVnQWhBUlFRQUxJUVFnQWtIQUFXb1FEeG9nQkVVTkFRdEJBQ0VCQ3lBQ1FkQUJhaVFBSUFFTUF3dEJBQ0VDSXdCQjBBRnJJZ0VrQUFKQUFrQWdCU2dDRkVHQWlnUkxEUUFnQlVHUUFXcEJ5d0FRYUEwQUlBRkJ3QUZxSWdRZ0EwRUJFTVVGSUFRUWxCa2lCRVVFUUNBQklBVkJjaUFERUJBZ0FVSEN6d2NRRGhvZ0FTZ0N2QUVoQWlBQkVCRUxJQUZCd0FGcUVBOGFJQVJGRFFFTFFRQWhBZ3NnQVVIUUFXb2tBQ0FDREFJTEl3QkJrQUpySWdZa0FDQURJZ0VvQWlRaENTQUJLQUlRSVFJZ0FTZ0NJQ0VFSUFFb0Fnd2hCeUFCS0FJQUlnc29BZ3doRENBR0lBc29BaEFpQ3pZQ2pBSWdCaUFFTmdLSUFpQUdJQXcyQW9RQ0lBWWdCVFlDZ0FJZ0FpQUhhMEVFZFNFSEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRVFRRnJEZ0lBQVFJTFFRQWhBZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDdzVURmdBQUFBQUJBQUVBQUFBQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQUFBd1FGQmdBQkFRQUJBUUFCQVFBVkFBQUFCd2tJQ2dvTEN3c01EZzRPRFEwUEVCRVNBQUFBRXdFQkFSUVVGQUFBQUJjZ0N5QUZJQWtRcmdGRkRSZEJCQ0VFUVFRZ0J5QUhRUVJOR3lFSEEwQWdCQ0FIUmcwZ0lBVWdBU0FFRUNZaEN5QUVRUUZxSVFRZ0NTQUxSZzBBQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR05ud1FRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3WUN5QUZJQWtReHdGRkJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCc1BvREVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1HQXNnQzBGK2NVSEtBRVlnQlNBSkVENGlDMEVnUjNFaERFRUVJUVJCQkNBSElBZEJCRTBiSVJFZ0JTQUpFRVVoQ1FOQUlBUWdFVVlOSHdKQUlBVWdBU0FFRUNZaUJ3UkFJQVVnQnhESEFRMEJDeUFHUVVCcklnSWdCVUZ5SUFFUUVDQUdRVEJxSWdRZ0JrR0FBbW9RTGlBQ0lBUVFFaG9nQWtIdHRRd1FEaG9nQWtIcWxRRVFEaG9nQmlnQy9BRWhBU0FFRUE4YUlBSVFFUXdaQ3lBRklBY1FSU0FKUndSQUlBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQk1Hb2lCQ0FHUVlBQ2FoQXVJQUlnQkJBU0dpQUNRZTIxREJBT0dpQUNRY1RsQ1JBT0dpQUNRZnlwQkJBT0dpQUdLQUw4QVNFQklBUVFEeG9nQWhBUkRCa0xJQVVnQnhBK0lBdEhCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQnJlWUpFQTRhSUFKQi9La0VFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNR1FzZ0JFRUJhaUVFSUF4RkRRQUxJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWJhbUNoQU9HaUFDUWFlRkFSQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQmNMSUFVZ0NSQ3VBVVVFUUNBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR2U5QU1RRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3WEN5QUZJQWtRUGlJRVFSQkdJQVJCSUVaeVJRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUVo3MEF4QU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQmNMUVFRaEJFRUVJQWNnQjBFRVRSc2hCd05BSUFRZ0IwWU5IaUFGSUFFZ0JCQW1JUXNnQkVFQmFpRUVJQWtnQzBZTkFBc2dCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCalo4RUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1GZ3NnQlNBQlFRUVFKaUVDSUFaQkFEWUNHQ0FHUVFBMkFnZ2dCa0VBTmdJc0lBWkJBRFlDS0FKQUlBVWdBaUFHUVJocUlBWkJDR29nQmtFc2FpQUdRU2hxRUtjREJFQWdCaWdDR0NBR0tBSUlSZzBCQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrSDlIaEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREJZTElBa2dCaWdDS0VZTkd5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0hqZ1FvUURob2dBa0g4cVFRUURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd1ZDeUFHUVFBMkFoZ2dCa0VBTmdJSUlBWkJBRFlDTENBR1FRQTJBaWdDUUNBRklBa2dCa0VZYWlBR1FRaHFJQVpCTEdvZ0JrRW9haENuQXdSQUlBWW9BaGdnQmlnQ0NFWU5BUXNnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQjBoNFFEaG9nQmlnQy9BRWhBU0FFRUE4YUlBSVFFUXdWQ3lBRklBRkJCQkFtSUFsR0RSb2dCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCeWFNRUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1GQXNnQlNBSkVLNEJSUVJBSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FlVDBBeEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREJRTElBVWdBVUVFRUNZaEFpQUZJQUZCQlJBbUlRUWdBaUFKUndSQUlBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQk1Hb2lCQ0FHUVlBQ2FoQXVJQUlnQkJBU0dpQUNRZTIxREJBT0dpQUNRY21qQkJBT0dpQUdLQUw4QVNFQklBUVFEeG9nQWhBUkRCUUxJQVpCQURZQ0NDQUZJQVFnQmtFSWFpQUdRUmhxRUlnQ1JRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWJ2Y0FSQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQlFMSUFZb0FnZ2dDVVlOR1NBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrSGVvZ1FRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3VEMwRUFJUVFnQmtFQU5nSTRJQVpDQURjRE1BSkFBa0FDUUNBRklBa2dCa0V3YWhDL0RVVU5BQ0FHS0FJMElBWW9BakFpQW10QkNFY05BQ0FGSUFJb0FnQVFyZ0ZGRFFBZ0JpZ0NNQ0lDS0FJRUlBSW9BZ0JHRFFFTElBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQkdHb2lCeUFHUVlBQ2FoQXVJQUlnQnhBU0dpQUNRZTIxREJBT0dpQUNRYjJaQ2hBT0dpQUNRY09hQVJBT0dpQUdLQUw4QVNFQklBY1FEeG9nQWhBUkRBRUxJQVVnQVVFRUVDWWdCaWdDTUNnQ0FFWUVRRUVCSVFRTUFRc2dCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRVlhaUlISUFaQmdBSnFFQzRnQWlBSEVCSWFJQUpCN2JVTUVBNGFJQUpCenEwS0VBNGFJQUpCcU8wQUVBNGFJQVlvQXZ3QklRRWdCeEFQR2lBQ0VCRUxJQVpCTUdvUU1ocEJBQ0VDSUFSRkRSSU1HUXNnQlNBSkVLNEJSUVJBSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FlVDBBeEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREJJTElBVWdBVUVFRUNZaEFpQUZJQUZCQlJBbUlRUWdBaUFKUndSQUlBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQk1Hb2lCQ0FHUVlBQ2FoQXVJQUlnQkJBU0dpQUNRZTIxREJBT0dpQUNRY21qQkJBT0dpQUdLQUw4QVNFQklBUVFEeG9nQWhBUkRCSUxJQVpCQURZQ0NDQUZJQVFnQmtFSWFpQUdRUmhxRUlnQ1JRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWNuYkFSQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQklMQWtBQ1FDQUZJQVlvQWdnUXh3RkZEUUFnQlMwQWtBRkJDSEZGQkVBZ0JTQUdLQUlJRUQ1QklFY05BU0FGTFFDUUFVRUljVVVOQWdzZ0JTQUdLQUlJRUQ1QkVFWU5BU0FGSUFZb0FnZ1FQa0VnUmcwQkN5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0hVM3dvUURob2dBa0h1ekFsQjVNd0pJQVVwQTVBQlFnaURVQnNRRGhvZ0FrRzMrd01RRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3U0N5QUZJQWtRUlNBRklBWW9BZ2dRUlVZTkZ5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0hleWdrUURob2dBa0h2bkFRUURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd1JDeUFGSUFrUXJnRkZCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQjVQUURFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNRVFzZ0JTQUJRUVFRSmlFSElBVWdBVUVGRUNZaEJDQUhJQWxIQkVBZ0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkJ5YU1FRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTUVRc2dCU0FFRU1jQlJRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWNuK0NSQU9HaUFDUVpEK0F4QU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQkVMSUFVZ0NSQkZJQVVnQkJCRlJnMFhJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWEzS0NSQU9HaUFDUWUrY0JCQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQkFMUVFBaEJDQUdRUUEyQWpnZ0JrSUFOd013QWtBQ1FBSkFJQVVnQ1NBR1FUQnFFTDhOUlEwQUlBWW9BalFnQmlnQ01DSUNhMEVJUncwQUlBVWdBaWdDQUJDdUFVVU5BQ0FGSUFZb0FqQW9BZ1FReHdGRkRRQUNRQ0FGTFFDUUFVRUljVVVFUUNBRklBWW9BakFvQWdRUVBrRWdSdzBDSUFVdEFKQUJRUWh4UlEwQkN5QUZJQVlvQWpBb0FnUVFQa0VRUmcwQUlBVWdCaWdDTUNnQ0JCQStRU0JIRFFFTElBVWdCaWdDTUNnQ0FCQkZJQVVnQmlnQ01DZ0NCQkJGUmcwQkN5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FSaHFJZ2NnQmtHQUFtb1FMaUFDSUFjUUVob2dBa0h0dFF3UURob2dBa0hCNXd3UURob2dBa0dLM3dvUURob2dBa0h1ekFsQjVNd0pJQVVwQTVBQlFnaURVQnNRRGhvZ0FrR2lyZ29RRGhvZ0FrSDgrd0VRRGhvZ0JpZ0MvQUVoQVNBSEVBOGFJQUlRRVF3QkN5QUZJQUZCQkJBbUlBWW9BakFvQWdCR0JFQkJBU0VFREFFTElBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQkdHb2lCeUFHUVlBQ2FoQXVJQUlnQnhBU0dpQUNRZTIxREJBT0dpQUNRZnI4Q1JBT0dpQUNRYVh0QUJBT0dpQUdLQUw4QVNFQklBY1FEeG9nQWhBUkN5QUdRVEJxRURJYVFRQWhBaUFFUlEwUERCWUxBa0FnQlNBSkVGQUVRQ0FGSUFrUVBrRWdSZzBCQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrSHJnUVFRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3UEN3SkFJQVVnQlNBQlFRUVFKaUlFRUk0QlJRMEFJQVVnQkJCRlFRUkhEUUFnQlNBRUVENUJJRVlORmdzZ0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkIydlVHRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTURnc0NRQ0FGSUFrUVVBUkFJQVVnQ1JBK1FTQkdEUUVMSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FldUJCQkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREE0TEFrQWdCU0FGSUFGQkJCQW1JZ1FRamdGRkRRQWdCU0FFRUVWQkFrY05BQ0FGSUFRUVBrRWdSZzBWQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR0FoQWNRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3TkN3SkFJQVVnQ1JCM0JFQWdCU0FKRUQ1QndBQkdEUUVMSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FjaUNCQkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREEwTEFrQWdCU0FGSUFGQkJCQW1JZ1FRdGdGRkRRQWdCU0FFRUVWQkFrY05BQ0FGSUFRUVBrRWdSZzBVQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR09nd2NRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3TUN3SkFBa0FnQlNBSkVJNEJSUTBBSUFVZ0NSQkZRUVJIRFFBZ0JTQUpFRDVCSUVZTkFRc2dCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCbi9VR0VBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1EQXNnQlNBRklBRkJCQkFtSWdRUVVBUkFJQVVnQkJBK1FTQkdEUk1MSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FjeURBaEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFzTEFrQUNRQ0FGSUFrUWpnRkZEUUFnQlNBSkVFVkJBa2NOQUNBRklBa1FQa0VnUmcwQkN5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0hGZ3djUURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd0xDeUFGSUFVZ0FVRUVFQ1lpQkJCUUJFQWdCU0FFRUQ1QklFWU5FZ3NnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQnpJTUNFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQ2dzQ1FBSkFJQVVnQ1JDMkFVVU5BQ0FGSUFrUVJVRUNSdzBBSUFVZ0NSQStRU0JHRFFFTElBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQk1Hb2lCQ0FHUVlBQ2FoQXVJQUlnQkJBU0dpQUNRZTIxREJBT0dpQUNRZFdDQnhBT0dpQUdLQUw4QVNFQklBUVFEeG9nQWhBUkRBb0xJQVVnQlNBQlFRUVFKaUlFRUhjRVFDQUZJQVFRUGtIQUFFWU5FUXNnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQno0b0NFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQ1FzZ0JTQUpFSGRGQkVBZ0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkI2b1FFRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTUNRc2dCU0FGSUFGQkJCQW1JZ1FRcmdGRkJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCdlB3REVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1DUXNnQlNBRUVNRUJJQWxHRFE4Z0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkJ2cUFFRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTUNBc2dCU0FKRUhkRkJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCNm9RRUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1DQXNnQlNBRklBRkJCQkFtSWdRUXJnRkZCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQnJmMERFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQ0FzZ0JTQUVFTUVCSUFsSEJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCeUlJS0VBNGFJQUpCL0trRUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1DQXNnQlNBRklBRkJCUkFtSWdjUXJnRkZCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQjlQd0RFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQ0FzZ0JTQUhFTUVCSUFsSEJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCbFlJS0VBNGFJQUpCL0trRUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1DQXNnQlNBRUVFVWdCU0FIRUVWR0RRNGdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCMEs0S0VBNGFJQUpCcDRVQkVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1Cd3NnQlNBSkVJNEJSUVJBSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FmajRBeEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFjTElBVWdDUkJGUVFOSEJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCM29RQkVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1Cd3NnQlNBQlFRUVFKaUVFSUFVZ0FVRUZFQ1loQnlBRUlBbEhCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQnlhTUVFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQndzZ0J5QUpSZzBOSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FaYWpCQkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFZTElBVWdDUkN1QVVVRVFDQUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0htL1FNUURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd0dDeUFGSUFGQkJCQW1JUVFnQlNBQlFRVVFKaUVISUFVZ0FVRUdFQ1loQ3lBRUlBbEhCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQjE1NEVFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQmdzZ0J5QUpSd1JBSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FhR2VCQkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFZTElBVWdDeEIzRFF3Z0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkIwSXdDRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTUJRc2dCUzBBaGdGQkVIRkZCRUFnQmtGQWF5SUNJQVZCY3lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjF0TUNFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQlFzQ1FDQUZJQWtRcmdFRVFDQUZJQWtRUGtFZ1JnMEJDeUFHUVVCcklnSWdCVUZ5SUFFUUVDQUdRVEJxSWdRZ0JrR0FBbW9RTGlBQ0lBUVFFaG9nQWtIdHRRd1FEaG9nQWtINS9na1FEaG9nQWtHUS9nTVFEaG9nQmlnQy9BRWhBU0FFRUE4YUlBSVFFUXdGQ3lBRklBRkJCQkFiRUNBaEFnSi9Ba0FnQlNnQ0JDMEFMRVVOQUNBQ0x3RWVRVDFIRFFBZ0JTQUNRUUlRSmd3QkN5QUZJQUZCQkJBbUN5RUNJQVpCQURZQ0xDQUZJQUlnQmtFc2FpQUdRUWhxRUlnQ1JRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWRmYUFSQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQVVMSUFZb0Fpd2dDVWNFUUNBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR2tvZ1FRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3RkN5QUdLQUlJUVFGSEJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCcEN3UURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd0ZDd0pBQWtBQ1FDQUxRYzBBYXc0Q0FBRUNDeUFGSUFVZ0FVRUZFQ1lpQWhCUUJFQWdCU0FDRUQ1QklFWU5BZ3NnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQmsvQUJFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQmdzQ1FDQUZJQVVnQVVFRkVDWWlBaENPQVVVTkFDQUZJQUlRUlVFQ1J3MEFJQVVnQWhBK1FTQkdEUUVMSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FZZUxBUkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFVTElBVWdBU2dDT0NnQ0FCQ2ZBU0VFSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVpCUUdzaUFpQUJJQVpCR0dwQmw0TURFQlFpQnhCT0lBUkJCQ0FDRU1jRUlBSVFEeG9nQnhBUEdpQUJFQThhREFvTElBWkJRR3NpQWlBRlFYSWdBUkFRSUFKQjFmQUVFQTRhSUFZb0F2d0JJUUVnQWhBUkRBTUxJQVpCUUdzaUFpQUZRWElnQVJBUUlBSkIxSUFGRUE0YUlBWW9BdndCSVFFZ0FoQVJEQUlMUWRXU0IwR2xtd0pCbUE1QnJpOFFBQUFMSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FlYjlBeEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSQ3lBQklRSU1CZ3RCQUNFQ0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUxEczBCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSUFBd1FBQWdBQUFBQUFBQUFBQVFVQUFBUUFBQUlBQkFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpDZ3NNQ2dzTUhCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZSEJ3WUlDQWdJRHhBUkVoTVRFeE1TRXhNVUZCVVdEUTRjSEJ3Y0hCd2NIQndjSEJ3Y0JnWUdCaHdMSUFVZ0NSQ3VBVVVFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSG0vUU1RRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3Y0N5QUZJQWtRUlNJRVFSQk5RUUJCQVNBRWRFR2ZnZ1J4RzBVRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhSZ0FFUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd2NDMEVFSVFSQkJDQUhJQWRCQkUwYklRY0RRQ0FFSUFkR0RSd2dCU0FCSUFRUUppRUxJQVJCQVdvaEJDQUpJQXRHRFFBTElBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRWTJmQkJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRCc0xJQVVnQ1JDdUFVVUVRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIbS9RTVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdiQ3lBRklBa1FSU0lDUVJCTlFRQkJBU0FDZEVHZmdnUnhHMFVFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSFJnQUVRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3YkN5QUZJQUZCQkJBbUlBbEhCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQnk2VUVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNR3dzZ0JTQUJRUVVRSmlFQ0lBWkJBRFlDQ0NBRklBSWdCa0VJYWlBR1FSaHFFSWdDUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZTdiQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRCc0xJQVlvQWhnaUFrRUlUVUVBUVFFZ0FuUkJzQU54RzBVRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdpMVFJUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd2JDeUFKSUFZb0FnaEdEUmtnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQng1OEVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNR2dzZ0JTQUpFSzRCUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZWI5QXhBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRCb0xJQVVnQ1JCRklnUkJFRTFCQUVFQklBUjBRWitDQkhFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWRHQUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQm9MSUFVZ0FVRUVFQ1lnQ1VjRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhMcFFRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd2FDMEVGSVFJQ1FDQUxRVFJIRFFCQkJpRUNJQVVnQVVFRkVDWWdDVVlOQUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR1ZwUVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3YUN5QUZJQUVnQWhBbUlRSWdCa0VBTmdJSUlBVWdBaUFHUVFocUlBWkJHR29RaUFKRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCN3RzQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1HZ3NnQmlnQ0dDSUNRUWhOUVFCQkFTQUNkRUd3QTNFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWFMVkFoQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQm9MQWtBZ0JTQUdLQUlJRU1jQkJFQWdCU0FHS0FJSUVENUJJRVlOQVFzZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJwL2tERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUdnc2dCU0FHS0FJSUVFVWdCRVlOR0NBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSHZtUVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3WkN3SkFJQVVnQ1JESEFRUkFJQVVnQ1JBK1FTQkdEUUVMSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFmTDVBeEFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREJrTElBVWdDUkJGSWdSQkVFMUJBRUVCSUFSMFFaK0NCSEViUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZEdBQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRCa0xJQVVnQlNBQlFRUVFKaUlIRUs0QlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWRyT0FSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQmtMSUFVZ0J4QkZJQVJHRFJnZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIzNXNFRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUdBc2dCU0FKRUs0QlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWViOUF4QU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQmdMSUFVZ0NSQkZJZ1JCRUUxQkFFRUJJQVIwUVorQ0JIRWJSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFkR0FBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREJnTElBVWdBVUVFRUNZZ0NVY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVITHBRUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdZQ3dKQUlBVWdCU0FCUVFVUUppSUhFTWNCQkVBZ0JTQUhFRDVCSUVZTkFRc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbk13QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1HQXNnQlNBSEVFVWdCRVlORnlBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSFRtQVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3WEN5QUZJQWtRcmdGRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCNXYwREVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1Gd3NnQlNBSkVFVWlCRUVRVFVFQVFRRWdCSFJCbjRJRWNSdEZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjBZQUJFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRndzZ0JTQUZJQUZCQkJBbUlnY1F4d0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkI2UG9ERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUZ3c2dCU0FIRUVVZ0JFY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHWm13UVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdYQ3lBRklBa1FQaUFGSUFjUVBrWU5GaUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHRm5RUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdXQ3lBRklBa1F4d0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJzUG9ERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUZnc2dCU0FKRUVVaUJFRVFUVUVBUVFFZ0JIUkJuNElFY1J0RkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCMFlBQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1GZ3RCQkNFRVFRUWdCeUFIUVFSTkd5RUhBMEFnQkNBSFJnMFdJQVVnQVNBRUVDWWhDeUFFUVFGcUlRUWdDU0FMUmcwQUN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdObndRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1ZDeUFGSUFrUXh3RkZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQnNQb0RFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRlFzZ0JTQUpFRVVpQjBFUVRVRUFRUUVnQjNSQm40SUVjUnRGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIwWUFCRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUZRc2dCU0FKRUQ0aUJFRVFSaUFFUVNCR2NpQUVRY0FBUm5KRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCaVBNR0VBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1GUXNnQlNBQlFRUVFKaUlKSUFVZ0FVRUZFQ1pIQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJ5SThFRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUZRc2dCU0FKRUVVZ0IwY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHZW1RUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdWQ3lBRUlBVWdDUkErUVFGMFJnMFVJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWN1bUJCQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQlFMQWtBZ0JTQUpFTWNCQkVBZ0JTQUpFRDVCSUVZTkFRc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCOHZrREVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1GQXNnQlNBSkVFVWlCRUVRVFVFQVFRRWdCSFJCbjRJRWNSdEZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjBZQUJFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRkF0QkJDRUVRUVFnQnlBSFFRUk5HeUVIQTBBZ0JDQUhSZzBVSUFVZ0FTQUVFQ1loQ3lBRVFRRnFJUVFnQ1NBTFJnMEFDeUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHTm53UVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdUQ3lBRklBa1FqZ0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIrUGdERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUV3c2dCU0FKRUVWQkJXdEJmVTBFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSDNnZ0VRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3VEN5QUZJQUZCQkJBbUlRUWdCU0FCUVFVUUppRUhJQVFnQ1VjRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhKb3dRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1RDeUFISUFsR0RSSWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbHFNRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1FZ3NnQlNBSkVIZEZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjZvUUVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRWdzZ0JTQUZJQUZCQkJBbUlnUVFyZ0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJyZjBERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUVnc2dCU0FFRUVWQkJVOEVRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHU2hBRVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdTQ3lBRklBUVF3UUVnQ1VjRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhJZ2dvUURob2dCRUg4cVFRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1NDeUFGSUFGQkJSQW1JQVJHRFJFZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJsWThFRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUVRc2dCU0FKRUhkRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCNm9RRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1FUXNnQlNBRklBRkJCQkFtSWdRUXJnRkZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQmpNOEJFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRVFzZ0JTQUVFRVZCQlU4RVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhkZ3dFUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1JDeUFGSUFRUXdRRWdDVVlORUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSDdvQVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3UUN5QUZJQWtRcmdGRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCNXYwREVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1FQXNnQlNBSkVFVkJCVThFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR21nd0VRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3UUN5QUZJQUZCQkJBbUlBbEdEUThnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQi9LTUVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRHdzQ1FDQUZJQWtRcmdFTkFDQUZJQWtReHdFTkFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhSK3dNUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1BDeUFGSUFrUVJTSUVRUkJOUVFCQkFTQUVkRUdmZ2dSeEcwVUVRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIUmdBRVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdQQzBFRUlRUkJCQ0FISUFkQkJFMGJJUWNEUUNBRUlBZEdEUThnQlNBQklBUVFKaUVMSUFSQkFXb2hCQ0FKSUF0R0RRQUxJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUVkyZkJCQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTRMQWtBZ0JTQUpFSzRCRFFBZ0JTQUpFTWNCRFFBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIwZnNERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURnc2dCU0FKRUVVaUIwRVFUVUVBUVFFZ0IzUkJuNElFY1J0RkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCMFlBQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EZ3NnQlNBQlFRUVFKaUVMSUFVZ0FVRUZFQ1loRENBRklBRkJCaEFtSVFRZ0NTQUxSd1JBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFlS2tCQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREE0TElBa2dERWNFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR3ZwQVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3T0N5QUZJQVFReHdGRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCMXN3QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EZ3NnQlNBRUVFVWdCMGNFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR25uQVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3T0N5QUZJQWtRUGlBRklBUVFQa1lORFNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSEFuUVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3TkN3SkFJQVVnQ1JDT0FRMEFJQVVnQ1JDMkFRMEFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWZUM0F4QU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTBMSUFVZ0NSQkZJZ0pCRUUxQkFFRUJJQUowUVorQ0JIRWJSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFhS0JBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREEwTElBVWdBVUVFRUNZaEJDQUZJQUZCQlJBbUlRc2dCUkNrQnlJSFJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUVl1cUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTBMQWtBZ0JTQUVFRkFFUUNBRklBUVFQaUFIUmcwQkN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdDL0FnUURob2dCQ0FIRUNFYUlBUkJwcjRJRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURRc2dCa0VBTmdJSUlBVWdDeUFHUVFocUlBWkJHR29RaUFKRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbU53QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EUXNnQmlnQ0dDSUVRUWhOUVFCQkFTQUVkRUd4QTNFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWYzVkFoQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTBMSUFVZ0NSREJBU0FHS0FJSVJ3UkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWVXbkJCQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTBMSUFJZ0FTZ0NBQ2dDSEVZTkN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdCcGdRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd01DeUFGSUFrUWNFRVRSd1JBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFhdnJCQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREF3TElBVWdBVUVFRUNZaEFpQUZJQUZCQlJBbUlRUWdCU0FCUVFZUUppRUpBa0FnQlNBQ0VJNEJEUUFnQlNBQ0VMWUJEUUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQndjc0JFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNREFzZ0JTQUNFRVVpQjBFUVRVRUFRUUVnQjNSQm40SUVjUnRGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIyNEVCRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURBc2dCUkNrQnlJSFJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUVl1cUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXdMQWtBZ0JTQUVFRkFFUUNBRklBUVFQaUFIUmcwQkN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdDL0FnUURob2dCQ0FIRUNFYUlBUkJwcjRJRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURBc2dCa0VBTmdJSUlBVWdDU0FHUVFocUlBWkJHR29RaUFKRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbU53QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EQXNnQmlnQ0dDSUVRUWhOUVFCQkFTQUVkRUd3QTNFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWN6VUFoQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXdMSUFVZ0FoREJBU0FHS0FJSVJnMEtJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUVlHQUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXNMSUFVZ0NSQjNSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFlcUVCQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFzTElBVWdBVUVFRUNZaEFpQUZJQUZCQlJBbUlRUWdCUkNrQnlJSFJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUVl1cUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXNMQWtBZ0JTQUNFRkFFUUNBRklBSVFQaUFIUmcwQkN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdDL0FnUURob2dCQ0FIRUNFYUlBUkJwcjRJRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUN3c2dCa0VBTmdJSUlBVWdCQ0FHUVFocUlBWkJHR29RaUFKRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbU53QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1Dd3NnQmlnQ0dDSUNRUWhOUVFCQkFTQUNkRUd4QTNFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWYzVkFoQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXNMSUFVZ0JpZ0NDQkIzQkVBZ0JTQUdLQUlJRUQ1QkVFWU5DZ3NnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjZJa0NFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNQ2dzZ0JTQUpFSTRCUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZmo0QXhBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBb0xJQVVnQ1JCRklnSkJFRTFCQUVFQklBSjBRWitDQkhFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWFLQkFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQW9MSUFVZ0FVRUVFQ1loQkNBRklBRkJCUkFtSVFrZ0JSQ2tCeUlIUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRWXVxQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBb0xBa0FnQlNBRUVGQUVRQ0FGSUFRUVBpQUhSZzBCQ3lBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR0MvQWdRRGhvZ0JDQUhFQ0VhSUFSQnByNElFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNQ2dzZ0JrRUFOZ0lJSUFVZ0NTQUdRUWhxSUFaQkdHb1FpQUpGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJtTndCRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUNnc2dCaWdDR0NJRVFRaE5RUUJCQVNBRWRFR3hBM0ViUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZjNWQWhBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBb0xBa0FnQlNBR0tBSUlFSGNFUUNBRklBWW9BZ2dRUGtFUVJnMEJDeUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIb2lRSVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdLQ3lBQ0lBRW9BZ0FvQWh4R0RRZ2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCZ2FZRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1DUXNnQlNBSkVIQkJFMGNFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFR3I2d1FRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3SkN5QUZJQUZCQkJBbUlRUWdCU0FCUVFVUUppRUpJQVVnQVVFR0VDWWhEQ0FGSUFRUVBpRUhJQXRCcndGclFRRk5CRUFnQlNBRUVIZEJBQ0FIUVNCR0lBZEJ3QUJHY2hzTkJ5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdmaWdJUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd0pDeUFGSUFRUWpnRkJBQ0FIUVNCR0lBZEJ3QUJHY2h0RkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCa2NzQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1DUXNnQlNBRUVFVWlCMEVSVDBHZmdnUWdCM1pCQVhGRmNnMEVEQVVMQWtBZ0JTQUpFSTRCRFFBZ0JTQUpFTFlCRFFBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkI5UGNERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUNBc2dCU0FKRUVVaURFRWZkQ0FNUVFKclFRRjJjaUlFUVFkTlFRQkJBU0FFZEVHTEFYRWJSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFZMkNBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFnTFFRVWhCeUFGSUFGQkJCQW1JUVFDUUNBTFFiY0JSdzBBUVFZaEJ5QUZJQUZCQlJBbUlBUkdEUUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjVJNEVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNQ0FzZ0JTQUJJQWNRSmlFSEFrQWdCU0FFRUk0QkRRQWdCU0FFRUxZQkRRQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCN01zQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1DQXNnQlNBRUVFVWlDMEVmZENBTFFRSnJRUUYyY2lJTFFRZE5RUUJCQVNBTGRFR0xBWEViUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRY09DQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBZ0xJQVVnQ1JEQkFTSUpJQVVnQkJEQkFVY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHNnN3RVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdJQ3lBRklBY1F0Z0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJxTWtCRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUNBc2dCU0FIRUVVZ0RFY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIR21nUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdJQ3lBRklBa1FQaUFGSUFjUVBrWU5CeUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVINi9nQVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdIQ3dKQUlBVWdDUkJRQkVBZ0JTQUpFRDVCSUVZTkFRc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCcS9FREVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1Cd3NnQlNBQlFRUVFKaUVDSUFaQkFEWUNDQ0FGSUFJZ0JrRUlhaUFHUVJocUVJZ0NSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFmemFBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFjTElBWW9BaGdFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSDgzd0FRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3SEN5QUZJQVlvQWdnUVVBUkFJQVVnQmlnQ0NCQStRUWhHRFFZTElBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZW85RUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUJnc2dCU0FKRUhCQkUwY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVHcjZ3UVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdHQ3lBRklBRkJCQkFtSVFRZ0JTQUJRUVVRSmlFQ0lBWkJBRFlDQ0NBRklBUWdCa0VJYWlBR1FSaHFFSWdDUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRYVRiQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBWUxJQVlvQWhoQkJVY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIN2tRSVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdHQ3dKQUlBVWdCaWdDQ0JDdUFRMEFJQVVnQmlnQ0NCREhBUTBBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFlN05BUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFZTElBVWdCaWdDQ0JCRklnUkJFRTFCQUVFQklBUjBRWitDQkhFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWRHQUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQVlMSUFVUXBBY2lCMFVFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFR0xxZ0VRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3R0N5QUZJQUlRVUFSQUlBVWdBaEErSUFkR0RRVUxJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWJIOENCQU9HaUFFSUFjUUlSb2dCRUdtdmdnUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd0ZDMEVBSVFJQ1FBSkFBa0FDUUFKQUlBUkJDR3NPQXdBQkFBa0xJQVVnQ1JDZEIwVUVRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIdnNBb1FEaG9nQkVIcTdBUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdKQ3lBQktBSUVJQUVvQWdBaUFtc2lCMEVDZFNFSkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUXBHQkVBQ1FDQUxRUUZyRGlNRUJ3Z0pDd29NRFE4UUVSSWhHaHNoSVJ3VUV4VWhGaUVkRnlFWUh3SVpJU0VoQmdBTElBdEI3QUJIQkVBZ0MwSC8vLzgvUncwaFFkV1NCMEdsbXdKQnV4aEJyaThRQUFBTElBWkJNR3BCaUtvRUVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVJCQmlBQlFRVWdCa0ZBYXlJSEVQWUJJUUlnQnhBV0lBUVFEeG9nQWcwcElBWkJNR3BCaHpvUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVFZZ0JrRkFheUlIRUtBQklRSWdCeEFXSUFRUUR4b2dBZzBwSUFVZ0FTZ0NBQ2dDR0NBR1FSaHFFTU1GUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRWUxXQUJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRDb0xJQVlvQWhoQkJXdEJlMHNOSUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHdzZ29RRGhvZ0JFR0s5QVlRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3cEN5QUxRU1JHSUFSQkNFWnhEUjhnQzBFQmF3NGpBd1VHQndrSUNnd05EZzhRSHhnWkh4OGFFaEVUSHhRZkhCVWZGaDBCRng4Zkh3UWVDeUFHUVRCcVFjM2NBaEFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSElBRkJCU0FHUVVCcklnc1FvQUVoQWlBTEVCWWdCeEFQR2lBQ0RTY0xRUVloQjBFR0lBa2dDVUVHVFJzaENTQUVRUXBISVFzRFFDQUhJQWxHRFI0Z0MwVUVRQ0FHUVRCcVFZYnFCQkFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRUlBRWdCeUFHUVVCcklnd1FvQUVoQWlBTUVCWWdCQkFQR2lBQ0RTZ0xJQWRCQVdvaEJ3d0FDd0FMSUFaQk1HcEI2dTBDRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBY2dBVUVGSUFaQlFHc2lDUkNnQVNFQ0lBa1FGaUFIRUE4YUlBSU5KU0FHUVRCcVFlVHRBaEFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSElBRkJCaUFHUVVCcklna1FvQUVoQWlBSkVCWWdCeEFQR2lBQ0RTVUxJQVpCTUdwQjl0SUVFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFkQkl5QUJRUWNnQmtGQWF5SUpFUFlCSVFJZ0NSQVdJQWNRRHhvZ0FnMGtJQVJCQ2tjTkd5QUdRVEJxUWEvQkJCQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFSUFGQkNDQUdRVUJySWdFUW9BRWhBaUFCRUJZZ0JCQVBHaUFDUlEwYkRDUUxJQVpCTUdwQnRMWUVFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFSQkJ5QUJRUVVnQmtGQWF5SUpFTXdCSVFJZ0NSQVdJQVFRRHhvZ0FnMGpJQWRCSEVjTkdpQUdRVEJxUVlJckVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVJCQnlBQlFRWWdCa0ZBYXlJQkVNd0JJUUlnQVJBV0lBUVFEeG9nQWtVTkdnd2pDeUFHUVRCcVFaS3pCQkFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSFFRY2dBVUVGSUFaQlFHc2lDUkRNQVNFQ0lBa1FGaUFIRUE4YUlBSU5JaUFHUVRCcVFidkpBeEFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSFFTc2dBVUVHSUFaQlFHc2lDUkRNQVNFQ0lBa1FGaUFIRUE4YUlBSU5JaUFFUVFwSERSa2dCa0V3YWtHc3Z3TVFGQ0VFUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQkNBQlFRY2dCa0ZBYXlJQkVLQUJJUUlnQVJBV0lBUVFEeG9nQWtVTkdRd2lDMEVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQUZCQlNBR1FVQnJJZ2NRcndvaEFpQUhFQllnQWcwaElBUkJDa2NOR0NBR1FUQnFRZEtVQVJBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCQmlBR1FVQnJJZ2NRb0FFaEFpQUhFQllnQkJBUEdpQUNEU0VnQmtFd2FrSFNyUUVRRkNFRVFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0JDQUJRUWNnQmtGQWF5SUJFS0FCSVFJZ0FSQVdJQVFRRHhvZ0FrVU5HQXdoQzBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFGQkJTQUdRVUJySWdjUXJ3b2hBaUFIRUJZZ0FnMGdJQVJCQ2tjTkZ5QUdRVEJxUWRidEFSQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFSUFGQkJpQUdRVUJySWdFUW9BRWhBaUFCRUJZZ0JCQVBHaUFDUlEwWERDQUxRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdBVUVGSUFaQlFHc2lCeEN2Q2lFQ0lBY1FGaUFDRFI4Q2Z5QUVRUXBHQkVBZ0JrRXdha0gzT1JBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCQmlBR1FVQnJJZ2NRb0FFaEFpQUhFQllnQkJBUEdpQUNEU0VnQlNBQktBSUFLQUlZSUFaQkdHb1F3d1VFUUNBR0tBSVlEQUlMSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFjN1ZBQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSRENFTElBRW9BZ0FvQWhnTFFRVnJRWHRMRFJZZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkJ6TElLRUE0YUlBUkJpdlFHRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUh3c2dCa0V3YWtHc3FnUVFGQ0VIUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQnlBQlFRVWdCa0ZBYXlJTFFRQVF5UVFoQWlBTEVCWWdCeEFQR2lBQ0RSNUJCaUFKSUFsQkJrMGJJUXNnQkVFS1JpRU1RUVloQndOQUlBY2dDMFlORmdKQUFrQWdCU0FCS0FJQUlBZEJBblJxS0FJQUVDQWlBaThCSGtFclJ3MEFJQVVnQWlnQ0pCQlFSUTBBSUFVZ0FpZ0NKQkErSWdsQndBQkhJQWxCSUVkeERRQWdEQTBCSUFJb0FnQW9BZ3dOQVF3Y0N5QUNLQUlFSUFJb0FnQWlBbXRCR1VrTkd5QUNLQUlRUVFoeVFScEhEUnNnQlNBQ0tBSVlFQ0FpQ1NnQ0JDQUpLQUlBSWdKclFSMUpEUnNnQWlnQ0VFRUNSdzBiSUFJb0Fod2hBaUFFUVFwR0JIOGdCU0FDRUhoRkRSd2dCU0FDRUlNV0JTQUNDMEVHUncwYklBVWdCU0FKS0FJQUtBSVlFQ0FpQWlnQ0pCQlFSUTBiSUFJb0FnQW9BZ3dpQWtFZ1JnMEFJQUpCd0FCSERSc0xJQWRCQVdvaEJ3d0FDd0FMSUFaQk1HcEJrck1FRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBZEJCeUFCUVFVZ0JrRkFheUlKRU13QklRSWdDUkFXSUFjUUR4b2dBZzBkUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQVVFR0lBWkJRR3NpQnhDdkNpRUNJQWNRRmlBQ0RSMGdCa0V3YWtIMjBnUVFGQ0VIUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQjBFaklBRkJCeUFHUVVCcklna1E5Z0VoQWlBSkVCWWdCeEFQR2lBQ0RSMGdCRUVLUmdSQUlBWkJNR3BCMHE4RUVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVFnQVVFSUlBWkJRR3NpQnhDZ0FTRUNJQWNRRmlBRUVBOGFJQUlOSGlBR1FUQnFRWS92QWhBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCQ1NBR1FVQnJJZ2NRb0FFaEFpQUhFQllnQkJBUEdpQUNEUjRMSUFaQk1HcEI5TVVBRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVLSUFaQlFHc2lBUkRJQkNFQ0lBRVFGaUFFRUE4YUlBSkZEUlFNSFFzZ0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVFVZ0JrRkFheUlIRUtBQklRSWdCeEFXSUFRUUR4b2dBZzBjSUFFb0FnQWhBZ3NnQlNBQ0tBSVlFQ0F2QVI1QkUwY0VRQ0FHUVRCcVFaU3FCQkFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRUlBRkJCaUFHUVVCcklnZEJBUkRKQkNFQ0lBY1FGaUFFRUE4YUlBSU5IQXRCQnlFRVFRY2dDU0FKUVFkTkd5RUpBMEFnQkNBSlJnMFRJQVpCTUdwQmpib0JFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFjZ0FTQUVJQVpCUUdzaUMwRUJFTWtFSVFJZ0N4QVdJQWNRRHhvZ0JFRUJhaUVFSUFKRkRRQUxEQnNMSUFaQk1HcEJrck1FRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBZEJCeUFCUVFVZ0JrRkFheUlMRU13QklRSWdDeEFXSUFjUUR4b2dBZzBhSUFaQjRJZ2dOZ0pBSUFZZ0JrRkFheUlDTmdKUUlBVWdBaUFCUVFZUWlRUWhCeUFDRUJZZ0IwVUVRQ0FHUVRCcVFaMjZBUkFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSElBRkJCaUFHUVVCcklndEJBQkRKQkNFQ0lBc1FGaUFIRUE4YUlBSU5Hd3NnQmtFd2FrSDIwZ1FRRkNFSFFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0IwRWpJQUZCQnlBR1FVQnJJZ3NROWdFaEFpQUxFQllnQnhBUEdpQUNEUm9nQkVFS1JnUkFJQVpCTUdwQjBxOEVFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFjZ0FVRUlJQVpCUUdzaUN4Q2dBU0VDSUFzUUZpQUhFQThhSUFJTkd5QUdRVEJxUVkvdkFoQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FISUFGQkNTQUdRVUJySWdzUW9BRWhBaUFMRUJZZ0J4QVBHaUFDRFJzTElBWkJNR3BCOU1VQUVCUWhCMEVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQWNnQVVFS0lBWkJRR3NpQ3hESUJDRUNJQXNRRmlBSEVBOGFJQUlOR2lBR1FUQnFRYnZKQXhBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRU3NnQVVFTElBWkJRR3NpQ3hETUFTRUNJQXNRRmlBSEVBOGFJQUlOR2dKQUlBVWdCU0FCS0FJQUtBSXNFQ0FpQWlnQ0pCQlFCRUFnQWlnQ0FDZ0NEQTBCQ3lBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHMzZ29RRGhvZ0JFSGg4UUVRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3YkN5QUVRUXBHQkVBZ0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVF3Z0JrRkFheUlIRUtBQklRSWdCeEFXSUFRUUR4b2dBZzBiQzBFTklRUURRQ0FFUVFGcUlnc2dDVThORWlBR1FUQnFRWnpXQXhBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRU3NnQVNBRUlBWkJRR3NpREJETUFTRUNJQXdRRmlBSEVBOGFJQUlOR3lBR1FUQnFRWkt6QkJBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRUWNnQVNBTElBWkJRR3NpQ3hETUFTRUNJQXNRRmlBSEVBOGFJQVJCQW1vaEJDQUNSUTBBQ3d3YUN5QUdRVEJxUVpLekJCQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVFjZ0FVRUZJQVpCUUdzaUN4RE1BU0VDSUFzUUZpQUhFQThhSUFJTkdTQUdRVEJxUWZiU0JCQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVNNZ0FVRUhJQVpCUUdzaUN4RDJBU0VDSUFzUUZpQUhFQThhSUFJTkdTQUVRUXBHQkVBZ0JrRXdha0hTcndRUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCeUFCUVFnZ0JrRkFheUlMRUtBQklRSWdDeEFXSUFjUUR4b2dBZzBhSUFaQk1HcEJqKzhDRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBY2dBVUVKSUFaQlFHc2lDeENnQVNFQ0lBc1FGaUFIRUE4YUlBSU5HZ3NnQmtFd2FrSDB4UUFRRkNFSFFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0J5QUJRUW9nQmtGQWF5SUxFTWdFSVFJZ0N4QVdJQWNRRHhvZ0FnMFpJQVpCTUdwQmlyTUVFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFkQkJ5QUJRUXNnQmtGQWF5SUxFTXdCSVFJZ0N4QVdJQWNRRHhvZ0FnMFpJQVpCaElrZ05nSkFJQVlnQmtGQWF5SUNOZ0pRSUFVZ0FpQUJRUXdRaVFRaEJ5QUNFQllnQjBVRVFDQUdRVEJxUWJ2SkF4QVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVNzZ0FVRU1JQVpCUUdzaUN4RE1BU0VDSUFzUUZpQUhFQThhSUFJTkdnc2dCRUVLUmdSQUlBWkJNR3BCMHEwQkVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVFnQVVFTklBWkJRR3NpQnhDZ0FTRUNJQWNRRmlBRUVBOGFJQUlOR2d0QkRpRUVRUTRnQ1NBSlFRNU5HeUVIQTBBZ0JDQUhSZzBSSUFaQnFJa2dOZ0pBSUFZZ0JrRkFheUlDTmdKUUlBVWdBaUFCSUFRUWlRUWhDU0FDRUJZZ0JFRUJhaUVFSUFrTkFBc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCdnRnSkVBNGFJQVJCbE5jRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1HUXNnQmtFd2FrR1Nzd1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NVRUhJQUZCQlNBR1FVQnJJZ3NRekFFaEFpQUxFQllnQ1JBUEdpQUNEUmdnQmtFd2FrR3hxZ1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NTQUJRUVlnQmtGQWF5SUxRUUVReVFRaEFpQUxFQllnQ1JBUEdpQUNEUmdnQmtFd2FrSDIwZ1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NVRWpJQUZCQnlBR1FVQnJJZ3NROWdFaEFpQUxFQllnQ1JBUEdpQUNEUmdnQkVFS1JnUkFJQVpCTUdwQjBxOEVFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFRZ0FVRUlJQVpCUUdzaUNSQ2dBU0VDSUFrUUZpQUVFQThhSUFJTkdTQUdRVEJxUVkvdkFoQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFSUFGQkNTQUdRVUJySWdrUW9BRWhBaUFKRUJZZ0JCQVBHaUFDRFJrZ0JrRXdha0dUNlFBUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVySUFGQkNpQUdRVUJySWdrUXpBRWhBaUFKRUJZZ0JCQVBHaUFDRFJrZ0JrRXdha0c3eVFNUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVySUFGQkN5QUdRVUJySWdrUXpBRWhBaUFKRUJZZ0JCQVBHaUFDRFJrZ0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVF3Z0JrRkFheUlKRUtBQklRSWdDUkFXSUFRUUR4b2dBZzBaSUFkQk9FY05FQ0FHUVRCcVFaeldBeEFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRVFTc2dBVUVOSUFaQlFHc2lBUkRNQVNFQ0lBRVFGaUFFRUE4YUlBSkZEUkFNR1FzZ0JrRXdha0gweFFBUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVLSUFGQkNpQUdRVUJySWdrUTlnRWhBaUFKRUJZZ0JCQVBHaUFDRFJnZ0JrRXdha0dUNlFBUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVySUFGQkN5QUdRVUJySWdrUXpBRWhBaUFKRUJZZ0JCQVBHaUFDRFJnZ0JrRXdha0c3eVFNUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVySUFGQkRDQUdRVUJySWdrUXpBRWhBaUFKRUJZZ0JCQVBHaUFDRFJnZ0IwRThSdzBQSUFaQk1HcEJuTllERUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUkJLeUFCUVE0Z0JrRkFheUlCRU13QklRSWdBUkFXSUFRUUR4b2dBa1VORHd3WUN5QUdRVEJxUVovckJCQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVFvZ0FVRUZJQVpCUUdzaUNSRDJBU0VDSUFrUUZpQUhFQThhSUFJTkZ5QUZJQUVvQWdBb0FoUVFJQ2dDQUNnQ0dFRUNUd1JBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFaZU1CQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREJnTElBWkJNR3BCOU1VQUVCUWhCMEVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQWRCQ2lBQlFRWWdCa0ZBYXlJSkVQWUJJUUlnQ1JBV0lBY1FEeG9nQWcwWElBVWdBU2dDQUNnQ0dCQWdLQUlBS0FJWVFRSlBCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjNJc0VFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNR0FzZ0JrRXdha0dUNlFBUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCMEVySUFGQkJ5QUdRVUJySWdrUXpBRWhBaUFKRUJZZ0J4QVBHaUFDRFJjZ0JrRXdha0c3eVFNUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCMEVySUFGQkNDQUdRVUJySWdrUXpBRWhBaUFKRUJZZ0J4QVBHaUFDRFJjZ0JFRUtSdzBPSUFaQk1HcEIwcTBCRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVKSUFaQlFHc2lBUkNnQVNFQ0lBRVFGaUFFRUE4YUlBSkZEUTRNRndzZ0JrRXdha0dTc3dRUUZDRUpRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdDVUVISUFGQkJTQUdRVUJySWdzUXpBRWhBaUFMRUJZZ0NSQVBHaUFDRFJZZ0JrRXdha0d4cWdRUUZDRUpRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdDU0FCUVFZZ0JrRkFheUlMUVFBUXlRUWhBaUFMRUJZZ0NSQVBHaUFDRFJZZ0JrRXdha0gyMGdRUUZDRUpRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdDVUVqSUFGQkJ5QUdRVUJySWdzUTlnRWhBaUFMRUJZZ0NSQVBHaUFDRFJZZ0JFRUtSZ1JBSUFaQk1HcEIwcThFRUJRaENVRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBa2dBVUVJSUFaQlFHc2lDeENnQVNFQ0lBc1FGaUFKRUE4YUlBSU5GeUFHUVRCcVFZL3ZBaEFVSVFsQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSklBRkJDU0FHUVVCcklnc1FvQUVoQWlBTEVCWWdDUkFQR2lBQ0RSY0xJQVpCTUdwQjlNVUFFQlFoQ1VFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFrZ0FVRUtJQVpCUUdzaUN4RElCQ0VDSUFzUUZpQUpFQThhSUFJTkZpQUdRVEJxUVlxekJCQVVJUWxCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FKUVFjZ0FVRUxJQVpCUUdzaUN4RE1BU0VDSUFzUUZpQUpFQThhSUFJTkZpQUVRUXBHQkVBZ0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVF3Z0JrRkFheUlKRUtBQklRSWdDUkFXSUFRUUR4b2dBZzBYSUFaQk1HcEJ6SzhFRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVOSUFaQlFHc2lDUkNnQVNFQ0lBa1FGaUFFRUE4YUlBSU5GeUFIUVR4SERRNGdCa0V3YWtIejNnSVFGQ0VFUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQkVFVElBRkJEaUFHUVVCcklnRVE5Z0VoQWlBQkVCWWdCQkFQR2lBQ1JRME9EQmNMSUFaQnpJa2dOZ0pBSUFZZ0JrRkFheUlDTmdKUUlBVWdBaUFCUVE0UWlRUWhCQ0FDRUJZZ0JFVUVRQ0FHUVRCcVFkdldBaEFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRVFUWWdBVUVPSUFaQlFHc2lDUkRNQVNFQ0lBa1FGaUFFRUE4YUlBSU5Gd3NnQjBIQUFFY05EU0FHUVRCcVFmUGVBaEFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRVFSTWdBVUVQSUFaQlFHc2lBUkQyQVNFQ0lBRVFGaUFFRUE4YUlBSkZEUTBNRmdzZ0JrRXdha0dTc3dRUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCMEVISUFGQkJTQUdRVUJySWdrUXpBRWhBaUFKRUJZZ0J4QVBHaUFDRFJVZ0JrRXdha0d4cWdRUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCeUFCUVFZZ0JrRkFheUlKUVFBUXlRUWhBaUFKRUJZZ0J4QVBHaUFDRFJVZ0JrRXdha0gyMGdRUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCMEVqSUFGQkJ5QUdRVUJySWdrUTlnRWhBaUFKRUJZZ0J4QVBHaUFDRFJVZ0JFRUtSZ1JBSUFaQk1HcEIwcThFRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBY2dBVUVJSUFaQlFHc2lDUkNnQVNFQ0lBa1FGaUFIRUE4YUlBSU5GaUFHUVRCcVFZL3ZBaEFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSElBRkJDU0FHUVVCcklna1FvQUVoQWlBSkVCWWdCeEFQR2lBQ0RSWUxJQVpCTUdwQjlNVUFFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFjZ0FVRUtJQVpCUUdzaUNSRElCQ0VDSUFrUUZpQUhFQThhSUFJTkZTQUdRVEJxUVlxekJCQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVFjZ0FVRUxJQVpCUUdzaUNSRE1BU0VDSUFrUUZpQUhFQThhSUFJTkZTQUVRUXBIRFF3Z0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVF3Z0JrRkFheUlCRUtBQklRSWdBUkFXSUFRUUR4b2dBa1VOREF3VkN5QUdRVEJxUWZiU0JCQVVJUWxCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FKUVNNZ0FVRUZJQVpCUUdzaUN4RDJBU0VDSUFzUUZpQUpFQThhSUFJTkZDQUVRUXBHQkVBZ0JrRXdha0hTcndRUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVFZZ0JrRkFheUlKRUtBQklRSWdDUkFXSUFRUUR4b2dBZzBWSUFaQk1HcEJqKzhDRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVISUFaQlFHc2lDUkNnQVNFQ0lBa1FGaUFFRUE4YUlBSU5GUXNnQmtFd2FrSDB4UUFRRkNFRVFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0JDQUJRUWdnQmtGQWF5SUpFTWdFSVFJZ0NSQVdJQVFRRHhvZ0FnMFVJQWRCS0VjTkN5QUdRVEJxUVpLekJCQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFUVFjZ0FVRUpJQVpCUUdzaUFSRE1BU0VDSUFFUUZpQUVFQThhSUFKRkRRc01GQXNnQmtFd2FrR2JyUVFRRkNFRVFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0JDQUJRUVVnQmtGQWF5SUpFTWdFSVFJZ0NSQVdJQVFRRHhvZ0FnMFRJQWRCSEVjTkNpQUdRVEJxUWZQN0FCQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFUVJrZ0FVRUdJQVpCUUdzaUFSRDJBU0VDSUFFUUZpQUVFQThhSUFKRkRRb01Fd3NnQmtFd2FrR1Nzd1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NVRUhJQUZCQlNBR1FVQnJJZ3NRekFFaEFpQUxFQllnQ1JBUEdpQUNEUklnQmtFd2FrR3hxZ1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NTQUJRUVlnQmtGQWF5SUxRUUVReVFRaEFpQUxFQllnQ1JBUEdpQUNEUklnQmtFd2FrSDIwZ1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NVRWpJQUZCQnlBR1FVQnJJZ3NROWdFaEFpQUxFQllnQ1JBUEdpQUNEUklnQkVFS1JnUkFJQVpCTUdwQjBxOEVFQlFoQ1VFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFrZ0FVRUlJQVpCUUdzaUN4Q2dBU0VDSUFzUUZpQUpFQThhSUFJTkV5QUdRVEJxUVkvdkFoQVVJUWxCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FKSUFGQkNTQUdRVUJySWdzUW9BRWhBaUFMRUJZZ0NSQVBHaUFDRFJNTElBWkJNR3BCOU1VQUVCUWhDVUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQWtnQVVFS0lBWkJRR3NpQ3hESUJDRUNJQXNRRmlBSkVBOGFJQUlORWlBRVFRcEhEUWtnQmtFd2FrSFNyUUVRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NTQUJRUXNnQmtGQWF5SUxFS0FCSVFJZ0N4QVdJQWtRRHhvZ0FnMFNJQWRCTkVjZ0JFRUtSM0lOQ1NBR1FUQnFRYmI3QVJBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCRENBR1FVQnJJZ0VRb0FFaEFpQUJFQllnQkJBUEdpQUNSUTBKREJJTElBWkJNR3BCMEwwRUVCUWhCMEVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQWRCR2lBQlFRVWdCa0ZBYXlJTEVQWUJJUUlnQ3hBV0lBY1FEeG9nQWcwUkFrQUNRQ0FGSUFFb0FnQW9BaGdRSUM4QkhrRTNhdzRGQVFBQUFBRUFDeUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIKzRnRVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdTQ3lBR1FUQnFRYTdzQWhBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRUjhnQVVFSElBWkJRR3NpQ3hEMkFTRUNJQXNRRmlBSEVBOGFJQUlORVNBRVFRcEhEUWhCQ0NFRVFRZ2dDU0FKUVFoTkd5RUNBMEFnQWlBRVJnMEpBa0FnQlNBQktBSUFJQVJCQW5ScUtBSUFFQ0FpQjBVTkFDQUhLQUlrSWdkRkRRQWdCRUVCYWlFRUlBVWdCMEVBUVFBUWdoWU5BUXNMSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFiandBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREJFTFFRVWhCRUVGSUFrZ0NVRUZUUnNoQ1FOQUlBUWdDVVlOQ0NBR1FUQnFRYzNjQWhBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRUjRnQVNBRUlBWkJRR3NpQ3hEMkFTRUNJQXNRRmlBSEVBOGFJQVJCQVdvaEJDQUNSUTBBQ3d3UUN5QUdRZkNKSURZQ1FDQUdJQVpCUUdzaUFqWUNVQ0FGSUFJZ0FVRUZFSWtFSVFRZ0FoQVdJQVJGRFFoQkJpRUVRUVlnQ1NBSlFRWk5HeUVIQTBBZ0JDQUhSZzBISUFaQmxJb2dOZ0pBSUFZZ0JrRkFheUlDTmdKUUlBVWdBaUFCSUFRUWlRUWhDU0FDRUJZZ0JFRUJhaUVFSUFrTkFBc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCMk1RS0VBNGFJQVJCeVBFSkVBNGFJQVJCMGVNQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1Ed3NnQmtFd2FrR1Nzd1FRRkNFSFFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0IwRUhJQUZCQlNBR1FVQnJJZ2tRekFFaEFpQUpFQllnQnhBUEdpQUNEUTRnQmtFd2FrR2dxZ1FRRkNFSFFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0J5QUJRUVlnQmtGQWF5SUpRUUFReVFRaEFpQUpFQllnQnhBUEdpQUNEUTRnQmtHNGlpQTJBa0FnQmlBR1FVQnJJZ0kyQWxBZ0JTQUNJQUZCQnhDSkJDRUhJQUlRRmlBSFJRUkFJQVpCTUdwQm5OWURFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFkQkt5QUJRUWNnQmtGQWF5SUpFTXdCSVFJZ0NSQVdJQWNRRHhvZ0FnMFBDeUFHUVRCcVFmYlNCQkFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSFFTTWdBVUVJSUFaQlFHc2lDUkQyQVNFQ0lBa1FGaUFIRUE4YUlBSU5EaUFFUVFwSERRVWdCa0V3YWtIU3J3UVFGQ0VFUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQkNBQlFRa2dCa0ZBYXlJSEVLQUJJUUlnQnhBV0lBUVFEeG9nQWcwT0lBWkJNR3BCais4Q0VCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVFnQVVFS0lBWkJRR3NpQVJDZ0FTRUNJQUVRRmlBRUVBOGFJQUpGRFFVTURnc2dCa0V3YWtHU3N3UVFGQ0VKUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQ1VFSElBRkJCU0FHUVVCcklnc1F6QUVoQWlBTEVCWWdDUkFQR2lBQ0RRMGdCa0V3YWtHeHFnUVFGQ0VKUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQ1NBQlFRWWdCa0ZBYXlJTFFRQVF5UVFoQWlBTEVCWWdDUkFQR2lBQ0RRMGdCa0V3YWtIMjBnUVFGQ0VKUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQ1VFaklBRkJCeUFHUVVCcklnc1E5Z0VoQWlBTEVCWWdDUkFQR2lBQ0RRMGdCRUVLUmdSQUlBWkJNR3BCMHE4RUVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVFnQVVFSUlBWkJRR3NpQ1JDZ0FTRUNJQWtRRmlBRUVBOGFJQUlORGlBR1FUQnFRWS92QWhBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCQ1NBR1FVQnJJZ2tRb0FFaEFpQUpFQllnQkJBUEdpQUNEUTRMSUFaQk1HcEJtNjBFRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVLSUFaQlFHc2lDUkRJQkNFQ0lBa1FGaUFFRUE4YUlBSU5EU0FHUVRCcVFZcXpCQkFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRVFRY2dBVUVMSUFaQlFHc2lDUkRNQVNFQ0lBa1FGaUFFRUE4YUlBSU5EU0FHUWR5S0lEWUNRQ0FHSUFaQlFHc2lBallDVUNBRklBSWdBVUVNRUlrRUlRUWdBaEFXQWtBZ0JBMEFJQVVnQVNnQ0FDZ0NNQkFnTHdFZVFSQnlRVHRHRFFBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJrNjRFRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURnc2dCMEU4UncwRUlBWkJNR3BCNWQ0Q0VCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVJCQ3lBQlFRNGdCa0ZBYXlJQkVQWUJJUUlnQVJBV0lBUVFEeG9nQWtVTkJBd05DeUFHUVRCcVFkS3ZCQkFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRUlBRkJCU0FHUVVCcklna1FvQUVoQWlBSkVCWWdCQkFQR2lBQ0RRd0xJQVpCTUdwQm02MEVFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFRZ0FVRUdJQVpCUUdzaUNSRElCQ0VDSUFrUUZpQUVFQThhSUFJTkN5QUhRU0JIRFFJZ0JrRXdha0dhOXdRUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVaSUFGQkJ5QUdRVUJySWdFUTlnRWhBaUFCRUJZZ0JCQVBHaUFDUlEwQ0RBc0xJQVpCTUdwQjBMMEVFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFSQkdpQUJRUVVnQmtGQWF5SUhFUFlCSVFJZ0J4QVdJQVFRRHhvZ0FnMEtJQVpCTUdwQnJ1d0NFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFSQkh5QUJRUWNnQmtGQWF5SUhFUFlCSVFJZ0J4QVdJQVFRRHhvZ0FnMEtRUWdnQ1NBSlFRaE5HeUVIUVFnaEJBTkFJQVFnQjBZTkFnSkFJQVVnQkVFQ2RDSUNJQUVvQWdCcUtBSUFFQ0FpQ1M4QkhrRXJSZ1JBSUFVZ0NTZ0NKQkJRRFFFTEFrQWdCU0FCS0FJQUlBSnFLQUlBRUNBb0FnQWlBaWdDRUVFSWNrRWFSdzBBSUFVZ0FpZ0NHQkFnS0FJQUlnSW9BaEJCQWtjTkFDQUNLQUljSVFJZ0FTZ0NJRUVLUmdSL0lBVWdBaEI0UlEwQklBVWdBaENERmdVZ0FndEJmWEZCQkVZTkFRc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCeWR3SkVBNGFJQVJCbGZRSkVBNGFJQVJCbVlVRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EQXNnQkVFQmFpRUVEQUFMQUFzZ0MwSC8vLzgvUmcwREMwRUFJUUlNQ0FzZ0JrRXdhaUlFSUFVZ0FVRUNFQnNRSUNJQ1FRRVF4UVVnQmtFSWFpQUVJQVpCR0dwQm1kVUhFQlFpQ3lnQ0JDQUxMUUFMSWdRZ0JFRVlkRUVZZFVFQVNCdEJmeER2Q2dKQUlBWW9BZ3dnQmkwQUV5SUVJQVJCR0hSQkdIVkJBRWdpQkJ0RkJFQWdCa0ZBYXlJQklBVkJjaUFDRUJBZ0FVR3g3UUlRRGhvZ0JpZ0MvQUVoQWlBQkVCRU1BUXNnQmlnQ0NDQUdRUWhxSUFRYklBWkJMR3BCQ2tMLy8vLy9EeENrRGFjaENRSkFJQVlvQWl3aUJFVU5BQ0FFTFFBQVJRMEFJQVpCUUdzaUFTQUZRWElnQWhBUUlBRkIreE1RRGhvZ0JpZ0MvQUVoQWlBQkVCRU1BUXNnQ1VFR2EwRjZUUVJBSUFaQlFHc2lBU0FGUVhJZ0FoQVFJQUZCL3V3Q0VBNGFJQVlvQXZ3QklRSWdBUkFSREFFTEl3QkI0QUZySWdJa0FBSkFJQVVnQVNnQ0pCQ2RCMFVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWRic0JCQU9HaUFDS0FMY0FTRUVJQWNRRVF3QkN3SkFBa0FDUUNBQlFRTVFHeUlIUVFGcklnUkJKMHNOQUNBSklBUkJBblJCZ01jTmFpZ0NBQ0lFU1FSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFKQkVHb2lEQ0FGSUFFUWdSWWdCeUFNRUJJYUlBZEJwb29LRUE0YUlBY2dCQkFoR2lBSFFmM2NDUkFPR2lBSElBa1FJUm9nQWlnQzNBRWhCQ0FNRUE4YUlBY1FFUXdFQzBFQUlRUUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQWRCQVdzT0tBQUJBZ0lEQXdRQ0FnSUZCZ1lIQ0FnSUNBZ0lDUWtLQ3d3RUF3a05EZzRQRHdJQ0VCQVJFaE1hQ3lBQ1FSQnFJQVVnQVJDQkZpQUZJQUZCQkJBYklnY1FJQzhCSGtFMlJ3UkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBY2dBa0VRYWhBU0dpQUhRZmZTQWhBT0dpQUNLQUxjQVNFRUlBY1FFUXdaQ3lBRktBTEVBU0VNSUFVb0FzQUJJUVFEUUNBRUlBeEdEUlFnQkNnQ0FDRVJJQVJCQkdvaEJDQUhJQkZIRFFBTEFrQWdCU0FIRUtVR0lnUUVRQ0FFS0FJSURRRUxJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBY2dBa0VRYWhBU0dpQUhRZFU4RUE0YUlBSW9BdHdCSVFRZ0J4QVJEQmtMSUFSQkJHb2hEQ0FFS0FJQUlRUURRQ0FFSUF4SEJFQWdCQ2dDRUVFRlJ3UkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBY2dBa0VRYWhBU0dpQUhRWnIrQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdiQlNBRUVFd2hCQXdDQ3dBTEN3SkFJQVVnQVVFRkVCc1FJQ0lFQkVBZ0JDOEJIa0VIUmcwQkN5QUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFjMjlBeEFPR2lBQ0tBTGNBU0VFSUFjUUVRd1pDeUFDSUFSQkFSREZCU0FGSUFjUTNnMGlCQ2dDQkNFSElBUW9BZ0FoQkFOQUlBUWdCMFlORlNBQ0lBUVE4Z01oRENBRVFSaHFJUVFnREVVTkFBc2dBU2dDRUNBQktBSU1heUlIUWVFQVNTQUpRUVJMY2tVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFkU0tDaEFPR2lBSElBa1FJUm9nQjBHcHd3b1FEaG9nQnlBQ1FSQnFFQklhSUFkQjBjRUJFQTRhSUFJb0F0d0JJUVFnQnhBUkRCZ0xRUUFoQkNBSFFlRUFTUTBYSUFVZ0FVRUdFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFlUFhBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd1lDeUFIUWZFQVNRMFhJQVVnQVVFSEVCc1FlRVVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUVozWUFCQU9HaUFDS0FMY0FTRUVJQWNRRVF3WUN5QUhRWUVCU1EwWElBVWdBVUVJRUJzUWNFRUhSZzBYSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCaWIwREVBNGFJQUlvQXR3QklRUWdCeEFSREJjTElBRW9BaEFoQkNBQktBSU1JUWNnQlNBQlFRUVFHeEJ3UVFkSEJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSE52UU1RRGhvZ0FpZ0MzQUVoQkNBSEVCRU1HUXNnQkNBSGF5SUVRZEVBU1EwVklBVWdBVUVGRUJzUWNFRUhSd1JBSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCeWIwREVBNGFJQUlvQXR3QklRUWdCeEFSREJrTElBUkI0UUJKRFJVZ0JTQUJRUVlRR3hCNFJRUkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEJpOWtBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQmtMSUFSQjhRQkpEUlVnQlNBQlFRY1FHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQnlka0FFQTRhSUFJb0F0d0JJUVFnQnhBUkRCa0xJQVJCZ1FGSkRSVkJBQ0VFSUFVZ0FVRUlFQnNRZUEwWUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQmh0b0FFQTRhSUFJb0F0d0JJUVFnQnhBUkRCZ0xJQUVvQWhBaEJ5QUJLQUlNSVFrZ0JTQUJFS01HSWdRTkZ5QUZJQUZCQlJBYkVIaEZCRUFnQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEh5MmdBUURob2dBaWdDM0FFaEJDQUhFQkVNR0FzZ0JTQUJRUVlRR3hCNFJRUkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEJxTmNBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQmdMSUFVZ0FVRUhFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFkbmJBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd1lDeUFISUFsclFaQUJSdzBVSUFVZ0FVRUlFSzRLSWdRTkZ3d1VDeUFCS0FJUUlRY2dBU2dDRENFSklBVWdBUkNqQmlJRURSWWdCU0FCUVFVUUd4QjRSUVJBSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCOHRvQUVBNGFJQUlvQXR3QklRUWdCeEFSREJjTElBVWdBVUVHRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRYWpYQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdYQ3lBRklBRkJCeEFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSFoyd0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1Gd3NnQlNBQlFRZ1FHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQjlOWUFFQTRhSUFJb0F0d0JJUVFnQnhBUkRCY0xJQVVnQVVFSkVCc1FlRVVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUVlQZEFCQU9HaUFDS0FMY0FTRUVJQWNRRVF3WEN5QUhJQWxyUWJBQlJ3MFRJQVVnQVVFS0VLNEtJZ1JGRFJNTUZnc2dBU2dDRUNFSElBRW9BZ3doQ1NBRklBRVFvd1lpQkEwVklBVWdBVUVGRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRZkxhQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdXQ3lBRklBRkJCaEFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSDAxZ0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1GZ3NnQlNBQlFRY1FHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQmc5MEFFQTRhSUFJb0F0d0JJUVFnQnhBUkRCWUxJQWNnQ1d0QmtBRkhEUklnQlNBQlFRZ1FyZ29pQkVVTkVnd1ZDeUFCS0FJUUlRY2dBU2dDRENFSklBVWdBUkNqQmlJRURSUWdCU0FCUVFVUUd4QjRSUVJBSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCOHRvQUVBNGFJQUlvQXR3QklRUWdCeEFSREJVTElBVWdBVUVHRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRYlhkQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdWQ3lBRklBRkJCeEFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSC8zQUFRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1GUXNnQnlBSmEwR1FBVWNORVNBRklBRkJDQkN1Q2lJRVJRMFJEQlFMSUFVZ0FVRUVFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFjZmVBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd1VDeUFGSUFGQkJSQWJFSGhGQkVBZ0FrRWdhaUlISUFWQmRpQUJFQkFnQjBHWTNnQVFEaG9nQWlnQzNBRWhCQ0FIRUJFTUZBc2dCU0FCUVFZUUd4QjREUk1nQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEhwM1FBUURob2dBaWdDM0FFaEJDQUhFQkVNRXdzZ0JTQUJRUVFRR3hCNERSSWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSEIyZ0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1FZ3NnQlNBQlFRUVFHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQjlOWUFFQTRhSUFJb0F0d0JJUVFnQnhBUkRCSUxJQVVnQVVFRkVCc1FlQTBSSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCZzkwQUVBNGFJQUlvQXR3QklRUWdCeEFSREJFTElBVWdBVUVFRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRYWpYQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdSQ3lBRklBRkJCUkFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSFoyd0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1FUXNnQlNBQlFRWVFHeEJ3UVFkR0RSQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSG12UU1RRGhvZ0FpZ0MzQUVoQkNBSEVCRU1FQXNnQlNBQlFRUVFHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQnFOY0FFQTRhSUFJb0F0d0JJUVFnQnhBUkRCQUxJQVVnQVVFRkVCc1FlRVVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWRuYkFCQU9HaUFDS0FMY0FTRUVJQWNRRVF3UUN5QUZJQUZCQmhBYkVIZ05EeUFDUVNCcUlnY2dCVUYySUFFUUVDQUhRYWZiQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdQQ3lBRklBRVFvd1lpQkEwT0lBVWdBVUVGRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRY2ZlQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdQQ3lBRklBRkJCaEFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwR1kzZ0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1Ed3RCQUNFRUlBVWdBVUVIRUJzUWVBME9JQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEI2ZDBBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQTRMSUFVZ0FVRUVFQnNRZUEwTklBSkJJR29pQnlBRlFYWWdBUkFRSUFkQmc5MEFFQTRhSUFJb0F0d0JJUVFnQnhBUkRBMExJQVVnQVVFRUVCc1FlRVVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWJQV0FCQU9HaUFDS0FMY0FTRUVJQWNRRVF3TkN5QUZJQUZCQlJBYkVIaEZCRUFnQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEh0MWdBUURob2dBaWdDM0FFaEJDQUhFQkVNRFFzZ0JTQUJRUVlRR3hCNERRd2dBa0VnYWlJSElBVkJkaUFCRUJBZ0IwR08zQUFRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1EQXNnQlNBQkVLTUdJZ1FOQ3lBRklBRkJCUkFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSHkyZ0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1EQXNnQlNBQlFRWVFHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQjlOWUFFQTRhSUFJb0F0d0JJUVFnQnhBUkRBd0xRUUFoQkNBRklBRkJCeEFiRUhnTkN5QUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFZUGRBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0xDeUFGSUFFUW93WWlCQTBLSUFVZ0FVRUZFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFmTGFBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0xDeUFGSUFGQkJoQWJFSGhGQkVBZ0FrRWdhaUlISUFWQmRpQUJFQkFnQjBHbzF3QVFEaG9nQWlnQzNBRWhCQ0FIRUJFTUN3c2dCU0FCUVFjUUd4QjRSUVJBSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCMmRzQUVBNGFJQUlvQXR3QklRUWdCeEFSREFzTElBVWdBVUVJRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRZlRXQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdMQzBFQUlRUWdCU0FCUVFrUUd4QjREUW9nQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEdEM1FBUURob2dBaWdDM0FFaEJDQUhFQkVNQ2dzZ0JTQUJRUVFRR3hCNFJRUkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEI5TllBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQW9MSUFVZ0FVRUZFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFZUGRBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0tDeUFGSUFGQkJoQWJFSEJCQjBZTkNTQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFlYTlBeEFPR2lBQ0tBTGNBU0VFSUFjUUVRd0pDeUFGSUFGQkJCQWJFSGhGQkVBZ0FrRWdhaUlISUFWQmRpQUJFQkFnQjBIMjNnQVFEaG9nQWlnQzNBRWhCQ0FIRUJFTUNRc2dCU0FCUVFVUUd4QndRUWRIRFFSQkJpRUVBMEFnQkNBQktBSVFJQUVvQWd4clFRUjFUdzBHSUFFZ0JCQWJJUWNnQkVFQmFpRUVJQVVnQnhCNERRQUxJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEIwTmdBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQWdMSUFVZ0FVRUVFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFhalhBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0lDeUFGSUFGQkJSQWJFSGhGQkVBZ0FrRWdhaUlISUFWQmRpQUJFQkFnQjBIWjJ3QVFEaG9nQWlnQzNBRWhCQ0FIRUJFTUNBc2dCU0FCUVFZUUd4QjREUWNnQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEdEM1FBUURob2dBaWdDM0FFaEJDQUhFQkVNQndzZ0JTQUJRUVFRR3hCNFJRUkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEI5TllBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQWNMSUFVZ0FVRUZFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFZUGRBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0hDeUFGSUFGQkJoQWJFSGdOQmlBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWNmY0FCQU9HaUFDS0FMY0FTRUVJQWNRRVF3R0N5QUNRU0JxSWdjZ0JVRjJJQUVRRUNBSElBSkJFR29RRWhvZ0IwSFZQQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0VDeUFDUVNCcUlnY2dCVUYySUFFUUVDQUhRZDJBQXhBT0dpQUNLQUxjQVNFRUlBY1FFUXdDQ3lBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWFpOUF4QU9HaUFDS0FMY0FTRUVJQWNRRVF3REMwRUFJUVFNQWdzZ0FoQVBHZ3NnQWtFUWFoQVBHZ3NnQWtIZ0FXb2tBQ0FFSVFJTElBWkJDR29RRHhvZ0N4QVBHaUFHUVRCcUVBOGFEQWNMSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFZKzJDaEFPR2lBRVFZSFVBaEFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFZTFFkV1NCMEdsbXdKQjNSeEJyaThRQUFBTElBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRYjNFQ2hBT0dpQUVRZWJ5Q1JBT0dpQUVRZHp6Q1JBT0dpQUVRZm1GQkJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBUUxJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQ3lBR1FZQUNhaEF1SUFRZ0N4QVNHaUFFUWUyMURCQU9HaUFFUWR1QkFSQU9HaUFHS0FMOEFTRUNJQXNRRHhvZ0JCQVJDMEVCSUFkMFFaK0NCSEZGSUFkQkVFdHlEUUlMSUFVUXBBY2lBa1VFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFR0xxZ0VRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3Q0N3SkFJQVVnQ1JCUUJFQWdCU0FKRUQ0Z0FrWU5BUXNnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQmd2d0lFQTRhSUFRZ0FoQWhHaUFFUWFhK0NCQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQUlMSUFaQkFEWUNDQ0FGSUF3Z0JrRUlhaUFHUVJocUVJZ0NSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFaamNBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFJTElBWW9BaGdpQWtFSVRVRUFRUUVnQW5SQnNBTnhHMFVFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSE0xQUlRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3Q0N5QUZJQVlvQWdnUWR3UkFJQVVnQmlnQ0NCQStRUkJHRFFFTElBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZWlKQWhBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBRUxRUUFoQWdzZ0JrR1FBbW9rQUNBQ0lRRUxJQUVMSWdFTkJ5TUFRZUFCYXlJQ0pBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBeThCSGlJQlFRNXJEZ01CQUFNQ0N3SkFJQVVnQTBFQkVCc2lCQkFnSWdFRVFDQUJMd0VlUVRaR0RRRUxJQUpCSUdvaUFTQUZRWFlnQXhBUUlBRkJ6TU1MRUE0YUlBSkJFR29pQmlBRklBUVFLaUFCSUFZUUVob2dBVUdGMVFjUURob2dBaWdDM0FFaEJ5QUdFQThhREFZTEFrQWdBMEVBRUJzaUNVRUdSZzBBSUFVZ0FVRURFQnNRSUNJSEJFQWdCeWdDQkNBSEtBSUFhMEVNUmcwQkN5QUNRU0JxSWdFZ0JVRjJJQU1RRUNBQ1FSQnFJZ1lnQlVHWkpCQTNJQUVnQmhBU0dpQUJRY3pEQ3hBT0dpQUNJQVVnQkJBcUlBRWdBaEFTR2lBQlFmN09CeEFPR2lBQ0tBTGNBU0VISUFJUUR4b2dCaEFQR2d3R0N3SkFJQVVnQVNnQ0pCQWdJZ0VFUUNBQkx3RWVRUk5HRFFFTElBSkJJR29pQVNBRlFYWWdBeEFRSUFKQkVHb2lCaUFGUVpra0VEY2dBU0FHRUJJYUlBRkJ6TU1MRUE0YUlBSWdCU0FFRUNvZ0FTQUNFQklhSUFGQnFQd0hFQTRhSUFJb0F0d0JJUWNnQWhBUEdpQUdFQThhREFZTElBVWdCQkMwQ0NFRUlBVXRBSUFCUVFKeFJRMEVBa0FDUUFKQUFrQWdDVUVCYXc0RUFRRUNBQU1MQWtBZ0JBUkFJQUpCQnpZQ0lBSkFJQVFnQWtFZ2FoRFVCVVVOQUNBQ1FRZzJBaEFnQkNBQ1FSQnFFTlFGUlEwQUlBSkJJR29pQVNBRlFYSWdBeEFRSUFGQnM3Z0hFQTRhSUFJb0F0d0JJUWNNQ3dzZ0FrRUhOZ0lnSUFRZ0FrRWdhaERVQlEwQklBSkJDRFlDRUNBRUlBSkJFR29RMUFVTkFRc2dBa0VnYWlJQklBVkJjaUFERUJBZ0FVSCsrQWNRRGhvZ0FpZ0MzQUVoQnd3SkN5QUVRUVJxSVFZZ0JDZ0NBQ0VIUVFBaEFRTkFJQVlnQjBjRVFDQUJJQWNvQWhCQkRtdEJBMGxxSVFFZ0J4Qk1JUWNNQVFzTElBRkJBazhFUUNBQ1FTQnFJZ0VnQlVGeUlBTVFFQ0FCUWJLOEJ4QU9HaUFDS0FMY0FTRUhEQWtMSUFRb0FnQWhCMEVBSVFFRFFDQUdJQWRIQkVBZ0FTQUhLQUlRUWZZcGEwRUdTV29oQVNBSEVFd2hCd3dCQ3dzZ0FVRUNUd1JBSUFKQklHb2lBU0FGUVhJZ0F4QVFJQUZCNmZrSEVBNGFJQUlvQXR3QklRY01DUXNnQkNnQ0FDRUhRUUFoQVFOQUlBWWdCMGNFUUNBQklBY29BaEJCMXlkclFRTkphaUVCSUFjUVRDRUhEQUVMQ3lBQlFRSlBCRUFnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUd1dlFjUURob2dBaWdDM0FFaEJ3d0pDeUFFS0FJQUlRZEJBQ0VCQTBBZ0JpQUhSd1JBSUFFZ0J5Z0NFRUhhSjJ0QkEwbHFJUUVnQnhCTUlRY01BUXNMSUFGQkFra05CeUFDUVNCcUlnRWdCVUZ5SUFNUUVDQUJRZEcrQnhBT0dpQUNLQUxjQVNFSERBZ0xJQVJGRFFZZ0JFRUVhaUVHSUFRb0FnQWhCMEVBSVFFRFFDQUdJQWRIQkVBZ0FTQUhLQUlRUVFGclFRTkphaUVCSUFjUVRDRUhEQUVMQ3lBQlFRSlBCRUFnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUdndXdjUURob2dBaWdDM0FFaEJ3d0lDeUFFS0FJQUlRZEJBQ0VCQTBBZ0JpQUhSd1JBSUFFZ0FVRUJhaUFIS0FJUUlnRkJHVXRCQVNBQmRFR0FnSUFhY1VWeUd5RUJJQWNRVENFSERBRUxDeUFCUVFKT0JFQWdBa0VnYWlJQklBVkJjaUFERUJBZ0FVR2x1UWNRRGhvZ0FpZ0MzQUVoQnd3SUN5QUVLQUlBSVFkQkFDRUJBMEFnQmlBSFJ3UkFJQUVnQnlnQ0VFRitjVUVFUm1vaEFTQUhFRXdoQnd3QkN3c2dBVUVDU1EwR0lBSkJJR29pQVNBRlFYSWdBeEFRSUFGQnZiY0hFQTRhSUFJb0F0d0JJUWNNQndzQ1FDQUVCRUFnQkVFRWFpRUdJQVFvQWdBaEIwRUFJUUVEUUNBR0lBZEhCRUFnQVNBSEtBSVFRUk5yUVFWSmFpRUJJQWNRVENFSERBRUxDeUFCUVFGR0RRRUxJQUpCSUdvaUFTQUZRWElnQXhBUUlBRkJsN1lIRUE0YUlBSW9BdHdCSVFjTUJ3c2dCQ2dDQUNFSFFRQWhBUU5BSUFZZ0IwY0VRQ0FCSUFjb0FoQkJHMnRCQTBscUlRRWdCeEJNSVFjTUFRc0xJQUZCQVVZTkJTQUNRU0JxSWdFZ0JVRnlJQU1RRUNBQlFaaTZCeEFPR2lBQ0tBTGNBU0VIREFZTElBbEI5U2xHRFFNTUJBc0NRQ0FGS0FLVUEwRURSZzBBSUFWQmdBRnFRZUVwRUdoRkRRQWdBa0VnYWlJQklBVkJjaUFERUJBZ0FVSDEvUWNRRGhvZ0FpZ0MzQUVoQnd3RkN3SkFJQVVvQWdBb0FnQVFwZ1pGRFFBQ1FDQUZLQUtRQTBFQlJnMEFJQVVvQXBBRFFRSkdEUUFnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUd0dGd3UURob2dBVUhkb2djUURob2dBaWdDM0FFaEJ3d0dDeUFGS0FLVUEwRUNSZzBBSUFKQklHb2lBU0FGUVhJZ0F4QVFJQUZCN0tFSEVBNGFJQUlvQXR3QklRY01CUXNnQlNnQ0FDZ0NBQkJIUlEwRklBVW9BcEFEUlEwRklBVW9BcEFEUWVRcFJnMEZJQUpCSUdvaUFTQUZRWElnQXhBUUlBSkJFR29pQkNBRlFac2tFRGNnQVNBRUVCSWFJQUZCOExVTUVBNGFJQUZCdEtBSEVBNGFJQUlvQXR3QklRY2dCQkFQR2d3RUN5QUJRY3NDUncwRUN5QUNJQU5CQUJBYk5nSUFJQVVvQXNBQklBVW9Bc1FCSUFJUW1nVWdCU2dDeEFGR0JFQWdBa0VnYWlJQklBVkJkaUFERUJBZ0FVSHJ3d3NRRGhvZ0FrRVFhaUlFSUFVZ0FpZ0NBQkFxSUFFZ0JCQVNHaUFCUWJ1YUJ4QU9HaUFDS0FMY0FTRUhJQVFRRHhvTUF3c2dBMEVCRUJzaEJBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0F5OEJIa0hMQWtZRVFFRUNJQU1vQWhBZ0F5Z0NER3RCQkhVaUFTQUJRUUpOR3lFQklBUkJKV3RCQWtzaEJrRUNJUWNEUUNBQklBZEdEUUlnQlNBRFFRSVFHeEFnSVFrZ0JnMERJQWRCQVdvaEJ5QUpMd0VlRUtNQ0RRQUxJQUpCSUdvaUFTQUZRWFlnQXhBUUlBRkI0cTRIRUE0YUlBSW9BdHdCSVFjTUN3c2dCRUVsYTBFQ1N3MEFJQUpCSUdvaUFTQUZRWElnQXhBUUlBRkI3c0VIRUE0YUlBSW9BdHdCSVFjTUNnc2dCU0FDS0FJQUVLVUdJUUVDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQkE0b0FRTURBd01ERGc0T0RnTVBEZzhPRGc0SUJ3RUJBUVFCQXdNRkFnRUJCd2NQRHc4UER3OElCd0FMSUFSQjF5ZHJRUVpKSUFSQjlpbHJRUVpKY2cwTklBUkJsU2xySWdkQkhVME5CUXdNQ3lBQlFRUnFJUVlnQVNnQ0FDRUhBMEFnQmlBSFJnME9JQWNvQWhCQkEwWUVRQ0FIRUV3aEJ3d0JDd3NnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUdWM3djUURob2dBaWdDM0FFaEJ3d1FDeUFGUVlBQmFpRUdJQUZCQkdvaENTQUJLQUlBSVFjRFFDQUhJQWxHRFEwQ1FDQUhLQUlRSWdGQkEwWU5BQ0FCUVpRcFJ3UkFJQUZCOVNsSERRd2dCa0dqS1JCb0RRRU1EQXNnQmtHU0tSQm9SUTBMQ3lBSEVFd2hCd3dBQ3dBTElBRkJCR29oQmlBQktBSUFJUWNEUUNBR0lBZEdEUXdnQnlnQ0VFRUJhMEVCVFFSQUlBY1FUQ0VIREFFTEN5QUNRU0JxSWdFZ0JVRnlJQU1RRUNBQlFlemdCeEFPR2lBQ0tBTGNBU0VIREE0TElBRkJCR29oQmlBQktBSUFJUWNEUUNBR0lBZEdEUXNnQnlnQ0VFRUJhMEVDVFFSQUlBY1FUQ0VIREFFTEN5QUNRU0JxSWdFZ0JVRnlJQU1RRUNBQlFadmdCeEFPR2lBQ0tBTGNBU0VIREEwTElBVkJnQUZxSVFZZ0FVRUVhaUVKSUFFb0FnQWhCd05BSUFjZ0NVWU5DZ0pBSUFjb0FoQWlBVUVCYTBFRFNRMEFJQUZCbENsSEJFQWdBVUgxS1VjTkNDQUdRYU1wRUdnTkFRd0lDeUFHUVpJcEVHaEZEUWNMSUFjUVRDRUhEQUFMQUF0QkFTQUhkRUdEZ0lDQUFuRkZEUVlnQVVFRWFpRUdJQUVvQWdBaEJ3TkFJQVlnQjBZTkNTQUhLQUlRSWdGQjlTbEhJQUZCbENsSGNVVUVRQ0FIRUV3aEJ3d0JDd3NnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUcrNGdjUURob2dBaWdDM0FFaEJ3d0xDeUFCUVFScUlRWWdBU2dDQUNFSEEwQWdCaUFIUmcwSUlBY29BaEJCQmtZRVFDQUhFRXdoQnd3QkN3c2dBa0VnYWlJQklBVkJjaUFERUJBZ0FVR3g0UWNRRGhvZ0FpZ0MzQUVoQnd3S0N3SkFJQVJCSmtjTkFDQUZMUUN0QXcwQUlBVW9BZ1F0QUNzTkFDQUNRU0JxSWdFZ0JVRnlJQU1RRUNBQlFZR2JCeEFPR2lBQ0tBTGNBU0VIREFvTElBVkJnQUZxSVFZZ0FVRUVhaUVKSUFFb0FnQWhCd05BSUFjZ0NVWU5Cd0pBSUFjb0FoQWlBVUVGYTBFQ1NRMEFJQUZCa3lsclFRSlBCRUFnQVVIMEtXdEJBVXNOQkNBR1FhTXBFR2dOQVF3RUN5QUdRWklwRUdoRkRRTUxJQWNRVENFSERBQUxBQXNnQWtFZ2FpSUJJQVZCZGlBREVCQWdBVUdId3djUURob2dBaWdDM0FFaEJ3d0lDd0pBSUFaQmtpa1FhRVVFUUNBR1FhTXBFR2hGRFFFTElBSkJJR29pQVNBRlFYSWdBeEFRSUFGQml1TUhFQTRhSUFJb0F0d0JJUWNNQ0FzZ0FrRWdhaUlCSUFWQmNpQURFQkFnQVVIeTRRY1FEaG9nQWlnQzNBRWhCd3dIQ3dKQUlBWkJraWtRYUVVRVFDQUdRYU1wRUdoRkRRRUxJQUpCSUdvaUFTQUZRWElnQXhBUUlBRkJ6ZVFIRUE0YUlBSW9BdHdCSVFjTUJ3c2dBa0VnYWlJQklBVkJjaUFERUJBZ0FVR2I0QWNRRGhvZ0FpZ0MzQUVoQnd3R0N3SkFJQVpCa2lrUWFFVUVRQ0FHUWFNcEVHaEZEUUVMSUFKQklHb2lBU0FGUVhJZ0F4QVFJQUZCK09NSEVBNGFJQUlvQXR3QklRY01CZ3NnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUdWM3djUURob2dBaWdDM0FFaEJ3d0ZDeUFFUVprblJ3MEJDeUFCUVFScUlRWWdBU2dDQUNFSEEwQWdCaUFIUmcwQklBY29BaEJCQkVZRVFDQUhFRXdoQnd3QkN3c2dBa0VnYWlJQklBVkJjaUFERUJBZ0FVSFkzd2NRRGhvZ0FpZ0MzQUVoQnd3REN5QUZLQUlBS0FJQUVFZEZEUU1DUUFKQUlBUkJCbXNPQXdFRkFBVUxJQUpCSUdvaUFTQUZRWElnQXhBUUlBSkJFR29pQkNBRlFhMGtFRGNnQVNBRUVCSWFJQUZCdVA4SEVBNGFJQUlvQXR3QklRY2dCQkFQR2d3REN5QUNRU0JxSWdFZ0JVRnlJQU1RRUNBQ1FSQnFJZ1FnQlVHdUpCQTNJQUVnQkJBU0dpQUJRWWlBQ0JBT0dpQUNLQUxjQVNFSElBUVFEeG9NQWdzQ1FDQUVCRUFnQkVFRWFpRUdJQVFvQWdBaEIwRUFJUUVEUUNBR0lBZEhCRUFnQVNBQlFRRnFJQWNvQWhBaUFVRWJSaUFCUWJJcFJuSkZJQUZCbFNsSGNSc2hBU0FIRUV3aEJ3d0JDd3NnQVVFQlJnMEJDeUFDUVNCcUlnRWdCVUZ5SUFNUUVDQUJRZURBQnhBT0dpQUNLQUxjQVNFSERBSUxJQVFvQWdBaEIwRUFJUUVEUUNBR0lBZEhCRUFnQVNBSEtBSVFJZ3RCbGlsR0lBdEJHa1p5YWlFQklBY1FUQ0VIREFFTEN5QUJRUUpHRFFBZ0FrRWdhaUlCSUFWQmNpQURFQkFnQVVIeHZ3Y1FEaG9nQWlnQzNBRWhCd3dCQ3lBRktBSUFLQUlBRUVkRklBbEJCVWR5RFFFZ0JBUkFJQUpCRVRZQ0lDQUVJQUpCSUdvUTFBVU5BZ3NnQlNnQ3BBRWhBU0FGS0FLZ0FTRUhBMEFnQVNBSFJ3UkFJQWN2QVI0aUJFSEhBRVlFZndKQUlBY29BaEFnQnlnQ0RHdEJJVWtOQUNBSFFRRVFHMEVMUncwQUlBZEJBaEFiUVJsR0RRVUxJQWN2QVI0RklBUUxRZi8vQTNGQnl3SkdCRUFnQjBFQkVCdEJKa1lOQkFzZ0IwSE1BR29oQnd3QkN3c2dBa0VnYWlJQklBVkJjaUFERUJBZ0FrRVFhaUlFSUFWQm1qSVFOeUFCSUFRUUVob2dBVUdvaFFnUURob2dBaWdDM0FFaEJ5QUVFQThhQ3lBQkVCRWdCdzBCQzBFQUlRY0xJQUpCNEFGcUpBQWdCeUlCRFFkQkFDRUhJd0JCZ0FKcklna2tBQUpBSUFOQkhtb2lCQzhCQUJEUUFrVUVRQ0FFTHdFQVFTZEhEUUVMSUFRaEFRSkFJQVZCa0FGcVFlOEFFR2dOQUNBRUx3RUFJZzlCSEdzaUFVSC8vd054UVFWUFFSY2dBWFpCQVhGRmNrVUVRQ0FCUVJCMFFSQjFRUUYwUWVySURXb2hBUXdCQ3lBRUlRRUNmeU1BUVNCcklnc2tBQ0FMUVFBMkFoZ2dDMElBTndNUUlBc2dBeThCSGpZQ0NDQUxRUkJxSUF0QkNHb1Ezd0lDUUFOQUlBTW9BaEFnQXlnQ0RDSUNhMEVFZFNBSFN3UkFJQUlnQjBFRWRHb2lBaWdDQkVFRFJ3UkFJQUl2QVFBaUJpQUNMd0VDYWlJTUlBTW9BZ1FnQXlnQ0FDSUNhMEVDZFVvTkF5QUxRUkJxSUFzb0FoUWdBaUFHUVFKMGFpQUNJQXhCQW5ScUVOSUtDeUFIUVFGcUlRY01BUXNMSXdCQkVHc2lFU1FBSXdCQkVHc2lEQ1FBSUF0QkVHb2hEU0FGUWZRQ2FpSVFRUVJxSVFjQ1FDQVFLQUlFSWdaRkJFQWdCeUVDREFFTEEwQWdEU0FHSWdKQkVHb2lCaEQ4RFFSQUlBSWhCeUFDS0FJQUlnWU5BUXdDQ3lBR0lBMFEvQTFGRFFFZ0FrRUVhaUVISUFJb0FnUWlCZzBBQ3dzZ0RDQUNOZ0lNSUJFZ0J5Z0NBQ0lDQkg5QkFBVkJIQkFWSVFJZ0RDQVFRUVJxTmdJRUlBd2dBallDQUNBQ1FSQnFJQTBRcFFJYUlBeEJBVG9BQ0NBUUlBd29BZ3dnQnlBTUtBSUFFUGdDSUF3b0FnQWhBaUFNUVFBMkFnQWdEQ2dDQUNFSElBeEJBRFlDQUNBSEJFQWdEQzBBQ0FSQUlBZEJFR29RTWhvTElBY0VRQ0FIRUI4TEMwRUJDem9BRENBUklBSTJBZ2dnREVFUWFpUUFJQXNnRVNnQ0NEWUNDQ0FMSUJFdEFBdzZBQXdnRVVFUWFpUUFJQXN0QUF3aEFpQU5FRElhSUF0QklHb2tBQ0FDREFFTFFhN29DRUg0cXdKQnVnWkJzOTRDRUFBQUN3MEFJQWxCUUdzaUFTQUZRWElnQXhBUUlBRkI4YVlNRUE0YUlBRWdEeEFwRUE0YUlBRkJ1cTBNRUE0YUlBRWdBeWdDS0JBaEdpQUpLQUw4QVNFSElBRVFFU0FFSVFFZ0J3MEJDd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQkx3RUFJZ0ZCRldzT0V3QUJBZ01PRGc0RUJRWU9EQXNPRGc0T0Rnb0pDd0pBQWtBQ1FBSkFBa0FnQTBFQkVCc2lBa0VkZENBQ1FRaHJRUU4yY2c0SUFBRURCQU1EQXdJREN5QUZMUUNtQXcwUklBbEJRR3NpQVNBRlFYSWdBeEFRSUFGQnZhd0hFQTRhSUFrb0F2d0JJUWNnQVJBUkRCQUxJQVV0QUtFRERSQWdDVUZBYXlJQklBVkJjaUFERUJBZ0FVR3ZyUWNRRGhvZ0NTZ0MvQUVoQnlBQkVCRU1Ed3NnQlMwQWdRRkJDSEVORHlBSlFVQnJJZ0VnQlVGeUlBTVFFQ0FCUWR1U0J4QU9HaUFKS0FMOEFTRUhJQUVRRVF3T0N5QUpRVUJySWdFZ0JVRnlJQU1RRUNBQlFZWDlDQkFPR2lBQklBSVFJUm9nQVVHQ3FBY1FEaG9nQ1NnQy9BRWhCeUFCRUJFTURRc2dBMEVDRUJ0QkFrOEVRQ0FKUVVCcklnRWdCVUY1SUFNUUVDQUJRZnpwQmhBT0dpQUpLQUw4QVNFSElBRVFFUXdOQ3lBRUx3RUFRUlZIRFEwZ0JTMEFnQUZCd0FCeFJRME5JQU5CQWhBYlJRME5JQWxCUUdzaUFTQUZRWHdnQXhBUUlBRkJxUDBIRUE0YUlBa29BdndCSVFjZ0FSQVJEQXdMQWtBZ0EwRUJFQnNpQWtIQUFFY0VRQ0FDUVNCR0RRNGdBa0VRUncwQklBVXRBS0lERFE0Z0NVRkFheUlCSUFWQmNpQURFQkFnQVVHb3lRa1FEaG9nQVVIRm1RY1FEaG9nQ1NnQy9BRWhCeUFCRUJFTURRc2dCUzBBZ1FGQkJIRU5EU0FKUVVCcklnRWdCVUZ5SUFNUUVDQUJRY2ZKQ1JBT0dpQUJRWmFUQnhBT0dpQUpLQUw4QVNFSElBRVFFUXdNQ3lBSlFVQnJJZ0VnQlVGeUlBTVFFQ0FCUVlYOUNCQU9HaUFCSUFJUUlSb2dBVUdOcXdjUURob2dDU2dDL0FFaEJ5QUJFQkVNQ3dzQ1FDQUZJQU5CQVJBYklnUVFJQ0lCQkVBZ0FTOEJIaENERncwQkN5QUpRVUJySWdFZ0JVRjJJQU1RRUNBQlFlN1BDeEFPR2lBSlFRaHFJZ0lnQlNBRUVDb2dBU0FDRUJJYUlBRkIvdkFIRUE0YUlBa29BdndCSVFjZ0FoQVBHaUFCRUJFTUN3c2dBMEVDRUJzaUFrRUNhMEVEU1EwTElBSkJFRWNnQWtFSVIzRkZCRUFnQlMwQWdBRkJnQUZ4RFF3Z0NVRkFheUlCSUFWQmNpQURFQkFnQVVHUHFnb1FEaG9nQVNBQ0VDRWFJQUZCMmUwSkVBNGFJQUVnQXk4QkhoQXBFQTRhSUFGQnl4RVFEaG9nQ1NnQy9BRWhCeUFCRUJFTUN3c2dDVUZBYXlJQklBVkJjaUFERUJBZ0FVSG0vQWdRRGhvZ0FTQUNFQ0VhSUFGQmhQRUpFQTRhSUFFZ0F5OEJIaEFwRUE0YUlBa29BdndCSVFjZ0FSQVJEQW9MQWtBZ0JTQURRUUVRR3hBZ0lnRUVRQ0FCTHdFZVFSZEdEUUVMSUFsQlFHc2lBU0FGUVhZZ0F4QVFJQUZCMThRSEVBNGFJQWtvQXZ3QklRY2dBUkFSREFvTElBVWdBVUVCRUJzUUlDOEJIa0VXUndSQUlBbEJRR3NpQVNBRlFYSWdBeEFRSUFGQmhMUUhFQTRhSUFrb0F2d0JJUWNnQVJBUkRBb0xJQU5CQWhBYlFRVnJRWHhMRFFvZ0NVRkFheUlCSUFWQmNpQURFQkFnQVVHZXNRY1FEaG9nQ1NnQy9BRWhCeUFCRUJFTUNRc0NRQ0FGSUFOQkFSQWJJZ0lRSUNJQkJFQWdBUzhCSGhEUUFnMEJDeUFKUVVCcklnRWdCVUYySUFNUUVDQUJRYi9RQ3hBT0dpQUpRUWhxSWdRZ0JTQUNFQ29nQVNBRUVCSWFJQUZCZy9VSEVBNGFJQWtvQXZ3QklRY2dCQkFQR2lBQkVCRU1DUXNnQVM4QkhrRVRSZ1JBSUFsQlFHc2lBU0FGUVhZZ0F4QVFJQUZCdjlBTEVBNGFJQWxCQ0dvaUJDQUZJQUlRS2lBQklBUVFFaG9nQVVITDlBY1FEaG9nQ1NnQy9BRWhCeUFFRUE4YUlBRVFFUXdKQ3dKQUlBVW9BZ0FvQWdBUVIwVU5BQ0FCTHdFZVFSMUhEUUFnQ1VGQWF5SUJJQVZCZGlBREVCQWdDVUVJYWlJRUlBVkJ5Q1FRTnlBQklBUVFFaG9nQVVHLzBBc1FEaG9nQ1VFd2FpSUdJQVVnQWhBcUlBRWdCaEFTR2lBQlFaaVJDaEFPR2lBSlFTQnFJZ0lnQlNnQ0FDZ0NBQkNCQWlBQklBSVFFaG9nQVVHK3F3Y1FEaG9nQ1NnQy9BRWhCeUFDRUE4YUlBWVFEeG9nQkJBUEdpQUJFQkVNQ1FzQ1FDQUZJQU5CQWhBYklnSVFJQ0lCQkVBZ0FTOEJIaENqQWcwQkN5QUpRVUJySWdFZ0JVRjJJQU1RRUNBQlFlakxDeEFPR2lBSlFRaHFJZ1FnQlNBQ0VDb2dBU0FFRUJJYUlBRkIwK3dIRUE0YUlBa29BdndCSVFjZ0JCQVBHaUFCRUJFTUNRc0NRQUpBSUFVZ0NVRUlhaUFCRUxBQklnd29BZ0FvQWdRUUlDSUVCRUFnQkM4QkhrRVZSZzBCQ3lBSlFVQnJJZ0VnQlVGMklBTVFFQ0FCUWVqTEN4QU9HaUFKUVRCcUlnUWdCU0FDRUNvZ0FTQUVFQklhSUFGQjllOEhFQTRhSUFrb0F2d0JJUWNnQkJBUEdpQUJFQkVNQVF0QkFDRUhBa0FDUUFKQUlBRXZBUjVCSzJzT0NnQUJBUUlCQVFFQUFRTUJDeUFCS0FJQUlnWW9BZ3doQ3lBRUtBSUFJZ1FvQWd3aEVTQUVLQUlJSWdSQklFMEVmaUFMckFVZ0JFSEJBRThOQnlBQktBSUVJQVpyUVJCTkRRWWdDNjBnQmpVQ0VFSWdob1FMSWk5UVJTQVJSU0F2UWdCWmNuRU5BaUFKUVVCcklnRWdCVUYySUFNUUVDQUJRZWpMQ3hBT0dpQUpRVEJxSWdRZ0JTQUNFQ29nQVNBRUVCSWFJQUZCK3NrS0VBNGFJQUVnTHhDYUJpQUpLQUw4QVNFSElBUVFEeG9nQVJBUkRBSUxRZFNkQ1VIeHJBSkJsQUpCeFJ3UUFBQUxJQWxCUUdzaUFTQUZRWFlnQXhBUUlBRkI2TXNMRUE0YUlBbEJNR29pQkNBRklBSVFLaUFCSUFRUUVob2dBVUdEbFFnUURob2dDU2dDL0FFaEJ5QUVFQThhSUFFUUVRc2dEQkF5R2d3SUN3SkFJQVVnQTBFQkVCc2lBaEFnSWdFRVFDQUJMd0VlRU5BQ0RRRUxJQWxCUUdzaUFTQUZRWFlnQXhBUUlBRkIzdEFMRUE0YUlBbEJDR29pQkNBRklBSVFLaUFCSUFRUUVob2dBVUdEOVFjUURob2dDU2dDL0FFaEJ5QUVFQThhSUFFUUVRd0lDeUFCTHdFZVFSTkdCRUFnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUhlMEFzUURob2dDVUVJYWlJRUlBVWdBaEFxSUFFZ0JCQVNHaUFCUWN2MEJ4QU9HaUFKS0FMOEFTRUhJQVFRRHhvZ0FSQVJEQWdMSUFVb0FnQW9BZ0FRUjBVTkNDQUJMd0VlUVIxSERRZ2dDVUZBYXlJQklBVkJkaUFERUJBZ0NVRUlhaUlFSUFWQnlDUVFOeUFCSUFRUUVob2dBVUhlMEFzUURob2dDVUV3YWlJR0lBVWdBaEFxSUFFZ0JoQVNHaUFCUVppUkNoQU9HaUFKUVNCcUlnSWdCU2dDQUNnQ0FCQ0JBaUFCSUFJUUVob2dBVUcrcXdjUURob2dDU2dDL0FFaEJ5QUNFQThhSUFZUUR4b2dCQkFQR2lBQkVCRU1Cd3NnQTBFQUVCc2hCRUVCSVFjRFFDQURLQUlRSUFNb0FneHJRUVIxSUFkTkJFQkJBQ0VCUVFJaEJ3TkFJQU1vQWdRZ0F5Z0NBQ0lDYTBFQ2RTQUhUUVJBQWtBZ0F5Z0NLQ0VISXdCQkVHc2lBaVFBSUFJZ0J6WUNEQ0FGUWRRQ2FpQUNRUXhxRU4wVklBRkJBWEU2QUFBZ0FrRVFhaVFBSUFVZ0F5Z0NLQkRlRlVVTkFDQUZJQU1vQWloQkF4REFBa1VFUUNBRklBTW9BaWhCQWhEQUFrVU5BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUhGNVF3UURob2dDU2dDL0FFaEJ5QUJFQkVNQ3dzRkFrQWdCU0FDSUFkQkFuUnFLQUlBRUNBaUFrVU5BQ0FDTHdFZVFSNUhEUUFDUUNBRklBSW9BaWhCQWhEQUFnMEFJQVVnQWlnQ0tFRURFTUFDRFFBZ0JTQUNLQUlvRU40VlJRMEJDMEVCSVFFTElBZEJBV29oQnd3QkN3c2dDVUlBTndNUUlBbENBRGNEQ0NBSlFZQ0FnUHdETmdJWUlBVWdCQkRlQVNJQlFRUnFJUUlnQVNnQ0FDRUhJQWxCUUd0QkJISWhBUUpBQTBBZ0FpQUhSZ1JBQWtBZ0NTZ0NGQ0lCUVFCTUlnSU5BQ0FCSUFNb0FoQWdBeWdDREd0QkJIVkJBV3RHRFFBZ0NVRkFheUlCSUFWQmRpQURFQkFnQVVHdzZBd1FEaG9nQVVHRnBBb1FEaG9nQVVHOHpRb1FEaG9nQVVHZzJRb1FEaG9nQVNBRUVDRWFJQUZCbGFZSEVBNGFJQWtvQXZ3QklRY2dBUkFSREFNTEJRSkFJQWxCUUdzZ0IwRVFhaEMwQWlnQ0FFRUxSdzBBSUFrb0FsQWlCa0YvUmcwQUlBa2dCallDSUNBSlFUQnFJQWxCQ0dvZ0NVRWdhaENXQVFzZ0FSQXlHaUFIRUV3aEJ3d0JDd3NnQWtVRVFDTUFRUkJySWdFa0FDQUJJQVEyQWd3Z0FTQUZRYXdDYWlBQlFReHFFSllCSUFGQkVHb2tBQXRCQUNFSElBVW9BZ0FvQWdBUVIwVU5BQ0FGS0FJRUxRQXNEUUFnQXlnQ0tDRUNJQWtnQlRZQ1JDQUpRWkNSSURZQ1FDQUpJQWxCUUdzaUFUWUNVQ0FGSUFJZ0FVRUJFS01LSVFJZ0FSQVdJQUpGRFFBZ0NVRkFheUlCSUFWQmRpQURFQkFnQ1VFd2FpSUNJQVZCdXlRUU55QUJJQUlRRWhvZ0FVSHlsZ29RRGhvZ0NVRWdhaUlFSUFVb0FnQW9BZ0FRZ1FJZ0FTQUVFQklhSUFGQmgvTUhFQTRhSUFrb0F2d0JJUWNnQkJBUEdpQUNFQThhSUFFUUVRc2dDVUVJYWhCUERBZ0xJQU1nQnhBYklnSWdBeWdDS0VZRVFDQUpRVUJySWdFZ0JVRjJJQU1RRUNBQlFjeStBUkFPR2lBSktBTDhBU0VISUFFUUVRd0lDd0pBSUFVZ0FoQWdJZ0VFUUNBQkx3RWVFTkFDRFFFTElBbEJRR3NpQVNBRlFYWWdBeEFRSUFGQnpkY0xFQTRhSUFsQkNHb2lCQ0FGSUFJUUtpQUJJQVFRRWhvZ0FVR0Q5UWNRRGhvZ0NTZ0MvQUVoQnlBRUVBOGFJQUVRRVF3SUN3SkFJQUV2QVI0aUJrRWVSd1JBSUFaQkUwY05BU0FKUVVCcklnRWdCVUYySUFNUUVDQUJRZHowQnhBT0dpQUpLQUw4QVNFSElBRVFFUXdKQ3lNQVFSQnJJZ1lrQUNBR0lBSTJBZ3dnQlVHc0Ftb2dCa0VNYWhDZUFpRUxJQVpCRUdva0FDQUxSUTBBSUFsQlFHc2lBU0FGUVhZZ0F4QVFJQUZCd00wTEVBNGFJQWxCQ0dvaUJpQUZJQUlRS2lBQklBWVFFaG9nQVVHMzJna1FEaG9nQVVHbytRa1FEaG9nQVVIRHVBb1FEaG9nQVVHNnpRc1FEaG9nQ1VFd2FpSUxJQVVnQkJBcUlBRWdDeEFTR2lBQlFZYk5DeEFPR2lBSlFTQnFJZ1FnQlNBQ0VDb2dBU0FFRUJJYUlBRkIvSmNJRUE0YUlBa29BdndCSVFjZ0JCQVBHaUFMRUE4YUlBWVFEeG9nQVJBUkRBZ0xBa0FnQlNnQ0FDZ0NBQkJIUlEwQUlBRXZBUjVCSFVjTkFDQURLQUlRSUFNb0FneHJRUVIxUVFGcklBZEhCRUFnQ1VGQWF5SUJJQVZCZGlBREVCQWdDVUVJYWlJQ0lBVkJ5Q1FRTnlBQklBSVFFaG9nQVVIeWxnb1FEaG9nQ1VFd2FpSUVJQVVvQWdBb0FnQVFnUUlnQVNBRUVCSWFJQUZCdGU4QUVBNGFJQWtvQXZ3QklRY2dCQkFQR2lBQ0VBOGFJQUVRRVF3SkN5QUZJQU1vQWloQkFoREFBZzBBSUFVZ0F5Z0NLRUVERU1BQ0RRQWdDVUZBYXlJQklBVkJkaUFERUJBZ0NVRUlhaUlDSUFWQnlDUVFOeUFCSUFJUUVob2dDVUV3YWlJRUlBVW9BZ0FvQWdBUWdRSWdBU0FFRUJJYUlBRkJ1c0lKRUE0YUlBRkJ3T2NIRUE0YUlBa29BdndCSVFjZ0JCQVBHaUFDRUE4YUlBRVFFUXdJQ3lBSFFRRnFJUWNNQUFzQUMwR1Q5Z1pCOGF3Q1FTVkJ3dklHRUFBQUMwSEk4d1pCOGF3Q1FTUkJ3dklHRUFBQUN5QUJRZTRwUncwRUFrQWdCU0FEUVFFUUd5SUVFQ0FpQVFSQUlBRXZBUjVCRld0QkFra05BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUdRMEFzUURob2dDVUVJYWlJQ0lBVWdCQkFxSUFFZ0FoQVNHaUFCUWVieUJ4QU9HaUFKS0FMOEFTRUhJQUlRRHhvZ0FSQVJEQVFMQWtBQ1FDQUZJQU5CQWhBYklnUVFJQ0lCUlEwQUlBVWdBU2dDSkJCUVJRMEFJQUV2QVI0UW93SU5BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUhsMkFzUURob2dDVUVJYWlJQ0lBVWdCQkFxSUFFZ0FoQVNHaUFCUVpid0J4QU9HaUFKS0FMOEFTRUhJQUlRRHhvZ0FSQVJEQVFMQWtBQ1FDQUZJQU5CQXhBYklnUVFJQ0lCUlEwQUlBVWdBU2dDSkJCUVJRMEFJQUV2QVI0UW93SU5BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUhDeGdzUURob2dDVUVJYWlJQ0lBVWdCQkFxSUFFZ0FoQVNHaUFCUVpid0J4QU9HaUFKS0FMOEFTRUhJQUlRRHhvZ0FSQVJEQVFMQWtBZ0JTQURRUVFRR3lJRUVDQWlBVVVOQUNBRklBRW9BaVFRVUVVTkFDQUJMd0VlRUtNQ0RRVUxJQWxCUUdzaUFTQUZRWFlnQXhBUUlBRkI1OFlMRUE0YUlBbEJDR29pQWlBRklBUVFLaUFCSUFJUUVob2dBVUdXOEFjUURob2dDU2dDL0FFaEJ5QUNFQThhSUFFUUVRd0RDeUFGSUFOQkFCQWJFQ0FpQVM4QkhrRWdSd1JBSUFsQlFHc2lBU0FGUVhZZ0F4QVFJQUZCais4SEVBNGFJQWtvQXZ3QklRY2dBUkFSREFNTElBTkJBUkFiSWdJZ0FVRUJFQnRIQkVBZ0NVRkFheUlCSUFWQmRpQURFQkFnQVVIaHdnb1FEaG9nQVVHZTBBY1FEaG9nQ1NnQy9BRWhCeUFCRUJFTUF3c0NRQ0FGSUFGQkFoQWJFQ0FpQVFSQUlBRXZBUjVCSGtZTkFRc2dDVUZBYXlJQklBVkJkaUFERUJBZ0FVR002Z01RRGhvZ0NTZ0MvQUVoQnlBQkVCRU1Bd3NnQlNnQ0FDZ0NBQkJIUlNBQ1FlVXBSbklOQXlBSlFVQnJJZ0VnQlVGMklBTVFFQ0FKUVFocUlnSWdCVUhuSkJBM0lBRWdBaEFTR2lBQlFjeXpDaEFPR2lBQlFlSEtCeEFPR2lBSktBTDhBU0VISUFJUUR4b2dBUkFSREFJTEFrQWdCU0FEUVFFUUd5SUVFQ0FpQVVVTkFDQUJMd0VlRU5BQ1JRMEFRUUloQjBFQUlRRURRQ0FES0FJUUlBTW9BZ3hyUVFSMUlBZExCRUFDUUNBRklBTWdCeEFiSWdJUUlDSUVCRUFnQkM4QkhoRFFBZzBCQ3lBSlFVQnJJZ0VnQlVGMklBTVFFQ0FCUWFuWEN4QU9HaUFKUVFocUlnUWdCU0FDRUNvZ0FTQUVFQklhSUFGQmcvVUhFQTRhSUFrb0F2d0JJUWNnQkJBUEdpQUJFQkVNQlFzZ0JDOEJIa0VUUmdSQUlBbEJRR3NpQVNBRlFYWWdBeEFRSUFGQnFkY0xFQTRhSUFsQkNHb2lCQ0FGSUFJUUtpQUJJQVFRRWhvZ0FVSHgvQWNRRGhvZ0NTZ0MvQUVoQnlBRUVBOGFJQUVRRVF3RkJTQUJRUUZxSVFFZ0IwRUJhaUVIREFJTEFBc0xJQVVvQWdRb0FoUWlCQ0FCU1FSQUlBbEJRR3NpQWlBRlFYWWdBeEFRSUFKQjlaTUtFQTRhSUFJZ0JCQWhHaUFDUWJYS0N4QU9HaUFKUVFocUlnUWdCU0FEUVFBUUd4QXFJQUlnQkJBU0dpQUNRYjdsQ1JBT0dpQUNJQUVRSVJvZ0FrR3lxd2NRRGhvZ0NTZ0MvQUVoQnlBRUVBOGFJQUlRRVF3REN5QURLQUpFSVFFZ0F5Z0NRQ0VIQTBBZ0FTQUhSZzBFQWtBZ0J5Z0NBQ0lDTHdFZUlnUkJOa1lOQUNBRUVMd0lEUUFnQWhETkJRMEFJQUl2QVI0UXZRZ05BQ0FKUVVCcklnRWdCVUYySUFJUUVDQUJRYlRYQ2hBT0dpQUpRUWhxSWdJZ0JTQURLQUlvRUNvZ0FTQUNFQklhSUFGQi9KY0lFQTRhSUFrb0F2d0JJUWNnQWhBUEdpQUJFQkVNQkFzZ0IwRUlhaUVIREFBTEFBc2dDVUZBYXlJQklBVkJkaUFERUJBZ0FVSHMxd3NRRGhvZ0NVRUlhaUlDSUFVZ0JCQXFJQUVnQWhBU0dpQUJRWVAxQnhBT0dpQUpLQUw4QVNFSElBSVFEeG9nQVJBUkRBRUxBa0FnQlNBRFFRSVFHeUlFRUNBaUJ3UkFJQWN2QVI0UTBBSU5BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUdRMXdzUURob2dDVUVJYWlJQ0lBVWdCQkFxSUFFZ0FoQVNHaUFCUVlQMUJ4QU9HaUFKS0FMOEFTRUhJQUlRRHhvZ0FSQVJEQUVMQWtBZ0EwRUJFQnNpQWcwQUlBY3ZBUjRpQVVIKy93TnhRUnhHQkg4Z0JTQUhRUUVRR3hBZ0lnY3ZBUjRGSUFFTFFmLy9BM0ZCR1VjTkFDQUhRUVlRRzBFQ1J3MEFJQU1vQWlnaEJDTUFRUkJySWdFa0FDQUJJQVEyQWd3Z0FTQUZRZHdFYWlBQlFReHFFSllCSUFGQkVHb2tBQXNnQlNBQ0VMY1ZEUUVnQ1VGQWF5SUJJQVZCZkNBREVCQWdDVUVJYWlJQ0lBVkJveVFRTnlBQklBSVFFaG9nQVVHSXh3QVFEaG9nQ1NnQy9BRWhCeUFDRUE4YUlBRVFFUXNnQncwQkMwRUFJUWNMSUFsQmdBSnFKQUFnQnlJQkRRY2pBRUh3QVdzaUFTUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FETHdFZVFTbHJEZ3dBQUF3QkFnTU1BQUFFQVFVTUN5QUZJQU1vQWlRUUlDSUNCRUFnQWk4QkhrRVVSZzBNQ3lBQlFUQnFJZ1FnQlVGMklBTVFFQ0FFUWJDL0FoQU9HaUFFSUFNdkFSNFFLUkFPR2lBRVFmM1dDeEFPR2lBQlFTQnFJZ2NnQlNBREtBSWtFQ29nQkNBSEVCSWFJQVJCenZJSEVBNGFJQUVvQXV3QklRSWdCeEFQR2lBRUVCRU1DZ3NnQVVFZ2FpQUJRVEJxUWJDL0FoQVVJZ0lnQXk4QkhoQXBFQzBnQWhBUEdnSkFJQVVnQXlnQ0pCQWdJZ1FFUUNBRUx3RWVJZ0pCN2lsR0lBSkJIazFCQUVFQklBSjBRWUNBZ0l3RmNSdHlEUUVMSUFGQk1Hb2lCQ0FGUVhZZ0F4QVFJQVFnQVVFZ2FoQVNHaUFFUWYzV0N4QU9HaUFCUVJCcUlnY2dCU0FES0FJa0VDb2dCQ0FIRUJJYUlBUkJ0L01IRUE0YUlBRW9BdXdCSVFJZ0J4QVBHaUFFRUJFTUNRc2dBeWdDQkNBREtBSUFhMEVDZFNJR1FRTnJJUWRCQUNFQ0FrQUNRQUpBQWtBQ1FDQUVMd0VlSWdsQkYyc09DQUFCRFEwTkFnMERCQXNnQkVFQ0VCc2dCMGNFUUNBQlFUQnFJZ2NnQlVGMklBTVFFQ0FISUFGQklHb1FFaG9nQjBIazB3c1FEaG9nQVVFUWFpSUdJQVVnQkNnQ0tCQXFJQWNnQmhBU0dpQUhRZk9YQnhBT0dpQUJLQUxzQVNFQ0lBWVFEeG9nQnhBUkRBMExJQVVnQkVFQkVCc1FJQ0lMUlEwSVFRSWhCd05BSUFjZ0F5Z0NFQ0FES0FJTWEwRUVkVThORFFKQUlBVWdBeUFIRUJzaUJoQWdJZ2tFUUNBSkx3RWVFTDRJRFFFTElBRkJNR29pQkNBRlFYWWdBeEFRSUFRZ0FVRWdhaEFTR2lBRVFZM0VDeEFPR2lBQlFSQnFJZ2NnQlNBR0VDb2dCQ0FIRUJJYUlBUkIyT2dIRUE0YUlBRW9BdXdCSVFJZ0J4QVBHaUFFRUJFTURnc2dCU0FKS0FJa0VDQWlDUVJBSUFkQkFXb2hCeUFMTHdFZUlBa3ZBUjVHRFFFTEN5QUJRVEJxSWdjZ0JVRjJJQU1RRUNBSElBRkJJR29RRWhvZ0IwR054QXNRRGhvZ0FVRVFhaUlKSUFVZ0JoQXFJQWNnQ1JBU0dpQUhRYzdVQ3hBT0dpQUJJQVVnQkNnQ0tCQXFJQWNnQVJBU0dpQUhRYnpzQnhBT0dpQUJLQUxzQVNFQ0lBRVFEeG9nQ1JBUEdpQUhFQkVNREFzZ0JFRUNFQnNnQjBjRVFDQUJRVEJxSWdjZ0JVRjJJQU1RRUNBSElBRkJJR29RRWhvZ0IwSGswd3NRRGhvZ0FVRVFhaUlHSUFVZ0JDZ0NLQkFxSUFjZ0JoQVNHaUFIUVlhWkJ4QU9HaUFCS0FMc0FTRUNJQVlRRHhvZ0J4QVJEQXdMSUFVZ0JDZ0NBQ2dDQ0JBZ0lnWkZCRUFnQVVFd2FpSUhJQVZCZGlBRUVCQWdCMEhiZ3dnUURob2dBU2dDN0FFaEFpQUhFQkVNREF0QkFpRUhJQVpCQWhBYklSRWdCU0FHUVFFUUd4QWdJZzFGRFFnRFFDQUhJQU1vQWhBZ0F5Z0NER3RCQkhWUERRd0NRQ0FGSUFNZ0J4QWJJZ2tRSUNJTEJFQWdDeThCSGhDK0NBMEJDeUFCUVRCcUlnUWdCVUYySUFNUUVDQUVJQUZCSUdvUUVob2dCRUdOeEFzUURob2dBVUVRYWlJSElBVWdDUkFxSUFRZ0J4QVNHaUFFUWRqb0J4QU9HaUFCS0FMc0FTRUNJQWNRRHhvZ0JCQVJEQTBMSUFVZ0N5Z0NKQkFnSWd4RkJFQWdBVUV3YWlJRUlBVkJkaUFMRUJBZ0JFRy9nd2dRRGhvZ0FTZ0M3QUVoQWlBRUVCRU1EUXNnQmk4QkhpQU1Md0VlUndSQUlBRkJNR29pQnlBRlFYWWdBeEFRSUFjZ0FVRWdhaEFTR2lBSFFZM0VDeEFPR2lBQlFSQnFJZ1lnQlNBSkVDb2dCeUFHRUJJYUlBZEJ6OVFMRUE0YUlBRWdCU0FFS0FJb0VDb2dCeUFCRUJJYUlBZEIzdkVIRUE0YUlBRW9BdXdCSVFJZ0FSQVBHaUFHRUE4YUlBY1FFUXdOQ3lBRklBeEJBUkFiRUNBaEN5QU5LQUlvSUFzb0FpaEhCRUFnQVVFd2FpSUhJQVZCZGlBREVCQWdCeUFCUVNCcUVCSWFJQWRCamNRTEVBNGFJQUZCRUdvaUJpQUZJQWtRS2lBSElBWVFFaG9nQjBHZDFBc1FEaG9nQVNBRklBUW9BaWdRS2lBSElBRVFFaG9nQjBHRzdBY1FEaG9nQVNnQzdBRWhBaUFCRUE4YUlBWVFEeG9nQnhBUkRBMExJQWRCQVdvaEJ5QVJJQXdvQWdBb0FneEdEUUFMSUFGQk1Hb2lCeUFGUVhZZ0F4QVFJQWNnQVVFZ2FoQVNHaUFIUVkzRUN4QU9HaUFCUVJCcUlnWWdCU0FKRUNvZ0J5QUdFQklhSUFkQjRkSUxFQTRhSUFFZ0JTQUVLQUlvRUNvZ0J5QUJFQklhSUFkQjg1Y0hFQTRhSUFFb0F1d0JJUUlnQVJBUEdpQUdFQThhSUFjUUVRd0xDeUFGSUFSQkFSQWJFQ0FpQzBVRVFDQUJRVEJxSWdjZ0JVRjJJQVFRRUNBSFFhS0RDQkFPR2lBQktBTHNBU0VDSUFjUUVRd0xDeUFGSUFSQkFoQWJFQ0FpQmtVRVFDQUJRVEJxSWdjZ0JVRjJJQVFRRUNBSFFleUNDQkFPR2lBQktBTHNBU0VDSUFjUUVRd0xDeUFCUVRCcUlBVWdCaWdDS0JEZEFRSkFJQUV0QURCRkRRQWdBUzBBTVVVTkFDQUJLQUkwSUFkSERRa0xRUUloQndOQUlBY2dBeWdDRUNBREtBSU1hMEVFZFU4TkN3SkFJQVVnQXlBSEVCc2lDUkFnSWdZRVFDQUdMd0VlRUw0SURRRUxJQUZCTUdvaUJDQUZRWFlnQXhBUUlBUWdBVUVnYWhBU0dpQUVRWTNFQ3hBT0dpQUJRUkJxSWdjZ0JTQUpFQ29nQkNBSEVCSWFJQVJCMk9nSEVBNGFJQUVvQXV3QklRSWdCeEFQR2lBRUVCRU1EQXNnQlNBR0tBSWtFQ0FpREVVRVFDQUJRVEJxSWdRZ0JVRjJJQVlRRUNBRVFiK0RDQkFPR2lBQktBTHNBU0VDSUFRUUVRd01DeUFIUVFGcUlRY2dDeWdDS0NBTUtBSW9SZzBBQ3lBQlFUQnFJZ2NnQlVGMklBTVFFQ0FISUFGQklHb1FFaG9nQjBHTnhBc1FEaG9nQVVFUWFpSUdJQVVnQ1JBcUlBY2dCaEFTR2lBSFFjN1VDeEFPR2lBQklBVWdCQ2dDS0JBcUlBY2dBUkFTR2lBSFFhYnNCeEFPR2lBQktBTHNBU0VDSUFFUUR4b2dCaEFQR2lBSEVCRU1DZ3NnQmtFQmF5QUVLQUlFSUFRb0FnQnJRUUoxUncwSVFRSWhCMEVCSVFrRFFDQUhJQU1vQWhBZ0F5Z0NER3RCQkhWUERRb0NRQ0FGSUFNZ0J4QWJJZ3NRSUNJR0JFQWdCaThCSGhDK0NBMEJDeUFCUVRCcUlnUWdCVUYySUFNUUVDQUVJQUZCSUdvUUVob2dCRUdOeEFzUURob2dBVUVRYWlJSElBVWdDeEFxSUFRZ0J4QVNHaUFFUWRqb0J4QU9HaUFCS0FMc0FTRUNJQWNRRHhvZ0JCQVJEQXNMSUFVZ0JpZ0NKQkFnSWd4RkJFQWdBVUV3YWlJRUlBVkJkaUFHRUJBZ0JFRy9nd2dRRGhvZ0FTZ0M3QUVoQWlBRUVCRU1Dd3NDUUNBRklBUWdDUkFiRUNBaUJnUkFJQVlvQWlnZ0RDZ0NLRVlOQVFzZ0FVRXdhaUlISUFWQmRpQURFQkFnQnlBQlFTQnFFQklhSUFkQmpjUUxFQTRhSUFGQkVHb2lCaUFGSUFzUUtpQUhJQVlRRWhvZ0IwR1QxUXNRRGhvZ0FTQUZJQVFvQWlnUUtpQUhJQUVRRWhvZ0IwSHY4QWNRRGhvZ0FTZ0M3QUVoQWlBQkVBOGFJQVlRRHhvZ0J4QVJEQXNMSUFsQkFXb2hDU0FIUVFGcUlRY01BQXNBQ3lBSlFlNHBSdzBJSUFkQkFVY0VRQ0FCUVRCcUlnUWdCVUYySUFNUUVDQUVJQUZCSUdvUUVob2dCRUdOeEFzUURob2dBVUVRYWlJSElBVWdBeWdDSkJBcUlBUWdCeEFTR2lBRVFmVDJCeEFPR2lBQktBTHNBU0VDSUFjUUR4b2dCQkFSREFrTEFrQWdCU0FEUVFJUUd5SUdFQ0FpQndSQUlBY3ZBUjRRdmdnTkFRc2dBVUV3YWlJRUlBVkJkaUFERUJBZ0JDQUJRU0JxRUJJYUlBUkJqY1FMRUE0YUlBRkJFR29pQnlBRklBWVFLaUFFSUFjUUVob2dCRUhZNkFjUURob2dBU2dDN0FFaEFpQUhFQThhSUFRUUVRd0pDeUFGSUFjb0FpUVFJQ0lKUlFSQUlBRkJNR29pQkNBRlFYWWdCeEFRSUFSQnY0TUlFQTRhSUFFb0F1d0JJUUlnQkJBUkRBa0xJQVVnQkVFQkVCc1FJQ0lIQkVBZ0J5Z0NLQ0FKS0FJb1JnMEpDeUFCUVRCcUlnY2dCVUYySUFNUUVDQUhJQUZCSUdvUUVob2dCMEdOeEFzUURob2dBVUVRYWlJSklBVWdCaEFxSUFjZ0NSQVNHaUFIUVpQVkN4QU9HaUFCSUFVZ0JDZ0NLQkFxSUFjZ0FSQVNHaUFIUWZUckJ4QU9HaUFCS0FMc0FTRUNJQUVRRHhvZ0NSQVBHaUFIRUJFTUNBc2dCU0FES0FJa0VDQWlBZ1JBSUFJdkFSNUJHa1lOQ2dzZ0FVRXdhaUlFSUFWQmRpQUNFQkFnQkVHcTBRc1FEaG9nQVVFZ2FpSUhJQVVnQXlnQ0pCQXFJQVFnQnhBU0dpQUVRZDN2QnhBT0dpQUJLQUxzQVNFQ0lBY1FEeG9nQkJBUkRBZ0xJQVVnQXlnQ0pCQWdJZ0lFUUNBQ0lBVVEzdzBOQ1FzZ0FVRXdhaUlFSUFWQmRpQURFQkFnQkVIcjBRc1FEaG9nQVVFZ2FpSUhJQVVnQXlnQ0pCQXFJQVFnQnhBU0dpQUVRZlhvQnhBT0dpQUJLQUxzQVNFQ0lBY1FEeG9nQkJBUkRBY0xJQVVnQTBFQUVCc1FJQzhCSGtFWGEwRjlTdzBISUFGQk1Hb2lCQ0FGUVhJZ0F4QVFJQVJCL3NzSEVBNGFJQUVvQXV3QklRSWdCQkFSREFZTEFrQUNRQUpBQWtBZ0EwRUNFQnNpQWtIdEFHc09JUUVCQVFFRENnb0NBUW9LQVFFQkNnRUtDZ0VLQVFvQkNnRUtDZ0VLQ2dvQkFRQUxJQUpCd1FCcklnUkJCVXRCQVNBRWRFRW5jVVZ5RFFrTElBVXRBSUFCUWNBQWNRMElJQUZCTUdvaUJDQUZRWFlnQXhBUUlBUkJpb2tLRUE0YUlBUWdBaEFwRUE0YUlBUkJndzRRRGhvZ0FTZ0M3QUVoQWlBRUVCRU1Cd3NnQlMwQWdBRkJBbkVOQnlBQlFUQnFJZ1FnQlVGMklBTVFFQ0FFUVlxSkNoQU9HaUFFUWZRQUVDa1FEaG9nQkVIbkRSQU9HaUFCS0FMc0FTRUNJQVFRRVF3R0N5QUZMUUNyQXcwR0lBVXRBSUFCUWNBQWNRMEdJQUZCTUdvaUJDQUZRWFlnQXhBUUlBUkJuTzBHRUE0YUlBRW9BdXdCSVFJZ0JCQVJEQVVMSUFGQk1Hb2lCeUFGUVhZZ0JCQVFJQWRCZzRNSUVBNGFJQUVvQXV3QklRSWdCeEFSREFNTElBRkJNR29pQkNBRlFYWWdCaEFRSUFSQmc0TUlFQTRhSUFFb0F1d0JJUUlnQkJBUkRBSUxJQUZCTUdvaUJ5QUZRWFlnQXhBUUlBY2dBVUVnYWhBU0dpQUhRYTNTQ3hBT0dpQUJRUkJxSWdZZ0JTQUVLQUlvRUNvZ0J5QUdFQklhSUFkQm11Z0hFQTRhSUFFb0F1d0JJUUlnQmhBUEdpQUhFQkVNQVFzZ0FVRXdhaUlISUFWQmRpQURFQkFnQnlBQlFTQnFFQklhSUFkQmpjUUxFQTRhSUFGQkVHb2lCaUFGSUFNb0FpUVFLaUFISUFZUUVob2dCMEgxMHdzUURob2dBU0FGSUFRb0FpZ1FLaUFISUFFUUVob2dCMEhmbUFjUURob2dBU2dDN0FFaEFpQUJFQThhSUFZUUR4b2dCeEFSQ3lBQlFTQnFFQThhQ3lBQ0RRRUxRUUFoQWlBREx3RWVFS01DUlEwQUlBVXRBSUFCUVFKeFJRMEFJQVVnQXlnQ0pCQ0JCUTBBSUFVZ0F5Z0NKQkR4QWtVTkFDQUJRVEJxSWdRZ0JVRjJJQU1RRUNBRVFhYTFBUkFPR2lBQktBTHNBU0VDSUFRUUVRc2dBVUh3QVdva0FDQUNJZ0VOQjBFQUlRY2pBRUdRQW1zaUJpUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU12QVI0aUFVRTdhdzRNQVJBQ0F3UUVCZ1lGQnhBR0FBc2dBVUdSQTJ0QkEwa05Da0huMGdVaEJ5QURJUUlnQVVIdktXc09CQWdIRHdrUEMwRUFJUWtqQUVHZ0Ftc2lCeVFBQWtBQ1FDQUZJQU1pQWlnQ0pCQWdJZ01FUUNBREx3RWVRU0JHRFFFTElBZEI0QUJxSWdFZ0JVRjJJQUlRRUNBQlFmYlVDeEFPR2lBSFFkQUFhaUlFSUFVZ0FpZ0NKQkFxSUFFZ0JCQVNHaUFCUWJQdkJ4QU9HaUFIS0FLY0FpRURJQVFRRHhvZ0FSQVJEQUVMSUFVZ0EwRUNFQnNpRVJBZ0lRUUNRQ0FDS0FJUUlBSW9BZ3hyUVRGSkRRQUNRQ0FGSUFKQkF4QWJJZ3NRSUNJQkJFQWdBUzhCSGlJTVFUdEdCSDhnQVVFQ0VCdEJCMGNoQ1NBQkx3RWVCU0FNQ3hDakFpQUpjZzBCQ3lBSFFlQUFhaUlCSUFWQmRpQUNFQkFnQVVHTXh3c1FEaG9nQjBIUUFHb2lBaUFGSUFzUUtpQUJJQUlRRWhvZ0FVSEE5d2NRRGhvZ0J5Z0NuQUloQXlBQ0VBOGFJQUVRRVF3Q0N5QUJLQUlrSUJGR0RRQWdCMEhnQUdvaUFTQUZRWFlnQWhBUUlBRkJ4YWtFRUE0YUlBY29BcHdDSVFNZ0FSQVJEQUVMQWtBZ0FrRUNFQnNpQ1VIUUtXc2lBVUVPVFVFQVFRRWdBWFJCZzVnQmNSc2dDVUdKS2tZZ0NVRUVhMEVFU1hKeUlBbEJtaXBHY2cwQUFrQWdDVUY5Y1NJTFFRRkhEUUFnQlNBQ0tBSW9FTjRCSWdGQkJHb2hEQ0FCS0FJQUlRRURRQ0FCSUF4R0RRRWdBU2dDRUVFTFJnMENJQUVRVENFQkRBQUxBQXNnQlNBRUlBdEJBVVlRN2hWRkRRQWdDMEVCUmdSQUlBZEI0QUJxSWdFZ0JVRjJJQUlRRUNBSFFkQUFhaUlDSUFWQitqZ1FOeUFCSUFJUUVob2dBVUhyMkFJUURob2dCeWdDbkFJaEF5QUNFQThhSUFFUUVRd0NDeUFIUWVBQWFpSUJJQVZCZGlBQ0VCQWdBVUg4L1FVUURob2dCeWdDbkFJaEF5QUJFQkVNQVFzZ0JTQUpFTGNWUlFSQUlBZEI0QUJxSWdFZ0JVRjhJQUlRRUNBSFFkQUFhaUlDSUFWQm95UVFOeUFCSUFJUUVob2dBVUdJeHdBUURob2dCeWdDbkFJaEF5QUNFQThhSUFFUUVRd0JDeUFKUVFoR0JFQWdCMEhnQUdvaUFTQUZRWHdnQWhBUUlBRkJ3b2dGRUE0YUlBY29BcHdDSVFNZ0FSQVJEQUVMSUFJb0FqZ2lBVVVnQ1VFSFJuSkZCRUFnQjBIZ0FHb2lBU0FGUVhRZ0FoQVFJQUZCc3RJQ0VBNGFJQWNvQXB3Q0lRTWdBUkFSREFFTElBbEJCMGNnQVhKRkJFQWdCMEhnQUdvaUFTQUZRWFFnQWhBUUlBRkI2ZEVDRUE0YUlBY29BcHdDSVFNZ0FSQVJEQUVMSUFOQkFSQWJJQWxIQkVBZ0IwSGdBR29pQVNBRlFYWWdBaEFRSUFGQnh2VU1FQTRhSUFGQmw5WUpFQTRhSUFGQjgrd0hFQTRhSUFjb0Fwd0NJUU1nQVJBUkRBRUxJQVVnQXlnQ0FDZ0NEQkFnSVFFQ1FDQUZLQUtRQXcwQUlBVW9BZ1F0QUNVTkFDQUJMd0VlUVNCSERRQWdCVUdBQVdwQjJTSVFhRVVFUUNBSFFlQUFhaUlCSUFWQmRpQUNFQkFnQVVHNjlBa1FEaG9nQVVIeGxRUVFEaG9nQnlnQ25BSWhBeUFCRUJFTUFnc2dDVUVJYTBGOVN3MEFJQWRCNEFCcUlnRWdCVUYySUFJUUVDQUJRWlhoQ1JBT0dpQUJRWU8zQ2hBT0dpQUJRZnl5QVJBT0dpQUhLQUtjQWlFRElBRVFFUXdCQ3dKQUlBVW9BZ0FvQWdBUVIwVU5BQUpBQWtBQ1FBSkFBa0FDUUNBSkRnMEJCUUlGQkFRRUJBUUFCQVFEQkFzZ0FTOEJIa0VlUmcwRElBZEI0QUJxSWdFZ0JVRjJJQUlRRUNBSFFkQUFhaUlFSUFWQm1EVVFOeUFCSUFRUUVob2dBVUdzMlFzUURob2dCMEZBYXlJSklBVWdBaWdDS0JBcUlBRWdDUkFTR2lBQlFmTDNEQkFPR2lBQlFicjBEQkFPR2lBQlFZanZBQkFPR2lBSEtBS2NBaUVESUFrUUR4b2dCQkFQR2lBQkVCRU1CZ3NnQjBFRU5nSThJQWRDbTRDQWdOQ2JCVGNDYUNBSFFwbUFnSUNnQXpjQ1lDQUhJQWRCNEFCcU5nSTRJQWNnQnlrRE9EY0RBQ0FGSUFFZ0J4RE5EUTBDSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUVJQVZCcnlRUU55QUJJQVFRRWhvZ0FVR0wyUXNRRGhvZ0IwRkFheUlKSUFVZ0FpZ0NLQkFxSUFFZ0NSQVNHaUFCUWZMM0RCQU9HaUFCUWZmVUNSQU9HaUFCUWNTb0NoQU9HaUFCUWZqbkRCQU9HaUFCUVpMdERCQU9HaUFCUWNhMEJ4QU9HaUFIS0FLY0FpRURJQWtRRHhvZ0JCQVBHaUFCRUJFTUJRc2dCMEVCTmdJMElBZEJIallDWUNBSElBZEI0QUJxTmdJd0lBY2dCeWtETURjRENDQUZJQUVnQjBFSWFoRE5EUTBCSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUVJQVZCbHpVUU55QUJJQVFRRWhvZ0FVSHAyUXNRRGhvZ0IwRkFheUlKSUFVZ0FpZ0NLQkFxSUFFZ0NSQVNHaUFCUWZMM0RCQU9HaUFCUWJUMkRCQU9HaUFCUWM2NENoQU9HaUFCUVlHcENoQU9HaUFCUWJlckNoQU9HaUFCUWN6MkF4QU9HaUFIS0FLY0FpRURJQWtRRHhvZ0JCQVBHaUFCRUJFTUJBc2dCMEVCTmdJc0lBZEJIallDWUNBSElBZEI0QUJxTmdJb0lBY2dCeWtES0RjREVDQUZJQUVnQjBFUWFoRE5EUTBBSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUVJQVZCbHpVUU55QUJJQVFRRWhvZ0FVSEsyUXNRRGhvZ0IwRkFheUlKSUFVZ0FpZ0NLQkFxSUFFZ0NSQVNHaUFCUWZMM0RCQU9HaUFCUWJUMkRCQU9HaUFCUVozMUF4QU9HaUFIS0FLY0FpRURJQWtRRHhvZ0JCQVBHaUFCRUJFTUF3c2dCU0FDS0FJb1FSSVF3QUlFUUNBSFFlQUFhaUlCSUFWQmRpQUNFQkFnQjBIUUFHb2lBaUFGUWNVa0VEY2dBU0FDRUJJYUlBRkJwWjhIRUE0YUlBY29BcHdDSVFNZ0FoQVBHaUFCRUJFTUF3c2dCRVVOQUNBRUx3RWVRUjVIRFFBZ0JTQVJRUklRd0FKRkRRQWdCMEhnQUdvaUFTQUZRWFlnQWhBUUlBZEIwQUJxSWdJZ0JVSEZKQkEzSUFFZ0FoQVNHaUFCUVorZUJ4QU9HaUFIS0FLY0FpRURJQUlRRHhvZ0FSQVJEQUlMSUFJb0FoQWdBaWdDREd0Qk1Va05BQUpBQWtBZ0NVRURhdzRGQWdBQkFnSUJDeUFGSUFKQkF4QWJFQ0F2QVI1QkxrWU5BU0FIUWVBQWFpSUJJQVZCZGlBQ0VCQWdCMEhRQUdvaUJDQUZRZjRrRURjZ0FTQUVFQklhSUFGQmt0c0xFQTRhSUFkQlFHc2lDU0FGSUFJb0FpZ1FLaUFCSUFrUUVob2dBVUd0a2dFUURob2dCeWdDbkFJaEF5QUpFQThhSUFRUUR4b2dBUkFSREFJTElBZEI0QUJxSWdFZ0JVRjJJQUlRRUNBSFFkQUFhaUlFSUFWQnF5UVFOeUFCSUFRUUVob2dBVUdTMndzUURob2dCMEZBYXlJSklBVWdBaWdDS0JBcUlBRWdDUkFTR2lBQlFlZlZDUkFPR2lBQlFlVDNEQkFPR2lBQlFaR1hDaEFPR2lBSFFSaHFJZ0lnQlNnQ0FDZ0NBQkNCQWlBQklBSVFFaG9nQVVHLzlnd1FEaG9nQVVHUnN3b1FEaG9nQVVIVDZ3d1FEaG9nQVVIL2tnSVFEaG9nQnlnQ25BSWhBeUFDRUE4YUlBa1FEeG9nQkJBUEdpQUJFQkVNQVFzQ1FBSkFJQUlvQWhBZ0FpZ0NER3RCTVU4RVFBSkFJQWxCQVVjRVFDQUpRZVVwUmcwRElBbEJpU3BHRFFFZ0FTRURJQWxCbWlwSERRUWdCMEhnQUdvaUFTQUZRWFlnQWhBUUlBRkJrdHNMRUE0YUlBZEIwQUJxSWdRZ0JTQUNLQUlvRUNvZ0FTQUVFQklhSUFGQjI5Z0ZFQTRhSUFjb0Fwd0NJUU1nQkJBUEdpQUJFQkVNQlFzZ0IwSGdBR29pQVNBRlFYWWdBaEFRSUFGQmt0c0xFQTRhSUFkQjBBQnFJZ1FnQlNBQ0tBSW9FQ29nQVNBRUVCSWFJQUZCNENzUURob2dCeWdDbkFJaEF5QUVFQThhSUFFUUVRd0VDeUFIUWVBQWFpSUJJQVZCZGlBQ0VCQWdBVUdTMndzUURob2dCMEhRQUdvaUJDQUZJQUlvQWlnUUtpQUJJQVFRRWhvZ0FVR3N6Z1VRRGhvZ0J5Z0NuQUloQXlBRUVBOGFJQUVRRVF3REN5QUJJUU1nQ1VIbEtVY05BUXNnQjBIZ0FHb2lBU0FGUVhZZ0FoQVFJQUZCN2ZjSEVBNGFJQWNvQXB3Q0lRTWdBUkFSREFFTEFrQURRQUpBQWtBZ0F5OEJIa0VjYXc0RkFBTURBd0VEQ3lBRklBTkJBUkFiRUNBaEF3d0JDd3NnQTBFQkVCdEI1U2xIRFFBZ0JTQUNLQUlvUWV3cEVNQUNJZ01nQlNBQ0tBSW9RZXNwRU1BQ0lndHlSUVJBSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FCUVpDL0NoQU9HaUFCSUFJb0FpZ1FJUm9nQVVIQjdna1FEaG9nQVVHYXlBY1FEaG9nQnlnQ25BSWhBeUFCRUJFTUFnc2dBeUFMY1VFQlJ3MEFJQWRCNEFCcUlnRWdCVUYySUFJUUVDQUJRWkMvQ2hBT0dpQUJJQUlvQWlnUUlSb2dBVUh5elFvUURob2dBVUdHeUFjUURob2dCeWdDbkFJaEF5QUJFQkVNQVFzQ1FBSkFBa0FnQkVVZ0JTZ0NBQ2dDQUJCSElnTkZjZzBBSUFRdkFSNGlBMEVkUmdSQUlBVkJnQUZxUWJZcEVHaEZCRUFnQjBIZ0FHb2lBU0FGUVhZZ0FoQVFJQWRCMEFCcUlnUWdCVUhJSkJBM0lBRWdCQkFTR2lBQlFaTGJDeEFPR2lBSFFVQnJJZ2tnQlNBQ0tBSW9FQ29nQVNBSkVCSWFJQUZCMit3TUVBNGFJQUZCb3NBSkVBNGFJQUZCMnNZSkVBNGFJQUZCdnJzRUVBNGFJQWNvQXB3Q0lRTWdDUkFQR2lBRUVBOGFJQUVRRVF3RkN3SkFBa0FDUUNBSkRnTUNBUUlBQ3lBSlFReEdEUUVMSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUNJQVZCeUNRUU55QUJJQUlRRWhvZ0FVSFp2Z29RRGhvZ0FVR1VyUW9RRGhvZ0FVSFdwd2NRRGhvZ0J5Z0NuQUloQXlBQ0VBOGFJQUVRRVF3RkN5QUVMd0VlSVFNTElBTkIvLzhEY1VFZVJ3MEFRUUVoQXdOQUlBTWdCQ2dDRUNBRUtBSU1hMEVFZFU4TkFTQUVJQU1RR3lFTElBTkJBV29oQXlBRklBc1F1Z0V2QVI1QkhVY05BQXNDUUNBSlFRSkhCRUFnQ1VFTVJ3MEJJQVVnRVVFQ0VNQUNEUU1nQjBIZ0FHb2lBU0FGUVhZZ0FoQVFJQWRCMEFCcUlnSWdCVUhJSkJBM0lBRWdBaEFTR2lBQlFZR1ZDaEFPR2lBQlFmYk1DUkFPR2lBQlFhZktCeEFPR2lBSEtBS2NBaUVESUFJUUR4b2dBUkFSREFVTElBVWdFVUVERU1BQ0RRSWdCMEhnQUdvaUFTQUZRWFlnQWhBUUlBZEIwQUJxSWdJZ0JVSElKQkEzSUFFZ0FoQVNHaUFCUVlHVkNoQU9HaUFCUWVPaUNoQU9HaUFCUVpyYkJ4QU9HaUFIS0FLY0FpRURJQUlRRHhvZ0FSQVJEQVFMSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUNJQVZCeUNRUU55QUJJQUlRRWhvZ0FVSDNxZ29RRGhvZ0FVR2ZyUW9RRGhvZ0FVRzcyd2NRRGhvZ0J5Z0NuQUloQXlBQ0VBOGFJQUVRRVF3REN5QUpRUWhyUVgxTERRRUxJQVVnQVJEc0ZVVU5BQ0FIUWVBQWFpSUJJQVZCZGlBQ0VCQWdBVUhFMndvUURob2dBVUdibUFFUURob2dCeWdDbkFJaEF5QUJFQkVNQVFzQ1FDQUZLUU9BQVNJdlFnS0RVQTBBSUFWQmdBRnFJUXNDUUFKQUlDOUNnSUNBQW9OUUJINGdCU0FSUVJWQkVCQ0dCQTBCSUFzcEF3QUZJQzhMUW9BRWcwSUFVZzBCSUFVZ0VVRVdRUkFRaGdSRkRRRUxJQVFoQVFOQUlBRXZBUjVCSUVZRVFDQUJRUUVRR3lFSklBVWdBVUVDRUJzUUlDRUJEQUVMQ3lBSFFkQUFhaUFGUVlBRGFrRVFJQWtRandFUUZDRU5Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSlFRRnJEZ3dFQWdRR0JRVUZCUU1GQlFFQUN5QUpRZVVwUncwRUN5QUxRZEVpRUdoRkRRVU1Cd3RCQVNFTUlBdEIwaUlRYUEwSElBRXZBUjVCL3Y4RGNVRWNSZ1JBSUFVZ0FVRUJFQnNRSUNFQkN5QUxRZEVpRUdoRkRRUWdCU0FCS0FJb1FRTVF3QUpGRFFRTUJ3c2dDMEhUSWhCb0RRVU1Bd3NnQzBIVUloQm9EUVFNQWdzZ0IwSGdBR29pQVNBRlFYWWdBaEFRSUFGQnFKQUtFQTRhSUFFZ0RSQVNHaUFCUWFhVUFSQU9HZ3dDQ3lBTFFjNGlFR2dOQWdzZ0IwSGdBR29pQVNBRlFYWWdBaEFRSUFGQjhZMEtFQTRhSUFFZ0RSQVNHaUFCUVo4T0VBNGFDeUFIS0FLY0FpRURJQUVRRVVFQUlRd01BUXRCQVNFTUN5QU5FQThhSUF4RkRRSUxJQXN0QUFSQmdBRnhEUUFnQlNBUlFSVkJDQkNHQkVVTkFBTkFJQVF2QVI1QklFWUVRQ0FFUVFFUUd5RUpJQVVnQkVFQ0VCc1FJQ0VFREFFTEN5QUhRZEFBYWlBRlFZQURha0VRSUFrUWp3RVFGQ0VCQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FKUVFKckRnTUJBd1FBQ3dKQUFrQWdDVUVKYXc0RUF3UUVBUUFMSUFsQjVTbEhEUU1MUVFFaENTQUxRZUFpRUdoRkRRUU1CZ3RCQVNFSklBdEI0U0lRYUEwRklBUXZBUjVCL3Y4RGNVRWNSZ1JBSUFVZ0JFRUJFQnNRSUNFRUN5QUxRZUFpRUdoRkRRTWdCU0FFS0FJb1FRTVF3QUpGRFFNTUJRdEJBU0VKSUF0QjRpSVFhRVVOQWd3RUN5QUhRZUFBYWlJRUlBVkJkaUFDRUJBZ0JFSHhqd29RRGhvZ0JDQUJFQklhSUFSQnBwUUJFQTRhREFJTFFRRWhDU0FMUWMwaUVHZ05BZ3NnQjBIZ0FHb2lCQ0FGUVhZZ0FoQVFJQVJCdkkwS0VBNGFJQVFnQVJBU0dpQUVRWjhPRUE0YUN5QUhLQUtjQWlFRElBUVFFVUVBSVFrTElBRVFEeG9nQ1VVTkFRdEJBQ0VEQ3lBSFFhQUNhaVFBSUFNaEJ3d05DeUFGSUFNb0FpUVFJQ0lFUlFSQUlBWkIwQUJxSWdFZ0JVRjJJQU1RRUNBQlFjTFdDeEFPR2lBR1FTQnFJZ0lnQlNBREtBSWtFQ29nQVNBQ0VCSWFJQUZCNW9NSUVBNGFJQVlvQW93Q0lRY2dBaEFQR2lBQkVCRU1EUXNDUUFKQUlBVWdBMEVDRUJzaUJ4QWdJZ0pGRFFBZ0JTZ0NrQU1OQVNBRkxRQ2tBMFVFUUNBQ0x3RWVFSXNPUlEwQklBVXRBS1FEUlEwQ0N5QUNMd0VlRUl3T0RRRUxJQVpCMEFCcUlnRWdCVUYySUFNUUVDQUJRWnJJQ3hBT0dpQUdRU0JxSWdNZ0JTQUhFQ29nQVNBREVCSWFJQUZCdWNnSEVBNGFJQVlvQW93Q0lRY2dBeEFQR2lBQkVCRU1EUXNDUUNBRklBSW9BaVFRSUNJQkJFQWdBUzhCSGtFZ1JnMEJDeUFHUWRBQWFpSUJJQVZCZGlBREVCQWdBVUhJeHdzUURob2dCa0VnYWlJRElBVWdCeEFxSUFFZ0F4QVNHaUFCUWJQdkJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0FSQVJEQTBMQWtBZ0JTQUJLQUlvSUFaQkVHb2dCaENJQWdSQUlBUW9BaWdnQmlnQ0VFWU5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUZCd3RZTEVBNGFJQVpCSUdvaUJDQUZJQU1vQWlRUUtpQUJJQVFRRWhvZ0FVSG14d3NRRGhvZ0JrRkFheUlESUFVZ0FpZ0NLQkFxSUFFZ0F4QVNHaUFCUWQvdUJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0JCQVBHaUFCRUJFTURRc0NRQ0FGS0FJRUxRQXNEUUFnQXlnQ0pDRUhJd0JCSUdzaUFTUUFJQUZCM0pnZ05nSUlJQUVnQVVFSWFpSUNOZ0lZSUFVZ0J5QUNRUUFRb3dvaEJ5QUNFQllnQVVFZ2FpUUFJQWRGRFFBZ0JrSFFBR29pQVNBRlFYWWdBeEFRSUFGQjBCc1FEaG9nQmlnQ2pBSWhCeUFCRUJFTURRc2dCU0FEUVFNUXJBZ2lCdzBNUVFBaEJ5QUZMUUNBQVVFQ2NVVU5EQ0FGSUFNb0FpUVE4UUpGRFF3Z0JDOEJIa0VWYTBILy93TnhJZ0ZCREU5Qmp4QWdBWFpCQVhGRmNnMExEQXdMQWtBQ1FDQUZJQU5CQUJBYklnSVFJQ0lCUlEwQUlBVW9BcEFERFFFZ0JTMEFwQU5GQkVBZ0FTOEJIaENMRGtVTkFTQUZMUUNrQTBVTkFnc2dBUzhCSGhDTURnMEJDeUFHUWRBQWFpSUJJQVZCZGlBREVCQWdBVUdFeUFzUURob2dCa0ZBYXlJRElBVWdBaEFxSUFFZ0F4QVNHaUFCUWJuSUJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0FSQVJEQXdMQWtBZ0JTQUJLQUlrRUNBaUJ3UkFJQWN2QVI1QklFWU5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUZCcWNjTEVBNGFJQVpCUUdzaUF5QUZJQUlRS2lBQklBTVFFaG9nQVVHejd3Y1FEaG9nQmlnQ2pBSWhCeUFERUE4YUlBRVFFUXdNQ3dKQUlBVWdCMEVDRUJzUUlDSUVCRUFnQkM4QkhrRVRSdzBCQ3lBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHRXlBc1FEaG9nQmtGQWF5SURJQVVnQWhBcUlBRWdBeEFTR2lBQlFjejhCeEFPR2lBR0tBS01BaUVISUFNUUR4b2dBUkFSREF3TElBVWdCeWdDS0NBR0lBWkJQR29RaUFKRkJFQWdCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJoTWdMRUE0YUlBWkJRR3NpQXlBRklBSVFLaUFCSUFNUUVob2dBVUdnL3dNUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd01DeUFHS0FJOElnZEJDVXRCQVNBSGRFR0RCSEZGY2cwSklBWkIwQUJxSWdFZ0JVRjJJQU1RRUNBQlFZVElDeEFPR2lBR1FVQnJJZ01nQlNBQ0VDb2dBU0FERUJJYUlBRkJ4QlFRRGhvZ0JpZ0NqQUloQnlBREVBOGFJQUVRRVF3TEN5QUZJQU5CQUJBYklnY1FJQ0lCUlFSQUlBWkIwQUJxSWdFZ0JVRjJJQU1RRUNBQlFhWGFDeEFPR2lBR1FTQnFJZ01nQlNBSEVDb2dBU0FERUJJYUlBRkI1b01JRUE0YUlBWW9Bb3dDSVFjZ0F4QVBHaUFCRUJFTUN3c2dCU0FEUVFFUUd5SUVFQ0FpQ1VVRVFDQUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVSDkyZ3NRRGhvZ0JrRWdhaUlESUFVZ0JCQXFJQUVnQXhBU0dpQUJRZWFEQ0JBT0dpQUdLQUtNQWlFSElBTVFEeG9nQVJBUkRBc0xBa0FnQlNBQktBSWtFQ0FpQWdSQUlBSXZBUjVCSUVZTkFRc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJwZG9MRUE0YUlBWkJJR29pQXlBRklBY1FLaUFCSUFNUUVob2dBVUh2eUFjUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd0xDd0pBSUFVZ0NTZ0NKQkFnSWdFRVFDQUJMd0VlUVNCR0RRRUxJQVpCMEFCcUlnRWdCVUYySUFNUUVDQUJRZjNhQ3hBT0dpQUdRU0JxSWdNZ0JTQUVFQ29nQVNBREVCSWFJQUZCNzhnSEVBNGFJQVlvQW93Q0lRY2dBeEFQR2lBQkVCRU1Dd3NDUUNBREx3RWVRVDlHQkVBQ1FDQUZJQUpCQWhBYkVDQWlDUVJBSUFrdkFSNUJFMGNOQVFzZ0JrSFFBR29pQVNBRlFYWWdBeEFRSUFGQnBkb0xFQTRhSUFaQklHb2lBeUFGSUFjUUtpQUJJQU1RRWhvZ0FVSFV5QWNRRGhvZ0JpZ0NqQUloQnlBREVBOGFJQUVRRVF3TkN3SkFJQVVnQVVFQ0VCc1FJQ0lIQkVBZ0J5OEJIa0VUUncwQkN5QUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVSDkyZ3NRRGhvZ0JrRWdhaUlESUFVZ0JCQXFJQUVnQXhBU0dpQUJRZFRJQnhBT0dpQUdLQUtNQWlFSElBTVFEeG9nQVJBUkRBMExJQWtvQWlnZ0J5Z0NLRVlOQVNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVIMXhBc1FEaG9nQmtFZ2FpSURJQVVnQkJBcUlBRWdBeEFTR2lBQlFZTGFDeEFPR2lBR1FVQnJJZ0lnQlNBSEtBSW9FQ29nQVNBQ0VCSWFJQUZCMys0SEVBNGFJQVlvQW93Q0lRY2dBaEFQR2lBREVBOGFJQUVRRVF3TUN5QUZJQU5CQWhBYklnRVFJQ0lFUlFSQUlBWkIwQUJxSWdJZ0JVRjJJQU1RRUNBQ1FkWGFDeEFPR2lBR1FTQnFJZ01nQlNBQkVDb2dBaUFERUJJYUlBSkI1b01JRUE0YUlBWW9Bb3dDSVFjZ0F4QVBHaUFDRUJFTURBc2dCU0FGSUFRb0FpUVFJQ0lIS0FJb0VGQkZCRUFnQmtIUUFHb2lBaUFGUVhZZ0F4QVFJQUpCMWRvTEVBNGFJQVpCSUdvaUF5QUZJQUVRS2lBQ0lBTVFFaG9nQWtIUDhBY1FEaG9nQmlnQ2pBSWhCeUFERUE4YUlBSVFFUXdNQ3dKQUFrQWdCQzhCSGtFcmF3NEVBUUlDQUFJTElBWkIwQUJxSWdJZ0JVRjJJQU1RRUNBQ1FkWGFDeEFPR2lBR1FTQnFJZ01nQlNBQkVDb2dBaUFERUJJYUlBSkJwczhIRUE0YUlBWW9Bb3dDSVFjZ0F4QVBHaUFDRUJFTURBc0NRQ0FIS0FJQUtBSU1RUUZIRFFBZ0JDZ0NCRUVFYXlnQ0FFRUFUZzBBSUFaQjBBQnFJZ0lnQlVGMklBTVFFQ0FDUWRYYUN4QU9HaUFHUVNCcUlnTWdCU0FCRUNvZ0FpQURFQklhSUFKQnBwVUlFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUNFQkVNREF0QkF5RUhRUUVoRVFOQUlCRkZEUUVnQkNnQ0JDQUVLQUlBSWdsclFRSjFJQWRMQkVBZ0NTQUhRUUowYWlnQ0FFVWhFU0FIUVFGcUlRY01BUXNMSUFaQjBBQnFJZ0lnQlVGMklBTVFFQ0FDUWRYYUN4QU9HaUFHUVNCcUlnTWdCU0FCRUNvZ0FpQURFQklhSUFKQnBzOEhFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUNFQkVNQ3dzZ0F5OEJIaUlCUVQ5clFRSlBEUWNDUUVFQ1FRTWdBVUUvUmhzaUFTQURLQUlRSUFNb0FneHJRUVIxVHcwQUlBVWdBeUFCRUt3SUlnY05EU0FESUFFUUd5RUVJQU1vQWhBZ0F5Z0NER3RCQkhVZ0JCRE9EU0FCYWlJQlRRMEFBa0FnQlMwQXFnTUVRQ0FGSUFNZ0FSQ3NDQ0lIRFE4Z0JFRVFjUVJBSUFaQjBBQnFJZ1FnQlVGeUlBTVFFQ0FFUWFQM0JSQU9HZ3dDQ3lBRElBRVFHMEVJY1VVTkFpQUdRZEFBYWlJRUlBVkJjaUFERUJBZ0JFR1YrQVVRRGhvTUFRc2dCa0hRQUdvaUJDQUZRWElnQXhBUUlBUWdBeThCSGhBcEVBNGFJQVJCMnVRQkVBNGFDeUFHS0FLTUFpRUhJQVFRRVNBSERRMExBMEFnQlNBQ1FRSVFHeEFnSWdJdkFSNUJJRVlOQUFzZ0JTMEFnQUZCQW5GRkRRc2dCU0FDS0FJb0VQRUNSUTBMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWJLMEFSQU9HaUFHS0FLTUFpRUhJQUVRRVF3S0N3SkFJQVVvQXBBRERRQWdCUzBBcEFNTkFDQUdRZEFBYWlJQklBVkJjaUFERUJBZ0FVSGF1d2tRRGhvZ0FVRzM5QUVRRGhvZ0JpZ0NqQUloQnlBQkVCRU1DZ3NnQlNBREVQQVZJZ2NOQ3lBRlFZQUJhaUVDSUFVZ0JTQURRUUlRR3hBZ0tBSWtFQ0FpQkVFQkVCc2hBUUpBSUFVdEFJQUJRUUp4UlEwQUFrQUNRQUpBSUFGQkNXc09CQUlCQVFJQUN5QUJRUUpHSUFGQjVTbEdjZzBCQ3lBQ1Fjd2lFR2hGSUFGQkJFZHlEUUVMSUFVZ0JDZ0NLRUVHRU1BQ0RRQWdCa0hRQUdvaUFTQUZRWElnQXhBUUlBRkI0dEVFRUE0YUlBWW9Bb3dDSVFjZ0FSQVJEQW9MSUFVb0FnQW9BZ0FRUjBVZ0FVSGxLVVp5RFFvQ1FDQUJRUXhIQkVBZ0FVRUVSdzBCSUFKQjJpSVFhQTBNSUFaQjBBQnFJZ0VnQlVGeUlBTVFFQ0FHUVNCcUlnTWdCVUhqT3hBM0lBRWdBeEFTR2lBQlFiOExFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUJFQkVNQ3dzZ0JTMEFwQU1OQ3lBR1FkQUFhaUlCSUFWQmNpQURFQkFnQmtFZ2FpSURJQVZCNURzUU55QUJJQU1RRWhvZ0FVSGJEQkFPR2lBR0tBS01BaUVISUFNUUR4b2dBUkFSREFvTElBWkIwQUJxSWdFZ0JVRnlJQU1RRUNBR1FTQnFJZ01nQlVIaU94QTNJQUVnQXhBU0dpQUJRYXFRQVJBT0dpQUdLQUtNQWlFSElBTVFEeG9nQVJBUkRBa0xJQVVnQXhEd0ZTRUhEQWdMSUFaQklHcEJzTDhDSUFaQjBBQnFJQUVRS1JBVUlnRVFOU0FCRUE4YUFrQUNRQUpBSUFVZ0F5Z0NKQkFnSWdFdkFSNUJGVWNOQUNBQlFRRVFHMEVnUncwQUlBRkJBaEFiUlEwQkN5QUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVR2lzQW9RRGhvZ0FTQUdRU0JxRUJJYUlBRkJuZHNMRUE0YUlBWkJRR3NpQWlBRklBTW9BaWdRS2lBQklBSVFFaG9nQVVIS2xRZ1FEaG9nQmlnQ2pBSWhCeUFDRUE4YUlBRVFFUXdCQ3lBRklBVWdBMEVDRUJzUUlDZ0NKQkFnSWdFdkFSNUJJRWNFUUNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVIZ2tBb1FEaG9nQVNBR1FTQnFFQklhSUFGQm5kc0xFQTRhSUFaQlFHc2lBaUFGSUFNb0FpZ1FLaUFCSUFJUUVob2dBVUhEcUFjUURob2dCaWdDakFJaEJ5QUNFQThhSUFFUUVRd0JDeUFGSUFGQkFoQWJFQ0FpQVM4QkhrRWVSd1JBSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWVDUUNoQU9HaUFCSUFaQklHb1FFaG9nQVVHZDJ3c1FEaG9nQmtGQWF5SUNJQVVnQXlnQ0tCQXFJQUVnQWhBU0dpQUJRY09vQnhBT0dpQUdLQUtNQWlFSElBSVFEeG9nQVJBUkRBRUxJQVVnQVNBQktBSVFJQUVvQWd4clFRUjFJZ0ZCQVdzUUd4QWdMd0VlUVIxSEJFQWdCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJtbzhLRUE0YUlBRWdCa0VnYWhBU0dpQUJRWjNiQ3hBT0dpQUdRVUJySWdJZ0JTQURLQUlvRUNvZ0FTQUNFQklhSUFGQmdaUUhFQTRhSUFZb0Fvd0NJUWNnQWhBUEdpQUJFQkVNQVFzZ0EwRURFQnNnQVVFQ2EwWU5BQ0FHUWRBQWFpSUJJQVZCZGlBREVCQWdBVUdGandvUURob2dBU0FHUVNCcUVCSWFJQUZCbmRzTEVBNGFJQVpCUUdzaUFpQUZJQU1vQWlnUUtpQUJJQUlRRWhvZ0FVR1lxQWNRRGhvZ0JpZ0NqQUloQnlBQ0VBOGFJQUVRRVFzZ0JrRWdhaEFQR2d3SEMwRzN6d1VoQnlBRklBTkJBUkFiRUNBaEFnc2dCU0FDS0FJa0lnSVFJQ0VFSUFNdkFSNGhBUUpBSUFRdkFSNUI3aWxIQkVBZ0FVSHZLVWNOQVNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVIYjFnc1FEaG9nQmtFZ2FpSURJQVVnQWhBcUlBRWdBeEFTR2lBQlFkSHJCeEFPR2lBR0tBS01BaUVISUFNUUR4b2dBUkFSREFjTEFrQUNRQ0FGSUFNZ0FVSHZLVVpCQVhRUUd5SUVFQ0FpQWtVTkFDQUZLQUtRQXcwQklBVXRBS1FEUlFSQUlBSXZBUjRRaXc1RkRRRWdCUzBBcEFORkRRSUxJQUl2QVI0UWpBNE5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUVnQnhBT0dpQUJRYURJQ3hBT0dpQUdRU0JxSWdNZ0JTQUVFQ29nQVNBREVCSWFJQUZCdWNnSEVBNGFJQVlvQW93Q0lRY2dBeEFQR2lBQkVCRU1Cd3NDUUNBRklBSW9BaVFpQ1JBZ0lnRUVRQ0FCTHdFZVFTQkdEUUVMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCSUFjUURob2dBVUhPeHdzUURob2dCa0VnYWlJRElBVWdCQkFxSUFFZ0F4QVNHaUFCUWJQdkJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0FSQVJEQWNMSUFGQkFSQWJJZ1JCQkVZZ0JFRU1SbklnQkVIbEtVWnlSUVJBSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCSUFjUURob2dBVUhCemdzUURob2dCa0VnYWlJRElBVWdDUkFxSUFFZ0F4QVNHaUFCUVl2TEJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0FSQVJEQWNMQWtBZ0JTQUJRUUlRR3lJQkVDQUVRQ0FGSUFFUXh3RU5BU0FGSUFFUXJnRU5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUVnQnhBT0dpQUJRYURJQ3hBT0dpQUdRU0JxSWdNZ0JTQUNLQUlvRUNvZ0FTQURFQklhSUFGQjUrNEhFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUJFQkVNQndzQ1FDQUZJQU5CQTBFQ0lBTXZBUjVCN3lsR0d4QWJJZ0lRSUNJQkJFQWdCU0FCS0FJa0VGQU5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUZCNk5vTEVBNGFJQVpCSUdvaUF5QUZJQUlRS2lBQklBTVFFaG9nQVVIUDhBY1FEaG9nQmlnQ2pBSWhCeUFERUE4YUlBRVFFUXdIQ3dKQUFrQWdCU0FEUVFSQkF5QURMd0VlUWU4cFJoc1FHeUlDRUNBaUFVVU5BQ0FGSUFFb0FpUVF2d0pGRFFBZ0FTOEJIaENqQWcwQklBRXZBUjRRdndnTkFRc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJ1dG9MRUE0YUlBWkJJR29pQXlBRklBSVFLaUFCSUFNUUVob2dBVUdFMGdjUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd0hDMEVGUVFRZ0F5OEJIa0h2S1VZYklnRWdBeWdDRUNBREtBSU1hMEVFZFU4TkJ5QUZJQU1nQVJDc0NDRUhEQVlMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWVyTkN4QU9HaUFHUVNCcUlnTWdCU0FDRUNvZ0FTQURFQklhSUFGQjBlc0hFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUJFQkVNQlFzZ0JrRWdha0d3dndJZ0JrSFFBR29nQVJBcEVCUWlBUkExSUFFUUR4b0NRQUpBQWtBZ0JTQURLQUlrRUNBaUFTOEJIa0VWUncwQUlBRkJBUkFiUVNCSERRQWdBVUVDRUJ0RkRRRUxJQVpCMEFCcUlnRWdCVUYySUFNUUVDQUJRYUt3Q2hBT0dpQUJJQVpCSUdvUUVob2dBVUdkMndzUURob2dCa0ZBYXlJQ0lBVWdBeWdDS0JBcUlBRWdBaEFTR2lBQlFjcVZDQkFPR2lBR0tBS01BaUVISUFJUUR4b2dBUkFSREFFTFFRQWhCeUFGSUFOQkFoQWJJZ0lRSUM4QkhrSHVLVVlOQUNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVINWtBb1FEaG9nQVNBR1FTQnFFQklhSUFGQm5kc0xFQTRhSUFaQlFHc2lBeUFGSUFJUUtpQUJJQU1RRWhvZ0FVR0NpZ2dRRGhvZ0JpZ0NqQUloQnlBREVBOGFJQUVRRVFzZ0JrRWdhaEFQR2d3RUN3SkFJQVVvQXBBRERRQWdCUzBBcEFNTkFDQUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVRzNDaEFPR2lBR0tBS01BaUVISUFFUUVRd0VDeUFGSUFNb0FpUVFJQ0VCQWtBZ0F5OEJIa0dUQTBZRVFDQUJCRUFnQVM4QkhrRVZSZzBDQ3lBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVIaGpRSVFEaG9nQmlnQ2pBSWhCeUFCRUJFTUJRc2dBUVJBSUFFdkFSNUJGRVlOQVFzZ0JrSFFBR29pQVNBRlFYWWdBeEFRSUFGQmtQd0NFQTRhSUFZb0Fvd0NJUWNnQVJBUkRBUUxBa0FnQlNBRFFRSVFHeEFnSWdGRklBVWdBMEVERUJzUUlDSUNSWEpGQkVBZ0FTZ0NKQ0lCSUFJb0FpUkdEUUVMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWNLbEF4QU9HaUFHS0FLTUFpRUhJQUVRRVF3RUN3SkFJQVVnQVJBZ0lnRUVRQ0FCTHdFZVFTQkdEUUVMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWJqYUFSQU9HaUFHS0FLTUFpRUhJQUVRRVF3RUN5QUJRUUVRR3lFQklBVW9BcEFEUlFSQUlBRkJkM0ZCQkVjRVFDQUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVR01rQUVRRGhvZ0JpZ0NqQUloQnlBQkVCRU1CUXNnQVVFRVJ3MEZJQVZCZ0FGcVFkb2lFR2dOQlNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHVitnUVFEaG9nQmlnQ2pBSWhCeUFCRUJFTUJBc2dBVUhsS1VjTkJDQUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVR1hrUUVRRGhvZ0JpZ0NqQUloQnlBQkVCRU1Bd3RCaGU4RVFmK1VBa0hVQ0VHTWpRRVFBQUFMQWtBQ1FBSkFJQWRCMnlsckRnVUFBUUVCQWdFTElBWkIwQUJxSWdzZ0JVSGZKQkEzSUFVZ0F5Z0NPQ2dDQUJDZkFTRU1JQVpCRUdvZ0N4QlVJUWRCRUJBVklnbEI5SXdnTmdJQUlBa2dCeWtDQURjQ0JDQUpJQWNvQWdnMkFnd2dCeEJWSUFZZ0NUWUNNQ0FNUWFBRGFpQUdRU0JxSWdrUXpRRWdDUkFXSUFjUUR4b2dDeEFQR2dzQ1FDQUZLQUlBS0FJQUVFZEZEUUFnQmlnQ1BFRUNSdzBBQTBBZ0FTOEJIa0hCQUdzaUIwRVNTMEVCSUFkMFFhZUFFSEZGY2tVRVFDQUZJQUZCQWhBYkVMb0JJUUVNQVFzTElBRXZBUjVCTzBjTkFDQUZJQVVnQlNBQlFRQVFHeEFnUVFJUUd4QWdJZ0V2QVI1Qi92OERjVUVjUmdSL0lBVWdBVUVCRUJzUUlBVWdBUXNvQWloQkFoREFBa1VOQUNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQmtGQWF5SURJQVZCalRZUU55QUJJQU1RRWhvZ0FVR2tyQUVRRGhvZ0JpZ0NqQUloQnlBREVBOGFJQUVRRVF3REN3SkFJQVVnQTBFQkVCc2lDUkFnSWdjRVFDQUhLQUlrSWdFTkFRc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJyY1lMRUE0YUlBWkJRR3NpQXlBRklBa1FLaUFCSUFNUUVob2dBVUg2cWdjUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd0RDd0pBSUFVZ0FSQWdJZ0VFUUNBQkx3RWVJZ3RCRTBjTkFRc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJyY1lMRUE0YUlBWkJRR3NpQXlBRklBa1FLaUFCSUFNUUVob2dBVUhNL0FjUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd0RDd0pBSUFRb0FpZ2dBU2dDS0VZTkFBSkFBa0FnQlNnQ0JDMEFKRVVOQUNBRUx3RWVRUjVIRFFBZ0MwRWVSZzBCQ3lBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHRXlBc1FEaG9nQmtGQWF5SURJQVVnQWhBcUlBRWdBeEFTR2lBQlFZckdDeEFPR2lBR0lBVWdCeWdDS0JBcUlBRWdCaEFTR2lBQlFkL3VCeEFPR2lBR0tBS01BaUVISUFZUUR4b2dBeEFQR2lBQkVCRU1CQXNnQlNBRUlBRVE3eFVOQUNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHRXlBc1FEaG9nQmtGQWF5SURJQVVnQWhBcUlBRWdBeEFTR2lBQlFlWEZDeEFPR2lBR0lBVWdCeWdDS0JBcUlBRWdCaEFTR2lBQlFlbVhCeEFPR2lBR0tBS01BaUVISUFZUUR4b2dBeEFQR2lBQkVCRU1Bd3NnQlNBRFFRSVFyQWdpQncwRUlBVXRBSUFCUVFKeFJRMERJQVVnQXlnQ0pCRHhBa1VOQXlBQkx3RWVRUlZySWdGQkMwMUJBRUVCSUFGMFFZOFFjUnNOQXlBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHTDhBTVFEaG9nQmlnQ2pBSWhCeUFCRUJFTUFnc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkI0QlFRRGhvZ0JpZ0NqQUloQnlBQkVCRU1BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUZCeC9BREVBNGFJQVlvQW93Q0lRY2dBUkFSQ3lBSERRRUxRUUFoQndzZ0JrR1FBbW9rQUNBSElnRU5CMEVBSVFRakFFSHdBV3NpQVNRQUFrQUNRQUpBQWtBQ1FBSkFJQWd2QVI1Qk5tc09CQUFDQkFFRUN3SkFJQVVnQ0VFREVCc2lBaEFnSWdNRVFDQURMd0VlUVNGR0RRRUxJQUZCTUdvaUF5QUZRWFlnQ0JBUUlBTkJqZGdMRUE0YUlBRkJJR29pQkNBRklBSVFLaUFESUFRUUVob2dBMEhGOFFjUURob2dBU2dDN0FFaEFpQUVFQThhSUFNUUVRd0RDeUFEUVFFUUd5SUNJQWdvQWlSSEJFQWdBVUV3YWlJRElBVkJkaUFJRUJBZ0EwSE8wUXNRRGhvZ0FVRWdhaUlFSUFVZ0NDZ0NKQkFxSUFNZ0JCQVNHaUFEUWVmT0N4QU9HaUFCUVJCcUlnY2dCU0FDRUNvZ0F5QUhFQklhSUFOQi9KY0lFQTRhSUFFb0F1d0JJUUlnQnhBUEdpQUVFQThhSUFNUUVRd0RDeUFCUVRCcUlnTkJvTWdOUVRnUWZSb2dBVUVPTmdJTUlBRWdBellDQ0NBQklBRXBBd2czQXdBZ0FVRWdhaUFCRU9jRElRTWdDQ2dDUkNFRUlBZ29Ba0FoQWdOQUFrQUNRQ0FDSUFSR0JFQkJBQ0VDREFFTElBTW9BZ1FoQmlBREtBSUFJUWtnQVNBQ0tBSUFJZ2N2QVI0MkFqQWdDU0FHSUFGQk1Hb1FtZ1VnQXlnQ0JFY05BU0FIRU0wRkRRRWdCeERYRFEwQklBRkJNR29pQkNBRlFYWWdCeEFRSUFSQmtkY0tFQTRhSUFGQkVHb2lCeUFGSUFnb0FpZ1FLaUFFSUFjUUVob2dCRUg4bHdnUURob2dBU2dDN0FFaEFpQUhFQThhSUFRUUVRc2dBeEF5R2d3RUN5QUNRUWhxSVFJTUFBc0FDd0pBSUFVZ0NFRUNFQnNpQWhBZ0lnTUVRQ0FETHdFZVFUWkdEUUVMSUFGQk1Hb2lBeUFGUVhZZ0NCQVFJQU5CMXNvTEVBNGFJQUZCSUdvaUJDQUZJQUlRS2lBRElBUVFFaG9nQTBHRjFRY1FEaG9nQVNnQzdBRWhBaUFFRUE4YUlBTVFFUXdDQ3dKQUlBVWdBeWdDSkJBZ0lnSUVRQ0FDS0FJb0lBZ29BaVJHRFFFTElBRkJNR29pQXlBRlFYWWdDQkFRSUFOQmpOSUxFQTRhSUFGQklHb2lCQ0FGSUFnb0FpUVFLaUFESUFRUUVob2dBMEgweWdzUURob2dBVUVRYWlJSElBVWdBaWdDS0JBcUlBTWdCeEFTR2lBRFFiYnhCeEFPR2lBQktBTHNBU0VDSUFjUUR4b2dCQkFQR2lBREVCRU1BZ3NDUUNBRklBTkJBeEFiRUNBaUJ3UkFJQWN2QVI1QklVWU5BUXNnQVVFd2FpSURJQVZCZGlBSUVCQWdBMEgyMEFjUURob2dBU2dDN0FFaEFpQURFQkVNQWdzZ0NDZ0NCQ0FJS0FJQWEwRUNkVUVCYXlBSEtBSUVJQWNvQWdCclFRSjFSZ1JBSUFWQmdBRnFJUTFCQXlFRVFRSWhDd05BSUFRZ0NDZ0NFQ0FJS0FJTWEwRUVkVThOQkNBRklBZ2dCQkFiSWdZUUlDSU1SUVJBSUFGQk1Hb2lBeUFGUVhZZ0NCQVFJQU5Ca013SkVBNGFJQU1nQkVFRGF4QWhHaUFEUVl2UkJ4QU9HaUFCS0FMc0FTRUNJQU1RRVF3RUN5QUZJQXdvQWlRUUlDSUpSUVJBSUFGQk1Hb2lBeUFGUVhZZ0NCQVFJQU5Ca013SkVBNGFJQU1nQkVFRGF4QWhHaUFEUVliUkJ4QU9HaUFCS0FMc0FTRUNJQU1RRVF3RUN3SkFJQVVnQnlBTEVCc2lFQkFnSWdNRVFDQUpLQUlvSUFNb0FpaEdEUUVMQWtBZ0JTZ0NCQzBBTEVVTkFDQUpMd0VlUVNCSERRQWdBeThCSGtFZ1J3MEFJQVVnQ1NnQ0tCRGVBU0lQUVFScUlSRWdCU0FES0FJb0VONEJJZ0pCQkdvaEV5QUNLQUlBSVFJRFFDQUNJQk5IQkVBZ0R5Z0NBQ0FSSUFKQkVHb1EvQlVnRVVZTkFpQUNFRXdoQWd3QkN3c2dDVUVDRUJzaUFpQURRUUlRR3lJSlJnMEJJQVVnQlNBQ0VDQWdCU0FKRUNCQkFSQzlEUTBCQ3lBQlFUQnFJZ01nQlVGMklBZ1FFQ0FEUWFERUN4QU9HaUFCUVNCcUlnUWdCU0FHRUNvZ0F5QUVFQklhSUFOQjlNb0xFQTRhSUFGQkVHb2lCeUFGSUJBUUtpQURJQWNRRWhvZ0EwSEw3d2NRRGhvZ0FTZ0M3QUVoQWlBSEVBOGFJQVFRRHhvZ0F4QVJEQVFMQWtBZ0JTZ0NrQU1OQUNBREx3RWVRU0JIRFFBZ0JTZ0NCQzBBSlEwQUFrQUNRQ0FEUVFFUUd5SURRUXhMRFFCQkFTQURkRUhSQ1hFTkFTQURRUXhIRFFBZ0JTMEFwQU1OQVNBQlFUQnFJZ01nQlVGMklBZ1FFQ0FEUWVUTUNoQU9HaUFCUVNCcUlnUWdCU0FHRUNvZ0F5QUVFQklhSUFOQmxnc1FEaG9nQVNnQzdBRWhBaUFFRUE4YUlBTVFFUXdHQ3lBQlFUQnFJZ01nQlVGMklBZ1FFQ0FEUWJuTUNoQU9HaUFCUVNCcUlnUWdCU0FHRUNvZ0F5QUVFQklhSUFFb0F1d0JJUUlnQkJBUEdpQURFQkVNQlFzQ1FDQU1Md0VlUVRkckRnVUJBQUFBQVFBTElBTkZJQU5CREVZZ0JTMEFwQU5CQUVkeGNpQU5RZG9pRUdnZ0EwRUVSbkZ5RFFBZ0FVRXdhaUlESUFWQmRpQUlFQkFnQTBHRHpRb1FEaG9nQVVFZ2FpSUVJQVVnQmhBcUlBTWdCQkFTR2lBRFFZL2RBaEFPR2lBQktBTHNBU0VDSUFRUUR4b2dBeEFSREFRTElBdEJBV29oQ3lBRVFRRnFJUVFNQUFzQUN5QUJRVEJxSWdNZ0JVRjJJQWdRRUNBRFFZMllCeEFPR2lBQktBTHNBU0VDSUFNUUVRd0JDeUFJS0FJMFFRRnJJZ0pGQkVBZ0FVRXdhaUlESUFWQmRDQUlFQkFnQTBHWTBRY1FEaG9nQVNnQzdBRWhBaUFERUJFTUFRc2dCU2dDb0FFaUEwSE1BR29oQmdKQUEwQWdBa0VCYXlJQ1JRMEJJQU1nQWtITUFHeHFMd0VlSWdkQk5rY0VRQ0FFSUFkQk4wWnFJUVFNQVFzTElBTWdBa0hNQUd4cUlRWUxJQVl2QVI1Qk5rY0VRQ0FCUVRCcUlnTWdCVUYwSUFnUUVDQURRZExVQnhBT0dpQUJLQUxzQVNFQ0lBTVFFUXdCQ3lBRklBWkJBeEFiRUNBaUFrVUVRQ0FCUVRCcUlnTWdCVUYySUFZUUVDQURRZmJRQnhBT0dpQUJLQUxzQVNFQ0lBTVFFUXdCQ3lBQ0tBSUVJQUlvQWdCclFRSjFRUU5ySUFSTkJFQWdBVUV3YWlJRElBVkJkaUFJRUJBZ0EwSHE3UWtRRGhvZ0F5QUdLQUlvRUNFYUlBTkI0dG9LRUE0YUlBTWdBaWdDQkNBQ0tBSUFhMEVDZFVFRGF4QWhHaUFEUWRiMkF4QU9HaUFCS0FMc0FTRUNJQU1RRVF3QkN3SkFJQVVnQWlBRVFRSnFFQnNRSUNJRFJRMEFJQWdvQWlRaUFpQURLQUlvUncwQUEwQWdCU0FDRUhCQkhFWUVRQ0FGSUFJUUlFRUJFQnNoQWd3QkN3c2dCU0FDRUhCQklFY05BaUFGSUFJUUlDSURRUUVRRzBIbEtVWUVRQ0FGSUFnb0FpZ1EzZ0VpQkVFRWFpRURJQVFvQWdBaEFnTkFBa0FnQWlBRFJpSUhEUUFnQWlnQ0VFRVVSZzBBSUFJUVRDRUNEQUVMQ3lBRUtBSUFJUVFDUUFOQUlBTWdCRWNFUUNBRUtBSVFRUk5HRFFJZ0JCQk1JUVFNQVFzTElBSWdBMGNOQkNBQlFUQnFJZ01nQlVGMklBZ1FFQ0FEUWI3NENSQU9HaUFESUFnb0FpZ1FJUm9nQTBIL3hRY1FEaG9nQVNnQzdBRWhBaUFERUJFTUF3c2dCdzBESUFGQk1Hb2lBeUFGUVhZZ0NCQVFJQU5CdnZnSkVBNGFJQU1nQ0NnQ0tCQWhHaUFEUWNIR0J4QU9HaUFCS0FMc0FTRUNJQU1RRVF3Q0N5QUZJQU5CQWhBYkVDQWlBeThCSGtFZ1J3MENJQU5CQVJBYlFlVXBSdzBDSUFVZ0NDZ0NLQkRlQVNJRVFRUnFJUU1nQkNnQ0FDRUNBMEFDUUNBQ0lBTkdJZ2NOQUNBQ0tBSVFRZXdwUmcwQUlBSVFUQ0VDREFFTEN5QUVLQUlBSVFRQ1FBTkFJQU1nQkVjRVFDQUVLQUlRUWVzcFJnMENJQVFRVENFRURBRUxDeUFDSUFOSERRTWdBVUV3YWlJRElBVkJkaUFJRUJBZ0EwRysrQWtRRGhvZ0F5QUlLQUlvRUNFYUlBTkJqc2NIRUE0YUlBRW9BdXdCSVFJZ0F4QVJEQUlMSUFjTkFpQUJRVEJxSWdNZ0JVRjJJQWdRRUNBRFFiNzRDUkFPR2lBRElBZ29BaWdRSVJvZ0EwSGV4d2NRRGhvZ0FTZ0M3QUVoQWlBREVCRU1BUXNnQVVFd2FpSURJQVZCZGlBSUVCQWdBMEdFMFFzUURob2dBVUVnYWlJRUlBVWdDQ2dDSkJBcUlBTWdCQkFTR2lBRFFhU1hCeEFPR2lBQktBTHNBU0VDSUFRUUR4b2dBeEFSQ3lBQ0RRRUxRUUFoQWdzZ0FVSHdBV29rQUNBQ0lnRU5CeU1BUWRBQ2F5SUJKQUFnQ0NJQ0x3RWVJZ01RK3hVRVFDQUZJQUlvQWpnb0FnQVFud0VoQnlBQklBTTJBaHdnQVVISWl5QTJBaGdnQVNBQlFSaHFJZ1EyQWlnZ0IwR2dBMm9nQkJETkFTQUVFQllnQlNBQ0tBSTRLQUlBRUo4QklRUWdBU0FETmdJRUlBRkI3SXNnTmdJQUlBRWdBVFlDRUNBRVFhd0RhaUFCRU0wQklBRVFGZ3RCQUNFRUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFOQlBHc09NQkVVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVBUkFRRHc4UUVBOFBEZzBOREFzS0NRa0lCd1lGQlFBTEFrQWdBMEd4QW1zT0VCQVFEdzhFQkFRRURnME5BeFFVRkF3QUN3SkFBa0FnQTBFWmF3NERBQlVCRlFzZ0FpZ0NKQTBDSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdBaWdDQUNnQ0JDQUJRZkFBYWhDcEEwVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdUeFFJUURob2dBU2dDekFJaEJDQURFQkVNRlFzQ1FDQUZJQUVvQW5BUVVFVU5BQ0FGSUFFb0FuQVFQa0hBQUVjTkFDQUZRWUFCYWtHWUp4Qm9EUUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CbEQ0UURob2dBU2dDekFJaEJDQURFQkVNRlFzQ1FDQUZLQUlBS0FJQUlnTVFSd1JBQWtBZ0JTQUJLQUp3RUhkRkJFQWdCU0FCS0FKd0VGQkZEUUVMSUFVZ0FTZ0NjQkErUVNCSEJFQWdCU0FCS0FKd0VENUJ3QUJIRFFFTElBVWdBU2dDY0JBK1FjQUFSdzBDSUFVZ0FTZ0NjQkIzUlEwQ0N5QUJRWkFCYWlJRElBVkJjaUFDRUJBZ0FVSFlBR29pQnlBRlFiQWtFRGNnQXlBSEVCSWFJQU5CM3NnQUVBNGFJQUVvQXN3Q0lRUWdCeEFQR2lBREVCRU1GZ3NnQXhDbUJpRUVJQUVvQW5BaEJ5QUVCRUFnQlNBSEVKMEhEUUVnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CejZBSEVBNGFJQUVvQXN3Q0lRUWdBeEFSREJZTElBVWdCeEJ3SWdkQkZrMUJBRUVCSUFkMFFZQ0FvQU54RzBVRVFDQUJRWkFCYWlJR0lBVkJjaUFDRUJBZ0JrR3oxUUVRRGhvZ0JrSDRoZ1FRRGhvZ0FTZ0N6QUloQkNBR0VCRUxRUUVnQjNSQmdJQ2dBM0ZGSUFkQkZrdHlEUlVMSUFFb0FuaEJBMDhFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHbm93b1FEaG9nQXlBQktBSjRFQ0VhSUFOQm05WUlFQTRhSUFFb0Fzd0NJUVFnQXhBUkRCVUxJQUVvQW54QkFrOEVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEhoMlFvUURob2dBeUFCS0FKOEVDRWFJQU5Cc05ZSUVBNGFJQUVvQXN3Q0lRUWdBeEFSREJVTElBRW9Bb0FCSWdkQkFrOEVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdydndzUURob2dBeUFCS0FLQUFSQWhHaUFEUWJEV0NCQU9HaUFCS0FMTUFpRUVJQU1RRVF3VkN5QUJLQUtFQVNJRVFRTlBCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CdXQwS0VBNGFJQU1nQVNnQ2hBRVFJUm9nQTBHYjFnZ1FEaG9nQVNnQ3pBSWhCQ0FERUJFTUZRc0NRQ0FCS0FKMFFRWkdCRUFnQkVFQ1J3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQUJRZGdBYWlJSElBVkJ4akFRTnlBRElBY1FFaG9nQTBHNWhBY1FEaG9nQVNnQ3pBSWhCQ0FIRUE4YUlBTVFFUXdYQ3lBQktBS0lBVVVOQVNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHaXdnSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUZnc2dCMFVnQkVFQ1IzSU5BQ0FGTFFDREFVRUljUTBBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWJUR0JCQU9HaUFCS0FMTUFpRUVJQU1RRVF3VkN3SkFJQU1RcGdaRkRRQUNRQ0FCS0FKOFFRRkhEUUFnQVNnQ2RFRUNTUTBBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWNHM0RCQU9HaUFEUVoyVUNCQU9HaUFCS0FMTUFpRUVJQU1RRVF3V0N5QUJLQUtBQVFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFkQ2lCeEFPR2lBQktBTE1BaUVFSUFNUUVRd1dDeUFCS0FLRUFRUkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRYU9pQnhBT0dpQUJLQUxNQWlFRUlBTVFFUXdXQ3lBQktBS01BVUgvLy8vL0IwY05BQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdkN1FFUURob2dBMEh2bWdjUURob2dBU2dDekFJaEJDQURFQkVNRlF0QkFDRUVJQU1RUjBVTkZDQUJLQUtFQVVVRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0FVSFlBR29pQnlBRlFiRWtFRGNnQXlBSEVCSWFJQU5CbmFBSEVBNGFJQUVvQXN3Q0lRUWdCeEFQR2lBREVCRU1GUXNnQVNnQ2RFRUdSdzBVSUFFb0FueEZEUlFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQUZCMkFCcUlnY2dCVUhHTUJBM0lBTWdCeEFTR2lBRFFZK1FCeEFPR2lBQktBTE1BaUVFSUFjUUR4b2dBeEFSREJRTElBVWdBaWdDQUNnQ0NDSURFSEJCR1VjRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwSHd4d1FRRGhvZ0FTZ0N6QUloQkNBREVCRU1GQXNnQVVJQU53T0FBU0FCUWdBM0EzZ2dBVUtBZ0lDQThQLy8vLzhBTndOd0lBRkMvLy8vLy9mLy8vLy9BRGNEaUFFZ0JTQURJQUZCOEFCcUVLa0RSUVJBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVpQRkFoQU9HaUFCS0FMTUFpRUVJQU1RRVF3VUN5QUJLQUtFQVVFQ1R3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQUJRZGdBYWlJSElBVkJzU1FRTnlBRElBY1FFaG9nQTBHbGh3Y1FEaG9nQVNnQ3pBSWhCQ0FIRUE4YUlBTVFFUXdVQ3lBRktBSVVRWUNNQkVrTkV5QUJLQUowUVFWSERSTWdBVUdRQVdvaUF5QUZRWFlnQWhBUUlBTkJzUFlCRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQk1MSUFVZ0FpZ0NKQkJ3UVJ0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ6L2dIRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQk1MSUFVZ0JTQUNRUUlRSmlJREVIQkJHVWNFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHbCtBY1FEaG9nQVNnQ3pBSWhCQ0FERUJFTUV3c2dBVUlBTndPQUFTQUJRZ0EzQTNnZ0FVS0FnSUNBOFAvLy8vOEFOd053SUFGQy8vLy8vL2YvLy8vL0FEY0RpQUVnQlNBRElBRkI4QUJxRUtrRFJRUkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWlBGQWhBT0dpQUJLQUxNQWlFRUlBTVFFUXdUQ3lBRktBSUFLQUlBRUVjaEJDQUJLQUtFQVNFREFrQWdCQVJBSUFOQkFVWU5BU0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBVUhZQUdvaUJ5QUZRWTgwRURjZ0F5QUhFQklhSUFOQjNKMEhFQTRhSUFFb0Fzd0NJUVFnQnhBUEdpQURFQkVNRkFzZ0EwRUNTUTBBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWZTSEJ4QU9HaUFCS0FMTUFpRUVJQU1RRVF3VEN5QUJLQUowUVFaR0JFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJrSWtJRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQk1MSUFVZ0JTQUNRUU1RSmhCd1FScEhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CMCtZQkVBNGFJQUVvQXN3Q0lRUWdBeEFSREJNTElBSW9BaWdoQkNNQVFSQnJJZ01rQUNBRElBUTJBZ3dnQVVIWUFHb2lCRUVBTmdJSUlBUkNBRGNDQUNBRlFjZ0FhaUFEUVF4cUVKNENJZ2NFUUNBRUlBZEJER29RdUFjTElBTkJFR29rQUNBQktBSllJZ1lnQVNnQ1hDSURSZzBRSUFWQmdBRnFJUWtEUUNBRElBWkdEUkVnQmlnQ0FDSUhLQUk4SUFJb0FqeEhCRUFnQVVHUUFXb2lBeUFGUVhZZ0FoQVFJQU5CdnRVTEVBNGFJQUZCUUdzaUJpQUZJQUlvQWlnUUtpQURJQVlRRWhvZ0EwR3kzd2tRRGhvZ0FVRXdhaUlKSUFVZ0J5Z0NLQkFxSUFNZ0NSQVNHaUFEUWZ5WENCQU9HaUFCS0FMTUFpRUVJQWtRRHhvZ0JoQVBHaUFERUJFTUV3c0NRQ0FITHdFZUlnUkIwd0JySWd0QkZrMUJBRUVCSUF0MFFmbmZpUUp4R3cwQUlBUkJzUUpySWd0QkNrMUJBRUVCSUF0MFFZOE1jUnNOQUFKQUlBUkJQa2NFUUNBRVFmVUJSeUFFUWFrQlIzRU5BU0FCUVpBQmFpSURJQVZCZGlBQ0VCQWdBMEdIdkFJUURob2dBeUFFRUNrUURob2dBMEg4bHdnUURob2dBMEcreEFzUURob2dBVUZBYXlJR0lBVWdBaWdDS0JBcUlBTWdCaEFTR2lBRFFhRE1DeEFPR2lBQlFUQnFJZ2tnQlNBSEtBSW9FQ29nQXlBSkVCSWFJQU5CL0pjSUVBNGFJQUVvQXN3Q0lRUWdDUkFQR2lBR0VBOGFJQU1RRVF3VkN5QUpRWTRxRUdnTkFRc2dBVUdRQVdvaUF5QUZRWFlnQWhBUUlBTkJoYmtDRUE0YUlBTWdCQkFwRUE0YUlBTkJ0WlVLRUE0YUlBTkI2dmdIRUE0YUlBTkJ2c1FMRUE0YUlBRkJRR3NpQmlBRklBSW9BaWdRS2lBRElBWVFFaG9nQTBHZ3pBc1FEaG9nQVVFd2FpSUpJQVVnQnlnQ0tCQXFJQU1nQ1JBU0dpQURRZnlYQ0JBT0dpQUJLQUxNQWlFRUlBa1FEeG9nQmhBUEdpQURFQkVNRXdzZ0JrRUVhaUVHREFBTEFBdEI1WkVIUWNhdkFrR0xCa0dreVFRUUFBQUxJQVVnQWlnQ0pCQy9Ba1VFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBITWhnUVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUVRc2dCU0FGSUFKQkFoQW1FRkFORUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVmhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUVBc2dBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkI3NFVLRUE0YUlBTkJ3dTBFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQThMSUFVZ0FpZ0NKQkJRUlFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFaMkNCQkFPR2lBQktBTE1BaUVFSUFNUUVRd1BDeUFGSUFVZ0FrRUNFQ1lpQXhCd1FSbEhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5COE1jRUVBNGFJQUVvQXN3Q0lRUWdBeEFSREE4TElBRkNBRGNEZ0FFZ0FVSUFOd040SUFGQ2dJQ0FnUEQvLy8vL0FEY0RjQ0FCUXYvLy8vLzMvLy8vL3dBM0E0Z0JJQVVnQXlBQlFmQUFhaENwQTBVRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR1R4UUlRRGhvZ0FTZ0N6QUloQkNBREVCRU1Ed3NDUUFKQUFrQWdBaThCSGtIcUFHc09BZ0FDQVFzZ0FTZ0NkRUVFVHdSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFadmRCQkFPR2lBQktBTE1BaUVFSUFNUUVRd1JDeUFGS0FJQUtBSUFFRWRGRFJBZ0FTZ0NoQUZCQVVZTkVDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0FVSFlBR29pQnlBRlFiTWtFRGNnQXlBSEVCSWFJQU5CcElnSEVBNGFJQUVvQXN3Q0lRUWdCeEFQR2lBREVCRU1FQXRCcXJzQlFjYXZBa0dERUVIUnV3RVFBQUFMSUFFb0FuUkJBVWNFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHTzNnWVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUR3c2dBU2dDZ0FGQkFVWU5EaUFCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEh4aVFjUURob2dBU2dDekFJaEJDQURFQkVNRGdzZ0JTQUNLQUk0S0FJQUVKOEJJUWNnQVVHQWl5QTJBbGdnQVNBQlFkZ0FhaUlETmdKb0lBZEJvQU5xSUFNUXpRRWdBeEFXSUFVZ0FpZ0NPQ2dDQUJDZkFTRUhJQUZCcElzZ05nSkFJQUVnQVVGQWF5SUROZ0pRSUFkQnJBTnFJQU1RelFFZ0F4QVdJQVVnQWlnQ0pDSURFSTRCUlFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFjdjRBeEFPR2lBQktBTE1BaUVFSUFNUUVRd09DeUFGSUFNUVJVRUNSd1JBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVlpRkFSQU9HaUFCS0FMTUFpRUVJQU1RRVF3T0N5QUZJQVVnQWtFQ0VDWWlBeEJ3UVJ0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ6c29FRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQTRMSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdBeUFCUWZBQWFoQ3BBMFVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVHhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTURnc2dBU2dDZEVFRVR3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWnZkQkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdPQ3lBRklBSkJBeEFtSVFNZ0JTa0RnQUVoTHlBRklBTVFyZ0VoQndKQUlDOUN3QUNEVUVVRVFDQUhEUUVnQlNBREVNY0JEUUVnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CdHMwQkVBNGFJQUVvQXN3Q0lRUWdBeEFSREE4TElBY05BQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdwemdFUURob2dBU2dDekFJaEJDQURFQkVNRGdzZ0FVSHdBR29Rb2djaUJ5QUZJQU1RUlNJR1RRME5JQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWXJHQ1JBT0dpQURJQWNRSVJvZ0EwR0Z3QWtRRGhvZ0F5QUdFQ0VhSUFFb0Fzd0NJUVFnQXhBUkRBMExJQVVnQWlnQ0pDSUhFTWNCUlFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFaejdBeEFPR2lBQktBTE1BaUVFSUFNUUVRd05DeUFGSUFVZ0FrRUNFQ1lpQXhCd1FSbEhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5COE1jRUVBNGFJQUVvQXN3Q0lRUWdBeEFSREEwTElBRkNBRGNEZ0FFZ0FVSUFOd040SUFGQ2dJQ0FnUEQvLy8vL0FEY0RjQ0FCUXYvLy8vLzMvLy8vL3dBM0E0Z0JJQVVnQXlBQlFmQUFhaENwQTBVRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR1R4UUlRRGhvZ0FTZ0N6QUloQkNBREVCRU1EUXNDUUFKQUFuOENRQ0FCS0FKMElnTkJCVTBFUUNBQktBSjhJUVJCQVNBRGRDSUdRUnB4RFFGQkFTQUdRU0Z4RFFJYUlBUkJBMm9oQmd3REN5QUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwSHU4d0FRRGhvZ0FTZ0N6QUloQkNBREVCRU1FQXRCQWdzZ0JHb2hCaUFEUVFOTERRRUxJQUVvQW9BQlFRRkdEUUFnQVNnQ2hBRWlBMFVnQTBFQ1JuSU5BQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEd0K1FZUURob2dBU2dDekFJaEJDQURFQkVNRFF0QkFDRUVJQVVnQnhCRklnY2dCa1lORENBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHcTVBa1FEaG9nQXlBSEVDRWFJQU5CZ2VjTUVBNGFJQU5COE1RSkVBNGFJQU1nQmhBaEdpQURRZjN4QkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdNQ3lBRklBSW9BaVFpQXhESEFVVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdjK3dNUURob2dBU2dDekFJaEJDQURFQkVNREFzZ0JTQUZJQUpCQWhBbUlnUVFjRUVaUndSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFmREhCQkFPR2lBQktBTE1BaUVFSUFNUUVRd01DeUFCUWdBM0E0QUJJQUZDQURjRGVDQUJRb0NBZ0lEdy8vLy8vd0EzQTNBZ0FVTC8vLy8vOS8vLy8vOEFOd09JQVNBRklBUWdBVUh3QUdvUXFRTkZCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CazhVQ0VBNGFJQUVvQXN3Q0lRUWdBeEFSREF3TElBRW9BblFpQkVFRVR3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWnZkQkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdNQ3lBQktBS0FBUVJBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWR1T0J4QU9HaUFCS0FMTUFpRUVJQU1RRVF3TUN5QUVRUUowUWRqSURXb29BZ0FoQkNBQktBSjhJUWNDUUNBRktBSUFLQUlBRUVkRkRRQWdBU2dDaEFGQkFVWU5BQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBVUhZQUdvaUJ5QUZRYk1rRURjZ0F5QUhFQklhSUFOQmlva0hFQTRhSUFFb0Fzd0NJUVFnQnhBUEdpQURFQkVNREFzZ0JTQURFRVVpQmlBRUlBZHFJZ1JIQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnF1UUpFQTRhSUFNZ0JoQWhHaUFEUVlIbkRCQU9HaUFEUWZERUNSQU9HaUFESUFRUUlSb2dBMEg5OFFRUURob2dBU2dDekFJaEJDQURFQkVNREF0QkFDRUVJQVVnQlNBQ1FRTVFKaEJRRFFzZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnZJUUNFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBc0xJQVVnQWlnQ0pCQlFSUVJBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVoyQ0JCQU9HaUFCS0FMTUFpRUVJQU1RRVF3TEN5QUZJQVVnQWtFQ0VDWVFjRUVaUmcwS0lBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFabklCQkFPR2lBQktBTE1BaUVFSUFNUUVRd0tDeUFGSUFJb0FpUWlCeEJ3UVJsSEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkIvY2dFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQW9MSUFVZ0JTQUNRUUlRSmhBZ0lnTUVRQ0FETHdFZVFSdEhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CdHNrRUVBNGFJQUVvQXN3Q0lRUWdBeEFSREFzTElBTW9BZ0FvQWdnZ0IwWU5DaUFCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEhvb1FRUURob2dBU2dDekFJaEJDQURFQkVNQ2d0QmpTOUJ4cThDUWQ0TlFlTEhCQkFBQUFzZ0JTQUZJQUpCQUJBbUlnTVFjRUVaUndSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFmREhCQkFPR2lBQktBTE1BaUVFSUFNUUVRd0pDeUFCUWdBM0E0QUJJQUZDQURjRGVDQUJRb0NBZ0lEdy8vLy8vd0EzQTNBZ0FVTC8vLy8vOS8vLy8vOEFOd09JQVNBRklBTWdBVUh3QUdvUXFRTkZCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CazhVQ0VBNGFJQUVvQXN3Q0lRUWdBeEFSREFrTElBRW9BblJCQmtZRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR3F1Z1VRRGhvZ0FTZ0N6QUloQkNBREVCRU1DUXNnQlNBQ0lBRkI4QUJxRVBvVklnUU5DQ0FGSUFVZ0FrRUJFQ1lpQXhESEFVVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdIelFFUURob2dBU2dDekFJaEJDQURFQkVNQ1FzZ0FpOEJIaUFCUWZBQWFoQ2hCeUlFSUFVZ0F4QkZJZ2RMQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQmlzWUpFQTRhSUFNZ0JCQWhHaUFEUVlYQUNSQU9HaUFESUFjUUlSb2dBU2dDekFJaEJDQURFQkVNQ1FzQ1FDQUZJQVVnQWtFQ0VDWWlBeERIQVEwQUlBVWdBeEN1QVEwQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFmcU1BaEFPR2lBQktBTE1BaUVFSUFNUUVRd0pDd0pBSUFVZ0FTZ0NjQkJ3UVJOR0RRQWdCU0FERU1FQklBRW9BbkJHRFFBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnpwY0tFQTRhSUFOQnA0VUJFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBa0xBa0FnQlNnQ0FDZ0NBQkJIUlEwQUlBRW9Bb2dCRFFBZ0FTZ0NkRUVHUmcwQUlBVXRBSWNCUVFGeERRQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ3N1lLRUE0YUlBTkJvOFlFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWtMQWtBZ0FpZ0NCQ0FDS0FJQWEwRVJTUTBBSUFVb0FnQW9BZ0FRcGdaRkRRQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ0NzhMRUE0YUlBTkI2NklIRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWtMSUFVZ0FpQUJRZkFBYWtFRkVLQUhJUVFNQ0FzZ0FpOEJIaUVESUFGQkFEWUNRQ0FGSUFJZ0FVRkFheEN1Q0NJRURRY0NRQ0FGSUFFb0FrQWlCQkRIQVEwQUlBVWdCQkN1QVEwQUlBRkJrQUZxSWdjZ0JVRnlJQUlRRUNBSFFicmJDaEFPR2lBSElBTkJzUUpySWdOQi8vOERjVUVQU3dSL1FmeXBCQVVnQTBFUWRFRVFkVUVDZEVHSWpDQnFLQUlBQ3hBT0dpQUhRWkw4QXhBT0dpQUJLQUxNQWlFRUlBY1FFUXdJQ3dKQUlBVW9BZ0FvQWdBaUJ4QkhSUTBBSUFVZ0JCQkZRUVJHRFFBZ0FVR1FBV29pQnlBRlFYSWdBaEFRSUFGQjhBQnFJZ1FnQlVHc0pSQTNJQWNnQkJBU0dpQUhRYnJiQ2hBT0dpQUhJQU5Cc1FKcklnTkIvLzhEY1VFUFN3Ui9RZnlwQkFVZ0EwRVFkRUVRZFVFQ2RFR0lqQ0JxS0FJQUN4QU9HaUFIUWNpRUFSQU9HaUFCS0FMTUFpRUVJQUZCOEFCcUVBOGFJQWNRRVF3SUN5QUZJQVVnQWtFQ0VDWWlCaEJ3UVJsSEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkI4TWNFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWdMSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdCaUFCUWZBQWFoQ3BBMFVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVHhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUNBc0NRQ0FIRUtZR1JRMEFBa0FnQVNnQ2VBUkFJQVVnQkJCM0RRRWdBVUdRQVdvaUJ5QUZRWElnQWhBUUlBZEJ1dHNLRUE0YUlBY2dBMEd4QW1zaUEwSC8vd054UVE5TEJIOUIvS2tFQlNBRFFSQjBRUkIxUVFKMFFZaU1JR29vQWdBTEVBNGFJQWRCMU04REVBNGFJQUVvQXN3Q0lRUWdCeEFSREFvTElBVWdCQkJGUVFSR0RRQWdBVUdRQVdvaUJ5QUZRWElnQWhBUUlBZEJ1dHNLRUE0YUlBY2dBMEd4QW1zaUEwSC8vd054UVE5TEJIOUIvS2tFQlNBRFFSQjBRUkIxUVFKMFFZaU1JR29vQWdBTEVBNGFJQWRCeUlRQkVBNGFJQUVvQXN3Q0lRUWdCeEFSREFrTElBSW9BZ1FnQWlnQ0FDSUhhMEVZU1EwQUlBY3RBQlJCQ0hGRkRRQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkIrOWtLRUE0YUlBTkIzYUlIRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWdMSUFFb0FuUkJCa1lFUUNBRFFjQUNSZ1JBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVpDQUJSQU9HaUFCS0FMTUFpRUVJQU1RRVF3SkN5QUZJQUlvQWpnb0FnQVFud0VoQmlBQlFaQUJhaUlISUFGQjJBQnFRZTJBREJBVUlna2dBeEFwRUMwZ0JrRUVJQWNReHdRZ0J4QVBHaUFKRUE4YUN3SkFJQVVnQVNnQ2NCQndRUk5HRFFBZ0JTQUVFTUVCSUFFb0FuQkdEUUFnQVVHUUFXb2lCeUFGUVhJZ0FoQVFJQWRCNHVZSkVBNGFJQWNnQTBHeEFtc2lBMEgvL3dOeFFROUxCSDlCL0trRUJTQURRUkIwUVJCMVFRSjBRWWlNSUdvb0FnQUxFQTRhSUFkQnBvVUJFQTRhSUFFb0Fzd0NJUVFnQnhBUkRBZ0xJQVVnQWlBQlFmQUFhaEQ2RlNJRURRY2dCU0FGSUFKQkF4QW1JZ1FReHdGRkJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJoODBCRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWdMSUFNZ0FVSHdBR29Rb1FjaUJ5QUZJQVFRUlNJRVN3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWXJHQ1JBT0dpQURJQWNRSVJvZ0EwR0Z3QWtRRGhvZ0F5QUVFQ0VhSUFFb0Fzd0NJUVFnQXhBUkRBZ0xBa0FnQlNnQ0FDZ0NBQkJIUlEwQUlBRW9Bb2dCRFFBZ0FTZ0NkRUVHUmcwQUlBVXRBSVlCUVlBQmNRMEFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWnVFQ2hBT0dpQURRWW5IQkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdJQ3lBRklBSWdBVUh3QUdwQkJoQ2dCeUVFREFjTElBRkJBRFlDUUNBRklBSWdBVUZBYXhDdUNDSUVEUVlnQWk4QkhpRURBa0FnQlNBQktBSkFJZ1FRdGdFTkFDQUZJQVFRamdFTkFDQUJRWkFCYWlJSElBVkJjaUFDRUJBZ0IwRzYyd29RRGhvZ0J5QURRYkVDYXlJRFFmLy9BM0ZCRDBzRWYwSDhxUVFGSUFOQkVIUkJFSFZCQW5SQmlJd2dhaWdDQUFzUURob2dCMEdyK0FNUURob2dBU2dDekFJaEJDQUhFQkVNQndzZ0JTQUVFRVZCQkVjRVFDQUJRWkFCYWlJSElBVkJjaUFDRUJBZ0IwRzYyd29RRGhvZ0J5QURRYkVDYXlJRFFmLy9BM0ZCRDBzRWYwSDhxUVFGSUFOQkVIUkJFSFZCQW5SQmlJd2dhaWdDQUFzUURob2dCMEhJaEFFUURob2dBU2dDekFJaEJDQUhFQkVNQndzZ0JTQUZJQUpCQWhBbUlnY1FjRUViUndSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFaYktCQkFPR2lBQktBTE1BaUVFSUFNUUVRd0hDeUFCUWdBM0E0QUJJQUZDQURjRGVDQUJRb0NBZ0lEdy8vLy8vd0EzQTNBZ0FVTC8vLy8vOS8vLy8vOEFOd09JQVNBRklBY2dBVUh3QUdvUXFRTkZCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CazhVQ0VBNGFJQUVvQXN3Q0lRUWdBeEFSREFjTElBRW9Bb0FCQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQjJjTUVFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBY0xBa0FnQTBIaEFFWWdBMEc3QWtaeVJRUkFJQVVnQVNnQ2NCQndRUk5HRFFFTElBVWdCQkRCQVNBQktBSndSZzBBSUFGQmtBRnFJZ2NnQlVGeUlBSVFFQ0FIUWVMbUNSQU9HaUFISUFOQnNRSnJJZ05CLy84RGNVRVBTd1IvUWZ5cEJBVWdBMEVRZEVFUWRVRUNkRUdJakNCcUtBSUFDeEFPR2lBSFFhYUZBUkFPR2lBQktBTE1BaUVFSUFjUUVRd0hDeUFCS0FKMElnUkJCRTFCQUVFQklBUjBRUnB4RzBVRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0FVSFlBR29pQnlBRlFha2xFRGNnQXlBSEVCSWFJQU5CMi9RQUVBNGFJQUVvQXN3Q0lRUWdCeEFQR2lBREVCRU1Cd3NnQlNBRklBSkJBeEFtSWdRUXJnRkZCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CcWM0QkVBNGFJQUVvQXN3Q0lRUWdBeEFSREFjTElBTWdBVUh3QUdvUW9RY2lCeUFGSUFRUVJTSUVTd1JBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVlyR0NSQU9HaUFESUFjUUlSb2dBMEdGd0FrUURob2dBeUFFRUNFYUlBRW9Bc3dDSVFRZ0F4QVJEQWNMQWtBQ1FBSkFBa0FDUUNBRFFlQUFhdzRDQVFNQUN5QURRYm9DYXc0Q0FBSUJDd0pBSUFVZ0JTQUNRUVFRR3lJREVNMENJZ1FRVUFSQUlBVWdCQkErUVNCR0RRRUxJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRZHovQVJBT0dpQUJLQUxNQWlFRUlBTVFFUXdLQ3lBRktBSUFLQUlBRUVkRkRRSWdCU0FERUhBUW93SU5BaUFCUVpBQmFpSURJQVZCY2lBQ0VCQWdBVUhZQUdvaUJ5QUZRYmdrRURjZ0F5QUhFQklhSUFOQnRjY0FFQTRhSUFFb0Fzd0NJUVFnQnhBUEdpQURFQkVNQ1F0QnQrNEJRY2F2QWtHQURFSC83d0VRQUFBTElBVWdBaUFCUWZBQWFoRDRGU0lFRFFjTElBVWdBaUFCUWZBQWFrRUhFS0FISVFRTUJnc2dBVUVBTmdKWUlBVWdBaUFCUWRnQWFoQ3VDQ0lFRFFVZ0FpOEJIaUVEQWtBZ0JTQUJLQUpZSWdRUXRnRU5BQ0FGSUFRUWpnRU5BQ0FCUVpBQmFpSUhJQVZCY2lBQ0VCQWdCMEc2MndvUURob2dCeUFEUWJFQ2F5SURRZi8vQTNGQkQwc0VmMEg4cVFRRklBTkJFSFJCRUhWQkFuUkJpSXdnYWlnQ0FBc1FEaG9nQjBHcitBTVFEaG9nQVNnQ3pBSWhCQ0FIRUJFTUJnc2dCU0FFRUVWQkJFY0VRQ0FCUVpBQmFpSUhJQVZCY2lBQ0VCQWdCMEc2MndvUURob2dCeUFEUWJFQ2F5SURRZi8vQTNGQkQwc0VmMEg4cVFRRklBTkJFSFJCRUhWQkFuUkJpSXdnYWlnQ0FBc1FEaG9nQjBISWhBRVFEaG9nQVNnQ3pBSWhCQ0FIRUJFTUJnc2dCU0FGSUFKQkFoQW1JZ2NRY0VFWlJ3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRZkRIQkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdHQ3lBQlFnQTNBNEFCSUFGQ0FEY0RlQ0FCUW9DQWdJRHcvLy8vL3dBM0EzQWdBVUwvLy8vLzkvLy8vLzhBTndPSUFTQUZJQWNnQVVId0FHb1FxUU5GQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQms4VUNFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBWUxBa0FnQlNBQktBSndFSEJCRTBZTkFDQUZJQVFRd1FFZ0FTZ0NjRVlOQUNBQlFaQUJhaUlISUFWQmNpQUNFQkFnQjBIaTVna1FEaG9nQnlBRFFiRUNheUlEUWYvL0EzRkJEMHNFZjBIOHFRUUZJQU5CRUhSQkVIVkJBblJCaUl3Z2FpZ0NBQXNRRGhvZ0IwR21oUUVRRGhvZ0FTZ0N6QUloQkNBSEVCRU1CZ3NnQVNnQ2RFRURSZ1JBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVpMZkJCQU9HaUFCS0FMTUFpRUVJQU1RRVF3R0N5QUJLQUtFQVVFQlJ3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWWFLQnhBT0dpQUJLQUxNQWlFRUlBTVFFUXdHQ3lBRklBVWdBa0VERUNZaUJCREhBVVVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHSHpRRVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUJnc2dBeUFCUWZBQWFoQ2hCeUlISUFVZ0JCQkZJZ1JMQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQmlzWUpFQTRhSUFNZ0J4QWhHaUFEUVlYQUNSQU9HaUFESUFRUUlSb2dBU2dDekFJaEJDQURFQkVNQmdzZ0JTQUNJQUZCOEFCcVFRWVFvQWNoQkF3RkN5QUNMd0VlSVFNZ0FVRUFOZ0pZSUFVZ0FpQUJRZGdBYWhDdUNDSUVEUVFDUUNBRklBRW9BbGdpQnhCUURRQWdCU0FIRUhjTkFDQUJRWkFCYWlJSElnUWdCVUZ5SUFJUUVDQUVRYnJiQ2hBT0dpQUhJQU5Cc1FKcklnTkIvLzhEY1VFUFN3Ui9RZnlwQkFVZ0EwRVFkRUVRZFVFQ2RFR0lqQ0JxS0FJQUN4QU9HaUFIUWVHREJCQU9HaUFCS0FMTUFpRUVJQWNRRVF3RkN5QUZJQVVnQWtFQ0VDWWlCQkJ3UVJ0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJsc29FRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQVVMSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdCQ0FCUWZBQWFoQ3BBMFVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVHhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUJRc2dBeERXRFFSQUlBVWdBaUFCUWZBQWFoRDNGU0lFRFFVTElBRW9Bb0FCQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQmk4UUVFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBVUxJQUVvQW5BZ0IwY0VRQ0FCUVpBQmFpSUhJZ1FnQlVGeUlBSVFFQ0FFUWVMbUNSQU9HaUFISUFOQnNRSnJJZ05CLy84RGNVRVBTd1IvUWZ5cEJBVWdBMEVRZEVFUWRVRUNkRUdJakNCcUtBSUFDeEFPR2lBQktBTE1BaUVFSUFjUUVRd0ZDeUFGSUFVZ0FrRURFQ1lpQkJDdUFVVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdwemdFUURob2dBU2dDekFJaEJDQURFQkVNQlFzZ0F5QUJRZkFBYWhDaEJ5SUhJQVVnQkJCRklnUkxCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CaXNZSkVBNGFJQU1nQnhBaEdpQURRWVhBQ1JBT0dpQURJQVFRSVJvZ0FTZ0N6QUloQkNBREVCRU1CUXNnQlNBQ0lBRkI4QUJxRVBnVklnUU5CQ0FGSUFJZ0FVSHdBR3BCQnhDZ0J5RUVEQVFMSUFJdkFSNGhBeUFCUVFBMkFsZ2dCU0FDSUFGQjJBQnFFSzRJSWdRTkF3SkFJQVVnQVNnQ1dDSUhFTFlCRFFBZ0JTQUhFSTRCRFFBZ0FVR1FBV29pQnlJRUlBVkJjaUFDRUJBZ0JFRzYyd29RRGhvZ0J5QURRYkVDYXlJRFFmLy9BM0ZCRDBzRWYwSDhxUVFGSUFOQkVIUkJFSFZCQW5SQmlJd2dhaWdDQUFzUURob2dCMEdyK0FNUURob2dBU2dDekFJaEJDQUhFQkVNQkFzZ0JTQUhFRVZCQkVjRVFDQUJRWkFCYWlJSElnUWdCVUZ5SUFJUUVDQUVRYnJiQ2hBT0dpQUhJQU5Cc1FKcklnTkIvLzhEY1VFUFN3Ui9RZnlwQkFVZ0EwRVFkRUVRZFVFQ2RFR0lqQ0JxS0FJQUN4QU9HaUFIUWNpRUFSQU9HaUFCS0FMTUFpRUVJQWNRRVF3RUN5QUZJQVVnQWtFQ0VDWWlCQkJ3UVJ0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJsc29FRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQVFMSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdCQ0FCUWZBQWFoQ3BBMFVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVHhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUJBc2dBeERXRFFSQUlBVWdBaUFCUWZBQWFoRDNGU0lFRFFRTElBRW9Bb0FCQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnhNUUVFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBUUxBa0FnQlNBQktBSndFSEJCRTBZTkFDQUZJQWNRd1FFZ0FTZ0NjRVlOQUNBQlFaQUJhaUlISWdRZ0JVRnlJQUlRRUNBRVFlTG1DUkFPR2lBSElBTkJzUUpySWdOQi8vOERjVUVQU3dSL1FmeXBCQVVnQTBFUWRFRVFkVUVDZEVHSWpDQnFLQUlBQ3hBT0dpQUhRYWFGQVJBT0dpQUJLQUxNQWlFRUlBY1FFUXdFQ3lBRklBSkJBeEFtSVFRQ1FBSkFJQU5Cc2dKSElBTkIyQUJIY1EwQUlBVXRBSUFCUWNBQWNVVU5BQ0FGSUFRUXJnRU5BU0FGSUFRUXh3RU5BU0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEcyelFFUURob2dBU2dDekFJaEJDQURFQkVNQlFzZ0JTQUVFSzRCRFFBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnFjNEJFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBUUxJQU1nQVVId0FHb1FvUWNpQnlBRklBUVFSU0lFU3dSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFZckdDUkFPR2lBRElBY1FJUm9nQTBHRndBa1FEaG9nQXlBRUVDRWFJQUVvQXN3Q0lRUWdBeEFSREFRTEFrQWdBaWdDQkNBQ0tBSUFJZ1JyUVJoSkRRQWdCQzBBRkVFSWNVVU5BQ0FGS0FJQUtBSUFFS1lHUlNBRFFkZ0FSM0lOQUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBINzJRb1FEaG9nQTBIZG9nY1FEaG9nQVNnQ3pBSWhCQ0FERUJFTUJBc2dCU0FDSUFGQjhBQnFRUVlRb0FjaEJBd0RDeUFGSUFJb0FpUVFJQ0lETHdFZVFTQkhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CLzkwQkVBNGFJQUVvQXN3Q0lRUWdBeEFSREFNTElBTkJBUkFiUVF0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJoc3NFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQU1MSUFVZ0EwRUNFQnNpQnhCd0lnTkJGazFCQUVFQklBTjBRWUNBb0FOeEcwVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEhzNndRUURob2dBU2dDekFJaEJDQURFQkVNQXdzQ1FDQUZJQVVnQWtFQ0VDWVFJQ0lEQkVBZ0F5OEJIa0VnUmcwQkN5QUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR28zZ0VRRGhvZ0FTZ0N6QUloQkNBREVCRU1Bd3NnQlNBRFFRSVFHeUlERUhCQkdVY0VRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEhFeUFRUURob2dBU2dDekFJaEJDQURFQkVNQXdzZ0FVSUFOd09BQVNBQlFnQTNBM2dnQVVLQWdJQ0E4UC8vLy84QU53TndJQUZDLy8vLy8vZi8vLy8vQURjRGlBRWdCU0FESUFGQjhBQnFFS2tEUlFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFaUEZBaEFPR2lBQktBTE1BaUVFSUFNUUVRd0RDeUFISUFFb0FuQkhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CZ0pnRUVBNGFJQUVvQXN3Q0lRUWdBeEFSREFNTElBRW9BblJCQmtZRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR0EzUUVRRGhvZ0FTZ0N6QUloQkNBREVCRU1Bd3NDUUNBRklBSkJBeEFtSWdNRVFDQUZJQU1ReHdFTkFRc2dBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ2czhCRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQU1MQWtBQ1FBSkFJQUVvQW53T0FnRUFBZ3RCQWlFRUFrQUNRQ0FCS0FKMERnUURBQUVBQVF0QkF5RUVEQUlMSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWQrR0J4QU9HaUFCS0FMTUFpRUVJQU1RRVF3RUN5QUJRZkFBYWhDaUJ5RUVDeUFGSUFNUVJTSUhJQVJIQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQm1yVUtFQTRhSUFNZ0JCQWhHaUFEUWVpUkNoQU9HaUFESUFjUUlSb2dBU2dDekFJaEJDQURFQkVNQXdzQ1FDQUZJQUpCQkJBbUlnTUVRQ0FGSUFNUVVBMEJDeUFCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdIamdJUURob2dBU2dDekFJaEJDQURFQkVNQXdzQ1FDQUJLQUtBQVEwQUlBRkNBRGNEV0NBRklBSkJCQkFiSUFGQjJBQnFFTU1GQkVBZ0FTa0RXRkFOQVFzZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQjlJMEhFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBTUxRUUFoQkNBRktBSUFLQUlBRUVkRkRRSWdBU2dDaUFFaUEwRVlheUlIUVJGTlFRQkJBU0FIZEVHQmhBeHhHeUFEUVFOR2NnMENJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQUJRZGdBYWlJSElBVkJzaVFRTnlBRElBY1FFaG9nQTBIOHh3QVFEaG9nQVNnQ3pBSWhCQ0FIRUE4YUlBTVFFUXdDQzBFQUlRUUxJQUZCMkFCcUVESWFDeUFCUWRBQ2FpUUFJQVFpQVEwSEl3QkI0QUZySWdFa0FDQUNLQUlrSVFNQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUl2QVI0aUJFSHRBR3NPRUFBQkFnSURCQVVHQndnSUNRb0xEQTBPQ3dKQUlBVWdBeER2QVEwQUlBVWdBeENjQncwQUlBVWdBeEMrRFEwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQjZaa01FQTRhSUFOQjdRQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd1RDd0pBSUFVZ0FrRUNFQ1lpQkFSQUlBVWdCQkIzRFFFZ0JTQUVFSTRCRFFFZ0JTQUVFSnNIRFFFTElBRkJJR29pQXlBRlFYSWdBaEFRSUFOQjdmRUxFQTRhSUFOQjdRQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd1RDd0pBSUFVZ0F4Q3hBa1VFUUNBRklBUVFzUUpGRFFFTElBVWdBaUFESUFRUW1nY2lCRVVORWd3VEN5QUZJQU1RUlNBRklBUVFSVVlORVNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUWNxWERCQU9HaUFEUWUwQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUVnc0NRQ0FGSUFNUVVBMEFJQVVnQXhDMkFRMEFJQVVnQXhDZUJnMEFJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJ0WmtNRUE0YUlBTkI3Z0FRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdTQ3dKQUlBVWdBa0VDRUNZaUJBUkFJQVVnQkJCM0RRRWdCU0FFRUk0QkRRRWdCU0FFRUpzSERRRUxJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkI3ZkVMRUE0YUlBTkI3Z0FRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdTQ3dKQUlBVWdBeEN4QWtVRVFDQUZJQVFRc1FKRkRRRUxJQVVnQWlBRElBUVFtZ2NpQkVVTkVRd1NDeUFGSUFNUVJTQUZJQVFRUlVZTkVDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFjcVhEQkFPR2lBRFFlNEFFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1FUXNDUUNBRklBTVFkdzBBSUFVZ0F4Q09BUTBBSUFVZ0F4Q2JCdzBBSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CNDVvTUVBNGFJQU1nQkJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREJFTEFrQWdCU0FDUVFJUUppSUhCRUFnQlNBSEVGQU5BU0FGSUFjUXRnRU5BU0FGSUFjUW5nWU5BUXNnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEhxOEFzUURob2dBeUFFRUNrUURob2dBU2dDM0FFaEJDQURFQkVNRVFzQ1FDQUZJQU1Rc1FKRkJFQWdCU0FIRUxFQ1JRMEJDeUFGSUFJZ0F5QUhFSm9ISWdSRkRSQU1FUXNnQlNBREVFVWdCU0FIRUVWR0RROGdBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSEtsd3dRRGhvZ0F5QUVFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1FQXNDUUNBRklBTVE3d0VOQUNBRklBTVFuQWNOQUNBRklBTVF2ZzBOQUNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUWVtWkRCQU9HaUFEUWZFQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUVBc0NRQ0FGSUFKQkFoQW1JZ2NFUUNBRklBY1FVQTBCSUFVZ0J4QzJBUTBCSUFVZ0J4Q2VCZzBCQ3lBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUWVyd0N4QU9HaUFEUWZFQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUVBc0NRQ0FGSUFNUXNRSkZCRUFnQlNBSEVMRUNSUTBCQ3lBRklBSWdBeUFIRUpvSElnUU5FQXdPQ3lBRklBTVFSU0FGSUFjUVJVWU5EU0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRY3FYREJBT0dpQURRZkVBRUNrUURob2dBU2dDM0FFaEJDQURFQkVNRHdzQ1FDQUZJQU1RVUEwQUlBVWdBeEMyQVEwQUlBVWdBeENlQmcwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQnRaa01FQTRhSUFOQjhnQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd1BDd0pBSUFVZ0FrRUNFQ1lpQndSQUlBVWdCeEJRRFFFZ0JTQUhFTFlCRFFFZ0JTQUhFSjRHRFFFTElBRkJJR29pQXlBRlFYSWdBaEFRSUFOQjZ2QUxFQTRhSUFOQjhnQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd1BDd0pBSUFVZ0F4Q3hBa1VFUUNBRklBY1FzUUpGRFFFTElBVWdBaUFESUFjUW1nY2lCQTBQREF3TElBVWdBeEJGSUFVZ0J4QkZSZzBMSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CeXBjTUVBNGFJQU5COGdBUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3T0N3SkFJQVVnQXhCM0RRQWdCU0FERUk0QkRRQWdCU0FERUpzSERRQWdBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSGptZ3dRRGhvZ0EwSHpBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQTRMQWtBZ0JTQUNRUUlRSmlJSEJFQWdCU0FIRUhjTkFTQUZJQWNRamdFTkFTQUZJQWNRbXdjTkFRc2dBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSHQ4UXNRRGhvZ0EwSHpBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQTRMQWtBZ0JTQURFTEVDUlFSQUlBVWdCeEN4QWtVTkFRc2dCU0FDSUFNZ0J4Q2FCeUlFRFE0TUNnc2dCU0FERUVVZ0JTQUhFRVZHRFFrZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBIS2x3d1FEaG9nQTBIekFCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBMExBa0FDUUNBRklBTVFkMFVFUUNBRklBTVFqZ0ZGRFFFTElBVWdBeEErUVNCR0RRRUxJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJwcG9NRUE0YUlBTkI5QUFRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdOQ3lBRklBSkJBaEFtSUFOR0RRc2dBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSFJuUXdRRGhvZ0EwSDBBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQXdMSUFVZ0F4RHZBVVVFUUNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUVllY0RCQU9HaUFEUWZVQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTURBc2dCU0FGSUFKQkFoQW1JZ1FRZ1FWRkJFQWdBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSDk5QXNRRGhvZ0EwSDFBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQXdMSUFVb0FwQURSUVJBSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CdWE0TUVBNGFJQU5COVFBUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3TUN5QUZLQUtRQTBIa0tVY05DaUFCUVFBMkFoZ2dCU0FFSUFGQkdHb2dBVUVjYWhDSUFob2dBU2dDSEVIbEtVY0VRQ0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRZjM0Q3hBT0dpQURRZlVBRUNrUURob2dBU2dDM0FFaEJDQURFQkVNREFzZ0JTZ0NBQ2dDQUJCSFJRMEtJQVVnQXhBK1FjQUFSZzBLSUFGQklHb2lBeUFGUVhJZ0FoQVFJQUZCQ0dvaUJ5QUZRZVlrRURjZ0F5QUhFQklhSUFOQjVKd0hFQTRhSUFFb0F0d0JJUVFnQnhBUEdpQURFQkVNQ3dzQ1FDQUZJQU1RVUEwQUlBVWdBeEMyQVEwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQnRaa01FQTRhSUFNZ0JCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBc0xBa0FnQlNBQ1FRSVFKaUlIQkVBZ0JTQUhFRkFOQVNBRklBY1F0Z0VOQVFzZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBINTNnc1FEaG9nQXlBRUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUN3c2dCU0FERUVVZ0JTQUhFRVZHRFFrZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBIS2x3d1FEaG9nQXlBRUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUNnc2dCU0FERUlFRlJRUkFJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJudlVMRUE0YUlBTkIrQUFRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdLQ3dKQUlBVWdBa0VDRUNZaUJBUkFJQVVnQkJCUURRRUxJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJvdDhMRUE0YUlBTkIrQUFRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdLQ3lBRktBS1FBMFVFUUNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUWJtdURCQU9HaUFEUWZnQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUNnc2dCU2dDa0FOQjVDbEhEUWdnQVVFQU5nSVlJQVVnQXlBQlFSaHFJQUZCSEdvUWlBSWFJQUVvQWh4QjVTbEhCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEg5K0FzUURob2dBMEg0QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFvTElBVW9BZ0FvQWdBUVIwVU5DQ0FGSUFRUVBrSEFBRVlOQ0NBQlFTQnFJZ01nQlVGeUlBSVFFQ0FCUVFocUlnY2dCVUhtSkJBM0lBTWdCeEFTR2lBRFFmS2JCeEFPR2lBQktBTGNBU0VFSUFjUUR4b2dBeEFSREFrTElBRkJBRFlDSENBRklBTWdBVUVjYWlBQlFRaHFFSWdDUlFSQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQm52VUxFQTRhSUFOQitRQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0pDeUFCS0FJSVFRaEhCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEc1c1F3UURob2dBMEg1QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFrTElBVWdBa0VDRUNZaEF5QUJRUUEyQWdRZ0JTQURJQUZCQkdvZ0FVRVlhaENJQWtVRVFDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFmMzBDeEFPR2lBRFFma0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1DUXNnQVNnQ0dDSURRUWROUVFCQkFTQURkRUd3QVhFYlJRUkFJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkI4T2dNRUE0YUlBTkJwUDBMRUE0YUlBTkIrUUFRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdKQ3lBQktBSWNJQUVvQWdSR0RRY2dBVUVnYWlJRElBVkJjaUFDRUJBZ0EwR0RrUXdRRGhvZ0EwSDVBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQWdMSUFGQkFEWUNIQ0FGSUFNZ0FVRWNhaUFCUVFocUVJZ0NSUVJBSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CbnZVTEVBNGFJQU5CK2dBUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3SUN5QUJLQUlJSWdOQkIwMUJBRUVCSUFOMFFiQUJjUnRGQkVBZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBHaDZRd1FEaG9nQTBHay9Rc1FEaG9nQTBINkFCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBZ0xJQVVnQWtFQ0VDWWhBeUFCUVFBMkFnUWdCU0FESUFGQkJHb2dBVUVZYWhDSUFrVUVRQ0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRZjMwQ3hBT0dpQURRZm9BRUNrUURob2dBU2dDM0FFaEJDQURFQkVNQ0FzZ0FTZ0NHRUVJUndSQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQmlyRU1FQTRhSUFOQitnQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0lDeUFCS0FJY0lBRW9BZ1JHRFFZZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBHRGtRd1FEaG9nQTBINkFCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBY0xJQUZCQURZQ0hDQUZJQU1nQVVFY2FpQUJRUWhxRUlnQ1JRUkFJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJudlVMRUE0YUlBTkIrd0FRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdIQ3lBQ1FRTVFHeUlESUFFb0FnaEhCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEdrNVFzUURob2dBMEg3QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFjTElBVWdBa0VDRUNZaEJDQUJRUUEyQWdRZ0JTQUVJQUZCQkdvZ0FVRVlhaENJQWtVRVFDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFmMzBDeEFPR2lBRFFmc0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1Cd3NnQVNnQ0dFRUlSd1JBSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CaXJFTUVBNGFJQU5CK3dBUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3SEN5QUJLQUljSUFFb0FnUkhCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEdEa1F3UURob2dBMEg3QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFjTElBTkJCMDFCQUVFQklBTjBRYkFCY1JzTkJTQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFkanBEQkFPR2lBRFFhVDlDeEFPR2lBRFFmc0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1CZ3NnQlNBQ1FRSVFKaUlFUlFSQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQjg1UU1FQTRhSUFOQi9BQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0dDeUFGSUFNUWdRVWhCeUFGSUFNUVVDRUpJQVVnQkJDQkJTRUdJQVVnQkJCUUlRc0NRQ0FISUFseURRQWdCU0FERUxZQkRRQWdCU0FERUhjTkFDQUZJQU1RamdFTkFDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFmVG5DUkFPR2lBRFFkU05EQkFPR2lBRFFmd0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1CZ3NDUUNBR0lBdHlEUUFnQlNBRUVMWUJEUUFnQlNBRUVIY05BQ0FGSUFRUWpnRU5BQ0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRYjNuQ1JBT0dpQURRZFg3Q3hBT0dpQURRZndBRUNrUURob2dBU2dDM0FFaEJDQURFQkVNQmdzQ1FBSkFJQVVvQWhSQi80a0VUUVJBSUFWQmtBRnFRY3dBRUdoRkRRRUxJQVVnQXhDMkFTRU1JQVVnQTBFVlFTQVFoZ1FoRVNBRklBUVF0Z0VnQlNBRVFSVkJJQkNHQkhFZ0IwRUJjM0lnQm5JZ0MzSkZCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEhZOHdzUURob2dBMEg4QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFnTElBd2dFWEVnQmtFQmMzSWdCM0lnQ1hJTkFTQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFlN3VDeEFPR2lBRFFmd0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1Cd3NnQmlBSFFRRnpjaUFMY2tVRVFDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFiVDBDeEFPR2lBRFFmd0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1Cd3NnQ1NBSElBWkJBWE55Y2cwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQnhmb0xFQTRhSUFOQi9BQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0dDeUFHSUFkeURRUWdCU0FERUQ0Z0JTQURFRVZzSUFVZ0JCQStJQVVnQkJCRmJFWU5CQ0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRZm5sQ1JBT0dpQURRZlNoREJBT0dpQURRZndBRUNrUURob2dBU2dDM0FFaEJDQURFQkVNQlFzZ0JFSGZJa2NOQXlBRklBTVF1Z0VpQXdSL0lBTXZBUjVCM1NsR0JVRUFDMFVFUUNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUVppTERCQU9HaUFEUWQ4aUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUJRc2dCU0FDUVFJUUppSURCRUFnQlNBREVMb1ZEUVFMSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5Cc040TEVBNGFJQU5CM3lJUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3RUN5QUZJQU1RUGlBRklBY1FQa2NOQWlBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUVkyZ0RCQU9HaUFEUWZNQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUF3c2dCU0FERUQ0Z0JTQUhFRDVIRFFFZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBHTm9Bd1FEaG9nQTBIeUFCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBSUxJQVVnQXhBK0lBVWdCeEErUncwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQmphQU1FQTRhSUFOQjhRQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0JDMEVBSVFRZ0JTMEFnQUZCQW5GRkRRQWdBaThCSGtIdEFHc2lBMEVQUzBFQklBTjBRWStBQW5GRmNnMEFJQVVnQWlnQ0pCRHhBa1VFUUNBRklBVWdBa0VDRUNZUThRSkZEUUVMSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5Ca0tFQkVBNGFJQUVvQXR3QklRUWdBeEFSQ3lBQlFlQUJhaVFBSUFRaUFRMEhBbjlCQUNFRUl3QkI4QUZySWdFa0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBaThCSGlJRFFjMEFhdzRJQUFFQ0F3UUZCZ2NJQ3lBRklBSW9BaVFpQXhCd0VJTVhSUVJBSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5CajRjRUVBNGFJQUVvQXV3QklRUWdBeEFSREJVTElBVWdCU0FDUVFJUUppSUhFSEJCRjBjRVFDQUJRVEJxSWdNZ0JVRnlJQUlRRUNBRFFaUFJBUkFPR2lBQktBTHNBU0VFSUFNUUVRd1ZDeUFGSUFjUXdRRWdBMGNFUUNBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUVlTZ0JCQU9HaUFCS0FMc0FTRUVJQU1RRVF3VkN3SkFBa0FnQlNBQ1FRTVFHeEFnSWdORkRRQWdBeWdDSkNJRFJRMEFJQVVnQXhCUURRRUxJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkIrWU1DRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQlVMSUFVdEFJQUJRUUp4UlEwVUlBVWdBaWdDSkJEeEFrVU5GQ0FCUVRCcUlnTWdCVUZ5SUFJUUVDQURRYkcyQVJBT0dpQUJLQUxzQVNFRUlBTVFFUXdVQ3lBRklBSW9BaVFpQXhCd1FSZEhCRUFnQVVFd2FpSURJQVZCY2lBQ0VCQWdBMEc3MFFFUURob2dBU2dDN0FFaEJDQURFQkVNRkFzZ0JTQUNRUUlRSmlBRFJ3UkFJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkJ1S0VFRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQlFMSUFVZ0FrRURFQ1lnQlNBREVNRUJSd1JBSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5CbUwwS0VBNGFJQU5Cc3ZJREVBNGFJQUVvQXV3QklRUWdBeEFSREJRTElBVWdCU0FDUVFRUUpoQlFSUVJBSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5CK1lNQ0VBNGFJQUVvQXV3QklRUWdBeEFSREJRTElBVXRBSUFCUVFKeFJRMFRJQVVnQWlnQ0pCRHhBa1VORXlBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUWYrMUFSQU9HaUFCS0FMc0FTRUVJQU1RRVF3VEN3SkFJQVVnQWlnQ0pCQWdJZ01FUUNBREx3RWVRUmRHRFFFTElBRkJNR29pQnlBRlFYWWdBaEFRSUFkQnJkOEVFQTRhSUFkQjdyd0NFQTRhSUFjZ0F5OEJIaEFwRUE0YUlBZEIvSmNJRUE0YUlBRW9BdXdCSVFRZ0J4QVJEQk1MSUFJb0FoQWdBaWdDREd0QkJIVkJCR3NnQTBFQ0VCdEhCRUFnQVVFd2FpSUhJQVZCZGlBQ0VCQWdCMEdhMHdzUURob2dBVUVJYWlJR0lBVWdBeWdDS0JBcUlBY2dCaEFTR2lBSFFmT1hCeEFPR2lBQktBTHNBU0VFSUFZUUR4b2dCeEFSREJNTElBVWdCU0FDUVFJUUd4QWdLQUlrRUNBaEJ5QUZJQVVnQWtFREVCc1FJQ2dDSkJBZ0lRWUNRQ0FIQkVBZ0J5OEJIa0VYUmcwQkN5QUJRVEJxSWdNZ0JVRjJJQUlRRUNBRFFhN0ZCeEFPR2lBQktBTHNBU0VFSUFNUUVRd1RDd0pBSUFZRVFDQUdMd0VlUVJkR0RRRUxJQUZCTUdvaUF5QUZRWFlnQWhBUUlBTkJnOFVIRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQk1MSUFOQkFSQWJJZ01nQjBFQkVCdEhCRUFnQVVFd2FpSURJQVZCZGlBQ0VCQWdBMEhTOVFjUURob2dBU2dDN0FFaEJDQURFQkVNRXdzZ0JrRUJFQnNnQTBjRVFDQUJRVEJxSWdNZ0JVRjJJQUlRRUNBRFFaUDFCeEFPR2lBQktBTHNBU0VFSUFNUUVRd1RDeUFIUVFJUUd5QUdRUUlRRzJvaENVRUVJUVlDUUFOQUlBWWdBaWdDRUNBQ0tBSU1hMEVFZFU4TkFTQUNJQVlRR3lFSElBWkJBV29oQmlBSFFYOUdJQWNnQ1VseURRQUxJQUZCTUdvaUF5QUZRWFlnQWhBUUlBTkJwY01KRUE0YUlBTWdCeEFoR2lBRFFZM3VDUkFPR2lBRFFmeXZDaEFPR2lBRElBa1FJUm9nQTBIOGx3Z1FEaG9nQVNnQzdBRWhCQ0FERUJFTUV3c2dCUzBBZ0FGQkFuRkZEUklnQlNBQ0tBSWtFUEVDUlEwU0lBRkJNR29pQXlBRlFYSWdBaEFRSUFOQjVMWUJFQTRhSUFFb0F1d0JJUVFnQXhBUkRCSUxJQUlvQWhBZ0FpZ0NER3NpQmtFRWRTRURBa0FDUUFKQUFrQUNRQUpBSUFVZ0FpZ0NKQ0lIRUhBaUNVRVhhdzRJQUFFRkJRVUNCUU1FQ3lBRklBY1FSU0VNSUFVZ0J4REJBU0VKSUFaQndBQkpEUXBCQWlFR1FRSWdBeUFEUVFKTkd5RVJRUUFoQndOQUlBWWdFVWNFUUVFQklRc2dDU0FGSUFJZ0JoQW1JZ05IQkVBZ0JTQURFSEJCRjBjTkRpQUZJQU1Rd1FFZ0NVY05EaUFGSUFNUVJTRUxDeUFHUVFGcUlRWWdCeUFMYWlFSERBRUxDeUFISUF4R0RSVWdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwR0dtUW9RRGhvZ0EwR1IwQUVRRGhvZ0FTZ0M3QUVoQkNBREVCRU1GZ3NnQVVFQU5nSUlJQUZCQURZQ0xDQUJRUUEyQWlnZ0FVRUFOZ0lrSUFVZ0J5QUJRUWhxSUFGQkxHb2dBVUVvYWlBQlFTUnFFS2NEUlEwTFFRSWhCaUFCS0FJc1FRSnFJQU5IRFF4QkFpQURJQU5CQWswYklRTURRQ0FESUFaR0RSVWdCU0FDSUFZUUppRUhJQVpCQVdvaEJpQUhJQUVvQWloR0RRQUxJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkI4WXdLRUE0YUlBTkIxUjhRRGhvZ0FTZ0M3QUVoQkNBREVCRU1GUXNnQlNBSEVDQWlCMFVORENBSEx3RWVRUnhIRFEwZ0JTQUhLQUlBS0FJTUVDQXZBUjRRdndnTkV5QUJRZ0EzQXdnZ0JTQUhLQUlBS0FJTUlBRkJDR29Rd3dWRkRRNGdBNjBnQVNrRENFSUNmRklFUUNBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUWRPWUNoQU9HaUFEUWFnYUVBNGFJQUVvQXV3QklRUWdBeEFSREJVTFFRSWhCa0VDSUFNZ0EwRUNUUnNoQXlBSEtBSUFLQUlJSVFjRFFDQURJQVpHRFJRZ0JTQUNJQVlRSmlFSklBWkJBV29oQmlBSElBbEdEUUFMSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5COFl3S0VBNGFJQU5CMXhvUURob2dBU2dDN0FFaEJDQURFQkVNRkFzZ0JTQUhFQ0FpQjBVTkRpQUhMd0VlUVI1SERROGdCeWdDRUNBSEtBSU1hMEVFZFVFQmFpQURSdzBRUVFJZ0F5QURRUUpOR3lFRFFRSWhCZ05BSUFNZ0JrWU5FeUFHUVFKMElRa2dCU0FDSUFZUUppRUxJQVpCQVdvaEJpQUxJQWtnQnlnQ0FHb29BZ0JHRFFBTElBRkJNR29pQXlBRlFYSWdBaEFRSUFOQjlzRUtFQTRhSUFOQmkrMEFFQTRhSUFFb0F1d0JJUVFnQXhBUkRCTUxJQWxCN2lsR0RSQUxJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkJ5NDBFRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQkVMSUFGQkFEWUNDQ0FGSUFJZ0FVRUlhaENQRmlJRURSQWdBaWdDSkNJSElBRW9BZ2dpQkVjRVFDQUJRVEJxSWdNZ0JVRnlJQUlRRUNBRFFmMjNBaEFPR2lBRElBVWdCeEJ3RUNrUURob2dBMEhVdGdJUURob2dBeUFGSUFRUWNCQXBFQTRhSUFOQitKY0lFQTRhSUFFb0F1d0JJUVFnQXhBUkRCRUxRUUFoQkNBRkxRQ0FBVUVDY1VVTkVDQUZJQWNROFFKRkRSQWdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwSEh0d0VRRGhvZ0FTZ0M3QUVoQkNBREVCRU1FQXNnQlNBQ1FRSVFKaUVISUFVZ0FrRURFQ1lnQWlnQ0pDSUVSd1JBSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5CcjdvQ0VBNGFJQU1nQWk4QkhoQXBFQTRhSUFOQmpONEtFQTRhSUFNZ0JCQWhHaUFEUWZ5WENCQU9HaUFCS0FMc0FTRUVJQU1RRVF3UUN5QUJRUUEyQWdnZ0JTQUNJQUZCQ0dvUWp4WWlCQTBQSUFFb0FnZ2lCQ0FIUndSQUlBRkJNR29pQXlBRlFYSWdBaEFRSUFOQmpiZ0NFQTRhSUFNZ0JTQUhFSEFRS1JBT0dpQURRYUMzQWhBT0dpQURJQVVnQkJCd0VDa1FEaG9nQTBINGx3Z1FEaG9nQVNnQzdBRWhCQ0FERUJFTUVBdEJBQ0VFSUFVdEFJQUJRUUp4UlEwUElBVWdBaWdDSkJEeEFrVU5EeUFCUVRCcUlnTWdCVUZ5SUFJUUVDQURRWkszQVJBT0dpQUJLQUxzQVNFRUlBTVFFUXdQQ3lBQ0tBSWtJZ01nQlNBQ1FRSVFKa2NFUUNBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUWF5eUJCQU9HaUFCS0FMc0FTRUVJQU1RRVF3UEN5QUZJQU1RblFkRkRRNGdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwSDI4Z01RRGhvZ0FTZ0M3QUVoQkNBREVCRU1EZ3NnQVVFQU5nSUlJQUZCQURZQ0xDQUJRUUEyQWlnZ0FVRUFOZ0lrSUFVZ0FpZ0NKQ0FCUVFocUlBRkJMR29nQVVFb2FpQUJRU1JxRUtjRFJRUkFJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkJndkVERUE0YUlBRW9BdXdCSVFRZ0F4QVJEQTRMSUFVZ0FrRUNFQ1loQXlBQlFRQTJBaUFnQVVFQU5nSWNJQUZCQURZQ0dDQUJRUUEyQWhRZ0JTQURJQUZCSUdvZ0FVRWNhaUFCUVJocUlBRkJGR29RcHdORkJFQWdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwR1JJQkFPR2lBQktBTHNBU0VFSUFNUUVRd09DeUFCS0FJa0lBRW9BaFJIQkVBZ0FVRXdhaUlESUFWQmNpQUNFQkFnQTBHVHh3b1FEaG9nQTBINWxnTVFEaG9nQVNnQzdBRWhCQ0FERUJFTURnc0NRQ0FCS0FJSUlBRW9BaHhHQkVBZ0FTZ0NMQ0FCS0FJZ1JnMEJDeUFCUVRCcUlnTWdCVUZ5SUFJUUVDQURRZXZDQ1JBT0dpQURRYnVuQkJBT0dpQUJLQUxzQVNFRUlBTVFFUXdPQ3lBRkxRQ0FBVUVDY1VVTkRTQUZJQUlvQWlRUThRSkZEUTBnQVVFd2FpSURJQVZCY2lBQ0VCQWdBMEhjaWdFUURob2dBU2dDN0FFaEJDQURFQkVNRFFzZ0EwR1FBMGNORENBRklBSW9BaVFRSUNJRElBVWdCU0FDUVFJUUd4QWdLQUlrRUNBaUIwWWdBMFZ5UVFFZ0J4c0VRQ0FCUVRCcUlnTWdCVUYySUFJUUVDQURRZk9SQkJBT0dpQUJLQUxzQVNFRUlBTVFFUXdOQ3lBRklBY2dBMEVBRUwwTlJRUkFJQUZCTUdvaUF5QUZRWFlnQWhBUUlBTkJuNUlFRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQTBMSUFVdEFJQUJRUUp4UlEwTUlBVWdBaWdDSkJEeEFrVU5EQ0FCUVRCcUlnTWdCVUZ5SUFJUUVDQURRZEsxQVJBT0dpQUJLQUxzQVNFRUlBTVFFUXdNQ3lBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUWFPQkJ4QU9HaUFCS0FMc0FTRUVJQU1RRVF3TEN5QUJRVEJxSWdNZ0JVRnlJQUlRRUNBRFFZbkJBeEFPR2lBRFFkai9BQkFPR2lBQktBTHNBU0VFSUFNUUVRd0tDMEhWa2dkQmhKOENRWVFDUWZQckFCQUFBQXNnQVVFd2FpSURJQVZCY2lBQ0VCQWdBMEhUbUFvUURob2dBMEdtSHhBT0dpQUJLQUxzQVNFRUlBTVFFUXdJQzBHcUxrR0Vud0pCbXdKQjgrc0FFQUFBQzBHSkhFR0Vud0pCbkFKQjgrc0FFQUFBQzBHc25RbEJoSjhDUWFZQ1FmUHJBQkFBQUF0QjFpNUJoSjhDUWI0Q1FmUHJBQkFBQUF0QnN1NEFRWVNmQWtHL0FrSHo2d0FRQUFBTElBRkJNR29pQXlBRlFYSWdBaEFRSUFOQjA1Z0tFQTRhSUFOQjNPd0FFQTRhSUFFb0F1d0JJUVFnQXhBUkRBSUxJQVVnQnhBZ0lnTkZEUUlnQTBFQkVCc2hBeUFHUVRCSEJFQWdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwRzh3QUFRRGhvZ0FTZ0M3QUVoQkNBREVCRU1BZ3NnQlNBQ1FRSVFKaUFEUmcwQUlBRkJNR29pQXlBRlFYSWdBaEFRSUFOQmhmSURFQTRhSUFFb0F1d0JJUVFnQXhBUkRBRUxJQVV0QUlBQlFRSnhSUTBBSUFVZ0FpZ0NKQkR4QWtVTkFDQUJRVEJxSWdNZ0JVRnlJQUlRRUNBRFFlNjBBUkFPR2lBQktBTHNBU0VFSUFNUUVRc2dBVUh3QVdva0FDQUVEQUVMUWVzdVFZU2ZBa0hXQWtIejZ3QVFBQUFMSWdFTkIwRUFJUUZCQUNFSkl3QkJnQUpySWdRa0FDQUNLQUlrSVFjQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FDTHdFZUlnTkIvZ0JyRGhzREFBTUFBd0FFQVFJREFBSUVCQUVCRFF3TENna0lCUWNIQndjR0MwRUJJUUVMQWtBZ0JTQUhFSGNOQUNBRklBY1FqZ0VOQUNBQkJFQWdCU0FIRUpzSERRRUxJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJ6cHNNRUE0YUlBRWdBeEFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQTRMUVFJaENRTkFJQWtnQWlnQ0VDQUNLQUlNYTBFRWRVOE5EU0FGSUFJZ0NSQW1JQWRHQkVBZ0NVRUJhaUVKREFFTEN5QUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFhYWhEQkFPR2lBQklBTVFLUkFPR2lBQlFaL0VDUkFPR2lBQklBa1FJUm9nQkNnQy9BRWhBaUFCRUJFTURRc0NRQ0FGSUFjUTd3RU5BQ0FGSUFjUW5BY05BQ0FEUVlZQlJnUkFJQVVnQnhDK0RRMEJDeUFFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZW1aREJBT0dpQUJJQU1RS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdOQzBFQ0lRa0RRQ0FKSUFJb0FoQWdBaWdDREd0QkJIVlBEUXdnQlNBQ0lBa1FKaUFIUmdSQUlBbEJBV29oQ1F3QkN3c2dCRUZBYXlJQklBVkJjaUFDRUJBZ0FVR21vUXdRRGhvZ0FTQURFQ2tRRGhvZ0FVR2Z4QWtRRGhvZ0FTQUpFQ0VhSUFRb0F2d0JJUUlnQVJBUkRBd0xRUUVoQVFzQ1FDQUZJQWNRVUEwQUlBVWdCeEMyQVEwQUlBRUVRQ0FGSUFjUW5nWU5BUXNnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUcxbVF3UURob2dBU0FERUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQ3d0QkFpRUpJQVVnQnhCRklRc2dCU0FIRUQ0aERBTkFJQWtnQWlnQ0VDQUNLQUlNYTBFRWRVOE5DZ0pBQWtBZ0JTQUNJQWtRSmlJR1JRMEFJQVVnQmhCUURRRWdCU0FHRUxZQkRRRWdBVVVOQUNBRklBY1FuZ1lOQVFzZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVISnFnd1FEaG9nQVNBREVDa1FEaG9nQVVHZnhBa1FEaG9nQVNBSkVDRWFJQVFvQXZ3QklRSWdBUkFSREF3TElBVWdCaEJGSUF0SEJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVSHBpd29RRGhvZ0FVR0FuUXdRRGhvZ0FTQURFQ2tRRGhvZ0FVR2Z4QWtRRGhvZ0FTQUpFQ0VhSUFRb0F2d0JJUUlnQVJBUkRBd0xJQVVnQmhBK0lBeEhCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUhMcHdvUURob2dBVUdBblF3UURob2dBU0FERUNrUURob2dBVUdmeEFrUURob2dBU0FKRUNFYUlBUW9BdndCSVFJZ0FSQVJEQXdGSUFsQkFXb2hDUXdCQ3dBTEFBc2dCU0FIRUhjRVFFRUNJUWtEUUNBSklBSW9BaEFnQWlnQ0RHdEJCSFZQRFFvQ1FDQUZJQUlnQ1JBbUlnTUVRQ0FGSUFNUWpnRU5BUXNnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUg3cVF3UURob2dBVUdVQVJBcEVBNGFJQUZCbjhRSkVBNGFJQUVnQ1JBaEdpQUVLQUw4QVNFQ0lBRVFFUXdNQ3lBRklBTVF3UUVnQjBjRVFDQUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFZS2VEQkFPR2lBQlFaUUJFQ2tRRGhvZ0FVR2Z4QWtRRGhvZ0FTQUpFQ0VhSUFRb0F2d0JJUUlnQVJBUkRBd0xJQVVnQXhCRklRTUNRQ0FKUVFKR0JFQWdBeUVCREFFTElBRWdBMFlOQUNBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUVlqa0N4QU9HaUFCUVpRQkVDa1FEaG9nQkNnQy9BRWhBaUFCRUJFTURBc2dDVUVCYWlFSkRBQUxBQXNnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUc2bkF3UURob2dBVUdVQVJBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFrTElBTkI4U2xIRFFjZ0JTQUNRUUVRSmlFQklBVWdBa0VDRUNZaEF5QUZJQUpCQXhBbUlRY2dCU0FDUVFRUUppRUdJQVVnQXhDeEFrVUVRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZHlpREJBT0dpQUJRZkVwRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQ1FzZ0JTQUhFTEVDUlFSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQnI2SU1FQTRhSUFGQjhTa1FLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0pDeUFGSUFZUXNRSkZCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdDb2d3UURob2dBVUh4S1JBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFrTElBVWdBUkN4QWtVRVFDQUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFiR1lEQkFPR2lBQlFmRXBFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1DUXNnQlNBREVDQWhBeUFGSUFjUUlDRUhJQVVnQmhBZ0lRWWdCU0FCRUNBaENTQUVRVUJySWdFZ0JTQURRUUlRR3hEZEFTQUVLQUpFSVFzZ0JDMEFRU0VNSUFFZ0JTQUhRUUlRR3hEZEFTQUVLQUpFSVJFZ0JDMEFRU0VOSUFFZ0JTQUdRUUlRR3hEZEFTQUVLQUpFSVJBZ0JDMEFRU0VQSUFFZ0JTQUpRUUlRR3hEZEFTQUVLQUpFSVJNZ0JDMEFRU0VVSUFFZ0JTQURRUU1RR3hEZEFTQUVLQUpFSVJVZ0JDMEFRU0VXSUFFZ0JTQUhRUU1RR3hEZEFTQUVLQUpFSVI4Z0JDMEFRU0VoSUFFZ0JTQUdRUU1RR3hEZEFTQUVLQUpFSVJjZ0JDMEFRU0ViSUFFZ0JTQUpRUU1RR3hEZEFTQUVLQUpFSVJnZ0JDMEFRU0VhSUFFZ0JTQURRUVFRR3hEZEFTQUVLQUpFSVIwZ0JDMEFRU0VpSUFFZ0JTQUhRUVFRR3hEZEFTQUVLQUpFSVFNZ0JDMEFRU0VISUFFZ0JTQUdRUVFRR3hEZEFTQUVLQUpFSVFZZ0JDMEFRU0VlSUFFZ0JTQUpRUVFRR3hEZEFTQUVLQUpFSVFFZ0JDMEFRU0VKSUF4RklCUkZja1VnQ3lBVFIzRWdERVVnRFVWeVJTQUxJQkZIY1NBTVJTQVBSWEpGSUFzZ0VFZHhjbklnRFVVZ0QwVnlSU0FRSUJGSGNTQU5SU0FVUlhKRklCRWdFMGR4Y25KRklBOUZJQlJGY2lBUUlCTkdjbkZGQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVIbWlRd1FEaG9nQVVIeEtSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBa0xJQlpGSUJ0RmNrVWdGU0FYUjNFZ0ZrVWdHa1Z5UlNBVklCaEhjWEpGSUJ0RklCcEZjaUFYSUJoR2NuRkZCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdpaVF3UURob2dBVUh4S1JBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFrTElBZEZJQjVGY2tVZ0F5QUdSM0VnQjBVZ0NVVnlSU0FCSUFOSGNYSkZJQjVGSUFsRmNpQUJJQVpHY25GRkJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVR0FpUXdRRGhvZ0FVSHhLUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQWtMSUNKRklDRkZjaUFkSUI5R2NnMEhJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJ4SWtNRUE0YUlBRkI4U2tRS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdJQ3lBRVFRQTJBaEFnQkVJQU53TUlBa0FnQlNBSElBUkJDR29RdncxRkJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVR3RsUXdRRGhvZ0FTQURFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1BUXNnQkNnQ0RDQUVLQUlJSWdGclFRaEhCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdxNXdzUURob2dBU0FERUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQVFzZ0FTZ0NBQ0VCQWtBZ0EwR1lBVVlFUUNBRklBRVFVQTBCSUFVZ0JDZ0NDQ2dDQUJDMkFRMEJJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJxLzhKRUE0YUlBRkI5L0lMRUE0YUlBRkJtQUVRS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdDQ3lBRklBRVE3d0VOQUNBRklBUW9BZ2dvQWdBUW5BY05BQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZXpjQ2hBT0dpQUJRWnZ5Q3hBT0dpQUJJQU1RS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdCQ3lBRUtBSUlJZ0VvQWdBZ0FTZ0NCRWNFUUNBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUWFlSERCQU9HaUFCSUFNUUtSQU9HaUFFS0FMOEFTRUNJQUVRRVF3QkN5QUZJQUpCQWhBbUlRRWdCU0FDUVFNUUppRUhJQUVnQkNnQ0NDZ0NBQ0lHUnlBR0lBZEhja1VFUUVFQklRa01BUXNnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdhalF3UURob2dBU0FERUNrUURob2dCQ2dDL0FFaEFpQUJFQkVMSUFSQkNHb1FNaG9nQ1EwR0RBY0xJQVVnQWtFQ0VDWWhBeUFGSUFKQkF4QW1JUUVnQkVFQU5nSUlJQVJCQURZQ1BDQUVRUUEyQWpnZ0JFRUFOZ0kwSUFVZ0J5QUVRUWhxSUFSQlBHb2dCRUU0YWlBRVFUUnFFS2NEUlFSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQmhaZ01FQTRhSUFGQmt3RVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0hDeUFFS0FJNElBTkhCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUd6dkFvUURob2dBVUhscVF3UURob2dBVUdUQVJBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFjTEFrQWdBUVJBSUFVZ0FSQ09BUTBCQ3lBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUWJxb0RCQU9HaUFCUVpNQkVDa1FEaG9nQkNnQy9BRWhBaUFCRUJFTUJ3c2dCQ2dDTkNBRklBRVF3UUZIQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHa2hRd1FEaG9nQVVHVEFSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBY0xJQVFvQWp3Z0JTQUJFRVZHRFFVZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHNXdRb1FEaG9nQVVIb3FBd1FEaG9nQVVHVEFSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBWUxJQVVnQWtFQ0VDWWhBU0FGSUFKQkF4QW1JUU1nQkVFQU5nSUlJQVJCQURZQ1BDQUVRUUEyQWpnZ0JFRUFOZ0kwSUFVZ0J5QUVRUWhxSUFSQlBHb2dCRUU0YWlBRVFUUnFFS2NEUlFSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQmhaZ01FQTRhSUFGQmtnRVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0dDeUFFUVFBMkFqQWdCRUVBTmdJc0lBUkJBRFlDS0NBRVFRQTJBaVFnQlNBQklBUkJNR29nQkVFc2FpQUVRU2hxSUFSQkpHb1Fwd05GQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHTHFRd1FEaG9nQVVHU0FSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBWUxJQVJCQURZQ0lDQUVRUUEyQWh3Z0JFRUFOZ0lZSUFSQkFEWUNGQ0FGSUFNZ0JFRWdhaUFFUVJ4cUlBUkJHR29nQkVFVWFoQ25BMFVFUUNBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUVl5b0RCQU9HaUFCUVpJQkVDa1FEaG9nQkNnQy9BRWhBaUFCRUJFTUJnc2dCU0FFS0FJMEVIZEZCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdGbUF3UURob2dBVUdTQVJBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFZTElBUW9BamdnQkNnQ0tFY0VRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZVBGQ2hBT0dpQUJRWitIREJBT0dpQUJRWklCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQmdzZ0JDZ0NOQ0FFS0FJVVJ3UkFJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJvOFVLRUE0YUlBRkJuNGNNRUE0YUlBRkJrZ0VRS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdHQ3lBRUtBSThJQVFvQWh4SEJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVSDIvd2tRRGhvZ0FVR2Nod3dRRGhvZ0FVR1NBUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQVlMSUFRb0Fpd2dCQ2dDSUVjRVFDQUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFhdlNDUkFPR2lBQlFZYUZEQkFPR2lBQlFaSUJFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1CZ3NnQkNnQ01DQUVLQUlJUmcwRVFhYjhBRUh1b0FKQjhnSkIvSlFCRUFBQUN5QUZJQUpCQWhBbUlRTWdCU0FDUVFNUUppRUJJQVVnQnhDT0FVVUVRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRWW1aREJBT0dpQUJRWkVCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQlFzZ0JFRUFOZ0lJSUFSQkFEWUNQQ0FFUVFBMkFqZ2dCRUVBTmdJMElBVWdBeUFFUVFocUlBUkJQR29nQkVFNGFpQUVRVFJxRUtjRFJRUkFJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJpNmtNRUE0YUlBRkJrUUVRS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdGQ3lBRUtBSTRJQWRIQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHUm5Rd1FEaG9nQVVHUkFSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBVUxBa0FnQVFSQUlBVWdBUkNPQVEwQkN5QUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFicW9EQkFPR2lBQlFaRUJFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1CUXNnQkNnQ05DQUZJQUVRd1FGSEJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVR2toUXdRRGhvZ0FVR1JBUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQVVMSUFRb0Fqd2dCU0FCRUVWR0RRTWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVRzV3UW9RRGhvZ0FVR1ppZ3dRRGhvZ0FVR1JBUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQVFMSUFVZ0FrRUNFQ1loQVNBRklBSkJBeEFtSVFZZ0JTQUhFSTRCUlFSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQmlaa01FQTRhSUFGQmtBRVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0VDeUFGSUFjUXdRRWhBd0pBSUFFRVFDQUZJQUVRamdFTkFRc2dCRUZBYXlJQklBVkJjaUFDRUJBZ0FVRzRxUXdRRGhvZ0FVR1FBUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQVFMSUFVZ0FSREJBU0FEUndSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQjJjWUtFQTRhSUFGQm40Y01FQTRhSUFGQmtBRVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0VDeUFFUVFBMkFnZ2dCRUVBTmdJOElBUkJBRFlDT0NBRVFRQTJBalFnQlNBR0lBUkJDR29nQkVFOGFpQUVRVGhxSUFSQk5Hb1Fwd05GQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHTXFBd1FEaG9nQVVHUUFSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBUUxJQVFvQWpRZ0EwY0VRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRWi9HQ2hBT0dpQUJRWitIREJBT0dpQUJRWkFCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQkFzZ0JDZ0NQQ0FGSUFjUVJVY0VRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRYXFCQ2hBT0dpQUJRWTJLREJBT0dpQUJRWkFCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQkFzZ0JDZ0NDQ0FGSUFFUVJVWU5BaUFFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZi9BQ2hBT0dpQUJRYWVLREJBT0dpQUJRWkFCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQXdzQ1FDQUZJQWNRdWdFaUEwVU5BQ0FETHdFZVFSaEhEUUFnQlNBRklBY1F3UUVRZHlFQkN3SkFJQUVOQUNBRklBY1FzUUlOQUNBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUVlXWURCQU9HaUFCUVk4QkVDa1FEaG9nQkNnQy9BRWhBaUFCRUJFTUF3c2dCU0FDUVFJUUppQUhSd1JBSUFSQlFHc2lBU0FGUVhJZ0FoQVFJQUZCdDU0TUVBNGFJQUZCandFUUtSQU9HaUFFS0FMOEFTRUNJQUVRRVF3REN5QUZJQWNRd1FFZ0JTQUNRUU1RSmtZTkFTQUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFabkxDUkFPR2lBQlFlK25EQkFPR2lBQlFZOEJFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1BZ3NnQlNBSEVJNEJSUVJBSUFSQlFHc2lBU0FGUVhJZ0FoQVFJQUZCaVprTUVBNGFJQUZCamdFUUtSQU9HaUFFS0FMOEFTRUNJQUVRRVF3Q0N5QUZJQUpCQWhBbUlBZEhCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUh4bmd3UURob2dBVUdPQVJBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFJTElBVWdCeERCQVNBRklBSkJBeEFtUmcwQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQm1jc0pFQTRhSUFGQithb01FQTRhSUFGQmpnRVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0JDMEVBSVFJTElBUkJnQUpxSkFBZ0FpSUJEUWNqQUVIQUFXc2lBU1FBSUFnb0FpUWhBZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDQzhCSGlJRVFjSUJhdzRNQUFBQUFRRUJBUUlEQXdVRUJnc0NRQ0FGSUFJUVVBMEFJQVVnQWhDMkFRMEFJQUVnQlVGeUlBZ1FFQ0FCUWJXWkRCQU9HaUFCSUFRUUtSQU9HaUFCS0FLOEFTRURJQUVRRVF3SEN5QUZJQUlRUlNFR0lBVWdDRUVDRUNZaEF5QUZJQWhCQXhBbUlRY0NRQ0FEQkVBZ0JTQURFRkFOQVNBRklBTVF0Z0VOQVFzZ0FTQUZRWElnQ0JBUUlBRkJ3dkVMRUE0YUlBRWdCQkFwRUE0YUlBRW9BcndCSVFNZ0FSQVJEQWNMSUFVZ0F4QkZJQVpIQkVBZ0FTQUZRWElnQ0JBUUlBRkJvb3dLRUE0YUlBRkJnSjBNRUE0YUlBRWdCQkFwRUE0YUlBRW9BcndCSVFNZ0FSQVJEQWNMSUFVZ0F4QStJQVVnQWhBK1J3UkFJQUVnQlVGeUlBZ1FFQ0FCUVlTb0NoQU9HaUFCUVlDZERCQU9HaUFCSUFRUUtSQU9HaUFCS0FLOEFTRURJQUVRRVF3SEN3SkFJQWNFUUNBRklBY1FVQTBCSUFVZ0J4QzJBUTBCQ3lBQklBVkJjaUFJRUJBZ0FVR1c4UXNRRGhvZ0FTQUVFQ2tRRGhvZ0FTZ0N2QUVoQXlBQkVCRU1Cd3NnQlNBSEVFVWdCa1lOQlNBQklBVkJjaUFJRUJBZ0FVR1Fpd29RRGhvZ0FVR0FuUXdRRGhvZ0FTQUVFQ2tRRGhvZ0FTZ0N2QUVoQXlBQkVCRU1CZ3NDUUNBRklBSVFVQTBBSUFVZ0FoQzJBUTBBSUFFZ0JVRnlJQWdRRUNBQlFiV1pEQkFPR2lBQklBUVFLUkFPR2lBQktBSzhBU0VESUFFUUVRd0dDMEVDSVFNZ0JTQUNFRVVoQnlBRklBSVFQaUVHQTBBZ0F5QUlLQUlRSUFnb0FneHJRUVIxVHcwRkFrQWdCU0FJSUFNUUppSUNCRUFnQlNBQ0VGQU5BU0FGSUFJUXRnRU5BUXNnQVNBRlFYSWdDQkFRSUFGQm5xb01FQTRhSUFFZ0JCQXBFQTRhSUFGQm44UUpFQTRhSUFFZ0F4QWhHaUFCS0FLOEFTRURJQUVRRVF3SEN5QUZJQUlRUlNBSFJ3UkFJQUVnQlVGeUlBZ1FFQ0FCUWJ1TENoQU9HaUFCUVlDZERCQU9HaUFCSUFRUUtSQU9HaUFCUVovRUNSQU9HaUFCSUFNUUlSb2dBU2dDdkFFaEF5QUJFQkVNQndzZ0JTQUNFRDRnQmtjRVFDQUJJQVZCY2lBSUVCQWdBVUdkcHdvUURob2dBVUdBblF3UURob2dBU0FFRUNrUURob2dBVUdmeEFrUURob2dBU0FERUNFYUlBRW9BcndCSVFNZ0FSQVJEQWNGSUFOQkFXb2hBd3dCQ3dBTEFBc2dCU0FJUVFJUUppRURJQVVnQ0VFREVDWWhCaUFGSUFoQkJCQW1JUVFnQlNBSVFRVVFKaUVISUFVZ0NDQURFTUlLSWdNTkJDQUNJQVpIQkVBZ0FTQUZRWElnQ0JBUUlBRkJxNThNRUE0YUlBRkJ5UUVRS1JBT0dpQUJLQUs4QVNFRElBRVFFUXdGQ3dKQUlBUUVRQ0FGSUFRUVVBMEJDeUFCSUFWQmNpQUlFQkFnQVVHdCt3c1FEaG9nQVVISkFSQXBFQTRhSUFFb0Fyd0JJUU1nQVJBUkRBVUxJQWNFUUNBRklBY1FVQTBFQ3lBQklBVkJjaUFJRUJBZ0FVR0crd3NRRGhvZ0FVSEpBUkFwRUE0YUlBRW9BcndCSVFNZ0FSQVJEQVFMSUFVZ0NFRUNFQ1loQXlBRklBaEJBeEFtSVFJZ0JTQUlRUVFRSmlFSElBVWdDQ0FERU1JS0lnTU5Bd0pBSUFJRVFDQUZJQUlRVUEwQkN5QUJJQVZCY2lBSUVCQWdBVUd0K3dzUURob2dBU0FFRUNrUURob2dBU2dDdkFFaEF5QUJFQkVNQkFzZ0J3UkFJQVVnQnhCUURRTUxJQUVnQlVGeUlBZ1FFQ0FCUVliN0N4QU9HaUFCSUFRUUtSQU9HaUFCS0FLOEFTRURJQUVRRVF3REN3SkFJQVVnQWhCUURRQWdCU0FDRUxZQkRRQWdBU0FGUVhJZ0NCQVFJQUZCdFprTUVBNGFJQUZCelFFUUtSQU9HaUFCS0FLOEFTRURJQUVRRVF3REN5QUZJQWdnQlNBSVFRSVFKaUlFRU1JS0lnTU5BaUFGSUFRUVJTQUZJQUlRUlVZTkFTQUJJQVZCY2lBSUVCQWdBVUdwL2dzUURob2dBVUhOQVJBcEVBNGFJQUVvQXJ3QklRTWdBUkFSREFJTElBVWdDQ0FGSUFoQkFoQW1FTUlLSWdNTkFRdEJBQ0VEQ3lBQlFjQUJhaVFBSUFNaUFRMEhBbjlCQUNFRUl3QkIwQUZySWdFa0FDQUlLQUlrSVFNQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0NDOEJIaUlDUVpvQmF3NG1BQUFCQVFFQkFRSUNBZ01EQXdNRUJRWUdCZ1lHQmdZR0JnWUNBZ0lDQWdJQ0FnSUNBZ0lIQ3lBRklBTVF2d0pGQkVBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBIbW5Bd1FEaG9nQXlBQ0VDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUJ3c2dCU0FJUVFJUUppSURCRUFnQlNBREVNUUZEUWNMSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQU5CbUlBTUVBNGFJQU1nQWhBcEVBNGFJQUVvQXN3QklRUWdBeEFSREFZTEFrQWdCU0FERUw4Q0RRQWdCU0FERU1RRkRRQWdBVUVRYWlJRElBVkJjaUFJRUJBZ0EwR1ptd3dRRGhvZ0F5QUNFQ2tRRGhvZ0FTZ0N6QUVoQkNBREVCRU1CZ3NDUUNBRklBaEJBaEFtSWdjRVFDQUZJQWNRZHcwQklBVWdCeENPQVEwQkN5QUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFiempDeEFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0dDeUFGSUFNUVJTQUZJQWNRUlVZTkJTQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFlU0dEQkFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0ZDd0pBSUFVZ0F4Qy9BZzBBSUFVZ0F4REVCUTBBSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQU5CbVpzTUVBNGFJQU1nQWhBcEVBNGFJQUVvQXN3QklRUWdBeEFSREFVTEFrQWdCU0FJUVFJUUppSUhCRUFnQlNBSEVIY05BU0FGSUFjUWpnRU5BUXNnQVVFUWFpSURJQVZCY2lBSUVCQWdBMEdMNHdzUURob2dBeUFDRUNrUURob2dBU2dDekFFaEJDQURFQkVNQlFzZ0JTQURFRVVnQlNBSEVFVkhCRUFnQVVFUWFpSURJQVZCY2lBSUVCQWdBMEhiaFF3UURob2dBeUFDRUNrUURob2dBU2dDekFFaEJDQURFQkVNQlFzZ0JTQUlRUU1RSmlBSFJnMEVJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkJ2cEVNRUE0YUlBTWdBaEFwRUE0YUlBRW9Bc3dCSVFRZ0F4QVJEQVFMQWtBZ0JTQURFTDhDRFFBZ0JTQURFTVFGRFFBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBHWm13d1FEaG9nQXlBQ0VDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUJBc2dCU0FJUVFJUUppQURSZ1JBSUFVZ0NFRURFQ1lnQTBZTkJBc2dBVUVRYWlJRElBVkJjaUFJRUJBZ0EwSDRvQXdRRGhvZ0F5QUNFQ2tRRGhvZ0FTZ0N6QUVoQkNBREVCRU1Bd3NDUUNBRklBTVF2d0lOQUNBRklBTVF4QVVOQUNBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUVptYkRCQU9HaUFEUWFnQkVDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUF3c2dCU0FJUVFJUUppQURSZzBDSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQU5CMnFFTUVBNGFJQU5CcUFFUUtSQU9HaUFCS0FMTUFTRUVJQU1RRVF3Q0N5QUZJQU1RSUNJQ1JRMENJQVV0QUtrRElRY2dBVUdwQVRZQ0RDQUJJQWcyQWdnZ0FTQUhPZ0FFSUFFZ0JUWUNBRUVCSVFrQ1FBSkFBa0FDUUFKQUFrQWdBaThCSGtFVWF3NE5CUVVGQkFJQkFRRUNBd0lEQUFNTElBVW9BcEFERFFRZ0JTMEFwQU1OQkNBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWZHNkNSQU9HaUFEUWJmMEFSQU9HaUFCS0FMTUFTRUVJQU1RRVF3R0N5QUZRWUFCYWtHT0toQm9EUU1nQVVFUWFpSURJQVZCY2lBSUVCQWdBMEdqdXdrUURob2dBMEh4emdVUURob2dBU2dDekFFaEJDQURFQkVNQlFzZ0J3MENDeU1BUWNBQmF5SURKQUFnQXlBQktBSUFRWElnQVNnQ0NCQVFJQU5CMHZJSkVBNGFJQU5CcjkwRFFielFBU0FCTFFBRUd4QU9HaUFEUWZxY0RCQU9HaUFESUFFb0Fnd1FnUUVRRGhvZ0F5Z0N2QUVoQkNBREVCRWdBMEhBQVdva0FBd0RDeUFDS0FJQUtBSU1JUWtMSUFVZ0NFRUNFQ1loQWlBRklBaEJBeEFtSVFZZ0JTQUlRUVFRSmlFTEFrQWdBZ1JBSUFVZ0FoQy9BZzBCSUFVZ0FoREVCUTBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUVkvOEN4QU9HaUFEUWFrQkVDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUFnc0NRQ0FGSUFJUVJTQUpSZzBBSUFjRVFDQUZJQUlReEFWRkRRRUxJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkJuNFlNRUE0YUlBTkJxUUVRS1JBT0dpQUJLQUxNQVNFRUlBTVFFUXdDQ3lBRElBWkdJQU1nQzBaeERRRWdBVUVRYWlJRElBVkJjaUFJRUJBZ0EwSExvQXdRRGhvZ0EwR3BBUkFwRUE0YUlBRW9Bc3dCSVFRZ0F4QVJEQUVMQWtBZ0JTQURFTDhDRFFBZ0JTQURFTVFGRFFBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBHWm13d1FEaG9nQXlBQ0VDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUFRc2dCU0FJUVFJUUppRUhJQVVnQ0VFREVDWWhCZ0pBSUFjRVFDQUZJQWNRVUEwQklBVWdCeEMyQVEwQkN5QUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFaL2dDeEFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0JDeUFGSUFNUVJTQUZJQWNRUlVjRVFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFkamZCQkFPR2lBRFFaNkhEQkFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0JDd0pBSUFZRVFDQUZJQVlRVUEwQklBVWdCaEMyQVEwQkN5QUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFaL2dDeEFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0JDeUFGSUFNUVJTQUZJQVlRUlVjRVFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFkamZCQkFPR2lBRFFaNkhEQkFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0JDeUFGSUFjUVBpQUZJQVlRUGtZTkFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFaQ0lEQkFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRc2dBVUhRQVdva0FDQUVEQUVMUVpzdlFZcWVBa0dZQVVIdmxBRVFBQUFMSWdFTkJ5TUFRYUFDYXlJREpBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUlMd0VlUWZVQmF3NEtBQVVMQ3dFQ0JBc0xBd3NMSUFnb0FnUWdDQ2dDQUd0QkFuVkJBMnNpQjBFQmNRUkFJQU5CNEFCcUlnRWdCVUYySUFnUUVDQUJRZWl4QnhBT0dpQURLQUtjQWlFQ0lBRVFFUXdLQ3lBSUtBSThJUVFnQlNBSUtBSWtFSjBIQkVBZ0EwSGdBR29pQVNBRlFYSWdDQkFRSUFGQm9QTURFQTRhSUFNb0Fwd0NJUUlnQVJBUkRBb0xBa0FnQlNBSUtBSWtFSUVGUlEwQUlBVW9BcEFERFFBZ0JTMEFwQU1OQUNBRFFlQUFhaUlCSUFWQmNpQUlFQkFnQVVHTXZBa1FEaG9nQVVHMzlBRVFEaG9nQXlnQ25BSWhBaUFCRUJFTUNnc2dCU0FJS0FJa0VDQWlBVVVOQlFKQUlBVW9BZ1F0QUN3TkFDQUJMd0VlSVFFZ0JVR0FBV3BCamlvUWFBMEFJQUZCRzBjRVFDQUJRUmxyUVFGTERRRWdCU2tEZ0FGQ0FvTlFEUUVMSUFOQjRBQnFJZ1FnQlVGMklBZ1FFQ0FFUWRXOEFoQU9HaUFFSUFFUUtSQU9HaUFES0FLY0FpRUNJQVFRRVF3S0N5QURRUUEyQWxnZ0EwSUFOd05RSUFRb0FoUWhBU0FFS0FJUUlRSURRQ0FCSUFKSEJFQWdBeUFDS0FJQUtBSUFOZ0pnSUFKQkJHb2hBaUFEUWRBQWFpQURRZUFBYWhEZkFnd0JDd3NnQXlnQ1VDQURLQUpVRVB3S0lBTkIwQUJxSUFNb0FsQWdBeWdDVkJEcERTQURLQUpVRU9nTklBZEJBWFlpQWlBREtBSlVJQU1vQWxCclFRSjFSd1JBSUFOQjRBQnFJZ0VnQlVGMklBZ1FFQ0FCUWIvOUNCQU9HaUFCSUFJUUlSb2dBVUhwK1FnUURob2dBU0FFS0FJVUlBUW9BaEJyUVFKMUVDRWFJQUZCK0pjSUVBNGFJQU1vQXB3Q0lRSWdBUkFSREFrTElBTkJRR3RDQURjREFDQURRZ0EzQXpnZ0EwR0FnSUQ4QXpZQ1NFRURJUUlEUUNBSUtBSUVJQWdvQWdBaUFXdEJBblVnQWswRVFFRUFJUUlNQ1FzZ0F5QUJJQUpCQW5ScUtBSUFJZ0UyQWpRQ1FDQUNRUUZ4QkVBZ0JTQUJFTTBDSWdrZ0NDZ0NKRVlOQVNBRFFlQUFhaUlCSUFWQmRpQUlFQkFnQVVIUXpRc1FEaG9nQTBFb2FpSUVJQVVnQ0NnQ0pCQXFJQUVnQkJBU0dpQUJRYmpNQ3hBT0dpQURRUmhxSWdjZ0JTQURLQUkwRUNvZ0FTQUhFQklhSUFGQjRzOExFQTRhSUFOQkNHb2lCaUFGSUFrUUtpQUJJQVlRRWhvZ0FVSDhsd2dRRGhvZ0F5Z0NuQUloQWlBR0VBOGFJQWNRRHhvZ0JCQVBHaUFCRUJFTUNnc2dCU0FCRUhCQitBRkhCRUFnQTBIZ0FHb2lBU0FGUVhZZ0NCQVFJQUZCeGNzTEVBNGFJQU5CS0dvaUJDQUZJQU1vQWpRUUtpQUJJQVFRRWhvZ0FVRzE1Z2NRRGhvZ0F5Z0NuQUloQWlBRUVBOGFJQUVRRVF3S0N5QURLQUpRSVFFZ0F5Z0NWQ0VHSXdCQkVHc2lDeVFBSUFZZ0FXdEJBblVoQnlBREtBSTBJUXdEUUNBSEJFQWdCeUFIUVFGMklnbEJmM05xSUFrZ0FTQUpRUUowYWlJSktBSUFJQXhKSWhFYklRY2dDVUVFYWlBQklCRWJJUUVNQVFzTElBWWdBVVlFZjBFQUJTQURLQUkwSUFFb0FnQlBDeUVCSUF0QkVHb2tBQ0FCUlFSQUlBTkI0QUJxSWdFZ0JVRjJJQWdRRUNBQlFjWExDeEFPR2lBRFFTaHFJZ2NnQlNBREtBSTBFQ29nQVNBSEVCSWFJQUZCZ2N3TEVBNGFJQU5CR0dvaUJpQUZJQVFvQWdBUUtpQUJJQVlRRWhvZ0FVSDhsd2dRRGhvZ0F5Z0NuQUloQWlBR0VBOGFJQWNRRHhvZ0FSQVJEQW9MSUFOQk9Hb2dBMEUwYWhDcEFnUkFJQU5CNEFCcUlnRWdCVUYySUFnUUVDQUJRWm5MQ3hBT0dpQURRU2hxSWdRZ0JTQURLQUkwRUNvZ0FTQUVFQklhSUFGQjZiUUhFQTRhSUFNb0Fwd0NJUUlnQkJBUEdpQUJFQkVNQ2dzZ0EwSGdBR29nQTBFNGFpQURRVFJxRUpZQkN5QUNRUUZxSVFJTUFBc0FDeUFGSUFoQkFCQWJFQ0FpQVFSQUlBRXZBUjVCK0FGR0RRb0xJQU5CNEFCcUlnRWdCVUYySUFnUUVDQUJRWlhKQWhBT0dpQURLQUtjQWlFQ0lBRVFFUXdJQ3dKQUFrQWdDQ2dDRUNBSUtBSU1hMEVFZFVFRGF3NERBUUFCQUFzZ0EwSGdBR29pQVNBRlFYWWdDQkFRSUFGQjNKZ0JFQTRhSUFNb0Fwd0NJUUlnQVJBUkRBZ0xBa0FDUUNBRklBaEJBQkFiRUNBaUFVVU5BQ0FCS0FJa0lnRkZEUUFnQlNBQkVMOENEUUVMSUFOQjRBQnFJZ0VnQlVGMklBZ1FFQ0FCUWFLS0JCQU9HaUFES0FLY0FpRUNJQUVRRVF3SUN3SkFJQVVnQ0VFQkVCc2lBUkFnSWdJRVFDQUNMd0VlUWZnQlJnMEJDeUFEUWVBQWFpSUJJQVZCZGlBSUVCQWdBVUhneHdJUURob2dBeWdDbkFJaEFpQUJFQkVNQ0FzQ1FDQUZJQWhCQWhBYklnSVFJQ0lFQkVBZ0JDOEJIa0g0QVVZTkFRc2dBMEhnQUdvaUFTQUZRWFlnQ0JBUUlBRkJ1c2dDRUE0YUlBTW9BcHdDSVFJZ0FSQVJEQWdMSUFFZ0FrY05DQ0FGS0FJVVFZQ01CRWtOQ0NBRFFlQUFhaUlCSUFWQmRpQUlFQkFnQVVHT3F3RVFEaG9nQXlnQ25BSWhBaUFCRUJFTUJ3c0NRQ0FGSUFoQkFCQWJJZ1FRSUNJQ0JFQWdBaWdDSkNJQkRRRUxJQU5CNEFCcUlnRWdCVUYySUFnUUVDQUJRZDNNQ3hBT0dpQURRVGhxSWdjZ0JTQUVFQ29nQVNBSEVCSWFJQUZCa09rSEVBNGFJQU1vQXB3Q0lRSWdCeEFQR2lBQkVCRU1Cd3NDUUNBRklBRVFJQ0lCQkVBZ0FTOEJIa0VUUncwQkN5QURRZUFBYWlJQklBVkJkaUFJRUJBZ0FVR2d6Z3NRRGhvZ0EwRTRhaUlFSUFVZ0FpZ0NKQkFxSUFFZ0JCQVNHaUFCUWR6OEJ4QU9HaUFES0FLY0FpRUNJQVFRRHhvZ0FSQVJEQWNMQWtBZ0JTZ0NrQU1OQUNBQkx3RWVRU0JIRFFBZ0JTMEFwQU1OQUNBRktBSUVMUUFsRFFBZ0EwSGdBR29pQVNBRlFYWWdDQkFRSUFGQm9NNExFQTRhSUFOQk9Hb2lCQ0FGSUFJb0FpUVFLaUFCSUFRUUVob2dBVUd2NVFjUURob2dBeWdDbkFJaEFpQUVFQThhSUFFUUVRd0hDeUFGSUFnb0FqZ29BZ2dRSUNJQ0JFQWdBaWdDS0NBQktBSW9SZzBJQ3lBRFFlQUFhaUlCSUFWQmRpQUlFQkFnQVVIZHpBc1FEaG9nQTBFNGFpSUhJQVVnQkJBcUlBRWdCeEFTR2lBQlFaWHhCeEFPR2lBREtBS2NBaUVDSUFjUUR4b2dBUkFSREFZTElBZ29BaEFoQVNBSUtBSU1JUUlnQlNBRklBaEJBQkFtRUZCRkJFQWdBMEhnQUdvaUFTQUZRWFlnQ0JBUUlBRkJ5dU1BRUE0YUlBTW9BcHdDSVFJZ0FSQVJEQVlMSUFVZ0NFRUJFQnNRSUM4QkhrSDRBVWNOQWlBQklBSnJRUVIxSVFGQkFpRUNBMEFnQVNBQ1RRMEhJQVVnQ0NBQ1FRRnlFQnNRSUNJRUJFQWdBa0VDYWlFQ0lBUXZBUjVCK0FGR0RRRUxDeUFEUWVBQWFpSUJJQVZCZGlBSUVCQWdBVUdWeHdJUURob2dBeWdDbkFJaEFpQUJFQkVNQlFzQ1FDQUZJQWhCQUJBYklnSVFJQ0lCQkVBZ0FTOEJIa0g0QVVZTkFRc2dBMEhnQUdvaUFTQUZRWFlnQ0JBUUlBRkJtcU1LRUE0YUlBTkJPR29pQkNBRklBSVFLaUFCSUFRUUVob2dBVUd6a2dNUURob2dBeWdDbkFJaEFpQUVFQThhSUFFUUVRd0ZDeUFJS0FJOEtBSUFJQUpHQkVBZ0EwSGdBR29pQVNBRlFYWWdDQkFRSUFGQjF2SU1FQTRhSUFNb0Fwd0NJUUlnQVJBUkRBVUxBa0FnQlNBSVFRRVFHeUlFRUNBaUFRUkFJQUV2QVI1QitBRkdEUUVMSUFOQjRBQnFJZ0VnQlVGMklBZ1FFQ0FCUWF6UENSQU9HaUFEUVRocUlnY2dCU0FFRUNvZ0FTQUhFQklhSUFGQnM1SURFQTRhSUFNb0Fwd0NJUUlnQnhBUEdpQUJFQkVNQlFzZ0FpQUVSZ1JBSUFOQjRBQnFJZ0VnQlVGMklBZ1FFQ0FCUVpqQ0FSQU9HaUFES0FLY0FpRUNJQUVRRVF3RkN5QUlRUUlRR3lJQlFRTnhRUU5HQkVBZ0EwSGdBR29pQVNBRlFYSWdDQkFRSUFGQjhmc0VFQTRhSUFNb0Fwd0NJUUlnQVJBUkRBVUxBa0FnQVVFQ2NVVU5BQ0FCUVlBQmNRUkFJQU5CNEFCcUlnRWdCVUZ5SUFnUUVDQUJRZXI2QkJBT0dpQURLQUtjQWlFQ0lBRVFFUXdHQ3lBQlFZQUNjVVVOQUNBRFFlQUFhaUlCSUFWQmNpQUlFQkFnQVVHcyt3UVFEaG9nQXlnQ25BSWhBaUFCRUJFTUJRc2dBVUhBQUhGRkRRVWdBVUVGZGtFQmNTQUJRUVIyUVFGeGFrRUVRUU1nQVVFSWNSdHFJZ0VnQ0NnQ0VDQUlLQUlNYTBFRWRVMEVRQ0FJSUFFUUd3MEdDeUFEUWVBQWFpSUJJQVZCY2lBSUVCQWdBVUhNdndJUURob2dBeWdDbkFJaEFpQUJFQkVNQkF0Qm15OUJnNnNDUWNJQVFhT2hBeEFBQUFzZ0EwSGdBR29pQVNBRlFYWWdDQkFRSUFGQjQ4a0NFQTRhSUFNb0Fwd0NJUUlnQVJBUkRBSUxJQU5CT0dvUVR3c2dBMEhRQUdvUU1ob0xJQUlOQVF0QkFDRUNDeUFEUWFBQ2FpUUFJQUlpQVEwSFFRQWhBaU1BUWZBQmF5SUJKQUFDUUNBSUx3RWVJZ05CendGclFRaExEUUFnQlNBSUtBSWtJZ1FRcmdGRkJFQWdBVUV3YWlJRUlBVkJjaUFJRUJBZ0JFSEFqQXdRRGhvZ0JDQURFQ2tRRGhvZ0FTZ0M3QUVoQWlBRUVCRU1BUXNnQlNBRVFSWkJJQkNHQkVVRVFDQUJRVEJxSWdNZ0JVRnlJQWdRRUNBRFFlQ0lBUkFPR2lBQktBTHNBU0VDSUFNUUVRd0JDeUFGSUFoQkFoQW1JQVJHQkVBZ0JTQUlLQUk0S0FJQUVKOEJJUWNnQVNBRE5nSWNJQUZCNUlZZ05nSVlJQUVnQVVFWWFpSUVOZ0lvSUFkQm9BTnFJQVFRelFFZ0JCQVdJQVVnQ0NnQ09DZ0NBQkNmQVNFRUlBRWdBellDQkNBQlFZaUhJRFlDQUNBQklBRTJBaEFnQkVHc0Eyb2dBUkROQVNBQkVCWU1BUXNnQVVFd2FpSUVJQVZCY2lBSUVCQWdCRUczb3d3UURob2dCQ0FERUNrUURob2dBU2dDN0FFaEFpQUVFQkVMSUFGQjhBRnFKQUFnQWlJQkRRZEJBQ0VCSXdCQjRBRnJJZ0lrQUFKQUlBZ3ZBUjRpQkVIakFXdEJFRWtnQkVHK0FtdEJBa2x5SUFSQjdpdHJRUUpKY2tVZ0JFR1RMMGR4RFFBZ0NDZ0NKQ0VIQWtBQ1FBSkFJQVJCN2l0clFRSlBCRUFnQkVIa0FVWWdCRUcvQWtaeURRTWdCRUdUTDBjTkFRc2dCU0FIRUhjTkFTQUNRU0JxSWdNZ0JVRnlJQWdRRUNBRElBUVFLUkFPR2lBRFFidUVCQkFPR2lBQ0tBTGNBU0VCSUFNUUVRd0RDeUFFUWVZQmEwRU1TdzBBSUFVZ0J4QlFEUUFnQWtFZ2FpSURJQVZCY2lBSUVCQWdBeUFFRUNrUURob2dBMEhJaFFRUURob2dBaWdDM0FFaEFTQURFQkVNQWdzQ1FDQUVRZU1CYTBGOWNRMEFJQVVnQnhCM0RRQWdCU0FIRUZBTkFDQUNRU0JxSWdNZ0JVRnlJQWdRRUNBRElBUVFLUkFPR2lBRFFZR0VCQkFPR2lBQ0tBTGNBU0VCSUFNUUVRd0NDeUFFUWI0Q1J3MEFJQVVnQnhDL0FnMEFJQUpCSUdvaUF5QUZRWElnQ0JBUUlBTWdCQkFwRUE0YUlBTkJub1lFRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQUVMSUFVZ0NFRUNRUUFnQkVIa0FVY2dCRUcvQWtkeEd5SUdFQ1loQVNBQ1FRQTJBaHdnQlNBQklBSkJIR29nQWtFWWFoQ0lBa1VFUUNBQ1FTQnFJZ01nQlVGeUlBZ1FFQ0FESUFRUUtSQU9HaUFEUWREZEFSQU9HaUFDS0FMY0FTRUJJQU1RRVF3QkN3SkFJQVVnQWlnQ0hCQlFSUTBBSUFVZ0FpZ0NIQkErUWNBQVJ3MEFJQVV0QUlFQlFSQnhEUUFnQWtFZ2FpSURJQVZCY2lBSUVCQWdBeUFFRUNrUURob2dBMEdtREJBT0dpQUNLQUxjQVNFQklBTVFFUXdCQ3lBQ0tBSVlJZ0ZCREUxQkFFRUJJQUYwUWJRN2NSc2dBVUhsS1VZZ0FVR2FLa1p5Y2tVRVFDQUNRU0JxSWdNZ0JVRnlJQWdRRUNBRElBUVFLUkFPR2lBRFFmcTBCeEFPR2lBQ0tBTGNBU0VCSUFNUUVRd0JDd0pBSUFVdEFJQUJRUUp4UlEwQUlBVW9BZ0FvQWdBUVJ5RURJQUlvQWhnaEFRSkFJQU1FUUFKQUFrQWdBVUVDYXc0REF3RURBQXNnQVVIbEtVWWdBVUVMYTBFQ1NYSWdBVUdhS2taeURRSUxJQUpCSUdvaUF5QUZRWElnQ0JBUUlBSkJDR29pQnlBRlFjNGtFRGNnQXlBSEVCSWFJQU1nQkJBcEVBNGFJQU5Ccll3SUVBNGFJQUlvQXR3QklRRWdCeEFQR2lBREVCRU1Bd3NnQVVFSFJ3MEFJQUpCSUdvaUF5QUZRWElnQ0JBUUlBTWdCQkFwRUE0YUlBTkJvWUlJRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQUlMSUFWQmdBRnFJUUVnQkVHVEwwWUVRQUpBSUFVZ0J4QStRUkJIRFFBZ0FVSFBMeEJvRFFBZ0FrRWdhaUlESUFWQmNpQUlFQkFnQTBHVEx4QXBFQTRhSUFOQjRSQVFEaG9nQWlnQzNBRWhBU0FERUJFTUF3c0NRQ0FGSUFjUVBrRWdSdzBBSUFGQmtTOFFhQTBBSUFKQklHb2lBeUFGUVhJZ0NCQVFJQU5Ca3k4UUtSQU9HaUFEUWVFUUVBNGFJQUlvQXR3QklRRWdBeEFSREFNTElBVWdCeEErUWNBQVJ3MEJJQUZCa2k4UWFBMEJJQUpCSUdvaUF5QUZRWElnQ0JBUUlBTkJreThRS1JBT0dpQURRYUlRRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQUlMSUFSQi92OERjVUh1SzBjTkFBSkFJQVVnQnhBK1FSQkhEUUFnQVVId0t4Qm9EUUFnQWtFZ2FpSURJQVZCY2lBSUVCQWdBeUFFRUNrUURob2dBMEhRRGhBT0dpQUNLQUxjQVNFQklBTVFFUXdDQ3dKQUlBVWdCeEErUVNCSERRQWdBVUhzS3hCb0RRQWdBa0VnYWlJRElBVkJjaUFJRUJBZ0F5QUVFQ2tRRGhvZ0EwSGNEeEFPR2lBQ0tBTGNBU0VCSUFNUUVRd0NDeUFGSUFjUVBrSEFBRWNOQUNBQlFlMHJFR2dOQUNBQ1FTQnFJZ01nQlVGeUlBZ1FFQ0FESUFRUUtSQU9HaUFEUVpZUEVBNGFJQUlvQXR3QklRRWdBeEFSREFFTEFrQWdCU2dDQUNnQ0FCQ21Ca1VOQUNBQ0tBSVlJZ0ZCQ0UxQkFFRUJJQUYwUWJBRGNSdEZCRUFnQWtFZ2FpSURJQVZCY2lBSUVCQWdBeUFFRUNrUURob2dBMEdLb1FjUURob2dBaWdDM0FFaEFTQURFQkVNQWdzZ0JTZ0NBQ2dDQUVFTFJ5QUJRUWhIY2cwQUlBSkJJR29pQXlBRlFYSWdDQkFRSUFOQnhza0FFQTRhSUFJb0F0d0JJUUVnQXhBUkRBRUxBa0FnQkVIKy93TnhJZ2xCdmdKR0JFQWdCU0FDS0FJY0VGQUVRQ0FGSUFJb0Fod1FQa0VnUmcwQ0N5QUNRU0JxSWdNZ0JVRnlJQWdRRUNBRElBUVFLUkFPR2lBRFFlZUFCQkFPR2lBQ0tBTGNBU0VCSUFNUUVRd0NDeUFDS0FJY0lRRWdCRUhrQVVZRVFDQUZJQUVRZHcwQklBVWdBaWdDSEJCUURRRWdBa0VnYWlJRElBVkJjaUFJRUJBZ0EwSGtBUkFwRUE0YUlBTkIvOUFKRUE0YUlBTkJySWNFRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQUlMSUFFZ0IwWU5BQ0FDUVNCcUlnTWdCVUZ5SUFnUUVDQURJQVFRS1JBT0dpQURRYStvQkJBT0dpQUNLQUxjQVNFQklBTVFFUXdCQ3lBRklBZ2dDQ0FHUVFGeUVCc2lDeERJQlNJQkRRQWdCU0FJSUFaQkFtb2lEQ0FMRUtzSUlnRU5BQ0FHUVFOcUlRTUNRQ0FKUWVZQlJ3UkFJQU1oQVF3QkN5QUZJQWdnQXlBTEVLc0lJZ0VOQVNBR1FRUnlJUUVnQWtFZ2FpSUdJQVVnQ0NBTUVCc1EzUUVnQWlnQ0pDRUxJQUl0QUNFaERDQUdJQVVnQ0NBREVCc1EzUUVnREVVTkFDQUNMUUFoUlEwQUlBSW9BaVFnQzNOQmdJQUNjVVVOQUNBQ1FTQnFJZ01nQlVGMklBZ1FFQ0FEUWRUQ0FSQU9HaUFDS0FMY0FTRUJJQU1RRVF3QkN3SkFBa0FDUUFKQUFrQUNRQ0FFUWVNQmF3NEhBZ01CQVFFQ0FnQUxJQVJCdmdKclFRSkpEUUVMSUFVZ0NDQUJFQ1lnQjBjTkFpQUJRUUZxSVFFTElBbEI1Z0ZIRFFJZ0JTQUlJQUVRSmlBSFJnMENJQUpCSUdvaUF5QUZRWElnQ0JBUUlBTWdCQkFwRUE0YUlBTkI2cWdFRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQU1MSUFVZ0NFRURFQ1lnQWlnQ0hFWU5BU0FDUVNCcUlnTWdCVUZ5SUFnUUVDQURRZVFCRUNrUURob2dBMEhrc1FRUURob2dBaWdDM0FFaEFTQURFQkVNQWdzZ0FrRWdhaUlESUFWQmNpQUlFQkFnQXlBRUVDa1FEaG9nQTBHYXFRUVFEaG9nQWlnQzNBRWhBU0FERUJFTUFRdEJBQ0VCQ3lBQ1FlQUJhaVFBSUFFTkJ5TUFRZEFCYXlJQkpBQWdDQzhCSGlJRFFkb0JhMEVEVFFSQUlBVWdDQ2dDT0NnQ0FCQ2ZBU0VDSUFFZ0FVSEFBV29nQXhBcEVCUWlCRUd3Z1FNUUxTQUNRUU1nQVJESEJDQUJFQThhSUFRUUR4b0xRUUFoQkFKQUlBTkIvdjhEY1VIY0FVY05BQ0FGSUFVZ0NDZ0NBQ2dDQkNJQ0VNMENFRkJGQkVBZ0FTQUZRWElnQ0JBUUlBRWdBeEFwRUE0YUlBRkJtWVFDRUE0YUlBRW9BcndCSVFRZ0FSQVJEQUVMSUFVZ0FoQndFS01DRFFBZ0FTQUZRWElnQ0JBUUlBRWdBeEFwRUE0YUlBRkJ0Y1lDRUE0YUlBRW9BcndCSVFRZ0FSQVJDeUFCUWRBQmFpUUFJQVFpQVEwSEl3QkI0QUZySWdNa0FBSkFBa0FDUUFKQUFrQUNRQUpBSUFndkFSNGlBVUhnQVdzT0FnRUNBQXNnQVVISUFtc09BZ0lEQkFzZ0JTZ0NGRUgvaFFSTkJFQWdCU0FJS0FJNEtBSUFFSjhCSVFJZ0EwSGc4QjgyQXNnQklBTWdBMEhJQVdvaUFUWUMyQUVnQWtHZ0Eyb2dBUkROQVNBQkVCWUxJQWdvQWdBaUFTZ0NDQ0VDSUFVZ0NDQUJLQUlFRU1rTklnRU5CQ0FGSUFnZ0FoRElCU0lCRFFRZ0JTQUlRUUlnQWhDckNDSUJSUTBEREFRTElBVWdDQ0FJS0FJQUtBSUVJZ0lReUFVaUFRMERJQVVnQ0VFQklBSVFxd2dpQVVVTkFnd0RDeUFGSUFnb0FpUVFjRUhIQWtjRVFDQURRUWhxSWdJZ0JVRnlJQWdRRUNBQ1FjZ0NFQ2tRRGhvZ0FrR2g2d0VRRGhvZ0F5Z0N4QUVoQVNBQ0VCRU1Bd3NnQlNBRklBaEJBaEFtSWdFUVVBUkFJQVVnQVJBK1FTQkdEUUlMSUFOQkNHb2lBaUFGUVhJZ0NCQVFJQUpCeUFJUUtSQU9HaUFDUWQ4K0VBNGFJQU1vQXNRQklRRWdBaEFSREFJTElBVWdCU0FJUVFBUUpoQndRY2NDUndSQUlBTkJDR29pQWlBRlFYSWdDQkFRSUFKQnlRSVFLUkFPR2lBQ1FlZnFBUkFPR2lBREtBTEVBU0VCSUFJUUVRd0NDeUFGSUFnZ0NDZ0NBQ2dDQ0NJQ0VNZ0ZJZ0VOQVNBRklBaEJBaUFDRUtzSUlnRU5BUXRCQUNFQkN5QURRZUFCYWlRQUlBRU5CeU1BUWRBQmF5SUJKQUFDUUNBSUx3RWVJZ01RaVE0RVFDQUZJQWdnQ0NnQ0FDZ0NEQkRKRFNJQ0RRRUxRUUFoQWlBRFFjOGlSd1JBSUFOQjFnSkhEUUVnQlNBSUtBSWtFTzhCUlFSQUlBRkJFR29pQXlBRlFYSWdDQkFRSUFOQnBzNEhFQTRhSUFFb0Fzd0JJUUlnQXhBUkRBSUxBa0FnQlNBRklBaEJCQkFiRUNBb0FpUWlBeENjQndSQUlBVWdBeEJGUVFSR0RRRUxJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkI1bzRDRUE0YUlBRW9Bc3dCSVFJZ0F4QVJEQUlMSUFoQkF4QWJJUU1nQlNnQ0FDZ0NBQkJIUlNBRFFRTkpjZzBCSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQUVnQlVITkpCQTNJQU1nQVJBU0dpQURRZS9aQnhBT0dpQUJLQUxNQVNFQ0lBRVFEeG9nQXhBUkRBRUxBa0FnQlNBSUtBSWtJZ01ReHdFTkFDQUZJQU1RcmdFTkFDQUZJQU1RdXhVTkFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFmVHhCeEFPR2lBQktBTE1BU0VDSUFNUUVRd0JDeUFGSUFoQkF4QWJFTTBDSUFOSEJFQWdBVUVRYWlJRElBVkJjaUFJRUJBZ0EwR3Q2UWNRRGhvZ0FTZ0N6QUVoQWlBREVCRU1BUXNnQlNBRklBaEJCQkFiRU0wQ0VPOEJSUVJBSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQU5CeXBZSUVBNGFJQUVvQXN3QklRSWdBeEFSREFFTElBZ29BZ1FnQ0NnQ0FHdEJHVWtOQUNBRklBVWdDRUVGRUJzaUF4RE5BaER2QVVVRVFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFmMlZDQkFPR2lBQktBTE1BU0VDSUFNUUVRd0JDeUFGSUFNZ0FSRERCVVVFUUNBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWEzU0J4QU9HaUFCS0FMTUFTRUNJQU1RRVF3QkN5QUJLUU1BZTBJQlVRMEFJQUZCRUdvaUF5QUZRUU1nQ0JBUUlBTkJ1cFFJRUE0YUlBRW9Bc3dCSVFJZ0F4QVJDeUFCUWRBQmFpUUFJQUlpQVEwSEFuOUJBQ0VDUVFBaEJpTUFRY0FCYXlJQkpBQWdDQ2dDRUNBSUtBSU1JZ2RyUVFSMUlRa0RRQUpBSUFJZ0NVY0VRQ0FISUFKQkJIUnFJZ01vQWdnaUMwRUJhMEVDU3cwQklBTW9BZ3hCSDNFaUJFVU5BU0FJS0FJQUlBTXZBUUFnQXk4QkFtcEJBblJxUVFScktBSUFJZ05CZnlBRWRDSU1jVUVBSUFNZ0JFRUJhM1pCQVhGcklBeHhRUUFnQzBFQ1JodEdEUUVnQVNBRlFYa2dDQkFRSUFGQjFNa0xFQTRhSUFFZ0NDZ0NLQkFoR2lBQlFiVHNEQkFPR2lBQlFjZnREQkFPR2lBQlFibUdCeEFPR2lBQktBSzhBU0VHSUFFUUVRc2dBVUhBQVdva0FDQUdEQUlMSUFKQkFXb2hBZ3dBQ3dBTElnRU5CeU1BUWRBQmF5SUJKQUFnQ0NnQ0pDRURBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ0M4QkhpSUVRWUF2YXc0UkFnTUNBd01EQXdNRkFRRUVCQVFFQmdZQUN3SkFBa0FDUUNBRVFma2lhdzRIQUFFQ0FRTUtCUW9MSUFVZ0NFRUFFSUlGSWdJTkNpQUZJQVVnQ0VFQkVDWVFjRUhkS1VjRVFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFaRDFCUkFPR2lBQktBTE1BU0VDSUFNUUVRd0xDd0pBSUFVZ0JTQUlRUUlRSmlJREVGQUVRQ0FGSUFNUVBrRWdSZzBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWVLQkFoQU9HaUFCS0FMTUFTRUNJQU1RRVF3TEN3SkFJQVVnQlNBSVFRTVFKaUlERUZBRVFDQUZJQU1RUGtFZ1JnMEJDeUFCUVJCcUlnTWdCVUZ5SUFnUUVDQURRYTZDQWhBT0dpQUJLQUxNQVNFQ0lBTVFFUXdMQ3dKQUFrQWdCU0FGSUFoQkJCQW1JZ01RamdGRkRRQWdCU0FERUVWQkEwY05BQ0FGSUFNUVBrRWdSZzBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUVpMS0FSQU9HaUFCS0FMTUFTRUNJQU1RRVF3TEN3SkFJQVVnQlNBSVFRVVFKaUlERUhjRVFDQUZJQU1RUGtFZ1JnMEJDeUFCUVJCcUlnTWdCVUZ5SUFnUUVDQURRYVdMQWhBT0dpQUJLQUxNQVNFQ0lBTVFFUXdMQ3dKQUFrQWdCU0FGSUFoQkJoQW1JZ01RamdGRkRRQWdCU0FERUVWQkEwY05BQ0FGSUFNUVBrRWdSZzBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWRySkFSQU9HaUFCS0FMTUFTRUNJQU1RRVF3TEN5QUZJQVVnQ0VFSEVDWWlBeEIzQkVBZ0JTQURFRDVCSUVZTkNnc2dBVUVRYWlJRElBVkJjaUFJRUJBZ0EwSCtpZ0lRRGhvZ0FTZ0N6QUVoQWlBREVCRU1DZ3NnQlNBSVFRQVFnZ1VpQWtVTkNBd0pDeUFGSUFoQkFCQ0NCU0lDRFFnZ0JTQUZJQWhCQVJBbUlnTVFkd1JBSUFVZ0F4QStRU0JHRFFnTElBRkJFR29pQXlBRlFYSWdDQkFRSUFOQnpJc0NFQTRhSUFFb0Fzd0JJUUlnQXhBUkRBZ0xJQVVnQ0VFQ0VJSUZJZ0lOQnlBRklBTVF2d0pGQkVBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBHZ2hnUVFEaG9nQVNnQ3pBRWhBaUFERUJFTUNBc2dCRUdKTDBjTkJnd0ZDeUFGSUFoQkFoQ0NCU0lDRFFZQ1FDQUZJQU1RZHdSQUlBVWdBeEErUVNCR0RRRUxJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkIvSUlFRUE0YUlBRW9Bc3dCSVFJZ0F4QVJEQWNMSUFSQmdpOUdEUVFNQlFzZ0JTQUlRUUlRZ2dVaUFnMEZBa0FnQlNBREVGQUVRQ0FGSUFNUVBrRWdSZzBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWV1QkJCQU9HaUFCS0FMTUFTRUNJQU1RRVF3R0N5QUVRWUV2UncwRERBUUxJQVVnQ0VFQ0VJSUZJZ0lOQkFKQUFrQWdCU0FERUk0QlJRMEFJQVVnQXhCRlFRTkhEUUFnQlNBREVENUJJRVlOQVFzZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBIMDlnTVFEaG9nQVNnQ3pBRWhBaUFERUJFTUJRc2dCRUdMTDJ0QkFVME5BZ3dEQ3lBRklBaEJBaENDQlNJQ0RRTWdCU0FJRU13TklnSU5Bd0pBSUFVZ0F4Q09BVVVOQUNBRklBTVFSVUVDUncwQUlBVWdBeEErUVNCR0RRTUxJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkJ0UGNERUE0YUlBRW9Bc3dCSVFJZ0F4QVJEQU1MSUFVZ0NFRUNFSUlGSWdJTkFpQUZJQWdRekEwaUFnMENJQUZCQURZQ0RDQUJRUUEyQWdnZ0FVRUFOZ0lFSUFGQkFEWUNBQ0FGSUFNZ0FVRU1haUFCUVFocUlBRkJCR29nQVJDbkEwVUVRQ0FCUVJCcUlnTWdCVUZ5SUFnUUVDQURRZjJkQkJBT0dpQUJLQUxNQVNFQ0lBTVFFUXdEQ3lBQktBSUlRUVJIQkVBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBHcTlBWVFEaG9nQVNnQ3pBRWhBaUFERUJFTUF3c0NRQ0FGSUFFb0FnQVFkMFVOQUNBRklBTVFQa0VnUncwQUlBRW9BZ3hCQTBZTkFnc2dBVUVRYWlJRElBVkJjaUFJRUJBZ0EwR1VsUUVRRGhvZ0FTZ0N6QUVoQWlBREVCRU1BZ3NnQlNBSUVNd05JZ0lOQVF0QkFDRUNDeUFCUWRBQmFpUUFJQUlpQVEwSFFRQWhBaU1BUVpBQ2F5SUJKQUFDUUFKQUFrQUNRQ0FJTHdFZUlnTkIzU0pyRGdJQUFnRUxJQVVnQ0NnQ09DZ0NBQkNmQVNFRUlBRkJoSTRnTmdMNEFTQUJJQUZCK0FGcUlnTTJBb2dDSUFSQm9BTnFJQU1RelFFZ0F4QVdJQVVnQlNBSVFRQVFKaEJ3UWQwcFJ3UkFJQUZCT0dvaUF5QUZRWElnQ0JBUUlBTkJrUFVGRUE0YUlBRW9BdlFCSVFJZ0F4QVJEQU1MQWtBZ0JTQUZJQWhCQVJBbUlnTVFVQVJBSUFVZ0F4QStRU0JHRFFFTElBRkJPR29pQXlBRlFYSWdDQkFRSUFOQjRvRUNFQTRhSUFFb0F2UUJJUUlnQXhBUkRBTUxBa0FnQlNBRklBaEJBaEFtSWdNUVVBUkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5Ccm9JQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFNTEFrQWdCU0FGSUFoQkF4QW1JZ01RVUFSQUlBVWdBeEErUVNCR0RRRUxJQUZCT0dvaUF5QUZRWElnQ0JBUUlBTkJtb0VDRUE0YUlBRW9BdlFCSVFJZ0F4QVJEQU1MQWtBZ0JTQUZJQWhCQkJBbUlnTVFVQVJBSUFVZ0F4QStRU0JHRFFFTElBRkJPR29pQXlBRlFYSWdDQkFRSUFOQjFJSUNFQTRhSUFFb0F2UUJJUUlnQXhBUkRBTUxBa0FnQlNBRklBaEJCUkFtSWdNUVVBUkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5Cc29BQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFNTEFrQUNRQ0FGSUFVZ0NFRUdFQ1lpQXhDT0FVVU5BQ0FGSUFNUVJVRURSdzBBSUFVZ0F4QStRU0JHRFFFTElBRkJPR29pQXlBRlFYSWdDQkFRSUFOQmtzb0JFQTRhSUFFb0F2UUJJUUlnQXhBUkRBTUxBa0FnQlNBRklBaEJCeEFtSWdNUWR3UkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5CcFlzQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFNTEFrQUNRQ0FGSUFVZ0NFRUlFQ1lpQXhDT0FVVU5BQ0FGSUFNUVJVRURSdzBBSUFVZ0F4QStRU0JHRFFFTElBRkJPR29pQXlBRlFYSWdDQkFRSUFOQjJza0JFQTRhSUFFb0F2UUJJUUlnQXhBUkRBTUxBa0FnQlNBRklBaEJDUkFtSWdNUWR3UkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5CL29vQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFNTElBVWdDRUVLRUJzUUlDSURMd0VlUVR0SEJFQWdBVUU0YWlJRElBVkJjaUFJRUJBZ0EwSGR1d1FRRGhvZ0FTZ0M5QUVoQWlBREVCRU1Bd3NnQTBFQ0VCdEIyaWxHRFFJZ0EwRUNFQnRCM2lsR0RRSWdBVUU0YWlJRElBVkJjaUFJRUJBZ0EwRzErd1VRRGhvZ0FTZ0M5QUVoQWlBREVCRU1BZ3NnQTBIV0tVY05BU0FJS0FJa0lRUWdCU0FJS0FJNEtBSUFFSjhCSVFjZ0FVR29qaUEyQWlBZ0FTQUJRU0JxSWdNMkFqQWdCMEdnQTJvZ0F4RE5BU0FERUJZZ0JTQUVFTDhDUlFSQUlBRkJPR29pQXlBRlFYSWdDQkFRSUFOQm9JWUVFQTRhSUFFb0F2UUJJUUlnQXhBUkRBSUxBa0FnQlNBRklBaEJBaEFtSWdNUWR3UkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5CK29BQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFJTElBVWdCU0FJUVFNUUppSURFTzhCQkVBZ0JTQURFRDVCSUVZTkFnc2dBVUU0YWlJRElBVkJjaUFJRUJBZ0EwR2hpQUlRRGhvZ0FTZ0M5QUVoQWlBREVCRU1BUXNnQlNBSUtBSTRLQUlBRUo4QklRUWdBVUhNamlBMkFnZ2dBU0FCUVFocUlnTTJBaGdnQkVHZ0Eyb2dBeEROQVNBREVCWUNRQ0FGSUFVZ0NFRUFFQ1lpQXhEdkFRUkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5CdllVQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFFTElBVWdDRUVCRUJzUUlDSURMd0VlUVR0SEJFQWdBVUU0YWlJRElBVkJjaUFJRUJBZ0EwR0l2QVFRRGhvZ0FTZ0M5QUVoQWlBREVCRU1BUXNnQTBFQ0VCdEIwQ2xHRFFBZ0EwRUNFQnRCMFNsR0RRQWdBVUU0YWlJRElBVkJjaUFJRUJBZ0EwR3IvUVVRRGhvZ0FTZ0M5QUVoQWlBREVCRUxJQUZCa0FKcUpBQWdBaUlCRFFjakFFR3dBbXNpQVNRQUlBZ29BaVFoQXdKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSUx3RWVJZ1JCaENsckRoMEVCQVVGREFFQ0NBMExDZ2tIQXdZQ0FnSUNBZ1VGQXdNQUFBQU9EeEFMSUFVZ0NCQ29BeUFGSUFNUXZ3SkZCRUFnQVVId0FHb2lBeUFGUVhJZ0NCQVFJQU5Cb0lZRUVBNGFJQUVvQXF3Q0lRSWdBeEFSREJFTElBVWdDRUVDRUlzRElnSkZEUThNRUFzZ0JTQUlFS2dESUFVZ0NFRUNFSXNESWdJTkR3SkFJQVVnQXhDMkFVVU5BQ0FGSUFNUVJVRUNSdzBBSUFVZ0F4QStRU0JHRFE4TElBRkI4QUJxSWdNZ0JVRnlJQWdRRUNBRFFaaVdEQkFPR2lBRFFZa3BFQ2tRRGhvZ0FTZ0NyQUloQWlBREVCRU1Ed3NnQlNBSUVLZ0RJQVVnQ0VFQ0VJc0RJZ0lORGlBRklBTVFVQVJBSUFVZ0F4QStEUTRMSUFGQjhBQnFJZ01nQlVGeUlBZ1FFQ0FEUVpXWERCQU9HaUFESUFRUUtSQU9HaUFCS0FLc0FpRUNJQU1RRVF3T0N5QUZJQWdRcUFNZ0JTQUlRUUlRaXdNaUFnME5JQVVnQXhCM0JFQWdCU0FERUQ1QklFWU5EUXNnQVVId0FHb2lBeUFGUVhJZ0NCQVFJQU5CMlpZTUVBNGFJQU1nQkJBcEVBNGFJQUVvQXF3Q0lRSWdBeEFSREEwTElBVWdDQkNvQXlBRklBaEJBaENMQXlJQ0RRd2dBVUVBTmdKWUlBRkJBRFlDYkNBQlFRQTJBbWdnQVVFQU5nSmtJQVVnQXlBQlFkZ0FhaUFCUWV3QWFpQUJRZWdBYWlBQlFlUUFhaENuQTBVRVFDQUJRZkFBYWlJRElBVkJjaUFJRUJBZ0EwSGptQXdRRGhvZ0F5QUVFQ2tRRGhvZ0FTZ0NyQUloQWlBREVCRU1EUXNnQVNnQ2JFRUVSd1JBSUFGQjhBQnFJZ01nQlVGeUlBZ1FFQ0FEUWFyMEJoQU9HaUFESUFRUUtSQU9HaUFCS0FLc0FpRUNJQU1RRVF3TkN3SkFJQVVnQVNnQ1pCQjNSUTBBSUFVZ0F4QStRU0JIRFFBZ0FTZ0NXRUVEUmcwTUN5QUJRZkFBYWlJRElBVkJjaUFJRUJBZ0EwSDQ1UXNRRGhvZ0F5QUVFQ2tRRGhvZ0FTZ0NyQUloQWlBREVCRU1EQXNnQlNBSUVLZ0RJQVVnQ0VFQ0VJc0RJZ0lOQ3dKQUlBVWdBeENPQVVVTkFDQUZJQU1RUlVFRFJ3MEFJQVVnQXhBK1FTQkdEUXNMSUFGQjhBQnFJZ01nQlVGeUlBZ1FFQ0FEUWRDVkRCQU9HaUFESUFRUUtSQU9HaUFCS0FLc0FpRUNJQU1RRVF3TEN5QUZJQWdRcUFNZ0JTQUlRUUFRaXdNaUFnMEtJQVVnQ0VFQkVCc1FJQ0lETHdFZVFUdEdCRUFnQTBFQ0VCdEJpU3BHRFFvTElBRkI4QUJxSWdNZ0JVRnlJQWdRRUNBRFFkak5CUkFPR2lBQktBS3NBaUVDSUFNUUVRd0tDeUFGSUFnUXFBTWdCU0FJUVFBUWl3TWlBZzBKSUFVZ0NFRUJFQnNRSUNJREx3RWVRVHRHQkVBZ0EwRUNFQnRCMmlsR0RRa0xJQUZCOEFCcUlnTWdCVUZ5SUFnUUVDQURRZno3QlJBT0dpQUJLQUtzQWlFQ0lBTVFFUXdKQ3lBRklBZ1FxQU1nQlNBSVFRQVFpd01pQWtVTkJ3d0lDeUFGSUFnUXFBTWdCU0FJUVFBUWl3TWlBZzBIQWtBZ0JTQUZJQWhCQVJBbUlnTVE3d0VFUUNBRklBTVFQa0VnUmcwQkN5QUJRZkFBYWlJRElBVkJjaUFJRUJBZ0EwR3lnQUlRRGhvZ0FTZ0NyQUloQWlBREVCRU1DQXNDUUFKQUlBVWdCU0FJUVFJUUppSURFSTRCUlEwQUlBVWdBeEJGUVFOSERRQWdCU0FERUQ1QklFWU5BUXNnQVVId0FHb2lBeUFGUVhJZ0NCQVFJQU5Ca3NvQkVBNGFJQUVvQXF3Q0lRSWdBeEFSREFnTEFrQWdCU0FGSUFoQkF4QW1JZ01RZHdSQUlBVWdBeEErUVNCR0RRRUxJQUZCOEFCcUlnTWdCVUZ5SUFnUUVDQURRYVdMQWhBT0dpQUJLQUtzQWlFQ0lBTVFFUXdJQ3dKQUFrQWdCU0FGSUFoQkJCQW1JZ01RamdGRkRRQWdCU0FERUVWQkEwY05BQ0FGSUFNUVBrRWdSZzBCQ3lBQlFmQUFhaUlESUFWQmNpQUlFQkFnQTBIYXlRRVFEaG9nQVNnQ3JBSWhBaUFERUJFTUNBc2dCU0FGSUFoQkJSQW1JZ01RZHdSQUlBVWdBeEErUVNCR0RRY0xJQUZCOEFCcUlnTWdCVUZ5SUFnUUVDQURRZjZLQWhBT0dpQUJLQUtzQWlFQ0lBTVFFUXdIQ3lBRklBZ1FxQU1nQlNBSVFRQVFpd01pQWcwR0lBVWdDRUVDUVFOQkJFRi9RWDlCQlVFR1FYOUJmMEYvUVg5QmYwRUhRUWhCQ1VFS1FYOUJDeENzQ2lJQ1JRMEZEQVlMSUFVZ0NCQ29BeUFGSUFoQkFCQ0xBeUlDRFFVZ0JTQUlRUUpCQTBFRVFYOUJmMEVGUVg5QmYwRi9RUVpCQjBGL1FRaEJDVUVLUVF0QmYwRU1FS3dLSWdKRkRRUU1CUXNnQlNBSUVLZ0RJQVVnQ0VFQUVJc0RJZ0lOQkNBRklBaEJmMEYvUVg5QkFrRURRWDlCZjBFRVFRVkJmMEYvUVFaQkIwRUlRUWxCQ2tFTVFYOFFyQW9pQWcwRUlBVWdCU0FJUVFzUUppSURFSGNFUUNBRklBTVFQa0VnUmcwRUN5QUJRZkFBYWlJRElBVkJjaUFJRUJBZ0EwR3dnd1FRRGhvZ0FTZ0NyQUloQWlBREVCRU1CQXNnQlNBSUVLZ0RJQVVnQ0VFQUVJc0RJZ0lOQXlBRklBaEJmMEYvUVg5QkFrRURRWDlCZjBFRVFRVkJmMEYvUVFaQkIwRUlRUWxCQ2tFTFFYOFFyQW9pQWtVTkFnd0RDeUFCUWRnQWFpQUVFQ2tRRkNFSElBVWdDQ2dDT0NnQ0FCQ2ZBU0VFSUFGQk1Hb2dCeEJVSVFOQkVCQVZJZ0pCbEk4Z05nSUFJQUlnQXlrQ0FEY0NCQ0FDSUFNb0FnZzJBZ3dnQXhCVklBRWdBallDVUNBRVFhQURhaUFCUVVCcklnSVF6UUVnQWhBV0lBTVFEeG9DZjBFQUlBVWdDRUVBRUlzRElnSU5BQnBCQUNFQ1FRRWdDQ2dDRUNBSUtBSU1heUlEUVJGSkRRQWFBa0FnQTBFd1J3UkFJQUZCOEFCcUlnUWdCVUZ5SUFnUUVDQUVRZW5JQ2hBT0dpQUVRZFBKQnhBT0dnd0JDd0pBSUFVZ0JTQUlRUUVRSmlJREVGQUVRQ0FGSUFNUVBrRWdSZzBCQ3lBQlFmQUFhaUlFSUFWQmNpQUlFQkFnQkVIWmdBSVFEaG9NQVFzZ0JTQUZJQWhCQWhBbUlnTVFVQVJBUVFFZ0JTQURFRDVCSUVZTkFob0xJQUZCOEFCcUlnUWdCVUZ5SUFnUUVDQUVRY0dCQWhBT0dnc2dBU2dDckFJaEFpQUVFQkZCQUFzaEF5QUhFQThhSUFNTkFRd0NDeUFCUWRnQWFpQUVFQ2tRRkNFSElBVWdDQ2dDT0NnQ0FCQ2ZBU0VFSUFGQkNHb2dCeEJVSVFOQkVCQVZJZ0pCdUk4Z05nSUFJQUlnQXlrQ0FEY0NCQ0FDSUFNb0FnZzJBZ3dnQXhCVklBRWdBallDS0NBRVFhQURhaUFCUVJocUlnSVF6UUVnQWhBV0lBTVFEeG9DUUFKQUFrQWdCU0FGSUFoQkFCQW1JZ0lRVUFSQUlBVWdBaEErUVNCR0RRRUxJQUZCOEFCcUlnUWdCVUZ5SUFnUUVDQUVRZG1BQWhBT0dnd0JDMEVCSVFRZ0JTQUZJQWhCQVJBbUlnTVFVQVJBSUFVZ0F4QStRU0JHRFFJTElBRkI4QUJxSWdRZ0JVRnlJQWdRRUNBRVFjR0JBaEFPR2dzZ0FTZ0NyQUloQWlBRUVCRkJBQ0VFQ3lBSEVBOGFJQVJGRFFFTFFRQWhBZ3NnQVVHd0Ftb2tBQ0FDSWdFTkJ5QUtRUUZxSVFwQkFDRUJJd0JCOEFGcklnTWtBQUpBQWtBQ1FDQUlMd0VlUWE0cGF3NENBQUVDQ3lBRklBZ29BamdvQWdBUW53RWhBaUFEUVppTklEWUMyQUVnQXlBRFFkZ0JhaUlCTmdMb0FTQUNRYUFEYWlBQkVNMEJJQUVRRmdKQUlBVWdCU0FJUVFBUUppSUJFTzhCQkVBZ0JTQUJFRDVCSUVZTkFRc2dBMEVZYWlJQ0lBVkJjaUFJRUJBZ0FrRzFpUUlRRGhvZ0F5Z0MxQUVoQVNBQ0VCRU1BZ3NDUUNBRklBVWdDRUVCRUNZaUFSRHZBUVJBSUFVZ0FSQStRU0JHRFFFTElBTkJHR29pQWlBRlFYSWdDQkFRSUFKQmdva0NFQTRhSUFNb0F0UUJJUUVnQWhBUkRBSUxBa0FnQlNBRklBaEJBaEFtSWdFUTd3RUVRQ0FGSUFFUVBrRWdSZzBCQ3lBRFFSaHFJZ0lnQlVGeUlBZ1FFQ0FDUWMrSUFoQU9HaUFES0FMVUFTRUJJQUlRRVF3Q0MwRUFJUUVnQ0NnQ0VDQUlLQUlNYTBIQUFFY05BU0FGSUFoQkF4QWJFQ0FpQWk4QkhrRTdSd1JBSUFOQkdHb2lBaUFGUVhJZ0NCQVFJQUpCM2JzRUVBNGFJQU1vQXRRQklRRWdBaEFSREFJTElBSkJBaEFiUVpvcVJnMEJJQU5CR0dvaUFpQUZRWElnQ0JBUUlBSkJsZGtGRUE0YUlBTW9BdFFCSVFFZ0FoQVJEQUVMSUFVZ0NDZ0NPQ2dDQUJDZkFTRUJJQU5CdkkwZ05nSUFJQU1nQXpZQ0VDQUJRYUFEYWlBREVNMEJJQU1RRmdKQUlBVWdCU0FJUVFBUUppSUJFTzhCQkVBZ0JTQUJFRDVCSUVZTkFRc2dBMEVZYWlJQ0lBVkJjaUFJRUJBZ0FrSHNoUUlRRGhvZ0F5Z0MxQUVoQVNBQ0VCRU1BUXNnQlNBRklBaEJBUkFtSWdJUTd3RUVRRUVBSVFFZ0JTQUNFRDVCSUVZTkFRc2dBMEVZYWlJQ0lBVkJjaUFJRUJBZ0FrR2VoZ0lRRGhvZ0F5Z0MxQUVoQVNBQ0VCRUxJQU5COEFGcUpBQWdBVVVOQVF3SEN3c0NmMEVBSVFkQkFDRUNJd0JCd0FGcklnTWtBRUVESVFFRFFBSkFBa0FDUUFKQUlBY2dCU2dDcEFFZ0JTZ0NvQUVpQkd0QnpBQnRJZ1pQRFFBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FFSUFkQnpBQnNhaUlFTHdFZUlncEI5UUZyRGdRREJBVUJBQXNDUUFKQUlBcEJObXNPQmdFQkNnb0tCd0FMSUFwQkNHc09CUW9KQ1FrQ0NBdEJBQ0VCREFrTFFRSkJBU0FCR3lFQkRBZ0xJQVFvQWlBUTBRVkZEUVlnQkNnQ0lFRUtSZzBHREFjTElBRkJBa1loQ2tFQ0lRRWdDZzBHSUFNZ0JVRnlJQVFRRUNBRFFaZVhDaEFPR2lBRFFkallDUkFPR2lBRFFjZVhDQkFPR2lBREtBSzhBU0VDSUFNUUVRd0RDMEVESVFFZ0J5QUdRUUZyUmcwRklBUXZBV3BCK1FGclFRSkpEUVVnQXlBRlFYSWdCQkFRSUFOQm5KUUtFQTRhSUFOQnZkd01FQTRhSUFOQnVvOEtFQTRhSUFOQnRlY0hFQTRhSUFNb0Fyd0JJUUlnQXhBUkRBSUxRUU1oQVNBSElBWkJBV3RHRFFRZ0JDOEJha0grL3dOeFFmb0JSZzBFSUFNZ0JVRnlJQVFRRUNBRFFjeVVDaEFPR2lBRFFldmNEQkFPR2lBRFFjakZDUkFPR2lBRFFhYm5CeEFPR2lBREtBSzhBU0VDSUFNUUVRd0JDeUFCUVFGR0lBUkJBaEFiUVFkSGNnMERJQU1nQlVGeUlBUVFFQ0FEUWNubUJ4QU9HaUFES0FLOEFTRUNJQU1RRVFzZ0EwSEFBV29rQUNBQ0RBUUxJQXBCdlFKR0RRRUxRUU1oQVFzZ0IwRUJhaUVIREFBTEFBc2lBUTBGSXdCQjBBQnJJZ0VrQUNBRlFld0RhaUVESUFVb0FzUUJJUUlnQVVFUWFrRUVjaUVFSUFGQklHcEJCSEloQmlBRktBTEFBU0VLSUFGQlFHc2hDQU5BQWtBQ1FDQUNJQXBIQkVBZ0FTQUtLQUlBTmdKTUlBaENBRGNEQUNBQlFnQTNBemdnQVVJQU53TXdJQUVnQmpZQ0lDQUJRZ0EzQWlRZ0FVRXdhaUFCUWN3QWFoRFJDZ05BSUFFb0FrUWlCMFVOQWlBQklBRW9BalFnQnlBQktBSkFha0VCYXlJSFFRaDJRZnovL3dkeGFpZ0NBQ0FIUWY4SGNVRUNkR29vQWdBMkFod2dBVUV3YWhDNUZTQUJRUkJxSUFGQklHb2dBVUVjYWhEVkJTQUJMUUFVUlEwQUlBTWdBVUVjYWhEN0NpQUJRY3dBYWhEZUFpQUZJQUVvQWh3UW53RWlCMFVOQUNBQlFSQnFJQWRCdUFOcUVLMEtJZ2tvQWdBaEJ3TkFJQVFnQjBZRVFDQUpFTVFEREFJRklBRWdCeWdDRURZQ0RDQUJRVEJxSUFGQkRHb1EwUW9nQnhCTUlRY01BUXNBQ3dBTEFBc2dBVUhRQUdva0FBd0JDeUFLUVFScUlRb2dBVUVnYWhERUF5QUJRVEJxRU5rWERBRUxDeU1BUVVCcUlnRWtBQ0FGUWVBQmFpRUVJQVZCN0FOcUlRb2dCU2dDZUNFR0lBRkJDR3BCQkhJaEFpQUJRUmhxUVFSeUlRZ2dCU2dDZENFSEEwQUNRQUpBSUFZZ0IwY0VRQ0FCUWdBM0F6Z2dBVUlBTndNd0lBRkNBRGNES0NBQklBZzJBaGdnQVVJQU53SWNJQUZCQ0dvZ0IwRzRBMm9RclFvaUNTZ0NBQ0VEQTBBZ0FpQURSZ1JBSUFrUXhBTURRQ0FCS0FJOElnTkZEUVFnQVNBQktBSXNJQU1nQVNnQ09HcEJBV3NpQTBFSWRrSDgvLzhIY1dvb0FnQWdBMEgvQjNGQkFuUnFLQUlBTmdJRUlBRkJLR29RdVJVZ0FVRUlhaUFCUVJocUlBRkJCR29RMVFVZ0FTMEFERVVOQUNBQktBSUVJZ01nQnlnQ0FFWUVRQ0FLSUFGQkJHb1Erd29pQXlnQ0JDRUpJQU1vQWdBaEF3TkFJQU1nQ1VZTkJpQUJJQU1vQWdBMkFnQWdBVUVJYWlBRUlBRVExUVVnQTBFRWFpRUREQUFMQUFzZ0JTQURFSjhCSWdORkRRQWdBVUVJYWlBRFFiZ0RhaEN0Q2lJSktBSUFJUU1EUUNBQ0lBTkdCRUFnQ1JERUF3d0NCU0FCSUFNb0FoQTJBZ0FnQVVFb2FpQUJFTkVLSUFNUVRDRUREQUVMQUFzQUN3QUZJQUVnQXlnQ0VEWUNCQ0FCUVNocUlBRkJCR29RMFFvZ0F4Qk1JUU1NQVFzQUN3QUxJQUZCUUdza0FBd0JDeUFIUWNRRGFpRUhJQUZCR0dvUXhBTWdBVUVvYWhEWkZ3d0JDd3NDUUNBRktBTEFBU0lCSUFVb0FzUUJJZ0pIRFFBZ0JTMEFnQUZCSUhFTkFDQVNRZEFEYWlJRElBVkJmRUVBRUJBZ0EwSFQvZ2NRRGhvZ0VpZ0NqQVVoQVF3Q0N5QUZRZVFCYWlFRUlBVkI0QUZxSVFjRFFDQUJJQUpHRFFRZ0FTZ0NBQ0VLSXdCQkVHc2lBeVFBSUFNZ0NqWUNEQ0FGUWV3QmFpQURRUXhxRU93QklRb2dBMEVRYWlRQUlBb0VRQ0FTUWRBRGFpSURJQVZCZkNBRklBRW9BZ0FRSUJBUUlBTkJqZjRJRUE0YUlBTWdBUkN6QnlJQlFlRFNCeEFPR2lBQktBSzhBU0VCREFNTEFrQWdCU2dDQUNnQ0FCQkhSUTBBSUFjZ0FSREFBeUFFUmcwQUlCSkIwQU5xSWdNZ0JVRjhJQVVnQVNnQ0FCQWdFQkFnRWtIQUFtb2lBaUFGUVpva0VEY2dBeUFDRUJJYUlBTkJzN1VIRUE0YUlCSW9Bb3dGSVFFZ0FoQVBHZ3dEQ3lBQlFRUnFJUUVNQUFzQUN5QURRY3dBYkNFQ0lBTkJBV29oQXlBQklBSnFJZ1FvQWhBaEJ5QUVLQUlNSVFFRFFDQUJJQWRIQkVBZ0JDZ0NBQ0FCTHdFQVFRSjBhaWdDQUNFQ0FrQWdBU2dDQkJER0NrVU5BQ0FCS0FJRVFRTkdEUUFnQlNBQ0VDQWlCa1VOQUNBQkx3RUFJUWdqQUVFUWF5SUNKQUFnQWlBSU5nSU1JQUlnQkRZQ0NDQUdRVUJySUFKQkNHb1E2ZzBnQWtFUWFpUUFDeUFCUVJCcUlRRU1BUXNMUVFBaUFVVU5BUXdFQ3dzZ0F4QVJJQUVOQWdzQ2YwRUFJUUZCQUNFSEl3QkI0QVZySWhBa0FDQUZFS1lLSWdNb0FnUWhIaUFES0FJQUlRUURRQUpBQWtBZ0JDQWVSZzBBSUFRb0FrUUVRQ0FFUVVCcklRTWdFRUhRQldwQmlBZ1FGQ0VDUVFFaEJnTkFJQU1vQWdBaUEwVUVRQ0FRUVpBRWFpSUJJQVZCZFNBRklBUW9BZ0FRSUJBUUlBRkJrKzRNRUE0YUlBRWdBaEFTR2lBQlFZSUlFQTRhSUFGQnBvY0tFQTRhSUJCQmdBUnFJZ01nQlNBRUtBSUFFQ29nQVNBREVCSWFJQkFvQXN3RklRY2dBeEFQR2lBQkVCRWdBaEFQR2d3REN5QVFRWkFFYWlJQklBVWdBeWdDQ0JBcUlBSWdBUkQwR1JvZ0JrRUJjU0VISUFFUUR4cEJBQ0VHSUFjTkFDQUNRZmZ3REJENEJob01BQXNBQ3lBUVFRQTJBdGdGSUJCQ0FEY0QwQVVDUUNBRUVLa0tJZ01vQWdBZ0F5Z0NCRVlOQUNBRUVLZ0tJUWdnRUVIb0Eyb2lBeUFFTmdJRUlBTkJvSklnTmdJQUlBTWdBellDRUNBUVFmQ0RJRFlDMEFNZ0VFR1VoQ0EyQXJnRElCQkJ1SVFnTmdLZ0F5QVFJQkJCMEFOcUlnSTJBdUFESUJBZ0VFRzRBMm9pQ2pZQ3lBTWdFQ0FRUWRBRmFpSUpOZ0s4QXlBUUlCQkJvQU5xSWdZMkFyQURJQWdnQXlBQ0lBb2dCaEM1Q2lBR0VCWWdDaEFXSUFJUUZpQURFQllnRUVHSUEyb2lBeUFFTmdJRUlBTkJ4SklnTmdJQUlBTWdBellDRUNBUVFaQUVhaUFKSUFNUTZ3MGdBeEFXSUJBb0FwUUVJUUlnRUNnQ2tBUWhBd05BSUFJZ0EwWUVRQ0FRUVpBRWFoQXlHZ3dDQ3lBREtBSUFJZ29nQXlnQ0JDSUdSd1JBSUFvZ0JoQ0hCQXNnQTBFSWFpRUREQUFMQUFzQ2Z3SkFJQVFRcVFvaUFpZ0NBQ0lESUFJb0FnUWlCa1lOQUNBRVFkQUFhaUVJQWtBRFFDQURRUVJxSWdNZ0JrWU5BU0FRSUFNb0FnQW9BZ1FpQ2pZQ2tBRUNRQ0FLUlNBSUlBcEdja1VFUUNBQ0tBSUFJQU1nRUVHUUFXb1FtZ1VnQTBZTkFRc2dBaWdDQkNFR0RBRUxDeUFRUVpBRWFpSUJJQVZCZFNBRklCQW9BcEFCS0FJQUVDQVFFQ0FCUWFDakNoQU9HaUFRUVlBRWFpSUNJQVVnQXlnQ0FDZ0NBQkFxSUFFZ0FoQVNHaUFCUWJIb0NSQU9HaUFRUWZnQ2FpSUtJQVVnRUNnQ2tBRW9BZ0FRS2lBQklBb1FFaG9nRUNnQ3pBVWhBeUFLRUE4YUlBSVFEeG9nQVJBUlFRQU1BZ3NnQlMwQWdBRkJBbkZGRFFBZ0FpZ0NBQ0VESUFVb0FnUW9BaGdoQ2dOQUlBTWdCa1lOQVNBRUlBTW9BZ0FRb0FZZ0Nrb0VRQ0FRUVpBRWFpSUJJQVZCZFNBRklBTW9BZ0FvQWdBUUlCQVFJQUZCNG9ZSUVBNGFJQkFvQXN3RklRTWdBUkFSUVFBTUF3VWdBMEVFYWlFRElBSW9BZ1FoQmd3QkN3QUxBQXNnQlMwQWdBRkJBbkVFUUNBUUlCQW9BdEFGTmdMVUJTQVFRUUEyQXBnRUlCQkNBRGNEa0FRZ0VFRUFOZ0tJQkNBUVFnQTNBNEFFSUFRUXFRb2lBeWdDQUNBREtBSUVSd1JBSUFRUXFBb2hDQ0FRUWVBQ2FpSURJQVFRd3cwZ0VFSHdneUEyQXNnQ0lCQkIzSVFnTmdLd0FpQVFRYmlFSURZQ21BSWdFQ0FRUWNnQ2FpSUNOZ0xZQWlBUUlCQkJzQUpxSWdvMkFzQUNJQkFnRUVIUUJXb2lDVFlDdEFJZ0VDQVFRWmdDYWlJR05nS29BaUFJSUFNZ0FpQUtJQVlRdVFvZ0JoQVdJQW9RRmlBQ0VCWWdBeEFXSUJCQmdBSnFJZ01nQkJEU0ZTQVFRZmdDYWlBSklBTVE2dzBnQXhBV0lCQW9BdndDSVFJZ0VDZ0MrQUloQXdOQUFrQWdBaUFEUmdSQUlCQkI2QUZxSWdNZ0JCRFNGU0FRUWZDRElEWUMwQUVnRUVHQWhTQTJBcmdCSUJCQnVJUWdOZ0tnQVNBUUlCQkIwQUZxSWdJMkF1QUJJQkFnRUVHNEFXb2lDallDeUFFZ0VDQVFRWkFFYWlJSU5nSzhBU0FRSUJCQm9BRnFJZ1kyQXJBQklBUkJvQUZxSUFNZ0FpQUtJQVlRdVFvZ0JoQVdJQW9RRmlBQ0VCWWdBeEFXSUJCQitBQnFJZ01nQkJERERTQVFRWkFCYWlBSUlBTVE2dzBnQXhBV0lCQW9BcFFCSVFJZ0VDZ0NrQUVoQXd3QkN5QURLQUlBSWdvZ0F5Z0NCQ0lHUndSQUlBb2dCallDQ0FzZ0EwRUlhaUVEREFFTEN3TkFJQUlnQTBjRVFDQURLQUlBSUFNb0FnUTJBZ3dnQTBFSWFpRUREQUVMQ3lBUVFlQUFhaUlESUFRUXd3MGdFRUh3Z3lBMkFrZ2dFRUh3Z3lBMkFqQWdFRUdraFNBMkFoZ2dFRUc0aENBMkFnQWdFQ0FRUWNnQWFpSUNOZ0pZSUJBZ0VFRXdhaUlLTmdKQUlCQWdFRUVZYWlJR05nSW9JQkFnRUVHQUJHbzJBaHdnRUNBUU5nSVFJQVJCMEFCcUlBTWdBaUFLSUFZZ0VCQ1NGaUFRRUJZZ0JoQVdJQW9RRmlBQ0VCWWdBeEFXSUJCQmtBRnFFRElhSUJCQitBSnFFRElhQ3lNQVFTQnJJZ29rQUNBS1FRaHFRUVJ5SVFrZ0JCRFVGU0VDSUJCQmdBUnFJaGNpQXlnQ0JDRUxJQU1vQWdBaEJnSkFBa0FEUUNBR0lBdEhCRUFnQmlnQ0JDRU1JQVlvQWdBaEVTQUNJUU1EUUNBQ0lBTW9BZ1FpQTBZRVFDQUdRUWhxSVFZTUF3c0NRQ0FLUVFocUlBTkJDR29RbEJZaUNDZ0NBRUVEUncwQUlBZ29BaEFvQWdBZ0RFY05BQ0FJRU1ZRktBSUVRUVJyS0FJQUlnZ29BZ0JCQWtjTkJDQUtJQVFnRVJERURTQUlJQW9vQWdBUWhBVUxJQWtRTWhvTUFBc0FDd3NnQ2tFZ2FpUUFEQUVMUWVyTUEwR0Rxd0pCbUFOQmdxd0JFQUFBQ3lNQVFaQURheUlOSkFBZ0RVSUFOd0tFQXlBTklBMUJnQU5xUVFSeU5nS0FBeUFYS0FJRUlRSWdGeWdDQUNFREFrQURRQ0FDSUFOSEJFQWdEU0FES1FJQUlpOCtBcEFCSUEwZ0wwSWdpS2NpQ2pZQ2dBRWdCQ0FLUVFJUTB4VUVRQ0FOUWNBQmFpQU5RWUFEYWlBTlFZQUJhaENURmlBTlFaQUJhaENXQVNBRFFRaHFJUU1NQWdVZ0RVSEFBV29pQWlBRlFYVWdCU0FOS0FLUUFSQWdFQkFnQWtIai9RZ1FEaG9nRFVHd0FXb2lDaUFGSUEwb0FwQUJFQ29nQWlBS0VCSWFJQUpCMWRzTEVBNGFJQTFCb0FGcUlnWWdCU0FOS0FLQUFSQXFJQUlnQmhBU0dpQUNRYS9MQnhBT0dpQU5LQUw4QWlFRElBWVFEeG9nQ2hBUEdpQUNFQkVNQXdzQUN3c2dCQkNwQ2lJREtBSUVJUW9nQXlnQ0FDRURBMEFnQXlBS1J3UkFBa0FnQXlnQ0FDSUNMUUF0UlEwQUlBSXRBQ2hCQkhGRkRRQWdEU0FDS0FJQU5nS2dBU0FOUVlBRGFpQU5RYUFCYWhDVEZpZ0NEQ0lHUVFGR0RRQWdEVUhBQVdvaUFpQUZRWFVnQlNBTktBS2dBUkFnRUJBZ0FrSFkrZ2tRRGhvZ0RVR3dBV29pQ2lBRklBMG9BcUFCRUNvZ0FpQUtFQklhSUFKQnVjRUpFQTRhSUFJZ0JoQWhHaUFDUWU2dUJCQU9HaUFOS0FMOEFpRURJQW9RRHhvZ0FoQVJEQU1MSUFOQkJHb2hBd3dCQ3dzZ0RVR3dBV3BCQkhJaEh5QUVFTlFWSWlFaEZBTkFJQU1oQmdKQUEwQWdGQ2dDQkNJVUlDRkdEUUVnRkVFSWFpSVRLQUlRSWdndEFDMUZEUUFMSUJNb0FoUWlDMFVFUUNBTlFiQUJhaUlLRUZVZ0RVR2dBV29pQmhCVklBMUJrQUZxSWdrUVZTQU5RY0FCYWlJQ0lCTW9BZ0FRN3cwZ0RTQUpOZ0tJQVNBTklBWTJBb1FCSUEwZ0NqWUNnQUVnRFVHQUFXb2lDeUFDRU8wTklBSVE3QTBnQWlBRlFYOGdCU0FJS0FJQUVDQVFFQ0FOUVJCcUlneEJxdEFKSUFvUXhBRWdEVUVnYWlJUklBeEJyNllLRUMwZ0RVRXdhaUlQSUJFZ0JoQk9JQTFCUUdzaUV5QVBRZmZ3REJBdElBMGdCU0FJS0FJQUVDb2dEVUhRQUdvaUNDQVRJQTBRVGlBTlFlQUFhaUlVSUFoQnd0OEtFQzBnRFVId0FHb2lGU0FVSUFrUVRpQUxJQlZCMmNVSEVDMGdBaUFMRUJJYUlBMG9BdndDSVFNZ0N4QVBHaUFWRUE4YUlCUVFEeG9nQ0JBUEdpQU5FQThhSUJNUUR4b2dEeEFQR2lBUkVBOGFJQXdRRHhvZ0FoQVJJQWtRRHhvZ0JoQVBHaUFLRUE4YURBTUxJQWdnQ3hESEJVVUVRQ0FOUWNBQmFpSUNJQVZCZFNBRklBc29BZ0FRSUJBUUlBMUJvQUZxSWdvZ0JTQUlLQUlBRUNvZ0RVR1FBV29pQmlBRklBc29BZ0FRS2lBTlFiQUJhaUlJSUJNZ0NpQUdJQTFCZ0FGcVFZbmhBeEFVSWdrUTdnMGdBaUFJRUJJYUlBMG9BdndDSVFNZ0NCQVBHaUFKRUE4YUlBWVFEeG9nQ2hBUEdpQUNFQkVNQXdzQ1FDQUlJQXRIRFFBZ0V5Z0NBRUY5Y1VFQlJ3MEFJQTFCd0FGcUlnSWdCVUYxSUFVZ0NDZ0NBQkFnRUJBZ0RVR2dBV29pQ2lBRklBZ29BZ0FRS2lBTlFaQUJhaUlHSUFVZ0NDZ0NBQkFxSUExQnNBRnFJZ2dnRXlBS0lBWWdEVUdBQVdwQjRlQURFQlFpQ1JEdURTQUNJQWdRRWhvZ0RTZ0MvQUloQXlBSUVBOGFJQWtRRHhvZ0JoQVBHaUFLRUE4YUlBSVFFUXdEQ3dKQUlCTW9BZ0JCQWtjTkFDQUxJQWdRMnhVTkFDQU5RY0FCYWlJQ0lBVkJkU0FGSUFzb0FnQVFJQkFRSUExQm9BRnFJZ29nQlNBSUtBSUFFQ29nRFVHUUFXb2lCaUFGSUFzb0FnQVFLaUFOUWJBQmFpSUlJQk1nQ2lBR0lBMUJnQUZxUWNZWUVCUWlDUkR1RFNBQ0lBZ1FFaG9nRFNnQy9BSWhBeUFJRUE4YUlBa1FEeG9nQmhBUEdpQUtFQThhSUFJUUVRd0RDMEVBSVJFakFFRWdheUlLSkFBZ0V5Z0NFQ0VXSUJNb0FnQWlBMEVEUnlJYVJRUkFJQk1vQWdRb0FnQW9BaEFoRVFzZ0V5Z0NGQ0ViSUFwQkFEWUNHQ0FLUWdBM0F4QWdDaUFXTmdJQUlBcEJFR29nQ2hEOUFpQU5RYkFCYWlJSklBbEJCR28yQWdBZ0NVSUFOd0lFSUFOQkFrY2hIUU5BSUFvb0FoUWlBeUFLS0FJUVJ3UkFJQU5CQkdzaUFpZ0NBQ0VESUFvZ0FqWUNGQ0FLSUFNMkFnd2dGaUFERU1jRlJRMEJBa0FnSFVVRVFDQWJJQW9vQWd3UTJ4VU5BUXNnR3lBS0tBSU1FTWNGSWdNZ0duSkZCRUFnRVNBS0tBSU1FTWNGRFFNTUFRc2dBdzBDQ3lNQVFSQnJJaFVrQUNNQVFSQnJJZzhrQUNBSlFRUnFJUUlDUUNBSktBSUVJZ3hGQkVBZ0FpRUREQUVMSUFvb0Fnd29BZ0FoR0FOQUlBd2lBeWdDRUNnQ0FDSU1JQmhMQkVBZ0F5SUNLQUlBSWd3TkFRd0NDeUFNSUJoUERRRWdBMEVFYWlFQ0lBTW9BZ1FpREEwQUN3c2dEeUFETmdJTUlCVWdBaWdDQUNJREJIOUJBQVZCRkJBVklRTWdEeUFKUVFScU5nSUVJQU1nQ2lnQ0REWUNFQ0FQUVFFNkFBZ2dDU0FQS0FJTUlBSWdBeEQ0QWlBUFFRQTJBZ0FnRHhDTEFVRUJDem9BRENBVklBTTJBZ2dnRDBFUWFpUUFJQW9nRlNnQ0NEWUNBQ0FLSUJVdEFBdzZBQVFnRlVFUWFpUUFJQW90QUFSRkRRRWdDaWdDRENJREtBSklJUXdnQXlnQ1JDRUNBMEFnQWlBTVJnMENJQW9nQWlnQ0FEWUNBQ0FDUVFScUlRSWdDa0VRYWlBS0VNOEJEQUFMQUFzTElBcEJFR29RTWhvZ0NrRWdhaVFBSUExQm9BRnFJZ0lRVlNBTlFaQUJhaUlLRUZVZ0RVR0FBV29pQ1JCVklBMUJ3QUZxSWdNZ0V5Z0NBQkR2RFNBTklBazJBbmdnRFNBS05nSjBJQTBnQWpZQ2NDQU5RZkFBYWlBREVPME5JQU1RN0EwZ0RTZ0NzQUVoRlFKL0EwQWdGU0FmUndSQUlCVW9BaEFpQWlnQ0lDRWRJQUlvQWh3aEF3TkFJQU1nSFVjRVFDQU5JQU1vQWdBMkFsQUNRQ0FOUWJBQmFpQU5RZEFBYWhDNkNnMEFJQTBvQWxBaENrRUFJUkVqQUVFUWF5SU1KQUFDUUFKQUFrQUNRQUpBQWtBQ1FDQVRLQUlBUVFGckRnUUVBZ0VBQXd0QmkrVURRY1NZQWtHSEFVRzM1UUFRQUFBTFFRRWhEeUFUS0FJUUtBSTBJQVVvQXFBQklnbHJRY3dBYlVITUFHd2dDV3BCekFCcklnbEJBQkFiSVJFZ0NVRUJFQnNoQ1NBUklBb29BZ0FpQ2tZTkJDQUpJQXBIRFFNTUJBdEJBU0VQSUJNb0FnUW9BZ0FvQWhBaUNTZ0NOQ0FGS0FLZ0FTSVJhMEhNQUcxQnpBQnNJQkZxUWN3QWEwRUFFQnNoRVNBSklBcEdEUU1nQ2lnQ0FDQVJSZzBEREFJTFFkL1hBa0hFbUFKQm5RRkJ0K1VBRUFBQUN3SkFJQk1vQWhRZ0NrWU5BQ0FUS0FJUUloc1ExeFVoRmdOQUlCWkZEUUlDUUNBRktBS2dBU0lKSUJZb0FqUWlHQ0FKYTBITUFHMUJBV3RCekFCc2FpSUpMd0VlSWc5QjlnRkhCRUFnR3lnQ05DOEJIa0g3QVVZZ0QwSDNBVWR5RFFFZ0dDOEJIa0g3QVVjTkFRc2dDVUVBRUJzaEdpQU1RUWhxSUFrb0FqZ2dHaENuQ2lBTUtBSUlJQnNReHdVTkFBSkFJQkZCQVhFRVFDQUpMd0VlSWc5QjlnRkhEUUVMSUFvb0FnQWdHa1lOQXlBSkx3RWVJZzlCOWdGSERRQkJBU0VQSUFsQkFSQWJJQW9vQWdCR0RRVWdDUzhCSGlFUEN5QVBRZllCUmcwRElCZ3ZBUjVCK3dGR0lCRnlJUkVMSUJZUTF4VWhGZ3dBQ3dBTFFRRWhEd3dCQzBFQUlROExJQXhCRUdva0FDQVBEUUFnRFVIQUFXb2lDaUFGUVhVZ0JTQUNLQUlBRUNBUUVDQUtRYlhiQ3hBT0dpQU5RZkFBYWlJR0lBVWdBaWdDQUJBcUlBb2dCaEFTR2lBS1FaeS9DaEFPR2lBS0lBMUJvQUZxRUJJYUlBcEJwTnNMRUE0YUlBMUI0QUJxSWdJZ0JTQUlLQUlBRUNvZ0NpQUNFQklhSUFwQmwrVUFFQTRhSUEwb0F2d0NJUU1nQWhBUEdpQUdFQThhSUFvUUVVRUFEQVVMSUFOQkJHb2hBd3dCQ3dzQ1FDQUNJQWhHRFFBZ0FpZ0NGQ0VLSUFJb0FoQWhBd05BSUFNZ0NrY0VRQ0FOSUFNb0FnQWlDVFlDY0FKQUlBa3RBQzFGRFFBZ0RVR3dBV29nRFVId0FHb1F1Z29OQUNBTlFjQUJhaUlDSUFWQmRTQUZJQTBvQW5Bb0FnQVFJQkFRSUFKQnRkc0xFQTRhSUFJZ0RTZ0NjQ2dDQUJBaEdpQUNRZTNBQ2hBT0dpQUNJQTFCb0FGcUVCSWFJQUpCMGNBS0VBNGFJQUlnRFVHUUFXb1FFaG9nQWtHNjJ3c1FEaG9nQWlBSUtBSUFFQ0VhSUEwb0F2d0NJUU1nQWhBUlFRQU1CZ3NnQTBFRWFpRUREQUVMQ3lBQ0xRQW9RUVp4UlEwQUlBVW9BcUFCSWdNZ0FpZ0NOQ0FEYTBITUFHMUJBV3RCekFCc2FpSURMd0VlUWY3L0EzRkI5Z0ZIRFFBZ0RVSEFBV29nQkNBRFFRQVFHeUlERU1RTklBMGdEU2dDd0FFaUNqWUNRQ0FLTFFBdFJRMEFJQTFCc0FGcUlBMUJRR3NRdWdvTkFDQU5RY0FCYWlJS0lBVkJkU0FGSUFJb0FnQVFJQkFRSUFwQnlaOEtFQTRhSUExQjhBQnFJZ1lnQlNBQ0tBSUFFQ29nQ2lBR0VCSWFJQXBCdHNJS0VBNGFJQW9nRFVHZ0FXb1FFaG9nQ2tHS3dna1FEaG9nRFVIZ0FHb2lBaUFGSUFnb0FnQVFLaUFLSUFJUUVob2dDa0c1b1FvUURob2dEVUhRQUdvaUNDQUZJQU1RS2lBS0lBZ1FFaG9nQ2tHT05SQU9HaUFOS0FMOEFpRURJQWdRRHhvZ0FoQVBHaUFHRUE4YUlBb1FFVUVBREFNTElCVVFUQ0VWREFFTEN3SkFJQk1vQWdCQkEwY05BQ0FGSUFnb0FqUWdCU2dDb0FFaUEydEJ6QUJ0UWN3QWJDQURha0hNQUd0QkFSQWJJZ29RSUNFRElBb2dDQ2dDQUVZTkFDQURJQVVvQXFBQklnTnJRY3dBYlVITUFHd2dBMm9vQW9nQklnTW9BaEFoRVNBREtBSVVJUUlEUUNBQ0lCRkdEUUVnRFNBUktBSUFJZ2syQWtBZ0Z5Z0NCQ0VNSUJjb0FnQWhBMEVBSVE4RFFDQURJQXhHQkVBZ0RVR3dBV29nRFVGQWF4QzZDa0VBUnlBUGNrRUJjUVJBSUJGQkJHb2hFUXdEQ3dVZ0F5a0NBQ0l2UWlDSXB5QUtSZ1JBSUFrb0FnQWdMNmRHSUE5eUlROExJQU5CQ0dvaEF3d0JDd3NMSUExQndBRnFJZ0lnQlVGMUlBMG9Ba0FvQWpRUUVDQUNRYUNqQ2hBT0dpQU5RZkFBYWlJR0lBVWdEU2dDUUNnQ0FCQXFJQUlnQmhBU0dpQUNRZUxPQ1JBT0dpQU5RZUFBYWlJSklBVWdDaEFxSUFJZ0NSQVNHaUFDUWIzUENSQU9HaUFOUWRBQWFpSUtJQVVnQ0NnQ0FCQXFJQUlnQ2hBU0dpQU5LQUw4QWlFRElBb1FEeG9nQ1JBUEdpQUdFQThhSUFJUUVVRUFEQUVMQWtBZ0V5Z0NBRUVCUncwQUlBZ29BalFpQ1M4QkhrSDdBVWNOQUVFQUFuOGdDQ0VNUVFBaEFpTUFRYkFDYXlJUEpBQWdEMElBTndPZ0FpQVBRZ0EzQTVnQ0lBOUJnSUNBL0FNMkFxZ0NRUUVoQ2dOQUlBa29BaEFnQ1NnQ0RHdEJCSFVnQ2swRVFDQVBRZ0EzQW93Q0lBOGdEMEdJQW1wQkJISWlGallDaUFKQkF5RUtJQWxCQVJBYklSc0RRQ0FLSWhFZ0NTZ0NFQ0FKS0FJTWEwRUVkU0lhU1FSQUlCRkJBbW9oQ2lBSklCRVFHeUFiUncwQkN3c2dEMElBTndQNEFTQVBRZ0EzQS9BQklBOUJnSUNBL0FNMkFvQUNRUUVoQ0FKQUFrQURRQ0FKS0FJUUlBa29BZ3hyUVFSMUlBaExCRUFnRHlBSklBZ1FHeUlETmdMc0FTQUxLQUlBSUFOSEJFQWdEMEVBTmdMb0FRSkFJQTlCOEFGcUlBOUI3QUZxRU93QklnTkZCRUFnRDBFb2FpQUVJQThvQXV3QkVNUU5JQThvQWlnaENnSkFJQXd0QUMxRkRRQWdDaTBBTFVVTkFDQU1JQW9ReHdVTkFDQVBRU2hxSWdNZ0JVRjFJQXdvQWpBUUVDQURRYlA4Q1JBT0dpQVBRUmhxSWdJZ0JTQU1LQUlBRUNvZ0F5QUNFQklhSUFOQjlzOEpFQTRhSUE5QkNHb2lDQ0FGSUE4b0F1d0JFQ29nQXlBSUVCSWFJQThvQXVRQklRb2dDQkFQR2lBQ0VBOGFJQU1RRVF3SEN5QVBRWmdDYWlFWVFRQWhBeU1BUWFBQ2F5SVRKQUFnRXlBS05nS2NBaUFUUVFBMkFwZ0NJQk5DQURjRGtBSWdFMEdRQW1vZ0UwR2NBbW9RendFZ0UwSUFOd09BQWlBVFFnQTNBL2dCSUJOQmdJQ0EvQU0yQW9nQ0lCTW9BcHdDSWdvdEFDMGhIU0FFSUFvUW9BWWhGUUpBQTBBZ0V5Z0NsQUlpQ2lBVEtBS1FBa1lOQVNBS1FRUnJJaUlvQWdBaENpQVRJQ0kyQXBRQ0lCTWdDallDOUFFZ0NpQUxSZzBBSUJOQk1Hb2dFMEg0QVdvZ0UwSDBBV29RcXdVZ0V5MEFORVVOQUFKQUlCMUZEUUFnRXlnQzlBRWlDaTBBTFVVTkFDQVRLQUtjQWlBS0VNY0ZSUTBBSUJNb0F2UUJJZ29vQWlBaElpQUtLQUljSVFvRFFDQUtJQ0pHRFFJZ0V5QUtLQUlBTmdJd0lBcEJCR29oQ2lBVFFaQUNhaUFUUVRCcUVNOEJEQUFMQUFzZ0V5QVRLQUwwQVNnQ0FEWUNNQ0FZSUJOQk1Hb1FxUUpGQkVBZ0JDQVRLQUwwQVJDZ0JpSUtJQlZJRFFFZ0NpQVZSZ1JBSUJNb0F2UUJMUUFvUVNCeERRSUxJQk5CTUdvaUNpQUZRWFVnRXlnQ25BSW9BakFRRUNBS1FhblVDUkFPR2lBVFFTQnFJaFVnQlNBVEtBS2NBaWdDQUJBcUlBb2dGUkFTR2lBS1FldWZDaEFPR2lBVFFSQnFJaGdnQlNBVEtBTDBBU2dDQUJBcUlBb2dHQkFTR2lBS1FjRzRDQkFPR2lBVEtBTHNBU0VESUJnUUR4b2dGUkFQR2lBS0VCRU1BZ3NnRHlnQzZBRWlDa1VFUUNBVEtBTDBBU0lLSUJNb0Fwd0NSZzBCSUE4Z0NpZ0NBRFlDNkFFTUFRc2dDaUFUS0FMMEFTZ0NBRVlOQUFzZ0UwRXdhaUlLSUFWQmRTQVRLQUtjQWlnQ01CQVFJQXBCcWRRSkVBNGFJQk5CSUdvaUZTQUZJQk1vQXB3Q0tBSUFFQ29nQ2lBVkVCSWFJQXBCOU5JSkVBNGFJQk5CRUdvaUdDQUZJQThvQXVnQkVDb2dDaUFZRUJJYUlBcEI2YzRLRUE0YUlCTWdCU0FUS0FMMEFTZ0NBQkFxSUFvZ0V4QVNHaUFUS0FMc0FTRURJQk1RRHhvZ0dCQVBHaUFWRUE4YUlBb1FFUXNnRTBINEFXb1FUeUFUUVpBQ2FoQXlHaUFUUWFBQ2FpUUFJQU1pQ2cwR0FrQWdEeWdDNkFGRkJFQkJBQ0VLREFFTEFrQUNRQ0FXSUE5QjZBRnFJQTlCaUFKcUlnTW9BZ1FnQTBFRWFoRGVGeUlUUmdSQUlBOG9BdWdCSVFNTUFRc2dFeWdDRUNJS0lBOG9BdWdCSWdOR0RRRUxJQTlCQVRZQ0xDQVBJQU0yQWlnakFFRVFheUlLSkFBakFFRWdheUlESkFBZ0NpQVBRWWdDYWlJWUlCTWdBMEVjYWlBRFFSaHFJQTlCS0dvUWtnNGlIU2dDQUNJVEJIOUJBQVZCR0JBVklSTWdBMEVJYWlJVklCaEJCR28yQWdRZ0ZTQVROZ0lBSUJNZ0R5Z0NLRFlDRUNBVElBOG9BaXcyQWhRZ0ZVRUJPZ0FJSUJnZ0F5Z0NIQ0FkSUFNb0FnZ1ErQUlnQXlnQ0NDRVRJQU5CQURZQ0NDQVZFSXNCUVFFTE9nQU1JQW9nRXpZQ0NDQURRU0JxSkFBZ0NpZ0NDQm9nQ2tFUWFpUUFJQThvQXVnQklRb01BUXNnRXlBVEtBSVVRUUZxTmdJVUN5QVBJQW8yQWl3Z0R5QVBLQUxzQVRZQ0tDQVBRUmhxSUE5QjhBRnFJQTlCS0dvUStSWWdEeWdDNkFFaEF3d0JDeUFQSUFNb0Fnd2lBellDNkFFTElBTWdHMGNnRVNBYVNYSkZCRUFnRHlBQ05nTG9BU0FDSVFNTEFrQWdBMFVFUUNBQ0lRTU1BUXNnQ0NJS1FRRkdEUUFDUUFOQUlBcEJBbW9pQ2lBSktBSVFJQWtvQWd4clFRUjFJZ05QRFFFZ0R5Z0M3QUVnQ1NBS0VCdEdEUUFMSUFrb0FoQWdDU2dDREd0QkJIVWhBd3NnQXlBS1NRMEVJQUloQXlBUEtBTG9BU0FKSUFvUUcwY05CQXNnQXlFQ0N5QUlRUUpxSVFnTUFRc0xJQThvQW9nQ0lRTURRQ0FESUJaR0JFQkJBQ0VLREFNTElBTW9BaFJCQWs4RVFDQVBRU2hxSWdJZ0JVRjFJQVVnQXlnQ0VCQWdFQkFnQWtIZTB3a1FEaG9nRDBFWWFpSUlJQVVnQXlnQ0VCQXFJQUlnQ0JBU0dpQVBLQUxrQVNFS0lBZ1FEeG9nQWhBUkRBTUZJQU1RVENFRERBRUxBQXNBQ3lBUFFTaHFJZ01nQlVGMUlBa1FFQ0FEUWFuVUNSQU9HaUFQUVJocUlnSWdCU0FQS0FMc0FSQXFJQU1nQWhBU0dpQURRYXpUQ1JBT0dpQVBRUWhxSWdnZ0JTQVBLQUxvQVJBcUlBTWdDQkFTR2lBRFFjNHZFQTRhSUE4b0F1UUJJUW9nQ0JBUEdpQUNFQThhSUFNUUVRc2dEMEh3QVdvUVR5QVBRWWdDYWlBUEtBS01BaEN2RGlBUFFaZ0NhaEJQSUE5QnNBSnFKQUFnQ2d3Q0N5QVBJQWtnQ2hBYklnTTJBdkFCSUFzb0FnQWdBMGNFUUNBUFFTaHFJQTlCbUFKcUlBOUI4QUZxRUpZQkN5QUtRUUpxSVFvTUFBc0FDeUlERFFFYUN5QUdJUU5CQVFzaEFpQU5RWUFCYWhBUEdpQU5RWkFCYWhBUEdpQU5RYUFCYWhBUEdpQU5RYkFCYWlBTktBSzBBUkRtRFNBQ0RRRU1BZ3NMUVFBaEFpTUFRZUFCYXlJSUpBQWdDRUlBTndQUUFTQUlRZ0EzQThnQklBaEJnSUNBL0FNMkF0Z0JJQkFvQXRRRklRTUNRQU5BSUFNZ0VDZ0MwQVZHRFFFZ0EwRUVheUlES0FJQUlnc29BalFpQ1VVTkFFRUFJUW9DUUFKQUFrQUNRQ0FKSUFVb0FxQUJJZ1pyUWN3QWJVSE1BR3dnQm1wQnpBQnJJZ1l2QVI1QjlnRnJEZ0lCQUFNTElBZ2dCa0VBRUJzMkFzUUJJQWdnQ0VISUFXb2dDRUhFQVdvUWxnRU1BUXNnQ0NBR1FRQVFHellDeEFFZ0NDQUlRY2dCYWlJS0lBaEJ4QUZxSWd3UWxnRWdDQ0FHUVFFUUd6WUN4QUVnQ0NBS0lBd1FsZ0VMSUFZaENnc2dDeTBBTFVVTkFBSkFBa0FnQ1M4QkhrSDZBV3NPQWdBQkFnc2dDQ0FKUVFFUUd6WUN4QUVnQ0NBSlFRSVFHellDd0FFZ0NDQUlRY2dCYWlJTElBaEJ4QUZxRUpZQklBZ3RBQVFoQmlBSUlBc2dDRUhBQVdvUWxnRWdDQzBBQkNFTEFrQWdDZ1JBSUF0RklBWkZJQW92QVI1QjlnRkhjbklOQXd3QkN5QUdSU0FMUlhJTkFnc2dDQ0FGUVhVZ0NSQVFJQWhCOVBNRUVBNGFJQWdvQXJ3QklRSWdDQkFSREFJTElBb0VRRUVCSVFvRFFDQUtJQWtvQWhBZ0NTZ0NER3RCQkhWUERRSWdDQ0FKSUFvUUd6WUN4QUVnQ2tFQ2FpRUtJQWdnQ0VISUFXb2dDRUhFQVdvUWxnRU1BQXNBQ3dzZ0NDQUZRWFVnQ1JBUUlBaEJpc3NDRUE0YUlBZ29BcndCSVFJZ0NCQVJDeUFJUWNnQmFoQlBJQWhCNEFGcUpBQWdBaUVEQ3lBTlFZQURhaUFOS0FLRUF4RG5EU0FOUVpBRGFpUUFJQmNRTWhvZ0VFR1FCR29RTWhwQkFDQUREUUVhQ3lBQklRTkJBUXNoQVNBUVFkQUZhaEF5R2lBQkRRRWdBeUVIQ3lBUVFlQUZhaVFBSUFjTUFnc2dCRUhFQTJvaEJDQURJUUVNQUFzQUN5SUJEUUVqQUVHZ0Ftc2lBeVFBSUFOQkFEWUNtQUlnQTBJQU53T1FBaUFEUWdBM0E0QUNJQU5DQURjRCtBRWdBMEdBZ0lEOEF6WUNpQUlnQlNnQ3BBRWhDQ0FGS0FLZ0FTRUJBa0FDUUFOQUlBRWdDRWNFUUFKQUlBRW9BaWhGRFFBZ0FTZ0NPQ0lFUlEwQUlBRW9Ba1FoQ2lBQktBSkFJUWNnQVNnQ1BDSUdCRUFEUUNBSElBcEdEUUlnQXlBSEtBSUFJZ0kyQXZRQkFrQWdBaWdDUENJRVJRMEFJQVF0QUN4RkRRQWdBaThCSGtIMUFVWUVRQ0FESUFJb0FpZzJBaUFnQTBFd2FpQURRZmdCYWlBRFFTQnFFSllCSUFNdEFEUkZEUUVnQTBHUUFtb2dBMEgwQVdvUXp3RU1BUXNnQmlBRUVOd1ZSUTBHQ3lBSFFRaHFJUWNNQUFzQUN3TkFJQWNnQ2tZTkFTQUhLQUlBSVFZZ0IwRUlhaUVISUFZb0FqZ2lBa1VnQWlBRVJuSU5BQXNnQTBFd2FpSUNJQVZCZGlBRklBUW9BZ0FRSUJBUUlBSkJ5TU1MRUE0YUlBTkJJR29pQ2lBRklBRW9BaWdRS2lBQ0lBb1FFaG9nQWtHVGh3b1FEaG9nQTBFUWFpSUJJQVVnQmlnQ09DZ0NBQkFxSUFJZ0FSQVNHaUFDUWRPSENoQU9HaUFESUFVZ0JDZ0NBQkFxSUFJZ0F4QVNHaUFES0FMc0FTRUhJQU1RRHhvZ0FSQVBHaUFLRUE4YUlBSVFFUXdFQ3lBQlFjd0FhaUVCREFFTEN5QURLQUtVQWlFR0lBTW9BcEFDSVFFRFFDQUJJQVpHQkVCQkFDRUhEQU1MQWtBZ0FTZ0NBQ0lFS0FJOExRQXNSUTBBUVFNaEFnTkFJQUlnQkNnQ0VDQUVLQUlNYTBFRWRVOE5BU0FGSUFKQkFuUWlDaUFFS0FJQWFpZ0NBQkFnSVFjZ0EwRXdhaUFFS0FJNElBb2dCQ2dDQUdvb0FnUVFwd29DUUFKQUlBY29BandpQ0VVTkFDQURLQUl3SWdvdEFDeEZEUUFnQ0NBS0VOd1ZSUTBCQ3lBQ1FRSnFJUUlNQVFzTElBTkJNR29pQVNBRlFYWWdCQkFRSUFGQnJZWUtFQTRhSUFOQklHb2lBaUFGSUFRb0FpZ1FLaUFCSUFJUUVob2dBVUhHd3dzUURob2dBMEVRYWlJRUlBVWdCeWdDS0JBcUlBRWdCQkFTR2lBQlFlYkpDUkFPR2lBRElBVWdDaWdDQUJBcUlBRWdBeEFTR2lBREtBTHNBU0VISUFNUUR4b2dCQkFQR2lBQ0VBOGFJQUVRRVF3REN5QUJRUVJxSVFFTUFBc0FDeUFEUVRCcUlnSWdCVUYySUFRb0FqQVFFQ0FDUWNqREN4QU9HaUFEUVNCcUlnb2dCU0FCS0FJb0VDb2dBaUFLRUJJYUlBSkJ4YUFLRUE0YUlBTkJFR29pQVNBRklBWW9BZ0FRS2lBQ0lBRVFFaG9nQWtHZ29Bb1FEaG9nQXlBRklBUW9BZ0FRS2lBQ0lBTVFFaG9nQXlnQzdBRWhCeUFERUE4YUlBRVFEeG9nQ2hBUEdpQUNFQkVMSUFOQitBRnFFRThnQTBHUUFtb1FNaG9nQTBHZ0Ftb2tBQ0FISWdFTkFVRUFJUU1qQUVIZ0Eyc2lCaVFBSUFWQmpBSnFJUUlDUUFKQUEwQWdBaWdDQUNJQ1JRMEJJQVVnQWlnQ0NDSUVFQ0FpQVNnQ0JDQUJLQUlBYTBFVVJ3MEFJQVFnQlJDT0ZrVU5BQXNnQmtHZ0Ftb2lBaUFGUVhZZ0FSQVFJQUpCa2ZZSEVBNGFJQVlvQXR3RElRTWdBaEFSSUFNTkFRc2dCVUdBQVdvaEd5QUZLQUxFQVNFZUlBWkI4QUJxUVFSeUlSOGdCa0VZYWtFRWNpRWhJQVpCTUdwQkJISWhIU0FHUWFBQ2FrRUVjaUVpSUFVb0FzQUJJUkFEUUFKQUlCQWdIa1lOQUNBRklCQW9BZ0FpQkJEZURTSUJLQUlFSVNRZ0FTZ0NBQ0VKUVFBaEVVRUFJUWRCQUNFQlFRQWhERUVBSVJVRFFDQUpJQ1JIQkVBZ0JrSUFOd09nQVNBR1FnQTNBNWdCSUFaQmdJQ0EvQU0yQXFnQklBa29BaEFoSlNBSktBSU1JUThEUUFKQUFuOENRQUpBQWtBZ0R5QWxSZzBBSUFZZ0JTQVBLQUlBSWcwUUlDSUNOZ0lVQWtBZ0FnUkFJQUl2QVI1Qk8wWU5BUXNnQmtHZ0Ftb2lDaUFGUVhZZ0FoQVFJQXBCcDcwQ0VBNGFJQW9nQmlnQ0ZDOEJIaEFwRUE0YUlBcEIvSmNJRUE0YUlBWW9BdHdESVFNZ0NoQVJEQU1MSUFKQkFoQWJJUWdDUUNBRktBSVVRWUNJQkU4RVFDQUlRUWRHQkVBZ0JrR2dBbW9pQWlBRlFYWWdCaWdDRkJBUUlBSkJ4cndCRUE0YUlBWW9BdHdESVFNZ0FoQVJEQVVMSUFaQm9BSnFJQVpCbUFGcUlBWkJGR29RcXdVZ0JpMEFwQUlOQVNBR1FhQUNhaUlDSUFWQmRpQUdLQUlVRUJBZ0FrR2F4QW9RRGhvZ0JrRXdhaUlLSUFVZ0RSQXFJQUlnQ2hBU0dpQUNRZVh2QkJBT0dpQUdLQUxjQXlFRElBb1FEeG9nQWhBUkRBUUxJQWhCZlhGQkFVWU5BQ0FHUWFBQ2FpSUNJQVZCZGlBR0tBSVVFQkFnQWtIWTFna1FEaG9nQWlBSUVDRWFJQUpCMHRVS0VBNGFJQUlnQkJBaEdpQUNRZnlYQ0JBT0dpQUdLQUxjQXlFRElBSVFFUXdEQ3dKQUFrQWdCU0FGSUFZb0FoUW9BZ0FvQWdRUUlDZ0NBQ2dDRENJTEVDQWlDa1VOQUNBS0x3RWVRUjVIRFFBZ0JTQUxFTjRCSWdKQkJHb2hFeUFDS0FJQUlRSURRQ0FDSUJOR0RRRUNRQ0FDS0FJUVFRdEdCRUFnQWlnQ0lFRi9SdzBCQ3lBQ0VFd2hBZ3dCQ3dzZ0JTQUxFTjRCSWdKQkJHb2hFeUFDS0FJQUlRSURRQ0FDSUJOR0RRUWdBaWdDRUVFQ1J3UkFJQUlRVENFQ0RBRUxDeUFWSUFoQkFVWnFJaFZCQVVvZ0RDQUlRUU5HYWlJTVFRRktjZzBDSUEwZ0JSQ05GaUlDUlEwQklBSWhBd3dFQ3lBRklBMFEzZ0VpQWtFRWFpRVRJQUlvQWdBaEFnTkFJQUlnRTBZTkFTQUNLQUlRUVF0SEJFQWdBaEJNSVFJTUFRc0xJQTBnQlJDTkZpSUNSUTBBSUFJaEF3d0RDd0pBSUFoQkJFY05BQ0FCUVFGcUlRRWdDa1VOQUNBS0x3RWVRUjVIRFFBZ0MwRUNJQVVRdXdNZ0Iyb2hCeUFHS0FJVUtBSW9RUlFnQlJDN0F5QVJhaUVSQ3lBRktBSUFLQUlBRUVkRkRRUWdCU0FFRUtVR0lSTWdCa0VFTmdLZ0FpQVRJQVpCb0FKcUVNQURJUmdnQmtFQU5nS2dBaUFUUVFScUlSWWdFeUFHUWFBQ2FoREFBeUVtSUFVZ0JpZ0NGQ2dDS0JEZUFTSUNRUVJxSVNjZ0FpZ0NBQ0VDQTBBQ1FDQUNJQ2RIQkVBZ0JrRU9OZ0tnQWlBR1FRQTJBbUFnQmtJQU53TllJQ0lnQmtIWUFHb1FzQUVoRnlBR1FYODJBckFDQWtBQ1FDQUNRUkJxSWhRZ0JrR2dBbW9Rc1FoRkJFQWdCa0VOTmdJd0lBWkJBRFlDa0FFZ0JrSUFOd09JQVNBZElBWkJpQUZxRUxBQklSb2dCa0YvTmdKQUlCUWdCa0V3YWhDeENBMEJJQVpCRVRZQ0dDQUdRUUEyQWxBZ0JrSUFOd05JSUNFZ0JrSElBR29Rc0FFaEtDQUdRWDgyQWloQkFTRUtJQlFnQmtFWWFoQ3hDRVVFUUNBR1FSQTJBbkFnQmtFQU5nSVFJQVpDQURjRENDQWZJQVpCQ0dvaUtSQ3dBU0VxSUFaQmZ6WUNnQUVnRkNBR1FmQUFhaEN4Q0NFS0lDb1FNaG9nS1JBeUdnc2dLQkF5R2lBR1FjZ0FhaEF5R2lBYUVESWFJQVpCaUFGcUVESWFJQmNRTWhvZ0JrSFlBR29RTWhvZ0NnMENEQVFMSUJjUU1ob2dCa0hZQUdvUU1ob01BUXNnR2hBeUdpQUdRWWdCYWhBeUdpQVhFRElhSUFaQjJBQnFFRElhQ3dKQUFrQWdDRUVCYXc0REFBTUJBd3NnRmlBbVJnUkFJQk1vQWdoQkFra05Bd3NnQmtHZ0Ftb2lBaUFGUVhZZ0JpZ0NGQkFRSUFaQk1Hb2lDaUFGUWJvd0VEY2dBaUFLRUJJYUlBWkJHR29pQ0NBRklCUW9BZ0FRdndNZ0FpQUlFQklhSUFKQm1OUUtFQTRhSUFJZ0JCQWhHaUFDUWZ5WENCQU9HaUFHS0FMY0F5RURJQWdRRHhvZ0NoQVBHaUFDRUJFTUJnc2dGaUFZUmdSQUlCTW9BZ2hCQWtrTkFnc2dCa0dnQW1vaUFpQUZRWFlnQmlnQ0ZCQVFJQVpCTUdvaUNpQUZRYmt3RURjZ0FpQUtFQklhSUFaQkdHb2lDQ0FGSUJRb0FnQVF2d01nQWlBSUVCSWFJQUpCcU5NS0VBNGFJQUlnQkJBaEdpQUNRZnlYQ0JBT0dpQUdLQUxjQXlFRElBZ1FEeG9nQ2hBUEdpQUNFQkVNQlFzZ0JpZ0NGQ2dDS0VFT0lBVVF1d01nQ0VFQlIzSWdGaUFZUm5JTkJnSkFJQVVnQ3hCM0JFQWdCU0FMRUQ1QndBQkdEUUVMSUFVZ0N4REhBVVVOQndzZ0JrR2dBbW9pQWlBRlFYWWdCaWdDRkJBUUlBWkJNR29pQ2lBRlFZZ2xFRGNnQWlBS0VCSWFJQUpCbXN3S0VBNGFJQUlnRFJBaEdpQUNRWVhWQ2hBT0dpQUNJQVFRSVJvZ0FrSDhsd2dRRGhvZ0JpZ0MzQU1oQXlBS0VBOGFJQUlRRVF3RUN5QUNFRXdoQWd3QUN3QUxJQXhCQWtnZ0ZVRUJUSEZGQkVBZ0JrR2dBbW9pQWlBRlFYd2dCU0FFRUNBUUVDQUNRZWZWQ2hBT0dpQUNJQVFRSVJvZ0FrR1ZwZ2NRRGhvZ0JpZ0MzQU1oQXlBQ0VCRU1BZ3NnQlNBRUVONEJJZ0pCQkdvaENpQUNLQUlBSVFJRFFDQUNJQXBIQkVBZ0FpZ0NFRUVwUmdSQUlBWkJNR29pQ2lBQ0tBSVVJQUlvQWhoQkFSRG9EaUFHUWFBQ2FpSUNJQVZCZkNBRklBUVFJQkFRSUFKQjZLTU1FQTRhSUFJZ0NoQVNHaUFDUWJQWUNoQU9HaUFDSUFRUUlSb2dBa0hNMFFjUURob2dCaWdDM0FNaEF5QUNFQkVnQ2hBUEdnd0VCU0FDRUV3aEFnd0NDd0FMQzBFQklCdEJ6Q0lRYUVVZ0FVRUFUSElnQjBFQVRISU5BaG9nQVNBSFJ3UkFJQVpCb0FKcUlnSWdCVUY4SUFVZ0JCQWdFQkFnQWtIYzBRb1FEaG9nQWlBRUVDRWFJQUpCbGFZSEVBNGFJQVlvQXR3RElRTWdBaEFSREFJTElCRWdCeUlCUmlBQlFRSkpjZ1IvUVFFRklBWkJvQUpxSWdJZ0JVRjhJQVVnQkJBZ0VCQWdBa0g2endvUURob2dBaUFFRUNFYUlBSkJsYVlIRUE0YUlBWW9BdHdESVFNZ0FoQVJRUUFMREFJTElBWkJvQUpxSWdJZ0JVRnlJQVVnQ3hBZ0VCQWdCa0V3YWlJS0lBVkJ0eVlRTnlBQ0lBb1FFaG9nQWtIZTF3Y1FEaG9nQmlnQzNBTWhBeUFLRUE4YUlBSVFFUXRCQUFzaEFpQUpRUmhxSVFrZ0JrR1lBV29RVHlBQ0RRTWdBdzBHREFRTElBOUJCR29oRHd3QUN3QUxDeUFRUVFScUlSQU1BUXNMSUFaQ0FEY0RlQ0FHUWdBM0EzQWdCa0dBZ0lEOEF6WUNnQUVnQlNnQ3BBRWhGU0FHUWRnQWFrRUVjaUVQSUFVb0FxQUJJUWNEUUFKQUlBY2dGVVlFUUVFQUlRTU1BUXNDUUNBSEx3RWVRVHRIRFFBZ0J5Z0NLQ0VFSUFkQkFoQWJJUWdDUUNBRktBSUFLQUlBRUVkRkRRQUNRQ0FJUVFsSERRQWdCa0hZQUdvZ0JTQUVFS1FLSUFZb0FsZ2hBZ05BQWtBZ0FpQVBSd1JBSUFZZ0FpZ0NFRFlDU0NBR1FhQUNhaUFHUWZBQWFpQUdRY2dBYWhDV0FTQUdMUUNrQWcwQklBWkJvQUpxSWdFZ0JVRjJJQVVnQkJBZ0VCQWdCa0dJQVdvaUNpQUZRWkkwRURjZ0FTQUtFQklhSUFGQjNKY0pFQTRhSUFFZ0JpZ0NTQkFoR2lBQlFZYjREQkFPR2lBQlFiVDJEQkFPR2lBQlFjZWJDaEFPR2lBQlFaMlpCeEFPR2lBR0tBTGNBeUVESUFvUUR4b2dBUkFSQ3lBR1FkZ0FhaERFQXlBQ0lBOUhEUVVNQWdzZ0FoQk1JUUlNQUFzQUN5QUlEUUFnQmtIWUFHb2dCU0FFRUtRS1FRRWhBZ0pBSUFZb0FtQkZEUUFnQkVFaUlBVVF1d05GQkVBZ0JrR2dBbW9pQVNBRlFYWWdCU0FFRUNBUUVFRUFJUUlnQmtHSUFXb2lDaUFGUVpVMEVEY2dBU0FLRUJJYUlBRkI3WmNKRUE0YUlBRWdCQkFoR2lBQlFjdjJEQkFPR2lBQlFiVDJEQkFPR2lBQlFjdjVCQkFPR2lBR0tBTGNBeUVESUFvUUR4b2dBUkFSREFFTElBWW9BbUJGRFFBZ0JFRWhJQVVRdXdNTkFDQUdRYUFDYWlJQklBVkJkaUFGSUFRUUlCQVFRUUFoQWlBR1FZZ0JhaUlLSUFWQmxUUVFOeUFCSUFvUUVob2dBVUh0bHdrUURob2dBU0FFRUNFYUlBRkJ3dmNNRUE0YUlBRkJ0UFlNRUE0YUlBRkJ5L2tFRUE0YUlBWW9BdHdESVFNZ0NoQVBHaUFCRUJFTElBWkIyQUJxRU1RRElBSkZEUUlMQWtBQ2Z3SkFBa0FDUUFKQUFrQWdCU2dDQUNnQ0FDSUJRUVZyRGc4QUFBQUFBQU1EQXdNREF3TURBd0VDQzBFQkRBUUxRYmUyQ1VIUGx3SkJ0d0pCc3lvUUFBQUxJQUZCR2tZTkFRdEJBQXdCQzBHS3RnbEJ6NWNDUWJvQ1FiTXFFQUFBQzBVTkFDQUVRUUlnQlJDN0F5SUJJQWhCREVaeElBaEJBa1lpQ2lBRVFRTWdCUkM3QXlBQmNuRnlSUTBBSUFaQjJBQnFJQVVnQkJDa0NrRUJJUUlDUUNBR0tBSmdSUTBBSUFSQklTQUZFTHNERFFBZ0JrR2dBbW9pQVNBRlFYWWdCU0FFRUNBUUVDQUJRWno0QWtHaDlnRWdDaHNRRGhvZ0FVSENtQWtRRGhvZ0FTQUVFQ0VhSUFGQnd2Y01FQTRhSUFGQjd2UU1FQTRhSUFGQjljUUpFQTRhSUFGQm81Y0lFQTRhSUFZb0F0d0RJUU1nQVJBUlFRQWhBZ3NnQmtIWUFHb1F4QU1nQWtVTkFndEJBQ0VMQWtBQ1FBSkFJQWhCQW1zT0F3SURBUUFMQWtBZ0NFRUphdzRFQWdNREFnQUxJQWhCNVNsR0RRRU1BZ3RCQVNFTElCdEJ6Q0lRYUVVTkFRc0NRQ0FGSUFjb0FnQW9BZ1FRSUNJTkx3RWVRU0JHQkVBZ0JTQU5LQUlBS0FJTUlnSVFJQ0VCQWtBZ0N3MEFJQUV2QVI1Qi92OERjVUVjUncwQUlBVWdBVUVCRUJzaUFoQWdJUUVMSUFFdkFSNUJIa2NOQWlBR1FnQTNBMkFnQmtJQU53TllJQVpCZ0lDQS9BTTJBbWdnQmtJQk53T2dBaUFHUWRnQWFpQUNJQVpCb0FKcUlBVVEzUTFCblBnQ1FaYmlBRUdMa3dKQjRmVUJJQXNiSUFoQkNVWWJJQWhCQWtZaUV4c2hFUUpBSUFVb0FnQW9BZ0FRUjBVTkFDQUNRUUlnQlJDN0F5RUJJQWhCREVjaUNpQUNRUU1nQlJDN0F5SUpSWEpGQkVBZ0JrR2dBbW9pQVNBRlFYWWdCU0FFRUNBUUVFRUFJUWtnQmtHSUFXb2lBaUFGUVpNMEVEY2dBU0FDRUJJYUlBRkJsSmdKRUE0YUlBRWdCQkFoR2lBQlFkZVJBUkFPR2lBR0tBTGNBeUVESUFJUUR4b2dBUkFSREFNTElBRWdDRUVKUjNKRkJFQWdCa0dnQW1vaUFTQUZRWFlnQlNBQ0VDQVFFRUVBSVFrZ0JrR0lBV29pQkNBRlFaTTBFRGNnQVNBRUVCSWFJQUZCZ3BnSkVBNGFJQUVnQWhBaEdpQUJRYUwzREJBT0dpQUJRYlQyREJBT0dpQUJRYkxhQWhBT0dpQUdLQUxjQXlFRElBUVFEeG9nQVJBUkRBTUxJQUVnQ25KRkJFQWdCa0dnQW1vaUFTQUZRWFlnQlNBQ0VDQVFFRUVBSVFrZ0JrR0lBV29pQkNBRlFaTTBFRGNnQVNBRUVCSWFJQUZCcUpnSkVBNGFJQUVnQWhBaEdpQUJRYUwzREJBT0dpQUJRYlQyREJBT0dpQUJRYkxhQWhBT0dpQUdLQUxjQXlFRElBUVFEeG9nQVJBUkRBTUxJQWtnQVNBSVFRSkhJZ3B5Y2tVRVFDQUdRYUFDYWlJQklBVkJkaUFGSUFJUUlCQVFRUUFoQ1NBR1FZZ0JhaUlFSUFWQmxEUVFOeUFCSUFRUUVob2dBVUc3bUFrUURob2dBU0FDRUNFYUlBRkI4L1lNRUE0YUlBRkJ0UFlNRUE0YUlBRkI2ZGtDRUE0YUlBWW9BdHdESVFNZ0JCQVBHaUFCRUJFTUF3c2dDRUVNUnlBS2NRMEFJQVpCaUFGcUlBVWdCQkNrQ2tFQklRRUNRQ0FHS0FLUUFVVU5BQ0FFUVNJZ0JSQzdBMFVFUUNBR1FhQUNhaUlLSUFWQmRpQUZJQVFRSUJBUVFRQWhBU0FHUWNnQWFpSUpJQVZCbFRRUU55QUtJQWtRRWhvZ0NpQVJFQTRhSUFwQndwZ0pFQTRhSUFvZ0JCQWhHaUFLUWN2MkRCQU9HaUFLUWJUMkRCQU9HaUFLUWN2NUJCQU9HaUFHS0FMY0F5RURJQWtRRHhvZ0NoQVJEQUVMSUFZb0FwQUJSUTBBSUFSQklTQUZFTHNERFFBZ0JrR2dBbW9pQ2lBRlFYWWdCU0FFRUNBUUVFRUFJUUVnQmtISUFHb2lDU0FGUVpVMEVEY2dDaUFKRUJJYUlBb2dFUkFPR2lBS1FjS1lDUkFPR2lBS0lBUVFJUm9nQ2tIQzl3d1FEaG9nQ2tHMDlnd1FEaG9nQ2tITCtRUVFEaG9nQmlnQzNBTWhBeUFKRUE4YUlBb1FFUXNnQmtHSUFXb1F4QU5CQUNFSklBRkZEUUlMSUFNaENpQUlRZVVwUmlJV0lBaEJERVp5SVJjZ0JTQUNFTjRCSWdGQkJHb2hHQ0FCS0FJQUlRUURRQ0FFSUJoR0lna0VRQ0FLSVFNTUF3c2dFeUFFS0FJUUlneEJBa1lpQTNFaEVFRUJJUUVDUUNBVElBeEJBMFp4SWhRTkFBSkFJQXNOQUVFQUlRRUNRQ0FJUVFsckRnUUJBZ0lCQUFzZ0ZrVU5BUXNnQXlFQkN5QVFCRUFnRFNnQ0tDRWFJd0JCRUdzaUF5UUFJQU1nR2pZQ0RDQURJQVZCakFScUlBTkJER29RbGdFZ0EwRVFhaVFBSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FESUFWQm9BUnFJQU5CREdvUWxnRWdBMEVRYWlRQUN5QVVJQmNnREVFQ1JpSU1jWElFUUNBTktBSW9JUlFqQUVFUWF5SURKQUFnQXlBVU5nSU1JQU1nQlVHMEJHb2dBMEVNYWhDV0FTQURRUkJxSkFBakFFRVFheUlESkFBZ0F5QUNOZ0lNSUFNZ0JVSElCR29nQTBFTWFoQ1dBU0FEUVJCcUpBQUxBa0FnQVNBUWNrRUJSdzBBSUFVb0FnUkJLVUVvSUFzYmFpMEFBQ0VVUWFtZUEwR1JuZ01nREJzaERDQUNJQVVRaXhZRVFDQUdRYUFDYWlJQklBVkJkaUFGSUFJUUlCQVFJQUZCMDlrS0VBNGFJQUVnQWhBaEdpQUJRYTduQ1JBT0dpQUJJQXdRRGhvZ0FVR3Ryd2NRRGhvZ0JpZ0MzQU1oQXlBQkVCRkJBQ0VKREFRTElBWkIrSVVnTmdLWUFTQUdJQVpCbUFGcUlnTTJBcWdCSUFJZ0EwRWNJQVVRdUFvaEdpQURFQllnR2tVRVFDQUdRYUFDYWlJQklBVkJkaUFGSUFJUUlCQVFJQUZCMDlrS0VBNGFJQUVnQWhBaEdpQUJRYTduQ1JBT0dpQUJJQXdRRGhvZ0FVR25zQWNRRGhvZ0JpZ0MzQU1oQXlBQkVCRkJBQ0VKREFRTElBWkJuSVlnTmdJd0lBWWdCa0V3YWlJRE5nSkFJQUlnQTBFWUlBVVF1QW9oR2lBREVCWWdHa1VFUUNBR1FhQUNhaUlCSUFWQmRpQUZJQUlRSUJBUUlBRkIwOWtLRUE0YUlBRWdBaEFoR2lBQlFhN25DUkFPR2lBQklBd1FEaG9nQVVIaXNBY1FEaG9nQmlnQzNBTWhBeUFCRUJGQkFDRUpEQVFMSUFaQndJWWdOZ0lZSUFZZ0JrRVlhaUlETmdJb0lBSWdBMEVZSUFVUXVBb2hHaUFERUJZZ0drVUVRQ0FHUWFBQ2FpSUJJQVZCZGlBRklBSVFJQkFRSUFGQjA5a0tFQTRhSUFFZ0FoQWhHaUFCUWE3bkNSQU9HaUFCSUF3UURob2dBVUhqcndjUURob2dCaWdDM0FNaEF5QUJFQkZCQUNFSkRBUUxJQVVvQWdBb0FnQVFSMFVOQUNBUUJFQWdBaUFSSUF4QkFTQVVRUUJIUVFBZ0JrSFlBR29nQlJDM0NpSUREUVFMSUFGRkRRQWdBaUFSSUF4QkFDQVVRUUJIUVFBZ0JrSFlBR29nQlJDM0NpSUREUU1MSUFRUVRDRUVEQUFMQUF0Qm4vSUlRYWlhQWtIZENFSEltUUVRQUFBTElBWW9BbUFoQWdOQUlBSUVRQ0FDS0FJQUlRRWdBaEFmSUFFaEFnd0JDd3NnQmlnQ1dDRUJJQVpCQURZQ1dDQUJCRUFnQVJBZkN5QUpSUTBCQ3lBSFFjd0FhaUVIREFFTEN5QUdRZkFBYWhCUElBTU5BQ0FHUWdBM0Fwd0JJQVlnQmtHWUFXcEJCSElpRFRZQ21BRWdCaUFHUVRCcVFRUnlJaEEyQWpBZ0JrSUFOd0kwSUFVb0FxUUJJUThnQlNnQ29BRWhBUUpBQTBBZ0FTQVBSZ1JBUVFBaEF3d0NDd0pBQWtBQ1FBSkFJQUV2QVI1Qnh3QnJEZ0lBQVFJTElBRW9BZ0FpQXlnQ0NDRUlJQVlnQXlnQ0JDSUpOZ0pjSUFZZ0NEWUNXQ0FHUWFBQ2FpQUdRWmdCYWlBR1FkZ0FhaENxRjBFQUlRSWdCaTBBcEFJZ0NFRUdSM0pGQkVBZ0JrR2dBbW9pQVNBRlFYWWdCU0FKRUNBUUVDQUJRZWlaQ1JBT0dpQUJJQWtRSVJvZ0FVSEZwQW9RRGhvZ0JrRVlhaUlDSUFWQkJoQy9BeUFCSUFJUUVob2dBVUdJL1FjUURob2dCaWdDM0FNaEF5QUNFQThhSUFFUUVRd0ZDd05BSUFKQkFrWU5BaUFDUVFOMFFmREdEV29pQkNnQ0JDRURBa0FDUUNBSUlBUW9BZ0FpQkVZRVFDQURJUVFNQVFzZ0F5QUlSdzBCQ3lBR0lBazJBb3dCSUFZZ0JEWUNpQUVnQmtHSUFXb2hDeUFHUVpnQmFpSURLQUlFSVFjZ0EwRUVhaUlLSVFNRFFDQUhCRUFnQXlBSElBZEJFR29nQ3hETkNpSU1HeUVESUFkQkJHb2dCeUFNR3lnQ0FDRUhEQUVMQ3dKQUlBTWdDa2NFUUNBTElBTkJFR29RelFwRkRRRUxJQW9oQXdzZ0F5QU5SdzBFQ3lBQ1FRRnFJUUlNQUFzQUN5QUJLQUlBSWdNb0Fnd2hDU0FES0FJRUlRZ2dCaUFES0FJSUlndzJBaUFnQmlBSU5nSWNJQVlnQ1RZQ0dDTUFRUkJySWdza0FDQUdRUmhxSVFjakFFRVFheUlLSkFBZ0JrRXdhaUlSUVFScUlRSUNRQ0FSS0FJRUlnUkZCRUFnQWlFRERBRUxBMEFnQnlBRUlnTkJFR29pQkJDeENnUkFJQU1pQWlnQ0FDSUVEUUVNQWdzZ0JDQUhFTEVLUlEwQklBTkJCR29oQWlBREtBSUVJZ1FOQUFzTElBb2dBellDRENBTElBSW9BZ0FpQXdSL1FRQUZRUndRRlNFRElBb2dFVUVFYWpZQ0JDQURJQWNvQWdnMkFoZ2dBeUFIS1FJQU53SVFJQXBCQVRvQUNDQVJJQW9vQWd3Z0FpQURFUGdDSUFwQkFEWUNBQ0FLRUlzQlFRRUxPZ0FNSUFzZ0F6WUNDQ0FLUVJCcUpBQWdCaUFMS0FJSU5nS2dBaUFHSUFzdEFBdzZBS1FDSUF0QkVHb2tBQ0FHTFFDa0FrVUVRQ0FKUVFScklnTkJIMHRCQVNBRGRFR0xnSUNBZUhGRmNnMEJJQVpCb0FKcUlnRWdCVUYySUFVZ0NCQWdFQkFnQVVIb21Ra1FEaG9nQVNBSUVDRWFJQUZCeVlzSkVBNGFJQUVnREJBaEdpQUJRY1drQ2hBT0dpQUdRZkFBYWlJQ0lBVWdDUkMvQXlBQklBSVFFaG9nQVVHSS9RY1FEaG9nQmlnQzNBTWhBeUFDRUE4YUlBRVFFUXdFQzBFRklRUUNRQUpBSUFsQkJHc09BZ0VBQWd0QkJDRUVDeUFHSUF3MkFuZ2dCaUFJTmdKMElBWWdCRFlDY0NBR1FmQUFhaUVLSUFaQk1Hb2lBeWdDQkNFSElBTkJCR29pQWlFREEwQWdCd1JBSUFNZ0J5QUhRUkJxSUFvUXNRb2lDeHNoQXlBSFFRUnFJQWNnQ3hzb0FnQWhCd3dCQ3dzQ1FDQUNJQU5IQkVBZ0NpQURRUkJxRUxFS1JRMEJDeUFDSVFNTElBTWdFRVlOQUNBR1FhQUNhaUlCSUFWQmRpQUZJQWdRSUJBUUlBRkI2SmtKRUE0YUlBRWdDQkFoR2lBQlFjbUxDUkFPR2lBQklBd1FJUm9nQVVHMm93b1FEaG9nQmtIWUFHb2lBaUFGSUFrUXZ3TWdBU0FDRUJJYUlBRkI2YzRLRUE0YUlBWkJpQUZxSWdjZ0JTQUVFTDhESUFFZ0J4QVNHaUFCUVpmOUJ4QU9HaUFHS0FMY0F5RURJQWNRRHhvZ0FoQVBHaUFCRUJFTUF3c2dBVUhNQUdvaEFRd0JDd3NnQmtHZ0Ftb2lBU0FGUVhZZ0JTQUpFQ0FRRUNBQlFlaVpDUkFPR2lBQklBa1FJUm9nQVVHMm93b1FEaG9nQmtFWWFpSUNJQVVnQ0JDL0F5QUJJQUlRRWhvZ0FVSHB6Z29RRGhvZ0JrSHdBR29pQnlBRklBUVF2d01nQVNBSEVCSWFJQUZCbC8wSEVBNGFJQVlvQXR3RElRTWdCeEFQR2lBQ0VBOGFJQUVRRVFzZ0JrRXdhaUFHS0FJMEVOa05JQVpCbUFGcUlBWW9BcHdCRU5nTklBTU5BQ0FGRUtZS0lnRW9BZ1FoQXlBQktBSUFJUUlDUUFOQUFrQUNRQ0FDSUFOSEJFQWdBaWdDSkNFRUlBSW9BZ0FnQlJDT0ZpRUJBa0FnQkVVRVFDQUJEUU1nQmtHZ0Ftb2lCeUFGUVh3Z0JTQUNLQUlBRUNBUUVDQUhRY2pQQ2hBT0dpQUhJQUlvQWdBUUlSb2dCMEdDOUFjUURob01BUXNnQVVVTkFpQUdRYUFDYWlJSElBVkJmQ0FGSUFJb0FnQVFJQkFRSUFkQnI4OEtFQTRhSUFjZ0FpZ0NBQkFoR2lBSFFkSHpCeEFPR2dzZ0JpZ0MzQU1oQXlBSEVCRWdBdzBGQ3lBRktBS1VBMEVEUncwRElBVkJ0QUZxSVFFZ0JrRXdhaUlIRUZVZ0JrR1lBV29pQTBIZ2pBNDJBamdnQTBITWpBNDJBZ0FnQXlBRFFRUnFJZ0lRalJnaUJFSE1qQTQyQWdBZ0EwSGdqQTQyQWpnZ0FoQ1hDaUlEUWVDRURqWUNBQ0FEUVNCcUlnSVFWU0FEUVJBMkFqQWdBMEVBTmdJc0lBSWdCeERnQWlBRFFRQTJBaXdDUUNBREtBSXdJZ2RCQ0hFRWZ5QURJQUlRZXlBQ0VEdHFOZ0lzSUFNZ0FoQjdJQUlRZXlBREtBSXNFTUVFSUFNb0FqQUZJQWNMUVJCeFJRMEFJQU1nQWhBN0lnY2dBaEI3YWpZQ0xDQUNJQUlRbXdFUWRpQURJQUlRZXlBQ0VIc2dBaEE3YWhDWkJpQURMUUF3UVFOeFJRMEFBMEFnQjBFQVNBUkFJQU5CLy8vLy93Y1Fqd2NnQjBILy8vLy9CMnNoQnd3QkN3c2dCMFVOQUNBRElBY1Fqd2NMQTBBZ0FTZ0NBQ0lCUlFSQVFRQWhBd3dEQ3lBRklBRW9BZ3dpQnlnQ0tDSUtFTjRCSWdOQkJHb2hDQ0FES0FJQUlRSURRQ0FDSUFoR0RRRUNRQUpBSUFJb0FoQWlBMEVWYXc0REFBRUFBUXNnQWlnQ0lDRUJJQVJCNjhVQVFhVzJCQ0FEUVJkR0d4QU9HaUFFUWFPcUNoQU9JUUlnQmtHZ0Ftb2lBeUFGSUFvUUtpQUNJQU1RRWhvZ0F4QVBHaUFCUVg5SEJFQWdCRUcyd3drUURpQUJFTHdDUWUvMkNCQU9HZ3NnQkVHTzNnY1FEaG9nQmtHZ0Ftb2lBU0FGUVhZZ0J4QVFJQVpCR0dvaUFpQUVRUVJxRUVJZ0FTQUNFQklhSUFZb0F0d0RJUU1nQWhBUEdpQUJFQkVNQkFzZ0FoQk1JUUlNQUFzQUN3QUxJQUpCeEFOcUlRSU1BUXNMSUFRUXV3RWFJQVpCTUdvUUR4b2dBdzBCQ3lBRlFld0NhaUVMSUFVcEE0QUJRZ0tESVM4Z0JTZ0M2QUloQVFOQUlBRWdDMFlFUUVFQUlRTU1BZ3NDUUNBQktBSWNSUTBBSUFVZ0FTZ0NFQkFnSWdRRVFDQUVMd0VlUWNrQVJnMEJJQUZCR0dvaERDQUJLQUlVSVFJRFFDQUNJQXhHRFFJQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ0tBSVFJZ05CR0dzT0NBb01DUWtNREFZQkFBc0NRQ0FERGdRRkRBY0hBQXNnQTBIMUltdEJBa2tOQnlBdlVDQURRU2RIY2cwTElBUXZBUjVCOHdCR0RRRWdCa0dnQW1vaUJ5QUZRWFlnQkJBUUlBZEI2cWdIRUE0YUlBWW9BdHdESVFNZ0J4QVJEQW9MSUFRb0FpaEZEUUlnQWlnQ0dDQUNLQUlVYTBFRVJ3MEJJQVF2QVI0aEF3SkFJQUlvQWlBaUIwRi9SZ1JBQWtBQ1FBSkFJQU5CTjJzT0JRSUFBQUFCQUFzZ0JrR2dBbW9pQnlBRlFYWWdCQkFRSUFkQjJxMElFQTRhSUFZb0F0d0RJUU1nQnhBUkRBMExBa0FDUUNBRVFRSVFHeUlEUVFGckRnTUNBUUlBQ3lBRFFmLy8vLzhIUmcwQkN5QUdRYUFDYWlJSElBVkJkaUFFRUJBZ0IwSEcxd2tRRGhvZ0J5QURFQ0VhSUFZb0F0d0RJUU1nQnhBUkRBd0xJQVVnQkNnQ0pDSUhFSUVGUlEwQklBVWdCeEFnUVFJUUd5RUhEQUVMSUFOQkhrY0VRQ0FHUWFBQ2FpSUhJQVZCY2lBRUVCQWdCMEdQN1FjUURob2dCaWdDM0FNaEF5QUhFQkVNQ3dzZ0JDZ0NBQ0FIUVFKMGFpZ0NDQ0VIQ3lBRktBSUFLQUlBRUVkRkRRb2dCU0FIRUhCQkhFWUVRQ0FGSUFjUUlDZ0NBQ2dDQ0NFSEN3SkFJQVVnQnhESEFRMEFJQVVnQnhDdUFRMEFJQVpCb0FKcUlnb2dCVUYySUFRUUVDQUdRWmdCYWlJSUlBVkJ2Q1lRTnlBS0lBZ1FFaG9nQ2tHQ3V3b1FEaG9nQmtFd2FpSUpJQVVnQnhBcUlBb2dDUkFTR2lBS1FmSFBBUkFPR2lBR0tBTGNBeUVESUFrUUR4b2dDQkFQR2lBS0VCRU1DZ3NnQWlnQ0ZDZ0NBQ0lEUVFSUEJFQWdCa0dnQW1vaUJ5QUZRWFlnQkJBUUlBWkJtQUZxSWdvZ0JVRzRKaEEzSUFjZ0NoQVNHaUFIUWYzMkJoQU9HaUFHS0FMY0F5RURJQW9RRHhvZ0J4QVJEQW9MSUFVZ0J4QkZJUW9DUUNBRklBY1FQaUlIUVJCSEJFQWdCMEhBQUVZTkFTQUhRU0JIRFF3TElBTWdDbW9pQ0VFRlNRMExJQVpCb0FKcUlnY2dCVUYySUFRUUVDQUdRWmdCYWlJS0lBVkJ1U1lRTnlBSElBb1FFaG9nQjBITm93b1FEaG9nQnlBREVDRWFJQWRCODZNS0VBNGFJQWNnQ0VFQmF4QWhHaUFIUWJQM0JoQU9HaUFHS0FMY0F5RURJQW9RRHhvZ0J4QVJEQW9MSUFwQkEwOEVRQ0FHUWFBQ2FpSUhJQVZCZGlBRUVCQWdCa0dZQVdvaUNpQUZRWmM4RURjZ0J5QUtFQklhSUFkQng4b0JFQTRhSUFZb0F0d0RJUU1nQ2hBUEdpQUhFQkVNQ2dzZ0EwRjljVUVCUmdSQUlBWkJvQUpxSWdjZ0JVRjJJQVFRRUNBR1FaZ0JhaUlLSUFWQnV5WVFOeUFISUFvUUVob2dCMEc4dUFFUURob2dCaWdDM0FNaEF5QUtFQThhSUFjUUVRd0tDeUFLUVFGMElBTnFJZ2hCQlVrTkNpQUdRYUFDYWlJSElBVkJkaUFFRUJBZ0JrR1lBV29pQ2lBRlFib21FRGNnQnlBS0VCSWFJQWRCemFNS0VBNGFJQWNnQXhBaEdpQUhRZk9qQ2hBT0dpQUhJQWhCQVdzUUlSb2dCMEd6OXdZUURob2dCaWdDM0FNaEF5QUtFQThhSUFjUUVRd0pDd0pBSUFVb0FnQW9BZ0FRUjBVTkFDQUNLQUlVS0FJQVFRSkpEUUFnQmtHZ0Ftb2lCeUFGUVhZZ0JCQVFJQVpCbUFGcUlnb2dCVUhESkJBM0lBY2dDaEFTR2lBSFFjYUpDQkFPR2lBR0tBTGNBeUVESUFvUUR4b2dCeEFSREFrTElBUW9Ba1FoQ2lBRUtBSkFJUWNEUUNBSElBcEdEUW9DUUNBSEtBSUFJZ012QVI0aUNFSHpBRVlOQUNBSUVMd0lEUUFnQXhETkJRMEFJQU12QVI0UXZRZ05BQ0FETHdFZVFUNUhCRUFnQmtHZ0Ftb2lCeUFGUVhZZ0JCQVFJQWRCeStvSEVBNGFJQVlvQXR3RElRTWdCeEFSREFzTElBY29BZ1JCQWtjRVFDQUdRYUFDYWlJSElBVkJkaUFFRUJBZ0IwSEw2Z2NRRGhvZ0JpZ0MzQU1oQXlBSEVCRU1Dd3NDUUNBRklBVWdCU0FEUVFBUUd4QWdRUUFRR3hBZ0lnTkJBaEFiSWdnUXJnRUVRQ0FGSUFnUVBrRVFSZzBCQ3lBR1FhQUNhaUlISUFWQmRpQUVFQkFnQjBIYXFRY1FEaG9nQmlnQzNBTWhBeUFIRUJFTUN3c2dBMEVCRUJzaUEwRU1UVUVBUVFFZ0EzUkJqaVJ4R3lBRFFlVXBSbklOQUNBR1FhQUNhaUlISUFWQmRpQUVFQkFnQjBITXNnY1FEaG9nQmlnQzNBTWhBeUFIRUJFTUNnc2dCMEVJYWlFSERBQUxBQXRCa1o0SlFhaWFBa0h0REVIczJnSVFBQUFMUWZ5c0NVR29tZ0pCNnd4QjdOb0NFQUFBQ3lBRUx3RWVFTkFDUlEwR0lBSW9BaUJCZjBjRVFDQUVMd0VlUVI1R0RRY0xJQVpCb0FKcUlnY2dCVUYySUFRUUVDQUhRYTZWQkJBT0dpQUdLQUxjQXlFRElBY1FFUXdGQ3lBRUx3RWVJZ05CTzBZTkJTQURRUjVHSUFJb0FpQkJmMGR4RFFVZ0JrR2dBbW9pQnlBRlFYWWdCQkFRSUFkQjk0MEVFQTRhSUFZb0F0d0RJUU1nQnhBUkRBUUxJQVFvQWlnRVFDQUVMd0VlUVI1R0RRVWdCa0dnQW1vaUJ5QUZRWFlnQkJBUUlBZEJxWjREUVpHZUF5QURRUUpHR3hBT0dpQUhRZHZ0QnhBT0dpQUdLQUxjQXlFRElBY1FFUXdFQzBIOHJBbEJxSm9DUWRnTlFjL2JBaEFBQUFzZ0JDOEJIaUlEUWY0QWF5SUhRUVpOUVFCQkFTQUhkRUhWQUhFYklBTkJERVlnQTBIRUFVWnljZzBESUFaQm9BSnFJZ2NnQlVGMklBUVFFQ0FIUWZxMUFrSHJ0UUlnQWlnQ0VFSDFJa1liRUE0YUlBZEI2SVFLRUE0YUlBY2dCQzhCSGhBcEVBNGFJQVlvQXR3RElRTWdCeEFSREFJTFFaejRBa0dqZ2dVZ0EwRWFSaHNoQXlBRUtBSWtJZ2RGQkVBZ0JrR2dBbW9pQnlBRlFYWWdCQkFRSUFjZ0F4QU9HaUFIUVlMeUFCQU9HaUFHS0FMY0F5RURJQWNRRVF3Q0N3SkFJQVVnQnhBZ0lnY0VRQ0FITHdFZVFSTkdCRUFnQmtHZ0Ftb2lCeUFGUVhZZ0JCQVFJQWNnQXhBT0dpQUhRWU9UQkJBT0dpQUdLQUxjQXlFRElBY1FFUXdFQ3lBQ0tBSVFRUnRIRFFRZ0FpZ0NHQ0FDS0FJVUlnTnJRUVJIRFFFZ0JTQUVJQU1vQWdBUXlRMGhBd3dEQ3lBR1FhQUNhaUlISUFWQmRpQUVFQkFnQnlBREVBNGFJQWRCc1pNRUVBNGFJQVlvQXR3RElRTWdCeEFSREFJTFFlS2VDVUdvbWdKQnZBeEJtZHNDRUFBQUN5QUVLQUlvQkVBZ0FpZ0NJRUYvUncwQ0lBUW9BaVFoQXdKQUFrQUNRQ0FFTHdFZVFUZHJEZ1VDQUFBQUFRQUxJQVpCb0FKcUlnY2dCVUYySUFRUUVDQUhRY0t1Q0JBT0dpQUdLQUxjQXlFRElBY1FFUXdEQ3lBRVFRSVFHMEYrY1VFR1J3MEFJQVV0QUt3RERRTUxJd0JCRUdzaUJ5UUFJQWNnQXpZQ0RDQUZRWXdFYWlBSFFReHFFSjRDSVFvZ0IwRVFhaVFBSUFvTkFpTUFRUkJySWdja0FDQUhJQU0yQWd3Z0JVRzBCR29nQjBFTWFoQ2VBaUVLSUFkQkVHb2tBQ0FLRFFJakFFRVFheUlISkFBZ0J5QUROZ0lNSUFWQjNBUnFJQWRCREdvUW5nSWhBeUFIUVJCcUpBQWdBdzBDSUFaQm9BSnFJZ2NnQlVGMklBUVFFQ0FIUWIzcURCQU9HaUFIUWZXU0FVSEw4d0VnQlMwQXJBTWJFQTRhSUFZb0F0d0RJUU1nQnhBUkRBRUxRZnlzQ1VHb21nSkI3UXRCK05zQ0VBQUFDeUFERFFVTElBSVFUQ0VDREFBTEFBdEJxUzlCcUpvQ1FaZ09RYkRiQWhBQUFBc2dBUkJNSVFFTUFBc0FDeUFHUWVBRGFpUUFJQU1pQVEwQkFuOGpBRUdBQTJzaUNDUUFJQVVvQXFRQklRSWdCU2dDb0FFaEF5QUZLQUlVUVlDSUJFa2hCd05BQWtBQ1FDQUNJQU5IQkVBZ0F5OEJIaUVCQWtBZ0IwVUVRQ0FCUVR0SERRUWdBMEVDRUJ0QkIwY05BUXdFQ3lBQlFUdEhEUU1nQTBFQ0VCdEJBVVlOQUNBRFFRSVFHMEVEUncwREN5QUlRUUEyQXFBQklBaENBRGNEbUFFZ0NFRUFOZ0tJQVNBSVFnQTNBNEFCSUFNb0FrUWhBU0FES0FKQUlRb0RRQ0FCSUFwR0JFQkJBQ0VFQTBBZ0NDZ0NoQUVnQ0NnQ2dBRWlBV3RCQW5VZ0JFMEVRQ0FJS0FLWUFTSUJJQWdvQXB3QklnUWdCQ0FCYTBFQ2RSRFlDa0VCZEJEVURTQUlRWmdCYWlBSUtBS1lBU0FJS0FLY0FSRHBEU0FJS0FLY0FSRG9EU0FJUVFBMkFtQWdDRUlBTndOWUlBZ29BcHdCSVFFZ0NDZ0NtQUVoQkFOQUlBRWdCRVlFUUNBSUtBSllJQWdvQWx3US9Bb2dDRUhZQUdvZ0NDZ0NXQ0FJS0FKY0VPa05JQWdvQWx3UTZBMGdDQ2dDWENFQklBZ29BbGdoQ3dKQUEwQWdBU0FMUmdSQVFRQWhDZ3dDQ3lBRklBc29BZ0FpQmhEZURTSUVLQUlFSVFrZ0JDZ0NBQ0VFQWtBRFFDQUVJQWxIQkVBZ0JDZ0NFQ0VNSUFRb0Fnd2hDZ05BSUFvZ0RFWU5BeUFLS0FJQUlSRWdDa0VFYWlFS0lCRWdBeWdDS0VjTkFBc2dCRUVZYWlFRURBRUxDeUFMUVFScUlRc01BUXNMSUFoQndBRnFJZ0VnQlVGMklBTVFFQ0FCUWFmcEJoQU9HaUFCSUFNb0FpZ1FJUm9nQVVHdWlRa1FEaG9nQVNBRUVCSWFJQUZCditrR0VBNGFJQUVnQmhBaEdpQUJRZGJjQkJBT0dpQUlLQUw4QWlFS0lBRVFFUXNnQ0VIWUFHb1FNaG9nQ0VHQUFXb1FNaG9nQ0VHWUFXb1FNaG9nQ2cwSERBZ0xJQVVnQkNnQ0FDZ0NBQkNsQ2lJS0tBSUVJUVlnQ2lnQ0FDRUtBMEFnQmlBS1JnUkFJQVJCQkdvaEJBd0NCU0FJSUFvb0FnQTJBc0FCSUFwQkJHb2hDaUFJUWRnQWFpQUlRY0FCYWhEZUFnd0JDd0FMQUFzQUJTQUlJQUVnQkVFQ2RHb29BZ0FpQVNnQ09DSUtOZ0pZQWtBZ0NnUkFJQWhCbUFGcUlBaEIyQUJxRU04QkRBRUxJQUVvQWtRaEJpQUJLQUpBSVFvRFFDQUdJQXBHRFFFZ0NDQUtLUUlBTndQQUFTQUtRUWhxSVFvZ0NFR0FBV29nQ0VIQUFXb1F6d0VNQUFzQUN5QUVRUUZxSVFRTUFRc0FDd0FGSUFnZ0Npa0NBRGNEd0FFZ0NrRUlhaUVLSUFoQmdBRnFJQWhCd0FGcUVNOEJEQUVMQUFzQUMwRUFJUW9nQlNnQ0FDZ0NBQkJIUlEwQUlBVW9BcVFCSVJzZ0JTZ0NvQUVoRVFOQUlCRWdHMGNFUUNBUkx3RWVJZ3BCRDBZRVFDQVJRUUFRRzBFRVRRUkFJQWhDQURjRFlDQUlRZ0EzQTFnZ0NFR0FnSUQ4QXpZQ2FDQUlRZ0EzQTBnZ0NFSUFOd05BSUFoQmdJQ0EvQU0yQWxBZ0NFSUFOd013SUFoQ0FEY0RLQ0FJUVlDQWdQd0ROZ0k0SUFoQ0FEY0RHQ0FJUWdBM0F4QWdDRUdBZ0lEOEF6WUNJRUVESVJBRFFBSkFJQkVvQWhBZ0VTZ0NER3RCQkhVZ0VFMEVRRUVBSVFvTUFRc2dDQ0FSSUJBUUd5SUJOZ0lNQWtBZ0JTQUJFQ0FpRFVFQ0VCc2lBVUY5Y1VFQlJ3MEFJQWhCd0FGcUlBaEJFR29nQ0VFTWFoQ1dBU0FJTFFERUFVVU5BRUVBSVJRZ0VVRUFFQnRCQkVZaUdDQU5RUUlRR3lJYVFRTkdJaE54SVI0Z0JTQUZJQTFCQUJBYkVDQkJBaEFiSWc4UUlDRUpJQVVnRFNnQ0tCRGVBU0lEUVFScUlSOGdDRUhZQUdvZ0NFRkFheUFCUVFGR0d5RVZJQU1vQWdBaENrRUFJUlpCQUNFRFFRQWhCRUVBSVF4QkFDRUdRUUFoQWtFQUlRZEJBQ0VMQWtBRFFBSkFJQU1oQVNBS0lCOUdEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQW9vQWhBaUYwRWVhdzREQVFJREFBdEJBU0VEQWtBZ0YwRUxhdzRGQ3dZR0JnY0FDeUFYUVprcFJnMEVJQmRCcFNsSERRVWdHQTBESUFoQndBRnFJZ0VnQlVGeUlBMFFFQ0FJUVpnQmFpSURJQVZCK1RRUU55QUJJQU1RRWhvZ0FVSFFxZ0VRRGhvZ0NDZ0MvQUloQ2lBREVBOGFJQUVRRVF3SkN5QUtLQUlVS0FJQUlRRWdDMEVCY1VVRVFDQUJJUWRCQVNFTERBWUxRUUVoQ3lBQklBZEdEUVVnQ0VIQUFXb2lBU0FGUVhJZ0RSQVFJQUZCeDU4QkVBNGFJQWdvQXZ3Q0lRb2dBUkFSREFnTElBb29BaFFvQWdBaEFTQUNRUUZ4UlFSQUlBRWhCa0VCSVFJTUJRdEJBU0VDSUFFZ0JrWU5CQ0FJUWNBQmFpSUJJQVZCY2lBTkVCQWdBVUhrbmdFUURob2dDQ2dDL0FJaENpQUJFQkVNQndzZ0hrVUVRQ0FJUWNBQmFpSUJJQVZCY2lBTkVCQWdBVUdQdkFFUURob2dDQ2dDL0FJaENpQUJFQkVNQndzZ0NpZ0NGQ2dDQUNFQklBeEZCRUFnQVNFRVFRRWhEQXdFQzBFQklRd2dBU0FFUmcwRElBaEJ3QUZxSWdFZ0JVRnlJQTBRRUNBQlFibWVBUkFPR2lBSUtBTDhBaUVLSUFFUUVRd0dDMEVCSVJRZ0FTRURJQWt2QVI1Qi92OERjVUVjUmcwQ0lBaEJ3QUZxSWdFZ0JVRnlJQTBRRUNBSVFaZ0JhaUlESUFWQitqUVFOeUFCSUFNUUVob2dBVUgrK3dBUURob2dDQ2dDL0FJaENpQURFQThhSUFFUUVRd0ZDMEVCSVJZTElBRWhBd3NnQ2hCTUlRb01BUXNMQWtBQ1FBSkFBa0FDUUFKQUFrQWdFVUVBRUJzaUEwRUJhdzRFQVFJREJBQUxJQU5CbENsSElCcEJBMGR5RFFVZ0ZrVU5CQXdGQ3lBQlFRRnhSUTBEREFRTElBRWdFM0pCQVhGRkRRSU1Bd3NnRTBVTkFRd0NDeUFUSUJSRmNnMEJDeUFKTHdFZVFmNy9BM0ZCSEVjTkFDQUZJQWxCQVJBYklnOFFJQ0VKQ3lBSkx3RWVRUjVHQkVBZ0JTQVBRUXNRd0FJTkFnc2dCU0FQUVFJUXdBSWdDM0pCQVhGRkJFQWdDUzhCSGlFQ0lBaEJ3QUZxSWdFZ0JVRnlJQTBRRUNBSVFaZ0JhaUlESUFWQnRTWkJ0Q1lnQWtFZVJoc1FOeUFCSUFNUUVob2dBVUhRNGdJUURob2dDQ2dDL0FJaENpQURFQThhSUFFUUVRd0JDeUFJUWJBQmFrR3RLMEhhS3lBVEd4QVVJUTBDUUFKQUlBdEJBWEVFUUVFQklRc2dDUzhCSGtFY1JnUkFJQWhCd0FGcUlBVWdDVUVDRUJzUTNRRWdDQ2dDeEFGQkFTQUlMUURCQVJ0QkFTQUlMUURBQVJzaEN5QUZJQWxCQVJBYkVDQWhDUXNnQ0VFb2FpQVZJQVJCQVVZYklCVWdEQnNoQWtFQUlRUURRQ0FFSUF0R0RRSWdDRUVBTmdLWUFTQUZJQWtnQ0VHWUFXb1FyUWdpQ2cwRElBVWdDUkRTRFNFQklBZ29BcGdCSWdvZ0JHd2dCMm9pREVFQ2RDSURRZi8vQUVzTkFpQURJQVpxSWc4Z0FXb2dDaUFNYWtFQ2RDQUJHeUVNSUE4Z0F5QUJHeUVLQWtBRFFDQUlJQW8yQW9BQklBb2dERThOQVNBSVFjQUJhaUFDSUFoQmdBRnFFSllCSUFndEFNUUJCRUFnQ0NnQ2dBRkJBV29oQ2d3QkN3c2dDRUhBQVdvaUFTQUZRWElnRVJBUUlBRkJ1cW9LRUE0YUlBRWdEUkFTR2lBQlFlV0pDaEFPR2lBQklBZ29Bb0FCUVFKMkVDRWFJQUZCNThzSkVBNGFJQUVnQ0NnQ2dBRkJBM0VRSVJvZ0NDZ0MvQUloQ2lBQkVCRU1CQXNnQkVFQmFpRUVEQUFMQUFzZ0NFSUFOd09nQVNBSVFnQTNBNWdCSUFoQmdJQ0EvQU0yQXFnQklBaENBRGNEaUFFZ0NFSUFOd09BQVNBSVFZQ0FnUHdETmdLUUFTQUZJQThRM2dFaUFVRUVhaUVESUFFb0FnQWhDZ05BQWtBQ1FDQURJQXBHQkVCQkFTRUVBMEFnQkNBSktBSVFJQWtvQWd4clFRUjFUeUlMQkVBZ0J5RUtEQU1MSUFnZ0JFRUJheUlHTmdMQUFTQUlRWmdCYWlBSVFjQUJhaERzQVNJQlJRUkFJQWhCd0FGcUlnRWdCVUZ5SUFrUUVDQUlRZkFBYWlJRElBVkJ0eVlRTnlBQklBTVFFaG9nQVVIR3d3a1FEaG9nQVNBR0VDRWFJQUZCZ01vQUVBNGFJQWdvQXZ3Q0lRb2dBeEFQR2lBQkVCRU1Bd3NnQVNnQ0RDRURJQVVnQ1NBRUVCc1FJQ0VNSUFoQkFEWUNjQ0FGSUF3Z0NFSHdBR29RclFnaUNnMENJQVVnREJEU0RTRUNJQWdnQmpZQ3dBRWdDRUdBQVdvZ0NFSEFBV29RcVFJRWZ5QUlJQVkyQXNBQklBaEJnQUZxSUFoQndBRnFFTkFCS0FJQUJVRUFDeUVCQWtBZ0EwRUNkQ0lHUWYvL0FFc05BQUpBQWtBZ0FrRUJhMEVDU3cwQUlBd3ZBUjVCSEVjTkFDQUJJQUVnQW1vaUFpQUJJQUpMR3lFR0lBTWhBZ05BSUFJZ0NDZ0NjQ0FEYWs4TkF5QUNRUUowSVF3Z0FTRUtBMEFnQmlBS1J3UkFJQWdnQ2lBTWFqWUNiQ0FJUWNBQmFpQVZJQWhCN0FCcUVKWUJJQWd0QU1RQlJRMEVJQXBCQVdvaENnd0JDd3NnQWtFQmFpRUNEQUFMQUFzZ0NpQUhJQW9iSVFjZ0FTQUdhaUlCSUFKcUlBZ29BbkFnQTJwQkFuUWdBaHNoQXlBQklBWWdBaHNoQ2dOQUlBZ2dDallDYkNBRElBcE5EUUlnQ0VIQUFXb2dGU0FJUWV3QWFoQ1dBU0FJTFFERUFRUkFJQWdvQW14QkFXb2hDZ3dCQlNBSVFjQUJhaUlCSUFWQmNpQVJFQkFnQVVHNnFnb1FEaG9nQVNBTkVCSWFJQUZCNVlrS0VBNGFJQUVnQ0NnQ2JFRUNkaEFoR2lBQlFlZkxDUkFPR2lBQklBZ29BbXhCQTNFUUlSb2dDQ2dDL0FJaENpQUJFQkVNQmdzQUN3QUxJQWhCd0FGcUlnRWdCVUZ5SUJFUUVDQUJRYnFxQ2hBT0dpQUJJQTBRRWhvZ0FVSGxpUW9RRGhvZ0FTQUNFQ0VhSUFGQjU4c0pFQTRhSUFFZ0NoQWhHaUFJS0FMOEFpRUtJQUVRRVF3REN5QUVRUUZxSVFRTUFBc0FDd0pBQWtBZ0NpZ0NFRUVlYXc0Q0FBRURDeUFJSUFvb0FpQTJBc0FCSUFoQm1BRnFJQWhCd0FGcUVPd0JJZ0ZGQkVBZ0NpZ0NGQ2dDQUNFQklBZ2dDaWdDSURZQ3dBRWdDRUdZQVdvZ0NFSEFBV29RMEFFZ0FUWUNBQXdEQ3lBQktBSU1JQW9vQWhRb0FnQkdEUUlnQ0VIQUFXb2lBU0FGUVhJZ0NSQVFJQUZCeHNNSkVBNGFJQUVnQ2lnQ0lCQzhBaG9nQVVHK2hnRVFEaG9nQ0NnQy9BSWhDaUFCRUJGQkFDRUxEQUVMSUFnZ0NpZ0NJRFlDd0FFZ0NFR0FBV29nQ0VIQUFXb1E3QUVpQVVVRVFDQUtLQUlVS0FJQUlRRWdDQ0FLS0FJZ05nTEFBU0FJUVlBQmFpQUlRY0FCYWhEUUFTQUJOZ0lBREFJTElBRW9BZ3dnQ2lnQ0ZDZ0NBRVlOQVNBSVFjQUJhaUlCSUFWQmNpQUpFQkFnQVVIR3d3a1FEaG9nQVNBS0tBSWdFTHdDR2lBQlFaZUdBUkFPR2lBSUtBTDhBaUVLSUFFUUVVRUFJUXNMSUFoQmdBRnFFRThnQ0VHWUFXb1FUeUFMUlEwRERBSUxJQW9RVENFS0RBQUxBQXRCQUNFS0N5QU5FQThhQ3lBS0RRRUxJQkJCQVdvaEVBd0JDd3NnQ0VFUWFoQlBJQWhCS0dvUVR5QUlRVUJyRUU4Z0NFSFlBR29RVHlBS0RRUUxJQkV2QVI0aENnc2dFVUhNQUdvaEVTQUtRZi8vQTNGQkUwY05BUXNMUVFBaENnc2dDRUdBQTJva0FDQUtEQUlMSUFOQnpBQnFJUU1NQUFzQUN5SUJEUUVqQUVIUUFHc2lDaVFBSUFwQkNHb2lEVUlBTndNQUlBcENBRGNER0NBS1FTaHFJZ0ZDQURjREFDQUtRZ0EzQXhBZ0NpQU5OZ0lFSUFvZ0NrRVVhaUlRTmdJZ0lBb2dBVFlDSkNBS0lBVTJBZ0FnQlVIc0Ftb2hFeUFLUVNScUlRa2dDa0VFY2lFTUlBVW9BdWdDSVFjQ1FBSkFBa0FEUUNBSElCTkhCRUFDUUNBSEtBSWNSUTBBSUFvb0FnQWdCeWdDRUJBZ0lnSkZEUU1nQjBFWWFpRVVJQWNvQWhRaEFRTkFJQUVnRkVZTkFTQUJLQUlRUVF0R0JFQkJBQ0VFSXdCQmtBSnJJZ01rQUNBQlFSQnFJZ1lvQWdRb0FnQWhDQUpBQWtBZ0NpZ0NBQ2dDQUNnQ0FCQkhSUTBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSURpd1BEak1DQWh3QkVBa0xDeGdaRnd3RERRVVJFeEl6QkFnR0d3WUdCaDB6TXpNek16TVZNeFF6RkJVYUNnQUxBa0FnQ0VISEtXc09JZ0VCQVFFQkFRRUJBVE16QVFFQkFUTXpNek16TXpNek16TXpNek16TXpNekFRRUFDd0pBSUFoQndDSnJEaDBXRmhZV0ZqTXpNeDhmSURNek16TXpMek16TXpNeklqTWhNek16TUFBTElBaEJ3Q0JyUVFWSkRSMENRQ0FJUWFZcGF3NElCd2N6TXpNekpDTUFDeUFJUWY0cGEwRUVTUTBkSUFoQmxpZEdEU1FnQ0VHUUtVWU5KU0FJUVlVdlJ3MHlDeUFLS0FJQUtBSUFLQUlBRUVkRkRTd2dCaWdDQkNnQ0FDSUVRY2NwYXc0aUtDZ25KeWNuS3lzbUtpb3BLU3NtS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9tSmlVTElBb2dCaUFDSUFJZ0FoRG1GaUVFRERBTElBb29BZ0FvQWdBb0FnQVFSd1JBSUFNZ0FqWUNLQ0FESUFvMkFpUWdBMEdrOHg4MkFpQWdBeUFEUVNCcUlnZzJBakFnQ2lBR0lBSkJCQ0FJRU1zRklRUWdDQkFXSUFRTk1Bc2dDaUFHSUFJZ0FpQUNFT1VXSVFRTUx3c2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWNqekh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU1FS0lRUWdDQkFXSUFRTkx3c2dDaUFHSUFJZ0FpQUNFT1FXSVFRTUxnc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWV6ekh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRVBvTklRUWdDQkFXSUFRTkxnc2dDaUFHSUFJZ0FpQUNFT01XSVFRTUxRc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUdLQUlFS0FJQU5nSXNJQU1nQWpZQ0tDQURJQW8yQWlRZ0EwR1E5QjgyQWlBZ0F5QURRU0JxSWdnMkFqQWdDaUFHSUFKQkF5QUlFTFlJSVFRZ0NCQVdJQVFOTFFzZ0NpQUdJQUlnQWlBQ0VPSVdJUVFNTEFzZ0NpZ0NBQ2dDQUNnQ0FCQkhCRUFnQXlBR0tBSUVLQUlBTmdJc0lBTWdBallDS0NBRElBbzJBaVFnQTBHMDlCODJBaUFnQXlBRFFTQnFJZ2cyQWpBZ0NpQUdJQUpCQXlBSUVNc0ZJUVFnQ0JBV0lBUU5MQXNnQ2lBR0lBSWdBaUFDRU9FV0lRUU1Ld3NnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdJb0lBTWdDallDSkNBRFFkajBIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVQb05JUVFnQ0JBV0lBUU5Ld3NnQ2lBR0lBSWdBaUFDRU9BV0lRUU1LZ3NnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdJb0lBTWdDallDSkNBRFFmejBIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5LZ3NnQ2lBR0lBSWdBaUFDRU44V0lRUU1LUXNnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdJb0lBTWdDallDSkNBRFFhRDFIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5LUXNnQ2lBR0lBSWdBaUFDRU40V0lRUU1LQXNDUUNBS0tBSUFLQUlBS0FJQUVFZEZEUUFnQmlnQ0VFRi9Sd1JBSUFNZ0FqWUNMQ0FESUFZMkFpZ2dBeUFLTmdJa0lBTkJ4UFVmTmdJZ0lBTWdBMEVnYWlJSU5nSXdJQW9nQmlBQ0lBZ1F6d0loQkNBSUVCWWdCRVVOQVF3cEN5QURJQUkyQWl3Z0F5QUdOZ0lvSUFNZ0NqWUNKQ0FEUWVqMUh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU4wV0lRUWdDQkFXSUFRTktBc2dDaUFHSUFJZ0FpQUNFTndXSVFRTUp3c2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWRUMkh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFRTkp3c2dDaUFHSUFJZ0FpQUNFTnNXSVFRTUpnc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWZqMkh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBa0VDSUFnUXl3VWhCQ0FJRUJZZ0JBMG1DeUFLSUFZZ0FpQUNJQUlRMmhZaEJBd2xDeUFLSUFZZ0FpQUNJQUlRMlJZaEJBd2tDeUFLSUFZZ0FpQUNJQUlRMkJZaEJBd2pDd0pBSUFvb0FnQW9BZ0FvQWdBUVIwVU5BQ0FHS0FJUVFYOUhCRUFnQXlBQ05nSW9JQU1nQ2pZQ0pDQURRYno1SHpZQ0lDQURJQU5CSUdvaUNEWUNNQ0FLSUFZZ0FpQUlFTThDSVFRZ0NCQVdJQVJGRFFFTUpBc2dBeUFDTmdJb0lBTWdDallDSkNBRFFlRDVIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVOMFdJUVFnQ0JBV0lBUU5Jd3NnQ2lBR0lBSWdBaUFDRU5jV0lRUU1JZ3NnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdJb0lBTWdDallDSkNBRFFkejdIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5JZ3NnQ2lBR0lBSWdBaUFDRU5ZV0lRUU1JUXNnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdMb0FTQURRWUQ4SHpZQzRBRWdBeUFEUWVBQmFqWUM4QUVnQXlBS05nTGtBU0FEUVFBMkFoQUNRQ0FLS0FJQUlBWWdBaUFEUVJCcUVMMERJZ1FOQUNBS0tBSUFJQU1vQWhBUUlDSUVMd0VlUVJ4SEJFQWdBMEg0QVdvaUNDQUdJQUlRc3dJZ0EwRWdhaUlMSUFoQjc1TUhFQzBnQTBIZ0FXb2dDeENKQWlFRUlBc1FEeG9nQ0JBUEdnd0JDeUFLS0FJQUlBUW9BZ0FvQWdnaUNCQlFSUVJBSUFOQitBRnFJZ2dnQmlBQ0VMTUNJQU5CSUdvaUN5QUlRWjdOQnhBdElBTkI0QUZxSUFzUWlRSWhCQ0FMRUE4YUlBZ1FEeG9NQVF0QkFDRUVJQW9vQWdBZ0NCQStJaEZCSUVZTkFDQURRU0JxRU00QklRc2dBMEg0QVdvaUNDQUdJQUlRc3dJZ0N5QUlFQkpCL2FZS0VBNGdFUkFoUWZ5WENCQU9HaUFJRUE4YUlBZ2dDMEVFYWhCQ0lBTkI0QUZxSUFnUWlRSWhCQ0FJRUE4YUlBc1F1d0VhQ3lBRFFlQUJhaEFXSUFRTklRc2dDaUFHSUFJZ0FpQUNFTlVXSVFRTUlBc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWFUOEh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBa0VDSUFnUXl3VWhCQ0FJRUJZZ0JBMGdDeUFLSUFZZ0FpQUNJQUlRMUJZaEJBd2ZDeUFLS0FJQUtBSUFLQUlBRUVjRVFDQUdLQUlFS0FJQUlRUWdCaWdDRUVGL1J3UkFJQU5CSUdvaUJpQUtLQUlBUVhJZ0FoQVFJQVpCN1pZS0VBNGFJQVlnQ2lnQ0FFR0FBMnBCSENBRUVJOEJFQTRhSUFaQnpJZ0tFQTRhSUFNb0F0d0JJUVFnQmhBUkRDQUxJQU1nQkRZQ0xDQURJQUkyQWlnZ0F5QUtOZ0lrSUFOQnlQd2ZOZ0lnSUFNZ0EwRWdhaUlJTmdJd0lBb2dCaUFDSUFnUXp3SWhCQ0FJRUJZZ0JBMGZDeUFLSUFZZ0FpQUNJQUlRMHhZaEJBd2VDeUFLS0FJQUtBSUFLQUlBRUVkRkRSd2dCaWdDQkNnQ0FDRUxJQVlvQWhCQmYwY0VRQ0FEUVNCcUlnWWdDaWdDQUVGeUlBSVFFQ0FHUWUyV0NoQU9HaUFHSUFvb0FnQkJnQU5xUVJ3Z0N4Q1BBUkFPR2lBR1FjeUlDaEFPR2lBREtBTGNBU0VFSUFZUUVRd2VDeUFESUFzMkFpd2dBeUFDTmdJb0lBTWdDallDSkNBRFFlejhIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5IU0FDRVBjQklnaEJBVVlOSEVFQUlRUWdDRUgvLy8vL0IwWU5IU0FMUVFFUTRnTWhCQ0FEUVNCcUlnZ2dDaWdDQUVGeUlBSVFFQ0FEUWVBQmFpSVJJQW9vQWdBZ0JCQTNJQWdnRVJBU0dpQURRZmdCYWlJUElBb29BZ0FvQWdBb0FnQVFnUUlnQ0NBUEVCSWFJQWhCaVpZS0VBNGFJQWdnQ2lnQ0FFR0FBMnBCSENBTEVJOEJFQTRhSUFoQnk4Y01FQTRhSUFOQkVHb2lDeUFLSUFZZ0FpQUNJQUpCLy8vLy93Y1FpZ0VnQ0NBTEVCSWFJQWhCOS9BTUVBNGFJQU1nQ2lBQ0VJQUNJQWdnQXhBU0dpQURLQUxjQVNFRUlBTVFEeG9nQ3hBUEdpQVBFQThhSUJFUUR4b2dDQkFSREIwTElBb29BZ0FvQWdBb0FnQVFSMFVOR3lBR0tBSUVLQUlBSVFzZ0JpZ0NFRUYvUndSQUlBTkJJR29pQmlBS0tBSUFRWElnQWhBUUlBWkI3WllLRUE0YUlBWWdDaWdDQUVHQUEycEJIQ0FMRUk4QkVBNGFJQVpCeklnS0VBNGFJQU1vQXR3QklRUWdCaEFSREIwTElBTWdDellDTENBRElBSTJBaWdnQXlBS05nSWtJQU5Ca1AwZk5nSWdJQU1nQTBFZ2FpSUlOZ0l3SUFvZ0JpQUNRUVFnQ0JDMkNDRUVJQWdRRmlBRURSd2dBaEQzQVNJSVFRRkdEUnRCQUNFRUlBaEIvLy8vL3dkR0RSd2dDMEVCRU9JRElRUWdBMEVnYWlJSUlBb29BZ0JCY2lBQ0VCQWdBMEhnQVdvaUVTQUtLQUlBSUFRUU55QUlJQkVRRWhvZ0EwSDRBV29pRHlBS0tBSUFLQUlBS0FJQUVJRUNJQWdnRHhBU0dpQUlRWW1XQ2hBT0dpQUlJQW9vQWdCQmdBTnFRUndnQ3hDUEFSQU9HaUFJUWN2SERCQU9HaUFEUVJCcUlnc2dDaUFHSUFJZ0FpQUNRZi8vLy84SEVJb0JJQWdnQ3hBU0dpQUlRZmZ3REJBT0dpQURJQW9nQWhDQUFpQUlJQU1RRWhvZ0F5Z0MzQUVoQkNBREVBOGFJQXNRRHhvZ0R4QVBHaUFSRUE4YUlBZ1FFUXdjQ3lBS0tBSUFLQUlBS0FJQUVFY0VRQ0FESUFJMkFpZ2dBeUFLTmdJa0lBTkJ0UDBmTmdJZ0lBTWdBMEVnYWlJSU5nSXdJQW9nQmlBQ1FRTWdDQkRMQlNFRUlBZ1FGaUFFRFJ3TElBb2dCaUFDSUFJZ0FoRFNGaUVFREJzTElBb29BZ0FvQWdBb0FnQVFSMFVOR0NBRElBSTJBaWdnQXlBS05nSWtJQU5CMlAwZk5nSWdJQU1nQTBFZ2FpSUlOZ0l3SUFvZ0JpQUNRUVFnQ0JDL0NpRUVJQWdRRmlBRURSb01HQXNnQ2lnQ0FDZ0NBQ2dDQUJCSFJRMFhJQU1nQWpZQ0tDQURJQW8yQWlRZ0EwSEUvaDgyQWlBZ0F5QURRU0JxSWdnMkFqQWdDaUFHSUFKQkFpQUlFTDhLSVFRZ0NCQVdJQVJGRFJjTUdRc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWVqK0h6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFRTkdRc2dDaUFHSUFJZ0FpQUNFTkVXSVFRTUdBc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBQ1FDQUtLQUlBS0FJQUtBSUFFRWRGRFFBZ0FpOEJIaENqQWcwQUlBTkJJR29pQmlBS0tBSUFRWElnQWhBUUlBTkI0QUZxSWdnZ0NpZ0NBRUhLSWhBM0lBWWdDQkFTR2lBR1FZcTdEQkFPR2lBRFFmZ0JhaUlMSUFJUTRRTWdCaUFMRUJJYUlBWkJrS2NIRUE0YUlBTW9BdHdCSVFRZ0N4QVBHaUFJRUE4YUlBWVFFUXdaQ3lBRElBSTJBaWdnQXlBS05nSWtJQU5CalA4Zk5nSWdJQU1nQTBFZ2FpSUlOZ0l3SUFvZ0JpQUNRUU1nQ0JDMkNDRUVJQWdRRmlBRURSZ0xJQW9nQmlBQ0lBSWdBaERRRmlFRURCY0xJQW9vQWdBb0FnQW9BZ0FRUjBVTkZpQURRU0JxSWdZZ0NpZ0NBRUZ5SUFJUUVDQUdRZHVBQ0JBT0dpQURLQUxjQVNFRUlBWVFFUXdXQ3lBS0lBWWdBaUFESUFJUXpoWWFEQlFMSUFvb0FnQW9BZ0FvQWdBUVJ3UkFJQU1nQmpZQ0xDQURJQUkyQWlnZ0F5QUtOZ0lrSUFOQnNQOGZOZ0lnSUFNZ0EwRWdhaUlJTmdJd0lBb2dCaUFDSUFnUXp3SWhCQ0FJRUJZZ0JBMFZDeUFLSUFZZ0FpQUNJQUlRelJZaEJBd1VDeUFLS0FJQUtBSUFLQUlBRUVjRVFDQURJQVkyQWl3Z0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWRUL0h6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFRTkZBc2dDaUFHSUFJZ0FpQUNFTXdXSVFRTUV3c2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUdOZ0lzSUFNZ0FqWUNLQ0FESUFvMkFpUWdBMEg0L3g4MkFpQWdBeUFEUVNCcUlnZzJBakFnQ2lBR0lBSWdDQkRQQWlFRUlBZ1FGaUFFRFJNTElBb2dCaUFDSUFJZ0FoRExGaUVFREJJTElBb29BZ0FvQWdBb0FnQVFSd1JBSUFNZ0JqWUNMQ0FESUFJMkFpZ2dBeUFLTmdJa0lBTkJuSUFnTmdJZ0lBTWdBMEVnYWlJSU5nSXdJQW9nQmlBQ0lBZ1F6d0loQkNBSUVCWWdCQTBTQ3lBS0lBWWdBaUFDSUFJUXloWWhCQXdSQ3lBS0tBSUFLQUlBS0FJQUVFY0VRQ0FESUFZMkFpd2dBeUFDTmdJb0lBTWdDallDSkNBRFFjQ0FJRFlDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5FUXNnQ2lBR0lBSWdBaUFDRU1rV0lRUU1FQXNnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFHS0FJRUtBSUFOZ0xnQVNBRElBSTJBaWdnQXlBRFFlQUJhallDTENBRElBbzJBaVFnQTBIa2dDQTJBaUFnQXlBRFFTQnFJZ2cyQWpBZ0NpQUdJQUlnQ0JEUEFpRUVJQWdRRmlBRURSQUxJQW9nQmlBQ0lBSWdBaERJRmlFRURBOExJQW9vQWdBb0FnQW9BZ0FRUndSQUlBTWdCaWdDQkNnQ0FEWUM0QUVnQXlBQ05nSW9JQU1nQTBIZ0FXbzJBaXdnQXlBS05nSWtJQU5CaUlFZ05nSWdJQU1nQTBFZ2FpSUlOZ0l3SUFvZ0JpQUNRUUlnQ0JDMkNDRUVJQWdRRmlBRURROExJQW9nQmlBQ0lBSWdBaERIRmlFRURBNExJQW9vQWdBb0FnQW9BZ0FRUndSQUlBTWdCaWdDQkNnQ0FEWUNBQ0FESUFJMkFpZ2dBeUFETmdJc0lBTkJySUVnTmdJZ0lBTWdBMEVnYWpZQ01DQURJQW8yQWlRZ0EwRUFOZ0lRQWtBZ0NpZ0NBQ0FHSUFJZ0EwRVFhaEM5QXlJRURRQkJBQ0VFSUFvb0FnQWdBeWdDRUJCUURRQWdBMEg0QVdvaUNDQUdJQUlRc3dJZ0EwSGdBV29pQ3lBSVFiN05CeEF0SUFOQklHb2dDeENKQWlFRUlBc1FEeG9nQ0JBUEdnc2dBMEVnYWhBV0lBUU5EZ3NnQ2lBR0lBSWdBaUFDRU1ZV0lRUU1EUXNnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFHS0FJRUtBSUFOZ0xnQVNBRElBSTJBaWdnQXlBRFFlQUJhallDTENBRElBbzJBaVFnQTBIUWdTQTJBaUFnQXlBRFFTQnFJZ2cyQWpBZ0NpQUdJQUlnQ0JENkRTRUVJQWdRRmlBRURRMExJQW9nQmlBQ0lBSWdBaERGRmlFRURBd0xJQVJCQmtZTkFDQUVRWVV2UncwRUN5QURJQVEyQWl3Z0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUVppQ0lEWUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFSRkRRVU1DZ3NnQXlBRU5nSXNJQU1nQWpZQ0tDQURJQW8yQWlRZ0EwRzhnaUEyQWlBZ0F5QURRU0JxSWdnMkFqQWdDaUFHSUFKQkF5QUlFTXNGSVFRZ0NCQVdJQVJGRFFRTUNRc2dBeUFFTmdJc0lBTWdBallDS0NBRElBbzJBaVFnQTBIZ2dpQTJBaUFnQXlBRFFTQnFJZ2cyQWpBZ0NpQUdJQUpCQXlBSUVMWUlJUVFnQ0JBV0lBUkZEUU1NQ0FzZ0F5QUVOZ0xzQVNBRElBSTJBdWdCSUFOQmhJTWdOZ0xnQVNBRElBTkI0QUZxTmdMd0FTQURJQW8yQXVRQklBTkJBRFlDRUNBRFFRQTJBZ0FnQTBFQU5nS01BaUFEUVFBMkFvZ0NJQU5CQURZQ2hBSUNRQ0FLS0FJQUlBWWdBaUFEUVJCcUVMMERJZ1FOQUFKQUFrQWdDaWdDQUNBREtBSVFJQU1nQTBHTUFtb2dBMEdJQW1vZ0EwR0VBbW9RcHdORkRRQWdBeWdDQUVFRFJ3MEFJQU1vQW93Q1FRUkdEUUVMSUFOQklHb1F6Z0VoQ3lBRFFmZ0JhaUlJSUFZZ0FoQ3pBaUFMSUFnUUVrR0wyUWtRRGlBREtBS01BaEFoUWVuU0NSQU9JQU1vQWdBUUlVR3UyZ29RRGtFRUVDRkIyaWNRRGtFREVDRkIvSmNJRUE0YUlBZ1FEeG9nQ0NBTFFRUnFFRUlnQTBIZ0FXb2dDQkNKQWlFRUlBZ1FEeG9nQ3hDN0FSb01BUXNnQ2lBR0lBSkJBeUFEUWVBQmFpQURLQUtJQWhEM0RTRUVDeUFEUWVBQmFoQVdJQVJGRFFJTUJ3dEJoS0lKUVpDZEFrSFlIMEd4eFFJUUFBQUxJQU1nQkRZQ0xDQURJQUkyQWlnZ0F5QUtOZ0lrSUFOQjlJRWdOZ0lnSUFNZ0EwRWdhaUlJTmdJd0lBb2dCaUFDSUFnUXdRb2hCQ0FJRUJZZ0JBMEZDeUFLSUFZZ0FpQUNJQUlReEJZaEJBd0VDeUFLS0FJQUtBSUFLQUlBRUVjRVFDQURJQVkyQWl3Z0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWFpRElEWUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFRTkJBc2dDaUFHSUFJZ0FpQUNFTU1XSVFRTUF3c2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUdOZ0lzSUFNZ0FqWUNLQ0FESUFvMkFpUWdBMEhNZ3lBMkFpQWdBeUFEUVNCcUlnZzJBakFnQ2lBR0lBSWdDQkRQQWlFRUlBZ1FGaUFFRFFNTElBb2dCaUFDSUFJZ0FoRENGaUVFREFJTElBb2dCaUFDSUFJZ0FoREJGaUVFREFFTFFRQWhCQXNnQTBHUUFtb2tBQ0FFSWdNTkJ3c2dBUkJNSVFFTUFBc0FDeUFIRUV3aEJ3d0JDd3NnQ2lnQ0RFVU5BU0FLS0FJQUlnRW9BcVFCSVFRZ0NrRkFhMEVFY2lFR0lBRW9BcUFCSVFkQkFDRURBa0FEUUNBRUlBZEdEUU1DUUFKQUFrQUNRQ0FITHdFZVFUWnJEZ01BQWdFQ0N5QUtLQUlRRFFRZ0NpQUhLQUlvTmdJUUlBa1E2QllnQ2lBS0tBSUFJQW9vQWhBUXBRb2lBVFlDSUNBQktBSUVJUWdnQVNnQ0FDRUJBMEFnQVNBSVJnMENJQW9vQWdBZ0FTZ0NBQkNsQmlJQ0JFQWdDU0FDS0FJQUlBSkJCR29RNXhZTElBRkJCR29oQVF3QUN3QUxJQW9vQWhCRkRRRWdDaUFRTmdJZ0lBcEJBRFlDRUNBSkVPZ1dDeUFLSUFZMkFrQWdDa0lBTndKRUlBY29BaEFoQ0NBSEtBSU1JUUlEUUFKQUlBSWdDRVlpQzBVRVFDQUNLQUlFRU1ZS1JRMEJJQW9nQnlnQ0FDQUNMd0VBUVFKMGFpZ0NBQ0lCTmdJOElBRWdCeWdDS0VZTkFTQUtRVEJxSUFwQlFHc2dDa0U4YWhEVkJTQUtMUUEwUlEwQklBd2dDa0U4YWhEQUF5SUJJQTFHRFFFZ0FVRVlhaUVSSUFGQkZHb2hEd05BSUJFb0FnQWlBU0FQUmcwQ0lBRkJCR29oRVNBQlFRaHFJQWNRaVFJaUFVVU5BQXNnQVNFREN5QUhRY3dBYWlFSElBcEJRR3NReEFNZ0N3MEREQWNMSUFKQkVHb2hBZ3dBQ3dBTEMwRzFrZ2RCa0owQ1FiZ0ZRZGJoQXhBQUFBdEIwNUVIUVpDZEFrR3BCVUhXNFFNUUFBQUxRYWt2UVpDZEFrSFdJVUhZeFFJUUFBQUxRUUFoQXdzZ0NSQ0REaUFRRURJYUlBd2dEQ2dDQkJEd0RTQUtRZEFBYWlRQUlBTWlBUTBCSUFVb0FxUUJJUkFnQlNnQ29BRWhBd05BSUFNZ0VFWUVRRUVBSVFFTUF3dEJBQ0VISXdCQjhBRnJJZ0VrQUFKQUFrQWdBeThCSGtFMlJ3MEFJQVVnQXlnQ0tCQ2ZBU0lJUlFSQUlBRkJNR29pQWlBRlFYOGdBeEFRSUFKQjE5Z0tFQTRhSUFJZ0F5Z0NLQkFoR2lBQ1FmeVhDQkFPR2lBQktBTHNBU0VISUFJUUVRd0NDeUFGSUFNb0FpZ1FwUW9pQWlnQ0JDRVBJQUlvQWdBaEFnTkFJQUlnRDBZTkFRSkFJQVVnQWlnQ0FDSUpFS1VHSWdSRkRRQWdCQ2dDQ0VVRVFDQUJRVEJxSWdJZ0JVRi9JQU1RRUNBQ1FmdlhDaEFPR2lBQ0lBa1FJUm9nQWtIOGx3Z1FEaG9nQVNnQzdBRWhCeUFDRUJFTUJBc2dCRUVFYWlFVElBUW9BZ0FoQmdOQUlBWWdFMFlOQVNBR0tBSVFJUlFnQVVFZ2FpSUtFRlVqQUVHZ0FXc2lCQ1FBSUFoQnBBTnFJUkVnQ0VHZ0Eyb2hGU0FFUVJCcUVJZ0RJZzFCQ0dvaEZrRUJJUXNDUUFKQUEwQWdGU0FSS0FJQUloRkhCRUFnQkJCVkFrQWdFVUVJYWlBVUlBUVE1UmNpRENBS1JYSU5BRUVBSVF0QkFTRU1JQVFvQWdRZ0JDMEFDeUlYSUJkQkdIUkJHSFZCQUVnYlJRMEFJQllnQkJBU1FkdjREQkFPR2dzZ0VVRUVhaUVSSUFRUUR4b2dEQTBCREFJTEN5QUxJQXBGY2cwQklBUWdEVUVNYWhCQ0lBb2dCQkNlQVNBRUVBOGFDMEVBSVFzTElBMFF1d0lhSUFSQm9BRnFKQUFnQzBVRVFDQUJRVEJxSWdRZ0JVRjJJQU1RRUNBRVFjekRDeEFPR2lBQlFSQnFJZ29nQlNBSkVDb2dCQ0FLRUJJYUlBUkJrY29MRUE0YUlBRWdCU0FES0FJb0VDb2dCQ0FCRUJJYUlBUkJqUFVNRUE0YUlBUWdBVUVnYWhBU0dpQUJLQUxzQVNFSElBRVFEeG9nQ2hBUEdpQUVFQkVMSUFGQklHb1FEeG9nQzBVTkJDQUdFRXdoQmd3QUN3QUxJQUZCSUdvaURCQlZJQVVnQ1JDZkFTRVRJd0JCb0FGcklnUWtBQ0FJUWJBRGFpRUdJQWhCckFOcUlSUWdCRUVRYWhDSUF5SVJRUWhxSVJWQkFTRUxBa0FDUUFOQUlCUWdCaWdDQUNJTlJ3UkFJQVFRVlNNQVFSQnJJZ1lrQUNBR0lBUTJBZ2dnQmlBVE5nSU1JQVpCREdvaEZpQUdRUWhxSVJjZ0RTZ0NHQ0lLUlFSQUVHOEFDeUFLSUFVZ0ZpQVhJQW9vQWdBb0FoZ1JCd0FoQ2lBR1FSQnFKQUFDUUNBTVJTQUtjZzBBUVFBaEMwRUJJUW9nQkNnQ0JDQUVMUUFMSWdZZ0JrRVlkRUVZZFVFQVNCdEZEUUFnRlNBRUVCSkIyL2dNRUE0YUN5QU5RUVJxSVFZZ0JCQVBHaUFLRFFFTUFnc0xJQXNnREVWeURRRWdCQ0FSUVF4cUVFSWdEQ0FFRUo0QklBUVFEeG9MUVFBaEN3c2dFUkM3QWhvZ0JFR2dBV29rQUNBTFJRUkFJQUZCTUdvaUJDQUZRWFlnQXhBUUlBUkJ6TU1MRUE0YUlBRkJFR29pQ2lBRklBa1FLaUFFSUFvUUVob2dCRUdSeWdzUURob2dBU0FGSUFNb0FpZ1FLaUFFSUFFUUVob2dCRUhpOHd3UURob2dCQ0FCUVNCcUVCSWFJQUVvQXV3QklRY2dBUkFQR2lBS0VBOGFJQVFRRVFzZ0FrRUVhaUVDSUFGQklHb1FEeG9nQ3cwQUN3d0JDMEVBSVFjTElBRkI4QUZxSkFBZ0J5SUJEUUpCQUNFSEl3QkJ3QUZySWdFa0FBSkFJQVV0QUlBQlFRSnhSUTBBSUFNb0FpUWlBa1VOQUNBRklBSVE4UUpGRFFBZ0JTQURLQUlrRUlFRkRRQWdBeWdDUkNFRUlBTW9Ba0FoQ2dOQUlBUWdDa1lOQVNBS0tBSUFJZ1l2QVI0aUFrRStheUlJUVJWTlFRQkJBU0FJZEVHQmhJQUJjUnNnQWtITUFrWWdBa0h4QUd0QkEwbHljZ1JBSUFwQkNHb2hDZ3dCQlNBQklBVkJkaUFHRUJBZ0FVSHE0d0FRRGhvZ0FTZ0N2QUVoQnlBQkVCRUxDd3NnQVVIQUFXb2tBQ0FEUWN3QWFpRURJQWNpQVVVTkFBc01BUXNnQVVILy93TnhRVGxHQkVBZ0JTMEFvQU5GQkVBZ0VrSFFBMm9pQXlBRlFYUWdDaEFRSUFOQnZKTUhFQTRhSUJJb0Fvd0ZJUUVnQXhBUkRBSUxJQklvQXZnQlFRSVFHeUVDSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCSUFWQjdBRnFJQUZCREdvUWxnRWdCUkRMQVNFRUlBRW9BZ3doQnlNQVFSQnJJZ0lrQUNBQ0lBYzJBZ3dnQWlBRVFiZ0RhaUFDUVF4cUVOVUZJQUpCRUdva0FDQUJRUkJxSkFBTEFrQWdCUzBBb0FORkRRQWdFaWdDK0FFZ0JSRExBVFlDT0NBU0tBTDRBU0FGRU1zQktBSk1OZ0k4SUFVUW53WkZEUUFnRWlnQytBRXZBUjRRaWc1RkRRQWdCUkRMQVNnQ1RDQVNLQUw0QVRZQ05Bc2dFaWdDK0FFaENFRUFJUUVqQUVId0FXc2lCQ1FBSUFSQjJBRnFJUVlDUUFKQUlBZ3ZBUjRpQWtFTVJnUi9JQWdvQWlBUTBRVU5BU0FJTHdFZUJTQUNDMEgvL3dOeElRY2pBRUVnYXlJQ0pBQWdCa0VBTmdJUUFrQWdCeERRQWdSQUlBSkI2T2dmTmdJSURBRUxBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUhRZlVCYXlJSlFRWkxEUUJCQVNBSmRDSU1RUlp4RFFFZ0RFSGdBSEVOQWlBSkRRQWdBa0g0NlI4MkFnZ01DQXNDUUNBSFFSeExEUUJCQVNBSGRFSGdnQVp4RFFFZ0IwRWNSdzBBSUFKQnJPc2ZOZ0lJREFnTEFrQWdCMEdrQW1zT0JRTUVCQVVGQUFzQ1FDQUhRY2NBYXc0RkFRRUhBZ0lBQ3lBSFFjc0NhMEVDU1NBSFFZQXNhMEVDU1hJTkFDQUhRU2RHRFFVZ0IwRTVSdzBHSUFKQjFPa2ZOZ0lJREFjTElBSkJqT2tmTmdJSURBWUxJQUpCc09rZk5nSUlEQVVMSUFKQm5Pb2ZOZ0lJREFRTElBSkJ3T29mTmdJSURBTUxJQUpCNU9vZk5nSUlEQUlMSUFKQmlPc2ZOZ0lJREFFTElBSkIwT3NmTmdJSUN5QUNJQUpCQ0dvaUJ6WUNHQ0FISUFZUXJBSWdCeEFXREFFTElBUkIyQUZxSVFjZ0NDZ0NJQ0VKSUFnb0FnQW9BaEFoQmlNQVFTQnJJZ0lrQUFKQUlBbEJDa1lFUUNBSFFmVHJIellDQUNBSElBYzJBaEFNQVFzZ0IwRUFOZ0lRSUFsQkNFWUVRQUpBSUFaQkNrY0VRQ0FHUVJSSERRRWdBa0dZN0I4MkFnZ2dBaUFDUVFocUlnWTJBaGdnQmlBSEVLd0NJQVlRRmd3REN5QUNRYnpzSHpZQ0NDQUNJQUpCQ0dvaUJqWUNHQ0FHSUFjUXJBSWdCaEFXREFJTElBSkI0T3dmTmdJSUlBSWdBa0VJYWlJR05nSVlJQVlnQnhDc0FpQUdFQllNQVFzQ1FDQUdRUXBIQkVBZ0JrRVVSdzBCSUFKQmhPMGZOZ0lJSUFJZ0FrRUlhaUlHTmdJWUlBWWdCeENzQWlBR0VCWU1BZ3NnQWtHbzdSODJBZ2dnQWlBQ1FRaHFJZ1kyQWhnZ0JpQUhFS3dDSUFZUUZnd0JDeUFDUWN6dEh6WUNDQ0FDSUFKQkNHb2lCallDR0NBR0lBY1FyQUlnQmhBV0N3c2dBa0VnYWlRQVFRQWhCd0pBQWtBQ1FBTkFBa0FnQVNFQ0lBY2dDQ2dDRUNBSUtBSU1JZ0ZyUVFSMVR3MEFJQWdvQWdBZ0FTQUhRUVIwYWlJSkx3RUFRUUowYWlnQ0FDSUdJUUVDUUFKQUFrQUNRQUpBQWtBZ0NTZ0NCRUVCYXc0RkFBRUZBQUFDQ3lBRklBWVFJQ0lKQkVBZ0NDOEJIaUVCQWtBZ0NTOEJIaERRQWtVTkFDQUJFTkFDRFFBZ0FSQzhDQTBBSUFnUTF3ME5BQ0FJRU0wRkRRQWdBUkM5Q0EwQUFrQUNRQ0FCUVRSckRnTUFEQUlCQ3lBSUtBSUFLQUlNUWZJcFJnMEJEQXNMSUFGQjhpbEhEUW9MQWtBZ0NTZ0NKQTBBSUFFUTBBSU5BQ0FCRUx3SURRQWdDQkRYRFEwQUlBZ1F6UVVOQUNBQkVMMElJQUZCK1FGclFRTkpJQUZCOVFGclFRTkpjaUFCUVF0clFRSkpjbklOQUFKQUFrQWdBVUUwYXc0REFBc0NBUXNnQ0NnQ0FDZ0NERUh5S1VZTkFRd0tDeUFCUWZJcFJ3MEpDeUFKRU0wRlJRMENJQUloQVNBSUVNMEZEUVVnQkVFWWFpSUJJQVZCZGlBSUVCQWdBVUd6elFvUURob2dCRUVJYWlJQ0lBVWdCaEFxSUFFZ0FoQVNHaUFCUWNyTUFoQU9HaUFFS0FMVUFTRUdJQUlRRHhvZ0FSQVJEQW9MSUFSQjJBRnFJQWNRaWdJRVFDQUlMd0VlRU5BQ1JRMERJQVVnQmhERkZRMERJQVJCR0dvaUFTQUZRWFlnQ0JBUUlBRkJzODBLRUE0YUlBUkJDR29pQ1NBRklBWVFLaUFCSUFrUUVob2dBVUdXeEFJUURob2dCQ2dDMUFFaEJpQUpFQThhSUFFUUVRd0VDeUFFUVJocUlnRWdCVUYySUFnUUVDQUJRY2pEQ3hBT0dpQUVRUWhxSWdrZ0JTQUdFQ29nQVNBSkVCSWFJQUZCd3ZjRUVBNGFJQVFvQXRRQklRWWdDUkFQR2lBQkVCRU1Bd3NqQUVFUWF5SUJKQUFnQVNBR05nSU1JQVZCckFGcUlBRkJER29RbmdJaENTQUJRUkJxSkFBZ0NRUkFJQVVnQmhBZ0x3RWVFTkFDRFFFZ0JFRVlhaUlCSUFWQmRpQUlFQkFnQVVISXd3c1FEaG9nQkVFSWFpSUpJQVVnQmhBcUlBRWdDUkFTR2lBQlFicnVCQkFPR2lBRUtBTFVBU0VHSUFrUUR4b2dBUkFSREFNTElBUkJHR29pQVNBRlFYWWdDQkFRSUFGQnlNTUxFQTRhSUFSQkNHb2lDU0FGSUFZUUtpQUJJQWtRRWhvZ0FVSEM5d1FRRGhvZ0JDZ0MxQUVoQmlBSkVBOGFJQUVRRVF3Q0N5QUNJUUVNQWdzakFFRVFheUlCSkFBZ0FTQUdOZ0lNSUFFZ0JVRWdhaUFCUVF4cUVKWUJJQUZCRUdva0FFRUFJUVlMSUFJaEFTQUdEUVVMSUFkQkFXb2hCd3dCQ3d0QkFDRUdJQUpGRFFJakFFRVFheUlCSkFBZ0FTQUNOZ0lNSUFWQklHb2dBVUVNYWhEWEJ5QUJRUkJxSkFBTUFnc2dCRUVZYWlJQklBVkJkaUFJRUJBZ0FVR3p6UW9RRGhvZ0JFRUlhaUlDSUFVZ0JoQXFJQUVnQWhBU0dpQUJRWjJWQkJBT0dpQUVLQUxVQVNFR0lBSVFEeG9nQVJBUkRBRUxJQVJCR0dvaUFTQUZRWFlnQ0JBUUlBRkJzODBLRUE0YUlBUkJDR29pQWlBRklBWVFLaUFCSUFJUUVob2dBVUhrbFFRUURob2dCQ2dDMUFFaEJpQUNFQThhSUFFUUVRc2dCRUhZQVdvUUZpQUVRZkFCYWlRQUlBWWlBUTBBUVFBaEJDTUFRZkFCYXlJQkpBQWdDaThCSGtFUlJnUkFBa0FDUUFKQUFrQWdDaWdDRUNBS0tBSU1JZ0pyUVJCR0JFQWdBaThCQWtFQlJ3MEJJQUl2QVFBaUFpQUtLQUlFSUFvb0FnQWlCMnRCQW5WUERRSWdBU0FISUFKQkFuUnFLQUlBSWdJMkF1d0JJQUVnQlRZQzZBRWdBVUhZQVdvQ2Z3SkFJQVVvQWdBb0FnQWlCa0VRVFFSQVFRRWhCMEVCSUFaMFFZQ2dCM0VOQVF0QkFDRUhRYno5QWd3QkMwR0kvUVFMRUJRaENBSkFJQVpCRjBjRVFDQUdRUkpIQkVBZ0JrRUJSdzBDSUFJUW5CWU5CeUFDRUpzV0RRY2dCU0FDRUtzSERRY2dBVUVZYWlJQ0lBVkJjeUFLRUJBZ0FrR1d2Z2tRRGhvZ0FVRUlhaUlISUFGQjZBRnFFS29ISUFJZ0J4QVNHaUFDUVpua0FoQU9HaUFDUWIyMENCQU9HaUFCS0FMVUFTRUVJQWNRRHhvZ0FoQVJEQWNMSUFJUW1oWU5CaUFDRUprV0RRWWdCU0FDRUtzSERRWWdBVUVZYWlJQ0lBVkJjeUFLRUJBZ0FrR1d2Z2tRRGhvZ0FVRUlhaUlISUFGQjZBRnFFS29ISUFJZ0J4QVNHaUFDUWUzakFoQU9HaUFDUWIyMENCQU9HaUFCS0FMVUFTRUVJQWNRRHhvZ0FoQVJEQVlMSUFJUW1oWWdBa0cxS1VaeURRVWdBaENaRmcwRklBSkJ0aWxySWdkQkNrc2dCMEVCUm5JTkJBd0ZDeUFHUVF0clFRRk5CRUFnQWlBSEVKZ1dEUVVDUUNBQ1FRcHJEZ1FHQUFBR0FBc2dCU0FDRUtzSERRVUNRQ0FGTFFDQkFVRWdjVVVOQUNBQ1FSUnJJZ0pCRzBzTkFFRUJJQUowUVlHQWdPd0FjUTBHQ3lBQlFSaHFJZ0lnQlVGeklBb1FFQ0FDUVphK0NSQU9HaUFCUVFocUlnY2dBVUhvQVdvUXFnY2dBaUFIRUJJYUlBSkIvN1lNRUE0YUlBSWdDQkFTR2lBQ1FhcmpBaEFPR2lBQ1FlZVlDQkFPR2lBQktBTFVBU0VFSUFjUUR4b2dBaEFSREFVTElBWkJFRXNOQkFKQVFRRWdCblFpQmtHSXdBTnhSUVJBSUFaQmtJQUVjVVVOQmlBQ0lBY1FseFlnQWtFNmEwRjljVVZ5RFFZZ0FrRUthdzRFQmdFQkJnRUxJQUlnQnhDWEZnMEZBa0FnQWtFS2F3NEVCZ0FBQmdBTElBVWdBaENyQncwRklBVWdBaENXRmcwRklBRkJHR29pQWlBRlFYTWdDaEFRSUFKQmxyNEpFQTRhSUFGQkNHb2lCeUFCUWVnQmFoQ3FCeUFDSUFjUUVob2dBa0dldHd3UURob2dBaUFJRUJJYUlBSkJxdU1DRUE0YUlBSkI1NWdJRUE0YUlBRW9BdFFCSVFRZ0J4QVBHaUFDRUJFTUJRc2dCU0FDRUtzSERRUWdCU0FDRUpZV0RRUWdBVUVZYWlJQ0lBVkJjeUFLRUJBZ0FrR1d2Z2tRRGhvZ0FVRUlhaUlISUFGQjZBRnFFS29ISUFJZ0J4QVNHaUFDUWVDMkRCQU9HaUFDSUFnUUVob2dBa0dxNHdJUURob2dBa0hubUFnUURob2dBU2dDMUFFaEJDQUhFQThhSUFJUUVRd0VDMEgwaWdkQmc1UUNRYVlDUWVDVUFSQUFBQXRCc1lvSFFZT1VBa0dxQWtIZ2xBRVFBQUFMUWZueENFR0RsQUpCcXdKQjRKUUJFQUFBQ3lBQ1FlRXBhMEVEU1NBQ1FjVUFhMEVDU1hJZ0FrSGdJbXNpQjBFVVRVRUFRUUVnQjNSQmg0RDhBSEViY2cwQUlBVWdBaENyQncwQUlBRkJHR29pQWlBRlFYTWdDaEFRSUFKQmxyNEpFQTRhSUFGQkNHb2lCeUFCUWVnQmFoQ3FCeUFDSUFjUUVob2dBa0hCNHdJUURob2dBa0c5dEFnUURob2dBU2dDMUFFaEJDQUhFQThhSUFJUUVRc2dDQkFQR2dzZ0FVSHdBV29rQUNBRUlnRU5BQ0FGSUFvUThSVWlBUTBBQW45QkFDRUJJd0JCc0FKcklnUWtBQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBS0lnY3ZBUjRpQWtIMkFXc09DZ01FQWdVR0J3RUlBUUVBQ3lBQ1FjQWlSaUFDUWVBaWEwRUNTWElOQUNBQ1FhNHBSdzBNQ3lBRkVNc0JJUW9nQkVFQU5nSVlJQVJDQURjREVDQUtJQVJCRUdvaUNoQ29DQ0FLRURJYUlBSkI0Q0pyRGdJSUNRY0xJQVVReXdFZ0J5Z0NLRUVCRUtvS0lnRU5DaUFGRU1zQktBSk1JQWMyQWpCQkFDRUJEQW9MSUFkQkFCQWJJUVlnQjBFQkVCc2hDQ0FGSUFZUWxSWWlBa1VFUUFKL0lBVVF5d0VoQ2lNQVFaQUJheUlDSkFBZ0FpQUlOZ0tJQVNBQ0lBWTJBb3dCSUFvZ0JrRUFFS29LR2lBS0lBaEJBQkNxQ2hvZ0NrRVlhaUlHSUFKQmpBRnFFTFlLSVFrZ0JpQUNRWWdCYWhDMkNpRUdJQW9vQWt3aUNBUkFJQXBCekFCcUlRd2dDQ0FKRU1jTklBb29Ba3dnQmhESERTQUtLQUpNUVFJUXFnZ2dDVUVERUtvSUlBWkJCUkNxQ0NBS0tBSk1JUTBnQWtFQU5nSm9JQUpDQURjRFlDQUtJQUpCOEFCcUlnaEJBeUFOSUFrZ0FrSGdBR29pRUJESURTSVBFTVlOSVEwZ0QwRUVhaEF5R2lBUUVESWFJQUpCQURZQ1dDQUNRZ0EzQTFBZ0NpQUlRUUlnQmtFQUlBSkIwQUJxSWc4UXlBMGlGQkRHRFNFUUlCUkJCR29RTWhvZ0R4QXlHaUFDUVFFMkFqd2dBaUFOTmdKd0lBSWdDRFlDT0NBQ0lBSXBBemczQXhBZ0VDQUNRVUJySUFKQkVHb1E1d01pRHhEWUZTQVBFRElhSUFKQkFUWUNKQ0FDSUJBMkFuQWdBaUFJTmdJZ0lBSWdBaWtESURjRENDQU5JQUpCS0dvZ0FrRUlhaERuQXlJTkVOZ1ZJQTBRTWhvZ0NpZ0NUQ0VOSUFJZ0NUWUNjQ0FLUWVRQ2FpQUlFSjRISUEwMkFnQWdBaUFHTmdKd0FrQWdDa0g0QW1vaUNpQUlFUFVEUlFSQUlBSWdEQ2dDQURZQ2NDQUNJQVkyQWh3Z0NpQUNRUnhxRUlZRklBSkI4QUJxSUFKQjlBQnFFUDBXREFFTElBSWdCallDY0NBS0lBSkI4QUJxRUlZRklBd1F6d0VMSUFKQmtBRnFKQUJCQUF3QkMwR0Rvd2xCa3FvQ1Fjc0FRZDYvQkJBQUFBc2lBa1VOQ2dzZ0FpRUJEQWtMSUFVZ0IwRUFFQnNpQmhDVkZpSUNSUVJBSUFVUXl3RWhDaU1BUVRCcklnSWtBQ0FDSUFZMkFpd2dDaUFHUVFBUXFnb2FJQXBCR0dvZ0FrRXNhaEMyQ2lFR0lBb29Ba3hCQVJDcUNDQUdRUU1RcWdnZ0NpZ0NUQ0VJSUFJZ0JqWUNFQ0FLUWVRQ2FpQUNRUkJxSWdrUW5nY2dDRFlDQUNBS0tBSk1JQVlReHcwZ0NpZ0NUQ0VJSUFKQkFEWUNDQ0FDUWdBM0F3QWdDaUFKUVFFZ0NDQUdJQUlReUEwaUNoREdEUm9nQ2tFRWFoQXlHaUFDRURJYUlBSkJNR29rQUVFQUlnSkZEUWtMSUFJaEFRd0lDeUFGSUFkQkFCQWJJZ0lRdXdvaUFRMEhJQVVReXdFaEFTQUVRUUUyQXB3Q0lBUWdBallDTUNBRUlBUkJNR28yQXBnQ0lBUWdCQ2tEbUFJM0F3QWdBU0FFUWFBQ2FpQUVFT2NESWdFUXFBZ2dBUkF5R2tFQUlRRU1Cd3NnQjBFQkVCc2hBaUFIUVFJUUd5RUtJQVVnQWhDN0NpSUJEUVlnQlNBS0VMc0tJZ0VOQmlBRkVNc0JJUUVnQkVFQ05nS0VBaUFFSUFvMkFqUWdCQ0FDTmdJd0lBUWdCRUV3YWpZQ2dBSWdCQ0FFS1FPQUFqY0RDQ0FCSUFSQmlBSnFJQVJCQ0dvUTV3TWlBUkNvQ0NBQkVESWFRUUFoQVF3R0N5QUVRUUEyQWpnZ0JFSUFOd013UVFFaEFnTkFJQWNvQWhBZ0J5Z0NER3RCQkhVZ0Frc0VRQ0FFSUFjZ0FoQWJJZ0UyQXZ3QklBVWdBUkM3Q2lJQkRRWWdBa0VDYWlFQ0lBUkJNR29nQkVIOEFXb1EzZ0lNQVFzTElBVVF5d0VnQkVId0FXb2dCRUV3YWlJQkVMQUJJZ0lRcUFnZ0FoQXlHaUFCRURJYVFRQWhBUXdGQ3lBRklBVVF5d0VvQWdnUUlDSUJSUTBGSUFFdkFSNUJFMFlFUUVFQUlRRWdCUkRMQVNFQ0lBUkJBRFlDS0NBRVFnQTNBeUFnQWlBRVFTQnFJZ0lRcUFnZ0FoQXlHZ3dGQ3lBRVFUQnFJZ0lnQlVGMUlBY1FFQ0FDUWUvT0NoQU9HaUFDUWJqeEJ4QU9HaUFFS0FMc0FTRUJJQUlRRVF3RUN5QUNRY0FpUndSQUlBSkIvQUZIRFFRZ0JSRExBVUVFSUFSQk1HcEJsNElERUJRaUFoREhCQ0FDRUE4YURBUUxJQVVReXdGQkJDQUVRVEJxUWQrQkF4QVVJZ0lReHdRZ0FoQVBHZ3dEQ3lBRkVNc0JRY01wSUFSQk1HcEJrWWtERUJRaUFoREhCQ0FDRUE4YURBSUxJQVVReXdGQnd5a2dCRUV3YWtIY2lBTVFGQ0lDRU1jRUlBSVFEeG9NQVFzZ0JFRXdhaEF5R2dzZ0JFR3dBbW9rQUNBQkRBRUxRZnd1UVlPckFrR25DRUdNbFFFUUFBQUxJZ0VOQUFKL1FRQWhCaU1BUWZBQmF5SUtKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSEx3RWVJZ0ZCQ21zT0NBRUhCd2NEQndRQ0FBc2dBVUU3UmcwRUlBRkJsU3BIRFFZZ0JVR0FBV3BCamlvUWFBMEZJQXBCS0dvaUFTQUZRWEVnQnhBUUlBRkJpK1lERUE0YUlBb29BdVFCSVFJZ0FSQVJEQWNMSUFwQkdHb2lBU0FIUVJocUVJWU9JQW9vQWhnZ0FTQUtMQUFqUVFCSUd5QUtRUWhxRUkwT1JRUkFJQXBCS0dvaUFTQUZRUU1nQnhBUUlBRkI4b29LRUE0YUlBRWdDa0VZYWhBU0dpQUJFQkVMSUFwQkdHb1FEeG9NQlFzZ0JTQUhRUUFRR3hDL0ZRd0VDd0pBSUFVb0FwQURRZi8vLy84SFJnMEFJQVVvQXBRRFFmLy8vLzhIUmcwQUlBcEJLR29pQVNBRlFYUWdCeEFRSUFGQi9Qc0hFQTRhSUFvb0F1UUJJUUlnQVJBUkRBVUxJQVVnQjBFQUVCc2lBVFlDa0FNZ0JVRUVRUWdnQVVFQlJoczJBcGdESUFVZ0IwRUJFQnMyQXBRRERBTUxJQWNvQWdBaUFTZ0NCQ0VDSUFFb0FnZ2hBU01BUVJCcklnMGtBQ0FOSUFFMkFnZ2dEU0FDTmdJTUl3QkJJR3NpRUNRQUlCQWdEVUVNYWlJQk5nSVFJQkJCRUdvaEZFRUFJUUlqQUVFUWF5SU1KQUFnQVNnQ0FDRUJJQkFDZndKQUlBVkIyQU5xSWdnb0FnUWlCRVVOQUNBSUtBSUFBbjhnQkVFQmF5QUJjU0FFYVNJUFFRRk5EUUFhSUFFZ0FTQUVTUTBBR2lBQklBUndDeUlDUVFKMGFpZ0NBQ0lKUlEwQUlBUkJBV3NoRmlBUFFRRkxJUmNEUUNBSktBSUFJZ2xGRFFFZ0FTQUpLQUlFSWc5SEJFQUNRQ0FYUlFSQUlBOGdGbkVoRHd3QkN5QUVJQTlMRFFBZ0R5QUVjQ0VQQ3lBQ0lBOUhEUUlMSUFrb0FnZ2dBVWNOQUF0QkFBd0JDeUFNSUFnZ0FTQVVFUFVXQWtCQkFDQUVJQWdvQWd4QkFXcXpJaTBnQ0NvQ0VDSXVJQVN6bEY0YkRRQWdDQ0FFSUFSQkFXdHhRUUJISUFSQkEwbHlJQVJCQVhSeUlnSUNmeUF0SUM2VmpTSXRRd0FBZ0U5ZElDMURBQUFBQUdCeEJFQWdMYWtNQVF0QkFBc2lCQ0FDSUFSTEd4RERBU0FJS0FJRUlnUWdCRUVCYTNGRkJFQWdCRUVCYXlBQmNTRUNEQUVMSUFFZ0JFa0VRQ0FCSVFJTUFRc2dBU0FFY0NFQ0N3SkFJQUpCQW5RaUFpQUlLQUlBYWlnQ0FDSUJSUVJBSUF3b0FnQWdDQ2dDQ0RZQ0FDQUlJQXdvQWdBMkFnZ2dDQ2dDQUNBQ2FpQUlRUWhxTmdJQUlBd29BZ0FpQVNnQ0FDSUNSUTBCSUFJb0FnUWhDUUpBSUFRZ0JFRUJheUlDY1VVRVFDQUNJQWx4SVFrTUFRc2dCQ0FKU3cwQUlBa2dCSEFoQ1FzZ0NDZ0NBQ0FKUVFKMGFpQUJOZ0lBREFFTElBd29BZ0FnQVNnQ0FEWUNBQ0FCSUF3b0FnQTJBZ0FMSUF3b0FnQWhDU0FNUVFBMkFnQWdDQ0FJS0FJTVFRRnFOZ0lNSUF3b0FnQWhBU0FNUVFBMkFnQWdBUVJBSUF3dEFBZ0VRQ0FCUVF4cUVQSVdDeUFCQkVBZ0FSQWZDd3RCQVFzNkFCd2dFQ0FKTmdJWUlBeEJFR29rQUNBUUtBSVlJUUVnRUVFZ2FpUUFJQTBnQVVFTWFpQU5RUWhxRU5VRklBMUJFR29rQUF3Q0N5QUhRUUlRR3lFQklBY29BaWdoQWdKQUlBRkJCMFlFUUNNQVFSQnJJZ0VrQUNBQklBSTJBZ3dnQVNBRlFaZ0NhaUFCUVF4cUVKWUJJQUZCRUdva0FDQUZLQUlFS0FJSUlnSWdCU2dDcEFKUERRTWdDa0VvYWlJRUlBVkJmRUVBRUJBZ0JFSFcrZ2dRRGhvTUFRc2pBRUVRYXlJQkpBQWdBU0FDTmdJTUlBRWdCVUdFQW1vZ0FVRU1haENXQVNBQlFSQnFKQUFnQlNnQ0JDZ0NEQ0lDSUFVb0FwQUNUdzBDSUFwQktHb2lCQ0FGUVh4QkFCQVFJQVJCcHZzSUVBNGFDeUFFSUFJUUlSb2dCRUg0bHdnUURob2dDaWdDNUFFaEFpQUVFQkVnQWtVTkFRd0NDeUFIUVFBUUd5RUJJQVVvQXB3REJFQWdDa0VvYWlJQklBVkJkQ0FIRUJBZ0FVR1kwd1FRRGhvZ0NpZ0M1QUVoQWlBQkVCRU1BZ3NnQVVFZ1JpQUJRY0FBUm5KRkJFQWdDa0VvYWlJQklBVkJjaUFIRUJBZ0FVSDUvd1lRRGhvZ0NpZ0M1QUVoQWlBQkVCRU1BZ3NnQlNBQk5nS2NBd3NnQnk4QkhpSUVRYlVDYTBFRFRRUkFJQVZCZ0FOcUlBUWdDa0VZYWhDcEJob2dDa0VvYWlJQklBVkJmQ0FIRUJBZ0FVSHR1QUlRRGhvZ0FTQUtLQUlZRUkwRUlnSkI4NW9KRUE0YUlBSW9BcndCSVFJZ0FSQVJJQUlOQVNBSEx3RWVJUVFMQWtBQ1FDQUVRZmovQTNGQmlDZEhEUUFnQlMwQWtBRkJFSEZGRFFBZ0NrRUFOZ0lnSUFwQ0FEY0RHQXdCQ3lBS1FRQTJBaWdnQlVHQUEyb2lBU0FFSUFwQktHb1FxUVpGQkVBZ0NrRVlhaUFCSUFvb0FpZ2lBU2dDRENBQktBSUlFSjBYREFFTElBcEJBRFlDSUNBS1FnQTNBeGdMQWtBZ0JTQUtRUmhxRUw0VkJFQURRQ0FIS0FJUUlBY29BZ3dpQVd0QkJIVWdCazBFUUVFQUlRSU1Bd3NnQnlnQ0FDQUJJQVpCQkhScUlnRXZBUUJCQW5ScUtBSUFJUWdnQVNnQ0JCQ0JGd1JBSUFaQkFXb2hCa0dBZ0lDQWVDRUVBMEFnQkVVTkFpQUVJQWh4QkVBZ0JTQUhJQVlnQVNBRUVQTVZJZ0lOQlFzZ0JFRUJkaUVFREFBTEFBc2dCa0VCYWlFR0lBRW9BZ1FReGdvTkFDQUZJQWNnQmlBQklBZ1E4eFVpQWtVTkFBc01BUXNnQ2tFb2FpSUJJQVZCY3lBSEVCQWdBVUhhd3dvUURob2dBU0FFRUNrUURob2dBVUhYNndzUURob2dDa0VJYWlJRUlBcEJHR29nQlVHQUEyb1E4aFVnQVNBRUVCSWFJQW9vQXVRQklRSWdCQkFQR2lBQkVCRUxJQXBCSUdvUXhRTWdBZzBBSUFVb0FvQUNJQWNvQWloTkJFQWdDa0VvYWlJQklBVkJmQ0FIRUJBZ0FVSHRtUWtRRGhvZ0FTQUhLQUlvRUNFYUlBRkJzWmNKRUE0YUlBRWdCU2dDZ0FJUUlSb2dBVUg3bHdnUURob2dDaWdDNUFFaEFpQUJFQkVnQWcwQkN5QUhMd0VlSWdSQkhrWUVRQUpBQWtBZ0JTZ0NCQzhCQUNJQklBY29BaEFnQnlnQ0RHdEJCSFZCQVd0UEJFQkJBQ0VHUVFJaEJBTkFJQWNvQWdRZ0J5Z0NBQ0lCYTBFQ2RTQUVUUVJBSUFVb0FnUW9BZ1FoQWlBSEtBSW9JUVFqQUVFUWF5SUJKQUFnQVNBRU5nSU1JQVZCd0FKcUlBRkJER29RMEFFZ0JrRUJhaUlHTmdJQUlBRkJFR29rQUNBQ0lBWlBEUVFnQ2tFb2FpSUVJQVZCZkNBSEVCQWdCRUdta3dvUURob2dCQ0FDRUNFYUlBUkI3TW9LRUE0YUlBUWdCaEFoR2lBRVFmeVhDQkFPR2d3REJRSkFJQVVnQVNBRVFRSjBhaWdDQUJBZ0lnRkZEUUFnQVM4QkhrRWVSdzBBSUFFb0FpZ2hBaU1BUVJCcklnRWtBQ0FCSUFJMkFnd2dCVUhBQW1vZ0FVRU1haERRQVNnQ0FDRUNJQUZCRUdva0FDQUdJQUlnQWlBR1NSc2hCZ3NnQkVFQmFpRUVEQUVMQUFzQUN5QUtRU2hxSWdRZ0JVRjhJQWNRRUNBRVFaNzlDQkFPR2lBRUlBY29BaEFnQnlnQ0RHdEJCSFZCQVdzUUlSb2dCRUc3K2dnUURob2dCQ0FCRUNFYUlBUkIrSmNJRUE0YUN5QUtLQUxrQVNFQ0lBUVFFU0FDRFFJTElBY3ZBUjRoQkFzQ1FDQUVRZi8vQTNGQit3RkhEUUJCK3dFaEJDQUhLQUlRSUFjb0FneHJRUVIxUVFKclFRRjJJZ0lnQlNnQ0JDZ0NFQ0lHVFEwQUlBcEJLR29pQVNBRlFYd2dCeEFRSUFGQm12NElFQTRhSUFFZ0FoQWhHaUFCUWFYNkNCQU9HaUFCSUFZUUlSb2dBVUg0bHdnUURob2dDaWdDNUFFaEFpQUJFQkVnQWcwQklBY3ZBUjRoQkFzZ0JVR0FBMm9nQkVILy93TnhJZ1lnQ2tIc0FXb1FxUVlOQVNBS0tBTHNBU0lFS0FKa0lnSWdCU2dDRkNJSlNRUkFJQXBCS0dvaUFTQUZRWEFnQnhBUUlBRWdCaEFwRUE0YUlBRkJ1b29LRUE0YUlBRWdBa0VRZGtIL0FYRVFJUm9nQVVIOGx3Z1FEaG9nQVNBQ1FRaDJRZjhCY1JBaEdpQUJRZEhyQVJBT0dpQUtLQUxrQVNFQ0lBRVFFUXdCQ3lBRUtBSmdJUUVnQnk4QkhrSEFJa2NFUUVFQUlRSWdCQ2dDQ0EwQkN3SkFBa0FnQ2tFWWFpQUVLQUpZSUFRb0Fsd1F4QWdpQ0NrREFFSUFVZzBBSUFnb0FnZ2lBZ1JBSUFJb0FnZ05BUXNnQVVGL1JnUkFJQXBCS0dvaUFTQUZRWEFnQnhBUUlBRWdCaEFwRUE0YUlBRkJydW9IRUE0YUlBb29BdVFCSVFJZ0FSQVJEQUlMUVFBaEFpQUJJQWxORFFFZ0NrRW9haUlFSUFWQmNDQUhFQkFnQkNBR0VDa1FEaG9nQkVHNmlnb1FEaG9nQkNBQlFSQjJRZjhCY1JBaEdpQUVRZnlYQ0JBT0dpQUVJQUZCQ0haQi93RnhFQ0VhSUFSQjVkb0hFQTRhSUFvb0F1UUJJUUlnQkJBUkRBRUxRUUFoQWlBRklBZ1F3QTBOQUNBQlFYOUdCRUFnQ2tFb2FpSUJJQVZCY1NBSEVCQWdBU0FHRUNrUURob2dBVUczNkFzUURob2dDa0VJYWlJRUlBZ1FoUTRnQVNBRUVCSWFJQW9vQXVRQklRSWdCQkFQR2lBQkVCRU1BUXNnQVNBSlRRMEFJQXBCS0dvaUJDQUZRWEFnQnhBUUlBUWdCaEFwRUE0YUlBUkJ1b29LRUE0YUlBUWdBVUVRZGtIL0FYRVFJUm9nQkVIOGx3Z1FEaG9nQkNBQlFRaDJRZjhCY1JBaEdpQUVRZVBvQ3hBT0dpQUtRUWhxSWdFZ0NCQ0ZEaUFFSUFFUUVob2dDaWdDNUFFaEFpQUJFQThhSUFRUUVRc2dDRUVJYWhERkF3c2dDa0h3QVdva0FDQUNEQUVMUWZQaUJVR3Rwd0pCbmdKQnI1NERFQUFBQ3lJQkRRQWpBRUVRYXlJRUpBQWdCeWdDS0NJQkJFQWdCQ0FITmdJTUlBUWdBVFlDQ0NBRUlBVkJyQUZxSUFSQkNHb1ErUllMUVFBaENnTkFJQWNvQWhBZ0J5Z0NEQ0lCYTBFRWRTQUtTd1JBQWtBZ0FTQUtRUVIwYWlJQktBSUVRUUZyUVFGTERRQWdCU0FIS0FJQUlBRXZBUUJCQW5ScUtBSUFJZ0lRSUNJR1JRMEFBa0FnQVNnQ0JFRUJSdzBBSUFZdkFSNUIxZ0JIRFFBakFFRVFheUlCSkFBZ0FTQUhOZ0lJSUFFZ0FqWUNEQ01BUVNCcklnSWtBQ0FDSUFGQkRHb2lDRFlDRUNBQ1FSaHFJQVZCeUFCcUlBZ2dBa0VRYWhDR0dTQUNLQUlZSVFnZ0FrRWdhaVFBSUFoQkRHb2dBVUVJYWhEUEFTQUJRUkJxSkFBTElBY29BamhGRFFBZ0JpQUdMd0VlSWdGQklFWUVmMEVCQlNBQlFUdEhEUUZCQWdzUUd5RUNJd0JCZ0FOcklnRWtBQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FGS0FJQUtBSUFFRWNFUUFKQUlBSkIyaWxyRGdZRkJnb0tCd2dBQ3dKQUFrQUNRQ0FDUVFOckRnSUJBZ0FMQWtBZ0FrSFFLV3NPQWdVR0FBc2dBa0dKS2tZTkNpQUNRWm9xUmcwRERBc0xJQUZCOEFKcUlnZ2dCVUdrSkJBM0lBVWdCeWdDT0NnQ0FCQ2ZBU0VKSUFGQnlBSnFJQWdRVkNFQ1FSQVFGU0lHUWRDVklEWUNBQ0FHSUFJcEFnQTNBZ1FnQmlBQ0tBSUlOZ0lNSUFJUVZTQUJJQVkyQXVnQ0lBbEJvQU5xSUFGQjJBSnFJZ1lRelFFZ0JoQVdJQUlRRHhvZ0NCQVBHZ3dLQ3lBQlFmQUNhaUlJSUFWQnBTUVFOeUFGSUFjb0FqZ29BZ0FRbndFaENTQUJRYUFDYWlBSUVGUWhBa0VRRUJVaUJrSDBsU0EyQWdBZ0JpQUNLUUlBTndJRUlBWWdBaWdDQ0RZQ0RDQUNFRlVnQVNBR05nTEFBaUFKUWFBRGFpQUJRYkFDYWlJR0VNMEJJQVlRRmlBQ0VBOGFJQWdRRHhvTUNRc0NRQ0FDUWRvcGF3NEdCQVVKQ1FZSEFBc0NRQ0FDUWRBcGF3NENBZ01BQ3lBQ1FZa3FSZzBISUFKQm1pcEhEUWdMSUFVZ0J5Z0NPQ2dDQUJDZkFTRUdJQUZCOEpjZ05nSVlJQUVnQVVFWWFpSUNOZ0lvSUFaQm9BTnFJQUlRelFFZ0FoQVdEQWNMSUFGQjhBSnFJZ2dnQlVIZ0pCQTNJQVVnQnlnQ09DZ0NBQkNmQVNFSklBRkIrQUZxSUFnUVZDRUNRUkFRRlNJR1FaaVdJRFlDQUNBR0lBSXBBZ0EzQWdRZ0JpQUNLQUlJTmdJTUlBSVFWU0FCSUFZMkFwZ0NJQWxCb0FOcUlBRkJpQUpxSWdZUXpRRWdCaEFXSUFJUUR4b2dDQkFQR2d3R0N5QUJRZkFDYWlJSUlBVkI0U1FRTnlBRklBY29BamdvQWdBUW53RWhDU0FCUWRBQmFpQUlFRlFoQWtFUUVCVWlCa0c4bGlBMkFnQWdCaUFDS1FJQU53SUVJQVlnQWlnQ0NEWUNEQ0FDRUZVZ0FTQUdOZ0x3QVNBSlFhQURhaUFCUWVBQmFpSUdFTTBCSUFZUUZpQUNFQThhSUFnUUR4b01CUXNnQVVId0Ftb2lDQ0FGUWRva0VEY2dCU0FIS0FJNEtBSUFFSjhCSVFrZ0FVR29BV29nQ0JCVUlRSkJFQkFWSWdaQjRKWWdOZ0lBSUFZZ0Fpa0NBRGNDQkNBR0lBSW9BZ2cyQWd3Z0FoQlZJQUVnQmpZQ3lBRWdDVUdnQTJvZ0FVRzRBV29pQmhETkFTQUdFQllnQWhBUEdpQUlFQThhREFRTElBRkI4QUpxSWdnZ0JVSGRKQkEzSUFVZ0J5Z0NPQ2dDQUJDZkFTRUpJQUZCZ0FGcUlBZ1FWQ0VDUVJBUUZTSUdRWVNYSURZQ0FDQUdJQUlwQWdBM0FnUWdCaUFDS0FJSU5nSU1JQUlRVlNBQklBWTJBcUFCSUFsQm9BTnFJQUZCa0FGcUlnWVF6UUVnQmhBV0lBSVFEeG9nQ0JBUEdnd0RDeUFCUWZBQ2FpSUlJQVZCMnlRUU55QUZJQWNvQWpnb0FnQVFud0VoQ1NBQlFkZ0FhaUFJRUZRaEFrRVFFQlVpQmtHb2x5QTJBZ0FnQmlBQ0tRSUFOd0lFSUFZZ0FpZ0NDRFlDRENBQ0VGVWdBU0FHTmdKNElBbEJvQU5xSUFGQjZBQnFJZ1lRelFFZ0JoQVdJQUlRRHhvZ0NCQVBHZ3dDQ3lBQlFmQUNhaUlJSUFWQnp6Y1FOeUFGSUFjb0FqZ29BZ0FRbndFaENTQUJRVEJxSUFnUVZDRUNRUkFRRlNJR1FjeVhJRFlDQUNBR0lBSXBBZ0EzQWdRZ0JpQUNLQUlJTmdJTUlBSVFWU0FCSUFZMkFsQWdDVUdnQTJvZ0FVRkFheUlHRU0wQklBWVFGaUFDRUE4YUlBZ1FEeG9NQVFzZ0JTQUhLQUk0S0FJQUVKOEJJUUlnQVVHVW1DQTJBZ0FnQVNBQk5nSVFJQUpCb0FOcUlBRVF6UUVnQVJBV0N5QUJRWUFEYWlRQUN5QUtRUUZxSVFvTUFRc0xJQVJCRUdva0FDQUhMd0VlUVNkR0JFQWdCMEVBRUJzaEFpTUFRUkJySWdFa0FDQUJJQUkyQWd3Z0FTQUZRVFJxSUFGQkRHb1FsZ0VnQVVFUWFpUUFDeUFIUWN3QWFpRUtEQUVMQ3lBU1FlQUFhaEF5R2dzZ0l4QVdDeUFTUWZBQmFoQ0xBU0FTUVpBRmFpUUFJQUVoQWlBY0VCOGdCVUg0QkdvUUZpQUZRZkFFYWhESUNpQUZRZHdFYWhCUElBVkJ5QVJxRUU4Z0JVRzBCR29RVHlBRlFhQUVhaEJQSUFWQmpBUnFFRThnQlVHQUJHb1FNaG9nQlVIc0Eyb1ExUVFnQlVIWUEyb2lCQ2dDQ0NFQkEwQWdBUVJBSUFFb0FnQWhBeUFCUVF4cUVQSVdJQUVRSHlBRElRRU1BUXNMSUFRUW13TWdCVUhFQTJvaUJDZ0NDQ0VCQTBBZ0FRUkFJQUVvQWdBaEF5QUJRUXhxRUlNT0lBRVFIeUFESVFFTUFRc0xJQVFRbXdNZ0JVR3dBMm9RVHlBRlFmUUNhaUFGS0FMNEFoQ0FEaUFGUWVnQ2FpQUZLQUxzQWhEL0RTQUZRZFFDYWhCUElBVkJ3QUpxRUU4Z0JVR3NBbW9RVHlBRlFaZ0NhaEJQSUFWQmhBSnFFRThnQlVIc0FXb1FUeUFGUWVBQmFoREVBeUFGUWN3QmFpSUVLQUlJSVFFRFFDQUJCRUFnQVNnQ0FDRURJQUZCREdvUTlCWWdBUkFmSUFNaEFRd0JDd3NnQkJDYkF5QUZRY0FCYWhBeUdpQUZRYXdCYWhCUElBVW9BcUFCQkVBZ0JTZ0NvQUVoQVNBRktBS2tBU0VEQTBBZ0FTQURSd1JBSUFOQnpBQnJFSzRISVFNTUFRc0xJQVVnQVRZQ3BBRWdCU2dDb0FFUUh3c2dCVUdZQVdvUXhRTWdCVUdJQVdvUXhRTWdCU2dDZEFSQUlBVW9BblFoQVNBRktBSjRJUU1EUUNBQklBTkhCRUFnQTBIRUEyc1E4QlloQXd3QkN3c2dCU0FCTmdKNElBVW9BblFRSHdzZ0JVSGNBR29RbVFzZ0JVSElBR29RMVFRZ0JVRTBhaEJQSUFWQklHb1FUeUFaUVJCcUVCWWdEa0hBQldva0FDQUNCRUFnQUVFQU9nQ1VBd3dCQ3lNQVFlQUFheUlISkFBQ2YwRUFJQUF0QUpRRFJRMEFHaUFBS0FLb0JTSURLQUlBSVFFZ0IwSElBR29nQTBFUWFoRFJBU0laSVFNZ0FDZ0NGQ0lDSVFzZ0FDZ0NHQ0FDYTBFQ2RTRU1Jd0JCSUdzaURpUUFJQTVCQ0dvZ0F4RFJBU0VJSXdCQjhBQnJJZ1VrQUNBRklBRTJBbXdnQVJDNUNDSUpJQVZCMEFCcUlBZ1EwUUVpQVJERkNpQUJFQllqQUVFZ2F5SUNKQUJCK0FFUUZTRUJJQVVvQW13aEF5QUNRUWhxSUFnUTBRRWhCQ01BUVNCcklnb2tBQ0FCSUFNUXVRZ2lBellDQUNBQklBTW9BZ0EyQWdRZ0FTQURLQUlJTmdJSUlBRWdBeWdDQkRZQ0RDQURLQUlNSVFNZ0FVRUFOZ0lVSUFFZ0F6WUNFRUdvQmhBVklnTkNBRGNDQUNBRFFRQTJBaEFnQTBJQU53SUlJQU5DQURjQ0xDQURRUnhxSWdaQjlPQVNOZ0lBSUFOQkFEc0JOQ0FEUVRocVFRQkJKQkI1R2lBRFFRRTZBQ2dnQXlBR05nSWtJQU1nQmpZQ0lDQURRZ0EzQW5BZ0EwSGdBR29pQmtIMDRCSTJBZ0FnQTBHazRSSTJBaGdnQTBFQU93RjRJQU5CL0FCcVFRQkJKQkI1R2lBRFFRRTZBR3dnQXlBR05nSm9JQU1nQmpZQ1pDQURRZ0EzQXJRQklBTkJwQUZxSWdaQjlPQVNOZ0lBSUFOQnBPRVNOZ0pjSUFOQkFEc0J2QUVnQTBIQUFXcEJBRUVrRUhrYUlBTkJBVG9Bc0FFZ0F5QUdOZ0tzQVNBRElBWTJBcWdCSUFOQ0FEY0NnQUlnQTBId0FXb2lCa0gwNEJJMkFnQWdBMElBTndMa0FTQURRYVRoRWpZQ29BRWdBMEVBT3dHSUFpQURRWXdDYWtFQVFTUVFlUm9nQTBFQk9nRDhBU0FESUFZMkF2Z0JJQU1nQmpZQzlBRWdBMElBTndMRUFpQURRYlFDYWlJR1FmVGdFallDQUNBRFFhVGhFallDN0FFZ0EwRUFPd0hNQWlBRFFkQUNha0VBUVNRUWVSb2dBMEVCT2dEQUFpQURJQVkyQXJ3Q0lBTWdCallDdUFJZ0EwSUFOd0tJQXlBRFFmZ0NhaUlHUWZUZ0VqWUNBQ0FEUWFUaEVqWUNzQUlnQTBFQU93R1FBeUFEUVpRRGFrRUFRU1FRZVJvZ0EwRUJPZ0NFQXlBRElBWTJBb0FESUFNZ0JqWUMvQUlnQTBJQU53TE1BeUFEUWJ3RGFpSUdRZlRnRWpZQ0FDQURRYVRoRWpZQzlBSWdBMEVBT3dIVUF5QURRZGdEYWtFQVFTUVFlUm9nQTBFQk9nRElBeUFESUFZMkFzUURJQU1nQmpZQ3dBTWdBMElBTndLUUJDQURRWUFFYWlJR1FmVGdFallDQUNBRFFhVGhFallDdUFNZ0EwRUFPd0dZQkNBRFFad0Vha0VBUVNRUWVSb2dBMEVCT2dDTUJDQURJQVkyQW9nRUlBTWdCallDaEFRZ0EwSUFOd0xVQkNBRFFjUUVhaUlHUWZUZ0VqWUNBQ0FEUWFUaEVqWUMvQU1nQTBFQU93SGNCQ0FEUWVBRWFrRUFRU1FRZVJvZ0EwRUJPZ0RRQkNBRElBWTJBc3dFSUFNZ0JqWUN5QVFnQTBJQU53S1lCU0FEUVlnRmFpSUdRZlRnRWpZQ0FDQURRYVRoRWpZQ3dBUWdBMEVBT3dHZ0JTQURRYVFGYWtFQVFTUVFlUm9nQTBFQk9nQ1VCU0FESUFZMkFwQUZJQU1nQmpZQ2pBVWdBMElBTndMY0JTQURRY3dGYWlJR1FmVGdFallDQUNBRFFhVGhFallDaEFVZ0EwRUFPd0hrQlNBRFFlZ0Zha0VBUVNRUWVSb2dBMEVCT2dEWUJTQURJQVkyQXRRRklBTWdCallDMEFVZ0EwSUFOd0tNQmlBRFFhVGhFallDeUFVZ0EwSUFOd0tVQmlBRFFnQTNBcHdHSUFOQkFEb0FwQVlnQVNBRE5nSVlJQUZCSUdvZ0JCRHJCU0VESUFGQ0FEY0RTQ0FCUVVCclFnQTNBd0FnQVVJQU53TTRJQUZDQURjRFdDQUJRb0NBZ0lDQWdJREFQemNEVUNBQlFnQTNBMkFnQVVJQU53SnNJQUZCZ0lDQS9BTTJBbWdnQVVJQU53SjBJQUZDQURjQ2hBRWdBVUtBZ0lDQWdJQ0F3RDgzQW53Z0FVSUFOd0tNQVNBQlFhQUJhaUlHUWdBM0F3QWdBVUtBZ0lEOEF6Y0NsQUVnQVVHc0FXb2lFVUlBTndJQUlBRWdCallDbkFFZ0FTQVJOZ0tvQVNBQlFnQTNBcndCSUFGQ0FEY0N0QUVnQVVHQWdJRDhBellDeEFFZ0FVSElBV3BCQUVFb0VIa2FJQUZCQURzQjlBRWdBVUgvLy84Qk5nTHdBU0FCS0FJQUlBcEJDR29nQXhEUkFTSURFTVVLSUFNUUZpQUJLQUlZSUFFMkFoUWdDa0VnYWlRQUlBUVFGaUFDUVNCcUpBQWdCU0FCTmdKSUlBVkJDR29pQXlBQktBSVlOZ0lFSUFNZ0NEWUNBQ0FEUVFocVFiYmlCaEFVR2lBRFFSUnFRUUJCSkJCNUdpQURRUUU2QURnZ0EwRUJPZ0E0UVFBaEFpQUpJQU1nQ3lBTVFaVU1RWllNUVFBUXRBY2hEQUpBSUFNb0Fod2lCRVVOQUNBREtBSVlJZ3BGRFFBZ0EwRWNhaUlHUVFBMkFnQWdDaUFFRU5zWElBWkJBQkRZQ0FzZ0F5Z0NHQ0lFQkVBZ0EwRUFOZ0lZSUFNb0FnUWdCQkRIRnlBRFFSaHFRUUFROFFvTElBTW9BZ1FpQmlnQ2tBWWhFU0FHS0FLTUJpRUVBMEFnQkNBUlJ3UkFJQVFvQWdBaUN5Z0NXQ0VjSUFzb0FsUWhDZ05BSUFvZ0hFWUVRQ0FFUVFScUlRUU1Bd1VnQ2lnQ0FDQUxOZ0lBSUFwQkJHb2hDZ3dCQ3dBTEFBc0xJQVpCbUFacUVNNFhJQVlnQXlnQ0lEWUNtQVlnQmlBREtBSWtOZ0tjQmlBR0lBTW9BaWcyQXFBR0lBTkJBRFlDS0NBRFFnQTNBaUFnQ1JDNENDQU1SUVJBSUFWQkFEWUNTQ0FCSVFJTElBTkJMR29RaFFNYUlBTkJJR29RNWc0Z0EwRWNhaEM2QmhvZ0EwRVlhaERaQ0JvZ0EwRUlhaEFQR2lBRlFjZ0FhaEQ5RGlBRlFmQUFhaVFBSUFnUUZpQU9RU0JxSkFBZ0IwRUFOZ0lBSUFCQnJBVnFJQUlRb1JrZ0J4RDlEaUFaRUJZZ0FDZ0NyQVVpQVVVRVFDQUFRUUE2QUpRRElBQkJxQVJxUVlhMEJCQVpLQUlBTFFBQVFRQkhEQUVMSUFBZ0FTZ0NHRFlDc0FVZ0FDQUJFTUFHTmdLMEJTQUFJQUFvQXF3RkVKOFpOZ0s0QlNBQUlBQW9BcXdGRU44SU5nSzhCU0FBSUFBb0Fxd0ZFTjRJTmdMQUJTQUFLQUt3QlNFQklBZENBRGNDRENBSFFZQ0FnUHdETmdJVUlBZENBRGNESUNBSFFnQTNBekFnQjBLQWdJRDhBemNES0NBSFFnQTNBZ1FnQnlBQk5nSUFJQWRDQURjREdDQUhRUVJ5SWdRUWpna2dCeUFIS0FJc05nSXdJQWRCR0dvaUF4Q09DU0FIS0FJQUlnRW9BcEFHSVFVZ0IwRXNhaUVDSUFFb0Fvd0dJUUVEZnlBQklBVkdCSDhnQnlnQ0FDSUJLQUtRQmlFRklBRW9Bb3dHSVFFRFFDQUJJQVZIQkVBZ0J5QUJLQUlBRUo0WklBRkJCR29oQVF3QkN3c2dBRUhFQldvZ0IwRTRhaUFDRUxBQklnRVE3UVVnQVJBeUdpQUNFRElhSUFNUVR5QUVFRThnQUMwQWxBTkJBRWNGSUFjZ0FTZ0NBQ0lLRU4wSU5nSTRJQU1nQjBFNGFoRFFBU0FLTmdJQUlBRkJCR29oQVF3QkN3c0xJUUVnQjBIZ0FHb2tBQ0FCUlEwQVFRQWhFZ0pBSUFBdEFKUURSUTBBSXdCQk1Hc2lBU1FBSUFGQ0FEY0RLQ0FCUVFBNkFDY2dBVUlBTndNWUlBQW9BckFGSVFKQkZCQVZJZ01nQURZQ0JDQURRY1RoRWpZQ0FDQURJQUZCS0dvMkFoQWdBeUFCUVJocU5nSU1JQU1nQVVFbmFqWUNDQ0FCSUFNMkFoQWdBaUFCRUtFT0lBRVFGaUFCUVRCcUpBQkJBQ0VFUVFBaEZBSkFJQUF0QUpRRFJRMEFJd0JCSUdzaUFTUUFJQUJCNUFWcUlRY2dBRUg0QldvaEJTQUFRYWdFYWlFS0lBQW9BckFGSWdOQnBBRnFJUVlnQTBHb0FXb2hBZ05BQWtBZ0JpQUNLQUlBSWdOR0JFQkJBU0VFREFFTEFuOGdBVUVRYWlBRFFRQVFqd1VpQWlnQ0dDSUlJQUpCREdvZ0NCc29BZ0FRRkNJQ1FiR0xCeENtQ1FSQUlBRWdBeEJnTmdJTUlBRWdCeUFCUVF4cUVKWUJRUUVNQVFzZ0FoQ1VHVVVFUUNBQklBTVFZRFlDRENBQklBVWdBVUVNYWhDV0FVRUJEQUVMSUFCQkFEb0FsQU1nQ2tHbTRnc1FHU0FDRUUwb0FnQXRBQUJCQUVjaEJFRUFDeUVJSUFJUUR4b2dBMEVFYWlFQ0lBZ05BUXNMSUFGQklHb2tBQ0FFUlEwQVFRQWhBU01BUVJCcklnTWtBQUpBSUFBdEFKUURSUTBBSUFCQnlBUnFJUUlnQUVHb0JHb2hCeUFBS0FLd0JTSUVRZkFCYWlFRklBUkI5QUZxSVFRRFFDQUZJQVFvQWdBaUJFY0VRQ0FFUVFFUU9DRUtJQU1nQkVFQ0VJOEZFTDhHQW44Z0F4Q1RHVVVFUUVFQUlRb2dBRUVBT2dDVUF5QUhRZm4zQ3hBWklBTVFUU2dDQUMwQUFFRUFSd3dCQ3lBQ0lBb2dBeERGQmlBQ0lBTVE5UTVGQkVCQkFDRUtRUUFnQWlBREVKNFBSUTBCR2d0QkFTRUtJQUVMSVFFZ0JFRUVhaUVFSUFNUUR4b2dDZzBCREFJTEN5QUFLQUt3QlNJQlFid0RhaUVLSUFGQndBTnFJUVFEUUNBS0lBUW9BZ0FpQVVZRVFDQURJQUFvQXJBRkVNWVhJQU1vQWdRaENDQURLQUlBSVFRRFFDQUVJQWhHQkVBZ0F4QXlHa0VCSVFFTUJBc2dCQ2dDQUNJQktBSVVRUjVHQkVBZ0FSQmdJUWNnQVJESUFTRUZJd0JCMEFGcklnRWtBQ0FCSUFjMkFzd0JJQUpCTUdvZ0FVSE1BV29RbkJvaUJ5QUZFSnNhSUFGQ0FEY0R3QUVnQVVJQU53TzRBU0FCUVlDQWdQd0ROZ0xJQVNBQklBRkJ1QUZxTmdLd0FTQUhLQUlFSVFZZ0J5Z0NBQ0VLQTBBQ1FDQUdJQXBHQkVBZ0FVRXNhaUVPSUFGQktHb2hCaUFIS0FJRUlRa2dCeWdDQUNFS1FRQWhCd05BSUFrZ0NrWU5BaUFLS0FJRUlBb3RBQXNpQlNBRlFSaDBRUmgxUVFCSUcwVUVRQ0FCUVNCcUVFa2hDeUFHUWFYckJCQU9HaUFHSUFjUUlSb2dBU0FPRUVJZ0FVRVFhaUlGSUFGQnNBRnFJQUVRbVJvZ0NpQUZFSjRCSUFVUUR4b2dBUkFQR2lBRklBRkJ1QUZxSUFvUWx3c2dDeEJSQ3lBS1FReHFJUW9nQjBFQmFpRUhEQUFMQUFzZ0NpZ0NCQ0FLTFFBTElnVWdCVUVZZEVFWWRVRUFTQnNFUUNBQlFTQnFJZ1VnQVVHd0FXb2dDaENaR2lBS0lBVVFuZ0VnQlJBUEdpQUZJQUZCdUFGcUlBb1Fsd3NMSUFwQkRHb2hDZ3dCQ3dzZ0FVRzRBV29RbWdzZ0FVSFFBV29rQUFzZ0JFRUVhaUVFREFBTEFBVUNRQUpBQWtBZ0FTZ0NGRUVGYXc0Q0FBRUNDeUFESUFGQkFSQ1BCUkMvQmlBREtBSUVJQU10QUFzaUJDQUVRUmgwUVJoMVFRQklHd1JBSUFJZ0FVRUFFRGdnQXhERkJnc2dBeEFQR2d3QkN5QURJQUZCQWhDUEJSQy9CaUFES0FJRUlBTXRBQXNpQkNBRVFSaDBRUmgxUVFCSUd3UkFJQUZCQUJBNElRY2dBVUVCRURnaEJTTUFRUkJySWdRa0FDQUVJQWMyQWd3Z0FrRXdhaUFFUVF4cUVKd2FJZ2NnQnlnQ0JDQUhLQUlBYTBFTWJTSUdJQVZCQVdvaUNDQUdJQWhMR3hDYkdpQUhLQUlBSUFWQkRHeHFJZ2NvQWdRZ0J5MEFDeUlGSUFWQkdIUkJHSFZCQUVnYlJRUkFJQVFnQXhDZUdpQUhJQVFRbmdFZ0JCQVBHZ3NnQkVFUWFpUUFDeUFERUE4YUN5QUJRUVJxSVFRTUFRc0FDd0FMSUFOQkVHb2tBQ0FCUVFGeFJRMEFJd0JCRUdzaUFTUUFJQUFvQXJBRklnTkJpQVZxSVFRZ0EwR01CV29oQWdKQUEwQWdCQ0FDS0FJQUlnTkdCRUFnQUNnQzZBMGlBMFVFUUVFQklRSU1Bd3NGQWtBZ0F5Z0NGRUhIQUVjTkFDQURRUUVRT0VFTFJ3MEFJQU5CQWhBNFFSbEhEUUFnQUNBRFFRQVFPRFlDNkEwTElBTkJCR29oQWd3QkN3c2dBQ2dDdEFVZ0F4Q1VBU0lEUlFSQUlBQkJBRG9BbEFNZ0FFR29CR3BCdGRBREVCa29BZ0F0QUFCQkFFY2hBZ3dCQ3lBREtBSVVJZ0pCTEVZZ0FrRXpSbkpGQkVBZ0FFRUFPZ0NVQXlBQVFhZ0Vha0hCN3d3UUdTRUNJQUVnQXhCWUlBSWdBUkJOS0FJQUxRQUFRUUJISVFJZ0FSQVBHZ3dCQ3lBQVFld05haUFERUhvaUJEWUNBRUVBSVFJZ0FFSHdEV29nQUNnQ3RBVWdCQkNVQVVFQUVEZzJBZ0FnQVNBRE5nSUVJQUVnQURZQ0FDQUJJQUJCOUExcUlBQkJnQTVxUVFBUTlBNUZEUUFnQVNBQVFmZ05haUFBUVlRT2FrRUJFUFFPUlEwQUlBRWdBRUg4RFdvZ0FFR0lEbXBCQWhEMERpRUNDeUFCUVJCcUpBQWdBa1VOQUVFQUlRZ2pBRUd3QldzaUJTUUFJQVZDQURjRG9BVWdCVUlBTndPWUJTQUZRWUNBZ1B3RE5nS29CU0FBS0FLd0JTSUJRYlFDYWlFSklBRkJ1QUpxSVFvQ1FBSkFBMEFnQ1NBS0tBSUFJZ1pIQkVBZ0JrRUJFRGhCRVVZRVFDQUdFTWdCUVFWSERRTWdCU0FHUVFBUU9EWUMrQUlnQmtFQ0VEZ2hHU0FHUVFNUU9DRU1JQVpCQkJBNElSRkJBQ0VCSXdCQklHc2lEaVFBSUE0Z0JVSDRBbW8yQWhBakFFRVFheUlLSkFBZ0JTZ0MrQUloQXlBT0FuOENRQ0FGUVpnRmFpSUhLQUlFSWdKRkRRQWdCeWdDQUFKL0lBSkJBV3NnQTNFZ0Fta2lDMEVCVFEwQUdpQURJQUlnQTBzTkFCb2dBeUFDY0FzaUFVRUNkR29vQWdBaUJFVU5BQ0FDUVFGcklSd2dDMEVCU3lFTkEwQWdCQ2dDQUNJRVJRMEJJQU1nQkNnQ0JDSUxSd1JBQWtBZ0RVVUVRQ0FMSUJ4eElRc01BUXNnQWlBTFN3MEFJQXNnQW5BaEN3c2dBU0FMUncwQ0N5QUVLQUlJSUFOSERRQUxRUUFNQVF0QkdCQVZJUVFnQ2lBSFFRaHFOZ0lFSUFvZ0JEWUNBQ0FPS0FJUUtBSUFJUXNnQkVJQU53SU1JQVFnQ3pZQ0NDQUVRUUEyQWhRZ0NrRUJPZ0FJSUFSQkFEWUNBQ0FFSUFNMkFnUUNRRUVBSUFJZ0J5Z0NERUVCYXJNaUxTQUhLZ0lRSWk0Z0FyT1VYaHNOQUNBSElBSWdBa0VCYTNGQkFFY2dBa0VEU1hJZ0FrRUJkSElpQVFKL0lDMGdMcFdOSWkxREFBQ0FUMTBnTFVNQUFBQUFZSEVFUUNBdHFRd0JDMEVBQ3lJQ0lBRWdBa3NiRU1NQklBY29BZ1FpQWlBQ1FRRnJjVVVFUUNBQ1FRRnJJQU54SVFFTUFRc2dBaUFEU3dSQUlBTWhBUXdCQ3lBRElBSndJUUVMQWtBZ0FVRUNkQ0lESUFjb0FnQnFLQUlBSWdGRkJFQWdDaWdDQUNBSEtBSUlOZ0lBSUFjZ0NpZ0NBRFlDQ0NBSEtBSUFJQU5xSUFkQkNHbzJBZ0FnQ2lnQ0FDSUJLQUlBSWdORkRRRWdBeWdDQkNFRUFrQWdBaUFDUVFGcklnTnhSUVJBSUFNZ0JIRWhCQXdCQ3lBQ0lBUkxEUUFnQkNBQ2NDRUVDeUFIS0FJQUlBUkJBblJxSUFFMkFnQU1BUXNnQ2lnQ0FDQUJLQUlBTmdJQUlBRWdDaWdDQURZQ0FBc2dDaWdDQUNFRUlBcEJBRFlDQUNBSElBY29BZ3hCQVdvMkFnd2dDaENMQVVFQkN6b0FIQ0FPSUFRMkFoZ2dDa0VRYWlRQUlBNG9BaGdoQVNBT1FTQnFKQUFnQVNBUk5nSVVJQUVnRERZQ0VDQUJJQmsyQWd3TElBWkJCR29oQ2d3QkN3c2dBRUhJQkdvaEZpQUFRWlFIYWlFR0lBQkJxQVJxSVJjZ0FDZ0NzQVVpQVVId0FXb2hHeUFCUWZRQmFpRUtJQVZCbUFGcUlSZ2dCVUdZQTJvaEdpQUZRWkFEYWlFTkEwQWdHeUFLS0FJQUlobEhCRUFnR1VFQUVEZ2hBeUFGSUJsQkFSQTROZ0tVQlNBRlFZZ0ZhaUlCSUJsQkFoRFJCeEMvQmdKQUlBRVFreGtpSGtVRVFDQUFRUUE2QUpRRElCZEIrZmNMRUJrZ0JVR0lCV29RVFNnQ0FDMEFBRUVBUnlFSURBRUxJQVZCQURvQWh3VWdCVUg0QkdvUVZRSkFJQVlnQlVHVUJXb1E3QUVpQVVVRVFDQUZRUUU2QUljRklBVkIrQUpxSWdFZ0ZpQUZRWWdGYWhEbEJTQUZRZmdFYWlBQkVKNEJJQUVRRHhvTUFRc2dCVUg0QkdvZ0FTZ0NERUVVYWhEZ0Fnc2dCU2dDL0FRZ0JTMEFnd1VpQVNBQlFSaDBRUmgxUVFCSUcwVUVRQ0FGUWZnQ2FrSEdxZ1ZCOWdaQkJ5QUZRZmdBYWhBZElnRVFGeUVDSUExQjMrRUlFQTRhSUFJUUdDQUJFQjRMSUFWQmlBVnFJQVZCK0FScUVQSURRUUZ6UlFSQUlBVkIrQUpxUWNhcUJVSDNCa0VISUFWQitBQnFFQjBpQVJBWElRSWdEVUdhdlFnUURob2dBaEFZSUFFUUhnc2dCVUg0QW1vUWtna2hBa0VESVFvZ0JVSDRBR29Ra2draEJ3SkFBMEFnR1JESUFTQUtUUVJBQWtBZ0JVRUFPZ0FjSUFVZ0dqWUNHQ0FGUWNnQWFpQUZRUmhxSWdRUS9Rb2hBU0FGS0FKb0lnb2dDaUFGS0FKc1FRSjBhaEQ4Q2lBRlFRQTZBQXdnQlNBWU5nSUlJQVFnQlVFSWFoRDlDaUVSSUFVb0FqZ2lCQ0FFSUFVb0FqeEJBblJxRVB3S0lBVUNmd0pBQWtBQ1FBSkFJQU1PQmdNQ0FnSUFBUUlMUVFFTUF3dEJBZ3dDQ3lBQUtBS2dCVUVBT2dBQUlBQW9BcVFGUVFocUlnUkJ0WVFNRUE0YUlBUWdBeEFoR2tGL0lRTUxJQU1MSWdNMkFoUWdCVUVBTmdJUUlBVkNBRGNEQ0NBRFFRSkhEUU1nQUNnQzZBMUZEUUFnQUNrRGdBNGhMeUFGSUFBb0FvZ09OZ0lRSUFVZ0x6Y0RDQXdEQ3dVZ0JTQVpJQW9RT0NJQk5nSklBa0FnQUNnQ3RBVWdBUkNVQVNJRVJRMEFJQUloQVFKQUFrQWdCRUVBRURoQkFXc09Bd0VDQUFJTElBY2hBUXNqQUVFUWF5SUVKQUFnQkVFSWFpQUJRU3hxSUFWQnlBQnFJZzRRN2hnZ0JDZ0NDQ0VKSUFSQkVHb2tBQ0FKUVFKSEJFQWdBU0FPRUo4RkN3c2dDa0VCYWlFS0RBRUxDeUFGUVpnRmFpQUZRWlFGYWhEc0FTSURSUTBBSUFVZ0F5Z0NGRFlDRUNBRklBTXBBZ3czQXdnTElBVkJpQVZxSVJBZ0JVRVVhaUVQSUFWQmh3VnFJUk1nQlVINEJHb2hIQ0FCSVFNZ0JVRUlhaUVWUVFBaEJDTUFRU0JySWdza0FDQUxJQVZCbEFWcU5nSVFJQXRCRUdvaEl5TUFRUkJySWdra0FDQUZLQUtVQlNFQklBc0Nmd0pBSUFZb0FnUWlDa1VOQUNBR0tBSUFBbjhnQ2tFQmF5QUJjU0FLYVNJTVFRRk5EUUFhSUFFZ0FTQUtTUTBBR2lBQklBcHdDeUlFUVFKMGFpZ0NBQ0lPUlEwQUlBcEJBV3NoSHlBTVFRRkxJU0VEUUNBT0tBSUFJZzVGRFFFZ0FTQU9LQUlFSWd4SEJFQUNRQ0FoUlFSQUlBd2dIM0VoREF3QkN5QUtJQXhMRFFBZ0RDQUtjQ0VNQ3lBRUlBeEhEUUlMSUE0b0FnZ2dBVWNOQUF0QkFBd0JDeUFKSUFZZ0FTQWpFUFFJQWtCQkFDQUtJQVlvQWd4QkFXcXpJaTBnQmlvQ0VDSXVJQXF6bEY0YkRRQWdCaUFLSUFwQkFXdHhRUUJISUFwQkEwbHlJQXBCQVhSeUlnUUNmeUF0SUM2VmpTSXRRd0FBZ0U5ZElDMURBQUFBQUdCeEJFQWdMYWtNQVF0QkFBc2lDaUFFSUFwTEd4RERBU0FHS0FJRUlnb2dDa0VCYTNGRkJFQWdDa0VCYXlBQmNTRUVEQUVMSUFFZ0Nra0VRQ0FCSVFRTUFRc2dBU0FLY0NFRUN3SkFJQVJCQW5RaUJDQUdLQUlBYWlnQ0FDSUJSUVJBSUFrb0FnQWdCaWdDQ0RZQ0FDQUdJQWtvQWdBMkFnZ2dCaWdDQUNBRWFpQUdRUWhxTmdJQUlBa29BZ0FpQVNnQ0FDSUVSUTBCSUFRb0FnUWhEZ0pBSUFvZ0NrRUJheUlFY1VVRVFDQUVJQTV4SVE0TUFRc2dDaUFPU3cwQUlBNGdDbkFoRGdzZ0JpZ0NBQ0FPUVFKMGFpQUJOZ0lBREFFTElBa29BZ0FnQVNnQ0FEWUNBQ0FCSUFrb0FnQTJBZ0FMSUFrb0FnQWhEaUFKUVFBMkFnQWdCaUFHS0FJTVFRRnFOZ0lNSUFrb0FnQWhBU0FKUVFBMkFnQWdBUVJBSUFrdEFBZ0VRQ0FCUVF4cUVQb1lDeUFCQkVBZ0FSQWZDd3RCQVFzNkFCd2dDeUFPTmdJWUlBbEJFR29rQUNBTEtBSVlJUUVnQzBFZ2FpUUFBa0FnQVVFTWFpSUVLQUlFSUFRb0FnaEpCRUFnQkVFSWFpQUVLQUlFSWdFZ0VDQVBJQk1nSENBRElCRWdGUkR0R0NBRUlBRkJoQUZxTmdJRURBRUxJd0JCSUdzaUNTUUFJQVJCQ0dvaUN5RXNJQVFvQWdRZ0JDZ0NBR3RCaEFGdFFRRnFJZ0ZCb1BqQkQwOEVRQkFCQUF0Qm4vakJEeUFFS0FJSUlBUW9BZ0JyUVlRQmJTSUtRUUYwSWc0Z0FTQUJJQTVKR3lBS1FZLzg0QWRQR3lFT0lBUW9BZ1FnQkNnQ0FHdEJoQUZ0SVF4QkFDRUtJQWxCQ0dvaUFVRUFOZ0lNSUFFZ0N6WUNFQ0FPQkVBZ0RrR2crTUVQVHdSQUVQc0JBQXNnRGtHRUFXd1FGU0VLQ3lBQklBbzJBZ0FnQVNBS0lBeEJoQUZzYWlJTE5nSUlJQUVnQ2lBT1FZUUJiR28yQWd3Z0FTQUxOZ0lFSUN3Z0FTZ0NDQ0FRSUE4Z0V5QWNJQU1nRVNBVkVPMFlJQUVnQVNnQ0NFR0VBV28yQWdnZ0JDZ0NBQ0VNSUFRb0FnUWhDd05BSUFzZ0RFY0VRQ0FCS0FJRVFZUUJheUFMUVlRQmF5SUxJZ29RVkNJT0lBb3RBQkE2QUJBZ0RpQUtLQUlNTmdJTUlBNUJGR29nQ2tFVWFoQlVHaUFPUVNCcUlBcEJJR29RNHdVYUlBNUJ6QUJxSUFwQnpBQnFFT01GR2lBT0lBb29Bb0FCTmdLQUFTQU9JQW9wQW5nM0FuZ2dBU0FCS0FJRVFZUUJhellDQkF3QkN3c2dCQ2dDQUNFS0lBUWdBU2dDQkRZQ0FDQUJJQW8yQWdRZ0JDZ0NCQ0VLSUFRZ0FTZ0NDRFlDQkNBQklBbzJBZ2dnQkNnQ0NDRUtJQVFnQVNnQ0REWUNDQ0FCSUFvMkFnd2dBU0FCS0FJRU5nSUFJQUVvQWdRaENnTkFJQW9nQVNnQ0NDSU9Sd1JBSUFFZ0RrR0VBV3NpRGpZQ0NDQU9FS01aR2d3QkN3c2dBU2dDQUNJQkJFQWdBUkFmQ3lBSlFTQnFKQUFMSUFRb0FnUWFJQkVRSXlBREVDTWdCeENSQ1NBQ0VKRUpJQndRRHhvTElCbEJCR29oQ2lBRlFZZ0ZhaEFQR2lBZURRRU1Bd3NMSUFBdEFKUURRUUJISVFnTUFRc2dBRUVBT2dDVUF5QUFRYWdFYWtHTHBnd1FHU0VESUFWQitBSnFJZ0VnQmhCWUlBTWdBUkJOS0FJQUxRQUFRUUJISVFnZ0FSQVBHZ3NnQlVHWUJXb1FUeUFGUWJBRmFpUUFJQWhGRFFCQkFDRUNJd0JCMEFCcklnRWtBQUpBSUFBdEFKUURSUTBBSUFGQlFHdENBRGNEQUNBQlFnQTNBemdnQVVHQWdJRDhBellDU0NBQUtBTElCU0VFSUFBb0FzUUZJUUlEUUNBQ0lBUkdCRUFnQVNBQU5nSVlJQUVnQURZQ0VDQUFRZEFIYWlFRUlBQW9Bc2dGSVFzZ0FDZ0N4QVVoQ2dOQUFrQUNRQ0FLSUF0SEJFQWdDaWdDQUNJREtBSllJUmtnQXlnQ1ZDRUhBMEFnQnlBWlJnMERJQWNvQWdBaUEwRU1haUVNSUFOQkVHb2hBZ05BQWtBQ1FDQU1JQUlvQWdBaUEwY0VRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFNb0FoUWlBa0hYQUdzT0ZRTURCQVFEQXdRRUFnTUVBQUVNREF3RkRBWUhDQWtMSUFFZ0FVRVlhaUFERUk0Rk5nSWdJQVFnQVVFZ2FoQ1RBeERpR0F3TEN5QUJJQUZCR0dvZ0F4Q09CVFlDSUNBRUlBRkJJR29Ra3dNUTRSZ01DZ3NnQVNBQlFSaHFJQU1RamdVMkFpQWdCQ0FCUVNCcUVKTURFTmNJREFrTElBRWdBVUVZYWlBREVJNEZOZ0lnSUFRZ0FVRWdhaENUQXhEWENDQUJJQUZCRUdvZ0F4RHpEallDSUNBRUlBRkJJR29Ra3dNUTFRNE1DQXNnQVNBQlFSaHFJQU1RamdVMkFpQWdCQ0FCUVNCcUVKTURJZ0pCQVRvQUJTQUNRWUVDT3dBQ0lBRWdBVUVRYWlBREVQTU9OZ0lnSUFRZ0FVRWdhaENUQTBHQkFqc0FBQXdIQ3lBQklBRkJHR29nQXhDT0JUWUNJQ0FFSUFGQklHb1Frd01RMXdnTUJnc2dBU0FCUVJocUlBTVFqZ1UyQWlBZ0JDQUJRU0JxRUpNREVOY0lJQUVnQVVFUWFpQURFUE1PTmdJZ0lBUWdBVUVnYWhDVEF4RFZEZ3dGQ3lBQklBRkJHR29nQXhDT0JUWUNJQ0FFSUFGQklHb1Frd05CQVRvQUFnd0VDeUFCSUFGQkdHb2dBeENPQlRZQ0lDQUVJQUZCSUdvUWt3TWlBa0VCT2dBRUlBSkJnUUk3QUFJTUF3c2dBa0U1UmcwQkRBSUxJQWRCQkdvaEJ3d0RDeUFERU1nQklnWkZCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrSGE2QVFRR1NFQ0lBRkJJR29pQkNBREVGZ2dBaUFFRUUwb0FnQXRBQUFoQWlBRUVBOGFEQVVMSUFFZ0EwRUFFRGcyQWd4QkFTRUlJQVpCQVdzaUFpQUJRVGhxSUFGQkRHb1Erd29pQlNnQ0JDQUZLQUlBYTBFQ2RVWUVRQU5BSUFZZ0NFWU5BZ0pBSUFRZ0JTZ0NBQ0FJUVFKMGFrRUVheEQxQXlJSlJRMEFRUUFoQWlBQklBQWdBeUFJRURnaURrRUFFTDRHTmdJZ0lBRWdBQ0FPUVFFUXZnWWlEallDQ0NBSlFReHFJUWtnQVNnQ0lBUkFJQVFnQVVFZ2FoQ1RBeUFKRU9NWUlBRW9BZ2doRGlBQktBSWdJUUlMSUE1RklBSWdEa1p5RFFBZ0JDQUJRUWhxRUpNRElBa1E0eGdMSUFoQkFXb2hDQXdBQ3dBTElBQkJBRG9BbEFNZ0FFR29CR3BCdE9NSkVCa2hCQ0FCSUFVb0FnUWdCU2dDQUd0QkFuVTJBZ2dnQkNBQlFRaHFFQzlCeWVNSkVCa2hCQ0FCSUFJMkFnUWdCQ0FCUVFScUVDOUJocGtCRUJraEFpQUJRU0JxSWdRZ0F4QllJQUlnQkJCTktBSUFMUUFBSVFJZ0JCQVBHZ3dFQ3lBRFFRUnFJUUlNQUFzQUN3QUxJQUF0QUpRRElRSUxJQUpCL3dGeFFRQkhJUUlnQVVFNGFoRFZCQXdFQ3lBS1FRUnFJUW9NQUFzQUJTQUJJQUlvQWdBaUJ4RGRDRFlDSUNBQklBRkJPR29nQVVFZ2FpSURFUHNLTmdJa0lBRkJqT0lTTmdJZ0lBRWdBellDTUNBSElBTVEzQmNnQWtFRWFpRUNJQU1RRmd3QkN3QUxBQXNnQVVIUUFHb2tBQ0FDUlEwQVFRQWhBU01BUVNCcklnTWtBQUpBSUFBdEFKUURSUTBBSUFCQmpBWnFJUWNnQUVHb0JHb2hBaUFBS0FLd0JTSUJRY3dGYWlFRklBRkIwQVZxSVFFQ1FBTkFJQUVvQWdBaUFTQUZSZzBCQWtBQ1FDQUJLQUlVUVR0SERRQWdBVUVBRURnaUJFRU1SeUFFUVFKSGNRMEFJQUFvQXJRRklBRVFlaENVQVNJRUtBSVVRU0JIRFFFZ0FDZ0N0QVVnQkVFQkVEZ1FsQUVpQkNnQ0ZFRWVSZ1JBSUFNZ0JCQmdOZ0lNSUFOQkVHb2dCeUFEUVF4cUVKWUJEQUVMSUFCQkFEb0FsQU1nQWtHQTV3c1FHU0VLSUFOQkVHb2lCQ0FCRUZnZ0NpQUVFRTBhSUFRUUR4b0xJQUZCQkdvaEFRd0JDd3NnQUVFQU9nQ1VBeUFDUWNYMUN4QVpJUVFnQTBFUWFpSUNJQUVRV0NBRUlBSVFUU2dDQUMwQUFFRUFSeUVCSUFJUUR4b01BUXNnQUNnQ3NBVWlBVUhNQldvaEFpQUJRZEFGYWlFQkEwQWdBaUFCS0FJQUlnRkdCRUFDUUNBQUtBS2dCa1VOQUNBQUtBSzRCZzBBSUFBZ0FDZ0N2QVVnQUNnQ3JBWWdBQ2dDdEFZUXdCY2lBVFlDdUFZZ0FDQUJRUUFRaFFFYUN5QUFMUUNVQTBFQVJ5RUJEQUlMSUFBb0Fyd0ZJQUVRWUJEcEFRUkFJQUFnQVJCZ1FRQVFoUUVhQ3lBQlFRUnFJUUVNQUFzQUN5QURRU0JxSkFBZ0FVVU5BRUVBSVFJakFFRVFheUlCSkFBQ1FDQUFMUUNVQTBVTkFDQUFLQUt3QlNJRFFjd0ZhaUVFSUFOQjBBVnFJUUlEUUNBRUlBSW9BZ0FpQTBjRVFBSkFJQUFvQXJ3RklBTVFlaERwQVNJQ1JRMEFJQUlnQWlnQ0FDZ0NnQUVSQUFCRkRRQWdBeWdDRkNJQ1FUdEdEUUFDUUNBQ1FTNUhCRUFnQWtFQlJ3MEJJQUJCQURvQWxBTWdBRUdvQkdwQithd01FQmtoQWlBQklBTVFXQ0FDSUFFUVRTZ0NBQzBBQUVFQVJ5RUNJQUVRRHhvTUJRc2dBRUVBT2dDVUF5QUFRYWdFYWtIZHJBd1FHU0VDSUFFZ0F4QllJQUlnQVJCTktBSUFMUUFBUVFCSElRSWdBUkFQR2d3RUN5QUFRUUE2QUpRRElBQkJxQVJxUVphdERCQVpJUUlnQVNBREVGZ2dBaUFCRUUwb0FnQXRBQUJCQUVjaEFpQUJFQThhREFNTElBTkJCR29oQWd3QkN3c2dBQzBBbEFOQkFFY2hBZ3NnQVVFUWFpUUFJQUpGRFFCQkFDRUhJd0JCb0FGcklnTWtBQUpBSUFBdEFKUURSUTBBSUFCQmdBZHFJUkVnQUVHb0JHb2hEQ0FBUVNCcUlRWWdBQ2dDc0FVaUFVSE1CV29oSENBQlFkQUZhaUVFQWtBRFFDQUVLQUlBSWdVZ0hFWU5BUUpBQWtBQ1FBSkFBa0FnQlNnQ0ZFRXdhdzREQVFFQUF3c2dBQ0FGRUhwQkFCQ0ZBU0VLSUFWQkFCQTRJUUVDUUNBS1JRMEFBbjhnQ2lnQ0JDSUNRZURMRWtZRVFDQURRUUEyQW5nZ0EwSUFOd053SUFOQ0FEY0RhQ0FESUFHdE53TkFJQU5CQVRZQ1dDQUdJQU5CNkFCcUlBTkJRR3NnQTBIWUFHb1FnZ2tNQVFzZ0FrR3d5eEpHQkVBZ0EwRUFOZ0o0SUFOQ0FEY0RjQ0FEUWdBM0EyZ2dBeUFCclRjRFFDQURRUUkyQWxnZ0JpQURRZWdBYWlBRFFVQnJJQU5CMkFCcUVJSUpEQUVMSUFKQnlNc1NSdzBCSUFOQkFEWUNlQ0FEUWdBM0EzQWdBMElBTndOb0lBTWdBYjY3T1FOQUlBTkJBVFlDV0NBR0lBTkI2QUJxSUFOQlFHc2dBMEhZQUdvUStnb0xJZ2dOQWdzZ0FFRUFPZ0NVQXlBTVFidk1DUkFaSVFJZ0EwSG9BR29pQVNBRkVGZ2dBaUFCRUUwb0FnQXRBQUJCQUVjaEJ5QUJFQThhREFZTElBQWdCUkI2UVFBUWhRRWhDaUFEUVFBMkFuZ2dBMElBTndOd0lBTkNBRGNEYUNBRElBVW9BaFJCTUVZNkFFQWdCaUFEUWVnQWFpQURRVUJyRVBJT0lRZ0xJQWhGSUFwRmNnMEFJQU5DQURjRG1BRWdBMEtBZ0lDQWdBRTNBb3dCSUFNZ0EwSG9BR28yQW9nQklBTkIyQUJxSUFBZ0JSQmdFTlFISUFNb0Fsd2hBaUFES0FKWUlRUUNRQU5BUVFVaERpQUNJQVJHRFFFQ1FBSkFJQVFvQWdRZ0JDZ0NBQ0lCYTBFSVJ3MEFJQUVvQWdCQkFVY05BQ0FESUFFb0FnUWlBVFlDVkNBQlFZQ0FCRWtOQVNBQVFRQTZBSlFESUF4QjI1d0pFQmtoQVNBRElBVVFZRFlDUUNBQklBTkJRR3NRTDBILzNRb1FHU0FEUWRRQWFoQXZLQUlBTFFBQVFRQkhJUWRCQVNFT0RBTUxJQVJCREdvaEJBd0JDd3NnQTBFQU5nSlFJQU5DQURjRFNDQURRZ0EzQTBBZ0F5QUJyVGNET0NNQVFSQnJJZ0VrQUNBQklBWWdBMEU0YWhEcEJUWUNEQ01BUVJCcklnSWtBQ0FHRUJ3Z0JpQUdLQUlNUVFGcUlnUTJBZ3dnQWlBRU5nSUlJQVpCakFGcUlnUWdCQkMvQVNBR0tBSUlJQUlvQWdnZ0EwRkFheUFCS0FJTUVQOGVJZ2tRS0NBRUlBUW9BaGhCQVdvMkFoZ2dBa0VRYWlRQUlBRkJFR29rQUNBRFFlZ0FhaUFKRUpBRkN5QURRZGdBYWhDa0FpQU9RUVZIRFFFZ0JSQmdJUWtnQXlBRFFlZ0FhaENXR1NJTklRNGpBRUhnQUdzaUFpUUFJQUlnQ0RZQ1dDQUNJQW8yQWx4QkFDRUJJQUFnQ1NBQ1Fkd0FhaUFPUVFBUTJ3Z0VRQ0FBUVNCcUlnUVFIQ0FBUWNnRWFpQUpFSk1DSWdFb0FnQWhDaUFDSUFFb0FnUWdBUzBBQ3lJSUlBaEJHSFJCR0hWQkFFZ2lDQnMyQWpRZ0FpQUtJQUVnQ0JzMkFqQWdBaUFDS1FNd053TUlJQUpCT0dvaUN5QUFRYWdDYWlBQ1FRaHFFSmdESUFKQkFEWUNLQ0FDUWdBM0F5QWdBa0lBTndNWUlBSWdBaWdDWENJQklBUWdBU2dDQUNnQ0NCRUJBRFlDRUNNQVFUQnJJZ2drQUNNQVFSQnJJZ0VrQUNBSVFRaHFJZ3BDQURjQ0FDQUtRb0NBZ0lEQUFEY0NIQ0FLSUFwQkNHb2lDVFlDR0NBS0lBSW9BaEEyQWdBZ0NpQUNLQUpZTmdJRUlBRWdEa0VnYWpZQ0NDQUJJQTRvQWlBZ0RrYzZBQXdnQ1NBQlFRaHFFSU1KSUFGQkVHb2tBQ0FJSUFRZ0N4RHpBallDQkNNQVFSQnJJZ3NrQUNBRUVCd2dCQ0FFS0FJTVFRRnFJZ0UyQWd3Z0N5QUJOZ0lJSXdCQkVHc2lEaVFBSUFSQmpBRnFJaGtRdHdRaEFTQUtLQUlFSVJBZ0NpZ0NBQ0VQSUFnb0FnUWhFeUFMS0FJSUlSVWdCQ2dDQ0NFV0lBNGdDVUVRYWpZQ0NDQU9JQWtvQWhBZ0NVYzZBQXdnR1NBQklCWWdGU0FDUVJocUlCTWdEeUFRSUE1QkNHb1FoQjhpQVJBb0lCa2dHU2dDR0VFQmFqWUNHQ0FPUVJCcUpBQWdDMEVRYWlRQUlBUVE4Z0lnQVJDQkN5QUtFTHdISUFoQk1Hb2tBQXNnQWtIZ0FHb2tBQ0FORUNNZ0FRUkFJQU1nQlJCZ05nSllJQU5CUUdzZ0VTQURRZGdBYWhDV0FRc2dBMEhvQUdvUUl3c2dCVUVFYWlFRURBRUxDeUFEUWVnQWFoQWpEQUVMSUFBdEFKUURRUUJISVFjTElBTkJvQUZxSkFBZ0IwVU5BQ01BUWJBQ2F5SUJKQUFDUUFKQUlBQXRBSlFEUlEwQUlBQkJ2QVpxSVFjZ0FFSDRCMm9oQlNBQVFTQnFJUVlnQUVHZ0JXb2hDQ0FBS0FLd0JTSURRY3dGYWlFWklBTkIwQVZxSVFJZ0FVR1lBV29oREFOQUlCa2dBaWdDQUNJRFJ3UkFBa0FnQXlnQ0ZFRTdSdzBBSUFOQkFCQTRJUUlnQXhCNklRUUNRQ0FDUVgxeFFRRkhEUUFnQkNBQUtBS3dCa2NOQUNBSEtBSUFCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrSEJzd1FRR1NnQ0FDMEFBRUVBUnlFRURBWUxJQWNnQXhCZ05nSUFJQUFnQXhESUFVRUNUd1IvSUFOQkFSQTRCVUVBQ3pZQ3dBWU1BUXNnQ0NBQ0VKZ1BJZ3BCQ1UxQkFFRUJJQXAwUWJjSGNSdEZCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrSEoxUWtRR1NFRUlBRWdBallDb0FJZ0JDQUJRYUFDYWhDUkJVRzRwQXdRR1NFRUlBRkJnQUZxSWdJZ0F4QllJQVFnQWhCTktBSUFMUUFBUVFCSElRUWdBaEFQR2d3RkN5QUFMUUNVQTBVTkF3SkFJQUpGQkVCQkFDRUVJQUFnQXhEY0NDSUtEUUVNQmdzZ0FDQUVRUUFRaFFFaUFrVUVRQ0FBUVFBNkFKUURJQUJCcUFScVFiS3lEQkFaSVFJZ0FTQURFSG8yQW9BQklBSWdBVUdBQVdvUUx5Z0NBQzBBQUVFQVJ5RUVEQVlMSUFJb0FnUkIrTXNTUndSQUlBQkJBRG9BbEFNZ0FFR29CR3BCL2NJTEVCa2hBaUFCSUFNUVlEWUNnQUVnQWlBQlFZQUJhaEF2UWF1N0NoQVpJUUlnQVNBREVIbzJBcUFDSUFJZ0FVR2dBbW9RTHlnQ0FDMEFBRUVBUnlFRURBWUxJQUlvQWd3aEJDQUNLQUlJSWdvTkFDQUJRWUFCYWtIR3FnVkIxd3RCQnlBQlFhQUNhaEFkSWdJUUZ5RUtJQXhCa0t3SUVBNGFJQW9RR0NBQ0VCNUJBQ0VLQzBFQUlRNGdBeERJQVVFQ1R3UkFJQUZCZ0FGcUlBQWdBMEVCRURnUTJ3VWdBU2dDaEFFaERnc2dBQ0FLSUFRUWtoa2hDU0FERUdBaEFpQUJRZ0EzQTJBZ0FVSUFOd05ZSUFGQ0FEY0RVQ0FCUWdBM0EwZ2dBVUlBTndONElBRkNnSUNBZ0lBQk53SnNJQUVnQVVISUFHb2lDellDYUNBQUlBSWdCQ0FKSUFvZ0RpQUxFUGtLSVFJZ0N4QWpJQUpGRFFBZ0JoRHlBaUFDRUlFTElBRWdBeEJnTmdKRUlBRkJBRFlDaUFFZ0FVSUFOd09BQVNBQlFhQUNhaUFGSUFGQnhBQnFJQUZCZ0FGcUVQRU9JQUVvQXFBQ0RRQWdBU2dDcEFJaUNpQUpOZ0lJSUFvZ0JEWUNCQ0FLSUFJMkFnQUxJQU5CQkdvaEFnd0JDd3NDUUFKQUlBY29BZ0FpQTBVTkFDQUFRY2dFYWlBRElBRkJnQUZxUVlyRUFoQVVJZ01ReFFZZ0F4QVBHa0VBSVFJZ0FDZ0N3QVlpQXdSQUlBQW9BclFGSUFNUWxBRWlBeWdDRkNJQ1FUTkhJQUpCTEVkeERRSWdBVUdBQVdvZ0FDQURJQUFvQXFRR0VEZ1Eyd1VnQVNnQ2hBRWhBZ3NnQUNBQUlBQW9BcXdHUVFBUWhRRWlDaUFJSUFBb0FyUUdFSmdQSWdNUWtoa2hDQ0FBS0FLOEJpRU9JQUZDQURjRElDQUJRZ0EzQXhnZ0FVSUFOd01RSUFGQ2dJQ0FnSUFCTndJc0lBRkNBRGNEQ0NBQlFnQTNBemdnQVNBQlFRaHFJZ1EyQWlnZ0FDQU9JQU1nQ0NBS0lBSWdCQkQ1Q2lFQ0lBUVFJeUFHRVBJQ0lBSVFnUXNnQVVFQU5nS0lBU0FCUWdBM0E0QUJJQUZCb0FKcUlBVWdCeUFCUVlBQmFoRHhEaUFCS0FLZ0FnMEFJQUVvQXFRQ0lnUkJBRFlDQ0NBRUlBTTJBZ1FnQkNBQ05nSUFDeUFBTFFDVUEwRUFSeUVFREFJTElBQkJBRG9BbEFNZ0FFR29CR3BCNmE4TUVCa2hCQ0FCUVlBQmFpSUNJQU1RV0NBRUlBSVFUU2dDQUMwQUFFRUFSeUVFSUFJUUR4b01BUXRCQUNFRUN5QUJRYkFDYWlRQUlBUkZEUUFnQUMwQWxBTkJBRWNoRkFzZ0ZFVU5BRUVBSVFjakFFSGdCMnNpQVNRQUFrQWdBQzBBbEFORkRRQWdBRUdVQjJvaEJTQUFLQUxJQlNFS0lBQW9Bc1FGSVFJRFFBSkFJQUlnQ2tjRVFDQUFMUUNVQTBVTkF5QUJJQUlvQWdBaUF4RGRDRFlDM0FjZ0JTQUJRZHdIYWhEc0FTSUVSUVJBSUFBZ0FVRUlhaUFBSUFOQkFCQ1VHaUlERUlvYU9nQ1VBeUFERUpJYURBSUxJQVFvQWhBaEJpQUVLQUlNSVFRRFFDQUVJQVpHRFFJZ0FDQUJRUWhxSUFBZ0F5QUVFSlFhSWdnUWlob2lEam9BbEFNZ0NCQ1NHaUFFUVlRQmFpRUVJQTROQUFzTUF3c2dBQzBBbEFOQkFFY2hCd3dDQ3lBQ1FRUnFJUUlNQUFzQUN5QUJRZUFIYWlRQUlBZEZEUUFnQUMwQWxBTkJBRWNoRWdzZ0VrVU5BQ0FBTFFDVUEwRUFSeUVyQ3lBZ0tBSVlJUUFnSUVFQU5nSVlJQUFFUUNBQUJFQWdBQkNKRndzZ0FCQWZDeUFnUVNCcUpBQWdLd3V6Q2dFSWZ5QUFLQUlBSVFNZ0FDQUJOZ0lBSUFNRVFDQURCRUFnQXlnQ0FCQzRDQ0FES0FMc0FTRUFJQU5CQURZQzdBRWdBQVJBSUFBRVFDQUFRUnhxRUU4Z0FFRUlhaEJQQ3lBQUVCOExJQU1vQXVnQklRQWdBMEVBTmdMb0FTQUFCRUFnQUFSQUlBQkJHR29RTWhvZ0FFRUVhaEJQQ3lBQUVCOExJQU1vQXVRQklRQWdBMEVBTmdMa0FTQUFCRUFnQUFSQUlBQkJDR29RaFFNYUlBQkJCR29RaFFNYUN5QUFFQjhMSUFNb0F1QUJJUUlnQTBFQU5nTGdBU0FDQkVBZ0FnUkFJQUpCRkdvUVR5QUNLQUlJSVFBRFFDQUFCRUFnQUNnQ0FDRUJJQUJCQ0dvUTJnZ2FJQUFRSHlBQklRQU1BUXNMSUFJUW13TUxJQUlRSHdzZ0F5Z0MzQUVoQlNBRFFRQTJBdHdCSUFVRVFDQUZCRUFnQlVFRWFpSUhLQUlJSVFBRFFDQUFCRUFnQUNnQ0FDRUNJQUJCRUdvaUNDZ0NDQ0VCQTBBZ0FRUkFJQUVvQWdBaEJDQUJRUXhxSWdaQkxHb1FNaG9nQmtFVWFoQlBJQVlRVHlBQkVCOGdCQ0VCREFFTEN5QUlFTGNDSUFBUUh5QUNJUUFNQVFzTElBY1F0d0lMSUFVUUh3c2dBeWdDMkFFaEFpQURRUUEyQXRnQklBSUVRQ0FDQkVBZ0FrRW9haUFDS0FJc0VPTU9JQUpCRkdvaUJTZ0NDQ0VBQTBBZ0FBUkFJQUFvQWdBaEFTQUFLQUlJSVFRZ0FFRUFOZ0lJSUFRRVFDQUVJQVFvQWdBb0FnZ1JBd0FMSUFBUUh5QUJJUUFNQVFzTElBVVFtd01nQWtFRWFpQUNLQUlJRU9JT0N5QUNFQjhMSUFNb0F0UUJJUUFnQTBFQU5nTFVBU0FBQkVBZ0FBUkFJQUFnQUNnQ0JCRGhEZ3NnQUJBZkN5QURLQUxRQVNFQ0lBTkJBRFlDMEFFZ0FnUkFJQUlFUUNBQ1FkUUFhaERuRGlBQ1FVQnJFT2NPSUFKQkxHb2lCQ2dDQ0NFQUEwQWdBQVJBSUFBb0FnQWhBU0FBUVF4cUlBQW9BaEFRNEE0Z0FCQWZJQUVoQUF3QkN3c2dCQkNiQXlBQ1FSaHFFRThnQWtFRWFoQlBDeUFDRUI4TElBTkJ6QUZxRVA4WUlBTkJ5QUZxRUlFWklBTkJ0QUZxSWdnb0FnZ2hBQU5BSUFBRVFDQUFLQUlBSVFFZ0FFRU1haUlFS0FJRUlRWWdCQ2dDQUNFQ0EwQWdBaUFHUndSQUlBSW9BZ0FpQlFSQUlBVVFvZzRMSUFVUUh5QUNRUVJxSVFJTUFRc0xJQVFnQkNnQ0FEWUNCQ0FFUWVBQWFpSUNLQUlBQkVBZ0FpZ0NBQ0VISUFJb0FnUWhCUU5BSUFVZ0IwY0VRQ0FGUVFScklna29BZ0FoQmlBSlFRQTJBZ0FnQmdSQUlBWUVRQ0FHRUtJT0N5QUdFQjhMSUFWQkNHc2hCUXdCQ3dzZ0FpQUhOZ0lFSUFJb0FnQVFId3NnQkVITUFHb1FUeUFFUVF4cUVLSU9JQVFRTWhvZ0FCQWZJQUVoQUF3QkN3c2dDQkNiQXlBRFFhZ0JhaUFES0FLc0FSRGZEaUFEUVp3QmFpQURLQUtnQVJEY0RpQURLQUtZQVNFQUlBTkJBRFlDbUFFZ0FBUkFJQUFFUUNBQVFjUUJhaEJQSUFCQnNBRnFFTlVFSUFCQjVBQnFFTnNPSUFCQkdHb1EydzRnQUVFRWFoRFZCQXNnQUJBZkN5QURRWVFCYWhCUElBTkI4QUJxRU9jT0lBTkIyQUJxRUU4Z0EwSEVBR29RVHlBRFFVQnJFUGNZSUFOQlBHb1EvUmdnQTBFNGFoQ0RHU0FEUVNCcUVCWWdBeWdDR0NFQklBTkJBRFlDR0NBQkJFQWdBUVJBSUFGQm1BWnFFT1lPSUFGQmpBWnFJZ0FvQWdBRVFDQUFLQUlBSVFRZ0FDZ0NCQ0VDQTBBZ0FpQUVSd1JBSUFKQkJHc1EyUWdoQWd3QkN3c2dBQ0FFTmdJRUlBQW9BZ0FRSHdzZ0FVSElCV29Ra2dNYUlBRkJoQVZxRUpJREdpQUJRY0FFYWhDU0F4b2dBVUg4QTJvUWtnTWFJQUZCdUFOcUVKSURHaUFCUWZRQ2FoQ1NBeG9nQVVHd0Ftb1FrZ01hSUFGQjdBRnFFSklER2lBQlFlZ0JhaENGQXhvZ0FVSGtBV29RaFFNYUlBRkJvQUZxRUpJREdpQUJRZHdBYWhDU0F4b2dBVUVZYWhDU0F4b0xJQUVRSHdzTElBTVFId3NMS0FBZ0FFRUFOZ0trQlNBQVFSZ1E2dzRnQUVFQU5nS3NCU0FBSUFBb0FyQUZRUUZxTmdLd0JRc2RBQ0FBUWN3QWFoQWpJQUJCSUdvUUl5QUFRUlJxRUE4YUlBQVFEd3NLQUNBQVFiak5FaEJJQzVNQkFRRi9Jd0JCSUdzaUJ5UUFJQWNnQWlnQ0FEWUNIQ01BUVNCcklnSWtBQ0FDSUFNb0FnQTJBZ2dnQWlBRUtBSUFOZ0lNSUFJZ0JTZ0NBRFlDRUNBR0tBSUFJUU1nQWtFRU5nSWNJQUlnQXpZQ0ZDQUNJQUpCQ0dvMkFoZ2dBaUFDS1FNWU53TUFJQWNnQWhEZEdSb2dBa0VnYWlRQUlBQWdBU0FIUVJ4cUlBY1F4UmtoQUNBSEVGNGdCMEVnYWlRQUlBQUxpZ0VCQVg4akFFRWdheUlHSkFBZ0JpQUNLQUlBTmdJY0l3QkJJR3NpQWlRQUlBSWdBeWdDQURZQ0RDQUNJQVFvQWdBMkFoQWdCU2dDQUNFRElBSkJBellDSENBQ0lBTTJBaFFnQWlBQ1FReHFOZ0lZSUFJZ0Fpa0RHRGNEQUNBR0lBSVE4Z1lhSUFKQklHb2tBQ0FBSUFFZ0JrRWNhaUFHRU93T0lRQWdCaENzQXlBR1FTQnFKQUFnQUFzUUFDQUFJQUFvQWdCQjJBSnFFT01hQytzQkFRTi9Jd0JCb0FKcklnSWtBRUVNSUFGQmxnRnNRZVFBYmlJQklBRkJERTBiSWdNZ0FDZ0NsQVJMQkVBZ0FrS0FnSUNBZ0FFM0FwUUNJQUlnQWtFUWFpSUJOZ0tRQWlBQklBQW9BcHdFRUtvTElBQW9BcEFFSWdFZ0FDZ0NsQVJCTEd4cUlRUURRQUpBSUFFZ0JFWUVRQ0FBRUxBTElBQWdBeENHQ1NBQ0tBS1FBaUlCSUFJb0FwUUNRUVYwYWlFRERBRUxJQUV0QUNBRVFDQUNRUkJxSUFFUTRBWVF3UThMSUFGQkxHb2hBUXdCQ3dzRFFDQUJJQU5HUlFSQUlBSkJDR29nQUNBQklBRkJCR29ROEJrZ0FVRWdhaUVCREFFTEN5QUNRUkJxRU1BUEN5QUNRYUFDYWlRQUM1MERBUU4vQWtBQ1FBSkFBa0FnQXc0REF3SUJBQXNnQTBFSVRBUkFJQUFnQVVZTkF5QUVJZ01oQlFOQUlBVWhCaUFESUFBcEFnQTNBZ0FnQUVFSWFpSUFJQUZHRFFRZ0JrRUlhaUVGSUFVaEF5QUNJQUFnQmhEb0EwVU5BQU5BSUFNZ0JpSURLUUlBTndJQUlBTWdCRVlFUUNBRUlRTU1BZ3NnQWlBQUlBTkJDR3NpQmhEb0F3MEFDd3dBQ3dBTElBQWdBQ0FEUVFGMklnWkJBM1FpQjJvaUJTQUNJQVlnQkNBR0VPb0lJQVVnQVNBQ0lBTWdCbXNpQXlBRUlBZHFJQU1RNmdnZ0JTRURBMEFnQUNBRlJnUkFBMEFnQVNBRFJnMEZJQVFnQXlrQ0FEY0NBQ0FFUVFocUlRUWdBMEVJYWlFRERBQUxBQXNnQVNBRFJnUkFBMEFnQUNBRlJnMEZJQVFnQUNrQ0FEY0NBQ0FFUVFocUlRUWdBRUVJYWlFQURBQUxBQVVDUUNBQ0lBTWdBQkRvQXdSQUlBUWdBeWtDQURjQ0FDQURRUWhxSVFNTUFRc2dCQ0FBS1FJQU53SUFJQUJCQ0dvaEFBc2dCRUVJYWlFRURBRUxBQXNBQ3lBRUlBRkJDR3NpQVNBQUlBSWdBU0FBRU9nRElnSWJLUUlBTndJQUlBQWdBU0FDR3lFQUlBUkJDR29oQkFzZ0JDQUFLUUlBTndJQUN3c2tBQ0FBSUFFcEFnQTNBZ0FnQUNBQktBSUlOZ0lJSUFCQkRHb2dBVUVNYWhDZERCb0xGQUFnQUVHdzNCSTJBZ0FnQUVFUWFoQmVJQUFMb2dFQkFuNERRQUpBSUFBZ0FVWUVRQU5BSUFJZ0EwWU5BaUFFSUFJcEF3QTNBd0FnQkVFSWFpRUVJQUpCQ0dvaEFnd0FDd0FMSUFJZ0EwWUVRQU5BSUFBZ0FVWU5BaUFFSUFBcEF3QTNBd0FnQkVFSWFpRUVJQUJCQ0dvaEFBd0FDd0FGQWtBZ0Fpa0RBQ0lGSUFBcEF3QWlCbFFFUUNBRUlBVTNBd0FnQWtFSWFpRUNEQUVMSUFRZ0JqY0RBQ0FBUVFocUlRQUxJQVJCQ0dvaEJBd0NDd0FMQ3d2UUFnSUNmZ04vQWtBQ1FBSkFBa0FnQXc0REF3QUJBZ3NnQkNBQUtRTUFOd01BRHdzZ0FVRUlheUlCS1FNQUlnVWdBQ2tEQUNJR1ZBUkFJQVFnQlRjREFDQUVJQUFwQXdBM0F3Z1BDeUFFSUFZM0F3QWdCQ0FCS1FNQU53TUlEd3NnQTBFSVRBUkFBa0FnQUNJRElBRWlCMFlOQUNBRUlBTXBBd0EzQXdBZ0JDRUFBMEFnQTBFSWFpSURJQWRHRFFFZ0FFRUlhaUVCQWtBZ0F5a0RBQ0lGSUFBcEF3QWlCbFFFUUNBQklBWTNBd0FEUUNBQUlBUkdCRUFnQXlrREFDRUZJQVFoQUF3REN5QURLUU1BSWdVZ0FFRUlheUlDS1FNQUlnWmFEUUlnQUNBR053TUFJQUloQUF3QUN3QUxJQUVnQlRjREFDQUJJUUFNQVFzZ0FDQUZOd01BSUFFaEFBd0FDd0FMRHdzZ0FDQUFJQU5CQVhZaUIwRURkQ0lKYWlJSUlBSWdCeUFFSUFjUTRBZ2dDQ0FCSUFJZ0F5QUhheUlDSUFRZ0NXb2dBaERnQ0NBQUlBZ2dDQ0FCSUFRUXJCa0xDK0FEQVFSL0FrQUNRQUpBQWtBQ1FDQUNEZ01FQWdFQUN5QUNRUWhLRFFJZ0FDQUJSZzBESUFNZ0FDZ0NBRFlDQUNBRElRSURRQ0FBUVFScUlnQWdBVVlOQkNBQ1FRUnFJUVFDUUNBQUtBSUFJZ1VvQWdnZ0FpZ0NBQ0lHS0FJSVNRUkFJQVFnQmpZQ0FBTkFJQUFvQWdBaEJpQUNJQU5HQkVBZ0F5RUNEQU1MSUFZb0FnZ2dBa0VFYXlJRktBSUFJZ2NvQWdoUERRSWdBaUFITmdJQUlBVWhBZ3dBQ3dBTElBUWdCVFlDQUNBRUlRSU1BUXNnQWlBR05nSUFJQVFoQWd3QUN3QUxJQU1nQVVFRWF5SUJLQUlBSWdJZ0FDZ0NBQ0lFSUFJb0FnZ2dCQ2dDQ0VraUFoczJBZ0FnQUNBQklBSWJJUUFnQTBFRWFpRURDeUFESUFBb0FnQTJBZ0FNQVFzZ0FDQUFJQUpCQVhZaUJVRUNkQ0lHYWlJRUlBVWdBeUFGRU9rSUlBUWdBU0FDSUFWcklnSWdBeUFHYWlBQ0VPa0lJQVFoQWdOQUlBQWdCRVlFUUFOQUlBRWdBa1lOQXlBRElBSW9BZ0EyQWdBZ0EwRUVhaUVESUFKQkJHb2hBZ3dBQ3dBTElBRWdBa1lFUUFOQUlBQWdCRVlOQXlBRElBQW9BZ0EyQWdBZ0EwRUVhaUVESUFCQkJHb2hBQXdBQ3dBRkFrQWdBaWdDQUNJRktBSUlJQUFvQWdBaUJpZ0NDRWtFUUNBRElBVTJBZ0FnQWtFRWFpRUNEQUVMSUFNZ0JqWUNBQ0FBUVFScUlRQUxJQU5CQkdvaEF3d0JDd0FMQUFzTEN3QWdBRUVvYWhCZUlBQUw2d0lCQjM4Z0FpZ0NCQ0VGQWtBZ0FTZ0NCQ0lFYVNJSVFRRk5CRUFnQkVFQmF5QUZjU0VGREFFTElBUWdCVXNOQUNBRklBUndJUVVMSUFFb0FnQWdCVUVDZEdvaUJpZ0NBQ0VEQTBBZ0F5SUhLQUlBSWdNZ0FrY05BQXNDUUNBQlFRaHFJZ2tnQjBjRVFDQUhLQUlFSVFNQ1FDQUlRUUZOQkVBZ0F5QUVRUUZyY1NFRERBRUxJQU1nQkVrTkFDQURJQVJ3SVFNTElBTWdCVVlOQVFzZ0FpZ0NBQ0lEQkVBZ0F5Z0NCQ0VEQWtBZ0NFRUJUUVJBSUFNZ0JFRUJhM0VoQXd3QkN5QURJQVJKRFFBZ0F5QUVjQ0VEQ3lBRElBVkdEUUVMSUFaQkFEWUNBQXNnQndKL1FRQWdBaWdDQUNJR1JRMEFHaUFHS0FJRUlRTUNRQ0FJUVFGTkJFQWdBeUFFUVFGcmNTRUREQUVMSUFNZ0JFa05BQ0FESUFSd0lRTUxJQVlnQXlBRlJnMEFHaUFCS0FJQUlBTkJBblJxSUFjMkFnQWdBaWdDQUFzMkFnQWdBa0VBTmdJQUlBRWdBU2dDREVFQmF6WUNEQ0FBUVFFNkFBZ2dBQ0FKTmdJRUlBQWdBallDQUF0SEFRRi9JQUV0QUFRRVFDQUFFQ01nQUNBQktBSUFJZ0lwQWdBM0FpQWdBQ0FDS0FJSU5nSW9JQUVvQWdBaUFFRUFOZ0lJSUFCQ0FEY0NBQThMSUFBZ0FTZ0NBQkRxR1FzK0FDQUFRWXdGYWhBaklBQkI0QVJxRUNNZ0FFRzBCR29RSXlBQVFhZ0RhaERjQlNBQVFmd0NhaEFqSUFCQnNBSnFFSlVCSUFCQkpHb1Frd1VnQUF1b0FRRUVmeUFBS0FLRUFTSUNJQUFvQW9nQlR3UkFJQUFvQW9nQklnSkJBWFJCQWlBQ0d5SUNJQUFvQW9nQlN3UkFJQUFvQW9BQklRTWdBQ0FDRU40T0lBQW9Bb1FCSVFSQkFDRUNBMEFnQWlBRVJnUkFJQUFnQXhBMkJTQUNRUUowSWdVZ0FDZ0NnQUZxSUFNZ0JXb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3c2dBQ2dDaEFFaEFnc2dBQ0FDUVFGcU5nS0VBU0FBS0FLQUFTQUNRUUowYWlBQktBSUFOZ0lBQ3k0QUlBQWdBQkRmQ3lBQktBSUFJQUlvQWdBZ0F5Z0NBQkROSENJQkVDZ2dBQ0FBS0FJWVFRRnFOZ0lZSUFFTDNBSUJDMzhnQUNnQ0FDSUVLQUt3QlNJSklBQW9BZ3hHQkVBZ0FDZ0NDQThMSXdCQkVHc2lBU1FBSXdCQnNBRnJJZ1VrQUNBRUtBS2tCU0lIUVFGcklRb2dBQ2dDQkNJSUlBZHdJUUlnQkNnQ29BVWhDd0pBQTBBZ0F5QUhSd1JBSUFzZ0FrRWNiR29pQmkwQUVFVUVRQ0FCUVFBMkFnd2dBVUVBT2dBSURBTUxBa0FnQmlnQ0ZDQUlSdzBBSUFnZ0JpZ0NBRWNOQUNBQklBSTJBZ3dnQVVFQk9nQUlEQU1MSUFNZ0JpZ0NHRXNFUUNBQlFRQTJBZ3dnQVVFQU9nQUlEQU1GSUFKQkFXcEJBQ0FDSUFwSEd5RUNJQU5CQVdvaEF3d0NDd0FMQ3lBRlFZYTFBMEdlQkVFT0lBVkJvQUZxRUIwaUFoQVhJZ05CR0dwQjBqVVFEaG9nQXhBWUlBRkJBRFlDRENBQlFRQTZBQWdnQWhBZUN5QUZRYkFCYWlRQUlBRW9BZ3doQWlBRUtBS2dCU0VESUFFdEFBZ2hCQ0FCUVJCcUpBQWdBQ0FKTmdJTUlBQWdBeUFDUVJ4c2FrRUVha0VBSUFRYklnQTJBZ2dnQUFzNkFDQUFJQUFRdFFjZ0FTZ0NBQ0FDS0FJQUlBTWdCQ2dDQUNBRktBSUFJQVlvQWdBUTloNGlBUkFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJDLzBDQVFaL0lBQWdBVWNFZnlBQklBSkdCRUFnQUE4TEFuOGdBU0FBUVFScVJnUkFJQUlnQVdzaEJDQUFLQUlBSVFVZ0FTQUNSd1JBSUFBZ0FTQUVFT2NCR2dzZ0FDQUVhaUlBSUFVMkFnQWdBQXdCQ3lBQ0lBRkJCR3BHQkVBZ0FrRUVheUlCS0FJQUlRVWdBQ0FCUndSQUlBSWdBU0FBYXlJQmF5SUNJQUFnQVJEbkFSb0xJQUFnQlRZQ0FDQUNEQUVMQW44Z0FTQUFJZ05yUVFKMUlnUWdBaUFCYTBFQ2RTSUZSd1JBSUFVaEFDQUVJUUVEUUNBQklBQWlBVzhpQUEwQUN5QURJQUZCQW5ScUlRWURRQ0FESUFaR0JFQWdBeUFGUVFKMGFnd0RCU0FHUVFScklnWWdCRUVDZENJSGFpRUJJQVlvQWdBaENDQUdJUUFEUUNBQUlBRW9BZ0EyQWdBZ0FTSUFJQWRxSUFNZ0JDQUNJQUZyUVFKMUlnRnJRUUowYWlBQklBUktHeUlCSUFaSERRQUxJQUFnQ0RZQ0FBd0JDd0FMQUFzZ0FTRUFBMEFnQVNBRFJ3UkFJQU1vQWdBaEFpQURJQUFvQWdBMkFnQWdBQ0FDTmdJQUlBQkJCR29oQUNBRFFRUnFJUU1NQVFzTElBRUxDd1VnQWdzTHRRTUJBMzhDUUFKQUFrQUNRQ0FERGdNREFnRUFDeUFEUVFoTUJFQWdBQ0FCUmcwRElBUWlBeUVGQTBBZ0JTRUdJQU1nQUNnQ0FEWUNBQ0FBUVFScUlnQWdBVVlOQkNBR1FRUnFJUVVnQlNFRElBSWdBQ2dDQUNBR0tBSUFFT2tEUlEwQUEwQWdBeUFHSWdNb0FnQTJBZ0FnQXlBRVJnUkFJQVFoQXd3Q0N5QUNJQUFvQWdBZ0EwRUVheUlHS0FJQUVPa0REUUFMREFBTEFBc2dBQ0FBSUFOQkFYWWlCa0VDZENJSGFpSUZJQUlnQmlBRUlBWVE2d2dnQlNBQklBSWdBeUFHYXlJRElBUWdCMm9nQXhEckNDQUZJUU1EUUNBQUlBVkdCRUFEUUNBQklBTkdEUVVnQkNBREtBSUFOZ0lBSUFSQkJHb2hCQ0FEUVFScUlRTU1BQXNBQ3lBQklBTkdCRUFEUUNBQUlBVkdEUVVnQkNBQUtBSUFOZ0lBSUFSQkJHb2hCQ0FBUVFScUlRQU1BQXNBQlFKQUlBSWdBeWdDQUNBQUtBSUFFT2tEQkVBZ0JDQURLQUlBTmdJQUlBTkJCR29oQXd3QkN5QUVJQUFvQWdBMkFnQWdBRUVFYWlFQUN5QUVRUVJxSVFRTUFRc0FDd0FMSUFRZ0FVRUVheUlCSUFBZ0FpQUJLQUlBSUFBb0FnQVE2UU1pQWhzb0FnQTJBZ0FnQUNBQklBSWJJUUFnQkVFRWFpRUVDeUFFSUFBb0FnQTJBZ0FMQzg0QkFRUi9JQUFvQWtRaUFpQUFLQUpJVHdSQUlBQW9Ba2dpQWtFQmRFRUNJQUliSWdJZ0FDZ0NTRXNFUUNBQUtBSkFJUVZCRUNFRElBQWhCQ0FDUVJCUEJFQkJmeUFDUVFKMElBSkIvLy8vL3dOTEd4QVZJUVFnQWlFREN5QUFJQVEyQWtBZ0FDQUROZ0pJSUFBb0FrUWhBMEVBSVFJRFFDQUNJQU5HQkVBZ0FDQUZFRFlGSUFKQkFuUWlCQ0FBS0FKQWFpQUVJQVZxS0FJQU5nSUFJQUpCQVdvaEFnd0JDd3NMSUFBb0FrUWhBZ3NnQUNBQ1FRRnFOZ0pFSUFBb0FrQWdBa0VDZEdvZ0FTZ0NBRFlDQUF0dUFRUi9Ba0FnQUNnQ0JDSURCRUFnQXlBQklBSVEvZ0pGRFFFTFFRRWhCQ0FBS0FJUUlnTXRBQXdnQTBWeURRQWdBRUVJYWhEekNpRUFBMEFnQUVVaEJDQUFSUTBCSUFBb0FnUWlBeTBBRENFRklBQWdBU0FDRVA0Q0lRWkJBQ0FESUFVYklRQWdCZzBBQ3dzZ0JBdXNBUUVGZnlBQUtBS0VBU0lDSUFBb0FvZ0JUd1JBSUFBb0FvZ0JJZ0pCQVhSQkFpQUNHeUlDSUFBb0FvZ0JTd1JBSUFBb0FvQUJJUU1nQUNBQ0VONE9JQUFvQW9RQklRUWdBQ2dDZ0FFaEJVRUFJUUlEUUNBQ0lBUkdCRUFnQUNBREVEWUZJQVVnQWtFQ2RDSUdhaUFESUFacUtBSUFOZ0lBSUFKQkFXb2hBZ3dCQ3dzTElBQW9Bb1FCSVFJTElBQWdBa0VCYWpZQ2hBRWdBQ2dDZ0FFZ0FrRUNkR29nQVNnQ0FEWUNBQXM5QVFGL0l3QkJFR3NpQXlRQUlBTWdBU2dDQURZQ0RDQURJQUFnQWhDckJqWUNDQ0FBSUFOQkRHb2dBMEVJYWhDa0N5RUFJQU5CRUdva0FDQUFDM01CQTM4Q1FDQUFLQUlvSUFFb0FnUkpCRUFnQUJBaklBQWdBU2dDQkJDK0NRd0JDeUFBUVFBMkFpUUxJQUFnQVNnQ0JDSUNOZ0lrSUFBb0FpQWhBeUFCS0FJQUlRRkJBQ0VBQTBBZ0FDQUNSd1JBSUFNZ0FFRUNkQ0lFYWlBQklBUnFLQUlBTmdJQUlBQkJBV29oQUF3QkN3c0xFUUFnQUNBQVFkZ0NhaUFCSUFJUWh3c0xOQUVCZnlNQVFSQnJJZ01rQUNBRElBSW9BZ0EyQWd3Z0FDQUFRZGdDYWlBQklBTkJER29RMWdRaEFDQURRUkJxSkFBZ0FBc3hBUUYvSXdCQkVHc2lBU1FBSUFGQkFEb0FEQ0FCSUFCQklHbzJBZ2dnQVVFSWFoRFBIQ0VBSUFGQkVHb2tBQ0FBQ3hrQUlBQkIwQUJxRUNNZ0FFRWdhaEFqSUFCQkZHb1FEeG9MT0FFQmZ5TUFRYUFCYXlJQkpBQWdBVUhUdEFWQjF3QkJBQ0FBS0FJQUVCY2lBRUVZYWtHR2lRUVFEaG9nQUJBWUlBRkJvQUZxSkFBTFZnQWdBRUlBTndNQUlBQkJBRFlDRUNBQVFnQTNBd2dnQUVFVWFoQlZJQUJDQURjRGdBRWdBRUtBZ0lDQWdBRTNBblFnQUNBQVFkQUFhallDY0NBQVFvQ0FnSUNBQVRjQ1JDQUFRVUJySUFCQklHbzJBZ0FMWHdFQmZ5TUFRUkJySWdRa0FDQUVJQU1wQWdBM0F3Z2pBRUVRYXlJREpBQWdBeUFDTmdJSUlBTWdBQ0FCRU9jRk5nSUVJQUFnQUVIWUFtb2dBMEVFYWlBRFFRaHFJQVJCQ0dvUTlob2hBQ0FEUVJCcUpBQWdCRUVRYWlRQUlBQUxuZ0VCQlg4akFFRVFheUlGSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlFTmdJTUlBVWdCRFlDQ0NNQVFSQnJJZ1FrQUNBQVFZd0JhaUlHRVAwRklRY2dBaWdDQUNFQ0lBVW9BZ2doQ0NBQUtBSUlJUUFnQkNBRFFSQnFOZ0lJSUFRZ0F5Z0NFQ0FEUnpvQURDQUdJQWNnQUNBSUlBRWdBaUFFUVFocUVQNEZJZ0FRS0NBR0lBWW9BaGhCQVdvMkFoZ2dCRUVRYWlRQUlBVkJFR29rQUNBQUM1UUNBUVYvSXdCQk1Hc2lBU1FBUVFFaEJDQUFLQUlBSVFJQ1FDQUFLQUlFSWdOQkFVWUVRQ0FBS0FJSUlRTU1BUXNnQWlnQ0JDQUFLQUlJSUFNUS93SWhBeUFBS0FJRUlRUUxJQUZCQURZQ0tDQUJRZ0EzQXlBZ0FVSUFOd01ZSUFFZ0FpQUVFT0laTmdJVUlBRWdBaUFCUVJocUlBQkJGR29pQkNBQlFSUnFFSlFGSWdVMkFpd0NRQ0FBTFFBTUJFQWdBVUVBTmdJb0lBRkNBRGNESUNBQlFnQTNBeGdnQVNBQ0lBQW9BZ1FRNFFVMkFoQWdBU0FDSUFGQkdHb2lBQ0FFSUFGQkVHb1FsQVUyQWhRZ0FDQUNJQUZCQ0dvZ0F5QUNLQUlJSUFGQkxHb2dBVUVVYWhEVUdSQnBFTllIREFFTElBRkJHR29nQWlBQklBTWdCUkJwRU5ZSEN5QUJLQUljSVFBZ0FVRXdhaVFBSUFBTHd3SUJBbjhqQUVHd0FXc2lBeVFBSUFFb0FnQWhCQUpBQWtBQ1FBSkFJQUlvQWhSQk4yc09CUUVDQWdJQUFnc2dCQ2dDQUNFQ0lBRW9BZ1FvQWdBaEJDTUFRUkJySWdFa0FDQUJRUUEyQWdnZ0FTQUVOZ0lFSUFFZ0FrSDRCMm8yQWdBZ0FTQUNRYWdOYWlnQ0FFRUJhellDREFKQUlBRVF0UmtFUUNBRElBRVF0UmtpQWlrQ0FEY0NBQ0FESUFJb0FnZzJBZ2dNQVFzZ0EwRUFOZ0lJSUFOQ0FEY0NBQXNnQVVFUWFpUUFJQU1vQWdBRVFDQUFJQU1vQWdRMkFnQWdBQ0FES0FJSU5nSUVEQU1MSUFCQ0F6Y0NBQXdDQ3lBRUtBSUFJQUlRZWtFQUVJVUJJZ0ZCQUNBQktBSUVRZmpMRWtZYktBSU1JUUVnQUVFQU5nSUVJQUFnQVRZQ0FBd0JDeUFEUWJtaEJVR0FKa0VISUFOQm9BRnFFQjBpQVJBWElnSkJHR3BCeS9RSUVBNGFJQUlRR0NBQkVCNGdBRUlBTndJQUN5QURRYkFCYWlRQUMxWUJBWDhqQUVFZ2F5SUNKQUFnQWlBQk5nSWNJQUFvQWdBaEFDQUNRUUEyQWhnZ0FrSUFOd01RSUFKQ0FEY0RDQ0FDUVFJMkFnUWdBQ0FDUVFocUlBSkJIR29nQWtFRWFoRHRHU0VBSUFKQklHb2tBQ0FBQ3hFQUlBQkJDR29nQVNrREFCQ2FCaUFBQ3cwQUlBQWdBU0FDUVE0UTJRa0xQUUVCZnlNQVFSQnJJZ01rQUNBRElBRW9BZ0EyQWd3Z0F5QUFJQUlRc1FzMkFnZ2dBQ0FEUVF4cUlBTkJDR29RcEFzaEFDQURRUkJxSkFBZ0FBdWJBd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ2dDUUNBQlJRUkFJQU5CQ0dvUXdoa01BUXNnQVNnQ0JDSUNFT0VJQkVBZ0F5QUJOZ0lNSUFFb0FnZ2dBQ2dDQ0VFQlFRQkJqODBJUWRPMEJVSEFBQkJMSUFCQnNBSnFJQU5CREdvUXVSa01BUXNnQWtINDh3OUdCRUFnQXlBQk5nSU1JQUVvQWdnZ0FDZ0NDRUVCUVFCQmpjOElRZE8wQlVIRUFCQkxJQUJCL0FKcUlBTkJER29RSkF3QkN5QUNFTjBGQkVBZ0F5QUJOZ0lNSUFFb0FnZ2dBQ2dDQ0VFQlFRQkIyc2NJUWRPMEJVSElBQkJMSUFCQnFBTnFJQU5CREdvUXN4a01BUXNnQWtIbzlROUdCRUFnQXlBQk5nSU1JQUVvQWdnZ0FDZ0NDRUVCUVFCQnk4OElRZE8wQlVITUFCQkxJQUJCdEFScUlBTkJER29RSkF3QkN5QUNRYWoyRDBZRVFDQURJQUUyQWd3Z0FTZ0NDQ0FBS0FJSVFRRkJBRUdMemdoQjA3UUZRZEFBRUVzZ0FFSGdCR29nQTBFTWFoQWtEQUVMSUFKQndQWVBSZ1JBSUFNZ0FUWUNEQ0FCS0FJSUlBQW9BZ2hCQVVFQVFaZklDRUhUdEFWQjFBQVFTeUFBUVl3RmFpQURRUXhxRUNRTUFRc2dBMEVJYWhEQ0dRc2dBMEVRYWlRQUN6a0JBWDhqQUVFUWF5SURKQUFnQXlBQVFRUnFFS2NaTmdJSUlBQWdBRUhZQW1vZ0EwRUlhaUFCSUFJUXF3OGhBQ0FEUVJCcUpBQWdBQXM2QVFGL0l3QkJFR3NpQWlRQUlBSkJBellDRENBQ0lBQWdBUkRhQkRZQ0NDQUFJQUpCREdvZ0FrRUlhaEM2RHlFQUlBSkJFR29rQUNBQUM4WUJBUU4vSUFCQ2dJQ0FnSUFJTndLRUFpQUFJQUEyQW9BQ0FrQWdBUzBBQkFSQUlBQVFrd1VnQUNBQktBSUFJZ0lwQWdBM0FvQUNJQUFnQWlnQ0NEWUNpQUlnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBREFFTEFrQWdBQ2dDaUFJZ0FTZ0NBQ0lCS0FJRVNRUkFJQUFRa3dVZ0FDQUJLQUlFRU9RT0RBRUxJQUJCQURZQ2hBSUxJQUFnQVNnQ0JDSUROZ0tFQWdOQUlBSWdBMGNFUUNBQ1FRSjBJZ1FnQUNnQ2dBSnFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3c0xQQUVCZnlNQVFTQnJJZ1FrQUNBRUlBSW9BZ0EyQWh3Z0FDQUJJQVJCSEdvZ0JDQURFSXNaSWdBUTdBNGhBU0FBRUt3RElBUkJJR29rQUNBQkN5Y0FJQUFnQVVFQmF5SUJRZEFBU3dSL1FkejREQVVnQVVFQ2RFSHMzUkpxS0FJQUN4QVVHZ3VyQVFFRGZ5TUFRUkJySWdVa0FDQUZJQUJCQkdvUXB4azJBZ2dqQUVFZ2F5SUVKQUFnQkNBRktBSUlOZ0ljSXdCQklHc2lBeVFBSUFNZ0FTZ0NBRFlDRUNBQUlBSVE1QWdoQVNBRFFRSTJBaHdnQXlBQk5nSVVJQU1nQTBFUWFqWUNHQ0FESUFNcEF4ZzNBd2dnQkVFSWFpSUJJQU5CQ0dvUXRRSWFJQU5CSUdva0FDQUFJQUJCMkFKcUlBUkJIR29nQVJDcUR5RUFJQUVRcWdFZ0JFRWdhaVFBSUFWQkVHb2tBQ0FBQ3ljQUlBQWdBU2dDQUNBQ0tBSUFJQU1RMlFRaUFFR1k5dzgyQWdRZ0FFSE05dzgyQWdBZ0FBc05BQ0FBSUFFZ0FrRVJFTmtKQzAwQkFuOGpBRUVRYXlJRkpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJR05nSU1JQVVnQmpZQ0NDQUFRWXdCYWlBQVFRaHFJQVZCQ0dvZ0FTQUNJQU1nQkJDMkdTRUFJQVZCRUdva0FDQUFDelFCQVg4akFFRVFheUlDSkFBZ0FpQUFJQUVRd2dZMkFnd2dBQ0FBUWRnQ2FpQUNRUXhxRUlNTElRQWdBa0VRYWlRQUlBQUxsQW9CQm44akFFRkFhaUlHSkFBZ0JrRTRhaUFERUZzaENpQUdJQVEyQWpRZ0JpQUJOZ0l3SUFJUXlBRWlBeUFGSUFNZ0JVc2JJUXNnQ2tFRWFpRUpJQVVoQXdOQUFrQUNRQUpBSUFNZ0MwY0VRQ0FHSUFJZ0F4QTROZ0lzSUFFb0FoQWdCQkNVQVNJSVJRUkFJQUVvQWh3aUFTZ0NBRUVBT2dBQUlBRkI0WnNKRUJrZ0JrRTBhaEF2UWVtcENoQVpJUUVnQmlBRElBVnJOZ0lBSUFFZ0JoQXZRWmZzQ3hBWklRRWdCa0VRYWlJRElBSVFXQ0FCSUFNUVRSb2dBeEFQR2lBQUVHY2FEQUlMSUFaQkFEWUNLRUdvOVFBaEJ3SkFBa0FDUUNBQ0tBSVVRZEVBYXc0Q0FnRUFDeUFCS0FJY0lnRW9BZ0JCQURvQUFDQUJRZFBkQ2hBWklRRWdCa0VRYWlJRElBSVFXQ0FCSUFNUVRSb2dBeEFQR2lBQUVHY2FEQU1MUWRRMElRY0xJQVlnQnpZQ0tBSkFBa0FDUUFKQUFrQUNRQ0FJS0FJVVFSZHJEZ2dBQVFVRkJRSURCQVVMSUFZZ0NFRUJFRGdpQkRZQ0FBSkFBa0FnQkNBR0tBSXNJZ1JOQkVBZ0FTZ0NIQ0lCS0FJQVFRQTZBQUFnQVNBR1FTaHFFTEFEUVo2ZENSQVpJUUVnQmlBQ0VHQTJBaEFnQVNBR1FSQnFFQzlCdDdVS0VCa2dCa0VzYWhBdlFZR3VDaEFaSUFZUUwwSHlod0VRR1JvTUFRc2dCRUVFU1EwQklBRW9BaHdpQVNnQ0FFRUFPZ0FBSUFGQjFNTUpFQmtnQmtFc2FoQXZRZXZiQ1JBWklRRWdCa0VETmdJUUlBRWdCa0VRYWhBdkdnc2dBQkJuR2d3SEN5QUdRUUEyQWlBZ0JrSUFOd01ZSUFaQ0FEY0RFQ0FHSUFFZ0JCRGhCVFlDRENBQklBWkJFR29nQ1NBR1FReHFFSlFGSVFjTUJ3c2dCaUFJUVFFUU9DSUVOZ0lBSUFRZ0JpZ0NMQ0lFU3dSQUlBUkJCRThFUUNBQktBSWNJZ1FvQWdCQkFEb0FBQ0FFUWRURENSQVpJQVpCTEdvUUwwSHIyd2tRR1NFRUlBWkJBellDRUNBRUlBWkJFR29RTHhvZ0JpZ0NMQ0VFQ3lBR1FRQTJBaUFnQmtJQU53TVlJQVpDQURjREVDQUdJQVpCTUdvZ0JCRElHVFlDRENBQklBWkJFR29nQ1NBR1FReHFFT0lGSVFjTUJ3c2dBU2dDSENJQktBSUFRUUE2QUFBZ0FTQUdRU2hxRUxBRFFaNmRDUkFaSVFFZ0JpQUNFR0EyQWhBZ0FTQUdRUkJxRUM5QnQ3VUtFQmtnQmtFc2FoQXZRZkNyQ2hBWklBWVFMMEh5aHdFUUdSb2dBQkJuR2d3RkN5QUdRUUEyQWlBZ0JrSUFOd01ZSUFaQ0FEY0RFQ0FHSUFaQk1Hb2dCaWdDTEJESUdUWUNBQ0FCSUFaQkVHb2dDU0FHRU9JRklRY01CUXNnQVNnQ0hDSUJLQUlBUVFBNkFBQWdBVUhGaFFvUUdTQUdRU2hxRUxBRFFkYmRDeEFaSVFFZ0JrRVFhaUlESUFJUVdDQUJJQU1RVFJvZ0F4QVBHaUFBRUdjYURBTUxJQVlnQ0JESUFTSUhOZ0lNSUFjZ0JpZ0NMQ0lIU3dSQUlBWWdBU2dDSUNBRUlBY1E5UWdnQVNnQ0NDRUVJQVpCQURZQ0lDQUdRZ0EzQXhnZ0JrSUFOd01RSUFRZ0JrRVFhaUFKSUFZUWh3c2hCeUFHSUFnZ0JpZ0NMQkE0SWdRMkFqUWdCaEFQR2d3RkN5QUJLQUljSWdFb0FnQkJBRG9BQUNBQklBWkJLR29Rc0FOQm5wMEpFQmtoQVNBR0lBSVFZRFlDRUNBQklBWkJFR29RTDBHM3RRb1FHU0FHUVN4cUVDOUJrNXNKRUJrZ0JrRTBhaEF2UVlhcUNoQVpJQVpCREdvUUwwSGVtZ0VRR1JvZ0FCQm5HZ3dDQ3lBQktBSWNJZ0VvQWdCQkFEb0FBQ0FCSUFaQktHb1FzQU5CcHB3SkVCa2dCa0UwYWhBdlFlMjFEQkFaSVFFZ0JrRVFhaUlDSUFnUVdDQUJJQUlRVFJvZ0FoQVBHaUFBRUdjYURBRUxJQUFnQ2hCYkdnc2dCa0ZBYXlRQUR3c2dCaUFJUVFBUU9DSUVOZ0kwQ3lBS0lBWkJFR29nQVNnQ0FDQUVRUUFRaFFFZ0J4QnBFRnNhSUFOQkFXb2hBd3dBQ3dBTEt3RUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBQ0FCSUFOQkRHb1FpUjRoQUNBRFFSQnFKQUFnQUF1Y0FRRUNmeU1BUVVCcUlnWWtBQ0FHUVJCcUlnVkNBRGNDQUNBRlFnQTNBZ2dnQlVLQWdJQ0F3QUEzQWlRZ0JTQUZRUkJxTmdJZ0lBVWdBaWdDQURZQ0FDQUZJQUFnQXlnQ0FCRHFHQ0FGSUFRb0FnQTJBZ3dnQlNFQ0lBWWdBQ0FCRU9jRk5nSU1JQUFnQUVIWUFtb2dCa0VNYWlBQ0lBSkJCR29nQWtFSWFpQUNRUXhxSUFKQkVHb1FxUXNoQUNBQ0VNTUlJQVpCUUdza0FDQUFDK2tCQVFGL0l3QkJFR3NpQkNRQUlBUWdBallDQUNBRUlBRTJBZ2dnQUNBRVFRaHFJQVFnQXhEVEdTSUFRYmozRHpZQ0FDQUFRb0NBZ0lDQUFUY0NzQVVnQUNBQVFZd0ZhallDckFVZ0FFS0FnSUNBZ0FFM0FvUUZJQUFnQUVIZ0JHbzJBb0FGSUFCQ2dJQ0FnSUFCTndMWUJDQUFJQUJCdEFScU5nTFVCQ0FBUW9DQWdJQ0FCRGNDckFRZ0FDQUFRYWdEYWpZQ3FBUWdBRUtBZ0lDQWdBRTNBcUFESUFBZ0FFSDhBbW8yQXB3RElBQkNnSUNBZ0lBQ053TDBBaUFBSUFCQnNBSnFOZ0x3QWlBQVFvQ0FnSUNBQ0RjQ3FBSWdBQ0FBUVNScU5nS2tBaUFFUVJCcUpBQWdBQXM2QVFGL0l3QkJFR3NpQkNRQUlBUWdBaWdDQURZQ0RDQUVJQU1vQWdBMkFnZ2dBQ0FCSUFSQkRHb2dCRUVJYWhEb0dSb2dCRUVRYWlRQUM0b0JBUU4vSXdCQkVHc2lBeVFBQWtBZ0FTZ0NBQ0lDS0FJQUlBRW9BZ1FRZWtFQUVJVUJJZ0VvQWdRaUJFSGd5eEpHQkVBZ0FpZ0NDQ0VDSUFOQkFUWUNDQ0FBSUFFZ0FpQURRUWhxRUtzR0VHa2FEQUVMSUFSQnNNc1NSZ1JBSUFJb0FnZ2hBaUFEUVFFMkFnQWdBQ0FCSUFJZ0F4Q3hDeEJwR2d3QkN5QUFFR2NhQ3lBRFFSQnFKQUFMY3dFRGZ5QUFRb0NBZ0lEQUFEY0NGQ0FBSUFBMkFoQWdBQ0FCS0FJRUlnSVExZ0lnQVNnQ0FDSUJJQUpCQW5ScUlRUWdBQ2dDRkNFREEzOGdBU0FFUmdSL0lBQUZJQUFnQTBFQmFpSUNOZ0lVSUFBb0FoQWdBMEVDZEdvZ0FTZ0NBRFlDQUNBQlFRUnFJUUVnQWlFRERBRUxDd3MyQVFGL0l3QkJFR3NpQXlRQUlBTWdBQ0FCRU5JQ05nSU1JQUFnQUVIWUFtb2dBMEVNYWlBQ0VKVUVJUUFnQTBFUWFpUUFJQUFMb3dFQkJIOGpBRUVRYXlJQ0pBQWdBQ2dDRENFQkFrQWdBQ2dDQUNnQ0FDSURJQUFvQWdRb0FnQkpCRUFnQUNnQ0NDRUVJQUlnQVNBQUtBSVFJQU1RYmlBRUlBSkJCSElRSkVFQklRRWdBQ2dDQUNJQUlBQW9BZ0JCQVdvMkFnQU1BUXNnQVNnQ0hDSUJLQUlBUVFBNkFBQWdBVUcvcXd3UUdTRUJJQUlnQUNnQ0VCQllJQUVnQWhCTktBSUFMUUFBUVFCSElRRWdBaEFQR2dzZ0FrRVFhaVFBSUFFTDBBRUJBWDhqQUVIQUFXc2lCU1FBSUFVZ0FqWUNzQUVnQlNBQk5nSzRBU0FBSUFVb0FyZ0JJQVVvQXJBQklBTVEyUVFpQUVIWTlnODJBZ1FnQUVHTTl3ODJBZ0FnQUNBRU5nSWtJQUJCK1BZUE5nSUFBa0FnQkVVRVFDQUZRZnFzQlVFWlFRQWdCVUdnQVdvUUhTSUJFQmNpQWtFWWFrSFV2UWdRRGhvZ0FoQVlJQUVRSGlBQUtBSWtJZ1JGRFFFTElBUW9BZ1JCeU9rUFJ3MEFJQVZCK3F3RlFSdEJBQ0FGUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRYjdyQ0JBT0dpQUNFQmdnQVJBZUN5QUZRY0FCYWlRQUlBQUxHZ0FnQUVFQUlBQUVmeUFBS0FJRVFZak5FaEJJQlVFQUN4c0xnUUVCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lNQW44Q1FBSkFBa0FDUUNBQlFRRnJEZ01BQVFJREN5QUFLQUlJUWRvbkVPRUhEQU1MSUFBb0FnaEJsZ2dRNFFjTUFnc2dBQ2dDQ0VHS0NCRGhCd3dCQ3lBQUtBSWNJZ0FvQWdCQkFEb0FBQ0FBUWQvZkN4QVpJQUpCREdvUUx4cEJBQXNoQVNBQ1FSQnFKQUFnQVFzMkFRRi9Jd0JCRUdzaUF5UUFJQU1nQUNBQkVNSUdOZ0lNSUFBZ0FFSFlBbW9nQTBFTWFpQUNFSlVFSVFBZ0EwRVFhaVFBSUFBTDZBRUJCSDhqQUVHd0FXc2lBeVFBSUFBb0FnQWdBUkRjQ0NFQ0FrQWdBQ2dDQUMwQWxBTkZCRUJCQUNFQ0lBQW9BaHdvQWdCQkFEb0FBQXdCQ3lBQ1JRUkFJQU5CdWFFRlFZTXFRUWNnQTBHZ0FXb1FIU0lGRUJjaUJFRVlha0cvckFnUURob2dCQkFZSUFVUUhnc0RRQUpBSUFKRklBSW9BZ1FpQkVHd3poSkhjZ1IvSUFKRklBUkIrTXNTUjNJTkFTQUNRUWhxQlNBQ1FTUnFDeWdDQUNFQ0RBRUxDeUFDRU9FWklnSU5BRUVBSVFJZ0FDZ0NIQ0lBS0FJQVFRQTZBQUFnQUVHVThBa1FHU0VBSUFNZ0FSQllJQUFnQXhCTkdpQURFQThhQ3lBRFFiQUJhaVFBSUFJTHNnRUJCWDhqQUVFUWF5SUVKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUROZ0lNSUFRZ0F6WUNDQ0FBUVl3QmFpSURFTVVDSVFVZ0FDZ0NDQ0VHSUFRb0FnZ2hCeU1BUVJCcklnQWtBQ0FBSUFjMkFnQWdBQ0FHTmdJSUlBVWdBQ2dDQ0NBQUtBSUFJQUVRMlFRaUFVSG85UTgyQWdRZ0FVR2M5ZzgyQWdBZ0FVR0k5ZzgyQWdBZ0FVRWthaUFDRUZzYUlBQkJFR29rQUNBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JFRVFhaVFBSUFVTEVBQWdBQ2dDQ0NBQklBSWdBeERCRVF1cEFRRUZmeU1BUVJCcklnWWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnVTJBZ3dnQmlBRk5nSUlJd0JCRUdzaUJTUUFJQUJCakFGcUlnY1EvQWNoQ0NBRUtBSUFJUVFnQXlnQ0FDRURJQUlvQWdBaEFpQUdLQUlJSVFrZ0FDZ0NDQ0VBSUFWQkFEb0FEQ0FGUWNDY0lEWUNDQ0FISUFnZ0FDQUpJQUVnQWlBRElBUWdCVUVJYWhDQkh5SUFFQ2dnQnlBSEtBSVlRUUZxTmdJWUlBVkJFR29rQUNBR1FSQnFKQUFnQUF0TEFRSi9Jd0JCRUdzaUJDUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUJUWUNEQ0FFSUFVMkFnZ2dBRUdNQVdvZ0FFRUlhaUFFUVFocUlBRWdBaUFERU04YUlRQWdCRUVRYWlRQUlBQUxFQUFnQUNnQ0NDQUJJQUlnQXhEb0dRdHpBUU4vQWtBZ0FDZ0NLQ0FCS0FJRVNRUkFJQUFRSXlBQUlBRW9BZ1FRaUE4TUFRc2dBRUVBTmdJa0N5QUFJQUVvQWdRaUFqWUNKQ0FBS0FJZ0lRTWdBU2dDQUNFQlFRQWhBQU5BSUFBZ0FrY0VRQ0FESUFCQkEzUWlCR29nQVNBRWFpa0RBRGNEQUNBQVFRRnFJUUFNQVFzTEN3MEFJQUFnQVNBQ1FRQVFpUThMb0FFQkJuOGpBRUVRYXlJREpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJQ05nSU1JQU1nQWpZQ0NDQUFRWXdCYWlJQ0lRY2dBaEMvQVNFRUlBQW9BZ2doQlNBREtBSUlJUVlqQUVFUWF5SUFKQUFnQUNBR05nSUFJQUFnQlRZQ0NDQUVJQUJCQ0dvZ0FDQUJFTEVlSWdGQkFEWUNKQ0FCUWRqeER6WUNBQ0FBUVJCcUpBQWdCeUFCSWdBUUtDQUNJQUlvQWhoQkFXbzJBaGdnQTBFUWFpUUFJQUFMRUFBZ0FDZ0NDQ0FCSUFJZ0F4Q0RHd3RtQVFKL0lBQW9BZ2doQUNNQVFSQnJJZ01rQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0kyQWd3Z0F5QUNOZ0lJSUFCQmpBRnFJZ0lnQWhDL0FTQUFLQUlJSUFNb0FnZ2dBVUVBRUs4TUlnQVFLQ0FDSUFJb0FoaEJBV28yQWhnZ0EwRVFhaVFBSUFBTHRBRUJCWDhqQUVFd2F5SUJKQUFnQUNnQ0NDRUVJQUFvQWd3aEJTQUFLQUlFSVFNZ0FTQUFLQUlBSWdJMkFpQWdBU0FETmdJY0lBRkIxTmdTTmdJWUlBRWdBVUVZYWlJRE5nSW9JQUlnQlNBRUlBTVEyQVFnQXhBV0lBQXRBQkFFUUNBQlFRQTJBaEFnQVVJQU53TUlJQUZDQURjREFDQUNJQUlnQVJDUkN4REpBUm9MSUFBdEFCRUVRQ0FCUVFBMkFoQWdBVUlBTndNSUlBRkNBRGNEQUNBQ0lBSWdBUkNLRHhESkFSb0xJQUZCTUdva0FBdUNCQUVHZnlNQVFkQUJheUlGSkFBZ0FTZ0NsQVFpQkNBQktBS2NCQ0lHUVpZQmJFR1dBV3BCNUFCdVNRUkFJQUVnQmtFQmRFRUNhaENvR1NBQktBS1VCQ0VFQ3lBQ0tBSUFJUWNnQlNBRE5nTE1BU0FGSUFJMkFzZ0JJQVJCQVdzaENTQUhJQVJ3SVFNZ0FTZ0NrQVFoQ0VFQUlRSUNRQU5BSUFJZ0JFY0VRQ0FJSUFOQkxHeHFJZ1l0QUNCRkJFQWdCVUVJYWlJRUlBVkJ5QUZxRUpnRklBWWdCQkN0Q3lBSUlBTkJMR3hxSWdNZ0FqWUNLQ0FESUFjMkFpUWdBU0FCS0FLY0JFRUJhallDbkFRZ0FTQUJLQUtnQkVFQmFqWUNvQVFnQUNBR1FRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBWW9BaVFnQjBjTkFDQUhJQVlvQWdCSERRQWdBRUVDTmdJQUlBQWdCa0VFYWpZQ0JBd0RDeUFDSUFZb0FpaExCRUFnQlVHb0FXb2lCQ0FGUWNnQmFoQ1lCU0FGUVFocUlBUVFyQXNpQkNBQ05nSW9JQVFnQnpZQ0pDQUVJQVlRaEFrZ0JDQUVLQUlvUVFGcU5nSW9JQUVnQTBFQmFpQUJLQUtVQkhBZ0JCQ3JDeUFCSUFFb0Fwd0VRUUZxTmdLY0JDQUJJQUVvQXFBRVFRRnFOZ0tnQkNBQUlBWkJCR28yQWdRZ0FFRUFOZ0lBSUFRUXFnSU1Bd1VnQTBFQmFrRUFJQU1nQ1VjYklRTWdBa0VCYWlFQ0RBSUxBQXNMSUFWQkNHcEJoclVEUWVzRFFRNGdCVUdvQVdvUUhTSUJFQmNpQWtFWWFrR1dOUkFPR2lBQ0VCZ2dBRUlBTndJQUlBRVFIZ3NnQlVIUUFXb2tBQXZjQWdFTGZ5QUFLQUlBSWdRb0FxQUVJZ2tnQUNnQ0RFWUVRQ0FBS0FJSUR3c2pBRUVRYXlJQkpBQWpBRUd3QVdzaUJTUUFJQVFvQXBRRUlnZEJBV3NoQ2lBQUtBSUVJZ2dnQjNBaEFpQUVLQUtRQkNFTEFrQURRQ0FESUFkSEJFQWdDeUFDUVN4c2FpSUdMUUFnUlFSQUlBRkJBRFlDRENBQlFRQTZBQWdNQXdzQ1FDQUdLQUlrSUFoSERRQWdDQ0FHS0FJQVJ3MEFJQUVnQWpZQ0RDQUJRUUU2QUFnTUF3c2dBeUFHS0FJb1N3UkFJQUZCQURZQ0RDQUJRUUE2QUFnTUF3VWdBa0VCYWtFQUlBSWdDa2NiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVZCaHJVRFFaNEVRUTRnQlVHZ0FXb1FIU0lDRUJjaUEwRVlha0hTTlJBT0dpQURFQmdnQVVFQU5nSU1JQUZCQURvQUNDQUNFQjRMSUFWQnNBRnFKQUFnQVNnQ0RDRUNJQVFvQXBBRUlRTWdBUzBBQ0NFRUlBRkJFR29rQUNBQUlBazJBZ3dnQUNBRElBSkJMR3hxUVFScVFRQWdCQnNpQURZQ0NDQUFDeEVBSUFBZ0FVRURRZi8vLy84QUVNa1NDMWNCQW44Z0FTQUFLQUlvU3dSQUlBQW9BaUFoQWlBQUlBRVFpQTlCQUNFQkEwQWdBQ2dDSkNBQlRRUkFJQUFnQWhBMkJTQUJRUU4wSWdNZ0FDZ0NJR29nQWlBRGFpa0NBRGNDQUNBQlFRRnFJUUVNQVFzTEN3c3RBUUYvSUFBZ0FTZ0NBQ0FCSUFFdEFBc2lBRUVZZEVFWWRVRUFTQ0lDR3lBQktBSUVJQUFnQWhzUS9nWUxFUUFnQUNBQlFRSkIvLy8vL3dFUXlSSUw0QUlCQm44akFFSFFBV3NpQkNRQUlBQW9BclFHSWdKRkJFQWdCRUVnYWtITHNnTkJpZ2xCQnlBRVFjQUJhaEFkSWdJUUZ5SURRUmhxUWVQa0NCQU9HaUFERUJnZ0FoQWVJQUFvQXJRR0lRSUxJQUFvQXJBR0lRVkJMQkFWUVFCQkxCQjVFSXNQSWdOQ0FEY0NKQ0FEUWRUY0VqWUNBQ0FEUWVqY0VqWUNCQ0FGSUFKQkFXdEI0QUJzYWlJQ0lBTVE4Z2dDUUNBQ0tBSlFJZ1VnQWtIVUFHb2lCaWdDQUVrRVFDQUZJQU0yQWdBZ0FpQUZRUVJxTmdKUURBRUxJQVJCSUdvZ0FrSE1BR29pQnlBRklBSW9Ba3hyUVFKMVFRRnFFSXNFSUFJb0FsQWdBaWdDVEd0QkFuVWdCaENuQWlJQ0tBSUlJZ1VnQXpZQ0FDQUNJQVZCQkdvMkFnZ2dCeUFDRVBzSUlBSVFuZ3NMSUFFb0Fod2hBaUFFSUFBMkFoQWdCQ0FETmdJTUlBUkJpTjBTTmdJSUlBUWdCRUVJYWlJRE5nSVlJQUFnQVNBQ0lBTVEyQVFnQXhBV0lBQW9BaHdvQWdBdEFBQWhBQ0FFUWRBQmFpUUFJQUFMTWdFQmZ5QUJLQUlRSWdJdEFBeEJBU0FDR3dSQVFlWHZDRUdkc3dOQi9nQkJudjhDRUFBQUN5QUFJQUVvQWhRMkFnQUxUQUVCZnlBQUtBSWtJZ0lnQUNnQ0tFOEVRQ0FBSUFBb0FpZ2lBa0VCZEVFQ0lBSWJFUE1aSUFBb0FpUWhBZ3NnQUNBQ1FRRnFOZ0lrSUFBb0FpQWdBa0VEZEdvZ0FTa0NBRGNDQUF1UEFRRUNmd0pBSUFBb0FnQWlCQ0FCRUpRQ0lnQkZEUUFnQUMwQUhFVU5BQ0FBUVFocUVQMEhJZ0FnQUNnQ0JFRUJhallDQkNBQUlBSW9BZ2dpQVNBQUtBSUlJZ01nQVNBRFNSczJBZ2dnQUNBQUtBSU1JZ0VnQWlnQ0NDSURJQUVnQTBzYk5nSU1JQVFnQkNnQzZBWWdBQ2dDQUVFQ2RHb29BZ0FRZkNnQ0lDQUNLQUlnUmcwQUlBQkJBVG9BRUFzTGl3SUJBMzhqQUVHd0FXc2lBeVFBSUFBZ0FDZ0M2QVlnQVVFQ2RHb29BZ0FRZkNnQ0lDSUJSUVJBSUFOQnVhRUZRZlluUVFjZ0EwR2dBV29RSFNJRUVCY2lCVUVZYWtISHFBZ1FEaG9nQlJBWUlBUVFIZ3NDUUFOQUlBRUVRQ0FDSUFFb0FpQlBCRUFnQVNnQ0tDQUNTdzBEQ3dKL0FrQWdBU0lFUlEwQUlBUW9BaFJCQkVjTkFDQUFJQVFvQWhnaUFSQjhLQUlZSWdVZ0FVWU5BQ0FBSUFVUWZFRWdhaUVCQTBBZ0FTZ0NBQ0lCUlEwQklBRW9BaFJCQTBjTkFBc2dBUXdCQzBFQUN5SUJEUUVnQkNnQ0FDRUJEQUVMQ3lBRFFibWhCVUdBS0VFSElBTkJvQUZxRUIwaUFCQVhJZ0pCR0dwQng2Z0lFQTRhSUFJUUdDQUFFQjRMSUFOQnNBRnFKQUFnQVF0QkFRRi9Ba0FnQVVVTkFDQUFBbjhDUUFKQUlBRW9BaFJCQW1zT0F3QUFBUU1MSUFGQkdHb01BUXNnQUNBQktBSVlFSHhCR0dvTEtBSUFFSHdoQWdzZ0FndlNCUUlJZndKOUl3QkJJR3NpQnlRQUlBY2dBVFlDRUNNQVFSQnJJZ1FrQUNBQktBSUFJUUVnQndKL0FrQWdBQ2dDQkNJQ1JRMEFJQUFvQWdBQ2Z5QUNRUUZySUFGeElBSnBJZ1pCQVUwTkFCb2dBU0FCSUFKSkRRQWFJQUVnQW5BTElnVkJBblJxS0FJQUlnTkZEUUFnQWtFQmF5RUlJQVpCQVVzaENRTkFJQU1vQWdBaUEwVU5BU0FCSUFNb0FnUWlCa2NFUUFKQUlBbEZCRUFnQmlBSWNTRUdEQUVMSUFJZ0Jrc05BQ0FHSUFKd0lRWUxJQVVnQmtjTkFnc2dBeWdDQ0NBQlJ3MEFDMEVBREFFTFFjQUFFQlVoQXlBRUlBQkJDR28yQWdRZ0JDQUROZ0lBSUFNZ0J5Z0NFQ2dDQURZQ0NDQURRUkJxUVFCQk1CQjVJUVlnQTBFRU5nSTRJQU1nQmpZQ01DQUVRUUU2QUFnZ0EwRUFOZ0lBSUFNZ0FUWUNCQUpBUVFBZ0FpQUFLQUlNUVFGcXN5SUtJQUFxQWhBaUN5QUNzNVJlR3cwQUlBQWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJRkFuOGdDaUFMbFkwaUNrTUFBSUJQWFNBS1F3QUFBQUJnY1FSQUlBcXBEQUVMUVFBTElnSWdBaUFGU1JzUXd3RWdBQ2dDQkNJQ0lBSkJBV3R4UlFSQUlBSkJBV3NnQVhFaEJRd0JDeUFCSUFKSkJFQWdBU0VGREFFTElBRWdBbkFoQlFzQ1FDQUZRUUowSWdVZ0FDZ0NBR29vQWdBaUFVVUVRQ0FFS0FJQUlBQW9BZ2cyQWdBZ0FDQUVLQUlBTmdJSUlBQW9BZ0FnQldvZ0FFRUlhallDQUNBRUtBSUFJZ0VvQWdBaUJVVU5BU0FGS0FJRUlRTUNRQ0FDSUFKQkFXc2lCWEZGQkVBZ0F5QUZjU0VEREFFTElBSWdBMHNOQUNBRElBSndJUU1MSUFBb0FnQWdBMEVDZEdvZ0FUWUNBQXdCQ3lBRUtBSUFJQUVvQWdBMkFnQWdBU0FFS0FJQU5nSUFDeUFFS0FJQUlRTWdCRUVBTmdJQUlBQWdBQ2dDREVFQmFqWUNEQ0FFS0FJQUlRQWdCRUVBTmdJQUlBQUVRQ0FFTFFBSUJFQWdBRUVRYWhBakN5QUFCRUFnQUJBZkN3dEJBUXM2QUJ3Z0J5QUROZ0lZSUFSQkVHb2tBQ0FIS0FJWUlRQWdCMEVnYWlRQUlBQkJFR29MTVFFQmZ3TkFJQUFvQWlRZ0FVMEVRQ0FBUVFBMkFpUUZJQUFvQWlBZ0FVRUNkR29RaXdFZ0FVRUJhaUVCREFFTEN3dGFBUUYvSUFCQkFEWUNDQ0FBUWdBM0FnQWdBU0FDUndSQUlBQWdBU0FDYTBFQ2RSRFBCU0FBS0FJRUlRTURRQ0FCSUFKSEJFQWdBeUFCUVFScklnRW9BZ0EyQWdBZ0EwRUVhaUVEREFFTEN5QUFJQU0yQWdRTElBQUxid0VEZnlNQVFUQnJJZ0lrQUFKQUlBRW9BaVFpQXdSQUlBSkJFR29pQkNBRFFTUnFFRk1nQWtFZ2FpSURJQVJCL0pjSUVDMGdBaUFCS0FJb1FTUnFFRk1nQUNBRElBSVFUaUFDRUE4YUlBTVFEeG9nQkJBUEdnd0JDeUFBSUFFb0FpaEJKR29RVXdzZ0FrRXdhaVFBQzFvQkFYOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBZ1JBSUFKQjZBRnFFRjRnQWtHOEFXb1FJeUFDUWFBQmFoQmVJQUpCbEFGcUVBOGFJQUpCeUFCcUlnQXRBREFFUUNBQUVDTUxJQUpCSkdvUVR3c2dBaEFmQ3d2WEFRRURmeU1BUWJBQmF5SUNKQUFnQVJCNlJRUkFJQUpCdWFFRlFhMExRUWNnQWtHZ0FXb1FIU0lERUJjaUJFRVlha0g0bWdnUURob2dCQkFZSUFNUUhnc2dBQ2dDR0NBQkVIb1E2UUVpQVVVRVFDQUNRYm1oQlVHdkMwRUhJQUpCb0FGcUVCMGlBQkFYSWdOQkdHcEJ1YnNJRUE0YUlBTVFHQ0FBRUI0TFFRRWhBQUpBSUFFZ0FTZ0NBQ2dDUkJFQUFBMEFJQUVnQVNnQ0FDZ0NUQkVBQUEwQUlBRWdBU2dDQUNnQ2ZCRUFBRVVFUUVFQUlRQU1BUXNnQVNBQktBSUFLQUo4RVFBQUtBSVlSU0VBQ3lBQ1FiQUJhaVFBSUFBTHRnUUJDWDhqQUVFd2F5SUJKQUFnQUNnQ0RDRURJQUJCQkVFSUlBQW9BZ0FRd0JraUNCdHFLQUlBS0FJQUlRSWdBVUVRYWlJSElBTW9BaUFnQUNnQ0VCRGxCU0FBS0FJVUlRVWdBaUFES0FJSUlnWWdBaWdDQUNnQ0NCRUJBQ0VDSUFBb0FnQWhCQ0FCUVFBNkFBd2dBU0FFUVNCcU5nSUlJQUVnQmlBSElBSWdBVUVJYWhDdUR6WUNJQ0FGSUFGQklHb1FKQ0FCSUFNb0FnZ2dBQ2dDRUJEU0FqWUNCQ0FBS0FJWUtBSUFFTWdERU80REVNZ0RJUUlnQUNnQ0hDSUdLQUlnSWdVZ0JpZ0NKRUVDZEdvaENRTi9JQVVnQ1VZRWZ3SkFJQWhGRFFBZ0FDZ0NCQ2dDQUNJQ0lBQW9BZ2dvQWdCR0RRQWdBU0FES0FJSUlnVWdBaUFGSUFJb0FnQW9BZ2dSQVFBZ0FVRUVhaEMvR1RZQ0JBc2dBQ2dDSUNBQlFRUnFFQ1FnQXlBQUtBSUFFSU1hSUFNb0Fod29BZ0F0QUFBaEFDQUJRUkJxRUE4YUlBRkJNR29rQUNBQUJRSkFJQUpGQkVCQkFDRUNEQUVMSUFVb0FnQWhCaUFDS0FJRUlnUkJ3TXdTUmdSQUlBTW9BZ2doQkNBQklBWTJBaUFnQVNBRUlBRkJCR29nQVVFZ2FoQzhHVFlDQkNBREtBSUVJQUlvQWdnZ0FpZ0NFQkQvQWlFQ0RBRUxJQVJCMk13U1JnUkFJQU1vQWdnaEJDQUJJQVkyQWlBZ0FTQUVJQUZCQkdvZ0FVRWdhaEM4R1RZQ0JDQUNLQUlJRU1nRElRSU1BUXNnQkVISXpoSkhEUUFnQXlnQ0NDRUVJQUZCSUdvaUJ5QURLQUlBSUFJZ0JoQ0ZHU0FCSUFRZ0FVRUVhaUFIRUw0Wk5nSUVJQWNRRHhvZ0FpZ0NKQ0FHUVFKMGFpZ0NBQ0VDQ3lBRlFRUnFJUVVNQVFzTEM2NEJBUVYvSXdCQkVHc2lCQ1FBSUFFb0FpQWlBaUFCS0FJa1FRSjBhaUVHQTBBZ0FpQUdSd1JBSUFJb0FnQWlBU2dDQkVHWS9SRkhJQUZGY2tVRVFDQUFLQUlJSVFVZ0JDQUJLQUlrSWdOQkFDQURLQUlFUWJEN0QwWWJLUU1vUWdGOE53TUlJd0JCRUdzaUF5UUFJQU1nQlNBRVFRaHFFT2tGTmdJTUlBVWdBVUVRYWlBRFFReHFFSXdaSVFFZ0EwRVFhaVFBSUFJZ0FUWUNBQXNnQWtFRWFpRUNEQUVMQ3lBRVFSQnFKQUFMYkFFRGZ5TUFRUkJySWdFa0FDQUJRUUE2QUF3Z0FTQUFRU0JxTmdJSUFuOGdBU2dDQ0NJQ0tBSUFJZ0FnQWlnQ0JFRUNkR29oQXdOQVFRQWdBQ0FEUmcwQkdpQUFLQUlBSVFJZ0FFRUVhaUVBSUFJb0FnUkJtUDBSUncwQUN5QUNDeUVBSUFGQkVHb2tBQ0FBQzhJQ0FRVi9Jd0JCRUdzaUJDUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FFSUFNMkFnZ2dBRUdNQVdvaUF4REZBaUVGSUFBb0FnZ2hCaUFFS0FJSUlRY2dBaWdDQUNFQ0l3QkJ3QUZySWdBa0FDQUFJQWMyQXJBQklBQWdCallDdUFFZ0JTQUFRYmdCYWlBQVFiQUJhaUFCRUk4YUlnRWdBallDS0NBQlFRQTJBaVFnQVVISTlRODJBZ0FnQWdSL0lBSUZJQUJCL2JNRlFSNUJBQ0FBUWFBQmFoQWRJZ0lRRnlJR1FSaHFRZVNzQ0JBT0dpQUdFQmdnQWhBZUlBRW9BaWdMRUZjZ0FTZ0NDRUVCUVFCQnpjMElRZjJ6QlVFZkVFc0NRQ0FCS0FJb0lnRkZEUUFnQVNnQ0JFSEk2UTlIRFFBZ0FFSDlzd1ZCSWtFQUlBQkJvQUZxRUIwaUFSQVhJZ0pCR0dwQnZ1c0lFQTRhSUFJUUdDQUJFQjRMSUFCQndBRnFKQUFnQXlBRkVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFSQkVHb2tBQ0FGQ3hVQUlBQWdBUkNvRUNJQUlBRXBBekEzQXpBZ0FBdVVCUUVKZnlNQVFVQnFJZ0VrQUNBQUtBSU1JUU1nQUVFRVFRZ2dBQ2dDQUJEQUdTSUpHMm9vQWdBb0FnQWhBaUFES0FJZ0lRVWdBVUV3YWlJSElBQW9BaEJCMWZrQ0VMZ0NJQUZCR0dvaUNDQUZJQWNRNVFVZ0J4QVBHaUFBS0FJVUlRVWdBaUFES0FJSUlnWWdBaWdDQUNnQ0NCRUJBQ0VDSUFBb0FnQWhCQ0FCUVFBNkFCUWdBU0FFUVNCcU5nSVFJQUVnQmlBSUlBSWdBVUVRYWhERUdUWUNNQ0FGSUFjUUpDQUJJQU1vQWdnZ0NCRFNBallDRENBQklBTW9BZ2dnQUNnQ0VCRFNBallDQ0NBQUtBSVlLQUlBRU1nREVPNERFTWdESVFJZ0FDZ0NIQ0lHS0FJZ0lnVWdCaWdDSkVFQ2RHb2hDQU4vSUFVZ0NFWUVmd0pBSUFsRkRRQWdBQ2dDQ0NnQ0FDSUNJQUFvQWdRb0FnQkdEUUFnQVNBREtBSUlJZ1VnQWlBRklBSW9BZ0FvQWdnUkFRQWdBVUVNYWhDL0dUWUNEQXNnQUNnQ0lDRUNJQUVnQXlnQ0NDQUJRUWhxSUFGQkRHb1FnUWsyQWpBZ0FpQUJRVEJxRUNRZ0F5QUFLQUlBRUlNYUlBTW9BaHdvQWdBdEFBQWhBQ0FCUVJocUVBOGFJQUZCUUdza0FDQUFCUUpBSUFKRkJFQkJBQ0VDREFFTElBVW9BZ0FoQmlBQ0tBSUVJZ1JCd013U1JnUkFJQU1vQWdnaEJDQUJJQVkyQWlnZ0FTQUVJQUZCS0dvUXF3WTJBakFnQVNBRUlBRkJDR29nQVVFd2FoQzBEellDQ0NBREtBSUVJQUlvQWdnZ0FpZ0NFQkQvQWlFQ0RBRUxJQVJCMk13U1JnUkFJQU1vQWdnaEJDQUJJQVkyQWlnZ0FTQUVJQUZCS0dvUXF3WTJBakFnQVNBRUlBRkJDR29nQVVFd2FoQzBEellDQ0NBQ0tBSUlFTWdESVFJTUFRc2dCRUhJemhKSERRQWdBeWdDQ0NFRUlBRkJNR29pQnlBREtBSUFJQUlnQmhDRkdTQUJJQVFnQVVFSWFpQUhFTDRaTmdJSUlBY1FEeG9nQWlnQ0pDQUdRUUowYWlnQ0FDRUNDeUFGUVFScUlRVU1BUXNMQzZJQ0FRVi9Jd0JCRUdzaUJDUUFJd0JCRUdzaUJTUUFJd0JCSUdzaUJpUUFJd0JCSUdzaUF5UUFJQU5CQ0dvaUJ5QUNFUGNRSUFNZ0F5Z0NEQ0FETFFBVElnSWdBa0VZZEVFWWRVRUFTQ0lDR3pZQ0hDQURJQU1vQWdnZ0J5QUNHellDR0NBRElBTXBBeGczQXdBZ0JpQUFJQU1RNFFFZ0J4QVBHaUFEUVNCcUpBQWdBQ0FBUWRnQ2FpQUdFTTRDSVFJZ0JrRWdhaVFBSUFVZ0FqWUNEQ0FBSUFKQkVHb2dCVUVNYWhDekF5RUNJQVZCRUdva0FDQUVJQUkyQWd3akFFRVFheUlDSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlETmdJTUlBSWdBellDQ0NBQVFZd0JhaUlESUFNUXZ3RWdBQ2dDQ0NBQ0tBSUlJQUVnQkNnQ0RCQ0NIeUlBRUNnZ0F5QURLQUlZUVFGcU5nSVlJQUpCRUdva0FDQUVRUkJxSkFBZ0FBdDNBUVIvSUFCQ2dJQ0FnSUFCTndJa0lBQWdBRFlDSUNBQUlBRW9BZ1FpQWhDN0NTQUJLQUlBSWdFZ0FrRUNkR29oQkNBQUtBSWtJUU1nQUNnQ0lDRUZBMzhnQVNBRVJnUi9JQUFGSUFBZ0EwRUJhaUlDTmdJa0lBVWdBMEVDZEdvZ0FTZ0NBRFlDQUNBQlFRUnFJUUVnQWlFRERBRUxDd3YydFFFRElYOENmUUYrSXdCQjBBSnJJaEFrQUFKQUlBQW9BaHdvQWdBdEFBQkZEUUFnQUNnQ0pDSUJLQUpVSUFFb0FsaEdCRUJCQVNFVERBRUxJQkJCeUFGcUlnSVF3eGtqQUVHQUFXc2lBU1FBSUFBb0Fod29BZ0F0QUFBRVFDQUJRZkFBYWlBQUtBSWdJQUFvQWlRUTNRZ1Frd0lRVkNFRUlBQW9BZ0FnQUNnQ0pCQ1VEMEVBRUlVQklRVUNRQ0FBS0FJY0lnWW9BZ0FpRHkwQUFFVU5BQ0FGUlFSQUlBOUJBRG9BQUNBR1FZVENDeEFaSVFNZ0FTQUFLQUlrRU4wSU5nSUlJQU1nQVVFSWFoQXZLQUlBTFFBQVFRQkhJUU1NQVFzZ0FVS0FnSUNBZ0FFM0FtUWdBU0FCUVVCcklnTTJBbUFnQUNnQ0pDRVBJQUVnQXpZQ0VDQUJJQUEyQWd3Z0FVR28yaEkyQWdnZ0FTQUJRUWhxSWdZMkFoaEJBQ0VESUE4Z0JoRGNGeUFHRUJZZ0FDZ0NIQ2dDQUMwQUFBUkFJQUpCRkdvZ0JCRGdBaUFDUVNCcUlBRkJRR3NRb0FzZ0FpQUZOZ0pNSUFGQ0FEY0RJQ0FCUWdBM0F4Z2dBVUlBTndNUUlBRkNnSUNBZ0lBQk53SXNJQUZDQURjRENDQUJRZ0EzQXpnZ0FTQUJRUWhxSWdNMkFpZ2dBa0hRQUdvZ0F4Q2dDeUFDSUFNcEF6QTNBNEFCSUFNUUl5QUFLQUljS0FJQUxRQUFRUUJISVFNTElBRkJRR3NRSXdzZ0JCQVBHZ3NnQVVHQUFXb2tBQUpBSUFORkRRQUNRQUpBSUFBb0FzZ0hJZ01FUUNBREtBSVlJQU10QUI4aUFTQUJRUmgwUVJoMVFRQklHMFVFUUNBUVFSaHFRYm1oQlVHa0IwRUhJQkJCdUFGcUVCMGlBUkFYSWdOQkdHcEJyT0VJRUE0YUlBTVFHQ0FCRUI0Z0FDZ0N5QWNoQXdzZ0F5MEFFRVVOQVNBUVFkd0JhaUFEUVJScUVPQUNDeU1BUWRBQmF5SVVKQUFnQUNnQ3RBWkJBVWNFUUNBVVFTQnFRYm1oQlVIQ0IwRUhJQlJCd0FGcUVCMGlBUkFYSWdOQkdHcEJtOWNJRUE0YUlBTVFHQ0FCRUI0TFFRQWhEeU1BUVJCcklnY2tBQ0FBUWZRR2FpRUZJQUFvQWlRaUFTZ0NXQ0VMSUFFb0FsUWhBd05BSUFNZ0MwWUVRQ0FIUVJCcUpBQUZJQU1vQWdBaEFrR0lBaEFWSWdFZ0FqWUNBQ0FDRU9vRElRUWdBVUlBTndJTUlBRkJmellDQ0NBQklBUTJBZ1FnQVVJQU53SVVJQUZCQURvQUhDQUJRZ0EzQXlBZ0FVSUFOd01vSUFGQkFEb0FlQ0FCUVFBNkFFZ2dBVUtBZ0lDQWdJQ0F3RDgzQXpBZ0FVSUFOd000SUFGQlFHdEJBRG9BQUNBQlFRQTJBcEFCSUFGQ0FEY0RpQUVnQVVLR2dJQ0E0QUEzQTRBQklBRkJsQUZxUWR6NERCQVVHaUFCUW9DQWdJREFBRGNDL0FFZ0FTQUJRZWdCYWpZQytBRWdBVUtBZ0lDQXdBQTNBK0FCSUFFZ0FVRzhBV28yQXR3QklBRkNnSUNBZ01BQU53SzBBU0FCSUFGQm9BRnFOZ0t3QVNBSElBRTJBZ2dnQnlBQ0VPb0ROZ0lFUVFBaEFpTUFRU0JySWdna0FDQUlJQWRCQkdvMkFoQWdDRUVRYWlFS0l3QkJFR3NpQmlRQUlBY29BZ1FoQVNBSUFuOENRQ0FGS0FJRUlnUkZEUUFnQlNnQ0FBSi9JQVJCQVdzZ0FYRWdCR2tpQ1VFQlRRMEFHaUFCSUFFZ0JFa05BQm9nQVNBRWNBc2lBa0VDZEdvb0FnQWlERVVOQUNBRVFRRnJJUTRnQ1VFQlN5RU5BMEFnRENnQ0FDSU1SUTBCSUFFZ0RDZ0NCQ0lKUndSQUFrQWdEVVVFUUNBSklBNXhJUWtNQVFzZ0JDQUpTdzBBSUFrZ0JIQWhDUXNnQWlBSlJ3MENDeUFNS0FJSUlBRkhEUUFMUVFBTUFRc2dCaUFGSUFFZ0NoRGlDQUpBUVFBZ0JDQUZLQUlNUVFGcXN5SWlJQVVxQWhBaUl5QUVzNVJlR3cwQUlBVWdCQ0FFUVFGcmNVRUFSeUFFUVFOSmNpQUVRUUYwY2lJQ0FuOGdJaUFqbFkwaUlrTUFBSUJQWFNBaVF3QUFBQUJnY1FSQUlDS3BEQUVMUVFBTElnUWdBaUFFU3hzUXd3RWdCU2dDQkNJRUlBUkJBV3R4UlFSQUlBUkJBV3NnQVhFaEFnd0JDeUFCSUFSSkJFQWdBU0VDREFFTElBRWdCSEFoQWdzQ1FDQUNRUUowSWdJZ0JTZ0NBR29vQWdBaUFVVUVRQ0FHS0FJQUlBVW9BZ2cyQWdBZ0JTQUdLQUlBTmdJSUlBVW9BZ0FnQW1vZ0JVRUlhallDQUNBR0tBSUFJZ0VvQWdBaUFrVU5BU0FDS0FJRUlRd0NRQ0FFSUFSQkFXc2lBbkZGQkVBZ0FpQU1jU0VNREFFTElBUWdERXNOQUNBTUlBUndJUXdMSUFVb0FnQWdERUVDZEdvZ0FUWUNBQXdCQ3lBR0tBSUFJQUVvQWdBMkFnQWdBU0FHS0FJQU5nSUFDeUFHS0FJQUlRd2dCa0VBTmdJQUlBVWdCU2dDREVFQmFqWUNEQ0FHS0FJQUlRRWdCa0VBTmdJQUlBRUVRQ0FHTFFBSUJFQWdBVUVNYWhDUUR3c2dBUVJBSUFFUUh3c0xRUUVMT2dBY0lBZ2dERFlDR0NBR1FSQnFKQUFnQ0NnQ0dDRUJJQWhCSUdva0FDQUhLQUlJSVFJZ0IwRUFOZ0lJSUFGQkRHb2dBaENBR2lBRFFRUnFJUU1nQjBFSWFoQ1FEd3dCQ3dzakFFRWdheUlCSkFBQ2YwRUFJQUFvQWh3b0FnQXRBQUJGRFFBYUlBQW9BaVFvQWxRb0FnQVE2Z01oQlNBQUtBSWtJZ01vQWxnaEJDQURLQUpVSVFNQ1FBTkFJQU1nQkVZTkFTQURLQUlBSVFJZ0EwRUVhaUVESUFJUTF3UU5BQXNnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdnb3dvUUdTRURJQUVnQWhEcUF6WUNDQ0FESUFGQkNHb1FMMEcyMGdFUUdTZ0NBQzBBQUVFQVJ3d0JDeUFBS0FJa0lnTW9BbGdoQmlBREtBSlVJUU1EZnlBRElBWkdCSDhnQUNnQ0hDZ0NBQzBBQUVFQVJ3VWdBeWdDQUNFQ0lBRWdCVFlDRkNBQklBSTJBaEFnQVNBQU5nSU1JQUZCek5vU05nSUlJQUVnQVVFSWFpSUVOZ0lZSUFJZ0JCQ09HQ0FEUVFScUlRTWdCQkFXREFFTEN3c2hBeUFCUVNCcUpBQUNRQ0FEUlEwQUl3QkJNR3NpQVNRQUlBQW9BaHdvQWdBdEFBQUVmeUFCSUFBb0FpUW9BbFFvQWdBUTZnTWlDellDTENBQUtBSWtJZ01vQWxnaERDQURLQUpVSVFJQ2Z3TkFJQUlnREVjRVFDQUJJQUlvQWdBaUJSRHFBeUlITmdJb0lBQWdCeEI4SWdORkJFQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSE1vZ29RR1NBQlFTaHFFQzlCb1BVRUVCa29BZ0F0QUFBTUF3c0NRQ0FGRU9ZS0lnUkZEUUFnQlJEWEJDZ0NGQ0VHQWtBQ1FBSkFJQVFvQWhSQjlnRnJEZ0lCQUFJTElBWkIvQUZyUVgxTERRRWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwR2gvQWtRR1NBQlFTaHFFQzlCeXNvQ0VCa29BZ0F0QUFBTUJRc2dCa0g3QVd0QmZVc05BQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRZGo2Q1JBWklBRkJLR29RTDBHS3lnSVFHU2dDQUMwQUFBd0VDeUFCSUFVUTZnTWlCVFlDQ0NBQklBUkJBQkE0SWdZMkFpUWdBQ0FHRUh3aUNFVUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRYkNmQ2hBWklBRkJDR29RTDBHZ29nb1FHU0FCUVNScUVDOG9BZ0F0QUFBTUJBc2dCU0FHUmdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQnNKOEtFQmtnQVVFSWFoQXZRZTJhQXhBWktBSUFMUUFBREFRTElBaEJGR29oQ1NBSUtBSVVCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdnb3dvUUdTQUJRU1JxRUM5QjYva0xFQmtnQ1JBdlFmVHREQkFaSUFGQkNHb1FMeWdDQUMwQUFBd0VDeUFKSUFVMkFnQWdBeUFHTmdJTUlBUW9BaFJCOWdGSERRQWdCU0FMUmdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQm1Kb0tFQmtnQVVFc2FoQXZRYXo2QVJBWktBSUFMUUFBREFRTElBRWdCRUVCRURnaUJEWUNJQUpBQW44Z0FDQUVFSHdpQ0VVRVFDQUFLQUljSWdNb0FnQkJBRG9BQUNBRFFjTDhDUkFaSUFGQkNHb1FMMEdKendrUUdTQUJRU0JxRUM4TUFRc2dCQ0FHUmdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQmo1OEtFQmtnQVVFSWFoQXZRYldlQ2hBWklBRkJJR29RTDBIbTZRQVFHUXdCQ3lBSVFSaHFJUVlnQ0NnQ0dFVU5BU0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRYUNqQ2hBWklBRkJJR29RTDBHeitRc1FHU0FHRUM5QjlPME1FQmtnQVVFSWFoQXZDeWdDQUMwQUFBd0VDeUFHSUFVMkFnQWdBeUFFTmdJUUN5QUJRUUE2QUNRZ0F5Z0NBQ0VGSUFGQjhOb1NOZ0lJSUFFZ0FVRUlhaUlFTmdJWUlBRWdBVUVrYWpZQ0RDQUJJQWMyQWhBZ0JTQUVFT1VLSUFRUUZpQURJQU1vQWhBZ0IwWWlBem9BSENBQkxRQWtSU0FEY2dSQUlBSkJCR29oQWd3Q0JTQUFLQUljSWdNb0FnQkJBRG9BQUNBRFFhQ2pDaEFaSUFGQktHb1FMMEd2NlFBUUdTZ0NBQzBBQUF3REN3QUxDeUFBS0FJY0tBSUFMUUFBQzBIL0FYRkJBRWNGUVFBTElRTWdBVUV3YWlRQUlBTkZEUUFqQUVIUUFXc2lBU1FBSUFBb0FpUWhBeUFCUWdBM0FoUWdBVUtBZ0lDQWdBUTNBcVFCSUFFZ0FVRWdhaUlGTmdLZ0FTQUJRWUNBZ1B3RE5nSWNJQUZDQURjQ3RBRWdBVUdBZ0lEOEF6WUN2QUVnQVVJQU53SU1JQUVnQXpZQ0NDQUJRZ0EzQXF3QklBTW9BbGdoQmlBQlFhd0JhaUVDSUFGQkNHcEJCSEloQkNBREtBSlVJUU1EUUNBRElBWkhCRUFnQVNBREtBSUFJZ2NRNmdNMkFzQUJJQVFnQVVIQUFXb1EwQUVnQnpZQ0FDQURRUVJxSVFNTUFRc0xRUUFoQXlBQlFRQTJBcVFCSUFJUWpna2dBVUVJYWlBQktBSUlLQUpVS0FJQUVPb0RFTVFHSUFCQjZBWnFJQUZCd0FGcUlBRW9BcUFCSWdZZ0FTZ0NwQUZCQW5ScUlBWVEvaGtpQmhEdEJTQUdFRElhSUFJUVR5QUZFTndGSUFRUVR3TkFJQUFvQXV3R0lBQW9BdWdHSWdKclFRSjFJQU5OQkVBZ0FVSFFBV29rQUFVZ0FDQUNJQU5CQW5ScUtBSUFFSHdnQXpZQ0NDQURRUUZxSVFNTUFRc0xJd0JCRUdzaUFTUUFJQUFvQXV3R0lRWWdBQ2dDNkFZaEF3Si9BMEFnQXlBR1J3UkFJQUVnQUNBREtBSUFJZ1VRZkNJQ0tBSU1JZ1EyQWd3Q1FDQUVSUTBBSUFFZ0JUWUNDQ0FDS0FJSUlRVWdCU0FBSUFRUWZDZ0NDQ0lFVHdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQjFmd0pFQmtnQVVFSWFoQXZRZENoQ2hBWklBRkJER29RTHlnQ0FDMEFBQXdFQ3lBQklBSW9BaEFpQWpZQ0JDQUNSUTBBSUFVZ0FDQUNFSHdvQWdnaUFrc0VRQ0FBS0FJY0lnVW9BZ0JCQURvQUFDQUZRZGo2Q1JBWklBRkJDR29RTDBHNnpna1FHU0FCUVFScUVDOGFDeUFDSUFSSkRRQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwRy9vZ29RR1NBQlFReHFFQzlCK0owS0VCa2dBVUVJYWhBdlFjV2FDaEFaSUFGQkJHb1FMeWdDQUMwQUFBd0RDeUFEUVFScUlRTU1BUXNMSUFBb0Fod29BZ0F0QUFBTElRTWdBVUVRYWlRQUlBTkIvd0Z4UlEwQVFRQWhCQ01BUWZBQmF5SUNKQUFnQUNnQzdBWWdBQ2dDNkFaR0JFQWdBa0hRQUdwQnVhRUZRZWtOUVFjZ0FrRXdhaEFkSWdFUUZ5SURRUmhxUWJIWkNCQU9HaUFERUJnZ0FSQWVDeUFBUVp3SGFoRDlHU0FBS0FMb0JpZ0NBQ0VCSUFKQ2dJQ0FnTUFBTndKRUlBSWdBa0V3YWlJRE5nSkFJQUlnQURZQ0tDQUNJQU0yQWl3Z0FrRW9ha0VBUVFBZ0FVRUFFTzhJR2lBQ1FlZ0FhaUVIQW44RFFDQUFLQUxzQmlBQUtBTG9CaUlCYTBFQ2RTQUVTd1JBSUFJZ0FTQUVRUUowYWlnQ0FDSUZOZ0lrSUFWRkJFQWdBa0hRQUdwQnVhRUZRWkFPUVFjZ0FrRUlhaEFkSWdFUUZ5RURJQWRCbDlnSUVBNGFJQU1RR0NBQkVCNExJQUFnQlJCOElnWkZCRUFnQWtIUUFHcEJ1YUVGUVpJT1FRY2dBa0VJYWhBZElnRVFGeUVESUFkQnNMQUlFQTRhSUFNUUdDQUJFQjRMSUFJb0FrUWlBMFVFUUNBQUtBSWNJZ0VvQWdCQkFEb0FBQ0FCUVlXaENoQVpJQUpCSkdvUUx5Z0NBQzBBQUF3REN5QUNLQUpBSVFnQ1FBTkFJQVVnQ0NBRFFRRnJJZ0ZCQW5ScUtBSUFJZ3dvQWh4SERRRWdBU0lERFFBTElBSkJBRFlDUkNBQUtBSWNJZ0VvQWdCQkFEb0FBQ0FCUVlXaENoQVpJQUpCSkdvUUx5Z0NBQzBBQUF3REN5QUNJQU0yQWtRQ1FDQUdLQUlNSWdoRkRRQWdEQ2dDRUNJSlFRRnFJUU1DUUNBR0tBSVFJZ0VFUUNBQ1FTaHFJQU5CQkNBQklBZ1E3d2doRENBQklBVkdEUUVnQWtFb2FpQURRUU1nQlNBQkVPOElJUXdnQWtLQWdJQ0F3QUEzQW1RZ0FpQUNRZEFBYWlJSU5nSmdJQVlvQWdBaEN5QUNRWlRiRWpZQ0NDQUNJQUpCQ0dvaUF6WUNHQ0FDSUFnMkFnd2dDeUFERU9VS0lBTVFGZ0pBSUFJb0FtUkJBa2NOQUNBQ0tBSmdJZ01vQWdBaUNDQURLQUlFUmcwQUlBQWdDQkI4S0FJSUlRTWdBQ0FDS0FKZ0tBSUVFSHdoQ0NBTUtBSWdJZ3NnQTBzTkFDQURJQXdvQWlRaUNrOE5BQ0FMSUFnb0FnZ2lBMHNnQXlBS1QzSU5BQ0FDUVNocUlBbEJBbXBCQVNBRklBRVE3d2doREFzZ0FrSFFBR29RWGd3QkN5QUNRU2hxSUFOQkFVRUNJQVlvQWdBUTF3UW9BaFJCK2dGR0d5QUZJQWdRN3dnaERBc2dEQTBBSUFKQjBBQnFRYm1oQlVIWERrRUhJQUpCQ0dvUUhTSUJFQmNoQXlBSFFkdXZDQkFPR2lBREVCZ2dBUkFlUVFBaERBc2dCaUFNTmdJZ0lBUkJBV29oQkF3QkN3c2dBaWdDUkVFQlJ3UkFJQUFvQWh3aUFTZ0NBRUVBT2dBQUlBRkIxS1VLRUJraEFTQUNJQUlvQWtSQkFXczJBbEFnQVNBQ1FkQUFhaEF2UWNPS0FSQVpLQUlBTFFBQURBRUxBa0FnQWlnQ1FDZ0NBQ0lCS0FJVVJRUkFJQUVvQWhCRkRRRUxJQUFvQWh3aUFTZ0NBRUVBT2dBQUlBRkJsTG9KRUJrb0FnQXRBQUFNQVFzZ0FDZ0NIQ2dDQUMwQUFBc2hBU0FDUVRCcUVGNGdBa0h3QVdva0FDQUJSUTBBUVFBaERDTUFRZkFBYXlJS0pBQUNRQ0FBS0FJY0tBSUFMUUFBUlEwQUlBQW9BcndISWdNZ0FDZ0N3QWRCQW5ScUlSRUNRQU5BSUFNZ0VVY0VRQ0FES0FJQUlnRW9BaFJCQWtZRVFDQUtJQUFnQVNnQ0dCQjhLQUlBRU5jRUloSkJBUkE0SWdFMkFtd2dBQ0FCRUh3aUFTZ0NDQ0lFSUFNb0FnQWlBaWdDSUUwRVFDQUFLQUljSWdFb0FnQkJBRG9BQUNBQlFkaWdDaEFaSUFNb0FnQkJHR29RTDBHT25Bb1FHU0FLUWV3QWFoQXZRZXpBQkJBWklRSU1CQXNnQkNBQ0tBSWtTd1JBSUFBb0Fod2lBU2dDQUVFQU9nQUFJQUZCMktBS0VCa2dBeWdDQUVFWWFoQXZRZnViQ2hBWklBcEI3QUJxRUM5QnN1c0FFQmtoQWd3RUN5QUJLQUk4QkVBZ0FDZ0NIQ0lDS0FJQVFRQTZBQUFnQWtHZ293b1FHU0FLUWV3QWFoQXZRWm5aQ1JBWklBRW9BanhCR0dvUUwwSHB6Z29RR1NBREtBSUFRUmhxRUM4aEFnd0VDd0pBSUFFb0FoUWlCVVVOQUNBRklBSW9BaGhHRFFBZ0FDZ0NIQ0lDS0FJQVFRQTZBQUFnQWtHZ293b1FHU0FCUVFScUVDOUI1Zm9KRUJrZ0F5Z0NBRUVZYWhBdlFiZnZDUkFaSUFGQkZHb1FMMEdMdmdnUUdTRUNEQVFMSUFFZ0FqWUNQQ0FCSUFRZ0F5Z0NBQ2dDSkVZNkFFQWdDa0lBTndOZ0lBcENBRGNEV0NBS1FZQ0FnUHdETmdKb0lBcENnSUNBZ01BQU53Sk1JQW9nQ2tFNGFqWUNTQ0FLUWdBM0F5Z2dDa0lBTndNZ0lBcEJnSUNBL0FNMkFqQkJBaUVDQW44Q1FBTkFJQklReUFFZ0FrRUJjaUlGU3dSQUlBb0NmZ0pBQWtBQ1FDQVNJQUlRandVaUFTZ0NBQ0lFUVFackRnUUNBUUVDQUFzZ0JFRXJhdzREQVFBQkFBdEI0b0FHUWVld0EwSHdBRUdkOGdZUUFBQUxBa0FnQVVFRWFpSUVFTmtIQkVBZ0JCRFpCMEVEVHcwQklBUVEyUWNFZmlBQktBSVlJZ1lnQVVFTWFpQUdHeWdDQURVQ0FBVkNBQXNoSkNBRUVOa0hRUUpQQkg0Z0FTZ0NHQ0lFSUFGQkRHb2dCQnNvQWdBMUFnUkNJSVlnSklRRklDUUxEQUlMUWVmeENFSG5zQU5COFFCQm5mSUdFQUFBQzBITWhRZEI1N0FEUWZJQVFaM3lCaEFBQUFzM0F4Z2dDaUFTSUFVUU9EWUNGQUovSUFvcEF4Z1FzZ3doQlFKQUlBb29BaVFpQVVVTkFDQUtLQUlnQW44Z0FVRUJheUFGY1NBQmFTSUVRUUZORFFBYUlBVWdBU0FGU3cwQUdpQUZJQUZ3Q3lJR1FRSjBhaWdDQUNJSFJRMEFJQUZCQVdzaENDQUtLUU1ZSVNRZ0JFRUJTeUVKQTBBZ0J5Z0NBQ0lIUlEwQklBY29BZ1FpQkNBRlJ3UkFBa0FnQ1VVRVFDQUVJQWh4SVFRTUFRc2dBU0FFU3cwQUlBUWdBWEFoQkFzZ0JDQUdSdzBDREFFTElBY3BBd2dnSkZJTkFBc2dCd3dCQzBFQUN3MENRUUFoQkNNQVFSQnJJZzBrQUNNQVFSQnJJZzRrQUNBS0tRTVlFTElNSVFjZ0RRSi9Ba0FnQ2tFZ2FpSUdLQUlFSWdWRkRRQWdCaWdDQUFKL0lBVkJBV3NnQjNFZ0JXa2lBVUVCVFEwQUdpQUhJQVVnQjBzTkFCb2dCeUFGY0FzaUJFRUNkR29vQWdBaUNFVU5BQ0FGUVFGcklRa2dDaWtER0NFa0lBRkJBVXNoQ3dOQUlBZ29BZ0FpQ0VVTkFTQUhJQWdvQWdRaUFVY0VRQUpBSUF0RkJFQWdBU0FKY1NFQkRBRUxJQUVnQlVrTkFDQUJJQVZ3SVFFTElBRWdCRWNOQWdzZ0NDa0RDQ0FrVWcwQUMwRUFEQUVMUVJBUUZTRUJJQTRnQmtFSWFqWUNCQ0FPSUFFMkFnQWdBU0FLS1FNWU53TUlJQTVCQVRvQUNDQUJRUUEyQWdBZ0FTQUhOZ0lFQWtCQkFDQUZJQVlvQWd4QkFXcXpJaUlnQmlvQ0VDSWpJQVd6bEY0YkRRQUNRQUovUVFJZ0JTQUZRUUZyY1VFQVJ5QUZRUU5KY2lBRlFRRjBjaUlCQW44Z0lpQWpsWTBpSWtNQUFJQlBYU0FpUXdBQUFBQmdjUVJBSUNLcERBRUxRUUFMSWdRZ0FTQUVTeHNpQVVFQlJnMEFHaUFCSUFFZ0FVRUJhM0ZGRFFBYUlBRVFmd3NpQVNBR0tBSUVJZ1JOQkVBZ0FTQUVUdzBCSUFSQkEwa2hDQUovSUFZb0FneXpJQVlxQWhDVmpTSWlRd0FBZ0U5ZElDSkRBQUFBQUdCeEJFQWdJcWtNQVF0QkFBc2hCU0FFSUFFZ0NDQUVhVUVCUzNJRWZ5QUZFSDhGSUFWQkFVRWdJQVZCQVd0bmEzUWdCVUVDU1JzTElnVWdBU0FGU3hzaUFVME5BUXRCQUNFRUFrQWdBU0lJQkVBZ0JpQUlFSmNERUd3Z0JpQUlOZ0lFQTBBZ0JDQUlSZ1JBSUFZb0FnZ2lCVVVOQXlBR1FRaHFJUUVnQlNnQ0JDRUpBa0FnQ0draUJFRUJUUVJBSUFrZ0NFRUJhM0VoQ1F3QkN5QUlJQWxMRFFBZ0NTQUljQ0VKQ3lBR0tBSUFJQWxCQW5ScUlBRTJBZ0FnQ0VFQmF5RVZJQVJCQVVzaEdBTkFJQVVvQWdBaUFVVU5CQ0FCS0FJRUlRc0NRQ0FZUlFSQUlBc2dGWEVoQ3d3QkN5QUlJQXRMRFFBZ0N5QUljQ0VMQ3dKQUlBa2dDMFlOQUNBQklRUWdDMEVDZENJV0lBWW9BZ0JxSWhrb0FnQkZCRUFnR1NBRk5nSUFJQXNoQ1F3QkN3TkFJQVFpQ3lnQ0FDSUVCRUFnQVNrRENDQUVLUU1JVVEwQkN3c2dCU0FFTmdJQUlBc2dCaWdDQUNBV2FpZ0NBQ2dDQURZQ0FDQUdLQUlBSUJacUtBSUFJQUUyQWdBTUFRc2dBU0VGREFBTEFBVWdCaWdDQUNBRVFRSjBha0VBTmdJQUlBUkJBV29oQkF3QkN3QUxBQXNnQmtFQUVHd2dCa0VBTmdJRUN3c2dCaWdDQkNJRklBVkJBV3R4UlFSQUlBVkJBV3NnQjNFaEJBd0JDeUFGSUFkTEJFQWdCeUVFREFFTElBY2dCWEFoQkFzQ1FDQUVRUUowSWdRZ0JpZ0NBR29vQWdBaUFVVUVRQ0FPS0FJQUlBWW9BZ2cyQWdBZ0JpQU9LQUlBTmdJSUlBWW9BZ0FnQkdvZ0JrRUlhallDQUNBT0tBSUFJZ0VvQWdBaUJFVU5BU0FFS0FJRUlRZ0NRQ0FGSUFWQkFXc2lCSEZGQkVBZ0JDQUljU0VJREFFTElBVWdDRXNOQUNBSUlBVndJUWdMSUFZb0FnQWdDRUVDZEdvZ0FUWUNBQXdCQ3lBT0tBSUFJQUVvQWdBMkFnQWdBU0FPS0FJQU5nSUFDeUFPS0FJQUlRZ2dEa0VBTmdJQUlBWWdCaWdDREVFQmFqWUNEQ0FPRUlzQlFRRUxPZ0FNSUEwZ0NEWUNDQ0FPUVJCcUpBQWdDaUFOS0FJSU5nSUlJQW9nRFMwQUREb0FEQ0FOUVJCcUpBQWdDa0hZQUdvZ0NrRVVhaENwQWtVRVFDQUtRVGhxSUFwQkZHb1Fwd1FMSUFwQjJBQnFJQXBCRkdvUS9Ca2lBU2dDSkNJRUlBRW9BaWhQQkVBZ0FTZ0NLQ0lFUVFGMFFRSWdCQnNpQkNBQktBSW9Td1JBSUFFb0FpQWhCU0FCSUFRUWlBOGdBU2dDSkNFR0lBRW9BaUFoQjBFQUlRUURRQ0FFSUFaR0JFQWdBU0FGRURZRklBY2dCRUVEZENJSWFpQUZJQWhxS1FNQU53TUFJQVJCQVdvaEJBd0JDd3NMSUFFb0FpUWhCQXNnQVNBRVFRRnFOZ0lrSUFFb0FpQWdCRUVEZEdvZ0Npa0RHRGNEQUNBQ1FRSnFJUUlNQVFzTElBb29Ba2dpQlNBS0tBSk1RUUowYWlFSEEwQkJBU0FGSUFkR0RRSWFJQW9nQlNnQ0FDSUJOZ0lZSUFBZ0FSQjhJZ0pCeUFCcUlRRWdDa0hZQUdvZ0NrRVlhaEQ4R1NFRUFrQWdBUzBBTUFSQUl3QkJFR3NpQmlRQUlBRWdCRWNFUUNBR0lBUkJJR28yQWdnZ0JpQUVLQUlnSUFSSE9nQU1JQUVnQmtFSWFoQ3hHUXNnQmtFUWFpUUFEQUVMSXdCQkVHc2lCaVFBSUFGQ2dJQ0FnTUFBTndJa0lBRWdBVFlDSUNBR0lBUkJJR28yQWdnZ0JpQUVLQUlnSUFSSE9nQU1JQUVnQmtFSWFoQ3hHU0FHUVJCcUpBQWdBVUVCT2dBd0N3SkFBbjhnQWlnQ0NDSUVJQU1vQWdBaUFTZ0NJRTBFUUNBQUtBSWNJZ0VvQWdCQkFEb0FBQ0FCUWRpZ0NoQVpJQU1vQWdCQkdHb1FMMEdvbkFvUUdTQUtRUmhxRUM5QjdNQUVFQmtNQVFzZ0JDQUJLQUlrU3dSQUlBQW9BaHdpQVNnQ0FFRUFPZ0FBSUFGQjJLQUtFQmtnQXlnQ0FFRVlhaEF2UWFpY0NoQVpJQXBCR0dvUUwwR3k2d0FRR1F3QkN3SkFJQUlvQWhRaUJFVU5BQ0FFSUFFb0FoaEdEUUFnQUNnQ0hDSUJLQUlBUVFBNkFBQWdBVUdnb3dvUUdTQUNRUVJxRUM5Qm1Qc0pFQmtnQXlnQ0FFRVlhaEF2UWJmdkNSQVpJQUpCRkdvUUwwR0x2Z2dRR1F3QkN5QUNLQUk0UlEwQklBQW9BaHdpQVNnQ0FFRUFPZ0FBSUFGQm9LTUtFQmtnQ2tFWWFoQXZRZWJaQ1JBWklBSW9BamhCR0dvUUwwSHB6Z29RR1NBREtBSUFRUmhxRUM4TEtBSUFMUUFBUVFCSElReEJBQXdEQ3lBQ0lBRTJBamdnQlVFRWFpRUZEQUFMQUFzZ0FDZ0NIQ0lCS0FJQVFRQTZBQUFnQVVIRnRRb1FHU0FLUVJocUVQd09RWW1nQ2hBWklBTW9BZ0JCR0dvUUx5Z0NBQzBBQUVFQVJ5RU1RUUFMSVFRZ0NrRWdhaEJQSUFwQk9Hb1FYaUFLUWRnQWFpSUZLQUlJSVFFRFFDQUJCRUFnQVNnQ0FDRUNJQUZCRUdvUUl5QUJFQjhnQWlFQkRBRUxDeUFGRUxjQ0lBUkZEUVFMSUFOQkJHb2hBd3dCQ3dzZ0FDZ0NIQ2dDQUMwQUFFRUFSeUVNREFFTElBSW9BZ0F0QUFCQkFFY2hEQXNnQ2tId0FHb2tBQ0FNUlEwQVFRQWhCQ01BUWFBQ2F5SUNKQUFDUUNBQUtBSWNLQUlBTFFBQVJRMEFJQUFvQXV3R0lSSWdBa0dRQVdvaERDQUFLQUxvQmlFQkEwQUNRQ0FCSUJKSEJFQWdBaUFCS0FJQUlnTTJBcHdDSUFBZ0F3Ui9JQU1GSUFKQitBQnFRYm1oQlVHZ0VFRUhJQUpCMkFCcUVCMGlBeEFYSVFVZ0RFRzUyQWdRRGhvZ0JSQVlJQU1RSGlBQ0tBS2NBZ3NRZkNJSlJRUkFJQUpCK0FCcVFibWhCVUdpRUVFSElBSkIyQUJxRUIwaUF4QVhJUVVnREVIUXNBZ1FEaG9nQlJBWUlBTVFIZ3NnQ1NnQ0lDRUhJQWtvQWdnaENDQUNRb0NBZ0lEQUFEY0NiQ0FDSUFKQjJBQnFJZ1kyQW1nZ0FrRkFhMElBTndNQUlBSkNBRGNET0NBQ1FZQ0FnUHdETmdKSUlBa29BZ0FoQ3lBQ1FiamJFallDZUNBQ0lBSkIrQUJxSWdNMkFvZ0JJQUlnQWtFNGFpSUZOZ0tBQVNBQ0lBWTJBbndnQ3lBREVPVUtJQU1RRmlBRkVFOGdBa0VBTmdKVUlBSkNnSUNBZ01BQU53Sk1JQUlnQlRZQ1NDQUNRb0NBZ0lEQUFEY0NMQ0FDSUFKQkdHbzJBaWdDUUNBQ0tBSnNJZ01OQUNBSEtBSUlSUTBBUVFBaEF5QUFLQUljSWdRb0FnQkJBRG9BQUNBRVFmQ2NDaEFaSUFKQm5BSnFFQzlCeDlFSkVCa2dCeWdDQ0VFWWFoQXZLQUlBTFFBQVFRQkhJUVFNQWdzZ0IwRVlhaUVLSUFsQkpHb2hGaUFDS0FKb0lnVWdBMEVDZEdvaEVRTkFBa0FDZndKQUFrQUNRQUpBQWtBZ0JTQVJSd1JBSUFJZ0JTZ0NBQ0lETmdJVUlBQWdBeEI4SWd0RkJFQWdBa0g0QUdwQnVhRUZRY2NRUVFjZ0FoQWRJZ01RRnlFR0lBeEI5SzhJRUE0YUlBWVFHQ0FERUI0TElBc29BZ2doQXlBV0lBSkJGR29RMEFFaEJpQURJQWhOQkVBZ0JrRUFOZ0lBSUFJZ0FpZ0NWRUVCYWpZQ1ZDQUhLQUlJSWdORkJFQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwR0kvd2dRR1NBQ1Fad0NhaUlERUM5Qml1WUdFQmtnQWtFVWFoQXZRY0cxREJBWklBTVFMMEhUNndBUUdTZ0NBQzBBQUF3SUN5QURLQUlrUVFGcklBaEhCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdXK2dnUUdTQUNRWndDYWlJREVDOUJpdVlHRUJrZ0FrRVVhaEF2UWUvaUN4QVpJQU1RTDBIdDBRa1FHU0FLRUM5QjY3MElFQmtvQWdBdEFBQU1DQXNnQUNBREtBSVlFSHdpQTBVRVFDQUNRZmdBYWtHNW9RVkIzeEJCQnlBQ0VCMGlCaEFYSVFzZ0RFR1RzQWdRRGhvZ0N4QVlJQVlRSGdzZ0F5Z0NHQ0FDS0FJVVJnMElJQUFvQWh3aUJDZ0NBRUVBT2dBQUlBUkJpUDhJRUJrZ0FrR2NBbW9RTDBHSzVnWVFHU0FDUVJScUVDOUI3dG9LRUJrZ0EwRVlhaEF2S0FJQUxRQUFEQWNMSUFaQkJqWUNBQUpBSUFjb0FnZ2lEa1VOQUNBT0tBSWdJaFVnQ0VzTkFDQU9LQUlrSWcwZ0NFMGdBeUFOU1NBRElCVlBjWElnQ0NBTlFRRnJSbklOQUNBQUtBSWNJZ01vQWdCQkFEb0FBQ0FEUVpiNkNCQVpJQUpCbkFKcUlnTVFMMEdLNWdZUUdTQUNRUlJxRUM5QjcrSUxFQmtnQXhBdlFlM1JDUkFaSUE1QkdHb1FMMEhydlFnUUdTZ0NBQzBBQUF3SEN3SkFJQUFnQnlnQ0RCRDdHU0lEUlEwQUlBSW9BaFFnQXlnQ0RFY05BQ0FHUVFGQkFpQURLQUlnS0FJVVFRSkdHeUlETmdJQURBSUxJQVlvQWdBaUEwRUdSdzBCQWtBZ0FDQUhLQUlFRVBzWklnTkZEUUFnQWlnQ0ZDQURLQUlRUncwQUlBWkJBellDQUF3SUN5QUdLQUlBSWdOQkJrY05BU0FBSUFvb0FnQVFmQ0VESUFJb0FoUWdBeWdDREVZRVFDQUdRUVEyQWdBTUJRc2dCaWdDQUNJRFFRWkhEUUVnQ3lnQ09DSURSUVJBSUFzb0Fqd2lBMFVOQXdzZ0FpZ0NuQUlnQXlnQ0dFWU5BaUFHUVFVMkFnQU1BZ3NnQWlnQ1ZFRUNUd1JBUVFBaEF5QUFLQUljSWdRb0FnQkJBRG9BQUNBRVFhQ2pDaEFaSUFKQm5BSnFFQzlCL2VzTEVCa2dBa0hVQUdvUUx5Z0NBQzBBQUVFQVJ5RUVEQW9MQWtBZ0FpZ0NUQ0lGUVFKSkRRQWdDU2dDREEwQVFRQWhBeUFBS0FJY0lnUW9BZ0JCQURvQUFDQUVRWkNkQ2hBWklBSkJuQUpxRUM5QjhQOEpFQmtnQWlnQ1NCQXZRZlR0REJBWklBSW9Ba2hCQkdvUUwwR0tzUWdRR1NnQ0FDMEFBRUVBUnlFRURBb0xRUUVoQXlBRklBSW9BaXdpQm1wQkFra05DU0FKS0FJTURRa2dBaWdDS0NJRklBWkJBblJxSVFnRFFDQUZJQWhHRFFvZ0FDQUFJQVVvQWdBUWZDZ0NGQkI4SWdZb0FwZ0JJQVl0QUo4QklnY2dCMEVZZEVFWWRVRUFTQnRGQkVBZ0FpQUdLQUlFRUY4Z0FrSDRBR29pQjBIdzRBUWdBaEExSUFJUUR4b2dBaUFBS0FJZ0lBY1E1UVVnQmtHVUFXb2dBaENlQVNBQ0VBOGFJQWNRRHhvTElBVkJCR29oQlF3QUN3QUxJQU5CQld0QkFVc05BUXNnQWtFNGFpQUNRUlJxRUtjRUlBWW9BZ0FoQXdzZ0EwRUVSdzBCQ3lBQ1FSaHFJQUpCRkdvUXB3UWdCaWdDQUNFREN5QURRUVZyUVFGTERRRWdDeWdDQ0NBSEtBSWtTd1JBSUFJZ0J5Z0NIRFlDZUNBQ1FZQ2JBellDQUFKQUlBY29BaFJCQTBjTkFDQUFJQW9vQWdBUWZDRURJQXNvQWdnZ0FDQURLQUlNSWdNUWZDZ0NDRThFUUNBQ0lBTTJBbmdNQVFzZ0FrR0Q2Z0EyQWdBTElBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQjhxQUtFQmtnQWtHY0Ftb1FMMEgrbndvUUdTQUNRUlJxRUM5QnNKMEtFQmtnQ2hBdlFZRGdDUkFaSUFJUXNBTkI5L0FNRUJrZ0FrSDRBR29RTHlnQ0FDMEFBQXdCQ3dKQUlBSW9BaFFnQ3lnQ0lDSUdLQUlZUmcwQUlBZ2dCaWdDSUU4RVFDQUdLQUlrSUFoTERRRUxJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkI5cFlLRUJrZ0FrR2NBbW9RTDBHR2hRb1FHU0FDUVJScUVDOUJpT0FKRUJraEF5QUNRWnZQQ1VITi9Ba2dCaWdDRkVFRVJoczJBbmdnQXlBQ1FmZ0FhaEN3QXlBR1FSaHFFQzlCK3RBSUVCa29BZ0F0QUFBTUFRc2dBMEVGUncwQklBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQitZVUdFQmtvQWdBdEFBQUxJUVJCQUNFRElBUkIvd0Z4UVFCSElRUU1Bd3NnQlVFRWFpRUZEQUFMQUFzZ0FDZ0NIQ2dDQUMwQUFFRUFSeUVFREFJTElBRkJCR29oQVNBQ1FSaHFFRjRnQWtFNGFoQmVJQUpCMkFCcUVGNGdBdzBBQ3dzZ0FrR2dBbW9rQUNBRVJRMEFRUUFoQkNNQVFjQUJheUlHSkFBQ1FDQUFLQUljS0FJQUxRQUFSUTBBSUFBb0Fyd0hJZ1VnQUNnQ3dBZEJBblJxSVF3Z0JrRWdhaUVLQTBBQ1FDQUZJQXhIQkVBZ0JTZ0NBQ0lCS0FJVVFRRkhEUUVnQmlBQUlBRW9BaGdRZkNJSEtBSUFFTmNFSWdGQkFSQTROZ0s4QVNBR0lBRkJBaEE0TmdLNEFTQUFJQVlvQXJ3QkVId2hBaUFBSUFZb0FyZ0JFSHdoQkNBQ0tBSUlJUUVnQkNnQ0NDRURJQVVvQWdBaUNTZ0NJQ0VJSUFrb0FpUWhDU0FISUFkQkpHb2lDeUFHUWJ3QmFoRFFBU2dDQURZQ2dBRWdCeUFMSUFaQnVBRnFFTkFCS0FJQU5nS0VBU0FCSUFsSklBRWdDRTl4SWdzRVFDQUhJQVlvQXJ3Qk5nS0lBUXNnQXlBSlNTQURJQWhQY1NJSUJFQWdCeUFHS0FLNEFUWUNqQUVMQW44Q1FDQUxSUTBBSUFJb0FoUWlDVVVOQUNBSklBVW9BZ0FvQWhoR0RRQWdBQ2dDSENJQktBSUFRUUE2QUFBZ0FVR2dvd29RR1NBR1Fid0JhaEF2UWNiN0NSQVpJQVVvQWdCQkdHb1FMMEhIbmdvUUdTQUNRUlJxRUM5Qmk3NElFQmtvQWdBdEFBQU1BUXNnQ0VVTkFnSkFJQVFvQWhRaUFrVU5BQ0FDSUFVb0FnQW9BaGhHRFFBZ0FDZ0NIQ0lCS0FJQVFRQTZBQUFnQVVHZ293b1FHU0FHUWJnQmFoQXZRZlA3Q1JBWklBVW9BZ0JCR0dvUUwwSEhuZ29RR1NBRVFSUnFFQzlCaTc0SUVCa29BZ0F0QUFBTUFRc2dDMFVnQVNBRFJuSU5BaUFCSUFNZ0FTQURTeHRCQVdzaUFTQUFLQUxzQmlBQUtBTG9CaUlFYTBFQ2RVOEVRQ0FHUVFocVFibWhCVUg2RWtFSElBWkJxQUZxRUIwaUF4QVhJUUlnQ2tIdTV3Z1FEaG9nQWhBWUlBTVFIaUFBS0FMb0JpRUVDeUFHSUFRZ0FVRUNkR29vQWdBaUFUWUNDRUVBSVFNZ0JrRUFOZ0tvQVNBR1FRQTJBZ1FnQUNBQkVIeEJMR29oQkVFQUlRSURRQ0FFS0FJQUlnUUVRQ0FHSUFRb0FnZ2lBVFlDQUFKQUFrQWdCQ2dDREVFRWF3NERBUU1BQXdzZ0JTZ0NBQ0VJSUFBZ0FSQjhLQUlJSWdrZ0NDZ0NJRWtOQWlBSUtBSWtJQWxORFFJQ2Z5QUNCRUFnQUNnQ0hDSUJLQUlBUVFBNkFBQWdBVUdLbXdvUUdTQUdRYndCYWhBdlFlYWRDaEFaSUFaQkNHb1FMMEdjMXdJUUdVSDdnZ29RR1NBR1FhZ0JhaEF2UWVuT0NoQVpJQVlRTHd3QkN5QUdJQUUyQXFnQklBQWdBUkI4SVFnZ0J5QUJOZ0tRQVNBQklRSWdDQ2dDRkVVTkF5QUFLQUljSWdFb0FnQkJBRG9BQUNBQlFhQ2pDaEFaSUFaQnFBRnFFQzlCbnU4SkVCa2dDRUVVYWhBdlFhVDRBaEFaUWE3YUNSQVpJQVpCdkFGcUVDOUI2YzRLRUJrZ0JrRzRBV29RTDBHbXZ3UVFHVUh6bmdvUUdTQUZLQUlBUVJocUVDOUJpNzRJRUJrTEtBSUFMUUFBREFNTElBWWdBVFlDQkNBQklRTU1BUXNMSUFORklBSkZjZzBDSUFBb0Fod2lBU2dDQUVFQU9nQUFJQUZCb0tNS0VCa2dCa0VJYWhBdlFaT2VDaEFaSUFVb0FnQkJHR29RTDBIOW9Rb1FHU0FHUVFScUVDOUIxNThLRUJrZ0JrR29BV29RTDBISDF3SVFHU2dDQUMwQUFBdEIvd0Z4UVFCSElRUU1Bd3NnQUNnQ0hDZ0NBQzBBQUVFQVJ5RUVEQUlMSUFWQkJHb2hCUXdBQ3dBTElBWkJ3QUZxSkFBZ0JFVU5BQUovSXdCQkVHc2lBU1FBSUFFZ0FDZ0NsQWMyQWd3Z0FFR0lCMm9oQmlBQUtBSUFRZHdOYWlFRFFRRWhCQU5BQWtBZ0F5Z0NBQ0lEQkVBZ0FTQURLQUlJSWdJMkFnZ2dBeWdDRENFRklBQW9BaEFnQWhDVUFTRUhRVGdRRlNFQ0lBRW9BZ3doQ0NBQ1FRQTdBU0FnQWtFQU9nQUlJQUlnQnpZQ0JDQUNJQWcyQWdBZ0FrRUFPZ0FjSUFKQkpHb1FaeG9nQWtFQU5nSTBJQUpDQURjQ0xDQUJJQUkyQWdBZ0JpQUJRUWhxRUpZTElRSWdBU2dDQUNFSUlBRkJBRFlDQUNBQ0lBZ1FqdzhnQVJDVkN5QUJJQUVvQWd4QkFXbzJBZ3dnQmlBQlFRaHFFSllMSVFnQ1FDQUZRUkpySWdKQkdVc05BRUVCSUFKMFFjR2VnQmh4RFFNZ0FrRUNSdzBBSUFkQkFCQTRJUVVnQVNnQ0NDRUNJQVZCQVVZRVFDQUFJQUkyQWloQkJTRU1EQU1MSUFBZ0FqWUNMRUVHSVF3TUFndEJBeUVNSUFWQkFVWU5BU0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRZnorQ3hBWklRTWdBU0FGTmdJQUlBTWdBUkNSQlNnQ0FDMEFBRUVBUnlFRUN5QUJRUkJxSkFBZ0JBd0NDeUFJS0FJQUlBdzJBalFNQUFzQUMwVU5BQUovSXdCQklHc2lBU1FBSUFFZ0FDZ0NsQWMyQWh3Z0FFR0lCMm9oQnlBQUtBTHNCaUVJSUFBb0F1Z0dJUXhCQVNFRUEwQUNRQ0FJSUF4SEJFQWdBU0FBSUF3b0FnQVFmQ0lES0FJSU5nSVlJQU1vQWdBaUEwRU1haUVKSUFOQkVHb2hBd0ovQTBBZ0F5Z0NBQ0lDSUFsR0RRTWdBU0FDRUdBaUF6WUNGQUpBQWtBZ0EwVU5BQ0FDS0FJVVFmZ0JSZzBBUVRnUUZTRURJQUVvQWh3aEJpQUJLQUlZSVFzakFFRWdheUlGSkFBZ0F5QUNOZ0lFSUFNZ0JqWUNBQ0FGUVFBN0FSZ2dCVUVBTmdJVUlBVkNnSUNBZ0hBM0Fnd2dCU0FMTmdJSUlBTWdCU2tDQ0RjQ0NDQURJQVV2QVJnN0FSZ2dBeUFGS1FJUU53SVFJQU5CQVRvQUhDQURRUUE3QVNBZ0EwRWthaEJuR2lBRFFRQTJBalFnQTBJQU53SXNJQVZCSUdva0FDQUJJQU0yQWdnZ0J5QUJRUlJxRUpZTElRTWdBU2dDQ0NFRklBRkJBRFlDQ0NBRElBVVFqdzhnQVVFSWFoQ1ZDeUFCSUFFb0FoeEJBV28yQWh3Z0J5QUJRUlJxRUpZTElRVWdBQ2dDR0NBQ0VIb1E2UUVpQTBVTkFBSkFJQU1nQXlnQ0FDZ0NnQUVSQUFCRkRRQUNRQUpBSUFJb0FoUWlCa0hCQUd0QkFra05BQ0FHUVR0R0RRRWdCa0hUQUVZTkFDQUdRUUZIRFFRZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBINXJBd1FHUXdHQ3lBQlFRaHFJQUFnQWtFQUVEZ1FsQXNnQlNnQ0FDQUJLUU1JTndJc0RBRUxJQUZCQ0dvZ0FDQUJLQUlVRUpRTElBVW9BZ0FnQVNrRENEY0NMQXNEUUNBRElBTW9BZ0FvQW9BQkVRQUFJZ1lFUUNBR0tBSVVJUU1NQVFzTEFrQWdBeUFES0FJQUtBSlFFUUFBRFFBZ0F5QURLQUlBS0FKSUVRQUFEUUFnQXlBREtBSUFLQUpZRVFBQVJRMEJDeUFGS0FJQVFRRTJBalFMSUFKQkJHb2hBd3dCQ3dzZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBHdXBnd1FHUXNoQkNBQlFRaHFJZ01nQWhCWUlBUWdBeEJOS0FJQUxRQUFJUUlnQXhBUEdpQUNRUUJISVFRTElBRkJJR29rQUNBRURBSUxJQXhCQkdvaERBd0FDd0FMUlEwQUl3QkJNR3NpQVNRQUlBRWdBRFlDS0NBQVFaQUhhaUlGSVF3RFFBSkFJQXdvQWdBaURFVUVRQ0FCSUFBMkFpQWdBQ2dDN0FZaERDQUFLQUxvQmlFRUEwQWdCQ0FNUmdSQUEwQWdCU2dDQUNJRkJFQWdBU0FGS0FJSU5nSUFJQVVvQWd3aUJpMEFIRVVOQVNBR0tBSTBRUUZHRFFFZ0JrRUlhaEQ5QnlJQ0tBSUVSUTBCSUFBZ0FDZ0M2QVlnQWlnQ0FFRUNkR29vQWdBUWZDRURBa0FnQWlnQ0FDSUVJQU1vQWlBaUF5Z0NJRWNOQUNBREtBSVVRUUZyUVFGTERRQWdBeWdDQUNFREN5QUNLQUlJSWdjZ0JDQUVJQWRMR3lFSElBSW9BZ3doQ0VFQUlRUUNRQ0FDTFFBUkRRQWdBeWdDSUNJSklBZExEUUFnQ0NBSlNTQURLQUlrSWdrZ0IwMXlJQWdnQ1U5eURRQWdCaWdDTEEwQ1FRRWhCQ0FDTFFBUVJRMENDeUFFUlNBRElBQWdCeUFJRVBvWklnSkhjZ1JBSUFaQkFUb0FJU0FBSUFJb0FoZ1FmRUdnQVdvZ0FSQ25CQVVnQmtFQk9nQWdDd3dCQ3dzZ0FVRXdhaVFBREFNTElBQWdCQ2dDQUJCOElna29BZ0FpQTBFTWFpRUtJQU5CRUdvaEF3TkFJQW9nQXlnQ0FDSUNSZ1JBSUFSQkJHb2hCQXdDQlFKQUlBSW9BaFJCOVFGR0JFQWdBU0FDRUdBaUF6WUNIQ0FBSUFNUWxBSkJDR29RL1FjaUJrRUJPZ0FSUVFBaEF3TkFJQUlReUFFZ0EwRUJjaUlIVFFSQUlBQWdBQ0FHS0FJSUlBWW9BZ3dRK2hrb0FoZ1FmRUhvQVdvZ0FVRWNhaENuQkF3REJTQUNJQU1RT0NFTEFrQWdBQ0FDSUFjUU9CQjhJZ2RGRFFBZ0J5Z0NDRUYvUmcwQUlBRkJJR29nQ3lBSkVQa1pJQVlnQnlnQ0NDSUlJQVlvQWdnaURpQUlJQTVKR3pZQ0NDQUdJQVlvQWd3aURpQUlJQWdnRGtrYk5nSU1JQUVnQ3pZQ0JDQUJJQUVvQWh3MkFnQWdCMEc4QVdvZ0FSRDRHUXNnQTBFQ2FpRUREQUVMQUFzQUN5QUJJQWsyQWdRZ0FVSFEzUkkyQWdBZ0FTQUJOZ0lRSUFFZ0FVRWdhallDQ0NNQVFTQnJJZ01rQUNBRElBRTJBZ3dnQTBINDJCSTJBZ2dnQXlBRFFRaHFJZ1kyQWhnZ0FpQUdFUEFPR2lBR0VCWWdBMEVnYWlRQUlBRVFGZ3NnQWtFRWFpRUREQUVMQUFzQUN3QUxJQXdvQWd3b0FnUWlBaWdDRkNJRFFaTUJSeUFEUWM4QVIzRkZCRUFnQVVFb2FpSURJQUpCQUJDVEN5QURJQUpCQVJDVEN3c2dBQ2dDQUNBQ0VQZ0tSUTBCUVFJaEF3SkFBa0FnQWtFQkVEaEJ4Z0JyRGdJQkFBTUxJQUZCS0dvZ0FrRUNFSk1MUVFNaEF3c2dBVUVvYWlBQ0lBTVFrd3NNQVFzTEl3QkI0QUJySWdFa0FBSi9Ba0FnQUNnQ0hDZ0NBQzBBQUVVTkFDQUFRY0FHYWlFRklBQW9BaVFvQWxRb0FnQWlBMEVNYWlFR0lBTkJFR29oQXdOQUlBWWdBeWdDQUNJRFJ3UkFJQU1vQWhSQk8wWUVRQ0FBSUFNUWt3OGhBaUFBS0FJY0tBSUFMUUFBUlEwRFFRQWhEQ0FERU1nQlFRSlBCRUFnQVVFSWFpQUFLQUlBSUFOQkFSQTRFTnNGSUFFb0Fnd2lERVVOQkFzZ0FDZ0NBQ0VISUFNUVlDRUlJQUZDQURjRE9DQUJRZ0EzQXpBZ0FVSUFOd01vSUFGQ0FEY0RJQ0FCUWdBM0ExQWdBVUtBZ0lDQWdBRTNBa1FnQVNBQlFTQnFJZ1EyQWtBZ0J5QUlRUUJCQUNBQ0lBd2dCQkQ1Q2lFSElBUVFJeUFCSUFjMkFsd2dBVUVBTmdJWUlBRkNBRGNERUNBQlFnQTNBd2dnQUNBQUlBRkJDR29pQkNBQlFkd0FhaENTQ3hESkFSb2dBU0FBS0FJRUlBSkJBRUVBRUpzTE5nSUVJQUVnQXhCZ05nSUFJQVFnQlNBQklBRkJCR29RN2dnTElBTkJCR29oQXd3QkN3c2dBQ2dDSENnQ0FDMEFBRUVBUnd3QkMwRUFDeUVESUFGQjRBQnFKQUFnQTBVTkFDTUFRYkFCYXlJTUpBQWdBQ2dDd0FkRkJFQWdERUc1b1FWQnl4UkJCeUFNUWFBQmFoQWRJZ0VRRnlJRFFSaHFRYmZrQ0JBT0dpQURFQmdnQVJBZUN5QUFLQUs4QnlnQ0FDSUJSUVJBSUF4QnVhRUZRYzBVUVFjZ0RFR2dBV29RSFNJREVCY2lBa0VZYWtHVXFBZ1FEaG9nQWhBWUlBTVFIZ3NnQVNnQ0ZBUkFJQXhCdWFFRlFjNFVRUWNnREVHZ0FXb1FIU0lERUJjaUFrRVlha0hzc1FnUURob2dBaEFZSUFNUUhnc2dBQ2dDdEFaQkFVY0VRQ0FNUWJtaEJVSFRGRUVISUF4Qm9BRnFFQjBpQXhBWElnSkJHR3BCbTljSUVBNGFJQUlRR0NBREVCNExJQUFvQXJBR0lBRTJBZ0FnQUNnQzdBWWhHU0FBS0FMb0JpRURBbjhDUUFOQUlBTWdHVVlOQVNBREtBSUFJUUVnQTBFRWFpRURJQUFnQVJCOElRWWpBRUdRQVdzaUNTUUFJQVpCQkdvaEFRSkFBa0FEUUNBQUtBSzBCaUlDQkVBZ0FDZ0NzQVlpQkNBQ1FRRnJJZ0pCNEFCc2FpSUZLQUlFSUFFb0FnQkhEUUlnQlNBQUtBSUlFSkVhSUFBZ0FDZ0N0QVpCQVdzaUFqWUN0QVlnQ1VFd2FpSUVJQUFvQXJBR0lBSkI0QUJzYWlJQ0VKY1BJQUlROHdnZ0JCRHpDQXdCQ3dzZ0FDZ0NIQ0lDS0FJQVFRQTZBQUFnQWtHL25Bb1FHU0FCRUM4b0FnQXRBQUJCQUVjaENBd0JDeUFKUW9DQWdJREFBRGNDSkNBSklBbEJFR28yQWlBZ0NTQUdLQUlnSWdvMkFnd2dCQ0FDUWVBQWJHb29BZ0FoQWdOQUlBSWdDa2NFUUNBSklBb29BaGdnQVNnQ0FFWUVmeUFKUVJCcUlBbEJER29RY1NBSktBSU1CU0FLQ3lnQ0FDSUtOZ0lNREFFTEN3SkFJQWtvQWlRaUFrRURUd1JBSUFBb0Fod2lBU2dDQUVFQU9nQUFJQUZCcGVZRUVCa29BZ0F0QUFCQkFFY2hDQXdCQ3lBSktBSWdJUWdDUUNBQ1FRSkhEUUFnQ0NnQ0FDZ0NGQ0VCSUFnb0FnUW9BaFFpQkVFRmEwRjlUUVJBSUFBb0Fod2lBaWdDQUVFQU9nQUFJQUpCOWNvS0VCa2hBaUFKSUFRMkFnd2dBaUFKUVF4cUVKRUZRZmZMQ2hBWklRSWdDU0FCTmdJSUlBSWdDVUVJYWhDUkJTZ0NBQzBBQUVFQVJ5RUlEQUlMSUFGQkJFWUVRQ0FBS0FJY0lnRW9BZ0JCQURvQUFDQUJRYUhOQXhBWktBSUFMUUFBUVFCSElRZ01BZ3NnQVVFRWEwRjhTdzBBSUFBb0Fod2lBU2dDQUVFQU9nQUFJQUZCb3JNQ0VCa29BZ0F0QUFCQkFFY2hDQXdCQ3lBSlFRQTZBQXdnQ0NBQ1FRSjBhaUVLUVFFaEZnSkFBbjhEUUNBSUlBcEhCRUFDUUFKQUFrQUNRQUpBQWtBZ0NrRUVheUlLS0FJQUlnVW9BaFFPQlFBREJBRUNCUXNnQUNnQ0hDSUJLQUlBUVFBNkFBQWdBVUdJNndBUUdRd0hDMEVBSVFnZ0FDQUZFUFlaUlEwSUlBQWdCaUFKUVF4cUVPd0lEUU1NQ0FzZ0JpMEFIQVJBUVFBaENDQUFJQVVROWhsRkRRZ2dBQ0FHSUFsQkRHb1E3QWdOQXd3SUN5TUFRU0JySWdJa0FBSi9Jd0JCc0FGcklnUWtBQ0FBS0FLMEJpSUJSUVJBSUFSQnVhRUZRWXdIUVFjZ0JFR2dBV29RSFNJQkVCY2lCMEVZYWtIajVBZ1FEaG9nQnhBWUlBRVFIaUFBS0FLMEJpRUJDeUFBS0FLd0JpQUJRZUFBYkdvaUFVRkFhaUVISUFGQkhHc29BZ0FpQVVVRVFDQUVRYm1oQlVHT0IwRUhJQVJCb0FGcUVCMGlBUkFYSWdoQkdHcEI0K0lJRUE0YUlBZ1FHQ0FCRUI0Z0J5Z0NKQ0VCQ3lBSEtBSWdJQUZCQW5ScVFRUnJLQUlBSVFFZ0JFR3dBV29rQUFKQUlBRUVRQ0FCS0FJRVFlamNFa1lOQVFzZ0FDZ0NIQ0lCS0FJQVFRQTZBQUFnQVVHOG5nTVFHUXdCQ3lBRktBSWNJUVFnQWlBQU5nSVFJQUlnQVRZQ0RDQUNRYXpkRWpZQ0NDQUNJQUpCQ0dvaUFUWUNHQ0FBSUFVZ0JDQUJFTmdFSUFFUUZpQUFLQUljQ3lnQ0FDMEFBQ0VCSUFKQklHb2tBQ0FCRFFJTUJnc2dBQ0FHSUFsQkRHb1E3QWhGRFFWQkFDRVdRUUFoQ0NNQVFmQUJheUlFSkFBZ0JpZ0NJQ0lMS0FJVVFRRkhCRUFnQkVIUUFHcEJ1YUVGUVpVV1FRY2dCQkFkSWdFUUZ5SUNRUmhxUWYyekNCQU9HaUFDRUJnZ0FSQWVDeUFMS0FJWUlBWW9BZ1JIQkVBZ0JFSFFBR3BCdWFFRlFaWVdRUWNnQkJBZElnRVFGeUlDUVJocVFjRFFDQkFPR2lBQ0VCZ2dBUkFlQ3lBR0tBS1FBU0VDSUFZb0Fvd0JJUTRnQmlnQ2lBRWhHRUVBSVFFZ0JFRkFheUFHUVpRQmFoQlVJZ2NvQWdRZ0J5MEFDeUlGSUFWQkdIUkJHSFZCQUVnYkJFQWdCQ0FBS0FJSUlnMUJCR29RMGc4MkFqZ2dCRUVBTmdKZ0lBUkNBRGNEV0NBRVFnQTNBMUFnQkNBQUlBUkIwQUJxSWhJUWpSbzJBalFqQUVGQWFpSUZKQUFnQlVLQWdJQ0F3QUEzQWpRZ0JTQUZRU0JxSWhFMkFqQWdCVUlBTndJVUlBVWdCQ2dDT0RZQ0VDQUZJQVFvQWpRMkFod2dCU0FOSUFjUTV3VTJBZ3dnRFNBTlFkZ0NhaUFGUVF4cUlBVkJFR29pRFNBTlFRUnlJQVZCR0dvZ0JVRWNhaUFSRUtrTElSRWdEUkREQ0NBRlFVQnJKQUFnQkNBUk5nSUFJQVJCQURZQ1lDQUVRZ0EzQTFnZ0JFSUFOd05RSUFBZ0FDQVNJQVFRa2dzUXlRRWFDeUFFUWRBQWFpQUFJQVlvQWdBUTF3UkJBQkE0RUpZRElBUWdCQ2dDVkNJRk5nSTRJQVVFUUNBQUlBUkJPR29RakJvaEJTQUNJZ0ZGQkVBZ0N5Z0NIQ0VCQ3lBR0tBS0FBU0VTSUFRZ0JpZ0NoQUVpRFVFRFJqb0FZU0FFSUFzMkFsd2dCQ0FGTmdKVUlBUWdBRFlDVUNBRUlBMUJBV3RCQWtrNkFHQWdCQ0FCTmdKWUlBNGdBU0FPR3lFUkFrQUNRQ0FTUVFGcklocEJBMGtOQUNBQUlBRVFmQ2dDQ0NBQUlCRVFmQ2dDQ0U4TkFDQUVRZEFBYWhEdkdRd0JDd0pBSUFKRkRRQWdDeWdDSENFVklBY29BZ1FnQnkwQUN5SUNJQUpCR0hSQkdIVkJBRWdiUlFSQUl3QkIwQUZySWdJa0FDQUFLQUswQmlJTlJRUkFJQUpCSUdwQnVhRUZRZkVHUVFjZ0FrSEFBV29RSFNJTkVCY2lGMEVZYWtIajVBZ1FEaG9nRnhBWUlBMFFIaUFBS0FLMEJpRU5DeUFBS0FLd0JpRVhJQUpCQURZQ01DQUNRZ0EzQXlnZ0FrSUFOd01nSUFJZ0FDQUNRU0JxRUkwYU5nTEFBU0FBSUFKQndBRnFFSXdhSVJzZ0Z5QU5RZUFBYkdwQjRBQnJLQUlBSVJjZ0FpQUFOZ0lRSUFJZ0d6WUNEQ0FDUVlUYUVqWUNDQ0FDSUFKQkNHb2lEVFlDR0NBQUlCY2dGU0FORU5nRUlBMFFGaUFDUWRBQmFpUUFEQUVMSUFBZ0J5QVZFSlVQQ3lBRVFkQUFhaER2R1FKQUlCaEZJQTVGY2cwQUlBY29BZ1FnQnkwQUN5SUNJQUpCR0hSQkdIVkJBRWdiUlEwQUlBQWdCeUFCRUpVUEN5QUVJQUEyQWlBZ0JDQUZOZ0ljSUFSQjNOc1NOZ0lZSUFRZ0JFRVlhaUlCTmdJb0lBQWdDeUFSSUFFUTJBUWdBUkFXSUJwQkFVMEVRQ0FFUVFBMkFoQWdCRUlBTndNSUlBUkNBRGNEQUNBQUlBQWdCQkNSQ3hESkFSb01BUXNnRWtFRFJ3MEFJQVJCQURZQ0VDQUVRZ0EzQXdnZ0JFSUFOd01BSUFBZ0FDQUVFSW9QRU1rQkdnc2dBQ2dDSENnQ0FDMEFBRUVBUnlFQkN5QUhFQThhSUFSQjhBRnFKQUFnQVEwQkRBWUxJQUFnQmlBSlFReHFFT3dJUlEwRVFRQWhGa0VBSVFoQkFDRU5Jd0JCZ0FOcklnVWtBQ0FHS0FJZ0lnNG9BaFJCQWtjRVFDQUZRZUFCYWtHNW9RVkJuQmRCQnlBRlFhQUJhaEFkSWdFUUZ5SUNRUmhxUWJtekNCQU9HaUFDRUJnZ0FSQWVDeUFPS0FJWUlBWW9BZ1JIQkVBZ0JVSGdBV3BCdWFFRlFaMFhRUWNnQlVHZ0FXb1FIU0lCRUJjaUFrRVlha0hBMEFnUURob2dBaEFZSUFFUUhndEJBQ0VCSUFWQjJBRnFJQUFnQmlnQ0FCRFhCQ0lDUVFBUU9CQ1dBd0pBSUFVb0F0Z0JSUTBBSUFVb0F0d0JJZ2RGRFFBZ0FDZ0N0QVlpQVVVRVFDQUZRZUFCYWtITHNnTkJpZ2xCQnlBRlFhQUJhaEFkSWdFUUZ5SUVRUmhxUWVQa0NCQU9HaUFFRUJnZ0FSQWVJQVVvQXR3QklRY2dBQ2dDdEFZaEFRc2dBQ2dDc0FZaEJFSEVBQkFWRUlzUElnc2dCellDSkNBTFFZRGNFallDQUNBTFFaRGNFallDQkNBTFFvQ0FnSURBQURjQ1BDQUxJQXRCS0dvaUdqWUNPQ0FFSUFGQkFXdEI0QUJzYWlJQklBc1E4Z2dDUUNBQktBSlFJZ1FnQVVIVUFHb2lCeWdDQUVrRVFDQUVJQXMyQWdBZ0FTQUVRUVJxTmdKUURBRUxJQVZCNEFGcUlBRkJ6QUJxSWhJZ0JDQUJLQUpNYTBFQ2RVRUJhaENMQkNBQktBSlFJQUVvQWt4clFRSjFJQWNRcHdJaUFTZ0NDQ0lFSUFzMkFnQWdBU0FFUVFScU5nSUlJQklnQVJEN0NDQUJFSjRMQ3lBT0tBSWNJUUVnQlVFQU5nTFFBU0FBSUE0Z0FTQUZRY0FCYWlJQkVOZ0VJQUVRRmlBRlFvQ0FnSURBQURjQ3RBRWdCU0FGUWFBQmFpSUJOZ0t3QVNBRklBQWdBa0VCRURnUWZEWUNuQUVnRGtFY2FpRVhJQUVnQlVHY0FXb1FjVUVDSVFjRFFDQUNFTWdCSUFkQkFYSWlBVTBFUUNBRktBS3dBU0VDSUFVb0FyUUJJUUZCQUNFSElBVkJBRFlDZ0FGQkFDRUVJQUZCZ1FGT0JFQWdCVUhnQVdvZ0FSRDFHU0FGS0FMa0FTRU5JQVZCZ0FGcUlBVW9BdUFCSWdRUWJBc2dBaUFDSUFGQkFuUnFJQUVnQkNBTkVPa0lJQVZCZ0FGcUVJc0JJQVVvQXJRQklRSkJBQ0VCQTBBZ0FpQUhSZ1JBSUFKRkJFQWdCVUhnQVdwQnVhRUZRY3dYUVFjZ0JVR0FBV29RSFNJQ0VCY2lCRUVZYWtHSzVBZ1FEaG9nQkJBWUlBSVFIZ3NnQlVHZ0FXb2dBVUVCYWhDZkRDQUZRUXhxSVJzZ0JVSDRBV29oSENBRktBSzBBU0VCQTBBZ0JVS0FnSUNBd0FBM0FwUUJJQVVvQXJBQklRUWdCU0FGUVlBQmFqWUNrQUVDUUNBRUlBRkJBV3NpQWtFQ2RDSWRhaWdDQUNJRUxRQjRCRUFnQkVISUFHb1FwUjBoQkNBRlFlQUJhaUlTUW9DQWdJREFBRGNDSkNBU0lCSTJBaUFnRWlBRVFTQnFFT29aSUFVb0FvQUNJZ1FoQnlBRUlBVW9Bb1FDUVFOMGFpRVJRUUFoRlVFQUlRMGpBRUVnYXlJRUpBQWdCRUVBTmdJUUlCRWdCMnNpSGtFRGRTRVlJQjVCZ1FoT0JFQWdCRUVJYWlBWUVQSVpJQVFvQWd3aERTQUVRUkJxSUFRb0FnZ2lGUkJzQ3lBSElCRWdCRUVZYWlBWUlCVWdEUkRnQ0NBRVFSQnFFSXNCSUFSQklHb2tBQ0FGS0FLQUFpSUhJQVVvQW9RQ1FRTjBhaUVWQTBBZ0J5QVZSZ1JBQWtBZ0JTZ0NuQUVpQkNBRktBS3dBU0FkYWlnQ0FFY05BQ0FFS0FJSUlnUWdEaWdDSUVrTkFDQU9LQUlrSUFSTkRRQWdCVUVBTmdKd0lBVkNBRGNEYUNBRlFnQTNBMkFnQlNBQUlBVkI0QUJxRU80Wk5nSklJQVZCZ0FGcUlBVkJ5QUJxRUhFTElCSVFJd3dEQlNBRklBY3BBd0ErQW53Q1FDQUZLQUxZQVJEM0NBUkFJQVZCQURZQ2NDQUZRZ0EzQTJnZ0JVSUFOd05nSUFWQkFEWUNXQ0FGUWdBM0ExQWdCVUlBTndOSUlBVkJBallDUkNBRklBQWdCVUhJQUdvZ0JVSDhBR29nQlVIRUFHb1E3UmsyQWx3TUFRc2dCVUVBTmdKd0lBVkNBRGNEYUNBRlFnQTNBMkFnQlVFQU5nSllJQVZDQURjRFVDQUZRZ0EzQTBnZ0JTQUZLQUo4TmdKRUlBVkJBVFlDUUNBRklBQW9BZ2dnQlVISUFHb2dCVUhFQUdvZ0JVRkFheEN6Q0RZQ1hBc2dBQ2dDQ0NFRUl3QkJFR3NpRFNRQUlBUVFIQ0FFSUFRb0FneEJBV29pRVRZQ0RDQU5JQkUyQWdnZ0JFR01BV29pRVNBUkVMOEJJQVFvQWdnZ0RTZ0NDQ0FGUWVBQWFpQUZLQUpjRUs4TUlnUVFLQ0FSSUJFb0FoaEJBV28yQWhnZ0RVRVFhaVFBSUFVZ0JEWUNlQ0FGUVlBQmFpQUZRZmdBYWhCeElBZEJDR29oQnd3QkN3QUxBQXNnQlVFQU5nTHdBU0FGUWdBM0ErZ0JJQVZDQURjRDRBRWdCU0FBSUFWQjRBRnFFTzRaTmdKZ0lBVkJnQUZxSUFWQjRBQnFFSEVMSUFVb0FwUUJSUVJBSUFWQjRBRnFRYm1oQlVIeUYwRUhJQVZCNEFCcUVCMGlCQkFYSVFjZ0hFRzU0d2dRRGhvZ0J4QVlJQVFRSGdzZ0JTZ0N0QUVnQVVzRWZ5QUZLQUt3QVNBQlFRSjBhaWdDQUVFRWFnVWdGd3NvQWdBaEJ5QUxLQUk4SVFFZ0JVRUFOZ0xnQVNBYUlBVkI0QUZxRUhFZ0JTQUJOZ0lJSUFVZ0N6WUNCQ0FGSUFBMkFnQWdHeUFGUVlBQmFpSU5FSjBNSVFRZ0JVRUFOZ0k0UVN3UUZTSUJRYkRjRWpZQ0FDQUJJQVVwQXdBM0FnUWdBU0FGS0FJSU5nSU1JQUZCRUdvZ0JCQ2VEQm9nQlNBQk5nSTRJQUFnRGlBSElBVkJLR29pQVJEWUJDQUJFQllnQkJCZUlBMFFYaUFDSWdFTkFBc2dBQ2dDSENnQ0FDMEFBRUVBUnlFQklBVkJvQUZxRUY0RklBVW9BckFCSWdRZ0FTQUVJQWRCQW5ScUtBSUFJZzBnQkNBQlFRSjBhaWdDQUVkcUlnRkJBblJxSUEwMkFnQWdCMEVCYWlFSERBRUxDd1VnQlNBQUlBSWdBUkE0RUh3MkF1QUJJQWRCQW1vaEJ5QUZRYUFCYWlBRlFlQUJhaEJ4REFFTEN3c2dCVUdBQTJva0FDQUJSUTBGQ3lBSktBSWdJUWdNQVFzTFFRQWhDQ0FBSUFZZ0NVRU1haERzQ0VVTkFpQVdCRUFqQUVIUUFXc2lBU1FBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JpZ0NBQkRYQkNJRUtBSVVRZmtCYXc0SEJBVUhBZ0FCQXdnTElBQW9BZ2doQWlBQlFRQTJBakFnQVVJQU53TW9JQUZDQURjRElDQUFJQUlnQVVFZ2FoRHNHUkRKQVJvTUJRc2dBVUVJYWlBQUlBUkJBQkE0RUpZRElBRW9BZ2hCQUVjZ0FTZ0NERUVBUjNFaUFrVU5CeUFBS0FJSUlRUWdBVUVBTmdJd0lBRkNBRGNES0NBQlFnQTNBeUFnQUNBRUlBRkJJR29nQVVFSWFrRUVjaENSRHhESkFSb01Cd3NnQUNnQ0NDRUNJQUZCQURZQ01DQUJRZ0EzQXlnZ0FVSUFOd01nSUFBZ0FpQUJRU0JxRUlVZkVNa0JHZ3dEQ3lBQUtBSVlJQUFvQWlRUWxBOFE2UUVpQWlBQ0tBSUFLQUlZRVFBQUJFQWdBQ2dDQ0NFQ0lBRkJBRFlDTUNBQlFnQTNBeWdnQVVJQU53TWdJQUFnQWlBQlFTQnFFT3daRU1rQkdnd0RDeUFBS0FJQUlBQW9BaVFRbEE5QkFCQ0ZBU0VDSUFBb0FnZ2hCQ0FCUVFBMkFqQWdBVUlBTndNb0lBRkNBRGNESUNBQklBQW9BZ0FnQWhDVEJEWUNDQ0FBSUFRZ0FVRWdhaUFCUVFocUVKRVBFTWtCR2d3Q0N5QUFJQUFnQmlBQUlBUkJBQkE0RUh3UTZ4a1F5UUVhREFFTFFRRWhBaUFCSUFSQkFSQTRJZ1UyQXN3QklBRWdCRUVDRURnaUJ6WUN5QUVnQlNBSFJnUkFJQUFnQUNBR0lBQWdCUkI4RU9zWkVNa0JHZ3dFQ3lBR1FTUnFJZ0lnQVVITUFXb1FuZ0lvQWd3aEJTQUNJQUZCeUFGcUVKNENLQUlNSVFjZ0FDQUJLQUxNQVJCOElRb2dBQ0FCS0FMSUFSQjhJUTVCQUNFQ0lBRkJJR29nQUNBRVFRQVFPQkNXQXlBQklBRW9BaVFpQ3pZQ3hBRWdDMFVOQXlBRlFRVkhJQWRCQlVkeFJRUkFJQUFvQWh3aUFpZ0NBRUVBT2dBQUlBSkJtNFlHRUJrb0FnQXRBQUJCQUVjaEFnd0VDd0pBSUFWQkFrY2dCMEVDUjNFTkFDQUdLQUlnSWdKRkRRQWdBaWdDRkVFRVJ3MEFBa0FnQUNBQ0tBSVlFSHdpQWlnQ0lDSUVCRUFnQkNnQ0ZFRUVSZzBCQ3lBQlFTQnFRYm1oQlVIdkdFRUhJQUZCQ0dvUUhTSUVFQmNpRFVFWWFrSFh1UWdRRGhvZ0RSQVlJQVFRSGdzZ0FpMEFIQTBBSUFWQkFrY2lBaUFIUVFKSGNrVUVRQ0FBS0FJY0lnSW9BZ0JCQURvQUFDQUNRZTNuQnhBWktBSUFMUUFBUVFCSElRSU1CUXNnQWtVRVFDQUJRUUEyQWpBZ0FVSUFOd01vSUFGQ0FEY0RJQ0FBSUFBb0FnZ2dBVUVnYWlBQlFjUUJhaER0SGhESkFSb01BZ3NnQVVFQU5nSXdJQUZDQURjREtDQUJRZ0EzQXlBZ0FVRUFOZ0lZSUFGQ0FEY0RFQ0FCUWdBM0F3Z2dBVUVFTmdJRUlBRWdBQ0FCUVFocUlBRkJCR29nQVVIRUFXb1EyQWMyQWh3Z0FDZ0NDQ0VDSXdCQkVHc2lCQ1FBSUFJUUhDQUNJQUlvQWd4QkFXb2lCVFlDRENBRUlBVTJBZ2dnQWtHTUFXb2lCU0FGRUw4QklBSW9BZ2dnQkNnQ0NDQUJRU0JxSUFFb0Fod1E3aDRpQWhBb0lBVWdCU2dDR0VFQmFqWUNHQ0FFUVJCcUpBQWdBQ0FDRU1rQkdnd0JDeUFCUVNCcUlnSVFWU0FBSUFZZ0NpQUNFSWtQSVFRZ0FDQUdJQTRnQWhDSkR5RUZJd0JCa0FGcklnSWtBQ0FDSUFRMkFvZ0JJQUlnQ3pZQ2pBRkJBQ0VISUFRZ0JYSUVRQ0FDUW9DQWdJQ0FBVGNDZkNBQ0lBSkIyQUJxTmdKNElBUUVRQ0FDUWRnQWFpQUNRWWdCYWhBa0N5QUNRUUEyQWpBZ0FrSUFOd01vSUFKQ0FEY0RJQ0FDSUFBZ0FrRWdhaUFDUWRnQWFoRGFCellDVkNBQ1FRQTJBbEFnQlFSQUlBSkJBVFlDSENBQ0lBVTJBaFFnQWlBQ1FSUnFOZ0lZSUFJZ0Fpa0RHRGNEQ0NBQ1FTQnFJQUpCQ0dvUXNna2hCaUFBS0FJSUlRVWpBRUVRYXlJSEpBQWdCUkFjSUFVZ0JTZ0NERUVCYWlJRU5nSU1JQWNnQkRZQ0NDTUFRUkJySWdRa0FDQUZRWXdCYWlJTEVMMEtJUW9nQnlnQ0NDRU9JQVVvQWdnaERTQUVJQVpCSUdvMkFnZ2dCaWdDSUNFU0lBUkJBRG9BQkNBRVFjQ2NJRFlDQUNBRUlBWWdFa2M2QUF3Z0N5QUtJQTBnRGlBRlFkZ0NhaUFFUVFocUlBUVFnQXdpQlJBb0lBc2dDeWdDR0VFQmFqWUNHQ0FFUVJCcUpBQWdCMEVRYWlRQUlBSWdCVFlDVUNBR0VDTUxJQUpCQURZQ01DQUNRZ0EzQXlnZ0FrSUFOd01nSUFBb0FnZ2dBa0VnYWlBQ1FZd0JhaUFDUWRRQWFpQUNRZEFBYWhEbkdTRUhJQUpCMkFCcUVDTUxJQUpCa0FGcUpBQWdBQ0FIRU1rQkdpQUJLQUlrSUFFdEFDc2lBaUFDUVJoMFFSaDFRUUJJR3dSQUlBQWdBVUVnYWlBQUtBS3dCaUFBS0FLMEJrSGdBR3hxUWR3QWF5Z0NBQkNWRHdzZ0FVRWdhaEFQR2d0QkFTRUNEQUlMSUFBb0Fod2lBaWdDQUVFQU9nQUFJQUpCMWFRTUVCa2hBaUFCUVNCcUlnVWdCQkJZSUFJZ0JSQk5LQUlBTFFBQVFRQkhJUUlnQlJBUEdnd0JDeUFBS0FJY0tBSUFMUUFBUVFCSElRSUxJQUZCMEFGcUpBQWdBa1VOQXdzZ0FDZ0NIQXNvQWdBdEFBQkJBRWNoQ0F3QkMwRUFJUWdMSUFsQkVHb1FYZ3NnQ1VHUUFXb2tBQ0FJRFFBTFFRQU1BUXNnQUNnQ0hDZ0NBQzBBQUVFQVJ3c2hBU0FNUWJBQmFpUUFJQUZGRFFBZ0FDZ0NIQ2dDQUMwQUFFRUFSeUVmQ3dKQUlCOUZEUUFnQUNnQ3RBWkJBVWNFUUNBQUtBSWNJZ0VvQWdCQkFEb0FBQ0FCUWN6aUNSQVpJUUVnRkNBQUtBSzBCallDSUNBQklCUkJJR29RTHhvTUFRc2dBQ2dDc0FZZ0FDZ0NDQkNSR2lBQUtBS3dCaUVCSUJSQkFEWUNNQ0FVUWdBM0F5Z2dGRUlBTndNZ0lBQWdGRUVnYWlBQlFTQnFFTm9ISVE4Z0FFRXdhaENUR2lBQUtBSzhCeWdDQUNFQklCUkJBRFlDR0NBQUlBRkJBQ0FVUVFocUlnRVEyQVFnQVJBV0N5QVVRZEFCYWlRQUlCQWdEellDR0NBUFJRMENJQUFvQWdnaEF5QVFJQkJCaUFKcU5nSVFJQkFnRUNnQ2lBSWdFRUhvQVdwSE9nQVVJQkFvQXBRQ0lnRWdBeUFCS0FJQUtBSUlFUUVBSVFJZ0VFRUFPZ0FFSUJCQndKd2dOZ0lBSUJBZ0VFRzRBbW8yQWdnZ0VDQVFLQUs0QWlBUVFaZ0Nha2M2QUF3akFFRVFheUlCSkFBZ0FTQUNOZ0lJSUFFZ0VDZ0NHRFlDQkNBQklBTWdFRUhjQVdvUTV3VTJBZ0FnQXlBUVFjZ0JhaUFCSUJCQkVHb2dBVUVJYWlBQlFRUnFJQkJCQ0dvZ0VCQytDaUVDSUFNUThnSWdBaEQrQ2lBQlFSQnFKQUFnQUNnQ3lBY2lBMFVOQVFzZ0F5Z0NHQ0FETFFBZklnRWdBVUVZZEVFWWRVRUFTQnRGRFFBakFFSHdCMnNpQVNRQUlBRkJBRFlDNkFjZ0FVSUFOd1BnQnlBQlFnQTNBOWdISUFGQ2dJQ0FnSUFCTndMTUJ5QUJJQUZCcUFkcU5nTElCeUFCUWFBR2FoRERHU0FCSUFFb0F1Z0hOZ0t3QmlBQklBRXBBK0FITndPb0JpQUJJQUVwQTlnSE53T2dCaUFCUWJRR2FpQUFLQUxJQnhEZ0FpQUJRUUEyQXBnR0lBQW9Bc2dISWdOQlFHc29BZ0FpRXlBREtBSkVRUUowYWlFSUlBRkJ3QVpxSVFVZ0FVR1FCV29oQkFKQUFrQUNRQU5BSUFnZ0UwY0VRQ0FBS0FJUUlCTW9BZ0FpQXhDVUFTSUNSUVJBSUFGQitBUnFRYm1oQlVIbUNVRUhJQUZCd0FScUVCMGlCaEFYSVE4Z0JFSEpxUWdRRGhvZ0R4QVlJQVlRSGdzZ0FpZ0NGRUU3UndSQUlBRkIrQVJxUWJtaEJVSG5DVUVISUFGQndBUnFFQjBpQmhBWElROGdCRUg3dmdnUURob2dEeEFZSUFZUUhnc2dBU0FBSUFJUWt3OGlBallDaUFNZ0FVSUFOd1B3QkNBQlFvQ0FnSUNBQVRjQzVBUWdBU0FCUWNBRWFpSUdOZ0xnQkFKQUlBQW9BZ0FnQXlBQlFZZ0RhaUFHUVFFUTJ3aEZCRUFnQUNnQ0hDZ0NBQzBBQUEwQkRBUUxJQUZCb0FKcUlBQW9BaUFnQXhEVEJ4QlVJUVlDUUNBQkxRRHdCRUVCY1FSQUlBSVE3Z01ReUFNaUEwRUFJQU1vQWdSQjJNd1NSaHNpRDBVRVFDQUJRZmdFYWtHNW9RVkIvd2xCQnlBQlFkQUNhaEFkSWdNUUZ5RUhJQVJCamJzSUVBNGFJQWNRR0NBREVCNExJQUZCc0FScUlBWVFWQ0VESUFGQkFUWUMvQU1nQVVFQU5nTDRCQ0FCSUFGQitBUnFOZ0w0QXlBQklBRXBBL2dETndNZ0lBQWdBeUFDSUFGQmdBUnFJQUZCSUdvUWlSb2lBaUFQS0FJSUlBRW9Bb2dESUFGQndBUnFJQVVnQVVHb0Iyb1E4UWdoRHlBQ0VDTU1BUXNnQVVIb0Eyb2dCaEJVSVFNZ0FVSUFOd1BRQXlBQlFnQTNBOGdESUFGQ0FEY0R3QU1nQVVJQU53TzRBeUFCUW9DQWdJQ0FBVGNDM0FNZ0FTQUJRYmdEYWlJSE5nTFlBeUFBSUFNZ0FpQUhJQUlnQVNnQ2lBTWdBVUhBQkdvZ0JTQUJRYWdIYWhEeENDRVBJQWNRSXdzZ0F4QVBHaUFHRUE4YUlBOUZEUU1MSUJOQkJHb2hFeUFCUWNBRWFoQWpEQUVMQ3lBQklBQW9BZ2dpQWlFaElBRkIyQWRxSWdRaElDQUFLQUxJQjBFVWFpRUdJd0JCRUdzaUF5UUFJQU1nQWlBR0VOSUNOZ0lNSUFJZ0JDQURRUXhxRVBzWUlRSWdBMEVRYWlRQUlDRWdJQ0FDRUpJUE5nTDRCQ0FCUWFnSGFpQUJRZmdFYWhBa0FrQUNRQ0FBS0FMSUJ5SUNLQUp3UlFSQUlBQW9BZ1FRbkFzYUlBQW9BZ2dhSUFGQkFEWUNtQVlNQVFzZ0FDZ0NJQ0VFSUFGQitBUnFJZ01nQWtHL0xSQzRBaUFCUWFnRGFpSUNJQVFnQXhEbEJTQURFQThhSUFBb0FnZ2lCQkFjSUFFZ0FTZ0NyQU1nQVMwQXN3TWlCaUFHUVJoMFFSaDFRUUJJSWdZYk5nS0VBeUFCSUFFb0FxZ0RJQUlnQmhzMkFvQURJQUVnQVNrRGdBTTNBeGdnQVVHSUEyb2dCRUdJQW1vZ0FVRVlhaENZQXlBQlFvQ0FnSUNBQVRjQzlBSWdBU0FCUWRBQ2FqWUM4QUlnQVVLQWdJQ0FnQUUzQXNRQ0lBRWdBVUdnQW1vMkFzQUNJQUFvQXNnSElnSW9BbXdpRXlBQ0tBSndRUUowYWlFSUlBTkJCSEloQ1NBQlFaQUZhaUVFSUFBb0FnQWhDd05BSUFnZ0UwY0VRQUpBSUJNb0FnQWlBeUFMS0FLOEJrWUVRQ0FBS0FJRUlnSWdBaENXQlVFRUVQOENJUUlnQVVIQUJHb2dBQ2dDSUNBREVOTUhFRlFoQXlBQ0lBQW9BZ2dpQmlBQ0tBSUFLQUlJRVFFQUlROGdBQ2dDQ0NFQ0lBRkJDVFlDakFJZ0FpQUJRZGdIYWlBQlFZd0NhaENJR2lFQ0lBRkJBVFlDbEFJZ0FTQUNOZ0tBQWlBQklBRkJnQUpxTmdLUUFpQUJJQUVwQTVBQ053TUlJQUZCK0FScUlnY2dBVUVJYWhDWEFpRUNJQUVnQ1RZQ21BSWdBU0FDSUFFb0F2d0VSem9BbkFJZ0FTQUdJQU1nRHlBQlFaZ0NhaEN1RHpZQzhBRWdBVUhRQW1vZ0FVSHdBV29RSkNBQ0VLZ0JJQUVnQUNnQ0NDQURFTklDTmdMNEJDQUJRYUFDYWlBSEVDUWdBeEFQR2d3QkN5QUFLQUlRSUFNUWxBRWlBa1VFUUNBQlFmZ0Vha0c1b1FWQnJ3cEJCeUFCUWNBRWFoQWRJZ1lRRnlFUElBUkJ5YWtJRUE0YUlBOFFHQ0FHRUI0TElBSW9BaFJCTzBjRVFDQUJRZmdFYWtHNW9RVkJzQXBCQnlBQlFjQUVhaEFkSWdZUUZ5RVBJQVJCKzc0SUVBNGFJQThRR0NBR0VCNExJQUVnQUNBQ0VKTVBJZ0kyQW93Q0lBRkNBRGNEOEFRZ0FVS0FnSUNBZ0FFM0F1UUVJQUVnQVVIQUJHb2lCallDNEFRZ0FDZ0NBQ0FESUFGQmpBSnFJQVpCQVJEYkNFVUVRQ0FBS0FJY0tBSUFMUUFBSVFNZ0FVSEFCR29RSXlBRERRRWdBVUdnQW1vUUl5QUJRZEFDYWhBaklBRkJxQU5xRUE4YURBY0xJQUZCZ0FKcUlBQW9BaUFnQXhEVEJ4QlVJUVlDUUNBQkxRRHdCRUVCY1FSQUlBSVE3Z01ReUFNaUEwRUFJQU1vQWdSQjJNd1NSaHNpQTBVRVFDQUJRZmdFYWtHNW9RVkJ4UXBCQnlBQlFmQUJhaEFkSWc4UUZ5RUhJQVJCamJzSUVBNGFJQWNRR0NBUEVCNExJQUZCNEFGcUlBWVFWQ0VQSUFGQkFUWUNyQUVnQVVFQU5nTDRCQ0FCSUFGQitBUnFOZ0tvQVNBQklBRXBBNmdCTndNUUlBQWdEeUFDSUFGQnNBRnFJQUZCRUdvUWlSb2lBaUFES0FJSUlBRW9Bb3dDSUFGQndBUnFJQUZCMEFKcUlBRkJvQUpxRVBBSUlRTWdBaEFqREFFTElBRkJtQUZxSUFZUVZDRVBJQUZDQURjRGdBRWdBVUlBTndONElBRkNBRGNEY0NBQlFnQTNBMmdnQVVLQWdJQ0FnQUUzQW93QklBRWdBVUhvQUdvaUJ6WUNpQUVnQUNBUElBSWdCeUFDSUFFb0Fvd0NJQUZCd0FScUlBRkIwQUpxSUFGQm9BSnFFUEFJSVFNZ0J4QWpDeUFQRUE4YUlBWVFEeG9nQVVIQUJHb1FJeUFEUlEwRUN5QVRRUVJxSVJNTUFRc0xBa0FnQVNnQzlBSkZCRUFnQUNnQ0JCQ2NDeG9nQUNnQ0NCb2dBVUVBTmdLWUJnd0JDeUFCUVFBMkFvZ0ZJQUZDQURjRGdBVWdBVUlBTndQNEJDQUJJQUFvQWdnZ0FVR0lBMm9pRHhEekFqWUN3QVFnQUNnQ0NDRUNJd0JCRUdzaUJDUUFJQUlRSENBQ0lBSW9BZ3hCQVdvaUF6WUNEQ0FFSUFNMkFnZ2pBRUVRYXlJREpBQWdBa0dNQVdvaUJoQ1hEQ0VUSUFGQndBUnFJZ2NvQWdBaENDQUVLQUlJSVFrZ0FpZ0NDQ0VDSUFOQkFEb0FEQ0FESUFGQjhBSnFOZ0lJSUFOQkFEb0FCQ0FEUWNDY0lEWUNBQ0FHSUJNZ0FpQUpJQUZCK0FScUloTWdDQ0FEUVFocUlBTVFtQXdpQWhBb0lBWWdCaWdDR0VFQmFqWUNHQ0FEUVJCcUpBQWdCRUVRYWlRQUlBQW9BZ0FnQVVISUFHb2dEeEJXSUFJUStRNGdBU0FBS0FJSVFRUnFJQUlvQWlSQkpHb1F5d1kyQXBnR0lBRWdBQ2dDQ0NJRElBRkIyQWRxSWdJZ0FVR1lCbW9nQVVHZ0Ftb1FsUVEyQXNBRUlBRWdBeUFDSUFjUWtRODJBdmdFSUFGQnFBZHFJQk1RSkFzZ0FVR2dBbW9RSXlBQlFkQUNhaEFqSUFGQnFBTnFFQThhQzBFQklROGdBQ2dDQ0NBQlFkZ0hhaUFBS0FMSUIwRU1haEQvRVNFRElBRkJBVFlDUkNBQklBTTJBc0FFSUFFZ0FVSEFCR28yQWtBZ0FTQUJLUU5BTndNQUlBRkIrQVJxSUFFUXRRSWhBZ0pBSUFBb0FzZ0hJZ01vQWd4QkFrY05BQ0FES0FKNElnUkZEUUFnQXlnQ2ZFVU5BQ0FES0FLQUFVVU5BQ0FBS0FJSUlRWWdBU0FFTmdMQUJDQUJJQVlnQVVIQUJHb1Fxd1kyQXRBQ0lBRWdBeWdDZkNJRUJIOGdBQ2dDQ0NFR0lBRWdCRFlDd0FRZ0JpQUJRY0FFYWhDckJnVkJBQXMyQXFBQ0lBRWdBeWdDZ0FFaUF3Ui9JQUFvQWdnaEJDQUJJQU0yQXNBRUlBUWdBVUhBQkdvUXF3WUZRUUFMTmdLSUF5QUJRUUEyQXRBRUlBRkNBRGNEeUFRZ0FVSUFOd1BBQkNBQklBQW9BZ2dnQVVIQUJHb2dBVUhRQW1vZ0FVR2dBbW9nQVVHSUEyb1E5eGMyQXZBQklBSWdBVUh3QVdvUXNnTWdBQ2dDeUFjaEF3c2dBQ2dDQ0NFRUlBRWdBa0VJYWpZQ01DQUJJQUZCNEFacU5nSTRJQUVnQVNnQzRBWWdCVWM2QUR3Z0FpZ0NDQ0VBSUFGQkFEb0FMQ0FCUWNDY0lEWUNLQ0FCSUFBZ0FrYzZBRFFnQVNnQ21BWWhCU01BUVRCcklnQWtBQ0FBSUFVMkFpZ2dBQ0FCUWFnSGFpSUZRU0JxTmdJWUlBVW9BaUFoQmlBQVFRQTZBQlFnQUVIQW5DQTJBaEFnQUNBRklBWkhPZ0FjSUFBZ0JDQUFRUmhxSUFCQkVHb1FxUlkyQWlRZ0FDQUVJQU1RNXdVMkFnd2dCQ0FCUWRnSGFpQUFRUXhxSUFGQk9Hb2dBRUVvYWlBQVFTUnFJQUZCTUdvZ0FVRW9haEMrQ2lFRElBUVE4Z0lnQXhEK0NpQUFRVEJxSkFBZ0FoQ3FBUXdEQ3lBQlFhQUNhaEFqSUFGQjBBSnFFQ01nQVVHb0Eyb1FEeG9NQVFzZ0FVSEFCR29RSXd0QkFDRVBDeUFCUWFBR2FoREJHU0FCUWFnSGFoQWpJQUZCOEFkcUpBQWdEeUVUREFFTElBQW9BaHdvQWdBdEFBQkJBRWNoRXdzZ0VFSElBV29Rd1JrTElCQkIwQUpxSkFBZ0V3c09BQ0FBS0FJSUlBRWdBaER5RGd1VkFRRURmeU1BUWJBQmF5SUNKQUFnQUNnQ3RBWWlBMFVFUUNBQ1FjdXlBMEdLQ1VFSElBSkJvQUZxRUIwaUF4QVhJZ1JCR0dwQjQrUUlFQTRhSUFRUUdDQURFQjRnQUNnQ3RBWWhBd3NnQUNnQ3NBWWhCQ0FDUVRBUUZTQUJLQUlBRUpBYUlnQTJBZ0FnQkNBRFFlQUFiR29pQVVIZ0FHc2dBQkR5Q0NBQlFSUnJJQUlRamhvZ0FoQzNBaUFDUWJBQmFpUUFJQUFMS3dFQmZ5TUFRUkJySWdJa0FDQUNRUUU2QUE4Z0FDQUJJQUpCRDJvUWl4b2hBQ0FDUVJCcUpBQWdBQXVvQVFFRWZ5TUFRU0JySWdRa0FBSkFJQUFvQWdRaUFpQUFLQUlJU1FSQUlBRW9BZ0FoQXlBQlFRQTJBZ0FnQWlBRE5nSUFJQUFnQWtFRWFqWUNCQXdCQ3lBRVFRaHFJQUFnQWlBQUtBSUFhMEVDZFVFQmFoQ0xCQ0FBS0FJRUlBQW9BZ0JyUVFKMUlBQkJDR29RcHdJaUFpZ0NDQ0VESUFFb0FnQWhCU0FCUVFBMkFnQWdBeUFGTmdJQUlBSWdBMEVFYWpZQ0NDQUFJQUlRK3dnZ0FoQ2VDd3NnQkVFZ2FpUUFDeWNBSUFBZ0FTZ0NBQ0FDS0FJQUlBTVEyUVFpQUVHbzlRODJBZ1FnQUVIYzlRODJBZ0FnQUFzcEFDQUFFSXNQSWdCQ0FEY0NLQ0FBSUFFMkFpUWdBRUhBMlJJMkFnUWdBRUdjMlJJMkFnQWdBQXZOQVFFRWZ5TUFRYkFCYXlJRUpBQWdBQzBBV0FSQUlBUkJ1YUVGUWNZR1FRY2dCRUdnQVdvUUhTSUNFQmNpQTBFWWFrR24xQWdRRGhvZ0F4QVlJQUlRSGd0QkFDRURBMEFnQUNnQ1JDQURUUVJBSUFBb0FoZ0VRQ0FBUVFocUlBQkJJR29RbGc4TElBQkJBVG9BV0NBRVFiQUJhaVFBRHdzZ0EwRUNkQ0lGSUFBb0FrQnFLQUlBSWdKQkFDQUNCSDhnQWlnQ0JFR3cxeElRU0FWQkFBc2JJZ0lFUUNBQ0lBRWdBaWdDQUNnQ0RCRUJBQ0VDSUFBb0FrQWdCV29nQWpZQ0FBc2dBMEVCYWlFRERBQUxBQXVyQVFFRGZ5QUFRWndIYWlJQkVQMFpJQUVnQVNnQ0lCQTJJQUJCaUFkcUlnSW9BZ2doQVFOQUlBRUVRQ0FCS0FJQUlRTWdBVUVNYWhDVkN5QUJFQjhnQXlFQkRBRUxDeUFDRUpzRElBQkI5QVpxSWdJb0FnZ2hBUU5BSUFFRVFDQUJLQUlBSVFNZ0FVRU1haENRRHlBQkVCOGdBeUVCREFFTEN5QUNFSnNESUFCQjZBWnFFRElhSUFCQjFBWnFFRThnQUVIQUJtb1FUeUFBUVRCcUlnQVFreG9nQUNBQUtBS0FCaEEyQ3pVQkFYOERRQ0FBS0FLRUJpQUJUUVJBSUFCQkFEWUNoQVlGSUFBb0FvQUdJQUZCNEFCc2FoRHpDQ0FCUVFGcUlRRU1BUXNMQzk4Q0FRSi9Jd0JCSUdzaUJDUUFJQUFnQVRZQ0FDQUFJQUZCSUdvMkFnZ2dBQ0FCUVpBRGFqWUNCQ0FBSUFFb0Fxd0ZJZ1UyQWd3Z0FDQUZFTUFHTmdJUUlBQWdBQ2dDREJDZkdUWUNGQ0FBS0FJTUVOOElJUVVnQUVJQU53UEFCaUFBUW9DQWdJQ0FBVGNDdEFZZ0FDQUFRVEJxTmdLd0JpQUFRZ0EzQXlnZ0FDQUNOZ0lrSUFBZ0FVSElCR28yQWlBZ0FDQUJRYWdFYWpZQ0hDQUFJQVUyQWhnZ0FFSUFOd1BJQmlBQVFnQTNBdFFHSUFCQmdJQ0EvQU0yQXRBR0lBQkNBRGNDM0FZZ0FFSUFOd1BvQmlBQVFZQ0FnUHdETmdMa0JpQUFRZ0EzQS9BR0lBQkNBRGNEK0FZZ0FFRUFOZ0tBQnlBQVFnQTNBNGdISUFCQmdJQ0EvQU0yQW9RSElBQkNBRGNEa0FjZ0FFR0FnSUQ4QXpZQ21BY2dBRUtBZ0lDQWdBRTNBOEFISUFBZ0F6WUN5QWNnQUNBQVFad0hhallDdkFjZ0JFRUFOZ0lZSUFCQkFFRUFJQVJCQ0dvaUFSRFlCQ0FCRUJZZ0JFRWdhaVFBSUFBTEdRQWdBRUhXcXRXcUFVOEVRQkQ3QVFBTElBQkJER3dRRlF0V0FRRi9Jd0JCc0FGcklnTWtBQ0FBSUFJMkFnUWdBQ0FCTmdJQUlBSkZCRUFnQTBHY3F3VkJIa0VBSUFOQm9BRnFFQjBpQVJBWElnSkJHR3BCaHEwSUVBNGFJQUlRR0NBQkVCNExJQU5Cc0FGcUpBQWdBQXNiQUNBQUtBSUFCRUFnQUNBQUtBSUFFSm9hSUFBb0FnQVFId3NMc3dFQkJuOGdBUkRPQmlFRUFrQWdBQ2dDQkNJRFJRMEFJQUFvQWdBQ2Z5QURRUUZySUFSeElBTnBJZ0pCQVUwTkFCb2dCQ0FESUFSTERRQWFJQVFnQTNBTElnVkJBblJxS0FJQUlnQkZEUUFnQTBFQmF5RUdJQUpCQVVzaEJ3TkFJQUFvQWdBaUFFVU5BU0FFSUFBb0FnUWlBa2NFUUFKQUlBZEZCRUFnQWlBR2NTRUNEQUVMSUFJZ0Ewa05BQ0FDSUFOd0lRSUxJQUlnQlVjTkFnd0JDeUFBUVFocUlBRVE4Z05GRFFBTElBQVBDMEVBQzVJQkFRVi9Jd0JCb0FGcklnTWtBQUpBSUFFb0FnQWdBaENZR2tVRVFDQUFJQUlRVkJvTUFRc2dBQkJWSUFOQkhHb2hCaUFEUVJocUlRUkJBU0VGQTBBZ0EwRVFhaEJKSVFjZ0JDQUNFQklhSUFSQnNiMEZFQTRhSUFRZ0JSQWhHaUFESUFZUVFpQUFJQU1RbmdFZ0F4QVBHaUFIRUZFZ0JVRUJhaUVGSUFFb0FnQWdBQkNZR2cwQUN3c2dBMEdnQVdva0FBc3BBUUYvSUFBb0FnUWhBZ05BSUFFZ0FrWkZCRUFnQWtFTWF4QVBJUUlNQVFzTElBQWdBVFlDQkF2RUF3RUVmeUFCSUFBb0FnUWdBQ2dDQUNJRGEwRU1iU0lDU3dSQUl3QkJJR3NpQkNRQUFrQWdBU0FDYXlJRElBQW9BZ2dnQUNnQ0JDSUJhMEVNYlUwRVFDQUFLQUlFSWdFZ0EwRU1iR29oQWdOQUlBRWdBa1lFUUNBQUlBSTJBZ1FGSUFFUVZTQUJRUXhxSVFFTUFRc0xEQUVMSUFSQkNHb2dBQ0FCSUFBb0FnQnJRUXh0SUFOcUVKb1BJQUFvQWdRZ0FDZ0NBR3RCREcwZ0FFRUlhaENaRHlJQktBSUlJZ0lnQTBFTWJHb2hBd05BSUFJZ0EwY0VRQ0FDRUZVZ0FrRU1haUVDREFFTEN5QUJJQU0yQWdnZ0FDZ0NBQ0VESUFBb0FnUWhBZ05BSUFJZ0EwY0VRQ0FCS0FJRVFReHJJZ1VnQWtFTWF5SUNLUUlBTndJQUlBVWdBaWdDQ0RZQ0NDQUNFRlVnQVNBQktBSUVRUXhyTmdJRURBRUxDeUFBS0FJQUlRSWdBQ0FCS0FJRU5nSUFJQUVnQWpZQ0JDQUFLQUlFSVFJZ0FDQUJLQUlJTmdJRUlBRWdBallDQ0NBQUtBSUlJUUlnQUNBQktBSU1OZ0lJSUFFZ0FqWUNEQ0FCSUFFb0FnUTJBZ0FnQVNnQ0JDRUFBMEFnQUNBQktBSUlJZ0pIQkVBZ0FTQUNRUXhySWdJMkFnZ2dBaEFQR2d3QkN3c2dBU2dDQUNJQUJFQWdBQkFmQ3dzZ0JFRWdhaVFBRHdzZ0FTQUNTUVJBSUFBZ0F5QUJRUXhzYWhDYUdnc0xrQVVDQ1g4Q2ZTTUFRU0JySWdja0FDQUhJQUUyQWhBZ0IwRVFhaUVJSXdCQkVHc2lCU1FBSUFFb0FnQWhBU0FIQW44Q1FDQUFLQUlFSWdKRkRRQWdBQ2dDQUFKL0lBSkJBV3NnQVhFZ0Fta2lCa0VCVFEwQUdpQUJJQUVnQWtrTkFCb2dBU0FDY0FzaUEwRUNkR29vQWdBaUJFVU5BQ0FDUVFGcklRa2dCa0VCU3lFS0EwQWdCQ2dDQUNJRVJRMEJJQUVnQkNnQ0JDSUdSd1JBQWtBZ0NrVUVRQ0FHSUFseElRWU1BUXNnQWlBR1N3MEFJQVlnQW5BaEJnc2dBeUFHUncwQ0N5QUVLQUlJSUFGSERRQUxRUUFNQVFzZ0JTQUFJQUVnQ0JEMENBSkFRUUFnQWlBQUtBSU1RUUZxc3lJTElBQXFBaEFpRENBQ3M1UmVHdzBBSUFBZ0FpQUNRUUZyY1VFQVJ5QUNRUU5KY2lBQ1FRRjBjaUlEQW44Z0N5QU1sWTBpQzBNQUFJQlBYU0FMUXdBQUFBQmdjUVJBSUF1cERBRUxRUUFMSWdJZ0FpQURTUnNRd3dFZ0FDZ0NCQ0lDSUFKQkFXdHhSUVJBSUFKQkFXc2dBWEVoQXd3QkN5QUJJQUpKQkVBZ0FTRUREQUVMSUFFZ0FuQWhBd3NDUUNBRFFRSjBJZ01nQUNnQ0FHb29BZ0FpQVVVRVFDQUZLQUlBSUFBb0FnZzJBZ0FnQUNBRktBSUFOZ0lJSUFBb0FnQWdBMm9nQUVFSWFqWUNBQ0FGS0FJQUlnRW9BZ0FpQTBVTkFTQURLQUlFSVFRQ1FDQUNJQUpCQVdzaUEzRkZCRUFnQXlBRWNTRUVEQUVMSUFJZ0JFc05BQ0FFSUFKd0lRUUxJQUFvQWdBZ0JFRUNkR29nQVRZQ0FBd0JDeUFGS0FJQUlBRW9BZ0EyQWdBZ0FTQUZLQUlBTmdJQUN5QUZLQUlBSVFRZ0JVRUFOZ0lBSUFBZ0FDZ0NERUVCYWpZQ0RDQUZLQUlBSVFBZ0JVRUFOZ0lBSUFBRVFDQUZMUUFJQkVBZ0FFRU1haENYR2dzZ0FBUkFJQUFRSHdzTFFRRUxPZ0FjSUFjZ0JEWUNHQ0FGUVJCcUpBQWdCeWdDR0NFQUlBZEJJR29rQUNBQVFReHFDNUlDQVFkL0l3QkJ3QUZySWdNa0FDQURRYkFCYWhCVklBTkJER29oQ0NBRFFRaHFJUVlnQVVIRUFHb2dBaENmRHlFRUFrQURRQ0FFS0FJQVFYOUhCRUFnQXhCSklRY2dCaUFDRUJJYUlBUW9BZ0FFUUNBR1FiRzlCUkFPR2lBSElBUVF5d01hQ3lBRFFhQUJhaUlGSUFnUVFpQURRYkFCYWlJSklBVVFuZ0VnQlJBUEdnSkFJQUVnQ1JEMURpSUZSUVJBSUFBZ0F5a0RzQUUzQWdBZ0FDQURLQUs0QVRZQ0NDQURRYkFCYWhCVkRBRUxJQVFnQkNnQ0FFRUJhallDQUFzZ0J4QlJJQVVOQVF3Q0N3c2dBMEdoblFWQjZRRkJCeUFEUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRYmU2Q0JBT0dpQUNFQmdnQVJBZUlBQkJ4dUFHRUJRYUN5QURRYkFCYWhBUEdpQURRY0FCYWlRQUM0QUNBUVovSXdCQklHc2lBeVFBQWtBZ0FTZ0NCQ0FCTFFBTElnSWdBa0VZZEVFWWRVRUFTQnRGQkVBZ0FFSEpDQkFVR2d3QkN5QUFFRlVnQTBFUWFrR0w2d1lRRkNFR0lBTkIxK29HRUJRaEJBSkFJQVlnQVNnQ0FDQUJJQUVzQUF0QkFFZ2JMQUFBRU9jSlFYOUdCRUFnQkNBQktBSUFJQUVnQVN3QUMwRUFTQnNzQUFBUTV3bEJmMGNOQVFzZ0FFSGFKeERTQVFzZ0FTZ0NBQ0FCSUFFdEFBc2lCVUVZZEVFWWRVRUFTQ0lIR3lJQ0lBRW9BZ1FnQlNBSEcyb2hBUU5BSUFFZ0FrWkZCRUFnQUVIZkFDQUNMQUFBSWdVZ0JDQUZFT2NKUVg5R0d4Q2tBU0FDUVFGcUlRSU1BUXNMSUFRUUR4b2dCaEFQR2dzZ0EwRWdhaVFBQ3dvQUlBQkI0TXNTRUVnTENnQWdBRUd3eXhJUVNBdWJDd0lOZndKOUl3QkJNR3NpQnlRQUlBY2dBallDQ0NBSElBRTJBZ3dnQnlBRE5nSUVJQUFvQWdBaEJTQUhRUkJxSUFFZ0FpQURFTFVhSUFkQkdHb2dCMEVjYWlBSFFTQnFFTDhISVFZZ0JVR01BbW9oQ1FKQUFrQWdCU2dDa0FJaUEwVU5BQ0FKS0FJQUFuOGdBMEVCYXlBR2NTQURhU0lCUVFGTkRRQWFJQVlnQXlBR1N3MEFHaUFHSUFOd0N5SUFRUUowYWlnQ0FDSUNSUTBBSUFOQkFXc2hDQ0FIS0FJZ0lRUWdCeWdDSENFS0lBY29BaGdoRENBQlFRRkxJUTBEUUNBQ0tBSUFJZ0pGRFFFZ0JpQUNLQUlFSWdGSEJFQUNRQ0FOUlFSQUlBRWdDSEVoQVF3QkN5QUJJQU5KRFFBZ0FTQURjQ0VCQ3lBQUlBRkdEUUVNQWdzZ0Fpa0NDRUlnaUtjaUN5Z0NDQ0FNUncwQUlBc29BZ3dnQ2tjTkFDQUxLQUlRSUFSSERRQUxEQUVMSUFWQjhBRnFJZ0VRcWdNaUFpQUhLQUlNSUFjb0FnZ2dCeWdDQkJDMUdpQUJJQUlRS0NBQklBRW9BaGhCQVdvMkFoZ2dBaUVMQWtBZ0JTZ0NrQUlpQTBVTkFDQUpLQUlBQW44Z0EwRUJheUFHY1NBRGFTSUJRUUZORFFBYUlBWWdBeUFHU3cwQUdpQUdJQU53Q3lJQVFRSjBhaWdDQUNJQ1JRMEFJQU5CQVdzaENDQUJRUUZMSVFRRFFDQUNLQUlBSWdKRkRRRWdCaUFDS0FJRUlnRkhCRUFDUUNBRVJRUkFJQUVnQ0hFaEFRd0JDeUFCSUFOSkRRQWdBU0FEY0NFQkN5QUFJQUZIRFFJTElBSW9BZ3dnQ3hEbUJVVU5BQXNNQVF0QkVCQVZJZ29nQmpZQ0JDQUtJQWF0SUF1dFFpQ0doRGNDQ0NBS1FRQTJBZ0FnQlVHVUFtb2hEQUpBUVFBZ0F5QUZLQUtZQWtFQmFyTWlFU0FGS2dLY0FpSVNJQU96bEY0YkRRQUNRQUpBQW45QkFpQURJQU5CQVd0eFFRQkhJQU5CQTBseUlBTkJBWFJ5SWdBQ2Z5QVJJQktWalNJUlF3QUFnRTlkSUJGREFBQUFBR0J4QkVBZ0Vha01BUXRCQUFzaUFTQUFJQUZMR3lJQVFRRkdEUUFhSUFBZ0FDQUFRUUZyY1VVTkFCb2dBQkIvQ3lJRUlBVW9BcEFDSWdCTkJFQWdBQ0FFVFEwQ0lBQkJBMGtoQWdKL0lBVW9BcGdDc3lBRktnS2NBcFdOSWhGREFBQ0FUMTBnRVVNQUFBQUFZSEVFUUNBUnFRd0JDMEVBQ3lFQklBQWdCQ0FDSUFCcFFRRkxjZ1IvSUFFUWZ3VWdBVUVCUVNBZ0FVRUJhMmRyZENBQlFRSkpHd3NpQUNBQUlBUkpHeUlFVFEwQ0lBUkZEUUVMSUFSQmdJQ0FnQVJKQkVBZ0NTQUVRUUowRUJVUWJDQUZJQVEyQXBBQ1FRQWhBZ05BSUFJZ0JFWUVRQ0FGS0FLVUFpSURSUTBFSUFNb0FnUWhDQUpBSUFScElnQkJBVTBFUUNBSUlBUkJBV3R4SVFnTUFRc2dCQ0FJU3cwQUlBZ2dCSEFoQ0FzZ0NTZ0NBQ0FJUVFKMGFpQU1OZ0lBSUFSQkFXc2hEeUFBUVFGTElSQURRQ0FES0FJQUlnQkZEUVVnQUNnQ0JDRUJBa0FnRUVVRVFDQUJJQTl4SVFFTUFRc2dBU0FFU1EwQUlBRWdCSEFoQVFzQ1FDQUJJQWhHRFFBZ0FDRUNJQUZCQW5RaURTQUpLQUlBYWlJT0tBSUFSUVJBSUE0Z0F6WUNBQ0FCSVFnTUFRc0RRQUpBSUFJaUFTZ0NBQ0lDUlFSQVFRQWhBZ3dCQ3lBQUtBSU1JQUlvQWd3UTVnVWhEaUFCS0FJQUlRSWdEZzBCQ3dzZ0F5QUNOZ0lBSUFFZ0NTZ0NBQ0FOYWlnQ0FDZ0NBRFlDQUNBSktBSUFJQTFxS0FJQUlBQTJBZ0FNQVFzZ0FDRUREQUFMQUFVZ0NTZ0NBQ0FDUVFKMGFrRUFOZ0lBSUFKQkFXb2hBZ3dCQ3dBTEFBc1Erd0VBQ3lBSlFRQVFiQ0FGUVFBMkFwQUNDeUFGS0FLUUFpSURJQU5CQVdzaUFIRkZCRUFnQUNBR2NTRUFEQUVMSUFNZ0Jrc0VRQ0FHSVFBTUFRc2dCaUFEY0NFQUN3SkFBa0FnQ1NnQ0FDQUFRUUowYWlJQUtBSUFJZ0pGQkVBZ0NpQUZLQUtVQWpZQ0FDQUZJQW8yQXBRQ0lBQWdERFlDQUNBS0tBSUFJZ0JGRFFJZ0FDZ0NCQ0VDQWtBZ0F5QURRUUZySWdCeFJRUkFJQUFnQW5FaEFnd0JDeUFDSUFOSkRRQWdBaUFEY0NFQ0N5QUpLQUlBSUFKQkFuUnFJUUlNQVFzZ0NpQUNLQUlBTmdJQUN5QUNJQW8yQWdBTElBVWdCU2dDbUFKQkFXbzJBcGdDQ3lBSFFUQnFKQUFnQ3d0V0FRSi9JQUFvQWdBaUFTZ0NJQ0lDQkg4Z0FnVWdBUkQyQ0NJQ1FkRFJFallDQUNBQ1FaakxFallDQkNBQklBSVFLQ0FCSUFFb0FoaEJBV28yQWhnZ0FpRUJJQUFvQWdBZ0FUWUNJQ0FBS0FJQUtBSWdDd3NKQUNBQVFRQVFwQm9MNkFrQkJIOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBZ1JBSUFJb0FwUUZJUUFEUUNBQUJFQWdBQ2dDQUNFQklBQVFIeUFCSVFBTUFRc0xJQUlvQW93RklRQWdBa0VBTmdLTUJTQUFCRUFnQUJBZkN5QUNRZkFFYWhDVUJDQUNLQUxrQkNFQUEwQWdBQVJBSUFBb0FnQWhBU0FBRUI4Z0FTRUFEQUVMQ3lBQ0tBTGNCQ0VBSUFKQkFEWUMzQVFnQUFSQUlBQVFId3NnQWtIQUJHb1FsQVFnQWlnQ3RBUWhBQU5BSUFBRVFDQUFLQUlBSVFFZ0FCQWZJQUVoQUF3QkN3c2dBaWdDckFRaEFDQUNRUUEyQXF3RUlBQUVRQ0FBRUI4TElBSkJrQVJxRUpRRUlBSW9Bb1FFSVFBRFFDQUFCRUFnQUNnQ0FDRUJJQUFRSHlBQklRQU1BUXNMSUFJb0F2d0RJUUFnQWtFQU5nTDhBeUFBQkVBZ0FCQWZDeUFDUWVBRGFoQ1VCQ0FDS0FMVUF5RUFBMEFnQUFSQUlBQW9BZ0FoQVNBQUVCOGdBU0VBREFFTEN5QUNLQUxNQXlFQUlBSkJBRFlDekFNZ0FBUkFJQUFRSHdzZ0FrR3dBMm9RbEFRZ0FpZ0NwQU1oQUFOQUlBQUVRQ0FBS0FJQUlRRWdBQkFmSUFFaEFBd0JDd3NnQWlnQ25BTWhBQ0FDUVFBMkFwd0RJQUFFUUNBQUVCOExJQUpCZ0FOcUVKUUVJQUlvQXZRQ0lRQURRQ0FBQkVBZ0FDZ0NBQ0VCSUFBUUh5QUJJUUFNQVFzTElBSW9BdXdDSVFBZ0FrRUFOZ0xzQWlBQUJFQWdBQkFmQzBFQUlBSkIwQUpxSWdNb0FoUWlBQ0FBUVI5TElnQWJJUVJCQUNBREtBSVFJQUFiSVFVZ0EwRU1haUVBQTBBZ0FDZ0NBQ0VCUVFBaEFBSkFBMEFnQVNBRlJ5QUFJQVJIY2tVRVFDQURLQUlBSVFBRFFDQUFSUTBESUFBb0FvQ0FCQ0VCSUFBUUh5QUJJUUFNQUFzQUN5QUJJQUJCQW5ScUtBSUFFSjBMR2lBQVFRRnFJZ0JCSUVjTkFBc2dBVUdBQVdvaEFBd0JDd3NnQTBFQU5nSVlJQU5DZ0lDQWdJQUVOd0lRSUFOQ2dJQUVOd0lJSUFOQ0FEY0NBQ0FDS0FMRUFpRUFBMEFnQUFSQUlBQW9BZ0FoQVNBQUVCOGdBU0VBREFFTEN5QUNLQUs4QWlFQUlBSkJBRFlDdkFJZ0FBUkFJQUFRSHd0QkFDQUNRYUFDYWlJREtBSVVJZ0FnQUVFZlN5SUFHeUVFUVFBZ0F5Z0NFQ0FBR3lFRklBTkJER29oQUFOQUlBQW9BZ0FoQVVFQUlRQUNRQU5BSUFFZ0JVY2dBQ0FFUjNKRkJFQWdBeWdDQUNFQUEwQWdBRVVOQXlBQUtBS0FnQVFoQVNBQUVCOGdBU0VBREFBTEFBc2dBU0FBUVFKMGFpZ0NBQkQ1Q0JvZ0FFRUJhaUlBUVNCSERRQUxJQUZCZ0FGcUlRQU1BUXNMSUFOQkFEWUNHQ0FEUW9DQWdJQ0FCRGNDRUNBRFFvQ0FCRGNDQ0NBRFFnQTNBZ0FnQWlnQ2xBSWhBQU5BSUFBRVFDQUFLQUlBSVFFZ0FCQWZJQUVoQUF3QkN3c2dBaWdDakFJaEFDQUNRUUEyQW93Q0lBQUVRQ0FBRUI4TElBSkI4QUZxRUpRRUlBSW9BdVFCSVFBRFFDQUFCRUFnQUNnQ0FDRUJJQUFRSHlBQklRQU1BUXNMSUFJb0F0d0JJUUFnQWtFQU5nTGNBU0FBQkVBZ0FCQWZDeUFDUWNBQmFoQ1VCQ0FDS0FLMEFTRUFBMEFnQUFSQUlBQW9BZ0FoQVNBQUVCOGdBU0VBREFFTEN5QUNLQUtzQVNFQUlBSkJBRFlDckFFZ0FBUkFJQUFRSHdzZ0FrR1FBV29RbEFRZ0FpZ0NoQUVoQUFOQUlBQUVRQ0FBS0FJQUlRRWdBQkFmSUFFaEFBd0JDd3NnQWlnQ2ZDRUFJQUpCQURZQ2ZDQUFCRUFnQUJBZkN5QUNRZUFBYWhDVUJDQUNLQUpVSVFBRFFDQUFCRUFnQUNnQ0FDRUJJQUFRSHlBQklRQU1BUXNMSUFJb0Frd2hBQ0FDUVFBMkFrd2dBQVJBSUFBUUh3c2dBa0V3YWhDVUJDQUNFTW9FQ3lBQ0VCOExDeUVCQVg4Z0FDZ0NCRUdvekJKR0JIOGdBQ2dDQ0NnQ0JFR3d5eEpHQlVFQUN3c2hBUUYvSUFBb0FnUkJxTXdTUmdSL0lBQW9BZ2dvQWdSQjRNc1NSZ1ZCQUFzTEVRQWdBQzBBT0FSQUlBQkJBRG9BT0FzTElRRUJmeUFBS0FJRVFhak1Fa1lFZnlBQUtBSUlLQUlFUWNqTEVrWUZRUUFMQzVRQkFnTi9BWDRnQVNBQVFZZ09haWdDQUVzRVFDQUFLQUtBRGlFRFFTQWhBaUFBSVFRZ0FVRWdUd1JBUVg4Z0FhMUNPSDRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUNnQTRnQUVHSURtb2dBallDQUVFQUlRRURRQ0FBS0FLRURpQUJUUVJBSUFBZ0F4QTJCU0FCUVRoc0lnSWdBQ2dDZ0E1cUlBSWdBMm9RNWdjYUlBRkJBV29oQVF3QkN3c0xDMFVCQVg4akFFRWdheUlESkFBZ0FDQURJQUVRVmhDdEdpSUFRY2pPRWpZQ0JDQUFRY2pTRWpZQ0FDQURRU0JxSkFBZ0FFR2cwUkkyQWdBZ0FFRWthaUFDRUtVQ0dnc1BBQ0FCUVFScUlBQkJDR29ReXdZTFFRRUJmeU1BUVNCcklnTWtBQ0FBSUFNZ0FSQldFSzBhSWdCQnNNNFNOZ0lFSUFCQnNOSVNOZ0lBSUFOQklHb2tBQ0FBSUFJMkFpUWdBRUdJMFJJMkFnQUxJQUFnQUVHWXpoSTJBZ1FnQUVIdzBCSTJBZ0FnQUVFSWFpQUJFRllhSUFBTEtRQWdBRUdBemhJMkFnUWdBQ0FCTmdJSUlBQWdBellDRUNBQUlBSTJBZ3dnQUVIWTBCSTJBZ0FMSWdBZ0FFSG96UkkyQWdRZ0FDQUJOZ0lJSUFBZ0FqWUNEQ0FBUWNEUUVqWUNBQXQ4QVFWL0lBQkJ4QmxxS0FJQUlnVkJBV3NoQmdKQUEwQWdBeUFGUmcwQklBQW9Bc0FaSUFGQnhBQnNhaUlFTFFBNEJFQWdBaUFDS0FKQUlnY2dCQ2dDUUVzRWZ5QUVJQUlRcUE4Z0FpZ0NRQVVnQnd0QkFXbzJBa0FnQVVFQmFrRUFJQUVnQmtjYklRRWdBMEVCYWlFRERBRUxDeUFFSUFJUW9nOExDeUlBSUFCQjBNMFNOZ0lFSUFBZ0FUWUNDQ0FBSUFJMkFnd2dBRUdvMEJJMkFnQUxHd0FnQUVHNHpSSTJBZ1FnQUNBQk5nSUlJQUJCa05BU05nSUFDeHNBSUFCQm9NMFNOZ0lFSUFBZ0FUWUNDQ0FBUWZqUEVqWUNBQXNiQUNBQUlBRTJBZ2dnQUVId3pCSTJBZ1FnQUVIZ3p4STJBZ0FMS1FBZ0FDQUROZ0lRSUFBZ0FqWUNEQ0FBSUFFMkFnZ2dBRUhZekJJMkFnUWdBRUhJenhJMkFnQUxLZ0VCZnlBQlFRUnFJQUFvQWdnaUFpQUJJQUlvQWdBb0FnZ1JBUUFnQUNnQ0RDQUFLQUlRRUpRYkN5a0FJQUFnQXpZQ0VDQUFJQUkyQWd3Z0FDQUJOZ0lJSUFCQndNd1NOZ0lFSUFCQnNNOFNOZ0lBQ3lJQUlBQWdBallDRENBQUlBRTJBZ2dnQUVHb3pCSTJBZ1FnQUVHWXp4STJBZ0FMS1FBZ0FDQUROZ0lRSUFBZ0FqWUNEQ0FBSUFFMkFnZ2dBRUdRekJJMkFnUWdBRUdBenhJMkFnQUxLUUFnQUNBRE5nSVFJQUFnQWpZQ0RDQUFJQUUyQWdnZ0FFSDR5eEkyQWdRZ0FFSG96aEkyQWdBTEVnQWdBQ0FCRU9ZSElnQkJBVG9BT0NBQUN4UUFJQUJCMU1vU05nSUFJQUJCQkdvUUhpQUFDMElCQW44RFFDQUFJQUZIQkVBZ0FVRUVheUlCS0FJQUlRTWdBaWdDQUNFRUlBRkJBRFlDQUNBRVFRUnJJQU0yQWdBZ0FpQUNLQUlBUVFSck5nSUFEQUVMQ3dzWkFRRi9JQUVnQUNnQ1BFWUVmeUFDSUFBUXRnSUZRUUFMQ3c0QUlBQVFweG9nQUNBQkVNb0xDejRCQVg4akFFRVFheUlGSkFBZ0JTQUROZ0lJSUFVZ0FDQUNFT2NGTmdJRUlBQWdBU0FGUVFScUlBVkJDR29nQkJETEdpRUFJQVZCRUdva0FDQUFDdzBBSUFBZ0FVR1ltUklRalFnTENRQWdBRUVjYWhCUEM4VUhBZ3QvQW4wakFFSHdBR3NpQlNRQUlBVWdBVFlDYkNNQVFTQnJJZ29rQUNBS0lBVkI3QUJxSWdnMkFoQWpBRUVRYXlJQkpBQWdDQkQwQXlFRElBb0Nmd0pBSUFCQjhJTUJhaUlIS0FJRUlnSkZEUUFnQnlnQ0FBSi9JQUpCQVdzZ0EzRWdBbWtpQ1VFQlRRMEFHaUFESUFJZ0Ewc05BQm9nQXlBQ2NBc2lCa0VDZEdvb0FnQWlCRVVOQUNBQ1FRRnJJUXNnQ0NnQ0FDRU1JQWxCQVVzaENRTkFJQVFvQWdBaUJFVU5BU0FESUFRb0FnUWlDRWNFUUFKQUlBbEZCRUFnQ0NBTGNTRUlEQUVMSUFJZ0NFc05BQ0FJSUFKd0lRZ0xJQVlnQ0VjTkFnc2dCQ2dDQ0NBTVJ3MEFDMEVBREFFTFFUd1FGU0VFSUFFZ0IwRUlhallDQkNBQklBUTJBZ0FnQ2lnQ0VDRUpJd0JCRUdzaUNDUUFJQWdnQ1RZQ0NDQUVRUWhxSWdrZ0NDZ0NDQ2dDQURZQ0FDQUpRUVJxUVFCQk1CQjVFSnNGSWdsQ0FEY0NIQ0FKUWdBM0FpUWdDVUdBZ0lEOEF6WUNMQ0FJUVJCcUpBQWdBVUVCT2dBSUlBUkJBRFlDQUNBRUlBTTJBZ1FDUUVFQUlBSWdCeWdDREVFQmFyTWlEU0FIS2dJUUlnNGdBck9VWGhzTkFDQUhJQUlnQWtFQmEzRkJBRWNnQWtFRFNYSWdBa0VCZEhJaUJnSi9JQTBnRHBXTklnMURBQUNBVDEwZ0RVTUFBQUFBWUhFRVFDQU5xUXdCQzBFQUN5SUNJQUlnQmtrYkVNTUJJQWNvQWdRaUFpQUNRUUZyY1VVRVFDQUNRUUZySUFOeElRWU1BUXNnQWlBRFN3UkFJQU1oQmd3QkN5QURJQUp3SVFZTEFrQWdCa0VDZENJR0lBY29BZ0JxS0FJQUlnTkZCRUFnQVNnQ0FDQUhLQUlJTmdJQUlBY2dBU2dDQURZQ0NDQUhLQUlBSUFacUlBZEJDR28yQWdBZ0FTZ0NBQ0lES0FJQUlnWkZEUUVnQmlnQ0JDRUVBa0FnQWlBQ1FRRnJJZ1p4UlFSQUlBUWdCbkVoQkF3QkN5QUNJQVJMRFFBZ0JDQUNjQ0VFQ3lBSEtBSUFJQVJCQW5ScUlBTTJBZ0FNQVFzZ0FTZ0NBQ0FES0FJQU5nSUFJQU1nQVNnQ0FEWUNBQXNnQVNnQ0FDRUVJQUZCQURZQ0FDQUhJQWNvQWd4QkFXbzJBZ3dnQVNnQ0FDRURJQUZCQURZQ0FDQURCRUFnQVMwQUNBUkFJQU5CREdvUXdob0xJQU1FUUNBREVCOExDMEVCQ3pvQUhDQUtJQVEyQWhnZ0FVRVFhaVFBSUFvb0FoZ2hBU0FLUVNCcUpBQWdBVUVNYWlJQktBSUFRWDlHQkVBZ0FFRUVhaEFjSUFWQktHb2lBeUFGUVFocUlBVW9BbXhCR0dvUVZoQlRJQVZCT0dvaUJpQURRWW1KQlJBdElBVWdCU2dDUENBRkxRQkRJZ0lnQWtFWWRFRVlkVUVBU0NJQ0d6WUNUQ0FGSUFVb0FqZ2dCaUFDR3pZQ1NDQUZJQVVwQTBnM0F3QWdCVUhRQUdvaUFpQUFRWXdDYWlBRkVKOEVJQUVnQWhEZkJDQUdFQThhSUFNUUR4b0xJQVZCOEFCcUpBQWdBUXNnQUNBQUtBSUFJZ0ZCQ0dvZ0FVSDRBbW9nQUNnQ0JDZ0NBQkRkQkJDY0d3dHZBUU4vSXdCQnNBRnJJZ0VrQUNBQUtBSUFJZ0pCQkdvUUhDQUJRUkJxUVplNEJVSGZBVUVNSUFKQnpBSnFFQmNpQWtFWWFpSURRZEdVREJBT0dpQUJJQUFvQWdRb0FnQWlBQ0FBS0FJQUtBSU1FUUlBSUFNZ0FSQVNHaUFCRUE4YUlBSVFHQ0FCUWJBQmFpUUFRUUFMM0FVQ0NIOENmaU1BUWNBQmF5SUVKQUFnQVNnQ3hBRWdBU2dDekFFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFVQnFJZ1VrQUVFTUlBTkJBWFJCQW1wQmxnRnNRZVFBYmlJRElBTkJERTBiSWdZZ0FTZ0N4QUZMQkVBZ0JVS0FnSUNBZ0FFM0FqUWdCU0FGUVJCcUlnTTJBakFnQXlBQktBTE1BUkE1SUFFb0FzQUJJZ01nQVNnQ3hBRkJCSFJxSVFjRFFBSkFJQU1nQjBZRVFDQUJFT29FSUFFZ0JoRGtCQ0FGS0FJd0lnTWdCU2dDTkVFQ2RHb2hCZ3dCQ3lBRExRQUVCRUFnQlVFUWFpQURFTDRCRUNRTElBTkJFR29oQXd3QkN3c0RRQ0FESUFaSEJFQWdCU0FCSUFNUXhob2dBMEVFYWlFRERBRUxDeUFGUVJCcUVDTUxJQVZCUUdza0FBc2dCRUc0QVdvZ0FTQUNFUFVMSUFFb0FzUUJJZ2xCQVdzaENpQUNLQUlBSVFZZ0FTZ0N3QUVoQ0NBRUtBSzhBU0VISUFRb0FyZ0JJUVZCQUNFQ0FrQURRQ0FDSUFsSEJFQWdDQ0FGUVFSMGFpSURMUUFFUlFSQUlBTkJBVG9BQkNBRElBWTJBZ0FnQ0NBRlFRUjBhaUlESUFJMkFnd2dBeUFITmdJSUlBRWdBU2dDekFGQkFXbzJBc3dCSUFFZ0FTZ0MwQUZCQVdvMkF0QUJJQUJDQURjQ0FBd0RDd0pBSUFNb0FnZ2dCMGNOQUNBR0lBTW9BZ0JIRFFBZ0FFSUNOd0lBREFNTElBSWdBeWdDREVzRVFDQUVJQWMyQXJBQklBUWdCallDcUFFZ0JDQUNOZ0swQVNBRVFRRTZBS3dCSUFRZ0JDa0RzQUVpQ3pjREVDQUVJQVFwQTZnQklndzNBd2dnQkNBREtRSUlOd093QVNBRUlBTXBBZ0EzQTZnQklBTWdERGNDQUNBRElBczNBZ2dnQkNBRUtBSzBBVUVCYWpZQ3RBRWdBU0FGUVFGcUlBRW9Bc1FCY0NBRVFhZ0JhaERyQkNBQklBRW9Bc3dCUVFGcU5nTE1BU0FCSUFFb0F0QUJRUUZxTmdMUUFTQUFRZ0EzQWdBTUF3VWdCVUVCYWtFQUlBVWdDa2NiSVFVZ0FrRUJhaUVDREFJTEFBc0xJQVJCQ0dwQmhyVURRZXNEUVE0Z0JFR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdUFBd0VGZnlNQVFhQU9heUlDSkFCQk1DQUJRWllCYkVIa0FHNGlBU0FCUVRCTkd5SUZJQUJCeEJscUtBSUFTd1JBSUFKQmxBNXFRb0NBZ0lDQUJEY0NBQ0FDSUFKQkVHb2lBVFlDa0E0Z0FTQUFLQUxNR1JDcEdpQUFLQUxBR1NJQklBQW9Bc1FaUWNRQWJHb2hCZ05BQWtBZ0FTQUdSZ1JBSUFBUTVod2dBQ0FGRU9vUElBSW9BcEFPSWdFZ0FpZ0NsQTVCT0d4cUlRTU1BUXNnQVMwQU9BUkFJQUV0QURoRkJFQVFid0FMSUFKQkVHb2lBMEdFRG1vb0FnQWlCQ0FEUVlnT2FpZ0NBRThFUUNBRElBTkJpQTVxS0FJQUlnUkJBWFJCQWlBRUd4Q3BHaUFES0FLRURpRUVDeUFESUFSQkFXbzJBb1FPSUFNb0FvQU9JQVJCT0d4cUlBRVE1Z2NhQ3lBQlFjUUFhaUVCREFFTEN3TkFJQUVnQTBjRVFDQUNRUWhxSUFBZ0FTQUJRUnhxRU5vY0lBRkJPR29oQVF3QkN3c2dBa0VRYWlFQlFRQWhBQU5BSUFFb0FvUU9JQUJOQkVBZ0FVRUFOZ0tFRGdVZ0FTZ0NnQTRhSUFCQkFXb2hBQXdCQ3dzZ0FTQUJLQUtBRGhBMkN5QUNRYUFPYWlRQUMwTUJBWDhqQUVFUWF5SURKQUFnQXlBQktBSUFOZ0lNSUFNZ0FDQUNFT0VITmdJSUlBQWdBRUhZQW1vZ0EwRU1haUFEUVFocUVQNElJUUFnQTBFUWFpUUFJQUFMR1FBZ0FDQUJJQUlnQTBHTXlCSkJ1TW9TUWRqSEVoRGJFZ3RQQVFGL0l3QkJNR3NpQXlRQUlBTWdBaWdDQUNJQ05nSUlJQU1nQWhEY0FUWUNEQ0FESUFNcEF3ZzNBd0FnQTBFUWFpSUNJQUFnQXhEaEFTQUFJQUVnQWhET0FpRUFJQU5CTUdva0FDQUFDNW9CQVFWL0l3QkJFR3NpQmlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQlRZQ0RDQUdJQVUyQWdnakFFRVFheUlGSkFBZ0FFR01BV29pQnhDR0VTRUlJQU1vQWdBaEF5QUNLQUlBSVFJZ0JpZ0NDQ0VKSUFBb0FnZ2hBQ0FGSUFRcEFnQTNBd2dnQnlBSUlBQWdDU0FCSUFJZ0F5QUZRUWhxRUljUklnQVFLQ0FISUFjb0FoaEJBV28yQWhnZ0JVRVFhaVFBSUFaQkVHb2tBQ0FBQyswQkFRWi9Jd0JCRUdzaUJDUUFJQVFnQWlrQ0FEY0RDQ0FFSUFNcEFnQTNBd0FqQUVFUWF5SUNKQUFnQWlBQUlBRVE4d0kyQWd3akFFRVFheUlESkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlCTmdJTUlBTWdBVFlDQ0NNQVFSQnJJZ0VrQUNBQVFZd0JhaUlGRUpjTUlRWWdBaWdDRENFSElBTW9BZ2doQ0NBQUtBSUlJUWtnQVNBRUtRSUlOd01JSUFFZ0JDa0NBRGNEQUNBRklBWWdDU0FJSUFCQjJBSnFJQWNnQVVFSWFpQUJFSmdNSWdZUUtDQUZJQVVvQWhoQkFXbzJBaGdnQVVFUWFpUUFJQU5CRUdva0FDQUdJUUVnQUJEeUFpQUJFSmNaSUFKQkVHb2tBQ0FFUVJCcUpBQUxOQUVCZndOQUlBQW9Bc1FFSUFGTkJFQWdBRUVBTmdMRUJBVWdBQ2dDd0FRZ0FVRXdiR29RbVFNZ0FVRUJhaUVCREFFTEN3c1ZBQ0FBS0FJQUlBQW9BZ1FRN3dNb0FnUVEzUVFMTlFBZ0FDQUFFTVVDSUFFb0FnQWdBaWdDQUNBRElBUW9BZ0FnQlNnQ0FCRE5FU0lCRUNnZ0FDQUFLQUlZUVFGcU5nSVlJQUVMTUFBZ0FDQUFFTDhCSUFFb0FnQWdBaWdDQUNBRElBUW9BZ0FRcmg0aUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkN6VUJBWDhEUUNBQUtBTEVHU0FCVFFSQUlBQkJBRFlDeEJrRklBQW9Bc0FaSUFGQnhBQnNhaERuQnlBQlFRRnFJUUVNQVFzTEMrd0lBZ3QvQW4wZ0FpQUNRUVJxRUtFTElRZ2dBQUovQWtBZ0FTZ0NCQ0lFUlEwQUlBRW9BZ0FDZnlBRVFRRnJJQWh4SUFScElnVkJBVTBOQUJvZ0NDQUVJQWhMRFFBYUlBZ2dCSEFMSWdaQkFuUnFLQUlBSWdkRkRRQWdCRUVCYXlFSklBSW9BZ1FoQ2lBQ0tBSUFJUXNnQlVFQlN5RU1BMEFnQnlnQ0FDSUhSUTBCSUFnZ0J5Z0NCQ0lGUndSQUFrQWdERVVFUUNBRklBbHhJUVVNQVFzZ0JDQUZTdzBBSUFVZ0JIQWhCUXNnQlNBR1J3MENDeUFIS0FJSUlBdEhEUUFnQnlnQ0RDQUtSdzBBQzBFQURBRUxRU3dRRlNJSElBSXBBZ0EzQWdnZ0IwRVFhaUFERUZZYUlBZEJBRFlDQUNBSElBZzJBZ1FnQVVFSWFpRUtBa0JCQUNBRUlBRW9BZ3hCQVdxekloQWdBU29DRUNJUElBU3psRjRiRFFBQ1FBSkFBa0FDZjBFQ0lBUWdCRUVCYTNGQkFFY2dCRUVEU1hJZ0JFRUJkSElpQWdKL0lCQWdENVdOSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRUlBSWdCRXNiSWdKQkFVWU5BQm9nQWlBQ0lBSkJBV3R4UlEwQUdpQUNFSDhMSWdNZ0FTZ0NCQ0lFVFFSQUlBTWdCRThOQXlBRVFRTkpJUUlDZnlBQktBSU1zeUFCS2dJUWxZMGlEME1BQUlCUFhTQVBRd0FBQUFCZ2NRUkFJQStwREFFTFFRQUxJUVVnQkNBRElBSWdCR2xCQVV0eUJIOGdCUkIvQlNBRlFRRkJJQ0FGUVFGcloydDBJQVZCQWtrYkN5SUZJQU1nQlVzYklnTk5CRUFnQVNnQ0JDRUVEQVFMSUFORkRRRUxJQU5CZ0lDQWdBUkpCRUFnQVNBRFFRSjBFQlVRYkNBQklBTTJBZ1JCQUNFRkEwQWdBeUFGUmdSQUFrQWdBU2dDQ0NJRURRQU1CUXNGSUFFb0FnQWdCVUVDZEdwQkFEWUNBQ0FGUVFGcUlRVU1BUXNMSUFRb0FnUWhDUUpBSUFOcElnSkJBVTBFUUNBSklBTkJBV3R4SVFrTUFRc2dBeUFKU3cwQUlBa2dBM0FoQ1FzZ0FTZ0NBQ0FKUVFKMGFpQUtOZ0lBSUFOQkFXc2hEQ0FDUVFGTElRMERRQ0FFS0FJQUlnSkZEUU1nQWlnQ0JDRUdBa0FnRFVVRVFDQUdJQXh4SVFZTUFRc2dBeUFHU3cwQUlBWWdBM0FoQmdzQ1FDQUdJQWxHRFFBZ0FpRUZJQVpCQW5RaUN5QUJLQUlBYWlJT0tBSUFSUVJBSUE0Z0JEWUNBQ0FHSVFrTUFRc0RRQUpBSUFVaUJpZ0NBQ0lGUlEwQUlBSW9BZ2dnQlNnQ0NFY05BQ0FDS0FJTUlBVW9BZ3hHRFFFTEN5QUVJQVUyQWdBZ0JpQUJLQUlBSUF0cUtBSUFLQUlBTmdJQUlBRW9BZ0FnQzJvb0FnQWdBallDQUF3QkN5QUNJUVFNQUFzQUN4RDdBUUFMUVFBaEJDQUJRUUFRYkNBQlFRQTJBZ1FNQVFzZ0F5RUVDeUFFSUFSQkFXc2lBbkZGQkVBZ0FpQUljU0VHREFFTElBUWdDRXNFUUNBSUlRWU1BUXNnQ0NBRWNDRUdDd0pBQWtBZ0FTZ0NBQ0FHUVFKMGFpSUNLQUlBSWdWRkJFQWdCeUFCS0FJSU5nSUFJQUVnQnpZQ0NDQUNJQW8yQWdBZ0J5Z0NBQ0lDUlEwQ0lBSW9BZ1FoQlFKQUlBUWdCRUVCYXlJQ2NVVUVRQ0FDSUFWeElRVU1BUXNnQkNBRlN3MEFJQVVnQkhBaEJRc2dBU2dDQUNBRlFRSjBhaUVGREFFTElBY2dCU2dDQURZQ0FBc2dCU0FITmdJQUN5QUJJQUVvQWd4QkFXbzJBZ3hCQVFzNkFBUWdBQ0FITmdJQUM4a0JBUUYvSXdCQklHc2lCeVFBSUFjZ0Fpa0NBRGNER0NBSElBVXBBZ0EzQXhBZ0J5QUdLUUlBTndNSUl3QkJNR3NpQWlRQUlBSWdBellDS0NBQ0lBUkJCR28yQWhnZ0JDZ0NCQ0VESUFKQkFEb0FGQ0FDUWNDY0lEWUNFQ0FDSUFNZ0JFYzZBQndnQWlBQUlBSkJHR29nQWtFUWFoQ3BGallDSkNBQ0lBQWdBUkR6QWpZQ0RDQUFJQUJCMkFKcUlBSkJER29nQjBFWWFpQUNRU2hxSUFKQkpHb2dCMEVRYWlBSFFRaHFFTDRLSVFFZ0FCRHlBaUFCRVA0S0lBSkJNR29rQUNBSFFTQnFKQUFMYWdFQ2Z5TUFRUkJySWdJa0FDQUNJQUVvQWdBMkFnd2pBRUVRYXlJQkpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRE5nSU1JQUVnQXpZQ0NDQUFRWXdCYWlBQVFRaHFJQUZCQ0dvZ0FFSFlBbW9nQWtFTWFoRFFHaUVBSUFGQkVHb2tBQ0FDUVJCcUpBQWdBQXZhQVFFSGZ5TUFRUkJySWdRa0FDQUVJQUVvQWdBMkFnd2pBRUVRYXlJQkpBQWdBU0FFS0FJTU5nSU1JQUZCQURvQUJDQUJJQUpCRUdvMkFnQWpBRUVRYXlJQ0pBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRE5nSU1JQUlnQXpZQ0NDTUFRUkJySWdNa0FDQUFRWXdCYWlJRkVQMEZJUVlnQVNnQ0RDRUhJQUlvQWdnaENDQUFLQUlJSVFrZ0F5QUJLUUlBTndNSUlBVWdCaUFKSUFnZ0FFSFlBbW9nQnlBRFFRaHFFUDRGSWdBUUtDQUZJQVVvQWhoQkFXbzJBaGdnQTBFUWFpUUFJQUpCRUdva0FDQUJRUkJxSkFBZ0JFRVFhaVFBSUFBTEZRQWdBQ2dDQUJEdkF5QUFLQUlFS0FJQUVMWVBDellCQVg4akFFRVFheUlFSkFBZ0JDQURLUUlBTndNSUlBQWdBRUhZQW1vZ0FTQUNJQVJCQ0dvUXZnOGhBQ0FFUVJCcUpBQWdBQXMvQVFGL0l3QkJFR3NpQXlRQUlBTWdBQ0FCRU5vRU5nSU1JQU1nQUNBQ0VMRUxOZ0lJSUFBZ0EwRU1haUFEUVFocUVLUUxJUUFnQTBFUWFpUUFJQUFMelFFQkIzOGdBU0FCUVFScUVLRUxJUU1DUUNBQUtBSUVJZ0pGRFFBZ0FDZ0NBQUovSUFKQkFXc2dBM0VnQW1raUJFRUJUUTBBR2lBRElBSWdBMHNOQUJvZ0F5QUNjQXNpQlVFQ2RHb29BZ0FpQUVVTkFDQUNRUUZySVFZZ0FTZ0NCQ0VISUFFb0FnQWhDQ0FFUVFGTElRUURRQ0FBS0FJQUlnQkZEUUVnQXlBQUtBSUVJZ0ZIQkVBQ1FDQUVSUVJBSUFFZ0JuRWhBUXdCQ3lBQklBSkpEUUFnQVNBQ2NDRUJDeUFCSUFWSERRSU1BUXNnQUNnQ0NDQUlSdzBBSUFBb0Fnd2dCMGNOQUFzZ0FBOExRUUFMTkFFQmZ3TkFJQUFvQW9SZ0lBRk5CRUFnQUVFQU5nS0VZQVVnQUNnQ2dHQWdBVUVMZEdvUWp3a2dBVUVCYWlFQkRBRUxDd3NLQUNBQUVLTUxRUUJIQ3pVQUlBQWdBQkRGQWlBQktBSUFJQUlvQWdBZ0F5QUVLQUlBSUFVb0FnQVErUjRpQVJBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FCQzRvQ0FRZC9Jd0JCc0FGcklnUWtBQ0FDS0FJQUVQd0NJUVVnQVNnQ3BBSWlCa0VCYXlFSElBVWdCbkFoQXlBQ0tBSUFJUWdnQVNnQ29BSWhDVUVBSVFFQ1FBTkFJQUVnQmtjRVFDQUpJQU5CR0d4cUlnSXRBQXhGQkVBZ0FFRUFOZ0lFSUFCQkFEb0FBQXdEQ3dKQUlBSW9BaEFnQlVjTkFDQUlJQUlvQWdCSERRQWdBQ0FETmdJRUlBQkJBVG9BQUF3REN5QUJJQUlvQWhSTEJFQWdBRUVBTmdJRUlBQkJBRG9BQUF3REJTQURRUUZxUVFBZ0F5QUhSeHNoQXlBQlFRRnFJUUVNQWdzQUN3c2dCRUdHdFFOQm5nUkJEaUFFUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRZEkxRUE0YUlBSVFHQ0FBUVFBMkFnUWdBRUVBT2dBQUlBRVFIZ3NnQkVHd0FXb2tBQXNOQUNBQUlBRkJvSllTRUkwSUM1WUJBZ04vQVg0Z0FTQUFLQUpvU3dSQUlBQW9BbUFoQkNBQUlRSkJDQ0VESUFGQkNFOEVRRUYvSUFFaUE2MUNESDRpQmFjZ0JVSWdpS2NiRUJVaEFnc2dBQ0FETmdKb0lBQWdBallDWUVFQUlRRURRQ0FBS0FKa0lBRk5CRUFnQUNBRUVEWUZJQUZCREd3aUFpQUFLQUpnYWlJRElBSWdCR29pQWlrQ0FEY0NBQ0FESUFJb0FnZzJBZ2dnQVVFQmFpRUJEQUVMQ3dzTFlnRUNmeU1BUVJCcklnUWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQkNBRE5nSUlJQUJCakFGcUlnTWdBeEMvQVNBQUtBSUlJQVFvQWdnZ0FTQUNLQUlBRU84ZUlnQVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JFRVFhaVFBSUFBTERRQWdBQ0FCUWZueEJoQy9EQXNOQUNBQUlBRkI0dllHRUw4TUN3MEFJQUFnQVVHUCtRWVF2d3dMS0FBZ0FFRUFOZ0trQWlBQVFRd1F1UThnQUVFQU5nS3NBaUFBSUFBb0FyQUNRUUZxTmdLd0FnczdBUUovSUFBb0FnZ2hBUU5BSUFFRVFDQUJLQUlBSVFJZ0FSQWZJQUloQVF3QkN3c2dBQ2dDQUNFQ0lBQkJBRFlDQUNBQ0JFQWdBaEFmQ3d1NUJnSUxmd04rSXdCQnNBSnJJZ0lrQUFKQVFRd2dBVUdXQVd4QjVBQnVJZ0VnQVVFTVRSc2lCU0FBS0FLa0FrME5BQ0FDUW9DQWdJQ0FBVGNDYkNBQ0lBSkJDR29pQVRZQ2FDQUJJQUFvQXF3Q0VOOGFJQUFvQXFBQ0lnRWdBQ2dDcEFKQkdHeHFJUVlEUUNBQklBWkdCRUFnQUJEa0dpQUFJQVVRdVE4Z0FpZ0NhQ0lGSUFJb0FteEJER3hxSVFrZ0FrR1FBV29oQ2dOQUlBVWdDVVlFUUNBQ1FRQTJBbXdnQWtFSWFpQUNLQUpvRURZTUJBc2dBQ2dDcEFJZ0FDZ0NyQUlpQVVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FBSUFGQkFYUkJBbW9RNWhvTElBVW9BZ0FRL0FJaEJpQUFLQUtrQWlJSFFRRnJJUXNnQmlBSGNDRUVJQUFvQXFBQ0lReEJBQ0VCQWtBRFFDQUJJQWRIQkVBZ0RDQUVRUmhzYWlJRExRQU1SUVJBSUFVb0FnQWhCQ0FGS1FJRUlRMGdBMEVCT2dBTUlBTWdEVGNDQkNBRElBUTJBZ0FnQXlBQk5nSVVJQU1nQmpZQ0VDQUFJQUFvQXF3Q1FRRnFOZ0tzQWlBQUlBQW9BckFDUVFGcU5nS3dBZ3dEQ3lBRktBSUFJUWdnQmlBREtBSVFSZ1JBSUFnZ0F5Z0NBRVlOQXdzZ0FTQURLQUlVU3dSQUlBVXBBZ1FoRFNBQ0lBWTJBcWdDSUFJZ0RUY0NuQUlnQWlBSU5nS1lBaUFDSUFFMkFxd0NJQUpCQVRvQXBBSWdBaUFDS1FPb0FpSU5Od09JQVNBQ0lBSXBBNkFDSWc0M0E0QUJJQUlnQWlrRG1BSWlEemNEZUNBQ0lBTXBBaEEzQTZnQ0lBSWdBeWtDQ0RjRG9BSWdBaUFES1FJQU53T1lBaUFESUE4M0FnQWdBeUFOTndJUUlBTWdEamNDQ0NBQ0lBSW9BcXdDUVFGcU5nS3NBaUFBSUFSQkFXb2dBQ2dDcEFKd0lBSkJtQUpxRUlJUUlBQWdBQ2dDckFKQkFXbzJBcXdDSUFBZ0FDZ0NzQUpCQVdvMkFyQUNEQU1GSUFSQkFXcEJBQ0FFSUF0SEd5RUVJQUZCQVdvaEFRd0NDd0FMQ3lBQ1FmZ0Fha0dHdFFOQjZ3TkJEaUFDUVpnQ2FoQWRJZ0VRRnlFRElBcEJsalVRRGhvZ0F4QVlJQUVRSGdzZ0JVRU1haUVGREFBTEFBc2dBUzBBREFSQUlBSW9BbXdpQkNBQ0tBSndJZ05QQkVBZ0FrRUlhaUFEUVFGMFFRSWdBeHNRM3hvZ0FpZ0NiQ0VFQ3lBQ0lBUkJBV28yQW13Z0FpZ0NhQ0FFUVF4c2FpSURJQUVvQWdnMkFnZ2dBeUFCS1FJQU53SUFDeUFCUVJocUlRRU1BQXNBQ3lBQ1FiQUNhaVFBQ3pBQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQkIzQUJxSUFKQkRHb1FxUUloQUNBQ1FSQnFKQUFnQUVFQVJ3c05BQ0FBSUFGQmdKa1NFSTBJQ3pVQUlBQWdBQkRGQWlBQktBSUFJQUlvQWdBZ0F5QUVLQUlBSUFVb0FnQVE4eDRpQVJBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FCQ3kwQUlBQkJBRG9BZUNBQVFRQTZBQUFnQVMwQWVBUkFJQUFnQVJDNER3c2dBQ0FCS1FPQUFUY0RnQUVnQUFzWkFDQUFMUUI0QkVBZ0FFRUlhaENjQkNBQVFRQTZBSGdMQzVvQkFnTi9BWDRnQVNBQUtBTG9BMHNFUUNBQUtBTGdBeUVEUVFRaEFpQUFJUVFnQVVFRVR3UkFRWDhnQWExQytBQitJZ1duSUFWQ0lJaW5HeEFWSVFRZ0FTRUNDeUFBSUFRMkF1QURJQUFnQWpZQzZBTkJBQ0VCQTBBZ0FDZ0M1QU1nQVUwRVFDQUFJQU1RTmdVZ0FVSDRBR3dpQWlBQUtBTGdBMm9nQWlBRGFpSUNFS1lMR2lBQ1FRaHFFSndFSUFGQkFXb2hBUXdCQ3dzTEN6VUJBbjhqQUVHUUFXc2lBaVFBSUFKQkNHb2dBQkRxR2lFRElBQWdBUkM3RHlBQklBTVF1dzhnQXhDSkNTQUNRWkFCYWlRQUN4d0FJQUFnQVNnQ0FDZ0NBRFlDQUNBQVFRaHFJQUVvQWdRUXZ3c0x2Z2dCQ0g4akFFR3dBbXNpQnlRQUlBRW9BclFHSUFFb0FzQUdJZ1JCbGdGc1FaWUJha0hrQUc1SkJFQWpBRUdBQkdzaUJpUUFRUVlnQkVFQmRFRUNha0dXQVd4QjVBQnVJZ1FnQkVFR1RSc2lDU0FCS0FLMEJrc0VRQ0FHUW9DQWdJREFBRGNDOUFNZ0JpQUdRUkJxSWdRMkF2QURJQVFnQVNnQ3dBWVE3Qm9nQVNnQ3NBWWlCQ0FCS0FLMEJrR0lBV3hxSVFvRFFBSkFJQVFnQ2tZRVFDQUJFUGthSUFFZ0NSQzhEeUFHS0FMd0F5SUVJQVlvQXZRRFFmZ0FiR29oQlF3QkN5QUVMUUI0QkVBZ0JrRVFhaUVGSUFRdEFIaEZCRUFRYndBTElBUWhDeUFGS0FMa0F5SUlJQVVvQXVnRFR3UkFJQVVnQlNnQzZBTWlDRUVCZEVFQ0lBZ2JFT3dhSUFVb0F1UURJUWdMSUFVZ0NFRUJhallDNUFNZ0JTZ0M0QU1nQ0VINEFHeHFJQXNRcGdzYUN5QUVRWWdCYWlFRURBRUxDd05BSUFRZ0JVY0VRQ0FHUVFocUlBRWdCQ0FFUVFocUVPOGFJQVJCK0FCcUlRUU1BUXNMSUFaQkVHb2hCRUVBSVFVRFFDQUVLQUxrQXlBRlRRUkFJQVJCQURZQzVBTUZJQVFvQXVBRElBVkIrQUJzYWtFSWFoQ2NCQ0FGUVFGcUlRVU1BUXNMSUFRZ0JDZ0M0QU1RTmdzZ0JrR0FCR29rQUFzZ0IwR29BbW9nQVNBQ0VMQVNJQWNnQXpZQ3BBSWdCeUFDTmdLZ0FpQUJLQUswQmlJRlFRRnJJUWdnQWlnQ0FDRUpJQUVvQXJBR0lRUWdCeWdDckFJaENpQUhLQUtvQWlFRFFRQWhBZ0pBQTBBZ0FpQUZSd1JBSUFRZ0EwR0lBV3hxSWdZdEFIaEZCRUFnQjBFSWFpSUZJQWRCb0FKcUVPNGFJQVlRNnhvZ0JpQUZFTGdQSUFkQkVHb1FuQVFnQnlnQ3JBSWhCU0FFSUFOQmlBRnNhaUlESUFJMkFvUUJJQU1nQlRZQ2dBRWdBU0FCS0FMQUJrRUJhallDd0FZZ0FTQUJLQUxFQmtFQmFqWUN4QVlnQUNBR1FRaHFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBWW9Bb0FCSUFwSERRQWdDU0FHS0FJQVJ3MEFJQUJCQWpZQ0FDQUFJQVpCQ0dvMkFnUU1Bd3NnQWlBR0tBS0VBVXNFUUNBSFFhZ0JhaUlFSUFkQm9BSnFFTzRhSUFkQkNHb2dCQkNtQ3lJRVFRRTZBSGdnQnlnQ3JBSWhCU0FFSUFJMkFvUUJJQVFnQlRZQ2dBRWdCMEd3QVdvUW5BUWdCQ0FHRU8wYUlBUWdCQ2dDaEFGQkFXbzJBb1FCSUFOQkFXb2dBU2dDdEFad0lRSkJBQ0VESUFFb0FyUUdJZ2hCQVdzaENRSkFBMEFnQXlBSVJnMEJJQUVvQXJBR0lBSkJpQUZzYWlJRkxRQjRCRUFnQkNBRUtBS0VBU0lLSUFVb0FvUUJTd1IvSUFVZ0JCRHRHaUFFS0FLRUFRVWdDZ3RCQVdvMkFvUUJJQUpCQVdwQkFDQUNJQWxIR3lFQ0lBTkJBV29oQXd3QkN3c2dCU0FFRUxzUEN5QUJJQUVvQXNBR1FRRnFOZ0xBQmlBQklBRW9Bc1FHUVFGcU5nTEVCaUFBSUFaQkNHbzJBZ1FnQUVFQU5nSUFJQVFRaVFrTUF3VWdBMEVCYWtFQUlBTWdDRWNiSVFNZ0FrRUJhaUVDREFJTEFBc0xJQWRCQ0dwQmhyVURRZXNEUVE0Z0IwR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCMEd3QW1va0FBdjZCUUVIZnlNQVFkQUJheUlHSkFBZ0FTZ0NsQVFnQVNnQ25BUWlCRUdXQVd4QmxnRnFRZVFBYmtrRVFDTUFRYUFDYXlJRkpBQkJEQ0FFUVFGMFFRSnFRWllCYkVIa0FHNGlCQ0FFUVF4Tkd5SUhJQUVvQXBRRVN3UkFJQVZDZ0lDQWdJQUJOd0tVQWlBRklBVkJFR29pQkRZQ2tBSWdCQ0FCS0FLY0JCQ3FDeUFCS0FLUUJDSUVJQUVvQXBRRVFTeHNhaUVJQTBBQ1FDQUVJQWhHQkVBZ0FSQ3dDeUFCSUFjUWhna2dCU2dDa0FJaUJDQUZLQUtVQWtFRmRHb2hCd3dCQ3lBRUxRQWdCRUFnQlVFUWFpQUVFT0FHRU1FUEN5QUVRU3hxSVFRTUFRc0xBMEFnQkNBSFJ3UkFJQVZCQ0dvZ0FTQUVJQVJCQkdvUThCb2dCRUVnYWlFRURBRUxDeUFGUVJCcUVNQVBDeUFGUWFBQ2FpUUFDeUFHUWNnQmFpQUJJQUlRd2c4Z0JpQUROZ0xFQVNBR0lBSTJBc0FCSUFFb0FwUUVJZ2RCQVdzaENDQUNLQUlBSVFrZ0FTZ0NrQVFoQlNBR0tBTE1BU0VLSUFZb0FzZ0JJUU5CQUNFQ0FrQURRQ0FDSUFkSEJFQWdCU0FEUVN4c2FpSUVMUUFnUlFSQUlBWWdCa0hBQVdvUW1BVWdCQ0FHRUswTElBWW9Bc3dCSVFjZ0JTQURRU3hzYWlJRElBSTJBaWdnQXlBSE5nSWtJQUVnQVNnQ25BUkJBV28yQXB3RUlBRWdBU2dDb0FSQkFXbzJBcUFFSUFBZ0JFRUVhallDQkNBQVFRQTJBZ0FNQXdzQ1FDQUVLQUlrSUFwSERRQWdDU0FFS0FJQVJ3MEFJQUJCQWpZQ0FDQUFJQVJCQkdvMkFnUU1Bd3NnQWlBRUtBSW9Td1JBSUFaQm9BRnFJZ1VnQmtIQUFXb1FtQVVnQmlBRkVLd0xJUVVnQmlnQ3pBRWhCeUFGSUFJMkFpZ2dCU0FITmdJa0lBVWdCQkNFQ1NBRklBVW9BaWhCQVdvMkFpZ2dBU0FEUVFGcUlBRW9BcFFFY0NBRkVLc0xJQUVnQVNnQ25BUkJBV28yQXB3RUlBRWdBU2dDb0FSQkFXbzJBcUFFSUFBZ0JFRUVhallDQkNBQVFRQTJBZ0FnQlJDcUFnd0RCU0FEUVFGcVFRQWdBeUFJUnhzaEF5QUNRUUZxSVFJTUFnc0FDd3NnQmtHR3RRTkI2d05CRGlBR1FhQUJhaEFkSWdFUUZ5SUNRUmhxUVpZMUVBNGFJQUlRR0NBQVFnQTNBZ0FnQVJBZUN5QUdRZEFCYWlRQUMrOEJBUVovSXdCQjBBQnJJZ0lrQUNBQ0lBRTJBa3dnQUNnQ0FDSUhLQUw0QWlJRUVCd2dBa0VJYWlJR0lBQW9BZ1FvQWdBb0FnZ29BaVJCSkdvUVV5QUNRUmhxSWdVZ0JrSDZ5d01RTFNBQ0lBSW9BaHdnQWkwQUl5SURJQU5CR0hSQkdIVkJBRWdpQXhzMkFpd2dBaUFDS0FJWUlBVWdBeHMyQWlnZ0FpQUNLUU1vTndNQUlBSkJNR29pQXlBRVFZZ0NhaUFDRUo4RUlBVVFEeG9nQmhBUEdpQUhLQUw0QWlFRUlBSWdCMEg0QW1vZ0FSQ1hBVFlDR0NBQ0lBUWdCQ0FESUFVUXB3c1F6d28yQWdnZ0FDZ0NDQ0FHRUNRZ0JTQUFLQUlNSUFKQnpBQnFJQU1ROEJvZ0FrSFFBR29rQUFzVEFDQUFSUVJBUVFBUEN5QUFLQUlFRUtzSkM5QUVBUU4vSXdCQjBBRnJJZ1FrQUNBRUlBSTJBc3dCSUFBb0FnUW9BZ0FnQWhCWFFRRkJBVUhTdWdoQjBLY0RRYzRERUVzZ0FDZ0NBQ2dDQ0NBREVGZEJBVUVCUVpxZUNFSFFwd05CendNUVN3SkFJQUVvQWlBaUFpQUNJQUVvQWlSQkFuUnFJQVJCekFGcUVKb0ZJQUVvQWlBZ0FTZ0NKRUVDZEdwR0JFQWdCRUVvYWtIUXB3TkIwUU5CQVNBQUVNd0RFQmNpQUVFWWFrR2E2d01RRGhvZ0FCQVlEQUVMSUFRZ0FUWUNCQ0FFUVFocUlnRWdBRUhJSUdvZ0JFRUVhaERVRHlBQkVGcEIyQUpxSVFJakFFR0FBV3NpQUNRQUlBQkJDR29pQVVFQVFmQUFFSGthSUFCQkJEWUNjQ0FBSUFFMkFtZ2dBRUg0QUdvZ0FpQUVRY3dCYWlBQkVPOGFJQUVRbkFRZ0FDZ0NmQ0VGSUFSQkdHb2lBU0FDTmdJQUlBUW9Bc3dCSVFZZ0FTQUZOZ0lJSUFFZ0JqWUNCQ0FCSUFJb0FzUUdOZ0lNSUFCQmdBRnFKQUFqQUVHd0FXc2lBaVFBSUFFUXJBRWlBRVVFUUNBQ1FkaXZBMEhOQUVFT0lBSkJvQUZxRUIwaUFSQVhJZ1ZCR0dwQjdha0lFQTRhSUFVUUdDQUJFQjRMSUFKQnNBRnFKQUFnQkNBRE5nSXNJQVJCck1NU05nSW9JQVFnQkVFb2FpSUROZ0k0SUFBb0FtUWlBaUFBS0FKb1R3UkFJQUFvQW1naUFVRUJkRUVDSUFFYklnRWdBQ2dDYUVzRVFDQUFLQUpnSVFJZ0FDQUJFSjRiUVFBaEFRTkFJQUFvQW1RZ0FVMEVRQ0FBSUFJUU5nVWdBVUVZYkNJRklBQW9BbUJxSUFJZ0JXb2lCUkRyQlJvZ0JSQVdJQUZCQVdvaEFRd0JDd3NMSUFBb0FtUWhBZ3NnQUNBQ1FRRnFOZ0prSUFBb0FtQWdBa0VZYkdvZ0F4RHJCUm9nQXhBV0N5QUVRZEFCYWlRQUM0OEVBUWgvSXdCQkVHc2lCQ1FBSUFRZ0FEWUNEQUpBSUFCRkRRQWdCQ0FBS0FJRU5nSUFJQVFnQkVFTWFqWUNCQ0FFS0FJQUlnbEJ1UElQUmdSQUlBUW9BZ1FvQWdBaEJpTUFRVUJxSWdNa0FBSkFJQVlvQWlRb0FnUkI0UGtQUncwQUlBRW9BZ0FpQlNnQy9BSWlBQkN2QVNBRElBQkIzQUZxSUFZb0FpUVFvd2NpQURZQ1BDQUFLQUlNS0FJRVFkaXNFa2NOQUNBRlFmZ0NhaUVJSUFOQ2dJQ0FnSUFCTndJMElBTWdBMEVRYWlJSE5nSXdJQUFvQWdnb0Fpd2hBQ0FESUFVMkFnQWdBeUFITmdJSUlBTWdBMEU4YWpZQ0JDQURJQUVvQWdRMkFnd0NRQ0FBUlNBQUtBSUVJZ0ZCd1A4UlIzSkZCRUFnQUNnQ0pDQURFS2dMSUFBb0FpZ1E4aG9OQVNBRElBQW9BaWdROFJvTUFRc2dBRVVnQVVIQWdCSkhja1VFUUNBQUtBSWtJQU1RcUFzTUFRc2dBRVVnQVVHQWdSSkhjZzBBSUFBb0FpZ2dBeENvQ3dzQ1FDQURLQUkwUlEwQUlBVW9BdndDSWdBUXJ3RWdBRUhjQVdvZ0JoRGhBaUlBRVAwYklRVURRQ0FGSUFBaUFTZ0NEQ0lBUncwQUN5QURLQUl3SWdBZ0F5Z0NORUVDZEdvaEJ3TkFJQUFnQjBZTkFTQUFLQUlBSVFvZ0NDQUZFTllMUVNScUlBRW9BZ2dnQ2hEekdpQUFRUVJxSVFBTUFBc0FDeUFJSUFZUW9Cc2dBMEVRYWhBakN5QURRVUJySkFBTElBbEJ1UElQUmcwQUlBUW9BZ0JCZ0lFU1J3MEFJQVFvQWdRb0FnQW9BaVFOQUNBQ0tBSUFRUUU2QUFBTElBUkJFR29rQUFzS0FDQUFFTDBQUVFCSEM1b0JBUVYvSXdCQkVHc2lCaVFBSUFBUUhDQUFJQUFvQWd4QkFXb2lCVFlDRENBR0lBVTJBZ2dqQUVFUWF5SUZKQUFnQUVHTUFXb2lCeEMzQkNFSUlBTW9BZ0FoQXlBQ0tBSUFJUUlnQmlnQ0NDRUpJQUFvQWdnaEFDQUZJQVFwQWdBM0F3Z2dCeUFJSUFBZ0NTQUJJQUlnQXlBRlFRaHFFT3NSSWdBUUtDQUhJQWNvQWhoQkFXbzJBaGdnQlVFUWFpUUFJQVpCRUdva0FDQUFDN0FCQVFWL0l3QkJFR3NpQnlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQmpZQ0RDQUhJQVkyQWdnakFFRVFheUlHSkFBZ0FFR01BV29pQ0JDM0JDRUpJQVFvQWdBaEJDQURLQUlBSVFNZ0FpZ0NBQ0VDSUFjb0FnZ2hDaUFBS0FJSUlRQWdCaUFGUVJCcU5nSUlJQVlnQlNnQ0VDQUZSem9BRENBSUlBa2dBQ0FLSUFFZ0FpQURJQVFnQmtFSWFoQ0dIeUlBRUNnZ0NDQUlLQUlZUVFGcU5nSVlJQVpCRUdva0FDQUhRUkJxSkFBZ0FBdGtBUUovSXdCQkVHc2lCQ1FBSUFCQ0FEY0NBQ0FBUW9DQWdJREFBRGNDSENBQUlBQkJDR29pQlRZQ0dDQUFJQUVvQWdBMkFnQWdBQ0FDS0FJQU5nSUVJQVJCQURvQURDQUVJQU5CQ0dvMkFnZ2dCU0FFUVFocUVJTUpJQVJCRUdva0FDQUFDeVVBSUFBUXl3OGdBRUVHRUx3UElBQkJBRFlDd0FZZ0FDQUFLQUxFQmtFQmFqWUN4QVlMR1FBZ0FDQUJLQUlBTmdJQUlBQkJCR29nQVVFRWFoRGZCQXRaQVFKL0l3QkJvQUZySWdJa0FDQUFLQUlBSWdGQkJHb1FIQ0FDUVllTUJVSFBBRUVNSUFGQnpBSnFFQmNpQVVFWWFrRzJrd3dRRGhvZ0FTQUFLQUlFS0FJQUtBSUVRUVJxRUpvQkdpQUJFQmdnQWtHZ0FXb2tBQXY2QlFFSGZ5TUFRZEFCYXlJR0pBQWdBU2dDbEFRZ0FTZ0NuQVFpQkVHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUWFBQ2F5SUZKQUJCRENBRVFRRjBRUUpxUVpZQmJFSGtBRzRpQkNBRVFReE5HeUlISUFFb0FwUUVTd1JBSUFWQ2dJQ0FnSUFCTndLVUFpQUZJQVZCRUdvaUJEWUNrQUlnQkNBQktBS2NCQkNxQ3lBQktBS1FCQ0lFSUFFb0FwUUVRU3hzYWlFSUEwQUNRQ0FFSUFoR0JFQWdBUkN3Q3lBQklBY1FoZ2tnQlNnQ2tBSWlCQ0FGS0FLVUFrRUZkR29oQnd3QkN5QUVMUUFnQkVBZ0JVRVFhaUFFRU9BR0VNRVBDeUFFUVN4cUlRUU1BUXNMQTBBZ0JDQUhSd1JBSUFWQkNHb2dBU0FFSUFSQkJHb1EvQm9nQkVFZ2FpRUVEQUVMQ3lBRlFSQnFFTUFQQ3lBRlFhQUNhaVFBQ3lBR1FjZ0JhaUFCSUFJUXdnOGdCaUFETmdMRUFTQUdJQUkyQXNBQklBRW9BcFFFSWdkQkFXc2hDQ0FDS0FJQUlRa2dBU2dDa0FRaEJTQUdLQUxNQVNFS0lBWW9Bc2dCSVFOQkFDRUNBa0FEUUNBQ0lBZEhCRUFnQlNBRFFTeHNhaUlFTFFBZ1JRUkFJQVlnQmtIQUFXb1FtQVVnQkNBR0VLMExJQVlvQXN3QklRY2dCU0FEUVN4c2FpSURJQUkyQWlnZ0F5QUhOZ0lrSUFFZ0FTZ0NuQVJCQVdvMkFwd0VJQUVnQVNnQ29BUkJBV28yQXFBRUlBQWdCRUVFYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FFS0FJa0lBcEhEUUFnQ1NBRUtBSUFSdzBBSUFCQkFqWUNBQ0FBSUFSQkJHbzJBZ1FNQXdzZ0FpQUVLQUlvU3dSQUlBWkJvQUZxSWdVZ0JrSEFBV29RbUFVZ0JpQUZFS3dMSVFVZ0JpZ0N6QUVoQnlBRklBSTJBaWdnQlNBSE5nSWtJQVVnQkJDRUNTQUZJQVVvQWloQkFXbzJBaWdnQVNBRFFRRnFJQUVvQXBRRWNDQUZFS3NMSUFFZ0FTZ0NuQVJCQVdvMkFwd0VJQUVnQVNnQ29BUkJBV28yQXFBRUlBQWdCRUVFYWpZQ0JDQUFRUUEyQWdBZ0JSQ3FBZ3dEQlNBRFFRRnFRUUFnQXlBSVJ4c2hBeUFDUVFGcUlRSU1BZ3NBQ3dzZ0JrR0d0UU5CNndOQkRpQUdRYUFCYWhBZElnRVFGeUlDUVJocVFaWTFFQTRhSUFJUUdDQUFRZ0EzQWdBZ0FSQWVDeUFHUWRBQmFpUUFDNThMQVJaL0lBQW9BZ2doQWlBQUtBSUVJUUFqQUVId0FXc2lBU1FBSUFFZ0FEWUM3QUVnQWlnQ0FDRUhJQUVnQUNnQ0NDSUZOZ0xvQVNBQlFkZ0JhaUlHSUFVb0FpUkJKR29RVXlBSFFRUnFFQndnQVNBQktBTGNBU0FCTFFEakFTSUFJQUJCR0hSQkdIVkJBRWdpQUJzMkFyUUJJQUVnQVNnQzJBRWdCaUFBR3pZQ3NBRWdBU0FCS1FPd0FUY0RDQ0FCUWJnQmFpSUFJQWRCakFKcUlBRkJDR29RbndRZ0FVSGdBR29nQWlnQ0JDQUJRZXdCYWlBQUVQd2FJQUVnQlNnQ0lEWUNxQUVnQVNBRktRSVlOd09nQVNBQklBVXBBaEEzQTVnQklBZEIrQUpxSVFBZ0FTQUZLQUlvQkg4Z0FDQUZRU2hxRU9JRUJVRUFDellDa0FFZ0FTQUFJQVVvQWl3UWx3RTJBb3dCSUFGQitBQnFJZzBnQUNBRlFUQnFFUElGSUFFZ0J6WUNZQ0FCSUEwMkFuUWdBU0FCUVl3QmFpSUFOZ0p3SUFFZ0FVR1FBV29pQXpZQ2JDQUJJQUZCdUFGcUlnSTJBbWdnQVNBQlFaZ0JhaUlHTmdKa0lBRWdCellDU0NBQklBMDJBbHdnQVNBQU5nSllJQUVnQXpZQ1ZDQUJJQUkyQWxBZ0FTQUdOZ0pNSUFFZ0J6WUNNQ0FCSUEwMkFrUWdBU0FBTmdKQUlBRWdBellDUENBQklBSTJBamdnQVNBR05nSTBJQUVnQnpZQ0dDQUJJQTAyQWlnZ0FTQUROZ0lrSUFFZ0FqWUNJQ0FCSUFZMkFod2dBU0FITmdJUUlBRWdBVUhvQVdvMkFoUWdBVUhnQUdvaEF5QUJRY2dBYWlFQ0lBRkJNR29oQmlBQlFSaHFJUUFnQVVFUWFpRVFJd0JCSUdzaUJDUUFJQVFnQlRZQ0hBSi9JQVZGQkVBZ0VCRDdHa0VBREFFTElBUWdCRUVZYWpZQ0ZDQUVJQVVvQWdRMkFnd2dCQ0FFUVJ4cU5nSVFJQVFnQkVFVWFqWUNDQ0FFS0FJTUlncEIyUGdSUmdSQUlBUW9BZ2dvQWdBaEV5QURLQUlBUVFScUlSRWdBeWdDQkNFTUlBTW9BZ2doQ1NBREtBSU1JUVVnQkNnQ0VDZ0NBQ0VTSUFNb0FoQWhCeUFES0FJVUlRTWpBRUZBYWlJT0pBQWpBRUVRYXlJUEpBQWdEa0VRYWlJSVFnQTNBZ0FnQ0VJQU53SUlJQWhDZ0lDQWdNQUFOd0lrSUFnZ0NFRVFhaUlMTmdJZ0lBZ2dCU2dDQURZQ0FDQUlJQklvQWtRMkFnd2dDQ0FTS0FKSU5nSU1JQWdnQnlnQ0FEWUNEQ0FQUVFBNkFBd2dEeUFEUVFocU5nSUlJQXNnRDBFSWFoQ0RDU0FQUVJCcUpBQWdEaUFSSUFrUTh3STJBZ3dnRVNBTUlBNUJER29nQ0NBSVFRUnFJQWhCQ0dvZ0NFRU1haUFMRUtrTElRTWdDQkREQ0NBT1FVQnJKQUFnRXlBRE5nSUFDd0pBSUFwQjJQZ1JSZzBBSUFRb0Fnd2lERUhnK1E5R0JFQWdCQ2dDRUNnQ0FCb2dCQ2dDQ0NnQ0FDRVVJQUlvQWdCQkJHb2hDaUFDS0FJRUlRa2dBaWdDQ0NFRklBSW9BZ3doQnlBQ0tBSVFJUU1nQWlnQ0ZDRUNJd0JCTUdzaUN5UUFJQXRCQ0dvZ0J5QURJQUlRK0JvaEF5QUxJQW9nQlJEekFqWUNCQ0FLSUFrZ0MwRUVhaUFESUFOQkJHb2dBMEVJYWhEMERTRUNJQU1RdkFjZ0MwRXdhaVFBSUJRZ0FqWUNBQXNnREVIZytROUdEUUFnQkNnQ0RDSUpRYUQ1RVVZRVFDQUVLQUlRS0FJQUdpQUVLQUlJS0FJQUlSVWdCaWdDQUVFRWFpRU1JQVlvQWdRaEJTQUdLQUlJSVFjZ0JpZ0NEQ0VESUFZb0FoQWhBaUFHS0FJVUlRWWpBRUV3YXlJS0pBQWdDa0VJYWlBRElBSWdCaEQ0R2lFQ0lBb2dEQ0FIRVBNQ05nSUVJQXdnQlNBS1FRUnFJQUlnQWtFRWFpQUNRUWhxRVBjYUlRWWdBaEM4QnlBS1FUQnFKQUFnRlNBR05nSUFDeUFKUWFENUVVWU5BQ0FFS0FJTUlnVkJzT3NQUmdSQUlBUW9BZ2dvQWdBaEZpQUVLQUlRS0FJQUdpTUFRUkJySWdra0FDQUFLQUlJSVFjZ0FDZ0NCQ0VESUFBb0Fnd29BZ0FoQWlBQUtBSUFJUVlnQUNnQ0VDRUFJQWxCQURvQURDQUpJQUJCQ0dvMkFnZ2dCa0VFYWlBRElBY2dBaUFKUVFocUVMNFBJUUFnQ1VFUWFpUUFJQllnQURZQ0FBc2dCVUd3Nnc5R0RRQWdCQ2dDQ0NnQ0FDRUFJQkFRK3hvZ0FFRUFOZ0lBQ3lBRUtBSVVLQUlBQ3lFQUlBUkJJR29rQUNBTkVLb0JJQUZCMkFGcUVBOGFJQUZCOEFGcUpBQWdBQXNyQUNBQVFRQTZBQ0FnQUVFQU9nQUFJQUV0QUNBRVFDQUFJQUVRcndzTElBQWdBU2tDSkRjQ0pDQUFDd3dBSUFBUStSb2dBQkRPRHdzVUFDQUFRZmdDYWhEUUJpQUFRUVJxRUk0RUdnc2tBQ0FBSUFFMkFnQWdBRUg0QW1vZ0FFRUVhaENGQlNBQUtBSUFRUUVRMFFZYUlBQUxFQUFnQUMwQTFBSUVRQ0FBRUx3REN3dG5BUUovSXdCQkVHc2lCU1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lCRFlDRENBRklBUTJBZ2dnQUVHTUFXb2lCQ0FFRU1zRUlBQW9BZ2dnQlNnQ0NDQUJJQUkxQWdBZ0F5Z0NBQkRlQ2lJQUVDZ2dCQ0FFS0FJWVFRRnFOZ0lZSUFWQkVHb2tBQ0FBQ3gwQUlBQWdBU2dDQUNnQ0FEWUNBQ0FBUVFocUlBRW9BZ1FRNndVYUN4a0FJQUFnQVNnQ0FEWUNBQ0FBUVFocUlBRkJDR29RaUFrTEdBQWdBQzBBSUFSQUlBQkJDR29RRmlBQVFRQTZBQ0FMQzJJQkFuOGdBU0FBS0FLSUFrc0VRQ0FBS0FLQUFpRURJQUFnQVJEdEMwRUFJUUVEUUNBQUtBS0VBaUFCVFFSQUlBQWdBeEEyQlNBQlFRVjBJZ0lnQUNnQ2dBSnFJQUlnQTJvaUFoQ1FDUm9nQWtFSWFoQVdJQUZCQVdvaEFRd0JDd3NMQzBFQ0FuOEJma0VHSVFJZ0FDRURJQUZCQms4RVFFRi9JQUd0UW9nQmZpSUVweUFFUWlDSXB4c1FGU0VESUFFaEFnc2dBQ0FETmdLd0JpQUFJQUkyQXJnR0Mwc0JBWDhqQUVFUWF5SUNKQUFnQUNBQlJ3UkFJQUlnQVVHd0JtbzJBZ2dnQWlBQktBS3dCaUFCUnpvQURDQUFJQUpCQ0dvUWx4c0xJQUpCRUdva0FDQUFJQUVwQThBR053UEFCZ3NiQUNBQUxRRHdEd1JBSUFCQkNHb1F4d1lnQUVFQU9nRHdEd3NMb0FFQ0EzOEJmaUFCSUFCQnlEOXFLQUlBU3dSQUlBQW9Bc0EvSVFOQkJDRUNJQUFoQkNBQlFRUlBCRUJCZnlBQnJVTHdEMzRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUN3RDhnQUVISVAyb2dBallDQUVFQUlRRURRQ0FBS0FMRVB5QUJUUVJBSUFBZ0F4QTJCU0FCUWZBUGJDSUNJQUFvQXNBL2FpQUNJQU5xSWdJUXhBc2FJQUpCQ0dvUXh3WWdBVUVCYWlFQkRBRUxDd3NMTWdFQ2Z5TUFRWUFRYXlJQ0pBQWdBaUFBRU1rYklRTWdBQ0FCRU1vUElBRWdBeERLRHlBREVJOEpJQUpCZ0JCcUpBQUxIQUFnQUNBQktBSUFLQUlBTmdJQUlBQkJDR29nQVNnQ0JCREFHd3ZNQlFJSWZ3SitJd0JCd0FGcklnUWtBQ0FCS0FKa0lBRW9BbXdpQTBHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUVRCcklnVWtBRUVHSUFOQkFYUkJBbXBCbGdGc1FlUUFiaUlESUFOQkJrMGJJZ1lnQVNnQ1pFc0VRQ0FGUW9DQWdJREFBRGNDSkNBRklBVkJFR29pQXpZQ0lDQURJQUVvQW13UTFnSWdBU2dDWUNJRElBRW9BbVJCQkhScUlRY0RRQUpBSUFNZ0IwWUVRQ0FCRU9vRklBRWdCaERvQlNBRktBSWdJZ01nQlNnQ0pFRUNkR29oQmd3QkN5QURMUUFFQkVBZ0JVRVFhaUFERUw0QkVIRUxJQU5CRUdvaEF3d0JDd3NEUUNBRElBWkhCRUFnQlNBQklBTVFqaHNnQTBFRWFpRUREQUVMQ3lBRlFSQnFFRjRMSUFWQk1Hb2tBQXNnQkVHNEFXb2dBU0FDRU5ZT0lBRW9BbVFpQ1VFQmF5RUtJQUlvQWdBaEJpQUJLQUpnSVFnZ0JDZ0N2QUVoQnlBRUtBSzRBU0VGUVFBaEFnSkFBMEFnQWlBSlJ3UkFJQWdnQlVFRWRHb2lBeTBBQkVVRVFDQURRUUU2QUFRZ0F5QUdOZ0lBSUFnZ0JVRUVkR29pQXlBQ05nSU1JQU1nQnpZQ0NDQUJJQUVvQW14QkFXbzJBbXdnQVNBQktBSndRUUZxTmdKd0lBQkNBRGNDQUF3REN3SkFJQU1vQWdnZ0IwY05BQ0FHSUFNb0FnQkhEUUFnQUVJQ053SUFEQU1MSUFJZ0F5Z0NERXNFUUNBRUlBYzJBckFCSUFRZ0JqWUNxQUVnQkNBQ05nSzBBU0FFUVFFNkFLd0JJQVFnQkNrRHNBRWlDemNERUNBRUlBUXBBNmdCSWd3M0F3Z2dCQ0FES1FJSU53T3dBU0FFSUFNcEFnQTNBNmdCSUFNZ0REY0NBQ0FESUFzM0FnZ2dCQ0FFS0FLMEFVRUJhallDdEFFZ0FTQUZRUUZxSUFFb0FtUndJQVJCcUFGcUVQUUZJQUVnQVNnQ2JFRUJhallDYkNBQklBRW9BbkJCQVdvMkFuQWdBRUlBTndJQURBTUZJQVZCQVdwQkFDQUZJQXBIR3lFRklBSkJBV29oQWd3Q0N3QUxDeUFFUVFocVFZYTFBMEhyQTBFT0lBUkJxQUZxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBQkNBRGNDQUNBQkVCNExJQVJCd0FGcUpBQUwwQWdCQ0g4akFFR0FJR3NpQnlRQUlBRkJoT0FBYWlnQ0FDQUJLQUtRWUNJRVFaWUJiRUdXQVdwQjVBQnVTUVJBSXdCQjREOXJJZ1lrQUVFR0lBUkJBWFJCQW1wQmxnRnNRZVFBYmlJRUlBUkJCazBiSWdrZ0FVR0U0QUJxS0FJQVN3UkFJQVpCMUQ5cVFvQ0FnSURBQURjQ0FDQUdJQVpCRUdvaUJEWUMwRDhnQkNBQktBS1FZQkNMR3lBQktBS0FZQ0lFSUFFb0FvUmdRUXQwYWlFS0EwQUNRQ0FFSUFwR0JFQWdBUkRzSENBQklBa1E0ZzhnQmlnQzBEOGlCQ0FHS0FMVVAwSHdEMnhxSVFVTUFRc2dCQzBBOEE4RVFDQUdRUkJxSVFVZ0JDMEE4QTlGQkVBUWJ3QUxJQVFoQ3lBRlFjUS9haWdDQUNJSUlBVkJ5RDlxS0FJQVR3UkFJQVVnQlVISVAyb29BZ0FpQ0VFQmRFRUNJQWdiRUlzYklBVW9Bc1EvSVFnTElBVWdDRUVCYWpZQ3hEOGdCU2dDd0Q4Z0NFSHdEMnhxSUFzUXhBc2FDeUFFUVlBUWFpRUVEQUVMQ3dOQUlBUWdCVWNFUUNBR1FRaHFJQUVnQkNBRVFRaHFFSThiSUFSQjhBOXFJUVFNQVFzTElBWkJFR29oQkVFQUlRVURRQ0FFS0FMRVB5QUZUUVJBSUFSQkFEWUN4RDhGSUFRb0FzQS9JQVZCOEE5c2FrRUlhaERIQmlBRlFRRnFJUVVNQVFzTElBUWdCQ2dDd0Q4UU5nc2dCa0hnUDJva0FBc2dCMEg0SDJvZ0FTQUNFTklTSUFjZ0F6WUM5QjhnQnlBQ05nTHdIeUFCS0FLRVlDSUZRUUZySVFnZ0FpZ0NBQ0VKSUFFb0FvQmdJUVFnQnlnQy9COGhDaUFIS0FMNEh5RURRUUFoQWdKQUEwQWdBaUFGUndSQUlBUWdBMEVMZEdvaUJpMEE4QTlGQkVBZ0IwSHdEMm9pQlNBSFFmQWZhaENOR3lBR0VJb2JJQVlnQlJEZ0R5QUhRZmdQYWhESEJpQUhLQUw4SHlFRklBUWdBMEVMZEdvaUF5QUNOZ0w4RHlBRElBVTJBdmdQSUFFZ0FTZ0NrR0JCQVdvMkFwQmdJQUVnQVNnQ2xHQkJBV28yQXBSZ0lBQWdCa0VJYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FHS0FMNER5QUtSdzBBSUFrZ0JpZ0NBRWNOQUNBQVFRSTJBZ0FnQUNBR1FRaHFOZ0lFREFNTElBSWdCaWdDL0E5TEJFQWdCeUFIUWZBZmFoQ05HeUFIUWZBUGFpQUhFTVFMSWdSQkFUb0E4QThnQnlnQy9COGhCU0FFSUFJMkF2d1BJQVFnQlRZQytBOGdCMEVJYWhESEJpQUVJQVlRakJzZ0JDQUVLQUw4RDBFQmFqWUMvQThnQTBFQmFpQUJLQUtFWUhBaEFrRUFJUU1nQVVHRTRBQnFLQUlBSWdoQkFXc2hDUUpBQTBBZ0F5QUlSZzBCSUFFb0FvQmdJQUpCQzNScUlnVXRBUEFQQkVBZ0JDQUVLQUw4RHlJS0lBVW9BdndQU3dSL0lBVWdCQkNNR3lBRUtBTDhEd1VnQ2d0QkFXbzJBdndQSUFKQkFXcEJBQ0FDSUFsSEd5RUNJQU5CQVdvaEF3d0JDd3NnQlNBRUVNb1BDeUFCSUFFb0FwQmdRUUZxTmdLUVlDQUJJQUVvQXBSZ1FRRnFOZ0tVWUNBQUlBWkJDR28yQWdRZ0FFRUFOZ0lBSUFRUWp3a01Bd1VnQTBFQmFrRUFJQU1nQ0VjYklRTWdBa0VCYWlFQ0RBSUxBQXNMSUFkQjhBOXFRWWExQTBIckEwRU9JQWNRSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCMEdBSUdva0FBc21BQ0FBUWdBM0E4QUdJQUJDZ0lDQWdPQUFOd0swQmlBQUlBQTJBckFHSUFCQkJoQzhEd3V0QVFFR2Z5TUFRUkJySWdVa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdRMkFnd2dCU0FFTmdJSUl3QkJFR3NpQkNRQUlBQkJqQUZxSWdZUXN3VWhCeUFGS0FJSUlRZ2dBQ2dDQ0NFQUlBUWdBMEVJYWpZQ0NDQURLQUlJSVFrZ0JFRUFPZ0FFSUFSQndKd2dOZ0lBSUFRZ0F5QUpSem9BRENBR0lBY2dBQ0FJSUFFZ0FpQUVRUWhxSUFRUXdRY2lBQkFvSUFZZ0JpZ0NHRUVCYWpZQ0dDQUVRUkJxSkFBZ0JVRVFhaVFBSUFBTHBnRUJBWDhqQUVIUUFHc2lCQ1FBSUFSQlFHc2dBeERnQndKL0lBUW9Ba2hGQkVBZ0JDQUNOZ0lZSUFRZ0FoRGNBVFlDSENBRUlBUXBBeGczQXdBZ0JFRWdhaUlDSUFBZ0JCRGhBU0FBSUFFZ0FoRE9BZ3dCQ3lBRUlBSTJBaEFnQkNBQ0VOd0JOZ0lVSUFRZ0JDa0RFRGNEQ0NBRVFTQnFJZ0lnQUNBRVFRaHFFT0VCSUFBZ0FTQUNJQVJCUUdzUXN3c0xJUUFnQkVGQWF4Q29BU0FFUWRBQWFpUUFJQUFMTUFBZ0FDQUFFTDhCSUFFb0FnQWdBaWdDQUNBRElBUW9BZ0FROFI0aUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkMrQUNBUU4vSUFBb0FnQkIyQUpxSVFVakFFR3dBV3NpQkNRQUlBUWdBVFlDcUFFQ2Z5QUNRUUpyUVFKTElBTkJBbXRCQWt0eVJRUkFJQU1nQWtFRGJHcEJBblJCb01BU2FpRUJJQUFvQWdBaUFpRUdJd0JCMEFCcklnQWtBQ0FBUVVCcklBUkJxQUZxRU9BSEFuOGdBQ2dDU0VVRVFDQUFJQUVvQWdBaUFUWUNHQ0FBSUFFUTNBRTJBaHdnQUNBQUtRTVlOd01BSUFCQklHb2lBU0FDSUFBUTRRRWdBaUFGSUFFUXpnSU1BUXNnQUNBQktBSUFJZ0UyQWhBZ0FDQUJFTndCTmdJVUlBQWdBQ2tERURjRENDQUFRU0JxSWdFZ0FpQUFRUWhxRU9FQklBSWdCU0FCSUFCQlFHc1Fzd3NMSVFFZ0FFRkFheENvQVNBQVFkQUFhaVFBSUFZZ0FSQ0JBd3dCQ3lBQUtBSUFJZ0FRSENBRVFRaHFRY0N1QTBITUJrRUdJQUJCeUFKcUVCY2lBVUVZYWlJQVFmRFlDUkFPR2lBQUlBSVFJUm9nQUVIYUp4QU9HaUFBSUFNUUlSb2dBUkFZUVFBTElRQWdCRUd3QVdva0FDQUFDNjBCQVFOL0lBQW9BZ0JCMkFKcUlRSWpBRUdnQVdzaUF5UUFBbjhDUUFKQUFrQWdBUTRDQUFFQ0N5QUFJQUpCbk9ZQkVNa0dEQUlMSUFBZ0FrR0J3d0lReVFZTUFRc2dBQ2dDQUNJQUVCd2dBMEhBcmdOQmlncEJCaUFBUWNnQ2FoQVhJZ0JCR0dwQmhNd0tFQTRhSUFCQkVHb2hCRUdjNWdFaEFnSkFBa0FDUUNBQkRnSUJBQUlMUVpIbUFTRUNDeUFFUVFocUlBSVFEaG9MSUFBUUdFRUFDeUVBSUFOQm9BRnFKQUFnQUF2dkFRRUNmeUFBS0FJQVFkZ0NhaUVGSXdCQnNBRnJJZ1FrQUNBRUlBTTJBcWdCSUFRZ0FqWUNyQUVDZndKQUFrQUNRQUpBQWtBZ0FRNEVBQUVDQXdRTElBQWdCVUdmaGdVZ0JFR3NBV29nQkVHb0FXb1FzZ3NNQkFzZ0FDQUZRY3VGQlNBRVFhd0JhaUFFUWFnQmFoQ3lDd3dEQ3lBQUlBVkI0QmtnQkVHc0FXb2dCRUdvQVdvUXNnc01BZ3NnQUNBRlFaeUZCU0FFUWF3QmFpQUVRYWdCYWhDeUN3d0JDeUFBS0FJQUlnQVFIQ0FFUVFocVFjQ3VBMEdVQzBFR0lBQkJ5QUpxRUJjaUFFRVlha0hiNmdzUURob2dBRUVRYWlBQkVKNEVHaUFBRUJoQkFBc2hBQ0FFUWJBQmFpUUFJQUFMaHdJQkJIOGdBUzBBQkFSQUlBQVF6ZzhnQUNBQktBSUFJZ0lwQWdBM0FyQUdJQUFnQWlnQ0NEWUN1QVlnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBRHdzQ1FDQUFLQUs0QmlBQktBSUFJZ01vQWdSSkJFQWdBQkRPRHlBQUlBTW9BZ1FRaUJzTUFRc2dBQkRMRHdzZ0FDQURLQUlFSWdFMkFyUUdBMEFnQVNBRVN3UkFJQVJCaUFGc0lnRWdBQ2dDc0FacUlRSWdBeWdDQUNBQmFpRUJJQUpCQURvQWVDQUNRUUE2QUFBZ0FTMEFlQVJBSUFJZ0FTZ0NBRFlDQUNBQ1FRaHFJZ1ZDZ0lDQWdNQUFOd0prSUFVZ0JUWUNZQ0FGSUFGQjZBQnFFS2diSUFKQkFUb0FlQXNnQWlBQktRT0FBVGNEZ0FFZ0JFRUJhaUVFSUFBb0FyUUdJUUVNQVFzTEMvd0JBUUovSUFBb0FnQkIyQUpxSVFRakFFR3dBV3NpQXlRQUlBTWdBallDcUFFQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBSUFFT0JnQUJBd0lFQlFZTElBQWdCRUdVaGdVZ0EwR29BV29RM0FRTUJnc2dBQ0FFUWNDRkJTQURRYWdCYWhEY0JBd0ZDeUFBSUFSQmtZVUZJQU5CcUFGcUVOd0VEQVFMSUFBZ0JFSFBHU0FEUWFnQmFoRGNCQXdEQ3lBQUlBUkJqdDBFSUFOQnFBRnFFTndFREFJTElBQWdCRUdsR1NBRFFhZ0JhaERjQkF3QkN5QUFLQUlBSWdBUUhDQURRUWhxUWNDdUEwSGFDa0VHSUFCQnlBSnFFQmNpQUVFWWFrRzI2Z3NRRGhvZ0FFRVFhaUFCRUo0RUdpQUFFQmhCQUFzaEFDQURRYkFCYWlRQUlBQUxod0VCQW44Z0FDZ0NBRUhZQW1vaEJDTUFRYkFCYXlJREpBQWdBeUFDTmdLb0FRSi9JQUZCQVVZRVFDQUFJQVJCL0lVRklBTkJxQUZxRU53RURBRUxJQUFvQWdBaUFCQWNJQU5CQ0dwQndLNERRZkFLUVFZZ0FFSElBbW9RRnlJQVFSaHFRWXpxQ3hBT0dpQUFRUkJxSUFFUW5nUWFJQUFRR0VFQUN5RUFJQU5Cc0FGcUpBQWdBQXQyQVFKL0lBQW9BZ0JCMkFKcUlRTWpBRUdnQVdzaUFpUUFBbjhnQVVFQlJnUkFJQUFnQTBIZWhRVVF5UVlNQVFzZ0FDZ0NBQ0lBRUJ3Z0FrSEFyZ05CdHdwQkJpQUFRY2dDYWhBWElnQkJHR3BCM09rTEVBNGFJQUJCRUdvZ0FSQ2VCQm9nQUJBWVFRQUxJUUFnQWtHZ0FXb2tBQ0FBQzY4QkFRSi9JQUFvQWdCQjJBSnFJUUlqQUVHZ0FXc2lBeVFBQW44Q1FBSkFBa0FDUUFKQUlBRkJBV3NPQlFBQkJBSURCQXNnQUNBQ1FhK0ZCUkRKQmd3RUN5QUFJQUpCdUJrUXlRWU1Bd3NnQUNBQ1FmdmNCQkRKQmd3Q0N5QUFJQUpCakJrUXlRWU1BUXNnQUNnQ0FDSUFFQndnQTBIQXJnTkJwQXBCQmlBQVFjZ0NhaEFYSWdCQkdHcEJ1ZWtMRUE0YUlBQkJFR29nQVJDZUJCb2dBQkFZUVFBTElRQWdBMEdnQVdva0FDQUFDejBCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lJSUFBb0FnQWlBQ0FBSUFCQjJBSnFRWXFKQlNBQ1FRaHFFSkliRUlFRElRQWdBa0VRYWlRQUlBQUwvUUVCQW44Z0FDZ0NBRUhZQW1vaEF5TUFRYUFCYXlJRUpBQUNmd0pBQWtBQ1FBSkFJQUpCQW1zT0F3QUJBZ01MSXdCQkVHc2lBaVFBSUFJZ0FUWUNDQ0FBSUFOQmova0dJQUpCQ0dvUTNBUWhBQ0FDUVJCcUpBQWdBQXdEQ3lNQVFSQnJJZ0lrQUNBQ0lBRTJBZ2dnQUNBRFFlTDJCaUFDUVFocUVOd0VJUUFnQWtFUWFpUUFJQUFNQWdzakFFRVFheUlDSkFBZ0FpQUJOZ0lJSUFBZ0EwSDU4UVlnQWtFSWFoRGNCQ0VBSUFKQkVHb2tBQ0FBREFFTElBQW9BZ0FpQUJBY0lBUkJ3SzREUWI4RlFRWWdBRUhJQW1vUUZ5SUFRUmhxSWdGQnJxZ0tFQTRhSUFFZ0FoQWhHaUFBRUJoQkFBc2hBQ0FFUWFBQmFpUUFJQUFMUGdJQ2Z3RitRUVFoQWlBQUlRTWdBVUVFVHdSQVFYOGdBYTFDR0g0aUJLY2dCRUlnaUtjYkVCVWhBeUFCSVFJTElBQWdBellDWUNBQUlBSTJBbWdMSmdFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFBZ0FSQ09HeUFDS0FJSUdpQUNRUkJxSkFBTDFRZ0JDbjhqQUVHZ0FXc2lDU1FBSUFBb0FnUWlBaEN2QVFKQUlBSkIzQUZxSUFFUTRRSWlBaWdDREJEZ0N5SUVCRUFnQkJEV0N5SUVRU1JxSVFNakFFR3dBV3NpQWlRQUlBSWdBVFlDckFFZ0FDZ0NCQ2dDQUNBQkVGZEJBVUVCUWRXZUNFSFFwd05CakFNUVN3SkFJQVFvQWtRaUFTQUJJQVFvQWtoQkFuUnFJQUpCckFGcUVKb0ZJQVFvQWtRZ0JDZ0NTRUVDZEdwR0JFQWdBa0VJYWtIUXB3TkJqZ05CQVNBQUVNd0RFQmNpQUVFWWFrR1g4d0FRRGhvZ0FCQVlEQUVMSUFJZ0F6WUNCQ0FDUVFocUlnRWdBRUhJSUdvZ0FrRUVhaERVRHlBQkVGb2dBa0dzQVdvUW54c0xJQUpCc0FGcUpBQU1BUXNDUUNBQ0tBSU1JZ1JGRFFBZ0JDZ0NCRUdRa2hKSERRQWpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQW9BZ1FvQWdBZ0FSQlhRUUZCQVVHcG53aEIwS2NEUWVzQ0VFc2dBQ2dDQUNnQ0NFRUFFRmRCQVVFQlFZbTJDRUhRcHdOQjdBSVFTeUFDUVFBMkFnZ2dBa0VNYWlFRUl3QkIwQUZySWdFa0FDQUFRUWhxSWdBb0FzUUVJQUFvQXRBRUlnTkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0FDQURRUUYwUVFKcUVKb0VDeUFCUWNnQmFpQUFJQVFRNndNZ0FDZ0N4QVFpQjBFQmF5RUtJQVFvQWdBaEF5QUFLQUxBQkNFSUlBRW9Bc3dCSVFzZ0FTZ0N5QUVoQlFKQUEwQWdCaUFIUndSQUlBZ2dCVUV3YkdvaUJDMEFJRVVFUUNBQklBTTJBZ2dnQWlnQ0NDRURJQUVnQVVFUWFpSUhOZ0lnSUFFZ0F6WUNGQ0FCUWV6QUVqWUNFQ0FFSUFGQkNHb1FtUVFnQnhBV0lBRW9Bc3dCSVFNZ0NDQUZRVEJzYWlJRklBWTJBaXdnQlNBRE5nSW9JQUFnQUNnQzBBUkJBV28yQXRBRUlBQWdBQ2dDMUFSQkFXbzJBdFFFSUFJZ0JFRUlhallDQkNBQ1FRQTJBZ0FNQXdzQ1FDQUVLQUlvSUF0SERRQWdBeUFFS0FJQVJ3MEFJQUVnQXpZQ0NDQUNLQUlJSVFNZ0FTQUJRUkJxSWdVMkFpQWdBU0FETmdJVUlBRkI3TUFTTmdJUUlBUWdBVUVJYWhEYkJDQUZFQllnQUNBQUtBTFVCRUVCYWpZQzFBUWdBaUFFUVFocU5nSUVJQUpCQVRZQ0FBd0RDeUFHSUFRb0FpeExCRUFnQVNBRE5nS29BU0FDS0FJSUlRTWdBU0FCUWJBQmFpSUlOZ0xBQVNBQklBTTJBclFCSUFGQjdNQVNOZ0t3QVNBQlFRaHFJQUZCcUFGcUVKY0VJUU1nQVNnQ3pBRWhCeUFESUFZMkFpd2dBeUFITmdJb0lBZ1FGaUFESUFRUThBTWdBeUFES0FJc1FRRnFOZ0lzSUFBZ0JVRUJhaUFBS0FMRUJIQWdBeENXQkNBQUlBQW9BdEFFUVFGcU5nTFFCQ0FBSUFBb0F0UUVRUUZxTmdMVUJDQUNJQVJCQ0dvMkFnUWdBa0VBTmdJQUlBTVFtUU1NQXdVZ0JVRUJha0VBSUFVZ0NrY2JJUVVnQmtFQmFpRUdEQUlMQUFzTElBRkJDR3BCaHJVRFFlc0RRUTRnQVVHb0FXb1FIU0lBRUJjaUJFRVlha0dXTlJBT0dpQUVFQmdnQWtJQU53SUFJQUFRSGdzZ0FVSFFBV29rQUNBQ1FSQnFKQUFNQVFzZ0FDZ0NBQ0lBRUJ3Z0NVSFlxQVZCeVFCQkRDQUFRY2dDYWhBWElnQkJHR3BCNnJzS0VBNGFJQUFnQWlnQ0JFRUVhaENhQVJvZ0FCQVlDeUFKUWFBQmFpUUFDekFCQVg4RFFDQUFLQUprSUFGTkJFQWdBRUVBTmdKa0JTQUFLQUpnSUFGQkdHeHFFQllnQVVFQmFpRUJEQUVMQ3dzeUFRSi9JQUFvQWdnaEFRTkFJQUVFUUNBQktBSUFJUUlnQVVFTWFoQ0ZBeG9nQVJBZklBSWhBUXdCQ3dzZ0FCQ2JBd3NkQUNBQVFnQTNBZ0FnQUVHQWdJRDhBellDRUNBQVFnQTNBZ2dnQUFzaEFDQUFRUUZxSWdCQkZrc0VRRUdzNGdZUEN5QUFRUUowUWF5L0Vtb29BZ0FMSkFBZ0FFRUlhaUFCUVFaTEJIOUJyT0lHQlNBQlFRSjBRWkM2RW1vb0FnQUxFQTRhQ3c4QUlBQWdBVUg4dVJKQkJCQ01DQXNsQVFGL1FRTWhBU0FBUVFGcklnQkJBMDBFZnlBQVFRSjBRWlNBRFdvb0FnQUZRUU1MQzJzQkFuOENRQ0FBS0FKb0lBRW9BZ1JKQkVBZ0FCQ2NCQ0FBSUFFb0FnUVFuaHNNQVFzZ0FCQ2hHd3NnQUNBQktBSUVJZ0kyQW1RRFFDQUNJQU5MQkVBZ0EwRVliQ0lDSUFBb0FtQnFJQUVvQWdBZ0Ftb1EwUUVhSUFOQkFXb2hBeUFBS0FKa0lRSU1BUXNMQ3hzQUlBQkJzTFVTUWRTMUVrR1F0UkpDQUVHQWlKQ0FlQkQwQmdzTEFDQUFRZkQ4QmhBVUdnc2JBQ0FBUWNDekVrSGtzeEpCb0xNU1FnZEJnSWlRZ0hnUTlBWUxPd0VDZjBFR0lRSWdBQ0VESUFGQkJrOEVRRUYvSUFGQkJIUWdBVUgvLy8vL0FFc2JFQlVoQXlBQklRSUxJQUFnQXpZQ1lDQUFJQUkyQW1nTEJ3QWdBQkRZRHdzN0FDQUFLQUlFUWFDekVrWUVmMEVCQlNBQUVLOGJDd1IvUVFFRklBQVFzQnNFZjBFQkJTQUFFTFFEQkg4Z0FDZ0NHQkN3R3dWQkFBc0xDd3NjQVFGL0lBQVF0QU1FZnlBQUtBSVlLQUlFUWFDekVrWUZRUUFMQ3hNQUlBQkZCRUJCQUE4TElBQW9BZ1FRbHhFTFFBRUJmaUFBUlFSQVFRQVBDd0ovUVFBZ0FDZ0NCQ0lBS1FNUVFvV2tnSUNDZ0FHRElnRWdBVUlCZllOUURRQWFRUUVnQUJDQkNBMEFHaUFBRUpVUkN3dVVBUUVCZmlBQVJRUkFRUUFQQ3dKL1FRQWdBQ2dDQkNJQUtRTVFRb1hrZ0lLQ2dJa0JneUlCSUFGQ0FYMkRVQTBBR2tFQkFuOUJBQ0FBS1FNUVFvR2tnSUNBZ0FHRElnRWdBVUlCZllOUURRQWFRUUVnQUJDQkNBMEFHaUFBRUlJSUN3MEFHZ0ovUVFBZ0FDa0RFRUtFd0lDQ2dvQ0lBWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFSjhKRFFBYUlBQVFsUndMQ3dzVEFDQUFRUUZxSWdCQkIwbEJ5QUFnQUhaeEM3d0JBUU4vSUFFdEFBUUVRQ0FBRUxnTElBQWdBU2dDQUNJQ0tRSUFOd0pnSUFBZ0FpZ0NDRFlDYUNBQktBSUFJZ0JCQURZQ0NDQUFRZ0EzQWdBUEN3SkFJQUFvQW1nZ0FTZ0NBQ0lCS0FJRVNRUkFJQUFRdUFzZ0FDQUJLQUlFRUt3YkRBRUxJQUJCQURZQ1pBc2dBQ0FCS0FJRUlnTTJBbVFEUUNBQ0lBTkpCRUFnQWtFRWRDSURJQUFvQW1CcUlnUWdBU2dDQUNBRGFpSURLUUlBTndJQUlBUWdBeWtDQ0RjQ0NDQUNRUUZxSVFJZ0FDZ0NaQ0VEREFFTEN3dExBUUovQWtBZ0FFRVJTdzBBUVFFZ0FIUWlBMEdta2dweFJRUkFJQU5CeUtRQmNVVUVRRUVCSUFCMFFaREpCSEZGRFFJZ0FSQzhFQThMSUFFUXpCQVBDeUFCRU00UUlRSUxJQUlMU0FFQmZ5QUJMUUFFQkVBZ0FCQ2NCQ0FBSUFFb0FnQWlBaWtDQURjQ1lDQUFJQUlvQWdnMkFtZ2dBU2dDQUNJQVFRQTJBZ2dnQUVJQU53SUFEd3NnQUNBQktBSUFFS2diQzFnQkFYOGpBRUVRYXlJQ0pBQWdBRUtBZ0lDQTRBQTNBclFHSUFBZ0FEWUNzQVlnQWlBQlFiQUdhallDQ0NBQ0lBRW9BckFHSUFGSE9nQU1JQUFnQWtFSWFoQ1hHeUFDUVJCcUpBQWdBQ0FCS1FQQUJqY0R3QVlMRFFBZ0FDQUJRWmJuQmhEVEVnc1dBQ0FBUWJDc0VqWUNCQ0FBUWRDc0VqWUNBQ0FBQ3hRQUlBQW9BaHdpQUNBQUtBSUFLQUlVRVFBQUN6MEFJQUFRc3dSQmtyR28rZ2RxUVpPa0JuTWlBRUVDZGtHVytLbjZCM01nQVNnQ0FHb2dBSE1pQUVFQ2RrR1crS242QjNNZ0FoRDVBbW9nQUhNTERnQWdBRUVjYWhCUElBQVF5Z1FMRmdBZ0FDQUJFTW9GSUFCQkhHb2dBVUVjYWhEZUR3c1lBQ0FBSUFFUXNnZ2lBRUVjYWlBQlFSeHFFS0VFSUFBTFBRQWdBRUlBTndJWUlBQkNnSUFFTndJSUlBQkNBRGNDQUNBQVFvQ0FnSUNBQkRjQ0VDQUFRZ0EzQWlBZ0FFS0FnSUNBZ0lDQXdEODNBaWdnQUF0RkFDQUFJQUVRd1FzaUFFSDRBR29nQVVINEFHb1F2d3NnQUVIb0FXb2dBVUhvQVdvUXZ3c2dBRUhZQW1vZ0FVSFlBbW9RdHhzZ0FFR2dDV29nQVVHZ0NXb1F0eHNMQ3dBZ0FFRzYvUVlRRkJvTEd3QWdBRUd3cWhKQjFLb1NRWkNxRWtJSFFZRElrSUo0RVBRR0N3c0FJQUJCN1A0R0VCUWFDeHNBSUFCQjBLa1NRZlNwRWtHd3FSSkNCMEdCcUpDQWVCRDBCZ3NiQUNBQVFmQ29Fa0dVcVJKQjBLZ1NRZ2RCZ0l5UWdIZ1E5QVlMVWdFQmZ5TUFRUkJySWdFa0FDQUJRWUNLa0lCNU5nSU1JQUZCQVRZQ0NDQUFJQUVvQWd3Z0FTZ0NDQkNMQ1NJQVFmQ25FallDQkNBQVFiU29FallDQUNBQVFaQ29FallDQUNBQlFSQnFKQUFnQUF1bEFRRUNmeU1BUWNBQmF5SUNKQUFnQWlBQk5nSzhBU0FDUWFDbkVpQUNRYndCYWlJQkVNWUxOZ0lJSUFBZ0FpZ0NDQ0FCS0FJQUVJc0pJZ0JCa0tjU05nSUVJQUJCMUtjU05nSUFJQUJCc0tjU05nSUFJQUlvQXJ3QklnRkJCVTFCQUVFQklBRjBRVFp4RzBVRVFDQUNRUWhxUWVDd0JVRW1RUTBnQWtHb0FXb1FIU0lCRUJjaUEwRVlha0dyM1FnUURob2dBeEFZSUFFUUhnc2dBa0hBQVdva0FDQUFDNWNCQVFKL0l3QkJ3QUZySWdJa0FDQUNJQUUyQXJ3QklBSkJ3S1lTSUFKQnZBRnFJZ0VReGdzMkFnZ2dBQ0FDS0FJSUlBRW9BZ0FRaXdraUFFR3dwaEkyQWdRZ0FFSDBwaEkyQWdBZ0FFSFFwaEkyQWdBZ0FpZ0N2QUZCQVVjRVFDQUNRUWhxUWJDeEJVRWxRUTBnQWtHb0FXb1FIU0lCRUJjaUEwRVlha0dyM1FnUURob2dBeEFZSUFFUUhnc2dBa0hBQVdva0FDQUFDeThBSUFCQkFEb0E4QThnQUVFQU9nQUFJQUV0QVBBUEJFQWdBQ0FCRU9BUEN5QUFJQUVwQS9nUE53UDREeUFBQ3hzQUlBQkI4S1VTUVpTbUVrSFFwUkpDQjBHQXFKQ0FlQkQwQmd0R0FRRi9Jd0JCRUdzaUFTUUFJQUZCZ0lpUWlIZzJBZ3dnQUNBQktBSU1FTTBiSWdCQnFLTVNOZ0lFSUFCQjNLUVNOZ0lBSUFCQmdLUVNOZ0lBSUFGQkVHb2tBQ0FBQ3lzQUlBQVF1UnNpQUVHQXRCSTJBZ1FnQUVHd3BCSTJBZ0FnQUNBQk5nSUlJQUJCb0xRU05nSUFJQUFMUWdFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FDQUNLQUlNRU13YklnQkIrS0lTTmdJRUlBQkJuS1FTTmdJQUlBQkJ5S01TTmdJQUlBSkJFR29rQUNBQUMwNEJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUpDQnpjREFDQUFJQUlvQWd3Z0Fpa0RBQkNkQkNJQVFiQ2hFallDQkNBQVFmU2hFallDQUNBQVFkQ2hFallDQUNBQ1FSQnFKQUFnQUF0SEFRRi9Jd0JCRUdzaUFTUUFJQUZCNEtBU0VMTUVOZ0lNSUFBZ0FTZ0NEQkRPR3lJQVFkQ2dFallDQkNBQVFaU2hFallDQUNBQVFmQ2dFallDQUNBQlFSQnFKQUFnQUF0SEFRRi9Jd0JCRUdzaUFTUUFJQUZCZ0tBU0VMTUVOZ0lNSUFBZ0FTZ0NEQkRPR3lJQVFmQ2ZFallDQkNBQVFiU2dFallDQUNBQVFaQ2dFallDQUNBQlFSQnFKQUFnQUFzdUFRRi9JQUFnQVNnQ0FDSUNLUUlBTndJQUlBQWdBaWdDQ0RZQ0NDQUNFRlVnQUNBQktBSUVLQUlBTmdJTUN4WUFJQUF0QUJBRVFDQUFFQThhSUFCQkFEb0FFQXNMRUFBZ0FDMEFFRVVFUUJCdkFBc2dBQXQzQVFKL0lBRWdBQ2dDQ0VzRVFDQUFLQUlBSVFOQmZ5QUJRUVIwSUFGQi8vLy8vd0JMR3hBVklRSWdBQ0FCTmdJSUlBQWdBallDQUVFQUlRRURRQ0FBS0FJRUlBRk5CRUFnQXhDSUJBVWdBVUVFZENJQ0lBQW9BZ0JxSUFJZ0Eyb2lBaERNQ3hvZ0FoQVBHaUFCUVFGcUlRRU1BUXNMQ3d0MkFRVi9JQUFvQWdRaUJVRUJheUVHQWtBRFFDQURJQVZHRFFFZ0FDZ0NBQ0FCUVJ4c2FpSUVMUUFRQkVBZ0FpQUNLQUlZSWdjZ0JDZ0NHRXNFZnlBRUlBSVE1QThnQWlnQ0dBVWdCd3RCQVdvMkFoZ2dBVUVCYWtFQUlBRWdCa2NiSVFFZ0EwRUJhaUVEREFFTEN5QUVJQUlRNHc4TEN4SUFJQUFnQVJETUN5SUFRUUU2QUJBZ0FBc09BQ0FBRU5JYklBQWdBUkRwRHdzV0FDQUFJQUVvQWdBUVZDQUJLQUlFS0FJQU5nSU1DNzBHQVFsL0l3QkJJR3NpQXlRQVFRUWdBVUdXQVd4QjVBQnVJZ0VnQVVFRVRSc2lCU0FBS0FJRVN3UkFJQU5CQURZQ0dDQURRZ0EzQXhBZ0EwRVFhaUFBS0FJTUVOUWJJQUFvQWdBaUFTQUFLQUlFUVJ4c2FpRUdBMEFDUUNBQklBWkdCRUFnQUJEc0d5QUFJQVVRNnc4Z0F5Z0NFQ0lCSUFNb0FoUkJCSFJxSVFvTUFRc2dBUzBBRUFSQUlBRVEweHNoQnlBRFFSQnFJZ0lvQWdRaUJDQUNLQUlJVHdSQUlBSWdBaWdDQ0NJRVFRRjBRUUlnQkJzUTFCc2dBaWdDQkNFRUN5QUNJQVJCQVdvMkFnUWdBaWdDQUNBRVFRUjBhaUFIRU13TEdnc2dBVUVjYWlFQkRBRUxDd05BSUFFZ0NrY0VRQ01BUWNBQmF5SUNKQUFnQUNnQ0JDQUFLQUlNSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFnQUNBRVFRRjBRUUpxRU5rYkN5QUNRYmdCYWlBQUlBRVE1ZzhnQWlBQlFReHFOZ0swQVNBQ0lBRTJBckFCSUFBb0FnUWlCVUVCYXlFSUlBSW9BcmdCSVFaQkFDRUhBa0FEUUNBRklBZEhCRUFnQUNnQ0FDSUpJQVpCSEd4cUlnUXRBQkJGQkVBZ0FpQUNRYkFCYWhEUkd5QUVJQUlRMXhzZ0FoQVBHaUFDS0FLOEFTRUZJQWtnQmtFY2JHb2lCaUFITmdJWUlBWWdCVFlDRkNBQUlBQW9BZ3hCQVdvMkFnd2dBQ0FBS0FJUVFRRnFOZ0lRSUFNZ0JFRU1hallDRENBRFFRQTJBZ2dNQXdzZ0JDQUNLQUs4QVNBQkVPVVBCRUFnQTBFQ05nSUlJQU1nQkVFTWFqWUNEQXdEQ3lBSElBUW9BaGhMQkVBZ0FrR2dBV29pQ0NBQ1FiQUJhaERSR3lBQ0lBZ1ExaHNoQlNBQ0tBSzhBU0VKSUFVZ0J6WUNHQ0FGSUFrMkFoUWdDQkFQR2lBRklBUVE1QThnQlNBRktBSVlRUUZxTmdJWUlBQWdCa0VCYWlBQUtBSUVjQ0FGRU5VYklBQWdBQ2dDREVFQmFqWUNEQ0FBSUFBb0FoQkJBV28yQWhBZ0F5QUVRUXhxTmdJTUlBTkJBRFlDQ0NBRkVLd0hEQU1GSUFaQkFXcEJBQ0FHSUFoSEd5RUdJQWRCQVdvaEJ3d0NDd0FMQ3lBQ1FZYTFBMEhyQTBFT0lBSkJvQUZxRUIwaUJCQVhJZ1ZCR0dwQmxqVVFEaG9nQlJBWUlBTkNBRGNDQ0NBRUVCNExJQUpCd0FGcUpBQWdBVUVRYWlFQkRBRUxDMEVBSVFBRFFDQURLQUlVSUFCTkJFQWdBMEVBTmdJVUJTQURLQUlRSUFCQkJIUnFFQThhSUFCQkFXb2hBQXdCQ3dzZ0F5Z0NFQkNJQkFzZ0EwRWdhaVFBQ3lzQUlBQkJBRG9BT0NBQVFRQTZBQUFnQVMwQU9BUkFJQUFnQVJES0N3c2dBQ0FCS1FJOE53SThJQUFMY3dJQ2Z3RitJQUVnQUNnQ0NFc0VRQ0FBS0FJQUlRTkJmeUFCclVJa2ZpSUVweUFFUWlDSXB4c1FGU0VDSUFBZ0FUWUNDQ0FBSUFJMkFnQkJBQ0VCQTBBZ0FDZ0NCQ0FCVFFSQUlBTVFpQVFGSUFGQkpHd2lBaUFBS0FJQWFpQUNJQU5xRU1BS0dpQUJRUUZxSVFFTUFRc0xDd3N3QVFKL0l3QkJNR3NpQWlRQUlBSWdBQkQ3RFNFRElBQWdBUkRuRHlBQklBTVE1dzhnQXhETUJDQUNRVEJxSkFBTEhBQWdBQ0FCS0FJQUtRSUFOd0lBSUFCQkNHb2dBU2dDQkJCV0dndHNBZ0ovQW40akFFRVFheUlESkFBakFFRWdheUlDSkFBZ0FTa0NBQ0VFSUFJZ0FDa0NBQ0lGTndNUVFRQWhBQ0FGUWlDSXB5QUVRaUNJcDBZRVFDQUNJQVEzQXdnZ0FpQUVOd01ZSUFKQkVHb2dBa0VJYWhBbFJTRUFDeUFDUVNCcUpBQWdBMEVRYWlRQUlBQUxHZ0VCZmlBQUtRSUFJZ0duSWdBZ0FDQUJRaUNJcDJvUTZBOExLZ0VDZnlNQVFSQnJJZ1FrQUNBQklBQW9BaWhHQkVBZ0FpQUFFTjRiSVFNTElBUkJFR29rQUNBREN6TUJBWDhqQUVFUWF5SURKQUFnQWhEZkd5RUNJQUVvQWdRaEFTQUFJQUkyQWdRZ0FDQUNJQUZ3TmdJQUlBTkJFR29rQUF0SUFRRi9JQUV0QUFRRVFDQUFFUGdOSUFBZ0FTZ0NBQ0lDS1FJQU53SUFJQUFnQWlnQ0NEWUNDQ0FCS0FJQUlnQkJBRFlDQ0NBQVFnQTNBZ0FQQ3lBQUlBRW9BZ0FRenhZTFNBRUJmeUFCTFFBRUJFQWdBQkNDRGlBQUlBRW9BZ0FpQWlrQ0FEY0NBQ0FBSUFJb0FnZzJBZ2dnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBRHdzZ0FDQUJLQUlBRVBnV0N5c0FJQUJCQURvQUVDQUFRUUE2QUFBZ0FTMEFFQVJBSUFBZ0FSRHBEd3NnQUNBQktRSVVOd0lVSUFBTCtRRUJCbjhqQUVIQUFXc2lBeVFBSUFOQnVBRnFJQUVnQWhEaEd5QUJLQUlFSWdkQkFXc2hDQ0FES0FLNEFTRUVBa0FEUUNBRklBZEhCRUFnQVNnQ0FDQUVRVEJzYWlJR0xRQWtSUVJBSUFCQkFEWUNCQ0FBUVFBNkFBQU1Bd3NnQmlBREtBSzhBU0FDRU9BYkJFQWdBQ0FFTmdJRUlBQkJBVG9BQUF3REN5QUZJQVlvQWl4TEJFQWdBRUVBTmdJRUlBQkJBRG9BQUF3REJTQUVRUUZxUVFBZ0JDQUlSeHNoQkNBRlFRRnFJUVVNQWdzQUN3c2dBMEVJYWtHR3RRTkJuZ1JCRGlBRFFhZ0JhaEFkSWdFUUZ5SUNRUmhxUWRJMUVBNGFJQUlRR0NBQVFRQTJBZ1FnQUVFQU9nQUFJQUVRSGdzZ0EwSEFBV29rQUFzS0FDQUFFTzBQUVFCSEN5a0FJQUFnQVRZQ0FDQUFRUVJxSUFJUVZCb2dBRUVBTmdJUUlBQWdBU2dDRUVFQmF6WUNGQ0FBQzdnSEFRaC9Jd0JCNEFGcklnY2tBQ0FCS0FJRUlBRW9BZ3dpQkVHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUVNCcklnVWtBRUVFSUFSQkFYUkJBbXBCbGdGc1FlUUFiaUlFSUFSQkJFMGJJZ2tnQVNnQ0JFc0VRQ0FGUVFBMkFoZ2dCVUlBTndNUUlBVkJFR29nQVNnQ0RCRGJHeUFCS0FJQUlnUWdBU2dDQkVFd2JHb2hDZ05BQWtBZ0JDQUtSZ1JBSUFFUTZ4c2dBU0FKRU93UElBVW9BaEFpQkNBRktBSVVRU1JzYWlFR0RBRUxJQVF0QUNRRVFDQUVFT2dMSVFzZ0JVRVFhaUlHS0FJRUlnZ2dCaWdDQ0U4RVFDQUdJQVlvQWdnaUNFRUJkRUVDSUFnYkVOc2JJQVlvQWdRaENBc2dCaUFJUVFGcU5nSUVJQVlvQWdBZ0NFRWtiR29nQ3hEQUNob0xJQVJCTUdvaEJBd0JDd3NEUUNBRUlBWkhCRUFnQlVFSWFpQUJJQVFnQkVFSWFoRG9HeUFFUVNScUlRUU1BUXNMUVFBaEJBTkFJQVVvQWhRZ0JFMEVRQ0FGUVFBMkFoUUZJQVVvQWhBYUlBUkJBV29oQkF3QkN3c2dCU2dDRUJDSUJBc2dCVUVnYWlRQUN5QUhRZGdCYWlBQklBSVE0UnNnQnlBRE5nTFVBU0FISUFJMkF0QUJJQUVvQWdRaUJrRUJheUVJSUFjb0F0Z0JJUVJCQUNFREFrQURRQ0FESUFaSEJFQWdBU2dDQUNJSklBUkJNR3hxSWdVdEFDUkZCRUFnQjBFSWFpSUNJQWRCMEFGcUVOMGJJQVVRMEFzZ0JTQUNFUGtOSUFjb0F0d0JJUUlnQ1NBRVFUQnNhaUlFSUFNMkFpd2dCQ0FDTmdJb0lBRWdBU2dDREVFQmFqWUNEQ0FCSUFFb0FoQkJBV28yQWhBZ0FDQUZRUWhxTmdJRUlBQkJBRFlDQUF3REN5QUZJQWNvQXR3QklBSVE0QnNFUUNBQVFRSTJBZ0FnQUNBRlFRaHFOZ0lFREFNTElBTWdCU2dDTEVzRVFDQUhRYWdCYWlJQ0lBZEIwQUZxRU4wYklBZEJDR29nQWhEQUNpSUNRUUU2QUNRZ0J5Z0MzQUVoQmlBQ0lBTTJBaXdnQWlBR05nSW9JQUlnQlJEY0d5QUNJQUlvQWl4QkFXbzJBaXdnQkVFQmFpQUJLQUlFY0NFRFFRQWhCQ0FCS0FJRUlnaEJBV3NoQ1FKQUEwQWdCQ0FJUmcwQklBRW9BZ0FnQTBFd2JHb2lCaTBBSkFSQUlBSWdBaWdDTENJS0lBWW9BaXhMQkg4Z0JpQUNFTndiSUFJb0Fpd0ZJQW9MUVFGcU5nSXNJQU5CQVdwQkFDQURJQWxIR3lFRElBUkJBV29oQkF3QkN3c2dCaUFDRU9jUEN5QUJJQUVvQWd4QkFXbzJBZ3dnQVNBQktBSVFRUUZxTmdJUUlBQWdCVUVJYWpZQ0JDQUFRUUEyQWdBZ0FoRE1CQXdEQlNBRVFRRnFRUUFnQkNBSVJ4c2hCQ0FEUVFGcUlRTU1BZ3NBQ3dzZ0IwRUlha0dHdFFOQjZ3TkJEaUFIUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBSFFlQUJhaVFBQzNVQkJYOGdBQ2dDQUNJQ0tBSVFJZ01nQUNnQ0VFWUVRQ0FBS0FJTUR3c2pBRUVRYXlJQkpBQWdBVUVJYWlBQ0lBQkJCR29RNVJzZ0FTZ0NEQ0VFSUFJb0FnQWhBaUFCTFFBSUlRVWdBVUVRYWlRQUlBSWdCRUV3YkdwQkNHcEJBQ0FGR3lFQklBQWdBellDRUNBQUlBRTJBZ3dnQVF1QkFnRURmeUFBSUFFb0FnQTJBZ0FqQUVFUWF5SUNKQUFnQUVFRWFpSURJQUZCQkdvaUJFY0VRQ0FDUVFFNkFBd2dBaUFFTmdJSUlBTWdBa0VJYWhEakd3c2dBa0VRYWlRQUlBQWdBU2tDRURjQ0VDTUFRUkJySWdJa0FDQUFRUmhxSWdNZ0FVRVlhaUlFUndSQUlBSkJBVG9BRENBQ0lBUTJBZ2dnQXlBQ1FRaHFFT0liQ3lBQ1FSQnFKQUFnQUNBQktRSWtOd0lrSUFBZ0FTZ0NMRFlDTENNQVFSQnJJZ0lrQUNBQVFUQnFJZ0FnQVVFd2FrY0VRQ0FBRU8wYklBSWdBQ2tDQ0RjRENDQUNJQUFwQWdBM0F3QWdBQ0FCS1FJNE53SUlJQUFnQVNrQ01EY0NBQ0FCSUFJcEF3ZzNBamdnQVNBQ0tRTUFOd0l3Q3lBQ1FSQnFKQUFMSWdBZ0FCRDlEU0FBUVFRUTdBOGdBRUVBTmdJTUlBQWdBQ2dDRUVFQmFqWUNFQXNpQUNBQUVQWU5JQUJCQkJEckR5QUFRUUEyQWd3Z0FDQUFLQUlRUVFGcU5nSVFDellCQW44Z0FDZ0NBQ0VCQTBBZ0FRUkFJQUVvQW9DQUJDRUNJQUVRSHlBQ0lRRU1BUXNMSUFCQ2dJQUVOd0lJSUFCQ0FEY0NBQXNxQVFGL0lBQkJNR29RN1JzZ0FFRVlhaUlCRU93YklBRVErQTBnQUVFRWFpSUFFT3NiSUFBUWdnNExqQUVCQVg4akFFRWdheUlJSkFBZ0NDQUNOZ0lZSUFnZ0FUWUNIQ0FJSUFNMkFoUWdDQ0FFTmdJUUlBZ2dCVFlDRENBSUlBYzJBZ2dnQUNBSUtBSWNJQWdvQWhnZ0NDZ0NGQ0FJS0FJUUlBZ29BZ3dnQ0NnQ0NCRDFEeUlBUWFpY0VqWUNCQ0FBUWRpZEVqWUNBQ0FBUVFBMkFsUWdBQ0FHTmdKUUlBQkJpSjBTTmdJQUlBaEJJR29rQUNBQUN4QUFJQUJCOEFKcUVESWFJQUFRNkFjTEVBQWdBRUhzQW1vUU1ob2dBQkRvQndzTUFDQUFFTGtMR2lBQUVCOExEQUFnQUJETkJob2dBQkFmQzlFQkFRRi9Jd0JCd0FGcklnY2tBQ0FISUFVMkFyZ0JJQWNnQkRZQ3ZBRWdCeUFHTmdLMEFTTUFRVEJySWdRa0FDQUVRUkJxSUFJUVZpRUNJQU1vQWdBaEF5QUVRUUE2QUF3Z0JDQUROZ0lJSUFBZ0FpQUVRUWhxSUFjb0Fyd0JJQWNvQXJnQklBY29BclFCRUkwSklnQkJnSmtTTmdJRUlBQkI3SmtTTmdJQUlBUkJNR29rQUNBQUlBRTJBcGdCSUFCQnVKa1NOZ0lBSUFGRkJFQWdCMEc1bUFWQkgwRUpJQWRCb0FGcUVCMGlBUkFYSWdKQkdHcEI4YW9JRUE0YUlBSVFHQ0FCRUI0TElBZEJ3QUZxSkFBZ0FBc3JBQ0FBUVFBNkFDQWdBRUVBT2dBQUlBRXRBQ0FFUUNBQUlBRVF6d3NMSUFBZ0FTa0RLRGNES0NBQUM0NEJBZ04vQVg0Z0FTQUFLQUtZQVVzRVFDQUFLQUtRQVNFRFFRUWhBaUFBSVFRZ0FVRUVUd1JBUVg4Z0FhMUNKSDRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUNrQUVnQUNBQ05nS1lBVUVBSVFFRFFDQUFLQUtVQVNBQlRRUkFJQUFnQXhBMkJTQUJRU1JzSWdJZ0FDZ0NrQUZxSUFJZ0Eyb1EwUXNhSUFGQkFXb2hBUXdCQ3dzTEN6QUJBbjhqQUVFd2F5SUNKQUFnQWlBQUVQb2JJUU1nQUNBQkVQWVBJQUVnQXhEMkR5QURFTXdFSUFKQk1Hb2tBQXNXQUNBQUlBRW9BZ0FRVmlBQktBSUVLUUlBTndJY0N6UUJBWDhEUUNBQUtBS2tBaUFCVFFSQUlBQkJBRFlDcEFJRklBQW9BcUFDSUFGQk1HeHFFTXdFSUFGQkFXb2hBUXdCQ3dzTEt3QWdBRUVBT2dBa0lBQkJBRG9BQUNBQkxRQWtCRUFnQUNBQkVQY1BDeUFBSUFFcEFpZzNBaWdnQUF2SUJ3RUlmeU1BUWRBQmF5SUlKQUFnQVNnQ3BBSWlCU0FCS0FLc0FpSUVRWllCYkVHV0FXcEI1QUJ1U1FSQUl3QkJzQUZySWdZa0FFRUdJQVJCQVhSQkFtcEJsZ0ZzUWVRQWJpSUVJQVJCQmswYklna2dBU2dDcEFKTEJFQWdCa0tBZ0lDQXdBQTNBcVFCSUFZZ0JrRVFhaUlFTmdLZ0FTQUVJQUVvQXF3Q0VQWWJJQUVvQXFBQ0lnUWdBU2dDcEFKQk1HeHFJUW9EUUFKQUlBUWdDa1lFUUNBQkVQd2JJQUVnQ1JENER5QUdLQUtnQVNJRUlBWW9BcVFCUVNSc2FpRUZEQUVMSUFRdEFDUUVRQ0FFRU9nTElRc2dCa0VRYWlJRktBS1VBU0lISUFVb0FwZ0JUd1JBSUFVZ0JTZ0NtQUVpQjBFQmRFRUNJQWNiRVBZYklBVW9BcFFCSVFjTElBVWdCMEVCYWpZQ2xBRWdCU2dDa0FFZ0IwRWtiR29nQ3hEUkN4b0xJQVJCTUdvaEJBd0JDd3NEUUNBRUlBVkhCRUFnQmtFSWFpQUJJQVFnQkVFY2FoRDdHeUFFUVNScUlRUU1BUXNMSUFaQkVHb2hCRUVBSVFVRFFDQUVLQUtVQVNBRlRRUkFJQVJCQURZQ2xBRUZJQVFvQXBBQkdpQUZRUUZxSVFVTUFRc0xJQVFnQkNnQ2tBRVFOZ3NnQmtHd0FXb2tBQ0FCS0FLa0FpRUZDeUFDS0FJQUlRY2dDQ0FETmdMTUFTQUlJQUkyQXNnQklBVkJBV3NoQ1NBSElBVndJUVJCQUNFREFrQURRQ0FESUFWSEJFQWdBU2dDb0FJaUNpQUVRVEJzYWlJR0xRQWtSUVJBSUFnZ0NFSElBV29RK0JzZ0JoRFFDeUFHSUFnUTl3OGdDaUFFUVRCc2FpSUNJQU0yQWl3Z0FpQUhOZ0lvSUFFZ0FTZ0NyQUpCQVdvMkFxd0NJQUVnQVNnQ3NBSkJBV28yQXJBQ0lBQWdCa0VjYWpZQ0JDQUFRUUEyQWdBTUF3c2dCaUFISUFJUXVoMEVRQ0FBUVFJMkFnQWdBQ0FHUVJ4cU5nSUVEQU1MSUFNZ0JpZ0NMRXNFUUNBSVFhQUJhaUlDSUFoQnlBRnFFUGdiSUFnZ0FoRFJDeUlDUVFFNkFDUWdBaUFETmdJc0lBSWdCellDS0NBQ0lBWVE5eHNnQWlBQ0tBSXNRUUZxTmdJc0lBUkJBV29nQVNnQ3BBSndJUU5CQUNFRUlBRW9BcVFDSWdkQkFXc2hDUUpBQTBBZ0JDQUhSZzBCSUFFb0FxQUNJQU5CTUd4cUlnVXRBQ1FFUUNBQ0lBSW9BaXdpQ2lBRktBSXNTd1IvSUFVZ0FoRDNHeUFDS0FJc0JTQUtDMEVCYWpZQ0xDQURRUUZxUVFBZ0F5QUpSeHNoQXlBRVFRRnFJUVFNQVFzTElBVWdBaEQyRHdzZ0FTQUJLQUtzQWtFQmFqWUNyQUlnQVNBQktBS3dBa0VCYWpZQ3NBSWdBQ0FHUVJ4cU5nSUVJQUJCQURZQ0FDQUNFTXdFREFNRklBUkJBV3BCQUNBRUlBbEhHeUVFSUFOQkFXb2hBd3dDQ3dBTEN5QUlRWWExQTBIckEwRU9JQWhCb0FGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFoQjBBRnFKQUFMSlFBZ0FCRDVHeUFBUVFZUStBOGdBRUVBTmdLc0FpQUFJQUFvQXJBQ1FRRnFOZ0t3QWdzdUFRRi9BbjhnQUJEZ0N5SUJSUVJBQTBCQkFDQUFLQUlNSWdCRkRRSWFJQUFRNEFzaUFVVU5BQXNMSUFFTEMyQUFJQUFRNlFjaUFFR1FtQkkyQWdRZ0FFSG9tQkkyQWdBZ0FFSUFOd0lrSUFCQkFUb0FJQ0FBUWdnM0F4Z2dBQ0FETmdJUUlBQWdBallDRENBQUlBRTJBZ2dnQUVISW1CSTJBZ0FnQUVJQU53SXNJQUJCZ0lDQS9BTTJBalFnQUFzZEFDQUFRYVFEYWhCUElBQkJsQUpxRUs0RUlBQkJDR29Ra3dVZ0FBc0xBQ0FBUVRCcUVGNGdBQXVSQVFFQmZ5TUFRU0JySWdra0FDQUpJQUkyQWhnZ0NTQUJOZ0ljSUFrZ0F6WUNGQ0FKSUFRMkFoQWdDU0FGTmdJTUlBa2dCem9BQ3lBSklBZzJBZ1FnQUNBSktBSWNJQWtvQWhnZ0NTZ0NGQ0FKS0FJUUlBa29BZ3dnQ1MwQUN5QUpLQUlFRUp3RklnQkJpSllTTmdJRUlBQkJpSmNTTmdJQUlBQWdCallDTENBQVFkaVdFallDQUNBSlFTQnFKQUFnQUFzbEFRRi9BMEFnQUFSQUlBQW9BZ0FoQVNBQVFReHFFSzRFSUFBUUh5QUJJUUFNQVFzTEN4NEFJQUZCcEFOcUlBQW9BZ0FRK2c4aUFFVUVRRUVBRHdzZ0FDZ0NFQXMrQVFGL0lBQW9BZ1FoQWdKQUlBRkJnQXBxSUFBb0FnQW9BZ0FRK2c4aUFRUkFJQUVvQWhBaUFRMEJDeUFBS0FJQUlBSW9BaUFRZ3h3aEFRc2dBUXRFQVFGL0FrQURRQ0FCSWdKQkpHb2dBQ2dDQUNnQ0FCRDZEeUlCQkVBZ0FTZ0NFQ0lCRFFJTElBSW9BZ3dpQVEwQUN5QUFLQUlFSUFJb0FoQVFoQndoQVFzZ0FRc1NBQ0FBS0FJQUlBQW9BZ1FvQWlBUWd4d0xaQUVCZnlBQVFZQUthaEJQSUFCQjVBbHFFRElhSUFCQjJBbHFFRElhSUFCQnpBbHFFRElhSUFCQi9BWnFJZ0ZCekFCcUVLRUdJQUVRbFFFZ0FFSHNCV29RcmdRZ0FFSHNBMm9Ra1FrZ0FFSHNBV29Ra1FrZ0FFSGNBR29RcmdRZ0FCQ1RDUXNMQUNBQVFUQnFFQ01nQUF2akFRRUJmeU1BUWRBQmF5SUlKQUFnQ0NBRE5nTElBU0FJSUFFMkFzd0JJQWdnQlRZQ3hBRWdDQ0FHTmdMQUFTQUlJQWM2QUw4QklBZ2dBaWdDQ0RZQ0NDQUFJQWdvQXN3QklBZ29BZ2dnQ0NnQ3lBRWdDQ2dDeEFFZ0NDZ0N3QUVnQ0MwQXZ3RkJBQkNjQlNJQVFhQ1JFallDQkNBQVFkQ1JFallDQUNBQUlBSTJBaXdnQUVIQWtSSTJBZ0FnQUVFd2FpQUVFTDhKSUFnb0FzZ0JJZ0VnQWlnQ09FNGdBVVZ5UlFSQUlBaEJDR3BCdEt3RlFTUkJDU0FJUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRZmZlQ0JBT0dpQUNFQmdnQVJBZUN5QUlRZEFCYWlRQUlBQUxId0FnQUVFQU5nSUFJQUJDZ0lDQWdJQUJOd0lvSUFBZ0FFRUVhallDSkFzYkFDQUFFT2tISWdCQjZKQVNOZ0lFSUFCQm1KRVNOZ0lBSUFBTEdnQWdBQ0FCS0FJQU5nSUFJQUJCQ0dvZ0FVRUlhaERSQVJvTENnQWdBQ2dDUUJESkF3c2JBQ0FBSUFGQnZJMFNRZlNORWtHQWpSSkJnSWlRaUhnUXdBd0xHd0FnQUNBQlFhQ05Fa0hZalJKQjZJd1NRY0NJa0poNEVNQU1DeEVBSUFBdEFEd0VRQ0FBUVFBNkFEd0xDNDRCQWdOL0FYNGdBU0FBS0FMb0Ewc0VRQ0FBS0FMZ0F5RURRUWdoQWlBQUlRUWdBVUVJVHdSQVFYOGdBYTFDUEg0aUJhY2dCVUlnaUtjYkVCVWhCQ0FCSVFJTElBQWdCRFlDNEFNZ0FDQUNOZ0xvQTBFQUlRRURRQ0FBS0FMa0F5QUJUUVJBSUFBZ0F4QTJCU0FCUVR4c0lnSWdBQ2dDNEFOcUlBSWdBMm9RMmdzYUlBRkJBV29oQVF3QkN3c0xDelVCQW44akFFSFFBR3NpQWlRQUlBSkJDR29nQUJDZEhDRURJQUFnQVJDQkVDQUJJQU1RZ1JBZ0F4Q1VDU0FDUWRBQWFpUUFDeGNBSUFBZ0FTZ0NBQkRtQnlBQktBSUVLQUlBTmdJNEM2Z0JBZ04vQVg0Z0FTQUFLQUxJQVVzRVFDQUFLQUxBQVNFRVFRZ2hBeUFBSVFJZ0FVRUlUd1JBUVg4Z0FhMUNHSDRpQmFjZ0JVSWdpS2NiRUJVaEFpQUJJUU1MSUFBZ0FqWUN3QUVnQUNBRE5nTElBVUVBSVFFRFFDQUFLQUxFQVNBQlRRUkFJQUFnQkJBMkJTQUJRUmhzSWdJZ0FDZ0N3QUZxSWdNZ0FpQUVhaUlDS1FJQU53SUFJQU1nQWlrQ0VEY0NFQ0FESUFJcEFnZzNBZ2dnQVVFQmFpRUJEQUVMQ3dzTE1BRUJmZ0ovUVFBZ0FDa0RFRUtFd0lDQ0FvTWlBU0FCUWdGOWcxQU5BQnBCQVNBQUVQSUhEUUFhSUFBUWdBWUxDMzBCQTM4Z0FTQUFLQUtJQVVzRVFDQUFLQUtBQVNFRUlBQWdBUkRCSGtFQUlRRURRQ0FBS0FLRUFTQUJUUVJBSUFBZ0JCQTJCU0FCUVFWMElnSWdBQ2dDZ0FGcUlnTWdBaUFFYWlJQ0tRTUFOd01BSUFNZ0Fpa0RHRGNER0NBRElBSXBBeEEzQXhBZ0F5QUNLUU1JTndNSUlBRkJBV29oQVF3QkN3c0xDNXdCQVFaL0l3QkJNR3NpQmlRQUlBQW9BcVFDSWdkQkFXc2hDQUpBQTBBZ0JDQUhSZzBCSUFBb0FxQUNJQUZCTUd4cUlnTXRBQ0FFUUNBQ0lBSW9BaXdpQlNBREtBSXNTd1IvSUFZZ0EwRXdFSDBoQlNBRElBSkJNQkI5R2lBQ0lBVkJNQkI5S0FJc0JTQUZDMEVCYWpZQ0xDQUJRUUZxUVFBZ0FTQUlSeHNoQVNBRVFRRnFJUVFNQVFzTElBTWdBa0V3RUgwYUN5QUdRVEJxSkFBTDNRY0NDbjhCZmlNQVFhQUJheUlGSkFCQkJpQUJRWllCYkVIa0FHNGlBU0FCUVFaTkd5SUdJQUFvQXFRQ1N3UkFJQVZDZ0lDQWdNQUFOd0tVQVNBRklBVkJFR29pQVRZQ2tBRWdBU0FBS0FLd0FoQ1dIQ0FBS0FLZ0FpSUJJQUFvQXFRQ1FUQnNhaUVIQTBBQ1FDQUJJQWRHQkVBZ0FCQ3FIQ0FBSUFZUWh4QWdCU2dDa0FFaUFTQUZLQUtVQVVFRmRHb2hDUXdCQ3lBQkxRQWdCRUFnQVJEZ0JpRURJQVZCRUdvaUFpZ0NoQUVpQkNBQ0tBS0lBVThFUUNBQ0lBSW9Bb2dCSWdSQkFYUkJBaUFFR3hDV0hDQUNLQUtFQVNFRUN5QUNJQVJCQVdvMkFvUUJJQUlvQW9BQklBUkJCWFJxSWdJZ0F5a0RHRGNER0NBQ0lBTXBBeEEzQXhBZ0FpQURLUU1JTndNSUlBSWdBeWtEQURjREFBc2dBVUV3YWlFQkRBRUxDd05BSUFFZ0NVY0VRQ01BUWVBQmF5SUNKQUFnQUNnQ3BBSWdBQ2dDc0FJaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBTkJBWFJCQW1vUW1Cd0xJd0JCRUdzaUJDUUFJQUVRc3d3aEF5QUFLQUtrQWlFR0lBSWdBellDM0FFZ0FpQURJQVp3TmdMWUFTQUVRUkJxSkFBZ0FDZ0NwQUlpQ2tFQmF5RUxJQUVwQXdBaERDQUFLQUtnQWlFSElBSW9BdHdCSVFnZ0FpZ0MyQUVoQkVFQUlRWUNRQU5BSUFZZ0NrY0VRQ0FISUFSQk1HeHFJZ010QUNCRkJFQWdBaUFCS0FJWU5nSVlJQUlnQVNrQ0VEY0RFQ0FDSUFFcEFnZzNBd2dnQXlBTU53TUFJQU1nQWlrRENEY0RDQ0FESUFJcEF4QTNBeEFnQXlBQ0tBSVlOZ0lZSUFOQkFUb0FJQ0FDS0FMY0FTRUlJQWNnQkVFd2JHb2lCQ0FHTmdJc0lBUWdDRFlDS0NBQUlBQW9BckFDUVFGcU5nS3dBaUFBSUFBb0FyUUNRUUZxTmdLMEFpQUZJQU5CQ0dvMkFnd2dCVUVBTmdJSURBTUxBa0FnQXlnQ0tDQUlSdzBBSUF3Z0F5a0RBRklOQUNBRlFRSTJBZ2dnQlNBRFFRaHFOZ0lNREFNTElBWWdBeWdDTEVzRVFDQUNJQUVvQWhnMkFzQUJJQUlnQVNrQ0VEY0R1QUVnQWlBQktRSUlOd093QVNBQ0lBWTJBdFFCSUFJZ0NEWUMwQUVnQWlBTU53T29BU0FDUVFFNkFNZ0JJQUpCQ0dvaUJ5QUNRYWdCYWlJR1FUQVFmUm9nQmlBRFFUQVFmUm9nQXlBSFFUQVFmU0VESUFJZ0FpZ0MxQUZCQVdvMkF0UUJJQUFnQkVFQmFpQUFLQUtrQW5BZ0JoQ1hIQ0FBSUFBb0FyQUNRUUZxTmdLd0FpQUFJQUFvQXJRQ1FRRnFOZ0swQWlBRklBTkJDR28yQWd3Z0JVRUFOZ0lJREFNRklBUkJBV3BCQUNBRUlBdEhHeUVFSUFaQkFXb2hCZ3dDQ3dBTEN5QUNRUWhxUVlhMUEwSHJBMEVPSUFKQnFBRnFFQjBpQXhBWElnUkJHR3BCbGpVUURob2dCQkFZSUFWQ0FEY0NDQ0FERUI0TElBSkI0QUZxSkFBZ0FVRWdhaUVCREFFTEN5QUZRUkJxRU53RkN5QUZRYUFCYWlRQUM1Z0JBZ04vQVg0Z0FTQUFLQUpvU3dSQUlBQW9BbUFoQkVFSUlRSWdBQ0VESUFGQkNFOEVRRUYvSUFHdFFneCtJZ1duSUFWQ0lJaW5HeEFWSVFNZ0FTRUNDeUFBSUFNMkFtQWdBQ0FDTmdKb1FRQWhBUU5BSUFBb0FtUWdBVTBFUUNBQUlBUVFOZ1VnQVVFTWJDSUNJQUFvQW1CcUlnTWdBaUFFYWlJQ0tRSUFOd0lBSUFNZ0FpZ0NDRFlDQ0NBQlFRRnFJUUVNQVFzTEN3c2ZBUUYrSUFFcEF3QWhBaUFBUWY4Qk9nQUlJQUFnQWpjREFDQUFFSU1RQ3dvQUlBQkIyS3dTRUVnTE5RRUJmd05BSUFBb0F1UUdJQUZOQkVBZ0FFRUFOZ0xrQmdVZ0FDZ0M0QVlnQVVISUFHeHFFSlFKSUFGQkFXb2hBUXdCQ3dzTEt3QWdBRUVBT2dBOElBQkJBRG9BQUNBQkxRQThCRUFnQUNBQkVJUVFDeUFBSUFFcEFrQTNBa0FnQUFzTkFDQUFJQUZDTUVFR0VONFNDNm9CQVFKL0l3QkJzQUZySWdRa0FDQUVJQUkyQXF3QklBRW9Bb3dFSWdJZ0FTZ0NrQVJCQW5ScUlRVUNRQUpBQWtBRFFDQUNJQVZHRFFFZ0FpZ0NBQ0lCSUFRb0Fxd0JSZzBDSUFKQkJHb2hBaUFCUVpnRWFpQUVRYXdCYWhEc0IwVU5BQXNnQUNBQklBUW9BcXdCSUFNUW54d01BUXNnQkVFSWFrSG5tZ1ZCa0FGQkNDQUFFQmNpQUVFWWFrR1JnUWtRRGhvZ0FCQVlEQUVMSUFNZ0FSRHJCd3NnQkVHd0FXb2tBQXUyQlFJSGZ3SitJd0JCc0FGcklnUWtBQ0FCS0FKa0lnY2dBU2dDYkNJRFFaWUJiRUdXQVdwQjVBQnVTUVJBSXdCQk1Hc2lCU1FBUVFZZ0EwRUJkRUVDYWtHV0FXeEI1QUJ1SWdNZ0EwRUdUUnNpQmlBQktBSmtTd1JBSUFWQ2dJQ0FnTUFBTndJa0lBVWdCVUVRYWlJRE5nSWdJQU1nQVNnQ2JCRDhDeUFCS0FKZ0lnTWdBU2dDWkVFRWRHb2hCd05BQWtBZ0F5QUhSZ1JBSUFFUTZnVWdBU0FHRU9nRklBVW9BaUFpQXlBRktBSWtRUUowYWlFR0RBRUxJQU10QUFRRVFDQUZRUkJxSUFNUXZnRVFwd1FMSUFOQkVHb2hBd3dCQ3dzRFFDQURJQVpIQkVBZ0JTQUJJQU1Rb0J3Z0EwRUVhaUVEREFFTEN5QUZRUkJxRUY0TElBVkJNR29rQUNBQktBSmtJUWNMSUFkQkFXc2hDU0FDS0FJQUlnVWdCM0FoQmlBQktBSmdJUWhCQUNFQ0FrQURRQ0FDSUFkSEJFQWdDQ0FHUVFSMGFpSURMUUFFUlFSQUlBTkJBVG9BQkNBRElBVTJBZ0FnQ0NBR1FRUjBhaUlESUFJMkFnd2dBeUFGTmdJSUlBRWdBU2dDYkVFQmFqWUNiQ0FCSUFFb0FuQkJBV28yQW5BZ0FFSUFOd0lBREFNTEFrQWdBeWdDQ0NBRlJ3MEFJQVVnQXlnQ0FFY05BQ0FBUWdJM0FnQU1Bd3NnQWlBREtBSU1Td1JBSUFRZ0JUWUNxQUVnQkNBRk5nS2dBU0FFSUFJMkFxd0JJQVJCQVRvQXBBRWdCQ0FFS1FPb0FTSUtOd01JSUFRZ0JDa0RvQUVpQ3pjREFDQUVJQU1wQWdnM0E2Z0JJQVFnQXlrQ0FEY0RvQUVnQXlBTE53SUFJQU1nQ2pjQ0NDQUVJQVFvQXF3QlFRRnFOZ0tzQVNBQklBWkJBV29nQVNnQ1pIQWdCRUdnQVdvUTlBVWdBU0FCS0FKc1FRRnFOZ0pzSUFFZ0FTZ0NjRUVCYWpZQ2NDQUFRZ0EzQWdBTUF3VWdCa0VCYWtFQUlBWWdDVWNiSVFZZ0FrRUJhaUVDREFJTEFBc0xJQVJCaHJVRFFlc0RRUTRnQkVHZ0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFR3dBV29rQUFzdEFDQUFBbjlCbHU4Q0lBRW9BZ1FpQUVINCtoRkdEUUFhUVFBZ0FFR1kvUkZIRFFBYVFjYmlBZ3NRRkJvTE53RUJmZ0ovUVFBZ0FDa0RFRUtBZ0lDUWlLQ0FnQVNESWdFZ0FVSUJmWU5RRFFBYVFRRWdBRUdRb2hJUVNBMEFHaUFBRU9ZREN3c2xBQ0FBRUp3Y0lBQkJEQkNGRUNBQVFRQTJBdXdHSUFBZ0FDZ0M4QVpCQVdvMkF2QUdDeWdBSUFCQkFEWUN0QU1nQUVFTUVJWVFJQUJCQURZQ3ZBTWdBQ0FBS0FMQUEwRUJhallDd0FNTHZBZ0JCMzhqQUVId0FXc2lCeVFBSUFFb0F1UUdJQUVvQXV3R0lnUkJsZ0ZzUVpZQmFrSGtBRzVKQkVBakFFR0FCR3NpQlNRQVFRd2dCRUVCZEVFQ2FrR1dBV3hCNUFCdUlnUWdCRUVNVFJzaUNTQUJLQUxrQmtzRVFDQUZRb0NBZ0lDQUFUY0M5QU1nQlNBRlFSQnFJZ1EyQXZBRElBUWdBU2dDN0FZUWtSd2dBU2dDNEFZaUJDQUJLQUxrQmtISUFHeHFJUW9EUUFKQUlBUWdDa1lFUUNBQkVLTWNJQUVnQ1JDRkVDQUZLQUx3QXlJRUlBVW9BdlFEUVR4c2FpRUdEQUVMSUFRdEFEd0VRQ0FFTFFBOFJRUkFFRzhBQ3lBRlFSQnFJZ1lvQXVRRElnZ2dCaWdDNkFOUEJFQWdCaUFHS0FMb0F5SUlRUUYwUVFJZ0NCc1FrUndnQmlnQzVBTWhDQXNnQmlBSVFRRnFOZ0xrQXlBR0tBTGdBeUFJUVR4c2FpQUVFTm9MR2dzZ0JFSElBR29oQkF3QkN3c0RRQ0FFSUFaSEJFQWdCVUVJYWlBQklBUWdCRUU0YWhDbEhDQUVRVHhxSVFRTUFRc0xJQVZCRUdvaEJFRUFJUVlEUUNBRUtBTGtBeUFHVFFSQUlBUkJBRFlDNUFNRklBUW9BdUFER2lBR1FRRnFJUVlNQVFzTElBUWdCQ2dDNEFNUU5nc2dCVUdBQkdva0FBc2dBU2dDNUFZaEJDQUhJQUlvQWdCQmtyR28rZ2RxSWdVZ0FpZ0NIQ0FGUVFKMlFaS3hxUG9IYzJwelFaT2tCbk1pQlRZQzdBRWdCeUFGSUFSd05nTG9BU0FISUFNMkF1UUJJQWNnQWpZQzRBRWdBU2dDNUFZaUJrRUJheUVJSUFjb0F1Z0JJUVJCQUNFREFrQURRQ0FESUFaSEJFQWdBU2dDNEFZaUNTQUVRY2dBYkdvaUJTMEFQRVVFUUNBSElBZEI0QUZxRUpNY0lBVVFrQndnQlNBSEVJUVFJQWNvQXV3QklRSWdDU0FFUWNnQWJHb2lCQ0FETmdKRUlBUWdBallDUUNBQklBRW9BdXdHUVFGcU5nTHNCaUFCSUFFb0F2QUdRUUZxTmdMd0JpQUFJQVZCT0dvMkFnUWdBRUVBTmdJQURBTUxJQVVvQWtBZ0J5Z0M3QUZHQkg4Z0FpQUZFTFlDQkg4Z0FrRWNhaUFGUVJ4cUVMWUNCVUVBQ3dWQkFBc0VRQ0FBUVFJMkFnQWdBQ0FGUVRocU5nSUVEQU1MSUFNZ0JTZ0NSRXNFUUNBSFFhQUJhaUlDSUFkQjRBRnFFSk1jSUFjZ0FoRGFDeUlDUVFFNkFEd2dCeWdDN0FFaEJpQUNJQU0yQWtRZ0FpQUdOZ0pBSUFJZ0JSQ1NIQ0FDSUFJb0FrUkJBV28yQWtRZ0JFRUJhaUFCS0FMa0JuQWhBMEVBSVFRZ0FTZ0M1QVlpQ0VFQmF5RUpBa0FEUUNBRUlBaEdEUUVnQVNnQzRBWWdBMEhJQUd4cUlnWXRBRHdFUUNBQ0lBSW9Ba1FpQ2lBR0tBSkVTd1IvSUFZZ0FoQ1NIQ0FDS0FKRUJTQUtDMEVCYWpZQ1JDQURRUUZxUVFBZ0F5QUpSeHNoQXlBRVFRRnFJUVFNQVFzTElBWWdBaENCRUFzZ0FTQUJLQUxzQmtFQmFqWUM3QVlnQVNBQktBTHdCa0VCYWpZQzhBWWdBQ0FGUVRocU5nSUVJQUJCQURZQ0FDQUNFSlFKREFNRklBUkJBV3BCQUNBRUlBaEhHeUVFSUFOQkFXb2hBd3dDQ3dBTEN5QUhRWWExQTBIckEwRU9JQWRCb0FGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFkQjhBRnFKQUFMM2dNQkJuOGpBRUhnQ0dzaUF5UUFJQU5CNkFGcUlnUkNBRGNDN0FZZ0JFS0FnSUNBd0FFM0F1UUdJQVFnQkRZQzRBWWdCRUVNRUlVUUlBRW9BZ0FpQlNnQ0FDSUJJQVVvQWdSQkFuUnFJUVVEUUFKQUlBRWdCVVlpQjBVRVFDQURJQUVvQWdBaUJqWUM1QUVDUUNBR0tBSUVLQUlrSWdZRVFDQURRY2dCYWlBR1FTUnFFRllhREFFTElBTkJ5QUZxRUpzRkdnc2dBMEdvQVdvZ0F5Z0M1QUVvQWdRb0FpaEJKR29RVmlFR0lBTkJFR29nQTBISUFXb1FWaUlJUVJ4cUlBWVFWaG9nQTBHZ0FXb2dCQ0FJSUFOQjVBRnFFS1VjSUFNb0FxQUJRUUpIRFFFZ0F5Z0NwQUVvQWdBb0FnQWdBeWdDNUFFb0FnQkdEUUVnQTBFUWFoQkpJZ0ZCQ0dvaUJVRzgzZ29RRGhvZ0JTQUNFQTRhSUFNZ0FVRU1haEJDSUFBZ0F5QURLQUxrQVNnQ0JFRVFhaEFuSUFNUUR4b2dBUkJSSUFOQkVHb1FTU0lCUVFocUlnSkJ0bzhKRUE0YUlBTWdBeWdDNUFFb0FnUVEveGtnQWlBREVCSWFJQUpCNzRzSkVBNGFJQUVnQXlnQzVBRW9BZ0FRcGh0QkNHcEJsZThERUE0YUlBTVFEeG9nQXlBQlFReHFFRUlnQUNBRElBTW9BcVFCS0FJQUtBSUVRUkJxRUlZQklBTVFEeG9nQVJCUkN5QUVFS01jSUFRUW5Cd2dCQ0FFS0FMZ0JoQTJJQU5CNEFocUpBQWdCdzhMSUFGQkJHb2hBUXdBQ3dBTGhRa0JDSDhqQUVIUUFXc2lCaVFBSUFFb0FyUURJQUVvQXJ3RElnUkJsZ0ZzUVpZQmFrSGtBRzVKQkVBakFFSGdBV3NpQlNRQVFRd2dCRUVCZEVFQ2FrR1dBV3hCNUFCdUlnUWdCRUVNVFJzaUN5QUJLQUswQTBzRVFDQUZRb0NBZ0lDQUFUY0MxQUVnQlNBRlFSQnFJZ1EyQXRBQklBUWdBU2dDdkFNUWxCd2dBU2dDc0FNaUJDQUJLQUswQTBFa2JHb2hDZ05BQWtBZ0JDQUtSZ1JBSUFFUXBCd2dBU0FMRUlZUUlBVW9BdEFCSWdRZ0JTZ0MxQUZCR0d4cUlRY01BUXNnQkMwQUdBUkFJQVZCRUdvaEJ5QUVMUUFZUlFSQUVHOEFDeUFFSVFrZ0J5Z0N4QUVpQ0NBSEtBTElBVThFUUNBSElBY29Bc2dCSWdoQkFYUkJBaUFJR3hDVUhDQUhLQUxFQVNFSUN5QUhJQWhCQVdvMkFzUUJJQWNvQXNBQklBaEJHR3hxSWdjZ0NTa0NFRGNDRUNBSElBa3BBZ2czQWdnZ0J5QUpLUUlBTndJQUN5QUVRU1JxSVFRTUFRc0xBMEFnQkNBSFJ3UkFJQVZCQ0dvZ0FTQUVJQVJCQkdvUXB4d2dCRUVZYWlFRURBRUxDeUFGUVJCcUVJc01DeUFGUWVBQmFpUUFDeU1BUVJCcklnVWtBQ0FDS0FJQUVQd0NJUVFnQVNnQ3RBTWhCeUFHSUFRMkFzd0JJQVlnQkNBSGNEWUN5QUVnQlVFUWFpUUFJQUVvQXJRRElndEJBV3NoQ2lBQ0tBSUFJUWNnQVNnQ3NBTWhDU0FHS0FMTUFTRUlJQVlvQXNnQklRVkJBQ0VDQWtBRFFDQUNJQXRIQkVBZ0NTQUZRU1JzYWlJRUxRQVlSUVJBSUFZZ0F5Z0NFRFlDRUNBR0lBTXBBZ2czQXdnZ0JpQURLUUlBTndNQUlBUWdCellDQUNBRUlBWXBBd0EzQWdRZ0JDQUdLUU1JTndJTUlBUWdCaWdDRURZQ0ZDQUVRUUU2QUJnZ0JpZ0N6QUVoQXlBSklBVkJKR3hxSWdVZ0FqWUNJQ0FGSUFNMkFod2dBU0FCS0FLOEEwRUJhallDdkFNZ0FTQUJLQUxBQTBFQmFqWUN3QU1nQUNBRVFRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBUW9BaHdnQ0VjTkFDQUhJQVFvQWdCSERRQWdBRUVDTmdJQUlBQWdCRUVFYWpZQ0JBd0RDeUFDSUFRb0FpQkxCRUFnQmlBSE5nS2dBU0FHSUFNcEFnZzNBcXdCSUFZZ0F5Z0NFRFlDdEFFZ0JpQURLUUlBTndLa0FTQUdJQUkyQXNBQklBWWdDRFlDdkFFZ0JrRUJPZ0M0QVNBR0lBWkJvQUZxUVNRUWZTSUNRYUFCYWlBRVFTUVFmUm9nQkNBQ1FTUVFmU0VKSUFJZ0FpZ0N3QUZCQVdvMkFzQUJJQVZCQVdvZ0FTZ0N0QU53SVFNZ0FrR2dBV29oQWtFQUlRVWpBRUV3YXlJSEpBQWdBU2dDdEFNaUNFRUJheUVMQWtBRFFDQUZJQWhHRFFFZ0FTZ0NzQU1nQTBFa2JHb2lCQzBBR0FSQUlBSWdBaWdDSUNJS0lBUW9BaUJMQkg4Z0IwRUlhaUlLSUFSQkpCQjlHaUFFSUFKQkpCQjlHaUFDSUFwQkpCQjlLQUlnQlNBS0MwRUJhallDSUNBRFFRRnFRUUFnQXlBTFJ4c2hBeUFGUVFGcUlRVU1BUXNMSUFRZ0FrRWtFSDBhQ3lBSFFUQnFKQUFnQVNBQktBSzhBMEVCYWpZQ3ZBTWdBU0FCS0FMQUEwRUJhallDd0FNZ0FDQUpRUVJxTmdJRUlBQkJBRFlDQUF3REJTQUZRUUZxUVFBZ0JTQUtSeHNoQlNBQ1FRRnFJUUlNQWdzQUN3c2dCa0dHdFFOQjZ3TkJEaUFHUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBR1FkQUJhaVFBQzc4QkFRTi9Jd0JCb0FGcklnTWtBQ0FBS0FJQUlnSVFIQUovSUFKQjVBRnFJQUVRc2dvaUFrVUVRQ0FBS0FJQUlnQVFIQ0FEUWYyc0EwRXpRUWdnQUVISUFtb1FGeUlDUVJocVFhYVdDUkFPR2lBQ0lBRW9BZ1JCQkdvUW1nRWlCRUVZYWlJQVFkenhEQkFPR2lBQVFZUGtDeEFPR2lBRVFSQnFJQUZCRUdvUXJnTWdBRUhiK0F3UURob2dBRUh3OVFzUURob2dBQ0FCRU4wRElBSVFHRUVBREFFTElBSkJBQ0FDS0FJRVFkaWNFa1liQ3lFQUlBTkJvQUZxSkFBZ0FBdmlCd0lGZndGK0l3QkI4QUZySWdNa0FBSkFBa0FnQVVFQUlBRW9BZ1FpQkVINDZ3OUdHeUFCUVFBZ0JFSEFoQkpHRzNKRkJFQWdBMEhRQUdwQjU1b0ZRZm9SUVFnZ0FDZ0NCQkFYSWdCQkdHcEI2TW9BRUE0YUlBQVFHQXdCQ3lBQktBSWtJZ1FvQWdSQjZJTVNSZ1JBSUFFb0FpZ2hCVUVCSVFRZ0FoQ0VBU0lCTFFBUVFRRnhEUUlnQVFSL0FuOUJBQ0FCS0FJRUlnRXBBeEJDeElDQWhKS0loSUFCZ3lJSUlBaENBWDJEVUEwQUdrRUJBbjlCQUNBQktRTVFRc0NBZ0lTUWdJQ0FBWU1pQ0NBSVFnRjlnMUFOQUJwQkFTQUJFSnNjRFFBYUlBRVEyUXNMRFFBYUFuOUJBQ0FCS1FNUVFvU0FnSUNDaUFTRElnZ2dDRUlCZllOUURRQWFRUUVnQVJEWUN3MEFHaUFCRUlBR0N3c0ZRUUFMRFFJZ0EwRXdhaUlCSUFBb0FnZ2dBaENuQVNBRFFVQnJJZ0pCazQ0SklBRVFOU0FEUWRBQWFpSUVJQUpCa29BRUVDMGdBQ0FFSUFWQkVHb1FKeUFFRUE4YUlBSVFEeG9nQVJBUEdnd0JDeUFBS0FJSUlBUVFxZ1FpQmlnQ0ZDSUZLQUlFUWJpdEVrWkJBQ0FGRzBVRVFDQURRVUJySWdFZ0FDZ0NDQ0FHRUpnZElBTkIwQUJxSWdKQjRZQUtJQUVRTlNBQUlBSWdCRUVRYWhBbklBSVFEeG9nQVJBUEdnTkFJQVFpQVVVTkFpQUJLQUlFSWdJUWxSQUVRQ0FCS0FJa0lRUU1BUXRCQUNFRUlBSkIrTzBQUncwQUlBQW9BZ2dnQVJDb0hDSUJSUTBBSUFFb0Fpd29BZ2dpQlVVTkFBSkFJQVVvQWdRaUFrSGcrUTlHQkVBZ0FDQURRZEFBYWtIZ3VBUVFGQ0lDSUFFb0FnaEJFR29RaGdFTUFRc2dBa0dnK1JGR0JFQWdBQ0FEUWRBQWFrSEF1QVFRRkNJQ0lBRW9BZ2hCRUdvUWhnRU1BUXNnQWtIbytSRkdCRUFnQUNBRFFkQUFha0grdUFRUUZDSUNJQUVvQWdoQkVHb1FoZ0VNQVFzZ0FrR3c2dzlIRFFFZ0FDQURRZEFBYWtHbnVBUVFGQ0lDSUFFb0FnaEJFR29RaGdFTElBSVFEeG9nQUNnQ0NDQUZFSjBKREFBTEFBc2dCU2dDR0NJR0lBSVFoQUZIQkVBZ0EwRVFhaUlFSUFBb0FnZ2dBaENuQVNBRFFTQnFJZ0pCazQ0SklBUVFOU0FEUVRCcUlnWWdBa0d6akFrUUxTQURJQUFvQWdnZ0JSQ25BU0FEUVVCcklnVWdCaUFERUU0Z0EwSFFBR29pQnlBRlFmT2FDUkF0SUFBZ0J5QUJRUkJxRUNjZ0J4QVBHaUFGRUE4YUlBTVFEeG9nQmhBUEdpQUNFQThhSUFRUUR4b01BUXRCQVNFRUlBWXRBQkJCQVhGRkJFQWdBQ0FEUWRBQWFrR1Z0d1FRRkNJQUlBRkJFR29RSnlBQUVBOGFEQUVMSUFVb0FpQkJBVWNOQVNBRFFUQnFJZ0lnQUNnQ0NDQUZFSmtkSUFOQlFHc2lCRUhQa1FrZ0FoQTFJQU5CMEFCcUlnVWdCRUh6bWdrUUxTQUFJQVVnQVVFUWFoQW5JQVVRRHhvZ0JCQVBHaUFDRUE4YUMwRUFJUVFMSUFOQjhBRnFKQUFnQkFzb0FDQUFRUUEyQXFRQ0lBQkJCaENIRUNBQVFRQTJBckFDSUFBZ0FDZ0N0QUpCQVdvMkFyUUNDOGNGQWdkL0FuNGpBRUd3QVdzaUJDUUFJQUVvQXNRQklnY2dBU2dDekFFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFVQnFJZ1VrQUVFTUlBTkJBWFJCQW1wQmxnRnNRZVFBYmlJRElBTkJERTBiSWdZZ0FTZ0N4QUZMQkVBZ0JVS0FnSUNBZ0FFM0FqUWdCU0FGUVJCcUlnTTJBakFnQXlBQktBTE1BUkM3Q1NBQktBTEFBU0lESUFFb0FzUUJRUVIwYWlFSEEwQUNRQ0FESUFkR0JFQWdBUkRxQkNBQklBWVE1QVFnQlNnQ01DSURJQVVvQWpSQkFuUnFJUVlNQVFzZ0F5MEFCQVJBSUFWQkVHb2dBeEMrQVJDZkJRc2dBMEVRYWlFRERBRUxDd05BSUFNZ0JrY0VRQ0FGSUFFZ0F4Q3JIQ0FEUVFScUlRTU1BUXNMSUFWQkVHb1FJd3NnQlVGQWF5UUFJQUVvQXNRQklRY0xJQWRCQVdzaENTQUNLQUlBSWdVZ0IzQWhCaUFCS0FMQUFTRUlRUUFoQWdKQUEwQWdBaUFIUndSQUlBZ2dCa0VFZEdvaUF5MEFCRVVFUUNBRFFRRTZBQVFnQXlBRk5nSUFJQWdnQmtFRWRHb2lBeUFDTmdJTUlBTWdCVFlDQ0NBQklBRW9Bc3dCUVFGcU5nTE1BU0FCSUFFb0F0QUJRUUZxTmdMUUFTQUFRZ0EzQWdBTUF3c0NRQ0FES0FJSUlBVkhEUUFnQlNBREtBSUFSdzBBSUFCQ0FqY0NBQXdEQ3lBQ0lBTW9BZ3hMQkVBZ0JDQUZOZ0tvQVNBRUlBVTJBcUFCSUFRZ0FqWUNyQUVnQkVFQk9nQ2tBU0FFSUFRcEE2Z0JJZ28zQXdnZ0JDQUVLUU9nQVNJTE53TUFJQVFnQXlrQ0NEY0RxQUVnQkNBREtRSUFOd09nQVNBRElBczNBZ0FnQXlBS053SUlJQVFnQkNnQ3JBRkJBV28yQXF3QklBRWdCa0VCYWlBQktBTEVBWEFnQkVHZ0FXb1E2d1FnQVNBQktBTE1BVUVCYWpZQ3pBRWdBU0FCS0FMUUFVRUJhallDMEFFZ0FFSUFOd0lBREFNRklBWkJBV3BCQUNBR0lBbEhHeUVHSUFKQkFXb2hBZ3dDQ3dBTEN5QUVRWWExQTBIckEwRU9JQVJCb0FGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFSQnNBRnFKQUFMTEFFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFBZ0FSQ3JIQ0FDS0FJSUlRQWdBa0VRYWlRQUlBQkJBa2NMNGdJQkFYOGpBRUhRQVdzaUNDUUFJQWdnQWpZQ3pBRWdDRUhBQVdwQmcvMEFRYTBySUFjYkVCUWhBZ0ovQWtBZ0JVRUNSZ1JBSUFoQmtBRnFJZ01nQVJEOUhpQUlRYUFCYWlJRVFaM2ZCaUFERURVZ0NFR3dBV29pQlNBRVFiYjZDUkF0SUFnZ0JTQUNFRTRnQUNBSUlBRkJFR29RSnlBSUVBOGFJQVVRRHhvZ0JCQVBHaUFERUE4YURBRUxJQU1RMlE5RkJFQWdDQ0FBS0FJSUlBTVFwd0VnQ0VHZ0FXb2lCRUc1bEFrZ0NCREVBU0FJUWJBQmFpSURJQVJCODVvSkVDMGdBQ0FESUFZUUp5QURFQThhSUFRUUR4b2dBQ0FEUVovK0F4QVVJZ0FnQVVFUWFoQ0dBU0FBRUE4YUlBZ1FEeG9NQVF0QkFTQUVJQWhCekFGcUVLd2NEUUVhSUFnUVNTSURRUWhxSWdSQjYvY0lFQTRhSUFRZ0NDZ0N6QUVRSVJvZ0JFSDB1Z0VRRGhvZ0NFR3dBV29pQkNBRFFReHFFRUlnQUNBRUlBRkJFR29RSnlBRUVBOGFJQU1RVVF0QkFBc2hCeUFDRUE4YUlBaEIwQUZxSkFBZ0J3c0VBRUVCQzZvQkFRSi9Jd0JCc0FGcklnUWtBQ0FFSUFJMkFxd0JJQUVvQW93RUlnSWdBU2dDa0FSQkFuUnFJUVVDUUFKQUFrQURRQ0FDSUFWR0RRRWdBaWdDQUNJQklBUW9BcXdCUmcwQ0lBSkJCR29oQWlBQlFaZ0VhaUFFUWF3QmFoRHNCMFVOQUFzZ0FDQUJJQVFvQXF3QklBTVFyeHdNQVFzZ0JFRUlha0hubWdWQmtBRkJDQ0FBRUJjaUFFRVlha0dSZ1FrUURob2dBQkFZREFFTElBTWdBUkRyQndzZ0JFR3dBV29rQUF1cUFRRUNmeU1BUWJBQmF5SUVKQUFnQkNBQ05nS3NBU0FCS0FLTUJDSUNJQUVvQXBBRVFRSjBhaUVGQWtBQ1FBSkFBMEFnQWlBRlJnMEJJQUlvQWdBaUFTQUVLQUtzQVVZTkFpQUNRUVJxSVFJZ0FVR1lCR29nQkVHc0FXb1E3QWRGRFFBTElBQWdBU0FFS0FLc0FTQURFTEFjREFFTElBUkJDR3BCNTVvRlFaQUJRUWdnQUJBWElnQkJHR3BCa1lFSkVBNGFJQUFRR0F3QkN5QURJQUVRNndjTElBUkJzQUZxSkFBTCtBVUJDSDhqQUVIQUFXc2lBeVFBSUFFb0Ftd2lCQ0FCS0FKd1FRSjBhaUVISUFBb0FnZ2hCUUpBQTBBZ0JDQUhSaUlJRFFFQ1FBSkFJQVFvQWdBaUJpZ0NGRUVHUncwQUlBWWdBQ2dDQUNJSktBSUFJZ3BHRFFBZ0NnMEJJQWtnQmpZQ0FDQUFLQUlFSUFFMkFnQUxJQVJCQkdvaEJBd0JDd3NnQXlBQ0tBSkFLQUlrUVNScUVGTWdBMEVRYWlJSFFmR0pDU0FERURVZ0EwRWdhaUlFSUFkQjU3VUhFQzBnQlNBRUlBSW9Ba0JCRUdvUUp5QUVFQThhSUFjUUR4b2dBeEFQR2lBRklBUkJoK3dERUJRaUJDQUdLQUlJUVJCcUVJWUJJQVFRRHhvZ0FTQUNSd1JBSUFVb0FnUWhCaUFESUFVMkFnQWdBeUFCTmdJUUlBSW9Bb3dFSWdRZ0FpZ0NrQVJCQW5ScUlRY0NRQUpBQWtBRFFDQUVJQWRHRFFFZ0JDZ0NBQ0lCSUFNb0FoQkdEUUlnQkVFRWFpRUVJQUZCbUFScUlBTkJFR29RN0FkRkRRQUxJQVlnQVNBREtBSVFJQU1Rc0J3TUFRc2dBMEVnYWtIbm1nVkJrQUZCQ0NBR0VCY2lBVUVZYWtHUmdRa1FEaG9nQVJBWURBRUxJQU1nQVJEckJ3c2dBeUFDS0FKQUtBSWtRU1JxRUZNZ0EwRVFhaUlCUWNtSkNTQURFRFVnQTBFZ2FpSUVJQUZCODVvSkVDMGdCU0FFSUFJb0FrQkJFR29RaGdFZ0JCQVBHaUFCRUE4YUlBTVFEeG9MSUFVZ0EwRWdha0c2N0FNUUZDSUJJQUFvQWdBb0FnQW9BZ2hCRUdvUWhnRWdBUkFQR2lBQUtBSUVLQUlBSWdBZ0FrWU5BQ0FGS0FJRUlRRWdBeUFGTmdJQUlBTWdBRFlDRUNBQ0tBS01CQ0lFSUFJb0FwQUVRUUowYWlFR0FrQUNRQUpBQTBBZ0JDQUdSZzBCSUFRb0FnQWlBQ0FES0FJUVJnMENJQVJCQkdvaEJDQUFRWmdFYWlBRFFSQnFFT3dIUlEwQUN5QUJJQUFnQXlnQ0VDQURFSzhjREFFTElBTkJJR3BCNTVvRlFaQUJRUWdnQVJBWElnQkJHR3BCa1lFSkVBNGFJQUFRR0F3QkN5QURJQUFRNndjTElBTWdBaWdDUUNnQ0pFRWthaEJUSUFOQkVHb2lBRUhKaVFrZ0F4QTFJQU5CSUdvaUFTQUFRZk9hQ1JBdElBVWdBU0FDS0FKQVFSQnFFSVlCSUFFUUR4b2dBQkFQR2lBREVBOGFDeUFEUWNBQmFpUUFJQWdMcmdVQ0IzOEJmaU1BUWNBQmF5SUZKQUFnQUNnQ0FDSUpLQUlBSVFnQ1FBSkFBa0FnQWlnQ1FCQ0VBeUlHUVFKR0RRQWdBU2dDYkNJRElBRW9BbkJCQW5ScUlRY0RRQ0FESUFkR0RRRWdBeWdDQUNFRUlBTkJCR29oQXlBRUtBSVVRUWxIRFFBTElBVkJNR29RU1NJQUlBWVFtUWthSUFRb0FrUWlBeUFFS0FKSVFRSjBhaUVIQWtBRFFDQURJQWRHRFFFZ0F5Z0NBQ0VHSUFOQkJHb2hBeUFHS0FJTUtBSVFJQUZIRFFBTElBVWdBRUVNYWhCQ0lBVkJFR29pQTBIS3dRa2dCUkExSUFWQklHb2lCeUFEUWJqQkJCQXRJQWdnQnlBR0tBSUlRUkJxRUNjZ0J4QVBHaUFERUE4YUlBVVFEeG9MSUFnZ0JVRWdha0h6N1FNUUZDSURJQVFvQWdoQkVHb1FoZ0VnQXhBUEdpQUpLQUlFSUFFZ0FoQ0pFQXdCQ3lBQUtBSUVJZ1lvQWdBaEJ5QUNLQUpBRUlRRElRZ2dBU2dDL0FVaUF5QUJLQUtBQmtFQ2RHb2hDVUlCSUFpdGhpRUtBa0FEUUNBRElBbEdEUUVnQXlnQ0FDRUVJQU5CQkdvaEF5QUVLUU5JSUFxRFFnQlNEUUFMQW44Z0FVSFFDV29vQWdBaENTQUJLQUxNQ1NFQUEwQkJBQ0FBSUFsR0RRRWFJQUFvQWdBaEF5QUFRUVJxSVFBZ0F5Z0NMQ0FFUncwQUN5QURDeUVFSUFWQk1Hb1FTU0lBUVFocVFlN0JDUkFPR2lBQUlBZ1FtUWxCQ0dwQnVNRUVFQTRhSUFWQklHb2lBeUFBUVF4cUVFSWdCeUFESUFSQkNHb2dBVUZBYXlBRUd5Z0NBRUVRYWhBbklBTVFEeG9nQmlnQ0JDQUJJQUlRaVJBTUFRdEJBU0VESUFJb0FrQVFoQU5CQVVZTkFTQUJLQUx3Q1NJSVJRMEJJQUFvQWdnaUF5Z0NBQ0VHSUFJb0FrQVFoQU1oQkNBRlFUQnFFRWtpQUVFSWFrR3FrUW9RRGhvZ0FDQUVFSmtKUVFocVFiakJCQkFPR2lBRlFTQnFJZ1FnQUVFTWFoQkNJQVlnQkNBSUtBSUlRUkJxRUNjZ0JCQVBHaUFES0FJRUlBRWdBaENKRUFzZ0FCQlJRUUFoQXdzZ0JVSEFBV29rQUNBREN6WUJBWDhqQUVFUWF5SURKQUFnQVJES0F5SUJSUVJBSUFBZ0EwR0Zod2tRRkNJQUlBSVFKeUFBRUE4YUN5QURRUkJxSkFBZ0FRdjhBZ0VNZnlBQUtBSUFJZ1FvQXRRRUlnY2dBQ2dDREVZRVFDQUFLQUlJRHdzakFFRVFheUlCSkFBakFFSEFBV3NpQXlRQUlBTkJ1QUZxSUFRZ0FFRUVhaUlDRU9zRElBUW9Bc1FFSWdoQkFXc2hDU0FDS0FJQUlRb2dCQ2dDd0FRaEN5QURLQUs4QVNFTUlBTW9BcmdCSVFJQ1FBTkFJQVVnQ0VjRVFDQUxJQUpCTUd4cUlnWXRBQ0JGQkVBZ0FVRUFOZ0lNSUFGQkFEb0FDQXdEQ3dKQUlBWW9BaWdnREVjTkFDQUtJQVlvQWdCSERRQWdBU0FDTmdJTUlBRkJBVG9BQ0F3REN5QUZJQVlvQWl4TEJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REJTQUNRUUZxUVFBZ0FpQUpSeHNoQWlBRlFRRnFJUVVNQWdzQUN3c2dBMEVJYWtHR3RRTkJuZ1JCRGlBRFFhZ0JhaEFkSWdJUUZ5SUZRUmhxUWRJMUVBNGFJQVVRR0NBQlFRQTJBZ3dnQVVFQU9nQUlJQUlRSGdzZ0EwSEFBV29rQUNBQktBSU1JUU1nQkNnQ3dBUWhBaUFCTFFBSUlRUWdBVUVRYWlRQUlBQWdCellDRENBQUlBSWdBMEV3YkdwQkNHcEJBQ0FFR3lJQU5nSUlJQUFMelFZQ0RuOERmaU1BUVlBQ2F5SUVKQUFnQUNnQ0NDRU9Ba0FnQUNnQ0FDQUJFUDRQSWdWQkFFZ0VRRUVCSVFZTUFRc2dCRUh3QVdvZ0FSQ2tHeEFVSVFFQ1FBSkFJQUFvQWdRb0FnQW9BbEFnQlVFQ2RHb29BZ0FpRHlnQ0hDSUZCRUFnQXF3aEV5QUZJQVVvQWdBb0FnZ1JBQUFRc2dJaUJ3UkFJQU90SVJSQkFDRUFRUUVoQmdOQUlBQWdCeWdDSEU4TkJDQVRJQVVnQUNBRktBSUFLQUlNRVFFQUVHTWlFbGNnRWlBVVYzRUVRQ0FBUVFGcUlRQU1BUVVnQkVGQWF5SUZRWnZEQ2lBQkVNUUJJQVJCMEFCcUlnWWdCVUd3eGdrUUxTQUVRVEJxSWdjZ0FoRDJCQ0FFUWVBQWFpSUNJQVlnQnhCT0lBUkI4QUJxSWdnZ0FrRzZ4UWtRTFNBRVFTQnFJZ2tnQXhEMkJDQUVRWUFCYWlJRElBZ2dDUkJPSUFSQmtBRnFJZ29nQTBIeTVnd1FMU0FFUWFBQmFpSUxJQW9nQVJCT0lBUkJzQUZxSWd3Z0MwSG95d2tRTFNBRVFSQnFJZzBnQUJCZklBUkJ3QUZxSWdBZ0RDQU5FRTRnQkVIUUFXb2lFQ0FBUWZ2ZkNSQXRJQVFnRWhEM0JpQUVRZUFCYWlJUklCQWdCQkJPSUE0Z0VTQVBLQUlJUVJCcUVDY2dFUkFQR2lBRUVBOGFJQkFRRHhvZ0FCQVBHaUFORUE4YUlBd1FEeG9nQ3hBUEdpQUtFQThhSUFNUUR4b2dDUkFQR2lBSUVBOGFJQUlRRHhvZ0J4QVBHaUFHRUE4YUlBVVFEeG9NQkFzQUN3QUxJQk1nQlJCakloSlhCRUJCQVNFR0lCSWdBNjFYRFFNTElBUkI0QUJxSWdCQnJjTUtJQUVReEFFZ0JFSHdBR29pQlNBQVFiREdDUkF0SUFSQjBBQnFJZ1lnQWhEMkJDQUVRWUFCYWlJQ0lBVWdCaEJPSUFSQmtBRnFJZ2NnQWtHNnhRa1FMU0FFUVVCcklnZ2dBeEQyQkNBRVFhQUJhaUlESUFjZ0NCQk9JQVJCc0FGcUlna2dBMEh5NWd3UUxTQUVRY0FCYWlJS0lBa2dBUkJPSUFSQjBBRnFJZ3NnQ2tINzN3a1FMU0FFUVRCcUlnd2dFaEQzQmlBRVFlQUJhaUlOSUFzZ0RCQk9JQTRnRFNBUEtBSUlRUkJxRUNjZ0RSQVBHaUFNRUE4YUlBc1FEeG9nQ2hBUEdpQUpFQThhSUFNUUR4b2dDQkFQR2lBSEVBOGFJQUlRRHhvZ0JoQVBHaUFGRUE4YUlBQVFEeG9NQVFzZ0JFSFFBV29pQUVHdHd3b2dBUkRFQVNBRVFlQUJhaUlDSUFCQnhlUUNFQzBnRGlBQ0lBOG9BZ2hCRUdvUUp5QUNFQThhSUFBUUR4b0xRUUFoQmdzZ0FSQVBHZ3NnQkVHQUFtb2tBQ0FHQ3hjQUlBQkJtSm9TUWNpT0VrS0FnTUNnZ01BRUVNWU1DeFVBSUFBUXNnSWlBRVVFUUVFQkR3c2dBQ2dDSEFzaEFDQUFJQUZCQTBzRWYwR3M0Z1lGSUFGQkFuUkIxSXdTYWlnQ0FBc1FGQm9MRkFBZ0FFRUFOZ0trQWlBQUlBQW9BcUFDRURZTEtBQWdBRUVBTmdLa0FpQUFRUXdRaUJBZ0FFRUFOZ0tzQWlBQUlBQW9BckFDUVFGcU5nS3dBZ3VpQ1FFSmZ5TUFRZkFCYXlJSEpBQWdBU2dDQUNJSktBSUFJZ3dnQ1NnQ0JFRUNkR29oRHlBQUtBSUFJUWdDUUFKQUFrQUNRQUpBQWtBQ1FBTkFJQXdnRDBjRVFBSkFJQXdvQWdBaUNTZ0NCQ0lMUWZqNkVVY2dDVVZ5UlFSQUlBY2dDQ2dDQ0NBSkVKWUpLQUlRTmdJd0lBb0VRQ0FJSUFkQlFHc2lBRUhyc1FFUUZDSUJJQWxCRUdvUUp5QUJFQThhSUFkQjRBRnFJZ0VnQ2hDaEhDQUFRYVhkQ2lBQkVEVWdDQ0FBSUFwQkVHb1FoZ0VnQUJBUEdpQUJFQThhREFvTElBQW9BZ1FnQjBFd2FoQ3RCQVJBSUFkQlFHc1FTU0lCUVFocVFZVDRDQkFPR2lBQklBY29BakFRbXdSQkNHb2lBa0hNdlFvUURob2dBa0d0SzBIYUt5QUVHeEFPR2lBSFFlQUJhaUlDSUFGQkRHb1FRaUFJSUFJZ0FDZ0NDQ2dDQUVFUWFoQW5JQUlRRHhvZ0FSQlJEQW9MSUFnZ0NTQUNJQUFvQWd3b0FnQWdCRVVRdnh4RkRRa2dBQ2dDQkNFTEl3QkJFR3NpQ2lRQUlBcEJDR29nQ3lBSFFUQnFFS0FjSUFvb0FnZ2FJQXBCRUdva0FDQUpJUW9NQVFzZ0NVVWdDMEdZL1JGSGNrVUVRQ0FLQkVBZ0NDQUhRVUJySWdCQjY3RUJFQlFpQVNBSlFSQnFFQ2NnQVJBUEdpQUhRZUFCYWlJQklBb1FvUndnQUVHbDNRb2dBUkExSUFnZ0FDQUtRUkJxRUlZQklBQVFEeG9nQVJBUEdnd0tDeUFHTFFBRVJRUkFJQWRCUUd0QjU1b0ZRZFlJUVFnZ0NDZ0NCQkFYSWdCQkdHcEJqOUFERUE0YUlBQVFHQXdLQ3lBSUlBa2lDaUFHRUw0QktBSUFJQUlnQUNnQ0VDQUFLQUlNS0FJQUlBTWdCRVVRclJ3TkFRd0pDeUFKUlNBTFFkRDhFVWR5UlFSQUlBQW9BZ2dvQWdBUWhBTkJBa1lOQkNBSUlBa2lEU0FDRUw0Y0RRRU1DUXNnQ1VVZ0MwR29naEpIY2cwQUlBQW9BZ2dvQWdBUWhBTkJBa1lOQXlBSklRNExJQXhCQkdvaERBd0JDd3NnQVNnQ0FDRUJJQWRCQURvQURDQUhJQUUyQWdoQkFTRUJJQWdnQjBFSWFrRURFTEVEUlEwR0FrQWdCVVVOQUNBQ0VNa0pSUTBBSUFnZ0IwRkFhMEhuZ2dZUUZDSUFJQU1RSnlBQUVBOGFEQVlMSUFJUXlRa2dDbkpGQkVBZ0IwRkFhMEdyMkFNUUZDRUFJQVZGQkVBZ0FFR01pQVJCdHVFQklBUWJFUGdHR2dzZ0NDQUFJQU1RSnlBQUVBOGFEQVlMSUFvRVFBSkFJQW9vQWdSQm1QMFJSdzBBSUFJUXJodEZJQTF5RFFBZ0FDZ0NDQ2dDQUJDRUF5QUVRUUZIY2tVRVFDQUlJQWRCUUd0Qmp0Y0RFQlFpQUNBREVDY2dBQkFQR2d3SUN5QUVJQUFvQWdnb0FnQVFoQU5CQVVkeURRVWdDQ0FIUVVCclFkelhBeEFVSWdBZ0F4QW5JQUFRRHhvTUJ3c2dEUTBDREFRTElBME5BaUFPUlEwR0RBUUxJQWRCUUd0QnJTdEJnLzBBSUFRYkVCUWhBQ0FIUVJCcUlnRWdDU0FKS0FJQUtBSU1FUUlBSUFkQklHb2lBa0dkM3dZZ0FSQTFJQWRCTUdvaUF5QUNRYmI2Q1JBdElBZEI0QUZxSWdRZ0F5QUFFRTRnQ0NBRUlBbEJFR29RSnlBRUVBOGFJQU1RRHhvZ0FoQVBHaUFCRUE4YUlBQVFEeG9NQkFzZ0NpZ0NCRUdZL1JGR0RRRUxJQWdnQjBGQWEwR1o0Z0lRRkNJQUlBMUJFR29RSnlBQUVBOGFEQUlMSUE1RkRRSWdDaWdDQkVINCtoRkhEUUFnQ0NnQ0NDQUtFSllKS0FJUVFRbEdEUUlMSUFnZ0IwRkFhMEdmN3dJUUZDSUFJQTVCRUdvUUp5QUFFQThhQzBFQUlRRUxJQWRCOEFGcUpBQWdBUXZaQndJSmZ3TitJd0JCd0FGcklnVWtBQ0FCS0FLa0FpQUJLQUtzQWlJRVFaWUJiRUdXQVdwQjVBQnVTUVJBSXdCQmdBRnJJZ1lrQUVFTUlBUkJBWFJCQW1wQmxnRnNRZVFBYmlJRUlBUkJERTBiSWdzZ0FTZ0NwQUpMQkVBZ0JrS0FnSUNBZ0FFM0FuUWdCaUFHUVJCcUlnUTJBbkFnQkNBQktBS3NBaENaSENBQktBS2dBaUlFSUFFb0FxUUNRUmhzYWlFTUEwQUNRQ0FFSUF4R0JFQWdBUkM2SENBQklBc1FpQkFnQmlnQ2NDSUVJQVlvQW5SQkRHeHFJUWNNQVFzZ0JDMEFEQVJBSUFRUXNBa2hDaUFHUVJCcUlnY29BbVFpQ0NBSEtBSm9Ud1JBSUFjZ0J5Z0NhQ0lJUVFGMFFRSWdDQnNRbVJ3Z0J5Z0NaQ0VJQ3lBSElBaEJBV28yQW1RZ0J5Z0NZQ0FJUVF4c2FpSUhJQW9vQWdnMkFnZ2dCeUFLS1FJQU53SUFDeUFFUVJocUlRUU1BUXNMQTBBZ0JDQUhSd1JBSUFaQkNHb2dBU0FFSUFSQkNHb1F2QndnQkVFTWFpRUVEQUVMQ3lBR1FSQnFFTGdMQ3lBR1FZQUJhaVFBQ3lBQktBS2tBaUVFSUFVZ0FpZ0NBRUdTc2FqNkIyb2lCaUFDS0FJRUlBWkJBblpCa3JHbytnZHphbk5CazZRR2N5SUdOZ0s4QVNBRklBWWdCSEEyQXJnQklBRW9BcVFDSWdkQkFXc2hDQ0FGS0FLNEFTRUdBa0FEUUNBSElBbEhCRUFnQVNnQ29BSWlDaUFHUVJoc2FpSUVMUUFNUlFSQUlBSXBBZ0FoRFNBREtBSUFJUUlnQkVFQk9nQU1JQVFnQWpZQ0NDQUVJQTAzQWdBZ0JTZ0N2QUVoQWlBS0lBWkJHR3hxSWdNZ0NUWUNGQ0FESUFJMkFoQWdBU0FCS0FLc0FrRUJhallDckFJZ0FTQUJLQUt3QWtFQmFqWUNzQUlnQUNBRVFRaHFOZ0lFSUFCQkFEWUNBQXdEQ3lBRUtBSVFJQVVvQXJ3QlJnUi9JQUlvQWdBZ0JDZ0NBRVlnQWlnQ0JDQUVLQUlFUm5FRlFRQUxCRUFnQUVFQ05nSUFJQUFnQkVFSWFqWUNCQXdEQ3lBSklBUW9BaFJMQkVBZ0Fpa0NBQ0VOSUFVZ0F5Z0NBRFlDcUFFZ0JTQUZLQUs4QVRZQ3NBRWdCU0FOTndPZ0FTQUZJQWsyQXJRQklBVkJBVG9BckFFZ0JTQUZLUU93QVNJT053TVFJQVVnQlNrRHFBRWlEemNEQ0NBRklBMDNBd0FnQlNBRUtRSVFOd093QVNBRklBUkJDR29pQWlrQ0FEY0RxQUVnQlNBRUtRSUFOd09nQVNBRUlBMDNBZ0FnQkNBT053SVFJQVFnRHpjQ0NDQUZJQVVvQXJRQlFRRnFOZ0swQVNBQklBWkJBV29nQVNnQ3BBSndJQVZCb0FGcUVJSVFJQUVnQVNnQ3JBSkJBV28yQXF3Q0lBRWdBU2dDc0FKQkFXbzJBckFDSUFBZ0FqWUNCQ0FBUVFBMkFnQU1Bd1VnQmtFQmFrRUFJQVlnQ0VjYklRWWdDVUVCYWlFSkRBSUxBQXNMSUFWQmhyVURRZXNEUVE0Z0JVR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCVUhBQVdva0FBdWNBd0lGZndGK0l3QkJrQUZySWdZa0FDQUFLQUlFSVFrZ0FDZ0NBQ0VJSUFFb0FnQWhBU0FHUVFBNkFJd0JJQVlnQVRZQ2lBRWdCaUFGS1FJQUlnczNBNEFCSUFZZ0F5a0NDRGNETUNBR0lBTW9BaEEyQWpnZ0JpQURLUUlBTndNb0lBWWdDemNESUFKQUlBZ2dCa0dJQVdvZ0FpQUdRU2hxSUFSQkFDQUdRU0JxRUxzY1JRMEFRUUVoQnlBQ1JRMEFJQUlvQWdSQmdKa1NSdzBBSUFJb0FrUWlBU0FDS0FKSVFRSjBhaUVGQTBBZ0FTQUZSZzBCSUFBb0FnQWhDQ0FCS0FJQUlnTW9BbHdoQWlBR1FRQTZBSHdnQmlBQ1FUeHFOZ0o0SUFNb0FpZ2hDaUFHSUFNcEFqd2lDemNEY0NBR0lBSXBBaGczQXhBZ0JpQUNLQUlnTmdJWUlBWWdBaWtDRURjRENDQUdJQXMzQXdBZ0FVRUVhaUVCSUFnZ0JrSDRBR29nQ2lBR1FRaHFJQVJCQVNBR0VMc2NEUUFMSUFaQlFHc2lBU0FBS0FJSUtBSUFLQUlrUVNScUVGTWdCa0hRQUdvaUFrSGhpUWtnQVJBMUlBWkI0QUJxSWdNZ0FrSHptZ2tRTFNBSklBTWdBQ2dDQ0NnQ0FFRVFhaENHQVNBREVBOGFJQUlRRHhvZ0FSQVBHa0VBSVFjTElBWkJrQUZxSkFBZ0J3dWRBUUVDZnlNQVFSQnJJZ01rQUNBQ0VJUUJJUVFDZjBFQUlBQW9BZ2dpQWlBQ0lBRW9BaVFRaWg0UWtCNGlBa1VOQUJvQ1FBSkFJQVFRcmh0RkRRQWdBaWdDRUVFQlJnMEFJQUFnQTBHQXVRRVFGQ0lBSUFGQkVHb1FKd3dCQzBFQklBRW9BaWhGRFFFYVFRRWdBaWdDRUVFQlJ3MEJHaUFBSUFOQnhPRUJFQlFpQUNBQlFSQnFFQ2NMSUFBUUR4cEJBQXNoQWlBRFFSQnFKQUFnQWd2N0JnRUZmeU1BUWJBQ2F5SUZKQUFnQWhDRUFTRUdJQVZCb0FGcUVFa2lDU0FERUprSkdrRUJJUUlDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQW9BZ2dnQVJDV0NTZ0NFQ0lJUVFKckRnd0NBd0VGQVFRQkFBY0dCUUVLQ3dKQUlBWVF0QU1FZnlBR0tBSVlFTEViQlVFQUMwVU5BQ0FHRUxJQ0tBSWNRUVJIRFFBZ0EwRUFSeUFFY2lBRFFRRkdJQVJ4SUFOQmYwWnljeUVIREFnTElBVkJFR29RU1NJQ1FRaHFRZmIzQ0JBT0dpQUNRUWtRbXdSQkNHcEJ4SVlKRUE0YURBZ0xBa0FDUUFKQUlBTkJBV29PQkFJQkFRQUJDeUFFRFFFTFFRRWhCd3NnQmhDdkd3UkFJQVlRc2dJb0FoeEJBMFlOQndzZ0JVRVFhaEJKSWdKQkNHcEI5dmNJRUE0YUlBSWdDQkNiQkVFSWFrR3VoZ2tRRGhvTUJ3c0NRQUpBQWtBZ0EwRUJhZzREQWdFQUFRc2dCRVVOQVF0QkFTRUhDeUFHS0FJRVFiQ3BFa1lOQlNBRlFSQnFFRWtpQWtFSWFrSDI5d2dRRGhvZ0FrRUNFSnNFUVFocVFkYUhDUkFPR2d3R0N3SkFBa0FDUUNBRFFRRnFEZ01DQVFBQkN5QUVEUUVMUVFFaEJ3c2dCaWdDQkVIUXBSSkdEUVFnQlVFUWFoQkpJZ0pCQ0dwQjl2Y0lFQTRhSUFKQkF4Q2JCRUVJYWtHd2hBa1FEaG9NQlFzQ1FBSkFBa0FnQTBFQmFnNEVBZ0VCQUFFTElBUU5BUXRCQVNFSEN5QUdLQUlFUWFDekVrWU5BeUFGUVJCcUVFa2lBa0VJYWtIMjl3Z1FEaG9nQWtFSEVKc0VRUWhxUWNhSENSQU9HZ3dFQ3dKQUFrQUNRQ0FEUVFGcURnSUNBQUVMSUFRTkFRdEJBU0VIQ3lBR0tBSUVRYUN6RWtZTkFpQUZRUkJxRUVraUFrRUlha0gyOXdnUURob2dBaUFJRUpzRVFRaHFRY2FIQ1JBT0dnd0RDeUFHS0FJRVFhQ3pFa1lFUUNBRFFRRkhJQU5CZjBkeElRY01BZ3NnQlVFUWFoQkpJZ0pCQ0dwQjl2Y0lFQTRhSUFKQkN4Q2JCRUVJYWtIR2h3a1FEaG9NQWdzQ1FBSkFBa0FnQTBFQmFnNERBZ0VBQVFzZ0JBMEJDMEVCSVFjTElBWW9BZ1JCb0xNU1JnMEFJQVZCRUdvUVNTSUNRUWhxUWZiM0NCQU9HaUFDUVFvUW13UkJDR3BCeG9jSkVBNGFEQUVMSUFkRkRRRWdCVUVRYWhCSklnSkJDR3BCaFBnSUVBNGFJQUlnQ0JDYkJFRUlhaUlEUWMrUkNoQU9HaUFEUVp5c0NrR1JyQW9nQkJzUURob2dCU0FKUVF4cUVFSWdBeUFGRUJJYUlBTkJ1TUVFRUE0YUlBVVFEeG9MSUFVZ0FrRU1haEJDSUFBZ0JTQUJRUkJxRUNjZ0JSQVBHaUFDRUZGQkFDRUNDeUFKRUZFZ0JVR3dBbW9rQUNBQ0N4SUFJQUJCOTVFTVFlWUVRZWVhQlJERERBc1pBQ0FBUVlDTkVrSG9qQkpDd0lDQWtJQ0FpSUFJRU1ZTUM4c0VBZ2QvQVg0akFFSFFBR3NpQWlRQUlBRW9BZ2dpQkVFQUlBUW9BZ1JCMlBnUlJoc2hCQUpBSUFFb0Fnd1FoQUVpQXhDWUNRUi9RUUVGSUFNRWZ3Si9RUUFnQXlnQ0JDSUZLUU1RUW9DQWdJQ1FpSVNBQVlNaUNTQUpRZ0Y5ZzFBTkFCcEJBU0FGRU5rTERRQWFJQVVRMkFzTEJVRUFDd3RGQkVBZ0FrRXdhaUlCSUFBb0FnZ2dBeENuQVNBQ1FVQnJJZ01nQVVINy9nRVFMU0FBSUFNZ0JFRVFhaEFuSUFNUUR4b2dBUkFQR2d3QkN3SkFJQU1RMkE5RkRRQWdCQ2dDUkVVTkFDQUNRU0JxSWdFZ0FDZ0NDQ0FERUtjQklBSkJNR29pQTBIOWt3a2dBUkExSUFKQlFHc2lCU0FEUWVmWUJCQXRJQUFnQlNBRVFSQnFFQ2NnQlJBUEdpQURFQThhSUFFUUR4b01BUXNDUUNBRUtBSklSUTBBSUFFb0FoUkJCMFlOQUNBQUlBSkJRR3RCN3N3RUVCUWlBQ0FFUVJCcUVDY2dBQkFQR2d3QkN3SkFJQVFvQWl4RkRRQUNRQ0FCS0FJVUlnTkJBMnNPQXdFQUFRQUxJQUlnQXpZQ0hDQUNRU0JxSWdFZ0FrRWNhaEQ3QlNBQ1FUQnFJZ05CajVjSklBRVFOU0FDUVVCcklnVWdBMEdGZ2drUUxTQUFJQVVnQkVFUWFoQW5JQVVRRHhvZ0F4QVBHaUFCRUE4YURBRUxJQUVvQWd3UWhBRWhBeUFCS0FJVUlRVWdBU2dDR0NFSElBSkJBRG9BRkNBQ0lBUkJPR29pQ0RZQ0VDQUFJQU1nQnlBRklBSkJFR29nQkVFUWFpSUVFTWdjUlEwQUlBSkJBRG9BRENBQ0lBZzJBZ2hCQVNFR0lBQWdBa0VJYWtFQ0VMRURSUTBBSUFFb0FoUkJBV3RCQVVzTkFDQUFJQUpCUUd0QnZkZ0VFQlFpQUNBRUVDY2dBQkFQR2tFQUlRWUxJQUpCMEFCcUpBQWdCZ3NTQUNBQVFmcVNERUcrQkVIbm1nVVF3d3dMaVFZQ0IzOENmaU1BUWNBQmF5SUVKQUFnQVNnQzlBRWdBU2dDL0FFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFlQUFheUlGSkFCQkRDQURRUUYwUVFKcVFaWUJiRUhrQUc0aUF5QURRUXhOR3lJSElBRW9BdlFCU3dSQUlBVkNnSUNBZ0lBQk53SlVJQVVnQlVFUWFpSUROZ0pRSUFNZ0FTZ0MvQUVRc1FRZ0FTZ0M4QUVpQXlBQktBTDBBVUVVYkdvaENBTkFBa0FnQXlBSVJnUkFJQUVRc2dVZ0FTQUhFUE1FSUFVb0FsQWlBeUFGS0FKVVFRTjBhaUVIREFFTElBTXRBQWdFUUNBRlFSQnFJQU1RdWdJUXNRVUxJQU5CRkdvaEF3d0JDd3NEUUNBRElBZEhCRUFnQlNBQklBTVF4QndnQTBFSWFpRUREQUVMQ3lBRlFSQnFFSlVCQ3lBRlFlQUFhaVFBQ3lBQ0lBSkJCR29Rc0F3aEF5QUJLQUwwQVNFRklBUWdBellDdkFFZ0JDQURJQVZ3TmdLNEFTQUJLQUwwQVNJSFFRRnJJUWdnQkNnQ3VBRWhCUUpBQTBBZ0JpQUhSd1JBSUFFb0F2QUJJZ2tnQlVFVWJHb2lBeTBBQ0VVRVFDQUNLUUlBSVFvZ0EwRUJPZ0FJSUFNZ0NqY0NBQ0FFS0FLOEFTRUNJQWtnQlVFVWJHb2lBeUFHTmdJUUlBTWdBallDRENBQklBRW9BdndCUVFGcU5nTDhBU0FCSUFFb0FvQUNRUUZxTmdLQUFpQUFRZ0EzQWdBTUF3c2dBeUFFS0FLOEFTQUNFTDRkQkVBZ0FFSUNOd0lBREFNTElBWWdBeWdDRUVzRVFDQUNLUUlBSVFvZ0JFRUJPZ0NvQVNBRUlBWTJBckFCSUFRZ0NqY0RvQUVnQkNBRUtBSzhBVFlDckFFZ0JDQUdOZ0lRSUFRZ0JDa0RxQUVpQ3pjRENDQUVJQW8zQXdBZ0JDQURLQUlRTmdLd0FTQUVJQU1wQWdnM0E2Z0JJQVFnQXlrQ0FEY0RvQUVnQXlBR05nSVFJQU1nQ2pjQ0FDQURJQXMzQWdnZ0JDQUVLQUt3QVVFQmFqWUNzQUVnQVNBRlFRRnFJQUVvQXZRQmNDQUVRYUFCYWhDeUJDQUJJQUVvQXZ3QlFRRnFOZ0w4QVNBQklBRW9Bb0FDUVFGcU5nS0FBaUFBUWdBM0FnQU1Bd1VnQlVFQmFrRUFJQVVnQ0VjYklRVWdCa0VCYWlFR0RBSUxBQXNMSUFSQmhyVURRZXNEUVE0Z0JFR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdEJBUUYrSUFCRkJFQkJBQThMQW45QkFDQUFLQUlFSWdBcEF4QkNnZUNBZ29DQWlBR0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FCQ0NDQTBBR2lBQUVMY1FDd3UwQVFFRmZ5TUFRVUJxSWdFa0FDQUJRVGhxSUFBb0FnQWlBeWdDdkFvZ0FDZ0NCQkQvQzBFQklRSUNRQ0FCTFFBOFJRMEFJQUFvQWdnUXh4d2lCVVVOQUNBRElBRkJLR29pQkNBRkVCUWlBaUFBS0FJTUVDY2dBaEFQR2lBQlFRaHFJZ0lnQXlnQ0NDQUFLQUlFS0FJQUVLY0JJQUZCR0dvaUFFSFVrQWtnQWhBMUlBUWdBRUdON2dNUUxTQURJQVFnQVNnQ09CQ0dBU0FFRUE4YUlBQVFEeG9nQWhBUEdrRUFJUUlMSUFGQlFHc2tBQ0FDQ3p3QkFYOUJ5OW9FSVFFQ1FBSkFBa0FnQUNnQ0FDZ0NBRUVIYXc0REFBSUJBZ3NnQUNnQ0JDZ0NBRUVDUmcwQVFiUE5CQThMUVFBaEFRc2dBUXVQQXdFQ2Z5TUFRZUFBYXlJR0pBQWdCaUFDTmdKSUlBWWdBVFlDVENBR0lBTTJBa1FnQmlBRktRSUlOd01RSUFZZ0JTZ0NFRFlDR0NBR0lBVXBBZ0EzQXdnQ1FDQUFJQUVnQXlBR1FRaHFFSThRUlEwQUFrQWdBMEVHUmdSQUlBQW9BcmdLSVFJZ0JrRUVOZ0lnSUFKQkhHb2dCa0VnYWhDdEJBMEJJQVFvQWdBaEFpQUdRUUE2QUR3Z0JpQUNOZ0k0SUFBZ0JrRTRha0VDRUxFRFJRMEJJQUFnQmtFZ2FrR2Ivd2dRRkNJQUlBVVFKeUFBRUE4YURBSUxJQU5CQjBjZ0FrRURSM0lOQUNBQUlBWkJJR3BCbGR3RUVCUWlBQ0FGRUNjZ0FCQVBHZ3dCQ3lBR0lBWkJ5QUJxTmdJMElBWWdCa0hFQUdvMkFqQWdCaUFGTmdJc0lBWWdBRFlDSUNBR0lBWkJNR28yQWlnZ0JpQUdRY3dBYWpZQ0pFRUJJUWNnQVVVTkFDQUJLQUlFSWdGQjhLUVNSZ1JBSUFaQk1Hb1F4eHdpQVVVTkFTQUFJQVpCMEFCcUlBRVFGQ0lBSUFVUUp5QUFFQThhUVFBaEJ3d0JDeUFCRU9ZREJFQWdCa0VnYWhER0hDRUhEQUVMSUFGQmtLSVNSdzBBSUFaQklHb1F4aHdoQndzZ0JrSGdBR29rQUNBSEMvQUJBZ04vQVg0RFFDQUJCSDhDZjBFQUlBRW9BZ1FpQWlrREVFS0I1SUNDZ0lDSkFZTWlCU0FGUWdGOWcxQU5BQnBCQVNBQ0VMY1FEUUFhQW45QkFDQUNLUU1RUW9Ha2dJQ0FnQUdESWdVZ0JVSUJmWU5RRFFBYVFRRWdBaENDQ0EwQUdpQUNFSUVJQ3dzRlFRQUxCRUJCQVE4TEFrQWdBVVVOQUNBQktBSUVJZ0lRa1FNZ0FrSHdxaEpHY2lBQ1FaQ2lFa1p5UlFSQUlBSVE1Z01FUUNBQktBSkVJZ0lnQVNnQ1NFRUNkR29oQVFOQUlBRWdBa1lpQXcwRElBSW9BZ0FoQkNBQ1FRUnFJUUlnQUNBRUtBSW9FTWtjRFFBTERBSUxJQUpCOEtRU1J3MEJDeUFCS0FJWUlRRU1BUXNMSUFNTERRQWdBQ2dDQUNnQ0FCREtBd3NNQUNBQUVJTVJHaUFBRUI4TEJ3QWdBQkNERVFzWkFDQUFJQUVnQWlBRFFmQ0xFa0dNakJKQjBJc1NFTnNTQzB3QkEzOGdBQ2dDQUNJQUtBSUFJZ0VnQUNnQ0JFRUNkR29oQWdOQUlBSWdBU0lBUndSQUlBQkJCR29oQVNBQUtBSUFJZ01FZnlBREtBSUVFT3dkQlVFQUMwVU5BUXNMSUFBZ0FrY0xUQUVEZnlBQUtBSUFJZ0FvQWdBaUFTQUFLQUlFUVFKMGFpRUNBMEFnQWlBQklnQkhCRUFnQUVFRWFpRUJJQUFvQWdBaUF3Ui9JQU1vQWdRUXh4QUZRUUFMUlEwQkN3c2dBQ0FDUndzNkFRRi9Jd0JCb0FGcklnRWtBQ0FCUWFXS0JVSGZEa0VJSUFBb0FnQW9BZ2dRRnlJQVFSaHFRWlFLRUE0YUlBQVFHQ0FCUWFBQmFpUUFDOGNNQVFaL0l3QkJrQUpySWdJa0FDQUJSUVJBSUFKQjJBQnFRYVdLQlVHQURrRUlJQUpCeUFCcUVCMGlCUkFYSWdSQkdHcEJzNzhJRUE0YUlBUVFHQ0FGRUI0TElBRW9BZ2doQlNBQ0lBQTJBa0FDUUNBRlJRUkFJQUpCUUdzUTBCd01BUXNnQlNnQ0JDSUVRZmp0RDBZRVFDQUFLQUlFSUFVUWdnTVFvQVFpQVVFQUlBRW9BZ1JCMkp3U1Joc29BaXdoQVNBQ1FkZ0FhaEJKSVFRQ1FDQUJSU0FCS0FJRVFjQ2NFa2R5UlFSQUlBRW9BbGdpQXlnQ0JDRUdJQUlnQVNnQ0NFRTRhallDU0NBQ1FRQTZBRXdnQTBFQUlBWkJnSk1TUmhzaEJpQUNRY2dBYWhEUEhBUi9RYk9OQ2dVZ0FTZ0NDQ0VCSUFKQkFEb0EvQUVnQWlBQlFUaHFOZ0w0QVVIU3hBbEJzL2dKSUFKQitBRnFFTTRjR3dzaEF5QUVRUWhxSWdFZ0F4QU9HaUFCUWZPYUNSQU9HaUFDUWNnQWFpSURJQVVvQWlSQkpHb1FVeUFCSUFNUUVob2dBVUhwa0FrUURob2dBa0g0QVdvaUJ5QUdLQUpBS0FJa1FTUnFFRk1nQVNBSEVCSWFJQUZCMC9ZQ0VBNGFJQWNRRHhvZ0F4QVBHZ3dCQ3lBRVFRaHFJZ05CZzVjS0VBNGFJQU1nQVJDUkVCQU9HaUFEUWZPYUNSQU9HaUFDUWNnQWFpSUJJQVVvQWlSQkpHb1FVeUFESUFFUUVob2dBMEdNMFFNUURob2dBUkFQR2dzZ0FDZ0NDQ0VBSUFKQnlBQnFJZ01nQkVFTWFoQkNJQUlnQWlnQ1RDQUNMUUJUSWdFZ0FVRVlkRUVZZFVFQVNDSUJHellDL0FFZ0FpQUNLQUpJSUFNZ0FSczJBdmdCSUFJZ0Fpa0QrQUUzQXdnZ0FDQUNRUWhxSUFWQkVHb1FyQVFnQXhBUEdpQUVFRkVNQVFzZ0JCRGRCUVJBSUFBb0FnUWdCUkNqQnlFRElBSkIyQUJxRUVraUJFRUlhaUlCUVlPWENoQU9HaUFCSUFNUWtSQVFEaG9nQVVIem1na1FEaG9nQWtISUFHb2lBeUFGS0FJa1FTUnFFRk1nQVNBREVCSWFJQUZCak5FREVBNGFJQU1RRHhvZ0FDZ0NDQ0VBSUFNZ0JFRU1haEJDSUFJZ0FpZ0NUQ0FDTFFCVElnRWdBVUVZZEVFWWRVRUFTQ0lCR3pZQy9BRWdBaUFDS0FKSUlBTWdBUnMyQXZnQklBSWdBaWtEK0FFM0F4QWdBQ0FDUVJCcUlBVkJFR29RckFRZ0FrSElBR29RRHhvZ0JCQlJEQUVMSUFSQnVPNFBSZ1JBSUFKQnlBQnFJQVVvQWlRb0FpUkJKR29RVXdKQUFrQUNRQUpBQWtBQ1FDQUJLQUlBUVFGckRnUUNBUU1BQkFzZ0FDZ0NDQ0VBSUFKQitBRnFJZ1JCd3BBSklBSkJ5QUJxRU1RQklBSkIyQUJxSWdNZ0JFSFQ5Z0lRTFNBQ0lBSW9BbHdnQWkwQVl5SUJJQUZCR0hSQkdIVkJBRWdpQVJzMkFvd0NJQUlnQWlnQ1dDQURJQUViTmdLSUFpQUNJQUlwQTRnQ053TVlJQUFnQWtFWWFpQUZRUkJxRUt3RUlBTVFEeG9nQkJBUEdnd0VDeUFBS0FJRUlBVW9Ba2dnQVNnQ0RFRUNkR29vQWdBUWdnTW9BaEFoQlNBQ1FkZ0FhaEJKSWdSQkNHb2lBVUdEbHdvUURob2dBU0FGRUpFUUVBNGFJQUZCODVvSkVBNGFJQUpCK0FGcUlnTWdCUkNrQkNBQklBTVFFaG9nQVVHTTBRTVFEaG9nQXhBUEdpQUFLQUlJSVFBZ0F5QUVRUXhxRUVJZ0FpQUNLQUw4QVNBQ0xRQ0RBaUlCSUFGQkdIUkJHSFZCQUVnaUFSczJBb3dDSUFJZ0FpZ0MrQUVnQXlBQkd6WUNpQUlnQlNnQ0NDRUJJQUlnQWlrRGlBSTNBeUFnQUNBQ1FTQnFJQUZCRUdvUXJBUWdBa0g0QVdvUUR4b2dCQkJSREFNTElBVW9Ba2dnQVNnQ0RFRUNkR29vQWdBaEFTQUFLQUlJSVFBZ0FrSDRBV29pQkVINml3a2dBa0hJQUdvUXhBRWdBa0hZQUdvaUF5QUVRWkVyRUMwZ0FpQUNLQUpjSUFJdEFHTWlCU0FGUVJoMFFSaDFRUUJJSWdVYk5nS01BaUFDSUFJb0FsZ2dBeUFGR3pZQ2lBSWdBaUFDS1FPSUFqY0RLQ0FBSUFKQktHb2dBVUVRYWhDc0JDQURFQThhSUFRUUR4b01BZ3NnQUNnQ0NDRUFJQUpCK0FGcUlnTkIrNDRKSUFKQnlBQnFFTVFCSUFKQjJBQnFJZ1lnQTBIem1na1FMU0FDSUFJb0Fsd2dBaTBBWXlJRUlBUkJHSFJCR0hWQkFFZ2lCQnMyQW93Q0lBSWdBaWdDV0NBR0lBUWJOZ0tJQWlBRktBSklJQUVvQWd4QkFuUnFLQUlBSVFFZ0FpQUNLUU9JQWpjRE1DQUFJQUpCTUdvZ0FVRVFhaENzQkNBR0VBOGFJQU1RRHhvTUFRc2dBa0hZQUdwQnBZb0ZRZFVPUVFnZ0FDZ0NDQkFYSWdCQkdHcEJsQW9RRGhvZ0FCQVlDeUFDUWNnQWFoQVBHZ3dCQ3lBRUVMZ1NCRUFnQUNnQ0NDRUFJQUpCSnpZQ1hDQUNRYXYyQWpZQ1dDQUNJQUlwQTFnM0F6Z2dBQ0FDUVRocUlBVkJFR29RckFRTUFRc2dBa0ZBYXhEUUhBc2dBa0dRQW1va0FBc2hBQ0FCS0FJUUlnRkZCRUFRYndBTElBQWdBU0FDSUFFb0FnQW9BaGdSQlFBTHpBVUNDSDhDZmlNQVFjQUJheUlFSkFBZ0FTZ0NaQ0FCS0FKc0lnTkJsZ0ZzUVpZQmFrSGtBRzVKQkVBakFFRXdheUlGSkFCQkJpQURRUUYwUVFKcVFaWUJiRUhrQUc0aUF5QURRUVpOR3lJR0lBRW9BbVJMQkVBZ0JVS0FnSUNBd0FBM0FpUWdCU0FGUVJCcUlnTTJBaUFnQXlBQktBSnNFTllDSUFFb0FtQWlBeUFCS0FKa1FRUjBhaUVIQTBBQ1FDQURJQWRHQkVBZ0FSRHFCU0FCSUFZUTZBVWdCU2dDSUNJRElBVW9BaVJCQW5ScUlRWU1BUXNnQXkwQUJBUkFJQVZCRUdvZ0F4QytBUkJ4Q3lBRFFSQnFJUU1NQVFzTEEwQWdBeUFHUndSQUlBVWdBU0FERU5NY0lBTkJCR29oQXd3QkN3c2dCVUVRYWhCZUN5QUZRVEJxSkFBTElBUkJ1QUZxSUFFZ0FoRFdEaUFCS0FKa0lnbEJBV3NoQ2lBQ0tBSUFJUVlnQVNnQ1lDRUlJQVFvQXJ3QklRY2dCQ2dDdUFFaEJVRUFJUUlDUUFOQUlBSWdDVWNFUUNBSUlBVkJCSFJxSWdNdEFBUkZCRUFnQTBFQk9nQUVJQU1nQmpZQ0FDQUlJQVZCQkhScUlnTWdBallDRENBRElBYzJBZ2dnQVNBQktBSnNRUUZxTmdKc0lBRWdBU2dDY0VFQmFqWUNjQ0FBUWdBM0FnQU1Bd3NDUUNBREtBSUlJQWRIRFFBZ0JpQURLQUlBUncwQUlBQkNBamNDQUF3REN5QUNJQU1vQWd4TEJFQWdCQ0FITmdLd0FTQUVJQVkyQXFnQklBUWdBallDdEFFZ0JFRUJPZ0NzQVNBRUlBUXBBN0FCSWdzM0F4QWdCQ0FFS1FPb0FTSU1Od01JSUFRZ0F5a0NDRGNEc0FFZ0JDQURLUUlBTndPb0FTQURJQXczQWdBZ0F5QUxOd0lJSUFRZ0JDZ0N0QUZCQVdvMkFyUUJJQUVnQlVFQmFpQUJLQUprY0NBRVFhZ0JhaEQwQlNBQklBRW9BbXhCQVdvMkFtd2dBU0FCS0FKd1FRRnFOZ0p3SUFCQ0FEY0NBQXdEQlNBRlFRRnFRUUFnQlNBS1J4c2hCU0FDUVFGcUlRSU1BZ3NBQ3dzZ0JFRUlha0dHdFFOQjZ3TkJEaUFFUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBRVFjQUJhaVFBQzBFQkFYNGdBRVVFUUVFQUR3c0NmMEVBSUFBb0FnUWlBQ2tERUVLQWdJQ0FnTENDQ1lNaUFTQUJRZ0Y5ZzFBTkFCcEJBU0FBRU5ZY0RRQWFJQUFRMXh3TEM0SUJBUUovSUFFZ0FDZ0NTRXNFUUNBQUtBSkFJUU1nQUNFQ0lBQWdBVUVJVHdSL1FYOGdBVUVEZENBQlFmLy8vLzhCU3hzUUZTRUNJQUVGUVFnTE5nSklJQUFnQWpZQ1FFRUFJUUVEUUNBQUtBSkVJQUZOQkVBZ0FDQURFRFlGSUFGQkEzUWlBaUFBS0FKQWFpQUNJQU5xS1FJQU53SUFJQUZCQVdvaEFRd0JDd3NMQ3dvQUlBQkI0SlFTRUVnTE9RRUJmZ0ovUVFBZ0FDa0RFRUtBZ0lDQWdMQ0FDWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFRWkNTRWhCSURRQWFJQUJCdUo4U0VFZ0xDM0lCQVg0Z0FFVUVRRUVBRHdzQ2YwRUFJQUFvQWdRaUFDa0RFRUtBZ0lDQWdMQ2lpWUIvZ3lJQklBRkNBWDJEVUEwQUdrRUJBbjlCQUNBQUtRTVFRb0NBZ0lDQW9LS0FnSCtESWdFZ0FVSUJmWU5RRFFBYVFRRWdBRUhJbWhJUVNBMEFHaUFBRU5ZY0N3MEFHaUFBRU5jY0N3c0tBQ0FBUVpDWUVoQklDKzhEQVFkL0l3QkI0QUZySWdRa0FDQUJRY1FaYWlnQ0FDSUhJQUVvQXN3WklnVkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0FTQUZRUUYwUVFKcUVNY2FJQUVvQXNRWklRY0xJQUlvQWdBaENDQUVJQU0yQXR3QklBUWdBallDMkFFZ0IwRUJheUVKSUFnZ0IzQWhCa0VBSVFNQ1FBTkFJQU1nQjBjRVFDQUJLQUxBR1NJS0lBWkJ4QUJzYWlJRkxRQTRSUVJBSUFRZ0JFSFlBV29RL0FnZ0JTQUVFTDhhSUFvZ0JrSEVBR3hxSWdJZ0F6WUNRQ0FDSUFnMkFqd2dBU0FCS0FMTUdVRUJhallDekJrZ0FTQUJLQUxRR1VFQmFqWUMwQmtnQUNBRlFSeHFOZ0lFSUFCQkFEWUNBQXdEQ3lBRklBZ2dBaEMrR2dSQUlBQkJBallDQUNBQUlBVkJIR28yQWdRTUF3c2dBeUFGS0FKQVN3UkFJQVJCb0FGcUlnSWdCRUhZQVdvUS9BZ2dCQ0FDRUxzYUlnSWdBellDUUNBQ0lBZzJBandnQWlBRkVLZ1BJQUlnQWlnQ1FFRUJhallDUUNBQklBWkJBV29nQVNnQ3hCbHdJQUlRc0JvZ0FTQUJLQUxNR1VFQmFqWUN6QmtnQVNBQktBTFFHVUVCYWpZQzBCa2dBQ0FGUVJ4cU5nSUVJQUJCQURZQ0FDQUNFT2NIREFNRklBWkJBV3BCQUNBR0lBbEhHeUVHSUFOQkFXb2hBd3dDQ3dBTEN5QUVRWWExQTBIckEwRU9JQVJCb0FGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFSQjRBRnFKQUFMaGdFQkEzOGdBU0FBS0FJWVN3UkFJQUFvQWhBaEF5QUFJUUlnQUNBQlFRUlBCSDlCZnlBQlFRSjBJQUZCLy8vLy93TkxHeEFWSVFJZ0FRVkJCQXMyQWhnZ0FDQUNOZ0lRSUFBb0FoUWhBa0VBSVFFRFFDQUJJQUpHQkVBZ0FDQURFRFlGSUFGQkFuUWlCQ0FBS0FJUWFpQURJQVJxS0FJQU5nSUFJQUZCQVdvaEFRd0JDd3NMQ3hZQUlBQWdBQ2dDR0NJQVFRRjBRUUlnQUJzUTJ4d0x1UVVDQzM4Q2ZpTUFRZEFCYXlJQ0pBQUNRRUVHSUFGQmxnRnNRZVFBYmlJQklBRkJCazBiSWdNZ0FDZ0NaRTBOQUNBQ1FvQ0FnSURBQURjQ0ZDQUNJQUkyQWhBZ0FpQUFLQUpzRU5zY0lBQW9BbUFpQVNBQUtBSmtRUVIwYWlFRkEwQWdBU0FGUmdSQUlBQVErUndnQUNBREVKOFFJQUlvQWhBaUJTQUNLQUlVUVFKMGFpRUpJQUpCT0dvaENnTkFJQVVnQ1VZRVFDQUNFRjRNQkFzZ0FDZ0NaQ0FBS0FKc0lnRkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0FDQUJRUUYwUVFKcUVOMGNDeUFGS0FJQUVNTURJUVlnQUNnQ1pDSUhRUUZySVFzZ0JpQUhjQ0VFSUFBb0FtQWhERUVBSVFFQ1FBTkFJQUVnQjBjRVFDQU1JQVJCQkhScUlnTXRBQVJGQkVBZ0JTZ0NBQ0VFSUFOQkFUb0FCQ0FESUFRMkFnQWdBeUFCTmdJTUlBTWdCallDQ0NBQUlBQW9BbXhCQVdvMkFtd2dBQ0FBS0FKd1FRRnFOZ0p3REFNTElBVW9BZ0FoQ0NBR0lBTW9BZ2hHQkVBZ0NDQURLQUlBUmcwREN5QUJJQU1vQWd4TEJFQWdBaUFHTmdMSUFTQUNJQWcyQXNBQklBSWdBVFlDekFFZ0FrRUJPZ0RFQVNBQ0lBSXBBOGdCSWcwM0F5Z2dBaUFDS1FQQUFTSU9Od01nSUFJZ0F5a0NDRGNEeUFFZ0FpQURLUUlBTndQQUFTQURJQTQzQWdBZ0F5QU5Od0lJSUFJZ0FpZ0N6QUZCQVdvMkFzd0JJQUFnQkVFQmFpQUFLQUprY0NBQ1FjQUJhaEQwQlNBQUlBQW9BbXhCQVdvMkFtd2dBQ0FBS0FKd1FRRnFOZ0p3REFNRklBUkJBV3BCQUNBRUlBdEhHeUVFSUFGQkFXb2hBUXdDQ3dBTEN5QUNRU0JxUVlhMUEwSHJBMEVPSUFKQndBRnFFQjBpQVJBWElRTWdDa0dXTlJBT0dpQURFQmdnQVJBZUN5QUZRUVJxSVFVTUFBc0FDeUFCTFFBRUJFQWdBaWdDRkNJRUlBSW9BaGhQQkVBZ0FoRGNIQ0FDS0FJVUlRUUxJQUlnQkVFQmFqWUNGQ0FDS0FJUUlBUkJBblJxSUFFb0FnQTJBZ0FMSUFGQkVHb2hBUXdBQ3dBTElBSkIwQUZxSkFBTGVnRUZmeU1BUVJCcklnRWtBQUpBSUFBb0FnQWlBaWdDaUFFaUF5QUFLQUlNUmdSQUlBQW9BZ2doQUF3QkN5QUJRUWhxSUFJZ0FFRUVhaENZRUNBQ0tBSjRJUUlnQVMwQUNDRUVJQUVvQWd3aEJTQUFJQU0yQWd3Z0FDQUNJQVZCRkd4cVFRUnFRUUFnQkJzaUFEWUNDQXNnQVVFUWFpUUFJQUFMUndFRGZ5TUFRYUFCYXlJQkpBQWdBVUdsaWdWQnVneEJDQ0FBS0FJQUtBSUlFQmNpQWtFWWFpSURRYzdpQ3hBT0dpQURJQUFvQWdRUUVob2dBaEFZSUFGQm9BRnFKQUFMSlFBZ0FCRE5HaUFBUVF3UStROGdBRUVBTmdMUUJDQUFJQUFvQXRRRVFRRnFOZ0xVQkFzTkFDQUFJQUZCMkp3U0VJMElDMndCQTM4akFFR3dBV3NpQWlRQUlBSkJFR3BCcFlvRlFjY0xRUWdnQVNnQ0FDZ0NDQkFYSWdOQkdHb2lCRUhuamd3UURob2dCQ0FDSUFFb0FnUW9BZ0FvQWdRb0FnUVFGQ0lCRUJJYUlBRVFEeG9nQXhBWUlBQkJBRFlDQ0NBQVFnQTNBZ0FnQWtHd0FXb2tBQXNRQUNBQUlBRkIvSTBNUVpFS0VOMFNDeEFBSUFBZ0FVSE5qZ3hCMmdvUTNSSUxnZ0VCQW44Z0FTQUFLQUlvU3dSQUlBQW9BaUFoQXlBQUlRSWdBQ0FCUVFSUEJIOUJmeUFCUVFOMElBRkIvLy8vL3dGTEd4QVZJUUlnQVFWQkJBczJBaWdnQUNBQ05nSWdRUUFoQVFOQUlBQW9BaVFnQVUwRVFDQUFJQU1RTmdVZ0FVRURkQ0lDSUFBb0FpQnFJQUlnQTJvcEFnQTNBZ0FnQVVFQmFpRUJEQUVMQ3dzTEpRQWdBQkRSR2lBQVFUQVE2ZzhnQUVFQU5nTE1HU0FBSUFBb0F0QVpRUUZxTmdMUUdRdmNCUUlJZndKK0l3QkJ3QUZySWdRa0FDQUJLQUxFQVNBQktBTE1BU0lEUVpZQmJFR1dBV3BCNUFCdVNRUkFJd0JCUUdvaUJTUUFRUXdnQTBFQmRFRUNha0dXQVd4QjVBQnVJZ01nQTBFTVRSc2lCaUFCS0FMRUFVc0VRQ0FGUW9DQWdJQ0FBVGNDTkNBRklBVkJFR29pQXpZQ01DQURJQUVvQXN3QkVEa2dBU2dDd0FFaUF5QUJLQUxFQVVFRWRHb2hCd05BQWtBZ0F5QUhSZ1JBSUFFUTZnUWdBU0FHRU9RRUlBVW9BakFpQXlBRktBSTBRUUowYWlFR0RBRUxJQU10QUFRRVFDQUZRUkJxSUFNUXZnRVFKQXNnQTBFUWFpRUREQUVMQ3dOQUlBTWdCa2NFUUNBRklBRWdBeERuSENBRFFRUnFJUU1NQVFzTElBVkJFR29RSXdzZ0JVRkFheVFBQ3lBRVFiZ0JhaUFCSUFJUTlBc2dBU2dDeEFFaUNVRUJheUVLSUFJb0FnQWhCaUFCS0FMQUFTRUlJQVFvQXJ3QklRY2dCQ2dDdUFFaEJVRUFJUUlDUUFOQUlBSWdDVWNFUUNBSUlBVkJCSFJxSWdNdEFBUkZCRUFnQTBFQk9nQUVJQU1nQmpZQ0FDQUlJQVZCQkhScUlnTWdBallDRENBRElBYzJBZ2dnQVNBQktBTE1BVUVCYWpZQ3pBRWdBU0FCS0FMUUFVRUJhallDMEFFZ0FFSUFOd0lBREFNTEFrQWdBeWdDQ0NBSFJ3MEFJQVlnQXlnQ0FFY05BQ0FBUWdJM0FnQU1Bd3NnQWlBREtBSU1Td1JBSUFRZ0J6WUNzQUVnQkNBR05nS29BU0FFSUFJMkFyUUJJQVJCQVRvQXJBRWdCQ0FFS1FPd0FTSUxOd01RSUFRZ0JDa0RxQUVpRERjRENDQUVJQU1wQWdnM0E3QUJJQVFnQXlrQ0FEY0RxQUVnQXlBTU53SUFJQU1nQ3pjQ0NDQUVJQVFvQXJRQlFRRnFOZ0swQVNBQklBVkJBV29nQVNnQ3hBRndJQVJCcUFGcUVPc0VJQUVnQVNnQ3pBRkJBV28yQXN3QklBRWdBU2dDMEFGQkFXbzJBdEFCSUFCQ0FEY0NBQXdEQlNBRlFRRnFRUUFnQlNBS1J4c2hCU0FDUVFGcUlRSU1BZ3NBQ3dzZ0JFRUlha0dHdFFOQjZ3TkJEaUFFUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBRVFjQUJhaVFBQzBzQkFYOGpBRUVRYXlJQ0pBQWdBQ0FCUndSQUlBSWdBVUdnQW1vMkFnZ2dBaUFCS0FLZ0FpQUJSem9BRENBQUlBSkJDR29RL2h3TElBSkJFR29rQUNBQUlBRXBBcXdDTndLc0FndExBUUYvSXdCQkVHc2lBaVFBSUFBZ0FVY0VRQ0FDSUFGQndBRnFOZ0lJSUFJZ0FTZ0N3QUVnQVVjNkFBd2dBQ0FDUVFocUVQOGNDeUFDUVJCcUpBQWdBQ0FCS1FMTUFUY0N6QUVMR3dBZ0FDMEF4QmdFUUNBQVFRUnFFS1VGSUFCQkFEb0F4QmdMQzU0QkFnSi9BWDRnQVNBQVFhakVBV29vQWdCTEJFQWdBQ2dDb01RQklRTWdBQ0VDSUFBZ0FVRUlUd1IvUVg4Z0FhMUN4QmgrSWdTbklBUkNJSWluR3hBVklRSWdBUVZCQ0FzMkFxakVBU0FBSUFJMkFxREVBVUVBSVFFRFFDQUFLQUtreEFFZ0FVMEVRQ0FBSUFNUU5nVWdBVUhFR0d3aUFpQUFLQUtneEFGcUlBSWdBMm9pQWhEcEN4b2dBa0VFYWhDbEJTQUJRUUZxSVFFTUFRc0xDd3NsQUNBQUVOb2FJQUJCQmhEaUR5QUFRUUEyQXBCZ0lBQWdBQ2dDbEdCQkFXbzJBcFJnQ3pZQkFYOGdBQ2dDQ0NJQ0lBRkJBblJxSVFFRFFDQUJJQUpHUlFSQUlBSkJBRFlDQUNBQ1FRUnFJUUlNQVFzTElBQWdBVFlDQ0Fza0FDQUNLQUlBRU1NRElRSWdBU2dDWkNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBTFNRRUNmeUFBS0FJa0lnSWdBQ2dDS0NJRFR3UkFJQUFnQTBFQmRFRUNJQU1iRUxFSklBQW9BaVFoQWdzZ0FDQUNRUUZxTmdJa0lBQW9BaUFnQWtFQ2RHb2dBU2dDQURZQ0FBdXdCQUlLZndKK0l3QkJ3QUZySWdJa0FDQUFRUnhxSVFZZ0FDZ0NnQUVnQUNnQ2lBRWlBMEdXQVd4QmxnRnFRZVFBYmtrRVFDQUdJQU5CQVhSQkFtb1EzUndMSUFKQnVBRnFJQVlnQVJEdUhDQUFLQUtBQVNJS1FRRnJJUXNnQUNnQ2ZDRUpJQUVvQWdBaEJ5QUNLQUs4QVNFSUlBSW9BcmdCSVFWQkFDRURBa0FDUUFOQUlBTWdDa2NFUUNBSklBVkJCSFJxSWdRdEFBUkZCRUFnQkVFQk9nQUVJQVFnQnpZQ0FDQUpJQVZCQkhScUlnUWdBellDRENBRUlBZzJBZ2dnQUNBQUtBS0lBVUVCYWpZQ2lBRWdBQ0FBS0FLTUFVRUJhallDakFFTUF3c2dDQ0FFS0FJSVJnUkFJQWNnQkNnQ0FFWU5CQXNnQXlBRUtBSU1Td1JBSUFJZ0NEWUNzQUVnQWlBSE5nS29BU0FDSUFNMkFyUUJJQUpCQVRvQXJBRWdBaUFDS1FPd0FTSU1Od01RSUFJZ0Fpa0RxQUVpRFRjRENDQUNJQVFwQWdnM0E3QUJJQUlnQkNrQ0FEY0RxQUVnQkNBTk53SUFJQVFnRERjQ0NDQUNJQUlvQXJRQlFRRnFOZ0swQVNBR0lBVkJBV29nQUNnQ2dBRndJQUpCcUFGcUVQUUZJQUFnQUNnQ2lBRkJBV28yQW9nQklBQWdBQ2dDakFGQkFXbzJBb3dCREFNRklBVkJBV3BCQUNBRklBdEhHeUVGSUFOQkFXb2hBd3dDQ3dBTEN5QUNRUWhxUVlhMUEwSHJBMEVPSUFKQnFBRnFFQjBpQXhBWElnUkJHR3BCbGpVUURob2dCQkFZSUFNUUhnc2dBQ2dDRkNJRElBQW9BaGhQQkVBZ0FCRGNIQ0FBS0FJVUlRTUxJQUFnQTBFQmFqWUNGQ0FBS0FJUUlBTkJBblJxSUFFb0FnQTJBZ0FMSUFKQndBRnFKQUFMemdzQkNIOGpBRUd3QTJzaUJDUUFJQVFnQXpZQzdBRWdCQ0FBTmdMa0FTQUVJQVJCN0FGcU5nTGdBU0FCRU9vTElBRWdCQ2dDN0FFUTdRZEJBQkNjQ1NBQ0tBS2dBVVVFUUNBRVFZQUNha0dsaWdWQjl3NUJDQ0FFUWFBRGFoQWRJZ01RRnlJRlFSaHFRWVcxQ0JBT0dpQUZFQmdnQXhBZUN5QUNJUU1EUUFKQUlBTkZEUUFnQXlnQ29BRWdBU0FFS0FMc0FSRHRCMFlOQUNBREtBS2dBU0VEREFFTEN5QURLQUlJSWdWQkFDQUZLQUlFUWJqdUQwWWJJZ2xGQkVBZ0JFR0FBbXBCcFlvRlFZQVBRUWdnQkVHZ0Eyb1FIU0lHRUJjaUNFRVlha0hUdFFnUURob2dDQkFZSUFZUUhnc2dBQ0FKRU9NTEtBSXNJUWdnQkVIUUFXb2dDU2dDSkNnQ0pFRWthaEJUQWtBZ0F5Z0NBQ0lHUVFGclFRRk5CRUFnQ0VFQUlBZ29BZ1JCZ0pNU1Joc2lBUVJBSUFFb0FrQWhCU0FFUVFBMkFvZ0NJQVFnQlRZQ2hBSWdCQ0FBUVF4cU5nS0FBaUFFSUFCQjNLY0NhaWdDQUVFQmF6WUNqQUlnQkVHQUFtb2lCeERoQ3lFRklBTW9BZ3doQ0NBRktBTDRCeUVGSUFBZ0J4RGlDeUFGSUFoQi9BQnNha0h3QUVIMEFDQUdRUUZHRzJvb0FnQWdCQ2dDN0FFUThSd0xJQVJCZ0FKcUVFa2lCVUVJYWlJSVFhRHpCQkFPR2lBSVFkejRERUh5MlFFZ0JrRUJSaHNRRGhvZ0NFR1c3d01RRGhvZ0JDQUpLQUpJSUFNb0FneEJBblJxS0FJQUlnTW9BaUEyQXNnQklBUWdBeWtDR0RjRHdBRWdCQ0FES1FJUU53TzRBU0FFUWFnQmFpSURJQVZCREdvUVFpQUVJQVFvQXNnQk5nSVlJQVFnQkNrRHdBRTNBeEFnQkNBRUtRTzRBVGNEQ0NBRVFlQUJhaUFFUVFocUlBTWdBVUVBUnhDU0VDQURFQThhSUFBZ0FpZ0NvQUVRMFJ3Z0JSQlJEQUVMSUFCQkRHb2hCeUFFS0FMc0FTRUxBa0FDUUFKQUEwQWdBQ0FGRU9NTEtBSXNJZ1lvQWdRaUNrSDRqeEpHRFFNZ0NrR0FreEpIRFFFZ0JpZ0NRQ0VGSUFSQkFEWUNxQU1nQkNBRk5nS2tBeUFFSUFjMkFxQURJQVFnQUNnQzNLY0NRUUZyTmdLc0F5QUVRYUFEYWhEaEN5QUxFTzBISWdZb0FpQWlCU0FHS0FJa1FRSjBhaUVLQWtBRFFDQUZJQXBHRFFFZ0JTZ0NBQ0VHSUFWQkJHb2hCU0FHS0FJQURRQUxJQVlvQWdnaUJVRUFJQVVvQWdSQnVPNFBSaHNoQlF3QkN3c2dCRUdBQW1wQnBZb0ZRZFVOUVFnZ0JFSHdBV29RSFNJRkVCY2lCa0VZYWtIejh3Z1FEaG9NQVFzZ0JFR0FBbXBCcFlvRlFkY05RUWdnQkVHZ0Eyb1FIU0lGRUJjaUJrRVlha0dROVFnUURob0xJQVlRR0NBRkVCNUJBQ0VGQ3lBRVFZQUNhaEJKSWdaQkNHb2lCMEh6bWdrUURob2dCRUdnQTJvaUNpQUZLQUlrS0FJa1FTUnFFRk1nQnlBS0VCSWFJQWRCMENnUURob2dDaEFQR2lBRUlBVXBBaGczQTVnQklBUWdCU2dDSURZQ29BRWdCQ0FGS1FJUU53T1FBU0FFUVlBQmFpSUhJQVpCREdvUVFpQUVJQVFvQXFBQk5nSlFJQVFnQkNrRG1BRTNBMGdnQkNBRUtRT1FBVGNEUUNBRVFlQUJhaUFFUVVCcklBZEJBQkNTRUNBSEVBOGFJQVlRVVNBRklBbEhCRUFnQkVHQUFtb1FTU0lIUVFocUlnWkJ5OTBLRUE0YUlBaEJBQ0FJS0FJRVFZQ1RFa1liSUFBZ0JSRGpDeWdDRENnQ0VFY0VRQ0FHUWRlL0NSQU9HZ3NnQmtIdmh3a1FEaG9nQmlBRVFkQUJhaEFTR2lBR1FkbU9DUkFPR2lBR0lBRVFFaG9nQmtIem1na1FEaG9nQkNBSktBSWdOZ0o0SUFRZ0NTa0NHRGNEY0NBRUlBa3BBaEEzQTJnZ0JFSFlBR29pQlNBSFFReHFFRUlnQkNBRUtBSjROZ0k0SUFRZ0JDa0RjRGNETUNBRUlBUXBBMmczQXlnZ0JFSGdBV29nQkVFb2FpQUZRUUVRa2hBZ0JSQVBHaUFIRUZFTElBRVE2Z3NnQTBFQUVKd0pJQUlvQXFBQklnRkZCRUFnQkVHQUFtcEJwWW9GUWVrTlFRZ2dCRUdnQTJvUUhTSUNFQmNpQTBFWWFrR3p2d2dRRGhvZ0F4QVlJQUlRSGdzZ0FTRURBa0FEUUNBRFJRMEJJQU10QUFSRkJFQWdBeWdDb0FFaEF3d0JDd3NnQUNnQ0NDRUNJQVJCTWpZQ2hBSWdCRUhaMEFNMkFvQUNJQU1vQWdnaEF5QUVJQVFwQTRBQ053TWdJQUlnQkVFZ2FpQURRUkJxRUt3RUN5QUFJQUVRMFJ3TElBUkIwQUZxRUE4YUlBUkJzQU5xSkFBTEV3QWdBRVVFUUVFQUR3c2dBQ2dDQkJDVkVBc3FBQU5BQWtBZ0FDZ0NLQ0lBS0FJRVFZQ0JFa2NnQUVWeURRQWdBQ2dDSkE0REFRQUJBQXNMSUFBTFdBQWdBQ2dDQUNJQUtBTGdwd0pCdUFocUVKNFFJQUFnQVNBQ0VPTUVJUUVnQXlBQUtBTGdwd0lpQWtHY0VXb29BZ0JCakFGc0lBSkJtQkZxS0FJQWFrR01BV3NROXh3YUlBQW9BdUNuQWtHNENHb1FuUkFnQVF1OUR3SVFmd0YrSXdCQndBSnJJZ1VrQUNBRlFmQUFhaUFES0FJa0tBSWtRU1JxRUZNZ0JVS0FnSUNBZ0FFM0FtUWdCU0FGUVVCck5nSmdJQVZDZ0lDQWdJQUJOd0kwSUFVZ0JVRVFhaUlFTmdJd0lBUWdBeWdDVENJR0VMRUpJQVVvQWpRaUJDQUdJQVFnQmtzYklRY2dCVUV3YWlFT0lBVkI0QUJxSVE4RFFDQUVJQWRIQkVBZ0JTZ0NNQ0FFUVFKMGFrRUFOZ0lBSUFSQkFXb2hCQXdCQ3dzZ0JTQUdOZ0kwUVFBaEJBTkFJQU1vQWt3Z0JFMEVRQ0FCS0FMZ3B3SWdBeENjQVNJTUlBSVFhaUFCS0FMZ3B3SWdBeENjQVNJSlFRUTJBZ0FnQVNnQzRLY0NJQU1RbkFFaERTQUJJQU1RNHdzaUVDZ0NMQ0VFSUFVZ0FUWUNDQ0FGSUFWQjhBQnFOZ0lNQWtBQ2Z3Si9JQVJGQkVBZ0JVRUlhaERmSEVFQklRSkJBQXdCQ3lBRUtBSUVJZ1pCK0k4U1JnUkFRUUVoQWlBRUtBSkFJZ1pCMVFCR0lBWkJ5d0JHY2dSQVFRRWhDQXdFQzBFQklRZ2dCQ2dDUUVIV0FFWU5Bd0pBSUFRMUFrQWlGRUlzVkVLQWdJRHdoOEFESUJTSXAzRkZCRUFnQkNnQ1FFSGRBR3RCQWtzTkFRc2dBU2dDQkNFRVFRQWhBaUFGUVFBNkFJUUJJQVZCQVRZQ2dBRWdCU0FGS1FPQUFUY0RBQ01BUWRBQmF5SUdKQUFnQmlBRk5nTElBU0FHSUFRMkFzUUJJQVlnQmtISUFXb2lCellDd0FFZ0JpQUdRY0FCYWpZQ3ZBRWdCaUFITmdLNEFRSi9JQVFnQXhDZ0hpSUhSUVJBSUFaQkNHb2lCMEh6b0FWQnpBQkJDQ0FHUWFnQmFoQWRJZ2dRRnlJS1FSaHFRWityQ0JBT0dpQUtFQmdnQ0JBZUlBWWdCRFlDRENBR0lBWkJ5QUZxTmdJSUlBY1FoaHdNQVFzZ0JpQUVOZ0lNSUFZZ0JrSElBV28yQWdnZ0J5Z0NCQ0lFRUs4SUJFQWdCa0c0QVdvZ0J5Z0NEQkNGSEF3QkN5QUVFTmtjQkVBZ0JrRzRBV29nQnhDRkhBd0JDeUFFUVlDVEVrWUVRQ0FHUWNBQmFpQUhFSVFjREFFTElBWkJDR29RaGh3TElnUkZCRUFnQmtFSWFrSHpvQVZCMWdCQkNDQUdRYWdCYWhBZElnY1FGeUlJUVJocVFiWFJDQkFPR2lBSUVCZ2dCeEFlQ3lBR1FkQUJhaVFBUVFBZ0JDQUVRUU5HSWdvYklRZ01CQXNnQkNnQ1FFSG1BR3RCQzA4aEFrRUJEQUlMSUFaQmdKTVNSZ1JBSUFRb0FrQWhBaUFGUVFBMkFyZ0NJQVVnQWpZQ3RBSWdCU0FCUVF4cU5nS3dBaUFGSUFGQjNLY0NhaWdDQUVFQmF6WUN2QUlnQlVHd0Ftb1E0Z3RGQkVBZ0JVR0FBV3BCcFlvRlFhd01RUWdnQlVHZ0Ftb1FIU0lDRUJjaUJFRVlha0hLcWdnUURob2dCQkFZSUFJUUhnc2dCVUd3QW1vaUFpSUVFT0VMS1FJTUloUkNJSWluSVFnZ0FoRGhDeWdDRkNFQ0lBUVE0Z3NoQ3lBVXB5RUtEQU1MUVFFaEFrRUFJQVpCa0o0U1JpQUdRY2llRWtaeURRQWFJQVZCQ0dvUTN4eEJBQXNoQzBFQkN5RUtRUUFoQ0FzZ0RTQU1FR29nQWtVRVFDQUpJQUVvQXVDbkFpZ0NyQWdRYWdzZ0NTQU5FR29nQlVHWUFXb2hFVUVBSVFJRFFDQUZLQUprSUFKTkJFQWdDa1VFUUNBQktBTGdwd0lnQ0JEdEJ5QU1FR29MSUFBZ0NUWUNCQ0FBSUEwMkFnQWdCVUVRYWhBaklBVkJRR3NRSXlBRlFmQUFhaEFQR2lBRlFjQUNhaVFBRHdVQ1FBSkFJQXNFUUNBUElRUUNRQUpBQWtBZ0N5Z0MrQWNnQWtIOEFHeHFJZ1lvQWdRT0FnRUFBZ3NnRGlFRUN5QUJLQUxncHdJZ0JpZ0NDQkR0QnlBRUtBSUFJQUpCQW5ScUtBSUFFR29MSUE4aEJBSkFBa0FDUUNBR0tBSU1EZ0lCQUFJTElBNGhCQXNnQ1NBRUtBSUFJQUpCQW5ScUtBSUFFR29MSUFFb0FnUWdBeWdDU0NBQ1FRSjBhaWdDQUJDQ0F5SVNLQUlVS0FJRVFkaXNFa2NOQWlBRlFZQUJhaUlFSUFJUVh5QUJLQUxncHdJZ0F4Q2NBU0VISUFRUUR4b2dCeUFDTmdJTUlBZEJBellDQUNBR0xRQVVCRUFnQnlBQktBTGdwd0lvQXF3SUVHb01BZ3NnQnlBTUVHb2dCaWdDT0NJRUlBWW9BanhCQW5ScUlSTURRQ0FFSUJOR0JFQWdCaWdDWkNJRUlBWW9BbWhCQW5ScUlRWURRQ0FFSUFaR0RRUWdCeUFGS0FJd0lBUW9BZ0FvQWxCQkFuUnFLQUlBRUdvZ0JFRUVhaUVFREFBTEFBVWdCeUFGS0FKZ0lBUW9BZ0FvQWxCQkFuUnFLQUlBRUdvZ0JFRUVhaUVFREFFTEFBc0FDd0pBSUJBb0Fpd2lCQ2dDQkVINGp4SkhJQVJGY2cwQUlBUW9Ba0JCMWdCSERRQWdBU2dDNEtjQ0tBS2dDQ0FGS0FKZ0lBSkJBblJxS0FJQUVHb01BZ3NnQ1NBRktBSmdJQUpCQW5ScUtBSUFFR29NQVFzZ0JTQVNLQUlRSWdRMkFxQUNJQVJGQkVBZ0JVR0FBV3BCcFlvRlFZRU5RUWdnQlVHd0Ftb1FIU0lFRUJjaEJpQVJRYWVkQ0JBT0dpQUdFQmdnQkJBZUN5QUJLQUxncHdKQnVBaHFJQVZCb0FKcUlBY1Fnd01MSUFKQkFXb2hBZ3dCQ3dBTEFBc2dCVUd3QW1vZ0FTQUNJQVJCQW5RaUJ5QURLQUpJYWlnQ0FFRUFFS1lDSUFWQmdBRnFJZ1lnQkJCZklBRW9BdUNuQWlBREVKd0JJUUlnQmhBUEdpQUZJQUkyQXFBQ0lBSWdCRFlDRENBQ1FRRTJBZ0FnQWlBRktBSzBBaEJxSUFFb0FnUWdBeWdDU0NBSGFpZ0NBQkNDQXlJSktBSVVLQUlFUWRpc0VrWUVRQ0FGUVlBQmFpSUlJQVFRWHlBQktBTGdwd0lnQXhDY0FTRUdJQWdRRHhvZ0JpQUVOZ0lNSUFaQkFqWUNBQ0FGSUFrb0FoQWlDVFlDZ0FFQ1FDQUdBbjhnQ1NnQ0JFR1FuQkpHQkVBZ0NTZ0NHRUVCUmcwQ0lBRW9BdUNuQWlnQ3JBZ01BUXNnQVNnQzRLY0NRYmdJYWlBRlFZQUJhaENEQWdzUWFnc2dCaUFDRUdvZ0JTZ0NNQ0FIYWlBR05nSUFDeUFFUVFGcUlRUWdCU2dDc0FJaEFpQUZRVUJySUFWQm9BSnFFTzhjREFBTEFBdnVBUUVJZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVJDTEhpQUNMUUFJQkVBZ0FDZ0N4QUVpQjBFQmF5RUlJQUlvQWd3aEEwRUFJUUVDUUFOQUlBWWdCMFlOQVNBQUtBTEFBU0lFSUFOQkJIUWlDV29oQlFKQUlBRUVRQ0FFSUFscUlnUW9BZ3hGRFFFZ0FTQUZLQUlBTmdJQUlBRWdCUzBBQkRvQUJDQUJJQVFvQWdnMkFnZ2dBU0FFS0FJTVFRRnJOZ0lNQ3lBRFFRRnFRUUFnQXlBSVJ4c2hBeUFHUVFGcUlRWWdCU0VCREFFTEN5QUJRZ0EzQWdnZ0FVRUFPZ0FFSUFGQkFEb0FBQXNnQUNBQUtBTE1BVUVCYXpZQ3pBRWdBQ0FBS0FMUUFVRUJhallDMEFFTElBSkJFR29rQUFzakFDQUFJQUZIQkVBZ0FDQUJRZmdBYWhDa0VBc2dBQ0FCS1FLRUFUY0NoQUVnQUFzakFRRi9JQUFvQWdBaUFTQUFLQUlFUndSQUlBQWdBVUV3YWpZQ0FDQUFFUDhJQ3dza0FDQUFRUUEyQW1RZ0FFRUdFSjhRSUFCQkFEWUNiQ0FBSUFBb0FuQkJBV28yQW5BTGtRSUJCSDhnQUNnQ3FBSkJERWtFUUNBQUtBS2dBaUVFSUFCQkRCQ2hFQU5BSUFBb0FxUUNJQUZOQkVBZ0FDQUVFRFlGSUFGQkdHd2lBaUFBS0FLZ0Ftb2lBMEVBT2dBTUlBTkJBRG9BQUNBQ0lBUnFJZ0l0QUF3RVFDQURJQUlwQWdBM0FnQWdBeUFDS0FJSU5nSUlJQUlRVlNBRFFRRTZBQXdMSUFNZ0Fpa0NFRGNDRUNBQ0VLQVFJQUZCQVdvaEFRd0JDd3NMSUFBb0FxUUNJUUVEUUNBQlFReE5CRUFDUUVFTUlBQW9BcVFDSWdFZ0FVRU1UUnNoQWdOQUlBRWdBa1lOQVNBQUtBS2dBaUFCUVJoc2FpSURRZ0EzQWhBZ0EwRUFPZ0FNSUFOQkFEb0FBQ0FCUVFGcUlRRU1BQXNBQ3dVZ0FDZ0NvQUlnQVVFQmF5SUJRUmhzYWhDZ0VBd0JDd3NnQUVFTU5nS2tBZ3U5QVFFRWYwRUFJQUFvQWhRaUFpQUNRUjlMSWdJYklRUkJBQ0FBS0FJUUlBSWJJUUlnQUNnQ0RDRURBMEFDUUNBQ0lBTkhJQUVnQkVkeVJRUkFJQUFvQWdBaEFRTkFJQUZGRFFJZ0FTZ0NnSUFFSVFJZ0FSQWZJQUloQVF3QUN3QUxJQU1FZnlBRElBRkJBblJxS0FJQVFSQnFFUEFISUFGQkFXb2lBVUVnUncwQ1FRQWhBU0FES0FLQUFRVkJFQkR3QjBFQUN5RUREQUVMQ3lBQVFRQTJBaGdnQUVLQWdJQ0FnQVEzQWhBZ0FFS0FnQVEzQWdnZ0FFSUFOd0lBQ3lnQUlBQkJBRFlDOUFFZ0FFRU1FSzhRSUFCQkFEWUMvQUVnQUNBQUtBS0FBa0VCYWpZQ2dBSUwyQUVCQlg5QkFDQUFLQUlVSWdJZ0FrRWZTeUlDR3lFRlFRQWdBQ2dDRUNBQ0d5RUNJQUFvQWd3aEF3TkFBa0FnQWlBRFJ5QUJJQVZIY2tVRVFDQUFLQUlBSVFFRFFDQUJSUTBDSUFFb0FvQ0FCQ0VDSUFFUUh5QUNJUUVNQUFzQUN5QURCSDhnQXlBQlFRSjBhaWdDQUNJRVFaZ0JhaERPQXlBRVFReHFFTTRESUFRUUR4b2dBVUVCYWlJQlFTQkhEUUpCQUNFQklBTW9Bb0FCQlVHWUFSRE9BMEVNRU00RFFRQVFEeHBCQUFzaEF3d0JDd3NnQUVFQU5nSVlJQUJDZ0lDQWdJQUVOd0lRSUFCQ2dJQUVOd0lJSUFCQ0FEY0NBQXZiQVFFRGZ5QUJMUUFFQkVBZ0FCQ2pFQ0FBSUFFb0FnQWlBaWtDQURjQ29BSWdBQ0FDS0FJSU5nS29BaUFCS0FJQUlnQkJBRFlDQ0NBQVFnQTNBZ0FQQ3dKQUlBQW9BcWdDSUFFb0FnQWlBeWdDQkVrRVFDQUFFS01RSUFBZ0F5Z0NCQkNoRUF3QkN5QUFFS0lRQ3lBQUlBTW9BZ1FpQVRZQ3BBSURRQ0FCSUFSTEJFQWdCRUVZYkNJQklBQW9BcUFDYWlFQ0lBTW9BZ0FnQVdvaEFTQUNRUUE2QUF3Z0FrRUFPZ0FBSUFFdEFBd0VRQ0FDSUFFUVZFRUJPZ0FNQ3lBQ0lBRXBBaEEzQWhBZ0JFRUJhaUVFSUFBb0FxUUNJUUVNQVFzTEM4TUJBUU4vSUFFdEFBUUVRQ0FBRUlzTUlBQWdBU2dDQUNJQ0tRSUFOd0xBQVNBQUlBSW9BZ2cyQXNnQklBRW9BZ0FpQUVFQU5nSUlJQUJDQURjQ0FBOExBa0FnQUNnQ3lBRWdBU2dDQUNJQktBSUVTUVJBSUFBUWl3d2dBQ0FCS0FJRUVPMGREQUVMSUFCQkFEWUN4QUVMSUFBZ0FTZ0NCQ0lETmdMRUFRTkFJQUlnQTBrRVFDQUNRUVIwSWdNZ0FDZ0N3QUZxSWdRZ0FTZ0NBQ0FEYWlJREtRSUFOd0lBSUFRZ0F5a0NDRGNDQ0NBQ1FRRnFJUUlnQUNnQ3hBRWhBd3dCQ3dzTFB3SUNmd0YrUVFZaEFpQUFJUU1nQVVFR1R3UkFRWDhnQWExQ0ZINGlCS2NnQkVJZ2lLY2JFQlVoQXlBQklRSUxJQUFnQXpZQ2VDQUFJQUkyQW9BQkN5Y0FJQUJCQURZQ2ZDQUFRUVlRcFJBZ0FFRUFOZ0tFQVNBQUlBQW9Bb2dCUVFGcU5nS0lBUXMxQVFGL0EwQWdBQ2dDNUFnZ0FVMEVRQ0FBUVFBMkF1UUlCU0FBS0FMZ0NDQUJRWXdCYkdvUXpnTWdBVUVCYWlFQkRBRUxDd3RFQWdKL0FYNUJDQ0VDSUFBaEF5QUJRUWhQQkVCQmZ5QUJyVUtNQVg0aUJLY2dCRUlnaUtjYkVCVWhBeUFCSVFJTElBQWdBellDNEFnZ0FFSG9DR29nQWpZQ0FBczFBUUYvQTBBZ0FDZ0M1QWNnQVUwRVFDQUFRUUEyQXVRSEJTQUFLQUxnQnlBQlFmd0FiR29RcmhBZ0FVRUJhaUVCREFFTEN3dlZBUUVEZndKQUlBRXRBQVFFUUNBQUVNNEpJQUFnQVNnQ0FDSUNLUUlBTndMd0FTQUFJQUlvQWdnMkF2Z0JJQUVvQWdBaUFFRUFOZ0lJSUFCQ0FEY0NBQXdCQ3dKQUlBQW9BdmdCSUFFb0FnQWlBaWdDQkVrRVFDQUFFTTRKSUFBZ0FpZ0NCQkN1REF3QkN5QUFRUUEyQXZRQkN5QUFJQUlvQWdRaUF6WUM5QUZCQUNFQkEwQWdBU0FEVHcwQklBRkJGR3dpQkNBQUtBTHdBV29pQXlBQ0tBSUFJQVJxSWdRcEFnQTNBZ0FnQXlBRUtBSVFOZ0lRSUFNZ0JDa0NDRGNDQ0NBQlFRRnFJUUVnQUNnQzlBRWhBd3dBQ3dBTEM4RUJBUUovQWtBZ0FTMEFCQVJBSUFBUXB4QWdBQ0FCS0FJQUlnSXBBZ0EzQXVBSUlBQkI2QWhxSUFJb0FnZzJBZ0FnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBREFFTEFrQWdBRUhvQ0dvb0FnQWdBU2dDQUNJQ0tBSUVTUVJBSUFBUXB4QWdBQ0FDS0FJRUVJTWREQUVMSUFBUWdoMExJQUJCNUFocUlBSW9BZ1FpQXpZQ0FFRUFJUUVEUUNBQklBTlBEUUVnQVVHTUFXd2lBeUFBS0FMZ0NHb2dBaWdDQUNBRGFoQ1VIU0FCUVFGcUlRRWdBQ2dDNUFnaEF3d0FDd0FMQzRFQ0FRTi9Ba0FnQVMwQUJBUkFJQUFRcVJBZ0FDQUJLQUlBSWdJcEFnQTNBdUFISUFBZ0FpZ0NDRFlDNkFjZ0FTZ0NBQ0lBUVFBMkFnZ2dBRUlBTndJQURBRUxBa0FnQUNnQzZBY2dBU2dDQUNJRUtBSUVTUVJBSUFBUXFSQWdBQ0FFS0FJRUVKTWREQUVMSUFBUWhCMExJQUFnQkNnQ0JDSUJOZ0xrQndOQUlBRWdBMDBOQVNBRFFmd0FiQ0lDSUFBb0F1QUhhaUlCSUFRb0FnQWdBbW9pQWlrQ0FEY0NBQ0FCSUFJcEFBMDNBQTBnQVNBQ0tRSUlOd0lJSUFGQkdHb2dBa0VZYWhDb0VCb2dBVUhFQUdvZ0FrSEVBR29RcUJBYUlBRWdBaWdDZURZQ2VDQUJJQUlwQW5BM0FuQWdBMEVCYWlFRElBQW9BdVFISVFFTUFBc0FDd3VwQndJRWZ3RitJd0JCSUdzaUFpUUFJQUFnQVNrQ0FEY0NBQ0FBSUFFb0FnZzJBZ2dnQVJCVklBQWdBU2dDRkRZQ0ZDQUFJQUVwQWd3M0Fnd2dBRUtBZ0lDQWdBRTNBdndISUFBZ0FFRVlhaUlETmdMNEJ5QUNJQUZCK0FkcU5nSUFJQUlnQVNnQytBY2dBVUVZYWtjNkFBUWdBeUFDRUljZElBQkJuQWhxSWdOQkFEWUNBQ0FBUVpRSWFpSUVRb0NBZ0lDQUJEY0NBQ0FBUVl3SWFpSUZRb0NBQkRjQ0FDQUFRZ0EzQW9RSUlBSWdBeWdDQURZQ0dDQUNJQVFwQWdBM0F4QWdBaUFGS1FJQU53TUlJQUlnQUNrQ2hBZzNBd0FnQXlBQlFad0lhaUlES0FJQU5nSUFJQVFnQVVHVUNHb2lCQ2tDQURjQ0FDQUZJQUZCakFocUlnVXBBZ0EzQWdBZ0FDQUJLUUtFQ0RjQ2hBZ2dBeUFDS0FJWU5nSUFJQVFnQWlrREVEY0NBQ0FGSUFJcEF3ZzNBZ0FnQVNBQ0tRTUFOd0tFQ0NBQVFiQUlhaUFCUWJBSWFpa0NBRGNDQUNBQVFhZ0lhaUFCUWFnSWFpa0NBRGNDQUNBQUlBRXBBcUFJTndLZ0NDQUFRWndSYWtLQWdJQ0FnQUUzQWdBZ0FFR1lFV29nQUVHNENHb2lBellDQUNBQ0lBRkJtQkZxSWdRMkFnQWdBaUFFS0FJQUlBRkJ1QWhxUnpvQUJDQURJQUlRaGgwakFFRVFheUlESkFBZ0FFR2tFV29pQkVLQWdJQ0F3QUUzQXNRQklBUWdCRFlDd0FFZ0F5QUJRYVFSYWlJRlFjQUJhallDQ0NBRElBVW9Bc0FCSUFWSE9nQU1JQVFnQTBFSWFoRC9IQ0FEUVJCcUpBQWdCQ0FGS1FMTUFUY0N6QUVnQUVINEVtb2dBVUg0RW1vUXdRc2FJd0JCRUdzaUF5UUFJQUJCN0JOcUlnUkNnSUNBZ01BQk53S2tBaUFFSUFRMkFxQUNJQU1nQVVIc0Uyb2lCVUdnQW1vMkFnZ2dBeUFGS0FLZ0FpQUZSem9BRENBRUlBTkJDR29RL2h3Z0EwRVFhaVFBSUFRZ0JTa0NyQUkzQXF3Q0lBQkJsQmhxUW9DQWdJREFBVGNDQUNBQVFaQVlhaUFBUWFBV2FpSUROZ0lBSUFJZ0FVR1FHR29pQkRZQ0FDQUNJQVFvQWdBZ0FVR2dGbXBIT2dBRUlBTWdBaENGSFNBQlFad1lhaWtDQUNFR0lBQkJ2QmhxSWdOQkFEWUNBQ0FBUWJRWWFpSUVRb0NBZ0lDQUJEY0NBQ0FBUWF3WWFpSUZRb0NBQkRjQ0FDQUFRZ0EzQXFRWUlBQkJuQmhxSUFZM0FnQWdBaUFES0FJQU5nSVlJQUlnQkNrQ0FEY0RFQ0FDSUFVcEFnQTNBd2dnQWlBQUtRS2tHRGNEQUNBRElBRkJ2QmhxSWdNb0FnQTJBZ0FnQkNBQlFiUVlhaUlFS1FJQU53SUFJQVVnQVVHc0dHb2lCU2tDQURjQ0FDQUFJQUVwQXFRWU53S2tHQ0FESUFJb0FoZzJBZ0FnQkNBQ0tRTVFOd0lBSUFVZ0Fpa0RDRGNDQUNBQklBSXBBd0EzQXFRWUlBSkJJR29rQUFzdkFDQUFRUUE2QU1RWUlBQkJBRG9BQUNBQkxRREVHQVJBSUFBZ0FSQ3FFQXNnQUNBQktRTElHRGNDeUJnZ0FBczRBUUYvQTBBZ0FDZ0N4S2NDSUFGTkJFQWdBRUVBTmdMRXB3SUZJQUFvQXNDbkFpQUJRZEFZYkdvUThRY2dBVUVCYWlFQkRBRUxDd3NvQUNBQUVJb2RJQUJCREJDd0VDQUFRUUEyQXN5bkFpQUFJQUFvQXRDbkFrRUJhallDMEtjQ0M0TUJBUVYvSUFCQnhLY0NhaWdDQUNJRlFRRnJJUVlDUUFOQUlBTWdCVVlOQVNBQUtBTEFwd0lnQVVIUUdHeHFJZ1F0QU1RWUJFQWdBaUFDS0FMTUdDSUhJQVFvQXN3WVN3Ui9JQVFnQWhDdEVDQUNLQUxNR0FVZ0J3dEJBV28yQXN3WUlBRkJBV3BCQUNBQklBWkhHeUVCSUFOQkFXb2hBd3dCQ3dzZ0JDQUNFSnNRQ3dzVEFDQUFJQUVRNlFzaUFFRUJPZ0RFR0NBQUN4QUFJQUFRNmh3Z0FDQUJFS29RSUFBTER3QWdBQ0FCSUFKQnhLY0NFTDBNQzRNSEFRMS9Jd0JCNFBVQmF5SUNKQUFDUUVFTUlBRkJsZ0ZzUWVRQWJpSUJJQUZCREUwYklnVWdBRUhFcHdKcUtBSUFUUTBBSUFKQnJNUUJha0tBZ0lDQWdBRTNBZ0FnQWlBQ1FRaHFJZ0UyQXFqRUFTQUJJQUFvQXN5bkFoRHJIQ0FBS0FMQXB3SWlBU0FBS0FMRXB3SkIwQmhzYWlFSEEwQWdBU0FIUmdSQUlBQVFpeDBnQUNBRkVMQVFJQUlvQXFqRUFTSUVJQUlvQXF6RUFVSEVHR3hxSVFrZ0FrR0EzUUZxUVFSeUlRb2dBa0c0eEFGcVFRUnlJUXNnQWtHWTNRRnFJUXhCQUNFSEEwQUNRQ0FFSUFsR0JFQURRQ0FISUFJb0FxekVBVThOQWlBQ0tBS294QUVnQjBIRUdHeHFRUVJxRUtVRklBZEJBV29oQnd3QUN3QUxJQUFvQXNTbkFpQUFLQUxNcHdJaUFVR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBRkJBWFJCQW1vUWtCMExJQUpCMlBVQmFpQUFJQVFRangwZ0FpQUVRUVJxTmdMVTlRRWdBaUFFTmdMUTlRRWdBQ2dDeEtjQ0lnWkJBV3NoRFNBQUtBTEFwd0loRGtFQUlRRWdBaWdDM1BVQklRZ2dBaWdDMlBVQklRTUNRQU5BSUFFZ0JrY0VRQ0FPSUFOQjBCaHNhaUlGTFFERUdFVUVRQ0FDUVlEZEFXb2lBeUFDUWREMUFXb1E3QXNnQlNBREVJNGRHaUFLRUtVRklBVWdBVFlDekJnZ0JTQUlOZ0xJR0NBQUlBQW9Bc3luQWtFQmFqWUN6S2NDSUFBZ0FDZ0MwS2NDUVFGcU5nTFFwd0lNQXdzZ0NDQUZLQUxJR0VZRVFDQUVLQUlBSUFVb0FnQkdEUU1MSUFFZ0JTZ0N6QmhMQkVBZ0FrRzR4QUZxSWdZZ0FrSFE5UUZxRU93TElBSkJnTjBCYWlBR0VJMGRJUVlnQWlBQk5nTE05UUVnQWlBSU5nTEk5UUVnQ3hDbEJTQUdJQVVRclJBZ0FpQUNLQUxNOVFGQkFXbzJBc3oxQVNBQUlBTkJBV29nQUNnQ3hLY0NjQ0FHRUl3ZElBQWdBQ2dDektjQ1FRRnFOZ0xNcHdJZ0FDQUFLQUxRcHdKQkFXbzJBdENuQWlBR0VQRUhEQU1GSUFOQkFXcEJBQ0FESUExSEd5RURJQUZCQVdvaEFRd0NDd0FMQ3lBQ1FZRGRBV3BCaHJVRFFlc0RRUTRnQWtHNHhBRnFFQjBpQVJBWElRTWdERUdXTlJBT0dpQURFQmdnQVJBZUN5QUVRY1FZYWlFRURBRUxDeUFDUVFBMkFxekVBU0FDUVFocUlBSW9BcWpFQVJBMkRBSUxJQUV0QU1RWUJFQWdBaWdDck1RQklnTWdBaWdDc01RQklnUlBCRUFnQWtFSWFpQUVRUUYwUVFJZ0JCc1E2eHdnQWlnQ3JNUUJJUU1MSUFJZ0EwRUJhallDck1RQklBSW9BcWpFQVNBRFFjUVliR29nQVJEcEN4b0xJQUZCMEJocUlRRU1BQXNBQ3lBQ1FlRDFBV29rQUFzbUFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJFT2NjSUFJb0FnZ2FJQUpCRUdva0FBc05BQ0FBSUFGQndKd1NFSTBJQzBFQ0FuOEJma0VJSVFJZ0FDRURJQUZCQ0U4RVFFRi9JQUd0UXZ3QWZpSUVweUFFUWlDSXB4c1FGU0VESUFFaEFnc2dBQ0FETmdMZ0J5QUFJQUkyQXVnSEN5d0FJQUJDZ0lDQWdPQUFOd0o4SUFBZ0FEWUNlQ0FBSUFGQitBQnFFS1FRSUFBZ0FTa0NoQUUzQW9RQkMyUUJBbjhnQVNBQVFlZ0lhaWdDQUVzRVFDQUFLQUxnQ0NFRElBQWdBUkNESFVFQUlRRURRQ0FBS0FMa0NDQUJUUVJBSUFBZ0F4QTJCU0FCUVl3QmJDSUNJQUFvQXVBSWFpQUNJQU5xSWdJUW1SQWFJQUlRemdNZ0FVRUJhaUVCREFFTEN3c0xDZ0FnQUVISWtoSVFTQXR2QVFOL0l3QkJvQUZySWdNa0FDQUJLQUlBS0FJQUlnSVFIQ0FEUWRDY0JVSGJBRUVJSUFKQnlBSnFFQmNpQWtFWWFpSUVRYVNQREJBT0dpQUVJQUVvQWdRb0FnQWlBUVIvSUFFb0FnUW9BZ1FGUWVIaUJnc1FEaG9nQWhBWUlBQkJyT0lHRUJRYUlBTkJvQUZxSkFBTHV3Y0JBMzhqQUVIZ0FHc2lBeVFBSUFNZ0FqWUNEQ0FESUFFMkFnQWdBeUFEUVF4cU5nSUVBa0FnQWtVRVFDQUFJQU1RbHgwTUFRc0NRQ0FDS0FJRUlnRkIySndTUmdSQUlBTkIwQUJxSUFJb0Fpd29BZ2dpQVNnQ0pFRWthaEJUSUFOQk1Hb2lBaUFEUVNCcUFuOUJuUDhCSUFFb0FnUWlBVUhZK0JGR0RRQWFRWi9wQUNBQlFlRDVEMFlOQUJwQmdpNGdBVUdnK1JGR0RRQWFRZHJpQVNBQlFiRHJEMFlOQUJwQnhOSUVRYUM3QkNBQlFlajVFVVliQ3hBVUlnRkI4cG9KRUMwZ0EwRkFheUlFSUFJZ0EwSFFBR29pQlJCT0lBTkJFR29nQkVIem1na1FMU0FFRUE4YUlBSVFEeG9nQVJBUEdpQUZFQThhREFFTElBRVFyd2dFUUNBRFFkQUFhaUlFSUFJb0FoUWlBU0FCS0FJQUtBSU1FUUlBSUFOQlFHc2lBVUhwbEFrZ0JCREVBU0FEUVJCcUlBRkI4NW9KRUMwZ0FSQVBHaUFFRUE4YURBRUxJQUVRc0FvRVFDQURRZEFBYWlJRUlBSW9BaEFpQVNBQktBSUFLQUlNRVFJQUlBTkJRR3NpQVVINWxRa2dCQkRFQVNBRFFSQnFJQUZCODVvSkVDMGdBUkFQR2lBRUVBOGFEQUVMSUFFUWxoMEVRQ0FEUWRBQWFpSUJJQUlvQWhBb0FrQW9BaVJCSkdvUVV5QURRVUJySWdKQm00MEpJQUVReEFFZ0EwRVFhaUFDUWZPYUNSQXRJQUlRRHhvZ0FSQVBHZ3dCQ3lBQkVOOGRCRUFnQXlBQ0tBSVFOZ0l3SUFOQlFHc2lBU0FEUVRCcUVQWVFJQU5CMEFCcUlnSkJ0b29KSUFFUU5TQURRUkJxSUFKQjg1b0pFQzBnQWhBUEdpQUJFQThhREFFTElBRVE0aDBFUUNBRElBSW9BaEEyQWpBZ0EwRkFheUlCSUFOQk1Hb1Erd1VnQTBIUUFHb2lBa0dXbHdrZ0FSQTFJQU5CRUdvZ0FrSHptZ2tRTFNBQ0VBOGFJQUVRRHhvTUFRc2dBUkRoSFFSQUlBTWdBaWdDRURZQ01DQURRVUJySWdFZ0EwRXdhaEQzRUNBRFFkQUFhaUlDUWZDUUNTQUJFRFVnQTBFUWFpQUNRZk9hQ1JBdElBSVFEeG9nQVJBUEdnd0JDeUFCRU40ZEJFQWdBeUFDS0FJUU5nSXdJQU5CUUdzaUFTQURRVEJxRVBRUUlBTkIwQUJxSWdKQjRvNEpJQUVRTlNBRFFSQnFJQUpCODVvSkVDMGdBaEFQR2lBQkVBOGFEQUVMSUFFUTNSMEVRQ0FESUFJb0FoQTJBakFnQTBGQWF5SUJJQU5CTUdvUTlSQWdBMEhRQUdvaUFrSGVrZ2tnQVJBMUlBTkJFR29nQWtIem1na1FMU0FDRUE4YUlBRVFEeG9NQVFzZ0FSRGdIUVJBSUFNZ0FpZ0NFRFlDTUNBRFFVQnJJZ0VnQTBFd2FoRHpFQ0FEUWRBQWFpSUNRYWVLQ1NBQkVEVWdBMEVRYWlBQ1FmT2FDUkF0SUFJUUR4b2dBUkFQR2d3QkN5QURRUkJxSUFNUWx4MExJQUFnQTBFUWFpSUFFRlFhSUFBUUR4b0xJQU5CNEFCcUpBQUxFUUFnQUNBQ0lBSW9BZ0FvQWd3UkFnQUxZQUVCZnlBQUtBSUVJZ0lFUUNBQ0tBSUFJQUVRVjBFQlFRRkIxWjRJUWRDbkEwSHdBQkJMQ3lBQUlBRVF6UU1pQVVVRVFFRUFEd3NnQUNBQkVOUUdJUUVnQUNnQ0FDZ0NDQ0FCRUZkQkFVRUJRYUdiQ0VIUXB3TkI5QUFRU3lBQkMxa0JBbjhnQVNBQUtBS0lBa3NFUUNBQUtBS0FBaUVDSUFBZ0FSRHRDMEVBSVFFRFFDQUFLQUtFQWlBQlRRUkFJQUFnQWhBMkJTQUJRUVYwSWdNZ0FDZ0NnQUpxSUFJZ0Eyb1ErZ1VhSUFGQkFXb2hBUXdCQ3dzTEM3WUZBZ2QvQW40akFFR3dBV3NpQkNRQUlBRW9BbVFpQnlBQktBSnNJZ05CbGdGc1FaWUJha0hrQUc1SkJFQWpBRUV3YXlJRkpBQkJCaUFEUVFGMFFRSnFRWllCYkVIa0FHNGlBeUFEUVFaTkd5SUdJQUVvQW1STEJFQWdCVUtBZ0lDQXdBQTNBaVFnQlNBRlFSQnFJZ00yQWlBZ0F5QUJLQUpzRVB3TElBRW9BbUFpQXlBQktBSmtRUVIwYWlFSEEwQUNRQ0FESUFkR0JFQWdBUkRxQlNBQklBWVE2QVVnQlNnQ0lDSURJQVVvQWlSQkFuUnFJUVlNQVFzZ0F5MEFCQVJBSUFWQkVHb2dBeEMrQVJDbkJBc2dBMEVRYWlFRERBRUxDd05BSUFNZ0JrY0VRQ0FGSUFFZ0F4Q2NIU0FEUVFScUlRTU1BUXNMSUFWQkVHb1FYZ3NnQlVFd2FpUUFJQUVvQW1RaEJ3c2dCMEVCYXlFSklBSW9BZ0FpQlNBSGNDRUdJQUVvQW1BaENFRUFJUUlDUUFOQUlBSWdCMGNFUUNBSUlBWkJCSFJxSWdNdEFBUkZCRUFnQTBFQk9nQUVJQU1nQlRZQ0FDQUlJQVpCQkhScUlnTWdBallDRENBRElBVTJBZ2dnQVNBQktBSnNRUUZxTmdKc0lBRWdBU2dDY0VFQmFqWUNjQ0FBUWdBM0FnQU1Bd3NDUUNBREtBSUlJQVZIRFFBZ0JTQURLQUlBUncwQUlBQkNBamNDQUF3REN5QUNJQU1vQWd4TEJFQWdCQ0FGTmdLb0FTQUVJQVUyQXFBQklBUWdBallDckFFZ0JFRUJPZ0NrQVNBRUlBUXBBNmdCSWdvM0F3Z2dCQ0FFS1FPZ0FTSUxOd01BSUFRZ0F5a0NDRGNEcUFFZ0JDQURLUUlBTndPZ0FTQURJQXMzQWdBZ0F5QUtOd0lJSUFRZ0JDZ0NyQUZCQVdvMkFxd0JJQUVnQmtFQmFpQUJLQUprY0NBRVFhQUJhaEQwQlNBQklBRW9BbXhCQVdvMkFtd2dBU0FCS0FKd1FRRnFOZ0p3SUFCQ0FEY0NBQXdEQlNBR1FRRnFRUUFnQmlBSlJ4c2hCaUFDUVFGcUlRSU1BZ3NBQ3dzZ0JFR0d0UU5CNndOQkRpQUVRYUFCYWhBZElnRVFGeUlDUVJocVFaWTFFQTRhSUFJUUdDQUFRZ0EzQWdBZ0FSQWVDeUFFUWJBQmFpUUFDNWdCQWdOL0FYNGdBU0FBS0FJNFN3UkFJQUFvQWpBaEJFRUVJUUlnQUNFRElBRkJCRThFUUVGL0lBR3RRZ3grSWdXbklBVkNJSWluR3hBVklRTWdBU0VDQ3lBQUlBTTJBakFnQUNBQ05nSTRRUUFoQVFOQUlBQW9BalFnQVUwRVFDQUFJQVFRTmdVZ0FVRU1iQ0lDSUFBb0FqQnFJZ01nQWlBRWFpSUNLUUlBTndJQUlBTWdBaWdDQ0RZQ0NDQUJRUUZxSVFFTUFRc0xDd3NaQVFGL0lBRWdBQ2dDRUVZRWZ5QUNJQUFRN2dzRlFRQUxDNm9CQVFSL0l3QkJFR3NpQmlRQUl3QkJFR3NpQlNRQUlBSXRBQVJCL3dGR0JFQVFid0FMSXdCQkVHc2lBeVFBSUFNZ0JVRUlhallDQ0NNQVFSQnJJZ1FrQUNBRVFiQ0xFaWtEQURjRENDQURRUWhxSUFJZ0JFRUlha0YvSUFJdEFBUWlBaUFDUWY4QlJodEJBblJxS0FJQUVRRUFJUUlnQkVFUWFpUUFJQU5CRUdva0FDQUZRUkJxSkFBZ0FTZ0NsQUVoQVNBQUlBSTJBZ1FnQUNBQ0lBRndOZ0lBSUFaQkVHb2tBQXN6QVFGK0FuOUJBQ0FBS1FNUVFzQ0FnSUNBZ0lnaGd5SUJJQUZDQVgyRFVBMEFHa0VCSUFBUW53a05BQm9nQUJDeEVBc0wzQVVDQ0g4Q2ZpTUFRY0FCYXlJRUpBQWdBU2dDeEFFZ0FTZ0N6QUVpQTBHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUVVCcUlnVWtBRUVNSUFOQkFYUkJBbXBCbGdGc1FlUUFiaUlESUFOQkRFMGJJZ1lnQVNnQ3hBRkxCRUFnQlVLQWdJQ0FnQUUzQWpRZ0JTQUZRUkJxSWdNMkFqQWdBeUFCS0FMTUFSQTVJQUVvQXNBQklnTWdBU2dDeEFGQkJIUnFJUWNEUUFKQUlBTWdCMFlFUUNBQkVPb0VJQUVnQmhEa0JDQUZLQUl3SWdNZ0JTZ0NORUVDZEdvaEJnd0JDeUFETFFBRUJFQWdCVUVRYWlBREVMNEJFQ1FMSUFOQkVHb2hBd3dCQ3dzRFFDQURJQVpIQkVBZ0JTQUJJQU1Rb1IwZ0EwRUVhaUVEREFFTEN5QUZRUkJxRUNNTElBVkJRR3NrQUFzZ0JFRzRBV29nQVNBQ0VQUUxJQUVvQXNRQklnbEJBV3NoQ2lBQ0tBSUFJUVlnQVNnQ3dBRWhDQ0FFS0FLOEFTRUhJQVFvQXJnQklRVkJBQ0VDQWtBRFFDQUNJQWxIQkVBZ0NDQUZRUVIwYWlJRExRQUVSUVJBSUFOQkFUb0FCQ0FESUFZMkFnQWdDQ0FGUVFSMGFpSURJQUkyQWd3Z0F5QUhOZ0lJSUFFZ0FTZ0N6QUZCQVdvMkFzd0JJQUVnQVNnQzBBRkJBV28yQXRBQklBQkNBRGNDQUF3REN3SkFJQU1vQWdnZ0IwY05BQ0FHSUFNb0FnQkhEUUFnQUVJQ053SUFEQU1MSUFJZ0F5Z0NERXNFUUNBRUlBYzJBckFCSUFRZ0JqWUNxQUVnQkNBQ05nSzBBU0FFUVFFNkFLd0JJQVFnQkNrRHNBRWlDemNERUNBRUlBUXBBNmdCSWd3M0F3Z2dCQ0FES1FJSU53T3dBU0FFSUFNcEFnQTNBNmdCSUFNZ0REY0NBQ0FESUFzM0FnZ2dCQ0FFS0FLMEFVRUJhallDdEFFZ0FTQUZRUUZxSUFFb0FzUUJjQ0FFUWFnQmFoRHJCQ0FCSUFFb0Fzd0JRUUZxTmdMTUFTQUJJQUVvQXRBQlFRRnFOZ0xRQVNBQVFnQTNBZ0FNQXdVZ0JVRUJha0VBSUFVZ0NrY2JJUVVnQWtFQmFpRUNEQUlMQUFzTElBUkJDR3BCaHJVRFFlc0RRUTRnQkVHb0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFSEFBV29rQUFzS0FDQUFRZmp0RHhCSUN4SUFJQUJCK0FKQmlmMERRWGhCQnhES0FRc1JBQ0FBTFFBd0JFQWdBRUVBT2dBd0N3c1FBQ0FBTFFBd1JRUkFFRzhBQ3lBQUM0NEJBZ04vQVg0Z0FTQUFLQUtJQTBzRVFDQUFLQUtBQXlFRFFRZ2hBaUFBSVFRZ0FVRUlUd1JBUVg4Z0FhMUNNSDRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUNnQU1nQUNBQ05nS0lBMEVBSVFFRFFDQUFLQUtFQXlBQlRRUkFJQUFnQXhBMkJTQUJRVEJzSWdJZ0FDZ0NnQU5xSUFJZ0Eyb1ErQXNhSUFGQkFXb2hBUXdCQ3dzTEN6QUJBbjhqQUVGQWFpSUNKQUFnQWlBQUVPVWRJUU1nQUNBQkVMTVFJQUVnQXhDekVDQURFS1FKSUFKQlFHc2tBQXRvQVFOL0FrQWdBQ2dDRUNBQktBSUVTUVJBSUFBUXFnRWdBQ0FCS0FJRUVLd1dEQUVMSUFCQkFEWUNEQXNnQUNBQktBSUVJZ00yQWd3RFFDQUNJQU5IQkVBZ0FrRUNkQ0lFSUFBb0FnaHFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3c3VBQ0FBSUFFb0FnQVFWaUlBSUFFb0FnUWlBU2tDQURjQ0hDQUFJQUVvQWhBMkFpd2dBQ0FCS1FJSU53SWtDMEFDQW44QmZrRUdJUUlnQUNFRElBRkJCazhFUUVGL0lBR3RRaGgrSWdTbklBUkNJSWluR3hBVklRTWdBU0VDQ3lBQUlBTTJBcEFCSUFBZ0FqWUNtQUVMakFFQkEzOENRQ0FBS0FLWUFTQUJLQUlFU1FSQUlBQVF0QkFnQUNBQktBSUVFS29kREFFTElBQkJBRFlDbEFFTElBQWdBU2dDQkNJQ05nS1VBUU5BSUFJZ0Ewc0VRQ0FEUVJoc0lnUWdBQ2dDa0FGcUlnSWdBU2dDQUNBRWFpSUVLUUlBTndJQUlBSWdCQ2tDRURjQ0VDQUNJQVFwQWdnM0FnZ2dBMEVCYWlFRElBQW9BcFFCSVFJTUFRc0xDNXdCQWdOL0FYNGdBU0FBUWFnS2FpZ0NBRXNFUUNBQUtBS2dDaUVEUVFnaEFpQUFJUVFnQVVFSVR3UkFRWDhnQWExQ3BBRitJZ1duSUFWQ0lJaW5HeEFWSVFRZ0FTRUNDeUFBSUFRMkFxQUtJQUJCcUFwcUlBSTJBZ0JCQUNFQkEwQWdBQ2dDcEFvZ0FVMEVRQ0FBSUFNUU5nVWdBVUdrQVd3aUFpQUFLQUtnQ21vZ0FpQURhaUlDRUxZUUlBSVErQWNnQVVFQmFpRUJEQUVMQ3dzTEtBQWdBRUVBTmdLVUFTQUFRUVlRdFJBZ0FFRUFOZ0tjQVNBQUlBQW9BcUFCUVFGcU5nS2dBUXNTQUNBQVFkZ0FRYW4vQTBGOFFRTVF5Z0VMRFFBZ0FTZ0NBQ0FDS0FJQVJndEtBZ0YvQVg1QkZCQVZJUVFnQUNBQlFRaHFOZ0lFSUFBZ0JEWUNBQ0FES0FJQUtRSUFJUVVnQkVFQU5nSVFJQVFnQlRjQ0NDQUFRUUU2QUFnZ0JFRUFOZ0lBSUFRZ0FqWUNCQXZaQVFFRGZ5TUFRUkJySWdNa0FBSkFBa0FnQUMwQUJFSC9BVVlFUUVISzhQbU9BU0VDREFFTEl3QkJFR3NpQVNRQUlBRkJrSWtTS1FNQU53TUlJQU5CQ0dvZ0FDQUJRUWhxUVg4Z0FDMEFCQ0lDSUFKQi93RkdHMEVDZEdvb0FnQVJBUUFoQWlBQlFSQnFKQUFnQUMwQUJDSUFRZjhCUncwQkMwRi9JUUFMSXdCQklHc2lBU1FBSUFFZ0FEWUNGQ0FCSUFJMkFoQWdBU0FCS1FNUU53TUlJd0JCRUdzaUFDUUFJQUFnQVNrQ0NEY0RDQ0FBUVFocVFRZ1F6d2NoQWlBQVFSQnFKQUFnQWlFQUlBRkJJR29rQUNBRFFSQnFKQUFnQUF0ekFRTi9Ba0FnQUNnQ0dDQUJLQUlFU1FSQUlBQVFYaUFBSUFFb0FnUVF3UWtNQVFzZ0FFRUFOZ0lVQ3lBQUlBRW9BZ1FpQWpZQ0ZDQUFLQUlRSVFNZ0FTZ0NBQ0VCUVFBaEFBTkFJQUFnQWtjRVFDQURJQUJCQW5RaUJHb2dBU0FFYWlnQ0FEWUNBQ0FBUVFGcUlRQU1BUXNMQzBjQkFYOGdBUzBBQkFSQUlBQVFYaUFBSUFFb0FnQWlBaWtDQURjQ0VDQUFJQUlvQWdnMkFoZ2dBU2dDQUNJQVFRQTJBZ2dnQUVJQU53SUFEd3NnQUNBQktBSUFFTElkQzBvQkFYOGpBRUVRYXlJQ0pBQWdBRUtBZ0lDQXdBQTNBaFFnQUNBQU5nSVFJQUlnQVVFUWFqWUNDQ0FDSUFFb0FoQWdBVWM2QUF3Z0FDQUNRUWhxRUxNZElBSkJFR29rQUNBQUN4a0FJQUFnQVJDMEhTSUFRUnhxSUFGQkhHb1F3UXNhSUFBTEd3QWdBRUU4YWhCUElBQkJLR29RVHlBQVFSUnFFRThnQUJCUEN3Y0FJQUVwQXdBTEJBQkNBQXRBQWdKL0FYNUJEQ0VDSUFBaEF5QUJRUXhQQkVCQmZ5QUJyVUlzZmlJRXB5QUVRaUNJcHhzUUZTRURJQUVoQWdzZ0FDQUROZ0tRQkNBQUlBSTJBcGdFQ3hrQkFYOGdBU0FBS0FJb1JnUi9JQUlnQUJDMkFnVkJBQXNMMGdJQkMzOGdBQ2dDQUNJRUtBS3dBaUlJSUFBb0FpUkdCRUFnQUNnQ0lBOExJd0JCRUdzaUFTUUFJd0JCc0FGcklnVWtBQ0FFS0FLa0FpSUdRUUZySVFrZ0FFRUVhaUlLS0FJQUlnc2dCbkFoQWdKQUEwQWdBeUFHUndSQUlBUW9BcUFDSUFKQk1HeHFJZ2N0QUNSRkJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REN5QUhJQXNnQ2hDNkhRUkFJQUVnQWpZQ0RDQUJRUUU2QUFnTUF3c2dBeUFIS0FJc1N3UkFJQUZCQURZQ0RDQUJRUUE2QUFnTUF3VWdBa0VCYWtFQUlBSWdDVWNiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVZCaHJVRFFaNEVRUTRnQlVHZ0FXb1FIU0lDRUJjaUEwRVlha0hTTlJBT0dpQURFQmdnQVVFQU5nSU1JQUZCQURvQUNDQUNFQjRMSUFWQnNBRnFKQUFnQVNnQ0RDRUNJQVFvQXFBQ0lRUWdBUzBBQ0NFRElBRkJFR29rQUNBQUlBZzJBaVFnQUNBRUlBSkJNR3hxUVJ4cVFRQWdBeHNpQURZQ0lDQUFDNElCQVFSL0l3QkJJR3NpQVNRQUlBRkJDR29RenhzaUFpZ0NDQ0VESUFFZ0FqWUNCQ0FCSUFNMkFnQUNRQ0FBUVJ4cUlnUWdBUkM5QVNJQ0JFQWdBaWdDRENFQURBRUxJQUFnQUJDMEJCRFBHeUlDRUNnZ0FDQUFLQUlZUVFGcU5nSVlJQUVnQWlJQU5nSUVJQUVnQXpZQ0FDQUVJQUVRdkFFTElBRkJJR29rQUNBQUMwTUJBWDhqQUVFZ2F5SUNKQUFnQWlBQUtBSVFOZ0lZSUFJZ0FDa0NDRGNERUNBQ0lBQXBBZ0EzQXdnZ0FDQUJFTHNRSUFFZ0FrRUlhaEM3RUNBQ1FTQnFKQUFMS1FFQmZ5QUJJQUFvQWd4R0JIOGdBaWdDQUNBQUtBSUFSaUFDS0FJRUlBQW9BZ1JHY1FWQkFBc0x5d1lDQjM4QmZpTUFRY0FCYXlJRkpBQWdBU2dDOUFFZ0FTZ0MvQUVpQTBHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUWVBQWF5SUVKQUJCRENBRFFRRjBRUUpxUVpZQmJFSGtBRzRpQXlBRFFReE5HeUlISUFFb0F2UUJTd1JBSUFSQ2dJQ0FnSUFCTndKVUlBUWdCRUVRYWlJRE5nSlFJQU1nQVNnQy9BRVFzUVFnQVNnQzhBRWlBeUFCS0FMMEFVRVViR29oQ0FOQUFrQWdBeUFJUmdSQUlBRVFzZ1VnQVNBSEVQTUVJQVFvQWxBaUF5QUVLQUpVUVFOMGFpRUhEQUVMSUFNdEFBZ0VRQ0FFUVJCcUlBTVF1Z0lRc1FVTElBTkJGR29oQXd3QkN3c0RRQ0FESUFkSEJFQWdCQ0FCSUFNUXZ4MGdBMEVJYWlFRERBRUxDeUFFUVJCcUVKVUJDeUFFUWVBQWFpUUFDeUFDRVBrQ1FaS3hxUG9IYWtHVHBBWnpJZ05CQW5aQmx2aXArZ2R6SUFKQkJHb1ErUUpxSUFOeklRTWdBU2dDOUFFaEJDQUZJQU0yQXJ3QklBVWdBeUFFY0RZQ3VBRWdBU2dDOUFFaUIwRUJheUVJSUFVb0FyZ0JJUU1DUUFOQUlBWWdCMGNFUUNBQktBTHdBU0lKSUFOQkZHeHFJZ1F0QUFoRkJFQWdBaWtDQUNFS0lBUkJBVG9BQ0NBRUlBbzNBZ0FnQlNnQ3ZBRWhBaUFKSUFOQkZHeHFJZ01nQmpZQ0VDQURJQUkyQWd3Z0FTQUJLQUw4QVVFQmFqWUMvQUVnQVNBQktBS0FBa0VCYWpZQ2dBSWdBRUlBTndJQURBTUxJQVFnQlNnQ3ZBRWdBaEMrSFFSQUlBQkNBamNDQUF3REN5QUdJQVFvQWhCTEJFQWdCU0FDS1FJQU53TUlJQVVnQmpZQ0dDQUZJQVVvQXJ3Qk5nSVVJQVZCQVRvQUVDQUZRUWhxSWdJZ0JCQzlIU0FGSUFVb0FoaEJBV28yQWhnZ0EwRUJhaUFCS0FMMEFYQWhBMEVBSVFRZ0FTZ0M5QUVpQjBFQmF5RUlBa0FEUUNBRUlBZEdEUUVnQVNnQzhBRWdBMEVVYkdvaUJpMEFDQVJBSUFJZ0FpZ0NFQ0lKSUFZb0FoQkxCSDhnQmlBQ0VMMGRJQUlvQWhBRklBa0xRUUZxTmdJUUlBTkJBV3BCQUNBRElBaEhHeUVESUFSQkFXb2hCQXdCQ3dzZ0JpQUNFTHNRQ3lBQklBRW9BdndCUVFGcU5nTDhBU0FCSUFFb0FvQUNRUUZxTmdLQUFpQUFRZ0EzQWdBTUF3VWdBMEVCYWtFQUlBTWdDRWNiSVFNZ0JrRUJhaUVHREFJTEFBc0xJQVZCQ0dwQmhyVURRZXNEUVE0Z0JVR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCVUhBQVdva0FBdUNBUUVFZnlNQVFTQnJJZ0VrQUNBQlFRaHFFTkFiSWdJb0FnZ2hBeUFCSUFJMkFnUWdBU0FETmdJQUFrQWdBRUVjYWlJRUlBRVF2UUVpQWdSQUlBSW9BZ3doQUF3QkN5QUFJQUFRdEFRUTBCc2lBaEFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJJQUlpQURZQ0JDQUJJQU0yQWdBZ0JDQUJFTHdCQ3lBQlFTQnFKQUFnQUF1SUFRRUVmeU1BUVNCcklnRWtBQ0FCUVJCcUVNc2JJZ0lvQWdnaEF5QUJJQUkyQWd3Z0FTQUROZ0lJQWtBZ0FFRWNhaUlFSUFGQkNHb1FvUWtpQWdSQUlBSW9BZ3doQUF3QkN5QUFJQUFROFFzUXl4c2lBaEFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJJQUlpQURZQ0RDQUJJQU0yQWdnZ0JDQUJRUWhxRUtBSkN5QUJRU0JxSkFBZ0FBdUNBUUVFZnlNQVFTQnJJZ0VrQUNBQlFRaHFFTVViSWdJb0FnZ2hBeUFCSUFJMkFnUWdBU0FETmdJQUFrQWdBRUVjYWlJRUlBRVF2UUVpQWdSQUlBSW9BZ3doQUF3QkN5QUFJQUFRdEFRUXhSc2lBaEFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJJQUlpQURZQ0JDQUJJQU0yQWdBZ0JDQUJFTHdCQ3lBQlFTQnFKQUFnQUF2ckFRRURmeU1BUWNBQmF5SUNKQUJCRENBQlFaWUJiRUhrQUc0aUFTQUJRUXhOR3lJRElBQW9Bb1FEU3dSQUlBSkNnSUNBZ0lBQk53SzBBU0FDSUFKQkVHb2lBVFlDc0FFZ0FTQUFLQUtNQXhDL0VDQUFLQUtBQXlJQklBQW9Bb1FEUVFWMGFpRUVBMEFDUUNBQklBUkdCRUFnQUJEbEVDQUFJQU1RK1FzZ0FpZ0NzQUVpQVNBQ0tBSzBBVUVVYkdvaEF3d0JDeUFCTFFBVUJFQWdBa0VRYWlBQkVQMEhFTWNkQ3lBQlFTQnFJUUVNQVFzTEEwQWdBU0FEUmtVRVFDQUNRUWhxSUFBZ0FTQUJRUkJxRU5JZElBRkJGR29oQVF3QkN3c2dBa0VRYWhER0hRc2dBa0hBQVdva0FBczNBQ0FBTFFBVUJFQWdBQ0FCRU1VZER3c2dBQ0FCS1FJQU53SUFJQUFnQVNnQ0VEWUNFQ0FBSUFFcEFnZzNBZ2dnQUVFQk9nQVVDelFBSUFBZ0FTZ0NBRFlDQUNBQUlBRW9BZ1EyQWdRZ0FDQUJLQUlJTmdJSUlBQWdBU2dDRERZQ0RDQUFJQUVvQWhBMkFoQUxGQUFnQUVFQU5nS2tBU0FBSUFBb0FxQUJFRFlMYUFFQmZ5QUFLQUtrQVNJQ0lBQW9BcWdCVHdSQUlBQWdBQ2dDcUFFaUFrRUJkRUVDSUFJYkVMOFFJQUFvQXFRQklRSUxJQUFnQWtFQmFqWUNwQUVnQUNnQ29BRWdBa0VVYkdvaUFDQUJLQUlRTmdJUUlBQWdBU2tDQ0RjQ0NDQUFJQUVwQWdBM0FnQUw2d0VCQTM4akFFSEFBV3NpQWlRQVFRd2dBVUdXQVd4QjVBQnVJZ0VnQVVFTVRSc2lBeUFBS0FLRUEwc0VRQ0FDUW9DQWdJQ0FBVGNDdEFFZ0FpQUNRUkJxSWdFMkFyQUJJQUVnQUNnQ2pBTVF2eEFnQUNnQ2dBTWlBU0FBS0FLRUEwRUZkR29oQkFOQUFrQWdBU0FFUmdSQUlBQVE1UkFnQUNBREVQa0xJQUlvQXJBQklnRWdBaWdDdEFGQkZHeHFJUU1NQVFzZ0FTMEFGQVJBSUFKQkVHb2dBUkQ5QnhESEhRc2dBVUVnYWlFQkRBRUxDd05BSUFFZ0EwWkZCRUFnQWtFSWFpQUFJQUVnQVVFUWFoRFdIU0FCUVJScUlRRU1BUXNMSUFKQkVHb1F4aDBMSUFKQndBRnFKQUFMM0FVQ0NIOENmaU1BUWNBQmF5SUVKQUFnQVNnQ3hBRWdBU2dDekFFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFVQnFJZ1VrQUVFTUlBTkJBWFJCQW1wQmxnRnNRZVFBYmlJRElBTkJERTBiSWdZZ0FTZ0N4QUZMQkVBZ0JVS0FnSUNBZ0FFM0FqUWdCU0FGUVJCcUlnTTJBakFnQXlBQktBTE1BUkE1SUFFb0FzQUJJZ01nQVNnQ3hBRkJCSFJxSVFjRFFBSkFJQU1nQjBZRVFDQUJFT29FSUFFZ0JoRGtCQ0FGS0FJd0lnTWdCU2dDTkVFQ2RHb2hCZ3dCQ3lBRExRQUVCRUFnQlVFUWFpQURFTDRCRUNRTElBTkJFR29oQXd3QkN3c0RRQ0FESUFaSEJFQWdCU0FCSUFNUXlSMGdBMEVFYWlFRERBRUxDeUFGUVJCcUVDTUxJQVZCUUdza0FBc2dCRUc0QVdvZ0FTQUNFUFFMSUFFb0FzUUJJZ2xCQVdzaENpQUNLQUlBSVFZZ0FTZ0N3QUVoQ0NBRUtBSzhBU0VISUFRb0FyZ0JJUVZCQUNFQ0FrQURRQ0FDSUFsSEJFQWdDQ0FGUVFSMGFpSURMUUFFUlFSQUlBTkJBVG9BQkNBRElBWTJBZ0FnQ0NBRlFRUjBhaUlESUFJMkFnd2dBeUFITmdJSUlBRWdBU2dDekFGQkFXbzJBc3dCSUFFZ0FTZ0MwQUZCQVdvMkF0QUJJQUJDQURjQ0FBd0RDd0pBSUFNb0FnZ2dCMGNOQUNBR0lBTW9BZ0JIRFFBZ0FFSUNOd0lBREFNTElBSWdBeWdDREVzRVFDQUVJQWMyQXJBQklBUWdCallDcUFFZ0JDQUNOZ0swQVNBRVFRRTZBS3dCSUFRZ0JDa0RzQUVpQ3pjREVDQUVJQVFwQTZnQklndzNBd2dnQkNBREtRSUlOd093QVNBRUlBTXBBZ0EzQTZnQklBTWdERGNDQUNBRElBczNBZ2dnQkNBRUtBSzBBVUVCYWpZQ3RBRWdBU0FGUVFGcUlBRW9Bc1FCY0NBRVFhZ0JhaERyQkNBQklBRW9Bc3dCUVFGcU5nTE1BU0FCSUFFb0F0QUJRUUZxTmdMUUFTQUFRZ0EzQWdBTUF3VWdCVUVCYWtFQUlBVWdDa2NiSVFVZ0FrRUJhaUVDREFJTEFBc0xJQVJCQ0dwQmhyVURRZXNEUVE0Z0JFR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdk1CUUlJZndKK0l3QkJ3QUZySWdRa0FDQUJLQUprSUFFb0Ftd2lBMEdXQVd4QmxnRnFRZVFBYmtrRVFDTUFRVEJySWdVa0FFRUdJQU5CQVhSQkFtcEJsZ0ZzUWVRQWJpSURJQU5CQmswYklnWWdBU2dDWkVzRVFDQUZRb0NBZ0lEQUFEY0NKQ0FGSUFWQkVHb2lBellDSUNBRElBRW9BbXdRMWdJZ0FTZ0NZQ0lESUFFb0FtUkJCSFJxSVFjRFFBSkFJQU1nQjBZRVFDQUJFT29GSUFFZ0JoRG9CU0FGS0FJZ0lnTWdCU2dDSkVFQ2RHb2hCZ3dCQ3lBRExRQUVCRUFnQlVFUWFpQURFTDRCRUhFTElBTkJFR29oQXd3QkN3c0RRQ0FESUFaSEJFQWdCU0FCSUFNUXloMGdBMEVFYWlFRERBRUxDeUFGUVJCcUVGNExJQVZCTUdva0FBc2dCRUc0QVdvZ0FTQUNFT2NkSUFFb0FtUWlDVUVCYXlFS0lBSW9BZ0FoQmlBQktBSmdJUWdnQkNnQ3ZBRWhCeUFFS0FLNEFTRUZRUUFoQWdKQUEwQWdBaUFKUndSQUlBZ2dCVUVFZEdvaUF5MEFCRVVFUUNBRFFRRTZBQVFnQXlBR05nSUFJQWdnQlVFRWRHb2lBeUFDTmdJTUlBTWdCellDQ0NBQklBRW9BbXhCQVdvMkFtd2dBU0FCS0FKd1FRRnFOZ0p3SUFCQ0FEY0NBQXdEQ3dKQUlBTW9BZ2dnQjBjTkFDQUdJQU1vQWdCSERRQWdBRUlDTndJQURBTUxJQUlnQXlnQ0RFc0VRQ0FFSUFjMkFyQUJJQVFnQmpZQ3FBRWdCQ0FDTmdLMEFTQUVRUUU2QUt3QklBUWdCQ2tEc0FFaUN6Y0RFQ0FFSUFRcEE2Z0JJZ3czQXdnZ0JDQURLUUlJTndPd0FTQUVJQU1wQWdBM0E2Z0JJQU1nRERjQ0FDQURJQXMzQWdnZ0JDQUVLQUswQVVFQmFqWUN0QUVnQVNBRlFRRnFJQUVvQW1Sd0lBUkJxQUZxRVBRRklBRWdBU2dDYkVFQmFqWUNiQ0FCSUFFb0FuQkJBV28yQW5BZ0FFSUFOd0lBREFNRklBVkJBV3BCQUNBRklBcEhHeUVGSUFKQkFXb2hBZ3dDQ3dBTEN5QUVRUWhxUVlhMUEwSHJBMEVPSUFSQnFBRnFFQjBpQVJBWElnSkJHR3BCbGpVUURob2dBaEFZSUFCQ0FEY0NBQ0FCRUI0TElBUkJ3QUZxSkFBTEhRQWdBRUh3QUdvUXFnRWdBRUhjQUdvUXFnRWdBRUVvYWhBaklBQUxTZ0VDZnlNQVFiQUJheUlCSkFBZ0FDMEFMRVVFUUNBQlFZZXBBMEdPQVVFT0lBRkJvQUZxRUIwaUFCQVhJZ0pCR0dwQnRONElFQTRhSUFJUUdDQUFFQjRMSUFGQnNBRnFKQUFMM0FVQ0NIOENmaU1BUWNBQmF5SUVKQUFnQVNnQ3hBRWdBU2dDekFFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFVQnFJZ1VrQUVFTUlBTkJBWFJCQW1wQmxnRnNRZVFBYmlJRElBTkJERTBiSWdZZ0FTZ0N4QUZMQkVBZ0JVS0FnSUNBZ0FFM0FqUWdCU0FGUVJCcUlnTTJBakFnQXlBQktBTE1BUkE1SUFFb0FzQUJJZ01nQVNnQ3hBRkJCSFJxSVFjRFFBSkFJQU1nQjBZRVFDQUJFT29FSUFFZ0JoRGtCQ0FGS0FJd0lnTWdCU2dDTkVFQ2RHb2hCZ3dCQ3lBRExRQUVCRUFnQlVFUWFpQURFTDRCRUNRTElBTkJFR29oQXd3QkN3c0RRQ0FESUFaSEJFQWdCU0FCSUFNUXpSMGdBMEVFYWlFRERBRUxDeUFGUVJCcUVDTUxJQVZCUUdza0FBc2dCRUc0QVdvZ0FTQUNFUFVMSUFFb0FzUUJJZ2xCQVdzaENpQUNLQUlBSVFZZ0FTZ0N3QUVoQ0NBRUtBSzhBU0VISUFRb0FyZ0JJUVZCQUNFQ0FrQURRQ0FDSUFsSEJFQWdDQ0FGUVFSMGFpSURMUUFFUlFSQUlBTkJBVG9BQkNBRElBWTJBZ0FnQ0NBRlFRUjBhaUlESUFJMkFnd2dBeUFITmdJSUlBRWdBU2dDekFGQkFXbzJBc3dCSUFFZ0FTZ0MwQUZCQVdvMkF0QUJJQUJDQURjQ0FBd0RDd0pBSUFNb0FnZ2dCMGNOQUNBR0lBTW9BZ0JIRFFBZ0FFSUNOd0lBREFNTElBSWdBeWdDREVzRVFDQUVJQWMyQXJBQklBUWdCallDcUFFZ0JDQUNOZ0swQVNBRVFRRTZBS3dCSUFRZ0JDa0RzQUVpQ3pjREVDQUVJQVFwQTZnQklndzNBd2dnQkNBREtRSUlOd093QVNBRUlBTXBBZ0EzQTZnQklBTWdERGNDQUNBRElBczNBZ2dnQkNBRUtBSzBBVUVCYWpZQ3RBRWdBU0FGUVFGcUlBRW9Bc1FCY0NBRVFhZ0JhaERyQkNBQklBRW9Bc3dCUVFGcU5nTE1BU0FCSUFFb0F0QUJRUUZxTmdMUUFTQUFRZ0EzQWdBTUF3VWdCVUVCYWtFQUlBVWdDa2NiSVFVZ0FrRUJhaUVDREFJTEFBc0xJQVJCQ0dwQmhyVURRZXNEUVE0Z0JFR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdmNCUUlJZndKK0l3QkJ3QUZySWdRa0FDQUJLQUxFQVNBQktBTE1BU0lEUVpZQmJFR1dBV3BCNUFCdVNRUkFJd0JCUUdvaUJTUUFRUXdnQTBFQmRFRUNha0dXQVd4QjVBQnVJZ01nQTBFTVRSc2lCaUFCS0FMRUFVc0VRQ0FGUW9DQWdJQ0FBVGNDTkNBRklBVkJFR29pQXpZQ01DQURJQUVvQXN3QkVEa2dBU2dDd0FFaUF5QUJLQUxFQVVFRWRHb2hCd05BQWtBZ0F5QUhSZ1JBSUFFUTZnUWdBU0FHRU9RRUlBVW9BakFpQXlBRktBSTBRUUowYWlFR0RBRUxJQU10QUFRRVFDQUZRUkJxSUFNUXZnRVFKQXNnQTBFUWFpRUREQUVMQ3dOQUlBTWdCa2NFUUNBRklBRWdBeERPSFNBRFFRUnFJUU1NQVFzTElBVkJFR29RSXdzZ0JVRkFheVFBQ3lBRVFiZ0JhaUFCSUFJUTlRc2dBU2dDeEFFaUNVRUJheUVLSUFJb0FnQWhCaUFCS0FMQUFTRUlJQVFvQXJ3QklRY2dCQ2dDdUFFaEJVRUFJUUlDUUFOQUlBSWdDVWNFUUNBSUlBVkJCSFJxSWdNdEFBUkZCRUFnQTBFQk9nQUVJQU1nQmpZQ0FDQUlJQVZCQkhScUlnTWdBallDRENBRElBYzJBZ2dnQVNBQktBTE1BVUVCYWpZQ3pBRWdBU0FCS0FMUUFVRUJhallDMEFFZ0FFSUFOd0lBREFNTEFrQWdBeWdDQ0NBSFJ3MEFJQVlnQXlnQ0FFY05BQ0FBUWdJM0FnQU1Bd3NnQWlBREtBSU1Td1JBSUFRZ0J6WUNzQUVnQkNBR05nS29BU0FFSUFJMkFyUUJJQVJCQVRvQXJBRWdCQ0FFS1FPd0FTSUxOd01RSUFRZ0JDa0RxQUVpRERjRENDQUVJQU1wQWdnM0E3QUJJQVFnQXlrQ0FEY0RxQUVnQXlBTU53SUFJQU1nQ3pjQ0NDQUVJQVFvQXJRQlFRRnFOZ0swQVNBQklBVkJBV29nQVNnQ3hBRndJQVJCcUFGcUVPc0VJQUVnQVNnQ3pBRkJBV28yQXN3QklBRWdBU2dDMEFGQkFXbzJBdEFCSUFCQ0FEY0NBQXdEQlNBRlFRRnFRUUFnQlNBS1J4c2hCU0FDUVFGcUlRSU1BZ3NBQ3dzZ0JFRUlha0dHdFFOQjZ3TkJEaUFFUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBRVFjQUJhaVFBQ3hJQUlBQkI0QUJCb2Y4RFFYaEJCeERLQVFzNEFRSi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FFRXNhaUFCRU0wZElBSW9BZ2doQXlBQ1FSQnFKQUFnQTBFQ1J3UkFJQUFnQVJBa0N3dGFBUU4vSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ01BUVJCcklnRWtBQ0FCUVFocUlBQkI3QU5xSWdCQkxHb2dBa0VNYWlJREVNNGRJQUVvQWdnaEJDQUJRUkJxSkFBZ0JFRUNSd1JBSUFBZ0F4QWtDeUFDUVJCcUpBQUwvUU1DQ0g4QmZpTUFRYkFCYXlJRUpBQWdBU2dDaEFNaUNDQUJLQUtNQXlJRlFaWUJiRUdXQVdwQjVBQnVTUVJBSUFFZ0JVRUJkRUVDYWhEREhTQUJLQUtFQXlFSUN5QUlRUUZySVFvZ0FpZ0NEQ0lKSUFod0lRWUNRQU5BSUFjZ0NFY0VRQ0FCS0FLQUF5SUxJQVpCQlhScUlnVXRBQlJGQkVBZ0F5Z0NBQ0VESUFJcEFnQWhEQ0FGSUFJcEFnZzNBZ2dnQlNBTU53SUFJQVZCQVRvQUZDQUZJQU0yQWhBZ0N5QUdRUVYwYWlJQ0lBYzJBaHdnQWlBSk5nSVlJQUVnQVNnQ2pBTkJBV28yQW93RElBRWdBU2dDa0FOQkFXbzJBcEFESUFBZ0JVRVFhallDQkNBQVFRQTJBZ0FNQXdzZ0JTQUpJQUlROHdzRVFDQUFRUUkyQWdBZ0FDQUZRUkJxTmdJRURBTUxJQWNnQlNnQ0hFc0VRQ0FFSUFJcEFnZzNBd2dnQkNBQ0tRSUFOd01BSUFNb0FnQWhBaUFFSUFrMkFoZ2dCQ0FITmdJY0lBUWdBallDRUNBRVFRRTZBQlFnQkNBRkVLSUpJQVFnQkNnQ0hFRUJhallDSENBQklBWkJBV29nQVNnQ2hBTndJQVFROGdzZ0FTQUJLQUtNQTBFQmFqWUNqQU1nQVNBQktBS1FBMEVCYWpZQ2tBTWdBQ0FGUVJCcU5nSUVJQUJCQURZQ0FBd0RCU0FHUVFGcVFRQWdCaUFLUnhzaEJpQUhRUUZxSVFjTUFnc0FDd3NnQkVHR3RRTkI2d05CRGlBRVFhQUJhaEFkSWdFUUZ5SUNRUmhxUVpZMUVBNGFJQUlRR0NBQVFnQTNBZ0FnQVJBZUN5QUVRYkFCYWlRQUMvOERBUVYvSXdCQjBBQnJJZ01rQUNBRElBSTJBa3dDZjBFQUlBQW9BZ0FpQnlBQUtBSUVJQUlROWd0RkRRQWFJQU1nQUNnQ0NDZ0NBQ0lDTmdKSUlBTkJBRFlDUkFKQUlBSkJBVWNOQUNBRElBQW9BZ3dvQWdBMkFoZ2dCMEdrT0dvZ0EwRVlhaEQyQlFSQUlBTkJBRFlDU0F3QkN5QUFLQUlFSWdRb0FpUWhCU0FEUW9DQWdJQ0FBVGNDUENBRElBTkJHR29pQWpZQ09DQUNJQVVRT1NBRFFUaHFJUVpCQUNFQ0EwQWdBaUFGUndSQUlBTWdCQ2dDSUNBQ1FRSjBhaWdDQUNnQ0hEWUNFQ0FDUVFGcUlRSWdBMEVZYWlBRFFSQnFFQ1FNQVFzTElBTWdCallDQ0NBRElBTW9BamdnQTBFWWFrYzZBQXdnQTBFUWFpRUZJQWRCQ0dvaEJDTUFRUkJySWdJa0FBSi9Ba0FDUUFKQUlBTW9BZ2dpQmlnQ0JBNENBQUVDQ3lBRUlBRVFrUUVNQWdzZ0JpZ0NBQ2dDQUNJR0lBWW9BZ0FvQWdnUkFBQWdBVWNOQUNBREtBSUlLQUlBS0FJQURBRUxJQVFvQWdBaEJDQUNJQU1wQWdnM0F3Z2dCQ0FCSUFKQkNHb1FPZ3NoQVNBRlFRRTZBQVFnQlNBQk5nSUFJQUpCRUdva0FBSkFJQVVRS3lJQlJRMEFJQU1nQTBFUWFoQWFLQUlBSWdJMkFrUWdBZzBBSUFOQkF6WUNTQXNnQTBFWWFoQWpRUUFnQVVVTkFSb0xJQWNvQWdBZ0FDZ0NEQ0FEUWN3QWFpQURRY2dBYWlBQUtBSUVJQWRCakRScUlBTkJ4QUJxSUFBb0FoQVF3QkFMSVFBZ0EwSFFBR29rQUNBQUM2Z0JBUUovSUFBUUhDTUFRVEJySWdVa0FDQUFRYWdCYWlJQUVMMFFJUVlnQkNnQ0FDRUVJQU1vQWdBaEF5QUNLQUlBSVFJZ0FTZ0NBQ0VCSUFWQkFEb0FLQ0FGSUFVb0FpZzJBaEFnQlVFQU9nQWdJQVZCQURvQUhDQUZRUUE2QUJnZ0JTQUZLUU1nTndNSUlBVWdCU2tER0RjREFDQUFJQVpCQUNBQklBSWdBeUFFUVg4Z0JVRUlhaUFGRVBJUElnRVFLQ0FBSUFBb0FoaEJBV28yQWhnZ0JVRXdhaVFBSUFFTFNBRUJmeUFCTFFBRUJFQWdBQkNxQVNBQUlBRW9BZ0FpQWlrQ0FEY0NDQ0FBSUFJb0FnZzJBaEFnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBRHdzZ0FDQUJLQUlBRUtnZEMvMERBZ2gvQVg0akFFR3dBV3NpQkNRQUlBRW9Bb1FESWdnZ0FTZ0NqQU1pQlVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FCSUFWQkFYUkJBbW9ReUIwZ0FTZ0NoQU1oQ0FzZ0NFRUJheUVLSUFJb0Fnd2lDU0FJY0NFR0FrQURRQ0FISUFoSEJFQWdBU2dDZ0FNaUN5QUdRUVYwYWlJRkxRQVVSUVJBSUFNb0FnQWhBeUFDS1FJQUlRd2dCU0FDS1FJSU53SUlJQVVnRERjQ0FDQUZRUUU2QUJRZ0JTQUROZ0lRSUFzZ0JrRUZkR29pQWlBSE5nSWNJQUlnQ1RZQ0dDQUJJQUVvQW93RFFRRnFOZ0tNQXlBQklBRW9BcEFEUVFGcU5nS1FBeUFBSUFWQkVHbzJBZ1FnQUVFQU5nSUFEQU1MSUFVZ0NTQUNFUE1MQkVBZ0FFRUNOZ0lBSUFBZ0JVRVFhallDQkF3REN5QUhJQVVvQWh4TEJFQWdCQ0FDS1FJSU53TUlJQVFnQWlrQ0FEY0RBQ0FES0FJQUlRSWdCQ0FKTmdJWUlBUWdCellDSENBRUlBSTJBaEFnQkVFQk9nQVVJQVFnQlJDaUNTQUVJQVFvQWh4QkFXbzJBaHdnQVNBR1FRRnFJQUVvQW9RRGNDQUVFUElMSUFFZ0FTZ0NqQU5CQVdvMkFvd0RJQUVnQVNnQ2tBTkJBV28yQXBBRElBQWdCVUVRYWpZQ0JDQUFRUUEyQWdBTUF3VWdCa0VCYWtFQUlBWWdDa2NiSVFZZ0IwRUJhaUVIREFJTEFBc0xJQVJCaHJVRFFlc0RRUTRnQkVHZ0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFR3dBV29rQUF0Q0FRRi9JQUFnQVNrQ0FEY0NBQ0FBSUFFb0FnZzJBZ2dqQUVFUWF5SUJKQUFnQUNBQVFRUnFJQUJCQ0dvUXZ3Y2hBaUFCUVJCcUpBQWdBQ0FDTmdJTUlBQUxLUUVCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQUVITUNXb2dBa0VNYWhEWkJpQUNRUkJxSkFBTFFRRUNmeU1BUVJCcklnRWtBQ0FBTFFBc0lnSkIvd0ZIQkVBZ0FVRUlhaUFBSUFKQkFuUkIwSWdTYWlnQ0FCRUNBQXNnQUVIL0FUb0FMQ0FCUVJCcUpBQUxGd0FnQUJETUhTQUFMUUFzUVFGSEJFQVFid0FMSUFBTER3QWdBQkRNSFNBQUxRQXNRUUpHQzV3Q0FRVi9Jd0JCUUdvaUJpUUFJd0JCRUdzaUJ5UUFJQUlvQWlRaENDQUdRUkJxSWdSQ2dJQ0FnSUFCTndJa0lBUWdCRFlDSUNBRUlBZ1FPUU5BSUFVZ0NFY0VRQ0FISUFJb0FpQWdCVUVDZEdvb0FnQW9BaHcyQWd3Z0JDQUhRUXhxRUNRZ0JVRUJhaUVGREFFTEN5QUhRUkJxSkFBZ0F5Z0NNQ0lGSUFJb0FpUWlCQ0FFSUFWTEd5RUhRUUFoQlFKQUFrQURRQ0FGSUFkR0RRRWdCVUVDZENFRUlBVkJBV29oQlNBQklBUWdCaWdDTUdvZ0JDQURLQUlzYWlnQ0FDZ0NEQ0FFSUFJb0FpQnFLQUlBS0FJSVFSQnFFTlVRRFFBTElBQkJBam9BTEF3QkN5TUFRVEJySWdFa0FDQUFJQUVnQmtFUWFoRFZCaUlBRU5VR1FRRTZBQ3dnQUJBaklBRkJNR29rQUFzZ0JrRVFhaEFqSUFaQlFHc2tBQXNLQUNBQVFkQ0dFaEJJQ3dvQUlBQkJ1SVlTRUVnTENnQWdBRUh3aFJJUVNBc0tBQ0FBUWVpR0VoQklDd29BSUFCQm9JWVNFRWdMQ2dBZ0FFR0loaElRU0F2aUJBRUJmeU1BUWNBQmF5SUtKQUFnQ2lBQ05nS3dBU0FLSUFFMkFyZ0JJQUFnQ2lnQ3VBRWdDaWdDc0FFZ0F4RFpCQ0lBUWZqekR6WUNCQ0FBUWF6MER6WUNBQ0FBSUFRMkFpUWdBRUdZOUE4MkFnQWdBRUVvYWlBRkVMOEpJQUFnQnpZQ1dDQUFJQVkyQWxRZ0FFSGNBR29nQ0JEQkVDQUFRZkFBYWlBSkVNRVFBa0FnQUNnQ0pDSUNSUVJBUVFBaEJDQUtRWXlpQlVFcFFRQWdDa0dnQVdvUUhTSUJFQmNpQWtFWWFrSFV2UWdRRGhvZ0FoQVlJQUVRSGlBQUtBSWtJZ0pGRFFFTElBSWlCQ2dDQkVISTZROUhEUUFnQ2tHTW9nVkJLMEVBSUFwQm9BRnFFQjBpQVJBWElnSkJHR3BCdnVzSUVBNGFJQUlRR0NBQkVCNGdBQ2dDSkNFRUN5QUVFRmNnQUNnQ0NFRUJRUUJCemMwSVFZeWlCVUV0RUVzZ0JoQlhJQUFvQWdoQkFVRUFRZDIvQ0VHTW9nVkJMaEJMSUFBb0FsZ1FWeUFBS0FJSVFRRkJBRUhpd0FoQmpLSUZRUzhRU3lBQUtBSklJZ0lnQUNnQ1RFRUNkR29oQVNBS1FSaHFJUU1EUUFKQUlBRWdBa1lFUUNBQUtBSmtJZ0lnQUNnQ2FFRUNkR29oQVF3QkN5QUNLQUlBSWdSRkJFQWdDa0dNb2dWQk1VRUFJQXBCb0FGcUVCMGlCUkFYSVFZZ0EwSFozUWdRRGhvZ0JoQVlJQVVRSGdzZ0JCQlhJQUFvQWdoQkFVRUFRZHJKQ0VHTW9nVkJNaEJMSUFKQkJHb2hBZ3dCQ3dzRFFDQUJJQUpIQkVBZ0FpZ0NBQkJYSUFBb0FnaEJBVUVBUWQzRUNFR01vZ1ZCTlJCTElBSkJCR29oQWd3QkN3c2dBQ2dDZUNJQ0lBQW9BbnhCQW5ScUlRRURmeUFCSUFKR0JIOGdDa0hBQVdva0FDQUFCU0FDS0FJQUVGY2dBQ2dDQ0VFQlFRQkIzY1FJUVl5aUJVRTRFRXNnQWtFRWFpRUNEQUVMQ3dzMEFRRi9BMEFnQUNnQzFBVWdBVTBFUUNBQVFRQTJBdFFGQlNBQUtBTFFCU0FCUVR4c2FoQ2tDU0FCUVFGcUlRRU1BUXNMQ3lzQUlBQkJBRG9BTUNBQVFRQTZBQUFnQVMwQU1BUkFJQUFnQVJERUVBc2dBQ0FCS1FJME53STBJQUFMU2dFQ2Z5TUFRYkFCYXlJQkpBQWdBQzBBSEVVRVFDQUJRWWVwQTBHT0FVRU9JQUZCb0FGcUVCMGlBQkFYSWdKQkdHcEJ0TjRJRUE0YUlBSVFHQ0FBRUI0TElBRkJzQUZxSkFBTE5nRUJmeU1BUVJCcklnTWtBQ0FDS0FJQUVNTURJUUlnQVNnQ1pDRUJJQUFnQWpZQ0JDQUFJQUlnQVhBMkFnQWdBMEVRYWlRQUM4d0ZBZ2gvQW40akFFSEFBV3NpQkNRQUlBRW9BbVFnQVNnQ2JDSURRWllCYkVHV0FXcEI1QUJ1U1FSQUl3QkJNR3NpQlNRQVFRWWdBMEVCZEVFQ2FrR1dBV3hCNUFCdUlnTWdBMEVHVFJzaUJpQUJLQUprU3dSQUlBVkNnSUNBZ01BQU53SWtJQVVnQlVFUWFpSUROZ0lnSUFNZ0FTZ0NiQkRXQWlBQktBSmdJZ01nQVNnQ1pFRUVkR29oQndOQUFrQWdBeUFIUmdSQUlBRVE2Z1VnQVNBR0VPZ0ZJQVVvQWlBaUF5QUZLQUlrUVFKMGFpRUdEQUVMSUFNdEFBUUVRQ0FGUVJCcUlBTVF2Z0VRY1FzZ0EwRVFhaUVEREFFTEN3TkFJQU1nQmtjRVFDQUZJQUVnQXhEb0hTQURRUVJxSVFNTUFRc0xJQVZCRUdvUVhnc2dCVUV3YWlRQUN5QUVRYmdCYWlBQklBSVE1eDBnQVNnQ1pDSUpRUUZySVFvZ0FpZ0NBQ0VHSUFFb0FtQWhDQ0FFS0FLOEFTRUhJQVFvQXJnQklRVkJBQ0VDQWtBRFFDQUNJQWxIQkVBZ0NDQUZRUVIwYWlJRExRQUVSUVJBSUFOQkFUb0FCQ0FESUFZMkFnQWdDQ0FGUVFSMGFpSURJQUkyQWd3Z0F5QUhOZ0lJSUFFZ0FTZ0NiRUVCYWpZQ2JDQUJJQUVvQW5CQkFXbzJBbkFnQUVJQU53SUFEQU1MQWtBZ0F5Z0NDQ0FIUncwQUlBWWdBeWdDQUVjTkFDQUFRZ0kzQWdBTUF3c2dBaUFES0FJTVN3UkFJQVFnQnpZQ3NBRWdCQ0FHTmdLb0FTQUVJQUkyQXJRQklBUkJBVG9BckFFZ0JDQUVLUU93QVNJTE53TVFJQVFnQkNrRHFBRWlERGNEQ0NBRUlBTXBBZ2czQTdBQklBUWdBeWtDQURjRHFBRWdBeUFNTndJQUlBTWdDemNDQ0NBRUlBUW9BclFCUVFGcU5nSzBBU0FCSUFWQkFXb2dBU2dDWkhBZ0JFR29BV29ROUFVZ0FTQUJLQUpzUVFGcU5nSnNJQUVnQVNnQ2NFRUJhallDY0NBQVFnQTNBZ0FNQXdVZ0JVRUJha0VBSUFVZ0NrY2JJUVVnQWtFQmFpRUNEQUlMQUFzTElBUkJDR3BCaHJVRFFlc0RRUTRnQkVHb0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFSEFBV29rQUFzd0FRRi9JQUFvQWdBaEFTQUFRUUEyQWdBZ0FRUkFJQUF0QUFnRVFDQUJRUXhxRUs0RUN5QUJCRUFnQVJBZkN3c0xDZ0FnQUVIUS9CRVFTQXNLQUNBQVFhaUNFaEJJQ3dvQUlBQkJtUDBSRUVnTFBRRUNmMEVNSVFJZ0FDRURJQUZCREU4RVFFRi9JQUZCQkhRZ0FVSC8vLy8vQUVzYkVCVWhBeUFCSVFJTElBQWdBellDd0FFZ0FDQUNOZ0xJQVFzbEFDQUFFTzhMSUFCQkRCQzZFQ0FBUVFBMkFwd0VJQUFnQUNnQ29BUkJBV28yQXFBRUN3c0FJQUJCaElrU0VPRVNDOGNIQVFoL0l3QkIwQUZySWdna0FDQUJLQUtVQkNJRklBRW9BcHdFSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVHZ0Ftc2lCaVFBUVF3Z0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRU1UUnNpQ1NBQktBS1VCRXNFUUNBR1FvQ0FnSUNBQVRjQ2xBSWdCaUFHUVJCcUlnUTJBcEFDSUFRZ0FTZ0NuQVFRbXgwZ0FTZ0NrQVFpQkNBQktBS1VCRUVzYkdvaENnTkFBa0FnQkNBS1JnUkFJQUVRN2gwZ0FTQUpFTG9RSUFZb0FwQUNJZ1FnQmlnQ2xBSkJCWFJxSVFVTUFRc2dCQzBBSUFSQUlBUVE0QVloQ3lBR1FSQnFJZ1VvQW9RQ0lnY2dCU2dDaUFKUEJFQWdCU0FGS0FLSUFpSUhRUUYwUVFJZ0J4c1FteDBnQlNnQ2hBSWhCd3NnQlNBSFFRRnFOZ0tFQWlBRktBS0FBaUFIUVFWMGFpQUxFUG9GR2dzZ0JFRXNhaUVFREFFTEN3TkFJQVFnQlVjRVFDQUdRUWhxSUFFZ0JDQUVRUnhxRVBBZElBUkJJR29oQkF3QkN3c2dCa0VRYWlFRVFRQWhCUU5BSUFRb0FvUUNJQVZOQkVBZ0JFRUFOZ0tFQWdVZ0JDZ0NnQUlhSUFWQkFXb2hCUXdCQ3dzZ0JDQUVLQUtBQWhBMkN5QUdRYUFDYWlRQUlBRW9BcFFFSVFVTElBSW9BZ0FoQnlBSUlBTTJBc3dCSUFnZ0FqWUN5QUVnQlVFQmF5RUpJQWNnQlhBaEJFRUFJUU1DUUFOQUlBTWdCVWNFUUNBQktBS1FCQ0lLSUFSQkxHeHFJZ1l0QUNCRkJFQWdDRUVJYWlJQ0lBaEJ5QUZxRVB3RklBWWdBaENWRENBS0lBUkJMR3hxSWdJZ0F6WUNLQ0FDSUFjMkFpUWdBU0FCS0FLY0JFRUJhallDbkFRZ0FTQUJLQUtnQkVFQmFqWUNvQVFnQUNBR1FSeHFOZ0lFSUFCQkFEWUNBQXdEQ3lBR0lBY2dBaEM1Q1FSQUlBQkJBallDQUNBQUlBWkJIR28yQWdRTUF3c2dBeUFHS0FJb1N3UkFJQWhCcUFGcUlnSWdDRUhJQVdvUS9BVWdDRUVJYWlBQ0VKUU1JZ0lnQXpZQ0tDQUNJQWMyQWlRZ0FpQUdFT0VHSUFJZ0FpZ0NLRUVCYWpZQ0tDQUVRUUZxSUFFb0FwUUVjQ0VEUVFBaEJDQUJLQUtVQkNJSFFRRnJJUWtDUUFOQUlBUWdCMFlOQVNBQktBS1FCQ0FEUVN4c2FpSUZMUUFnQkVBZ0FpQUNLQUlvSWdvZ0JTZ0NLRXNFZnlBRklBSVE0UVlnQWlnQ0tBVWdDZ3RCQVdvMkFpZ2dBMEVCYWtFQUlBTWdDVWNiSVFNZ0JFRUJhaUVFREFFTEN5QUZJQUlRc3drTElBRWdBU2dDbkFSQkFXbzJBcHdFSUFFZ0FTZ0NvQVJCQVdvMkFxQUVJQUFnQmtFY2FqWUNCQ0FBUVFBMkFnQWdBaENxQWd3REJTQUVRUUZxUVFBZ0JDQUpSeHNoQkNBRFFRRnFJUU1NQWdzQUN3c2dDRUVJYWtHR3RRTkI2d05CRGlBSVFhZ0JhaEFkSWdFUUZ5SUNRUmhxUVpZMUVBNGFJQUlRR0NBQVFnQTNBZ0FnQVJBZUN5QUlRZEFCYWlRQUN4UUFJQUFnQVNnQ0FDZ0NBQ2dDSkVFa2FoQlRDNElKQWdsL0EzNGpBRUhBQVdzaUJTUUFJQUVvQXBRQklBRW9BcHdCSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVIUUFHc2lCaVFBUVFZZ0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRUdUUnNpQ3lBQktBS1VBVXNFUUNBR1FvQ0FnSURBQURjQ1JDQUdJQVpCRUdvaUJEWUNRQ0FFSUFFb0Fwd0JFSjBkSUFFb0FwQUJJZ1FnQVNnQ2xBRkJHR3hxSVF3RFFBSkFJQVFnREVZRVFDQUJFSzBkSUFFZ0N4QzFFQ0FHS0FKQUlnUWdCaWdDUkVFTWJHb2hCd3dCQ3lBRUxRQU1CRUFnQkJDd0NTRUtJQVpCRUdvaUJ5Z0NOQ0lJSUFjb0FqaFBCRUFnQnlBSEtBSTRJZ2hCQVhSQkFpQUlHeENkSFNBSEtBSTBJUWdMSUFjZ0NFRUJhallDTkNBSEtBSXdJQWhCREd4cUlnY2dDaWdDQ0RZQ0NDQUhJQW9wQWdBM0FnQUxJQVJCR0dvaEJBd0JDd3NEUUNBRUlBZEhCRUFnQmtFSWFpQUJJQVFnQkVFSWFoRHlIU0FFUVF4cUlRUU1BUXNMSUFaQkVHb2lCRUVBTmdJMElBUWdCQ2dDTUJBMkN5QUdRZEFBYWlRQUN5QUZRYmdCYWlBQklBSVFueDBnQVNnQ2xBRWlCMEVCYXlFSUlBVW9BcmdCSVFZQ1FBTkFJQWNnQ1VjRVFDQUJLQUtRQVNJS0lBWkJHR3hxSWdRdEFBeEZCRUFnQWlrQ0FDRU5JQU1vQWdBaEFpQUVRUUU2QUF3Z0JDQUNOZ0lJSUFRZ0RUY0NBQ0FGS0FLOEFTRUNJQW9nQmtFWWJHb2lBeUFKTmdJVUlBTWdBallDRUNBQklBRW9BcHdCUVFGcU5nS2NBU0FCSUFFb0FxQUJRUUZxTmdLZ0FTQUFJQVJCQ0dvMkFnUWdBRUVBTmdJQURBTUxJQVFnQlNnQ3ZBRWdBaENlSFFSQUlBQkJBallDQUNBQUlBUkJDR28yQWdRTUF3c2dDU0FFS0FJVVN3UkFJQUlwQWdBaERTQUZJQU1vQWdBMkFxZ0JJQVVnQlNnQ3ZBRTJBckFCSUFVZ0RUY0RvQUVnQlNBSk5nSzBBU0FGUVFFNkFLd0JJQVVnQlNrRHNBRWlEamNERUNBRklBVXBBNmdCSWc4M0F3Z2dCU0FOTndNQUlBVWdCQ2tDRURjRHNBRWdCU0FFUVFocUlnY3BBZ0EzQTZnQklBVWdCQ2tDQURjRG9BRWdCQ0FOTndJQUlBUWdEamNDRUNBRUlBODNBZ2dnQlNBRktBSzBBVUVCYWpZQ3RBRWdCa0VCYWlBQktBS1VBWEFoQkVFQUlRWWpBRUVnYXlFRElBRW9BcFFCSWdsQkFXc2hDQUpBQTBBZ0JpQUpSZzBCSUFFb0FwQUJJQVJCR0d4cUlnSXRBQXdFUUNBRklBVW9BclFCSWdvZ0FpZ0NGRXNFZnlBRElBSXBBaEEzQXhnZ0F5QUNLUUlJTndNUUlBTWdBaWtDQURjRENDQUNJQVVwQXJBQk53SVFJQUlnQlNrQ3FBRTNBZ2dnQWlBRktRS2dBVGNDQUNBRklBTXBBeGczQXJBQklBVWdBeWtERURjQ3FBRWdCU0FES1FNSU53S2dBU0FGS0FLMEFRVWdDZ3RCQVdvMkFyUUJJQVJCQVdwQkFDQUVJQWhIR3lFRUlBWkJBV29oQmd3QkN3c2dBaUFGS1FLZ0FUY0NBQ0FDSUFVcEFyQUJOd0lRSUFJZ0JTa0NxQUUzQWdnTElBRWdBU2dDbkFGQkFXbzJBcHdCSUFFZ0FTZ0NvQUZCQVdvMkFxQUJJQUFnQnpZQ0JDQUFRUUEyQWdBTUF3VWdCa0VCYWtFQUlBWWdDRWNiSVFZZ0NVRUJhaUVKREFJTEFBc0xJQVZCaHJVRFFlc0RRUTRnQlVHZ0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JVSEFBV29rQUFzS0FDQUFFTW9RUVFCSEMyMEJCSDhqQUVFd2F5SUJKQUFnQVNBQUtBSUFJZ1JCcUIxcUlBQW9BZ1FvQWdBUXB3RWdBVUVRYWlJQ1FiQ0lDU0FCRURVZ0FVRWdhaUlESUFKQjg1b0pFQzBnQkNBRElBQW9BZ2dvQWdBb0FpaEJFR29RSnlBREVBOGFJQUlRRHhvZ0FSQVBHaUFCUVRCcUpBQUxHUUFnQUNBQklBSWdBMEhva2hKQitKSVNRY2lTRWhEZ0Vnc3BBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBUWV3QmFpQUNRUXhxRU5BZElBSkJFR29rQUF0T0FRTi9Jd0JCc0FGcklnRWtBQ0FBRUxzZElnQkZCRUFnQVVIWXJ3TkJ6UUJCRGlBQlFhQUJhaEFkSWdJUUZ5SURRUmhxUWUycENCQU9HaUFERUJnZ0FoQWVDeUFCUWJBQmFpUUFJQUFMV2dFRGZ5TUFRYUFCYXlJQkpBQWdBVUczbXdWQnloZEJDQ0FBS0FJQUtBSUVFQmNpQWtFWWFpSURRZTYvQ3hBT0dpQURRZFNRREJBT0dpQUNJQUFvQWdRb0FnQW9BZ1JCQkdvUW1nRWFJQUlRR0NBQlFhQUJhaVFBQzJNQkFuOGpBRUVRYXlJREpBQWdBeUFDTmdJTUlBTWdBVFlDQ0NNQVFSQnJJZ0VrQUNBQlFRaHFJQUJCL0FacUlnQkJ6QUJxSUFOQkNHb2lBaEMvSFNBQktBSUlJUVFnQVVFUWFpUUFJQVJCQWtjRVFDQUFJQUlRc1FVTElBTkJFR29rQUF1U0FRRUNmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBaUFBTmdJQUlBSWdBa0VNYWpZQ0JBSi9Ba0FnQVVVTkFFRUJJQUVvQWdRaUFCQ1JBdzBCR2lBQVFmQ3FFa2NOQUVFQ0RBRUxJd0JCRUdzaUFDUUFJQUJCQ0dvZ0FpZ0NBRUdNT21vZ0FpZ0NCQkQvQ3lBQUxRQU1JUUVnQUNnQ0NDRURJQUJCRUdva0FDQURRUUFnQVJzTElRQWdBa0VRYWlRQUlBQUxpQUVCQkg4akFFRXdheUlCSkFBZ0FVRVFhaERHR3lJQ0tBSUlJUU1nQVNBQ05nSU1JQUVnQXpZQ0NBSkFJQUJCSEdvaUJDQUJRUWhxRUwwQklnSUVRQ0FDS0FJTUlRQU1BUXNnQUNBQUVLVUVFTVliSWdJUUtDQUFJQUFvQWhoQkFXbzJBaGdnQVNBQ0lnQTJBZ3dnQVNBRE5nSUlJQVFnQVVFSWFoQzhBUXNnQVVFd2FpUUFJQUFMa0FFQkJIOGpBRUV3YXlJQ0pBQWdBa0VRYWlBQktBSUFFTWdiSWdNb0FnZ2hCQ0FDSUFNMkFnd2dBaUFFTmdJSUFrQWdBRUVjYWlJRElBSkJDR29RdlFFaUJRUkFJQVVvQWd3aEFRd0JDeUFBSUFBUXBRUWdBU2dDQUJESUd5SUJFQ2dnQUNBQUtBSVlRUUZxTmdJWUlBSWdBVFlDRENBQ0lBUTJBZ2dnQXlBQ1FRaHFFTHdCQ3lBQ1FUQnFKQUFnQVF1UUFRRUVmeU1BUVRCcklnSWtBQ0FDUVJCcUlBRW9BZ0FReHhzaUF5Z0NDQ0VFSUFJZ0F6WUNEQ0FDSUFRMkFnZ0NRQ0FBUVJ4cUlnTWdBa0VJYWhDOUFTSUZCRUFnQlNnQ0RDRUJEQUVMSUFBZ0FCQ2xCQ0FCS0FJQUVNY2JJZ0VRS0NBQUlBQW9BaGhCQVdvMkFoZ2dBaUFCTmdJTUlBSWdCRFlDQ0NBRElBSkJDR29RdkFFTElBSkJNR29rQUNBQkM0SUJBUVIvSXdCQklHc2lBU1FBSUFGQkNHb1F5aHNpQWlnQ0NDRURJQUVnQWpZQ0JDQUJJQU0yQWdBQ1FDQUFRUnhxSWdRZ0FSQzlBU0lDQkVBZ0FpZ0NEQ0VBREFFTElBQWdBQkMwQkJES0d5SUNFQ2dnQUNBQUtBSVlRUUZxTmdJWUlBRWdBaUlBTmdJRUlBRWdBellDQUNBRUlBRVF2QUVMSUFGQklHb2tBQ0FBQzVrQkFRUi9JQUFRSENNQVFUQnJJZ0lrQUNBQ1FSQnFJQUVvQWdBUXh3c2lBeWdDQ0NFRUlBSWdBellDRENBQ0lBUTJBZ2dDUUNBQVFSQnFJZ05CSEdvaUJTQUNRUWhxRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQXlBREVLVUVJQUVvQWdBUXh3c2lBQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUNJQUEyQWd3Z0FpQUVOZ0lJSUFVZ0FrRUlhaEM4QVFzZ0FrRXdhaVFBSUFBTEV3QWdBRUhRQUdvUVhpQUFRU1JxRUNNZ0FBc1FBQ0FBRUJ3Z0FFRVFhaUFCRVB3ZEN3NEFJQUFRSENBQVFSQnFFUHNkQ3c0QUlBQVFIQ0FBUVVCckVNRWRDellCQVg4Z0FDZ0NCQ0lDSUFGQkFuUnFJUUVEUUNBQklBSkdCRUFnQUNBQk5nSUVCU0FDUVFBMkFnQWdBa0VFYWlFQ0RBRUxDd3VUQVFFRmZ5TUFRZEFBYXlJRUpBQWdCRUVRYWlJRklBSWdBQ2dDQkJEZEhpQUVRU0JxSWdaQnhiY0tJQVVRTlNBRVFUQnFJZ2NnQmtHNDV3a1FMU0FFUVVCcklnZ2dCeUFFSUFNUStRY2lBeEJPSUFBZ0NDQUJFQ2NnQ0JBUEdpQURFQThhSUFjUUR4b2dCaEFQR2lBRkVBOGFJQUJCcUIxcUlBSW9BZ0JCQUNBQ0xRQU1RUUZHR3hDZENTQUVRZEFBYWlRQUMrZ3BBaFYvQVg0akFFSFFBbXNpQXlRQUlBTWdBallDcEFJZ0FDZ0NBQ0VFSUFNZ0FEWUNtQUlnQXlBRFFhUUNhaUlHTmdLY0FpQURJQVEyQXBBQ0lBTWdBRFlDaUFJZ0F5QUdOZ0tNQWlBRElBQTJBb1FDSUFNZ0JqWUNnQUlnQXlBRU5nTDRBU0FESUFBMkF2QUJJQU1nQmpZQzlBRWdBeUFFTmdMc0FTQURJQUEyQXVBQklBTWdBMEh3QVdvaUNEWUM2QUVnQXlBR05nTGtBU0FESUFBMkF0UUJJQU1nQ0RZQzJBRWdBeUFEUVlBQ2FpSUlOZ0xRQVNBRElBQTJBc1FCSUFNZ0EwSGdBV28yQXNnQklBTWdDRFlDd0FFZ0F5QUVOZ0s0QVNBRElBQTJBclFCSUFNZ0JqWUN2QUVnQXlBSU5nS3dBU0FESUFRMkFxZ0JJQU1nQURZQ3BBRWdBeUFHTmdLc0FTQURJQWcyQXFBQkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCUVFGckRtQktTVWhIUmtWRVEwSkJRRDgrUFR3N09qazROelkxTkRNeU1Vc3ZZUUFEQkFFSUVSb0pFaHNLRXh3TEZCME1GUjRORmg4T0Z5QVBHQ0VRR1NKZlhsMWNXMXBaV0ZkV1ZWUlRVbEZRVDA1TlRBSUZJeVlwTEFZa0p5b3RCeVVvS3k0d0N5QURRWmdDYWlBRUVLb0pFSjBCSVFJTVl3c2dBMEdZQW1vZ0JCRFVBaENkQVNFQ0RHSUxJQU5CbUFKcUlBUVExd1lRblFFaEFneGhDeUFEUVpnQ2FpQURRWWdDYWhDb0FoQ2RBU0VDREdBTElBTkJtQUpxSUFRUTVBRVFuUUVoQWd4ZkN5QURRZEFCYWtFQ0VNOFFJUUlNWGdzZ0EwSFFBV3BCQXhEUEVDRUNERjBMSUFOQjBBRnFRUVFRenhBaEFneGNDeUFEUWNBQmFrRUNRUUlRcVFVaEFneGJDeUFEUWNBQmFrRUNRUU1RcVFVaEFneGFDeUFEUWNBQmFrRUNRUVFRcVFVaEFneFpDeUFEUWNBQmFrRURRUUlRcVFVaEFneFlDeUFEUWNBQmFrRURRUU1RcVFVaEFneFhDeUFEUWNBQmFrRURRUVFRcVFVaEFneFdDeUFEUWNBQmFrRUVRUUlRcVFVaEFneFZDeUFEUWNBQmFrRUVRUU1RcVFVaEFneFVDeUFEUWNBQmFrRUVRUVFRcVFVaEFneFRDeUFEUVpnQ2FpQURRZUFCYWlBRUVPUUJRUUpCQWhEQ0FoQ2RBU0VDREZJTElBTkJtQUpxSUFOQjRBRnFJQVFRNUFGQkFrRURFTUlDRUowQklRSU1VUXNnQTBHWUFtb2dBMEhnQVdvZ0JCRGtBVUVDUVFRUXdnSVFuUUVoQWd4UUN5QURRWmdDYWlBRFFlQUJhaUFFRU9RQlFRTkJBaERDQWhDZEFTRUNERThMSUFOQm1BSnFJQU5CNEFGcUlBUVE1QUZCQTBFREVNSUNFSjBCSVFJTVRnc2dBMEdZQW1vZ0EwSGdBV29nQkJEa0FVRURRUVFRd2dJUW5RRWhBZ3hOQ3lBRFFaZ0NhaUFEUWVBQmFpQUVFT1FCUVFSQkFoRENBaENkQVNFQ0RFd0xJQU5CbUFKcUlBTkI0QUZxSUFRUTVBRkJCRUVERU1JQ0VKMEJJUUlNU3dzZ0EwR1lBbW9nQTBIZ0FXb2dCQkRrQVVFRVFRUVF3Z0lRblFFaEFneEtDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFQ1FRSVF3Z0lRblFFaEFneEpDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFQ1FRTVF3Z0lRblFFaEFneElDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFQ1FRUVF3Z0lRblFFaEFneEhDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRFFRSVF3Z0lRblFFaEFneEdDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRFFRTVF3Z0lRblFFaEFneEZDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRFFRUVF3Z0lRblFFaEFneEVDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRVFRSVF3Z0lRblFFaEFneERDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRVFRTVF3Z0lRblFFaEFneENDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRVFRUVF3Z0lRblFFaEFneEJDeUFEUVpnQ2FpQURRZkFCYWlBRUVPUUJRUUlRMHdFUW5RRWhBZ3hBQ3lBRFFaZ0NhaUFEUWZBQmFpQUVFT1FCUVFNUTB3RVFuUUVoQWd3L0N5QURRWmdDYWlBRFFmQUJhaUFFRU9RQlFRUVEwd0VRblFFaEFndytDeUFEUVpnQ2FpQURRZkFCYWlBRFFZZ0NhaENvQWtFQ0VOTUJFSjBCSVFJTVBRc2dBMEdZQW1vZ0EwSHdBV29nQTBHSUFtb1FxQUpCQXhEVEFSQ2RBU0VDRER3TElBTkJtQUpxSUFOQjhBRnFJQU5CaUFKcUVLZ0NRUVFRMHdFUW5RRWhBZ3c3Q3lBRFFaZ0NhaUFEUWZBQmFpQUVFTlFDUVFJUTB3RVFuUUVoQWd3NkN5QURRWmdDYWlBRFFmQUJhaUFFRU5RQ1FRTVEwd0VRblFFaEFndzVDeUFEUVpnQ2FpQURRZkFCYWlBRUVOUUNRUVFRMHdFUW5RRWhBZ3c0Q3lBRFFaZ0NhaUFEUWZBQmFpQUVFTmNHUVFJUTB3RVFuUUVoQWd3M0N5QURRWmdDYWlBRFFmQUJhaUFFRU5jR1FRTVEwd0VRblFFaEFndzJDeUFEUVpnQ2FpQURRZkFCYWlBRUVOY0dRUVFRMHdFUW5RRWhBZ3cxQ3lBREVOOEdJUW9nQUNnQ21EUWhEeUFBSUFvMkFwZzBJQU5CZ0FKcVFRRkJBaENvQlNJTFJRMHlJQXNvQWt3aUJDZ0NBQ0VOUVFBaEFrRUFJUUVnQ3lnQ1VFRUNUd1JBSUFRb0FnUWhBUXNnQXlBQUlBMFEwQU1pQ0RZQ3pBSWdDRVVOTXdKL0lBRUVRQ01BUVRCcklnWWtBQ0FHSUFBZ0FDQUJFSVVDUVFBUWxnSWlCRFlDTEFKQUlBUkZEUUFnQkNnQ0dFRUNSZ1JBQWtBZ0JCRHdEeUlFUlEwQUlBUW9BZ1JCMkp3U1J3MEFJQVlnQkNnQ0xDSUVRUUFnQkNnQ0JFR1FuQkpHR3lJRU5nSWdJQVJGRFFBZ0FDZ0NBQ0lFRUJ3akFFRWdheUlGSkFBZ0JVRVFhaUFHS0FJZ0VJOGNJZ2NvQWdnaENTQUZJQWMyQWd3Z0JTQUpOZ0lJQWtBZ0JFRkFheUlIUVJ4cUlnd2dCVUVJYWhDaENTSUVCRUFnQkNnQ0RDRUVEQUVMSUFjZ0J4RDhBeUFHS0FJZ0VJOGNJZ1FRS0NBSElBY29BaGhCQVdvMkFoZ2dCU0FFTmdJTUlBVWdDVFlDQ0NBTUlBVkJDR29Rb0FrTElBVkJJR29rQUNBRUlRVU1BZ3NnQUNnQ0FDSUVFQndqQUVFZ2F5SUZKQUFnQlVFUWFpQUdLQUlzRUk0Y0lnY29BZ2doQ1NBRklBYzJBZ3dnQlNBSk5nSUlBa0FnQkVGQWF5SUhRUnhxSWd3Z0JVRUlhaENoQ1NJRUJFQWdCQ2dDRENFRURBRUxJQWNnQnhEOEF5QUdLQUlzRUk0Y0lnUVFLQ0FISUFjb0FoaEJBV28yQWhnZ0JTQUVOZ0lNSUFVZ0NUWUNDQ0FNSUFWQkNHb1FvQWtMSUFWQklHb2tBQ0FFSVFVTUFRc2dCQ2dDSENJRVJRUkFJQUFnQmtFZ2FrSEd1Z1FRRkNJRUlBRkJFR29RSnlBRUVBOGFEQUVMSUFRZ0JDZ0NBQ2dDQ0JFQUFDSUhFUE1IUlFSQUlBWWdCeUFIS0FJQUtBSU1FUUlBSUFaQkVHb2lCRUdJa2drZ0JoQTFJQVpCSUdvaUJ5QUVRZk9hQ1JBdElBQWdCeUFCUVJCcUVDY2dCeEFQR2lBRUVBOGFJQVlRRHhvTUFRc2dCQkJqSWhoQ0FGY0VRQ0FHSUJnUTl3WWdCa0VRYWlJRVFkdjVDQ0FHRURVZ0JrRWdhaUlISUFSQjI0MEhFQzBnQUNBSElBRkJFR29RSnlBSEVBOGFJQVFRRHhvZ0JoQVBHZ3dCQ3lBQUtBSUFJUVFnQmlBWVBnSWdJQVFnQmtFZ2FoQ0hIaUVGQ3lBR1FUQnFKQUFnQlF3QkN5QUFLQUlBRUlNZUN5SVFSUTB6SUFOQkFEb0F4QUlnQTBFQU5nSzhBaUFESUF0QjJBQnFOZ0xBQWtFQUlRUWpBRUVnYXlJR0pBQWdBeWdDd0FJaEJTQUdRUUE2QUJ3Z0JpQUZOZ0lZQWtBZ0FFR3NIV29pRVNBR1FSaHFFRUZGRFFBZ0F5Z0N3QUlpQnlnQ0FDSUZJQWNvQWdSQkFuUnFJUklEUUNBRklCSkdCRUJCQVNFRURBSUxJQVlnQlNnQ0FDSUhOZ0lVSUFBZ0J4QXpHaUFHS0FJVUlRY2dCaUFBTmdJSUlBWWdCa0VVYWpZQ0RBSkFJQWRGRFFBZ0J5Z0NCRUhZZ2hKSERRQWdDQkNZQ1FSQUlBTWdCeWdDSkRZQ3ZBSWdDQ0FJS0FJQUtBSVFFUUFBSVJNZ0NDQUlLQUlBS0FJVUVRQUFJUWtqQUVFUWF5SU1KQUFDZndKQUlCTWdCeWdDSkNJT1N5QUpJQTVMY2cwQUlBNGdDWEFOQUVFQkRBRUxJQkVnREVIenpRTVFGQ0lKSUFkQkVHb1FKeUFKRUE4YVFRQUxJUWNnREVFUWFpUUFJQWRGRFFNTElBVkJCR29oQlF3QkN3c2pBRUVRYXlJRkpBQWdCaWdDQ0NFSElBWW9BZ3dvQWdBaENTQUZRUXMyQWd3Z0JVR01zd0UyQWdnZ0JTQUZLUU1JTndNQUlBY2dDU0FGRUVBZ0JVRVFhaVFBQ3lBR1FTQnFKQUFnQkVVTk15QURJQUFnQzBFUWFpQU5RUkJxSWdJZ0FTQURLQUtrQWlBQkcwRVFhaUFJSUJBZ0F5Z0N2QUlRMWhBaUFUWUN1QUlnQVVVTk1nSkFJQWdvQWdSQjhLUVNSZ1JBSUFNZ0FqWUNxQUlnQTBHd0Ftb2dBRUdzS1dvZ0EwRzRBbW9nQTBHb0Ftb1FxUWtNQVFzZ0EwR3dBbW9nQUVHc0tXb2lBU0FEUWN3Q2FoRC9DeUFETFFDMEFrVU5BQ0FEUWFnQ2FpQUJJQU5CdUFKcUlBTkJzQUpxRUtrSkN5QUtLQUlRSWdFZ0NpZ0NGRUVDZEdvaEFnTkFJQUVnQWtZRVFDQURLQUs0QWlFQ0REVUZJQUVvQWdBaEJDQUFLQUlBSWdVUUhDQUZRZVFCYWlBREtBSzRBaUFFRU5zUUlBRkJCR29oQVF3QkN3QUxBQXNnQTBIQUFtb2lBU0FDUVNScUVGTWdBMEczbXdWQnNCWkJDQ0FBS0FJRUVCY2lBRUVRYWlBREtBS2tBa0VRYWhDdUF5QUFRUmhxSWdKQjg1SUpFQTRhSUFJZ0FSQVNHaUFDUWZPYUNSQU9HaUFBRUJnZ0FSQVBHZ3d2Q3lBRUlBTkI4QUZxSUFRUTVBRkJCQkRUQVJDZUF5RUNERElMSUFRZ0EwSHdBV29nQTBHSUFtb1FxQUpCQkJEVEFSQ2VBeUVDRERFTElBUWdBMEh3QVdvZ0JCQ29CRUVFRU5NQkVKNERJUUlNTUFzZ0JDQURRZkFCYWlBRUVPUUJRUU1RMHdFUW5nTWhBZ3d2Q3lBRUlBTkI4QUZxSUFOQmlBSnFFS2dDUVFNUTB3RVFuZ01oQWd3dUN5QUVJQU5COEFGcUlBUVFxQVJCQXhEVEFSQ2VBeUVDREMwTElBUWdBMEh3QVdvZ0JCRGtBVUVDRU5NQkVKNERJUUlNTEFzZ0JDQURRZkFCYWlBRFFZZ0NhaENvQWtFQ0VOTUJFSjRESVFJTUt3c2dCQ0FEUWZBQmFpQUVFS2dFUVFJUTB3RVFuZ01oQWd3cUN5QUVJQVFRNUFFUW5nTWhBZ3dwQ3lBRUlBTkJpQUpxRUtnQ0VKNERJUUlNS0FzZ0JDQUVFS2dFRUo0RElRSU1Kd3NnQkNBRFFmQUJhaUFFRU9RQlFRUVEwd0VRblFNaEFnd21DeUFFSUFOQjhBRnFJQU5CaUFKcUVLZ0NRUVFRMHdFUW5RTWhBZ3dsQ3lBRUlBTkI4QUZxSUFRUXFBUkJCQkRUQVJDZEF5RUNEQ1FMSUFRZ0EwSHdBV29nQkJEa0FVRURFTk1CRUowRElRSU1Jd3NnQkNBRFFmQUJhaUFEUVlnQ2FoQ29Ba0VERU5NQkVKMERJUUlNSWdzZ0JDQURRZkFCYWlBRUVLZ0VRUU1RMHdFUW5RTWhBZ3doQ3lBRUlBTkI4QUZxSUFRUTVBRkJBaERUQVJDZEF5RUNEQ0FMSUFRZ0EwSHdBV29nQTBHSUFtb1FxQUpCQWhEVEFSQ2RBeUVDREI4TElBUWdBMEh3QVdvZ0JCQ29CRUVDRU5NQkVKMERJUUlNSGdzZ0JDQUVFT1FCRUowRElRSU1IUXNnQkNBRFFZZ0NhaENvQWhDZEF5RUNEQndMSUFRZ0JCQ29CQkNkQXlFQ0RCc0xJQVFnQkJEWEJoQ3JEQ0VDREJvTElBUWdCQkRVQWhDckRDRUNEQmtMUVFBaEFpQURRWUFDYWtFQlFRQVFxQVVpQVVVTkdDQURJQUFnQVNnQ1RDZ0NBQkRRQXlJQk5nSUFJQUZGRFJnZ0FFR3NIV29nQVNBREtBS2tBa0VRYWhDekhFVU5HQ0FEUVFNMkFzQUNJQU5CQVRvQXNBSWdCQ0FESUFOQndBSnFJQU5Cc0FKcUVLSWZJUUlNR0FzZ0EwR2dBV3BCQXhEK0N5RUNEQmNMSUFOQm9BRnFRUUlRL2dzaEFnd1dDeUFEUWFBQmFrRUJFUDRMSVFJTUZRc2dBMEdnQVdwQkFCRCtDeUVDREJRTElBTkJBVFlDQUVFQUlRSWdBMEdBQW1wQkFVRUFFS2dGSWdGRkRSTWdBQ0FCS0FKTUtBSUFFSzhKSWdGRkRSTWdBeUFCS0FJUU5nTEFBaUFFSUFNZ0EwSEFBbW9RcFI4aUFTRVdRUUFoRkNBQVFhd2RhaUVDSUFNb0FxUUNRUkJxSVFRakFFRVFheUlBSkFCQkFTRUZBa0FDUUNBQktBSVlRUUZIQkVBZ0FpQUFRY0h4QkJBVUlnRWdCQkFuREFFTElBRW9BaHdRaEFFUXhSd05BU0FDSUFCQmlmd0dFQlFpQVNBRUVDY0xJQUVRRHhwQkFDRUZDeUFBUVJCcUpBQWdGaUFVSUFVYklRSU1Fd3NnQTBHWUFtb2dCQkNDSGhDZEFTRUNEQklMSUFOQkFUWUNBQ0FEUVpnQ2FpQUVJQU1RZ1I0UW5RRWhBZ3dSQ3lBRFFRVTJBZ0FnQTBHWUFtb2dCQ0FERUtnSkVKMEJJUUlNRUFzZ0EwRUVOZ0lBSUFOQm1BSnFJQVFnQXhDb0NSQ2RBU0VDREE4TElBTkJBallDQUNBRFFaZ0NhaUFFSUFNUXFBa1FuUUVoQWd3T0N5QURRUUUyQWdBZ0EwR1lBbW9nQkNBREVLZ0pFSjBCSVFJTURRc2dBMEd3QVdwQkJSRDBCeUVDREF3TElBTkJzQUZxUVFRUTlBY2hBZ3dMQ3lBRFFiQUJha0VERVBRSElRSU1DZ3NnQTBHd0FXcEJBaEQwQnlFQ0RBa0xJQU5Cc0FGcVFRRVE5QWNoQWd3SUN5QURRYkFCYWtFQUVQUUhJUUlNQndzZ0EwRUJOZ0lBSUFOQm1BSnFJQVFnQXhEOUN4Q2RBU0VDREFZTElBTkJBRFlDQUNBRFFaZ0NhaUFFSUFNUS9Rc1FuUUVoQWd3RkMwRUFJUUlnQTBHQUFtcEJBa0VERUtnRklnVkZEUVFnQUNBRktBSk1LQUlBRUtNZUlnRkZEUVFnQXlBQktBSVFJZ0UyQXJBQ0lBQWdCU2dDVENnQ0JCQ3ZDU0lJUlEwQUlBTWdDQ2dDRURZQ3FBSWdBeUFCUVFScklnRkJCRTBFZnlBQlFRSjBRY3ovREdvb0FnQUZRUUlMTmdMTUFpQUZLQUpRUVFOUEJFQWdBQ0FGS0FKTUtBSUlFTjhRSWdGRkRRRWdBeUFCS0FJUU5nTE1BZ3NnQUVHc0hXb2hCaUFFSUFOQnFBSnFJQU5Cc0FKcUlBTkJ6QUpxRUpJUklRRWpBRUVnYXlJRUpBQUNmeUFCS0FJY0lnZEZCRUFnQmlBRVFSQnFRZlBaQkJBVUlnWWdCVUVRYWhBbklBWVFEeHBCQUF3QkN5QUhRUWRHSUFVb0FsQkJBMGx5UlFSQUlBWWdCRUVRYWtHcXpBUVFGQ0lHSUFWQkVHb1FKeUFHRUE4YVFRQU1BUXNnQVNnQ0lDRUtJQUVvQWhnaEN5QUVRUUE2QUF3Z0JFSEFuQ0EyQWdnZ0JpQUxJQW9nQnlBRVFRaHFJQVZCRUdvUXlCd0xJUVVnQkVFZ2FpUUFJQVZGRFFRZ0FDQURLQUt3QWlBREtBS29BaUFJS0FJSVFSQnFFT2dFQkVBZ0FTRUNEQVVMSUFOQndBSnFJZ1FnQVJDNEd5QURRZGVxQ2lBRUVEVWdBQ0FESUFNb0FxUUNRUkJxRUlZQklBTVFEeG9nQkJBUEdnd0VDMEVBSVFJTUF3dEJBQ0VDSUFOQmdBSnFRUUZCQUJDb0JTSUJSUTBDSUFBZ0FTZ0NUQ2dDQUJDdkNTSUVSUTBDSUFNZ0JDZ0NFRFlDQUNBQUtBSUFJQU1RL3gwaUFpRVhRUUFoRlNBQVFhd2RhaUVFSXdCQkVHc2lBQ1FBSUFJb0FoZ1E4d2NpQWtVRVFDQUVJQUJCeGJrQkVCUWlCQ0FCS0FKTUtBSUFRUkJxRUNjZ0JCQVBHZ3NnQUVFUWFpUUFJQmNnRlNBQ0d5RUNEQUlMUVFBaEFnc2dBQ0FQTmdLWU5DQUtFSzRFQ3lBRFFkQUNhaVFBSUFJTG1RRUJCSDhnQUJBY0l3QkJJR3NpQWlRQUlBSkJFR29nQVNnQ0FCRElDeUlES0FJSUlRUWdBaUFETmdJTUlBSWdCRFlDQ0FKQUlBQkJRR3NpQTBFY2FpSUZJQUpCQ0dvUW9Ra2lBQVJBSUFBb0Fnd2hBQXdCQ3lBRElBTVEvQU1nQVNnQ0FCRElDeUlBRUNnZ0F5QURLQUlZUVFGcU5nSVlJQUlnQURZQ0RDQUNJQVEyQWdnZ0JTQUNRUWhxRUtBSkN5QUNRU0JxSkFBZ0FBdFVBUU4vSXdCQkVHc2lBU1FBSUFBb0FnZ2hBaUFBS0FJQUlRTWdBQ2dDQkNnQ0FDRUFJQUZCQ3pZQ0RDQUJRYVBwQURZQ0NDQUJJQUVwQXdnM0F3QWdBeUFBUVJCcUlBSWdBUkNGSGlBQlFSQnFKQUFMYVFFRGZ5TUFRUkJySWdRa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdNMkFnd2dCQ0FETmdJSUlBQkJqQUZxSWdNUXZ3RWlCU0FBS0FJSUlBUW9BZ2dnQVNBQ0tBSUFFSlllR2lBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JTRUFJQVJCRUdva0FDQUFDNmNCQVFSL0l3QkJvQUZySWdNa0FDQUFLQUlBSWdJUUhDQUNRZVFCYWlBQkVMSUtJZ1JGQkVBZ0FDZ0NBQ0lBRUJ3Z0EwSDlyQU5CTTBFSUlBQkJ5QUpxRUJjaUFrRVlha0dtbGdrUURob2dBaUFCS0FJRVFRUnFFSm9CSWdWQkdHb2lBRUhjOFF3UURob2dBRUdENUFzUURob2dCVUVRYWlBQlFSQnFFSzRESUFCQjIvZ01FQTRhSUFCQjhQVUxFQTRhSUFBZ0FSRGRBeUFDRUJnTElBTkJvQUZxSkFBZ0JBdVpBZ0VIZnlNQVFjQUJheUlESkFBZ0EwRzRBV29nQVNBQ0VQUUxJQUVvQXNRQklnVkJBV3NoQmlBQ0tBSUFJUWNnQVNnQ3dBRWhDQ0FES0FLOEFTRUpJQU1vQXJnQklRSkJBQ0VCQWtBRFFDQUJJQVZIQkVBZ0NDQUNRUVIwYWlJRUxRQUVSUVJBSUFCQkFEWUNCQ0FBUVFBNkFBQU1Bd3NDUUNBRUtBSUlJQWxIRFFBZ0J5QUVLQUlBUncwQUlBQWdBallDQkNBQVFRRTZBQUFNQXdzZ0FTQUVLQUlNU3dSQUlBQkJBRFlDQkNBQVFRQTZBQUFNQXdVZ0FrRUJha0VBSUFJZ0JrY2JJUUlnQVVFQmFpRUJEQUlMQUFzTElBTkJDR3BCaHJVRFFaNEVRUTRnQTBHb0FXb1FIU0lCRUJjaUFrRVlha0hTTlJBT0dpQUNFQmdnQUVFQU5nSUVJQUJCQURvQUFDQUJFQjRMSUFOQndBRnFKQUFMUlFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FDZ0NBQ2dDQUNFQklBSWdBQ2dDQkJDTkhqWUNDQ0FCSUFKQkNHb2dBa0VNYWhDZkFpRUFJQUpCRUdva0FDQUFDdzBBSUFBb0FnQW9BZ0FRNUFFTGl3RUJBWDhnQUNnQ0JDSUNCRUFnQWlnQ0FDQUJFRmRCQVVFQlFkV2VDRUhRcHdOQjhBQVFTd3NnQUNBQkVNMERJZ0ZGQkVCQkFBOExRUUFoQWdKQUlBRkZEUUFnQVVFQUlBRUVmeUFCS0FJRUVOMEZCVUVBQ3hzaUFnMEFJQUFnQVVIbzZnOFE0UVJCQUNFQ0N5QUFLQUlBS0FJSUlBSVFWMEVCUVFGQm9ac0lRZENuQTBIMEFCQkxJQUlMRFFBZ0FDZ0NBQ2dDQUJEVUFndGVBUUovSXdCQkVHc2lBaVFBQWtBZ0FVVU5BQ0FCUVFBZ0FRUi9JQUVvQWdRUTNSMEZRUUFMR3lJRERRQWdBa0VTTmdJTUlBSkJwb2tFTmdJSUlBSWdBaWtEQ0RjREFDQUFJQUVnQWhDbUJVRUFJUU1MSUFKQkVHb2tBQ0FEQ3hjQUlBQkJBQ0FBQkg4Z0FDZ0NCQkRoSFFWQkFBc2JDeElBSUFCQmlJOE1RZGtMUWJlYkJSREREQXRSQVFKL0l3QkJFR3NpQkNRQUlBQW9BZ0FoQlNBRUlBTTJBZ3dnQkNBQk5nSUlJQVVnQkVFSWFpSUJFUGtGSUFBb0FnQWhBQ0FFSUFNMkFnd2dCQ0FDTmdJSUlBQWdBUkQ1QlNBRVFSQnFKQUFMd2dZQ0NIOENmaU1BUWNBQmF5SUZKQUFnQVNnQzlBRWdBU2dDL0FFaUJFR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFlQUFheUlHSkFCQkRDQUVRUUYwUVFKcVFaWUJiRUhrQUc0aUJDQUVRUXhOR3lJSElBRW9BdlFCU3dSQUlBWkNnSUNBZ0lBQk53SlVJQVlnQmtFUWFpSUVOZ0pRSUFRZ0FTZ0MvQUVRc1FRZ0FTZ0M4QUVpQkNBQktBTDBBVUVVYkdvaENBTkFBa0FnQkNBSVJnUkFJQUVRc2dVZ0FTQUhFUE1FSUFZb0FsQWlCQ0FHS0FKVVFRTjBhaUVIREFFTElBUXRBQWdFUUNBR1FSQnFJQVFRdWdJUXNRVUxJQVJCRkdvaEJBd0JDd3NEUUNBRUlBZEhCRUFnQmtFSWFpQUJJQVFnQkVFRWFoQ1VIaUFFUVFocUlRUU1BUXNMSUFaQkVHb1FsUUVMSUFaQjRBQnFKQUFMSUFWQnVBRnFJQUVnQWhEeUJDQUJLQUwwQVNJS1FRRnJJUXNnQWlnQ0FDRUhJQUVvQXZBQklRZ2dCU2dDdkFFaENTQUZLQUs0QVNFR1FRQWhBZ0pBQTBBZ0FpQUtSd1JBSUFnZ0JrRVViR29pQkMwQUNFVUVRQ0FES0FJQUlRTWdCRUVCT2dBSUlBUWdBellDQkNBRUlBYzJBZ0FnQlNnQ3ZBRWhBeUFJSUFaQkZHeHFJZ1lnQWpZQ0VDQUdJQU0yQWd3Z0FTQUJLQUw4QVVFQmFqWUMvQUVnQVNBQktBS0FBa0VCYWpZQ2dBSWdBQ0FFUVFScU5nSUVJQUJCQURZQ0FBd0RDd0pBSUFRb0Fnd2dDVWNOQUNBSElBUW9BZ0JIRFFBZ0FFRUNOZ0lBSUFBZ0JFRUVhallDQkF3REN5QUNJQVFvQWhCTEJFQWdBeWdDQUNFRElBVkJBVG9BcUFFZ0JTQUNOZ0t3QVNBRklBTTJBcVFCSUFVZ0J6WUNvQUVnQlNBSk5nS3NBU0FGSUFJMkFoQWdCU0FGS1FPb0FTSU1Od01JSUFVZ0JTa0RvQUVpRFRjREFDQUZJQVFvQWhBMkFyQUJJQVVnQkNrQ0NEY0RxQUVnQlNBRUtRSUFOd09nQVNBRUlBSTJBaEFnQkNBTk53SUFJQVFnRERjQ0NDQUZJQVVvQXJBQlFRRnFOZ0t3QVNBQklBWkJBV29nQVNnQzlBRndJQVZCb0FGcUVMSUVJQUVnQVNnQy9BRkJBV28yQXZ3QklBRWdBU2dDZ0FKQkFXbzJBb0FDSUFBZ0JFRUVhallDQkNBQVFRQTJBZ0FNQXdVZ0JrRUJha0VBSUFZZ0MwY2JJUVlnQWtFQmFpRUNEQUlMQUFzTElBVkJoclVEUWVzRFFRNGdCVUdnQVdvUUhTSUJFQmNpQWtFWWFrR1dOUkFPR2lBQ0VCZ2dBRUlBTndJQUlBRVFIZ3NnQlVIQUFXb2tBQXM0QUNBQUVCd2dBRUdvQVdvaUFDQUFFUEVGSUFFb0FnQWdBaWdDQUNBREtBSUFFTmNMSWdFUUtDQUFJQUFvQWhoQkFXbzJBaGdnQVFzbkFDQUFJQUVnQWlBRElBUkJ6cEVGUWN2T0NFSGd2Z2hCMlBJUFFlenlEMEc0OGc4UXlRd0xsUW9CQ0g4akFFSFFBR3NpQWlRQUlBQW9BZ0FoQXlBQ0lBRkJBQ0FCS0FJRVFianpEMFliTmdKQUlBTWdBa0ZBYXlBQVFaQTBhaUFBUVlnMGFoQ1ZIaUVJSUFBb0FnQWlBeEFjSUFOQjVBRnFJQUVnQ0JDNUFTQUFRYmdkYWlJSkVJMENJQUJCckIxcUlRY0NRQUpBQWtBQ1FDQUJLQUlFSWdOQnVQTVBSZ1JBSUFGQjRBQnFJZ1lvQWdBaUF5QUJLQUprUVFKMGFpRUZBa0FEUUNBRElBVkdEUUVnQUNBREtBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBTkJCR29oQXd3QkN3c2dBa0VRTmdKRUlBSkJnNGNCTmdKQUlBSWdBaWtEUURjREFDQUFJQVFnQWhCQURBUUxJQUpCQURvQU5DQUNJQVkyQWpBZ0J5QUNRVEJxRUVFTkFRd0RDeUFEUWRpRUVrWUVRQ0FCUVRocUlnWW9BZ0FpQXlBQktBSThRUUowYWlFRkFrQURRQ0FESUFWR0RRRWdBQ0FES0FJQUlnUVFNeG9DUUNBRVJRMEFJQVFvQWdSQmtJSVNSdzBBSUFBZ0JFRWthaEJESUFOQkJHb2hBd3dCQ3dzZ0FrRU9OZ0pFSUFKQjVJWUJOZ0pBSUFJZ0Fpa0RRRGNEQ0NBQUlBUWdBa0VJYWhCQURBUUxJQUpCQURvQU5DQUNJQVkyQWpBZ0J5QUNRVEJxRUVGRkRRTU1BUXNnQTBHNDhBOUdCRUFnQVVFMGFpSUdLQUlBSWdNZ0FTZ0NPRUVDZEdvaEJRSkFBMEFnQXlBRlJnMEJJQUFnQXlnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBRFFRUnFJUU1NQVFzTElBSkJEVFlDUkNBQ1FhYUhBVFlDUUNBQ0lBSXBBMEEzQXhBZ0FDQUVJQUpCRUdvUVFBd0VDeUFDUVFBNkFEUWdBaUFHTmdJd0lBY2dBa0V3YWhCQlJRMEREQUVMSUFOQitQQVBSZ1JBSUFGQk1Hb2lCaWdDQUNJRElBRW9BalJCQW5ScUlRVUNRQU5BSUFNZ0JVWU5BU0FBSUFNb0FnQWlCQkF6R2dKQUlBUkZEUUFnQkNnQ0JFR1FnaEpIRFFBZ0FDQUVRU1JxRUVNZ0EwRUVhaUVEREFFTEN5QUNRUTgyQWtRZ0FrSHpoZ0UyQWtBZ0FpQUNLUU5BTndNWUlBQWdCQ0FDUVJocUVFQU1CQXNnQWtFQU9nQTBJQUlnQmpZQ01DQUhJQUpCTUdvUVFVVU5Bd3dCQ3lBRFFmanhEMFlFUUNBQlFjZ0FhaUlHS0FJQUlnTWdBU2dDVEVFQ2RHb2hCUUpBQTBBZ0F5QUZSZzBCSUFBZ0F5Z0NBQ0lFRURNYUFrQWdCRVVOQUNBRUtBSUVRWkNDRWtjTkFDQUFJQVJCSkdvUVF5QURRUVJxSVFNTUFRc0xJQUpCRVRZQ1JDQUNRWlNIQVRZQ1FDQUNJQUlwQTBBM0F5QWdBQ0FFSUFKQklHb1FRQXdFQ3lBQ1FRQTZBRFFnQWlBR05nSXdJQWNnQWtFd2FoQkJSUTBEREFFTElBTkJpSVVTUncwQklBRkJNR29pQmlnQ0FDSURJQUVvQWpSQkFuUnFJUVVDUUFOQUlBTWdCVVlOQVNBQUlBTW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBMEVFYWlFRERBRUxDeUFDUVJBMkFrUWdBa0cwaHdFMkFrQWdBaUFDS1FOQU53TW9JQUFnQkNBQ1FTaHFFRUFNQXdzZ0FrRUFPZ0EwSUFJZ0JqWUNNQ0FISUFKQk1Hb1FRVVVOQWdzZ0FDQUlFSXdDQ3lBQUtBS01OQ0VISUFBZ0NEWUNqRFFnQUNBSUlBQW9BcEEwSWdRZ0NCczJBcEEwSUFBZ0FDZ0NsRFFpQmtFQmFpSUROZ0tVTkFKL0lBTkJnQUZQQkVBZ0FrRXdhaUlEUWY4QUVGOGdBa0ZBYXlJRlFhYXNDaUFERURVZ0FDQUZJQUZCRUdvUUp5QUZFQThhSUFNUUR4cEJBQXdCQ3lBQ0lBRkJ4QUJxTmdKQUlBSkJBRG9BUkNBSVFRQWdBQ0FDUVVCckVOb0dHd3NoQXlBQUlBUTJBcEEwSUFBZ0JqWUNsRFFnQUNBSE5nS01OQXdCQzBFQUlRTUxJQWtRaXdJZ0FrSFFBR29rQUNBREN5VUFJQUFRNUIwZ0FFRU1FTVVRSUFCQkFEWUMzQVVnQUNBQUtBTGdCVUVCYWpZQzRBVUxnZ0VCQkg4akFFRWdheUlCSkFBZ0FVRUlhaENwR3lJQ0tBSUlJUU1nQVNBQ05nSUVJQUVnQXpZQ0FBSkFJQUJCSEdvaUJDQUJFTDBCSWdJRVFDQUNLQUlNSVFBTUFRc2dBQ0FBRUxRRUVLa2JJZ0lRS0NBQUlBQW9BaGhCQVdvMkFoZ2dBU0FDSWdBMkFnUWdBU0FETmdJQUlBUWdBUkM4QVFzZ0FVRWdhaVFBSUFBTEtBQWdBRUlBTndLY0FTQUFRb0NBZ0lEZ0FEY0NsQUVnQUNBQU5nS1FBU0FBUVFZUXRSQWdBQXRnQVFGL0lBQW9BZ1FpQWdSQUlBSW9BZ0FnQVJCWFFRRkJBVUhWbmdoQjBLY0RRZkFBRUVzTElBQWdBUkROQXlJQlJRUkFRUUFQQ3lBQUlBRVEyd1loQVNBQUtBSUFLQUlJSUFFUVYwRUJRUUZCb1pzSVFkQ25BMEgwQUJCTElBRUxLd0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQWlBQVFmQUFhaUFDUVF4cUVKWUJJQUpCRUdva0FBc3VBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FCSUFBMkFsZ2dBRUVNYWlBQ1FReHFFQ1FnQWtFUWFpUUFDOThIQVFoL0l3QkI0QUZySWdna0FDQUJLQUxVQlNJRklBRW9BdHdGSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVHZ0Eyc2lCaVFBUVF3Z0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRU1UUnNpQ1NBQktBTFVCVXNFUUNBR1FvQ0FnSUNBQVRjQ2xBTWdCaUFHUVJCcUlnUTJBcEFESUFRZ0FTZ0MzQVVRcGgwZ0FTZ0MwQVVpQkNBQktBTFVCVUU4YkdvaENnTkFBa0FnQkNBS1JnUkFJQUVRbUI0Z0FTQUpFTVVRSUFZb0FwQURJZ1FnQmlnQ2xBTkJNR3hxSVFVTUFRc2dCQzBBTUFSQUlBUVFwUjBoQ3lBR1FSQnFJZ1VvQW9RRElnY2dCU2dDaUFOUEJFQWdCU0FGS0FLSUF5SUhRUUYwUVFJZ0J4c1FwaDBnQlNnQ2hBTWhCd3NnQlNBSFFRRnFOZ0tFQXlBRktBS0FBeUFIUVRCc2FpQUxFUGdMR2dzZ0JFRThhaUVFREFFTEN3TkFJQVFnQlVjRVFDQUdRUWhxSUFFZ0JDQUVRUnhxRUo0ZUlBUkJNR29oQkF3QkN3c2dCa0VRYWlFRVFRQWhCUU5BSUFRb0FvUURJQVZOQkVBZ0JFRUFOZ0tFQXdVZ0JDZ0NnQU1hSUFWQkFXb2hCUXdCQ3dzZ0JDQUVLQUtBQXhBMkN5QUdRYUFEYWlRQUlBRW9BdFFGSVFVTElBSW9BZ0FoQnlBSUlBTTJBdHdCSUFnZ0FqWUMyQUVnQlVFQmF5RUpJQWNnQlhBaEJFRUFJUU1DUUFOQUlBTWdCVWNFUUNBQktBTFFCU0lLSUFSQlBHeHFJZ1l0QURCRkJFQWdDRUVJYWlJQ0lBaEIyQUZxRUtrZElBWVFwQjBnQmlBQ0VNUVFJQW9nQkVFOGJHb2lBaUFETmdJNElBSWdCellDTkNBQklBRW9BdHdGUVFGcU5nTGNCU0FCSUFFb0F1QUZRUUZxTmdMZ0JTQUFJQVpCSEdvMkFnUWdBRUVBTmdJQURBTUxJQWNnQmlnQ05FWUVmeUFDSUFZUXRnSUZRUUFMQkVBZ0FFRUNOZ0lBSUFBZ0JrRWNhallDQkF3REN5QURJQVlvQWpoTEJFQWdDRUdvQVdvaUFpQUlRZGdCYWhDcEhTQUlRUWhxSUFJUStBc2lBa0VCT2dBd0lBSWdBellDT0NBQ0lBYzJBalFnQWlBR0VLY2RJQUlnQWlnQ09FRUJhallDT0NBRVFRRnFJQUVvQXRRRmNDRURRUUFoQkNBQktBTFVCU0lIUVFGcklRa0NRQU5BSUFRZ0IwWU5BU0FCS0FMUUJTQURRVHhzYWlJRkxRQXdCRUFnQWlBQ0tBSTRJZ29nQlNnQ09Fc0VmeUFGSUFJUXB4MGdBaWdDT0FVZ0NndEJBV28yQWpnZ0EwRUJha0VBSUFNZ0NVY2JJUU1nQkVFQmFpRUVEQUVMQ3lBRklBSVFzeEFMSUFFZ0FTZ0MzQVZCQVdvMkF0d0ZJQUVnQVNnQzRBVkJBV28yQXVBRklBQWdCa0VjYWpZQ0JDQUFRUUEyQWdBZ0FoQ2tDUXdEQlNBRVFRRnFRUUFnQkNBSlJ4c2hCQ0FEUVFGcUlRTU1BZ3NBQ3dzZ0NFRUlha0dHdFFOQjZ3TkJEaUFJUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBSVFlQUJhaVFBQ3hrQUlBQWdBUkNlRENJQVFSeHFJQUZCSEdvUXdRc2FJQUFMTlFFQmZ3SkFJQUZGRFFBZ0FTZ0NEQ0lCSUFBb0FnUWdBQ2dDQUNJQWEwRUNkVThOQUNBQUlBRkJBblJxS0FJQUlRSUxJQUlML2dFQkJuOGpBRUd3QVdzaUF5UUFJQUVvQXZRQklnVkJBV3NoQnlBQ0x3RUFJZ1lnQlhBaEFpQUJLQUx3QVNFSVFRQWhBUUpBQTBBZ0FTQUZSd1JBSUFnZ0FrRVViR29pQkMwQUNFVUVRQ0FBUVFBMkFnUWdBRUVBT2dBQURBTUxBa0FnQkNnQ0RDQUdSdzBBSUFZZ0JDOEJBRWNOQUNBQUlBSTJBZ1FnQUVFQk9nQUFEQU1MSUFFZ0JDZ0NFRXNFUUNBQVFRQTJBZ1FnQUVFQU9nQUFEQU1GSUFKQkFXcEJBQ0FDSUFkSEd5RUNJQUZCQVdvaEFRd0NDd0FMQ3lBRFFZYTFBMEdlQkVFT0lBTkJvQUZxRUIwaUFSQVhJZ0pCR0dwQjBqVVFEaG9nQWhBWUlBQkJBRFlDQkNBQVFRQTZBQUFnQVJBZUN5QURRYkFCYWlRQUMxZ0JBMzhqQUVFZ2F5SUJKQUFnQUNnQ0FDRURJQUVnQUNnQ0JDZ0NBQ2dDSkVFa2FoQlRJQUZCRUdvaUFrR2YrQWtnQVJBMUlBTWdBaUFBS0FJRUtBSUFRUkJxRUlZQklBSVFEeG9nQVJBUEdpQUJRU0JxSkFBTG9RRUJBbjhnQUNBQk5nTDRPU0FBUVlRNmFrS0lnSUNBZ0FFM0FnQWdBRUdBT21wQmdJY1NOZ0lBSUFCQi9EbHFRY2pjQkRZQ0FDQUFRYWdkYWlFRElBQWdBUkNxQlNFQUl3QkJFR3NpQVNRQUFrQWdBRVVOQUNBQVFRQWdBQVIvSUFBb0FnUVE0aDBGUVFBTEd5SUNEUUFnQVVFTk5nSU1JQUZCeU53RU5nSUlJQUVnQVNrRENEY0RBQ0FESUFBZ0FSQ21CVUVBSVFJTElBRkJFR29rQUNBQ0M2a0dBZ2QvQW40akFFSEFBV3NpQlNRQUlBRW9BdlFCSWdnZ0FTZ0MvQUVpQkVHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUWVBQWF5SUdKQUJCRENBRVFRRjBRUUpxUVpZQmJFSGtBRzRpQkNBRVFReE5HeUlISUFFb0F2UUJTd1JBSUFaQ2dJQ0FnSUFCTndKVUlBWWdCa0VRYWlJRU5nSlFJQVFnQVNnQy9BRVFzUVFnQVNnQzhBRWlCQ0FCS0FMMEFVRVViR29oQ0FOQUFrQWdCQ0FJUmdSQUlBRVFzZ1VnQVNBSEVQTUVJQVlvQWxBaUJDQUdLQUpVUVFOMGFpRUhEQUVMSUFRdEFBZ0VRQ0FHUVJCcUlBUVF1Z0lRc1FVTElBUkJGR29oQkF3QkN3c0RRQ0FFSUFkSEJFQWdCa0VJYWlBQklBUWdCRUVFYWhDa0hpQUVRUWhxSVFRTUFRc0xJQVpCRUdvUWxRRUxJQVpCNEFCcUpBQWdBU2dDOUFFaENBc2dDRUVCYXlFS0lBSXZBUUFpQmlBSWNDRUhJQUVvQXZBQklRbEJBQ0VDQWtBRFFDQUNJQWhIQkVBZ0NTQUhRUlJzYWlJRUxRQUlSUVJBSUFNb0FnQWhBeUFFUVFFNkFBZ2dCQ0FETmdJRUlBUWdCallDQUNBSklBZEJGR3hxSWdNZ0FqWUNFQ0FESUFZMkFnd2dBU0FCS0FMOEFVRUJhallDL0FFZ0FTQUJLQUtBQWtFQmFqWUNnQUlnQUNBRVFRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBUW9BZ3dnQmtjTkFDQUdJQVF2QVFCSERRQWdBRUVDTmdJQUlBQWdCRUVFYWpZQ0JBd0RDeUFDSUFRb0FoQkxCRUFnQXlnQ0FDRURJQVZCQVRvQXNBRWdCU0FDTmdLNEFTQUZJQU0yQXF3QklBVWdCallDcUFFZ0JTQUdOZ0swQVNBRklBSTJBaGdnQlNBRktRT3dBU0lMTndNUUlBVWdCU2tEcUFFaUREY0RDQ0FGSUFRb0FoQTJBcmdCSUFVZ0JDa0NDRGNEc0FFZ0JTQUVLUUlBTndPb0FTQUVJQUkyQWhBZ0JDQU1Od0lBSUFRZ0N6Y0NDQ0FGSUFVb0FyZ0JRUUZxTmdLNEFTQUJJQWRCQVdvZ0FTZ0M5QUZ3SUFWQnFBRnFFTElFSUFFZ0FTZ0MvQUZCQVdvMkF2d0JJQUVnQVNnQ2dBSkJBV28yQW9BQ0lBQWdCRUVFYWpZQ0JDQUFRUUEyQWdBTUF3VWdCMEVCYWtFQUlBY2dDa2NiSVFjZ0FrRUJhaUVDREFJTEFBc0xJQVZCQ0dwQmhyVURRZXNEUVE0Z0JVR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCVUhBQVdva0FBdXlBUUlDZndGK0FrQWdBVVVOQUNBQkVOa1FJZ0lOQUNNQVFVQnFJZ0lrQUNBQ1FRVTJBandnQWtITDFBTTJBamdnQWlBQ0tRTTROd01JSUFBZ0FTQUNRUWhxRUtZRkFrQWdBUkRZRUNJQlJRMEFJQUVvQWdnaUFTZ0NCRUg0N1E5SElBRkZjZzBBSUFKQktHcEJuOThHRUJRaEF5QUJLUUlZSVFRZ0FpQUJLQUlnTmdJZ0lBSWdCRGNER0NBQ0lBUTNBeEFnQUNBRElBSkJFR29RL0FFZ0F4QVBHZ3NnQWtGQWF5UUFRUUFoQWdzZ0FndkFBd0VEZnlNQVFTQnJJZ1FrQUNBRUlBQTJBaEFnQkNBQU5nSUlJQVFnQURZQ0FDQUVJQVJCQ0dvMkFnUUNRQ0FCUlEwQUlBRW9BZ1FpQmtIUW9CSkdCRUFnQWlJRkRRRWdCRUVRYWhDUEhpRUZEQUVMSUFaQjhKOFNSZ1JBSUFJaUJRMEJJQVJCQ0dvUWpSNGhCUXdCQ3lBR0VKRURCRUFnQVNnQ0dDSURSUTBCSUFNb0FnUWlBMEhRb0JKR0JFQWdBaUlGRFFJZ0JDQUJLQUljTmdJY0lBQW9BZ0FoQUNBRUlBUkJFR29Rang0MkFoZ2dBQ0FFUVJocUlBUkJIR29RbndJaEJRd0NDeUFEUWZDZkVrY05BU0FDSWdVTkFTQUVJQUVvQWh3UWpCNGhCUXdCQ3lBR1FmQ3FFa1lFUUNBQktBSVlJZ05GRFFFZ0F5Z0NCRUh3bnhKSERRRWdBaUlGRFFFZ0FTZ0NJQ0VDSUFRZ0FTZ0NKRFlDSENBQUtBSUFJUUFnQkNBRUlBSVFqQjQyQWhnZ0FDQUVRUmhxSUFSQkhHb1F3QWtoQlF3QkN5QUdRWkNpRWtZRVFDQUFJQUVvQWhnQ2YwRUFJQUpGRFFBYVFRQWdBaWdDQkVHUW9oSkhEUUFhSUFJb0FoZ0xJQU1RcGg0aUFrVU5BU0FBSUFNZ0F5QURJQUlnQVNnQ0hFRUFFTllRSVFVTUFRc2dCaERtQTBVTkFDQUJLQUtRQVVVTkFDQUNJZ1VOQUNBQktBS01BU2dDQUNFRkN5QUVRU0JxSkFBZ0JRc2RBQ0FBUWRRQWFoQ29BU0FBUWNRQWFoQ29BU0FBUVNocUVGNGdBQXNmQUNBQUlBRW9BZ3dRNUJBZ0FDZ0NBQ0FCS0FJTVFRSjBhaUFDTmdJQUMwa0FJQUFRSENBQVFhZ0JhaUlBSUFBUXJoMGdBU2dDQUNBQ0tBSUFJQU1vQWdBZ0JDZ0NBQ0FGS0FJQUlBWW9BZ0JCQUJEdkd5SUJFQ2dnQUNBQUtBSVlRUUZxTmdJWUlBRUxyd0VCQW44Z0FCQWNJd0JCTUdzaUJpUUFJQUJCcUFGcUlnQVF1QkFoQnlBRktBSUFJUVVnQkNnQ0FDRUVJQU1vQWdBaEF5QUNLQUlBSVFJZ0FTZ0NBQ0VCSUFaQkFEb0FLQ0FHSUFZb0FpZzJBaEFnQmtFQU9nQWdJQVpCQURvQUhDQUdRUUE2QUJnZ0JpQUdLUU1nTndNSUlBWWdCaWtER0RjREFDQUFJQWNnQVNBQ0lBTWdCQ0FGUVFBZ0JrRUlhaUFHRVBNUElnRVFLQ0FBSUFBb0FoaEJBV28yQWhnZ0JrRXdhaVFBSUFFTHd3UUJBWDhqQUVIQUFXc2lDQ1FBSUFnZ0FqWUNzQUVnQ0NBQk5nSzRBU0FBSUFnb0FyZ0JJQWdvQXJBQklBTVE1UVFpQUVINDhRODJBZ1FnQUVHczhnODJBZ0FnQUNBRU5nSWtJQUJCbVBJUE5nSUFJQUJCS0dvZ0JSRHBCaUFBUWNRQWFpQUdFTG9KSUFCQjFBQnFJQWNRdWdrZ0FDZ0NKQ0lCQkg4Z0FRVWdDRUhKa3dWQkpVRUFJQWhCb0FGcUVCMGlBUkFYSWdKQkdHcEI3ckFJRUE0YUlBSVFHQ0FCRUI0Z0FDZ0NKQXNRVnlBQUtBSUlRUUZCQUVIYXlBaEJ5Wk1GUVNZUVN5QUFLQUk0SWdJZ0FDZ0NQRUVDZEdvaEFTQUlRUmhxSVFNRFFDQUJJQUpHQkVBZ0FDZ0NTQ0lDSUFBb0FreEJBblJxSVFFZ0NFRVlhaUVEQTBBQ1FDQUJJQUpHQkVBZ0FDZ0NXQ0lDSUFBb0FseEJBblJxSVFFZ0NFRVlhaUVEQTBBZ0FTQUNSZzBDSUFJb0FnQWlCRVVFUUNBSVFjbVRCVUV3UVFBZ0NFR2dBV29RSFNJRkVCY2hCaUFEUVptbkNCQU9HaUFHRUJnZ0JSQWVDeUFFRUZjZ0FDZ0NDRUVCUVFCQjNjUUlRY21UQlVFeEVFc2dBa0VFYWlFQ0RBQUxBQXNnQWlnQ0FDSUVSUVJBSUFoQnlaTUZRU3hCQUNBSVFhQUJhaEFkSWdVUUZ5RUdJQU5CbWFjSUVBNGFJQVlRR0NBRkVCNExJQVFRVnlBQUtBSUlRUUZCQUVIZHhBaEJ5Wk1GUVMwUVN5QUNRUVJxSVFJTUFRc0xJQWhCd0FGcUpBQWdBQThMSUFJb0FnQWlCRVVFUUNBSVFjbVRCVUVvUVFBZ0NFR2dBV29RSFNJRkVCY2hCaUFEUWVxZENCQU9HaUFHRUJnZ0JSQWVDeUFFRUZjZ0FDZ0NDRUVCUVFCQnBjSUlRY21UQlVFcEVFc2dBa0VFYWlFQ0RBQUxBQXZmSHdJS2Z3SitJd0JCRUdzaUNTUUFJQWtnQVRZQ0RDQUFJQUVvQWlRUU14b2dDU0FBTmdJQUlBa2dDVUVNYWpZQ0JBSi9JQUVvQWdRaUEwSFkrQkZHQkVBakFFSHdBR3NpQXlRQUlBTWdBVFlDWENBRFFRQTJBbGdDUUFKQUlBRW9BaWdpQlFSQUlBTWdBQ0FGRU5BRElnUTJBbGdnQkVVTkFRc0NRQUpBSUFFb0Fpd0VRQ0FBS0FMQUt5RUZJQUJCQWtFRElBSWJOZ0xBS3lBQVFjUXJhaUlHS0FJQUlRY2dCa0hUMXdFMkFnQWdBQ0FBSUFBZ0FTZ0NMQkNGQWlBRUVKWUNFT01DSWdaRkRRRWdCRVVFUUNBRElBWW9BaFFpQkRZQ1dBc2dBQ0FITmdMRUt5QUFJQVUyQXNBckN5QUVSUVJBSUFBZ0EwSGdBR3BCOE5ZQkVCUWlBQ0FCUVJCcUVDY2dBQkFQR2d3REMwRUFJUVVnQTBFQU5nSlVBa0FnQVNnQ1JDSUhCRUFnQUNBSEVLTWVJZ1JGRFFVZ0F5QUVLQUlRSWdRMkFsUWdBaUFFUVFOR2NnMEJJQU5CQURvQVRDQURJQUZCT0dvMkFrZ2dBRUdzSFdvZ0EwSElBR3BCQWhDeEEwVU5BU0FBSUFOQjRBQnFRZExiQkJBVUlnQWdBVUVRYWhBbklBQVFEeG9NQlFzZ0FrVUVRQ0FEUVFNMkFsUU1BUXNnQkJDRUFSQ3RHMFVOQUNBRFFRUTJBbFFMSUFNQ2Z3Si9JQUVvQWtnaUJBUkFJQUFnQkJEZkVDSUVSUTBGSUFSQkVHb01BUXRCQWlBREtBSlVRUVJySWdSQkJFc05BUm9nQkVFQ2RFSE0vd3hxQ3lnQ0FBczJBa1FnQmdSQUlBQkJyQjFxSUFFZ0F5Z0NXQ0FHRU4wTFJRMEVDeUFESUFBb0FnQWdBMEhZQUdvZ0EwSFVBR29nQTBIRUFHb1FyUWtpQkRZQ1FDQUFJQU1vQWxRZ0JDQUJLQUlvSWdRZ0FTQUVHMEVRYWhEb0JFVUVRQ0FEUVRCcUlnSWdBU2dDSkVFa2FoQlRJQU5CNEFCcUlnUkIxZTRNSUFJUU5TQUFJQVFnQVVFUWFoQ0dBU0FFRUE4YUlBSVFEeG9NQXdzQ2Z5QUNCRUFnQXlnQ1ZDRUNRUUFoQnlBRFFRQTZBRFFnQTBFQU9nQXdJQU5CQURvQUxDQURRUUE2QUNnZ0EwRUFPZ0FrSUFOQkFEb0FJQ0FCS0FJNElnUWdBU2dDUEVFQ2RHb2hDQ0FDUVFGcklncEJBVXNoQlFOQUlBUWdDRWNFUUNBQUlBUW9BZ0FpQVJBekdpQUJSUTBGQWtBQ2Z5QUJLQUlFSWdKQnNQb1JSZ1JBSUFOQjRBQnFJZ0lnQUNBQkVONFFRUUVnQWhBd0RRRWFJQU5CNEFCcUVCb29BZ0FoQVVFQklRY2dBMEVCT2dBc0lBTWdBVFlDS0VFQURBRUxJQUpCd1BzUlJnUkFJQU5CNEFCcUlnSWdBQ0FCRU4wUVFRRWdBaEF3RFFFYUlBTkI0QUJxRUJvb0FnQWhBVUVCSVFzZ0EwRUJPZ0EwSUFNZ0FUWUNNRUVBREFFTElBSkJtUDBSUmdSQUlBVU5DQ0FEUWVBQWFpSUNJQUFnQVJDSURFRUJJQUlRTUEwQkdpQURRZUFBYWhBYUtBSUFJUUVnQTBFQk9nQWtJQU1nQVRZQ0lFRUFEQUVMSUFKQitQb1JSZ1JBSUFVTkNDQURRZUFBYWlJQ0lBQWdBUkNIRENBQ0VDdEJBWE1NQVFzZ0FrSFEvQkZHQkVBZ0JRMElJQU5CNEFCcUlnSWdBQ0FCRUlZTUlBSVFzZ0ZCQVhNTUFRc2dBa0dvZ2hKR0JFQWdDa0VDU1EwQ0RBZ0xJQUlROWdORkRRY2dBQ0FCRUt3RlFRRnpDdzBIQ3lBRVFRUnFJUVFNQVFzTElBTkJBRG9BYUNBRFFRQTZBR0FnQzBVZ0IwVnlSUVJBSUFOQk1Hb1F2Z0UxQWdBaERTQURRU2hxRUw0Qk5RSUFJUTRnQTBFQk9nQm9JQU1nRFNBT1FpQ0doRGNEWUFzZ0FDZ0NBQ0VDSUFOQkF6WUNGQ0FEUVFBMkFoQWdBaEFjSXdCQklHc2lBU1FBSUFKQnFBRnFJZ0lRdUJBaEJDQURLQUpFSVFVZ0F5Z0NWQ0VISUFNb0FoUWhDQ0FEUVVCcktBSUFJUW9nQXlnQ1hDRUxJQUVnQXlrQ0lDSU5Od01ZSUFFZ0F5Z0NhRFlDRUNBQklBTXBBbUEzQXdnZ0FTQU5Od01BSUFJZ0JDQUxJQW9nQ0NBSElBVkJBQ0FCUVFocUlBRVE4dzhpQkJBb0lBSWdBaWdDR0VFQmFqWUNHQ0FCUVNCcUpBQWdCQXdCQ3lBQktBSTRJZ1FnQVNnQ1BFRUNkR29oQWdOQUlBSWdCRWNFUUNBRElBUW9BZ0FpQVRZQ01DQUFJQUVRTXhvZ0F5Z0NNQ0VCSUFNZ0FEWUNZQ0FESUFOQk1HbzJBbVFDUUNBQkJFQWdBU2dDQkJEMkF3MEJDeU1BUVJCcklnQWtBQ0FES0FKZ0lRRWdBeWdDWkNnQ0FDRUNJQUJCRkRZQ0RDQUFRZW1BQ1RZQ0NDQUFJQUFwQXdnM0F3QWdBU0FDSUFBUVFDQUFRUkJxSkFBTUJnc2dCRUVFYWlFRUlBQWdBUkNzQlEwQkRBVUxDeUFBS0FJQUlRRWdBMEVETmdKZ0lBTkJBRFlDTUNBQklBTkIzQUJxSUFOQlFHc2dBMEhnQUdvZ0EwSFVBR29nQTBIRUFHb2dBRUdNTkdvUXFSNExJZ1VnQmpZQ0lDQUFLQUlBSWdBUUhDQUFRZVFCYWlBREtBSmNJQVVRdVFFTUF3c2dBQ0FITmdMRUt5QUFJQVUyQXNBckRBRUxJQU5CRWpZQ0hDQURRZjZBQ1RZQ0dDQURJQU1wQXhnM0F3Z2dBQ0FCSUFOQkNHb1FRQXRCQUNFRkN5QURRZkFBYWlRQUlBVU1BUXNnQTBIZytROUdCRUFqQUVFd2F5SURKQUFnQXlBQk5nSXNJQU5CQURZQ0tBSkFBa0FnQVNnQ0tDSUVCRUFnQXlBQUlBUVEwQU1pQmpZQ0tDQUdSUTBCQ3lBQktBSTRJZ1FnQVNnQ1BFRUNkR29oQndOQUlBUWdCMGNFUUNBRElBUW9BZ0FpQlRZQ0NDQUFJQVVRTXhvZ0F5Z0NDQ0VGSUFNZ0FEWUNHQ0FESUFOQkNHbzJBaHdDUUNBRkJFQWdCU2dDQkJEMkF3MEJDeU1BUVJCcklnQWtBQ0FES0FJWUlRRWdBeWdDSENnQ0FDRUNJQUJCRVRZQ0RDQUFRZkhkQWpZQ0NDQUFJQUFwQXdnM0F3QWdBU0FDSUFBUVFDQUFRUkJxSkFBTUF3c2dCRUVFYWlFRUlBQWdCUkNzQlEwQkRBSUxDeUFCS0FJc0lnVkZCRUFnQUNBRFFSaHFRWkRZQVJBVUlnQWdBVUVRYWhBbklBQVFEeG9NQVF0QkFDRUVJQUFnQUNBQUlBVVFoUUlnQmhDV0FoRGpBaUlGUlEwQklBWkZCRUFnQXlBRktBSVVFSVFCSWdZMkFpZ0xJQUJCckIxcUlBRWdCaUFGRU4wTFJRMEJJQUJCQUNBR0lBRkJFR29pQmhEb0JFVUVRQ0FEUVFocUlnSWdBU2dDSkVFa2FoQlRJQU5CR0dvaUFVRzY3Z3dnQWhBMUlBQWdBU0FHRUlZQklBRVFEeG9nQWhBUEdnd0NDeUFBS0FJQUlRRUNmeUFDQkVBZ0EwRUROZ0lZSUFOQkFEWUNDQ0FEUVFBMkFnUWdBMEVBTmdJQUlBRWdBMEVzYWlBRFFTaHFJQU5CR0dvZ0EwRUlhaUFEUVFScUVLb2VEQUVMSUFOQkF6WUNHQ0FEUVFBMkFnZ2dBMEVBTmdJRUlBTkJBRFlDQUNBQklBTkJMR29nQTBFb2FpQURRUmhxSUFOQkNHb2dBMEVFYWlBQVFZdzBhaENwSGdzaUJDQUZOZ0lnSUFBb0FnQWlBQkFjSUFCQjVBRnFJQU1vQWl3Z0JCQzVBUXdCQzBFQUlRUUxJQU5CTUdva0FDQUVEQUVMSUFOQjZQa1JSZ1JBSXdCQlFHb2lBaVFBSUFJZ0FUWUNIQ0FDUVFBMkFoZ0NRQUpBQWtBQ1FBSkFBbjhnQVNnQ0tDSURCRUFnQWlBQUlBTVEwQU1pQXpZQ0dDQURSUTBHSUFGQkxHb2dBU2dDTEEwQkdnd0NDeUFCS0FJc1JRMERRUUFoQXlBQlFTeHFDeUVFSUFBb0FzQXJJUVVnQUVFQ05nTEFLeUFBUWNRcmFpSUlLQUlBSVFjZ0NFRzcyQUUyQWdBZ0FDQUFJQVFvQWdBUWhRSWdBeENXQWlJRVJRMEJJQU5GQkVBZ0FpQUVLQUlVSWdNMkFoZ0xJQUFnQnpZQ3hDc2dBQ0FGTmdMQUt5QUFRYXdkYWlBQklBTWdCQkRkQzBVTkJBc2dBRUVBSUFNZ0FVRVFhaUlGRU9nRVJRUkFJQUpCSUdvaUF5QUJLQUlrUVNScUVGTWdBa0V3YWlJQlFmRHVEQ0FERURVZ0FDQUJJQVVRaGdFZ0FSQVBHaUFERUE4YURBUUxJQUFvQWdBaEFTQUNRUUkyQWpBZ0FrRUFOZ0lnSUFKQkFEWUNDQ0FDUVFBMkFoQWdBaUFCSUFKQkhHb2dBa0VZYWlBQ1FUQnFJQUpCSUdvZ0FrRUlhaENxSGlJQk5nSVVJQUVnQkRZQ0lDQUNLQUljSWdFb0FqZ2lBeUFCS0FJOFFRSjBhaUVISUFCQjNDdHFJUWdEUUNBRElBZEhCRUFnQWlBREtBSUFJZ0UyQWhBZ0FDQUJFRE1hSUFJb0FoQWhBU0FDSUFBMkFnZ2dBaUFDUVJCcU5nSU1JQUZGRFFRZ0FTZ0NCRUdJL0JGSERRUWdBQ2dDeENzaEJDQUFRYmJ1QkRZQ3hDc2dBQ2dDd0NzaEJpQUFRUUUyQXNBckFrQUNRQ0FBSUFBZ0FTZ0NKQkNGQWtFQUVKWUNJZ1ZGRFFBZ0JTZ0NGQkN1Q1VVRVFDQUFJQUpCTUdwQnNkUURFQlFpQXlBQlFSQnFFQ2NnQXhBUEdnd0JDeUFGS0FJY0VHTWlEVUlBVXdSQUlBQWdBa0V3YWtIYnl3TVFGQ0lESUFGQkVHb1FKeUFERUE4YURBRUxJQTFDZ0lBRVZBMEJJQUpCSUdvaUEwSC8vd01ROWdRZ0FrRXdhaUlGUWM3T0NpQURFRFVnQUNBRklBRkJFR29RSnlBRkVBOGFJQU1RRHhvTElBQWdCRFlDeENzZ0FDQUdOZ0xBSzBFQUlRWU1CZ3NnQWlBTnB5SUJPd0VnSUFJb0FoUWdBVHNCWENBQ1FUQnFJQWdnQWtFZ2FpQUNRUlJxRUtRZUlBQWdCRFlDeENzZ0FDQUdOZ0xBS3lBRFFRUnFJUU1NQVFzTElBQW9BZ0FpQUJBY0lBQkI1QUZxSUFJb0Fod2dBaWdDRkJDNUFTQUNLQUlVSVFZTUF3c2dBQ0FITmdMRUt5QUFJQVUyQXNBckRBSUxJQUFnQWtFd2FrR2Yxd0VRRkNJQUlBRkJFR29RSnlBQUVBOGFEQUVMSXdCQkVHc2lBQ1FBSUFJb0FnZ2hBU0FDS0FJTUtBSUFJUU1nQUVFV05nSU1JQUJCZzk0Q05nSUlJQUFnQUNrRENEY0RBQ0FCSUFNZ0FCQkFJQUJCRUdva0FFRUFJUVlMSUFKQlFHc2tBQ0FHREFFTElBTkJvUGtSUmdSQUl3QkJRR29pQXlRQUlBTWdBVFlDUENBRFFRQTJBamdDUUNBQktBSW9JZ1lFUUNBRElBQWdCaERRQXlJRU5nSTRJQVJGRFFFTElBRW9BaXhGQkVBZ0FDQURRU2hxUWVQWEFSQVVJZ0FnQVVFUWFoQW5JQUFRRHhvTUFRc2dBU2dDUEFSQUlBQWdBU2dDT0NnQ0FDSUJFRE1hSUFOQkV6WUNMQ0FEUWQzZEFqWUNLQ0FESUFNcEF5ZzNBd2dnQUNBQklBTkJDR29RUUF3QkN5QUFLUUxBS3lFTklBQkJ4Q3RxUWQ3V0FUWUNBQ0FBUVFFMkFzQXJJQUFnQVNnQ0xCQ0ZBaUVHSUFBZ0RUY0N3Q3NnQmtVTkFBSkFJQVFFUUNBQUlBWWdCQkNXQWlJR0RRRU1BZ3NnQXlBR0tBSVVJZ1EyQWpnTElBQkJyQjFxSUFFZ0JDQUdFTjBMUlEwQUlBQkJBQ0FFSUFGQkVHb2lCQkRvQkVVRVFDQURRUmhxSWdJZ0FTZ0NKRUVrYWhCVElBTkJLR29pQVVHZDdnd2dBaEExSUFBZ0FTQUVFSVlCSUFFUUR4b2dBaEFQR2d3QkN5QURJQVlvQWh3MkFpZ2dBQ2dDQUNFRUFuOGdBZ1JBSUFOQkFEWUNGQ0FEUVFFMkFoZ2dBMEVBTmdJUUlBUVFIQ01BUVRCcklnRWtBQ0FFUWFnQmFpSUNFTGdRSVFRZ0F5Z0NLQ0VGSUFNb0FoQWhCeUFES0FJVUlRZ2dBeWdDR0NFS0lBTW9BamdoQ3lBREtBSThJUXdnQVVFQU9nQW9JQUVnQVNnQ0tEWUNFQ0FCUVFBNkFDQWdBVUVBT2dBY0lBRkJBRG9BR0NBQklBRXBBeUEzQXdnZ0FTQUJLUU1ZTndNQUlBSWdCQ0FNSUFzZ0NpQUlJQWNnQlNBQlFRaHFJQUVROHc4aUJCQW9JQUlnQWlnQ0dFRUJhallDR0NBQlFUQnFKQUFnQkF3QkN5QURRUUEyQWhRZ0EwRUJOZ0lZSUFOQkFEWUNFQ0FFRUJ3Z0JFR29BV29pQVNBQkVLNGRJQU1vQWp3Z0F5Z0NPQ0FES0FJWUlBTW9BaFFnQXlnQ0VDQUFRWXcwYWlnQ0FDQURLQUlvRU84YklnSVFLQ0FCSUFFb0FoaEJBV28yQWhnZ0Fnc2lCU0FHTmdJZ0lBQW9BZ0FpQUJBY0lBQkI1QUZxSUFNb0Fqd2dCUkM1QVFzZ0EwRkFheVFBSUFVTUFRc2pBRUdnQVdzaUFDUUFJQUJCdDVzRlFlZ0JRUWdnQ1NnQ0FDZ0NCQkFYSWdGQkdHcEJ1WklNRUE0YUlBRWdDU2dDQkNnQ0FDZ0NCRUVFYWhDYUFSb2dBUkFZSUFCQm9BRnFKQUJCQUFzaEFDQUpRUkJxSkFBZ0FBdXVBZ0VHZnlNQVFUQnJJZ0lrQUNBQ0lBRTJBaXdnQUVIRUsyb2lCQ2dDQUNFR0lBUkJ1TU1DTmdJQUlBQW9Bc0FySVFjZ0FFRUJOZ0xBSzBFQUlRUUNRQ0FBSUFFb0FpUVFoUUlpQTBVTkFDQURLQUljSWdNZ0F5Z0NBQ2dDQ0JFQUFDSUZLQUlFUWRDbEVrY0VRQ0FDSUFVZ0JTZ0NBQ2dDREJFQ0FDQUNRUkJxSWdOQjlZZ0pJQUlRTlNBQ1FTQnFJZ1VnQTBIem1na1FMU0FBSUFVZ0FTZ0NKRUVRYWhBbklBVVFEeG9nQXhBUEdpQUNFQThhREFFTElBTVErZ0ZGQkVBZ0FDQUNRU0JxUWJINEJCQVVJZ01nQVVFUWFoQW5JQU1RRHhvTUFRc2dBQ2dDQUNBQ1FTeHFJQUJCa0RScUlBQkJpRFJxRU9ZRUlRUWdBQ2dDQUNJQkVCd2dBVUhrQVdvZ0FpZ0NMQ0FFRUxrQkN5QUFJQVkyQXNRcklBQWdCellDd0NzZ0FrRXdhaVFBSUFRTFd3RUJmeU1BUVJCcklnVWtBQ0FGSUFJMkFnQWdCU0FCTmdJSUlBQWdCVUVJYWlBRklBTVFzUjRpQUNBRU5nSWtJQUJCMlBFUE5nSUFJQVFRVnlBQUtBSUlRUUZCQUVIUXpBaEJySkFGUVI4UVN5QUZRUkJxSkFBZ0FBc1pBQ0FBRU9VUUlBQkJBRFlDaEFNZ0FDQUFLQUtBQXhBMkN5WUFJQUJDQURjQ2pBTWdBRUtBZ0lDQXdBRTNBb1FESUFBZ0FEWUNnQU1nQUVFTUVQa0xDeWNBSUFBZ0FTZ0NBQ0FDS0FJQUlBTVE1UVFpQUVHNDhRODJBZ1FnQUVIczhRODJBZ0FnQUF1NUFRRUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBeUFCTmdJQUlBTWdBMEVNYWpZQ0JBSkFJQUlFUUNBQ0tBSUVJZ0ZCMlBjUlJnUkFRZkx0QUNFQ0RBSUxJQUZCbVBnUlJnUkFRYkhGQVNFQ0RBSUxJQUZCK1BNUFJnUkFRWTNUQWlFQ0RBSUxJQUVRM1FVRVFDQUNJQUlvQWdBb0Fnd1JBQUFoQWd3Q0N5QUJRY0QyRDBZRVFFSDBNeUVDREFJTEMwR1M0Z1loQWlBREtBSUFLQUlBSUFNb0FnUW9BZ0FRdEFrTElBQWdBaEFVR2lBRFFSQnFKQUFMb2dJQkRIOGpBRUd3QVdzaUJTUUFBa0FnQUNnQ0FDSUJLQUtRSGlJSUlBQW9BaEJHQkVBZ0FDZ0NEQ0VCREFFTElBQkJCR29RdWg0aUNTQUJRWVFlYWlnQ0FDSUdjQ0VDSUFaQkFXc2hDaUFBS0FJSUlRc2dBQ2dDQkNFTUlBRW9Bb0FlSVFjQ1FBSkFBMEFnQXlBR1J3UkFRUUFoQVNBSElBSkJLR3hxSWdRdEFCeEZEUU1DUUNBRUtBSWdJQWxIRFFBZ0RDQUVLQUlBUncwQUlBc2dCQ2dDQkVZTkF3c2dCQ2dDSkNBRFNRMERJQUpCQVdwQkFDQUNJQXBIR3lFQ0lBTkJBV29oQXd3QkN3c2dCVUdHdFFOQm5nUkJEaUFGUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRZEkxRUE0YUlBSVFHQ0FCRUI1QkFDRUJEQUVMSUFjZ0FrRW9iR3BCQ0dvaEFRc2dBQ0FJTmdJUUlBQWdBVFlDREFzZ0JVR3dBV29rQUNBQkN4WUFJQUFnQUNnQ0tDSUFRUUYwUVFJZ0FCc1FzUWtMSlFBZ0FpZ0NBQkREQXlFQ0lBRW9Bc1FCSVFFZ0FDQUNOZ0lFSUFBZ0FpQUJjRFlDQUF2TEJRSUxmd0orSXdCQjRBRnJJZ0lrQUFKQVFRd2dBVUdXQVd4QjVBQnVJZ0VnQVVFTVRSc2lBeUFBS0FMRUFVME5BQ0FDUW9DQWdJQ0FBVGNDSkNBQ0lBSTJBaUFnQWlBQUtBTE1BUkN4Q1NBQUtBTEFBU0lCSUFBb0FzUUJRUVIwYWlFRkEwQWdBU0FGUmdSQUlBQVE0aDRnQUNBREVQb1FJQUlvQWlBaUJTQUNLQUlrUVFKMGFpRUpJQUpCeUFCcUlRb0RRQ0FGSUFsR0JFQWdBaEFqREFRTElBQW9Bc1FCSUFBb0Fzd0JJZ0ZCbGdGc1FaWUJha0hrQUc1SkJFQWdBQ0FCUVFGMFFRSnFFTFllQ3lBRktBSUFFTU1ESVFZZ0FDZ0N4QUVpQjBFQmF5RUxJQVlnQjNBaEJDQUFLQUxBQVNFTVFRQWhBUUpBQTBBZ0FTQUhSd1JBSUF3Z0JFRUVkR29pQXkwQUJFVUVRQ0FGS0FJQUlRUWdBMEVCT2dBRUlBTWdCRFlDQUNBRElBRTJBZ3dnQXlBR05nSUlJQUFnQUNnQ3pBRkJBV28yQXN3QklBQWdBQ2dDMEFGQkFXbzJBdEFCREFNTElBVW9BZ0FoQ0NBR0lBTW9BZ2hHQkVBZ0NDQURLQUlBUmcwREN5QUJJQU1vQWd4TEJFQWdBaUFHTmdMWUFTQUNJQWcyQXRBQklBSWdBVFlDM0FFZ0FrRUJPZ0RVQVNBQ0lBSXBBOWdCSWcwM0F6Z2dBaUFDS1FQUUFTSU9Od013SUFJZ0F5a0NDRGNEMkFFZ0FpQURLUUlBTndQUUFTQURJQTQzQWdBZ0F5QU5Od0lJSUFJZ0FpZ0MzQUZCQVdvMkF0d0JJQUFnQkVFQmFpQUFLQUxFQVhBZ0FrSFFBV29RNndRZ0FDQUFLQUxNQVVFQmFqWUN6QUVnQUNBQUtBTFFBVUVCYWpZQzBBRU1Bd1VnQkVFQmFrRUFJQVFnQzBjYklRUWdBVUVCYWlFQkRBSUxBQXNMSUFKQk1HcEJoclVEUWVzRFFRNGdBa0hRQVdvUUhTSUJFQmNoQXlBS1FaWTFFQTRhSUFNUUdDQUJFQjRMSUFWQkJHb2hCUXdBQ3dBTElBRXRBQVFFUUNBQ0tBSWtJZ1FnQWlnQ0tFOEVRQ0FDRUxRZUlBSW9BaVFoQkFzZ0FpQUVRUUZxTmdJa0lBSW9BaUFnQkVFQ2RHb2dBU2dDQURZQ0FBc2dBVUVRYWlFQkRBQUxBQXNnQWtIZ0FXb2tBQXVOQVFFRGZ5QUJJQUFvQW9nQlN3UkFJQUFvQW9BQklRTkJFQ0VDSUFBaEJDQUJRUkJQQkVCQmZ5QUJRUU4wSUFGQi8vLy8vd0ZMR3hBVklRUWdBU0VDQ3lBQUlBUTJBb0FCSUFBZ0FqWUNpQUZCQUNFQkEwQWdBQ2dDaEFFZ0FVMEVRQ0FBSUFNUU5nVWdBVUVEZENJQ0lBQW9Bb0FCYWlBQ0lBTnFLUUlBTndJQUlBRkJBV29oQVF3QkN3c0xDeEVBSUFCQlBFSEYvd05CZkVFREVNb0JDeElBSUFBb0FnQVF3d01pQUVFRWRpQUFjd3N0QVFGL0lBQVF1UjVCa3JHbytnZHFJZ0VnQUVFRWFoQzVIaUFCUVFKMlFaS3hxUG9IYzJwelFaT2tCbk1Mc2dFQ0EzOEJmaUFCSUFCQmlBNXFLQUlBU3dSQUlBQW9Bb0FPSVFRZ0FDRUNJQUFnQVVIQUFFOEVmMEYvSUFHdFFoeCtJZ1duSUFWQ0lJaW5HeEFWSVFJZ0FRVkJ3QUFMTmdLSURpQUFJQUkyQW9BT1FRQWhBUU5BSUFBb0FvUU9JQUZOQkVBZ0FDQUVFRFlGSUFGQkhHd2lBeUFBS0FLQURtb2lBaUFESUFScUlnTXBBZ0EzQWdBZ0FpQURLQUlZTmdJWUlBSWdBeWtDRURjQ0VDQUNJQU1wQWdnM0FnZ2dBVUVCYWlFQkRBRUxDd3NMVVFFQmZ5TUFRUkJySWdJa0FDQUFJQUVvQWdBb0FnQTJBZ0FnQWlBQktBSUVJZ0VvQWdnMkFnZ2dBaUFCS1FJQU53TUFJQUVRVlNBQVFRUnFJQUlRVkVFQU9nQU1JQUlRRHhvZ0FrRVFhaVFBQ3dvQUlBQkJ3SUlTRUVnTDV3b0NESDhEZmlNQVFiQU9heUlFSkFBQ1FDQUJRWVFlYWlnQ0FDSUlJQUVvQW93ZUlnWkJsZ0ZzUVpZQmFrSGtBRzVQRFFBZ0NFSGdBQ0FHUWF3Q2JFR3NBbXBCNUFCdUlnVWdCVUhnQUUwYklnVlBEUUFnQkVHa0RtcENnSUNBZ0lBSU53SUFJQVFnQkVFZ2FpSUhOZ0tnRGlBSElBWVF1eDRnQVNnQ2dCNGlCaUFCS0FLRUhrRW9iR29oQ1FOQUFrQWdCaUFKUmdSQUlBRVE0UjRnQVNBRkVJRVJJQVFvQXFBT0lnWWdCQ2dDcEE1QkhHeHFJUWdNQVFzZ0JpMEFIQVJBSUFRb0FxUU9JZ2NnQkNnQ3FBNGlDRThFUUNBRVFTQnFJQWhCQVhSQkFpQUlHeEM3SGlBRUtBS2tEaUVIQ3lBRUlBZEJBV28yQXFRT0lBUW9BcUFPSUFkQkhHeHFJZ2dnQmlnQ0dEWUNHQ0FJSUFZcEFoQTNBaEFnQ0NBR0tRSUlOd0lJSUFnZ0Jpa0NBRGNDQUFzZ0JrRW9haUVHREFFTEN3TkFJQVlnQ0VaRkJFQWdCRUVJYWlBQklBWWdCa0VJYWhDK0hpQUdRUnhxSVFZTUFRc0xJQVJCQURZQ3BBNGdCRUVnYWlBRUtBS2dEaEEyQ3lBQ0VMb2VJUW9nQVNnQ2hCNGlDMEVCYXlFTklBb2dDM0FoQ1NBQ0tBSUVJUTRnQWlnQ0FDRVBJQUVvQW9BZUlReEJBQ0VIQWtBRFFDQUhJQXRIQkVBZ0RDQUpRU2hzYWlJRkxRQWNSUVJBSUFJcEFnQWhFQ0FFSUFNb0FoQTJBakFnQkNBREtRSUlOd01vSUFRZ0F5a0NBRGNESUNBRklCQTNBZ0FnQlNBRUtRTWdOd0lJSUFVZ0JDa0RLRGNDRUNBRklBUW9BakEyQWhnZ0JVRUJPZ0FjSUF3Z0NVRW9iR29pQWlBSE5nSWtJQUlnQ2pZQ0lDQUJJQUVvQW93ZVFRRnFOZ0tNSGlBQklBRW9BcEFlUVFGcU5nS1FIaUFBSUFWQkNHbzJBZ1FnQUVFQU5nSUFEQU1MQWtBZ0JTZ0NJQ0lHSUFwSERRQWdEeUFGS0FJQVJ3MEFJQTRnQlNnQ0JFY05BQ0FBUVFJMkFnQWdBQ0FGUVFocU5nSUVEQU1MSUFjZ0JTZ0NKQ0lJU3dSQUlBSXBBZ0FoRVNBRUlBTW9BaEEyQWpBZ0JDQURLUUlJTndNb0lBUWdBeWtDQURjRElDQUZLUUlBSVJBZ0JDQUZLQUlZTmdJWUlBUWdCU2tDRURjREVDQUVJQVVwQWdnM0F3Z2dCQ0FGTFFBZk9nQUdJQVFnQlM4QUhUc0JCQ0FGSUJFM0FnQWdCQ2tES0NFUklBUW9BakFoQWlBRUtRTWdJUklnQlVFQk9nQWNJQVVnQ2pZQ0lDQUZJQWMyQWlRZ0JTQUNOZ0lZSUFVZ0VUY0NFQ0FGSUJJM0FnZ2dCVUVJYWlFTElBRW9Bb1FlSWdwQkFXc2hEQ0FKUVFGcUlBcHdJUWRCQUNFSkFrQURRQ0FKSUFwR0RRRWdDRUVCYWlFQ0lBRW9Bb0FlSUFkQktHeHFJZ1V0QUJ3RVFBSkFJQUlnQlNnQ0pDSUlUUVJBSUFJaENBd0JDeUFGS1FJQUlSRWdCQ0FGS0FJWU5nSXdJQVFnQlNrQ0VEY0RLQ0FFSUFVcEFnZzNBeUFnQkVHdURtb2lEU0FGTFFBZk9nQUFJQVFnQlM4QUhUc0JyQTRnQlNBUU53SUFJQVVnQkNrRENEY0NDQ0FGSUFRcEF4QTNBaEFnQlNBRUtBSVlOZ0lZSUFWQkFUb0FIQ0FGSUFRdkFRUTdBQjBnQlNnQ0lDRURJQVF0QUFZaERpQUZJQVkyQWlBZ0JTQUNOZ0lrSUFVZ0Rqb0FIeUFFSUFRcEF5ZzNBeEFnQkNBRUtBSXdOZ0lZSUFRZ0RTMEFBRG9BQmlBRUlBUXBBeUEzQXdnZ0JDQUVMd0dzRGpzQkJDQURJUVlnRVNFUUN5QUhRUUZxUVFBZ0J5QU1SeHNoQnlBSlFRRnFJUWtNQVFzTElBVWdFRGNDQUNBRklBUXBBd2czQWdnZ0JTQUVLUU1RTndJUUlBVWdCQ2dDR0RZQ0dDQUZRUUU2QUJ3Z0JTQUVMd0VFT3dBZElBVWdCQzBBQmpvQUh5QUZJQUkyQWlRZ0JTQUdOZ0lnQ3lBQklBRW9Bb3dlUVFGcU5nS01IaUFCSUFFb0FwQWVRUUZxTmdLUUhpQUFJQXMyQWdRZ0FFRUFOZ0lBREFNRklBbEJBV3BCQUNBSklBMUhHeUVKSUFkQkFXb2hCd3dDQ3dBTEN5QUVRU0JxUVlhMUEwSHJBMEVPSUFSQkNHb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFR3dEbW9rQUF0WkFRTi9Jd0JCRUdzaUF5UUFJQUVvQWdBaEJTQURJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFZCQUVnaUJCczJBZ3dnQXlBRklBRWdCQnMyQWdnZ0F5QURLUU1JTndNQUlBQWdBeUFDRUt3RUlBTkJFR29rQUF0WkFRTi9Jd0JCRUdzaUF5UUFJQUVvQWdBaEJTQURJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFZCQUVnaUJCczJBZ3dnQXlBRklBRWdCQnMyQWdnZ0F5QURLUU1JTndNQUlBQWdBeUFDRU5VQklBTkJFR29rQUFzU0FDQUFJQUZCLy8vL1AwRUZRUVFReWhJTFdRRUNmeUFCSUFBb0FvZ0JTd1JBSUFBb0FvQUJJUUlnQUNBQkVNRWVRUUFoQVFOQUlBQW9Bb1FCSUFGTkJFQWdBQ0FDRURZRklBRkJCWFFpQXlBQUtBS0FBV29nQWlBRGFoRDZCUm9nQVVFQmFpRUJEQUVMQ3dzTGJ3RUNmd0pBSUFBb0FwQUNJQUVvQWdSSkJFQWdBQkRvRUNBQUlBRW9BZ1FReEI0TUFRc2dBQkRtRUFzZ0FDQUJLQUlFSWdJMkFvd0NBMEFnQWlBRFN3UkFJQU5CTEd3aUFpQUFLQUtJQW1vZ0FTZ0NBQ0FDYWhDMUNSb2dBMEVCYWlFRElBQW9Bb3dDSVFJTUFRc0xDMEFDQW44QmZrRUdJUUlnQUNFRElBRkJCazhFUUVGL0lBR3RRaXgrSWdTbklBUkNJSWluR3hBVklRTWdBU0VDQ3lBQUlBTTJBb2dDSUFBZ0FqWUNrQUlMSlFBZ0FCRG1FQ0FBUVFZUTZSQWdBRUVBTmdLVUFpQUFJQUFvQXBnQ1FRRnFOZ0tZQWd1Y0FRSURmd0YrSUFFZ0FFSG9FV29vQWdCTEJFQWdBQ2dDNEJFaEEwRUlJUUlnQUNFRUlBRkJDRThFUUVGL0lBR3RRcHdDZmlJRnB5QUZRaUNJcHhzUUZTRUVJQUVoQWdzZ0FDQUVOZ0xnRVNBQVFlZ1JhaUFDTmdJQVFRQWhBUU5BSUFBb0F1UVJJQUZOQkVBZ0FDQURFRFlGSUFGQm5BSnNJZ0lnQUNnQzRCRnFJQUlnQTJvaUFoRG5FQ0FDRVBzSElBRkJBV29oQVF3QkN3c0xDOGNIQVFoL0l3QkIwQUZySWdna0FDQUJLQUtNQWlJRklBRW9BcFFDSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVHZ0FXc2lCaVFBUVFZZ0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRUdUUnNpQ1NBQktBS01Ba3NFUUNBR1FvQ0FnSURBQURjQ2xBRWdCaUFHUVJCcUlnUTJBcEFCSUFRZ0FTZ0NsQUlRd2g0Z0FTZ0NpQUlpQkNBQktBS01Ba0VzYkdvaENnTkFBa0FnQkNBS1JnUkFJQUVReFI0Z0FTQUpFT2tRSUFZb0FwQUJJZ1FnQmlnQ2xBRkJCWFJxSVFVTUFRc2dCQzBBSUFSQUlBUVE0QVloQ3lBR1FSQnFJZ1VvQW9RQklnY2dCU2dDaUFGUEJFQWdCU0FGS0FLSUFTSUhRUUYwUVFJZ0J4c1F3aDRnQlNnQ2hBRWhCd3NnQlNBSFFRRnFOZ0tFQVNBRktBS0FBU0FIUVFWMGFpQUxFUG9GR2dzZ0JFRXNhaUVFREFFTEN3TkFJQVFnQlVjRVFDQUdRUWhxSUFFZ0JDQUVRUnhxRU1jZUlBUkJJR29oQkF3QkN3c2dCa0VRYWlFRVFRQWhCUU5BSUFRb0FvUUJJQVZOQkVBZ0JFRUFOZ0tFQVFVZ0JDZ0NnQUVhSUFWQkFXb2hCUXdCQ3dzZ0JDQUVLQUtBQVJBMkN5QUdRYUFCYWlRQUlBRW9Bb3dDSVFVTElBSW9BZ0FoQnlBSUlBTTJBc3dCSUFnZ0FqWUN5QUVnQlVFQmF5RUpJQWNnQlhBaEJFRUFJUU1DUUFOQUlBTWdCVWNFUUNBQktBS0lBaUlLSUFSQkxHeHFJZ1l0QUNCRkJFQWdDRUVJYWlJQ0lBaEJ5QUZxRVB3RklBWWdBaENWRENBS0lBUkJMR3hxSWdJZ0F6WUNLQ0FDSUFjMkFpUWdBU0FCS0FLVUFrRUJhallDbEFJZ0FTQUJLQUtZQWtFQmFqWUNtQUlnQUNBR1FSeHFOZ0lFSUFCQkFEWUNBQXdEQ3lBR0lBY2dBaEM1Q1FSQUlBQkJBallDQUNBQUlBWkJIR28yQWdRTUF3c2dBeUFHS0FJb1N3UkFJQWhCcUFGcUlnSWdDRUhJQVdvUS9BVWdDRUVJYWlBQ0VKUU1JZ0lnQXpZQ0tDQUNJQWMyQWlRZ0FpQUdFT0VHSUFJZ0FpZ0NLRUVCYWpZQ0tDQUVRUUZxSUFFb0Fvd0NjQ0VEUVFBaEJDQUJLQUtNQWlJSFFRRnJJUWtDUUFOQUlBUWdCMFlOQVNBQktBS0lBaUFEUVN4c2FpSUZMUUFnQkVBZ0FpQUNLQUlvSWdvZ0JTZ0NLRXNFZnlBRklBSVE0UVlnQWlnQ0tBVWdDZ3RCQVdvMkFpZ2dBMEVCYWtFQUlBTWdDVWNiSVFNZ0JFRUJhaUVFREFFTEN5QUZJQUlRc3drTElBRWdBU2dDbEFKQkFXbzJBcFFDSUFFZ0FTZ0NtQUpCQVdvMkFwZ0NJQUFnQmtFY2FqWUNCQ0FBUVFBMkFnQWdBaENxQWd3REJTQUVRUUZxUVFBZ0JDQUpSeHNoQkNBRFFRRnFJUU1NQWdzQUN3c2dDRUVJYWtHR3RRTkI2d05CRGlBSVFhZ0JhaEFkSWdFUUZ5SUNRUmhxUVpZMUVBNGFJQUlRR0NBQVFnQTNBZ0FnQVJBZUN5QUlRZEFCYWlRQUN3b0FJQUFRNmhCQkFFY0xLZ0FnQUNBQk5nSUFJQUJCQkdvZ0FoQldHaUFBUVFBMkFpQWdBQ0FCS0FLWUFrRUJhellDSkNBQUN3d0FJQUJCTEdvUXFBRWdBQXNvQUNBQVFnQTNBcFFDSUFCQ2dJQ0FnT0FBTndLTUFpQUFJQUEyQW9nQ0lBQkJCaERwRUNBQUM0VUJBUUovSUFFZ0FDZ0NpQVJMQkVBZ0FDZ0NnQVFoQXlBQUlRSWdBQ0FCUVJCUEJIOUJmeUFCUVFWMElBRkIvLy8vUDBzYkVCVWhBaUFCQlVFUUN6WUNpQVFnQUNBQ05nS0FCRUVBSVFFRFFDQUFLQUtFQkNBQlRRUkFJQUFnQXhBMkJTQUJRUVYwSWdJZ0FDZ0NnQVJxSUFJZ0Eyb1ErZ1VhSUFGQkFXb2hBUXdCQ3dzTEN4c0FJQUVvQWdBb0FnQWdBU2dDQkNnQ0FCQzBDU0FBRUpzRkdnczZBUUYvSXdCQkVHc2lBeVFBSUFJb0FnQVF3d01oQWlBQlFZUU1haWdDQUNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBZ0EwRVFhaVFBQzlVRkFnaC9BbjRqQUVIQUFXc2lBeVFBSUFGQmhBeHFLQUlBSUFFb0Fvd01JZ1JCbGdGc1FaWUJha0hrQUc1SkJFQWdBU0FFUVFGMFFRSnFFTmNlQ3lBRFFiZ0JhaUFCSUFJUXpoNGdBU2dDaEF3aUNVRUJheUVLSUFJb0FnQWhCaUFCS0FLQURDRUlJQU1vQXJ3QklRY2dBeWdDdUFFaEJVRUFJUUlDUUFOQUlBSWdDVWNFUUNBSUlBVkJCSFJxSWdRdEFBUkZCRUFnQkVFQk9nQUVJQVFnQmpZQ0FDQUlJQVZCQkhScUlnUWdBallDRENBRUlBYzJBZ2dnQVNBQktBS01ERUVCYWpZQ2pBd2dBU0FCS0FLUURFRUJhallDa0F3Z0FFSUFOd0lBREFNTEFrQWdCQ2dDQ0NBSFJ3MEFJQVlnQkNnQ0FFY05BQ0FBUWdJM0FnQU1Bd3NnQWlBRUtBSU1Td1JBSUFNZ0J6WUNzQUVnQXlBR05nS29BU0FESUFJMkFyUUJJQU5CQVRvQXJBRWdBeUFES1FPd0FTSUxOd01RSUFNZ0F5a0RxQUVpRERjRENDQURJQVFwQWdnM0E3QUJJQU1nQkNrQ0FEY0RxQUVnQkNBTU53SUFJQVFnQ3pjQ0NDQURJQU1vQXJRQlFRRnFOZ0swQVNBRlFRRnFJQUVvQW9RTWNDRUVRUUFoQmlNQVFSQnJJUVVnQVVHRURHb29BZ0FpQjBFQmF5RUlBa0FEUUNBR0lBZEdEUUVnQVNnQ2dBd2dCRUVFZEdvaUFpMEFCQVJBSUFNZ0F5Z0N0QUVpQ1NBQ0tBSU1Td1IvSUFVZ0Fpa0NDRGNEQ0NBRklBSXBBZ0EzQXdBZ0FpQURLUUt3QVRjQ0NDQUNJQU1wQXFnQk53SUFJQU1nQlNrRENEY0NzQUVnQXlBRktRTUFOd0tvQVNBREtBSzBBUVVnQ1F0QkFXbzJBclFCSUFSQkFXcEJBQ0FFSUFoSEd5RUVJQVpCQVdvaEJnd0JDd3NnQWlBREtRS29BVGNDQUNBQ0lBTXBBckFCTndJSUN5QUJJQUVvQW93TVFRRnFOZ0tNRENBQklBRW9BcEFNUVFGcU5nS1FEQ0FBUWdBM0FnQU1Bd1VnQlVFQmFrRUFJQVVnQ2tjYklRVWdBa0VCYWlFQ0RBSUxBQXNMSUFOQkNHcEJoclVEUWVzRFFRNGdBMEdvQVdvUUhTSUJFQmNpQWtFWWFrR1dOUkFPR2lBQ0VCZ2dBRUlBTndJQUlBRVFIZ3NnQTBIQUFXb2tBQXZYQWdFQmZ5TUFRY0FCYXlJSEpBQWdCeUFDTmdLd0FTQUhJQUUyQXJnQklBQWdCeWdDdUFFZ0J5Z0NzQUVnQXhEbEJDSUFRZmp3RHpZQ0JDQUFRYXp4RHpZQ0FDQUFJQVUyQWlnZ0FDQUVOZ0lrSUFCQm1QRVBOZ0lBSUFCQkxHb2dCaEM2Q1NBQUtBSWtJZ0VFZnlBQkJTQUhRWXlQQlVFZ1FRQWdCMEdnQVdvUUhTSUJFQmNpQWtFWWFrSDZtUWdRRGhvZ0FoQVlJQUVRSGlBQUtBSWtDeEJYSUFBb0FnaEJBVUVBUWVMQUNFR01qd1ZCSVJCTElBQW9BaWdRVnlBQUtBSUlRUUZCQUVISnl3aEJqSThGUVNJUVN5QUFLQUl3SWdJZ0FDZ0NORUVDZEdvaEFTQUhRUmhxSVFNRFFDQUJJQUpIQkVBZ0FpZ0NBQ0lFUlFSQUlBZEJqSThGUVNSQkFDQUhRYUFCYWhBZElnVVFGeUVHSUFOQm1hY0lFQTRhSUFZUUdDQUZFQjRMSUFRUVZ5QUFLQUlJUVFGQkFFSGR4QWhCakk4RlFTVVFTeUFDUVFScUlRSU1BUXNMSUFkQndBRnFKQUFnQUFzc0FDQUFRWVFNYWtFQU5nSUFJQUJCNEFBUTdSQWdBRUVBTmdLTURDQUFJQUFvQXBBTVFRRnFOZ0tRREFzWkFDQUFMUUFVQkVBZ0FFRUVhaENWQWlBQVFRQTZBQlFMQzNzQkJYOGdBRUdFR0dvb0FnQWlCVUVCYXlFR0FrQURRQ0FESUFWR0RRRWdBQ2dDZ0JnZ0FVRUZkR29pQkMwQUZBUkFJQUlnQWlnQ0hDSUhJQVFvQWh4TEJIOGdCQ0FDRU93UUlBSW9BaHdGSUFjTFFRRnFOZ0ljSUFGQkFXcEJBQ0FCSUFaSEd5RUJJQU5CQVdvaEF3d0JDd3NnQkNBQ0VPc1FDd3NTQUNBQUlBRVFrZ3dpQUVFQk9nQVVJQUFMRGdBZ0FCRFNIaUFBSUFFUThSQUxIQUFnQUNBQktBSUFLQUlBTmdJQUlBQkJCR29nQVNnQ0JCRGFIZ3ZvQVFFRGZ5TUFRYUFDYXlJQ0pBQkI0QUFnQVVHV0FXeEI1QUJ1SWdFZ0FVSGdBRTBiSWdNZ0FFR0VER29vQWdCTEJFQWdBa0tBZ0lDQWdBZzNBcFFDSUFJZ0FrRVFhaUlCTmdLUUFpQUJJQUFvQW93TUVQWUtJQUFvQW9BTUlnRWdBQ2dDaEF4QkJIUnFJUVFEUUFKQUlBRWdCRVlFUUNBQUVORWVJQUFnQXhEdEVDQUNLQUtRQWlJQklBSW9BcFFDUVFKMGFpRUREQUVMSUFFdEFBUUVRQ0FDUVJCcUlBRVF2Z0VRbEFNTElBRkJFR29oQVF3QkN3c0RRQ0FCSUFOR1JRUkFJQUlnQUNBQkVNOGVJQUZCQkdvaEFRd0JDd3NnQWtFUWFoQ1RCUXNnQWtHZ0Ftb2tBQXVnQVFJRGZ3RitJQUVnQUVHSUNtb29BZ0JMQkVBZ0FDZ0NnQW9oQTBIQUFDRUNJQUFoQkNBQlFjQUFUd1JBUVg4Z0FhMUNGSDRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUNnQW9nQUVHSUNtb2dBallDQUVFQUlRRURRQ0FBS0FLRUNpQUJUUVJBSUFBZ0F4QTJCU0FCUVJSc0lnSWdBQ2dDZ0FwcUlBSWdBMm9pQWhDU0RCb2dBa0VFYWhDVkFpQUJRUUZxSVFFTUFRc0xDd3MwQVFGL0EwQWdBQ2dDaEJnZ0FVMEVRQ0FBUVFBMkFvUVlCU0FBS0FLQUdDQUJRUVYwYWhEK0J5QUJRUUZxSVFFTUFRc0xDMWtCQW44Z0FFSC9BVG9BRENBQVFRQTZBQUFqQUVFUWF5SUNKQUFnQUJDVkFpQUJMUUFNSWdOQi93RkhCRUFnQWtFSWFpQUFJQUVnQTBFQ2RFR2doUkpxS0FJQUVRVUFJQUFnQVMwQUREb0FEQXNnQWtFUWFpUUFDeXNBSUFCQkFEb0FGQ0FBUVFBNkFBQWdBUzBBRkFSQUlBQWdBUkR4RUFzZ0FDQUJLUUlZTndJWUlBQUxNZ0FnQUFKL0lBRkZCRUJCQVNFQklBQU1BUXRCZnlBQlFRSjBJQUZCLy8vLy93TkxHeEFWQ3pZQ0JDQUFJQUUyQWd3TDRBa0JCSDhqQUVIQUFXc2lBeVFBQWtBZ0FTZ0NBQ0lFUlNBQkxRQU1JZ1pCQVVkeVJRUkFBa0FnQkNnQ0JDSUJFT0VJQkVBZ0EwRVFhaUlCSUFRb0FpUkJKR29RVXlBRFFTQnFJZ0pCK1pVSklBRVFOU0FESUFKQjg1b0pFQzBnQWhBUEdpQUJFQThhREFFTElBRkIyUGdSUmdSQUlBTkJFR29pQVNBRUtBSWtRU1JxRUZNZ0EwRWdhaUlDUWRXTENTQUJFRFVnQXlBQ1FmT2FDUkF0SUFJUUR4b2dBUkFQR2d3QkN5QUJRZUQ1RDBZRVFDQURRUkJxSWdFZ0JDZ0NKRUVrYWhCVElBTkJJR29pQWtIL2lRa2dBUkExSUFNZ0FrSHptZ2tRTFNBQ0VBOGFJQUVRRHhvTUFRc2dBVUdnK1JGR0JFQWdBMEVRYWlJQklBUW9BaVJCSkdvUVV5QURRU0JxSWdKQmdvZ0pJQUVRTlNBRElBSkI4NW9KRUMwZ0FoQVBHaUFCRUE4YURBRUxJQUZCNlBrUlJnUkFJQU5CRUdvaUFTQUVLQUlrUVNScUVGTWdBMEVnYWlJQ1FiR1dDU0FCRURVZ0F5QUNRZk9hQ1JBdElBSVFEeG9nQVJBUEdnd0JDeUFCUWZqekQwWUVRQ0FEUVJCcUlnRWdCQ2dDSkVFa2FoQlRJQU5CSUdvaUFrR2JqUWtnQVJBMUlBTWdBa0h6bWdrUUxTQUNFQThhSUFFUUR4b01BUXNnQVVHdzZ3OUdCRUFnQTBFUWFpSUJJQVFvQWlSQkpHb1FVeUFEUVNCcUlnSkJoNHNKSUFFUU5TQURJQUpCODVvSkVDMGdBaEFQR2lBQkVBOGFEQUVMSUFOQklHcEJscTRGUWJrR1FRZ2dBaEFYSWdGQkdHb2lBa0h1dndzUURob2dBa0cxcHd3UURob2dBU0FFS0FJRVFRUnFFSm9CR2lBQkVCZ2dBMEdzNGdZUUZCb0xJQUFnQXhCVUdpQURFQThhREFFTElBTkJmeUFFSUFaQkFrY2JJZ1UyQWdBZ0JVRi9Sd1JBSUFOQkVHb2lBU0FERVBnUUlBTkJJR29pQWtIUGpBa2dBUkExSUFBZ0FrSHptZ2tRTFNBQ0VBOGFJQUVRRHhvTUFRc2dBeUFFUVFBZ0JrRUZSaHNpQlRZQ0FDQUZCRUFnQTBFUWFpSUJJQU1Rb0JFZ0EwRWdhaUlDUWY2U0NTQUJFRFVnQUNBQ1FmT2FDUkF0SUFJUUR4b2dBUkFQR2d3QkN5QURJQVJCQUNBR1FRWkdHeUlGTmdJQUlBVUVRQ0FEUVJCcUlnRWdBeEQzRUNBRFFTQnFJZ0pCOEpBSklBRVFOU0FBSUFKQjg1b0pFQzBnQWhBUEdpQUJFQThhREFFTElBTWdCRUVBSUFaQkEwWWJJZ1UyQWdBZ0JRUkFJQU5CRUdvaUFTQURFUFlRSUFOQklHb2lBa0cyaWdrZ0FSQTFJQUFnQWtIem1na1FMU0FDRUE4YUlBRVFEeG9NQVFzZ0F5QUVRUUFnQmtFRVJoc2lCVFlDQUNBRkJFQWdBMEVRYWlJQklBTVErd1VnQTBFZ2FpSUNRWmFYQ1NBQkVEVWdBQ0FDUWZPYUNSQXRJQUlRRHhvZ0FSQVBHZ3dCQ3lBRElBUkJBQ0FHUVFoR0d5SUZOZ0lBSUFVRVFDQURRUkJxSWdFZ0F4RDFFQ0FEUVNCcUlnSkIzcElKSUFFUU5TQUFJQUpCODVvSkVDMGdBaEFQR2lBQkVBOGFEQUVMSUFNZ0JFRUFJQVpCQjBZYklnVTJBZ0FnQlFSQUlBTkJFR29pQVNBREVQUVFJQU5CSUdvaUFrSGlqZ2tnQVJBMUlBQWdBa0h6bWdrUUxTQUNFQThhSUFFUUR4b01BUXNnQXlBRVFRQWdCa0VKUmhzaUJEWUNBQ0FFQkVBZ0EwRVFhaUlCSUFNUTh4QWdBMEVnYWlJQ1FhZUtDU0FCRURVZ0FDQUNRZk9hQ1JBdElBSVFEeG9nQVJBUEdnd0JDeUFHUlFSQUlBTkJJR29pQWtHVGl3a2dBUkRFQVNBQUlBSkI4NW9KRUMwZ0FoQVBHZ3dCQ3lBRFFTQnFRWmF1QlVIYUJrRUlJQUlRRnlJQlFSaHFJZ0pCN3I4TEVBNGFJQUpCL2VzQkVBNGFJQUVRR0NBQVFhemlCaEFVR2dzZ0EwSEFBV29rQUF0ckFRRi9Jd0JCRUdzaUFpUUFBa0FnQVVVTkFDQUJLQUlFUWRqNEVVY05BQ0FBSUFFb0FrUVEzd0VnQUNBQktBSklFTjhCQ3lBQUlBRW9BaWdRM3dFZ0FrRUFPZ0FNSUFJZ0FVRTRhallDQ0NBQUlBSkJDR29RdUFrZ0FDQUJLQUlzRU44QklBSkJFR29rQUFzMEFRRi9BMEFnQUNnQ3BBZ2dBVTBFUUNBQVFRQTJBcVFJQlNBQUtBS2dDQ0FCUVN4c2FoQ3FBaUFCUVFGcUlRRU1BUXNMQ3lVQUlBQVEzeDRnQUVFWUVJSVJJQUJCQURZQ3JBZ2dBQ0FBS0FLd0NFRUJhallDc0FnTExBQWdBRUdFSG1wQkFEWUNBQ0FBUWVBQUVJRVJJQUJCQURZQ2pCNGdBQ0FBS0FLUUhrRUJhallDa0I0TEtBQWdBRUVBTmdMRUFTQUFRUXdRK2hBZ0FFRUFOZ0xNQVNBQUlBQW9BdEFCUVFGcU5nTFFBUXV0QXdFSmZ5TUFRY0FCYXlJRkpBQWdCVUc0QVdvZ0FFRXNhaUFBS0FJZ0lBQW9BaVJCQW5ScVFRUnJJZ0lRdFI0Z0FDZ0M4QUVpQ0VFQmF5RUpJQUlvQWdBaEJ5QUFLQUxzQVNFR0lBVW9BcndCSVFJZ0JTZ0N1QUVoQXdKQUFrQURRQ0FCSUFoSEJFQWdCaUFEUVFSMGFpSUVMUUFFUlEwRElBSWdCQ2dDQ0VZRVFDQUhJQVFvQWdCR0RRTUxJQVFvQWd3Z0FVa05BeUFEUVFGcVFRQWdBeUFKUnhzaEF5QUJRUUZxSVFFTUFRc0xJQVZCQ0dwQmhyVURRWjRFUVE0Z0JVR29BV29RSFNJQkVCY2lBa0VZYWtIU05SQU9HaUFDRUJnZ0FSQWVEQUVMUVFBaEFVRUFJUVFDUUFOQUlBUWdDRVlOQVNBQUtBTHNBU0lISUFOQkJIUWlCbW9oQWdKQUlBRUVRQ0FHSUFkcUlnWW9BZ3hGRFFFZ0FTQUNLQUlBTmdJQUlBRWdBaTBBQkRvQUJDQUJJQVlvQWdnMkFnZ2dBU0FHS0FJTVFRRnJOZ0lNQ3lBRFFRRnFRUUFnQXlBSlJ4c2hBeUFFUVFGcUlRUWdBaUVCREFFTEN5QUJRZ0EzQWdnZ0FVRUFPZ0FFSUFGQkFEb0FBQXNnQUNBQUtBTDRBVUVCYXpZQytBRWdBQ0FBS0FMOEFVRUJhallDL0FFTElBQWdBQ2dDSkVFQmF6WUNKQ0FGUWNBQmFpUUFDNGdCQVFKL0lBRWdBQ2dDaUFGTEJFQWdBQ2dDZ0FFaEF5QUFJUUlnQUNBQlFSQlBCSDlCZnlBQlFRTjBJQUZCLy8vLy93RkxHeEFWSVFJZ0FRVkJFQXMyQW9nQklBQWdBallDZ0FGQkFDRUJBMEFnQUNnQ2hBRWdBVTBFUUNBQUlBTVFOZ1VnQVVFRGRDSUNJQUFvQW9BQmFpQUNJQU5xS1FJQU53SUFJQUZCQVdvaEFRd0JDd3NMQzhZTkFoSi9BbjRqQUVHQUJHc2lBaVFBSUFJZ0FUWUNEQ0FBS0FJQUlnUkJMR29oQ2lBQUtBSUVJUVVnQkNnQzhBRWdCQ2dDK0FFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNBS0lBTkJBWFJCQW1vUXRoNExJQUpCNkFOcUlBb2dBa0VNYWhDMUhpQUVLQUx3QVNJTFFRRnJJUXdnQkNnQzdBRWhDU0FDS0FMc0F5RUlJQUlvQXVnRElRZEJBQ0VEQW44Q1FBSkFBa0FEUUNBRElBdEhCRUFnQ1NBSFFRUjBhaUlHTFFBRVJRUkFJQVpCQVRvQUJDQUdJQUUyQWdBZ0NTQUhRUVIwYWlJR0lBTTJBZ3dnQmlBSU5nSUlJQVFnQkNnQytBRkJBV28yQXZnQklBUWdCQ2dDL0FGQkFXbzJBdndCREFNTElBZ2dCaWdDQ0VZRVFDQUdLQUlBSUFGR0RRUUxJQU1nQmlnQ0RFc0VRQ0FDSUFnMkFyQUJJQUlnQVRZQ3FBRWdBaUFETmdLMEFTQUNRUUU2QUt3QklBSWdBaWtEc0FFaUZEY0QwQUlnQWlBQ0tRT29BU0lWTndQSUFpQUNJQVlwQWdnM0E3QUJJQUlnQmlrQ0FEY0RxQUVnQmlBVk53SUFJQVlnRkRjQ0NDQUNJQUlvQXJRQlFRRnFOZ0swQVNBS0lBZEJBV29nQkNnQzhBRndJQUpCcUFGcUVPc0VJQVFnQkNnQytBRkJBV28yQXZnQklBUWdCQ2dDL0FGQkFXbzJBdndCREFNRklBZEJBV3BCQUNBSElBeEhHeUVISUFOQkFXb2hBd3dDQ3dBTEN5QUNRY2dDYWtHR3RRTkI2d05CRGlBQ1FhZ0JhaEFkSWdNUUZ5SUdRUmhxUVpZMUVBNGFJQVlRR0NBREVCNExJQVFvQWlRaUF5QUVLQUlvVHdSQUlBUVF0QjRnQkNnQ0pDRURDeUFFSUFOQkFXbzJBaVFnQkNnQ0lDQURRUUowYWlBQk5nSUFJd0JCRUdzaUF5UUFJd0JCd0FGcklnUWtBQ0FFUWJnQmFpQUZRWVFyYWlJRklBRVF6aDRnQlVHRURHb29BZ0FpQjBFQmF5RUtJQUVvQWdBaENDQUZLQUtBRENFSklBUW9BcndCSVFzZ0JDZ0N1QUVoQVVFQUlRVUNRQU5BSUFVZ0IwY0VRQ0FKSUFGQkJIUnFJZ1l0QUFSRkJFQWdBMEVBTmdJTUlBTkJBRG9BQ0F3REN3SkFJQVlvQWdnZ0MwY05BQ0FJSUFZb0FnQkhEUUFnQXlBQk5nSU1JQU5CQVRvQUNBd0RDeUFGSUFZb0FneExCRUFnQTBFQU5nSU1JQU5CQURvQUNBd0RCU0FCUVFGcVFRQWdBU0FLUnhzaEFTQUZRUUZxSVFVTUFnc0FDd3NnQkVFSWFrR0d0UU5CbmdSQkRpQUVRYWdCYWhBZElnRVFGeUlGUVJocVFkSTFFQTRhSUFVUUdDQURRUUEyQWd3Z0EwRUFPZ0FJSUFFUUhnc2dCRUhBQVdva0FDQURMUUFJSVFFZ0EwRVFhaVFBUVFFZ0FVVU5BaG9nQUNnQ0FCRGpIZ3dCQ3lBQUtBSUFJUVlnQWtHb0FXb1FTU0lLUVFocUlnQkJ5NmNNRUE0YVFRQWhBMEYvSVFRRFFDQUdLQUlrSUFOTkJFQWdBRUh6bWdrUURob2dBa0hJQW1vaUF5QUZJQUVvQWdBUStnY2dBQ0FERUJJYUlBQkI4NW9KRUE0YUlBTVFEeG9nQlNnQ0FDRUFJQU1nQ2tFTWFoQkNJQUFnQXlBQktBSUFRUkJxRU1BZUlBVkIyQWhxSVJJZ0F4QVBHaUFDUWVBQ2FpRUJJQVFoQXdOQUlBWW9BaVFpQnlBRFN3UkFJQVlvQWlBaUNDQURRUUZxSWdBZ0JDQUFJQWRKRzBFQ2RHb29BZ0FoQnlBSUlBTkJBblJxS0FJQUlRTWdBa0VBTmdMMEF5QUNJQWMyQXZBRElBSWdBellDN0FNZ0FpQVNOZ0xvQXlBQ0lBVW9BdWdtUVFGck5nTDRBd0pBSUFKQjZBTnFFTE1lQkVBZ0FpQUNRZWdEYWhDekhpSUlLQUlRTmdLZ0FTQUNJQWdwQWdnM0E1Z0JJQUlnQ0NrQ0FEY0RrQUVNQVFzZ0FrSElBbXBCbHE0RlFjQUZRUWdnQlNnQ0FCQVhJUXNnQVVHYm1na1FEaG9nQWtHUUFXb2lDQ0FGSUFNb0FnQVErZ2NnQVNBSUVCSWFJQUZCbEpvSkVBNGFJQUpCdUFKcUlna2dCU0FIS0FJQUVQb0hJQUVnQ1JBU0dpQUJRZk9hQ1JBT0dpQUpFQThhSUFnUUR4b2dDeEFZSUFKQ0FEY0RtQUVnQWtFQU5nS2dBU0FDUWdBM0E1QUJDeUFGS0FJQUlSTWdBa0ZBYXlJSUlBVWdBeWdDQUJDeUhpQUNRZEFBYWlJSklBaEI4cG9KRUMwZ0FrRXdhaUlMSUFVZ0F5Z0NBQkQ2QnlBQ1FlQUFhaUlESUFrZ0N4Qk9JQUpCOEFCcUlnd2dBMEdMNGdrUUxTQUNRU0JxSWcwZ0JTQUhLQUlBRUxJZUlBSkJnQUZxSWc0Z0RDQU5FRTRnQWtHNEFtb2lEeUFPUWZLYUNSQXRJQUpCRUdvaUVDQUZJQWNvQWdBUStnY2dBa0hvQTJvaUJ5QVBJQkFRVGlBQ1FjZ0NhaUlSSUFkQmxlOERFQzBnRXlBUklBSkJrQUZxRUw4ZUlCRVFEeG9nQnhBUEdpQVFFQThhSUE4UUR4b2dEaEFQR2lBTkVBOGFJQXdRRHhvZ0F4QVBHaUFMRUE4YUlBa1FEeG9nQ0JBUEdpQUFJUU1NQVFzTElBb1FVUXdDQzBGL0lBTWdCaWdDSUNBRFFRSjBhaWdDQUNJSUlBRkhHeUFFSUFSQmYwWWJJZ1JCZjBjRVFDQUFRZk9hQ1JBT0dpQUNRY2dDYWlJSElBVWdDQ2dDQUJENkJ5QUFJQWNRRWhvZ0FFSFUyd3NRRGhvZ0J4QVBHZ3NnQTBFQmFpRUREQUFMQUF0QkFBc2hBQ0FDUVlBRWFpUUFJQUFMR0FBZ0FDZ0NBQ2dDQkNBQUtBSUVLQUlBS0FJQUVMUUpDMzBCQkg4akFFRXdheUlESkFBZ0F5QUNOZ0lzSUFNZ0FDZ0M0QkVnQUVIa0VXb29BZ0JCbkFKc2FrR2NBbXNpQUNBQkVNa2VJZ1VReUI0aUJnUkFJQU1nQlJEcUVDSUVLQUlBTmdJc0lBUWdBallDQUNBREtBSXNJUVFMSUFaRkJFQWdBeUFBSUFFZ0EwRXNhaERISGtFQUlRUUxJQU5CTUdva0FDQUVDM3NCQlg4Z0FFR2tDR29vQWdBaUJVRUJheUVHQWtBRFFDQURJQVZHRFFFZ0FDZ0NvQWdnQVVFc2JHb2lCQzBBSUFSQUlBSWdBaWdDS0NJSElBUW9BaWhMQkg4Z0JDQUNFT0VHSUFJb0FpZ0ZJQWNMUVFGcU5nSW9JQUZCQVdwQkFDQUJJQVpIR3lFQklBTkJBV29oQXd3QkN3c2dCQ0FDRUxNSkN3dnlCUUVLZnlNQVFlQUZheUlDSkFBQ1FFRVlJQUZCbGdGc1FlUUFiaUlCSUFGQkdFMGJJZ1lnQUVHa0NHb29BZ0JORFFBZ0FrS0FnSUNBZ0FJM0Fvd0VJQUlnQWtFSWFpSUJOZ0tJQkNBQklBQW9BcXdJRU13ZUlBQW9BcUFJSWdFZ0FDZ0NwQWhCTEd4cUlRTURRQ0FCSUFOR0JFQWdBQkRnSGlBQUlBWVFnaEVnQWlnQ2lBUWlCU0FDS0FLTUJFRUZkR29oQ1NBQ1FiQUVhaUVLQTBBZ0JTQUpSZ1JBQTBBZ0FpZ0NqQVFnQ0VzRVFDQUNLQUtJQkJvZ0NFRUJhaUVJREFFTEN3VWdBQ2dDcEFnaUF5QUFLQUtzQ0NJQlFaWUJiRUdXQVdwQjVBQnVTUVJBSUFBZ0FVRUJkRUVDYWhEcEhpQUFLQUtrQ0NFREN5QUZLQUlBSVFjZ0FpQUZRUnhxTmdMY0JTQUNJQVUyQXRnRklBTkJBV3NoQ3lBSElBTndJUVJCQUNFQkFrQURRQ0FCSUFOSEJFQWdBQ2dDb0FnZ0JFRXNiR29pQmkwQUlFVUVRQ0FDUVpnRWFpSUVJQUpCMkFWcUVQd0ZJQVlnQkJDVkRDQUdJQUUyQWlnZ0JpQUhOZ0lrSUFBZ0FDZ0NyQWhCQVdvMkFxd0lJQUFnQUNnQ3NBaEJBV28yQXJBSURBTUxJQVlnQnlBRkVMa0pEUUlnQVNBR0tBSW9Td1JBSUFKQnVBVnFJZ01nQWtIWUJXb1EvQVVnQWtHWUJHb2dBeENVRENFRElBSWdBVFlDd0FRZ0FpQUhOZ0s4QkNBRElBWVE0UVlnQWlBQ0tBTEFCRUVCYWpZQ3dBUWdBQ0FFUVFGcUlBQW9BcVFJY0NBREVPZ2VJQUFnQUNnQ3JBaEJBV28yQXF3SUlBQWdBQ2dDc0FoQkFXbzJBckFJSUFNUXFnSU1Bd1VnQkVFQmFrRUFJQVFnQzBjYklRUWdBVUVCYWlFQkRBSUxBQXNMSUFKQm1BUnFRWWExQTBIckEwRU9JQUpCdUFWcUVCMGlBUkFYSVFRZ0NrR1dOUkFPR2lBRUVCZ2dBUkFlQ3lBRlFTQnFJUVVNQVFzTElBSkJBRFlDakFRZ0FrRUlhaUFDS0FLSUJCQTJEQUlMSUFFdEFDQUVRQ0FDS0FLTUJDSUVJQUlvQXBBRUlnVlBCRUFnQWtFSWFpQUZRUUYwUVFJZ0JSc1F6QjRnQWlnQ2pBUWhCQXNnQWlBRVFRRnFOZ0tNQkNBQ0tBS0lCQ0FFUVFWMGFpQUJFUG9GR2dzZ0FVRXNhaUVCREFBTEFBc2dBa0hnQldva0FBdnBBUUVCZnlNQVFUQnJJZ01rQUNBRElBSTJBZ3dnQXlBQk5nSUFJQU1nQTBFTWFqWUNCQUpBSUFKRkJFQWdBQ0FERU0wZURBRUxBa0FnQWlnQ0JDSUJFT0VJQkVBZ0EwRVFhaUFDS0FJa1FTUnFFRllhREFFTElBRkIrUE1QUmdSQUlBTkJFR29nQWlnQ0pFRWthaEJXR2d3QkN5QUJFTjBGQkVBZ0EwRVFhaUFDS0FJa1FTUnFFRllhREFFTElBRkI2UFVQUmdSQUlBTkJFR29RbXdVYURBRUxJQUZCcVBZUFJnUkFJQU5CRUdvUW13VWFEQUVMSUFGQndQWVBSZ1JBSUFOQkVHb1Ftd1VhREFFTElBTkJFR29nQXhETkhnc2dBQ0FEUVJCcUVGWWFDeUFEUVRCcUpBQUxKZ0FnQUJEWkhpQUFRZUFBRVBJUUlBQkJBRFlDakJnZ0FDQUFLQUtRR0VFQmFqWUNrQmdMS0FBZ0FFRUFOZ0xrQXlBQVFSZ1E3eEFnQUVFQU5nTHNBeUFBSUFBb0F2QURRUUZxTmdMd0F3dHBBUU4vSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBellDRENBRUlBTTJBZ2dnQUVHTUFXb2lBeEMvQVNJRklBQW9BZ2dnQkNnQ0NDQUJJQUlvQWdBUTdoNGFJQU1nQlJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FGSVFBZ0JFRVFhaVFBSUFBTEp3QWdBQ0FCSUFJZ0F5QUVRZTJVQlVIYXlBaEI3ckFJUWFDRUVrRzBoQkpCZ0lRU0VNa01DeHNBSUFBZ0FTQUNJQU1nQkVIQWd4SkIySU1TUWFDREVoQ0lCZ3RwQVFOL0l3QkJFR3NpQkNRQUlBQVFIQ0FBSUFBb0FneEJBV29pQXpZQ0RDQUVJQU0yQWdnZ0FFR01BV29pQXhDL0FTSUZJQUFvQWdnZ0JDZ0NDQ0FCSUFJb0FnQVE4UjRhSUFNZ0JSQW9JQU1nQXlnQ0dFRUJhallDR0NBRklRQWdCRUVRYWlRQUlBQUxHd0FnQUNBQklBSWdBeUFFUWZpQ0VrR1FneEpCMklJU0VJZ0dDd3dBSUFCQk1Hb1FxQUVnQUF1eUFRRUJmeU1BUWNBQmF5SUdKQUFnQmlBQ05nS3dBU0FHSUFFMkFyZ0JJQUFnQmlnQ3VBRWdCaWdDc0FFZ0F4RE5CeUlBUVlDQkVqWUNCQ0FBUWJTQkVqWUNBQ0FBSUFVMkFpZ2dBQ0FFTmdJa0lBQkJvSUVTTmdJQUlBVUVmeUFGQlNBR1FlQ21CVUVkUVFBZ0JrR2dBV29RSFNJQkVCY2lBa0VZYWtHb3JRZ1FEaG9nQWhBWUlBRVFIaUFBS0FJb0N4QlhJQUFvQWdoQkFVRUFRWnZGQ0VIZ3BnVkJIaEJMSUFaQndBRnFKQUFnQUF2RUFRRURmeU1BUVNCcklnSWtBQ0FDSUFBb0FpQTJBaGdnQWlBQUtRSVlOd01RSUFJZ0FDa0NFRGNEQ0NBQ0lBRWdBQ2dDSkJDWEFUWUNCQ0FDSUFFZ0FDZ0NLQkRQQXpZQ0FDQUJLQUlBSVFBakFFRVFheUlCSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlETmdJTUlBRWdBellDQ0NBQVFZd0JhaUlERU1VQ0lnUWdBQ2dDQ0NBQktBSUlJQUpCQ0dvZ0FpZ0NCQ0FDS0FJQUVQVWVHaUFESUFRUUtDQURJQU1vQWhoQkFXbzJBaGdnQkNFQUlBRkJFR29rQUNBQ1FTQnFKQUFnQUF1Q0FnRUJmeU1BUWRBQmF5SUdKQUFnQmlBQ05nTEFBU0FHSUFFMkFzZ0JJQVlnQkRZQ3ZBRWdBQ0FHS0FMSUFTQUdLQUxBQVNBRElBWW9BcndCRVBvZUlnQkJ3SUFTTmdJRUlBQkI5SUFTTmdJQUlBQWdCVFlDS0NBQVFlQ0FFallDQUNBRkJIOGdCUVVnQmtFSWFrSFlwQVZCSFVFQUlBWkJxQUZxRUIwaUFSQVhJZ0pCR0dwQnJLOElFQTRhSUFJUUdDQUJFQjRnQUNnQ0tBc1FWeUFBS0FJSVFRRkJBRUdheHdoQjJLUUZRUjRRU3dKQUlBQW9BaWdpQVVVTkFDQUJLQUlFUWNqcEQwY05BQ0FHUVFocVFkaWtCVUVpUVFBZ0JrR29BV29RSFNJQkVCY2lBa0VZYWtHSjZ3Z1FEaG9nQWhBWUlBRVFIZ3NnQmtIUUFXb2tBQ0FBQzc4Q0FRRi9Jd0JCd0FGcklnY2tBQ0FISUFJMkFyQUJJQWNnQVRZQ3VBRWdBQ0FIS0FLNEFTQUhLQUt3QVNBREVNMEhJZ0JCZ0lBU05nSUVJQUJCdElBU05nSUFJQUFnQmpZQ0xDQUFJQVUyQWlnZ0FDQUVOZ0lrSUFCQm9JQVNOZ0lBSUFVRWZ5QUZCU0FIUWRhaUJVRWVRUUFnQjBHZ0FXb1FIU0lCRUJjaUFrRVlha0c3b0FnUURob2dBaEFZSUFFUUhpQUFLQUlvQ3hCWElBQW9BZ2hCQVVFQVFhREVDRUhXb2dWQkh4QkxJQUFvQWl3aUFRUi9JQUVGSUFkQjFxSUZRU0JCQUNBSFFhQUJhaEFkSWdFUUZ5SUNRUmhxUWFXZ0NCQU9HaUFDRUJnZ0FSQWVJQUFvQWl3TEVGY2dBQ2dDQ0VFQlFRQkI0OE1JUWRhaUJVRWhFRXNnQUNnQ0pFVUVRQ0FIUWRhaUJVRWlRUUFnQjBHZ0FXb1FIU0lCRUJjaUFrRVlha0h5dkFnUURob2dBaEFZSUFFUUhnc2dCMEhBQVdva0FDQUFDOFFCQVFOL0l3QkJJR3NpQWlRQUlBSWdBQ2dDSURZQ0dDQUNJQUFwQWhnM0F4QWdBaUFBS1FJUU53TUlJQUlnQVNBQUtBSWtFSmNCTmdJRUlBSWdBU0FBS0FJb0VKY0JOZ0lBSUFFb0FnQWhBQ01BUVJCcklnRWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQVNBRE5nSUlJQUJCakFGcUlnTVF4UUlpQkNBQUtBSUlJQUVvQWdnZ0FrRUlhaUFDS0FJRUlBSW9BZ0FRK1I0YUlBTWdCQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUVJUUFnQVVFUWFpUUFJQUpCSUdva0FDQUFDNmNCQVFOL0lBRXRBQVFFUUNBQUVLZ0JJQUFnQVNnQ0FDSUNLUUlBTndJRUlBQWdBaWdDQ0RZQ0RDQUJLQUlBSWdCQkFEWUNDQ0FBUWdBM0FnQVBDd0pBSUFBb0Fnd2dBU2dDQUNJQktBSUVTUVJBSUFBUXFBRWdBQ0FCS0FJRUVOd2VEQUVMSUFCQkFEWUNDQXNnQUNBQktBSUVJZ00yQWdnRFFDQUNJQU5IQkVBZ0FrRUNkQ0lFSUFBb0FnUnFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3dTNBUUVCZnlNQVFkQUJheUlHSkFBZ0JpQUNOZ0xBQVNBR0lBRTJBc2dCSUFZZ0JEWUN2QUVnQUNBR0tBTElBU0FHS0FMQUFTQURJQVlvQXJ3QkVQb2VJZ0JCd1A4Uk5nSUVJQUJCOVA4Uk5nSUFJQUFnQlRZQ0tDQUFRZUQvRVRZQ0FDQUZSUVJBSUFaQkNHcEIvYU1GUVIxQkFDQUdRYWdCYWhBZElnRVFGeUlDUVJocVFaR2FDQkFPR2lBQ0VCZ2dBUkFlQ3lBRkVGY2dBQ2dDQ0VFQlFRQkJvTUVJUWYyakJVRWVFRXNnQmtIUUFXb2tBQ0FBQ3lrQUlBQWdBU0FDSUFNZ0JFRzBwUVZCbzhNSVFRRkJrSjhJUWFEL0VVRzAveEZCZ1A4UkVPa1NDK2tCQVFGL0l3QkJ3QUZySWdZa0FDQUdJQUkyQXJBQklBWWdBVFlDdUFFZ0FDQUdLQUs0QVNBR0tBS3dBU0FERU0wSElnQkJ3UDRSTmdJRUlBQkI5UDRSTmdJQUlBQWdCVFlDS0NBQUlBUTJBaVFnQUVIZy9oRTJBZ0FnQkVVRVFDQUdRYW1qQlVFZFFRQWdCa0dnQVdvUUhTSUJFQmNpQWtFWWFrSGJ2QWdRRGhvZ0FoQVlJQUVRSGlBQUtBSW9JUVVMSUFVRWZ5QUZCU0FHUWFtakJVRWVRUUFnQmtHZ0FXb1FIU0lCRUJjaUFrRVlha0dvclFnUURob2dBaEFZSUFFUUhpQUFLQUlvQ3hCWElBQW9BZ2hCQVVFQVFadkZDRUdwb3dWQkh4QkxJQVpCd0FGcUpBQWdBQXNiQUNBQUlBRWdBaUFESUFSQm1QNFJRYkQrRVVINC9SRVFpQVlMQ3dBZ0FFR1k0d0lRRkJvTEd3QWdBQ0FCSUFJZ0F5QUVRYmo5RVVIUS9SRkJtUDBSRUlnR0N4c0FJQUFnQVNBQ0lBTWdCRUdvL0JGQndQd1JRWWo4RVJDSUJnc2JBQ0FBSUFFZ0FpQURJQVJCNFBzUlFmajdFVUhBK3hFUWlBWUxzQVFDQVg4QmZpTUFRY0FCYXlJSUpBQWdDQ0FDTmdLd0FTQUlJQUUyQXJnQklBQWdDQ2dDdUFFZ0NDZ0NzQUVnQXhEbEJDSUFRYmp3RHpZQ0JDQUFRZXp3RHpZQ0FDQUFJQVkyQWl3Z0FDQUZOZ0lvSUFBZ0JEWUNKQ0FBUWRqd0R6WUNBQ0FBUVRCcUlBY1F1Z2tnQUNnQ0pDSUJCSDhnQVFVZ0NFSEJsUVZCSTBFQUlBaEJvQUZxRUIwaUFSQVhJZ0pCR0dwQjdyQUlFQTRhSUFJUUdDQUJFQjRnQUNnQ0pBc1FWeUFBS0FJSVFRRkJBRUhheUFoQndaVUZRU1FRU3lBQUtBSW9JZ0VFZnlBQkJTQUlRY0dWQlVFbFFRQWdDRUdnQVdvUUhTSUJFQmNpQWtFWWFrSDZtUWdRRGhvZ0FoQVlJQUVRSGlBQUtBSW9DeEJYSUFBb0FnaEJBVUVBUWVMQUNFSEJsUVZCSmhCTEFrQWdBQ2dDTENJQlJRMEFJQUVvQWdnZ0FDZ0NDRUVCUVFCQjNjRUlRY0dWQlVFb0VFc2dBQ2dDTENJQkJIOENmMEVBSUFFb0FnUWlBU2tERUVLQXdJQ01nSUFJZ3lJSklBbENBWDJEVUEwQUdrRUJJQUZCdVBBUEVFZ05BQm9nQVVHNDh3OFFTQXNGUVFBTERRQWdDRUhCbFFWQktVRUFJQWhCb0FGcUVCMGlBUkFYSWdKQkdHcEI0ZUFJRUE0YUlBSVFHQ0FCRUI0TElBQW9BalFpQWlBQUtBSTRRUUowYWlFQklBaEJHR29oQXdOQUlBRWdBa2NFUUNBQ0tBSUFJZ1JGQkVBZ0NFSEJsUVZCTEVFQUlBaEJvQUZxRUIwaUJSQVhJUVlnQTBHWnB3Z1FEaG9nQmhBWUlBVVFIZ3NnQkJCWElBQW9BZ2hCQVVFQVFkM0VDRUhCbFFWQkxSQkxJQUpCQkdvaEFnd0JDd3NnQ0VIQUFXb2tBQ0FBQzNBQkFYOGpBRUVRYXlJRkpBQWdCU0FDTmdJQUlBVWdBVFlDQ0NBQUlBVW9BZ2dnQlNnQ0FDQURFUE1HSWdCQitQb1JOZ0lFSUFCQnNQc1JOZ0lBSUFBZ0JEWUNKQ0FBUVpqN0VUWUNBQ0FFRUZjZ0FDZ0NDRUVBUVFCQmo5QUlRWTJ3QlVFZUVFc2dCVUVRYWlRQUlBQUxHd0FnQUNBQklBSWdBeUFFUWRENkVVSG8raEZCc1BvUkVJZ0dDNmNCQVFKL0l3QkJJR3NpQ0NRQUlBZ2dBallDRUNBSUlBRTJBaGdnQ0NBRk5nSUlJQWdnQkRZQ0JDQUlJQVkyQWdBakFFRVFheUlCSkFBZ0NDZ0NBQ0VDSUFnb0FnZ2hCQ0FJS0FJRUlRVWdDQ2dDRUNFR0lBZ29BaGdoQ1NBQklBY3BBZ0EzQXdnZ0FDQUpJQVlnQXlBRklBUWdBaUFCUVFocUVOY0pJZ0JCNlBrUk5nSUVJQUJCb1BvUk5nSUFJQUZCRUdva0FDQUFRWWo2RVRZQ0FDQUlRU0JxSkFBZ0FBc1ZBQ0FBSUFGQm1QQVBRYXp3RDBINDd3OFF6Z3dMSlFBZ0FDQUJJQUlnQXlBRUlBVWdCaUFIUWFLTkJVSEErUkZCMlBrUlFhRDVFUkRJRWdzU0FDQUFRY3dBUWJYL0EwRjhRUU1ReWdFTHRRRUJBbjhqQUVFZ2F5SUtKQUFnQ2lBQ05nSVFJQW9nQVRZQ0dDQUtJQVUyQWdnZ0NpQUVOZ0lFSUFvZ0NEWUNBQ01BUVJCcklnRWtBQ0FLS0FJQUlRSWdDaWdDQ0NFRUlBb29BZ1FoQlNBS0tBSVFJUWdnQ2lnQ0dDRUxJQUVnQ1NrQ0FEY0RDQ0FBSUFzZ0NDQURJQVVnQkNBQ0lBRkJDR29RMXdraUFFSFkrQkUyQWdRZ0FFR1ErUkUyQWdBZ0FVRVFhaVFBSUFBZ0J6WUNTQ0FBSUFZMkFrUWdBRUg0K0JFMkFnQWdDa0VnYWlRQUlBQUxuZ0VCQVg4akFFSFFBV3NpQmlRQUlBWWdBallDd0FFZ0JpQUJOZ0xJQVNBR0lBUTJBcndCSUFBZ0JpZ0N5QUVnQmlnQ3dBRWdBeUFHS0FLOEFSRGdHU0lBUVpqNEVUWUNCQ0FBUWN6NEVUWUNBQ0FBSUFVMkFpZ2dBRUc0K0JFMkFnQWdCVVVFUUNBR1FRaHFRZGVaQlVFWlFRQWdCa0dvQVdvUUhTSUJFQmNpQWtFWWFrSGJ2QWdRRGhvZ0FoQVlJQUVRSGdzZ0JrSFFBV29rQUNBQUN4TUFJQUJCMUFCcUVGNGdBRUVvYWhBaklBQUxDd0FnQUVFc2FoQmVJQUFMRlFBZ0FDQUJRZGp2RDBIczd3OUJ1TzhQRU00TUN6VUFJQUFnQVNnQ0FEWUNBQ0FBUVFScUlBRkJCR29RZ3dnYUlBQkJQR29nQVVFOGFoQ0xFU0FBSUFFb0FvZ0JOZ0tJQVNBQUN4a0FJQUF0QUZnRVFDQUFRUWhxRUpVQklBQkJBRG9BV0FzTG93RUJCSDhqQUVFUWF5SUNKQUFnQUNnQ1NDSUJJQUFvQWt3aUEwRURkR29oQkFOL0lBRWdCRVlFZnlBQ0lBQW9BZ0EyQWdnZ0FrRUlha0VFRU04SElRRWdBRUVFYWhENUFpRUFJQUpCRUdva0FDQUJJQUZCQkhaeklBTkJrckdvK2dkcUlnRkJBblpCa3JHbytnZHphaUFCY3lJQklBQWdBVUVDZGtHU3NhajZCM05xYzBHVHBBWnpCU0FESUFFZ0FVRUVhaEMwRVNFRElBRkJDR29oQVF3QkN3c0xtZ0VDQW44QmZpQUJJQUJCaUN4cUtBSUFTd1JBSUFBb0FvQXNJUU1nQUNFQ0lBQWdBVUhBQUU4RWYwRi9JQUd0UXRnQWZpSUVweUFFUWlDSXB4c1FGU0VDSUFFRlFjQUFDellDaUN3Z0FDQUNOZ0tBTEVFQUlRRURRQ0FBS0FLRUxDQUJUUVJBSUFBZ0F4QTJCU0FCUWRnQWJDSUNJQUFvQW9Bc2FpQUNJQU5xSWdJUTR3WWFJQUpCQ0dvUWxRRWdBVUVCYWlFQkRBRUxDd3NMYVFFRGZ5TUFRUkJySWdRa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdNMkFnd2dCQ0FETmdJSUlBQkJqQUZxSWdNUXZ3RWlCU0FBS0FJSUlBUW9BZ2dnQVNBQ0tBSUFFSm9mR2lBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JTRUFJQVJCRUdva0FDQUFDeWdBSUFBb0FnQkJDR3BCem9zTVFmVHREQ0FBS0FJRUxRQUFHeEFPR2lBQUtBSUVRUUE2QUFBTG93VUJCSDhqQUVFUWF5SUVKQUFDUUFKQUFrQUNRQ0FDRGdNREFBRUNDeUFESUFBUTVRSWFEQUlMSUFSQkFEWUNDQ0FFSUFSQkNHbzJBZ1FnQXlBQlFZd0JheUlCSUFBZ0FTZ0NpQUVnQUNnQ2lBRkpJZ0liRU9VQ0lRTWdCQ0FFS0FJSVFRRnFOZ0lJSUFOQmpBRnFJQUFnQVNBQ0d4RGxBaG9nQkVFQU5nSUFJQVFRdkFrTUFRc2dBa0VJVEFSQUlBQWdBVVlOQVNBRVFRQTJBZ2dnQkNBRVFRaHFOZ0lFSUFNZ0FCRGxBaUVDSUFRZ0JDZ0NDRUVCYWpZQ0NDQUNJUU1EUUFKQUFrQWdBU0FBUVl3QmFpSUZSd1JBSUFOQmpBRnFJUVlnQUNnQ2xBSWdBeWdDaUFGSkJFQWdCaUFERU9VQ0dpQUVJQVFvQWdoQkFXbzJBZ2dEUUNBQ0lBTkdCRUFnQWlFRERBUUxJQUFvQXBRQ0lBTkJCR3NvQWdCUERRTWdBeUFEUVl3QmF5SURFT1FDR2d3QUN3QUxJQVlnQlJEbEFob2dCQ0FFS0FJSVFRRnFOZ0lJREFJTElBUkJBRFlDQUNBRUVMd0pEQVFMSUFNZ0JSRGtBaG9MSUFVaEFDQUdJUU1NQUFzQUN5QUFJQUFnQWtFQmRpSUdRWXdCYkNJSGFpSUZJQVlnQXlBR0VMMEpJQVVnQVNBQ0lBWnJJZ0lnQXlBSGFpQUNFTDBKSUFSQkFEWUNDQ0FFSUFSQkNHbzJBZ1FnQlNFQ0EwQUNRQ0FBSUFWR0JFQURRQ0FCSUFKR0RRSWdBeUFDRU9VQ0lRQWdCQ0FFS0FJSVFRRnFOZ0lJSUFKQmpBRnFJUUlnQUVHTUFXb2hBd3dBQ3dBTElBRWdBa1lFUUFOQUlBQWdCVVlOQWlBRElBQVE1UUloQVNBRUlBUW9BZ2hCQVdvMkFnZ2dBRUdNQVdvaEFDQUJRWXdCYWlFRERBQUxBQVVDUUNBQ0tBS0lBU0FBS0FLSUFVa0VRQ0FESUFJUTVRSWFJQVFnQkNnQ0NFRUJhallDQ0NBQ1FZd0JhaUVDREFFTElBTWdBQkRsQWhvZ0JDQUVLQUlJUVFGcU5nSUlJQUJCakFGcUlRQUxJQU5CakFGcUlRTU1BZ3NBQ3dzZ0JFRUFOZ0lBSUFRUXZBa0xJQVJCRUdva0FBdHVBUUovQWtBZ0FDZ0NHQ0FCS0FJRVNRUkFJQUFRWGlBQUlBRW9BZ1FRbVJFTUFRc2dBRUVBTmdJVUN5QUFJQUVvQWdRaUFqWUNGQU5BSUFJZ0Ewc0VRQ0FEUVFOMElnSWdBQ2dDRUdvZ0FTZ0NBQ0FDYWlrQ0FEY0NBQ0FEUVFGcUlRTWdBQ2dDRkNFQ0RBRUxDd3M5QVFGL0l3QkJFR3NpQWlRQUlBQWdBVWNFUUNBQ0lBRkJRR3MyQWdnZ0FpQUJLQUpBSUFGSE9nQU1JQUFnQWtFSWFoQ2VId3NnQWtFUWFpUUFDMGNCQVg4Z0FTMEFCQVJBSUFBUVhpQUFJQUVvQWdBaUFpa0NBRGNDRUNBQUlBSW9BZ2cyQWhnZ0FTZ0NBQ0lBUVFBMkFnZ2dBRUlBTndJQUR3c2dBQ0FCS0FJQUVKUWZDNWNHQWdWL0FYNGpBRUh3QUdzaUJDUUFJQVJDZ0lDQWdDQTNBMmdnQkNBRVFkUUFhallDWkNBRVFvQ0FnSURBQURjQ1RDQUVJQVJCT0dvMkFrZ2dBVUVJYWlJRklBTVFEaG9DUUNBQ0xRQUJSUTBBSUFJcEF4Z2lDVUlJZzFBRVFDQUNMUUFBSUFsQ0JJTlFjZzBCQ3lBRlFkcnBCaEFPR2lBRklBSW9BZ1FvQWdBUURob2dCVUdMNWdZUURob0xJQVZCbWY4SUVBNGFJQUJCQ0dvaEIwRUFJUU1EUUNBQ0xRQUFJQU5OQkVBZ0JVSHY5Z2dRRGhvZ0FpZ0NFQVJBSUFWQjFkc0xFQTRhSUFBb0FnUWhBeUFFSUFJb0FoQTJBaVFnQkVFQk5nSWdJQVFnQWpZQ0hDQUVJQWMyQWhnZ0JDQUROZ0lRSUFRZ0JFRTRhallDRkNBRVFTaHFJZ01nQkVFUWFoRHVCQ0FGSUFNUUVob2dBeEFQR2dzZ0JFRUJPZ0FQSUFRZ0FUWUNBQ0FFSUFSQkQybzJBZ1JCQUNFREEwQUNRQ0FDTFFBQklBTk5CRUJCQUNFREEwQWdBeUFDTFFBQ1R3MENJQUlvQWdnZ0EwRURkR29pQVMwQUJFSC9BVWNFUUNBRUVKSWZJQVVnQVNnQ0FCQU9HaUFGUWZ2ZkNSQU9HaUFBS0FJRUlRWWdCQ0FCUVFScU5nSWtJQVJCQVRZQ0lDQUVJQUkyQWh3Z0JDQUhOZ0lZSUFRZ0JqWUNFQ0FFSUFSQk9HbzJBaFFnQkVFb2FpSUJJQVJCRUdvUTdRUWdCU0FCRUJJYUlBRVFEeG9MSUFOQkFXb2hBd3dBQ3dBTElBSW9BZ1FnQTBFRGRHb2lBUzBBQkVIL0FVY0VRQ0FFRUpJZklBVWdBU2dDQUJBT0dpQUZRZnZmQ1JBT0dpQUFLQUlFSVFZZ0JDQUJRUVJxTmdJa0lBUkJBVFlDSUNBRUlBSTJBaHdnQkNBSE5nSVlJQVFnQmpZQ0VDQUVJQVJCT0dvMkFoUWdCRUVvYWlJQklBUkJFR29RN2dRZ0JTQUJFQklhSUFFUUR4b0xJQU5CQVdvaEF3d0JDd3NnQkVFNGFoQ3dCQ0FFUWZBQWFpUUFEd3NnQWlnQ0RDQURRUU4wYWlFR0lBTUVRQ0FGUWZUdERCQU9HZ3NnQmlnQ0FDSUlRWDlIQkVBZ0JTQUlFS1FiRUE0YUlBVkI3YlVNRUE0YUN5QUFLQUlFSVFnZ0JDQUdLQUlFTmdJa0lBUWdBallDSENBRUlBYzJBaGdnQkNBSU5nSVFJQVFnQkVFNGFqWUNGQ0FFUVFFMkFpQWdCRUVvYWlJR0lBUkJFR29RN2dRZ0JTQUdFQklhSUFOQkFXb2hBeUFHRUE4YURBQUxBQXRZQVFKL0l3QkJFR3NpQWlRQUlBQWdBUkNlRENJQVFvQ0FnSUFnTndJd0lBQWdBRUVjYWlJRE5nSXNJQUlnQVVFc2FqWUNDQ0FDSUFFb0Fpd2dBVUVjYWtjNkFBd2dBeUFDUVFocUVKWWZJQUpCRUdva0FDQUFDeG9BSUFBZ0FFSG9DR29vQWdBaUFFRUJkRUVDSUFBYkVKd2ZDeWNBSUFBZ0FTQUNJQU1nQkVIK2tBVkJtOFVJUWFpdENFR1k3dzlCck84UFFmanVEeERKREF1V0FRRUVmeU1BUVJCcklnRWtBQ0FBUWVRSWFpZ0NBQ0VDSUFBb0F1QUlJUVFnQVVFQU5nSUlBa0FnQWtFQVRBUkFRUUFoQUF3QkN5QUNJUUFEUUFKQUlBQkJBRXdFUUVFQUlRQkJBQ0VEREFFTElBQkJqQUZzRUJVaUF3MEFJQUJCQVhZaEFBd0JDd3NnQVVFSWFpQURFR3dMSUFRZ0JDQUNRWXdCYkdvZ0FpQURJQUFRdlFrZ0FVRUlha0VBRUd3Z0FVRVFhaVFBQzVZQkFnSi9BWDRnQVNBQVFlZ0lhaWdDQUVzRVFDQUFLQUxnQ0NFRElBQWhBaUFBSUFGQkNFOEVmMEYvSUFHdFFvd0JmaUlFcHlBRVFpQ0lweHNRRlNFQ0lBRUZRUWdMTmdMb0NDQUFJQUkyQXVBSVFRQWhBUU5BSUFBb0F1UUlJQUZOQkVBZ0FDQURFRFlGSUFGQmpBRnNJZ0lnQUNnQzRBaHFJQUlnQTJvaUFoRGxBaG9nQWhDdkJSb2dBVUVCYWlFQkRBRUxDd3NMYndFQ2Z3SkFJQUFvQWtnZ0FTZ0NCRWtFUUNBQUVKVUJJQUFnQVNnQ0JCQ3ZFUXdCQ3lBQVFRQTJBa1FMSUFBZ0FTZ0NCQ0lDTmdKRUEwQWdBaUFEU3dSQUlBTkJBM1FpQWlBQUtBSkFhaUFCS0FJQUlBSnFLUUlBTndJQUlBTkJBV29oQXlBQUtBSkVJUUlNQVFzTEMwZ0JBWDhnQVMwQUJBUkFJQUFRbFFFZ0FDQUJLQUlBSWdJcEFnQTNBa0FnQUNBQ0tBSUlOZ0pJSUFFb0FnQWlBRUVBTmdJSUlBQkNBRGNDQUE4TElBQWdBU2dDQUJDZEh3c2JBQ0FBSUFFcEFnQTNBZ0FnQUVFSWFpQUJRUWhxRUl3UklBQUxad0VEZndKQUlBQW9BaWdnQVNnQ0JFa0VRQ0FBRUNNZ0FDQUJLQUlFRUw0SkRBRUxJQUJCQURZQ0pBc2dBQ0FCS0FJRUlnTTJBaVFEUUNBQ0lBTkhCRUFnQWtFQ2RDSUVJQUFvQWlCcUlBRW9BZ0FnQkdvb0FnQTJBZ0FnQWtFQmFpRUNEQUVMQ3d0Z0FDQUJJQUlRK2dNRVFDQUJFUGtERHdzZ0FTQUNFUGdEQkVBZ0FSRDNBdzhMSUFJUTZRSUVRQ0FCRU9nQ0R3c2dBaERVQXdSQUlBRVEwd01QQ3lBQ0VPY0NCRUFnQVJEbUFnOExRUUFoQUNBQ0VOSURCSDhnQVJEUkF3VkJBQXNMcHdFQkJIOGdBQkFjSXdCQk1Hc2lCQ1FBSUFSQkNHb2dBU2dDQUNBQ0tBSUFJQU10QUFBUTVRY2lCU2dDQ0NFR0lBUWdCVFlDQkNBRUlBWTJBZ0FDUUNBQVFSQnFJZ1ZCSEdvaUJ5QUVFTDBCSWdBRVFDQUFLQUlNSVFBTUFRc2dCU0FGRUtZRUlBRW9BZ0FnQWlnQ0FDQURMUUFBRU9VSElnQVFLQ0FGSUFVb0FoaEJBV28yQWhnZ0JDQUFOZ0lFSUFRZ0JqWUNBQ0FISUFRUXZBRUxJQVJCTUdva0FDQUFDN0VCQVFSL0lBQVFIQ01BUVRCcklnVWtBQ0FGUVFocUlBRW9BZ0FnQWlnQ0FDQURLQUlBSUFRb0FnQVF1Z3NpQmlnQ0NDRUhJQVVnQmpZQ0JDQUZJQWMyQWdBQ1FDQUFRUkJxSWdaQkhHb2lDQ0FGRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQmlBR0VLWUVJQUVvQWdBZ0FpZ0NBQ0FES0FJQUlBUW9BZ0FRdWdzaUFCQW9JQVlnQmlnQ0dFRUJhallDR0NBRklBQTJBZ1FnQlNBSE5nSUFJQWdnQlJDOEFRc2dCVUV3YWlRQUlBQUxDd0FnQUVFb2FoQWpJQUFMb3dFQkJIOGdBQkFjSXdCQk1Hc2lBeVFBSUFOQkVHb2dBU2dDQUNBQ0tBSUFFTUFMSWdRb0FnZ2hCU0FESUFRMkFnd2dBeUFGTmdJSUFrQWdBRUVRYWlJRVFSeHFJZ1lnQTBFSWFoQzlBU0lBQkVBZ0FDZ0NEQ0VBREFFTElBUWdCQkNsQkNBQktBSUFJQUlvQWdBUXdBc2lBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQURJQUEyQWd3Z0F5QUZOZ0lJSUFZZ0EwRUlhaEM4QVFzZ0EwRXdhaVFBSUFBTHl3RUJCSDhnQUJBY0l3QkJRR29pQnlRQUlBZEJFR29nQVNnQ0FDQUNLQUlBSUFNb0FnQWdCQ2dDQUNBRktBSUFJQVlvQWdBUXlRc2lDQ2dDQ0NFSklBY2dDRFlDRENBSElBazJBZ2dDUUNBQVFSQnFJZ2hCSEdvaUNpQUhRUWhxRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQ0NBSUVQTUZJQUVvQWdBZ0FpZ0NBQ0FES0FJQUlBUW9BZ0FnQlNnQ0FDQUdLQUlBRU1rTElnQVFLQ0FJSUFnb0FoaEJBV28yQWhnZ0J5QUFOZ0lNSUFjZ0NUWUNDQ0FLSUFkQkNHb1F2QUVMSUFkQlFHc2tBQ0FBQzU0Q0FnTitBbjhqQUVFd2F5SUFKQUFDUUNBQUFuNGdBaWdDQkNJSFFmQ0ZFRVlFUUVLQWdJQ0FJQXdCQ3lBSFFmQ3FFa2NOQVNBQ05RSWtJUU1nQWlnQ0hEVUNIQ0VGSUFJb0FoZ2hBa0tBZ0lDQUVBc2lCQ0FEaENJRE53TVlJQUFnQXpjRENDQUFRU0JxSUFFZ0FFRUlhaEN2QkNBQUtRTWdJZ05DZ0lDQWdIQ0RRb0NBZ0lBUVVnMEFJQUFnQkNBRmhDSUVOd01RSUFBZ0JEY0RBQ0FBUVNCcUlBRWdBQkN2QkNBQUtRTWdJZ1JDZ0lDQWdIQ0RRb0NBZ0lBUVVnMEFJQUVnQWhDckFpSUNSUTBBSUFBZ0FqWUNJQ0FCS0FJQUlRSWdBQ0FFUGdJb0lBQWdBaUFBUVNCcUlBQkJLR29pQWhDZkFqWUNMQ0FCS0FJQUlRRWdBQ0FEUGdJb0lBRWdBRUVzYWlBQ0VNQUpJUVlMSUFCQk1Hb2tBQ0FHQzNrQkEzOGpBRUd3QVdzaUFTUUFJQUZCb0FGcUlnTWdBaER0QkNBQlFaQUJhaUlFSUFJUTdnUWdBUkJKSWdWQkNHb2lBa0dkaWdVUURob2dBaUFERUJJYUlBSkIydWtHRUE0YUlBSWdCQkFTR2lBQ1FZdm1CaEFPR2lBQUlBVkJER29RUWlBRkVGRWdCQkFQR2lBREVBOGFJQUZCc0FGcUpBQUx1Z0VDQVg0QmZ5TUFRU0JySWdBa0FBSkFBa0FnQWlnQ0JFSHdoUkJHQkVCQ2dJQ0FnQ0FoQXd3QkN5QUNFTElDSWdKRkJFQU1BZ3NnQWpVQ0hFS0FnSUNBRUlRaEF5QUNLQUlZSVFJTElBQWdBemNEQ0NBQUlBTTNBd0FnQUVFUWFpQUJJQUFRcndRZ0FDa0RFQ0lEUW9DQWdJQndnMEtBZ0lDQUVGSU5BQ0FCSUFJUXF3SWlBa1VOQUNBQUlBSTJBaEFnQVNnQ0FDRUJJQUFnQXo0Q0hDQUJJQUJCRUdvZ0FFRWNhaENmQWlFRUN5QUFRU0JxSkFBZ0JBc1BBQ0FBSUFFZ0FrR3k2QVlRamdJTER3QWdBQ0FCSUFKQkJFRUVFUFVFQ3c4QUlBQWdBU0FDUWREb0JoQ09BZ3NQQUNBQUlBRWdBa0VFUVFNUTlRUUxEd0FnQUNBQklBSkIrdWdHRUk0Q0N3OEFJQUFnQVNBQ1FRUkJBaEQxQkFzUEFDQUFJQUVnQWtHNjZBWVFqZ0lMRHdBZ0FDQUJJQUpCQTBFRUVQVUVDdzhBSUFBZ0FTQUNRZGpvQmhDT0Fnc1BBQ0FBSUFFZ0FrRURRUU1ROVFRTER3QWdBQ0FCSUFKQmd1a0dFSTRDQ3c4QUlBQWdBU0FDUVFOQkFoRDFCQXNQQUNBQUlBRWdBa0hDNkFZUWpnSUxEd0FnQUNBQklBSkJBa0VFRVBVRUN3OEFJQUFnQVNBQ1FlRG9CaENPQWd0WEFRRi9Jd0JCSUdzaUFpUUFJQUlnQUNnQ0lEWUNHQ0FDSUFBcEFoZzNBeEFnQWlBQUtRSVFOd01JSUFJZ0FTQUFLQUlrRU04RE5nSUVJQUVvQWdBZ0FrRUlhaUFDUVFScUVMTURJUUFnQWtFZ2FpUUFJQUFMRHdBZ0FDQUJJQUpCQWtFREVQVUVDdzhBSUFBZ0FTQUNRWXJwQmhDT0Fnc1BBQ0FBSUFFZ0FrRUNRUUlROVFRTER3QWdBQ0FCSUFKQnl1Z0dFSTRDQ3cwQUlBQWdBU0FDUVFRUXl3d0xEd0FnQUNBQklBSkI2T2dHRUk0Q0N3MEFJQUFnQVNBQ1FRTVF5d3dMRHdBZ0FDQUJJQUpCa3VrR0VJNENDdzBBSUFBZ0FTQUNRUUlReXd3TEN3QWdBRUhkOEFZUUZCb0xGZ0JCQUNFQUlBSVEwZ01FZnlBQkVORURCVUVBQ3dzTEFDQUFRZXorQmhBVUdnc1dBRUVBSVFBZ0FoRG5BZ1IvSUFFUTVnSUZRUUFMQ3dzQUlBQkI4UHdHRUJRYUN4WUFRUUFoQUNBQ0VOUURCSDhnQVJEVEF3VkJBQXNMQ3dBZ0FFRzYvUVlRRkJvTEZnQkJBQ0VBSUFJUTZRSUVmeUFCRU9nQ0JVRUFDd3NZQUVFQUlRQWdBU0FDRVBnREJIOGdBUkQzQXdWQkFBc0xHQUJCQUNFQUlBRWdBaEQ2QXdSL0lBRVErUU1GUVFBTEN3c0FJQUJCaS93Q0VCUWFDeFlBUVFBaEFDQUNFSVVHQkg4Z0FSQ0VCZ1ZCQUFzTEd3QWdBQ0FDS0FJTUtBSUlJQUVvQWdSQkEzUnFLQUlBRUJRYUM3RUNBZ04vQVg0Z0FTZ0NCQ0VFSUFJb0FnUWhBU0FBQW40Z0F5Z0NCRUVDUmdSQVFnQWdBU2dDTUNBRVRRMEJHaUFCS0FJc0lBUkJBM1JxS1FJQURBRUxJQU1wQWdBaEJ5QUVJQUVvQWpBaUEwOEVRQ0FFUVFGcUlnSWdBU2dDTkVzRVFDQUJLQUlzSVFBZ0FVRWNhaUlGSUFJUW1SRkJBQ0VEQTM4Z0FTZ0NNQ0FEVFFSL0lBVWdBQkEySUFFb0FqQUZJQU5CQTNRaUJpQUJLQUlzYWlBQUlBWnFLUUlBTndJQUlBTkJBV29oQXd3QkN3c2hBd3NnQXlBQ0lBSWdBMGtiSVFBRFFDQUFJQU5HUlFSQUlBRW9BaXdnQTBFRGRHcENBRGNDQUNBRFFRRnFJUU1NQVFzTElBRWdBallDTUFzZ0I2Y2hBZ0pBSUFFb0Fpd2dCRUVEZEdvaUFTZ0NCRUVCUndSQUlBRWdBallDQUNBQlFRRTJBZ1FNQVF0Q0FDQUJLQUlBSUFKSERRRWFDeUFIQ3pjQ0FBc2JBQ0FBSUFJb0Fnd29BZ1FnQVNnQ0JFRURkR29vQWdBUUZCb0xSUUFnQUNnQ0JDRUFJQUVvQWdRaEFRSi9JQUlvQWdSQjhJVVFSZ1JBUVFBZ0FTZ0NGQ0FBVFEwQkdpQUJLQUlRSUFCQkFuUnFLQUlBRHdzZ0FTQUFJQUlRbWhFTEMvVVpBUVovSXdCQm9BUnJJZ2NrQUNBSElBTTJBcEFDSUFjZ0FrRUJhaUlJUVJKTEJIOUJyT0lHQlNBSVFRSjBRZUMrRW1vb0FnQUxJZ2cyQW93Q0lBZENnSUNBZ0NBM0E0QUNJQWNnQjBIc0FXbzJBdndCSUFkQ2dJQ0FnTUFBTndMa0FTQUhJQWRCMEFGcU5nTGdBU0FEQkVBZ0IwSFFBV3BCQUNBREVKb1JHaUFIS0FLTUFpRUlDeUFFS0FJQUlRTWdCMEVBT2dCMElBY2dBellDY0NBSFFUaHFJQWRCMEFGcUVJTUlJUWxCR0JBVklnTkI2UFlSTmdJQUlBTWdCallDRkNBRElBRTJBaEFnQXlBRU5nSUlJQU1nQjBHTUFtbzJBZ1FnQXlBSFFaQUNhallDRENBSElBTTJBckFDSUFkQitBQnFJQUVnQWtFRGRFSFE5UkZxSUFnZ0IwSHdBR29nQlNBSklBZEJvQUpxSWdJUXd3a2dBaEFXSUFrUXNBUUNRQ0FIS0FKNElnSkZCRUFnQUVJQU53SUFJQUJCQURZQ0NBd0JDeUFDTFFBWVFRUnhCRUFnQjBLQWdJQ0FnQUUzQWl3Z0J5QUhRUWhxSWdJMkFpZ2dBaUFIS0FMRUFSQTVJQWNvQXNBQklnTWdCeWdDeEFGQkEzUnFJUUlEUUNBQ0lBTkdCRUFnQjBFQlFRTWdCeWdDZUNJQ0tBSWtRUUZ4SUFJb0FpQnlHellDQkNBSFFRQTJBcFFDSUFGQjROQUFhaUVGSUFGQnhPTUFhaWdDQUNBQlFjempBR29vQWdBaUFrR1dBV3hCbGdGcVFlUUFia2tFUUNBRklBSkJBWFJCQW1vUW9nd0xJQWRCbUFScUlBVWdCMEg0QUdvaUFoRGxCaUFISUFkQmxBSnFOZ0tjQWlBSElBSTJBcGdDSUFFb0FzUmpJZ2xCQVdzaENpQUJRY0RqQUdvb0FnQWhCaUFIS0FLY0JDRUlJQWNvQXBnRUlRSkJBQ0VEQWtBQ2Z3SkFBMEFnQXlBSlJnMEJJQVlnQWtIa0FHeHFJZ1F0QUZoRkJFQWdCMEdnQW1vaUNTQUhRWmdDYWhDR0F5QUVJQWtROFFRaEJDQUhRYWdDYWhDVkFTQUdJQUpCNUFCc2FpSUNJQU0yQW1BZ0FpQUlOZ0pjSUFFZ0FTZ0N6R05CQVdvMkFzeGpJQUZCME9NQWFpSUNJQUlvQWdCQkFXbzJBZ0FnQkVIVUFHb01Bd3NnQkNBSUlBZEIrQUJxRVBBRVJRUkFJQU1nQkNnQ1lFc0VRQ0FIUWNBRGFpSUdJQWRCbUFKcUVJWURJQWRCb0FKcUlBWVE3d1FpQmlBRE5nSmdJQVlnQ0RZQ1hDQUhRY2dEYWhDVkFTQUdJQVFRK3dNZ0JpQUdLQUpnUVFGcU5nSmdJQVVnQWtFQmFpQUJLQUxFWTNBZ0JoRGtCaUFCSUFFb0FzeGpRUUZxTmdMTVl5QUJRZERqQUdvaUFpQUNLQUlBUVFGcU5nSUFJQVlRNmdJZ0JFSFVBR29NQkFzZ0FrRUJha0VBSUFJZ0NrY2JJUUlnQTBFQmFpRUREQUVMQ3lBRVFkUUFhaUVEREFJTElBZEJvQUpxUVlhMUEwSHJBMEVPSUFkQndBTnFFQjBpQWhBWElnTkJHR3BCbGpVUURob2dBeEFZSUFJUUhrRUFDeUVESUFGQjBPTUFhaUlDS0FJQUlRUWdCeUFCS0FJRUlBZEIrQUJxUVFSeUlBZEJDR29nQjBFRWFoQ2hEQ0lHTmdLVUFpQUNLQUlBSUFSR0JFQWdBeUFHTmdJQURBRUxJQUVvQXNSaklBRW9Bc3hqSWdKQmxnRnNRWllCYWtIa0FHNUpCRUFnQlNBQ1FRRjBRUUpxRUtJTUN5QUhRWmdFYWlBRklBZEIrQUJxSWdJUTVRWWdCeUFIUVpRQ2FqWUNuQUlnQnlBQ05nS1lBaUFCS0FMRVl5SUpRUUZySVFvZ0FTZ0N3R01oQmlBSEtBS2NCQ0VJSUFjb0FwZ0VJUUpCQUNFREEwQWdBeUFKUndSQUlBWWdBa0hrQUd4cUlnUXRBRmhGQkVBZ0IwR2dBbW9pQlNBSFFaZ0NhaENHQXlBRUlBVVE4UVFoQkNBSFFhZ0NhaENWQVNBR0lBSkI1QUJzYWlJQ0lBTTJBbUFnQWlBSU5nSmNJQUVnQVNnQ3pHTkJBV28yQXN4aklBRWdBU2dDMEdOQkFXbzJBdEJqSUFSQjFBQnFJUU1NQXdzZ0JDQUlJQWRCK0FCcUVQQUVCRUFnQjBHZ0Ftb2dCMEdZQW1vUWhnTUNRQ0FFTFFCWUJFQWdCQ0FIUWFBQ2FoRENDUXdCQ3lBRUlBZEJvQUpxRU9ZR0N5QUhRYWdDYWhDVkFTQUJJQUVvQXRCalFRRnFOZ0xRWXlBRVFkUUFhaUVEREFNTElBTWdCQ2dDWUVzRVFDQUhRY0FEYWlJR0lBZEJtQUpxRUlZRElBZEJvQUpxSUFZUTd3UWlCaUFETmdKZ0lBWWdDRFlDWENBSFFjZ0RhaENWQVNBR0lBUVErd01nQmlBR0tBSmdRUUZxTmdKZ0lBVWdBa0VCYWlBQktBTEVZM0FnQmhEa0JpQUJJQUVvQXN4alFRRnFOZ0xNWXlBQklBRW9BdEJqUVFGcU5nTFFZeUFHRU9vQ0lBUkIxQUJxSVFNTUF3VWdBa0VCYWtFQUlBSWdDa2NiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQWRCb0FKcVFZYTFBMEhyQTBFT0lBZEJ3QU5xRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBRVFIa0VBSVFNTElBQWdBeWdDQURZQ0FDQUFJQWNvQW5ncEF5QTNBZ1FnQjBFSWFoQWpEQU1GSUFFb0FnUWhCQ0FIUVFBMkFzQURJQWNnQnlnQ0xEWUNtQVFnQjBFQU5nS1lBaUFIUVFBMkFwUUNJQWNnQkNBSFFjQURhaUFIUVpnRWFpQURJQWRCbUFKcUlBZEJsQUpxSUFOQkJHb1Fvd3cyQXFBQ0lBTkJDR29oQXlBSFFRaHFJQWRCb0FKcUVDUU1BUXNBQ3dBTElBZEJBRFlDbUFJZ0FVSFU0d0JxSVFVZ0FVRzQ5Z0JxS0FJQUlBRkJ3UFlBYWlnQ0FDSUNRWllCYkVHV0FXcEI1QUJ1U1FSQUlBVWdBa0VCZEVFQ2FoQ2dEQXNnQjBFSWFpQUZJQWRCK0FCcUlnSVE1UVlnQnlBSFFaZ0NhallDbkFRZ0J5QUNOZ0tZQkNBQktBSzRkaUlKUVFGcklRb2dBVUcwOWdCcUtBSUFJUVlnQnlnQ0RDRUlJQWNvQWdnaEFrRUFJUU1DUUFKL0FrQURRQ0FESUFsR0RRRWdCaUFDUWVRQWJHb2lCQzBBV0VVRVFDQUhRYUFDYWlJSklBZEJtQVJxRUlZRElBUWdDUkR4QkNFRUlBZEJxQUpxRUpVQklBWWdBa0hrQUd4cUlnSWdBellDWUNBQ0lBZzJBbHdnQVNBQktBTEFka0VCYWpZQ3dIWWdBVUhFOWdCcUlnSWdBaWdDQUVFQmFqWUNBQ0FFUWRRQWFnd0RDeUFFSUFnZ0IwSDRBR29ROEFSRkJFQWdBeUFFS0FKZ1N3UkFJQWRCd0FOcUlnWWdCMEdZQkdvUWhnTWdCMEdnQW1vZ0JoRHZCQ0lHSUFNMkFtQWdCaUFJTmdKY0lBZEJ5QU5xRUpVQklBWWdCQkQ3QXlBR0lBWW9BbUJCQVdvMkFtQWdCU0FDUVFGcUlBRW9BcmgyY0NBR0VPUUdJQUVnQVNnQ3dIWkJBV28yQXNCMklBRkJ4UFlBYWlJQ0lBSW9BZ0JCQVdvMkFnQWdCaERxQWlBRVFkUUFhZ3dFQ3lBQ1FRRnFRUUFnQWlBS1J4c2hBaUFEUVFGcUlRTU1BUXNMSUFSQjFBQnFJUU1NQWdzZ0IwR2dBbXBCaHJVRFFlc0RRUTRnQjBIQUEyb1FIU0lDRUJjaUEwRVlha0dXTlJBT0dpQURFQmdnQWhBZVFRQUxJUU1nQVVIRTlnQnFJZ29vQWdBaERDQUJLQUlFSVFRZ0IwRUFOZ0xBQXlBSFFRQTJBZ2dnQnlnQ3dBRWhBaUFIUVFBMkFwZ0VJQWRCQURZQ21BSWdCeUFFSUFkQndBTnFJQWRCQ0dvZ0FpQUhRWmdFYWlBSFFaZ0NhaUFDUVFScUVLTU1OZ0tnQWlBSFFRRkJBeUFIS0FKNElnSW9BaVJCQVhFZ0FpZ0NJSEliTmdMQUF5QUJLQUlFSWdJUUhDQUNRYWdCYWlJSUVQd0hJUWtnQjBINEFHcEJCSElvQWdBaEFpQUhLQUtnQWlFR0lBY29Bc0FESVFzakFFRXdheUlFSkFBZ0JFRUJOZ0lVSUFRZ0N6WUNLQ0FFSUFJMkFpd2dCQ0FFUVF4cU5nSVFJQVFnQkNrREVEY0RBQ0FFSUFZMkFnd2dCRUVZYWlBRUVKY0NJUVlnQkVFQk9nQUxJd0JCRUdzaUFpUUFJQVFvQWl3aEN5QUNJQVpCQkdvMkFnZ2dBaUFHS0FJRUlBWkhPZ0FNSUFrZ0N5QUNRUWhxSUFRb0FpZ2dCQzBBQ3hEL0R5SUpRY2llRWpZQ0JDQUpRZmllRWpZQ0FDQUNRUkJxSkFBZ0NTRUNJQVlRcUFFZ0FrSG9uaEkyQWdBZ0JFRXdhaVFBSUFnZ0FoQW9JQWdnQ0NnQ0dFRUJhallDR0NBSElBSTJBcGdDSUFvb0FnQWdERVlFUUNBRElBSTJBZ0FNQVFzZ0FTZ0N1SFlnQVNnQ3dIWWlBa0dXQVd4QmxnRnFRZVFBYmtrRVFDQUZJQUpCQVhSQkFtb1FvQXdMSUFkQkNHb2dCU0FIUWZnQWFpSUNFT1VHSUFjZ0IwR1lBbW8yQXB3RUlBY2dBallDbUFRZ0FTZ0N1SFlpQ1VFQmF5RUtJQUVvQXJSMklRWWdCeWdDRENFSUlBY29BZ2doQWtFQUlRTURRQ0FESUFsSEJFQWdCaUFDUWVRQWJHb2lCQzBBV0VVRVFDQUhRYUFDYWlJRklBZEJtQVJxRUlZRElBUWdCUkR4QkNFRUlBZEJxQUpxRUpVQklBWWdBa0hrQUd4cUlnSWdBellDWUNBQ0lBZzJBbHdnQVNBQktBTEFka0VCYWpZQ3dIWWdBU0FCS0FMRWRrRUJhallDeEhZZ0JFSFVBR29oQXd3REN5QUVJQWdnQjBINEFHb1E4QVFFUUNBSFFhQUNhaUFIUVpnRWFoQ0dBd0pBSUFRdEFGZ0VRQ0FFSUFkQm9BSnFFTUlKREFFTElBUWdCMEdnQW1vUTVnWUxJQWRCcUFKcUVKVUJJQUVnQVNnQ3hIWkJBV28yQXNSMklBUkIxQUJxSVFNTUF3c2dBeUFFS0FKZ1N3UkFJQWRCd0FOcUlnWWdCMEdZQkdvUWhnTWdCMEdnQW1vZ0JoRHZCQ0lHSUFNMkFtQWdCaUFJTmdKY0lBZEJ5QU5xRUpVQklBWWdCQkQ3QXlBR0lBWW9BbUJCQVdvMkFtQWdCU0FDUVFGcUlBRW9BcmgyY0NBR0VPUUdJQUVnQVNnQ3dIWkJBV28yQXNCMklBRWdBU2dDeEhaQkFXbzJBc1IySUFZUTZnSWdCRUhVQUdvaEF3d0RCU0FDUVFGcVFRQWdBaUFLUnhzaEFpQURRUUZxSVFNTUFnc0FDd3NnQjBHZ0FtcEJoclVEUWVzRFFRNGdCMEhBQTJvUUhTSUJFQmNpQWtFWWFrR1dOUkFPR2lBQ0VCZ2dBUkFlUVFBaEF3c2dBQ0FES0FJQU5nSUFJQUFnQnlnQ2VDa0RJRGNDQkFzZ0IwR0FBV29RbFFFZ0IwSFFBV29Rc0FRZ0IwR2dCR29rQUF2ckJRRUVmeU1BUWVBQmF5SUlKQUJCa084TUlRbEJDQ0VLQWtBQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUNRUUZyRGhJQUFRSVRBd1FGQmdjSUNRb0xEQTBPRHhBUkMwSDMzQXRCbmU4TUlBY2JJUWxCQmlFS0RCSUxRZWJiQzBIbHVna2dCeHNoQ1VFSElRb01FUXRCODlzTFFmemZDaUFIR3lFSlFRVWhDZ3dRQzBIWXVna2hDVUVKSVFvTUR3dEJtOXdMSVFsQkNpRUtEQTRMUVpIZEN5RUpRUXNoQ2d3TkMwR3YzUXNoQ1VFTUlRb01EQXRCMnRzTElRbEJEU0VLREFzTFFiYmNDeUVKUVE0aENnd0tDMEdPM0FzaENVRVBJUW9NQ1F0QnFOd0xRYUxkQ3lBSEd5RUpRUkFoQ2d3SUMwR0EzQXRCd2RzTElBY2JJUWxCRVNFS0RBY0xRZDNjQzBIMzdRd2dCeHNNQlF0QjBOd0xRZlhtRENBSEd5RUpRUUVoQ2d3RkMwSHEzQXRCaCs0TUlBY2JJUWxCQWlFS0RBUUxRY1BjQzBINnR3d2dCeHNoQ1VFRElRb01Bd3RCaE4wTFFhbnZEQ0FIR3lFSlFRUWhDZ3dDQzBHczRnWUxJUWxCQUNFS0N5QUlRUUkyQXNRQklBZ2dCRFlDYkNBSUlBTTJBbWdnQ0NBSVFlZ0FhaUlMTmdMQUFTQUlJQWdwQThBQk53TUlRUUFoQXlBSVFjZ0JhaUFJUVFocUVMVUNJUVFnQ0VFQU9nQmtJQWdnQkVFSWFqWUNZQ0FJUVNocUlnZEJBRUVzRUhrYUlBaENnSUNBZ0NBM0ExZ2dDQ0FJUWNRQWFqWUNWQ0FJUVVCclFRUTJBZ0FnQ0NBSE5nSTRRUlFRRlNJQ0lBazJBZ1FnQWtHbzlSRTJBZ0FnQWlBR05nSVFJQUlnQVRZQ0RDQUNJQVEyQWdnZ0NDQUNOZ0lnSUFzZ0FTQUtRUU4wUVpEMEVXb2dDU0FJUWVBQWFpQUZJQWNnQ0VFUWFpSUJFTU1KSUFFUUZpQUhFTEFFQWtBZ0NDZ0NhQ0lDUlFSQUlBQkJBRFlDQUVFQUlRSkJBQ0VKUVFBaEFRd0JDeUFBSUFnb0FtdzJBZ0FnQWlnQ0pDRUJJQUlvQWlBaENTQUlLQUt3QVNJREtBSUlJUUlnQXlnQ0FDRURDeUFBSUFrMkFnd2dBQ0FDTmdJSUlBQWdBellDQkNBQUlBRTJBaEFnQ0VId0FHb1FsUUVnQkJDcUFTQUlRZUFCYWlRQUM0UURBUVYvSXdCQjBBRnJJZ1lrQUFKL0lBSkJBV3NpQWtFRFN3UkFRYXppQmlFSFFRQU1BUXNnQWtFQ2RDSUNRWVQzRVdvb0FnQWhCeUFDUWJqL0RHb29BZ0FMSVFrZ0JrRUJOZ0s4QVNBR0lBTTJBbUFnQmlBR1FlQUFhaUlLTmdLNEFTQUdJQVlwQTdnQk53TUFJQVpCd0FGcUlBWVFsd0loQXlBR1FRQTZBRndnQmlBRFFRUnFOZ0pZSUFaQklHb2lDRUVBUVN3UWVSb2dCa0tBZ0lDQUlEY0RVQ0FHSUFaQlBHbzJBa3dnQmtFRU5nSTRJQVlnQ0RZQ01FRVVFQlVpQWlBSE5nSUVJQUpCOFBNUk5nSUFJQUlnQlRZQ0VDQUNJQUUyQWd3Z0FpQUROZ0lJSUFZZ0FqWUNHQ0FLSUFFZ0NVRURkRUhROHhGcUlBY2dCa0hZQUdvZ0JDQUlJQVpCQ0dvaUFSRERDU0FCRUJZZ0NCQ3dCQ0FBQW44Z0JpZ0NZQ0lCUlFSQVFRQWhBaUFBUVFBMkFnQkJBQ0VIUVFBTUFRc2dBQ0FHS0FKa05nSUFJQUVvQWlRaEJ5QUdLQUtvQVNnQ0FDRUNJQUVvQWlBTE5nSUlJQUFnQWpZQ0JDQUFJQWMyQWd3Z0JrSG9BR29RbFFFZ0F4Q29BU0FHUWRBQmFpUUFDNTBRQWd0L0FYNGpBRUd3QTJzaUJpUUFJQVlnQWpZQ25BRWdCaUFDRU1rRElnZzJBcGdCSUFNb0FnQWhCeUFHUVFBNkFEd2dCaUFITmdJNElBWkJBRUVzRUhraUJrS0FnSUNBSURjRE1DQUdJQVpCSEdvMkFpd2dCa0VFTmdJWUlBWWdCallDRUVFVUVCVWlCMEdvOHhFMkFnQWdCeUFGTmdJUUlBY2dBVFlDRENBSElBTTJBZ2dnQnlBR1FaZ0JhallDQkNBR0lBYzJBcmdCSUFaQlFHc2dBU0FDUVFOMFFmQ1VFR29nQ0NBR1FUaHFJQVFnQmlBR1FhZ0JhaUlDRU1NSklBSVFGaUFHRUxBRUFrQWdCaWdDUUVVRVFDQUFRZ0EzQWdBTUFRc2dCa0VBTmdLa0FTQUJRY3dGYWlFRklBRkIwTkFBYWlnQ0FDQUJRZGpRQUdvb0FnQWlBa0dXQVd4QmxnRnFRZVFBYmtrRVFDQUZJQUpCQVhSQkFtb1Fwd3dMSUFaQnFBTnFJQVVnQmtGQWF5SUNFS1lNSUFZZ0JrR2tBV28yQXFRRElBWWdBallDb0FNZ0FTZ0MwRkFpQ1VFQmF5RUtJQUZCek5BQWFpZ0NBQ0VISUFZb0Fxd0RJUWdnQmlnQ3FBTWhBa0VBSVFNQ1FBSi9Ba0FEUUNBRElBbEdEUUVnQnlBQ1FlUUFiR29pQkMwQVdFVUVRQ0FHUWFnQmFpSUpJQVpCb0FOcUVJWURJQVFnQ1JEeEJDRUVJQVpCc0FGcUVKVUJJQWNnQWtIa0FHeHFJZ0lnQXpZQ1lDQUNJQWcyQWx3Z0FTQUJLQUxZVUVFQmFqWUMyRkFnQVVIYzBBQnFJZ0lnQWlnQ0FFRUJhallDQUNBRVFkUUFhZ3dEQ3lBRUlBZ2dCa0ZBYXhEd0JFVUVRQ0FESUFRb0FtQkxCRUFnQmtISUFtb2lCeUFHUWFBRGFoQ0dBeUFHUWFnQmFpQUhFTzhFSWdjZ0F6WUNZQ0FISUFnMkFsd2dCa0hRQW1vUWxRRWdCeUFFRVBzRElBY2dCeWdDWUVFQmFqWUNZQ0FGSUFKQkFXb2dBU2dDMEZCd0lBY1FwQXdnQVNBQktBTFlVRUVCYWpZQzJGQWdBVUhjMEFCcUlnSWdBaWdDQUVFQmFqWUNBQ0FIRU9vQ0lBUkIxQUJxREFRTElBSkJBV3BCQUNBQ0lBcEhHeUVDSUFOQkFXb2hBd3dCQ3dzZ0JFSFVBR29oQWd3Q0N5QUdRYWdCYWtHR3RRTkI2d05CRGlBR1FjZ0NhaEFkSWdJUUZ5SURRUmhxUVpZMUVBNGFJQU1RR0NBQ0VCNUJBQXNoQWlBQlFkelFBR29vQWdBaERTQUdRb0NBZ0lDQUFUY0N6QUVnQmlBR1FhZ0JhaUlETmdMSUFTQURJQVlvQW93QkVEa2dCaWdDaUFFaUF5QUdLQUtNQVVFRGRHb2hCQU5BSUFNZ0JFY0VRQ0FCS0FJRUlRY2dCa0VBTmdLb0F5QUdJQVlvQXN3Qk5nS2dBeUFHUVFBMkFxUUJJQVpCQURZQ29BRWdCaUFISUFaQnFBTnFJQVpCb0FOcUlBTWdCa0drQVdvZ0JrR2dBV29nQTBFRWFoQ2pERFlDeUFJZ0EwRUlhaUVESUFaQnFBRnFJQVpCeUFKcUVDUU1BUXNMSUFZZ0JpZ0NRQ0lES1FNWUloRkNCSWhDQjRNM0E4Z0NJQVpCQVVFRElBTW9BaUFnQXlnQ0pFRUJjWEliTmdLb0F5QUJLQUlFSVFNZ0JpQVJweUlFUVFoMlFRRnhPZ0NnQXlBR0lBUkJnQUZ4UVFkMk9nQ2tBU0FERUJ3Z0JrRkFhMEVFY2lFTElBWkJxQUZxSVFnakFFRVFheUlKSkFBZ0EwR29BV29pQnlnQ0JDRUVBa0FnQXlnQ3NBRkJCMnBCZUhFaUNrR3Avd05yUWY3L2Uwc0VRQ0FFSVFNTUFRc2dCMEdRZ0FSQkVCRFpBaUlETmdJRVFRQWhDaUFEUVFBMkFvQ0FCQ0FFQkVBZ0JDQUROZ0tBZ0FRTUFRc2dCeUFETmdJQUN5QUhJQXBCMkFCcU5nSUlJQXNvQWdBaEN5QUdLQUtjQVNFT0lBa2dDRUVnYWpZQ0NDQUpJQWdvQWlBZ0NFYzZBQXdnQmlnQ3FBTWhEQ0FHS1FQSUFpRVJJQVl0QUtBRElROGdCaTBBcEFFaEVDTUFRUkJySWdRa0FDQUVJQXcyQWdnZ0JDQUxOZ0lNSUFRZ0VEb0FCeU1BUVJCcklnc2tBQ0FFS0FJTUlRd2dDeUFKS1FJSU53TUlJQU1nQ21vZ0RDQUxRUWhxSUFRb0FnZ2dCQzBBQnhEL0R5SURRZmlQRWpZQ0JDQURRYWlRRWpZQ0FDQUxRUkJxSkFBZ0F5QVBPZ0JRSUFNZ0VUY0RTQ0FESUE0MkFrQWdBMEdZa0JJMkFnQWdCRUVRYWlRQUlBY2dBeEFvSUFjZ0J5Z0NHRUVCYWpZQ0dDQUpRUkJxSkFBZ0NCQWpJQVlnQXpZQ3BBRWdEU0FCS0FMY1VFWUVRQ0FDSUFNMkFnQU1BUXNnQVNnQzBGQWdBU2dDMkZBaUFrR1dBV3hCbGdGcVFlUUFia2tFUUNBRklBSkJBWFJCQW1vUXB3d0xJQVpCcUFOcUlBVWdCa0ZBYXlJQ0VLWU1JQVlnQmtHa0FXbzJBcVFESUFZZ0FqWUNvQU1nQVNnQzBGQWlDVUVCYXlFS0lBRW9Bc3hRSVFjZ0JpZ0NyQU1oQ0NBR0tBS29BeUVDUVFBaEF3TkFJQU1nQ1VjRVFDQUhJQUpCNUFCc2FpSUVMUUJZUlFSQUlBWkJxQUZxSWdVZ0JrR2dBMm9RaGdNZ0JDQUZFUEVFSVFRZ0JrR3dBV29RbFFFZ0J5QUNRZVFBYkdvaUFpQUROZ0pnSUFJZ0NEWUNYQ0FCSUFFb0F0aFFRUUZxTmdMWVVDQUJJQUVvQXR4UVFRRnFOZ0xjVUNBRVFkUUFhaUVDREFNTElBUWdDQ0FHUVVCckVQQUVCRUFnQmtHb0FXb2dCa0dnQTJvUWhnTUNRQ0FFTFFCWUJFQWdCQ0FHUWFnQmFoRENDUXdCQ3lBRUlBWkJxQUZxRU9ZR0N5QUdRYkFCYWhDVkFTQUJJQUVvQXR4UVFRRnFOZ0xjVUNBRVFkUUFhaUVDREFNTElBTWdCQ2dDWUVzRVFDQUdRY2dDYWlJSElBWkJvQU5xRUlZRElBWkJxQUZxSUFjUTd3UWlCeUFETmdKZ0lBY2dDRFlDWENBR1FkQUNhaENWQVNBSElBUVErd01nQnlBSEtBSmdRUUZxTmdKZ0lBVWdBa0VCYWlBQktBTFFVSEFnQnhDa0RDQUJJQUVvQXRoUVFRRnFOZ0xZVUNBQklBRW9BdHhRUVFGcU5nTGNVQ0FIRU9vQ0lBUkIxQUJxSVFJTUF3VWdBa0VCYWtFQUlBSWdDa2NiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVpCcUFGcVFZYTFBMEhyQTBFT0lBWkJ5QUpxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBRVFIa0VBSVFJTElBQWdBaWdDQURZQ0FDQUdLQUpBSWdFb0FpUWhDU0FBSUFFb0FpQTJBZ1FMSUFBZ0NUWUNDQ0FHUWNnQWFoQ1ZBU0FHUWJBRGFpUUFDd2tBSUFBUW5SRVFId3VGQ1FFSGZ5TUFRVUJxSWdja0FDQUhJQUFvQWlBMkFqZ2dCeUFBS1FJWU53TXdJQWNnQUNrQ0VEY0RLQ0FIUVFocUlnWkNnSUNBZ01BQU53SVVJQVlnQmpZQ0VDTUFRVEJySWdJa0FDQUdJQUFvQWpnUTFnSWdBa0VBTmdJb0lBSWdBRUVrYWpZQ0pDQUNJQUZCeUNCcU5nSWdJQUlnQVVIY2dBRnFLQUlBUVFGck5nSXNBa0FnQWtFZ2FoQzFBUVJBSUFKQklHb1FXaUlFS0FMWUFTSURJQVFvQXR3QlFSaHNhaUVFQTBBZ0F5QUVSZ1JBSUFBb0FqUWlCQ0FBS0FJNFFRSjBhaUVJQTBBZ0JDQUlSZ1JBSUFKQklHb1FXaUlFS0FMSUFpSURJQVFvQXN3Q1FSaHNhaUVFQTBBZ0F5QUVSZzBHSUFJZ0FTQURFR1lRZ3dZMkFoQWdCaUFDUVJCcUVIRWdBMEVZYWlFRERBQUxBQXNnQWlBQ1FTQnFFRm9pQTBIWUFtbzJBaEFnQkNnQ0FDRUZJQUpCQURZQ0dDQUNJQVUyQWhRZ0FpQURRWndKYWlnQ0FFRUJhellDSEFKQUlBSkJFR29RdEFGRkRRQWdBa0VRYWhDc0FTSUZLQUpnSWdNZ0JTZ0NaRUVZYkdvaEJRTkFJQU1nQlVZTkFTQUNJQUVnQXhCbUVJTUdOZ0lNSUFZZ0FrRU1haEJ4SUFOQkdHb2hBd3dBQ3dBTElBSkJJR29RV2lFRElBSWdCQ2dDQURZQ0VDQURJQUpCRUdvUXhnTkZCRUFnQWlBQklBUW9BZ0FRbGhFMkFoQWdCaUFDUVJCcUVIRUxJQUlnQWtFZ2FoQmFJZ05Cb0FscU5nSVFJQVFvQWdBaEJTQUNRUUEyQWhnZ0FpQUZOZ0lVSUFJZ0EwSGtEMm9vQWdCQkFXczJBaHdDUUNBQ1FSQnFFTFFCUlEwQUlBSkJFR29RckFFaUJTZ0NZQ0lESUFVb0FtUkJHR3hxSVFVRFFDQURJQVZHRFFFZ0FpQUJJQU1RWmhDREJqWUNEQ0FHSUFKQkRHb1FjU0FEUVJocUlRTU1BQXNBQ3lBRVFRUnFJUVFNQUFzQUJTQUNJQUVnQXhCbUVJTUdOZ0lRSUFZZ0FrRVFhaEJ4SUFOQkdHb2hBd3dCQ3dBTEFBc2dBQ2dDTkNJRUlBQW9BamhCQW5ScUlRZ0RRQ0FFSUFoR0JFQWdBa0VnYWhDMUFVVU5BaUFDUVNCcUVGb2lCQ2dDeUFJaUF5QUVLQUxNQWtFWWJHb2hCQU5BSUFNZ0JFWU5BeUFDSUFFZ0F4Qm1FSU1HTmdJUUlBWWdBa0VRYWhCeElBTkJHR29oQXd3QUN3QUZJQUlnQVNBRUtBSUFFSllSTmdJUUlBWWdBa0VRYWhCeEFrQWdBa0VnYWhDMUFVVU5BQ0FDSUFKQklHb1FXaUlEUWFBSmFqWUNFQ0FFS0FJQUlRVWdBa0VBTmdJWUlBSWdCVFlDRkNBQ0lBTkI1QTlxS0FJQVFRRnJOZ0ljSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJRktBSmdJZ01nQlNnQ1pFRVliR29oQlFOQUlBTWdCVVlOQVNBQ0lBRWdBeEJtRUlNR05nSU1JQVlnQWtFTWFoQnhJQU5CR0dvaEF3d0FDd0FMSUFSQkJHb2hCQXdCQ3dBTEFBc2dBa0V3YWlRQUlBY2dBU0FBS0FKQUVKNEpOZ0lFSUFFb0FnQWhBQ01BUVJCcklnSWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnRTJBZ3dnQWlBQk5nSUlJd0JCRUdzaUFTUUFJQUJCakFGcUlnTVF0d1FoQkNBQ0tBSUlJUWdnQUNnQ0NDRUFJQUVnQmtFUWFqWUNDQ0FCSUFZb0FoQWdCa2M2QUF3Z0JDQUFJQWdnQjBFb2FpQUJRUWhxSUFjb0FnUVFyaEVhSUFNZ0JCQW9JQU1nQXlnQ0dFRUJhallDR0NBQlFSQnFKQUFnQkNFQUlBSkJFR29rQUNBR0VGNGdCMEZBYXlRQUlBQUxEQUFnQUJDb0VSb2dBQkFmQ3dnQUlBRXJBd0MyQ3dnQUlBRXBBd0MwQ3djQVF3QUFBQUFMQndBZ0FDZ0NCQXNWQUNBQlFaQ0ZFRFlDQUNBQklBQW9BZ1EyQWdRTEN3QWdBRUdRaFJBUTF3RUxHUUFnQUNnQ0JDZ0NSQ0FCS0FJQVFRSjBhaWdDQUNnQ0tBc1ZBQ0FCUWV5RUVEWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSHNoQkFRMXdFTFF3RUNmeU1BUVJCcklnSWtBQ0FDSUFBb0FnZ2lBeUFCSUFNb0FnQW9BaGdSQVFBMkFnd2dBU2dDRENBQ1FReHFJQUJCREdvUXFoRWhBQ0FDUVJCcUpBQWdBQXNaQVFGK0lBRTFBZ3doQWlBQVFRRTZBQWdnQUNBQ053TUFDME1CQW44akFFRVFheUlDSkFBZ0FpQUFLQUlJSWdNZ0FTQURLQUlBS0FJWUVRRUFOZ0lNSUFFb0Fnd2dBa0VNYWlBQVFReHFFS3NSSVFBZ0FrRVFhaVFBSUFBTEdRRUJmaUFCTVFBTUlRSWdBRUVCT2dBSUlBQWdBamNEQUF0REFRSi9Jd0JCRUdzaUFpUUFJQUlnQUNnQ0NDSURJQUVnQXlnQ0FDZ0NHQkVCQURZQ0RDQUJLQUlNSUFKQkRHb2dBRUVNYWhDdEVTRUFJQUpCRUdva0FDQUFDMHNCQVg4akFFRVFheUlCSkFBZ0FTQUFMUUFNT2dBUElBQkJDR29RK1FKQmtyR28rZ2RxUVpPa0JuTWlBRUVDZGtHVytLbjZCM01nQVMwQUQyb2dBSE1oQUNBQlFSQnFKQUFnQUFzUUFDQUFLQUlBR2lBQkt3TUF0aEJHQ3hBQUlBQW9BZ0FhSUFFcEF3QzBFRVlMQ1FCREFBQUFBQkJHQ3lNQkFYd2dBU3NEQUNJQ21VUUFBQUFBQUFEZ1FXTUVRQ0FDcWc4TFFZQ0FnSUI0Q3djQUlBRXJBd0FMQ0FBZ0FTa0RBTGtMQ3dCRUFBQUFBQUFBQUFBTHNBRUJBMzhqQUVFZ2F5SUNKQUFnQWlBQUtBSWdOZ0lZSUFJZ0FDa0NHRGNERUNBQ0lBQXBBaEEzQXdnZ0FpQUJJQUFvQWlRUWx3RTJBZ1FnQVNnQ0FDRUFJd0JCRUdzaUFTUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FCSUFNMkFnZ2dBRUdNQVdvaUF4Qy9BU0lFSUFBb0FnZ2dBU2dDQ0NBQ1FRaHFJQUlvQWdRUXJ3d2FJQU1nQkJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FFSVFBZ0FVRVFhaVFBSUFKQklHb2tBQ0FBQzBNQkFuOGpBRUVRYXlJQ0pBQWdBaUFBS0FJSUlnTWdBU0FES0FJQUtBSVlFUUVBTmdJTUlBRW9BZ3dnQWtFTWFpQUFRUXhxRUxNUklRQWdBa0VRYWlRQUlBQUxHUUVCZmlBQk5BSU1JUUlnQUVFQk9nQUlJQUFnQWpjREFBdERBUUovSXdCQkVHc2lBaVFBSUFJZ0FDZ0NDQ0lESUFFZ0F5Z0NBQ2dDR0JFQkFEWUNEQ0FCS0FJTUlBSkJER29nQUVFTWFoQzJFU0VBSUFKQkVHb2tBQ0FBQ3hrQkFYNGdBU2tERUNFQ0lBQkJBam9BQ0NBQUlBSTNBd0FMUXdFQ2Z5TUFRUkJySWdJa0FDQUNJQUFvQWdnaUF5QUJJQU1vQWdBb0FoZ1JBUUEyQWd3Z0FTZ0NEQ0FDUVF4cUlBQkJFR29RdVJFaEFDQUNRUkJxSkFBZ0FBdXNBUUlHZndGOEl3QkJFR3NpQVNRQUlBRWdBQ3NERURrRENDQUFRUWhxRVBrQ1FaS3hxUG9IYWtHVHBBWnpJZ0pCQW5aQmx2aXArZ2R6SVFZakFFRVFheUlESkFBakFFRVFheUlFSkFBZ0FTc0RDQ0lIUkFBQUFBQUFBQUFBWWdSL0l3QkJFR3NpQUNRQUlBQWdCemtEQ0NBQVFRaHFRUWdRendjaEJTQUFRUkJxSkFBZ0JRVkJBQXNoQUNBRVFSQnFKQUFnQTBFUWFpUUFJQVlnQUdvZ0FuTWhBQ0FCUVJCcUpBQWdBQXNSQUNBQVFTUkIzZjhEUVh4QkF4REtBUXNaQVFGK0lBRXBBeEFoQWlBQVFRRTZBQWdnQUNBQ053TUFDME1CQW44akFFRVFheUlDSkFBZ0FpQUFLQUlJSWdNZ0FTQURLQUlBS0FJWUVRRUFOZ0lNSUFFb0Fnd2dBa0VNYWlBQVFSQnFFTDBSSVFBZ0FrRVFhaVFBSUFBTFRnRUJmeU1BUVJCcklnRWtBQ0FCSUFBcEF4QTNBd2dnQUVFSWFoRDVBa0dTc2FqNkIycEJrNlFHY3lJQVFRSjJRWmI0cWZvSGN5QUJRUWhxRUxNRWFpQUFjeUVBSUFGQkVHb2tBQ0FBQzBNQkFYOGpBRUVnYXlJQ0pBQWdBaUFBS0FJZ05nSVlJQUlnQUNrQ0dEY0RFQ0FDSUFBcEFoQTNBd2dnQVNnQ0FDQUNRUWhxRUxzUklRQWdBa0VnYWlRQUlBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkMvRVF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVMNFJJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUVCQkg4akFFRXdheUlGSkFBZ0FoQmNJUWdnQXlnQ0FDZ0NBQ2dDQUJCWklRTWdCVUtBZ0lDQXdBQTNBaVFnQlNBRlFSQnFJZ2MyQWlBZ0IwRUVFTllDSUFWQklHb2hCd0pBQTBBZ0JrRUVSd1JBSUFBZ0FTQUVJQWdnQXlBR1FRTjBka0gvQVhHelF3QUFmME9WRUdzZ0FCQXdEUUlnQlVFUWFpQUFFQm9RY1NBR1FRRnFJUVlNQVFzTElBRW9BZ0FoQVNBRklBYzJBZ2dnQlNBRktBSWdJQVZCRUdwSE9nQU1JQUVnQWlBRlFRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVJCcUVGNGdCVUV3YWlRQUM5d0JBUVIvSXdCQk1Hc2lCU1FBSUFJUVhDRUlJQU1vQWdBb0FnQW9BZ0FRV1NFRElBVkNnSUNBZ01BQU53SWtJQVVnQlVFUWFpSUhOZ0lnSUFkQkJCRFdBaUFGUVNCcUlRY0NRQU5BSUFaQkJFY0VRQ0FBSUFFZ0JDQUlJQU1nQmtFRGRIWkJHSFJCR0hXeVF3QUEva0tWUXdBQWdMK1hFR3NnQUJBd0RRSWdCVUVRYWlBQUVCb1FjU0FHUVFGcUlRWU1BUXNMSUFFb0FnQWhBU0FGSUFjMkFnZ2dCU0FGS0FJZ0lBVkJFR3BIT2dBTUlBRWdBaUFGUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRUkJxRUY0Z0JVRXdhaVFBQzlNQkFRUi9Jd0JCSUdzaUJTUUFJQUlRWENFSUlBTW9BZ0FvQWdBb0FnQVFXU0VESUFWQ2dJQ0FnQ0EzQWhRZ0JTQUZRUWhxSWdjMkFoQWdCMEVDRUxjSElBVkJFR29oQndKQUEwQWdCa0VDUndSQUlBQWdBU0FFSUFnZ0F5QUdRUVIwZGtILy93TnhzME1BLzM5SGxSQnJJQUFRTUEwQ0lBVkJDR29nQUJBYUVMSURJQVpCQVdvaEJnd0JDd3NnQVNnQ0FDRUJJQVVnQnpZQ0FDQUZJQVVvQWhBZ0JVRUlha2M2QUFRZ0FTQUNJQVVRT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFWQkNHb1FxZ0VnQlVFZ2FpUUFDOW9CQVFSL0l3QkJJR3NpQlNRQUlBSVFYQ0VJSUFNb0FnQW9BZ0FvQWdBUVdTRURJQVZDZ0lDQWdDQTNBaFFnQlNBRlFRaHFJZ2MyQWhBZ0IwRUNFTGNISUFWQkVHb2hCd0pBQTBBZ0JrRUNSd1JBSUFBZ0FTQUVJQWdnQXlBR1FRUjBka0VRZEVFUWRiSkRBUDcvUnBWREFBQ0F2NWNRYXlBQUVEQU5BaUFGUVFocUlBQVFHaEN5QXlBR1FRRnFJUVlNQVFzTElBRW9BZ0FoQVNBRklBYzJBZ0FnQlNBRktBSVFJQVZCQ0dwSE9nQUVJQUVnQWlBRkVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRUWhxRUtvQklBVkJJR29rQUF1M0JBSUlmd0Y5SXdCQjBBQnJJZ1VrQUNBQ0VGd2hDU0FES0FJQUtBSUFLQUlBRUZraENpQUZRb0NBZ0lBZ053SkVJQVVnQlVFNGFpSUROZ0pBSUFOQkFoQzNCeUFGUVVCcklRdEJBQ0VEQWtBQ1FBTkFJQU5CQWtZTkFTQUZBbjhnQ2lBRFFRUjBka0gvL3dOeElnWkJnUGdCUmdSOVF3QUFnSDhGQW4wQ2ZVTUFBSUQvSUFaQmdQZ0RSZzBBR2tNQUFBQ0FRd0FBQUFBZ0JrR0FnQUp4SWd3YklBWkIvLzhCY1VVTkFCb2dCa0gvQjNFaEJ5QUdRWUQ0QVhFaUNFR0ErQUZHQkVCREFBREFmeUFIRFFJYUN5QUlRUXAyUWZBQWFpRUdJQWdFZnlBR0JRTkFJQWRCZ0FoeFJRUkFJQVpCQVdzaEJpQUhRUUYwSVFjTUFRc0xJQWRCLzNkeElRY2dCa0VCYWd0QkYzUWdERUVRZEhJZ0IwRU5kSEsrQ3hCR0N3c2lEVVAvLzM5L1hnUkFJQVZCQURZQ01FRUNEQUVMSUExRC8vOS8vMTBFUUNBRlFRRTJBakJCQWd3QkN5QUZJQTA0QWpCQkFRczZBRFFDUUNBRlFUQnFFREFFUUNBRlFRTTJBaHdnQlVIcy9nWTJBaGdnQlNBRktRTVlOd01JSUFWQklHb2lCeUFOSUFWQkNHb1EvZ01nQVNBSElBUVFYU0FIRUE4YUlBRXRBQVJGRFFFZ0JVS0FnSUNBRURjRE1Bc2dBQ0FCSUFRZ0NTQUZRVEJxRUJvcUFnQVFheUFBRURBTkF5QUZRVGhxSUFBUUdoQ3lBeUFEUVFGcUlRTU1BUXNMSUFCQkFqb0FCQXdCQ3lBQktBSUFJUUVnQlNBTE5nSVFJQVVnQlNnQ1FDQUZRVGhxUnpvQUZDQUJJQUlnQlVFUWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUU0YWhDcUFTQUZRZEFBYWlRQUM5UUNBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQVExZ2tNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBRWdCVUVVYWhEREVTQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUMvRUNBUWQvSXdCQjRBQnJJZ1FrQUNBREtBSUFLQUlBS0FJQUlnWWdCaWdDQUNnQ0NCRUFBQ0lES0FJRUlRVWdBaWdDQkNFSElBUkNnSUNBZ01BQU53SlVJQU5CQUNBRlFmQ3FFa1liSVFrZ0FrRUFJQWRCOEtvU1Joc2hCeUFFSUFSQlFHczJBbEFnQkVFd2FpRUtJQVJCMEFCcUlRdEJBQ0VGQTBBZ0NTZ0NJQ0FGU3dSQUlBUkNnSUNBZ01BQU53STBJQVFnQkVFZ2FqWUNNRUVBSVFNRFFDQUpLQUlrSUFOTkJFQWdCeWdDSENFRElBRW9BZ0FoQ0NBRVFRQTZBQlFnQkNBS05nSVFJQVFnQ0NBRElBUkJFR29RT2pZQ0hDQUZRUUZxSVFVZ0JFRkFheUFFUVJ4cUVIRWdCRUVnYWhCZURBTUZJQVFnQmlBRElBWW9BZ0FvQWd3UkFRQWlDQ0FGSUFnb0FnQW9BZ3dSQVFBMkFod2dBMEVCYWlFRElBUkJJR29nQkVFY2FoQnhEQUVMQUFzQUN3c2dBU2dDQUNFQklBUkJBRG9BRENBRUlBczJBZ2dnQVNBQ0lBUkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FnQkVGQWF4QmVJQVJCNEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkRGRVF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVNUVJJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxhQUVCZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUNJQUVnQUNnQ0pCQ1hBVFlDQkNBQ0lBRWdBQ2dDS0JDWEFUWUNBQ0FCS0FJQUlBSkJDR29nQWtFRWFpQUNFTUVSSVFBZ0FrRWdhaVFBSUFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCREhFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU1ZUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCREpFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU1nUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDl3SUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FDQURLQUlFRU1zUkRBRUxJQVZDZ0lDQWdJQUJOd0pFSUFVZ0JVRWdhaUlCTmdKQUlBRWdCU2dDVEJBNUlBVkJRR3NoQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUpNVHcwQklBSkJBQkFpSVFnZ0JTQURLQUlBSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lVSUFVZ0F5Z0NCQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNFQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUlBVkJFR29ReWhFZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF1VUF3RUVmeU1BUWRBQWF5SUZKQUFnQlNBRU5nSUVJQVVnQVRZQ0FDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JTQURLQUlBSUFNb0FnUWdBeWdDQ0JET0VRd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRklBTW9BZ1FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaEFnQlNBREtBSUlJZ1lnQVNBR0tBSUFLQUlNRVFFQU5nSU1JQVZCR0dvaUJpQUVJQWdnQlNBQklBVkJGR29nQlVFUWFpQUZRUXhxRU13UklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCRFFFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU04UklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCRFNFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU5FUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCRFVFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU5NUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTGtnTUJCSDhqQUVIZ0FHc2lCU1FBSUFVZ0FqWUNIQ0FGSUFRMkFoQWdCU0FGUVJ4cU5nSVVJQVVnQXpZQ0NDQUZJQUUyQWd3Z0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQVNBRlFRQTJBbHdDUUNBQktBSUFJZ01nQXlnQ0FDZ0NDQkVBQUNJRElBVkIzQUJxRUNJZ0EwWUVRQ0FBSUFWQkNHb2dBU2dDQUNBQktBSUVRUUFRMWhFTUFRc2dCVUtBZ0lDQWdBRTNBbFFnQlNBRlFUQnFJZ00yQWxBZ0F5QUZLQUpjRURrZ0JVSFFBR29oQjBFQUlRTUNRQUpBQTBBZ0F5QUZLQUpjVHcwQklBSkJBQkFpSVFnZ0JTQUJLQUlBSWdZZ0F5QUdLQUlBS0FJTUVRRUFOZ0lrSUFVZ0FTZ0NCQ0lHSUFNZ0JpZ0NBQ2dDREJFQkFEWUNJQ0FGUVNocUlnWWdCQ0FJSUFWQkNHb2dBeUFGUVNScUlBVkJJR29RMVJFZ0JoQXJCRUFnQlVFd2FpQUZRU2hxRUJvUUpDQURRUUZxSVFNTUFRc0xJQVZCS0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0tDQUZJQVVvQWxBZ0JVRXdha2M2QUN3Z0JDQUNJQVZCS0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJNR29RSXdzZ0JVSGdBR29rQUF1bUF3RUVmeU1BUWVBQWF5SUZKQUFnQlNBQ05nSWNJQVVnQXlnQ0FDZ0NBQ2dDQ0JENkFUb0FHeUFGSUFRMkFnd2dCU0FGUVJ0cU5nSVVJQVVnQlVFY2FqWUNFQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEFTQUZRUUEyQWx3Q1FDQUJLQUlBSWdNZ0F5Z0NBQ2dDQ0JFQUFDSURJQVZCM0FCcUVDSWdBMFlFUUNBQUlBVkJDR29nQVNnQ0FDQUJLQUlFRU5nUkRBRUxJQVZDZ0lDQWdJQUJOd0pVSUFVZ0JVRXdhaUlETmdKUUlBTWdCU2dDWEJBNUlBVkIwQUJxSVFkQkFDRURBa0FDUUFOQUlBTWdCU2dDWEU4TkFTQUNRUUFRSWlFSUlBVWdBU2dDQUNJR0lBTWdCaWdDQUNnQ0RCRUJBRFlDSkNBRklBRW9BZ1FpQmlBRElBWW9BZ0FvQWd3UkFRQTJBaUFnQlVFb2FpSUdJQVFnQ0NBRlFRaHFJQU1nQlVFa2FpQUZRU0JxRU5jUklBWVFLd1JBSUFWQk1Hb2dCVUVvYWhBYUVDUWdBMEVCYWlFRERBRUxDeUFGUVNocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFpZ2dCU0FGS0FKUUlBVkJNR3BIT2dBc0lBUWdBaUFGUVNocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRVEJxRUNNTElBVkI0QUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCRGFFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU5rUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTG1BSUJDSDhqQUVGQWFpSUNKQUFnQWlBQUtBSWdOZ0k0SUFJZ0FDa0NHRGNETUNBQ0lBQXBBaEEzQXlnZ0FpQUJJQUFvQWlRUXp3TTJBaVFnQWlBQklBQkJLR29RNGdRMkFpQWdBa0VJYWlJRElBRWdBRUV3YWhEeUJTQUJLQUlBSVFBakFFRVFheUlFSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlCTmdJTUlBUWdBVFlDQ0NNQVFSQnJJZ0VrQUNBQVFZd0JhaUlGRUxjRUlRWWdBaWdDSUNFSElBSW9BaVFoQ0NBRUtBSUlJUWtnQUNnQ0NDRUFJQUVnQTBFSWFqWUNDQ0FCSUFNb0FnZ2dBMGM2QUF3Z0JpQUFJQWtnQWtFb2FpQUlJQWNnQVVFSWFoRHJFUm9nQlNBR0VDZ2dCU0FGS0FJWVFRRnFOZ0lZSUFGQkVHb2tBQ0FHSVFBZ0JFRVFhaVFBSUFNUXFnRWdBa0ZBYXlRQUlBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkRjRVF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVOc1JJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkRlRVF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVOMFJJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxCZ0JCMnVJQkM5b09Bd1ovQW4wQ2ZDTUFRZEFBYXlJRkpBQWdBaEN5QWlnQ0dDRUlJQU1vQWdBb0FnQWlCaWdDQ0NFRElBVkJDR29pQnlBQklBUWdCaWdDQkNJS0lBWW9BZ0FpQ1JDbkNBSkFJQWNRTUFSQUlBQkJBam9BQkF3QkN5QUZRUWhxRUJvaEJnSkFJQU1nQXlnQ0FDZ0NDQkVBQUNJSFJRUkFJQVZCQURvQUJBd0JDd0pBQWtBZ0J5Z0NCQ0lIUWZDZkVrWUVRQ0FERUR3aERTQUdLQUlBRUR3aERpQUZRVUJySWdZZ0FTQUVJQTBnRFJEYkFTQUdFR0lFUUNBRlFRSTZBQlFNQWdzZ0JVRXdhaUlHSUFFZ0JDQU9JQTRRMndFZ0JoQmlCRUFnQlVFQ09nQVVEQUlMSUFWQklHb2lCaUFCSUFSRUFBQUFBQUFBOEQ4Z0JVRXdhaEJLS3dNQUVJRUVJQVlRWWdSQUlBVkJBam9BRkF3Q0N5QUZRUkJxSUFFZ0JDQUZRVUJyRUVvckF3QWdCVUVnYWlJR0VFb3JBd0FRMndFZ0JTQUZLUU1ZTndNb0lBVWdCU2tERURjRElDQUdFR0lFUUNBRlFRSTZBQlFNQWdzZ0JVRVFhaUFCSUFSRUFBQUFBQUFBOEQ4Z0JVRWdhaUlHRUVvckF3QVFnUVFnQlNBRktRTVlOd01vSUFVZ0JTa0RFRGNESUNBR0VHSUVRQ0FGUVFJNkFCUU1BZ3NnQlVFUWFpQUJJQVFnQ0NBRlFTQnFFRW9yQXdBUWN3d0JDeUFIUWJDcEVrWUVRQ0FERURRaEN5QUdLQUlBRURRaERDQUZRVUJySWdZZ0FTQUVJQXNnQ3hEYUFTQUdFREFFUUNBRlFRSTZBQlFNQWdzZ0JVRXdhaUlHSUFFZ0JDQU1JQXdRMmdFZ0JoQXdCRUFnQlVFQ09nQVVEQUlMSUFWQklHb2lCaUFCSUFSREFBQ0FQeUFGUVRCcUVCb3FBZ0FRZ0FRZ0JoQXdCRUFnQlVFQ09nQVVEQUlMSUFWQkVHb2dBU0FFSUFWQlFHc1FHaW9DQUNBRlFTQnFJZ1lRR2lvQ0FCRGFBU0FGSUFVcEF4QTNBeUFnQmhBd0JFQWdCVUVDT2dBVURBSUxJQVZCRUdvZ0FTQUVRd0FBZ0Q4Z0JVRWdhaUlHRUJvcUFnQVFnQVFnQlNBRktRTVFOd01nSUFZUU1BUkFJQVZCQWpvQUZBd0NDeUFGUVJCcUlBRWdCQ0FJSUFWQklHb1FHaW9DQUJCckRBRUxJQWRCMEtnU1J3MEJJQU1RUHlFTElBWW9BZ0FRUHlFTUlBVkJRR3NpQmlBQklBUWdDeUFMRU5rQklBWVFNQVJBSUFWQkFqb0FGQXdCQ3lBRlFUQnFJZ1lnQVNBRUlBd2dEQkRaQVNBR0VEQUVRQ0FGUVFJNkFCUU1BUXNnQlVFZ2FpSUdJQUVnQkVNQUFJQS9FRVlnQlVFd2FoQWFLZ0lBRVA4RElBWVFNQVJBSUFWQkFqb0FGQXdCQ3lBRlFSQnFJQUVnQkNBRlFVQnJFQm9xQWdBZ0JVRWdhaUlHRUJvcUFnQVEyUUVnQlNBRktRTVFOd01nSUFZUU1BUkFJQVZCQWpvQUZBd0JDeUFGUVJCcUlBRWdCRU1BQUlBL0VFWWdCVUVnYWlJR0VCb3FBZ0FRL3dNZ0JTQUZLUU1RTndNZ0lBWVFNQVJBSUFWQkFqb0FGQXdCQ3lBRlFSQnFJQUVnQkNBSUlBVkJJR29RR2lvQ0FCQnlDeUFGSUFVcEF4QTNBd0FNQVFzZ0JVRUFPZ0FFQ3lBRkVEQUVRQ0FBUVFJNkFBUU1BUXNnQlJBYUtBSUFFRHhFQUFBQUFBQUFBQUJqQkVBZ0FTQUNFSkVCSVFJZ0FFRUJPZ0FFSUFBZ0FqWUNBQXdCQ3lBRlFSQnFJZ1lnQVNBRUlBSWdBeUFKRUprS0lBWVFNQVJBSUFCQkFqb0FCQXdCQ3lBRlFRaHFFQm9oQmlBRkVCb2hCd0pBSUFNZ0F5Z0NBQ2dDQ0JFQUFDSUpSUVJBSUFWQkFEb0FSQXdCQ3dKQUFrQWdDU2dDQkNJSlFmQ2ZFa1lFUUNBREVEd2hEU0FHS0FJQUVEd2hEaUFGUVVCcklnTWdBU0FFSUFjb0FnQVFQQkM0RENBREVHSUVRQ0FGUVFJNkFDUU1BZ3NnQlVFd2FpSURJQUVnQkNBTklBNFEyd0VnQXhCaUJFQWdCVUVDT2dBa0RBSUxJQVZCSUdvZ0FTQUVJQVZCTUdvaUF4QktLd01BSUFWQlFHc1FTaXNEQUJEWUF5QUZJQVVwQXlnM0F6Z2dCU0FGS1FNZ053TXdJQU1RWWdSQUlBVkJBam9BSkF3Q0N5QUZRU0JxSUFFZ0JDQUlJQVZCTUdvUVNpc0RBQkJ6REFFTElBbEJzS2tTUmdSQUlBTVFOQ0VMSUFZb0FnQVFOQ0VNSUFWQlFHc2lBeUFCSUFRZ0J5Z0NBQkEwRUxjTUlBTVFNQVJBSUFWQkFqb0FKQXdDQ3lBRlFUQnFJZ01nQVNBRUlBc2dEQkRhQVNBREVEQUVRQ0FGUVFJNkFDUU1BZ3NnQlVFZ2FpQUJJQVFnQlVFd2FpSURFQm9xQWdBZ0JVRkFheEFhS2dJQUVOY0RJQVVnQlNrRElEY0RNQ0FERURBRVFDQUZRUUk2QUNRTUFnc2dCVUVnYWlBQklBUWdDQ0FGUVRCcUVCb3FBZ0FRYXd3QkN5QUpRZENvRWtjTkFTQURFRDhoQ3lBR0tBSUFFRDhoRENBRlFVQnJJZ01nQVNBRUlBY29BZ0FRUHhDMkRDQURFREFFUUNBRlFRSTZBQ1FNQVFzZ0JVRXdhaUlESUFFZ0JDQUxJQXdRMlFFZ0F4QXdCRUFnQlVFQ09nQWtEQUVMSUFWQklHb2dBU0FFSUFWQk1Hb2lBeEFhS2dJQUlBVkJRR3NRR2lvQ0FCRFdBeUFGSUFVcEF5QTNBekFnQXhBd0JFQWdCVUVDT2dBa0RBRUxJQVZCSUdvZ0FTQUVJQWdnQlVFd2FoQWFLZ0lBRUhJTElBVWdCU2tESURjRFFBd0JDeUFGUVFBNkFFUUxJQVZCUUdzUU1BUkFJQUJCQWpvQUJBd0JDeUFGUVRCcUlnTWdBU0FFSUFJZ0JVRkFheEFhS0FJQUlBb1FtUW9nQXhBd0JFQWdBRUVDT2dBRURBRUxJQUFnQVNBRUlBSWdCVUVRYWhBYUtBSUFJQVZCTUdvUUdpZ0NBQkNURFFzZ0FCQXdCRUFnQVNBRlFVQnJRYmYzQUJBVUlnQWdCQkQ4QVNBQUVBOGFDeUFGUWRBQWFpUUFDL2tDQXdWL0FYd0JmU01BUVNCcklnVWtBQ0FES0FJQUtBSUFJZ01vQWdRaENDQURLQUlBSVFrZ0FoQ3lBaWdDR0NFRElBVkJHR29pQmlBQklBUWdDQ0FKRUtjSUFrQWdCaEF3QkVBZ0FFRUNPZ0FFREFFTEFrQWdCVUVZYWhBYUlnY29BZ0FpQmlBR0tBSUFLQUlJRVFBQUlnWkZCRUFnQlVFQU9nQVVEQUVMQWtBQ1FDQUdLQUlFSWdaQjhKOFNSZ1JBSUFVZ0FTQUVJQU1nQnlnQ0FCQThJZ29nQ3FBUWN3d0JDeUFHUWJDcEVrWUVRQ0FGSUFFZ0JDQURJQWNvQWdBUU5DSUxJQXVTRUdzTUFRc2dCa0hRcUJKSERRRWdCU0FCSUFRZ0F5QUhLQUlBRUQ5REFBQUFRQkJHbEJCR0VISUxJQVVnQlNrREFEY0RFQXdCQ3lBRlFRQTZBQlFMSUFWQkVHb1FNQVJBSUFCQkFqb0FCQXdCQ3lBRklBRWdCQ0FDSUFWQkVHb1FHaWdDQUNBSUVKa0tJQVVRTUFSQUlBQkJBam9BQkF3QkN5QUFJQUVnQkNBQ0lBa2dCUkFhS0FJQUVKTU5DeUFBRURBRVFDQUJJQVZCdS9FQUVCUWlBQ0FFRVB3QklBQVFEeG9MSUFWQklHb2tBQXZVQWdFRWZ5TUFRZEFBYXlJRkpBQWdCU0FFTmdJTUlBVWdBVFlDQ0NBQktBSUFJUVFnQXlnQ0FDZ0NBQ0VESUFWQkFEWUNUQUpBSUFNb0FnQWlBU0FCS0FJQUtBSUlFUUFBSWdFZ0JVSE1BR29RSWlBQlJnUkFJQUFnQlVFSWFpQURLQUlBRU9BUkRBRUxJQVZDZ0lDQWdJQUJOd0pFSUFVZ0JVRWdhaUlCTmdKQUlBRWdCU2dDVEJBNUlBVkJRR3NoQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUpNVHcwQklBSkJBQkFpSVFnZ0JTQURLQUlBSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lVSUFWQkdHb2lCaUFFSUFnZ0JVRUlhaUFCSUFWQkZHb1EzeEVnQmhBckJFQWdCVUVnYWlBRlFSaHFFQm9RSkNBQlFRRnFJUUVNQVFzTElBVkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBVWdCellDR0NBRklBVW9Ba0FnQlVFZ2FrYzZBQndnQkNBQ0lBVkJHR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFWQklHb1FJd3NnQlVIUUFHb2tBQXYzQWdFRWZ5TUFRZEFBYXlJRkpBQWdCU0FFTmdJTUlBVWdBVFlDQ0NBQktBSUFJUVFnQXlnQ0FDZ0NBQ0VESUFWQkFEWUNUQUpBSUFNb0FnQWlBU0FCS0FJQUtBSUlFUUFBSWdFZ0JVSE1BR29RSWlBQlJnUkFJQUFnQlVFSWFpQURLQUlBSUFNb0FnUVE0aEVNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCU0FES0FJRUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJUUlBVkJHR29pQmlBRUlBZ2dCVUVJYWlBQklBVkJGR29nQlVFUWFoRGhFU0FHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDNGNCQVFGL0lBTW9BZ0FvQWdBb0FnQWlBMEVBSUFNb0FnQW9BZ3dSQVFBUU5CRFVDU0VGSUFBZ0FTQUNJQU5CQVNBREtBSUFLQUlNRVFFQUVEUVExQWxCQ0hSQmdQNERjU0FGUWY4QmNYSWdBMEVDSUFNb0FnQW9BZ3dSQVFBUU5CRFVDVUVRZEVHQWdQd0hjWElnQTBFRElBTW9BZ0FvQWd3UkFRQVFOQkRVQ1VFWWRISVFyUUVMaHdFQkFYOGdBeWdDQUNnQ0FDZ0NBQ0lEUVFBZ0F5Z0NBQ2dDREJFQkFCQTBFTlVKSVFVZ0FDQUJJQUlnQTBFQklBTW9BZ0FvQWd3UkFRQVFOQkRWQ1VFSWRFR0EvZ054SUFWQi93RnhjaUFEUVFJZ0F5Z0NBQ2dDREJFQkFCQTBFTlVKUVJCMFFZQ0EvQWR4Y2lBRFFRTWdBeWdDQUNnQ0RCRUJBQkEwRU5VSlFSaDBjaEN0QVF0SEFDQUFJQUVnQWlBREtBSUFLQUlBS0FJQUlnQkJBQ0FBS0FJQUtBSU1FUUVBRURRUTR4RkIvLzhEY1NBQVFRRWdBQ2dDQUNnQ0RCRUJBQkEwRU9NUlFSQjBjaEN0QVF0SEFDQUFJQUVnQWlBREtBSUFLQUlBS0FJQUlnQkJBQ0FBS0FJQUtBSU1FUUVBRURRUTVCRkIvLzhEY1NBQVFRRWdBQ2dDQUNnQ0RCRUJBQkEwRU9RUlFSQjBjaEN0QVF1eEFRRUNmeU1BUVNCcklnVWtBQ0FGSUFRMkFod2dCU0FCTmdJWUlBVkJFR29pQmlBRlFSaHFJQU1vQWdBb0FnQW9BZ0FpQTBFQUlBTW9BZ0FvQWd3UkFRQVFOQkRsRVFKQUlBWVFNQVJBSUFCQkFqb0FCQXdCQ3lBRlFRaHFJZ1lnQlVFWWFpQURRUUVnQXlnQ0FDZ0NEQkVCQUJBMEVPVVJJQVlRTUFSQUlBQkJBam9BQkF3QkN5QUFJQUVnQWlBRlFSQnFFQm92QVFBZ0JVRUlhaEFhS0FJQVFSQjBjaEN0QVFzZ0JVRWdhaVFBQzZVQ0FRSi9Jd0JCUUdvaUJTUUFJQVZCT0dvaUJpQUJJQVFnQWhCY0lBTW9BZ0FvQWdBb0FnQVFxZzBDUUNBR0VEQUVRQ0FCSUFWQkdHcEJ6c1VERUJRaUFTQUVFUHdCSUFFUUR4b2dBRUVDT2dBRURBRUxJQVZCT0dvUUdpZ0NBQ0lHSUFZb0FnQW9BaFFSQUFBRVFDQUJJQVZCR0dwQjNPNEVFQlFpQXlBRUVGMGdBeEFQR2lBQkxRQUVCRUFnQVNBQ0VKRUJJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBd0NDeUFBUVFJNkFBUU1BUXNnQXlnQ0FDZ0NBQ2dDQUNFRElBVkJBallDRkNBRklBWTJBZ3dnQlNBRE5nSUlJQVVnQlVFSWFqWUNFQ0FGSUFVcEF4QTNBd0FnQlNBRlFSaHFJQVVRdFFJaUEwRUlhallDTUNBRklBTWdBeWdDQ0VjNkFEUWdBQ0FCSUFJZ0JVRXdhaUFFRU1nVElBTVFxZ0VMSUFWQlFHc2tBQXVCQndFSGZ5TUFRWUFCYXlJRkpBQWdCU0FFTmdJOElBVWdBVFlDT0NBRklBUTJBalFnQlNBQk5nSXdJQVZDZ0lDQWdDQTNBaVFnQlNBRlFSaHFOZ0lnSUFFb0FnQWhCeUFES0FJQUtBSUFLQUlBSWdRZ0JDZ0NBQ2dDQ0JFQUFDRUpJQU1vQWdBb0FnQWhCaUFGUVFBMkFud0NRQ0FHS0FJQUlnUWdCQ2dDQUNnQ0NCRUFBQ0lFSUFWQi9BQnFFQ0lnQkVZRVFDQUZRUkJxSUFWQk9Hb2dCaWdDQUJEb0VRd0JDeUFGUW9DQWdJQ0FBVGNDZENBRklBVkIwQUJxSWdRMkFuQWdCQ0FGS0FKOEVEa2dCVUh3QUdvaENrRUFJUVFDUUFKQUEwQWdCQ0FGS0FKOFR3MEJJQWxCQUJBaUlRZ2dCU0FHS0FJQUlnc2dCQ0FMS0FJQUtBSU1FUUVBTmdKRUlBVkJ5QUJxSWdzZ0J5QUlJQVZCT0dvZ0JDQUZRY1FBYWhEbkVTQUxFQ3NFUUNBRlFkQUFhaUFGUWNnQWFoQWFFQ1FnQkVFQmFpRUVEQUVMQ3lBRlFjZ0FhaEE5R2lBRlFRSTZBQlFNQVFzZ0JTQUtOZ0pJSUFVZ0JTZ0NjQ0FGUWRBQWFrYzZBRXdnQnlBSklBVkJ5QUJxRURvaEJDQUZRUUU2QUJRZ0JTQUVOZ0lRQ3lBRlFkQUFhaEFqQ3dKQUlBVkJFR29RSzBVRVFDQUFRUUk2QUFRTUFRc2dCVUVZYWlBRlFSQnFFQm9Rc2dNZ0FTZ0NBQ0VHSUFNb0FnQW9BZ0FvQWdBaUJDQUVLQUlBS0FJSUVRQUFJUWNnQXlnQ0FDZ0NBQ0VESUFWQkFEWUNmQUpBSUFNb0FnQWlCQ0FFS0FJQUtBSUlFUUFBSWdRZ0JVSDhBR29RSWlBRVJnUkFJQVZCRUdvZ0JVRXdhaUFES0FJQUVOWUpEQUVMSUFWQ2dJQ0FnSUFCTndKMElBVWdCVUhRQUdvaUJEWUNjQ0FFSUFVb0Fud1FPU0FGUWZBQWFpRUpRUUFoQkFKQUFrQURRQ0FFSUFVb0FueFBEUUVnQjBFQUVDSWhDaUFGSUFNb0FnQWlDQ0FFSUFnb0FnQW9BZ3dSQVFBMkFrUWdCVUhJQUdvaUNDQUdJQW9nQlVFd2FpQUVJQVZCeEFCcUVPWVJJQWdRS3dSQUlBVkIwQUJxSUFWQnlBQnFFQm9RSkNBRVFRRnFJUVFNQVFzTElBVkJ5QUJxRUQwYUlBVkJBam9BRkF3QkN5QUZJQWsyQWtnZ0JTQUZLQUp3SUFWQjBBQnFSem9BVENBR0lBY2dCVUhJQUdvUU9pRURJQVZCQVRvQUZDQUZJQU0yQWhBTElBVkIwQUJxRUNNTElBVkJFR29RSzBVRVFDQUFRUUk2QUFRTUFRc2dCVUVZYWlJRElBVkJFR29RR2hDeUF5QUJLQUlBSVFFZ0JTQUZRU0JxTmdJSUlBVWdBeUFGS0FJZ1J6b0FEQ0FCSUFJZ0JVRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFWWFoQ3FBU0FGUVlBQmFpUUFDNWtEQVFaL0l3QkIwQUJySWdVa0FDQUZJQVEyQWdnZ0JTQUJOZ0lFSUFVZ0F6WUNBQ0FCS0FJQUlRZ2dBeWdDQUNnQ0FDRUdJQVZCQURZQ1RBSkFJQVlvQWdBaUF5QURLQUlBS0FJSUVRQUFJZ01nQlVITUFHb1FJaUFEUmdSQUlBQWdCU0FHS0FJQUlBWW9BZ1JCQUJEcUVRd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQXpZQ1FDQURJQVVvQWt3UU9TQUZRVUJySVFsQkFDRURBa0FDUUFOQUlBTWdCU2dDVEU4TkFTQUNRUUFRSWlFS0lBVWdCaWdDQUNJSElBTWdCeWdDQUNnQ0RCRUJBRFlDRkNBRklBWW9BZ1FpQnlBRElBY29BZ0FvQWd3UkFRQTJBaEFnQlVFWWFpSUhJQWdnQ2lBRklBTWdCVUVVYWlBRlFSQnFFT2tSSUFjUUt3UkFJQVZCSUdvZ0JVRVlhaEFhRUNRZ0EwRUJhaUVEREFFTEN5QUZRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUZJQWsyQWhnZ0JTQUZLQUpBSUFWQklHcEhPZ0FjSUFnZ0FpQUZRUmhxRURvaEFpQUFRUUU2QUFRZ0FDQUNOZ0lBQ3lBRlFTQnFFQ01MSUFBUU1BUkFJQUVnQlVFZ2FrR2pJUkFVSWdBZ0JCRDhBU0FBRUE4YUN5QUZRZEFBYWlRQUMvY0NBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQWdBeWdDQkJEdEVRd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRklBTW9BZ1FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaEFnQlVFWWFpSUdJQVFnQ0NBRlFRaHFJQUVnQlVFVWFpQUZRUkJxRU93UklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDl3SUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FDQURLQUlFRU84UkRBRUxJQVZDZ0lDQWdJQUJOd0pFSUFVZ0JVRWdhaUlCTmdKQUlBRWdCU2dDVEJBNUlBVkJRR3NoQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUpNVHcwQklBSkJBQkFpSVFnZ0JTQURLQUlBSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lVSUFVZ0F5Z0NCQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNFQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUlBVkJFR29RN2hFZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF2VUFnRUVmeU1BUWRBQWF5SUZKQUFnQlNBRU5nSU1JQVVnQVRZQ0NDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JVRUlhaUFES0FJQUVQRVJEQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVkJHR29pQmlBRUlBZ2dCVUVJYWlBQklBVkJGR29ROEJFZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF2VUFnRUVmeU1BUWRBQWF5SUZKQUFnQlNBRU5nSU1JQVVnQVRZQ0NDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JVRUlhaUFES0FJQUVQTVJEQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVkJHR29pQmlBRUlBZ2dCVUVJYWlBQklBVkJGR29ROGhFZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF0SEFRRi9Jd0JCRUdzaUJTUUFJQUFnQVNBRUlBSWdBeWdDQUNnQ0FDZ0NBQkNxRFNBQUVEQUVRQ0FCSUFWQmhxTURFQlFpQUNBRUVQd0JJQUFRRHhvTElBVkJFR29rQUF2b0FnRUVmeU1BUWRBQWF5SUZKQUFnQlNBQ05nSVFJQVVnQkRZQ0NDQUZJQVZCRUdvMkFnd2dCU0FETmdJQUlBVWdBVFlDQkNBQktBSUFJUVFnQXlnQ0FDZ0NBQ0VCSUFWQkFEWUNUQUpBSUFFb0FnQWlBeUFES0FJQUtBSUlFUUFBSWdNZ0JVSE1BR29RSWlBRFJnUkFJQUFnQlNBQktBSUFRUUFROVJFTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ00yQWtBZ0F5QUZLQUpNRURrZ0JVRkFheUVIUVFBaEF3SkFBa0FEUUNBRElBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBRW9BZ0FpQmlBRElBWW9BZ0FvQWd3UkFRQTJBaFFnQlVFWWFpSUdJQVFnQ0NBRklBTWdCVUVVYWhEMEVTQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQU5CQVdvaEF3d0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUM5UUNBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQVE5eEVNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBRWdCVUVVYWhEMkVTQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUMvZ0NBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ2dnQlNBRE5nSUFJQVVnQVRZQ0JDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFQklBVkJBRFlDVEFKQUlBRW9BZ0FpQXlBREtBSUFLQUlJRVFBQUlnTWdCVUhNQUdvUUlpQURSZ1JBSUFBZ0JTQUJLQUlBSUFFb0FnUVErUkVNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnTTJBa0FnQXlBRktBSk1FRGtnQlVGQWF5RUhRUUFoQXdKQUFrQURRQ0FESUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFFb0FnQWlCaUFESUFZb0FnQW9BZ3dSQVFBMkFoUWdCU0FCS0FJRUlnWWdBeUFHS0FJQUtBSU1FUUVBTmdJUUlBVkJHR29pQmlBRUlBZ2dCU0FESUFWQkZHb2dCVUVRYWhENEVTQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQU5CQVdvaEF3d0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUM1SUdBUWQvSXdCQnNBRnJJZ1VrQUNBREtBSUFLQUlBS0FJQUlRWWdCU0FFTmdLc0FTQUZJQUUyQXFnQkFrQWdCaUFHS0FJQUtBSUlFUUFBRUxJQ0lnUUVRQ0FGUW9DQWdJREFBRGNDbkFFZ0JTQUZRWWdCYWpZQ21BRWdCVUtBZ0lDQXdBQTNBbndnQlNBRlFlZ0FhallDZUNBRlFkQUFhaUVISUFWQitBQnFJUWtnQlVHWUFXb2hDa0VBSVFNQ1FBTkFJQVFvQWh3Z0Ewc0VRQ0FGUWNnQWFpSUlJQVZCcUFGcUlBWWdBeUFHS0FJQUtBSU1FUUVBRVBzUkFrQWdDQkF3UlFSQUlBY1FNRVVOQVFzZ0FFRUNPZ0FFREFNTElBVkJpQUZxSUFWQnlBQnFFQm9RY1NBRlFlZ0FhaUFIRUJvUWNTQURRUUZxSVFNTUFRc0xJQUVvQWdBaEF5QUZJQVVvQXBnQktBSUFJZ1lnQmlnQ0FDZ0NDQkVBQURZQ1NDQUZJQVFvQWh3MkFqZ2dBeUFGUWNnQWFpSUlJQVZCT0dvaUN4Q2ZBaUVHSUFFb0FnQWhBeUFGSUFVb0FuZ29BZ0FpQnlBSEtBSUFLQUlJRVFBQU5nSklJQVVnQkNnQ0hEWUNPQ0FESUFWQnlBQnFJQVZCT0dvUW53SWhCQ0FCS0FJQUlRTWdCU0FLTmdJd0lBVWdCU2dDbUFFZ0JVR0lBV3BIT2dBMElBVWdBeUFHSUFWQk1Hb1FPallDT0NBQktBSUFJUUVnQlNBSk5nSW9JQVVnQlNnQ2VDQUZRZWdBYWtjNkFDd2dBU0FFSUFWQktHb1FPaUVCSUFWQkFqWUNSQ0FGSUFFMkFqd2dCU0FMTmdKQUlBVWdCU2tEUURjREVDQUZJQWdnQlVFUWFoQzFBaUlCUVFocU5nSmdJQVVnQVNBQktBSUlSem9BWkNBRElBSWdCVUhnQUdvUU9pRUNJQUJCQVRvQUJDQUFJQUkyQWdBZ0FSQ3FBUXNnQlVIb0FHb1FYaUFGUVlnQmFoQmVEQUVMSUFWQjZBQnFJZ01nQlVHb0FXb2dCaEQ3RVFKQUlBTVFNRVVFUUNBRlFmQUFhaUlERURCRkRRRUxJQUJCQWpvQUJBd0JDeUFCS0FJQUlRUWdCU0FGUWVnQWFoQWFLQUlBTmdKSUlBTVFHaWdDQUNFQklBVkJBallDSENBRklBRTJBa3dnQlNBRlFjZ0FhallDR0NBRklBVXBBeGczQXdnZ0JTQUZRWWdCYWlBRlFRaHFFTFVDSWdGQkNHbzJBaUFnQlNBQklBRW9BZ2hIT2dBa0lBUWdBaUFGUVNCcUVEb2hBaUFBUVFFNkFBUWdBQ0FDTmdJQUlBRVFxZ0VMSUFWQnNBRnFKQUFMMUFJQkJIOGpBRUhRQUdzaUJTUUFJQVVnQkRZQ0RDQUZJQUUyQWdnZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFWQkNHb2dBeWdDQUJEOUVRd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRlFSaHFJZ1lnQkNBSUlBVkJDR29nQVNBRlFSUnFFUHdSSUFZUUt3UkFJQVZCSUdvZ0JVRVlhaEFhRUNRZ0FVRUJhaUVCREFFTEN5QUZRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUZJQWMyQWhnZ0JTQUZLQUpBSUFWQklHcEhPZ0FjSUFRZ0FpQUZRUmhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBRlFTQnFFQ01MSUFWQjBBQnFKQUFMbEFNQkJIOGpBRUhRQUdzaUJTUUFJQVVnQkRZQ0JDQUZJQUUyQWdBZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFVZ0F5Z0NBQ0FES0FJRUlBTW9BZ2dRZ0JJTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ0UyQWtBZ0FTQUZLQUpNRURrZ0JVRkFheUVIUVFBaEFRSkFBa0FEUUNBQklBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBTW9BZ0FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaFFnQlNBREtBSUVJZ1lnQVNBR0tBSUFLQUlNRVFFQU5nSVFJQVVnQXlnQ0NDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0RDQUZRUmhxSWdZZ0JDQUlJQVVnQVNBRlFSUnFJQVZCRUdvZ0JVRU1haEQrRVNBR0VDc0VRQ0FGUVNCcUlBVkJHR29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCU0FITmdJWUlBVWdCU2dDUUNBRlFTQnFSem9BSENBRUlBSWdCVUVZYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JVRWdhaEFqQ3lBRlFkQUFhaVFBQzlRQ0FRUi9Jd0JCMEFCcklnVWtBQ0FGSUFRMkFnd2dCU0FCTmdJSUlBRW9BZ0FoQkNBREtBSUFLQUlBSVFNZ0JVRUFOZ0pNQWtBZ0F5Z0NBQ0lCSUFFb0FnQW9BZ2dSQUFBaUFTQUZRY3dBYWhBaUlBRkdCRUFnQUNBRlFRaHFJQU1vQWdBUWdoSU1BUXNnQlVLQWdJQ0FnQUUzQWtRZ0JTQUZRU0JxSWdFMkFrQWdBU0FGS0FKTUVEa2dCVUZBYXlFSFFRQWhBUUpBQWtBRFFDQUJJQVVvQWt4UERRRWdBa0VBRUNJaENDQUZJQU1vQWdBaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhRZ0JVRVlhaUlHSUFRZ0NDQUZRUWhxSUFFZ0JVRVVhaENCRWlBR0VDc0VRQ0FGUVNCcUlBVkJHR29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCU0FITmdJWUlBVWdCU2dDUUNBRlFTQnFSem9BSENBRUlBSWdCVUVZYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JVRWdhaEFqQ3lBRlFkQUFhaVFBQzlRQ0FRUi9Jd0JCMEFCcklnVWtBQ0FGSUFRMkFnd2dCU0FCTmdJSUlBRW9BZ0FoQkNBREtBSUFLQUlBSVFNZ0JVRUFOZ0pNQWtBZ0F5Z0NBQ0lCSUFFb0FnQW9BZ2dSQUFBaUFTQUZRY3dBYWhBaUlBRkdCRUFnQUNBRlFRaHFJQU1vQWdBUWhCSU1BUXNnQlVLQWdJQ0FnQUUzQWtRZ0JTQUZRU0JxSWdFMkFrQWdBU0FGS0FKTUVEa2dCVUZBYXlFSFFRQWhBUUpBQWtBRFFDQUJJQVVvQWt4UERRRWdBa0VBRUNJaENDQUZJQU1vQWdBaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhRZ0JVRVlhaUlHSUFRZ0NDQUZRUWhxSUFFZ0JVRVVhaENERWlBR0VDc0VRQ0FGUVNCcUlBVkJHR29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCU0FITmdJWUlBVWdCU2dDUUNBRlFTQnFSem9BSENBRUlBSWdCVUVZYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JVRWdhaEFqQ3lBRlFkQUFhaVFBQzBnQkFYOGpBRUVnYXlJQ0pBQWdBaUFBS0FJZ05nSVlJQUlnQUNrQ0dEY0RFQ0FDSUFBcEFoQTNBd2dnQVNnQ0FDQUNRUWhxSUFCQkpHb1EveEVoQUNBQ1FTQnFKQUFnQUF2VUFnRUVmeU1BUWRBQWF5SUZKQUFnQlNBRU5nSU1JQVVnQVRZQ0NDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JVRUlhaUFES0FJQUVJWVNEQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVkJHR29pQmlBRUlBZ2dCVUVJYWlBQklBVkJGR29RaFJJZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF2UEFnRURmeU1BUVVCcUlnVWtBQ0FES0FJQUtBSUFJZ01vQWdBaEJ5QUZRVGhxSWdZZ0FTQUVJQU1vQWdRZ0F5Z0NDQkNuQ0FKQUlBWVFNQVJBSUFFZ0JVRWdha0hINEFRUUZDSUJJQVFRL0FFZ0FSQVBHaUFBUVFJNkFBUU1BUXNDUUNBRlFUaHFFQm9pQXlnQ0FDSUdJQVlvQWdBb0FnZ1JBQUFpQmtVTkFBSkFJQVlvQWdRaUJrSHdueEpHQkVBZ0F5Z0NBQkE4UkFBQUFBQUFBQUFBWTBVTkFnd0JDeUFHUWJDcEVrWUVRQ0FES0FJQUVEUkRBQUFBQUYwTkFRd0NDeUFHUWRDb0VrY05BU0FES0FJQUVEOURBQUFBQUYxRkRRRUxJQUJCQVRvQUJDQUFJQWMyQWdBTUFRc2dCVUVCTmdJY0lBVWdCellDRkNBRklBVkJGR28yQWhnZ0JTQUZLUU1ZTndNSUlBVWdCVUVnYWlBRlFRaHFFSmNDSWdOQkJHbzJBakFnQlNBRElBTW9BZ1JIT2dBMElBQWdBU0FDSUFWQk1Hb2dCQkNiRkNBREVLZ0JDeUFGUVVCckpBQUwyd0lCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRUNBRklBTTJBZ2dnQlNBQk5nSU1JQUVvQWdBaEJDQURLQUlBS0FJQUlRRWdCVUVBTmdKTUFrQWdBU2dDQUNJRElBTW9BZ0FvQWdnUkFBQWlBeUFGUWN3QWFoQWlJQU5HQkVBZ0FDQUZRUWhxSUFFb0FnQVFpQklNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnTTJBa0FnQXlBRktBSk1FRGtnQlVGQWF5RUhRUUFoQXdKQUFrQURRQ0FESUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFFb0FnQWlCaUFESUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBTWdCVUVVYWhDSEVpQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQU5CQVdvaEF3d0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUM5UUNBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQVFpaElNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBRWdCVUVVYWhDSkVpQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUN3c0FJQUJCd3NFRUVCUWFDOVFDQVFSL0l3QkIwQUJySWdVa0FDQUZJQVEyQWd3Z0JTQUJOZ0lJSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGUVFocUlBTW9BZ0FRakJJTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ0UyQWtBZ0FTQUZLQUpNRURrZ0JVRkFheUVIUVFBaEFRSkFBa0FEUUNBQklBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBTW9BZ0FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaFFnQlVFWWFpSUdJQVFnQ0NBRlFRaHFJQUVnQlVFVWFoQ0xFaUFHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDMGtBSXdCQkVHc2lBaVFBSUFBZ0FTQUVJQU1vQWdBb0FnQWlBeWdDQUNBREtBSUVFS2NJSUFBUU1BUkFJQUVnQWtIeE5oQVVJZ0FnQkJEOEFTQUFFQThhQ3lBQ1FSQnFKQUFMcmdFQkFuOGpBRUVnYXlJRkpBQWdCU0FFTmdJY0lBVWdBVFlDR0NBREtBSUFLQUlBS0FJQUlnWWdCaWdDQUNnQ0NCRUFBQ0VHSUFNb0FnQWhBeUFGUVFBNkFBd2dCU0FETmdJSUlBVkJFR29pQXlBQklBWWdCVUVJYWlBRUVPd1RBa0FnQXhBd0JFQWdBQ0FGUVJocUVJMFNEQUVMSUFVZ0FTQUVJQUlnQlVFUWFoQWFLQUlBRUtvTklBVVFNQVJBSUFBZ0JVRVlhaENORWd3QkN5QUFJQVVwQXdBM0FnQUxJQVZCSUdva0FBdWFHZ01SZnhCOUVId2pBRUhBQVdzaUJpUUFJQVlnQXlnQ0FDZ0NBQ2dDQUNJRE5nS2tBU0FESUFNb0FnQW9BZ2dSQUFBaUF5Z0NCQ0VISUFZZ0JrR2tBV28yQXFBQkFrQUNRQUpBQWtBQ1FDQURRUUFnQjBId3FoSkdHeWdDSUVFQ2F3NERBQUVDQXdzZ0JpQUJOZ0lBSUFZZ0JDa0NDRGNDRENBR0lBUW9BaEEyQWhRZ0JpQUVLUUlBTndJRUlBWWdBallDR0NBR1FhQUJhaUlEUVFCQkFCQ05BU0VDSUFOQkFVRUFFSTBCSVFjZ0EwRUFRUUVRalFFaEJTQURRUUZCQVJDTkFTRURJQUlnQWlnQ0FDZ0NDQkVBQUNJSlJRUkFJQUJCQURvQUJBd0VDd0pBQWtBZ0NTZ0NCQ0lKUWZDZkVrWUVRQ0FHUWJBQmFpQUdJQUlRUENBSEVEd2dCUkE4SUFNUVBCQ1NFZ3dCQ3lBSlFiQ3BFa1lFUUNBR1FiQUJhaUFHSUFJUU5DQUhFRFFnQlJBMElBTVFOQkNSRWd3QkN5QUpRZENvRWtjTkFTQUdRYkFCYWlBR0lBSVFQeUFIRUQ4Z0JSQS9JQU1RUHhDUUVnc2dBQ0FHS1FPd0FUY0NBQXdFQ3lBQVFRQTZBQVFNQXdzZ0JpQUJOZ0lBSUFZZ0JDa0NDRGNDRENBR0lBUW9BaEEyQWhRZ0JpQUVLUUlBTndJRUlBWWdBallDR0NBR1FhQUJhaUlDUVFCQkFCQ05BU0VESUFKQkFVRUFFSTBCSVFjZ0FrRUNRUUFRalFFaEJTQUNRUUJCQVJDTkFTRUpJQUpCQVVFQkVJMEJJUW9nQWtFQ1FRRVFqUUVoQ3lBQ1FRQkJBaENOQVNFTUlBSkJBVUVDRUkwQklRMGdBa0VDUVFJUWpRRWhEaUFESUFNb0FnQW9BZ2dSQUFBaUNFVUVRQ0FBUVFBNkFBUU1Bd3NnQmtFRWNpRUNBa0FDUUNBSUtBSUVJZ2hCOEo4U1JnUkFJQVpCc0FGcUlnZ2dBU0FDSUFNUVBDQUhFRHdnQlJBOElBa1FQQ0FLRUR3Z0N4QThJQXdRUENBTkVEd2dEaEE4RUlzSUlBZ1FzZ0VFUUNBR1FhZ0JhaUFCSUFJZ0JpZ0NHQ0FHUWJBQmFoQktLd01BRUhNTUFnc2dCa0VDT2dDc0FRd0JDeUFJUWJDcEVrWUVRQ0FHUWJBQmFpSUlJQUVnQWlBREVEUWdCeEEwSUFVUU5DQUpFRFFnQ2hBMElBc1FOQ0FNRURRZ0RSQTBJQTRRTkJDS0NDQUlFQ3NFUUNBR1FhZ0JhaUFCSUFJZ0JpZ0NHQ0FHUWJBQmFoQWFLZ0lBRUdzTUFnc2dCa0VDT2dDc0FRd0JDeUFJUWRDb0VrY05BU0FHUWJBQmFpSUlJQUVnQWlBREVEOGdCeEEvSUFVUVB5QUpFRDhnQ2hBL0lBc1FQeUFNRUQ4Z0RSQS9JQTRRUHhDSkNDQUlFQ3NFUUNBR1FhZ0JhaUFCSUFJZ0JpZ0NHQ0FHUWJBQmFoQWFLZ0lBRUhJTUFRc2dCa0VDT2dDc0FRc2dBQ0FHS1FPb0FUY0NBQXdEQ3lBQVFRQTZBQVFNQWdzZ0JpQUJOZ0lBSUFZZ0JDa0NDRGNDRENBR0lBUW9BaEEyQWhRZ0JpQUVLUUlBTndJRUlBWWdBallDR0NBR1FhQUJhaUlDUVFCQkFCQ05BU0VESUFKQkFVRUFFSTBCSVFVZ0FrRUNRUUFRalFFaENTQUNRUU5CQUJDTkFTRUtJQUpCQUVFQkVJMEJJUXNnQWtFQlFRRVFqUUVoRENBQ1FRSkJBUkNOQVNFTklBSkJBMEVCRUkwQklRNGdBa0VBUVFJUWpRRWhDQ0FDUVFGQkFoQ05BU0VQSUFKQkFrRUNFSTBCSVJBZ0FrRURRUUlRalFFaEVTQUNRUUJCQXhDTkFTRVNJQUpCQVVFREVJMEJJUk1nQWtFQ1FRTVFqUUVoRkNBQ1FRTkJBeENOQVNFVklBTWdBeWdDQUNnQ0NCRUFBQ0lIUlFSQUlBQkJBRG9BQkF3Q0N5QUdRUVJ5SVFJQ1FBSkFJQWNvQWdRaUIwSHdueEpHQkVBZ0JrR3dBV29oQnlBREVEd2hNaUFGRUR3aEppQUpFRHdoSnlBS0VEd2hLQ0FMRUR3aE15QU1FRHdoS1NBTkVEd2hLaUFPRUR3aEt5QUlFRHdoTkNBUEVEd2hMQ0FRRUR3aExTQVJFRHdoTGlBU0VEd2hOU0FURUR3aEx5QVVFRHdoTUNBVkVEd2hNU01BUWFBQmF5SURKQUFnQTBHUUFXb2lCU0FCSUFJZ0tTQXFJQ3NnTENBdElDNGdMeUF3SURFUWl3Z0NRQ0FGRUdJRVFDQUhRUUk2QUFnTUFRc2dBMEdBQVdvaUJTQUJJQUlnTWlBRFFaQUJhaEJLS3dNQUVOc0JJQVVRWWdSQUlBZEJBam9BQ0F3QkN5QURRZkFBYWlJRklBRWdBaUFtSUNjZ0tDQXNJQzBnTGlBdklEQWdNUkNMQ0NBRkVHSUVRQ0FIUVFJNkFBZ01BUXNnQTBIZ0FHb2lCU0FCSUFJZ015QURRZkFBYWhCS0t3TUFFTnNCSUFVUVlnUkFJQWRCQWpvQUNBd0JDeUFEUWRBQWFpSUZJQUVnQWlBbUlDY2dLQ0FwSUNvZ0t5QXZJREFnTVJDTENDQUZFR0lFUUNBSFFRSTZBQWdNQVFzZ0EwRkFheUlGSUFFZ0FpQTBJQU5CMEFCcUVFb3JBd0FRMndFZ0JSQmlCRUFnQjBFQ09nQUlEQUVMSUFOQk1Hb2lCU0FCSUFJZ0ppQW5JQ2dnS1NBcUlDc2dMQ0F0SUM0UWl3Z2dCUkJpQkVBZ0IwRUNPZ0FJREFFTElBTkJJR29pQlNBQklBSWdOU0FEUVRCcUVFb3JBd0FRMndFZ0JSQmlCRUFnQjBFQ09nQUlEQUVMSUFOQkVHb2lCU0FCSUFJZ0EwR0FBV29RU2lzREFDQURRZUFBYWhCS0t3TUFFSUVFSUFVUVlnUkFJQWRCQWpvQUNBd0JDeUFESUFFZ0FpQURRUkJxSWdVUVNpc0RBQ0FEUVVCckVFb3JBd0FRMkFNZ0F5QURLUU1JTndNWUlBTWdBeWtEQURjREVDQUZFR0lFUUNBSFFRSTZBQWdNQVFzZ0J5QUJJQUlnQTBFUWFoQktLd01BSUFOQklHb1FTaXNEQUJDQkJBc2dBMEdnQVdva0FDQUhFTElCQkVBZ0JrR29BV29nQVNBQ0lBWW9BaGdnQmtHd0FXb1FTaXNEQUJCekRBSUxJQVpCQWpvQXJBRU1BUXNnQjBHd3FSSkdCRUFnQmtHd0FXb2hCeUFERURRaElpQUZFRFFoRmlBSkVEUWhGeUFLRURRaEdDQUxFRFFoSXlBTUVEUWhHU0FORURRaEdpQU9FRFFoR3lBSUVEUWhKQ0FQRURRaEhDQVFFRFFoSFNBUkVEUWhIaUFTRURRaEpTQVRFRFFoSHlBVUVEUWhJQ0FWRURRaElTTUFRZEFBYXlJREpBQWdBMEhJQUdvaUJTQUJJQUlnR1NBYUlCc2dIQ0FkSUI0Z0h5QWdJQ0VRaWdnQ1FDQUZFREFFUUNBSFFRSTZBQVFNQVFzZ0EwRkFheUlGSUFFZ0FpQWlJQU5CeUFCcUVCb3FBZ0FRMmdFZ0JSQXdCRUFnQjBFQ09nQUVEQUVMSUFOQk9Hb2lCU0FCSUFJZ0ZpQVhJQmdnSENBZElCNGdIeUFnSUNFUWlnZ2dCUkF3QkVBZ0IwRUNPZ0FFREFFTElBTkJNR29pQlNBQklBSWdJeUFEUVRocUVCb3FBZ0FRMmdFZ0JSQXdCRUFnQjBFQ09nQUVEQUVMSUFOQktHb2lCU0FCSUFJZ0ZpQVhJQmdnR1NBYUlCc2dIeUFnSUNFUWlnZ2dCUkF3QkVBZ0IwRUNPZ0FFREFFTElBTkJJR29pQlNBQklBSWdKQ0FEUVNocUVCb3FBZ0FRMmdFZ0JSQXdCRUFnQjBFQ09nQUVEQUVMSUFOQkdHb2lCU0FCSUFJZ0ZpQVhJQmdnR1NBYUlCc2dIQ0FkSUI0UWlnZ2dCUkF3QkVBZ0IwRUNPZ0FFREFFTElBTkJFR29pQlNBQklBSWdKU0FEUVJocUVCb3FBZ0FRMmdFZ0JSQXdCRUFnQjBFQ09nQUVEQUVMSUFOQkNHb2lCU0FCSUFJZ0EwRkFheEFhS2dJQUlBTkJNR29RR2lvQ0FCQ0FCQ0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBeUFCSUFJZ0EwRUlhaUlGRUJvcUFnQWdBMEVnYWhBYUtnSUFFTmNESUFNZ0F5a0RBRGNEQ0NBRkVEQUVRQ0FIUVFJNkFBUU1BUXNnQnlBQklBSWdBMEVJYWhBYUtnSUFJQU5CRUdvUUdpb0NBQkNBQkFzZ0EwSFFBR29rQUNBSEVDc0VRQ0FHUWFnQmFpQUJJQUlnQmlnQ0dDQUdRYkFCYWhBYUtnSUFFR3NNQWdzZ0JrRUNPZ0NzQVF3QkN5QUhRZENvRWtjTkFTQUdRYkFCYWlFSElBTVFQeUVpSUFVUVB5RVdJQWtRUHlFWElBb1FQeUVZSUFzUVB5RWpJQXdRUHlFWklBMFFQeUVhSUE0UVB5RWJJQWdRUHlFa0lBOFFQeUVjSUJBUVB5RWRJQkVRUHlFZUlCSVFQeUVsSUJNUVB5RWZJQlFRUHlFZ0lCVVFQeUVoSXdCQjBBQnJJZ01rQUNBRFFjZ0FhaUlGSUFFZ0FpQVpJQm9nR3lBY0lCMGdIaUFmSUNBZ0lSQ0pDQUpBSUFVUU1BUkFJQWRCQWpvQUJBd0JDeUFEUVVCcklnVWdBU0FDSUNJZ0EwSElBR29RR2lvQ0FCRFpBU0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBMEU0YWlJRklBRWdBaUFXSUJjZ0dDQWNJQjBnSGlBZklDQWdJUkNKQ0NBRkVEQUVRQ0FIUVFJNkFBUU1BUXNnQTBFd2FpSUZJQUVnQWlBaklBTkJPR29RR2lvQ0FCRFpBU0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBMEVvYWlJRklBRWdBaUFXSUJjZ0dDQVpJQm9nR3lBZklDQWdJUkNKQ0NBRkVEQUVRQ0FIUVFJNkFBUU1BUXNnQTBFZ2FpSUZJQUVnQWlBa0lBTkJLR29RR2lvQ0FCRFpBU0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBMEVZYWlJRklBRWdBaUFXSUJjZ0dDQVpJQm9nR3lBY0lCMGdIaENKQ0NBRkVEQUVRQ0FIUVFJNkFBUU1BUXNnQTBFUWFpSUZJQUVnQWlBbElBTkJHR29RR2lvQ0FCRFpBU0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBMEVJYWlJRklBRWdBaUFEUVVCckVCb3FBZ0FnQTBFd2FoQWFLZ0lBRVA4RElBVVFNQVJBSUFkQkFqb0FCQXdCQ3lBRElBRWdBaUFEUVFocUlnVVFHaW9DQUNBRFFTQnFFQm9xQWdBUTFnTWdBeUFES1FNQU53TUlJQVVRTUFSQUlBZEJBam9BQkF3QkN5QUhJQUVnQWlBRFFRaHFFQm9xQWdBZ0EwRVFhaEFhS2dJQUVQOERDeUFEUWRBQWFpUUFJQWNRS3dSQUlBWkJxQUZxSUFFZ0FpQUdLQUlZSUFaQnNBRnFFQm9xQWdBUWNnd0JDeUFHUVFJNkFLd0JDeUFBSUFZcEE2Z0JOd0lBREFJTElBQkJBRG9BQkF3QkN5QUJLQUlBSWdJUUhDQUdRY1d0QlVIQ0VrRUlJQUpCeUFKcUVCY2lBa0VZYWtIRS9BQVFEaG9nQWhBWUlBQkJBam9BQkFzZ0FCQXdCRUFnQVNBR1FmWGlBQkFVSWdBZ0JCRDhBU0FBRUE4YUN5QUdRY0FCYWlRQUM5UUNBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQVFqeElNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBRWdCVUVVYWhDT0VpQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUMvWUVBUU4vSXdCQmdBRnJJZ1VrQUNBREtBSUFLQUlBSWdNb0FnUWhCaUFES0FJQUlnTWdBeWdDQUNnQ0NCRUFBQkN5QWlnQ0dDRUhJQVVnQTBFQUlBTW9BZ0FvQWd3UkFRQTJBbndnQlNBRFFRRWdBeWdDQUNnQ0RCRUJBRFlDZUNBRklBTkJBaUFES0FJQUtBSU1FUUVBTmdKMElBVWdCa0VBSUFZb0FnQW9BZ3dSQVFBMkFuQWdCU0FHUVFFZ0JpZ0NBQ2dDREJFQkFEWUNiQ0FGSUFaQkFpQUdLQUlBS0FJTUVRRUFOZ0pvSUFVZ0FUWUNRQ0FGSUFRcEFnZzNBa3dnQlNBRUtBSVFOZ0pVSUFVZ0JDa0NBRGNDUkNBRklBYzJBbGdnQlVIZ0FHb2lBeUFGUVVCcklBVkIrQUJxSUFWQjlBQnFJQVZCN0FCcUlBVkI2QUJxRUxzTUFrQWdBeEF3QkVBZ0FFRUNPZ0FFREFFTElBVWdBVFlDUUNBRklBUXBBZ2czQWt3Z0JTQUVLQUlRTmdKVUlBVWdCQ2tDQURjQ1JDQUZJQWMyQWxnZ0JVRTRhaUlESUFWQlFHc2dCVUh3QUdvZ0JVSG9BR29nQlVIOEFHb2dCVUgwQUdvUXV3d2dBeEF3QkVBZ0FFRUNPZ0FFREFFTElBVWdBVFlDUUNBRklBUXBBZ2czQWt3Z0JTQUVLQUlRTmdKVUlBVWdCQ2tDQURjQ1JDQUZJQWMyQWxnZ0JVRXdhaUlFSUFWQlFHc2dCVUg4QUdvZ0JVSDRBR29nQlVId0FHb2dCVUhzQUdvUXV3eEJBaUVESUFBZ0JCQXdCSDlCQWdVZ0FTZ0NBQ0VESUFVZ0JVSGdBR29RR2lnQ0FEWUNGQ0FGSUFWQk9Hb1FHaWdDQURZQ0dDQUZRVEJxRUJvb0FnQWhBU0FGUVFNMkFpUWdCU0FCTmdJY0lBVWdCVUVVYWpZQ0lDQUZJQVVwQXlBM0F3Z2dCU0FGUVVCcklBVkJDR29ROGdZaUFVRU1hallDS0NBRklBRWdBU2dDREVjNkFDd2dBQ0FESUFJZ0JVRW9haEE2TmdJQUlBRVFyQU5CQVFzNkFBUUxJQVZCZ0FGcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNVRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKTVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNXRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKVVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNZRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKY1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNhRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKa1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNkRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKd1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxsQU1CQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDQkNBRklBRTJBZ0FnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVVnQXlnQ0FDQURLQUlFSUFNb0FnZ1FueElNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCU0FES0FJRUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJUUlBVWdBeWdDQ0NJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRENBRlFSaHFJZ1lnQkNBSUlBVWdBU0FGUVJScUlBVkJFR29nQlVFTWFoQ2VFaUFHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDOVFDQVFSL0l3QkIwQUJySWdVa0FDQUZJQVEyQWd3Z0JTQUJOZ0lJSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGUVFocUlBTW9BZ0FRb1JJTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ0UyQWtBZ0FTQUZLQUpNRURrZ0JVRkFheUVIUVFBaEFRSkFBa0FEUUNBQklBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBTW9BZ0FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaFFnQlVFWWFpSUdJQVFnQ0NBRlFRaHFJQUVnQlVFVWFoQ2dFaUFHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDL2NDQVFSL0l3QkIwQUJySWdVa0FDQUZJQVEyQWd3Z0JTQUJOZ0lJSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGUVFocUlBTW9BZ0FnQXlnQ0JCQ2pFZ3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZJQU1vQWdRaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhBZ0JVRVlhaUlHSUFRZ0NDQUZRUWhxSUFFZ0JVRVVhaUFGUVJCcUVLSVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNsRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVLUVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNuRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVLWVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNwRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVLZ1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNzRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVLc1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxKZ0FnQUNBQklBSWdBeWdDQUNnQ0FDZ0NBQ0lBSUFBb0FnQW9BaFFSQUFCQkFYTVFpQUVMSmdBZ0FDQUJJQUlnQXlnQ0FDZ0NBQ2dDQUNJQUlBQW9BZ0FvQWhnUkFBQkJBWE1RaUFFTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCQ3VFZ3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRUswU0lBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCQ3hFZ3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRUs4U0lBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCQ3pFZ3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRUxJU0lBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTGdRUUJCSDhqQUVIUUFXc2lCU1FBSUFVZ0FqWUN0QUVnQlNBRU5nS3NBU0FGSUFFMkFxZ0JJQVVnQlVHMEFXbzJBckFCQWtBZ0F5Z0NBQ2dDQUNnQ0JDSUNJQUlvQWdBb0FnZ1JBQUFRWENnQ0JFR2dzeEpIQkVBZ0FTZ0NBQ0lCRUJ3Z0JVRUlha0hGclFWQjBnOUJDQ0FCUWNnQ2FoQVhJZ0ZCR0dwQnhmd0dFQTRhSUFFUUdDQUFRUUk2QUFRTUFRc2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEFpQUZLQUswQVNFRElBVkJBRFlDekFFZ0FpZ0NBQ0lCSUFFb0FnQW9BZ2dSQUFBaUFTQUZRY3dCYWhBaUlBRkdCRUFnQUNBRlFhZ0JhaUFDS0FJQUlBSW9BZ1FRdFJJTUFRc2dCVUtBZ0lDQWdBRTNBaXdnQlNBRlFRaHFJZ0UyQWlnZ0FTQUZLQUxNQVJBNUlBVkJLR29oQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUxNQVU4TkFTQURRUUFRSWlFSUlBVWdBaWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDdkFFZ0JTQUNLQUlFSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0s0QVNBRlFjQUJhaUlHSUFRZ0NDQUZRYWdCYWlBQklBVkJ2QUZxSUFWQnVBRnFFTFFTSUFZUUt3UkFJQVZCQ0dvZ0JVSEFBV29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUhBQVdvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ3dBRWdCU0FGS0FJb0lBVkJDR3BIT2dERUFTQUVJQU1nQlVIQUFXb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVZCQ0dvUUl3c2dCVUhRQVdva0FBdUJCQUVFZnlNQVFkQUJheUlGSkFBZ0JTQUNOZ0swQVNBRklBUTJBcXdCSUFVZ0FUWUNxQUVnQlNBRlFiUUJhallDc0FFQ1FDQURLQUlBS0FJQUtBSUVJZ0lnQWlnQ0FDZ0NDQkVBQUJCY0tBSUVRYUN6RWtjRVFDQUJLQUlBSWdFUUhDQUZRUWhxUWNXdEJVR09EMEVJSUFGQnlBSnFFQmNpQVVFWWFrSEYvQVlRRGhvZ0FSQVlJQUJCQWpvQUJBd0JDeUFCS0FJQUlRUWdBeWdDQUNnQ0FDRUNJQVVvQXJRQklRTWdCVUVBTmdMTUFTQUNLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFGcUVDSWdBVVlFUUNBQUlBVkJxQUZxSUFJb0FnQWdBaWdDQkJDM0Vnd0JDeUFGUW9DQWdJQ0FBVGNDTENBRklBVkJDR29pQVRZQ0tDQUJJQVVvQXN3QkVEa2dCVUVvYWlFSFFRQWhBUUpBQWtBRFFDQUJJQVVvQXN3QlR3MEJJQU5CQUJBaUlRZ2dCU0FDS0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdLOEFTQUZJQUlvQWdRaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQXJnQklBVkJ3QUZxSWdZZ0JDQUlJQVZCcUFGcUlBRWdCVUc4QVdvZ0JVRzRBV29RdGhJZ0JoQXJCRUFnQlVFSWFpQUZRY0FCYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUWNBQmFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nTEFBU0FGSUFVb0FpZ2dCVUVJYWtjNkFNUUJJQVFnQXlBRlFjQUJhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFSWFoQWpDeUFGUWRBQmFpUUFDNElEQVFSL0l3QkIwQUJySWdVa0FDQUZJQUkyQWd3Z0JTQUVOZ0lFSUFVZ0JVRU1hallDQ0NBRklBRTJBZ0FnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVVnQXlnQ0FDQURLQUlFRUxvU0RBRUxJQVZDZ0lDQWdJQUJOd0pFSUFVZ0JVRWdhaUlCTmdKQUlBRWdCU2dDVEJBNUlBVkJRR3NoQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUpNVHcwQklBSkJBQkFpSVFnZ0JTQURLQUlBSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lVSUFVZ0F5Z0NCQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNFQ0FGUVJocUlnWWdCQ0FJSUFVZ0FTQUZRUlJxSUFWQkVHb1F1UklnQmhBckJFQWdCVUVnYWlBRlFSaHFFQm9RSkNBQlFRRnFJUUVNQVFzTElBVkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBVWdCellDR0NBRklBVW9Ba0FnQlVFZ2FrYzZBQndnQkNBQ0lBVkJHR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFWQklHb1FJd3NnQlVIUUFHb2tBQXVDQXdFRWZ5TUFRZEFBYXlJRkpBQWdCU0FDTmdJTUlBVWdCRFlDQkNBRklBVkJER28yQWdnZ0JTQUJOZ0lBSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGSUFNb0FnQWdBeWdDQkJDOEVnd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRklBTW9BZ1FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaEFnQlVFWWFpSUdJQVFnQ0NBRklBRWdCVUVVYWlBRlFSQnFFTHNTSUFZUUt3UkFJQVZCSUdvZ0JVRVlhaEFhRUNRZ0FVRUJhaUVCREFFTEN5QUZRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUZJQWMyQWhnZ0JTQUZLQUpBSUFWQklHcEhPZ0FjSUFRZ0FpQUZRUmhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBRlFTQnFFQ01MSUFWQjBBQnFKQUFMZ2dNQkJIOGpBRUhRQUdzaUJTUUFJQVVnQWpZQ0RDQUZJQVEyQWdRZ0JTQUZRUXhxTmdJSUlBVWdBVFlDQUNBQktBSUFJUVFnQXlnQ0FDZ0NBQ0VESUFWQkFEWUNUQUpBSUFNb0FnQWlBU0FCS0FJQUtBSUlFUUFBSWdFZ0JVSE1BR29RSWlBQlJnUkFJQUFnQlNBREtBSUFJQU1vQWdRUXpSSU1BUXNnQlVLQWdJQ0FnQUUzQWtRZ0JTQUZRU0JxSWdFMkFrQWdBU0FGS0FKTUVEa2dCVUZBYXlFSFFRQWhBUUpBQWtBRFFDQUJJQVVvQWt4UERRRWdBa0VBRUNJaENDQUZJQU1vQWdBaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhRZ0JTQURLQUlFSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lRSUFWQkdHb2lCaUFFSUFnZ0JTQUJJQVZCRkdvZ0JVRVFhaERHRWlBR0VDc0VRQ0FGUVNCcUlBVkJHR29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCU0FITmdJWUlBVWdCU2dDUUNBRlFTQnFSem9BSENBRUlBSWdCVUVZYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JVRWdhaEFqQ3lBRlFkQUFhaVFBQ3hrQUlBQWdBU0FDSUFNb0FnQW9BZ0FvQWdRUStnRVFpQUVMTHdFQmZ5QUFJQUVnQWlBREtBSUFLQUlBS0FJQUVQb0JCSDhnQXlnQ0FDZ0NBQ2dDQkJENkFRVkJBQXNRaUFFTGdnTUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0FqWUNEQ0FGSUFRMkFnUWdCU0FGUVF4cU5nSUlJQVVnQVRZQ0FDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JTQURLQUlBSUFNb0FnUVE2aElNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCU0FES0FJRUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJUUlBVkJHR29pQmlBRUlBZ2dCU0FCSUFWQkZHb2dCVUVRYWhEbUVpQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUM0SURBUVIvSXdCQjBBQnJJZ1VrQUNBRklBSTJBZ3dnQlNBRU5nSUVJQVVnQlVFTWFqWUNDQ0FGSUFFMkFnQWdBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVWdBeWdDQUNBREtBSUVFSUVUREFFTElBVkNnSUNBZ0lBQk53SkVJQVVnQlVFZ2FpSUJOZ0pBSUFFZ0JTZ0NUQkE1SUFWQlFHc2hCMEVBSVFFQ1FBSkFBMEFnQVNBRktBSk1UdzBCSUFKQkFCQWlJUWdnQlNBREtBSUFJZ1lnQVNBR0tBSUFLQUlNRVFFQU5nSVVJQVVnQXlnQ0JDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0VDQUZRUmhxSWdZZ0JDQUlJQVVnQVNBRlFSUnFJQVZCRUdvUStSSWdCaEFyQkVBZ0JVRWdhaUFGUVJocUVCb1FKQ0FCUVFGcUlRRU1BUXNMSUFWQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFVZ0J6WUNHQ0FGSUFVb0FrQWdCVUVnYWtjNkFCd2dCQ0FDSUFWQkdHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVZCSUdvUUl3c2dCVUhRQUdva0FBdUNBd0VFZnlNQVFkQUFheUlGSkFBZ0JTQUNOZ0lNSUFVZ0JEWUNCQ0FGSUFWQkRHbzJBZ2dnQlNBQk5nSUFJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZJQU1vQWdBZ0F5Z0NCQkNSRXd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGSUFNb0FnUWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoQWdCVUVZYWlJR0lBUWdDQ0FGSUFFZ0JVRVVhaUFGUVJCcUVJa1RJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxEQUFnQUJEVERCb2dBQkFmQ3drQUlBQVEwd3dRSHdzR0FFSGxvZ01MQmdCQjBZWUZDd1lBUWVEREFnc1hBQ0FBUlFSQVFRQVBDeUFBUVpEa0R4Q1hFMEVBUndzY0FDQUFJQUVvQWdnZ0JSQ2dBd1JBSUFFZ0FpQURJQVFRMkF3TEM3RUNBUWQvSUFBZ0FTZ0NDQ0FGRUtBREJFQWdBU0FDSUFNZ0JCRFlEQThMSUFFdEFEVWhCaUFBS0FJTUlRa2dBVUVBT2dBMUlBRXRBRFFoQnlBQlFRQTZBRFFnQUVFUWFpSU1LQUlBSUFBb0FoUWdBU0FDSUFNZ0JDQUZFTlFNSUFZZ0FTMEFOU0lLY2lFR0lBY2dBUzBBTkNJTGNpRUhBa0FnQUVFWWFpSUlJQXdnQ1VFRGRHb2lDVThOQUFOQUlBZEJBWEVoQnlBR1FRRnhJUVlnQVMwQU5nMEJBa0FnQ3dSQUlBRW9BaGhCQVVZTkF5QUFMUUFJUVFKeERRRU1Bd3NnQ2tVTkFDQUFMUUFJUVFGeFJRMENDeUFCUVFBN0FUUWdDQ2dDQUNBSUtBSUVJQUVnQWlBRElBUWdCUkRVRENBQkxRQTFJZ29nQm5JaEJpQUJMUUEwSWdzZ0IzSWhCeUFJUVFocUlnZ2dDVWtOQUFzTElBRWdCa0gvQVhGQkFFYzZBRFVnQVNBSFFmOEJjVUVBUnpvQU5BdVVBUUFnQUNBQktBSUlJQVFRb0FNRVFDQUJJQUlnQXhEWERBOExBa0FnQUNBQktBSUFJQVFRb0FORkRRQUNRQ0FDSUFFb0FoQkhCRUFnQVNnQ0ZDQUNSdzBCQ3lBRFFRRkhEUUVnQVVFQk5nSWdEd3NnQVNBQ05nSVVJQUVnQXpZQ0lDQUJJQUVvQWloQkFXbzJBaWdDUUNBQktBSWtRUUZIRFFBZ0FTZ0NHRUVDUncwQUlBRkJBVG9BTmdzZ0FVRUVOZ0lzQ3d2REJBRURmeUFBSUFFb0FnZ2dCQkNnQXdSQUlBRWdBaUFERU5jTUR3c0NRQ0FBSUFFb0FnQWdCQkNnQXdSQUFrQWdBaUFCS0FJUVJ3UkFJQUVvQWhRZ0FrY05BUXNnQTBFQlJ3MENJQUZCQVRZQ0lBOExJQUVnQXpZQ0lDQUJLQUlzUVFSSEJFQWdBRUVRYWlJRklBQW9BZ3hCQTNScUlRZEJBQ0VESUFFQ2Z3SkFBMEFDUUNBRklBZFBEUUFnQVVFQU93RTBJQVVvQWdBZ0JTZ0NCQ0FCSUFJZ0FrRUJJQVFRMUF3Z0FTMEFOZzBBQWtBZ0FTMEFOVVVOQUNBQkxRQTBCRUJCQVNFRElBRW9BaGhCQVVZTkJFRUJJUVlnQUMwQUNFRUNjUTBCREFRTFFRRWhCaUFBTFFBSVFRRnhSUTBEQ3lBRlFRaHFJUVVNQVFzTFFRUWdCa1VOQVJvTFFRTUxOZ0lzSUFOQkFYRU5BZ3NnQVNBQ05nSVVJQUVnQVNnQ0tFRUJhallDS0NBQktBSWtRUUZIRFFFZ0FTZ0NHRUVDUncwQklBRkJBVG9BTmc4TElBQW9BZ3doQmlBQVFSQnFJZ2NvQWdBZ0FDZ0NGQ0FCSUFJZ0F5QUVFT1VKSUFCQkdHb2lCU0FISUFaQkEzUnFJZ1pQRFFBQ1FDQUFLQUlJSWdCQkFuRkZCRUFnQVNnQ0pFRUJSdzBCQ3dOQUlBRXRBRFlOQWlBRktBSUFJQVVvQWdRZ0FTQUNJQU1nQkJEbENTQUZRUWhxSWdVZ0Jra05BQXNNQVFzZ0FFRUJjVVVFUUFOQUlBRXRBRFlOQWlBQktBSWtRUUZHRFFJZ0JTZ0NBQ0FGS0FJRUlBRWdBaUFESUFRUTVRa2dCVUVJYWlJRklBWkpEUUFNQWdzQUN3TkFJQUV0QURZTkFTQUJLQUlrUVFGR0JFQWdBU2dDR0VFQlJnMENDeUFGS0FJQUlBVW9BZ1FnQVNBQ0lBTWdCQkRsQ1NBRlFRaHFJZ1VnQmtrTkFBc0xDM3dCQW44Z0FDQUJLQUlJUVFBUW9BTUVRQ0FCSUFJZ0F4RFdEQThMSUFBb0Fnd2hCQ0FBUVJCcUlnVW9BZ0FnQUNnQ0ZDQUJJQUlnQXhDVkV3SkFJQUJCR0dvaUFDQUZJQVJCQTNScUlnUlBEUUFEUUNBQUtBSUFJQUFvQWdRZ0FTQUNJQU1RbFJNZ0FTMEFOZzBCSUFCQkNHb2lBQ0FFU1EwQUN3c0xHZ0FnQUNBQktBSUlRUUFRb0FNRVFDQUJJQUlnQXhEV0RBc0xNd0FnQUNBQktBSUlRUUFRb0FNRVFDQUJJQUlnQXhEV0RBOExJQUFvQWdnaUFDQUJJQUlnQXlBQUtBSUFLQUljRVFZQUMvVUJBQ0FBSUFFb0FnZ2dCQkNnQXdSQUlBRWdBaUFERU5jTUR3c0NRQ0FBSUFFb0FnQWdCQkNnQXdSQUFrQWdBaUFCS0FJUVJ3UkFJQUVvQWhRZ0FrY05BUXNnQTBFQlJ3MENJQUZCQVRZQ0lBOExJQUVnQXpZQ0lBSkFJQUVvQWl4QkJFWU5BQ0FCUVFBN0FUUWdBQ2dDQ0NJQUlBRWdBaUFDUVFFZ0JDQUFLQUlBS0FJVUVRb0FJQUV0QURVRVFDQUJRUU0yQWl3Z0FTMEFORVVOQVF3REN5QUJRUVEyQWl3TElBRWdBallDRkNBQklBRW9BaWhCQVdvMkFpZ2dBU2dDSkVFQlJ3MEJJQUVvQWhoQkFrY05BU0FCUVFFNkFEWVBDeUFBS0FJSUlnQWdBU0FDSUFNZ0JDQUFLQUlBS0FJWUVRZ0FDd3M1QUNBQUlBRW9BZ2dnQlJDZ0F3UkFJQUVnQWlBRElBUVEyQXdQQ3lBQUtBSUlJZ0FnQVNBQ0lBTWdCQ0FGSUFBb0FnQW9BaFFSQ2dBTG9RRUJBbjhqQUVGQWFpSURKQUFDZjBFQklBQWdBVUVBRUtBRERRQWFRUUFnQVVVTkFCcEJBQ0FCUWJEakR4Q1hFeUlCUlEwQUdpQURRUWhxSWdSQkJISkJBRUUwRUhrYUlBTkJBVFlDT0NBRFFYODJBaFFnQXlBQU5nSVFJQU1nQVRZQ0NDQUJJQVFnQWlnQ0FFRUJJQUVvQWdBb0Fod1JCZ0FnQXlnQ0lDSUFRUUZHQkVBZ0FpQURLQUlZTmdJQUN5QUFRUUZHQ3lFQUlBTkJRR3NrQUNBQUN3VUFFRzhBQzRJREFRUi9Jd0JCMEFCcklnVWtBQ0FGSUFJMkFnd2dCU0FFTmdJRUlBVWdCVUVNYWpZQ0NDQUZJQUUyQWdBZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFVZ0F5Z0NBQ0FES0FJRUVKWVREQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVWdBeWdDQkNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRUNBRlFSaHFJZ1lnQkNBSUlBVWdBU0FGUVJScUlBVkJFR29RbEJNZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF0RkFDTUFRUkJySWdFa0FDQUFRUUFnQVNBQ0lBTVFoUW9pQUJCN1FRQVF1UlJCQUJDcUdDSUNFSHNnQUJCN0lBSVFPMEVCYWhDNUZCb2dBQkFQR2lBQlFSQnFKQUFMVHdBakFFRWdheUlBSkFBZ0FFRVFhaUFCSUFJUWhRb2hBU0FBSUFNZ0JCQ0ZDaUVDSUFFUWV5QUNFSHNRb2dJaEF5QUNFQThhSUFFUUR4b2dBRUVnYWlRQVFYOGdBMEVBUnlBRFFRQklHd3NKQUNBQUVLUVRFQjhMVWdBakFFRVFheUlCSkFBZ0FFRUFJQUVnQWlBREVJd0hJZ0FRandKQkFCQzRGRUVBRVAwTUlnSVFqd0lnQUJDUEFpQUNLQUlFSUFJdEFBc1FtQUZCQVdvUXVCUWFJQUFRaHdFYUlBRkJFR29rQUF1Z0FRRUNmeU1BUVNCcklnQWtBQ0FBUVJCcUlBRWdBaENNQnlFRklBQWdBeUFFRUl3SElRWWdCUkNQQWlFQkFrQWdCaENQQWlJRUtBSUFJZ0pGSUFFb0FnQWlBMFZ5SUFJZ0EwZHlEUUFEUUNBRUtBSUVJZ0pGSUFFb0FnUWlBMFZ5RFFFZ0JFRUVhaUVFSUFGQkJHb2hBU0FDSUFOR0RRQUxDeUFESUFKcklRRWdCaENIQVJvZ0JSQ0hBUm9nQUVFZ2FpUUFRWDhnQVVFQVJ5QUJRUUJJR3d1Q0F3RUVmeU1BUWRBQWF5SUZKQUFnQlNBQ05nSU1JQVVnQkRZQ0JDQUZJQVZCREdvMkFnZ2dCU0FCTmdJQUlBRW9BZ0FoQkNBREtBSUFLQUlBSVFNZ0JVRUFOZ0pNQWtBZ0F5Z0NBQ0lCSUFFb0FnQW9BZ2dSQUFBaUFTQUZRY3dBYWhBaUlBRkdCRUFnQUNBRklBTW9BZ0FnQXlnQ0JCQ2lFd3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZJQU1vQWdRaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhBZ0JVRVlhaUlHSUFRZ0NDQUZJQUVnQlVFVWFpQUZRUkJxRUo0VElBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTENRQWdBQkNsRXhBZkN3a0FJQUFRcGhNUUh3c0pBQ0FBRUtjVEVCOExDUUFnQUJDcUV4QWZDd2tBSUFBUXF4TVFId3NsQUFOQUlBRWdBa2NFUUNBQklBRXRBQUFRdGhRNkFBQWdBVUVCYWlFQkRBRUxDeUFDQ3hFQUlBRkIvd0Z4RUxZVVFSaDBRUmgxQ3lVQUEwQWdBU0FDUndSQUlBRWdBUzBBQUJDM0ZEb0FBQ0FCUVFGcUlRRU1BUXNMSUFJTEVRQWdBVUgvQVhFUXR4UkJHSFJCR0hVTHdnVUJBbjhnQUVHSUJHb2hBVUVBSVFBRFFBSkFJQUVRT3lBQVRRMEFJQUVnQUJEbUFTMEFBRUVsUmcwQUlBQkJBV29oQUF3QkN3c0NRQUpBQWtBQ1FDQUJJQUJCQVdvUTVnRXNBQUFpQWtINUFFY0VRQ0FDUWVRQVJnMENJQUpCN1FCR0RRRWdBa0haQUVjTkF3c2dBRUVDYWlFQUEwQUNRQ0FCRURzZ0FFME5BQ0FCSUFBUTVnRXRBQUJCSlVZTkFDQUFRUUZxSVFBTUFRc0xJQUVRT3lBQVJnMENJQUVnQUVFQmFoRG1BU3dBQUNJQ1FlUUFSd1JBSUFKQjdRQkhEUU1nQUVFQ2FpRUFBMEFDUUNBQkVEc2dBRTBOQUNBQklBQVE1Z0V0QUFCQkpVWU5BQ0FBUVFGcUlRQU1BUXNMSUFFUU95QUFSZzBEUVFNaEFpQUJJQUJCQVdvUTVnRXRBQUJCNUFCSERRTU1CQXNnQUVFQ2FpRUFBMEFDUUNBQkVEc2dBRTBOQUNBQklBQVE1Z0V0QUFCQkpVWU5BQ0FBUVFGcUlRQU1BUXNMSUFFUU95QUFSZzBDUVFRaEFpQUJJQUJCQVdvUTVnRXRBQUJCN1FCSERRSU1Bd3NnQUVFQ2FpRUFBMEFDUUNBQkVEc2dBRTBOQUNBQklBQVE1Z0V0QUFCQkpVWU5BQ0FBUVFGcUlRQU1BUXNMSUFFUU95QUFSZzBCSUFFZ0FFRUJhaERtQVMwQUFFSGtBRWNOQVNBQVFRSnFJUUFEUUFKQUlBRVFPeUFBVFEwQUlBRWdBQkRtQVMwQUFFRWxSZzBBSUFCQkFXb2hBQXdCQ3dzZ0FSQTdJQUJHRFFGQkFpRUNJQUVnQUVFQmFpSUFFT1lCTFFBQVFma0FSZzBDSUFFZ0FCRG1BUzBBQUVIWkFFY05BUXdDQ3lBQVFRSnFJUUFEUUFKQUlBRVFPeUFBVFEwQUlBRWdBQkRtQVMwQUFFRWxSZzBBSUFCQkFXb2hBQXdCQ3dzZ0FSQTdJQUJHRFFBZ0FTQUFRUUZxRU9ZQkxRQUFRZTBBUncwQUlBQkJBbW9oQUFOQUFrQWdBUkE3SUFCTkRRQWdBU0FBRU9ZQkxRQUFRU1ZHRFFBZ0FFRUJhaUVBREFFTEN5QUJFRHNnQUVZTkFFRUJJUUlnQVNBQVFRRnFJZ0FRNWdFdEFBQkIrUUJHRFFFZ0FTQUFFT1lCTFFBQVFka0FSZzBCQzBFQUlRSUxJQUlMQ1FBZ0FCQ3ZFeEFmQ3o0QkFYOERRQ0FCSUFKR1JRUkFJQVFnQXlBQktBSUFJQUFvQWdnUTRRd2lCU0FGUVg5R0d6b0FBQ0FFUVFGcUlRUWdBVUVFYWlFQkRBRUxDeUFDQzRJREFRUi9Jd0JCMEFCcklnVWtBQ0FGSUFJMkFnd2dCU0FFTmdJRUlBVWdCVUVNYWpZQ0NDQUZJQUUyQWdBZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFVZ0F5Z0NBQ0FES0FJRUVLd1REQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVWdBeWdDQkNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRUNBRlFSaHFJZ1lnQkNBSUlBVWdBU0FGUVJScUlBVkJFR29RcVJNZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUFzY0FDQUNJQUVnQUNnQ0NCRGhEQ0lBSUFCQmYwWWJRUmgwUVJoMUN6SUFBMEFnQVNBQ1JrVUVRQ0FESUFFc0FBQWdBQ2dDQ0JDeEV6WUNBQ0FEUVFScUlRTWdBVUVCYWlFQkRBRUxDeUFDQ3d3QUlBRWdBQ2dDQ0JDeEV3c2xBQU5BSUFFZ0FrY0VRQ0FCSUFFb0FnQVFoUTAyQWdBZ0FVRUVhaUVCREFFTEN5QUNDd2NBSUFFUWhRMExKUUFEUUNBQklBSkhCRUFnQVNBQktBSUFFSVFOTmdJQUlBRkJCR29oQVF3QkN3c2dBZ3NIQUNBQkVJUU5DL0FCQVFsL0lBRkJnQVJ4SVFRZ0FVR0FBbkVoQlNBQlFZQUJjU0VHSUFGQndBQnhJUWNnQVVFZ2NTRUlJQUZCRUhFaENTQUJRUWh4SVFvZ0FVRUVjU0VMSUFGQkFuRWhEQ0FCUVFGeElRRUNRQU5BSUFJZ0EwWU5BU0FDS0FJQUlRQUNRQUpBSUFFRVFDQUFFSTRLRFFFTElBd0VRQ0FBRUkwS0RRRUxJQXNFUUNBQUVJd0tEUUVMSUFvRVFDQUFFSXNLRFFFTElBa0VRQ0FBRUlvS0RRRUxJQWdFUUNBQUVJa0tEUUVMSUFjRVFDQUFFTG9ERFFFTElBWUVRQ0FBRUlnS0RRRUxJQVVFUUNBQUVJY0tEUUVMSUFSRkRRRWdBQkNHQ2tVTkFRc2dBa0VFYWlFQ0RBRUxDeUFDSVFNTElBTUw3QUVCQ1g4Z0FVR0FCSEVoQkNBQlFZQUNjU0VGSUFGQmdBRnhJUVlnQVVIQUFIRWhCeUFCUVNCeElRZ2dBVUVRY1NFSklBRkJDSEVoQ2lBQlFRUnhJUXNnQVVFQ2NTRU1JQUZCQVhFaEFRSkFBMEFnQWlBRFJnMEJJQUlvQWdBaEFBSkFJQUVFUUNBQUVJNEtEUUVMSUF3RVFDQUFFSTBLRFFFTElBc0VRQ0FBRUl3S0RRRUxJQW9FUUNBQUVJc0tEUUVMSUFrRVFDQUFFSW9LRFFFTElBZ0VRQ0FBRUlrS0RRRUxJQWNFUUNBQUVMb0REUUVMSUFZRVFDQUFFSWdLRFFFTElBVUVRQ0FBRUljS0RRRUxJQVFFUUNBQUVJWUtEUUVMSUFKQkJHb2hBZ3dCQ3dzZ0FpRURDeUFEQzRJQ0FRcC9BMEFnQVNBQ1J3UkFBa0FnQXdKL0lBRW9BZ0FpQUVIL0FFMEVRQ0FBUVFKMFFZQ1dEMm9vQWdBTUFRc2dBMEVBTmdJQUlBTWdBQkNPQ2tFQVJ5SUxRUUp5SUFzZ0FCQ05DaUlNR3lJRVFRUnlJQVFnQUJDTUNpSUVHeUlGUVFoeUlBVWdBQkNMQ2lJRkd5SUdRUkJ5SUFZZ0FCQ0tDaUlHR3lJSFFTQnlJQWNnQUJDSkNpSUhHeUlJUWNBQWNpQUlJQUFRdWdNaUNCc2lDVUdBQVhJZ0NTQUFFSWdLSWdrYklncEJnQUp5SUFvZ0FCQ0hDaUlLR3lJTklBc2dDaUFKSUFnZ0J5QUdJQVVnQkNBTWNuSnljbkp5Y2hzMkFnQWdBQkNHQ2tVTkFTQU5RWUFFY2dzMkFnQUxJQU5CQkdvaEF5QUJRUVJxSVFFTUFRc0xJQUlMMmdFQVFRQWhBQ0FCUVFGeEJFQWdBaENPQ2tFQVJ5RUFDeUFCUVFKeEJFQWdBQ0FDRUkwS1FRQkhjaUVBQ3lBQlFRUnhCRUFnQUNBQ0VJd0tRUUJIY2lFQUN5QUJRUWh4QkVBZ0FDQUNFSXNLUVFCSGNpRUFDeUFCUVJCeEJFQWdBQ0FDRUlvS1FRQkhjaUVBQ3lBQlFTQnhCRUFnQUNBQ0VJa0tRUUJIY2lFQUN5QUJRY0FBY1FSQUlBQWdBaEM2QTBFQVIzSWhBQXNnQVVHQUFYRUVRQ0FBSUFJUWlBcEJBRWR5SVFBTElBRkJnQUp4QkVBZ0FDQUNFSWNLUVFCSGNpRUFDeUFCUVlBRWNRUi9JQUFnQWhDR0NrRUFSM0lGSUFBTEMwVUJBWDhqQUVFUWF5SUZKQUFnQlNBRU5nSU1JQVVnQVRZQ0NDQUFJQUVvQWdBZ0FpQUZRUWhxSUFNb0FnQW9BZ0FpQUNnQ0FDQUFLQUlFRUxJVElBVkJFR29rQUF1eEJnRURmeUFBUVF4cUlnQkIvQU5xSVFNZ0FDZ0NnQVFnQUMwQWh3UVFtQUVoQWdOQUFrQWdBU0FDUmdSQUlBSWhBUXdCQ3lBRElBRVE5UUVvQWdCQkpVWU5BQ0FCUVFGcUlRRU1BUXNMQWtBQ1FBSkFBa0FDUUNBRElBRkJBV29ROVFFb0FnQWlBRUg1QUVjRVFDQUFRZVFBUmcwQklBQkI3UUJHRFFJZ0FFSFpBRWNOQkFzZ0FpQUJRUUpxSWdFZ0FTQUNTUnNoQUFOQUFrQWdBU0FDU1FSQUlBTWdBUkQxQVNnQ0FFRWxSdzBCSUFFaEFBc2dBQ0FDUmcwRklBTWdBRUVCYWhEMUFTZ0NBQ0lCUWVRQVJnMEVJQUZCN1FCSERRVWdBaUFBUVFKcUlnRWdBU0FDU1JzaEFBTkFBa0FnQVNBQ1NRUkFJQU1nQVJEMUFTZ0NBRUVsUncwQklBRWhBQXNnQUNBQ1JnMEhRUU1oQVNBRElBQkJBV29ROVFFb0FnQkI1QUJIRFFjTUNBc2dBVUVCYWlFQkRBQUxBQXNnQVVFQmFpRUJEQUFMQUFzZ0FpQUJRUUpxSWdFZ0FTQUNTUnNoQUFOQUFrQWdBU0FDU1FSQUlBTWdBUkQxQVNnQ0FFRWxSdzBCSUFFaEFBc2dBQ0FDUmcwRUlBTWdBRUVCYWhEMUFTZ0NBRUh0QUVjTkJDQUNJQUJCQW1vaUFTQUJJQUpKR3lFQUEwQUNRQ0FCSUFKSkJFQWdBeUFCRVBVQktBSUFRU1ZIRFFFZ0FTRUFDeUFBSUFKR0RRWkJBU0VCSUFNZ0FFRUJhaUlBRVBVQktBSUFRZmtBUmcwSElBTWdBQkQxQVNnQ0FFSFpBRVlOQnd3R0N5QUJRUUZxSVFFTUFBc0FDeUFCUVFGcUlRRU1BQXNBQ3lBQ0lBRkJBbW9pQVNBQklBSkpHeUVBQTBBQ1FDQUJJQUpKQkVBZ0F5QUJFUFVCS0FJQVFTVkhEUUVnQVNFQUN5QUFJQUpHRFFNZ0F5QUFRUUZxRVBVQktBSUFRZVFBUncwRElBSWdBRUVDYWlJQklBRWdBa2tiSVFBRFFBSkFJQUVnQWtrRVFDQURJQUVROVFFb0FnQkJKVWNOQVNBQklRQUxJQUFnQWtZTkJVRUNJUUVnQXlBQVFRRnFJZ0FROVFFb0FnQkIrUUJHRFFZZ0F5QUFFUFVCS0FJQVFka0FSdzBGREFZTElBRkJBV29oQVF3QUN3QUxJQUZCQVdvaEFRd0FDd0FMSUFJZ0FFRUNhaUlCSUFFZ0Fra2JJUUFEUUFKQUlBRWdBa2tFUUNBRElBRVE5UUVvQWdCQkpVY05BU0FCSVFBTElBQWdBa1lOQWtFRUlRRWdBeUFBUVFGcUVQVUJLQUlBUWUwQVJ3MENEQU1MSUFGQkFXb2hBUXdBQ3dBTFFRQWhBUXNnQVFzSkFDQUFFTHdURUI4TENRQWdBQkRCRXhBZkN6UUFBMEFnQVNBQ1JrVUVRQ0FFSUFNZ0FTd0FBQ0lBSUFCQkFFZ2JPZ0FBSUFSQkFXb2hCQ0FCUVFGcUlRRU1BUXNMSUFJTERBQWdBaUFCSUFGQkFFZ2JDeW9BQTBBZ0FTQUNSa1VFUUNBRElBRXRBQUE2QUFBZ0EwRUJhaUVESUFGQkFXb2hBUXdCQ3dzZ0Fnc1BBQ0FBSUFFZ0FrR2dtdzRROHhJTEpBQWdBVUVBVGdSL0lBRkIvd0Z4UVFKMFFhQ2JEbW9vQWdBRklBRUxRUmgwUVJoMUN3OEFJQUFnQVNBQ1FhQ25EaER6RWdza0FDQUJRUUJPQkg4Z0FVSC9BWEZCQW5SQm9LY09haWdDQUFVZ0FRdEJHSFJCR0hVTENRQWdBQkRzREJBZkN6VUFBMEFnQVNBQ1JrVUVRQ0FFSUFFb0FnQWlBQ0FESUFCQmdBRkpHem9BQUNBRVFRRnFJUVFnQVVFRWFpRUJEQUVMQ3lBQ0N4TUFJQUVnQWlBQlFZQUJTUnRCR0hSQkdIVUxLZ0FEUUNBQklBSkdSUVJBSUFNZ0FTd0FBRFlDQUNBRFFRUnFJUU1nQVVFQmFpRUJEQUVMQ3lBQ0N3OEFJQUFnQVNBQ1FhQ2JEaEQwRWdzYkFDQUJRZjhBVFFSL0lBRkJBblJCb0pzT2FpZ0NBQVVnQVFzTER3QWdBQ0FCSUFKQm9LY09FUFFTQ3hzQUlBRkIvd0JOQkg4Z0FVRUNkRUdncHc1cUtBSUFCU0FCQ3d0QkFBSkFBMEFnQWlBRFJnMEJBa0FnQWlnQ0FDSUFRZjhBU3cwQUlBQkJBblJCZ0pZUGFpZ0NBQ0FCY1VVTkFDQUNRUVJxSVFJTUFRc0xJQUloQXdzZ0F3dEFBQU5BQWtBZ0FpQURSd1IvSUFJb0FnQWlBRUgvQUVzTkFTQUFRUUowUVlDV0Qyb29BZ0FnQVhGRkRRRWdBZ1VnQXdzUEN5QUNRUVJxSVFJTUFBc0FDMGtCQVg4RFFDQUJJQUpHUlFSQVFRQWhBQ0FESUFFb0FnQWlCRUgvQUUwRWZ5QUVRUUowUVlDV0Qyb29BZ0FGUVFBTE5nSUFJQU5CQkdvaEF5QUJRUVJxSVFFTUFRc0xJQUlMSlFCQkFDRUFJQUpCL3dCTkJIOGdBa0VDZEVHQWxnOXFLQUlBSUFGeFFRQkhCVUVBQ3dzM0FDTUFRUkJySWdBa0FDQUFJQVEyQWd3Z0FDQURJQUpyTmdJSUlBQkJER29nQUVFSWFoQ0lCU2dDQUNFQklBQkJFR29rQUNBQkN3c0FJQUJCNXVNREVCUWFDd3NBSUFCQmdNd0RFQlFhQ3dzQUlBQkJqS0FQRVAwR0N3c0FJQUJCK0o4UEVQMEdDeHNBUVpqQUlDRUFBMEFnQUVFTWF4QVBJZ0JCOEw0Z1J3MEFDd3NiQUVId3d5QWhBQU5BSUFCQkRHc1FEeUlBUWREQklFY05BQXNMR3dCQnlNWWdJUUFEUUNBQVFReHJFQThpQUVHd3hpQkhEUUFMQ3drQVFZeStJQkFQR2dzbEFFR1l2aUF0QUFCRkJFQkJqTDRnUVlUakJSQVVHa0dZdmlCQkFUb0FBQXRCakw0Z0N3a0FRZXk5SUJBUEdnc2tBRUg0dlNBdEFBQkZCRUJCN0wwZ1FhOGVFQlFhUWZpOUlFRUJPZ0FBQzBIc3ZTQUwxZ2dCQzM4akFFSEFBV3NpQlNRQUlBTW9BZ0FvQWdBaUF5Z0NCQ0VKSUFNb0FnQWlDeUFMS0FJQUtBSUlFUUFBSWdjb0FnUWhDQ0FKSUFrb0FnQW9BZ2dSQUFBaEF5QUhRUUFnQ0VId3FoSkdHeUlNS0FJWUlRb2dBeWdDQkNFSElBVkNnSUNBZ01BQU53SlVJQU5CQUNBSFFmQ3FFa1liSVEwZ0JTQUZRVUJyTmdKUUlBVkJnQUZxUVFSeUlRZ2dCVUV3YWlFT0lBVkIwQUJxSVE5QkFDRUhBa0FDUUFOQUlBY2dEU2dDSkU4TkFTQUZRb0NBZ0lEQUFEY0NOQ0FGSUFWQklHbzJBakJCQUNFREFrQURRQ0FNS0FJZ0lBTkxCRUFnQlNBTE5nSzhBU0FGSUFrMkFyZ0JJQVZCQURvQUhDQUZJQVZCdkFGcU5nS3dBU0FGSUFWQnVBRnFOZ0tvQVFKQUFrQUNRQUpBSUF3b0FpUkJBbXNPQXdBQkFnTUxJQVVnQVRZQ2dBRWdDQ0FFS0FJUU5nSVFJQWdnQkNrQ0NEY0NDQ0FJSUFRcEFnQTNBZ0FnQlNBS05nS1lBU0FGSUFWQnNBRnFJZ1lnQTBFQUVJMEJOZ0o4SUFVZ0JpQURRUUVRalFFMkFuZ2dCU0FGUWFnQmFpSUdRUUFnQnhDTkFUWUNkQ0FGSUFaQkFTQUhFSTBCTmdKd0lBVkJvQUZxSUFWQmdBRnFJQVZCL0FCcUlBVkIrQUJxSUFWQjlBQnFJQVZCOEFCcUVQRU1JQVVnQlNrRG9BRTNBeGdNQWdzZ0JTQUJOZ0tBQVNBSUlBUW9BaEEyQWhBZ0NDQUVLUUlJTndJSUlBZ2dCQ2tDQURjQ0FDQUZJQW8yQXBnQklBVWdCVUd3QVdvaUJpQURRUUFRalFFMkFud2dCU0FHSUFOQkFSQ05BVFlDZUNBRklBWWdBMEVDRUkwQk5nSjBJQVVnQlVHb0FXb2lCa0VBSUFjUWpRRTJBbkFnQlNBR1FRRWdCeENOQVRZQ2JDQUZJQVpCQWlBSEVJMEJOZ0pvSUFWQm9BRnFJQVZCZ0FGcUlBVkIvQUJxSUFWQitBQnFJQVZCOUFCcUlBVkI4QUJxSUFWQjdBQnFJQVZCNkFCcUVQQU1JQVVnQlNrRG9BRTNBeGdNQVFzZ0JTQUJOZ0tBQVNBSUlBUW9BaEEyQWhBZ0NDQUVLUUlJTndJSUlBZ2dCQ2tDQURjQ0FDQUZJQW8yQXBnQklBVWdCVUd3QVdvaUJpQURRUUFRalFFMkFud2dCU0FHSUFOQkFSQ05BVFlDZUNBRklBWWdBMEVDRUkwQk5nSjBJQVVnQmlBRFFRTVFqUUUyQW5BZ0JTQUZRYWdCYWlJR1FRQWdCeENOQVRZQ2JDQUZJQVpCQVNBSEVJMEJOZ0pvSUFVZ0JrRUNJQWNRalFFMkFtUWdCU0FHUVFNZ0J4Q05BVFlDWUNBRlFhQUJhaUFGUVlBQmFpQUZRZndBYWlBRlFmZ0FhaUFGUWZRQWFpQUZRZkFBYWlBRlFld0FhaUFGUWVnQWFpQUZRZVFBYWlBRlFlQUFhaER0RENBRklBVXBBNkFCTndNWUN5QUZRUmhxRURBTkFpQUZRU0JxSUFWQkdHb1FHaEJ4SUFOQkFXb2hBd3dCQ3dzZ0FrRUFJQUlvQWdSQjhLb1NSaHNvQWh3aEF5QUJLQUlBSVFZZ0JVRUFPZ0FVSUFVZ0RqWUNFQ0FGSUFZZ0F5QUZRUkJxRURvMkFvQUJJQWRCQVdvaEJ5QUZRVUJySUFWQmdBRnFFSEVnQlVFZ2FoQmVEQUVMQ3lBQVFRSTZBQVFnQlVFZ2FoQmVEQUVMSUFFb0FnQWhBU0FGUVFBNkFBd2dCU0FQTmdJSUlBRWdBaUFGUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRVUJyRUY0Z0JVSEFBV29rQUFzSkFFSE12aUFRRHhvTEpRQkIyTDRnTFFBQVJRUkFRY3krSUVHNXZ3SVFGQnBCMkw0Z1FRRTZBQUFMUWN5K0lBc0pBRUdzdmlBUUR4b0xKUUJCdUw0Z0xRQUFSUVJBUWF5K0lFSHN2UVVRRkJwQnVMNGdRUUU2QUFBTFFheStJQXR0QUVIZ3ZTQXRBQUFFUUVIY3ZTQW9BZ0FQQzBISXhpQXRBQUJGQkVCQnNNWWdJUUFEUUNBQUVIUkJER29pQUVISXhpQkhEUUFMUWNqR0lFRUJPZ0FBQzBHd3hpQkIxb1VHRUhWQnZNWWdRZE9GQmhCMVFlQzlJRUVCT2dBQVFkeTlJRUd3eGlBMkFnQkJzTVlnQzhJQ0FFSFF2U0F0QUFBRVFFSE12U0FvQWdBUEMwSHd3eUF0QUFCRkJFQkIwTUVnSVFBRFFDQUFFSFJCREdvaUFFSHd3eUJIRFFBTFFmRERJRUVCT2dBQUMwSFF3U0JCcWhNUWRVSGN3U0JCb1JNUWRVSG93U0JCK0tVREVIVkI5TUVnUVlIL0FoQjFRWURDSUVHckhoQjFRWXpDSUVIMnJRUVFkVUdZd2lCQjloTVFkVUdrd2lCQnhDMFFkVUd3d2lCQnlmc0JFSFZCdk1JZ1FlNzZBUkIxUWNqQ0lFSEErd0VRZFVIVXdpQkIzdjBCRUhWQjRNSWdRY3IwQWhCMVFlekNJRUdadWdVUWRVSDR3aUJCbkpBQ0VIVkJoTU1nUWZISUFSQjFRWkRESUVHckhoQjFRWnpESUVIcHdnSVFkVUdvd3lCQnNQb0NFSFZCdE1NZ1FhMjNBeEIxUWNERElFSFB0UUlRZFVITXd5QkIzdmNBRUhWQjJNTWdRZllwRUhWQjVNTWdRYUdLQlJCMVFkQzlJRUVCT2dBQVFjeTlJRUhRd1NBMkFnQkIwTUVnQzkwQkFFSEF2U0F0QUFBRVFFRzh2U0FvQWdBUEMwR1l3Q0F0QUFCRkJFQkI4TDRnSVFBRFFDQUFFSFJCREdvaUFFR1l3Q0JIRFFBTFFaakFJRUVCT2dBQUMwSHd2aUJCbGg0UWRVSDh2aUJCblI0UWRVR0l2eUJCK3gwUWRVR1V2eUJCZ3g0UWRVR2d2eUJCOGgwUWRVR3N2eUJCcEI0UWRVRzR2eUJCalI0UWRVSEV2eUJCNWNJQ0VIVkIwTDhnUVl2dkFoQjFRZHkvSUVISzFnTVFkVUhvdnlCQmtmMEVFSFZCOUw4Z1FlY3FFSFZCZ01BZ1FjZWdBeEIxUVl6QUlFSEgrd0FRZFVIQXZTQkJBVG9BQUVHOHZTQkI4TDRnTmdJQVFmQytJQXNjQUVISXdTQWhBQU5BSUFCQkRHc1Fod0VpQUVHZ3dDQkhEUUFMQ3h3QVFhREdJQ0VBQTBBZ0FFRU1heENIQVNJQVFZREVJRWNOQUFzTDV3Z0JDWDhqQUVHQUFXc2lCU1FBSUFNb0FnQW9BZ0FvQWdBaUJpQUdLQUlBS0FJSUVRQUFFTElDSVFjZ0F5Z0NBQ2dDQUNnQ0JDSUdJQVlvQWdBb0FnZ1JBQUFoQmlBSEtBSVlJUXNnQmlnQ0JDRUhJQVZDZ0lDQWdNQUFOd0lzSUFaQkFDQUhRZkNxRWtZYklRd2dCU0FGUVJocU5nSW9JQVZCMkFCcVFRUnlJUW9nQlVFb2FpRU5Ba0FDUUFOQUlBZ2dEQ2dDSkU4TkFTQURLQUlBS0FJQUlnY29BZ1FoQmlBSEtBSUFJUWNnQlVFQU9nQVVBa0FDUUFKQUFrQWdEQ2dDSUVFQ2F3NERBQUVDQXdzZ0JTQUJOZ0pZSUFvZ0JDZ0NFRFlDRUNBS0lBUXBBZ2czQWdnZ0NpQUVLUUlBTndJQUlBVWdDellDY0NBRklBWWdDQ0FHS0FJQUtBSU1FUUVBSWdsQkFDQUpLQUlBS0FJTUVRRUFOZ0pVSUFVZ0JpQUlJQVlvQWdBb0Fnd1JBUUFpQmtFQklBWW9BZ0FvQWd3UkFRQTJBbEFnQlNBSFFRQWdCeWdDQUNnQ0RCRUJBRFlDVENBRklBZEJBU0FIS0FJQUtBSU1FUUVBTmdKSUlBVkIrQUJxSUFWQjJBQnFJQVZCMUFCcUlBVkIwQUJxSUFWQnpBQnFJQVZCeUFCcUVQRU1JQVVnQlNrRGVEY0RFQXdDQ3lBRklBRTJBbGdnQ2lBRUtBSVFOZ0lRSUFvZ0JDa0NDRGNDQ0NBS0lBUXBBZ0EzQWdBZ0JTQUxOZ0p3SUFVZ0JpQUlJQVlvQWdBb0Fnd1JBUUFpQ1VFQUlBa29BZ0FvQWd3UkFRQTJBbFFnQlNBR0lBZ2dCaWdDQUNnQ0RCRUJBQ0lKUVFFZ0NTZ0NBQ2dDREJFQkFEWUNVQ0FGSUFZZ0NDQUdLQUlBS0FJTUVRRUFJZ1pCQWlBR0tBSUFLQUlNRVFFQU5nSk1JQVVnQjBFQUlBY29BZ0FvQWd3UkFRQTJBa2dnQlNBSFFRRWdCeWdDQUNnQ0RCRUJBRFlDUkNBRklBZEJBaUFIS0FJQUtBSU1FUUVBTmdKQUlBVkIrQUJxSUFWQjJBQnFJQVZCMUFCcUlBVkIwQUJxSUFWQnpBQnFJQVZCeUFCcUlBVkJ4QUJxSUFWQlFHc1E4QXdnQlNBRktRTjROd01RREFFTElBVWdBVFlDV0NBS0lBUW9BaEEyQWhBZ0NpQUVLUUlJTndJSUlBb2dCQ2tDQURjQ0FDQUZJQXMyQW5BZ0JTQUdJQWdnQmlnQ0FDZ0NEQkVCQUNJSlFRQWdDU2dDQUNnQ0RCRUJBRFlDVkNBRklBWWdDQ0FHS0FJQUtBSU1FUUVBSWdsQkFTQUpLQUlBS0FJTUVRRUFOZ0pRSUFVZ0JpQUlJQVlvQWdBb0Fnd1JBUUFpQ1VFQ0lBa29BZ0FvQWd3UkFRQTJBa3dnQlNBR0lBZ2dCaWdDQUNnQ0RCRUJBQ0lHUVFNZ0JpZ0NBQ2dDREJFQkFEWUNTQ0FGSUFkQkFDQUhLQUlBS0FJTUVRRUFOZ0pFSUFVZ0IwRUJJQWNvQWdBb0Fnd1JBUUEyQWtBZ0JTQUhRUUlnQnlnQ0FDZ0NEQkVCQURZQ1BDQUZJQWRCQXlBSEtBSUFLQUlNRVFFQU5nSTRJQVZCK0FCcUlBVkIyQUJxSUFWQjFBQnFJQVZCMEFCcUlBVkJ6QUJxSUFWQnlBQnFJQVZCeEFCcUlBVkJRR3NnQlVFOGFpQUZRVGhxRU8wTUlBVWdCU2tEZURjREVBc2dCVUVRYWhBd1JRUkFJQVZCR0dvZ0JVRVFhaEFhRUhFZ0NFRUJhaUVJREFFTEN5QUFRUUk2QUFRTUFRc2dBU2dDQUNFQklBVkJBRG9BRENBRklBMDJBZ2dnQVNBQ0lBVkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFWQkdHb1FYaUFGUVlBQmFpUUFDeHdBUWVqR0lDRUFBMEFnQUVFTWF4Q0hBU0lBUWRER0lFY05BQXNMQ2dCQm5MNGdFSWNCR2dzbEFFR292aUF0QUFCRkJFQkJuTDRnUVppaER4RDlCa0dvdmlCQkFUb0FBQXRCbkw0Z0N3b0FRZnk5SUJDSEFSb0xKUUJCaUw0Z0xRQUFSUVJBUWZ5OUlFSDBvQThRL1FaQmlMNGdRUUU2QUFBTFFmeTlJQXNLQUVIY3ZpQVFod0VhQ3lVQVFlaStJQzBBQUVVRVFFSGN2aUJCa0tJUEVQMEdRZWkrSUVFQk9nQUFDMEhjdmlBTENnQkJ2TDRnRUljQkdnc2xBRUhJdmlBdEFBQkZCRUJCdkw0Z1FieWhEeEQ5QmtISXZpQkJBVG9BQUF0QnZMNGdDM0FBUWVpOUlDMEFBQVJBUWVTOUlDZ0NBQThMUWVqR0lDMEFBRVVFUUVIUXhpQWhBQU5BSUFBUTh3RkJER29pQUVIb3hpQkhEUUFMUWVqR0lFRUJPZ0FBQzBIUXhpQkJ4TnNQRUtJQlFkekdJRUhRMnc4UW9nRkI2TDBnUVFFNkFBQkI1TDBnUWRER0lEWUNBRUhReGlBTDRnSUFRZGk5SUMwQUFBUkFRZFM5SUNnQ0FBOExRYURHSUMwQUFFVUVRRUdBeENBaEFBTkFJQUFROHdGQkRHb2lBRUdneGlCSERRQUxRYURHSUVFQk9nQUFDMEdBeENCQnZOY1BFS0lCUVl6RUlFSGMxdzhRb2dGQm1NUWdRWURZRHhDaUFVR2t4Q0JCbU5nUEVLSUJRYkRFSUVHdzJBOFFvZ0ZCdk1RZ1FjRFlEeENpQVVISXhDQkIxTmdQRUtJQlFkVEVJRUhvMkE4UW9nRkI0TVFnUVlUWkR4Q2lBVUhzeENCQnJOa1BFS0lCUWZqRUlFSE0yUThRb2dGQmhNVWdRZkRaRHhDaUFVR1F4U0JCbE5vUEVLSUJRWnpGSUVHazJnOFFvZ0ZCcU1VZ1FiVGFEeENpQVVHMHhTQkJ4Tm9QRUtJQlFjREZJRUd3MkE4UW9nRkJ6TVVnUWRUYUR4Q2lBVUhZeFNCQjVOb1BFS0lCUWVURklFSDAyZzhRb2dGQjhNVWdRWVRiRHhDaUFVSDh4U0JCbE5zUEVLSUJRWWpHSUVHazJ3OFFvZ0ZCbE1ZZ1FiVGJEeENpQVVIWXZTQkJBVG9BQUVIVXZTQkJnTVFnTmdJQVFZREVJQXYwQVFCQnlMMGdMUUFBQkVCQnhMMGdLQUlBRHd0QnlNRWdMUUFBUlFSQVFhREFJQ0VBQTBBZ0FCRHpBVUVNYWlJQVFjakJJRWNOQUF0QnlNRWdRUUU2QUFBTFFhREFJRUhvMUE4UW9nRkJyTUFnUVlUVkR4Q2lBVUc0d0NCQm9OVVBFS0lCUWNUQUlFSEExUThRb2dGQjBNQWdRZWpWRHhDaUFVSGN3Q0JCak5ZUEVLSUJRZWpBSUVHbzFnOFFvZ0ZCOU1BZ1FjeldEeENpQVVHQXdTQkIzTllQRUtJQlFZekJJRUhzMWc4UW9nRkJtTUVnUWZ6V0R4Q2lBVUdrd1NCQmpOY1BFS0lCUWJEQklFR2MxdzhRb2dGQnZNRWdRYXpYRHhDaUFVSEl2U0JCQVRvQUFFSEV2U0JCb01BZ05nSUFRYURBSUF2bENBRUpmeU1BUVlBQmF5SUZKQUFnQXlnQ0FDZ0NBQ2dDQUNJSElBY29BZ0FvQWdnUkFBQWlCeWdDQkNFR0lBTW9BZ0FvQWdBb0FnUWlDQ0FJS0FJQUtBSUlFUUFBRUxJQ0tBSVlJUXNnQlVLQWdJQ0F3QUEzQWl3Z0IwRUFJQVpCOEtvU1Joc2hEQ0FGSUFWQkdHbzJBaWdnQlVIWUFHcEJCSEloQ2lBRlFTaHFJUTFCQUNFSUFrQUNRQU5BSUFnZ0RDZ0NJRThOQVNBREtBSUFLQUlBSWdZb0FnUWhCeUFHS0FJQUlRWWdCVUVBT2dBVUFrQUNRQUpBQWtBZ0RDZ0NKRUVDYXc0REFBRUNBd3NnQlNBQk5nSllJQW9nQkNnQ0VEWUNFQ0FLSUFRcEFnZzNBZ2dnQ2lBRUtRSUFOd0lBSUFVZ0N6WUNjQ0FGSUFaQkFDQUdLQUlBS0FJTUVRRUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSlVJQVVnQmtFQklBWW9BZ0FvQWd3UkFRQWlCaUFJSUFZb0FnQW9BZ3dSQVFBMkFsQWdCU0FIUVFBZ0J5Z0NBQ2dDREJFQkFEWUNUQ0FGSUFkQkFTQUhLQUlBS0FJTUVRRUFOZ0pJSUFWQitBQnFJQVZCMkFCcUlBVkIxQUJxSUFWQjBBQnFJQVZCekFCcUlBVkJ5QUJxRVBFTUlBVWdCU2tEZURjREVBd0NDeUFGSUFFMkFsZ2dDaUFFS0FJUU5nSVFJQW9nQkNrQ0NEY0NDQ0FLSUFRcEFnQTNBZ0FnQlNBTE5nSndJQVVnQmtFQUlBWW9BZ0FvQWd3UkFRQWlDU0FJSUFrb0FnQW9BZ3dSQVFBMkFsUWdCU0FHUVFFZ0JpZ0NBQ2dDREJFQkFDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ1VDQUZJQVpCQWlBR0tBSUFLQUlNRVFFQUlnWWdDQ0FHS0FJQUtBSU1FUUVBTmdKTUlBVWdCMEVBSUFjb0FnQW9BZ3dSQVFBMkFrZ2dCU0FIUVFFZ0J5Z0NBQ2dDREJFQkFEWUNSQ0FGSUFkQkFpQUhLQUlBS0FJTUVRRUFOZ0pBSUFWQitBQnFJQVZCMkFCcUlBVkIxQUJxSUFWQjBBQnFJQVZCekFCcUlBVkJ5QUJxSUFWQnhBQnFJQVZCUUdzUThBd2dCU0FGS1FONE53TVFEQUVMSUFVZ0FUWUNXQ0FLSUFRb0FoQTJBaEFnQ2lBRUtRSUlOd0lJSUFvZ0JDa0NBRGNDQUNBRklBczJBbkFnQlNBR1FRQWdCaWdDQUNnQ0RCRUJBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNWQ0FGSUFaQkFTQUdLQUlBS0FJTUVRRUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSlFJQVVnQmtFQ0lBWW9BZ0FvQWd3UkFRQWlDU0FJSUFrb0FnQW9BZ3dSQVFBMkFrd2dCU0FHUVFNZ0JpZ0NBQ2dDREJFQkFDSUdJQWdnQmlnQ0FDZ0NEQkVCQURZQ1NDQUZJQWRCQUNBSEtBSUFLQUlNRVFFQU5nSkVJQVVnQjBFQklBY29BZ0FvQWd3UkFRQTJBa0FnQlNBSFFRSWdCeWdDQUNnQ0RCRUJBRFlDUENBRklBZEJBeUFIS0FJQUtBSU1FUUVBTmdJNElBVkIrQUJxSUFWQjJBQnFJQVZCMUFCcUlBVkIwQUJxSUFWQnpBQnFJQVZCeUFCcUlBVkJ4QUJxSUFWQlFHc2dCVUU4YWlBRlFUaHFFTzBNSUFVZ0JTa0RlRGNERUFzZ0JVRVFhaEF3UlFSQUlBVkJHR29nQlVFUWFoQWFFSEVnQ0VFQmFpRUlEQUVMQ3lBQVFRSTZBQVFNQVFzZ0FTZ0NBQ0VCSUFWQkFEb0FEQ0FGSUEwMkFnZ2dBU0FDSUFWQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVZCR0dvUVhpQUZRWUFCYWlRQUN4VUFJQUFvQWdnaUFFVUVRRUVCRHdzZ0FCRHFFd3VJQVFFR2Z3TkFBa0FnQWlBRFJpQUVJQWROY2cwQVFRRWhCaUFBS0FJSUlRVWpBRUVRYXlJSUpBQWdDRUVJYWlBRkVMY0RJUXBCQUNBQ0lBTWdBbXNnQVVHa3V5QWdBUnNRandvaEJTQUtFTFlESUFoQkVHb2tBQUpBQWtBZ0JVRUNhZzREQWdJQkFBc2dCU0VHQ3lBSFFRRnFJUWNnQmlBSmFpRUpJQUlnQm1vaEFnd0JDd3NnQ1FzZkFDQUFJQUVnQkNBQ0lBTW9BZ0FvQWdBaUFDZ0NBQ0FBS0FJRUVKa0tDeUFBSUFBb0FnZ1FqQVlnQUNnQ0NDSUFSUVJBUVFFUEN5QUFFT29UUVFGR0M1SUJBUUYvSXdCQkVHc2lCU1FBSUFRZ0FqWUNBQUovUVFJZ0JVRU1ha0VBSUFBb0FnZ1E5QXdpQUVFQmFrRUNTUTBBR2tFQklBQkJBV3NpQWlBRElBUW9BZ0JyU3cwQUdpQUZRUXhxSVFFRGZ5QUNCSDhnQVMwQUFDRUFJQVFnQkNnQ0FDSURRUUZxTmdJQUlBTWdBRG9BQUNBQ1FRRnJJUUlnQVVFQmFpRUJEQUVGUVFBTEN3c2hBU0FGUVJCcUpBQWdBUXZIQmdFTmZ5TUFRUkJySWhFa0FDQUNJUWtEUUFKQUlBTWdDVVlFUUNBRElRa01BUXNnQ1MwQUFFVU5BQ0FKUVFGcUlRa01BUXNMSUFjZ0JUWUNBQ0FFSUFJMkFnQURRQUpBQW44Q1FDQUNJQU5HSUFVZ0JrWnlEUUFnRVNBQktRSUFOd01JSUFBb0FnZ2hDQ01BUVJCckloSWtBQ0FTUVFocUlBZ1F0d01oRXlBSklBSnJJUXhCQUNFS1FRQWhEU01BUVpBSWF5SU9KQUFnRGlBRUtBSUFJZ2cyQWd3Z0JTQU9RUkJxSUFVYklROENRQUpBSUFoRklBWWdCV3RCQW5WQmdBSWdCUnNpQzBWeVJRUkFBMEFDUUNBTVFRSjJJaEFnQzBrZ0RFR0RBVTF4RFFNZ0R5QU9RUXhxSUJBZ0N5QUxJQkJMR3lBQkVMTVVJaEJCZjBZRVFFRi9JUXBCQUNFTElBNG9BZ3doQ0F3QkN5QUxJQkJCQUNBUElBNUJFR3BIR3lJVWF5RUxJQThnRkVFQ2RHb2hEeUFJSUF4cUlBNG9BZ3dpQ0d0QkFDQUlHeUVNSUFvZ0VHb2hDaUFJUlEwQUlBc05BUXNMQ3lBSVJRMEJDeUFMUlNBTVJYSkZCRUFnQ0NFTklBb2hDQU5BQWtBQ1FDQVBJQTBnRENBQkVJOEtJZ3BCQW1wQkFrMEVRQUpBQWtBZ0NrRUJhZzRDQndBQkMwRUFJUTBNQWdzZ0FVRUFOZ0lBREFFTElBaEJBV29oQ0NBS0lBMXFJUTBnQzBFQmF5SUxEUUVMSUFnaENnd0RDeUFQUVFScUlROGdEQ0FLYXlFTUlBZ2hDaUFNRFFBTERBRUxJQWdoRFFzZ0JRUkFJQVFnRFRZQ0FBc2dEa0dRQ0dva0FDQUtJUWdnRXhDMkF5QVNRUkJxSkFBQ1FBSkFBa0FDUUNBSVFYOUdCRUFEUUFKQUlBY2dCVFlDQUNBQ0lBUW9BZ0JHRFFCQkFTRUdBa0FDUUFKQUlBVWdBaUFKSUFKcklCRkJDR29nQUNnQ0NCRHpEQ0lCUVFKcURnTUlBQUlCQ3lBRUlBSTJBZ0FNQlFzZ0FTRUdDeUFDSUFacUlRSWdCeWdDQUVFRWFpRUZEQUVMQ3lBRUlBSTJBZ0FNQlFzZ0J5QUhLQUlBSUFoQkFuUnFJZ1UyQWdBZ0JTQUdSZzBESUFRb0FnQWhBaUFESUFsR0JFQWdBeUVKREFnTElBVWdBa0VCSUFFZ0FDZ0NDQkR6REVVTkFRdEJBZ3dFQ3lBSElBY29BZ0JCQkdvMkFnQWdCQ0FFS0FJQVFRRnFJZ0kyQWdBZ0FpRUpBMEFnQXlBSlJnUkFJQU1oQ1F3R0N5QUpMUUFBUlEwRklBbEJBV29oQ1F3QUN3QUxJQVFnQWpZQ0FFRUJEQUlMSUFRb0FnQWhBZ3NnQWlBRFJ3c2hBQ0FSUVJCcUpBQWdBQThMSUFjb0FnQWhCUXdBQ3dBTG9RVUJDMzhqQUVFUWF5SU5KQUFnQWlFQkEwQUNRQ0FCSUFOR0JFQWdBeUVCREFFTElBRW9BZ0JGRFFBZ0FVRUVhaUVCREFFTEN5QUhJQVUyQWdBZ0JDQUNOZ0lBQTBBQ1FBSkFJQUlnQTBZZ0JTQUdSbklFZnlBQ0JVRUJJUTRnQUNnQ0NDRUlJd0JCRUdzaUVDUUFJQkJCQ0dvZ0NCQzNBeUVTSUFZZ0JTSUlheUVKUVFBaERDTUFRUkJySWc4a0FBSkFJQVFvQWdBaUNrVWdBU0FDYTBFQ2RTSVJSWElOQUNBSlFRQWdDQnNoQ1FOQUlBOUJER29nQ0NBSlFRUkpHeUFLS0FJQUVLTU5JZ3RCZjBZRVFFRi9JUXdNQWdzZ0NBUi9JQWxCQTAwRVFDQUpJQXRKRFFNZ0NDQVBRUXhxSUFzUWZSb0xJQWtnQzJzaENTQUlJQXRxQlVFQUN5RUlJQW9vQWdCRkJFQkJBQ0VLREFJTElBc2dER29oRENBS1FRUnFJUW9nRVVFQmF5SVJEUUFMQ3lBSUJFQWdCQ0FLTmdJQUN5QVBRUkJxSkFBZ0RDRUlJQklRdGdNZ0VFRVFhaVFBQWtBQ1FBSkFBa0FDUUNBSVFRRnFEZ0lBQmdFTElBY2dCVFlDQUFOQUFrQWdBaUFFS0FJQVJnMEFJQVVnQWlnQ0FDQUFLQUlJRVBRTUlnRkJmMFlOQUNBSElBY29BZ0FnQVdvaUJUWUNBQ0FDUVFScUlRSU1BUXNMSUFRZ0FqWUNBQXdCQ3lBSElBY29BZ0FnQ0dvaUJUWUNBQ0FGSUFaR0RRSWdBU0FEUmdSQUlBUW9BZ0FoQWlBRElRRU1Cd3NnRFVFTWFrRUFJQUFvQWdnUTlBd2lBVUYvUncwQkMwRUNJUTRNQXdzZ0RVRU1haUVDSUFZZ0J5Z0NBR3NnQVVrTkFnTkFJQUVFUUNBQ0xRQUFJUVVnQnlBSEtBSUFJZ2hCQVdvMkFnQWdDQ0FGT2dBQUlBRkJBV3NoQVNBQ1FRRnFJUUlNQVFzTElBUWdCQ2dDQUVFRWFpSUNOZ0lBSUFJaEFRTkFJQUVnQTBZRVFDQURJUUVNQlFzZ0FTZ0NBRVVOQkNBQlFRUnFJUUVNQUFzQUN5QUVLQUlBQ3lBRFJ5RU9DeUFOUVJCcUpBQWdEZzhMSUFjb0FnQWhCUXdBQ3dBTER3QWdBQ0FBS0FJQUtBSUVFUU1BQ3djQUlBQVE5UXdMQ2dBZ0FDQUZFSUFIR2dzSkFDQUFJQVVRVkJvTHdnTUJDSDhqQUVId0Eyc2lBQ1FBSUFCQjZBTnFJZ1lnQXhCK0lBWVE4QUloRENBRktBSUVJQVV0QUFzUW1BRUVRQ0FGUVFBUTlRRW9BZ0FnREVFdEVJa0RSaUVKQ3lBQ0lBa2dBRUhvQTJvZ0FFSGdBMm9nQUVIY0Eyb2dBRUhZQTJvZ0FFSElBMm9RZENJTklBQkJ1QU5xRVBNQklnSWdBRUdvQTJvUTh3RWlCaUFBUWFRRGFoRHZFeUFBUWRzWE5nSVFJQUJCQ0dwQkFDQUFRUkJxRVBRQklRb0NmeUFGS0FJRUlBVXRBQXNRbUFFaUJ5QUFLQUtrQXlJTFNnUkFJQVlvQWdRZ0JpMEFDeENZQVNBSElBdHJRUUYwYWlBQ0tBSUVJQUl0QUFzUW1BRnFRUUZxREFFTElBWW9BZ1FnQmkwQUN4Q1lBU0FDS0FJRUlBSXRBQXNRbUFGcVFRSnFDeUVJSUFCQkVHb2hCd0pBSUFnZ0Myb2lDRUhsQUVrTkFDQUtJQWhCQW5RUTRBRVFoZ0lnQ2lnQ0FDSUhEUUFRYndBTElBY2dBRUVFYWlBQUlBTVF1QUVnQlJDUEFpSUlJQWdnQlNnQ0JDQUZMUUFMRUpnQlFRSjBhaUFNSUFrZ0FFSGdBMm9nQUNnQzNBTWdBQ2dDMkFNZ0RTQUNJQVlnQ3hEdUV5QUJJQWNnQUNnQ0JDQUFLQUlBSUFNZ0JCQ1BCaUVCSUFvUTJBRWdCaENIQVJvZ0FoQ0hBUm9nRFJBUEdpQUFRZWdEYWhCa0lBQkI4QU5xSkFBZ0FRdURCUUVNZnlNQVFiQUlheUlBSkFBZ0FDQUZOd01RSUFBZ0JqY0RHQ0FBSUFCQndBZHFJZ2syQXJ3SElBbEI1QUJCeE1NRElBQkJFR29RbkFvaENDQUFRZHNYTmdLZ0JFRUFJUWtnQUVHWUJHcEJBQ0FBUWFBRWFpSUhFUFFCSVE4Z0FFSGJGellDb0FRZ0FFR1FCR3BCQUNBSEVQUUJJUXdDUUFKQUlBaEI1QUJKQkVBZ0FFR2dCR29oQ3lBQVFjQUhhaUVIREFFTEVNQUJJUWdnQUNBRk53TUFJQUFnQmpjRENDQUFRYndIYWlBSVFjVERBeUFBRUxzRUlnaEJmMFlOQVNBUElBQW9BcndISWdjUWhnSWdEQ0FJUVFKMEVPQUJFSVlDSUF3b0FnQWlDeEQwRXcwQkN5QUFRWWdFYWlJS0lBTVFmaUFLRVBBQ0loRWdCeUFISUFocUlBc1ErZ1FnQ0VFQVNnUkFJQWN0QUFCQkxVWWhDUXNnQWlBSklBQkJpQVJxSUFCQmdBUnFJQUJCL0FOcUlBQkIrQU5xSUFCQjZBTnFFSFFpRUNBQVFkZ0RhaER6QVNJQ0lBQkJ5QU5xRVBNQklnY2dBRUhFQTJvUTd4TWdBRUhiRnpZQ01DQUFRU2hxUVFBZ0FFRXdhaEQwQVNFS0lBQkJNR29oRFFKL0lBQW9Bc1FESWc0Z0NFZ0VRQ0FIS0FJRUlBY3RBQXNRbUFFZ0NDQU9hMEVCZEdvZ0FpZ0NCQ0FDTFFBTEVKZ0Jha0VCYWd3QkN5QUhLQUlFSUFjdEFBc1FtQUVnQWlnQ0JDQUNMUUFMRUpnQmFrRUNhZ3NnRG1vaUVrSGxBRThFUUNBS0lCSkJBblFRNEFFUWhnSWdDaWdDQUNJTlJRMEJDeUFOSUFCQkpHb2dBRUVnYWlBREVMZ0JJQXNnQ3lBSVFRSjBhaUFSSUFrZ0FFR0FCR29nQUNnQy9BTWdBQ2dDK0FNZ0VDQUNJQWNnRGhEdUV5QUJJQTBnQUNnQ0pDQUFLQUlnSUFNZ0JCQ1BCaUVCSUFvUTJBRWdCeENIQVJvZ0FoQ0hBUm9nRUJBUEdpQUFRWWdFYWhCa0lBd1EyQUVnRHhEWUFTQUFRYkFJYWlRQUlBRVBDeEJ2QUF1REF3RUlmeU1BUWNBQmF5SUFKQUFnQUVHNEFXb2lCaUFERUg0Z0JoRERBaUVNUVFBaEJpQUZFRHNFUUNBRlFRQVE1Z0V0QUFBZ0RFRXRFSTREUWY4QmNVWWhCZ3NnQWlBR0lBQkJ1QUZxSUFCQnNBRnFJQUJCcndGcUlBQkJyZ0ZxSUFCQm9BRnFFSFFpRFNBQVFaQUJhaEIwSWdJZ0FFR0FBV29RZENJSUlBQkIvQUJxRVBNVElBQkIyeGMyQWhBZ0FFRUlha0VBSUFCQkVHb1E5QUVoQ1FKL0lBVVFPeUFBS0FKOElncEtCRUFnQlJBN0lRY2dDQkE3SUFjZ0NtdEJBWFJxSUFJUU8ycEJBV29NQVFzZ0NCQTdJQUlRTzJwQkFtb0xJUXNnQUVFUWFpRUhBa0FnQ2lBTGFpSUxRZVVBU1EwQUlBa2dDeERnQVJDR0FpQUpLQUlBSWdjTkFCQnZBQXNnQnlBQVFRUnFJQUFnQXhDNEFTQUZFSHNnQlJCN0lBVVFPMm9nRENBR0lBQkJzQUZxSUFBc0FLOEJJQUFzQUs0QklBMGdBaUFJSUFvUThoTWdBU0FISUFBb0FnUWdBQ2dDQUNBRElBUVEvd1VoQVNBSkVOZ0JJQWdRRHhvZ0FoQVBHaUFORUE4YUlBQkJ1QUZxRUdRZ0FFSEFBV29rQUNBQkM5SUVBUXgvSXdCQjBBTnJJZ0FrQUNBQUlBVTNBeEFnQUNBR053TVlJQUFnQUVIZ0Ftb2lDVFlDM0FJZ0NVSGtBRUhFd3dNZ0FFRVFhaENjQ2lFSUlBQkIyeGMyQXZBQlFRQWhDU0FBUWVnQmFrRUFJQUJCOEFGcUlnY1E5QUVoRHlBQVFkc1hOZ0x3QVNBQVFlQUJha0VBSUFjUTlBRWhEQUpBQWtBZ0NFSGtBRWtFUUNBQVFmQUJhaUVMSUFCQjRBSnFJUWNNQVFzUXdBRWhDQ0FBSUFVM0F3QWdBQ0FHTndNSUlBQkIzQUpxSUFoQnhNTURJQUFRdXdRaUNFRi9SZzBCSUE4Z0FDZ0MzQUlpQnhDR0FpQU1JQWdRNEFFUWhnSWdEQ2dDQUNJTEVQUVREUUVMSUFCQjJBRnFJZ29nQXhCK0lBb1F3d0lpRVNBSElBY2dDR29nQ3hDL0JTQUlRUUJLQkVBZ0J5MEFBRUV0UmlFSkN5QUNJQWtnQUVIWUFXb2dBRUhRQVdvZ0FFSFBBV29nQUVIT0FXb2dBRUhBQVdvUWRDSVFJQUJCc0FGcUVIUWlBaUFBUWFBQmFoQjBJZ2NnQUVHY0FXb1E4eE1nQUVIYkZ6WUNNQ0FBUVNocVFRQWdBRUV3YWhEMEFTRUtJQUJCTUdvaERRSi9JQUFvQXB3QklnNGdDRWdFUUNBSEVEc2dDQ0FPYTBFQmRHb2dBaEE3YWtFQmFnd0JDeUFIRURzZ0FoQTdha0VDYWdzZ0Rtb2lFa0hsQUU4RVFDQUtJQklRNEFFUWhnSWdDaWdDQUNJTlJRMEJDeUFOSUFCQkpHb2dBRUVnYWlBREVMZ0JJQXNnQ0NBTGFpQVJJQWtnQUVIUUFXb2dBQ3dBendFZ0FDd0F6Z0VnRUNBQ0lBY2dEaER5RXlBQklBMGdBQ2dDSkNBQUtBSWdJQU1nQkJEL0JTRUJJQW9RMkFFZ0J4QVBHaUFDRUE4YUlCQVFEeG9nQUVIWUFXb1FaQ0FNRU5nQklBOFEyQUVnQUVIUUEyb2tBQ0FCRHdzUWJ3QUw4Z1FCQTM4akFFSEFBMnNpQUNRQUlBQWdBallDc0FNZ0FDQUJOZ0s0QXlBQVFkMFhOZ0lVSUFCQkdHb2dBRUVnYWlBQVFSUnFJZ2dROUFFaENTQUFRUkJxSWdjZ0JCQitJQWNROEFJaEFTQUFRUUE2QUE4Z0FFRzRBMm9nQWlBRElBY2dCQkM0QVNBRklBQkJEMm9nQVNBSklBZ2dBRUd3QTJvUStSTUVRQUpBSUFZdEFBc1Erd1FFUUNBR0tBSUFRUUFRbVFJZ0JrRUFFSWNFREFFTElBWkJBQkNaQWlBR1FRQVF3QVVMSUFBdEFBOEVRQ0FHSUFGQkxSQ0pBeEN6QVFzZ0FVRXdFSWtESVFFZ0FDZ0NGQ0lEUVFScklRUWdDU2dDQUNFQ0EwQUNRQ0FDSUFSUERRQWdBaWdDQUNBQlJ3MEFJQUpCQkdvaEFnd0JDd3NqQUVFUWF5SUlKQUFnQmlnQ0JDQUdMUUFMRUpnQklRRWdCaER6Q1NFRUFrQWdBaUFERUowSUlnZEZEUUFnQmlBQ0VQVVRSUVJBSUFjZ0JDQUJhMHNFUUNBR0lBUWdBU0FIYWlBRWF5QUJJQUZCQUJEM0RBc2dCaENQQWlBQlFRSjBhaUVFQTBBZ0FpQURSd1JBSUFRZ0FpZ0NBQkNaQWlBQ1FRUnFJUUlnQkVFRWFpRUVEQUVMQ3lBRVFRQVFtUUlnQmlBQklBZHFFUElKREFFTElBZ2dBaUFERUl3SElnTVFqd0loQkNBREtBSUVJQU10QUFzUW1BRWhBUUpBSUFFZ0JoRHpDU0lISUFZb0FnUWdCaTBBQ3hDWUFTSUNhMDBFUUNBQlJRMEJJQVlRandJaUJ5QUNRUUowYWlBRUlBRVF3Z1FnQmlBQklBSnFJZ0VROGdrZ0J5QUJRUUowYWtFQUVKa0NEQUVMSUFZZ0J5QUJJQUpxSUFkcklBSWdBa0VBSUFFZ0JCQ2FFd3NnQXhDSEFSb0xJQWhCRUdva0FBc2dBRUc0QTJvZ0FFR3dBMm9Ra0FJRVFDQUZJQVVvQWdCQkFuSTJBZ0FMSUFBb0FyZ0RJUUVnQUVFUWFoQmtJQWtRMkFFZ0FFSEFBMm9rQUNBQkMrQURBUUovSXdCQjhBUnJJZ0FrQUNBQUlBSTJBdUFFSUFBZ0FUWUM2QVFnQUVIZEZ6WUNFQ0FBUWNnQmFpQUFRZEFCYWlBQVFSQnFFUFFCSVFjZ0FFSEFBV29pQVNBRUVINGdBUkR3QWlFSUlBQkJBRG9BdndFQ1FDQUFRZWdFYWlBQ0lBTWdBU0FFRUxnQklBVWdBRUcvQVdvZ0NDQUhJQUJCeEFGcUlBQkI0QVJxRVBrVFJRMEFJQUJCaytzR0tBQUFOZ0MzQVNBQVFZenJCaWtBQURjRHNBRWdDQ0FBUWJBQmFpQUFRYm9CYWlBQVFZQUJhaEQ2QkNBQVFkc1hOZ0lRSUFCQkNHcEJBQ0FBUVJCcUlnUVE5QUVoQXdKQUlBQW9Bc1FCSWdFZ0J5Z0NBR3NpQWtHSkEwNEVRQ0FESUFKQkFuVkJBbW9RNEFFUWhnSWdBeWdDQUNJRVJRMEJDeUFBTFFDL0FRUkFJQVJCTFRvQUFDQUVRUUZxSVFRTElBY29BZ0FoQWdOQUlBRWdBazBFUUFKQUlBUkJBRG9BQUNBQUlBWTJBZ0FnQUVFUWFpQUFFTHdVUVFGSERRQWdBeERZQVF3RUN3VWdCQ0FBUWJBQmFpQUFRWUFCYWlJQklBRkJLR29nQWlnQ0FCQ0FEU0FCYTBFQ2RXb3RBQUE2QUFBZ0JFRUJhaUVFSUFKQkJHb2hBaUFBS0FMRUFTRUJEQUVMQ3hCdkFBc1Fid0FMSUFCQjZBUnFJQUJCNEFScUVKQUNCRUFnQlNBRktBSUFRUUp5TmdJQUN5QUFLQUxvQkNFQklBQkJ3QUZxRUdRZ0J4RFlBU0FBUWZBRWFpUUFJQUVMdndRQkEzOGpBRUdnQVdzaUFDUUFJQUFnQWpZQ2tBRWdBQ0FCTmdLWUFTQUFRZDBYTmdJVUlBQkJHR29nQUVFZ2FpQUFRUlJxSWdnUTlBRWhDU0FBUVJCcUlnRWdCQkIrSUFFUXd3SWhCeUFBUVFBNkFBOGdBRUdZQVdvZ0FpQURJQUVnQkJDNEFTQUZJQUJCRDJvZ0J5QUpJQWdnQUVHRUFXb1EveE1FUUNNQVFSQnJJZ0VrQUFKQUlBWVF1QVlFUUNBR0VOUUlJUUlnQVVFQU9nQVBJQUlnQVVFUGFoRFJBaUFHUVFBUTB3UU1BUXNnQmhDS0JTRUNJQUZCQURvQURpQUNJQUZCRG1vUTBRSWdCa0VBRUlzRkN5QUJRUkJxSkFBZ0FDMEFEd1JBSUFZZ0IwRXRFSTRERUtRQkN5QUhRVEFRamdNaEFTQUFLQUlVSWdkQkFXc2hBeUFKS0FJQUlRSWdBVUgvQVhFaEFRTkFBa0FnQWlBRFR3MEFJQUl0QUFBZ0FVY05BQ0FDUVFGcUlRSU1BUXNMSXdCQkVHc2lBeVFBSUFZUU95RUJJQVlRbXdFaEJBSkFJQUlnQnhEUUZDSUlSUTBBSUFZUWV5QUNUUVIvSUFZUWV5QUdFRHRxSUFKUEJVRUFDMFVFUUNBSUlBUWdBV3RMQkVBZ0JpQUVJQUVnQ0dvZ0JHc2dBU0FCUVFBUTlBa0xJQVlRd1FNZ0FXb2hCQU5BSUFJZ0IwY0VRQ0FFSUFJUTBRSWdBa0VCYWlFQ0lBUkJBV29oQkF3QkN3c2dBMEVBT2dBUElBUWdBMEVQYWhEUkFpQUdJQUVnQ0dvUW1BZ01BUXNnQmlBRElBSWdCeUFHRUpBTklnRVFleUFCRURzUS9nWWFJQUVRRHhvTElBTkJFR29rQUFzZ0FFR1lBV29nQUVHUUFXb1Fod0lFUUNBRklBVW9BZ0JCQW5JMkFnQUxJQUFvQXBnQklRRWdBRUVRYWhCa0lBa1EyQUVnQUVHZ0FXb2tBQ0FCQzlZREFRSi9Jd0JCb0FKcklnQWtBQ0FBSUFJMkFwQUNJQUFnQVRZQ21BSWdBRUhkRnpZQ0VDQUFRWmdCYWlBQVFhQUJhaUFBUVJCcUVQUUJJUWNnQUVHUUFXb2lBU0FFRUg0Z0FSRERBaUVJSUFCQkFEb0Fqd0VDUUNBQVFaZ0NhaUFDSUFNZ0FTQUVFTGdCSUFVZ0FFR1BBV29nQ0NBSElBQkJsQUZxSUFCQmhBSnFFUDhUUlEwQUlBQkJrK3NHS0FBQU5nQ0hBU0FBUVl6ckJpa0FBRGNEZ0FFZ0NDQUFRWUFCYWlBQVFZb0JhaUFBUWZZQWFoQy9CU0FBUWRzWE5nSVFJQUJCQ0dwQkFDQUFRUkJxSWdRUTlBRWhBd0pBSUFBb0FwUUJJZ0VnQnlnQ0FHc2lBa0hqQUU0RVFDQURJQUpCQW1vUTRBRVFoZ0lnQXlnQ0FDSUVSUTBCQ3lBQUxRQ1BBUVJBSUFSQkxUb0FBQ0FFUVFGcUlRUUxJQWNvQWdBaEFnTkFJQUVnQWswRVFBSkFJQVJCQURvQUFDQUFJQVkyQWdBZ0FFRVFhaUFBRUx3VVFRRkhEUUFnQXhEWUFRd0VDd1VnQkNBQVFmWUFhaUlCSUFGQkNtb2dBaTBBQUJDbkZDQUFheUFBYWkwQUNqb0FBQ0FFUVFGcUlRUWdBa0VCYWlFQ0lBQW9BcFFCSVFFTUFRc0xFRzhBQ3hCdkFBc2dBRUdZQW1vZ0FFR1FBbW9RaHdJRVFDQUZJQVVvQWdCQkFuSTJBZ0FMSUFBb0FwZ0NJUUVnQUVHUUFXb1FaQ0FIRU5nQklBQkJvQUpxSkFBZ0FRdEZBUUYvSXdCQkVHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBQ0FCS0FJQUlBSWdCVUVJYWlBREtBSUFLQUlBSWdBb0FnQWdBQ2dDQkJDRUZDQUZRUkJxSkFBTDV3RUJBbjhqQUVHZ0Eyc2lBaVFBSUFJZ0FrR2dBMm9pQXpZQ0RDTUFRWkFCYXlJSEpBQWdCeUFIUVlRQmFqWUNIQ0FBS0FJSUlBZEJJR29pQ0NBSFFSeHFJQVFnQlNBR0VJNFVJQWRDQURjREVDQUhJQWcyQWd3Z0FrRVFhaUlFSUFkQkRHb2dCQ0FDS0FJTUVJSUVJQWRCRUdvZ0FDZ0NDQkNpQXlJQVFYOUdCRUFRYndBTElBSWdCQ0FBUVFKMGFqWUNEQ0FIUVpBQmFpUUFJQUlvQWd3aEFDTUFRUkJySWdJa0FDQUNJQUUyQWdnRFFDQUFJQVJIQkVBZ0FrRUlhaUFFS0FJQUVOTVVJQVJCQkdvaEJBd0JDd3NnQWlnQ0NDRUFJQUpCRUdva0FDQURKQUFnQUF1UUFRQWpBRUdBQVdzaUFpUUFJQUlnQWtIMEFHbzJBZ3dnQUNnQ0NDQUNRUkJxSWdBZ0FrRU1haUFFSUFVZ0JoQ09GQ0FDS0FJTUlRTWdBQkNEQVNFQUlBTVFnd0VoQkNNQVFSQnJJZ01rQUNBRElBRTJBZ2dEUUNBQUlBUkhCRUFnQTBFSWFpQUFMQUFBRUpjTkdpQUFRUUZxSVFBTUFRc0xJQU1vQWdnaEFDQURRUkJxSkFBZ0FrR0FBV29rQUNBQUM1NE5BUUYvSXdCQlFHb2lCeVFBSUFjZ0FUWUNPQ0FFUVFBMkFnQWdCeUFERUg0Z0J4RHdBaUVJSUFjUVpBSi9Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUdRY0VBYXc0NUFBRVhCQmNGRndZSEZ4Y1hDaGNYRnhjT0R4QVhGeGNURlJjWEZ4Y1hGeGNBQVFJREF4Y1hBUmNJRnhjSkN4Y01GdzBYQ3hjWEVSSVVGZ3NnQUNBRlFSaHFJQWRCT0dvZ0FpQUVJQWdRa2hRTUdBc2dBQ0FGUVJCcUlBZEJPR29nQWlBRUlBZ1FrQlFNRndzZ0J5QUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWd3UkFBQWlBQkNQQWlJQklBRWdBQ2dDQkNBQUxRQUxFSmdCUVFKMGFoRDRCRFlDT0F3V0N5QUhRVGhxSUFJZ0JDQUlRUUlRdVFRaEFBSkFJQVFvQWdBaUFVRUVjU0FBUVFGclFSNUxja1VFUUNBRklBQTJBZ3dNQVFzZ0JDQUJRUVJ5TmdJQUN3d1ZDeUFIUWRpVER5a0RBRGNER0NBSFFkQ1REeWtEQURjREVDQUhRY2lURHlrREFEY0RDQ0FIUWNDVER5a0RBRGNEQUNBSElBQWdBU0FDSUFNZ0JDQUZJQWNnQjBFZ2FoRDRCRFlDT0F3VUN5QUhRZmlURHlrREFEY0RHQ0FIUWZDVER5a0RBRGNERUNBSFFlaVREeWtEQURjRENDQUhRZUNURHlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVnYWhENEJEWUNPQXdUQ3lBSFFUaHFJQUlnQkNBSVFRSVF1UVFoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRUmRLY2tVRVFDQUZJQUEyQWdnTUFRc2dCQ0FCUVFSeU5nSUFDd3dTQ3lBSFFUaHFJQUlnQkNBSVFRSVF1UVFoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRUUZyUVF0TGNrVUVRQ0FGSUFBMkFnZ01BUXNnQkNBQlFRUnlOZ0lBQ3d3UkN5QUhRVGhxSUFJZ0JDQUlRUU1RdVFRaEFBSkFJQVFvQWdBaUFVRUVjU0FBUWUwQ1NuSkZCRUFnQlNBQU5nSWNEQUVMSUFRZ0FVRUVjallDQUFzTUVBc2dCMEU0YWlBQ0lBUWdDRUVDRUxrRUlRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFTVNuSkZCRUFnQlNBQVFRRnJOZ0lRREFFTElBUWdBVUVFY2pZQ0FBc01Ed3NnQjBFNGFpQUNJQVFnQ0VFQ0VMa0VJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRTdTbkpGQkVBZ0JTQUFOZ0lFREFFTElBUWdBVUVFY2pZQ0FBc01EZ3NnQjBFNGFpRUFJd0JCRUdzaUFTUUFJQUVnQWpZQ0NBTkFBa0FnQUNBQlFRaHFFTm9DUlEwQUlBaEJBU0FBS0FJQUVPMEJFTWtDUlEwQUlBQVFvUUlhREFFTEN5QUFJQUZCQ0dvUWtBSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBRkJFR29rQUF3TkN5QUhRVGhxSVFFQ1FDQUFRUWhxSUFBb0FnZ29BZ2dSQUFBaUFDZ0NCQ0FBTFFBTEVKZ0JRUUFnQUNnQ0VDQUFMUUFYRUpnQmEwWUVRQ0FFSUFRb0FnQkJCSEkyQWdBTUFRc2dBU0FDSUFBZ0FFRVlhaUFJSUFSQkFCRC9DU0lDSUFCSElBVW9BZ2dpQVVFTVIzSkZCRUFnQlVFQU5nSUlEQUVMSUFJZ0FHdEJERWNnQVVFTFNuSkZCRUFnQlNBQlFReHFOZ0lJQ3dzTURBc2dCMEdBbEE5QkxCQjlJZ1lnQUNBQklBSWdBeUFFSUFVZ0JpQUdRU3hxRVBnRU5nSTREQXNMSUFkQndKUVBLQUlBTmdJUUlBZEJ1SlFQS1FNQU53TUlJQWRCc0pRUEtRTUFOd01BSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVJScUVQZ0VOZ0k0REFvTElBZEJPR29nQWlBRUlBaEJBaEM1QkNFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCUEVweVJRUkFJQVVnQURZQ0FBd0JDeUFFSUFGQkJISTJBZ0FMREFrTElBZEI2SlFQS1FNQU53TVlJQWRCNEpRUEtRTUFOd01RSUFkQjJKUVBLUU1BTndNSUlBZEIwSlFQS1FNQU53TUFJQWNnQUNBQklBSWdBeUFFSUFVZ0J5QUhRU0JxRVBnRU5nSTREQWdMSUFkQk9Hb2dBaUFFSUFoQkFSQzVCQ0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkJCa3B5UlFSQUlBVWdBRFlDR0F3QkN5QUVJQUZCQkhJMkFnQUxEQWNMSUFBZ0FTQUNJQU1nQkNBRklBQW9BZ0FvQWhRUkN3QU1Cd3NnQnlBQUlBRWdBaUFESUFRZ0JTQUFRUWhxSUFBb0FnZ29BaGdSQUFBaUFCQ1BBaUlCSUFFZ0FDZ0NCQ0FBTFFBTEVKZ0JRUUowYWhENEJEWUNPQXdGQ3lBRlFSUnFJQWRCT0dvZ0FpQUVJQWdRanhRTUJBc2dCMEU0YWlBQ0lBUWdDRUVFRUxrRUlRQWdCQzBBQUVFRWNVVUVRQ0FGSUFCQjdBNXJOZ0lVQ3d3REN5QUdRU1ZHRFFFTElBUWdCQ2dDQUVFRWNqWUNBQXdCQ3lNQVFSQnJJZ0FrQUNBQUlBSTJBZ2hCQmlFQkFrQUNRQ0FIUVRocUlnSWdBRUVJYWhDUUFnMEFRUVFoQVNBSUlBSW9BZ0FRN1FFUTl3UkJKVWNOQUVFQ0lRRWdBaENoQWlBQVFRaHFFSkFDUlEwQkN5QUVJQVFvQWdBZ0FYSTJBZ0FMSUFCQkVHb2tBQXNnQnlnQ09Bc2hBQ0FIUVVCckpBQWdBQXRHQUNNQVFSQnJJZ0FrQUNBQUlBRTJBZ2dnQUNBREVINGdBQkR3QWlFQklBQVFaQ0FGUVJScUlBQkJDR29nQWlBRUlBRVFqeFFnQUNnQ0NDRUJJQUJCRUdva0FDQUJDMG9CQVg4akFFRVFheUlHSkFBZ0JpQUJOZ0lJSUFZZ0F4QitJQVlROEFJaEFTQUdFR1FnQUNBRlFSQnFJQVpCQ0dvZ0FpQUVJQUVRa0JRZ0JpZ0NDQ0VBSUFaQkVHb2tBQ0FBQzBvQkFYOGpBRUVRYXlJR0pBQWdCaUFCTmdJSUlBWWdBeEIrSUFZUThBSWhBU0FHRUdRZ0FDQUZRUmhxSUFaQkNHb2dBaUFFSUFFUWtoUWdCaWdDQ0NFQUlBWkJFR29rQUNBQUN6c0FJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0ZCRUFBQ0lBRUk4Q0lnRWdBU0FBS0FJRUlBQXRBQXNRbUFGQkFuUnFFUGdFQzEwQkFYOGpBRUVnYXlJR0pBQWdCa0hvbEE4cEF3QTNBeGdnQmtIZ2xBOHBBd0EzQXhBZ0JrSFlsQThwQXdBM0F3Z2dCa0hRbEE4cEF3QTNBd0FnQUNBQklBSWdBeUFFSUFVZ0JpQUdRU0JxSWdFUStBUWhBQ0FCSkFBZ0FBdXlEQUVDZnlNQVFTQnJJZ2NrQUNBSElBRTJBaGdnQkVFQU5nSUFJQWRCQ0dvaUNTQURFSDRnQ1JEREFpRUlJQWtRWkFKL0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBR1FjRUFhdzQ1QUFFWEJCY0ZGd1lIRnhjWENoY1hGeGNPRHhBWEZ4Y1RGUmNYRnhjWEZ4Y0FBUUlEQXhjWEFSY0lGeGNKQ3hjTUZ3MFhDeGNYRVJJVUZnc2dBQ0FGUVJocUlBZEJHR29nQWlBRUlBZ1FsUlFNR0FzZ0FDQUZRUkJxSUFkQkdHb2dBaUFFSUFnUWxCUU1Gd3NnQnlBQUlBRWdBaUFESUFRZ0JTQUFRUWhxSUFBb0FnZ29BZ3dSQUFBaUFCQjdJQUFRZXlBQUVEdHFFUGtFTmdJWURCWUxJQWRCR0dvZ0FpQUVJQWhCQWhDNkJDRUFBa0FnQkNnQ0FDSUJRUVJ4SUFCQkFXdEJIa3R5UlFSQUlBVWdBRFlDREF3QkN5QUVJQUZCQkhJMkFnQUxEQlVMSUFkQ3BkcTlxY0xzeTVMNUFEY0RDQ0FISUFBZ0FTQUNJQU1nQkNBRklBZEJDR29nQjBFUWFoRDVCRFlDR0F3VUN5QUhRcVd5dGFuU3JjdVM1QUEzQXdnZ0J5QUFJQUVnQWlBRElBUWdCU0FIUVFocUlBZEJFR29RK1FRMkFoZ01Fd3NnQjBFWWFpQUNJQVFnQ0VFQ0VMb0VJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRVhTbkpGQkVBZ0JTQUFOZ0lJREFFTElBUWdBVUVFY2pZQ0FBc01FZ3NnQjBFWWFpQUNJQVFnQ0VFQ0VMb0VJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRUJhMEVMUzNKRkJFQWdCU0FBTmdJSURBRUxJQVFnQVVFRWNqWUNBQXNNRVFzZ0IwRVlhaUFDSUFRZ0NFRURFTG9FSVFBQ1FDQUVLQUlBSWdGQkJIRWdBRUh0QWtweVJRUkFJQVVnQURZQ0hBd0JDeUFFSUFGQkJISTJBZ0FMREJBTElBZEJHR29nQWlBRUlBaEJBaEM2QkNFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCREVweVJRUkFJQVVnQUVFQmF6WUNFQXdCQ3lBRUlBRkJCSEkyQWdBTERBOExJQWRCR0dvZ0FpQUVJQWhCQWhDNkJDRUFBa0FnQkNnQ0FDSUJRUVJ4SUFCQk8wcHlSUVJBSUFVZ0FEWUNCQXdCQ3lBRUlBRkJCSEkyQWdBTERBNExJQWRCR0dvaEFDTUFRUkJySWdFa0FDQUJJQUkyQWdnRFFBSkFJQUFnQVVFSWFoREtBa1VOQUNBQUtBSUFFTzRCSVFJZ0NDZ0NDRUVCSUFJUXZRSkZEUUFnQUJDYkFob01BUXNMSUFBZ0FVRUlhaENIQWdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQVVFUWFpUUFEQTBMSUFkQkdHb2hBUUpBSUFCQkNHb2dBQ2dDQ0NnQ0NCRUFBQ0lBRUR0QkFDQUFRUXhxRUR0clJnUkFJQVFnQkNnQ0FFRUVjallDQUF3QkN5QUJJQUlnQUNBQVFSaHFJQWdnQkVFQUVJTUtJZ0lnQUVjZ0JTZ0NDQ0lCUVF4SGNrVUVRQ0FGUVFBMkFnZ01BUXNnQWlBQWEwRU1SeUFCUVF0S2NrVUVRQ0FGSUFGQkRHbzJBZ2dMQ3d3TUN5QUhRYWlURHlnQUFEWUFEeUFIUWFHVER5a0FBRGNEQ0NBSElBQWdBU0FDSUFNZ0JDQUZJQWRCQ0dvZ0IwRVRhaEQ1QkRZQ0dBd0xDeUFIUWJDVER5MEFBRG9BRENBSFFheVREeWdBQURZQ0NDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFkQkNHb2dCMEVOYWhENUJEWUNHQXdLQ3lBSFFSaHFJQUlnQkNBSVFRSVF1Z1FoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRVHhLY2tVRVFDQUZJQUEyQWdBTUFRc2dCQ0FCUVFSeU5nSUFDd3dKQ3lBSFFxV1E2YW5TeWM2UzB3QTNBd2dnQnlBQUlBRWdBaUFESUFRZ0JTQUhRUWhxSUFkQkVHb1ErUVEyQWhnTUNBc2dCMEVZYWlBQ0lBUWdDRUVCRUxvRUlRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFR1NuSkZCRUFnQlNBQU5nSVlEQUVMSUFRZ0FVRUVjallDQUFzTUJ3c2dBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVMQUF3SEN5QUhJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0dCRUFBQ0lBRUhzZ0FCQjdJQUFRTzJvUStRUTJBaGdNQlFzZ0JVRVVhaUFIUVJocUlBSWdCQ0FJRUpNVURBUUxJQWRCR0dvZ0FpQUVJQWhCQkJDNkJDRUFJQVF0QUFCQkJIRkZCRUFnQlNBQVFld09hellDRkFzTUF3c2dCa0VsUmcwQkN5QUVJQVFvQWdCQkJISTJBZ0FNQVFzakFFRVFheUlBSkFBZ0FDQUNOZ0lJUVFZaEFRSkFBa0FnQjBFWWFpSUNJQUJCQ0dvUWh3SU5BRUVFSVFFZ0NDQUNLQUlBRU80QkVMd0ZRU1ZIRFFCQkFpRUJJQUlRbXdJZ0FFRUlhaENIQWtVTkFRc2dCQ0FFS0FJQUlBRnlOZ0lBQ3lBQVFSQnFKQUFMSUFjb0FoZ0xJUUFnQjBFZ2FpUUFJQUFMMUFJQkJIOGpBRUhRQUdzaUJTUUFJQVVnQkRZQ0RDQUZJQUUyQWdnZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFWQkNHb2dBeWdDQUJDUkZBd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRlFSaHFJZ1lnQkNBSUlBVkJDR29nQVNBRlFSUnFFSTBVSUFZUUt3UkFJQVZCSUdvZ0JVRVlhaEFhRUNRZ0FVRUJhaUVCREFFTEN5QUZRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUZJQWMyQWhnZ0JTQUZLQUpBSUFWQklHcEhPZ0FjSUFRZ0FpQUZRUmhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBRlFTQnFFQ01MSUFWQjBBQnFKQUFMUmdBakFFRVFheUlBSkFBZ0FDQUJOZ0lJSUFBZ0F4QitJQUFRd3dJaEFTQUFFR1FnQlVFVWFpQUFRUWhxSUFJZ0JDQUJFSk1VSUFBb0FnZ2hBU0FBUVJCcUpBQWdBUXRLQVFGL0l3QkJFR3NpQmlRQUlBWWdBVFlDQ0NBR0lBTVFmaUFHRU1NQ0lRRWdCaEJrSUFBZ0JVRVFhaUFHUVFocUlBSWdCQ0FCRUpRVUlBWW9BZ2doQUNBR1FSQnFKQUFnQUF0S0FRRi9Jd0JCRUdzaUJpUUFJQVlnQVRZQ0NDQUdJQU1RZmlBR0VNTUNJUUVnQmhCa0lBQWdCVUVZYWlBR1FRaHFJQUlnQkNBQkVKVVVJQVlvQWdnaEFDQUdRUkJxSkFBZ0FBc3VBQ0FBSUFFZ0FpQURJQVFnQlNBQVFRaHFJQUFvQWdnb0FoUVJBQUFpQUJCN0lBQVFleUFBRUR0cUVQa0VDMEFCQVg4akFFRVFheUlHSkFBZ0JrS2xrT21wMHNuT2t0TUFOd01JSUFBZ0FTQUNJQU1nQkNBRklBWkJDR29nQmtFUWFpSUJFUGtFSVFBZ0FTUUFJQUFMbUFFQkJYOGpBRUhRQVdzaUFDUUFFTUFCSVFZZ0FDQUVOZ0lBSUFCQnNBRnFJZ2NnQnlBSFFSUWdCa0hDdndJZ0FCQ2pBeUlJYWlJRUlBSVF2QVFoQmlBQVFSQnFJZ1VnQWhCK0lBVVE4QUloQ1NBRkVHUWdDU0FISUFRZ0JSRDZCQ0FCSUFVZ0NFRUNkQ0FGYWlJQklBWWdBR3RCQW5RZ0FHcEJzQVZySUFRZ0JrWWJJQUVnQWlBREVJOEdJUUVnQUVIUUFXb2tBQ0FCQzR3RUFRZC9BbjhnQVNFS0l3QkJzQU5ySWdZa0FDQUdRaVUzQTZnRElBWkJxQU5xUVFGeVFhalRCaUFDRUxnQkVQa0pJUWdnQmlBR1FZQURhallDL0FJUXdBRWhBQUovSUFnRVFDQUNLQUlJSVFFZ0JrRkFheUFGTndNQUlBWWdCRGNET0NBR0lBRTJBakFnQmtHQUEycEJIaUFBSUFaQnFBTnFJQVpCTUdvUW93TU1BUXNnQmlBRU53TlFJQVlnQlRjRFdDQUdRWUFEYWtFZUlBQWdCa0dvQTJvZ0JrSFFBR29Rb3dNTElRY2dCa0hiRnpZQ2dBRWdCa0h3QW1wQkFDQUdRWUFCYWhEMEFTRUpJQVpCZ0FOcUlnRWhBQUpBSUFkQkhrNEVRQkRBQVNFQUFuOGdDQVJBSUFJb0FnZ2hCeUFHSUFVM0F4QWdCaUFFTndNSUlBWWdCellDQUNBR1Fmd0NhaUFBSUFaQnFBTnFJQVlRdXdRTUFRc2dCaUFFTndNZ0lBWWdCVGNES0NBR1Fmd0NhaUFBSUFaQnFBTnFJQVpCSUdvUXV3UUxJZ2RCZjBZTkFTQUpJQVlvQXZ3Q0lnQVFoZ0lMSUFBZ0FDQUhhaUlMSUFJUXZBUWhEQ0FHUWRzWE5nS0FBU0FHUWZnQWFrRUFJQVpCZ0FGcUVQUUJJUWdDUUNBR1FZQURhaUFBUmdSQUlBWkJnQUZxSVFjTUFRc2dCMEVEZEJEZ0FTSUhSUTBCSUFnZ0J4Q0dBaUFBSVFFTElBWkI2QUJxSWdBZ0FoQitJQUVnRENBTElBY2dCa0gwQUdvZ0JrSHdBR29nQUJDWEZDQUFFR1FnQ2lBSElBWW9BblFnQmlnQ2NDQUNJQU1RandZaEFDQUlFTmdCSUFrUTJBRWdCa0d3QTJva0FDQUFEQUVMRUc4QUN3dm9Bd0VIZndKL0lBRWhDU01BUVlBRGF5SUZKQUFnQlVJbE53UDRBaUFGUWZnQ2FrRUJja0hjK0F3Z0FoQzRBUkQ1Q1NFSElBVWdCVUhRQW1vMkFzd0NFTUFCSVFBQ2Z5QUhCRUFnQWlnQ0NDRUJJQVVnQkRrREtDQUZJQUUyQWlBZ0JVSFFBbXBCSGlBQUlBVkIrQUpxSUFWQklHb1Fvd01NQVFzZ0JTQUVPUU13SUFWQjBBSnFRUjRnQUNBRlFmZ0NhaUFGUVRCcUVLTURDeUVHSUFWQjJ4YzJBbEFnQlVIQUFtcEJBQ0FGUWRBQWFoRDBBU0VJSUFWQjBBSnFJZ0VoQUFKQUlBWkJIazRFUUJEQUFTRUFBbjhnQndSQUlBSW9BZ2doQmlBRklBUTVBd2dnQlNBR05nSUFJQVZCekFKcUlBQWdCVUg0QW1vZ0JSQzdCQXdCQ3lBRklBUTVBeEFnQlVITUFtb2dBQ0FGUWZnQ2FpQUZRUkJxRUxzRUN5SUdRWDlHRFFFZ0NDQUZLQUxNQWlJQUVJWUNDeUFBSUFBZ0Jtb2lDaUFDRUx3RUlRc2dCVUhiRnpZQ1VDQUZRY2dBYWtFQUlBVkIwQUJxRVBRQklRY0NRQ0FGUWRBQ2FpQUFSZ1JBSUFWQjBBQnFJUVlNQVFzZ0JrRURkQkRnQVNJR1JRMEJJQWNnQmhDR0FpQUFJUUVMSUFWQk9Hb2lBQ0FDRUg0Z0FTQUxJQW9nQmlBRlFjUUFhaUFGUVVCcklBQVFseFFnQUJCa0lBa2dCaUFGS0FKRUlBVW9Ba0FnQWlBREVJOEdJUUFnQnhEWUFTQUlFTmdCSUFWQmdBTnFKQUFnQUF3QkN4QnZBQXNMRVFBZ0FDQUJJQUlnQXlBRVFRQVE5UklMRVFBZ0FDQUJJQUlnQXlBRVFRQVE5aElMRVFBZ0FDQUJJQUlnQXlBRVFRRVE5UklMRVFBZ0FDQUJJQUlnQXlBRVFRRVE5aElMeUFFQkFYOGpBRUVnYXlJRkpBQWdCU0FCTmdJWUFrQWdBaEM0QVVFQmNVVUVRQ0FBSUFFZ0FpQURJQVFnQUNnQ0FDZ0NHQkVKQUNFQ0RBRUxJQVZCQ0dvaUFTQUNFSDRnQVJDRkJ5RUFJQUVRWkFKQUlBUUVRQ0FGUVFocUlBQVEzQU1NQVFzZ0JVRUlhaUFBRU5zREN5QUZJQVZCQ0dvUWtBWTJBZ0FEUUNBRlFRaHFFTDBGSVFBZ0JTZ0NBQ0lCSUFBUXZRUUVRQ0FGUVJocUlBRW9BZ0FRMHhRZ0JSQ0JCeG9NQVFVZ0JTZ0NHQ0VDSUFWQkNHb1Fod0VhQ3dzTElBVkJJR29rQUNBQ0M1QUJBUVYvSXdCQjRBQnJJZ0FrQUJEQUFTRUdJQUFnQkRZQ0FDQUFRVUJySWdjZ0J5QUhRUlFnQmtIQ3Z3SWdBQkNqQXlJSWFpSUVJQUlRdkFRaEJpQUFRUkJxSWdVZ0FoQitJQVVRd3dJaENTQUZFR1FnQ1NBSElBUWdCUkMvQlNBQklBVWdCU0FJYWlJQklBWWdBR3NnQUdwQk1Hc2dCQ0FHUmhzZ0FTQUNJQU1RL3dVaEFTQUFRZUFBYWlRQUlBRUxqQVFCQjM4Q2Z5QUJJUW9qQUVHQUFtc2lCaVFBSUFaQ0pUY0QrQUVnQmtINEFXcEJBWEpCcU5NR0lBSVF1QUVRK1FraENDQUdJQVpCMEFGcU5nTE1BUkRBQVNFQUFuOGdDQVJBSUFJb0FnZ2hBU0FHUVVCcklBVTNBd0FnQmlBRU53TTRJQVlnQVRZQ01DQUdRZEFCYWtFZUlBQWdCa0g0QVdvZ0JrRXdhaENqQXd3QkN5QUdJQVEzQTFBZ0JpQUZOd05ZSUFaQjBBRnFRUjRnQUNBR1FmZ0JhaUFHUWRBQWFoQ2pBd3NoQnlBR1Fkc1hOZ0tBQVNBR1FjQUJha0VBSUFaQmdBRnFFUFFCSVFrZ0JrSFFBV29pQVNFQUFrQWdCMEVlVGdSQUVNQUJJUUFDZnlBSUJFQWdBaWdDQ0NFSElBWWdCVGNERUNBR0lBUTNBd2dnQmlBSE5nSUFJQVpCekFGcUlBQWdCa0g0QVdvZ0JoQzdCQXdCQ3lBR0lBUTNBeUFnQmlBRk53TW9JQVpCekFGcUlBQWdCa0g0QVdvZ0JrRWdhaEM3QkFzaUIwRi9SZzBCSUFrZ0JpZ0N6QUVpQUJDR0Fnc2dBQ0FBSUFkcUlnc2dBaEM4QkNFTUlBWkIyeGMyQW9BQklBWkIrQUJxUVFBZ0JrR0FBV29ROUFFaENBSkFJQVpCMEFGcUlBQkdCRUFnQmtHQUFXb2hCd3dCQ3lBSFFRRjBFT0FCSWdkRkRRRWdDQ0FIRUlZQ0lBQWhBUXNnQmtIb0FHb2lBQ0FDRUg0Z0FTQU1JQXNnQnlBR1FmUUFhaUFHUWZBQWFpQUFFSm9VSUFBUVpDQUtJQWNnQmlnQ2RDQUdLQUp3SUFJZ0F4RC9CU0VBSUFnUTJBRWdDUkRZQVNBR1FZQUNhaVFBSUFBTUFRc1Fid0FMQytnREFRZC9BbjhnQVNFSkl3QkIwQUZySWdVa0FDQUZRaVUzQThnQklBVkJ5QUZxUVFGeVFkejREQ0FDRUxnQkVQa0pJUWNnQlNBRlFhQUJhallDbkFFUXdBRWhBQUovSUFjRVFDQUNLQUlJSVFFZ0JTQUVPUU1vSUFVZ0FUWUNJQ0FGUWFBQmFrRWVJQUFnQlVISUFXb2dCVUVnYWhDakF3d0JDeUFGSUFRNUF6QWdCVUdnQVdwQkhpQUFJQVZCeUFGcUlBVkJNR29Rb3dNTElRWWdCVUhiRnpZQ1VDQUZRWkFCYWtFQUlBVkIwQUJxRVBRQklRZ2dCVUdnQVdvaUFTRUFBa0FnQmtFZVRnUkFFTUFCSVFBQ2Z5QUhCRUFnQWlnQ0NDRUdJQVVnQkRrRENDQUZJQVkyQWdBZ0JVR2NBV29nQUNBRlFjZ0JhaUFGRUxzRURBRUxJQVVnQkRrREVDQUZRWndCYWlBQUlBVkJ5QUZxSUFWQkVHb1F1d1FMSWdaQmYwWU5BU0FJSUFVb0Fwd0JJZ0FRaGdJTElBQWdBQ0FHYWlJS0lBSVF2QVFoQ3lBRlFkc1hOZ0pRSUFWQnlBQnFRUUFnQlVIUUFHb1E5QUVoQndKQUlBVkJvQUZxSUFCR0JFQWdCVUhRQUdvaEJnd0JDeUFHUVFGMEVPQUJJZ1pGRFFFZ0J5QUdFSVlDSUFBaEFRc2dCVUU0YWlJQUlBSVFmaUFCSUFzZ0NpQUdJQVZCeEFCcUlBVkJRR3NnQUJDYUZDQUFFR1FnQ1NBR0lBVW9Ba1FnQlNnQ1FDQUNJQU1RL3dVaEFDQUhFTmdCSUFnUTJBRWdCVUhRQVdva0FDQUFEQUVMRUc4QUN3c1JBQ0FBSUFFZ0FpQURJQVJCQUJEM0Vnc1JBQ0FBSUFFZ0FpQURJQVJCQUJENEVnc1JBQ0FBSUFFZ0FpQURJQVJCQVJEM0Vnc1JBQ0FBSUFFZ0FpQURJQVJCQVJENEVndklBUUVCZnlNQVFTQnJJZ1VrQUNBRklBRTJBaGdDUUNBQ0VMZ0JRUUZ4UlFSQUlBQWdBU0FDSUFNZ0JDQUFLQUlBS0FJWUVRa0FJUUlNQVFzZ0JVRUlhaUlCSUFJUWZpQUJFSWtISVFBZ0FSQmtBa0FnQkFSQUlBVkJDR29nQUJEY0F3d0JDeUFGUVFocUlBQVEyd01MSUFVZ0JVRUlhaENTQmpZQ0FBTkFJQVZCQ0dvUXZnVWhBQ0FGS0FJQUlnRWdBQkM5QkFSQUlBVkJHR29nQVN3QUFCQ1hEUm9nQlJDQ0J4b01BUVVnQlNnQ0dDRUNJQVZCQ0dvUUR4b0xDd3NnQlVFZ2FpUUFJQUlML1FJQkFYOGpBRUhnQW1zaUFDUUFJQUFnQWpZQzBBSWdBQ0FCTmdMWUFpQUFRZEFCYWhCMElRWWdBRUVRYWlJQ0lBTVFmaUFDRVBBQ1FZQ1REMEdha3c4Z0FFSGdBV29RK2dRZ0FoQmtJQUJCd0FGcUVIUWlBeUFERUpzQkVIWWdBQ0FEUVFBUWlRRWlBVFlDdkFFZ0FDQUNOZ0lNSUFCQkFEWUNDQU5BQWtBZ0FFSFlBbW9nQUVIUUFtb1EyZ0pGRFFBZ0FDZ0N2QUVnQXhBN0lBRnFSZ1JBSUFNUU95RUNJQU1nQXhBN1FRRjBFSFlnQXlBREVKc0JFSFlnQUNBQ0lBTkJBQkNKQVNJQmFqWUN2QUVMSUFBb0F0Z0NFTzBCUVJBZ0FTQUFRYndCYWlBQVFRaHFRUUFnQmlBQVFSQnFJQUJCREdvZ0FFSGdBV29RZ3djTkFDQUFRZGdDYWhDaEFob01BUXNMSUFNZ0FDZ0N2QUVnQVdzUWRpQURFSHNoQWhEQUFTRUJJQUFnQlRZQ0FDQUNJQUVnQUJDakZFRUJSd1JBSUFSQkJEWUNBQXNnQUVIWUFtb2dBRUhRQW1vUWtBSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdGdDSVFFZ0F4QVBHaUFHRUE4YUlBQkI0QUpxSkFBZ0FRdmtBd0lDZndGK0l3QkJnQU5ySWdBa0FDQUFJQUkyQXZBQ0lBQWdBVFlDK0FJZ0FFSFlBV29nQXlBQVFmQUJhaUFBUWV3QmFpQUFRZWdCYWhEL0RDQUFRY2dCYWhCMElnRWdBUkNiQVJCMklBQWdBVUVBRUlrQklnTTJBc1FCSUFBZ0FFRWdhallDSENBQVFRQTJBaGdnQUVFQk9nQVhJQUJCeFFBNkFCWWdBQ2dDNkFFaEFpQUFLQUxzQVNFR0EwQUNRQ0FBUWZnQ2FpQUFRZkFDYWhEYUFrVU5BQ0FBS0FMRUFTQUJFRHNnQTJwR0JFQWdBUkE3SVFjZ0FTQUJFRHRCQVhRUWRpQUJJQUVRbXdFUWRpQUFJQWNnQVVFQUVJa0JJZ05xTmdMRUFRc2dBQ2dDK0FJUTdRRWdBRUVYYWlBQVFSWnFJQU1nQUVIRUFXb2dCaUFDSUFCQjJBRnFJQUJCSUdvZ0FFRWNhaUFBUVJocUlBQkI4QUZxRVA0TURRQWdBRUg0QW1vUW9RSWFEQUVMQ3lBQVFkZ0JhaEE3SVFZZ0FDZ0NIQ0VDQWtBZ0JrVU5BQ0FBTFFBWFJTQUNJQUJCSUdwclFaOEJTbklOQUNBQ0lBQW9BaGcyQWdBZ0FrRUVhaUVDQ3lBQUlBTWdBQ2dDeEFFZ0JCQ2tGQ0FBS1FNQUlRZ2dCU0FBS1FNSU53TUlJQVVnQ0RjREFDQUFRZGdCYWlBQVFTQnFJQUlnQkJESUFpQUFRZmdDYWlBQVFmQUNhaENRQWdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQytBSWhBaUFCRUE4YUlBQkIyQUZxRUE4YUlBQkJnQU5xSkFBZ0Fndk5Bd0VDZnlNQVFmQUNheUlBSkFBZ0FDQUNOZ0xnQWlBQUlBRTJBdWdDSUFCQnlBRnFJQU1nQUVIZ0FXb2dBRUhjQVdvZ0FFSFlBV29RL3d3Z0FFRzRBV29RZENJQklBRVFtd0VRZGlBQUlBRkJBQkNKQVNJRE5nSzBBU0FBSUFCQkVHbzJBZ3dnQUVFQU5nSUlJQUJCQVRvQUJ5QUFRY1VBT2dBR0lBQW9BdGdCSVFJZ0FDZ0MzQUVoQmdOQUFrQWdBRUhvQW1vZ0FFSGdBbW9RMmdKRkRRQWdBQ2dDdEFFZ0FSQTdJQU5xUmdSQUlBRVFPeUVISUFFZ0FSQTdRUUYwRUhZZ0FTQUJFSnNCRUhZZ0FDQUhJQUZCQUJDSkFTSURhallDdEFFTElBQW9BdWdDRU8wQklBQkJCMm9nQUVFR2FpQURJQUJCdEFGcUlBWWdBaUFBUWNnQmFpQUFRUkJxSUFCQkRHb2dBRUVJYWlBQVFlQUJhaEQrREEwQUlBQkI2QUpxRUtFQ0dnd0JDd3NnQUVISUFXb1FPeUVHSUFBb0Fnd2hBZ0pBSUFaRkRRQWdBQzBBQjBVZ0FpQUFRUkJxYTBHZkFVcHlEUUFnQWlBQUtBSUlOZ0lBSUFKQkJHb2hBZ3NnQlNBRElBQW9BclFCSUFRUXBoUTVBd0FnQUVISUFXb2dBRUVRYWlBQ0lBUVF5QUlnQUVIb0Ftb2dBRUhnQW1vUWtBSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdWdDSVFJZ0FSQVBHaUFBUWNnQmFoQVBHaUFBUWZBQ2FpUUFJQUlMelFNQkFuOGpBRUh3QW1zaUFDUUFJQUFnQWpZQzRBSWdBQ0FCTmdMb0FpQUFRY2dCYWlBRElBQkI0QUZxSUFCQjNBRnFJQUJCMkFGcUVQOE1JQUJCdUFGcUVIUWlBU0FCRUpzQkVIWWdBQ0FCUVFBUWlRRWlBellDdEFFZ0FDQUFRUkJxTmdJTUlBQkJBRFlDQ0NBQVFRRTZBQWNnQUVIRkFEb0FCaUFBS0FMWUFTRUNJQUFvQXR3QklRWURRQUpBSUFCQjZBSnFJQUJCNEFKcUVOb0NSUTBBSUFBb0FyUUJJQUVRT3lBRGFrWUVRQ0FCRURzaEJ5QUJJQUVRTzBFQmRCQjJJQUVnQVJDYkFSQjJJQUFnQnlBQlFRQVFpUUVpQTJvMkFyUUJDeUFBS0FMb0FoRHRBU0FBUVFkcUlBQkJCbW9nQXlBQVFiUUJhaUFHSUFJZ0FFSElBV29nQUVFUWFpQUFRUXhxSUFCQkNHb2dBRUhnQVdvUS9nd05BQ0FBUWVnQ2FoQ2hBaG9NQVFzTElBQkJ5QUZxRURzaEJpQUFLQUlNSVFJQ1FDQUdSUTBBSUFBdEFBZEZJQUlnQUVFUWFtdEJud0ZLY2cwQUlBSWdBQ2dDQ0RZQ0FDQUNRUVJxSVFJTElBVWdBeUFBS0FLMEFTQUVFS2dVT0FJQUlBQkJ5QUZxSUFCQkVHb2dBaUFFRU1nQ0lBQkI2QUpxSUFCQjRBSnFFSkFDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FMb0FpRUNJQUVRRHhvZ0FFSElBV29RRHhvZ0FFSHdBbW9rQUNBQ0M2TURBUU4vSXdCQjRBSnJJZ0FrQUNBQUlBSTJBdEFDSUFBZ0FUWUMyQUlnQXhDK0JDRUdJQU1nQUVIZ0FXb1FtZ2doQnlBQVFkQUJhaUFESUFCQnpBSnFFSmtJSUFCQndBRnFFSFFpQVNBQkVKc0JFSFlnQUNBQlFRQVFpUUVpQWpZQ3ZBRWdBQ0FBUVJCcU5nSU1JQUJCQURZQ0NDQUFLQUxNQWlFREEwQUNRQ0FBUWRnQ2FpQUFRZEFDYWhEYUFrVU5BQ0FBS0FLOEFTQUJFRHNnQW1wR0JFQWdBUkE3SVFnZ0FTQUJFRHRCQVhRUWRpQUJJQUVRbXdFUWRpQUFJQWdnQVVFQUVJa0JJZ0pxTmdLOEFRc2dBQ2dDMkFJUTdRRWdCaUFDSUFCQnZBRnFJQUJCQ0dvZ0F5QUFRZEFCYWlBQVFSQnFJQUJCREdvZ0J4Q0RCdzBBSUFCQjJBSnFFS0VDR2d3QkN3c2dBRUhRQVdvUU8wVWdBQ2dDRENJRElBQkJFR3ByUVo4QlNuSkZCRUFnQXlBQUtBSUlOZ0lBSUFOQkJHb2hBd3NnQlNBQ0lBQW9BcndCSUFRZ0JoQ3BGRGNEQUNBQVFkQUJhaUFBUVJCcUlBTWdCQkRJQWlBQVFkZ0NhaUFBUWRBQ2FoQ1FBZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDMkFJaEFpQUJFQThhSUFCQjBBRnFFQThhSUFCQjRBSnFKQUFnQWd1akF3RURmeU1BUWVBQ2F5SUFKQUFnQUNBQ05nTFFBaUFBSUFFMkF0Z0NJQU1RdmdRaEJpQURJQUJCNEFGcUVKb0lJUWNnQUVIUUFXb2dBeUFBUWN3Q2FoQ1pDQ0FBUWNBQmFoQjBJZ0VnQVJDYkFSQjJJQUFnQVVFQUVJa0JJZ0kyQXJ3QklBQWdBRUVRYWpZQ0RDQUFRUUEyQWdnZ0FDZ0N6QUloQXdOQUFrQWdBRUhZQW1vZ0FFSFFBbW9RMmdKRkRRQWdBQ2dDdkFFZ0FSQTdJQUpxUmdSQUlBRVFPeUVJSUFFZ0FSQTdRUUYwRUhZZ0FTQUJFSnNCRUhZZ0FDQUlJQUZCQUJDSkFTSUNhallDdkFFTElBQW9BdGdDRU8wQklBWWdBaUFBUWJ3QmFpQUFRUWhxSUFNZ0FFSFFBV29nQUVFUWFpQUFRUXhxSUFjUWd3Y05BQ0FBUWRnQ2FoQ2hBaG9NQVFzTElBQkIwQUZxRUR0RklBQW9BZ3dpQXlBQVFSQnFhMEdmQVVweVJRUkFJQU1nQUNnQ0NEWUNBQ0FEUVFScUlRTUxJQVVnQWlBQUtBSzhBU0FFSUFZUXJCUTdBUUFnQUVIUUFXb2dBRUVRYWlBRElBUVF5QUlnQUVIWUFtb2dBRUhRQW1vUWtBSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdGdDSVFJZ0FSQVBHaUFBUWRBQmFoQVBHaUFBUWVBQ2FpUUFJQUlMb3dNQkEzOGpBRUhnQW1zaUFDUUFJQUFnQWpZQzBBSWdBQ0FCTmdMWUFpQURFTDRFSVFZZ0F5QUFRZUFCYWhDYUNDRUhJQUJCMEFGcUlBTWdBRUhNQW1vUW1RZ2dBRUhBQVdvUWRDSUJJQUVRbXdFUWRpQUFJQUZCQUJDSkFTSUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFBb0Fzd0NJUU1EUUFKQUlBQkIyQUpxSUFCQjBBSnFFTm9DUlEwQUlBQW9BcndCSUFFUU95QUNha1lFUUNBQkVEc2hDQ0FCSUFFUU8wRUJkQkIySUFFZ0FSQ2JBUkIySUFBZ0NDQUJRUUFRaVFFaUFtbzJBcndCQ3lBQUtBTFlBaER0QVNBR0lBSWdBRUc4QVdvZ0FFRUlhaUFESUFCQjBBRnFJQUJCRUdvZ0FFRU1haUFIRUlNSERRQWdBRUhZQW1vUW9RSWFEQUVMQ3lBQVFkQUJhaEE3UlNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLY2tVRVFDQURJQUFvQWdnMkFnQWdBMEVFYWlFREN5QUZJQUlnQUNnQ3ZBRWdCQ0FHRUswVU53TUFJQUJCMEFGcUlBQkJFR29nQXlBRUVNZ0NJQUJCMkFKcUlBQkIwQUpxRUpBQ0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTFlBaUVDSUFFUUR4b2dBRUhRQVdvUUR4b2dBRUhnQW1va0FDQUNDOVFDQVFSL0l3QkIwQUJySWdVa0FDQUZJQVEyQWd3Z0JTQUJOZ0lJSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGUVFocUlBTW9BZ0FRbnhRTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ0UyQWtBZ0FTQUZLQUpNRURrZ0JVRkFheUVIUVFBaEFRSkFBa0FEUUNBQklBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBTW9BZ0FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaFFnQlVFWWFpSUdJQVFnQ0NBRlFRaHFJQUVnQlVFVWFoQ2VGQ0FHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDNk1EQVFOL0l3QkI0QUpySWdBa0FDQUFJQUkyQXRBQ0lBQWdBVFlDMkFJZ0F4QytCQ0VHSUFNZ0FFSGdBV29RbWdnaEJ5QUFRZEFCYWlBRElBQkJ6QUpxRUprSUlBQkJ3QUZxRUhRaUFTQUJFSnNCRUhZZ0FDQUJRUUFRaVFFaUFqWUN2QUVnQUNBQVFSQnFOZ0lNSUFCQkFEWUNDQ0FBS0FMTUFpRURBMEFDUUNBQVFkZ0NhaUFBUWRBQ2FoRGFBa1VOQUNBQUtBSzhBU0FCRURzZ0FtcEdCRUFnQVJBN0lRZ2dBU0FCRUR0QkFYUVFkaUFCSUFFUW13RVFkaUFBSUFnZ0FVRUFFSWtCSWdKcU5nSzhBUXNnQUNnQzJBSVE3UUVnQmlBQ0lBQkJ2QUZxSUFCQkNHb2dBeUFBUWRBQmFpQUFRUkJxSUFCQkRHb2dCeENEQncwQUlBQkIyQUpxRUtFQ0dnd0JDd3NnQUVIUUFXb1FPMFVnQUNnQ0RDSURJQUJCRUdwclFaOEJTbkpGQkVBZ0F5QUFLQUlJTmdJQUlBTkJCR29oQXdzZ0JTQUNJQUFvQXJ3QklBUWdCaEN2RkRZQ0FDQUFRZEFCYWlBQVFSQnFJQU1nQkJESUFpQUFRZGdDYWlBQVFkQUNhaENRQWdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQzJBSWhBaUFCRUE4YUlBQkIwQUZxRUE4YUlBQkI0QUpxSkFBZ0FndnJBUUVCZnlNQVFTQnJJZ1lrQUNBR0lBRTJBaGdDUUNBREVMZ0JRUUZ4UlFSQUlBWkJmellDQUNBQUlBRWdBaUFESUFRZ0JpQUFLQUlBS0FJUUVRc0FJUUVDUUFKQUFrQWdCaWdDQUE0Q0FBRUNDeUFGUVFBNkFBQU1Bd3NnQlVFQk9nQUFEQUlMSUFWQkFUb0FBQ0FFUVFRMkFnQU1BUXNnQmlBREVINGdCaER3QWlFQklBWVFaQ0FHSUFNUWZpQUdFSVVISVFBZ0JoQmtJQVlnQUJEY0F5QUdRUXh5SUFBUTJ3TWdCU0FHUVJocUlnTWdBaUFHSUFNZ0FTQUVRUUVRL3drZ0JrWTZBQUFnQmlnQ0dDRUJBMEFnQTBFTWF4Q0hBU0lESUFaSERRQUxDeUFHUVNCcUpBQWdBUXY5QWdFQmZ5TUFRWkFDYXlJQUpBQWdBQ0FDTmdLQUFpQUFJQUUyQW9nQ0lBQkIwQUZxRUhRaEJpQUFRUkJxSWdJZ0F4QitJQUlRd3dKQmdKTVBRWnFURHlBQVFlQUJhaEMvQlNBQ0VHUWdBRUhBQVdvUWRDSURJQU1RbXdFUWRpQUFJQU5CQUJDSkFTSUJOZ0s4QVNBQUlBSTJBZ3dnQUVFQU5nSUlBMEFDUUNBQVFZZ0NhaUFBUVlBQ2FoREtBa1VOQUNBQUtBSzhBU0FERURzZ0FXcEdCRUFnQXhBN0lRSWdBeUFERUR0QkFYUVFkaUFESUFNUW13RVFkaUFBSUFJZ0EwRUFFSWtCSWdGcU5nSzhBUXNnQUNnQ2lBSVE3Z0ZCRUNBQklBQkJ2QUZxSUFCQkNHcEJBQ0FHSUFCQkVHb2dBRUVNYWlBQVFlQUJhaENHQncwQUlBQkJpQUpxRUpzQ0dnd0JDd3NnQXlBQUtBSzhBU0FCYXhCMklBTVFleUVDRU1BQklRRWdBQ0FGTmdJQUlBSWdBU0FBRUtNVVFRRkhCRUFnQkVFRU5nSUFDeUFBUVlnQ2FpQUFRWUFDYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0NpQUloQVNBREVBOGFJQVlRRHhvZ0FFR1FBbW9rQUNBQkMrUURBZ0ovQVg0akFFR2dBbXNpQUNRQUlBQWdBallDa0FJZ0FDQUJOZ0tZQWlBQVFlQUJhaUFESUFCQjhBRnFJQUJCN3dGcUlBQkI3Z0ZxRUlJTklBQkIwQUZxRUhRaUFTQUJFSnNCRUhZZ0FDQUJRUUFRaVFFaUF6WUN6QUVnQUNBQVFTQnFOZ0ljSUFCQkFEWUNHQ0FBUVFFNkFCY2dBRUhGQURvQUZpQUFMQUR1QVNFQ0lBQXNBTzhCSVFZRFFBSkFJQUJCbUFKcUlBQkJrQUpxRU1vQ1JRMEFJQUFvQXN3QklBRVFPeUFEYWtZRVFDQUJFRHNoQnlBQklBRVFPMEVCZEJCMklBRWdBUkNiQVJCMklBQWdCeUFCUVFBUWlRRWlBMm8yQXN3QkN5QUFLQUtZQWhEdUFTQUFRUmRxSUFCQkZtb2dBeUFBUWN3QmFpQUdJQUlnQUVIZ0FXb2dBRUVnYWlBQVFSeHFJQUJCR0dvZ0FFSHdBV29RZ1EwTkFDQUFRWmdDYWhDYkFob01BUXNMSUFCQjRBRnFFRHNoQmlBQUtBSWNJUUlDUUNBR1JRMEFJQUF0QUJkRklBSWdBRUVnYW10Qm53RktjZzBBSUFJZ0FDZ0NHRFlDQUNBQ1FRUnFJUUlMSUFBZ0F5QUFLQUxNQVNBRUVLUVVJQUFwQXdBaENDQUZJQUFwQXdnM0F3Z2dCU0FJTndNQUlBQkI0QUZxSUFCQklHb2dBaUFFRU1nQ0lBQkJtQUpxSUFCQmtBSnFFSWNDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FLWUFpRUNJQUVRRHhvZ0FFSGdBV29RRHhvZ0FFR2dBbW9rQUNBQ0M4MERBUUovSXdCQmtBSnJJZ0FrQUNBQUlBSTJBb0FDSUFBZ0FUWUNpQUlnQUVIUUFXb2dBeUFBUWVBQmFpQUFRZDhCYWlBQVFkNEJhaENDRFNBQVFjQUJhaEIwSWdFZ0FSQ2JBUkIySUFBZ0FVRUFFSWtCSWdNMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ2dBRUVCT2dBSElBQkJ4UUE2QUFZZ0FDd0EzZ0VoQWlBQUxBRGZBU0VHQTBBQ1FDQUFRWWdDYWlBQVFZQUNhaERLQWtVTkFDQUFLQUs4QVNBQkVEc2dBMnBHQkVBZ0FSQTdJUWNnQVNBQkVEdEJBWFFRZGlBQklBRVFtd0VRZGlBQUlBY2dBVUVBRUlrQklnTnFOZ0s4QVFzZ0FDZ0NpQUlRN2dFZ0FFRUhhaUFBUVFacUlBTWdBRUc4QVdvZ0JpQUNJQUJCMEFGcUlBQkJFR29nQUVFTWFpQUFRUWhxSUFCQjRBRnFFSUVORFFBZ0FFR0lBbW9RbXdJYURBRUxDeUFBUWRBQmFoQTdJUVlnQUNnQ0RDRUNBa0FnQmtVTkFDQUFMUUFIUlNBQ0lBQkJFR3ByUVo4QlNuSU5BQ0FDSUFBb0FnZzJBZ0FnQWtFRWFpRUNDeUFGSUFNZ0FDZ0N2QUVnQkJDbUZEa0RBQ0FBUWRBQmFpQUFRUkJxSUFJZ0JCRElBaUFBUVlnQ2FpQUFRWUFDYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0NpQUloQWlBQkVBOGFJQUJCMEFGcUVBOGFJQUJCa0FKcUpBQWdBZ3ZOQXdFQ2Z5TUFRWkFDYXlJQUpBQWdBQ0FDTmdLQUFpQUFJQUUyQW9nQ0lBQkIwQUZxSUFNZ0FFSGdBV29nQUVIZkFXb2dBRUhlQVdvUWdnMGdBRUhBQVdvUWRDSUJJQUVRbXdFUWRpQUFJQUZCQUJDSkFTSUROZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFCQkFUb0FCeUFBUWNVQU9nQUdJQUFzQU40QklRSWdBQ3dBM3dFaEJnTkFBa0FnQUVHSUFtb2dBRUdBQW1vUXlnSkZEUUFnQUNnQ3ZBRWdBUkE3SUFOcVJnUkFJQUVRT3lFSElBRWdBUkE3UVFGMEVIWWdBU0FCRUpzQkVIWWdBQ0FISUFGQkFCQ0pBU0lEYWpZQ3ZBRUxJQUFvQW9nQ0VPNEJJQUJCQjJvZ0FFRUdhaUFESUFCQnZBRnFJQVlnQWlBQVFkQUJhaUFBUVJCcUlBQkJER29nQUVFSWFpQUFRZUFCYWhDQkRRMEFJQUJCaUFKcUVKc0NHZ3dCQ3dzZ0FFSFFBV29RT3lFR0lBQW9BZ3doQWdKQUlBWkZEUUFnQUMwQUIwVWdBaUFBUVJCcWEwR2ZBVXB5RFFBZ0FpQUFLQUlJTmdJQUlBSkJCR29oQWdzZ0JTQURJQUFvQXJ3QklBUVFxQlE0QWdBZ0FFSFFBV29nQUVFUWFpQUNJQVFReUFJZ0FFR0lBbW9nQUVHQUFtb1Fod0lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRSWdBUkFQR2lBQVFkQUJhaEFQR2lBQVFaQUNhaVFBSUFJTG1BTUJBbjhqQUVId0FXc2lBQ1FBSUFBZ0FqWUM0QUVnQUNBQk5nTG9BU0FERUw0RUlRWWdBRUhRQVdvZ0F5QUFRZDhCYWhDYkNDQUFRY0FCYWhCMElnRWdBUkNiQVJCMklBQWdBVUVBRUlrQklnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dnQUN3QTN3RWhBd05BQWtBZ0FFSG9BV29nQUVIZ0FXb1F5Z0pGRFFBZ0FDZ0N2QUVnQVJBN0lBSnFSZ1JBSUFFUU95RUhJQUVnQVJBN1FRRjBFSFlnQVNBQkVKc0JFSFlnQUNBSElBRkJBQkNKQVNJQ2FqWUN2QUVMSUFBb0F1Z0JFTzRCSUFZZ0FpQUFRYndCYWlBQVFRaHFJQU1nQUVIUUFXb2dBRUVRYWlBQVFReHFRWUNURHhDR0J3MEFJQUJCNkFGcUVKc0NHZ3dCQ3dzZ0FFSFFBV29RTzBVZ0FDZ0NEQ0lESUFCQkVHcHJRWjhCU25KRkJFQWdBeUFBS0FJSU5nSUFJQU5CQkdvaEF3c2dCU0FDSUFBb0Fyd0JJQVFnQmhDcEZEY0RBQ0FBUWRBQmFpQUFRUkJxSUFNZ0JCRElBaUFBUWVnQmFpQUFRZUFCYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0M2QUVoQWlBQkVBOGFJQUJCMEFGcUVBOGFJQUJCOEFGcUpBQWdBZ3VZQXdFQ2Z5TUFRZkFCYXlJQUpBQWdBQ0FDTmdMZ0FTQUFJQUUyQXVnQklBTVF2Z1FoQmlBQVFkQUJhaUFESUFCQjN3RnFFSnNJSUFCQndBRnFFSFFpQVNBQkVKc0JFSFlnQUNBQlFRQVFpUUVpQWpZQ3ZBRWdBQ0FBUVJCcU5nSU1JQUJCQURZQ0NDQUFMQURmQVNFREEwQUNRQ0FBUWVnQmFpQUFRZUFCYWhES0FrVU5BQ0FBS0FLOEFTQUJFRHNnQW1wR0JFQWdBUkE3SVFjZ0FTQUJFRHRCQVhRUWRpQUJJQUVRbXdFUWRpQUFJQWNnQVVFQUVJa0JJZ0pxTmdLOEFRc2dBQ2dDNkFFUTdnRWdCaUFDSUFCQnZBRnFJQUJCQ0dvZ0F5QUFRZEFCYWlBQVFSQnFJQUJCREdwQmdKTVBFSVlIRFFBZ0FFSG9BV29RbXdJYURBRUxDeUFBUWRBQmFoQTdSU0FBS0FJTUlnTWdBRUVRYW10Qm53Rktja1VFUUNBRElBQW9BZ2cyQWdBZ0EwRUVhaUVEQ3lBRklBSWdBQ2dDdkFFZ0JDQUdFS3dVT3dFQUlBQkIwQUZxSUFCQkVHb2dBeUFFRU1nQ0lBQkI2QUZxSUFCQjRBRnFFSWNDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FMb0FTRUNJQUVRRHhvZ0FFSFFBV29RRHhvZ0FFSHdBV29rQUNBQ0M1Z0RBUUovSXdCQjhBRnJJZ0FrQUNBQUlBSTJBdUFCSUFBZ0FUWUM2QUVnQXhDK0JDRUdJQUJCMEFGcUlBTWdBRUhmQVdvUW13Z2dBRUhBQVdvUWRDSUJJQUVRbXdFUWRpQUFJQUZCQUJDSkFTSUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFBc0FOOEJJUU1EUUFKQUlBQkI2QUZxSUFCQjRBRnFFTW9DUlEwQUlBQW9BcndCSUFFUU95QUNha1lFUUNBQkVEc2hCeUFCSUFFUU8wRUJkQkIySUFFZ0FSQ2JBUkIySUFBZ0J5QUJRUUFRaVFFaUFtbzJBcndCQ3lBQUtBTG9BUkR1QVNBR0lBSWdBRUc4QVdvZ0FFRUlhaUFESUFCQjBBRnFJQUJCRUdvZ0FFRU1ha0dBa3c4UWhnY05BQ0FBUWVnQmFoQ2JBaG9NQVFzTElBQkIwQUZxRUR0RklBQW9BZ3dpQXlBQVFSQnFhMEdmQVVweVJRUkFJQU1nQUNnQ0NEWUNBQ0FEUVFScUlRTUxJQVVnQWlBQUtBSzhBU0FFSUFZUXJSUTNBd0FnQUVIUUFXb2dBRUVRYWlBRElBUVF5QUlnQUVIb0FXb2dBRUhnQVdvUWh3SUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdWdCSVFJZ0FSQVBHaUFBUWRBQmFoQVBHaUFBUWZBQmFpUUFJQUlMcVFJQkJuOGpBRUhnQUdzaUJDUUFJQVJDZ0lDQWdNQUFOd0pVSUFRZ0JFRkFhellDVUNBRVFUQnFJUWdnQkVIUUFHb2hDUU5BSUFJb0FpUWdCa3NFUUNBRVFvQ0FnSURBQURjQ05DQUVJQVJCSUdvMkFqQkJBQ0VGQTBBZ0FpZ0NJQ0lISUFWTkJFQWdBaWdDSENFRklBRW9BZ0FoQnlBRUlBZzJBaEFnQkNBRVFTQnFJZ29nQkNnQ01FYzZBQlFnQkNBSElBVWdCRUVRYWhBNk5nSWNJQVpCQVdvaEJpQUVRVUJySUFSQkhHb1FjU0FLRUY0TUF3VWdCRUVnYWlBREtBSUFLQUlBSUFZZ0Iyd2dCV3BCQW5ScUVIRWdCVUVCYWlFRkRBRUxBQXNBQ3dzZ0FTZ0NBQ0VCSUFRZ0NUWUNDQ0FFSUFSQlFHc2lBeUFFS0FKUVJ6b0FEQ0FCSUFJZ0JFRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQ0FERUY0Z0JFSGdBR29rQUF1WUF3RUNmeU1BUWZBQmF5SUFKQUFnQUNBQ05nTGdBU0FBSUFFMkF1Z0JJQU1RdmdRaEJpQUFRZEFCYWlBRElBQkIzd0ZxRUpzSUlBQkJ3QUZxRUhRaUFTQUJFSnNCRUhZZ0FDQUJRUUFRaVFFaUFqWUN2QUVnQUNBQVFSQnFOZ0lNSUFCQkFEWUNDQ0FBTEFEZkFTRURBMEFDUUNBQVFlZ0JhaUFBUWVBQmFoREtBa1VOQUNBQUtBSzhBU0FCRURzZ0FtcEdCRUFnQVJBN0lRY2dBU0FCRUR0QkFYUVFkaUFCSUFFUW13RVFkaUFBSUFjZ0FVRUFFSWtCSWdKcU5nSzhBUXNnQUNnQzZBRVE3Z0VnQmlBQ0lBQkJ2QUZxSUFCQkNHb2dBeUFBUWRBQmFpQUFRUkJxSUFCQkRHcEJnSk1QRUlZSERRQWdBRUhvQVdvUW13SWFEQUVMQ3lBQVFkQUJhaEE3UlNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLY2tVRVFDQURJQUFvQWdnMkFnQWdBMEVFYWlFREN5QUZJQUlnQUNnQ3ZBRWdCQ0FHRUs4VU5nSUFJQUJCMEFGcUlBQkJFR29nQXlBRUVNZ0NJQUJCNkFGcUlBQkI0QUZxRUljQ0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTG9BU0VDSUFFUUR4b2dBRUhRQVdvUUR4b2dBRUh3QVdva0FDQUNDeUlCQVg4Z0FDRUJRZWk4SUVIb3ZDQW9BZ0JCQVdvaUFEWUNBQ0FCSUFBMkFnUUx1d0lCQlg4akFFRXdheUlFSkFBZ0JFS0FnSUNBd0FBM0FpUWdCQ0FFUVJCcU5nSWdJQU1vQWdBaUF5Z0NBQ0lGSUFNb0FnUkJBblJxSVFjZ0JFRWdhaUVJQWtBRFFDQUZJQWRIQkVBZ0JDQUZLQUlBSWdNMkFnd2dBMFVFUUNBQVFRRTZBQVFnQUVFQU5nSUFEQU1MQWtBZ0F5QURLQUlBS0FJSUVRQUFFTElDSWdrRVFFRUFJUU1EUUNBRElBa29BaHhQRFFJZ0JDQUVLQUlNSWdZZ0F5QUdLQUlBS0FJTUVRRUFJZ1kyQWdnZ0JnUkFJQU5CQVdvaEF5QUVRUkJxSUFSQkNHb1FjUXdCQlNBQVFRRTZBQVFnQUVFQU5nSUFEQVlMQUFzQUN5QUVRUkJxSUFSQkRHb1FjUXNnQlVFRWFpRUZEQUVMQ3lBQktBSUFJUUVnQkNBSU5nSUFJQVFnQkNnQ0lDQUVRUkJxUnpvQUJDQUJJQUlnQkJBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JFRVFhaEJlSUFSQk1Hb2tBQXZxQVFFQmZ5TUFRU0JySWdZa0FDQUdJQUUyQWhnQ1FDQURFTGdCUVFGeFJRUkFJQVpCZnpZQ0FDQUFJQUVnQWlBRElBUWdCaUFBS0FJQUtBSVFFUXNBSVFFQ1FBSkFBa0FnQmlnQ0FBNENBQUVDQ3lBRlFRQTZBQUFNQXdzZ0JVRUJPZ0FBREFJTElBVkJBVG9BQUNBRVFRUTJBZ0FNQVFzZ0JpQURFSDRnQmhEREFpRUJJQVlRWkNBR0lBTVFmaUFHRUlrSElRQWdCaEJrSUFZZ0FCRGNBeUFHUVF4eUlBQVEyd01nQlNBR1FSaHFJZ01nQWlBR0lBTWdBU0FFUVFFUWd3b2dCa1k2QUFBZ0JpZ0NHQ0VCQTBBZ0EwRU1heEFQSWdNZ0JrY05BQXNMSUFaQklHb2tBQ0FCQzBBQkFYOUJBQ0VBQTM4Z0FTQUNSZ1IvSUFBRklBRW9BZ0FnQUVFRWRHb2lBRUdBZ0lDQWYzRWlBMEVZZGlBRGNpQUFjeUVBSUFGQkJHb2hBUXdCQ3dzTERBQWdBQ0FDSUFNUWpBY2FDMVFCQW44Q1FBTkFJQU1nQkVjRVFFRi9JUUFnQVNBQ1JnMENJQUVvQWdBaUJTQURLQUlBSWdaSURRSWdCU0FHU2dSQVFRRVBCU0FEUVFScUlRTWdBVUVFYWlFQkRBSUxBQXNMSUFFZ0FrY2hBQXNnQUFzMkFDQURLQUlBS0FJQUtBSUFJZ01FZnlBQktBSUFJQUlnQXlBQ0tBSWNFS29HQlVFQUN5RUNJQUJCQVRvQUJDQUFJQUkyQWdBTFFBRUJmMEVBSVFBRGZ5QUJJQUpHQkg4Z0FBVWdBU3dBQUNBQVFRUjBhaUlBUVlDQWdJQi9jU0lEUVJoMklBTnlJQUJ6SVFBZ0FVRUJhaUVCREFFTEN3c01BQ0FBSUFJZ0F4Q0ZDaG9MWGdFRGZ5QUJJQVFnQTJ0cUlRVUNRQU5BSUFNZ0JFY0VRRUYvSVFBZ0FTQUNSZzBDSUFFc0FBQWlCaUFETEFBQUlnZElEUUlnQmlBSFNnUkFRUUVQQlNBRFFRRnFJUU1nQVVFQmFpRUJEQUlMQUFzTElBSWdCVWNoQUFzZ0FBc2RBQ0FES0FJQUtBSUFLQUlBSVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNaQUNBQklBSVFrUUVoQVNBQVFRRTZBQVFnQUNBQk5nSUFDMVFCQW44Z0FTQUFLQUpVSWdFZ0FVRUFJQUpCZ0FKcUlnTVFxdzBpQkNBQmF5QURJQVFiSWdNZ0FpQUNJQU5MR3lJQ0VIMGFJQUFnQVNBRGFpSUROZ0pVSUFBZ0F6WUNDQ0FBSUFFZ0FtbzJBZ1FnQWd2MUFRRURmeU1BUVNCcklnSWtBQ0FCUVg4UTJBVWhCQ0FBTFFBMElRTUNRQ0FFQkVBZ0F3MEJJQUFnQUNnQ01DSUJRWDhRMkFWQkFYTTZBRFFNQVFzQ1FDQURSUTBBSUFJZ0FDZ0NNQkNTQnpvQUV3SkFBa0FDUUNBQUtBSWtJQUFvQWlnZ0FrRVRhaUFDUVJScUlnTWdBa0VNYWlBQ1FSaHFJQUpCSUdvZ0F4Q1JDa0VCYXc0REFnSUFBUXNnQUNnQ01DRURJQUlnQWtFWmFqWUNGQ0FDSUFNNkFCZ0xBMEFnQWlnQ0ZDSURJQUpCR0dwTkRRSWdBaUFEUVFGcklnTTJBaFFnQXl3QUFDQUFLQUlnRUpBS1FYOUhEUUFMQzBGL0lRRU1BUXNnQUVFQk9nQTBJQUFnQVRZQ01Bc2dBa0VnYWlRQUlBRUxDUUFnQUVFQkVMOFVDd2tBSUFCQkFCQy9GQXN6QUNBQUlBRVFqZzBpQVRZQ0pDQUFJQUVRa1FjMkFpd2dBQ0FBS0FJa0VJMEhPZ0ExSUFBb0FpeEJDVTRFUUJCdkFBc0wrZ0VCQlg4akFFRWdheUlDSkFBQ2Z3SkFBa0FnQVVGL0VOZ0ZEUUFnQWlBQkVKSUhPZ0FYSUFBdEFDd0VRQ0FDUVJkcVFRRkJBU0FBS0FJZ0VJQUZRUUZIRFFJTUFRc2dBaUFDUVJocUlnVTJBaEFnQWtFZ2FpRUdJQUpCRjJvaEF3TkFJQUFvQWlRZ0FDZ0NLQ0FESUFVZ0FrRU1haUFDUVJocUlBWWdBa0VRYWhDUkNpRUVJQUlvQWd3Z0EwWU5BaUFFUVFOR0JFQWdBMEVCUVFFZ0FDZ0NJQkNBQlVFQlJnMENEQU1MSUFSQkFVc05BaUFDUVJocUlnTkJBU0FDS0FJUUlBTnJJZ01nQUNnQ0lCQ0FCU0FEUncwQ0lBSW9BZ3doQXlBRVFRRkdEUUFMQ3lBQkVJOE5EQUVMUVg4TElRQWdBa0VnYWlRQUlBQUxhUUVCZndKQUlBQXRBQ3hGQkVBZ0FrRUFJQUpCQUVvYklRSURRQ0FDSUFOR0RRSWdBQ0FCTEFBQUVLVURJQUFvQWdBb0FqUVJBUUJCZjBZRVFDQUREd1VnQVVFQmFpRUJJQU5CQVdvaEF3d0JDd0FMQUFzZ0FVRUJJQUlnQUNnQ0lCQ0FCU0VDQ3lBQ0N5WUFJQUFnQUNnQ0FDZ0NHQkVBQUJvZ0FDQUJFSTROSWdFMkFpUWdBQ0FCRUkwSE9nQXNDK29CQVFKL0l3QkJJR3NpQWlRQUlBQXRBRFFoQXdKQUlBRVFrQWNFUUNBRERRRWdBQ0FBS0FJd0lnRVFrQWRCQVhNNkFEUU1BUXNDUUNBRFJRMEFJQUlnQUNnQ01EWUNFQUpBQWtBQ1FDQUFLQUlrSUFBb0FpZ2dBa0VRYWlBQ1FSUnFJZ01nQWtFTWFpQUNRUmhxSUFKQklHb2dBeENSQ2tFQmF3NERBZ0lBQVFzZ0FDZ0NNQ0VESUFJZ0FrRVphallDRkNBQ0lBTTZBQmdMQTBBZ0FpZ0NGQ0lESUFKQkdHcE5EUUlnQWlBRFFRRnJJZ00yQWhRZ0F5d0FBQ0FBS0FJZ0VKQUtRWDlIRFFBTEMwRi9JUUVNQVFzZ0FFRUJPZ0EwSUFBZ0FUWUNNQXNnQWtFZ2FpUUFJQUVMQ1FBZ0FFRUJFTUlVQ3drQUlBQkJBQkRDRkFzekFDQUFJQUVRaWcwaUFUWUNKQ0FBSUFFUWtRYzJBaXdnQUNBQUtBSWtFSTBIT2dBMUlBQW9BaXhCQ1U0RVFCQnZBQXNMZ0FJQkJYOGpBRUVnYXlJQ0pBQUNRQUpBQWtBZ0FSQ1FCdzBBSUFJZ0FUWUNGQ0FBTFFBc0JFQkJmeUVESUFKQkZHcEJCRUVCSUFBb0FpQVFnQVZCQVVZTkFRd0RDeUFDSUFKQkdHb2lCVFlDRUNBQ1FTQnFJUVlnQWtFVWFpRURBMEFnQUNnQ0pDQUFLQUlvSUFNZ0JTQUNRUXhxSUFKQkdHb2dCaUFDUVJCcUVKRUtJUVFnQWlnQ0RDQURSZzBDSUFSQkEwWUVRQ0FEUVFGQkFTQUFLQUlnRUlBRlFRRkdEUUlNQXdzZ0JFRUJTdzBDSUFKQkdHb2lBMEVCSUFJb0FoQWdBMnNpQXlBQUtBSWdFSUFGSUFOSERRSWdBaWdDRENFRElBUkJBVVlOQUFzTFFRQWdBU0FCRUpBSEd5RUREQUVMUVg4aEF3c2dBa0VnYWlRQUlBTUxaZ0VCZndKQUlBQXRBQ3hGQkVBZ0FrRUFJQUpCQUVvYklRSURRQ0FDSUFOR0RRSWdBQ0FCS0FJQUlBQW9BZ0FvQWpRUkFRQkJmMFlFUUNBRER3VWdBVUVFYWlFQklBTkJBV29oQXd3QkN3QUxBQXNnQVVFRUlBSWdBQ2dDSUJDQUJTRUNDeUFDQzJrQkFYOGpBRUVRYXlJRkpBQWdCVUVBTmdJTUFrQWdBaUFGUVF4cUVDSkZCRUFnQUVFQk9nQUVJQUJCQURZQ0FBd0JDeUFES0FJQUtBSUFLQUlBSWdORkJFQWdBRUVCT2dBRUlBQkJBRFlDQUF3QkN5QUFJQUVnQWlBRElBUVFpUTBMSUFWQkVHb2tBQXNtQUNBQUlBQW9BZ0FvQWhnUkFBQWFJQUFnQVJDS0RTSUJOZ0lrSUFBZ0FSQ05Cem9BTEFzZUFFSFFzeUFRbkFoQm9MWWdFSndJUWFTMElCQ1VEVUgwdGlBUWxBMExFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRE5GQXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFTHNCQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RalEwTEV3QWdBQ0FBS0FJQVFReHJLQUlBYWhDN0Fnc0tBQ0FBUVFockVJME5Dd29BSUFCQkNHc1F1d0lMR2dBZ0FDQUJJQUlwQXdoQkFDQURJQUVvQWdBb0FoQVJLZ0FMQ1FBZ0FCRFJDUkFmQzVNQ0FnSi9BMzRnQVNnQ0xDSUZJQUVvQWhnaUJra0VRQ0FCSUFZMkFpd2dCaUVGQzBKL0lRa0NRQ0FFUVJoeElnWkZJQU5CQVVZZ0JrRVlSbkZ5RFFBZ0JRUkFJQVVnQVVFZ2FoQjdhNndoQ0FzQ1FBSkFBa0FnQXc0REFnQUJBd3NnQkVFSWNRUkFJQUVvQWd3Z0FTZ0NDR3VzSVFjTUFnc2dBU2dDR0NBQktBSVVhNndoQnd3QkN5QUlJUWNMSUFJZ0Izd2lBa0lBVXlBQ0lBaFZjZzBBSUFSQkNIRWhBd0pBSUFKUURRQWdBd1JBSUFFb0FneEZEUUlMSUFSQkVIRkZEUUFnQVNnQ0dFVU5BUXNnQXdSQUlBRWdBU2dDQ0NJRElBTWdBcWRxSUFFb0Fpd1F3UVFMSUFSQkVIRUVRQ0FCSUFFb0FoUWdBU2dDSEJDWkJpQUJJQUtuRUk4SEN5QUNJUWtMSUFBZ0NSQ2REUXVNQWdFSWZ5TUFRUkJySWdRa0FBSi9JQUZCZnhEWUJVVUVRQ0FBS0FJSUlRWWdBQ2dDRENFSElBUWdBQ2dDR0NJRElBQW9BaHhHQkg5QmZ5QUFMUUF3UVJCeFJRMENHaUFBS0FJVUlRVWdBQ2dDTENFSUlBQkJJR29pQWtFQUVLUUJJQUlnQWhDYkFSQjJJQUFnQWhCN0lna2dBaEE3SUFscUVKa0dJQUFnQXlBRmF4Q1BCeUFBSUFBb0FoUWdDQ0FGYTJvMkFpd2dBQ2dDR0FVZ0F3dEJBV28yQWd3Z0FDQUFRU3hxSWdJZ0JFRU1haUlESUFNb0FnQWdBaWdDQUJERkFSc29BZ0EyQWl3Z0FDMEFNRUVJY1FSQUlBQWdBRUVnYWhCN0lnSWdBaUFISUFacmFpQUFLQUlzRU1FRUN5QUFJQUVRa2djUTRSUU1BUXNnQVJDUERRc2hBQ0FFUVJCcUpBQWdBQXV0QVFFQ2Z5QUFLQUlZSWdJZ0FDZ0NMRXNFUUNBQUlBSTJBaXdMQWtBZ0FDZ0NDQ0FBS0FJTVR3MEFJQUZCZnhEWUJRUkFJQUFnQUNnQ0NDQUFLQUlNUVFGcklBQW9BaXdRd1FRZ0FSQ1BEUThMQWtBZ0FDMEFNRUVRY1FSQUlBQW9BZ3doQWlBQkVKSUhJUU1NQVFzZ0FSQ1NCeUlESUFBb0Fnd2lBa0VCYXl3QUFCQ2JEVVVOQVFzZ0FDQUFLQUlJSUFKQkFXc2dBQ2dDTEJEQkJDQUFLQUlNSUFNNkFBQWdBUThMUVg4TGFnRUNmeUFBS0FJc0lnRWdBQ2dDR0NJQ1NRUkFJQUFnQWpZQ0xDQUNJUUVMQWtBZ0FDMEFNRUVJY1VVTkFDQUJJQUFvQWhBaUFrc0VmeUFBSUFBb0FnZ2dBQ2dDRENBQkVNRUVJQUFvQWhBRklBSUxJQUFvQWd3aUFFME5BQ0FBTEFBQUVLVUREd3RCZnd1d0FRRUVmeU1BUVJCcklnUWtBQU5BQWtBZ0FpQURUQTBBSUFBb0FoZ2lCU0FBS0FJY0lnWlBCRUFnQUNBQktBSUFJQUFvQWdBb0FqUVJBUUJCZjBZTkFTQURRUUZxSVFNZ0FVRUVhaUVCREFJRklBUWdCaUFGYTBFQ2RUWUNEQ0FFSUFJZ0EyczJBZ2dnQlNBQklBUkJER29nQkVFSWFoQ1RCeWdDQUNJRkVNSUVJQUFnQlVFQ2RDSUdJQUFvQWhocU5nSVlJQU1nQldvaEF5QUJJQVpxSVFFTUFnc0FDd3NnQkVFUWFpUUFJQU1MTWdFQmYwRi9JUUVnQUNBQUtBSUFLQUlrRVFBQVFYOUhCSDhnQUNBQUtBSU1JZ0JCQkdvMkFnd2dBQ2dDQUFWQmZ3c0x3d0VCQkg4akFFRVFheUlFSkFBRFFBSkFJQUlnQlV3TkFBSi9JQUFvQWd3aUF5QUFLQUlRSWdaSkJFQWdCRUgvLy8vL0J6WUNEQ0FFSUFZZ0EydEJBblUyQWdnZ0JDQUNJQVZyTmdJRUlBRWdBeUFFUVF4cUlBUkJDR29nQkVFRWFoQ1RCeENUQnlnQ0FDSURFTUlFSUFBZ0EwRUNkQ0lHSUFBb0FneHFOZ0lNSUFFZ0Jtb01BUXNnQUNBQUtBSUFLQUlvRVFBQUlnTkJmMFlOQVNBQklBTTJBZ0JCQVNFRElBRkJCR29MSVFFZ0F5QUZhaUVGREFFTEN5QUVRUkJxSkFBZ0JRc1RBQ0FBSUFBb0FnQkJER3NvQWdCcUVKWU5DeE1BSUFBZ0FDZ0NBRUVNYXlnQ0FHb1Frd29MQ2dBZ0FFRUlheENXRFFzS0FDQUFRUWhyRUpNS0M2a0JBUVIvSXdCQkVHc2lCU1FBQTBBQ1FDQUNJQU5NRFFBZ0FDZ0NHQ0lFSUFBb0Fod2lCazhFUUNBQUlBRXNBQUFRcFFNZ0FDZ0NBQ2dDTkJFQkFFRi9SZzBCSUFOQkFXb2hBeUFCUVFGcUlRRUZJQVVnQmlBRWF6WUNEQ0FGSUFJZ0EyczJBZ2dnQkNBQklBVkJER29nQlVFSWFoQ1RCeWdDQUNJRUVMa0RHaUFBSUFRZ0FDZ0NHR28yQWhnZ0F5QUVhaUVESUFFZ0JHb2hBUXNNQVFzTElBVkJFR29rQUNBREN5OEFJQUFnQUNnQ0FDZ0NKQkVBQUVGL1JnUkFRWDhQQ3lBQUlBQW9BZ3dpQUVFQmFqWUNEQ0FBTEFBQUVLVURDOEFCQVFSL0l3QkJFR3NpQkNRQUEwQUNRQ0FDSUFWTURRQUNmeUFBS0FJTUlnTWdBQ2dDRUNJR1NRUkFJQVJCLy8vLy93YzJBZ3dnQkNBR0lBTnJOZ0lJSUFRZ0FpQUZhellDQkNBQklBTWdCRUVNYWlBRVFRaHFJQVJCQkdvUWt3Y1Frd2NvQWdBaUF4QzVBeUVCSUFBZ0FDZ0NEQ0FEYWpZQ0RDQUJJQU5xREFFTElBQWdBQ2dDQUNnQ0tCRUFBQ0lEUVg5R0RRRWdBU0FERUpJSE9nQUFRUUVoQXlBQlFRRnFDeUVCSUFNZ0JXb2hCUXdCQ3dzZ0JFRVFhaVFBSUFVTERBQWdBQkNhQ2hvZ0FCQWZDd3dBSUFBUS9nUWFJQUFRSHdzSkFDQUFLQUk4RUFZTFJnRUJmeUFBS0FJOElRTWpBRUVRYXlJQUpBQWdBeUFCcHlBQlFpQ0lweUFDUWY4QmNTQUFRUWhxRUFvUXFRMGhBaUFBS1FNSUlRRWdBRUVRYWlRQVFuOGdBU0FDR3d2WEFRRUVmeU1BUVNCcklnUWtBQ0FFSUFFMkFoQWdCQ0FDSUFBb0FqQWlBMEVBUjJzMkFoUWdBQ2dDTENFR0lBUWdBellDSENBRUlBWTJBaGhCSUNFREFrQUNRQ0FBSUFBb0Fqd2dCRUVRYWtFQ0lBUkJER29RQnhDcERRUi9RU0FGSUFRb0Fnd2lBMEVBU2cwQlFTQkJFQ0FER3dzZ0FDZ0NBSEkyQWdBTUFRc2dCQ2dDRkNJR0lBTWlCVThOQUNBQUlBQW9BaXdpQXpZQ0JDQUFJQU1nQlNBR2EybzJBZ2dnQUNnQ01BUkFJQUFnQTBFQmFqWUNCQ0FCSUFKcVFRRnJJQU10QUFBNkFBQUxJQUloQlFzZ0JFRWdhaVFBSUFVTHFBRUJCWDhnQUNnQ1ZDSURLQUlBSVFVZ0F5Z0NCQ0lFSUFBb0FoUWdBQ2dDSENJSGF5SUdJQVFnQmtrYklnWUVRQ0FGSUFjZ0JoQjlHaUFESUFNb0FnQWdCbW9pQlRZQ0FDQURJQU1vQWdRZ0Jtc2lCRFlDQkFzZ0JDQUNJQUlnQkVzYklnUUVRQ0FGSUFFZ0JCQjlHaUFESUFNb0FnQWdCR29pQlRZQ0FDQURJQU1vQWdRZ0JHczJBZ1FMSUFWQkFEb0FBQ0FBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQWdzRUFFSUFDNzRDQVFkL0l3QkJJR3NpQXlRQUlBTWdBQ2dDSENJRU5nSVFJQUFvQWhRaEJTQURJQUkyQWh3Z0F5QUJOZ0lZSUFNZ0JTQUVheUlCTmdJVUlBRWdBbW9oQlVFQ0lRWWdBMEVRYWlFQkFuOERRQUpBQWtBQ1FDQUFLQUk4SUFFZ0JpQURRUXhxRUFrUXFRMUZCRUFnQlNBREtBSU1JZ2RHRFFFZ0IwRUFUZzBDREFNTElBVkJmMGNOQWdzZ0FDQUFLQUlzSWdFMkFod2dBQ0FCTmdJVUlBQWdBU0FBS0FJd2FqWUNFQ0FDREFNTElBRWdCeUFCS0FJRUlnaExJZ2xCQTNScUlnUWdCeUFJUVFBZ0NSdHJJZ2dnQkNnQ0FHbzJBZ0FnQVVFTVFRUWdDUnRxSWdFZ0FTZ0NBQ0FJYXpZQ0FDQUZJQWRySVFVZ0JpQUpheUVHSUFRaEFRd0JDd3NnQUVFQU5nSWNJQUJDQURjREVDQUFJQUFvQWdCQklISTJBZ0JCQUNBR1FRSkdEUUFhSUFJZ0FTZ0NCR3NMSVFRZ0EwRWdhaVFBSUFRTERRQWdBU2dDQUM4QkhrRWRSZ3NMQUNBQlFkeVlJRFlDQUFzUkFFRUlFQlVpQUVIY21DQTJBZ0FnQUFzbUFRRi9JQUFvQWdRZ0FTZ0NBQ0lCTHdFZVJnUi9JQUZCQVJBYklBQW9BZ2hHQlVFQUN3c1ZBQ0FCUWJpWUlEWUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFRzRtQ0FRb1FFTER3QWdBQ0FCSUFKQnQ0b0RFSU1UQ3dzQUlBRkJsSmdnTmdJQUN4RUFRUWdRRlNJQVFaU1lJRFlDQUNBQUN5b0FBa0FnQVNnQ0FFRitjVUgwS1VZaUFBMEFJQUlvQWdBaUFVVU5BQ0FCUWV5UEF4RFNBUXNnQUFzTEFDQUJRZkNYSURZQ0FBc1JBRUVJRUJVaUFFSHdseUEyQWdBZ0FBc1VBQ0FBSUFFZ0FrSHlqQU5CQmtIQktSQ1FDQXNOQUNBQUlBRkJ6SmNnRU5jQ0N3c0FJQUJCekpjZ0VOZ0NDd2tBSUFBUXJoVVFId3NVQUNBQUlBRWdBa0dqaXdOQkEwSERLUkNRQ0FzTkFDQUFJQUZCcUpjZ0VOY0NDd3NBSUFCQnFKY2dFTmdDQ3drQUlBQVFyeFVRSHdzVUFDQUFJQUVnQWtITWlRTkJBMEhDS1JDUUNBc05BQ0FBSUFGQmhKY2dFTmNDQ3dzQUlBQkJoSmNnRU5nQ0N3a0FJQUFRc0JVUUh3c1BBQ0FBSUFFZ0FrR0xqQU1RZ2hNTERRQWdBQ0FCUWVDV0lCRFhBZ3NMQUNBQVFlQ1dJQkRZQWdzSkFDQUFFTEVWRUI4TEVnQWdBQ0FCSUFKQnhKQURRY1lwRUlBVEN3MEFJQUFnQVVHOGxpQVExd0lMQ3dBZ0FFRzhsaUFRMkFJTENRQWdBQkN5RlJBZkMya0JBbjhqQUVFUWF5SURKQUFnQWlnQ0FDSUNSU0FCS0FJQUlnRkJ3U2xySWdSQkJVMUJBRUVCSUFSMFFUbHhHM0pGQkVBZ0F5QUFRUVJxUVlxT0F4QzRBaUFDSUFNUW5nRWdBeEFQR2dzZ0EwRVFhaVFBSUFGQmUzRkJ3U2xHSUFGQmZYRkJ4Q2xHY2dzTkFDQUFJQUZCbUpZZ0VOY0NDd3NBSUFCQm1KWWdFTmdDQ3drQUlBQVFzeFVRSHd0MEFRRi9Jd0JCRUdzaUF5UUFBa0FnQVNnQ0FDSUJRWk1wYTBFQ1NTQUJRZlFwYTBFQ1NYSWdBVUVGUm5JTkFDQUNLQUlBSWdKRkRRQWdBeUFBUVFScVFZaUhBeEM0QWlBQ0lBTVFuZ0VnQXhBUEdnc2dBMEVRYWlRQUlBRkJCVVlnQVVHVktXdEJmVXR5SUFGQjlpbHJRWDFMY2dzTkFDQUFJQUZCOUpVZ0VOY0NDd3NBSUFCQjlKVWdFTmdDQ3drQUlBQVF0QlVRSHd0ZUFRRi9Jd0JCRUdzaUF5UUFJQUlvQWdBaUFrVWdBU2dDQUNJQlFjRXBhMEVHVHlBQlFRVkhjWEpGQkVBZ0F5QUFRUVJxUWZLbkFSQzRBaUFDSUFNUW5nRWdBeEFQR2dzZ0EwRVFhaVFBSUFGQkJVY2dBVUhIS1d0QmVrbHhDdzBBSUFBZ0FVSFFsU0FRMXdJTEN3QWdBRUhRbFNBUTJBSUxDUUFnQUJDMUZSQWZDdzhBSUFBb0FnUWdBU2dDQUJDL0ZRc1ZBQ0FCUWF5VklEWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFR3NsU0FRMXdFTEN3QWdBVUdJbFNBMkFnQUxFUUJCQ0JBVklnQkJpSlVnTmdJQUlBQUxLUUFnQVM4QkJrRTJSZ1JBSUFBZ0FDZ0NIRUVCYWpZQ0hBc2dBQ0FBS0FJWVFRRnFOZ0lZUVFBTEdnQWdBQ0FETmdJVUlBQWdCRFlDRUNBQUlBVTJBb0FDUVFBTEx3RUJmeUFDS0FJQUlnSkZJQUFvQWdRaUF5QUJLQUlBSWdGR2NrVUVRQ0FDSUFCQkNHb1E0QUlMSUFFZ0EwWUxEZ0FnQUVFSWFoQVBHaUFBRUI4TENnQWdBRUVJYWhBUEdnc1lBQ0FCUWVTVUlEWUNBQ0FCUVFScUlBQkJCR29RelJVTElBRUJmMEVVRUJVaUFVSGtsQ0EyQWdBZ0FVRUVhaUFBUVFScUVNMFZJQUVMQ1FBZ0FCRE9GUkFmQ3dvQUlBRW9BZ0JCT0dvTEN3QWdBVUhBbENBMkFnQUxFUUJCQ0JBVklnQkJ3SlFnTmdJQUlBQUxDd0FnQVNnQ0FFSEVBR29MQ3dBZ0FVR2NsQ0EyQWdBTEVRQkJDQkFWSWdCQm5KUWdOZ0lBSUFBTEN3QWdBVUg0a3lBMkFnQUxDd0FnQUVINGt5QVEveElMQ3dBZ0FVSFVreUEyQWdBTEN3QWdBRUhVa3lBUS94SUxNUUVCZnlBQktBSUFJUUlqQUVFUWF5SUJKQUFnQVNBQ05nSU1JQUVnQUNnQ0JDQUJRUXhxRUtzRklBRkJFR29rQUFzVkFDQUJRYkNUSURZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVHd2t5QVFud01MRGdBZ0FDQUJRVGhCaEFJUTRna0xGUUFnQVVHTWt5QTJBZ0FnQVNBQUtBSUVOZ0lFQ3dzQUlBQkJqSk1nRU5jQkN3OEFJQUFnQVVIRUFFSHdBUkRpQ1FzVkFDQUJRZWlTSURZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVIb2tpQVExd0VMRGdBZ0FDQUJRUkJCaEFJUTRna0xGUUFnQVVIRWtpQTJBZ0FnQVNBQUtBSUVOZ0lFQ3dzQUlBQkJ4SklnRU5jQkN3NEFJQUFnQVVFY1FmQUJFT0lKQ3hVQUlBRkJvSklnTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUWFDU0lCRFhBUXNLQUNBQktBSUFLQUlNQ3dzQUlBRkIvSkVnTmdJQUN4RUFRUWdRRlNJQVFmeVJJRFlDQUNBQUN3b0FJQUVvQWdBb0FnZ0xDd0FnQVVIWWtTQTJBZ0FMRVFCQkNCQVZJZ0JCMkpFZ05nSUFJQUFMQ2dBZ0FTZ0NBQ2dDQkFzTEFDQUJRYlNSSURZQ0FBc1JBRUVJRUJVaUFFRzBrU0EyQWdBZ0FBc1VBQ0FBSUFFMkFnQWdBRUVJYWlBQ0VORUJHZ3RXQVFKL0EwQUNRQ0FCS0FJQUlnUWdBaWdDQUVZTkFDQUVJQU1vQWdCR0RRQWdBU0FCUVFocUlnUWdBU2dDQUNJRkVJb0NJQVZHQkg5QkFBVWdCQ0FCS0FJQUVJb0NDellDQUF3QkN3c2dBQ0FCRUpBSkdndGFBQ0FCS0FJQUx3RWVJUUVDZnlBQUtBSUVRWUFCYWtHT0toQm9CRUJCQUNBQlFSbHJRUU5KRFFFYUN5QUJRY0lDUmlBQlFjY0NSbklnQVVFWmF5SUFRUTVOUVFCQkFTQUFkRUhIL0FGeEczSUVmMEVCQlVFQUN3c0xGUUFnQVVHUWtTQTJBZ0FnQVNBQUtBSUVOZ0lFQ3dzQUlBQkJrSkVnRU5jQkMwa0JBWDhqQUVFUWF5SURKQUFDUUNBQktBSUFRUUZISWdFTkFDQUNLQUlBSWdKRkRRQWdBeUFBUVFScVFiZVJBeEM0QWlBQ0lBTVFuZ0VnQXhBUEdnc2dBMEVRYWlRQUlBRUxEUUFnQUNBQlFleVFJQkRYQWdzTEFDQUFRZXlRSUJEWUFnc0pBQ0FBRU9BVkVCOExoZ0VCQVg4akFFRVFheUlESkFBZ0FpZ0NBQ0VDQWtBQ1FBSkFJQUVvQWdBaUFVRUJhdzRGQWdFQkFRSUFDeUFCUVpNcGEwRUNTU0FCUWZRcGEwRUNTWElOQVFzZ0FrVU5BQ0FESUFCQkJHcEJqb1lERUxnQ0lBSWdBeENlQVNBREVBOGFDeUFEUVJCcUpBQWdBVUY3Y1VFQlJpQUJRWlVwYTBGOVMzSWdBVUgyS1d0QmZVdHlDdzBBSUFBZ0FVSElrQ0FRMXdJTEN3QWdBRUhJa0NBUTJBSUxDUUFnQUJEaEZSQWZDeFFBSUFBZ0FTQUNRWldFQTBFR1FjRXBFSkFJQ3cwQUlBQWdBVUdra0NBUTF3SUxDd0FnQUVHa2tDQVEyQUlMQ1FBZ0FCRGlGUkFmQzRZQkFRRi9Jd0JCRUdzaUF5UUFJQUlvQWdBaEFnSkFBa0FDUUNBQktBSUFJZ0ZCQVdzT0JRSUJBUUVDQUFzZ0FVR1RLV3RCQWtrZ0FVSDBLV3RCQWtseURRRUxJQUpGRFFBZ0F5QUFRUVJxUVl1bUFSQzRBaUFDSUFNUW5nRWdBeEFQR2dzZ0EwRVFhaVFBSUFGQmxTbHJRWDFMSUFGQjlpbHJRWDFMY2lBQlFYdHhRUUZHY2dzTkFDQUFJQUZCZ0pBZ0VOY0NDd3NBSUFCQmdKQWdFTmdDQ3drQUlBQVE0eFVRSHd0d0FRRi9Jd0JCRUdzaUF5UUFJQUlvQWdBaUFrVWdBU2dDQUNJQlFjRXBhMEVGVHlBQlFRRkdJQUZCQkV0eWNYSkZCRUFnQXlBQVFRUnFRYitrQVJDNEFpQUNJQU1RbmdFZ0F4QVBHZ3NnQTBFUWFpUUFJQUZCZTNGQkFFY2dBVUYrY1VFQ1IzRWdBVUhCS1d0QkJFdHhDdzBBSUFBZ0FVSGNqeUFRMXdJTEN3QWdBRUhjanlBUTJBSUxDUUFnQUJEbEZSQWZDdzBBSUFBZ0FVRzRqeUFRMXdJTEN3QWdBRUc0anlBUTJBSUxDUUFnQUJEbUZSQWZDdzBBSUFBZ0FVR1VqeUFRMXdJTHBnRUJCSDhqQUVFZ2F5SUNKQUFnQWlBQUtBSWdOZ0lZSUFJZ0FDa0NHRGNERUNBQ0lBQXBBaEEzQXdnZ0FTZ0NBQ0VCSXdCQkVHc2lCQ1FBSUFFUUhDQUJJQUVvQWd4QkFXb2lBellDRENBRUlBTTJBZ2dnQVVHTUFXb2lBeERMQkNJRklBRW9BZ2dnQkNnQ0NDQUNRUWhxSUFBckF5Z2dBQ2dDTUJETERSb2dBeUFGRUNnZ0F5QURLQUlZUVFGcU5nSVlJQVVoQUNBRVFSQnFKQUFnQWtFZ2FpUUFJQUFMQ3dBZ0FFR1VqeUFRMkFJTENRQWdBQkRvRlJBZkN3OEFJQUFnQVNBQ1FhdW5BUkNDRXdzTkFDQUFJQUZCOEk0Z0VOY0NDd3NBSUFCQjhJNGdFTmdDQ3drQUlBQVE2UlVRSHd0SUFDQUNLQUlBSVFBZ0FFVWdBU2dDQUNJQlFjRXBheUlDUVFWTlFRQkJBU0FDZEVFNWNSdHlSUVJBSUFCQm82a0JFTklCQ3lBQlFYdHhRY0VwUmlBQlFYMXhRY1FwUm5JTEN3QWdBVUhNamlBMkFnQUxFUUJCQ0JBVklnQkJ6STRnTmdJQUlBQUxKd0FDUUNBQktBSUFRY0lwUmlJQURRQWdBaWdDQUNJQlJRMEFJQUZCZ0k4REVOSUJDeUFBQ3dzQUlBRkJxSTRnTmdJQUN4RUFRUWdRRlNJQVFhaU9JRFlDQUNBQUN3OEFJQUFnQVNBQ1FaNm5BUkNERXdzTEFDQUJRWVNPSURZQ0FBc1JBRUVJRUJVaUFFR0VqaUEyQWdBZ0FBdGdBUUYvSUFNb0FnQWhCQUpBSUFFZ0FpZ0NBQ2dDQUJDMENDSUFSUTBBSUFCQkJHb2hBU0FBS0FJQUlRTURRQ0FCSUFOR0RRRWdBeWdDRUVIMktXdEJCa2tFUUVFQkR3VWdBeEJNSVFNTUFRc0FDd0FMSUFSQjBmb0hFTklCUVFBTEN3QWdBVUhnalNBMkFnQUxFUUJCQ0JBVklnQkI0STBnTmdJQUlBQUxKd0FDUUNBQktBSUFRZlVwUmlJQURRQWdBaWdDQUNJQlJRMEFJQUZCcDRnREVOSUJDeUFBQ3dzQUlBRkJ2STBnTmdJQUN4RUFRUWdRRlNJQVFieU5JRFlDQUNBQUN5Y0FBa0FnQVNnQ0FFSDBLVVlpQUEwQUlBSW9BZ0FpQVVVTkFDQUJRZk9IQXhEU0FRc2dBQXNMQUNBQlFaaU5JRFlDQUF0SUFRRi9Jd0JCSUdzaUFpUUFJQUlnQUNnQ0lEWUNHQ0FDSUFBcEFoZzNBeEFnQWlBQUtRSVFOd01JSUFFb0FnQWdBa0VJYWlBQVFTUnFFT29WSVFBZ0FrRWdhaVFBSUFBTEVRQkJDQkFWSWdCQm1JMGdOZ0lBSUFBTEZBQWdBQ0FCSUFKQnd1WUZRWDVCeFNrUWtBZ0xEUUFnQUNBQlFmU01JQkRYQWdzTEFDQUFRZlNNSUJEWUFnc0pBQ0FBRU9zVkVCOExXZ0VDZnlNQVFSQnJJZ0lrQUNBQUtBSUVRU0FnQVNnQ0FDSUJJQUpCREdvUTNRSWhBeUFBS0FJSVFRaHFJUUFDZnlBRFJRUkFJQUFnQWlnQ0RDZ0NBQkFPREFFTElBQWdBUkFoQzBIMzhBd1FEaG9nQWtFUWFpUUFDeFVBSUFGQjBJd2dOZ0lBSUFFZ0FDa0NCRGNDQkFzTEFDQUFRZENNSUJDaEFRc1JBQ0FBSUFFZ0FpQURRYUtDREJDR0V3c1ZBQ0FCUWV5TElEWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSHNpeUFRMXdFTER3QWdBQ0FCSUFKQjdJTU1FSWNUQ3hVQUlBRkJ5SXNnTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUWNpTElCRFhBUXUyQVFFQmZ5TUFRU0JySWdBa0FDQURLQUlBSVFRZ0FTQUNLQUlBSWdNb0FnQVFwUVloQWlBQklBTW9BZ0FRdEFnaEFTQUFRUVUyQWdnQ1FBSkFJQUlnQUVFSWFoREFBeUFDUVFScVJnMEFJQUJCcWlrMkFod2dBU0FBUVJ4cUVNQURJZ0lnQVVFRWFrY05BQ0FBUWFrcE5nSVlRUUVoQXlBQklBQkJHR29Rd0FNZ0FrY05BVUVBSVFNZ0JFVU5BU0FFSUFCQkNHcEIxNFFERUJRaUFSQ2VBU0FCRUE4YURBRUxRUUVoQXdzZ0FFRWdhaVFBSUFNTEN3QWdBVUdraXlBMkFnQUxFUUJCQ0JBVklnQkJwSXNnTmdJQUlBQUxSQUFqQUVFUWF5SUFKQUFDUUNBQktBSUFRWDV4UVFSR0lnRU5BQ0FDS0FJQUlnSkZEUUFnQWlBQVFjK0ZBeEFVSWdJUW5nRWdBaEFQR2dzZ0FFRVFhaVFBSUFFTEN3QWdBVUdBaXlBMkFnQUxFUUJCQ0JBVklnQkJnSXNnTmdJQUlBQUxDd0FnQVVIY2lpQTJBZ0FMRVFCQkNCQVZJZ0JCM0lvZ05nSUFJQUFMQ3dBZ0FVRzRpaUEyQWdBTEVRQkJDQkFWSWdCQnVJb2dOZ0lBSUFBTERRQWdBU2dDQUVFUGEwRUNTUXNMQUNBQlFaU0tJRFlDQUFzUkFFRUlFQlVpQUVHVWlpQTJBZ0FnQUFzU0FDQUJLQUlBSWdCQkNrWWdBRUVVUm5JTEN3QWdBVUh3aVNBMkFnQUxFUUJCQ0JBVklnQkI4SWtnTmdJQUlBQUxDd0FnQVVITWlTQTJBZ0FMRVFCQkNCQVZJZ0JCeklrZ05nSUFJQUFMRlFBZ0FTZ0NBQ0lBUVJWSlFZQ3d3QUFnQUhaeEN3c0FJQUZCcUlrZ05nSUFDeEVBUVFnUUZTSUFRYWlKSURZQ0FDQUFDd3NBSUFGQmhJa2dOZ0lBQ3hFQVFRZ1FGU0lBUVlTSklEWUNBQ0FBQ3dzQUlBRkI0SWdnTmdJQUN4RUFRUWdRRlNJQVFlQ0lJRFlDQUNBQUN3c0FJQUFnQVVFRWFoQXVDdzBBSUFBZ0FVRzhpQ0FRdGdVTEN3QWdBRUc4aUNBUXR3VUxGUUFnQVNnQ0FDSUFRUlpKUVlLSXdBRWdBSFp4Q3dzQUlBRkJtSWdnTmdJQUN4RUFRUWdRRlNJQVFaaUlJRFlDQUNBQUN6RUJBWDlCQVNFQ0FrQWdBU2dDQUNJQlFROXJRUUZOQkVBZ0FDZ0NCQzBBQUEwQkN5QUJRUUpyUVExSklRSUxJQUlMRlFBZ0FVSDBoeUEyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCOUljZ0VOY0JDd3NBSUFFb0FnQkI3QUJHQ3dzQUlBRkIwSWNnTmdJQUN4RUFRUWdRRlNJQVFkQ0hJRFlDQUNBQUN3MEFJQUFvQWdRZ0FTZ0NBRVlMRlFBZ0FVR3NoeUEyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCckljZ0VOY0JDeEVBSUFBZ0FTQUNJQU5Cb1lFTUVJWVRDeFVBSUFGQmlJY2dOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRWWlISUJEWEFRc1BBQ0FBSUFFZ0FrR2tnd3dRaHhNTEZRQWdBVUhraGlBMkFnQWdBU0FBS0FJRU5nSUVDd3NBSUFCQjVJWWdFTmNCQ3cwQUlBRW9BZ0JCZm5GQkJFWUxDd0FnQVVIQWhpQTJBZ0FMRVFCQkNCQVZJZ0JCd0lZZ05nSUFJQUFMQ2dBZ0FTZ0NBRUVIUmdzTEFDQUJRWnlHSURZQ0FBc1JBRUVJRUJVaUFFR2NoaUEyQWdBZ0FBc0tBQ0FCS0FJQVFRWkdDd3NBSUFGQitJVWdOZ0lBQ3hFQVFRZ1FGU0lBUWZpRklEWUNBQ0FBQzU4Q0FRbC9Jd0JCRUdzaUJDUUFJQUVvQWdBaUJTZ0NJQ0VMSUFJb0FnQWhCaUFGS0FJY0lRRURRQ0FCSUF0SEJFQWdCaUFCS0FJQVJnUkFJQUFvQWdRaEFpQUVJQVVvQWdBMkFnd2dCQ0FHS0FJQU5nSUlJQVJCREdvaEJ5QUVRUWhxSVFnQ1FDQUNLQUlFSWdNZ0FpZ0NDRWtFUUNBRElBY29BZ0EyQWdBZ0F5QUlLQUlBTmdJRUlBSWdBMEVJYWpZQ0JBd0JDeU1BUVNCcklna2tBQ0FKUVFocUlBSWdBaWdDQkNBQ0tBSUFhMEVEZFVFQmFoQ2FEaUFDS0FJRUlBSW9BZ0JyUVFOMUlBSkJDR29RMEFvaUF5Z0NDQ0lLSUFjb0FnQTJBZ0FnQ2lBSUtBSUFOZ0lFSUFNZ0NrRUlhallDQ0NBQ0lBTVFvd1FnQXhEa0RTQUpRU0JxSkFBZ0FpZ0NCQm9MQ3lBQlFRUnFJUUVNQVFzTElBUkJFR29rQUFzVkFDQUJRYVNGSURZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVHa2hTQVExd0VMRlFBZ0FVR0FoU0EyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCZ0lVZ0VOY0JDeFVBSUFGQjNJUWdOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRZHlFSUJEWEFRc0xBQ0FCUWJpRUlEWUNBQXNSQUVFSUVCVWlBRUc0aENBMkFnQWdBQXNWQUNBQlFaU0VJRFlDQUNBQklBQW9BZ1EyQWdRTEN3QWdBRUdVaENBUTF3RUxDd0FnQVVId2d5QTJBZ0FMRVFCQkNCQVZJZ0JCOElNZ05nSUFJQUFMREFBZ0FDQUJRWXdqRUpFSUN3MEFJQUFnQVVITWd5QVExZ0VMQ3dBZ0FFSE1neUFRNVFFTERBQWdBQ0FCUVlZakVKRUlDdzBBSUFBZ0FVR29neUFRMWdFTEN3QWdBRUdvZ3lBUTVRRUxtd0VCQkg4akFFSFFBV3NpQXlRQUlBQW9BZ3hCQWhEaUF5RUZJQU5CRUdvaUFpQUFLQUlFSWdRb0FnQkJjaUFBS0FJSUVCQWdBeUFFS0FJQUlBVVFOeUFDSUFNUUVob2dBa0hRbGdvUURob2dBaUFFS0FJQVFZQURha0VjSUFBb0Fnd1Fqd0VRRGhvZ0FrR3BvZ01RRGhvZ0FrSEl1d3dRRGhvZ0FpQUJFQklhSUFNb0Fzd0JJUUFnQXhBUEdpQUNFQkVnQTBIUUFXb2tBQ0FBQ3cwQUlBQWdBVUdFZ3lBUTFnRUxDd0FnQUVHRWd5QVE1UUVMRFFBZ0FDQUJRYy9RREJEakNRc05BQ0FBSUFGQjRJSWdFTllCQ3dzQUlBQkI0SUlnRU9VQkN3MEFJQUFnQVVIUjB3d1E0d2tMRFFBZ0FDQUJRYnlDSUJEV0FRc0xBQ0FBUWJ5Q0lCRGxBUXNOQUNBQUlBRkJzZGtNRU9NSkN3MEFJQUFnQVVHWWdpQVExZ0VMQ3dBZ0FFR1lnaUFRNVFFTERRQWdBQ0FCUWZYYURCRGpDUXNOQUNBQUlBRkI5SUVnRU5ZQkN3c0FJQUJCOUlFZ0VPVUJDdzBBSUFBZ0FVR1gzQXdRNUFrTERRQWdBQ0FCUWRDQklCRFdBUXNMQUNBQVFkQ0JJQkRsQVFzTkFDQUFJQUZCM2RrTUVPUUpDdzBBSUFBZ0FVR3NnU0FRMWdFTEN3QWdBRUdzZ1NBUTVRRUxEUUFnQUNBQlFZZlJEQkRrQ1FzTkFDQUFJQUZCaUlFZ0VOWUJDd3NBSUFCQmlJRWdFT1VCQ3cwQUlBQWdBVUd4MlF3UTVBa0xEUUFnQUNBQlFlU0FJQkRXQVFzTEFDQUFRZVNBSUJEbEFRc01BQ0FBSUFGQjdpQVFrUWdMRFFBZ0FDQUJRY0NBSUJEV0FRc0xBQ0FBUWNDQUlCRGxBUXNNQUNBQUlBRkJzeUlRa1FnTERRQWdBQ0FCUVp5QUlCRFdBUXNMQUNBQVFaeUFJQkRsQVFzTUFDQUFJQUZCOFNBUWtRZ0xEUUFnQUNBQlFmai9IeERXQVFzTEFDQUFRZmovSHhEbEFRdWtBUUVFZnlNQVFkQUJheUlDSkFBZ0FDZ0NEQ2dDQkNnQ0FDRUZJQUpCRUdvaUF5QUFLQUlFSWdRb0FnQkJjaUFBS0FJSUVCQWdBaUFFS0FJQVFkY2dRZG9nSUFWQnlTSkdHeEEzSUFNZ0FoQVNHaUFEUWRDV0NoQU9HaUFESUFRb0FnQkJnQU5xUVJ3Z0FDZ0NEQ2dDQkNnQ0FCQ1BBUkFPR2lBRFFiSFpEQkFPR2lBRElBRVFFaG9nQWlnQ3pBRWhBQ0FDRUE4YUlBTVFFU0FDUWRBQmFpUUFJQUFMRFFBZ0FDQUJRZFQvSHhEV0FRc0xBQ0FBUWRUL0h4RGxBUXVhQVFFRGZ5TUFRZEFCYXlJREpBQWdBMEVRYWlJQ0lBQW9BZ1FpQkNnQ0FFRnlJQUFvQWdnUUVDQUNRYVRDQ2hBT0dpQURJQVFvQWdBb0FnQW9BZ0FRZ1FJZ0FpQURFQklhSUFKQjU1WUtFQTRhSUFJZ0JDZ0NBRUdBQTJwQkhDQUFLQUlNS0FJRUtBSUFFSThCRUE0YUlBSkJzZGtNRUE0YUlBSWdBUkFTR2lBREtBTE1BU0VBSUFNUUR4b2dBaEFSSUFOQjBBRnFKQUFnQUFzTkFDQUFJQUZCc1A4ZkVOWUJDd3NBSUFCQnNQOGZFT1VCQ3hBQUlBQWdBVUcwMEF4Qnl5SVE5Z1lMRlFBZ0FVR00veDgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCalA4ZkVLRUJDeEFBSUFBZ0FVSGgxUXhCc0NJUTlnWUxGUUFnQVVIby9oODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkI2UDRmRUtFQkN4QUFJQUFnQVVITXVReEJyU0lRdFFNTEZRQWdBVUhFL2g4MkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQnhQNGZFS0VCQ3cwQUlBQWdBVUdnL2g4UTZ3SUxDd0FnQUVHZy9oOFE3QUlMQ1FBZ0FCQ2VGaEFmQ3cwQUlBQWdBVUg4L1I4UTZ3SUxDd0FnQUVIOC9SOFE3QUlMQ1FBZ0FCQ2ZGaEFmQ3hBQUlBQWdBVUhndUF4QnFTSVF0UU1MRlFBZ0FVSFkvUjgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCMlAwZkVLRUJDeEFBSUFBZ0FVR2owd3hCcFNJUXRRTUxGUUFnQVVHMC9SODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJ0UDBmRUtFQkN3MEFJQUFnQVVIOHp3d1FrZ2dMRFFBZ0FDQUJRWkQ5SHhEV0FRc0xBQ0FBUVpEOUh4RGxBUXNOQUNBQUlBRkI1Ym9NRUpJSUN3MEFJQUFnQVVIcy9COFExZ0VMQ3dBZ0FFSHMvQjhRNVFFTERRQWdBQ0FCUWIvUkRCQ1NDQXNOQUNBQUlBRkJ5UHdmRU5ZQkN3c0FJQUJCeVB3ZkVPVUJDeEFBSUFBZ0FVR0wxQXhCaWlJUXRRTUxGUUFnQVVHay9CODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJwUHdmRUtFQkN4QUFJQUFnQVVHR3VBeEJoeUlRdFFNTENRQWdBQkNRQ3hBZkN4VUFJQUZCZ1B3Zk5nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFZRDhIeENoQVFzUUFDQUFJQUZCaE5rTVFZUWlFTFVEQ3hVQUlBRkIzUHNmTmdJQUlBRWdBQ2tDQkRjQ0JBc0xBQ0FBUWR6N0h4Q2hBUXNOQUNBQUlBRkJ1UHNmRU9zQ0N3c0FJQUJCdVBzZkVPd0NDd2tBSUFBUW9SWVFId3NOQUNBQUlBRkJsUHNmRU9zQ0N3c0FJQUJCbFBzZkVPd0NDd2tBSUFBUW94WVFId3NOQUNBQUlBRkI4UG9mRU9zQ0N3c0FJQUJCOFBvZkVPd0NDd2tBSUFBUXBCWVFId3NOQUNBQUlBRkJ6UG9mRU9zQ0N3c0FJQUJCelBvZkVPd0NDd2tBSUFBUXBSWVFId3NOQUNBQUlBRkJxUG9mRU9zQ0N3c0FJQUJCcVBvZkVPd0NDd2tBSUFBUXBoWVFId3NOQUNBQUlBRkJoUG9mRU9zQ0N3c0FJQUJCaFBvZkVPd0NDd2tBSUFBUXB4WVFId3NWQUNBQlFlRDVIellDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUhnK1I4UW9RRUxGUUFnQVVHOCtSODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJ2UGtmRUtFQkN4VUFJQUZCbVBrZk5nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFaajVIeENoQVFzVkFDQUJRZlQ0SHpZQ0FDQUJJQUFwQWdRM0FnUUxDd0FnQUVIMCtCOFFvUUVMRlFBZ0FVSFErQjgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCMFBnZkVLRUJDdzBBSUFBZ0FVR3MrQjhRNndJTEN3QWdBRUdzK0I4UTdBSUxDUUFnQUJDcUZoQWZDeFVBSUFGQmlQZ2ZOZ0lBSUFFZ0FDa0NCRGNDQkFzTEFDQUFRWWo0SHhDaEFRc1ZBQ0FCUWVUM0h6WUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFSGs5eDhRb1FFTEZRQWdBVUhBOXg4MkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQndQY2ZFS0VCQ3cwQUlBQWdBVUdjOXg4UTZ3SUxDd0FnQUVHYzl4OFE3QUlMQ1FBZ0FCQ3RGaEFmQ3hBQUlBQWdBVUg0MUF4QjJTRVF0UU1MRlFBZ0FVSDQ5aDgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCK1BZZkVLRUJDeEFBSUFBZ0FVSHQxZ3hCMWlFUXRRTUxGUUFnQVVIVTloODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkIxUFlmRUtFQkN3MEFJQUFnQVVHdzloOFE2d0lMQ3dBZ0FFR3c5aDhRN0FJTENRQWdBQkN2RmhBZkN3MEFJQUFnQVVHTTloOFE2d0lMQ3dBZ0FFR005aDhRN0FJTENRQWdBQkN3RmhBZkN3MEFJQUFnQVVIbzlSOFExZ0VMQ3dBZ0FFSG85UjhRNVFFTERRQWdBQ0FCUWNUMUh4RFdBUXNMQUNBQVFjVDFIeERsQVFzUUFDQUFJQUZCcHRZTVFha2hFUFlHQ3hVQUlBRkJvUFVmTmdJQUlBRWdBQ2tDQkRjQ0JBc0xBQ0FBUWFEMUh4Q2hBUXNRQUNBQUlBRkJ5OWNNUWFNaEVMVURDeFVBSUFGQi9QUWZOZ0lBSUFFZ0FDa0NCRGNDQkFzTEFDQUFRZnowSHhDaEFRc1FBQ0FBSUFGQm85c01RWkVoRUxVREN4VUFJQUZCMlBRZk5nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFkajBIeENoQVFzTkFDQUFJQUZCMGRNTUVKSUlDdzBBSUFBZ0FVRzA5QjhRMWdFTEN3QWdBRUcwOUI4UTVRRUxEUUFnQUNBQlFjL1FEQkNTQ0FzTkFDQUFJQUZCa1BRZkVOWUJDd3NBSUFCQmtQUWZFT1VCQ3hBQUlBQWdBVUgrMnd4Qmh5RVE5Z1lMRlFBZ0FVSHM4eDgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCN1BNZkVLRUJDeEFBSUFBZ0FVR0MyZ3hCOXlBUTlnWUxGUUFnQVVISTh4ODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJ5UE1mRUtFQkM4d1FBUWgvSXdCQmdBRnJJZ1lrQUNBR0lBQW9BaUEyQW5nZ0JpQUFLUUlZTndOd0lBWWdBQ2tDRURjRGFDQUdRY2dBYWlJSklBRWdCa0VvYWlBQVFTUnFFRllRN3djZ0JrRVFhaUlJUW9DQWdJQXdOd0lRSUFnZ0NEWUNEQ01BUVRCcklnSWtBQ0FJSUFCQlFHc2lCU2dDRUJDOERTQUNRUUEyQWlnZ0FpQUZOZ0lrSUFJZ0FVSElJR28yQWlBZ0FpQUJRZHlBQVdvb0FnQkJBV3MyQWl3Q1FDQUNRU0JxRUxVQkJFQWdBa0VnYWhCYUlnUW9BdGdCSWdNZ0JDZ0MzQUZCR0d4cUlRUURRQ0FESUFSR0JFQWdCU2dDRENJRUlBVW9BaEJCQW5ScUlRVURRQ0FFSUFWR0JFQWdBa0VnYWhCYUlnUW9Bc2dDSWdNZ0JDZ0N6QUpCR0d4cUlRUURRQ0FESUFSR0RRWWdBaUFCSUFNUVpoQ2tBellDRUNBSUlBSkJFR29Rd0FRZ0EwRVlhaUVEREFBTEFBc2dBaUFDUVNCcUVGb2lBMEhZQW1vMkFoQWdCQ2dDQUNFSElBSkJBRFlDR0NBQ0lBYzJBaFFnQWlBRFFad0phaWdDQUVFQmF6WUNIQUpBSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJSEtBSmdJZ01nQnlnQ1pFRVliR29oQndOQUlBTWdCMFlOQVNBQ0lBRWdBeEJtRUtRRE5nSU1JQWdnQWtFTWFoREFCQ0FEUVJocUlRTU1BQXNBQ3lBQ1FTQnFFRm9oQXlBQ0lBUW9BZ0EyQWhBZ0F5QUNRUkJxRU1ZRFJRUkFJQUlnQVNBRUtBSUFFSmNCTmdJUUlBZ2dBa0VRYWhEQUJBc2dBaUFDUVNCcUVGb2lBMEdnQ1dvMkFoQWdCQ2dDQUNFSElBSkJBRFlDR0NBQ0lBYzJBaFFnQWlBRFFlUVBhaWdDQUVFQmF6WUNIQUpBSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJSEtBSmdJZ01nQnlnQ1pFRVliR29oQndOQUlBTWdCMFlOQVNBQ0lBRWdBeEJtRUtRRE5nSU1JQWdnQWtFTWFoREFCQ0FEUVJocUlRTU1BQXNBQ3lBRVFRUnFJUVFNQUFzQUJTQUNJQUVnQXhCbUVLUUROZ0lRSUFnZ0FrRVFhaERBQkNBRFFSaHFJUU1NQVFzQUN3QUxJQVVvQWd3aUJDQUZLQUlRUVFKMGFpRUZBMEFnQkNBRlJnUkFJQUpCSUdvUXRRRkZEUUlnQWtFZ2FoQmFJZ1FvQXNnQ0lnTWdCQ2dDekFKQkdHeHFJUVFEUUNBRElBUkdEUU1nQWlBQklBTVFaaENrQXpZQ0VDQUlJQUpCRUdvUXdBUWdBMEVZYWlFRERBQUxBQVVnQWlBQklBUW9BZ0FRbHdFMkFoQWdDQ0FDUVJCcUVNQUVBa0FnQWtFZ2FoQzFBVVVOQUNBQ0lBSkJJR29RV2lJRFFhQUphallDRUNBRUtBSUFJUWNnQWtFQU5nSVlJQUlnQnpZQ0ZDQUNJQU5CNUE5cUtBSUFRUUZyTmdJY0lBSkJFR29RdEFGRkRRQWdBa0VRYWhDc0FTSUhLQUpnSWdNZ0J5Z0NaRUVZYkdvaEJ3TkFJQU1nQjBZTkFTQUNJQUVnQXhCbUVLUUROZ0lNSUFnZ0FrRU1haERBQkNBRFFSaHFJUU1NQUFzQUN5QUVRUVJxSVFRTUFRc0FDd0FMSUFKQk1Hb2tBQ0FHUVFBMkFnZ2dCa0lBTndJQUl3QkJNR3NpQWlRQUlBWWdBQ2dDWEJDcUVpQUNRUUEyQWlnZ0FpQUFRZGdBYWpZQ0pDQUNJQUZCeUNCcU5nSWdJQUlnQVVIY2dBRnFLQUlBUVFGck5nSXNBa0FnQWtFZ2FoQzFBUVJBSUFKQklHb1FXaUlFS0FMWUFTSURJQVFvQXR3QlFSaHNhaUVFQTBBZ0F5QUVSZ1JBSUFBb0FsZ2lCQ0FBS0FKY1FRSjBhaUVBQTBBZ0FDQUVSZ1JBSUFKQklHb1FXaUlBS0FMSUFpSURJQUFvQXN3Q1FSaHNhaUVBQTBBZ0FDQURSZzBHSUFJZ0FTQURFR1lRaEFJMkFoQWdCaUFDUVJCcUVMUUZJQU5CR0dvaEF3d0FDd0FMSUFJZ0FrRWdhaEJhSWdOQjJBSnFOZ0lRSUFRb0FnQWhCU0FDUVFBMkFoZ2dBaUFGTmdJVUlBSWdBMEdjQ1dvb0FnQkJBV3MyQWh3Q1FDQUNRUkJxRUxRQlJRMEFJQUpCRUdvUXJBRWlCU2dDWUNJRElBVW9BbVJCR0d4cUlRVURRQ0FESUFWR0RRRWdBaUFCSUFNUVpoQ0VBallDRENBR0lBSkJER29RdEFVZ0EwRVlhaUVEREFBTEFBc2dBa0VnYWhCYUlRTWdBaUFFS0FJQU5nSVFJQU1nQWtFUWFoREdBMFVFUUNBQ0lBRWdCQ2dDQUJEd0JUWUNFQ0FHSUFKQkVHb1F0QVVMSUFJZ0FrRWdhaEJhSWdOQm9BbHFOZ0lRSUFRb0FnQWhCU0FDUVFBMkFoZ2dBaUFGTmdJVUlBSWdBMEhrRDJvb0FnQkJBV3MyQWh3Q1FDQUNRUkJxRUxRQlJRMEFJQUpCRUdvUXJBRWlCU2dDWUNJRElBVW9BbVJCR0d4cUlRVURRQ0FESUFWR0RRRWdBaUFCSUFNUVpoQ0VBallDRENBR0lBSkJER29RdEFVZ0EwRVlhaUVEREFBTEFBc2dCRUVFYWlFRURBQUxBQVVnQWlBQklBTVFaaENFQWpZQ0VDQUdJQUpCRUdvUXRBVWdBMEVZYWlFRERBRUxBQXNBQ3lBQUtBSllJZ1FnQUNnQ1hFRUNkR29oQUFOQUlBQWdCRVlFUUNBQ1FTQnFFTFVCUlEwQ0lBSkJJR29RV2lJQUtBTElBaUlESUFBb0Fzd0NRUmhzYWlFQUEwQWdBQ0FEUmcwRElBSWdBU0FERUdZUWhBSTJBaEFnQmlBQ1FSQnFFTFFGSUFOQkdHb2hBd3dBQ3dBRklBSWdBU0FFS0FJQUVQQUZOZ0lRSUFZZ0FrRVFhaEMwQlFKQUlBSkJJR29RdFFGRkRRQWdBaUFDUVNCcUVGb2lBMEdnQ1dvMkFoQWdCQ2dDQUNFRklBSkJBRFlDR0NBQ0lBVTJBaFFnQWlBRFFlUVBhaWdDQUVFQmF6WUNIQ0FDUVJCcUVMUUJSUTBBSUFKQkVHb1FyQUVpQlNnQ1lDSURJQVVvQW1SQkdHeHFJUVVEUUNBRElBVkdEUUVnQWlBQklBTVFaaENFQWpZQ0RDQUdJQUpCREdvUXRBVWdBMEVZYWlFRERBQUxBQXNnQkVFRWFpRUVEQUVMQUFzQUN5QUNRVEJxSkFBZ0FTZ0NBQ0VCSXdCQkVHc2lBaVFBSUFFUUhDQUJJQUVvQWd4QkFXb2lBRFlDRENBQ0lBQTJBZ2dqQUVFUWF5SUFKQUFnQVVHTUFXb2lBeEN6QlNFRUlBSW9BZ2doQlNBQktBSUlJUUVnQUNBSVFReHFOZ0lJSUFnb0Fnd2hCeUFBSUFZMkFnQWdBQ0FISUFoSE9nQU1JQUJCQVRvQUJDQUVJQUVnQlNBR1FlZ0FhaUFKSUFCQkNHb2dBQkRCQnhvZ0F5QUVFQ2dnQXlBREtBSVlRUUZxTmdJWUlBQkJFR29rQUNBRUlRQWdBa0VRYWlRQUlBWVF3Z2dnQ0JDc0F5QUdRWUFCYWlRQUlBQUxFQUFnQUNBQlFkTFNERUgwSUJEMkJnc1ZBQ0FCUWFUekh6WUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFR2s4eDhRb1FFTFNBRURmeUFBS0FJRUlRSWdBQ2dDRENBQUtBSUlJZ05CQVhWcUlnUWdBRUVRYWlBQVFTUnFJQUJCOEFCcUlBRWdBMEVCY1FSL0lBUW9BZ0FnQW1vb0FnQUZJQUlMRVFrQUN3NEFJQUJCQkdvUTZBRWdBQkFmQ3dvQUlBQkJCR29RNkFFTEdBQWdBVUdBOHg4MkFnQWdBVUVFYWlBQVFRUnFFTFFXQ3lFQkFYOUJ2QUVRRlNJQlFZRHpIellDQUNBQlFRUnFJQUJCQkdvUXRCWWdBUXNKQUNBQUVMVVdFQjhMRFFBZ0FDQUJRZHp5SHhEV0FRc0xBQ0FBUWR6eUh4RGxBUXNOQUNBQUlBRkJ1UElmRU5ZQkN3c0FJQUJCdVBJZkVPVUJDdzBBSUFBZ0FVR1U4aDhRMWdFTEN3QWdBRUdVOGg4UTVRRUxEUUFnQUNBQlFmRHhIeERyQWdzTEFDQUFRZkR4SHhEc0Fnc0pBQ0FBRUxZV0VCOExEUUFnQUNBQlFjenhIeERyQWdzTEFDQUFRY3p4SHhEc0Fnc0pBQ0FBRUxjV0VCOExEUUFnQUNBQlFhanhIeERyQWdzTEFDQUFRYWp4SHhEc0Fnc0pBQ0FBRUxnV0VCOExEUUFnQUNBQlFZVHhIeERyQWdzTEFDQUFRWVR4SHhEc0Fnc0pBQ0FBRUxvV0VCOEx5UVFCQkg4akFFSFFBMnNpQ0NRQUlBZ2dBellDekFNQ1FDQUFLQUlRQkVBZ0FFRWthaUFJUWN3RGFoRFVCVVVFUUVFQUlRQU1BZ3NnQUVFUWFpRURJQUFvQWdCQmdBTnFRUXdnQ0NnQ3pBTVFqd0VoQ2lBQUtBSUFRWUFEYWtFY0lBUW9BZ1FvQWdBUWp3RWhCQ0FJUVlnQ2FpQUFLQUlBUVhJZ0J4QVFBa0FnQVVFQVNBUkFJQWhCK0FGcVFkejREQkFVR2d3QkN5QUlRZmdCYWlBQUtBSUFJQUVRTndzZ0NFR0lBbW9pQVNBSVFmZ0JhaUlMRUJJYUlBRWdBaEFPR2lBQlFmZndEQkFPR2lBSVFlZ0JhaUlDSUFZUTRRTWdBU0FDRUJJYUlBRkI1SXdLRUE0YUlBaEIyQUZxSWdrZ0JSRGhBeUFCSUFrUUVob2dBVUdmbGdvUURob2dBU0FFRUE0YUlBRkIvSmNJRUE0YUlBRkJ4dWtHRUE0YUlBRWdCaWdDS0JBaEdpQUJRYURDQ1JBT0dpQUlRY2dCYWlJRUlBY1E0UU1nQVNBRUVCSWFJQUZCbU9rR0VBNGFJQUVnQXhDekJ5SUFRWVdZQ2hBT0dpQUFJQW9RRGhvZ0FFSDhsd2dRRGhvZ0FDZ0N2QUVoQUNBRUVBOGFJQWtRRHhvZ0FoQVBHaUFMRUE4YUlBRVFFUXdCQ3lBSUlBY29BaWcyQXZnQklBQkJCR29nQ0VINEFXb1FtUUVoQmlBSUlBTTJBaFFnQ0NBQ05nSVFJQWdnQVRZQ0RDQUlJQUEyQWdoQkFDRUFJQWhCQURZQ0JDQUlRYjhRTmdJQUlBaEJHR29nQkJDMEFob2dDRUVzYWlBRkVNSUJJQWhCK0FCcUlBY1F3Z0ZCeUFFUUZTSUJRWVR4SHpZQ0FDQUJJQWdwQXdBM0FnUWdBVUVNYWlBSVFRaHFJZ0lRcXdNZ0NDQUJOZ0tZQWlBR0lBaEJpQUpxSWdFUWt3RWdBUkFXSUFJUW5BSUxJQWhCMEFOcUpBQWdBQXNNQUNBQUVMOFhHaUFBRUI4TFVBQWdBU2dDQUNJQVFRWk5RUUJCQVNBQWRFSGlBSEViSUFJb0FnQWlBa1VnQUVHVEtXdEJBa2x5Y2tVRVFDQUNRWVBMQlJEU0FRc2dBRUVHUmlBQVFYdHhRUUZHY2lBQVFaVXBhMEY5UzNJTEN3QWdBVUhnOEI4MkFnQUxFUUJCQ0JBVklnQkI0UEFmTmdJQUlBQUxDd0FnQVVHODhCODJBZ0FMRVFCQkNCQVZJZ0JCdlBBZk5nSUFJQUFMbVFNQkJYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUFrQWdBRUdnQVdvaUFTZ0NCQ0FCS0FJSVNRUkFJQUVnQVNnQ0JDQURLQUlNRU13VlFjd0FhallDQkF3QkN5TUFRU0JySWdRa0FDQUJLQUlFSUFFb0FnQnJRY3dBYlVFQmFpSUNRZGloK1JwUEJFQVFBUUFMSUFSQkNHcEIxNkg1R2lBQktBSUlJQUVvQWdCclFjd0FiU0lGUVFGMElnWWdBaUFDSUFaSkd5QUZRZXZRdkExUEd5QUJLQUlFSUFFb0FnQnJRY3dBYlNBQlFRaHFFTXNWSWdJb0FnZ2dBeWdDREJETUZSb2dBaUFDS0FJSVFjd0FhallDQ0NBQklBSVF5aFVnQWhESkZTQUVRU0JxSkFBTElBRW9BZ1FhSUFBb0FxUUJJZ0pCekFCcklnRWdBaUFBS0FLZ0FXdEJ6QUJ0TmdJMElBTkJFR29rQUNNQVFUQnJJZ01rQUFKQUFrQUNRQ0FCTHdFZVFRVnJEZ0lBQVFJTElBRkJBQkFiSVFRZ0EwRWdhaUlDSUFGQkFSREZCU0FBSUFRZ0EwRVFhaUFDRUZRaUFCREVGU0FBRUE4YUlBSVFEeG9NQVFzZ0FVRUFFQnNoQkNBRFFTQnFJZ0lnQVVFQ0VNVUZJQUFnQkNBRElBSVFWQ0lBRU1RVklBQVFEeG9nQWhBUEdnc2dBMEV3YWlRQVFRQUx1d0VCQTM4akFFRWdheUlDSkFBQ1FDQUJMd0VHSWdOQkVVWUVRRUVBSVFFTUFRc2dBMEVLUmdSQUlBSkJFR29pQXlBQkVJWU9RUUFoQVNBQ0tBSVFJQU1nQWl3QUcwRUFTQnNnQWtFTWFoQ05EZ1JBQWtBZ0FFR1FBV29pQkNBQ0tBSU1JZ01RYUEwQUlBUWdBeERRQkFKQUFrQUNRQ0FEUVFGckRnUUFBQUVDQXdzZ0FFRUJPZ0NpQXd3Q0N5QUFRUUU2QUtzRERBRUxJQUJCQVRvQXBRTUxDeUFDUVJCcUVBOGFEQUVMUVFVaEFRc2dBa0VnYWlRQUlBRUxHd0FnQUNnQ0JFRUlhaUFCS0FJQUVNY0tFQTVCOS9BTUVBNGFDeFVBSUFGQm1QQWZOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRWmp3SHhEWEFRc0xBQ0FCUWN6dEh6WUNBQXNSQUVFSUVCVWlBRUhNN1I4MkFnQWdBQXNLQUNBQktBSUFRUXRMQ3dzQUlBRkJxTzBmTmdJQUN4RUFRUWdRRlNJQVFhanRIellDQUNBQUN3c0FJQUZCaE8wZk5nSUFDeEVBUVFnUUZTSUFRWVR0SHpZQ0FDQUFDd3NBSUFGQjRPd2ZOZ0lBQ3hFQVFRZ1FGU0lBUWVEc0h6WUNBQ0FBQ3dvQUlBRW9BZ0JCREVzTEN3QWdBVUc4N0I4MkFnQUxFUUJCQ0JBVklnQkJ2T3dmTmdJQUlBQUxDd0FnQVVHWTdCODJBZ0FMRVFCQkNCQVZJZ0JCbU93Zk5nSUFJQUFMQ3dBZ0FVSDA2eDgyQWdBTEVRQkJDQkFWSWdCQjlPc2ZOZ0lBSUFBTEN3QWdBVUhRNng4MkFnQUxFUUJCQ0JBVklnQkIwT3NmTmdJQUlBQUxDZ0FnQVNnQ0FFRUJSZ3NMQUNBQlFhenJIellDQUFzUkFFRUlFQlVpQUVHczZ4ODJBZ0FnQUFzTEFDQUJRWWpySHpZQ0FBc1JBRUVJRUJVaUFFR0k2eDgyQWdBZ0FBc0xBQ0FCUWVUcUh6WUNBQXNSQUVFSUVCVWlBRUhrNmg4MkFnQWdBQXNLQUNBQktBSUFRUU5HQ3dzQUlBRkJ3T29mTmdJQUN4RUFRUWdRRlNJQVFjRHFIellDQUNBQUN3b0FJQUVvQWdCQkNFWUxDd0FnQVVHYzZoODJBZ0FMRVFCQkNCQVZJZ0JCbk9vZk5nSUFJQUFMQ2dBZ0FTZ0NBRUVCU3dzTEFDQUJRZmpwSHpZQ0FBc1JBRUVJRUJVaUFFSDQ2UjgyQWdBZ0FBc0xBQ0FCUWRUcEh6WUNBQXNSQUVFSUVCVWlBRUhVNlI4MkFnQWdBQXNLQUNBQktBSUFRUUJIQ3dzQUlBRkJzT2tmTmdJQUN4RUFRUWdRRlNJQVFiRHBIellDQUNBQUN3c0FJQUZCak9rZk5nSUFDeEVBUVFnUUZTSUFRWXpwSHpZQ0FDQUFDd3NBSUFGQjZPZ2ZOZ0lBQ3hFQVFRZ1FGU0lBUWVqb0h6WUNBQ0FBQ3hFQUlBQWdBaWdDQUNBQktBSUVFUUlBQ3hVQUlBRkJtTDRWTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUVppK0ZSQ2ZBd3Y0R2dFSGZ5TUFRZUFCYXlJREpBQWdBeUFCS0FJUUlnSTJBdHdCQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFFdkFRWWlCRUVGYXc0bkFSY1hGeGNYRnhjWEZ4Y1hGeGNEQkFVR0J3Z1hGeGNKQ2hNUkN4Y05EZzhRREJjWEZCVVdBQXNnQkVISEFFWU5BU0FFUWNJQ1JnMFJJQVJCeHdKSERSWWdBQ0FDSUFOQkNHcEJ4T3NCRUJRaUFCQmxJQUFRRHhvTUZ3c2dBU2dDQUNnQ0JDRUVJQU5CQ0dvaUFpQUJRUUVRekFvZ0FDQUVJQUlRWlNBQ0VBOGFEQllMSUFFb0FnQWlCQ2dDQ0VFTFJ3MFZJQUV2QVFSQkEwME5GaUFFS0FJRUlRSWdCQ2dDRENFRUl3QkJFR3NpQVNRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JBNHNBUUl3QXdRRkJnY0lDUW9MREEwT0R4QVJFaE1VTUJVV0Z4Z1pHaHNjSFI0ZklDRXdJaU1rSlNZbktDa0FDeUFFUWNBaWF3NEtLaXNzTFM0dkx5OHZLUzhMSUFBZ0FpQUJRWXJFQWhBVUlnQVFaU0FBRUE4YURDNExJQUFnQWlBQlFZYkhBeEFVSWdBUVpTQUFFQThhREMwTElBQWdBaUFCUWZUV0JCQVVJZ0FRWlNBQUVBOGFEQ3dMSUFBZ0FpQUJRWVRYQkJBVUlnQVFaU0FBRUE4YURDc0xJQUFnQWlBQlFkRGNCaEFVSWdBUVpTQUFFQThhRENvTElBQWdBaUFCUWNIZEJoQVVJZ0FRWlNBQUVBOGFEQ2tMSUFBZ0FpQUJRYWJkQmhBVUlnQVFaU0FBRUE4YURDZ0xJQUFnQWlBQlFaYmRCaEFVSWdBUVpTQUFFQThhRENjTElBQWdBaUFCUWNuWkFSQVVJZ0FRWlNBQUVBOGFEQ1lMSUFBZ0FpQUJRYmtqRUJRaUFCQmxJQUFRRHhvTUpRc2dBQ0FDSUFGQjB0a0JFQlFpQUJCbElBQVFEeG9NSkFzZ0FDQUNJQUZCNE9VQkVCUWlBQkJsSUFBUUR4b01Jd3NnQUNBQ0lBRkJyZUFFRUJRaUFCQmxJQUFRRHhvTUlnc2dBQ0FDSUFGQmlMOEJFQlFpQUJCbElBQVFEeG9NSVFzZ0FDQUNJQUZCdXVBRUVCUWlBQkJsSUFBUUR4b01JQXNnQUNBQ0lBRkJuK0FFRUJRaUFCQmxJQUFRRHhvTUh3c2dBQ0FDSUFGQm84QURFQlFpQUJCbElBQVFEeG9NSGdzZ0FDQUNJQUZCdGQwR0VCUWlBQkJsSUFBUUR4b01IUXNnQUNBQ0lBRkIrTU1DRUJRaUFCQmxJQUFRRHhvTUhBc2dBQ0FDSUFGQjQ1Z0RFQlFpQUJCbElBQVFEeG9NR3dzZ0FDQUNJQUZCbktJREVCUWlBQkJsSUFBUUR4b01HZ3NnQUNBQ0lBRkJzdUFDRUJRaUFCQmxJQUFRRHhvTUdRc2dBQ0FDSUFGQjBwc0JFQlFpQUJCbElBQVFEeG9NR0FzZ0FDQUNJQUZCeU1nREVCUWlBQkJsSUFBUUR4b01Gd3NnQUNBQ0lBRkIzTndHRUJRaUFCQmxJQUFRRHhvTUZnc2dBQ0FDSUFGQjY5d0dFQlFpQUJCbElBQVFEeG9NRlFzZ0FDQUNJQUZCZ04wR0VCUWlBQkJsSUFBUUR4b01GQXNnQUNBQ0lBRkIzeU1RRkNJQUVHVWdBQkFQR2d3VEN5QUFJQUlnQVVINytBSVFGQ0lBRUdVZ0FCQVBHZ3dTQ3lBQUlBSWdBVUdqeVFNUUZDSUFFR1VnQUJBUEdnd1JDeUFBSUFJZ0FVSEx4d01RRkNJQUVHVWdBQkFQR2d3UUN5QUFJQUlnQVVILzZBQVFGQ0lBRUdVZ0FCQVBHZ3dQQ3lBQUlBSWdBVUhFZ1FVUUZDSUFFR1VnQUJBUEdnd09DeUFBSUFJZ0FVR2t5QU1RRkNJQUVHVWdBQkFQR2d3TkN5QUFJQUlnQVVIT3hnTVFGQ0lBRUdVZ0FCQVBHZ3dNQ3lBQUlBSWdBVUd3bXdFUUZDSUFFR1VnQUJBUEdnd0xDeUFBSUFJZ0FVRzltd0VRRkNJQUVHVWdBQkFQR2d3S0N5QUFJQUlnQVVIcmdRVVFGQ0lBRUdVZ0FCQVBHZ3dKQ3lBQUlBSWdBVUgyZ1FVUUZDSUFFR1VnQUJBUEdnd0lDeUFBSUFJZ0FVSGpJaEFVSWdBUVpTQUFFQThhREFjTElBQWdBaUFCUWZjakVCUWlBQkJsSUFBUUR4b01CZ3NnQUNBQ0lBRkJ2TllFRUJRaUFCQmxJQUFRRHhvTUJRc2dBQ0FDSUFGQjQvRUZFQlFpQUJCbElBQVFEeG9NQkFzZ0FDQUNJQUZCbHZJRkVCUWlBQkJsSUFBUUR4b01Bd3NnQUNBQ0lBRkIwZkVGRUJRaUFCQmxJQUFRRHhvTUFnc2dBQ0FDSUFGQmhQSUZFQlFpQUJCbElBQVFEeG9NQVFzZ0FDQUNJQUZCdi9FRkVCUWlBQkJsSUFBUUR4b0xJQUZCRUdva0FBd1ZDeUFBSUFJZ0EwRUlha0hJNndRUUZDSUFFR1VnQUJBUEdnd1VDeUFBSUFJZ0EwRUlha0dML0FJUUZDSUFFR1VnQUJBUEdnd1RDeUFEUVFocUVGVWdBMEhRQVdvUVZRSkFBa0FDUUFKQUFrQUNRQ0FCS0FJQUtBSUlJZ1JCSFhRZ0JFRUlhMEVEZG5JT0NBQUJCQUlFQkFRREJBc2dBMEhRQVdwQjBvOENFTklCREFRTElBTkIwQUZxUVpvekVOSUJEQU1MSUFOQjBBRnFRZHMvRU5JQkRBSUxJQU5CMEFGcVFkQzNBeERTQVF3QkN5QURRY0FCYWlJRklBUVFqQVFnQTBIUUFXb2dCUkNlQVNBRkVBOGFJQU5CQ0dwQitxRURFTklCQ3lBQktBSUFLQUlNUlFSQUlBTkJDR3BCK3lvUTBnRUxJQU5Cd0FGcUlnUVFWU0FFSUFOQkNHb2lCU0lCS0FJQUlBRWdBUzBBQ3lJR1FSaDBRUmgxUVFCSUlnY2JJQUVvQWdRZ0JpQUhHeUlHSUFZZ0EwSFFBV29pQVNnQ0JDQUJMUUFMSWdjZ0IwRVlkRUVZZFVFQVNCc2lCMm9RMmd3Z0JDQUJLQUlBSUFFZ0FTd0FDMEVBU0JzZ0J4RCtCaG9nQUNBQ0lBUVFaU0FFRUE4YUlBRVFEeG9nQlJBUEdnd1NDd0pBSUFFb0FnQW9BZ2dpQVVIQUFFY0VRQ0FCUVNCSEJFQWdBVUVRUncwQ0lBQWdBaUFEUVFocVFlVEJBeEFVSWdBUVpTQUFFQThhREJRTElBQWdBaUFEUVFocVFjajVBQkFVSWdBUVpTQUFFQThhREJNTElBQWdBaUFEUVFocVFmUzJCQkFVSWdBUVpTQUFFQThhREJJTElBTkIwQUZxUWFXMUFoQVVJUVFnQTBIQUFXb2lCU0FCRUl3RUlBTkJDR29pQVNBRUlBVVFUaUFBSUFJZ0FSQmxJQUVRRHhvZ0JSQVBHaUFFRUE4YURCRUxJQU5Cd0FGcVFkNHFFQlFoQkNBRFFiQUJhaUlGSUFFb0FnQW9BZ3dRakFRZ0EwSFFBV29pQmlBRUlBVVFUaUFEUWFBQmFpSUhJQUFnQVNnQ0FDZ0NDQkRRQlNBRFFRaHFJZ0VnQmlBSEVFNGdBQ0FDSUFFUVpTQUJFQThhSUFjUUR4b2dCaEFQR2lBRkVBOGFJQVFRRHhvTUVBc2dBMEhBQVdwQmlmc0FFQlFoQkNBRFFiQUJhaUlGSUFFb0FnQW9BZ3dRakFRZ0EwSFFBV29pQmlBRUlBVVFUaUFEUWFBQmFpSUhJQUFnQVNnQ0FDZ0NDQkRRQlNBRFFRaHFJZ0VnQmlBSEVFNGdBQ0FDSUFFUVpTQUJFQThhSUFjUUR4b2dCaEFQR2lBRkVBOGFJQVFRRHhvTUR3c2dBMEd3QVdwQis3c0ZFQlFoQkNBRFFhQUJhaUlGSUFBZ0FTZ0NBQ2dDQ0JEUUJTQURRY0FCYWlJR0lBUWdCUkJPSUFOQjBBRnFJZ2NnQmtHeHZRVVFMU0FEUVpBQmFpSUlJQUFnQVNnQ0FDZ0NEQkRRQlNBRFFRaHFJZ0VnQnlBSUVFNGdBQ0FDSUFFUVpTQUJFQThhSUFnUUR4b2dCeEFQR2lBR0VBOGFJQVVRRHhvZ0JCQVBHZ3dPQ3lBRFFkQUJha0h1dXdVUUZDRUVJQU5Cd0FGcUlnVWdBQ0FCS0FJQUtBSUlFTkFGSUFOQkNHb2lBU0FFSUFVUVRpQUFJQUlnQVJCbElBRVFEeG9nQlJBUEdpQUVFQThhREEwTElBTkJzQUZxUWVpN0JSQVVJUVFnQTBHZ0FXb2lCU0FBUVJBZ0FTZ0NBQ2dDQ0JDR0Z5QURRY0FCYWlJR0lBUWdCUkJPSUFOQjBBRnFJZ2NnQmtHeHZRVVFMU0FEUVpBQmFpSUlJQUFnQVNnQ0FDZ0NEQkRRQlNBRFFRaHFJZ0VnQnlBSUVFNGdBQ0FDSUFFUVpTQUJFQThhSUFnUUR4b2dCeEFQR2lBR0VBOGFJQVVRRHhvZ0JCQVBHZ3dNQ3lBRFFkQUJha0h4clFRUUZDRUVJQU5Cd0FGcUlnVWdBRUVaSUFFb0FnQW9BZ2dRaGhjZ0EwRUlhaUlCSUFRZ0JSQk9JQUFnQWlBQkVHVWdBUkFQR2lBRkVBOGFJQVFRRHhvTUN3c2dBQ0FDSUFOQkNHcEJ0c0FBRUJRaUFCQmxJQUFRRHhvTUNnc2dBQ0FDSUFOQkNHcEJvOEFBRUJRaUFCQmxJQUFRRHhvTUNRc2dBQ0FDSUFOQkNHcEIvNElGRUJRaUFCQmxJQUFRRHhvTUNBc2dBQ0FDSUFOQkNHcEJ4TllERUJRaUFCQmxJQUFRRHhvTUJ3c2dBMEhRQVdwQm5yd0ZFQlFoQkNBRFFiQUJhaUlGSUFGQkFSRE1DaUFEUWNBQmFpSUJJQVVRaHhjZ0EwRUlhaUlHSUFRZ0FSQk9JQUFnQWlBR0VHVWdCaEFQR2lBQkVBOGFJQVVRRHhvZ0JCQVBHZ3dHQ3lBQUlBSWdBMEVJYWtIaXdnUVFGQ0lBRUdVZ0FCQVBHZ3dGQ3lBRFFkQUJha0hmdXdVUUZDRUJJQU5Cd0FGcUlnUWdBaENNQkNBRFFRaHFJZ1VnQVNBRUVFNGdBQ0FDSUFVUVpTQUZFQThhSUFRUUR4b2dBUkFQR2d3RUN5QUFJQUlnQTBFSWFrR0F6QU1RRkNJQUVHVWdBQkFQR2d3REN5QUFJQUlnQTBFSWFrSG00d01RRkNJQUVHVWdBQkFQR2d3Q0N5QURRUWhxRU00QklnUWdBU0FCS0FJVVFTQnFFUHNXSUFOQjBBRnFJZ0lnQkVFRWFoQkNJQU1vQXRBQklBSWdBeTBBMndFaUJVRVlkRUVZZFVFQVNDSUdHeUlDSUFNb0F0UUJJQVVnQmh0cUlRVURRQ0FDSUFWR0JFQWdBeWdDM0FFaEJpQURRYUFCYWlJQ0lBQWdBU2dDREJEUUJTQURRYkFCYWlJQklBSkJzYjBGRUMwZ0EwSEFBV29pQlNBQklBTkIwQUZxSWdjUVRpQUFJQVlnQlJCbElBVVFEeG9nQVJBUEdpQUNFQThhSUFjUUR4b2dCQkM3QVJvTUF3c2dBaTBBQUVFdFJnUkFJQUpCN2dBNkFBQUxJQUpCQVdvaEFnd0FDd0FMSUFKRkRRQWdBQ0FEUWR3QmFoRHNBUTBBSUFOQkNHb2lBU0FES0FMY0FTSUNFSXdFSUFBZ0FpQUJFR1VnQVJBUEdnc2dBMEhnQVdva0FBd0JDMEhIOXdaQjY2RUNRYmdCUWZQTkFoQUFBQXRCQUFzUkFDQUFJQUVvQWdRZ0FpZ0NBQkRRQlFzVkFDQUJRYXl5RXpZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVHc3NoTVFud01MMHc4QkNuOGdBQVJBQWtBZ0FDZ0NDQ0lDSUFFdkFRUkhEUUFnQUNnQ0JDSUhJQWNnQWtFQ2RHb2dBU2dDQUJEMkYwVU5BQ0FBS0FJQUlnZEJvQUZxSVFBakFFRVFheUlDSkFBQ1FDQUFLQUlRSWdORklBRXZBUVlpQlVFMlIzSUVmeUFEQlNBQUtBSUVFT0lCR2lBQUtBSUVJUU1nQWlBQUtBSU1RU0FRaVFZZ0F5QUNFQklhSUFJUUR4b2dBQ2dDQkVIQWlBb1FEaUVESUFJZ0FFRVlhaUFCS0FJUUVNa0tJQU1nQWhBU0VPSUJHaUFDRUE4YUlBQW9BaEFMUlEwQUlBY3RBTmdCRFFBZ0JSQzlDRVVOQUNBSFFRRTZBTmdCSUFBb0FnUVE0Z0VhSUFBb0FnUWhBeUFDSUFBb0FneEJJQkNKQmlBRElBSVFFaG9nQWhBUEdpQUFLQUlFUWF1ZUFSQU9FT0lCR2dzQ1FDQUFLQUlRUlEwQUlBY3RBTmtCRFFBZ0JSQzhDRVVOQUNBSFFRRTZBTmtCSUFBb0FnUVE0Z0VhSUFBb0FnUWhBeUFDSUFBb0FneEJJQkNKQmlBRElBSVFFaG9nQWhBUEdpQUFLQUlFUVl2ZkFoQU9FT0lCR2dzQ1FDQUFLQUlRUlEwQUlBY3RBTm9CRFFBZ0JSRFFBa1VOQUNBSFFRRTZBTm9CSUFBb0FnUVE0Z0VhSUFBb0FnUWhCU0FDSUFBb0FneEJJQkNKQmlBRklBSVFFaG9nQWhBUEdpQUFLQUlFUWIrSUFSQU9FT0lCR2dzZ0FrRVFhaVFBSUFjb0F0UUJJUXNqQUVFUWF5SUZKQUFnQVM4QkJpRUtBa0FnQVNnQ0VBUkFJd0JCRUdzaUFpUUFJQUF0QUFrRVFDQUFLQUlFSVFNZ0FpQUFMUUFJT2dBSUlBTkI0L2tDRUE0YUN5QUNRUkJxSkFBZ0JTQUFRUmhxSUFFb0FoQVF5UW9nQUNnQ0JDRUNJQUFvQWd3aUF3UkFJQUlnQWlnQ0FFRU1heWdDQUdvZ0F5QUZLQUlFSUFVdEFBc2lBeUFEUVJoMFFSaDFRUUJJRzJ0QkEyc2lBMEVBSUFOQkFFb2JOZ0lNQ3lBQ1FaK2RDUkFPSUFVUUVob2dBQkRBQ0NBQUtBSUVRWjdkQ3hBT0dnd0JDeUFBS0FJRUlRSWdCU0FBS0FJTVFTQVFpUVlnQWlBRkVCSWFDeUFGRUE4YUlBQW9BZ1JCc0w4Q0VBNGdDaENCQVJBT0dnTkFJQUV2QVJnZ0NFMEVRQ0FBS0FJUVJTQUtRUVZIY2tVRVFDQUJLQUlBSUFFb0FoUXZBUUJCQW5ScUtBSUFJUUlnQUNnQ0JFRzNuQWtRRGlBQ0VDRWFDeUFBTFFBVUJFQWpBRUVRYXlJQ0pBQWdBQzBBQ1FSQUlBQW9BZ1FoQXlBQ0lBQXRBQWc2QUFnZ0EwR0ErZ0lRRGhvTElBSkJFR29rQUNBQUtBSUVJZ0lnQWlnQ0FFRU1heWdDQUdvaUFpZ0NCQ0VJSUFJUW5BTWhCQ0FBS0FJRVFkWW5FQTRpQWlBQ0tBSUFRUXhySWdNb0FnQnFRUWcyQWd3Z0FpQURLQUlBYWlJR0lBWW9BZ1JCdFg5eFFRaHlOZ0lFSUFJZ0F5Z0NBR3BCTURZQ1RDQUNJQXNRSVJvZ0FDZ0NCQ0lDSUFJb0FnQkJER3NpQXlnQ0FHb2dDRFlDQkNBQ0lBTW9BZ0JxSUFRMkFrd2dBQkRBQ0FzZ0FDZ0NCRUhiK0F3UURob2dCVUVRYWlRQUJRSkFBa0FDUUNBQktBSVVJQWhCQkhScUtBSUVEZ1FBQVFFQ0FRdEIxZFFHUWRhdUFrR0pBa0cxelFJUUFBQUxJQUFvQWdSQjkvQU1FQTRhSXdCQkVHc2lBaVFBQWtBQ1FBSkFBa0FDUUNBSVFmLy9BM0VpQ1NBQkx3RVlTUVJBSUFFb0FnQWdBU2dDRkNBSlFRUjBhaUlFTHdFQVFRSjBhaWdDQUNFREFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCQ2dDQkNJR1FRRnJEa2NJQ0FBSUNBTUJBZ01FQlFVRkJRVUZCUVVGQlFjSEJRVUZCUVVGQlFVRkJRWUdCZ1lHQmdjSEJ3Y0hCd2NIQndjSEJ3Y0hCZ1VGQlFVR0JRVUZCUVVGQlFVRkJRVUZCUWNMUWJHbkNVSFdyZ0pCeGdKQml1a0VFQUFBQ3lBQUVJOE9JQUFvQWdBZ0FTZ0NDQ0FESUFJUXdRaEZCRUFnQUNnQ0JDQUNLQUlBS0FJQUVBNGFEQWdMSUFFb0FnZ1FzQWRGRFFrZ0FDZ0NCQ0FERUNFYURBY0xJQUFvQWdBZ0F5QUNFS2tHRFFrZ0FCQ1BEaUFBS0FJRUlBSW9BZ0FvQWdBUURob01CZ3NnQUJDUERpQUFLQUlFSUFFZ0JCRDdGaUFBRU1BSURBVUxJQUFvQWdSQmtyb0pFQTRhSXdCQkVHc2lBeVFBSUFBdEFBa0VRQ0FBS0FJRUlRUWdBeUFBTFFBSU9nQUlJQVJCNy9rQ0VBNGFDeUFEUVJCcUpBQWdBaUFCSUFrUXpBb2dBaWdDQUNBQ0lBSXRBQXNpQkVFWWRFRVlkVUVBU0NJR0d5SURJQUlvQWdRZ0JDQUdHMm9oQmdOQUlBTWdCa1lFUUNBQUVNQUlJQUFvQWdSQkloRGVCQ0FDRUE4YURBWUZJQU10QUFBaUJFSGNBRWNnQkVFaVIzRkZCRUFnQUNnQ0JFSGNBQkRlQkNBRExRQUFJUVFMSUFBb0FnUWdCRUVZZEVFWWRSRGVCQ0FEUVFGcUlRTU1BUXNBQ3dBTElBQW9BZ0FnQmlBRElBSVEzUUlOQnlBQUtBSUVJQUlvQWdBb0FnQVFEaG9NQXdzZ0FDQUdJQU1RamhjTUFnc2dCaENCRnlFSklBUW9BZ1FoQmlBSkJFQWdBQ0FHSUFNUWpoY01BZ3NnQmhDQ0Z3UkFJQUFvQWdBZ0JDZ0NCQ0FESUFJUTNRSU5CeUFBS0FJRUlBSW9BZ0FvQWdBUURob01BZ3RCaktjSlFkYXVBa0cyQTBHSzZRUVFBQUFMSXdCQkVHc2lCQ1FBSUFBdEFBa0VRQ0FBS0FJRUlRWWdCQ0FBTFFBSU9nQUlJQVpCNmZrQ0VBNGFDeUFFUVJCcUpBQWdBQ2dDQkVHZm5Ra1FEaUVFSUFJZ0FFRVlhaUFERU1rS0lBUWdBaEFTR2lBQ0VBOGFDeUFBRU1BSUlBSkJFR29rQUF3RkMwR0R3UUZCMXE0Q1FjRUNRWXJwQkJBQUFBdEJzNThKUWRhdUFrSFpBa0dLNlFRUUFBQUxRYk9mQ1VIV3JnSkI0d0pCaXVrRUVBQUFDMEd6bndsQjFxNENRYUFEUVlycEJCQUFBQXRCczU4SlFkYXVBa0d6QTBHSzZRUVFBQUFMQ3lBSVFRRnFJUWdNQVFzTElBY2dCeWdDMUFFZ0FTOEJCRUVDZEdvMkF0UUJRUVVoQlFzZ0JROExRYUM2QlVIV3JnSkJ0QUZCeGMwQ0VBQUFDNjhDQUNBQVJRUkFRYUM2QlVIV3JnSkJyQUZCMXZvQkVBQUFDeUFBS0FJQUlnSWdBVFlDQkNBQ0xRRFFBUVJBSUFKQm9BRnFJZ0FvQWdSQmsvTU1FQTRhSUFBb0FnUkJuZjRMRUE0Z0EwRVFka0gvQVhFUUlVSDhsd2dRRGlBRFFRaDJRZjhCY1JBaFFkdjREQkFPR2dKL0lBUkJFSFloQTBIQXZoVWhBUU5BUWNMQ0FpQUJRWkRERlVZTkFSb2dBeUFCS0FJQVJ3UkFJQUZCRUdvaEFRd0JDd3NnQVNnQ0RBc2hBU0FBS0FJRVFZUHpDeEFPSUFFUURocEJ3c0lDSUFFUW9nSkZCRUFnQUNnQ0JFR1ovd2dRRGlBREVDRkI3L1lJRUE0YUN5QUFLQUlFUWJ2ZEN4QU9JQVJCLy84RGNSQWhRZHY0REJBT0dpQUFLQUlFUWVXbkRCQU9JQVVRSVVIYitBd1FEaG9nQUNnQ0JFSHVzUXdRRGlBR0VDRkIyL2dNRUE0YUN5QUNRUlEyQXRRQlFRQUxnd0VCQVg4akFFRVFheUlCSkFBZ0JDZ0NBQ0VFSUFFZ0F5Z0NDRFlDQ0NBQklBTXBBZ0EzQXdBZ0FDZ0NCQ2dDQUJDUkYwRVVFQlVpQWlBRUVOd0JRUUZxSWdNUUZTSUZOZ0lNSUFJZ0FTa0NBRGNDQUNBQ0lBRW9BZ2cyQWdnZ0FrRUFPZ0FRSUFWQkFDQURFSGtnQkJDRkZTQUFLQUlFSUFJMkFnQWdBVUVRYWlRQUN4VUFJQUZCaUxJVE5nSUFJQUVnQUNnQ0JEWUNCQXNMQUNBQVFZaXlFeERYQVFzSkFDQUFFSmdPRUI4TENRQWdBQkNpRnhBZkN5b0FJQUJCQkdvUTlnNGdBRUVnYWlJQUlBQW9BZ1FRemdvZ0FDQUFRUVJxTmdJQUlBQkNBRGNDQkFzVUFDQUFLQUlvUlNBQUtBSUVJQUFvQWdoR2NRc0pBQ0FBRUtNWEVCOExDUUFnQUJDa0Z4QWZDd2tBSUFBUXBSY1FId3RvQVFOL0FrQWdBU0FCS0FJQUtBTFlBUkVBQUNJRFJRMEFJQUFvQWhRaUJTQURLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBS0FJWUlBTW9BaGhIRFFBZ0FDZ0NIQ0FES0FJY1J3MEFJQUFvQWlBZ0F5Z0NJRWNOQUNBQUlBRVE4UUVoQkFzZ0JBc2tBQ0FCSUFCQkdHb2dBRUVjYWlBQVFTQnFFS1lYSVFFZ0FDZ0NGQ0FCSUFJUXpRUUxpUUVCQlg4akFFR2dBV3NpQWlRQUlBSkJHR29RemdFaUEwSGE2UVlRRGlFRklBSkJDR29pQkNBQktBSVVJZ1lnQmlnQ0FDZ0NEQkVDQUNBRklBUVFFa0gwN1F3UURpQUJLQUlZRUNGQjlPME1FQTRnQVNnQ0hCQWhRZlR0REJBT0lBRW9BaUFRSVVHTDVnWVFEaG9nQkJBUEdpQUFJQU5CQkdvUVFpQURFTHNCR2lBQ1FhQUJhaVFBQzBZQkFYOGpBRUVRYXlJREpBQWdBeUFBS0FJWU5nSU1JQUVnQUVFVWFpQURRUXhxRUtnWElRRWdBQ2dDSENJQUJFQWdBQ0FCSUFJUXpRUWhBUXNnQTBFUWFpUUFJQUVMZUFFRGZ5TUFRYUFCYXlJREpBQWdBMEVZYWhET0FTSUNRWWIzQ0JBT0dnSkFJQUVvQWh3aUJBUkFJQU5CQ0dvaUFTQUVJQVFvQWdBb0Fnd1JBZ0FnQWlBQkVCSWFJQUVRRHhvTUFRc2dBaUFCS0FJVUVDRWFDeUFDUWUvMkNCQU9HaUFBSUFKQkJHb1FRaUFDRUxzQkdpQURRYUFCYWlRQUM2a0JBUVIvQWtBZ0FTQUJLQUlBS0FLNEFSRUFBQ0lDUlEwQUFrQUNRQ0FBS0FJY0lnTkZEUUFnQWlnQ0hDSUVSUTBBQW44Q1FDQURLQUlRSWdVZ0JDZ0NFRVlFZnlBRlFSdFBEUUVnQXlBREtBSUFJQVZCQTNScUtBSVlFUUFBSUFRUXZnY0ZRUUFMREFFTFFhT29DVUdBb0FKQnVBRkJtdVlHRUFBQUN3MEJEQUlMSUFBb0FoUWdBaWdDRkVjTkFRc2dBQ2dDR0NBQ0tBSVlSdzBBSUFBZ0FSRHhBU0VHQ3lBR0MwTUJBbjhqQUVHUUFXc2lBaVFBSUFKQkNHb1F6Z0VpQTBHaCtRZ1FEaUFCS0FJVUVDRkI3L1lJRUE0YUlBQWdBMEVFYWhCQ0lBTVF1d0VhSUFKQmtBRnFKQUFMTmdFQmYwRUFJUUlDUUNBQklBRW9BZ0FvQXJBQkVRQUFJZ05GRFFBZ0FDZ0NGQ0FES0FJVVJ3MEFJQUFnQVJEeEFTRUNDeUFDQzBFQkFuOGdBQ2dDSENFRUlBQW9BaGdoQXdOL0lBTWdCRVlFZnlBQUtBSVVJQUVnQWhETkJBVWdBeWdDQUNBQklBSVF6UVFoQVNBRFFRUnFJUU1NQVFzTEM4MEJBUVovSXdCQm9BRnJJZ1VrQUVHWi93Z2hBaUFGUVJocUVNNEJJUVFnQVNnQ0hDQUJLQUlZYTBFQ2RTRUdBMEFnQkNBQ0VBNGFBa0FEUUNBRElBWkdEUUVnQlVFSWFpSUhJQUVvQWhnZ0EwRUNkR29vQWdBaUFpQUNLQUlBS0FJTUVRSUFJQVFnQnhBU0dpQUhFQThhSUFOQkFXb2lBeUFHUmcwQUMwSDA3UXdoQWd3QkN3c2dCRUhPMndzUURpRURJQVZCQ0dvaUFpQUJLQUlVSWdFZ0FTZ0NBQ2dDREJFQ0FDQURJQUlRRWhvZ0FoQVBHaUFBSUFSQkJHb1FRaUFFRUxzQkdpQUZRYUFCYWlRQUM2c0JBUVYvQWtBZ0FTQUJLQUlBS0FLSUFSRUFBQ0lFUlEwQUlBQW9BaFFpQXlBRUtBSVVJQUlnQXlnQ0FDZ0NDQkVFQUVVTkFDQUFLQUljSUFBb0FoaHJJQVFvQWh3Z0JDZ0NHR3RIRFFCQkFDRURBMEFnQUNnQ0hDQUFLQUlZSWdaclFRSjFJQU5MQkVBZ0EwRUNkQ0VISUFOQkFXb2hBeUFHSUFkcUtBSUFJZ1lnQnlBRUtBSVlhaWdDQUNBQ0lBWW9BZ0FvQWdnUkJBQU5BUXdDQ3dzZ0FDQUJFUEVCSVFVTElBVUxad0VFZnlNQVFhQUJheUlDSkFBZ0FrRVlhaERPQVNFRElBSkJDR29pQkNBQktBSVVJZ1VnQlNnQ0FDZ0NEQkVDQUNBRElBUVFFa0gzOEF3UURpQUJLQUlZRUNGQjNaZ0lFQTRhSUFRUUR4b2dBQ0FEUVFScUVFSWdBeEM3QVJvZ0FrR2dBV29rQUF1bUFRRURmeU1BUVJCcklnTWtBQUpBSUFFZ0FTZ0NBQ2dDZ0FFUkFBQWlCVVVOQUNBQUtBSVlJQVVvQWhoSERRQWdBeUFCSUFFb0FnQW9Bb0FCRVFBQU5nSUVJQU1nQURZQ0FDQURRUWhxSUFJZ0F4Q3FGeUFETFFBTVJRUkFRUUVoQkF3QkN5QUFLQUlVSWdRZ0JTZ0NGQ0FDSUFRb0FnQW9BZ2dSQkFBaEJTQUNJQU1vQWdnUXN3NGFRUUFoQkNBRlJRMEFJQUFnQVJEeEFTRUVDeUFEUVJCcUpBQWdCQXMwQUNNQVFSQnJJZ0lrQUNBQVFSUnFFTTRHSVFBZ0FrRVFhaVFBSUFBZ0FVRUdkQ0FCUVFKMmFtcEJ4NHlpamdacklBRnpDME1CQW44akFFR1FBV3NpQWlRQUlBSkJDR29RemdFaUEwSG1od2tRRGlBQlFSUnFFQkpCdS9NSUVBNGFJQUFnQTBFRWFoQkNJQU1RdXdFYUlBSkJrQUZxSkFBTE9BRUJmMEVBSVFJQ1FDQUJJQUVvQWdBb0FuZ1JBQUFpQTBVTkFDQUFRUlJxSUFOQkZHb1E4Z05GRFFBZ0FDQUJFUEVCSVFJTElBSUxxQUVCQW44Z0FDZ0NHQ0VFSUFBb0FoUWhBd05BSUFNZ0JFWUVRQUpBSUFCQkpHb2hBaUFBS0FJZ0lRTURRQ0FDSUFOR0RRRWdBeWdDRUNBQlFRWjBJQUZCQW5acWFrSEhqS0tPQm1zZ0FYTWhBU0FES0FJWUlRUWdBeWdDRkNFQUEzOGdBQ0FFUmdSL0lBRUZJQUVnQUJDWkRpRUJJQUJCREdvaEFBd0JDd3NoQVNBREVFd2hBd3dBQ3dBTEJTQURLQUlBSUFFZ0FoRE5CQ0VCSUFOQkJHb2hBd3dCQ3dzZ0FRdWRBUUVHZnlNQVFhQUJheUlFSkFBZ0JFRVlhaERPQVNJQ1FZZ0lFQTRhSUFFb0FoZ2dBU2dDRkd0QkFuVWhCUU5BSUFNZ0JVY0VRQ0FFUVFocUlnWWdBU2dDRkNBRFFRSjBhaWdDQUNJSElBY29BZ0FvQWd3UkFnQWdBaUFHRUJJYUlBWVFEeG9nQTBFQmFpSURJQVZHRFFFZ0FrSDA3UXdRRGhvTUFRc0xJQUpCZ2dnUURob2dBQ0FDUVFScUVFSWdBaEM3QVJvZ0JFR2dBV29rQUF2QUFnRUhmeU1BUVNCcklnVWtBQUpBSUFFZ0FTZ0NBQ2dDY0JFQUFDSURSUTBBSUFBb0FoZ2dBQ2dDRkdzZ0F5Z0NHQ0FES0FJVWEwY05BQ0FBS0FJb0lBTW9BaWhIRFFBZ0FDQUJFUEVCUlEwQUlBTkJJR29oQjBFQUlRRURRQ0FBS0FJWUlBQW9BaFFpQm10QkFuVWdBVXNFUUNBQlFRSjBJUVFnQVVFQmFpRUJJQVFnQm1vb0FnQWlCaUFFSUFNb0FoUnFLQUlBSUFJZ0JpZ0NBQ2dDQ0JFRUFBMEJEQUlMQ3lBQVFTUnFJUUlnQUNnQ0lDRUFBMEFnQUNBQ1JpSUlEUUVnQnlBQVFSQnFJZ01RMUFWRkRRRWdCVUVRYWlBQVFSUnFFTGtISWdRaENTTUFRUkJySWdFa0FDQUhJQUZCREdvZ0F4Q3RCaWdDQUNJRFJRUkFFQUVBQ3lBQlFSQnFKQUFnQ1NBRklBTkJGR29RdVFjaUFSQzdGeUVESUFFUXBBSWdCQkNrQWlBRFJRMEJJQUFRVENFQURBQUxBQXNnQlVFZ2FpUUFJQWdMRVFBZ0FDQUJRZFM5QlVIV3ZRVVFrQk1MUUFFRGZ3SkFJQUVnQVNnQ0FDZ0NhQkVBQUNJRVJRMEFJQUFvQWhRaUJTQUVLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBSUFFUThRRWhBd3NnQXdzYUFDQUJJQUJCSEdvUW1RNGhBU0FBS0FJVUlBRWdBaEROQkF1NUFRRUZmeU1BUWFBQmF5SUZKQUFnQlVFWWFoRE9BU0lDUWRhOUJSQU9JUU1nQlVFSWFpSUVJQUVvQWhRaUJpQUdLQUlBS0FJTUVRSUFJQU1nQkJBU1FjYjVDQkFPSUFFb0FoZ1FJVUg4OWdnUURocEIzUGdNSVFNZ0JCQVBHaUFCS0FJZ0lRWWdBU2dDSENFQkEwQWdBU0FHUmdSQUlBSkIwNzBGRUE0YUlBQWdBa0VFYWhCQ0lBSVF1d0VhSUFWQm9BRnFKQUFGSUFFb0FnQWhCQ0FDSUFNUURpQUVFQ0VhUWRTWUNDRURJQUZCQkdvaEFRd0JDd3NMVUFFRGZ3SkFJQUVnQVNnQ0FDZ0NZQkVBQUNJRVJRMEFJQUFvQWhRaUJTQUVLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBSUFFUThRRkZEUUFnQUVFY2FpQUVRUnhxRU1zSUlRTUxJQU1MRVFBZ0FDQUJRZS8yQ0VHdStRZ1FrQk1MUUFFRGZ3SkFJQUVnQVNnQ0FDZ0NXQkVBQUNJRVJRMEFJQUFvQWhRaUJTQUVLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBSUFFUThRRWhBd3NnQXd2Q0FRRUJmeU1BUVJCcklnTWtBQ0FESUFBb0FoZzJBZ3dnQXlBQUtBSW9OZ0lJSUFNZ0FDZ0NMRFlDQkNBREtBSU1JQUZCQm5RZ0FVRUNkbXBxUWNlTW9vNEdheUFCY3lJQklBQW9BaHdnQVVFR2RDQUJRUUoyYW1wQng0eWlqZ1pyY3lJQklBQXRBQ0FnQVVFR2RDQUJRUUoyYW1wQng0eWlqZ1pyY3lJQklBQXRBQ0VnQVVFR2RDQUJRUUoyYW1wQng0eWlqZ1pyY3lBQVFTUnFJQU5CQ0dvZ0EwRUVhaENtRnlFQklBQW9BaFFnQVNBQ0VNMEVJUUFnQTBFUWFpUUFJQUFMdndFQkJYOGpBRUdnQVdzaUFpUUFJQUpCR0dvUXpnRWlBMEcyK1FnUURpRUZJQUpCQ0dvaUJDQUJLQUlVSWdZZ0JpZ0NBQ2dDREJFQ0FDQUZJQVFRRWtIMDdRd1FEaUFCS0FJWUVDRkI5TzBNRUE0Z0FTZ0NIQkFoUWZUdERCQU9JQUV0QUNBUTNSUkI5TzBNRUE0Z0FTMEFJUkRkRkVIMDdRd1FEaUFCS0FJa0VDRkI5TzBNRUE0Z0FTZ0NLQkFoUWZUdERCQU9JQUVvQWl3UUlVSHY5Z2dRRGhvZ0JCQVBHaUFBSUFOQkJHb1FRaUFERUxzQkdpQUNRYUFCYWlRQUM1c0JBUU4vQWtBZ0FTQUJLQUlBS0FKSUVRQUFJZ05GRFFBZ0FDZ0NHQ0FES0FJWVJ3MEFJQUFvQWh3Z0F5Z0NIRWNOQUNBQUxRQWdJQU10QUNCSERRQWdBQzBBSVNBRExRQWhSdzBBSUFBb0FpUWdBeWdDSkVjTkFDQUFLQUlvSUFNb0FpaEhEUUFnQUNnQ0xDQURLQUlzUncwQUlBQW9BaFFpQlNBREtBSVVJQUlnQlNnQ0FDZ0NDQkVFQUVVTkFDQUFJQUVROFFFaEJBc2dCQXROQVFOL0FrQWdBU0FCS0FJQUtBSkFFUUFBSWdSRkRRQWdBQ2dDR0NBRUtBSVlSdzBBSUFBb0FoUWlCU0FFS0FJVUlBSWdCU2dDQUNnQ0NCRUVBRVVOQUNBQUlBRVE4UUVoQXdzZ0F3dE5BUU4vQWtBZ0FTQUJLQUlBS0FJNEVRQUFJZ1JGRFFBZ0FDZ0NHQ0FFS0FJWVJ3MEFJQUFvQWhRaUJTQUVLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBSUFFUThRRWhBd3NnQXdzOUFRSi9Jd0JCa0FGcklnSWtBQ0FDUVFocUVNNEJJZ05CeVBrQUVBNGdBU2dDRkJBaEdpQUFJQU5CQkdvUVFpQURFTHNCR2lBQ1FaQUJhaVFBQ3pVQkFYOUJBQ0VDQWtBZ0FTQUJLQUlBS0FJd0VRQUFJZ05GRFFBZ0FDZ0NGQ0FES0FJVVJ3MEFJQUFnQVJEeEFTRUNDeUFDQ3pnQUlBQXRBQmdnQUNnQ0ZDQUJRUVowSUFGQkFuWnFha0hIaktLT0Jtc2dBWE1pQUVFR2RISWdBRUVDZG1wQng0eWlqZ1pySUFCekMwc0JBbjhqQUVHUUFXc2lBaVFBSUFKQkNHb1F6Z0VpQTBHTnhnRkIreW9nQVMwQUdCc1FEa0hiUHhBT0lBRW9BaFFRSVJvZ0FDQURRUVJxRUVJZ0F4QzdBUm9nQWtHUUFXb2tBQXRDQVFGL1FRQWhBZ0pBSUFFZ0FTZ0NBQ2dDS0JFQUFDSURSUTBBSUFBb0FoUWdBeWdDRkVjTkFDQUFMUUFZSUFNdEFCaEhEUUFnQUNBQkVQRUJJUUlMSUFJTEJnQkJnSThUQ3hRQUlBQkJCR3BCQUNBQktBSUVRZGFxRFVZYkN6MEFJQUVvQWhSQnh3QkhCRUJCOTk4RFFjYWxBa0hWQlVIYzhRZ1FBQUFMSUFGQkFoQ1JCQ0VCSUFBb0FnUWdBVFlDQUNBQUtBSUlRUUU2QUFBTEZRQWdBVUhRamhNMkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQjBJNFRFS0VCQ3dzQUlBQkI1c0lGRUJRYUN4NEFJQUVnQVNnQ0FDZ0M2QUVSQUFCRkJFQkJBQThMSUFBZ0FSRHhBUXNMQUNBQVFaM2pCUkFVR2dzZUFDQUJJQUVvQWdBb0F1QUJFUUFBUlFSQVFRQVBDeUFBSUFFUThRRUxDd0FnQUVHRHp3VVFGQm9MSGdBZ0FTQUJLQUlBS0FMUUFSRUFBRVVFUUVFQUR3c2dBQ0FCRVBFQkN3c0FJQUJCMmVrQkVCUWFDeDRBSUFFZ0FTZ0NBQ2dDeUFFUkFBQkZCRUJCQUE4TElBQWdBUkR4QVFzTEFDQUFRWTdDQkJBVUdnc2VBQ0FCSUFFb0FnQW9Bc0FCRVFBQVJRUkFRUUFQQ3lBQUlBRVE4UUVMQ3dBZ0FFR3ExZ01RRkJvTEhnQWdBU0FCS0FJQUtBS29BUkVBQUVVRVFFRUFEd3NnQUNBQkVQRUJDd3NBSUFCQmsrNEVFQlFhQ3g0QUlBRWdBU2dDQUNnQ29BRVJBQUJGQkVCQkFBOExJQUFnQVJEeEFRc0tBQ0FBUWQ4L0VCUWFDeDRBSUFFZ0FTZ0NBQ2dDbUFFUkFBQkZCRUJCQUE4TElBQWdBUkR4QVFzS0FDQUFRZVkvRUJRYUN3d0FJQUFRamdRYUlBQVFId3NlQUNBQklBRW9BZ0FvQXBBQkVRQUFSUVJBUVFBUEN5QUFJQUVROFFFTEN3QWdBRUdjNWdFUUZCb0xIUUFnQVNBQktBSUFLQUpRRVFBQVJRUkFRUUFQQ3lBQUlBRVE4UUVMSFFBZ0FTQUJLQUlBS0FJZ0VRQUFSUVJBUVFBUEN5QUFJQUVROFFFTEJnQkI0UGNTQ3hRQUlBQkJCR3BCQUNBQktBSUVRZnFrRFVZYkMxVUJBbjhnQVNnQ0FDRUNJQUFvQWdnUXp4Y2dBQ2dDQkNJREtBSUFJZ0ZOQkVCQnZDSkI1NjBDUWFvQlFkenhDQkFBQUFzZ0FpZ0NBQ0VDSUFBb0FnZ2hBQ0FESUFGQkFXbzJBZ0FnQUNBQkVEZ2dBa1lMRlFBZ0FVR3c5eEkyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCc1BjU0VLRUJDd1lBUWVqM0Vnc1VBQ0FBUVFScVFRQWdBU2dDQkVIcHBRMUdHd3VTQ0FFTGZ5TUFRU0JySWdNa0FDQUFLQUljSVFZZ0FTZ0NBQ0lCS0FJVUlRY0NRQ0FBS0FJVUxRQUFCRUFnQVJEVkZ3MEJDd0pBSUFBb0FoQW9BZ0JGRFFBZ0FSQ3NEZ1JBSUFOQkFEWUNIQ0FBS0FJUUtBSUFJUUlnQXlBQk5nSUlJQU5Cc1BjU05nSUFJQU1nQXpZQ0VDQURJQU5CSEdvMkFnUWdBaWdDSkNFRUlBSW9BaUFoQWdOQUFrQWdBaUFFUmlJRkRRQWdBaWdDQUVGK2NVRUNSd1JBSUFNZ0FpZ0NHQ0lJSUFKQkRHb2dDQnNvQWdBUWlnSkZEUUVMSUFKQkhHb2hBZ3dCQ3dzZ0F4QVdJQVZGRFFFTUFnc2dBUkRVQ2cwQUlBRW9BaXdnQVNnQ01FY05BQ0FESUFZb0FoUVExUW9vQWpBaUJEWUNBQ0FBS0FJRUlRSUNRQ0FFQkVBZ0EwR01nQlEyQWh3Z0FpQURRUnhxSWdRUTN3SWdBQ2dDQkNFSUlBTWhEQ0FHS0FJVUVOOElJZ1VoQ3lNQVFTQnJJZ0lrQUNBQ1FnQTNBaFFnQWtJQU53SU1JQUpCOFBRU05nSUlJQVVnQWtFSWFpSUpFSzBESWdvRWZ5QUZJQW9RNlFFRlFRQUxJUVVnQ1JEWEJSb2dBa0VnYWlRQUlBd2dDeUFGRUswRE5nSWNJQWdnQkJEZkFpQUFLQUlFSVFJZ0F5QUdLQUlVRUxBR05nSWNJQUlnQkJEZkFpQUFLQUlFSUFNUTNnSWdBQ2dDQkNFQ0lBTkI2QUEyQWh3Z0FpQUVFTjhDREFFTElBTkJ2WUlFTmdJY0lBSWdBMEVjYWhEZkFnc2dBQ2dDRUVFQU5nSUFDMEVCSVFJQ1FBSkFBa0FDUUNBSFFmVUJhdzRFQXdFQkFnQUxJQWRCQ0VZZ0IwRTdSbklnQjBHOUFrWnlEUUlMUVFBaEFnc2dBQ2dDR0NBQ09nQUFDd0pBSUFBdEFBZ0VRRUVBSVFJQ1FDQUJLQUlVRFFBZ0FTMEFHQTBBSUFFdEFCa05BQ0FCS0FJZ0lBRW9BaVJHSVFJTElBSU5BUXNDUUNBQktBSTRJQUFvQWd3aUFpZ0NBRVlFUUNBQktBSThJQUlvQWdSR0RRRUxJQUFvQWhRdEFBQU5BQUpBSUFBb0FoZ3RBQUFFUUNBR0tBSVVFTlVLS0FJc1JRMEJDeUFHS0FMSUJDSUNFSG9oQlNBR0tBSVVFTEFHSVFnZ0FrRUNFSkVFSVFrZ0FDZ0NCQ0VHSXdCQlFHb2lBaVFBSUFFb0Fqd2hDaUFCS0FJNElRUWdBa0VGTmdJc0lBSkJGMEVZSUFRYk5nSWtJQUlnQ1RZQ0lDQUNJQWcyQWh3Z0FpQUZOZ0lZSUFKQmpJQWNRWXlBR0NBS0cwR01nQlFnQkJzMkFoUWdBaUFDUVJScU5nSW9JQUlnQWlrREtEY0RDQ0FDUVRCcUlBSkJDR29RNXdNaEJDQUdJQVlvQWdRZ0JDZ0NBQ0FFS0FJRUVOSUtBa0FnQVNnQ09DSUZSUTBBSUFJZ0JUWUNGQ0FHSUFKQkZHb1Ezd0lnQVNnQ1BDSUZSUTBBSUFJZ0JUWUNGQ0FHSUFKQkZHb1Ezd0lMSUFRUU1ob2dBa0ZBYXlRQUN5QUFLQUlNSUFFcEFqZzNBZ0FMSUFFZ0FDZ0NCQkRUQ2dzZ0FDZ0NGRUVBT2dBQUFrQUNRQ0FIRUlvT0RRQWdBUkRVQ2cwQUlBZEJmbkZCOWdGR0JFQWdBQ2dDRkVFQk9nQUFEQUVMSUFFUXJBNUZEUUlNQVF0QkFDRUJDeUFBS0FJUUlBRTJBZ0FMSUFOQklHb2tBQXN6QUNBQlFmajJFallDQUNBQklBQXBBZ1EzQWdRZ0FTQUFLUUlNTndJTUlBRWdBQ2tDRkRjQ0ZDQUJJQUFvQWh3MkFod0xPd0VCZjBFZ0VCVWlBVUg0OWhJMkFnQWdBU0FBS1FJRU53SUVJQUVnQUNrQ0REY0NEQ0FCSUFBcEFoUTNBaFFnQVNBQUtBSWNOZ0ljSUFFTEhRQWdBU0FCS0FJQUtBSVlFUUFBUlFSQVFRQVBDeUFBSUFFUThRRUxCZ0JCNFBRU0N4UUFJQUJCQkdwQkFDQUJLQUlFUWVPaERVWWJDeFVBSUFGQnNQUVNOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRYkQwRWhEWEFRc0dBRUdnOUJJTEZBQWdBRUVFYWtFQUlBRW9BZ1JCL1o4TlJoc0xGUUFnQVVIdzh4STJBZ0FnQVNBQUtBSUVOZ0lFQ3dzQUlBQkI4UE1TRU5jQkN3WUFRZUR6RWd0QkFRSi9Jd0JCRUdzaUFTUUFJQUVnQUNnQ0RDSUNJQUlvQWdBb0Fod1JBQUEyQWd3Z0FFRUlhaUFCUVF4cUlBQkJFR29RdndjaEFDQUJRUkJxSkFBZ0FBc1VBQ0FBUVFScVFRQWdBU2dDQkVHZ25nMUdHd3NWQUNBQlFiRHpFallDQUNBQklBQW9BZ1EyQWdRTEN3QWdBRUd3OHhJUW53TUxCZ0JCb1BNU0N4UUFJQUJCQkdwQkFDQUJLQUlFUWN5Y0RVWWJDeFVBSUFGQjhQSVNOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRZkR5RWhDZkF3c1VBQ0FBS0FJTUlnQWdBQ2dDQUNnQ0dCRUFBQXNHQUVIZzhoSUxGQUFnQUVFRWFrRUFJQUVvQWdSQmdwc05SaHNMRHdBZ0FDZ0NCQ0FCS0FJQUVPRVhDeFVBSUFGQnFQSVNOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRYWp5RWhEWEFRc1VBQ0FBS0FJTUlnQWdBQ2dDQUNnQ0ZCRUFBQXNIQUNBQUtBSVFDd1lBUVpUeUVnc1VBQ0FBUVFScVFRQWdBU2dDQkVHb2x3MUdHd3M3QVFKL0lBQW9BZ1FoQWlBQUtBSU1JQUFvQWdnaUFFRUJkV29pQXlBQktBSUFJQUJCQVhFRWZ5QURLQUlBSUFKcUtBSUFCU0FDQ3hFQ0FBc05BQ0FBSUFGQjBQRVNFTllCQ3dzQUlBQkIwUEVTRU5FU0N4SUFJQUFvQWd4QkFDQUFLQUlRSUFGTEd3c0dBRUhBOFJJTEZBQWdBRUVFYWtFQUlBRW9BZ1JCdHBVTlJoc0xGQUFnQUNnQ0JDSUFJQUFvQWdCQkFXbzJBZ0FMRlFBZ0FVR0k4UkkyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCaVBFU0VOY0JDd1lBUWZqd0Vnc1VBQ0FBUVFScVFRQWdBU2dDQkVHSWt3MUdHd3NXQUNBQUtBSUVJQUVvQWdBZ0FpZ0NBQkRqRjBFQkMzNEJBbjhqQUVFUWF5SURKQUFnQXlBQUtBSUlJZ0lnQVNBQ0tBSUFLQUlZRVFFQU5nSU1JQU1nQUNnQ0RDSUNJQUVnQWlnQ0FDZ0NJQkVCQURZQ0NDQUJLQUlNSWdFUXFnTWlBaUFES0FJTUlBTW9BZ2dnQUNnQ0VCRG5GeG9nQVNBQ0VDZ2dBU0FCS0FJWVFRRnFOZ0lZSUFJaEFDQURRUkJxSkFBZ0FBc1ZBQ0FCUWNEd0VqWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSEE4QklRMXdFTHhnUUNDSDhDZlNNQVFSQnJJZ1lrQUNBQ0VQUURJUWNnQUFKL0FrQWdBU2dDQkNJRVJRMEFJQUVvQWdBQ2Z5QUVRUUZySUFkeElBUnBJZ2xCQVUwTkFCb2dCeUFFSUFkTERRQWFJQWNnQkhBTElnaEJBblJxS0FJQUlnVkZEUUFnQkVFQmF5RUtJQUlvQWdBaEN5QUpRUUZMSVFrRFFDQUZLQUlBSWdWRkRRRWdCeUFGS0FJRUlnSkhCRUFDUUNBSlJRUkFJQUlnQ25FaEFnd0JDeUFDSUFSSkRRQWdBaUFFY0NFQ0N5QUNJQWhIRFFJTElBVW9BZ2dnQzBjTkFBdEJBQXdCQ3lBR0lBRWdCeUFERVBRSUFrQkJBQ0FFSUFFb0FneEJBV3F6SWd3Z0FTb0NFQ0lOSUFTemxGNGJEUUFnQVNBRUlBUkJBV3R4UVFCSElBUkJBMGx5SUFSQkFYUnlJZ0lDZnlBTUlBMlZqU0lNUXdBQWdFOWRJQXhEQUFBQUFHQnhCRUFnREtrTUFRdEJBQXNpQXlBQ0lBTkxHeEREQVNBQktBSUVJZ1FnQkVFQmEzRkZCRUFnQkVFQmF5QUhjU0VJREFFTElBUWdCMHNFUUNBSElRZ01BUXNnQnlBRWNDRUlDd0pBSUFoQkFuUWlBeUFCS0FJQWFpZ0NBQ0lDUlFSQUlBWW9BZ0FnQVNnQ0NEWUNBQ0FCSUFZb0FnQTJBZ2dnQVNnQ0FDQURhaUFCUVFocU5nSUFJQVlvQWdBaUFpZ0NBQ0lEUlEwQklBTW9BZ1FoQlFKQUlBUWdCRUVCYXlJRGNVVUVRQ0FESUFWeElRVU1BUXNnQkNBRlN3MEFJQVVnQkhBaEJRc2dBU2dDQUNBRlFRSjBhaUFDTmdJQURBRUxJQVlvQWdBZ0FpZ0NBRFlDQUNBQ0lBWW9BZ0EyQWdBTElBWW9BZ0FoQlNBR1FRQTJBZ0FnQVNBQktBSU1RUUZxTmdJTUlBWVExdzVCQVFzNkFBUWdBQ0FGTmdJQUlBWkJFR29rQUFzR0FFR284QklMRkFBZ0FFRUVha0VBSUFFb0FnUkIrWThOUmhzTERnQWdBQ2dDQkNBQkVKWVBRUUVMRlFBZ0FVSHc3eEkyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCOE84U0VOY0JDNllCQVFSL0l3QkJJR3NpQWlRQUlBSWdBQ2dDSURZQ0dDQUNJQUFwQWhnM0F4QWdBaUFBS1FJUU53TUlJQUVvQWdBaEFTTUFRUkJySWdRa0FDQUJFQndnQVNBQktBSU1RUUZxSWdNMkFnd2dCQ0FETmdJSUlBRkJqQUZxSWdNUXl3UWlCU0FCS0FJSUlBUW9BZ2dnQWtFSWFpQUFLUU1vSUFBb0FqQVEzZ29hSUFNZ0JSQW9JQU1nQXlnQ0dFRUJhallDR0NBRklRQWdCRUVRYWlRQUlBSkJJR29rQUNBQUN6d0JBbjhqQUVFUWF5SUJKQUFnQVNBQUtBSUVJZ0lnQWlnQ0FDZ0NZQkVBQURZQ0RDQUJRUXhxSUFCQkNHb1EvUmNoQUNBQlFSQnFKQUFnQUFzOEFRSi9Jd0JCRUdzaUFTUUFJQUVnQUNnQ0JDSUNJQUlvQWdBb0FuQVJBQUEyQWd3Z0FVRU1haUFBUVFocUVQNFhJUUFnQVVFUWFpUUFJQUFMZVFFRGZ5TUFRUkJySWdJa0FDQUNJQUFvQWdRaUFTQUJLQUlBS0FKQUVRQUFOZ0lNUVJnUUZTRUJJQUlvQWd3aEF5QUJRUUEyQWhBZ0FVSUFOd0lJSUFFZ0F6WUNCQ0FCUVlqdEVqWUNBQ0FCSUFNb0FoUTJBaFFnQVVFSWFpQUJLQUlNSUFBb0FnZ2dBQ2dDREJEZENpQUNRUkJxSkFBZ0FRdE1BUU4vSUFBZ0FDZ0NBQ2dDWUJFQUFDSUFLQUlFSVFJZ0FDZ0NBQ0VBQTBBZ0FDQUNSaUlEUlFSQUlBQW9BZ0FoQVNBQVFRUnFJUUFnQVNBQktBSUFLQUpjRVFBQURRRUxDeUFEQzNrQkEzOGpBRUVRYXlJQ0pBQWdBaUFBS0FJRUlnRWdBU2dDQUNnQ09CRUFBRFlDREVFWUVCVWhBU0FDS0FJTUlRTWdBVUVBTmdJUUlBRkNBRGNDQ0NBQklBTTJBZ1FnQVVHWTZ4STJBZ0FnQVNBREtBSVVOZ0lVSUFGQkNHb2dBU2dDRENBQUtBSUlJQUFvQWd3UTNRb2dBa0VRYWlRQUlBRUxQQUVDZnlNQVFSQnJJZ0VrQUNBQklBQW9BZ1FpQWlBQ0tBSUFLQUl3RVFBQU5nSU1JQUZCREdvZ0FFRUlhaEQvRnlFQUlBRkJFR29rQUNBQUN6d0JBbjhqQUVFUWF5SUJKQUFnQVNBQUtBSUVJZ0lnQWlnQ0FDZ0NLQkVBQURZQ0RDQUJRUXhxSUFCQkNHb1FnQmdoQUNBQlFSQnFKQUFnQUF0Q0FRTi9JQUFnQUNnQ0FDZ0NZQkVBQUNJQUtBSUVJUUVnQUNnQ0FDRUFBMEFnQUNBQlJpSUNSUVJBSUFBb0FnQWhBeUFBUVFScUlRQWdBMFVOQVFzTElBSUxRQUVDZnlNQVFSQnJJZ0VrQUNBQklBQW9BZ1FpQWlBQ0tBSUFLQUlnRVFBQU5nSU1RUmdRRlNBQktBSU1JQUF0QUJRUS9CY2hBQ0FCUVJCcUpBQWdBQXNLQUNBQVFRUnFFSUVZQ3dvQUlBQkJCR29ROWc0TERRQWdBQ2dDQkNBQUtBSUlSZ3QvQVFGL0l3QkJNR3NpQWlRQUlBSWdBQ2dDSURZQ0tDQUNJQUFwQWhnM0F5QWdBaUFBS1FJUU53TVlJQUlnQVNBQUtBSWtFSmNCTmdJVUlBSWdBU0FBS0FJb0VKY0JOZ0lRSUFJZ0FTQUFLQUlzRUpjQk5nSU1JQUVvQWdBZ0FrRVlhaUFDUVJScUlBSkJFR29nQWtFTWFoRDNGeUVBSUFKQk1Hb2tBQ0FBQ3dzQUlBQkI2TVFERUJRYUM3QUNBUWwvSXdCQlFHb2lBaVFBSUFJZ0FDZ0NJRFlDT0NBQ0lBQXBBaGczQXpBZ0FpQUFLUUlRTndNb0lBSWdBU0FBS0FJa0VNOEROZ0lrSUFJZ0FTQUFRU2hxRU9JRU5nSWdJQUlnQVNBQUtBSXNFSmNCTmdJY0lBSkJDR29pQXlBQklBQkJNR29ROGdVZ0FTZ0NBQ0VBSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBVFlDRENBRUlBRTJBZ2dqQUVFUWF5SUJKQUFnQUVHTUFXb2lCUkMzQkNFR0lBSW9BaHdoQnlBQ0tBSWdJUWdnQWlnQ0pDRUpJQVFvQWdnaENpQUFLQUlJSVFBZ0FTQURRUWhxTmdJSUlBRWdBeWdDQ0NBRFJ6b0FEQ0FHSUFBZ0NpQUNRU2hxSUFrZ0NDQUhJQUZCQ0dvUWloZ2FJQVVnQmhBb0lBVWdCU2dDR0VFQmFqWUNHQ0FCUVJCcUpBQWdCaUVBSUFSQkVHb2tBQ0FERUtvQklBSkJRR3NrQUNBQUM0d2JBUWwvSXdCQk1Hc2lCQ1FBSUFBZ0FDZ0NGRUVCYWpZQ0ZBSkFBbjhDUUFKQUFrQUNmMEVCSVFJQ1FBSkFBa0FDUUNBQkx3RUdJZ1ZCQ0dzT0JRTUNBZ0lBQVF0QkFDRUNJQUVvQWdoQkNrY05BaUFCS0FJQUtBSVFRZWNBYTBFQ1NRd0RDeUFGUWIwQ1JnMEJDMEVBSVFJTElBSUxCRUFnQUNnQ0JDSUZRUUU2QUtRR0lBQW9BaXdoQWlBQVFRQTJBaXdnQkNBQ0JIOGdBaUFDS0FJQUtBSUVFUU1BSUFBb0FnUUZJQVVMS0FJVU5nSVlJQUJCTUdvaEJRSkFJQUJCSUdvaUFDZ0NCQ0FBS0FJSVNRUkFJQUFnQUNnQ0JDQUVLQUlZSUFFZ0JSRFRGMEZBYXpZQ0JBd0JDeU1BUVNCcklnTWtBQ0FEUVFocUlBQWdBQ2dDQkNBQUtBSUFhMEVHZFVFQmFoQ21EaUFBS0FJRUlBQW9BZ0JyUVFaMUlBQkJDR29ReXhjaUFpZ0NDQ0FFS0FJWUlBRWdCUkRURnhvZ0FpQUNLQUlJUVVCck5nSUlJQUFnQWhES0Z5QUNFTWtYSUFOQklHb2tBQXNnQUNnQ0JCb01BUXNnQkNBQkx3RUdJZ1UyQWl3Q1FDQUZRUXhIRFFBZ0FTZ0NDQkRSQlVVTkFDQUJLQUlBSWdJb0FoQWhBd0pBQWtBZ0FTZ0NDRUVJYXc0REFBRUFBUXNDUUFKQUlBTkJGMnNPQWdBQkF3c2dBQ0FCTHdFRVFRZFBCSDRnQWpVQ0dFSWdoZ1ZDQUFzZ0FqVUNGSVEzQWpCQkFTRUJJQUFvQWdSQkFUb0FwQVlNQndzZ0FFSUFOd0l3UVFFaEFTQUFLQUlFUVFFNkFLUUdEQVlMQWtBQ1FDQURRUmRyRGdJQUFRSUxJQUFnQVM4QkJFRUhUd1IrSUFJMUFoaENJSVlGUWdBTElBSTFBaFNFTndJd1FRRWhBU0FBS0FJRVFRRTZBS1FHREFZTElBQkNBRGNDTUVFQklRRWdBQ2dDQkVFQk9nQ2tCZ3dGQ3lBRUFuOUJ3QUFRRlNFQ0lBQW9BZ1FvQWhRaEJ5TUFRUkJySWdNa0FDQUNRZ0EzQWdRZ0FpQUhOZ0lRSUFKQkFEb0FEQ0FDUWZUZ0VqWUNBQ0FDSUFFdkFRWTJBaFFnQWlBQktBSU1RUUJIT2dBWUlBSWdBU2dDRUVFQVJ6b0FHU0FIRUwwSElRY2dBa0VBTmdJb0lBSkNBRGNDSUNBQ0lBYzJBaHdnQWtFc2FpQUFRU0JxSWdjUXBRSWFJQUpDQURjQ09DQUNRU0JxSWdrZ0FTOEJHQkN0RGdOQUlBRXZBUmdnQmswRVFBSkFJQUlRMVJjRVFDQUhLQUlBSUFjb0FnUkhEUUVMSUFOQkVHb2tBQ0FDREFNTEJTQURJQUVvQWdBZ0FTZ0NGQ0FHUVFSMGFpSUlMd0VBUVFKMGFpSUtOZ0lNSUFNZ0NpQUlMd0VDUVFKMGFqWUNDQ0FKSUFoQkJHb2dBMEVNYWlBRFFRaHFFTlFYSUFaQkFXb2hCZ3dCQ3d0Qm02a0pRYXFvQWtIVUFFR0x6Z0lRQUFBTElnSTJBaWdDUUNBQ0tBSXdJZ01nQWlnQ0xFY0VRQUpBSUFBdEFEaEZEUUFnQTBGQWFoRFVDZzBBSUFJb0FqQkJRR29nQUNnQ0JDZ0NGQkRTRnlFR0lBQW9BaXdoQXlBQUlBWTJBaXdnQXdSL0lBTWdBeWdDQUNnQ0JCRURBQ0FBS0FJc0JTQUdDeENxRGtVTkFDQUFLQUlzSUFBb0FnUW9BaFFRc0FZUXFRNExJQWNROUFvTUFRc2dBQ2dDTENJRFJRMEFJQU1nQUVFd2FoQ25EaUFBS0FJc0lRZ0NRQ0FDUVN4cUlnTW9BZ1FnQXlnQ0NFY0VRQ0FESUFNb0FnUWdDQkRYQ2tGQWF6WUNCQXdCQ3lNQVFTQnJJZ2trQUNBSlFRaHFJQU1nQXlnQ0JDQURLQUlBYTBFR2RVRUJhaENtRGlBREtBSUVJQU1vQWdCclFRWjFJQU5CQ0dvUXl4Y2lCaWdDQ0NBSUVOY0tHaUFHSUFZb0FnaEJRR3MyQWdnZ0F5QUdFTW9YSUFZUXlSY2dDVUVnYWlRQUN5QUNLQUl3UVVCcUlBQW9BZ1FvQWhRUTBoY2hCaUFBS0FJc0lRTWdBQ0FHTmdJc0lBTUVmeUFESUFNb0FnQW9BZ1FSQXdBZ0FDZ0NMQVVnQmdzUXFnNUZEUUFnQUNnQ0xDQUFLQUlFS0FJVUVMQUdFS2tPQ3lBQUtBSUlJUU1nQUN3QUV5RUdJQUFvQWhRaENDQUVRZ0EzQWh3Z0JDQUlOZ0lZSUFNZ0FFRUlhaUFHUVFCSUd5RURBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRlFUWnJEZ01BQXdFQ0N5QUFLQUlZUlEwRElBQW9BZ0FnQXlBRVFSaHFRY1hQQWhDc0JrRUFEQTBMSUFBb0FoZ2lCVVVFUUNBQUtBSUFJQU1nQkVFWWFrR24wd0lRckFaQkFBd05DeUFBS0FJY0JFQWdBQ2dDQUNBRElBUkJHR3BCL3B3REVLd0dRUUFNRFFzZ0JFRUFOZ0lvSUFVb0FtQWhBU0FGSUFJMkFtQWdBUVJBSUFFZ0FTZ0NBQ2dDQkJFREFBc2dBQ2dDR0NFQklBQkJBRFlDR0NBQUtBSUVJQUVReHhjZ0FFRVlha0VBRVBFS0RBc0xJQVZCK0FGR0RRa0xJQVVRaWc0aENDQUFLQUlZSVFZZ0NBUkFJQVpGQkVBZ0FDZ0NBQ0FESUFSQkdHcEJoTThDRUt3R1FRQU1EQXNnQUNnQ0hDSUJSUVJBSUFBb0FnQWdBeUFFUVJocVFiaWNBeENzQmtFQURBd0xJQUJCSEdvaEJTQUFLQUl3QkVBZ0FpQUFRVEJxRUtjT0lBVW9BZ0FoQVFzZ0JFRUFOZ0lvSUFJZ0FVRU1haEQ0QVNBQUtBSWNJUUVnQUVFQU5nSWNJQUFvQWhnZ0FSRGJGeUFGUVFBUTJBZ2dBRUlBTndJd0lBQW9BaXdoQVNBQVFRQTJBaXdnQVFSQUlBRWdBU2dDQUNnQ0JCRURBQXNnQnhEMENnd0tDeUFHUlFSQUlBQW9BaHdOQWdKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRlFRSnJEaEFIQndjSUNBY0lDQUlEQ0FnRUJRWUJBQXNnQlVITEFrWU5CU0FGUVpVcVJ3MEhJQUFvQWdRaEFTQUVRUUEyQWlnZ0FTZ0M2QUVoQUNBQklBSTJBdWdCSUFCRkRSQWdBQ0FBS0FJQUtBSUVFUU1BREJJTElBSWdBQ2dDQkVFY2FoRDRBUXdQQ3lBQ0lBQW9BZ1JCNEFCcUVQZ0JEQTRMSUFJZ0FDZ0NCRUdrQVdvUStBRU1EUXNnQUNnQ0JDRUJJQVJCQURZQ0tDQUJLQUxrQVNFQUlBRWdBallDNUFFZ0FFVU5EQ0FBSUFBb0FnQW9BZ1FSQXdBTURnc2dBaUFBS0FJRVFmQUJhaEQ0QVF3TEN5QUNJQUFvQWdSQnRBSnFFUGdCREFvTElBSWdBQ2dDQkVINEFtb1ErQUVNQ1FzZ0JVRUZhMEVCVFFSQUlBSWdBQ2dDQkVHOEEyb1ErQUVNQ1FzZ0JVSEtBa1lFUUNBQ0lBQW9BZ1JCZ0FScUVQZ0JEQWtMSUFVUTRoY0VRQ0FDSUFBb0FnUkJpQVZxRVBnQkRBa0xJQVVRcFE0RVFDQUNJQUFvQWdSQnpBVnFFUGdCREFrTEFrQUNRQ0FGUWVBclJpQUZRU2xyUVF4SmNpQUZRVHRHY2tVRVFDQUZRUXhHRFFFZ0JVRUJSdzBDQ3lBQ0lBQW9BZ1JCekFWcUVQZ0JEQW9MSUFFb0FnZ1EwUVVFUUNBQ0lBQW9BZ1JCeEFScUVQZ0JEQW9MSUFFb0FnZ1FzQWRGRFFBZ0FDZ0NCQ0lBS0FLTUJpQUFLQUtRQmlJQlJnUkFJQUlnQUVITUJXb1ErQUVNQ2dzZ0FVRUVheWdDQUNFQkl3QkJFR3NpQUNRQUlBQWdBallDQ0NBQlFlUUFhaUFBUVFocUVKY0ZJQUFvQWdnaEFTQUFRUUEyQWdnZ0FRUkFJQUVnQVNnQ0FDZ0NCQkVEQUFzZ0FFRVFhaVFBREFrTElBQW9BZ0FnQXlBRVFSaHFRYkxRQnlBRVFTeHFFTHNIUVFBTUN3c0NRQ0FGUWY3L0EzRkI5Z0ZHQkVBZ0FFSUFOd0l3REFFTElBQW9BakJGRFFBZ0FpQUFRVEJxRUtjT0N3SkFJQVZCREVZRVFDQUJLQUlJRU5FRkJFQWdBU2dDQUNnQ0VDRUZBa0FDUUFKQUlBRW9BZ2hCQ0dzT0F3QUNBUUlMQWtBQ1FBSkFJQVZCSEdzT0FnQUJBZ3NnQUNnQ0hDSUJSUVJBSUFJZ0FDZ0NHRUVVYWhENEFRd1BDeUFDSUFGQkRHb1ErQUVNRGdzZ0FDZ0NIQ0lCUlFSQUlBSWdBQ2dDR0VFVWFoRDRBUXdPQ3lBQ0lBRkJER29RK0FFTURRc2dBQ2dDQUNBRElBUkJHR3BCM3M4Q0lBUkJMR29RdXdkQkFBd1BDMEVCSUFWMFFZQ0FnSXdEY1VVZ0JVRWRTM0lOQ1F3S0N3SkFBa0FDUUNBRlFSeHJEZ0lBQVFJTElBQW9BaHdpQVVVRVFDQUNJQUFvQWhoQkZHb1ErQUVNRFFzZ0FpQUJRUXhxRVBnQkRBd0xJQUFvQWh3aUFVVUVRQ0FDSUFBb0FoaEJGR29RK0FFTURBc2dBaUFCUVF4cUVQZ0JEQXNMSUFBb0FnQWdBeUFFUVJocVFmRFFBaUFFUVN4cUVMc0hRUUFNRFFzZ0FDZ0NIQ0lCUlEwRkRBRUxJQUFvQWh3aUFVVU5Bd3NnQWlBQlFReHFFUGdCREFjTFFmQUFFQlVoQVNBRUtBSW9JUUlnQkVFQU5nSW9JQUZDQURjQ0JDQUJJQUkyQWdBZ0FVSUFOd0lrSUFGQkZHb2lBa0gwNEJJMkFnQWdBVUVBTmdJTUlBRkJBRHNCTENBQlFUQnFRUUJCSkJCNUdpQUJRUUU2QUNBZ0FTQUNOZ0ljSUFFZ0FqWUNHQ0FCUWdBM0FsUWdBVUdrNFJJMkFoQWdBVUlBTndKY0lBRkNBRGNDWkNBQlFRQTJBbXdnQkVFQU5nSUlJQUJCR0dvZ0FSRHhDaUFFUVFocUVOa0lHZ3dJQ3lBQUtBSUFJUUFnQkVFQU5nSVFJQVJDdHdFM0F3Z2dBRUVCUWJ1bUFpQUVRUWhxUWRQSEFSRFBCRUVCRUFNQUN5QUZRVGRHRFFFTElBQW9BZ0FnQXlBRVFSaHFRZVdiQXlBRVFTeHFFTHNIUVFBTUJnc2dBQ2dDR0NFQkl3QkJFR3NpQUNRQUlBQWdBallDQ0NBQlFRUnFJQUJCQ0dvUWx3VWdBQ2dDQ0NFQklBQkJBRFlDQ0NBQkJFQWdBU0FCS0FJQUtBSUVFUU1BQ3lBQVFSQnFKQUFNQWdzZ0JVSGxBRVlOQUNBQUtBSUFJQU1nQkVFWWFrSHcwQUlnQkVFc2FoQzdCMEVBREFRTElBQW9BaHdpQVVVRVFDQUFLQUlBSUFNZ0JFRVlha0djbXdNZ0JFRXNhaEM3Qnd3REN5QUNJQUZCREdvUStBRUxRUUVoQVF3REN5QUFLQUlZUlFSQUlBQW9BZ0FnQXlBRVFSaHFRYXpQQWhDc0JrRUFEQUlMSUFBb0Fod0VRQ0FBS0FJQUlBTWdCRUVZYWtIam5BTVFyQVpCQUF3Q0MwSE1BQkFWSVFFZ0JDZ0NLQ0VDSUFSQkFEWUNLQ0FCSUFJMkFnUWdBVUVBTmdJQUlBRkNBRGNDSENBQlFReHFJZ0pCOU9BU05nSUFJQUZCQURzQkpDQUJRU2hxUVFCQkpCQjVHaUFCUVFFNkFCZ2dBU0FDTmdJVUlBRWdBallDRUNBQlFhVGhFallDQ0NBRVFRQTJBZ2dnQUVFY2FpQUJFTmdJSUFSQkNHb1F1Z1lhQzBFQkN5RUJJQVFvQWlnaEFDQUVRUUEyQWlnZ0FFVU5BQ0FBSUFBb0FnQW9BZ1FSQXdBTElBUkJNR29rQUVFQVFYd2dBUnNMTEFBZ0FDZ0NCQ0lBSUFZMkFoQWdBQ0FGTmdJTUlBQWdCRFlDQ0NBQUlBTTJBZ1FnQUNBQ05nSUFRUUFMQmdCQm9PUVNDeFFBSUFCQkJHcEJBQ0FCS0FJRVFhNkpEVVliQ3dZQVFaL3BBQXNzQVFGL0lBQW9BZ1FpQWkwQUFFVUVRQ0FBS0FJSUlBRW9BZ0FvQWdBUWlnSVBDeUFDUVFBNkFBQkJBUXNWQUNBQlFlampFallDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUhvNHhJUW9RRUxCZ0JCMk9NU0N4UUFJQUJCQ0dwQkFDQUJLQUlFUWJDSERVWWJDeEVBSUFCQkNHb2dBU2dDQUJEQkJrRUJDdzBBSUFCQkNHb1FGaUFBRUI4TEdRQWdBVUdnNHhJMkFnQWdBVUVJYWlBQVFRaHFFTkVCR2dzaEFRRi9RU0FRRlNJQlFhRGpFallDQUNBQlFRaHFJQUJCQ0dvUTBRRWFJQUVMQ1FBZ0FCQ0xHQkFmQ3pvQkFYOGpBRUVRYXlJREpBQWdBeUFBTmdJTUlBTWdBVFlDQ0NBRElBSTJBZ1FnQXlnQ0RFRUVhaUFES0FJSUVNVU9HaUFEUVJCcUpBQUxLZ0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDSUFFTUFPR2lBQUVCOGdBVUVRYWlRQUN3MEFJd0JCRUdzZ0FEWUNEQUFMQndBZ0FDZ0NMQXNIQUNBQUxRQXBDd2NBSUFBdEFDZ0xJQUVCZnlBQklBQW9BaUJKQkg4Z0FDZ0NIQ0FCUVFKMGFpZ0NBQVZCQUFzTC9nRUJCWDhqQUVFd2F5SURKQUFnQXlBQUtBSUlJZ0lnQVNBQ0tBSUFLQUlZRVFFQU5nSXNJQU5DZ0lDQWdNQUFOd0lrSUFNZ0EwRVFhallDSUNBQUtBSWNJZ0lnQUNnQ0lFRUNkR29oQkFOL0lBSWdCRVlFZnlBQktBSU1JUUVqQUVFUWF5SUNKQUFnQVJDMUJ5RUVJQU1vQWl3aEJTQUNRUUE2QUF3Z0FpQURRUkJxSWdaQkVHbzJBZ2dnQkNBRklBSkJDR29nQUMwQUtDQUFMUUFwRU1JWUdpQUJJQVFRS0NBQklBRW9BaGhCQVdvMkFoZ2dBa0VRYWlRQUlBUWhBQ0FHRUY0Z0EwRXdhaVFBSUFBRklBTWdBaWdDQUNJRklBRWdCU2dDQUNnQ0lCRUJBRFlDRENBQ1FRUnFJUUlnQTBFUWFpQURRUXhxRUhFTUFRc0xDd3dBSUFBUXZoZ2FJQUFRSHd0REFRSi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJRUWhxSWdJZ0FTZ0NEQ0lBRU9vS0VNQVlJQUJCREdvUXV4Z2dBaUFBRUlNQlFRRVF2eGdnQVVFUWFpUUFDM1lCQkg4akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFJb0Fnd1E2Z29oQVNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNnQ0RDSUVRUXhxSVFNakFFRVFheUlCSkFBZ0FTQUROZ0lNSUFFb0Fnd2lBMEVNYWhDMkdDQURFQThhSUFGQkVHb2tBQ0FFRUE4YUlBQkJFR29rQUNBQ1FSQnFKQUFMS2dFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQ0lBRUx3WUdpQUFFQjhnQVVFUWFpUUFDeDRCQW53Z0Fpc0RBQ0lEdlNBQkt3TUFJZ1M5aFVJQVdTQURJQVJoY1FzTkFDQUJLUU1BSUFJcEF3QlJDd1FBUVFFTEZRQWdBVUdNNGhJMkFnQWdBU0FBS0FJRU5nSUVDd3NBSUFCQmpPSVNFTmNCQzNNQkEzOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQUtBSUVJZ01nQVNnQ0FDSUJLQUlBRU5zRkFrQWdBaWdDQ0VFQVJ5QUNLQUlNUVFCSGNTSUVSUVJBSUFOQkFEb0FsQU1nQTBHb0JHcEIyc0VMRUJrZ0FSQXZHZ3dCQ3lBQUtBSUlJQUpCQ0dwQkJISVFKQXNnQWtFUWFpUUFJQVFMRlFBZ0FVSG80UkkyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCNk9FU0VLRUJDK1VCQVFOL0l3QkJFR3NpQXlRQUlBTWdBU2dDQUNJQk5nSU1JQUFvQWdRaEJDQUFLQUlRSWdJZ0FpZ0NBRUVCYWpZQ0FBSkFJQUVvQWhRaUFrRzlBa2NFUUNBQ1FRaEhEUUVnQUNnQ0NFRUJPZ0FBSUFGQkFSQTRJUUlnQUNnQ0RDQUNOZ0lBSUFGQkFoQTRJUUVnQUNnQ0RDQUJOZ0lFREFFTElBQW9BZ2hCQURvQUFBc2dBRUVNUVJBZ0FDZ0NDQzBBQUJ0cUtBSUFJUUVqQUVFZ2F5SUFKQUFnQUNBRFFReHFJZ0kyQWhBZ0FFRVlhaUFFUWRBRmFpQUNJQUJCRUdvUThCZ2dBQ2dDR0NFRUlBQkJJR29rQUNBRVFReHFJQUVwQWdBM0FnQWdBMEVRYWlRQUN3MEFJQUFnQVVIRTRSSVF0Z1VMQ3dBZ0FFSEU0UklRdHdVTENRQWdBQkRhRGhBZkN3a0FJQUFRa2dNUUh3c0pBQ0FBRU9VT0VCOExDQUFnQUJCdEVCOExDUUFnQUJEYUNCQWZDMTBBSXdCQkVHc2lBaVFBSUFFb0FnQWhBU0FDSUFRb0FnQTJBZ3dnQVVFRGEwRUNUd1JBSUFBb0FnUWlBRUVBT2dDVUF5QUFRYWdFYWtIUjZnWVFHU0FEUVFocUVDOUI3YlVNRUJrZ0FrRU1haEN3QXhvTElBSkJFR29rQUFzVkFDQUJRZERnRWpZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVIUTRCSVExd0VMZUFFRWZ5QUJLQUlBSVFJakFFRVFheUlFSkFBZ0FoQWNJQUlnQWlnQ0RFRUJhaUlETmdJTUlBUWdBellDQ0NBQ1FZd0JhaUlERUtNT0lnVWdBaWdDQ0NBRUtBSUlJQUpCMkFKcUVOb1pHaUFESUFVUUtDQURJQU1vQWhoQkFXbzJBaGdnQlNFQ0lBUkJFR29rQUNBQ0lBRWdBQkNSR1NBQ0M4MEJBUVYvSXdCQjRBQnJJZ0lrQUNBQ0lBQW9BaUEyQWxnZ0FpQUFLUUlZTndOUUlBSWdBQ2tDRURjRFNDQUNRU2hxSWdZZ0FTQUNRUWhxSUFCQkpHb1FWaER2QnlBQktBSUFJUUFqQUVFUWF5SUJKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUROZ0lNSUFFZ0F6WUNDQ01BUVNCcklnUWtBQ0FBUVl3QmFpSURFUHdISWdVZ0FDZ0NDQ0FCS0FJSUlBSkJ5QUJxSUFRZ0JoQldFSjBQR2lBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JFRWdhaVFBSUFVaEFDQUJRUkJxSkFBZ0FrSGdBR29rQUNBQUN3MEFJQUFnQVVFZ2FoQ0tCQm9MREFBZ0FCRCtEaG9nQUJBZkN3d0FJQUFRc2hrYUlBQVFId3NYQUNBQUtBSUlJQUVvQWdBb0FnQWdBQ2dDQkJENUdRc1ZBQ0FCUWREZEVqWUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFSFEzUklRb1FFTEZRQWdBVUdzM1JJMkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQnJOMFNFS0VCQzBnQkFuOGpBRUVnYXlJQ0pBQWdBQ2dDQ0NFRElBSkJBRFlDR0NBQ1FnQTNBeEFnQWtJQU53TUlJQU1nQWtFSWFpQUJFTm9ISVFFZ0FDZ0NCQ0FCTmdJa0lBSkJJR29rQUFzVkFDQUJRWWpkRWpZQ0FDQUJJQUFwQWdRM0FnUUxDd0FnQUVHSTNSSVFvUUVMeUFFQkIzOGpBRUVnYXlJREpBQWdBMEVBTmdJWUlBTkNBRGNERUNBRFFnQTNBd2dqQUVFUWF5SUVKQUFnQVJBY0lBRWdBU2dDREVFQmFpSUNOZ0lNSUFRZ0FqWUNDQ01BUVJCcklnSWtBQ0FCUVl3QmFpSUZFTGdlSVFZZ0FDZ0NLQ0VISUFBb0FpUWhBQ0FFS0FJSUlRZ2dBU2dDQ0NFQklBSkJBRG9BRENBQ1FjQ2NJRFlDQ0NBRklBWWdBU0FJSUFOQkNHb2dBQ0FISUFKQkNHb1EwQjRpQUJBb0lBVWdCU2dDR0VFQmFqWUNHQ0FDUVJCcUpBQWdCRUVRYWlRQUlBTkJJR29rQUNBQUM0TUNBUWQvSXdCQklHc2lBaVFBSUFBb0FnUWhBeUFDUVFBMkFoZ2dBa0lBTndNUUlBSkNBRGNEQ0NBQ0lBTWdBa0VJYWlJR0lBRVEyZ2MyQWh3Z0FrRUFOZ0lZSUFKQ0FEY0RFQ0FDUWdBM0F3Z2dBeWdDQ0NFQkl3QkJFR3NpQkNRQUlBRVFIQ0FCSUFFb0FneEJBV29pQXpZQ0RDQUVJQU0yQWdnakFFRVFheUlESkFBZ0FVR01BV29pQlJDM0JDRUhJQVFvQWdnaENDQUJLQUlJSVFFZ0EwRUFPZ0FNSUFNZ0FFRWdhallDQ0NBRklBY2dBU0FJSUFZZ0EwRUlhaUFDS0FJY0VLNFJJZ0VRS0NBRklBVW9BaGhCQVdvMkFoZ2dBMEVRYWlRQUlBUkJFR29rQUNBQUtBSUlLQUk0SUFBb0FneEJBblJxSUFFMkFnQWdBa0VnYWlRQUN3MEFJQUJCRUdvUVhpQUFFQjhMR0FBZ0FVR3czQkkyQWdBZ0FVRUVhaUFBUVFScUVLb1pDeUFCQVg5QkxCQVZJZ0ZCc053U05nSUFJQUZCQkdvZ0FFRUVhaENxR1NBQkN3a0FJQUFRcXhrUUh3dVpBd0VKZnlNQVFkQUFheUlDSkFBQ1FDQUNRVEJxSUFCQktHb1FuUXdpQlNnQ0VDSURJQU1nQlNnQ0ZFRUNkR29pQkVZTkFBTkFJQU1nQkVFRWF5SUVUdzBCSUFNb0FnQWhCaUFESUFRb0FnQTJBZ0FnQkNBR05nSUFJQU5CQkdvaEF3d0FDd0FMSUFKQkFEWUNLQ0FDUWdBM0F5QWdBaUFGUVJCcU5nSVFJQUpDQURjREdDQUZLQUlRSVFNZ0FrRUFPZ0FNSUFKQndKd2dOZ0lJSUFKQkFEb0FCQ0FDUWNDY0lEWUNBQ0FDSUFNZ0JVYzZBQlFqQUVFUWF5SURKQUFnQXlBQUtBSWtOZ0lNSXdCQkVHc2lCQ1FBSUFFUUhDQUJJQUVvQWd4QkFXb2lBRFlDRENBRUlBQTJBZ2dqQUVFZ2F5SUFKQUFnQVVHTUFXb2lCaEN6QlNFSElBTW9BZ3doQ0NBRUtBSUlJUWtnQVNnQ0NDRUJJQUlvQWhBaENpQUFRUUE2QUJ3Z0FDQUtOZ0lZSUFBZ0Fpa0NDRGNERUNBQUlBSXBBZ0EzQXdnZ0JpQUhJQUVnQ1NBQ1FSaHFJQWdnQUVFWWFpQUFRUkJxSUFCQkNHb1FxeDRpQVJBb0lBWWdCaWdDR0VFQmFqWUNHQ0FBUVNCcUpBQWdCRUVRYWlRQUlBRWhBQ0FEUVJCcUpBQWdCUkJlSUFKQjBBQnFKQUFnQUFzSkFDQUFFSzhaRUI4TEZRQWdBVUhjMnhJMkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQjNOc1NFS0VCQzBvQkFYOGpBRUVRYXlJQ0pBQWdBaUFCS0FJQU5nSU1JQUFvQWdnZ0FrRU1haENwQWtVRVFDQUFLQUlFSUFKQkRHb2lBUkNuQkNBQ0lBQW9BZ2dnQVJDV0FRc2dBa0VRYWlRQUN4VUFJQUZCdU5zU05nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFiamJFaENoQVFzckFRRi9Jd0JCRUdzaUFpUUFJQUlnQVNnQ0FEWUNEQ0FBS0FJRUlBSkJER29RcHdRZ0FrRVFhaVFBQ3hVQUlBRkJsTnNTTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUVpUYkVoRFhBUXNhQUNBQUtBSUlJQUVvQWdCR0JFQWdBQ2dDQkVFQk9nQUFDd3NWQUNBQlFmRGFFallDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUh3MmhJUW9RRUwrQUVCQTM4akFFRVFheUlDSkFBZ0FpQUJLQUlBSWdRMkFnd2dBQ2dDQkNFQkFuOGdBRUVNYWlJREtBSUFJQVJHQkVBZ0FTZ0NIQ0lCS0FJQVFRQTZBQUFnQVVHZ293b1FHU0VCSUFJZ0FDZ0NDQkRxQXpZQ0NDQUJJQUpCQ0dvUUwwSDFtUW9RR1NBREVDOG9BZ0F0QUFCQkFFY01BUXRCQVNBQklBUVFmQTBBR2lBQktBSWNJZ01vQWdCQkFEb0FBQ0FEUWFDakNoQVpJUU1nQWlBQUtBSUlFT29ETmdJSUlBTWdBa0VJYWhBdlFjV0hDaEFaSVFBZ0FpQUJLQUlrS0FJQUVHQTJBZ1FnQUNBQ1FRUnFFQzlCMDRBS0VCa2dBa0VNYWhBdlFkN09BaEFaS0FJQUxRQUFRUUJIQ3lFRElBSkJFR29rQUNBREN3MEFJQUFnQVVITTJoSVExZ0VMQ3dBZ0FFSE0yaElRNVFFTDh3TUJDWDhqQUVIQUFXc2lBaVFBSUFBb0FnUWhCaUFCS0FJQUlnVkZCRUFnQWtFUWFrRzVvUVZCa1F0QkJ5QUNRYkFCYWhBZElnRVFGeUlEUVJocVFjV3JDQkFPR2lBREVCZ2dBUkFlQ3lBR0lBVVFnUm9oQXlBR0tBSUFJUUVnQWdKL0lBTUVRQ0FCSUFVUTNBZ01BUXNnQVNBRkVIcEJBQkNGQVFzaUJEWUNEQ0FFQkVBZ0JpZ0NBQ0VESUFVUVlDRUhJQUpDQURjREtDQUNRZ0EzQXlBZ0FrSUFOd01ZSUFKQ2dJQ0FnSUFCTndJMElBSkNBRGNERUNBQ1FnQTNBMEFnQWlBQ1FSQnFJZ2cyQWpBakFFSFFBR3NpQVNRQUlBRWdCRFlDVEVFQUlRUWdBeUFISUFGQnpBQnFJQWhCQUJEYkNBUkFJQU5CSUdvaUNoQWNJQU5CeUFScUlBY1Frd0lpQkNnQ0FDRUhJQUVnQkNnQ0JDQUVMUUFMSWdrZ0NVRVlkRUVZZFVFQVNDSUpHellDTENBQklBY2dCQ0FKR3pZQ0tDQUJJQUVwQXlnM0F3QWdBVUV3YWlJRUlBTkJxQUpxSUFFUW1BTWdBVUVBTmdJZ0lBRkNBRGNER0NBQlFnQTNBeEFnQVNnQ1RDSURJQW9nQXlnQ0FDZ0NDQkVCQUNFRElBRkJBRG9BRENBQklBaEJJR28yQWdnZ0NpQUJRUkJxSUFRZ0F5QUJRUWhxRUw0UElRUUxJQUZCMEFCcUpBQWdDQkFqSUFJZ0JEWUNDQ0FBS0FJSUlBSkJDR29RSkNBQ0lBVVFZRFlDQkNBQ1FiQUJhaUFHUWNBR2FpQUNRUVJxSUFKQkRHb1E3Z2dMSUFKQndBRnFKQUFMRlFBZ0FVR28yaEkyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCcU5vU0VLRUJDeFVBSUFGQmhOb1NOZ0lBSUFFZ0FDa0NCRGNDQkFzTEFDQUFRWVRhRWhDaEFRc1ZBQ0FCUWVEWkVqWUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFSGcyUklRb1FFTFJnRUJmeU1BUVNCcklnSWtBQ0FDUVFBMkFoZ2dBa0lBTndNUUlBSkNBRGNEQ0NBQklBSkJDR29nQUVFa2FpQUFRU2hxSUFCQkxHb1E1eGtoQUNBQ1FTQnFKQUFnQUFzVkFDQUJRZmpZRWpZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVINDJCSVFud01MREFBZ0FCQ1FDeG9nQUJBZkMxQUJBbjhqQUVFZ2F5SUNKQUFnQVNnQ0pBUkFJQUFvQWdnaEF5QUNRUUEyQWhnZ0FrSUFOd01RSUFKQ0FEY0RDQ0FESUFKQkNHb2dBUkRhQnlFQklBQW9BZ1FnQVRZQ0xBc2dBa0VnYWlRQUN4VUFJQUZCMU5nU05nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFkVFlFaENoQVF0dkFRTi9JQUVvQWdBaEFpTUFRUkJySWdFa0FDQUJJQUkyQWd3Z0FDZ0NDQ0VDSUFBb0FnUkJ4QUJxSVFNakFFRWdheUlBSkFBZ0FDQUJRUXhxSWdRMkFoQWdBRUVZYWlBRElBUWdBRUVRYWhDRER5QUFLQUlZSVFNZ0FFRWdhaVFBSUFNZ0FqWUNEQ0FCUVJCcUpBQUxGUUFnQVVHdzJCSTJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJzTmdTRUljR0N4VUFJQUZCak5nU05nSUFJQUVnQUNnQ0JEWUNCQXNMQUNBQVFZellFaENmQXdzckFRRi9Jd0JCRUdzaUFpUUFJQUlnQVNnQ0FEWUNEQ0FBS0FJRUlBSkJER29RdXhrZ0FrRVFhaVFBQ3hVQUlBRkI2TmNTTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUWVqWEVoRFhBUXZYQVFFRGZ5TUFRU0JySWdNa0FDQURJQUFvQWlBMkFoZ2dBeUFBS1FJWU53TVFJQU1nQUNrQ0VEY0RDQUovSUFBb0FpZ2hBaUFCS0FJRUlnUUVRQ0FFS0FJQUlBSVFWMEVCUVFGQjFaNElRZENuQTBId0FCQkxDMEVBSUFFZ0FoRE5BeUlDUlEwQUdnSi9JQUlFUUNBQ0lBSW9BZ1JCcVBVUFJnMEJHaUFCSUFKQnFQVVBFT0VFQzBFQUN5RUNJQUVvQWdBb0FnZ2dBaEJYUVFGQkFVR2htd2hCMEtjRFFmUUFFRXNnQWdzaEFpQURJQUFvQWlRZ0FoQ1dHaUVBSUFFb0FnQWdBMEVJYWlBQUVPVVpJUUFnQTBFZ2FpUUFJQUFMcFFRQkIzOGpBRUVnYXlJREpBQWdBeUFBS0FJZ05nSVlJQU1nQUNrQ0dEY0RFQ0FESUFBcEFoQTNBd2dnQXlBQklBQW9BaWdRendNMkFnUWdBeUFCSUFBb0FpUVF6d01pQURZQ0FBSi9JQUFFUUNBQktBSUFJUUFqQUVFUWF5SUZKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUJOZ0lNSUFVZ0FUWUNDQ0FBUVl3QmFpSUdFTVVDSVFjZ0FDZ0NDQ0VCSUFVb0FnZ2hCQ0FES0FJQUlRZ2dBeWdDQkNFQ0l3QkJ3QUZySWdBa0FDQUFJQVEyQXJBQklBQWdBVFlDdUFFZ0J5QUFRYmdCYWlBQVFiQUJhaUFEUVFocUVJOGFJZ0VnQWpZQ0tDQUJJQWcyQWlRZ0FVSEk5UTgyQWdBZ0FnUi9JQUlGSUFCQi9iTUZRU3hCQUNBQVFhQUJhaEFkSWdJUUZ5SUVRUmhxUWVTc0NCQU9HaUFFRUJnZ0FoQWVJQUVvQWlnTEVGY2dBU2dDQ0VFQlFRQkJ6YzBJUWYyekJVRXRFRXNDUUNBQktBSW9JZ0pGRFFBZ0FpZ0NCRUhJNlE5SERRQWdBRUg5c3dWQk1FRUFJQUJCb0FGcUVCMGlBaEFYSWdSQkdHcEJ2dXNJRUE0YUlBUVFHQ0FDRUI0TEFrQWdBU2dDSkNJQ1JRMEFJQUlvQWdnZ0FTZ0NDRUVCUVFCQm9NQUlRZjJ6QlVFekVFc2dBU2dDSkNnQ0JFSEk2UTlIRFFBZ0FFSDlzd1ZCTlVFQUlBQkJvQUZxRUIwaUFSQVhJZ0pCR0dwQjB1b0lFQTRhSUFJUUdDQUJFQjRMSUFCQndBRnFKQUFnQmlBSEVDZ2dCaUFHS0FJWVFRRnFOZ0lZSUFjaEFDQUZRUkJxSkFBZ0FBd0JDeUFCS0FJQUlBTkJDR29nQTBFRWFoQ0ZHZ3NoQUNBRFFTQnFKQUFnQUFzSkFDQUFFUGtJRUI4TExBRUJmeU1BUVJCcklnSWtBQ0FDSUFFb0FnZ1FYeUFBUWFHZENTQUNFRFVnQWhBUEdpQUNRUkJxSkFBTGN3RURmeU1BUVpBQmF5SUVKQUFnQkJCSklnSkJDR3BCcjd3RkVBNGFJQUlnQVNnQ0NCQ2VCQ0lEUVFocVFkcnBCaEFPR2lBRElBRW9BZ3dRMVE4aUEwRUlha0gwN1F3UURob2dBeUFCS0FJUUVMWUxRUWhxUVl2bUJoQU9HaUFBSUFKQkRHb1FRaUFDRUZFZ0JFR1FBV29rQUFzTkFDQUFJQUZCcHJ3RkVNNFNDdzBBSUFBZ0FVSDB2QVVRemhJTERRQWdBQ0FCUWVDOEJSRFBFZ3NOQUNBQUlBRkJsN3dGRU04U0N5RUFJQUJCZ2NNQ1FacmlCaUFCS0FJSUlnQkJBVVliUVp6bUFTQUFHeEFVR2d1TEFRRUVmeU1BUWFBQmF5SUNKQUFnQWtFUWFoQkpJZ1JCQ0dvaUEwSGs1Z1lRRGhvZ0FpQUJLQUlJSWdVZ0JTZ0NBQ2dDREJFQ0FDQURJQUlRRWhvZ0EwSDA3UXdRRGhvZ0JDQUJRUXhxRU1zRElnTkJDR3BCOU8wTUVBNGFJQU1nQVVFUWFoRExBMEVJYWtHTDVnWVFEaG9nQWhBUEdpQUFJQVJCREdvUVFpQUVFRkVnQWtHZ0FXb2tBQXVLQVFFRGZ5TUFRYUFCYXlJQ0pBQWdBa0VRYWhCSklnUkJDR3BCaWZzQUVBNGFJQVFnQVVFTWFoRExBeUlEUVFocVFkb25FQTRhSUFNZ0FVRVFhaERMQTBFSWFpSURRZHJwQmhBT0dpQUNJQUVvQWdnaUFTQUJLQUlBS0FJTUVRSUFJQU1nQWhBU0dpQURRWXZtQmhBT0dpQUNFQThhSUFBZ0JFRU1haEJDSUFRUVVTQUNRYUFCYWlRQUMzVUJBMzhqQUVHZ0FXc2lBaVFBSUFKQkVHb1FTU0lEUVFocVFaMktCUkFPR2lBRElBRkJER29ReXdOQkNHb2lCRUhhNlFZUURob2dBaUFCS0FJSUlnRWdBU2dDQUNnQ0RCRUNBQ0FFSUFJUUVob2dCRUdMNWdZUURob2dBaEFQR2lBQUlBTkJER29RUWlBREVGRWdBa0dnQVdva0FBdVNBUUVGZnlNQVFjQUJheUlDSkFBZ0FrRXdhaEJKSVFNZ0FrRVFhaUlGSUFGQkRHb1Erd1VnQWtFZ2FpSUdRWnZuQmlBRkVEVWdBMEVJYWlJRUlBWVFFaG9nQkVIMDdRd1FEaG9nQWlBQktBSUlJZ0VnQVNnQ0FDZ0NEQkVDQUNBRUlBSVFFaG9nQkVHTDVnWVFEaG9nQWhBUEdpQUdFQThhSUFVUUR4b2dBQ0FEUVF4cUVFSWdBeEJSSUFKQndBRnFKQUFMa0FFQkJIOGpBRUhBQVdzaUFpUUFJQUpCTUdvUVNTSUVRUWhxSWdOQmx1Y0dFQTRhSUFKQklHb2lCU0FCUVF4cUVQc0ZJQU1nQlJBU0dpQURRZlR0REJBT0dpQUNJQUVvQWdnaUFTQUJLQUlBS0FJTUVRSUFJQUpCRUdvaUFTQUNRWXZtQmhBdElBTWdBUkFTR2lBQkVBOGFJQUlRRHhvZ0JSQVBHaUFBSUFSQkRHb1FRaUFFRUZFZ0FrSEFBV29rQUFzTUFDQUFFSjBMR2lBQUVCOExHUUFnQVVFRWFpQUFLQUlJSUFBb0Fnd2dBQ2dDRUJDV0d3c2pBQ0FCUVFScUlBQW9BZ2dnQUNnQ0RDSUFJQUVnQUNnQ0FDZ0NDQkVCQUJDWUd3c2pBQ0FCUVFScUlBQW9BZ2dnQUNnQ0RDSUFJQUVnQUNnQ0FDZ0NDQkVCQUJDWkd3c1BBQ0FCUVFScUlBQW9BZ2dRbWhzTER3QWdBVUVFYWlBQUtBSUlFSnNiQ3c4QUlBRkJCR29nQUNnQ0NCQ1ZHd3VEQXdFRmZ5TUFRZUFBYXlJQ0pBQWdBVUVFYWlFRUlBQW9BaEFoQlNBQUtBSU1JUVlnQUNnQ0NDSURJQUVnQXlnQ0FDZ0NDQkVCQUNFREFrQWdCZ1JBSUFVRVFDQUNJQUFvQWd3MkFsZ2dBU0FBS0FJUUVMVVBJUUFnQWtFQk5nSThJQUlnQURZQ05DQUNJQUpCTkdvMkFqZ2dBaUFDS1FNNE53TUlJQUlnQWtGQWF5QUNRUWhxRUpjQ0lnRkJCR28yQWxBZ0FpQUJJQUVvQWdSSE9nQlVJQVFnQXlBQ1FkZ0FhaUFDUWRBQWFoRGlCeUVBSUFFUXFBRU1BZ3NnQUNnQ0RDRUFJQUpCQURvQUxDQUNRY0NjSURZQ0tDQUNJQUEyQWtBZ0JDQURJQUpCUUdzZ0FrRW9haERpQnlFQURBRUxJQVVFUUNBQklBQW9BaEFRdFE4aEFDQUNRUUUyQWh3Z0FpQUFOZ0pZSUFJZ0FrSFlBR28yQWhnZ0FpQUNLUU1ZTndNQUlBSWdBa0ZBYXlBQ0VKY0NJZ0ZCQkdvMkFpQWdBaUFCSUFFb0FnUkhPZ0FrSUFRZ0F5QUNRU0JxRU9NSElRQWdBUkNvQVF3QkN5QUNRUUE2QUJRZ0FrSEFuQ0EyQWhBZ0JDQURJQUpCRUdvUTR3Y2hBQXNnQWtIZ0FHb2tBQ0FBQ3hZQUlBQW9BZ2dpQUNBQklBQW9BZ0FvQWdnUkFRQUxVQUVDZnlBQlFRUnFJUUlnQUNnQ0NDSURJQUVnQXlnQ0FDZ0NDQkVCQUVVRVFDQUNRZFB2QXhES0JnOExJQUlnQUNnQ0NDSUNJQUVnQWlnQ0FDZ0NDQkVCQUNBQUtBSU1JQUFvQWhBUTBBOExDZ0FnQVVFRWFoQzBDd3NLQUNBQlFRUnFFT1FIQ3dvQUlBRkJCR29RMHc4TENnQWdBVUVFYWhEU0R3dGhBUUovSXdCQkVHc2lBU1FBSUFFZ0FDZ0NCQ0lDUWZnQ2FpQUFLQUlJS0FJc0VNWUdOZ0lNSUFGQjVnQVF5UU0yQWdnZ0FTQUNRUVJxSWdBZ0FVRU1haERlQnpZQ0JDQUFJQUZCQ0dvZ0FVRUVhaENwRHlFQUlBRkJFR29rQUNBQUN4VUFJQUZCZ01vU05nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFZREtFaENIQmd0aEFRSi9Jd0JCRUdzaUFTUUFJQUVnQUNnQ0JDSUNRZmdDYWlBQUtBSUlLQUlvRU1ZR05nSU1JQUZCNWdBUXlRTTJBZ2dnQVNBQ1FRUnFJZ0FnQVVFTWFoRGVCellDQkNBQUlBRkJDR29nQVVFRWFoQ3BEeUVBSUFGQkVHb2tBQ0FBQ3hVQUlBRkIzTWtTTmdJQUlBRWdBQ2tDQkRjQ0JBc0xBQ0FBUWR6SkVoQ0hCZ3VwQVFFRWZ5TUFRUkJySWdFa0FDQUJJQUFvQWdRaUFrSDRBbW9pQXlBQUtBSUlLQUlrRU1ZR05nSU1JQUVnQXlBQUtBSUlLQUlvRU1ZR05nSUlJQUZCNXdBUXlRTTJBZ1FnQVNBQ1FRUnFJZ0FnQVVFTWFoRGVCellDQUNBQUlRUWpBRUVRYXlJQ0pBQWdBaUFBSUFGQkJHb1FydzgyQWd3Z0FDQUFRZGdDYWlBQ1FReHFJQUVnQVVFSWFoQ3JEeUVBSUFKQkVHb2tBQ0FFSUFBUW53c2hBQ0FCUVJCcUpBQWdBQXNWQUNBQlFiakpFallDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUc0eVJJUWh3WUx5Z01CQzM4Z0FTZ0NBQ0lCUVFBZ0FTZ0NCRUhZOXhGR0d5RURJd0JCZ0FGcklnRWtBQ0FBS0FJRUlnQW9BdndDSWdJUXJ3RWdBU0FDUWR3QmFpQURFT2dhTmdKUUlBQkI4SU1CYWlBQlFkQUFhaEQxQXlJRkJFQWdBRUg0QW1vaEJpQUJRb0NBZ0lDQUFUY0NkQ0FCSUFGQjBBQnFJZ0kyQW5BZ0FpQURLQUpNRURrZ0FFRUVhaUVISUFWQktHb2hDU0FCUVNCcUlRb2dBVUh3QUdvaEMwRUFJUUlEUUNBQklBSTJBa3dnQXlnQ1RDQUNUUVJBSUFFZ0N6WUNDQ0FCUVFBNkFBUWdBVUhBbkNBMkFnQWdBU0FCUWRBQWFpSUFJQUVvQW5CSE9nQU1JQWNnQlVFTWFpQUJRUWhxSUFFUXpCb2dBQkFqQlNBREtBSklJQUpCQW5ScUtBSUFJUUlDUUNBSklBRkJ6QUJxRUtrQ0JFQWdBQ2dDL0FJaUJCQ3ZBU0FBSUFSQjNBRnFJQUlRd1Jvb0FpZ1Eyd2NoRENBQlFVQnJJZ1FnQWlnQ0pFRWthaEJUSUFGQkVHb2lDQ0FHSUFKQkxHb1ErZ3NnQVNBS05nSXdJQUVnQ0NBQktBSWdSem9BTkNBQklBY2dCQ0FNSUFGQk1Hb1FyZzgyQWp3Z0FVSFFBR29nQVVFOGFoQWtJQWdRWGlBRUVBOGFEQUVMSUFFZ0JpQUNFSVVSTmdJUUlBRkIwQUJxSUFGQkVHb1FKQXNnQVNnQ1RFRUJhaUVDREFFTEN3c2dBVUdBQVdva0FFRUFDeFVBSUFGQmxNa1NOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRWlRKRWhDZkF3c1ZBQ0FCUWZESUVqWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSHd5QklRbndNTEZRQWdBVUhNeUJJMkFnQWdBU0FBS0FJRU5nSUVDd3NBSUFCQnpNZ1NFSjhEQ3hVQUlBRkJxTWdTTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUWFqSUVoQ2ZBd3ZIUEFNV2Z3RitBbjBqQUVHZ2hnRnJJZ0VrQUNBQlFRaHFJZ01nQWpZQ0FDQURRZmdDYWlJVElBTkJCR29pRmhDRkJTQURLQUlBUVFFUTBRWWFJQU5CK0lNQmFrSUFOd01BSUFOQ0FEY0Q4SU1CSUFOQ0FEY0NoSVFCSUFOQmdJUUJha0dBZ0lEOEF6WUNBQ0FEUVl5RUFXcENBRGNDQUNBRFFaU0VBV3BCZ0lDQS9BTTJBZ0FnQTBHWWhBRnFJZ3dRa2drYUl3QkJzQU5ySWcwa0FDQURLQUw4QWhET0JDSUNLQUtjQXlJT0lBSW9BcUFEUVFKMGFpRVFJQU5CakFKcUlSZ0RRQUpBQWtBQ1FBSkFJQTRnRUVZRVFDQVJRUUZ4RFFFZ0FFRUFPZ0RVQWlBQVFRQTZBQUFNQWdzZ0RpZ0NBQ0VISUExQkFEb0FyQU1nRFNBSFFlUUFhallDcUFNQ2Z5QU5LQUtvQXlJRUtBSUFJZ0lnQkNnQ0JFRUNkR29oQmdOQVFRQWdBaUFHUmcwQkdpQUNLQUlBSVFRZ0FrRUVhaUVDSUFRb0FnUkIyTWNTUncwQUN5QUVDeUlQUlEwQ0lBTW9BdndDSWdJUXJ3RkJBQ0VSQWtBZ0IwVU5BQ0FIS0FJTUlnUWdBaWdDNEFFZ0FpZ0MzQUVpQW10QkFuVlBEUUFnQWlBRVFRSjBhaWdDQUNJQ1JRMEFJQUpCQUNBQ0tBSUVRWUNURWtZYklSRUxJQTFCbUFOcUlCRkIyQWxxRUxBQkloVW9BZ0FoRVNBTktBS2NBeUVVQTBBZ0VTQVVSZ1JBSUJVUU1ob2dBeWdDL0FJUXpnUWlCRUVrYWlFR0l3QkJzQUZySWdJa0FDQUNJQWMyQXF3QklCTW9BZ1FvQWdBZ0J4QlhRUUZCQVVIVm5naEIwS2NEUVl3REVFc0NRQ0FFS0FLa0FpSUZJQVVnQkNnQ3FBSkJBblJxSUFKQnJBRnFFSm9GSUFRb0FxUUNJQVFvQXFnQ1FRSjBha1lFUUNBQ1FRaHFRZENuQTBHT0EwRUJJQk1RekFNUUZ5SUVRUmhxUVpmekFCQU9HaUFFRUJnTUFRc2dBaUFHTmdJRUlBSkJDR29pQkNBVFFjZ2dhaUFDUVFScUVOUVBJQVFRV2lBQ1Fhd0JhaENmR3dzZ0FrR3dBV29rQUVFQklSRU1CQVVnRFVFUWFpQVRJQkVvQWdBaUFpZ0NDQ0lYUVNocUVJOFJJQllnRFNnQ01CRGVCeUVFSUEwb0FqQWdCRFlDQUFKQUlBOG9BalFpQkVId0FFWUVRQ0FDS0FJTUVQMGJFTllMSVFZZ0ZoQWNJQTFCQ1RZQzlBSWdEVUhwelFNMkF2QUNJQTBnRFNrRDhBSTNBd2dnRFVINEFtb2lCQ0FZSUExQkNHb1Fud1FnRFNBUEtBSTBFTWtETmdMa0FpQU5JQllnRFVIa0Ftb2dEVUVRYWhDd0R6WUM2QUlnRFNBV0lBMUI2QUpxUWVuTkF4RElHallDN0FJZ0ZpQVdJQVFnRFVIc0Ftb1Fwd3NRendvaEJTQVRJQVpCSkdvZ0FpZ0NEQ2dDQ0NBRkVQTWFJQUlvQWdnaEFpQVdJQVFRMmdRaEJrRUFJUWtqQUVFUWF5SUVKQUFnQkNBQ05nSU1JQk1vQWdRb0FnQWdBaEJYUVFGQkFVR3Bud2hCMEtjRFFlc0NFRXNnRXlnQ0FDZ0NDQ0FHRUZkQkFVRUJRWW0yQ0VIUXB3TkI3QUlRU3lBRUlBWTJBZ2dqQUVIUUFXc2lBaVFBSUJOQkNHb2lCU2dDeEFRZ0JTZ0MwQVFpQmtHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FGSUFaQkFYUkJBbW9RbWdRTElBSkJ5QUZxSUFVZ0JFRU1haERyQXlBRktBTEVCQ0lTUVFGcklSa2dCQ2dDRENFSUlBVW9Bc0FFSVFvZ0FpZ0N6QUVoR2lBQ0tBTElBU0VHQWtBRFFDQUpJQkpIQkVBZ0NpQUdRVEJzYWlJTExRQWdSUVJBSUFJZ0NEWUNDQ0FFS0FJSUlRZ2dBaUFDUVJCcUloSTJBaUFnQWlBSU5nSVVJQUpCcU1nU05nSVFJQXNnQWtFSWFoQ1pCQ0FTRUJZZ0FpZ0N6QUVoQ0NBS0lBWkJNR3hxSWdZZ0NUWUNMQ0FHSUFnMkFpZ2dCU0FGS0FMUUJFRUJhallDMEFRZ0JTQUZLQUxVQkVFQmFqWUMxQVFnQkNBTFFRaHFOZ0lFSUFSQkFEWUNBQXdEQ3dKQUlBc29BaWdnR2tjTkFDQUlJQXNvQWdCSERRQWdBaUFJTmdJSUlBUW9BZ2doQmlBQ0lBSkJFR29pQ1RZQ0lDQUNJQVkyQWhRZ0FrR295QkkyQWhBZ0N5QUNRUWhxRU5zRUlBa1FGaUFGSUFVb0F0UUVRUUZxTmdMVUJDQUVJQXRCQ0dvMkFnUWdCRUVCTmdJQURBTUxJQWtnQ3lnQ0xFc0VRQ0FDSUFnMkFxZ0JJQVFvQWdnaENDQUNJQUpCc0FGcUlnbzJBc0FCSUFJZ0NEWUN0QUVnQWtHb3lCSTJBckFCSUFKQkNHb2dBa0dvQVdvUWx3UWhDQ0FDS0FMTUFTRVNJQWdnQ1RZQ0xDQUlJQkkyQWlnZ0NoQVdJQWdnQ3hEd0F5QUlJQWdvQWl4QkFXbzJBaXdnQlNBR1FRRnFJQVVvQXNRRWNDQUlFSllFSUFVZ0JTZ0MwQVJCQVdvMkF0QUVJQVVnQlNnQzFBUkJBV28yQXRRRUlBUWdDMEVJYWpZQ0JDQUVRUUEyQWdBZ0NCQ1pBd3dEQlNBR1FRRnFRUUFnQmlBWlJ4c2hCaUFKUVFGcUlRa01BZ3NBQ3dzZ0FrRUlha0dHdFFOQjZ3TkJEaUFDUWFnQmFoQWRJZ1lRRnlJRlFSaHFRWlkxRUE0YUlBVVFHQ0FFUWdBM0FnQWdCaEFlQ3d3QkN5QUNLQUlJSVFJZ0RTQUVFTWtETmdMNEFpQVdJQTFCK0FKcUlBMUJFR29Rc0E4aEJrRUFJUWtqQUVFUWF5SUVKQUFnQkNBQ05nSU1JQk1vQWdRb0FnQWdBaEJYUVFGQkFVR3Bud2hCMEtjRFFlc0NFRXNnRXlnQ0FDZ0NDQ0FHRUZkQkFVRUJRWW0yQ0VIUXB3TkI3QUlRU3lBRUlBWTJBZ2dqQUVIUUFXc2lBaVFBSUJOQkNHb2lCU2dDeEFRZ0JTZ0MwQVFpQmtHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FGSUFaQkFYUkJBbW9RbWdRTElBSkJ5QUZxSUFVZ0JFRU1haERyQXlBRktBTEVCQ0lTUVFGcklSa2dCQ2dDRENFSUlBVW9Bc0FFSVFvZ0FpZ0N6QUVoR2lBQ0tBTElBU0VHQWtBRFFDQUpJQkpIQkVBZ0NpQUdRVEJzYWlJTExRQWdSUVJBSUFJZ0NEWUNDQ0FFS0FJSUlRZ2dBaUFDUVJCcUloSTJBaUFnQWlBSU5nSVVJQUpCek1nU05nSVFJQXNnQWtFSWFoQ1pCQ0FTRUJZZ0FpZ0N6QUVoQ0NBS0lBWkJNR3hxSWdZZ0NUWUNMQ0FHSUFnMkFpZ2dCU0FGS0FMUUJFRUJhallDMEFRZ0JTQUZLQUxVQkVFQmFqWUMxQVFnQkNBTFFRaHFOZ0lFSUFSQkFEWUNBQXdEQ3dKQUlBc29BaWdnR2tjTkFDQUlJQXNvQWdCSERRQWdBaUFJTmdJSUlBUW9BZ2doQmlBQ0lBSkJFR29pQ1RZQ0lDQUNJQVkyQWhRZ0FrSE15QkkyQWhBZ0N5QUNRUWhxRU5zRUlBa1FGaUFGSUFVb0F0UUVRUUZxTmdMVUJDQUVJQXRCQ0dvMkFnUWdCRUVCTmdJQURBTUxJQWtnQ3lnQ0xFc0VRQ0FDSUFnMkFxZ0JJQVFvQWdnaENDQUNJQUpCc0FGcUlnbzJBc0FCSUFJZ0NEWUN0QUVnQWtITXlCSTJBckFCSUFKQkNHb2dBa0dvQVdvUWx3UWhDQ0FDS0FMTUFTRVNJQWdnQ1RZQ0xDQUlJQkkyQWlnZ0NoQVdJQWdnQ3hEd0F5QUlJQWdvQWl4QkFXbzJBaXdnQlNBR1FRRnFJQVVvQXNRRWNDQUlFSllFSUFVZ0JTZ0MwQVJCQVdvMkF0QUVJQVVnQlNnQzFBUkJBV28yQXRRRUlBUWdDMEVJYWpZQ0JDQUVRUUEyQWdBZ0NCQ1pBd3dEQlNBR1FRRnFRUUFnQmlBWlJ4c2hCaUFKUVFGcUlRa01BZ3NBQ3dzZ0FrRUlha0dHdFFOQjZ3TkJEaUFDUWFnQmFoQWRJZ1lRRnlJRlFSaHFRWlkxRUE0YUlBVVFHQ0FFUWdBM0FnQWdCaEFlQ3dzZ0FrSFFBV29rQUNBRVFSQnFKQUFnQXlnQy9BSWlBaEN2QVNBTklBSkIzQUZxSUJjb0FrZ29BZ0FRZ2dNMkF2Z0NJQXdnRFVINEFtb1EvUWdnRVVFRWFpRVJJQTFCRUdvUUl3d0JDd0FMQUF0QkFDRVJJd0JCSUdzaUNDUUFBMEFnQXlnQ3ZJUUJJQkZOQkVBZ0NFRWdhaVFBQlNBREtBSzRoQUVnRVVFQ2RHb29BZ0FRb0FRaEFpQUlJQU0yQWhnZ0NDQUROZ0lRSUFnZ0F6WUNDQ0FJSUFNMkFnQWpBRUVRYXlJSkpBQWdDU0FDTmdJTUFrQWdBa1VOQUNBSklBSW9BZ1EyQWdBZ0NTQUpRUXhxTmdJRVFRQWhEeUFKS0FJQUloaEIySndTUmdSQUlBa29BZ1FvQWdBaERDTUFRUkJySWdza0FDQUlLQUlZSVFvQ1FDQU1LQUlzSWdJb0FnZ2lCQ2dDS0VVTkFDQUxJQUkyQWdRZ0MwRUlhaUFLUVlTRUFXb2dDMEVFYWhDckJTQUxMUUFNUlEwQUlBUW9BaWdoQWlBS0lBd29BaXdvQWd3UTJ3Y2hCQ01BUVJCcklnWWtBQ0FHSUFJMkFnd2dDa0g0QW1vaUJTZ0NCQ2dDQUNBQ0VGZEJBVUVCUWFtZkNFSFFwd05CNndJUVN5QUZLQUlBS0FJSUlBUVFWMEVCUVFGQmliWUlRZENuQTBIc0FoQkxJQVlnQkRZQ0NDTUFRZEFCYXlJQ0pBQWdCVUVJYWlJRUtBTEVCQ0FFS0FMUUJDSUZRWllCYkVHV0FXcEI1QUJ1U1FSQUlBUWdCVUVCZEVFQ2FoQ2FCQXNnQWtISUFXb2dCQ0FHUVF4cUVPc0RJQVFvQXNRRUloVkJBV3NoRkNBR0tBSU1JUWNnQkNnQ3dBUWhFQ0FDS0FMTUFTRVhJQUlvQXNnQklRNENRQU5BSUE4Z0ZVY0VRQ0FRSUE1Qk1HeHFJZ1V0QUNCRkJFQWdBaUFITmdJSUlBWW9BZ2doQnlBQ0lBSkJFR29pRlRZQ0lDQUNJQWMyQWhRZ0FrSHd5QkkyQWhBZ0JTQUNRUWhxRUprRUlCVVFGaUFDS0FMTUFTRUhJQkFnRGtFd2JHb2lEaUFQTmdJc0lBNGdCellDS0NBRUlBUW9BdEFFUVFGcU5nTFFCQ0FFSUFRb0F0UUVRUUZxTmdMVUJDQUdJQVZCQ0dvMkFnUWdCa0VBTmdJQURBTUxBa0FnQlNnQ0tDQVhSdzBBSUFjZ0JTZ0NBRWNOQUNBQ0lBYzJBZ2dnQmlnQ0NDRUhJQUlnQWtFUWFpSU9OZ0lnSUFJZ0J6WUNGQ0FDUWZESUVqWUNFQ0FGSUFKQkNHb1Eyd1FnRGhBV0lBUWdCQ2dDMUFSQkFXbzJBdFFFSUFZZ0JVRUlhallDQkNBR1FRRTJBZ0FNQXdzZ0R5QUZLQUlzU3dSQUlBSWdCellDcUFFZ0JpZ0NDQ0VISUFJZ0FrR3dBV29pRURZQ3dBRWdBaUFITmdLMEFTQUNRZkRJRWpZQ3NBRWdBa0VJYWlBQ1FhZ0JhaENYQkNFSElBSW9Bc3dCSVJVZ0J5QVBOZ0lzSUFjZ0ZUWUNLQ0FRRUJZZ0J5QUZFUEFESUFjZ0J5Z0NMRUVCYWpZQ0xDQUVJQTVCQVdvZ0JDZ0N4QVJ3SUFjUWxnUWdCQ0FFS0FMUUJFRUJhallDMEFRZ0JDQUVLQUxVQkVFQmFqWUMxQVFnQmlBRlFRaHFOZ0lFSUFaQkFEWUNBQ0FIRUprRERBTUZJQTVCQVdwQkFDQU9JQlJIR3lFT0lBOUJBV29oRHd3Q0N3QUxDeUFDUVFocVFZYTFBMEhyQTBFT0lBSkJxQUZxRUIwaUJCQVhJZ1ZCR0dwQmxqVVFEaG9nQlJBWUlBWkNBRGNDQUNBRUVCNExJQUpCMEFGcUpBQWdCa0VRYWlRQUN5QUxJQXdvQWl3b0FpQWlBallDQ0NBQ0JFQWdDa0dZaEFGcUlBdEJDR29RL1FnTElBdEJFR29rQUFzZ0dFSFluQkpHRFFBZ0NTZ0NBQ0lZUWFDV0VrWUVRQ0FKS0FJRUtBSUFJUXdqQUVFUWF5SUhKQUFnQ0NnQ0VDSVZJQXdvQWpBaUFpZ0NKQkRER2lFRUlBY2dBaWdDTERZQ0RDTUFRUkJySWc4a0FDTUFRUkJySWc0a0FFRU1FQlVoQWlBT0lBUkJIR29pQkVFSWFqWUNCQ0FPSUFJMkFnQWdBaUFIS0FJTUlnWTJBZ2dnRGtFQk9nQUlJQUpCQURZQ0FDQUNJQVkyQWdSQkFDRVFJQTRvQWdBaUJpQUdLQUlJSWdJMkFnUUNRQUpBSUFRb0FnUWlDMFVOQUFKQUlBdHBJZ3BCQVUwRVFDQUxRUUZySUFKeElRSU1BUXNnQWlBTFNRMEFJQUlnQzNBaEFnc2dCQ2dDQUNBQ1FRSjBhaWdDQUNJRlJRMEFJQXRCQVdzaEZDQUdLQUlJSVJjZ0NrRUJTeUVTQTBBZ0JTZ0NBQ0lGUlEwQklBVW9BZ1FoQ2dKQUlCSkZCRUFnQ2lBVWNTRUtEQUVMSUFvZ0Mwa05BQ0FLSUF0d0lRb0xJQUlnQ2tjTkFTQUZLQUlJSUJkSERRQUxEQUVMSUFRcUFoQWhIQ0FFS0FJTVFRRnFzeUVkSUFzRVFFRUFJUVVnSENBTHM1UWdIVjFGRFFFTFFRQWhCU0FFSUFzZ0MwRUJhM0ZCQUVjZ0MwRURTWElnQzBFQmRISWlBZ0ovSUIwZ0hKV05JaHhEQUFDQVQxMGdIRU1BQUFBQVlIRUVRQ0FjcVF3QkMwRUFDeUlMSUFJZ0Mwc2JFTU1CQ3lBRklnSkZCRUFnQmlnQ0JDRUNBa0FnQkNnQ0JDSUZhU0lMUVFGTkJFQWdCVUVCYXlBQ2NTRUNEQUVMSUFJZ0JVa05BQ0FDSUFWd0lRSUxBa0FDUUNBQ1FRSjBJZ29nQkNnQ0FHb29BZ0FpQWtVRVFDQUdJQVFvQWdnMkFnQWdCQ0FHTmdJSUlBUW9BZ0FnQ21vZ0JFRUlhallDQUNBR0tBSUFJZ0pGRFFJZ0FpZ0NCQ0VDQWtBZ0MwRUJUUVJBSUFJZ0JVRUJhM0VoQWd3QkN5QUNJQVZKRFFBZ0FpQUZjQ0VDQ3lBRUtBSUFJQUpCQW5ScUlRSU1BUXNnQmlBQ0tBSUFOZ0lBQ3lBQ0lBWTJBZ0FMSUFRZ0JDZ0NERUVCYWpZQ0RFRUJJUkFnQmlFQ0N5QVBJQkE2QUF3Z0R5QUNOZ0lJSUE4dEFBd0VRQ0FPUVFBMkFnQUxJQTRRaXdFZ0RrRVFhaVFBSUFjZ0R5Z0NDRFlDQUNBSElBOHRBQXc2QUFRZ0QwRVFhaVFBSUFjZ0RDZ0NMRFlDQUNBVlFaaUVBV29nQnhEOUNDQUhRUkJxSkFBTElCaEJvSllTUmcwQUlBa29BZ0FpQkVId2t4SkdCRUFnQ1NnQ0JDZ0NBQ0VHSXdCQkVHc2lBaVFBSUFnb0FnZ2hCU0FDSUFZb0FpdzJBZ3dnQlVHWWhBRnFJQUpCREdvUS9RZ2dBa0VRYWlRQUN5QUVRZkNURWtZTkFDQUpLQUlBRUs4SUJFQWdDU2dDQkNnQ0FDRUVJd0JCRUdzaUFpUUFJQVFvQWdnaUJDZ0NCRUdBZ1JKSElBUkZja1VFUUNBSUtBSUFJZ1lvQXZ3Q0lnVVFyd0VnQWlBRlFkd0JhaUFFS0FJb0VJSUROZ0lNSUFaQm1JUUJhaUFDUVF4cUVQMElDeUFDUVJCcUpBQUxDeUFKUVJCcUpBQWdFVUVCYWlFUkRBRUxDeUFEUWZ5REFXb29BZ0FFUUNBTklBTTJBaEFqQUVHd0FXc2lBaVFBSUJOQnVDQnFLQUlBSWdRZ0UwRzhJR29vQWdCQkJYUnFJUVlnRTBHNEhtb2hFUUpBQWtBRFFDQUVJQVpHRFFFQ1FDQUVLQUlBUWRqM0VSQklEUUJCMlBjUklBUW9BZ0FRU0EwQUlBUkJJR29oQkF3QkN3c2dBa0VRYWtIUXB3TkJ1Z0pCQVNBVEVNd0RFQmNpQmtFWWFrSFZ1Z29RRGhvZ0JrSGM5eEVRbWdFaUJVRVlha0dsdWdvUURob2dCU0FFS0FJQVFRUnFFSm9CR2lBR0VCZ01BUXNnQWtFUWFoQ2VCU0lHUWRqM0VUWUNBQ0FDSUEwb0FoQTJBZ2dqQUVFZ2F5SUVKQUFnQkNBQ0tBSUlOZ0lNSUFSQmxNa1NOZ0lJSUFRZ0JFRUlhaUlGTmdJWUlBVWdCa0VJYWhDc0FpQUZFQllnQkVFZ2FpUUFJQkVnQmhDWkJTQUdFUE1EQ3lBQ1FiQUJhaVFBQ3lNQVFTQnJJZ3NrQUNBTElBTTJBaGdnQTBHTWhBRnFJUTREUUNBT0tBSUFJZzRFUUNBT0tBSUlJZ0lvQWtRaUVTQUNLQUpJUVFKMGFpRVlBMEFnRVNBWVJnMENJQkVvQWdBb0Fnd29BZ2doQkNBTElBTTJBaEFnQ3lBTFFSaHFJZ0kyQWhRZ0N5QUROZ0lJSUFzZ0FqWUNEQ0FMUVFocUlRSWpBRUVRYXlJUEpBQWdEeUFFTmdJTUFrQWdCRVVOQUNBUElBUW9BZ1EyQWdBZ0R5QVBRUXhxTmdJRVFRQWhDU0FQS0FJQUloVkIrT3NQUmdSQUlBOG9BZ1FvQWdBaEJDTUFRUkJySWdna0FDQUxLQUlRSWdZb0F2d0NJZ2NRcndFZ0JrSDRBbW9oQlNBSFFkd0JhaUFFS0FJa0VJSURJUWNDUUNBTEtBSVVJQWNRckE4RVFDQUlJQVEyQWd3Z0NDQUdOZ0lJSXdCQkVHc2lCeVFBSUFjZ0JEWUNEQ0FGS0FJRUtBSUFJQVFRVjBFQlFRRkJxWjhJUWRDbkEwR0FBeEJMSXdCQjBBRnJJZ1FrQUNBRlFRaHFJZ1VvQXNRRUlBVW9BdEFFSWdaQmxnRnNRWllCYWtIa0FHNUpCRUFnQlNBR1FRRjBRUUpxRUpvRUN5QUVRY2dCYWlBRklBZEJER29RNndNZ0JTZ0N4QVFpRkVFQmF5RVhJQWNvQWd3aERDQUZLQUxBQkNFUUlBUW9Bc3dCSVJJZ0JDZ0N5QUVoQmdKQUEwQWdDU0FVUndSQUlCQWdCa0V3YkdvaUNpMEFJRVVFUUNBRUlBdzJBZ2dnQ0NrQ0NDRWJJQVFnQkVFUWFpSU1OZ0lnSUFRZ0d6Y0NGQ0FFUWJqSkVqWUNFQ0FLSUFSQkNHb1FtUVFnREJBV0lBUW9Bc3dCSVF3Z0VDQUdRVEJzYWlJR0lBazJBaXdnQmlBTU5nSW9JQVVnQlNnQzBBUkJBV28yQXRBRUlBVWdCU2dDMUFSQkFXbzJBdFFFSUFjZ0NrRUlhallDQkNBSFFRQTJBZ0FNQXdzQ1FDQUtLQUlvSUJKSERRQWdEQ0FLS0FJQVJ3MEFJQVFnRERZQ0NDQUlLUUlJSVJzZ0JDQUVRUkJxSWdZMkFpQWdCQ0FiTndJVUlBUkJ1TWtTTmdJUUlBb2dCRUVJYWhEYkJDQUdFQllnQlNBRktBTFVCRUVCYWpZQzFBUWdCeUFLUVFocU5nSUVJQWRCQVRZQ0FBd0RDeUFKSUFvb0FpeExCRUFnQkNBTU5nS29BU0FJS1FJSUlSc2dCQ0FFUWJBQmFpSVFOZ0xBQVNBRUlCczNBclFCSUFSQnVNa1NOZ0t3QVNBRVFRaHFJQVJCcUFGcUVKY0VJUXdnQkNnQ3pBRWhGQ0FNSUFrMkFpd2dEQ0FVTmdJb0lCQVFGaUFNSUFvUThBTWdEQ0FNS0FJc1FRRnFOZ0lzSUFVZ0JrRUJhaUFGS0FMRUJIQWdEQkNXQkNBRklBVW9BdEFFUVFGcU5nTFFCQ0FGSUFVb0F0UUVRUUZxTmdMVUJDQUhJQXBCQ0dvMkFnUWdCMEVBTmdJQUlBd1FtUU1NQXdVZ0JrRUJha0VBSUFZZ0YwY2JJUVlnQ1VFQmFpRUpEQUlMQUFzTElBUkJDR3BCaHJVRFFlc0RRUTRnQkVHb0FXb1FIU0lHRUJjaUJVRVlha0dXTlJBT0dpQUZFQmdnQjBJQU53SUFJQVlRSGdzZ0JFSFFBV29rQUNBSFFSQnFKQUFNQVFzZ0JpZ0MvQUlpQnhDdkFTQUhRZHdCYWlBRUtBSW9FSUlESVFjZ0N5Z0NGQ0FIRUtBRUVLd1BSUTBBSUFRb0FpZ2hDaUFJSUFRMkFnd2dDQ0FHTmdJSUl3QkJFR3NpQnlRQUlBY2dDallDRENBRktBSUVLQUlBSUFvUVYwRUJRUUZCcVo4SVFkQ25BMEdBQXhCTEl3QkIwQUZySWdRa0FDQUZRUWhxSWdVb0FzUUVJQVVvQXRBRUlnWkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0JTQUdRUUYwUVFKcUVKb0VDeUFFUWNnQmFpQUZJQWRCREdvUTZ3TWdCU2dDeEFRaUZFRUJheUVYSUFjb0Fnd2hEQ0FGS0FMQUJDRVFJQVFvQXN3QklSSWdCQ2dDeUFFaEJnSkFBMEFnQ1NBVVJ3UkFJQkFnQmtFd2JHb2lDaTBBSUVVRVFDQUVJQXcyQWdnZ0NDa0NDQ0ViSUFRZ0JFRVFhaUlNTmdJZ0lBUWdHemNDRkNBRVFkekpFallDRUNBS0lBUkJDR29RbVFRZ0RCQVdJQVFvQXN3QklRd2dFQ0FHUVRCc2FpSUdJQWsyQWl3Z0JpQU1OZ0lvSUFVZ0JTZ0MwQVJCQVdvMkF0QUVJQVVnQlNnQzFBUkJBV28yQXRRRUlBY2dDa0VJYWpZQ0JDQUhRUUEyQWdBTUF3c0NRQ0FLS0FJb0lCSkhEUUFnRENBS0tBSUFSdzBBSUFRZ0REWUNDQ0FJS1FJSUlSc2dCQ0FFUVJCcUlnWTJBaUFnQkNBYk53SVVJQVJCM01rU05nSVFJQW9nQkVFSWFoRGJCQ0FHRUJZZ0JTQUZLQUxVQkVFQmFqWUMxQVFnQnlBS1FRaHFOZ0lFSUFkQkFUWUNBQXdEQ3lBSklBb29BaXhMQkVBZ0JDQU1OZ0tvQVNBSUtRSUlJUnNnQkNBRVFiQUJhaUlRTmdMQUFTQUVJQnMzQXJRQklBUkIzTWtTTmdLd0FTQUVRUWhxSUFSQnFBRnFFSmNFSVF3Z0JDZ0N6QUVoRkNBTUlBazJBaXdnRENBVU5nSW9JQkFRRmlBTUlBb1E4QU1nRENBTUtBSXNRUUZxTmdJc0lBVWdCa0VCYWlBRktBTEVCSEFnREJDV0JDQUZJQVVvQXRBRVFRRnFOZ0xRQkNBRklBVW9BdFFFUVFGcU5nTFVCQ0FISUFwQkNHbzJBZ1FnQjBFQU5nSUFJQXdRbVFNTUF3VWdCa0VCYWtFQUlBWWdGMGNiSVFZZ0NVRUJhaUVKREFJTEFBc0xJQVJCQ0dwQmhyVURRZXNEUVE0Z0JFR29BV29RSFNJR0VCY2lCVUVZYWtHV05SQU9HaUFGRUJnZ0IwSUFOd0lBSUFZUUhnc2dCRUhRQVdva0FDQUhRUkJxSkFBTElBaEJFR29rQUFzZ0ZVSDQ2dzlHRFFCQkFDRUlJQThvQWdCQnVQSVBSZ1JBSUE4b0FnUW9BZ0FoQkNNQVFSQnJJZ2NrQUNBRUtBSWtJUVFnQWlnQ0FDSUZLQUw4QWlJR0VLOEJBa0FnQmtIY0FXb2dCQ2dDTEJDQ0F5SUdSUTBBSUFJb0FnUWdCaENnQkJDc0QwVU5BQ0FFS0FJc0lRSWdCeUFFTmdJTUlBY2dCVFlDQ0NNQVFSQnJJZ1lrQUNBR0lBSTJBZ3dnQlVINEFtb2lCQ2dDQkNnQ0FDQUNFRmRCQVVFQlFhbWZDRUhRcHdOQmdBTVFTeU1BUWRBQmF5SUNKQUFnQkVFSWFpSUVLQUxFQkNBRUtBTFFCQ0lGUVpZQmJFR1dBV3BCNUFCdVNRUkFJQVFnQlVFQmRFRUNhaENhQkFzZ0FrSElBV29nQkNBR1FReHFFT3NESUFRb0FzUUVJaEJCQVdzaEZTQUdLQUlNSVFrZ0JDZ0N3QVFoRENBQ0tBTE1BU0VVSUFJb0FzZ0JJUW9DUUFOQUlBZ2dFRWNFUUNBTUlBcEJNR3hxSWdVdEFDQkZCRUFnQWlBSk5nSUlJQWNwQWdnaEd5QUNJQUpCRUdvaUNUWUNJQ0FDSUJzM0FoUWdBa0dBeWhJMkFoQWdCU0FDUVFocUVKa0VJQWtRRmlBQ0tBTE1BU0VKSUF3Z0NrRXdiR29pQ2lBSU5nSXNJQW9nQ1RZQ0tDQUVJQVFvQXRBRVFRRnFOZ0xRQkNBRUlBUW9BdFFFUVFGcU5nTFVCQ0FHSUFWQkNHbzJBZ1FnQmtFQU5nSUFEQU1MQWtBZ0JTZ0NLQ0FVUncwQUlBa2dCU2dDQUVjTkFDQUNJQWsyQWdnZ0J5a0NDQ0ViSUFJZ0FrRVFhaUlKTmdJZ0lBSWdHemNDRkNBQ1FZREtFallDRUNBRklBSkJDR29RMndRZ0NSQVdJQVFnQkNnQzFBUkJBV28yQXRRRUlBWWdCVUVJYWpZQ0JDQUdRUUUyQWdBTUF3c2dDQ0FGS0FJc1N3UkFJQUlnQ1RZQ3FBRWdCeWtDQ0NFYklBSWdBa0d3QVdvaUREWUN3QUVnQWlBYk53SzBBU0FDUVlES0VqWUNzQUVnQWtFSWFpQUNRYWdCYWhDWEJDRUpJQUlvQXN3QklSQWdDU0FJTmdJc0lBa2dFRFlDS0NBTUVCWWdDU0FGRVBBRElBa2dDU2dDTEVFQmFqWUNMQ0FFSUFwQkFXb2dCQ2dDeEFSd0lBa1FsZ1FnQkNBRUtBTFFCRUVCYWpZQzBBUWdCQ0FFS0FMVUJFRUJhallDMUFRZ0JpQUZRUWhxTmdJRUlBWkJBRFlDQUNBSkVKa0REQU1GSUFwQkFXcEJBQ0FLSUJWSEd5RUtJQWhCQVdvaENBd0NDd0FMQ3lBQ1FRaHFRWWExQTBIckEwRU9JQUpCcUFGcUVCMGlCQkFYSWdWQkdHcEJsalVRRGhvZ0JSQVlJQVpDQURjQ0FDQUVFQjRMSUFKQjBBRnFKQUFnQmtFUWFpUUFDeUFIUVJCcUpBQUxDeUFQUVJCcUpBQWdFVUVFYWlFUkRBQUxBQXNMSUF0QklHb2tBQ0FURU80RklBQWdEVUVRYWlBV0VJb0VJZ0FRM3djZ0FCQzhBd3NnRFVHd0Eyb2tBQXdCQ3lBT1FRUnFJUTRNQVFzTElBTkJtSVFCYWhDUkNTQURRWVNFQVdvUVR5QURRZkNEQVdvaUJDZ0NDQ0VBQTBBZ0FBUkFJQUFvQWdBaEFpQUFRUXhxRU1JYUlBQVFIeUFDSVFBTUFRc0xJQVFRdHdJZ0EwSDRBbW9RMEFZZ0EwRUVhaENPQkJvZ0FVR2doZ0ZxSkFBTGV3RUNmeU1BUVJCcklnSWtBQ0FCS0FJQUlnTVFIQ0FDSUFFb0FnQWlBU2dDQ0RZQ0NDQUJJQUVvQWd4QkFXb2lBVFlDRENBQ0lBRTJBZ0FnQTBHTUFXb2lBUkRmQ3lJRElBSW9BZ2dnQWlnQ0FDQUFLQUkwRU1rYUdpQUJJQU1RS0NBQklBRW9BaGhCQVdvMkFoZ2dBeUVBSUFKQkVHb2tBQ0FBQzBNQkFuOGpBRUVnYXlJQ0pBQWdBa0VRYWlJRFFkVGVDaUFDSUFFb0FqUVF5UU1RRkNJQkVEVWdBQ0FEUWUvMkNCQXRJQU1RRHhvZ0FSQVBHaUFDUVNCcUpBQUxuZ0lCQjM4akFFSEFoZ0ZySWdVa0FDQUZRZGdDYWlBRlFkQ0RBV29RaFFVaUNDQUNRUUVRMFFZaEJ5QUNFSzhCUVFBaEJFRUFJUUVnQWlnQ21BRWlBMEVmVFFSQUlBSW9BcFFCSVFrZ0F5RUJDeUFDS0FLUUFTRURJQUpCM0FGcUlRc0NRQU5BQWtBZ0F5QUpSeUFCSUFSSGNrVUVRQ0FLRFFFZ0FFRUFPZ0RVQWlBQVFRQTZBQUFNQXdzZ0F3Ui9JQU1nQkVFQ2RHb29BZ0FGUVFBTElRWWdBaEN2QVFKQUlBc2dCaERoQWlJR1JRMEFJQVl0QUNBTkFDQUhJQVlvQWdnUW9CdEJBU0VLQ3lBRFJRUkFRUUFoQXd3Q0N5QUVRUUZxSWdSQklFY05BU0FES0FLQUFTRURRUUFoQkF3QkN3c2dCeER1QlNBQUlBVWdDQkNLQkNJQUVOOEhJQUFRdkFNTElBY1EwQVlnQ0JDT0JCb2dCVUhBaGdGcUpBQUw5QUlCQkg4akFFSHdBR3NpQWlRQUFrQWdBU2dDQUNJQlFRQWdBU2dDQkVHNDdnOUdHeUlCS0FKTVJRMEFJQUFvQWdRZ0FSQ0NBeER3RHlJRFJRMEFJQU1vQWdSQm9KRVNSdzBBSUFNb0Fpd2lBeWdDQkVHUW5oSkhJQU5GY2cwQUlBSWdBeWdDQ0NJRFFRQWdBeWdDQkVHUW9oSkdHeUlETmdKc0lBTkZEUUFnQWlBQUtBSUlJQUVvQWlRUWxRazJBbWdnQWtLQWdJQ0FnQUUzQWx3Z0FpQUNRVGhxTmdKWUFrQWdBQ2dDRENBQ1Fld0FhaEQxQXlJREJFQWdBa0U0YWlBQktBSk1FRGtnQVNnQ1NDSUVJQUVvQWt4QkFuUnFJUUVnQTBFTWFpRURBMEFnQVNBRVJnMENJQUFvQWhBaEJTQUNJQUFvQWdnZ0JDZ0NBQkNYQVRZQ05DQUNJQVVnQXlBQ1FUUnFFTE1QTmdJSUlBUkJCR29oQkNBQ1FUaHFJQUpCQ0dvUUpBd0FDd0FMSUFKQkNHb2lBeUFBS0FJSUlBRkJLR29RanhFZ0FrRTRhaUFERUtBTElBTVFJd3NnQUNnQ0VDQUNRZWdBYWlBQ1FUaHFJZ0FRM0FjaEJDQUFFQ01MSUFKQjhBQnFKQUFnQkFzTkFDQUFJQUZCNU1ZU0VMWUZDd3NBSUFCQjVNWVNFTGNGQzlZQ0FRVi9Jd0JCRUdzaUJTUUFJQUVvQWdBaUJDZ0NCQ0VEUVFBaEFTQUVRUUFnQTBIQS94RkdHeUlFS0FJa0lRTWdBQ2dDQkNnQ0FDSUdFSzhCQWtBZ0JrSGNBV29nQXhDeUNpSURSUTBBSUFNb0FnUWlCaEN2Q0FSL0lBTkJGR29GSUFZUXNBcEZEUUVnQTBFUWFnc29BZ0FoQWdzQ1FDQUNSUTBBSUFJUWhBRWlBa1VOQUNBQ0tBSUVRWkNpRWtjTkFDQUNLQUlvSUFJb0FpeEdEUUFnQlFKL0lBQW9BZ2doQVVFQUlBUkZEUUFhSUFFb0FnUWlBZ1JBSUFJb0FnQWdCQ2dDQ0VFQlFRRkIwTklJUWRDbkEwR01BUkJMQ3dKL0lBUWdBUkQzSGlJQ0JFQWdBaUFDS0FJRVFjRC9FVVlOQVJvZ0FTQUNRY0QvRVJEaEJBdEJBQXNMTmdJTUlBQW9BZ3doQVNNQVFSQnJJZ0FrQUNBQUlBVW9BZ3cyQWd3Z0FDQUJRZnpGRWhDeER6WUNDQ0FCSUFGQjJBSnFJQUJCREdvZ0FFRUlhaEQrQ0NFQklBQkJFR29rQUFzZ0JVRVFhaVFBSUFFTERRQWdBQ0FCUWNER0VoRFdBUXNMQUNBQVFjREdFaERsQVF2SURRSVBmd0o5SXdCQmdBRnJJZ0lrQUFKQUlBRW9BZ0FpQVVFQUlBRW9BZ1JCK08wUFJoc2lCU2dDSkNJTktBSUVRY2pwRDBjZ0RVVnlEUUFnQUNnQ0JDRUJBa0FnQlVVTkFDQUZLQUlNSWdVZ0FTZ0NCQ0FCS0FJQUlnRnJRUUoxVHcwQUlBRWdCVUVDZEdvb0FnQVEyQkFoQXdzZ0EwVU5BQ0FDSUFNb0FoQWlBVUVBSUFFb0FnUkJrS0lTUmhzaUFUWUNOQ0FCUlEwQUlBRW9BaWdnQVNnQ0xFY0VRQ0FBS0FJUUlRTWdBQ2dDRENFRUFrQWdBQ2dDQ0NJRklBSkJOR29ROVFNaUFRUkFJQUpCR0dvZ0FVRU1haEJXR2d3QkN5QUVFQndnQWtFTE5nSjhJQUpCMzhnQk5nSjRJQUlnQWlrRGVEY0RFQ0FDUVJocUlnRWdCRUdJQW1vZ0FrRVFhaENmQkNBRElBMG9Ba3dvQWdBaUEwRUFJQU1vQWdSQitPMFBSaHNRbFFraER5QUNJQUlvQWpRMUFpZzNBMUFqQUVFUWF5SUlKQUFnQ0NBRUlBSkIwQUJxSWc0UTZRVTJBZ3dqQUVFUWF5SU1KQUFnQkJBY0lBUWdCQ2dDREVFQmFpSUROZ0lNSUF3Z0F6WUNDQ0FFUVl3QmFpSUhJQWNRdndFZ0JDZ0NDQ0FNS0FJSUlBUkIyQUpxSWdzZ0NDZ0NEQkQ4SGlJREVDZ2dCeUFIS0FJWVFRRnFOZ0lZSUF4QkVHb2tBQ0FJUVJCcUpBQWdBa0VCTmdKY0lBSWdBellDT0NBQ0lBSkJPR29pQnpZQ1dDQUNJQUlwQTFnM0F3Z2dBaUFDUWVBQWFpSVFJQUpCQ0dvUWx3SWlDRUVFYWpZQ2NDQUNJQWdnQ0NnQ0JFYzZBSFFqQUVFUWF5SU1KQUFnRENBQ0tRSndOd01JSXdCQkVHc2lDaVFBSUFvZ0R6WUNDQ0FLSUFSQi9NVVNFTEVQTmdJRUlBUWdDeUFLUVFScUlBcEJDR29nREVFSWFoRExHaUVESUFwQkVHb2tBQ0FNUVJCcUpBQWdDQkNvQVNBQ1FRRTJBa3dnQWlBQ1FjUUFhallDU0NBQ0lBSXBBMGczQXdBZ0FpQUROZ0pFSUFJZ0VDQUNFSmNDSWd0QkJHbzJBbEFnQ3lnQ0JDRURJQUpCQURvQVBDQUNRY0NjSURZQ09DQUNJQU1nQzBjNkFGUWdCQ0FCSUE0Z0J4RE1HaUFMRUtnQkl3QkJFR3NpQ0NRQVFRQWhCeU1BUVJCcklnUWtBQ0FDUVRScUlnd1E5QU1oQXlBSUFuOENRQ0FGS0FJRUlnWkZEUUFnQlNnQ0FBSi9JQVpCQVdzZ0EzRWdCbWtpQzBFQlRRMEFHaUFESUFNZ0Jra05BQm9nQXlBR2NBc2lCMEVDZEdvb0FnQWlDVVVOQUNBR1FRRnJJUThnRENnQ0FDRU9JQXRCQVVzaEN3TkFJQWtvQWdBaUNVVU5BU0FESUFrb0FnUWlDa2NFUUFKQUlBdEZCRUFnQ2lBUGNTRUtEQUVMSUFZZ0Nrc05BQ0FLSUFad0lRb0xJQWNnQ2tjTkFnc2dDU2dDQ0NBT1J3MEFDMEVBREFFTFFTZ1FGU0VPSUFRZ0JVRUlhallDQkNBRUlBNDJBZ0FnRGtFSWFpSUxJQXdvQWdBMkFnQWdDMEVFYWlBQkVGWWFJQVJCQVRvQUNDQU9RUUEyQWdBZ0RpQUROZ0lFQWtCQkFDQUdJQVVvQWd4QkFXcXpJaElnQlNvQ0VDSVJJQWF6bEY0YkRRQWdCU0FHSUFaQkFXdHhRUUJISUFaQkEwbHlJQVpCQVhSeUlnY0NmeUFTSUJHVmpTSVJRd0FBZ0U5ZElCRkRBQUFBQUdCeEJFQWdFYWtNQVF0QkFBc2lBU0FCSUFkSkd4RERBU0FGS0FJRUlnWWdCa0VCYTNGRkJFQWdCa0VCYXlBRGNTRUhEQUVMSUFNZ0Jra0VRQ0FESVFjTUFRc2dBeUFHY0NFSEN3SkFJQWRCQW5RaUFTQUZLQUlBYWlnQ0FDSURSUVJBSUFRb0FnQWdCU2dDQ0RZQ0FDQUZJQVFvQWdBMkFnZ2dCU2dDQUNBQmFpQUZRUWhxTmdJQUlBUW9BZ0FpQXlnQ0FDSUJSUTBCSUFFb0FnUWhDUUpBSUFZZ0JrRUJheUlCY1VVRVFDQUJJQWx4SVFrTUFRc2dCaUFKU3cwQUlBa2dCbkFoQ1FzZ0JTZ0NBQ0FKUVFKMGFpQUROZ0lBREFFTElBUW9BZ0FnQXlnQ0FEWUNBQ0FESUFRb0FnQTJBZ0FMSUFRb0FnQWhDU0FFUVFBMkFnQWdCU0FGS0FJTVFRRnFOZ0lNSUFRUWdBbEJBUXM2QUF3Z0NDQUpOZ0lJSUFSQkVHb2tBQ0FRSUFnb0FnZzJBZ0FnRUNBSUxRQU1PZ0FFSUFoQkVHb2tBQXNDZnlBTktBSlFRUUpQQkVBZ0FpQUFLQUlRSUEwb0Frd29BZ1FRbHdFMkFuZ2dBQ2dDREVFRWFpSUJJQUpCR0dvUXl3WWhBQ0FDUVFBNkFHUWdBa0hBbkNBMkFtQWdBU0FBSUFKQitBQnFJQUpCNEFCcUVORVBEQUVMSUFBb0FneEJCR29pQVNBQ1FSaHFFTXNHSVFBZ0FrRUFPZ0JrSUFKQndKd2dOZ0pnSUFFZ0FDQUNRZUFBYWhEakJ3c2hCd3dCQ3lBQ1FRQTZBQndnQWlBTlFkZ0FhallDR0NBQ1FSaHFFTGNQUlEwQUlBMG9Ba3dvQWdBaUJTZ0NCQ0VCSUFBb0FoQWdCVUVBSUFGQitPMFBSaHNRbFFraEFTQU5LQUpRUVFKUEJFQWdBaUFBS0FJUUlBMG9Ba3dvQWdRUWx3RTJBbmdnQUNnQ0RDRUFJQUpCQURvQVpDQUNRY0NjSURZQ1lDQUFRUVJxSUFFZ0FrSDRBR29nQWtIZ0FHb1EwUThoQnd3QkN5QUFLQUlNSVFBZ0FrRUFPZ0JrSUFKQndKd2dOZ0pnSUFCQkJHb2dBU0FDUWVBQWFoRGpCeUVIQ3lBQ1FZQUJhaVFBSUFjTERRQWdBQ0FCUVp6R0VoQzJCUXNMQUNBQVFaekdFaEMzQlF2Y0NBRUVmeU1BUVlDSEFXc2lCQ1FBSUFRZ0FqWUM1SVlCSUFJUXJ3RkJBQ0VCSUFJb0FwZ0JJZ05CSDAwRVFDQUNLQUtVQVNFSElBTWhBUXNnQWlnQ2tBRWhBd0pBQWtBRFFFRUFJUVVDUUFOQUlBTWdCMFlnQVNBRlJuRU5BU0FEQkg4Z0F5QUZRUUowYWlnQ0FBVkJBQXNpQmtVZ0JpZ0NCRUhJNlE5SGNrVUVRQ0FFUVFBNkFQd0NJQVFnQmtIWUFHbzJBdmdDSUFSQitBSnFFTGNQRFFRTElBTkZCRUJCQUNFRERBRUxJQVZCQVdvaUJVRWdSdzBBQ3lBREtBS0FBU0VEREFFTEN5QUFRUUE2QU5RQ0lBQkJBRG9BQUF3QkN5QUVRZmdDYWlBRVFmQ0RBV29RaFFVaUJTQUNRUUVRMFFZaEFTQUNFSzhCSUFSQ0FEY0Q2QUlnQkVJQU53UGdBaUFFUVlDQWdQd0ROZ0x3QWlBQlFiZ2dhaWdDQUNJRElBRkJ2Q0JxS0FJQVFRVjBhaUVJSUFGQnVCNXFJUVlnQWtIY0FXb2hCd0pBQWtBRFFDQURJQWhHRFFFQ1FDQURLQUlBUWZqdER4QklEUUJCK08wUElBTW9BZ0FRU0EwQUlBTkJJR29oQXd3QkN3c2dCRUVJYWtIUXB3TkJ1Z0pCQVNBQkVNd0RFQmNpQWtFWWFrSFZ1Z29RRGhvZ0FrSDg3UThRbWdFaUNFRVlha0dsdWdvUURob2dDQ0FES0FJQVFRUnFFSm9CR2lBQ0VCZ01BUXNnQkVFSWFoQ2VCU0lEUWZqdER6WUNBRUVVRUJVaUFpQUhOZ0lFSUFKQm5NWVNOZ0lBSUFJZ0FUWUNFQ0FDSUFVMkFnd2dBaUFFUWVBQ2FqWUNDQ0FFSUFJMkF2aUdBU0FFUWVpR0FXb2lBaUFEUVFocUVLd0NJQUlRRmlBR0lBTVFtUVVnQXhEekF3c2dBU2dDdUNBaUF5QUJLQUs4SUVFRmRHb2hBZ0pBQWtBRFFDQUNJQU5HRFFFQ1FDQURLQUlBUWNEL0VSQklEUUJCd1A4UklBTW9BZ0FRU0EwQUlBTkJJR29oQXd3QkN3c2dCRUVJYWtIUXB3TkJ1Z0pCQVNBQkVNd0RFQmNpQWtFWWFrSFZ1Z29RRGhvZ0FrSEUveEVRbWdFaUNFRVlha0dsdWdvUURob2dDQ0FES0FJQVFRUnFFSm9CR2lBQ0VCZ01BUXNnQkVFSWFoQ2VCU0lDUWNEL0VUWUNBQ0FFUWZTR0FXb2dCVFlDQUNBRVFmQ0dBV29nQVRZQ0FDQUVRY0RHRWpZQzZJWUJJQVFnQkVIb2hnRnFJZ00yQXZpR0FTQUVJQVJCNUlZQmFqWUM3SVlCSUFNZ0FrRUlhaENzQWlBREVCWWdCaUFDRUprRklBSVE4d01MSUFFb0FyZ2dJZ01nQVNnQ3ZDQkJCWFJxSVFJQ1FBSkFBMEFnQWlBRFJnMEJBa0FnQXlnQ0FFRzQ3ZzhRU0EwQVFianVEeUFES0FJQUVFZ05BQ0FEUVNCcUlRTU1BUXNMSUFSQkNHcEIwS2NEUWJvQ1FRRWdBUkRNQXhBWElnSkJHR3BCMWJvS0VBNGFJQUpCdk80UEVKb0JJZ1pCR0dwQnBib0tFQTRhSUFZZ0F5Z0NBRUVFYWhDYUFSb2dBaEFZREFFTElBUkJDR29RbmdVaUEwRzQ3ZzgyQWdCQkZCQVZJZ0lnQnpZQ0JDQUNRZVRHRWpZQ0FDQUNJQVUyQWhBZ0FpQUJOZ0lJSUFJZ0JFSGdBbW8yQWd3Z0JDQUNOZ0w0aGdFZ0JFSG9oZ0ZxSWdJZ0EwRUlhaENzQWlBQ0VCWWdCaUFERUprRklBTVE4d01MSUFFUTdnVWdBQ0FFUVFocUlBVVFpZ1FpQUJEZkJ5QUFFTHdESUFSQjRBSnFFTjBISUFFUTBBWWdCUkNPQkJvTElBUkJnSWNCYWlRQUM5Z0lBUkIvSXdCQnNBSnJJZ0lrQUNBQktBSUFJZ01vQWdRaEJTQUFLQUlFS0FJQUlnUVFyd0ZCQUNFQkFrQWdCRUhjQVdvZ0EwRUFJQVZCd0lBU1Joc2lCUkNDQXhDZ0JDSURSUTBBSUFNb0FnUkJvSllTUncwQUlBQW9BZ2doQkNBREtBSXdJUU1nQWtFQU5nSklJQUlnQXpZQ1JDQUNJQVEyQWtBZ0FpQUVLQUt3QWtFQmF6WUNUQ0FDUVVCckVOc2FSUTBBSUFBb0Fnd2hDaUFDUVVCckVLTUxJUXNnQUNnQ0ZDRUhJQUFvQWhBaEF3SkFJQW9nQ3hEWkdpSUJCRUFnQWtFZ2FpQUJRUkJxRUZZYURBRUxJQU1RSENBQ1FZZ0NhaUlJSUFKQlFHc2lBU0lSRU84REtBSUVLQUlrRUY4Z0FrR1lBbW9pREVHQyt3QWdDQkExSUFKQitBQnFJZzBnREVIYUp4QXRJQUpCK0FGcUlnNGdBUkR2QXlnQ0JDZ0NJQkJmSUFKQm1BRnFJZzhnRFNBT0VFNGdBa0dvQVdvaUJDQVBRY0M4QlJBdElBSkI2QUZxSWhBZ0FSRHZBeWdDQUJCZklBSkJ5QUZxSWdZZ0JDQVFFRTVCQUNFQklBSWdBaWdDekFFZ0FpMEEwd0VpQ1NBSlFSaDBRUmgxUVFCSUlna2JOZ0tzQWlBQ0lBSW9Bc2dCSUFZZ0NSczJBcWdDSUFJZ0Fpa0RxQUkzQXhnZ0FrRWdhaUFEUVlnQ2FpQUNRUmhxRUo4RUlBWVFEeG9nRUJBUEdpQUVFQThhSUE4UUR4b2dEaEFQR2lBTkVBOGFJQXdRRHhvZ0NCQVBHaUFDUVFNMkF2d0JJQUpCNThnQk5nTDRBU0FDSUFjMkFwZ0NJQUlnQWlrRCtBRTNBeEFnQWlBUk5nS2NBaUFHSUFNZ0FrRVFhaERoQVNBQ1FvQ0FnSURBQURjQ3ZBRWdBaUFFTmdLNEFRTkFJQUpCUUdzUTd3TW9BZ1FvQWlRZ0FVc0VRQ0FDSUFFMkFuZ2dBaUFESUFKQnlBRnFJQUpCK0FCcUVOZ2FOZ0tZQVNBQlFRRnFJUUVnQWtHb0FXb2dBa0dZQVdvUWNRd0JDd3NnQWtGQWF4RHZBeUFIS0FJQUVMWVBJUUVnQWtFQU9nQ01BU0FDUWNDY0lEWUNpQUVnQXlBQ1FjZ0JhaUlHSUFFZ0FrR0lBV29RMXhvaEFTQUNRUUUyQXV3QklBSWdBVFlDbEFFZ0FpQUNRWlFCYWpZQzZBRWdBaUFDS1FQb0FUY0RDQ0FDSUFKQm1BRnFJQUpCQ0dvUWx3SWlBVUVFYWpZQ2lBSWdBaUFCSUFFb0FnUkhPZ0NNQWlBQ1FaZ0NhaERPR2lFSElBSWdBa0dZQW1vUXpobzJBbUFnQWlBRElBSkI0QUJxSUFKQnFBRnFJZ2dRMVJvMkFtZ2dBeUFDUWVnQWFoRFVHaUVFSUFKQkFUWUNkQ0FDSUFRMkFtd2dBaUFDUWV3QWFqWUNjQ0FDSUFJcEEzQTNBd0FnQWtINEFHb2dBaENYQWlFRUlBSkJBRG9BWENBQ1FjQ2NJRFlDV0NBQ1FRQTZBRlFnQWtIQW5DQTJBbEFnQXlBQ1FTQnFJZ01nQWtHSUFtb2dCeUFFSUFKQjJBQnFJQUpCMEFCcUVOTWFJQVFRcUFFZ0FSQ29BU0FJRUY0Z0JpQUtJQXNnQXhEU0dnc2dBQ2dDRUNFRElBSUNmeUFBS0FJVUlRQkJBQ0FGUlEwQUdpQUFLQUlFSWdFRVFDQUJLQUlBSUFVb0FnaEJBVUVCUWREU0NFSFFwd05CakFFUVN3c0NmeUFGSUFBUTlCNGlBUVJBSUFFZ0FTZ0NCRUhBZ0JKR0RRRWFJQUFnQVVIQWdCSVE0UVFMUVFBTEN6WUN5QUVnQXlBQ1FTQnFJQUpCeUFGcUVMTVBJUUVMSUFKQnNBSnFKQUFnQVFzTkFDQUFJQUZCdE1VU0VNY01Dd3NBSUFCQnRNVVNFTWdNQzhZSUFSRi9Jd0JCd0FKcklnSWtBQ0FCS0FJQUlnTW9BZ1FoQkNBQUtBSUVLQUlBSWdVUXJ3RkJBQ0VCQWtBZ0JVSGNBV29nQTBFQUlBUkIrT3NQUmhzaUNTZ0NKQkRlR2lJRVJRMEFJQUFvQWdnaEF5QUVLQUl3SVFRZ0FrRUFOZ0pRSUFJZ0JEWUNUQ0FDSUFNMkFrZ2dBaUFES0FLd0FrRUJhellDVkNBQ1FjZ0FhaERiR2tVTkFDQUFLQUlNSVFvZ0FrSElBR29Rb3dzaEN5QUFLQUlVSVFZZ0FDZ0NFQ0VEQWtBZ0NpQUxFTmthSWdFRVFDQUNRU2hxSUFGQkVHb1FWaG9NQVFzZ0F4QWNJQUpCaUFKcUlnY2dBa0hJQUdvaUFTSVNFTzhES0FJRUtBSWtFRjhnQWtHWUFtb2lERUdKK3dBZ0J4QTFJQUpCcUFKcUlnMGdERUhhSnhBdElBSkIrQUZxSWc0Z0FSRHZBeWdDQkNnQ0lCQmZJQUpCZ0FGcUlnOGdEU0FPRUU0Z0FrR1lBV29pRUNBUFFjQzhCUkF0SUFKQjZBRnFJaEVnQWtISUFHb1E3d01vQWdBUVh5QUNRYWdCYWlJRUlCQWdFUkJPSUFKQnlBRnFJZ1VnQkVIWHlBRVFMVUVBSVFFZ0FpQUNLQUxNQVNBQ0xRRFRBU0lJSUFoQkdIUkJHSFZCQUVnaUNCczJBcndDSUFJZ0FpZ0N5QUVnQlNBSUd6WUN1QUlnQWlBQ0tRTzRBamNESUNBQ1FTaHFJQU5CaUFKcUlBSkJJR29RbndRZ0JSQVBHaUFFRUE4YUlCRVFEeG9nRUJBUEdpQVBFQThhSUE0UUR4b2dEUkFQR2lBTUVBOGFJQWNRRHhvZ0FrRUJOZ0w4QVNBQ1FZYjZBallDK0FFZ0FpQUdOZ0tzQWlBQ0lBSXBBL2dCTndNWUlBSWdFallDcUFJZ0JTQURJQUpCR0dvUTRRRWdBa0tBZ0lDQXdBQTNBcndCSUFJZ0JEWUN1QUVEUUNBQ1FjZ0FhaER2QXlnQ0JDZ0NKQ0FCU3dSQUlBSWdBVFlDZ0FFZ0FpQURJQUpCeUFGcUlBSkJnQUZxRU5nYU5nS1lBU0FCUVFGcUlRRWdBa0dvQVdvZ0FrR1lBV29RY1F3QkN3c2dCaUFDUWNnQWFoRHZBeWdDQkJEZEJDRUJJQUpCQURvQTdBRWdBa0hBbkNBMkF1Z0JJQU1nQWtISUFXb2lCU0FCSUFKQjZBRnFFTmNhSVFFZ0FrRUJOZ0tNQWlBQ0lBRTJBcFFCSUFJZ0FrR1VBV28yQW9nQ0lBSWdBaWtEaUFJM0F4QWdBaUFDUVpnQmFpQUNRUkJxRUpjQ0lnRkJCR28yQXBnQ0lBSWdBU0FCS0FJRVJ6b0FuQUlnQWtHb0Ftb1ExaG9oQmlBQ0lBSkJxQUpxRU5ZYU5nSm9JQUlnQXlBQ1FlZ0FhaUFDUWFnQmFpSUhFTlVhTmdKd0lBTWdBa0h3QUdvUTFCb2hCQ0FDUVFFMkFud2dBaUFFTmdKMElBSWdBa0gwQUdvMkFuZ2dBaUFDS1FONE53TUlJQUpCZ0FGcUlBSkJDR29RbHdJaEJDQUNRUUE2QUdRZ0FrSEFuQ0EyQW1BZ0FrRUFPZ0JjSUFKQndKd2dOZ0pZSUFNZ0FrRW9haUlESUFKQm1BSnFJQVlnQkNBQ1FlQUFhaUFDUWRnQWFoRFRHaUFFRUtnQklBRVFxQUVnQnhCZUlBVWdDaUFMSUFNUTBob0xJQUlnQUNnQ0ZDQUpLQUlrRU1ZR05nTElBU0FBS0FJUUlRRWdBaUFBS0FJVUlBa29BaWdRbHdFMkFwZ0JJQUlnQVNBQ1FTaHFJQUpCbUFGcUVMTVBOZ0tvQVNBQUtBSVFJQUpCeUFGcUlBSkJxQUZxRUlFSklRRUxJQUpCd0FKcUpBQWdBUXNOQUNBQUlBRkJrTVVTRU1jTUN3c0FJQUJCa01VU0VNZ01DN1VCQVFSL0l3QkJFR3NpQWlRQUlBRW9BZ0FpQXlnQ0JDRUVJQUFvQWdRb0FnQWlCUkN2QVVFQUlRRUNRQ0FGUWR3QmFpQURRUUFnQkVIQS94RkdHeUlES0FJa0VONGFJZ1JGRFFBZ0FDZ0NDQ0VGSUFJZ0JDZ0NNRFlDQkNBQ1FRaHFJQVVnQWtFRWFoRGRHaUFDTFFBSVJRMEFJQUlnQUNnQ0RDQURLQUlrRU1ZR05nSUlJQUlnQUNnQ0RDQURLQUlvRUpjQk5nSUVJQUFvQWhBZ0FrRUlhaUFDUVFScUVMUVBJUUVMSUFKQkVHb2tBQ0FCQ3cwQUlBQWdBVUhzeEJJUXRnVUxDd0FnQUVIc3hCSVF0d1VMRlFBZ0FVSEl4QkkyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCeU1RU0VKOERDK1VYQWhKL0EzNGpBRUh3aVFGcklnUWtBQ0FFSUFJMkF0U0pBU0FFUWVnRmFpQUVRZUNHQVdvUWhRVWlDaUFDUVFFUTBRWWhDQ0FFUW9DQWdJREFBVGNDMUFVZ0JFSUFOd0xjQlNBRUlBUkJzQU5xSWdFMkF0QUZJQUZCREJDNUR5QUNFSzhCUVFBaEFTQUNLQUtZQVNJRFFSOU5CRUFnQWlnQ2xBRWhGQ0FESVFFTElBSW9BcEFCSVEwZ0JFRVlhaUVWQWtBRFFFRUFJUkFDUUFOQUlBMGdGRWNnQVNBUVIzSkZCRUFnQkNnQzNBVU5BaUFBUVFBNkFOUUNJQUJCQURvQUFBd0VDd0pBSUEwRWZ5QU5JQkJCQW5ScUtBSUFCVUVBQ3lJQ1JTQUNLQUlFUWRqM0VVZHlEUUFnQkNnQzFJa0JJZ01RcndFZ0EwSGNBV29nQWhEb0dpSUNRUWdRNXhwRkJFQWdBa0VIRU9jYVJRMEJDeUFDS0FKRUloRWdBaWdDU0VFQ2RHb2hGZ05BSUJFZ0ZrWU5BUUpBSUJFb0FnQWlEQ2dDS0NJQ0tBSUVRZkNxRWtjZ0FrVnlEUUFnRENnQ1hDRURJQVJCQURvQXJBTWdCQ0FEUVR4cU5nS29BeUFFUWFnRGFoQzNEeUlEUlEwQUlBTW9BaVFpQXlBQ0VMb2JSZzBBSUFRZ0FqWUM5QUlnQkNBRE5nTHdBaUFNS0FJd0lRTWdCQ0FJSUFSQmlBTnFJQXhCQ0dvUVZoRHZCeUFFUWZBQ2FpQUlLQUlBRUxZUElRVWpBRUZBYWlJQ0pBQWdBaUFGTmdJNElBSWdDaUFFRVBNQ05nSTBJQUlnQTYwM0F3Z2pBRUVRYXlJREpBQWdBeUFLSUFKQkNHb1E2UVUyQWd3Z0NpQUtRZGdDYWlJU0lBTkJER29RNEJvaEJTQURRUkJxSkFBZ0JTRURJQUpCQVRZQ0hDQUNJQU0yQWhRZ0FpQUNRUlJxTmdJWUlBSWdBaWtER0RjREFDQUNRU0JxSUFJUWx3SWhCU01BUVJCcklnY2tBQ0FLRUJ3Z0NpQUtLQUlNUVFGcUlnTTJBZ3dnQnlBRE5nSUlJd0JCRUdzaUF5UUFJQXBCakFGcUlnWVFoaEVoQ1NBQ0tBSTRJUXNnQWlnQ05DRVBJQWNvQWdnaERpQUtLQUlJSVJNZ0F5QUZRUVJxTmdJSUlBTWdCU2dDQkNBRlJ6b0FEQ0FHSUFrZ0V5QU9JQklnRHlBTElBTkJDR29RaHhFaUNSQW9JQVlnQmlnQ0dFRUJhallDR0NBRFFSQnFKQUFnQjBFUWFpUUFJQWtoQXlBRkVLZ0JJQUpCUUdza0FDQU1LQUpjSVFVakFFRVFheUlDSkFBZ0FpQUZOZ0lNSUFnb0FnUW9BZ0FnQlJCWFFRRkJBVUdwbndoQjBLY0RRZXNDRUVzZ0NDZ0NBQ2dDQ0NBREVGZEJBVUVCUVltMkNFSFFwd05CN0FJUVN5QUNJQU0yQWdnZ0FrRU1haUVISXdCQjBBRnJJZ01rQUNBSVFRaHFJZ1VvQXNRRUlBVW9BdEFFSWdaQmxnRnNRWllCYWtIa0FHNUpCRUFnQlNBR1FRRjBRUUpxRUpvRUN5QURRY2dCYWlBRklBY1E2d01nQlNnQ3hBUWlEa0VCYXlFVElBY29BZ0FoQmlBRktBTEFCQ0VQSUFNb0Fzd0JJUklnQXlnQ3lBRWhDVUVBSVFzQ1FBTkFJQXNnRGtjRVFDQVBJQWxCTUd4cUlnY3RBQ0JGQkVBZ0F5QUdOZ0lJSUFJb0FnZ2hCaUFESUFOQkVHb2lEallDSUNBRElBWTJBaFFnQTBISXhCSTJBaEFnQnlBRFFRaHFFSmtFSUE0UUZpQURLQUxNQVNFR0lBOGdDVUV3YkdvaUNTQUxOZ0lzSUFrZ0JqWUNLQ0FGSUFVb0F0QUVRUUZxTmdMUUJDQUZJQVVvQXRRRVFRRnFOZ0xVQkNBQ0lBZEJDR28yQWdRZ0FrRUFOZ0lBREFNTEFrQWdCeWdDS0NBU1J3MEFJQVlnQnlnQ0FFY05BQ0FESUFZMkFnZ2dBaWdDQ0NFR0lBTWdBMEVRYWlJSk5nSWdJQU1nQmpZQ0ZDQURRY2pFRWpZQ0VDQUhJQU5CQ0dvUTJ3UWdDUkFXSUFVZ0JTZ0MxQVJCQVdvMkF0UUVJQUlnQjBFSWFqWUNCQ0FDUVFFMkFnQU1Bd3NnQ3lBSEtBSXNTd1JBSUFNZ0JqWUNxQUVnQWlnQ0NDRUdJQU1nQTBHd0FXb2lEellDd0FFZ0F5QUdOZ0swQVNBRFFjakVFallDc0FFZ0EwRUlhaUFEUWFnQmFoQ1hCQ0VHSUFNb0Fzd0JJUTRnQmlBTE5nSXNJQVlnRGpZQ0tDQVBFQllnQmlBSEVQQURJQVlnQmlnQ0xFRUJhallDTENBRklBbEJBV29nQlNnQ3hBUndJQVlRbGdRZ0JTQUZLQUxRQkVFQmFqWUMwQVFnQlNBRktBTFVCRUVCYWpZQzFBUWdBaUFIUVFocU5nSUVJQUpCQURZQ0FDQUdFSmtEREFNRklBbEJBV3BCQUNBSklCTkhHeUVKSUF0QkFXb2hDd3dDQ3dBTEN5QURRUWhxUVlhMUEwSHJBMEVPSUFOQnFBRnFFQjBpQlJBWElnZEJHR3BCbGpVUURob2dCeEFZSUFKQ0FEY0NBQ0FGRUI0TElBTkIwQUZxSkFBZ0FrRVFhaVFBSUFRb0F0UUZJQVFvQXR3RklnSkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0JFR3dBMm9nQWtFQmRFRUNhaERtR2dzZ0RCRDhBaUVISUFRb0F0UUZJZ1pCQVdzaENTQUhJQVp3SVFWQkFDRUNJQVFvQXRBRklRc0RRQ0FDSUFaSEJFQWdDeUFGUVJoc2FpSURMUUFNUlFSQUlBUXBBL0FDSVJjZ0EwRUJPZ0FNSUFNZ0Z6Y0NCQ0FESUF3MkFnQWdBeUFDTmdJVUlBTWdCellDRUNBRUlBUW9BdHdGUVFGcU5nTGNCU0FFSUFRb0F1QUZRUUZxTmdMZ0JRd0RDeUFISUFNb0FoQkdCRUFnRENBREtBSUFSZzBEQ3lBQ0lBTW9BaFJMQkVBZ0JFSG9pUUZxSWdZZ0J6WUNBQ0FFSUFRcEEvQUNOd0xjaVFFZ0JDQU1OZ0xZaVFFZ0JDQUNOZ0xzaVFFZ0JFRUJPZ0RraVFFZ0JDQUdLUU1BSWhjM0F4QWdCQ0FFUWVDSkFXb2lBaWtEQUNJWU53TUlJQVFnQkNrRDJJa0JJaGszQXdBZ0JpQURLUUlRTndNQUlBSWdBeWtDQ0RjREFDQUVJQU1wQWdBM0E5aUpBU0FESUJjM0FoQWdBeUFZTndJSUlBTWdHVGNDQUNBRUlBUW9BdXlKQVVFQmFqWUM3SWtCSUFSQnNBTnFJQVZCQVdvZ0JDZ0MxQVZ3SUFSQjJJa0JhaENDRUNBRUlBUW9BdHdGUVFGcU5nTGNCU0FFSUFRb0F1QUZRUUZxTmdMZ0JRd0RCU0FGUVFGcVFRQWdCU0FKUnhzaEJTQUNRUUZxSVFJTUFnc0FDd3NnQkVHR3RRTkI2d05CRGlBRVFkaUpBV29RSFNJQ0VCY2hBeUFWUVpZMUVBNGFJQU1RR0NBQ0VCNExJQkZCQkdvaEVRd0FDd0FMSUExRkJFQkJBQ0VOREFFTElCQkJBV29pRUVFZ1J3MEFDeUFOS0FLQUFTRU5EQUVMQ3lBSVFiZ2dhaWdDQUNJQ0lBaEJ2Q0JxS0FJQVFRVjBhaUVCSUFoQnVCNXFJUU1DUUFKQUEwQWdBU0FDUmcwQkFrQWdBaWdDQUVIQS94RVFTQTBBUWNEL0VTQUNLQUlBRUVnTkFDQUNRU0JxSVFJTUFRc0xJQVJCMEtjRFFib0NRUUVnQ0JETUF4QVhJZ0ZCR0dwQjFib0tFQTRhSUFGQnhQOFJFSm9CSWdWQkdHcEJwYm9LRUE0YUlBVWdBaWdDQUVFRWFoQ2FBUm9nQVJBWURBRUxJQVFRbmdVaUFrSEEveEUyQWdCQkZCQVZJZ0ZCN01RU05nSUFJQUVnQ2pZQ0VDQUJJQWcyQWd3Z0FTQUVRZFNKQVdvMkFnUWdBU0FFUWJBRGFqWUNDQ0FFSUFFMkF1aUpBU0FFUWRpSkFXb2lBU0FDUVFocUVLd0NJQUVRRmlBRElBSVFtUVVnQWhEekF3c2dCRUlBTndQNEFpQUVRZ0EzQS9BQ0lBUkJnSUNBL0FNMkFvQURJQWdvQXJnZ0lnSWdDQ2dDdkNCQkJYUnFJUUVDUUFKQUEwQWdBU0FDUmcwQkFrQWdBaWdDQUVINDZ3OFFTQTBBUWZqckR5QUNLQUlBRUVnTkFDQUNRU0JxSVFJTUFRc0xJQVJCMEtjRFFib0NRUUVnQ0JETUF4QVhJZ0ZCR0dwQjFib0tFQTRhSUFGQi9Pc1BFSm9CSWdWQkdHcEJwYm9LRUE0YUlBVWdBaWdDQUVFRWFoQ2FBUm9nQVJBWURBRUxJQVFRbmdVaUFrSDQ2dzgyQWdCQkdCQVZJZ0ZCa01VU05nSUFJQUVnQ0RZQ0ZDQUJJQW8yQWhBZ0FTQUVRZFNKQVdvMkFnUWdBU0FFUWZBQ2FqWUNEQ0FCSUFSQnNBTnFOZ0lJSUFRZ0FUWUM2SWtCSUFSQjJJa0JhaUlCSUFKQkNHb1FyQUlnQVJBV0lBTWdBaENaQlNBQ0VQTURDeUFFUWdBM0ErQUNJQVJDQURjRDJBSWdCRUdBZ0lEOEF6WUM2QUlnQ0NnQ3VDQWlBaUFJS0FLOElFRUZkR29oQVFKQUFrQURRQ0FCSUFKR0RRRUNRQ0FDS0FJQVFjQ0FFaEJJRFFCQndJQVNJQUlvQWdBUVNBMEFJQUpCSUdvaEFnd0JDd3NnQkVIUXB3TkJ1Z0pCQVNBSUVNd0RFQmNpQVVFWWFrSFZ1Z29RRGhvZ0FVSEVnQklRbWdFaUEwRVlha0dsdWdvUURob2dBeUFDS0FJQVFRUnFFSm9CR2lBQkVCZ01BUXNnQkJDZUJTSUNRY0NBRWpZQ0FFRVlFQlVpQVVHMHhSSTJBZ0FnQVNBSU5nSVVJQUVnQ2pZQ0VDQUJJQVJCMUlrQmFqWUNCQ0FCSUFSQjJBSnFOZ0lNSUFFZ0JFR3dBMm8yQWdnZ0JDQUJOZ0xvaVFFZ0JFSFlpUUZxSWdFZ0FrRUlhaENzQWlBQkVCWWdBeUFDRUprRklBSVE4d01MSUFnUTdnVWdBQ0FFSUFvUWlnUWlBQkRmQnlBQUVMd0RJQVJCMkFKcUVPVWFJQVJCOEFKcUVPVWFDeUFFUWJBRGFpSUFFT1FhSUFSQkFEWUMxQVVnQUNBRUtBTFFCUkEySUFnUTBBWWdDaENPQkJvZ0JFSHdpUUZxSkFBTHdRTUJCbjhnQVNnQ0FCQ1RDQ0VCSXdCQklHc2lBaVFBSUFBb0FnZ2hCQ0FBS0FJRUlRQWdBa0VBTmdJUUlBSWdBVFlDRENBQ0lBQTJBZ2dnQWlBQUtBS2dCRUVCYXpZQ0ZBSkFJQUpCQ0dvUTlSb0VRQ0FFS0FMNEFpQUNRUWhxRUwwUEVOb0VJUU1NQVFzRFFBSkFBa0FnQVVVZ0FTZ0NCRUdBZ1JKSGNnMEFRUUVoQUFKQUFrQWdBU2dDSkE0REFBSUJBZ3RCZnlFQUN5QUJRU2hxSVFFZ0FDQUZhaUVGREFFTElBUW9BdndDSWdBUXJ3RUNRQ0FBUWR3QmFpQUJFT0VjSWdCRkRRQWdBQ2dDTENJQUtBSUVRYWljRWtjTkFDQUFLQUlJSWdNb0FnUkI0UGtQUncwQUlBQW9BZ3dvQWdSQjJLd1NSdzBBSUFOQkxHb2hBUXdCQ3lBQ0lBUkIrQUpxSUFFUXhnWWlBellDSEVFQUlRRWdCVUVBSUFWQkFFb2JJUWRCQUNFQUEwQWdBQ0FIUmdSQUEwQWdBU0FGVEEwRklBSWdCQ2dDK0FJZ0FrRWNhaERlQnlJRE5nSWNJQUZCQVdzaEFRd0FDd0FGSUFRb0F2Z0NJUVlqQUVFUWF5SURKQUFnQTBFQ05nSU1JQU1nQWlnQ0hEWUNDQ0FHSUFOQkRHb2dBMEVJYWhDNkR5RUdJQU5CRUdva0FDQUNJQVlpQXpZQ0hDQUFRUUZxSVFBTUFRc0FDd0FMSUFFb0FnQWhBUXdBQ3dBTElBSkJJR29rQUNBREN4VUFJQUZCME1NU05nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFkRERFaENIQmdzVkFDQUJRYXpERWpZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVHc3d4SVFud01McmdZQkIzOGpBRUh3Z3dGcklnRWtBQ0FCSUFJUWdSc2hDRUVBSVFNakFFR1FCMnNpQkNRQUlBUkI2QUpxRU1RUElRc2dCRUVBT2dEbkFpQUlLQUw4QWlJRkVLOEJRUUFnQlNnQ0hDSUNJQUpCSDBzaUFoc2hCMEVBSUFVb0FoZ2dBaHNoQWlBSVFmZ0NhaUVKSUFVb0FoUWhCZ05BQWtBQ1FDQUNJQVpHSUFNZ0IwWnhSUVJBQWtBZ0JrVUVRRUVBSVFaQkJDZ0NBRUhZckJKSERRVU1BUXNnQmlBRFFRSjBhaWdDQUNnQ0JFSFlyQkpIRFFJTElBUkJBVG9BNXdJTElBZ29BdndDSWdjUXJ3RkJBQ0VGUVFBaEJrRUFJUUlnQnlnQ21BRWlBMEVmVFFSQUlBY29BcFFCSVFZZ0F5RUNDeUFIS0FLUUFTRURBa0FEUUFKQUlBTWdCa2NnQWlBRlIzSkZCRUFnQkMwQTV3SU5BU0FBUVFBNkFOUUNJQUJCQURvQUFBd0RDeUFEQkg4Z0F5QUZRUUowYWlnQ0FDRUhJQVFnQ3pZQ0RDQUVJQWcyQWdnZ0JDQUVRZWNDYWpZQzRBSWdCeUFFUVFocUlBUkI0QUpxRVBRYUlBVkJBV29pQlVFZ1J3MENRUUFoQlNBREtBS0FBUVVnQkNBTE5nSU1JQVFnQ0RZQ0NDQUVJQVJCNXdKcU5nTGdBa0VBSUFSQkNHb2dCRUhnQW1vUTlCcEJBQXNoQXd3QkN3c2dCQ0FMTmdJSUlBUWdDRFlDRENBRVFRaHFJUWNqQUVHd0FXc2lDaVFBSUFsQnVDQnFLQUlBSWdVZ0NVRzhJR29vQWdCQkJYUnFJUU1nQ1VHNEhtb2hBZ0pBQWtBRFFDQURJQVZHRFFFQ1FDQUZLQUlBUWRqb0R4QklEUUJCMk9nUElBVW9BZ0FRU0EwQUlBVkJJR29oQlF3QkN3c2dDa0VRYWtIUXB3TkJ1Z0pCQVNBSkVNd0RFQmNpQTBFWWFrSFZ1Z29RRGhvZ0EwSGM2QThRbWdFaUFrRVlha0dsdWdvUURob2dBaUFGS0FJQVFRUnFFSm9CR2lBREVCZ01BUXNnQ2tFUWFoQ2VCU0lGUWRqb0R6WUNBQ0FLSUFjcEFnQTNBd2dqQUVFZ2F5SUdKQUFnQmlBS0tRSUlOd0lNSUFaQjBNTVNOZ0lJSUFZZ0JrRUlhaUlETmdJWUlBTWdCVUVJYWhDc0FpQURFQllnQmtFZ2FpUUFJQUlnQlJDWkJTQUZFUE1EQ3lBS1FiQUJhaVFBSUFrUTdnVWdBQ0FISUFoQkJHb1FpZ1FpQUJEZkJ5QUFFTHdEQ3lBTEVNTVBJQVJCa0FkcUpBQU1BUXNnQTBFQmFpSURRU0JIRFFFZ0JpZ0NnQUVoQmtFQUlRTU1BUXNMSUFnUWdCc2dBVUh3Z3dGcUpBQUxvd0VCQTM4Z0FTZ0NBQ0lCUVFBZ0FTZ0NCRUg0N1E5R0d5RUNJd0JCRUdzaUFTUUFJQUFvQWd3aEJBSkFJQUFvQWdRZ0FoQ0NBeUlDUlEwQUlBSVFvQVFpQWtVTkFDQUNLQUlFUWRpY0VrY05BQ0FBS0FJSUlRQWdBaWdDTENFQ0lBRkJBRFlDQ0NBQklBSTJBZ1FnQVNBQU5nSUFJQUVnQUNnQ29BUkJBV3MyQWd3Z0FSRDFHa1VOQUNBRVFRUnFJQUVRdlE4UTJnUWhBd3NnQVVFUWFpUUFJQU1MRFFBZ0FDQUJRY1RDRWhEV0FRc0xBQ0FBUWNUQ0VoRFJFZ3NWQUNBQlFhRENFallDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUdnd2hJUWh3WUxGUUFnQVVIOHdSSTJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkIvTUVTRUljR0Mva1NBaFovQVg0akFFSHdnd0ZySWdFa0FDQUJJQUlRZ1JzaEVrRUFJUUlqQUVHZ0Iyc2lCQ1FBSUJJb0FnQWlDeEN2QVNBRUlBUkIrQUpxRU1RUEloZzJBdlFDSUFRZ0VqWUM4QUlnQkVFQU9nRHZBaUFTS0FMOEFpSUhFSzhCSUFjb0FyUUJJZ05CSDAwRVFDQUhLQUt3QVNFWklBTWhBZ3NnRWtINEFtb2hGaUFMUWR3QmFpRWFJQWNvQXF3QklRTUNRQU5BQWtBZ0F5QVpSeUFDSUJkSGNrVUVRQ0FFTFFEdkFnMEJJQUJCQURvQTFBSWdBRUVBT2dBQURBTUxRUUFoQlNBREJFQWdBeUFYUVFKMGFpZ0NBQ0VGQ3lBRUlCSTJBZ2dnQkNBRVFlOENhaUlITmdJUUlBUWdCRUh3QW1vaUN6WUNEQ0FFSUJJMkF1QUNJQVFnQnpZQzZBSWdCQ0FMTmdMa0FpQUVRUWhxSVFjZ0JFSGdBbW9oQ3lNQVFSQnJJaE1rQUNBVElBVTJBZ3dDUUNBRlJRMEFJQk1nQlNnQ0JEWUNBQ0FUSUJOQkRHbzJBZ1FnRXlnQ0FDSVZRYWljRWtZRVFDQVRLQUlFS0FJQUlRNUJBQ0VNSXdCQkVHc2lEeVFBSUE0b0FsUUVRQ0FPS0FJSUlRZ2dCeWdDQUNFRklBOGdEallDQ0NBUElBY29BZ1EyQWd3akFFRVFheUlHSkFBZ0JpQUlOZ0lNSUFWQitBSnFJZ1VvQWdRb0FnQWdDQkJYUVFGQkFVR3Bud2hCMEtjRFFZQURFRXNqQUVIUUFXc2lDU1FBSUFWQkNHb2lEU2dDeEFRZ0RTZ0MwQVFpQlVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FOSUFWQkFYUkJBbW9RbWdRTElBbEJ5QUZxSUEwZ0JrRU1haUlGRU9zRElBMG9Bc1FFSWc1QkFXc2hDQ0FGS0FJQUlSRWdEU2dDd0FRaEZDQUpLQUxNQVNFRklBa29Bc2dCSVJBQ1FBTkFJQXdnRGtjRVFDQVVJQkJCTUd4cUlnb3RBQ0JGQkVBZ0NTQVJOZ0lJSUE4cEFnZ2hHeUFKSUFsQkVHb2lCVFlDSUNBSklCczNBaFFnQ1VIOHdSSTJBaEFnQ2lBSlFRaHFFSmtFSUFVUUZpQUpLQUxNQVNFSUlCUWdFRUV3YkdvaUJTQU1OZ0lzSUFVZ0NEWUNLQ0FOSUEwb0F0QUVRUUZxTmdMUUJDQU5JQTBvQXRRRVFRRnFOZ0xVQkNBR0lBcEJDR28yQWdRZ0JrRUFOZ0lBREFNTEFrQWdDaWdDS0NBRlJ3MEFJQkVnQ2lnQ0FFY05BQ0FKSUJFMkFnZ2dEeWtDQ0NFYklBa2dDVUVRYWlJRk5nSWdJQWtnR3pjQ0ZDQUpRZnpCRWpZQ0VDQUtJQWxCQ0dvUTJ3UWdCUkFXSUEwZ0RTZ0MxQVJCQVdvMkF0UUVJQVlnQ2tFSWFqWUNCQ0FHUVFFMkFnQU1Bd3NnRENBS0tBSXNTd1JBSUFrZ0VUWUNxQUVnRHlrQ0NDRWJJQWtnQ1VHd0FXb2lDRFlDd0FFZ0NTQWJOd0swQVNBSlFmekJFallDc0FFZ0NVRUlhaUFKUWFnQmFoQ1hCQ0VPSUFrb0Fzd0JJUVVnRGlBTU5nSXNJQTRnQlRZQ0tDQUlFQllnRGlBS0VQQURJQTRnRGlnQ0xFRUJhallDTENBTklCQkJBV29nRFNnQ3hBUndJQTRRbGdRZ0RTQU5LQUxRQkVFQmFqWUMwQVFnRFNBTktBTFVCRUVCYWpZQzFBUWdCaUFLUVFocU5nSUVJQVpCQURZQ0FDQU9FSmtEREFNRklCQkJBV3BCQUNBSUlCQkhHeUVRSUF4QkFXb2hEQXdDQ3dBTEN5QUpRUWhxUVlhMUEwSHJBMEVPSUFsQnFBRnFFQjBpQ0JBWElnVkJHR3BCbGpVUURob2dCUkFZSUFaQ0FEY0NBQ0FJRUI0TElBbEIwQUZxSkFBZ0JrRVFhaVFBSUFjb0FnaEJBVG9BQUFzZ0QwRVFhaVFBQ3lBVlFhaWNFa1lOQUNBVEtBSUFRY0NjRWtZRVFDQVRLQUlFS0FJQUlRaEJBQ0VRSXdCQkVHc2lFU1FBSUFnb0Fsd0VRQ0FJS0FJSUlRVWdDeWdDQUNFSElCRWdDRFlDQ0NBUklBc29BZ1EyQWd3akFFRVFheUlNSkFBZ0RDQUZOZ0lNSUFkQitBSnFJZ2NvQWdRb0FnQWdCUkJYUVFGQkFVR3Bud2hCMEtjRFFZQURFRXNqQUVIUUFXc2lCaVFBSUFkQkNHb2lDaWdDeEFRZ0NpZ0MwQVFpQjBHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FLSUFkQkFYUkJBbW9RbWdRTElBWkJ5QUZxSUFvZ0RFRU1haUlIRU9zRElBb29Bc1FFSWdoQkFXc2hCU0FIS0FJQUlSVWdDaWdDd0FRaERpQUdLQUxNQVNFSElBWW9Bc2dCSVJRQ1FBTkFJQWdnRUVjRVFDQU9JQlJCTUd4cUlnOHRBQ0JGQkVBZ0JpQVZOZ0lJSUJFcEFnZ2hHeUFHSUFaQkVHb2lCellDSUNBR0lCczNBaFFnQmtHZ3doSTJBaEFnRHlBR1FRaHFFSmtFSUFjUUZpQUdLQUxNQVNFRklBNGdGRUV3YkdvaUJ5QVFOZ0lzSUFjZ0JUWUNLQ0FLSUFvb0F0QUVRUUZxTmdMUUJDQUtJQW9vQXRRRVFRRnFOZ0xVQkNBTUlBOUJDR28yQWdRZ0RFRUFOZ0lBREFNTEFrQWdEeWdDS0NBSFJ3MEFJQlVnRHlnQ0FFY05BQ0FHSUJVMkFnZ2dFU2tDQ0NFYklBWWdCa0VRYWlJSE5nSWdJQVlnR3pjQ0ZDQUdRYURDRWpZQ0VDQVBJQVpCQ0dvUTJ3UWdCeEFXSUFvZ0NpZ0MxQVJCQVdvMkF0UUVJQXdnRDBFSWFqWUNCQ0FNUVFFMkFnQU1Bd3NnRUNBUEtBSXNTd1JBSUFZZ0ZUWUNxQUVnRVNrQ0NDRWJJQVlnQmtHd0FXb2lCVFlDd0FFZ0JpQWJOd0swQVNBR1FhRENFallDc0FFZ0JrRUlhaUFHUWFnQmFoQ1hCQ0VJSUFZb0Fzd0JJUWNnQ0NBUU5nSXNJQWdnQnpZQ0tDQUZFQllnQ0NBUEVQQURJQWdnQ0NnQ0xFRUJhallDTENBS0lCUkJBV29nQ2lnQ3hBUndJQWdRbGdRZ0NpQUtLQUxRQkVFQmFqWUMwQVFnQ2lBS0tBTFVCRUVCYWpZQzFBUWdEQ0FQUVFocU5nSUVJQXhCQURZQ0FDQUlFSmtEREFNRklCUkJBV3BCQUNBRklCUkhHeUVVSUJCQkFXb2hFQXdDQ3dBTEN5QUdRUWhxUVlhMUEwSHJBMEVPSUFaQnFBRnFFQjBpQlJBWElnZEJHR3BCbGpVUURob2dCeEFZSUF4Q0FEY0NBQ0FGRUI0TElBWkIwQUZxSkFBZ0RFRVFhaVFBSUFzb0FnaEJBVG9BQUFzZ0VVRVFhaVFBQ3dzZ0UwRVFhaVFBSUFORkJFQkJBQ0VEREFJTElCZEJBV29pRjBFZ1J3MEJJQU1vQW9BQklRTkJBQ0VYREFFTEN5QUVJQmcyQWd3Z0JDQWFOZ0lJSUFRZ0VqWUNFQ0FFUVFocUlRY2pBRUd3QVdzaUNDUUFJQlpCdUNCcUtBSUFJZ3NnRmtHOElHb29BZ0JCQlhScUlRTWdGa0c0SG1vaEFnSkFBa0FEUUNBRElBdEdEUUVDUUNBTEtBSUFRZmp0RHhCSURRQkIrTzBQSUFzb0FnQVFTQTBBSUF0QklHb2hDd3dCQ3dzZ0NFRVFha0hRcHdOQnVnSkJBU0FXRU13REVCY2lBMEVZYWtIVnVnb1FEaG9nQTBIODdROFFtZ0VpQWtFWWFrR2x1Z29RRGhvZ0FpQUxLQUlBUVFScUVKb0JHaUFERUJnTUFRc2dDRUVRYWhDZUJTSUxRZmp0RHpZQ0FDQUlJQWNvQWdnMkFnZ2dDQ0FIS1FJQU53TUFJd0JCSUdzaUJTUUFJQVZCeE1JU05nSUlJQVVnQ0NnQ0NEWUNGQ0FGSUFncEFnQTNBZ3dnQlNBRlFRaHFJZ00yQWhnZ0F5QUxRUWhxRUt3Q0lBTVFGaUFGUVNCcUpBQWdBaUFMRUprRklBc1E4d01MSUFoQnNBRnFKQUFnRmhEdUJTQUFJQWNnRWtFRWFoQ0tCQ0lBRU44SElBQVF2QU1MSUJnUXd3OGdCRUdnQjJva0FDQVNFSUFiSUFGQjhJTUJhaVFBQzdzQkFRTi9Jd0JCNEFKcklnVWtBQ0FBUVFBNkFOUUNJQUJCQURvQUFDQUJLQUlNSVFjZ0FTZ0NDQ0VCQTBBZ0FTQUhSd1JBSUFWQkNHb2dBU2dDQUNJR0lBSWdBeUFFSUFZb0FnQW9BZ2dSQ0FBQ2Z5QUZMUURjQWdSQUlBVkJDR29ReFE4aEFpQUFMUURVQWdSQUlBQVF2QU1nQUVFQU9nRFVBZ3NnQUNBQ0VMd0tRUUU2QU5RQ1FRQWdBQkRGRHlJQ0VJa1dSUTBCR2d0QkFRc2hCaUFCUVFScUlRRWdCVUVJYWhDQ0d5QUdEUUVMQ3lBRlFlQUNhaVFBQ3d3QUlBQVF4ZzhhSUFBUUh3c1ZBQ0FCUWV6QUVqWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSHN3QklRbndNTENnQWdBU2dDQ0JDWkhnc01BQ0FCS0FJRVFaQzFFa1lMMmdFQkJYOGpBRUVRYXlJRUpBQWdCQ0FBS0FJWUlnSWdBU0FDS0FJQUtBSVlFUUVBTmdJTUlBRW9BZ2doQXlNQVFUQnJJZ0lrQUNBQ1FRaHFJZ1VnQkNnQ0RDQUFJZ0ZCSEdvb0FnQWdBRUVnYWkwQUFCRGxCeG9nQWlBQ0tBSVFJZ1kyQWdBZ0FpQUZOZ0lFQWtBZ0EwRWNhaUlGSUFJUXZRRWlBQVJBSUFBb0Fnd2hBQXdCQ3lBREVLWUVJZ0FnQkNnQ0RDQUJLQUljSUFFdEFDQVE1UWNhSUFNZ0FCQW9JQU1nQXlnQ0dFRUJhallDR0NBQ0lBQTJBZ1FnQWlBR05nSUFJQVVnQWhDOEFRc2dBa0V3YWlRQUlBUkJFR29rQUNBQUMyc0JBWDhDUUFKQUFrQUNRQ0FBS0FJY1FRSnJEZ01BQVFJREN5QUFLQUlZSWdBZ0FDZ0NBQ2dDRUJFQUFFRUJkQThMSUFBb0FoZ2lBU0FCS0FJQUtBSVFFUUFBUVFGQkJDQUFMUUFnRzJ3UEN5QUFLQUlZSWdBZ0FDZ0NBQ2dDRUJFQUFFRUNkQ0VCQ3lBQkN4d0JBWDhnQUNnQ0dDSUJJQUVvQWdBb0FoQVJBQUFnQUNnQ0hHd0xpd0VCQTM4akFFR2dBV3NpQWlRQUlBSkJFR29RU1NFRElBRXRBQ0FFUUNBRFFRaHFRWXE5QlJBT0dnc2dBMEVJYWtHZGlnVVFEaG9nQXlBQlFSeHFFTXNEUVFocUlnUkIydWtHRUE0YUlBSWdBU2dDR0NJQklBRW9BZ0FvQWd3UkFnQWdCQ0FDRUJJYUlBUkJpK1lHRUE0YUlBSVFEeG9nQUNBRFFReHFFRUlnQXhCUklBSkJvQUZxSkFBTFFBRUJmd0pBSUFFUXNnSWlBVVVOQUNBQktBSWNJQUFvQWh4SERRQWdBU2dDR0NBQUtBSVlSdzBBSUFFdEFDQWdBQzBBSUVZaEFnc2dBVUVBUnlBQ2NRc0tBQ0FCS0FJSUVMd1FDd3dBSUFFb0FnUkJvTE1TUmd2aEJRRUxmeU1BUWVBQWF5SUNKQUFnQVNnQ0JDRUlJQUpCR0dvaUJ5QUFRUmhxRUZNZ0FpQUNLQUljSUFJdEFDTWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nSThJQUlnQWlnQ0dDQUhJQU1iTmdJNElBSWdBaWtET0RjRENDQUNRVUJySUFnZ0FrRUlhaENZQXlBSEVBOGFJQUpDZ0lDQWdNQUFOd0lzSUFJZ0J6WUNLQ0FBS0FKRUlna2dBQ2dDU0VFQ2RHb2hEQU4vSUFrZ0RFWUVmeUFCS0FJSUlRRWpBRUhRQVdzaUJTUUFJQVZCR0dvZ0FrRkFheUlLRUZZaENDQUZRUUE2QUJRZ0JTQUNRUmhxSWdsQkVHbzJBaEFnQlVFNGFpSURJQWdnQlVFUWFpQUFRZEFBYWlJTEtBSUFJQUJCMUFCcUlnd29BZ0FnQUVIWUFHb2lCeWdDQUJDTkNSb2dCU0FGS0FKQUlnZzJBZ2dnQlNBRE5nSU1Ba0FnQVVFY2FpSURJQVZCQ0dvUXZRRWlBQVJBSUFBb0Fnd2hBQXdCQ3lNQVFUQnJJZ1FrQUNBQkVKNFJJUVlnQkVFUWFpQUtFRlloQUNBRVFRQTZBQXdnQkNBSlFSQnFOZ0lJSUFZZ0FDQUVRUWhxSUFzb0FnQWdEQ2dDQUNBSEtBSUFFSTBKR2lBQklBWVFLQ0FCSUFFb0FoaEJBV28yQWhnZ0JFRXdhaVFBSUFVZ0JpSUFOZ0lNSUFVZ0NEWUNDQ0FESUFWQkNHb1F2QUVMSUFWQk9Hb1F6UVlhSUFWQjBBRnFKQUFnQ1JCZUlBSkI0QUJxSkFBZ0FBVWdDU2dDQUNFR0l3QkJRR29pQkNRQUlBRW9BZ1FoQnlBRVFRaHFJZ3NnQmtFSWFoQlRJQVFnQkNnQ0RDQUVMUUFUSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDSENBRUlBUW9BZ2dnQ3lBREd6WUNHQ0FFSUFRcEF4ZzNBd0FnQkVFZ2FpSUlJQWNnQkJDWUF5QUxFQThhSUFRZ0JpZ0NLQ0lESUFFZ0F5Z0NBQ2dDR0JFQkFEWUNDQ0FCS0FJSVFlQUFhaUVLSXdCQklHc2lCeVFBSUFvUW54RWlBeUFISUFnUVZpQUxLQUlBSUFZb0Fpd2dCaWdDTUNBR0tBSTBJQVlvQWpnZ0JrRThhaERhRHhvZ0NpQURFQ2dnQ2lBS0tBSVlRUUZxTmdJWUlBZEJJR29rQUNBRVFVQnJKQUFnQWlBRE5nSVVJQWxCQkdvaENTQUNRUmhxSUFKQkZHb1FjUXdCQ3dzTEN3QWdBQ0FCUVJocUVGTUxCd0FnQUNnQ1ZBc0hBQ0FBS0FKUUN5SUFJQUVROEFZaUFRUi9JQUZCR0dvZ0FFRVlhaEMyQWdVZ0FBc2dBVUVBUjNFTDdnRUJCWDhqQUVFUWF5SURKQUFnQXlBQUtBSWtJZ0lnQVNBQ0tBSUFLQUlZRVFFQU5nSU1JQUVvQWdnaEJDQURJQUFvQWhnMkFnZ2pBRUV3YXlJQ0pBQWdBa0VJYWlJRklBTW9BZ2dnQUNJQlFSeHFLQUlBSUFCQklHb29BZ0FnQXlnQ0RCQzZDeG9nQWlBQ0tBSVFJZ1kyQWdBZ0FpQUZOZ0lFQWtBZ0JFRWNhaUlGSUFJUXZRRWlBQVJBSUFBb0Fnd2hBQXdCQ3lBRUVLWUVJZ0FnQXlnQ0NDQUJLQUljSUFFb0FpQWdBeWdDREJDNkN4b2dCQ0FBRUNnZ0JDQUVLQUlZUVFGcU5nSVlJQUlnQURZQ0JDQUNJQVkyQWdBZ0JTQUNFTHdCQ3lBQ1FUQnFKQUFnQTBFUWFpUUFJQUFMY3dFRGZ5TUFRWkFCYXlJRUpBQWdCQkJKSWdKQkNHcEJyN3dGRUE0YUlBSWdBU2dDR0JDZUJDSURRUWhxUWRycEJoQU9HaUFESUFFb0Fod1ExUThpQTBFSWFrSDA3UXdRRGhvZ0F5QUJLQUlnRUxZTFFRaHFRWXZtQmhBT0dpQUFJQUpCREdvUVFpQUNFRkVnQkVHUUFXb2tBQXRLQVFKL0FrQWdBU2dDQkNJRFFkaXZFa2NOQUNBQlFRQWdBMEhZcnhKR0d5SUJLQUlZSUFBb0FoaEhEUUFnQVNnQ0hDQUFLQUljUncwQUlBRW9BaUFnQUNnQ0lFWWhBZ3NnQWd1Z0FRRUVmeUFCS0FJSUlRTWpBRUV3YXlJQ0pBQWdBa0VRYWlJRUlBQWlBVUVZYWlnQ0FCQzdDeG9nQWlBQ0tBSVlJZ1UyQWdnZ0FpQUVOZ0lNQWtBZ0EwRWNhaUlFSUFKQkNHb1F2UUVpQUFSQUlBQW9BZ3doQUF3QkN5QURFS1VFSWdBZ0FTZ0NHQkM3Q3hvZ0F5QUFFQ2dnQXlBREtBSVlRUUZxTmdJWUlBSWdBRFlDRENBQ0lBVTJBZ2dnQkNBQ1FRaHFFTHdCQ3lBQ1FUQnFKQUFnQUFzVkFDQUFRWUhEQWtHYzVnRWdBU2dDR0JzUUZCb0xId0VCZnlBQktBSUVRZml1RWtZRWZ5QUJLQUlZSUFBb0FoaEdCVUVBQ3d2WUFRRUVmeU1BUVJCcklnSWtBQ0FDSUFBb0Fod2lBeUFCSUFNb0FnQW9BaGdSQVFBMkFnd2dBU2dDQ0NFRElBSWdBQ2dDR0RZQ0NDTUFRVEJySWdBa0FDQUFRUkJxSWdFZ0FpZ0NDQ0FDS0FJTUVMd0xHaUFBSUFBb0FoZ2lCRFlDQ0NBQUlBRTJBZ3dDUUNBRFFSeHFJZ1VnQUVFSWFoQzlBU0lCQkVBZ0FTZ0NEQ0VCREFFTElBTVFwUVFpQVNBQ0tBSUlJQUlvQWd3UXZBc2FJQU1nQVJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FBSUFFMkFnd2dBQ0FFTmdJSUlBVWdBRUVJYWhDOEFRc2dBRUV3YWlRQUlBSkJFR29rQUNBQkN3MEFJQUFnQVVHbXZBVVExaElMRFFBZ0FDQUJRWml1RWhEWEVndmFBUUVGZnlNQVFSQnJJZ1FrQUNBRUlBQW9BaGdpQWlBQklBSW9BZ0FvQWhnUkFRQTJBZ3dnQVNnQ0NDRURJd0JCTUdzaUFpUUFJQUpCQ0dvaUJTQUVLQUlNSUFBaUFVRWNhaWdDQUNBQVFTQnFLQUlBRUwwTEdpQUNJQUlvQWhBaUJqWUNBQ0FDSUFVMkFnUUNRQ0FEUVJ4cUlnVWdBaEM5QVNJQUJFQWdBQ2dDRENFQURBRUxJQU1RcGdRaUFDQUVLQUlNSUFFb0Fod2dBU2dDSUJDOUN4b2dBeUFBRUNnZ0F5QURLQUlZUVFGcU5nSVlJQUlnQURZQ0JDQUNJQVkyQWdBZ0JTQUNFTHdCQ3lBQ1FUQnFKQUFnQkVFUWFpUUFJQUFMRFFBZ0FDQUJRWnZuQmhEVEVnc05BQ0FBSUFGQnVLMFNFTlFTQzlvQkFRVi9Jd0JCRUdzaUJDUUFJQVFnQUNnQ0dDSUNJQUVnQWlnQ0FDZ0NHQkVCQURZQ0RDQUJLQUlJSVFNakFFRXdheUlDSkFBZ0FrRUlhaUlGSUFRb0Fnd2dBQ0lCUVJ4cUtBSUFJQUJCSUdvb0FnQVF2Z3NhSUFJZ0FpZ0NFQ0lHTmdJQUlBSWdCVFlDQkFKQUlBTkJIR29pQlNBQ0VMMEJJZ0FFUUNBQUtBSU1JUUFNQVFzZ0F4Q21CQ0lBSUFRb0Fnd2dBU2dDSENBQktBSWdFTDRMR2lBRElBQVFLQ0FESUFNb0FoaEJBV28yQWhnZ0FpQUFOZ0lFSUFJZ0JqWUNBQ0FGSUFJUXZBRUxJQUpCTUdva0FDQUVRUkJxSkFBZ0FBc05BQ0FBSUFGQjJLd1NFTlFTQzFJQUlBQVFzd1JCa3JHbytnZHFRWk9rQm5NaUFFRUNka0dXK0tuNkIzTWdBU2dDQUdvZ0FITWlBRUVDZGtHVytLbjZCM01nQWhENUFtb2dBSE1pQUVFQ2RrR1crS242QjNNZ0F5Z0NBR29nQUhNTDJBRUJCSDhqQUVFUWF5SUNKQUFnQWlBQUtBSWNJZ01nQVNBREtBSUFLQUlZRVFFQU5nSU1JQUVvQWdnaEF5QUNJQUFvQWhnMkFnZ2pBRUV3YXlJQUpBQWdBRUVRYWlJQklBSW9BZ2dnQWlnQ0RCREFDeG9nQUNBQUtBSVlJZ1EyQWdnZ0FDQUJOZ0lNQWtBZ0EwRWNhaUlGSUFCQkNHb1F2UUVpQVFSQUlBRW9BZ3doQVF3QkN5QURFS1VFSWdFZ0FpZ0NDQ0FDS0FJTUVNQUxHaUFESUFFUUtDQURJQU1vQWhoQkFXbzJBaGdnQUNBQk5nSU1JQUFnQkRZQ0NDQUZJQUJCQ0dvUXZBRUxJQUJCTUdva0FDQUNRUkJxSkFBZ0FRc05BQ0FBSUFGQjlMd0ZFTllTQ3cwQUlBQWdBVUhRcXhJUTF4SUx6UUVCQlg4akFFRVFheUlFSkFBZ0JDQUFLQUljSWdJZ0FTQUNLQUlBS0FJWUVRRUFOZ0lNSUFFb0FnZ2hBeU1BUVRCcklnSWtBQ0FDUVFocUlnVWdCQ2dDRENBQUlnRkJKR29vQWdBUXdnc2FJQUlnQWlnQ0VDSUdOZ0lBSUFJZ0JUWUNCQUpBSUFOQkhHb2lCU0FDRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQXhDbUJDSUFJQVFvQWd3Z0FTZ0NKQkRDQ3hvZ0F5QUFFQ2dnQXlBREtBSVlRUUZxTmdJWUlBSWdBRFlDQkNBQ0lBWTJBZ0FnQlNBQ0VMd0JDeUFDUVRCcUpBQWdCRUVRYWlRQUlBQUxIQUVCZnlBQUtBSWNJZ0VnQVNnQ0FDZ0NGQkVBQUNBQUtBSWtiQXVLQVFFRGZ5TUFRYUFCYXlJQ0pBQWdBa0VRYWhCSklnUkJDR3BCaWZzQUVBNGFJQVFnQVVFa2FoRExBeUlEUVFocVFkb25FQTRhSUFNZ0FVRWdhaERMQTBFSWFpSURRZHJwQmhBT0dpQUNJQUVvQWhnaUFTQUJLQUlBS0FJTUVRSUFJQU1nQWhBU0dpQURRWXZtQmhBT0dpQUNFQThhSUFBZ0JFRU1haEJDSUFRUVVTQUNRYUFCYWlRQUMwb0JBbjhDUUNBQktBSUVJZ05COEtvU1J3MEFJQUZCQUNBRFFmQ3FFa1liSWdFb0FpQWdBQ2dDSUVjTkFDQUJLQUlrSUFBb0FpUkhEUUFnQVNnQ0hDQUFLQUljUmlFQ0N5QUNDd29BSUFFb0FnZ1F6QkFMREFBZ0FTZ0NCRUdRcWhKR0N3b0FJQUVvQWdnUXpoQUxEQUFnQVNnQ0JFR3dxUkpHQ3dvQUlBRW9BZ2dRd2gwTEN3QWdBRUhkOEFZUUZCb0xEQUFnQVNnQ0JFSFFxQkpHQ3dvQUlBRW9BZ2dRK3gwTEN3QWdBRUdwbGdNUUZCb0xEQUFnQVNnQ0JFSHdweEpHQ3pNQkFYOGpBRUVRYXlJQ0pBQWdBU2dDQ0NFQklBSWdBQ2dDR0RZQ0RDQUJJQUpCREdvUS9SMGhBQ0FDUVJCcUpBQWdBQXNOQUNBQUlBRkJqN3dGRU5rU0N4OEJBWDhnQVNnQ0JFR1FweEpHQkg4Z0FTZ0NHQ0FBS0FJWVJnVkJBQXNMTXdFQmZ5TUFRUkJySWdJa0FDQUJLQUlJSVFFZ0FpQUFLQUlZTmdJTUlBRWdBa0VNYWhEOEhTRUFJQUpCRUdva0FDQUFDdzBBSUFBZ0FVSFl2QVVRMlJJTEh3RUJmeUFCS0FJRVFiQ21Fa1lFZnlBQktBSVlJQUFvQWhoR0JVRUFDd3NLQUNBQktBSUlFUDRkQ3d3QUlBRW9BZ1JCMEtVU1JndkVBUUVFZnlNQVFSQnJJZ01rQUNBRElBQW9BaGdpQUNBQklBQW9BZ0FvQWhnUkFRQTJBZ3dnQVNnQ0NDRUNJd0JCTUdzaUFDUUFJQUJCRUdvaUFTQURLQUlNRU1jTEdpQUFJQUFvQWhnaUJEWUNDQ0FBSUFFMkFnd0NRQ0FDUVJ4cUlnVWdBRUVJYWhDOUFTSUJCRUFnQVNnQ0RDRUJEQUVMSUFJUXBRUWlBU0FES0FJTUVNY0xHaUFDSUFFUUtDQUNJQUlvQWhoQkFXbzJBaGdnQUNBQk5nSU1JQUFnQkRZQ0NDQUZJQUJCQ0dvUXZBRUxJQUJCTUdva0FDQURRUkJxSkFBZ0FRc1VBQ0FBS0FJWUlnQWdBQ2dDQUNnQ0ZCRUFBQXNVQUNBQUtBSVlJZ0FnQUNnQ0FDZ0NFQkVBQUF0aEFRTi9Jd0JCb0FGcklnSWtBQ0FDUVJCcUVFa2lBMEVJYWlJRVFhZm9CaEFPR2lBQ0lBRW9BaGdpQVNBQktBSUFLQUlNRVFJQUlBUWdBaEFTR2lBRVFZdm1CaEFPR2lBQ0VBOGFJQUFnQTBFTWFoQkNJQU1RVVNBQ1FhQUJhaVFBQ3g4QkFYOGdBU2dDQkVId3BCSkdCSDhnQVNnQ0dDQUFLQUlZUmdWQkFBc0xEUUFnQVNnQ0NFRXdhaERCSFFzTEFDQUFRZHo0REJBVUdnc01BQ0FCS0FJRVFhaWpFa1lMb3dFQkJIOGdBU2dDQ0VFd2FpRURJd0JCSUdzaUFpUUFJQUpCRUdvaUJDQUFJZ0ZCREdvb0FnQVF5QXNhSUFJZ0FpZ0NHQ0lGTmdJSUlBSWdCRFlDREFKQUlBTkJIR29pQkNBQ1FRaHFFS0VKSWdBRVFDQUFLQUlNSVFBTUFRc2dBeEQ4QXlJQUlBRW9BZ3dReUFzYUlBTWdBQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUNJQUEyQWd3Z0FpQUZOZ0lJSUFRZ0FrRUlhaENnQ1FzZ0FrRWdhaVFBSUFBTEN3QWdBQ0FCS0FJTUVGOExId0VCZnlBQktBSUVRWkNqRWtZRWZ5QUFLQUlNSUFFb0FneEdCVUVBQ3d1ZEFnRUZmeU1BUVJCcklnTWtBQ0FESUFBb0FoZ2lBaUFCSUFJb0FnQW9BaGdSQVFBMkFnd2dBeUFBS0FJY0lnSWdBU0FDS0FJQUtBSVFFUUVBTmdJSUlBRW9BZ2doQkNNQVFVQnFJZ0lrQUNBQ1FSQnFJZ1VnQXlnQ0RDQURLQUlJSUFBaUFVRWdhaWdDQUNBQlFTUnFLQUlBSUFGQktHb29BZ0FnQVVFc2FpZ0NBQkRKQ3hvZ0FpQUNLQUlZSWdZMkFnZ2dBaUFGTmdJTUFrQWdCRUVjYWlJRklBSkJDR29RdlFFaUFBUkFJQUFvQWd3aEFBd0JDeUFFRVBNRklnQWdBeWdDRENBREtBSUlJQUVvQWlBZ0FTZ0NKQ0FCS0FJb0lBRW9BaXdReVFzYUlBUWdBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUNJQUEyQWd3Z0FpQUdOZ0lJSUFVZ0FrRUlhaEM4QVFzZ0FrRkFheVFBSUFOQkVHb2tBQ0FBQ3djQUlBQW9BaVFMMVFFQkJIOGpBRUdnQVdzaUFpUUFJQUpCRUdvUVNTRURJQUVvQWlnZ0FTZ0NMRWNFUUNBRFFRaHFRYjM1Q0JBT0dpQURJQUZCS0dvUXl3TkJDR3BCbXU0TUVBNGFDeUFEUVFocUlnUkI1T1lHRUE0YUlBSWdBU2dDR0NJRklBVW9BZ0FvQWd3UkFnQWdCQ0FDRUJJYUlBSVFEeG9nQWlBQktBSWNJZ0VnQVNnQ0FDZ0NEQkVDQUNBQ0tBSUVJQUl0QUFzaUFTQUJRUmgwUVJoMVFRQklHd1JBSUFSQjlPME1FQTRhSUFRZ0FoQVNHZ3NnQkVHTDVnWVFEaG9nQUNBRFFReHFFRUlnQWhBUEdpQURFRkVnQWtHZ0FXb2tBQXRrQVFKL0FrQWdBU2dDQkNJRFFaQ2lFa2NOQUNBQlFRQWdBMEdRb2hKR0d5SUJLQUlZSUFBb0FoaEhEUUFnQVNnQ0hDQUFLQUljUncwQUlBRW9BaUFnQUNnQ0lFY05BQ0FCS0FJa0lBQW9BaVJIRFFBZ0FTZ0NLQ0FBS0FJb1JpRUNDeUFDQ3dvQUlBRW9BZ2dRdkIwTENnQWdBRUhkUFJBVUdnc01BQ0FCS0FJRVFkQ2dFa1lMQ2dBZ0FTZ0NDQkRBSFFzTEFDQUFRYi81QUJBVUdnc01BQ0FCS0FJRVFmQ2ZFa1lMREFBZ0FCRHdHeG9nQUJBZkN3d0FJQUFROFJzYUlBQVFId3NKQUNBQUVMa0xFQjhMQ1FBZ0FCRE5CaEFmQ3djQUlBQVF1UXNMQndBZ0FCRE5CZ3NKQUNBQUVOSUxFQjhMREFBZ0FCRFNDeG9nQUJBZkN3d0FJQUFRL3hzYUlBQVFId3NNQUNBQUVJQWNHaUFBRUI4TERBQWdBQkNISEJvZ0FCQWZDd3dBSUFBUWlCd2FJQUFRSHdzUEFDQUFJQUZCMHZVSVFUNFEyaElMQ3dBZ0FFRzF2UVVRRkJvTEh3RUJmeUFCS0FJRVFZQ05Fa1lFZnlBQUtBSU1JQUVvQWd4R0JVRUFDd3NQQUNBQUlBRkJvZllJUVNrUTJoSUxGQUFnQUNBQktBSU1LQUlJS0FJa1FTUnFFRk1MSHdFQmZ5QUJLQUlFUWVpTUVrWUVmeUFBS0FJTUlBRW9BZ3hHQlVFQUN3dDdBUUovSXdCQkVHc2lBaVFBSUFFb0FnQWlBeEFjSUFJZ0FTZ0NBQ0lCS0FJSU5nSUlJQUVnQVNnQ0RFRUJhaUlCTmdJTUlBSWdBVFlDQUNBRFFZd0JhaUlCRU44TElnTWdBaWdDQ0NBQ0tBSUFJQUFvQWpRUXpSd2FJQUVnQXhBb0lBRWdBU2dDR0VFQmFqWUNHQ0FESVFBZ0FrRVFhaVFBSUFBTEpnQWdBQ0FCS0FJMElnRkJDRXNFZjBIMTVBWUZJQUZCQW5SQm9Jd1NhaWdDQUFzUUZCb0xLd0VCZkNBQkt3TUFJZ0pFQUFBQUFBQUE4RUZqSUFKRUFBQUFBQUFBQUFCbWNRUkFJQUtyRHd0QkFBc0pBQ0FCSUFJUVZCb0xFUUFnQVNzREFFUUFBQUFBQUFBQUFHSUxDZ0FnQVNrREFFSUFVZ3NvQVFGOElBRXJBd0FpQXBsRUFBQUFBQUFBNEVOakJFQWdBckFQQzBLQWdJQ0FnSUNBZ0lCL0N5c0JBWHdnQVNzREFDSUNSQUFBQUFBQUFQQkRZeUFDUkFBQUFBQUFBQUFBWm5FRVFDQUNzUThMUWdBTEJ3QWdBUkFQR2d1TENnRUtmeU1BUVlBQmF5SUdKQUFnQmlBQUtBSWdOZ0o0SUFZZ0FDa0NHRGNEY0NBR0lBQXBBaEEzQTJnZ0JpQUJJQUFvQWlRUXp3TTJBbVFnQmtFNGFpSUhRb0NBZ0lDQUFUY0NKQ0FISUFjMkFpQWpBRUV3YXlJQ0pBQWdCeUFBS0FKTUVEa2dBa0VBTmdJb0lBSWdBRUVvYWpZQ0pDQUNJQUZCeUNCcU5nSWdJQUlnQVVIY2dBRnFLQUlBUVFGck5nSXNBa0FnQWtFZ2FoQzFBUVJBSUFKQklHb1FXaUlFS0FMWUFTSURJQVFvQXR3QlFSaHNhaUVFQTBBZ0F5QUVSZ1JBSUFBb0FrZ2lCQ0FBS0FKTVFRSjBhaUVJQTBBZ0JDQUlSZ1JBSUFKQklHb1FXaUlFS0FMSUFpSURJQVFvQXN3Q1FSaHNhaUVFQTBBZ0F5QUVSZzBHSUFJZ0FTQURFR1lRMUFZMkFoQWdCeUFDUVJCcUVDUWdBMEVZYWlFRERBQUxBQXNnQWlBQ1FTQnFFRm9pQTBIWUFtbzJBaEFnQkNnQ0FDRUZJQUpCQURZQ0dDQUNJQVUyQWhRZ0FpQURRWndKYWlnQ0FFRUJhellDSEFKQUlBSkJFR29RdEFGRkRRQWdBa0VRYWhDc0FTSUZLQUpnSWdNZ0JTZ0NaRUVZYkdvaEJRTkFJQU1nQlVZTkFTQUNJQUVnQXhCbUVOUUdOZ0lNSUFjZ0FrRU1haEFrSUFOQkdHb2hBd3dBQ3dBTElBSkJJR29RV2lFRElBSWdCQ2dDQURZQ0VDQURJQUpCRUdvUXhnTkZCRUFnQWlBQklBUW9BZ0FRbWgwMkFoQWdCeUFDUVJCcUVDUUxJQUlnQWtFZ2FoQmFJZ05Cb0FscU5nSVFJQVFvQWdBaEJTQUNRUUEyQWhnZ0FpQUZOZ0lVSUFJZ0EwSGtEMm9vQWdCQkFXczJBaHdDUUNBQ1FSQnFFTFFCUlEwQUlBSkJFR29RckFFaUJTZ0NZQ0lESUFVb0FtUkJHR3hxSVFVRFFDQURJQVZHRFFFZ0FpQUJJQU1RWmhEVUJqWUNEQ0FISUFKQkRHb1FKQ0FEUVJocUlRTU1BQXNBQ3lBRVFRUnFJUVFNQUFzQUJTQUNJQUVnQXhCbUVOUUdOZ0lRSUFjZ0FrRVFhaEFrSUFOQkdHb2hBd3dCQ3dBTEFBc2dBQ2dDU0NJRUlBQW9Ba3hCQW5ScUlRZ0RRQ0FFSUFoR0JFQWdBa0VnYWhDMUFVVU5BaUFDUVNCcUVGb2lCQ2dDeUFJaUF5QUVLQUxNQWtFWWJHb2hCQU5BSUFNZ0JFWU5BeUFDSUFFZ0F4Qm1FTlFHTmdJUUlBY2dBa0VRYWhBa0lBTkJHR29oQXd3QUN3QUZJQUlnQVNBRUtBSUFFSm9kTmdJUUlBY2dBa0VRYWhBa0FrQWdBa0VnYWhDMUFVVU5BQ0FDSUFKQklHb1FXaUlEUWFBSmFqWUNFQ0FFS0FJQUlRVWdBa0VBTmdJWUlBSWdCVFlDRkNBQ0lBTkI1QTlxS0FJQVFRRnJOZ0ljSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJRktBSmdJZ01nQlNnQ1pFRVliR29oQlFOQUlBTWdCVVlOQVNBQ0lBRWdBeEJtRU5RR05nSU1JQWNnQWtFTWFoQWtJQU5CR0dvaEF3d0FDd0FMSUFSQkJHb2hCQXdCQ3dBTEFBc2dBa0V3YWlRQUlBWWdBU0FBUWRRQWFoRGlCRFlDTUNBR0lBRWdBQ2dDV0JDZUNUWUNMQ0FHUVJocUlnZ2dBU0FBUWR3QWFoRHlCU0FHSUFFZ0FFSHdBR29ROGdVZ0FTZ0NBQ0VCSXdCQkVHc2lBaVFBSUFFUUhDQUJJQUVvQWd4QkFXb2lBRFlDRENBQ0lBQTJBZ2dqQUVFZ2F5SUFKQUFnQVVHTUFXb2lBeENpRmlFRUlBWW9BbVFoQlNBQ0tBSUlJUWtnQVNnQ0NDRUJJQUJCQURvQUhDQUFJQWRCSUdvMkFoZ2dCaWdDTENFS0lBWW9BakFoQ3lBQVFRQTZBQlFnQUNBSVFRaHFOZ0lRSUFCQkFEb0FEQ0FBSUFaQkNHbzJBZ2dnQkNBQklBa2dCa0hvQUdvZ0JTQUFRUmhxSUFzZ0NpQUFRUkJxSUFCQkNHb1E0eDBhSUFNZ0JCQW9JQU1nQXlnQ0dFRUJhallDR0NBQVFTQnFKQUFnQkNFQUlBSkJFR29rQUNBR0VLb0JJQWdRcWdFZ0J4QWpJQVpCZ0FGcUpBQWdBQXNNQUNBQUVNc2RHaUFBRUI4TEJnQWdBUkFqQzZZSkFRaC9Jd0JCOEFCcklnY2tBQ0FISUFBb0FpQTJBbWdnQnlBQUtRSVlOd05nSUFjZ0FDa0NFRGNEV0NBSFFTaHFJZ1pDZ0lDQWdJQUJOd0lrSUFZZ0JqWUNJQ01BUVRCcklnSWtBQ0FHSUFBb0FrZ1FPU0FDUVFBMkFpZ2dBaUFBUVNScU5nSWtJQUlnQVVISUlHbzJBaUFnQWlBQlFkeUFBV29vQWdCQkFXczJBaXdDUUNBQ1FTQnFFTFVCQkVBZ0FrRWdhaEJhSWdRb0F0Z0JJZ01nQkNnQzNBRkJHR3hxSVFRRFFDQURJQVJHQkVBZ0FDZ0NSQ0lFSUFBb0FraEJBblJxSVFnRFFDQUVJQWhHQkVBZ0FrRWdhaEJhSWdRb0FzZ0NJZ01nQkNnQ3pBSkJHR3hxSVFRRFFDQURJQVJHRFFZZ0FpQUJJQU1RWmhEV0JqWUNFQ0FHSUFKQkVHb1FKQ0FEUVJocUlRTU1BQXNBQ3lBQ0lBSkJJR29RV2lJRFFkZ0NhallDRUNBRUtBSUFJUVVnQWtFQU5nSVlJQUlnQlRZQ0ZDQUNJQU5CbkFscUtBSUFRUUZyTmdJY0FrQWdBa0VRYWhDMEFVVU5BQ0FDUVJCcUVLd0JJZ1VvQW1BaUF5QUZLQUprUVJoc2FpRUZBMEFnQXlBRlJnMEJJQUlnQVNBREVHWVExZ1kyQWd3Z0JpQUNRUXhxRUNRZ0EwRVlhaUVEREFBTEFBc2dBa0VnYWhCYUlRTWdBaUFFS0FJQU5nSVFJQU1nQWtFUWFoREdBMFVFUUNBQ0lBRWdCQ2dDQUJER0VEWUNFQ0FHSUFKQkVHb1FKQXNnQWlBQ1FTQnFFRm9pQTBHZ0NXbzJBaEFnQkNnQ0FDRUZJQUpCQURZQ0dDQUNJQVUyQWhRZ0FpQURRZVFQYWlnQ0FFRUJhellDSEFKQUlBSkJFR29RdEFGRkRRQWdBa0VRYWhDc0FTSUZLQUpnSWdNZ0JTZ0NaRUVZYkdvaEJRTkFJQU1nQlVZTkFTQUNJQUVnQXhCbUVOWUdOZ0lNSUFZZ0FrRU1haEFrSUFOQkdHb2hBd3dBQ3dBTElBUkJCR29oQkF3QUN3QUZJQUlnQVNBREVHWVExZ1kyQWhBZ0JpQUNRUkJxRUNRZ0EwRVlhaUVEREFFTEFBc0FDeUFBS0FKRUlnUWdBQ2dDU0VFQ2RHb2hDQU5BSUFRZ0NFWUVRQ0FDUVNCcUVMVUJSUTBDSUFKQklHb1FXaUlFS0FMSUFpSURJQVFvQXN3Q1FSaHNhaUVFQTBBZ0F5QUVSZzBESUFJZ0FTQURFR1lRMWdZMkFoQWdCaUFDUVJCcUVDUWdBMEVZYWlFRERBQUxBQVVnQWlBQklBUW9BZ0FReGhBMkFoQWdCaUFDUVJCcUVDUUNRQ0FDUVNCcUVMVUJSUTBBSUFJZ0FrRWdhaEJhSWdOQm9BbHFOZ0lRSUFRb0FnQWhCU0FDUVFBMkFoZ2dBaUFGTmdJVUlBSWdBMEhrRDJvb0FnQkJBV3MyQWh3Z0FrRVFhaEMwQVVVTkFDQUNRUkJxRUt3QklnVW9BbUFpQXlBRktBSmtRUmhzYWlFRkEwQWdBeUFGUmcwQklBSWdBU0FERUdZUTFnWTJBZ3dnQmlBQ1FReHFFQ1FnQTBFWWFpRUREQUFMQUFzZ0JFRUVhaUVFREFFTEFBc0FDeUFDUVRCcUpBQWdCMEVJYWlJQ0lBRWdBRUhRQUdvUStnc2dBU2dDQUNFQkl3QkJFR3NpQXlRQUlBRVFIQ0FCSUFFb0FneEJBV29pQURZQ0RDQURJQUEyQWdnakFFRVFheUlBSkFBZ0FVR01BV29pQkJDOUNpRUlJQU1vQWdnaEJTQUJLQUlJSVFFZ0FDQUdRU0JxTmdJSUlBWW9BaUFoQ1NBQUlBSkJFR28yQWdBZ0FDQUdJQWxIT2dBTUlBQWdBaWdDRUNBQ1J6b0FCQ0FJSUFFZ0JTQUhRZGdBYWlBQVFRaHFJQUFRZ0F3YUlBUWdDQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUFRUkJxSkFBZ0NDRUFJQU5CRUdva0FDQUNFRjRnQmhBaklBZEI4QUJxSkFBZ0FBc01BQ0FBRUlBZUdpQUFFQjhMVndFQmZ5TUFRU0JySWdJa0FDQUNJQUFvQWlBMkFoZ2dBaUFBS1FJWU53TVFJQUlnQUNrQ0VEY0RDQ0FDSUFFZ0FDZ0NKQkNPSGpZQ0JDQUJLQUlBSUFKQkNHb2dBa0VFYWhDSkhpRUFJQUpCSUdva0FDQUFDL29KQVFwL0l3QkI0QUJySWdja0FDQUhJQUFvQWlBMkFsZ2dCeUFBS1FJWU53TlFJQWNnQUNrQ0VEY0RTQ0FISUFFZ0FDZ0NKQkNYQVRZQ1JDQUhRU2hxSWdaQ2dJQ0FnTUFBTndJVUlBWWdCallDRUNNQVFUQnJJZ0lrQUNBR0lBQW9BandRMWdJZ0FrRUFOZ0lvSUFJZ0FFRW9hallDSkNBQ0lBRkJ5Q0JxTmdJZ0lBSWdBVUhjZ0FGcUtBSUFRUUZyTmdJc0FrQWdBa0VnYWhDMUFRUkFJQUpCSUdvUVdpSUVLQUxZQVNJRElBUW9BdHdCUVJoc2FpRUVBMEFnQXlBRVJnUkFJQUFvQWpnaUJDQUFLQUk4UVFKMGFpRUlBMEFnQkNBSVJnUkFJQUpCSUdvUVdpSUVLQUxJQWlJRElBUW9Bc3dDUVJoc2FpRUVBMEFnQXlBRVJnMEdJQUlnQVNBREVHWVEyd1kyQWhBZ0JpQUNRUkJxRUhFZ0EwRVlhaUVEREFBTEFBc2dBaUFDUVNCcUVGb2lBMEhZQW1vMkFoQWdCQ2dDQUNFRklBSkJBRFlDR0NBQ0lBVTJBaFFnQWlBRFFad0phaWdDQUVFQmF6WUNIQUpBSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJRktBSmdJZ01nQlNnQ1pFRVliR29oQlFOQUlBTWdCVVlOQVNBQ0lBRWdBeEJtRU5zR05nSU1JQVlnQWtFTWFoQnhJQU5CR0dvaEF3d0FDd0FMSUFKQklHb1FXaUVESUFJZ0JDZ0NBRFlDRUNBRElBSkJFR29ReGdORkJFQWdBaUFCSUFRb0FnQVFteDQyQWhBZ0JpQUNRUkJxRUhFTElBSWdBa0VnYWhCYUlnTkJvQWxxTmdJUUlBUW9BZ0FoQlNBQ1FRQTJBaGdnQWlBRk5nSVVJQUlnQTBIa0Qyb29BZ0JCQVdzMkFod0NRQ0FDUVJCcUVMUUJSUTBBSUFKQkVHb1FyQUVpQlNnQ1lDSURJQVVvQW1SQkdHeHFJUVVEUUNBRElBVkdEUUVnQWlBQklBTVFaaERiQmpZQ0RDQUdJQUpCREdvUWNTQURRUmhxSVFNTUFBc0FDeUFFUVFScUlRUU1BQXNBQlNBQ0lBRWdBeEJtRU5zR05nSVFJQVlnQWtFUWFoQnhJQU5CR0dvaEF3d0JDd0FMQUFzZ0FDZ0NPQ0lFSUFBb0FqeEJBblJxSVFnRFFDQUVJQWhHQkVBZ0FrRWdhaEMxQVVVTkFpQUNRU0JxRUZvaUJDZ0N5QUlpQXlBRUtBTE1Ba0VZYkdvaEJBTkFJQU1nQkVZTkF5QUNJQUVnQXhCbUVOc0dOZ0lRSUFZZ0FrRVFhaEJ4SUFOQkdHb2hBd3dBQ3dBRklBSWdBU0FFS0FJQUVKc2VOZ0lRSUFZZ0FrRVFhaEJ4QWtBZ0FrRWdhaEMxQVVVTkFDQUNJQUpCSUdvUVdpSURRYUFKYWpZQ0VDQUVLQUlBSVFVZ0FrRUFOZ0lZSUFJZ0JUWUNGQ0FDSUFOQjVBOXFLQUlBUVFGck5nSWNJQUpCRUdvUXRBRkZEUUFnQWtFUWFoQ3NBU0lGS0FKZ0lnTWdCU2dDWkVFWWJHb2hCUU5BSUFNZ0JVWU5BU0FDSUFFZ0F4Qm1FTnNHTmdJTUlBWWdBa0VNYWhCeElBTkJHR29oQXd3QUN3QUxJQVJCQkdvaEJBd0JDd0FMQUFzZ0FrRXdhaVFBSUFkQkdHb2lBaUFCSUFCQnhBQnFFSk1NSUFkQkNHb2lBeUFCSUFCQjFBQnFFSk1NSUFFb0FnQWhBU01BUVJCcklnUWtBQ0FCRUJ3Z0FTQUJLQUlNUVFGcUlnQTJBZ3dnQkNBQU5nSUlJd0JCSUdzaUFDUUFJQUZCakFGcUlnZ1Fzd1VoQlNBSEtBSkVJUW9nQkNnQ0NDRUxJQUVvQWdnaEFTQUFJQVpCRUdvMkFoZ2dCaWdDRUNFSklBQWdBa0VFYWpZQ0VDQUFJQVlnQ1VjNkFCd2dBaWdDQkNFSklBQWdBMEVFYWpZQ0NDQUFJQUlnQ1VjNkFCUWdBQ0FES0FJRUlBTkhPZ0FNSUFVZ0FTQUxJQWRCeUFCcUlBb2dBRUVZYWlBQVFSQnFJQUJCQ0dvUXF4NGFJQWdnQlJBb0lBZ2dDQ2dDR0VFQmFqWUNHQ0FBUVNCcUpBQWdCU0VBSUFSQkVHb2tBQ0FERUtnQklBSVFxQUVnQmhCZUlBZEI0QUJxSkFBZ0FBc01BQ0FBRUtjZUdpQUFFQjhMc0FFQkEzOGpBRUVnYXlJQ0pBQWdBaUFBS0FJZ05nSVlJQUlnQUNrQ0dEY0RFQ0FDSUFBcEFoQTNBd2dnQWlBQklBQW9BaVFRbHdFMkFnUWdBU2dDQUNFQUl3QkJFR3NpQVNRQUlBQVFIQ0FBSUFBb0FneEJBV29pQXpZQ0RDQUJJQU0yQWdnZ0FFR01BV29pQXhDL0FTSUVJQUFvQWdnZ0FTZ0NDQ0FDUVFocUlBSW9BZ1FRcmg0YUlBTWdCQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUVJUUFnQVVFUWFpUUFJQUpCSUdva0FDQUFDNU1DQVFkL0l3QkJNR3NpQWlRQUlBSWdBQ2dDSURZQ0tDQUNJQUFwQWhnM0F5QWdBaUFBS1FJUU53TVlJQUlnQVNBQUtBSWtFSjRKTmdJVUlBSWdBU0FBS0FJb0VKNEpOZ0lRSUFJZ0FTQUFRU3hxRUpNTUlBRW9BZ0FoQUNNQVFSQnJJZ01rQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0UyQWd3Z0F5QUJOZ0lJSXdCQkVHc2lBU1FBSUFCQmpBRnFJZ1FRdUI0aEJTQUNLQUlRSVFZZ0FpZ0NGQ0VISUFNb0FnZ2hDQ0FBS0FJSUlRQWdBU0FDUVFScU5nSUlJQUVnQWlnQ0JDQUNSem9BRENBRklBQWdDQ0FDUVJocUlBY2dCaUFCUVFocUVOQWVHaUFFSUFVUUtDQUVJQVFvQWhoQkFXbzJBaGdnQVVFUWFpUUFJQVVoQUNBRFFSQnFKQUFnQWhDb0FTQUNRVEJxSkFBZ0FBc01BQ0FBRU1vZUdpQUFFQjhMRFFBZ0FDQUJJQUpCQ1JEMEJBc05BQ0FBSUFFZ0FrRUlFUFFFQ3cwQUlBQWdBU0FDUVFjUTlBUUxEUUFnQUNBQklBSkJCaEQwQkFzTkFDQUFJQUVnQWtFRkVQUUVDdzBBSUFBZ0FTQUNRUVFROUFRTERRQWdBQ0FCSUFKQkF4RDBCQXNOQUNBQUlBRWdBa0VDRVBRRUN3MEFJQUFnQVNBQ1FRRVE5QVFMYmdFQmZ5QUFLQUlBSVFNakFFRVFheUlBSkFBQ1FDQURMUUFNUlFSQUlBRWdBaENlQVF3QkN5QUFJQUkyQWd3Z0FDQUROZ0lJSUFBb0Fnd2hBU0FBS0FJSUlnSVFsUUlnQWlBQktBSUlOZ0lJSUFJZ0FTa0NBRGNDQUNBQkVGVWdBa0VBT2dBTUN5QUFRUkJxSkFBTEdnQWdBU0FDS1FJQU53SUFJQUVnQWlnQ0NEWUNDQ0FDRUZVTHNBSUJDWDhqQUVGQWFpSUNKQUFnQWlBQUtBSWdOZ0k0SUFJZ0FDa0NHRGNETUNBQ0lBQXBBaEEzQXlnZ0FpQUJJQUFvQWlRUWx3RTJBaVFnQWlBQklBQW9BaWdRbmdrMkFpQWdBaUFCSUFBb0Fpd1F4aEEyQWh3Z0FrRUlhaUlESUFFZ0FFRXdhaENURENBQktBSUFJUUFqQUVFUWF5SUVKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUJOZ0lNSUFRZ0FUWUNDQ01BUVJCcklnRWtBQ0FBUVl3QmFpSUZFUHdISVFZZ0FpZ0NIQ0VISUFJb0FpQWhDQ0FDS0FJa0lRa2dCQ2dDQ0NFS0lBQW9BZ2doQUNBQklBTkJCR28yQWdnZ0FTQURLQUlFSUFOSE9nQU1JQVlnQUNBS0lBSkJLR29nQ1NBSUlBY2dBVUVJYWhDQkh4b2dCU0FHRUNnZ0JTQUZLQUlZUVFGcU5nSVlJQUZCRUdva0FDQUdJUUFnQkVFUWFpUUFJQU1RcUFFZ0FrRkFheVFBSUFBTERBQWdBQkR5SGhvZ0FCQWZDMWNCQVg4akFFRWdheUlDSkFBZ0FpQUFLQUlnTmdJWUlBSWdBQ2tDR0RjREVDQUNJQUFwQWhBM0F3Z2dBaUFCSUFBb0FpUVFsd0UyQWdRZ0FTZ0NBQ0FDUVFocUlBSkJCR29RN1I0aEFDQUNRU0JxSkFBZ0FBdXdBUUVEZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUNJQUVnQUNnQ0pCQ1hBVFlDQkNBQktBSUFJUUFqQUVFUWF5SUJKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUROZ0lNSUFFZ0F6WUNDQ0FBUVl3QmFpSURFTDhCSWdRZ0FDZ0NDQ0FCS0FJSUlBSkJDR29nQWlnQ0JCRHZIaG9nQXlBRUVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFRaEFDQUJRUkJxSkFBZ0FrRWdhaVFBSUFBTEN3QWdBRUg4NXdBUUZCb0xTQUVCZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUJLQUlBSUFKQkNHb2dBRUVrYWhEd0hpRUFJQUpCSUdva0FDQUFDd3NBSUFCQjI5RUVFQlFhQ3dzQUlBQkJ1cFlERUJRYUMzSUJBWDhqQUVFd2F5SUVKQUFnQkNBQ05nSWdJQVFnQVRZQ0tDQUVRUUEyQWhnZ0JFSUFOd01RSUFSQ0FEY0RDQ0FBSUFRb0FpZ2dCQ2dDSUNBRVFRaHFFUE1HSWdCQndJRVNOZ0lFSUFCQi9JRVNOZ0lBSUFCQjRJRVNOZ0lBSUFCQkpHb2dBeEM2Q1NBRVFUQnFKQUFnQUF1MUFRRUVmeU1BUVNCcklnSWtBQ0FDSUFBb0FpQTJBaGdnQWlBQUtRSVlOd01RSUFJZ0FDa0NFRGNEQ0NBQ0lBRWdBQ2dDS0JDWEFUWUNCQ0FCS0FJQUlRRWpBRUVRYXlJRUpBQWdBUkFjSUFFZ0FTZ0NERUVCYWlJRE5nSU1JQVFnQXpZQ0NDQUJRWXdCYWlJREVNVUNJZ1VnQVNnQ0NDQUVLQUlJSUFKQkNHb2dBQ2dDSkNBQ0tBSUVFUE1lR2lBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JTRUFJQVJCRUdva0FDQUNRU0JxSkFBZ0FBdkpBUUVFZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUNJQUVnQUNnQ0tCQ1hBVFlDQkNBQ0lBRWdBQ2dDTEJDWEFUWUNBQ0FCS0FJQUlRRWpBRUVRYXlJRUpBQWdBUkFjSUFFZ0FTZ0NERUVCYWlJRE5nSU1JQVFnQXpZQ0NDQUJRWXdCYWlJREVMVUhJZ1VnQVNnQ0NDQUVLQUlJSUFKQkNHb2dBQ2dDSkNBQ0tBSUVJQUlvQWdBUTloNGFJQU1nQlJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FGSVFBZ0JFRVFhaVFBSUFKQklHb2tBQ0FBQzhRQkFRTi9Jd0JCTUdzaUFpUUFJQUlnQUNnQ0lEWUNLQ0FDSUFBcEFoZzNBeUFnQWlBQUtRSVFOd01ZSUFJZ0FTQUFRU1JxRU9JRU5nSVFJQUlnQVNBQUtBSW9FSmNCTmdJTUlBRW9BZ0FoQUNNQVFSQnJJZ0VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ00yQWd3Z0FTQUROZ0lJSUFCQmpBRnFJZ01ReFFJaUJDQUFLQUlJSUFFb0FnZ2dBa0VZYWlBQ0tBSVFJQUlvQWd3USt4NGFJQU1nQkJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FFSVFBZ0FVRVFhaVFBSUFKQk1Hb2tBQ0FBQzdBQkFRTi9Jd0JCSUdzaUFpUUFJQUlnQUNnQ0lEWUNHQ0FDSUFBcEFoZzNBeEFnQWlBQUtRSVFOd01JSUFJZ0FTQUFLQUlrRUpjQk5nSUVJQUVvQWdBaEFDTUFRUkJySWdFa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdNMkFnd2dBU0FETmdJSUlBQkJqQUZxSWdNUXZ3RWlCQ0FBS0FJSUlBRW9BZ2dnQWtFSWFpQUNLQUlFRVB3ZUdpQURJQVFRS0NBRElBTW9BaGhCQVdvMkFoZ2dCQ0VBSUFGQkVHb2tBQ0FDUVNCcUpBQWdBQXNMQUNBQVFickZBeEFVR2d1d0FRRURmeU1BUVNCcklnSWtBQ0FDSUFBb0FpQTJBaGdnQWlBQUtRSVlOd01RSUFJZ0FDa0NFRGNEQ0NBQ0lBRWdBQ2dDSkJDWEFUWUNCQ0FCS0FJQUlRQWpBRUVRYXlJQkpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRE5nSU1JQUVnQXpZQ0NDQUFRWXdCYWlJREVMOEJJZ1FnQUNnQ0NDQUJLQUlJSUFKQkNHb2dBaWdDQkJEK0hob2dBeUFFRUNnZ0F5QURLQUlZUVFGcU5nSVlJQVFoQUNBQlFSQnFKQUFnQWtFZ2FpUUFJQUFMeEFFQkEzOGpBRUVnYXlJQ0pBQWdBaUFBS0FJZ05nSVlJQUlnQUNrQ0dEY0RFQ0FDSUFBcEFoQTNBd2dnQWlBQklBQW9BaVFRbHdFMkFnUWdBaUFCSUFBb0FpZ1Fsd0UyQWdBZ0FTZ0NBQ0VBSXdCQkVHc2lBU1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBellDRENBQklBTTJBZ2dnQUVHTUFXb2lBeERGQWlJRUlBQW9BZ2dnQVNnQ0NDQUNRUWhxSUFJb0FnUWdBaWdDQUJDRUVSb2dBeUFFRUNnZ0F5QURLQUlZUVFGcU5nSVlJQVFoQUNBQlFSQnFKQUFnQWtFZ2FpUUFJQUFMQ3dBZ0FFRzY0UU1RRkJvTHNBRUJBMzhqQUVFZ2F5SUNKQUFnQWlBQUtBSWdOZ0lZSUFJZ0FDa0NHRGNERUNBQ0lBQXBBaEEzQXdnZ0FpQUJJQUFvQWlRUWx3RTJBZ1FnQVNnQ0FDRUFJd0JCRUdzaUFTUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FCSUFNMkFnZ2dBRUdNQVdvaUF4Qy9BU0lFSUFBb0FnZ2dBU2dDQ0NBQ1FRaHFJQUlvQWdRUS94NGFJQU1nQkJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FFSVFBZ0FVRVFhaVFBSUFKQklHb2tBQ0FBQ3dzQUlBQkJ5ZTRFRUJRYUM3QUJBUU4vSXdCQklHc2lBaVFBSUFJZ0FDZ0NJRFlDR0NBQ0lBQXBBaGczQXhBZ0FpQUFLUUlRTndNSUlBSWdBU0FBS0FJa0VKY0JOZ0lFSUFFb0FnQWhBQ01BUVJCcklnRWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQVNBRE5nSUlJQUJCakFGcUlnTVF2d0VpQkNBQUtBSUlJQUVvQWdnZ0FrRUlhaUFDS0FJRUVJQWZHaUFESUFRUUtDQURJQU1vQWhoQkFXbzJBaGdnQkNFQUlBRkJFR29rQUNBQ1FTQnFKQUFnQUFzTEFDQUFRY0tUQWhBVUdndXdBUUVEZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUNJQUVnQUNnQ0pCQ1hBVFlDQkNBQktBSUFJUUFqQUVFUWF5SUJKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUROZ0lNSUFFZ0F6WUNDQ0FBUVl3QmFpSURFTDhCSWdRZ0FDZ0NDQ0FCS0FJSUlBSkJDR29nQWlnQ0JCQ0NIeG9nQXlBRUVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFRaEFDQUJRUkJxSkFBZ0FrRWdhaVFBSUFBTEN3QWdBRUh3N3dJUUZCb0xzQUVCQTM4akFFRWdheUlDSkFBZ0FpQUFLQUlnTmdJWUlBSWdBQ2tDR0RjREVDQUNJQUFwQWhBM0F3Z2dBaUFCSUFBb0FpUVFsd0UyQWdRZ0FTZ0NBQ0VBSXdCQkVHc2lBU1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBellDRENBQklBTTJBZ2dnQUVHTUFXb2lBeEMvQVNJRUlBQW9BZ2dnQVNnQ0NDQUNRUWhxSUFJb0FnUVFneDhhSUFNZ0JCQW9JQU1nQXlnQ0dFRUJhallDR0NBRUlRQWdBVUVRYWlRQUlBSkJJR29rQUNBQUN3c0FJQUJCdHI4REVCUWFDN0FDQVFsL0l3QkJRR29pQWlRQUlBSWdBQ2dDSURZQ09DQUNJQUFwQWhnM0F6QWdBaUFBS1FJUU53TW9JQUlnQVNBQUtBSWtFTThETmdJa0lBSWdBU0FBUVNocUVPSUVOZ0lnSUFJZ0FTQUFLQUlzRUpjQk5nSWNJQUpCQ0dvaUF5QUJJQUJCTUdvUThnVWdBU2dDQUNFQUl3QkJFR3NpQkNRQUlBQVFIQ0FBSUFBb0FneEJBV29pQVRZQ0RDQUVJQUUyQWdnakFFRVFheUlCSkFBZ0FFR01BV29pQlJDM0JDRUdJQUlvQWh3aEJ5QUNLQUlnSVFnZ0FpZ0NKQ0VKSUFRb0FnZ2hDaUFBS0FJSUlRQWdBU0FEUVFocU5nSUlJQUVnQXlnQ0NDQURSem9BRENBR0lBQWdDaUFDUVNocUlBa2dDQ0FISUFGQkNHb1FoQjhhSUFVZ0JoQW9JQVVnQlNnQ0dFRUJhallDR0NBQlFSQnFKQUFnQmlFQUlBUkJFR29rQUNBREVLb0JJQUpCUUdza0FDQUFDd1lBUWNUU0JBdXdBZ0VKZnlNQVFVQnFJZ0lrQUNBQ0lBQW9BaUEyQWpnZ0FpQUFLUUlZTndNd0lBSWdBQ2tDRURjREtDQUNJQUVnQUNnQ0pCRFBBellDSkNBQ0lBRWdBRUVvYWhEaUJEWUNJQ0FDSUFFZ0FDZ0NMQkNYQVRZQ0hDQUNRUWhxSWdNZ0FTQUFRVEJxRVBJRklBRW9BZ0FoQUNNQVFSQnJJZ1FrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0UyQWd3Z0JDQUJOZ0lJSXdCQkVHc2lBU1FBSUFCQmpBRnFJZ1VRdHdRaEJpQUNLQUljSVFjZ0FpZ0NJQ0VJSUFJb0FpUWhDU0FFS0FJSUlRb2dBQ2dDQ0NFQUlBRWdBMEVJYWpZQ0NDQUJJQU1vQWdnZ0EwYzZBQXdnQmlBQUlBb2dBa0VvYWlBSklBZ2dCeUFCUVFocUVJWWZHaUFGSUFZUUtDQUZJQVVvQWhoQkFXbzJBaGdnQVVFUWFpUUFJQVloQUNBRVFSQnFKQUFnQXhDcUFTQUNRVUJySkFBZ0FBc0ZBRUdDTGd2YkFnRUtmeU1BUVVCcUlnSWtBQ0FDSUFBb0FpQTJBamdnQWlBQUtRSVlOd013SUFJZ0FDa0NFRGNES0NBQ0lBRWdBQ2dDSkJEUEF6WUNKQ0FDSUFFZ0FFRW9haERpQkRZQ0lDQUNJQUVnQUNnQ1JCQ1hBVFlDSENBQ0lBRWdBQ2dDU0JDWEFUWUNHQ0FDSUFFZ0FDZ0NMQkNYQVRZQ0ZDQUNJQUVnQUVFd2FoRHlCU0FCS0FJQUlRQWpBRUVRYXlJREpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJQk5nSU1JQU1nQVRZQ0NDTUFRUkJySWdFa0FDQUFRWXdCYWlJRUVJY2ZJUVVnQWlnQ0ZDRUdJQUlvQWhnaEJ5QUNLQUljSVFnZ0FpZ0NJQ0VKSUFJb0FpUWhDaUFES0FJSUlRc2dBQ2dDQ0NFQUlBRWdBa0VJYWpZQ0NDQUJJQUlvQWdnZ0FrYzZBQXdnQlNBQUlBc2dBa0VvYWlBS0lBa2dDQ0FISUFZZ0FVRUlhaENJSHhvZ0JDQUZFQ2dnQkNBRUtBSVlRUUZxTmdJWUlBRkJFR29rQUNBRklRQWdBMEVRYWlRQUlBSVFxZ0VnQWtGQWF5UUFJQUFMQmdCQm5QOEJDOFFCQVFOL0l3QkJJR3NpQWlRQUlBSWdBQ2dDSURZQ0dDQUNJQUFwQWhnM0F4QWdBaUFBS1FJUU53TUlJQUlnQVNBQUtBSWtFTThETmdJRUlBSWdBU0FBUVNocUVPSUVOZ0lBSUFFb0FnQWhBQ01BUVJCcklnRWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQVNBRE5nSUlJQUJCakFGcUlnTVF4UUlpQkNBQUtBSUlJQUVvQWdnZ0FrRUlhaUFDS0FJRUlBSW9BZ0FRaVI4YUlBTWdCQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUVJUUFnQVVFUWFpUUFJQUpCSUdva0FDQUFDME1CQVg4akFFRWdheUlDSkFBZ0FpQUFLQUlnTmdJWUlBSWdBQ2tDR0RjREVDQUNJQUFwQWhBM0F3Z2dBU2dDQUNBQ1FRaHFFSVVmSVFBZ0FrRWdhaVFBSUFBTHZna0JDWDhqQUVId0FHc2lCeVFBSUFjZ0FDZ0NJRFlDYUNBSElBQXBBaGczQTJBZ0J5QUFLUUlRTndOWUlBY2dBU0FBS0FJa0VNOEROZ0pVSUFkQktHb2lCa0tBZ0lDQWdBRTNBaVFnQmlBR05nSWdJd0JCTUdzaUFpUUFJQVlnQUNnQ1RCQTVJQUpCQURZQ0tDQUNJQUJCS0dvMkFpUWdBaUFCUWNnZ2FqWUNJQ0FDSUFGQjNJQUJhaWdDQUVFQmF6WUNMQUpBSUFKQklHb1F0UUVFUUNBQ1FTQnFFRm9pQkNnQzJBRWlBeUFFS0FMY0FVRVliR29oQkFOQUlBTWdCRVlFUUNBQUtBSklJZ1FnQUNnQ1RFRUNkR29oQ0FOQUlBUWdDRVlFUUNBQ1FTQnFFRm9pQkNnQ3lBSWlBeUFFS0FMTUFrRVliR29oQkFOQUlBTWdCRVlOQmlBQ0lBRWdBeEJtRU9JR05nSVFJQVlnQWtFUWFoQWtJQU5CR0dvaEF3d0FDd0FMSUFJZ0FrRWdhaEJhSWdOQjJBSnFOZ0lRSUFRb0FnQWhCU0FDUVFBMkFoZ2dBaUFGTmdJVUlBSWdBMEdjQ1dvb0FnQkJBV3MyQWh3Q1FDQUNRUkJxRUxRQlJRMEFJQUpCRUdvUXJBRWlCU2dDWUNJRElBVW9BbVJCR0d4cUlRVURRQ0FESUFWR0RRRWdBaUFCSUFNUVpoRGlCallDRENBR0lBSkJER29RSkNBRFFSaHFJUU1NQUFzQUN5QUNRU0JxRUZvaEF5QUNJQVFvQWdBMkFoQWdBeUFDUVJCcUVNWURSUVJBSUFJZ0FTQUVLQUlBRUlVUk5nSVFJQVlnQWtFUWFoQWtDeUFDSUFKQklHb1FXaUlEUWFBSmFqWUNFQ0FFS0FJQUlRVWdBa0VBTmdJWUlBSWdCVFlDRkNBQ0lBTkI1QTlxS0FJQVFRRnJOZ0ljQWtBZ0FrRVFhaEMwQVVVTkFDQUNRUkJxRUt3QklnVW9BbUFpQXlBRktBSmtRUmhzYWlFRkEwQWdBeUFGUmcwQklBSWdBU0FERUdZUTRnWTJBZ3dnQmlBQ1FReHFFQ1FnQTBFWWFpRUREQUFMQUFzZ0JFRUVhaUVFREFBTEFBVWdBaUFCSUFNUVpoRGlCallDRUNBR0lBSkJFR29RSkNBRFFSaHFJUU1NQVFzQUN3QUxJQUFvQWtnaUJDQUFLQUpNUVFKMGFpRUlBMEFnQkNBSVJnUkFJQUpCSUdvUXRRRkZEUUlnQWtFZ2FoQmFJZ1FvQXNnQ0lnTWdCQ2dDekFKQkdHeHFJUVFEUUNBRElBUkdEUU1nQWlBQklBTVFaaERpQmpZQ0VDQUdJQUpCRUdvUUpDQURRUmhxSVFNTUFBc0FCU0FDSUFFZ0JDZ0NBQkNGRVRZQ0VDQUdJQUpCRUdvUUpBSkFJQUpCSUdvUXRRRkZEUUFnQWlBQ1FTQnFFRm9pQTBHZ0NXbzJBaEFnQkNnQ0FDRUZJQUpCQURZQ0dDQUNJQVUyQWhRZ0FpQURRZVFQYWlnQ0FFRUJhellDSENBQ1FSQnFFTFFCUlEwQUlBSkJFR29RckFFaUJTZ0NZQ0lESUFVb0FtUkJHR3hxSVFVRFFDQURJQVZHRFFFZ0FpQUJJQU1RWmhEaUJqWUNEQ0FHSUFKQkRHb1FKQ0FEUVJocUlRTU1BQXNBQ3lBRVFRUnFJUVFNQVFzQUN3QUxJQUpCTUdva0FDQUhRUWhxSWdJZ0FTQUFRZFFBYWhENkN5QUJLQUlBSVFFakFFRVFheUlESkFBZ0FSQWNJQUVnQVNnQ0RFRUJhaUlBTmdJTUlBTWdBRFlDQ0NNQVFSQnJJZ0FrQUNBQlFZd0JhaUlFRUpjTUlRZ2dCeWdDVkNFRklBTW9BZ2doQ1NBQktBSUlJUUVnQUNBR1FTQnFOZ0lJSUFZb0FpQWhDaUFBSUFKQkVHbzJBZ0FnQUNBR0lBcEhPZ0FNSUFBZ0FpZ0NFQ0FDUnpvQUJDQUlJQUVnQ1NBSFFkZ0FhaUFGSUFCQkNHb2dBQkNZREJvZ0JDQUlFQ2dnQkNBRUtBSVlRUUZxTmdJWUlBQkJFR29rQUNBSUlRQWdBMEVRYWlRQUlBSVFYaUFHRUNNZ0IwSHdBR29rQUNBQUN3d0FJQUFRaWg4YUlBQVFId3VTQWdFSGZ5TUFRVUJxSWdJa0FDQUNJQUFvQWlBMkFqZ2dBaUFBS1FJWU53TXdJQUlnQUNrQ0VEY0RLQ0FDSUFFZ0FDZ0NKQkRQQXpZQ0pDQUNJQUVnQUVFb2FoRGlCRFlDSUNBQ0lBRWdBRUVzYWhENkN5QUJLQUlBSVFBakFFRVFheUlESkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlCTmdJTUlBTWdBVFlDQ0NNQVFSQnJJZ0VrQUNBQVFZd0JhaUlFRUlZUklRVWdBaWdDSUNFR0lBSW9BaVFoQnlBREtBSUlJUWdnQUNnQ0NDRUFJQUVnQWtFUWFqWUNDQ0FCSUFJb0FoQWdBa2M2QUF3Z0JTQUFJQWdnQWtFb2FpQUhJQVlnQVVFSWFoQ0hFUm9nQkNBRkVDZ2dCQ0FFS0FJWVFRRnFOZ0lZSUFGQkVHb2tBQ0FGSVFBZ0EwRVFhaVFBSUFJUVhpQUNRVUJySkFBZ0FBc01BQ0FBRUlzZkdpQUFFQjhMdFFVQkMzOGpBRUd3RkdzaUFpUUFJQUVvQWdBaEJTQUFLQUlRSVFjZ0FrR2dFMm9RU1NJR1FRaHFJZ05CcE80SkVBNGFJQUFvQWdnb0FnQWhBU0FBS0FJRUtBSUFJUVFnQWtFQU9nQ2NFeUFDSUFFMkFwZ1RJQUpCcUFwcUlnRWdCQ0FDUVpnVGFpQUFLQUlNS0FJQUVJZ1JJQU1nQVJBU0dpQURFT0lCR2lBQkVBOGFJQUpCakJOcVFvQ0FnSUNBQVRjQ0FDQUNJQUUyQW9nVElBSkJuQXBxUW9DQWdJQ0FBVGNDQUNBQ0lBSkJ1QUZxTmdLWUNpQUZLQUlBSWdFZ0JTZ0NCRUdNQVd4cUlRb2dBa0dZQ21vaEN5QUNRWWdUYWlFTUEwQWdBU0FLUmdSQUlBSW9Bb3dUQkVBZ0F4RGlBUm9nQXlBQ0tBS01FeEFoR2lBRFFmWElBUkFPR2lBRFFadnFCa0hWNmdZZ0FpZ0NqQk5CQVVzYkVBNGFJQU1RNGdFYUlBSkJBRG9BSkNBQ0lBdzJBaUFnQnlBR0lBSkJJR29nQUNnQ0JDZ0NBQkNiREFzZ0FpZ0NuQW9FUUNBREVPSUJHaUFESUFJb0Fwd0tFQ0VhSUFOQnVld0NFQTRhSUFOQm0rb0dRZFhxQmlBQ0tBS2NDa0VCU3hzUURob2dBeERpQVJvZ0FrRUFPZ0FjSUFJZ0N6WUNHQ0FISUFZZ0FrRVlhaUFBS0FJRUtBSUFFSnNNQ3lBSEtBSUVJZ0VRSENBQ1FTaHFJZ1FnQmtFTWFoQkNJQUlnQWlnQ0xDQUNMUUF6SWdNZ0EwRVlkRUVZZFVFQVNDSURHellDRkNBQ0lBSW9BaWdnQkNBREd6WUNFQ0FBS0FJVUlRQWdBaUFDS1FNUU53TUlJQUZCeUFKcUlBSkJDR29nQUJEVkFTQUVFQThhSUFKQnVBRnFFSW9SSUFKQnFBcHFFSW9SSUFZUVVTQUNRYkFVYWlRQUJTQUNRYmdCYWlBQ1FhZ0thaUFDUVNocUlBRVFqUjhpQ1NnQ0FDa0RHRUlFZzFBaUNCc2lCU2dDNUFnaUJDQUNRYUFLYWlBQ1FaQVRhaUFJR3lnQ0FFOEVRQ0FGRUprZklBVW9BdVFJSVFRTElBVW9BdUFJSVFnZ0JTQUVRUUZxTmdMa0NDQUlJQVJCakFGc2FpQUpFSTBmR2lBSkVLOEZHaUFCUVl3QmFpRUJEQUVMQ3dzTkFDQUFJQUZCNlBZUkVNY01Dd3NBSUFCQjZQWVJFTWdNQ3dzQUlBQWdBVUVJRU9JU0N3MEFJQUFnQVVHbzlSRVF0Z1VMQ3dBZ0FFR285UkVRdHdVTEN3QWdBQ0FCUVFRUTRoSUxEUUFnQUNBQlFmRHpFUkMyQlFzTEFDQUFRZkR6RVJDM0JRdERBUUYvSXdCQklHc2lBaVFBSUFJZ0FDZ0NJRFlDR0NBQ0lBQXBBaGczQXhBZ0FpQUFLUUlRTndNSUlBRW9BZ0FnQWtFSWFoQ01IeUVBSUFKQklHb2tBQ0FBQzhzQ0FRWi9Jd0JCd0FGcklnSWtBQ0FCS0FJQUlRTWdBQ2dDRENFRUlBSkJNR29RU1NJR1FRaHFJZ0ZCODRBS0VBNGFJQUFvQWdnb0FnQWhCU0FBS0FJRUtBSUFJUWNnQWtFQU9nQWNJQUlnQlRZQ0dDQUNRU0JxSWdVZ0J5QUNRUmhxUVFBUWlCRWdBU0FGRUJJYUlBRVE0Z0VhSUFVUUR4b2dBeWdDQkFSQUlBRVE0Z0VhSUFFZ0F5Z0NCQkFoR2lBQlFjck9BaEFPR2lBQlFadnFCa0hWNmdZZ0F5Z0NCRUVCU3hzUURob2dBUkRpQVJvZ0FrRUFPZ0FVSUFJZ0F6WUNFQ0FFSUFZZ0FrRVFhaUFBS0FJRUtBSUFFSnNNQ3lBRUtBSUVJZ0VRSENBQ1FTQnFJZ1FnQmtFTWFoQkNJQUlnQWlnQ0pDQUNMUUFySWdNZ0EwRVlkRUVZZFVFQVNDSURHellDRENBQ0lBSW9BaUFnQkNBREd6WUNDQ0FBS0FJUUlRQWdBaUFDS1FNSU53TUFJQUZCeUFKcUlBSWdBQkRWQVNBRUVBOGFJQVlRVVNBQ1FjQUJhaVFBQ3cwQUlBQWdBVUdvOHhFUXRnVUxDd0FnQUVHbzh4RVF0d1VMQ3dBZ0FFSEE0QVlRRkJvTHp3RUJBbjhqQUVFZ2F5SUNKQUFnQWlBQUtBSWdOZ0lZSUFJZ0FDa0NHRGNERUNBQ0lBQXBBaEEzQXdnZ0FnSi9JQUFvQWlRaEFDQUJLQUlFSWdNRVFDQURLQUlBSUFBUVYwRUJRUUZCMVo0SVFkQ25BMEh3QUJCTEMwRUFJQUVnQUJETkF5SUFSUTBBR2dKL0lBQUVRQ0FBSUFBb0FnUkJ1TzRQUmcwQkdpQUJJQUJCdU80UEVPRUVDMEVBQ3lFQUlBRW9BZ0FvQWdnZ0FCQlhRUUZCQVVHaG13aEIwS2NEUWZRQUVFc2dBQXMyQWdRZ0FTZ0NBQ0FDUVFocUlBSkJCR29Ra1I4aEFDQUNRU0JxSkFBZ0FBc0xBQ0FBUWQrUkFoQVVHZ3NWQUNBQUlBRWdBaUFEUW9tQWdJQVFRUWtRMndrTEN3QWdBRUdvd2dRUUZCb0xGUUFnQUNBQklBSWdBMEtIZ0lDQUVFRUhFTnNKQ3dzQUlBQkJtOElFRUJRYUN5WUJBWDRDUUFKQUlBTW9BZ0JCQjJzT0F3QUJBQUVMSUFNcEFnQWhCQXNnQUNBRU53SUFDd3NBSUFCQnlwRUNFQlFhQ3hJQUlBQWdBU0FDSUFOQnFBUkJDUkRjQ1FzTEFDQUFRYUxlQXhBVUdnc1ZBQ0FBSUFFZ0FpQURRb0tBZ0lBUVFRSVEyd2tMQ3dBZ0FFR3UzZ01RRkJvTEZRQWdBQ0FCSUFJZ0EwS0RnSUNBRUVFREVOc0pDd29BSUFCQndEb1FGQm9MRXdBZ0FDQUJJQUlnQTBHUXlRUkJFQkRjQ1FzS0FDQUFRWjA3RUJRYUN4TUFJQUFnQVNBQ0lBTkJ5S1FCUVE0UTNBa0xDd0FnQUVIcitBQVFGQm9MRXdBZ0FDQUJJQUlnQTBHbWtncEJFUkRjQ1FzVEFDQUFJQUVnQWtIdy9BWkJ1djBHRU1vTUN5UUFJQUlRNlFJRVFDQUJFT2dDRHd0QkFDRUFJQUlRMUFNRWZ5QUJFTk1EQlVFQUN3c1RBQ0FBSUFFZ0FrSGQ4QVpCN1A0R0VNb01DeVFBSUFJUTV3SUVRQ0FCRU9ZQ0R3dEJBQ0VBSUFJUTBnTUVmeUFCRU5FREJVRUFDd3NUQUNBQUlBRWdBa0c2L1FaQjdQNEdFTW9NQ3lRQUlBSVE2UUlFUUNBQkVPZ0NEd3RCQUNFQUlBSVE1d0lFZnlBQkVPWUNCVUVBQ3dzUEFDQUFJQUVnQWtIZDhBWVE1QklMTWdBZ0FoRHBBZ1JBSUFFUTZBSVBDeUFDRU9jQ0JFQWdBUkRtQWc4TFFRQWhBQ0FDRU5JREJIOGdBUkRSQXdWQkFBc0xEd0FnQUNBQklBSkI4UHdHRU9RU0N6SUFJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRFVBd1JBSUFFUTB3TVBDMEVBSVFBZ0FoRG5BZ1IvSUFFUTVnSUZRUUFMQzZNQkFRUi9Jd0JCMEFGcklnRWtBQ0FCUVVCckVFa2lBMEVJYWlJQ0lBRkJNR3BCN1A0R0VCUWlCQkFTR2lBQ1FmVHREQkFPR2lBQ0lBRkJJR3BCdXYwR0VCUWlCUkFTR2lBQ1FmVHREQkFPR2lBQ0lBRkJFR3BCOFB3R0VCUWlCaEFTR2lBQ1FiWDBDUkFPR2lBQ0lBRkIzZkFHRUJRaUFoQVNHaUFDRUE4YUlBWVFEeG9nQlJBUEdpQUVFQThhSUFBZ0EwRU1haEJDSUFNUVVTQUJRZEFCYWlRQUMwQUFJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRFVBd1JBSUFFUTB3TVBDeUFDRU9jQ0JFQWdBUkRtQWc4TFFRQWhBQ0FDRU5JREJIOGdBUkRSQXdWQkFBc0xhQUVDZnlNQVFiQUJheUlCSkFBZ0FVRWdhaEJKSVFJZ0FVRVFhaUlFSUFFZ0FSQ0NCaUFDUVFocUlnTWdCQkFTR2lBRFFiWDBDUkFPR2lBRElBRkJ1djBHRUJRaUF4QVNHaUFERUE4YUlBUVFEeG9nQUNBQ1FReHFFRUlnQWhCUklBRkJzQUZxSkFBTEpnQWdBU0FDRVBvREJFQWdBUkQ1QXc4TFFRQWhBQ0FDRU9rQ0JIOGdBUkRvQWdWQkFBc0xpQUVCQTM4akFFSEFBV3NpQVNRQUlBRkJNR29RU1NFRElBRkJJR29pQkNBQklBRVFnZ1lnQTBFSWFpSUNJQVFRRWhvZ0FrSDA3UXdRRGhvZ0FpQUJRUkJxUWJyOUJoQVVJZ1VRRWhvZ0FrRzE5QWtRRGhvZ0FpQUJRZkQ4QmhBVUlnSVFFaG9nQWhBUEdpQUZFQThhSUFRUUR4b2dBQ0FEUVF4cUVFSWdBeEJSSUFGQndBRnFKQUFMTkFBZ0FTQUNFUG9EQkVBZ0FSRDVBdzhMSUFJUTZRSUVRQ0FCRU9nQ0R3dEJBQ0VBSUFJUTFBTUVmeUFCRU5NREJVRUFDd3VJQVFFRGZ5TUFRY0FCYXlJQkpBQWdBVUV3YWhCSklRTWdBVUVnYWlJRUlBRWdBUkNCQmlBRFFRaHFJZ0lnQkJBU0dpQUNRZlR0REJBT0dpQUNJQUZCRUdwQjdQNEdFQlFpQlJBU0dpQUNRYlgwQ1JBT0dpQUNJQUZCM2ZBR0VCUWlBaEFTR2lBQ0VBOGFJQVVRRHhvZ0JCQVBHaUFBSUFOQkRHb1FRaUFERUZFZ0FVSEFBV29rQUFzMEFDQUJJQUlRK0FNRVFDQUJFUGNERHdzZ0FoRG5BZ1JBSUFFUTVnSVBDMEVBSVFBZ0FoRFNBd1IvSUFFUTBRTUZRUUFMQzJnQkFuOGpBRUd3QVdzaUFTUUFJQUZCSUdvUVNTRUNJQUZCRUdvaUJDQUJJQUVRZ1FZZ0FrRUlhaUlESUFRUUVob2dBMEcxOUFrUURob2dBeUFCUWV6K0JoQVVJZ01RRWhvZ0F4QVBHaUFFRUE4YUlBQWdBa0VNYWhCQ0lBSVFVU0FCUWJBQmFpUUFDeVlBSUFFZ0FoRDRBd1JBSUFFUTl3TVBDMEVBSVFBZ0FoRG5BZ1IvSUFFUTVnSUZRUUFMQ3c4QUlBQWdBU0FDUWZEOEJoRGxFZ3RTQUNBQklBSVErZ01FUUNBQkVQa0REd3NnQVNBQ0VQZ0RCRUFnQVJEM0F3OExJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRFVBd1JBSUFFUTB3TVBDMEVBSVFBZ0FoRG5BZ1IvSUFFUTVnSUZRUUFMQ3c4QUlBQWdBU0FDUWQzd0JoRGxFZ3RTQUNBQklBSVErZ01FUUNBQkVQa0REd3NnQVNBQ0VQZ0RCRUFnQVJEM0F3OExJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRG5BZ1JBSUFFUTVnSVBDMEVBSVFBZ0FoRFNBd1IvSUFFUTBRTUZRUUFMQyswQkFRWi9Jd0JCOEFGcklnRWtBQ0FCUWVBQWFoQkpJUU1nQVVIUUFHb2lCQ0FCSUFFUWdRWWdBMEVJYWlJQ0lBUVFFaG9nQWtIMDdRd1FEaG9nQVVGQWF5SUZJQUVnQVJDQ0JpQUNJQVVRRWhvZ0FrSDA3UXdRRGhvZ0FpQUJRVEJxUWV6K0JoQVVJZ1lRRWhvZ0FrSDA3UXdRRGhvZ0FpQUJRU0JxUWJyOUJoQVVJZ2NRRWhvZ0FrSDA3UXdRRGhvZ0FpQUJRUkJxUWZEOEJoQVVJZ2dRRWhvZ0FrRzE5QWtRRGhvZ0FpQUJRZDN3QmhBVUlnSVFFaG9nQWhBUEdpQUlFQThhSUFjUUR4b2dCaEFQR2lBRkVBOGFJQVFRRHhvZ0FDQURRUXhxRUVJZ0F4QlJJQUZCOEFGcUpBQUxHd0FnQUNBQklBSkI4UHdHUWJyOUJrSGQ4QVpCN1A0R0VJNElDeHNBSUFBZ0FTQUNRWXY4QWtHNi9RWkIzZkFHUWV6K0JoQ09DQXRnQUNBQklBSVErZ01FUUNBQkVQa0REd3NnQVNBQ0VQZ0RCRUFnQVJEM0F3OExJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRG5BZ1JBSUFFUTVnSVBDeUFDRU5JREJFQWdBUkRSQXc4TFFRQWhBQ0FDRUlVR0JIOGdBUkNFQmdWQkFBc0xHd0FnQUNBQklBSkJpL3dDUWZEOEJrSGQ4QVpCN1A0R0VJNElDMkFBSUFFZ0FoRDZBd1JBSUFFUStRTVBDeUFCSUFJUStBTUVRQ0FCRVBjRER3c2dBaERVQXdSQUlBRVEwd01QQ3lBQ0VPY0NCRUFnQVJEbUFnOExJQUlRMGdNRVFDQUJFTkVERHd0QkFDRUFJQUlRaFFZRWZ5QUJFSVFHQlVFQUN3c2JBQ0FBSUFFZ0FrR0wvQUpCOFB3R1FicjlCa0hzL2dZUWpnZ0xZQUFnQVNBQ0VQb0RCRUFnQVJENUF3OExJQUVnQWhENEF3UkFJQUVROXdNUEN5QUNFT2tDQkVBZ0FSRG9BZzhMSUFJUTFBTUVRQ0FCRU5NRER3c2dBaERuQWdSQUlBRVE1Z0lQQzBFQUlRQWdBaENGQmdSL0lBRVFoQVlGUVFBTEN4c0FJQUFnQVNBQ1FZdjhBa0h3L0FaQjNmQUdRYnI5QmhDT0NBdGdBQ0FCSUFJUStnTUVRQ0FCRVBrRER3c2dBU0FDRVBnREJFQWdBUkQzQXc4TElBSVE2UUlFUUNBQkVPZ0NEd3NnQWhEVUF3UkFJQUVRMHdNUEN5QUNFTklEQkVBZ0FSRFJBdzhMUVFBaEFDQUNFSVVHQkg4Z0FSQ0VCZ1ZCQUFzTHhBRUJCWDhqQUVIZ0FXc2lBaVFBSUFKQjBBQnFFRWtpQTBFSWFpSUJJQUpCUUd0QjdQNEdFQlFpQkJBU0dpQUJRZlR0REJBT0dpQUJJQUpCTUdwQjNmQUdFQlFpQlJBU0dpQUJRZlR0REJBT0dpQUJJQUpCSUdwQnV2MEdFQlFpQmhBU0dpQUJRZlR0REJBT0dpQUJJQUpCRUdwQjhQd0dFQlFpQnhBU0dpQUJRYlgwQ1JBT0dpQUJJQUpCaS93Q0VCUWlBUkFTR2lBQkVBOGFJQWNRRHhvZ0JoQVBHaUFGRUE4YUlBUVFEeG9nQUNBRFFReHFFRUlnQXhCUklBSkI0QUZxSkFBTFRnQWdBaERwQWdSQUlBRVE2QUlQQ3lBQ0VOUURCRUFnQVJEVEF3OExJQUlRNXdJRVFDQUJFT1lDRHdzZ0FoRFNBd1JBSUFFUTBRTVBDMEVBSVFBZ0FoQ0ZCZ1IvSUFFUWhBWUZRUUFMQzQ0Q0FRZC9Jd0JCZ0FKcklnRWtBQ0FCUWZBQWFoQkpJUU1nQVVIZ0FHb2lCQ0FCSUFFUWdnWWdBMEVJYWlJQ0lBUVFFaG9nQWtIMDdRd1FEaG9nQVVIUUFHb2lCU0FCSUFFUWdRWWdBaUFGRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUZBYTBIcy9nWVFGQ0lHRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUV3YWtIZDhBWVFGQ0lIRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUVnYWtHNi9RWVFGQ0lJRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUVRYWtIdy9BWVFGQ0lKRUJJYUlBSkJ0ZlFKRUE0YUlBSWdBVUdML0FJUUZDSUNFQklhSUFJUUR4b2dDUkFQR2lBSUVBOGFJQWNRRHhvZ0JoQVBHaUFGRUE4YUlBUVFEeG9nQUNBRFFReHFFRUlnQXhCUklBRkJnQUpxSkFBTGJnQWdBU0FDRVBvREJFQWdBUkQ1QXc4TElBRWdBaEQ0QXdSQUlBRVE5d01QQ3lBQ0VPa0NCRUFnQVJEb0FnOExJQUlRMUFNRVFDQUJFTk1ERHdzZ0FoRG5BZ1JBSUFFUTVnSVBDeUFDRU5JREJFQWdBUkRSQXc4TFFRQWhBQ0FDRUlVR0JIOGdBUkNFQmdWQkFBc0xEd0FnQUNBQklBSkI5T1lHRUk0Q0N5OEFRUUFoQUFKQUlBSW9BZ1JCOElVUVJ3MEFJQUVnQWhDckFpSUNSUTBBSUFFb0FnQWdBaENyRENFQUN5QUFDdzhBSUFBZ0FTQUNRZnlKQlJEbkVndWVBUUlCZndGK0l3QkJJR3NpQUNRQUFrQWdBaWdDQkVId2hSQkhEUUFnQUVLQWdJQ0FJRGNEQ0NBQVFvQ0FnSUFnTndNQUlBQkJFR29nQVNBQUVLOEVJQUFwQXhBaUJFS0FnSUNBY0lOQ2dJQ0FnQkJTRFFBZ0FTQUNFS3NDSWdKRkRRQWdBQ0FDTmdJUUlBRW9BZ0FoQWlBQUlBUStBaHdnQWlBQVFSQnFJQUJCSEdvUW53SWhBaUFCS0FJQUlBSVFuUU1oQXdzZ0FFRWdhaVFBSUFNTGhBSUJCMzhqQUVIUUFHc2lBaVFBSUFJZ0FDZ0NJRFlDU0NBQ1FVQnJJQUFwQWhnM0F3QWdBaUFBS1FJUU53TTRJQUpCQ0dvaUF5QUJJQUJCS0dvUWp4RWdBaUFCSUFBb0FpUVFsUWsyQWdRZ0FTZ0NBQ0VBSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBVFlDRENBRUlBRTJBZ2dqQUVFUWF5SUJKQUFnQUVHTUFXb2lCUkQ5QlNFR0lBSW9BZ1FoQnlBRUtBSUlJUWdnQUNnQ0NDRUFJQUVnQTBFZ2FqWUNDQ0FCSUFNb0FpQWdBMGM2QUF3Z0JpQUFJQWdnQWtFNGFpQUhJQUZCQ0dvUS9nVWFJQVVnQmhBb0lBVWdCU2dDR0VFQmFqWUNHQ0FCUVJCcUpBQWdCaUVBSUFSQkVHb2tBQ0FERUNNZ0FrSFFBR29rQUNBQUN3OEFJQUFnQVNBQ1FjQzdCUkRvRWdzdkFFRUFJUUFDUUNBQ0tBSUVRZkNGRUVjTkFDQUJJQUlRcXdJaUFrVU5BQ0FCS0FJQUlBSVFuUU1oQUFzZ0FBc1BBQ0FBSUFFZ0FrR1BpZ1VRNXhJTG5nRUNBWDhCZmlNQVFTQnJJZ0FrQUFKQUlBSW9BZ1JCOElVUVJ3MEFJQUJDZ0lDQWdDQTNBd2dnQUVLQWdJQ0FJRGNEQUNBQVFSQnFJQUVnQUJDdkJDQUFLUU1RSWdSQ2dJQ0FnSENEUW9DQWdJQVFVZzBBSUFFZ0FoQ3JBaUlDUlEwQUlBQWdBallDRUNBQktBSUFJUUlnQUNBRVBnSWNJQUlnQUVFUWFpQUFRUnhxRUo4Q0lRSWdBU2dDQUNBQ0VKNERJUU1MSUFCQklHb2tBQ0FEQ3c4QUlBQWdBU0FDUWRDN0JSRG9FZ3N2QUVFQUlRQUNRQ0FDS0FJRVFmQ0ZFRWNOQUNBQklBSVFxd0lpQWtVTkFDQUJLQUlBSUFJUW5nTWhBQXNnQUFzUEFDQUFJQUVnQWtIdTZBWVFqZ0lMZndFQmZ5TUFRUkJySWdBa0FBSkFJQUVnQWlnQ0JFSHdoUkJIQkg4Z0FoQ3lBaUlDUlEwQklBSXRBQ0JGRFFFZ0FpZ0NHQVVnQWdzUXF3SWlBa1VFUUF3QkN5QUFJQUkyQWd3Z0FTZ0NBQ0VCSUFCQkF6WUNDQ0FBUVFFNkFBY2dBU0FBUVF4cUlBQkJDR29nQUVFSGFoQ2lIeUVEQ3lBQVFSQnFKQUFnQXdzTEFDQUFRYW1XQXhBVUdnc01BQ0FBRUtRZkdpQUFFQjhMU0FFQmZrRUFJUUFDUUNBQ0tBSUVJZ0lwQXhCQ2dJS0FpSUVJZ3lJRElBTkNBWDJEVUEwQUlBSVFzQVZGQkVBZ0FrSHdweElRU0VVTkFRc2dBU2dDQUJDQ0hpRUFDeUFBQ3c4QUlBQWdBU0FDUWJybkJoRGRDUXNOQUNBQUlBRWdBa0VERU40SkN3OEFJQUFnQVNBQ1FkSG1CaERkQ1FzTkFDQUFJQUVnQWtFQ0VONEpDdzhBSUFBZ0FTQUNRZHJuQmhEZENRc05BQ0FBSUFFZ0FrRUJFTjRKQ3c4QUlBQWdBU0FDUVpQb0JoRGRDUXRyQVFGL0FrQWdBd0orSUFBb0FnUWlCRUh3aFJCR0JFQWdBa0tBZ0lDQUlEY0NBRUtBZ0lDQUlBd0JDMEVBSVFNZ0JFSFlyeEpIRFFFZ0FDZ0NHQ0FCUncwQklBSWdBRFVDSEVLQWdJQ0FFSVEzQWdBZ0FEVUNJRUtBZ0lDQUVJUUxOd0lBUVFFaEF3c2dBd3NOQUNBQUlBRWdBa0VBRU40SkN3c0FJQUJCM29VRkVCUWFDMVVCQW44akFFRVFheUlBSkFBQ1FDQUNLQUlFSWdSQjhJVVFSd1JBSUFSQnNLWVNSdzBCSUFJb0FoaEJBVWNOQVFzZ0FTZ0NBQ0VCSUFCQkFUWUNEQ0FCSUFCQkRHb1FnUjRoQXdzZ0FFRVFhaVFBSUFNTENnQWdBRUdNR1JBVUdnc05BQ0FBSUFFZ0FrRUZFTjhKQ3dzQUlBQkIrOXdFRUJRYUN3MEFJQUFnQVNBQ1FRUVEzd2tMQ2dBZ0FFRzRHUkFVR2dzTkFDQUFJQUVnQWtFQ0VOOEpDd3NBSUFCQnI0VUZFQlFhQ3cwQUlBQWdBU0FDUVFFUTN3a0xEd0FnQUNBQklBSkI3dWNHRUk0Q0MzWUJBbjhqQUVFUWF5SUFKQUFDUUNBQklBSW9BZ1FpQkVId2hSQkhCSDhnQkVIUXF4SkhEUUVnQWlnQ0dFRUJSdzBCSUFJb0Fod0ZJQUlMRUtzQ0lnSkZCRUFNQVFzZ0FDQUNOZ0lNSUFFb0FnQWhBU0FBUVFFMkFnZ2dBU0FBUVFocUlBQkJER29RcFI4aEF3c2dBRUVRYWlRQUlBTUxEd0FnQUNBQklBSkJxK1lHRUk0Q0N3MEFJQUFnQVNBQ1FRVVFqd2dMRHdBZ0FDQUJJQUpCb09jR0VJNENDdzBBSUFBZ0FTQUNRUVFRandnTER3QWdBQ0FCSUFKQnJ1Y0dFSTRDQ3cwQUlBQWdBU0FDUVFNUWp3Z0xEd0FnQUNBQklBSkJ2K1lHRUk0Q0N3MEFJQUFnQVNBQ1FRSVFqd2dMRHdBZ0FDQUJJQUpCenVjR0VJNENDdzBBSUFBZ0FTQUNRUUVRandnTER3QWdBQ0FCSUFKQmgrZ0dFSTRDQzNNQkFuOGpBRUVRYXlJQUpBQUNRQ0FCSUFJb0FnUWlCRUh3aFJCSEJIOGdCRUdZcmhKSERRRWdBaWdDR0EwQklBSW9BaHdGSUFJTEVLc0NJZ0pGQkVBTUFRc2dBQ0FDTmdJTUlBRW9BZ0FoQVNBQVFRQTJBZ2dnQVNBQVFRaHFJQUJCREdvUWtSRWhBd3NnQUVFUWFpUUFJQU1MQ3dBZ0FFR0J3d0lRRkJvTFZRRUNmeU1BUVJCcklnQWtBQUpBSUFJb0FnUWlCRUh3aFJCSEJFQWdCRUg0cmhKSERRRWdBaWdDR0VFQlJ3MEJDeUFCS0FJQUlRRWdBRUVCTmdJTUlBRWdBRUVNYWhEOUN5RURDeUFBUVJCcUpBQWdBd3NMQUNBQVFaem1BUkFVR2d0U0FRSi9Jd0JCRUdzaUFDUUFBa0FnQWlnQ0JDSUVRZkNGRUVjRVFDQUVRZml1RWtjTkFTQUNLQUlZRFFFTElBRW9BZ0FoQVNBQVFRQTJBZ3dnQVNBQVFReHFFUDBMSVFNTElBQkJFR29rQUNBREN3OEFJQUFnQVNBQ1FlVG1CaENPQWd1c0FRRUNmeU1BUVNCcklnQWtBQUpBSUFFZ0FpZ0NCQ0lFUWZDRkVFY0VmeUFFUVpDaUVrY05BU0FDS0FJY0tBSUVRYWlqRWtjTkFTQUNLQUlZQlNBQ0N4Q3JBaUlDUlFSQURBRUxJQUFnQWpZQ0hDQUFJQUVvQWdBaUFSQ0RIallDR0NBQVFRQTJBaFFnQUVFQU5nSVFJQUJCQURZQ0RDQUFRUUEyQWdnZ0FTQUFRUnhxSUFCQkdHb2dBRUVVYWlBQVFSQnFJQUJCREdvZ0FFRUlhaENtSHlFREN5QUFRU0JxSkFBZ0F3c1BBQ0FBSUFFZ0FrR242QVlRamdJTFh3RUJmeU1BUVJCcklnQWtBQUovUVFBZ0FTQUNLQUlFSWdOQjhJVVFSd1IvUVFBZ0EwSHdwQkpIRFFFYUlBSW9BaGdGSUFJTEVLc0NJZ0pGRFFBYUlBQWdBallDRENBQktBSUFJQUJCREdvUS94MExJUUVnQUVFUWFpUUFJQUVMc2dFQkJuOGpBRUdBQVdzaUFTUUFJQUZCOEFCcUlnTWdBaER0QkNBQlFlQUFhaUlFSUFJUTdnUWdBVUhRQUdvaUJTQUNFTzBFSUFGQmx1Y0dJQU1ReEFFZ0FVRVFhaUlDSUFGQjlPME1FQzBnQVVFZ2FpSUdJQUlnQkJCT0lBRkJNR29pQnlBR1FmVHREQkF0SUFGQlFHc2lDQ0FISUFVUVRpQUFJQWhCaStZR0VDMGdDQkFQR2lBSEVBOGFJQVlRRHhvZ0FoQVBHaUFCRUE4YUlBVVFEeG9nQkJBUEdpQURFQThhSUFGQmdBRnFKQUFMaGdJQ0EzNENmeU1BUVRCcklnQWtBQUpBSUFBQ2ZpQUNLQUlFSWdkQjhJVVFSZ1JBUW9DQWdJQWdEQUVMSUFkQjJLd1NSdzBCSUFJMUFpQWhCU0FDTlFJY0lRTWdBaWdDR0NFQ1FvQ0FnSUFRQ3lJRUlBT0VJZ00zQXhnZ0FDQUROd01JSUFCQklHb2dBU0FBUVFocUVLOEVJQUFwQXlBaUEwS0FnSUNBY0lOQ2dJQ0FnQkJTRFFBZ0FTQUNFS3NDSWdKRkRRQWdBQ0FFSUFXRUlnUTNBeEFnQUNBRU53TUFJQUJCSUdvZ0FTQUFFSzhFSUFBcEF5QWlCRUtBZ0lDQWNJTkNnSUNBZ0JCU0RRQWdBQ0FDTmdJZ0lBRW9BZ0FoQVNBQUlBTStBaXdnQUNBRVBnSW9JQUVnQUVFZ2FpQUFRU3hxSUFCQktHb1FraEVoQmdzZ0FFRXdhaVFBSUFZTG1nRUJCSDhqQUVIQUFXc2lBU1FBSUFGQnNBRnFJZ01nQWhEdEJDQUJRYUFCYWlJRUlBSVE3UVFnQVVHUUFXb2lCU0FDRU80RUlBRVFTU0lHUVFocUlnSkJpZnNBRUE0YUlBSWdBeEFTR2lBQ1Fkb25FQTRhSUFJZ0JCQVNHaUFDUWRycEJoQU9HaUFDSUFVUUVob2dBa0dMNWdZUURob2dBQ0FHUVF4cUVFSWdCaEJSSUFVUUR4b2dCQkFQR2lBREVBOGFJQUZCd0FGcUpBQUxLQUJCMExNZ1FaZVhDQkFPRU9JQkdrSGcrQXhCa0FRUW9CWkIwTE1nUWM3b0J4QU9FT0lCR2dzTGhwWVkzU0lBUVlBSUM3WDFESDRBZlFCOGZBQWdld0I0ZVhvQVkzUjZBR05zZWdCNGVRQTZJR2wwSUdseklHVnRjSFI1QUcxaGJHWnZjbTFsWkNCVFVFbFNMVllnWkdWamIzSmhkR2x2YmpvZ2FYUW5jeUJsYlhCMGVRQlBjR1Z1UTB3dVJHVmlkV2RKYm1adkxqRXdNQ0JrWldKMVp5QnBiWEJ2Y25SbFpDQmxiblJwZEhrQVJHVmlkV2RKYlhCdmNuUmxaRVZ1ZEdsMGVRQlRZV0Z5YkdGdVpDQlZibWwyWlhKemFYUjVBRWx1ZEdWdWMybDBlUUJUVUZaZlJWaFVYMlp5WVdkdFpXNTBYMmx1ZG05allYUnBiMjVmWkdWdWMybDBlUUJuWm5ndGNuTWdZMjl0YlhWdWFYUjVBRk53ZGtkbGJsUjNieUJqYjIxdGRXNXBkSGtBYVc1bWFXNXBkSGtBWkdWeWFYWmhkR2wyWlY5MWJtbG1iM0p0YVhSNUFIVnVhR0Z1Wkd4bFpDQnpiM1Z5WTJVZ2IyWWdibTl1TFhWdWFXWnZjbTFwZEhrQVNXNXpkSEoxWTNScGIyNGdZMkZ1Ym05MElHWnZjaUJzYjJkcFkyRnNJR0ZrWkhKbGMzTnBibWNnYlc5a1pXd2dZbVVnZFhObFpDQjNhWFJvYjNWMElHRWdkbUZ5YVdGaWJHVWdjRzlwYm5SbGNuTWdZMkZ3WVdKcGJHbDBlUUFnY21WeGRXbHlaWE1nWVNCMllYSnBZV0pzWlNCd2IybHVkR1Z5Y3lCallYQmhZbWxzYVhSNUFFOXdVSFJ5UVdOalpYTnpRMmhoYVc0Z1FtRnpaU0J2Y0dWeVlXNWtJSEJ2YVc1MGFXNW5JSFJ2SUZkdmNtdG5jbTkxY0NCemRHOXlZV2RsSUdOc1lYTnpJRzExYzNRZ2RYTmxJRlpoY21saFlteGxVRzlwYm5SbGNuTWdZMkZ3WVdKcGJHbDBlUUE2SURZMExXSnBkQ0JoZEc5dGFXTnpJSEpsY1hWcGNtVWdkR2hsSUVsdWREWTBRWFJ2YldsamN5QmpZWEJoWW1sc2FYUjVBRTl3VUhSeVFXTmpaWE56UTJoaGFXNGdRbUZ6WlNCdmNHVnlZVzVrSUhCdmFXNTBhVzVuSUhSdklGTjBiM0poWjJWQ2RXWm1aWElnYzNSdmNtRm5aU0JqYkdGemN5QnRkWE4wSUhWelpTQldZWEpwWVdKc1pWQnZhVzUwWlhKeklHOXlJRlpoY21saFlteGxVRzlwYm5SbGNuTlRkRzl5WVdkbFFuVm1abVZ5SUdOaGNHRmlhV3hwZEhrQUlISmxjWFZwY21WeklGTm9ZV1JsY2lCallYQmhZbWxzYVhSNUFDQnlaWEYxYVhKbGN5QkxaWEp1Wld3Z1kyRndZV0pwYkdsMGVRQWdjM1J2Y21GblpTQmpiR0Z6Y3lCeVpYRjFhWEpsY3lCaGJpQmhaR1JwZEdsdmJtRnNJR05oY0dGaWFXeHBkSGtBT2lCbWJHOWhkQ0J0YVc0dmJXRjRJR0YwYjIxcFkzTWdjbVZ4ZFdseVpTQjBhR1VnUVhSdmJXbGpSbXh2WVhReE5rMXBiazFoZUVWWVZDQmpZWEJoWW1sc2FYUjVBRG9nWm14dllYUWdiV2x1TDIxaGVDQmhkRzl0YVdOeklISmxjWFZwY21VZ2RHaGxJRUYwYjIxcFkwWnNiMkYwTmpSTmFXNU5ZWGhGV0ZRZ1kyRndZV0pwYkdsMGVRQTZJR1pzYjJGMElHMXBiaTl0WVhnZ1lYUnZiV2xqY3lCeVpYRjFhWEpsSUhSb1pTQkJkRzl0YVdOR2JHOWhkRE15VFdsdVRXRjRSVmhVSUdOaGNHRmlhV3hwZEhrQU9pQm1iRzloZENCaFpHUWdZWFJ2YldsamN5QnlaWEYxYVhKbElIUm9aU0JCZEc5dGFXTkdiRzloZERZMFFXUmtSVmhVSUdOaGNHRmlhV3hwZEhrQU9pQm1iRzloZENCaFpHUWdZWFJ2YldsamN5QnlaWEYxYVhKbElIUm9aU0JCZEc5dGFXTkdiRzloZERNeVFXUmtSVmhVSUdOaGNHRmlhV3hwZEhrQVZuVnNhMkZ1VFdWdGIzSjVUVzlrWld4RVpYWnBZMlZUWTI5d1pVdElVaUJqWVhCaFltbHNhWFI1QUNCeVpYRjFhWEpsY3lCMGFHVWdWbVZqZEc5eU1UWWdZMkZ3WVdKcGJHbDBlUUJEWVhCaFltbHNhWFI1QUdScGJXVnVjMmx2Ym1Gc2FYUjVBRWRsYjIxbGRISjVBRWxCWkdSRFlYSnllUUJEYjNCNVRXVnRiM0o1QUU5MWRIQjFkRTFsYlc5eWVRQkJkRzl0YVdORGIzVnVkR1Z5VFdWdGIzSjVBRU55YjNOelYyOXlhMmR5YjNWd1RXVnRiM0o1QUZOMVltZHliM1Z3VFdWdGIzSjVBRlZ1YVdadmNtMU5aVzF2Y25rQVNXMWhaMlZOWlcxdmNua0FVMUJXWDB0SVVsOXlZWGxmY1hWbGNua0FTVzFoWjJWUmRXVnllUUJHWldKeWRXRnllUUJLWVc1MVlYSjVBRWR5YjNWd1FYTjVibU5EYjNCNUFHMWhibmtBUjNKdmRYQkJibmtBUjNKdmRYQk9iMjVWYm1sbWIzSnRRVzU1QUhScGJuUTZPbkpsYzI5c2RtVnlPanBCYm5rQVNuVnNlUUJPYjI1VFpXMWhiblJwWXk1RGJITndkbEpsWm14bFkzUnBiMjRnYVcxd2IzSjBJR1J2WlhNZ2JtOTBJR1Z1WTI5a1pTQjBhR1VnZG1WeWMybHZiaUJqYjNKeVpXTjBiSGtBSUhOMGIzSmhaMlVnWTJ4aGMzTWdhWE1nY21WaFpDMXZibXg1QUZOb1lXUmxjbEpsWTI5eVpFSjFabVpsY2t0SVVpQlRkRzl5WVdkbElFTnNZWE56SUhaaGNtbGhZbXhsY3lCaGNtVWdjbVZoWkNCdmJteDVBRmR5YVhSbFQyNXNlUUJTWldGa1QyNXNlUUJSZFdWMVpVWmhiV2xzZVFCVFVGWmZTVTVVUlV4ZmFXNXNhVzVsWDJGemMyVnRZbXg1QUdSd1pIa0FaR2x6WVdKc1pWOTJZV3hwWkdGMGFXOXVYMTltZFc1amRHbHZibDlvWVhOZmJtOWZZbTlrZVFBZ2FHRnpJRzV2SUdKdlpIa0FRMkZ1Ym05MElHUmxZMnhoY21VZ1lTQm1kVzVqZEdsdmJpQnBiaUJoSUdaMWJtTjBhVzl1SUdKdlpIa0FSblZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlJR2x1YzNSeWRXTjBhVzl1Y3lCdGRYTjBJR0psSUdsdUlHRWdablZ1WTNScGIyNGdZbTlrZVFCTVlXSmxiQ0JwYm5OMGNuVmpkR2x2Ym5NZ2JYVnpkQ0JpWlNCcGJpQmhJR1oxYm1OMGFXOXVJR0p2WkhrQVJuVnVZM1JwYjI0Z1pXNWtJR2x1YzNSeWRXTjBhVzl1Y3lCdGRYTjBJR0psSUdsdUlHRWdablZ1WTNScGIyNGdZbTlrZVFCemQybDBZMmdnWW05a2VRQmtaSGtBVTJGaGNteGhibVFnVlc1cGRtVnljMmwwZVNCVGFHRmtlUUJFVUdSNUFGTndZWEp6WlZKbGMybGtaVzVqZVFCSmJuQjFkRXhwYm1WelFXUnFZV05sYm1ONUFFbHVjSFYwVkhKcFlXNW5iR1Z6UVdScVlXTmxibU41QUdseklHNXZkQ0J6ZEhKMVkzUjFjbUZzYkhrZ2NHOXpkQ0JrYjIxcGJtRjBaV1FnWW5rQVUxQldYMGxPVkVWTVgzWmhjbWxoWW14bFgyeGxibWQwYUY5aGNuSmhlUUIwWlhoMGRYSmxYMlJsY0hSb1gyTjFZbVZmWVhKeVlYa0FkR1Y0ZEhWeVpWOWpkV0psWDJGeWNtRjVBSFJsZUhSMWNtVmZaR1Z3ZEdoZk1tUmZZWEp5WVhrQWRHVjRkSFZ5WlY4eVpGOWhjbkpoZVFCMFpYaDBkWEpsWDNOMGIzSmhaMlZmTW1SZllYSnlZWGtBSUdOaGJtNXZkQ0JpWlNCMWMyVmtJR0Z6SUdGdUlHVnNaVzFsYm5RZ2RIbHdaU0J2WmlCaGJpQmhjbkpoZVFCMGJ5QjBhR1VnYm5WdFltVnlJRzltSUdWc1pXMWxiblJ6SUc5bUlGSmxjM1ZzZENCVWVYQmxJR0Z5Y21GNUFIUjVjR1VnVW1WemRXeDBJRlI1Y0dVZ1lYSnlZWGtBWTJGdWJtOTBJR052Ym5OMGNuVmpkQ0JoSUhKMWJuUnBiV1V0YzJsNlpXUWdZWEp5WVhrQVlXNGdZWEp5WVhrZ1pXeGxiV1Z1ZENCMGVYQmxJR05oYm01dmRDQmpiMjUwWVdsdUlHRWdjblZ1ZEdsdFpTMXphWHBsWkNCaGNuSmhlUUJEWVc1dWIzUWdiRzloWkNCaElISjFiblJwYldVdGMybDZaV1FnWVhKeVlYa0FVblZ1ZEdsdFpVUmxjMk55YVhCMGIzSkJjbkpoZVFCaGNuSmhlVjlwYm5OMExUNXZjR052WkdVb0tTQTlQU0J6Y0hZNk9rOXdPanBQY0ZSNWNHVkJjbkpoZVFCRVpXSjFaMVI1Y0dWQmNuSmhlUUJXWVd4cFpHRjBaVlI1Y0dWQmNuSmhlUUJVZVhCbFVuVnVkR2x0WlVGeWNtRjVBRWx0WVdkbFEzVmlaVUZ5Y21GNUFGTmhiWEJzWldSRGRXSmxRWEp5WVhrQWRHbHVkRG82ZEhKaGJuTm1iM0p0T2pwRVpXTnZiWEJ2YzJWVGRISnBaR1ZrUVhKeVlYa0FTVzFoWjJWTlUwRnljbUY1QUhScGJuUTZPbkpsWVdSbGNqbzZjM0JwY25ZNk9rRnljbUY1QUhScGJuUTZPblI1Y0dVNk9rRnljbUY1QUVOdlpHVndiR0Y1QUZSb2RYSnpaR0Y1QUZSMVpYTmtZWGtBVjJWa2JtVnpaR0Y1QUZOaGRIVnlaR0Y1QUZOMWJtUmhlUUJOYjI1a1lYa0FSbkpwWkdGNUFFMWhlUUFsYlM4bFpDOGxlUUJUVUZaZlRsWmZZMjl2Y0dWeVlYUnBkbVZmYldGMGNtbDRBR1Y0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR0VnYzNGMVlYSmxJRzFoZEhKcGVBQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGZ2dkRzhnWW1VZ1lTQnpjWFZoY21VZ2JXRjBjbWw0QUhSdklIUm9aU0J1ZFcxaVpYSWdiMllnWTI5c2RXMXVjeUJ2WmlCU1pYTjFiSFFnVkhsd1pTQnRZWFJ5YVhnQWRIbHdaU0JTWlhOMWJIUWdWSGx3WlNCdFlYUnlhWGdBVFdGMGNtbDRWR2x0WlhOTllYUnlhWGdBVm1WamRHOXlWR2x0WlhOTllYUnlhWGdBUlhod1pXTjBaV1FnVFdGMGNtbDRJSFJ2SUdKbElHOW1JSFI1Y0dVZ1QzQlVlWEJsVFdGMGNtbDRBRVJsWW5WblZIbHdaVTFoZEhKcGVBQjBhVzUwT2pwMGNtRnVjMlp2Y20wNk9rUmxZMjl0Y0c5elpWTjBjbWxrWldSTllYUnlhWGdBZEdsdWREbzZjbVZoWkdWeU9qcHpjR2x5ZGpvNlRXRjBjbWw0QUhScGJuUTZPblI1Y0dVNk9rMWhkSEpwZUFCM2FHVnVJR05oYkdOMWJHRjBhVzVuSUcxcGVBQkpUV2w0QUVaTmFYZ0FkbVZ5ZEdWNEFFVnRhWFJXWlhKMFpYZ0FSVzFwZEZOMGNtVmhiVlpsY25SbGVBQkNZWE5sVm1WeWRHVjRBR0Z5Y21GNVgybHVaR1Y0QUhabGNuUmxlRjlwYm1SbGVBQnNiMk5oYkY5cGJuWnZZMkYwYVc5dVgybHVaR1Y0QUhOaGJYQnNaVjlwYm1SbGVBQnBibk4wWVc1alpWOXBibVJsZUFCcExUNU9kVzFKYms5d1pYSmhibVJYYjNKa2N5Z3BJRDRnYjNCbGNtRnVaRjlwYm1SbGVBQm5iRjlXWlhKMFpYaEpibVJsZUFCV2FXVjNTVzVrWlhnQVJISmhkMGx1WkdWNEFGTm9ZV1JsY2xacFpYZHdiM0owU1c1a1pYaE1ZWGxsY2tWWVZDQnZjaUJUYUdGa1pYSldhV1YzY0c5eWRFbHVaR1Y0QUdkc1gxWnBaWGR3YjNKMFNXNWtaWGdBU1c1d2RYUkJkSFJoWTJodFpXNTBTVzVrWlhnQVoyeGZURzlqWVd4SmJuWnZZMkYwYVc5dVNXNWtaWGdBWjJ4ZlNXNXpkR0Z1WTJWSmJtUmxlQUJFWlhacFkyVkpibVJsZUFCa2NHUjRBR1JrZUFCRVVHUjRBR1JsWTI5eVlYUnBiMjR0UG5OMGNuVmpkRjl0WlcxaVpYSmZhVzVrWlhnb0tTQTlQU0FvYVc1MEtXeGhjM1JKWkhnQVpHVmpiM0poZEdsdmJpMCtjM1J5ZFdOMFgyMWxiV0psY2w5cGJtUmxlQ2dwSUQwOUlDaHBiblFwYldWdFltVnlTV1I0QUZOUVZsOUJUVVJmYzJoaFpHVnlYM1J5YVc1aGNubGZiV2x1YldGNEFHWnRZWGdBZFY5dFlYZ0FjMTl0WVhnQVUxQldYMFZZVkY5emFHRmtaWEpmWVhSdmJXbGpYMlpzYjJGMFgyMXBibDl0WVhnQVlYUnZiV2xqVFdGNEFFZHliM1Z3VlUxaGVBQkhjbTkxY0U1dmJsVnVhV1p2Y20xVlRXRjRBRUYwYjIxcFkxVk5ZWGdBUjNKdmRYQlRUV0Y0QUVkeWIzVndUbTl1Vlc1cFptOXliVk5OWVhnQVFYUnZiV2xqVTAxaGVBQk9UV0Y0QUVkeWIzVndSazFoZUFCSGNtOTFjRTV2YmxWdWFXWnZjbTFHVFdGNEFGSjRBRkpIZUFCelVrZENlQUF0S3lBZ0lEQllNSGdBYzNSeWRXTjBJRzFsYldKbGNpQnZabVp6WlhRZ0tEQjRBSE4wY25WamRDQnphWHBsSUNnd2VBQmhjbkpoZVNCaWVYUmxJSE5wZW1VZ0tEQjRBQzB3V0Nzd1dDQXdXQzB3ZUNzd2VDQXdlQUFwSUcxMWMzUWdibTkwSUdWNFkyVmxaQ0F3ZUFBZ095QXdlQUJwYm5aaGJHbGtJRzFwZUdsdVp5QnZaaUIyWldOMGIzSWdjM2RwZW5wc1pTQmphR0Z5WVdOMFpYSnpJSEpuWW1FZ2QybDBhQ0I0ZVhwM0FIcDVkd0JKVTNWaVFtOXljbTkzQUhCdmR3QlRVRlpmUzBoU1gzTjFZbWR5YjNWd1gzVnVhV1p2Y20xZlkyOXVkSEp2YkY5bWJHOTNBQ2NnYlhWemRDQnZibXg1SUdKbElHTmhiR3hsWkNCbWNtOXRJSFZ1YVdadmNtMGdZMjl1ZEhKdmJDQm1iRzkzQUhScGJuUTZPblJ5WVc1elptOXliVG82Vlc1emFHRmtiM2NBVUc5M0FGTlFWbDlMU0ZKZmJYVnNkR2wyYVdWM0FFMTFiSFJwVm1sbGR3Qm1aWGNBVm1WeWRHVjRUM0prWlhKRFkzY0FWbVZ5ZEdWNFQzSmtaWEpEZHdCSGIyOW5iR1VnY25Od2FYSjJBRWR2YjJkc1pTQkRiSE53ZGdCT2IzWUFjM0IyVm1WeWMybHZia1p2Y2xSaGNtZGxkRVZ1ZGdCemNIWk1iMmRUZEhKcGJtZEdiM0pGYm5ZQWMzQjJTWE5XZFd4cllXNUZibllBYzNCMlNYTlBjR1Z1UjB4RmJuWUFjM0IyU1hOUGNHVnVRMHhGYm5ZQVZVUnBkZ0JUUkdsMkFFWkVhWFlBUTI5dWMzUjFBRlJvZFFCMlpXTTBkUUIyWldNemRRQjJaV015ZFFCYVpYaDBBRlJsZUhRQVUyVjRkQUJPWlhoMEFDY2diV0Y1SUhCeWIyUjFZMlVnWVNCdWIyNHRkVzVwWm05eWJTQnZkWFJ3ZFhRQWMzUnZjbUZuWlNCamJHRnpjeUJ0ZFhOMElHSmxJRWx1Y0hWMElHOXlJRTkxZEhCMWRBQnBibkIxZEFBc0lHbHVhWFJwWVd4cGVtVnlJR0Z5WlNCdWIzUWdZV3hzYjNkbFpDQm1iM0lnU1c1d2RYUUFjM1J2Y21GblpTQmpiR0Z6Y3lCdGRYTjBJR0psSUVsdWNIVjBBR1Y0Y0dWamRHVmtJRWx1ZEdWeWNHOXNZVzUwSUhOMGIzSmhaMlVnWTJ4aGMzTWdkRzhnWW1VZ1NXNXdkWFFBVTFCV1gwdElVbDkzYjNKclozSnZkWEJmYldWdGIzSjVYMlY0Y0d4cFkybDBYMnhoZVc5MWRBQmphSEp2YldsMWJWOXBiblJsY201aGJGOXlaV3hoZUdWa1gzVnVhV1p2Y20xZmJHRjViM1YwQUdOb1pXTnJUR0Y1YjNWMEFGSmhlV0Z1SUVoaGRHOTFkQUJmWDI5MWRBQkJkV2QxYzNRQWNtaHpMbVpwY25OMEFHeG9jeTVtYVhKemRBQkhjbTkxY0U1dmJsVnVhV1p2Y20xQ2NtOWhaR05oYzNSR2FYSnpkQUJRYkhWelZXTnZibk4wQUVWMllXeEpiblF6TWtsbVEyOXVjM1FBZEdsdWREbzZZWE4wT2pwRGIyNXpkQUJoY25KaGVWOXBibk4wQUdsdGNHOXlkRjlwYm5OMEFHeGxibWQwYUY5amIyNXpkR0Z1ZEY5cGJuTjBBSE4wY25WamRGOXBibk4wQUcxaGRGOXBibk4wQUhKbGMzVnNkRjkwZVhCbFgybHVjM1FBY21WMGRYSnVYM1I1Y0dWZmFXNXpkQUJ6WVcxd2JHVmtYMmx0WVdkbFgzUjVjR1ZmYVc1emRBQjJaV05mYVc1emRBQldZV3hwWkdGMFpVVjRkRWx1YzNRQVZXNXJibTkzYmlCRmVIUkpibk4wQUN3Z1luVjBJR1J2WlhNZ2JtOTBJR2x0YldWa2FXRjBaV3g1SUhCeVpXTmxaR1VnYVhRZ2FXNGdkR2hsSUU5d1UzZHBkR05vSjNNZ2RHRnlaMlYwSUd4cGMzUUFVbVZ0YjNabFJuSnZiVXhwYzNRQVRtVmhjbVZ6ZEFBbklHTmhibTV2ZENCaVpTQmlhWFJqWVhOMEFFSnBkR05oYzNRQVIzSnZkWEJDY205aFpHTmhjM1FBUjNKdmRYQk9iMjVWYm1sbWIzSnRRbkp2WVdSallYTjBBRWR5YjNWd1RtOXVWVzVwWm05eWJWRjFZV1JDY205aFpHTmhjM1FBUm1GemRBQm9ZV3htWDNKemNYSjBBRzVoZEdsMlpWOXljM0Z5ZEFCb1lXeG1YM054Y25RQWJtRjBhWFpsWDNOeGNuUUFkMmhsYmlCallXeGpkV3hoZEdsdVp5QnBiblpsY25ObFUzRnlkQUJKYm5abGNuTmxVM0Z5ZEFCVFVGWmZSVmhVWDNOb1lXUmxjbDl6ZEdWdVkybHNYMlY0Y0c5eWRBQkZlSEJ2Y25RQVRYVnNkR2xXYVdWM2NHOXlkQUJCY21kSmJtWnZJRzExYzNRZ1ltVWdabkp2YlNCMGFHVWdjMkZ0WlNCbGVIUmxibVJsWkNCcGJuTjBjblZqZEdsdmJpQnBiWEJ2Y25RQVMyVnlibVZzSUcxMWMzUWdZbVVnWm5KdmJTQjBhR1VnYzJGdFpTQmxlSFJsYm1SbFpDQnBibk4wY25WamRHbHZiaUJwYlhCdmNuUUFSWGgwU1c1emRFbHRjRzl5ZEFCemFHOXlkQUJwYm1OdmJuTnBjM1JsYm5RZ2RHRnlaMlYwSUhOMGNuVmpkQ0J0WlcxaVpYSWdkSGx3WlhNZ1ptOXlJRk53YkdGMFEyOXVkbVZ5ZEFCVlEyOXVkbVZ5ZEFCVFEyOXVkbVZ5ZEFCR1EyOXVkbVZ5ZEFCamIyNXpkRjloYzNObGNuUUFkR2x1ZERvNllYTjBPanBEYjI1emRFRnpjMlZ5ZEFCdmNHTnZaR1VnUFQwZ2MzQjJPanBQY0RvNlQzQkRiMjF3YjNOcGRHVkZlSFJ5WVdOMElIeDhJRzl3WTI5a1pTQTlQU0J6Y0hZNk9rOXdPanBQY0VOdmJYQnZjMmwwWlVsdWMyVnlkQUJDYVhSR2FXVnNaRWx1YzJWeWRBQmpZbkowQUV4cFptVjBhVzFsVTNSaGNuUUFhSGx3YjNRQUlHbHpJRzV2ZEFCSVlYTm9iV0Z3UW1GelpUbzZVSFYwS0NrZ2JHOXZjR1ZrSUdWdWRHbHlaU0J0WVhBZ2QybDBhRzkxZENCbWFXNWthVzVuSUdFZ2MyeHZkQUJJWVhOb2JXRndRbUZ6WlRvNlNXNWtaWGhQWmlncElHeHZiM0JsWkNCbGJuUnBjbVVnYldGd0lIZHBkR2h2ZFhRZ1ptbHVaR2x1WnlCaElITnNiM1FBVTFCV1gwdElVbDl6YUdGa1pYSmZZbUZzYkc5MEFGTlFWbDlCVFVSZmMyaGhaR1Z5WDJKaGJHeHZkQUJIY205MWNFNXZibFZ1YVdadmNtMUNZV3hzYjNRQVIzSnZkWEJPYjI1VmJtbG1iM0p0U1c1MlpYSnpaVUpoYkd4dmRBQjNhR1Z1SUdOaGJHTjFiR0YwYVc1bklHUnZkQUJNYjJkcFkyRnNUbTkwQUZOVlJHOTBBRk5FYjNRQWNHOXdZMjkxYm5RQVkyRnVibTkwSUdOdmJuTjBjblZqZENCaGJpQmhjbkpoZVNCMGFHRjBJR2hoY3lCaGJpQnZkbVZ5Y21sa1pTMWxlSEJ5WlhOemFXOXVJR052ZFc1MEFIUnBiblE2T25SNWNHVTZPa052Ym5OMFlXNTBRWEp5WVhsRGIzVnVkQUIwYVc1ME9qcDBlWEJsT2pwU2RXNTBhVzFsUVhKeVlYbERiM1Z1ZEFCMGFXNTBPanB6WlcwNk9sVnVibUZ0WldSUGRtVnljbWxrWlVGeWNtRjVRMjkxYm5RQWRHbHVkRG82YzJWdE9qcE9ZVzFsWkU5MlpYSnlhV1JsUVhKeVlYbERiM1Z1ZEFCMGFXNTBPanAwZVhCbE9qcEJjbkpoZVVOdmRXNTBBRWR5YjNWd1RtOXVWVzVwWm05eWJVSmhiR3h2ZEVKcGRFTnZkVzUwQUVkbGRFdGxjbTVsYkV4dlkyRnNVMmw2WlVadmNsTjFZbWR5YjNWd1EyOTFiblFBUjJWMFMyVnlibVZzVGtSeVlXNW5aVk4xWWtkeWIzVndRMjkxYm5RQVVHVmxiRU52ZFc1MEFGQmhjblJwWVd4RGIzVnVkQUJEYjIxd2IyNWxiblFnUTI5MWJuUUFWbVZqZEc5eUlFTnZkVzUwQUdaeWIyNTBBSEpuWW1FNGRXbHVkQUJ5WjJKaE1UWjFhVzUwQUhJek1uVnBiblFBY21jek1uVnBiblFBY21kaVlUaDFhVzUwTENCeVoySmhNVFoxYVc1MExDQnlNekoxYVc1MExDQnlaek15ZFdsdWRDQnZjaUJ5WjJKaE16SjFhVzUwQUhKblltRTRjMmx1ZEFCeVoySmhNVFp6YVc1MEFISXpNbk5wYm5RQWNtY3pNbk5wYm5RQWNtZGlZVGh6YVc1MExDQnlaMkpoTVRaemFXNTBMQ0J5TXpKemFXNTBMQ0J5WnpNeWMybHVkQ0J2Y2lCeVoySmhNekp6YVc1MEFGTlFWbDlPVmw5emFHRmtaWEpmYVcxaFoyVmZabTl2ZEhCeWFXNTBBR1Z1ZEhKNVgzQnZhVzUwQUZOUVZsOUpUbFJGVEY5aGNtSnBkSEpoY25sZmNISmxZMmx6YVc5dVgyWnNiMkYwYVc1blgzQnZhVzUwQUZOUVZsOUpUbFJGVEY5aGNtSnBkSEpoY25sZmNISmxZMmx6YVc5dVgyWnBlR1ZrWDNCdmFXNTBBQ0JrYjJWeklHNXZkQ0J5WldabGNtVnVZMlVnWVc0Z1pXNTBjbmt0Y0c5cGJuUUFZWE56WlhKMGFXOXVJR1poYVd4bFpEb2dkSGx3WlNCemFHOTFiR1FnYm05MElHSmxJRzUxYkd4d2RISWdZWFFnZEdocGN5QndiMmx1ZEFCRVpXSjFaMFZ1ZEhKNVVHOXBiblFBVEc5allXeFRhWHBsU0dsdWRBQldaV05VZVhCbFNHbHVkQUJoWW5OMGNtRmpkQzFwYm5RQVpYaHdaV04wWldRZ1JtOXliV0YwSUdSaGRHRWdkSGx3WlNCMGJ5QmlaU0E0TFdKcGRDQnBiblFBUTJGd1lXSnBiR2wwZVNCSmJuUTJORWx0WVdkbFJWaFVJR2x6SUhKbGNYVnBjbVZrSUhkb1pXNGdkWE5wYm1jZ1UyRnRjR3hsWkNCVWVYQmxJRzltSURZMExXSnBkQ0JwYm5RQU9pQmxlSEJsWTNSbFpDQlRkV0puY205MWNDQkRiM1Z1ZENCMGJ5QmlaU0JoSURNeUxXSnBkQ0JwYm5RQU9pQmxlSEJsWTNSbFpDQk5aVzF2Y25rZ1UyVnRZVzUwYVdOeklIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRBQTZJR1Y0Y0dWamRHVmtJSE5qYjNCbElIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRBQmtaWFpwWTJWZlpYWmxiblFBUTNKbFlYUmxWWE5sY2tWMlpXNTBBRkpsZEdGcGJrVjJaVzUwQUZKbGJHVmhjMlZGZG1WdWRBQlVlWEJsUlhabGJuUUFWSGx3WlVSbGRtbGpaVVYyWlc1MEFFbHpWbUZzYVdSRmRtVnVkQUJGZUhCbFkzUmxaQ0J6YVc1bmJHVWdZMjl1YzNScGRIVmxiblFBT2lCTlpXMXZjbmtnVTJWdFlXNTBhV056SUdOaGJpQm9ZWFpsSUdGMElHMXZjM1FnYjI1bElHOW1JSFJvWlNCbWIyeHNiM2RwYm1jZ1ltbDBjeUJ6WlhRNklFRmpjWFZwY21Vc0lGSmxiR1ZoYzJVc0lFRmpjWFZwY21WU1pXeGxZWE5sSUc5eUlGTmxjWFZsYm5ScFlXeHNlVU52Ym5OcGMzUmxiblFBT2lCV2RXeHJZVzRnYzNCbFkybG1hV05oZEdsdmJpQnlaWEYxYVhKbGN5Qk5aVzF2Y25rZ1UyVnRZVzUwYVdOeklIUnZJR2hoZG1VZ2IyNWxJRzltSUhSb1pTQm1iMnhzYjNkcGJtY2dZbWwwY3lCelpYUTZJRUZqY1hWcGNtVXNJRkpsYkdWaGMyVXNJRUZqY1hWcGNtVlNaV3hsWVhObElHOXlJRk5sY1hWbGJuUnBZV3hzZVVOdmJuTnBjM1JsYm5RQVZuVnNhMkZ1SUhOd1pXTWdaR2x6WVd4c2IzZHpJRTl3UVhSdmJXbGpURzloWkNCM2FYUm9JRTFsYlc5eWVTQlRaVzFoYm5ScFkzTWdVbVZzWldGelpTd2dRV054ZFdseVpWSmxiR1ZoYzJVZ1lXNWtJRk5sY1hWbGJuUnBZV3hzZVVOdmJuTnBjM1JsYm5RQVZuVnNhMkZ1SUhOd1pXTWdaR2x6WVd4c2IzZHpJRTl3UVhSdmJXbGpVM1J2Y21VZ2QybDBhQ0JOWlcxdmNua2dVMlZ0WVc1MGFXTnpJRUZqY1hWcGNtVXNJRUZqY1hWcGNtVlNaV3hsWVhObElHRnVaQ0JUWlhGMVpXNTBhV0ZzYkhsRGIyNXphWE4wWlc1MEFFMWxiVzl5ZVNCVFpXMWhiblJwWTNNZ2FXUnpJRzExYzNRZ1ltVWdUM0JEYjI1emRHRnVkQ0IzYUdWdUlGTm9ZV1JsY2lCallYQmhZbWxzYVhSNUlHbHpJSEJ5WlhObGJuUUFUV1Z0YjNKNUlGTmxiV0Z1ZEdsamN5QnRkWE4wSUdKbElHRWdZMjl1YzNSaGJuUWdhVzV6ZEhKMVkzUnBiMjRnZDJobGJpQkRiMjl3WlhKaGRHbDJaVTFoZEhKcGVFNVdJR05oY0dGaWFXeHBkSGtnYVhNZ2NISmxjMlZ1ZEFCRGIyaGxjbVZ1ZEFCUVlYSmxiblFBWTJGdWJtOTBJSFJoYTJVZ2RHaGxJR0ZrWkhKbGMzTWdiMllnWVNCMlpXTjBiM0lnWTI5dGNHOXVaVzUwQUVOdmJYQnZibVZ1ZEFCa2FYTmhZbXhsWDNaaGJHbGtZWFJwYjI1ZlgybG5ibTl5WlY5cGJuWmhiR2xrWDNCdmFXNTBaWEpmWVhKbmRXMWxiblFBYVc1MllXeHBaQ0JoYkdsaGMyVmtJSEJ2YVc1MFpYSWdZWEpuZFcxbGJuUUFTVzUyWVd4cFpDQnpkRzl5WVdkbElHTnNZWE56SUdadmNpQjBZWEpuWlhRZ1pXNTJhWEp2Ym0xbGJuUUFSWGh3WldOMFpXUWdRMjl0Y0c5dVpXNTBJRTl3WlhKaGJtUWdkRzhnWW1VZ1lTQmpiMjV6ZENCdlltcGxZM1FnWm05eUlGWjFiR3RoYmlCbGJuWnBjbTl1YldWdWRBQkZlSEJsWTNSbFpDQjBhR1VnU1cxaFoyVWdSbTl5YldGMElHbHVJRWx0WVdkbElIUnZJR0psSUZJMk5Ha3NJRkkyTkhWcExDQlNNekptTENCU016SnBMQ0J2Y2lCU016SjFhU0JtYjNJZ1ZuVnNhMkZ1SUdWdWRtbHliMjV0Wlc1MEFFVjRjR1ZqZEdWa0lGTmhiWEJzWldRZ1ZIbHdaU0IwYnlCaVpTQmhJRE15TFdKcGRDQnBiblFzSURZMExXSnBkQ0JwYm5RZ2IzSWdNekl0WW1sMElHWnNiMkYwSUhOallXeGhjaUIwZVhCbElHWnZjaUJXZFd4cllXNGdaVzUyYVhKdmJtMWxiblFBVTNSdmNtRm5aU0JqYkdGemN5QmpZVzV1YjNRZ1ltVWdSMlZ1WlhKcFl5QnBiaUJQY0dWdVEwd2dNUzR5SUdWdWRtbHliMjV0Wlc1MEFDQnBjeUJ0YVhOemFXNW5JR0VnYkc5allYUnBiMjRnWVhOemFXZHViV1Z1ZEFCblpYUlRZMkZzWVhKQmJHbG5ibTFsYm5RQVoyVjBRbUZ6WlVGc2FXZHViV1Z1ZEFCSmJuQjFkRUYwZEdGamFHMWxiblFBWm5KaFoyMWxiblFBUm5KaFoyMWxiblFBYVc1MllXeHBaQ0JoYzNOcFoyNXRaVzUwSUhOMFlYUmxiV1Z1ZEFCamIyNTBhVzUxYVc1bklHSnNiMk5yY3lCdGRYTjBJRzV2ZENCamIyNTBZV2x1SUdFZ2NtVjBkWEp1SUhOMFlYUmxiV1Z1ZEFCallYTmxJSE4wWVhSbGJXVnVkQ0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJR2x1YzJsa1pTQmhJSE4zYVhSamFDQnpkR0YwWlcxbGJuUUFZMjl1ZEdsdWRXbHVaeUJpYkc5amEzTWdiWFZ6ZENCdWIzUWdZMjl1ZEdGcGJpQmhJR052Ym5ScGJuVmxJSE4wWVhSbGJXVnVkQUJTWlhOdmJIWmxjam82Um5WdVkzUnBiMjRvS1NCallXeHNaV1FnZDJsMGFDQmhJR04xY25KbGJuUWdZMjl0Y0c5MWJtUWdjM1JoZEdWdFpXNTBBSFJwYm5RNk9tRnpkRG82UTI5dGNHOTFibVJCYzNOcFoyNXRaVzUwVTNSaGRHVnRaVzUwQUhScGJuUTZPbUZ6ZERvNlFYTnphV2R1YldWdWRGTjBZWFJsYldWdWRBQjBhVzUwT2pwaGMzUTZPa2x1WTNKbGJXVnVkRVJsWTNKbGJXVnVkRk4wWVhSbGJXVnVkQUIwYVc1ME9qcGhjM1E2T2tadmNreHZiM0JUZEdGMFpXMWxiblFBZEdsdWREbzZjMlZ0T2pwR2IzSk1iMjl3VTNSaGRHVnRaVzUwQUhScGJuUTZPbUZ6ZERvNlRHOXZjRk4wWVhSbGJXVnVkQUIwYVc1ME9qcHpaVzA2T2t4dmIzQlRkR0YwWlcxbGJuUUFkR2x1ZERvNllYTjBPanBTWlhSMWNtNVRkR0YwWlcxbGJuUUFkR2x1ZERvNllYTjBPanBEWVd4c1UzUmhkR1Z0Wlc1MEFIUnBiblE2T21GemREbzZWbUZ5YVdGaWJHVkVaV05zVTNSaGRHVnRaVzUwQUhScGJuUTZPbk5sYlRvNlRHOXZjRUpzYjJOclUzUmhkR1Z0Wlc1MEFIUnBiblE2T25ObGJUbzZSblZ1WTNScGIyNUNiRzlqYTFOMFlYUmxiV1Z1ZEFCMGFXNTBPanB6WlcwNk9reHZiM0JEYjI1MGFXNTFhVzVuUW14dlkydFRkR0YwWlcxbGJuUUFkR2x1ZERvNllYTjBPanBDYkc5amExTjBZWFJsYldWdWRBQjBhVzUwT2pwelpXMDZPa0pzYjJOclUzUmhkR1Z0Wlc1MEFIUnBiblE2T21GemREbzZRbkpsWVd0VGRHRjBaVzFsYm5RQWRHbHVkRG82WVhOME9qcFRkMmwwWTJoVGRHRjBaVzFsYm5RQWRHbHVkRG82YzJWdE9qcFRkMmwwWTJoVGRHRjBaVzFsYm5RQWRHbHVkRG82WVhOME9qcENjbVZoYTBsbVUzUmhkR1Z0Wlc1MEFIUnBiblE2T25ObGJUbzZRbkpsWVd0SlpsTjBZWFJsYldWdWRBQjBhVzUwT2pwaGMzUTZPa2xtVTNSaGRHVnRaVzUwQUhScGJuUTZPbk5sYlRvNlNXWlRkR0YwWlcxbGJuUUFkR2x1ZERvNllYTjBPanBEYjI1MGFXNTFaVk4wWVhSbGJXVnVkQUIwYVc1ME9qcGhjM1E2T2tOaGMyVlRkR0YwWlcxbGJuUUFkR2x1ZERvNmMyVnRPanBEWVhObFUzUmhkR1Z0Wlc1MEFIUnBiblE2T21GemREbzZWMmhwYkdWVGRHRjBaVzFsYm5RQWRHbHVkRG82YzJWdE9qcFhhR2xzWlZOMFlYUmxiV1Z1ZEFCMGFXNTBPanBoYzNRNk9rUnBjMk5oY21SVGRHRjBaVzFsYm5RQWRHbHVkRG82YzJWdE9qcERiMjF3YjNWdVpGTjBZWFJsYldWdWRBQjBhVzUwT2pwaGMzUTZPbE4wWVhSbGJXVnVkQUIwYVc1ME9qcHpaVzA2T2xOMFlYUmxiV1Z1ZEFCcGJtTnlaVzFsYm5RQVFYUnZiV2xqU1VsdVkzSmxiV1Z1ZEFCa1pXTnlaVzFsYm5RQVFYUnZiV2xqU1VSbFkzSmxiV1Z1ZEFCSmJXRm5aVk53WVhKelpWUmxlR1ZzYzFKbGMybGtaVzUwQUhWdWFXWnZjbTFmWTI5dWMzUmhiblFBWTJoeWIyMXBkVzFmWlhod1pYSnBiV1Z1ZEdGc1gzQjFjMmhmWTI5dWMzUmhiblFBWlhod1pXTjBaV1FnYzJOaGJHRnlJR052Ym5OMFlXNTBBRzExYzNRZ1ltVWdZU0J6WTJGc1lYSWdjM0JsWTJsaGJHbDZZWFJwYjI0Z1kyOXVjM1JoYm5RQUlHeGxibWQwYUNCcGN5QmhJSE53WldOcFlXeHBlbUYwYVc5dUlHTnZibk4wWVc1MEFDQnBjeUJ1YjNRZ1lTQmpiMjV6ZEdGdWRBQTZJRU52YlhCdmJtVnVkQ0JEYjNWdWRDQnRkWE4wSUdKbElETXlMV0pwZENCcGJuUmxaMlZ5SUU5d1EyOXVjM1JoYm5RQU9pQldaV04wYjNJZ1EyOTFiblFnYlhWemRDQmlaU0F6TWkxaWFYUWdhVzUwWldkbGNpQlBjRU52Ym5OMFlXNTBBRTlpYW1WamRFOW1abk5sZENCdGRYTjBJR0psSUdFZ016SXRZbWwwSUhWdWMybG5ibVZrSUdsdWRHVm5aWElnVDNCRGIyNXpkR0Z1ZEFCUWIybHVkR1Z5VDJabWMyVjBJRzExYzNRZ1ltVWdZU0F6TWkxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNpQlBjRU52Ym5OMFlXNTBBRVJsYzJOeWFYQjBiM0pUWlhRZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5SUU5d1EyOXVjM1JoYm5RQVRuVnRRWEpuZFcxbGJuUnpJRzExYzNRZ1ltVWdZU0F6TWkxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNpQlBjRU52Ym5OMFlXNTBBRVpzWVdkeklHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ2RXNXphV2R1WldRZ2FXNTBaV2RsY2lCUGNFTnZibk4wWVc1MEFFRnlaM1Z0Wlc1MFUybDZaWE1nYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRTl3UTI5dWMzUmhiblFBUVdSa2NtVnpjMUYxWVd4cFptbGxjaUJ0ZFhOMElHSmxJR0VnTXpJdFltbDBJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSWdUM0JEYjI1emRHRnVkQUJCWTJObGMzTlJkV0ZzYVdacFpYSWdiWFZ6ZENCaVpTQmhJRE15TFdKcGRDQjFibk5wWjI1bFpDQnBiblJsWjJWeUlFOXdRMjl1YzNSaGJuUUFWSGx3WlZGMVlXeHBabWxsY2lCdGRYTjBJR0psSUdFZ016SXRZbWwwSUhWdWMybG5ibVZrSUdsdWRHVm5aWElnVDNCRGIyNXpkR0Z1ZEFCRWFXMGdiWFZ6ZENCaVpTQmhJRE15TFdKcGRDQjFibk5wWjI1bFpDQnBiblJsWjJWeUlFOXdRMjl1YzNSaGJuUUFUM0prYVc1aGJDQnRkWE4wSUdKbElHRWdNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ1QzQkRiMjV6ZEdGdWRBQk5ZWE5ySUcxMWMzUWdZbVVnWVNBek1pMWlhWFFnZFc1emFXZHVaV1FnYVc1MFpXZGxjaUJQY0VOdmJuTjBZVzUwQUVKcGJtUnBibWNnYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRTl3UTI5dWMzUmhiblFBVUc5cGJuUmxjbE5wZW1VZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5SUU5d1EyOXVjM1JoYm5RQVFuVm1abVZ5VTJsNlpTQnRkWE4wSUdKbElHRWdNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ1QzQkRiMjV6ZEdGdWRBQkZiR1Z0VTJsNlpTQnRkWE4wSUdKbElHRWdNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ1QzQkRiMjV6ZEdGdWRBQlRjR1ZqU1dRZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5SUU5d1EyOXVjM1JoYm5RQVdpQnRkWE4wSUdKbElHRWdNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ1QzQkRiMjV6ZEdGdWRBQlpJRzExYzNRZ1ltVWdZU0F6TWkxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNpQlBjRU52Ym5OMFlXNTBBRmdnYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRTl3UTI5dWMzUmhiblFBVUhKcGJuUm1TVVFnYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRTl3UTI5dWMzUmhiblFBSUdSdlpYTWdibTkwSUc1aGJXVWdZVzRnVDNCRGIyNXpkR0Z1ZEFBZ2JYVnpkQ0JpWlNCaElISmxjM1ZzZENCcFpDQnZaaUF6TWkxaWFYUWdkVzV6YVdkdVpXUWdUM0JEYjI1emRHRnVkQUJsZUhCbFkzUmxaQ0JHYjNKdFlYUWdjM1J2Y21GblpTQmpiR0Z6Y3lCMGJ5QmlaU0JWYm1sbWIzSnRRMjl1YzNSaGJuUUFRWEpuZFcxbGJuUlFiMmx1ZEdWeVVIVnphRU52Ym5OMFlXNTBBRkJ5YVc1MFprSjFabVpsY2xCdmFXNTBaWEpRZFhOb1EyOXVjM1JoYm5RQVVISnZaM0poYlZOamIzQmxWbUZ5YVdGaWJHVlFiMmx1ZEdWeVVIVnphRU52Ym5OMFlXNTBBRU52Ym5OMFlXNTBSR0YwWVZCdmFXNTBaWEpRZFhOb1EyOXVjM1JoYm5RQVNXMWhaMlZCY21kMWJXVnVkRWx1Wm05RGFHRnVibVZzVDNKa1pYSlFkWE5vUTI5dWMzUmhiblFBU1cxaFoyVkJjbWQxYldWdWRFbHVabTlEYUdGdWJtVnNSR0YwWVZSNWNHVlFkWE5vUTI5dWMzUmhiblFBUVhKbmRXMWxiblJRYjJSUWRYTm9RMjl1YzNSaGJuUUFRM0psWVhSbFEyOXVjM1JoYm5RQWIzQmpiMlJsSUQwOUlITndkam82VDNBNk9rOXdRMjl1YzNSaGJuUWdmSHdnYjNCamIyUmxJRDA5SUhOd2RqbzZUM0E2T2s5d1UzQmxZME52Ym5OMFlXNTBBSGRvWlc0Z1kyRnNZM1ZzWVhScGJtY2daR1YwWlhKdGFXNWhiblFBUkdWMFpYSnRhVzVoYm5RQWFXNTJZWEpwWVc1MEFFbHVkbUZ5YVdGdWRBQjBhVzUwT2pwMGVYQmxPanBCWW5OMGNtRmpkRWx1ZEFCVFpXeGxZM1J2Y2lCMGVYQmxJRzExYzNRZ1ltVWdUM0JVZVhCbFNXNTBBRWx1ZG1Gc2FXUWdkWE5sSUc5bUlEZ3RJRzl5SURFMkxXSnBkQ0J5WlhOMWJIUUFiM0JqYjJSbFgyVnVkSEo1TFQ1b1lYTlNaWE4xYkhRQVpHVm1ZWFZzZEFCRGIyNTJaWEowVkhsd1pTQmpZV3hzWldRZ2QyaGxiaUIwYUdVZ2FXNTBaWEp1WVd3Z2JXOWtkV3hsSUdoaGN5QnViM1FnWW1WbGJpQmlkV2xzZEFCbWIzSXRiRzl2Y0NCa2IyVnpJRzV2ZENCbGVHbDBBSGRvYVd4bElHUnZaWE1nYm05MElHVjRhWFFBTENCaWRYUWdibTkwSUhacFlTQmhJSE4wY25WamRIVnlaV1FnWlhocGRBQkpjMU4wY25WamRIVnlaV1JGZUdsMEFFUmxZblZuUTI5dGNHbHNZWFJwYjI1VmJtbDBBRlJ2Y201aFpHOVdUU0JUVUVsU1ZpQkNaV1ZvYVhabElGUnZiMnhyYVhRQVIyVnVaWEpwWTBOaGMzUlViMUIwY2tWNGNHeHBZMmwwQUVac1lXZEZlSEJzYVdOcGRBQk9iMWRoYVhRQVptbHljM1JVY21GcGJHbHVaMEpwZEFCbWFYSnpkRXhsWVdScGJtZENhWFFBUkc5MFVISnZaSFZqZEVsdWNIVjBOSGc0UW1sMEFGQmhZMnRsWkZabFkzUnZja1p2Y20xaGREUjRPRUpwZEFCUGNtbG5hVzVNYjNkbGNreGxablFBVDNKcFoybHVWWEJ3WlhKTVpXWjBBSFZ6YVc1bklHWXhOaUIwZVhCbGN5QnBiaUFuY0hWemFGOWpiMjV6ZEdGdWRDY2dZV1JrY21WemN5QnpjR0ZqWlNCcGN5QnViM1FnYVcxd2JHVnRaVzUwWldRZ2VXVjBBR2x1YzNRdFBtNTFiVjkzYjNKa2N5QStJRzl3WlhKaGJtUXViMlptYzJWMEFFTnZibk4wVDJabWMyVjBBRWx1ZEdWeWNHOXNZWFJsUVhSUFptWnpaWFFBVUhWemFFTnZibk4wWVc1MFVtVm5hVzl1UjNKdmRYQlBabVp6WlhRQVVIVnphRU52Ym5OMFlXNTBVbVZuYVc5dVQyWm1jMlYwQUZCMWMyaERiMjV6ZEdGdWRFZHNiMkpoYkU5bVpuTmxkQUJUY0dWalEyOXVjM1JoYm5SSGJHOWlZV3hQWm1aelpYUUFUV0Y0UW5sMFpVOW1abk5sZEFCVGNtVjBBR3hsZEFCallXeHNJSFJoY21kbGRBQWdZbkpoYm1Ob1pYTWdkRzhnYVhSelpXeG1JR0oxZENCcGN5QnViM1FnYVhSeklHOTNiaUJqYjI1MGFXNTFaU0IwWVhKblpYUUFJR0Z6SUdKdmRHZ2dhWFJ6SUcxbGNtZGxJR0pzYjJOcklHRnVaQ0JqYjI1MGFXNTFaU0IwWVhKblpYUUFkR2x1ZERvNmMyVnRPanBEWVd4c1ZHRnlaMlYwQUZOcFoyNUNhWFJUWlhRQVJHVnpZM0pwY0hSdmNsTmxkQUJCZEc5dGFXTkdiR0ZuVkdWemRFRnVaRk5sZEFCMGFXNTBPanBoYzNRNk9reGxkQUJzYjI5d1gyTnZibk4wY25WamRBQmpiMjUwYVc1MVpWOWpiMjV6ZEhKMVkzUUFhVzUwWlhKdVlXd2daWEp5YjNJNklHNWxjM1JsWkNCbWRXNWpkR2x2YmlCamIyNXpkSEoxWTNRQUlHVnpZMkZ3WlhNZ2RHaGxJSE5sYkdWamRHbHZiaUJqYjI1emRISjFZM1FBSUdseklHNXZkQ0JwYmlCaElHTnZiblJwYm5WbElHTnZibk4wY25WamRBQldZV3hwWkdGMFpVTnZiWEJ2YzJsMFpVTnZibk4wY25WamRBQmhJSE4wY25WamRDQjBhR0YwSUdOdmJuUmhhVzV6SUdFZ2NuVnVkR2x0WlNCaGNuSmhlU0JqWVc1dWIzUWdZbVVnYm1WemRHVmtJR2x1YzJsa1pTQmhibTkwYUdWeUlITjBjblZqZEFCMGJ5QjBhR1VnYm5WdFltVnlJRzltSUcxbGJXSmxjbk1nYjJZZ1VtVnpkV3gwSUZSNWNHVWdjM1J5ZFdOMEFHTnZjbkpsYzNCdmJtUnBibWNnYldWdFltVnlJSFI1Y0dVZ2IyWWdVbVZ6ZFd4MElGUjVjR1VnYzNSeWRXTjBBSEoxYm5ScGJXVWdZWEp5WVhseklHMWhlU0J2Ym14NUlHRndjR1ZoY2lCaGN5QjBhR1VnYkdGemRDQnRaVzFpWlhJZ2IyWWdZU0J6ZEhKMVkzUUFRMjl0Y0hWMFpVMWxiV0psY2tOdmJuTjBjbUZwYm5SelJtOXlVM1J5ZFdOMEFFWnlaWGh3VTNSeWRXTjBBRTF2WkdaVGRISjFZM1FBYzNSeWRXTjBYMmx1YzNRdFBtOXdZMjlrWlNncElEMDlJSE53ZGpvNlQzQTZPazl3Vkhsd1pWTjBjblZqZEFCcGJuTjBMbTl3WTI5a1pTZ3BJRDA5SUhOd2RqbzZUM0E2T2s5d1ZIbHdaVk4wY25WamRBQlRkV05vSUhaaGNtbGhZbXhsY3lCdGRYTjBJR0psSUhSNWNHVmtJR0Z6SUU5d1ZIbHdaVk4wY25WamRBQXNJRTl3Vkhsd1pWSjFiblJwYldWQmNuSmhlU0J0ZFhOMElHOXViSGtnWW1VZ2RYTmxaQ0JtYjNJZ2RHaGxJR3hoYzNRZ2JXVnRZbVZ5SUc5bUlHRnVJRTl3Vkhsd1pWTjBjblZqZEFCRmVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCUGNGUjVjR1ZUZEhKMVkzUUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82VTNSeWRXTjBBSFJwYm5RNk9tRnpkRG82VTNSeWRXTjBBSFJwYm5RNk9uTmxiVG82VTNSeWRXTjBBSFJwYm5RNk9uUjVjR1U2T2xOMGNuVmpkQUJUVUZaZlMwaFNYMmx1ZEdWblpYSmZaRzkwWDNCeWIyUjFZM1FBUkc5MFVISnZaSFZqZEFCUGRYUmxjbEJ5YjJSMVkzUUFVbVZ6ZEhKcFkzUUFkMmhsYmlCallXeGpkV3hoZEdsdVp5QnlaV1pzWldOMEFGSmxabXhsWTNRQVltbDBjMlZzWldOMEFGTmxiR1ZqZEFCSGNtOTFjRTV2YmxWdWFXWnZjbTFGYkdWamRBQWdaR1ZqYjNKaGRHbHZiaUJoY0hCc2FXVmtJSFJ2SUdFZ2JtOXVMVzlpYW1WamRBQkZlSEJsWTNSbFpDQkpiV0ZuWlNCUGNHVnlZVzVrSUVOdmJuTjBUMlptYzJWMElIUnZJR0psSUdFZ1kyOXVjM1FnYjJKcVpXTjBBRVY0Y0dWamRHVmtJRWx0WVdkbElFOXdaWEpoYm1RZ1EyOXVjM1JQWm1aelpYUnpJSFJ2SUdKbElHRWdZMjl1YzNRZ2IySnFaV04wQUVOc2IyNWxRMjl1ZEdWNGREbzZVbVZ0YjNabEtDa2dkbVZqZEc5eUlHUnZaWE1nYm05MElHTnZiblJoYVc0Z2IySnFaV04wQUVOdmNIbFBZbXBsWTNRQVNXMWhaMlZTWldOMEFGTmhiWEJzWldSU1pXTjBBRWx0WVdkbElDZEVhVzBuSUcxMWMzUWdZbVVnTVVRc0lFSjFabVpsY2l3Z01rUXNJRU4xWW1Vc0lETkVJRzl5SUZKbFkzUUFSWGh3WldOMFpXUWdTVzFoWjJVZ0owUnBiU2NnY0dGeVlXMWxkR1Z5SUhSdklHSmxJREZFTENBeVJDd2dNMFFnYjNJZ1VtVmpkQUJGZUhCbFkzUmxaQ0JKYldGblpTQW5SR2x0SnlCMGJ5QmlaU0F5UkN3Z1EzVmlaU3dnYjNJZ1VtVmpkQUJIY205MWNFNXZibFZ1YVdadmNtMUNZV3hzYjNSQ2FYUkZlSFJ5WVdOMEFFOXdRMjl0Y0c5emFYUmxSWGgwY21GamRBQkNhWFJHYVdWc1pGVkZlSFJ5WVdOMEFFSnBkRVpwWld4a1UwVjRkSEpoWTNRQVgxOW1jbVY0Y0Y5eVpYTjFiSFJmWVdKemRISmhZM1FBWDE5dGIyUm1YM0psYzNWc2RGOWhZbk4wY21GamRBQmZYMlp5Wlhod1gzSmxjM1ZzZEY5MlpXTTBYMkZpYzNSeVlXTjBBRjlmYlc5a1psOXlaWE4xYkhSZmRtVmpORjloWW5OMGNtRmpkQUJmWDJaeVpYaHdYM0psYzNWc2RGOTJaV016WDJGaWMzUnlZV04wQUY5ZmJXOWtabDl5WlhOMWJIUmZkbVZqTTE5aFluTjBjbUZqZEFCZlgyWnlaWGh3WDNKbGMzVnNkRjkyWldNeVgyRmljM1J5WVdOMEFGOWZiVzlrWmw5eVpYTjFiSFJmZG1Wak1sOWhZbk4wY21GamRBQjNhR1Z1SUdOaGJHTjFiR0YwYVc1bklISmxabkpoWTNRQVVtVm1jbUZqZEFCR2NtRmpkQUJQWTNRQWRWOWhaR1JmYzJGMEFITmZZV1JrWDNOaGRBQjFYMjFoWkY5ellYUUFjMTl0WVdSZmMyRjBBSFZmYzNWaVgzTmhkQUJ6WDNOMVlsOXpZWFFBVTFCV1gwRk5SRjluY0hWZmMyaGhaR1Z5WDJoaGJHWmZabXh2WVhRQWRXNXdZV05yTW5neE5tWnNiMkYwQUhKblltRXhObVpzYjJGMEFISXpNbVpzYjJGMEFISm5NekptYkc5aGRBQmlaM0poT0hWdWIzSnRMQ0J5WjJKaE9IVnViM0p0TENCeVoySmhPSE51YjNKdExDQnlaMkpoTVRabWJHOWhkQ3dnY2pNeVpteHZZWFFzSUhKbk16Sm1iRzloZENCdmNpQnlaMkpoTXpKbWJHOWhkQUJoWW5OMGNtRmpkQzFtYkc5aGRBQkhaWFJHYkc5aGRBQjBhVzUwT2pwMGVYQmxPanBCWW5OMGNtRmpkRVpzYjJGMEFFaGhiR1pHYkc5aGRBQlVlWEJsUm14dllYUUFjR0ZqYTJWa0lIWmxZM1J2Y2lCbWIzSnRZWFFBZEdWNFpXd2dabTl5YldGMEFHbHRZV2RsSUdadmNtMWhkQUJKYldGblpWRjFaWEo1Um05eWJXRjBBRk4wYjNKaFoyVkpiV0ZuWlZkeWFYUmxWMmwwYUc5MWRFWnZjbTFoZEFCVGRHOXlZV2RsU1cxaFoyVlNaV0ZrVjJsMGFHOTFkRVp2Y20xaGRBQmhjbkpmZEc5ZmJXRjBBSFJwYm5RNk9tTnZibk4wWVc1ME9qcFRjR3hoZEFCbWJHRjBBRVpzWVhRQVVtVndaV0YwQUZOVlJHOTBRV05qVTJGMEFGTkViM1JCWTJOVFlYUUFWbUZzYVdSaGRHbHZibE4wWVhSbFgzUUFjR1ZsYTBGMEFFUmxZblZuU1c1c2FXNWxaRUYwQUVsdWJHbHVaV1FnUVhRQVVHVnlWbVZ5ZEdWNFMwaFNJRzExYzNRZ1ltVWdaR1ZqYkdGeVpXUWdZWE1nWVhKeVlYbHpBR3hsWm5SZmJuVnRYM0p2ZDNNZ1BUMGdjbVZ6WDI1MWJWOXliM2R6QUZWdVpYaHdaV04wWldRZ2JuVnRZbVZ5SUc5bUlHMWhkSEpwZUNCeWIzZHpBRk5sZEZWelpYSkZkbVZ1ZEZOMFlYUjFjd0JOYVc1MWN3QlFiSFZ6QUdsdWNIVjBjd0JUVUZaZlFVMUVYM05vWVdSbGNsOWxZWEpzZVY5aGJtUmZiR0YwWlY5bWNtRm5iV1Z1ZEY5MFpYTjBjd0JGWVhKc2VVWnlZV2R0Wlc1MFZHVnpkSE1BVkhKaGRtVnljMkZzVW05dmRITUFZMjl1YzNRdFpYWmhiQ0JqYjI1MlpYSnphVzl1SUc5bUlITjBjblZqZEhWeVpTQm9ZWE1nYldsemJXRjBZMmhsWkNCbGJHVnRaVzUwSUdOdmRXNTBjd0FnYlhWemRDQnlaV1psY2lCdmJteDVJSFJ2SUVkTVEyOXRjSFYwWlNCbGJuUnllUzF3YjJsdWRITUFUM1YwY0hWMFVHOXBiblJ6QUVsdWNIVjBVRzlwYm5SekFHTnZibk4wY21GcGJuUnpBRWR5YjNWd1YyRnBkRVYyWlc1MGN3QmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGTm9kV1ptYkdVZ1RXRnpheUJqYjIxd2IyNWxiblJ6SUhSdklHaGhkbVVnZEdobElITmhiV1VnWW1sMElIZHBaSFJvSUdGeklGSmxjM1ZzZENCVWVYQmxJR052YlhCdmJtVnVkSE1BSUhSb1pTQnpZVzFsSUhSNWNHVWdZWE1nVW1WemRXeDBJRlI1Y0dVZ1kyOXRjRzl1Wlc1MGN3QmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGQWdaR0YwWVNCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklIUm9aU0IwZVhCbElHOW1JRzl3WlhKaGJtUWdSR0YwWVNCamIyMXdiMjVsYm5SekFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdjMk5oYkdGeUlHOXlJR0VnZG1WamRHOXlJSGRwZEdnZ01pd2dNeXdnTkN3Z09DQnZjaUF4TmlCamIyMXdiMjVsYm5SekFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdoaGRtVWdNaXdnTXl3Z05Dd2dPQ0J2Y2lBeE5pQmpiMjF3YjI1bGJuUnpBR1Y0Y0dWamRHVmtJRVJoZEdFZ2RHOGdhR0YyWlNBeUxDQXpMQ0EwTENBNElHOXlJREUySUdOdmJYQnZibVZ1ZEhNQVpYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnYUdGMlpTQXlMQ0EwTENBNElHOXlJREUySUdOdmJYQnZibVZ1ZEhNQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCWUlIUnZJR2hoZG1VZ01pd2dOQ3dnT0NCdmNpQXhOaUJqYjIxd2IyNWxiblJ6QUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR2hoZG1VZ015QnZjaUEwSUdOdmJYQnZibVZ1ZEhNQVpYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnYUdGMlpTQnVieUJ0YjNKbElIUm9ZVzRnTkNCamIyMXdiMjVsYm5SekFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1VDQjBieUJvWVhabElHNXZJRzF2Y21VZ2RHaGhiaUEwSUdOdmJYQnZibVZ1ZEhNQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUU1DQjBieUJvWVhabElHNXZJRzF2Y21VZ2RHaGhiaUEwSUdOdmJYQnZibVZ1ZEhNQUlIUnZJR2hoZG1VZ05DQmpiMjF3YjI1bGJuUnpBR1Y0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHaGhkbVVnTXlCamIyMXdiMjVsYm5SekFFVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdoaGRtVWdNaUJqYjIxd2IyNWxiblJ6QUdOaGJtNXZkQ0JwYm1abGNpQmpiMjF0YjI0Z1lYSnlZWGtnWld4bGJXVnVkQ0IwZVhCbElHWnliMjBnWTI5dWMzUnlkV04wYjNJZ1lYSm5kVzFsYm5SekFDY2daRzlsY3lCdWIzUWdkR0ZyWlNCMFpXMXdiR0YwWlNCaGNtZDFiV1Z1ZEhNQUlHaGhjeUJqYjI1bWJHbGpkR2x1WnlCamIyMXdiMjVsYm5RZ1lYTnphV2R1YldWdWRITUFJR2hoY3lCamIyNW1iR2xqZEdsdVp5QnNiMk5oZEdsdmJpQmhjM05wWjI1dFpXNTBjd0JtYjNJZ2MzUmhkR1Z0Wlc1MGN3QnNiMjl3SUhOMFlYUmxiV1Z1ZEhNQVlteHZZMnNnYzNSaGRHVnRaVzUwY3dCemQybDBZMmdnYzNSaGRHVnRaVzUwY3dCcFppQnpkR0YwWlcxbGJuUnpBSGRvYVd4bElITjBZWFJsYldWdWRITUFkR2x1ZERvNmRISmhibk5tYjNKdE9qcFNaVzF2ZG1WVmJuSmxZV05vWVdKc1pWTjBZWFJsYldWdWRITUFJR1ZzWlcxbGJuUnpBRUoxYVd4MFNXNXpJR05oYmlCdmJteDVJSFJoY21kbGRDQjJZWEpwWVdKc1pYTXNJSE4wY25WamRIVnlaU0J0WlcxaVpYSnpJRzl5SUdOdmJuTjBZVzUwY3dBN0lGUjVjR1Z6TENCMllYSnBZV0pzWlhNZ1lXNWtJR052Ym5OMFlXNTBjd0JTWlhOMWJIUWdkSGx3WlNCamIyMXdiMjVsYm5RZ2QybGtkR2dnYlhWemRDQmlaU0F6TWlCaWFYUnpBR2x1YzJWeWRFSnBkSE1BWlhoMGNtRmpkRUpwZEhNQWNtVjJaWEp6WlVKcGRITUFZMjkxYm5SUGJtVkNhWFJ6QUVOdmJuTjBUMlptYzJWMGN3QkhaWFJOWVhoUWFYQmxVR0ZqYTJWMGN3QkhaWFJPZFcxUWFYQmxVR0ZqYTJWMGN3QkhjbTkxY0ZKbGMyVnlkbVZYY21sMFpWQnBjR1ZRWVdOclpYUnpBRWR5YjNWd1VtVnpaWEoyWlZKbFlXUlFhWEJsVUdGamEyVjBjd0J6WlhSZlkyOXljbVZ6Y0c5dVpHbHVaMTlqYjI1emRISjFZM1J6QUNCMWJuUmxjbTFwYm1GMFpXUWdZMjl1YzNSeWRXTjBjd0JEWVc1dWIzUWdkSEpoYm5Od2IzTmxJRzFoZEhKcFkyVnpJRzltSURFMkxXSnBkQ0JtYkc5aGRITUFaWGh3WldOMFpXUWdUMlptYzJWMElIUnZJR0psSUdFZ2RtVmpkRzl5SUc5bUlESWdNekl0WW1sMElHWnNiMkYwY3dCcGJXRm5aU0JtYjNKdFlYUWdiWFZ6ZENCaVpTQnZibVVnYjJZZ2RHaGxJSFJsZUdWc0lHWnZjbTFoZEhNZ2MzQmxZMmxtYVdWa0lHWnZjaUJ6ZEc5eVlXZGxJSFJsZUhSMVpYTWdhVzRnYUhSMGNITTZMeTluY0hWM1pXSXVaMmwwYUhWaUxtbHZMMmR3ZFhkbFlpOTNaM05zTHlOMFpYaGxiQzFtYjNKdFlYUnpBRk4wYjNKaFoyVkpiV0ZuWlVWNGRHVnVaR1ZrUm05eWJXRjBjd0JqY205emN3QkRjbTl6Y3dCQlpHUnlaWE56QUhWdWJHVnpjd0J5WldkaGNtUnNaWE56QUcxbGJXOXllU0JoWTJObGMzTUFWbUZzYVdSaGRHVkRiM0I1VFdWdGIzSjVUV1Z0YjNKNVFXTmpaWE56QUZWdWFXWnZjbTFCYm1SVGRHOXlZV2RsUW5WbVptVnlPRUpwZEVGalkyVnpjd0JWYm1sbWIzSnRRVzVrVTNSdmNtRm5aVUoxWm1abGNqRTJRbWwwUVdOalpYTnpBSFJwYm5RNk9uTmxiVG82VTNSeWRXTjBUV1Z0WW1WeVFXTmpaWE56QUVSbGNIUm9UR1Z6Y3dCVFVGWmZTMGhTWDNOMGIzSmhaMlZmWW5WbVptVnlYM04wYjNKaFoyVmZZMnhoYzNNQWJYVnpkQ0JpWlNCcGJpQjBhR1VnVDNWMGNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNQWJYVnpkQ0JpWlNCcGJpQjBhR1VnVTNSdmNtRm5aVUoxWm1abGNpd2dWVzVwWm05eWJTd2diM0lnVlc1cFptOXliVU52Ym5OMFlXNTBJSE4wYjNKaFoyVWdZMnhoYzNNQWJYVnpkQ0JpWlNCcGJpQjBhR1VnVlc1cFptOXliVU52Ym5OMFlXNTBJSE4wYjNKaFoyVWdZMnhoYzNNQUlHUmxZMjl5WVhScGIyNGdiWFZ6ZENCdWIzUWdZbVVnWVhCd2JHbGxaQ0IwYnlCMGFHbHpJSE4wYjNKaFoyVWdZMnhoYzNNQVNXNTJZV3hwWkNCd2IybHVkR1Z5SUhOMGIzSmhaMlVnWTJ4aGMzTUFUM0JRZEhKQlkyTmxjM05EYUdGcGJpQkNZWE5sSUc5d1pYSmhibVFnYlhWemRDQndiMmx1ZENCMGJ5QlhiM0pyWjNKdmRYQXNJRk4wYjNKaFoyVkNkV1ptWlhJc0lHOXlJRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2lCemRHOXlZV2RsSUdOc1lYTnpBRU5oYm01dmRDQjFjMlVnWVNCd2IybHVkR1Z5SUdsdUlIUm9aU0JRYUhsemFXTmhiRk4wYjNKaFoyVkNkV1ptWlhJZ2MzUnZjbUZuWlNCamJHRnpjd0FnU1c0Z1ZuVnNhMkZ1TENCQ2RXWm1aWEpDYkc5amF5QnBjeUJrYVhOaGJHeHZkMlZrSUc5dUlIWmhjbWxoWW14bGN5QnBiaUIwYUdVZ1UzUnZjbUZuWlVKMVptWmxjaUJ6ZEc5eVlXZGxJR05zWVhOekFDd2dhVzVwZEdsaGJHbDZaWEp6SUdGeVpTQnNhVzFwZEdWa0lIUnZJRTl3UTI5dWMzUmhiblJPZFd4c0lHbHVJRmR2Y210bmNtOTFjQ0J6ZEc5eVlXZGxJR05zWVhOekFITjBiM0poWjJVZ1luVm1abVZ5TENCdmNpQjJZWEpwWVdKc1pTQnBiaUJRY21sMllYUmxJRzl5SUVaMWJtTjBhVzl1SUhOMGIzSmhaMlVnWTJ4aGMzTUFPaUJsZUhCbFkzUmxaQ0JOWlcxdmNua2dVMlZ0WVc1MGFXTnpJSFJ2SUdsdVkyeDFaR1VnWVNCV2RXeHJZVzR0YzNWd2NHOXlkR1ZrSUhOMGIzSmhaMlVnWTJ4aGMzTUFPaUJsZUhCbFkzUmxaQ0JOWlcxdmNua2dVMlZ0WVc1MGFXTnpJSFJ2SUdsdVkyeDFaR1VnWVNCemRHOXlZV2RsSUdOc1lYTnpBRVpzWVdkSmMwVnVkVzFEYkdGemN3QlRkRzl5WVdkbFEyeGhjM01BVTNSdmNtRm5aU0JEYkdGemN3QkRZWEJoWW1sc2FYUjVVR0Z6Y3dCTWIyZHBZMkZzYzFCaGMzTUFRWEpwZEdodFpYUnBZM05RWVhOekFFTm1aMUJoYzNNQVpYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdiV0YwY21sNElIUnZJR2hoZG1VZ1lTQkRiMngxYlc0Z1ZIbHdaU0J2WmlBekxXTnZiWEJ2Ym1WdWRDQXpNaTFpYVhRZ1pteHZZWFFnZG1WamRHOXljd0JsZUhCbFkzUmxaQ0JoYkd3Z2IzQmxjbUZ1WkhNZ2RHOGdZbVVnYVc1MElITmpZV3hoY25NZ2IzSWdkbVZqZEc5eWN3QjBaWGgwZFhKbFRuVnRUR0Y1WlhKekFGTlFWbDlKVGxSRlRGOW1kVzVqZEdsdmJsOXdiMmx1ZEdWeWN3QlRVRlpmUzBoU1gzWmhjbWxoWW14bFgzQnZhVzUwWlhKekFIUnBiblE2T25SeVlXNXpabTl5YlRvNlUybHRjR3hwWm5sUWIybHVkR1Z5Y3dCV1lYSnBZV0pzWlZCdmFXNTBaWEp6QUZKbGNHeGhZMlZHYjNKM1lYSmtVRzlwYm5SbGNuTUFVMUJXWDB0SVVsOXphR0ZrWlhKZlpISmhkMTl3WVhKaGJXVjBaWEp6QUdOb2NtOXRhWFZ0WDJWNGNHVnlhVzFsYm5SaGJGOW1kV3hzWDNCMGNsOXdZWEpoYldWMFpYSnpBRzV2YmkxbGJuUnllU0J3YjJsdWRDQm1kVzVqZEdsdmJpQndZWEpoYldWMFpYSnpBR2x1SUVaMWJtTjBhVzl1SUc5eUlGQnlhWFpoZEdVZ2MzUnZjbUZuWlNCamJHRnpjMlZ6SUc5eUlHRnpJR1oxYm1OMGFXOXVJSEJoY21GdFpYUmxjbk1BVDNCQ2NtRnVZMmhEYjI1a2FYUnBiMjVoYkNCeVpYRjFhWEpsY3lCbGFYUm9aWElnTXlCdmNpQTFJSEJoY21GdFpYUmxjbk1BUkhKaGQxQmhjbUZ0WlhSbGNuTUFVMUJXWDBsT1ZFVk1YMkZ5WW1sMGNtRnllVjl3Y21WamFYTnBiMjVmYVc1MFpXZGxjbk1BUTJobFkydEVaV052Y21GMGFXOXVjMDltUW5WbVptVnljd0J6ZEhKMVkzUWdiV1Z0WW1WeWN3QWdZMkZ1SUc5dWJIa2dZbVVnWVhCd2JHbGxaQ0IwYnlCemRISjFZM1IxY21VZ2JXVnRZbVZ5Y3dBZ1kyRnVibTkwSUdKbElHRndjR3hwWldRZ2RHOGdjM1J5ZFdOMGRYSmxJRzFsYldKbGNuTUFjMk5oYkdGeUlHOXlJSFpsWTNSdmNpQm1iRzloZENCMGVYQmxJRzFsYldKbGNuTUFiblZ0WDNkdmNtdG5jbTkxY0hNQVVIVnphRU52Ym5OMFlXNTBUblZ0VjI5eWEyZHliM1Z3Y3dCVFVGWmZTVTVVUlV4ZmMzVmlaM0p2ZFhCekFFZGxkRXRsY201bGJFMWhlRTUxYlZOMVltZHliM1Z3Y3dCT2RXMUZibkYxWlhWbFpGTjFZbWR5YjNWd2N3Qm5iRjlPZFcxWGIzSnJSM0p2ZFhCekFGTlFWbDlMU0ZKZmMyaGhaR1Z5WDJGMGIyMXBZMTlqYjNWdWRHVnlYMjl3Y3dCQmRHOXRhV05UZEc5eVlXZGxUM0J6QUdOdmRXNTBWSEpoYVd4cGJtZGFaWEp2Y3dCamIzVnVkRXhsWVdScGJtZGFaWEp2Y3dCTGFISnZibTl6QUVWdFltRnlheUJUZEhWa2FXOXpBSE5wYm1OdmN3QmhZMjl6QUdoaGJHWmZZMjl6QUc1aGRHbDJaVjlqYjNNQVFXTnZjd0JEYjNNQVUxQldYMHRJVWw5aWFYUmZhVzV6ZEhKMVkzUnBiMjV6QUZOUVZsOUxTRkpmZFc1cFptOXliVjluY205MWNGOXBibk4wY25WamRHbHZibk1BVFdWdGIzSjVJRk5sYldGdWRHbGpjeUJXYjJ4aGRHbHNaU0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJSGRwZEdnZ1lYUnZiV2xqSUdsdWMzUnlkV04wYVc5dWN3QkNhWFJKYm5OMGNuVmpkR2x2Ym5NQVRXbHJhMjl6YjJaMElGQnliMlIxWTNScGIyNXpBR1oxYm1OMGFXOXVjd0E3SUVGdWJtOTBZWFJwYjI1ekFGWmhjbWxoWW14bElHaGhjeUJqYjI1bWJHbGpkR2x1WnlCcGJtUmxlQ0JrWldOdmNtRjBhVzl1Y3dCV1lYSnBZV0pzWlNCb1lYTWdZMjl1Wm14cFkzUnBibWNnWTI5dGNHOXVaVzUwSUdSbFkyOXlZWFJwYjI1ekFDa2dZMkZ1Ym05MElHaGhkbVVnWVc1NUlFeHZZMkYwYVc5dUlHOXlJRU52YlhCdmJtVnVkQ0JrWldOdmNtRjBhVzl1Y3dCV1lYSnBZV0pzWlNCb1lYTWdZMjl1Wm14cFkzUnBibWNnYkc5allYUnBiMjRnWkdWamIzSmhkR2x2Ym5NQVNHRjJaVk5oYldWTVlYbHZkWFJFWldOdmNtRjBhVzl1Y3dCTllYaEpkR1Z5WVhScGIyNXpBRTFwYmtsMFpYSmhkR2x2Ym5NQVNXMWhaMlVnVDNCbGNtRnVaQ0JQWm1aelpYUWdZMkZ1SUc5dWJIa2dZbVVnZFhObFpDQjNhWFJvSUU5d1NXMWhaMlVxUjJGMGFHVnlJRzl3WlhKaGRHbHZibk1BYzNSeWRXTjBJR1JsWTJ4aGNtRjBhVzl1Y3dCSmJuWnZZMkYwYVc5dWN3QTRMU0J2Y2lBeE5pMWlhWFFnZEhsd1pYTWdZMkZ1SUc5dWJIa2dZbVVnZFhObFpDQjNhWFJvSUhkcFpIUm9MVzl1YkhrZ1kyOXVkbVZ5YzJsdmJuTUFkR1Y0ZEhWeVpVUnBiV1Z1YzJsdmJuTUFVMUJXWDA1V1gzTm9ZV1JsY2w5emJWOWlkV2xzZEdsdWN3QlRVRlpmUVZKTlgyTnZjbVZmWW5WcGJIUnBibk1BZDJobGJpQmpZV3hqZFd4aGRHbHVaeUJ5WVdScFlXNXpBRkpoWkdsaGJuTUFSMlZ2YldWMGNubFRkSEpsWVcxekFDQnRjd0JUVUZaZlMwaFNYMlpzYjJGMFgyTnZiblJ5YjJ4ekFGTlFWbDlKVGxSRlRGOTFibk4wY25WamRIVnlaV1JmYkc5dmNGOWpiMjUwY205c2N3QlRVRlpmU1U1VVJVeGZabkJuWVY5c2IyOXdYMk52Ym5SeWIyeHpBRk53YVhKMlZHOXZiSE1BVTNCMlIyVnVWSGR2SUdOdmJXMTFibWwwZVNCVGNIWkhaVzVVZDI4Z1UxQkpVaTFXSUVsU0lGUnZiMnh6QUVodmNtbDZiMjUwWVd3MFVHbDRaV3h6QUZabGNuUnBZMkZzTkZCcGVHVnNjd0JJYjNKcGVtOXVkR0ZzTWxCcGVHVnNjd0JXWlhKMGFXTmhiREpRYVhobGJITUFTVzFoWjJWUmRXVnllVXhsZG1Wc2N3QjBaWGgwZFhKbFRuVnRUR1YyWld4ekFHbHVJRloxYkd0aGJpQmxiblpwY205dWJXVnVkQ3dnVDNCRGIyNTBjbTlzUW1GeWNtbGxjaUJsZUdWamRYUnBiMjRnYzJOdmNHVWdiWFZ6ZENCaVpTQlRkV0puY205MWNDQm1iM0lnUm5KaFoyMWxiblFzSUZabGNuUmxlQ3dnUjJWdmJXVjBjbmtzSUZSbGMzTmxiR3hoZEdsdmJrVjJZV3gxWVhScGIyNHNJRkpoZVVkbGJtVnlZWFJwYjI0c0lFbHVkR1Z5YzJWamRHbHZiaXdnUVc1NVNHbDBMQ0JEYkc5elpYTjBTR2wwTENCaGJtUWdUV2x6Y3lCbGVHVmpkWFJwYjI0Z2JXOWtaV3h6QUdsdUlGWjFiR3RoYmlCbGJuWnBjbTl1YldWdWRDd2dWMjl5YTJkeWIzVndJR1Y0WldOMWRHbHZiaUJ6WTI5d1pTQnBjeUJ2Ym14NUlHWnZjaUJVWVhOclRsWXNJRTFsYzJoT1Zpd2dWR0Z6YTBWWVZDd2dUV1Z6YUVWWVZDd2dWR1Z6YzJWc2JHRjBhVzl1UTI5dWRISnZiQ3dnWVc1a0lFZE1RMjl0Y0hWMFpTQmxlR1ZqZFhScGIyNGdiVzlrWld4ekFFOXdWSEpoWTJWU1lYbExTRklnY21WeGRXbHlaWE1nVW1GNVIyVnVaWEpoZEdsdmJrdElVaXdnUTJ4dmMyVnpkRWhwZEV0SVVpQmhibVFnVFdsemMwdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXeHpBR2x1SUZaMWJHdGhiaUJsYm5acGNtOXViV1Z1ZEN3Z1QzVjBjSFYwSUZOMGIzSmhaMlVnUTJ4aGMzTWdiWFZ6ZENCdWIzUWdZbVVnZFhObFpDQnBiaUJIVEVOdmJYQjFkR1VzSUZKaGVVZGxibVZ5WVhScGIyNUxTRklzSUVsdWRHVnljMlZqZEdsdmJrdElVaXdnUVc1NVNHbDBTMGhTTENCRGJHOXpaWE4wU0dsMFMwaFNMQ0JOYVhOelMwaFNMQ0J2Y2lCRFlXeHNZV0pzWlV0SVVpQmxlR1ZqZFhScGIyNGdiVzlrWld4ekFFOXdSWGhsWTNWMFpVTmhiR3hoWW14bFMwaFNJSEpsY1hWcGNtVnpJRkpoZVVkbGJtVnlZWFJwYjI1TFNGSXNJRU5zYjNObGMzUklhWFJMU0ZJc0lFMXBjM05MU0ZJZ1lXNWtJRU5oYkd4aFlteGxTMGhTSUdWNFpXTjFkR2x2YmlCdGIyUmxiSE1BSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQndhSGx6YVdOaGJDQmhaR1J5WlhOemFXNW5JRzF2WkdWc2N3QkhaWFJGZUdWamRYUnBiMjVOYjJSbGJITUFVR1Z5Vm1WeWRHVjRTMGhTSUdOaGJpQnZibXg1SUdKbElHRndjR3hwWldRZ2RHOGdSbkpoWjIxbGJuUWdSWGhsWTNWMGFXOXVJRTF2WkdWc2N3QkpiaUJUVUVsU0xWWWdNUzQySUc5eUlHeGhkR1Z5TENCVWNuVmxJRXhoWW1Wc0lHRnVaQ0JHWVd4elpTQk1ZV0psYkNCdGRYTjBJR0psSUdScFptWmxjbVZ1ZENCc1lXSmxiSE1BUm5WdVkzUnBiMjRnWlc1a0lHTmhibTV2ZENCaVpTQmpZV3hzWldRZ2FXNGdZbXh2WTJ0ekFGVndaR0YwWlVOdmJuUnBiblZsUTI5dWMzUnlkV04wUlhocGRFSnNiMk5yY3dCSmJpQjBhR1VnVm5Wc2EyRnVJR1Z1ZG1seWIyNXRaVzUwTENCallXNXViM1FnYzNSdmNtVWdkRzhnVlc1cFptOXliU0JDYkc5amEzTUFZMmh5YjIxcGRXMWZaR2x6WVdKc1pWOTFibWxtYjNKdGFYUjVYMkZ1WVd4NWMybHpBR3hvY3lBbUppQnlhSE1BY21GNUlHWnNZV2R6QUU5d1pXNURUQzVFWldKMVowbHVabTh1TVRBd0lHUmxZblZuSUdsdVptOGdabXhoWjNNQWEyVnlibVZzSUdWdWNXVjFaU0JtYkdGbmN3QkdiR0ZuY3dCVFVGWmZUbFpmWTI5dGNIVjBaVjl6YUdGa1pYSmZaR1Z5YVhaaGRHbDJaWE1BZEdobElGTndhWEoyUVhSdmJXbGpJSFJ5WVc1elptOXliU0JrYjJWeklHNXZkQ0JqZFhKeVpXNTBiSGtnYzNWd2NHOXlkQ0JoY25KaGVTQmpiM1Z1ZEhNZ2RHaGhkQ0IxYzJVZ2IzWmxjbkpwWkdVZ2RtRnNkV1Z6QUNrZ2JYVnpkQ0J1YjNRZ1pYaGpaV1ZrSURCNFptWm1abVptWm1ZZ1lubDBaWE1BVTFCV1gwbE9WRVZNWDJad1oyRmZiV1Z0YjNKNVgyRjBkSEpwWW5WMFpYTUFVMUJXWDA1V1dGOXRkV3gwYVhacFpYZGZjR1Z5WDNacFpYZGZZWFIwY21saWRYUmxjd0JUVUZaZlNVNVVSVXhmWm5CbllWOWpiSFZ6ZEdWeVgyRjBkSEpwWW5WMFpYTUFVMUJXWDBsT1ZFVk1YMnRsY201bGJGOWhkSFJ5YVdKMWRHVnpBRk5RVmw5SlRsUkZURjltY0dkaFgybHVkbTlqWVhScGIyNWZjR2x3Wld4cGJtbHVaMTloZEhSeWFXSjFkR1Z6QUdFZ1kyOXRjSFYwWlNCemFHRmtaWElnYlhWemRDQnBibU5zZFdSbElDZDNiM0pyWjNKdmRYQmZjMmw2WlNjZ2FXNGdhWFJ6SUdGMGRISnBZblYwWlhNQWJtOXVMWEpsYzI5MWNtTmxJSFpoY21saFlteGxjeUJ0ZFhOMElHNXZkQ0JvWVhabElFQm5jbTkxY0NCdmNpQkFZbWx1WkdsdVp5QmhkSFJ5YVdKMWRHVnpBSEpsYzI5MWNtTmxJSFpoY21saFlteGxjeUJ5WlhGMWFYSmxJRUJuY205MWNDQmhibVFnUUdKcGJtUnBibWNnWVhSMGNtbGlkWFJsY3dCdGRXeDBhWEJzWlNCbGJuUnllU0J3YjJsdWRDQkpUeUJoZEhSeWFXSjFkR1Z6QUV4cGJtdGhaMlZCZEhSeWFXSjFkR1Z6QUZCb2VYTnBZMkZzVTNSdmNtRm5aVUoxWm1abGNrRmtaSEpsYzNObGN3QlRVRlpmU1U1VVJVeGZabkJuWVY5dFpXMXZjbmxmWVdOalpYTnpaWE1BVTFCV1gwbE9WRVZNWDNWemJWOXpkRzl5WVdkbFgyTnNZWE56WlhNQWMzUnZjbUZuWlNCamJHRnpjMlZ6QUdGeWNtRjVJSFI1Y0dWekFFVjRjR1ZqZEdWa0lHTnZiM0JsY21GMGFYWmxJRzFoZEhKcGVDQjBlWEJsY3dCbGVIQmxZM1JsWkNCdmNHVnlZVzVrSUZnZ1lXNWtJRkpsYzNWc2RDQlVlWEJsSUhSdklHaGhkbVVnWlhGMVlXd2dZMjl0Y0c5dVpXNTBJSFI1Y0dWekFFTmhibTV2ZENCamNtVmhkR1VnZFc1a1pXWnBibVZrSUhaaGJIVmxjeUIzYVhSb0lEZ3RJRzl5SURFMkxXSnBkQ0IwZVhCbGN3QkRZVzV1YjNRZ1kyOXdlU0J0WlcxdmNua2diMllnYjJKcVpXTjBjeUJqYjI1MFlXbHVhVzVuSURndElHOXlJREUyTFdKcGRDQjBlWEJsY3dCRFlXNXViM1FnWTNKbFlYUmxJR0VnWTI5dGNHOXphWFJsSUdOdmJuUmhhVzVwYm1jZ09DMGdiM0lnTVRZdFltbDBJSFI1Y0dWekFFTmhibTV2ZENCbWIzSnRJR052Ym5OMFlXNTBjeUJ2WmlBNExTQnZjaUF4TmkxaWFYUWdkSGx3WlhNQVEyRnVibTkwSUdOdmNIa2dZMjl0Y0c5emFYUmxjeUJ2WmlBNExTQnZjaUF4TmkxaWFYUWdkSGx3WlhNQVEyRnVibTkwSUdsdWMyVnlkQ0JwYm5SdklHRWdkbVZqZEc5eUlHOW1JRGd0SUc5eUlERTJMV0pwZENCMGVYQmxjd0JEWVc1dWIzUWdaWGgwY21GamRDQm1jbTl0SUdFZ2RtVmpkRzl5SUc5bUlEZ3RJRzl5SURFMkxXSnBkQ0IwZVhCbGN3QkRZVzV1YjNRZ2MyaDFabVpzWlNCaElIWmxZM1J2Y2lCdlppQTRMU0J2Y2lBeE5pMWlhWFFnZEhsd1pYTUFRMkZ1Ym05MElHbHVjMlZ5ZENCcGJuUnZJR0VnWTI5dGNHOXphWFJsSUc5bUlEZ3RJRzl5SURFMkxXSnBkQ0IwZVhCbGN3QkRZVzV1YjNRZ1pYaDBjbUZqZENCbWNtOXRJR0VnWTI5dGNHOXphWFJsSUc5bUlEZ3RJRzl5SURFMkxXSnBkQ0IwZVhCbGN3QmxiblJ5ZVNCd2IybHVkQ0J5WlhSMWNtNGdkSGx3WlhNQWJtOXVMV1Z1ZEhKNUlIQnZhVzUwSUdaMWJtTjBhVzl1SUhKbGRIVnliaUIwZVhCbGN3QkRiMjF3YjI1bGJuUWdaR1ZqYjNKaGRHbHZiaUIyWVd4MVpTQnRkWE4wSUc1dmRDQmlaU0F4SUc5eUlETWdabTl5SURZMExXSnBkQ0JrWVhSaElIUjVjR1Z6QUdsdWRHVnljRzlzWVhScGIyNGdkSGx3WlNCdGRYTjBJR0psSUNkbWJHRjBKeUJtYjNJZ2FXNTBaV2R5WVd3Z2RYTmxjaTFrWldacGJtVmtJRWxQSUhSNWNHVnpBR0YwYjIxcFl5QnZibXg1SUhOMWNIQnZjblJ6SUdrek1pQnZjaUIxTXpJZ2RIbHdaWE1BUjJWMFUzUnlkV04wVFdWdFltVnlWSGx3WlhNQVFXNWhiSGw2WlZSNWNHVnpBRkJoY21GdFpYUmxjaUJVZVhCbGN3QlZibVJsY214NWFXNW5JRlI1Y0dWekFGTlFWbDlKVGxSRlRGOXBiMTl3YVhCbGN3QlRVRlpmU1U1VVJVeGZZbXh2WTJ0cGJtZGZjR2x3WlhNQVVHbHdaWE1BU1hOdmJHbHVaWE1BU1c1d2RYUk1hVzVsY3dBcElHRndjR1ZoY25NZ2JYVnNkR2x3YkdVZ2RHbHRaWE1BUTI5dWMzUnlkV04wVG1GdFpYTUFUbVYwWldGelpTQkhZVzFsY3dCdmNHTnZaR1VnUFQwZ2MzQjJPanBQY0RvNlQzQkpiV0ZuWlZGMVpYSjVVMkZ0Y0d4bGN3QldZV3hwWkdGMFpVbHRZV2RsVVhWbGNubE1aWFpsYkhOUGNsTmhiWEJzWlhNQWRHVjRkSFZ5WlU1MWJWTmhiWEJzWlhNQVZISnBZVzVuYkdWekFFbHVaR1Y0SUdOaGJpQnZibXg1SUdKbElHRndjR3hwWldRZ2RHOGdSbkpoWjIxbGJuUWdiM1YwY0hWMElIWmhjbWxoWW14bGN3QlBjRVZ1ZEhKNVVHOXBiblFnYVc1MFpYSm1ZV05sY3lCemFHOTFiR1FnYjI1c2VTQnNhWE4wSUdkc2IySmhiQ0IyWVhKcFlXSnNaWE1BUUhkdmNtdG5jbTkxY0Y5emFYcGxJR2x6SUc5dWJIa2dkbUZzYVdRZ1ptOXlJR052YlhCMWRHVWdjM1JoWjJWekFIZG9aVzRnWTJGc1kzVnNZWFJwYm1jZ1pHVm5jbVZsY3dCRVpXZHlaV1Z6QUVsdFlXZGxJRTl3WlhKaGJtUWdSM0poWkNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dSWGh3YkdsamFYUk1iMlFnYjNCamIyUmxjd0JKYldGblpTQlBjR1Z5WVc1a0lFSnBZWE1nWTJGdUlHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lFbHRjR3hwWTJsMFRHOWtJRzl3WTI5a1pYTUFVM1J5ZFdOMGRYSmxJRzFsYldKbGNuTWdiV0Y1SUc1dmRDQmlaU0J6Wld4bUlISmxabVZ5Wlc1alpYTUFUM1YwY0hWMFZtVnlkR2xqWlhNQVoyeGZVR0YwWTJoV1pYSjBhV05sY3dCamRYTjBiMjBnYldGMGNtbDRJSE4wY21sa1pYTWdibTkwSUdOMWNuSmxiblJzZVNCemRYQndiM0owWldRZ2IyNGdZWEp5WVhrZ2IyWWdiV0YwY21salpYTUFVMUJXWDBsT1ZFVk1YMlp3WjJGZllYSm5kVzFsYm5SZmFXNTBaWEptWVdObGN3QnZMbTltWm5ObGRDQXJJRzh1Ym5WdFgzZHZjbVJ6SUR3OUlHbHVjM1JmTG01MWJWOTNiM0prY3dCZkxuZHZjbVJmYVc1a1pYZ2dQVDBnWHk1dWRXMWZkMjl5WkhNQVh5NTNiM0prWDJsdVpHVjRJRHdnWHk1dWRXMWZkMjl5WkhNQUlIUnZkR0ZzSUhkdmNtUnpBR052YjNKa2N3QWdiM1YwSUc5bUlHSnZkVzVrY3dCdmNHVnlZVzVrWDJsdVpHVjRJRHdnYVc1emRDNXVkVzFmYjNCbGNtRnVaSE1BYVc1MllXeHBaQ0JoWTJObGMzTWdZMmhoYVc0NklHaGhjeUJ1YnlCcGJuQjFkQ0J2Y0dWeVlXNWtjd0FnYVc1emRISjFZM1JwYjI0Z1kyRnVJRzl1YkhrZ2FHRjJaU0F5SUdGa1pHbDBhVzl1WVd3Z2IzQmxjbUZ1WkhNQVZtRnNhV1JoZEdWSmJXRm5aVTl3WlhKaGJtUnpBRTFsY21kbElFSnNiMk5ySUdGdVpDQkRiMjUwYVc1MVpTQlVZWEpuWlhRZ2JYVnpkQ0JpWlNCa2FXWm1aWEpsYm5RZ2FXUnpBRkYxWVdSekFGWnZiR0YwYVd4bElHMWhjMnNnYzJWMGRHbHVaeUJ0ZFhOMElHMWhkR05vSUdadmNpQkZjWFZoYkNCaGJtUWdWVzVsY1hWaGJDQnRaVzF2Y25rZ2MyVnRZVzUwYVdOekFFZGxibVZ5YVdOUWRISk5aVzFUWlcxaGJuUnBZM01BT2lCTllXdGxRWFpoYVd4aFlteGxTMGhTSUUxbGJXOXllU0JUWlcxaGJuUnBZM01nWVd4emJ5QnlaWEYxYVhKbGN5QmxhWFJvWlhJZ1VtVnNaV0Z6WlNCdmNpQkJZM0YxYVhKbFVtVnNaV0Z6WlNCTlpXMXZjbmtnVTJWdFlXNTBhV056QURvZ1RXRnJaVlpwYzJsaWJHVkxTRklnVFdWdGIzSjVJRk5sYldGdWRHbGpjeUJoYkhOdklISmxjWFZwY21WeklHVnBkR2hsY2lCQlkzRjFhWEpsSUc5eUlFRmpjWFZwY21WU1pXeGxZWE5sSUUxbGJXOXllU0JUWlcxaGJuUnBZM01BU1c1ME5qUkJkRzl0YVdOekFGUmhhV05vYVNCSGNtRndhR2xqY3dCbVlXSnpBSFZmWVdKekFITmZZV0p6QUZOQlluTUFSa0ZpY3dCaGJHbGhjd0JPYjBGc2FXRnpBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2tGc2FXRnpBSFJwYm5RNk9tRnpkRG82UVd4cFlYTUFZbWxoY3dCMFpYaDBkWEpsVTJGdGNHeGxRbWxoY3dCSFpYUlBjR1Z5WVc1a1FYTUFhR0ZzWmw5d2IzZHlBRzVoZEdsMlpWOXdiM2R5QUZOUVZsOU9WbDl5WVhsZmRISmhZMmx1WjE5dGIzUnBiMjVmWW14MWNnQkdkVzVqVUdGeVlXMUJkSFJ5QUhOMGNtbHVaMTkyYVdWM09qcHpkV0p6ZEhJQWMzSmpJR2RzYjJKaGJDQmtaV05zWVhKaGRHbHZiaUIzWVhNZ2JuVnNiSEIwY2dCU1pYTnZiSFpsY2pvNlRXRnlheWdwSUdOaGJHeGxaQ0IzYVhSb0lHNTFiR3h3ZEhJQVpHbGhaMjV2YzNScFl5QW1KaUFxWkdsaFoyNXZjM1JwWXlBOVBTQnVkV3hzY0hSeUFHRnpjMlZ5ZEdsdmJpQm1ZV2xzWldRNklHSnNiMk5yWHlBOVBTQnVkV3hzY0hSeUFHbHVkRjkwZVhCbElDRTlJRzUxYkd4d2RISUFkSGx3WlNncExUNUJjMGx1ZEdWblpYSW9LU0FoUFNCdWRXeHNjSFJ5QUdOdmJuTjBjblZqZEY5d2RISUFSMlZ1WlhKcFkwTmhjM1JVYjFCMGNnQkRiMjUyWlhKMFZWUnZVSFJ5QUY5MGIxOWhjbklBYzNSeWFXUmxaRjloY25JQVVsUkJjbklBUVhCeUFDQmpZVzVrYVdSaGRHVWdZMjl1YzNSeWRXTjBiM0lBZEdsdWREbzZjMlZ0T2pwV1lXeDFaVU52Ym5OMGNuVmpkRzl5QUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVTJoMVptWnNaU0JOWVhOcklIUnZJR0psSUdGdUlHbHVkQ0IyWldOMGIzSUFVbUY1SUVScGNtVmpkR2x2YmlCdGRYTjBJR0psSUdFZ016SXRZbWwwSUdac2IyRjBJRE10WTI5dGNHOXVaVzUwSUhabFkzUnZjZ0JTWVhrZ1QzSnBaMmx1SUcxMWMzUWdZbVVnWVNBek1pMWlhWFFnWm14dllYUWdNeTFqYjIxd2IyNWxiblFnZG1WamRHOXlBRU52YlhCdmJtVnVkQ0JrWldOdmNtRjBhVzl1SUc5dWJIa2dZV3hzYjNkbFpDQnZiaUEyTkMxaWFYUWdjMk5oYkdGeUlHRnVaQ0F5TFdOdmJYQnZibVZ1ZENCMlpXTjBiM0lBWlhod1pXTjBaV1FnUkdGMFlTQjBieUJpWlNCaElETXlJRzl5SURZMExXSnBkQ0JtYkc5aGRDQjJaV04wYjNJQVpYaHdaV04wWldRZ1JHRjBZU0IwYnlCaVpTQmhiaUJwYm5RZ2IzSWdabXh2WVhRZ2RtVmpkRzl5QUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnV0NCMGJ5QmlaU0JoYmlCcGJuUWdiM0lnWm14dllYUWdkbVZqZEc5eUFHVjRjR1ZqZEdWa0lIUm9aU0JsZUhCdmJtVnVkQ0IwYnlCaVpTQmhJRE15TFdKcGRDQnBiblFnYzJOaGJHRnlJRzl5SUhabFkzUnZjZ0JsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRU1nZEc4Z1ltVWdZVzRnYVc1MElITmpZV3hoY2lCdmNpQjJaV04wYjNJQVJYaHdaV04wWldRZ1EyOXZjbVJwYm1GMFpTQjBieUJpWlNCcGJuUWdjMk5oYkdGeUlHOXlJSFpsWTNSdmNnQkZlSEJsWTNSbFpDQkRiMjl5WkdsdVlYUmxJSFJ2SUdKbElHbHVkQ0J2Y2lCbWJHOWhkQ0J6WTJGc1lYSWdiM0lnZG1WamRHOXlBR1Y0Y0dWamRHVmtJRkIwY2lCa1lYUmhJSFI1Y0dVZ2RHOGdZbVVnYVc1MElHOXlJR1pzYjJGMElITmpZV3hoY2lCdmNpQjJaV04wYjNJQVJYaHdaV04wWldRZ1EyOXZjbVJwYm1GMFpTQjBieUJpWlNCbWJHOWhkQ0J6WTJGc1lYSWdiM0lnZG1WamRHOXlBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdXQ0IwYnlCaVpTQmhJR1pzYjJGMElITmpZV3hoY2lCdmNpQjJaV04wYjNJQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUUlIUnZJR0psSUdFZ1pteHZZWFFnYzJOaGJHRnlJRzl5SUhabFkzUnZjZ0JGZUhCbFkzUmxaQ0JEYjI5eVpHbHVZWFJsSUhSdklHSmxJR2x1ZEdWblpYSWdjMk5oYkdGeUlHOXlJSFpsWTNSdmNnQWdkR2hoZENCcGN5QnViM1FnWVNCelkyRnNZWElnYjNJZ2RtVmpkRzl5QUhSdklIUm9aU0J6YVhwbElHOW1JRkpsYzNWc2RDQlVlWEJsSUhabFkzUnZjZ0JGZUhCbFkzUmxaQ0IyWldOMGIzSUFZMkZ6WlNCelpXeGxZM1J2Y2dCMGFXNTBPanBoYzNRNk9rTmhjMlZUWld4bFkzUnZjZ0IwYVc1ME9qcHpaVzA2T2tOaGMyVlRaV3hsWTNSdmNnQk5ZWFJ5YVhoVWFXMWxjMVpsWTNSdmNnQkZlSEJsWTNSbFpDQldaV04wYjNJZ2RIbHdaU0IwYnlCaVpTQlBjRlI1Y0dWV1pXTjBiM0lBUlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnVDNCVWVYQmxWbVZqZEc5eUFFUmxZblZuVkhsd1pWWmxZM1J2Y2dCMGFXNTBPanB5WldGa1pYSTZPbk53YVhKMk9qcFdaV04wYjNJQWRHbHVkRG82ZEhsd1pUbzZWbVZqZEc5eUFDQmpZVzVrYVdSaGRHVWdiM0JsY21GMGIzSUFJR2hoY3lCdWJ5QjBaWEp0YVc1aGRHOXlBRVJsWW5WblRHVjRhV05oYkVKc2IyTnJSR2x6WTNKcGJXbHVZWFJ2Y2dCWE0wTWdWMlZpUjFCVklFZHliM1Z3SUZkSVRGTk1JRk5vWVdSbGNpQlVjbUZ1YzJ4aGRHOXlBRmhsYm1saElGaGxibWxoSUVWdGRXeGhkRzl5SUUxcFkzSnZZMjlrWlNCVWNtRnVjMnhoZEc5eUFGZ3RURVZIUlU1RUlFMWxjMkV0U1ZJdlUxQkpVaTFXSUZSeVlXNXpiR0YwYjNJQVMyaHliMjV2Y3lCTVRGWk5MMU5RU1ZJdFZpQlVjbUZ1YzJ4aGRHOXlBR2x1ZEdWeWJtRnNJR052YlhCcGJHVnlJR1Z5Y205eUFHWnNiMjl5QUVac2IyOXlBRkp2ZDAxaGFtOXlBRU52YkUxaGFtOXlBR1p2Y2dCSGNtOTFjRTV2YmxWdWFXWnZjbTFNYjJkcFkyRnNXRzl5QUVkeWIzVndUbTl1Vlc1cFptOXliVUpwZEhkcGMyVlliM0lBUjNKdmRYQk9iMjVWYm1sbWIzSnRVMmgxWm1ac1pWaHZjZ0JoZEc5dGFXTlliM0lBUVhSdmJXbGpXRzl5QUVsdWRHVnlibUZzUjJWMFJHVmpiM0poZEdsdmJuTkdiM0lBUlhod1pXTjBaV1FnVTJGdGNHeGxaQ0JVZVhCbElIUnZJR0psSUdWcGRHaGxjaUIyYjJsa0lHOXlBQ0IwYnlCaVpTQjFjMlZrSUc5dWJIa2dkMmwwYUNCSFRFTnZiWEIxZEdVc0lFMWxjMmhPVml3Z1ZHRnphMDVXTENCTlpYTm9SVmhVSUc5eUFDQjBieUJpWlNCMWMyVmtJRzl1YkhrZ2QybDBhQ0JXWlhKMFpYZ3NJRTFsYzJoT1Zpd2dWR0Z6YTA1V0lDd2dUV1Z6YUVWWVZDQnZjZ0JHYVc1aGJHbDZaWElBWTI5dWMzUWdhVzVwZEdsaGJHbDZaWElBZG1GeUlHUmxZMnhoY21GMGFXOXVJSEpsY1hWcGNtVnpJR0VnZEhsd1pTQnZjaUJwYm1sMGFXRnNhWHBsY2dCdmRtVnljbWxrWlNCa1pXTnNZWEpoZEdsdmJpQnlaWEYxYVhKbGN5QmhJSFI1Y0dVZ2IzSWdhVzVwZEdsaGJHbDZaWElBZG1GeUlHbHVhWFJwWVd4cGVtVnlBQ2RqYjI1emRDY2daR1ZqYkdGeVlYUnBiMjRnYlhWemRDQm9ZWFpsSUdGdUlHbHVhWFJwWVd4cGVtVnlBQ2RzWlhRbklHUmxZMnhoY21GMGFXOXVJRzExYzNRZ2FHRjJaU0JoYmlCcGJtbDBhV0ZzYVhwbGNnQnZkbVZ5Y21sa1pTQnBibWwwYVdGc2FYcGxjZ0JKYm1sMGFXRnNhWHBsY2dCSGIyOW5iR1VnVFV4SlVpQlRVRWxTTFZZZ1UyVnlhV0ZzYVhwbGNnQlRVRlpmUlZoVVgzTm9ZV1JsY2w5MmFXVjNjRzl5ZEY5cGJtUmxlRjlzWVhsbGNnQlRhR0ZrWlhKV2FXVjNjRzl5ZEVsdVpHVjRUR0Y1WlhKRldGUWdiM0lnVTJoaFpHVnlUR0Y1WlhJQVoyeGZUR0Y1WlhJQVoyeGZWR1Z6YzB4bGRtVnNUM1YwWlhJQVFYUnZiV2xqUTI5MWJuUmxjZ0FnZG1saElIQnZhVzUwWlhJQVVtRjVJRkYxWlhKNUlHMTFjM1FnWW1VZ1lTQndiMmx1ZEdWeUFFaHBkQ0JQWW1wbFkzUWdiWFZ6ZENCaVpTQmhJSEJ2YVc1MFpYSUFUM0JsY21GdVpDQjBlWEJsSUcxMWMzUWdZbVVnWVNCd2IybHVkR1Z5QUdWNGNHVmpkR1ZrSUVsdWRHVnljRzlzWVc1MElIUnZJR0psSUdFZ2NHOXBiblJsY2dCbGVIQmxZM1JsWkNCdmNHVnlZVzVrSUVadmNtMWhkQ0IwYnlCaVpTQmhJSEJ2YVc1MFpYSUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQlFkSElnZEc4Z1ltVWdZU0J3YjJsdWRHVnlBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdSWGh3SUhSdklHSmxJR0VnY0c5cGJuUmxjZ0JsZUhCbFkzUmxaQ0IwYUdVZ2JHRnpkQ0J2Y0dWeVlXNWtJSFJ2SUdKbElHRWdjRzlwYm5SbGNnQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGQWdkRzhnWW1VZ1lTQndiMmx1ZEdWeUFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1NTQjBieUJpWlNCaElIQnZhVzUwWlhJQVVtVnpkSEpwWTNSUWIybHVkR1Z5QUVac1lXZFBZbXBsWTNSUWIybHVkR1Z5QUVsdFlXZGxJRVJwYlNCVGRXSndZWE56UkdGMFlTQmpZVzV1YjNRZ1ltVWdkWE5sWkNCM2FYUm9JRTl3U1cxaFoyVlVaWGhsYkZCdmFXNTBaWElBVG05dVVISnBkbUYwWlZCdmFXNTBaWElBT2lCbGVIQmxZM1JsWkNCUWIybHVkR1Z5SUhSdklHSmxJRzltSUhSNWNHVWdUM0JVZVhCbFVHOXBiblJsY2dCRmVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCUGNGUjVjR1ZRYjJsdWRHVnlBRVY0Y0dWamRHVmtJRWx0WVdkbElIUnZJR0psSUU5d1ZIbHdaVkJ2YVc1MFpYSUFSR1ZpZFdkVWVYQmxVRzlwYm5SbGNnQlVlWEJsUm05eWQyRnlaRkJ2YVc1MFpYSUFRV3hwWVhObFpGQnZhVzUwWlhJQVIyVnVaWEpwWTFCdmFXNTBaWElBZEdsdWREbzZjbVZoWkdWeU9qcHpjR2x5ZGpvNlVHOXBiblJsY2dCMGFXNTBPanAwZVhCbE9qcFFiMmx1ZEdWeUFHTmxiblJsY2dCRWNtRm5iMjVLYjJ0bGNpQlRhR0ZrWlhKWGNtbDBaWElBYm1WNGRHRm1kR1Z5QUZOUVZsOUJUVVJmYzJoaFpHVnlYMlY0Y0d4cFkybDBYM1psY25SbGVGOXdZWEpoYldWMFpYSUFaR2x6WVdKc1pWOTJZV3hwWkdGMGFXOXVYMTlsYm5SeWVWOXdiMmx1ZEY5d1lYSmhiV1YwWlhJQVpHbHpZV0pzWlY5MllXeHBaR0YwYVc5dVgxOW1kVzVqZEdsdmJsOXdZWEpoYldWMFpYSUFZMkZ1Ym05MElHMXZaR2xtZVNCbWRXNWpkR2x2YmlCd1lYSmhiV1YwWlhJQWFXNTJZV3hwWkNCb1lXNWtiR1VnYjJKcVpXTjBJSEJoYzNObFpDQmhjeUJtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElBSUc5dUlIQmhjbUZ0WlhSbGNnQm1iR0YwSUdsdWRHVnljRzlzWVhScGIyNGdZWFIwY21saWRYUmxJRzExYzNRZ2JtOTBJR2hoZG1VZ1lTQnpZVzF3YkdsdVp5QndZWEpoYldWMFpYSUFkR1Y0ZEhWeVpTQmlkV2xzZEdsdUlIZHBkR2h2ZFhRZ2RHVjRkSFZ5WlNCd1lYSmhiV1YwWlhJQVNXMWhaMlVnVDNCbGNtRnVaQ0JUWVcxd2JHVWdjbVZ4ZFdseVpYTWdibTl1TFhwbGNtOGdKMDFUSnlCd1lYSmhiV1YwWlhJQVVtVm5hWE4wWlhKR2RXNWpkR2x2YmxCaGNtRnRaWFJsY2dCbGVIQmxZM1JsWkNCdmNHVnlZVzVrSUZaaGNtbGhZbXhsSUcxMWMzUWdZbVVnWVNCeVpYTjFiSFFnYVdRZ2IyWWdUM0JXWVhKcFlXSnNaU0J2Y2lCUGNFWjFibU4wYVc5dVVHRnlZVzFsZEdWeUFFUmxZblZuVkhsd1pWUmxiWEJzWVhSbFZHVnRjR3hoZEdWUVlYSmhiV1YwWlhJQVJHVmlkV2RVZVhCbFZHVnRjR3hoZEdWUVlYSmhiV1YwWlhJQWRHbHVkRG82WVhOME9qcFFZWEpoYldWMFpYSUFkR2x1ZERvNmMyVnRPanBRWVhKaGJXVjBaWElBYVc1MllXeHBaQ0IyWldOMGIzSWdjM2RwZW5wc1pTQmphR0Z5WVdOMFpYSUFJSGRwZEdnZ2RIZHZJRzFsYlc5eWVTQmhZMk5sYzNNZ2IzQmxjbUZ1WkhNZ2NtVnhkV2x5WlhNZ1UxQkpVaTFXSURFdU5DQnZjaUJzWVhSbGNnQk1aWE56VDNKSGNtVmhkR1Z5QUVSbGNIUm9SM0psWVhSbGNnQjBhVzUwT2pwelpXMDZPbFpoY21saFlteGxWWE5sY2dCV1lXeHBaR0YwWlVZek1rRnlja2hsYkhCbGNnQm5iRjlVWlhOelRHVjJaV3hKYm01bGNnQlZjMlZFYVdGbmJtOXpkR2xqUVhOTlpYTnpZV2RsUTI5dWMzVnRaWElBWTI5dGNHRnlhWE52Ymw5ellXMXdiR1Z5QUVGeVozVnRaVzUwVTJGdGNHeGxjZ0JEYjI1emRHRnVkRk5oYlhCc1pYSUFUR2wwWlhKaGJGTmhiWEJzWlhJQVJYaHdaV04wWldRZ1UyRnRjR3hsY2lCMGJ5QmlaU0J2WmlCMGVYQmxJRTl3Vkhsd1pWTmhiWEJzWlhJQWRHbHVkRG82Y21WaFpHVnlPanB6Y0dseWRqbzZVMkZ0Y0d4bGNnQjBhVzUwT2pwMGVYQmxPanBUWVcxd2JHVnlBRWR2YjJkc1pTQlVhVzUwSUVOdmJYQnBiR1Z5QUZSbGJHeDFjMmx0SUVOc1lYa2dVMmhoWkdWeUlFTnZiWEJwYkdWeUFFNWxkR1ZoYzJVZ1IyRnRaWE1nVFdWemMybGhhQ0JUYUdGa1pYSWdRMjl0Y0dsc1pYSUFUV2xyYTI5emIyWjBJRkJ5YjJSMVkzUnBiMjV6SUUxVFVDQlRhR0ZrWlhJZ1EyOXRjR2xzWlhJQVIyOXZaMnhsSUVGT1IweEZJRk5vWVdSbGNpQkRiMjF3YVd4bGNnQlhhVzVsSUZaTFJETkVJRk5vWVdSbGNpQkRiMjF3YVd4bGNnQkxhSEp2Ym05eklGTlFTVkl0VmlCVWIyOXNjeUJCYzNObGJXSnNaWElBUlc1eGRXVjFaVTFoY210bGNnQkVjbUZuYjI1S2IydGxjZ0JMYUhKdmJtOXpJRk5RU1ZJdFZpQlViMjlzY3lCTWFXNXJaWElBVTFCV1gwbE9WRVZNWDNOd2JHbDBYMkpoY25KcFpYSUFibUZ0WldSZlltRnljbWxsY2dCcGJuWmhiR2xrSUc5eUlHMXBjM05wYm1jZ2IzQmxjbUZ1WkhNZ1ptOXlJR052Ym5SeWIyd2dZbUZ5Y21sbGNnQk5aVzF2Y25sQ1lYSnlhV1Z5QUhkdmNtdG5jbTkxY0VKaGNuSnBaWElBUTI5dWRISnZiRUpoY25KcFpYSUFjM1J2Y21GblpVSmhjbkpwWlhJQVRXVnRiM0o1VG1GdFpXUkNZWEp5YVdWeUFEb2daWGh3WldOMFpXUWdUbUZ0WldRZ1FtRnljbWxsY2lCMGJ5QmlaU0J2WmlCMGVYQmxJRTl3Vkhsd1pVNWhiV1ZrUW1GeWNtbGxjZ0E2SUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUU5d1ZIbHdaVTVoYldWa1FtRnljbWxsY2dBZ2IzSWdaV0Z5YkdsbGNnQnBaR1Z1ZEdsbWFXVnlBRVJsWW5WblFuVnBiR1JKWkdWdWRHbG1hV1Z5QUhWdWFHRnVaR3hsWkNCU1pYTnZiSFpsWkVsa1pXNTBhV1pwWlhJQWRHbHVkRG82WVhOME9qcFVaVzF3YkdGMFpXUkpaR1Z1ZEdsbWFXVnlBSFJwYm5RNk9tRnpkRG82U1dSbGJuUnBabWxsY2dCaFkyTmxjM01nY1hWaGJHbG1hV1Z5QUU5d1pXNURUQzVFWldKMVowbHVabTh1TVRBd0lHUmxZblZuSUhSNWNHVWdjWFZoYkdsbWFXVnlBRVJsWW5WblZIbHdaVkYxWVd4cFptbGxjZ0JKYmlCMGFHVWdUM0JsYmtOTUlHVnVkbWx5YjI1dFpXNTBMQ0IwYUdVZ2IzQjBhVzl1WVd3Z1FXTmpaWE56SUZGMVlXeHBabWxsY2dCVWVYQmxJRkYxWVd4cFptbGxjZ0JKYldGblpTQlBjR1Z5WVc1a2N5QlBabVp6WlhRc0lFTnZibk4wVDJabWMyVjBMQ0JEYjI1emRFOW1abk5sZEhNc0lFOW1abk5sZEhNZ1kyRnVibTkwSUdKbElIVnpaV1FnZEc5blpYUm9aWElBYjNCamIyUmxJRDA5SUhOd2RqbzZUM0E2T2s5d1NXMWhaMlZFY21WbVIyRjBhR1Z5SUh4OElHOXdZMjlrWlNBOVBTQnpjSFk2T2s5d09qcFBjRWx0WVdkbFUzQmhjbk5sUkhKbFprZGhkR2hsY2dCSmJXRm5aU0JQY0dWeVlXNWtJRU52Ym5OMFQyWm1jMlYwY3lCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dUM0JKYldGblpVZGhkR2hsY2lCaGJtUWdUM0JKYldGblpVUnlaV1pIWVhSb1pYSUFTVzFoWjJWVGNHRnljMlZIWVhSb1pYSUFkR1Y0ZEhWeVpVZGhkR2hsY2dCV1lXeHBaR0YwWlVsdFlXZGxSMkYwYUdWeUFHVjRjR1ZqZEdWa0lGTmhiWEJzWlNCMGJ5QmlaU0F6TWkxaWFYUWdhVzUwWldkbGNnQmxlSEJsWTNSbFpDQnBibVJsZUNCdGRYTjBJR0psSUhOallXeGhjaUJwYm5SbFoyVnlBQ0JwY3lCdWIzUWdZU0J6WTJGc1lYSWdhVzUwWldkbGNnQkFZV3hwWjI0Z2RtRnNkV1VnYlhWemRDQmlaU0JoSUhCdmMybDBhWFpsTENCd2IzZGxjaTF2WmkxMGQyOGdhVzUwWldkbGNnQndiM056YVdKc2VTQnRkV3gwYVMxM2IzSmtJR3hwZEdWeVlXd2dhVzUwWldkbGNnQkFjMmw2WlNCdGRYTjBJR0psSUdFZ2NHOXphWFJwZG1VZ2FXNTBaV2RsY2dCRmVIQmxZM1JsWkNCV1lXeDFaU0IwYnlCaVpTQmhJSFpsWTNSdmNpQnZaaUIwZDI4Z1kyOXRjRzl1Wlc1MGN5QnZaaUIxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRzl5SURZMFltbDBJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSUFVR2w0Wld4RFpXNTBaWEpKYm5SbFoyVnlBSFJwYm5RNk9uUnlZVzV6Wm05eWJUbzZUV0Z1WVdkbGNnQlRVRlpmUlZoVVgzQm9lWE5wWTJGc1gzTjBiM0poWjJWZlluVm1abVZ5QUZOUVZsOUxTRkpmY0doNWMybGpZV3hmYzNSdmNtRm5aVjlpZFdabVpYSUFkVzVwWm05eWJTQmlkV1ptWlhJQWIzSWdjM1J2Y21GblpTQmlkV1ptWlhJQVEyOTFiblJsY2tKMVptWmxjZ0JCY21kMWJXVnVkRlZ1YVdadmNtMVVaWGhsYkVKMVptWmxjZ0JCY21kMWJXVnVkRk4wYjNKaFoyVlVaWGhsYkVKMVptWmxjZ0JCY21kMWJXVnVkRk4wYjNKaFoyVkNkV1ptWlhJQVZtRnlhV0ZpYkdWUWIybHVkR1Z5Y3lCdmNpQldZWEpwWVdKc1pWQnZhVzUwWlhKelUzUnZjbUZuWlVKMVptWmxjZ0JRY205bmNtRnRVMk52Y0dWV1lYSnBZV0pzWlhOVGRHOXlZV2RsUW5WbVptVnlBRkJ5YVc1MFprSjFabVpsY2xOMGIzSmhaMlZDZFdabVpYSUFVR2g1YzJsallXeFRkRzl5WVdkbFFuVm1abVZ5QUVGeVozVnRaVzUwVUc5a1UzUnZjbUZuWlVKMVptWmxjZ0JEYjI1emRHRnVkRVJoZEdGVGRHOXlZV2RsUW5WbVptVnlBRWx0WVdkbFFuVm1abVZ5QUZOaGJYQnNaV1JDZFdabVpYSUFXR1ppUW5WbVptVnlBRVpzYjJGME1UWkNkV1ptWlhJQVUzUnZjbUZuWlNCQ2RXWm1aWElBU1c0Z1UxQkpVaTFXSURFdU5pQnZjaUJzWVhSbGNpd2djMkZ0Y0d4bFpDQnBiV0ZuWlNCa2FXMWxibk5wYjI0Z2JYVnpkQ0J1YjNRZ1ltVWdRblZtWm1WeUFGTlFWbDlPVmw5emFHRmtaWEpmYVc1MmIyTmhkR2x2Ymw5eVpXOXlaR1Z5QUdsdFlXZGxJR05vWVc1dVpXd2diM0prWlhJQWIyWm1jMlYwY3lCdGRYTjBJR0psSUdsdUlHRnpZMlZ1WkdsdVp5QnZjbVJsY2dCSmJXRm5aVkYxWlhKNVQzSmtaWElBY21WdFlXbHVaR1Z5QUhScGJuUTZPbkpsWVdSbGNqbzZjM0JwY25ZNk9reHZiM0JUZEdGMFpXMWxiblJDZFdsc1pHVnlBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2xOM2FYUmphRk4wWVhSbGJXVnVkRUoxYVd4a1pYSUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82U1daVGRHRjBaVzFsYm5SQ2RXbHNaR1Z5QUhScGJuUTZPbkpsWVdSbGNqbzZjM0JwY25ZNk9sTjBZWFJsYldWdWRFSjFhV3hrWlhJQVUxQldYMEZOUkY5blkyNWZjMmhoWkdWeUFGTlFWbDlPVmw5dFpYTm9YM05vWVdSbGNnQlRVRlpmUlZoVVgyMWxjMmhmYzJoaFpHVnlBRG9nVFdWdGIzSjVJRk5sYldGdWRHbGpjeUJWYm1sbWIzSnRUV1Z0YjNKNUlISmxjWFZwY21WeklHTmhjR0ZpYVd4cGRIa2dVMmhoWkdWeUFDQnBjeUJoYkhKbFlXUjVJR0VnYldWeVoyVWdZbXh2WTJzZ1ptOXlJR0Z1YjNSb1pYSWdhR1ZoWkdWeUFDQmpZVzV1YjNRZ1ltVWdZU0JzYjI5d0lHaGxZV1JsY2dCelpXeGxZM1JwYjI0Z2FHVmhaR1Z5QUVScGMyRnpjMlZ0WW14bFZHRnlaMlYwU0dWaFpHVnlBRTlqZEc5aVpYSUFaWGgwWlc1emFXOXVJR2x1YzNSeWRXTjBhVzl1SUc1MWJXSmxjZ0J3YjNOemFXSnNlU0J0ZFd4MGFTMTNiM0prSUd4cGRHVnlZV3dnYm5WdFltVnlBRUZ5WjA1MWJXSmxjZ0JPYjNabGJXSmxjZ0JUWlhCMFpXMWlaWElBWkdsellXSnNaVjkyWVd4cFpHRjBhVzl1WDE5cFoyNXZjbVZmYzNSeWRXTjBYMjFsYldKbGNnQmpiMjF3YjI1bGJuUnpJR0Z6SUhSb1pTQm1hWEp6ZENCdFpXMWlaWElBSnk0Z1EyOXVjMmxrWlhJZ2MyVjBkR2x1WnlCQVlXeHBaMjRvTVRZcElHOXVJSFJvYVhNZ2JXVnRZbVZ5QUNCallXNXViM1FnWW1VZ2RYTmxaQ0JoY3lCMGFHVWdkSGx3WlNCdlppQmhJSE4wY25WamRIVnlaU0J0WlcxaVpYSUFjM1J5ZFdOMGRYSmxjeUJ0ZFhOMElHaGhkbVVnWVhRZ2JHVmhjM1FnYjI1bElHMWxiV0psY2dCcGJuWmhiR2xrSUhabFkzUnZjaUJ6ZDJsNmVteGxJRzFsYldKbGNnQlNaWE4xYkhRZ1ZIbHdaU2R6SUhObFkyOXVaQ0J0WlcxaVpYSUFSR1ZqWlcxaVpYSUFkR2x1ZERvNllYTjBPanBUZEhKMVkzUk5aVzFpWlhJQWRHbHVkRG82YzJWdE9qcFRkSEoxWTNSTlpXMWlaWElBZEdsdWREbzZkSGx3WlRvNlUzUnlkV04wVFdWdFltVnlBRVJsWW5WblZIbHdaVkIwY2xSdlRXVnRZbVZ5QUVSbFluVm5WSGx3WlUxbGJXSmxjZ0JHYkdGblUzUmhkR2xqVFdWdFltVnlBRk5RVmw5TFNGSmZiR2x1YTI5dVkyVmZiMlJ5QUNCallXNXViM1FnWW1VZ2RYTmxaQ0JoY3lCMGFHVWdkSGx3WlNCdlppQmhJSFpoY2dCbGVIQmxZM1JsWkNCSmJuUmxjbk5sWTNScGIyNGdTVVFnZEc4Z1ltVWdZU0JqYjI1emRHRnVkQ0F6TWkxaWFYUWdhVzUwSUhOallXeGhjZ0JGZUhCbFkzUmxaQ0JEYjIxd2IyNWxiblFnZEc4Z1ltVWdNekl0WW1sMElHbHVkQ0J6WTJGc1lYSUFSMlZ2YldWMGNua2dTVzVrWlhnZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCcGJuUWdjMk5oYkdGeUFFMXBjM01nU1c1a1pYZ2diWFZ6ZENCaVpTQmhJRE15TFdKcGRDQnBiblFnYzJOaGJHRnlBRWhwYm5RZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCcGJuUWdjMk5oYkdGeUFFaHBkQ0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBVTBKVUlFOW1abk5sZENCdGRYTjBJR0psSUdFZ016SXRZbWwwSUdsdWRDQnpZMkZzWVhJQVltbDBjeUJ0ZFhOMElHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBVW1GNUlFWnNZV2R6SUcxMWMzUWdZbVVnWVNBek1pMWlhWFFnYVc1MElITmpZV3hoY2dCRGRXeHNJRzFoYzJzZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCcGJuUWdjMk5oYkdGeUFFTjFiR3dnVFdGemF5QnRkWE4wSUdKbElHRWdNekl0WW1sMElHbHVkQ0J6WTJGc1lYSUFVMEpVSUZOMGNtbGtaU0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBVUhKcGJXbDBhWFpsSUVsa0lHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ2FXNTBJSE5qWVd4aGNnQkpibk4wWVc1alpTQkpaQ0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JRSUhSdklHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBUlhod1pXTjBaV1FnU1c1a1pYZ2dkRzhnWW1VZ2FXNTBJSE5qWVd4aGNnQTZJR1Y0Y0dWamRHVmtJRk4wY21WaGJTQjBieUJpWlNCcGJuUWdjMk5oYkdGeUFFVjRjR1ZqZEdWa0lFeGxkbVZzSUc5bUlFUmxkR0ZwYkNCMGJ5QmlaU0JwYm5RZ2MyTmhiR0Z5QUVWNGNHVmpkR1ZrSUVsdFlXZGxJRTl3WlhKaGJtUWdVMkZ0Y0d4bElIUnZJR0psSUdsdWRDQnpZMkZzWVhJQVJYaHdaV04wWldRZ1VtVnphV1JsYm5RZ1EyOWtaU0IwYnlCaVpTQnBiblFnYzJOaGJHRnlBRk5DVkNCSmJtUmxlQ0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJSFZ1YzJsbmJtVmtJR2x1ZENCelkyRnNZWElBVm1WeWRHVjRJRU52ZFc1MElHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ2RXNXphV2R1WldRZ2FXNTBJSE5qWVd4aGNnQlFjbWx0YVhScGRtVWdRMjkxYm5RZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUWdjMk5oYkdGeUFGTkNWQ0J5WldOdmNtUWdiMlptYzJWMElHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ2RXNXphV2R1WldRZ2FXNTBJSE5qWVd4aGNnQlRRbFFnVDJabWMyVjBJRzExYzNRZ1ltVWdZU0F6TWkxaWFYUWdkVzV6YVdkdVpXUWdhVzUwSUhOallXeGhjZ0JUUWxRZ2NtVmpiM0prSUhOMGNtbGtaU0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJSFZ1YzJsbmJtVmtJR2x1ZENCelkyRnNZWElBVTBKVUlGTjBjbWxrWlNCdGRYTjBJR0psSUdFZ016SXRZbWwwSUhWdWMybG5ibVZrSUdsdWRDQnpZMkZzWVhJQVNHbDBJRXRwYm1RZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUWdjMk5oYkdGeUFFZHliM1Z3SUVOdmRXNTBJRm9nYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5RZ2MyTmhiR0Z5QUVkeWIzVndJRU52ZFc1MElGa2diWFZ6ZENCaVpTQmhJRE15TFdKcGRDQjFibk5wWjI1bFpDQnBiblFnYzJOaGJHRnlBRWR5YjNWd0lFTnZkVzUwSUZnZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUWdjMk5oYkdGeUFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1VDQmtZWFJoSUhSNWNHVWdkRzhnWW1VZ01UWXRZbWwwSUdac2IyRjBJSE5qWVd4aGNnQmxlSEJsWTNSbFpDQkVZWFJoSUhSdklHSmxJR0VnTXpJZ2IzSWdOalF0WW1sMElHWnNiMkYwSUhOallXeGhjZ0JsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRllnZEc4Z1ltVWdZU0EyTkMxaWFYUWdabXh2WVhRZ2MyTmhiR0Z5QUZKaGVTQlVUV0Y0SUcxMWMzUWdZbVVnWVNBek1pMWlhWFFnWm14dllYUWdjMk5oYkdGeUFGSmhlU0JVVFdsdUlHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ1pteHZZWFFnYzJOaGJHRnlBRWhwZENCVUlHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ1pteHZZWFFnYzJOaGJHRnlBRVY0Y0dWamRHVmtJRWx0WVdkbElFOXdaWEpoYm1RZ1FtbGhjeUIwYnlCaVpTQm1iRzloZENCelkyRnNZWElBUlhod1pXTjBaV1FnU1cxaFoyVWdUM0JsY21GdVpDQk5hVzVNYjJRZ2RHOGdZbVVnWm14dllYUWdjMk5oYkdGeUFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1JYUmhJSFJ2SUdKbElHRWdabXh2WVhRZ2MyTmhiR0Z5QUVWNGNHVmpkR1ZrSUZSbGVHVnNJSFJ2SUdKbElHbHVkQ0J2Y2lCbWJHOWhkQ0IyWldOMGIzSWdiM0lnYzJOaGJHRnlBQ0J6ZEdGMFpXMWxiblFnWTJGdUlHOXViSGtnWW1VZ1lYQndiR2xsWkNCMGJ5QmhiaUJwYm5SbFoyVnlJSE5qWVd4aGNnQlNaWE4xYkhRZ1ZIbHdaU0J0ZFhOMElHSmxJR0Z1SUdsdWRHVm5aWElnYzJOaGJHRnlBRVY0Y0dWamRHVmtJRk5oYlhCc1pTQjBieUJpWlNCcGJuUmxaMlZ5SUhOallXeGhjZ0JXWVd4MVpTQnZjR1Z5WVc1a0lHOW1JRTl3UVhOemRXMWxWSEoxWlV0SVVpQnRkWE4wSUdKbElHRWdZbTl2YkdWaGJpQnpZMkZzWVhJQVJYaHdaV04wWldRZ1ZtRnNkV1VnZEc4Z1ltVWdZU0IyWldOMGIzSWdiMllnWm05MWNpQmpiMjF3YjI1bGJuUnpJRzltSUdsdWRHVm5aWElnZEhsd1pTQnpZMkZzWVhJQVRXRjBjbWw0VkdsdFpYTlRZMkZzWVhJQVZtVmpkRzl5VkdsdFpYTlRZMkZzWVhJQVkyaGhjZ0JWYm5OcFoyNWxaRU5vWVhJQVUybG5ibVZrUTJoaGNnQnNhVzVsWVhJQVRHbHVaV0Z5QUVGMGIyMXBZMFpzWVdkRGJHVmhjZ0IwYVc1ME9qcGhjM1E2T2xaaGNnQk5ZWElBZG5OMGIzSmxYMmhoYkdadVgzSUFkbk4wYjNKbFlWOW9ZV3htYmw5eUFIWnpkRzl5WlY5b1lXeG1YM0lBYkdkaGJXMWhYM0lBUjNKdmRYQk9iMjVWYm1sbWIzSnRURzluYVdOaGJFOXlBRWR5YjNWd1RtOXVWVzVwWm05eWJVSnBkSGRwYzJWUGNnQmhkRzl0YVdOUGNnQkJkRzl0YVdOUGNnQm1jbVY0Y0FCR2NtVjRjQUJzWkdWNGNBQk1aR1Y0Y0FCb1lXeG1YMlY0Y0FCdVlYUnBkbVZmWlhod0FFVjRjQUJtZFc1amRHbHZiaXdnY0hKcGRtRjBaU0J2Y2lCM2IzSnJaM0p2ZFhBQVFYSm5kVzFsYm5SWGIzSnJaM0p2ZFhBQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUWRISWdjM1J2Y21GblpTQmpiR0Z6Y3lCMGJ5QmlaU0JEY205emMxZHZjbXRuY205MWNBQlRkV0puY205MWNITlFaWEpYYjNKclozSnZkWEFBT2lCRmVHVmpkWFJwYjI0Z2MyTnZjR1VnYVhNZ2JHbHRhWFJsWkNCMGJ5QlRkV0puY205MWNDQnZjaUJYYjNKclozSnZkWEFBUm5WdVkzUnBiMjRnYjNJZ1YyOXlhMmR5YjNWd0FGZHZjbXRuY205MWNDQmhibVFnVTNWaVozSnZkWEFBVTFCV1gwdElVbDlrWlhacFkyVmZaM0p2ZFhBQVFHZHliM1Z3QUVSbFkyOXlZWFJwYjI1SGNtOTFjQUJYWVdsMFYyOXlhMGR5YjNWd0FFUmxkbWxqWlVkeWIzVndBRmN6UXlCWFpXSkhVRlVnUjNKdmRYQUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNSb2FYSmtYM0JoY25SNUwzWjFiR3RoYmkxa1pYQnpMM053YVhKMkxYUnZiMnh6TDNOeVl5OXpiM1Z5WTJVdmRtRnNMM1poYkdsa1lYUmxYMk5oY0dGaWFXeHBkSGt1WTNCd0FDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzkwYUdseVpGOXdZWEowZVM5MmRXeHJZVzR0WkdWd2N5OXpjR2x5ZGkxMGIyOXNjeTl6Y21NdmMyOTFjbU5sTDNaaGJDOTJZV3hwWkdGMFpWOXRaVzF2Y25rdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwySnBibUZ5ZVM1amNIQUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNSb2FYSmtYM0JoY25SNUwzWjFiR3RoYmkxa1pYQnpMM053YVhKMkxYUnZiMnh6TDNOeVl5OXpiM1Z5WTJVdmJHbGljM0JwY25ZdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwzTndhWEoyWDNSaGNtZGxkRjlsYm5ZdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwzWmhiQzlqYjI1emRISjFZM1F1WTNCd0FDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzkwYUdseVpGOXdZWEowZVM5MmRXeHJZVzR0WkdWd2N5OXpjR2x5ZGkxMGIyOXNjeTl6Y21NdmMyOTFjbU5sTDI5d2RDOWpiMjV6ZEdGdWRITXVZM0J3QUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1poYkM5MllXeHBaR0YwWlY5a1pXTnZjbUYwYVc5dWN5NWpjSEFBTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzUm9hWEprWDNCaGNuUjVMM1oxYkd0aGJpMWtaWEJ6TDNOd2FYSjJMWFJ2YjJ4ekwzTnlZeTl6YjNWeVkyVXZkbUZzTDNaaGJHbGtZWFJsWDJWNGRHVnVjMmx2Ym5NdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwyVjRkR1Z1YzJsdmJuTXVZM0J3QUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1poYkM5MllXeHBaR0YwWlY5aWRXbHNkR2x1Y3k1amNIQUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNSb2FYSmtYM0JoY25SNUwzWjFiR3RoYmkxa1pYQnpMM053YVhKMkxYUnZiMnh6TDNOeVl5OXpiM1Z5WTJVdmRtRnNMM1poYkdsa1lYUmxYMnh2WjJsallXeHpMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkyWVd3dmRtRnNhV1JoZEdWZlkyOXRjRzl6YVhSbGN5NWpjSEFBTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzUm9hWEprWDNCaGNuUjVMM1oxYkd0aGJpMWtaWEJ6TDNOd2FYSjJMWFJ2YjJ4ekwzTnlZeTl6YjNWeVkyVXZiM0IwTDNSNWNHVnpMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkyWVd3dmRtRnNhV1JoZEdWZllYSnBkR2h0WlhScFkzTXVZM0J3QUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMMjVoYldWZmJXRndjR1Z5TG1Od2NBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5dmNIUXZaR1ZqYjNKaGRHbHZibDl0WVc1aFoyVnlMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzl2Y0hRdlpHVm1YM1Z6WlY5dFlXNWhaMlZ5TG1Od2NBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5dmNIUXZabVZoZEhWeVpWOXRZVzVoWjJWeUxtTndjQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmRHaHBjbVJmY0dGeWRIa3ZkblZzYTJGdUxXUmxjSE12YzNCcGNuWXRkRzl2YkhNdmMzSmpMM052ZFhKalpTOXZjSFF2ZEhsd1pWOXRZVzVoWjJWeUxtTndjQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmRHaHBjbVJmY0dGeWRIa3ZkblZzYTJGdUxXUmxjSE12YzNCcGNuWXRkRzl2YkhNdmMzSmpMM052ZFhKalpTOXZjSFF2YVhKZmJHOWhaR1Z5TG1Od2NBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5MllXd3ZkbUZzYVdSaGRHVmZhVzV6ZEhKMVkzUnBiMjR1WTNCd0FDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzkwYUdseVpGOXdZWEowZVM5MmRXeHJZVzR0WkdWd2N5OXpjR2x5ZGkxMGIyOXNjeTl6Y21NdmMyOTFjbU5sTDI5d2RDOXBibk4wY25WamRHbHZiaTVqY0hBQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2ZG1Gc0wybHVjM1J5ZFdOMGFXOXVMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkyWVd3dlpuVnVZM1JwYjI0dVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwzWmhiQzkyWVd4cFpHRjBaVjlqWm1jdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwzWmhiQzkyWVd4cFpHRjBhVzl1WDNOMFlYUmxMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkyWVd3dmRtRnNhV1JoZEdWZmRIbHdaUzVqY0hBQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2YjNCMEwyMXZaSFZzWlM1amNIQUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNSb2FYSmtYM0JoY25SNUwzWjFiR3RoYmkxa1pYQnpMM053YVhKMkxYUnZiMnh6TDNOeVl5OXpiM1Z5WTJVdlpHbHpZWE56WlcxaWJHVXVZM0J3QUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1poYkM5MllXeHBaR0YwWlY5cGJXRm5aUzVqY0hBQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2YjNCamIyUmxMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzl2Y0dWeVlXNWtMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzlrYVdGbmJtOXpkR2xqTG1Od2NBQk1hV1psZEdsdFpWTjBiM0FBWm05eWJHOXZjQUIzYUdsc1pXeHZiM0FBYVc1MFpYSnVZV3dnWlhKeWIzSTZJR0poWkNCamIyNXpkSEoxWTNRZ2JtVnpkR2x1Wnk0Z1EyOXVkR2x1ZFdVZ1lYSnZkVzVrSUhOdmJXVjBhR2x1WnlCdmRHaGxjaUIwYUdGdUlHbG1MQ0J6ZDJsMFkyZ3NJRzl5SUd4dmIzQUFZMjl1ZEdsdWRXVWdjM1JoZEdWdFpXNTBJRzExYzNRZ1ltVWdhVzRnWVNCc2IyOXdBRTV2Y0FCbVkyeGhiWEFBZFY5amJHRnRjQUJ6WDJOc1lXMXdBRlZEYkdGdGNBQlRRMnhoYlhBQVRrTnNZVzF3QUVaRGJHRnRjQUJQZFhSd2RYUk1hVzVsVTNSeWFYQUFUM1YwY0hWMFZISnBZVzVuYkdWVGRISnBjQUJvWVd4bVgzSmxZMmx3QUc1aGRHbDJaVjl5WldOcGNBQkJiR3h2ZDFKbFkybHdBR1p3QUhkb1pXNGdZMkZzWTNWc1lYUnBibWNnYzIxdmIzUm9jM1JsY0FCVGJXOXZkR2hUZEdWd0FGTmxjQUJIY205MWNFNXZibFZ1YVdadmNtMVJkV0ZrVTNkaGNBQk9iMVZ1YzJsbmJtVmtWM0poY0FCT2IxTnBaMjVsWkZkeVlYQUFTVzFoWjJWTmFYQnRZWEFBVTFCV1gwVllWRjl2Y0dGamFYUjVYMjFwWTNKdmJXRndBRWR5YjNWd1RtOXVWVzVwWm05eWJWTm9kV1ptYkdWVmNBQlRjR1ZqUTI5dWMzUmhiblJQY0FBcElHUnZaWE1nYm05MElHMWhkR05vSUhSb1pTQjBlWEJsSUhSb1lYUWdjbVZ6ZFd4MGN5Qm1jbTl0SUdsdVpHVjRhVzVuSUdsdWRHOGdkR2hsSUdOdmJYQnZjMmwwWlNBb1QzQUFLU0JrYjJWeklHNXZkQ0J0WVhSamFDQjBhR1VnZEhsd1pTQjBhR0YwSUhKbGMzVnNkSE1nWm5KdmJTQnBibVJsZUdsdVp5QnBiblJ2SUhSb1pTQkRiMjF3YjNOcGRHVWdLRTl3QUNCeVpYTjFiSFFnZEhsd1pTQW9UM0FBVW1WemRXeDBJSFI1Y0dVZ0tFOXdBRlJvWlNCUFltcGxZM1FnZEhsd1pTQW9UM0FBS1NCa2IyVnpJRzV2ZENCdFlYUmphQ0IwYUdVZ2RIbHdaU0IwYUdGMElISmxjM1ZzZEhNZ1puSnZiU0JwYm1SbGVHbHVaeUJwYm5SdklIUm9aU0JpWVhObElEeHBaRDRnS0U5d0FFbHVkbUZzYVdRZ1QzQmpiMlJsSUc1aGJXVWdKMDl3QUZKbGMzVnNkQ0E4YVdRK0lHWnliMjBnVDNCVFlXMXdiR1ZrU1cxaFoyVWdhVzV6ZEhKMVkzUnBiMjRnYlhWemRDQnViM1FnWVhCd1pXRnlJR0Z6SUc5d1pYSmhibVFnWm05eUlFOXdBQ0J2Y2lCUGNBQkZlSEJsWTNSbFpDQmhkQ0JzWldGemRDQnZibVVnYVc1a1pYZ2dkRzhnVDNBQVNXNTJZV3hwWkNCcGJuTjBjblZqZEdsdmJpQlBjQUJVYUdVZ2JuVnRZbVZ5SUc5bUlHbHVaR1Y0WlhNZ2FXNGdUM0FBVkdobElGSmxjM1ZzZENCVWVYQmxJRzExYzNRZ1ltVWdkR2hsSUhOaGJXVWdZWE1nUTI5dGNHOXphWFJsSUhSNWNHVWdhVzRnVDNBQVNXMWhaMlVnVDNCbGNtRnVaQ0JOWVd0bFZHVjRaV3hXYVhOcFlteGxTMGhTSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQlBjQUJKYldGblpTQlBjR1Z5WVc1a0lFMWhhMlZVWlhobGJFRjJZV2xzWVdKc1pVdElVaUJqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJSGRwZEdnZ1QzQUFSVzVrSUc5bUlHbHVjSFYwSUhKbFlXTm9aV1FnZDJocGJHVWdaR1ZqYjJScGJtY2dUM0FBVW1WemRXeDBJRHhwWkQ0Z1puSnZiU0JQY0ZOaGJYQnNaV1JKYldGblpTQnBibk4wY25WamRHbHZiaUJ0ZFhOMElHNXZkQ0JoY0hCbFlYSWdZWE1nYjNCbGNtRnVaSE1nYjJZZ1QzQUFVbVZ6ZFd4MElIUjVjR1VnWTJGdWJtOTBJR0psSUU5d0FDQlBjRlI1Y0dWV1pXTjBiM0l1SUVadmRXNWtJRTl3QUNCdGRYTjBJR0psSUU5d1ZIbHdaVkJ2YVc1MFpYSXVJRVp2ZFc1a0lFOXdBRWx1ZEdWeVptRmpaWE1nY0dGemMyVmtJSFJ2SUU5d1JXNTBjbmxRYjJsdWRDQnRkWE4wSUdKbElHOW1JSFI1Y0dVZ1QzQlVlWEJsVm1GeWFXRmliR1V1SUVadmRXNWtJRTl3QUVsdWRtRnNhV1FnZDI5eVpDQmpiM1Z1ZERvZ1QzQUFTVzFoWjJVZ1QzQmxjbUZ1WkNCTllXdGxWR1Y0Wld4V2FYTnBZbXhsUzBoU0lISmxjWFZwY21WeklFNXZibEJ5YVhaaGRHVlVaWGhsYkV0SVVpQnBjeUJoYkhOdklITndaV05wWm1sbFpEb2dUM0FBU1cxaFoyVWdUM0JsY21GdVpDQk5ZV3RsVkdWNFpXeEJkbUZwYkdGaWJHVkxTRklnY21WeGRXbHlaWE1nVG05dVVISnBkbUYwWlZSbGVHVnNTMGhTSUdseklHRnNjMjhnYzNCbFkybG1hV1ZrT2lCUGNBQnNiMmN4Y0FBbFNUb2xUVG9sVXlBbGNBQnlaVzF4ZFc4QVNYUmxjbUYwYVc5dVRYVnNkR2x3YkdVZ2JHOXZjQ0JqYjI1MGNtOXNJRzl3WlhKaGJtUWdiWFZ6ZENCaVpTQm5jbVZoZEdWeUlIUm9ZVzRnZW1WeWJ3QkVaVzV2Y20xR2JIVnphRlJ2V21WeWJ3QlRVRlpmU1U1VVJVeGZiV1ZrYVdGZllteHZZMnRmYVc4QVUxQldYMHRJVWw5dWIyNWZjMlZ0WVc1MGFXTmZhVzVtYndCclpYSnVaV3dnY0hKdlptbHNhVzVuSUdsdVptOEFRWEpuZFcxbGJuUkpibVp2QUVSbFluVm5TVzVtYndCRFlYQjBkWEpsUlhabGJuUlFjbTltYVd4cGJtZEpibVp2QUZCeWFXNTBaa2x1Wm04QVIyVjBUV0YwY21sNFZIbHdaVWx1Wm04QVIyVjBVRzlwYm5SbGNsUjVjR1ZKYm1adkFFZGxkRWx0WVdkbFZIbHdaVWx1Wm04QVpHOEFjRzkzYmdCMWJtdHViM2R1QUdSbFkyeGhjbUYwYVc5dVgzUjVjR1ZmSUQwOUlFWjFibU4wYVc5dVJHVmpiRG82YTBaMWJtTjBhVzl1UkdWamJGVnVhMjV2ZDI0QVJHbHRJRk4xWW5CaGMzTkVZWFJoSUhKbGNYVnBjbVZ6SUdadmNtMWhkQ0JWYm10dWIzZHVBRWR5YjNWd1RtOXVWVzVwWm05eWJWTm9kV1ptYkdWRWIzZHVBRk4xYmdCS2RXNEFjbTl2ZEc0QWNtVjBkWEp1QUZKbGRIVnliZ0J6WVcxd2JHVnlYMk52YlhCaGNtbHpiMjRBSUdOdmJYQmhjbWx6YjI0QVptMWhlRjlqYjIxdGIyNEFabTFwYmw5amIyMXRiMjRBWTI5dWMzUWdZWE56WlhKMGFXOXVBSE53ZGxSaGNtZGxkRVZ1ZGtSbGMyTnlhWEIwYVc5dUFITjBaRG82WlhoalpYQjBhVzl1QUhCdmMybDBhVzl1QUdkc1gxTmhiWEJzWlZCdmMybDBhVzl1QUdkc1gxQnZjMmwwYVc5dUFDQnlaWEYxYVhKbGN5QmhJSEJ5WlhacGIzVnpJR1JsWm1sdWFYUnBiMjRBYm04Z1pHVm1hVzVwZEdsdmJnQkdkVzVqZEdsdmJpQndZWEpoYldWMFpYSnpJRzExYzNRZ2IyNXNlU0JoY0hCbFlYSWdhVzF0WldScFlYUmxiSGtnWVdaMFpYSWdkR2hsSUdaMWJtTjBhVzl1SUdSbFptbHVhWFJwYjI0QVEyOXljblZ3ZENCcGJXRm5aU0IwZVhCbElHUmxabWx1YVhScGIyNEFWbUZzYVdSaGRHVlNZWGxVY21GamFXNW5RblZwYkhScGJuTkJkRVJsWm1sdWFYUnBiMjRBVm1Gc2FXUmhkR1ZDZFdsc2RFbHVjMEYwUkdWbWFXNXBkR2x2YmdCR2JHRm5TWE5FWldacGJtbDBhVzl1QUVSbFluVm5SblZ1WTNScGIyNUVaV1pwYm1sMGFXOXVBRkpsWTI5eVpFbG1WSGx3WlVSbFptbHVhWFJwYjI0QU9pQmxlSEJsWTNSbFpDQlRkSEpsWVcwZ2RHOGdZbVVnWTI5dWMzUmhiblFnYVc1emRISjFZM1JwYjI0QUlHTmhibTV2ZENCaGNIQmxZWElnWW1WbWIzSmxJSFJvWlNCdFpXMXZjbmtnYlc5a1pXd2dhVzV6ZEhKMVkzUnBiMjRBSjFSaGNtZGxkQ0JNWVdKbGJDY2diM0JsY21GdVpITWdabTl5SUU5d1UzZHBkR05vSUcxMWMzUWdZbVVnU1VSeklHOW1JR0Z1SUU5d1RHRmlaV3dnYVc1emRISjFZM1JwYjI0QVZHaGxJQ2RVY25WbElFeGhZbVZzSnlCdmNHVnlZVzVrSUdadmNpQlBjRUp5WVc1amFFTnZibVJwZEdsdmJtRnNJRzExYzNRZ1ltVWdkR2hsSUVsRUlHOW1JR0Z1SUU5d1RHRmlaV3dnYVc1emRISjFZM1JwYjI0QVZHaGxJQ2RHWVd4elpTQk1ZV0psYkNjZ2IzQmxjbUZ1WkNCbWIzSWdUM0JDY21GdVkyaERiMjVrYVhScGIyNWhiQ0J0ZFhOMElHSmxJSFJvWlNCSlJDQnZaaUJoYmlCUGNFeGhZbVZzSUdsdWMzUnlkV04wYVc5dUFDZFVZWEpuWlhRZ1RHRmlaV3duSUc5d1pYSmhibVJ6SUdadmNpQlBjRUp5WVc1amFDQnRkWE4wSUdKbElIUm9aU0JKUkNCdlppQmhiaUJQY0V4aFltVnNJR2x1YzNSeWRXTjBhVzl1QUVSbFptRjFiSFFnYlhWemRDQmlaU0JoYmlCUGNFeGhZbVZzSUdsdWMzUnlkV04wYVc5dUFDQmtiMlZ6SUc1dmRDQmxibVFnYVc0Z1lXNGdUM0JDY21GdVkyZ2diM0lnVDNCQ2NtRnVZMmhEYjI1a2FYUnBiMjVoYkNCcGJuTjBjblZqZEdsdmJnQWdaRzlsY3lCdWIzUWdaVzVrSUdsdUlHRnVJRTl3UW5KaGJtTm9RMjl1WkdsMGFXOXVZV3dnYjNJZ1QzQlRkMmwwWTJnZ2FXNXpkSEoxWTNScGIyNEFUM0JUZDJsMFkyZ2diWFZ6ZENCaVpTQndjbVZqWldSbFpDQmllU0JoYmlCUGNGTmxiR1ZqZEdsdmJrMWxjbWRsSUdsdWMzUnlkV04wYVc5dUFDQnBjeUJ1YjNRZ1lTQnlaV2RwYzNSbGNtVmtJR2x1YzNSeWRXTjBhVzl1QUVGeVowbHVabThnYlhWemRDQmlaU0JoYmlCQmNtZDFiV1Z1ZEVsdVptOGdaWGgwWlc1a1pXUWdhVzV6ZEhKMVkzUnBiMjRBUzJWeWJtVnNJRzExYzNRZ1ltVWdZU0JMWlhKdVpXd2daWGgwWlc1a1pXUWdhVzV6ZEhKMVkzUnBiMjRBSUdsdUlITmxiV0Z1ZEdsaklHbHVjM1J5ZFdOMGFXOXVJR05oYm01dmRDQmlaU0JoSUc1dmJpMXpaVzFoYm5ScFl5QnBibk4wY25WamRHbHZiZ0FnWkc5bGN5QnViM1FnYUdGMlpTQmhJR1JsWm1sdWFXNW5JRk5RU1ZJdFZpQnBibk4wY25WamRHbHZiZ0JGYldsMFNXNXpkSEoxWTNScGIyNEFSR2x6WVhOelpXMWliR1ZVWVhKblpYUkpibk4wY25WamRHbHZiZ0J3WVhKelpVbHVjM1J5ZFdOMGFXOXVBRkJoY25ObFNXNXpkSEoxWTNScGIyNEFSMlYwVkhsd1pVbHVjM1J5ZFdOMGFXOXVBR04xY25KbGJuUmZablZ1WTNScGIyNEFiV2x6YzJsdVp5QnlaWFIxY200Z1lYUWdaVzVrSUc5bUlHWjFibU4wYVc5dUFDQmpZVzVrYVdSaGRHVWdablZ1WTNScGIyNEFJSGRvYVdOb0lHbHpJRzV2ZENCaElHSnNiMk5ySUdsdUlIUm9aU0JtZFc1amRHbHZiZ0IwWlhKdGFXNWhkRzl5SUdsdWMzUnlkV04wYVc5dUlHOTFkSE5wWkdVZ1puVnVZM1JwYjI0QVQzQk1ZV0psYkNCdmRYUnphV1JsSUdaMWJtTjBhVzl1QUdaMWJtTjBhVzl1SUdsdWMybGtaU0JtZFc1amRHbHZiZ0JFWldKMVp5QnBibVp2SUdWNGRHVnVjMmx2YmlCcGJuTjBjblZqZEdsdmJpQnZkR2hsY2lCMGFHRnVJRVJsWW5WblUyTnZjR1VzSUVSbFluVm5UbTlUWTI5d1pTd2dSR1ZpZFdkR2RXNWpkR2x2YmtSbFptbHVhWFJwYjI0c0lFUmxZblZuUkdWamJHRnlaU3dnWVc1a0lFUmxZblZuVm1Gc2RXVWdabTkxYm1RZ2FXNXphV1JsSUdaMWJtTjBhVzl1QUVSbFluVm5JR2x1Wm04Z1pYaDBaVzV6YVc5dUlHbHVjM1J5ZFdOMGFXOXVJRzkwYUdWeUlIUm9ZVzRnUkdWaWRXZFRZMjl3WlN3Z1JHVmlkV2RPYjFOamIzQmxMQ0JFWldKMVowUmxZMnhoY21Vc0lHRnVaQ0JFWldKMVoxWmhiSFZsSUdadmRXNWtJR2x1YzJsa1pTQm1kVzVqZEdsdmJnQldZWEpwWVdKc1pYTWdZMkZ1SUc1dmRDQm9ZWFpsSUdFZ1puVnVZM1JwYjI1Yk4xMGdjM1J2Y21GblpTQmpiR0Z6Y3lCdmRYUnphV1JsSUc5bUlHRWdablZ1WTNScGIyNEFWbUZ5YVdGaWJHVnpJRzExYzNRZ2FHRjJaU0JoSUdaMWJtTjBhVzl1V3pkZElITjBiM0poWjJVZ1kyeGhjM01nYVc1emFXUmxJRzltSUdFZ1puVnVZM1JwYjI0QUlHUnZaWE1nYm05MElISmxabVZ5Wlc1alpTQmhJR1oxYm1OMGFXOXVBRkpsWjJsemRHVnlSblZ1WTNScGIyNEFUM0JHZFc1amRHbHZia1Z1WkNCM2FYUm9iM1YwSUdOdmNuSmxjM0J2Ym1ScGJtY2dUM0JHZFc1amRHbHZiZ0FnY21WeGRXbHlaWE1nWTJGd1lXSnBiR2wwZVNCSmJuUmxjbkJ2YkdGMGFXOXVSblZ1WTNScGIyNEFiM0lnUkdWaWRXZEdkVzVqZEdsdmJnQkVaV0oxWjFSNWNHVkdkVzVqZEdsdmJnQjBhVzUwT2pwaGMzUTZPa1oxYm1OMGFXOXVBSFJwYm5RNk9uTmxiVG82Um5WdVkzUnBiMjRBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JRSUhOMGIzSmhaMlVnWTJ4aGMzTWdkRzhnWW1VZ1IyVnVaWEpwWXl3Z1EzSnZjM05YYjNKclozSnZkWEFzSUZkdmNtdG5jbTkxY0NCdmNpQkdkVzVqZEdsdmJnQmxlSEJsWTNSbFpDQnpkRzl5WVdkbElHTnNZWE56SUc5bUlIUm9aU0J3YjJsdWRHVnlJSFJ2SUdKbElFZGxibVZ5YVdNc0lFTnliM056VjI5eWEyZHliM1Z3TENCWGIzSnJaM0p2ZFhBZ2IzSWdSblZ1WTNScGIyNEFaWGh3WldOMFpXUWdiM0JsY21GdVpDQlFJSE4wYjNKaFoyVWdZMnhoYzNNZ2RHOGdZbVVnVlc1cFptOXliVU52Ym5OMFlXNTBMQ0JIWlc1bGNtbGpMQ0JEY205emMxZHZjbXRuY205MWNDd2dWMjl5YTJkeWIzVndJRzl5SUVaMWJtTjBhVzl1QUhKaGVTQnhkV1Z5ZVNCcGJuUmxjbk5sWTNScGIyNEFJR2x6SUdsdUlHRnVJR2x1ZG1Gc2FXUWdiR0Y1YjNWMElITmxZM1JwYjI0QUlHaGhjeUIwZDI4Z1ptOXlkMkZ5WkNCbFpHZGxjeUIwYnlCM2FYUm9hVzRnYzJWc1pXTjBhVzl1QUNCc1lYUmxjaUJwYmlCMGFHVWdjMlZzWldOMGFXOXVBSFI1Y0dVb0tTQTlQU0JEYjI1emRISjFZM1JVZVhCbE9qcHJVMlZzWldOMGFXOXVBRTV2UTI5dWRISmhZM1JwYjI0QVZHVnpjMlZzYkdGMGFXOXVSWFpoYkhWaGRHbHZiZ0JUVUZaZlMwaFNYMjV2WDJsdWRHVm5aWEpmZDNKaGNGOWtaV052Y21GMGFXOXVBR2x6SUcxcGMzTnBibWNnWVc0Z1QyWm1jMlYwSUdSbFkyOXlZWFJwYjI0QVNXWWdUM0JVZVhCbFFtOXZiQ0JwY3lCemRHOXlaV1FnYVc0Z1kyOXVhblZ1WTNScGIyNGdkMmwwYUNCUGNGWmhjbWxoWW14bElIVnphVzVuSUVsdWNIVjBJRzl5SUU5MWRIQjFkQ0JUZEc5eVlXZGxJRU5zWVhOelpYTWdhWFFnY21WeGRXbHlaWE1nWVNCQ2RXbHNkRWx1SUdSbFkyOXlZWFJwYjI0QVUzVmphQ0IyWVhKcFlXSnNaWE1nYlhWemRDQmlaU0JwWkdWdWRHbG1hV1ZrSUhkcGRHZ2dZU0JDYkc5amF5QnZjaUJDZFdabVpYSkNiRzlqYXlCa1pXTnZjbUYwYVc5dUFGTjFZMmdnZG1GeWFXRmliR1Z6SUcxMWMzUWdZbVVnYVdSbGJuUnBabWxsWkNCM2FYUm9JR0VnUW14dlkyc2daR1ZqYjNKaGRHbHZiZ0JEYUdWamEwTnZiWEJ2Ym1WdWRFUmxZMjl5WVhScGIyNEFRV1JrVFdWdFltVnlSR1ZqYjNKaGRHbHZiZ0JEYUdWamExVnVhV1p2Y20xRVpXTnZjbUYwYVc5dUFFTm9aV05yUkdWamIzSmhkR2x2Ym5OR2NtOXRSR1ZqYjNKaGRHbHZiZ0JEYUdWamEwSnNiMk5yUkdWamIzSmhkR2x2YmdCWGFHbHNaVVZoWTJoRVpXTnZjbUYwYVc5dUFFTm9aV05yVG05dVYzSnBkR0ZpYkdWRVpXTnZjbUYwYVc5dUFHZHliM1Z3SUc5d1pYSmhkR2x2YmdCUGNHVnVRMHd1UkdWaWRXZEpibVp2TGpFd01DQmtaV0oxWnlCdmNHVnlZWFJwYjI0QVJHVmlkV2RQY0dWeVlYUnBiMjRBVW1GNUlGRjFaWEo1SUcxMWMzUWdZbVVnWVNCdFpXMXZjbmtnYjJKcVpXTjBJR1JsWTJ4aGNtRjBhVzl1QUVocGRDQlBZbXBsWTNRZ2JYVnpkQ0JpWlNCaElHMWxiVzl5ZVNCdlltcGxZM1FnWkdWamJHRnlZWFJwYjI0QUlHTmhibTV2ZENCaGNIQmxZWElnYVc0Z1lTQm1kVzVqZEdsdmJpQmtaV05zWVhKaGRHbHZiZ0FuWTI5dWMzUW5JR1JsWTJ4aGNtRjBhVzl1QUNkc1pYUW5JR1JsWTJ4aGNtRjBhVzl1QUNkdmRtVnljbWxrWlNjZ1pHVmpiR0Z5WVhScGIyNEFSR1ZpZFdkR2RXNWpkR2x2YmtSbFkyeGhjbUYwYVc5dUFGSmxaMmx6ZEdWeVZXNXBjWFZsVkhsd1pVUmxZMnhoY21GMGFXOXVBRWx0Y0c5eWRHVmtSR1ZqYkdGeVlYUnBiMjRBVTNSaGRHbGpJRTFsYldKbGNpQkVaV05zWVhKaGRHbHZiZ0JKYldGbmFXNWhkR2x2YmdBN0lFUmxZblZuSUVsdVptOXliV0YwYVc5dUFGTlFWbDlKVGxSRlRGOWtaWFpwWTJWZmMybGtaVjloZG1OZmJXOTBhVzl1WDJWemRHbHRZWFJwYjI0QVZHVnpjMlZzYkdGMGFXOXVBRk5RVmw5RldGUmZaR1Z0YjNSbFgzUnZYMmhsYkhCbGNsOXBiblp2WTJGMGFXOXVBRk5RVmw5TFNGSmZkR1Z5YldsdVlYUmxYMmx1ZG05allYUnBiMjRBUkdWdGIzUmxWRzlJWld4d1pYSkpiblp2WTJGMGFXOXVBR2RzWDBobGJIQmxja2x1ZG05allYUnBiMjRBVkdWeWJXbHVZWFJsU1c1MmIyTmhkR2x2YmdBNklHbHVJRloxYkd0aGJpQmxiblpwY205dWJXVnVkQ0JOWlcxdmNua2dVMk52Y0dVZ2FYTWdiR2x0YVhSbFpDQjBieUJFWlhacFkyVXNJRkYxWlhWbFJtRnRhV3g1TENCWGIzSnJaM0p2ZFhBc0lGTm9ZV1JsY2tOaGJHeExTRklzSUZOMVltZHliM1Z3TENCdmNpQkpiblp2WTJGMGFXOXVBRkJ5YjJkeVlXMVRZMjl3WlZaaGNtbGhZbXhsVUc5cGJuUmxjbEpsYkc5allYUnBiMjRBVTFCV1gwbE9WRVZNWDJad1oyRmZZblZtWm1WeVgyeHZZMkYwYVc5dUFHbHVkR1Z5Y0c5c1lYUmxJR0YwZEhKcFluVjBaU0J0ZFhOMElHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lFQnNiMk5oZEdsdmJnQldZWEpwWVdKc1pTQnRkWE4wSUdKbElHUmxZMjl5WVhSbFpDQjNhWFJvSUdFZ2JHOWpZWFJwYjI0QVRXVnRZbVZ5Y3lCallXNXViM1FnWW1VZ1lYTnphV2R1WldRZ1lTQnNiMk5oZEdsdmJnQk1iMk5oZEdsdmJnQWdVSEp2Wm1sc1pTQnpjR1ZqYVdacFkyRjBhVzl1QUNCcGN5QnViM1FnWVd4c2IzZGxaQ0JpZVNCV2RXeHJZVzRnTVM0eUlITndaV05wWm1sallYUnBiMjRBSUdseklHNXZkQ0JoYkd4dmQyVmtJR0o1SUZaMWJHdGhiaUF4TGpFZ2MzQmxZMmxtYVdOaGRHbHZiZ0FnYVhNZ2JtOTBJR0ZzYkc5M1pXUWdZbmtnVm5Wc2EyRnVJREV1TUNCemNHVmphV1pwWTJGMGFXOXVBQ0JoY21kMWJXVnVkQ0J0ZFhOMElHSmxJR0VnWTI5dWMzUXRaWGh3Y21WemMybHZiZ0JoSUhKMWJuUnBiV1V0Wlhod2NtVnpjMmx2YmdCdGIyUjFiR1V0YzJOdmNHVWdKM1poY2ljZ2FXNXBkR2xoYkdsNlpYSWdiWFZ6ZENCaVpTQmhJR052Ym5OMFlXNTBJRzl5SUc5MlpYSnlhV1JsTFdWNGNISmxjM05wYjI0QUoyOTJaWEp5YVdSbEp5QnBibWwwYVdGc2FYcGxjaUJ0ZFhOMElHSmxJR0Z1SUc5MlpYSnlhV1JsTFdWNGNISmxjM05wYjI0QVFHOW1abk5sZENCdGRYTjBJR0psSUdOdmJuTjBZVzUwSUdWNGNISmxjM05wYjI0QVFHRnNhV2R1SUcxMWMzUWdZbVVnWTI5dWMzUmhiblFnWlhod2NtVnpjMmx2YmdCQWMybDZaU0J0ZFhOMElHSmxJR052Ym5OMFlXNTBJR1Y0Y0hKbGMzTnBiMjRBWTJGelpTQnpaV3hsWTNSdmNpQnRkWE4wSUdKbElHRWdZMjl1YzNSaGJuUWdaWGh3Y21WemMybHZiZ0JqWVc1dWIzUWdkR0ZyWlNCMGFHVWdZV1JrY21WemN5QnZaaUJsZUhCeVpYTnphVzl1QUdGdUlIVnVaWFpoYkhWaGRHVmtJR1Y0Y0hKbGMzTnBiMjRBZEdsdWREbzZZWE4wT2pwQ2FXNWhjbmxGZUhCeVpYTnphVzl1QUhScGJuUTZPbUZ6ZERvNlVHaHZibmxGZUhCeVpYTnphVzl1QUhScGJuUTZPbUZ6ZERvNlFtbDBZMkZ6ZEVWNGNISmxjM05wYjI0QWRHbHVkRG82WVhOME9qcEpibVJsZUVGalkyVnpjMjl5Ulhod2NtVnpjMmx2YmdCMGFXNTBPanB6WlcwNk9rbHVaR1Y0UVdOalpYTnpiM0pGZUhCeVpYTnphVzl1QUhScGJuUTZPbUZ6ZERvNlRXVnRZbVZ5UVdOalpYTnpiM0pGZUhCeVpYTnphVzl1QUhScGJuUTZPbk5sYlRvNlRXVnRZbVZ5UVdOalpYTnpiM0pGZUhCeVpYTnphVzl1QUhScGJuUTZPbUZ6ZERvNlFXTmpaWE56YjNKRmVIQnlaWE56YVc5dUFIUnBiblE2T21GemREbzZTV1JsYm5ScFptbGxja1Y0Y0hKbGMzTnBiMjRBZEdsdWREbzZZWE4wT2pwVmJtRnllVTl3Ulhod2NtVnpjMmx2YmdCMGFXNTBPanB6WlcwNk9rWjFibU4wYVc5dVJYaHdjbVZ6YzJsdmJnQjBhVzUwT2pwaGMzUTZPa05oYkd4RmVIQnlaWE56YVc5dUFIUnBiblE2T21GemREbzZTVzUwVEdsMFpYSmhiRVY0Y0hKbGMzTnBiMjRBZEdsdWREbzZZWE4wT2pwR2JHOWhkRXhwZEdWeVlXeEZlSEJ5WlhOemFXOXVBSFJwYm5RNk9tRnpkRG82UW05dmJFeHBkR1Z5WVd4RmVIQnlaWE56YVc5dUFIUnBiblE2T21GemREbzZUR2wwWlhKaGJFVjRjSEpsYzNOcGIyNEFSR1ZpZFdkRmVIQnlaWE56YVc5dUFIUnBiblE2T25ObGJUbzZWbUZzZFdWRmVIQnlaWE56YVc5dUFIUnBiblE2T25ObGJUbzZWSGx3WlVWNGNISmxjM05wYjI0QWRHbHVkRG82WVhOME9qcEZlSEJ5WlhOemFXOXVBSFJwYm5RNk9uTmxiVG82Ulhod2NtVnpjMmx2YmdBZ1kyRnVaR2xrWVhSbElHTnZiblpsY25OcGIyNEFkR2x1ZERvNmMyVnRPanBXWVd4MVpVTnZiblpsY25OcGIyNEFVMkYwZFhKaGRHVmtRMjl1ZG1WeWMybHZiZ0JWYm10dWIzZHVJRTV2YmxObGJXRnVkR2xqTGtOc2MzQjJVbVZtYkdWamRHbHZiaUJwYlhCdmNuUWdkbVZ5YzJsdmJnQk5hWE56YVc1bklFNXZibE5sYldGdWRHbGpMa05zYzNCMlVtVm1iR1ZqZEdsdmJpQnBiWEJ2Y25RZ2RtVnljMmx2YmdCRVYwRlNSaUJXWlhKemFXOXVBRVZTVWs5U1gyNXZkRjl2Y0Y5bGVIUmxibk5wYjI0QVNYTkZibUZpYkdWa1FubEZlSFJsYm5OcGIyNEFVMjkxY21ObFJYaDBaVzV6YVc5dUFFRmtaRVY0ZEdWdWMybHZiZ0JIWlhSRWFXMWxibk5wYjI0QVpHbHpZV0pzWlY5MllXeHBaR0YwYVc5dVgxOWlhVzVrYVc1blgzQnZhVzUwWDJOdmJHeHBjMmx2YmdCU1pXeGhlR1ZrVUhKbFkybHphVzl1QUZWdWFXOXVBRTF2YmdCRGIyeDFiVzRBUUdKMWFXeDBhVzRBYVc1MllYSnBZVzUwSUdGMGRISnBZblYwWlNCdGRYTjBJRzl1YkhrZ1ltVWdZWEJ3YkdsbFpDQjBieUJoSUhCdmMybDBhVzl1SUdKMWFXeDBhVzRBZFhObElHOW1JR1JsY0hKbFkyRjBaV1FnWW5WcGJIUnBiZ0IwYVc1ME9qcHpaVzA2T2tKMWFXeDBhVzRBWVhOcGJnQm9ZV3htWDNOcGJnQnVZWFJwZG1WZmMybHVBRUZ6YVc0QVptMXBiZ0IxWDIxcGJnQnpYMjFwYmdCSmJrSnZkVzVrYzBGalkyVnpjME5vWVdsdUFFbHVRbTkxYm1SelVIUnlRV05qWlhOelEyaGhhVzRBWDE5cGJnQlRhVzRBWVhSdmJXbGpUV2x1QUVkeWIzVndWVTFwYmdCSGNtOTFjRTV2YmxWdWFXWnZjbTFWVFdsdUFFRjBiMjFwWTFWTmFXNEFSM0p2ZFhCVFRXbHVBRWR5YjNWd1RtOXVWVzVwWm05eWJWTk5hVzRBUVhSdmJXbGpVMDFwYmdCT1RXbHVBRWR5YjNWd1JrMXBiZ0JIY205MWNFNXZibFZ1YVdadmNtMUdUV2x1QUdKMWFXeDBMV2x1QUdOdmNIbHphV2R1QUVCaGJHbG5iZ0JUVTJsbmJnQkdVMmxuYmdCMmMzUnZjbVZmYUdGc1ptNEFkbXh2WVdSZmFHRnNabTRBZG5OMGIzSmxZVjlvWVd4bWJnQjJiRzloWkdGZmFHRnNabTRBVTNCaFkybHVaMFp5WVdOMGFXOXVZV3hGZG1WdUFGSnZkVzVrUlhabGJnQkViMjUwUm14aGRIUmxiZ0IyYzNSdmNtVnVBSFpzYjJGa2JnQmhkR0Z1QUdoaGJHWmZkR0Z1QUc1aGRHbDJaVjkwWVc0QVFYUmhiZ0J1WVc0QVZuVnNhMkZ1QUVaVmJtOXlaRXhsYzNOVWFHRnVBRVpQY21STVpYTnpWR2hoYmdCVlRHVnpjMVJvWVc0QVUweGxjM05VYUdGdUFFWlZibTl5WkVkeVpXRjBaWEpVYUdGdUFFWlBjbVJIY21WaGRHVnlWR2hoYmdCVlIzSmxZWFJsY2xSb1lXNEFVMGR5WldGMFpYSlVhR0Z1QUVKdmIyeGxZVzRBUlhoamJIVnphWFpsVTJOaGJnQkpibU5zZFhOcGRtVlRZMkZ1QUZSaGJnQnBjMDVoYmdCSmMwNWhiZ0JLWVc0QVFuVnBiSFJKYmdCbGJuVnRBRVJsWW5WblZIbHdaVVZ1ZFcwQVkyaHliMjFwZFcwQVlYTnRBSFZ1Y0dGamF6UjRPSFZ1YjNKdEFHSm5jbUU0ZFc1dmNtMEFjbWRpWVRoMWJtOXliUUIxYm5CaFkyc3llREUyZFc1dmNtMEFkVzV3WVdOck5IZzRjMjV2Y20wQWNtZGlZVGh6Ym05eWJRQjFibkJoWTJzeWVERTJjMjV2Y20wQVVtYzRVMjV2Y20wQVVtZGlZVGhUYm05eWJRQlNPRk51YjNKdEFGSm5NVFpUYm05eWJRQlNaMkpoTVRaVGJtOXliUUJTTVRaVGJtOXliUUIwYVc1ME9qcDBjbUZ1YzJadmNtMDZPbFJ5WVc1elptOXliUUJ5WlhOMWJIUWdiMllnWlhod2NtVnpjMmx2YmlCdFlYa2dZbVVnYm05dUxYVnVhV1p2Y20wQUp5QnRZWGtnWW1VZ2JtOXVMWFZ1YVdadmNtMEFRWEpuZFcxbGJuUlZibWxtYjNKdEFFRnlaM1Z0Wlc1MFVHOXBiblJsY2xWdWFXWnZjbTBBU1cxaFoyVkJjbWQxYldWdWRFbHVabTlEYUdGdWJtVnNUM0prWlhKVmJtbG1iM0p0QUZOb1lXUmxjazV2YmxWdWFXWnZjbTBBUjNKdmRYQk9iMjVWYm1sbWIzSnRBRWx0WVdkbFFYSm5kVzFsYm5SSmJtWnZRMmhoYm01bGJFUmhkR0ZVZVhCbFZXNXBabTl5YlFCQmNtZDFiV1Z1ZEZCdlpGVnVhV1p2Y20wQVEyOXVjM1JoYm5SRVlYUmhWVzVwWm05eWJRQWdZblYwSUdoaGN5QmhiSFJsY201aGRHVWdjR0YwYUhNZ2NtVmhZMmhwYm1jZ2FYUXNJSE4wWVhKMGFXNW5JR1p5YjIwQVVYVmhiR052YlcwQVZHVnNiSFZ6YVcwQVptUnBiUUJUY0dWalEyOXVjM1JoYm5SWGIzSnJSR2x0QUVsdUlGWjFiR3RoYml3Z1QzQkpiV0ZuWlNwRWNtVm1LaUJwYm5OMGNuVmpkR2x2Ym5NZ2JYVnpkQ0J1YjNRZ2RYTmxJR2x0WVdkbGN5QjNhWFJvSUdFZ00wUWdSR2x0QUZOU1pXMEFSbEpsYlFCZmNHRnlZVzBBVTNSeVpXRnRBQnRiTXpSdEFCdGJNek50QUJ0Yk16SnRBQnRiTXpGdEFCdGJNRzBBRzFzeE96TXdiUUJIY205MWNFNXZibFZ1YVdadmNtMUpUWFZzQUVkeWIzVndUbTl1Vlc1cFptOXliVVpOZFd3QVNuVnNBRk5RVmw5SlRsUkZURjltY0dkaFgyUnpjRjlqYjI1MGNtOXNBSE4wYjNKaFoyVWdkR1Y0ZEhWeVpTQnRhWE56YVc1bklHRmpZMlZ6Y3lCamIyNTBjbTlzQUhOMGIzSmhaMlVnZEdWNGRIVnlaWE1nWTNWeWNtVnVkR3g1SUc5dWJIa2djM1Z3Y0c5eWRDQW5kM0pwZEdVbklHRmpZMlZ6Y3lCamIyNTBjbTlzQUd4dmIzQWdZMjl1ZEhKdmJBQm1kVzVqZEdsdmJpQmpiMjUwY205c0FITmxiR1ZqZEdsdmJpQmpiMjUwY205c0FGUmxjM05sYkd4aGRHbHZia052Ym5SeWIyd0FSR1Z5YVhaaGRHbDJaVU52Ym5SeWIyd0FZbTl2YkFCU1pYTjFiSFFnVkhsd1pTQnRkWE4wSUdKbElFOXdWSGx3WlVKdmIyd0FkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82UW05dmJBQjBhVzUwT2pwMGVYQmxPanBDYjI5c0FIUnBiblJmYzNsdFltOXNBRzV2SUhOMGNuVmpkSFZ5WlNCMGVYQmxJSEpsWjJsemRHVnlaV1FnWm05eUlITjViV0p2YkFCTllYUmphRk4wWVhSbExrMWhkR05vS0NrZ2NtVjBkWEp1WldRZ2JuVnNiQUJEYjI1emRHRnVkRTUxYkd3QVJuVnNiQUJFYjI1MFZXNXliMnhzQUV0cGJHd0FiV2x6YzJsdVp5QW5LQ2NnWm05eUlHSjFhV3gwYVc0Z1puVnVZM1JwYjI0Z1kyRnNiQUJsYm5SeWVTQndiMmx1ZENCbWRXNWpkR2x2Ym5NZ1kyRnVibTkwSUdKbElIUm9aU0IwWVhKblpYUWdiMllnWVNCbWRXNWpkR2x2YmlCallXeHNBRVoxYm1OMGFXOXVRMkZzYkFCMGFXNTBPanB6WlcwNk9rTmhiR3dBUkc5MFVISnZaSFZqZEVsdWNIVjBRV3hzQUVkeWIzVndRV3hzQUVkeWIzVndUbTl1Vlc1cFptOXliVUZzYkFCQmNISnBiQUJqWldsc0FFTmxhV3dBUkdWd2RHaFRkR1Z1WTJsc0FHTjBZV2xzQUVWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdFZ2MzUnlkV04wSUdOdmJuUmhhVzVwYm1jZ1lXNGdhVzUwSUhOallXeGhjaUJoYm1RZ1lTQjBaWGhsYkFCT2IyNVFjbWwyWVhSbFZHVjRaV3dBVm05c1lYUnBiR1ZVWlhobGJBQnNaWFpsYkFCMFpYaDBkWEpsVTJGdGNHeGxRMjl0Y0dGeVpVeGxkbVZzQUhSbGVIUjFjbVZUWVcxd2JHVk1aWFpsYkFCSmJuUmxiQUJYWVdsMFMyVnlibVZzQUVWdWNYVmxkV1ZMWlhKdVpXd0FUbUZ0WlNCdGRYTjBJRzFoZEdOb0lHRnVJR1Z1ZEhKNUxYQnZhVzUwSUdadmNpQkxaWEp1Wld3QVUxQldYMHRJVWw5MmRXeHJZVzVmYldWdGIzSjVYMjF2WkdWc0FHMWxiVzl5ZVNCdGIyUmxiQUFnYVc1emRISjFZM1JwYjI1eklISmxjWFZwY21VZ1IyVnZiV1YwY25rZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzQUU5d1ZHVnliV2x1WVhSbFNXNTJiMk5oZEdsdmJpQnlaWEYxYVhKbGN5QkdjbUZuYldWdWRDQmxlR1ZqZFhScGIyNGdiVzlrWld3QVQzQkxhV3hzSUhKbGNYVnBjbVZ6SUVaeVlXZHRaVzUwSUdWNFpXTjFkR2x2YmlCdGIyUmxiQUJQY0VselNHVnNjR1Z5U1c1MmIyTmhkR2x2YmtWWVZDQnlaWEYxYVhKbGN5QkdjbUZuYldWdWRDQmxlR1ZqZFhScGIyNGdiVzlrWld3QVQzQkVaVzF2ZEdWVWIwaGxiSEJsY2tsdWRtOWpZWFJwYjI1RldGUWdjbVZ4ZFdseVpYTWdSbkpoWjIxbGJuUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0FFOXdRbVZuYVc1SmJuWnZZMkYwYVc5dVNXNTBaWEpzYjJOclJWaFVMMDl3Ulc1a1NXNTJiMk5oZEdsdmJrbHVkR1Z5Ykc5amEwVllWQ0J5WlhGMWFYSmxJRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJBQlRhR0ZrWlhKRFlXeHNTMGhTSUUxbGJXOXllU0JUWTI5d1pTQnlaWEYxYVhKbGN5QmhJSEpoZVNCMGNtRmphVzVuSUdWNFpXTjFkR2x2YmlCdGIyUmxiQUJQY0VsdFlXZGxVWFZsY25sTWIyUWdjbVZ4ZFdseVpYTWdSR1Z5YVhaaGRHbDJaVWR5YjNWd1VYVmhaSE5PVmlCdmNpQkVaWEpwZG1GMGFYWmxSM0p2ZFhCTWFXNWxZWEpPVmlCbGVHVmpkWFJwYjI0Z2JXOWtaU0JtYjNJZ1IweERiMjF3ZFhSbElHVjRaV04xZEdsdmJpQnRiMlJsYkFCUGNFbHRZV2RsVVhWbGNubE1iMlFnY21WeGRXbHlaWE1nUm5KaFoyMWxiblFnYjNJZ1IweERiMjF3ZFhSbElHVjRaV04xZEdsdmJpQnRiMlJsYkFCWGIzSnJaM0p2ZFhBZ1RXVnRiM0o1SUZOamIzQmxJR2x6SUd4cGJXbDBaV1FnZEc4Z1RXVnphRTVXTENCVVlYTnJUbFlzSUUxbGMyaEZXRlFzSUZSaGMydEZXRlFzSUZSbGMzTmxiR3hoZEdsdmJrTnZiblJ5YjJ3c0lHRnVaQ0JIVEVOdmJYQjFkR1VnWlhobFkzVjBhVzl1SUcxdlpHVnNBR2x1SUZaMWJHdGhiaUJsYm5acGNtOXViV1Z1ZEN3Z1YyOXlhMmR5YjNWd0lGTjBiM0poWjJVZ1EyeGhjM01nYVhNZ2JHbHRhWFJsWkNCMGJ5Qk5aWE5vVGxZc0lGUmhjMnRPVml3Z1lXNWtJRWRNUTI5dGNIVjBaU0JsZUdWamRYUnBiMjRnYlc5a1pXd0FUM0JGYldsMFRXVnphRlJoYzJ0elJWaFVJSEpsY1hWcGNtVnpJRlJoYzJ0RldGUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0FFOXdVMlYwVFdWemFFOTFkSEIxZEhORldGUWdjbVZ4ZFdseVpYTWdUV1Z6YUVWWVZDQmxlR1ZqZFhScGIyNGdiVzlrWld3QVQzQlVaWEp0YVc1aGRHVlNZWGxMU0ZJZ2NtVnhkV2x5WlhNZ1FXNTVTR2wwUzBoU0lHVjRaV04xZEdsdmJpQnRiMlJsYkFCUGNFbG5ibTl5WlVsdWRHVnljMlZqZEdsdmJrdElVaUJ5WlhGMWFYSmxjeUJCYm5sSWFYUkxTRklnWlhobFkzVjBhVzl1SUcxdlpHVnNBRWhwZEVGMGRISnBZblYwWlV0SVVpQlRkRzl5WVdkbElFTnNZWE56SUdseklHeHBiV2wwWldRZ2RHOGdTVzUwWlhKelpXTjBhVzl1UzBoU0xDQkJibmxJYVhSTFNGSXNJSE5oYm1RZ1EyeHZjMlZ6ZEVocGRFdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FTR2wwVDJKcVpXTjBRWFIwY21saWRYUmxUbFlnVTNSdmNtRm5aU0JEYkdGemN5QnBjeUJzYVcxcGRHVmtJSFJ2SUZKaGVVZGxibVZ5WVhScGIyNUxTRklzSUVOc2IzTmxjM1JJYVhSTFNGSWdiM0lnVFdsemMwdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FTVzVqYjIxcGJtZFNZWGxRWVhsc2IyRmtTMGhTSUZOMGIzSmhaMlVnUTJ4aGMzTWdhWE1nYkdsdGFYUmxaQ0IwYnlCQmJubElhWFJMU0ZJc0lFTnNiM05sYzNSSWFYUkxTRklzSUdGdVpDQk5hWE56UzBoU0lHVjRaV04xZEdsdmJpQnRiMlJsYkFCU1lYbFFZWGxzYjJGa1MwaFNJRk4wYjNKaFoyVWdRMnhoYzNNZ2FYTWdiR2x0YVhSbFpDQjBieUJTWVhsSFpXNWxjbUYwYVc5dVMwaFNMQ0JEYkc5elpYTjBTR2wwUzBoU0xDQmhibVFnVFdsemMwdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FVMmhoWkdWeVVtVmpiM0prUW5WbVptVnlTMGhTSUZOMGIzSmhaMlVnUTJ4aGMzTWdhWE1nYkdsdGFYUmxaQ0IwYnlCU1lYbEhaVzVsY21GMGFXOXVTMGhTTENCSmJuUmxjbk5sWTNScGIyNUxTRklzSUVGdWVVaHBkRXRJVWl3Z1EyeHZjMlZ6ZEVocGRFdElVaXdnUTJGc2JHRmliR1ZMU0ZJc0lHRnVaQ0JOYVhOelMwaFNJR1Y0WldOMWRHbHZiaUJ0YjJSbGJBQkRZV3hzWVdKc1pVUmhkR0ZMU0ZJZ1UzUnZjbUZuWlNCRGJHRnpjeUJwY3lCc2FXMXBkR1ZrSUhSdklGSmhlVWRsYm1WeVlYUnBiMjVMU0ZJc0lFTnNiM05sYzNSSWFYUkxTRklzSUVOaGJHeGhZbXhsUzBoU0xDQmhibVFnVFdsemMwdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FUM0JTWlhCdmNuUkpiblJsY25ObFkzUnBiMjVMU0ZJZ2NtVnhkV2x5WlhNZ1NXNTBaWEp6WldOMGFXOXVTMGhTSUdWNFpXTjFkR2x2YmlCdGIyUmxiQUFnY21WeGRXbHlaWE1nVW1GNVIyVnVaWEpoZEdsdmJrdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FWR0Z6YTFCaGVXeHZZV1JYYjNKclozSnZkWEJGV0ZRZ1UzUnZjbUZuWlNCRGJHRnpjeUJwY3lCc2FXMXBkR1ZrSUhSdklGUmhjMnRGV0ZRZ1lXNWtJRTFsYzJoTFNGSWdaWGhsWTNWMGFXOXVJRzF2WkdWc0FFbHVZMjl0YVc1blEyRnNiR0ZpYkdWRVlYUmhTMGhTSUZOMGIzSmhaMlVnUTJ4aGMzTWdhWE1nYkdsdGFYUmxaQ0IwYnlCRFlXeHNZV0pzWlV0SVVpQmxlR1ZqZFhScGIyNGdiVzlrWld3QVlXUmtjbVZ6YzJsdVp5QnRiMlJsYkFCV2RXeHJZVzVOWlcxdmNubE5iMlJsYkFCWGIzSnJaM0p2ZFhBZ1RXVnRiM0o1SUZOamIzQmxJR05oYmlkMElHSmxJSFZ6WldRZ2QybDBhQ0JVWlhOelpXeHNZWFJwYjI1RGIyNTBjbTlzSUhWemFXNW5JRWRNVTB3ME5UQWdUV1Z0YjNKNUlFMXZaR1ZzQUVFZ1puVnVZM1JwYjI0Z2JYVnpkQ0JpWldkcGJpQjNhWFJvSUdFZ2JHRmlaV3dBSUcxMWMzUWdZbVVnWVc0Z1QzQk1ZV0psYkFCMGFXNTBPanBoYzNRNk9sUjVjR1ZFWldOc0FGVnVhR0Z1Wkd4bFpDQlVlWEJsUkdWamJBQkdiR0ZuUm5ka1JHVmpiQUE2SUUxbGJXOXllU0JUWlcxaGJuUnBZM01nVW1Wc1pXRnpaU0JoYm1RZ1FXTnhkV2x5WlZKbGJHVmhjMlVnWTJGdWJtOTBJR0psSUhWelpXUWdabTl5SUc5d1pYSmhibVFnVlc1bGNYVmhiQUJRZEhKT2IzUkZjWFZoYkFCTWIyZHBZMkZzVG05MFJYRjFZV3dBUmxWdWIzSmtUbTkwUlhGMVlXd0FSazl5WkU1dmRFVnhkV0ZzQUVsT2IzUkZjWFZoYkFCUWRISkZjWFZoYkFCR1ZXNXZjbVJNWlhOelZHaGhia1Z4ZFdGc0FFWlBjbVJNWlhOelZHaGhia1Z4ZFdGc0FGVk1aWE56VkdoaGJrVnhkV0ZzQUZOTVpYTnpWR2hoYmtWeGRXRnNBRVpWYm05eVpFZHlaV0YwWlhKVWFHRnVSWEYxWVd3QVJrOXlaRWR5WldGMFpYSlVhR0Z1UlhGMVlXd0FWVWR5WldGMFpYSlVhR0Z1UlhGMVlXd0FVMGR5WldGMFpYSlVhR0Z1UlhGMVlXd0FSM0p2ZFhCT2IyNVZibWxtYjNKdFFXeHNSWEYxWVd3QVRHOW5hV05oYkVWeGRXRnNBRk53WVdOcGJtZEZjWFZoYkFCR1ZXNXZjbVJGY1hWaGJBQkdUM0prUlhGMVlXd0FTVVZ4ZFdGc0FHWmhkR0ZzQUZWdWFYWmxjbk5oYkFCRVpYQjBhRVpwY25OMFZISmhkbVZ5YzJGc0FFNXZiblJsYlhCdmNtRnNBSFJsZUhSMWNtVmZaWGgwWlhKdVlXd0FhVzUwWlhKdVlXd0FRbkpoYm1Ob1EyOXVaR2wwYVc5dVlXd0FTWE5PYjNKdFlXd0FSbXhoWjBGeWRHbG1hV05wWVd3QVJteGhaMGx6VEc5allXd0FhV1JsYm5ScFkyRnNBRU52Y0hsTWIyZHBZMkZzQUZOb2FXWjBVbWxuYUhSTWIyZHBZMkZzQUZOb2FXWjBUR1ZtZEV4dloybGpZV3dBUW5sV1lXd0FVMUJXWDBGTlJGOXphR0ZrWlhKZlpuSmhaMjFsYm5SZmJXRnphd0JUVUZaZlMwaFNYM0poZVY5amRXeHNYMjFoYzJzQWMyRnRjR3hsWDIxaGMyc0FUblZ0WW1WeUlHOW1JR2x0WVdkbElHOXdaWEpoYm1RZ2FXUnpJR1J2WlhOdUozUWdZMjl5Y21WemNHOXVaQ0IwYnlCMGFHVWdZbWwwSUcxaGMyc0FVM1ZpWjNKdmRYQk1kRTFoYzJzQVUzVmlaM0p2ZFhCSGRFMWhjMnNBVTNWaVozSnZkWEJGY1UxaGMyc0FaMnhmVTJGdGNHeGxUV0Z6YXdCVGRXSm5jbTkxY0V4bFRXRnphd0JUZFdKbmNtOTFjRWRsVFdGemF3Qk9iMEZzYVdGelNVNVVSVXhOWVhOckFFRnNhV0Z6VTJOdmNHVkpUbFJGVEUxaGMyc0FVMUJXWDBWWVZGOW1jbUZuYldWdWRGOXphR0ZrWlhKZmFXNTBaWEpzYjJOckFGTlFWbDlMU0ZKZmMyaGhaR1Z5WDJOc2IyTnJBR05oYzJVZ1pXNTBjbmtnWW14dlkyc0FZMkZ6WlNCbGVHbDBJR0pzYjJOckFHSnlaV0ZyTFdsbUlHMTFjM1FnWW1VZ2RHaGxJR3hoYzNRZ2MzUmhkR1Z0Wlc1MElHbHVJR0VnWTI5dWRHbHVkV2x1WnlCaWJHOWphd0JpY21WaGF5MXBaaUJ0ZFhOMElHSmxJR2x1SUdFZ1kyOXVkR2x1ZFdsdVp5QmliRzlqYXdBZ1kyRnVibTkwSUdKbElHbDBjeUJ2ZDI0Z2JXVnlaMlVnWW14dlkyc0FZbUZqYXkxbFpHZGxJR0pzYjJOckFFUmxZblZuSUdsdVptOGdaWGgwWlc1emFXOXVJR2x1YzNSeWRXTjBhVzl1SUdadmRXNWtJR2x1YzJsa1pTQm1kVzVqZEdsdmJpQmlkWFFnYjNWMGMybGtaU0JpYkc5amF3Qk9iMjR0VDNCR2RXNWpkR2x2YmxCaGNtRnRaWFJsY2lBb2IzQmpiMlJsT2lBbFpDa2dabTkxYm1RZ2FXNXphV1JsSUdaMWJtTjBhVzl1SUdKMWRDQnZkWFJ6YVdSbElHSmhjMmxqSUdKc2IyTnJBSFJsY20xcGJtRjBiM0lnYVc1emRISjFZM1JwYjI0Z2IzVjBjMmxrWlNCaVlYTnBZeUJpYkc5amF3QlBjRXhoWW1Wc0lHbHVjMmxrWlNCaVlYTnBZeUJpYkc5amF3QlBjRVoxYm1OMGFXOXVSVzVrSUdsdWMybGtaU0JpWVhOcFl5QmliRzlqYXdCT2IyNHRjMlZ0WVc1MGFXTWdUM0JGZUhSSmJuTjBJSGRwZEdocGJpQm1kVzVqZEdsdmJpQmtaV1pwYm1sMGFXOXVJRzExYzNRZ1lYQndaV0Z5SUdsdUlHRWdZbXh2WTJzQVJtbHVaRU52Ym5OMGNuVmpkRVp2Y2tWdWRISjVRbXh2WTJzQVVtVm5hWE4wWlhKQ2JHOWphd0JDZFdabVpYSkNiRzlqYXdCRVpXSjFaMHhsZUdsallXeENiRzlqYXdCV1pYSnphVzl1UTJobFkyc0FhVzUwWlhKdVlXd2daWEp5YjNJNklITjBZWEowYVc1bklHTnZiblJwYm5WbElHTnZibk4wY25WamRDd2daWGh3WldOMFpXUWdiRzl2Y0NCdmJpQjBiM0FnYjJZZ2MzUmhZMnNBVkhKaGJuTm1iM0p0Um1WbFpHSmhZMnNBUkdWaWRXZFVlWEJsVkdWdGNHeGhkR1ZRWVhKaGJXVjBaWEpRWVdOckFHSnlaV0ZyQUVKeVpXRnJBR0YwYjIxcFkwTnZiWEJoY21WRmVHTm9ZVzVuWlZkbFlXc0FRWFJ2YldsalEyOXRjR0Z5WlVWNFkyaGhibWRsVjJWaGF3QlNaemgxYVFCU1oySmhPSFZwQUZJNGRXa0FVbWN4Tm5WcEFGSm5ZbUV4Tm5WcEFGSXhOblZwQUZJMk5IVnBBRkpuWWpFd1lUSjFhUUJTWnpNeWRXa0FVbWRpWVRNeWRXa0FVak15ZFdrQVJuSnBBR0ZqYjNOd2FRQmhjMmx1Y0drQVlYUmhibkJwQUdGMFlXNHljR2tBVkdGcFkyaHBJRWR5WVhCb2FXTnpJRlJoYVdOb2FRQjFYMjExYkY5b2FRQnpYMjExYkY5b2FRQjFYMjFoWkY5b2FRQnpYMjFoWkY5b2FRQldZV3hwWkdGMFpWQm9hUUJTWnpocEFGSm5ZbUU0YVFCU09Ha0FVbWN4Tm1rQVVtZGlZVEUyYVFCU01UWnBBSFpsWXpScEFGSTJOR2tBZG1Wak0ya0FkbVZqTW1rQVVtY3pNbWtBVW1kaVlUTXlhUUJTTXpKcEFHWnlZV2RmWkdWd2RHZ0FJR1JsY0hSb0FFZGxkRUpzYjJOclJHVndkR2dBWjJ4ZlJuSmhaMFJsY0hSb0FDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSUcxaGRISnBlQ0IzYVhSb0FGSmhlV0Z1SUVoaGRHOTFkQ0JUVUVsU1ZsTnRhWFJvQUdKaFpGOWhjbkpoZVY5dVpYZGZiR1Z1WjNSb0FHWmhjM1JmYkdWdVozUm9BSGRvWlc0Z1kyRnNZM1ZzWVhScGJtY2diR1Z1WjNSb0FFUmxjR1Z1WkdWdVkzbE1aVzVuZEdnQVlYSnlZWGxNWlc1bmRHZ0FRWEp5WVhsTVpXNW5kR2dBWm5kcFpIUm9BRVozYVdSMGFBQkhaWFJDYVhSWGFXUjBhQUJFWldKMVoxTjBiM0poWjJWUVlYUm9BR0ZqYjNOb0FFRmpiM05vQUVOdmMyZ0FZWE5wYm1nQVFYTnBibWdBVTJsdWFBQmhkR0Z1YUFCQmRHRnVhQUJVWVc1b0FGTlFWbDlPVmw5blpXOXRaWFJ5ZVY5emFHRmtaWEpmY0dGemMzUm9jbTkxWjJnQVptRnNiSFJvY205MVoyZ0FjM2RwZEdOb0FGTjNhWFJqYUFCd2NtVm1aWFJqYUFCVFVGWmZRVTFFWDJkd2RWOXphR0ZrWlhKZmFHRnNabDltYkc5aGRGOW1aWFJqYUFCSmJXRm5aVk53WVhKelpVWmxkR05vQUdGdVpDQlBjRWx0WVdkbFJtVjBZMmdBVTNWaVozSnZkWEJFYVhOd1lYUmphQUJVYUdVZ2RIbHdaWE1nYjJZZ1QzQmxjbUZ1WkNBeElHRnVaQ0JQY0dWeVlXNWtJRElnYlhWemRDQnRZWFJqYUFCUVlYUmphQUJOWVhKamFBQkNjbUZ1WTJnQWJXRjBOSGcwYUFCdFlYUXplRFJvQUcxaGRESjROR2dBZG1Wak5HZ0FiV0YwTkhnemFBQnRZWFF6ZUROb0FHMWhkREo0TTJnQWRtVmpNMmdBYldGME5IZ3lhQUJ0WVhRemVESm9BRzFoZERKNE1tZ0FkbVZqTW1nQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2YjNCMEwybHlYMk52Ym5SbGVIUXVhQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdlkyeHZibVZmWTI5dWRHVjRkQzVvQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1YwYVd3dmFXeHBjM1F1YUFBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZkWFJwYkhNdmNtVnpkV3gwTG1nQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2YjNCMEwyTnZibk4wWVc1MGN5NW9BQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZkSEpoZG1WeWMyVmZaWGh3Y21WemMybHZibk11YUFBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkxZEdsc0wzTjBjbWx1WjE5MWRHbHNjeTVvQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1YwYVd3dmMyMWhiR3hmZG1WamRHOXlMbWdBTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwzSmxjMjlzZG1WeUwzTmxiVjlvWld4d1pYSXVhQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmRHaHBjbVJmY0dGeWRIa3ZkblZzYTJGdUxXUmxjSE12YzNCcGNuWXRkRzl2YkhNdmMzSmpMM052ZFhKalpTOXZjSFF2ZEhsd1pWOXRZVzVoWjJWeUxtZ0FMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDNCeWIyZHlZVzFmWW5WcGJHUmxjaTVvQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOWpiMjV6ZEdGdWRDOXpZMkZzWVhJdWFBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZFhScGJITXZhR0Z6YUcxaGNDNW9BQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZhVzVtYnk1b0FDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzkwYUdseVpGOXdZWEowZVM5MmRXeHJZVzR0WkdWd2N5OXpjR2x5ZGkxMGIyOXNjeTl6Y21NdmMyOTFjbU5sTDI5d2RDOXBibk4wY25WamRHbHZiaTVvQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1poYkM5cGJuTjBjblZqZEdsdmJpNW9BQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5eVpXRmtaWEl2YzNCcGNuWXZablZ1WTNScGIyNHVhQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmRHaHBjbVJmY0dGeWRIa3ZkblZzYTJGdUxXUmxjSE12YzNCcGNuWXRkRzl2YkhNdmMzSmpMM052ZFhKalpTOXZjSFF2WW1GemFXTmZZbXh2WTJzdWFBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5MllXd3ZkbUZzYVdSaGRHbHZibDl6ZEdGMFpTNW9BQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5MWRHbHNjeTlvWVhOb2JXRndYMkpoYzJVdWFBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5MWRHbHNMMmxzYVhOMFgyNXZaR1V1YUFBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzlqWm1FdWFBQkJkV2NBYUdGc1psOXNiMmNBYm1GMGFYWmxYMnh2WndCTWIyY0FJSGR2Y21SeklHeHZibWNBVTFCV1gwVllWRjlrWlhOamNtbHdkRzl5WDJsdVpHVjRhVzVuQUVsdWNIVjBRWFIwWVdOb2JXVnVkRUZ5Y21GNVRtOXVWVzVwWm05eWJVbHVaR1Y0YVc1bkFGVnVhV1p2Y20xQ2RXWm1aWEpCY25KaGVVNXZibFZ1YVdadmNtMUpibVJsZUdsdVp3QlZibWxtYjNKdFZHVjRaV3hDZFdabVpYSkJjbkpoZVU1dmJsVnVhV1p2Y20xSmJtUmxlR2x1WndCVGRHOXlZV2RsVkdWNFpXeENkV1ptWlhKQmNuSmhlVTV2YmxWdWFXWnZjbTFKYm1SbGVHbHVad0JUZEc5eVlXZGxRblZtWm1WeVFYSnlZWGxPYjI1VmJtbG1iM0p0U1c1a1pYaHBibWNBVTNSdmNtRm5aVWx0WVdkbFFYSnlZWGxPYjI1VmJtbG1iM0p0U1c1a1pYaHBibWNBVTJGdGNHeGxaRWx0WVdkbFFYSnlZWGxPYjI1VmJtbG1iM0p0U1c1a1pYaHBibWNBU1c1d2RYUkJkSFJoWTJodFpXNTBRWEp5WVhsRWVXNWhiV2xqU1c1a1pYaHBibWNBVlc1cFptOXliVUoxWm1abGNrRnljbUY1UkhsdVlXMXBZMGx1WkdWNGFXNW5BRlZ1YVdadmNtMVVaWGhsYkVKMVptWmxja0Z5Y21GNVJIbHVZVzFwWTBsdVpHVjRhVzVuQUZOMGIzSmhaMlZVWlhobGJFSjFabVpsY2tGeWNtRjVSSGx1WVcxcFkwbHVaR1Y0YVc1bkFGTjBiM0poWjJWQ2RXWm1aWEpCY25KaGVVUjVibUZ0YVdOSmJtUmxlR2x1WndCVGRHOXlZV2RsU1cxaFoyVkJjbkpoZVVSNWJtRnRhV05KYm1SbGVHbHVad0JUWVcxd2JHVmtTVzFoWjJWQmNuSmhlVVI1Ym1GdGFXTkpibVJsZUdsdVp3QjFjMmx1WndCVFVGWmZTVTVVUlV4ZmJXVnRiM0o1WDJGalkyVnpjMTloYkdsaGMybHVad0JrYVhOaFlteGxYM1poYkdsa1lYUnBiMjVmWDJsbmJtOXlaVjl3YjJsdWRHVnlYMkZzYVdGemFXNW5BRk5RVmw5SFQwOUhURVZmWkdWamIzSmhkR1ZmYzNSeWFXNW5BR0poYzJsalgzTjBjbWx1WndCc2FYUmxjbUZzSUhOMGNtbHVad0JCYzFOMGNtbHVad0JCZEhSeWFXSjFkR1Z6SUcxMWMzUWdZbVVnWVc0Z1QzQlRkSEpwYm1jQVJtOXliV0YwVTNSeWFXNW5JRzExYzNRZ1ltVWdZVzRnVDNCVGRISnBibWNBVkhsd1pVNWhiV1VnYlhWemRDQmlaU0JoYmlCUGNGTjBjbWx1WndCRVlYUmhJRzExYzNRZ1ltVWdZVzRnVDNCVGRISnBibWNBUjJWMFJYaDBaVzV6YVc5dVUzUnlhVzVuQUUxbGJXSmxja1JsWTI5eVlYUmxVM1J5YVc1bkFFMWhhMlZUZEhKcGJtY0FjM0IyVDNCamIyUmxVM1J5YVc1bkFGTlFWbDlPVmw5emRHVnlaVzlmZG1sbGQxOXlaVzVrWlhKcGJtY0FkMkZ5Ym1sdVp3QnBiblJsY25CdmJHRjBhVzl1SUhOaGJYQnNhVzVuQUU5d1pXNURUQzVFWldKMVowbHVabTh1TVRBd0lHUmxZblZuSUdKaGMyVWdkSGx3WlNCbGJtTnZaR2x1WndCRmJtTnZaR2x1WndCQVltbHVaR2x1WndCQ2FXNWthVzVuQUhCaFpHUnBibWNBVTJGdGNHeGxVbUYwWlZOb1lXUnBibWNBVTFCV1gwNVdYM0poZVY5MGNtRmphVzVuQUZOUVZsOUxTRkpmY21GNVgzUnlZV05wYm1jQVJHVndkR2hTWlhCc1lXTnBibWNBWm5KdmJuUmZabUZqYVc1bkFHZHNYMFp5YjI1MFJtRmphVzVuQUVkdmIyZHNaU0JUYUdGa1pYSmpJRzkyWlhJZ1IyeHpiR0Z1WndCSGIyOW5iR1VnYzNCcGNtVm5ad0JUVUZaZlNVNVVSVXhmWm5CbllWOXlaV2NBYldGNGJXRm5BRzFwYm0xaFp3QndjbWx1ZEdZQVpYSm1BRVY0Y0dWamRHVmtJRU52Ym5OMGFYUjFaVzUwY3lCMGJ5QmlaU0J6WTJGc1lYSnpJRzl5SUhabFkzUnZjbk1nYjJZQWFXNW1BRTV2ZEVsdVpnQnBjMGx1WmdCSmMwbHVaZ0IyYzNSdmNtVmZhR0ZzWmdCMmJHOWhaRjlvWVd4bUFHVnNjMlZwWmdCdlptWUFkVjloWW5OZlpHbG1aZ0J6WDJGaWMxOWthV1ptQUZCMGNrUnBabVlBZEc5MFlXd2dkMjl5YTJkeWIzVndJR2R5YVdRZ2MybDZaU0JqWVc1dWIzUWdaWGhqWldWa0lEQjRabVptWm1abVptWUFiMlptYzJWMElDRTlJREI0Wm1abVptWm1abVlBUTI5dWRISmhZM1JwYjI1UFptWUFXR1JsY21WbUFFUmxjbVZtQUdSbGNIUm9YM0psWmdCRVpXSjFaMDFoWTNKdlZXNWtaV1lBZEhsd1pXUmxaZ0JFWldKMVoxUjVjR1ZrWldZQVJHVmlkV2ROWVdOeWIwUmxaZ0J0YjJSbUFFMXZaR1lBVTJsNlpVOW1BQ1V1TUV4bUFDVk1aZ0JTWnpFMlpnQlNaMkpoTVRabUFGSXhObVlBYldGME5IZzBaZ0J0WVhRemVEUm1BRzFoZERKNE5HWUFkbVZqTkdZQWJXRjBOSGd6WmdCdFlYUXplRE5tQUcxaGRESjRNMllBZG1Wak0yWUFiV0YwTkhneVpnQnRZWFF6ZURKbUFHMWhkREo0TW1ZQWRtVmpNbVlBVW1jek1tWUFVbWRpWVRNeVpnQlNNekptQUZJeE1XWkhNVEZtUWpFd1pnQmZYM0J2YVc1MFgzTnBlbVVBZDI5eWEyZHliM1Z3WDNOcGVtVUFRRzltWm5ObGRDQmpZVzV1YjNRZ1ltVWdkWE5sWkNCM2FYUm9JRUJoYkdsbmJpQnZjaUJBYzJsNlpRQnBiblpoYkdsa0lIWmxZM1J2Y2lCemQybDZlbXhsSUhOcGVtVUFabUZ6ZEY5dWIzSnRZV3hwZW1VQWQyaGxiaUJqWVd4amRXeGhkR2x1WnlCdWIzSnRZV3hwZW1VQVRtOXliV0ZzYVhwbEFFNWhiV1ZrUW1GeWNtbGxja2x1YVhScFlXeHBlbVVBWDNScGJuUmZiV0YwWlhKcFlXeHBlbVVBZEdsdWREbzZjMlZ0T2pwTllYUmxjbWxoYkdsNlpRQkpiV0ZuWlZGMVpYSjVVMmw2WlFCVGNHVmpRMjl1YzNSaGJuUlRkV0puY205MWNFMWhlRk5wZW1VQVIyVnZiV1YwY25sUWIybHVkRk5wZW1VQVZHVnpjMlZzYkdGMGFXOXVVRzlwYm5SVGFYcGxBR2RzWDFCdmFXNTBVMmw2WlFCblpYUlRhWHBsQUZaaGJHbGtZWFJsUTI5dWMzUnlkV04wVTJsNlpRQlRjR1ZqUTI5dWMzUmhiblJYYjNKclozSnZkWEJUYVhwbEFFVnVjWFZsZFdWa1YyOXlhMmR5YjNWd1UybDZaUUJRY205d1pYSjBlVkpsY1hWcGNtVmtWMjl5YTJkeWIzVndVMmw2WlFCdGRYTjBJR0psSUdFZ1kyOXVjM1JoYm5RZ1ptOXlJRmR2Y210bmNtOTFjRk5wZW1VQVUzVmlaM0p2ZFhCVGFYcGxBRWRsZEV0bGNtNWxiRmR2Y210SGNtOTFjRk5wZW1VQVoyeGZWMjl5YTBkeWIzVndVMmw2WlFCSFpYUkxaWEp1Wld4T1JISmhibWRsVFdGNFUzVmlSM0p2ZFhCVGFYcGxBRkIxYzJoRGIyNXpkR0Z1ZEVWdWNYVmxkV1ZrVEc5allXeFRhWHBsQUZCMWMyaERiMjV6ZEdGdWRFZHNiMkpoYkZOcGVtVUFSMlYwVUd4aGJtVkRiMjl5WkZOcGVtVUFVMmxuYm1Wa1dtVnliMGx1Wms1aGJsQnlaWE5sY25abEFFUmxibTl5YlZCeVpYTmxjblpsQUZaaGJIWmxBRVZ1WkZOMGNtVmhiVkJ5YVcxcGRHbDJaUUJGYm1SUWNtbHRhWFJwZG1VQVpHbHlaV04wYVhabEFIUnBiblE2T21GemREbzZSR2xoWjI1dmMzUnBZMFJwY21WamRHbDJaUUJ3WlhKemNHVmpkR2wyWlFCT2IxQmxjbk53WldOMGFYWmxBRWR5YjNWd1RtOXVWVzVwWm05eWJWTm9kV1ptYkdWU1pXeGhkR2wyWlFCQVozSnZkWEFnZG1Gc2RXVWdiWFZ6ZENCaVpTQnViMjR0Ym1WbllYUnBkbVVBUUd4dlkyRjBhVzl1SUhaaGJIVmxJRzExYzNRZ1ltVWdibTl1TFc1bFoyRjBhWFpsQUVCaWFXNWthVzVuSUhaaGJIVmxJRzExYzNRZ1ltVWdibTl1TFc1bFoyRjBhWFpsQUVCcFpDQjJZV3gxWlNCdGRYTjBJR0psSUc1dmJpMXVaV2RoZEdsMlpRQmZjMkYyWlFCMGNuVmxBRk53WldORGIyNXpkR0Z1ZEZSeWRXVUFVMUJXWDFaQlRFbEVRVlJQVWw5cFoyNXZjbVZmZEhsd1pWOWtaV05zWDNWdWFYRjFaUUJBYVdRZ2RtRnNkV1Z6SUcxMWMzUWdZbVVnZFc1cGNYVmxBRlI1Y0dWUGNHRnhkV1VBWTI5dWRHbHVkV1VBWTI5dWRHbHVkV1ZmWTI5dWMzUnlkV04wTFQ1MGVYQmxLQ2tnUFQwZ1EyOXVjM1J5ZFdOMFZIbHdaVG82YTBOdmJuUnBiblZsQUdsdWRHVnlibUZzSUdWeWNtOXlPaUIxYm5OMWNIQnZjblJsWkNCamIyNXpkSEoxWTNRZ2JtVnpkR2x1WnpvZ1EyOXVkR2x1ZFdVZ1lYSnZkVzVrSUVOdmJuUnBiblZsQUc5c1pGOTJZV3gxWlFCaGNuSmhlWE1nWkdWamIzSmhkR1ZrSUhkcGRHZ2dkR2hsSUhOMGNtbGtaU0JoZEhSeWFXSjFkR1VnYlhWemRDQm9ZWFpsSUdFZ2MzUnlhV1JsSUhSb1lYUWdhWE1nWVhRZ2JHVmhjM1FnZEdobElITnBlbVVnYjJZZ2RHaGxJR1ZzWlcxbGJuUWdkSGx3WlN3Z1lXNWtJR0psSUdFZ2JYVnNkR2x3YkdVZ2IyWWdkR2hsSUdWc1pXMWxiblFnZEhsd1pTZHpJR0ZzYVdkdWJXVnVkQ0IyWVd4MVpRQXBJR05oYkd4bFpDQnZiaUJsZUhCeVpYTnphVzl1SUhkcGRHZ2dibThnWTI5dWMzUmhiblFnZG1Gc2RXVUFRRzltWm5ObGRDQjJZV3gxWlFBZ1puSnZiU0JoSUdSbGNIUm9JR2x0WVdkbElISmxZV1FnZEc4Z2NtVnpkV3gwSUdsdUlHRWdjMk5oYkdGeUlHWnNiMkYwSUhaaGJIVmxBRXh2WTJGMGFXOXVJR2hoY3lCdWJ5QjJZV3gxWlFCQWJHOWpZWFJwYjI0Z2RtRnNkV1VBU1c1MllXeHBaQ0JYYjNKclozSnZkWEJUYVhwbElHSjFhV3gwYVc0Z2RtRnNkV1VBWTI5dWRISnZiQ0JtYkc5M0lHUmxjR1Z1WkhNZ2IyNGdjRzl6YzJsaWJIa2dibTl1TFhWdWFXWnZjbTBnZG1Gc2RXVUFKeUJ0WVhrZ2NtVnpkV3gwSUdsdUlHRWdibTl1TFhWdWFXWnZjbTBnZG1Gc2RXVUFZMjl1ZEdWNGRDMXBibk5sYm5OcGRHbDJaU0IyWVd4MVpRQXBJSEpsZEhWeWJtVmtJR2x1ZG1Gc2FXUWdkbUZzZFdVQUlHbHpJR0VnZEhsd1pTd2dibTkwSUdFZ2RtRnNkV1VBSnlCa2IyVnpJRzV2ZENCeVpYUjFjbTRnWVNCMllXeDFaUUJBYlhWemRGOTFjMlVnWTJGdUlHOXViSGtnWW1VZ1lYQndiR2xsWkNCMGJ5Qm1kVzVqZEdsdmJuTWdkR2hoZENCeVpYUjFjbTRnWVNCMllXeDFaUUJqWVhObElITmxiR1ZqZEc5eUlHMTFjM1FnWW1VZ1lXNGdhVE15SUc5eUlIVXpNaUIyWVd4MVpRQkFaM0p2ZFhBZ2JYVnpkQ0JpWlNCaGJpQnBNeklnYjNJZ2RUTXlJSFpoYkhWbEFFQnNiMk5oZEdsdmJpQnRkWE4wSUdKbElHRnVJR2t6TWlCdmNpQjFNeklnZG1Gc2RXVUFRR0ZzYVdkdUlHMTFjM1FnWW1VZ1lXNGdhVE15SUc5eUlIVXpNaUIyWVd4MVpRQkFZbWx1WkdsdVp5QnRkWE4wSUdKbElHRnVJR2t6TWlCdmNpQjFNeklnZG1Gc2RXVUFRSE5wZW1VZ2JYVnpkQ0JpWlNCaGJpQnBNeklnYjNJZ2RUTXlJSFpoYkhWbEFFQnBaQ0J0ZFhOMElHSmxJR0Z1SUdrek1pQnZjaUIxTXpJZ2RtRnNkV1VBUm14aFoxUjVjR1ZRWVhOelFubFdZV3gxWlFCSFpYUlZOalJDYVhSV1lXeDFaUUJIWlhSVE5qUkNhWFJXWVd4MVpRQkhaWFJWTXpKQ2FYUldZV3gxWlFCSFpYUlRNekpDYVhSV1lXeDFaUUJIWlhSR2JHOWhkRlpoYkhWbEFGSmxkSFZ5YmxaaGJIVmxBRk4wWVdOclZtRnNkV1VBUTI5dGNIVjBaVWhoYzJoV1lXeDFaUUJFWldKMVoxWmhiSFZsQUVkbGRGcGxjbTlGZUhSbGJtUmxaRlpoYkhWbEFFZGxkRk5wWjI1RmVIUmxibVJsWkZaaGJIVmxBSFJwYm5RNk9tTnZibk4wWVc1ME9qcFdZV3gxWlFCRVpYWnBZMlZGYm5GMVpYVmxBRWRsZEVSbFptRjFiSFJSZFdWMVpRQlVlWEJsVVhWbGRXVUFWSFZsQUZOUVZsOUpUbFJGVEY5MlpXTjBiM0pmWTI5dGNIVjBaUUJIVEVOdmJYQjFkR1VBWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5SUdGMGRISnBZblYwWlFCcGJuUmxaM0poYkNCMWMyVnlMV1JsWm1sdVpXUWdkbVZ5ZEdWNElHOTFkSEIxZEhNZ2JYVnpkQ0JvWVhabElHRWdabXhoZENCcGJuUmxjbkJ2YkdGMGFXOXVJR0YwZEhKcFluVjBaUUJwYm5SbFozSmhiQ0IxYzJWeUxXUmxabWx1WldRZ1puSmhaMjFsYm5RZ2FXNXdkWFJ6SUcxMWMzUWdhR0YyWlNCaElHWnNZWFFnYVc1MFpYSndiMnhoZEdsdmJpQmhkSFJ5YVdKMWRHVUFiV2x6YzJsdVp5QmxiblJ5ZVNCd2IybHVkQ0JKVHlCaGRIUnlhV0oxZEdVQWRHbHVkRG82WVhOME9qcEpiblpoY21saGJuUkJkSFJ5YVdKMWRHVUFkR2x1ZERvNllYTjBPanBUZEhKMVkzUk5aVzFpWlhKUFptWnpaWFJCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwWGIzSnJaM0p2ZFhCQmRIUnlhV0oxZEdVQWRHbHVkRG82WVhOME9qcEhjbTkxY0VGMGRISnBZblYwWlFCMGFXNTBPanBoYzNRNk9rUnBjMkZpYkdWV1lXeHBaR0YwYVc5dVFYUjBjbWxpZFhSbEFIUnBiblE2T21GemREbzZURzlqWVhScGIyNUJkSFJ5YVdKMWRHVUFkR2x1ZERvNllYTjBPanBDZFdsc2RHbHVRWFIwY21saWRYUmxBSFJwYm5RNk9tRnpkRG82VTNSeWRXTjBUV1Z0WW1WeVFXeHBaMjVCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwSmJuUmxjbTVoYkVGMGRISnBZblYwWlFCMGFXNTBPanBoYzNRNk9rSnBibVJwYm1kQmRIUnlhV0oxZEdVQWRHbHVkRG82WVhOME9qcFRkSEoxWTNSTlpXMWlaWEpUYVhwbFFYUjBjbWxpZFhSbEFIUnBiblE2T21GemREbzZTVzUwWlhKd2IyeGhkR1ZCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwTmRYTjBWWE5sUVhSMGNtbGlkWFJsQUhScGJuUTZPbUZ6ZERvNlUzUmhaMlZCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwVGRISnBaR1ZCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwSlpFRjBkSEpwWW5WMFpRQjBhVzUwT2pwaGMzUTZPa1JwWVdkdWIzTjBhV05CZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwQmRIUnlhV0oxZEdVQVUxQldYMHRJVWw5emRXSm5jbTkxY0Y5MmIzUmxBRzV2ZEdVQVIzSnZkWEJPYjI1VmJtbG1iM0p0Vm05MFpRQlRVRlpmU1U1VVJVeGZiRzl1WjE5amIyNXpkR0Z1ZEY5amIyMXdiM05wZEdVQWRXNXBiWEJzWlcxbGJuUmxaRG9nVDNCVGNHVmpRMjl1YzNSaGJuUlBjQ0JoYm1RZ1QzQlRjR1ZqUTI5dWMzUmhiblJEYjIxd2IzTnBkR1VBUkdWaWRXZFVlWEJsUTI5dGNHOXphWFJsQUhScGJuUTZPbU52Ym5OMFlXNTBPanBEYjIxd2IzTnBkR1VBY21WaFpGOTNjbWwwWlFBZ2QzSnBkR1VBVG05WGNtbDBaUUJKYldGblpWZHlhWFJsQUU1dlVtVmhaRmR5YVhSbEFFbHRZV2RsVW1WaFpGZHlhWFJsQUVSbGNHVnVaR1Z1WTNsSmJtWnBibWwwWlFCSmMwWnBibWwwWlFCd2NtbDJZWFJsQUVac1lXZEpjMUJ5YVhaaGRHVUFVMUJXWDB0SVVsOXpkV0puY205MWNGOXliM1JoZEdVQWMyRjBkWEpoZEdVQVQzQkVaV052Y21GMFpTd2dUM0JFWldOdmNtRjBaVWxrTENCaGJtUWdUM0JIY205MWNFMWxiV0psY2tSbFkyOXlZWFJsQUVkeWIzVndSR1ZqYjNKaGRHVUFaR1ZqYjNKaGRHbHZiaTV2Y0dOdlpHVW9LU0E5UFNCemNIWTZPazl3T2pwUGNFUmxZMjl5WVhSbEFGTlFWbDlMU0ZKZlpuSmhaMjFsYm5SZmMyaGhaR2x1WjE5eVlYUmxBRk5RVmw5T1ZsOXphR0ZrYVc1blgzSmhkR1VBYzJoaFpHbHVaeUJ5WVhSbEFHUnZaWE1nYm05MElITjBjbWxqZEd4NUlITjBjblZqZEhWeVlXeHNlU0JrYjIxcGJtRjBaUUJrYjJWeklHNXZkQ0J6ZEhKMVkzUjFjbUZzYkhrZ1pHOXRhVzVoZEdVQVJHVmlkV2RVZVhCbFZHVnRjR3hoZEdVQWFXNTBaWEp3YjJ4aGRHVUFVMDVsWjJGMFpRQkdUbVZuWVhSbEFGVndaR0YwWlFCVFVGWmZTVTVVUlV4ZmJHOXZjRjltZFhObEFITjNhWFJqYUNCemRHRjBaVzFsYm5RZ2JYVnpkQ0JvWVhabElHVjRZV04wYkhrZ2IyNWxJR1JsWm1GMWJIUWdZMnhoZFhObEFITjNhWFJqYUNCemRHRjBaVzFsYm5RZ2JYVnpkQ0JvWVhabElHRWdaR1ZtWVhWc2RDQmpiR0YxYzJVQUp5QmhibTV2ZEdGMFpXUWdkMmwwYUNCQWJYVnpkRjkxYzJVQVRXRjBjbWw0U1c1MlpYSnpaUUJDYVhSU1pYWmxjbk5sQUdSd1pIbERiMkZ5YzJVQVJGQmtlVU52WVhKelpRQmtjR1I0UTI5aGNuTmxBRVJRWkhoRGIyRnljMlVBWm5kcFpIUm9RMjloY25ObEFFWjNhV1IwYUVOdllYSnpaUUIwY21GdWMzQnZjMlVBVkhKaGJuTndiM05sQUdWc2MyVUFabUZzYzJVQVUzQmxZME52Ym5OMFlXNTBSbUZzYzJVQVkyOXVkSEp2YkNCaVlYSnlhV1Z5SUhObGJXRnVkR2xqY3lCeVpYRjFhWEpsY3lCaFkzRjFhWEpsSUdGdVpDQnlaV3hsWVhObEFFRmpjWFZwY21WU1pXeGxZWE5sQUhCeVpYWnBiM1Z6SUdSbFptRjFiSFFnWTJGelpRQmljbVZoYXlCemRHRjBaVzFsYm5RZ2JYVnpkQ0JpWlNCcGJpQmhJR3h2YjNBZ2IzSWdjM2RwZEdOb0lHTmhjMlVBZEhsd1pTZ3BJQ0U5SUVOdmJuTjBjblZqZEZSNWNHVTZPbXREWVhObEFIUnBiblE2T25ObGJUbzZRblZwYkhScGJrVnVkVzFGZUhCeVpYTnphVzl1UW1GelpRQkRZWE4wWVdKc1pVSmhjMlVBZmtsdWRISjFjMmwyWlU1dlpHVkNZWE5sQUVGdVlXeDVlbVZKYm5OMFZYTmxBRmRvYVd4bFJXRmphRlZ6WlFCUGNGTmhiWEJzWlhKSmJXRm5aVUZrWkhKbGMzTnBibWROYjJSbFRsWWdjM1Z3Y0c5eWRHVmtJRzl1YkhrZ2QybDBhQ0JsZUhSbGJuTnBiMjRnVTFCV1gwNVdYMkpwYm1Sc1pYTnpYM1JsZUhSMWNtVUFkR2x1ZERvNmRIbHdaVG82UlhoMFpYSnVZV3hVWlhoMGRYSmxBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2tSbGNIUm9WR1Y0ZEhWeVpRQjBhVzUwT2pwMGVYQmxPanBFWlhCMGFGUmxlSFIxY21VQWRHbHVkRG82Y21WaFpHVnlPanB6Y0dseWRqbzZVM1J2Y21GblpWUmxlSFIxY21VQWRHbHVkRG82ZEhsd1pUbzZVM1J2Y21GblpWUmxlSFIxY21VQWRHbHVkRG82Y21WaFpHVnlPanB6Y0dseWRqbzZSR1Z3ZEdoTmRXeDBhWE5oYlhCc1pXUlVaWGgwZFhKbEFIUnBiblE2T25SNWNHVTZPa1JsY0hSb1RYVnNkR2x6WVcxd2JHVmtWR1Y0ZEhWeVpRQjBhVzUwT2pweVpXRmtaWEk2T25Od2FYSjJPanBOZFd4MGFYTmhiWEJzWldSVVpYaDBkWEpsQUhScGJuUTZPblI1Y0dVNk9rMTFiSFJwYzJGdGNHeGxaRlJsZUhSMWNtVUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82VTJGdGNHeGxaRlJsZUhSMWNtVUFkR2x1ZERvNmRIbHdaVG82VTJGdGNHeGxaRlJsZUhSMWNtVUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82VkdWNGRIVnlaUUIwYVc1ME9qcDBlWEJsT2pwVVpYaDBkWEpsQUU1dlEyRndkSFZ5WlFCR2IzSjNZWEprSUhCdmFXNTBaWEp6SUcxMWMzUWdjRzlwYm5RZ2RHOGdZU0J6ZEhKMVkzUjFjbVVBVTNSeWRXTjBkWEpsQUVsdWRHVnlibUZzSUdWeWNtOXlPaUIxYm1oaGJtUnNaV1FnYUdWaFpHVnlJSEJoY25ObElHWmhhV3gxY21VQVVIVnlaUUIwWlhoMGRYSmxVM1J2Y21VQVlYUnZiV2xqVTNSdmNtVUFRWFJ2YldsalUzUnZjbVVBUTJ4dmJtVkRiMjUwWlhoME9qcEpibk5sY25SQ1pXWnZjbVVvS1NCMlpXTjBiM0lnWkc5bGN5QnViM1FnWTI5dWRHRnBiaUJpWldadmNtVUFTVzV6WlhKMFFtVm1iM0psQUVGamNYVnBjbVVBY0hKbGRtbHZkWE1nWkdWbWFXNXBkR2x2YmlCcGN5Qm9aWEpsQUdacGNuTjBJQ2R3ZFhOb1gyTnZibk4wWVc1MEp5QjJZWEpwWVdKc1pTQmtaV05zWVhKaGRHbHZiaUJwY3lCb1pYSmxBSE5sWTI5dVpDQW5jSFZ6YUY5amIyNXpkR0Z1ZENjZ2RtRnlhV0ZpYkdVZ1pHVmpiR0Z5WVhScGIyNGdhWE1nYUdWeVpRQW5JSEpsWm1WeVpXNWpaV1FnYVc0Z1kyOXVkR2x1ZFdsdVp5QmliRzlqYXlCb1pYSmxBSE5sWlNCamIyNTBhVzUxYVc1bklHSnNiMk5ySUdobGNtVUFZV3hwWVhObGN5QjNhWFJvSUdGdWIzUm9aWElnWVhKbmRXMWxiblFnY0dGemMyVmtJR2hsY21VQUp5QndjbVYyYVc5MWMyeDVJR1JsWTJ4aGNtVmtJR2hsY21VQWRtRnlhV0ZpYkdVZ2FYTWdaR1ZqYkdGeVpXUWdhR1Z5WlFBbklHbHpJR1JsWTJ4aGNtVmtJR2hsY21VQVptbHljM1FnWVhSMGNtbGlkWFJsSUdSbFkyeGhjbVZrSUdobGNtVUFjSEpsZG1sdmRYTWdZMkZ6WlNCa1pXTnNZWEpsWkNCb1pYSmxBR1pwY25OMElISmxjMjkxY21ObElHSnBibVJwYm1jZ2RYTmhaMlVnWkdWamJHRnlaV1FnYUdWeVpRQW5JR1JsWTJ4aGNtVmtJR2hsY21VQUp5Qm9aWEpsQUhSbGVIUjFjbVZIWVhSb1pYSkRiMjF3WVhKbEFIUmxlSFIxY21WVFlXMXdiR1ZEYjIxd1lYSmxBRVJsWW5WblJHVmpiR0Z5WlFCcGJuWmhiR2xrWDNOd2FYSjJYM0IwY2w5MGVYQmxBRk5RVmw5SFQwOUhURVZmZFhObGNsOTBlWEJsQUcxbGJXSmxjbDkwZVhCbEFEZ3RJRzl5SURFMkxXSnBkQ0J6ZEc5eVpYTWdiWFZ6ZENCaVpTQmhJSE5qWVd4aGNpd2dkbVZqZEc5eUlHOXlJRzFoZEhKcGVDQjBlWEJsQURndElHOXlJREUyTFdKcGRDQnNiMkZrY3lCdGRYTjBJR0psSUdFZ2MyTmhiR0Z5TENCMlpXTjBiM0lnYjNJZ2JXRjBjbWw0SUhSNWNHVUFSWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZU0J0WVhSeWFYZ2dkSGx3WlFCbGVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCaElETXlMV0pwZENCcGJuUWdkSGx3WlFCellXMXdiR1ZrSUdsdFlXZGxJRzExYzNRZ2FHRjJaU0JtYkc5aGRDQmpiMjF3YjI1bGJuUWdkSGx3WlFCRmVIQmxZM1JsWkNCRGIyNXpkR2wwZFdWdWRDQjBlWEJsSUhSdklHSmxJR1Z4ZFdGc0lIUnZJSFJvWlNCamIyMXdiMjVsYm5RZ2RIbHdaUUJoY25KaGVTQmpiMjV6ZEhKMVkzUnZjaUJvWVhNZ2JtOXVMV052Ym5OMGNuVmpkR2xpYkdVZ1pXeGxiV1Z1ZENCMGVYQmxBRTl3UTI5d2VVOWlhbVZqZENCallXNXViM1FnYUdGMlpTQjJiMmxrSUhKbGMzVnNkQ0IwZVhCbEFFOXdVR2hwSUcxMWMzUWdibTkwSUdoaGRtVWdkbTlwWkNCeVpYTjFiSFFnZEhsd1pRQjFibWx0Y0d4bGJXVnVkR1ZrT2lCUGNFMWxiV0psY2tSbFkyOXlZWFJsSUc1dmJpMXpkSEoxWTNRZ2RIbHdaUUJGZUhCbFkzUmxaQ0JFY21WbUlIUnZJR0psSUc5bUlETXlMV0pwZENCbWJHOWhkQ0IwZVhCbEFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdNVFlnYjNJZ016SXRZbWwwSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0lnWm14dllYUWdkSGx3WlFCbGVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCaElITmpZV3hoY2lCdmNpQjJaV04wYjNJZ1pteHZZWFFnZEhsd1pRQldZWEpwWVdKc1pYTWdhV1JsYm5ScFptbGxaQ0IzYVhSb0lIUm9aU0JUZEc5eVlXZGxRblZtWm1WeUlITjBiM0poWjJVZ1kyeGhjM01nWVhKbElIVnpaV1FnZEc4Z1lXTmpaWE56SUhSeVlXNXpjR0Z5Wlc1MElHSjFabVpsY2lCaVlXTnJaV1FnY21WemIzVnlZMlZ6TGlCVGRXTm9JSFpoY21saFlteGxjeUJ0ZFhOMElHSmxJSFI1Y0dWa0lHRnpJRTl3Vkhsd1pWTjBjblZqZEN3Z2IzSWdZVzRnWVhKeVlYa2diMllnZEdocGN5QjBlWEJsQUNCaVlYTmxaQ0J2YmlCMGFHVWdablZ1WTNScGIyNG5jeUIwZVhCbEFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElETXlMV0pwZENCbWJHOWhkQ0F6TFdOdmJYQnZibVZ1ZENCMlpXTjBiM0lnZEhsd1pRQmxlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQXpNaTFpYVhRZ1pteHZZWFFnTWkxamIyMXdiMjVsYm5RZ2RtVmpkRzl5SUhSNWNHVUFaWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZVzRnYVc1MElHOXlJR1pzYjJGMElIWmxZM1J2Y2lCMGVYQmxBQ0IwYnlCaVpTQnBiblFnYjNJZ1pteHZZWFFnZG1WamRHOXlJSFI1Y0dVQVJYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnWW1VZ1pteHZZWFFnZG1WamRHOXlJSFI1Y0dVQVpYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnWW1VZ1lTQm1iRzloZENCMlpXTjBiM0lnZEhsd1pRQmxlSEJsWTNSbFpDQmtZWFJoSUhSNWNHVWdiMllnZEdobElIQnZhVzUwWlhJZ2RHOGdZbVVnWVNBek1pMWlhWFFnYVc1MElITmpZV3hoY2lCdmNpQjJaV04wYjNJZ2RIbHdaUUJsZUhCbFkzUmxaQ0JTWlhOMWJIUWdWSGx3WlNCMGJ5QmlaU0JoSURNeUxXSnBkQ0JwYm5RZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCMGVYQmxBR1Y0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR0Z1SUdsdWRDQnpZMkZzWVhJZ2IzSWdkbVZqZEc5eUlIUjVjR1VBWlhod1pXTjBaV1FnVG1GdVkyOWtaU0IwYnlCaVpTQmhiaUJwYm5RZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCMGVYQmxBRVY0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR2x1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5SUhSNWNHVUFaWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZVzRnYVc1MElHOXlJR1pzYjJGMElITmpZV3hoY2lCdmNpQjJaV04wYjNJZ2RIbHdaUUFnZEc4Z1ltVWdhVzUwSUc5eUlHWnNiMkYwSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0lnZEhsd1pRQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGZ2dkRzhnWW1VZ2IyWWdabXh2WVhRZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCMGVYQmxBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdVREVnZEc4Z1ltVWdiMllnWm14dllYUWdjMk5oYkdGeUlHOXlJSFpsWTNSdmNpQjBlWEJsQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVURBZ2RHOGdZbVVnYjJZZ1pteHZZWFFnYzJOaGJHRnlJRzl5SUhabFkzUnZjaUIwZVhCbEFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdabXh2WVhRZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCMGVYQmxBRUJzYjJOaGRHbHZiaUJ0ZFhOMElHOXViSGtnWW1VZ1lYQndiR2xsWkNCMGJ5QmtaV05zWVhKaGRHbHZibk1nYjJZZ2JuVnRaWEpwWXlCelkyRnNZWElnYjNJZ2JuVnRaWEpwWXlCMlpXTjBiM0lnZEhsd1pRQkVaWEpsWm1WeVpXNWpaU2dwSUdOaGJHeGxaQ0J2YmlCdWIyNHRjRzlwYm5SbGNpQjBlWEJsQUNCcGN5QnViM1FnY0c5cGJuUmxjaUIwZVhCbEFHMTFjM1FnWW1VZ1lXNGdZWEp5WVhrZ2IzSWdjRzlwYm5SbGNpQjBlWEJsQUNCaVlYTmxJSEJ2YVc1MFpYSWdhWE1nYm05MElHOW1JSEJ2YVc1MFpYSWdkSGx3WlFCdGRYTjBJR0psSUdFZ2NHOXBiblJsY2lCMGVYQmxBQ2NnZEc4Z0oxOG5MaUFuWHljZ1kyRnVJRzl1YkhrZ1ltVWdZWE56YVdkdVpXUWdZU0JqYjI1emRISjFZM1JwWW14bExDQndiMmx1ZEdWeUxDQjBaWGgwZFhKbElHOXlJSE5oYlhCc1pYSWdkSGx3WlFBNklHVjRjR1ZqZEdWa0lGQnZhVzUwWlhJZ2RHOGdjRzlwYm5RZ2RHOGdZU0IyWVd4MVpTQnZaaUF6TWkxaWFYUWdhVzUwWldkbGNpQjBlWEJsQUhOM2FYUmphQ0J6ZEdGMFpXMWxiblFnYzJWc1pXTjBiM0lnWlhod2NtVnpjMmx2YmlCdGRYTjBJR0psSUc5bUlHRWdjMk5oYkdGeUlHbHVkR1ZuWlhJZ2RIbHdaUUJsZUhCbFkzUmxaQ0JTWlhOMWJIUWdWSGx3WlNCMGJ5QmlaU0F6TWkxaWFYUWdhVzUwSUhOallXeGhjaUIwZVhCbEFFVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHbHVkQ0J6WTJGc1lYSWdkSGx3WlFCbGVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNBMk5DMWlhWFFnWm14dllYUWdjMk5oYkdGeUlIUjVjR1VBWlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnTXpJdFltbDBJR1pzYjJGMElITmpZV3hoY2lCMGVYQmxBRU4xY25KbGJuUWdWR2x0WlhNZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCbWJHOWhkQ0J6WTJGc1lYSWdkSGx3WlFBZ2RHOGdZbVVnYVc1MElHOXlJR1pzYjJGMElITmpZV3hoY2lCMGVYQmxBRG9nWlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnYVc1MFpXZGxjaUJ2Y2lCbWJHOWhkQ0J6WTJGc1lYSWdkSGx3WlFBNklHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHWnNiMkYwSUhOallXeGhjaUIwZVhCbEFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdabXh2WVhRZ2MyTmhiR0Z5SUhSNWNHVUFkSGx3WlNCcGN5QlBjRU52Ym5OMFlXNTBJSGRwZEdnZ1lXNGdhVzUwWldkbGNpQnpZMkZzWVhJZ2RIbHdaUUE2SUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdsdWRHVm5aWElnYzJOaGJHRnlJSFI1Y0dVQU5qUXRZbWwwY3lCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5SUhOallXeGhjaUIwZVhCbEFEb2daWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZbTl2YkNCelkyRnNZWElnZEhsd1pRQkZlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQmliMjlzSUhOallXeGhjaUIwZVhCbEFDQnVkVzFsY21sallXd2djMk5oYkdGeUlIUjVjR1VBUlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnWVNCelkyRnNZWElnZEhsd1pRQWdhR0Z6SUc1dklIUjVjR1VBWVNCMlpYSjBaWGdnYzJoaFpHVnlJRzExYzNRZ2FXNWpiSFZrWlNCMGFHVWdKM0J2YzJsMGFXOXVKeUJpZFdsc2RHbHVJR2x1SUdsMGN5QnlaWFIxY200Z2RIbHdaUUFnYjI0Z2NtVjBkWEp1SUhSNWNHVUFjbUY1SUhGMVpYSjVJR05oYm1ScFpHRjBaU0JwYm5SbGNuTmxZM1JwYjI0Z2RIbHdaUUJ5WVhrZ2NYVmxjbmtnWTI5dGJXbDBkR1ZrSUdsdWRHVnljMlZqZEdsdmJpQjBlWEJsQUcxcGMzTnBibWNnWW1sdVlYSjVJRzl3WlhKaGRHbHZiaUIwZVhCbEFGVnVhMjV2ZDI0Z1oyeHZZbUZzSUdSbFkyeGhjbUYwYVc5dUlIUjVjR1VBYVc1MFpYSndiMnhoZEdsdmJpQjBlWEJsQUhWdWEyNXZkMjRnWlhod2NtVnpjMmx2YmlCMGVYQmxBRkpsYzNWc2RDQnZaaUJQY0VWNGNHVmpkRXRJVWlCdGRYTjBJR0psSUdFZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCdlppQnBiblJsWjJWeUlIUjVjR1VnYjNJZ1ltOXZiR1ZoYmlCMGVYQmxBRU52Ym1ScGRHbHZiaUJ2Y0dWeVlXNWtJR1p2Y2lCUGNFSnlZVzVqYUVOdmJtUnBkR2x2Ym1Gc0lHMTFjM1FnWW1VZ2IyWWdZbTl2YkdWaGJpQjBlWEJsQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJqWVc0bmRDQnRZV3RsSUdGemREbzZWbUZ5YVdGaWJHVWdabTl5SUc1MWJHd2dkSGx3WlFCMGNubHBibWNnZEc4Z1kzSmxZWFJsSUc1MWJHd2dkbUZzZFdVZ1ptOXlJR0VnYm5Wc2JDQjBlWEJsQUhWdWEyNXZkMjRnYkdsMFpYSmhiQ0IwZVhCbEFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1VHRnlaVzUwSUcxMWMzUWdZbVVnWTJ4aGMzTWdiM0lnYzNSeWRXTjBJR1JsWW5WbklIUjVjR1VBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JEYUdsc1pDQnRkWE4wSUdKbElHTnNZWE56SUc5eUlITjBjblZqZENCa1pXSjFaeUIwZVhCbEFDQnBjeUJ1YjNRZ1lTQjJZV3hwWkNCa1pXSjFaeUIwZVhCbEFFOXdaVzVEVEM1RVpXSjFaMGx1Wm04dU1UQXdJR1JsWW5WbklHTnZiWEJ2YzJsMFpTQjBlWEJsQUVWNGNHVmpkR1ZrSUVOdmJYQnZjMmwwWlNCMGJ5QmlaU0JoYmlCdlltcGxZM1FnYjJZZ1kyOXRjRzl6YVhSbElIUjVjR1VBUlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnWVNCamIyMXdiM05wZEdVZ2RIbHdaUUJNYjJOaGRHbHZiaUJrWldOdmNtRjBhVzl1SUdOaGJpQnZibXg1SUdKbElHRndjR3hwWldRZ2RHOGdZU0IyWVhKcFlXSnNaU0J2Y2lCdFpXMWlaWElnYjJZZ1lTQnpkSEoxWTNSMWNtVWdkSGx3WlFCdGRYTjBJR0psSUdFZ2MzUnlkV04wZFhKbElIUjVjR1VBWlhod1pXTjBaV1FnYjNCbGNtRnVaSE1nV0NCaGJtUWdXU0IwYnlCaVpTQnZaaUIwYUdVZ2MyRnRaU0IwZVhCbEFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1SeklGQXdJR0Z1WkNCUU1TQjBieUJpWlNCdlppQjBhR1VnYzJGdFpTQjBlWEJsQUdWNGNHVmpkR1ZrSUVocElHRnVaQ0JNYnlCdmNHVnlZVzVrY3lCMGJ5Qm9ZWFpsSUhSb1pTQnpZVzFsSUhSNWNHVUFjM1J5ZFdOMGRYSmxJR052Ym5OMGNuVmpkRzl5SUdoaGN5QnViMjR0WTI5dWMzUnlkV04wYVdKc1pTQjBlWEJsQUdaMWJtTjBhVzl1TFhOamIzQmxJQ2QyWVhJbklHMTFjM1FnYUdGMlpTQmhJR052Ym5OMGNuVmpkR2xpYkdVZ2RIbHdaUUJtZFc1amRHbHZiaUJ5WlhSMWNtNGdkSGx3WlNCdGRYTjBJR0psSUdFZ1kyOXVjM1J5ZFdOMGFXSnNaU0IwZVhCbEFHbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCRGIzVnNaRzRuZENCc2IyOXJJSFZ3SUdsdFlXZGxJSFI1Y0dVQWJHbHVhMkZuWlNCMGVYQmxBRUZrWkhKbGMzTlBaaWdwSUdOaGJHeGxaQ0J2YmlCdWIyNHRjbVZtWlhKbGJtTmxJSFI1Y0dVQVVtVnpkV3gwSUZSNWNHVWdiWFZ6ZENCdWIzUWdaWEYxWVd3Z2RHaGxJRTl3WlhKaGJtUWdkSGx3WlFCU1pYTjFiSFFnVkhsd1pTQmtiMlZ6SUc1dmRDQnNiMmRwWTJGc2JIa2diV0YwWTJnZ2RHaGxJRTl3WlhKaGJtUWdkSGx3WlFCRFlXNXViM1FnWTNKbFlYUmxJSFZ1WkdWbWFXNWxaQ0IyWVd4MVpYTWdkMmwwYUNCMmIybGtJSFI1Y0dVQUlHUmxZMjl5WVhScGIyNGdZWEJ3YkdsbFpDQjBieUJoSUhaaGJIVmxJSGRwZEdnZ2RtOXBaQ0IwZVhCbEFDQmtaV052Y21GMGFXOXVJR0Z3Y0d4cFpXUWdkRzhnWVc0Z2IySnFaV04wSUhkcGRHZ2dhVzUyWVd4cFpDQjBlWEJsQUhWdWFXMXdiR1Z0Wlc1MFpXUTZJSFZ1YUdGdVpHeGxaQ0IwZVhCbEFDQnBjeUJ1YjNRZ1lTQnpZMkZzWVhJZ2JuVnRaWEpwWXlCMGVYQmxBSGR2Y210bmNtOTFjRlZ1YVdadmNtMU1iMkZrSUcxMWMzUWdibTkwSUdKbElHTmhiR3hsWkNCM2FYUm9JR0Z1SUdGeVozVnRaVzUwSUhSb1lYUWdZMjl1ZEdGcGJuTWdZVzRnWVhSdmJXbGpJSFI1Y0dVQWFXMWhaMlVnWTJoaGJtNWxiQ0JrWVhSaElIUjVjR1VBSUdseklHNXZkQ0JoSUhSNWNHVUFJSEpsY1hWcGNtVnpJR0VnZEhsd1pRQlNaV3hoZUZCeVpXTnBjMmx2YmlCa1pXTnZjbUYwYVc5dUlHTmhibTV2ZENCaVpTQmhjSEJzYVdWa0lIUnZJR0VnZEhsd1pRQWdZMkZ1Ym05MElHSmxJR0VnZEhsd1pRQkRiMjV6ZEZSNWNHVUFSMlYwUTI5dGNHOXVaVzUwVkhsd1pRQkhaWFJCWTNSMVlXeFNaWE4xYkhSVWVYQmxBRkpsYzNSeWFXTjBWSGx3WlFCdmNHTnZaR1ZmWlc1MGNua3RQbWhoYzFSNWNHVUFjMlYwVG5WdFpYSnBZMVI1Y0dWSmJtWnZSbTl5Vkhsd1pRQlNaV2RwYzNSbGNsUjVjR1VBVW1WbmFYTjBaWEpUWlhSR2RXNWpkR2x2YmtSbFkyeFVlWEJsQUVkbGRFVjRkSEpoWTNSSmJuTmxjblJXWVd4MVpWUjVjR1VBVm05c1lYUnBiR1ZVZVhCbEFGSmxjR3hoWTJWVWVYQmxBRkpsWW5WcGJHUlVlWEJsQUVGMGIyMXBZMVI1Y0dVQWRHbHVkRG82Y21WaFpHVnlPanB6Y0dseWRqbzZWSGx3WlFCMGFXNTBPanAwZVhCbE9qcFVlWEJsQUVWNGNHVmpkR1ZrSUVsdFlXZGxJQ2RUWVcxd2JHVmtJRlI1Y0dVbklIUnZJR0psSUhSb1pTQnpZVzFsSUdGeklIUm9aU0JVZVhCbElIQnZhVzUwWldRZ2RHOGdZbmtnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2RHaGxJR1Y0Y0c5dVpXNTBJSFJ2SUdoaGRtVWdkR2hsSUhOaGJXVWdiblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkSE1nWVhNZ1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdTR2tnWVc1a0lFeHZJRzl3WlhKaGJtUnpJSFJ2SUdoaGRtVWdkR2hsSUhOaGJXVWdiblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkSE1nWVhNZ1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdaR0YwWVNCMGVYQmxJRzltSUhSb1pTQndiMmx1ZEdWeUlIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdZWE1nVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCVGFIVm1abXhsSUUxaGMyc2dkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQnVkVzFpWlhJZ2IyWWdZMjl0Y0c5dVpXNTBjeUJoY3lCU1pYTjFiSFFnVkhsd1pRQmxlSEJsWTNSbFpDQk9ZVzVqYjJSbElIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdZWE1nVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCWUlIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdZWE1nVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCRElIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdZWE1nVW1WemRXeDBJRlI1Y0dVQWJuVnRZbVZ5SUdGeklGSmxjM1ZzZENCVWVYQmxBR1Y0Y0dWamRHVmtJRTVoYm1OdlpHVWdkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQmlhWFFnZDJsa2RHZ2dZWE1nVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCRElIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1ltbDBJSGRwWkhSb0lHRnpJRkpsYzNWc2RDQlVlWEJsQUdWNGNHVmpkR1ZrSUcxaGRISnBlQ0IwZVhCbElHRnpJRkpsYzNWc2RDQlVlWEJsQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVGlCMGJ5QmlaU0J2WmlCMGVYQmxJR1Z4ZFdGc0lIUnZJRkpsYzNWc2RDQlVlWEJsQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnU1NCMGJ5QmlaU0J2WmlCMGVYQmxJR1Z4ZFdGc0lIUnZJRkpsYzNWc2RDQlVlWEJsQUdWNGNHVmpkR1ZrSUhSNWNHVnpJRzltSUdGc2JDQnZjR1Z5WVc1a2N5QjBieUJpWlNCbGNYVmhiQ0IwYnlCU1pYTjFiSFFnVkhsd1pRQmxlSEJsWTNSbFpDQmtZWFJoSUhSNWNHVWdiMllnZEdobElIQnZhVzUwWlhJZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVJYaHdaV04wWldRZ1ZtVmpkRzl5SUdOdmJYQnZibVZ1ZENCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklGSmxjM1ZzZENCVWVYQmxBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdXQ0JqYjIxd2IyNWxiblFnZEhsd1pTQjBieUJpWlNCbGNYVmhiQ0IwYnlCU1pYTjFiSFFnVkhsd1pRQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGQWdZMjl0Y0c5dVpXNTBJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVJYaHdaV04wWldRZ1ZtVmpkRzl5SUhSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z1VtVnpkV3gwSUZSNWNHVUFSWGh3WldOMFpXUWdVMkZ0Y0d4bElFbHRZV2RsSUdsdFlXZGxJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ1NXNTBaWEp3YjJ4aGJuUWdaR0YwWVNCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklGSmxjM1ZzZENCVWVYQmxBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdTU0JrWVhSaElIUjVjR1VnZEc4Z1ltVWdaWEYxWVd3Z2RHOGdVbVZ6ZFd4MElGUjVjR1VBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JaSUhSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQllJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUUlIUjVjR1VnZEc4Z1ltVWdaWEYxWVd3Z2RHOGdVbVZ6ZFd4MElGUjVjR1VBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JDSUhSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQkJJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2RIbHdaU0J2WmlCdmNHVnlZVzVrSUZrZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2RIbHdaU0J2WmlCdmNHVnlZVzVrSUZnZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2JHbDBaWEpoYkNCT0lIUnZJR0psSUdWeGRXRnNJSFJ2SUhSb1pTQnVkVzFpWlhJZ2IyWWdZMjl0Y0c5dVpXNTBjeUJ2WmlCU1pYTjFiSFFnVkhsd1pRQmxlSEJsWTNSbFpDQmlhWFFnZDJsa2RHZ2diMllnWTI5dGNHOXVaVzUwY3lCdlppQklhU0JoYm1RZ1RHOGdiM0JsY21GdVpITWdkRzhnWW1VZ2FHRnNaaUJ2WmlCMGFHVWdZbWwwSUhkcFpIUm9JRzltSUdOdmJYQnZibVZ1ZEhNZ2IyWWdVbVZ6ZFd4MElGUjVjR1VBZEc4Z1ltVWdkR2hsSUhKbGRtVnljMlVnYjJZZ2RHaHZjMlVnYjJZZ1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQlFJR1JoZEdFZ2RIbHdaU0IwYnlCaVpTQmxjWFZoYkNCMGJ5QmpiMjF3YjI1bGJuUWdkSGx3WlNCdlppQlNaWE4xYkhRZ1ZIbHdaUUE2SUdWNGNHVmpkR1ZrSUZCdmFXNTBaWElnZEc4Z2NHOXBiblFnZEc4Z1lTQjJZV3gxWlNCdlppQjBlWEJsSUZKbGMzVnNkQ0JVZVhCbEFEb2daWGh3WldOMFpXUWdRMjl0Y0dGeVlYUnZjaUIwYnlCaVpTQnZaaUIwZVhCbElGSmxjM1ZzZENCVWVYQmxBRG9nWlhod1pXTjBaV1FnVm1Gc2RXVWdkRzhnWW1VZ2IyWWdkSGx3WlNCU1pYTjFiSFFnVkhsd1pRQkpibWwwYVdGc2FYcGxjaUIwZVhCbElHMTFjM1FnYldGMFkyZ2dkR2hsSUhSNWNHVWdjRzlwYm5SbFpDQjBieUJpZVNCMGFHVWdVbVZ6ZFd4MElGUjVjR1VBVm1WamRHOXlJRlI1Y0dVQVVtVjBkWEp1SUZSNWNHVUFRV04wZFdGc0lGUjVjR1VBUW1GelpTQlVlWEJsQUdaMWJtTjBhVzl1Y3lCallXNXViM1FnWW1VZ1kyRnNiR1ZrSUdGMElHMXZaSFZzWlMxelkyOXdaUUJqWVc1dWIzUWdZbVVnY21WbVpYSmxibU5sWkNCaGRDQnRiMlIxYkdVdGMyTnZjR1VBZDI5eWEyZHliM1Z3UW1GeWNtbGxjaUJ5WlhGMWFYSmxjeUIzYjNKclozSnZkWEFnYldWdGIzSjVJSE5qYjNCbEFITjBiM0poWjJWQ1lYSnlhV1Z5SUhKbGNYVnBjbVZ6SUdSbGRtbGpaU0J0WlcxdmNua2djMk52Y0dVQUlHMTFjM1FnWW1VZ1lTQnlaWE4xYkhRZ2FXUWdiMllnWVNCc1pYaHBZMkZzSUhOamIzQmxBRVJsWW5WblRtOVRZMjl3WlFCRVpXSjFaMU5qYjNCbEFGWjFiR3RoYmsxbGJXOXllVTF2WkdWc1JHVjJhV05sVTJOdmNHVUFPaUJXZFd4cllXNGdjM0JsWTJsbWFXTmhkR2x2YmlCeVpYRjFhWEpsY3lCTlpXMXZjbmtnVTJWdFlXNTBhV056SUhSdklHSmxJRTV2Ym1VZ2FXWWdkWE5sWkNCM2FYUm9JRWx1ZG05allYUnBiMjRnVFdWdGIzSjVJRk5qYjNCbEFFZHliM1Z3UTI5dGJXbDBWM0pwZEdWUWFYQmxBRkpsYzJWeWRtVmtWM0pwZEdWUWFYQmxBRlI1Y0dWUWFYQmxBRWR5YjNWd1EyOXRiV2wwVW1WaFpGQnBjR1VBVW1WelpYSjJaV1JTWldGa1VHbHdaUUJLZFc1bEFGTlFWbDlKVGxSRlRGOXZjSFJ1YjI1bEFFTnNiMjVsQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVm1GeWFXRmliR1VnYlhWemRDQmlaU0JoSUhKbGMzVnNkQ0JwWkNCdlppQlBjRlpoY21saFlteGxJRzl5SUU5d1EyOXVjM1JoYm5RZ2IzSWdSR1ZpZFdkSmJtWnZUbTl1WlFBZ1ltRmpheTFsWkdkbElHSnNiMk5yY3lCaWRYUWdkR2hsSUhOMFlXNWtZWEprSUhKbGNYVnBjbVZ6SUdWNFlXTjBiSGtnYjI1bEFFUnZiblJKYm14cGJtVUFWMmx1WlFCRVpXSjFaMDV2VEdsdVpRQkVaV0oxWjB4cGJtVUFVMk52Y0dVZ1RHbHVaUUJrY0dSNVJtbHVaUUJFVUdSNVJtbHVaUUJrY0dSNFJtbHVaUUJFVUdSNFJtbHVaUUJtZDJsa2RHaEdhVzVsQUVaM2FXUjBhRVpwYm1VQVUxQldYMHRJVWw5bGVIQmxZM1JmWVhOemRXMWxBRUJ6YVhwbElHTmhiaUJ2Ym14NUlHSmxJR0Z3Y0d4cFpXUWdkRzhnYldWdFltVnljeUIzYUdWeVpTQjBhR1VnYldWdFltVnlKM01nZEhsd1pTQnphWHBsSUdOaGJpQmlaU0JtZFd4c2VTQmtaWFJsY20xcGJtVmtJR0YwSUhOb1lXUmxjaUJqY21WaGRHbHZiaUIwYVcxbEFFbHRZV2RsSUU5d1pYSmhibVFnWW1sMGN5Qk1iMlFnWVc1a0lFZHlZV1FnWTJGdWJtOTBJR0psSUhObGRDQmhkQ0IwYUdVZ2MyRnRaU0IwYVcxbEFFTnRaRVY0WldOVWFXMWxBRG9nWlhod1pXTjBaV1FnVm1Gc2RXVWdkSGx3WlNCaGJtUWdkR2hsSUhSNWNHVWdjRzlwYm5SbFpDQjBieUJpZVNCUWIybHVkR1Z5SUhSdklHSmxJSFJvWlNCellXMWxBRVY0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUdGdVpDQlBjR1Z5WVc1a0lIUjVjR1VnZEc4Z1ltVWdkR2hsSUhOaGJXVUFUV1Z0WW1WeVRtRnRaUUIwYVc1ME9qcGhjM1E2T2tScFlXZHViM04wYVdOU2RXeGxUbUZ0WlFCTWFXNXJZV2RsSUU1aGJXVUFkR2x1ZERvNmMyVnRPanBUZDJsNmVteGxBRk5RVmw5SlRsUkZURjlrWldKMVoxOXRiMlIxYkdVQWRXNXpkWEJ3YjNKMFpXUTZJRzExYkhScGNHeGxJRkJ2YzJsMGFXOXVJR0oxYVd4MExXbHVJSFpoY21saFlteGxjeUJwYmlCMGFHVWdjMkZ0WlNCdGIyUjFiR1VBYVc1MFpYSnVZV3dnWlhKeWIzSTZJR052ZFd4a2JpZDBJR0oxYVd4a0lIUm9aU0JwYm5SbGNtNWhiQ0J5WlhCeVpYTmxiblJoZEdsdmJpQnZaaUIwYUdVZ2JXOWtkV3hsQUhCaGNuTmxUVzlrZFd4bEFFbHRjRzl5ZEdWa1RXOWtkV3hsQUhScGJuUTZPbUZ6ZERvNlRXOWtkV3hsQUhScGJuUTZPbk5sYlRvNlRXOWtkV3hsQUZOcGJYQnNaUUIxWDNWd2MyRnRjR3hsQUhOZmRYQnpZVzF3YkdVQVUzUnZjbUZuWlVsdFlXZGxUWFZzZEdsellXMXdiR1VBU1c1MFpYSndiMnhoZEdWQmRGTmhiWEJzWlFCMFpYaDBkWEpsVTJGdGNHeGxBRWwwWlhKaGRHbHZiazExYkhScGNHeGxBRWRsZEV0bGNtNWxiRkJ5WldabGNuSmxaRmR2Y210SGNtOTFjRk5wZW1WTmRXeDBhWEJzWlFCM2FHOXNaUUJXYjJ4aGRHbHNaUUIzYUdsc1pRQkdhV3hsQUVkdmIyZHNaUUJ6YUhWbVpteGxBRlpsWTNSdmNsTm9kV1ptYkdVQVIzSnZkWEJPYjI1VmJtbG1iM0p0VTJoMVptWnNaUUJvWVc1a2JHVUFaRzkxWW14bEFIUjVjR1VnYVhNZ2JtOTBJR052Ym5OMGNuVmpkR2xpYkdVQWMzUnZjbUZuWlNCMGVYQmxJRzltSUdGemMybG5ibTFsYm5RZ2JYVnpkQ0JpWlNCamIyNXpkSEoxWTNScFlteGxBSFI1Y0dVZ2IyWWdablZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlJRzExYzNRZ1ltVWdZMjl1YzNSeWRXTjBhV0pzWlFCTllXdGxVRzlwYm5SbGNsWnBjMmxpYkdVQVRXRnJaVlJsZUdWc1ZtbHphV0pzWlFCTllXdGxWbWx6YVdKc1pRQndZWEpoYldWMFpYSnpJR0Z5WlNCcGJXMTFkR0ZpYkdVQUoyTnZibk4wSnlCMllYSnBZV0pzWlhNZ1lYSmxJR2x0YlhWMFlXSnNaUUFuYkdWMEp5QjJZWEpwWVdKc1pYTWdZWEpsSUdsdGJYVjBZV0pzWlFBbmIzWmxjbkpwWkdVbklIWmhjbWxoWW14bGN5QmhjbVVnYVcxdGRYUmhZbXhsQUU1dmJsZHlhWFJoWW14bEFIUnBiblE2T21GemREbzZSVzVoWW14bEFFMWhhMlZRYjJsdWRHVnlRWFpoYVd4aFlteGxBRTFoYTJWVVpYaGxiRUYyWVdsc1lXSnNaUUJOWVd0bFFYWmhhV3hoWW14bEFHRnlaM1Z0Wlc1MGN5QnZaaUJ3YjJsdWRHVnlJSFI1Y0dVZ2JYVnpkQ0J1YjNRZ2NHOXBiblFnZEc4Z1lTQnpkV0p6WlhRZ2IyWWdkR2hsSUc5eWFXZHBibUYwYVc1bklIWmhjbWxoWW14bEFHRnljbUY1SUdOdmRXNTBJRzExYzNRZ1pYWmhiSFZoZEdVZ2RHOGdZU0JqYjI1emRHRnVkQ0JwYm5SbFoyVnlJR1Y0Y0hKbGMzTnBiMjRnYjNJZ2IzWmxjbkpwWkdVZ2RtRnlhV0ZpYkdVQWJYVnpkQ0JpWlNCaElIWmhjbWxoWW14bEFFWnNZV2RKYm1ScGNtVmpkRlpoY21saFlteGxBR0psSUdsdWMzUmhiblJwWVhSbFpDQjJhV0VnVDNCV1lYSnBZV0pzWlFCUVlYbHNiMkZrSUcxMWMzUWdZbVVnZEdobElISmxjM1ZzZENCdlppQmhJRTl3Vm1GeWFXRmliR1VBUTJGc2JHRmliR1VnUkdGMFlTQnRkWE4wSUdKbElIUm9aU0J5WlhOMWJIUWdiMllnWVNCUGNGWmhjbWxoWW14bEFFUmxZblZuVEc5allXeFdZWEpwWVdKc1pRQjBhVzUwT2pwelpXMDZPa3h2WTJGc1ZtRnlhV0ZpYkdVQVJHVmlkV2RIYkc5aVlXeFdZWEpwWVdKc1pRQjBhVzUwT2pwelpXMDZPa2RzYjJKaGJGWmhjbWxoWW14bEFFUmxZblZuU1c1c2FXNWxaRlpoY21saFlteGxBSFJwYm5RNk9tRnpkRG82Vm1GeWFXRmliR1VBZEdsdWREbzZjMlZ0T2pwV1lYSnBZV0pzWlFCTWIyTmhiQ0JXWVhKcFlXSnNaUUJqYjJSbElHbHpJSFZ1Y21WaFkyaGhZbXhsQUZWdWNtVmhZMmhoWW14bEFDY2dZWE1nYVhRZ2FYTWdibTl1TFdodmMzUXRjMmhoY21WaFlteGxBSFJwYm5RNk9rTnNiMjVsWVdKc1pRQnpkRzl5WVdkbElHbHRZV2RsSUhaaGNtbGhZbXhsSUdseklHNWxhWFJvWlhJZ1RtOXVWM0pwZEdGaWJHVWdibTl5SUU1dmJsSmxZV1JoWW14bEFITjBiM0poWjJVZ2FXMWhaMlVnZG1GeWFXRmliR1VnYVhNZ1ltOTBhQ0JPYjI1WGNtbDBZV0pzWlNCaGJtUWdUbTl1VW1WaFpHRmliR1VBSUhkb2FXTm9JR0Z5WlNCMGFHVWdkSEoxWlNCaGJtUWdabUZzYzJVZ1luSmhibU5vWlhNZ1ptOXlJSFJvWlFCd2NtVnRaWEpuWlFCU1pXZHBjM1JsY2t4dmIzQk5aWEpuWlFCVFpXeGxZM1JwYjI1TlpYSm5aUUJCZEc5dGFXTkRiMjF3WVhKbFJYaGphR0Z1WjJVQVlYUnZiV2xqUlhoamFHRnVaMlVBUVhSdmJXbGpSWGhqYUdGdVoyVUFjMmhwWm5RZ2JHVm1kQ0J2Y0dWeVlYUnBiMjRnY21WemRXeDBjeUJwYmlCemFXZHVJR05vWVc1blpRQkNkV2xzWkU1RVVtRnVaMlVBSUdOaGJpZDBJR0psSUdFZ1ltRmpheTFsWkdkbEFIUmxlSFIxY21WVFlXMXdiR1ZDWVhObFEyeGhiWEJVYjBWa1oyVUFjMjkxY21ObElHeGhibWQxWVdkbEFFeGhibWQxWVdkbEFDQndhWEJsYkdsdVpTQnpkR0ZuWlFCallXNXViM1FnWTI5dGNHOXpaU0JzYjJjZ2JXVnpjMkZuWlFCVFVGWmZTMGhTWHpoaWFYUmZjM1J2Y21GblpRQlRVRlpmUzBoU1h6RTJZbWwwWDNOMGIzSmhaMlVBY0dsd1pWOXpkRzl5WVdkbEFIZHZjbXRuY205MWNDQnZjaUJ6ZEc5eVlXZGxBRU52Ym5OMFlXNTBVR2x3WlZOMGIzSmhaMlVBUTNKbFlYUmxVR2x3WlVaeWIyMVFhWEJsVTNSdmNtRm5aUUJVZVhCbFVHbHdaVk4wYjNKaFoyVUFRWFJ2YldsalUzUnZjbUZuWlFCVFVGWmZTMGhTWDNCdmMzUmZaR1Z3ZEdoZlkyOTJaWEpoWjJVQVUxQldYMDVXWDNOaGJYQnNaVjl0WVhOclgyOTJaWEp5YVdSbFgyTnZkbVZ5WVdkbEFGTmhiWEJzWlUxaGMydFFiM04wUkdWd2RHaERiM1psY21GblpRQkhZWFJvWlhJZ2IzQmxjbUYwYVc5dUlHbHpJR2x1ZG1Gc2FXUWdabTl5SUcxMWJIUnBjMkZ0Y0d4bElHbHRZV2RsQUVSeVpXWWdjMkZ0Y0d4cGJtY2diM0JsY21GMGFXOXVJR2x6SUdsdWRtRnNhV1FnWm05eUlHMTFiSFJwYzJGdGNHeGxJR2x0WVdkbEFGTmhiWEJzYVc1bklHOXdaWEpoZEdsdmJpQnBjeUJwYm5aaGJHbGtJR1p2Y2lCdGRXeDBhWE5oYlhCc1pTQnBiV0ZuWlFCRFlYQmhZbWxzYVhSNUlFbHRZV2RsVW1WamRDQnBjeUJ5WlhGMWFYSmxaQ0IwYnlCaFkyTmxjM01nYzNSdmNtRm5aU0JwYldGblpRQkRZWEJoWW1sc2FYUjVJRWx0WVdkbFFuVm1abVZ5SUdseklISmxjWFZwY21Wa0lIUnZJR0ZqWTJWemN5QnpkRzl5WVdkbElHbHRZV2RsQUVOaGNHRmlhV3hwZEhrZ1NXMWhaMlV4UkNCcGN5QnlaWEYxYVhKbFpDQjBieUJoWTJObGMzTWdjM1J2Y21GblpTQnBiV0ZuWlFCMGJ5QnpkRzl5WVdkbElHbHRZV2RsQUVOaGNHRmlhV3hwZEhrZ1UzUnZjbUZuWlVsdFlXZGxUWFZzZEdsellXMXdiR1VnYVhNZ2NtVnhkV2x5WldRZ2QyaGxiaUIxYzJsdVp5QnRkV3gwYVhOaGJYQnNaV1FnYzNSdmNtRm5aU0JwYldGblpRQnlaV0ZrSUhOMGIzSmhaMlVnYVcxaFoyVUFTVzFoWjJVZ1QzQmxjbUZ1WkNCVFlXMXdiR1VnYVhNZ2NtVnhkV2x5WldRZ1ptOXlJRzl3WlhKaGRHbHZiaUJ2YmlCdGRXeDBhUzF6WVcxd2JHVmtJR2x0WVdkbEFGWmhiR2xrWVhSbFNXMWhaMlVBUlhod1pXTjBaV1FnU1cxaFoyVWdkRzhnWW1VZ2IyWWdkSGx3WlNCUGNGUjVjR1ZKYldGblpRQkZlSEJsWTNSbFpDQnZjR1Z5WVc1a0lIUnZJR0psSUc5bUlIUjVjR1VnVDNCVWVYQmxTVzFoWjJVQVJYaHdaV04wWldRZ1NXMWhaMlVnZEc4Z1ltVWdUM0JVZVhCbFVHOXBiblJsY2lCM2FYUm9JRlI1Y0dVZ1QzQlVlWEJsU1cxaFoyVUFSWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdUM0JVZVhCbFNXMWhaMlVBVm1Gc2FXUmhkR1ZVZVhCbFNXMWhaMlVBUlhod1pXTjBaV1FnVTJGdGNHeGxJRWx0WVdkbElIUnZJR0psSUc5bUlIUjVjR1VnVDNCVWVYQmxVMkZ0Y0d4bFNXMWhaMlVBUVhKbmRXMWxiblJUZEc5eVlXZGxTVzFoWjJVQVFYSm5kVzFsYm5SVFlXMXdiR1ZrU1cxaFoyVUFSWGh3WldOMFpXUWdVMkZ0Y0d4bFpDQkpiV0ZuWlNCMGJ5QmlaU0J2WmlCMGVYQmxJRTl3Vkhsd1pWTmhiWEJzWldSSmJXRm5aUUJGZUhCbFkzUmxaQ0JKYldGblpTQnZjR1Z5WVc1a0lIUnZJR0psSUc5bUlIUjVjR1VnVDNCVWVYQmxVMkZ0Y0d4bFpFbHRZV2RsQUVWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUU5d1ZIbHdaVkJ2YVc1MFpYSWdkMmh2YzJVZ1UzUnZjbUZuWlNCRGJHRnpjeUJ2Y0dWeVlXNWtJR2x6SUVsdFlXZGxBRXhwYm10aFoyVUFSWGh3Y21WemMybHZiaWdwSUdScFpDQnViM1FnWm1sdVpDQnliMjkwSUc1dlpHVUFVMUJXWDBsT1ZFVk1YMlp3WDJaaGMzUmZiV0YwYUY5dGIyUmxBRzkyWlhKbWJHOTNJRzF2WkdVQWIyNXNlU0J3YjJsdWRHVnljeUJwYmlBOGMzUnZjbUZuWlQ0Z1lXUmtjbVZ6Y3lCemNHRmpaU0J0WVhrZ2MzQmxZMmxtZVNCaGJpQmhZMk5sYzNNZ2JXOWtaUUJ2Ym14NUlIWmhjbWxoWW14bGN5QnBiaUE4YzNSdmNtRm5aVDRnWVdSa2NtVnpjeUJ6Y0dGalpTQnRZWGtnYzNCbFkybG1lU0JoYmlCaFkyTmxjM01nYlc5a1pRQmhkRzl0YVdNZ2RtRnlhV0ZpYkdWeklHbHVJRHh6ZEc5eVlXZGxQaUJoWkdSeVpYTnpJSE53WVdObElHMTFjM1FnYUdGMlpTQnlaV0ZrWDNkeWFYUmxJR0ZqWTJWemN5QnRiMlJsQUhOaGJYQnNaWElnWm1sc2RHVnlJRzF2WkdVQVpYaGxZM1YwYVc5dUlHMXZaR1VBY1hWaGJuUnBlbUYwYVc5dUlHMXZaR1VBUmxBZ2IzQmxjbUYwYVc5dUlHMXZaR1VBUmxBZ1pHVnViM0p0SUcxdlpHVUFabXh2WVhScGJtY3RjRzlwYm5RZ1ptRnpkQ0J0WVhSb0lHMXZaR1VBYzJGdGNHeGxjaUJoWkdSeVpYTnphVzVuSUcxdlpHVUFabXh2WVhScGJtY3RjRzlwYm5RZ2NtOTFibVJwYm1jZ2JXOWtaUUJQY0ZOd1pXTkRiMjV6ZEdGdWRFOXdJRzl3WTI5a1pRQnpjSFk2T2s5d09qcFBjRVY0ZEVsdWMzUWdQVDBnYjNCamIyUmxBSE53ZGpvNlQzQTZPazl3VTNCbFkwTnZibk4wWVc1MFQzQWdQVDBnYjNCamIyUmxBSFZ1Y21WaFkyaGhZbXhsWDJOdlpHVUFkR2x1ZERvNmRIbHdaVG82Vlc1cGNYVmxUbTlrWlFCMGFXNTBPanBoYzNRNk9rNXZaR1VBZEdsdWREbzZZMjl1YzNSaGJuUTZPazV2WkdVQWRHbHVkRG82YzJWdE9qcE9iMlJsQUhScGJuUTZPblI1Y0dVNk9rNXZaR1VBVUc5cGJuUk5iMlJsQUVWNFpXTjFkR2x2YmsxdlpHVUFSbEJHWVhOMFRXRjBhRTF2WkdVQVJsQlNiM1Z1WkdsdVowMXZaR1VBYUdGc1psOWthWFpwWkdVQWJtRjBhWFpsWDJScGRtbGtaUUJrYVhOaFlteGxYM1poYkdsa1lYUnBiMjVmWDJsbmJtOXlaVjl6ZEhKcFpHVUFUM0JRZEhKQlkyTmxjM05EYUdGcGJpQnRkWE4wSUdoaGRtVWdZU0JDWVhObElIZG9iM05sSUhSNWNHVWdhWE1nWkdWamIzSmhkR1ZrSUhkcGRHZ2dRWEp5WVhsVGRISnBaR1VBVFdGMGNtbDRVM1J5YVdSbEFGaG1ZbE4wY21sa1pRQnZkbVZ5Y21sa1pRQjBhVzUwT2pwaGMzUTZPazkyWlhKeWFXUmxBRU5zZFhOMFpYSmxaRkpsWkhWalpRQkVaV0oxWjFOdmRYSmpaUUFnYVhNZ1pHVm1hVzVsWkNCdGIzSmxJSFJvWVc0Z2IyNWpaUUJQY0ZOaGJYQnNaWEpKYldGblpVRmtaSEpsYzNOcGJtZE5iMlJsVGxZZ2MyaHZkV3hrSUc5dWJIa2dZbVVnY0hKdmRtbGtaV1FnYjI1alpRQlBjRXh2WVdRZ1pYaHdjbVZ6YzJsdmJpQnBjeUJ1YjNRZ1lTQndiMmx1ZEdWeUlHOXlJSEpsWm1WeVpXNWpaUUJHYkdGblZIbHdaVkJoYzNOQ2VWSmxabVZ5Wlc1alpRQldZV3hwWkdGMFpVeGhlV1Z5VDNKV2FXVjNjRzl5ZEVsdVpHVjRRWFJTWldabGNtVnVZMlVBVm1Gc2FXUmhkR1ZRYjNOcGRHbHZia0YwVW1WbVpYSmxibU5sQUZaaGJHbGtZWFJsVkdWemMweGxkbVZzUVhSU1pXWmxjbVZ1WTJVQVZtRnNhV1JoZEdWUWIybHVkRk5wZW1WQmRGSmxabVZ5Wlc1alpRQldZV3hwWkdGMFpVTnNhWEJQY2tOMWJHeEVhWE4wWVc1alpVRjBVbVZtWlhKbGJtTmxBRlpoYkdsa1lYUmxVSEpwYldsMGFYWmxTV1JCZEZKbFptVnlaVzVqWlFCR2JHRm5VbFpoYkhWbFVtVm1aWEpsYm1ObEFFWnNZV2RNVm1Gc2RXVlNaV1psY21WdVkyVUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82VW1WbVpYSmxibU5sQUhScGJuUTZPblI1Y0dVNk9sSmxabVZ5Wlc1alpRQm5iRjlDWVhObFNXNXpkR0Z1WTJVQVptRnpkRjlrYVhOMFlXNWpaUUIzYUdWdUlHTmhiR04xYkdGMGFXNW5JR1JwYzNSaGJtTmxBR2RzWDBOc2FYQkVhWE4wWVc1alpRQm5iRjlEZFd4c1JHbHpkR0Z1WTJVQWJYVnpkQ0JpWlNCRVpXSjFaMVI1Y0dWTlpXMWlaWElzSUVSbFluVm5SblZ1WTNScGIyNHNJRzl5SUVSbFluVm5WSGx3WlVsdWFHVnlhWFJoYm1ObEFFeDFiV2x1WVc1alpRQkRjbTl6YzBSbGRtbGpaUUJUWTI5d1pTQnRkWE4wSUdKbElGTjFZbWR5YjNWd0lHOXlJRVJsZG1salpRQkNhWFJRYVdWalpRQmthWE5oWW14bFgzWmhiR2xrWVhScGIyNWZYMmxuYm05eVpWOWhaR1J5WlhOelgzTndZV05sQUdsdWRtRnNhV1FnZFhObElHOW1JR2x1Y0hWMEwyOTFkSEIxZENCaFpHUnlaWE56SUhOd1lXTmxBQ2NnYlhWemRDQnViM1FnYzNCbFkybG1hWGtnWVc0Z1lXUmtjbVZ6Y3lCemNHRmpaUUJ0YjJSMWJHVXRjMk52Y0dVZ0ozWmhjaWNnWkdWamJHRnlZWFJwYjI1eklIUm9ZWFFnWVhKbElHNXZkQ0J2WmlCMFpYaDBkWEpsSUc5eUlITmhiWEJzWlhJZ2RIbHdaWE1nYlhWemRDQndjbTkyYVdSbElHRnVJR0ZrWkhKbGMzTWdjM0JoWTJVQWNIUnlJRzFwYzNOcGJtY2dZV1JrY21WemN5QnpjR0ZqWlFCallXNXViM1FnZEdGclpTQjBhR1VnWVdSa2NtVnpjeUJ2WmlCbGVIQnlaWE56YVc5dUlHbHVJR2hoYm1Sc1pTQmhaR1J5WlhOeklITndZV05sQUdGMGIyMXBZeUIyWVhKcFlXSnNaWE1nYlhWemRDQm9ZWFpsSUR4emRHOXlZV2RsUGlCdmNpQThkMjl5YTJkeWIzVndQaUJoWkdSeVpYTnpJSE53WVdObEFISjFiblJwYldVdGMybDZaV1FnWVhKeVlYbHpJR05oYmlCdmJteDVJR0psSUhWelpXUWdhVzRnZEdobElEeHpkRzl5WVdkbFBpQmhaR1J5WlhOeklITndZV05sQUdaMWJtTjBhVzl1TFhOamIzQmxJQ2QyWVhJbklHUmxZMnhoY21GMGFXOXVJRzExYzNRZ2RYTmxJQ2RtZFc1amRHbHZiaWNnWVdSa2NtVnpjeUJ6Y0dGalpRQmhZMk5sYzNNZ2JXOWtaU0FuZDNKcGRHVW5JR2x6SUc1dmRDQjJZV3hwWkNCbWIzSWdkR2hsSUNkemRHOXlZV2RsSnlCaFpHUnlaWE56SUhOd1lXTmxBRDRzSUdKMWRDQnBjeUJ1YjNRZ2JHbHpkR1ZrSUdGeklHRnVJR2x1ZEdWeVptRmpaUUIwWlhoMGRYSmxYMlJsY0hSb1gyTjFZbVVBZEdWNGRIVnlaVjlqZFdKbEFFbHRZV2RsSUNkRWFXMG5JRzExYzNRZ1ltVWdNVVFzSURKRUxDQXpSQ0J2Y2lCRGRXSmxBRWx0WVdkbElFOXdaWEpoYm1RZ1FtbGhjeUJ5WlhGMWFYSmxjeUFuUkdsdEp5QndZWEpoYldWMFpYSWdkRzhnWW1VZ01VUXNJREpFTENBelJDQnZjaUJEZFdKbEFFbHRZV2RsSUU5d1pYSmhibVFnVFdsdVRHOWtJSEpsY1hWcGNtVnpJQ2RFYVcwbklIQmhjbUZ0WlhSbGNpQjBieUJpWlNBeFJDd2dNa1FzSURORUlHOXlJRU4xWW1VQVNXMWhaMlVnVDNCbGNtRnVaQ0JNYjJRZ2NtVnhkV2x5WlhNZ0owUnBiU2NnY0dGeVlXMWxkR1Z5SUhSdklHSmxJREZFTENBeVJDd2dNMFFnYjNJZ1EzVmlaUUJKYldGblpTQW5SR2x0SnlCallXNXViM1FnWW1VZ1EzVmlaUUJVYUdVZ1VtVnpkV3gwSUZSNWNHVWdiMllnVDNCV1pXTjBiM0pUYUhWbVpteGxJRzExYzNRZ1ltVUFSWGh3WldOMFpXUWdkbVZqZEc5eUlITnBlbVZ6SUc5bUlGSmxjM1ZzZENCVWVYQmxJR0Z1WkNCMGFHVWdiM0JsY21GdVpITWdkRzhnWW1VQVQzQmxia05NTG5OMFpBQm5iRjlRYjJsdWRFTnZiM0prQUdkc1gxUmxjM05EYjI5eVpBQm5iRjlHY21GblEyOXZjbVFBZDJobGJpQmpZV3hqZFd4aGRHbHVaeUJtWVdObFJtOXlkMkZ5WkFCR1lXTmxSbTl5ZDJGeVpBQm5kV0Z5WkFCa2FYTmpZWEprQUdadGIyUUFVMUJXWDBGTlJGOTBaWGgwZFhKbFgyZGhkR2hsY2w5aWFXRnpYMnh2WkFCVFVGWmZRVTFFWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxYMnh2WkFCVlRXOWtBRk5OYjJRQVJrMXZaQUJKYldGblpWRjFaWEo1VEc5a0FFbHRZV2RsVTNCaGNuTmxVMkZ0Y0d4bFVISnZha1Y0Y0d4cFkybDBURzlrQUVsdFlXZGxVMkZ0Y0d4bFVISnZha1Y0Y0d4cFkybDBURzlrQUVsdFlXZGxVM0JoY25ObFUyRnRjR3hsVUhKdmFrUnlaV1pGZUhCc2FXTnBkRXh2WkFCSmJXRm5aVk5oYlhCc1pWQnliMnBFY21WbVJYaHdiR2xqYVhSTWIyUUFTVzFoWjJWVGNHRnljMlZUWVcxd2JHVkVjbVZtUlhod2JHbGphWFJNYjJRQVNXMWhaMlZUWVcxd2JHVkVjbVZtUlhod2JHbGphWFJNYjJRQVNXMWhaMlZUY0dGeWMyVlRZVzF3YkdWRmVIQnNhV05wZEV4dlpBQkpiV0ZuWlZOaGJYQnNaVVY0Y0d4cFkybDBURzlrQUhkcGRHZ2dSWGh3YkdsamFYUk1iMlFBU1cxaFoyVlRjR0Z5YzJWVFlXMXdiR1ZRY205cVNXMXdiR2xqYVhSTWIyUUFTVzFoWjJWVFlXMXdiR1ZRY205cVNXMXdiR2xqYVhSTWIyUUFTVzFoWjJWVGNHRnljMlZUWVcxd2JHVlFjbTlxUkhKbFprbHRjR3hwWTJsMFRHOWtBRWx0WVdkbFUyRnRjR3hsVUhKdmFrUnlaV1pKYlhCc2FXTnBkRXh2WkFCSmJXRm5aVk53WVhKelpWTmhiWEJzWlVSeVpXWkpiWEJzYVdOcGRFeHZaQUJKYldGblpWTmhiWEJzWlVSeVpXWkpiWEJzYVdOcGRFeHZaQUJKYldGblpWTndZWEp6WlZOaGJYQnNaVWx0Y0d4cFkybDBURzlrQUVsdFlXZGxVMkZ0Y0d4bFNXMXdiR2xqYVhSTWIyUUFUV2x1VEc5a0FFbHRZV2RsVVhWbGNubFRhWHBsVEc5a0FISnZkVzVrQUNCdWIzUWdabTkxYm1RQVNXNTJZV3hwWkNCQmNuSmhlVU52ZFc1MElHWnZkVzVrQUN3Z2VtVnlieUJtYjNWdVpBQnBiblJsY201aGJDQmxjbkp2Y2pvZ1ltRmtJR052Ym5OMGNuVmpkQ0J1WlhOMGFXNW5JR1p2ZFc1a0FHRnpjMlZ5ZEdsdmJpQm1ZV2xzWldRNklHbHVjM1J5ZFdOMGFXOXVJSGRwZEdodmRYUWdjbVZ6ZFd4MElHbGtJR1p2ZFc1a0FGSnZkVzVrQUhKb2N5NXpaV052Ym1RQWJHaHpMbk5sWTI5dVpBQmFaWEp2UlhoMFpXNWtBRk5wWjI1RmVIUmxibVFBUlcxaVlYSnJJRk4wZFdScGIzTWdVblZ6ZENCSFVGVWdRMjl0Y0dsc1pYSWdRbUZqYTJWdVpBQTZJR2hoY3lCdWJ5QnZjR1Z5WVc1a0FIVnVaWGh3WldOMFpXUWdabUZwYkhWeVpTQjBieUJ0WVd0bElHRnVJRzl3WlhKaGJtUUFiV0ZzWm05eWJXVmtJRXh2WTJGMGFXOXVJR1JsWTI5eVlYUnBiMjRnYjI0Z1NVUWdjbVZ4ZFdseVpYTWdiMjVsSUd4cGRHVnlZV3dnYjNCbGNtRnVaQUJEWVd4c0lHbHVjM1J5ZFdOMGFXOXVJRzExYzNRZ2FHRjJaU0JoZENCc1pXRnpkQ0J2Ym1VZ2IzQmxjbUZ1WkFCRmJXbDBUM0JsY21GdVpBQkhaWFJQY0dWeVlXNWtBRVZ0YVhSTllYTnJUM0JsY21GdVpBQnpjSFpFWldOdlpHVk1hWFJsY21Gc1UzUnlhVzVuVDNCbGNtRnVaQUJ3WVhKelpVOXdaWEpoYm1RQWMzQjJWR0ZyWlVacGNuTjBUV0YwWTJoaFlteGxUM0JsY21GdVpBQkhaWFJUYVc1bmJHVlhiM0prVDNCbGNtRnVaQUJTWldkcGMzUmxja1oxYm1OMGFXOXVSVzVrQUZKbFoybHpkR1Z5UW14dlkydEZibVFBUzJoeWIyNXZjeUJIYkhOc1lXNW5JRkpsWm1WeVpXNWpaU0JHY205dWRDQkZibVFBUjNKdmRYQk9iMjVWYm1sbWIzSnRURzluYVdOaGJFRnVaQUJIY205MWNFNXZibFZ1YVdadmNtMUNhWFIzYVhObFFXNWtBR0YwYjIxcFkwRnVaQUJCZEc5dGFXTkJibVFBUTJocGJHUUFabWxsYkdRQU9pQmxlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQjJiMmxrQUdObGJuUnliMmxrQUVsdWRHVnljRzlzWVhSbFFYUkRaVzUwY205cFpBQkZlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQlBjRlI1Y0dWUWIybHVkR1Z5SUhkb2IzTmxJRlI1Y0dVZ2IzQmxjbUZ1WkNCdGRYTjBJR0psSUdFZ2MyTmhiR0Z5SUc1MWJXVnlhV05oYkNCMGVYQmxJRzl5SUU5d1ZIbHdaVlp2YVdRQVVtVjBkWEp1SUZSNWNHVWdiWFZ6ZENCaVpTQlBjRlI1Y0dWV2IybGtBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2xadmFXUUFkR2x1ZERvNmRIbHdaVG82Vm05cFpBQnBiblJsY201aGJDQmxjbkp2Y2pvZ1FYSnlZWGtnYkdWdVozUm9JR2x1Wm04Z2FYTWdhVzUyWVd4cFpBQnBibk4wTFQ1eVpYTjFiSFJmYVdRQWQyOXlhMmR5YjNWd1gybGtBR3h2WTJGc1gybHVkbTlqWVhScGIyNWZhV1FBWjJ4dlltRnNYMmx1ZG05allYUnBiMjVmYVdRQWNtVnpaWEoyWlY5cFpBQjFibWx4ZFdWZmFXUUFhVzV6ZEMwK2RIbHdaVjlwWkFCQWFXUUFJR2x6SUc1dmRDQmhJSFI1Y0dVZ2FXUUFSbXhoWjBselQzQjBhVzFwZW1Wa0FIcGxjbThnYkdWdVozUm9JSFpsWTNSdmNpQmpZVzRnYm05MElHSmxJRzV2Y20xaGJHbDZaV1FBYVc1emRDMCtiM0JqYjJSbEtDa2dQVDBnYzNCMk9qcFBjRG82VDNCRGIzQjVUV1Z0YjNKNUlIeDhJR2x1YzNRdFBtOXdZMjlrWlNncElEMDlJSE53ZGpvNlQzQTZPazl3UTI5d2VVMWxiVzl5ZVZOcGVtVmtBRkpsYkdGNFpXUUFJR2x6SUdScGMyRnNiRzkzWldRQVFYUjBaVzF3ZEdsdVp5QjBieUIxYzJVZ1VISnZaM0poYlVKMWFXeGtaWElnWVdaMFpYSWdhWFFnYUdGeklHSmxaVzRnYlc5MlpXUUFKeUIzWVhNZ2JtOTBJSEpsYzI5c2RtVmtBRVJsWW5WblUyOTFjbU5sUTI5dWRHbHVkV1ZrQUVWNGRHVnVaR1ZrSUdsdWMzUnlkV04wYVc5dUlFZE1VMHh6ZEdRME5UQkpUV2w0SUdseklHNXZkQ0J6ZFhCd2IzSjBaV1FBWTNWaVpTQmthVzFsYm5OcGIyNXpJR1p2Y2lCemRHOXlZV2RsSUhSbGVIUjFjbVZ6SUdGeVpTQnViM1FnYzNWd2NHOXlkR1ZrQUc5dWJIa2dNbVFnYlhWc2RHbHpZVzF3YkdWa0lIUmxlSFIxY21WeklHRnlaU0J6ZFhCd2IzSjBaV1FBUm14aFowbHpVSEp2ZEdWamRHVmtBQ0JsZUhCbFkzUmxaQUJwYm5aaGJHbGtJSEJ5YjJkeVlXMGdaMlZ1WlhKaGRHVmtBSFpoYkhWbElHTnZibk4wY25WamRHOXlJR1YyWVd4MVlYUmxaQ0JpZFhRZ2JtOTBJSFZ6WldRQWRtRnNkV1VnWTI5dWRtVnljMmx2YmlCbGRtRnNkV0YwWldRZ1luVjBJRzV2ZENCMWMyVmtBSEpsZEhWeWJpQjJZV3gxWlNCdlppQmpZV3hzSUc1dmRDQjFjMlZrQUUxdlpIVnNaVkJ5YjJObGMzTmxaQUJ3YjNOemFXSnNlU0J1YjI0dGRXNXBabTl5YlNCMllXeDFaU0J3WVhOelpXUUFjbVZ6YjJ4MmFXNW5JR1poYVd4bFpDd2dZblYwSUc1dklHVnljbTl5SUhkaGN5QnlZV2x6WldRQVFXeHBZWE5sWkFCVFpXeGxZM1JwYjI0Z2JYVnpkQ0JpWlNCemRISjFZM1IxY21Wa0FGSmxjR1ZoZEUxcGNuSnZjbVZrQUNCcGN5QnViM1FnYzNWd2NHOXlkR1ZrTGlCUGJteDVJRkJ2YzJsMGFXOXVJR2x6SUhOMWNIQnZjblJsWkN3Z1lXNWtJRkJ2YVc1MFUybDZaU0JwY3lCcFoyNXZjbVZrQUZOUVZsOUZXRlJmWm5KaFoyMWxiblJmWm5Wc2JIbGZZMjkyWlhKbFpBQkhjbTkxY0U1dmJsVnVhV1p2Y20xRGJIVnpkR1Z5WldRQUlHMXBjM05wYm1jN0lHSnNiMk5yY3lCemFHOTFiR1FnWVd4eVpXRmtlU0JvWVhabElHSmxaVzRnY21WbmFYTjBaWEpsWkFCVmJtOXlaR1Z5WldRQVQzSmtaWEpsWkFBNklHbHVJRloxYkd0aGJpQXhMakFnWlc1MmFYSnZibTFsYm5RZ1RXVnRiM0o1SUZOamIzQmxJR2x6SUdOaGJpQnViM1FnWW1VZ1UzVmlaM0p2ZFhBZ2QybDBhRzkxZENCVGRXSm5jbTkxY0VKaGJHeHZkRXRJVWlCdmNpQlRkV0puY205MWNGWnZkR1ZMU0ZJZ1pHVmpiR0Z5WldRQVIweFRURk5vWVhKbFpBQkdiR0ZuVUhKdmRHOTBlWEJsWkFCVFVGWmZUbFpmYzJoaFpHVnlYM04xWW1keWIzVndYM0JoY25ScGRHbHZibVZrQUVsdWJHbHVaV1FBZFc1a1pXWnBibVZrQUhSaGNtZGxkQ0JwY3lCdWIzUWdaR1ZtYVc1bFpBQWdhR0Z6SUc1dmRDQmlaV1Z1SUdSbFptbHVaV1FBVlc1emFXZHVaV1FBVTFCV1gwbE9WRVZNWDNKMWJuUnBiV1ZmWVd4cFoyNWxaQUJCYkdsbmJtVmtBRk5wWjI1bFpBQjBhVzUwT2pweVpXRmtaWEk2T25Od2FYSjJPanBPWVcxbFpBQWdhWE5mYzJGdGNHeGxaQUJqYjI1emRDQmhjM05sY25ScGIyNGdabUZwYkdWa0FHWXhOaUIwZVhCbElIVnpaV1FnZDJsMGFHOTFkQ0FuWmpFMkp5QmxlSFJsYm5OcGIyNGdaVzVoWW14bFpBQkViM1JRY205a2RXTjBTVzV3ZFhRMGVEaENhWFJRWVdOclpXUUFSMHhUVEZCaFkydGxaQUJEVUdGamEyVmtBR1J2ZERSVk9GQmhZMnRsWkFCa2IzUTBTVGhRWVdOclpXUUFWVzV6Y0dWamFXWnBaV1FBVkdobGMyVWdkbUZ5YVdGaWJHVnpJRzExYzNRZ2FHRjJaU0JFWlhOamNtbHdkRzl5VTJWMElHRnVaQ0JDYVc1a2FXNW5JR1JsWTI5eVlYUnBiMjV6SUhOd1pXTnBabWxsWkFCWGIzSnJaM0p2ZFhBZ2MzUnZjbUZuWlNCamJHRnpjeUJ3YjJsdWRHVnlJSEpsY1hWcGNtVnpJRlpoY21saFlteGxVRzlwYm5SbGNuTWdZMkZ3WVdKcGJHbDBlU0IwYnlCaVpTQnpjR1ZqYVdacFpXUUFVR1ZsYkVOdmRXNTBJR0Z1WkNCRWIyNTBWVzV5YjJ4c0lHeHZiM0FnWTI5dWRISnZiSE1nYlhWemRDQnViM1FnWW05MGFDQmlaU0J6Y0dWamFXWnBaV1FBVUdGeWRHbGhiRU52ZFc1MElHRnVaQ0JFYjI1MFZXNXliMnhzSUd4dmIzQWdZMjl1ZEhKdmJITWdiWFZ6ZENCdWIzUWdZbTkwYUNCaVpTQnpjR1ZqYVdacFpXUUFWVzV5YjJ4c0lHRnVaQ0JFYjI1MFZXNXliMnhzSUd4dmIzQWdZMjl1ZEhKdmJITWdiWFZ6ZENCdWIzUWdZbTkwYUNCaVpTQnpjR1ZqYVdacFpXUUFaWGhqYUdGdVoyVmtBRVJsY0hSb1ZXNWphR0Z1WjJWa0FFbHRZV2RsUjJGMGFHVnlSWGgwWlc1a1pXUUFWVTExYkVWNGRHVnVaR1ZrQUZOTmRXeEZlSFJsYm1SbFpBQnVieUIwZVhCbElIQnliM1pwWkdWa0FFVnRZbVZrWkdWa0FGZGxaQUIxWDNKb1lXUmtBSE5mY21oaFpHUUFkVjlvWVdSa0FITmZhR0ZrWkFCVFVGWmZSVmhVWDNOb1lXUmxjbDloZEc5dGFXTmZabXh2WVhSZllXUmtBRk5RVmw5RldGUmZjMmhoWkdWeVgyRjBiMjFwWTE5bWJHOWhkREUyWDJGa1pBQlRjR0ZqYVc1blJuSmhZM1JwYjI1aGJFOWtaQUJoZEc5dGFXTkJaR1FBUjNKdmRYQkpRV1JrQUVkeWIzVndUbTl1Vlc1cFptOXliVWxCWkdRQVFYUnZiV2xqU1VGa1pBQkhjbTkxY0VaQlpHUUFSM0p2ZFhCT2IyNVZibWxtYjNKdFJrRmtaQUJIY205MWNFNXZibFZ1YVdadmNtMVJkV0ZrQUhSbGVIUjFjbVZUWVcxd2JHVkhjbUZrQUc5d1kyOWtaWE1nYjNJZ2RHOW5aWFJvWlhJZ2QybDBhQ0JKYldGblpTQlBjR1Z5WVc1a0lFZHlZV1FBZDI5eWEyZHliM1Z3Vlc1cFptOXliVXh2WVdRQWRHVjRkSFZ5WlV4dllXUUFZWFJ2YldsalRHOWhaQUJCZEc5dGFXTk1iMkZrQUhScGJuUTZPbk5sYlRvNlRHOWhaQUJ0WVdRQUlISmxZV1FBVDNCSmJXRm5aVk53WVhKelpWSmxZV1FBU1cxaFoyVWdSR2x0SUZOMVluQmhjM05FWVhSaElHTmhibTV2ZENCaVpTQjFjMlZrSUhkcGRHZ2dTVzFoWjJWVGNHRnljMlZTWldGa0FFbHRZV2RsVW1WaFpBQkZibU52ZFc1MFpYSmxaQ0JsZUhSbGJtUmxaQ0JwYm5OMGNuVmpkR2x2YmlCSFRGTk1jM1JrTkRVd1FtRmtBRlpsY25SbGVFbGtBRXh2WTJGc1UybDZaVWhwYm5SSlpBQkJiR2xuYm0xbGJuUkpaQUJUWlhSU1pYTjFiSFJKWkFCTllYaENlWFJsVDJabWMyVjBTV1FBUjJ4dlltRnNUR2x1WldGeVNXUUFVM1ZpWjNKdmRYQnpVR1Z5VjI5eWEyZHliM1Z3U1dRQVUzVmlaM0p2ZFhCSlpBQlRkV0puY205MWNFeHZZMkZzU1c1MmIyTmhkR2x2Ymtsa0FFZHNiMkpoYkVsdWRtOWpZWFJwYjI1SlpBQlZibWxtYjNKdFNXUUFaWGgwY21GZmQyOXlaSE5iTUYwZ1BUMGdRWEp5WVhrNk9reGxibWQwYUVsdVptODZPbXRFWldacGJtbHVaMGxrQUV4dlkyRnNVMmw2WlVsa0FGUjVjR1ZTWlhObGNuWmxTV1FBU1hOV1lXeHBaRkpsYzJWeWRtVkpaQUJRY21sdGFYUnBkbVZKWkFCVVlXdGxUbVY0ZEZWdWFYRjFaVWxrQUVSbFkyOXlZWFJwYjI1eklIUmhhMmx1WnlCSlJDQndZWEpoYldWMFpYSnpJRzFoZVNCdWIzUWdZbVVnZFhObFpDQjNhWFJvSUU5d1JHVmpiM0poZEdWSlpBQkVaV052Y21GMGFXOXVjeUIwYUdGMElHUnZiaWQwSUhSaGEyVWdTVVFnY0dGeVlXMWxkR1Z5Y3lCdFlYa2dibTkwSUdKbElIVnpaV1FnZDJsMGFDQlBjRVJsWTI5eVlYUmxTV1FBVTJGdGNHeGxTV1FBUlhobFkzVjBhVzl1VFc5a1pVbGtBRWx1YzNSaGJtTmxTV1FBVTNCbFkwbGtBQ0JrYjJWeklHNXZkQ0J5WldabGNtVnVZMlVnWVc0Z1QzQkZlSFJKYm5OMFNXMXdiM0owSUhKbGMzVnNkQ0JKWkFCMFpYaDBkWEpsWHpOa0FIUmxlSFIxY21WZmMzUnZjbUZuWlY4elpBQjBaWGgwZFhKbFgyUmxjSFJvWHpKa0FIUmxlSFIxY21WZk1tUUFkR1Y0ZEhWeVpWOXpkRzl5WVdkbFh6SmtBSFJsZUhSMWNtVmZaR1Z3ZEdoZmJYVnNkR2x6WVcxd2JHVmtYekprQUhSbGVIUjFjbVZmYlhWc2RHbHpZVzF3YkdWa1h6SmtBSFJsZUhSMWNtVmZNV1FBZEdWNGRIVnlaVjl6ZEc5eVlXZGxYekZrQUc5d1pYSmhibVJmWkdWell3QkhaWFJFWldacGJtbDBhVzl1UkdWell3QnpkR1E2T21KaFpGOWhiR3h2WXdCUGNGTndaV05EYjI1emRHRnVkQ0J2Y0dOdlpHVWdkR0ZpYkdVZ2IzVjBJRzltSUhONWJtTUFkSEoxYm1NQVZISjFibU1BVlhObGNsTmxiV0Z1ZEdsakFGTm9hV1owVW1sbmFIUkJjbWwwYUcxbGRHbGpBRWR5YjNWd1RtOXVWVzVwWm05eWJVRnlhWFJvYldWMGFXTUFSR1ZpZFdkVWVYQmxRbUZ6YVdNQVNXMWhaMlZDWVhOcFl3QlRVRlpmVGxaZlpuSmhaMjFsYm5SZmMyaGhaR1Z5WDJKaGNubGpaVzUwY21sakFGTlFWbDlMU0ZKZlpuSmhaMjFsYm5SZmMyaGhaR1Z5WDJKaGNubGpaVzUwY21sakFGQjBja05oYzNSVWIwZGxibVZ5YVdNQVQzQldZWEpwWVdKc1pTQnpkRzl5WVdkbElHTnNZWE56SUdOaGJtNXZkQ0JpWlNCSFpXNWxjbWxqQUhScGJuUTZPblI1Y0dVNk9rRmljM1J5WVdOMFRuVnRaWEpwWXdCZllYUnZiV2xqQUhScGJuUTZPblJ5WVc1elptOXliVG82VTNCcGNuWkJkRzl0YVdNQWRHbHVkRG82ZEhsd1pUbzZRWFJ2YldsakFGWmxZM1J2Y2tsdWMyVnlkRVI1Ym1GdGFXTUFWbVZqZEc5eVJYaDBjbUZqZEVSNWJtRnRhV01BUm14aFowbHpVSFZpYkdsakFHVnlabU1BWDE5bWNtVjRjRjl5WlhOMWJIUmZkbVZqQUY5ZmJXOWtabDl5WlhOMWJIUmZkbVZqQUVSbFl3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2Y21WemIyeDJaWEl2ZFc1cFptOXliV2wwZVM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOWhjbkpoZVM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOXRZWFJ5YVhndVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDNSeVlXNXpabTl5YlM5MWJuTm9ZV1J2ZHk1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WTJ4dmJtVmZZMjl1ZEdWNGRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMMk52Ym5OMExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZZWEp5WVhsZlkyOTFiblF1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5aGMzTnBaMjV0Wlc1MFgzTjBZWFJsYldWdWRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMMnh2YjNCZmMzUmhkR1Z0Wlc1MExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZiRzl2Y0Y5emRHRjBaVzFsYm5RdVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDJGemRDOXlaWFIxY201ZmMzUmhkR1Z0Wlc1MExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZZMkZzYkY5emRHRjBaVzFsYm5RdVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDJGemRDOTJZWEpwWVdKc1pWOWtaV05zWDNOMFlYUmxiV1Z1ZEM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WVhOMEwySnNiMk5yWDNOMFlYUmxiV1Z1ZEM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2YzJWdEwySnNiMk5yWDNOMFlYUmxiV1Z1ZEM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WVhOMEwzTjNhWFJqYUY5emRHRjBaVzFsYm5RdVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDNObGJTOXpkMmwwWTJoZmMzUmhkR1Z0Wlc1MExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZZbkpsWVd0ZmFXWmZjM1JoZEdWdFpXNTBMbU5qQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOWhjM1F2YVdaZmMzUmhkR1Z0Wlc1MExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZZMkZ6WlY5emRHRjBaVzFsYm5RdVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDJGemRDOXNaWFF1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM05sYlM5allXeHNYM1JoY21kbGRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMM04wY25WamRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmMyVnRMM04wY25WamRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNtVnpiMngyWlhJdlluVnBiSFJwYmw5emRISjFZM1J6TG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzloYzNRdllXeHBZWE11WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM1I1Y0dVdmRtVmpkRzl5TG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzl5WlhOdmJIWmxjaTkyWVd4cFpHRjBiM0l1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM0psYzI5c2RtVnlMM0psYzI5c2RtVnlMbU5qQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOTBlWEJsTDNCdmFXNTBaWEl1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM0psYzI5c2RtVnlMM05sYlY5b1pXeHdaWEl1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM0psWVdSbGNpOXpjR2x5ZGk5dVlXMWxjaTVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZZWE4wTDNSbGJYQnNZWFJsWkY5cFpHVnVkR2xtYVdWeUxtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZhV1JsYm5ScFptbGxjaTVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZjSEp2WjNKaGJWOWlkV2xzWkdWeUxtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5dWRXMWlaWEl1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5emRISjFZM1JmYldWdFltVnlMbU5qQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOXpaVzB2YVc1bWJ5NWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNtVmhaR1Z5TDNOd2FYSjJMMloxYm1OMGFXOXVMbU5qQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOWhjM1F2Wm5WdVkzUnBiMjR1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5aWFXNWhjbmxmWlhod2NtVnpjMmx2Ymk1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WVhOMEwySnBkR05oYzNSZlpYaHdjbVZ6YzJsdmJpNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMMmx1WkdWNFgyRmpZMlZ6YzI5eVgyVjRjSEpsYzNOcGIyNHVZMk1BTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwyRnpkQzl0WlcxaVpYSmZZV05qWlhOemIzSmZaWGh3Y21WemMybHZiaTVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZZWE4wTDJGalkyVnpjMjl5WDJWNGNISmxjM05wYjI0dVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDJGemRDOXBaR1Z1ZEdsbWFXVnlYMlY0Y0hKbGMzTnBiMjR1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5MWJtRnllVjl2Y0Y5bGVIQnlaWE56YVc5dUxtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZZMkZzYkY5bGVIQnlaWE56YVc5dUxtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZkbUZzZFdWZlpYaHdjbVZ6YzJsdmJpNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmRISmhibk5tYjNKdEwzUnlZVzV6Wm05eWJTNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNISnZaM0poYlM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZDNKcGRHVnlMM2RuYzJ3dloyVnVaWEpoZEc5eVgybHRjR3d1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM0psWVdSbGNpOXpjR2x5ZGk5d1lYSnpaWEpmYVcxd2JDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMMlJwWVdkdWIzTjBhV05mWTI5dWRISnZiQzVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZjM2x0WW05c0xtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZZMkZzYkM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WVhOMEwzUjVjR1ZmWkdWamJDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNtVnpiMngyWlhJdlkyOXVjM1JmWlhaaGJDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNtVnpiMngyWlhJdlpHVndaVzVrWlc1amVWOW5jbUZ3YUM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZDNKcGRHVnlMMlpzYjJGMFgzUnZYM04wY21sdVp5NWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdlkyOXVjM1JoYm5RdmRtRnNkV1V1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5aWRXbHNkR2x1WDJGMGRISnBZblYwWlM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOWtaWEIwYUY5MFpYaDBkWEpsTG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzkwZVhCbEwyUmxjSFJvWDIxMWJIUnBjMkZ0Y0d4bFpGOTBaWGgwZFhKbExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5MGVYQmxMMjExYkhScGMyRnRjR3hsWkY5MFpYaDBkWEpsTG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzkwZVhCbEwzTmhiWEJzWldSZmRHVjRkSFZ5WlM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOTBlWEJsTG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzloYzNRdlpHbGhaMjV2YzNScFkxOXlkV3hsWDI1aGJXVXVZMk1BTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwyRnpkQzl0YjJSMWJHVXVZMk1BTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwzTjViV0p2YkY5MFlXSnNaUzVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZjbVZ6YjJ4MlpYSXZhVzUwY21sdWMybGpYM1JoWW14bExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZkbUZ5YVdGaWJHVXVZMk1BTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwzUjVjR1V2Y21WbVpYSmxibU5sTG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzl6WlcwdmJHOWhaQzVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZkSEpoYm5ObWIzSnRMM053YVhKMlgyRjBiMjFwWXk1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOWhkRzl0YVdNdVkyTUFYMk1BZEdsdWREbzZkSEpoYm5ObWIzSnRPanBUY0dseWRrRjBiMjFwWXpvNlUzUjFZZ0JoZEc5dGFXTlRkV0lBUVhSdmJXbGpTVk4xWWdCR1UzVmlBRVpwYm1SVlRYTmlBRVpwYm1SVFRYTmlBRVpwYm1SSlRITmlBR2xzYjJkaUFGaG1ZZ0JHWldJQUpXSUFkWE5sY2w5a1lYUmhBRWx0WVdkbElDZEVhVzBuSUdOaGJtNXZkQ0JpWlNCVGRXSndZWE56UkdGMFlRQk5iM1psVkc5TVlYSm5aVVJoZEdFQWRHZGhiVzFoQUd4bllXMXRZUUIzYUdWdUlHTmhiR04xYkdGMGFXNW5JR1p0WVFCR2JXRUFXR1Z1YVdFQVoyWjRMWEp6SUdOdmJXMTFibWwwZVNCT1lXZGhBR05vY205dGFYVnRYMlY0Y0dWeWFXMWxiblJoYkY5a2NEUmhBQ1ZoQUhoZkFGOWZabkpsZUhCZmNtVnpkV3gwWHdCZlgyMXZaR1pmY21WemRXeDBYd0JmYzNSeWRXTjBYd0JmY0hSeVh3QmZjblZ1ZEdsdFpXRnljbDhBWDJGeWNsOEFJV2x6WDNObGJuUnBibVZzWHdCMFpYaDBkWEpsWDJSbGNIUm9Yd0JQY0dGeGRXVmZBSFJsZUhSMWNtVmZBSFJsZUhSMWNtVmZjM1J2Y21GblpWOEFYM04wY21sa1pWOEFhR0Z6WDNKbGMzVnNkRjlwWkY4QWRHVjRkSFZ5WlY5a1pYQjBhRjl0ZFd4MGFYTmhiWEJzWldSZkFIUmxlSFIxY21WZmJYVnNkR2x6WVcxd2JHVmtYd0JmWDNCaFkydGxaRjhBYzNSMVlsOEFjMjFoYkd4ZlpHRjBZVjhBSVd4aGNtZGxYMlJoZEdGZkFGNEFXM1Z1Ym1GdFpXUWdiM1psY25KcFpHVXRaWGh3Y21WemMybHZibDBBS1YwQVd3QlNiM1Z1WkdsdVowMXZaR1ZTVkZvQVRsTmFBQ1ZoSUNWaUlDVmtJQ1ZJT2lWTk9pVlRJQ1ZaQUZCUFUwbFlBRWhwZEU5aWFtVmpkRWx6Ulcxd2RIbE9WZ0JJYVhSUFltcGxZM1JTWldOdmNtUkZiWEIwZVU1V0FGUmxjbTFwYm1GMFpWSmhlVTVXQUVocGRFOWlhbVZqZEZSeVlXTmxVbUY1VGxZQVZIbHdaVU52YjNCbGNtRjBhWFpsVFdGMGNtbDRUbFlBVUdWeVZtVnlkR1Y0VGxZQVNHbDBUMkpxWldOMFIyVjBSMlZ2YldWMGNubEpibVJsZUU1V0FFaHBkRTlpYW1WamRFZGxkRWx1YzNSaGJtTmxRM1Z6ZEc5dFNXNWtaWGhPVmdCSWFYUlBZbXBsWTNSU1pXTnZjbVJJYVhSWGFYUm9TVzVrWlhoT1ZnQklhWFJQWW1wbFkzUkhaWFJRY21sdGFYUnBkbVZKYm1SbGVFNVdBRWhwZEU5aWFtVmpkRWRsZEZOb1lXUmxja0pwYm1ScGJtZFVZV0pzWlZKbFkyOXlaRWx1WkdWNFRsWUFVbUY1VkcxaGVFNVdBRWhwZEU5aWFtVmpkRWRsZEZKaGVWUk5ZWGhPVmdCTVlYbGxjbEJsY2xacFpYZE9WZ0JRYjNOcGRHbHZibEJsY2xacFpYZE9WZ0JXYVdWM2NHOXlkRTFoYzJ0UVpYSldhV1YzVGxZQVEyeHBjRVJwYzNSaGJtTmxVR1Z5Vm1sbGQwNVdBRU4xYkd4RWFYTjBZVzVqWlZCbGNsWnBaWGRPVmdCVGFHRmtaWEpUZEdWeVpXOVdhV1YzVGxZQVRXVnphRlpwWlhkRGIzVnVkRTVXQUZSaGMydERiM1Z1ZEU1V0FGQnlhVzFwZEdsMlpVTnZkVzUwVGxZQVUwMURiM1Z1ZEU1V0FFbHRZV2RsVTJGdGNHeGxSbTl2ZEhCeWFXNTBUbFlBU1cxaFoyVkdiMjkwY0hKcGJuUk9WZ0JTWlc5eVpHVnlWR2h5WldGa1YybDBhRWhwYm5ST1ZnQkJibmxJYVhST1ZnQkRiRzl6WlhOMFNHbDBUbFlBU0dsMFQySnFaV04wU1hOSWFYUk9WZ0JJYVhSUFltcGxZM1JTWldOdmNtUklhWFJPVmdCb2FYUlBZbXBsWTNST1ZnQlNaVzl5WkdWeVZHaHlaV0ZrVjJsMGFFaHBkRTlpYW1WamRFNVdBRlI1Y0dVZ2JYVnpkQ0JpWlNCUGNGUjVjR1ZJYVhSUFltcGxZM1JPVmdCSWFYUlBZbXBsWTNSSFpYUlhiM0pzWkZSdlQySnFaV04wVGxZQVNHbDBUMkpxWldOMFNYTk5hWE56VGxZQVNHbDBUMkpxWldOMFVtVmpiM0prVFdsemMwNVdBRk5vWVdSbGNsTk5RblZwYkhScGJuTk9WZ0JKYm1OdmJXbHVaMUpoZVVac1lXZHpUbFlBVDNWMGNIVjBVSEpwYldsMGFYWmxjMDVXQUZCbGNsWnBaWGRCZEhSeWFXSjFkR1Z6VGxZQVNHbDBUMkpxWldOMFIyVjBRWFIwY21saWRYUmxjMDVXQUU5MWRIQjFkRXhwYm1WelRsWUFUM1YwY0hWMFZISnBZVzVuYkdWelRsWUFUV1Z6YUZacFpYZEpibVJwWTJWelRsWUFVSEpwYldsMGFYWmxTVzVrYVdObGMwNVdBRU52YlhCMWRHVkVaWEpwZG1GMGFYWmxSM0p2ZFhCUmRXRmtjMDVXQUZKaGVWUnlZV05wYm1kTmIzUnBiMjVDYkhWeVRsWUFVMmhoWkdWeVZtbGxkM0J2Y25SSmJtUmxlRXhoZVdWeVRsWUFRbWx1Wkd4bGMzTlRZVzF3YkdWeVRsWUFRMjl1ZG1WeWRGVlViMU5oYlhCc1pYSk9WZ0JDYjNWdVpGTmhiWEJzWlhKT1ZnQklhWFJQWW1wbFkzUlRhR0ZrWlhKU1pXTnZjbVJDZFdabVpYSk9WZ0JUYUdGa1pYSkpiblp2WTJGMGFXOXVVbVZ2Y21SbGNrNVdBRWhwZEU5aWFtVmpkRVY0WldOMWRHVlRhR0ZrWlhKT1ZnQkRiMjF3ZFhSbFJHVnlhWFpoZEdsMlpVZHliM1Z3VEdsdVpXRnlUbFlBUW1GeWVVTnZiM0prVG05UVpYSnpjRTVXQUVocGRFOWlhbVZqZEZSeVlXTmxVbUY1VFc5MGFXOXVUbFlBU0dsMFQySnFaV04wVW1WamIzSmtTR2wwVjJsMGFFbHVaR1Y0VFc5MGFXOXVUbFlBU0dsMFQySnFaV04wVW1WamIzSmtTR2wwVFc5MGFXOXVUbFlBU0dsMFQySnFaV04wVW1WamIzSmtUV2x6YzAxdmRHbHZiazVXQUZSeVlXTmxUVzkwYVc5dVRsWUFSM0p2ZFhCT2IyNVZibWxtYjNKdFVHRnlkR2wwYVc5dVRsWUFVMlZqYjI1a1lYSjVVRzl6YVhScGIyNU9WZ0JTWlhCdmNuUkpiblJsY25ObFkzUnBiMjVPVmdCSloyNXZjbVZKYm5SbGNuTmxZM1JwYjI1T1ZnQklhWFJQWW1wbFkzUkhaWFJQWW1wbFkzUlNZWGxFYVhKbFkzUnBiMjVPVmdCSWFYUlBZbXBsWTNSSFpYUlhiM0pzWkZKaGVVUnBjbVZqZEdsdmJrNVdBRkpoZVVkbGJtVnlZWFJwYjI1T1ZnQlNZWGxVYldsdVRsWUFTR2wwVDJKcVpXTjBSMlYwVDJKcVpXTjBVbUY1VDNKcFoybHVUbFlBU0dsMFQySnFaV04wUjJWMFYyOXliR1JTWVhsUGNtbG5hVzVPVmdCSWFYUlBZbXBsWTNSSFpYUlNZWGxVVFdsdVRsWUFVR0Z5ZEdsMGFXOXVaV1JGZUdOc2RYTnBkbVZUWTJGdVRsWUFVR0Z5ZEdsMGFXOXVaV1JKYm1Oc2RYTnBkbVZUWTJGdVRsWUFTVzUyYjJOaGRHbHZibk5RWlhKUWFYaGxiRTVXQUZCbGNsUmhjMnRPVmdCUGNFTnZiblJ5YjJ4Q1lYSnlhV1Z5SUhKbGNYVnBjbVZ6SUc5dVpTQnZaaUIwYUdVZ1ptOXNiRzkzYVc1bklFVjRaV04xZEdsdmJpQk5iMlJsYkhNNklGUmxjM05sYkd4aGRHbHZia052Ym5SeWIyd3NJRWRNUTI5dGNIVjBaU3dnUzJWeWJtVnNMQ0JOWlhOb1RsWWdiM0lnVkdGemEwNVdBRk5sWTI5dVpHRnllVlpwWlhkd2IzSjBUV0Z6YTA1V0FGTm9ZV1JsY2xacFpYZHdiM0owVFdGemEwNVdBRU52YjNCbGNtRjBhWFpsVFdGMGNtbDRUR1Z1WjNSb1RsWUFUV1Z6YUU1V0FFZGxiMjFsZEhKNVUyaGhaR1Z5VUdGemMzUm9jbTkxWjJoT1ZnQk5aWE5vVTJoaFpHbHVaMDVXQUZKaGVWUnlZV05wYm1kT1ZnQkdjbUZuYldWdWRGTnBlbVZPVmdCTVlYVnVZMmhUYVhwbFRsWUFVR1Z5VUhKcGJXbDBhWFpsVGxZQVUyVmpiMjVrWVhKNVZtbGxkM0J2Y25SU1pXeGhkR2wyWlU1V0FFaHBkRUYwZEhKcFluVjBaVTVXQUVocGRDQlBZbXBsWTNRZ1FYUjBjbWxpZFhSbGN5QnBaQ0J0ZFhOMElHSmxJR0VnVDNCV1lYSnBZV0pzWlNCdlppQnpkRzl5WVdkbElHTnNZWE56SUVocGRFOWlhbVZqZEVGMGRISnBZblYwWlU1V0FDd2dhVzVwZEdsaGJHbDZaWElnWVhKbElHNXZkQ0JoYkd4dmQyVmtJR1p2Y2lCSWFYUlBZbXBsWTNSQmRIUnlhV0oxZEdWT1ZnQlRhR0ZrYVc1blVtRjBaVTVXQUVKcGJtUnNaWE56VkdWNGRIVnlaVTVXQUdGalkyVnNaWEpoZEdsdmJsTjBjblZqZEhWeVpVNVdBRlI1Y0dWQlkyTmxiR1Z5WVhScGIyNVRkSEoxWTNSMWNtVk9WZ0J6Y0hZNk9rOXdPanBQY0VOdmIzQmxjbUYwYVhabFRXRjBjbWw0VTNSdmNtVk9WZ0JEZFhKeVpXNTBVbUY1VkdsdFpVNVdBRWhwZEU5aWFtVmpkRWRsZEVOMWNuSmxiblJVYVcxbFRsWUFTR2wwVDJKcVpXTjBSMlYwVTJoaFpHVnlVbVZqYjNKa1FuVm1abVZ5U0dGdVpHeGxUbFlBUlhobFkzVjBaVU5oYkd4aFlteGxUbFlBVTJGdGNHeGxUV0Z6YTA5MlpYSnlhV1JsUTI5MlpYSmhaMlZPVmdCQ2FXNWtiR1Z6YzBsdFlXZGxUbFlBUTI5dWRtVnlkRlZVYjBsdFlXZGxUbFlBUW05MWJtUkpiV0ZuWlU1V0FFTnZiblpsY25SVlZHOVRZVzF3YkdWa1NXMWhaMlZPVmdCVFlXMXdiR1Z5U1cxaFoyVkJaR1J5WlhOemFXNW5UVzlrWlU1V0FGQmhjblJwZEdsdmJtVmtVbVZrZFdObFRsWUFWSEpoWTJWT1ZnQkNZWEo1UTI5dmNtUk9WZ0JJYVhSUFltcGxZM1JIWlhSSWFYUkxhVzVrVGxZQVNHbDBUMkpxWldOMFIyVjBUMkpxWldOMFZHOVhiM0pzWkU1V0FFZHliM1Z3VG05dVZXNXBabTl5YlZCaGNuUnBkR2x2Ym1Wa1RsWUFRMjl2Y0dWeVlYUnBkbVZOWVhSeWFYaE5kV3hCWkdST1ZnQkpibU52YldsdVoxSmhlVkJoZVd4dllXUk9WZ0J6Y0hZNk9rOXdPanBQY0VOdmIzQmxjbUYwYVhabFRXRjBjbWw0VEc5aFpFNVdBRXhoZFc1amFFbGtUbFlBU0dsMFQySnFaV04wUjJWMFNXNXpkR0Z1WTJWSlpFNVdBRVp5WVdkdFpXNTBRbUZ5ZVdObGJuUnlhV05PVmdCSmJtTnZiV2x1WjBOaGJHeGhZbXhsUkdGMFlVNVdBRU52Ym5abGNuUlRZVzF3YkdWeVZHOVZUbFlBUTI5dWRtVnlkRWx0WVdkbFZHOVZUbFlBUTI5dWRtVnlkRk5oYlhCc1pXUkpiV0ZuWlZSdlZVNVdBRWhwZEZST1ZnQlNUa1JmUTA5T1ZnQlhZWEp3YzFCbGNsTk5UbFlBVjJGeWNFbEVUbFlBVTAxSlJFNVdBRmR5YVhSbFVHRmphMlZrVUhKcGJXbDBhWFpsU1c1a2FXTmxjelI0T0U1V0FFTnZiblpsY25SUWRISlViMVVBVTJGMFEyOXVkbVZ5ZEZOVWIxVUFRMjl1ZG1WeWRFWlViMVVBUm5KaFoyMWxiblJFWlc1emFYUjVSVmhVQUZKMWJuUnBiV1ZFWlhOamNtbHdkRzl5UVhKeVlYbEZXRlFBUVhSdmJXbGpSbXh2WVhReE5rMXBiazFoZUVWWVZBQkJkRzl0YVdOR2JHOWhkRFkwVFdsdVRXRjRSVmhVQUVGMGIyMXBZMFpzYjJGME16Sk5hVzVOWVhoRldGUUFRWFJ2YldsalJrMWhlRVZZVkFCVGRHVnVZMmxzUlhod2IzSjBSVmhVQUVaeVlXZEpiblp2WTJGMGFXOXVRMjkxYm5SRldGUUFVMlYwVFdWemFFOTFkSEIxZEhORldGUUFSVzFwZEUxbGMyaFVZWE5yYzBWWVZBQlBkWFJ3ZFhSUWNtbHRhWFJwZG1WelJWaFVBRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2tGa1pISmxjM05sYzBWWVZBQlBkWFJ3ZFhSTWFXNWxjMFZZVkFCUGRYUndkWFJVY21saGJtZHNaWE5GV0ZRQVVISnBiV2wwYVhabFVHOXBiblJKYm1ScFkyVnpSVmhVQUZCeWFXMXBkR2wyWlV4cGJtVkpibVJwWTJWelJWaFVBRkJ5YVcxcGRHbDJaVlJ5YVdGdVoyeGxTVzVrYVdObGMwVllWQUJUYUdGa1pYSldhV1YzY0c5eWRFbHVaR1Y0VEdGNVpYSkZXRlFBVW1WemRISnBZM1JRYjJsdWRHVnlSVmhVQUVGc2FXRnpaV1JRYjJsdWRHVnlSVmhVQUZCb2VYTnBZMkZzVTNSdmNtRm5aVUoxWm1abGNrVllWQUFzSUdsdWFYUnBZV3hwZW1WeUlHRnlaU0J1YjNRZ1lXeHNiM2RsWkNCbWIzSWdWR0Z6YTFCaGVXeHZZV1JYYjNKclozSnZkWEJGV0ZRQVVHRjViRzloWkNCUGNGWmhjbWxoWW14bElHMTFjM1FnYUdGMlpTQmhJSE4wYjNKaFoyVWdZMnhoYzNNZ2IyWWdWR0Z6YTFCaGVXeHZZV1JYYjNKclozSnZkWEJGV0ZRQVVtRjVWSEpoWTJsdVowOXdZV05wZEhsTmFXTnliMjFoY0VWWVZBQkpjMGhsYkhCbGNrbHVkbTlqWVhScGIyNUZXRlFBUkdWdGIzUmxWRzlJWld4d1pYSkpiblp2WTJGMGFXOXVSVmhVQUVGMGIyMXBZMFpOYVc1RldGUUFVMmhoWkdWeVRtOXVWVzVwWm05eWJVVllWQUJVWVhOclJWaFVBRUpsWjJsdVNXNTJiMk5oZEdsdmJrbHVkR1Z5Ykc5amEwVllWQUJGYm1SSmJuWnZZMkYwYVc5dVNXNTBaWEpzYjJOclJWaFVBRVp5WVdkdFpXNTBVMmhoWkdWeVVHbDRaV3hKYm5SbGNteHZZMnRGV0ZRQVJuSmhaMjFsYm5SVGFHRmtaWEpUYUdGa2FXNW5VbUYwWlVsdWRHVnliRzlqYTBWWVZBQkdjbUZuYldWdWRGTm9ZV1JsY2xOaGJYQnNaVWx1ZEdWeWJHOWphMFZZVkFCTlpYTm9SVmhVQUVsdWNIVjBRWFIwWVdOb2JXVnVkRUZ5Y21GNVRtOXVWVzVwWm05eWJVbHVaR1Y0YVc1blJWaFVBRlZ1YVdadmNtMUNkV1ptWlhKQmNuSmhlVTV2YmxWdWFXWnZjbTFKYm1SbGVHbHVaMFZZVkFCVmJtbG1iM0p0VkdWNFpXeENkV1ptWlhKQmNuSmhlVTV2YmxWdWFXWnZjbTFKYm1SbGVHbHVaMFZZVkFCVGRHOXlZV2RsVkdWNFpXeENkV1ptWlhKQmNuSmhlVTV2YmxWdWFXWnZjbTFKYm1SbGVHbHVaMFZZVkFCVGRHOXlZV2RsUW5WbVptVnlRWEp5WVhsT2IyNVZibWxtYjNKdFNXNWtaWGhwYm1kRldGUUFVM1J2Y21GblpVbHRZV2RsUVhKeVlYbE9iMjVWYm1sbWIzSnRTVzVrWlhocGJtZEZXRlFBVTJGdGNHeGxaRWx0WVdkbFFYSnlZWGxPYjI1VmJtbG1iM0p0U1c1a1pYaHBibWRGV0ZRQVNXNXdkWFJCZEhSaFkyaHRaVzUwUVhKeVlYbEVlVzVoYldsalNXNWtaWGhwYm1kRldGUUFWVzVwWm05eWJWUmxlR1ZzUW5WbVptVnlRWEp5WVhsRWVXNWhiV2xqU1c1a1pYaHBibWRGV0ZRQVUzUnZjbUZuWlZSbGVHVnNRblZtWm1WeVFYSnlZWGxFZVc1aGJXbGpTVzVrWlhocGJtZEZXRlFBVFdWemFGTm9ZV1JwYm1kRldGUUFVM1JsYm1OcGJGSmxabEpsY0d4aFkybHVaMFZZVkFCR2NtRm5VM1JsYm1OcGJGSmxaa1ZZVkFCR2NtRm5VMmw2WlVWWVZBQlFaWEpRY21sdGFYUnBkbVZGV0ZRQVEzVnNiRkJ5YVcxcGRHbDJaVVZZVkFCR2IzSmpaVTl3WVdOcGRIbE5hV055YjIxaGNESlRkR0YwWlVWWVZBQkpiblEyTkVsdFlXZGxSVmhVQUVaeVlXZHRaVzUwUm5Wc2JIbERiM1psY21Wa1JWaFVBRkJwZUdWc1NXNTBaWEpzYjJOclZXNXZjbVJsY21Wa1JWaFVBRk5vWVdScGJtZFNZWFJsU1c1MFpYSnNiMk5yVlc1dmNtUmxjbVZrUlZoVUFGTmhiWEJzWlVsdWRHVnliRzlqYTFWdWIzSmtaWEpsWkVWWVZBQlFhWGhsYkVsdWRHVnliRzlqYTA5eVpHVnlaV1JGV0ZRQVUyaGhaR2x1WjFKaGRHVkpiblJsY214dlkydFBjbVJsY21Wa1JWaFVBRk5oYlhCc1pVbHVkR1Z5Ykc5amEwOXlaR1Z5WldSRldGUUFRWFJ2YldsalJrRmtaRVZZVkFCQmRHOXRhV05HYkc5aGRERTJRV1JrUlZoVUFFRjBiMjFwWTBac2IyRjBOalJCWkdSRldGUUFRWFJ2YldsalJteHZZWFF6TWtGa1pFVllWQUJRYUhsemFXTmhiRk4wYjNKaFoyVkNkV1ptWlhJMk5FVllWQUJCVEZRQVUwRlVBRk5oZEVOdmJuWmxjblJWVkc5VEFFTnZiblpsY25SR1ZHOVRBSElnUFQwZ1UxQldYMU5WUTBORlUxTUFKVWc2SlUwNkpWTUFUM1YwY0hWMFRXVnRiM0o1UzBoU0FISmhlVkYxWlhKNVMwaFNBRkpoZVNCUmRXVnllU0J0ZFhOMElHSmxJR0VnY0c5cGJuUmxjaUIwYnlCUGNGUjVjR1ZTWVhsUmRXVnllVXRJVWdCVGRXSm5jbTkxY0VGdWVVdElVZ0JSZFdWMVpVWmhiV2xzZVV0SVVnQlVaWEp0YVc1aGRHVlNZWGxMU0ZJQVZISmhZMlZTWVhsTFNGSUFVR1Z5Vm1WeWRHVjRTMGhTQUZKaGVVZGxiMjFsZEhKNVNXNWtaWGhMU0ZJQVVtRjVVWFZsY25sSFpYUkpiblJsY25ObFkzUnBiMjVIWlc5dFpYUnllVWx1WkdWNFMwaFNBRkpoZVZGMVpYSjVSMlYwU1c1MFpYSnpaV04wYVc5dVNXNXpkR0Z1WTJWRGRYTjBiMjFKYm1SbGVFdElVZ0JTWVhsUmRXVnllVWRsZEVsdWRHVnljMlZqZEdsdmJsQnlhVzFwZEdsMlpVbHVaR1Y0UzBoU0FGSmhlVlJ0WVhoTFNGSUFVM1ZpWjNKdmRYQlZibWxtYjNKdFEyOXVkSEp2YkVac2IzZExTRklBVjI5eWEyZHliM1Z3VFdWdGIzSjVSWGh3YkdsamFYUk1ZWGx2ZFhSTFNGSUFVM1ZpWjNKdmRYQkNZV3hzYjNSTFNGSUFVMVZFYjNSTFNGSUFVMFJ2ZEV0SVVnQkJibmxJYVhSTFNGSUFWR1Z5YldsdVlYUmxUMjVHYVhKemRFaHBkRXRJVWdCSWFYUkJkSFJ5YVdKMWRHVkxTRklnVTNSdmNtRm5aU0JEYkdGemN5QjJZWEpwWVdKc1pYTWdZWEpsSUhKbFlXUWdiMjVzZVNCM2FYUm9JRUZ1ZVVocGRFdElVaUJoYm1RZ1EyeHZjMlZ6ZEVocGRFdElVZ0JFYjNSUWNtOWtkV04wU1c1d2RYUTBlRGhDYVhSTFNGSUFVR0ZqYTJWa1ZtVmpkRzl5Um05eWJXRjBOSGc0UW1sMFMwaFNBRkpoZVZGMVpYSjVSMlYwU1c1MFpYSnpaV04wYVc5dVNXNXpkR0Z1WTJWVGFHRmtaWEpDYVc1a2FXNW5WR0ZpYkdWU1pXTnZjbVJQWm1aelpYUkxTRklBUkc5MFVISnZaSFZqZEV0SVVnQkZlSEJsWTNSTFNGSUFVbUY1VVhWbGNubEhaWFJKYm5SbGNuTmxZM1JwYjI1WGIzSnNaRlJ2VDJKcVpXTjBTMGhTQUZOVlJHOTBRV05qVTJGMFMwaFNBRk5FYjNSQlkyTlRZWFJMU0ZJQVRXbHpjMHRJVWdCWGIzSnJaM0p2ZFhCTlpXMXZjbmxGZUhCc2FXTnBkRXhoZVc5MWREaENhWFJCWTJObGMzTkxTRklBVjI5eWEyZHliM1Z3VFdWdGIzSjVSWGh3YkdsamFYUk1ZWGx2ZFhReE5rSnBkRUZqWTJWemMwdElVZ0JTWVhsUmRXVnllVWRsZEZKaGVVWnNZV2R6UzBoU0FFbHVZMjl0YVc1blVtRjVSbXhoWjNOTFNGSUFVMnRwY0ZSeWFXRnVaMnhsYzB0SVVnQkRkV3hzUm5KdmJuUkdZV05wYm1kVWNtbGhibWRzWlhOTFNGSUFRM1ZzYkVKaFkydEdZV05wYm1kVWNtbGhibWRzWlhOTFNGSUFVbUY1VVhWbGNubEhaWFJKYm5SbGNuTmxZM1JwYjI1Q1lYSjVZMlZ1ZEhKcFkzTkxTRklBVTJ0cGNFRkJRa0p6UzBoU0FFZHliM1Z3VEc5bmFXTmhiRmh2Y2t0SVVnQkhjbTkxY0VKcGRIZHBjMlZZYjNKTFNGSUFUbTl1VUhKcGRtRjBaVkJ2YVc1MFpYSkxTRklBVTJoaFpHVnlVbVZqYjNKa1FuVm1abVZ5UzBoU0FGTnJhWEJEYkc5elpYTjBTR2wwVTJoaFpHVnlTMGhTQUVkeWIzVndURzluYVdOaGJFOXlTMGhTQUVkeWIzVndRbWwwZDJselpVOXlTMGhTQUVKaGNubERiMjl5WkU1dlVHVnljM0JMU0ZJQVVtVndiM0owU1c1MFpYSnpaV04wYVc5dVMwaFNBRkpoZVZGMVpYSjVRMjl1Wm1seWJVbHVkR1Z5YzJWamRHbHZia3RJVWdCU1lYbFJkV1Z5ZVVkbGJtVnlZWFJsU1c1MFpYSnpaV04wYVc5dVMwaFNBRkpoZVZGMVpYSjVRMkZ1Wkdsa1lYUmxTVzUwWlhKelpXTjBhVzl1UzBoU0FFbG5ibTl5WlVsdWRHVnljMlZqZEdsdmJrdElVZ0JTWVhsUmRXVnllVU52YlcxcGRIUmxaRWx1ZEdWeWMyVmpkR2x2Ymt0SVVnQlNZWGxSZFdWeWVVZGxkRWx1ZEdWeWMyVmpkR2x2Yms5aWFtVmpkRkpoZVVScGNtVmpkR2x2Ymt0SVVnQlNZWGxSZFdWeWVVZGxkRmR2Y214a1VtRjVSR2x5WldOMGFXOXVTMGhTQUZKaGVVZGxibVZ5WVhScGIyNUxTRklBVTNWaVozSnZkWEJHYVhKemRFbHVkbTlqWVhScGIyNUxTRklBVTNWaVozSnZkWEJTWldGa1NXNTJiMk5oZEdsdmJrdElVZ0JTWVhsVWJXbHVTMGhTQUZKaGVWRjFaWEo1UjJWMFNXNTBaWEp6WldOMGFXOXVUMkpxWldOMFVtRjVUM0pwWjJsdVMwaFNBRkpoZVZGMVpYSjVSMlYwVjI5eWJHUlNZWGxQY21sbmFXNUxTRklBVW1GNVVYVmxjbmxIWlhSU1lYbFVUV2x1UzBoU0FGWjFiR3RoYmt0SVVnQkhjbTkxY0VsTmRXeExTRklBUjNKdmRYQkdUWFZzUzBoU0FGTm9ZV1JsY2tOaGJHeExTRklBUkc5MFVISnZaSFZqZEVsdWNIVjBRV3hzUzBoU0FGTjFZbWR5YjNWd1FXeHNTMGhTQUU1dmJsQnlhWFpoZEdWVVpYaGxiRXRJVWdCV2IyeGhkR2xzWlZSbGVHVnNTMGhTQURvZ1RXVnRiM0o1SUZObGJXRnVkR2xqY3lCV2IyeGhkR2xzWlNCeVpYRjFhWEpsY3lCallYQmhZbWxzYVhSNUlGWjFiR3RoYmsxbGJXOXllVTF2WkdWc1MwaFNBRk4xWW1keWIzVndRV3hzUlhGMVlXeExTRklBVW1GNVVYVmxjbmxRY205MmFYTnBiMjVoYkV0SVVnQlNZWGxVY21GamFXNW5VSEp2ZG1semFXOXVZV3hMU0ZJQVUzVmlaM0p2ZFhCTWRFMWhjMnRMU0ZJQVUzVmlaM0p2ZFhCSGRFMWhjMnRMU0ZJQVUzVmlaM0p2ZFhCRmNVMWhjMnRMU0ZJQVVtRjVRM1ZzYkUxaGMydExTRklBVTNWaVozSnZkWEJNWlUxaGMydExTRklBVTNWaVozSnZkWEJIWlUxaGMydExTRklBVTJoaFpHVnlRMnh2WTJ0TFNGSUFVbVZoWkVOc2IyTnJTMGhTQUZKaGVWUnlZWFpsY25OaGJGQnlhVzFwZEdsMlpVTjFiR3hwYm1kTFNGSUFVbUY1VkhKaFkybHVaMHRJVWdCU1lYbFJkV1Z5ZVVsdWFYUnBZV3hwZW1WTFNGSUFUR0YxYm1Ob1UybDZaVXRJVWdCQmMzTjFiV1ZVY25WbFMwaFNBRU4xYkd4T2IwOXdZWEYxWlV0SVVnQkRkV3hzVDNCaGNYVmxTMGhTQUZKaGVWRjFaWEo1UjJWMFNXNTBaWEp6WldOMGFXOXVRMkZ1Wkdsa1lYUmxRVUZDUWs5d1lYRjFaVXRJVWdCSWFYUkJkSFJ5YVdKMWRHVkxTRklBVTNWaVozSnZkWEJXYjNSbFMwaFNBRWR5YjNWd1RtOXVWVzVwWm05eWJWSnZkR0YwWlV0SVVnQlNZWGxSZFdWeWVWUmxjbTFwYm1GMFpVdElVZ0JHY21GbmJXVnVkRk5vWVdScGJtZFNZWFJsUzBoU0FGQnlhVzFwZEdsMlpWTm9ZV1JwYm1kU1lYUmxTMGhTQUVOdmJuWmxjblJWVkc5QlkyTmxiR1Z5WVhScGIyNVRkSEoxWTNSMWNtVkxTRklBUlhod1pXTjBaV1FnUVdOalpXeGxjbUYwYVc5dUlGTjBjblZqZEhWeVpTQjBieUJpWlNCdlppQjBlWEJsSUU5d1ZIbHdaVUZqWTJWc1pYSmhkR2x2YmxOMGNuVmpkSFZ5WlV0SVVnQlNZWGxSZFdWeWVVZGxkRWx1ZEdWeWMyVmpkR2x2YmxSNWNHVkxTRklBVm5Wc2EyRnVUV1Z0YjNKNVRXOWtaV3hFWlhacFkyVlRZMjl3WlV0SVVnQlNZWGxSZFdWeWVVTnZiVzFwZEhSbFpFbHVkR1Z5YzJWamRHbHZiazV2Ym1WTFNGSUFSWGh3WldOMFFYTnpkVzFsUzBoU0FGSmhlVkYxWlhKNVEyRnVaR2xrWVhSbFNXNTBaWEp6WldOMGFXOXVWSEpwWVc1bmJHVkxTRklBVW1GNVVYVmxjbmxEYjIxdGFYUjBaV1JKYm5SbGNuTmxZM1JwYjI1VWNtbGhibWRzWlV0SVVnQlVZWEpuWlhRZ2JXVnRiM0o1SUdGalkyVnpjeUJ0ZFhOMElHNXZkQ0JwYm1Oc2RXUmxJRTFoYTJWUWIybHVkR1Z5Vm1semFXSnNaVXRJVWdCTllXdGxWR1Y0Wld4V2FYTnBZbXhsUzBoU0FFMWhhMlZXYVhOcFlteGxTMGhTQUVWNFpXTjFkR1ZEWVd4c1lXSnNaVXRJVWdCVGIzVnlZMlVnYldWdGIzSjVJR0ZqWTJWemN5QnRkWE4wSUc1dmRDQnBibU5zZFdSbElFMWhhMlZRYjJsdWRHVnlRWFpoYVd4aFlteGxTMGhTQUUxaGEyVlVaWGhsYkVGMllXbHNZV0pzWlV0SVVnQk5ZV3RsUVhaaGFXeGhZbXhsUzBoU0FGSmhlVkYxWlhKNVIyVjBTVzUwWlhKelpXTjBhVzl1Um5KdmJuUkdZV05sUzBoU0FFSmhjbmxEYjI5eVpFdElVZ0JJYVhSTGFXNWtTMGhTQUVkeWIzVndURzluYVdOaGJFRnVaRXRJVWdCSGNtOTFjRUpwZEhkcGMyVkJibVJMU0ZJQVVtRjVVWFZsY25sSFpYUkpiblJsY25ObFkzUnBiMjVQWW1wbFkzUlViMWR2Y214a1MwaFNBRkpoZVZGMVpYSjVRMjl0YldsMGRHVmtTVzUwWlhKelpXTjBhVzl1UjJWdVpYSmhkR1ZrUzBoU0FFUnZkRkJ5YjJSMVkzUkpibkIxZERSNE9FSnBkRkJoWTJ0bFpFdElVZ0JTWVhsUmRXVnllVkJ5YjJObFpXUkxTRklBY0dGNWJHOWhaQ0J0ZFhOMElHSmxJR0VnVDNCV1lYSnBZV0pzWlNCdlppQnpkRzl5WVdkbElHTnNZWE56SUZKaGVWQmhlV3h2WVdSTFNGSWdiM0lnU1c1amIyMXBibWRTWVhsUVlYbHNiMkZrUzBoU0FGQmhlV3h2WVdRZ2JYVnpkQ0JvWVhabElITjBiM0poWjJVZ1kyeGhjM01nVW1GNVVHRjViRzloWkV0SVVpQnZjaUJKYm1OdmJXbHVaMUpoZVZCaGVXeHZZV1JMU0ZJQVNHbDBJRTlpYW1WamRDQkJkSFJ5YVdKMWRHVnpJR2xrSUcxMWMzUWdZbVVnWVNCUGNGWmhjbWxoWW14bElHOW1JSE4wYjNKaFoyVWdZMnhoYzNNZ1VtRjVVR0Y1Ykc5aFpFdElVZ0JNWVhWdVkyaEpaRXRJVWdCU1lYbFJkV1Z5ZVVkbGRFbHVkR1Z5YzJWamRHbHZia2x1YzNSaGJtTmxTV1JMU0ZJQVIzSnZkWEJWYm1sbWIzSnRRWEpwZEdodFpYUnBZMHRJVWdCR2NtRm5iV1Z1ZEVKaGNubGpaVzUwY21salMwaFNBRU5oYkd4aFlteGxJRVJoZEdFZ2JYVnpkQ0JvWVhabElITjBiM0poWjJVZ1kyeGhjM01nUTJGc2JHRmliR1ZFWVhSaFMwaFNJRzl5SUVsdVkyOXRhVzVuUTJGc2JHRmliR1ZFWVhSaFMwaFNBRWxtSUU5d1ZIbHdaVUp2YjJ3Z2FYTWdjM1J2Y21Wa0lHbHVJR052Ym1wMWJtTjBhVzl1SUhkcGRHZ2dUM0JXWVhKcFlXSnNaU3dnYVhRZ1kyRnVJRzl1YkhrZ1ltVWdkWE5sWkNCM2FYUm9JRzV2YmkxbGVIUmxjbTVoYkd4NUlIWnBjMmxpYkdVZ2MyaGhaR1Z5SUZOMGIzSmhaMlVnUTJ4aGMzTmxjem9nVjI5eWEyZHliM1Z3TENCRGNtOXpjMWR2Y210bmNtOTFjQ3dnVUhKcGRtRjBaU3dnUm5WdVkzUnBiMjRzSUVsdWNIVjBMQ0JQZFhSd2RYUXNJRkpoZVZCaGVXeHZZV1JMU0ZJc0lFbHVZMjl0YVc1blVtRjVVR0Y1Ykc5aFpFdElVaXdnU0dsMFFYUjBjbWxpZFhSbFMwaFNMQ0JEWVd4c1lXSnNaVVJoZEdGTFNGSXNJRzl5SUVsdVkyOXRhVzVuUTJGc2JHRmliR1ZFWVhSaFMwaFNBRkpoZVZGMVpYSjVSMlYwU1c1MFpYSnpaV04wYVc5dVZFdElVZ0JTWVhsUmRXVnllVU5oYm1ScFpHRjBaVWx1ZEdWeWMyVmpkR2x2YmtGQlFrSkxTRklBUVVKSFVnQjBlWEJsSUQwOUlGTlFWbDlQVUVWU1FVNUVYMVJaVUVWZlRFbFVSVkpCVEY5SlRsUkZSMFZTSUh4OElIUjVjR1VnUFQwZ1UxQldYMDlRUlZKQlRrUmZWRmxRUlY5VVdWQkZSRjlNU1ZSRlVrRk1YMDVWVFVKRlVpQjhmQ0IwZVhCbElEMDlJRk5RVmw5UFVFVlNRVTVFWDFSWlVFVmZUMUJVU1U5T1FVeGZURWxVUlZKQlRGOUpUbFJGUjBWU0lIeDhJSFI1Y0dVZ1BUMGdVMUJXWDA5UVJWSkJUa1JmVkZsUVJWOVBVRlJKVDA1QlRGOVVXVkJGUkY5TVNWUkZVa0ZNWDBsT1ZFVkhSVklBVEdsdWEwOXVZMlZQUkZJQVVsUlFBRTl3Wlc1RFRGOURVRkFBVjFKQlVBQlRRVlJmV2tWU1R3QlVVazVmV2tWU1R3QlNUa1JmV2tWU1R3QnVaWE4wWldRZ2MzUnlkV04wZFhKbGN5QmpZVzV1YjNRZ1ltVWdkWE5sWkNCbWIzSWdaVzUwY25rZ2NHOXBiblFnU1U4QVUyRnRjR3hsSUdsdWRHVnljRzlzWVhScGIyNGdjMkZ0Y0d4cGJtY2dhWE1nYVc1MllXeHBaQ0J2YmlCcGJuUmxaM0poYkNCSlR3QkRaVzUwY205cFpDQnBiblJsY25CdmJHRjBhVzl1SUhOaGJYQnNhVzVuSUdseklHbHVkbUZzYVdRZ2IyNGdhVzUwWldkeVlXd2dTVThBVG05UVpYSnpjR1ZqZEdsMlpTQnBjeUJwYm5aaGJHbGtJRzl1SUdsdWRHVm5jbUZzSUVsUEFISjFiblJwYldVdGMybDZaU0JoY25KaGVTQnViM1FnWVd4c2IzZGxaQ0J2YmlCd2FYQmxiR2x1WlNCSlR3Qk9iM1JPWVU0QVVsUk9BRlJTVGdCT1FVNEFVMEZVWDFOWlRRQlViM0p1WVdSdlZrMEFRMjl5WlVOdmRXNTBRVkpOQUVOdmNtVkNkV2xzZEdsdWMwRlNUUUJYWVhKd1RXRjRTVVJCVWswQVEyOXlaVTFoZUVsRVFWSk5BRmRoY25CSlJFRlNUUUJEYjNKbFNVUkJVazBBVUUwQVFVMEFSMjl2WjJ4bElGTnJhV0VnVTJ0VFRBQkZVMU5NQUVoTVUwd0FSMHhUVEFCR1lXeHNkR2h5YjNWbmFDQnViM1FnY0dWeWJXbDBkR1ZrSUdsdUlGZEhVMHdBUm1Gc2JIUm9jbTkxWjJnZ2JtOTBJSE4xY0hCdmNuUmxaQ0JwYmlCWFIxTk1BRXhEWDBGTVRBQlBjR1Z1UjB3QVUyTm9aV1IxYkdWeVZHRnlaMlYwUm0xaGVFMW9la2xPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sUjJWMFJHVm1ZWFZzZEVsdWRHVnlSR2x5WldOMGFXOXVVR1Z1WVd4MGVVbE9WRVZNQUZOMVltZHliM1Z3UVhaalRXTmxVMlYwU1c1MFpYSkVhWEpsWTNScGIyNVFaVzVoYkhSNVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVkhaWFJFWldaaGRXeDBTVzUwY21GRGFISnZiV0ZOYjJSbFFtRnpaVkJsYm1Gc2RIbEpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVWRsZEVSbFptRjFiSFJKYm5SbGNsTm9ZWEJsVUdWdVlXeDBlVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sVTJWMFNXNTBaWEpUYUdGd1pWQmxibUZzZEhsSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTAxalpVZGxkRVJsWm1GMWJIUkpiblJ5WVV4MWJXRlRhR0Z3WlZCbGJtRnNkSGxKVGxSRlRBQlRkV0puY205MWNFRjJZMU5wWTFObGRFbHVkSEpoVEhWdFlWTm9ZWEJsVUdWdVlXeDBlVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sUjJWMFJHVm1ZWFZzZEVsdWRISmhUSFZ0WVUxdlpHVlFaVzVoYkhSNVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVkhaWFJFWldaaGRXeDBTVzUwWlhKQ1lYTmxUWFZzZEdsU1pXWmxjbVZ1WTJWUVpXNWhiSFI1U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5OWTJWVFpYUkpiblJsY2tKaGMyVk5kV3gwYVZKbFptVnlaVzVqWlZCbGJtRnNkSGxKVGxSRlRBQlRkV0puY205MWNFRjJZMDFqWlVkbGRFUmxabUYxYkhST2IyNUVZMHgxYldGSmJuUnlZVkJsYm1Gc2RIbEpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVk5sZEZOdmRYSmpaVWx1ZEdWeWJHRmpaV1JHYVdWc1pGQnZiR0Z5YVhSNVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVlRaWFJUYVc1bmJHVlNaV1psY21WdVkyVkpiblJsY214aFkyVmtSbWxsYkdSUWIyeGhjbWwwZVVsT1ZFVk1BRkp2ZFc1a1ZHOUpibVpwYm1sMGVVbE9WRVZNQUZOaGRtVk5aVzF2Y25sSlRsUkZUQUJTWlhOMGIzSmxUV1Z0YjNKNVNVNVVSVXdBVm1WamRHOXlRVzU1U1U1VVJVd0FVbVZtWlhKbGJtTmxaRWx1WkdseVpXTjBiSGxKVGxSRlRBQkliM04wVDI1c2VVbE9WRVZNQUVSbGRtbGpaVTl1YkhsSlRsUkZUQUJOVFVodmMzUkpiblJsY21aaFkyVk1ZWFJsYm1ONVNVNVVSVXdBVFdGNFEyOXVZM1Z5Y21WdVkzbEpUbFJGVEFCRVpYQmxibVJsYm1ONVFYSnlZWGxKVGxSRlRBQldZWEpwWVdKc1pVeGxibWQwYUVGeWNtRjVTVTVVUlV3QVRXRjRVbVZwYm5adlkyRjBhVzl1UkdWc1lYbEpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRkJ2ZDBsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFJHbDJTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTkpiV1ZGZG1Gc2RXRjBaVmRwZEdoRWRXRnNVbVZtWlhKbGJtTmxVM1J5WldGdGFXNXZkWFJKVGxSRlRBQlRkV0puY205MWNFRjJZMGx0WlVWMllXeDFZWFJsVjJsMGFGTnBibWRzWlZKbFptVnlaVzVqWlZOMGNtVmhiV2x1YjNWMFNVNVVSVXdBVkhsd1pVRjJZMGx0WlZKbGMzVnNkRVIxWVd4U1pXWmxjbVZ1WTJWVGRISmxZVzF2ZFhSSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpWTjBjbWx3UkhWaGJGSmxabVZ5Wlc1alpWTjBjbVZoYlc5MWRFbE9WRVZNQUZOMVltZHliM1Z3UVhaalNXMWxSWFpoYkhWaGRHVlhhWFJvUkhWaGJGSmxabVZ5Wlc1alpWTjBjbVZoYlc5MWRFbE9WRVZNQUZSNWNHVkJkbU5KYldWU1pYTjFiSFJUYVc1bmJHVlNaV1psY21WdVkyVlRkSEpsWVcxdmRYUkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwbHRaVk4wY21sd1UybHVaMnhsVW1WbVpYSmxibU5sVTNSeVpXRnRiM1YwU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5KYldWRmRtRnNkV0YwWlZkcGRHaFRhVzVuYkdWU1pXWmxjbVZ1WTJWVGRISmxZVzF2ZFhSSlRsUkZUQUJOVFVodmMzUkpiblJsY21aaFkyVk5ZWGhDZFhKemRFbE9WRVZNQUUxTlNHOXpkRWx1ZEdWeVptRmpaVmRoYVhSU1pYRjFaWE4wU1U1VVJVd0FRV3hzYjNkRGIyNTBjbUZqZEVaaGMzUkpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRU5oYzNSSlRsUkZUQUJHYVhobFpGSnpjWEowU1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSVGNYSjBTVTVVUlV3QVJtbDRaV1JUY1hKMFNVNVVSVXdBUVhKaWFYUnlZWEo1Um14dllYUlNVM0Z5ZEVsT1ZFVk1BRk5wYlhCc1pVUjFZV3hRYjNKMFNVNVVSVXdBUVhKaWFYUnlZWEo1Um14dllYUkRZbkowU1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSSWVYQnZkRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpTVzFsVTJWMFRXRjRUVzkwYVc5dVZtVmpkRzl5UTI5MWJuUkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVWRsZEVsdWRHVnlUVzkwYVc5dVZtVmpkRzl5UTI5MWJuUkpUbFJGVEFCT1lXMWxaRUpoY25KcFpYSkRiM1Z1ZEVsT1ZFVk1BRXh2YjNCRGIzVnVkRWxPVkVWTUFFRnlZbWwwY21GeWVWQnlaV05wYzJsdmJrWnNiMkYwYVc1blVHOXBiblJKVGxSRlRBQkJjbUpwZEhKaGNubFFjbVZqYVhOcGIyNUdhWGhsWkZCdmFXNTBTVTVVUlV3QVEyOXVaSFZwZEV0bGNtNWxiRUZ5WjNWdFpXNTBTVTVVUlV3QVVtVm5hWE4wWlhKTllYQkxaWEp1Wld4QmNtZDFiV1Z1ZEVsT1ZFVk1BRk4wWVdKc1pVdGxjbTVsYkVGeVozVnRaVzUwU1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSRFlYTjBWRzlKYm5SSlRsUkZUQUJCY21KcGRISmhjbmxHYkc5aGRFTmhjM1JHY205dFNXNTBTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZEYjI1MlpYSjBWRzlTWldaU1pYTjFiSFJKVGxSRlRBQlVlWEJsUVhaalVtVm1VbVZ6ZFd4MFNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVkRiMjUyWlhKMFZHOUpiV1ZTWlhOMWJIUkpUbFJGVEFCVWVYQmxRWFpqU1cxbFVtVnpkV3gwU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5TWldaRGIyNTJaWEowVkc5TlkyVlNaWE4xYkhSSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpVTnZiblpsY25SVWIwMWpaVkpsYzNWc2RFbE9WRVZNQUZOMVltZHliM1Z3UVhaalUybGpRMjl1ZG1WeWRGUnZUV05sVW1WemRXeDBTVTVVUlV3QVZIbHdaVUYyWTAxalpWSmxjM1ZzZEVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVFdObFEyOXVkbVZ5ZEZSdlUybGpVbVZ6ZFd4MFNVNVVSVXdBVkhsd1pVRjJZMU5wWTFKbGMzVnNkRWxPVkVWTUFFTnZiblJ5YjJ4Q1lYSnlhV1Z5VjJGcGRFbE9WRVZNQUU1dlIyeHZZbUZzVDJabWMyVjBTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTkpiV1ZCWkdwMWMzUlNaV1pQWm1aelpYUkpUbFJGVEFCSGJHOWlZV3hXWVhKcFlXSnNaVTltWm5ObGRFbE9WRVZNQUVGemJWUmhjbWRsZEVsT1ZFVk1BRlZCWkdSVFlYUkpUbFJGVEFCSlFXUmtVMkYwU1U1VVJVd0FWVk4xWWxOaGRFbE9WRVZNQUVsVGRXSlRZWFJKVGxSRlRBQkNZVzVyUW1sMGMwbE9WRVZNQUZOcFpHVkZabVpsWTNSelNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVkhaWFJOYjNScGIyNVdaV04wYjNKelNVNVVSVXdBVTNWaVozSnZkWEJCZG1OSmJXVkhaWFJUZEhKbFlXMXZkWFJFZFdGc1VtVm1aWEpsYm1ObFRXRnFiM0pUYUdGd1pVMXZkR2x2YmxabFkzUnZjbk5KVGxSRlRBQlRkV0puY205MWNFRjJZMGx0WlVkbGRGTjBjbVZoYlc5MWRGTnBibWRzWlZKbFptVnlaVzVqWlUxaGFtOXlVMmhoY0dWTmIzUnBiMjVXWldOMGIzSnpTVTVVUlV3QVJuVnVZM1JwYjI1UWIybHVkR1Z5YzBsT1ZFVk1BRUZ5WW1sMGNtRnllVkJ5WldOcGMybHZia2x1ZEdWblpYSnpTVTVVUlV3QVZVTnZkVzUwVkhKaGFXeHBibWRhWlhKdmMwbE9WRVZNQUZWRGIzVnVkRXhsWVdScGJtZGFaWEp2YzBsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFEyOXpTVTVVUlV3QVFYSmlhWFJ5WVhKNVJteHZZWFJUYVc1RGIzTkpUbFJGVEFCR2FYaGxaRk5wYmtOdmMwbE9WRVZNQUVacGVHVmtRMjl6U1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSQlEyOXpTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZIWlhSQ1pYTjBTVzUwWlhKRWFYTjBiM0owYVc5dWMwbE9WRVZNQUZOMVltZHliM1Z3UVhaalRXTmxSMlYwU1c1MFpYSkVhWE4wYjNKMGFXOXVjMGxPVkVWTUFGTjFZbWR5YjNWd1FYWmpTVzFsUjJWMFUzUnlaV0Z0YjNWMFJIVmhiRkpsWm1WeVpXNWpaVTFoYW05eVUyaGhjR1ZFYVhOMGIzSjBhVzl1YzBsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFIyVjBVM1J5WldGdGIzVjBVMmx1WjJ4bFVtVm1aWEpsYm1ObFRXRnFiM0pUYUdGd1pVUnBjM1J2Y25ScGIyNXpTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZIWlhSSmJuUmxja1JwY21WamRHbHZibk5KVGxSRlRBQlRjR1ZqZFd4aGRHVmtTWFJsY21GMGFXOXVjMGxPVkVWTUFFNTFiVk5KVFVSWGIzSnJhWFJsYlhOSlRsUkZUQUJWYm5OMGNuVmpkSFZ5WldSTWIyOXdRMjl1ZEhKdmJITkpUbFJGVEFCR1VFZEJURzl2Y0VOdmJuUnliMnh6U1U1VVJVd0FUblZ0WW1GdWEzTkpUbFJGVEFCR1VFZEJUV1Z0YjNKNVFYUjBjbWxpZFhSbGMwbE9WRVZNQUVaUVIwRkRiSFZ6ZEdWeVFYUjBjbWxpZFhSbGMwbE9WRVZNQUVaUVIwRkxaWEp1Wld4QmRIUnlhV0oxZEdWelNVNVVSVXdBUmxCSFFVbHVkbTlqWVhScGIyNVFhWEJsYkdsdWFXNW5RWFIwY21saWRYUmxjMGxPVkVWTUFFMWhlRkpsY0d4cFkyRjBaWE5KVGxSRlRBQkdVRWRCVFdWdGIzSjVRV05qWlhOelpYTkpUbFJGVEFCVlUwMVRkRzl5WVdkbFEyeGhjM05sYzBsT1ZFVk1BRUpzYjJOcmFXNW5VR2x3WlhOSlRsUkZUQUJKVDFCcGNHVnpTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZIWlhSSmJuUmxjbEpsWm1WeVpXNWpaVWx1ZEdWeWJHRmpaV1JHYVdWc1pGQnZiR0Z5YVhScFpYTkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVk5sZEVSMVlXeFNaV1psY21WdVkyVkpiblJsY214aFkyVmtSbWxsYkdSUWIyeGhjbWwwYVdWelNVNVVSVXdBVFdGNFVISnBkbUYwWlVOdmNHbGxjMGxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVMmxqUjJWMFVHRmphMlZrU1hCbFRIVnRZVTF2WkdWelNVNVVSVXdBU1c1a2FYSmxZM1JTWldabGNtVnVZMlZ6U1U1VVJVd0FSbEJIUVVGeVozVnRaVzUwU1c1MFpYSm1ZV05sYzBsT1ZFVk1BRk4xWW1keWIzVndRWFpqVTJsalIyVjBTVzUwWlhKU1lYZFRZV1J6U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5OWTJWSFpYUkpiblJsY2xKbFptVnlaVzVqWlVsa2MwbE9WRVZNQUZOMVltZHliM1Z3UVhaalNXMWxSMlYwVTNSeVpXRnRiM1YwUkhWaGJGSmxabVZ5Wlc1alpVMWhhbTl5VTJoaGNHVlNaV1psY21WdVkyVkpaSE5KVGxSRlRBQlRkV0puY205MWNFRjJZMGx0WlVkbGRGTjBjbVZoYlc5MWRGTnBibWRzWlZKbFptVnlaVzVqWlUxaGFtOXlVMmhoY0dWU1pXWmxjbVZ1WTJWSlpITkpUbFJGVEFCT2IwRnNhV0Z6U1U1VVJVd0FRM0p2YzNOWGIzSnJaM0p2ZFhCRFlYTjBWRzlRZEhKSlRsUkZUQUJUYVc1bmJHVkZiR1Z0Wlc1MFZtVmpkRzl5U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5KYldWSFpYUlhaV2xuYUhScGJtZFFZWFIwWlhKdVRXbHVhVzExYlUxdmRHbHZibFpsWTNSdmNrbE9WRVZNQUZOMVltZHliM1Z3VTJoMVptWnNaVmh2Y2tsT1ZFVk1BRkpsWjJsemRHVnlTVTVVUlV3QVEyOXVjM1JoYm5SR2RXNWpkR2x2YmxCdmFXNTBaWEpKVGxSRlRBQlRjR3hwZEVKaGNuSnBaWEpKVGxSRlRBQkRiRzlpWW1WeVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVlRaWFJCWTA5dWJIbElZV0Z5U1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSRmVIQkpUbFJGVEFCR2FYaGxaRVY0Y0VsT1ZFVk1BRkIwY2tOaGMzUlViME55YjNOelYyOXlhMmR5YjNWd1NVNVVSVXdBVTJsdVoyeGxjSFZ0Y0VsT1ZFVk1BRVJ2ZFdKc1pYQjFiWEJKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEZKbFkybHdTVTVVUlV3QVJtbDRaV1JTWldOcGNFbE9WRVZNQUZOMVltZHliM1Z3VTJoMVptWnNaVlZ3U1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSTWIyY3hjRWxPVkVWTUFGTjFZbWR5YjNWd1UyaDFabVpzWlVSdmQyNUpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwbHRaVWRsZEZkbGFXZG9kR2x1WjFCaGRIUmxjbTVOYVc1cGJYVnRSR2x6ZEc5eWRHbHZia2xPVkVWTUFGTjFZbWR5YjNWd1FYWmpVMmxqUjJWMFFtVnpkRWx3WlV4MWJXRkVhWE4wYjNKMGFXOXVTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTlRhV05IWlhSQ1pYTjBTWEJsUTJoeWIyMWhSR2x6ZEc5eWRHbHZia2xPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sVTJWMFRXOTBhVzl1Vm1WamRHOXlRMjl6ZEVaMWJtTjBhVzl1U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5UYVdOVFpYUkpiblJ5WVV4MWJXRk5iMlJsUTI5emRFWjFibU4wYVc5dVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OVGFXTlRaWFJKYm5SeVlVTm9jbTl0WVUxdlpHVkRiM04wUm5WdVkzUnBiMjVKVGxSRlRBQkdkWE5sVEc5dmNITkpia1oxYm1OMGFXOXVTVTVVUlV3QVZtVmpkRzl5UTI5dGNIVjBaVVoxYm1OMGFXOXVTVTVVUlV3QVZtVmpkRzl5UTI5dGNIVjBaVU5oYkd4aFlteGxSblZ1WTNScGIyNUpUbFJGVEFCRGIyUmxVMlZqZEdsdmJrbE9WRVZNQUZOMVltZHliM1Z3UVhaalNXMWxSMlYwVlc1cFpHbHlaV04wYVc5dVlXeEZZWEpzZVZObFlYSmphRlJsY20xcGJtRjBhVzl1U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5OYjNScGIyNUZjM1JwYldGMGFXOXVTVTVVUlV3QVJsQkhRVUoxWm1abGNreHZZMkYwYVc5dVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OSmJXVkhaWFJVY25WdVkyRjBaV1JUWldGeVkyaEpibVJwWTJGMGFXOXVTVTVVUlV3QVRtOUdkWE5wYjI1SlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpVZGxkRVIxWVd4U1pXWmxjbVZ1WTJWVGRISmxZVzFwYmtsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFJYWmhiSFZoZEdWWGFYUm9SSFZoYkZKbFptVnlaVzVqWlZOMGNtVmhiV2x1U1U1VVJVd0FWSGx3WlVGMlkwbHRaVVIxWVd4U1pXWmxjbVZ1WTJWVGRISmxZVzFwYmtsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFIyVjBVMmx1WjJ4bFVtVm1aWEpsYm1ObFUzUnlaV0Z0YVc1SlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpVVjJZV3gxWVhSbFYybDBhRk5wYm1kc1pWSmxabVZ5Wlc1alpWTjBjbVZoYldsdVNVNVVSVXdBVkhsd1pVRjJZMGx0WlZOcGJtZHNaVkpsWm1WeVpXNWpaVk4wY21WaGJXbHVTVTVVUlV3QVFYSmlhWFJ5WVhKNVJteHZZWFJUYVc1SlRsUkZUQUJHYVhobFpGTnBia2xPVkVWTUFFRnlZbWwwY21GeWVVWnNiMkYwUVZOcGJrbE9WRVZNQUVGeVltbDBjbUZ5ZVVac2IyRjBRVlJoYmtsT1ZFVk1BRUZ6YlVsT1ZFVk1BRTFoZUZkdmNtdEVhVzFKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEUxMWJFbE9WRVZNQUVaMWJtTjBhVzl1Um14dllYUkRiMjUwY205c1NVNVVSVXdBVEc5dmNFTnZiblJ5YjJ4SlRsUkZUQUJHVUVkQlJGTlFRMjl1ZEhKdmJFbE9WRVZNQUVaMWJtTjBhVzl1VUc5cGJuUmxja05oYkd4SlRsUkZUQUJCYzIxRFlXeHNTVTVVUlV3QVUzUmhZMnREWVd4c1NVNVVSVXdBVTBsTlZFTmhiR3hKVGxSRlRBQkJiR2xoYzFOamIzQmxUR2x6ZEVSbFkyeEpUbFJGVEFCQmJHbGhjMFJ2YldGcGJrUmxZMnhKVGxSRlRBQkJiR2xoYzFOamIzQmxSR1ZqYkVsT1ZFVk1BRWx1YVhScFlYUnBiMjVKYm5SbGNuWmhiRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVMmxqUjJWMFRXOTBhVzl1Vm1WamRHOXlUV0Z6YTBsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFEyOXpVR2xKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEZOcGJrTnZjMUJwU1U1VVJVd0FSbWw0WldSVGFXNURiM05RYVVsT1ZFVk1BRVpwZUdWa1EyOXpVR2xKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEVGRGIzTlFhVWxPVkVWTUFFRnlZbWwwY21GeWVVWnNiMkYwVTJsdVVHbEpUbFJGVEFCR2FYaGxaRk5wYmxCcFNVNVVSVXdBUVhKaWFYUnlZWEo1Um14dllYUkJVMmx1VUdsSlRsUkZUQUJCY21KcGRISmhjbmxHYkc5aGRFRlVZVzVRYVVsT1ZFVk1BRVp2Y21ObFVHOTNNa1JsY0hSb1NVNVVSVXdBUW1GdWEzZHBaSFJvU1U1VVJVd0FUVTFJYjNOMFNXNTBaWEptWVdObFFXUmtjbVZ6YzFkcFpIUm9TVTVVUlV3QVRVMUliM04wU1c1MFpYSm1ZV05sUkdGMFlWZHBaSFJvU1U1VVJVd0FVSEpsWm1WMFkyaEpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRXh2WjBsT1ZFVk1BRVpwZUdWa1RHOW5TVTVVUlV3QVRXRjRTVzUwWlhKc1pXRjJhVzVuU1U1VVJVd0FUV1Z0YjNKNVFXTmpaWE56UVd4cFlYTnBibWRKVGxSRlRBQlhjbWwwWlZCcGNHVkNiRzlqYTJsdVowbE9WRVZNQUZKbFlXUlFhWEJsUW14dlkydHBibWRKVGxSRlRBQkdVRWRCVW1WblNVNVVSVXdBVTNWaVozSnZkWEJCZG1OSmJXVkpibWwwYVdGc2FYcGxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTkdiV1ZKYm1sMGFXRnNhWHBsU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5DYldWSmJtbDBhV0ZzYVhwbFNVNVVSVXdBVTNWaVozSnZkWEJCZG1OVGFXTkpibWwwYVdGc2FYcGxTVTVVUlV3QVUyaGhjbVZrVEc5allXeE5aVzF2Y25sVGFYcGxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTkpiV1ZTWldaWGFXNWtiM2RUYVhwbFNVNVVSVXdBVFdGNFYyOXlhMmR5YjNWd1UybDZaVWxPVkVWTUFFTmhZMmhsVTJsNlpVbE9WRVZNQUVOdmJuUnliMnhDWVhKeWFXVnlRWEp5YVhabFNVNVVSVXdBVm1WamRHOXlRMjl0Y0hWMFpVbE9WRVZNQUZKMWJuUnBiV1ZCYkdsbmJtVmtRWFIwY21saWRYUmxTVTVVUlV3QVRHOXVaME52Ym5OMFlXNTBRMjl0Y0c5emFYUmxTVTVVUlV3QVUzVmlaM0p2ZFhCQ2JHOWphMWR5YVhSbFNVNVVSVXdBVTNWaVozSnZkWEJKYldGblpVSnNiMk5yVjNKcGRHVkpUbFJGVEFCVGRXSm5jbTkxY0VsdFlXZGxUV1ZrYVdGQ2JHOWphMWR5YVhSbFNVNVVSVXdBVEc5dmNFWjFjMlZKVGxSRlRBQkJiR2xoYzFOamIzQmxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZIWlhSSmJuUmxjazFwYm05eVUyaGhjR1ZKVGxSRlRBQlRkV0puY205MWNFRjJZMDFqWlVkbGRFbHVkR1Z5VFdGcWIzSlRhR0Z3WlVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVTJsalIyVjBTWEJsVEhWdFlWTm9ZWEJsU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5UYVdORmRtRnNkV0YwWlVsd1pVbE9WRVZNQUU5d2RFNXZibVZKVGxSRlRBQkVaV0oxWjBsdVptOU5iMlIxYkdWSlRsUkZUQUJFWldKMVowMXZaSFZzWlVsT1ZFVk1BRk4xWW1keWIzVndVMmgxWm1ac1pVbE9WRVZNQUZOMVltZHliM1Z3UVhaalNXMWxVMlYwVlc1cFpHbHlaV04wYVc5dVlXeE5hWGhFYVhOaFlteGxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTlNaV1pUWlhSQ2FXUnBjbVZqZEdsdmJtRnNUV2w0UkdsellXSnNaVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVbVZtVTJWMFFtbHNhVzVsWVhKR2FXeDBaWEpGYm1GaWJHVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxTnBZMU5sZEVKcGJHbHVaV0Z5Um1sc2RHVnlSVzVoWW14bFNVNVVSVXdBVTNWaVozSnZkWEJCZG1OVGFXTlRaWFJUYTJOR2IzSjNZWEprVkhKaGJuTm1iM0p0Ulc1aFlteGxTVTVVUlV3QVUzUmhiR3hGYm1GaWJHVkpUbFJGVEFCUWFYQmxiR2x1WlVWdVlXSnNaVWxPVkVWTUFGWmxZM1J2Y2tOdmJYQjFkR1ZXWVhKcFlXSnNaVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sUjJWMFJHVm1ZWFZzZEV4dmQxQmxibUZzZEhsRGIzTjBWR0ZpYkdWSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTAxalpVZGxkRVJsWm1GMWJIUk5aV1JwZFcxUVpXNWhiSFI1UTI5emRGUmhZbXhsU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5OWTJWSFpYUkVaV1poZFd4MFNHbG5hRkJsYm1Gc2RIbERiM04wVkdGaWJHVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVWRsZEVSbFptRjFiSFJKYm5SbGNrMXZkR2x2YmxabFkzUnZja052YzNSVVlXSnNaVWxPVkVWTUFFMWxjbWRsU1U1VVJVd0FTVTlRYVhCbFUzUnZjbUZuWlVsT1ZFVk1BRlZCZG1WeVlXZGxTVTVVUlV3QVNVRjJaWEpoWjJWSlRsUkZUQUJVZVhCbFZtMWxTVzFoWjJWSlRsUkZUQUJHZFc1amRHbHZia1pzYjJGMGFXNW5VRzlwYm5STmIyUmxTVTVVUlV3QVJuVnVZM1JwYjI1RVpXNXZjbTFOYjJSbFNVNVVSVXdBUmxCR1lYTjBUV0YwYUUxdlpHVkpUbFJGVEFCR2RXNWpkR2x2YmxKdmRXNWthVzVuVFc5a1pVbE9WRVZNQUUxTlNHOXpkRWx1ZEdWeVptRmpaVkpsWVdSWGNtbDBaVTF2WkdWSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTFOcFkwZGxkRWx3WlVOb2NtOXRZVTF2WkdWSlRsUkZUQUJOWVhSb1QzQkVVMUJOYjJSbFNVNVVSVXdBUkc5dWRGTjBZWFJwWTJGc2JIbERiMkZzWlhOalpVbE9WRVZNQUVKMWNuTjBRMjloYkdWelkyVkpUbFJGVEFCTWIyOXdRMjloYkdWelkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwbHRaVk5sZEVSMVlXeFNaV1psY21WdVkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxSmxaa1YyWVd4MVlYUmxWMmwwYUVSMVlXeFNaV1psY21WdVkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwbHRaVVYyWVd4MVlYUmxWMmwwYUVSMVlXeFNaV1psY21WdVkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxTnBZMFYyWVd4MVlYUmxWMmwwYUVSMVlXeFNaV1psY21WdVkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxSmxaa1YyWVd4MVlYUmxWMmwwYUUxMWJIUnBVbVZtWlhKbGJtTmxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTlRhV05GZG1Gc2RXRjBaVmRwZEdoTmRXeDBhVkpsWm1WeVpXNWpaVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpTVzFsVTJWMFUybHVaMnhsVW1WbVpYSmxibU5sU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5TWldaRmRtRnNkV0YwWlZkcGRHaFRhVzVuYkdWU1pXWmxjbVZ1WTJWSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpVVjJZV3gxWVhSbFYybDBhRk5wYm1kc1pWSmxabVZ5Wlc1alpVbE9WRVZNQUZOMVltZHliM1Z3UVhaalUybGpSWFpoYkhWaGRHVlhhWFJvVTJsdVoyeGxVbVZtWlhKbGJtTmxTVTVVUlV3QVZIbHdaVUoxWm1abGNsTjFjbVpoWTJWSlRsUkZUQUJUZEhKbFlXMXBibWRKYm5SbGNtWmhZMlZKVGxSRlRBQkdkVzVqVUdGeVlXMUpUMHRwYm1SSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTFOcFkwZGxkRkJoWTJ0bFpGTnJZMHgxYldGRGIzVnVkRlJvY21WemFHOXNaRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpTVzFsVTJWMFJXRnliSGxUWldGeVkyaFVaWEp0YVc1aGRHbHZibFJvY21WemFHOXNaRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVMmxqUjJWMFVHRmphMlZrVTJ0alRIVnRZVk4xYlZSb2NtVnphRzlzWkVsT1ZFVk1BRlI1Y0dWVGRISjFZM1JEYjI1MGFXNTFaV1JKVGxSRlRBQlRjR1ZqUTI5dWMzUmhiblJEYjIxd2IzTnBkR1ZEYjI1MGFXNTFaV1JKVGxSRlRBQlNkVzUwYVcxbFFXeHBaMjVsWkVsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFIyVjBRbTl5WkdWeVVtVmhZMmhsWkVsT1ZFVk1BRlZCZG1WeVlXZGxVbTkxYm1SbFpFbE9WRVZNQUVsQmRtVnlZV2RsVW05MWJtUmxaRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVbVZtUlhaaGJIVmhkR1ZYYVhSb1RYVnNkR2xTWldabGNtVnVZMlZKYm5SbGNteGhZMlZrU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5UYVdORmRtRnNkV0YwWlZkcGRHaE5kV3gwYVZKbFptVnlaVzVqWlVsdWRHVnliR0ZqWldSSlRsUkZUQUJCY21KcGRISmhjbmxHYkc5aGRFRmtaRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sUTI5dWRtVnlkRlJ2VW1WbVVHRjViRzloWkVsT1ZFVk1BRlI1Y0dWQmRtTlNaV1pRWVhsc2IyRmtTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZEYjI1MlpYSjBWRzlKYldWUVlYbHNiMkZrU1U1VVJVd0FWSGx3WlVGMlkwbHRaVkJoZVd4dllXUkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxSmxaa052Ym5abGNuUlViMDFqWlZCaGVXeHZZV1JKVGxSRlRBQlRkV0puY205MWNFRjJZMGx0WlVOdmJuWmxjblJVYjAxalpWQmhlV3h2WVdSSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTFOcFkwTnZiblpsY25SVWIwMWpaVkJoZVd4dllXUkpUbFJGVEFCVWVYQmxRWFpqVFdObFVHRjViRzloWkVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVFdObFEyOXVkbVZ5ZEZSdlUybGpVR0Y1Ykc5aFpFbE9WRVZNQUZSNWNHVkJkbU5UYVdOUVlYbHNiMkZrU1U1VVJVd0FVM1ZpWjNKdmRYQkNiRzlqYTFKbFlXUkpUbFJGVEFCVGRXSm5jbTkxY0VsdFlXZGxRbXh2WTJ0U1pXRmtTVTVVUlV3QVUzVmlaM0p2ZFhCSmJXRm5aVTFsWkdsaFFteHZZMnRTWldGa1NVNVVSVXdBVTNWaVozSnZkWEJCZG1OVGFXTlRaWFJDYkc5amEwSmhjMlZrVW1GM1UydHBjRk5oWkVsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFUyVjBWMlZwWjJoMFpXUlRZV1JKVGxSRlRBQkJiR3h2ZDFKbFlYTnpiMk5KVGxSRlRBQlRkV0puY205MWNFRjJZMU5wWTBOdmJtWnBaM1Z5WlZOclkwbE9WRVZNQUVGeVltbDBjbUZ5ZVVac2IyRjBVM1ZpU1U1VVJVd0FRV0p6VlZOMVlrbE9WRVZNQUVGaWMwbFRkV0pKVGxSRlRBQlRkV0puY205MWNFRjJZMDF2ZEdsdmJrVnpkR2x0WVhScGIyNUpiblJ5WVVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVTJsalEyOXVabWxuZFhKbFNYQmxUSFZ0WVVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVFc5MGFXOXVSWE4wYVcxaGRHbHZia05vY205dFlVbE9WRVZNQUZOMVltZHliM1Z3UVhaalUybGpRMjl1Wm1sbmRYSmxTWEJsVEhWdFlVTm9jbTl0WVVsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFRGUkpUbFJGVEFCR2JHOWhkR2x1WjFCdmFXNTBUVzlrWlVGTVZFbE9WRVZNQUVGeVltbDBjbUZ5ZVVac2IyRjBSMVJKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEZCdmQxSkpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRVZSU1U1VVJVd0FVbTkxYm1ScGJtZE5iMlJsVWxSUVNVNVVSVXdBVTNWaVozSnZkWEJDZFdabVpYSkNiRzlqYTBsUFNVNVVSVXdBVTNWaVozSnZkWEJKYldGblpVSnNiMk5yU1U5SlRsUkZUQUJUZFdKbmNtOTFjRWx0WVdkbFRXVmthV0ZDYkc5amEwbFBTVTVVUlV3QVFYSmlhWFJ5WVhKNVJteHZZWFJRYjNkT1NVNVVSVXdBVW05MWJtUnBibWROYjJSbFVsUk9TVTVVUlV3QVFYSmlhWFJ5WVhKNVJteHZZWFJNUlVsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFIwVkpUbFJGVEFCR2JHOWhkR2x1WjFCdmFXNTBUVzlrWlVsRlJVVkpUbFJGVEFCVlRYVnNNeko0TVRaSlRsUkZUQUJKVFhWc016SjRNVFpKVGxSRlRBQkpiblJsWjJWeVJuVnVZM1JwYjI1ek1rbE9WRVZNQUVGeVltbDBjbUZ5ZVVac2IyRjBSWGh3TWtsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFFWUmhiakpKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEV4dlp6SkpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRVY0Y0cweFNVNVVSVXdBUVhKaWFYUnlZWEo1Um14dllYUkZlSEF4TUVsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFRHOW5NVEJKVGxSRlRBQkRVRkJmWm05eVgwOXdaVzVEVEFCVFdVTk1BRXNBVEhWdVlYSkhBRkpIQUc5d1pYSmhibVF1ZEhsd1pTQTlQU0JUVUZaZlQxQkZVa0ZPUkY5VVdWQkZYMHhKVkVWU1FVeGZVMVJTU1U1SEFFeEJUa2NBUTI5dWRtVnlkRlZVYjBZQVEyOXVkbVZ5ZEZOVWIwWUFVazVFWDAxSlRsOUpUa1lBVWs1RVgwbE9SZ0JTYjNWdVpHbHVaMDF2WkdWU1ZFVUFhVzV6ZEMwK1pYaDBYMmx1YzNSZmRIbHdaU0FoUFNCVFVGWmZSVmhVWDBsT1UxUmZWRmxRUlY5T1QwNUZBSFI1Y0dVZ0lUMGdVMUJXWDA5UVJWSkJUa1JmVkZsUVJWOU9UMDVGQUVoc2MyeERiM1Z1ZEdWeVFuVm1abVZ5UjA5UFIweEZBRTFsYldKbGNrUmxZMjl5WVhSbFUzUnlhVzVuUjA5UFIweEZBRlZ6WlhKVWVYQmxSMDlQUjB4RkFFaHNjMnhUWlcxaGJuUnBZMGRQVDBkTVJRQkpSVVZGQUZKT1JBQllMVXhGUjBWT1JBQkpiblJsY25CdmJHRjBaVUYwVm1WeWRHVjRRVTFFQUVOMVltVkdZV05sU1c1a1pYaEJUVVFBVTNSbGJtTnBiRkpsWmt4bGMzTkdjbTl1ZEVGTlJBQlRkR1Z1WTJsc1VtVm1SM0psWVhSbGNrWnliMjUwUVUxRUFGTjBaVzVqYVd4U1pXWlZibU5vWVc1blpXUkdjbTl1ZEVGTlJBQk5ZbU51ZEVGTlJBQkZZWEpzZVVGdVpFeGhkR1ZHY21GbmJXVnVkRlJsYzNSelFVMUVBRk4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkFCQ1lYSjVRMjl2Y21ST2IxQmxjbk53UVUxRUFFVjRjR3hwWTJsMFNXNTBaWEp3UVUxRUFGZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJBQkhjbTkxY0ZWTllYaE9iMjVWYm1sbWIzSnRRVTFFQUVkeWIzVndVMDFoZUU1dmJsVnVhV1p2Y20xQlRVUUFSM0p2ZFhCR1RXRjRUbTl1Vlc1cFptOXliVUZOUkFCSGNtOTFjRlZOYVc1T2IyNVZibWxtYjNKdFFVMUVBRWR5YjNWd1UwMXBiazV2YmxWdWFXWnZjbTFCVFVRQVIzSnZkWEJHVFdsdVRtOXVWVzVwWm05eWJVRk5SQUJIY205MWNFbEJaR1JPYjI1VmJtbG1iM0p0UVUxRUFFZHliM1Z3UmtGa1pFNXZibFZ1YVdadmNtMUJUVVFBUW1GeWVVTnZiM0prVUhWc2JFMXZaR1ZzUVUxRUFFWnlZV2R0Wlc1MFRXRnphMEZOUkFCVGRHVnVZMmxzVW1WbVRHVnpjMEpoWTJ0QlRVUUFVM1JsYm1OcGJGSmxaa2R5WldGMFpYSkNZV05yUVUxRUFGTjBaVzVqYVd4U1pXWlZibU5vWVc1blpXUkNZV05yUVUxRUFFSmhjbmxEYjI5eVpGTnRiMjkwYUVGTlJBQkdjbUZuYldWdWRFWmxkR05vUVUxRUFFWnlZV2R0Wlc1MFRXRnphMFpsZEdOb1FVMUVBRlJwYldWQlRVUUFRbUZ5ZVVOdmIzSmtUbTlRWlhKemNGTmhiWEJzWlVGTlJBQkNZWEo1UTI5dmNtUlRiVzl2ZEdoVFlXMXdiR1ZCVFVRQVJteHZZWFF4TmtsdFlXZGxRVTFFQUVOMVltVkdZV05sUTI5dmNtUkJUVVFBU1cxaFoyVkhZWFJvWlhKQ2FXRnpURzlrUVUxRUFFbHRZV2RsVW1WaFpGZHlhWFJsVEc5a1FVMUVBRUpoY25sRGIyOXlaRTV2VUdWeWMzQkRaVzUwY205cFpFRk5SQUJDWVhKNVEyOXZjbVJUYlc5dmRHaERaVzUwY205cFpFRk5SQUJUZDJsNmVteGxTVzUyYjJOaGRHbHZibk5OWVhOclpXUkJUVVFBVlUxaGVETkJUVVFBVTAxaGVETkJUVVFBUmsxaGVETkJUVVFBVlUxcGJqTkJUVVFBVTAxcGJqTkJUVVFBUmsxcGJqTkJUVVFBVlUxcFpETkJUVVFBVTAxcFpETkJUVVFBUmsxcFpETkJUVVFBWjJ4ZlZtVnlkR1Y0U1VRQVoyeGZWMjl5YTBkeWIzVndTVVFBWjJ4ZlRHOWpZV3hKYm5adlkyRjBhVzl1U1VRQVoyeGZSMnh2WW1Gc1NXNTJiMk5oZEdsdmJrbEVBR2RzWDBsdWRtOWpZWFJwYjI1SlJBQm5iRjlRY21sdGFYUnBkbVZKUkFCbmJGOVRZVzF3YkdWSlJBQm5iRjlKYm5OMFlXNWpaVWxFQUhKbGMzVnNkQ0JKUkFCdFpXMXZjbmtnYzJWdFlXNTBhV056SUVsRUFIUjVjR1VnU1VRQWMyTnZjR1VnU1VRQVVrNUVYME5QVGxaZlQwUkVBRE5FQUVsdFlXZGxJQ2RFYVcwbklHMTFjM1FnWW1VZ01rUUFTVzFoWjJVeFJBQlRZVzF3YkdWa01VUUFUM0JsYmtOTVgwTUFSM0p2ZFhCT2IyNVZibWxtYjNKdFFtRnNiRzkwUm1sdVpFMVRRZ0JIY205MWNFNXZibFZ1YVdadmNtMUNZV3hzYjNSR2FXNWtURk5DQUhOU1IwSUFRVkpIUWdBbFFnQnpRa2RTUVFCT1ZrbEVTVUVBYzFKSFFrRUFKVUVBUUFCaGNtVWdlVzkxSUcxcGMzTnBibWNnSnlncEp5Qm1iM0lnZG1Gc2RXVWdZMjl1YzNSeWRXTjBiM0kvQUdGeWNtRjVJSE5wZW1VZ2FYTWdZVzRnYjNabGNuSnBaR1V0Wlhod2NtVnpjMmx2Yml3Z2QyaGxiaUJsZUhCbFkzUmxaQ0JoSUdOdmJuTjBZVzUwTFdWNGNISmxjM05wYjI0dUNsZGhjeUIwYUdVZ1UzVmljM1JwZEhWMFpVOTJaWEp5YVdSbElIUnlZVzV6Wm05eWJTQnlkVzQvQUR4aGJuaytBRHgxTXpJZ2IzWmxjbVpzYjNjK0FIUnBiblE2T21OdmJuTjBZVzUwT2pwVFkyRnNZWEk4ZEdsdWREbzZRVWx1ZEQ0QWRHbHVkRG82WTI5dWMzUmhiblE2T2xOallXeGhjangwYVc1ME9qcEJSbXh2WVhRK0FIUnBiblE2T25ObGJUbzZRblZwYkhScGJrVnVkVzFGZUhCeVpYTnphVzl1UEhScGJuUTZPbUoxYVd4MGFXNDZPbFJsZUdWc1JtOXliV0YwUGdCMGFXNTBPanB6WlcwNk9rSjFhV3gwYVc1RmJuVnRSWGh3Y21WemMybHZiangwYVc1ME9qcGlkV2xzZEdsdU9qcEJZMk5sYzNNK0FEeGxjbkp2Y2o0QVBIVnVhMjV2ZDI0Z2MyRnRjR3hsY2o0QVBIVnVhMjV2ZDI0K0FEeHBibk4wY25WamRHbHZiajRBZEdsdWREbzZZMjl1YzNSaGJuUTZPbE5qWVd4aGNqeGliMjlzUGdBOGJuVnNiRDRBZEdsdWREbzZjMlZ0T2pwQ2RXbHNkR2x1Ulc1MWJVVjRjSEpsYzNOcGIyNDhkR2x1ZERvNlluVnBiSFJwYmpvNlNXNTBaWEp3YjJ4aGRHbHZibE5oYlhCc2FXNW5QZ0IwYVc1ME9qcHpaVzA2T2tKMWFXeDBhVzVGYm5WdFJYaHdjbVZ6YzJsdmJqeDBhVzUwT2pwaWRXbHNkR2x1T2pwQ2RXbHNkR2x1Vm1Gc2RXVStBSFJwYm5RNk9uTmxiVG82UW5WcGJIUnBia1Z1ZFcxRmVIQnlaWE56YVc5dVBIUnBiblE2T21KMWFXeDBhVzQ2T2tsdWRHVnljRzlzWVhScGIyNVVlWEJsUGdBOGJtOXVaVDRBZEdsdWREbzZjMlZ0T2pwQ2RXbHNkR2x1Ulc1MWJVVjRjSEpsYzNOcGIyNDhkR2x1ZERvNlluVnBiSFJwYmpvNlFXUmtjbVZ6YzFOd1lXTmxQZ0E4YVc1MllXeHBaRDRBUGo0QWRHbHVkRG82WTI5dWMzUmhiblE2T2xOallXeGhjangwYVc1ME9qcG1NVFkrQUhScGJuUTZPbU52Ym5OMFlXNTBPanBUWTJGc1lYSThkR2x1ZERvNmRUTXlQZ0IwYVc1ME9qcGpiMjV6ZEdGdWREbzZVMk5oYkdGeVBIUnBiblE2T21rek1qNEFkR2x1ZERvNlkyOXVjM1JoYm5RNk9sTmpZV3hoY2p4MGFXNTBPanBtTXpJK0FDMCtBRzl3WlhKaGRHOXlQUUErUFFCdmNHVnlZWFJ2Y2owOUFEdzlBQ0U5QUhSbGVIUjFjbVZmWTNWaVpWOWhjbkpoZVR3QWRHVjRkSFZ5WlY4eVpGOWhjbkpoZVR3QWRHVjRkSFZ5WlY5emRHOXlZV2RsWHpKa1gyRnljbUY1UEFCaWFYUmpZWE4wUEFCZlgyRjBiMjFwWTE5amIyMXdZWEpsWDJWNFkyaGhibWRsWDNKbGMzVnNkRHdBY0hSeVBBQnlaV1k4QUhSbGVIUjFjbVZmWTNWaVpUd0FkR1Y0ZEhWeVpWOHpaRHdBZEdWNGRIVnlaVjl6ZEc5eVlXZGxYek5rUEFCMFpYaDBkWEpsWHpKa1BBQjBaWGgwZFhKbFgzTjBiM0poWjJWZk1tUThBSFJsZUhSMWNtVmZiWFZzZEdsellXMXdiR1ZrWHpKa1BBQjBaWGgwZFhKbFh6RmtQQUIwWlhoMGRYSmxYM04wYjNKaFoyVmZNV1E4QUdGMGIyMXBZendBUER3QWJXRjBOSGcwUEFCdFlYUXplRFE4QUcxaGRESjRORHdBZG1Wak5Ed0FiV0YwTkhnelBBQnRZWFF6ZURNOEFHMWhkREo0TXp3QWRtVmpNendBY0dGamEyVmtWbVZqTXp3QWJXRjBOSGd5UEFCdFlYUXplREk4QUcxaGRESjRNandBZG1Wak1qd0FJR2x1SUdaMWJtTjBhVzl1SUR3QVNXNTBaWEptWVdObElIWmhjbWxoWW14bElHbGtJRHdBSnlCcFpDQThBQ0JKWkNBOEFDQnZaaUJ6ZEhKMVkzUWdTVVFnUEFBcUx5QjlPd0JpY21WaGF6c0FZMjl1ZEdsdWRXVTdBR1JwYzJOaGNtUTdBRTl3Vkhsd1pVbHVkQ0JvWVhNZ2FXNTJZV3hwWkNCemFXZHVaV1J1WlhOek9nQWdkMkZ6SUhCeVpYWnBiM1Z6YkhrZ1pHVmpiR0Z5WldRZ2FHVnlaVG9BSnlCcGN5QmtaV05zWVhKbFpDQm9aWEpsT2dCc2FXNWxPZ0JoWW1Oa1pXWm5hR2xxYTJ4dGJtOXdjWEp6ZEhWMmQzaDVla0ZDUTBSRlJrZElTVXBMVEUxT1QxQlJVbE5VVlZaWFdGbGFYekF4TWpNME5UWTNPRGtBVlc1d1lXTnJWVzV2Y20wMGVEZ0FVR0ZqYTFWdWIzSnROSGc0QUZWdWNHRmphMU51YjNKdE5IZzRBRkJoWTJ0VGJtOXliVFI0T0FCMU9BQlRkRzl5WVdkbFVIVnphRU52Ym5OMFlXNTBPQUJWYm05eWJVbHVkRGdBVTI1dmNtMUpiblE0QUZWdWMybG5ibVZrU1c1ME9BQlRhV2R1WldSSmJuUTRBR2s0QUZKbk9BQlNaMkpoT0FCU09BQkRMbFZVUmkwNEFGVnVjR0ZqYTFWdWIzSnRNbmd4TmdCUVlXTnJWVzV2Y20weWVERTJBRlZ1Y0dGamExTnViM0p0TW5neE5nQlFZV05yVTI1dmNtMHllREUyQUZWdWNHRmphMGhoYkdZeWVERTJBRkJoWTJ0SVlXeG1Nbmd4TmdCMU1UWUFVM1J2Y21GblpVbHVjSFYwVDNWMGNIVjBNVFlBVUhKcGIzSWdkRzhnVTFCSlVpMVdJREV1TkN3Z2MzQmxZMmxoYkdsNllYUnBiMjRnWTI5dWMzUmhiblFnYjNCbGNtRjBhVzl1SUZWRGIyNTJaWEowSUhKbGNYVnBjbVZ6SUV0bGNtNWxiQ0JqWVhCaFltbHNhWFI1SUc5eUlHVjRkR1Z1YzJsdmJpQlRVRlpmUVUxRVgyZHdkVjl6YUdGa1pYSmZhVzUwTVRZQVUzUnZjbUZuWlZCMWMyaERiMjV6ZEdGdWRERTJBRlZ1YjNKdFNXNTBNVFlBVTI1dmNtMUpiblF4TmdCVmJuTnBaMjVsWkVsdWRERTJBRk5wWjI1bFpFbHVkREUyQUVac2IyRjBNVFlBVm1WamRHOXlNVFlBVTNSdmNtRm5aVlZ1YVdadmNtMHhOZ0JUZEc5eVlXZGxWVzVwWm05eWJVSjFabVpsY2tKc2IyTnJNVFlBYVRFMkFGSm5NVFlBWW1ZeE5nQmZYMlp5Wlhod1gzSmxjM1ZzZEY5bU1UWUFYMTl0YjJSbVgzSmxjM1ZzZEY5bU1UWUFYMTltY21WNGNGOXlaWE4xYkhSZmRtVmpORjltTVRZQVgxOXRiMlJtWDNKbGMzVnNkRjkyWldNMFgyWXhOZ0JmWDJaeVpYaHdYM0psYzNWc2RGOTJaV016WDJZeE5nQmZYMjF2WkdaZmNtVnpkV3gwWDNabFl6TmZaakUyQUY5ZlpuSmxlSEJmY21WemRXeDBYM1psWXpKZlpqRTJBRjlmYlc5a1psOXlaWE4xYkhSZmRtVmpNbDltTVRZQVVtZGlZVEUyQUZJeE5nQnhkV0Z1ZEdsNlpWUnZSakUyQUZGMVlXNTBhWHBsVkc5R01UWUFkR2x1ZERvNmRIbHdaVG82UmpFMkFGTlFTVkl0VmlBeExqWUFWVzV2Y20xVGFHOXlkRFUyTlFCVmJtOXliVk5vYjNKME5UVTFBRk5RU1ZJdFZpQXhMalVBYVc1emRDMCtkMjl5WkhNb0tTNXphWHBsS0NrZ1BUMGdOUUJ0WVhRMGVEUUFiV0YwTTNnMEFHMWhkREo0TkFCMlpXTTBBSFUyTkFCVFVGWmZSVmhVWDNOb1lXUmxjbDlwYldGblpWOXBiblEyTkFCQmMweHBkR1Z5WVd4VmFXNTBOalFBUjJWMFEyOXVjM1JoYm5SV1lXeFZhVzUwTmpRQVEyOXVjM1JoYm5STWFYUmxjbUZzUVhOSmJuUTJOQUJHYkc5aGREWTBBRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2pZMEFGQm9lWE5wWTJGc05qUUFhVFkwQUdWNGNHVmpkR1ZrSUdKcGRDQjNhV1IwYUNCdlppQlNaWE4xYkhRZ1ZIbHdaU0JqYjIxd2IyNWxiblJ6SUhSdklHSmxJREUyTENBek1pQnZjaUEyTkFCM2FXUjBhQ0E4UFNBMk5BQlZibTl5YlVsdWRESTBBSFZmYlhWc01qUUFjMTl0ZFd3eU5BQjFYMjFoWkRJMEFITmZiV0ZrTWpRQVUxQkpVaTFXSURFdU5BQnBiblJsWjJWeUlHeGxjM01nZEdoaGJpQnZjaUJsY1hWaGJDQjBieUEwQUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElHMWhkSEpwZUNCMGJ5Qm9ZWFpsSUdFZ1EyOXNkVzF1SUVOdmRXNTBJRzltSURRQVJYaHdaV04wWldRZ1NXMWhaMlVnVDNCbGNtRnVaQ0JEYjI1emRFOW1abk5sZEhNZ2RHOGdZbVVnWVc0Z1lYSnlZWGtnYjJZZ2MybDZaU0EwQUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdFZ016SXRZbWwwSUdac2IyRjBJSFpsWTNSdmNpQnZaaUJ6YVhwbElEUUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQldJSFJ2SUdKbElHRWdNekl0WW1sMElHWnNiMkYwSUhabFkzUnZjaUJ2WmlCemFYcGxJRFFBWTI5dWMzUmZkMjl5WkhNdWMybDZaU2dwSUQ0Z05BQnBibk4wTFQ1M2IzSmtjeWdwTG5OcGVtVW9LU0E5UFNBMEFHMWhkRFI0TXdCdFlYUXplRE1BYldGME1uZ3pBRjlmY0dGamEyVmtYM1psWXpNQWNHRmphMlZrVm1Wak13QlRVRWxTTFZZZ01TNHpBRU52YlhCdmJtVnVkQ0JrWldOdmNtRjBhVzl1SUhaaGJIVmxJRzExYzNRZ2JtOTBJR0psSUdkeVpXRjBaWElnZEdoaGJpQXpBQ0JuWlhSeklHeGhjbWRsY2lCMGFHRnVJRE1BYVc1emRDNXVkVzFmZDI5eVpITWdQaUF6QUZOUVZsOU9WbDkyYVdWM2NHOXlkRjloY25KaGVUSUFiV0YwTkhneUFHMWhkRE40TWdCdFlYUXllRElBVTFCV1gwbE9WRVZNWDNOb1lXUmxjbDlwYm5SbFoyVnlYMloxYm1OMGFXOXVjeklBVTFCV1gwbE9WRVZNWDJac2IyRjBYMk52Ym5SeWIyeHpNZ0JvWVd4bVgyVjRjRElBYm1GMGFYWmxYMlY0Y0RJQVJYaHdNZ0JoZEdGdU1nQkJkR0Z1TWdCb1lXeG1YMnh2WnpJQWJtRjBhWFpsWDJ4dlp6SUFURzluTWdCemFIVm1abXhsTWdCMlpXTXlBRlZ1YjNKdFNXNTBNVEF4TURFd1h6SUFVbWRpTVRCQk1nQkpiV0ZuWlNCdGRYTjBJR2hoZG1VZ1pXbDBhR1Z5SUNkTlV5YzlNU0J2Y2lBblUyRnRjR3hsWkNjOU1DQnZjaUFuVTJGdGNHeGxaQ2M5TWdCVmJuQmhZMnRFYjNWaWJHVXllRE15QUZCaFkydEViM1ZpYkdVeWVETXlBRjlmWVhSdmJXbGpYMk52YlhCaGNtVmZaWGhqYUdGdVoyVmZjbVZ6ZFd4MFgzVXpNZ0IzYjNKclozSnZkWEJmYzJsNlpTQmhjbWQxYldWdWRITWdiWFZ6ZENCaVpTQnZaaUIwYUdVZ2MyRnRaU0IwZVhCbExDQmxhWFJvWlhJZ2FUTXlJRzl5SUhVek1nQjNiM0pyWjNKdmRYQmZjMmw2WlNCaGNtZDFiV1Z1ZENCdGRYTjBJR0psSUdFZ1kyOXVjM1JoYm5RZ2IzSWdiM1psY25KcFpHVXRaWGh3Y21WemMybHZiaUJ2WmlCMGVYQmxJR0ZpYzNSeVlXTjBMV2x1ZEdWblpYSXNJR2t6TWlCdmNpQjFNeklBZEdWNGRIVnlaVjh5WkR4MGVYQmxQam9nZEhsd1pTQnRkWE4wSUdKbElHWXpNaXdnYVRNeUlHOXlJSFV6TWdCMFpYaDBkWEpsWDIxMWJIUnBjMkZ0Y0d4bFpGOHlaRHgwZVhCbFBqb2dkSGx3WlNCdGRYTjBJR0psSUdZek1pd2dhVE15SUc5eUlIVXpNZ0JGYkdWdFpXNTBJSFI1Y0dVZ2IyWWdjbWh6SUc5bUlGTm9hV1owVEdWbWRDQnRkWE4wSUdKbElHRWdkVE15QUZWdWMybG5ibVZrU1c1ME16SUFVMmxuYm1Wa1NXNTBNeklBVUdoNWMybGpZV3d6TWdCZlgyRjBiMjFwWTE5amIyMXdZWEpsWDJWNFkyaGhibWRsWDNKbGMzVnNkRjlwTXpJQVgxOW1jbVY0Y0Y5eVpYTjFiSFJmWmpNeUFGOWZiVzlrWmw5eVpYTjFiSFJmWmpNeUFGOWZabkpsZUhCZmNtVnpkV3gwWDNabFl6UmZaak15QUY5ZmJXOWtabDl5WlhOMWJIUmZkbVZqTkY5bU16SUFYMTltY21WNGNGOXlaWE4xYkhSZmRtVmpNMTltTXpJQVgxOXRiMlJtWDNKbGMzVnNkRjkyWldNelgyWXpNZ0JmWDJaeVpYaHdYM0psYzNWc2RGOTJaV015WDJZek1nQmZYMjF2WkdaZmNtVnpkV3gwWDNabFl6SmZaak15QUVkbGRGVXpNZ0IwYVc1ME9qcHlaV0ZrWlhJNk9uTndhWEoyT2pwVk16SUFkR2x1ZERvNmRIbHdaVG82VlRNeUFFZGxkRk16TWdCMGFXNTBPanB5WldGa1pYSTZPbk53YVhKMk9qcEpNeklBZEdsdWREbzZkSGx3WlRvNlNUTXlBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2tZek1nQjBhVzUwT2pwMGVYQmxPanBHTXpJQVQzQlRZVzF3YkdWeVNXMWhaMlZCWkdSeVpYTnphVzVuVFc5a1pVNVdJR0pwZEhkcFpIUm9JSE5vYjNWc1pDQmlaU0EyTkNCdmNpQXpNZ0IwZVhCbEtDa3RQa0Z6Um14dllYUW9LU0FoUFNCdWRXeHNjSFJ5SUNZbUlIUjVjR1VvS1MwK1FYTkdiRzloZENncExUNTNhV1IwYUNncElEMDlJRE15QUhSNWNHVW9LUzArUVhOSmJuUmxaMlZ5S0NrdFBuZHBaSFJvS0NrZ1BUMGdNeklBVTFCSlVpMVdJREV1TWdCRmVIQmxZM1JsWkNCdWRXMWlaWElnYjJZZ1kyOXVjM1JwZEhWbGJuUnpJSFJ2SUdKbElHRjBJR3hsWVhOMElESUFSWGh3WldOMFpXUWdTVzFoWjJVZ0oxTmhiWEJzWldRbklIQmhjbUZ0WlhSbGNpQjBieUJpWlNBd0lHOXlJRElBUlhod1pXTjBaV1FnU1cxaFoyVWdUM0JsY21GdVpDQkRiMjV6ZEU5bVpuTmxkSE1nWVhKeVlYa2dZMjl0Y0c5dVpXNTBjeUIwYnlCaVpTQnBiblFnZG1WamRHOXljeUJ2WmlCemFYcGxJRElBWlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnWVNBek1pMWlhWFFnYVc1MElIWmxZM1J2Y2lCdlppQnphWHBsSURJQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCV0lIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQjJaV04wYjNJZ2IyWWdjMmw2WlNBeUFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdNekl0WW1sMElHWnNiMkYwSUhabFkzUnZjaUJ2WmlCemFYcGxJRElBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JXSUhSdklHSmxJR0VnTXpJdFltbDBJR1pzYjJGMElIWmxZM1J2Y2lCdlppQnphWHBsSURJQVJHbHRJRk4xWW5CaGMzTkVZWFJoSUhKbGNYVnBjbVZ6SUZOaGJYQnNaV1FnZEc4Z1ltVWdNZ0J2Y0dOdlpHVmZaVzUwY25rdFBtNTFiVlI1Y0dWeklENDlJRElBWlhoMGNtRmZkMjl5WkhNdWMybDZaU2dwSUQ0OUlESUFiR1Z1WjNSb1gybHVabTlmWVhKbkxuZHZjbVJ6TG5OcGVtVW9LU0ErUFNBeUFIZHZjbVJ6S0NrdWMybDZaU2dwSUQwOUlESUFkMjl5WkhNdWMybDZaU2dwSUR3OUlESUFVMUJXWDBkUFQwZE1SVjlvYkhOc1gyWjFibU4wYVc5dVlXeHBkSGt4QUdWNGNHMHhBRk5RU1ZJdFZpQXhMakVBZDI5eWEyZHliM1Z3WDNOcGVtVWdZWEpuZFcxbGJuUWdiWFZ6ZENCaVpTQmhkQ0JzWldGemRDQXhBRzl5SUhOcFoyNGdaWGgwWlc1a1pXUWdkMmhsYmlCVGFXZHVaV1J1WlhOeklHbHpJREVBUlhod1pXTjBaV1FnU1cxaFoyVWdKMFJwYlNjZ2JYVnpkQ0JpWlNCdmJtVWdiMllnTVVRc0lESkVMQ0J2Y2lCRGRXSmxJSGRvWlc0Z1FYSnlZWGxsWkNCcGN5QXhBRk5oYlhCc1pXUWdhVzFoWjJVZ2RIbHdaU0J5WlhGMWFYSmxjeUJoYmlCcGJXRm5aU0IwZVhCbElIZHBkR2dnSWxOaGJYQnNaV1FpSUc5d1pYSmhibVFnYzJWMElIUnZJREFnYjNJZ01RQkZlSEJsWTNSbFpDQkpiV0ZuWlNBblUyRnRjR3hsWkNjZ2NHRnlZVzFsZEdWeUlIUnZJR0psSURBZ2IzSWdNUUJQY0VsdFlXZGxVWFZsY25sTVpYWmxiSE1nYlhWemRDQnZibXg1SUdOdmJuTjFiV1VnWVc0Z0lrbHRZV2RsSWlCdmNHVnlZVzVrSUhkb2IzTmxJSFI1Y0dVZ2FHRnpJR2wwY3lBaVUyRnRjR3hsWkNJZ2IzQmxjbUZ1WkNCelpYUWdkRzhnTVFCUGNFbHRZV2RsVVhWbGNubFRhWHBsVEc5a0lHMTFjM1FnYjI1c2VTQmpiMjV6ZFcxbElHRnVJQ0pKYldGblpTSWdiM0JsY21GdVpDQjNhRzl6WlNCMGVYQmxJR2hoY3lCcGRITWdJbE5oYlhCc1pXUWlJRzl3WlhKaGJtUWdjMlYwSUhSdklERUFTVzFoWjJVZ0owMVRKeUJ0ZFhOMElHSmxJREVBUlhod1pXTjBaV1FnU1cxaFoyVWdKMU5oYlhCc1pXUW5JSEJoY21GdFpYUmxjaUIwYnlCaVpTQXhBRzl3WlhKaGJtUXViblZ0WDNkdmNtUnpJRDA5SURFQWFXNXpkQzArYm5WdFgyOXdaWEpoYm1SeklEMDlJREVBZDI5eVpITW9LUzV6YVhwbEtDa2dQVDBnTVFCcGJuTjBMVDV2Y0dWeVlXNWtjeWdwTG5OcGVtVW9LU0E5UFNBeEFHVnVkaUFoUFNCVFVGWmZSVTVXWDFkRlFrZFFWVjh3QUVkTVUwdzBOVEFBUjB4VFRDNXpkR1F1TkRVd0FHaGhiR1pmWlhod01UQUFibUYwYVhabFgyVjRjREV3QUdoaGJHWmZiRzluTVRBQWJtRjBhWFpsWDJ4dlp6RXdBRlZ1YjNKdFNXNTBNVEF4TURFd0FFNXZibE5sYldGdWRHbGpMbE5vWVdSbGNpNUVaV0oxWjBsdVptOHVNVEF3QUU5d1pXNURUQzVFWldKMVowbHVabTh1TVRBd0FGTlFTVkl0VmlBeExqQUFZV052YzJnZ2JYVnpkQ0JpWlNCallXeHNaV1FnZDJsMGFDQmhJSFpoYkhWbElENDlJREV1TUFCWFIxTk1JR052YlhCaGNtbHpiMjRnYzJGdGNHeHBibWNnZDJsMGFHOTFkQ0JrWlhKcGRtRjBhWFpsY3lCeVpYRjFhWEpsY3lCc1pYWmxiQzF2Wmkxa1pYUmhhV3dnTUM0d0FFVnljbTl5T2lCU1pYTjFiSFFnU1dRZ2FYTWdNQUJGY25KdmNqb2dWSGx3WlNCSlpDQnBjeUF3QUNrZ2JYVnpkQ0JpWlNCbmNtVmhkR1Z5SUhSb1lXNGdNQUJGZUhCbFkzUmxaQ0JUWVcxd2JHVWdabTl5SUVsdFlXZGxJSGRwZEdnZ1RWTWdNQ0IwYnlCaVpTQmhJSFpoYkdsa0lEeHBaRDRnWm05eUlIUm9aU0IyWVd4MVpTQXdBR052Ym5SaGFXNXpJR0Z1SUdGeWNtRjVJSGRwZEdnZ2MzUnlhV1JsSURBQVNXMWhaMlVnSjAxVEp5QnRkWE4wSUdKbElEQUFPaUJCY25KaGVWTjBjbWxrWlNCallXNG5kQ0JpWlNBd0FFVjRjR1ZqZEdWa0lFbHRZV2RsSUNkaGNuSmhlV1ZrSnlCd1lYSmhiV1YwWlhJZ2RHOGdZbVVnTUFCSmJXRm5aU0JQY0dWeVlXNWtJRTFwYmt4dlpDQnlaWEYxYVhKbGN5QW5UVk1uSUhCaGNtRnRaWFJsY2lCMGJ5QmlaU0F3QUVWNGNHVmpkR1ZrSUVsdFlXZGxJQ2ROVXljZ2NHRnlZVzFsZEdWeUlIUnZJR0psSURBQVJHbHRJRk4xWW5CaGMzTkVZWFJoSUhKbGNYVnBjbVZ6SUVGeWNtRjVaV1FnZEc4Z1ltVWdNQUJwYm5abGNuTmxVM0Z5ZENCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYVhSb0lHRWdkbUZzZFdVZ1BpQXdBR3h2WnlCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYVhSb0lHRWdkbUZzZFdVZ1BpQXdBR3h2WnpJZ2JYVnpkQ0JpWlNCallXeHNaV1FnZDJsMGFDQmhJSFpoYkhWbElENGdNQUJ6Y1hKMElHMTFjM1FnWW1VZ1kyRnNiR1ZrSUhkcGRHZ2dZU0IyWVd4MVpTQStQU0F3QUdaMWJtTjBhVzl1WDJsa1h5QTlQU0F3QUdsdWMzUXRQblI1Y0dWZmFXUW9LU0E5UFNBd0FISnZkM01nSVQwZ01BQmpiMngxYlc1eklDRTlJREFBYzJOdmNHVWdJVDBnTUFCeVpYTmZhV1FnSVQwZ01BQjBlWEJsWDJsa0lDRTlJREFBWm5WdVkzUnBiMjVmYVdSZklDRTlJREFBZFc1cGNYVmxYMmxrWHlBaFBTQXdBQ0FxTHdCVmMybHVaeUJoSURZMExXSnBkQ0JwYm5SbFoyVnlJSFI1Y0dVZ2NtVnhkV2x5WlhNZ2RHaGxJRWx1ZERZMElHTmhjR0ZpYVd4cGRIa3VBSFI1Y0dVZ2NtVnhkV2x5WlhNZ2RHaGxJRVpzYjJGME5qUWdZMkZ3WVdKcGJHbDBlUzRBUVNCR2RXNWpkR2x2YmtOaGJHd2diWFZ6ZENCb1lYQndaVzRnZDJsMGFHbHVJR0VnWm5WdVkzUnBiMjRnWW05a2VTNEFJR2x6SUc1dmRDQmhiaUJoY25KaGVTNEFJRzExYzNRZ1ltVWdZVzRnVDNCVWVYQmxVblZ1ZEdsdFpVRnljbUY1TGdCV2RXeHJZVzRnYzNCbFl5QmtiMlZ6YmlkMElHRnNiRzkzSUVKMWFXeDBTVzRnVUc5emFYUnBiMjRnZEc4Z1ltVWdkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5QnBaaUJsZUdWamRYUnBiMjRnYlc5a1pXd2dhWE1nVm1WeWRHVjRMZ0JXZFd4cllXNGdjM0JsWXlCa2IyVnpiaWQwSUdGc2JHOTNJRUoxYVd4MFNXNGdVRzlwYm5SVGFYcGxJSFJ2SUdKbElIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUVsdWNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNZ2FXWWdaWGhsWTNWMGFXOXVJRzF2WkdWc0lHbHpJRlpsY25SbGVDNEFWblZzYTJGdUlITndaV01nWkc5bGMyNG5kQ0JoYkd4dmR5QkNkV2xzZEVsdUlFTnNhWEJFYVhOMFlXNWpaUzlEZFd4c1JHbHpkR0Z1WTJVZ2RHOGdZbVVnZFhObFpDQm1iM0lnZG1GeWFXRmliR1Z6SUhkcGRHZ2dTVzV3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwWmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnYVhNZ1ZtVnlkR1Y0TGdBZ1pHOWxjeUJ1YjNRZ2JXRjBZMmdnZEdobElFOXdWSGx3WlVaMWJtTjBhVzl1SUhCaGNtRnRaWFJsY2lCMGVYQmxJRzltSUhSb1pTQnpZVzFsSUdsdVpHVjRMZ0J6SUd4aGVXOTFkQzRBY3lCMlpXTjBiM0lnWTI5dGNHOXVaVzUwSUdOdmRXNTBMZ0JQY0VaMWJtTjBhVzl1UTJGc2JDQkdkVzVqZEdsdmJpQThhV1ErSjNNZ2NHRnlZVzFsZEdWeUlHTnZkVzUwSUdSdlpYTWdibTkwSUcxaGRHTm9JSFJvWlNCaGNtZDFiV1Z1ZENCamIzVnVkQzRBY3lCemRISjFZM1FnYldWdFltVnlJR052ZFc1MExnQnpJRzFsYldKbGNpQmpiM1Z1ZEM0QWN5QnRZWFJ5YVhnZ1kyOXNkVzF1SUdOdmRXNTBMZ0J6ZEdGMGFXTmhiR3g1SUhWelpXUWdjR1Z5SUhOb1lXUmxjaUJsYm5SeWVTQndiMmx1ZEM0QWRIbHdaU0J5WlhGMWFYSmxjeUIwYUdVZ1JteHZZWFF4TmlCdmNpQkdiRzloZERFMlFuVm1abVZ5SUdOaGNHRmlhV3hwZEhrc0lHOXlJR0Z1SUdWNGRHVnVjMmx2YmlCMGFHRjBJR1Y0Y0d4cFkybDBiSGtnWlc1aFlteGxjeUF4TmkxaWFYUWdabXh2WVhScGJtY2djRzlwYm5RdUFDQnBjeUJ1YjNRZ2RHaGxJRVZ1ZEhKNUlGQnZhVzUwSUc5d1pYSmhibVFnYjJZZ1lXNGdUM0JGYm5SeWVWQnZhVzUwTGdBZ2JYVnpkQ0JpWlNCd2NtVnpaVzUwTGdCTWIyTmhiRk5wZW1WSlpDQnRiMlJsSUdseklHNXZkQ0JoYkd4dmQyVmtJR0o1SUhSb1pTQmpkWEp5Wlc1MElHVnVkbWx5YjI1dFpXNTBMZ0FuSUdseklHNXZkQ0IyWVd4cFpDQm1iM0lnZEdobElGWjFiR3RoYmlCbGVHVmpkWFJwYjI0Z1pXNTJhWEp2Ym0xbGJuUXVBRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2pZMElHRmtaSEpsYzNOcGJtY2diVzlrWlNCeVpYRjFhWEpsY3lCMGFHVWdhVzV3ZFhRZ2FXNTBaV2RsY2lCMGJ5Qm9ZWFpsSUdFZ05qUXRZbWwwSUhkcFpIUm9JR1p2Y2lCV2RXeHJZVzRnWlc1MmFYSnZibTFsYm5RdUFGQm9lWE5wWTJGc1UzUnZjbUZuWlVKMVptWmxjalkwSUdGa1pISmxjM05wYm1jZ2JXOWtaU0J5WlhGMWFYSmxjeUIwYUdVZ2NtVnpkV3gwSUdsdWRHVm5aWElnZEhsd1pTQjBieUJvWVhabElHRWdOalF0WW1sMElIZHBaSFJvSUdadmNpQldkV3hyWVc0Z1pXNTJhWEp2Ym0xbGJuUXVBRVY0Y0dWamRHVmtJRWx0WVdkbElDZFRZVzF3YkdWa0p5QndZWEpoYldWMFpYSWdkRzhnWW1VZ01TQm1iM0lnVm5Wc2EyRnVJR1Z1ZG1seWIyNXRaVzUwTGdCV1lYSnBZV0pzWlNCemRISjFZM1FnYldWdFltVnlJR1JsWTI5eVlYUmxaQ0IzYVhSb0lFbHVkbUZ5YVdGdWRDQnRkWE4wSUc5dWJIa2dZbVVnYVdSbGJuUnBabWxsWkNCM2FYUm9JSFJvWlNCSmJuQjFkQ0J2Y2lCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5QnBiaUJXZFd4cllXNGdaVzUyYVhKdmJtMWxiblF1QUZaaGNtbGhZbXhsSUdSbFkyOXlZWFJsWkNCM2FYUm9JRWx1ZG1GeWFXRnVkQ0J0ZFhOMElHOXViSGtnWW1VZ2FXUmxiblJwWm1sbFpDQjNhWFJvSUhSb1pTQkpibkIxZENCdmNpQlBkWFJ3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwYmlCV2RXeHJZVzRnWlc1MmFYSnZibTFsYm5RdUFGTmhiWEJzWldRZ2JYVnpkQ0JpWlNBeElHOXlJRElnYVc0Z2RHaGxJRloxYkd0aGJpQmxiblpwY205dWJXVnVkQzRBVTJGdGNHeGxaQ0JVZVhCbElHMTFjM1FnWW1VZ1QzQlVlWEJsVm05cFpDQnBiaUIwYUdVZ1QzQmxia05NSUdWdWRtbHliMjV0Wlc1MExnQTZJSE4wYjNKaFoyVWdZMnhoYzNNZ2JYVnpkQ0JpWlNCR2RXNWpkR2x2Yml3Z1YyOXlhMmR5YjNWd0xDQkRjbTl6YzFkdmNtdEhjbTkxY0NCdmNpQkhaVzVsY21saklHbHVJSFJvWlNCUGNHVnVRMHdnWlc1MmFYSnZibTFsYm5RdUFFMWxiVzl5ZVNCdGIyUmxiQ0J0ZFhOMElHSmxJRTl3Wlc1RFRDQnBiaUIwYUdVZ1QzQmxia05NSUdWdWRtbHliMjV0Wlc1MExnQlRZVzF3YkdWa0lHMTFjM1FnWW1VZ01DQnBiaUIwYUdVZ1QzQmxia05NSUdWdWRtbHliMjV0Wlc1MExnQk5VeUJ0ZFhOMElHSmxJREFnYVc0Z2RHaGxJRTl3Wlc1RFRDQmxiblpwY205dWJXVnVkQzRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJDZFdsc2RFbHVJRXhoZVdWeUlHRnVaQ0JXYVdWM2NHOXlkRWx1WkdWNElIUnZJR0psSUhWelpXUWdabTl5SUhaaGNtbGhZbXhsY3lCM2FYUm9JRTkxZEhCMWRDQnpkRzl5WVdkbElHTnNZWE56SUdsbUlHVjRaV04xZEdsdmJpQnRiMlJsYkNCcGN5QkdjbUZuYldWdWRDNEFWblZzYTJGdUlITndaV01nWkc5bGMyNG5kQ0JoYkd4dmR5QkNkV2xzZEVsdUlFTnNhWEJFYVhOMFlXNWpaUzlEZFd4c1JHbHpkR0Z1WTJVZ2RHOGdZbVVnZFhObFpDQm1iM0lnZG1GeWFXRmliR1Z6SUhkcGRHZ2dUM1YwY0hWMElITjBiM0poWjJVZ1kyeGhjM01nYVdZZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzSUdseklFWnlZV2R0Wlc1MExnQldkV3hyWVc0Z2MzQmxZeUJrYjJWemJpZDBJR0ZzYkc5M0lFSjFhV3gwU1c0Z1VISnBiV2wwYVhabFNXUWdkRzhnWW1VZ2RYTmxaQ0JtYjNJZ2RtRnlhV0ZpYkdWeklIZHBkR2dnVDNWMGNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNZ2FXWWdaWGhsWTNWMGFXOXVJRzF2WkdWc0lHbHpJRVp5WVdkdFpXNTBMZ0FnWkc5bGN5QnViM1FnYldWbGRDQjBhR2x6SUhKbGNYVnBjbVZ0Wlc1MExnQlhSMU5NSUhOMWNIQnZjblJ6SUdFZ2MyRnRjR3hsSUcxaGMyc2diMllnWVhRZ2JXOXpkQ0F6TWlCaWFYUnpMaUJUWVcxd2JHVk5ZWE5ySUcxMWMzUWdZbVVnWVc0Z1lYSnlZWGtnYjJZZ01TQmxiR1Z0Wlc1MExnQWdhWE1nYm05MElHRWdZMjl1YzNSaGJuUXVBQ0IwYnlCcGJtUmxlQ0JwYm5SdklHRWdjM1J5ZFdOMGRYSmxJRzExYzNRZ1ltVWdZVzRnVDNCRGIyNXpkR0Z1ZEM0QVUzUnZjbUZuWlVKMVptWmxjaXdnVlc1cFptOXliU3dnYjNJZ1ZXNXBabTl5YlVOdmJuTjBZVzUwTGdBcElIVnpaV1FnWm05eUlFOXdWSGx3WlVsdWRDNEFJRzExYzNRZ1ltVWdZVzRnZEdobElHeGhjM1FnYldWdFltVnlJRzltSUhSb1pTQnpkSEoxWTNRdUFDQnRkWE4wSUdKbElHRWdjRzlwYm5SbGNpQjBieUJoYmlCUGNGUjVjR1ZUZEhKMVkzUXVBRVpRVW05MWJtUnBibWROYjJSbElHUmxZMjl5WVhScGIyNGdZMkZ1SUdKbElHRndjR3hwWldRZ2IyNXNlU0IwYnlCaElIZHBaSFJvTFc5dWJIa2dZMjl1ZG1WeWMybHZiaUJwYm5OMGNuVmpkR2x2YmlCbWIzSWdabXh2WVhScGJtY3RjRzlwYm5RZ2IySnFaV04wTGdCR1VGSnZkVzVrYVc1blRXOWtaU0JrWldOdmNtRjBhVzl1SUdOaGJpQmlaU0JoY0hCc2FXVmtJRzl1YkhrZ2RHOGdkR2hsSUU5aWFtVmpkQ0J2Y0dWeVlXNWtJRzltSUdGdUlFOXdVM1J2Y21VZ2MzUnZjbWx1WnlCMGFISnZkV2RvSUdFZ2NHOXBiblJsY2lCMGJ5QmhJREUyTFdKcGRDQm1iRzloZEdsdVp5MXdiMmx1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5SUc5aWFtVmpkQzRBSUdseklHNXZkQ0JoYmlCdlltcGxZM1F1QUNrZ2RYTmxaQ0JtYjNJZ1QzQlVlWEJsUm14dllYUXVBQ0JqYjIxd2IyNWxiblJ6TGdBZ1lYSm5kVzFsYm5SekxnQWdaVzUyYVhKdmJtMWxiblJ6TGdBZ2FYTWdaR1ZqYjNKaGRHVmtJSGRwZEdnZ1FuVnBiSFJKYmk0Z1FuVnBiSFJKYmlCa1pXTnZjbUYwYVc5dUlITm9iM1ZzWkNCdmJteDVJR0psSUdGd2NHeHBaV1FnZEc4Z2MzUnlkV04wSUhSNWNHVnpMQ0IyWVhKcFlXSnNaWE1nWVc1a0lHTnZibk4wWVc1MGN5NEFWWE5wYm1jZ1lXNGdPQzFpYVhRZ2FXNTBaV2RsY2lCMGVYQmxJSEpsY1hWcGNtVnpJSFJvWlNCSmJuUTRJR05oY0dGaWFXeHBkSGtzSUc5eUlHRnVJR1Y0ZEdWdWMybHZiaUIwYUdGMElHVjRjR3hwWTJsMGJIa2daVzVoWW14bGN5QTRMV0pwZENCcGJuUmxaMlZ5Y3k0QVZYTnBibWNnWVNBeE5pMWlhWFFnYVc1MFpXZGxjaUIwZVhCbElISmxjWFZwY21WeklIUm9aU0JKYm5ReE5pQmpZWEJoWW1sc2FYUjVMQ0J2Y2lCaGJpQmxlSFJsYm5OcGIyNGdkR2hoZENCbGVIQnNhV05wZEd4NUlHVnVZV0pzWlhNZ01UWXRZbWwwSUdsdWRHVm5aWEp6TGdCR2RXNWpkR2x2YmlCa1pXTnNZWEpoZEdsdmJuTWdiWFZ6ZENCaGNIQmxZWElnWW1WbWIzSmxJR1oxYm1OMGFXOXVJR1JsWm1sdWFYUnBiMjV6TGdCR2IzSWdUM0JGZUdWamRYUnBiMjVOYjJSbFNXUWdZV3hzSUVWNGRISmhJRTl3WlhKaGJtUWdhV1J6SUcxMWMzUWdZbVVnWTI5dWMzUmhiblFnYVc1emRISjFZM1JwYjI1ekxnQWdiWFZ6ZENCaVpTQmxlSEJzYVdOcGRHeDVJR3hoYVdRZ2IzVjBJSGRwZEdnZ1QyWm1jMlYwSUdSbFkyOXlZWFJwYjI1ekxnQWdiWFZ6ZENCaVpTQmxlSEJzYVdOcGRHeDVJR3hoYVdRZ2IzVjBJSGRwZEdnZ1VtOTNUV0ZxYjNJZ2IzSWdRMjlzVFdGcWIzSWdaR1ZqYjNKaGRHbHZibk11QUNCdGRYTjBJR0psSUdWNGNHeHBZMmwwYkhrZ2JHRnBaQ0J2ZFhRZ2QybDBhQ0JCY25KaGVWTjBjbWxrWlNCa1pXTnZjbUYwYVc5dWN5NEFJRzExYzNRZ1ltVWdaWGh3YkdsamFYUnNlU0JzWVdsa0lHOTFkQ0IzYVhSb0lFMWhkSEpwZUZOMGNtbGtaU0JrWldOdmNtRjBhVzl1Y3k0QVRXRjBjbWw0SUhSNWNHVnpJR05oYmlCdmJteDVJR0psSUhCaGNtRnRaWFJsY21sNlpXUWdZWE1nYUdGMmFXNW5JRzl1YkhrZ01pd2dNeXdnYjNJZ05DQmpiMngxYlc1ekxnQlBjRkJvYVNCa2IyVnpJRzV2ZENCb1lYWmxJR0Z1SUdWeGRXRnNJRzUxYldKbGNpQnZaaUJwYm1OdmJXbHVaeUIyWVd4MVpYTWdZVzVrSUdKaGMybGpJR0pzYjJOcmN5NEFJR2x1WkdWNFpYTXVBSE4wYjNKaFoyVWdZMnhoYzNObGN5NEFSbEJTYjNWdVpHbHVaMDF2WkdVZ1pHVmpiM0poZEdsdmJpQmpZVzRnWW1VZ1lYQndiR2xsWkNCdmJteDVJSFJ2SUhSb1pTQlBZbXBsWTNRZ2IzQmxjbUZ1WkNCdlppQmhiaUJQY0ZOMGIzSmxJR2x1SUhSb1pTQlRkRzl5WVdkbFFuVm1abVZ5TENCUWFIbHphV05oYkZOMGIzSmhaMlZDZFdabVpYSXNJRlZ1YVdadmNtMHNJRkIxYzJoRGIyNXpkR0Z1ZEN3Z1NXNXdkWFFzSUc5eUlFOTFkSEIxZENCVGRHOXlZV2RsSUVOc1lYTnpaWE11QUUxaGRISnBlQ0IwZVhCbGN5QmpZVzRnYjI1c2VTQmlaU0J3WVhKaGJXVjBaWEpwZW1Wa0lIZHBkR2dnWm14dllYUnBibWN0Y0c5cGJuUWdkSGx3WlhNdUFHOXlJR0Z1SUdGeWNtRjVJRzltSUc5dVpTQnZaaUIwYUdWelpTQjBlWEJsY3k0QUlHMTFiSFJwY0d4bElIUnBiV1Z6TGdBNklITjBiM0poWjJVZ1kyeGhjM01nWm05eVltbGtaR1Z1SUdKNUlIVnVhWFpsY25OaGJDQjJZV3hwWkdGMGFXOXVJSEoxYkdWekxnQkZiblJ5ZVNCd2IybHVkSE1nYldGNUlHNXZkQ0JvWVhabElHRWdZMkZzYkNCbmNtRndhQ0IzYVhSb0lHTjVZMnhsY3k0QUp5QjFjMlZ6SUhSM2J5QmthV1ptWlhKbGJuUWdKM0IxYzJoZlkyOXVjM1JoYm5RbklIWmhjbWxoWW14bGN5NEFSMlZ2YldWMGNua2daWGhsWTNWMGFXOXVJRzF2WkdWc0lHVnVkSEo1SUhCdmFXNTBjeUJ0ZFhOMElITndaV05wWm5rZ1pYaGhZM1JzZVNCdmJtVWdiMllnU1c1d2RYUlFiMmx1ZEhNc0lFbHVjSFYwVEdsdVpYTXNJRWx1Y0hWMFRHbHVaWE5CWkdwaFkyVnVZM2tzSUZSeWFXRnVaMnhsY3lCdmNpQkpibkIxZEZSeWFXRnVaMnhsYzBGa2FtRmpaVzVqZVNCbGVHVmpkWFJwYjI0Z2JXOWtaWE11QUZSbGMzTmxiR3hoZEdsdmJpQmxlR1ZqZFhScGIyNGdiVzlrWld3Z1pXNTBjbmtnY0c5cGJuUnpJR05oYmlCemNHVmphV1o1SUdGMElHMXZjM1FnYjI1bElHOW1JRlpsY25SbGVFOXlaR1Z5UTNjZ2IzSWdWbVZ5ZEdWNFQzSmtaWEpEWTNjZ1pYaGxZM1YwYVc5dUlHMXZaR1Z6TGdCR2NtRm5iV1Z1ZENCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnWlc1MGNua2djRzlwYm5SeklHTmhiaUJ2Ym14NUlITndaV05wWm5rZ2IyNWxJRzltSUU5eWFXZHBibFZ3Y0dWeVRHVm1kQ0J2Y2lCUGNtbG5hVzVNYjNkbGNreGxablFnWlhobFkzVjBhVzl1SUcxdlpHVnpMZ0JVWlhOelpXeHNZWFJwYjI0Z1pYaGxZM1YwYVc5dUlHMXZaR1ZzSUdWdWRISjVJSEJ2YVc1MGN5QmpZVzRnYzNCbFkybG1lU0JoZENCdGIzTjBJRzl1WlNCdlppQlVjbWxoYm1kc1pYTXNJRkYxWVdSeklHOXlJRWx6YjJ4cGJtVnpJR1Y0WldOMWRHbHZiaUJ0YjJSbGN5NEFSMlZ2YldWMGNua2daWGhsWTNWMGFXOXVJRzF2WkdWc0lHVnVkSEo1SUhCdmFXNTBjeUJ0ZFhOMElITndaV05wWm5rZ1pYaGhZM1JzZVNCdmJtVWdiMllnVDNWMGNIVjBVRzlwYm5SekxDQlBkWFJ3ZFhSTWFXNWxVM1J5YVhBZ2IzSWdUM1YwY0hWMFZISnBZVzVuYkdWVGRISnBjQ0JsZUdWamRYUnBiMjRnYlc5a1pYTXVBRlJsYzNObGJHeGhkR2x2YmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnWlc1MGNua2djRzlwYm5SeklHTmhiaUJ6Y0dWamFXWjVJR0YwSUcxdmMzUWdiMjVsSUc5bUlGTndZV05wYm1kRmNYVmhiQ3dnVTNCaFkybHVaMFp5WVdOMGFXOXVZV3hQWkdRZ2IzSWdVM0JoWTJsdVowWnlZV04wYVc5dVlXeEZkbVZ1SUdWNFpXTjFkR2x2YmlCdGIyUmxjeTRBUm5KaFoyMWxiblFnWlhobFkzVjBhVzl1SUcxdlpHVnNJR1Z1ZEhKNUlIQnZhVzUwY3lCallXNGdjM0JsWTJsbWVTQmhkQ0J0YjNOMElHOXVaU0J2WmlCRVpYQjBhRWR5WldGMFpYSXNJRVJsY0hSb1RHVnpjeUJ2Y2lCRVpYQjBhRlZ1WTJoaGJtZGxaQ0JsZUdWamRYUnBiMjRnYlc5a1pYTXVBRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQmxiblJ5ZVNCd2IybHVkSE1nWTJGdUlITndaV05wWm5rZ1lYUWdiVzl6ZENCdmJtVWdiMllnVTNSbGJtTnBiRkpsWmxWdVkyaGhibWRsWkVaeWIyNTBRVTFFTENCVGRHVnVZMmxzVW1WbVRHVnpjMFp5YjI1MFFVMUVJRzl5SUZOMFpXNWphV3hTWldaSGNtVmhkR1Z5Um5KdmJuUkJUVVFnWlhobFkzVjBhVzl1SUcxdlpHVnpMZ0JHY21GbmJXVnVkQ0JsZUdWamRYUnBiMjRnYlc5a1pXd2daVzUwY25rZ2NHOXBiblJ6SUdOaGJpQnpjR1ZqYVdaNUlHRjBJRzF2YzNRZ2IyNWxJRzltSUZOMFpXNWphV3hTWldaVmJtTm9ZVzVuWldSQ1lXTnJRVTFFTENCVGRHVnVZMmxzVW1WbVRHVnpjMEpoWTJ0QlRVUWdiM0lnVTNSbGJtTnBiRkpsWmtkeVpXRjBaWEpDWVdOclFVMUVJR1Y0WldOMWRHbHZiaUJ0YjJSbGN5NEFUV1Z6YUVWWVZDQmxlR1ZqZFhScGIyNGdiVzlrWld3Z1pXNTBjbmtnY0c5cGJuUnpJRzExYzNRZ2MzQmxZMmxtZVNCaWIzUm9JRTkxZEhCMWRGQnlhVzFwZEdsMlpYTkZXRlFnWVc1a0lFOTFkSEIxZEZabGNuUnBZMlZ6SUVWNFpXTjFkR2x2YmlCTmIyUmxjeTRBVFdWemFFVllWQ0JsZUdWamRYUnBiMjRnYlc5a1pXd2daVzUwY25rZ2NHOXBiblJ6SUcxMWMzUWdjM0JsWTJsbWVTQmxlR0ZqZEd4NUlHOXVaU0J2WmlCUGRYUndkWFJRYjJsdWRITXNJRTkxZEhCMWRFeHBibVZ6UlZoVUxDQnZjaUJQZFhSd2RYUlVjbWxoYm1kc1pYTkZXRlFnUlhobFkzVjBhVzl1SUUxdlpHVnpMZ0FnZDI5eVpITXVBRTl3UlhobFkzVjBhVzl1VFc5a1pTQnBjeUJ2Ym14NUlIWmhiR2xrSUhkb1pXNGdkR2hsSUUxdlpHVWdiM0JsY21GdVpDQnBjeUJoYmlCbGVHVmpkWFJwYjI0Z2JXOWtaU0IwYUdGMElIUmhhMlZ6SUc1dklFVjRkSEpoSUU5d1pYSmhibVJ6TENCdmNpQjBZV3RsY3lCRmVIUnlZU0JQY0dWeVlXNWtjeUIwYUdGMElHRnlaU0J1YjNRZ2FXUWdiM0JsY21GdVpITXVBRTl3UlhobFkzVjBhVzl1VFc5a1pVbGtJR2x6SUc5dWJIa2dkbUZzYVdRZ2QyaGxiaUIwYUdVZ1RXOWtaU0J2Y0dWeVlXNWtJR2x6SUdGdUlHVjRaV04xZEdsdmJpQnRiMlJsSUhSb1lYUWdkR0ZyWlhNZ1JYaDBjbUVnVDNCbGNtRnVaSE1nZEdoaGRDQmhjbVVnYVdRZ2IzQmxjbUZ1WkhNdUFFbEVJRzkyWlhKbWJHOTNMaUJVY25rZ2NuVnVibWx1WnlCamIyMXdZV04wTFdsa2N5NEFJR2x6SUc1dmRDQmhiaUJwYm5RZ2RtVmpkRzl5TGdBZ2FYTWdibTkwSUdFZ1pteHZZWFFnZG1WamRHOXlMZ0JEYjJ4MWJXNXpJR2x1SUdFZ2JXRjBjbWw0SUcxMWMzUWdZbVVnYjJZZ2RIbHdaU0IyWldOMGIzSXVBRlJvWlNCMGVYQmxJRzltSUZabFkzUnZjaUF5SUcxMWMzUWdZbVVnVDNCVWVYQmxWbVZqZEc5eUxnQlVhR1VnZEhsd1pTQnZaaUJXWldOMGIzSWdNU0J0ZFhOMElHSmxJRTl3Vkhsd1pWWmxZM1J2Y2k0QUxpQlVhR2x6SUcxaGVTQmlaU0JoSUdKMVp5QnBiaUIwYUdVZ2RtRnNhV1JoZEc5eUxnQTZJR1Y0Y0dWamRHVmtJRUZzYVdGelpXUWdiM0lnVW1WemRISnBZM1FnWm05eUlGQm9lWE5wWTJGc1UzUnZjbUZuWlVKMVptWmxjaUJ3YjJsdWRHVnlMZ0E2SUdOaGJpZDBJSE53WldOcFpua2dZbTkwYUNCQmJHbGhjMlZrSUdGdVpDQlNaWE4wY21samRDQm1iM0lnVUdoNWMybGpZV3hUZEc5eVlXZGxRblZtWm1WeUlIQnZhVzUwWlhJdUFEb2daWGh3WldOMFpXUWdRV3hwWVhObFpGQnZhVzUwWlhJZ2IzSWdVbVZ6ZEhKcFkzUlFiMmx1ZEdWeUlHWnZjaUJRYUhsemFXTmhiRk4wYjNKaFoyVkNkV1ptWlhJZ2NHOXBiblJsY2k0QU9pQmpZVzRuZENCemNHVmphV1o1SUdKdmRHZ2dRV3hwWVhObFpGQnZhVzUwWlhJZ1lXNWtJRkpsYzNSeWFXTjBVRzlwYm5SbGNpQm1iM0lnVUdoNWMybGpZV3hUZEc5eVlXZGxRblZtWm1WeUlIQnZhVzUwWlhJdUFDQnBjeUJ1YjNRZ1lTQnNiMmRwWTJGc0lIQnZhVzUwWlhJdUFDQmpZVzV1YjNRZ1ltVWdZU0IyYjJsa0lIQnZhVzUwWlhJdUFDQnBjeUJ1YjNRZ1lTQndiMmx1ZEdWeUxnQWdhVzV6ZEhKMVkzUnBiMjRnYlhWemRDQmlaU0JoSUhCdmFXNTBaWEl1QUNCbGVIUmxibk5wYjI0Z2NtVnhkV2x5WlhNZ1UxQkpVaTFXSUhabGNuTnBiMjRnTVM0MElHOXlJR3hoZEdWeUxnQWdSV2wwYUdWeUlHSnZkR2dnU0dsdWRDQmhibVFnUW1sMGN5QnphRzkxYkdRZ1ltVWdjSEp2ZG1sa1pXUWdiM0lnYm1WcGRHaGxjaTRBSUcxMWMzUWdZbVVnYjJZZ2RIbHdaU0JwYm5SbFoyVnlMZ0JvWVhNZ2MzUnZjbUZuWlNCamJHRnpjeUJUZEc5eVlXZGxRblZtWm1WeUlHOXlJRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2k0QVlTQnpkRzl5WVdkbElHTnNZWE56SUc5bUlGQm9lWE5wWTJGc1UzUnZjbUZuWlVKMVptWmxjaTRBSUdseklHNXZkQ0JYYjNKclozSnZkWEFnYjNJZ1UzUnZjbUZuWlVKMVptWmxjaTRBS1NCallXNGdiMjVzZVNCaVpTQm1iM0p0WldRZ1ltVjBkMlZsYmlCaElHSnNiMk5ySUdGdVpDQmhJR3h2YjNBZ2FHVmhaR1Z5TGdCSmJuWmhiR2xrSUZOUVNWSXRWaUJvWldGa1pYSXVBRk53WldOcFlXeHBlbUYwYVc5dUlHTnZibk4wWVc1MElHMTFjM1FnWW1VZ1lXNGdhVzUwWldkbGNpQnZjaUJtYkc5aGRHbHVaeTF3YjJsdWRDQnVkVzFpWlhJdUFFbHVkbUZzYVdRZ1UxQkpVaTFXSUcxaFoybGpJRzUxYldKbGNpNEFRMjl1YzJsa1pYSWdkWE5wYm1jZ2RHaGxJRUJ6YVhwbElHRjBkSEpwWW5WMFpTQnZiaUIwYUdVZ2JHRnpkQ0J6ZEhKMVkzUWdiV1Z0WW1WeUxnQWdZMjl0Y0c5dVpXNTBjeUJoY21VZ2JtOTBJR2x1ZENCelkyRnNZWEl1QUNCcGN5QnViM1FnWVc0Z2FXNTBJSE5qWVd4aGNpNEFJR052YlhCdmJtVnVkSE1nWVhKbElHNXZkQ0JtYkc5aGRDQnpZMkZzWVhJdUFDQnBjeUJ1YjNRZ1lTQm1iRzloZENCelkyRnNZWEl1QUNCcGN5QnViM1FnWVNCaWIyOXNJSE5qWVd4aGNpNEFSWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZVzRnZFc1emFXZHVaV1FnYVc1MFpXZGxjaUIwZVhCbElITmpZV3hoY2k0QUlHbHpJRzV2ZENCaElHUmxZMjl5WVhScGIyNGdaM0p2ZFhBdUFITWdablZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlJR052ZFc1MElHbHpJRzV2ZENCNlpYSnZMZ0FnWTJGdWJtOTBJR0psSUdFZ1kyOXVjM1JoYm5RZ2VtVnlieTRBVG05dVUyVnRZVzUwYVdNZ1pYaDBaVzVrWldRZ2FXNXpkSEoxWTNScGIyNGdjMlYwY3lCallXNXViM1FnWW1VZ1pHVmpiR0Z5WldRZ2QybDBhRzkxZENCVFVGWmZTMGhTWDI1dmJsOXpaVzFoYm5ScFkxOXBibVp2TGdCd2IybHVkR1Z5SUdSbFptbHVhWFJwYjI0dUFGVnVhR0Z1Wkd4bFpDQnBibk4wSUhSNWNHVWdLRzl3WTI5a1pUb2dKV1FwSUdadmRXNWtJRzkxZEhOcFpHVWdablZ1WTNScGIyNGdaR1ZtYVc1cGRHbHZiaTRBVFdsemMybHVaeUJtZFc1amRHbHZiaUIwZVhCbElHUmxabWx1YVhScGIyNHVBRVoxYm1OMGFXOXVJSEJoY21GdFpYUmxjaUJqWVc1dWIzUWdZbVVnZEdobElHWnBjbk4wSUdsdWMzUnlkV04wYVc5dUxnQWdZbVZqWVhWelpTQnBkQ0JwY3lCMFlYSm5aWFJsWkNCaWVTQmhiaUJQY0VWdWRISjVVRzlwYm5RZ2FXNXpkSEoxWTNScGIyNHVBQ0J0ZFhOMElHSmxJR0VnWW05dmJHVmhiaUJqYjI1emRHRnVkQ0JwYm5OMGNuVmpkR2x2Ymk0QVEyeDFjM1JsY2xOcGVtVWdiWFZ6ZENCamIyMWxJR1p5YjIwZ1lTQmpiMjV6ZEdGdWRDQnBibk4wY25WamRHbHZiaTRBS1NCdFlYa2dibTkwSUdKbElIUmhjbWRsZEdWa0lHSjVJR0p2ZEdnZ1lXNGdUM0JGYm5SeWVWQnZhVzUwSUdsdWMzUnlkV04wYVc5dUlHRnVaQ0JoYmlCUGNFWjFibU4wYVc5dVEyRnNiQ0JwYm5OMGNuVmpkR2x2Ymk0QVRXbHpjMmx1WnlCeVpYRjFhWEpsWkNCUGNFMWxiVzl5ZVUxdlpHVnNJR2x1YzNSeWRXTjBhVzl1TGdCQklHSnNiMk5ySUcxMWMzUWdaVzVrSUhkcGRHZ2dZU0JpY21GdVkyZ2dhVzV6ZEhKMVkzUnBiMjR1QUUxcGMzTnBibWNnY21WeGRXbHlaV1FnVDNCVFlXMXdiR1Z5U1cxaFoyVkJaR1J5WlhOemFXNW5UVzlrWlU1V0lHbHVjM1J5ZFdOMGFXOXVMZ0JHZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElnYlhWemRDQmlaU0J3Y21WalpXUmxaQ0JpZVNCaElHWjFibU4wYVc5dUxnQWdhWE1nYm05MElHRWdablZ1WTNScGIyNHVBRTV2YmxObGJXRnVkR2xqTGtOc2MzQjJVbVZtYkdWamRHbHZiaTRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJVWlhOelRHVjJaV3hQZFhSbGNpOVVaWE56VEdWMlpXeEpibTVsY2lCMGJ5QmlaU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQlBkWFJ3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwWmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnYVhNZ1ZHVnpjMlZzYkdGMGFXOXVSWFpoYkhWaGRHbHZiaTRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJDZFdsc2RFbHVJRkJ5YVcxcGRHbDJaVWxrSUhSdklHSmxJSFZ6WldRZ1ptOXlJSFpoY21saFlteGxjeUIzYVhSb0lFOTFkSEIxZENCemRHOXlZV2RsSUdOc1lYTnpJR2xtSUdWNFpXTjFkR2x2YmlCdGIyUmxiQ0JwY3lCVVpYTnpaV3hzWVhScGIyNUZkbUZzZFdGMGFXOXVMZ0JKYm5SbGNtWmhZMlVnYzNSeWRXTjBJR2hoY3lCdWJ5QkNiRzlqYXlCa1pXTnZjbUYwYVc5dUlHSjFkQ0JvWVhNZ1FuVnBiSFJKYmlCdFpXMWlaWEp6TGlCTWIyTmhkR2x2YmlCa1pXTnZjbUYwYVc5dWN5QnRkWE4wSUdKbElIVnpaV1FnYjI0Z1pXRmphQ0J0WlcxaVpYSWdiMllnVDNCV1lYSnBZV0pzWlNCM2FYUm9JR0VnYzNSeWRXTjBkWEpsSUhSNWNHVWdkR2hoZENCcGN5QmhJR0pzYjJOcklHNXZkQ0JrWldOdmNtRjBaV1FnZDJsMGFDQk1iMk5oZEdsdmJpNEFkR2hsSUdOaGMyVWdjMlZzWldOMGIzSWdkbUZzZFdWeklHMTFjM1FnYUdGMlpTQjBhR1VnYzJGdFpTQjBlWEJsSUdGeklIUm9aU0J6Wld4bFkzUnZjaUJsZUhCeVpYTnphVzl1TGdCSmJpQldkV3hyWVc0NklGUm9aU0JQY0VkeWIzVndUbTl1Vlc1cFptOXliVUpoYkd4dmRFSnBkRU52ZFc1MElHZHliM1Z3SUc5d1pYSmhkR2x2YmlCdGRYTjBJR0psSUc5dWJIazZJRkpsWkhWalpTd2dTVzVqYkhWemFYWmxVMk5oYml3Z2IzSWdSWGhqYkhWemFYWmxVMk5oYmk0QUlHRjBJRzFwYm1sdGRXMHVBSFZ1Y21WamIyZHVhWHBsWkNCa2FXRm5ibTl6ZEdsaklISjFiR1VnSjJOb2NtOXRhWFZ0TGdCcFppQnBkQ0JvWVhNZ2MzUnZjbUZuWlNCamJHRnpjeUJWYm1sbWIzSnRMZ0JUZEc5eVlXZGxRblZtWm1WeUxDQlFhSGx6YVdOaGJGTjBiM0poWjJWQ2RXWm1aWElzSUc5eUlGVnVhV1p2Y20wdUFGWjFiR3RoYmlCemNHVmpJR1J2WlhOdUozUWdZV3hzYjNjZ1FuVnBiSFJKYmlCUWNtbHRhWFJwZG1WSlpDQjBieUJpWlNCMWMyVmtJR1p2Y2lCMllYSnBZV0pzWlhNZ2QybDBhQ0JQZFhSd2RYUWdjM1J2Y21GblpTQmpiR0Z6Y3lCcFppQmxlR1ZqZFhScGIyNGdiVzlrWld3Z2FYTWdWR1Z6YzJWc2JHRjBhVzl1UTI5dWRISnZiQzRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJVWlhOelRHVjJaV3hQZFhSbGNpOVVaWE56VEdWMlpXeEpibTVsY2lCMGJ5QmlaU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQkpibkIxZENCemRHOXlZV2RsSUdOc1lYTnpJR2xtSUdWNFpXTjFkR2x2YmlCdGIyUmxiQ0JwY3lCVVpYTnpaV3hzWVhScGIyNURiMjUwY205c0xnQWdhWE1nWW1GdWJtVmtJSGRvWlc0Z2RYTnBibWNnZEdobElGWjFiR3RoYmlCdFpXMXZjbmtnYlc5a1pXd3VBRk5sY1hWbGJuUnBZV3hzZVVOdmJuTnBjM1JsYm5RZ2JXVnRiM0o1SUhObGJXRnVkR2xqY3lCallXNXViM1FnWW1VZ2RYTmxaQ0IzYVhSb0lIUm9aU0JXZFd4cllXNUxTRklnYldWdGIzSjVJRzF2WkdWc0xnQkZlR1ZqZFhScGIyNGdiVzlrWlNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dkR2hsSUVkbGIyMWxkSEo1SUdWNFpXTjFkR2x2YmlCdGIyUmxiQzRBUlhobFkzVjBhVzl1SUcxdlpHVWdZMkZ1SUc5dWJIa2dZbVVnZFhObFpDQjNhWFJvSUhSb1pTQkdjbUZuYldWdWRDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUFFVjRaV04xZEdsdmJpQnRiMlJsSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQmhJRWRsYjIxbGRISjVJRzl5SUhSbGMzTmxiR3hoZEdsdmJpQmxlR1ZqZFhScGIyNGdiVzlrWld3dUFFVjRaV04xZEdsdmJpQnRiMlJsSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQmhJSFJsYzNObGJHeGhkR2x2YmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3d1QUVWNFpXTjFkR2x2YmlCdGIyUmxJR05oYmlCdmJteDVJR0psSUhWelpXUWdkMmwwYUNCMGFHVWdTMlZ5Ym1Wc0lHVjRaV04xZEdsdmJpQnRiMlJsYkM0QVJYaGxZM1YwYVc5dUlHMXZaR1VnWTJGdUlHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lHRWdTMlZ5Ym1Wc0lHOXlJRWRNUTI5dGNIVjBaU0JsZUdWamRYUnBiMjRnYlc5a1pXd3VBRVY0WldOMWRHbHZiaUJ0YjJSbElHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2QybDBhQ0IwYUdVZ1RXVnphRVZZVkNCdmNpQk5aWE5vVGxZZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzTGdCRmVHVmpkWFJwYjI0Z2JXOWtaU0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJSGRwZEdnZ1lTQkxaWEp1Wld3c0lFZE1RMjl0Y0hWMFpTd2dUV1Z6YUU1V0xDQk5aWE5vUlZoVUxDQlVZWE5yVGxZZ2IzSWdWR0Z6YTBWWVZDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUFFVjRaV04xZEdsdmJpQnRiMlJsSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQjBhR1VnUjJWdmJXVjBjbmtnVFdWemFFNVdJRzl5SUUxbGMyaEZXRlFnWlhobFkzVjBhVzl1SUcxdlpHVnNMZ0JGZUdWamRYUnBiMjRnYlc5a1pTQmpZVzRnYjI1c2VTQmlaU0IxYzJWa0lIZHBkR2dnWVNCSFpXOXRaWFJ5ZVN3Z2RHVnpjMlZzYkdGMGFXOXVMQ0JOWlhOb1RsWWdiM0lnVFdWemFFVllWQ0JsZUdWamRYUnBiMjRnYlc5a1pXd3VBQ0JwY3lCaElIQnZhVzUwWlhJc0lIZG9hV05vSUdseklHbHVkbUZzYVdRZ2FXNGdkR2hsSUV4dloybGpZV3dnWVdSa2NtVnpjMmx1WnlCdGIyUmxiQzRBVFc5a2RXeGxJR05oYmlkMElHMXBlQ0JOWlhOb1JWaFVMMVJoYzJ0RldGUWdkMmwwYUNCTlpYTm9UbFl2VkdGemEwNVdJRVY0WldOMWRHbHZiaUJOYjJSbGJDNEFJR2x6SUc1dmRDQmhiaUJQY0V4aFltVnNMZ0JCYkd3Z1QzQldZWEpwWVdKc1pTQnBibk4wY25WamRHbHZibk1nYVc0Z1lTQm1kVzVqZEdsdmJpQnRkWE4wSUdKbElIUm9aU0JtYVhKemRDQnBibk4wY25WamRHbHZibk1nYVc0Z2RHaGxJR1pwY25OMElHSnNiMk5yTGdCcGJuTjBjblZqZEdsdmJpQnBiaUJwZEhNZ1lteHZZMnN1QUcxMWMzUWdZbVVnWkdWamIzSmhkR1ZrSUhkcGRHZ2dRbXh2WTJzZ2IzSWdRblZtWm1WeVFteHZZMnN1QUVKdmRHZ2dZbkpoYm1Ob1pYTWdiMllnYVdZZ2FXNXphV1JsSUdOdmJuUnBiblZwYm1jZ1luSmxZV3N1QUhNZ1lYSnlZWGtnYkdWdVozUm9MZ0FnWkc4Z2JtOTBJRzFoZEdOb0xnQWdhWE1nYm05MElHRnVJRTl3VTNSeWFXNW5MZ0JUZEc5d2NHbHVaeTRBSUdseklHNXZkQ0JoSUdOdmJuTjBZVzUwSUc5eUlIVnVaR1ZtTGdBZ1kyRnVibTkwSUdoaGRtVWdZU0J1ZFd4c0lIWmhiSFZsTGdBZ1pHOWxjeUJ1YjNRZ2NtVndjbVZ6Wlc1MElHRWdkbUZzZFdVdUFGSmxjM1ZzZENCVWVYQmxJRzExYzNRZ1ltVWdkR2hsSUhOaGJXVWdZWE1nZEdobElIUjVjR1VnYjJZZ1ZtRnNkV1V1QUVOdmJuTnBaR1Z5SUhkeVlYQndhVzVuSUhSb1pTQmxiR1Z0Wlc1MElIUjVjR1VnYVc0Z1lTQnpkSEoxWTNRZ1lXNWtJSFZ6YVc1bklIUm9aU0JBYzJsNlpTQmhkSFJ5YVdKMWRHVXVBQ0JwY3lCeVpYTmxjblpsWkNCbWIzSWdablYwZFhKbElIVnpaUzRBUmxCU2IzVnVaR2x1WjAxdlpHVWdaR1ZqYjNKaGRHbHZiaUJqWVc0Z1ltVWdZWEJ3YkdsbFpDQnZibXg1SUhSdklIUm9aU0JQWW1wbFkzUWdiM0JsY21GdVpDQnZaaUJoYmlCUGNGTjBiM0psTGdCTllXdGxVRzlwYm5SbGNsWnBjMmxpYkdWTFNGSWdZMkZ1Ym05MElHSmxJSFZ6WldRZ2QybDBhQ0JQY0ZOMGIzSmxMZ0FnYVhNZ2JtOTBJR0VnWTI5dmNHVnlZWFJwZG1VZ2JXRjBjbWw0SUhSNWNHVXVBSE1nWTI5dGNHOXVaVzUwSUhSNWNHVXVBSE1nYldGMGNtbDRJR052YkhWdGJpQmpiMjF3YjI1bGJuUWdkSGx3WlM0QWN5QmhjbkpoZVNCbGJHVnRaVzUwSUhSNWNHVXVBSE1nZG1WamRHOXlJR1ZzWlcxbGJuUWdkSGx3WlM0QUlHbHpJRzV2ZENCaElITmpZV3hoY2lCamIyNXpkR0Z1ZENCMGVYQmxMZ0J2Y0dWeVlXNWtJRzltSUhSb1pTQnlaWE4xYkhRZ2RIbHdaUzRBUVhSMFpXMXdkR1ZrSUhSdklHZGxkQ0IxYm1SbGNteDVhVzVuSUdSaGRHRWdkSGx3WlNCMmFXRWdiV1Z0WW1WeUlHbHVaR1Y0SUdadmNpQnViMjR0YzNSeWRXTjBJSFI1Y0dVdUFDQmtaV052Y21GMGFXOXVJRzl1SUdFZ2JtOXVMWE4wY25WamRDQjBlWEJsTGdBZ1pHbGtJRzV2ZENCbWFXNWtJR0Z1SUcxbGJXSmxjaUJwYm1SbGVDQjBieUJuWlhRZ2RXNWtaWEpzZVdsdVp5QmtZWFJoSUhSNWNHVWdabTl5SUhOMGNuVmpkQ0IwZVhCbExnQWdhWE1nYm05MElHRWdjM1J5ZFdOMElIUjVjR1V1QUhNZ2RIbHdaUzRBY3lCVWVYQmxJRzExYzNRZ1ltVWdZU0J6WTJGc1lYSWdiM0lnZG1WamRHOXlJSFI1Y0dVdUFGQnZhVzUwWlhJZ2RIbHdaU0JwYmlCUGNGUjVjR1ZHYjNKM1lYSmtVRzlwYm5SbGNpQnBjeUJ1YjNRZ1lTQndiMmx1ZEdWeUlIUjVjR1V1QUhNZ2NHRnlZVzFsZEdWeUlIUjVjR1V1QUNCcGN5QnViM1FnWVNCellXMXdiR1Z5SUhSNWNHVXVBQ0JwY3lCdWIzUWdZU0JqYjI1emRHRnVkQ0JwYm5SbFoyVnlJSFI1Y0dVdUFDQnBjeUJ1YjNRZ1lTQmpiMjV6ZEdGdWRDQnBibk4wY25WamRHbHZiaUIzYVhSb0lITmpZV3hoY2lCcGJuUmxaMlZ5SUhSNWNHVXVBQ0J0ZFhOMElHSmxJR0VnYzJOaGJHRnlJR2x1ZEdWblpYSWdkSGx3WlM0QWN5QnRaVzFpWlhJZ2RIbHdaUzRBSUdseklHNXZkQ0JoSUhOallXeGhjaUIwZVhCbExnQnpJSFI1Y0dVZ1pHOWxjeUJ1YjNRZ2JXRjBZMmdnVDNCR2RXNWpkR2x2YmlkeklISmxkSFZ5YmlCMGVYQmxMZ0FnYVhNZ2JtOTBJR0VnWm5WdVkzUnBiMjRnZEhsd1pTNEFjeUJ0WVhSeWFYZ2dZMjlzZFcxdUlIUjVjR1V1QUVWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdFZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCdlppQm1iRzloZEdsdVp5MXdiMmx1ZEN3Z2FXNTBaV2RsY2lCdmNpQmliMjlzWldGdUlIUjVjR1V1QUNCcGN5QnViM1FnWVNCaWIyOXNaV0Z1SUhSNWNHVXVBQ0JwY3lCdWIzUWdZU0J6WTJGc1lYSWdiblZ0WlhKcFkyRnNJSFI1Y0dVdUFDd2dUM0JVZVhCbFUzUnlkV04wSUcxMWMzUWdibTkwSUdOdmJuUmhhVzRnWVc0Z2IzQmhjWFZsSUhSNWNHVXVBQ0JwY3lCdWIzUWdZU0JqYjIxd2IzTnBkR1VnZEhsd1pTNEFLU0J0WVhrZ2JtOTBJR0psSUdSbFkyOXlZWFJsWkNCM2FYUm9JRWx0Y0c5eWRDQk1hVzVyWVdkbElIUjVjR1V1QUNrZ2JYVnpkQ0JvWVhabElHRWdUR2x1YTJGblpVRjBkSEpwWW5WMFpYTWdaR1ZqYjNKaGRHbHZiaUIzYVhSb0lIUm9aU0JKYlhCdmNuUWdUR2x1YTJGblpTQjBlWEJsTGdBZ2FYTWdZU0IyYjJsa0lIUjVjR1V1QUZOMGNuVmpkSFZ5WlhNZ1kyRnVibTkwSUdOdmJuUmhhVzRnWVNCMmIybGtJSFI1Y0dVdUFDQnBjeUJ1YjNRZ1lTQjBlWEJsTGdCVWFHVWdRMjl0Y0c5dVpXNTBJRlI1Y0dVZ2IyWWdWbVZqZEc5eUlESWdiWFZ6ZENCaVpTQjBhR1VnYzJGdFpTQmhjeUJTWlhOMWJIUlVlWEJsTGdCVWFHVWdRMjl0Y0c5dVpXNTBJRlI1Y0dVZ2IyWWdWbVZqZEc5eUlERWdiWFZ6ZENCaVpTQjBhR1VnYzJGdFpTQmhjeUJTWlhOMWJIUlVlWEJsTGdCQklHMXZaSFZzWlMxelkyOXdaU0JQY0ZaaGNtbGhZbXhsSUhkcGRHZ2dhVzVwZEdsaGJHbDZZWFJwYjI0Z2RtRnNkV1VnWTJGdWJtOTBJR0psSUcxaGNtdGxaQ0IzYVhSb0lIUm9aU0JKYlhCdmNuUWdUR2x1YTJGblpTQlVlWEJsTGdBZ1kyOTFiblFnYlhWemRDQmlaU0J2Ym1VdUFFMXBjM05wYm1jZ2JXOWtkV3hsTGdCTmFYTnphVzVuSUU5d1JuVnVZM1JwYjI1RmJtUWdZWFFnWlc1a0lHOW1JRzF2WkhWc1pTNEFJR2x6SUc1dmRDQmhJR052Ym5OMFlXNTBJRzl5SUcxdlpIVnNaUzF6WTI5d1pTQjJZWEpwWVdKc1pTNEFVR2g1YzJsallXeFRkRzl5WVdkbFFuVm1abVZ5SUcxMWMzUWdibTkwSUdKbElIVnpaV1FnZDJsMGFDQlBjRlpoY21saFlteGxMZ0JGZUhCbFkzUmxaQ0JKYldGblpTQjBieUJpWlNCdlppQjBlWEJsSUU5d1ZIbHdaVWx0WVdkbExnQkZlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQlBjRlI1Y0dWVFlXMXdiR1ZrU1cxaFoyVXVBRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQmxiblJ5ZVNCd2IybHVkSE1nY21WeGRXbHlaU0JsYVhSb1pYSWdZVzRnVDNKcFoybHVWWEJ3WlhKTVpXWjBJRzl5SUU5eWFXZHBia3h2ZDJWeVRHVm1kQ0JsZUdWamRYUnBiMjRnYlc5a1pTNEFSbkpoWjIxbGJuUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0lHVnVkSEo1SUhCdmFXNTBjeUJqWVc0Z2MzQmxZMmxtZVNCaGRDQnRiM04wSUc5dVpTQm1jbUZuYldWdWRDQnphR0ZrWlhJZ2FXNTBaWEpzYjJOcklHVjRaV04xZEdsdmJpQnRiMlJsTGdCUGNFSmxaMmx1U1c1MmIyTmhkR2x2YmtsdWRHVnliRzlqYTBWWVZDOVBjRVZ1WkVsdWRtOWpZWFJwYjI1SmJuUmxjbXh2WTJ0RldGUWdjbVZ4ZFdseVpTQmhJR1p5WVdkdFpXNTBJSE5vWVdSbGNpQnBiblJsY214dlkyc2daWGhsWTNWMGFXOXVJRzF2WkdVdUFESWdSVzUwY25rZ2NHOXBiblJ6SUdOaGJtNXZkQ0J6YUdGeVpTQjBhR1VnYzJGdFpTQnVZVzFsSUdGdVpDQkZlR1ZqZFhScGIyNU5iMlJsTGdCUGNFMWxiVzl5ZVUxdlpHVnNJSE5vYjNWc1pDQnZibXg1SUdKbElIQnliM1pwWkdWa0lHOXVZMlV1QUhNZ1puVnVZM1JwYjI0Z2NtVjBkWEp1SUhSNWNHVWdhWE1nYm05MElIWnZhV1F1QUhNZ2RIbHdaU0JwY3lCMmIybGtMZ0FnYVhNZ2JXbHpjMmx1WnlCdmNpQjJiMmxrTGdBZ1kyRnVibTkwSUdKbElFOXdWSGx3WlZadmFXUXVBQ0J0ZFd4MGFYQnNaU0IwYVcxbGN5QnBjeUJ1YjNRZ1lXeHNiM2RsWkM0QVZHaGxJRk5wWjI1bFpHNWxjM01nYVc0Z1QzQlVlWEJsU1c1MElHMTFjM1FnWVd4M1lYbHpJR0psSURBZ2QyaGxiaUJMWlhKdVpXd2dZMkZ3WVdKcGJHbDBlU0JwY3lCMWMyVmtMZ0JXZFd4cllXNU5aVzF2Y25sTmIyUmxiRXRJVWlCallYQmhZbWxzYVhSNUlHMTFjM1FnYjI1c2VTQmlaU0J6Y0dWamFXWnBaV1FnYVdZZ2RHaGxJRloxYkd0aGJrdElVaUJ0WlcxdmNua2diVzlrWld3Z2FYTWdkWE5sWkM0QVRtOGdUM0JGYm5SeWVWQnZhVzUwSUdsdWMzUnlkV04wYVc5dUlIZGhjeUJtYjNWdVpDNGdWR2hwY3lCcGN5QnZibXg1SUdGc2JHOTNaV1FnYVdZZ2RHaGxJRXhwYm10aFoyVWdZMkZ3WVdKcGJHbDBlU0JwY3lCaVpXbHVaeUIxYzJWa0xnQkpiaUIwYUdVZ1ZuVnNhMkZ1SUdWdWRtbHliMjV0Wlc1MExDQjBhR1VnVDNKcFoybHVURzkzWlhKTVpXWjBJR1Y0WldOMWRHbHZiaUJ0YjJSbElHMTFjM1FnYm05MElHSmxJSFZ6WldRdUFFbHVJSFJvWlNCV2RXeHJZVzRnWlc1MmFYSnZibTFsYm5Rc0lIUm9aU0JRYVhobGJFTmxiblJsY2tsdWRHVm5aWElnWlhobFkzVjBhVzl1SUcxdlpHVWdiWFZ6ZENCdWIzUWdZbVVnZFhObFpDNEFWblZzYTJGdUlITndaV01nWkc5bGMyNG5kQ0JoYkd4dmR5QkNkV2xzZEVsdUlGWmxjblJsZUVsa0lIUnZJR0psSUhWelpXUXVBQ0J5WldGamFHVmtJRzV2YmkxamIyMXdiM05wZEdVZ2RIbHdaU0IzYUdsc1pTQnBibVJsZUdWeklITjBhV3hzSUhKbGJXRnBiaUIwYnlCaVpTQjBjbUYyWlhKelpXUXVBRkpsWVdOb1pXUWdibTl1TFdOdmJYQnZjMmwwWlNCMGVYQmxJSGRvYVd4bElHbHVaR1Y0WlhNZ2MzUnBiR3dnY21WdFlXbHVJSFJ2SUdKbElIUnlZWFpsY25ObFpDNEFPaUJHZFc1amRHbHZiaUJ6ZEc5eVlXZGxJR05zWVhOeklHWnZjbUpwWkdSbGJpQjNhR1Z1SUhSb1pTQlRhR0ZrWlhJZ1kyRndZV0pwYkdsMGVTQnBjeUJrWldOc1lYSmxaQzRBVEdWdVozUm9JR2x6SUc1dmRDQmtaV1pwYm1Wa0xnQkRiMjF3YjI1bGJuUWdkSGx3WlNCcGN5QnViM1FnWkdWbWFXNWxaQzRBUld4bGJXVnVkQ0IwZVhCbElHbHpJRzV2ZENCa1pXWnBibVZrTGdCU1pYTjFiSFFnZEhsd1pTQnBjeUJ1YjNRZ1pHVm1hVzVsWkM0QVEyOXNkVzF1SUhSNWNHVWdhWE1nYm05MElHUmxabWx1WldRdUFFMWxiVzl5ZVNCaFkyTmxjM05sY3lCM2FYUm9JRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2lCdGRYTjBJSFZ6WlNCQmJHbG5ibVZrTGdCTllXdGxVRzlwYm5SbGNsWnBjMmxpYkdWTFNGSWdhWE1nYzNCbFkybG1hV1ZrTGdCT2IyNVFjbWwyWVhSbFVHOXBiblJsY2t0SVVpQnRkWE4wSUdKbElITndaV05wWm1sbFpDQnBaaUJOWVd0bFVHOXBiblJsY2tGMllXbHNZV0pzWlV0SVVpQnBjeUJ6Y0dWamFXWnBaV1F1QUVsdUlIUm9aU0JXZFd4cllXNGdaVzUyYVhKdmJtMWxiblFzSUVkTVEyOXRjSFYwWlNCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnWlc1MGNua2djRzlwYm5SeklISmxjWFZwY21VZ1pXbDBhR1Z5SUhSb1pTQk1iMk5oYkZOcGVtVWdiM0lnVEc5allXeFRhWHBsU1dRZ1pYaGxZM1YwYVc5dUlHMXZaR1VnYjNJZ1lXNGdiMkpxWldOMElHUmxZMjl5WVhSbFpDQjNhWFJvSUZkdmNtdG5jbTkxY0ZOcGVtVWdiWFZ6ZENCaVpTQnpjR1ZqYVdacFpXUXVBRTFoZUdsdGRXMGdRMjl1ZEhKdmJDQkdiRzkzSUc1bGMzUnBibWNnWkdWd2RHZ2daWGhqWldWa1pXUXVBRTFoYTJWUWIybHVkR1Z5UVhaaGFXeGhZbXhsUzBoU0lHTmhibTV2ZENCaVpTQjFjMlZrSUhkcGRHZ2dUM0JNYjJGa0xnQWdkMjl5WkhNZ2FXNXpkR1ZoWkM0QVEyOXVjMmxrWlhJZ2RYTnBibWNnWVNCMlpXTjBiM0lnYjNJZ2MzUnlkV04wSUdGeklIUm9aU0JsYkdWdFpXNTBJSFI1Y0dVZ2FXNXpkR1ZoWkM0QVlHSnlaV0ZyWUNCdGRYTjBJRzV2ZENCaVpTQjFjMlZrSUhSdklHVjRhWFFnWm5KdmJTQmhJR052Ym5ScGJuVnBibWNnWW14dlkyc3VJRlZ6WlNCZ1luSmxZV3N0YVdaZ0lHbHVjM1JsWVdRdUFFTnZibk5wWkdWeUlIVnphVzVuSUdFZ2RtVmpOQ0JwYm5OMFpXRmtMZ0JPYjI1VFpXMWhiblJwWXk0QVJYaHdaV04wWldRZ1NXMWhaMlVnSjBScGJTY2djR0Z5WVcxbGRHVnlJSFJ2SUdKbElHNXZkQ0JUZFdKd1lYTnpSR0YwWVM0QVNXNGdWblZzYTJGdUxDQjBhR1VnUmxCU2IzVnVaR2x1WjAxdlpHVWdiVzlrWlNCdGRYTjBJRzl1YkhrZ1lua2dVbFJGSUc5eUlGSlVXaTRBSUcxMWMzUWdZbVVnVDNCVWVYQmxRMjl2Y0dWeVlYUnBkbVZOWVhSeWFYaE9WaTRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJDZFdsc2RFbHVJRkJ2YzJsMGFXOXVJSFJ2SUdKbElIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUVsdWNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNZ2FXWWdaWGhsWTNWMGFXOXVJRzF2WkdWc0lHbHpJRTFsYzJoT1ZpNEFWblZzYTJGdUlITndaV01nWkc5bGMyNG5kQ0JoYkd4dmR5QkNkV2xzZEVsdUlFTnNhWEJFYVhOMFlXNWpaUzlEZFd4c1JHbHpkR0Z1WTJVZ2RHOGdZbVVnZFhObFpDQm1iM0lnZG1GeWFXRmliR1Z6SUhkcGRHZ2dTVzV3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwWmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnYVhNZ1RXVnphRTVXTGdBNklGWjFiR3RoYmlCemNHVmpJRzl1YkhrZ1lXeHNiM2R6SUhOMGIzSmhaMlVnWTJ4aGMzTmxjeUJtYjNJZ1lYUnZiV2xqSUhSdklHSmxPaUJWYm1sbWIzSnRMQ0JYYjNKclozSnZkWEFzSUVsdFlXZGxMQ0JUZEc5eVlXZGxRblZtWm1WeUxDQlFhSGx6YVdOaGJGTjBiM0poWjJWQ2RXWm1aWElnYjNJZ1ZHRnphMUJoZVd4dllXUlhiM0pyWjNKdmRYQkZXRlF1QUZaMWJHdGhiaUJ6Y0dWaklHUnZaWE51SjNRZ1lXeHNiM2NnUW5WcGJIUkpiaUJRYjNOcGRHbHZiaUIwYnlCaVpTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCSmJuQjFkQ0J6ZEc5eVlXZGxJR05zWVhOeklHbG1JR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQnBjeUJOWlhOb1JWaFVMZ0JXZFd4cllXNGdjM0JsWXlCa2IyVnpiaWQwSUdGc2JHOTNJRUoxYVd4MFNXNGdRMnhwY0VScGMzUmhibU5sTDBOMWJHeEVhWE4wWVc1alpTQjBieUJpWlNCMWMyVmtJR1p2Y2lCMllYSnBZV0pzWlhNZ2QybDBhQ0JKYm5CMWRDQnpkRzl5WVdkbElHTnNZWE56SUdsbUlHVjRaV04xZEdsdmJpQnRiMlJsYkNCcGN5Qk5aWE5vUlZoVUxnQldkV3hyWVc0Z2MzQmxZeUJrYjJWemJpZDBJR0ZzYkc5M0lFSjFhV3gwU1c0Z1RHRjVaWElnWVc1a0lGWnBaWGR3YjNKMFNXNWtaWGdnZEc4Z1ltVWdkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5QnBaaUJsZUdWamRYUnBiMjRnYlc5a1pXd2dhWE1nVm1WeWRHVjRMQ0JVWlhOelpXeHNZWFJwYjI1RmRtRnNkV0YwYVc5dUxDQkhaVzl0WlhSeWVTd2dUV1Z6YUU1V0lHOXlJRTFsYzJoRldGUXVBRloxYkd0aGJpQnpjR1ZqSUdSdlpYTnVKM1FnWVd4c2IzY2dRblZwYkhSSmJpQlFjbWx0YVhScGRtVkpaQ0IwYnlCaVpTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5QnBaaUJsZUdWamRYUnBiMjRnYlc5a1pXd2dhWE1nUVc1NVNHbDBTMGhTTGdCV2RXeHJZVzRnYzNCbFl5QmtiMlZ6YmlkMElHRnNiRzkzSUVKMWFXeDBTVzRnVUhKcGJXbDBhWFpsU1dRZ2RHOGdZbVVnZFhObFpDQm1iM0lnZG1GeWFXRmliR1Z6SUhkcGRHZ2dUM1YwY0hWMElITjBiM0poWjJVZ1kyeGhjM01nYVdZZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzSUdseklFTnNiM05sYzNSSWFYUkxTRkl1QUZaMWJHdGhiaUJ6Y0dWaklHUnZaWE51SjNRZ1lXeHNiM2NnUW5WcGJIUkpiaUJRY21sdGFYUnBkbVZKWkNCMGJ5QmlaU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQlBkWFJ3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwWmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnYVhNZ1NXNTBaWEp6WldOMGFXOXVTMGhTTGdCM2FHVnVJRVJwYlNCcGN5QmxhWFJvWlhJZ01VUWdiM0lnTWtRdUFFSmxhR0YyYVc5eUlHbHpJSFZ1WkdWbWFXNWxaQ0IxYm14bGMzTWdRMngxYzNSbGNsTnBlbVVnYVhNZ1lYUWdiR1ZoYzNRZ01TQmhibVFnWVNCd2IzZGxjaUJ2WmlBeUxnQWdaR1ZtWVhWc2RDQjJZV3gxWlNCdGRYTjBJR0psSUdGMElHeGxZWE4wSURFdUFDQmpZVzV1YjNRZ2FHRjJaU0IwYUdVZ2MybG5iaUJpYVhRZ2MyVjBJSFJ2SURFdUFDQnRkWE4wSUdKbElFOXdWSGx3WlVsdWRDQjNhWFJvSUhkcFpIUm9JRE15SUdGdVpDQnphV2R1WldSdVpYTnpJREF1QUVOc2RYTjBaWEpUYVhwbElHMTFjM1FnWW1VZ1lTQnpZMkZzWVhJZ2IyWWdhVzUwWldkbGNpQjBlWEJsTENCM2FHOXpaU0JUYVdkdVpXUnVaWE56SUc5d1pYSmhibVFnYVhNZ01DNEFSR1ZzZEdFZ2JYVnpkQ0JpWlNCaElITmpZV3hoY2lCdlppQnBiblJsWjJWeUlIUjVjR1VzSUhkb2IzTmxJRk5wWjI1bFpHNWxjM01nYjNCbGNtRnVaQ0JwY3lBd0xnQWdXekF1TGdCVGRHRnlkR2x1Wnk0dUxnQmhiSE52SUdKbElHUmxZMjl5WVhSbFpDQjNhWFJvSUdFZ0trSnBibVJwYm1jcUxnQW9aWGhqWlhCMElHWnZjaUJQY0V4cGJtVXNJSGRvYVdOb0lHTmhiaUJpWlNCdGFYaGxaQ0IzYVhSb0lFOXdVR2hwS1M0QUp5NEFMeThnTFMwZ2FXMXdiR2xqYVhRZ1ptbGxiR1FnWVd4cFoyNXRaVzUwSUhCaFpHUnBibWNnTFMwQUx5OGdMUzBnYVcxd2JHbGphWFFnYzNSeWRXTjBJSE5wZW1VZ2NHRmtaR2x1WnlBdExRQWdPaUIxTXpJc0FERndLd0FyS3dBcUFDaGxiWEIwZVNrQUlDaHZjaUJ5WlhGMWFYSmxjeUJsZUhSbGJuTnBiMjRnYjNJZ1kyRndZV0pwYkdsMGVTa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0J0WVhSZmRIa3BBRlJKVGxSZlFWTlRSVkpVS0ZKbGMyOXNkbVZ5TENCeWIyOTBYM0IwY2w5MGVTQjhmQ0J5YjI5MFgzSmxabDkwZVNrQVZFbE9WRjlCVTFORlVsUW9VbVZ6YjJ4MlpYSXNJSFpsWTE5MGVTa0FWRWxPVkY5QlUxTkZVbFFvUVZOVUxDQmliMlI1S1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUdsa2VDa0FWRWxPVkY5QlUxTkZVbFFvVW1WemIyeDJaWElzSUhZdFBsZHBaSFJvS0NrZ1BUMGdNM1VwQUZSSlRsUmZRVk5UUlZKVUtGUnlZVzV6Wm05eWJTd2dkaTArVjJsa2RHZ29LU0E5UFNBemRTa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0J2WW1vdWRIbHdaVjlwWkNncElDRTlJREIxS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaERiRzl1WlN3Z1pITjBMQ0J2ZFhRcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2daR1ZtWDJsdWMzUXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnYVc1emRDa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JrWlhOMFgzUjVjR1V0UGtselBGWmxZM1J2Y2o0b0tTQW1KaUJrWlhOMFgzUjVjR1V0UGtGelBGWmxZM1J2Y2o0b0tTMCtjMmw2WlNBOVBTQmtaWE4wWDJOdmRXNTBLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUhCaGNtVnVkQ2tBVkVsT1ZGOUJVMU5GVWxRb1UyVnRZVzUwYVdNc0lIQmhjbVZ1ZENrQVZFbE9WRjlCVTFORlVsUW9VbVZ6YjJ4MlpYSXNJSEp2YjNSZmFXUmxiblFwQUZSSlRsUmZRVk5UUlZKVUtGSmxjMjlzZG1WeUxDQnpaVzFmYVdSbGJuUXBBRlJKVGxSZlFWTlRSVkpVS0VGVFZDd2djM1J0ZENrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENCMFlYSm5aWFFwQUZSSlRsUmZRVk5UUlZKVVgxQlNUMGRTUVUxZlNVUlRYMFZSVlVGTVgwbEdYMVpCVEVsRUtFTnNiMjVsTENCa2MzUXNJRzlpYW1WamRDa0FWRWxPVkY5QlUxTkZVbFJmVUZKUFIxSkJUVjlKUkZOZlJWRlZRVXhmU1VaZlZrRk1TVVFvUTJ4dmJtVXNJSE55WXl3Z2IySnFaV04wS1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUc5aWFtVmpkQ2tBVkVsT1ZGOUJVMU5GVWxSZlVGSlBSMUpCVFY5SlJGTmZSVkZWUVV4ZlNVWmZWa0ZNU1VRb1EyeHZibVVzSUhOeVl5d2dkMmhoZENrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQnRZWFJmZEhrdFBtTnZiSFZ0Ym5NZ1BUMGdiV0YwWDNSNUxUNXliM2R6S1FCa1pXTnNZWEpoZEdsdmJuTXBBRlJKVGxSZlFWTlRSVkpVS0VGVFZDd2djbWh6S1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUd4b2N5a0FVMUJKVWkxV0lERXVNaUFvZFc1a1pYSWdUM0JsYmtOTUlESXVNaUJHZFd4c0lGQnliMlpwYkdVZ2MyVnRZVzUwYVdOektRQlRVRWxTTFZZZ01TNHdJQ2gxYm1SbGNpQlBjR1Z1UTB3Z01TNHlJRVoxYkd3Z1VISnZabWxzWlNCelpXMWhiblJwWTNNcEFGTlFTVkl0VmlBeExqQWdLSFZ1WkdWeUlFOXdaVzVEVENBeUxqRWdSblZzYkNCUWNtOW1hV3hsSUhObGJXRnVkR2xqY3lrQVUxQkpVaTFXSURFdU1DQW9kVzVrWlhJZ1QzQmxia05NSURJdU1DQkdkV3hzSUZCeWIyWnBiR1VnYzJWdFlXNTBhV056S1FCVFVFbFNMVllnTVM0eUlDaDFibVJsY2lCUGNHVnVRMHdnTWk0eUlFVnRZbVZrWkdWa0lGQnliMlpwYkdVZ2MyVnRZVzUwYVdOektRQlRVRWxTTFZZZ01TNHdJQ2gxYm1SbGNpQlBjR1Z1UTB3Z01TNHlJRVZ0WW1Wa1pHVmtJRkJ5YjJacGJHVWdjMlZ0WVc1MGFXTnpLUUJUVUVsU0xWWWdNUzR3SUNoMWJtUmxjaUJQY0dWdVEwd2dNaTR4SUVWdFltVmtaR1ZrSUZCeWIyWnBiR1VnYzJWdFlXNTBhV056S1FCVFVFbFNMVllnTVM0d0lDaDFibVJsY2lCUGNHVnVRMHdnTWk0d0lFVnRZbVZrWkdWa0lGQnliMlpwYkdVZ2MyVnRZVzUwYVdOektRQlRVRWxTTFZZZ01TNHdJQ2gxYm1SbGNpQlBjR1Z1UjB3Z05DNDFJSE5sYldGdWRHbGpjeWtBVTFCSlVpMVdJREV1TUNBb2RXNWtaWElnVDNCbGJrZE1JRFF1TXlCelpXMWhiblJwWTNNcEFGTlFTVkl0VmlBeExqWWdLSFZ1WkdWeUlGWjFiR3RoYmlBeExqTWdjMlZ0WVc1MGFXTnpLUUJUVUVsU0xWWWdNUzR3SUNoMWJtUmxjaUJQY0dWdVIwd2dOQzR5SUhObGJXRnVkR2xqY3lrQVUxQkpVaTFXSURFdU5TQW9kVzVrWlhJZ1ZuVnNhMkZ1SURFdU1pQnpaVzFoYm5ScFkzTXBBRk5RU1ZJdFZpQXhMakFnS0hWdVpHVnlJRTl3Wlc1SFRDQTBMakVnYzJWdFlXNTBhV056S1FCVFVFbFNMVllnTVM0MElDaDFibVJsY2lCV2RXeHJZVzRnTVM0eElITmxiV0Z1ZEdsamN5a0FVMUJKVWkxV0lERXVNeUFvZFc1a1pYSWdWblZzYTJGdUlERXVNU0J6WlcxaGJuUnBZM01wQUZOUVNWSXRWaUF4TGpBZ0tIVnVaR1Z5SUU5d1pXNUhUQ0EwTGpBZ2MyVnRZVzUwYVdOektRQlRVRWxTTFZZZ01TNHdJQ2gxYm1SbGNpQldkV3hyWVc0Z01TNHdJSE5sYldGdWRHbGpjeWtBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0JoZEhSeUtRQlVTVTVVWDBGVFUwVlNWQ2hUWlcxaGJuUnBZeXdnYm05a1pYTmZXMkZ6ZEY5dWIyUmxMVDV1YjJSbFgybGtMblpoYkhWbFhTQTlQU0J1ZFd4c2NIUnlLUUJVU1U1VVgwRlRVMFZTVkNoQlUxUXNJR2x1YVhRZ0lUMGdiblZzYkhCMGNpa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JtZFc1amRHbHZibDlqYjI1emRISjFZM1FnSVQwZ2JuVnNiSEIwY2lrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQmxibU5zYjNOcGJtZGZZMjl1YzNSeWRXTjBJQ0U5SUc1MWJHeHdkSElwQUZSSlRsUmZRVk5UUlZKVUtGSmxjMjlzZG1WeUxDQndkSElnSVQwZ2JuVnNiSEIwY2lrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENCcFpHVnVkR2xtYVdWeUlDRTlJRzUxYkd4d2RISXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnZG1GeUlDRTlJRzUxYkd4d2RISXBBRlJKVGxSZlFWTlRSVkpVS0ZWMGFXeHpMQ0JvWVhOb2JXRndYM0psWm1WeVpXNWpaVjlzYjI5cmRYQWdJVDBnYm5Wc2JIQjBjaWtBVkVsT1ZGOUJVMU5GVWxRb1VtVnpiMngyWlhJc0lIUnZJQ0U5SUc1MWJHeHdkSElwQUZSSlRsUmZRVk5UUlZKVUtGSmxjMjlzZG1WeUxDQnBibVp2SUNFOUlHNTFiR3h3ZEhJcEFGUkpUbFJmUVZOVFJWSlVLRk5sYldGdWRHbGpMQ0JrWldOc1lYSmhkR2x2YmlBaFBTQnVkV3hzY0hSeUtRQlVTVTVVWDBGVFUwVlNWQ2hTWlhOdmJIWmxjaXdnYzJWdElDRTlJRzUxYkd4d2RISXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnY0dGeVlXMGdJVDBnYm5Wc2JIQjBjaWtBVkVsT1ZGOUJVMU5GVWxRb1VtVnpiMngyWlhJc0lHTm1JQ0U5SUc1MWJHeHdkSElwQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z1lYTjBYM04wYjNKbFgzUjVjR1VnSVQwZ2JuVnNiSEIwY2lrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQjBlWEJsSUNFOUlHNTFiR3h3ZEhJcEFGUkpUbFJmUVZOVFJWSlVLRUZUVkN3Z2JtRnRaU0FoUFNCdWRXeHNjSFJ5S1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUhKMWJHVWdJVDBnYm5Wc2JIQjBjaWtBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0JsZUhCeUtRQlVTVTVVWDBGVFUwVlNWQ2hCVTFRc0lITmxiR1ZqZEc5eUtRQlVZWEpuWlhRZ2IyWWdRMjl0Y0c5dVpXNTBJR1JsWTI5eVlYUnBiMjRnYlhWemRDQmlaU0JoSUcxbGJXOXllU0J2WW1wbFkzUWdaR1ZqYkdGeVlYUnBiMjRnS0dFZ2RtRnlhV0ZpYkdVZ2IzSWdZU0JtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElwQUZSaGNtZGxkQ0J2WmlCT2IyNVhjbWwwWVdKc1pTQmtaV052Y21GMGFXOXVJRzExYzNRZ1ltVWdZU0J0WlcxdmNua2diMkpxWldOMElHUmxZMnhoY21GMGFXOXVJQ2hoSUhaaGNtbGhZbXhsSUc5eUlHRWdablZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlLUUJVU1U1VVgwRlRVMFZTVkNoQlUxUXNJRzFsYldKbGNpa0FWRWxPVkY5QlUxTkZVbFFvUVZOVUxDQjJZWElwQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z2RHOXdLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUdSbGMzUmZhVzVtYnlrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQmpkRjlwYm1adktRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJR0pzYjJOclgybHVabThwQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z2MzSmpYMmx1Wm04cEFGUkpUbFJmUVZOVFJWSlVLRUZUVkN3Z1kyOXVaR2wwYVc5dUtRQXBJR0oxZENCcGRDQnBjeUJ1YjNRZ1lTQnpkSEoxWTNSMWNtVmtJR2hsWVdSbGNpQW9hWFFnYUdGeklHNXZJRzFsY21kbElHbHVjM1J5ZFdOMGFXOXVLUUJVU1U1VVgwRlRVMFZTVkNoVFpXMWhiblJwWXl3Z1puVnVZM1JwYjI0cEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2dablZ1WTNScGIyNWZZMjl1YzNSeWRXTjBMVDVyYVc1a0lEMDlJRU52Ym5OMGNuVmpkRG82YTBaMWJtTjBhVzl1S1FCVVNVNVVYMEZUVTBWU1ZDaFNaWE52YkhabGNpd2dkUzArYjNBZ1BUMGdZWE4wT2pwVmJtRnllVTl3T2pwclNXNWthWEpsWTNScGIyNHBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnWlhocGRHbHVaMTlqYjI1emRISjFZM1F0UG10cGJtUWdQVDBnUTI5dWMzUnlkV04wT2pwclUzZHBkR05vVTJWc1pXTjBhVzl1S1FCVVNVNVVYMEZUVTBWU1ZDaFNaV0ZrWlhJc0lHTnZibk4wY25WamRDMCthMmx1WkNBOVBTQkRiMjV6ZEhKMVkzUTZPbXRUZDJsMFkyaFRaV3hsWTNScGIyNHBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnWTI5dWMzUnlkV04wTFQ1cmFXNWtJRDA5SUVOdmJuTjBjblZqZERvNmEwbG1VMlZzWldOMGFXOXVLUUFnS0c5eUlISmxjWFZwY21WeklHVjRkR1Z1YzJsdmJpa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0J6ZFdKZmFXNWtaWGdnUENCclRXRjRWbVZqZEc5eVRHVnVLUUJVU1U1VVgwRlRVMFZTVkNoU1pYTnZiSFpsY2l3Z2MyOTFjbU5sWDI1dlpHVXRQblpwYzJsMFpXUmZabkp2YlNrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENCdFpXMHBBQ2h1ZFd4c0tRQlVTVTVVWDBGVFUwVlNWQ2hTWlhOdmJIWmxjaXdnWTJGc2JDa0FWRWxPVkY5QlUxTkZVbFFvVW1WemIyeDJaWElzSUdWc0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hEYkc5dVpTd2daSE4wTENCM2FYUm9LUUJVU1U1VVgwRlRVMFZTVkNoQlUxUXNJR0Z5WnlrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENCa2FYSmxZM1JwZG1VcEFHRjBZVzVvSUcxMWMzUWdZbVVnWTJGc2JHVmtJSGRwZEdnZ1lTQjJZV3gxWlNCcGJpQjBhR1VnY21GdVoyVWdLQzB4SUM0dUlERXBJQ2hsZUdOc2RYTnBkbVVwQUdGamIzTWdiWFZ6ZENCaVpTQmpZV3hzWldRZ2QybDBhQ0JoSUhaaGJIVmxJR2x1SUhSb1pTQnlZVzVuWlNCYkxURWdMaTRnTVYwZ0tHbHVZMngxYzJsMlpTa0FZWE5wYmlCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYVhSb0lHRWdkbUZzZFdVZ2FXNGdkR2hsSUhKaGJtZGxJRnN0TVNBdUxpQXhYU0FvYVc1amJIVnphWFpsS1FBZ0tHNXZkQ0JoYm05MGFHVnlJR05oYzJVZ1kyOXVjM1J5ZFdOMExDQmpiM0p5WlhOd2IyNWthVzVuSUcxbGNtZGxMQ0J2ZFhSbGNpQnNiMjl3SUcxbGNtZGxJRzl5SUc5MWRHVnlJR3h2YjNBZ1kyOXVkR2x1ZFdVcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2djR0Z5Wlc1MExUNXJhVzVrSUQwOUlFTnZibk4wY25WamREbzZhME52Ym5ScGJuVmxLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUdobFlXUmxjaTArWTI5dWMzUnlkV04wSUNZbUlHaGxZV1JsY2kwK1kyOXVjM1J5ZFdOMExUNXJhVzVrSUQwOUlFTnZibk4wY25WamREbzZTMmx1WkRvNmEwTnZiblJwYm5WbEtRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJR1poYkhObEtRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hEYkc5dVpTd2djM0pqTENCaVpXWnZjbVVwQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z2MyRnRjR3hsWDIxaGMydGZZWEp5WVhsZmRIbHdaU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENCemNHbHlkbDkwZVhCbEtRQlVTVTVVWDBGVFUwVlNWQ2hUWlcxaGJuUnBZeXdnY21WMGRYSnVYM1I1Y0dVcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2diR2h6TG5SNWNHVXBBSE53ZGs5d1pYSmhibVJKYzBOdmJtTnlaWFJsS0hCaGNuTmxaRjl2Y0dWeVlXNWtMblI1Y0dVcEFISmxZblZwYkhRdFBrbHpVMkZ0WlNnbWRIbHdaU2tBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0IwZVhCbEtRQlVTVTVVWDBGVFUwVlNWQ2hCVTFRc0lHOXdJQ0U5SUVKcGJtRnllVTl3T2pwclRtOXVaU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENCbGNGOXVZVzFsSUNFOUlHbHVibVZ5WDJsdGNHeGxiV1Z1ZEdGMGFXOXVYMjVoYldVcEFGUkpUbFJmUVZOVFJWSlVLRUZUVkN3Z2JtRnRaU2tBSUNoMmFXOXNZWFJsY3lCd2IzTjBMV1J2YldsdVlXNWpaU0J5ZFd4bEtRQWdLSFpwYjJ4aGRHVnpJR1J2YldsdVlXNWpaU0J5ZFd4bEtRQXRZbWwwSUdsdWRHVm5aWElnWm05eUlIUm9aU0JoWkdSeVpYTnphVzVuSUcxdlpHVnNJSFZ6WldRZ2FXNGdkR2hsSUcxdlpIVnNaU2tBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0IyWVhKcFlXSnNaU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENCdmNHTnZaR1VvZG1GeUtTQTlQU0J6Y0hZNk9rOXdPanBQY0ZaaGNtbGhZbXhsS1FCVVNVNVVYMEZUVTBWU1ZDaFNaWE52YkhabGNpd2dibTl1WDNWdWFXWnZjbTFmYzI5MWNtTmxLUUJVU1U1VVgwRlRVMFZTVkY5UVVrOUhVa0ZOWDBsRVUxOUZVVlZCVEY5SlJsOVdRVXhKUkNoQlUxUXNJSEpsZEhWeWJsOTBlU3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCallYUmxaMjl5ZVN3Z2NISnZaM0poYlY5cFpDa0FWRWxPVkY5QlUxTkZVbFJmVUZKUFIxSkJUVjlKUkZOZlJWRlZRVXhmU1VaZlZrRk1TVVFvUVZOVUxDQmliMlI1TENCd2NtOW5jbUZ0WDJsa0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hCVTFRc0lHbGtlQ3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCbGJITmxYM04wWVhSbGJXVnVkQ3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCemRHMTBMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUhSaGNtZGxkQ3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCdlltcGxZM1FzSUhCeWIyZHlZVzFmYVdRcEFGUkpUbFJmUVZOVFJWSlVYMUJTVDBkU1FVMWZTVVJUWDBWUlZVRk1YMGxHWDFaQlRFbEVLRUZUVkN3Z2NtaHpMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUd4b2N5d2djSEp2WjNKaGJWOXBaQ2tBVkVsT1ZGOUJVMU5GVWxSZlVGSlBSMUpCVFY5SlJGTmZSVkZWUVV4ZlNVWmZWa0ZNU1VRb1FWTlVMQ0JoZEhSeUxDQndjbTluY21GdFgybGtLUUJVU1U1VVgwRlRVMFZTVkY5UVVrOUhVa0ZOWDBsRVUxOUZVVlZCVEY5SlJsOVdRVXhKUkNoQlUxUXNJR1Y0Y0hJc0lIQnliMmR5WVcxZmFXUXBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNWDBsR1gxWkJURWxFS0VGVFZDd2djMlZzWldOMGIzSXNJSEJ5YjJkeVlXMWZhV1FwQUZSSlRsUmZRVk5UUlZKVVgxQlNUMGRTUVUxZlNVUlRYMFZSVlVGTVgwbEdYMVpCVEVsRUtFRlRWQ3dnYVc1cGRHbGhiR2w2WlhJc0lIQnliMmR5WVcxZmFXUXBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNS0VGVFZDeHBaR1Z1ZEdsbWFXVnlMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUcxbGJXSmxjaXdnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCMllYSXNJSEJ5YjJkeVlXMWZhV1FwQUZSSlRsUmZRVk5UUlZKVVgxQlNUMGRTUVUxZlNVUlRYMFZSVlVGTVgwbEdYMVpCVEVsRUtFRlRWQ3dnWVhOelpYSjBhVzl1TENCd2NtOW5jbUZ0WDJsa0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hCVTFRc0lHTnZibVJwZEdsdmJpd2djSEp2WjNKaGJWOXBaQ2tBVkVsT1ZGOUJVMU5GVWxSZlVGSlBSMUpCVFY5SlJGTmZSVkZWUVV4ZlNVWmZWa0ZNU1VRb1FWTlVMQ0J0Wlcwc0lIQnliMmR5WVcxZmFXUXBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNWDBsR1gxWkJURWxFS0VGVFZDd2djR0Z5WVcwc0lIQnliMmR5WVcxZmFXUXBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNWDBsR1gxWkJURWxFS0VGVFZDd2djM2x0WW05c0xDQndjbTluY21GdFgybGtLUUJVU1U1VVgwRlRVMFZTVkY5UVVrOUhVa0ZOWDBsRVUxOUZVVlZCVENoQlUxUXNZWEpuTENCd2NtOW5jbUZ0WDJsa0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hCVTFRc0lHRnlaeXdnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCamIyNTBhVzUxYVc1bkxDQndjbTluY21GdFgybGtLUUJVU1U1VVgwRlRVMFZTVkY5UVVrOUhVa0ZOWDBsRVUxOUZVVlZCVEY5SlJsOVdRVXhKUkNoQlUxUXNJR1JwY21WamRHbDJaU3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCMllXeDFaU3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCMGVYQmxMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUc1aGJXVXNJSEJ5YjJkeVlXMWZhV1FwQUZSSlRsUmZRVk5UUlZKVVgxQlNUMGRTUVUxZlNVUlRYMFZSVlVGTVgwbEdYMVpCVEVsRUtFRlRWQ3dnWlc1aFlteGxMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUhaaGNtbGhZbXhsTENCd2NtOW5jbUZ0WDJsa0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hCVTFRc0lHWjFibU1zSUhCeWIyZHlZVzFmYVdRcEFGUkpUbFJmUVZOVFJWSlVYMUJTVDBkU1FVMWZTVVJUWDBWUlZVRk1YMGxHWDFaQlRFbEVLRUZUVkN3Z1pHbGhaMjV2YzNScFl5d2djSEp2WjNKaGJWOXBaQ2tBVkVsT1ZGOUJVMU5GVWxSZlVGSlBSMUpCVFY5SlJGTmZSVkZWUVV3b1FWTlVMR0lzSUhCeWIyZHlZVzFmYVdRcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2dZMjl1YzNSeWRXTjBMVDVpWldkcGJsOXBaQ0E5UFNCaWJHOWphMTlwYm1adkxtbGtLUUFnS0dSdmJXbHVZVzVqWlNCeWRXeGxJSFpwYjJ4aGRHVmtLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUhKbFoybHpkR1Z5WldRcEFGUkpUbFJmUVZOVFJWSlVLRkpsYzI5c2RtVnlMQ0J6WlhabGNtbDBlU0FoUFNCaWRXbHNkR2x1T2pwRWFXRm5ibTl6ZEdsalUyVjJaWEpwZEhrNk9tdFZibVJsWm1sdVpXUXBBRlJKVGxSZlFWTlRSVkpVS0ZSNWNHVXNJR0ZqWTJWemN5QWhQU0JpZFdsc2RHbHVPanBCWTJObGMzTTZPbXRWYm1SbFptbHVaV1FwQUZSSlRsUmZRVk5UUlZKVUtFRlRWQ3dnWm5WdVl5a0FWRWxPVkY5QlUxTkZVbFJmVUZKUFIxSkJUVjlKUkZOZlJWRlZRVXhmU1VaZlZrRk1TVVFvUTJ4dmJtVXNJSE55WXl3Z1lTa0FWRWxPVkY5QlUxTkZVbFFvVkhsd1pTd2daV3hsYldWdWRGOHBBRlJKVGxSZlFWTlRSVkpVS0ZSNWNHVXNJSFI1Y0dWZktRQlVTVTVVWDBGVFUwVlNWQ2hUWlcxaGJuUnBZeXdnZEhsd1pWOHBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNWDBsR1gxWkJURWxFS0ZONWJXSnZiQ3dnY0hKdlozSmhiVjlwWkY4c0lHOTBhR1Z5TG5CeWIyZHlZVzFmYVdSZktRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJQ0ZtYVc1aGJHbDZaV1JmS1FCVVNVNVVYMEZUVTBWU1ZDaFFjbTluY21GdExDQWhiVzkyWldSZktRQnZMbTUxYlY5M2IzSmtjeUFxSURRZ1BqMGdjMmw2Wlc5bUtGUXBBRlJKVGxSZlFWTlRSVkpVS0VGVFZDd2djbTkzYzE4Z1BDQTFLUUJVU1U1VVgwRlRVMFZTVkNoQlUxUXNJR052YkhWdGJuTmZJRHdnTlNrQVZFbE9WRjlCVTFORlVsUW9WSGx3WlN3Z2QybGtkR2hmSUR3Z05Ta0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0F3SUR3Z2NtVnhkV2x5WldSZlkyOTFiblFnSmlZZ2NtVnhkV2x5WldSZlkyOTFiblFnUEQwZ05Da0FJQ2h0ZFhOMElHSmxJREFzSURFZ2IzSWdNaWtBSUNodGRYTjBJR0psSURBZ2IzSWdNU2tBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0J5YjNkelh5QStJREVwQUZSSlRsUmZRVk5UUlZKVUtFRlRWQ3dnWTI5c2RXMXVjMThnUGlBeEtRQlVTVTVVWDBGVFUwVlNWQ2hVZVhCbExDQjNhV1IwYUY4Z1BpQXhLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUhOMFlYUmxiV1Z1ZEhOZmMzUmhZMnRmTGt4bGJtZDBhQ2dwSUQwOUlERXBBRjh1Y21WeGRXbHlaWE5mWlc1a2FXRnVYMk52Ym5abGNuTnBiMjRnZkh3Z0tGOHVaVzVrYVdGdVgyTnZiblpsY25SbFpGOTNiM0prY3k1emFYcGxLQ2tnUFQwZ01Ta0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JpYkc5amExOXBaQ0ErSURBcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2djM0pqSUQ0Z01Da0FWRWxPVkY5QlUxTkZVbFFvVW1WemIyeDJaWElzSUdOaGJHd3RQa0Z5WjNWdFpXNTBjeWdwTGt4bGJtZDBhQ2dwSUQ0Z01Da0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JrWldOdkxuTnBlbVVvS1NBK0lEQXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnWW14dlkydGZiM0prWlhKZkxuTnBlbVVvS1NBK0lEQXBBRlJKVGxSZlFWTlRSVkpVS0ZObGJXRnVkR2xqTENBb1pqRTJYMlY0Y0Y5d1lYSjBJQ1lnZm10R01UWkZlSEJ2Ym1WdWRFMWhjMnNwSUQwOUlEQXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnYUdWaFpHVnlJQ0U5SURBcEFGUkpUbFJmUVZOVFJWSlVLRmR5YVhSbGNpd2diV0Z1ZEdsemMyRWdJVDBnTUNrQVZFbE9WRjlCVTFORlVsUW9VMlZ0WVc1MGFXTXNJQ2hqYjI1emRHRnVkQ0FoUFNCdWRXeHNjSFJ5S1NBOVBTQW9jM1JoWjJVZ1BUMGdSWFpoYkhWaGRHbHZibE4wWVdkbE9qcHJRMjl1YzNSaGJuUXBLUUJVU1U1VVgwRlRVMFZTVkNoVFpXMWhiblJwWXl3Z0tERTBJRHc5SUdScGMyTmhjbVJmWW1sMGN5a2dKaVlnS0dScGMyTmhjbVJmWW1sMGN5QThQU0JyUmpNeVRXRnVkR2x6YzJGQ2FYUnpLU2tBVkVsT1ZGOUJVMU5GVWxRb1UyVnRZVzUwYVdNc0lDaHJUV2x1UmpNeVFtbGhjMlZrUlhod1JtOXlSakUyVTNWaWJtOXliV0ZzVG5WdFltVnlJRHc5SUdKcFlYTmxaRjlsZUhCdmJtVnVkRjl2Y21sbmFXNWhiQ2tnSmlZZ0tHSnBZWE5sWkY5bGVIQnZibVZ1ZEY5dmNtbG5hVzVoYkNBOFBTQnJUV0Y0UmpNeVFtbGhjMlZrUlhod1JtOXlSakUyVTNWaWJtOXliV0ZzVG5WdFltVnlLU2tBVkVsT1ZGOUJVMU5GVWxRb1ZIbHdaU3dnU1hOV1lXeHBaRVJsY0hSb1JHbHRaVzV6YVc5dUtHUnBiU2twQUZSSlRsUmZRVk5UUlZKVUtFRlRWQ3dnZEdsdWREbzZTWE04VUdGeVlXMWxkR1Z5UGlod1lYSmhiU2twQUZSSlRsUmZRVk5UUlZKVUtFTnZibk4wWVc1MExDQnpkR1E2T21selptbHVhWFJsS0hZdWRtRnNkV1VwS1FCVVNVNVVYMEZUVTBWU1ZDaFZkR2xzY3l3Z0lYTjBaRG82YUc5c1pITmZZV3gwWlhKdVlYUnBkbVU4YzNSa09qcHRiMjV2YzNSaGRHVStLSFpoYkhWbEtTa0FWRWxPVkY5QlUxTkZVbFFvVTJWdFlXNTBhV01zSUNoMFlYSm5aWFF0UGxOMFlXZGxLQ2tnUEQwZ2MzUmhaMlVwSUh4OElDaHpkR0ZuWlNBOVBTQnpaVzA2T2tWMllXeDFZWFJwYjI1VGRHRm5aVG82YTA1dmRFVjJZV3gxWVhSbFpDa3BBRlJKVGxSZlFWTlRSVkpVS0ZKbGMyOXNkbVZ5TENBaGMzUmtPanBvYjJ4a2MxOWhiSFJsY201aGRHbDJaVHh6ZEdRNk9tMXZibTl6ZEdGMFpUNG9kbUlwS1FCVVNVNVVYMEZUVTBWU1ZDaFNaWE52YkhabGNpd2dJWE4wWkRvNmFHOXNaSE5mWVd4MFpYSnVZWFJwZG1VOGMzUmtPanB0YjI1dmMzUmhkR1UrS0haaEtTa0FWRWxPVkY5QlUxTkZVbFFvUVZOVUxDQW9aV3h6WlY5emRHRjBaVzFsYm5RdFBrbHpRVzU1VDJZOFNXWlRkR0YwWlcxbGJuUXNJRUpzYjJOclUzUmhkR1Z0Wlc1MFBpZ3BLU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENBaFpYQmZhVzVtYjE4dFBtbHVibVZ5WDI1aGJXVXVaVzF3ZEhrb0tTa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0FoYVc1dVpYSmZhVzF3YkdWdFpXNTBZWFJwYjI1ZmJtRnRaUzVsYlhCMGVTZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUNGbmRXRnlaRjl1WVcxbExtVnRjSFI1S0NrcEFGUkpUbFJmUVZOVFJWSlVLRk41YldKdmJDd2dJVzVoYldVdVpXMXdkSGtvS1NrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQWhjM1JoZEdWdFpXNTBYMnhwYzNRdVNYTkZiWEIwZVNncEtRQlVTVTVVWDBGVFUwVlNWQ2hCVTFRc0lDRmhjbWQxYldWdWRITXVTWE5GYlhCMGVTZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUNGelpXeGxZM1J2Y25NdVNYTkZiWEIwZVNncEtRQlVTVTVVWDBGVFUwVlNWQ2hCVTFRc0lDRnpaV3hsWTNSdmNuTXVTWE5GYlhCMGVTZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUNGamJHRjFjMlZmYUdWaFpITXVTWE5GYlhCMGVTZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUNGamIyNXpkSEoxWTNSelh5NUpjMFZ0Y0hSNUtDa3BBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnSVhOMFlYUmxiV1Z1ZEhOZmMzUmhZMnRmTGtselJXMXdkSGtvS1NrQVZFbE9WRjlCVTFORlVsUW9WSGx3WlN3Z1NHRnpRM0psWVhScGIyNUdhWGhsWkVadmIzUndjbWx1ZENncEtRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJR1JsYzNSZmRIbHdaUzArU1hOR2JHOWhkRlpsWTNSdmNpZ3BJSHg4SUdSbGMzUmZkSGx3WlMwK1NYTlZibk5wWjI1bFpFbHVkR1ZuWlhKV1pXTjBiM0lvS1NCOGZDQmtaWE4wWDNSNWNHVXRQa2x6VTJsbmJtVmtTVzUwWldkbGNsWmxZM1J2Y2lncEtRQlVTVTVVWDBGVFUwVlNWQ2hTWlhOdmJIWmxjaXdnZEMwK2FYTmZjMk5oYkdGeUtDa3BBRlpoYkdsa1lYUmxRMjl1YzNSeWRXTjBVMmw2WlNoMGVYQmxYeXdnWTI5dWMzUnlkV04wY3k1emFYcGxLQ2twQUNGZkxuSmxjWFZwY21WelgyVnVaR2xoYmw5amIyNTJaWEp6YVc5dUlIeDhJQ2hwYm5OMFgzZHZjbVJmWTI5MWJuUWdQVDBnWHk1bGJtUnBZVzVmWTI5dWRtVnlkR1ZrWDNkdmNtUnpMbk5wZW1Vb0tTa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JsYm1SZlptbHljM1JmWTJ4aGRYTmxYM0J2Y3lBOElHSnNiMk5yWDI5eVpHVnlYeTV6YVhwbEtDa3BBSGR2Y21SelgyVnVaQ0E4UFNCemRHRjBhV05mWTJGemREeHBiblErS0dsdWMzUXRQbmR2Y21SektDa3VjMmw2WlNncEtRQlVTVTVVWDBGVFUwVlNWQ2hTWlhOdmJIWmxjaXdnYldWdFltVnlMVDVCZEhSeWFXSjFkR1Z6S0NrdWJHOWpZWFJwYjI0dWFHRnpYM1poYkhWbEtDa3BBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnWkdWbVgybHVabTh0UG14dlkyRnNMbWhoYzE5MllXeDFaU2dwS1FCVVNVNVVYMEZUVTBWU1ZDaFRaVzFoYm5ScFl5d2dkSGx3WlY4Z1BUMGdZMjl1YzNSaGJuUXRQbFI1Y0dVb0tTa0FWRWxPVkY5QlUxTkZVbFFvUVZOVUxDQnplVzFpYjJ3dVNYTldZV3hwWkNncEtRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJRzB1ZEhsd1pTMCtTWE04VFdGMGNtbDRQaWdwS1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUNGallYUmxaMjl5ZVMwK1NYTThWR1Z0Y0d4aGRHVmtTV1JsYm5ScFptbGxjajRvS1NrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENBaGJXVnRZbVZ5TFQ1SmN6eFVaVzF3YkdGMFpXUkpaR1Z1ZEdsbWFXVnlQaWdwS1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUNGdVlXMWxMVDVKY3p4VVpXMXdiR0YwWldSSlpHVnVkR2xtYVdWeVBpZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pYTnZiSFpsY2l3Z1pTMCtTWE04WVhOME9qcEJZMk5sYzNOdmNrVjRjSEpsYzNOcGIyNCtLQ2twQUZSSlRsUmZRVk5UUlZKVUtGUjVjR1VzSUNGemRXSjBlWEJsTFQ1SmN6eFNaV1psY21WdVkyVStLQ2twQUZSSlRsUmZRVk5UUlZKVUtFRlRWQ3dnSVhOMVluUjVjR1V0UGtselBGSmxabVZ5Wlc1alpUNG9LU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENCemIzVnlZMlZmWlhod2NpNTBlWEJsTFQ1SmN6eFNaV1psY21WdVkyVStLQ2twQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z2RIbHdaU0FtSmlCMGVYQmxMVDVKY3p4U1pXWmxjbVZ1WTJVK0tDa3BBRlJKVGxSZlFWTlRSVkpVS0ZObGJXRnVkR2xqTENCeVpXWXRQbFI1Y0dVb0tTMCtTWE04ZEhsd1pUbzZVbVZtWlhKbGJtTmxQaWdwS1FCVVNVNVVYMEZUVTBWU1ZDaFNaV0ZrWlhJc0lHbHVZMmxrWlc1MExuUjVjR1V0UGtselBFWXpNajRvS1NrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQnViM0p0WVd3dWRIbHdaUzArU1hNOFJqTXlQaWdwS1FCVVNVNVVYMEZUVTBWU1ZDaFNaV0ZrWlhJc0lHNXlaV1l1ZEhsd1pTMCtTWE04UmpNeVBpZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUdWMFlTNTBlWEJsTFQ1SmN6eEdNekkrS0NrcEFDRndZWFIwWlhKdUxUNWxiWEIwZVNncEFDRnBibk4wYzE4dVpXMXdkSGtvS1FCcGJsOW1kVzVqZEdsdmJsOWliMlI1S0NrQWRXNXBjWFZsWDJsa1h5QWhQU0J6ZEdRNk9tNTFiV1Z5YVdOZmJHbHRhWFJ6UEhWcGJuUXpNbDkwUGpvNmJXRjRLQ2tBYVhOZmMyVnVkR2x1Wld4ZklIeDhJQ0ZKYzBsdVFVeHBjM1FvS1FCMGVYQmxMVDVCYzBKdmIyd29LU0I4ZkNCMGVYQmxMVDVCYzBsdWRHVm5aWElvS1NCOGZDQjBlWEJsTFQ1QmMwWnNiMkYwS0NrQWMzUmhZMnNnYm05MElHVnRjSFI1SUdGbWRHVnlJSEpsZEhWeWJtbHVaeUJtY205dElGUnlZWFpsY25ObFJHVndaVzVrWlc1amFXVnpLQ2tBZEhsd1pTMCtRWE5XWldOMGIzSW9LUUJ2Y0dWeVlYUnZjaWdwQURFZ1BEMGdkMjl5WkhNdWMybDZaU2dwQUc5d1pYSmhibVF1YjJabWMyVjBJRHdnYVc1emRDMCtkMjl5WkhNb0tTNXphWHBsS0NrQWMzQjJPanBQY0RvNlQzQlVlWEJsVUc5cGJuUmxjaUE5UFNCd2RISkpibk4wTFQ1dmNHTnZaR1VvS1FCemNIWTZPazl3T2pwUGNFTnZibk4wWVc1MElEMDlJSE5wZW1WSmJuTjBMVDV2Y0dOdlpHVW9LUUIzYUdWeVpTQWhQU0JsYm5SeWVWOWliRzlqYTE5MGIxOWpiMjV6ZEhKMVkzUmZMbVZ1WkNncEFDRjBMVDVCYzFadmFXUW9LUUFoZEhsd1pTMCtRWE5XYjJsa0tDa0FKeWtBVkVsT1ZGOUJVMU5GVWxRb1VtVnpiMngyWlhJc0lHWmhiSE5sSUNZbUlDSjFibWhoYm1Sc1pXUWdjMlYyWlhKcGRIa2lLUUJVU1U1VVgwRlRVMFZTVkNoU1pYTnZiSFpsY2l3Z1ptRnNjMlVnSmlZZ0luVnVZV0pzWlNCMGJ5Qm1hVzVrSUdOb2FXeGtJR05oYkd3Z2QybDBhQ0IxYm1sbWIzSnRhWFI1SUhKbGNYVnBjbVZ0Wlc1MElpa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JtWVd4elpTQW1KaUFpWlhod1pXTjBaV1FnWVNCdFpXMXZjbmtnYjJKcVpXTjBJR1JsWTJ4aGNtRjBhVzl1SWlrQVZFbE9WRjlCVTFORlVsUW9VbVZ6YjJ4MlpYSXNJR1poYkhObElDWW1JQ0oxYm1WNGNHVmpkR1ZrSUdOaGJHd2daWGh3Y21WemMybHZiaUIwZVhCbElpa0FWRWxPVkY5QlUxTkZVbFFvVkhsd1pTd2dabUZzYzJVZ0ppWWdJbFZ1Ym1GdFpXUWdiM1psY25KcFpHVWdZWEp5WVhrZ1kyOTFiblFnWTJ4dmJtVWdibTkwSUdGMllXbHNZV0pzWlNJcEFGUkpUbFJmUVZOVFJWSlVLRlI1Y0dVc0lHWmhiSE5sSUNZbUlDSk9ZVzFsWkNCdmRtVnljbWxrWlNCaGNuSmhlU0JqYjNWdWRDQmpiRzl1WlNCdWIzUWdZWFpoYVd4aFlteGxJaWtBSUNrQUx5b2diMlptYzJWMEtBQXBMQ0IzYjNKa2N5Z0FabTl5ZDJGeVpGOXdiMmx1ZEdWeUtBQlRZVzF3YkdWeUtBQW5JSEpsWm1WeVpXNWpaWE1nYlhWc2RHbHdiR1VnZG1GeWFXRmliR1Z6SUhSb1lYUWdkWE5sSUhSb1pTQnpZVzFsSUhKbGMyOTFjbU5sSUdKcGJtUnBibWNnUUdkeWIzVndLQUJBYkc5allYUnBiMjRvQUhOMGIzSmxJSFI1Y0dVZ2IyWWdRR0oxYVd4MGFXNG9BQzRnUTI5dWMybGtaWElnYzJWMGRHbHVaeUJBWVd4cFoyNG9BQ2tnWVd4cFoyNG9BR2x1ZEdWeWJtRnNLQUJ6ZDJsMFkyZ29BQ2tzSUVCaWFXNWthVzVuS0FCM2IzSnJaM0p2ZFhCZmMybDZaU2dBUUhOcGVtVW9BQ2tnYzJsNlpTZ0FUV0YwWlhKcFlXeHBlbVVvQUVOdmJuWmxjblJXWVd4MVpTZ0FhVzUwWlhKd2IyeGhkR1VvQUZSbGVIUjFjbVVvQUhCcGNHVW9BRlZ6WVdkbEtBQnpZVzF3YkdWa1gybHRZV2RsS0FCQWMzUnlhV1JsS0FBc0lHbGtLQUJrYVdGbmJtOXpkR2xqS0FBK0tBQmhjbkpoZVNCamIzVnVkQ0FvQUNrZ1pHOWxjeUJ1YjNRZ2JXRjBZMmdnWW14dlkyc25jeUJ3Y21Wa1pXTmxjM052Y2lCamIzVnVkQ0FvQUVsdWRtRnNhV1FnWlhocGRDQW9BQ2tnWlhoalpXVmtjeUIwYUdVZ2JHbHRhWFFnS0FBcElHaGhjeUJsZUdObFpXUmxaQ0IwYUdVZ2JHbHRhWFFnS0FCT2RXMWlaWElnYjJZZ2JHOWpZV3dnZG1GeWFXRmliR1Z6SUNnblJuVnVZM1JwYjI0bklGTjBiM0poWjJVZ1EyeGhjM01wSUdWNFkyVmxaR1ZrSUhSb1pTQjJZV3hwWkNCc2FXMXBkQ0FvQUU1MWJXSmxjaUJ2WmlCSGJHOWlZV3dnVm1GeWFXRmliR1Z6SUNoVGRHOXlZV2RsSUVOc1lYTnpJRzkwYUdWeUlIUm9ZVzRnSjBaMWJtTjBhVzl1SnlrZ1pYaGpaV1ZrWldRZ2RHaGxJSFpoYkdsa0lHeHBiV2wwSUNnQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUFptWnpaWFFnZEc4Z1ltVWdiMllnZEhsd1pTQnphWHBsWDNRZ0tBQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lFNTFiU0JGYkdWdFpXNTBjeUIwYnlCaVpTQnZaaUIwZVhCbElITnBlbVZmZENBb0FFbHNiR1ZuWVd3Z2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdLQUJKYm5aaGJHbGtJRzUxYldKbGNpQnZaaUJpYVhSeklDZ0FUblZ0WW1WeUlHOW1JRTl3Vkhsd1pWTjBjblZqZENCdFpXMWlaWEp6SUNnQVQzQlFhR2tuY3lCdWRXMWlaWElnYjJZZ2FXNWpiMjFwYm1jZ1lteHZZMnR6SUNnQVFtRmpheTFsWkdkbGN5QW9BSFZ1YzNWd2NHOXlkR1ZrSUdsdFlXZGxJRzl3WlhKaGJtUnpJQ2dBUVNCbWRXNWpkR2x2YmlBb0FFNTFiV0psY2lCdlppQW9iR2wwWlhKaGJDd2diR0ZpWld3cElIQmhhWEp6SUdsdUlFOXdVM2RwZEdOb0lDZ0FmU0JsYkhObElHbG1JQ2dBUUhOcGVtVWdiWFZ6ZENCaVpTQmhkQ0JzWldGemRDQmhjeUJpYVdjZ1lYTWdkR2hsSUhSNWNHVW5jeUJ6YVhwbElDZ0FTVzUyWVd4cFpDQmlZV05yWldSblpTQW9BSFZ6WlNCdlppQjJZWEpwWVdKc1pTQmhaR1J5WlhOeklITndZV05sSUNkd2RYTm9YMk52Ym5OMFlXNTBKeUJ5WlhGMWFYSmxjeUJsYm1GaWJHbHVaeUJsZUhSbGJuTnBiMjRnSjJOb2NtOXRhWFZ0WDJWNGNHVnlhVzFsYm5SaGJGOXdkWE5vWDJOdmJuTjBZVzUwSndCallXNXViM1FnYlc5a2FXWjVJQ2RzWlhRbkFHTnZibk5wWkdWeUlHTm9ZVzVuYVc1bklDZGpiMjV6ZENjZ2RHOGdKMnhsZENjQUlHTmhibTV2ZENCaVpTQjFjMlZrSUdGeklIUm9aU0IwZVhCbElHOW1JR0VnSjJ4bGRDY0FablZ1WTNScGIyNHRjMk52Y0dVZ0ozWmhjaWNBYlc5a2RXeGxMWE5qYjNCbElDZDJZWEluQUZSeVlYWmxjbk5sUTJGc2JFTm9ZV2x1S0NrZ0oyWnliMjBuSUdSdlpYTWdibTkwSUhSeVlXNXphWFJwZG1Wc2VTQmpZV3hzSUNkMGJ5Y0FiVzlrZFd4bExYTmpiM0JsSUNkMllYSW5JRzExYzNRZ2JtOTBJSFZ6WlNCaFpHUnlaWE56SUhOd1lXTmxJQ2RtZFc1amRHbHZiaWNBSnlCallXNXViM1FnYUdGMlpTQmhiaUJwYm1sMGFXRnNhWHBsY2k0Z2RtRnlJR2x1YVhScFlXeHBlbVZ5Y3lCaGNtVWdiMjVzZVNCemRYQndiM0owWldRZ1ptOXlJSFJvWlNCaFpHUnlaWE56SUhOd1lXTmxjeUFuY0hKcGRtRjBaU2NnWVc1a0lDZG1kVzVqZEdsdmJpY0FTVzFoWjJVZ1QzQmxjbUZ1WkNCRGIyNXpkRTltWm5ObGRDQmpZVzV1YjNRZ1ltVWdkWE5sWkNCM2FYUm9JRU4xWW1VZ1NXMWhaMlVnSjBScGJTY0FTVzFoWjJVZ1QzQmxjbUZ1WkNCUFptWnpaWFFnWTJGdWJtOTBJR0psSUhWelpXUWdkMmwwYUNCRGRXSmxJRWx0WVdkbElDZEVhVzBuQUVsdFlXZGxJRTl3WlhKaGJtUWdRMjl1YzNSUFptWnpaWFJ6SUdOaGJtNXZkQ0JpWlNCMWMyVmtJSGRwZEdnZ1EzVmlaU0JKYldGblpTQW5SR2x0SndBcElHMTFjM1FnWW1VZ0oySnZiMnduQUdOaGJtNXZkQ0J0YjJScFpua2dKMjkyWlhKeWFXUmxKd0FnWTJGdWJtOTBJR0psSUhWelpXUWdZWE1nZEdobElIUjVjR1VnYjJZZ1lTQW5iM1psY25KcFpHVW5BQ2R2Wm1aelpYUWdLeUFuWTI5MWJuUW5JRzExYzNRZ1ltVWdiR1Z6Y3lCMGFHRnVJRzl5SUdWeGRXRnNJSFJ2SUhSb1pTQmlhWFFnZDJsa2RHZ2diMllnSjJVbkFGMG5BR0Z5Y21GNUlIZHBkR2dnWVc0Z0oyOTJaWEp5YVdSbEp5QmxiR1Z0Wlc1MElHTnZkVzUwSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnWVhNZ2RHaGxJSE4wYjNKbElIUjVjR1VnYjJZZ1lTQW5kbUZ5UEhkdmNtdG5jbTkxY0Q0bkFDa2diWFZ6ZENCaVpTQW5kbVZqTXp4MU16SStKd0FwSUcxMWMzUWdZbVVnSjNabFl6UThaak15UGljQWJXRjBjbWw0SUdWc1pXMWxiblFnZEhsd1pTQnRkWE4wSUdKbElDZG1NekluSUc5eUlDZG1NVFluQUhabFkzUnZjaUJsYkdWdFpXNTBJSFI1Y0dVZ2JYVnpkQ0JpWlNBblltOXZiQ2NzSUNkbU16SW5MQ0FuWmpFMkp5d2dKMmt6TWljZ2IzSWdKM1V6TWljQUtTQnRkWE4wSUdKbElDZDFNekluQUNrZ2JYVnpkQ0JpWlNBblpqTXlKd0J2Y0dGeGRXVW9Kd0JpZVNBbkFDQmllWFJsY3l3Z1luVjBJQ2NBWTI5dWMzUWdKd0JKYm5aaGJHbGtJR1Y0ZEdWdVpHVmtJR2x1YzNSeWRXTjBhVzl1SUdsdGNHOXlkQ0FuQUdsdWRtRnNhV1FnYldWdFltVnlJR0ZqWTJWemMyOXlJR1Y0Y0hKbGMzTnBiMjR1SUVWNGNHVmpkR1ZrSUhabFkzUnZjaUJ2Y2lCemRISjFZM1FzSUdkdmRDQW5BR052Ym5OMElHRnpjMlZ5ZEdsdmJpQmpiMjVrYVhScGIyNGdiWFZ6ZENCaVpTQmhJR0p2YjJ3c0lHZHZkQ0FuQUNjc0lHZHZkQ0FuQUQ0Z2FYTWdkWE5sWkNCaWVTQmxiblJ5ZVNCd2IybHVkQ0FuQUdOaGJHeGxaQ0JpZVNCbGJuUnllU0J3YjJsdWRDQW5BSGRvYVd4bElHRnVZV3g1ZW1sdVp5QmxiblJ5ZVNCd2IybHVkQ0FuQUd4bGRDQW5BSFZ1Y21WemIyeDJaV1FnWTJGc2JDQjBZWEpuWlhRZ0p3QnpkSEoxWTNRZ0p3QjBaWGhsYkNCbWIzSnRZWFFnSndCaFkyTmxjM01nSndCaGJHbGhjeUFuQUNjZ1kyRnVibTkwSUdKbElISmxjSEpsYzJWdWRHVmtJR0Z6SUNjQVpYaHdaV04wWldRZ0p6d25JR1p2Y2lBbkFISmxaR1ZtYVc1cGRHbHZiaUJ2WmlCd1lYSmhiV1YwWlhJZ0p3QjFibkpsYzI5c2RtVmtJR2xrWlc1MGFXWnBaWElnSndCSmJuWmhiR2xrSUZOUVNWSXRWaUJ0WVdkcFl5QnVkVzFpWlhJZ0p3QW5MQ0J0WlcxaVpYSWdKd0IyWVhJZ0p3QmpZVzV1YjNRZ1ltbDBZMkZ6ZENCMGJ5QW5BQ2NnYzJWMElIUnZJQ2NBY0dGemMybHVaeUJ1YjI0dGRXNXBabTl5YlNCd2IybHVkR1Z5SUhSdklDY0FJR0Z5WjNWdFpXNTBjeUJwYmlCallXeHNJSFJ2SUNjQUp5QjBieUFuQUdOaGJHeGxaQ0JpZVNCbWRXNWpkR2x2YmlBbkFHSjFhV3gwYVc0Z1puVnVZM1JwYjI0Z0p3QmpZVzV1YjNRZ1kyRnNiQ0JpZFdsc2RDMXBiaUJtZFc1amRHbHZiaUFuQUdsbmJtOXlhVzVuSUhKbGRIVnliaUIyWVd4MVpTQnZaaUJtZFc1amRHbHZiaUFuQUU5d1JHVmpiM0poZEdVZ1pHVmpiM0poZEdsdmJpQW5BR2xuYm05eWFXNW5JSEpsZEhWeWJpQjJZV3gxWlNCdlppQmlkV2xzZEdsdUlDY0FablZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlJRzltSUhCdmFXNTBaWElnZEhsd1pTQmpZVzV1YjNRZ1ltVWdhVzRnSndCallXNXViM1FnWVhOemFXZHVJQ2NBSUdKNWRHVnpJR0psZEhkbFpXNGdKd0JFYVdRZ2VXOTFJRzFsWVc0Z0p3QmpZVzV1YjNRZ1ltbDBZMkZ6ZENCbWNtOXRJQ2NBSnlCbWNtOXRJQ2NBYVc1MFpYSndiMnhoZEdsdmJpQnpZVzF3YkdsdVp5QW5BR052Ym5SbGJuUnpJRzltSUhCdmFXNTBaWElnYldGNUlHSmxZMjl0WlNCdWIyNHRkVzVwWm05eWJTQmhablJsY2lCallXeHNhVzVuSUNjQWMyVjJaWEpwZEhrZ2IyWWdKd0FuSUdOaGJtNXZkQ0JpWlNCMWMyVmtJSFJ2SUdOdmJuTjBjblZqZENCaGJpQmhjbkpoZVNCdlppQW5BSEpsWkdWbWFXNXBkR2x2YmlCdlppQW5BSEpsWkdWamJHRnlZWFJwYjI0Z2IyWWdKd0JqYjI1MGFXNTFaU0J6ZEdGMFpXMWxiblFnWW5sd1lYTnpaWE1nWkdWamJHRnlZWFJwYjI0Z2IyWWdKd0J5WlhSMWNtNGdkbUZzZFdVZ2IyWWdKd0JoZEc5dGFXTWdjM1ZpTFhSNWNHVWdiMllnSndBbklHOW1JQ2NBWW5WcGJIUnBiaUIyWVd4MVpTQW5BRlZ1YzNWd2NHOXlkR1ZrSUdGMGRISnBZblYwWlNBbkFHUjFjR3hwWTJGMFpTQnpkMmwwWTJnZ1kyRnpaU0FuQUdOaGJtNXZkQ0J0YjJScFpua2djbVZoWkMxdmJteDVJSFI1Y0dVZ0p3QmpZVzV1YjNRZ2MzUnZjbVVnYVc1MGJ5QmhJSEpsWVdRdGIyNXNlU0IwZVhCbElDY0FZMkZ1Ym05MElHbHVaR1Y0SUhSNWNHVWdKd0JoY25KaGVTQmpiM1Z1ZENCdGRYTjBJR1YyWVd4MVlYUmxJSFJ2SUdFZ1kyOXVjM1JoYm5RZ2FXNTBaV2RsY2lCbGVIQnlaWE56YVc5dUxDQmlkWFFnYVhNZ2RIbHdaU0FuQUNjZ2RHOGdkSGx3WlNBbkFHbHVkR1Z5Y0c5c1lYUnBiMjRnZEhsd1pTQW5BQ0IxYm1oaGJtUnNaV1FnWW5WcGJIUnBiaUIwZVhCbElDY0FkVzVwWm05eWJTQnpkRzl5WVdkbElISmxjWFZwY21WeklIUm9ZWFFnWVhKeVlYa2daV3hsYldWdWRITWdZWEpsSUdGc2FXZHVaV1FnZEc4Z01UWWdZbmwwWlhNc0lHSjFkQ0JoY25KaGVTQmxiR1Z0Wlc1MElHOW1JSFI1Y0dVZ0p3QWdhWE1nYjJZZ2RIbHdaU0FuQUhaaGNtbGhZbXhsY3lCdlppQjBlWEJsSUNjQWRHaGxJRzltWm5ObGRDQnZaaUJoSUhOMGNuVmpkQ0J0WlcxaVpYSWdiMllnZEhsd1pTQW5BR05oYm01dmRDQmhjSEJzZVNCQWJHOWpZWFJwYjI0Z2RHOGdaR1ZqYkdGeVlYUnBiMjRnYjJZZ2RIbHdaU0FuQUhaaGJIVmxJR1Y0Y0hKbGMzTnBiMjRnYjJZZ2RIbHdaU0FuQUdOaGJtNXZkQ0JrWlhKbFptVnlaVzVqWlNCbGVIQnlaWE56YVc5dUlHOW1JSFI1Y0dVZ0p3QmpZVzV1YjNRZ2JXOWthV1o1SUhaaGJIVmxJRzltSUhSNWNHVWdKd0JqWVc1dWIzUWdZMjl1ZG1WeWRDQjJZV3gxWlNCdlppQjBlWEJsSUNjQUp5QjNhWFJvSUhaaGJIVmxJRzltSUhSNWNHVWdKd0JVZVhCbElDY0FkVzV5WldOdloyNXBlbVZrSUdScFlXZHViM04wYVdNZ2NuVnNaU0FuQUVGVFZDQnViMlJsSUNjQWIzWmxjbkpwWkdVZ0p3QW5JR05oYm01dmRDQmlaU0IxYzJWa0lHbHVJR0ZrWkhKbGMzTWdjM0JoWTJVZ0p3QW5JSFZ6WldRZ2FXNGdZV1JrY21WemN5QnpjR0ZqWlNBbkFDY2dhVzRnWVdSa2NtVnpjeUJ6Y0dGalpTQW5BSFpoY2lCdlppQmhaR1J5WlhOeklITndZV05sSUNjQUp5d2dabTkxYm1RZ0p3QW5JRzExYzNRZ1ltVWdiR1Z6Y3lCMGFHRnVJSFJvWlNCSlJDQmliM1Z1WkNBbkFDY2dZVzVrSUNjQVJXNTBjbmtnY0c5cGJuUWdhV1FnSndCVmJtbG1iM0p0UTI5dWMzUmhiblFnYVdRZ0p3QlFkWE5vUTI5dWMzUmhiblFnYVdRZ0p3QlRkRzl5WVdkbElHSjFabVpsY2lCcFpDQW5BRk4wYjNKaFoyVkNkV1ptWlhJZ2FXUWdKd0JWYm1sbWIzSnRJR2xrSUNjQWRIbHdaU0JwYmlCemRISjFZM1IxY21VZ1kyOXVjM1J5ZFdOMGIzSWdaRzlsY3lCdWIzUWdiV0YwWTJnZ2MzUnlkV04wSUcxbGJXSmxjaUIwZVhCbE9pQmxlSEJsWTNSbFpDQW5BQ2NzSUdWNGNHVmpkR1ZrSUNjQWNtVjBkWEp1SUhOMFlYUmxiV1Z1ZENCMGVYQmxJRzExYzNRZ2JXRjBZMmdnYVhSeklHWjFibU4wYVc5dUlISmxkSFZ5YmlCMGVYQmxMQ0J5WlhSMWNtNWxaQ0FuQUVsRUlDY0FVbVZ6ZFd4MElEeHBaRDRnSndBZ2FXNGdkR2hsSUhOMGNuVmpkSFZ5WlNBOGFXUStJQ2NBSnlBdFBpQW5BR1poYVd4bFpDQjBieUJtYVc1a0lHUmxjR1Z1WkdWdVkza2dhVzVtYnlCbWIzSWdaV1JuWlRvZ0p3QnBibVJsZUNCdGRYTjBJR0psSUc5bUlIUjVjR1VnSjJrek1pY2diM0lnSjNVek1pY3NJR1p2ZFc1a09pQW5BQ1ltQUZzbEFDQnBibVJsZUNBbEFFRmpZMlZ6Y3lCamFHRnBiaUFsQUNCcGN5QnZkWFFnYjJZZ1ltOTFibVJ6SUdadmNpQnpkSEoxWTNSMWNtVWdKUUFnYVhNZ1lTQnViMjR0WTI5dWMzUmhiblFnYVc1a1pYZ2dhVzUwYnlCaElITjBjblZqZEhWeVpTQWxBR052YlhCdmMybDBaU0IwZVhCbElDVUFRV05qWlhOeklHTm9ZV2x1SUhkcGRHZ2dkVzVyYm05M2JpQnZjaUJwYm5aaGJHbGtJSEJ2YVc1MFpXVWdkSGx3WlNBbEFDQjNhWFJvSUdKaFpDQjBlWEJsSUNVQUlDQTdJR2xrSUNVQWFXNTJZV3hwWkNCMlpXTjBiM0p6YUhWbVpteGxJRWxFSUNVQVUzQmxZMGxrSUhSdmJ5QnNZWEpuWlM0Z1YwZFRUQ0J2ZG1WeWNtbGtaU0JKUkhNZ2JYVnpkQ0JpWlNCaVpYUjNaV1Z1SURBZ1lXNWtJRFkxTlRNMU9pQkpSQ0FsQUNRQVRXVnRZbVZ5SUNNQU1DQW1KaUFpUVhKeVlYa2dkSGx3WlNCa1pXWnBibWwwYVc5dUlHbHpJR052Y25KMWNIUWlBREFnSmlZZ0ltSjFaeUJwYmlCemNIWlBjR052WkdWSmMwTnZibk4wWVc1MEtDa2diM0lnY21WemRXeDBJSFI1Y0dVZ2FYTnVKM1FnYVc1MElnQmtaV052Y21GMGFXOXVMbkJoY21GdGN5Z3BMbk5wZW1Vb0tTQTlQU0F4SUNZbUlDSkhjbUZ0YldGeUlHVnVjM1Z5WlhNZ1EyOXRjRzl1Wlc1MElHaGhjeUJ2Ym1VZ2NHRnlZVzFsZEdWeUlnQmtaV052Y21GMGFXOXVMbkJoY21GdGN5Z3BMbk5wZW1Vb0tTQTlQU0F4SUNZbUlDSkhjbUZ0YldGeUlHVnVjM1Z5WlhNZ1ZXNXBabTl5YlVsa0lHaGhjeUJ2Ym1VZ2NHRnlZVzFsZEdWeUlnQm1ZV3h6WlNBbUppQWljMmh2ZFd4a0lHaGhkbVVnWTJGMVoyaDBJSFJvYVhNZ1pXRnliR2xsY2lJQVptRnNjMlVnSmlZZ0lsVnVaWGh3WldOMFpXUWdaR1ZqYjNKaGRHbHZiaUJwYm5OMGNuVmpkR2x2YmlJQWFXNWZablZ1WTNScGIyNWZZbTlrZVNncElEMDlJR1poYkhObElDWW1JQ0pTWldkcGMzUmxja1oxYm1OMGFXOXVJR05oYmlCdmJteDVJR0psSUdOaGJHeGxaQ0IzYUdWdUlIQmhjbk5wYm1jZ2RHaGxJR0pwYm1GeWVTQnZkWFJ6YVdSbElDSWdJbTltSUdGdWIzUm9aWElnWm5WdVkzUnBiMjRpQUdsdVgyWjFibU4wYVc5dVgySnZaSGtvS1NBOVBTQjBjblZsSUNZbUlDSlNaV2RwYzNSbGNrWjFibU4wYVc5dVJXNWtJR05oYmlCdmJteDVJR0psSUdOaGJHeGxaQ0IzYUdWdUlIQmhjbk5wYm1jZ2RHaGxJR0pwYm1GeWVTQWlJQ0pwYm5OcFpHVWdiMllnWVc1dmRHaGxjaUJtZFc1amRHbHZiaUlBTUNBbUppQWlWVzVsZUhCbFkzUmxaQ0J5WVhrZ2RISmhZMmx1WnlCaWRXbHNkR2x1SWdCdmNtbG5hVzVoYkY5MGVYQmxMVDVyYVc1a0tDa2dQVDBnYm1WM1gzUjVjR1V0UG10cGJtUW9LU0FtSmlBaVZIbHdaWE1nYlhWemRDQmlaU0IwYUdVZ2MyRnRaU0JtYjNJZ2NtVndiR0ZqWlcxbGJuUXVYRzRpQUdOMWNuSmxiblJmWW14dlkydGZJQ1ltSUNKU1pXZHBjM1JsY2t4dmIzQk5aWEpuWlNCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYUdWdUlHTmhiR3hsWkNCM2FYUm9hVzRnWVNCaWJHOWpheUlBWTNWeWNtVnVkRjlpYkc5amExOGdKaVlnSWxKbFoybHpkR1Z5UW14dlkydEZibVFnWTJGdUlHOXViSGtnWW1VZ1kyRnNiR1ZrSUhkb1pXNGdjR0Z5YzJsdVp5QmhJR0pwYm1GeWVTQnBiaUJoSUdKc2IyTnJJZ0JqZFhKeVpXNTBYMkpzYjJOclh5QTlQU0J1ZFd4c2NIUnlJQ1ltSUNKU1pXZHBjM1JsY2taMWJtTjBhVzl1VUdGeVlXMWxkR1Z5SUdOaGJpQnZibXg1SUdKbElHTmhiR3hsWkNCM2FHVnVJSEJoY25OcGJtY2dkR2hsSUdKcGJtRnllU0FpSUNKdmRYUnphV1JsSUc5bUlHRWdZbXh2WTJzaUFHbHVYMkpzYjJOcktDa2dQVDBnWm1Gc2MyVWdKaVlnSWxKbFoybHpkR1Z5Um5WdVkzUnBiMjVRWVhKaGJXVjBaWElnWTJGdUlHOXViSGtnWW1VZ1kyRnNiR1ZrSUhkb1pXNGdjR0Z5YzJsdVp5QjBhR1VnWW1sdVlYSjVJQ0lnSW05MWRITnBaR1VnYjJZZ1lTQmliRzlqYXlJQVkzVnljbVZ1ZEY5aWJHOWphMThnUFQwZ2JuVnNiSEIwY2lBbUppQWlVbVZuYVhOMFpYSWdRbXh2WTJzZ1kyRnVJRzl1YkhrZ1ltVWdZMkZzYkdWa0lIZG9aVzRnY0dGeWMybHVaeUJoSUdKcGJtRnllU0J2ZFhSemFXUmxJRzltSUNJZ0ltRWdRbUZ6YVdOQ2JHOWpheUlBWm1Gc2MyVWdKaVlnSW5WdWFHRnVaR3hsWkNCdmNpQnBiblpoYkdsa0lHTmhjMlVpQUdaaGJITmxJQ1ltSUNJOGNtVnpkV3gwTFdsa1BpQnBjeUJ1YjNRZ2MzVndjRzl6WldRZ2RHOGdZbVVnYUdGdVpHeGxaQ0JvWlhKbElnQm1ZV3h6WlNBbUppQWlWVzVsZUhCbFkzUmxaQ0IwZVhCbElnQXhJRDA5SURBZ0ppWWdJazV2ZENCa1pXWnBibVZrSUhSNWNHVWlBR1poYkhObElDWW1JQ0pWYm1oaGJtUnNaV1FnZEhsd1pTSUFkMjl5WkhNdWMybDZaU2dwSUQwOUlERWdKaVlnSW1WNGNHVmpkR1ZrSUhSb1pTQnZjR1Z5WVc1a0lHOXViSGtnZEdGcmFXNW5JRzl1WlNCM2IzSmtJZ0F3SUNZbUlDSkpibk4wY25WamRHbHZiaUJ1YjNRZ1ptOTFibVFpQUNnaFNYTk1hVzVsU1c1emRDZ3BJSHg4SUdSaVoxOXNhVzVsTG1WdGNIUjVLQ2twSUNZbUlDSlBjQ2hPYnlsTWFXNWxJR0YwZEdGamFHbHVaeUIwYnlCUGNDaE9ieWxNYVc1bElHWnZkVzVrSWdBd0lDWW1JQ0pwYm1SbGVDQnZkWFFnYjJZZ1ltOTFibVFpQUdsdVpHVjRJRHdnYjNCbGNtRnVaSE5mTG5OcGVtVW9LU0FtSmlBaWIzQmxjbUZ1WkNCcGJtUmxlQ0J2ZFhRZ2IyWWdZbTkxYm1RaUFHeHBkR1Z5WVd4ZmQyOXlaSE5mYjNKZmFXUnpMbk5wZW1Vb0tTQTlQU0F4SUNZbUlDSkNiMjlzSUdOdmJuTjBZVzUwSUhOb2IzVnNaQ0JpWlNCa1pXTnNZWEpsWkNCM2FYUm9JRzl1WlNCdmNHVnlZVzVrSWdBeElEMDlJREFnSmlZZ0lsUjVjR1VnYm05MElHUmxabWx1WldRaUFHUmxZMnhoY21GMGFXOXVYM1I1Y0dWZklEMDlJRVoxYm1OMGFXOXVSR1ZqYkRvNmEwWjFibU4wYVc5dVJHVmpiRVJsWm1sdWFYUnBiMjRnSmlZZ0lsSmxaMmx6ZEdWeVFteHZZMnR6SUdOaGJpQnZibXg1SUdKbElHTmhiR3hsWkNCaFpuUmxjaUJrWldOc1lYSmhkR2x2Ymw5MGVYQmxYeUJwY3lCa1pXWnBibVZrSWdCbmNtOTFjRjlwZEdWeUlDRTlJR2xrWDNSdlgyUmxZMjl5WVhScGIyNWZhVzV6ZEhOZkxtVnVaQ2dwSUNZbUlDSlZibXR1YjNkdUlHZHliM1Z3SUVsRUlnQnBibk4wTG1sa0tDa2dKaVlnSWxCaGNuTmxjaUJsYm5OMWNtVnpJSFJvWlNCMFlYSm5aWFFnYjJZZ2RHaGxJR1JsWTI5eVlYUnBiMjRnYUdGeklHRnVJRWxFSWdCemRXTmpaWE56YjNKZlpuVnVZeUFtSmlBaVZHaGxJSE4xWTJObGMzTnZjaUJtZFc1amRHbHZiaUJqWVc1dWIzUWdZbVVnWlcxd2RIa3VJZ0J3YjNOMGIzSmtaWElnSmlZZ0lsUm9aU0J3YjNOMGIzSmtaWElnWm5WdVkzUnBiMjRnWTJGdWJtOTBJR0psSUdWdGNIUjVMaUlBY0hKbGIzSmtaWElnSmlZZ0lsUm9aU0J3Y21WdmNtUmxjaUJtZFc1amRHbHZiaUJqWVc1dWIzUWdZbVVnWlcxd2RIa3VJZ0IwWlhKdGFXNWhiQ0FtSmlBaVZHaGxJSFJsY20xcGJtRnNJR1oxYm1OMGFXOXVJR05oYm01dmRDQmlaU0JsYlhCMGVTNGlBRzV2WkdVZ0lUMGdiblZzYkhCMGNpQW1KaUFpUTJGdUozUWdaMlYwSUhSb1pTQm1jbTl1ZENCdlppQmhiaUJsYlhCMGVTQnNhWE4wTGlJQWJtOWtaU0FoUFNCdWRXeHNjSFJ5SUNZbUlDSkRZVzRuZENCblpYUWdkR2hsSUdKaFkyc2diMllnWVc0Z1pXMXdkSGtnYkdsemRDNGlBSFJvYVhNdFBrbHpTVzVCVEdsemRDZ3BJQ1ltSUNKRFlXNXViM1FnY21WdGIzWmxJR0VnYm05a1pTQm1jbTl0SUdFZ2JHbHpkQ0JwWmlCcGRDQnBjeUJ1YjNRZ2FXNGdZU0JzYVhOMExpSUFjRzl6TFQ1SmMwbHVRVXhwYzNRb0tTQW1KaUFpVUc5eklITm9iM1ZzWkNCaGJISmxZV1I1SUdKbElHbHVJR0VnYkdsemRDNGlBRUZ6VG5Wc2JFTnZibk4wWVc1MEtDa2dKaVlnSWsxMWMzUWdZbVVnWVNCbWJHOWhkR2x1WnlCd2IybHVkQ0JqYjI1emRHRnVkQzRpQUVGelRuVnNiRU52Ym5OMFlXNTBLQ2tnSmlZZ0lrMTFjM1FnWW1VZ1lXNGdhVzUwWldkbGNpQmpiMjV6ZEdGdWRDNGlBR1poYkhObElDWW1JQ0pVY21sbFpDQjBieUJqYjIxd1lYSmxJSFIzYnlCcGJuWmhiR2xrSUVOdmJuTjBZVzUwSUdsdWMzUmhibU5sY3k0aUFIUjVjR1V5TFQ1dmNHTnZaR1VvS1NBOVBTQnpjSFk2T2s5d09qcFBjRlI1Y0dWVGRISjFZM1FnSmlZZ0luUjVjR1V5SUcxMWMzUWdZbVVnWVc0Z1QzQlVlWEJsVTNSeWRXTjBJR2x1YzNSeWRXTjBhVzl1TGlJQWRIbHdaVEV0UG05d1kyOWtaU2dwSUQwOUlITndkam82VDNBNk9rOXdWSGx3WlZOMGNuVmpkQ0FtSmlBaWRIbHdaVEVnYlhWemRDQmlaU0JoYmlCUGNGUjVjR1ZUZEhKMVkzUWdhVzV6ZEhKMVkzUnBiMjR1SWdCbGVIUXRQbTl3WTI5a1pTZ3BJRDA5SUhOd2RqbzZUM0E2T2s5d1JYaDBaVzV6YVc5dUlDWW1JQ0pGZUhCbFkzUnBibWNnWVc0Z1pYaDBaVzV6YVc5dUlHbHVjM1J5ZFdOMGFXOXVMaUlBYjNCMElDWW1JQ0pXWVd4cFpHRjBiM0lnYjNCMGFXOXVjeUJ0WVhrZ2JtOTBJR0psSUU1MWJHd3VJZ0FoWVhOelpYSjBYMlp2ZFc1a1gzUmxjbTFwYm1GMGFXNW5YMjUxYkd3Z0ppWWdJa1JwWkNCdWIzUWdabWx1WkNCMFpYSnRhVzVoZEdsdVp5QnVkV3hzSUdadmNpQjBhR1VnYzNSeWFXNW5MaUlBZEhsd1pTZ3BMVDVCYzBac2IyRjBLQ2t0UG5kcFpIUm9LQ2tnUFQwZ016SWdKaVlnSWs1dmRDQmhJRE15TFdKcGRDQm1iRzloZEdsdVp5QndiMmx1ZENCMllXeDFaUzRpQUdaaGJITmxJQ1ltSUNKSmJuWmhiR2xrSUhSaGNtZGxkQ0JsYm5acGNtOXViV1Z1ZENCMllXeDFaUzRpQUdaaGJITmxJQ1ltSUNKRVpYQnlaV05oZEdWa0lIUmhjbWRsZENCbGJuWnBjbTl1YldWdWRDQjJZV3gxWlM0aUFDaDBhU0E5UFNCMGFpQjhmQ0FoZEdrdFBrbHpVMkZ0WlNoMGFpa3BJQ1ltSUNKVWVYQmxJSEJ2YjJ3Z1kyOXVkR0ZwYm5NZ2RIZHZJSFI1Y0dWeklIUm9ZWFFnWVhKbElIUm9aU0J6WVcxbExpSUFabUZzYzJVZ0ppWWdJbFJ5YVdWa0lIUnZJR052YlhCMWRHVWdkR2hsSUdoaGMyZ2dkbUZzZFdVZ2IyWWdZVzRnYVc1MllXeHBaQ0JEYjI1emRHRnVkQ0JwYm5OMFlXNWpaUzRpQUNGMGFHbHpMVDVwYzE5elpXNTBhVzVsYkY4Z0ppWWdJbE5sYm5ScGJtVnNJRzV2WkdWeklHTmhibTV2ZENCaVpTQnRiM1psWkNCaGNtOTFibVF1SWdCa1pXWWdKaVlnSWtSbFptbHVhWFJwYjI0Z2FYTWdibTkwSUhKbFoybHpkR1Z5WldRdUlnQmtaV1lnSmlZZ0tDRmtaV1l0UGtoaGMxSmxjM1ZzZEVsa0tDa2dmSHdnWkdWbUlEMDlJRWRsZEVSbFppaGtaV1l0UG5KbGMzVnNkRjlwWkNncEtTa2dKaVlnSWtSbFptbHVhWFJwYjI0Z2FYTWdibTkwSUhKbFoybHpkR1Z5WldRdUlnQjJhWE5wZEdWa0xtTnZkVzUwS0dKc2IyTnJLU0E5UFNBd0lDWW1JQ0pOWVd4bWIzSnRaV1FnWjNKaGNHZ2hJZ0F3SUNZbUlDSlZibkpsWVdOb1lXSnNaU0VpQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJ2ZFhSbGNtMXZjM1FnWTI5dWMzUnlkV04wSUdseklHNXZkQ0JoSUdaMWJtTjBhVzl1UHlFQWIzQmxjbUYwYjNJZ2ZpQUFiM0JsY21GMGIzSWdmSHdnQUc5d1pYSmhkRzl5SUh3Z0FGVnphVzVuSUhCdmFXNTBaWEp6SUhkcGRHZ2dUM0JUWld4bFkzUWdjbVZ4ZFdseVpYTWdZMkZ3WVdKcGJHbDBlU0FBVlhOcGJtY2dhVzFoWjJVdmMyRnRjR3hsY2lCM2FYUm9JRTl3VTJWc1pXTjBJSEpsY1hWcGNtVnpJR05oY0dGaWFXeHBkSGtnQUVkbGJtVnlZWFJwYm1jZ2RtRnlhV0ZpYkdVZ2NHOXBiblJsY25NZ2NtVnhkV2x5WlhNZ1kyRndZV0pwYkdsMGVTQUFWWE5wYm1jZ2NHOXBiblJsY25NZ2QybDBhQ0JQY0ZCb2FTQnlaWEYxYVhKbGN5QmpZWEJoWW1sc2FYUjVJQUE2SUUxbGJXOXllU0JUWlcxaGJuUnBZM01nVDNWMGNIVjBUV1Z0YjNKNVMwaFNJSEpsY1hWcGNtVnpJR05oY0dGaWFXeHBkSGtnQURvZ1RXVnRiM0o1SUZOamIzQmxJRkYxWlhWbFJtRnRhV3g1UzBoU0lISmxjWFZwY21WeklHTmhjR0ZpYVd4cGRIa2dBRG9nVFdWdGIzSjVJRk5sYldGdWRHbGpjeUJOWVd0bFZtbHphV0pzWlV0SVVpQnlaWEYxYVhKbGN5QmpZWEJoWW1sc2FYUjVJQUE2SUUxbGJXOXllU0JUWlcxaGJuUnBZM01nVFdGclpVRjJZV2xzWVdKc1pVdElVaUJ5WlhGMWFYSmxjeUJqWVhCaFltbHNhWFI1SUFCRFlYQmhZbWxzYVhSNUlBQjFibWxtYjNKdElITjBiM0poWjJVZ2NtVnhkV2x5WlhNZ2RHaGhkQ0IwYUdVZ2JuVnRZbVZ5SUc5bUlHSjVkR1Z6SUdKbGRIZGxaVzRnZEdobElITjBZWEowSUc5bUlIUm9aU0J3Y21WMmFXOTFjeUJ0WlcxaVpYSWdiMllnZEhsd1pTQnpkSEoxWTNRZ1lXNWtJSFJvWlNCamRYSnlaVzUwSUcxbGJXSmxjaUJpWlNCaElHMTFiSFJwY0d4bElHOW1JREUySUdKNWRHVnpMQ0JpZFhRZ2RHaGxjbVVnWVhKbElHTjFjbkpsYm5Sc2VTQUFhVzVrYVhKbFkzUnNlU0FBSUdOdmIzSmthVzVoZEdVZ1kyOXRjRzl1Wlc1MGN5d2dZblYwSUc5dWJIa2dBQ0JqYjIxd2IyNWxiblJ6TENCaWRYUWdaMmwyWlc0Z2IyNXNlU0FBVDNCVWVYQmxVblZ1ZEdsdFpVRnljbUY1TGdwR2IzSWdWblZzYTJGdUlFOXdWSGx3WlZKMWJuUnBiV1ZCY25KaGVTQmpZVzRnYjI1c2VTQUFVbVZ6ZFd4MElHbGtJRzltSUU5d1JHVmpiM0poZEdsdmJrZHliM1Z3SUdOaGJpQnZibXg1SUFCTmIyUjFiR1VnYUdGeklHbHVZMjl0Y0d4bGRHVWdhR1ZoWkdWeU9pQnZibXg1SUFBZ2NISnZiWEIwWldRZ1lua2dBQ0JwY3lCMFlYSm5aWFJsWkNCaWVTQUFkMjl5YTJkeWIzVndJRzFsYlc5eWVTQmpZVzV1YjNRZ1ltVWdkWE5sWkNCaWVTQUFZblZwYkhRdGFXNGdZMkZ1Ym05MElHSmxJSFZ6WldRZ1lua2dBQ0JqYjI1emRISjFZM1FnYUdWaFpHVmtJR0o1SUFBK0lHbHpJR3hoZEdWeUlISmxabVZ5Wlc1alpXUWdZbmtnQUN3Z1QzQlVlWEJsVTNSeWRXTjBJR052Ym5SaGFXNXBibWNnWVc0Z1QzQlVlWEJsVW5WdWRHbHRaVUZ5Y21GNUlBQkZlSEJsWTNSbFpDQnVkVzFpWlhJZ2IyWWdZMjlzZFcxdWN5QmhibVFnZEdobElHTnZiSFZ0YmlCemFYcGxJRzltSUUxaGRISnBlQ0FBUTI5dGNHOXVaVzUwSUdsdVpHVjRJQUFnS0cxbGJXSmxjaUJwYm1SbGVDQUFUV1Z0WW1WeUlHbHVaR1Y0SUFCcGJuUmxjbTVoYkNCbGNuSnZjam9nYzNkcGVucHNaU0JwYm1SbGVDQUFTVzVrWlhnZ2FYTWdiM1YwSUc5bUlHSnZkVzVrY3l3Z1kyRnVJRzV2ZENCbWFXNWtJR2x1WkdWNElBQWdiM0JsY21GdVpDQnBibVJsZUNBQVNXNWtaWGdnQUNCemRHOXlZV2RsSUdOc1lYTnpJRzExYzNRZ1ptOXNiRzkzSUFCMWMyVnlMV1JsWm1sdVpXUWdhVzV3ZFhRZ0FDQndjbTkyYVdSbFpDQmlkWFFnQUZWdWFXWnZjbTBnWVc1a0lITm9ZV1JsY2lCemRHOXlZV2RsSUdKc2IyTnJJSFpoY21saFlteGxjeUJ0ZFhOMElBQW5JSEpsY1hWcGNtVnpJR0YwSUcxdmMzUWdBQ0JoYm1RZ1lYUWdiVzl6ZENBQVQzQlRaV3hsWTNScGIyNU5aWEpuWlNCdGRYTjBJR0psSUhSb1pTQnpaV052Ym1RdGRHOHRiR0Z6ZENBQUp5QnlaWEYxYVhKbGN5QmhkQ0JzWldGemRDQUFSWGh3WldOMFpXUWdRMjl2Y21ScGJtRjBaU0IwYnlCb1lYWmxJR0YwSUd4bFlYTjBJQUFnWVhKbmRXMWxiblFnYlhWemRDQmlaU0JoZENCc1pXRnpkQ0FBWTI5dWMzUmZZWE56WlhKMElBQmhjSEJsWVhJZ1lYTWdkR2hsSUdacGJtRnNJRzFsYldKbGNpQnZaaUJoYmlCUGNGUjVjR1ZUZEhKMVkzUXNJSFJvZFhNZ1kyRnVibTkwSUFCeVpYRjFhWEpsWkNCdWRXMWxjbWxqSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0lzSUdKMWRDQm5iM1FnQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJ6YUc5MWJHUWdhR0YyWlNCcGJtWmxjbkpsWkNCaElHTnZiWEJzWlhSbElHaGhibVJzWlNCMGVYQmxMaUJuYjNRZ0FHSnlaV0ZyTFdsbUlITjBZWFJsYldWdWRDQmpiMjVrYVhScGIyNGdiWFZ6ZENCaVpTQmliMjlzTENCbmIzUWdBR1p2Y2kxc2IyOXdJR052Ym1ScGRHbHZiaUJ0ZFhOMElHSmxJR0p2YjJ3c0lHZHZkQ0FBZDJocGJHVWdZMjl1WkdsMGFXOXVJRzExYzNRZ1ltVWdZbTl2YkN3Z1oyOTBJQUJoY25KaGVXVmtJR1JwYldWdWMybHZiaUJ0ZFhOMElHSmxJREpFSUc5eUlFTjFZbVV1SUVkdmRDQUFWWE5wYm1jZ1lTQXhOaTFpYVhRZ1pteHZZWFJwYm1jZ2NHOXBiblFnQUZWemFXNW5JR0VnTmpRdFltbDBJR1pzYjJGMGFXNW5JSEJ2YVc1MElBQWdaR1ZtYVc1cGRHbHZiaUJrYjJWeklHNXZkQ0JrYjIxcGJtRjBaU0JwZEhNZ2NHRnlaVzUwSUFBZ2FHRnpJR2x1ZG1Gc2FXUWdiV0Z6YXlCamIyMXdiMjVsYm5RZ0FHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1JYaHdJSFJ2SUdoaGRtVWdkR2hsSUhOaGJXVWdZMjl0Y0c5dVpXNTBJQUJsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRVY0Y0NCa1lYUmhJSFI1Y0dVZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCamIyMXdiMjVsYm5RZ0FFVjRjR1ZqZEdWa0lITmpZV3hoY2lCdmNHVnlZVzVrSUhSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z2RHaGxJR052YlhCdmJtVnVkQ0FBYVc1MllXeHBaQ0JqYjIxd2IyNWxiblFnQUN3Z1kyOXRjRzl1Wlc1MElBQjBlWEJsSUcxcGMyMWhkR05vSUdadmNpQmhjbWQxYldWdWRDQUFUV2x6YzJsdVp5QmhjbWQxYldWdWRDQUFJR1p2Y2lCMFlYSm5aWFFnWlc1MmFYSnZibTFsYm5RZ0FDQnBiblpoYkdsa0lISmxjM1ZzZENCMGVYQmxJR1p2Y2lCUGNGTndaV05EYjI1emRHRnVkQ0FBTVRZdFltbDBJRzl5SURNeUxXSnBkQ0FBVDNCVWVYQmxVblZ1ZEdsdFpVRnljbUY1SUcxMWMzUWdZbVVnWkdWamIzSmhkR1ZrSUhkcGRHZ2dRbXh2WTJzZ2FXWWdhWFFnQUNjZ2FYTWdZM1Z5Y21WdWRHeDVJR0YwSUc5bVpuTmxkQ0FBYVhNZ1lXNGdhVzF3Y205d1pYSnNlU0J6ZEhKaFpHUnNhVzVuSUhabFkzUnZjaUJoZENCdlptWnpaWFFnQUNCdmRtVnliR0Z3Y3lCd2NtVjJhVzkxY3lCdFpXMWlaWElnWlc1a2FXNW5JR0YwSUc5bVpuTmxkQ0FBSUc5d1pYSmhibVFnWVhRZ2QyOXlaQ0J2Wm1aelpYUWdBQ0JrYjJWeklHNXZkQ0JrYjIxcGJtRjBaU0JwZEhNZ1kyOXVkR2x1ZFdVZ2RHRnlaMlYwSUFBZ1luSmhibU5vWlhNZ2RHOGdkR2hsSUd4dmIzQWdZMjl1ZEdsdWRXVWdkR0Z5WjJWMElBQWdaR1ZqYkdGeVpYTWdhVzUyWVd4cFpDQmpiMjUwYVc1MVpTQjBZWEpuWlhRZ0FFTnZiblJwYm5WbElGUmhjbWRsZENBQUxDQmlkWFFnYVhNZ2JtOTBJR052Ym5SaGFXNWxaQ0JwYmlCMGFHVWdZWE56YjJOcFlYUmxaQ0JzYjI5d0lHTnZibk4wY25WamRDQUFJR1J2WlhNZ2JtOTBJSE4wY25WamRIVnlZV3hzZVNCa2IyMXBibUYwWlNCcGRITWdZMkZ6WlNCamIyNXpkSEoxWTNRZ0FFTnZibk4wY25WamRDQUFZMkZ1SjNRZ2FHRnVaR3hsSUdFZ2MzUnlkV04wSUhkcGRHZ2diVzl5WlNCMGFHRnVJRzl1WlNCa1pXTnZjbUYwYVc5dU9pQnpkSEoxWTNRZ0FDa2dLaThnYzNSeWRXTjBJQUE2SUdWNGNHVmpkR1ZrSUZCdmFXNTBaWElnZEc4Z1ltVWdZU0J3YjJsdWRHVnlJSFJ2SUdsdWRHVm5aWElnYjNJZ1pteHZZWFFnQUhWdWEyNXZkMjRnWm05eWJXRjBJQUFnWm5KdmJTQmpiMjUwYVc1MVpTQmpiMjV6ZEhKMVkzUWdjM1JoY25ScGJtY2dZWFFnQUNCcGN5QnViM1FnZEdobElHeGhjM1FnWW14dlkyc2dhVzRnZEdobElHTnZiblJwYm5WbElHTnZibk4wY25WamRDQnpkR0Z5ZEdsdVp5QmhkQ0FBUlhod1pXTjBaV1FnYm5WdFltVnlJRzltSUdOdmJIVnRibk1nYjJZZ2JHVm1kQ0J0WVhSeWFYZ2dZVzVrSUc1MWJXSmxjaUJ2WmlCeWIzZHpJQUFnWVc1a0lISnZkM01nQUNCb1lYTWdZbkpoYm1Ob1pYTWdkRzhnYlhWc2RHbHdiR1VnYjNSb1pYSWdZMkZ6WlNCamIyNXpkSEoxWTNRZ2RHRnlaMlYwY3lBQUlHaGhjeUJpY21GdVkyaGxjeUIwYnlCMGFHVWdZMkZ6WlNCamIyNXpkSEoxWTNRZ2RHaGhkQ0IwWVhKblpYUnpJQUJOZFd4MGFYQnNaU0JqWVhObElHTnZibk4wY25WamRITWdhR0YyWlNCaWNtRnVZMmhsY3lCMGJ5QjBhR1VnWTJGelpTQmpiMjV6ZEhKMVkzUWdkR2hoZENCMFlYSm5aWFJ6SUFCRFlYTmxJR052Ym5OMGNuVmpkQ0IwYUdGMElIUmhjbWRsZEhNZ0FFTmhjR0ZpYVd4cGRIa2dTVzFoWjJWRGRXSmxRWEp5WVhrZ2FYTWdjbVZ4ZFdseVpXUWdkRzhnWVdOalpYTnpJQUJXWVhKcFlXSnNaWE1nYVdSbGJuUnBabWxsWkNCM2FYUm9JSFJvWlNCVmJtbG1iM0p0UTI5dWMzUmhiblFnYzNSdmNtRm5aU0JqYkdGemN5QUFJSFZ6WlhNZ2MzUnZjbUZuWlNCamJHRnpjeUFBYVc1MllXeHBaQ0JUVUVsU0xWWWdjM1J2Y21GblpTQmpiR0Z6Y3lBQUxDQm9ZWE1nWVNCa2FYTmhiR3h2ZDJWa0lHbHVhWFJwWVd4cGVtVnlJQ1lnYzNSdmNtRm5aU0JqYkdGemN5QUFTWFJ6SUZOMGIzSmhaMlVnUTJ4aGMzTWdiM0JsY21GdVpDQnRkWE4wSUdKbElIUm9aU0J6WVcxbElHRnpJSFJvWlNCVGRHOXlZV2RsSUVOc1lYTnpJQUJQY0VWdWRISjVVRzlwYm5RZ2FXNTBaWEptWVdObGN5QnRkWE4wSUdKbElFOXdWbUZ5YVdGaWJHVnpJSGRwZEdnZ1UzUnZjbUZuWlNCRGJHRnpjeUJ2WmlCSmJuQjFkQ2d4S1NCdmNpQlBkWFJ3ZFhRb015a3VJRVp2ZFc1a0lGTjBiM0poWjJVZ1EyeGhjM01nQUZSaGNtZGxkQ0J2WmlCRGIyMXdiMjVsYm5RZ1pHVmpiM0poZEdsdmJpQnBjeUJwYm5aaGJHbGtPaUJ0ZFhOMElIQnZhVzUwSUhSdklHRWdVM1J2Y21GblpTQkRiR0Z6Y3lCdlppQkpibkIxZENneEtTQnZjaUJQZFhSd2RYUW9NeWt1SUVadmRXNWtJRk4wYjNKaFoyVWdRMnhoYzNNZ0FHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1RXVnRZbVZ5Y3lBQWJtOXVMVTl3VUdocElHbHVjM1J5ZFdOMGFXOXVjeUFBYVc1MllXeHBaQ0J0WVhSeWFYZ2daR2x0Wlc1emFXOXVjeUFBSUdoaGN5QmpiMngxYlc1eklBQWdhWE1nWkdWamJHRnlaV1FnWVhNZ2RHaGxJR1JsWm1GMWJIUWdkR0Z5WjJWMElHWnZjaUIwZDI4Z1QzQlRkMmwwWTJnZ2FXNXpkSEoxWTNScGIyNXpMQ0JoZENCaWJHOWphM01nQUNCcGN5QmtaV05zWVhKbFpDQmhjeUIwYUdVZ2MzZHBkR05vSUdOaGMyVWdkR0Z5WjJWMElHWnZjaUIwZDI4Z1QzQlRkMmwwWTJnZ2FXNXpkSEoxWTNScGIyNXpMQ0JoZENCaWJHOWphM01nQUNCamIyNTBZV2x1Y3lCdFpXMWlaWEp6SUhkcGRHZ2dRblZwYkhSSmJpQmtaV052Y21GMGFXOXVMaUJVYUdWeVpXWnZjbVVnZEdocGN5QUFVMk52Y0dVZ2FXUnpJRzExYzNRZ1ltVWdUM0JEYjI1emRHRnVkQ0IzYUdWdUlGTm9ZV1JsY2lCallYQmhZbWxzYVhSNUlHbHpJQUFnWTI5c2RXMXVjeXdnWW5WMElHRmpZMlZ6Y3lCcGJtUmxlQ0JwY3lBQUlHMWxiV0psY25NdUlFeGhjbWRsYzNRZ2RtRnNhV1FnYVc1a1pYZ2dhWE1nQUNCcGN5QjBiMjhnWW1sbkxpQk5ZWGdnYUdGdVpHeGxaQ0JwYm1SbGVDQnBjeUFBSUdOaGMyVWdjMlZzWldOMGIzSnpMQ0J0WVhnZ2FYTWdBQ0IzYjNKa2N5d2dZblYwSUhOMFlYUmxaQ0IzYjNKa0lHTnZkVzUwSUdseklBQTZJR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdTVzVrWlhobGN5QnBjeUFBTENCaWRYUWdaWGh3Y21WemMybHZiaUJwY3lBQUxDQmlkWFFnY0dGeWMyVmtJSFpsY25OcGIyNGdhWE1nQUNCd1lYSmhiV1YwWlhKekxDQnRZWGhwYlhWdElHbHpJQUFnYldWdFltVnljeXdnYldGNGFXMTFiU0JwY3lBQWMyaHBablFnY21sbmFIUWdkbUZzZFdVZ2JYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z2RHaGxJR0pwZENCM2FXUjBhQ0J2WmlCMGFHVWdiR2h6TENCM2FHbGphQ0JwY3lBQWMyaHBablFnYkdWbWRDQjJZV3gxWlNCdGRYTjBJR0psSUd4bGMzTWdkR2hoYmlCMGFHVWdZbWwwSUhkcFpIUm9JRzltSUhSb1pTQnNhSE1zSUhkb2FXTm9JR2x6SUFCQmNuSmhlU0JoWTJObGMzTWdhWE1nYjNWMElHOW1JR0p2ZFc1a2N5d2dZWEp5WVhrZ2MybDZaU0JwY3lBQVZtVmpkRzl5SUdGalkyVnpjeUJwY3lCdmRYUWdiMllnWW05MWJtUnpMQ0IyWldOMGIzSWdjMmw2WlNCcGN5QUFJR2hoY3lCaElHTnZibk4xYldWeUlHbHVJR0VnWkdsbVptVnlaVzUwSUdKaGMybGpJR0pzYjJOckxpQlVhR1VnWTI5dWMzVnRaWElnYVc1emRISjFZM1JwYjI0Z1BHbGtQaUJwY3lBQU95QmljbUZ1WTJnZ1lubHdZWE56WlhNZ0FDY2djbVZ4ZFdseVpYTWdBR1oxYm1OMGFXOXVJR1JsWTJ4aGNtVnpJQUJPYjI0dGMyVnRZVzUwYVdNZ1QzQkZlSFJKYm5OMElHMTFjM1FnYm05MElHRndjR1ZoY2lCaVpXWnZjbVVnZEhsd1pYTWdBR2x1ZG1Gc2FXUWdiM1YwWlhJZ2NISnZaSFZqZENCcGJuTjBjblZqZEdsdmJqb2dZbUZrSUhSNWNHVnpJQUJKYmlCTWIyZHBZMkZzSUdGa1pISmxjM05wYm1jZ2QybDBhQ0IyWVhKcFlXSnNaU0J3YjJsdWRHVnljeXdnZG1GeWFXRmliR1Z6SUFCSmJXRm5aU0JQY0dWeVlXNWtJRXh2WkNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dSWGh3YkdsamFYUk1iMlFnYjNCamIyUmxjeUFBSnlCeVpXWmxjbVZ1WTJWeklBQmhiR2xoY3lBQVRXRjBjbWw0SUdGalkyVnpjeUJwY3lCdmRYUWdiMllnWW05MWJtUnpMQ0J0WVhSeWFYZ2dhR0Z6SUFCcGJuUmxjbTVoYkNCbGNuSnZjam9nYzNSaGRHVnRaVzUwTFd4cGMzUWdjM1JoWTJzZ2MyaHZkV3hrSUdoaGRtVWdNU0JsYkdWdFpXNTBJR0oxZENCb1lYTWdBSE4zYVhSamFDQnpkR0YwWlcxbGJuUWdhR0Z6SUFBZ2MyRjVjeUJwZENCb1lYTWdBRU5oYkd4bFpDQm1kVzVqZEdsdmJpQm9ZWE1nQUNCd1lYSmhiV1YwWlhKekxDQmlkWFFnWm5WdVkzUnBiMjRnWTJGc2JDQm9ZWE1nQUNjdUlGUm9hWE1nYzNSeWRXTjBkWEpsSUdoaGN5QUFJR2x6SUc5MWRDQnZaaUJpYjNWdVpITXVJRlJvWlNCemRISjFZM1IxY21VZ2FHRnpJQUJTWlhOMWJIUWdWSGx3WlNCb1lYTWdBRzFoYkdadmNtMWxaQ0JQWm1aelpYUWdaR1ZqYjNKaGRHbHZiam9nWlhod1pXTjBaV1FnTVNCc2FYUmxjbUZzSUc5d1pYSmhibVFzSUdoaGN5QUFiV0ZzWm05eWJXVmtJRTFoZEhKcGVGTjBjbWxrWlNCa1pXTnZjbUYwYVc5dU9pQmxlSEJsWTNSbFpDQXhJR3hwZEdWeVlXd2diM0JsY21GdVpDd2dhR0Z6SUFBbklHaGhjeUFBWlhod1pXTjBaV1FnWVd4c0lHOXdaWEpoYm1SeklIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUlHRnpJQUJGZUhCbFkzUmxaQ0JwYm5CMWRDQjBieUJvWVhabElIUm9aU0J6WVcxbElIUnZkR0ZzSUdKcGRDQjNhV1IwYUNCaGN5QUFaWGh3WldOMFpXUWdZV3hzSUc5d1pYSmhibVJ6SUhSdklHaGhkbVVnZEdobElITmhiV1VnWW1sMElIZHBaSFJvSUdGeklBQkZlSEJsWTNSbFpDQkpiV0ZuWlNBblUyRnRjR3hsWkNCVWVYQmxKeUIwYnlCaVpTQjBhR1VnYzJGdFpTQmhjeUFBSUdOaGJtNXZkQ0JpWlNCeVpYQnlaWE5sYm5SbFpDQmhjeUFBSUdSbFkyOXlZWFJsWkNCaGN5QUFSWGh3WldOMFpXUWdhVzV3ZFhRZ2RHOGdZbVVnWVNCd2IybHVkR1Z5SUc5eUlHbHVkQ0J2Y2lCbWJHOWhkQ0IyWldOMGIzSWdBRVY0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR0VnY0c5cGJuUmxjaUJ2Y2lCcGJuUWdiM0lnWm14dllYUWdkbVZqZEc5eUlBQWdZWEJ3WldGeWN5QnBiaUIwYUdVZ1ltbHVZWEo1SUdKbFptOXlaU0JwZEhNZ1pHOXRhVzVoZEc5eUlBQjFibk4xY0hCdmNuUmxaQ0JwYldGblpTQmthVzFsYm5OcGIyNWhiR2wwZVNCbWIzSWdBR052WkdWamRuUmZZbmx1WVcxbFBIZGphR0Z5WDNRc0lHTm9ZWElzSUcxaWMzUmhkR1ZmZEQ0Nk9tTnZaR1ZqZG5SZllubHVZVzFsSUdaaGFXeGxaQ0IwYnlCamIyNXpkSEoxWTNRZ1ptOXlJQUIwYVcxbFgzQjFkRjlpZVc1aGJXVWdabUZwYkdWa0lIUnZJR052Ym5OMGNuVmpkQ0JtYjNJZ0FIUnBiV1ZmWjJWMFgySjVibUZ0WlNCbVlXbHNaV1FnZEc4Z1kyOXVjM1J5ZFdOMElHWnZjaUFBYlc5dVpYbHdkVzVqZEY5aWVXNWhiV1VnWm1GcGJHVmtJSFJ2SUdOdmJuTjBjblZqZENCbWIzSWdBRzUxYlhCMWJtTjBYMko1Ym1GdFpUeDNZMmhoY2w5MFBqbzZiblZ0Y0hWdVkzUmZZbmx1WVcxbElHWmhhV3hsWkNCMGJ5QmpiMjV6ZEhKMVkzUWdabTl5SUFCdWRXMXdkVzVqZEY5aWVXNWhiV1U4WTJoaGNqNDZPbTUxYlhCMWJtTjBYMko1Ym1GdFpTQm1ZV2xzWldRZ2RHOGdZMjl1YzNSeWRXTjBJR1p2Y2lBQVkyOXNiR0YwWlY5aWVXNWhiV1U4WTJoaGNqNDZPbU52Ykd4aGRHVmZZbmx1WVcxbElHWmhhV3hsWkNCMGJ5QmpiMjV6ZEhKMVkzUWdabTl5SUFCamRIbHdaVjlpZVc1aGJXVThkMk5vWVhKZmRENDZPbU4wZVhCbFgySjVibUZ0WlNCbVlXbHNaV1FnZEc4Z1kyOXVjM1J5ZFdOMElHWnZjaUFBWTNSNWNHVmZZbmx1WVcxbFBHTm9ZWEkrT2pwamRIbHdaVjlpZVc1aGJXVWdabUZwYkdWa0lIUnZJR052Ym5OMGNuVmpkQ0JtYjNJZ0FHTnZiR3hoZEdWZllubHVZVzFsUEhkamFHRnlYM1ErT2pwamIyeHNZWFJsWDJKNWJtRnRaU2h6YVhwbFgzUWdjbVZtY3lrZ1ptRnBiR1ZrSUhSdklHTnZibk4wY25WamRDQm1iM0lnQUNCamIyMXdiMjVsYm5SeklHWnZjaUFBVkc5dklHMWhibmtnVDNCR2RXNWpkR2x2YmxCaGNtRnRaWFJsY25NZ1ptOXlJQUFnYVhNZ2IzVjBJRzltSUdKdmRXNWtjeUJtYjNJZ0FHNXZJRzFoZEdOb2FXNW5JR052Ym5OMGNuVmpkRzl5SUdadmNpQUFPaUJsZUhCbFkzUmxaQ0JCYkdsaGMyVmtVRzlwYm5SbGNpQnZjaUJTWlhOMGNtbGpkRkJ2YVc1MFpYSWdabTl5SUFCcGJuUmxjbTVoYkNCbGNuSnZjam9nWTI5MWJHUnVKM1FnWm1sdVpDQnpZVzF3YkdWeUlHWnZjaUFBSUdseklIUm9aU0J0WlhKblpTQmliRzlqYXlCbWIzSWdBQ0JoYm1RZ1lXeHpieUIwYUdVZ2JXVnlaMlVnWW14dlkyc2dabTl5SUFCcGJuWmhiR2xrSUcxaGRISnBlQ0J6YVhwbElHWnZjaUFBZDJocGJHVWdhVzV6ZEdGdWRHbGhkR2x1WnlCeVpYUjFjbTRnZEhsd1pTQm1iM0lnQUdsdWRtRnNhV1FnZEdWNGRIVnlaU0IwZVhCbElHWnZjaUFBYVc1MFpYSnVZV3dnWlhKeWIzSTZJR052ZFd4a2JpZDBJR1pwYm1RZ2FXMWhaMlVnWm05eUlBQWdhWE1nYm05MElIWmhiR2xrSUdadmNpQUFibThnYldGMFkyaHBibWNnYjNabGNteHZZV1FnWm05eUlBQXBJR1p2Y2lBQVJYaHdaV04wWldRZ1ltOTBhQ0JKYldGblpTQlBjR1Z5WVc1a0lFZHlZV1FnYVdSeklIUnZJR0psSUdac2IyRjBJSE5qWVd4aGNuTWdiM0lnQUVSbFluVm5WSGx3WlZSbGJYQnNZWFJsVUdGeVlXMWxkR1Z5SUc5eUlBQkZlSEJsWTNSbFpDQkpiV0ZuWlNCUGNHVnlZVzVrSUVOdmJuTjBUMlptYzJWMElIUnZJR0psSUdsdWRDQnpZMkZzWVhJZ2IzSWdBRVY0Y0dWamRHVmtJRWx0WVdkbElFOXdaWEpoYm1RZ1QyWm1jMlYwSUhSdklHSmxJR2x1ZENCelkyRnNZWElnYjNJZ0FFVjRjR1ZqZEdWa0lITmpZV3hoY2lCdmNpQUFUM0JEYjI1emRHRnVkQ0IzYVhSb0lHRWdNekl0SUc5eUlEWTBMV0pwZEhNZ2FXNTBaV2RsY2lCelkyRnNZWElnZEhsd1pTQnZjaUFBSUhSdklHSmxJSFZ6WldRZ2IyNXNlU0IzYVhSb0lFZE1RMjl0Y0hWMFpTd2dUV1Z6YUU1V0xDQlVZWE5yVGxZc0lFMWxjMmhGV0ZRZ2IzSWdBRVJsWW5WblIyeHZZbUZzVm1GeWFXRmliR1VnYjNJZ1JHVmlkV2RNYjJOaGJGWmhjbWxoWW14bElIZHBkR2dnWVNBek1pMGdiM0lnQUU5d1EyOXVjM1JoYm5Rc0lFUmxZblZuUjJ4dlltRnNWbUZ5YVdGaWJHVXNJRzl5SUFCSmJpQk1iMmRwWTJGc0lHRmtaSEpsYzNOcGJtY3NJSFpoY21saFlteGxjeUJ0WVhrZ2JtOTBJR0ZzYkc5allYUmxJR0VnY0c5cGJuUmxjaUFBT2lCbGVIQmxZM1JsWkNCdWJ5QnRiM0psSUc5d1pYSmhibVJ6SUdGbWRHVnlJQUE2SUdWNGNHVmpkR1ZrSUcxdmNtVWdiM0JsY21GdVpITWdZV1owWlhJZ0FFbHVkbUZzYVdRZ2NHOXBiblJsY2lCMGVYQmxJR1p2Y2lCMllYSnBZV0pzWlNCdmNpQm1kVzVqZEdsdmJpQndZWEpoYldWMFpYSWdBRWx1ZG1Gc2FXUWdjMkZ0Y0d4bGNpQnZjaUIwWlhoMGRYSmxJSFZ6WVdkbElHWnZjaUIyWVhKcFlXSnNaU0J2Y2lCbWRXNWpkR2x2YmlCd1lYSmhiV1YwWlhJZ0FGZEhVMHdnWVhKeVlYbGxaQ0IwWlhoMGRYSmxjeUJ0ZFhOMElHSmxJREprWDJGeWNtRjVJRzl5SUdOMVltVmZZWEp5WVhrNklHbHVkbUZzYVdRZ2JYVnNkR2x6WVcxd2JHVmtJSFJsZUhSMWNtVWdkbUZ5YVdGaWJHVWdiM0lnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5SUFCWFIxTk1JRzExYkhScGMyRnRjR3hsWkNCMFpYaDBkWEpsY3lCdGRYTjBJR0psSURKa0lHRnVaQ0J1YjI0dFlYSnlZWGxsWkRvZ2FXNTJZV3hwWkNCdGRXeDBhWE5oYlhCc1pXUWdkR1Y0ZEhWeVpTQjJZWEpwWVdKc1pTQnZjaUJtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElnQUhkb2FXeGxJR2x1YzNSaGJuUnBZWFJwYm1jZ2NHRnlZVzFsZEdWeUlBQlBjRVoxYm1OMGFXOXVVR0Z5WVcxbGRHVnlJQUJKYm5aaGJHbGtJSFI1Y0dVZ1ptOXlJR2x0WVdkbExDQnpZVzF3YkdWeUxDQjJZWEpwWVdKc1pTQnZjaUJtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElnZEc4Z2FXMWhaMlVnYjNJZ2MyRnRjR3hsY2lBQWMzUnlkV04wZFhKbElHMWhlU0J1YjNRZ1ltVWdZMjl1ZEdGcGJtVmtJR0Z6SUdFZ2JXVnRZbVZ5SUc5bUlHRnViM1JvWlhJZ0FISmxZV1JmZDNKcGRHVWdjM1J2Y21GblpTQmlkV1ptWlhJZ0FGZHZjbXRuY205MWNDd2dRM0p2YzNOWGIzSnJaM0p2ZFhBc0lFZGxibVZ5YVdNc0lFbHRZV2RsSUc5eUlGTjBiM0poWjJWQ2RXWm1aWElnQUNCcGN5QnViM1FnZG1Gc2FXUWdabTl5SUdOdmJYQjFkR1VnYzJoaFpHVnlJQUJNYjI5d0lHaGxZV1JsY2lBQUlHbHpJSFJvWlNCa1pXWmhkV3gwSUdKc2IyTnJJR1p2Y2lCemQybDBZMmd0YzJWc1pXTjBhVzl1SUdobFlXUmxjaUFBSUdseklHRWdZMkZ6WlNCaWJHOWpheUJtYjNJZ2MzZHBkR05vTFhObGJHVmpkR2x2YmlCb1pXRmtaWElnQUNCcGN5QjBhR1VnZEhKMVpTQmljbUZ1WTJnZ1ptOXlJR2xtTFhObGJHVmpkR2x2YmlCb1pXRmtaWElnQUNCcGN5QjBhR1VnWm1Gc2MyVWdZbkpoYm1Ob0lHWnZjaUJwWmkxelpXeGxZM1JwYjI0Z2FHVmhaR1Z5SUFCVFpXeGxZM1JwYjI0Z2FHVmhaR1Z5SUFCVGQybDBZMmdnYUdWaFpHVnlJQUJUZEhKMVkzUjFjbVZrSUdobFlXUmxjaUFBU0dWaFpHVnlJQUJoWTJObGMzTnBibWNnY0dWeUxYWmxjblJsZUNCdFpXMWlaWElnQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnV0NCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklIUm9aU0JtYVhKemRDQnRaVzFpWlhJZ0FITjBjblZqZENCdFpXMWlaWElnQUNCdmJpQnRaVzFpWlhJZ0FGZEhVMHdnWkc5bGN5QnViM1FnYzNWd2NHOXlkQ0J5YjNjdGJXRnFiM0lnYldGMGNtbGpaWE02SUdOaGJpZDBJSFJ5WVc1emJHRjBaU0J0WlcxaVpYSWdBSGRvYVd4bElHRnVZV3g1ZW1sdVp5QnpkSEoxWTNSMWNtVWdiV1Z0WW1WeUlBQWdiR0Y1YjNWMElISjFiR1Z6T2lCdFpXMWlaWElnQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnUlhod0lIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQnpZMkZzWVhJZ0FHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdNekl0WW1sMElHWnNiMkYwSUhOallXeGhjaUFBUlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2MzUnlkV04wSUcxbGJXSmxjaUIwZVhCbGN5QjBieUJpWlNCcGJuUmxaMlZ5SUhOallXeGhjaUFBYkc5dmNDQUFJQ2gwYnlBQVJYaHdaV04wWldRZ2JuVnRZbVZ5SUc5bUlHTnZiSFZ0Ym5NZ2IyWWdVbVZ6ZFd4MElGUjVjR1VnWVc1a0lISnBaMmgwSUcxaGRISnBlQ0IwYnlBQUlHNXZkQ0J6WVhScGMyWjVhVzVuSUdGc2FXZHViV1Z1ZENCMGJ5QUFJR0p5WVc1amFHVnpJSFJ2SUFCallXNXViM1FnWVhOemFXZHVJSFJ2SUFCdWJ5QnRZWFJqYUdsdVp5QmpZV3hzSUhSdklBQmxNaUJ0ZFhOMElHSmxJR3hsYzNNZ2RHaGhiaUJ2Y2lCbGNYVmhiQ0IwYnlBQVJYaHdaV04wWldRZ2JuVnRZbVZ5SUc5bUlHTnZiSFZ0Ym5NZ2IyWWdkR2hsSUcxaGRISnBlQ0IwYnlCaVpTQmxjWFZoYkNCMGJ5QUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQllJR052YlhCdmJtVnVkQ0IwZVhCbElIUnZJR0psSUdWeGRXRnNJSFJ2SUFCbGVIQmxZM1JsWkNCdmNHVnlZVzVrSUZBeElHTnZiWEJ2Ym1WdWRDQjBlWEJsSUhSdklHSmxJR1Z4ZFdGc0lIUnZJQUJsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRkF3SUdOdmJYQnZibVZ1ZENCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklBQWdaMjlwYm1jZ2RHOGdBRG9nYVc0Z1ZuVnNhMkZ1SUdWdWRtbHliMjV0Wlc1MElFVjRaV04xZEdsdmJpQnpZMjl3WlNCcGN5QnNhVzFwZEdWa0lIUnZJQUE2SUdsdUlGWjFiR3RoYmlCbGJuWnBjbTl1YldWdWRDQkZlR1ZqZFhScGIyNGdVMk52Y0dVZ2FYTWdiR2x0YVhSbFpDQjBieUFBU1c1a1pYaGxjeUJ3WVhOelpXUWdkRzhnQUZSb1pTQThhV1ErSUhCaGMzTmxaQ0IwYnlBQVEyRndZV0pwYkdsMGVTQlRkRzl5WVdkbFNXMWhaMlZTWldGa1YybDBhRzkxZEVadmNtMWhkQ0JwY3lCeVpYRjFhWEpsWkNCMGJ5QUFJR2x6SUc1dmRDQmhiR2xuYm1Wa0lIUnZJQUFnWkdWamIzSmhkR2x2YmlCdFlYa2dibTkwSUdKbElHRndjR3hwWldRZ2RHOGdBR0Z5Y21GNUlHTnZibk4wY25WamRHOXlJR2hoY3lCMGIyOGdBSE4wY25WamRIVnlaU0JqYjI1emRISjFZM1J2Y2lCb1lYTWdkRzl2SUFCallXNG5kQ0JrYnlBQWRXNW9ZVzVrYkdWa0lHTnZibk4wWVc1MElHbHVjM1J5ZFdOMGFXOXVJQUJKYm5OMGNuVmpkR2x2YmlCeVpYTmxjblpsWkNCbWIzSWdablYwZFhKbElIVnpaU3dnZFhObElHOW1JSFJvYVhNZ2FXNXpkSEoxWTNScGIyNGdBRWx1SUU5d1VHaHBJR2x1YzNSeWRXTjBhVzl1SUFCMWJtaGhibVJzWldRZ1IweFRUQzV6ZEdRdU5EVXdJR2x1YzNSeWRXTjBhVzl1SUFCbmJHOWlZV3dnZG1GeWFXRmliR1Z6S1NCaGJtUWdjMlZqZEdsdmJpQXhNQ0FvWm5WdVkzUnBiMjRnQUNCMWMyVmtJR2x1SUdaMWJtTjBhVzl1SUFBZ1lYSmxJSEpsWm1WeVpXNWpaV1FnWW5WMElHNXZkQ0JrWldacGJtVmtJR2x1SUdaMWJtTjBhVzl1SUFBZ2FYTWdkWE5sWkNCdmRYUnphV1JsSUc5bUlHbDBKM01nWkdWbWFXNXBibWNnWm5WdVkzUnBiMjRnQUNCdlppQm1kVzVqZEdsdmJpQUFiMllnWkdWaWRXY2dhVzVtYnlCbGVIUmxibk5wYjI0Z2JYVnpkQ0JoY0hCbFlYSWdhVzRnWVNCbWRXNWpkR2x2YmlBQU95QkdkVzVqZEdsdmJpQUFJR05oYm01dmRDQmlaU0IxYzJWa0lHRnpJR0VnYldWdFltVnlJR1JsWTI5eVlYUnBiMjRnQURvZ2RXNXJibTkzYmlCa1pXTnZjbUYwYVc5dUlBQlRjR1ZqYVdGc2FYcGhkR2x2YmlCamIyNXpkR0Z1ZENCdmNHVnlZWFJwYjI0Z0FHbHVkbUZzYVdRZ2FXMWhaMlVnZEhsd1pTQm1iM0lnYVcxaFoyVWdiV1Z0YjNKNUlHOWlhbVZqZENCa1pXTnNZWEpoZEdsdmJpQUFJR3h2WTJGMGFXOXVJR0Z6YzJsbmJtMWxiblFnWVhRZ2JHOWpZWFJwYjI0Z0FFbHVkbUZzYVdRZ1UxQkpVaTFXSUdKcGJtRnllU0IyWlhKemFXOXVJQUFnY21WeGRXbHlaWE1nZG1WeWMybHZiaUFBS1NCeVpYRjFhWEpsY3lCVFVFbFNMVllnZG1WeWMybHZiaUFBVm1WeWMybHZiaUFBSnlCM2FYUm9iM1YwSUdWNGRHVnVjMmx2YmlBQVJtOTFibVFnZFc1eVpXTnZaMjVwZW1Wa0lHVjRkR1Z1YzJsdmJpQUFSWGh3WldOMFpXUWdVMmhwWm5RZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCa2FXMWxibk5wYjI0Z0FFVjRjR1ZqZEdWa0lHOXdaWEpoYm1SeklIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUlBQkZlSEJsWTNSbFpDQmhjbWwwYUcxbGRHbGpJRzl3WlhKaGJtUnpJSFJ2SUdoaGRtVWdkR2hsSUhOaGJXVWdaR2x0Wlc1emFXOXVJQUJGZUhCbFkzUmxaQ0JDWVhObElIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUlBQWdkMmhwWTJnZ2FYTWdaR1Z3Wlc1a1pXNTBJRzl1SUFBZ1pHVndaVzVrY3lCdmJpQUFSWGh3WldOMFpXUWdRMjl1YzNScGRIVmxiblFnZEhsd1pTQjBieUJpWlNCbGNYVmhiQ0IwYnlCMGFHVWdZMjlzZFcxdUlBQjFibkpsWTI5bmJtbDZaV1FnWW5WcGJIUnBiaUFBUVd4c2IyTmhkR2x1WnlCaElIWmhjbWxoWW14bElHTnZiblJoYVc1cGJtY2dZU0E0TFdKcGRDQmxiR1Z0Wlc1MElHbHVJQUJCYkd4dlkyRjBhVzVuSUdFZ2RtRnlhV0ZpYkdVZ1kyOXVkR0ZwYm1sdVp5QmhJREUyTFdKcGRDQmxiR1Z0Wlc1MElHbHVJQUJVYUdVZ2NtVnpkV3gwSUhCdmFXNTBaWElnYzNSdmNtRm5aU0JqYkdGemN5QmhibVFnWW1GelpTQndiMmx1ZEdWeUlITjBiM0poWjJVZ1kyeGhjM01nYVc0Z0FGUm9aU0J1ZFcxaVpYSWdiMllnYVc1a1pYaGxjeUJwYmlBQVZHaGxJR0Z5Y21GNUlHMWxiV0psY2lCcGJpQUFWR2hsSUZOMGNuVmpkSFZ5WlNkeklHeGhjM1FnYldWdFltVnlJR2x1SUFCUGNFeHZiM0JOWlhKblpTQnRkWE4wSUdKbElIUm9aU0J6WldOdmJtUXRkRzh0YkdGemRDQnBibk4wY25WamRHbHZiaUJwYmlBQVEyRnVibTkwSUdGc2JHOWpZWFJsSUdFZ2RtRnlhV0ZpYkdVZ1kyOXVkR0ZwYm1sdVp5QmhJRGd0WW1sMElIUjVjR1VnYVc0Z0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCaElIWmhjbWxoWW14bElHTnZiblJoYVc1cGJtY2dZU0F4TmkxaWFYUWdkSGx3WlNCcGJpQUFWR2hsSUZOMGNuVmpkSFZ5WlNkeklIUjVjR1VnYVc0Z0FGUm9aU0IwZVhCbElHbHVJQUFnWm05eUlIWmhjbWxoWW14bElHbHVJQUFnYVhNZ2JtOTBJSFpoYkdsa0lHbHVJQUJrYVhOallYSmtJSE4wWVhSbGJXVnVkQ0JqWVc1dWIzUWdZbVVnZFhObFpDQnBiaUFBS1NCallXNXViM1FnWW1VZ2RYTmxaQ0JwYmlBQVptNGdBQ0JqYjIxd2IyNWxiblJ6TENCaWRYUWdaMmwyWlc0Z0FGTmpiM0JsSUdsa2N5QnRkWE4wSUdKbElHTnZibk4wWVc1MElHOXlJSE53WldOcFlXeHBlbUYwYVc5dUlHTnZibk4wWVc1MElIZG9aVzRnQUNrZ2JYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z0FFUmxZblZuSUdsdVptOGdaWGgwWlc1emFXOXVJR2x1YzNSeWRXTjBhVzl1Y3lCdmRHaGxjaUIwYUdGdUlBQjJaV04wYjNJZ1kyOXRjRzl1Wlc1MElHbHVaR1Y0SUdseklHeGhjbWRsY2lCMGFHRnVJQUJUZEhKMVkzUjFjbVVnVG1WemRHbHVaeUJFWlhCMGFDQnRZWGtnYm05MElHSmxJR3hoY21kbGNpQjBhR0Z1SUFCTWFYUmxjbUZzSUhOMGNtbHVaeUJwY3lCc2IyNW5aWElnZEdoaGJpQUFUM0JVZVhCbFJuVnVZM1JwYjI0Z2JXRjVJRzV2ZENCMFlXdGxJRzF2Y21VZ2RHaGhiaUFBVDNCTWIyOXdUV1Z5WjJVZ2JYVnpkQ0JwYlcxbFpHbGhkR1ZzZVNCd2NtVmpaV1JsSUdWcGRHaGxjaUJoYmlBQVQzQlRaV3hsWTNScGIyNU5aWEpuWlNCdGRYTjBJR2x0YldWa2FXRjBaV3g1SUhCeVpXTmxaR1VnWldsMGFHVnlJR0Z1SUFCR2IzSWdWblZzYTJGdUxDQmhiaUJQY0ZSNWNHVlRkSEoxWTNRZ2RtRnlhV0ZpYkdVZ1kyOXVkR0ZwYm1sdVp5QmhiaUFBTENCemFXNWpaU0JwZENCcGN5QnViM1FnYzNCbFkybG1hV1ZrSUdGeklIUmhhMmx1WnlCaGJpQUFWblZzYTJGdUlITndaV01nWkc5bGN5QnViM1FnWVd4c2IzY2dRblZwYkhSSmJpQUFWblZzYTJGdUlITndaV01nWVd4c2IzZHpJRUoxYVd4MFNXNGdBQ0IzYUdsamFDQnBjeUJrWldOdmNtRjBaV1FnZDJsMGFDQkNkV2xzZEVsdUlBQlZjMmx1WnlCQ2RXbHNkRWx1SUFCQlkyTnZjbVJwYm1jZ2RHOGdkR2hsSUZaMWJHdGhiaUJ6Y0dWaklFSjFhV3gwU1c0Z0FFSnlZVzVqYUNCbWNtOXRJQUJ5WldGa2FXNW5JR1p5YjIwZ0FFWnliMjBnQUU5d1VHaHBJRzExYzNRZ1lYQndaV0Z5SUhkcGRHaHBiaUJoSUc1dmJpMWxiblJ5ZVNCaWJHOWpheUJpWldadmNtVWdZV3hzSUFCRmVIQmxZM1JsWkNCSmJXRm5aU0FuVTJGdGNHeGxaQ0JVZVhCbEp5QjBieUJpWlNCMGFHVWdjMkZ0WlNCaGN5QlVaWGhsYkNBQVBpQjNhR2xqYUNCcGN5QmpZV3hzWldRZ2QybDBhQ0JsZUdWamRYUnBiMjRnYlc5a1pXd2dBQ0IwYnlCaVpTQjFjMlZrSUhkcGRHZ2dkR2hsSUdWNFpXTjFkR2x2YmlCdGIyUmxiQ0FBUlhod1pXTjBaV1FnZEc5MFlXd2diblZ0WW1WeUlHOW1JRU52Ym5OMGFYUjFaVzUwY3lCMGJ5QmlaU0JsY1hWaGJDQUFSWGh3WldOMFpXUWdkRzkwWVd3Z2JuVnRZbVZ5SUc5bUlHZHBkbVZ1SUdOdmJYQnZibVZ1ZEhNZ2RHOGdZbVVnWlhGMVlXd2dBR1Y0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR0VnYzNSeWRXTjBJSGRwZEdnZ2RIZHZJR2xrWlc1MGFXTmhiQ0FBSUdKeVlXNWphR1Z6SUhSdklHWjFibU4wYVc5dUlHVnVkSEo1SUdKc2IyTnJJQUJHZFc1amRHbHZiaUJsYm5SeWVTQmliRzlqYXlBQUlHbHpJSFJoY21kbGRHVmtJR0o1SUdKc2IyTnJJQUFnWVhCd1pXRnljeUJoZENCdmNpQmlaV1p2Y21VZ2RHaGxJR3h2YjNBbmN5QmpiMjUwYVc1MVpTQmpiMjV6ZEhKMVkzUWdhR1ZoWkdWa0lHSjVJR0pzYjJOcklBQnBiblpoYkdsa0lITjBjblZqZEhWeVpUb2dkR2hsYmkxamJHRjFjMlVnYUdWaFpHVmtJR0o1SUdKc2IyTnJJQUJHYVhKemRDQmliRzlqYXlBQVZHaGxjbVVnYlhWemRDQmlaU0J1YnlCdGIzSmxJSFJvWVc0Z2IyNWxJSEIxYzJnZ1kyOXVjM1JoYm5RZ1lteHZZMnNnQUNCMGJ5QmtaV1poZFd4MElHSnNiMk5ySUFBZ2RHOGdaR1ZtWVhWc2RDQjBZWEpuWlhRZ1lteHZZMnNnQUNCMGJ5QmpZWE5sSUhSaGNtZGxkQ0JpYkc5amF5QUFhVzUwWlhKdVlXd2daWEp5YjNJNklITjBZWFJsYldWdWRITWdjM1JoWTJzZ1pXMXdkSGtnWVhRZ1lteHZZMnNnQUVsdWRtRnNhV1FnWm5WdVkzUnBiMjRnWlhocGRDQmhkQ0JpYkc5amF5QUFRMjl1ZEhKdmJDQm1iRzkzSUdScGRtVnlaMlZ6SUdGMElHSnNiMk5ySUFBZ2FYTWdZVzRnYVc1MllXeHBaQ0JsZUdsMElHWnliMjBnWTI5dWMzUnlkV04wSUhOMFlYSjBhVzVuSUdGMElHSnNiMk5ySUFBZ1pXNWthVzVuSUdGMElHSnNiMk5ySUFBZ1ptOXlJR3h2YjNBZ2FHVmhaR1ZrSUdGMElHSnNiMk5ySUFBZ2FXNGdhV1l0YzJWc1pXTjBhVzl1SUdobFlXUmxaQ0JoZENCaWJHOWpheUFBT2lCa1pXTnNZWEpsY3lCaWJHOWpheUFBSUdGdVpDQmhiSE52SUhSb1pTQnRaWEpuWlNCaWJHOWpheUJtYjNJZ2FHVmhaR1Z5SUdKc2IyTnJJQUFnYVdZdGMyVnNaV04wYVc5dUlHaGxZV1JsY2lCaWJHOWpheUFBU1c1MllXeHBaQ0J6ZEhKMVkzUjFjbVZrSUdobFlXUmxjaUJpYkc5amF5QUFVM1J5ZFdOMGRYSmxaQ0JvWldGa1pYSWdZbXh2WTJzZ0FFaGxZV1JsY2lCaWJHOWpheUFBSUdGdVpDQmhiSE52SUhSdklHSnNiMk5ySUFBZ2FHRnpJR2x1ZG1Gc2FXUWdZbkpoYm1Ob0lIUnZJR0pzYjJOcklBQWdhVzRnVDNCVGQybDBZMmdnYVc0Z1lteHZZMnNnQUNCa2IyVnpJRzV2ZENCa2IyMXBibUYwWlNCcGRITWdkWE5sSUdsdUlHSnNiMk5ySUFBZ1pHVm1hVzVsWkNCcGJpQmliRzlqYXlBQVUzZHBkR05vSUdKeVlXNWphQ0JtY205dElHSnNiMk5ySUFCQ2NtRnVZMmdnWm5KdmJTQmliRzlqYXlBQWFXNTBaWEp1WVd3Z1pYSnliM0k2SUhSdmJ5QnRZVzU1SUcxbGNtZGxJR0pzYjJOcmN5QmlaV1p2Y21VZ1lteHZZMnNnQUN3Z1luVjBJR2wwY3lCdFpYSm5aU0JpYkc5amF5QUFJR1J2WlhNZ2JtOTBJSE4wY21samRHeDVJR1J2YldsdVlYUmxJR2wwY3lCdFpYSm5aU0JpYkc5amF5QUFJR0p5WVc1amFHVnpJSFJ2SUdKdmRHZ2dkR2hsSUcxbGNtZGxJR0pzYjJOcklBQWdaR1ZqYkdGeVpYTWdhVzUyWVd4cFpDQnRaWEpuWlNCaWJHOWpheUFBVFdWeVoyVWdZbXh2WTJzZ0FHbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCaWJHOWpheUFBVDNCVWVYQmxVblZ1ZEdsdFpVRnljbUY1SUcxMWMzUWdZbVVnWkdWamIzSmhkR1ZrSUhkcGRHZ2dRblZtWm1WeVFteHZZMnNnQUUxbGNtZGxJRUpzYjJOcklBQkpiblpoYkdsa0lFUmxjSFJvSUFBbklHUmxZMjl5WVhSbFpDQjNhWFJvSUdKdmRHZ2dBRk5sY1hWbGJtTmxJRzltSUdOdmJYQnZibVZ1ZEhNZ2MzUmhjblJwYm1jZ2QybDBhQ0FBSUdGdVpDQmxibVJwYm1jZ2QybDBhQ0FBWVd4c0lHMWxiV0psY25NZ2IyWWdkR2hoZENCemRISjFZM1IxY21VZ2RIbHdaU0J0ZFhOMElHRnNjMjhnWW1VZ1pHVmpiM0poZEdWa0lIZHBkR2dnQUNjZ1pHVmpiM0poZEdWa0lIZHBkR2dnQUVWNGNHVmpkR1ZrSUVsdFlXZGxJRTl3WlhKaGJtUWdURzlrSUhSdklHSmxJR2x1ZENCelkyRnNZWElnZDJobGJpQjFjMlZrSUhkcGRHZ2dBRTFsYlc5eWVTQlRaVzFoYm5ScFkzTWdRV054ZFdseVpTQmhibVFnUVdOeGRXbHlaVkpsYkdWaGMyVWdZMkZ1Ym05MElHSmxJSFZ6WldRZ2QybDBhQ0FBYVc1MFpYSnVZV3dnWlhKeWIzSTZJSFZ1WW1Gc1lXNWpaV1FnYzNSeWRXTjBkWEpsWkNCamIyNXpkSEoxWTNSeklIZG9aVzRnYkdGaVpXeHBibWNnYzNSeWRXTjBkWEpsWkNCamIyNXpkSEoxWTNSek9pQmxibVJsWkNCM2FYUm9JQUIwYUdseklHbHVjM1J5ZFdOMGFXOXVJR2x6SUdOMWNuSmxiblJzZVNCc2FXMXBkR1ZrSUhSdklETXlMV0pwZENCM2FXUjBhQ0FBSUdoaGN5QmlhWFFnZDJsa2RHZ2dBQ0JvWVhNZ1kyOXRjRzl1Wlc1MGN5QjNhWFJvSUdKcGRDQjNhV1IwYUNBQVJYaHdaV04wWldRZ2IzQmxjbUZ1WkhNZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCaWFYUWdkMmxrZEdnZ0FFVjRjR1ZqZEdWa0lHRnlhWFJvYldWMGFXTWdiM0JsY21GdVpITWdkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQmlhWFFnZDJsa2RHZ2dBRVY0Y0dWamRHVmtJRUpoYzJVZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCaWFYUWdkMmxrZEdnZ0FHbHVkbUZzYVdRZ2RtVmpkRzl5SUhkcFpIUm9JQUJoY21VZ2RYTmxaQ0J2Ym14NUlHRnpJR2hoYm1Sc1pYTWdkRzhnY21WbVpYSWdkRzhnYjNCaGNYVmxJSEpsYzI5MWNtTmxjeTRnVTNWamFDQUFkWE5sWkNCMGJ5QmhZMk5sYzNNZ2RISmhibk53WVhKbGJuUWdZblZtWm1WeUlHSmhZMnRsWkNCeVpYTnZkWEpqWlhNdUlGTjFZMmdnQUdGdFltbG5kVzkxY3lCdmRtVnliRzloWkNCM2FHbHNaU0JoZEhSbGJYQjBhVzVuSUhSdklHMWhkR05vSUFBZ2FYTWdhVzUyWVd4cFpDQmhablJsY2lCbWIyeHNiM2RwYm1jZ0FDQm9ZWFpwYm1jZ0FFaGhkbWx1WnlBQVkyOXVkR2x1ZFdsdVp5QUFJR1JsWTI5eVlYUnBiMjRnZEdGeVoyVjBhVzVuSUFCRmJuUnllUzF3YjJsdWRDQm9ZWE1nWTI5dVpteHBZM1JwYm1jZ0FIZG9hV3hsSUdsdWMzUmhiblJwWVhScGJtY2dBRG9nYldsemMybHVaeUFBUm05eUlGWjFiR3RoYml3Z1QzQlVlWEJsVTNSeWRXTjBJSFpoY21saFlteGxjeUJqYjI1MFlXbHVhVzVuSUFBZ2FYTWdjbVZtWlhKbGJtTnBibWNnQUhaaGNtbGhZbXhsY3lCdGRYTjBJR0psSUhSNWNHVmtJR0Z6SUU5d1ZIbHdaVk4wY25WamRDd2diM0lnWVc0Z1lYSnlZWGtnYjJZZ0FDQnBjeUJ2ZFhRZ2IyWWdZbTkxYm1SeklHWnZjaUJ0WVhSeWFYZ2diMllnQUc5MWRIQjFkQ0J2WmlBQWFXNXdkWFFnYjJZZ0FITjBZWFJsYldWdWRDQnVaWE4wYVc1bklHUmxjSFJvSUM4Z1kyaGhhVzVwYm1jZ2JHVnVaM1JvSUdWNFkyVmxaSE1nYkdsdGFYUWdiMllnQUc1MWJXSmxjaUJ2WmlBbmIzWmxjbkpwWkdVbklIWmhjbWxoWW14bGN5QmxlR05sWldSbFpDQnNhVzFwZENCdlppQUFZMjl1ZEdGcGJtbHVaeUJQY0ZSNWNHVlNkVzUwYVcxbFFYSnlZWGtnYlhWemRDQm9ZWFpsSUhOMGIzSmhaMlVnWTJ4aGMzTWdiMllnQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnV0NCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklHMWxiV0psY25NZ2IyWWdBQ0JwY3lCdmRYUWdiMllnWW05MWJtUnpJR1p2Y2lCMlpXTjBiM0lnYjJZZ0FHbHVkQ0J6WTJGc1lYSWdiM0lnZG1WamRHOXlJSGRwZEdnZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlBQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a2N5QlFNQ0JoYm1RZ1VERWdkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQnVkVzFpWlhJZ2IyWWdBSEpsWVdOb1pXUWdiV0Y0SUdWNGNISmxjM05wYjI0Z1pHVndkR2dnYjJZZ0FHRnljbUY1SUdoaGN5QnVaWE4wYVc1bklHUmxjSFJvSUc5bUlBQW5JR2hoY3lCdVpYTjBhVzVuSUdSbGNIUm9JRzltSUFBc0lHSjFkQ0IzYVhSb0lHRnVJR1ZzWlcxbGJuUWdjMmw2WlNCdlppQUFZMjl0WW1sdVpXUWdLRlpsWTNSdmNqRWdLeUJXWldOMGIzSXlLU0J6YVhwbElHOW1JQUJVYUdVZ1VtVnpkV3gwSUZSNWNHVWdiMllnQUNjZ2JYVnpkQ0JpWlNCaElHMTFiSFJwY0d4bElHOW1JQUFuSUdoaGN5QmhJSE4wY21sa1pTQnZaaUFBSUc5d1pYSmhibVFnYjJZZ0FHVjRjR1ZqZEdWa0lISmxjM1ZzZENCMGVYQmxJRzExYzNRZ1ltVWdZU0J5WlhOMWJIUWdhV1FnYjJZZ0FDQjNiM0prY3lCcGJuTjBaV0ZrSUc5bUlBQmhJRzkyWlhKeWFXUmxJSGRwZEdnZ1lXNGdTVVFnYjJZZ0FHSnlaV0ZySUdsbUlBQk9iMjVRY21sMllYUmxVRzlwYm5SbGNrdElVaUJ0ZFhOMElHSmxJSE53WldOcFptbGxaQ0JwWmlBQUlHOW1JSGR2Y210bmNtOTFjSE5wZW1VZ0FDQnBjeUJ1YjNRZ1lXeHBaMjVsWkNCMGJ5QnpZMkZzWVhJZ1pXeGxiV1Z1ZENCemFYcGxJQUJqWVc1dWIzUWdhVzVwZEdsaGJHbDZaU0FBT2lCRGIyMXdiMjVsYm5RZ1EyOTFiblFnYlhWemRDQmlaU0J3YjNOcGRHbDJaU0FBT2lCV1pXTjBiM0lnUTI5MWJuUWdiWFZ6ZENCaVpTQndiM05wZEdsMlpTQUFWbUZ5YVdGaWJHVWdaR1ZqYkdGeVlYUnBiMjV6SUhSb1lYUWdhVzVqYkhWa1pTQnBibWwwYVdGc2FYcGxjbk1nYlhWemRDQm9ZWFpsSUFCSmJpQldkV3hyWVc0c0lFOXdWSGx3WlVadmNuZGhjbVJRYjJsdWRHVnlJRzExYzNRZ2FHRjJaU0FBUlhod1pXTjBaV1FnU1cxaFoyVWdUM0JsY21GdVpDQkhjbUZrSUdSNUlIUnZJR2hoZG1VZ0FFVjRjR1ZqZEdWa0lFbHRZV2RsSUU5d1pYSmhibVFnUjNKaFpDQmtlQ0IwYnlCb1lYWmxJQUJGZUhCbFkzUmxaQ0JKYldGblpTQlBjR1Z5WVc1a0lFTnZibk4wVDJabWMyVjBJSFJ2SUdoaGRtVWdBRVY0Y0dWamRHVmtJRWx0WVdkbElFOXdaWEpoYm1RZ1QyWm1jMlYwSUhSdklHaGhkbVVnQUVWNGNHVmpkR1ZrSUVOdmIzSmthVzVoZEdVZ2RHOGdhR0YyWlNBQUlHbHVaR1Y0SUhaaGJIVmxJQUJFZFhCc2FXTmhkR1VnWTJGelpTQjJZV3gxWlNBQVJHVmlkV2RUWTI5d1pTd2dSR1ZpZFdkT2IxTmpiM0JsTENCRVpXSjFaMFJsWTJ4aGNtVXNJRVJsWW5WblZtRnNkV1VnQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVkdGeVoyVjBJRzExYzNRZ1ltVWdSR1ZpZFdkVWVYQmxRMjl0Y0c5emFYUmxJQUJEWVhCaFltbHNhWFI1SUZOMGIzSmhaMlZKYldGblpWZHlhWFJsVjJsMGFHOTFkRVp2Y20xaGRDQnBjeUJ5WlhGMWFYSmxaQ0IwYnlCM2NtbDBaU0FBZEdoaGRDQmhiR3h2WTJGMFpTQndiMmx1ZEdWeWN5QnRkWE4wSUdKbElHbHVJRVoxYm1OMGFXOXVJRzl5SUZCeWFYWmhkR1VnQUdSMWNHeHBZMkYwWlNBQVkyRnVibTkwSUhWelpTQUFmU0JsYkhObElBQmpZWE5sSUFCMWJuTjFjSEJ2Y25SbFpEb2dWVzVwWm05eWJVTnZibk4wWVc1MElIWmhjbWxoWW14bElHOXlJR1oxYm1OMGFXOXVJSEJoY21GdFpYUmxjaUJwY3lCdWIzUWdZU0J5WldOdloyNXBlbVZrSUhOaGJYQnNaWElnYjNJZ2RHVjRkSFZ5WlNBQWMzUnlkV04wZFhKbElBQldZWEpwWVdKc1pYTWdhV1JsYm5ScFptbGxaQ0IzYVhSb0lIUm9aU0JWYm1sbWIzSnRJSE4wYjNKaFoyVWdZMnhoYzNNZ1lYSmxJQUJCY25KaGVTQjBlWEJsSUFCVWVYQmxJRzltSUVWNGNHVmpkR1ZrVm1Gc2RXVWdiM0JsY21GdVpDQnZaaUJQY0VWNGNHVmpkRXRJVWlCa2IyVnpJRzV2ZENCdFlYUmphQ0IwYUdVZ2NtVnpkV3gwSUhSNWNHVWdBRlI1Y0dVZ2IyWWdWbUZzZFdVZ2IzQmxjbUZ1WkNCdlppQlBjRVY0Y0dWamRFdElVaUJrYjJWeklHNXZkQ0J0WVhSamFDQjBhR1VnY21WemRXeDBJSFI1Y0dVZ0FDQjBhR0YwSUdseklHRnNjbVZoWkhrZ2FHRnVaR3hsWkNCaWVTQmhJR2hoYm1Sc1pYSWdabTl5SUhSNWNHVWdBRkpsY0d4aFkyVkJiR3dvS1NCallXeHNaV1FnZDJsMGFDQmhJR2hoYm1Sc1pYSWdabTl5SUhSNWNHVWdBRU52YlhCdmJtVnVkQ0JrWldOdmNtRjBhVzl1SUhOd1pXTnBabWxsWkNCbWIzSWdkSGx3WlNBQUlHaGhjeUJ1YjI0dGNHOXBiblJsY2lCMGVYQmxJQUJOWVhSeWFYaFRkSEpwWkdVZ1kyRnVibTkwSUdKbElHRndjR3hwWldRZ2RHOGdkSGx3WlNBQWRXNWhZbXhsSUhSdklISmxiVzkyWlNCemRHRjBaVzFsYm5RZ1puSnZiU0J3WVhKbGJuUWdiMllnZEhsd1pTQUFkVzVvWVc1a2JHVmtJSFpoY21saFlteGxJSFI1Y0dVZ0FFVjRjR1ZqZEdWa0lHTnZiSFZ0YmlCMGVYQmxJRzltSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdWeGRXRnNJSFJ2SUhSb1pTQjBlWEJsSUFBZ2FHRnpJR2x1ZG1Gc2FXUWdjRzlwYm5SbFpTQjBlWEJsSUFCVFVFbFNMVllnZEhsd1pTQUFSWGh3WldOMFpXUWdRMjl0Y0c5dVpXNTBJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVZ0FDa2dZWEJ3WldGeWN5QnRkV3gwYVhCc1pTQjBhVzFsY3lCaGN5QndhWEJsYkdsdVpTQUFaVzVoWW14bElBQnRiMlIxYkdVdGMyTnZjR1VnY0hKcGRtRjBaU0IyWVhKcFlXSnNaU0FBWVd4cFlYTmxjeUIzYVhSb0lHMXZaSFZzWlMxelkyOXdaU0IyWVhKcFlXSnNaU0FBZDI5eWEyZHliM1Z3SUhOMGIzSmhaMlVnZG1GeWFXRmliR1VnQUVadmNpQldkV3hyWVc0Z2QybDBhQ0JTZFc1MGFXMWxSR1Z6WTNKcGNIUnZja0Z5Y21GNVJWaFVMQ0JoSUhaaGNtbGhZbXhsSUFCUGNGWmhjbWxoWW14bElBQWdaWGhwZEhNZ2RHaGxJQUJWYzJVZ2IyWWdaR1YyYVdObElITmpiM0JsSUhkcGRHZ2dWblZzYTJGdVMwaFNJRzFsYlc5eWVTQnRiMlJsYkNCeVpYRjFhWEpsY3lCMGFHVWdBQ0JwYmlCV1pYSjBaWGdnYjNJZ1ZHVnpjMlZzYkdGMGFXOXVJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQnlaWEYxYVhKbGN5QjBhR1VnQUVOdmRXeGtJRzV2ZENCbWFXNWtJRzFsYlc5eWVTQnZZbXBsWTNRZ1pHVmpiR0Z5WVhScGIyNGdabTl5SUhSb1pTQUFJR052Ym5OMGNuVmpkQ3dnWW5WMElHNXZkQ0IwYnlCMGFHVWdBQ0JpY21GdVkyaGxjeUIwYnlCMGFHVWdBRVY0Y0dWamRHVmtJRzUxYldKbGNpQnZaaUJ5YjNkeklHOW1JSFJvWlNCdFlYUnlhWGdnZEc4Z1ltVWdaWEYxWVd3Z2RHOGdkR2hsSUFCRmVIQmxZM1JsWkNCdWRXMWlaWElnYjJZZ1kyOXNkVzF1Y3lCdlppQjBhR1VnYldGMGNtbDRJSFJ2SUdKbElHVnhkV0ZzSUhSdklIUm9aU0FBUlhod1pXTjBaV1FnUTI5dWMzUnBkSFZsYm5RZ2RIbHdaU0IwYnlCaVpTQmxjWFZoYkNCMGJ5QjBhR1VnQUVGalkyOXlaR2x1WnlCMGJ5QjBhR1VnQUNCcGN5QmpiMjUwWVdsdVpXUWdhVzRnZEdobElBQWdZMjl1YzNSeWRXTjBJSGRwZEdnZ2RHaGxJQUJUZEc5eVlXZGxJR05zWVhOeklHbHVJRTl3Vkhsd1pVWnZjbmRoY21SUWIybHVkR1Z5SUdSdlpYTWdibTkwSUcxaGRHTm9JSFJvWlNBQVpXRmphQ0JqYjIxd2IyNWxiblFnYjJZZ2RHaGxJQUJVYUdVZ0FIVnVhR0Z1Wkd4bFpDQnBibk4wY25WamRHbHZiaUIzYVhSb0lHOXdZMjlrWlNBQVQzQmpiMlJsSUFCamIyNTBZV2x1Y3lCaGJpQmhjbkpoZVNCM2FYUm9JSE4wY21sa1pTQUFhWE1nWVNCdFlYUnlhWGdnZDJsMGFDQnpkSEpwWkdVZ0FFNXZiaTExYm1seGRXVWdUM0JGYm5SeWVWQnZhVzUwSUdsdWRHVnlabUZqWlNBQU9pQkRiMjF3YjI1bGJuUWdRMjkxYm5RZ2JYVnpkQ0JpWlNBQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUVlYSmhiV1YwWlhKeklHMTFjM1FnWW1VZ0FIUjVjR1VnYjJZZ1puVnVZM1JwYjI0Z2NHRnlZVzFsZEdWeUlHTmhibTV2ZENCaVpTQUFSWGh3WldOMFpXUWdZMjl0Y0c5dVpXNTBJSFI1Y0dWeklHOW1JRkpsYzNWc2RDQlVlWEJsSUdGdVpDQnlhV2RvZENCdFlYUnlhWGdnZEc4Z1ltVWdBRVY0Y0dWamRHVmtJR052YkhWdGJpQjBlWEJsY3lCdlppQlNaWE4xYkhRZ1ZIbHdaU0JoYm1RZ2JHVm1kQ0J0WVhSeWFYZ2dkRzhnWW1VZ0FFVjRjR1ZqZEdWa0lHTnZiWEJ2Ym1WdWRDQjBlWEJsY3lCdlppQlNaWE4xYkhRZ1ZIbHdaU0JoYm1RZ2JXRjBjbWw0SUhSdklHSmxJQUJGZUhCbFkzUmxaQ0JqYjIxd2IyNWxiblFnZEhsd1pYTWdiMllnVW1WemRXeDBJRlI1Y0dVZ1lXNWtJSFpsWTNSdmNpQjBieUJpWlNBQVJYaHdaV04wWldRZ1kyOXRjRzl1Wlc1MElIUjVjR1Z6SUc5bUlFMWhkSEpwZUNCaGJtUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdBRVY0Y0dWamRHVmtJSE5qYjNCbGN5QnZaaUJOWVhSeWFYZ2dZVzVrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUFCRmVIQmxZM1JsWkNCeWIzZHpJRzltSUUxaGRISnBlQ0IwZVhCbElHRnVaQ0JTWlhOMWJIUWdWSGx3WlNCMGJ5QmlaU0FBUlhod1pXTjBaV1FnWTI5c2RXMXVjeUJ2WmlCTllYUnlhWGdnZEhsd1pTQmhibVFnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnQUVocGJuUWdZVzVrSUVKcGRITWdZWEpsSUc5d2RHbHZibUZzSUhSdloyVjBhR1Z5SUdrdVpTQUFJSE4wWVhKMGFXNW5JR0YwSUhkdmNtUWdBSE4wWVc1a1lYSmtJQUJKYldGblpTQlBjR1Z5WVc1a0lFMXBia3h2WkNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dTVzF3YkdsamFYUk1iMlFnQUNCM2IzSmtjeXdnWW5WMElHWnZkVzVrSUFBZ1pHVm1ZWFZzZENCMllXeDFaU0J0ZFhOMElHSmxJR0YwSUd4bFlYTjBJREU2SUdadmRXNWtJQUFzSUdadmRXNWtJQUJKYm5aaGJHbGtJRk5RU1ZJdFZpNGdJRlJvWlNCcFpDQmliM1Z1WkNCcGN5QnNZWEpuWlhJZ2RHaGhiaUIwYUdVZ2JXRjRJR2xrSUdKdmRXNWtJQUF1SUVadmRXNWtJQUJwYm5SbGNtNWhiQ0JsY25KdmNqb2dZbUZrSUdOdmJuTjBjblZqZENCdVpYTjBhVzVuTGlCUGJteDVJR0VnUTI5dWRHbHVkV1VnYjNJZ1lTQk1iMjl3SUdOdmJuTjBjblZqZENCallXNGdZbVVnYjNWMFpYSWdZMjl1YzNSeWRXTjBJRzl1SUhOaGJXVWdZbXh2WTJzdUlDQkhiM1FnYjNWMFpYSWdhMmx1WkNBQUlHbHVibVZ5SUd0cGJtUWdBR2x1ZG1Gc2FXUWdjMkZ0Y0d4bGNpQnJhVzVrSUFCR2NtRm5iV1Z1ZENCUGNFVnVkSEo1VUc5cGJuUWdiM0JsY21GdVpDQUFTVzUyWVd4cFpDQnpkRzl5WVdkbElHTnNZWE56SUdadmNpQndiMmx1ZEdWeUlHOXdaWEpoYm1RZ0FGTjBiM0poWjJWQ2RXWm1aWElnY0c5cGJuUmxjaUJ2Y0dWeVlXNWtJQUJRYjJsdWRHVnlJRzl3WlhKaGJtUWdBRG9nWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0FBT2lCdmNHVnlZVzVrSUFCUGNHVnlZVzVrSUFCQ2RXbHNkRWx1SUNoT2J5QmhiR3h2ZDJWa0lHMXBlR2x1WnlCdlppQmlkV2xzZEMxcGJpQjJZWEpwWVdKc1pYTWdZVzVrSUFBNklHTmhiaWQwSUhOd1pXTnBabmtnWW05MGFDQkJiR2xoYzJWa1VHOXBiblJsY2lCaGJtUWdBRTl3U1cxaFoyVlNaV0ZrTENCUGNFbHRZV2RsVjNKcGRHVXNJRTl3U1cxaFoyVlRjR0Z5YzJWR1pYUmphQ0JoYm1RZ0FFQnBaQ0IyWVd4MVpTQnRkWE4wSUdKbElHSmxkSGRsWlc0Z01DQmhibVFnQUU5d1VtVjBkWEp1SUdOaGJpQnZibXg1SUdKbElHTmhiR3hsWkNCbWNtOXRJR0VnWm5WdVkzUnBiMjRnZDJsMGFDQjJiMmxrSUFCSmJuWmhiR2xrSUFCR2RXNWpkR2x2YmlCa1pXWnBibWwwYVc5dUlDaHBaQ0FBUm5WdVkzUnBiMjRnWkdWamJHRnlZWFJwYjI0Z0tHbGtJQUJCSUVKMWFXeDBTVzRnZG1GeWFXRmliR1VnS0dsa0lBQlhhR1Z1SUdSbFkyeGhjbWx1WnlCWGIzSnJaM0p2ZFhCTlpXMXZjbmxGZUhCc2FXTnBkRXhoZVc5MWRFdElVaXdnYVdZZ2JXOXlaU0IwYUdGdUlHOXVaU0JYYjNKclozSnZkWEFnVTNSdmNtRm5aU0JEYkdGemN5QjJZWEpwWVdKc1pTQnBiaUIwYUdVZ1pXNTBjbmtnY0c5cGJuUWdhVzUwWlhKbVlXTmxJSEJ2YVc1MElIUnZJR0VnZEhsd1pTQmtaV052Y21GMFpXUWdkMmwwYUNCQ2JHOWpheXdnWVd4c0lHOW1JSFJvWlcwZ2JYVnpkQ0JpWlNCa1pXTnZjbUYwWldRZ2QybDBhQ0JCYkdsaGMyVmtMaUJGYm5SeWVTQndiMmx1ZENCcFpDQUFWMmhsYmlCa1pXTnNZWEpwYm1jZ1YyOXlhMmR5YjNWd1RXVnRiM0o1Ulhod2JHbGphWFJNWVhsdmRYUkxTRklzSUdWcGRHaGxjaUJoYkd3Z2IzSWdibTl1WlNCdlppQjBhR1VnVjI5eWEyZHliM1Z3SUZOMGIzSmhaMlVnUTJ4aGMzTWdkbUZ5YVdGaWJHVnpJR2x1SUhSb1pTQmxiblJ5ZVNCd2IybHVkQ0JwYm5SbGNtWmhZMlVnYlhWemRDQndiMmx1ZENCMGJ5QnpkSEoxWTNRZ2RIbHdaWE1nWkdWamIzSmhkR1ZrSUhkcGRHZ2dRbXh2WTJzdUlDQkZiblJ5ZVNCd2IybHVkQ0JwWkNBQUlHUmxZMjl5WVhSbFpDQjJZWEpwWVdKc1pTQnRkWE4wSUc1dmRDQmlaU0IxYzJWa0lHbHVJR1p5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQmhjeUJoYmlCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5Qm1iM0lnUlc1MGNua2dVRzlwYm5RZ2FXUWdBQ0JrWldOdmNtRjBaV1FnZG1GeWFXRmliR1VnYlhWemRDQnViM1FnWW1VZ2RYTmxaQ0JwYmlCMlpYSjBaWGdnWlhobFkzVjBhVzl1SUcxdlpHVnNJR0Z6SUdGdUlFbHVjSFYwSUhOMGIzSmhaMlVnWTJ4aGMzTWdabTl5SUVWdWRISjVJRkJ2YVc1MElHbGtJQUFnZDJsMGFDQkpibkIxZENCcGJuUmxjbVpoWTJWeklIZHBkR2dnYVc1MFpXZGxjaUJ2Y2lCbWJHOWhkQ0IwZVhCbElHMTFjM1FnYUdGMlpTQmhJRVpzWVhRZ1pHVmpiM0poZEdsdmJpQm1iM0lnUlc1MGNua2dVRzlwYm5RZ2FXUWdBRlJvWlhKbElHMTFjM1FnWW1VZ1lYUWdiVzl6ZENCdmJtVWdiMkpxWldOMElIQmxjaUJUZEc5eVlXZGxJRU5zWVhOeklIUm9ZWFFnWTJGdUlHTnZiblJoYVc0Z1lTQnpkSEoxWTNSMWNtVWdkSGx3WlNCamIyNTBZV2x1YVc1bklHMWxiV0psY25NZ1pHVmpiM0poZEdWa0lIZHBkR2dnUW5WcGJIUkpiaXdnWTI5dWMzVnRaV1FnY0dWeUlHVnVkSEo1TFhCdmFXNTBMaUJGYm5SeWVTQlFiMmx1ZENCcFpDQUFTVzUyWVd4cFpDQjFjMlVnYjJZZ1puVnVZM1JwYjI0Z2NtVnpkV3gwSUdsa0lBQkpiblpoYkdsa0lIVnpaU0J2WmlCbWRXNWpkR2x2YmlCMGVYQmxJSEpsYzNWc2RDQnBaQ0FBU1c1MllXeHBaQ0JQY0ZOM2FYUmphRG9nYzJWc1pXTjBiM0lnYVdRZ0FFbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCbGJYQjBlU0JsZUdWamRYUnBiMjRnYlc5a1pXeHpJR1p2Y2lCbWRXNWpkR2x2YmlCcFpDQUFLU0JqWVc1dWIzUWdZbVVnWVhCd2JHbGxaQ0IwYnlCbWRXNWpkR2x2YmlCcFpDQUFTVzUwWlhKdVlXd2daWEp5YjNJNklHMXBjM05wYm1jZ1puVnVZM1JwYjI0Z2FXUWdBQ0FvWm5KdmJTQnZjbWxuYVc1aGJDQnBaQ0FBSUhWdVpHVnliSGxwYm1jZ2FXUWdBRzV2YmkxaWRXbHNkQzFwYmlCMllYSnBZV0pzWlhNZ2QybDBhR2x1SUdFZ2MybHVaMnhsSUhOMGNuVmpkSFZ5WlNrdUlGTjBjblZqZEhWeVpTQnBaQ0FBU1c1MllXeHBaQ0JCY25KaGVXVmtJQUJ5Wld4aGVHVmtJQUJEYjI1emRFOW1abk5sZENCcGJXRm5aU0J2Y0dWeVlXNWtJRzV2ZENCaGJHeHZkMlZrSUFCMWJuSmxjMjlzZG1Wa0lBQWdibTkwSUdWeGRXRnNJSFJ2SUdWNGNHVmpkR1ZrSUFBZ2FXNXdkWFJ6T2lCbGVIQmxZM1JsWkNBQUlHVnNaVzFsYm5Sek9pQmxlSEJsWTNSbFpDQUFLVG9nWkc5bGN5QnViM1FnWW5KaGJtTm9JSFJ2SUhSb1pTQmpiM0p5WlhOd2IyNWthVzVuSUd4dmIzQWdhR1ZoWkdWeUxDQmxlSEJsWTNSbFpDQUFKeXdnWlhod1pXTjBaV1FnQUVWNGNHVmpkR1ZrSUFCRGIyOXdaWEpoZEdsMlpTQnRZWFJ5YVhnZ2RIbHdaWE1nS0c5eUlIUjVjR1Z6SUdOdmJuUmhhVzVwYm1jZ2RHaGxiU2tnWTJGdUlHOXViSGtnWW1VZ1lXeHNiMk5oZEdWa0lBQTZJSFJ5ZFc1allYUmxaQ0FBUlhod1pXTjBaV1FnU1cxaFoyVWdUM0JsY21GdVpDQk1iMlFnZEc4Z1ltVWdabXh2WVhRZ2MyTmhiR0Z5SUhkb1pXNGdkWE5sWkNBQWFXMWhaMlVnWVdOalpYTnpJSEpsY1hWcGNtVmtJQUJGZUhCbFkzUmxaQ0JTWlhOMWJIUWdWSGx3WlNCemRISjFZM1FnYldWdFltVnlJSFI1Y0dWeklIUnZJR0psSUhWdWMybG5ibVZrSUFCd2NtVjJhVzkxYzJ4NUlHTnZibk4xYldWa0lBQkpiblpoYkdsa0lGTmhiWEJzWldRZ0FHTmhiR3hsWkNBQWFXNTBaWEp1WVd3Z1pYSnliM0k2SUhWdWFHRnVaR3hsWkNBQUlHMWhlU0J1YjNRZ1pYaGpaV1ZrSUFBZ2FHRnpJRk53WldOSlpDQUFJSGxwWld4a2FXNW5JRkpsYzNWc2RDQkpaQ0FBVDNCRmVIUkpibk4wSUhObGRDQkpaQ0FBVkhsd1pTQkpaQ0FBWTI5dVpteHBZM1JwYm1jZ1pHbGhaMjV2YzNScFl5QUFRR2x1ZEdWeWJtRnNLSE53YVhKMkxXRjBiMjFwWXlBQU9pQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGTnBlbVVnYVhNZ1lTQUFabWx5YzNRZ2JXVnRZbVZ5SUdFZ1pteHZZWFFnYzJOaGJHRnlJRzl5SUhabFkzUnZjaXdnYzJWamIyNWtJRzFsYldKbGNpQmhJQUFnWkc5bGN5QnViM1FnYUdGMlpTQmhJQUJsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRVY0Y0NCa1lYUmhJSFI1Y0dVZ2RHOGdZbVVnWVNBQWIzQmxjbUYwYjNJZ1hpQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFVsdVkyOXRhVzVuVW1GNVVHRjViRzloWkV0SVVpMHdORFk1T1YwZ0FGdFdWVWxFTFZabGNuUmxlRWx1WkdWNExWWmxjblJsZUVsdVpHVjRMVEEwTXprNVhTQUFXMVpWU1VRdFQySnFaV04wVW1GNVJHbHlaV04wYVc5dVMwaFNMVTlpYW1WamRGSmhlVVJwY21WamRHbHZia3RJVWkwd05ESTVPVjBnQUZ0V1ZVbEVMVU4xYkd4RWFYTjBZVzVqWlMxRGRXeHNSR2x6ZEdGdVkyVXRNRFF4T1RsZElBQmJWbFZKUkMxVVpYTnpRMjl2Y21RdFZHVnpjME52YjNKa0xUQTBNemc1WFNBQVcxWlZTVVF0UTJ4cGNFUnBjM1JoYm1ObExVTnNhWEJFYVhOMFlXNWpaUzB3TkRFNE9WMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1RIUk5ZWE5yTFZOMVltZHliM1Z3VEhSTllYTnJMVEEwTXpjNVhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFVkTVUweFRhR0Z5WldRdE1EUTJOamxkSUFCYlZsVkpSQzFUZFdKbmNtOTFjRWxrTFZOMVltZHliM1Z3U1dRdE1EUXpOamxkSUFCYlZsVkpSQzFNWVhWdVkyaFRhWHBsUzBoU0xVeGhkVzVqYUZOcGVtVkxTRkl0TURReU5qbGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFQzQkpiV0ZuWlZGMVpYSjVVMmw2WlV4dlpDMHdORFkxT1YwZ0FGdFdWVWxFTFZOaGJYQnNaVTFoYzJzdFUyRnRjR3hsVFdGemF5MHdORE0xT1YwZ0FGdFdWVWxFTFVsdWRtOWpZWFJwYjI1SlpDMUpiblp2WTJGMGFXOXVTV1F0TURReU5UbGRJQUJiVmxWSlJDMVNZWGxVYldGNFMwaFNMVkpoZVZSdFlYaExTRkl0TURRek5EbGRJQUJiVmxWSlJDMUpibU52YldsdVoxSmhlVVpzWVdkelMwaFNMVWx1WTI5dGFXNW5VbUY1Um14aFozTkxTRkl0TURReU5EbGRJQUJiVmxWSlJDMUlaV3h3WlhKSmJuWnZZMkYwYVc5dUxVaGxiSEJsY2tsdWRtOWpZWFJwYjI0dE1EUXlNemxkSUFCYlZsVkpSQzFYYjNKc1pGSmhlVVJwY21WamRHbHZia3RJVWkxWGIzSnNaRkpoZVVScGNtVmpkR2x2Ymt0SVVpMHdORFF5T1YwZ0FGdFdWVWxFTFVaeWIyNTBSbUZqYVc1bkxVWnliMjUwUm1GamFXNW5MVEEwTWpJNVhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFV4dlkyRjBhVzl1TFRBME9URTVYU0FBVzFaVlNVUXRVRzl6YVhScGIyNHRVRzl6YVhScGIyNHRNRFF6TVRsZElBQmJWbFZKUkMxR2NtRm5TVzUyYjJOaGRHbHZia052ZFc1MFJWaFVMVVp5WVdkSmJuWnZZMkYwYVc5dVEyOTFiblJGV0ZRdE1EUXlNVGxkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRVMmhoWkdWeVVtVmpiM0prUW5WbVptVnlTMGhTTFRBM01URTVYU0FBVzFaVlNVUXRVR0YwWTJoV1pYSjBhV05sY3kxUVlYUmphRlpsY25ScFkyVnpMVEEwTXpBNVhTQUFXMVpWU1VRdFJISmhkMGx1WkdWNExVUnlZWGRKYm1SbGVDMHdOREl3T1YwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFTWVhsUVlYbHNiMkZrUzBoU0xUQTBOams0WFNBQVcxWlZTVVF0Vm1WeWRHVjRTVzVrWlhndFZtVnlkR1Y0U1c1a1pYZ3RNRFF6T1RoZElBQmJWbFZKUkMxT2RXMVhiM0pyWjNKdmRYQnpMVTUxYlZkdmNtdG5jbTkxY0hNdE1EUXlPVGhkSUFCYlZsVkpSQzFEZFd4c1JHbHpkR0Z1WTJVdFEzVnNiRVJwYzNSaGJtTmxMVEEwTVRrNFhTQUFXMVpWU1VRdFZHVnpjME52YjNKa0xWUmxjM05EYjI5eVpDMHdORE00T0YwZ0FGdFdWVWxFTFVOc2FYQkVhWE4wWVc1alpTMURiR2x3UkdsemRHRnVZMlV0TURReE9EaGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFNXNXdkWFF0TURZM056aGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFNXNXdkWFJCZEhSaFkyaHRaVzUwU1c1a1pYZ3RNRFkyTnpoZElBQmJWbFZKUkMxVGRXSm5jbTkxY0V4MFRXRnpheTFUZFdKbmNtOTFjRXgwVFdGemF5MHdORE0zT0YwZ0FGdFdWVWxFTFZOMVltZHliM1Z3U1dRdFUzVmlaM0p2ZFhCSlpDMHdORE0yT0YwZ0FGdFdWVWxFTFV4aGRXNWphRWxrUzBoU0xVeGhkVzVqYUVsa1MwaFNMVEEwTWpZNFhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU5d1NXMWhaMlZVWlhobGJGQnZhVzUwWlhJdE1EUTJOVGhkSUFCYlZsVkpSQzFUWVcxd2JHVk5ZWE5yTFZOaGJYQnNaVTFoYzJzdE1EUXpOVGhkSUFCYlZsVkpSQzFKYm5adlkyRjBhVzl1U1dRdFNXNTJiMk5oZEdsdmJrbGtMVEEwTWpVNFhTQUFXMVpWU1VRdFVtRjVWRzFoZUV0SVVpMVNZWGxVYldGNFMwaFNMVEEwTXpRNFhTQUFXMVpWU1VRdFNXNWpiMjFwYm1kU1lYbEdiR0ZuYzB0SVVpMUpibU52YldsdVoxSmhlVVpzWVdkelMwaFNMVEEwTWpRNFhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU1dmJtVXRNRFEyTXpoZElBQmJWbFZKUkMxSGJHOWlZV3hKYm5adlkyRjBhVzl1U1dRdFIyeHZZbUZzU1c1MmIyTmhkR2x2Ymtsa0xUQTBNak00WFNBQVcxWlZTVVF0VjI5eWJHUlNZWGxFYVhKbFkzUnBiMjVMU0ZJdFYyOXliR1JTWVhsRWFYSmxZM1JwYjI1TFNGSXRNRFEwTWpoZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VEc5allYUnBiMjR0TURRNU1UaGRJQUJiVmxWSlJDMVFiM05wZEdsdmJpMVFiM05wZEdsdmJpMHdORE14T0YwZ0FGdFdWVWxFTFVaeVlXZEpiblp2WTJGMGFXOXVRMjkxYm5SRldGUXRSbkpoWjBsdWRtOWpZWFJwYjI1RGIzVnVkRVZZVkMwd05ESXhPRjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVFkWE5vUTI5dWMzUmhiblF0TURZNE1EaGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFVHaDVjMmxqWVd4VGRHOXlZV2RsUW5WbVptVnlOalF0TURRM01EaGRJQUJiVmxWSlJDMVdhV1YzY0c5eWRFbHVaR1Y0TFZacFpYZHdiM0owU1c1a1pYZ3RNRFEwTURoZElBQmJWbFZKUkMxUVlYUmphRlpsY25ScFkyVnpMVkJoZEdOb1ZtVnlkR2xqWlhNdE1EUXpNRGhkSUFCYlZsVkpSQzFFY21GM1NXNWtaWGd0UkhKaGQwbHVaR1Y0TFRBME1qQTRYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxWTjFZbWR5YjNWd1ZtOTBaVXRJVWkwd05qazVOMTBnQUZ0V1ZVbEVMVlJsYzNOTVpYWmxiRWx1Ym1WeUxWUmxjM05NWlhabGJFbHVibVZ5TFRBME16azNYU0FBVzFaVlNVUXRUblZ0VjI5eWEyZHliM1Z3Y3kxT2RXMVhiM0pyWjNKdmRYQnpMVEEwTWprM1hTQUFXMVpWU1VRdFEzVnNiRVJwYzNSaGJtTmxMVU4xYkd4RWFYTjBZVzVqWlMwd05ERTVOMTBnQUZ0V1ZVbEVMVlJsYzNORGIyOXlaQzFVWlhOelEyOXZjbVF0TURRek9EZGRJQUJiVmxWSlJDMURiR2x3UkdsemRHRnVZMlV0UTJ4cGNFUnBjM1JoYm1ObExUQTBNVGczWFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVkJsY2xabGNuUmxlRXRJVWkwd05qYzNOMTBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVBjRWx0WVdkbExUQTBOemMzWFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVlZ1YVdadmNtMURiMjV6ZEdGdWRDMHdOalkzTjEwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFKYm5aaGNtbGhiblF0TURRMk56ZGRJQUJiVmxWSlJDMVRkV0puY205MWNFeGxUV0Z6YXkxVGRXSm5jbTkxY0V4bFRXRnpheTB3TkRNM04xMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxT2IyNWxMVEEwTmpZM1hTQUFXMVpWU1VRdFUzVmlaM0p2ZFhCSlpDMVRkV0puY205MWNFbGtMVEEwTXpZM1hTQUFXMVpWU1VRdFRHRjFibU5vU1dSTFNGSXRUR0YxYm1Ob1NXUkxTRkl0TURReU5qZGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFQzQlVlWEJsU1cxaFoyVXRNRFEyTlRkZElBQmJWbFZKUkMxVFlXMXdiR1ZOWVhOckxWTmhiWEJzWlUxaGMyc3RNRFF6TlRkZElBQmJWbFZKUkMxSmJuWnZZMkYwYVc5dVNXUXRTVzUyYjJOaGRHbHZia2xrTFRBME1qVTNYU0FBVzFaVlNVUXRVbUY1UjJWdmJXVjBjbmxKYm1SbGVFdElVaTFTWVhsSFpXOXRaWFJ5ZVVsdVpHVjRTMGhTTFRBME16UTNYU0FBVzFaVlNVUXRTR2wwVkU1V0xVaHBkRlJPVmkwd05ESTBOMTBnQUZ0V1ZVbEVMVU4xYkd4TllYTnJTMGhTTFVOMWJHeE5ZWE5yUzBoU0xUQTJOek0zWFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTV2Ym1VdE1EUTJNemRkSUFCYlZsVkpSQzFRY21sdGFYUnBkbVZKWkMxUWNtbHRhWFJwZG1WSlpDMHdORE16TjEwZ0FGdFdWVWxFTFVkc2IySmhiRWx1ZG05allYUnBiMjVKWkMxSGJHOWlZV3hKYm5adlkyRjBhVzl1U1dRdE1EUXlNemRkSUFCYlZsVkpSQzFYYjNKclozSnZkWEJUYVhwbExWZHZjbXRuY205MWNGTnBlbVV0TURRME1qZGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFRHOWpZWFJwYjI0dE1EUTVNVGRkSUFCYlZsVkpSQzFRYjJsdWRGTnBlbVV0VUc5cGJuUlRhWHBsTFRBME16RTNYU0FBVzFaVlNVUXRSbkpoWjBsdWRtOWpZWFJwYjI1RGIzVnVkRVZZVkMxR2NtRm5TVzUyYjJOaGRHbHZia052ZFc1MFJWaFVMVEEwTWpFM1hTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFZWdWFXWnZjbTB0TURZNE1EZGRJQUJiVmxWSlJDMVdhV1YzY0c5eWRFbHVaR1Y0TFZacFpYZHdiM0owU1c1a1pYZ3RNRFEwTURkZElBQmJWbFZKUkMxUFltcGxZM1JVYjFkdmNteGtTMGhTTFU5aWFtVmpkRlJ2VjI5eWJHUkxTRkl0TURRek1EZGRJQUJiVmxWSlJDMUVjbUYzU1c1a1pYZ3RSSEpoZDBsdVpHVjRMVEEwTWpBM1hTQUFXMVpWU1VRdFZHVnpjMHhsZG1Wc1NXNXVaWEl0VkdWemMweGxkbVZzU1c1dVpYSXRNRFF6T1RaZElBQmJWbFZKUkMxT2RXMVhiM0pyWjNKdmRYQnpMVTUxYlZkdmNtdG5jbTkxY0hNdE1EUXlPVFpkSUFCYlZsVkpSQzFEZFd4c1JHbHpkR0Z1WTJVdFEzVnNiRVJwYzNSaGJtTmxMVEEwTVRrMlhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU1dmJtVXRNRFEyT0RaZElBQmJWbFZKUkMxUWNtbHRhWFJwZG1WVGFHRmthVzVuVW1GMFpVdElVaTFRY21sdGFYUnBkbVZUYUdGa2FXNW5VbUYwWlV0SVVpMHdORFE0TmwwZ0FGdFdWVWxFTFVKaGMyVldaWEowWlhndFFtRnpaVlpsY25SbGVDMHdOREU0TmwwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFWYm1sbWIzSnRMVEEyTmpjMlhTQUFXMVpWU1VRdFUzVmlaM0p2ZFhCTVpVMWhjMnN0VTNWaVozSnZkWEJNWlUxaGMyc3RNRFF6TnpaZElBQmJWbFZKUkMxTVlYbGxjaTFNWVhsbGNpMHdOREkzTmwwZ0FGdFdWVWxFTFV4aGRXNWphRWxrUzBoU0xVeGhkVzVqYUVsa1MwaFNMVEEwTWpZMlhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU5d1ZIbHdaVWx0WVdkbExUQTBOalUyWFNBQVcxWlZTVVF0VTJGdGNHeGxTV1F0VTJGdGNHeGxTV1F0TURRek5UWmRJQUJiVmxWSlJDMUpibk4wWVc1alpVbGtMVWx1YzNSaGJtTmxTV1F0TURReU5UWmRJQUJiVmxWSlJDMUNZWEo1UTI5dmNtUkxTRkl0UW1GeWVVTnZiM0prUzBoU0xUQTBNVFUyWFNBQVcxWlZTVVF0VW1GNVIyVnZiV1YwY25sSmJtUmxlRXRJVWkxU1lYbEhaVzl0WlhSeWVVbHVaR1Y0UzBoU0xUQTBNelEyWFNBQVcxWlZTVVF0U0dsMFZFNVdMVWhwZEZST1ZpMHdOREkwTmwwZ0FGdFdWVWxFTFVOMWJHeE5ZWE5yUzBoU0xVTjFiR3hOWVhOclMwaFNMVEEyTnpNMlhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU1dmJtVXRNRFEyTXpaZElBQmJWbFZKUkMxWGIzSnNaRlJ2VDJKcVpXTjBTMGhTTFZkdmNteGtWRzlQWW1wbFkzUkxTRkl0TURRME16WmRJQUJiVmxWSlJDMUhiRzlpWVd4SmJuWnZZMkYwYVc5dVNXUXRSMnh2WW1Gc1NXNTJiMk5oZEdsdmJrbGtMVEEwTWpNMlhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFV4dlkyRnNVMmw2WlMwd05qUXlObDBnQUZ0V1ZVbEVMVmR2Y210bmNtOTFjRk5wZW1VdFYyOXlhMmR5YjNWd1UybDZaUzB3TkRReU5sMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxTWIyTmhkR2x2Ymkwd05Ea3hObDBnQUZ0V1ZVbEVMVkJ2YVc1MFUybDZaUzFRYjJsdWRGTnBlbVV0TURRek1UWmRJQUJiVmxWSlJDMUdjbUZuUkdWd2RHZ3RSbkpoWjBSbGNIUm9MVEEwTWpFMlhTQUFXMVpWU1VRdFZtbGxkM0J2Y25SSmJtUmxlQzFXYVdWM2NHOXlkRWx1WkdWNExUQTBOREEyWFNBQVcxWlZTVVF0VDJKcVpXTjBWRzlYYjNKc1pFdElVaTFQWW1wbFkzUlViMWR2Y214a1MwaFNMVEEwTXpBMlhTQUFXMVpWU1VRdFJHVjJhV05sU1c1a1pYZ3RSR1YyYVdObFNXNWtaWGd0TURReU1EWmRJQUJiVmxWSlJDMVVaWE56VEdWMlpXeEpibTVsY2kxVVpYTnpUR1YyWld4SmJtNWxjaTB3TkRNNU5WMGdBRnRXVlVsRUxVNTFiVk4xWW1keWIzVndjeTFPZFcxVGRXSm5jbTkxY0hNdE1EUXlPVFZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRUM0JIY205MWNFNXZibFZ1YVdadmNtMUNZV3hzYjNSQ2FYUkRiM1Z1ZEMwd05EWTROVjBnQUZ0V1ZVbEVMVkJ5YVcxcGRHbDJaVk5vWVdScGJtZFNZWFJsUzBoU0xWQnlhVzFwZEdsMlpWTm9ZV1JwYm1kU1lYUmxTMGhTTFRBME5EZzFYU0FBVzFaVlNVUXRRbUZ6WlZabGNuUmxlQzFDWVhObFZtVnlkR1Y0TFRBME1UZzFYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxWQjFjMmhEYjI1emRHRnVkQzB3TmpZM05WMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxR1VGSnZkVzVrYVc1blRXOWtaUzB3TkRZM05WMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1IzUk5ZWE5yTFZOMVltZHliM1Z3UjNSTllYTnJMVEEwTXpjMVhTQUFXMVpWU1VRdFRHRjVaWEl0VEdGNVpYSXRNRFF5TnpWZElBQmJWbFZKUkMxSmJuTjBZVzVqWlVsdVpHVjRMVWx1YzNSaGJtTmxTVzVrWlhndE1EUXlOalZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRWVzVwWm05eWJVTnZibk4wWVc1MExUQTBOalUxWFNBQVcxWlZTVVF0VTJGdGNHeGxTV1F0VTJGdGNHeGxTV1F0TURRek5UVmRJQUJiVmxWSlJDMUpibk4wWVc1alpVbGtMVWx1YzNSaGJtTmxTV1F0TURReU5UVmRJQUJiVmxWSlJDMUNZWEo1UTI5dmNtUkxTRkl0UW1GeWVVTnZiM0prUzBoU0xUQTBNVFUxWFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTV2Ym1VdE1EUTJORFZkSUFCYlZsVkpSQzFTWVhsSFpXOXRaWFJ5ZVVsdVpHVjRTMGhTTFZKaGVVZGxiMjFsZEhKNVNXNWtaWGhMU0ZJdE1EUXpORFZkSUFCYlZsVkpSQzFJYVhSVVRsWXRTR2wwVkU1V0xUQTBNalExWFNBQVcxWlZTVVF0UTNWc2JFMWhjMnRMU0ZJdFEzVnNiRTFoYzJ0TFNGSXRNRFkzTXpWZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VG05dVpTMHdORFl6TlYwZ0FGdFdWVWxFTFZkdmNteGtWRzlQWW1wbFkzUkxTRkl0VjI5eWJHUlViMDlpYW1WamRFdElVaTB3TkRRek5WMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxVmJtbG1iM0p0TFRBMk9USTFYU0FBVzFaVlNVUXRWMjl5YTJkeWIzVndVMmw2WlMxWGIzSnJaM0p2ZFhCVGFYcGxMVEEwTkRJMVhTQUFXMVpWU1VRdFJuSmhaMU4wWlc1amFXeFNaV1pGV0ZRdFJuSmhaMU4wWlc1amFXeFNaV1pGV0ZRdE1EUXlNalZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRURzlqWVhScGIyNHRNRFE1TVRWZElBQmJWbFZKUkMxUWIybHVkRk5wZW1VdFVHOXBiblJUYVhwbExUQTBNekUxWFNBQVcxWlZTVVF0Um5KaFowUmxjSFJvTFVaeVlXZEVaWEIwYUMwd05ESXhOVjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMUpibU52YldsdVowTmhiR3hoWW14bFJHRjBZVXRJVWkwd05EY3dOVjBnQUZ0V1ZVbEVMVlpwWlhkd2IzSjBTVzVrWlhndFZtbGxkM0J2Y25SSmJtUmxlQzB3TkRRd05WMGdBRnRXVlVsRUxVOWlhbVZqZEZSdlYyOXliR1JMU0ZJdFQySnFaV04wVkc5WGIzSnNaRXRJVWkwd05ETXdOVjBnQUZ0V1ZVbEVMVVJsZG1salpVbHVaR1Y0TFVSbGRtbGpaVWx1WkdWNExUQTBNakExWFNBQVcxWlZTVVF0VkdWemMweGxkbVZzU1c1dVpYSXRWR1Z6YzB4bGRtVnNTVzV1WlhJdE1EUXpPVFJkSUFCYlZsVkpSQzFPZFcxVGRXSm5jbTkxY0hNdFRuVnRVM1ZpWjNKdmRYQnpMVEEwTWprMFhTQUFXMVpWU1VRdFVISnBiV2wwYVhabFUyaGhaR2x1WjFKaGRHVkxTRkl0VUhKcGJXbDBhWFpsVTJoaFpHbHVaMUpoZEdWTFNGSXRNRFEwT0RSZElBQmJWbFZKUkMxQ1lYTmxWbVZ5ZEdWNExVSmhjMlZXWlhKMFpYZ3RNRFF4T0RSZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VDNCRmJuUnllVkJ2YVc1MExUQTJOamMwWFNBQVcxWlZTVVF0VTNWaVozSnZkWEJIZEUxaGMyc3RVM1ZpWjNKdmRYQkhkRTFoYzJzdE1EUXpOelJkSUFCYlZsVkpSQzFNWVhsbGNpMU1ZWGxsY2kwd05ESTNORjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVBjRWx0WVdkbFIyRjBhR1Z5TFRBME5qWTBYU0FBVzFaVlNVUXRTVzV6ZEdGdVkyVkpibVJsZUMxSmJuTjBZVzVqWlVsdVpHVjRMVEEwTWpZMFhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFZCcGVHVnNRMlZ1ZEdWeVNXNTBaV2RsY2kwd05EWTFORjBnQUZ0V1ZVbEVMVk5oYlhCc1pVbGtMVk5oYlhCc1pVbGtMVEEwTXpVMFhTQUFXMVpWU1VRdFNXNXpkR0Z1WTJWSlpDMUpibk4wWVc1alpVbGtMVEEwTWpVMFhTQUFXMVpWU1VRdFFtRnllVU52YjNKa1MwaFNMVUpoY25sRGIyOXlaRXRJVWkwd05ERTFORjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMUdiR0YwTFRBME56UTBYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVNXZibVV0TURRMk5EUmRJQUJiVmxWSlJDMUlhWFJMYVc1a1MwaFNMVWhwZEV0cGJtUkxTRkl0TURReU5EUmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFQzQldZWEpwWVdKc1pTMHdORGN6TkYwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFPYjI1bExUQTBOak0wWFNBQVcxWlZTVVF0VjI5eWJHUlViMDlpYW1WamRFdElVaTFYYjNKc1pGUnZUMkpxWldOMFMwaFNMVEEwTkRNMFhTQUFXMVpWU1VRdFVISnBiV2wwYVhabFNXUXRVSEpwYldsMGFYWmxTV1F0TURRek16UmRJQUJiVmxWSlJDMUdkV3hzZVVOdmRtVnlaV1JGV0ZRdFJuVnNiSGxEYjNabGNtVmtSVmhVTFRBME1qTTBYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVTnZiWEJ2Ym1WdWRDMHdORGt5TkYwZ0FGdFdWVWxFTFZkdmNtdG5jbTkxY0Vsa0xWZHZjbXRuY205MWNFbGtMVEEwTkRJMFhTQUFXMVpWU1VRdFJuSmhaMU4wWlc1amFXeFNaV1pGV0ZRdFJuSmhaMU4wWlc1amFXeFNaV1pGV0ZRdE1EUXlNalJkSUFCYlZsVkpSQzFRYjJsdWRGTnBlbVV0VUc5cGJuUlRhWHBsTFRBME16RTBYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVOXdWSGx3WlVsdFlXZGxMVEEyTWpFMFhTQUFXMVpWU1VRdFJuSmhaMFJsY0hSb0xVWnlZV2RFWlhCMGFDMHdOREl4TkYwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFEWVd4c1lXSnNaVVJoZEdGTFNGSXRNRFEzTURSZElBQmJWbFZKUkMxV2FXVjNjRzl5ZEVsdVpHVjRMVlpwWlhkd2IzSjBTVzVrWlhndE1EUTBNRFJkSUFCYlZsVkpSQzFQWW1wbFkzUlNZWGxQY21sbmFXNUxTRkl0VDJKcVpXTjBVbUY1VDNKcFoybHVTMGhTTFRBME16QTBYU0FBVzFaVlNVUXRWR1Z6YzB4bGRtVnNUM1YwWlhJdFZHVnpjMHhsZG1Wc1QzVjBaWEl0TURRek9UTmRJQUJiVmxWSlJDMU9kVzFUZFdKbmNtOTFjSE10VG5WdFUzVmlaM0p2ZFhCekxUQTBNamt6WFNBQVcxWlZTVVF0VTNWaVozSnZkWEJUYVhwbExWTjFZbWR5YjNWd1UybDZaUzB3TkRNNE0xMGdBRnRXVlVsRUxVeHZZMkZzU1c1MmIyTmhkR2x2Ymtsa0xVeHZZMkZzU1c1MmIyTmhkR2x2Ymtsa0xUQTBNamd6WFNBQVcxWlZTVVF0UW1GelpVbHVjM1JoYm1ObExVSmhjMlZKYm5OMFlXNWpaUzB3TkRFNE0xMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1IyVk5ZWE5yTFZOMVltZHliM1Z3UjJWTllYTnJMVEEwTXpjelhTQUFXMVpWU1VRdFRHRjVaWEl0VEdGNVpYSXRNRFF5TnpOZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VDJabWMyVjBMVEEwTmpZelhTQUFXMVpWU1VRdFNXNXpkR0Z1WTJWSmJtUmxlQzFKYm5OMFlXNWpaVWx1WkdWNExUQTBNall6WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTl5YVdkcGJreHZkMlZ5VEdWbWRDMHdORFkxTTEwZ0FGdFdWVWxFTFZKaGVWUnRhVzVMU0ZJdFVtRjVWRzFwYmt0SVVpMHdORE0xTTEwZ0FGdFdWVWxFTFVsdWMzUmhibU5sUTNWemRHOXRTVzVrWlhoTFNGSXRTVzV6ZEdGdVkyVkRkWE4wYjIxSmJtUmxlRXRJVWkwd05ESTFNMTBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMU9iMjVsTFRBME5qUXpYU0FBVzFaVlNVUXRTR2wwUzJsdVpFdElVaTFJYVhSTGFXNWtTMGhTTFRBME1qUXpYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVOXdUV1Z0YjNKNVFtRnljbWxsY2kwd05EY3pNMTBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMU9iMjVsTFRBME5qTXpYU0FBVzFaVlNVUXRWMjl5YkdSU1lYbFBjbWxuYVc1TFNGSXRWMjl5YkdSU1lYbFBjbWxuYVc1TFNGSXRNRFEwTXpOZElBQmJWbFZKUkMxR2RXeHNlVU52ZG1WeVpXUkZXRlF0Um5Wc2JIbERiM1psY21Wa1JWaFVMVEEwTWpNelhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFVOdmJYQnZibVZ1ZEMwd05Ea3lNMTBnQUZ0V1ZVbEVMVmR2Y210bmNtOTFjRWxrTFZkdmNtdG5jbTkxY0Vsa0xUQTBOREl6WFNBQVcxWlZTVVF0Um5KaFoxTjBaVzVqYVd4U1pXWkZXRlF0Um5KaFoxTjBaVzVqYVd4U1pXWkZXRlF0TURReU1qTmRJQUJiVmxWSlJDMVFiMmx1ZEVOdmIzSmtMVkJ2YVc1MFEyOXZjbVF0TURRek1UTmRJQUJiVmxWSlJDMUdjbUZuUkdWd2RHZ3RSbkpoWjBSbGNIUm9MVEEwTWpFelhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFVOdmJYQnZibVZ1ZEMwd056Y3dNMTBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMUlhWFJCZEhSeWFXSjFkR1ZMU0ZJdE1EUTNNRE5kSUFCYlZsVkpSQzFXYVdWM1NXNWtaWGd0Vm1sbGQwbHVaR1Y0TFRBME5EQXpYU0FBVzFaVlNVUXRUMkpxWldOMFVtRjVUM0pwWjJsdVMwaFNMVTlpYW1WamRGSmhlVTl5YVdkcGJrdElVaTB3TkRNd00xMGdBRnRXVlVsRUxWTm9ZV1JwYm1kU1lYUmxTMGhTTFZOb1lXUnBibWRTWVhSbFMwaFNMVEEwTkRreVhTQUFXMVpWU1VRdFZHVnpjMHhsZG1Wc1QzVjBaWEl0VkdWemMweGxkbVZzVDNWMFpYSXRNRFF6T1RKZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VDNCRGIyNTBjbTlzUW1GeWNtbGxjaTB3TkRZNE1sMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1UybDZaUzFUZFdKbmNtOTFjRk5wZW1VdE1EUXpPREpkSUFCYlZsVkpSQzFNYjJOaGJFbHVkbTlqWVhScGIyNUpaQzFNYjJOaGJFbHVkbTlqWVhScGIyNUpaQzB3TkRJNE1sMGdBRnRXVlVsRUxVSmhjMlZKYm5OMFlXNWpaUzFDWVhObFNXNXpkR0Z1WTJVdE1EUXhPREpkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRURzlqWVhScGIyNHRNRFkyTnpKZElBQmJWbFZKUkMxVGRXSm5jbTkxY0VkbFRXRnpheTFUZFdKbmNtOTFjRWRsVFdGemF5MHdORE0zTWwwZ0FGdFdWVWxFTFV4aGVXVnlMVXhoZVdWeUxUQTBNamN5WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTltWm5ObGRDMHdORFkyTWwwZ0FGdFdWVWxFTFZOaGJYQnNaVkJ2YzJsMGFXOXVMVk5oYlhCc1pWQnZjMmwwYVc5dUxUQTBNell5WFNBQVcxWlZTVVF0UW1GeWVVTnZiM0prVG05UVpYSnpjRXRJVWkxQ1lYSjVRMjl2Y21ST2IxQmxjbk53UzBoU0xUQTBNVFl5WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVUpoYzJVdE1EYzJOVEpkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRUM0JTWldGa1EyeHZZMnRMU0ZJdE1EUTJOVEpkSUFCYlZsVkpSQzFTWVhsVWJXbHVTMGhTTFZKaGVWUnRhVzVMU0ZJdE1EUXpOVEpkSUFCYlZsVkpSQzFKYm5OMFlXNWpaVU4xYzNSdmJVbHVaR1Y0UzBoU0xVbHVjM1JoYm1ObFEzVnpkRzl0U1c1a1pYaExTRkl0TURReU5USmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFRtOXVaUzB3TkRZME1sMGdBRnRXVlVsRUxVaHBkRXRwYm1STFNGSXRTR2wwUzJsdVpFdElVaTB3TkRJME1sMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxUGNFMWxiVzl5ZVVKaGNuSnBaWEl0TURRM016SmRJQUJiVmxWSlJDMVhiM0pzWkZKaGVVOXlhV2RwYmt0SVVpMVhiM0pzWkZKaGVVOXlhV2RwYmt0SVVpMHdORFF6TWwwZ0FGdFdWVWxFTFVaMWJHeDVRMjkyWlhKbFpFVllWQzFHZFd4c2VVTnZkbVZ5WldSRldGUXRNRFF5TXpKZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0UTI5dGNHOXVaVzUwTFRBME9USXlYU0FBVzFaVlNVUXRWMjl5YTJkeWIzVndTV1F0VjI5eWEyZHliM1Z3U1dRdE1EUTBNakpkSUFCYlZsVkpSQzFHY21GblUybDZaVVZZVkMxR2NtRm5VMmw2WlVWWVZDMHdOREl5TWwwZ0FGdFdWVWxFTFZCdmFXNTBRMjl2Y21RdFVHOXBiblJEYjI5eVpDMHdORE14TWwwZ0FGdFdWVWxFTFVaeVlXZERiMjl5WkMxR2NtRm5RMjl2Y21RdE1EUXlNVEpkSUFCYlZsVkpSQzFXYVdWM1NXNWtaWGd0Vm1sbGQwbHVaR1Y0TFRBME5EQXlYU0FBVzFaVlNVUXRUMkpxWldOMFVtRjVUM0pwWjJsdVMwaFNMVTlpYW1WamRGSmhlVTl5YVdkcGJrdElVaTB3TkRNd01sMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxR2JHRjBMVEEyTWpBeVhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFUxbGMyaEZXRlF0TURjeE1ESmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFJHVnpZM0pwY0hSdmNsTmxkQzB3TmpRNU1WMGdBRnRXVlVsRUxWTm9ZV1JwYm1kU1lYUmxTMGhTTFZOb1lXUnBibWRTWVhSbFMwaFNMVEEwTkRreFhTQUFXMVpWU1VRdFZHVnpjMHhsZG1Wc1QzVjBaWEl0VkdWemMweGxkbVZzVDNWMFpYSXRNRFF6T1RGZElBQmJWbFZKUkMxRGJHbHdSR2x6ZEdGdVkyVXRRMnhwY0VScGMzUmhibU5sTFRBME1Ua3hYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVSmhjMlV0TURRM09ERmRJQUJiVmxWSlJDMVRkV0puY205MWNFeHZZMkZzU1c1MmIyTmhkR2x2Ymtsa0xWTjFZbWR5YjNWd1RHOWpZV3hKYm5adlkyRjBhVzl1U1dRdE1EUXpPREZkSUFCYlZsVkpSQzFNYjJOaGJFbHVkbTlqWVhScGIyNUpaQzFNYjJOaGJFbHVkbTlqWVhScGIyNUpaQzB3TkRJNE1WMGdBRnRXVlVsRUxVSmhjMlZKYm5OMFlXNWpaUzFDWVhObFNXNXpkR0Z1WTJVdE1EUXhPREZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRUM0JVZVhCbFUyRnRjR3hsWkVsdFlXZGxMVEEyTmpjeFhTQUFXMVpWU1VRdFUzVmlaM0p2ZFhCRmNVMWhjMnN0VTNWaVozSnZkWEJGY1UxaGMyc3RNRFF6TnpGZElBQmJWbFZKUkMxTVlYVnVZMmhUYVhwbFMwaFNMVXhoZFc1amFGTnBlbVZMU0ZJdE1EUXlOekZkSUFCYlZsVkpSQzFUWVcxd2JHVlFiM05wZEdsdmJpMVRZVzF3YkdWUWIzTnBkR2x2Ymkwd05ETTJNVjBnQUZ0V1ZVbEVMVUpoY25sRGIyOXlaRTV2VUdWeWMzQkxTRkl0UW1GeWVVTnZiM0prVG05UVpYSnpjRXRJVWkwd05ERTJNVjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMUNZWE5sTFRBM05qVXhYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVOXdWbUZ5YVdGaWJHVXRNRFEyTlRGZElBQmJWbFZKUkMxU1lYbFViV2x1UzBoU0xWSmhlVlJ0YVc1TFNGSXRNRFF6TlRGZElBQmJWbFZKUkMxSmJuTjBZVzVqWlVOMWMzUnZiVWx1WkdWNFMwaFNMVWx1YzNSaGJtTmxRM1Z6ZEc5dFNXNWtaWGhMU0ZJdE1EUXlOVEZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRUbTl1WlMwd05EWTBNVjBnQUZ0V1ZVbEVMVWhsYkhCbGNrbHVkbTlqWVhScGIyNHRTR1ZzY0dWeVNXNTJiMk5oZEdsdmJpMHdOREkwTVYwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFQY0VGMGIyMXBZMHh2WVdRdE1EUTNNekZkSUFCYlZsVkpSQzFYYjNKc1pGSmhlVTl5YVdkcGJrdElVaTFYYjNKc1pGSmhlVTl5YVdkcGJrdElVaTB3TkRRek1WMGdBRnRXVlVsRUxVWnliMjUwUm1GamFXNW5MVVp5YjI1MFJtRmphVzVuTFRBME1qTXhYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVTnZiWEJ2Ym1WdWRDMHdORGt5TVYwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFPYjI1bExUQTNNekl4WFNBQVcxWlZTVVF0VUc5emFYUnBiMjR0VUc5emFYUnBiMjR0TURRek1qRmRJQUJiVmxWSlJDMUdjbUZuVTJsNlpVVllWQzFHY21GblUybDZaVVZZVkMwd05ESXlNVjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVBjRlI1Y0dWR2IzSjNZWEprVUc5cGJuUmxjaTB3TkRjeE1WMGdBRnRXVlVsRUxWQnZhVzUwUTI5dmNtUXRVRzlwYm5SRGIyOXlaQzB3TkRNeE1WMGdBRnRXVlVsRUxVWnlZV2REYjI5eVpDMUdjbUZuUTI5dmNtUXRNRFF5TVRGZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0U0dsMFFYUjBjbWxpZFhSbFMwaFNMVEEwTnpBeFhTQUFXMVpWU1VRdFZtbGxkMGx1WkdWNExWWnBaWGRKYm1SbGVDMHdORFF3TVYwZ0FGdFdWVWxFTFU5aWFtVmpkRkpoZVVScGNtVmpkR2x2Ymt0SVVpMVBZbXBsWTNSU1lYbEVhWEpsWTNScGIyNUxTRkl0TURRek1ERmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFJteGhkQzB3TmpJd01WMGdBRnRXVlVsRUxWTm9ZV1JwYm1kU1lYUmxTMGhTTFZOb1lXUnBibWRTWVhSbFMwaFNMVEEwTkRrd1hTQUFXMVpWU1VRdFZHVnpjMHhsZG1Wc1QzVjBaWEl0VkdWemMweGxkbVZzVDNWMFpYSXRNRFF6T1RCZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0U1c1d2RYUXRNRGN5T1RCZElBQmJWbFZKUkMxRGJHbHdSR2x6ZEdGdVkyVXRRMnhwY0VScGMzUmhibU5sTFRBME1Ua3dYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxWSmxjM1ZzZEMwd05EYzRNRjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVBjRlI1Y0dWU2RXNTBhVzFsUVhKeVlYa3RNRFEyT0RCZElBQmJWbFZKUkMxVGRXSm5jbTkxY0V4dlkyRnNTVzUyYjJOaGRHbHZia2xrTFZOMVltZHliM1Z3VEc5allXeEpiblp2WTJGMGFXOXVTV1F0TURRek9EQmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFJteGhkQzB3TkRZM01GMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1JYRk5ZWE5yTFZOMVltZHliM1Z3UlhGTllYTnJMVEEwTXpjd1hTQUFXMVpWU1VRdFRHRjFibU5vVTJsNlpVdElVaTFNWVhWdVkyaFRhWHBsUzBoU0xUQTBNamN3WFNBQVcxWlZTVVF0VTJGdGNHeGxVRzl6YVhScGIyNHRVMkZ0Y0d4bFVHOXphWFJwYjI0dE1EUXpOakJkSUFCYlZsVkpSQzFDWVhKNVEyOXZjbVJPYjFCbGNuTndTMGhTTFVKaGNubERiMjl5WkU1dlVHVnljM0JMU0ZJdE1EUXhOakJkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRRbUZ6WlMwd056WTFNRjBnQUZ0V1ZVbEVMVkpoZVZSdFlYaExTRkl0VW1GNVZHMWhlRXRJVWkwd05ETTFNRjBnQUZ0V1ZVbEVMVWx1WTI5dGFXNW5VbUY1Um14aFozTkxTRkl0U1c1amIyMXBibWRTWVhsR2JHRm5jMHRJVWkwd05ESTFNRjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMU9iMjVsTFRBME5qUXdYU0FBVzFaVlNVUXRTR1ZzY0dWeVNXNTJiMk5oZEdsdmJpMUlaV3h3WlhKSmJuWnZZMkYwYVc5dUxUQTBNalF3WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTl3UVhSdmJXbGpVM1J2Y21VdE1EUTNNekJkSUFCYlZsVkpSQzFYYjNKc1pGSmhlVVJwY21WamRHbHZia3RJVWkxWGIzSnNaRkpoZVVScGNtVmpkR2x2Ymt0SVVpMHdORFF6TUYwZ0FGdFdWVWxFTFZCeWFXMXBkR2wyWlVsa0xWQnlhVzFwZEdsMlpVbGtMVEEwTXpNd1hTQUFXMVpWU1VRdFJuSnZiblJHWVdOcGJtY3RSbkp2Ym5SR1lXTnBibWN0TURReU16QmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFEyOXRjRzl1Wlc1MExUQTBPVEl3WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVVY0WldOMWRHbHZiazF2WkdWc0xUQTNNekl3WFNBQVcxWlZTVVF0VUc5emFYUnBiMjR0VUc5emFYUnBiMjR0TURRek1qQmRJQUJiVmxWSlJDMUdjbUZuVTJsNlpVVllWQzFHY21GblUybDZaVVZZVkMwd05ESXlNRjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVFhSGx6YVdOaGJGTjBiM0poWjJWQ2RXWm1aWEkyTkMwd05EY3hNRjBnQUZ0V1ZVbEVMVkJoZEdOb1ZtVnlkR2xqWlhNdFVHRjBZMmhXWlhKMGFXTmxjeTB3TkRNeE1GMGdBRnRXVlVsRUxVWnlZV2REYjI5eVpDMUdjbUZuUTI5dmNtUXRNRFF5TVRCZElBQmJWbFZKUkMxV1pYSjBaWGhKYm1SbGVDMVdaWEowWlhoSmJtUmxlQzB3TkRRd01GMGdBRnRXVlVsRUxVOWlhbVZqZEZKaGVVUnBjbVZqZEdsdmJrdElVaTFQWW1wbFkzUlNZWGxFYVhKbFkzUnBiMjVMU0ZJdE1EUXpNREJkSUFCYlZsVkpSQzFEZFd4c1JHbHpkR0Z1WTJVdFEzVnNiRVJwYzNSaGJtTmxMVEEwTWpBd1hTQUFTVzUyWVd4cFpDQk5VeUFBVDNCMGFXOXVZV3dnU1cxaFoyVWdUM0JsY21GdVpITWdZWEpsSUc1dmRDQmhiR3h2ZDJWa0lHbHVJSFJvWlNCUGNHVnVRMHdnQUZSSlRsUmZWVTVTUlVGRFNFRkNURVVnQUhWdWFHRnVaR3hsWkNCbGVIQnlaWE56YVc5dUlHWnZjaUJKUkNBQWJXRnNabTl5YldWa0lFUmxjMk55YVhCMGIzSlRaWFFnWkdWamIzSmhkR2x2YmlCdmJpQkpSQ0FBYldGc1ptOXliV1ZrSUVKMWFXeDBTVzRnWkdWamIzSmhkR2x2YmlCdmJpQkpSQ0FBYldGc1ptOXliV1ZrSUVKcGJtUnBibWNnWkdWamIzSmhkR2x2YmlCdmJpQkpSQ0FBYldGc1ptOXliV1ZrSUdSbFkyOXlZWFJwYjI0Z2IyNGdTVVFnQUhWdWFHRnVaR3hsWkNCbGVIUmxibVJsWkNCcGJuTjBjblZqZEdsdmJpQnBiWEJ2Y25RZ2QybDBhQ0JKUkNBQWFXNTJZV3hwWkNCamIyNXpkR0Z1ZENCM2FYUm9JRWxFSUFCemRISjFZM1FnZDJsMGFDQkpSQ0FBYVc1MFpYSnVZV3dnWlhKeWIzSTZJSFZ1Y21WbmFYTjBaWEpsWkNCeVpYUjFjbTRnZEhsd1pTQm1iM0lnWm5WdVkzUnBiMjRnZDJsMGFDQkpSQ0FBVTFCSlVpMVdJSEJ2YVc1MFpYSWdkSGx3WlNCM2FYUm9JRWxFSUFCMWJtdHViM2R1SUZOUVNWSXRWaUIwZVhCbElIZHBkR2dnU1VRZ0FIWmhjbWxoWW14bElIZHBkR2dnU1VRZ0FDQnNaVzVuZEdnZ1NVUWdBR2x1ZG1Gc2FXUWdZWEp5WVhrZ2RIbHdaU0JKUkNBQWFXNTBaWEp1WVd3Z1pYSnliM0k2SUVsRUlBQXNJRWxFSUFCUGNFVnVkSEo1VUc5cGJuUWdSVzUwY25rZ1VHOXBiblFnUEdsa1BpQUFUM0JGZUdWamRYUnBiMjVOYjJSbElFVnVkSEo1SUZCdmFXNTBJRHhwWkQ0Z0FDQkRiMjV6ZEdsMGRXVnVkQ0E4YVdRK0lBQlBjRVoxYm1OMGFXOXVRMkZzYkNCQmNtZDFiV1Z1ZENBOGFXUStJQUFnUm05MWJtUWdjbVZ6ZFd4MElEeHBaRDRnQUNCa1pXTnZjbUYwYVc5dUlHOXVJSFJoY21kbGRDQThhV1ErSUFCUGNFeHBibVVnVkdGeVoyVjBJRHhwWkQ0Z0FDQndjbTkyYVdSbFpDQnBiaUJQY0VkeWIzVndUV1Z0WW1WeVJHVmpiM0poZEdVZ1ptOXlJSE4wY25WamRDQThhV1ErSUFBZ2NISnZkbWxrWldRZ2FXNGdUM0JOWlcxaVpYSkVaV052Y21GMFpTQm1iM0lnYzNSeWRXTjBJRHhwWkQ0Z0FITWdiR0Y1YjNWMElHUnZaWE1nYm05MElHMWhkR05vSUU5aWFtVmpkQ0E4YVdRK0lBQnpJSFI1Y0dVZ1pHOWxjeUJ1YjNRZ2JXRjBZMmdnVDJKcVpXTjBJRHhwWkQ0Z0FFOXdVM1J2Y21VZ1QySnFaV04wSUR4cFpENGdBRTl3Vkhsd1pVTnZiM0JsY21GMGFYWmxUV0YwY21sNFRsWWdVbTkzY3lBOGFXUStJQUJQY0ZSNWNHVkRiMjl3WlhKaGRHbDJaVTFoZEhKcGVFNVdJRU52YkhNZ1BHbGtQaUFBVDNCV1lYSnBZV0pzWlNCSmJtbDBhV0ZzYVhwbGNpQThhV1ErSUFCUGNGTjBiM0psSUhSNWNHVWdabTl5SUhCdmFXNTBaWElnUEdsa1BpQUFUM0JNYjJGa0lIUjVjR1VnWm05eUlIQnZhVzUwWlhJZ1BHbGtQaUFBSUdSdlpYTWdibTkwSUcxaGRHTm9JRkJ2YVc1MFpYSWdQR2xrUGlBQVQzQlRkRzl5WlNCUWIybHVkR1Z5SUR4cFpENGdBRTl3VEc5aFpDQlFiMmx1ZEdWeUlEeHBaRDRnQUU5d1RXVnRZbVZ5VG1GdFpTQk5aVzFpWlhJZ1BHbGtQaUFBVDNCSGNtOTFjRTFsYldKbGNrUmxZMjl5WVhSbElFUmxZMjl5WVhScGIyNGdaM0p2ZFhBZ1BHbGtQaUFBVDNCSGNtOTFjRVJsWTI5eVlYUmxJRVJsWTI5eVlYUnBiMjRnWjNKdmRYQWdQR2xrUGlBQVQzQkhjbTkxY0VSbFkyOXlZWFJsSUcxaGVTQnViM1FnZEdGeVoyVjBJRTl3UkdWamIzSmhkR2x2YmtkeWIzVndJRHhwWkQ0Z0FGUm9aU0JvYVdkb0xXOXlaR1Z5SUdKcGRITWdiMllnWVNCc2FYUmxjbUZzSUc1MWJXSmxjaUJwYmlCcGJuTjBjblZqZEdsdmJpQThhV1ErSUFCeklHTmhiR3huY21Gd2FDQmpiMjUwWVdsdWN5Qm1kVzVqZEdsdmJpQThhV1ErSUFBZ1lYSm5kVzFsYm5SekxpQlBjRlI1Y0dWR2RXNWpkR2x2YmlBOGFXUStJQUJQY0VaMWJtTjBhVzl1UTJGc2JDQkdkVzVqZEdsdmJpQThhV1ErSUFCeklIUjVjR1VnWkc5bGN5QnViM1FnYldGMFkyZ2dSblZ1WTNScGIyNGdQR2xrUGlBQVQzQlFhR2tnY21WbVpYSmxibU5sY3lCcGJtTnZiV2x1WnlCaVlYTnBZeUJpYkc5amF5QThhV1ErSUFCUGNGQm9hU2R6SUdsdVkyOXRhVzVuSUdKaGMybGpJR0pzYjJOcklEeHBaRDRnQUU5d1ZIbHdaVUZ5Y21GNUlFeGxibWQwYUNBOGFXUStJQUFnYVhNZ2JtOTBJR0VnY0hKbFpHVmpaWE56YjNJZ2IyWWdQR2xrUGlBQUlHRnpJR0Z1SUc5d1pYSmhibVFnYjJZZ1BHbGtQaUFBSUdSdlpYTWdibTkwSUcxaGRHTm9JR2x1WTI5dGFXNW5JSFpoYkhWbElEeHBaRDRnQUU5d1VtVjBkWEp1Vm1Gc2RXVWdWbUZzZFdVZ1BHbGtQaUFBVkdobElFSmhjMlVnUEdsa1BpQUFJR052Ym5SaGFXNXpJSE4wY25WamRIVnlaU0E4YVdRK0lBQWdhVzUwYnlCMGFHVWdjM1J5ZFdOMGRYSmxJRHhwWkQ0Z0FIUjVjR1V1SUZOMGNuVmpkSFZ5WlNBOGFXUStJQUJQY0ZCb2FTZHpJSEpsYzNWc2RDQjBlWEJsSUR4cFpENGdBSE53ZGpvNlQzQTZPazl3UTI5dmNHVnlZWFJwZG1WTllYUnlhWGhUZEc5eVpVNVdJRTlpYW1WamRDQjBlWEJsSUR4cFpENGdBRTl3VW1WMGRYSnVWbUZzZFdVZ2RtRnNkV1VuY3lCMGVYQmxJRHhwWkQ0Z0FDQnpkRzl5WVdkbElHTnNZWE56SUdadmNpQndiMmx1ZEdWeUlIUjVjR1VnUEdsa1BpQUFJR1J2WlhNZ2JtOTBJRzFoZEdOb0lIUm9aU0JHZFc1amRHbHZiaUJVZVhCbEozTWdjbVYwZFhKdUlIUjVjR1VnUEdsa1BpQUFUM0JIY205MWNFMWxiV0psY2tSbFkyOXlZWFJsSUZOMGNuVmpkSFZ5WlNCMGVYQmxJRHhwWkQ0Z0FFOXdUV1Z0WW1WeVJHVmpiM0poZEdVZ1UzUnlkV04wZFhKbElIUjVjR1VnUEdsa1BpQUFUM0JVZVhCbFZtVmpkRzl5SUVOdmJYQnZibVZ1ZENCVWVYQmxJRHhwWkQ0Z0FFOXdWSGx3WlVOdmIzQmxjbUYwYVhabFRXRjBjbWw0VGxZZ1EyOXRjRzl1Wlc1MElGUjVjR1VnUEdsa1BpQUFUM0JVZVhCbFFYSnlZWGtnUld4bGJXVnVkQ0JVZVhCbElEeHBaRDRnQUU5d1ZIbHdaVkoxYm5ScGJXVkJjbkpoZVNCRmJHVnRaVzUwSUZSNWNHVWdQR2xrUGlBQVQzQkdkVzVqZEdsdmJsQmhjbUZ0WlhSbGNpQlNaWE4xYkhRZ1ZIbHdaU0E4YVdRK0lBQlBjRU52Ym5OMFlXNTBVMkZ0Y0d4bGNpQlNaWE4xYkhRZ1ZIbHdaU0E4YVdRK0lBQlBjRVoxYm1OMGFXOXVJRkpsYzNWc2RDQlVlWEJsSUR4cFpENGdBRTl3UTI5dWMzUmhiblJPZFd4c0lGSmxjM1ZzZENCVWVYQmxJRHhwWkQ0Z0FFOXdSblZ1WTNScGIyNURZV3hzSUZKbGMzVnNkQ0JVZVhCbElEeHBaRDRnQUNCRGIyNXpkR2wwZFdWdWRDQmpiM1Z1ZENCa2IyVnpJRzV2ZENCdFlYUmphQ0JTWlhOMWJIUWdWSGx3WlNBOGFXUStJQUFnZG1WamRHOXlJR052YlhCdmJtVnVkQ0JqYjNWdWRDQmtiMlZ6SUc1dmRDQnRZWFJqYUNCU1pYTjFiSFFnVkhsd1pTQThhV1ErSUFCUGNGWmxZM1J2Y2xOb2RXWm1iR1VnWTI5dGNHOXVaVzUwSUd4cGRHVnlZV3h6SUdOdmRXNTBJR1J2WlhNZ2JtOTBJRzFoZEdOb0lGSmxjM1ZzZENCVWVYQmxJRHhwWkQ0Z0FDQkRiMjV6ZEdsMGRXVnVkQ0E4YVdRK0lHTnZkVzUwSUdSdlpYTWdibTkwSUcxaGRHTm9JRkpsYzNWc2RDQlVlWEJsSUR4cFpENGdBQ0JqYjIxd2IyNWxiblFnZEhsd1pTQmtiMlZ6SUc1dmRDQnRZWFJqYUNCU1pYTjFiSFFnVkhsd1pTQThhV1ErSUFCeklIUjVjR1VnWkc5bGN5QnViM1FnYldGMFkyZ2dVbVZ6ZFd4MElGUjVjR1VnUEdsa1BpQUFUM0JXWVhKcFlXSnNaU0JTWlhOMWJIUWdWSGx3WlNBOGFXUStJQUFnZEhsd1pTQmtiMlZ6SUc1dmRDQnRZWFJqYUNCMGFHVWdVbVZ6ZFd4MElGUjVjR1VnUEdsa1BpQUFRV3hzSUU5d1UyRnRjR3hsWkVsdFlXZGxJR2x1YzNSeWRXTjBhVzl1Y3lCdGRYTjBJR0psSUdsdUlIUm9aU0J6WVcxbElHSnNiMk5ySUdsdUlIZG9hV05vSUhSb1pXbHlJRkpsYzNWc2RDQThhV1ErSUdGeVpTQmpiMjV6ZFcxbFpDNGdUM0JUWVcxd2JHVmtTVzFoWjJVZ1VtVnpkV3gwSUZSNWNHVWdQR2xrUGlBQVQzQk1iMkZrSUZKbGMzVnNkQ0JVZVhCbElEeHBaRDRnQUhOd2RqbzZUM0E2T2s5d1EyOXZjR1Z5WVhScGRtVk5ZWFJ5YVhoTWIyRmtUbFlnVW1WemRXeDBJRlI1Y0dVZ1BHbGtQaUFBVDNCVWVYQmxVRzlwYm5SbGNpQlVlWEJsSUR4cFpENGdBRTl3Vkhsd1pVWjFibU4wYVc5dUlGQmhjbUZ0WlhSbGNpQlVlWEJsSUR4cFpENGdBRTl3Vkhsd1pWTjBjblZqZENCTlpXMWlaWElnVkhsd1pTQThhV1ErSUFCUGNGUjVjR1ZHZFc1amRHbHZiaUJTWlhSMWNtNGdWSGx3WlNBOGFXUStJQUJQY0VaMWJtTjBhVzl1SUVaMWJtTjBhVzl1SUZSNWNHVWdQR2xrUGlBQUlHbHVaR1Y0SUdseklHeGhjbWRsY2lCMGFHRnVJRlI1Y0dVZ1BHbGtQaUFBVDNCTlpXMWlaWEpPWVcxbElGUjVjR1VnUEdsa1BpQUFUM0JVZVhCbFEyOXZjR1Z5WVhScGRtVk5ZWFJ5YVhoT1ZpQlRZMjl3WlNBOGFXUStJQUJWYm1sbWIzSnRRMjl1YzNSaGJuUWdUM0JXWVhKcFlXSnNaU0E4YVdRK0lBQlFkWE5vUTI5dWMzUmhiblFnVDNCV1lYSnBZV0pzWlNBOGFXUStJQUJUZEc5eVlXZGxRblZtWm1WeUlFOXdWbUZ5YVdGaWJHVWdQR2xrUGlBQVZXNXBabTl5YlNCUGNGWmhjbWxoWW14bElEeHBaRDRnQUhNZ2RIbHdaU0JrYjJWeklHNXZkQ0J0WVhSamFDQlRiM1Z5WTJVZ1BHbGtQaUFBVkdGeVoyVjBJRzl3WlhKaGJtUWdQR2xrUGlBQVEyOXNkVzF1SUUxaGFtOXlJRzl3WlhKaGJtUWdQR2xrUGlBQVUybDZaU0J2Y0dWeVlXNWtJRHhwWkQ0Z0FGTjBjbWxrWlNCdmNHVnlZVzVrSUR4cFpENGdBRk52ZFhKalpTQnZjR1Z5WVc1a0lEeHBaRDRnQUU5d1ZtRnlhV0ZpYkdVc0lEeHBaRDRnQUNCb1pXRmtaV1FnWW5rZ1BFbEVQaUFBWW14dlkyc2dQRWxFUGlBQWIzQmxjbUYwYjNJZ1BqNGdBQ2tnTFQ0Z0FDY2dMVDRnQUc5d1pYSmhkRzl5SUQ0Z0FHOXdaWEpoZEc5eUlIdzlJQUJ2Y0dWeVlYUnZjaUJlUFNBQWIzQmxjbUYwYjNJZ1BqNDlJQUJ2Y0dWeVlYUnZjaUErUFNBQWIzQmxjbUYwYjNJZ1BUMGdBRzl3WlhKaGRHOXlJRHc4UFNBQWIzQmxjbUYwYjNJZ1BEMGdBRzl3WlhKaGRHOXlJQzg5SUFCdmNHVnlZWFJ2Y2lBdFBTQUFiM0JsY21GMGIzSWdLejBnQUc5d1pYSmhkRzl5SUNvOUlBQnZjR1Z5WVhSdmNpQW1QU0FBYjNCbGNtRjBiM0lnSlQwZ0FHOXdaWEpoZEc5eUlDRTlJQUFnUFNBQWIzQmxjbUYwYjNJZ1BEd2dBRzl3WlhKaGRHOXlJRHdnQURzZ0FIVnVhR0Z1Wkd4bFpDQnBiV0ZuWlNCeGRXVnllVG9nQUNCdmJpQmhJSEoxYm5ScGJXVWdZWEp5WVhrNklBQlZibWhoYm1Sc1pXUWdabXh2WVhRZ2JHbDBaWEpoYkNCemRXWm1hWGc2SUFCVmJtaGhibVJzWldRZ2FXNTBaV2RsY2lCc2FYUmxjbUZzSUhOMVptWnBlRG9nQUVWNGNHVmpkR1ZrSURZMExXSnBkQ0IxYVc1MElITmpZV3hoY2lCdmNpQXlMV052YlhCdmJtVnVkQ0F6TWkxaWFYUWdkV2x1ZENCMlpXTjBiM0lnWVhNZ2FXNXdkWFE2SUFCRmVIQmxZM1JsWkNCcGJuUWdjMk5oYkdGeUlHOXlJSFpsWTNSdmNpQmhjeUJwYm5CMWREb2dBRVY0Y0dWamRHVmtJR2x1ZENCelkyRnNZWElnWVhNZ2FXNXdkWFE2SUFCbGVIQmxZM1JsWkNCWGIzSnJaM0p2ZFhBZ0tESXBMQ0JuYjNRNklBQnBiblpoYkdsa0lITjNhWHA2YkdVZ2NISmxabWw0SUdOdmRXNTBPaUFBU1c1MllXeHBaQ0JwYm5OMGNuVmpkR2x2YmlCM2IzSmtJR052ZFc1ME9pQUFSWGh3WldOMFpXUWdiM0JsY21GdVpITWdkRzhnWW1VZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCcGJuUTZJQUJYUjFOTUlHUnZaWE1nYm05MElITjFjSEJ2Y25RZ2FXMWhaMlVnWjJGMGFHVnlJSGRwZEdnZ1pYaHdiR2xqYVhRZ1ozSmhaR2xsYm5RNklBQlhSMU5NSUdSdlpYTWdibTkwSUhOMWNIQnZjblFnWkdWd2RHZ3RjbVZtWlhKbGJtTmxJSE5oYlhCc2FXNW5JSGRwZEdnZ1pYaHdiR2xqYVhRZ1ozSmhaR2xsYm5RNklBQm1hWEp6ZENCcGJtUmxlQ0J2WmlCaFkyTmxjM01nWTJoaGFXNGdhVzUwYnlCd1pYSXRkbVZ5ZEdWNElITjBjblZqZEhWeVpTQnBjeUJ1YjNRZ1lTQmpiMjV6ZEdGdWREb2dBR1JsWm1GMWJIUTZJQUJWYm5KbFkyOW5ibWw2WldRZ1pYaDBaVzVrWldRZ2FXNXpkSEoxWTNScGIyNGdjMlYwT2lBQWRXNW9ZVzVrYkdWa0lHWjFibU4wYVc5dUlHTmhiR3dnZEdGeVoyVjBPaUFBS1NCbWNtOXRJR052Ym5ScGJuVmxJR052Ym5OMGNuVmpkRG9nQUVWNGNHVmpkR1ZrSUc5d1pYSmhibVJ6SUhSdklHSmxJSE5qWVd4aGNpQnZjaUIyWldOMGIzSWdabXh2WVhRNklBQkZlSEJsWTNSbFpDQnZjR1Z5WVc1a0lIUnZJR0psSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0lnWm14dllYUTZJQUJwYm5aaGJHbGtJR2x0WVdkbElHWnZjbTFoZERvZ0FFRjBPaUFBUlhod1pXTjBaV1FnYjNCbGNtRnVaSE1nZEc4Z2FHRjJaU0IwYUdVZ2MyRnRaU0J1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwY3pvZ0FHSmhaQ0J2Y2lCMWJuTjFjSEJ2Y25SbFpDQmpiMjl5WkdsdVlYUmxJSFI1Y0dVZ1ptOXlJR2x0WVdkbElHRmpZMlZ6Y3pvZ0FHbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCMWJuSmxZMjluYm1sNlpXUWdhVzFoWjJVZ1lXTmpaWE56T2lBQVJYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnWW1VZ2IyWWdkR0Z5WjJWMElITjBiM0poWjJVZ1kyeGhjM002SUFCMWJtdHViM2R1SUZOUVNWSXRWaUJ6ZEc5eVlXZGxJR05zWVhOek9pQUFaWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnYldGMGNtbDRJSFJ2SUdoaGRtVWdZU0JEYjJ4MWJXNGdWSGx3WlNCdlppQXpMV052YlhCdmJtVnVkQ0F6TWkxaWFYUWdabXh2WVhRZ2RtVmpkRzl5Y3pvZ0FGZEhVMHdnWkc5bGN5QnViM1FnYzNWd2NHOXlkQ0JqYjIxaWFXNWxaQ0JwYldGblpTMXpZVzF3YkdWeWN6b2dBRmRIVTB3Z1pHOWxjeUJ1YjNRZ2MzVndjRzl5ZENCaGNuSmhlWE1nYjJZZ1luVm1abVZ5Y3pvZ0FFVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSE4wY25WamRDQjBieUJvWVhabElIUjNieUJ0WlcxaVpYSnpPaUFBUTI5dWMzUlBabVp6WlhRZ2FYTWdiMjVzZVNCd1pYSnRhWFIwWldRZ1ptOXlJSE5oYlhCc2FXNW5MQ0JuWVhSb1pYSXNJRzl5SUdSbGNIUm9MWEpsWm1WeVpXNWpaU0JuWVhSb1pYSWdiM0JsY21GMGFXOXVjem9nQUNCeVpYRjFhWEpsY3lCdmJtVWdiMllnZEdobElHWnZiR3h2ZDJsdVp5QmxlSFJsYm5OcGIyNXpPaUFBSUdGMElHMXBibWx0ZFcwZ2IzSWdiMjVsSUc5bUlIUm9aU0JtYjJ4c2IzZHBibWNnWlhoMFpXNXphVzl1Y3pvZ0FDa2djbVZ4ZFdseVpYTWdiMjVsSUc5bUlIUm9aWE5sSUdWNGRHVnVjMmx2Ym5NNklBQnBiblpoYkdsa0lHUmxjSFJvWDNSbGVIUjFjbVVnWkdsdFpXNXphVzl1Y3pvZ0FHbHVkbUZzYVdRZ1pHVndkR2hmYlhWc2RHbHpZVzF3YkdWa1gzUmxlSFIxY21VZ1pHbHRaVzV6YVc5dWN6b2dBR2x1ZG1Gc2FXUWdiWFZzZEdsellXMXdiR1ZrWDNSbGVIUjFjbVVnWkdsdFpXNXphVzl1Y3pvZ0FHbHVkbUZzYVdRZ2MyRnRjR3hsWkY5MFpYaDBkWEpsSUdScGJXVnVjMmx2Ym5NNklBQnBiblpoYkdsa0lITjBiM0poWjJWZmRHVjRkSFZ5WlNBZ1pHbHRaVzV6YVc5dWN6b2dBRkJ2YzNOcFlteGxJSFpoYkhWbGN6b2dBRU52Ym5OMFQyWm1jMlYwSUdseklHOXViSGtnY0dWeWJXbDBkR1ZrSUdadmNpQXlSQ3dnTWtRZ1FYSnlZWGxsWkN3Z1lXNWtJRE5FSUhSbGVIUjFjbVZ6T2lBQUlISmxjWFZwY21WeklHOXVaU0J2WmlCMGFHVnpaU0JqWVhCaFltbHNhWFJwWlhNNklBQWdhR0Z6SUhSdmJ5QnRZVzU1SUdKaFkydGxaR2RsY3pvZ0FDQnBibVJwWTJWek9pQUFJSGR2Y21Sek9pQUFTVzVrWlhnZ2FYTWdiM1YwSUc5bUlHSnZkVzVrY3pvZ0FHbHVkbUZzYVdRZ1UxQkpVaTFXSUdsdFlXZGxJSFI1Y0dVNklHVjRjR1ZqZEdWa0lEY2diM0JsY21GdVpITTZJQUJwYm5aaGJHbGtJR0Z5Y21GNUlHeGxibWQwYURvZ2NtVnhkV2x5WlhNZ01pQnZjR1Z5WVc1a2N6b2dBSFZ1YzNWd2NHOXlkR1ZrSUdOdmJuUnliMndnWW1GeWNtbGxjaUJ6WlcxaGJuUnBZM002SUFCWFIxTk1JR1J2WlhNZ2JtOTBJSE4xY0hCdmNuUWdhVzFoWjJVZ1oyRjBhR1Z5SUhkcGRHZ2diR1YyWld3dGIyWXRaR1YwWVdsc0lHSnBZWE02SUFCWFIxTk1JR1J2WlhNZ2JtOTBJSE4xY0hCdmNuUWdaR1Z3ZEdndGNtVm1aWEpsYm1ObElITmhiWEJzYVc1bklIZHBkR2dnYkdWMlpXd3RiMll0WkdWMFlXbHNJR0pwWVhNNklBQnBiblpoYkdsa0lIWmhiSFZsSUdadmNpQndkSEpmWVhNNklBQlFiMmx1ZEdWeUlHTmhiaUJ2Ym14NUlHSmxJR052Ym5abGNuUmxaQ0IwYnlCaGJtOTBhR1Z5SUhCdmFXNTBaWElzSUdsdWRDQnpZMkZzWVhJZ2IzSWdNekl0WW1sMElHbHVkQ0IyWldOMGIzSTZJQUJ2Y0dWeVlXNWtJR1p2Y2lCamIyNTJaWEp6YVc5dUlIUnZJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSWdiWFZ6ZENCaVpTQm1iRzloZEdsdVp5QndiMmx1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5T2lBQWIzQmxjbUZ1WkNCbWIzSWdZMjl1ZG1WeWMybHZiaUIwYnlCemFXZHVaV1FnYVc1MFpXZGxjaUJ0ZFhOMElHSmxJR1pzYjJGMGFXNW5JSEJ2YVc1MElITmpZV3hoY2lCdmNpQjJaV04wYjNJNklBQkZlSEJsWTNSbFpDQnBibkIxZENCMGJ5QmlaU0JwYm5RZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2pvZ0FFVjRjR1ZqZEdWa0lGTm9hV1owSUhSdklHSmxJR2x1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5T2lBQVJYaHdaV04wWldRZ1FtRnpaU0IwYnlCaVpTQnBiblFnYzJOaGJHRnlJRzl5SUhabFkzUnZjam9nQUVWNGNHVmpkR1ZrSUdsdWNIVjBJSFJ2SUdKbElHWnNiMkYwSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0k2SUFCcGJuUmxaMlZ5SUhOallXeGhjaUJ2Y2lCMlpXTjBiM0k2SUFCdmNHVnlZVzVrSUdadmNpQmpiMjUyWlhKemFXOXVJSFJ2SUdac2IyRjBhVzVuSUhCdmFXNTBJRzExYzNRZ1ltVWdhVzUwWldkeVlXd2djMk5oYkdGeUlHOXlJSFpsWTNSdmNqb2dBRHNnUjJWdVpYSmhkRzl5T2lBQVkyOTFiR1J1SjNRZ1kyOXVkbVZ5ZENCeVpYTjFiSFFnZEhsd1pTQm1iM0k2SUFCcGJuUmxjbTVoYkNCbGNuSnZjam9nZFc1dFlYQndaV1FnZEhsd1pTQm1iM0k2SUFCRmVIQmxZM1JsWkNCcGJuQjFkQ0IwYnlCaVpTQmhJSEJ2YVc1MFpYSXNJR2x1ZENCelkyRnNZWElnYjNJZ016SXRZbWwwSUdsdWRDQjJaV04wYjNJZ2FXWWdVbVZ6ZFd4MElGUjVjR1VnYVhNZ2NHOXBiblJsY2pvZ0FFVjRjR1ZqZEdWa0lHbHVjSFYwSUhSdklHSmxJR0VnY0c5cGJuUmxjaUJ2Y2lCcGJuUWdjMk5oYkdGeUlHbG1JRkpsYzNWc2RDQlVlWEJsSUdseklIQnZhVzUwWlhJNklBQkZlSEJsWTNSbFpDQnBibkIxZENCMGJ5QmlaU0JoSUhCdmFXNTBaWEk2SUFCRmVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCaElIQnZhVzUwWlhJNklBQlBjRlpoY21saFlteGxJSFI1Y0dVZ1pYaHdaV04wWldRZ2RHOGdZbVVnWVNCd2IybHVkR1Z5T2lBQVVHOXBiblJsY2pvZ0FHbHVkbUZzYVdRZ2RIbHdaU0JtYjNJZ2FXMWhaMlVnYjNJZ2MyRnRjR3hsY2lCMllYSnBZV0pzWlNCdmNpQm1kVzVqZEdsdmJpQndZWEpoYldWMFpYSTZJQUJoY25KaGVYTWdiMllnZEdWNGRIVnlaWE1nYjNJZ2MyRnRjR3hsY25NZ1lYSmxJRzV2ZENCemRYQndiM0owWldRZ2FXNGdWMGRUVERzZ1kyRnVKM1FnZEhKaGJuTnNZWFJsSUhaaGNtbGhZbXhsSUc5eUlHWjFibU4wYVc5dUlIQmhjbUZ0WlhSbGNqb2dBR2x0WVdkbElHRmpZMlZ6Y3lCcGN5QnRhWE56YVc1bklHRWdZMjl2Y21ScGJtRjBaU0J3WVhKaGJXVjBaWEk2SUFCMWJtaGhibVJzWldRZ2NtVnpiMngyWldRZ2FXUmxiblJwWm1sbGNqb2dBR1Z1ZEhKNUlIQnZhVzUwSUc1aGJXVWdhWE1nYm05MElHRWdkbUZzYVdRZ1YwZFRUQ0JwWkdWdWRHbG1hV1Z5T2lBQVptbHljM1FnYVc1a1pYZ2diMllnWVdOalpYTnpJR05vWVdsdUlHbHVkRzhnY0dWeUxYWmxjblJsZUNCemRISjFZM1IxY21VZ2FYTWdibTkwSUdFZ1kyOXVjM1JoYm5RZ2FXNTBaV2RsY2pvZ0FGQnZhVzUwWlhJZ2MzUnZjbUZuWlNCamJHRnpjeUJ0ZFhOMElHSmxJRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2pvZ0FDQmtaV05zWVhKbFpDQmhjeUJqYjI1MGFXNTFaU0IwWVhKblpYUWdabTl5SUcxdmNtVWdkR2hoYmlCdmJtVWdhR1ZoWkdWeU9pQUFJR1JsWTJ4aGNtVmtJR0Z6SUcxbGNtZGxJR0pzYjJOcklHWnZjaUJ0YjNKbElIUm9ZVzRnYjI1bElHaGxZV1JsY2pvZ0FFbHVkbUZzYVdRZ1pYaDBaVzVrWldRZ2FXNXpkSEoxWTNScGIyNGdiblZ0WW1WeU9pQUFVRzlwYm5SbGNpQmpZVzRnYjI1c2VTQmlaU0JqYjI1MlpYSjBaV1FnZEc4Z1lXNXZkR2hsY2lCd2IybHVkR1Z5SUc5eUlHbHVkQ0J6WTJGc1lYSTZJQUJGZUhCbFkzUmxaQ0JEYjNWdWRDQlVlWEJsSUhSdklHSmxJR2x1ZENCelkyRnNZWEk2SUFCRmVIQmxZM1JsWkNCUFptWnpaWFFnVkhsd1pTQjBieUJpWlNCcGJuUWdjMk5oYkdGeU9pQUFiM0lnYzJOaGJHRnlPaUFBZFc1emRYQndiM0owWldRZ1lYUnZiV2xqSUc5d09pQUFkVzVvWVc1a2JHVmtJR0YwYjIxcFl5QnZjRG9nQUVWNGNHVmpkR1ZrSUdKdmIyd2djMk5oYkdGeUlHOXlJSFpsWTNSdmNpQjBlWEJsSUdGeklHTnZibVJwZEdsdmJqb2dBRzV2ZENCaGJpQnBiV0ZuWlNCaFkyTmxjM01nYVc1emRISjFZM1JwYjI0NklBQm1hWEp6ZENCcGJtUmxlQ0J2WmlCaFkyTmxjM01nWTJoaGFXNGdaRzlsY3lCdWIzUWdjbVZtWlhKbGJtTmxJR0Z1SUdsdWMzUnlkV04wYVc5dU9pQUFRM0p2YzNOWGIzSnJaM0p2ZFhBZ2IzSWdSblZ1WTNScGIyNDZJQUIxYm1oaGJtUnNaV1FnYldWdFltVnlJR1JsWTI5eVlYUnBiMjQ2SUFBZ2FHRnpJSFZ1Y21WamIyZHVhWHBsWkNCa1pXTnZjbUYwYVc5dU9pQUFkVzVvWVc1a2JHVmtJR2RzYjJKaGJDQmtaV05zWVhKaGRHbHZiam9nQURzZ1ZtVnljMmx2YmpvZ0FFVjRjR1ZqZEdWa0lFSmhjMlVnWkdsdFpXNXphVzl1SUhSdklHSmxJR1Z4ZFdGc0lIUnZJRkpsYzNWc2RDQlVlWEJsSUdScGJXVnVjMmx2YmpvZ0FHbHVkbUZzYVdRZ1pHbHRaVzV6YVc5dU9pQUFkVzV5WldOdloyNXBlbVZrSUhOd1pXTnBZV3dnWW5WcGJIUnBiam9nQUdOaGJtNXZkQ0J6ZEc5eVpTQmhJSFpoYkhWbElHOTBhR1Z5SUhSb1lXNGdZMjl1YzNSaGJuUWdNUzR3SUhSdklGQnZhVzUwVTJsNlpTQmlkV2xzZEdsdU9pQUFkVzVyYm05M2JpQlRVRWxTTFZZZ1luVnBiSFJwYmpvZ0FDQnlaWEYxYVhKbFpDd2dhVzQ2SUFBZ2NISnZkbWxrWldRc0lHbHVPaUFBUlhod1pXTjBaV1FnYjNCbGNtRnVaQ0IwYnlCaVpTQjJaV04wYjNJZ1ltOXZiRG9nQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJ1YnlCdFlYQndaV1FnZEhsd1pTQnlaWE4xYkhRZ2IyWWdZMkZzYkRvZ0FFUnBiU0JUZFdKd1lYTnpSR0YwWVNCeVpYRjFhWEpsY3lCR2NtRm5iV1Z1ZENCbGVHVmpkWFJwYjI0Z2JXOWtaV3c2SUFCRVpYSnBkbUYwYVhabElHbHVjM1J5ZFdOMGFXOXVjeUJ5WlhGMWFYSmxJRVJsY21sMllYUnBkbVZIY205MWNGRjFZV1J6VGxZZ2IzSWdSR1Z5YVhaaGRHbDJaVWR5YjNWd1RHbHVaV0Z5VGxZZ1pYaGxZM1YwYVc5dUlHMXZaR1VnWm05eUlFZE1RMjl0Y0hWMFpTQmxlR1ZqZFhScGIyNGdiVzlrWld3NklBQkpiWEJzYVdOcGRFeHZaQ0JwYm5OMGNuVmpkR2x2Ym5NZ2NtVnhkV2x5WlNCRVpYSnBkbUYwYVhabFIzSnZkWEJSZFdGa2MwNVdJRzl5SUVSbGNtbDJZWFJwZG1WSGNtOTFjRXhwYm1WaGNrNVdJR1Y0WldOMWRHbHZiaUJ0YjJSbElHWnZjaUJIVEVOdmJYQjFkR1VnWlhobFkzVjBhVzl1SUcxdlpHVnNPaUFBUkdWeWFYWmhkR2wyWlNCcGJuTjBjblZqZEdsdmJuTWdjbVZ4ZFdseVpTQkdjbUZuYldWdWRDQnZjaUJIVEVOdmJYQjFkR1VnWlhobFkzVjBhVzl1SUcxdlpHVnNPaUFBU1cxd2JHbGphWFJNYjJRZ2FXNXpkSEoxWTNScGIyNXpJSEpsY1hWcGNtVWdSbkpoWjIxbGJuUWdiM0lnUjB4RGIyMXdkWFJsSUdWNFpXTjFkR2x2YmlCdGIyUmxiRG9nQUhWdWEyNXZkMjRnVTFCSlVpMVdJR1Y0WldOMWRHbHZiaUJ0YjJSbGJEb2dBSFZ1YUdGdVpHeGxaQ0JsYkdWdFpXNTBJSFI1Y0dVZ1ptOXlJR1p5Wlhod0tDa2dZMjl1YzNRdFpYWmhiRG9nQUc5bUlISnBaMmgwSUcxaGRISnBlQ0IwYnlCaVpTQmxjWFZoYkRvZ0FFVjRjR1ZqZEdWa0lHTnZiWEJ2Ym1WdWRDQjBlWEJsY3lCdlppQjBhR1VnYjNCbGNtRnVaSE1nZEc4Z1ltVWdaWEYxWVd3NklBQkZlSEJsWTNSbFpDQjJaV04wYjNJZ2MybDZaWE1nYjJZZ1VtVnpkV3gwSUZSNWNHVWdZVzVrSUhSb1pTQnZjR1Z5WVc1a2N5QjBieUJpWlNCbGNYVmhiRG9nQUVWNGNHVmpkR1ZrSUhabFkzUnZjaUJ6YVhwbGN5QnZaaUJTWlhOMWJIUWdWSGx3WlNCaGJtUWdkR2hsSUdOdmJtUnBkR2x2YmlCMGJ5QmlaU0JsY1hWaGJEb2dBRVY0Y0dWamRHVmtJSFpsWTNSdmNpQnphWHBsY3lCdlppQlNaWE4xYkhRZ1ZIbHdaU0JoYm1RZ2RHaGxJRzl3WlhKaGJtUWdkRzhnWW1VZ1pYRjFZV3c2SUFCRmVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQnpkSEoxWTNRZ2JXVnRZbVZ5SUhSNWNHVnpJSFJ2SUdKbElHbGtaVzUwYVdOaGJEb2dBSE4wY25WamRDQnBibVJsZUNCdmRYUWdiMllnWW05MWJtUnpJR1p2Y2lCaGNuSmhlU0JzWlc1bmRHZzZJQUJGZUhCbFkzUmxaQ0JpYjNSb0lHOXdaWEpoYm1SeklIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1kyOXRjRzl1Wlc1MElHSnBkQ0IzYVdSMGFEb2dBSFZ1YUdGdVpHeGxaQ0JtYkc5aGRDQjNhV1IwYURvZ0FIVnVhR0Z1Wkd4bFpDQnBiblJsWjJWeUlIZHBaSFJvT2lBQVEyOXZjR1Z5WVhScGRtVWdiV0YwY21sNElDZE9KeUJ0YVhOdFlYUmphRG9nQUVOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNBblRTY2diV2x6YldGMFkyZzZJQUJEYjI5d1pYSmhkR2wyWlNCdFlYUnlhWGdnSjBzbklHMXBjMjFoZEdOb09pQUFRMjl2Y0dWeVlYUnBkbVVnYldGMGNtbDRJSE5qYjNCbGN5QnRkWE4wSUcxaGRHTm9PaUFBVW1WemRXeDBJRlI1Y0dVZ2RtVmpkRzl5SUhOcGVtVTZJQUIyWldOMGIzSWdiM0JsY21GdVpDQnphWHBsT2lBQWRHVjRaV3dnYUdGeklIUnZieUJtWlhjZ1kyOXRjRzl1Wlc1MGN5Qm1iM0lnYzNSdmNtRm5aU0IwWlhoMGRYSmxPaUFBZDNKcGRHbHVaeUIwYnlCdmRHaGxjaUIwYUdGdUlITjBiM0poWjJVZ2RHVjRkSFZ5WlRvZ0FFVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdRV05qWld4bGNtRjBhVzl1SUZOMGNuVmpkSFZ5WlRvZ0FDQWdkMmhsY21VNklBQW5JR0psYUdGMmFXOXljeUJoY21VNklBQlhSMU5NSUdSdlpYTWdibTkwSUhOMWNIQnZjblFnWlcxd2RIa2djM1J5ZFdOMGRYSmxjeTRnWTJGdUozUWdZMjl1ZG1WeWRDQjBlWEJsT2lBQWRXNXJibTkzYmlCemRHRjBaVzFsYm5RZ2RIbHdaVG9nQUVWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdac2IyRjBJSE5qWVd4aGNpQnZjaUIyWldOMGIzSWdkSGx3WlRvZ0FHTmhiaWQwSUcxaGEyVWdiblZzYkNCMllXeDFaU0JtYjNJZ2RIbHdaVG9nQUVWNGNHVmpkR1ZrSUdKdmRHZ2diM0JsY21GdVpITWdkRzhnWW1VZ2IyWWdVbVZ6ZFd4MElGUjVjR1VnYldWdFltVnlJSFI1Y0dVNklBQnZjaUJ6WTJGc1lYSWdkSGx3WlRvZ0FIVnVhR0Z1Wkd4bFpDQm1jbVY0Y0NCMGVYQmxPaUFBZFc1cmJtOTNiaUJwWkdWdWRHbG1hV1Z5SUdWNGNISmxjM05wYjI0Z2RIbHdaVG9nQUhWdWEyNXZkMjRnYkhaaGJIVmxJR2xrWlc1MGFXWnBaWElnWlhod2NtVnpjMmx2YmlCMGVYQmxPaUFBZFc1cmJtOTNiaUJsZUhCeVpYTnphVzl1SUhSNWNHVTZJQUIxYm10dWIzZHVJR3gyWVd4MVpTQmxlSEJ5WlhOemFXOXVJSFI1Y0dVNklBQjFibWhoYm1Sc1pXUWdaWGh3Y21WemMybHZiaUIwZVhCbE9pQUFkVzVvWVc1a2JHVmtJSE5sYlRvNlJYaHdjbVZ6YzJsdmJpQjBlWEJsT2lBQWFXNTJZV3hwWkNCMFpYaGxiQ0IwZVhCbElHWnZjaUJ6ZEc5eVlXZGxJSFJsZUhSMWNtVWdkM0pwZEdVNklHTnZiWEJ2Ym1WdWRDQnRkWE4wSUdKbElHWnNiMkYwTENCemFXZHVaV1FnYVc1MFpXZGxjaXdnYjNJZ2RXNXphV2R1WldRZ2FXNTBaV2RsY2lCMGJ5QnRZWFJqYUNCMGFHVWdkR1Y0ZEhWeVpTQmphR0Z1Ym1Wc0lIUjVjR1U2SUFCVmJtaGhibVJzWldRZ2JHbDBaWEpoYkNCMGVYQmxPaUFBZFc1b1lXNWtiR1ZrSUcxdlpHWWdkSGx3WlRvZ0FFVjRjR1ZqZEdWa0lHbHVjSFYwSUdGdVpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCd2IybHVkQ0IwYnlCMGFHVWdjMkZ0WlNCMGVYQmxPaUFBUlhod1pXTjBaV1FnYkdWbWRDQmhibVFnY21sbmFIUWdiM0JsY21GdVpITWdkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQjBlWEJsT2lBQVZtRnNhV1JoZEc5eU9qcEhiRzlpWVd4V1lYSnBZV0pzWlNncElHTmhiR3hsWkNCM2FYUm9JR0VnZFc1cmJtOTNiaUIyWVhKcFlXSnNaU0IwZVhCbE9pQUFVbVZ6YjJ4MlpYSTZPa2RzYjJKaGJGWmhjbWxoWW14bEtDa2dZMkZzYkdWa0lIZHBkR2dnWVNCMWJtdHViM2R1SUhaaGNtbGhZbXhsSUhSNWNHVTZJQUJXWVd4cFpHRjBiM0k2T2xaaGNtbGhZbXhsS0NrZ1kyRnNiR1ZrSUhkcGRHZ2dZU0IxYm10dWIzZHVJSFpoY21saFlteGxJSFI1Y0dVNklBQjFibVY0Y0dWamRHVmtJSFpoY21saFlteGxJSFI1Y0dVNklBQjFibWhoYm1Sc1pXUWdZWFJ2YldsalgyTnZiWEJoY21WZlpYaGphR0Z1WjJVZ2RIbHdaVG9nQUhWdWFHRnVaR3hsWkNCdWIyUmxJSFI1Y0dVNklBQkpiblJsY201aGJDQmxjbkp2Y2pvZ1ZXNW9ZVzVrYkdWa0lHOXdaWEpoYm1RZ2RIbHdaVG9nQUhWdWEyNXZkMjRnWkdWamJHRnlaV1FnZEhsd1pUb2dBSFZ1YUdGdVpHeGxaQ0IwZVhCbE9pQUFWVzVvWVc1a2JHVmtJSFI1Y0dVNklBQkZlSEJsWTNSbFpDQnBibkIxZENCMGJ5Qm9ZWFpsSUdFZ2RIbHdaVG9nQUVsRUlHbHpJRzV2ZENCaElGTlFTVkl0VmlCMGVYQmxPaUFBUlhod1pXTjBaV1FnWVNCemRISjFZM1FnWVhNZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0F6TWkxaWFYUWdabXh2WVhScGJtY3RjRzlwYm5RZ2RIbHdaU0F6TFdOdmJYQnZibVZ1ZENCMlpXTjBiM0lnWVhNZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0F6TWkxaWFYUWdhVzUwWldkbGNpQjBlWEJsSURJdFkyOXRjRzl1Wlc1MElIWmxZM1J2Y2lCaGN5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSURNeUxXSnBkQ0JtYkc5aGRHbHVaeTF3YjJsdWRDQjBlWEJsSUhOallXeGhjaUJoY3lCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJRE15TFdKcGRDQnBiblJsWjJWeUlIUjVjR1VnYzJOaGJHRnlJR0Z6SUZKbGMzVnNkQ0JVZVhCbE9pQUFSWGh3WldOMFpXUWdhVzV3ZFhRZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCa2FXMWxibk5wYjI0Z1lYTWdVbVZ6ZFd4MElGUjVjR1U2SUFCRmVIQmxZM1JsWkNCbWJHOWhkQ0J0WVhSeWFYZ2dkSGx3WlNCaGN5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxJR0Z6SUZKbGMzVnNkQ0JVZVhCbE9pQUFaWGh3WldOMFpXUWdiV0YwY21sNElIUjVjR1VnWVhNZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0JtYkc5aGRDQjJaV04wYjNJZ2RIbHdaU0JoY3lCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJR2x1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5SUhSNWNHVWdZWE1nVW1WemRXeDBJRlI1Y0dVNklBQkZlSEJsWTNSbFpDQjFibk5wWjI1bFpDQnBiblFnYzJOaGJHRnlJRzl5SUhabFkzUnZjaUIwZVhCbElHRnpJRkpsYzNWc2RDQlVlWEJsT2lBQVJYaHdaV04wWldRZ016SXRZbWwwSUdac2IyRjBJSE5qWVd4aGNpQnZjaUIyWldOMGIzSWdkSGx3WlNCaGN5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdac2IyRjBJSE5qWVd4aGNpQnZjaUIyWldOMGIzSWdkSGx3WlNCaGN5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdKdmIyd2djMk5oYkdGeUlHOXlJSFpsWTNSdmNpQjBlWEJsSUdGeklGSmxjM1ZzZENCVWVYQmxPaUFBUlhod1pXTjBaV1FnWm14dllYUnBibWNnYzJOaGJHRnlJRzl5SUhabFkzUnZjaUIwZVhCbElHRnpJRkpsYzNWc2RDQlVlWEJsT2lBQVJYaHdaV04wWldRZ2RXNXphV2R1WldRZ2FXNTBJSE5qWVd4aGNpQjBlWEJsSUdGeklGSmxjM1ZzZENCVWVYQmxPaUFBUlhod1pXTjBaV1FnWm14dllYUWdjMk5oYkdGeUlIUjVjR1VnWVhNZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0JpYjI5c0lITmpZV3hoY2lCMGVYQmxJR0Z6SUZKbGMzVnNkQ0JVZVhCbE9pQUFSWGh3WldOMFpXUWdZMjlzZFcxdUlIUjVjR1VnYjJZZ2RHaGxJRzFoZEhKcGVDQjBieUJpWlNCbGNYVmhiQ0IwYnlCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJR2x1Y0hWMElIUjVjR1VnZEc4Z1ltVWdaWEYxWVd3Z2RHOGdVbVZ6ZFd4MElGUjVjR1U2SUFCRmVIQmxZM1JsWkNCamIyMXdiMjVsYm5RZ2RIbHdaU0IwYnlCaVpTQmxjWFZoYkNCMGJ5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUcxaGRISnBlQ0J2Y0dWeVlXNWtJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVNklBQkZlSEJsWTNSbFpDQjJaV04wYjNJZ2IzQmxjbUZ1WkNCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklGSmxjM1ZzZENCVWVYQmxPaUFBUlhod1pXTjBaV1FnU1c1elpYSjBJRlI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVNklBQkZlSEJsWTNSbFpDQkNZWE5sSUZSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0JwYm5CMWRDQjBieUJvWVhabElHUnBabVpsY21WdWRDQmlhWFFnZDJsa2RHZ2dabkp2YlNCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJR0p2ZEdnZ2IySnFaV04wY3lCMGJ5QmlaU0J2WmlCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJR0p2ZEdnZ2IzQmxjbUZ1WkhNZ2RHOGdZbVVnYjJZZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0JoY21sMGFHMWxkR2xqSUc5d1pYSmhibVJ6SUhSdklHSmxJRzltSUZKbGMzVnNkQ0JVZVhCbE9pQUFSWGh3WldOMFpXUWdiM0JsY21GdVpDQjBieUJpWlNCdlppQlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxJR0Z6SUVNZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxJR0Z6SUVJZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxJR0Z6SUVFZ1ZIbHdaVG9nQUhWdWMzVndjRzl5ZEdWa0lHTnZiblJ5YjJ3Z1ltRnljbWxsY2lCbGVHVmpkWFJwYjI0Z2MyTnZjR1U2SUFCRmVIQmxZM1JsWkNCUUlIUjVjR1VnWVc1a0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElIUm9aU0J6WVcxbE9pQUFWR2hsSUV4cGJtdGhaMlZCZEhSeWFXSjFkR1Z6SUVSbFkyOXlZWFJwYjI0Z0tFeHBibXRoWjJVZ2JtRnRaVG9nQUNCaGJISmxZV1I1SUdoaGN5QnlaV2RwYzNSbGNtVmtJRzVoYldVNklBQWdabTl5SUcxdlpIVnNaU0J6WTI5d1pTQjJZWEpwWVdKc1pUb2dBR2x1ZG1Gc2FXUWdjM1J5ZFdOMGRYSmxaQ0JqYjI1MGNtOXNJR1pzYjNjNklHWnZkVzVrSUdGdUlFOXdVM2RwZEdOb0lIUm9ZWFFnYVhNZ2JtOTBJSEJ5WldObFpHVmtJR0o1SUdGdUlFOXdVMlZzWldOMGFXOXVUV1Z5WjJVNklBQTZJR2x1WkdWNElIUnZieUJzWVhKblpUb2dBRmRIVTB3Z1pHOWxjeUJ1YjNRZ2MzVndjRzl5ZENCeGRXVnllV2x1WnlCMGFHVWdiR1YyWld3Z2IyWWdaR1YwWVdsc0lHOW1JR0Z1SUdsdFlXZGxPaUFBYVc1MllXeHBaQ0JNYjJOaGJGTnBlbVVnWlhobFkzVjBhVzl1SUcxdlpHVTZJQUJ3YjJsdWRHVnlJR1JsWm1sdVpXUWdhVzRnWm5WdVkzUnBiMjRnWm5KdmJTQjFibXR1YjNkdUlHOXdZMjlrWlRvZ0FFbHVkbUZzYVdRZ2IzQmpiMlJsT2lBQVJIVndiR2xqWVhSbElHNXZiaTFoWjJkeVpXZGhkR1VnZEhsd1pTQmtaV05zWVhKaGRHbHZibk1nWVhKbElHNXZkQ0JoYkd4dmQyVmtMaUJQY0dOdlpHVTZJQUIxYm1oaGJtUnNaV1FnWVhOME9qcE9iMlJsT2lBQVkzbGpiR2xqSUdSbGNHVnVaR1Z1WTNrZ1ptOTFibVE2SUFBN0lFSnZkVzVrT2lBQWRIbHdaU0J2WmlCMGFHVWdiV0YwY21sNElHOXdaWEpoYm1RNklBQkZlSEJsWTNSbFpDQm1iRzloZENCdFlYUnlhWGdnZEhsd1pTQmhjeUJ5YVdkb2RDQnZjR1Z5WVc1a09pQUFSWGh3WldOMFpXUWdabXh2WVhRZ2RtVmpkRzl5SUhSNWNHVWdZWE1nY21sbmFIUWdiM0JsY21GdVpEb2dBSFpsWTNSdmNpQnphWHBsSUc5bUlIUm9aU0J5YVdkb2RDQnZjR1Z5WVc1a09pQUFSWGh3WldOMFpXUWdabXh2WVhRZ2JXRjBjbWw0SUhSNWNHVWdZWE1nYkdWbWRDQnZjR1Z5WVc1a09pQUFSWGh3WldOMFpXUWdabXh2WVhRZ2RtVmpkRzl5SUhSNWNHVWdZWE1nYkdWbWRDQnZjR1Z5WVc1a09pQUFiMllnZEdobElHeGxablFnYjNCbGNtRnVaRG9nQUVWNGNHVmpkR1ZrSUdac2IyRjBJSFpsWTNSdmNpQmhjeUJ2Y0dWeVlXNWtPaUFBUlhod1pXTjBaV1FnYVc1MElITmpZV3hoY2lCdmNpQjJaV04wYjNJZ1lYTWdiM0JsY21GdVpEb2dBRVY0Y0dWamRHVmtJR2x1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5SUhSNWNHVWdZWE1nYjNCbGNtRnVaRG9nQUhSNWNHVWdiMllnZEdobElIWmxZM1J2Y2lCdmNHVnlZVzVrT2lBQWFXMWhaMlVnZDNKcGRHVWdhWE1nYldsemMybHVaeUJoSUZSbGVHVnNJRzl3WlhKaGJtUTZJQUJwYldGblpTQmtaWEIwYUMxamIyMXdZWEpsSUdsdWMzUnlkV04wYVc5dUlHbHpJRzFwYzNOcGJtY2dZU0JFY21WbUlHOXdaWEpoYm1RNklBQkZlSEJsWTNSbFpDQXpNaTFpYVhRZ2FXNTBJSFI1Y0dVZ1ptOXlJRUpoYzJVZ2IzQmxjbUZ1WkRvZ0FFVjRjR1ZqZEdWa0lHbHVkQ0J6WTJGc1lYSWdiM0lnZG1WamRHOXlJSFI1Y0dVZ1ptOXlJRUpoYzJVZ2IzQmxjbUZ1WkRvZ0FHNTFiR3dnY0c5cGJuUmxjaUJwY3lCdWIzUWdkbUZzYVdRNklBQjFibVJsWmlCd2IybHVkR1Z5SUdseklHNXZkQ0IyWVd4cFpEb2dBRzF2WkhWc1pTMXpZMjl3WlNCd2IybHVkR1Z5SUdseklHNXZkQ0IyWVd4cFpEb2dBQ0JwWkRvZ0FHeHZZV1JwYm1jZ2RHaGxJSGRvYjJ4bElGTmhiWEJzWlUxaGMyc2dhVzV3ZFhRZ1lYSnlZWGtnYVhNZ2JtOTBJSE4xY0hCdmNuUmxaRG9nQUhOMGIzSnBibWNnZEc4Z2RHaGxJSGRvYjJ4bElIQmxjaTEyWlhKMFpYZ2djM1J5ZFdOMGRYSmxJR2x6SUc1dmRDQnpkWEJ3YjNKMFpXUTZJQUJNYjJkcFkyRnNJR0ZrWkhKbGMzTnBibWNnYm05MElITjFjSEJ2Y25SbFpEb2dBRzl3WlhKaGRHbHZibk1nY0hKdlpIVmphVzVuSUdFZ2NHOXBiblJsY2lCMGJ5QmhJSEJsY2kxMlpYSjBaWGdnYzNSeWRXTjBkWEpsSUdGeVpTQnViM1FnYzNWd2NHOXlkR1ZrT2lBQWIzQmxjbUYwYVc5dWN5QndjbTlrZFdOcGJtY2dZU0J3WlhJdGRtVnlkR1Y0SUhOMGNuVmpkSFZ5WlNCaGNtVWdibTkwSUhOMWNIQnZjblJsWkRvZ0FHZHNYMUJsY2xabGNuUmxlQ0JwYm1sMGFXRnNhWHBsY2lCMGIyOGdZMjl0Y0d4bGVDNGdiMjVzZVNCUGNFTnZiWEJ2YzJsMFpVTnZibk4wY25WamRDQmhibVFnVDNCVGNHVmpRMjl1YzNSaGJuUkRiMjF3YjNOcGRHVWdZWEpsSUhOMWNIQnZjblJsWkRvZ0FHVjRjR1ZqZEdWa09pQUFhVzUwWlhKdVlXd2daWEp5YjNJNklHNWhiV1VnWVd4eVpXRmtlU0J5WldkcGMzUmxjbVZrT2lBQVJYaHdaV04wWldRZ2FXNXdkWFFnZEc4Z2FHRjJaU0J6ZEc5eVlXZGxJR05zWVhOeklFZGxibVZ5YVdNNklBQkZlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCb1lYWmxJSE4wYjNKaFoyVWdZMnhoYzNNZ1IyVnVaWEpwWXpvZ0FEc2dVMk5vWlcxaE9pQUFhVzUwWlhKdVlXd2daWEp5YjNJNklIVnVhR0Z1Wkd4bFpDQjFjMlVnYjJZZ2IzQmhjWFZsSUc5aWFtVmpkQ0IzYVhSb0lFbEVPaUFBYVc1MFpYSnVZV3dnWlhKeWIzSTZJR1poYVd4bFpDQjBieUJ5WldkcGMzUmxjaUJVYVc1MElFRlRWQ0IwZVhCbElHWnZjaUJUVUVsU0xWWWdkSGx3WlNCM2FYUm9JRWxFT2lBQWRXNW9ZVzVrYkdWa0lIVnpaU0J2WmlCaElIQnZhVzUwWlhJZ2RHOGdkR2hsSUZOaGJYQnNaVTFoYzJzZ1luVnBiSFJwYml3Z2QybDBhQ0JKUkRvZ0FIVnVhR0Z1Wkd4bFpDQjFjMlVnYjJZZ1lTQndiMmx1ZEdWeUlIUnZJSFJvWlNCUWIybHVkRk5wZW1VZ1luVnBiSFJwYml3Z2QybDBhQ0JKUkRvZ0FHbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCdWJ5QjBlWEJsSUhKbFoybHpkR1Z5WldRZ1ptOXlJRk5RU1ZJdFZpQkpSRG9nQUdWNGRHVnVaR1ZrSUdGeWFYUm9iV1YwYVdNZ2FYTWdibTkwSUdacGJtRnNhWHBsWkNCbWIzSWdWMGRUVERvZ2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwyZHdkWGRsWWk5bmNIVjNaV0l2YVhOemRXVnpMekUxTmpVNklBQWdhR0Z6SUhSdmJ5QnRZVzU1SUdWc1pXMWxiblJ6SUNodGIzSmxJSFJvWVc0Z1kyRnVJR1pwZENCcGJpQXpNaUJpYVhSektUb2dBSFpoYkhWbElHTmhibTV2ZENCaVpTQnlaWEJ5WlhObGJuUmxaQ0JoY3lBblpqTXlKem9nQUNBNklBQkJaR1J5WlhOemFXNW5JRzF2WkdWc0lHMTFjM1FnWW1VZ1RHOW5hV05oYkNCdmNpQlFhSGx6YVdOaGJGTjBiM0poWjJWQ2RXWm1aWEkyTkNBQVFXUmtjbVZ6YzJsdVp5QnRiMlJsYkNCdGRYTjBJR0psSUZCb2VYTnBZMkZzTXpJZ2IzSWdVR2g1YzJsallXdzJOQ0FBSUdseklHNXZkQ0JoYkd4dmQyVmtJR0o1SUU5d1pXNURUQ0F5TGpJZ0FDQnBjeUJ1YjNRZ1lXeHNiM2RsWkNCaWVTQlBjR1Z1UTB3Z01TNHlJQUFnYVhNZ2JtOTBJR0ZzYkc5M1pXUWdZbmtnVDNCbGJrTk1JREl1TUM4eUxqRWdBRWx1SUhSb1pTQlBjR1Z1UTB3Z1pXNTJhWEp2Ym0xbGJuUXNJRUZ5Y21GNVpXUWdiV0Y1SUc5dWJIa2dZbVVnYzJWMElIUnZJREVnQUc5d1pYSmhkRzl5SUM4Z0FFRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1ZuVnNhMkZ1SUhOd1pXTWdRblZwYkhSSmJpQlRZVzF3YkdWTllYTnJJSFpoY21saFlteGxJRzVsWldSeklIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQmhjbkpoZVM0Z0FFRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1ZuVnNhMkZ1SUhOd1pXTWdRblZwYkhSSmJpQlVaWE56VEdWMlpXeFBkWFJsY2lCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJRFF0WTI5dGNHOXVaVzUwSURNeUxXSnBkQ0JtYkc5aGRDQmhjbkpoZVM0Z0FFRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1ZuVnNhMkZ1SUhOd1pXTWdRblZwYkhSSmJpQlVaWE56VEdWMlpXeFBkWFJsY2lCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJREl0WTI5dGNHOXVaVzUwSURNeUxXSnBkQ0JtYkc5aGRDQmhjbkpoZVM0Z0FDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSURNeUxXSnBkQ0JtYkc5aGRDQmhjbkpoZVM0Z0FDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSURNeUxXSnBkQ0JwYm5RdUlBQldkV3hyWVc0Z2MzQmxZeUJ5WlhGMWFYSmxjeUJDZFdsc2RFbHVJRmR2Y210bmNtOTFjRk5wZW1VZ2RHOGdZbVVnWVNCamIyNXpkR0Z1ZEM0Z0FDQTBJR052YkhWdGJuTWdiMllnTXkxamIyMXdiMjVsYm5RZ2RtVmpkRzl5Y3lCdlppQXpNaTFpYVhRZ1pteHZZWFJ6TGlBQVZuVnNhMkZ1SUhOd1pXTWdZV3hzYjNkeklFSjFhV3gwU1c0Z1VHOXphWFJwYjI0Z2RHOGdZbVVnYjI1c2VTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCSmJuQjFkQ0J2Y2lCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRk5oYlhCc1pVMWhjMnNnZEc4Z1ltVWdiMjVzZVNCMWMyVmtJR1p2Y2lCMllYSnBZV0pzWlhNZ2QybDBhQ0JKYm5CMWRDQnZjaUJQZFhSd2RYUWdjM1J2Y21GblpTQmpiR0Z6Y3k0Z0FGWjFiR3RoYmlCemNHVmpJR0ZzYkc5M2N5QkNkV2xzZEVsdUlGQnZhVzUwVTJsNlpTQjBieUJpWlNCdmJteDVJSFZ6WldRZ1ptOXlJSFpoY21saFlteGxjeUIzYVhSb0lFbHVjSFYwSUc5eUlFOTFkSEIxZENCemRHOXlZV2RsSUdOc1lYTnpMaUFBVm5Wc2EyRnVJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnVUhKcGJXbDBhWFpsU1dRZ2RHOGdZbVVnYjI1c2VTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCSmJuQjFkQ0J2Y2lCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBQ0J6Y0dWaklHRnNiRzkzY3lCQ2RXbHNkRWx1SUVaeVlXZEVaWEIwYUNCMGJ5QmlaU0J2Ym14NUlIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUU5MWRIQjFkQ0J6ZEc5eVlXZGxJR05zWVhOekxpQUFJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnVm1WeWRHVjRTVzVrWlhnZ2RHOGdZbVVnYjI1c2VTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCSmJuQjFkQ0J6ZEc5eVlXZGxJR05zWVhOekxpQUFJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnU1c1emRHRnVZMlZKYm1SbGVDQjBieUJpWlNCdmJteDVJSFZ6WldRZ1ptOXlJSFpoY21saFlteGxjeUIzYVhSb0lFbHVjSFYwSUhOMGIzSmhaMlVnWTJ4aGMzTXVJQUJXZFd4cllXNGdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJRWVhSamFGWmxjblJwWTJWeklIUnZJR0psSUc5dWJIa2dkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRk5oYlhCc1pWQnZjMmwwYVc5dUlIUnZJR0psSUc5dWJIa2dkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRWhsYkhCbGNrbHVkbTlqWVhScGIyNGdkRzhnWW1VZ2IyNXNlU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQkpibkIxZENCemRHOXlZV2RsSUdOc1lYTnpMaUFBSUhOd1pXTWdZV3hzYjNkeklFSjFhV3gwU1c0Z1JuSnZiblJHWVdOcGJtY2dkRzhnWW1VZ2IyNXNlU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQkpibkIxZENCemRHOXlZV2RsSUdOc1lYTnpMaUFBVm5Wc2EyRnVJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnVUc5cGJuUkRiMjl5WkNCMGJ5QmlaU0J2Ym14NUlIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUVsdWNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNdUlBQldkV3hyWVc0Z2MzQmxZeUJoYkd4dmQzTWdRblZwYkhSSmJpQlVaWE56UTI5dmNtUWdkRzhnWW1VZ2IyNXNlU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQkpibkIxZENCemRHOXlZV2RsSUdOc1lYTnpMaUFBSUhOd1pXTWdZV3hzYjNkeklFSjFhV3gwU1c0Z1JuSmhaME52YjNKa0lIUnZJR0psSUc5dWJIa2dkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRWx1ZG05allYUnBiMjVKWkNCMGJ5QmlaU0J2Ym14NUlIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUVsdWNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNdUlBQldkV3hyWVc0Z2MzQmxZeUJoYkd4dmQzTWdRblZwYkhSSmJpQlRZVzF3YkdWSlpDQjBieUJpWlNCdmJteDVJSFZ6WldRZ1ptOXlJSFpoY21saFlteGxjeUIzYVhSb0lFbHVjSFYwSUhOMGIzSmhaMlVnWTJ4aGMzTXVJQUJXZFd4cllXNGdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJRYjNOcGRHbHZiaUIwYnlCaVpTQjFjMlZrSUc5dWJIa2dkMmwwYUNCV1pYSjBaWGdzSUZSbGMzTmxiR3hoZEdsdmJrTnZiblJ5YjJ3c0lGUmxjM05sYkd4aGRHbHZia1YyWVd4MVlYUnBiMjRnYjNJZ1IyVnZiV1YwY25rZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzY3k0Z0FGWjFiR3RoYmlCemNHVmpJR0ZzYkc5M2N5QkNkV2xzZEVsdUlGQnZhVzUwVTJsNlpTQjBieUJpWlNCMWMyVmtJRzl1YkhrZ2QybDBhQ0JXWlhKMFpYZ3NJRlJsYzNObGJHeGhkR2x2YmtOdmJuUnliMndzSUZSbGMzTmxiR3hoZEdsdmJrVjJZV3gxWVhScGIyNGdiM0lnUjJWdmJXVjBjbmtnWlhobFkzVjBhVzl1SUcxdlpHVnNjeTRnQUNCMGJ5QmlaU0IxYzJWa0lHOXViSGtnZDJsMGFDQkdjbUZuYldWdWRDd2dWbVZ5ZEdWNExDQlVaWE56Wld4c1lYUnBiMjVEYjI1MGNtOXNMQ0JVWlhOelpXeHNZWFJwYjI1RmRtRnNkV0YwYVc5dUlHOXlJRWRsYjIxbGRISjVJR1Y0WldOMWRHbHZiaUJ0YjJSbGJITXVJQUJXZFd4cllXNGdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJKYm5adlkyRjBhVzl1U1dRZ2RHOGdZbVVnZFhObFpDQnZibXg1SUhkcGRHZ2dWR1Z6YzJWc2JHRjBhVzl1UTI5dWRISnZiQ0J2Y2lCSFpXOXRaWFJ5ZVNCbGVHVmpkWFJwYjI0Z2JXOWtaV3h6TGlBQUlIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRlpsY25SbGVDd2dWR1Z6YzJWc2JHRjBhVzl1UlhaaGJIVmhkR2x2Yml3Z1IyVnZiV1YwY25rc0lHOXlJRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJITXVJQUJXZFd4cllXNGdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJRWVhSamFGWmxjblJwWTJWeklIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRlJsYzNObGJHeGhkR2x2YmtOdmJuUnliMndnYjNJZ1ZHVnpjMlZzYkdGMGFXOXVSWFpoYkhWaGRHbHZiaUJsZUdWamRYUnBiMjRnYlc5a1pXeHpMaUFBSUhSdklHSmxJSFZ6WldRZ2IyNXNlU0IzYVhSb0lGWmxjblJsZUN3Z1IyVnZiV1YwY25rc0lHOXlJRTFsYzJoT1ZpQmxlR1ZqZFhScGIyNGdiVzlrWld4ekxpQUFWblZzYTJGdUlITndaV01nWVd4c2IzZHpJRUoxYVd4MFNXNGdVSEpwYldsMGFYWmxTV1FnZEc4Z1ltVWdkWE5sWkNCdmJteDVJSGRwZEdnZ1JuSmhaMjFsYm5Rc0lGUmxjM05sYkd4aGRHbHZia052Ym5SeWIyd3NJRlJsYzNObGJHeGhkR2x2YmtWMllXeDFZWFJwYjI0c0lFZGxiMjFsZEhKNUxDQk5aWE5vVGxZc0lFMWxjMmhGV0ZRc0lFbHVkR1Z5YzJWamRHbHZia3RJVWl3Z1FXNTVTR2wwUzBoU0xDQmhibVFnUTJ4dmMyVnpkRWhwZEV0SVVpQmxlR1ZqZFhScGIyNGdiVzlrWld4ekxpQUFJR0o1ZEdWekxpQUFJSFpoY21saFlteGxJRzVsWldSeklIUnZJR0psSUdFZ05DMWpiMjF3YjI1bGJuUWdNekl0WW1sMElHbHVkQ0IyWldOMGIzSXVJQUFnYzNCbFl5QkNkV2xzZEVsdUlGZHZjbXRuY205MWNGTnBlbVVnZG1GeWFXRmliR1VnYm1WbFpITWdkRzhnWW1VZ1lTQXpMV052YlhCdmJtVnVkQ0F6TWkxaWFYUWdhVzUwSUhabFkzUnZjaTRnQUNCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJREl0WTI5dGNHOXVaVzUwSURNeUxXSnBkQ0JwYm5RZ2RtVmpkRzl5TGlBQUlIWmhjbWxoWW14bElHNWxaV1J6SUhSdklHSmxJR0VnTXpJdFltbDBJR2x1ZENCMlpXTjBiM0l1SUFCQlkyTnZjbVJwYm1jZ2RHOGdkR2hsSUZaMWJHdGhiaUJ6Y0dWaklFSjFhV3gwU1c0Z1VHOXphWFJwYjI0Z2RtRnlhV0ZpYkdVZ2JtVmxaSE1nZEc4Z1ltVWdZU0EwTFdOdmJYQnZibVZ1ZENBek1pMWlhWFFnWm14dllYUWdkbVZqZEc5eUxpQUFJSE53WldNZ1FuVnBiSFJKYmlCR2NtRm5RMjl2Y21RZ2RtRnlhV0ZpYkdVZ2JtVmxaSE1nZEc4Z1ltVWdZU0EwTFdOdmJYQnZibVZ1ZENBek1pMWlhWFFnWm14dllYUWdkbVZqZEc5eUxpQUFRV05qYjNKa2FXNW5JSFJ2SUhSb1pTQldkV3hyWVc0Z2MzQmxZeUJDZFdsc2RFbHVJRlJsYzNORGIyOXlaQ0IyWVhKcFlXSnNaU0J1WldWa2N5QjBieUJpWlNCaElETXRZMjl0Y0c5dVpXNTBJRE15TFdKcGRDQm1iRzloZENCMlpXTjBiM0l1SUFCQlkyTnZjbVJwYm1jZ2RHOGdkR2hsSUZaMWJHdGhiaUJ6Y0dWaklFSjFhV3gwU1c0Z1UyRnRjR3hsVUc5emFYUnBiMjRnZG1GeWFXRmliR1VnYm1WbFpITWdkRzhnWW1VZ1lTQXlMV052YlhCdmJtVnVkQ0F6TWkxaWFYUWdabXh2WVhRZ2RtVmpkRzl5TGlBQVFXTmpiM0prYVc1bklIUnZJSFJvWlNCV2RXeHJZVzRnYzNCbFl5QkNkV2xzZEVsdUlGQnZhVzUwUTI5dmNtUWdkbUZ5YVdGaWJHVWdibVZsWkhNZ2RHOGdZbVVnWVNBeUxXTnZiWEJ2Ym1WdWRDQXpNaTFpYVhRZ1pteHZZWFFnZG1WamRHOXlMaUFBSUhOd1pXTWdRblZwYkhSSmJpQldaWEowWlhoSmJtUmxlQ0IyWVhKcFlXSnNaU0J1WldWa2N5QjBieUJpWlNCaElETXlMV0pwZENCcGJuUWdjMk5oYkdGeUxpQUFJSE53WldNZ1FuVnBiSFJKYmlCSmJuTjBZVzVqWlVsdVpHVjRJSFpoY21saFlteGxJRzVsWldSeklIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQnpZMkZzWVhJdUlBQkJZMk52Y21ScGJtY2dkRzhnZEdobElGWjFiR3RoYmlCemNHVmpJRUoxYVd4MFNXNGdVR0YwWTJoV1pYSjBhV05sY3lCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJRE15TFdKcGRDQnBiblFnYzJOaGJHRnlMaUFBUVdOamIzSmthVzVuSUhSdklIUm9aU0JXZFd4cllXNGdjM0JsWXlCQ2RXbHNkRWx1SUVsdWRtOWpZWFJwYjI1SlpDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSURNeUxXSnBkQ0JwYm5RZ2MyTmhiR0Z5TGlBQVFXTmpiM0prYVc1bklIUnZJSFJvWlNCV2RXeHJZVzRnYzNCbFl5QkNkV2xzZEVsdUlGQnlhVzFwZEdsMlpVbGtJSFpoY21saFlteGxJRzVsWldSeklIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQnpZMkZzWVhJdUlBQkJZMk52Y21ScGJtY2dkRzhnZEdobElGWjFiR3RoYmlCemNHVmpJRUoxYVd4MFNXNGdVMkZ0Y0d4bFNXUWdkbUZ5YVdGaWJHVWdibVZsWkhNZ2RHOGdZbVVnWVNBek1pMWlhWFFnYVc1MElITmpZV3hoY2k0Z0FDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSUdsdWRDQnpZMkZzWVhJdUlBQWdjM0JsWXlCQ2RXbHNkRWx1SUVaeVlXZEVaWEIwYUNCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJRE15TFdKcGRDQm1iRzloZENCelkyRnNZWEl1SUFCQlkyTnZjbVJwYm1jZ2RHOGdkR2hsSUZaMWJHdGhiaUJ6Y0dWaklFSjFhV3gwU1c0Z1VHOXBiblJUYVhwbElIWmhjbWxoWW14bElHNWxaV1J6SUhSdklHSmxJR0VnTXpJdFltbDBJR1pzYjJGMElITmpZV3hoY2k0Z0FFRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1ZuVnNhMkZ1SUhOd1pXTWdRblZwYkhSSmJpQklaV3h3WlhKSmJuWnZZMkYwYVc5dUlIWmhjbWxoWW14bElHNWxaV1J6SUhSdklHSmxJR0VnWW05dmJDQnpZMkZzWVhJdUlBQWdjM0JsWXlCQ2RXbHNkRWx1SUVaeWIyNTBSbUZqYVc1bklIWmhjbWxoWW14bElHNWxaV1J6SUhSdklHSmxJR0VnWW05dmJDQnpZMkZzWVhJdUlBQlBjRUp5WVc1amFDQnZjaUJQY0VKeVlXNWphRU52Ym1ScGRHbHZibUZzSUdsdWMzUnlkV04wYVc5dUxpQUFUM0JDY21GdVkyaERiMjVrYVhScGIyNWhiQ0J2Y2lCUGNGTjNhWFJqYUNCcGJuTjBjblZqZEdsdmJpNGdBQ0J6Y0dWaklHRnNiRzkzY3lCQ2RXbHNkRWx1SUZabGNuUmxlRWx1WkdWNElIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRlpsY25SbGVDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUlBQWdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJKYm5OMFlXNWpaVWx1WkdWNElIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRlpsY25SbGVDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUlBQldkV3hyWVc0Z2MzQmxZeUJoYkd4dmQzTWdRblZwYkhSSmJpQlRZVzF3YkdWUWIzTnBkR2x2YmlCMGJ5QmlaU0IxYzJWa0lHOXViSGtnZDJsMGFDQkdjbUZuYldWdWRDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUlBQldkV3hyWVc0Z2MzQmxZeUJoYkd4dmQzTWdRblZwYkhSSmJpQklaV3h3WlhKSmJuWnZZMkYwYVc5dUlIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDNGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRk5oYlhCc1pVMWhjMnNnZEc4Z1ltVWdkWE5sWkNCdmJteDVJSGRwZEdnZ1JuSmhaMjFsYm5RZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzTGlBQUlITndaV01nWVd4c2IzZHpJRUoxYVd4MFNXNGdSbkpoWjBSbGNIUm9JSFJ2SUdKbElIVnpaV1FnYjI1c2VTQjNhWFJvSUVaeVlXZHRaVzUwSUdWNFpXTjFkR2x2YmlCdGIyUmxiQzRnQUNCemNHVmpJR0ZzYkc5M2N5QkNkV2xzZEVsdUlFWnliMjUwUm1GamFXNW5JSFJ2SUdKbElIVnpaV1FnYjI1c2VTQjNhWFJvSUVaeVlXZHRaVzUwSUdWNFpXTjFkR2x2YmlCdGIyUmxiQzRnQUZaMWJHdGhiaUJ6Y0dWaklHRnNiRzkzY3lCQ2RXbHNkRWx1SUZCdmFXNTBRMjl2Y21RZ2RHOGdZbVVnZFhObFpDQnZibXg1SUhkcGRHZ2dSbkpoWjIxbGJuUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0xpQUFJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnUm5KaFowTnZiM0prSUhSdklHSmxJSFZ6WldRZ2IyNXNlU0IzYVhSb0lFWnlZV2R0Wlc1MElHVjRaV04xZEdsdmJpQnRiMlJsYkM0Z0FGWjFiR3RoYmlCemNHVmpJR0ZzYkc5M2N5QkNkV2xzZEVsdUlGTmhiWEJzWlVsa0lIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDNGdBQ0IwYnlCaVpTQjFjMlZrSUc5dWJIa2dkMmwwYUNCMGFHVWdSbkpoWjIxbGJuUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0xpQUFWblZzYTJGdUlITndaV01nWVd4c2IzZHpJRUoxYVd4MFNXNGdWR1Z6YzBOdmIzSmtJSFJ2SUdKbElIVnpaV1FnYjI1c2VTQjNhWFJvSUZSbGMzTmxiR3hoZEdsdmJrVjJZV3gxWVhScGIyNGdaWGhsWTNWMGFXOXVJRzF2WkdWc0xpQUFJSFJ2SUdKbElHNXZkQ0JpWlNCMWMyVmtJSGRwZEdnZ1IweERiMjF3ZFhSbElHVjRaV04xZEdsdmJpQnRiMlJsYkM0Z0FDQlVZWE5yUlZoVUlHVjRaV04xZEdsdmJpQnRiMlJsYkM0Z0FISjFiR1Z6T2lCQklFSnNiMk5ySUc5eUlFSjFabVpsY2tKc2IyTnJJR05oYm01dmRDQmlaU0J1WlhOMFpXUWdkMmwwYUdsdUlHRnViM1JvWlhJZ1FteHZZMnNnYjNJZ1FuVm1abVZ5UW14dlkyc3VJQUFnYzNCbFl5QnlaWEYxYVhKbGN5QkVaWEIwYUZKbGNHeGhZMmx1WnlCbGVHVmpkWFJwYjI0Z2JXOWtaU0IwYnlCaVpTQmtaV05zWVhKbFpDQjNhR1Z1SUhWemFXNW5JRUoxYVd4MFNXNGdSbkpoWjBSbGNIUm9MaUFBYjNCbGNtRjBiM0lnTFNBQUlHTnZiWEJ2Ym1WdWRITXNJQUJ0ZFhOMElHRndjR1ZoY2lCaVpYUjNaV1Z1SUhObFkzUnBiMjRnT1NBb2RIbHdaWE1zSUdOdmJuTjBZVzUwY3l3Z0FHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdjM1J5ZFdOMElIZHBkR2dnZEhkdklHMWxiV0psY25Nc0lBQjJZWEpwWVdKc1pYTWdiWFZ6ZENCaVpTQjBlWEJsWkNCaGN5QlBjRlI1Y0dWSmJXRm5aU3dnVDNCVWVYQmxVMkZ0Y0d4bGNpd2dBRmRvWlc0Z1FuVnBiSFJKYmlCa1pXTnZjbUYwYVc5dUlHbHpJR0Z3Y0d4cFpXUWdkRzhnWVNCemRISjFZM1IxY21VdGRIbHdaU0J0WlcxaVpYSXNJQUJGZUhCbFkzUmxaQ0JwYm5CMWRDQjBieUJvWVhabElITjBiM0poWjJVZ1kyeGhjM01nVjI5eWEyZHliM1Z3TENBQVJYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnYUdGMlpTQnpkRzl5WVdkbElHTnNZWE56SUZkdmNtdG5jbTkxY0N3Z0FFVjRjR1ZqZEdWa0lIUmhjbWRsZENCemRHOXlZV2RsSUdOc1lYTnpJSFJ2SUdKbElGZHZjbXRuY205MWNDd2dBRTV2YmxCeWFYWmhkR1ZRYjJsdWRHVnlTMGhTSUhKbGNYVnBjbVZ6SUdFZ2NHOXBiblJsY2lCcGJpQlZibWxtYjNKdExDQUFWR0Z5WjJWMElHOW1JRTV2YmxkeWFYUmhZbXhsSUdSbFkyOXlZWFJwYjI0Z2FYTWdhVzUyWVd4cFpEb2diWFZ6ZENCd2IybHVkQ0IwYnlCaElITjBiM0poWjJVZ2FXMWhaMlVzSUhWdWFXWnZjbTBnWW14dlkyc3NJQUJKYldGblpTQlBjR1Z5WVc1a0lGTmhiWEJzWlNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dUM0JKYldGblpVWmxkR05vTENBQWIyNWxJRzltSUhSb1pTQm1iMnhzYjNkcGJtY2djM1J2Y21GblpTQmpiR0Z6YzJWek9pQlBkWFJ3ZFhRc0lGQnlhWFpoZEdVc0lBQmlaU0IwWVhKblpYUmxaQ0JpZVNCUGNFNWhiV1VzSUU5d1IzSnZkWEJFWldOdmNtRjBaU3dnQUNCdGRYTjBJR0psSURBZ1ptOXlJR0VnWm14dllYUnBibWN0Y0c5cGJuUWdkSGx3WlN3Z0FDd2dhWE1nWVhSMFpXMXdkR2x1WnlCMGJ5QmpjbVZoZEdVZ2JXVnRiM0o1SUdadmNpQmhiaUJwYkd4bFoyRnNJSFI1Y0dVc0lBQlBjRlI1Y0dWVFlXMXdiR1ZrU1cxaFoyVXNJRTl3Vkhsd1pVRmpZMlZzWlhKaGRHbHZibE4wY25WamRIVnlaVXRJVWl3Z0FHOXlJREFnWm05eUlHRnVJR2x1ZEdWblpYSWdkSGx3WlNCM2FYUm9JRk5wWjI1bFpHNWxjM01nYjJZZ01Dd2dBRzl3WlhKaGRHOXlJQ3NnQUM4cUlBQnZjR1Z5WVhSdmNpQXFJQUJDYkc5amF5aHpLU0FBZDJocGJHVWdhVzV6ZEdGdWRHbGhkR2x1WnlBblkyOXVjM1FuSUFCM2FHbHNaU0JwYm5OMFlXNTBhV0YwYVc1bklDZHNaWFFuSUFCM2FHbHNaU0JwYm5OMFlXNTBhV0YwYVc1bklDZDJZWEluSUFCM2FHbHNaU0JwYm5OMFlXNTBhV0YwYVc1bklDZHZkbVZ5Y21sa1pTY2dBRzl3WlhKaGRHOXlJQ1ltSUFCdmNHVnlZWFJ2Y2lBbUlBQnZjR1Z5WVhSdmNpQWxJQUJ2Y0dWeVlYUnZjaUFoSUFCSmJuWmhiR2xrSUZkdmNtdG5jbTkxY0ZOcGVtVWdZblZwYkhScGJpNGdJRVY0Y0dWamRHVmtJRE10Wld4bGJXVnVkQ0JQY0ZOd1pXTkRiMjV6ZEdGdWRFTnZiWEJ2YzJsMFpTQnZjaUJQY0VOdmJuTjBZVzUwUTI5dGNHOXphWFJsT2lBZ0FDa2dLaThnSUNBQVoyOTBPaUFnSUNBZ0lBQXZLaUFnSUNBZ0lDQWdJQ0FBTHlvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQUVsdWRtRnNhV1FnYzJOdmNHVWdkbUZzZFdVNkNpQUFJSHNLQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJTWldOMGFXWjVUM0JsY21GdVpGTnBaMjVsWkc1bGMzTWdaMmwyWlc0Z1lTQnVkV3hzSUdWNGNISUtBQ2NnZDJGeklHNXZkQ0J5WldGamFHVmtJR0o1SUhSb1pTQnlaWE52YkhabGNnb0FKeUJvWVdRZ2JtOGdjMlZ0WVc1MGFXTWdhVzVtYndvQUp5QjNZWE1nWlc1amIzVnVkR1Z5WldRZ2RIZHBZMlVnYVc0Z2RHaGxJSE5oYldVZ1FWTlVJRzltSUdFZ1VISnZaM0poYlFvQVEyeHZibVZrSUc5aWFtVmpkQ0IzWVhNZ2JtOTBJRzltSUhSb1pTQmxlSEJsWTNSbFpDQjBlWEJsQ2dCTlpYSm5aU0JDYkc5amF5QnRZWGtnYm05MElHSmxJSFJvWlNCaWJHOWpheUJqYjI1MFlXbHVhVzVuSUhSb1pTQlBjRXh2YjNCTlpYSm5aUW9BT3lCVFVFbFNMVllLQUNjL0NnQTdDZ0JoYm1RZ2JHRjViM1YwSUc5bUlIQnlaWFpwYjNWeklHMWxiV0psY2lCemRISjFZM1E2Q2dCelpXVWdiR0Y1YjNWMElHOW1JSE4wY25WamREb0tBQ3dnZDJocFkyZ2dZMkZ1Ym05MElHSmxJSFZ6WldRZ2QybDBhQ0IwYUdVZ1kzVnljbVZ1ZENCbGVHVmpkWFJwYjI0Z2JXOWtaWE02Q2dCaGJtUWdiR0Y1YjNWMElHOW1JSE4wY25WamRDQnRaVzFpWlhJNkNnQkdjbTl0SUZaMWJHdGhiaUJ6Y0dWakxDQlFkWE5vSUVOdmJuTjBZVzUwSUVsdWRHVnlabUZqWlNCelpXTjBhVzl1T2dvQVJuSnZiU0JCVWtKZloyeGZjM0JwY25ZZ1pYaDBaVzV6YVc5dU9nb0FMQ0IzYUdsamFDQmpZVzV1YjNRZ1ltVWdkWE5sWkNCM2FYUm9JSFJvWlNCamRYSnlaVzUwSUdWNFpXTjFkR2x2YmlCdGIyUmxiRG9LQUVaeWIyMGdVMUJKVWkxV0lITndaV01zSUhObFkzUnBiMjRnTXk0ek1pNDRJRzl1SUU5d1ZtRnlhV0ZpYkdVNkNnQlVhR1VnWm05c2JHOTNhVzVuSUdadmNuZGhjbVFnY21WbVpYSmxibU5sWkNCSlJITWdhR0YyWlNCdWIzUWdZbVZsYmlCa1pXWnBibVZrT2dvQVJuSnZiU0JXZFd4cllXNGdjM0JsWXpvS0FDazZDZ0FuSUdseklHMXBjM05wYm1jZ1JHVnpZM0pwY0hSdmNsTmxkQ0JrWldOdmNtRjBhVzl1TGdvQUp5QnBjeUJ0YVhOemFXNW5JRUpzYjJOcklHOXlJRUoxWm1abGNrSnNiMk5ySUdSbFkyOXlZWFJwYjI0dUNnQW5JR2x6SUcxcGMzTnBibWNnUW14dlkyc2daR1ZqYjNKaGRHbHZiaTRLQUNjZ2FYTWdiV2x6YzJsdVp5QkNhVzVrYVc1bklHUmxZMjl5WVhScGIyNHVDZ0JqYjIxaWFXNWhkR2x2Ymk0S0FDQm9ZWE1nYVd4c1pXZGhiQ0IwZVhCbExnb0FKeUIxYzJWeklHMXZjbVVnZEdoaGJpQnZibVVnVUhWemFFTnZibk4wWVc1MElHbHVkR1Z5Wm1GalpTNEtBRTkwYUdWeUlIZGhjbTVwYm1keklHaGhkbVVnWW1WbGJpQnpkWEJ3Y21WemMyVmtMZ29BSndvQUFBQUFBd0lqQndBQUFRQUlBQWdBRWdBQUFBQUFBQUFSQUFJQUFRQUFBQXNBQmdBQkFBQUFSMHhUVEM1emRHUXVORFV3QUFBQUFBNEFBd0FBQUFBQUFRQUFBQThBQmdBQUFBQUFCQUFBQUcxaGFXNEFBQUFBQ2dBQUFBTUFBd0FCQUFBQU5nRUFBQVVBQkFBRUFBQUFiV0ZwYmdBQUFBQUZBQVlBQ0FBQUFHZHNYMUJsY2xabGNuUmxlQUFBQUFBR0FBWUFDQUFBQUFBQUFBQm5iRjlRYjNOcGRHbHZiZ0FHQUFjQUNBQUFBQUVBQUFCbmJGOVFiMmx1ZEZOcGVtVUFBQUFBQlFBREFBb0FBQUFBQUFBQVNBQUZBQWdBQUFBQUFBQUFDd0FBQUFBQUFBQklBQVVBQ0FBQUFBRUFBQUFMQUFBQUFRQUFBRWNBQXdBSUFBQUFBZ0FBQUJNQUFnQUNBQUFBSVFBREFBTUFBQUFDQUFBQUZnQURBQVlBQUFBZ0FBQUFGd0FFQUFjQUFBQUdBQUFBQkFBQUFCNEFCQUFJQUFBQUJ3QUFBQVlBQUFBZ0FBUUFDUUFBQUFNQUFBQUlBQUFBT3dBRUFBa0FBQUFLQUFBQUF3QUFBQlVBQkFBTEFBQUFJQUFBQUFFQUFBQXJBQVFBQ3dBQUFBd0FBQUFBQUFBQUt3QUVBQVlBQUFBTkFBQUFBQUFBQUNzQUJBQUdBQUFBRGdBQUFBQUFnRDhzQUFjQUJ3QUFBQThBQUFBTkFBQUFEUUFBQUEwQUFBQU9BQUFBSUFBRUFCQUFBQUFEQUFBQUJ3QUFBRFlBQlFBQ0FBQUFCQUFBQUFBQUFBQURBQUFBK0FBQ0FBVUFBQUJCQUFVQUVBQUFBQkVBQUFBS0FBQUFEQUFBQUQ0QUF3QVJBQUFBRHdBQUFQMEFBUUE0QUFFQUZBQUFBQmNBQUFBYUFBQUFFd0FBQUJZQUFBQVpBQUFBRWdBQUFCVUFBQUFZQUFBQUNBQUFBQXNBQUFBT0FBQUFCd0FBQUFvQUFBQU5BQUFBQmdBQUFBa0FBQUFNQUVIQS9Rd0xnUUlaQ2hzQUFCa0FHZ0FIR0FBQUFCZ0FBUUFZQVFBQUdRc0FCeGdBQWdBWUFRSUFGd0FBRndBRUZ3QUpNd0FBRndBQk1RQUFLZ0FCS3dBQkxBQUJMUUFCS2dNR0t3TUdMQU1HTFFNR0tnUUdLd1FHTEFRR0xRUUdLZ1VHS3dVR0xBVUdMUVVHRndFQUZ3QUlEQUF5QURBQUN3a05DUjRBSHdBTENDQUFJUUFNQ0NJQUl3QWtBQTBBQ3djTUNSNEpId2tnQ1NFSkRBY2lDU01KRFFjTkNBc0JEQUUwQUFzRkN3b0xCQXdGREFvTUJBMEZEUUVOQ2cwRURnQU9DUTRLRHdBUENROEtFQUFRQ1JBS0VRQVJDUkVLRWdBU0NSSUtFd0FUQ1JNS0ZBQVVDUlFLRlFBVkNSVUtGZ0FXQ1JZS0x3QWxKaWNvS1M0Y0hRRUFBQUFBQUFBQUFnQkJ6UDhNQzFVQkFBQUFBZ0FBQUFJQUFBQUJBQUFBQVFBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFEQUFBQUF3QUFBQU1BQUFBQ0FBQUFBQUFBQUFNQUFBQUJBRUd3Z0EwTFdRRUFBQUFJQUFBQUFnQUFBQWtBQUFBQkFBQUFCUUFBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUJ3QUFBQUFBQUFBQkFBQUFBd0FBQUFRQUFBQUFBQUFBQ3dBQUFBZ0FBQUFDQUFBQUVRQUFBQThBQUFBRkFFSEVnUTBMRVF3QUFBQUpBQUFBRGdBQUFBTUFBQUFHQUVIb2dRMExXUTBBQUFBS0FBQUFFQUFBQUFRQUFBQUFBQUFBQndBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQ0FBQUFBZ0FBQUFJQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBRUhRZ2cwTGdBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUJCa29RTkN6TUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEQXdNREF3TURBd01EQXdNREF3TURCQVFFQkFRQVFkQ0VEUXZSSzA1VGRETmZYekl4TUY5ZlpuVnVZM1JwYjI0MlgxOWlZWE5sU1VaaVVFNDRjM0IyZEc5dmJITXpiM0IwTVRGSmJuTjBjblZqZEdsdmJrVkZSVVVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgySmhjMlZKUm1KUVMwNDRjM0IyZEc5dmJITXpiM0IwTVRGSmJuTjBjblZqZEdsdmJrVkZSVVVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgySmhjMlZKUm5aUVRqaHpjSFowYjI5c2N6TnZjSFF4TVVsdWMzUnlkV04wYVc5dVJVVkZSUUJPVTNRelgxOHlNVEJmWDJaMWJtTjBhVzl1Tmw5ZlpuVnVZMGxhVGtzNGMzQjJkRzl2YkhNemIzQjBNVEJDWVhOcFkwSnNiMk5yTWpGR2IzSkZZV05vVTNWalkyVnpjMjl5VEdGaVpXeEZVa3RPVTE4NFpuVnVZM1JwYjI1SlJuWnFSVVZGUlRNa1h6Rk9VMTg1WVd4c2IyTmhkRzl5U1ZOQlgwVkZSbUpxUlVWRkFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTlpWVhObFNVWmlha1ZGUlFCYVRrczRjM0IyZEc5dmJITXpiM0IwTVRCQ1lYTnBZMEpzYjJOck1qRkdiM0pGWVdOb1UzVmpZMlZ6YzI5eVRHRmlaV3hGVWt0T1UzUXpYMTh5T0daMWJtTjBhVzl1U1VaMmFrVkZSVVV6SkY4eEFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTltZFc1alNWcE9Temh6Y0haMGIyOXNjek52Y0hReE1FSmhjMmxqUW14dlkyc3lNMWRvYVd4bFJXRmphRk4xWTJObGMzTnZja3hoWW1Wc1JWSkxUbE5mT0daMWJtTjBhVzl1U1VaaWFrVkZSVVV6SkY4eVRsTmZPV0ZzYkc5allYUnZja2xUUVY5RlJVWmlVRXRxUlVWRkFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTlpWVhObFNVWmlVRXRxUlVWRkFGcE9Temh6Y0haMGIyOXNjek52Y0hReE1FSmhjMmxqUW14dlkyc3lNMWRvYVd4bFJXRmphRk4xWTJObGMzTnZja3hoWW1Wc1JWSkxUbE4wTTE5Zk1qaG1kVzVqZEdsdmJrbEdZbXBGUlVWRk15UmZNZ0JPVTNRelgxOHlNVEJmWDJaMWJtTjBhVzl1Tmw5ZlltRnpaVWxHZGxCTFRqaHpjSFowYjI5c2N6TnZjSFF4TVVsdWMzUnlkV04wYVc5dVJVVkZSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6UlVlWEJsUlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekV5VG5Wc2JFTnZibk4wWVc1MFJRQk9PSE53ZG5SdmIyeHpNMjl3ZERoaGJtRnNlWE5wY3poRGIyNXpkR0Z1ZEVVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE14TWtKdmIyeERiMjV6ZEdGdWRFVUFUamh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE5GTmpZV3hoY2tOdmJuTjBZVzUwUlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekV4U1c1MFEyOXVjM1JoYm5SRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TVROR2JHOWhkRU52Ym5OMFlXNTBSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6RTBWbVZqZEc5eVEyOXVjM1JoYm5SRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TVRkRGIyMXdiM05wZEdWRGIyNXpkR0Z1ZEVVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE14TkUxaGRISnBlRU52Ym5OMFlXNTBSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6RTBVM1J5ZFdOMFEyOXVjM1JoYm5SRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TVROQmNuSmhlVU52Ym5OMFlXNTBSUUFBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgyWjFibU5KV2s0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVGRFWldOdmNtRjBhVzl1VFdGdVlXZGxjakUzUm05eVJXRmphRVJsWTI5eVlYUnBiMjVGYW1wT1UxODRablZ1WTNScGIyNUpSblpTUzA1VE0xOHhNVWx1YzNSeWRXTjBhVzl1UlVWRlJVVXpKRjh6VGxOZk9XRnNiRzlqWVhSdmNrbFRRMTlGUlVaaVV6bGZSVVZGQUU1VGRETmZYekl4TUY5ZlpuVnVZM1JwYjI0MlgxOWlZWE5sU1VaaVVrdE9PSE53ZG5SdmIyeHpNMjl3ZERFeFNXNXpkSEoxWTNScGIyNUZSVVZGQUZwT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekUzUkdWamIzSmhkR2x2YmsxaGJtRm5aWEl4TjBadmNrVmhZMmhFWldOdmNtRjBhVzl1UldwcVRsTjBNMTlmTWpobWRXNWpkR2x2YmtsR2RsSkxUbE13WHpFeFNXNXpkSEoxWTNScGIyNUZSVVZGUlRNa1h6TUFUbE4wTTE5Zk1qRXdYMTltZFc1amRHbHZialpmWDJKaGMyVkpSblpTUzA0NGMzQjJkRzl2YkhNemIzQjBNVEZKYm5OMGNuVmpkR2x2YmtWRlJVVUFBRTVUZEROZlh6SXhNRjlmWm5WdVkzUnBiMjQyWDE5bWRXNWpTVnBPU3poemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTXhNMFJsWmxWelpVMWhibUZuWlhJeE1FWnZja1ZoWTJoVmMyVkZVRXRPVXpOZk1URkpibk4wY25WamRHbHZia1ZTUzA1VFh6aG1kVzVqZEdsdmJrbEdkbEJUTmw5cVJVVkZSVE1rWHpGT1UxODVZV3hzYjJOaGRHOXlTVk5HWDBWRlJtSlRRVjlxUlVWRkFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTlpWVhObFNVWmlVRTQ0YzNCMmRHOXZiSE16YjNCME1URkpibk4wY25WamRHbHZia1ZxUlVWRkFGcE9Temh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE0wUmxabFZ6WlUxaGJtRm5aWEl4TUVadmNrVmhZMmhWYzJWRlVFdE9VekJmTVRGSmJuTjBjblZqZEdsdmJrVlNTMDVUZEROZlh6STRablZ1WTNScGIyNUpSblpRVXpOZmFrVkZSVVV6SkY4eEFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTltZFc1alNWcE9Temh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE0wUmxabFZ6WlUxaGJtRm5aWEkzVG5WdFZYTmxjMFZRUzA1VE0xOHhNVWx1YzNSeWRXTjBhVzl1UlVVekpGOHpUbE5mT1dGc2JHOWpZWFJ2Y2tsVE9WOUZSVVoyVUZNMlgycEZSVVVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgySmhjMlZKUm5aUVRqaHpjSFowYjI5c2N6TnZjSFF4TVVsdWMzUnlkV04wYVc5dVJXcEZSVVVBV2s1TE9ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekV6UkdWbVZYTmxUV0Z1WVdkbGNqZE9kVzFWYzJWelJWQkxUbE13WHpFeFNXNXpkSEoxWTNScGIyNUZSVE1rWHpNQVRsTjBNMTlmTWpFd1gxOW1kVzVqZEdsdmJqWmZYMloxYm1OSlRsTmZObDlmWW1sdVpFbE5Uamh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE0wUmxabFZ6WlUxaGJtRm5aWEpGUm5aUVRsTTBYekV4U1c1emRISjFZM1JwYjI1RlJVcFFVelpmVWt0T1UxOHhNbkJzWVdObGFHOXNaR1Z5Y3pSZlgzQm9TVXhwTVVWRlJVVkZSVTVUWHpsaGJHeHZZMkYwYjNKSlUwaGZSVVZHZGxNNFgwVkZSUUJPVTNRelgxOHlObDlmWW1sdVpFbE5Uamh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE0wUmxabFZ6WlUxaGJtRm5aWEpGUm5aUVRsTXlYekV4U1c1emRISjFZM1JwYjI1RlJVcFFVelJmVWt0T1UxOHhNbkJzWVdObGFHOXNaR1Z5Y3pSZlgzQm9TVXhwTVVWRlJVVkZSUUJPVTNRelgxOHlNVGhmWDNkbFlXdGZjbVZ6ZFd4MFgzUjVjR1ZKVFU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVE5FWldaVmMyVk5ZVzVoWjJWeVJVWjJVRTVUTWw4eE1VbHVjM1J5ZFdOMGFXOXVSVVZGUlFCT1UzUXpYMTh5TVRWaWFXNWhjbmxmWm5WdVkzUnBiMjVKVUU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVE5FWldaVmMyVk5ZVzVoWjJWeVJWQk9VekpmTVRGSmJuTjBjblZqZEdsdmJrVjJSVVVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgyWjFibU5KV2s0NGMzQjJkRzl2YkhNemIzQjBNVFJHWldGMGRYSmxUV0Z1WVdkbGNqRXpRV1JrUTJGd1lXSnBiR2wwZVVWT00zTndkakV3UTJGd1lXSnBiR2wwZVVWRk15UmZNRTVUWHpsaGJHeHZZMkYwYjNKSlV6ZGZSVVZHZGxNMlgwVkZSUUJPVTNRelgxOHlNVEJmWDJaMWJtTjBhVzl1Tmw5ZlltRnpaVWxHZGs0emMzQjJNVEJEWVhCaFltbHNhWFI1UlVWRlJRQmFUamh6Y0haMGIyOXNjek52Y0hReE5FWmxZWFIxY21WTllXNWhaMlZ5TVROQlpHUkRZWEJoWW1sc2FYUjVSVTR6YzNCMk1UQkRZWEJoWW1sc2FYUjVSVVV6SkY4d0FBQk9VM1F6WDE4eU1UQmZYMloxYm1OMGFXOXVObDlmWm5WdVkwbGFUamh6Y0haMGIyOXNjek52Y0hReE1VbHVjM1J5ZFdOMGFXOXVNVEZHYjNKRllXTm9TVzV6ZEVWU1MwNVRYemhtZFc1amRHbHZia2xHZGxCVE5GOUZSVVZpUlZWc1V6WmZSVjlPVTE4NVlXeHNiMk5oZEc5eVNWTkNYMFZGUm1KVE5sOUZSVVVBV2s0NGMzQjJkRzl2YkhNemIzQjBNVEZKYm5OMGNuVmpkR2x2YmpFeFJtOXlSV0ZqYUVsdWMzUkZVa3RPVTNRelgxOHlPR1oxYm1OMGFXOXVTVVoyVUZNeFgwVkZSV0pGVld4VE5GOUZYd0JPVTNRelgxOHlNVEJmWDJaMWJtTjBhVzl1Tmw5ZlpuVnVZMGxhVGtzNGMzQjJkRzl2YkhNemIzQjBNVEZKYm5OMGNuVmpkR2x2YmpFeFJtOXlSV0ZqYUVsdWMzUkZVa3RPVTE4NFpuVnVZM1JwYjI1SlJuWlFTMU0wWDBWRlJXSkZWV3hUTjE5RlgwNVRYemxoYkd4dlkyRjBiM0pKVTBOZlJVVkdZbE0zWDBWRlJRQmFUa3M0YzNCMmRHOXZiSE16YjNCME1URkpibk4wY25WamRHbHZiakV4Um05eVJXRmphRWx1YzNSRlVrdE9VM1F6WDE4eU9HWjFibU4wYVc5dVNVWjJVRXRUTVY5RlJVVmlSVlZzVXpWZlJWOEFUbE4wTTE5Zk1qRXdYMTltZFc1amRHbHZialpmWDJaMWJtTkpXazQ0YzNCMmRHOXZiSE16YjNCME9FWjFibU4wYVc5dU1URkdiM0pGWVdOb1NXNXpkRVZTUzA1VFh6aG1kVzVqZEdsdmJrbEdkbEJPVXpOZk1URkpibk4wY25WamRHbHZia1ZGUlVWaVlrVXpKRjh4VGxOZk9XRnNiRzlqWVhSdmNrbFRRMTlGUlVaaVV6ZGZSVVZGQUZwT09ITndkblJ2YjJ4ek0yOXdkRGhHZFc1amRHbHZiakV4Um05eVJXRmphRWx1YzNSRlVrdE9VM1F6WDE4eU9HWjFibU4wYVc5dVNVWjJVRTVUTUY4eE1VbHVjM1J5ZFdOMGFXOXVSVVZGUldKaVJUTWtYekVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgyWjFibU5KV2s1TE9ITndkblJ2YjJ4ek0yOXdkRGhHZFc1amRHbHZiakV4Um05eVJXRmphRWx1YzNSRlVrdE9VMTg0Wm5WdVkzUnBiMjVKUm5aUVMwNVRNMTh4TVVsdWMzUnlkV04wYVc5dVJVVkZSV0ppUlRNa1h6Sk9VMTg1WVd4c2IyTmhkRzl5U1ZORVgwVkZSbUpUT0Y5RlJVVUFXazVMT0hOd2RuUnZiMnh6TTI5d2REaEdkVzVqZEdsdmJqRXhSbTl5UldGamFFbHVjM1JGVWt0T1UzUXpYMTh5T0daMWJtTjBhVzl1U1VaMlVFdE9VekJmTVRGSmJuTjBjblZqZEdsdmJrVkZSVVZpWWtVekpGOHlBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek5GWnZhV1JGQUFCT1UzUXpYMTh5TVRCZlgyWjFibU4wYVc5dU5sOWZablZ1WTBsYVRrczRjM0IyZEc5dmJITXpiM0IwTmsxdlpIVnNaVGhVYjBKcGJtRnllVVZRVGxOZk5uWmxZM1J2Y2tscVRsTmZPV0ZzYkc5allYUnZja2xxUlVWRlJXSkZNeVJmTUU1VE5sOUpVMEZmUlVWR2RsQkxUbE16WHpFeFNXNXpkSEoxWTNScGIyNUZSVVZGQUU1VGRETmZYekl4TUY5ZlpuVnVZM1JwYjI0MlgxOW1kVzVqU1ZwYVRrczRjM0IyZEc5dmJITXpiM0IwTmsxdlpIVnNaVGhVYjBKcGJtRnllVVZRVGxOZk5uWmxZM1J2Y2tscVRsTmZPV0ZzYkc5allYUnZja2xxUlVWRlJXSkZUa3N6SkY4d1kyeEZVRXRPVXpOZk1URkpibk4wY25WamRHbHZia1ZGVld4UVMycEZYMDVUTmw5SlUwZGZSVVZHWWxOR1gwVkZSUUJhV2s1TE9ITndkblJ2YjJ4ek0yOXdkRFpOYjJSMWJHVTRWRzlDYVc1aGNubEZVRTVUZEROZlh6STJkbVZqZEc5eVNXcE9VekpmT1dGc2JHOWpZWFJ2Y2tscVJVVkZSV0pGVGtzekpGOHdZMnhGVUV0T1V6QmZNVEZKYm5OMGNuVmpkR2x2YmtWRlZXeFFTMnBGWHdCYVRrczRjM0IyZEc5dmJITXpiM0IwTmsxdlpIVnNaVGhVYjBKcGJtRnllVVZRVGxOME0xOWZNaloyWldOMGIzSkphazVUTWw4NVlXeHNiMk5oZEc5eVNXcEZSVVZGWWtVekpGOHdBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek5FSnZiMnhGQUU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpOMU5oYlhCc1pYSkZBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek5VVjJaVzUwUlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekV4UkdWMmFXTmxSWFpsYm5SRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6T1ZKbGMyVnlkbVZKWkVVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE0xVVhWbGRXVkZBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek1URlFhWEJsVTNSdmNtRm5aVVVBVGpoemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTXhNazVoYldWa1FtRnljbWxsY2tVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE15TTBGalkyVnNaWEpoZEdsdmJsTjBjblZqZEhWeVpVNVdSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6RXhVbUY1VVhWbGNubExTRkpGQUU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVEZJYVhSUFltcGxZM1JPVmtVQUFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTltZFc1alNWcE9PSE53ZG5SdmIyeHpNMjl3ZERoaGJtRnNlWE5wY3pFeFZIbHdaVTFoYm1GblpYSXlNbEpsWTI5eVpFbG1WSGx3WlVSbFptbHVhWFJwYjI1RlVrdE9Vek5mTVRGSmJuTjBjblZqZEdsdmJrVkZNeVJmTUU1VFh6bGhiR3h2WTJGMGIzSkpVemxmUlVWR2RsTTRYMFZGUlFCYVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE14TVZSNWNHVk5ZVzVoWjJWeU1qSlNaV052Y21SSlpsUjVjR1ZFWldacGJtbDBhVzl1UlZKTFRsTXdYekV4U1c1emRISjFZM1JwYjI1RlJUTWtYekFBVGpoemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTTNTVzUwWldkbGNrVUFUamh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNMVJteHZZWFJGQUU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVEpUWVcxd2JHVmtTVzFoWjJWRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6Tms5d1lYRjFaVVVBVGpoemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTTBVR2x3WlVVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE14TkVadmNuZGhjbVJRYjJsdWRHVnlSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6WldaV04wYjNKRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TmsxaGRISnBlRVVBVGpoemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTTFTVzFoWjJWRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TlVGeWNtRjVSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6RXlVblZ1ZEdsdFpVRnljbUY1UlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjelpUZEhKMVkzUkZBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek4xQnZhVzUwWlhKRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6T0VaMWJtTjBhVzl1UlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekU1UTI5dmNHVnlZWFJwZG1WTllYUnlhWGhPVmtVQVRqaHpjSFowYjI5c2N6VjFkR2xzY3pFeFUyMWhiR3hXWldOMGIzSkpVRXRPVTE4emIzQjBPR0Z1WVd4NWMybHpORlI1Y0dWRlRHMDRSVVZGQUFBQUFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBQUFBQUFCQUFBQUJBQUFBQUVBQUFBQ0FBQUFBd0FBQUFJQUFBQUVBRUcwc0EwTHdRd0JBQUFBQWdBQUFBTUFBQUFFQUFBQUJRQUFBQVlBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBRkFBQUFCVUFBQUFXQUFBQUZ3QUFBQmdBQUFBWkFBQUFHZ0FBQUJzQUFBQWNBQUFBSFFBQUFCNEFBQUFmQUFBQUlBQUFBQ0VBQUFBaUFBQUFJd0FBQUNRQUFBQWxBQUFBSmdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFMQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBUVFBQUFFSUFBQUJEQUFBQVJBQUFBRVVBQUFCR0FBQUFSd0FBQUVnQUFBQkpBQUFBU2dBQUFFc0FBQUJNQUFBQVRRQUFBRTRBQUFCUEFBQUFVQUFBQUZFQUFBQlNBQUFBVXdBQUFGUUFBQUJWQUFBQVZnQUFBRmNBQUFCWUFBQUFXUUFBQUZvQUFBQmJBQUFBWEFBQUFGMEFBQUJlQUFBQVh3QUFBR0FBQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQUJuQUFBQWFBQUFBR2tBQUFCcUFBQUFhd0FBQUd3QUFBQnRBQUFBYmdBQUFHOEFBQUFLQUFBQU5BQUFBQUFBQUFBQkFBQUFCZ0FBQUJNQUFBQVJBQUFBQkFBQUFPTVVBQUFVQUFBQUJBQUFBQUFBQUFBRUFBQUFXaEVBQUZrUkFBRGpGQUFBQmdBQUFESUFBQUF5QUFBQUFRQUFBSWtYQUFBekFBQUFBZ0FBQURZQUFBQVNBQUFBS1FBQUFEd0FBQUE2QUFBQU93QUFBQnNBQUFBOUFBQUFQZ0FBQUVBQUFBQkJBQUFBUWdBQUFEOEFBQUJEQUFBQXNSUUFBRVFBQUFBRUFBQUFXaEVBQUZrUkFBQlpBQUFBUnhFQUFGSUFBQUJQRVFBQVdBQUFBSW9YQUFCL0VRQUFVQUFBQUg4UkFBQjRFUUFBVUFBQUFFOEFBQUNERndBQWd4Y0FBRWNBQUFCNEVRQUFUd0FBQUFRQUFBQ1NFd0FBQndBQUFMOFRBQUFIRlFBQTNSUUFBQWNWQUFDaUZBQUFhQUFBQUtNVUFBQ3hGQUFBYXdBQUFKSVVBQUJrQUFBQTNCUUFBSDhSQUFCbEFBQUFVQUFBQU53VUFBQmxBQUFBM1JRQUFHWUFBQURjRkFBQWZ4RUFBSGdSQUFCbEFBQUFVQUFBQUU4QUFBRHRGQUFBWVFBQUFQTVVBQUFDRlFBQS9CUUFBQkFBQUFBREZRQUFBeFVBQUF3QUFBQU9GUUFBd0JVQUFNRVZBQURDRlFBQXl4VUFBTkFWQUFEakZRQUFMZ0FBQU9ZVkFBRHdGUUFBN0JVQUFPMFZBQUQ5RlFBQVF3QUFBQm9BQUFBYkFBQUFRQllBQUVBV0FBQkJGZ0FBUUJZQUFFSVdBQUM1RmdBQTFSWUFBUDRXQUFBN0FBQUFGaGNBQURVQUFBQWlGd0FBTHhjQUFEa1hBQUFnQUFBQVBCY0FBQzBBQUFEUEZ3QUFrUmNBQUpJWEFBQVZBQUFBOFJVQUFNa1hBQUQ5RndBQUFCa0FBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQVpBQUFBS2dBQUFPRVVBQUJjQUFBQXpSWUFBQUFYQUFET0Z3QUFGUUFBQUJZWEFBQTFBQUFBQmdBQUFIZ1JBQUIvRVFBQWZoRUFBQVVWQUFCR0VRQUFBd0FBQUFJQUFBQ1NGQUFBM0JRQUFIOFJBQUNqRkFBQUJBQUFBT01VQUFBVEFBQUFUQUFBQURVQUFBQUNBQUFBQXdBQUFBQUFBQUFDQUFBQUF3QUFBSklVQUFDakZBQUFBZ0FBQUpJVUFBQ2pGQUFBT2dBQUFGY0FBQUJmRVFBQVRRQUFBSEFSQUFCRUFBQUFjUkVBQUhJUkFBQnpFUUFBZEJFQUFBVUFBQUNWRXdBQUdBQUFBQVVBQUFBWUFBQUFraFFBQUtNVUFBQVJBQUFBWkFBQUFLZ1VBQUJnQUFBQTVoUUFBQUlWQUFBUUFBQUE4eFFBQVB3VUFBRHhGUUFBemhVQUFBUVhBQUF4QUFBQUNSY0FBQUVBQUFEeEZRQUFKZ0FBQUZVQUFBQmJBQUFBVUFBQUFHVUFBQUFIRlFBQUVRQUFBT01WQUFBdUFBQUFMeGNBQUR3QUFBQXJBQUFBTEFBQUFBRUFBQUFHQUFBQU1BQUFBQUVBQUFBaUFBQUFKUUFBQUNRQUFBQXVBQUFBTHdBQUFDZ0FBQUF4QUFBQW1CTUFBTDBXQUFBaUZ3QUFCUUFBQUVnQUFBQXpGd0FBQVFBQUFBWUFBQUFBQUFBQUl3QUFBQUVBQUFCSEFBQUFOZ0FBQUVvQUFBQUdBQUFBZ1JRQUFHY0FBQUNERkFBQVl3QUFBSWNVQUFDTEZBQUFiUUFBQUdRQUFBQ2tGQUFBcEJRQUFFVUFBQUJpQUFBQXRSUUFBQTBBQUFBT0ZRQUE1QlVBQU9ZVkFBQWJBQUFBSEFBQUFNQVdBQUFzQUFBQUNoY0FBQkFYQUFBU0Z3QUFGQmNBQUJ3WEFBQWdGd0FBTnhjQUFCNFlBQUFnQUFBQUlRQkJnTDBOQ3hZQ0FBQUFBd0FBQU53VUFBQi9FUUFBa2hRQUFLTVVBRUdndlEwTEVnSUFBQUJGQUFBQWhoUUFBSklVQUFDakZBQkJ3TDBOQzdNTE9RQUFBRVlBQUFDR0ZBQUFraFFBQUtNVUFBQUdBQUFBUFFBQUFFY1JBQUFHQUFBQVBRQUFBRVVRQUFCSEVRQUFRQUFBQUZJQUFBQkxFUUFBVkFBQUFFc1JBQUNTRkFBQW94UUFBQkVBQUFCVUFBQUFaQUFBQUVZQUFBQlZFUUFBUWdBQUFGY1JBQUJKQUFBQWh4UUFBSklVQUFCa0FBQUFiZ0FBQUl3VUFBQ1NGQUFBWGdBQUFHUUFBQUNSRkFBQURnQUFBS3NVQUFDckZBQUFEd0FBQUd3QUFBQ3JGQUFBcXhRQUFOd1VBQUJsQUFBQTNSUUFBR1lBQUFCL0VRQUFVQUFBQVAwVUFBQnFBQUFBaEJjQUFFNEFBQUFHQUFBQVB3QUFBRUFBQUFCREFBQUFzUlFBQUdzQUFBQUxBQUFBRFFBQUFBUUFBQUF0QUFBQUpRQUFBQ3NBQUFBdUFBQUFFd0FBQUJFQUFBQTlBQUFBQ3dBQUFGMEFBQUJNRVFBQVdBQUFBRDhBQUFCUkVRQUFVUkVBQUZzQUFBQlpFUUFBVVFBQUFFQUFBQUJnRVFBQVR3QUFBRThBQUFCUUFBQUFBZ0FBQUFvQUFBQUhBQUFBQ0FBQUFCY0FBQUJUQUFBQU9RQUFBQmtBQUFCdUFBQUFoaFFBQUc0QUFBQmVBQUFBYUFBQUFDOEFBQUFvQUFBQXRSUUFBQzRBQUFDMUZBQUFMd0FBQUxVVUFBQmhBQUFBREFBQUFCSUFBQUJwQUFBQVh3QUFBRG9BQUFBMEFBQUFJd0FBQURnQUFBQXZBQUFBRmdBQUFQTVZBQUErQUFBQVF3QUFBQ0lBQUFBOUFBQUFKQUFBQUI4QUFBQWVBQUFBT3dBQUFDb0FBQUFyQUFBQUp3QUFBRE1BQUFBb0FBQUFLUUFBQUNZQUFBQWRBQUFBTndBQUFEQUFBQUFnQUFBQUxRQUFBRWNBQUFBbkFBQUFRUUFBQUZZQUFBQVZBQUFBTWdBQUFEWUFBQUFVQUFBQUlRQUFBRGtBQUFBbEFBQUFXZ0FBQUhnUkFBQUFBQUFBUUJFQUFBQUFBQUFTRVFBQUV4RUFBRUVSQUFBQUFBQUFGQkVBQUJVUkFBQkNFUUFBQUFBQUFCWVJBQUFYRVFBQVF4RUFBQUFBQUFBWUVRQUFHUkVBQUVRUkFBQUFBQUFBR2hFQUFCc1JBQUFwQUFBQUFBQUFBQndSQUFBZEVRQUFKQUFBQUFBQUFBQWVFUUFBSHhFQUFCd0FBQUNNRUFBQWpSQUFBSTRRQUFBYkFBQUF1UkFBQUxvUUFBQzdFQUFBR0FBQUFNZ1FBQURKRUFBQXloQUFBQ1lBQUFERkVBQUF4aEFBQU1jUUFBQW9BQUFBRHhFQUFCQVJBQUFSRVFBQUdnQUFBRVlSQUFCSEVRQUFTQkVBQU5VVUFBQ1NFQUFBa3hBQUFKUVFBQURVRkFBQWxSQUFBSllRQUFDWEVBQUF6eFFBQUpzUUFBQ2NFQUFBblJBQUFBWUFBQUNlRUFBQW54QUFBS0FRQUFEb0ZBQUErUkFBQVBvUUFBRDdFQUFBekJRQUFNc1FBQURNRUFBQXpSQUFBTXNVQUFET0VBQUF6eEFBQU5BUUFBRFNGQUFBMFJBQUFOSVFBQURURUFBQTB4UUFBRklSQUFCVEVRQUFWQkVBQU9jVUFBQ1lFQUFBbVJBQUFKb1FBQURORkFBQS94QUFBQUFSQUFBQkVRQUF6aFFBQVB3UUFBRDlFQUFBL2hBQUFNb1VBQUJNRVFBQVRSRUFBRTRSQUFESkZBQUFUeEVBQUZBUkFBQlJFUUFBeHhRQUFLb1FBQUNyRUFBQXJCQUFBTWdVQUFDdEVBQUFyaEFBQUs4UUFBQ3RGQUFBZVJBQUFIb1FBQUI3RUFBQXJCUUFBSHdRQUFCOUVBQUFmaEFBQUpZVEFBQi9FQUFBZ0JBQUFJRVFBQUNRRkFBQWlCQUFBSWtRQUFDS0VBQUFoUmNBQUU4YUFBQlFHZ0FBVVJvQUFLWVVBQUE2RUFBQU94QUFBRHdRQUFDbkZBQUFRQkFBQUVFUUFBQkNFQUFBQUFBQUFBSUFBQUFEQUFBQWxCUUFBUFVVQUFBQUFBQUFBZ0FBQUFNQUFBQVRBQUFBRkFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFRQUFBQUVBQUFBQlFBQUFBVUFBQUFGQUFBQUJRQUFBQVVBQUFCS0FBQUFSd0FBQUNRQkFBQVBBQUFBRUFBQUFFc0JBQUE1QUFBQUpRRUFBQ1lCQUFBbkFRQUFLQUVBQUVVQkFBQkdBUUFBQlFBQUFBRUFBQUFDQUFBQUF3QUFBQUlBQUFBQUFCd0FIUUFlQUNBQUlBQkJoc2tOQ3hyd1B3QUFBQUFBQVBnL0FBQUFBQUFBQUFBRzBNOUQ2LzFNUGdCQnE4a05DNzBEUUFPNDRqOEFBQUFBQUFEd1AzU0ZGZE93MmU4L0Q0bjViRmkxN3o5Uld4TFFBWlB2UDN0UmZUeTRjdTgvcXJsb01ZZFU3ejg0WW5WdWVqanZQK0hlSC9XZEh1OC9GYmN4Q3Y0Rzd6L0xxVG8zcC9IdVB5STBFa3ltM3U0L0xZbGhZQWpPN2o4bktqYlYyci91UDRKUG5WWXJ0TzQvS1ZSSTNRZXI3aitGVlRxd2ZxVHVQODA3ZjJhZW9PNC9kRi9zNkhXZjdqK0hBZXR6RktIdVB4UE9USm1KcGU0LzI2QXFRdVdzN2ovbHhjMndON2Z1UDVEd280S1J4TzQvWFNVK3NnUFY3ait0MDFxWm4ranVQMGRlKy9KMi8rNC9uRktGM1pzWjd6OXBrTy9jSURmdlA0ZWsrOXdZV084L1g1dDdNNWQ4N3ovYWtLU2lyNlR2UDBCRmJsdDIwTzgvQUFBQUFBQUE2RUtVSTVGTCtHcXNQL1BFK2xET3Y4NC8xbElNLzBJdTVqOEFBQUFBQUFBNFEvNkNLMlZIRlVkQWxDT1JTL2hxdkQ3enhQcFF6cjh1UDlaU0RQOUNMcFkvL29JclpVY1ZaMEFBQUFBQUFBQTRRd0FBK3Y1Q0xuYS9PanVldkpyM0RMMjkvZi8vLy8vZlB6eFVWVlZWVmNVL2tTc1h6MVZWcFQ4WDBLUm5FUkdCUHdBQUFBQUFBTWhDN3puNi9rSXU1ajhreElML3ZiL09QN1gwRE5jSWE2dy96RkJHMHF1eWd6K0VPazZiNE5kVlB3QkI5c3dOQzVvVjhEOXV2NGdhVHp1YlBEVXorNms5OXU4L1hkelluQk5nY2J4aGdIYyttdXp2UDlGbWh4QjZYcEM4aFg5dTZCWGo3ejhUOW1jMVV0S01QSFNGRmRPdzJlOC8rbzc1STRET2k3emU5dDBwYTlEdlAySEk1bUZPOTJBOHlKdDFHRVhIN3orWjB6TmI1S09RUElQenhzbyt2dTgvYlh1RFhhYWFsendQaWZsc1dMWHZQL3p2L1pJYXRZNDg5MGR5SzVLczd6L1JuQzl3UGI0K1BLTFIwekxzbys4L0MyNlFpVFFEYXJ3YjAvNnZacHZ2UHc2OUx5cFNWcFc4VVZzUzBBR1Q3ejlWNms2TTc0QlF2TXd4Yk1DOWl1OC9GdlRWdVNQSmtiemdMYW11bW9MdlA2OVZYT25qMDRBOFVZNmx5Smg2N3o5SWs2WHFGUnVBdkh0UmZUeTRjdTgvUFRMZVZmQWZqN3pxall3NCtXcnZQNzlURXorTWlZczhkY3R2NjF0ajd6OG02eEYybk5tV3ZOUmNCSVRnVys4L1lDODZQdmZzbWp5cXVXZ3hoMVR2UDUwNGhzdUM1NCs4SGRuOElsQk43eitOdzZaRVFXK0tQTmFNWW9nN1J1OC9mUVRrc0FWNmdEeVczSDJSU1QvdlA1U29xT1A5anBZOE9HSjFibm80N3o5OVNIVHlHRjZIUEQrbXNrL09NZTgvOHVjZm1DdEhnRHpkZk9KbFJTdnZQMTRJY1Q5N3VKYThnV1AxNGQ4azd6OHhxd2x0NGZlQ1BPSGVIL1dkSHU4LytyOXZHcHNoUGJ5UTJkclFmeGp2UDdRS0RIS0NONHM4Q3dQa3BvVVM3eitQeTg2SmtoUnVQRll2UHFtdkRPOC90cXV3VFhWTmd6d1Z0ekVLL2didlAweDByT0lCUW9ZOE1kaE0vSEFCN3o5SytOTmRPZDJQUFA4V1pMSUkvTzQvQkZ1T080Q2pocnp4bjVKZnhmYnVQMmhRUzh6dFNwSzh5Nms2TjZmeDdqK09MVkViK0FlWnZHYllCVzJ1N080LzBqYVVQdWpSY2J6M24rVTAyK2Z1UHhVYnpyTVpHWm04NWFnVHd5M2o3ajl0VENxblNKK0ZQQ0kwRWt5bTN1NC9pbWtvZW1BU2s3d2NnS3dFUmRydVAxdUpGMGlQcDFpOEtpNzNJUXJXN2o4Ym1rbG5teXg4dkplb1VObjEwZTQvRWF6Q1lPMWpRend0aVdGZ0NNN3VQKzlrQmpzSlpwWThWd0FkN1VISzdqOTVBNkhhNGN4dVBOQTh3YldpeHU0L01CSVBQNDcva3p6ZTA5ZndLc1B1UDdDdmVydk9rSFk4SnlvMjFkcS83ajkzNEZUcnZSMlRQQTNkL1pteXZPNC9qcU54QURTVWo3eW5MSjEyc3JudVAwbWprOXpNM29lOFFtYlBvdHEyN2o5Zk9BKzl4dDU0dklKUG5WWXJ0TzQvOWx4NzdFWVNocndQa2wzS3BMSHVQNDdYL1JnRk5aTTgyaWUxTmtldjdqOEZtNG92dDVoN1BQM0hsOVFTcmU0L0NWUWM0dUZqa0R3cFZFamRCNnZ1UCtyR0dWQ0Z4elE4dDBaWmlpYXA3ajgxd0dRcjVqS1VQRWdoclJWdnArNC9uM2FaWVVya2pMd0ozSGE1NGFYdVA2aE43enZGTTR5OGhWVTZzSDZrN2ordTZTdUplRk9FdkNERHpEUkdvKzQvV0ZoV2VOM09rN3dsSWxXQ09LTHVQMlFaZm9DcUVGYzhjNmxNMUZXaDdqOG9JbDYvNzdPVHZNMDdmMmFlb080L2dyazBoNjBTYXJ5LzJndDFFcUR1UCs2cGJianZaMk84THhwbFBMS2Y3ajlSaU9CVVBkeUF2SVNVVWZsOW4rNC96ejVhZm1RZmVMeDBYK3pvZFovdVA3QjlpOEJLN29hOGRJR2xTSnFmN2orSzVsVWVNaG1Hdk1sblFsYnJuKzQvMDlRSlhzdWNrRHcvWGQ1UGFhRHVQeDJsVGJuY01udThod0hyY3hTaDdqOXJ3R2RVL2V5VVBETEJNQUh0b2U0L1ZXeldxK0hyWlR4aVRzODI4Nkx1UDBMUHN5L0ZvWWk4RWhvK1ZDZWs3ajgwTnp2eHRtbVR2QlBPVEptSnBlNC9IdjhaT29SZWdMeXR4eU5HR3FmdVAyNVhjdGhRMUpTODdaSkVtOW1vN2o4QWlnNWJaNjJRUEpsbWl0bkhxdTQvdE9yd3dTKzNqVHpib0NwQzVhenVQLy9ueFp4Z3RtVzhqRVMxRmpLdjdqOUVYL05aZy9aN1BEWjNGWm11c2U0L2d6MGVweDhKazd6Ry81RUxXN1R1UHlrZWJJdTRxVjI4NWNYTnNEZTM3ajladVpCOCtTTnN2QTlTeU10RXV1NC9xdm4wSWtORGtyeFFUdDZmZ3IzdVAwdU9adGRzeW9XOHVnZktjUEhBN2o4bnpwRXIvSzl4UEpEd280S1J4TzQvdTNNSzRUWFNiVHdqSStNWlk4anVQMk1pWWlJRXhZZThaZVZkZTJiTTdqL1ZNZUxqaGh5TFBETXRTdXliME80L0ZidTgwOUc3a2J4ZEpUNnlBOVh1UDlJeDdwd3h6SkE4V0xNd0U1N1o3ait6V25OdWhHbUVQTC85ZVZWcjN1NC90SjJPbDgzZmdyeDY4OU8vYStQdVA0Y3p5NUozR293OHJkTmFtWi9vN2ovNjJkRktqM3VRdkdhMmpTa0g3dTQvdXE3Y1Z0bkRWYno3RlUrNG92UHVQMEQycGowT3BKQzhPbG5salhMNTdqODBrNjA0OU5ab3ZFZGUrL0oyLys0L05ZcFlhK0x1a2J4S0JxRXdzQVh2UDgzZFh3clgvM1E4MHNGTGtCNE03eitzbUpMNis3MlJ2QWtlMTF2Q0V1OC9zd3l2TUs1dWN6eWNVb1hkbXhudlA1VDluMXd5NDQ0OGV0RC9YNnNnN3orc1dRblJqK0NFUEV2UlZ5N3hKKzgvWnhwT09LL05ZenkxNXdhVWJTL3ZQMmdaa213c2EyYzhhWkR2M0NBMzd6L1N0Y3lER0lxQXZQckRYVlVMUCs4L2Ivci9QMTJ0ajd4OGlRZEtMVWZ2UDBtcGRUaXVEWkM4OG9rTkNJZFA3eituQnoybWhhTjBQSWVrKzl3WVdPOC9EeUpBSUo2UmdyeVlnOGtXNDJEdlA2eVN3ZFZRV280OGhUTGJBK1pwN3o5TGF3R3NXVHFFUEdDMEFmTWhjKzgvSHo2MEJ5SFZncnhmbTNzemwzenZQOGtOUnp1NUtvbThLYUgxRkVhRzd6L1RpRHBnQkxaMFBQWS9pK2N1a084L2NYS2RVZXpGZ3p5RFRNZjdVWnJ2UC9DUjA0OFM5NCs4MnBDa29xK2s3ejk5ZENQaW1LNk52UEZuamkxSXIrOC9DQ0NxUWJ6RGpqd25XbUh1RzdydlB6THJxY09VSzRROGw3cHJOeXZGN3ovdWhkRXhxV1NLUEVCRmJsdDIwTzgvN2VNNzVMbzNqcndVdnB5dC9kdnZQNTNOa1UwN2lYYzgySkNlZ2NIbjd6K0p6R0JCd1FWVFBQRnhqeXZDOCs4L3Z2UDRlZXhoOWo4Wk1KWmJ4djdldnoySXIwcnRjZlUvcFB6VU1tZ0wyNyt3RVBEd09aWDBQM3UzSHdxTFFkZS9oUU80c0pYSjh6OTd6MjBhNlozVHY2VmtpQXdaRGZNL01iYnk4NXNkMEwrZ2pndDdJbDd5UC9CNk94c2RmTW0vUHpRYVNrcTc4VCtmUEsrVDQvbkN2N3JsaXZCWUkvRS9YSTE0djh0Z3ViK25BSmxCUDVYd1A4NWZSN2FkYjZxL0FBQUFBQUFBOEQ4QUFBQUFBQUFBQUt4SG12Mk1ZTzQvUGZVa244bzRzeitnYWdJZnM2VHNQN3FST0ZTcGRzUS81dnhxVnpZZzZ6L1M1TVJLQzRUT1B5MnFvV1BSd3VrL0hHWEc4RVVHMUQvdFFYZ0Q1b2JvUC9pZkd5eWNqdGcvWWtoVDlkeG41ei9NZTdGT3BPRGNQMDErQ3ZlMkV0ZS80REpvU2IvSzNqL2U0L3FmUnhYbnY3aklOVjlIRmZjL3Z2UDRlZXhoOWovZXFveUE5M3ZWdnoySXIwcnRjZlUvMjIzQXAvQyswcit3RVBEd09aWDBQMmM2VVgrdUh0Qy9oUU80c0pYSjh6L3BKSUttMkRITHY2VmtpQXdaRGZNL1dIZkFDazlYeHIrZ2pndDdJbDd5UHdDQm5NY3Jxc0cvUHpRYVNrcTc4VDllRG96T2RrNjZ2N3JsaXZCWUkvRS96QnhoV2p5WHNiK25BSmxCUDVYd1B4NE00VGowVXFLL0FBQUFBQUFBOEQ4QUFBQUFBQUFBQUt4SG12Mk1ZTzQvaEZueVhhcWxxaitnYWdJZnM2VHNQN1F1TnFwVFhydy81dnhxVnpZZzZ6OEkyeUIzNVNiRlB5MnFvV1BSd3VrL2NFY2lEWWJDeXovdFFYZ0Q1b2JvUCtGK29NaUxCZEUvWWtoVDlkeG41ejhKN3JaWE1BVFVQKzg1K3Y1Q0x1WS9OSU80U0tNTzBMOXFDK0FMVzFmVlB5TkJDdkwrLzkrL0FBQUFBQUFBQUFCUHUyRUZaNnpkUHhndFJGVDdJZWsvbS9hQjBndHo3ejhZTFVSVSt5SDVQK0psTHlKL0szbzhCMXdVTXlhbWdUeTl5L0I2aUFkd1BBZGNGRE1tcHBFOEdDMUVWUHNoNlQ4WUxVUlUreUhwdjlJaE0zOTgyUUpBMGlFemYzelpBc0FBUVovaURRdW9Gb0FZTFVSVSt5RUpRQmd0UkZUN0lRbkEydzlKUDlzUFNiL2t5eFpBNU1zV3dBQUFBQUFBQUFDQTJ3OUpRTnNQU2NBNFkrMCsyZzlKUDE2WWV6L2FEOGsvYVRlc01XZ2hJak8wRHhRemFDR2lNd01BQUFBRUFBQUFCQUFBQUFZQUFBQ0QrYUlBUkU1dUFQd3BGUURSVnljQTNUVDFBR0xid0FBOG1aVUFRWkJEQUdOUi9nQzczcXNBdDJIRkFEcHVKQURTVFVJQVNRYmdBQW5xTGdBY2t0RUE2eDMrQUNteEhBRG9QcWNBOVRXQ0FFUzdMZ0NjNllRQXRDWndBRUYrWHdEV2tUa0FVNE01QUp6ME9RQ0xYNFFBS1BtOUFQZ2ZPd0RlLzVjQUQ1Z0ZBQkV2N3dBS1dvc0FiUjl0QU05K05nQUp5eWNBUmsrM0FKNW1Qd0F0Nmw4QXVpZDFBT1hyeHdBOWUvRUE5emtIQUpKU2lnRDdhK29BSDdGZkFBaGRqUUF3QTFZQWUveEdBUENyYXdBZ3ZNOEFOdlNhQU9PcEhRQmVZWkVBQ0J2bUFJV1paUUNnRkY4QWpVQm9BSURZL3dBbmMwMEFCZ1l4QU1wV0ZRREpxSE1BZStKZ0FHdU13QUFaeEVjQXpXZkRBQW5vM0FCWmd5b0FpM2JFQUtZY2xnQkVyOTBBR1ZmUkFLVStCUUFGQi84QU0zNC9BTUl5NkFDWVQ5NEF1MzB5QUNZOXd3QWVhKzhBbi9oZUFEVWZPZ0IvOHNvQThZY2RBSHlRSVFCcUpId0ExVzc2QURBdGR3QVZPME1BdFJUR0FNTVpuUUN0eE1JQUxFMUJBQXdBWFFDR2ZVWUE0M0V0QUp2R21nQXpZZ0FBdE5KOEFMU25sd0EzVmRVQTF6NzJBS01RR0FCTmR2d0FaSjBxQUhEWHF3QmpmUGdBZXJCWEFCY1Y1d0RBU1ZZQU85YlpBS2VFT0FBa0k4c0Exb3AzQUZwVUl3QUFIN2tBOFFvYkFCbk8zd0NmTWY4QVpoNXFBSmxYWVFDcyswY0Fmbi9ZQUNKbHR3QXk2SWtBNXI5Z0FPL0V6UUJzTmdrQVhUL1VBQmJlMXdCWU85NEEzcHVTQU5JaUtBQW9odWdBNGxoTkFNYktNZ0FJNHhZQTRIM0xBQmZBVUFEekhhY0FHT0JiQUM0VE5BQ0RFbUlBZzBnQkFQV09Xd0N0c0g4QUh1bnlBRWhLUXdBUVo5TUFxdDNZQUs1ZlFnQnFZYzRBQ2lpa0FOT1p0QUFHcHZJQVhIZC9BS1BDZ3dCaFBJZ0Fpbk40QUsrTVdnQnYxNzBBTGFaakFQUy95d0NOZ2U4QUpzRm5BRlhLUlFESzJUWUFLS2pTQU1KaGpRQVN5WGNBQkNZVUFCSkdtd0RFV2NRQXlNVkVBRTJ5a1FBQUYvTUExRU90QUNsSjVRRDkxUkFBQUw3OEFCNlV6QUJ3enU0QUV6NzFBT3p4Z0FDejU4TUF4L2dvQUpNRmxBREJjVDRBTGdtekFBdEY4d0NJRXB3QXF5QjdBQzYxbndCSGtzSUFlekl2QUF4VmJRQnlwNUFBYStjZkFESExsZ0I1RmtvQVFYbmlBUFRmaVFEb2xKY0E0dWFFQUpreGx3Q0k3V3NBWDE4MkFMdjlEZ0JJbXJRQVo2UnNBSEZ5UWdDTlhUSUFueFc0QUx6bENRQ05NU1VBOTNRNUFEQUZIQUFOREFFQVN3aG9BQ3p1V0FCSHFwQUFkT2NDQUwzV0pBRDNmYVlBYmtoeUFKOFc3d0NPbEtZQXRKSDJBTkZUVVFEUEN2SUFJSmd6QVBWTGZnQ3lZMmdBM1Q1ZkFFQmRBd0NGaVg4QVZWSXBBRGRrd0FCdDJCQUFNa2d5QUZ0TWRRQk9jZFFBUlZSdUFBc0p3UUFxOVdrQUZHYlZBQ2NIblFCZEJGQUF0RHZiQU9wMnhRQ0grUmNBU1d0OUFCMG51Z0NXYVNrQXhzeXNBSzBVVkFDUTRtb0FpTm1KQUN4eVVBQUVwTDRBZHdlVUFQTXdjQUFBL0NjQTZuR29BR2JDU1FCazREMEFsOTJEQUtNL2x3QkRsUDBBRFlhTUFERkIzZ0NTT1owQTNYQ01BQmUzNXdBSTN6c0FGVGNyQUZ5QW9BQmFnSk1BRUJHU0FBL28yQUJzZ0s4QTIvOUxBRGlRRHdCWkdIWUFZcVVWQUdITHV3REhpYmtBRUVDOUFOTHlCQUJKZFNjQTY3YjJBTnNpdXdBS0ZLb0FpU1l2QUdTRGRnQUpPek1BRHBRYUFGRTZxZ0FkbzhJQXIrMnVBRndtRWdCdHdrMEFMWHFjQU1CV2x3QURQNE1BQ2ZEMkFDdEFqQUJ0TVprQU9iUUhBQXdnRlFEWXcxc0E5WkxFQU1hdFN3Qk95cVVBcHpmTkFPYXBOZ0Nya3BRQTNVSm9BQmxqM2dCMmpPOEFhSXRTQVB6Yk53Q3VvYXNBM3hVeEFBQ3VvUUFNKzlvQVpFMW1BTzBGdHdBcFpUQUFWMWEvQUVmL09nQnErYmtBZGI3ekFDaVQzd0NyZ0RBQVpvejJBQVRMRlFENklnWUEyZVFkQUQyenBBQlhHNDhBTnMwSkFFNUM2UUFUdnFRQU15TzFBUENxR2dCUFphZ0Ewc0dsQUFzL0R3QmJlTTBBSS9sMkFIdUxCQUNKRjNJQXhxWlRBRzl1NGdEdjZ3QUFtMHBZQU1UYXR3Q3Facm9BZHMvUEFORUNIUUN4OFMwQWpKbkJBTU90ZHdDR1NOb0E5MTJnQU1hQTlBQ3M4QzhBM2V5YUFEOWN2QURRM20wQWtNY2ZBQ3JidGdDakpUb0FBSythQUsxVGt3QzJWd1FBS1MyMEFFdUFmZ0RhQjZjQWRxb09BSHRab1FBV0Vpb0EzTGN0QVBybC9RQ0oyLzRBaWI3OUFPUjJiQUFHcWZ3QVBvQndBSVZ1RlFEOWgvOEFLRDRIQUdGbk13QXFHSVlBVGIzcUFMUG5yd0NQYlc0QWxXYzVBREcvV3dDRTEwZ0FNTjhXQU1jdFF3QWxZVFVBeVhET0FEREx1QUMvYlAwQXBBQ2lBQVZzNUFCYTNhQUFJVzlIQUdJUzBnQzVYSVFBY0dGSkFHdFc0QUNaVWdFQVVGVTNBQjdWdHdBejhjUUFFMjVmQUYwdzVBQ0ZMcWtBSGJMREFLRXlOZ0FJdDZRQTZySFVBQmIzSVFDUGFlUUFKLzkzQUF3RGdBQ05RQzBBVDgyZ0FDQ2xtUUN6b3RNQUwxMEtBTFQ1UWdBUjJzc0FmYjdRQUp2YndRQ3JGNzBBeXFLQkFBaHFYQUF1VlJjQUp3QlZBSDhVOEFEaEI0WUFGQXRrQUpaQmpRQ0h2dDRBMnYwcUFHc2x0Z0I3aVRRQUJmUCtBTG0vbmdCb2FrOEFTaXFvQUUvRVdnQXQrTHdBMTFxWUFQVEhsUUFOVFkwQUlEcW1BS1JYWHdBVVA3RUFnRGlWQU13Z0FRQngzWVlBeWQ2MkFMOWc5UUJOWlJFQUFRZHJBSXl3ckFDeXdOQUFVVlZJQUI3N0RnQ1Zjc01Bb3dZN0FNQkFOUUFHM0hzQTRFWE1BRTRwK2dEV3lzZ0E2UE5CQUh4azNnQ2JaTmdBMmI0eEFLU1h3d0IzV05RQWFlUEZBUERhRXdDNk9qd0FSaGhHQUZWMVh3RFN2ZlVBYnBMR0FLd3VYUUFPUk8wQUhENUNBR0hFaHdBcC9la0E1OWJ6QUNKOHlnQnZrVFVBQ09ERkFQL1hqUUJ1YXVJQXNQM0dBSk1Jd1FCOFhYUUFhNjJ5QU0xdW5RQStjbnNBeGhGcUFQZlBxUUFwYzk4QXRjbTZBTGNBVVFEaXNnMEFkTG9rQU9WOVlBQjAySW9BRFJVc0FJRVlEQUIrWnBRQUFTa1dBSjk2ZGdEOS9iNEFWa1h2QU5sK05nRHMyUk1BaTdxNUFNU1gvQUF4cUNjQThXN0RBSlRGTmdEWXFGWUF0S2kxQU0vTURnQVNpUzBBYjFjMEFDeFdpUUNaenVNQTFpQzVBR3RlcWdBK0twd0FFVi9NQVAwTFNnRGg5UHNBamp0dEFPS0dMQURwMUlRQS9MU3BBTy91MFFBdU5ja0FMemxoQURnaFJBQWIyY2dBZ2Z3S0FQdEthZ0F2SE5nQVU3U0VBRTZaakFCVUlzd0FLbFhjQU1ERzFnQUxHWllBR25DNEFHbVZaQUFtV21BQVAxTHVBSDhSRHdEMHRSRUEvTXYxQURTOExRQTB2TzRBNkYzTUFOMWVZQUJuanBzQWtqUHZBTWtYdUFCaFdKc0E0VmU4QUZHRHhnRFlQaEFBM1hGSUFDMGMzUUN2R0tFQUlTeEdBRm56MXdEWmVwZ0FubFRBQUUrRytnQldCdndBNVhtdUFJa2lOZ0E0clNJQVo1UGNBRlhvcWdDQ0pqZ0F5dWViQUZFTnBBQ1pNN0VBcWRjT0FHa0ZTQUJsc3ZBQWY0aW5BSWhNbHdENTBUWUFJWkt6QUh1Q1NnQ1l6eUVBUUovY0FOeEhWUURoZERvQVordENBUDZkM3dCZTFGOEFlMmVrQUxxc2VnQlY5cUlBSzRnakFFRzZWUUJaYmdnQUlTcUdBRGxIZ3dDSjQrWUE1WjdVQUVuN1FBRC9WdWtBSEEvS0FNVlppZ0NVK2lzQTA4SEZBQS9GendEYldxNEFSOFdHQUlWRFlnQWhoanNBTEhtVUFCQmhod0FxVEhzQWdDd2FBRU8vRWdDSUpwQUFlRHlKQUtqRTVBRGwyM3NBeERyQ0FDYjA2Z0QzWjRvQURaSy9BR1dqS3dBOWs3RUF2WHdMQUtSUjNBQW4zV01BYWVIZEFKcVVHUUNvS1pVQWFNNG9BQW50dEFCRW55QUFUcGpLQUhDQ1l3QitmQ01BRDdreUFLZjFqZ0FVVnVjQUlmRUlBTFdkS2dCdmZrMEFwUmxSQUxYNXF3Q0MzOVlBbHQxaEFCWTJBZ0RFT3A4QWc2S2hBSEx0YlFBNWpYb0FncmlwQUdzeVhBQkdKMXNBQURUdEFOSUFkd0Q4OUZVQUFWbE5BT0J4Z0FCQjAvZ05DLzREUVBzaCtUOEFBQUFBTFVSMFBnQUFBSUNZUnZnOEFBQUFZRkhNZURzQUFBQ0FneHZ3T1FBQUFFQWdKWG80QUFBQWdDS0M0ellBQUFBQUhmTnBOYjd6K0huc1lmWS9HVENXVzhiKzNyODlpSzlLN1hIMVA2VDgxREpvQzl1L3NCRHc4RG1WOUQ5N3R4OEtpMEhYdjRVRHVMQ1Z5Zk0vZTg5dEd1bWQwNytsWklnTUdRM3pQekcyOHZPYkhkQy9vSTRMZXlKZThqL3dlanNiSFh6SnZ6ODBHa3BLdS9FL256eXZrK1A1d3IrNjVZcndXQ1B4UDF5TmVML0xZTG0vcHdDWlFUK1Y4RC9PWDBlMm5XK3F2d0FBQUFBQUFQQS9BQUFBQUFBQUFBQ3NSNXI5akdEdVB6MzFKSi9LT0xNL29Hb0NIN09rN0QrNmtUaFVxWGJFUCtiOGFsYzJJT3MvMHVURVNndUV6ajh0cXFGajBjTHBQeHhseHZCRkJ0US83VUY0QSthRzZELzRueHNzbkk3WVAySklVL1hjWitjL3pIdXhUcVRnM0Q4TGJrbkpGbmJTUDNyR2RhQnBHZGUvM2JxbmJBckgzai9JOXI1SVJ4WG52eXU0S21WSEZmYy9BQUFBQUFBQUFBRFJkSjRBVjUyOUtvQndVZy8vL3o0bkNnQUFBR1FBQUFEb0F3QUFFQ2NBQUtDR0FRQkFRZzhBZ0phWUFBRGg5UVVZQUFBQU5RQUFBSEVBQUFCci8vLy96dnYvLzVLLy8vOEFBQUFBQUFBQUFCa0FDZ0FaR1JrQUFBQUFCUUFBQUFBQUFBa0FBQUFBQ3dBQUFBQUFBQUFBR1FBUkNoa1pHUU1LQndBQkFBa0xHQUFBQ1FZTEFBQUxBQVlaQUFBQUdSa1pBRUhoL0EwTElRNEFBQUFBQUFBQUFCa0FDZzBaR1JrQURRQUFBZ0FKRGdBQUFBa0FEZ0FBRGdCQm0vME5Dd0VNQUVHbi9RMExGUk1BQUFBQUV3QUFBQUFKREFBQUFBQUFEQUFBREFCQjFmME5Dd0VRQUVIaC9RMExGUThBQUFBRUR3QUFBQUFKRUFBQUFBQUFFQUFBRUFCQmovNE5Dd0VTQUVHYi9nMExIaEVBQUFBQUVRQUFBQUFKRWdBQUFBQUFFZ0FBRWdBQUdnQUFBQm9hR2dCQjB2NE5DdzRhQUFBQUdob2FBQUFBQUFBQUNRQkJnLzhOQ3dFVUFFR1AvdzBMRlJjQUFBQUFGd0FBQUFBSkZBQUFBQUFBRkFBQUZBQkJ2ZjhOQ3dFV0FFSEovdzBMMnhZVkFBQUFBQlVBQUFBQUNSWUFBQUFBQUJZQUFCWUFBREF4TWpNME5UWTNPRGxCUWtORVJVWUFBQUFBQWdBQUFBTUFBQUFGQUFBQUJ3QUFBQXNBQUFBTkFBQUFFUUFBQUJNQUFBQVhBQUFBSFFBQUFCOEFBQUFsQUFBQUtRQUFBQ3NBQUFBdkFBQUFOUUFBQURzQUFBQTlBQUFBUXdBQUFFY0FBQUJKQUFBQVR3QUFBRk1BQUFCWkFBQUFZUUFBQUdVQUFBQm5BQUFBYXdBQUFHMEFBQUJ4QUFBQWZ3QUFBSU1BQUFDSkFBQUFpd0FBQUpVQUFBQ1hBQUFBblFBQUFLTUFBQUNuQUFBQXJRQUFBTE1BQUFDMUFBQUF2d0FBQU1FQUFBREZBQUFBeHdBQUFOTUFBQUFCQUFBQUN3QUFBQTBBQUFBUkFBQUFFd0FBQUJjQUFBQWRBQUFBSHdBQUFDVUFBQUFwQUFBQUt3QUFBQzhBQUFBMUFBQUFPd0FBQUQwQUFBQkRBQUFBUndBQUFFa0FBQUJQQUFBQVV3QUFBRmtBQUFCaEFBQUFaUUFBQUdjQUFBQnJBQUFBYlFBQUFIRUFBQUI1QUFBQWZ3QUFBSU1BQUFDSkFBQUFpd0FBQUk4QUFBQ1ZBQUFBbHdBQUFKMEFBQUNqQUFBQXB3QUFBS2tBQUFDdEFBQUFzd0FBQUxVQUFBQzdBQUFBdndBQUFNRUFBQURGQUFBQXh3QUFBTkVBQUFBQUFBQUFZSWNEQU84TEFBRHdDd0FBOFFzQUFQSUxBQUR6Q3dBQTlBc0FBUFVMQUFEMkN3QUE5d3NBQVBnTEFBRDVDd0FBK2dzQUFQc0xBQUQ4Q3dBQWdJY0RBSlNIQXdCY2lBTUFjSWdEQUF3QUFBQUFBQUFBMUlNREFQMExBQUQrQ3dBQUJBQUFBUGovLy8vVWd3TUEvd3NBQUFBTUFBRDAvLy8vOVAvLy85U0RBd0FCREFBQUFnd0FBTXlCQXdCZ2d3TUFkSU1EQUlpREF3Q2Nnd01BOUlFREFPQ0JBd0FBQUFBQTZJZ0RBQU1NQUFBRURBQUFCUXdBQUFZTUFBQUhEQUFBQ0F3QUFBa01BQUFLREFBQUN3d0FBQXdNQUFBTkRBQUFEZ3dBQUE4TUFBQVFEQUFBQUFBQUFQQ0VBd0FSREFBQUVnd0FBUEVMQUFEeUN3QUFFd3dBQUJRTUFBRDFDd0FBOWdzQUFQY0xBQUFWREFBQStRc0FBQllNQUFEN0N3QUFGd3dBQUU1VGRETmZYekk1WW1GemFXTmZhVzl6U1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZBRTVUZEROZlh6SXhOV0poYzJsalgzTjBjbVZoYldKMVprbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFCT1UzUXpYMTh5TVROaVlYTnBZMTlwYzNSeVpXRnRTV05PVTE4eE1XTm9ZWEpmZEhKaGFYUnpTV05GUlVWRkFFNVRkRE5mWHpJeE0ySmhjMmxqWDI5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBQUFBREFBQUFBQUFBQUNjaHdNQUdBd0FBQmtNQUFEMC8vLy85UC8vLzV5SEF3QWFEQUFBR3d3QUFBUUFBQUFBQUFBQWVJZ0RBQndNQUFBZERBQUEvUC8vLy96Ly8vOTRpQU1BSGd3QUFCOE1BQUJPVTNRelgxOHlNVFJpWVhOcFkxOXBiM04wY21WaGJVbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFCWThnTUFwSU1EQUFNQUFBQUNBQUFBbkljREFBSUFBQUI0aUFNQUFnZ0FBRTVUZEROZlh6STVZbUZ6YVdOZmFXOXpTWGRPVTE4eE1XTm9ZWEpmZEhKaGFYUnpTWGRGUlVWRkFFNVRkRE5mWHpJeE5XSmhjMmxqWDNOMGNtVmhiV0oxWmtsM1RsTmZNVEZqYUdGeVgzUnlZV2wwYzBsM1JVVkZSUUJPVTNRelgxOHlNVE5pWVhOcFkxOXBjM1J5WldGdFNYZE9VMTh4TVdOb1lYSmZkSEpoYVhSelNYZEZSVVZGQUU1VGRETmZYekl4TTJKaGMybGpYMjl6ZEhKbFlXMUpkMDVUWHpFeFkyaGhjbDkwY21GcGRITkpkMFZGUlVVQVRsTjBNMTlmTWpFMVltRnphV05mYzNSeWFXNW5ZblZtU1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVNVRYemxoYkd4dlkyRjBiM0pKWTBWRlJVVUFBTkR6QXdDdGhBTUFZSWNEQUVBQUFBQUFBQUFBTklZREFDQU1BQUFoREFBQU9BQUFBUGovLy84MGhnTUFJZ3dBQUNNTUFBREEvLy8vd1AvLy96U0dBd0FrREFBQUpRd0FBQWlGQXdCc2hRTUFxSVVEQUx5RkF3RFFoUU1BNUlVREFKU0ZBd0NBaFFNQU1JVURBQnlGQXdCQUFBQUFBQUFBQU5TREF3RDlDd0FBL2dzQUFEZ0FBQUQ0Ly8vLzFJTURBUDhMQUFBQURBQUF3UC8vLzhELy8vL1Vnd01BQVF3QUFBSU1BQUJBQUFBQUFBQUFBSnlIQXdBWURBQUFHUXdBQU1ELy8vL0EvLy8vbkljREFCb01BQUFiREFBQU9BQUFBQUFBQUFCNGlBTUFIQXdBQUIwTUFBREkvLy8veVAvLy8zaUlBd0FlREFBQUh3d0FBRTVUZEROZlh6SXhPR0poYzJsalgzTjBjbWx1WjNOMGNtVmhiVWxqVGxOZk1URmphR0Z5WDNSeVlXbDBjMGxqUlVWT1UxODVZV3hzYjJOaGRHOXlTV05GUlVWRkFBQUFBTkR6QXdEc2hRTUExSU1EQURnQUFBQUFBQUFBNklZREFDWU1BQUFuREFBQXlQLy8vOGovLy8vb2hnTUFLQXdBQUNrTUFBQk1oZ01BaElZREFKaUdBd0JnaGdNQU9BQUFBQUFBQUFCNGlBTUFIQXdBQUIwTUFBREkvLy8veVAvLy8zaUlBd0FlREFBQUh3d0FBRTVUZEROZlh6SXhPV0poYzJsalgyOXpkSEpwYm1kemRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlRsTmZPV0ZzYkc5allYUnZja2xqUlVWRlJRQUFBTkR6QXdDZ2hnTUFlSWdEQUU1VGRETmZYekk0YVc5elgySmhjMlZGQUFBQUFBQUFBR2lIQXdEdkN3QUFMUXdBQUM0TUFBRHlDd0FBOHdzQUFQUUxBQUQxQ3dBQTlnc0FBUGNMQUFBdkRBQUFNQXdBQURFTUFBRDdDd0FBL0FzQUFFNVRkRE5mWHpJeE1GOWZjM1JrYVc1aWRXWkpZMFZGQUpEekF3RENnZ01BMFBNREFFaUhBd0JnaHdNQUNBQUFBQUFBQUFDY2h3TUFHQXdBQUJrTUFBRDQvLy8vK1AvLy81eUhBd0FhREFBQUd3d0FBRmp5QXdEemdnTUFBQUFBQUFFQUFBREVod01BQS9ULy93QUFBQURFaHdNQU1nd0FBRE1NQUFEUTh3TUFtSUlEQU9DSEF3QUFBQUFBNEljREFEUU1BQUExREFBQWtQTURBUFNHQXdBQUFBQUFSSWdEQU84TEFBQTJEQUFBTnd3QUFQSUxBQUR6Q3dBQTlBc0FBRGdNQUFEMkN3QUE5d3NBQVBnTEFBRDVDd0FBK2dzQUFEa01BQUE2REFBQVRsTjBNMTlmTWpFeFgxOXpkR1J2ZFhSaWRXWkpZMFZGQUFBQUFORHpBd0FvaUFNQVlJY0RBQVFBQUFBQUFBQUFlSWdEQUJ3TUFBQWREQUFBL1AvLy8vei8vLzk0aUFNQUhnd0FBQjhNQUFCWThnTUFJb01EQUFBQUFBQUJBQUFBeEljREFBUDAvLzhBQUFBQThJZ0RBQU1NQUFBN0RBQUFQQXdBQUFZTUFBQUhEQUFBQ0F3QUFBa01BQUFLREFBQUN3d0FBRDBNQUFBK0RBQUFQd3dBQUE4TUFBQVFEQUFBVGxOME0xOWZNakV3WDE5emRHUnBibUoxWmtsM1JVVUFrUE1EQUI2RUF3RFE4d01BMElnREFPaUlBd0FJQUFBQUFBQUFBQ1NKQXdCQURBQUFRUXdBQVBqLy8vLzQvLy8vSklrREFFSU1BQUJEREFBQVdQSURBRStFQXdBQUFBQUFBUUFBQUV5SkF3QUQ5UC8vQUFBQUFFeUpBd0JFREFBQVJRd0FBTkR6QXdEMGd3TUE0SWNEQUFBQUFBQzBpUU1BQXd3QUFFWU1BQUJIREFBQUJnd0FBQWNNQUFBSURBQUFTQXdBQUFvTUFBQUxEQUFBREF3QUFBME1BQUFPREFBQVNRd0FBRW9NQUFCT1UzUXpYMTh5TVRGZlgzTjBaRzkxZEdKMVprbDNSVVVBQUFBQTBQTURBSmlKQXdEb2lBTUFCQUFBQUFBQUFBRG9pUU1BU3d3QUFFd01BQUQ4Ly8vLy9QLy8vK2lKQXdCTkRBQUFUZ3dBQUZqeUF3QitoQU1BQUFBQUFBRUFBQUJNaVFNQUEvVC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84QUFRSURCQVVHQndnSi8vLy8vLy8vL3dvTERBME9EeEFSRWhNVUZSWVhHQmthR3h3ZEhoOGdJU0lqLy8vLy8vLy9DZ3NNRFE0UEVCRVNFeFFWRmhjWUdSb2JIQjBlSHlBaElpUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FBRUNCQWNEQmdVQUFBQUFBQUFBM2hJRWxRQUFBQUQvLy8vLy8vLy8vLy8vLy84QVFiQ1dEZ3RYVEVOZlExUlpVRVVBQUFBQVRFTmZUbFZOUlZKSlF3QUFURU5mVkVsTlJRQUFBQUFBVEVOZlEwOU1URUZVUlFBQVRFTmZUVTlPUlZSQlVsa0FURU5mVFVWVFUwRkhSVk1BRUlzREFCUUFBQUJETGxWVVJpMDRBRUdrbXc0TCtRTUJBQUFBQWdBQUFBTUFBQUFFQUFBQUJRQUFBQVlBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBRkFBQUFCVUFBQUFXQUFBQUZ3QUFBQmdBQUFBWkFBQUFHZ0FBQUJzQUFBQWNBQUFBSFFBQUFCNEFBQUFmQUFBQUlBQUFBQ0VBQUFBaUFBQUFJd0FBQUNRQUFBQWxBQUFBSmdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFMQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBWVFBQUFHSUFBQUJqQUFBQVpBQUFBR1VBQUFCbUFBQUFad0FBQUdnQUFBQnBBQUFBYWdBQUFHc0FBQUJzQUFBQWJRQUFBRzRBQUFCdkFBQUFjQUFBQUhFQUFBQnlBQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSGNBQUFCNEFBQUFlUUFBQUhvQUFBQmJBQUFBWEFBQUFGMEFBQUJlQUFBQVh3QUFBR0FBQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQUJuQUFBQWFBQUFBR2tBQUFCcUFBQUFhd0FBQUd3QUFBQnRBQUFBYmdBQUFHOEFBQUJ3QUFBQWNRQUFBSElBQUFCekFBQUFkQUFBQUhVQUFBQjJBQUFBZHdBQUFIZ0FBQUI1QUFBQWVnQUFBSHNBQUFCOEFBQUFmUUFBQUg0QUFBQi9BRUdrcHc0TCtRTUJBQUFBQWdBQUFBTUFBQUFFQUFBQUJRQUFBQVlBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBRkFBQUFCVUFBQUFXQUFBQUZ3QUFBQmdBQUFBWkFBQUFHZ0FBQUJzQUFBQWNBQUFBSFFBQUFCNEFBQUFmQUFBQUlBQUFBQ0VBQUFBaUFBQUFJd0FBQUNRQUFBQWxBQUFBSmdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFMQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBUVFBQUFFSUFBQUJEQUFBQVJBQUFBRVVBQUFCR0FBQUFSd0FBQUVnQUFBQkpBQUFBU2dBQUFFc0FBQUJNQUFBQVRRQUFBRTRBQUFCUEFBQUFVQUFBQUZFQUFBQlNBQUFBVXdBQUFGUUFBQUJWQUFBQVZnQUFBRmNBQUFCWUFBQUFXUUFBQUZvQUFBQmJBQUFBWEFBQUFGMEFBQUJlQUFBQVh3QUFBR0FBQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIQUFBQVNBQUFBRWtBQUFCS0FBQUFTd0FBQUV3QUFBQk5BQUFBVGdBQUFFOEFBQUJRQUFBQVVRQUFBRklBQUFCVEFBQUFWQUFBQUZVQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnQUFBSHNBQUFCOEFBQUFmUUFBQUg0QUFBQi9BRUdncnc0TFlTQUFBQUFKQUFBQUNnQUFBQTBBQUFBTEFBQUFEQUFBQUlVQUFBQUFJQUFBQVNBQUFBSWdBQUFESUFBQUJDQUFBQVVnQUFBR0lBQUFDQ0FBQUFrZ0FBQUtJQUFBS0NBQUFDa2dBQUJmSUFBQUFEQUFBQUFBQUFBQUNBQUFWZ0VBQURrQVFaU3dEZ3ZNRGdFZ0FBQUE0UC8vQUw4ZEFBRG5BZ0FBZVFBQUFpUUFBQUVCQUFBQS8vLy9BQUFBQUFFQ0FBQUEvdi8vQVRuLy93QVkvLzhCaC8vL0FOVCsvd0REQUFBQjBnQUFBYzRBQUFITkFBQUJUd0FBQWNvQUFBSExBQUFCendBQUFHRUFBQUhUQUFBQjBRQUFBS01BQUFIVkFBQUFnZ0FBQWRZQUFBSGFBQUFCMlFBQUFkc0FBQUE0QUFBREFBQUFBTEgvL3dHZi8vOEJ5UC8vQWlna0FBQUFBQUFCQVFBQUFQLy8vd0F6Ly84QUp2Ly9BWDcvL3dFcktnQUJYZi8vQVNncUFBQS9LZ0FCUGYvL0FVVUFBQUZIQUFBQUh5b0FBQndxQUFBZUtnQUFMdi8vQURMLy93QTIvLzhBTmYvL0FFK2xBQUJMcFFBQU1mLy9BQ2lsQUFCRXBRQUFMLy8vQUMzLy93RDNLUUFBUWFVQUFQMHBBQUFyLy84QUt2Ly9BT2NwQUFCRHBRQUFLcVVBQUx2Ly93QW4vLzhBdWYvL0FDWC8vd0FWcFFBQUVxVUFBaVJNQUFBQUFBQUJJQUFBQU9ELy93RUJBQUFBLy8vL0FGUUFBQUYwQUFBQkpnQUFBU1VBQUFGQUFBQUJQd0FBQU5yLy93RGIvLzhBNGYvL0FNRC8vd0RCLy84QkNBQUFBTUwvL3dESC8vOEEwZi8vQU1yLy93RDQvLzhBcXYvL0FMRC8vd0FIQUFBQWpQLy9BY1QvL3dDZy8vOEIrZi8vQWhwd0FBRUJBQUFBLy8vL0FTQUFBQURnLy84QlVBQUFBUThBQUFEeC8vOEFBQUFBQVRBQUFBRFEvLzhCQVFBQUFQLy8vd0FBQUFBQXdBc0FBV0FjQUFBQUFBQUIwSmNBQVFnQUFBRDQvLzhDQllvQUFBQUFBQUZBOVA4QW51Zi9BTUtKQUFEYjUvOEFrdWYvQUpQbi93Q2M1LzhBbmVmL0FLVG4vd0FBQUFBQU9Jb0FBQVNLQUFEbURnQUJBUUFBQVAvLy93QUFBQUFBeGYvL0FVSGkvd0lkandBQUNBQUFBZmovL3dBQUFBQUFWZ0FBQWFyLy93QktBQUFBWkFBQUFJQUFBQUJ3QUFBQWZnQUFBQWtBQUFHMi8vOEI5Ly8vQU52ai93R2MvLzhCa1AvL0FZRC8vd0dDLy84Q0Jhd0FBQUFBQUFFUUFBQUE4UC8vQVJ3QUFBRUJBQUFCbytML0FVSGYvd0c2My84QTVQLy9BZ3V4QUFFQkFBQUEvLy8vQVRBQUFBRFEvLzhBQUFBQUFRblcvd0VhOGY4QkdkYi9BTlhWL3dEWTFmOEI1TlgvQVFQVy93SGgxZjhCNHRYL0FjSFYvd0FBQUFBQW9PUC9BQUFBQUFFQkFBQUEvLy8vQWd5OEFBQUFBQUFCQVFBQUFQLy8vd0c4V3Y4Qm9BTUFBZngxL3dIWVd2OEFNQUFBQWJGYS93RzFXdjhCdjFyL0FlNWEvd0hXV3Y4QjYxci9BZEQvL3dHOVd2OEJ5SFgvQUFBQUFBQXdhUDhBWVB6L0FBQUFBQUVnQUFBQTRQLy9BQUFBQUFFb0FBQUEyUC8vQUFBQUFBRkFBQUFBd1AvL0FBQUFBQUVnQUFBQTRQLy9BQUFBQUFFZ0FBQUE0UC8vQUFBQUFBRWlBQUFBM3YvL01Bd3hEWGdPZncrQUVJRVJoaEtKRTRvVGpoU1BGWkFXa3hPVUY1VVlsaG1YR3BvYm5CbWRISjRkbng2bUg2a2ZyaCt4SUxJZ3R5Ry9Jc1VqeUNQTEk5MGs4aVAySmZjbUlDMDZMajB2UGpBL01VQXhRekpFTTBVMFVEVlJObEkzVXpoVU9WazZXenRjUEdFOVl6NWxQMlpBYUVGcFFtcEFhME5zUkc5Q2NVVnlSblZIZlVpQ1NZZEtpVXVLVEl0TWpFMlNUcDFQbmxCRlYzc2RmQjE5SFg5WWhsbUlXb2xhaWxxTVc0NWNqMXlzWGExZXJsNnZYc0pmekdETlljNWh6MkxRWTlGazFXWFdadGRuOEdqeGFmSnE4MnYwYlBWdCtXNzlMZjR0L3kxUWFWRnBVbWxUYVZScFZXbFdhVmRwV0dsWmFWcHBXMmxjYVYxcFhtbGZhWUlBZ3dDRUFJVUFoZ0NIQUlnQWlRREFkYzkyZ0ltQmlvS0xoWXlHalhDZGNaMTJubmVlZUo5NW4zcWdlNkI4b1gyaHM2SzZvN3VqdktTK3BjT2l6S1RhcHR1bTVXcnFwK3VuN0c3em92aW8rYWo2cWZ1cC9LUW1zQ3F4SzdKT3M0UUlZcnBqdTJTOFpiMW12bTIvYnNCdndYRENmc04vdzMzUGpkQ1UwYXZTck5PdDFMRFZzZGF5MThUWXhkbkcyZ2NJQ1FvTERBWUdCZ1lHQmdZR0JnWU5CZ1lPQmdZR0JnWUdCZ1lQRUJFU0JoTUdCZ1lHQmdZR0JnWUdGQlVHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZV0Z3WUdCaGdHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmhrR0JnWUdHZ1lHQmdZR0JnWWJCZ1lHQmdZR0JnWUdCZ1ljQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JoMEdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmg0R0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdBRUhQdnc0TEZDUXJLeXNyS3lzckt3RUFWRlpXVmxaV1ZsWldBRUgydnc0TG53TVlBQUFBS3lzckt5c3JLd2NySzF0V1ZsWldWbFpXU2xaV0JURlFNVkF4VURGUU1WQXhVREZRTVZBa1VIa3hVREZRTVRoUU1WQXhVREZRTVZBeFVERlFNVkJPTVFKT0RRMU9BMDRBSkc0QVRqRW1ibEZPSkZCT09SU0JHeDBkVXpGUU1WQU5NVkF4VURGUUcxTWtVREVDWEh0Y2UxeDdYSHRjZXhSNVhIdGNlMXd0SzBrRFNBTjRYSHNVQUpZS0FTc29CZ1lBS2dZcUtpc0h1N1VySGdBckJ5c3JLd0VyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt3RXJLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lvckt5c3JLeXNyS3lzckt5c3J6VWJOS3dBbEt3Y0JCZ0ZWVmxaV1ZsWlZWbFlDSklHQmdZR0JGWUdCZ1FBQUt3Q3kwYkxSc3RHeTBRQUF6Y3dCQU5mWDE5ZlhnNEdCZ1lHQmdZR0JnWUdzckt5c3JLeXNyS3lzSEFBQUFBQUFNVkF4VURGUU1WQXhVREVDQUFBeFVERlFNVkF4VURGUU1WQXhVREZRTVZCT01WQXhVRTR4VURGUU1WQXhVREZRTVZBeFVERUNoNmFIcG9lbWg2YUhwb2VtaDZhSHBpb3JLeXNyS3lzckt5c3JLeXNBQUFCVVZsWldWbFpXVmxaV1ZsWldBRUh6d3c0TElWUldWbFpXVmxaV1ZsWldWbFlNQUF3cUt5c3JLeXNyS3lzckt5c3JLd2NxQVFCQnljUU9DM2NxS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXRXVm15QkZRQXJLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzSGJBTkJLeXRXVmxaV1ZsWldWbFpXVmxaV1ZpeFdLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyQVFCQjZNVU9Dd2dNYkFBQUFBQUFCZ0JCbHNZT0MrZ0NCaVVHSlFZbEJpVUdKUVlsQmlVR0pRWWxCaVVHSlFZbEJpVUdKUVlsQmlVR0pRWWxCaVVHSlFZbEJpVUdKUVlsQmlWV2VwNG1CaVVHSlFZbEJpVUdKUVlsQmlVR0pRWWxCaVVHSlFZbEJpVUdKUVlsQmdFckswOVdWaXdyZjFaV09Tc3JWVlpXS3l0UFZsWXNLMzlXVm9FM2RWdDdYQ3NyVDFaV0Fxd0VBQUE1S3l0VlZsWXJLMDlXVml3cksxWldNaE9CVndCdmdYN0oxMzR0Z1lFT2ZqbC9iMWNBZ1lGK0ZRQitBeXNyS3lzckt5c3JLeXNyS3djckpDdVhLeXNyS3lzckt5c3JLaXNyS3lzclZsWldWbGFBZ1lHQmdUbTdLaXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzQmdZR0JnWUdCZ1lHQmdZR0JnWUdCeWF5c3JLeXNyS3lzckt5c3JLeXNyTkFOQUU0eEFyVEJ3ZGZYSkZBeFVERlFNVkF4VURGUU1WQXhVREZRTVZBeFVERlFNVkF4VURGUU1WQXhVTmZYVThGSDFOZlgxd1VyS3lzckt5c3JLeXNyS3lzSEFRQUJBRUhaeVE0TEgwNHhVREZRTVZBeFVERlFNVkF4VUEwQUFBQUFBQ1JRTVZBeFVERlFNVkFBUVpyS0RndFdLeXNyS3lzckt5c3JLeXQ1WEh0Y2UwOTdYSHRjZTF4N1hIdGNlMXg3WEh0Y2UxeDdYQzBySzNrVVhIdGNMWGtxWENkY2UxeDdYSHVrQUFxMFhIdGNlMDhES2lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3dFQVFZdkxEZ3NCU0FCQmxjc09DeHNxS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNBUWRITERnc1VLeXNyS3lzckt5c0hBRWhXVmxaV1ZsWldWZ0lBUVp6TURnc2JLeXNyS3lzckt5c3JLeXNySzFWV1ZsWldWbFpXVmxaV1ZsWU9BRUhXekE0TEdpUXJLeXNyS3lzckt5c3JLd2NBVmxaV1ZsWldWbFpXVmxaV0FFR2N6UTRMSnlRckt5c3JLeXNyS3lzckt5c3JLeXNyQndBQUFBQldWbFpXVmxaV1ZsWldWbFpXVmxaV1ZnQkIvYzBPQ3hZcUt5c3JLeXNyS3lzcksxWldWbFpXVmxaV1ZsWU9BRUd6emc0TEZpb3JLeXNyS3lzckt5c3JWbFpXVmxaV1ZsWldWZzRBUWZUT0Rnc1hLeXNyS3lzckt5c3JLeXRWVmxaV1ZsWldWbFpXVmc0QVFkSFBEZ3NGQmlkUmIzY0FRZURQRGdzU2ZBQUFmd0FBQUFBQUFBQUFnNDZTbHdDcUFFSDh6dzRMQXJURUFFSDIwQTRMQnNiSkFBQUEyd0JCejlFT0N3N2VBQUFBQU9FQUFBQUFBQUFBNUFCQjZORU9Dd0huQUVHKzBnNExBZW9BUWJuVERnc0I3UUJCME5NT0M0QUVFaEVURkJVV0Z4Z1pHaHNjSFI0ZklDRVJJaU1rRVNVbUp5Z3BLaXNzRVMwdUx4QVFNQkFRRUJBUUVCQXhNak1RTkRVUUVCRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFMkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUk54RVJFUkU0RVRrNk96dzlQaEVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRS9FQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVVQkJFVUpEUkVWR1IwaEpTaEZMVEUxT1QxQlJFRkpUVkZWV1YxaFpXbHRjWFJCZVgyQVFFUkVSWVdKakVCQVFFQkFRRUJBUUVCRVJFUkZrRUJBUUVCQVFFQkFRRUJBUUVCQVFFUkZsRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFUkZtWnhBUWFHa1JFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVdvUkVXc1FFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFV3h0RUJBUUVCQVFFQkFRYmhBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFiM0J4Y2hBUUVCQVFFQkFRYzNSMUVCQVFFQkIyZHhBUUVCQjRFQkI1RUJBUUVCQVFFQkFRRUJBUUVCQUFRZkRYRGd0ZS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhBQUFBQUFBQUFBUDcvL3dmKy8vOEhBQUFBQUFBRUlBVC8vMy8vLy85Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhQL0F3QWZVQUJCMk5nT0M2MEZJQUFBQUFBQTM3eEExLy8vKy8vLy8vLy8vLy8vLzcvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3dQOC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLysvLy8vZndMLy8vLy8vd0VBQUFBQS83KzJBUC8vLzRjSEFBQUEvd2YvLy8vLy8vLy8vdi9ELy8vLy8vLy8vLy8vLy8vLzd4Lys0ZitmQUFELy8vLy8vLzhBNFAvLy8vLy8vLy8vLy8vLy93TUEvLy8vLy84SE1BVC8vLy84L3g4QUFQLy8vd0gvQndBQUFBQUFBUC8vM3o4QUFQRC8rQVAvLy8vLy8vLy8vLy92LzkvaC84Ly8vdi92bi9uLy8vM0Y0NTlaZ0xEUC93TVE3b2Y1Ly8vOWJjT0hHUUpld1A4L0FPNi8rLy8vL2UzanZ4c0JBTS8vQUI3dW4vbi8vLzN0NDU4WndMRFAvd0lBN01jOTFoakgvOFBISFlFQXdQOEFBTy9mL2YvLy9mL2ozeDFnQjgvL0FBRHYzLzMvLy8zdjQ5OGRZRURQL3dZQTc5LzkvLy8vLytmZlhmQ0F6LzhBL096L2Yvei8vL3N2ZjRCZi84RC9EQUQrLy8vLy8zLy9CejhnL3dNQUFBQUExdmYvLzYvLy96dGZJUC96QUFBQUFBRUFBQUQvQXdBQS8vNy8vLzhmL3Y4RC8vLysvLy8vSHdBQUFBQUFBQUFBLy8vLy8vLy9mL24vQS8vLy8vLy8vLy8vL3ovLy8vLy92eUQvLy8vLy8vZi8vLy8vLy8vLy8vODlmejMvLy8vLy96My8vLy8vUFg4OS8zLy8vLy8vLy8vL1BmLy8vLy8vLy8vL0J3QUFBQUQvL3dBQS8vLy8vLy8vLy8vLy96OC8vdi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9uLy8vL3YvL0IvLy8vLy8vLy8vLy84Zi9BZi9mRHdELy93OEEvLzhQQVAvZkRRRC8vLy8vLy8vUC8vOEJnQkQvQXdBQUFBRC9BLy8vLy8vLy8vLy8vLy8vQWYvLy8vLy9CLy8vLy8vLy8vLy9Qd0QvLy85Ly93Ly9BY0QvLy8vL1B4OEEvLy8vLy84UC8vLy9BLzhEQUFBQUFQLy8vdy8vLy8vLy8vLy9mLzcvSHdEL0EvOERnQUJCa040T0M0QUIvLy8vLy8vLzcvL3ZELzhEQUFBQUFQLy8vLy8vOC8vLy8vLy8vNy8vQXdELy8vLy8vLzkvQVAvai8vLy8vLzgvL3dILy8vLy8vK2NBQUFBQUFONXZCUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUFBQUNBL3g4QS8vOC9QLy8vLy84L1AvK3EvLy8vUC8vLy8vLy8vOTlmM0IvUEQvOGYzQjhBUVo3ZkRnc0dBb0FBQVA4ZkFFR3czdzRMRW9UOEx6NVF2Zi96NEVNQUFQLy8vLy8vQVFCQjV0OE9DMURBLy8vLy8vLy9Bd0FBLy8vLy8vOS8vLy8vLy85Ly8vLy8vLy8vLy8vLy8vLy8vLy8vL3g5NERBRC8vLy8vdnlELy8vLy8vLy8vZ0FBQS8vOS9BSDkvZjM5L2YzOS8vLy8vL3dBQUFBQUFnQUJCME9BT0MxZmdBQUFBL2dNK0gvNy8vLy8vLy8vLy8vOS80UDcvLy8vLy8vLy8vLy8vOStELy8vLy8vLzcvLy8vLy8vLy8vLy8vZndBQS8vLy9Cd0FBQUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3o4QVFiRGhEZ3VBQS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUEvLy8vLy8vLy8vLy8vLy8vLy8vLy8vOGZBQUFBQUFBQUFBRC8vLy8vL3ovL0gvLy8vdzhBQVAvLy8vLy9mL0NQLy8vLy8vLy8vLy8vLy8vLy8vOEFBQUFBZ1AvOC8vLy8vLy8vLy8vLy8vLy8rZi8vLy8vLy8zd0FBQUFBQUlEL3YvLy8vLzhBQUFELy8vLy8vLzhQQVAvLy8vLy8vLy8vTHdEL0F3QUEvT2ovLy8vLy93Zi8vLy8vQndELy8vOGYvLy8vLy8vLzkvOEFnUDhELy8vL2YvLy8vLy8vLzM4QS96Ly9BLy8vZi96Ly8vLy8vLy8vZndVQUFEai8vendBZm41K0FIOS8vLy8vLy8vMy93RC8vLy8vLy8vLy8vLy8vLy8vLy84SC93UC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vdzhBLy85LytQLy8vLy8vRC8vLy8vLy8vLy8vLy8vLy8vOC8vLy8vLy8vLy8vLy8vLy8vL3dNQUFBQUFmd0Q0NFAvOWYxL2IvLy8vLy8vLy8vLy8vLy8vL3dNQUFBRDQvLy8vLy8vLy8vLy8vLy8vUHdBQS8vLy8vLy8vLy8vOC8vLy8vLy8vQUFBQUFBRC9Ed0JCdnVRT0MySGYvLy8vLy8vLy8vLy8vLy8vLy8vLy94OEFBUDhEL3YvL0IvNy8vd2ZBLy8vLy8vLy8vLy8vLzMvOC9Qd2NBQUFBQVAvdi8vOS8vLyszL3ovL1B3QUFBQUQvLy8vLy8vLy8vLy8vLy8vLy8vOEhBQUFBQUFBQUFBRC8vLy8vLy84ZkFFSEE1UTRMWGYvLy94Ly8vLy8vLy84QkFBQUFBQUQvLy8vL0FPRC8vLzhILy8vLy8vOEgvLy8vUC8vLy8vOFAvejRBQUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOC8vd1AvLy8vL0QvLy8vLzhQLy8vLy8vOEEvLy8vLy8vL0R3QkJzT1lPQ3czLy8vLy8vLzkvQVAvL1B3RC9BRUhRNWc0TGN6LzkvLy8vLzcrUi8vOC9BUC8vZndELy8vOS9BQUFBQUFBQUFBRC8vemNBLy84L0FQLy8vd01BQUFBQUFBQUFBUC8vLy8vLy8vL0FBQUFBQUFBQUFBQnY4Ty8rLy84L0FBQUFBQUQvLy84Zi8vLy9Id0FBQUFELy92Ly9Id0FBQVAvLy8vLy8vejhBLy84L0FQLy9Cd0QvL3dNQVFkRG5EZ3NvLy8vLy8vLy8vLy8vQVFBQUFBQUFBUC8vLy8vLy93Y0EvLy8vLy8vL0J3RC8vLy8vL3dEL0F3QkJrT2dPQ3duLy8vOGZnQUQvL3o4QVFhem9EZ3R4Ly85L0FQLy8vLy8vLy8vL1B3QUFBTUQvQUFEOC8vLy8vLy8vQVFBQS8vLy9BZjhELy8vLy8vLy94Lzl3QVAvLy8vOUhBUC8vLy8vLy8vLy9IZ0QvRndBQUFBRC8vL3YvLy8rZlFBQUFBQUFBQUFBQWY3My92LzhCLy8vLy8vLy8vd0gvQSsrZitmLy8vZTNqbnhtQjRBOEFRYkRwRGdzYy8vLy8vLy8vLy8rN0IvK0RBQUFBQVAvLy8vLy8vLy8vc3dEL0F3QkI0T2tPQ3pqLy8vLy8vLzgvZndBQUFEOEFBQUFBLy8vLy8vLy8vMzhSQVA4REFBQUFBUC8vLy8vLy96OEIvd01BQUFBQUFBRC8vLy9uL3dmL0F3QkJzT29PQ3dqLy8vLy8vLy8vQVFCQnhPb09Dd3ovLy8vLy8vLy8vLzhEQUlBQVFlVHFEZ3RELy96Ly8vLy8vL3dhQUFBQS8vLy8vLy8vNTM4QUFQLy8vLy8vLy8vLy95QUFBQUFBLy8vLy8vLy8vd0gvL2YvLy8vOS9md0VBL3dNQUFQei8vLy84Ly8vK2Z3QkJzT3NPQ3haLysvLy8vLzkvdE1zQS93Ty8vZi8vLzM5N0FmOERBRUhzNnc0TEdQLy9md0QvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQXdCQmtPd09DeW4vLy8vLy8vLy8vLy8vLy8vL2Z3QUEvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0R3QkIwT3dPQ3diLy8vLy8vMzhBUWZEc0Rnc0ovLy8vLy8vLy8vOS9BRUdRN1E0TER2Ly8vLy8vLy84Qi8vLy9mLzhEQUVHcTdRNExHUC8vL3o4QUFQLy8vLy8vL3dBQUR3RC9BL2ovLytELy93QkIyTzBPQ3dqLy8vLy8vLy8vL3dCQjhPME9DN1FCLy8vLy8vLy8vLy8vaC8vLy8vLy8vLytBLy84QUFBQUFBQUFBQUFzQUFBRC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQVAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93Y0EvLy8vZndBQUFBQUFBQWNBOEFELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9ELy8vLy8vLy8vLy8vLy8vLy84SC94Ly9BZjlEQUVHdzd3NExoZ0gvLy8vLy8vLy8vLy8vMy8vLy8vLy8vLy8vMzJUZS8rdnYvLy8vLy8vLy83L24zOS8vLy85N1gvejkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84Ly8vLy8vZi8vOS8vLy8vZi8vOS8vLy8vZi8vOS8vLy8vZi8vLy8vMy8vLy85Ly8vM3ovLy8vLy8vLzMvLy8vbmJCd0JCMFBBT0N3ci8vLy8vL3grQVAvOURBRUdJOFE0TE5QLy8vLy8vRC84RC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vSHdBQUFBQUFBQUQvLy8vLy8vLy8vNDhJL3dNQVFkRHhEZ3NZNy8vLy81Yis5d3FFNnBhcWx2ZjNYdi83L3cvdSsvOFBBRUgyOFE0TERQLy8vd1AvLy84RC8vLy9Bd0JCa1BJT0M0QUVFaEFURkJVV0Z4Z1pHaHNjSFI0ZklDRVFFQ0lqRUNRbEppY29LU29yRUN3dExoRVJMeEVSRVJFUkVUQXhNak0wTlRZM0VSQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBNEVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkE1RURvN1BEMCtQeEFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQkFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJCQkVCQkNFRU5FUlJCR1IwZ1FTUkFRU2t0TVRVNFFUMUJSVWxOVVZWWlhXRmxhV3hCY1hWNWZFQkFRRUdBUUVCQVFFQkFRRUJBUUVCQVFFQkJoRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkJpWXhBUVpHVVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRWmhBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJCbmFHbHFFQkJyYkJFUmJSQVFFQkFRRUc1dkVCQVFFQkJ3Y1JBUWNuTjBFSFYyZHhFUkVYaDVlbnQ4RUJBUUVCQUFRYkQyRGdzLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhBQUFBQS92OEEvQUVBQVBnQkFBQjRBQUFBQVAvNzMvc0FBSUFBQUFDQUFFR0k5dzRMR1R3QS9QL2dyLy8vLy8vLy8vLy8vLy9mLy8vLy8vOGdRTEFBUWE3M0Rnc0JRQUJCd1BjT0N3TDhBd0JCMi9jT0N5UDhBQUFBQUFEbS92Ly8vd0JBU1FBQUFBQUFHQUQvL3dEWUFBQUFBQUFBQUFFQVBBQkJpdmdPQ3hBUTRBRWVBR0QvdndBQUFBQUFBUDhIQUVHdCtBNExEL2pQNHdBQUFBTUFJUDkvQUFBQVRnQkJ5dmdPQ3dRSUFBZjhBRUhYK0E0TFNCQUFJQjRBTUFBQkFBQUFBQUFBQUFBUUFDQUFBQUFBL0c4QUFBQUFBQUFBRUFBZ0FBQUFBRUFBQUFBQUFBQUFBQkFBSUFBQUFBQUQ0QUFBQUFBQUFBQVFBQ0FBQUFBQS9RQkJxZmtPQ3lFZ0FBQUFBUDhIRUFBQUFBQUFBQUFBSUFBQUFBQ0EveEFBQUFBQUFBQVFBQ0FBUWRmNURnc0pHQUNnQUg4QUFQOERBRUhwK1E0TEV3UUFBQUFBRUFBQUFBQUFBSUFBZ01EZkFBd0FRWWY2RGdzbEJBQWZBQUFBQUFBQS92Ly8vd0Q4Ly84QUFBQUFBQUFBQVB3QUFBQUFBQURBLzkvL0J3QkJ0dm9PQ3dTQUJnRDhBRUhEK2c0TEFjQUFRYy82RGdzQkNBQkIyL29PQ3duZy8vLy9Id0FBL3dNQVFmRDZEZ3NCQVFCQm5mc09Dd2RnQUFBQkFBQVlBRUd0K3c0TENqZ0FBQUFBRUFBQUFIQUFRY2I3RGdzTU1BQUEvbjh2QUFEL0EvOS9BRUgzK3c0TEFnNHhBRUdML0E0TEhjVC8vLy8vQUFBQXdBQUFBQUFBQUFBQUFRRGdud0FBQUFCL1AvOS9BRUcyL0E0TE9oQUFFQUFBL1AvLy94OEFBQUFBQUF3QUFBQUFBQUJBQUF6d0FBQUFBQUFBZ1BnQUFBQUFBQUFBd0FBQUFBQUFBQUFBL3dELy8vOGhrQU1BUVlqOURnc0kvLy8vLzM4QTRQc0FRYWY5RGd1SkFhQUQ0QURnQU9BQVlJRDQvLy8vL1AvLy8vLy9mOS8vOFgvL2Z3QUEvLy8vL3dBQS8vLy8vd0VBZXdQUXdhOUNBQXdmdlAvL0FBQUFBQUFPLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vZndBQUFQOEhBQUQvLy8vLy8vLy8vLy8vUHdBQUFBQUFBUHovLy8vLy8vLy8vLy8vLy8vLy8vLy96Ly8vL3ovLy8vLy8vLy8vLy8vLy8vLy9BRUhNL2c0TEJPQ0hBLzRBUWQ3K0Rnc0NBWUFBUWZEK0RndEkvLy8vLy85Ly8vLy8vd0FBQUFBQUFQLy8vL3YvLy8vLy8vLy8vLy8vRHdELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3o4QUFBRC9EeDcvLy84Qi9NSGdBRUhEL3c0TEFoNEJBRUhQL3c0TEFRZ0FRZUwvRGdzdS8vOEFBQUFBLy8vLy93OEFBQUQvLy85Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QkJxSUFQQ3dqLy8vLy8vLy8vL3dCQndvQVBDeEQvLy8vLy8vOS9BQUFBQUFBQXdBRGdBRUhkZ0E4TEE0QVBjQUJCN29BUEN3Zi9BUC8vZndBREFFR0JnUThMQVFZQVFaQ0JEd3NQUUFBQUFBQVAvd01BQUFBQUFBRHdBRUdvZ1E4TEZCREFBQUQvL3dNWEFBQUFBQUQ0QUFBQUFBaUFBRUhHZ1E4TEJnZ0EvejhBd0FCQjI0RVBDeFR3QUFDQUF3QUFBQUFBQUFDQUFnQUF3QUFBUXdCQis0RVBDd0VJQUVHTmdnOExCRGdBQUFFQVFjK0NEd3NIZ0FBQUFBQUFBZ0JCNW9JUEN3UDgvd01BUWZlQ0R3c0J3QUJCajRNUEN3OHcvLy8vQS8vLy8vLy8vL2YvZnc4QVFhK0REd3NPZ1A3L0FQd0JBQUQ0QVFBQStEOEFRY3lERHdza2YzOEFNSWYvLy8vLy80Ly9BQUFBQUFBQTRQLy9mLzhQQVFBQUFBQUEvLy8vLy84L0FFR01oQThMQ2YvLy93OEFBQUFBRHdCQm80UVBDd2lBQUFBQUFBQUFBUUJCdllRUEN3R0FBRUhhaEE4TERJRC9BQUNBL3dBQUFBQ0Evd0JCNzRRUEN3bjRBQURBandBQUFJQUFRWWVGRHdzL01QLy8vUC8vLy8vL0FBQUFBQUFBQUlmL0FmOEJBQUFBNEFBQUFPQUFBQUFBQUFFQUFHRDRmd0FBQUFBQUFBQUEvZ0FBQVA4QUFBRC9BQUFBSGdEK0FFSHZoUThMQWZ3QVFmeUZEd3NFLy8vL2Z3QkJrNFlQQ3duZ2Z3QUFBTUQvL3dNQVFiaUdEd3NTd0QvOC96OEFBSUFEQUFBQUFBQUEvZ01nQUVIV2hnOExDUmdBRHdBQUFBQUFPQUJCNklZUEN4RGhQd0RvL3Y4ZkFBQUFBQUFBQUdBL0FFR0ZodzhMQ1FJQUFBQUFBQUFBQmdCQmw0Y1BDd2dZQUNBQUFNQWZId0JCdUljUEN3UkUrQUJvQUVISWh3OExBVXdBUWVlSER3c0VnUC8vL3dCQjk0Y1BDeENBRGdBQUFQOGZBQUFBQUFBQUFBREFBRUdWaUE4TEF3Z0EvQUJCdDRnUEN3RU9BRUhOaUE4TEF2d0hBRUhzaUE4TEFRVUFRZmFJRHdzREdJRC9BRUdEaVE4TEF0OEhBRUdYaVE4TENJQStBQUQ4L3g4REFFRzRpUThMQVRRQVFjS0pEd3NCZ0FCQjdva1BDd0tBQVFCQmlJb1BDd2ovLy8vLy8vOERnQUJCbm9vUEN3RWZBRUcyaWc4TEF2OEJBRUhkaWc4TEFjQUFRZTZLRHdzUFB3QUFBQUFBQUFELy96QUFBUGdEQUVHZ2l3OExCUC8vL3djQVFjeUxEd3NCQkFCQjQ0c1BDd0t3RHdCQjhJc1BDMG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84L0FQLy8vLzkvL3YvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BUUFBLy8vLy8vLy8vLzgvQUVITWpBOExGUC8vRHdELy8vLy8vLy8vLy8vL2Z3RC8vLzhCQUVHSWpROExQZ0lBQUFnQUFBQUlBQUFnQUFBQUlBQUFnQUFBQUlBQUFBQUNBQUFBQWdBQUNBQUFBQUFBQUFELy8vLy8vLy8vLy8vLy8vLy8vLy8vL3c4QStQNy9BRUhXalE4TEJIOEFBSUFBUVkyT0R3c0Q4QUNBQUVHb2pnOExBNEQvZndCQnVJNFBDd1J3QndEQUFFSGVqZzhMQ2Y3Ly8vLy8vLy8vSHdCQjhJNFBDd2orLy8vLy8vLy9Qd0JCcm84UEMwOERBUC8vLy8vL0QvLy8vLy8vLy8vLy8vLy8vdzhBLzMvKy8vNy8vdi8vL3o4QS94Ly8vLy8vQUFBQS9BQUFBQndBQUFEOC8vLy9Id0FBQUFBQUFNRC8vLzhIQVAvLy8vLy9ELzhCQXdBL0FFR1FrQThMVnYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vUHdEL0gvOEgvLy8vLy8vLy8vLy8vLy8vLy84UEFQLy8vLy8vLy8vLy8vLy9BZjhQQUFEL0QvLy8vLy8vLy84QS93UC8vLy8vL3dELy8vOC9BRUh3a0E4TE0vL3YvLy8vLy8vLy8vLy8vLy8vZS96Ly8vLy81OGYvLy8vbi8vLy8vLy8vLy8vLy8vLy8vLy8vL3c4QS96OFBCd2NBUHdCQnNKRVBDNEVDQWdBQXdBTUFBTUFFQUFEQUJRQUF3QVlBQU1BSEFBREFDQUFBd0FrQUFNQUtBQURBQ3dBQXdBd0FBTUFOQUFEQURnQUF3QThBQU1BUUFBREFFUUFBd0JJQUFNQVRBQURBRkFBQXdCVUFBTUFXQUFEQUZ3QUF3QmdBQU1BWkFBREFHZ0FBd0JzQUFNQWNBQURBSFFBQXdCNEFBTUFmQUFEQUFBQUFzd0VBQU1NQ0FBRERBd0FBd3dRQUFNTUZBQUREQmdBQXd3Y0FBTU1JQUFERENRQUF3d29BQU1NTEFBREREQUFBd3cwQUFOTU9BQURERHdBQXd3QUFETHNCQUF6REFnQU13d01BRE1NRUFBemJBQUFBQURBeE1qTTBOVFkzT0RsaFltTmtaV1pCUWtORVJVWjRXQ3N0Y0ZCcFNXNU9BQ1ZKT2lWTk9pVlRJQ1Z3SlVnNkpVMEFRY0NURHd1QkFTVUFBQUJ0QUFBQUx3QUFBQ1VBQUFCa0FBQUFMd0FBQUNVQUFBQjVBQUFBSlFBQUFGa0FBQUF0QUFBQUpRQUFBRzBBQUFBdEFBQUFKUUFBQUdRQUFBQWxBQUFBU1FBQUFEb0FBQUFsQUFBQVRRQUFBRG9BQUFBbEFBQUFVd0FBQUNBQUFBQWxBQUFBY0FBQUFBQUFBQUFsQUFBQVNBQUFBRG9BQUFBbEFBQUFUUUJCMEpRUEM2WUJKUUFBQUVnQUFBQTZBQUFBSlFBQUFFMEFBQUE2QUFBQUpRQUFBRk1BQUFBQUFBQUF6TlFEQUU4TUFBQlFEQUFBVVF3QUFBQUFBQUFVMVFNQVVnd0FBRk1NQUFCUkRBQUFWQXdBQUZVTUFBQldEQUFBQUFBQUFGelZBd0JYREFBQVdBd0FBRkVNQUFCWkRBQUFXZ3dBQUZzTUFBQUFBQUFBZk5VREFGd01BQUJkREFBQVVRd0FBRjRNQUFCZkRBQUFZQXdBQUdFTUFBQmlEQUFBWXd3QUFHUU1BQUJsREFCQmdKWVBDLzBEQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQlFJQUFBVUFBQUFGQUFBQUJRQUFBQVVBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBREFnQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQWdnQUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQVFnRUFBRUlCQUFCQ0FRQUFRZ0VBQUVJQkFBQkNBUUFBUWdFQUFFSUJBQUJDQVFBQVFnRUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUFxQVFBQUtnRUFBQ29CQUFBcUFRQUFLZ0VBQUNvQkFBQXFBQUFBS2dBQUFDb0FBQUFxQUFBQUtnQUFBQ29BQUFBcUFBQUFLZ0FBQUNvQUFBQXFBQUFBS2dBQUFDb0FBQUFxQUFBQUtnQUFBQ29BQUFBcUFBQUFLZ0FBQUNvQUFBQXFBQUFBS2dBQUFJSUFBQUNDQUFBQWdnQUFBSUlBQUFDQ0FBQUFnZ0FBQURJQkFBQXlBUUFBTWdFQUFESUJBQUF5QVFBQU1nRUFBRElBQUFBeUFBQUFNZ0FBQURJQUFBQXlBQUFBTWdBQUFESUFBQUF5QUFBQU1nQUFBRElBQUFBeUFBQUFNZ0FBQURJQUFBQXlBQUFBTWdBQUFESUFBQUF5QUFBQU1nQUFBRElBQUFBeUFBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFBUUFRWVNlRHd1WkFyalZBd0JtREFBQVp3d0FBRkVNQUFCb0RBQUFhUXdBQUdvTUFBQnJEQUFBWWd3QUFHTU1BQUJrREFBQVpRd0FBQUFBQUFEZzFRTUFiQXdBQUcwTUFBQlJEQUFBYmd3QUFHOE1BQUJ3REFBQWNRd0FBSElNQUFCekRBQUFkQXdBQUhVTUFBQjJEQUFBZHd3QUFIZ01BQUI1REFBQUFBQUFBSlRVQXdCNkRBQUFld3dBQUZFTUFBQjhEQUFBZlF3QUFINE1BQUIvREFBQWdBd0FBSUVNQUFDQ0RBQUFBQUFBQUFUV0F3Q0REQUFBaEF3QUFGRU1BQUNGREFBQWhnd0FBSWNNQUFDSURBQUFpUXdBQUFBQUFBQW8xZ01BaWd3QUFJc01BQUJSREFBQWpBd0FBSTBNQUFDT0RBQUFqd3dBQUpBTUFBQjBBQUFBY2dBQUFIVUFBQUJsQUFBQUFBQUFBR1lBQUFCaEFBQUFiQUFBQUhNQUFBQmxBRUdvb0E4TGtRSlUxZ01BZ3d3QUFKRU1BQUJSREFBQWhRd0FBSVlNQUFDSERBQUFpQXdBQUlrTUFBQUFBQUFBZ05ZREFJb01BQUNTREFBQVVRd0FBSXdNQUFDTkRBQUFqZ3dBQUk4TUFBQ1FEQUFBSlFBQUFHMEFBQUF2QUFBQUpRQUFBR1FBQUFBdkFBQUFKUUFBQUhrQUFBQUFBQUFBSlFBQUFFZ0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQUFBQUFBSlFBQUFHRUFBQUFnQUFBQUpRQUFBR0lBQUFBZ0FBQUFKUUFBQUdRQUFBQWdBQUFBSlFBQUFFZ0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQWdBQUFBSlFBQUFGa0FBQUFBQUFBQUpRQUFBRWtBQUFBNkFBQUFKUUFBQUUwQUFBQTZBQUFBSlFBQUFGTUFBQUFnQUFBQUpRQUFBSEFBUWNTaUR3djNER3pSQXdDVERBQUFsQXdBQUZFTUFBQk9VM1F6WDE4eU5teHZZMkZzWlRWbVlXTmxkRVVBQUFEUTh3TUFWTkVEQUVEeEF3QUFBQUFBN05FREFKTU1BQUNWREFBQVVRd0FBSllNQUFDWERBQUFtQXdBQUprTUFBQ2FEQUFBbXd3QUFKd01BQUNkREFBQW5nd0FBSjhNQUFDZ0RBQUFvUXdBQUU1VGRETmZYekkxWTNSNWNHVkpkMFZGQUU1VGRETmZYekl4TUdOMGVYQmxYMkpoYzJWRkFBQ1E4d01BenRFREFGanlBd0M4MFFNQUFBQUFBQUlBQUFCczBRTUFBZ0FBQU9UUkF3QUNBQUFBQUFBQUFJRFNBd0NUREFBQW9nd0FBRkVNQUFDakRBQUFwQXdBQUtVTUFBQ21EQUFBcHd3QUFLZ01BQUNwREFBQVRsTjBNMTlmTWpkamIyUmxZM1owU1dOak1URmZYMjFpYzNSaGRHVmZkRVZGQUU1VGRETmZYekl4TW1OdlpHVmpkblJmWW1GelpVVUFBQUFBa1BNREFGN1NBd0JZOGdNQVBOSURBQUFBQUFBQ0FBQUFiTkVEQUFJQUFBQjQwZ01BQWdBQUFBQUFBQUQwMGdNQWt3d0FBS29NQUFCUkRBQUFxd3dBQUt3TUFBQ3REQUFBcmd3QUFLOE1BQUN3REFBQXNRd0FBRTVUZEROZlh6STNZMjlrWldOMmRFbEVjMk14TVY5ZmJXSnpkR0YwWlY5MFJVVUFBRmp5QXdEUTBnTUFBQUFBQUFJQUFBQnMwUU1BQWdBQUFIalNBd0FDQUFBQUFBQUFBR2pUQXdDVERBQUFzZ3dBQUZFTUFBQ3pEQUFBdEF3QUFMVU1BQUMyREFBQXR3d0FBTGdNQUFDNURBQUFUbE4wTTE5Zk1qZGpiMlJsWTNaMFNVUnpSSFV4TVY5ZmJXSnpkR0YwWlY5MFJVVUFXUElEQUVUVEF3QUFBQUFBQWdBQUFHelJBd0FDQUFBQWVOSURBQUlBQUFBQUFBQUEzTk1EQUpNTUFBQzZEQUFBVVF3QUFMc01BQUM4REFBQXZRd0FBTDRNQUFDL0RBQUF3QXdBQU1FTUFBQk9VM1F6WDE4eU4yTnZaR1ZqZG5SSlJHbGpNVEZmWDIxaWMzUmhkR1ZmZEVWRkFBQlk4Z01BdU5NREFBQUFBQUFDQUFBQWJORURBQUlBQUFCNDBnTUFBZ0FBQUFBQUFBQlExQU1Ba3d3QUFNSU1BQUJSREFBQXd3d0FBTVFNQUFERkRBQUF4Z3dBQU1jTUFBRElEQUFBeVF3QUFFNVRkRE5mWHpJM1kyOWtaV04yZEVsRWFVUjFNVEZmWDIxaWMzUmhkR1ZmZEVWRkFGanlBd0FzMUFNQUFBQUFBQUlBQUFCczBRTUFBZ0FBQUhqU0F3QUNBQUFBVGxOME0xOWZNamRqYjJSbFkzWjBTWGRqTVRGZlgyMWljM1JoZEdWZmRFVkZBQUFBV1BJREFIRFVBd0FBQUFBQUFnQUFBR3pSQXdBQ0FBQUFlTklEQUFJQUFBQk9VM1F6WDE4eU5teHZZMkZzWlRWZlgybHRjRVVBQUFEUTh3TUF0TlFEQUd6UkF3Qk9VM1F6WDE4eU1UUmpiMnhzWVhSbFgySjVibUZ0WlVsalJVVUFUbE4wTTE5Zk1qZGpiMnhzWVhSbFNXTkZSUURROHdNQTlOUURBR3pSQXdEUTh3TUEyTlFEQUFqVkF3Qk9VM1F6WDE4eU1UUmpiMnhzWVhSbFgySjVibUZ0WlVsM1JVVUFUbE4wTTE5Zk1qZGpiMnhzWVhSbFNYZEZSUURROHdNQVBOVURBR3pSQXdEUTh3TUFJTlVEQUZEVkF3Qk9VM1F6WDE4eU5XTjBlWEJsU1dORlJRQUFBRmp5QXdCbzFRTUFBQUFBQUFJQUFBQnMwUU1BQWdBQUFPVFJBd0FDQUFBQVRsTjBNMTlmTWpFeVkzUjVjR1ZmWW5sdVlXMWxTV05GUlFBQUFORHpBd0NjMVFNQWZOVURBRTVUZEROZlh6SXhNbU4wZVhCbFgySjVibUZ0WlVsM1JVVUFBQURROHdNQXhOVURBT3pSQXdCT1UzUXpYMTh5T0c1MWJYQjFibU4wU1dORlJRQUFBQURROHdNQTdOVURBR3pSQXdCT1UzUXpYMTh5T0c1MWJYQjFibU4wU1hkRlJRQUFBQURROHdNQUVOWURBR3pSQXdCT1UzUXpYMTh5TVRWdWRXMXdkVzVqZEY5aWVXNWhiV1ZKWTBWRkFBQUFBTkR6QXdBMDFnTUFCTllEQUU1VGRETmZYekl4Tlc1MWJYQjFibU4wWDJKNWJtRnRaVWwzUlVVQUFBQUEwUE1EQUdEV0F3QW8xZ01BQUFBQUFBalZBd0RLREFBQXl3d0FBRkVNQUFETURBQUF6UXdBQUZZTUFBQUFBQUFBVU5VREFNNE1BQURQREFBQVVRd0FBTkFNQUFEUkRBQUFXd3dBQUFBQUFBQ2cxd01Ba3d3QUFOSU1BQUJSREFBQTB3d0FBTlFNQUFEVkRBQUExZ3dBQU5jTUFBRFlEQUFBMlF3QUFOb01BQURiREFBQTNBd0FBTjBNQUFCT1UzUXpYMTh5TjI1MWJWOW5aWFJKWTA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2xqVGxOZk1URmphR0Z5WDNSeVlXbDBjMGxqUlVWRlJVVkZBRTVUZEROZlh6STVYMTl1ZFcxZloyVjBTV05GUlFCT1UzUXpYMTh5TVRSZlgyNTFiVjluWlhSZlltRnpaVVVBQUpEekF3Qm0xd01BV1BJREFGRFhBd0FBQUFBQUFRQUFBSURYQXdBQUFBQUFXUElEQUF6WEF3QUFBQUFBQWdBQUFHelJBd0FDQUFBQWlOY0RBRUhFcnc4THl3RjAyQU1Ba3d3QUFONE1BQUJSREFBQTN3d0FBT0FNQUFEaERBQUE0Z3dBQU9NTUFBRGtEQUFBNVF3QUFPWU1BQURuREFBQTZBd0FBT2tNQUFCT1UzUXpYMTh5TjI1MWJWOW5aWFJKZDA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6STVYMTl1ZFcxZloyVjBTWGRGUlFBQUFGanlBd0JFMkFNQUFBQUFBQUVBQUFDQTF3TUFBQUFBQUZqeUF3QUEyQU1BQUFBQUFBSUFBQUJzMFFNQUFnQUFBRnpZQXdCQm1MRVBDOThCWE5rREFKTU1BQURxREFBQVVRd0FBT3NNQUFEc0RBQUE3UXdBQU80TUFBRHZEQUFBOEF3QUFQRU1BQUR5REFBQVRsTjBNMTlmTWpkdWRXMWZjSFYwU1dOT1UxOHhPVzl6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlPVjlmYm5WdFgzQjFkRWxqUlVVQVRsTjBNMTlmTWpFMFgxOXVkVzFmY0hWMFgySmhjMlZGQUFDUTh3TUFJdGtEQUZqeUF3QU0yUU1BQUFBQUFBRUFBQUE4MlFNQUFBQUFBRmp5QXdESTJBTUFBQUFBQUFJQUFBQnMwUU1BQWdBQUFFVFpBd0JCZ0xNUEM3OEJKTm9EQUpNTUFBRHpEQUFBVVF3QUFQUU1BQUQxREFBQTlnd0FBUGNNQUFENERBQUErUXdBQVBvTUFBRDdEQUFBVGxOME0xOWZNamR1ZFcxZmNIVjBTWGRPVTE4eE9XOXpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpkMDVUWHpFeFkyaGhjbDkwY21GcGRITkpkMFZGUlVWRlJRQk9VM1F6WDE4eU9WOWZiblZ0WDNCMWRFbDNSVVVBQUFCWThnTUE5TmtEQUFBQUFBQUJBQUFBUE5rREFBQUFBQUJZOGdNQXNOa0RBQUFBQUFBQ0FBQUFiTkVEQUFJQUFBQU0yZ01BUWNpMER3dlhGQ1RiQXdEOERBQUEvUXdBQUZFTUFBRCtEQUFBL3d3QUFBQU5BQUFCRFFBQUFnMEFBQU1OQUFBRURRQUErUC8vL3lUYkF3QUZEUUFBQmcwQUFBY05BQUFJRFFBQUNRMEFBQW9OQUFBTERRQUFUbE4wTTE5Zk1qaDBhVzFsWDJkbGRFbGpUbE5mTVRscGMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpsMGFXMWxYMkpoYzJWRkFKRHpBd0RkMmdNQVRsTjBNMTlmTWpJd1gxOTBhVzFsWDJkbGRGOWpYM04wYjNKaFoyVkpZMFZGQUFBQWtQTURBUGphQXdCWThnTUFtTm9EQUFBQUFBQURBQUFBYk5FREFBSUFBQUR3MmdNQUFnQUFBQnpiQXdBQUNBQUFBQUFBQUJEY0F3QU1EUUFBRFEwQUFGRU1BQUFPRFFBQUR3MEFBQkFOQUFBUkRRQUFFZzBBQUJNTkFBQVVEUUFBK1AvLy94RGNBd0FWRFFBQUZnMEFBQmNOQUFBWURRQUFHUTBBQUJvTkFBQWJEUUFBVGxOME0xOWZNamgwYVcxbFgyZGxkRWwzVGxOZk1UbHBjM1J5WldGdFluVm1YMmwwWlhKaGRHOXlTWGRPVTE4eE1XTm9ZWEpmZEhKaGFYUnpTWGRGUlVWRlJVVUFUbE4wTTE5Zk1qSXdYMTkwYVcxbFgyZGxkRjlqWDNOMGIzSmhaMlZKZDBWRkFBQ1E4d01BNWRzREFGanlBd0NnMndNQUFBQUFBQU1BQUFCczBRTUFBZ0FBQVBEYUF3QUNBQUFBQ053REFBQUlBQUFBQUFBQVFOMERBQndOQUFBZERRQUFVUXdBQUI0TkFBRC9EQUFBQUEwQUFBRU5BQUFDRFFBQUF3MEFBQVFOQUFBZkRRQUFJQTBBQUNFTkFBQWlEUUFBSXcwQUFDUU5BQUFsRFFBQStQLy8vMERkQXdBbURRQUFKdzBBQUNnTkFBQXBEUUFBS2cwQUFDc05BQUFzRFFBQVRsTjBNMTlmTWpFMWRHbHRaVjluWlhSZllubHVZVzFsU1dOT1UxOHhPV2x6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVGhmWDNScGJXVmZaMlYwWDNOMGIzSmhaMlZKWTBWRkFFNVRkRE5mWHpJeE1GOWZkR2x0WlY5blpYUkZBQUFBa1BNREFCWGRBd0RROHdNQTlkd0RBQ3pkQXdCWThnTUFxTndEQUFBQUFBQUNBQUFBSk5zREFBSUFBQUEwM1FNQUFBd0FBQUFBQUFCTTNnTUFMUTBBQUM0TkFBQlJEQUFBTHcwQUFBOE5BQUFRRFFBQUVRMEFBQklOQUFBVERRQUFGQTBBQURBTkFBQXhEUUFBTWcwQUFETU5BQUEwRFFBQU5RMEFBRFlOQUFENC8vLy9UTjREQURjTkFBQTREUUFBT1EwQUFEb05BQUE3RFFBQVBBMEFBRDBOQUFCT1UzUXpYMTh5TVRWMGFXMWxYMmRsZEY5aWVXNWhiV1ZKZDA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6SXhPRjlmZEdsdFpWOW5aWFJmYzNSdmNtRm5aVWwzUlVVQUFBQUEwUE1EQUIzZUF3QXMzUU1BV1BJREFORGRBd0FBQUFBQUFnQUFBQkRjQXdBQ0FBQUFRTjREQUFBTUFBQUFBQUFBNk40REFENE5BQUEvRFFBQVVRd0FBRUFOQUFCT1UzUXpYMTh5T0hScGJXVmZjSFYwU1dOT1UxOHhPVzl6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVEJmWDNScGJXVmZjSFYwUlFBQUFKRHpBd0RKM2dNQVdQSURBSVRlQXdBQUFBQUFBZ0FBQUd6UkF3QUNBQUFBNE40REFBQUlBQUFBQUFBQWFOOERBRUVOQUFCQ0RRQUFVUXdBQUVNTkFBQk9VM1F6WDE4eU9IUnBiV1ZmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFBQUFBQlk4Z01BSU44REFBQUFBQUFDQUFBQWJORURBQUlBQUFEZzNnTUFBQWdBQUFBQUFBRHczd01BUGcwQUFFUU5BQUJSREFBQVFBMEFBRTVUZEROZlh6SXhOWFJwYldWZmNIVjBYMko1Ym1GdFpVbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQUFBQUEwUE1EQUtEZkF3RG8zZ01BQUFBQUFHVGdBd0JCRFFBQVJRMEFBRkVNQUFCRERRQUFUbE4wTTE5Zk1qRTFkR2x0WlY5d2RYUmZZbmx1WVcxbFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFBQUFBRFE4d01BRk9BREFHamZBd0FBQUFBQTVPQURBSk1NQUFCR0RRQUFVUXdBQUVjTkFBQklEUUFBU1EwQUFFb05BQUJMRFFBQVRBMEFBRTBOQUFCT0RRQUFUdzBBQUU1VGRETmZYekl4TUcxdmJtVjVjSFZ1WTNSSlkweGlNRVZGUlFCT1UzUXpYMTh5TVRCdGIyNWxlVjlpWVhObFJRQUFBQUNROHdNQXhPQURBRmp5QXdDbzRBTUFBQUFBQUFJQUFBQnMwUU1BQWdBQUFOemdBd0FDQUFBQUFBQUFBRmpoQXdDVERBQUFVQTBBQUZFTUFBQlJEUUFBVWcwQUFGTU5BQUJVRFFBQVZRMEFBRllOQUFCWERRQUFXQTBBQUZrTkFBQk9VM1F6WDE4eU1UQnRiMjVsZVhCMWJtTjBTV05NWWpGRlJVVUFXUElEQUR6aEF3QUFBQUFBQWdBQUFHelJBd0FDQUFBQTNPQURBQUlBQUFBQUFBQUF6T0VEQUpNTUFBQmFEUUFBVVF3QUFGc05BQUJjRFFBQVhRMEFBRjROQUFCZkRRQUFZQTBBQUdFTkFBQmlEUUFBWXcwQUFFNVRkRE5mWHpJeE1HMXZibVY1Y0hWdVkzUkpkMHhpTUVWRlJRQlk4Z01Bc09FREFBQUFBQUFDQUFBQWJORURBQUlBQUFEYzRBTUFBZ0FBQUFBQUFBQkE0Z01Ba3d3QUFHUU5BQUJSREFBQVpRMEFBR1lOQUFCbkRRQUFhQTBBQUdrTkFBQnFEUUFBYXcwQUFHd05BQUJ0RFFBQVRsTjBNMTlmTWpFd2JXOXVaWGx3ZFc1amRFbDNUR0l4UlVWRkFGanlBd0FrNGdNQUFBQUFBQUlBQUFCczBRTUFBZ0FBQU56Z0F3QUNBQUFBQUFBQUFMemlBd0J1RFFBQWJ3MEFBRkVNQUFCd0RRQUFjUTBBQUhJTkFBQnpEUUFBZEEwQUFIVU5BQUIyRFFBQWR3MEFBSGdOQUFCT1UzUXpYMTh5TVRkdGIyNWxlWEIxYm1OMFgySjVibUZ0WlVsalRHSXdSVVZGQUFEUTh3TUFtT0lEQU9UZ0F3QUFBQUFBSk9NREFIa05BQUI2RFFBQVVRd0FBSHNOQUFCOERRQUFmUTBBQUg0TkFBQi9EUUFBZ0EwQUFJRU5BQUNDRFFBQWd3MEFBRTVUZEROZlh6SXhOMjF2Ym1WNWNIVnVZM1JmWW5sdVlXMWxTV05NWWpGRlJVVUFBTkR6QXdBQTR3TUFXT0VEQUFBQUFBQ000d01BaEEwQUFJVU5BQUJSREFBQWhnMEFBSWNOQUFDSURRQUFpUTBBQUlvTkFBQ0xEUUFBakEwQUFJME5BQUNPRFFBQVRsTjBNMTlmTWpFM2JXOXVaWGx3ZFc1amRGOWllVzVoYldWSmQweGlNRVZGUlFBQTBQTURBR2pqQXdETTRRTUFBQUFBQVBUakF3Q1BEUUFBa0EwQUFGRU1BQUNSRFFBQWtnMEFBSk1OQUFDVURRQUFsUTBBQUpZTkFBQ1hEUUFBbUEwQUFKa05BQUJPVTNRelgxOHlNVGR0YjI1bGVYQjFibU4wWDJKNWJtRnRaVWwzVEdJeFJVVkZBQURROHdNQTBPTURBRURpQXdBQUFBQUFoT1FEQUpNTUFBQ2FEUUFBVVF3QUFKc05BQUNjRFFBQVRsTjBNMTlmTWpsdGIyNWxlVjluWlhSSlkwNVRYekU1YVhOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmWjJWMFNXTkZSUUFBa1BNREFHTGtBd0JZOGdNQUhPUURBQUFBQUFBQ0FBQUFiTkVEQUFJQUFBQjg1QU1BUWFqSkR3dWJBU2psQXdDVERBQUFuUTBBQUZFTUFBQ2VEUUFBbncwQUFFNVRkRE5mWHpJNWJXOXVaWGxmWjJWMFNYZE9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5TVRGZlgyMXZibVY1WDJkbGRFbDNSVVVBQUpEekF3QUc1UU1BV1BJREFNRGtBd0FBQUFBQUFnQUFBR3pSQXdBQ0FBQUFJT1VEQUVITXlnOExtd0hNNVFNQWt3d0FBS0FOQUFCUkRBQUFvUTBBQUtJTkFBQk9VM1F6WDE4eU9XMXZibVY1WDNCMWRFbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpFeFgxOXRiMjVsZVY5d2RYUkpZMFZGQUFDUTh3TUFxdVVEQUZqeUF3Qms1UU1BQUFBQUFBSUFBQUJzMFFNQUFnQUFBTVRsQXdCQjhNc1BDNXNCY09ZREFKTU1BQUNqRFFBQVVRd0FBS1FOQUFDbERRQUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpkMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTWGRGUlFBQWtQTURBRTdtQXdCWThnTUFDT1lEQUFBQUFBQUNBQUFBYk5FREFBSUFBQUJvNWdNQVFaVE5Ed3ZCRHVqbUF3Q1REQUFBcGcwQUFGRU1BQUNuRFFBQXFBMEFBS2tOQUFCT1UzUXpYMTh5T0cxbGMzTmhaMlZ6U1dORlJRQk9VM1F6WDE4eU1UTnRaWE56WVdkbGMxOWlZWE5sUlFBQUFBQ1E4d01BeGVZREFGanlBd0N3NWdNQUFBQUFBQUlBQUFCczBRTUFBZ0FBQU9EbUF3QUNBQUFBQUFBQUFFRG5Bd0NUREFBQXFnMEFBRkVNQUFDckRRQUFyQTBBQUswTkFBQk9VM1F6WDE4eU9HMWxjM05oWjJWelNYZEZSUUFBQUFCWThnTUFLT2NEQUFBQUFBQUNBQUFBYk5FREFBSUFBQURnNWdNQUFnQUFBQUFBQUFDZzV3TUFrd3dBQUs0TkFBQlJEQUFBcHcwQUFLZ05BQUNwRFFBQVRsTjBNMTlmTWpFMWJXVnpjMkZuWlhOZllubHVZVzFsU1dORlJRQUFBQURROHdNQWdPY0RBT2ptQXdBQUFBQUE3T2NEQUpNTUFBQ3ZEUUFBVVF3QUFLc05BQUNzRFFBQXJRMEFBRTVUZEROZlh6SXhOVzFsYzNOaFoyVnpYMko1Ym1GdFpVbDNSVVVBQUFBQTBQTURBTXpuQXdCQTV3TUFBQUFBQUZUb0F3Q3dEUUFBc1EwQUFGRU1BQUNqREFBQXBBd0FBS1VNQUFDbURBQUFwd3dBQUtnTUFBQ3BEQUFBVGxOME0xOWZNakUwWTI5a1pXTjJkRjlpZVc1aGJXVkpZMk14TVY5ZmJXSnpkR0YwWlY5MFJVVUFBQURROHdNQUtPZ0RBSURTQXdBQUFBQUF2T2dEQUxJTkFBQ3pEUUFBVVF3QUFId01BQUI5REFBQWZnd0FBSDhNQUFDQURBQUFnUXdBQUlJTUFBQk9VM1F6WDE4eU1UUmpiMlJsWTNaMFgySjVibUZ0WlVsM1l6RXhYMTl0WW5OMFlYUmxYM1JGUlFBQUFORHpBd0NRNkFNQWxOUURBQUFBQUFBazZRTUF0QTBBQUxVTkFBQlJEQUFBcXd3QUFLd01BQUN0REFBQXJnd0FBSzhNQUFDd0RBQUFzUXdBQUU1VGRETmZYekl4TkdOdlpHVmpkblJmWW5sdVlXMWxTVVJ6WXpFeFgxOXRZbk4wWVhSbFgzUkZSUUFBMFBNREFQam9Bd0QwMGdNQUFBQUFBSXpwQXdDMkRRQUF0dzBBQUZFTUFBQzdEQUFBdkF3QUFMME1BQUMrREFBQXZ3d0FBTUFNQUFEQkRBQUFUbE4wTTE5Zk1qRTBZMjlrWldOMmRGOWllVzVoYldWSlJHbGpNVEZmWDIxaWMzUmhkR1ZmZEVWRkFBRFE4d01BWU9rREFOelRBd0FBQUFBQTlPa0RBTGdOQUFDNURRQUFVUXdBQUxNTUFBQzBEQUFBdFF3QUFMWU1BQUMzREFBQXVBd0FBTGtNQUFCT1UzUXpYMTh5TVRSamIyUmxZM1owWDJKNWJtRnRaVWxFYzBSMU1URmZYMjFpYzNSaGRHVmZkRVZGQU5EekF3REk2UU1BYU5NREFBQUFBQUJjNmdNQXVnMEFBTHNOQUFCUkRBQUF3d3dBQU1RTUFBREZEQUFBeGd3QUFNY01BQURJREFBQXlRd0FBRTVUZEROZlh6SXhOR052WkdWamRuUmZZbmx1WVcxbFNVUnBSSFV4TVY5ZmJXSnpkR0YwWlY5MFJVVUEwUE1EQUREcUF3QlExQU1BVXdBQUFIVUFBQUJ1QUFBQVpBQUFBR0VBQUFCNUFBQUFBQUFBQUUwQUFBQnZBQUFBYmdBQUFHUUFBQUJoQUFBQWVRQUFBQUFBQUFCVUFBQUFkUUFBQUdVQUFBQnpBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRmNBQUFCbEFBQUFaQUFBQUc0QUFBQmxBQUFBY3dBQUFHUUFBQUJoQUFBQWVRQUFBQUFBQUFCVUFBQUFhQUFBQUhVQUFBQnlBQUFBY3dBQUFHUUFBQUJoQUFBQWVRQUFBQUFBQUFCR0FBQUFjZ0FBQUdrQUFBQmtBQUFBWVFBQUFIa0FBQUFBQUFBQVV3QUFBR0VBQUFCMEFBQUFkUUFBQUhJQUFBQmtBQUFBWVFBQUFIa0FBQUFBQUFBQVV3QUFBSFVBQUFCdUFBQUFBQUFBQUUwQUFBQnZBQUFBYmdBQUFBQUFBQUJVQUFBQWRRQUFBR1VBQUFBQUFBQUFWd0FBQUdVQUFBQmtBQUFBQUFBQUFGUUFBQUJvQUFBQWRRQUFBQUFBQUFCR0FBQUFjZ0FBQUdrQUFBQUFBQUFBVXdBQUFHRUFBQUIwQUFBQUFBQUFBRW9BQUFCaEFBQUFiZ0FBQUhVQUFBQmhBQUFBY2dBQUFIa0FBQUFBQUFBQVJnQUFBR1VBQUFCaUFBQUFjZ0FBQUhVQUFBQmhBQUFBY2dBQUFIa0FBQUFBQUFBQVRRQUFBR0VBQUFCeUFBQUFZd0FBQUdnQUFBQUFBQUFBUVFBQUFIQUFBQUJ5QUFBQWFRQUFBR3dBQUFBQUFBQUFUUUFBQUdFQUFBQjVBQUFBQUFBQUFFb0FBQUIxQUFBQWJnQUFBR1VBQUFBQUFBQUFTZ0FBQUhVQUFBQnNBQUFBZVFBQUFBQUFBQUJCQUFBQWRRQUFBR2NBQUFCMUFBQUFjd0FBQUhRQUFBQUFBQUFBVXdBQUFHVUFBQUJ3QUFBQWRBQUFBR1VBQUFCdEFBQUFZZ0FBQUdVQUFBQnlBQUFBQUFBQUFFOEFBQUJqQUFBQWRBQUFBRzhBQUFCaUFBQUFaUUFBQUhJQUFBQUFBQUFBVGdBQUFHOEFBQUIyQUFBQVpRQUFBRzBBQUFCaUFBQUFaUUFBQUhJQUFBQUFBQUFBUkFBQUFHVUFBQUJqQUFBQVpRQUFBRzBBQUFCaUFBQUFaUUFBQUhJQUFBQUFBQUFBU2dBQUFHRUFBQUJ1QUFBQUFBQUFBRVlBQUFCbEFBQUFZZ0FBQUFBQUFBQk5BQUFBWVFBQUFISUFBQUFBQUFBQVFRQUFBSEFBQUFCeUFBQUFBQUFBQUVvQUFBQjFBQUFBYmdBQUFBQUFBQUJLQUFBQWRRQUFBR3dBQUFBQUFBQUFRUUFBQUhVQUFBQm5BQUFBQUFBQUFGTUFBQUJsQUFBQWNBQUFBQUFBQUFCUEFBQUFZd0FBQUhRQUFBQUFBQUFBVGdBQUFHOEFBQUIyQUFBQUFBQUFBRVFBQUFCbEFBQUFZd0FBQUFBQUFBQkJBQUFBVFFBQUFBQUFBQUJRQUFBQVRRQkI0TnNQQy84Q0hOc0RBQVVOQUFBR0RRQUFCdzBBQUFnTkFBQUpEUUFBQ2cwQUFBc05BQUFBQUFBQUNOd0RBQlVOQUFBV0RRQUFGdzBBQUJnTkFBQVpEUUFBR2cwQUFCc05BQUFBQUFBQWVPNERBR1lNQUFDOERRQUFVUXdBQUdnTUFBQnBEQUFBYWd3QUFHc01BQUJpREFBQVl3d0FBR1FNQUFCbERBQUFUbE4wTTE5Zk1qRTFYMTkwYVcxbFgyZGxkRjkwWlcxd1NXTkZSUUFBQUFEUTh3TUFXTzREQUxqVkF3QUFBQUFBNk80REFHd01BQUM5RFFBQVVRd0FBRzRNQUFCdkRBQUFjQXdBQUhFTUFBQnlEQUFBY3d3QUFIUU1BQUIxREFBQWRnd0FBSGNNQUFCNERBQUFlUXdBQUU1VGRETmZYekl4TlY5ZmRHbHRaVjluWlhSZmRHVnRjRWwzUlVVQUFBQUEwUE1EQU1qdUF3RGcxUU1BVGxOME0xOWZNakUwWDE5emFHRnlaV1JmWTI5MWJuUkZBQUFBQUFBQUFBQk03d01BdmcwQUFMOE5BQUFJQUFBQS9BVUFBQWdBQUFCT1UzUXpYMTh5TVRsZlgzTm9ZWEpsWkY5M1pXRnJYMk52ZFc1MFJRQUFBRmp5QXdBczd3TUFBQUFBQUFFQUFBQkE4UU1BUVlEZkR3c0RlSXNEQUVHZzN3OEx5QUV3TURBeE1ESXdNekEwTURVd05qQTNNRGd3T1RFd01URXhNakV6TVRReE5URTJNVGN4T0RFNU1qQXlNVEl5TWpNeU5ESTFNall5TnpJNE1qa3pNRE14TXpJek16TTBNelV6TmpNM016Z3pPVFF3TkRFME1qUXpORFEwTlRRMk5EYzBPRFE1TlRBMU1UVXlOVE0xTkRVMU5UWTFOelU0TlRrMk1EWXhOakkyTXpZME5qVTJOalkzTmpnMk9UY3dOekUzTWpjek56UTNOVGMyTnpjM09EYzVPREE0TVRneU9ETTRORGcxT0RZNE56ZzRPRGs1TURreE9USTVNemswT1RVNU5qazNPVGc1T1FCQjlPQVBDeVFLQUFBQVpBQUFBT2dEQUFBUUp3QUFvSVlCQUVCQ0R3Q0FscGdBQU9IMUJRREttanNBUWFqaER3dmlCZ29BQUFBQUFBQUFaQUFBQUFBQUFBRG9Bd0FBQUFBQUFCQW5BQUFBQUFBQW9JWUJBQUFBQUFCQVFnOEFBQUFBQUlDV21BQUFBQUFBQU9IMUJRQUFBQUFBeXBvN0FBQUFBQURrQzFRQ0FBQUFBT2gyU0JjQUFBQUFFS1hVNkFBQUFBQ2djazRZQ1FBQUFFQjZFUE5hQUFBQWdNYWtmbzBEQUFBQXdXL3loaU1BQUFDS1hYaEZZd0VBQUdTbnM3YmdEUUFBNklrRUk4ZUtrUE1EQVBUdUF3QUFBQUFBUVBFREFMNE5BQURBRFFBQUNBQUFBRTR4TUY5ZlkzaDRZV0pwZGpFeE5sOWZjMmhwYlY5MGVYQmxYMmx1Wm05RkFBQUFBTkR6QXdCYzhRTUF3UE1EQUU0eE1GOWZZM2g0WVdKcGRqRXhOMTlmWTJ4aGMzTmZkSGx3WlY5cGJtWnZSUUFBQU5EekF3Q004UU1BZ1BFREFFNHhNRjlmWTNoNFlXSnBkakV4TjE5ZmNHSmhjMlZmZEhsd1pWOXBibVp2UlFBQUFORHpBd0M4OFFNQWdQRURBRTR4TUY5ZlkzaDRZV0pwZGpFeE9WOWZjRzlwYm5SbGNsOTBlWEJsWDJsdVptOUZBTkR6QXdEczhRTUE0UEVEQUU0eE1GOWZZM2g0WVdKcGRqRXlNRjlmYzJsZlkyeGhjM05mZEhsd1pWOXBibVp2UlFBQUFBRFE4d01BSFBJREFMRHhBd0FBQUFBQW9QSURBTUVOQUFEQ0RRQUF3dzBBQU1RTkFBREZEUUFBeGcwQUFNY05BQURJRFFBQVRqRXdYMTlqZUhoaFltbDJNVEl4WDE5MmJXbGZZMnhoYzNOZmRIbHdaVjlwYm1adlJRQUFBTkR6QXdCNDhnTUFzUEVEQUFBQUFBRHc4Z01BQWdBQUFNa05BQURLRFFBQUFBQUFBQmp6QXdBQ0FBQUF5dzBBQU13TkFBQlRkRGxsZUdObGNIUnBiMjRBVTNRNVltRmtYMkZzYkc5akFBQUEwUE1EQU9IeUF3RHc4d01BVTNReU1HSmhaRjloY25KaGVWOXVaWGRmYkdWdVozUm9BQUFBQU5EekF3RDg4Z01BOFBJREFBQUFBQUJJOHdNQUFRQUFBTTBOQUFET0RRQUFVM1F4TVd4dloybGpYMlZ5Y205eUFORHpBd0E0OHdNQThQTURBQUFBQUFCODh3TUFBUUFBQU04TkFBRE9EUUFBVTNReE1teGxibWQwYUY5bGNuSnZjZ0FBQUFEUTh3TUFhUE1EQUVqekF3QUFBQUFBc1BFREFNRU5BQURRRFFBQXd3MEFBTVFOQUFERkRRQUEwUTBBQU5JTkFBRFREUUFBVTNRNWRIbHdaVjlwYm1adkFBQUFBSkR6QXdDdzh3TUFBQUFBQUVUeUF3REJEUUFBMUEwQUFNTU5BQURFRFFBQXhRMEFBTlVOQUFEV0RRQUExdzBBQUpEekF3RFU4Z01BQUFBQUFQRHpBd0FDQUFBQTJBMEFBTmtOQUVHUTZBOExId0VBQUFBQUFBQUFhUG9EQURsMkFBQUFBQUFBQkFBRUFFQXNCSUFFQUFRQVFiam9Ed3NKQXdBQUFBUUFBQUFGQUVITTZBOExOUVlBQUFBSEFBQUFDQUFBQUdqNkF3QU50Z0FBQUFBQUFBQUFnQVJBTEFTQUFBQ0FCQUFBQUFBQUFBQUFDUUFBQUFvQUFBQUlBRUdNNlE4TElBWUFBQUFMQUFBQUNBQUFBR2o2QXdCVDdnQUFBQkFJQUFBQUFBQkFQQXlBQUVHNDZROExKd3dBQUFBTkFBQUFDQUFBQUFnQUFBQVk5QU1BR25ZQUFBQUNCQUFBQUFBQVFDNEVnQVFBQkFCQjZPa1BDd2tPQUFBQUR3QUFBQkFBUWZ6cER3c2dBd0FBQUJFQUFBQUZBQUFBbVBRREFPanRBQUNBZ0FBQUFBQUFBTUM4RElBQVFhanFEd3NORWdBQUFCTUFBQUFVQUFBQUZRQkJ3T29QQ3cwTUFBQUFGZ0FBQUFnQUFBQUlBRUhZNmc4TFBRWUFBQUFYQUFBQUNBQUFBQUFBQUFCbytnTUFxQjRCQUFBQUFBQUFnQUFJUUN3RWdBQ0FBQWdBQUFBQUFBQUFBQmdBQUFBWkFBQUFDQUFBQUFnQVFhRHJEd3M5QmdBQUFCb0FBQUFJQUFBQUFBQUFBR2oxQXdBUGNnQUFBQUJBSUFBQUFBQkFMRVNnQUlBQUNBQUFBQUFBQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0JCNk9zUEN5Y1lBQUFBSHdBQUFBZ0FBQUFJQUFBQWVQa0RBSkltQUFBQUFBSVFBQUFBQUVBc0JwQUFBQkVBUVpqc0R3c0pJQUFBQUNFQUFBQWlBRUdzN0E4TEl5TUFBQUFrQUFBQUNBQUFBSGo1QXdBektBQUFBQ0FFQUFBQUFBQkFMQVNBQUFBUkFFSFk3QThMQ1NVQUFBQW1BQUFBSndCQjdPd1BDeU1qQUFBQUtBQUFBQWdBQUFCbytnTUFVV2dBQUFBQUJBQUFBQWdBUUN3RWdBQUFDQUJCbU8wUEN3a3BBQUFBS2dBQUFDc0FRYXp0RHdzakJnQUFBQ3dBQUFBSUFBQUFlUGtEQUFZcEFBQUFBQUFRQUFRQUFFQXNCSkFBQkJFQVFkanREd3NKTFFBQUFDNEFBQUF2QUVIczdROExFaU1BQUFBd0FBQUFDQUFBQUZqMEF3RFR0QUJCaCs0UEN4cFFRQ3dFZ0FBQWdGUUFBQUFBQUFBQUFERUFBQUF5QUFBQU13QkJyTzRQQ3pVSkFBQUFOQUFBQUFnQUFBQlk5QU1BTHJVQUFBQUFBQVFBSUFBQVFDd0VoQUFnZ0FRQUFBQUFBQUFBQURVQUFBQTJBQUFBTndCQjdPNFBDeU1KQUFBQU9BQUFBQWdBQUFCNCtRTUFYU2NBQUFBQUVBUUFBQUFBUUN3VWhBQUFFUUJCbU84UEN3azVBQUFBT2dBQUFEc0FRYXp2RHdzU0l3QUFBRHdBQUFBSUFBQUFlUGtEQU9rb0FFSEg3dzhMR2lSQUxBU0FBQUFSSkFBQUFBQUFBQUFBUFFBQUFENEFBQUEvQUVIczd3OExJeU1BQUFCQUFBQUFDQUFBQUhqNUF3QnNLUUFBSUFBQUFRQUFBQUJnTEFTQkFBQVJBRUdZOEE4TENVRUFBQUJDQUFBQVF3QkJyUEFQQ3lNakFBQUFSQUFBQUFnQUFBQjQrUU1BdXlnQUFBQWdBQUFBSUFBQVFDd0VnQUFnRVFCQjJQQVBDd2xGQUFBQVJnQUFBRWNBUWV6d0R3c2pJd0FBQUVnQUFBQUlBQUFBZVBrREFCQW5BQUFBQUFBQUFFRUFBRUFzQklBQVFSRUFRWmp4RHdzSlNRQUFBRW9BQUFCTEFFR3M4UThMSXlNQUFBQk1BQUFBQ0FBQUFIajVBd0JDSndBQUFBQUFBQUFBTUFCQUxBU0FBQUF4QUVIWThROExDVTBBQUFCT0FBQUFUd0JCN1BFUEN5TWpBQUFBVUFBQUFBZ0FBQUI0K1FNQVRTZ0FBQUFBQUFJQUFBSUFRQ3dFZ2dBQUV3QkJtUElQQ3dsUkFBQUFVZ0FBQUZNQVFhenlEd3NqSXdBQUFGUUFBQUFJQUFBQWVQa0RBSFluQUFBQUFBQUFBQUJDQUVBc0JJQUFBRk1BUWRqeUR3c0pWUUFBQUZZQUFBQlhBRUhzOGc4TEl5TUFBQUJZQUFBQUNBQUFBR2o2QXdDbEtRQUFBQUFBQUFBQUVRQkFMQVNBQUFBUkFFR1k4dzhMQ1NNQUFBQlpBQUFBQ0FCQnJQTVBDeU1HQUFBQVdnQUFBQWdBQUFCNCtRTUEveWNBQUFBQWdBRUFBQUFBUUN5RWdRQUFFUUJCMlBNUEN3bGJBQUFBWEFBQUFGMEFRZXp6RHdzaUl3QUFBRjRBQUFBSUFBQUFhUG9EQUNTcUFBQUFBQUFBUUlBQUFFQXNCSUJBZ0FCQm1QUVBDd2xmQUFBQVlBQUFBR0VBUWF6MER3c2dCZ0FBQUdJQUFBQUlBQUFBOEpvRUFCMGZBUUFBSUFRQUFBQUFBQUFrQklBQVFkajBEd3NrWXdBQUFHUUFBQUFJQUFBQUFBQUFBRGo2QXdBcUtBRUFRQWdBQUFBQUFBQkFMQVNBQUVHSTlROExDUVlBQUFCbEFBQUFDQUJCblBVUEN6VmpBQUFBWmdBQUFBZ0FBQUJvK2dNQWJCa0JBQ0FBQUFBQUFBQUNZQ3dFZ0FBQUFBSUFBQUFBQUFBQUFBWUFBQUJuQUFBQWFBQkIzUFVQQ3pVR0FBQUFhUUFBQUFnQUFBQm8rZ01BR09VQUFBQUFBQWdBQUFBQ1FDd0VpQUFBQUFJQUFBQUFBQUFBQUdvQUFBQnJBQUFBYkFCQm5QWVBDMU1HQUFBQWJRQUFBQWdBQUFCbytnTUFyUndCQUlBQUFBQUFBQUNBd0N3RWdBQUFBSUI0K1FNQUFSb0FBQWdBQUFFQUFBQUFTQ3dFZ1FBQUVRQm8rZ01BUjhrQUFBQUJBQUFBQUFFQVFDMEVnQUFBQVFCQitQWVBDd2x1QUFBQWJ3QUFBQWdBUVl6M0R3c2pCZ0FBQUhBQUFBQUlBQUFBYVBvREFHb2FBUUFBQUFBQUFBZ0NBRUFzQklBQUNBSUFRYmozRHdzSmNRQUFBSElBQUFCekFFSE05dzhMSXdZQUFBQjBBQUFBQ0FBQUFQQ2FCQUE2S0FFQUFnQUFBQUFBQWdBQ0JBQ0FBQUFDQUVINDl3OExIM1VBQUFCMkFBQUEyUHNEQUF6ckFBQUFBQUNBQUNBQUFBSUVBSUFBSUFJQVFhRDREd3N4ZHdBQUFIZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFIa0FBQUI2QUFBQWV3QkIzUGdQQ3lOMUFBQUFmQUFBQUFBQUFBQUEvQU1BQ084QUFBQ0FBQkFBQUFBQUFvUUFrQUFnQWdCQmlQa1BDeVY5QUFBQWZnQUFBSDhBQUFDQUFBQUFnUUFBQUlJQUFBQ0RBQUFBaEFBQUFJVUFBQUNHQUVHNCtROExWWGNBQUFDSEFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFCbzlRTUFWelVBQUFBQUFBQUFRQUNBUUN3RWdBREFBSWdBQUFBQUFBQUFBSWdBQUFDSkFBQUFpZ0FBQUlzQVFaajZEd3NsR0FBQUFJd0FBQUFJQUFBQUNBQUFBSmowQXdDUjdBQUFBQVFBQUVBQUFBQkFQQXlBUUFCQnlQb1BDdzJOQUFBQWpnQUFBSThBQUFDUUFFSGcrZzhMT1F3QUFBQ1JBQUFBQ0FBQUFBZ0FBQUJZOUFNQXE3VUFBQUFBQUFCQUFnQUFRQ3dFZ0VBQ2dBUUFBQUFBQUFBQUFKSUFBQUNUQUFBQUNBQkJwUHNQQ3pVSkFBQUFsQUFBQUFnQUFBQncvUU1BU0xVQUFJQUFBQUFDQUFBQXdDd0VnRUlDZ0FRQUFBQUFBQUFBQUpVQUFBQ1dBQUFBbHdCQjVQc1BDeU9TQUFBQW1BQUFBQWdBQUFBQS9BTUFqVDBBQUFnQUFRQUFBQUFBQ2dRQmdBQWdBZ0JCa1B3UEN5V1pBQUFBbWdBQUFKc0FBQUNjQUFBQW5RQUFBSjRBQUFDZkFBQUFvQUFBQUtFQUFBQ2lBRUhBL0E4TEpYY0FBQUNqQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FRZkQ4RHdzT3BBQUFBS1VBQUFCdy9RTUFpclVBUVlmOUR3c2FJa0FzQklCQUFvQW1BQUFBQUFBQUFBQ21BQUFBcHdBQUFLZ0FRYXo5RHdzMWtnQUFBS2tBQUFBSUFBQUFjUDBEQUdpMUFBQUFBQUFBQUFnQ0FFQXNCSUJBQ29JRUFBQUFBQUFBQUFDcUFBQUFxd0FBQUt3QVFlejlEd3V6QVpJQUFBQ3RBQUFBQ0FBQUFBRDhBd0JWc0FFQUFJQUFBQUJBQUFBQ2hBQ0FBR0FDQUFEOEF3QjRzQUVBSUFBQUFJQUFBQUFpQkFDQWdDQUNBQUQ4QXdER3NnRUFBQUFnQUFBQUFBUUNCQ0NBQUNBQ0JBRDhBd0Nrc2dFQUFBQUFBQUNBSUFBQ0JBQ0FBS0FpQUFEOEF3Q0NzZ0VBQUNBZ0FBQUFBQUFDSkNDQUFDQUNBQUQ4QXdEb3NnRUFBSUFBQUFBQWdBQUNoQUNBQUNDQ0FBRDhBd0JFc1FFQUFBQUFBQUFNQUFBQ0JBQ0FBQ3dDQUVHby93OExKWGNBQUFDdUFBQUFyd0FBQUxBQUFBQ3hBQUFBc2dBQUFMTUFBQUMwQUFBQXRRQUFBTFlBUWRqL0R3c2xkd0FBQUxjQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUJCaUlBUUN5VjNBQUFBdUFBQUFMa0FBQUM2QUFBQXV3QUFBTHdBQUFDOUFBQUF2Z0FBQUw4QUFBREFBRUc0Z0JBTEpYY0FBQURCQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FRZWlBRUFzbGR3QUFBTUlBQUFEREFBQUF4QUFBQU1VQUFBREdBQUFBeHdBQUFNZ0FBQURKQUFBQXlnQkJtSUVRQ3lWM0FBQUF5d0FBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFFSElnUkFMSlhjQUFBRE1BQUFBelFBQUFNNEFBQURQQUFBQTBBQUFBTkVBQUFEU0FBQUEwd0FBQU5RQVFmaUJFQXRKZHdBQUFOVUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFOWUFBQURYQUFBQTJBQUFBTmtBQUFEYUFBQUEyd0FBQU53QUFBRGRBQUFBM2dCQnpJSVFDeVYzQUFBQTN3QUFBT0FBQUFEaEFBQUE0Z0FBQU9NQUFBRGtBQUFBNVFBQUFPWUFBQURuQUVIOGdoQUxKWGNBQUFEb0FBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBUWF5REVBc2xkd0FBQU9rQUFBRHFBQUFBNndBQUFPd0FBQUR0QUFBQTdnQUFBTzhBQUFEd0FBQUE4UUJCM0lNUUN5VjNBQUFBOGdBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBRUdNaEJBTEpYY0FBQUR6QUFBQTlBQUFBUFVBQUFEMkFBQUE5d0FBQVBnQUFBRDVBQUFBK2dBQUFQc0FRYnlFRUFzbGR3QUFBUHdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQkI3SVFRQ3hyOUFBQUEvZ0FBQVA4QUFBQUFBUUFBQVFFQUFBSUJBQUFEQVFCQmtJVVFDeWI5QUFBQUJBRUFBQVVCQUFBR0FRQUFCd0VBQUFnQkFBQUpBUUFBQ2dFQUFBc0JBQUFNQVFCQndJVVFDeFlOQVFBQURnRUFBQThCQUFBUUFRQUFFUUVBQUJJQkFFSGdoUkFMSnhNQkFBQVVBUUFBRlFFQUFCWUJBQUJRbVFRQTRna0FBQUFBQUFGQUFBQUFBQVFFZ1dJQ2dBQkJrSVlRQ3c0WEFRQUFHQUVBQUJrQkFBQWFBUUJCcUlZUUN3NFRBUUFBR3dFQUFCd0JBQUFkQVFCQndJWVFDdzRUQVFBQUhnRUFBQjhCQUFBZ0FRQkIySVlRQ3c0VEFRQUFJUUVBQUNJQkFBQWpBUUJCOElZUUN3NFRBUUFBSkFFQUFDVUJBQUFtQVFCQmlJY1FDdzRUQVFBQUp3RUFBQ2dCQUFBcEFRQkJvSWNRQ3c0VEFRQUFLZ0VBQUNzQkFBQXNBUUJCdUljUUN3NFRBUUFBTFFFQUFDNEJBQUF2QVFCQjBJY1FDdzRUQVFBQU1BRUFBREVCQUFBeUFRQkI2SWNRQ3c0VEFRQUFNd0VBQURRQkFBQTFBUUJCZ0lnUUN3NFRBUUFBTmdFQUFEY0JBQUE0QVFCQm1JZ1FDdzRUQVFBQU9RRUFBRG9CQUFBN0FRQkJzSWdRQ3c0VEFRQUFQQUVBQUQwQkFBQStBUUJCeUlnUUN3NFRBUUFBUHdFQUFFQUJBQUJCQVFCQjRJZ1FDdzRUQVFBQVFnRUFBRU1CQUFCRUFRQkIrSWdRQ3c0VEFRQUFSUUVBQUVZQkFBQkhBUUJCa0lrUUN3NFRBUUFBU0FFQUFFa0JBQUJLQVFCQnFJa1FDdzRUQVFBQVN3RUFBRXdCQUFCTkFRQkJ3SWtRQ3c0VEFRQUFUZ0VBQUU4QkFBQlFBUUJCMklrUUN3NFRBUUFBVVFFQUFGSUJBQUJUQVFCQjhJa1FDdzRUQVFBQVZBRUFBRlVCQUFCV0FRQkJpSW9RQ3c0VEFRQUFWd0VBQUZnQkFBQlpBUUJCb0lvUUN3NFRBUUFBV2dFQUFGc0JBQUJjQVFCQnVJb1FDdzRUQVFBQVhRRUFBRjRCQUFCZkFRQkIwSW9RQ3c0VEFRQUFZQUVBQUdFQkFBQmlBUUJCNklvUUN3NFRBUUFBWXdFQUFHUUJBQUJsQVFCQmdJc1FDdzRUQVFBQVpnRUFBR2NCQUFCb0FRQkJtSXNRQ3c0VEFRQUFhUUVBQUdvQkFBQnJBUUJCc0lzUUN3NFRBUUFBYkFFQUFHMEJBQUJ1QVFCQnlJc1FDdzRUQVFBQWJ3RUFBSEFCQUFCeEFRQkI0SXNRQ3c0VEFRQUFjZ0VBQUhNQkFBQjBBUUJCK0lzUUN3NFRBUUFBZFFFQUFIWUJBQUIzQVFCQmtJd1FDdzRUQVFBQWVBRUFBSGtCQUFCNkFRQkJxSXdRQ3c0VEFRQUFld0VBQUh3QkFBQjlBUUJCd0l3UUN3NFRBUUFBZmdFQUFIOEJBQUNBQVFCQjJJd1FDdzRUQVFBQWdRRUFBSUlCQUFDREFRQkI4SXdRQ3c0VEFRQUFoQUVBQUlVQkFBQ0dBUUJCaUkwUUN3NFRBUUFBaHdFQUFJZ0JBQUNKQVFCQm9JMFFDdzRUQVFBQWlnRUFBSXNCQUFDTUFRQkJ1STBRQ3c0VEFRQUFqUUVBQUk0QkFBQ1BBUUJCMEkwUUN3NFRBUUFBa0FFQUFKRUJBQUNTQVFCQjZJMFFDdzRUQVFBQWt3RUFBSlFCQUFDVkFRQkJnSTRRQ3c0VEFRQUFsZ0VBQUpjQkFBQ1lBUUJCbUk0UUN3NFRBUUFBbVFFQUFKb0JBQUNiQVFCQnNJNFFDdzRUQVFBQW5BRUFBSjBCQUFDZUFRQkJ5STRRQ3c0VEFRQUFud0VBQUtBQkFBQ2hBUUJCNEk0UUN3NFRBUUFBb2dFQUFLTUJBQUNrQVFCQitJNFFDdzRUQVFBQXBRRUFBS1lCQUFDbkFRQkJrSThRQ3c0VEFRQUFxQUVBQUtrQkFBQ3FBUUJCcUk4UUN3NFRBUUFBcXdFQUFLd0JBQUN0QVFCQndJOFFDdzRUQVFBQXJnRUFBSzhCQUFDd0FRQkIySThRQ3c0VEFRQUFzUUVBQUxJQkFBQ3pBUUJCOEk4UUN3NFRBUUFBdEFFQUFMVUJBQUMyQVFCQmlKQVFDdzRUQVFBQXR3RUFBTGdCQUFDNUFRQkJvSkFRQ3c0VEFRQUF1Z0VBQUxzQkFBQzhBUUJCdUpBUUN3NFRBUUFBdlFFQUFMNEJBQUMvQVFCQjBKQVFDdzRUQVFBQXdBRUFBTUVCQUFEQ0FRQkI2SkFRQ3c0VEFRQUF3d0VBQU1RQkFBREZBUUJCZ0pFUUN3NFRBUUFBeGdFQUFNY0JBQURJQVFCQm1KRVFDdzRUQVFBQXlRRUFBTW9CQUFETEFRQkJzSkVRQ3c0VEFRQUF6QUVBQU0wQkFBRE9BUUJCeUpFUUN3NFRBUUFBendFQUFOQUJBQURSQVFCQjRKRVFDdzRUQVFBQTBnRUFBTk1CQUFEVUFRQkIrSkVRQ3c0VEFRQUExUUVBQU5ZQkFBRFhBUUJCa0pJUUN3NFRBUUFBMkFFQUFOa0JBQURhQVFCQnFKSVFDdzRUQVFBQTJ3RUFBTndCQUFEZEFRQkJ3SklRQ3c0VEFRQUEzZ0VBQU44QkFBRGdBUUJCMkpJUUN3NFRBUUFBNFFFQUFPSUJBQURqQVFCQjhKSVFDdzRUQVFBQTVBRUFBT1VCQUFEbUFRQkJpSk1RQ3c0VEFRQUE1d0VBQU9nQkFBRHBBUUJCb0pNUUN3NFhBUUFBNmdFQUFPc0JBQURzQVFCQnVKTVFDdzRYQVFBQTdRRUFBTzRCQUFEdkFRQkIwSk1RQ3c0WEFRQUE4QUVBQVBFQkFBRHlBUUJCNkpNUUN3NFhBUUFBOHdFQUFQUUJBQUQxQVFCQmdKUVFDdzRYQVFBQTlnRUFBUGNCQUFENEFRQkJtSlFRQ3c0WEFRQUErUUVBQVBvQkFBRDdBUUJCc0pRUUN3NFhBUUFBL0FFQUFQMEJBQUQrQVFCQnlKUVFDdzRYQVFBQS93RUFBQUFDQUFBQkFnQkI0SlFRQzU4SEZ3RUFBQUlDQUFBREFnQUFCQUlBQUFJQUFBRGdPZ1FBQWdBQUFEQTdCQUFDQUFBQWdEc0VBQUlBQUFEUU93UUFBZ0FBQUNBOEJBQUJBQUFBVUZJRUFBSUFBQUJ3UEFRQUFnQUFBTUE4QkFBQ0FBQUFFRDBFQUFJQUFBQmdQUVFBQWdBQUFMQTlCQUFDQUFBQUFENEVBQUlBQUFCUVBnUUFBZ0FBQUtBK0JBQUNBQUFBOEQ0RUFBSUFBQUJBUHdRQUFnQUFBSkEvQkFBQ0FBQUE0RDhFQUFFQUFBQjRVZ1FBQWdBQUFEQkFCQUFCQUFBQW9GSUVBQUlBQUFDQVFBUUFBUUFBQU1oU0JBQUJBQUFBOEZJRUFBRUFBQUFZVXdRQUFnQUFBTkJBQkFBQ0FBQUFJRUVFQUFJQUFBQndRUVFBQWdBQUFNQkJCQUFDQUFBQUVFSUVBQUlBQUFCZ1FnUUFBZ0FBQUxCQ0JBQUNBQUFBQUVNRUFBSUFBQUJRUXdRQUFRQUFBRUJUQkFBQ0FBQUFvRU1FQUFJQUFBRHdRd1FBQWdBQUFFQkVCQUFDQUFBQWtFUUVBQUlBQUFEZ1JBUUFBZ0FBQURCRkJBQUNBQUFBZ0VVRUFBSUFBQURRUlFRQUFnQUFBQ0JHQkFBQ0FBQUFjRVlFQUFJQUFBREFSZ1FBQWdBQUFCQkhCQUFDQUFBQVlFY0VBQUlBQUFDd1J3UUFBZ0FBQUFCSUJBQUNBQUFBVUVnRUFBSUFBQUNnU0FRQUF3QUFBSmczQkFBQ0FBQUE4RWdFQUFFQUFBQm9Vd1FBQVFBQUFKQlRCQUFCQUFBQXVGTUVBQUVBQUFEZ1V3UUFBUUFBQUFoVUJBQUJBQUFBTUZRRUFBSUFBQUJBU1FRQUFnQUFBSkJKQkFBQ0FBQUE0RWtFQUFFQUFBQllWQVFBQVFBQUFJQlVCQUFDQUFBQU1Fb0VBQUlBQUFDQVNnUUFBZ0FBQU5CS0JBQURBQUFBRURnRUFBSUFBQUFnU3dRQUFnQUFBSEJMQkFBQ0FBQUF3RXNFQUFJQUFBQVFUQVFBQWdBQUFHQk1CQUFDQUFBQXNFd0VBQUVBQUFDb1ZBUUFBZ0FBQUFCTkJBQUNBQUFBVUUwRUFBRUFBQURRVkFRQUFnQUFBS0JOQkFBQkFBQUErRlFFQUFFQUFBQWdWUVFBQVFBQUFFaFZCQUFCQUFBQWNGVUVBQUVBQUFDWVZRUUFBUUFBQU1CVkJBQUJBQUFBNkZVRUFCc0FBQUF3RGdRQURBQUFBSEFaQkFBR0FBQUFnQ2NFQUFVQUFBREFNZ1FBQ2dBQUFCQWZCQUFDQUFBQThFMEVBQThBQUFEb0ZBUUFDQUFBQUFBbEJBQUdBQUFBY0NnRUFBWUFBQUJnS1FRQUNBQUFBRUFtQkFBT0FBQUFRQmNFQUFJQUFBQkFUZ1FBREFBQUFGQWJCQUFKQUFBQU1DSUVBQUVBQUFBUVZnUUFBUUFBQURoV0JBQUJBQUFBWUZZRUFBRUFBQUNJVmdRQUFRQUFBTEJXQkFBQkFBQUEyRllFQUFFQUFBQUFWd1FBQVFBQUFDaFhCQUFCQUFBQVVGY0VBQUVBQUFCNFZ3UUFBUUFBQUtCWEJBQUJBQUFBeUZjRUFFR0luQkFMR2dVQ0FBQUdBZ0FBQndJQUFBZ0NBQUFKQWdBQUNnSUFBQXNDQUVHd25CQUxHUUVCQUFCd1dBUUE4RmtFQUhoMkJBQXBQd01BQUFBQUFQRUFRZGljRUFzWkFnSUFBTkJZQkFEd1dRUUFzRzBFQUNrL0F3QUFBQUFBOFFCQmdKMFFDeGtCQVFBQWNGZ0VBUEJaQkFDQWRnUUFPRDhEQUFBQUFBRHhBRUdvblJBTEdRSUNBQURRV0FRQThGa0VBTUJ0QkFBNFB3TUFBQUFBQVBFQVFkQ2RFQXNaQVFFQUFIQllCQUR3V1FRQWlIWUVBRGcvQXdBQUFBQUE4UUJCK0owUUN4a0NBZ0FBMEZnRUFQQlpCQURRYlFRQU9EOERBQUFBQUFEeEFFR2duaEFMR1FFQkFBQndXQVFBOEZrRUFKQjJCQUErUHdNQUFBQUFBUEVBUWNpZUVBc1pBZ0lBQU5CWUJBRHdXUVFBNEcwRUFENC9Bd0FBQUFBQThRQkI4SjRRQ3hrQkFRQUFjRmdFQVBCWkJBQ1lkZ1FBT0Q4REFBQUFBQUR4QUVHWW54QUxHUUlDQUFEUVdBUUE4RmtFQVBCdEJBQTRQd01BQUFBQUFQRUFRY0NmRUFzWkFRRUFBSEJZQkFEd1dRUUFvSFlFQURnL0F3QUFBQUFBOFFCQjZKOFFDeGtDQWdBQTBGZ0VBUEJaQkFBQWJnUUFPRDhEQUFBQUFBRHhBRUdRb0JBTEdRRUJBQUJ3V0FRQThGa0VBS2gyQkFBNFB3TUFBQUFBQVBFQVFiaWdFQXNaQVFBQUFLQlpCQUR3V1FRQXNIWUVBRGcvQXdBQUFBQUE4UUJCNEtBUUN4a0NBUUFBaUZnRUFQQlpCQUFRYmdRQU9EOERBQUFBQUFEeEFFR0lvUkFMR1FFQUFBQ2dXUVFBOEZrRUFMaDJCQUE0UHdNQUFBQUFBUEVBUWJDaEVBc1pBZ0VBQUloWUJBRHdXUVFBSUc0RUFEZy9Bd0FBQUFBQThRQkIyS0VRQ3hrQkFBQUFvRmtFQVBCWkJBREFkZ1FBT0Q4REFBQUFBQUR4QUVHQW9oQUxHUUlCQUFDSVdBUUE4RmtFQURCdUJBQTRQd01BQUFBQUFQRUFRYWlpRUFzWkFRQUFBS0JaQkFEd1dRUUF5SFlFQURnL0F3QUFBQUFBOFFCQjBLSVFDeGtDQVFBQWlGZ0VBUEJaQkFCQWJnUUFPRDhEQUFBQUFBRHhBRUg0b2hBTEdRRUFBQUNnV1FRQThGa0VBTkIyQkFBNFB3TUFBQUFBQVBFQVFhQ2pFQXNaQVFBQ0FLQlpCQURRV1FRQTJIWUVBQ2svQXdBQUFBQUE4UUJCeUtNUUN4a0JBQUlBb0ZrRUFOQlpCQURnZGdRQU9EOERBQUFBQUFEeEFFSHdveEFMR1FFQUFnQ2dXUVFBMEZrRUFPaDJCQUE0UHdNQUFBQUFBUEVBUVppa0VBc1pBUUFDQUtCWkJBRFFXUVFBOEhZRUFENC9Bd0FBQUFBQThRQkJ3S1FRQ3hrQkFBQUFvRmtFQVBCWkJBRDRkZ1FBT0Q4REFBQUFBQUR4QUVIc3BCQUxsUVdnV1FRQThGa0VBS0I1QkFCd1B3TUFBQUFBQVBRQUFBQUFBQUFBREFJQUFBQUFBQUFBQVFBQWtGa0VBUEJaQkFDZ2VRUUFSajhEQUFBQUFBRDBBQUFBQUFBQUFBd0NBQUFBQUFBQUFRRUFBRWhaQkFEd1dRUUFpSGdFQUVZL0F3QUFBQUFBOUFBQUFBQUFBQUFOQWdBQUFBQUFBQUVCQUFCSVdRUUE4RmtFQUpCNEJBQkdQd01BQUFBQUFQUUFBQUFBQUFBQURnSUFBQUFBQUFBRUFRQUFTRmtFQVBCWkJBQklad1FBUmo4REFBQUFBQUQwQUFBQUFBQUFBQThDQUFBQUFBQUFBd0VBQUVoWkJBRHdXUVFBOEdzRUFFWS9Bd0FBQUFBQTlBQUFBQUFBQUFBUUFnQUFBQUFBQUFNQkFBQklXUVFBOEZrRUFBaHNCQUJHUHdNQUFBQUFBUFFBQUFBQUFBQUFFQUlBQUFBQUFBQURBUUFBU0ZrRUFQQlpCQUFnYkFRQVJqOERBQUFBQUFEMEFBQUFBQUFBQUJBQ0FBQUFBQUFBQWdFQUFFaFpCQUR3V1FRQWtISUVBRVkvQXdBQUFBQUE5QUFBQUFBQUFBQVFBZ0FBQUFBQUFBSUJBQUJJV1FRQThGa0VBS0J5QkFCR1B3TUFBQUFBQVBRQUFBQUFBQUFBRUFJQUFBQUFBQUFDQVFBQVNGa0VBUEJaQkFDd2NnUUFSajhEQUFBQUFBRDBBQUFBQUFBQUFCQUNBQUFBQUFBQUFRSUFBT0JZQkFEd1dRUUFtSGdFQURJL0F3QUFBQUFBK0FBQUFBQUFBQUFSQWdBQUFBQUFBQUVDQUFEd1dBUUE4RmtFQUtCNEJBQjBQd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFnQUFBRmtFQVBCWkJBQ29lQVFBV2o4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBUUlBQUJCWkJBRHdXUVFBc0hnRUFGdy9Bd0FBQUFBQStBQUFBQUFBQUFBUkFnQUFBQUFBQUFFQ0FBQWdXUVFBOEZrRUFMaDRCQUIyUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQURBQUFBb0ZrRUFQQlpCQUNZYVFRQU1qOERBQUFBQUFDaEFFR1FxaEFMR1FNQUFBQ2dXUVFBOEZrRUFMQnBCQUF5UHdNQUFBQUFBS0VBUWJpcUVBc1pCQUFBQUtCWkJBRHdXUVFBU0dRRUFESS9Bd0FBQUFBQW9RQkI0S29RQ3hrRUFRQUFnRmdFQVBCWkJBQm9aQVFBTWo4REFBQUFBQUNoQUVHSXF4QUxHUVVCQUFDQVdBUUE4RmtFQUxoZkJBQXlQd01BQUFBQUFLRUFRYkNyRUFzWkF3QUFBS0JaQkFEd1dRUUF5R2tFQURJL0F3QUFBQUFBb1FCQjJLc1FDeGtFQUFBQW9Ga0VBUEJaQkFDSVpBUUFNajhEQUFBQUFBQ2hBRUdBckJBTEdRTUFBQUNnV1FRQThGa0VBT0JwQkFBeVB3TUFBQUFBQUtFQVFhaXNFQXNaQkFFQUFJQllCQUR3V1FRQXFHUUVBREkvQXdBQUFBQUFvUUJCMEt3UUN4a0RBQUFBb0ZrRUFQQlpCQUQ0YVFRQTZqNERBQUFBQUFDaEFFSDRyQkFMR1FRQUFBQ2dXUVFBOEZrRUFNaGtCQURxUGdNQUFBQUFBS0VBUWFDdEVBc1pCQUVBQUlCWUJBRHdXUVFBNkdRRUFPbytBd0FBQUFBQW9RQkJ5SzBRQ3hrRkFRQUFnRmdFQVBCWkJBRGdYd1FBNmo0REFBQUFBQUNoQUVId3JSQUxHUU1BQUFDZ1dRUUE4RmtFQUJCcUJBRHFQZ01BQUFBQUFLRUFRWml1RUFzWkJBRUFBSUJZQkFEd1dRUUFDR1VFQU9vK0F3QUFBQUFBb1FCQndLNFFDeGtFQUFBQW9Ga0VBUEJaQkFBSVpnUUFNajhEQUFBQUFBRHhBRUhvcmhBTEdRVUFBQUNnV1FRQThGa0VBQkJpQkFBeVB3TUFBQUFBQVBFQVFaQ3ZFQXNaQlFFQUFJQllCQUR3V1FRQU9HSUVBREkvQXdBQUFBQUE4UUJCdUs4UUN4a0dBUUFBZ0ZnRUFQQlpCQURnWFFRQU1qOERBQUFBQUFEeEFFSGdyeEFMR1FRQUFBQ2dXUVFBOEZrRUFDaG1CQUF5UHdNQUFBQUFBUEVBUVlpd0VBc1pCUUFBQUtCWkJBRHdXUVFBWUdJRUFESS9Bd0FBQUFBQThRQkJzTEFRQ3hrRUFBQUFvRmtFQVBCWkJBQklaZ1FBTWo4REFBQUFBQUR4QUVIWXNCQUxHUVVCQUFDQVdBUUE4RmtFQUloaUJBQXlQd01BQUFBQUFQRUFRWUN4RUFzWkJBRUFBSWhZQkFEd1dRUUFhR1lFQU9vK0F3QUFBQUFBOFFCQnFMRVFDeGtGQVFBQWlGZ0VBUEJaQkFDd1lnUUE2ajREQUFBQUFBRHhBRUhRc1JBTEdRVUNBQUNBV0FRQThGa0VBTmhpQkFEcVBnTUFBQUFBQVBFQVFmaXhFQXNaQmdJQUFJQllCQUR3V1FRQUVGNEVBT28rQXdBQUFBQUE4UUJCb0xJUUN4a0VBUUFBaUZnRUFQQlpCQUNJWmdRQTZqNERBQUFBQUFEeEFFSElzaEFMR1FVQ0FBQ0FXQVFBOEZrRUFBQmpCQURxUGdNQUFBQUFBUEVBUWZDeUVBc1pCQUlBQUhCWUJBRHdXUVFBYUdNRUFFWS9Bd0FBQUFBQThRQkJtTE1RQ3hrRkFnQUFjRmdFQVBCWkJBQ2dYZ1FBUmo4REFBQUFBQUR4QUVIQXN4QUxHUVVEQUFCd1dBUUE4RmtFQU1oZUJBQkdQd01BQUFBQUFQRUFRZWl6RUFzWkJnTUFBSEJZQkFEd1dRUUFNRndFQUVZL0F3QUFBQUFBOFFCQmtMUVFDeGtFQWdBQWNGZ0VBUEJaQkFDSVl3UUFSajhEQUFBQUFBRHhBRUc0dEJBTEdRVURBQUJ3V0FRQThGa0VBUEJlQkFCR1B3TUFBQUFBQVBFQVFlQzBFQXNaQXdBQUFLQlpCQUR3V1FRQWFHa0VBREkvQXdBQUFBQUE4UUJCaUxVUUN4a0VBQUFBb0ZrRUFQQlpCQUNvWXdRQU1qOERBQUFBQUFEeEFFR3d0UkFMR1FRQkFBQ0FXQVFBOEZrRUFNaGpCQUF5UHdNQUFBQUFBUEVBUWRpMUVBc1pCUUVBQUlCWUJBRHdXUVFBR0Y4RUFESS9Bd0FBQUFBQThRQkJnTFlRQ3hrREFBQUFvRmtFQVBCWkJBQ0FhUVFBTWo4REFBQUFBQUR4QUVHb3RoQUxHUVFCQUFDQVdBUUE4RmtFQU9oakJBQXlQd01BQUFBQUFQRUFRZEMyRUFzUEF3RUFBSGhZQkFEd1dRUUFXR29FQUVIb3RoQUxBWEVBUWZpMkVBc1BBd0VBQUhoWUJBRHdXUVFBY0dvRUFFR1F0eEFMQVhFQVFhQzNFQXNQQkFJQUFIaFlCQUR3V1FRQXFHWUVBRUc0dHhBTEFYRUFRY2kzRUFzUEF3RUFBSGhZQkFEd1dRUUFpR29FQUVIZ3R4QUxBWEVBUWZDM0VBc1BBd0VBQUhoWUJBRHdXUVFBb0dvRUFFR0l1QkFMQVhFQVFaaTRFQXNQQXdFQUFIaFlCQUR3V1FRQXVHb0VBRUd3dUJBTEFYRUFRY0M0RUFzUEJBSUFBSGhZQkFEd1dRUUF5R1lFQUVIWXVCQUxBWEVBUWVpNEVBc1BBd0VBQUhoWUJBRHdXUVFBMEdvRUFFR0F1UkFMQVhFQVFaQzVFQXNQQXdFQUFIaFlCQUR3V1FRQTZHb0VBRUdvdVJBTEFYRUFRYmk1RUFzUEF3RUFBSGhZQkFEd1dRUUFBR3NFQUVIUXVSQUxBWEVBUWVDNUVBc1BCQUlBQUhoWUJBRHdXUVFBNkdZRUFFSDR1UkFMQVhFQVFZaTZFQXNQQXdFQUFIaFlCQUR3V1FRQUdHc0VBRUdndWhBTEFYRUFRYlM2RUF2MUE2QlpCQUR3V1FRQW9Ia0VBR28vQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBQUJBQUNRV1FRQThGa0VBS0I1QkFBcVB3TUFBQUFBQVBRQUFBQUFBQUFBREFJQUFBQUFBQUFCQVFBQVNGa0VBUEJaQkFCUWVBUUFLajhEQUFBQUFBRDBBQUFBQUFBQUFBMENBQUFBQUFBQUFRRUFBRWhaQkFEd1dRUUFXSGdFQUNvL0F3QUFBQUFBOUFBQUFBQUFBQUFPQWdBQUFBQUFBQU1CQUFCSVdRUUE4RmtFQU5ockJBQXFQd01BQUFBQUFQUUFBQUFBQUFBQUR3SUFBQUFBQUFBQ0FRQUFTRmtFQVBCWkJBQndjZ1FBS2o4REFBQUFBQUQwQUFBQUFBQUFBQkFDQUFBQUFBQUFBZ0VBQUVoWkJBRHdXUVFBZ0hJRUFDby9Bd0FBQUFBQTlBQUFBQUFBQUFBUUFnQUFBQUFBQUFFQ0FBRGdXQVFBOEZrRUFHQjRCQUJLUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBZ0FBOEZnRUFQQlpCQUJvZUFRQWJEOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQVFJQUFBQlpCQUR3V1FRQWNIZ0VBRlEvQXdBQUFBQUErQUFBQUFBQUFBQVJBZ0FBQUFBQUFBRUNBQUFRV1FRQThGa0VBSGg0QkFBK1B3TUFBQUFBQVBnQUFBQUFBQUFBRVFJQUFBQUFBQUFCQWdBQUlGa0VBUEJaQkFDQWVBUUFiajhEQUFBQUFBRDRBQUFBQUFBQUFCRUNBQUFBQUFBQUFRRUFBSEJZQkFEd1dRUUFLSGNFQUNrL0F3QUFBQUFBOFFCQnVMNFFDeGtCQVFBQWNGZ0VBUEJaQkFBd2R3UUFLVDhEQUFBQUFBRHhBRUhndmhBTEdRRUJBQUJ3V0FRQThGa0VBRGgzQkFBcFB3TUFBQUFBQVBFQVFZaS9FQXNaQVFFQUFIQllCQUR3V1FRQVFIY0VBQ2svQXdBQUFBQUE4UUJCc0w4UUN4a0JBUUFBY0ZnRUFQQlpCQUJJZHdRQUtUOERBQUFBQUFEeEFFSFl2eEFMR1FFQkFBQndXQVFBOEZrRUFGQjNCQUFwUHdNQUFBQUFBUEVBUVlEQUVBc1pBUUFBQUtCWkJBRHdXUVFBV0hjRUFDay9Bd0FBQUFBQThRQkJxTUFRQ3hrQkFBQUFvRmtFQVBCWkJBQmdkd1FBS1Q4REFBQUFBQUR4QUVIUXdCQUxHUUVBQUFDZ1dRUUE4RmtFQUdoM0JBQXBQd01BQUFBQUFQRUFRZmpBRUFzWkFRQUFBS0JaQkFEd1dRUUFjSGNFQUNrL0F3QUFBQUFBOFFCQnBNRVFDNlVEb0ZrRUFQQlpCQUNnZVFRQVpEOERBQUFBQUFEMEFBQUFBQUFBQUF3Q0FBQUFBQUFBQUFFQUFKQlpCQUR3V1FRQW9Ia0VBTmMrQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBRUJBQUJJV1FRQThGa0VBQmg0QkFEWFBnTUFBQUFBQVBRQUFBQUFBQUFBRFFJQUFBQUFBQUFCQVFBQVNGa0VBUEJaQkFBZ2VBUUExejREQUFBQUFBRDBBQUFBQUFBQUFBNENBQUFBQUFBQUFnRUFBRWhaQkFEd1dRUUFZSElFQU5jK0F3QUFBQUFBOUFBQUFBQUFBQUFQQWdBQUFBQUFBQUVDQUFEZ1dBUUE4RmtFQUNoNEJBQXdQd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFnQUE4RmdFQVBCWkJBQXdlQVFBWmo4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBUUlBQUFCWkJBRHdXUVFBT0hnRUFFZy9Bd0FBQUFBQStBQUFBQUFBQUFBUkFnQUFBQUFBQUFFQ0FBQVFXUVFBOEZrRUFFQjRCQUE0UHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBZ0FBSUZrRUFQQlpCQUJJZUFRQWFEOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQXdNQUFKQllCQUR3V1FRQU1Hc0VBRVkvQXdBQUFBQUE4UUJCMk1RUUN4a0RBd0FBa0ZnRUFQQlpCQUJJYXdRQVJqOERBQUFBQUFEeEFFR0F4UkFMR1FRRUFBQndXQVFBOEZrRUFBaG5CQUJHUHdNQUFBQUFBUEVBUWFqRkVBc1pBd01BQUpCWUJBRHdXUVFBWUdzRUFFWS9Bd0FBQUFBQThRQkIwTVVRQ3hrREF3QUFxRmdFQVBCWkJBQjRhd1FBUmo4REFBQUFBQUR4QUVINHhSQUxHUU1DQUFDWVdBUUE4RmtFQUpCckJBRHFQZ01BQUFBQUFQRUFRYURHRUFzWkJBTUFBSGhZQkFEd1dRUUFLR2NFQU9vK0F3QUFBQUFBOFFCQnlNWVFDeGtEQWdBQXNGZ0VBUEJaQkFDb2F3UUE2ajREQUFBQUFBRHhBRUh3eGhBTEdRSUJBQUI0V0FRQThGa0VBRkJ1QkFBeVB3TUFBQUFBQVBFQVFaakhFQXVCQXdJQkFBQXdXUVFBOEZrRUFKQnZCQUREUGdNQUFBQUFBUElBQUFBQUFBQUFFZ0lBQUFBQUFBQUNBUUVBTUZrRUFNQlpCQUNnYndRQTRqNERBQUFBQUFEeUFBQUFBQUFBQUJJQ0FBQUFBQUFBQWdFQkFEQlpCQURBV1FRQXNHOEVBT0krQXdBQUFBQUE4Z0FBQUFBQUFBQVNBZ0FBQUFBQUFBSUJBUUF3V1FRQXdGa0VBTUJ2QkFEaVBnTUFBQUFBQVBJQUFBQUFBQUFBRWdJQUFBQUFBQUFDQVFJQXdGZ0VBTUJaQkFEUWJ3UUF6ajREQUFBQUFBRHlBQUFBQUFBQUFCSUNBQUFBQUFBQUFnRUNBTUJZQkFEQVdRUUE0RzhFQU00K0F3QUFBQUFBOGdBQUFBQUFBQUFTQWdBQUFBQUFBQUlCQWdEQVdBUUFxRmtFQVBCdkJBQWtQd01BQUFBQUFQSUFBQUFBQUFBQUV3SUFBQUFBQUFBQ0FRSUF3RmdFQUtoWkJBQUFjQVFBNGo0REFBQUFBQUR5QUFBQUFBQUFBQlFDQUFBQUFBQUFBZ0VEQU1CWUJBQ2dXUVFBRUhBRUFONCtBd0FBQUFBQThnQUFBQUFBQUFBVkFnQUFBQUFBQUFRQUFBQ2dXUVFBOEZrRUFDaGxCQUF5UHdNQUFBQUFBS0VBUWFqS0VBc1pCUUFBQUtCWkJBRHdXUVFBQ0dBRUFESS9Bd0FBQUFBQW9RQkIwTW9RQ3hrRkFRQUFnRmdFQVBCWkJBQXdZQVFBTWo4REFBQUFBQUNoQUVINHloQUxHUVlCQUFDQVdBUUE4RmtFQUpCY0JBQXlQd01BQUFBQUFLRUFRYURMRUFzWkJBQUFBS0JaQkFEd1dRUUFTR1VFQURJL0F3QUFBQUFBb1FCQnlNc1FDeGtGQUFBQW9Ga0VBUEJaQkFCWVlBUUFNajhEQUFBQUFBQ2hBRUh3eXhBTEdRUUFBQUNnV1FRQThGa0VBR2hsQkFBeVB3TUFBQUFBQUtFQVFaak1FQXNaQlFFQUFJQllCQUR3V1FRQWdHQUVBREkvQXdBQUFBQUFvUUJCd013UUN4a0ZBQUFBb0ZrRUFQQlpCQUNZWVFRQU1qOERBQUFBQUFEeEFFSG96QkFMR1FZQUFBQ2dXUVFBOEZrRUFDQmRCQUF5UHdNQUFBQUFBUEVBUVpETkVBc1pCZ0VBQUlCWUJBRHdXUVFBVUYwRUFESS9Bd0FBQUFBQThRQkJ1TTBRQ3hrSEFRQUFnRmdFQVBCWkJBRDRXd1FBTWo4REFBQUFBQUR4QUVIZ3pSQUxHUVVBQUFDZ1dRUUE4RmtFQU1CaEJBQXlQd01BQUFBQUFQRUFRWWpPRUFzWkJnQUFBS0JaQkFEd1dRUUFnRjBFQURJL0F3QUFBQUFBOFFCQnNNNFFDeGtGQUFBQW9Ga0VBUEJaQkFEb1lRUUFNajhEQUFBQUFBRHhBRUhZemhBTEdRWUJBQUNBV0FRQThGa0VBTEJkQkFBeVB3TUFBQUFBQVBFQVFZRFBFQXNaQkFBQUFLQlpCQUR3V1FRQUNHUUVBREkvQXdBQUFBQUE4UUJCcU04UUN4a0ZBQUFBb0ZrRUFQQlpCQUJBWHdRQU1qOERBQUFBQUFEeEFFSFF6eEFMR1FVQkFBQ0FXQVFBOEZrRUFHaGZCQUF5UHdNQUFBQUFBUEVBUWZqUEVBc1pCZ0VBQUlCWUJBRHdXUVFBWUZ3RUFESS9Bd0FBQUFBQThRQkJvTkFRQ3hrRUFBQUFvRmtFQVBCWkJBQW9aQVFBTWo4REFBQUFBQUR4QUVISTBCQUxHUVVCQUFDQVdBUUE4RmtFQUpCZkJBQXlQd01BQUFBQUFQRUFRZkRRRUFzWkJBQUFBS0JaQkFEd1dRUUFpR1VFQU9vK0F3QUFBQUFBb1FCQm1ORVFDeGtGQUFBQW9Ga0VBUEJaQkFDb1lBUUE2ajREQUFBQUFBQ2hBRUhBMFJBTEdRVUJBQUNBV0FRQThGa0VBTkJnQkFEcVBnTUFBQUFBQUtFQVFlalJFQXNaQmdFQUFJQllCQUR3V1FRQXdGd0VBT28rQXdBQUFBQUFvUUJCa05JUUN4a0VBQUFBb0ZrRUFQQlpCQUNvWlFRQTZqNERBQUFBQUFDaEFFRzQwaEFMR1FVQkFBQ0FXQVFBOEZrRUFQaGdCQURxUGdNQUFBQUFBS0VBUWVEU0VBc1pCQUFBQUtCWkJBRHdXUVFBeUdVRUFPbytBd0FBQUFBQThRQkJpTk1RQ3hrRkFBQUFvRmtFQVBCWkJBQWdZUVFBNmo0REFBQUFBQUR4QUVHdzB4QUxHUVVCQUFDQVdBUUE4RmtFQUVoaEJBRHFQZ01BQUFBQUFQRUFRZGpURUFzWkJnRUFBSUJZQkFEd1dRUUE4RndFQU9vK0F3QUFBQUFBOFFCQmdOUVFDeGtFQUFBQW9Ga0VBUEJaQkFEb1pRUUE2ajREQUFBQUFBRHhBRUdvMUJBTEdRVUJBQUNBV0FRQThGa0VBSEJoQkFEcVBnTUFBQUFBQVBFQVFkSFVFQXVJRVFFQUFKaFpCQUR3V1FRQW9Ia0VBSGcvQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBRUJBQUNZV1FRQThGa0VBTUI0QkFCNFB3TUFBQUFBQVBRQUFBQUFBQUFBRFFJQUFBQUFBQUFFQVFBQXdGZ0VBUEJaQkFCb1p3UUFlRDhEQUFBQUFBRDBBQUFBQUFBQUFCWUNBQUFBQUFBQUFnRUFBTUJZQkFEd1dRUUF3SElFQUhnL0F3QUFBQUFBOUFBQUFBQUFBQUFYQWdBQUFBQUFBQUVCQUFEd1dBUUE4RmtFQU1oNEJBQjhQd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFRQUE0RmdFQVBCWkJBRFFlQVFBZWo4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBQUVBQUpoWkJBRHdXUVFBb0hrRUFINC9Bd0FBQUFBQTlBQUFBQUFBQUFBTUFnQUFBQUFBQUFFQkFBQ1lXUVFBOEZrRUFOaDRCQUIrUHdNQUFBQUFBUFFBQUFBQUFBQUFEUUlBQUFBQUFBQUdBUUFBd0ZnRUFQQlpCQUJBWGdRQWZqOERBQUFBQUFEMEFBQUFBQUFBQUJZQ0FBQUFBQUFBQWdFQUFNQllCQUR3V1FRQTBISUVBSDQvQXdBQUFBQUE5QUFBQUFBQUFBQVhBZ0FBQUFBQUFBRUJBQUR3V0FRQThGa0VBT0I0QkFDQ1B3TUFBQUFBQVBnQUFBQUFBQUFBRVFJQUFBQUFBQUFCQVFBQTRGZ0VBUEJaQkFEb2VBUUFnRDhEQUFBQUFBRDRBQUFBQUFBQUFCRUNBQUFBQUFBQUFBRUFBSmhaQkFEd1dRUUFvSGtFQUlRL0F3QUFBQUFBOUFBQUFBQUFBQUFNQWdBQUFBQUFBQUVCQUFDWVdRUUE4RmtFQVBCNEJBQ0VQd01BQUFBQUFQUUFBQUFBQUFBQURRSUFBQUFBQUFBSUFRQUF3RmdFQVBCWkJBQjRXd1FBaEQ4REFBQUFBQUQwQUFBQUFBQUFBQllDQUFBQUFBQUFBZ0VBQU1CWUJBRHdXUVFBNEhJRUFJUS9Bd0FBQUFBQTlBQUFBQUFBQUFBWEFnQUFBQUFBQUFFQkFBRHdXQVFBOEZrRUFQaDRCQUNJUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBUUFBNEZnRUFQQlpCQUFBZVFRQWhqOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQUFFQUFKaFpCQUR3V1FRQW9Ia0VBSW8vQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBRUJBQUNZV1FRQThGa0VBQWg1QkFDS1B3TUFBQUFBQVBRQUFBQUFBQUFBRFFJQUFBQUFBQUFHQVFBQXdGZ0VBUEJaQkFCd1hnUUFpajhEQUFBQUFBRDBBQUFBQUFBQUFCWUNBQUFBQUFBQUF3RUFBTUJZQkFEd1dRUUFPR3dFQUlvL0F3QUFBQUFBOUFBQUFBQUFBQUFYQWdBQUFBQUFBQUVCQUFEd1dBUUE4RmtFQUJCNUJBQ09Qd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFRQUE0RmdFQVBCWkJBQVllUVFBakQ4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBQUVBQUpoWkJBRHdXUVFBb0hrRUFKQS9Bd0FBQUFBQTlBQUFBQUFBQUFBTUFnQUFBQUFBQUFFQkFBQ1lXUVFBOEZrRUFDQjVCQUNRUHdNQUFBQUFBUFFBQUFBQUFBQUFEUUlBQUFBQUFBQUpBUUFBd0ZnRUFQQlpCQUF3V3dRQWtEOERBQUFBQUFEMEFBQUFBQUFBQUJZQ0FBQUFBQUFBQXdFQUFNQllCQUR3V1FRQVVHd0VBSkEvQXdBQUFBQUE5QUFBQUFBQUFBQVhBZ0FBQUFBQUFBRUJBQUR3V0FRQThGa0VBQ2g1QkFDVVB3TUFBQUFBQVBnQUFBQUFBQUFBRVFJQUFBQUFBQUFCQVFBQTRGZ0VBUEJaQkFBd2VRUUFrajhEQUFBQUFBRDRBQUFBQUFBQUFCRUNBQUFBQUFBQUFBRUFBSmhaQkFEd1dRUUFvSGtFQUpZL0F3QUFBQUFBOUFBQUFBQUFBQUFNQWdBQUFBQUFBQUVCQUFDWVdRUUE4RmtFQURoNUJBQ1dQd01BQUFBQUFQUUFBQUFBQUFBQURRSUFBQUFBQUFBTUFRQUF3RmdFQVBCWkJBQndXZ1FBbGo4REFBQUFBQUQwQUFBQUFBQUFBQllDQUFBQUFBQUFBd0VBQU1CWUJBRHdXUVFBYUd3RUFKWS9Bd0FBQUFBQTlBQUFBQUFBQUFBWEFnQUFBQUFBQUFFQkFBRHdXQVFBOEZrRUFFQjVCQUNhUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBUUFBNEZnRUFQQlpCQUJJZVFRQW1EOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQUFFQUFKaFpCQUR3V1FRQW9Ia0VBSncvQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBRUJBQUNZV1FRQThGa0VBRkI1QkFDY1B3TUFBQUFBQVBRQUFBQUFBQUFBRFFJQUFBQUFBQUFJQVFBQXdGZ0VBUEJaQkFDNFd3UUFuRDhEQUFBQUFBRDBBQUFBQUFBQUFCWUNBQUFBQUFBQUJBRUFBTUJZQkFEd1dRUUFpR2NFQUp3L0F3QUFBQUFBOUFBQUFBQUFBQUFYQWdBQUFBQUFBQUVCQUFEd1dBUUE4RmtFQUZoNUJBQ2dQd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFRQUE0RmdFQVBCWkJBQmdlUVFBbmo4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBQUVBQUpoWkJBRHdXUVFBb0hrRUFLSS9Bd0FBQUFBQTlBQUFBQUFBQUFBTUFnQUFBQUFBQUFFQkFBQ1lXUVFBOEZrRUFHaDVCQUNpUHdNQUFBQUFBUFFBQUFBQUFBQUFEUUlBQUFBQUFBQU1BUUFBd0ZnRUFQQlpCQURRV2dRQW9qOERBQUFBQUFEMEFBQUFBQUFBQUJZQ0FBQUFBQUFBQkFFQUFNQllCQUR3V1FRQXFHY0VBS0kvQXdBQUFBQUE5QUFBQUFBQUFBQVhBZ0FBQUFBQUFBRUJBQUR3V0FRQThGa0VBSEI1QkFDbVB3TUFBQUFBQVBnQUFBQUFBQUFBRVFJQUFBQUFBQUFCQVFBQTRGZ0VBUEJaQkFCNGVRUUFwRDhEQUFBQUFBRDRBQUFBQUFBQUFCRUNBQUFBQUFBQUFBRUFBSmhaQkFEd1dRUUFvSGtFQUtnL0F3QUFBQUFBOUFBQUFBQUFBQUFNQWdBQUFBQUFBQUVCQUFDWVdRUUE4RmtFQUlCNUJBQ29Qd01BQUFBQUFQUUFBQUFBQUFBQURRSUFBQUFBQUFBUUFRQUF3RmdFQVBCWkJBRHdXUVFBcUQ4REFBQUFBQUQwQUFBQUFBQUFBQllDQUFBQUFBQUFCQUVBQU1CWUJBRHdXUVFBeUdjRUFLZy9Bd0FBQUFBQTlBQUFBQUFBQUFBWEFnQUFBQUFBQUFFQkFBRHdXQVFBOEZrRUFJaDVCQUNzUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBUUFBNEZnRUFQQlpCQUNRZVFRQXFqOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQVFFQUFIQllCQUR3V1FRQUFIY0VBQ2svQXdBQUFBQUE4UUJCNk9VUUN4a0JBUUFBY0ZnRUFQQlpCQUFJZHdRQUtUOERBQUFBQUFEeEFFR1E1aEFMR1FFQUFBQ2dXUVFBOEZrRUFCQjNCQUFwUHdNQUFBQUFBUEVBUWJqbUVBc1pBUUFBQUtCWkJBRHdXUVFBR0hjRUFDay9Bd0FBQUFBQThRQkI0T1lRQ3hrQkFBSUFvRmtFQU5CWkJBQWdkd1FBS1Q4REFBQUFBQUR4QUVHSTV4QUwrZ2tDQVFBQU1Ga0VBUEJaQkFEd2JnUUF3ejREQUFBQUFBRHlBQUFBQUFBQUFCZ0NBQUFBQUFBQUFnRUJBREJaQkFEQVdRUUFBRzhFQU9JK0F3QUFBQUFBOGdBQUFBQUFBQUFZQWdBQUFBQUFBQUlCQVFBd1dRUUF3RmtFQUJCdkJBRGlQZ01BQUFBQUFQSUFBQUFBQUFBQUdBSUFBQUFBQUFBQ0FRRUFNRmtFQU1CWkJBQWdid1FBNGo0REFBQUFBQUR5QUFBQUFBQUFBQmdDQUFBQUFBQUFBZ0VDQU1CWUJBREFXUVFBTUc4RUFNNCtBd0FBQUFBQThnQUFBQUFBQUFBWUFnQUFBQUFBQUFJQkFBQXdXUVFBOEZrRUFFQnZCQUREUGdNQUFBQUFBUElBQUFBQUFBQUFHUUlBQUFBQUFBQUNBUUVBTUZrRUFNQlpCQUJRYndRQTRqNERBQUFBQUFEeUFBQUFBQUFBQUJrQ0FBQUFBQUFBQWdFQkFEQlpCQURBV1FRQVlHOEVBT0krQXdBQUFBQUE4Z0FBQUFBQUFBQVpBZ0FBQUFBQUFBSUJBUUF3V1FRQXdGa0VBSEJ2QkFEaVBnTUFBQUFBQVBJQUFBQUFBQUFBR1FJQUFBQUFBQUFDQVFJQXdGZ0VBTUJaQkFDQWJ3UUF6ajREQUFBQUFBRHlBQUFBQUFBQUFCa0NBQUFBQUFBQUFnRUFBREJaQkFEd1dRUUFJSEFFQU1NK0F3QUFBQUFBOGdBQUFBQUFBQUFhQWdBQUFBQUFBQUlCQVFBd1dRUUF3RmtFQURCd0JBRGlQZ01BQUFBQUFQSUFBQUFBQUFBQUdnSUFBQUFBQUFBQ0FRRUFNRmtFQU1CWkJBQkFjQVFBNGo0REFBQUFBQUR5QUFBQUFBQUFBQm9DQUFBQUFBQUFBZ0VCQURCWkJBREFXUVFBVUhBRUFPSStBd0FBQUFBQThnQUFBQUFBQUFBYUFnQUFBQUFBQUFJQkFBQXdXUVFBOEZrRUFHQndCQUREUGdNQUFBQUFBUElBQUFBQUFBQUFHd0lBQUFBQUFBQUNBUUVBTUZrRUFNQlpCQUJ3Y0FRQTRqNERBQUFBQUFEeUFBQUFBQUFBQUJzQ0FBQUFBQUFBQWdFQkFEQlpCQURBV1FRQWdIQUVBT0krQXdBQUFBQUE4Z0FBQUFBQUFBQWJBZ0FBQUFBQUFBSUJBUUF3V1FRQXdGa0VBSkJ3QkFEaVBnTUFBQUFBQVBJQUFBQUFBQUFBR3dJQUFBQUFBQUFDQUFBQW9Ga0VBUEJaQkFEQWNBUUE1ejREQUFBQUFBRHlBQUFBQUFBQUFCd0NBQUFBQUFBQUFnQUJBS0JaQkFEQVdRUUEwSEFFQU9VK0F3QUFBQUFBOGdBQUFBQUFBQUFjQWdBQUFBQUFBQUlCQUFCWVdRUUE4RmtFQU9Cd0JBRERQZ01BQUFBQUFQSUFBQUFBQUFBQUhBSUFBQUFBQUFBQ0FRRUFXRmtFQU1CWkJBRHdjQVFBNGo0REFBQUFBQUR5QUFBQUFBQUFBQndDQUFBQUFBQUFBZ0FBQUtCWkJBRHdXUVFBQUhFRUFPYytBd0FBQUFBQThnQUFBQUFBQUFBZEFnQUFBQUFBQUFJQUFRQ2dXUVFBd0ZrRUFCQnhCQURsUGdNQUFBQUFBUElBQUFBQUFBQUFIUUlBQUFBQUFBQUNBUUFBV0ZrRUFQQlpCQUFnY1FRQXd6NERBQUFBQUFEeUFBQUFBQUFBQUIwQ0FBQUFBQUFBQWdFQkFGaFpCQURBV1FRQU1IRUVBT0krQXdBQUFBQUE4Z0FBQUFBQUFBQWRBZ0FBQUFBQUFBTUJBQURBV0FRQThGa0VBSkJvQkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBSGdJQUFBQUFBQUFEQVFFQXdGZ0VBTUJaQkFDb2FBUUE0ajREQUFBQUFBRHhBQUFBQUFBQUFCNENBQUFBQUFBQUF3RUJBTUJZQkFEQVdRUUF3R2dFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUFlQWdBQUFBQUFBQU1CQUFCSVdRUUE4RmtFQVBCb0JBRERQZ01BQUFBQUFQRUFBQUFBQUFBQUh3SUFBQUFBQUFBREFRRUFTRmtFQU1CWkJBQUlhUVFBNGo0REFBQUFBQUR4QUFBQUFBQUFBQjhDQUFBQUFBQUFBd0VCQUVoWkJBREFXUVFBSUdrRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBZ0FnQkJqUEVRQzI2Z1dRUUE4RmtFQUtCNUJBREpQZ01BQUFBQUFQUUFBQUFBQUFBQURBSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBRElkd1FBeVQ0REFBQUFBQUQwQUFBQUFBQUFBQTBDQUFBQUFBQUFBUUVBQUdoWkJBRHdXUVFBMEhjRUFNaytBd0FBQUFBQStBQUFBQUFBQUFBUkFnQkJoUElRQzI2Z1dRUUE4RmtFQUtCNUJBQXBQd01BQUFBQUFQUUFBQUFBQUFBQURBSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBRFlkd1FBS1Q4REFBQUFBQUQwQUFBQUFBQUFBQTBDQUFBQUFBQUFBUUVBQUhCWkJBRHdXUVFBNEhjRUFDay9Bd0FBQUFBQStBQUFBQUFBQUFBUkFnQkIvUElRQzI2Z1dRUUE4RmtFQUtCNUJBRHFQZ01BQUFBQUFQUUFBQUFBQUFBQURBSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBRG9kd1FBNmo0REFBQUFBQUQwQUFBQUFBQUFBQTBDQUFBQUFBQUFBUUVBQUhoWkJBRHdXUVFBOEhjRUFPbytBd0FBQUFBQStBQUFBQUFBQUFBUkFnQkI5UE1RQzI2Z1dRUUE4RmtFQUtCNUJBREJQZ01BQUFBQUFQUUFBQUFBQUFBQURBSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBRDRkd1FBd1Q0REFBQUFBQUQwQUFBQUFBQUFBQTBDQUFBQUFBQUFBUUVBQUlCWkJBRHdXUVFBQUhnRUFNRStBd0FBQUFBQStBQUFBQUFBQUFBUkFnQkI3UFFRQy8wTW9Ga0VBUEJaQkFDZ2VRUUE1ejREQUFBQUFBRDBBQUFBQUFBQUFBd0NBQUFBQUFBQUFRQUFBS0JaQkFEd1dRUUFDSGdFQU9jK0F3QUFBQUFBOUFBQUFBQUFBQUFOQWdBQUFBQUFBQUVCQUFDSVdRUUE4RmtFQUJCNEJBRG5QZ01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFRQUFNRmtFQVBCWkJBRHdjZ1FBd3o0REFBQUFBQUR4QUFBQUFBQUFBQ0VDQUFBQUFBQUFBUUVCQURCWkJBREFXUVFBK0hJRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBaEFnQUFBQUFBQUFFQkFBREFXQVFBOEZrRUFBQnpCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFJZ0lBQUFBQUFBQUJBUUVBd0ZnRUFNQlpCQUFJY3dRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUNJQ0FBQUFBQUFBQVFFQUFNQllCQUR3V1FRQUVITUVBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQWpBZ0FBQUFBQUFBRUJBUURBV0FRQXdGa0VBQmh6QkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBSXdJQUFBQUFBQUFCQUFBQW9Ga0VBUEJaQkFBZ2N3UUE1ejREQUFBQUFBRHhBQUFBQUFBQUFDUUNBQUFBQUFBQUFRQUJBS0JaQkFEQVdRUUFLSE1FQU9jK0F3QUFBQUFBOFFBQUFBQUFBQUFrQWdBQUFBQUFBQUVBQUFDZ1dRUUE4RmtFQURCekJBRG5QZ01BQUFBQUFQRUFBQUFBQUFBQUpRSUFBQUFBQUFBQkFBRUFvRmtFQU1CWkJBQTRjd1FBNXo0REFBQUFBQUR4QUFBQUFBQUFBQ1VDQUFBQUFBQUFBUUVBQU1CWUJBRHdXUVFBU0hNRUFNTStBd0FBQUFBQThRQUFBQUFBQUFBbUFnQUFBQUFBQUFFQkFRREFXQVFBd0ZrRUFGQnpCQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFKZ0lBQUFBQUFBQUJBUUFBd0ZnRUFQQlpCQUJZY3dRQXd6NERBQUFBQUFEeEFBQUFBQUFBQUNjQ0FBQUFBQUFBQVFFQkFNQllCQURBV1FRQVlITUVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQW5BZ0FBQUFBQUFBRUJBQURBV0FRQThGa0VBR2h6QkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBS0FJQUFBQUFBQUFCQVFFQXdGZ0VBTUJaQkFCd2N3UUE0ajREQUFBQUFBRHhBQUFBQUFBQUFDZ0NBQUFBQUFBQUFnRUFBTUJZQkFEd1dRUUFnR3dFQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUFwQWdBQUFBQUFBQUlCQVFEQVdBUUF3RmtFQUpCc0JBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQUtRSUFBQUFBQUFBQkFRQUF3RmdFQVBCWkJBQjRjd1FBd3o0REFBQUFBQUR4QUFBQUFBQUFBQ29DQUFBQUFBQUFBUUVCQU1CWUJBREFXUVFBZ0hNRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBcUFnQUFBQUFBQUFFQkFBREFXQVFBOEZrRUFJaHpCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFLd0lBQUFBQUFBQUJBUUVBd0ZnRUFNQlpCQUNRY3dRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUNzQ0FBQUFBQUFBQXdFQUFEQlpCQUR3V1FRQTZHY0VBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQXNBZ0FBQUFBQUFBTUJBUUF3V1FRQXdGa0VBQUJvQkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBTEFJQUFBQUFBQUFCQVFBQXdGZ0VBUEJaQkFDWWN3UUF3ejREQUFBQUFBRHhBQUFBQUFBQUFDMENBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFvSE1FQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUF0QWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQUtoekJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQUxnSUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBQ3djd1FBNGo0REFBQUFBQUR4QUFBQUFBQUFBQzRDQUFBQUFBQUFBUUVBQUVCWkJBRHdXUVFBdUhNRUFNTStBd0FBQUFBQThRQUFBQUFBQUFBdkFnQUFBQUFBQUFFQkFRQkFXUVFBd0ZrRUFNQnpCQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFMd0lBQUFBQUFBQUJBUUFBUUZrRUFQQlpCQURJY3dRQXd6NERBQUFBQUFEeEFBQUFBQUFBQURBQ0FBQUFBQUFBQVFFQkFFQlpCQURBV1FRQTBITUVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQXdBZ0FBQUFBQUFBRUJBQUJBV1FRQThGa0VBTmh6QkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBTVFJQUFBQUFBQUFCQVFFQVFGa0VBTUJaQkFEZ2N3UUE0ajREQUFBQUFBRHhBQUFBQUFBQUFERUNBQUFBQUFBQUFRRUFBTUJZQkFEd1dRUUE2SE1FQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUF5QWdBQUFBQUFBQUVCQVFEQVdBUUF3RmtFQVBCekJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQU1nSUFBQUFBQUFBQ0FRQUF3RmdFQVBCWkJBQ3diQVFBd3o0REFBQUFBQUR4QUFBQUFBQUFBRE1DQUFBQUFBQUFBZ0VCQU1CWUJBREFXUVFBd0d3RUFNTStBd0FBQUFBQThRQUFBQUFBQUFBekFnQUFBQUFBQUFFQUFBQ2dXUVFBOEZrRUFBQjBCQURxUGdNQUFBQUFBS0VBUWZpQkVRc1pBUUFCQUtCWkJBREFXUVFBQ0hRRUFPZytBd0FBQUFBQW9RQkJvSUlSQ3hrQkFBQUFvRmtFQVBCWkJBQVFkQVFBNmo0REFBQUFBQUNoQUVISWdoRUxHUUVBQVFDZ1dRUUF3RmtFQUJoMEJBRG9QZ01BQUFBQUFLRUFRZkNDRVFzWkFRQUFBS0JaQkFEd1dRUUFJSFFFQU9vK0F3QUFBQUFBb1FCQm1JTVJDeGtCQUFFQW9Ga0VBTUJaQkFBb2RBUUE2RDREQUFBQUFBQ2hBRUhBZ3hFTEdRRUFBQUNnV1FRQThGa0VBREIwQkFEcVBnTUFBQUFBQUtFQVFlaURFUXNaQVFBQkFLQlpCQURBV1FRQU9IUUVBT2crQXdBQUFBQUFvUUJCa0lRUkN4a0JBQUFBb0ZrRUFQQlpCQUJBZEFRQTZqNERBQUFBQUFDaEFFRzRoQkVMR1FFQUFRQ2dXUVFBd0ZrRUFFaDBCQURvUGdNQUFBQUFBS0VBUWVDRUVRc1pBUUFBQUtCWkJBRHdXUVFBVUhRRUFPbytBd0FBQUFBQW9RQkJpSVVSQ3hrQkFBRUFvRmtFQU1CWkJBQllkQVFBNkQ0REFBQUFBQUNoQUVHd2hSRUw2UVVCQVFBQXdGZ0VBUEJaQkFCZ2RBUUF3ejREQUFBQUFBRHhBQUFBQUFBQUFEUUNBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFhSFFFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUEwQWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQUhCMEJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQU5RSUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBQjRkQVFBNGo0REFBQUFBQUR4QUFBQUFBQUFBRFVDQUFBQUFBQUFBd0VBQUVCWkJBRHdXUVFBR0dnRUFNTStBd0FBQUFBQThRQUFBQUFBQUFBMkFnQUFBQUFBQUFNQkFRQkFXUVFBd0ZrRUFEQm9CQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFOZ0lBQUFBQUFBQUJBUUFBUUZrRUFQQlpCQUNBZEFRQXd6NERBQUFBQUFEeEFBQUFBQUFBQURjQ0FBQUFBQUFBQVFFQkFFQlpCQURBV1FRQWlIUUVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQTNBZ0FBQUFBQUFBRUJBQUJBV1FRQThGa0VBSkIwQkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBT0FJQUFBQUFBQUFCQVFFQVFGa0VBTUJaQkFDWWRBUUE0ajREQUFBQUFBRHhBQUFBQUFBQUFEZ0NBQUFBQUFBQUFRRUFBTUJZQkFEd1dRUUFvSFFFQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUE1QWdBQUFBQUFBQUVCQVFEQVdBUUF3RmtFQUtoMEJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQU9RSUFBQUFBQUFBREFRQUF3RmdFQVBCWkJBQmdhQVFBd3o0REFBQUFBQUR4QUFBQUFBQUFBRG9DQUFBQUFBQUFBd0VCQU1CWUJBREFXUVFBZUdnRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBNkFnQUFBQUFBQUFFQkFBREFXQVFBOEZrRUFMQjBCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFPd0lBQUFBQUFBQUJBUUVBd0ZnRUFNQlpCQUM0ZEFRQTRqNERBQUFBQUFEeEFBQUFBQUFBQURzQ0FBQUFBQUFBQVFFQUFNQllCQUR3V1FRQXdIUUVBQ3cvQXdBQUFBQUE4UUFBQUFBQUFBQThBZ0FBQUFBQUFBRUJBUURBV0FRQXdGa0VBTWgwQkFEclBnTUFBQUFBQVBFQUFBQUFBQUFBUEFJQUFBQUFBQUFCQUFBQW9Ga0VBUEJaQkFEUWRBUUE2ajREQUFBQUFBQ2hBRUdvaXhFTEdRRUFBUUNnV1FRQXdGa0VBTmgwQkFEb1BnTUFBQUFBQUtFQVFkQ0xFUXNaQVFBQUFLQlpCQUR3V1FRQTRIUUVBT28rQXdBQUFBQUFvUUJCK0lzUkN4a0JBQUVBb0ZrRUFNQlpCQURvZEFRQTZENERBQUFBQUFDaEFFR2dqQkVMR1FFQUFBQ2dXUVFBOEZrRUFQQjBCQURxUGdNQUFBQUFBS0VBUWNpTUVRc1pBUUFCQUtCWkJBREFXUVFBK0hRRUFPZytBd0FBQUFBQW9RQkI4SXdSQzVrUEJBRUFBRUJaQkFEd1dRUUFLR01FQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUE5QWdBQUFBQUFBQVFCQVFCQVdRUUF3RmtFQUVoakJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQVBRSUFBQUFBQUFBQkFRQUF3RmdFQVBCWkJBQUFkUVFBd3o0REFBQUFBQUR4QUFBQUFBQUFBRDRDQUFBQUFBQUFBUUVCQU1CWUJBREFXUVFBQ0hVRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBK0FnQUFBQUFBQUFJQ0FBREFXQVFBOEZrRUFBQnRCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFQd0lBQUFBQUFBQUNBZ0VBd0ZnRUFNQlpCQUFRYlFRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUQ4Q0FBQUFBQUFBQVFFQUFNQllCQUR3V1FRQUVIVUVBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQkFBZ0FBQUFBQUFBRUJBUURBV0FRQXdGa0VBQmgxQkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBUUFJQUFBQUFBQUFCQVFBQXdGZ0VBUEJaQkFBZ2RRUUF3ejREQUFBQUFBRHhBQUFBQUFBQUFFRUNBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFLSFVFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUJCQWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQURCMUJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQVFnSUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBQTRkUVFBNGo0REFBQUFBQUR4QUFBQUFBQUFBRUlDQUFBQUFBQUFBZ0VBQURCWkJBRHdXUVFBSUcwRUFNTStBd0FBQUFBQThRQUFBQUFBQUFCREFnQUFBQUFBQUFJQkFRQXdXUVFBd0ZrRUFEQnRCQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFRd0lBQUFBQUFBQUNBUUFBTUZrRUFQQlpCQUJBYlFRQXd6NERBQUFBQUFEeEFBQUFBQUFBQUVRQ0FBQUFBQUFBQWdFQkFEQlpCQURBV1FRQVVHMEVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQkVBZ0FBQUFBQUFBRUJBQURBV0FRQThGa0VBRUIxQkFBdVB3TUFBQUFBQVBFQUFBQUFBQUFBUlFJQUFBQUFBQUFCQVFFQXdGZ0VBTUJaQkFCSWRRUUE4VDREQUFBQUFBRHhBQUFBQUFBQUFFVUNBQUFBQUFBQUFnRUFBTUJZQkFEd1dRUUFZRzBFQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUJHQWdBQUFBQUFBQUlCQVFEQVdBUUF3RmtFQUhCdEJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQVJnSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBQ0FkUVFBNmo0REFBQUFBQUR4QUFBQUFBQUFBRWNDQUFBQUFBQUFBUUFCQUtCWkJBREFXUVFBaUhVRUFPZytBd0FBQUFBQThRQUFBQUFBQUFCSEFnQUFBQUFBQUFFQkFBREFXQVFBOEZrRUFKQjFCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFTQUlBQUFBQUFBQUJBUUVBd0ZnRUFNQlpCQUNZZFFRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUVnQ0FBQUFBQUFBQVFFQUFFQlpCQUR3V1FRQW9IVUVBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQkpBZ0FBQUFBQUFBRUJBUUJBV1FRQXdGa0VBS2gxQkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBU1FJQUFBQUFBQUFCQVFBQXdGZ0VBUEJaQkFDd2RRUUF3ejREQUFBQUFBRHhBQUFBQUFBQUFFb0NBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUF1SFVFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUJLQWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQU1CMUJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQVN3SUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBRElkUVFBNGo0REFBQUFBQUR4QUFBQUFBQUFBRXNDQUFBQUFBQUFBUUVBQUZCWkJBRHdXUVFBMEhVRUFNTStBd0FBQUFBQThRQUFBQUFBQUFCTUFnQUFBQUFBQUFFQkFRQlFXUVFBd0ZrRUFOaDFCQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFUQUlBQUFBQUFBQUJBUUFBd0ZnRUFQQlpCQURnZFFRQXd6NERBQUFBQUFEeEFBQUFBQUFBQUUwQ0FBQUFBQUFBQVFFQkFNQllCQURBV1FRQTZIVUVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQk5BZ0FBQUFBQUFBRUJBQURBV0FRQThGa0VBUEIxQkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBVGdJQUFBQUFBQUFCQVFFQXdGZ0VBTUJaQkFENGRRUUE0ajREQUFBQUFBRHhBQUFBQUFBQUFFNENBQUFBQUFBQUF3RUFBTUJZQkFEd1dRUUFPR2tFQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUJQQWdBQUFBQUFBQU1CQVFEQVdBUUF3RmtFQUZCcEJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQVR3SUFBQUFBQUFBQkFRQUF3RmdFQVBCWkJBQUFkZ1FBd3o0REFBQUFBQUR4QUFBQUFBQUFBRkFDQUFBQUFBQUFBUUVCQU1CWUJBREFXUVFBQ0hZRUFPSStBd0FBQUFBQThRQUFBQUFBQUFCUUFnQUFBQUFBQUFJQkFBREFXQVFBOEZrRUFKQnRCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFVUUlBQUFBQUFBQUNBUUVBd0ZnRUFNQlpCQUNnYlFRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUZFQ0FBQUFBQUFBQVFFQUFNQllCQUR3V1FRQUVIWUVBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQlNBZ0FBQUFBQUFBRUJBUURBV0FRQXdGa0VBQmgyQkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBVWdJQUFBQUFBQUFCQVFBQXdGZ0VBUEJaQkFBZ2RnUUF3ejREQUFBQUFBRHhBQUFBQUFBQUFGTUNBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFLSFlFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUJUQWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQURoMkJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQVZBSUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBQkFkZ1FBNGo0REFBQUFBQUR4QUFBQUFBQUFBRlFDQUFBQUFBQUFBUUVBQUhCWUJBRHdXUVFBZUhjRUFDay9Bd0FBQUFBQThRQkJtSndSQ3hrQkFBQUFvRmtFQVBCWkJBQ0Fkd1FBS1Q4REFBQUFBQUR4QUVIQW5CRUxHUU1BQUFDZ1dRUUE4RmtFQUNocUJBQXlQd01BQUFBQUFQRUFRZWljRVFzWkF3QUFBS0JaQkFEd1dRUUFRR29FQURJL0F3QUFBQUFBOFFCQmtKMFJDOWtIQVFBQUFLQlpCQUR3V1FRQW1IY0VBT2MrQXdBQUFBQUE4Z0FBQUFBQUFBQlZBZ0FBQUFBQUFBRUFBUUNnV1FRQXdGa0VBS0IzQkFEbFBnTUFBQUFBQVBJQUFBQUFBQUFBVlFJQUFBQUFBQUFCQVFBQVdGa0VBUEJaQkFDb2R3UUF3ejREQUFBQUFBRHlBQUFBQUFBQUFGWUNBQUFBQUFBQUFRRUJBRmhaQkFEQVdRUUFzSGNFQU9JK0F3QUFBQUFBOGdBQUFBQUFBQUJXQWdBQUFBQUFBQUVCQUFCUVdRUUE4RmtFQUxoM0JBRERQZ01BQUFBQUFQSUFBQUFBQUFBQVZ3SUFBQUFBQUFBQkFRRUFVRmtFQU1CWkJBREFkd1FBNGo0REFBQUFBQUR5QUFBQUFBQUFBRmNDQUFBQUFBQUFBZ0VBQUZoWkJBRHdXUVFBb0hBRUFNTStBd0FBQUFBQThnQUFBQUFBQUFCWUFnQUFBQUFBQUFJQkFRQllXUVFBd0ZrRUFMQndCQURpUGdNQUFBQUFBUElBQUFBQUFBQUFXQUlBQUFBQUFBQUNBUUFBU0ZrRUFQQlpCQUJnY1FRQTV6NERBQUFBQUFEeUFBQUFBQUFBQUZrQ0FBQUFBQUFBQWdFQkFFaFpCQURBV1FRQWNIRUVBT1UrQXdBQUFBQUE4Z0FBQUFBQUFBQlpBZ0FBQUFBQUFBSUJBQUJJV1FRQThGa0VBSUJ4QkFEblBnTUFBQUFBQVBJQUFBQUFBQUFBV2dJQUFBQUFBQUFDQVFFQVNGa0VBTUJaQkFDUWNRUUE1VDREQUFBQUFBRHlBQUFBQUFBQUFGb0NBQUFBQUFBQUFnRUFBREJaQkFEd1dRUUFvSEVFQU9jK0F3QUFBQUFBOGdBQUFBQUFBQUJiQWdBQUFBQUFBQUlCQVFBd1dRUUF3RmtFQUxCeEJBRGxQZ01BQUFBQUFQSUFBQUFBQUFBQVd3SUFBQUFBQUFBQ0FRQUFNRmtFQVBCWkJBREFjUVFBNXo0REFBQUFBQUR5QUFBQUFBQUFBRndDQUFBQUFBQUFBZ0VCQURCWkJBREFXUVFBMEhFRUFPVStBd0FBQUFBQThnQUFBQUFBQUFCY0FnQUFBQUFBQUFJQkFBQXdXUVFBOEZrRUFPQnhCQURuUGdNQUFBQUFBUElBQUFBQUFBQUFYUUlBQUFBQUFBQUNBUUVBTUZrRUFNQlpCQUR3Y1FRQTVUNERBQUFBQUFEeUFBQUFBQUFBQUYwQ0FBQUFBQUFBQWdFQUFEQlpCQUR3V1FRQUFISUVBT2MrQXdBQUFBQUE4Z0FBQUFBQUFBQmVBZ0FBQUFBQUFBSUJBUUJnV1FRQXdGa0VBQkJ5QkFEbFBnTUFBQUFBQVBJQUFBQUFBQUFBWGdJQUFBQUFBQUFDQVFBQVdGa0VBUEJaQkFBZ2NnUUF3ejREQUFBQUFBRHlBQUFBQUFBQUFGOENBQUFBQUFBQUFnRUJBRmhaQkFEQVdRUUFNSElFQU9JK0F3QUFBQUFBOGdBQUFBQUFBQUJmQWdBQUFBQUFBQUlCQUFCWVdRUUE4RmtFQUVCeUJBRERQZ01BQUFBQUFQSUFBQUFBQUFBQVlBSUFBQUFBQUFBQ0FRRUFXRmtFQU1CWkJBQlFjZ1FBNGo0REFBQUFBQUR5QUFBQUFBQUFBR0FDQUFBQUFBQUFBUUVCQURoWkJBRGdXUVFBUUhNRUFDay9Bd0FBQUFBQThRQkIrS1FSQzVFQkFnRUFBTUJZQkFEd1dRUUFvR3dFQUNvL0F3QUFBQUFBOFFBQUFBQUFBQUJoQWdBQUFBQUFBQUVCQVFEQVdBUUF3RmtFQVBoekJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQVlnSUFBQUFBQUFBQ0FRRUFNRmtFQU1CWkJBRFFiQVFBd3o0REFBQUFBQUR4QUFBQUFBQUFBR01DQUFBQUFBQUFBZ0FBQUtCWkJBRHdXUVFBNEd3RUFNaytBd0FBQUFBQThRQkJtS1lSQ3hrQ0FBQUFvRmtFQVBCWkJBRHdiQVFBS1Q4REFBQUFBQUR4QUVIQXBoRUw0Z0lEQVFFQXdGZ0VBTUJaQkFCSWFBUUE0ajREQUFBQUFBRHhBQUFBQUFBQUFHUUNBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFVSFVFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUJsQWdBQUFBQUFBQUVBQUFDZ1dRUUE4RmtFQUZoMUJBQXBQd01BQUFBQUFQRUFBQUFBQUFBQVpnSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBQmdkUVFBS1Q4REFBQUFBQUR4QUFBQUFBQUFBR2NDQUFBQUFBQUFBUUFBQUtCWkJBRHdXUVFBYUhVRUFDay9Bd0FBQUFBQThRQUFBQUFBQUFCb0FnQUFBQUFBQUFFQUFBQ2dXUVFBOEZrRUFIQjFCQUFwUHdNQUFBQUFBUEVBQUFBQUFBQUFhUUlBQUFBQUFBQUJBQUFBb0ZrRUFQQlpCQUI0ZFFRQUtUOERBQUFBQUFEeEFBQUFBQUFBQUdvQ0FBQUFBQUFBQWdFQkFNQllCQURBV1FRQWdHMEVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQnJBZ0FBQUFBQUFBTUJBUURBV0FRQXdGa0VBTmhvQkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBYkFJQVFheXBFUXNMb0ZrRUFQQlpCQUNnZVFRQVFjQ3BFUXNCUVFCQjBLa1JDK29CQVFFQ0FNQllCQUM0V1FRQU1IWUVBTkkrQXdBQUFBQUE4UUFBQUFBQUFBQnRBZ0FBQUFBQUFBRUFBQUNnV1FRQThGa0VBRWgyQkFBd1B3TUFBQUFBQVBFQUFBQUFBQUFBYmdJQUFBQUFBQUFCQUFBQW9Ga0VBUEJaQkFCUWRnUUFNRDhEQUFBQUFBRHhBQUFBQUFBQUFHOENBQUFBQUFBQUFRQUFBS0JaQkFEd1dRUUFXSFlFQURBL0F3QUFBQUFBOFFBQUFBQUFBQUJ3QWdBQUFBQUFBQUVBQUFDZ1dRUUE4RmtFQUdCMkJBQXlQd01BQUFBQUFQRUFBQUFBQUFBQWNRSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBQm9kZ1FBTWo4REFBQUFBQUR4QUFBQUFBQUFBSElDQUVIRXF4RUxDNkJaQkFEd1dRUUFvSGtFQUVIWXF4RUxBVUVBUWVpckVRc1pBUUVBQURoWkJBRHdXUVFBY0hZRUFNTStBd0FBQUFBQXdRQkJrS3dSQ3hrQkFRRUFRRmtFQU9oWkJBQ0lkd1FBd3o0REFBQUFBQUJoQUVHNHJCRUxEd0lCQVFCQVdRUUE2RmtFQUdCdUJBQkIwS3dSQ3dGaEFFSGdyQkVMR1FJQkFRQkFXUVFBNkZrRUFIQnVCQUREUGdNQUFBQUFBR0VBUVlpdEVRc1pBZ0VCQUVCWkJBRG9XUVFBZ0c0RUFNTStBd0FBQUFBQVlRQkJzSzBSQ3hrQ0FRRUFRRmtFQU9oWkJBQ1FiZ1FBd3o0REFBQUFBQUJoQUVIWXJSRUxHUUlCQVFCQVdRUUE2RmtFQUtCdUJBRERQZ01BQUFBQUFHRUFRWUN1RVFzWkFnRUJBRUJaQkFEb1dRUUFzRzRFQU1NK0F3QUFBQUFBWVFCQnFLNFJDeGtDQVFFQVFGa0VBT2haQkFEQWJnUUF3ejREQUFBQUFBQmhBRUhRcmhFTEdRSUJBUUJBV1FRQTZGa0VBTkJ1QkFERFBnTUFBQUFBQUdFQVFmaXVFUXNaQWdFQkFFQlpCQURvV1FRQTRHNEVBTU0rQXdBQUFBQUFZUUJCb0s4UkN4a0RBUUVBUUZrRUFPaFpCQURBYXdRQVlqOERBQUFBQUFCaEFFSElyeEVMbWdFQkFRQUFPRmtFQVBCWkJBQ1Fkd1FBd3o0REFBQUFBQUJ4QUFBQUFBQUFBQTBDQUFBQUFBQUFBZ0FBQUtCWkJBRHdXUVFBUUhFRUFPYytBd0FBQUFBQThnQUFBQUFBQUFCekFnQUFBQUFBQUFJQUFBQ2dXUVFBOEZrRUFGQnhCQURuUGdNQUFBQUFBUElBQUFBQUFBQUFkQUlBQUFBQUFBQUJBUUFBa0ZrRUFQQlpCQUNZZVFRQXJqOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FFSHdzQkVMcjBKV2NRRUFSQUFBQUQ2dkFRQklBQUFBbTY4QkFFZ0FBQUNvcVFFQVNBQUFBRlp4QVFCRUFBQUFQcThCQUVnQUFBQ29xUUVBU0FBQUFGWnhBUUJFQUFBQVBxOEJBRWdBQUFDTGNRRUFTQUFBQUZaeEFRQkFBQUFBajJvQkFFSUFBQUJXY1FFQVJBQUFBS2lwQVFCSUFBQUFWbkVCQUFrQUFBQ1BhZ0VBTndBQUFGWnhBUUFLQUFBQWoyb0JBRGdBQUFCV2NRRUFCd0FBQUk5cUFRQTVBQUFBVm5FQkFBZ0FBQUNQYWdFQU9nQUFBRlp4QVFBRUFBQUFqMm9CQURzQUFBQldjUUVBUEFBQUFGWnhBUUQvQUFBQVZuRUJBRWdBQUFCV2NRRUFOUUFBQUZaeEFRQTlBQUFBVm5FQkFFRUFBQUJXY1FFQVF3QUFBRlp4QVFBNUFBQUFWbkVCQURvQUFBQldjUUVBTndBQUFGWnhBUUE0QUFBQVZuRUJBRHNBQUFCV2NRRUFOZ0FBQUZaeEFRQkhBQUFBcXFrQkFQOEFBQUErcndFQS93QUFBRGFCQVFEL0FBQUExNElCQVA4QUFBQjBnZ0VBL3dBQUFOZUNBUUQvQUFBQUZhb0JBUDhBQUFDYnJ3RUFCZ0FBQUp1dkFRRC9BQUFBaTNFQkFBa0FBQUQvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUFDd0FBQUZBL0F3QUtBQUFBdGo4REFBTUFBQUF3UHdNQUFBQUFBTU0rQXdBRUFBQUFNRDhEQUFVQUFBQXdQd01BQ0FBQUFFZy9Bd0FDQUFBQTBENERBQXNBQUFBNlB3TUFDZ0FBQUxZL0F3QURBQUFBTUQ4REFBQUFBQURjUGdNQUNBQUFBRWcvQXdBTEFBQUFzVDhEQUFvQUFBQzNQd01BQXdBQUFEQS9Bd0FBQUFBQXd6NERBQVlBQUFEcVBnTUFDQUFBQUVnL0F3QUxBQUFBVUQ4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBQUFBQUF3ejREQUFFQUFBRHFQZ01BQ0FBQUFFZy9Bd0FMQUFBQXNUOERBQW9BQUFDM1B3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBWUFBQURxUGdNQUNBQUFBRWcvQXdBTEFBQUFzVDhEQUFvQUFBQzNQd01BQXdBQUFEQS9Bd0FBQUFBQXd6NERBQVlBQUFEcVBnTUFDQUFBQUVnL0F3QUxBQUFBVGo4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBRUFBQUFNRDhEQUFVQUFBQXdQd01BQ0FBQUFFZy9Bd0FMQUFBQVVEOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBUUFBQUF3UHdNQUJRQUFBREEvQXdBTEFBQUFVajhEQUFvQUFBQzJQd01BQXdBQUFFby9Bd0FFQUFBQVNqOERBQVVBQUFCS1B3TUFDQUFBQUZRL0F3QUxBQUFBV0Q4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBQUFBQUF3ejREQUFRQUFBQktQd01BQlFBQUFFby9Bd0FMQUFBQVVEOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBY0FBQURxUGdNQUNBQUFBRWcvQXdBTEFBQUFzVDhEQUFvQUFBQzJQd01BQXdBQUFEQS9Bd0FBQUFBQXd6NERBQWNBQUFEUVBnTUFDQUFBQUVnL0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdBQ0FBQUEwRDREQUFzQUFBQTJQd01BQ2dBQUFMWS9Bd0FEQUFBQU1EOERBQWdBQUFCSVB3TUFBZ0FBQU5BK0F3QUxBQUFBT2o4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBQUFBQUEzRDREQUFJQUFBRFFQZ01BQ3dBQUFFSS9Bd0FLQUFBQXRqOERBQU1BQUFCS1B3TUFBQUFBQU53K0F3QUxBQUFBc1Q4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBQUFBQUF3ejREQUFnQUFBQklQd01BQ3dBQUFMQS9Bd0FLQUFBQXR6OERBQU1BQUFBd1B3TUFCZ0FBQU9vK0F3QUlBQUFBU0Q4REFBc0FBQUN4UHdNQUNnQUFBTGMvQXdBREFBQUFNRDhEQUFBQUFBRERQZ01BQmdBQUFPbytBd0FMQUFBQXN6OERBQW9BQUFDM1B3TUFBd0FBQUVvL0F3QUFBQUFBd3o0REFBWUFBQURxUGdNQUN3QUFBRkEvQXdBS0FBQUF0ajhEQUFNQUFBQXdQd01BQUFBQUFNTStBd0FJQUFBQVNEOERBQXNBQUFDeFB3TUFDZ0FBQUxZL0F3QURBQUFBTUQ4REFBQUFBQUREUGdNQUNBQUFBRWcvQXdBTEFBQUFUajhEQUFvQUFBQzJQd01BQXdBQUFEQS9Bd0FCQUFBQTZqNERBQWdBQUFCSVB3TUFDd0FBQUZBL0F3QUtBQUFBdGo4REFBTUFBQUF3UHdNQUFBQUFBTU0rQXdBQkFBQUE2ajREQUFzQUFBQlNQd01BQ2dBQUFMWS9Bd0FEQUFBQVNqOERBQUVBQUFEcVBnTUFDQUFBQUZRL0F3QUxBQUFBV0Q4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBQUFBQUF3ejREQUFFQUFBRHFQZ01BQ3dBQUFMQS9Bd0FLQUFBQXR6OERBQU1BQUFBd1B3TUFCZ0FBQU9vK0F3QUlBQUFBU0Q4REFBc0FBQUN4UHdNQUNnQUFBTGMvQXdBREFBQUFNRDhEQUFBQUFBRERQZ01BQmdBQUFPbytBd0FMQUFBQXN6OERBQW9BQUFDM1B3TUFBd0FBQUVvL0F3QUFBQUFBd3o0REFBWUFBQURxUGdNQUN3QUFBTEEvQXdBS0FBQUF0ejhEQUFNQUFBQXdQd01BQmdBQUFPbytBd0FJQUFBQVNEOERBQXNBQUFDeFB3TUFDZ0FBQUxjL0F3QURBQUFBTUQ4REFBQUFBQUREUGdNQUJnQUFBT28rQXdBTEFBQUFzejhEQUFvQUFBQzNQd01BQXdBQUFFby9Bd0FBQUFBQXd6NERBQVlBQUFEcVBnTUFDd0FBQUU0L0F3QUtBQUFBdGo4REFBTUFBQUF3UHdNQUJBQUFBREEvQXdBRkFBQUFNRDhEQUFzQUFBQlNQd01BQ2dBQUFMWS9Bd0FEQUFBQVNqOERBQVFBQUFCS1B3TUFCUUFBQUVvL0F3QUxBQUFBVmo4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBRUFBQUFTajhEQUFVQUFBQktQd01BQ3dBQUFFNC9Bd0FLQUFBQXRqOERBQU1BQUFBd1B3TUFCd0FBQU9vK0F3QUlBQUFBU0Q4REFBc0FBQUJRUHdNQUNnQUFBTFkvQXdBREFBQUFNRDhEQUFBQUFBRERQZ01BQndBQUFPbytBd0FMQUFBQVVqOERBQW9BQUFDMlB3TUFBd0FBQUVvL0F3QUhBQUFBNmo0REFBZ0FBQUJVUHdNQUN3QUFBRmcvQXdBS0FBQUF0ajhEQUFNQUFBQktQd01BQUFBQUFNTStBd0FIQUFBQTZqNERBQXNBQUFDd1B3TUFDZ0FBQUxZL0F3QURBQUFBTUQ4REFBY0FBQUREUGdNQUNBQUFBRWcvQXdBTEFBQUFzVDhEQUFvQUFBQzJQd01BQXdBQUFEQS9Bd0FBQUFBQXd6NERBQWNBQUFEUVBnTUFDd0FBQUxNL0F3QUtBQUFBdGo4REFBTUFBQUJLUHdNQUFBQUFBTU0rQXdBSEFBQUEwRDREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL0tUOERBUC8vLy84cFB3TUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLzhwUHdNQS8vLy8veWsvQXdBQ0FBQUEwRDREQUFzQUFBQTJQd01BQ2dBQUFMWS9Bd0FEQUFBQU1EOERBQUlBQUFEUVBnTUFDd0FBQUVBL0F3QUtBQUFBdGo4REFBTUFBQUJLUHdNQUN3QUFBTEEvQXdBS0FBQUF0ajhEQUFNQUFBQXdQd01BQ0FBQUFFZy9Bd0FMQUFBQXNUOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBc0FBQUN6UHdNQUNnQUFBTFkvQXdBREFBQUFTajhEQUFBQUFBRERQZ01BQ3dBQUFMQS9Bd0FLQUFBQXR6OERBQU1BQUFBd1B3TUFCZ0FBQU9vK0F3QUxBQUFBc2o4REFBb0FBQUMzUHdNQUF3QUFBRW8vQXdBR0FBQUE2ajREQUFzQUFBQk9Qd01BQ2dBQUFMWS9Bd0FEQUFBQU1EOERBQWdBQUFCSVB3TUFDd0FBQUZBL0F3QUtBQUFBdGo4REFBTUFBQUF3UHdNQUFBQUFBTU0rQXdBTEFBQUFVajhEQUFvQUFBQzJQd01BQXdBQUFFby9Bd0FJQUFBQVZEOERBQXNBQUFCWVB3TUFDZ0FBQUxZL0F3QURBQUFBU2o4REFBQUFBQUREUGdNQUN3QUFBTEEvQXdBS0FBQUF0ajhEQUFNQUFBQXdQd01BQ0FBQUFFZy9Bd0FMQUFBQXNUOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBc0FBQUN6UHdNQUNnQUFBTFkvQXdBREFBQUFTajhEQUFBQUFBRERQZ01BQ3dBQUFFNC9Bd0FLQUFBQXRqOERBQU1BQUFBd1B3TUFBUUFBQU9vK0F3QUxBQUFBVWo4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBQkFBQUE2ajREQUFzQUFBQldQd01BQ2dBQUFMWS9Bd0FEQUFBQVNqOERBQUVBQUFEcVBnTUFDd0FBQUxBL0F3QUtBQUFBdHo4REFBTUFBQUF3UHdNQUJnQUFBT28rQXdBTEFBQUFzajhEQUFvQUFBQzNQd01BQXdBQUFFby9Bd0FHQUFBQTZqNERBQXNBQUFDd1B3TUFDZ0FBQUxjL0F3QURBQUFBTUQ4REFBWUFBQURxUGdNQUN3QUFBTEkvQXdBS0FBQUF0ejhEQUFNQUFBQktQd01BQmdBQUFPbytBd0FMQUFBQVRqOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUhBQUFBNmo0REFBc0FBQUJTUHdNQUNnQUFBTFkvQXdBREFBQUFTajhEQUFjQUFBRHFQZ01BQ3dBQUFGWS9Bd0FLQUFBQXRqOERBQU1BQUFCS1B3TUFCd0FBQU9vK0F3QUxBQUFBc0Q4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBSEFBQUF3ejREQUFzQUFBQ3lQd01BQ2dBQUFMWS9Bd0FEQUFBQVNqOERBQWNBQUFERFBnTUFDd0FBQUFZL0F3QURBQUFBMXo0REFBQUFBQURRUGdNQURBQUFBREkvQXdBTEFBQUFFajhEQUFNQUFBRFhQZ01BQUFBQUFOQStBd0FNQUFBQVdqOERBQXNBQUFBZVB3TUFBd0FBQU5jK0F3QUFBQUFBMEQ0REFBd0FBQUJjUHdNQUN3QUFBRG8vQXdBREFBQUFYajhEQUFBQUFBRGNQZ01BQndBQUFBRS9Bd0FMQUFBQXNUOERBQU1BQUFEWFBnTUFBQUFBQU5BK0F3QUhBQUFBM0Q0REFBNEFBQUREUGdNQUVRQUFBTU0rQXdBVEFBQUF3ejREQUEwQUFBRERQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vMXo0REFQLy8vLy9YUGdNQS8vLy8vOWMrQXdELy8vLy8xejREQVAvLy8vOHFQd01BLy8vLy95by9Bd0QvLy8vL0tqOERBUC8vLy84cVB3TUEvLy8vLzBZL0F3RC8vLy8vUmo4REFQLy8vLzlHUHdNQS8vLy8vMFkvQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLzhwUHdNQS8vLy8veWsvQXdELy8vLy80ajREQVAvLy8vOHBQd01BLy8vLy95ay9Bd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy8rSStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9pUGdNQS8vLy8vK0krQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vK2MrQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy8rYytBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytVK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy8rSStBd0FMQUFBQXNEOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUxBQUFBc2o4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBTEFBQUFURDhEQUFvQUFBQzJQd01BQXdBQUFPbytBd0FMQUFBQVRqOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUxBQUFBVWo4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBTEFBQUFWajhEQUFvQUFBQzJQd01BQXdBQUFFby9Bd0FMQUFBQXNEOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUxBQUFBc2o4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBTEFBQUFUajhEQUFvQUFBQzJQd01BQXdBQUFEQS9Bd0FMQUFBQXRUOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUxBQUFBQUQ4REFBTUFBQUREUGdNQURBQUFBREkvQXdBTEFBQUFBejhEQUFNQUFBRFhQZ01BREFBQUFESS9Bd0FMQUFBQUNUOERBQU1BQUFBcVB3TUFEQUFBQURJL0F3QUxBQUFBREQ4REFBTUFBQUREUGdNQURBQUFBRm8vQXdBTEFBQUFEejhEQUFNQUFBRFhQZ01BREFBQUFGby9Bd0FMQUFBQUZUOERBQU1BQUFBcVB3TUFEQUFBQUZvL0F3QUxBQUFBR0Q4REFBTUFBQUREUGdNQURBQUFBRncvQXdBTEFBQUFHejhEQUFNQUFBRFhQZ01BREFBQUFGdy9Bd0FMQUFBQUlUOERBQU1BQUFBcVB3TUFEQUFBQUZ3L0F3QUxBQUFBTkQ4REFBTUFBQURRUGdNQUJ3QUFBTncrQXdBTEFBQUFOajhEQUFNQUFBQmVQd01BQndBQUFOdytBd0FMQUFBQVBEOERBQU1BQUFCZ1B3TUFCd0FBQU53K0F3QUxBQUFBUkQ4REFBTUFBQUJlUHdNQUNRQUFBTncrQXdBTEFBQUFzRDhEQUFNQUFBRFhQZ01BQndBQUFOQStBd0FMQUFBQXREOERBQU1BQUFEWFBnTUFDUUFBQU5BK0F3RC8vLy8veFQ0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdBT0FBQUF3ejREQUJFQUFBRERQZ01BRXdBQUFNTStBd0FQQUFBQTF6NERBQk1BQUFERFBnTUFEUUFBQU1NK0F3QU9BQUFBd3o0REFCSUFBQURYUGdNQURRQUFBTU0rQXdBT0FBQUF3ejREQUJFQUFBRERQZ01BRkFBQUFOYytBd0QvLy8vLzF6NERBUC8vLy8vWFBnTUEvLy8vLzljK0F3RC8vLy8vS2o4REFQLy8vLzhxUHdNQS8vLy8veW8vQXdELy8vLy9SajhEQVAvLy8vOUdQd01BLy8vLy8wWS9Bd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLzhxUHdNQS8vLy8veW8vQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vS1Q4REFQLy8vLzhwUHdNQS8vLy8veWsvQXdELy8vLy9LVDhEQVAvLy8vL0RQZ01BLy8vLy85QStBd0QvLy8vLzRqNERBUC8vLy8vdVBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9pUGdNQS8vLy8vK0krQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUFDd0FBQURRL0F3QUhBQUFBMEQ0REFBc0FBQUEyUHdNQUJ3QUFBTkErQXdBTEFBQUFPajhEQUFjQUFBRFFQZ01BQ3dBQUFEdy9Bd0FIQUFBQTBENERBQXNBQUFCQVB3TUFCd0FBQU5BK0F3QUxBQUFBUWo4REFBY0FBQURRUGdNQUN3QUFBTEEvQXdBSEFBQUF3ejREQUFzQUFBQ3hQd01BQndBQUFNTStBd0FMQUFBQXNqOERBQWNBQUFERFBnTUFDd0FBQUxNL0F3QUhBQUFBd3o0REFBc0FBQUMxUHdNQUF3QUFBTmMrQXdELy8vLy94VDREQVAvLy8vL0RQZ01BLy8vLy84VStBd0QvLy8vL3d6NERBUC8vLy8vRlBnTUEvLy8vLzhNK0F3RC8vLy8veFQ0REFQLy8vLy9EUGdNQS8vLy8vOFUrQXdELy8vLy93ejREQVAvLy8vL0ZQZ01BLy8vLy84TStBd0QvLy8vL3hUNERBUC8vLy8vRFBnTUEvLy8vLzhVK0F3RC8vLy8vd3o0REFQLy8vLy9GUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vODQrQXdELy8vLy96ajREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy96ajREQVAvLy8vL09QZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy84NCtBd0QvLy8vL3pqNERBUC8vLy8vRFBnTUEvLy8vLzg0K0F3RC8vLy8vNGo0REFQLy8vLzhrUHdNQS8vLy8vODQrQXdELy8vLy8yajREQVAvLy8vL1NQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vblBnTUEvLy8vLytjK0F3RC8vLy8vNVQ0REFQLy8vLy9sUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy8rSStBd0QvLy8vLzV6NERBUC8vLy8vblBnTUEvLy8vLytVK0F3RC8vLy8vNVQ0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy8rYytBd0QvLy8vLzV6NERBUC8vLy8vblBnTUEvLy8vLytjK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9pUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy8rSStBd0QvLy8vL3d6NERBUC8vLy84cFB3TUEvLy8vLytJK0F3RC8vLy8vSno4REFQLy8vLy9EUGdNQS8vLy8veWsvQXdELy8vLy80ajREQVAvLy8vOG5Qd01BRGdBQUFNTStBd0FSQUFBQXd6NERBQThBQUFEWFBnTUFFd0FBQU1NK0F3QU9BQUFBd3o0REFCSUFBQURYUGdNQUR3QUFBTmMrQXdBVUFBQUExejREQUJBQUFBQXFQd01BRFFBQUFNTStBd0FPQUFBQXd6NERBQlVBQUFBcVB3TUEvLy8vLzljK0F3RC8vLy8vMXo0REFQLy8vLzhxUHdNQS8vLy8veW8vQXdELy8vLy9SajhEQVAvLy8vOUdQd01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vK2MrQXdELy8vLy81VDREQVAvLy8vL25QZ01BLy8vLy8rVStBd0QvLy8vL3dENERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vOG8rQXdELy8vLy82ajREQVAvLy8vL29QZ01BLy8vLy8rbytBd0QvLy8vLzZENERBUC8vLy8vcVBnTUEvLy8vLytnK0F3RC8vLy8vNmo0REFQLy8vLy9vUGdNQS8vLy8vK28rQXdELy8vLy82RDREQVAvLy8vL3FQZ01BLy8vLy8rZytBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vK28rQXdELy8vLy82RDREQVAvLy8vL3FQZ01BLy8vLy8rZytBd0QvLy8vLzZqNERBUC8vLy8vb1BnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLzh3UHdNQS8vLy8vekEvQXdELy8vLy9NRDhEQVAvLy8vOHlQd01BLy8vLy96SS9Bd0QvLy8vLzZqNERBUC8vLy8vb1BnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9PUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vOHBQd01BLy8vLy95ay9Bd0QvLy8vL0tUOERBUC8vLy84cFB3TUEvLy8vL3lrL0F3RC8vLy8vMWo0REFBc0FBQUEwUHdNQUN3QUFBRFkvQXdBTEFBQUFPajhEQUFzQUFBQThQd01BQ3dBQUFFQS9Bd0FMQUFBQVFqOERBQXNBQUFCRVB3TUFDd0FBQUxBL0F3QUxBQUFBc1Q4REFBc0FBQUN5UHdNQUN3QUFBTE0vQXdBTEFBQUF0RDhEQUFzQUFBRDBQZ01BQ3dBQUFQYytBd0FMQUFBQStqNERBQXNBQUFEOVBnTUFDd0FBQUxVL0F3QUxBQUFBT2o4REFBc0FBQUJDUHdNQUN3QUFBTEUvQXdBTEFBQUFzejhEQUFzQUFBRDZQZ01BQ3dBQUFEUS9Bd0FMQUFBQU5qOERBQXNBQUFBNlB3TUFDd0FBQUR3L0F3QUxBQUFBUUQ4REFBc0FBQUJDUHdNQUN3QUFBTEEvQXdBTEFBQUFzVDhEQUFzQUFBQ3lQd01BQ3dBQUFMTS9Bd0FMQUFBQVJEOERBQXNBQUFDMFB3TUEvLy8vLzhVK0F3RC8vLy8vd3o0REFQLy8vLy9uUGdNQS8vLy8vK1UrQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vSlBnTUEvLy8vLzhNK0F3RC8vLy8vS1Q4REFQLy8vLy9EUGdNQS8vLy8vK28rQXdELy8vLy93ejREQVAvLy8vL0JQZ01BLy8vLy84TStBd0QvLy8vLzV6NERBUC8vLy8vRFBnTUEvLy8vLzljK0F3RC8vLy8vd3o0REFQLy8vLzllUHdNQS8vLy8vMTQvQXdELy8vLy9YajhEQVAvLy8vOWVQd01BLy8vLy8xNC9Bd0QvLy8vL0tqOERBUC8vLy8vRFBnTUEvLy8vLzJBL0F3RC8vLy8vWUQ4REFQLy8vLzlnUHdNQS8vLy8vMkEvQXdELy8vLy9ZRDhEQVAvLy8vOUdQd01BLy8vLy84TStBd0QvLy8vL2NqOERBUC8vLy85eVB3TUEvLy8vLzNJL0F3RC8vLy8vY2o4REFQLy8vLzl5UHdNQS8vLy8vM2cvQXdELy8vLy9lajhEQVAvLy8vOThQd01BLy8vLy8zNC9Bd0QvLy8vL2dEOERBUC8vLy8rQ1B3TUEvLy8vLzRRL0F3RC8vLy8vaGo4REFQLy8vLytJUHdNQS8vLy8vNG8vQXdELy8vLy9qRDhEQVAvLy8vK09Qd01BLy8vLy81QS9Bd0QvLy8vL2tqOERBUC8vLy8rVVB3TUEvLy8vLzVZL0F3RC8vLy8vbUQ4REFQLy8vLythUHdNQS8vLy8vNXcvQXdELy8vLy9uajhEQVAvLy8vK2dQd01BLy8vLy82SS9Bd0QvLy8vL3BEOERBUC8vLy8rbVB3TUEvLy8vLzZnL0F3RC8vLy8vcWo4REFQLy8vLytzUHdNQS8vLy8veW8vQXdCQnFQTVJDeHAxQWdBQWRnSUFBSGNDQUFCNEFnQUFlUUlBQUhvQ0FBQjdBZ0JCMFBNUkN4Y0NBQUFBa0U0RUFBSUFBQURnVGdRQUFnQUFBREJQQkFCQjhQTVJDNjhCZFFJQUFId0NBQUI5QWdBQWZnSUFBSDhDQUFDQUFnQUFnUUlBQUFBQUFBQUZBQUFBaURNRUFBVUFBQUJRTkFRQUNRQUFBSmdqQkFBRUFBQUFHRFVFQUFRQUFBQzROUVFBQWdBQUFJQlBCQUFFQUFBQVdEWUVBQVFBQUFENE5nUUFBUUFBQVBCWEJBQUJBQUFBR0ZnRUFBSUFBQURRVHdRQUFnQUFBQ0JRQkFBQ0FBQUFjRkFFQUFJQUFBREFVQVFBQWdBQUFCQlJCQUFDQUFBQVlGRUVBQUlBQUFDd1VRUUFBZ0FBQUFCU0JBQkJxUFVSQ3hwMUFnQUFnZ0lBQUlNQ0FBQ0VBZ0FBaFFJQUFJWUNBQUNIQWdCQjBQVVJDNDhCQXdBQUFJZzRCQUFEQUFBQUFEa0VBQU1BQUFCNE9RUUFBd0FBQVBBNUJBQURBQUFBYURvRUFBb0FBQUNnSUFRQURBQUFBREFkQkFBUUFBQUFhQklFQUFZQUFBQlFLZ1FBQmdBQUFFQXJCQUFHQUFBQU1Dd0VBQVlBQUFBZ0xRUUFCZ0FBQUJBdUJBQUdBQUFBQUM4RUFBWUFBQUR3THdRQUJnQUFBT0F3QkFBR0FBQUEwREVFQUFFQUFBQkFXQVFBUWVqMkVRdGFkUUlBQUlnQ0FBQ0pBZ0FBaWdJQUFJc0NBQUNNQWdBQWpRSUFBRXhkQWdBc3NRRUFkVE1EQUxVM0F3QUFBQUFBYVBvREFPZCtBQUFBQUFBQUFBQ0FBa0FzQklBQUFJQUNBQUFBQUFBQUFBQ09BZ0FBandJQUFKQUNBRUhNOXhFTE5nWUFBQUNSQWdBQUNBQUFBRmo3QXdCSE9BQUFBQUFBQUFDQUFFQkFMUVNBQUlBQlFBQUFBQUFBQUFBQWtnSUFBSk1DQUFDVUFnQkJqUGdSQ3lOdUFBQUFsUUlBQUFnQUFBQlkrd01BMm1JQUFDQUFFQUFBQUFBQVlDMFVnQUFBQVFCQnVQZ1JDd3FXQWdBQWx3SUFBSmdDQUVITStCRUxPbTRBQUFDWkFnQUFDQUFBQUdqMUF3QU5pQUFBQUlBQUlBQUFBQUJBckFTZ0FJQUFDQUFBQUFBQUFBQUFtZ0lBQUpzQ0FBQ2NBZ0FBblFJQVFaRDVFUXMrR0FBQUFKNENBQUFJQUFBQUNBQUFBR2oxQXdBWkZ3QUFBQUFBUUFBQUFFQkFMQVRBQUlBQVNBQUFBQUFBQUFBQW53SUFBS0FDQUFDaEFnQUFvZ0lBUWRqNUVRcytHQUFBQUtNQ0FBQUlBQUFBQ0FBQUFHajFBd0JOS1FFQUFBQUJBQUFBQVFCQUxBV0FBSUFCQ0FBQUFBQUFBQUFBcEFJQUFLVUNBQUNtQWdBQXB3SUFRYUQ2RVFzK0dBQUFBS2dDQUFBSUFBQUFDQUFBQUpqMEF3QnI3UUFBQUFBQUFBQUFRQkJBUEF5QUFBQkFFQUFBQUFBQUFBQUFxUUlBQUtvQ0FBQ3JBZ0FBckFJQVFlajZFUXNtREFBQUFLMENBQUFJQUFBQUNBQUFBSmowQXdBTTdRQUFBZ0FBQUFBQkFBQkNQQXlBQUFFQVFaajdFUXNPcmdJQUFLOENBQUN3QWdBQXNRSUFRYkQ3RVFza0RBQUFBTElDQUFBSUFBQUFDQUFBQUpqMEF3Q3Y3QUFBQUlBQUVBQUFBQUJBdkF5UUFFSGcreEVMRHJNQ0FBQzBBZ0FBdFFJQUFMWUNBRUg0K3hFTEpBd0FBQUMzQWdBQUNBQUFBQWdBQUFDWTlBTUFIZTRBQUFDQUJBQUFBQUFBUUx3TWdBQkJxUHdSQ3c2NEFnQUF1UUlBQUxvQ0FBQzdBZ0JCd1B3UkN5VU1BQUFBdkFJQUFBZ0FBQUFJQUFBQW1QUURBS3p0QUFBQUFBQkFDQUFBQUVBOERNQUlBRUh3L0JFTERyMENBQUMrQWdBQXZ3SUFBTUFDQUVHSS9SRUxQZ3dBQUFEQkFnQUFDQUFBQUFnQUFBQ1k5QU1BNyt3QUFBQUFBQVFBQUFBQlFEd01oQUFBQUFFQUFBQUFBQUFBQU1JQ0FBRERBZ0FBeEFJQUFNVUNBRUhRL1JFTFBnd0FBQURHQWdBQUNBQUFBQWdBQUFDWTlBTUFLTzBBQUFBQUJBQUFBQUFJUUR3TWdBQUFBQWlZOUFNQWgrMEFBQkFBQUFBQWdBQUFVRHdNZ0FDQUFFR1kvaEVMRHNjQ0FBRElBZ0FBeVFJQUFNb0NBRUd3L2hFTE9nd0FBQURMQWdBQUNBQUFBQWdBQUFCWTlBTUFDclFBQUFBQUFBQUFBRUFJUUN3RWdBQUF3QXdBQUFBQUFBQUFBTXdDQUFETkFnQUF6Z0lBUWZUK0VRczFDUUFBQU04Q0FBQUlBQUFBV1BRREFMVzBBQUFCRUFBQUFBQUFBRUU4QklBQUFJQUVBQUFBQUFBQUFBRFFBZ0FBMFFJQUFBZ0FRYlQvRVFzMkNRQUFBTklDQUFBSUFBQUFnSDhFQUNlMEFBQUFBQUFBSUFnQUFFRThCSUFnQ0lBRUFBQUFBQUFBQUFEVEFnQUExQUlBQU5VQ0FFSDAveEVMTnRBQ0FBRFdBZ0FBQ0FBQUFGajBBd0RUc3dBQVFBQUFBQ0FBQUFCQUxBU0FJQUNBQkFBQUFBQUFBQUFBMXdJQUFOZ0NBQURaQWdCQnRJQVNDellKQUFBQTJnSUFBQWdBQUFDQWZ3UUFiYlFBQUFBQUFBQUFBQWdCUVR3RWdBQUFpQVVBQUFBQUFBQUFBTnNDQUFEY0FnQUEzUUlBUWZTQUVnczIwQUlBQU40Q0FBQUlBQUFBV1BRREFQTzBBQUFBQUFDQUFBQUFBVUFzQklBQUFJQUZBQUFBQUFBQUFBRGZBZ0FBNEFJQUFPRUNBRUcwZ1JJTElBa0FBQURpQWdBQUNBQUFBSmowQXdCTzdRQUFnUUFBQUFBQUFBREJQQXlBQUVIZ2dSSUxFZU1DQUFEa0FnQUFDQUFBQU9VQ0FBQUlBRUg4Z1JJTGN3d0FBQURtQWdBQUNBQUFBQWdBQUFBQUFBQUFtUFFEQURUdUFBQUFBQUlBQUFBQUFrQThEb0FBQUFBQ21QUURBRXpzQUFBQUFBSUFBQUFBUUVBOERvQUFBQUJBbVBRREFNenRBQUFBRUlBQUFBQUFBRUE4aklBQUFBQUFtUFFEQUFMdUFBQUFBQUFBQUVCQUFFQThESUFBUUVBQVFmaUNFZ3NPNXdJQUFPZ0NBQURwQWdBQTZnSUFRWkNERWdzK0RBQUFBT3NDQUFBSUFBQUFDQUFBQUpqMEF3QnE3QUFBQkFBQUFBQUFBQUpFUEF5QUFBQUFBZ0FBQUFBQUFBQUE3QUlBQU8wQ0FBRHVBZ0FBN3dJQVFkaURFZ3MvREFBQUFQQUNBQUFJQUFBQUNBQUFBRmowQXdEdnN3QUFBQUJBZ0FBQUFBQkFMRVNBQUFDQUJIajVBd0NES0FBQUFBQUlDQUFBQUFCQUxBeUlBQUFSQUVHZ2hCSUxDdkVDQUFEeUFnQUE4d0lBUWJTRUVndWZBeU1BQUFEMEFnQUFDQUFBQUhqNUF3QnJKZ0FBQUFnQVFBQUFBQUJBTEFUQUFBQVJBSGo1QXdEWUpnQUFBQWdBQUFBQUFCQkFMQVNBQUFBUkVIajVBd0N4SmdBQUFFQUFBQkFBQUFCQWJBU0FFQUFSQUhqNUF3QTRLUUFBQkFBQUFBQWdBQUJFTEFTQUFDQVJBUFVDQUFEMkFnQUE5d0lBQVBnQ0FBRDVBZ0FBK2dJQUFQc0NBQUQ4QWdBQS9RSUFBUDRDQUFEL0FnQUFBQU1BQUFFREFBQUNBd0FBQXdNQUFBUURBQUFGQXdBQUJnTUFBQWNEQUFBSUF3QUFNSWdFQU5xd0FRQUFBQUFBQUFBQkFrQUVDSWdnQUlFQ01JZ0VBRGV5QVFBQUFnQUFBQUFBZ0VBR0NJZ2dBSUNDTUlnRUFLK3hBUUJBQUFBQUFBQUFnRUFFQ0lnZ0FJQ0NNSWdFQUdpeEFRQUFBQUFBQURBQUFFQUVDSWdnTUlBQ01JZ0VBTzJ4QVFBUUFBSUFBQUFBQUZBRUNvZ2dBSUFDTUlnRUFKMndBUUFBQUlBQUJBQUFBRUFFaUlna0FJQUNaYmdBQUw0V0FBQ05xUUFBZnU4QUFFWXFBQUFvSVFFQVlMc0FBTitJQUFCYjRnQUEvTkFBQUJiZ0FBRCtOZ0VBTFJFQUFPbzJBUUFKRVFBQVowMEFBTytoQUFBZ0VRQUE2OHNBQVB3UUFBRGROZ0VBUWVDSEVnditBWVc2QUFCWVBBQUFqQjBBQUM4ZEFBQmhQQUFBbEIwQUFEY2RBQUJNUEFBQWdSMEFBQ1FkQUFDelBBQUF5UjBBQUd3ZEFBQjNIUUFBdXJvQUFCb2RBQUNRdWdBQStUOEJBQ0x2QUFBdTd3QUF2bThBQU0wMUFRQzhHZ0VBb3owQUFPK0hBQUEzNVFBQUFpZ0JBUDRFQUFBSkF3QUFDZ01BQUFzREFBQU1Bd0FBRFFNQUFBNERBQUFQQXdBQUVBTUFBQkVEQUFBU0F3QUFFd01BQUJRREFBQVZBd0FBRmdNQUFCY0RBQUFZQXdBQUdRTUFBQm9EQUFBYkF3QUFIQU1BQUIwREFBQWVBd0FBSHdNQUFDQURBQUFoQXdBQUlnTUFBQ01EQUFBa0F3QUFKUU1BQUNZREFBQW5Bd0FBS0FNQUFDa0RBQUFxQXdBQUt3TUFBQ3dEQUVIb2lSSUxCaTBEQUFBdUF3QkIrSWtTQ3dZdEF3QUFMd01BUVlpS0Vnc0dMUU1BQURBREFFR1lpaElMQmkwREFBQXhBd0JCcUlvU0N3WXRBd0FBTWdNQVFiaUtFZ3NHTFFNQUFETURBRUhJaWhJTEJpMERBQUEwQXdCQjJJb1NDd1l0QXdBQU5RTUFRZWlLRWdzR0xRTUFBRFlEQUVINGloSUxCaTBEQUFBM0F3QkJpSXNTQ3dZdEF3QUFPQU1BUVppTEVndHFMUU1BQURrREFBQTZBd0FBT3dNQUFEd0RBQUFBQUFBQVBRTUFBRDREQUFENm5nSUFYRHdEQU45OEFnQmNQQU1BUFo4Q0FBQUFBQURBZ0FRQXlld0FBQUVBQUFBQUFBQ0F3VHdNZ0FBQUFJQUFBQUFBQUFBQUFEOERBQUJBQXdBQVFRTUFBT1VDQUFCQ0F3QkJqSXdTQzZZQjR3SUFBRU1EQUFBSUFBQUE1UUlBQUFnQUFBRGFDZ0FBU0xjQUFCUXNBUUFSY0FBQU8zQUFBTUFvQVFBekl3QUFIZDRBQU5OOUFBQUlGd0VBd2hBQUFGWWxBQUJmNndBQXViTUFBRmV5QUFEbnNnQUFhcklBQUFBQUFBQjRrUVFBUnh3QUFFQUFBQUlBQUFBQVFBUUVnMkFBd0FCNGtRUUFJaHdBQUFBQUFBQUFJQUFJQUFRRWdXQWd3QWdBQUFBQUFBQUFBRVFEQUFCRkF3QUFSZ01BQUVjREFBQklBd0JCdkkwU0N4SkpBd0FBU2dNQUFFc0RBQUJNQXdBQVRRTUFRZGlORWdzUlRnTUFBRThEQUFBSUFBQUFDQUFBQUFnQVFmU05FZ3RyVGdNQUFGQURBQUFJQUFBQUNBQUFBQWdBQUFCNm9RQUF2czhBQU9EbUFBQ01GUUFBS0l3RUFCa29BQUFBQUFBZ0FBQUVBRUFFQUtBaEFFUUFHSWNFQUxVbkFBQUFBQUFDQUVBQUFFQUVBS0loUUVRQUdJY0VBSmNuQUFBQUFCQUFBQkFBQUVBRUVLQWhFRVFBUWVpT0Vnc0dVUU1BQUZJREFFSDRqaElMQmxNREFBQlVBd0JCaUk4U0N3WlZBd0FBVmdNQVFaaVBFZ3NHVndNQUFGZ0RBRUdvanhJTEJsRURBQUJaQXdCQnVJOFNDeDlSQXdBQVdnTUFBQ2lNQkFDZktBQUFBQUFJQUFBQ0FBQkFCQWlnSVFKQUFFSGdqeElMQmxzREFBQmNBd0JCOEk4U0N5NVhBd0FBWFFNQUFHaUlCQUQ0dHdBQUFBRUFBQUFBQUVCQUZRQ0FJQUFBUUFBQUFBQUFBQUFBWGdNQUFGOERBRUdva0JJTExtQURBQUJoQXdBQTJJZ0VBS3J5QUFBQUFBZ0FBQUFBQWtBRUNJZ2dBSUFDQUFBQUFBQUFBQUF0QXdBQVlnTUFRZUNRRWdzdVl3TUFBR1FEQUFEb2l3UUFFelVBQUFBUUFBQUFBQUJBUUJRQWdDQUFBRUFBQUFBQUFBQUFBR0FEQUFCbEF3QkJtSkVTQ3g5bUF3QUFad01BQUlDUEJBQkN2d0FBQUFCQUFBZ0FBQUJBQkVDSktBQ1FBRUhBa1JJTEJtZ0RBQUJwQXdCQjBKRVNDeDlxQXdBQWF3TUFBT2lMQkFBanRnQUFBQUFBQ0FBQWdBQkFCQUNJSUFDQUFFSDRrUklMQm1NREFBQnNBd0JCaUpJU0N4OW1Bd0FBYlFNQUFDaU1CQUQwSmdBQUFBQUFBQUFBRWdCQUJBQ2dJUUJTQUVHd2toSUxCbTREQUFCdkF3QkJ3SklTQ3k1WEF3QUFjQU1BQU5pSUJBQVF0UUFBQUFBQUVBQUFBQUpBQkFDWUlBQ0FBZ0FBQUFBQUFBQUFjUU1BQUhJREFFSDRraElMTG1NREFBQnpBd0FBYUlnRUFEaXFBQUFBSUFBQUFBQWdBRUEwQUlBZ0FDQkFBQUFBQUFBQUFBQjBBd0FBZFFNQVFiQ1RFZ3NmWUFNQUFIWURBQUFvakFRQTBpZ0FBQUFnUUFBQUFBQUFRQ1JBb0NFQVFBQkIySk1TQ3daM0F3QUFlQU1BUWVpVEVnc2ZWd01BQUhrREFBQ0Fqd1FBU3JRQUFBQUFBQUFBQVFRQVFBUUFpU0FCbEFCQmtKUVNDd1o2QXdBQWV3TUFRYUNVRWdzZmFnTUFBSHdEQUFDQWp3UUE1RDhCQUNBQUFBQUFnQUFBWUFRQWlTQ0FrQUJCeUpRU0N3WjlBd0FBZmdNQVFkaVVFZ3MzYWdNQUFIOERBQUFvakFRQUtTY0FBQUFBQUFBQUNRQUFRQVFBb0NFSlFBQVlod1FBMXljQUFBQUFDQUFJQUFBQVFBUUlvQ2tBUkFCQm1KVVNDd2FBQXdBQWdRTUFRYWlWRWdzR2dnTUFBSU1EQUVHNGxSSUxCbGNEQUFDRUF3QkJ5SlVTQ3g5UkF3QUFoUU1BQUlDUEJBQWM0d0FBQUVRQUFBQUFBQUJBUkFDSklBQ1FBRUh3bFJJTEJvWURBQUNIQXdCQmdKWVNDMDlxQXdBQWlBTUFBSUNQQkFDUnRBQUFBQUFBQVFBQVFBQkFCQUNKSUFEUUFBaUxCQUR3UmdBQWdBQUFBQUFBQUFMQUJBQ0pJQURRQWdpTEJBQ1hHUUVBQUFBSUFBQUFCQUJBQkFpSklBRFVBRUhZbGhJTEJva0RBQUNLQXdCQjZKWVNDd2FMQXdBQWpBTUFRZmlXRWdzR2pRTUFBSTREQUVHSWx4SUxCbW9EQUFDUEF3QkJtSmNTQ3dhSkF3QUFrQU1BUWFpWEVnc2VpUU1BQUpFREFBRG9pd1FBZkJvQkFBQUFBQUFFUUFBQVFBUUFnQ1JBQUVIUWx4SUxCcElEQUFDVEF3QkI0SmNTQ3gxbUF3QUFsQU1BQVBDYUJBQlBLQUVBUUFBQUFDQUFBQUJBQkFDQUlBQkJpSmdTQ3pkbUF3QUFsUU1BQU9pTEJBQzZLUUFBUUFBQUFBRUFBQUJBQkFDQUlRQUFBQkNNQkFDSUtRQUFBQUFBSUFBQVFBQkFCQUNnSVFCQUFFSEltQklMQnBZREFBQ1hBd0JCMkpnU0N3WlhBd0FBbUFNQVFlaVlFZ3NHWmdNQUFKa0RBRUg0bUJJTFdwWURBQUNhQXdBQU9KZ0VBRms0QUFBQUFBQUFRZ0FBQUFBRUJJSmlBb0FBVUpnRUFQOStBQUFBQUFDQ0FBQUFBQUFFQklJZ0NBQUVBQUFBQUFBQUFBQ2JBd0FBbkFNQUFKMERBQUNlQXdBQW53TUFBS0FEQUFDaEF3QkIzSmtTQ3dhaUF3QUFvd01BUWV5WkVnc2FwQU1BQUtVREFBQ2RBd0FBbmdNQUFKOERBQUNnQXdBQW9RTUFRWkNhRWd0ZXBnTUFBS2NEQUFBb2pBUUFIeWtBQUFBQUFBUUFBZ0FBUUFRQXBDRUNRQURvaXdRQWFXZ0FBQUFBSUFBQUFBQVFRQVFnZ0NBQUFCQW9qQVFBYUNnQUFBQUFBQUFBZ0FDQVFBUUFvQ0dBUUlBQUFBQUFBQUFBQUtnREFBQ3BBd0JCK0pvU0N3YXFBd0FBcXdNQVFZaWJFZ3NHckFNQUFLMERBRUdZbXhJTEJsY0RBQUN1QXdCQnFKc1NDd1pYQXdBQXJ3TUFRYmliRWdzZlpnTUFBTEFEQUFEWWlBUUE4N1VBQUFBQWdBQUNBQUFBUUFTQWlDSUFnQUJCNEpzU0N3YXhBd0FBc2dNQVFmQ2JFZ3R1WXdNQUFMTURBQURvaXdRQXZCNEJBQUFBQVFBQUFDQUFRQVFCZ0NBQUlBRDRqUVFBZVI0QkFBQUlBQUFBQkFBQVFBd0JnQ0FFSUFENGpRUUFUQjRCQUFBQUFBQUNBQ0FBUUFRQmdDSUFJQUQ0alFRQUpISUFBQVFBQUFBQUNBQUFSQVFCZ0NBSUlBQ0Fqd1FBczNJQVFlZWNFZ3NYaUVBRUFJa2dBSkNJQUFBQUFBQUFBQUMwQXdBQXRRTUFRWWlkRWdzR3RnTUFBTGNEQUVHWW5SSUxCcmdEQUFDNUF3QkJxSjBTQ3dhNkF3QUF1d01BUWJpZEVnc0d2QU1BQUwwREFFSEluUklMQm1ZREFBQytBd0JCMkowU0N3YTBBd0FBdndNQVFlaWRFZ3NHdEFNQUFNQURBRUg0blJJTEJyUURBQURCQXdCQmlKNFNDeTVxQXdBQXdnTUFBR2lJQkFDTVpBQUFnQUFBQUFBQUFFREFGQUNBSUFBQVFBQUFBQUFBQUFBQXd3TUFBTVFEQUVIQW5oSUxMbUFEQUFERkF3QUFhSWdFQUUrMkFBQUFBZ0FFQUFBQUFFQVdBSVFnQUFCQUFBQUFBQUFBQUFER0F3QUF4d01BUWZpZUVnc2ZZQU1BQU1nREFBRFlpQVFBMkxVQUFBQUFBQUVBQUJBQVFBUUFpU0FBa0FCQm9KOFNDd1pxQXdBQXlRTUFRYkNmRWdzZll3TUFBTW9EQUFBb2pBUUFVaWtBQUFBQUFBQ0FBUUFBUUFRQW9LRUJRQUJCMko4U0N3YkxBd0FBekFNQVFlaWZFZ3RDVndNQUFNMERBQUN3a0FRQTF6d0FBQUFBQUFBQUFJQVFCQVFFb0dJQ2dCQUFBQUFBQUFBQUFNNERBQURQQXdBQTBBTUFBTkVEQUFEU0F3QUEwd01BQU5RREFFRzBvQklMTTlVREFBRFdBd0FBQ0FBQUFBZ0FBQURTQXdBQTB3TUFBQWdBQUFDd2tBUUFzakVBQUVBQUFBQUFBRUFBUkFRRW9HSUN3QUJCOEtBU0N4clhBd0FBMkFNQUFOa0RBQURhQXdBQTBnTUFBTk1EQUFEYkF3QkJsS0VTQ3pQVkF3QUEzQU1BQUFnQUFBQUlBQUFBMGdNQUFOTURBQUFJQUFBQVVKa0VBRzFFQVFBRUFBQWdBQUFBQUFRRUJLQmlBb0FBUWRDaEVnc1oxUU1BQU4wREFBQUlBQUFBQ0FBQUFOSURBQURUQXdBQUNBQkI5S0VTQ3pjRkFnQUEzZ01BQUFnQUFBQUlBQUFBQ1FJQUFBb0NBQUFJQUFBQVVKa0VBTmNPQUFBQUFBQUFBQUVBQkFBRUJJQmlBNEFFeTY4QkFFRzBvaElMR2dVQ0FBRGZBd0FBNEFNQUFPRURBQURpQXdBQTR3TUFBT1FEQUVIWW9oSUxad1VDQUFEbEF3QUFDQUFBQUFnQUFBQUpBZ0FBQ2dJQUFBZ0FBQUFBQUFBQUFKb0VBR29jQUFBQUFBQUJBQUJBQUFBRUJJRmdBTUFBZUpFRUFPVWJBQUFBSUFBQ0FBQUFBQUFrQklOZ0FNQUFlSkVFQUFRY0FBQUFBQUFBQWdBQkFBQUVCSUZpQU1FQVFjaWpFZ3NSVGdNQUFPWURBQUFJQUFBQUNBQUFBQWdBUWVTakVnc1M1d01BQU9nREFBRHBBd0FBNmdNQUFPc0RBRUdBcEJJTEV1d0RBQUR0QXdBQTdnTUFBTzhEQUFEd0F3QkJuS1FTQ3dueEF3QUE4Z01BQUFnQVFiQ2tFZ3NHOHdNQUFQUURBRUhBcEJJTEVVNERBQUQxQXdBQUNBQUFBQWdBQUFBSUFFSGNwQklMVGs0REFBRDJBd0FBQ0FBQUFBZ0FBQUFJQUFBQVVKa0VBSzVFQVFBQUFBQUVBQUFBQ0FBRUJJUmlBb0FJQUFBQUFBQUFBQUQzQXdBQStBTUFBUGtEQUFENkF3QUErd01BQVB3REFBRDlBd0JCdEtVU0N6TUZBZ0FBL2dNQUFBZ0FBQUFJQUFBQUNRSUFBQW9DQUFBSUFBQUFVSmtFQUVtK0FBQUFFQUFBQUFBUUFBQVVCSUJpQXBBQVFmQ2xFZ3NhL3dNQUFBQUVBQUFCQkFBQUFnUUFBQU1FQUFBRUJBQUFCUVFBUVpTbUVndFdCUUlBQUFZRUFBQUlBQUFBQ0FBQUFBa0NBQUFLQWdBQUNBQUFBTkNZQkFBazlBQUFBQUFLQUFBQUFBQUFCQTZBWXdLQUFRQUFBQUFBQUFBQUJ3UUFBQWdFQUFBSkJBQUFDZ1FBQUFrQ0FBQUtBZ0FBQ3dRQVFmU21FZ3RXREFRQUFBMEVBQUFJQUFBQUNBQUFBQWtDQUFBS0FnQUFDQUFBQU5DWUJBQ2U4d0FBUUFBQUFBQUFDQUJBQkFTQVl3S0lBUUFBQUFBQUFBQUFEZ1FBQUE4RUFBQVFCQUFBRVFRQUFBa0NBQUFLQWdBQUVnUUFRZFNuRWd0V0RBUUFBQk1FQUFBSUFBQUFDQUFBQUFrQ0FBQUtBZ0FBQ0FBQUFOQ1lCQUJnOHdBQUFBRUFFQUFBQUFBQUJRU1FZd0tBQVFBQUFBQUFBQUFBRkFRQUFCVUVBQUFXQkFBQUZ3UUFBQWtDQUFBS0FnQUFHQVFBUWJTb0Vnc3pEQVFBQUJrRUFBQUlBQUFBQ0FBQUFBa0NBQUFLQWdBQUNBQUFBRkNaQkFDSXVBRUFBQUlBQUFBRUFBQUFCZ1NBWWdhQUFFSHdxQklMR2hvRUFBQWJCQUFBSEFRQUFCMEVBQUFlQkFBQUh3UUFBQ0FFQUVHVXFSSUxNd1VDQUFBaEJBQUFDQUFBQUFnQUFBQUpBZ0FBQ2dJQUFBZ0FBQUJRbVFRQTZiOEJBQUVRQUFBQUFBQUFBUlFFZ0dJQ2dBQkIwS2tTQ3hvaUJBQUFJd1FBQUNRRUFBQWxCQUFBSmdRQUFDY0VBQUFvQkFCQjlLa1NDek1GQWdBQUtRUUFBQWdBQUFBSUFBQUFDUUlBQUFvQ0FBQUlBQUFBVUprRUFNQy9BUUFBSUVBQUFBQUFBQUFrUklCaUFvQUFRYkNxRWdzYUtnUUFBQ3NFQUFBc0JBQUFMUVFBQUM0RUFBQXZCQUFBTUFRQVFkU3FFZ3N6QlFJQUFERUVBQUFJQUFBQUNBQUFBQWtDQUFBS0FnQUFDQUFBQUZDWkJBQ1FFQUFBQUFBUUFJQUFBQUFBQkJTQTRnS0FBRUdRcXhJTEdqSUVBQUF6QkFBQU5BUUFBRFVFQUFBMkJBQUFOd1FBQURnRUFFRzBxeElMVmdVQ0FBQTVCQUFBQ0FBQUFBZ0FBQUFKQWdBQUNnSUFBQWdBQUFEUW1BUUFjdlFBQUFBQkFBQkFBQUFBQUFVRWdHTUNnQUVBQUFBQUFBQUFBRG9FQUFBN0JBQUFQQVFBQUQwRUFBQUpBZ0FBQ2dJQUFENEVBRUdVckJJTE1Rd0VBQUEvQkFBQUNBQUFBQWdBQUFBSkFnQUFDZ0lBQUFnQUFBRHdtZ1FBWHlnQkFBQUFCQUFnQUFBQUFBUUVnQ0FBUWRDc0Vnc2Y4d01BQUVBRUFBQlFtUVFBcW04QUFFQUFnQUFBQUFBQVFBU0VnR0lDZ0FCQitLd1NDeHBCQkFBQVFnUUFBRU1FQUFCRUJBQUFDUUlBQUFvQ0FBQkZCQUJCbkswU0N6TUZBZ0FBUmdRQUFBZ0FBQUFJQUFBQUNRSUFBQW9DQUFBSUFBQUFVSmtFQUNZckFRQUFBQUFBTUFBQUFBQUVCSUJ5QW9BQVFkaXRFZ3NhUndRQUFFZ0VBQUJKQkFBQVNnUUFBQWtDQUFBS0FnQUFTd1FBUWZ5dEVndFdCUUlBQUV3RUFBQUlBQUFBQ0FBQUFBa0NBQUFLQWdBQUNBQUFBTkNZQkFDMjlBQUFBQUFBQUFBQkJBQUFCQVNBWXdPRUFRQUFBQUFBQUFBQVRRUUFBRTRFQUFCUEJBQUFVQVFBQUFrQ0FBQUtBZ0FBVVFRQVFkeXVFZ3N6REFRQUFGSUVBQUFJQUFBQUNBQUFBQWtDQUFBS0FnQUFDQUFBQUZDWkJBQ2Rjd0FBQUFBQUFFQVFBQUFBQkFTQVloS0FBRUdZcnhJTEdsTUVBQUJVQkFBQVZRUUFBRllFQUFBSkFnQUFDZ0lBQUZjRUFFRzhyeElMVmdVQ0FBQllCQUFBQ0FBQUFBZ0FBQUFKQWdBQUNnSUFBQWdBQUFEUW1BUUEyL01BQUFBQUFFQUFCQUFBQUFRRXdHTUdnQUVBQUFBQUFBQUFBRmtFQUFCYUJBQUFXd1FBQUZ3RUFBQUpBZ0FBQ2dJQUFGMEVBRUdjc0JJTGJnd0VBQUJlQkFBQUNBQUFBQWdBQUFBSkFnQUFDZ0lBQUFnQUFBQlFtUVFBYXpnQUFBQUFBSUlBQUFBQUFBUUVnbUlDZ0FBd2xnUUFGMzhBQUFBQUFBQUFDQUFFQUFRRWdDQUlBQVFBQUFBQUFBQUFBS1FEQUFCZkJBQUFuUU1BQUo0REFBQ2ZBd0FBb0FNQUFLRURBRUdVc1JJTEJxWURBQUJnQkFCQnBMRVNDeGtGQWdBQVlRUUFBQWdBQUFBSUFBQUFDUUlBQUFvQ0FBQUlBRUhJc1JJTFFmTURBQUJpQkFBQVVKa0VBTzcwQUFBQUFBQUFBUUFBQVFBRUJJQmpBb0FCQUFBQUFBQUFBQUFNQkFBQVl3UUFBQWdBQUFBSUFBQUFDUUlBQUFvQ0FBQUlBRUdVc2hJTFV3VUNBQUJrQkFBQUNBQUFBQWdBQUFBSkFnQUFDZ0lBQUFnQUFBQnBGd0VBTDBNQkFCRkRBUUR3REFBQXJFSUJBSll1QVFDdERBQUFBQUFBQUFDYUJBRHZDd0VBQUFBQUFBSUNBQUFBQkFTQVlnS0FBRUh3c2hJTEdRVUNBQUJsQkFBQUNBQUFBQWdBQUFBSkFnQUFDZ0lBQUFnQVFaU3pFZ3NqOFFNQUFHWUVBQUFJQUFBQVVKa0VBSkMvQVFBQUFBQUFBQ0FDQUFBRUJJQmlJb0lBUWNDekVnc2Fad1FBQUdnRUFBQnBCQUFBYWdRQUFHc0VBQUJzQkFBQWJRUUFRZVN6RWdzekJRSUFBRzRFQUFBSUFBQUFDQUFBQUFrQ0FBQUtBZ0FBQ0FBQUFEQ1dCQUFUS0FFQUFBQUFBRUFBZ0FBQUJBU0FZQUNBQUVHZ3RCSUxTdkVEQUFCdkJBQUFDQUFBQUFBQUFBQlFtUVFBRDJrQUFBQUFBQUFBQUFnZ0FBUUVnR0lDaUNBQUFBQUFBQUFBQUhBRUFBQnhCQUFBY2dRQUFITUVBQUIwQkFBQWRRUUFBSFlFQUVIMHRCSUxNd1VDQUFCM0JBQUFDQUFBQUFnQUFBQUpBZ0FBQ2dJQUFBZ0FBQUJRbVFRQWp6WUJBQUFBQUFBQUNCQUFBQVFFZ0dJS2tBQkJzTFVTQ3hwNEJBQUFlUVFBQUhvRUFBQjdCQUFBQ1FJQUFBb0NBQUI4QkFCQjFMVVNDOGtLQlFJQUFIMEVBQUFJQUFBQUNBQUFBQWtDQUFBS0FnQUFDQUFBQUFBQUFBRFA4Z0FBQUFRQWdBQUFBQUFBQkFDQUFBQUFBS0k3QVFENVB3RUFJdThBQUM3dkFBQ2lPd0VBWmJnQUFMNFdBQUNOcVFBQWJSc0JBSDd2QUFCR0tnQUFLQ0VCQUdDN0FBRGZpQUFBb2pzQkFKbStBUUFKdlFFQTNUb0FBSyszQVFDK3ZnRUFmanNBQURLNEFRQkJ2d0VBUlRzQUFBTzRBUUFTdndFQUREc0FBTlMzQVFEanZnRUE5VG9BQU1LM0FRRFJ2Z0VBbXpzQUFFcTRBUUJadndFQVlqc0FBQnU0QVFBcXZ3RUFLVHNBQU95M0FRRDd2Z0VBV2JzQkFPd05BQUNLUkFFQUM3NEFBRjI0QVFCc3Z3RUF1cjRCQVArN0FRQXQ0Z0FBVWRNQUFGSzdBUUFQNGdBQU05TUFBUEs0QVFEeDRRQUFGZE1BQVBpN0FRQWw0Z0FBU2RNQUFFdTdBUUFINGdBQUs5TUFBT3U0QVFEcDRRQUFEZE1BQVBHN0FRQWQ0Z0FBUWRNQUFFUzdBUUQvNFFBQUk5TUFBT1M0QVFEaDRRQUFCZE1BQURSa0FBQWNjd0FBZ2FFQUFCUkRBUURBUWdFQXp3d0FBSkZDQVFDT0xnRUFwUXdBQUs5Q0FRQzREQUFBZXk0QkFJd01BQURlUWdFQUtjc0FBUHhDQVFBZlF3RUF5MElCQU9BTUFBQ2NRZ0VBY0w0QkFJKzhBUUExNGdBQVdkTUFBT1BRQUFCM0ZRQUFZcnNCQUJmaUFBQTcwd0FBM2RBQUFIRVZBQUQ1dUFFQStlRUFBQjNUQUFEUzBBQUFheFVBQUtJN0FRQmI0Z0FBL05BQUFCYmdBQUQrTmdFQUxSRUFBT28yQVFBSkVRQUFaMDBBQU8raEFBQWdFUUFBNjhzQUFQd1FBQURkTmdFQW9qc0JBQTlxQUFCam9BQUE4T0FBQUYvZkFBQ2lPd0VBWGxZQUFKOWRBUUROU3dBQU1Db0FBSHdXQUFCZHVBRUFNTElCQUtOaUFBQlpUZ0FBOHRFQUFFNi9BQURDQ1FBQXI5RUFBQXU0QUFBRDBnQUFnYmtBQUYrOEFRQVUwZ0FBaDc4QUFEeWFBQUJ6VGdBQStkRUFBQ2xPQUFDdlJBQUFGazRBQUZoR0FBRENYZ0FBaGpFQUFHc3JBUUNDR3dBQXNqd0JBS1U4QVFBVUVnQUFuZkVBQU9rWEFRRFZDZ0FBaC9FQUFOY1hBUURDaUFBQVZid0JBSmRFQUFCWU1BRUFPek1BQUNvekFBQVZhZ0FBZTEwQkFOSTdBQUNhaUFBQXg5RUFBTFB4QUFEN0Z3RUFqRVFBQU00WUFBQ21pQUFBbDlFQUFNSGJBQUI4dkFFQTF4SUFBRGE0QUFDMEVBQUFzK0VBQU4vaUFBQStQQUFBeDdvQUFKMjZBQUN0dWdBQWVMb0FBQ1lVQUFCc3VBRUFJMUVBQU13NEFBRElPd0FBbzBRQUFPNHlBUUNzN3dBQTN6Z0FBUHE0QUFBbHVBQUFDdElBQUxtYUFBQzRHQUFBdjVvQUFFVjFBQUNidVFBQUc5SUFBTTN4QUFDSVF3RUFQRHdBQU1XNkFBQ2J1Z0FBcTdvQUFIYTZBQUFsZFFBQXJUOEJBTkJRQUFEeGR3QUFuUGNBQUIxTEFBQXVVZ0FBODEwQUFOY2FBUUR3WWdBQXNmY0FBQkhBQUFCdlB3RUFLOEFBQUlJZ0FRQjE5UUFBd2o4QkFNNC9BUUNDOVFBQUNqOEJBTnBjQVFEYkVnQUFicmdBQUlzMUFRQ0lpQUFBaFdvQUFCVWdBUURFendBQUN1TUFBS0k3QVFDK2J3QUF6VFVCQUx3YUFRQ2lPd0VBb3owQUFPK0hBQUEzNVFBQW9qc0JBSVc2QUFCWVBBQUFqQjBBQUM4ZEFBQmhQQUFBbEIwQUFEY2RBQUJNUEFBQWdSMEFBQ1FkQUFDelBBQUF5UjBBQUd3ZEFBQjNIUUFBdXJvQUFCb2RBQUNRdWdBQU1MSUJBTHErQVFCd3ZnRUFiTDhCQUYyNEFRQUx2Z0FBajd3QkFHSzdBUUQ1dUFFQS83c0JBRks3QVFEeXVBRUErTHNCQUV1N0FRRHJ1QUVBOGJzQkFFUzdBUURrdUFFQVo3c0JBQWdYQVFEd0VBQUE2MklBQUI4akFBQnRZQUFBR1JJQUFPY0xBQUIyNFFBQUM4QUFBUHd6QUFBZ0VRQUFISE1BQUZqekFBQkw2Z0FBMlJRQUFOb1RBQUFXQkFBQUNnUUFBRFlQQUFBTEJBQUFGQVFBQUJRVUFBQVhGQUFBOEpvRUFCQzdBQUFBQ0FBQUFnQUFBQUFNQUlBQ0FFR293QklMQ1g0RUFBQi9CQUFBQ0FCQndNQVNDeVAvdXdFQVVyc0JBUEs0QVFENHV3RUFTN3NCQU91NEFRRHh1d0VBUkxzQkFPUzRBUUJCN01BU0MwYUFCQUFBZ1FRQUFJSUVBQUNEQkFBQWhBUUFBSVVFQUFDR0JBQUFDS0FFQUdONUFBQUFBQWdBQUFBQUJBQU1DSUFDQUFBRUFBQUFBQUFBQUFDSEJBQUFpQVFBQUlrRUFFRzh3UklMSTM0RUFBQ0tCQUFBQ0FBQUFBaWdCQUNBRkFBQUFBQUFBQUFDQWdBQURBQ0FBZ0lDQUVIb3dSSUxDb3NFQUFDTUJBQUFqUVFBUWZ6QkVnc2FnQVFBQUk0RUFBQ1BCQUFBa0FRQUFKRUVBQUNTQkFBQWt3UUFRYURDRWdzYWdBUUFBSlFFQUFDVkJBQUFsZ1FBQUpjRUFBQ1lCQUFBbVFRQVFjVENFZ3NhbWdRQUFKc0VBQUNjQkFBQW5RUUFBSjRFQUFDZkJBQUFvQVFBUWVqQ0Vnc2xmZ1FBQUtFRUFBQUlBQUFBQUFBQUFBaWdCQUJrU3dBQUFBQ0NBQUFBQUFBQURJS0FBZ0JCbU1NU0N3cWlCQUFBb3dRQUFLUUVBRUdzd3hJTEdvQUVBQUNsQkFBQXBnUUFBS2NFQUFDb0JBQUFxUVFBQUtvRUFFSFF3eElMR3BvRUFBQ3JCQUFBckFRQUFLMEVBQUN1QkFBQXJ3UUFBTEFFQUVIMHd4SUxJWDRFQUFDeEJBQUFDQUFBQUFpZ0JBQk1FQUFBQUFBSUlBQUFBQUFBREFpZ0FnQkJvTVFTQ3dxeUJBQUFzd1FBQUxRRUFFRzB4QklMQ1g0RUFBQzFCQUFBQ0FCQnlNUVNDeHFBQkFBQXRnUUFBTGNFQUFDNEJBQUF1UVFBQUxvRUFBQzdCQUJCN01RU0N4cWFCQUFBdkFRQUFMMEVBQUMrQkFBQXZ3UUFBTUFFQUFEQkJBQkJrTVVTQ3hxYUJBQUF3Z1FBQU1NRUFBREVCQUFBeFFRQUFNWUVBQURIQkFCQnRNVVNDekdhQkFBQXlBUUFBTWtFQUFES0JBQUF5d1FBQU13RUFBRE5CQUFBQ0tBRUFJZ09BQUFBQUFDZ0FBQUFBQUFNQUtBQ0FFSHd4UklMRHM0RUFBRFBCQUFBMEFRQUFFVEpBRUdJeGhJTENYNEVBQURSQkFBQUNBQkJuTVlTQ3hxYUJBQUEwZ1FBQU5NRUFBRFVCQUFBMVFRQUFOWUVBQURYQkFCQndNWVNDeHFhQkFBQTJBUUFBTmtFQUFEYUJBQUEyd1FBQU53RUFBRGRCQUJCNU1ZU0N6S2FCQUFBM2dRQUFOOEVBQURnQkFBQTRRUUFBT0lFQUFEakJBQUFDS0FFQU1WREFBQUFBQUFFQUFnQUFBQU1BSVFDQ0FCQm9NY1NDd3JrQkFBQTVRUUFBT1lFQUVHMHh4SUxPSDRFQUFEbkJBQUFDQUFBQUFpZ0JBQ1JSQUVBQUFBQUFBQURBQUFBREFDQUFnTUFBTUNBQkFDM1hBRUFDRUFBQUFBQUFBREpmQXlBQUVINHh4SUxDdWdFQUFEcEJBQUE2Z1FBUVl6SUVnc1M2d1FBQU93RUFBRHRCQUFBNVFJQUFPNEVBRUdveUJJTEdvQUVBQUR2QkFBQThBUUFBUEVFQUFEeUJBQUE4d1FBQVBRRUFFSE15QklMR29BRUFBRDFCQUFBOWdRQUFQY0VBQUQ0QkFBQStRUUFBUG9FQUVId3lCSUxHb0FFQUFEN0JBQUEvQVFBQVAwRUFBRCtCQUFBL3dRQUFBQUZBRUdVeVJJTEdwb0VBQUFCQlFBQUFnVUFBQU1GQUFBRUJRQUFCUVVBQUFZRkFFRzR5UklMR29BRUFBQUhCUUFBQ0FVQUFBa0ZBQUFLQlFBQUN3VUFBQXdGQUVIY3lSSUxHb0FFQUFBTkJRQUFEZ1VBQUE4RkFBQVFCUUFBRVFVQUFCSUZBRUdBeWhJTEdvQUVBQUFUQlFBQUZBVUFBQlVGQUFBV0JRQUFGd1VBQUJnRkFFR2t5aElMQ1g0RUFBQVpCUUFBQ0FCQnVNb1NDeEhqQWdBQUdnVUFBQWdBQUFEbEFnQUFDQUJCMU1vU0M0b0VHd1VBQUJ3RkFBQUlBQUFBQ0FBQUFBQUFBQUR3bWdRQTFRc0JBQUJBQUFRQUFBQUFBRVFBaEFBQUFBQm9wUVFBZFRZQkFBQUFDUUFBQUFBQUFFUUpoQUFBQUFCb3BRUUFMNzRBQUFDQUFBQUFDQUFBQU1RQWhBQUlBQUJvcFFRQWQ3OEJBQUFBQUFCQWdBQUFBRVFBaEVDQUFBQm9wUVFBMEw4QkFBQkFnQUFBQUFBQUFFU0FoQUFBQUFCb3BRUUFwNzhCQUFLQUFBQUFBQUFBQXNRQWhBQUFBQUJvcFFRQWpXOEFBQUFBQUFBQUFDSUFBRVFBaEFBQUlnQm9wUVFBQnlzQkFBQUFBQUFCQUFRQUFFUUFoQUVBQkFCb3BRUUE4MmdBQUFBQUFBQUlBQUFRQUVRQWhBZ0FBQkJvcFFRQWRCQUFBQUFFQUFBQUFRQUFBRVFBaEFBQkFBQm9wUVFBdkE0QUFBQWdBQUVBQUFBQUFHUUFoUUFBQUFCb3BRUUFnSE1BQUFBRUlBQUFBQUFBQUVRZ2hBQUFBQUJvcFFRQTBmUUFBQUFBQ0VBQUFBQUFBRVFJeEFBQUFBQ0lwZ1FBZlBNQUFBQUFBQUlBQUFRQUFFUUl4Z0FBQkFDSXBnUUE5dk1BQUFBQUJBQUFBQUFFQUVRTXhBQUFBQVNJcGdRQVNmUUFBQUNBQUNBQUFBQUFBTVFJNUFBQUFBQ0lwZ1FBa3ZRQUFBQUFRQUVBQUFBQUFFUkl4UUFBQUFDSXBnUUF0L01BQUFBQUVBQUFBQkFBQUVRWXhBQUFFQUJvcFFRQUNqd0JBQWdBQUFBQUJBQUFDRVFBaEFBRUFBQVlwd1FBdjJJQUFBQUFBSUFBQUFBRUNFUUFoQUFFQUFRWXB3UUFLemdBQUlBQUFRQUFBQUFBaUVRQmhBQUVBRUhvemhJTERoMEZBQUFlQlFBQUh3VUFBQ0FGQUVHQXp4SUxEaDBGQUFBaEJRQUFJZ1VBQUNNRkFFR1l6eElMRGgwRkFBQWtCUUFBSlFVQUFDWUZBRUd3enhJTERoMEZBQUFuQlFBQUtBVUFBQ2tGQUVISXp4SUxEaDBGQUFBcUJRQUFLd1VBQUN3RkFFSGd6eElMRGgwRkFBQXRCUUFBTGdVQUFDOEZBRUg0enhJTERqQUZBQUF4QlFBQU1nVUFBRE1GQUVHUTBCSUxEakFGQUFBMEJRQUFOUVVBQURZRkFFR28wQklMRGpBRkFBQTNCUUFBT0FVQUFEa0ZBRUhBMEJJTERqQUZBQUE2QlFBQU93VUFBRHdGQUVIWTBCSUxEakFGQUFBOUJRQUFQZ1VBQUQ4RkFFSHcwQklMRGtBRkFBQkJCUUFBQ0FBQUFFSUZBRUdJMFJJTERrQUZBQUJEQlFBQVJBVUFBRUlGQUVHZzBSSUxEa1VGQUFCR0JRQUFSd1VBQUVJRkFFRzQwUklMRGgwRkFBQklCUUFBU1FVQUFFb0ZBRUhRMFJJTERoMEZBQUJMQlFBQVRBVUFBRTBGQUVIbzBSSUxEaDBGQUFCT0JRQUFUd1VBQUZBRkFFR0EwaElMRGgwRkFBQlJCUUFBVWdVQUFGTUZBRUdZMGhJTERoMEZBQUJVQlFBQVZRVUFBRllGQUVHdzBoSUxEa0FGQUFCWEJRQUFDQUFBQUVJRkFFSEkwaElMRGtBRkFBQllCUUFBQ0FBQUFFSUZBRUhnMGhJTHNnVHNEUUFBLzJJQUFISzZBQUNLUkFFQXFyY0JBTGJmQUFEaXpnQUFDNzRBQUxqUEFBRHd0d0FBaHZJQUFJVVlBQUJmNndBQUFoY0FBR0htQUFBbE1nQUFkakFCQU5xZ0FBRGg4UUFBNmVBQUFQSWRBQUJXdWdBQVhiZ0JBR3kvQVFCSTBnQUE1dkVBQUVPNUFBQXphZ0FBL05BQUFGWWxBQUFXNEFBQS9qWUJBS0czQVFDNnZnRUFoTGtCQUJPMkFRRHQ0QUFBM0NNQkFJVVpBQUR6dUFBQUxSRUFBSjgwQUFEcU5nRUFDUkVBQUppeEFBQWltZ0FBLzdzQkFDM2lBQUJSMHdBQVVyc0JBQS9pQUFBejB3QUE4cmdCQVBIaEFBQVYwd0FBK0xzQkFDWGlBQUJKMHdBQVM3c0JBQWZpQUFBcjB3QUE2N2dCQU9uaEFBQU4wd0FBOGJzQkFCM2lBQUJCMHdBQVJMc0JBUC9oQUFBajB3QUE1TGdCQU9IaEFBQUYwd0FBWjAwQUFQd3pBQURBRmdBQVJDa0JBTytoQUFEVkh3RUFmdThBQURSa0FBQnpSZ0FBYzZFQUFDQVJBQURyeXdBQWdhRUFBQnh6QUFDV05BQUFLQ0VCQVBJMkFBQlUwZ0FBRkVNQkFNOE1BQURBUWdFQWtVSUJBS1VNQUFDT0xnRUF1QXdBQUs5Q0FRQ01EQUFBZXk0QkFONUNBUUFweXdBQS9FSUJBQjlEQVFEZ0RBQUF5MElCQUp4Q0FRQUE1Z0FBOFFvQkFKRGhBQUNEdGdFQWNMNEJBUDY0QVFEUHRRRUFIeW9BQUdDN0FBQnNSZ0FBOXQwQUFKeC9BQUNQdkFFQU5lSUFBRm5UQUFEajBBQUFkeFVBQUdLN0FRQVg0Z0FBTzlNQUFOM1FBQUJ4RlFBQStiZ0JBUG5oQUFBZDB3QUEwdEFBQUdzVkFBRDhFQUFBd2hBQUFNZzFBUUF1R3dFQTNUWUJBTitJQUVHZzF4SUxKOW9UQUFBMkR3QUFGQVFBQU5rVUFBQjQrUU1BWTN3QUFBQUlBQUFBSUFBQVFDd0VnQUFnRVFCQjBOY1NDdzBqQUFBQVdRVUFBRm9GQUFBSUFFSG8xeElMR2xzRkFBQmNCUUFBWFFVQUFGNEZBQUJmQlFBQVlBVUFBR0VGQUVHTTJCSUxHbUlGQUFCakJRQUFaQVVBQUdVRkFBQm1CUUFBWndVQUFHZ0ZBRUd3MkJJTEdta0ZBQUJxQlFBQWF3VUFBR3dGQUFCdEJRQUFiZ1VBQUc4RkFFSFUyQklMR25BRkFBQnhCUUFBY2dVQUFITUZBQUIwQlFBQWRRVUFBSFlGQUVINDJCSUxHbmNGQUFCNEJRQUFlUVVBQUhvRkFBQjdCUUFBZkFVQUFIMEZBRUdjMlJJTERpTUFBQUIrQlFBQVdnVUFBSDhGQUVHMDJSSUxJeU1BQUFDQUJRQUFDQUFBQUxDckJBQTdmQUFBQUFCQUFRQUFBQUJBTEVTQkFDQVJBRUhnMlJJTEduQUZBQUNCQlFBQWdnVUFBSU1GQUFDRUJRQUFoUVVBQUlZRkFFR0UyaElMR25BRkFBQ0hCUUFBaUFVQUFJa0ZBQUNLQlFBQWl3VUFBSXdGQUVHbzJoSUxHbzBGQUFDT0JRQUFqd1VBQUpBRkFBQ1JCUUFBa2dVQUFKTUZBRUhNMmhJTEdwUUZBQUNWQlFBQWxnVUFBSmNGQUFDWUJRQUFtUVVBQUpvRkFFSHcyaElMR2xzRkFBQ2JCUUFBbkFVQUFKMEZBQUNlQlFBQW53VUFBS0FGQUVHVTJ4SUxHbHNGQUFDaEJRQUFvZ1VBQUtNRkFBQ2tCUUFBcFFVQUFLWUZBRUc0MnhJTEdsc0ZBQUNuQlFBQXFBVUFBS2tGQUFDcUJRQUFxd1VBQUt3RkFFSGMyeElMR25BRkFBQ3RCUUFBcmdVQUFLOEZBQUN3QlFBQXNRVUFBTElGQUVHQTNCSUxKN01GQUFDMEJRQUFXZ1VBQUxVRkFBQ3dxd1FBRDN3QUFBSUFBUUFBQUFBQVFpd0ZnQUFnRVFCQnNOd1NDeHEyQlFBQXR3VUFBTGdGQUFDNUJRQUF1Z1VBQUxzRkFBQzhCUUJCMU53U0N5c2pBQUFBdlFVQUFGb0ZBQUMrQlFBQUFBQUFBTENyQkFEbGV3QUFBQUFBRUFBUUFBQkFMQVNRQURBUkFFR0kzUklMR25BRkFBQy9CUUFBd0FVQUFNRUZBQURDQlFBQXd3VUFBTVFGQUVHczNSSUxHbkFGQUFERkJRQUF4Z1VBQU1jRkFBRElCUUFBeVFVQUFNb0ZBRUhRM1JJTDNnTExCUUFBekFVQUFNMEZBQURPQlFBQXp3VUFBTkFGQUFEUkJRQUE3aklCQU80eUFRQ0lRd0VBbzJJQUFLTmlBQUQ2dUFBQStyZ0FBQlZxQUFDSHZ3QUEwanNBQUNOUkFBRENYZ0FBSmJnQUFITk9BQUNidVFBQUM3Z0FBRmxPQUFDQnVRQUFDdElBQVBuUkFBQWIwZ0FBWER3REFGdzhBd0JjUEFNQVg3d0JBQ1lVQUFEQ2lBQUF3ZHNBQUZXOEFRQjh2QUVBdUJnQUFNNFlBQUNHTVFBQVhEd0RBRnc4QXdCY1BBTUFOcmdBQURhNEFBQTJ1QUFBMXhJQUFOY1NBQURYRWdBQVBKb0FBRHlhQUFBOG1nQUF0QkFBQUZ3OEF3Qy9tZ0FBdVpvQUFIdGRBUUJjUEFNQVhEd0RBS2FJQUFDdHVnQUFlTG9BQU1lNkFBQ2R1Z0FBUGp3QUFGdzhBd0RGdWdBQW03b0FBRHc4QUFDcnVnQUFkcm9BQUZ3OEF3Q1gwUUFBYXlzQkFGaEdBQURmNGdBQVdEQUJBTXc0QUFESU93QUFLak1BQURzekFBQTdNd0FBWER3REFGdzhBd0JjUEFNQU5yZ0FBTmNTQUFBOG1nQkJ1T0FTQ3c3U0JRQUEwd1VBQU5RRkFBRFZCUUJCME9BU0N4cldCUUFBMXdVQUFOZ0ZBQURaQlFBQTJnVUFBTnNGQUFEY0JRQkI5T0FTQ3diZEJRQUEzZ1VBUVlUaEVnc0czd1VBQU9BRkFFR1U0UklMQnVFRkFBRGlCUUJCcE9FU0N3YmpCUUFBNUFVQVFiVGhFZ3NHNVFVQUFPWUZBRUhFNFJJTEdta0ZBQURuQlFBQTZBVUFBT2tGQUFEcUJRQUE2d1VBQU93RkFFSG80UklMR25jRkFBRHRCUUFBN2dVQUFPOEZBQUR3QlFBQThRVUFBUElGQUVHTTRoSUxMNDBGQUFEekJRQUE5QVVBQVBVRkFBRDJCUUFBOXdVQUFQZ0ZBQUIyVFFJQUFBUUFBRjBNQWdCTURBSUFTbDBDQUVIRTRoSUxFdmtGQUFENkJRQUErd1VBQVB3RkFBRDlCUUJCNE9JU0N3ci9CUUFBQUFZQUFBRUdBRUgwNGhJTG8wc0NCZ0FBQXdZQUFBZ0FBQUNROHdNQVVFSURBSkR6QXdDT1FnTUFrUE1EQU0xQ0F3QUFBQUFBekxFRUFBUUdBQUFGQmdBQUJnWUFBQWNHQUFBSUJnQUFDUVlBQUFvR0FBQUxCZ0FBREFZQUFKRHpBd0NPUXdNQTBQTURBQXREQXdERXNRUUFrUE1EQUxCREF3QUFBQUFBRkxJRUFIY0ZBQUFOQmdBQURnWUFBQThHQUFBUUJnQUFFUVlBQUJJR0FBQVRCZ0FBRkFZQUFKRHpBd0NLUkFNQTBQTURBQU5FQXdBTXNnUUFrUE1EQUs1RUF3Q1E4d01BQTBVREFBQUFBQUFzc3dRQUZ3WUFBQmdHQUFBSUFBQUFDQUFBQUJrR0FBQWFCZ0FBR3dZQUFCd0dBQUFkQmdBQUhnWUFBQjhHQUFBZ0JnQUFJUVlBQUNJR0FBQWpCZ0FBSkFZQUFDVUdBQUFtQmdBQUp3WUFBQ2dHQUFBcEJnQUFLZ1lBQUNzR0FBQXNCZ0FBTFFZQUFDNEdBQUF2QmdBQU1BWUFBREVHQUFBeUJnQUFNd1lBQURRR0FBQTFCZ0FBTmdZQUFEY0dBQUE0QmdBQU9RWUFBRG9HQUFBN0JnQUFQQVlBQUQwR0FBQStCZ0FBUHdZQUFFQUdBQUJCQmdBQVFnWUFBRU1HQUFCRUJnQUFSUVlBQUVZR0FBQkhCZ0FBU0FZQUFFa0dBQUJLQmdBQVN3WUFBRXdHQUFCTkJnQUFUZ1lBQUU4R0FBQUlBQUFBVUFZQUFKRHpBd0JDUlFNQUFBQUFBS1N6QkFCUkJnQUFVZ1lBQUZNR0FBQlVCZ0FBVlFZQUFGWUdBQUJYQmdBQVdBWUFBRmtHQUFCYUJnQUFXd1lBQUZ3R0FBQmRCZ0FBWGdZQUFGOEdBQUJnQmdBQVlRWUFBR0lHQUFCakJnQUFaQVlBQUdVR0FBQm1CZ0FBWndZQUFHZ0dBQUNROHdNQWgwVURBTkR6QXdCZ1JRTUFuTE1FQUFBQUFBQW90QVFBYVFZQUFHb0dBQUJyQmdBQWJBWUFBRlVHQUFCV0JnQUFiUVlBQUZnR0FBQlpCZ0FBV2dZQUFGc0dBQUJjQmdBQWJnWUFBRzhHQUFCZkJnQUFZQVlBQUhBR0FBQmlCZ0FBWXdZQUFHUUdBQUJsQmdBQVpnWUFBSEVHQUFCeUJnQUFjd1lBQU5EekF3RFFSUU1BbkxNRUFORHpBd0NwUlFNQUhMUUVBQUFBQUFBY3RBUUFhUVlBQUhRR0FBQUlBQUFBYkFZQUFGVUdBQUJXQmdBQVZ3WUFBRmdHQUFCWkJnQUFXZ1lBQUZzR0FBQmNCZ0FBYmdZQUFHOEdBQUJmQmdBQVlBWUFBR0VHQUFCaUJnQUFZd1lBQUdRR0FBQmxCZ0FBWmdZQUFIRUdBQUJ5QmdBQWN3WUFBQUFBQUFBTXRRUUFhUVlBQUhVR0FBQjJCZ0FBYkFZQUFIY0dBQUJXQmdBQVZ3WUFBRmdHQUFCWkJnQUFXZ1lBQUZzR0FBQmNCZ0FBYmdZQUFHOEdBQUI0QmdBQVlBWUFBR0VHQUFCaUJnQUFZd1lBQUdRR0FBQmxCZ0FBWmdZQUFIRUdBQUJ5QmdBQWN3WUFBTkR6QXdENVJRTUFITFFFQUFBQUFBQ0V0UVFBYVFZQUFIa0dBQUI2QmdBQWJBWUFBRlVHQUFCN0JnQUFWd1lBQUZnR0FBQlpCZ0FBV2dZQUFGc0dBQUJjQmdBQWJnWUFBRzhHQUFCZkJnQUFmQVlBQUdFR0FBQmlCZ0FBWXdZQUFHUUdBQUJsQmdBQVpnWUFBSEVHQUFCeUJnQUFjd1lBQU5EekF3QWZSZ01BSExRRUFBQUFBQUFJdGdRQWZRWUFBSDRHQUFCL0JnQUFWQVlBQUZVR0FBQldCZ0FBVndZQUFJQUdBQUJaQmdBQWdRWUFBRnNHQUFCY0JnQUFiZ1lBQUY0R0FBQmZCZ0FBWUFZQUFHRUdBQUNDQmdBQVl3WUFBSU1HQUFCbEJnQUFaZ1lBQUhFR0FBQ0VCZ0FBaFFZQUFORHpBd0J3UmdNQW5MTUVBTkR6QXdCSFJnTUEvTFVFQUFBQUFBRDh0UVFBZlFZQUFJWUdBQUFJQUFBQVZBWUFBRlVHQUFCV0JnQUFWd1lBQUlBR0FBQlpCZ0FBV2dZQUFGc0dBQUJjQmdBQWJnWUFBRjRHQUFCZkJnQUFZQVlBQUdFR0FBQ0NCZ0FBWXdZQUFHUUdBQUJsQmdBQVpnWUFBSEVHQUFDRUJnQUFoUVlBQUFBQUFBRHN0Z1FBZlFZQUFJY0dBQUNJQmdBQVZBWUFBRlVHQUFCV0JnQUFWd1lBQUlBR0FBQlpCZ0FBV2dZQUFJa0dBQUJjQmdBQWJnWUFBRjRHQUFCZkJnQUFZQVlBQUdFR0FBQ0NCZ0FBWXdZQUFHUUdBQUNLQmdBQVpnWUFBSEVHQUFDRUJnQUFoUVlBQU5EekF3Q2NSZ01BL0xVRUFBQUFBQUJrdHdRQWZRWUFBSXNHQUFDTUJnQUFWQVlBQUZVR0FBQldCZ0FBVndZQUFJQUdBQUNOQmdBQVdnWUFBRnNHQUFCY0JnQUFiZ1lBQUY0R0FBQmZCZ0FBWUFZQUFHRUdBQUNDQmdBQWpnWUFBR1FHQUFCbEJnQUFaZ1lBQUhFR0FBQ0VCZ0FBaFFZQUFORHpBd0RGUmdNQS9MVUVBQUFBQUFEY3R3UUFmUVlBQUk4R0FBQ1FCZ0FBVkFZQUFGVUdBQUJXQmdBQVZ3WUFBSUFHQUFCWkJnQUFXZ1lBQUZzR0FBQ1JCZ0FBYmdZQUFGNEdBQUJmQmdBQVlBWUFBR0VHQUFDQ0JnQUFZd1lBQUdRR0FBQmxCZ0FBa2dZQUFIRUdBQUNFQmdBQWhRWUFBTkR6QXdEdVJnTUEvTFVFQUFBQUFBQWN1QVFBa3dZQUFKUUdBQUNWQmdBQWxnWUFBSmNHQUFDWUJnQUFtUVlBQUpvR0FBQ2JCZ0FBa1BNREFMcEhBd0RROHdNQUYwY0RBQlM0QkFDUTh3TUErVWNEQUpEekF3QnFTQU1BQUFBQUFHeTRCQUNlQmdBQW53WUFBS0FHQUFDaEJnQUFvZ1lBQUtNR0FBQ2tCZ0FBcFFZQUFLWUdBQUNROHdNQVNVa0RBTkR6QXdDcVNBTUFaTGdFQUpEekF3Q0lTUU1BQUFBQUFMUzRCQUNuQmdBQXFBWUFBS2tHQUFDcUJnQUFxd1lBQUt3R0FBQ3RCZ0FBcmdZQUFLOEdBQUNROHdNQWQwb0RBTkR6QXdEMFNRTUFyTGdFQUpEekF3QzJTZ01BQUFBQUFQUzRCQUJwQlFBQXNBWUFBTEVHQUFDeUJnQUFzd1lBQUxRR0FBQzFCZ0FBdGdZQUFMY0dBQURROHdNQUFVc0RBSkN4QkFDUTh3TUFla3dEQU5EekF3QWRUQU1BQUxrRUFORHpBd0NvU3dNQUNMa0VBQUFBQUFCVXVRUUF1QVlBQUxrR0FBQzZCZ0FBdXdZQUFMd0dBQUM5QmdBQXZnWUFBTDhHQUFEQUJnQUFrUE1EQUU5TkF3RFE4d01BMGt3REFFeTVCQUNROHdNQWdrMERBQUFBQUFDVXVRUUFZZ1VBQU1FR0FBRENCZ0FBd3dZQUFNUUdBQURGQmdBQXhnWUFBTWNHQUFESUJnQUEwUE1EQU1wTkF3Q0FzUVFBa1BNREFFeE9Bd0FBQUFBQTFMa0VBTWtHQUFES0JnQUF5d1lBQU13R0FBRE5CZ0FBemdZQUFNOEdBQURRQmdBQTBRWUFBTkR6QXdDY1RnTUFpTEVFQUpEekF3QWdUd01BQUFBQUFCUzZCQUJpQlFBQTBnWUFBTk1HQUFEVUJnQUExUVlBQU5ZR0FBRFhCZ0FBMkFZQUFOa0dBQURROHdNQWNrOERBSUN4QkFDUTh3TUEvVThEQUFBQUFBQlV1Z1FBeVFZQUFOb0dBQURiQmdBQTNBWUFBTjBHQUFEZUJnQUEzd1lBQU9BR0FBRGhCZ0FBMFBNREFGWlFBd0NJc1FRQWtQTURBT05RQXdBQUFBQUFaTHNFQUJjR0FBRGlCZ0FBNHdZQUFPUUdBQUFaQmdBQTVRWUFBT1lHQUFBY0JnQUFIUVlBQUI0R0FBQWZCZ0FBSUFZQUFDRUdBQUFpQmdBQUl3WUFBQ1FHQUFBbEJnQUFKZ1lBQUNjR0FBQW9CZ0FBS1FZQUFDb0dBQUFyQmdBQUxBWUFBQzBHQUFBdUJnQUFMd1lBQURBR0FBQXhCZ0FBTWdZQUFETUdBQUEwQmdBQU5RWUFBRFlHQUFBM0JnQUFPQVlBQURrR0FBQTZCZ0FBT3dZQUFEd0dBQUE5QmdBQVBnWUFBRDhHQUFCQUJnQUFRUVlBQUVJR0FBQkRCZ0FBUkFZQUFFVUdBQUJHQmdBQVJ3WUFBRWdHQUFCSkJnQUFTZ1lBQUVzR0FBQk1CZ0FBVFFZQUFFNEdBQUJQQmdBQTV3WUFBRkFHQUFEUTh3TUFQbEVEQUN5ekJBQUFBQUFBbkxzRUFJMEZBQURvQmdBQTZRWUFBT29HQUFEckJnQUE3QVlBQU8wR0FBRHVCZ0FBN3dZQUFORHpBd0JkVVFNQUtMSUVBQUFBQUFEVXV3UUFkd1VBQVBBR0FBRHhCZ0FBOGdZQUFQTUdBQUQwQmdBQTlRWUFBUFlHQUFEM0JnQUEwUE1EQU9OUkF3QU1zZ1FBa1BNREFIcFNBd0NROHdNQTZWSURBQUFBQUFEc3ZBUUFGd1lBQVBnR0FBRDVCZ0FBK2dZQUFCa0dBQUFhQmdBQUd3WUFBUHNHQUFEOEJnQUFIZ1lBQUI4R0FBQWdCZ0FBSVFZQUFDSUdBQUFqQmdBQUpBWUFBQ1VHQUFBbUJnQUFKd1lBQUNnR0FBQXBCZ0FBS2dZQUFDc0dBQUFzQmdBQUxRWUFBQzRHQUFBdkJnQUFNQVlBQURFR0FBQXlCZ0FBTXdZQUFEUUdBQUExQmdBQU5nWUFBRGNHQUFBNEJnQUFPUVlBQURvR0FBQTdCZ0FBUEFZQUFEMEdBQUErQmdBQVB3WUFBRUFHQUFCQkJnQUFRZ1lBQUVNR0FBQkVCZ0FBUlFZQUFFWUdBQUJIQmdBQVNBWUFBRWtHQUFCS0JnQUFTd1lBQUV3R0FBQk5CZ0FBVGdZQUFFOEdBQUQ5QmdBQVVBWUFBTkR6QXdBMlV3TUFMTE1FQUFBQUFBRDB2UVFBRndZQUFQNEdBQUQvQmdBQUFBY0FBQmtHQUFBYUJnQUFHd1lBQUJ3R0FBQWRCZ0FBSGdZQUFCOEdBQUFnQmdBQUlRWUFBQ0lHQUFBakJnQUFKQVlBQUNVR0FBQW1CZ0FBSndZQUFBRUhBQUFDQndBQUtnWUFBQ3NHQUFBc0JnQUFMUVlBQUM0R0FBQXZCZ0FBTUFZQUFERUdBQUF5QmdBQU13WUFBRFFHQUFBMUJnQUFOZ1lBQURjR0FBQTRCZ0FBT1FZQUFEb0dBQUE3QmdBQVBBWUFBRDBHQUFBK0JnQUFQd1lBQUVBR0FBQkJCZ0FBUWdZQUFFTUdBQUJFQmdBQVJRWUFBRVlHQUFCSEJnQUFTQVlBQUVrR0FBQktCZ0FBU3dZQUFFd0dBQUJOQmdBQVRnWUFBRThHQUFBREJ3QUFVQVlBQU5EekF3QlVVd01BTExNRUFBQUFBQUQ4dmdRQUZ3WUFBQVFIQUFBRkJ3QUFCZ2NBQUJrR0FBQWFCZ0FBR3dZQUFCd0dBQUFkQmdBQUhnWUFBQjhHQUFBZ0JnQUFJUVlBQUNJR0FBQWpCZ0FBSkFZQUFDVUdBQUFtQmdBQUp3WUFBQ2dHQUFBcEJnQUFLZ1lBQUNzR0FBQXNCZ0FBTFFZQUFDNEdBQUF2QmdBQU1BWUFBREVHQUFBeUJnQUFNd1lBQURRR0FBQTFCZ0FBTmdZQUFEY0dBQUFIQndBQUNBY0FBRG9HQUFBN0JnQUFQQVlBQUQwR0FBQStCZ0FBUHdZQUFFQUdBQUJCQmdBQVFnWUFBRU1HQUFCRUJnQUFSUVlBQUVZR0FBQkhCZ0FBU0FZQUFFa0dBQUJLQmdBQVN3WUFBRXdHQUFCTkJnQUFUZ1lBQUU4R0FBQUpCd0FBVUFZQUFORHpBd0IxVXdNQUxMTUVBQUFBQUFBRXdBUUFGd1lBQUFvSEFBQUxCd0FBREFjQUFCa0dBQUFhQmdBQUd3WUFBQndHQUFBZEJnQUFIZ1lBQUI4R0FBQWdCZ0FBSVFZQUFDSUdBQUFqQmdBQUpBWUFBQ1VHQUFBbUJnQUFKd1lBQUNnR0FBQXBCZ0FBS2dZQUFDc0dBQUFzQmdBQUxRWUFBQzRHQUFBdkJnQUFNQVlBQURFR0FBQXlCZ0FBTXdZQUFEUUdBQUExQmdBQU5nWUFBRGNHQUFBNEJnQUFPUVlBQUEwSEFBQU9Cd0FBUEFZQUFEMEdBQUErQmdBQVB3WUFBRUFHQUFCQkJnQUFRZ1lBQUVNR0FBQkVCZ0FBUlFZQUFFWUdBQUJIQmdBQVNBWUFBRWtHQUFCS0JnQUFTd1lBQUV3R0FBQk5CZ0FBVGdZQUFFOEdBQUFQQndBQVVBWUFBTkR6QXdDVVV3TUFMTE1FQUFBQUFBQU13UVFBRndZQUFCQUhBQUFSQndBQUVnY0FBQmtHQUFBYUJnQUFHd1lBQUJ3R0FBQWRCZ0FBSGdZQUFCOEdBQUFnQmdBQUlRWUFBQ0lHQUFBakJnQUFKQVlBQUNVR0FBQW1CZ0FBSndZQUFDZ0dBQUFwQmdBQUtnWUFBQ3NHQUFBc0JnQUFMUVlBQUM0R0FBQXZCZ0FBTUFZQUFERUdBQUF5QmdBQU13WUFBRFFHQUFBMUJnQUFOZ1lBQURjR0FBQTRCZ0FBT1FZQUFEb0dBQUE3QmdBQUV3Y0FBQlFIQUFBK0JnQUFQd1lBQUVBR0FBQkJCZ0FBUWdZQUFFTUdBQUJFQmdBQVJRWUFBRVlHQUFCSEJnQUFTQVlBQUVrR0FBQktCZ0FBU3dZQUFFd0dBQUJOQmdBQVRnWUFBRThHQUFBVkJ3QUFVQVlBQU5EekF3QzZVd01BTExNRUFBQUFBQUFVd2dRQUZ3WUFBQllIQUFBWEJ3QUFHQWNBQUJrR0FBQWFCZ0FBR3dZQUFCd0dBQUFkQmdBQUhnWUFBQjhHQUFBZ0JnQUFJUVlBQUNJR0FBQWpCZ0FBSkFZQUFDVUdBQUFtQmdBQUp3WUFBQ2dHQUFBcEJnQUFLZ1lBQUNzR0FBQXNCZ0FBTFFZQUFDNEdBQUF2QmdBQU1BWUFBREVHQUFBeUJnQUFNd1lBQURRR0FBQTFCZ0FBTmdZQUFEY0dBQUE0QmdBQU9RWUFBRG9HQUFBN0JnQUFQQVlBQUQwR0FBQVpCd0FBR2djQUFFQUdBQUJCQmdBQVFnWUFBRU1HQUFCRUJnQUFSUVlBQUVZR0FBQkhCZ0FBU0FZQUFFa0dBQUJLQmdBQVN3WUFBRXdHQUFCTkJnQUFUZ1lBQUU4R0FBQWJCd0FBVUFZQUFORHpBd0RkVXdNQUxMTUVBQUFBQUFBY3d3UUFGd1lBQUJ3SEFBQWRCd0FBSGdjQUFCa0dBQUFhQmdBQUd3WUFBQndHQUFBZEJnQUFIZ1lBQUI4R0FBQWdCZ0FBSVFZQUFDSUdBQUFqQmdBQUpBWUFBQ1VHQUFBbUJnQUFKd1lBQUNnR0FBQXBCZ0FBS2dZQUFDc0dBQUFzQmdBQUxRWUFBQzRHQUFBdkJnQUFNQVlBQURFR0FBQXlCZ0FBTXdZQUFEUUdBQUExQmdBQU5nWUFBRGNHQUFBNEJnQUFPUVlBQURvR0FBQTdCZ0FBUEFZQUFEMEdBQUErQmdBQVB3WUFBRUFHQUFCQkJnQUFRZ1lBQUVNR0FBQWZCd0FBSUFjQUFFWUdBQUJIQmdBQVNBWUFBRWtHQUFCS0JnQUFTd1lBQUV3R0FBQk5CZ0FBVGdZQUFFOEdBQUFoQndBQVVBWUFBTkR6QXdEOFV3TUFMTE1FQUFBQUFBQWt4QVFBRndZQUFDSUhBQUFqQndBQUpBY0FBQmtHQUFBYUJnQUFHd1lBQUJ3R0FBQWRCZ0FBSGdZQUFCOEdBQUFnQmdBQUlRWUFBQ0lHQUFBakJnQUFKQVlBQUNVR0FBQW1CZ0FBSndZQUFDZ0dBQUFwQmdBQUtnWUFBQ3NHQUFBc0JnQUFMUVlBQUM0R0FBQXZCZ0FBTUFZQUFERUdBQUF5QmdBQU13WUFBRFFHQUFBMUJnQUFOZ1lBQURjR0FBQTRCZ0FBT1FZQUFEb0dBQUE3QmdBQVBBWUFBRDBHQUFBK0JnQUFQd1lBQUVBR0FBQkJCZ0FBUWdZQUFFTUdBQUJFQmdBQVJRWUFBQ1VIQUFBbUJ3QUFTQVlBQUVrR0FBQktCZ0FBU3dZQUFFd0dBQUJOQmdBQVRnWUFBRThHQUFBbkJ3QUFVQVlBQU5EekF3QWlWQU1BTExNRUFBQUFBQUFzeFFRQUZ3WUFBQ2dIQUFBcEJ3QUFLZ2NBQUJrR0FBQWFCZ0FBR3dZQUFCd0dBQUFkQmdBQUhnWUFBQjhHQUFBZ0JnQUFJUVlBQUNJR0FBQWpCZ0FBSkFZQUFDVUdBQUFtQmdBQUp3WUFBQ2dHQUFBcEJnQUFLZ1lBQUNzR0FBQXNCZ0FBTFFZQUFDNEdBQUF2QmdBQU1BWUFBREVHQUFBeUJnQUFNd1lBQURRR0FBQTFCZ0FBTmdZQUFEY0dBQUE0QmdBQU9RWUFBRG9HQUFBN0JnQUFQQVlBQUQwR0FBQStCZ0FBUHdZQUFFQUdBQUJCQmdBQVFnWUFBRU1HQUFCRUJnQUFSUVlBQUVZR0FBQkhCZ0FBS3djQUFDd0hBQUJLQmdBQVN3WUFBRXdHQUFCTkJnQUFUZ1lBQUU4R0FBQXRCd0FBVUFZQUFORHpBd0JKVkFNQUxMTUVBQUFBQUFBMHhnUUFGd1lBQUM0SEFBQXZCd0FBTUFjQUFCa0dBQUFhQmdBQUd3WUFBQndHQUFBZEJnQUFIZ1lBQUI4R0FBQWdCZ0FBSVFZQUFDSUdBQUFqQmdBQUpBWUFBQ1VHQUFBbUJnQUFKd1lBQUNnR0FBQXBCZ0FBS2dZQUFDc0dBQUFzQmdBQUxRWUFBQzRHQUFBdkJnQUFNQVlBQURFR0FBQXlCZ0FBTXdZQUFEUUdBQUExQmdBQU5nWUFBRGNHQUFBNEJnQUFPUVlBQURvR0FBQTdCZ0FBUEFZQUFEMEdBQUErQmdBQVB3WUFBRUFHQUFCQkJnQUFRZ1lBQUVNR0FBQkVCZ0FBUlFZQUFFWUdBQUJIQmdBQVNBWUFBRWtHQUFCS0JnQUFTd1lBQURFSEFBQXlCd0FBVGdZQUFFOEdBQUF6QndBQVVBWUFBTkR6QXdCN1ZBTUFMTE1FQUFBQUFBQTh4d1FBRndZQUFEUUhBQUExQndBQU5nY0FBQmtHQUFBYUJnQUFHd1lBQUJ3R0FBQWRCZ0FBSGdZQUFCOEdBQUFnQmdBQUlRWUFBQ0lHQUFBakJnQUFKQVlBQUNVR0FBQW1CZ0FBSndZQUFDZ0dBQUFwQmdBQUtnWUFBQ3NHQUFBc0JnQUFMUVlBQUM0R0FBQXZCZ0FBTUFZQUFERUdBQUF5QmdBQU13WUFBRFFHQUFBMUJnQUFOZ1lBQURjR0FBQTRCZ0FBT1FZQUFEb0dBQUE3QmdBQVBBWUFBRDBHQUFBK0JnQUFQd1lBQUVBR0FBQkJCZ0FBUWdZQUFFTUdBQUJFQmdBQVJRWUFBRVlHQUFCSEJnQUFTQVlBQUVrR0FBQktCZ0FBU3dZQUFFd0dBQUJOQmdBQU53Y0FBRGdIQUFBNUJ3QUFVQVlBQU5EekF3Q2hWQU1BTExNRUFBQUFBQUIweHdRQU9nY0FBRHNIQUFBOEJ3QUFQUWNBQUQ0SEFBQS9Cd0FBUUFjQUFFRUhBQUJDQndBQTBQTURBTWhVQXdBd3VBUUFrUE1EQUZaVkF3QUFBQUFBbE5ZRUFCY0dBQUJEQndBQVJBY0FBRVVIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFCR0J3QUFSd2NBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFTQWNBQUZBR0FBQUFBQUFBb05ZRUFCY0dBQUJKQndBQVNnY0FBRXNIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUV3SEFBQk5Cd0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFUZ2NBQUZBR0FBQUFBQUFBck5ZRUFCY0dBQUJQQndBQVVBY0FBRkVIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBVWdjQUFGTUhBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFWQWNBQUZBR0FBQUFBQUFBdU5ZRUFGVUhBQUJXQndBQVZ3Y0FBRmdIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFXUWNBQUZvSEFBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFXd2NBQUZBR0FBQUFBQUFBeE5ZRUFCY0dBQUJjQndBQVhRY0FBRjRIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQmZCd0FBWUFjQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFZUWNBQUZBR0FBQUFBQUFBME5ZRUFHSUhBQUJqQndBQVpBY0FBR1VIQUFCbUJ3QUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFHY0hBQUJvQndBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFhUWNBQUdvSEFBQUFBQUFBM05ZRUFCY0dBQUJyQndBQWJBY0FBRzBIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFCdUJ3QUFid2NBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFjQWNBQUZBR0FBQUFBQUFBNk5ZRUFIRUhBQUJ5QndBQWN3Y0FBSFFIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQUhVSEFBQjJCd0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFkd2NBQUZBR0FBQUFBQUFBOU5ZRUFCY0dBQUI0QndBQWVRY0FBSG9IQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBZXdjQUFId0hBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFmUWNBQUZBR0FBQUFBQUFBWU5FRUFCY0dBQUIrQndBQWZ3Y0FBSUFIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFJRUhBQUNDQndBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFnd2NBQUZBR0FBRFE4d01BcmxVREFDeXpCQUFBQUFBQWFOSUVBQmNHQUFDRUJ3QUFoUWNBQUlZSEFBQVpCZ0FBR2dZQUFCc0dBQUFjQmdBQUhRWUFBQjRHQUFBZkJnQUFod2NBQUlnSEFBQWlCZ0FBSXdZQUFDUUdBQUFsQmdBQUpnWUFBQ2NHQUFBb0JnQUFLUVlBQUNvR0FBQXJCZ0FBTEFZQUFDMEdBQUF1QmdBQUx3WUFBREFHQUFBeEJnQUFNZ1lBQURNR0FBQTBCZ0FBTlFZQUFEWUdBQUEzQmdBQU9BWUFBRGtHQUFBNkJnQUFPd1lBQUR3R0FBQTlCZ0FBUGdZQUFEOEdBQUJBQmdBQVFRWUFBRUlHQUFCREJnQUFSQVlBQUVVR0FBQkdCZ0FBUndZQUFFZ0dBQUJKQmdBQVNnWUFBRXNHQUFCTUJnQUFUUVlBQUU0R0FBQlBCZ0FBaVFjQUFGQUdBQURROHdNQXoxVURBQ3l6QkFBQUFBQUFjTk1FQUJjR0FBQ0tCd0FBaXdjQUFJd0hBQUFaQmdBQUdnWUFBQnNHQUFBY0JnQUFIUVlBQUI0R0FBQWZCZ0FBSUFZQUFDRUdBQUFpQmdBQUl3WUFBQ1FHQUFBbEJnQUFKZ1lBQUNjR0FBQW9CZ0FBS1FZQUFJMEhBQUNPQndBQUxBWUFBQzBHQUFBdUJnQUFMd1lBQURBR0FBQXhCZ0FBTWdZQUFETUdBQUEwQmdBQU5RWUFBRFlHQUFBM0JnQUFPQVlBQURrR0FBQTZCZ0FBT3dZQUFEd0dBQUE5QmdBQVBnWUFBRDhHQUFCQUJnQUFRUVlBQUVJR0FBQkRCZ0FBUkFZQUFFVUdBQUJHQmdBQVJ3WUFBRWdHQUFCSkJnQUFTZ1lBQUVzR0FBQk1CZ0FBVFFZQUFFNEdBQUJQQmdBQWp3Y0FBRkFHQUFEUTh3TUE3bFVEQUN5ekJBQUFBQUFBZU5RRUFKQUhBQUNSQndBQWtnY0FBSk1IQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQWxBY0FBSlVIQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFsZ2NBQUZBR0FBRFE4d01BRlZZREFDeXpCQUFBQUFBQWdOVUVBQmNHQUFDWEJ3QUFtQWNBQUprSEFBQVpCZ0FBR2dZQUFCc0dBQUFjQmdBQUhRWUFBQjRHQUFBZkJnQUFJQVlBQUNFR0FBQWlCZ0FBSXdZQUFDUUdBQUFsQmdBQUpnWUFBQ2NHQUFBb0JnQUFLUVlBQUNvR0FBQXJCZ0FBTEFZQUFDMEdBQUF1QmdBQUx3WUFBREFHQUFBeEJnQUFNZ1lBQURNR0FBQTBCZ0FBTlFZQUFEWUdBQUEzQmdBQU9BWUFBRGtHQUFBNkJnQUFPd1lBQUR3R0FBQTlCZ0FBUGdZQUFEOEdBQUNhQndBQW13Y0FBRUlHQUFCREJnQUFSQVlBQUVVR0FBQkdCZ0FBUndZQUFFZ0dBQUJKQmdBQVNnWUFBRXNHQUFCTUJnQUFUUVlBQUU0R0FBQlBCZ0FBbkFjQUFGQUdBQURROHdNQU5WWURBQ3l6QkFBQUFBQUFpTllFQUJjR0FBQ2RCd0FBbmdjQUFKOEhBQUFaQmdBQUdnWUFBQnNHQUFBY0JnQUFIUVlBQUI0R0FBQWZCZ0FBSUFZQUFDRUdBQUFpQmdBQUl3WUFBQ1FHQUFBbEJnQUFKZ1lBQUNjR0FBQW9CZ0FBS1FZQUFDb0dBQUFyQmdBQUxBWUFBQzBHQUFBdUJnQUFMd1lBQURBR0FBQXhCZ0FBTWdZQUFETUdBQUEwQmdBQU5RWUFBRFlHQUFBM0JnQUFPQVlBQURrR0FBQTZCZ0FBT3dZQUFEd0dBQUE5QmdBQVBnWUFBRDhHQUFCQUJnQUFRUVlBQUtBSEFBQ2hCd0FBUkFZQUFFVUdBQUJHQmdBQVJ3WUFBRWdHQUFCSkJnQUFTZ1lBQUVzR0FBQk1CZ0FBVFFZQUFFNEdBQUJQQmdBQW9nY0FBRkFHQUFEUTh3TUFVMVlEQUN5ekJBRFE4d01BZkZZREFDeXpCQURROHdNQW5GWURBQ3l6QkFEUTh3TUF2RllEQUN5ekJBRFE4d01BMjFZREFDeXpCQURROHdNQStsWURBQ3l6QkFEUTh3TUFJVmNEQUN5ekJBRFE4d01BUVZjREFDeXpCQURROHdNQVlsY0RBQ3l6QkFEUTh3TUFoRmNEQUN5ekJBQUFBQUFBRU5jRUFLTUhBQUNrQndBQWtQTURBTEpYQXdCQm9LNFRDOThEY2dBQUFPSVpBQUJ6QUFBQTZ4a0FBRzRBQUFCbmNRRUFid0FBQVBlcEFRQnRBQUFBaFdvQkFIQUFBQURycVFFQWNRQUFBTmtaQUFCMUFBQUFhR29CQUhnQUFBQkpaQUFBZWdBQUFEaGtBQUI1QUFBQU1VUUJBSHdBQUFBOUdBQUFkQUFBQUhxNEFRQitBQUFBeHZBQUFNZ0FBQUNOR3dBQWdBQUFBRGcvQVFDQ0FBQUE2bHdCQUlRQUFBQVh2UUFBaGdBQUFGRVZBQUNIQUFBQVZoVUFBSWtBQUFESE1BRUFpZ0FBQU11OEFBQ0xBQUFBekRBQkFNSUFBQUNQeXdBQXd3QUFBS0ZEQVFERUFBQUFvY3NBQU1VQUFBQitpQUFBeHdBQUFJQTFBUURHQUFBQVlHb0FBSDhBQUFETzhBQUFnUUFBQUZZL0FRQ0RBQUFBNzF3QkFJVUFBQUFydlFBQWlBQUFBRnNWQUFDTUFBQUEwTHdBQUkwQUFBRFJNQUVBVHdBQUFFZ2JBUUJSQUFBQXFqb0FBRklBQUFCV0dnQUFwZ0FBQUdXSUFBQ25BQUFBWmpVQkFLZ0FBQUNHR3dBQXBBQUFBTUxLQUFDbEFBQUExOGtBQUtrQUFBRG1PQUFBcWdBQUFQTEtBQUNyQUFBQUE4b0FBTEFBQUFER3VRQUFzUUFBQU5DNUFBQ3NBQUFBL0xrQUFLMEFBQUFKdWdBQXNnQUFBRHpLQUFDekFBQUFTOG9BQUs0QUFBQ0d5Z0FBcndBQUFKaktBQUJCQUFBQVdiZ0FBRUlBQUFBNnVBQUFRd0FBQUZhNEFBQkdBQUFBVHJnQUFQSVVBQUFxWmdFQVFZaXlFd3NhMWdVQUFLVUhBQUNtQndBQXB3Y0FBS2dIQUFDcEJ3QUFxZ2NBUWF5eUV3c2FyUWNBQUs0SEFBQ3ZCd0FBc0FjQUFMRUhBQUN5QndBQXN3Y0FRZEN5RXd1SEI0bDhBQUFlUEFBQWE5SUFBQVMzQVFBb0d3QUFpajRBQU9odkFBQzR5d0FBb3pBQkFJZ1NBQUNETUFFQS9GQUFBTml2QUFEVjJ3QUFhRG9CQUt3RUFBQzB6QUFBcjN3QUFCT2JBQUI4ZVFBQTB6NEJBTE0rQVFDM0VnQUFBcmtCQU9ZWUFBQjZiQUFBU2Q0QUFON0NBUURxOXdBQUt4NEFBUDRkQUFDaFRBQUFRVjBBQUtvWkFRQ2Zyd0FBS3J3QkFBQW1BUURjWHdBQStyQUFBTDlYQUFBMHZRQUEvVmNBQUlOUkFBQS9XUUFBZUZjQUFGM2dBQUF1U3dBQXV3b0FBQzVkQUFEaFZ3QUFsKzRBQU4zd0FBQWZvQUFBL04wQUFQc1dBUURoT3dFQUJyd0JBTUYwQUFDUVRRQUFYbEVBQUY1WkFBQnNEQUFBVHVzQUFQZ2dBUURqSUFFQWUwNEFBS3lKQUFBUkdBRUFSMUVBQUExRUFRQWk4QUFBZmpnQUFHWi9BQUNlRkFBQUtLd0FBRGlnQUFDY2VRQUFmQ0VCQU5YTEFBQ0VDUUFBODk4QUFPTk5BQUFTR3dBQTFzd0FBSzVMQUFBWVJ3QUFsTzhBQUNvVUFBQm83Z0FBL0s4QUFKUk9BQUJLU3dBQWg4QUFBRk1XQUFDWlZ3QUFTUE1BQU5oV0FBQTREd0FBNmtNQkFDWFNBQUNjZkFBQTROOEFBQ1ZqQUFDWUlRRUExQjBBQUhON0FBRGlVQUFBZHpzQkFFRHdBQUJDM3dBQTJyc0JBQmJtQUFDSmZBQUFIandBQUd2U0FBQUV0d0VBS0JzQUFJbytBQURvYndBQXVNc0FBS013QVFDSUVnQUFnekFCQVB4UUFBRFlyd0FBMWRzQUFHZzZBUUNzQkFBQXRNd0FBSzk4QUFBVG13QUFmSGtBQU5NK0FRQ3pQZ0VBdHhJQUFBSzVBUURtR0FBQWVtd0FBRW5lQUFEZXdnRUE2dmNBQUNzZUFBRCtIUUFBb1V3QUFFRmRBQUNxR1FFQW42OEFBQ3E4QVFBQUpnRUEzRjhBQVBxd0FBQy9Wd0FBTkwwQUFQMVhBQUNEVVFBQVAxa0FBSGhYQUFCZDRBQUFMa3NBQUxzS0FBQXVYUUFBNFZjQUFKZnVBQURkOEFBQUg2QUFBUHpkQUFEN0ZnRUE0VHNCQUFhOEFRREJkQUFBa0UwQUFGNVJBQUJlV1FBQWJBd0FBRTdyQUFENElBRUE0eUFCQUh0T0FBQ3NpUUFBRVJnQkFFZFJBQUFOUkFFQUl2QUFBSDQ0QUFCbWZ3QUFuaFFBQUNpc0FBQTRvQUFBbkhrQUFId2hBUURWeXdBQWhBa0FBUFBmQUFEalRRQUFFaHNBQU5iTUFBQ3VTd0FBR0VjQUFKVHZBQUFxRkFBQWFPNEFBUHl2QUFDVVRnQUFTa3NBQUlmQUFBQlRGZ0FBbVZjQUFFanpBQURZVmdBQU9BOEFBT3BEQVFBbDBnQUFuSHdBQU9EZkFBQWxZd0FBbUNFQkFOUWRBQUJ6ZXdBQTRsQUFBSGM3QVFCQThBQUFRdDhBQU5xN0FRQVc1Z0FBQ2dBQUFPRGNCQUJCNExrVEMzY0JBQUFBVVFBQUFHRGRCQUFDQUFBQW9nQUFBTEQyQkFBREFBQUFBUUFBQUZBcEJRQUVBQUFBQ1FBQUFLQXBCUUFGQUFBQUF3QUFBSEFzQlFBR0FBQUFCQUFBQUdBdEJRQUhBQUFBSWdBQUFLQXVCUUFJQUFBQUpRQUFBRUE1QlFBS0FBQUFMQUFBQU5CRUJRQUpBQUFBS0FBQUFKQlNCUUJCNExvVEN3V0hNd0VBQVFCQjhMb1RDd0VCQUVHd3V4TUxCVnk1QUFBQ0FFSEF1eE1MQVFFQVFZQzhFd3NGamtNQkFBTUFRWkM4RXdzQkFRQkIwTHdUQ3dXc1lnQUFCQUJCNEx3VEN3RUJBRUdndlJNTEJhZGlBQUFGQUVHd3ZSTUxBUUVBUWZDOUV3c0ZETGtBQUFZQVFZQytFd3NCQVFCQndMNFRDd1VHdVFBQUJ3QkIwTDRUQ3dFQkFFR1F2eE1MQlJ0cUFBQUlBRUdndnhNTEFRRUFRZUMvRXdzRmpMOEFBQWtBUWZDL0V3c0JBUUJCc01BVEN3WFlPd0FBQ2dCQndNQVRDd0VCQUVHQXdSTUxCU3RSQUFBTEFFR1F3Uk1MQVFFQVFkREJFd3NGeWw0QUFBd0FRZURCRXdzQkFRQkJvTUlUQ3dWcXVBQUFEUUJCc01JVEN3RUJBRUh3d2hNTEJYZE9BQUFPQUVHQXd4TUxBUUVBUWNEREV3c0ZPcm9BQUE4QVFkRERFd3NCQVFCQmtNUVRDd1VrdUFBQUVBQkJvTVFUQ3dFQkFFSGd4Qk1MQlhKT0FBQVJBRUh3eEJNTEFRRUFRYkRGRXdzRm1ya0FBQklBUWNERkV3c0JBUUJCZ01ZVEN3VVAwZ0FBRXdCQmtNWVRDd0VCQUVIUXhoTUxCZjdSQUFBVUFFSGd4aE1MQVFFQVFhREhFd3NGSU5JQUFCVUFRYkRIRXdzQkFRQkI4TWNUQ3dVSjBnQUFGZ0JCZ01nVEN3RUJBRUhBeUJNTEJmalJBQUFYQUVIUXlCTUxBUUVBUVpESkV3c0ZHdElBQUJnQVFhREpFd3NCQVFCQjRNa1RDd1ZsdkFFQUdRQkI4TWtUQ3dVQkFBQUFBUUJCc01vVEN3V2FGQUFBR2dCQndNb1RDd1VCQUFBQUFRQkJnTXNUQ3dYR2lBQUFHd0JCa01zVEN3RUJBRUhReXhNTEJjWGJBQUFjQUVIZ3l4TUxBUUVBUWFETUV3c0ZXcndCQUIwQVFiRE1Fd3NCQVFCQjhNd1RDd1dCdkFFQUhnQkJnTTBUQ3dFQkFFSEF6Uk1MQmVFWUFBQWZBRUhRelJNTEFRRUFRWkRPRXdzRjJoZ0FBQ0FBUWFET0V3c0JBUUJCNE00VEN3V1NNUUFBSVFCQjhNNFRDd0VCQUVHd3p4TUxCVzd4QUFBaUFFSEF6eE1MQVFFQVFZRFFFd3NGdU9FQUFDTUFRWkRRRXdzRkFRQUFBQUVBUWREUUV3c0ZKemNBQUNRQVFlRFFFd3NCQVFCQm9ORVRDd1hvdUFBQUpRQkJzTkVUQ3dVQkFBQUFBUUJCOE5FVEN3V2N1QUFBSmdCQmdOSVRDd1VCQUFBQUFRQkJ3TklUQ3dYRnVBQUFKd0JCME5JVEN3VUJBQUFBQVFCQmtOTVRDd1ZWRXdBQUtBQkJvTk1UQ3dVQkFBQUFBUUJCNE5NVEN3VUpFd0FBS1FCQjhOTVRDd1VCQUFBQUFRQkJzTlFUQ3dVeUV3QUFLZ0JCd05RVEN3VUJBQUFBQVFCQmdOVVRDd1ZYbWdBQUt3QkJrTlVUQ3drQkFBQUFBUUFBQUFFQVFkRFZFd3NGUXBvQUFDd0FRZURWRXdzSkFRQUFBQUVBQUFBQkFFR2cxaE1MQlVtYUFBQXRBRUd3MWhNTENRRUFBQUFCQUFBQUFRQkI4TllUQ3dXOUVBQUFMZ0JCZ05jVEN3a0JBQUFBQVFBQUFBRUFRY0RYRXdzRnVCQUFBQzhBUWREWEV3c0pBUUFBQUFFQUFBQUJBRUdRMkJNTEJjcWFBQUF3QUVHZzJCTUxCUUVBQUFBQkFFSGcyQk1MQmNTYUFBQXhBRUh3MkJNTENRRUFBQUFCQUFBQUFRQkJzTmtUQ3dWL1hRRUFNZ0JCd05rVEN3a0JBQUFBQVFBQUFBRUFRWURhRXdzRm9JZ0FBRE1BUVpEYUV3c0ZBUUFBQUFFQVFkRGFFd3NGR3pjQUFEUUFRZURhRXdzQkFRQkJvTnNUQ3dXc2lBQUFOUUJCc05zVEN3VUJBQUFBQVFCQjhOc1RDd1hDdFFFQU5nQkJnTndUQ3dFQkFFSEEzQk1MQmFhMUFRQTNBRUhRM0JNTEFRRUFRWkRkRXdzRldiWUJBRGdBUWFEZEV3c0JBUUJCNE4wVEN3VTd0Z0VBT1FCQjhOMFRDd0VCQUVHdzNoTUxCWGEyQVFBNkFFSEEzaE1MQVFFQVFZRGZFd3NSK3J3QkFEc0FBQUFCQUFBQThGa0RBQUVBUWREZkV3c0ZTYllCQUR3QVFlRGZFd3NCQVFCQm9PQVRDd1VydGdFQVBRQkJzT0FUQ3dFQkFFSHc0Qk1MQldlMkFRQStBRUdBNFJNTEFRRUFRY0RoRXdzRnM3VUJBRDhBUWREaEV3c0JBUUJCa09JVEN3V1h0UUVBUUFCQm9PSVRDd0VCQUVIZzRoTUxFZW04QVFCQkFBQUFBUUFBQVBCWkF3QUJBRUd3NHhNTEJjRFJBQUJDQUVIQTR4TUxBUUVBUVlEa0V3c0ZpeXNCQUVNQVFaRGtFd3NGQVFBQUFBRUFRZERrRXdzRlhrWUFBRVFBUWVEa0V3c0ZBUUFBQUFFQVFhRGxFd3NGNmVJQUFFVUFRYkRsRXdzQkFRQkI4T1VUQ3dWa01BRUFSZ0JCZ09ZVEN3a0JBQUFBQVFBQUFBRUFRY0RtRXdzRjFEZ0FBRWNBUWREbUV3c0ZBUUFBQUFFQVFaRG5Fd3NGMERzQUFFZ0FRYURuRXdzSkFRQUFBQUVBQUFBQkFFSGc1eE1MQlFaZEFRQkpBRUh3NXhNTEFRRUFRYkRvRXdzRi9Wd0JBRW9BUWNEb0V3c0JBUUJCZ09rVEN3WDBYQUVBU3dCQmtPa1RDd0VCQUVIUTZSTUxFZFkxQVFCTUFBQUFBUUFBQVBSWkF3QUJBRUdnNmhNTEZjTWFBUUJOQUFBQUFRQUFBUFJaQXdBQkFBQUFBUUJCOE9vVEN4VVBOQUFBVGdBQUFBRUFBQUQwV1FNQUFRQUFBQUVBUWNEckV3c0Z5cmdBQUU4QVFkRHJFd3NGQVFBQUFBRUFRWkRzRXdzRk54TUFBRkFBUWFEc0V3c0ZBUUFBQUFFQVFlRHNFd3NGVUpvQUFGRUFRZkRzRXdzSkFRQUFBQUVBQUFBQkFFR3c3Uk1MQWxsT0FFSEE3Uk1MQVFFQVFZRHVFd3NGOHRFQUFBRUFRWkR1RXdzQkFRQkIwTzRUQ3dWTDBBQUFBZ0JCNE80VEN3RUJBRUdnN3hNTEJRdTRBQUFEQUVHdzd4TUxBUUVBUWZEdkV3c0ZBOUlBQUFRQVFZRHdFd3NCQVFCQndQQVRDd1ZTMEFBQUJRQkIwUEFUQ3dFQkFFR1E4Uk1MQllHNUFBQUdBRUdnOFJNTEFRRUFRZUR4RXdzRlg3d0JBQWNBUWZEeEV3c0ZBUUFBQUFFQVFiRHlFd3NGRk5JQUFBZ0FRY0R5RXdzQkFRQkJnUE1UQ3dWWjBBQUFDUUJCa1BNVEN3RUJBRUhROHhNTEJXRFFBQUFLQUVIZzh4TUxCUUVBQUFBQkFFR2c5Qk1MQlhVYUFBQUxBRUd3OUJNTEFRRUFRZkQwRXdzRmg3OEFBQXdBUVlEMUV3c0JBUUJCd1BVVEN3WDJ1QUFBRFFCQjBQVVRDd1VCQUFBQUFRQkJrUFlUQ3dWelRnQUFEZ0JCb1BZVEN3RUJBRUhnOWhNTEJmblJBQUFQQUVIdzloTUxBUUVBUWJEM0V3c0ZUTkFBQUJBQVFjRDNFd3NCQVFCQmdQZ1RDd1gzUkFFQUVRQkJrUGdUQ3dFQkFFSFErQk1MQllYZ0FBQVNBRUhnK0JNTEFRRUFRYUQ1RXdzRndvZ0FBQk1BUWJENUV3c0JBUUJCOFBrVEN3VlZ2QUVBRkFCQmdQb1RDd0VCQUVIQStoTUxCZERGQVFBVkFFSFEraE1MQVFFQVFaRDdFd3NGL2NJQkFCWUFRYUQ3RXdzQkFRQkI0UHNUQ3dXV1lnQUFGd0JCOFBzVEN3RUJBRUd3L0JNTEJXcThBQUFZQUVIQS9CTUxCUUVBQUFBQkFFR0EvUk1MQlJWcUFBQVpBRUdRL1JNTEFRRUFRZEQ5RXdzRmUxMEJBQm9BUWVEOUV3c0pBUUFBQUFFQUFBQUJBRUdnL2hNTEJhWVNBQUFiQUVHdy9oTUxCUUVBQUFBQkFFSHcvaE1MQlNtNEFBQWNBRUdBL3hNTEJRRUFBQUFCQUVIQS94TUxCWDR3QVFBZEFFSFEveE1MQlFFQUFBQUJBRUdRZ0JRTEJkSTdBQUFlQUVHZ2dCUUxCUUVBQUFBQkFFSGdnQlFMQlpxSUFBQWZBRUh3Z0JRTEJRRUFBQUFCQUVHd2dSUUxCWWdhQUFBZ0FFSEFnUlFMQlFFQUFBQUJBRUdBZ2hRTEJROWRBUUFoQUVHUWdoUUxBUUVBUWRDQ0ZBc0Zwb2dBQUNJQVFlQ0NGQXNGQVFBQUFBRUFRYUNERkFzRlkxMEJBQ01BUWJDREZBc0JBUUJCOElNVUN3Vk5pQUFBSkFCQmdJUVVDd1VCQUFBQUFRQkJ3SVFVQ3dYQjJ3QUFKUUJCMElRVUN3RUJBRUdRaFJRTEJYeThBUUFtQUVHZ2hSUUxBUUVBUWVDRkZBc0Y2TVVCQUNjQVFmQ0ZGQXNCQVFCQnNJWVVDd1d6bndBQUtBQkJ3SVlVQ3dFQkFFR0FoeFFMQlJCZEFRQXBBRUdRaHhRTEFRRUFRZENIRkFzRjlEOEJBQ29BUWVDSEZBc0pBUUFBQUFFQUFBQUJBRUdnaUJRTEJYRGdBQUFyQUVHd2lCUUxCUUVBQUFBQkFFSHdpQlFMQlhmZ0FBQXNBRUdBaVJRTEJRRUFBQUFCQUVIQWlSUUxCYlBoQUFBdEFFSFFpUlFMQlFFQUFBQUJBRUdRaWhRTEJaKzVBQUF1QUVHZ2loUUxBUUVBUWVDS0ZBc0YzbThBQUM4QVFmQ0tGQXNGQVFBQUFBRUFRYkNMRkFzRkpoUUFBREFBUWNDTEZBc0ZBUUFBQUFFQVFZQ01GQXNGM2FBQUFERUFRWkNNRkFzRkFRQUFBQUVBUWRDTUZBc0ZJR01BQURJQVFlQ01GQXNGQVFBQUFBRUFRYUNORkFzRjIzc0FBRE1BUWJDTkZBc0ZBUUFBQUFFQVFmQ05GQXNGeFo4QUFEUUFRWUNPRkFzSkFRQUFBQUVBQUFBQkFFSEFqaFFMQmUwZEFBQTFBRUhRamhRTEFRRUFRWkNQRkFzRmJhRUFBRFlBUWFDUEZBc0ZBUUFBQUFFQVFlQ1BGQXNGN2pJQkFEY0FRZkNQRkFzQkFRQkJzSkFVQ3dXaEdBQUFPQUJCd0pBVUN3RUJBRUdBa1JRTEJTVzRBQUE1QUVHUWtSUUxBUUVBUWRDUkZBc0ZVazRBQURvQVFlQ1JGQXNGQVFBQUFBRUFRYUNTRkFzRkN0SUFBRHNBUWJDU0ZBc0JBUUJCOEpJVUN3VlQwQUFBUEFCQmdKTVVDd0VCQUVIQWt4UUxCYmdZQUFBOUFFSFFreFFMQVFFQVFaQ1VGQXNGbTdrQUFENEFRYUNVRkFzQkFRQkI0SlFVQ3dVYjBnQUFQd0JCOEpRVUN3RUJBRUd3bFJRTEJWclFBQUJBQUVIQWxSUUxBUUVBUVlDV0ZBc0ZYRjBCQUVFQVFaQ1dGQXNCQVFCQjBKWVVDd1dJUXdFQVFnQkI0SllVQ3dFQkFFR2dseFFMQlY1T0FBQkRBRUd3bHhRTEFRRUFRZkNYRkFzRnBpZ0JBRVFBUVlDWUZBc0ZBUUFBQUFFQVFjQ1lGQXNGc29nQUFFVUFRZENZRkFzQkFRQkJrSmtVQ3dWRXZBRUFSZ0JCb0prVUN3RUJBRUhnbVJRTEJiN0ZBUUJIQUVId21SUUxBUUVBUWJDYUZBc0ZzZHNBQUVnQVFjQ2FGQXNCQVFCQmdKc1VDd1ZydkFFQVNRQkJrSnNVQ3dFQkFFSFFteFFMQmRiRkFRQktBRUhnbXhRTEFRRUFRYUNjRkFzRkQyTUFBRXNBUWJDY0ZBc0ZBUUFBQUFFQVFmQ2NGQXNGZ3BvQUFFd0FRWUNkRkFzQkFRQkJ3SjBVQ3dXUEdBQUFUUUJCMEowVUN3RUJBRUdRbmhRTEJSQzRBQUJPQUVHZ25oUUxBUUVBUWVDZUZBc0ZweGdBQUU4QVFmQ2VGQXNCQVFCQnNKOFVDd1dHdVFBQVVBQkJ3SjhVQ3dFQkFFR0FvQlFMQldkT0FBQlJBRUdRb0JRTEFRRUFRZENnRkFzRnNpZ0JBRklBUWVDZ0ZBc0ZBUUFBQUFFQVFhQ2hGQXNGdTRnQUFGTUFRYkNoRkFzQkFRQkI4S0VVQ3dWT3ZBRUFWQUJCZ0tJVUN3RUJBRUhBb2hRTEJjbkZBUUJWQUVIUW9oUUxBUUVBUVpDakZBc0Z1dHNBQUZZQVFhQ2pGQXNCQVFCQjRLTVVDd1YxdkFFQVZ3QkI4S01VQ3dFQkFFR3dwQlFMQmVIRkFRQllBRUhBcEJRTEFRRUFRWUNsRkFzRkdXTUFBRmtBUVpDbEZBc0ZBUUFBQUFFQVFkQ2xGQXNGalpvQUFGb0FRZUNsRkFzQkFRQkJvS1lVQ3dXYUdBQUFXd0JCc0tZVUN3RUJBRUh3cGhRTEJSbTRBQUJjQUVHQXB4UUxBUUVBUWNDbkZBc0ZzUmdBQUYwQVFkQ25GQXNCQVFCQmtLZ1VDd1dQdVFBQVhnQkJvS2dVQ3dFQkFFSGdxQlFMQlN1YUFBQmZBRUh3cUJRTENRRUFBQUFCQUFBQUFRQkJzS2tVQ3dYQ1hnQUFZQUJCd0trVUN3RUJBRUdBcWhRTEJhQ2hBQUJoQUVHUXFoUUxCUUVBQUFBQkFFSFFxaFFMQmF5aEFBQmlBRUhncWhRTEJRRUFBQUFCQUVHZ3F4UUxCYlFRQUFCakFFR3dxeFFMQ1FFQUFBQUJBQUFBQVFCQjhLc1VDd1VqVVFBQVpBQkJnS3dVQ3dFQkFFSEFyQlFMQmIrYUFBQmxBRUhRckJRTEJRRUFBQUFCQUVHUXJSUUxCYm1hQUFCbUFFR2dyUlFMQ1FFQUFBQUJBQUFBQVFCQjRLMFVDd1g2dUFBQVp3QkI4SzBVQ3dFQkFFR3dyaFFMQlZoR0FBQm9BRUhBcmhRTEJRRUFBQUFCQUVHQXJ4UUxCV3NyQVFCcEFFR1FyeFFMQlFFQUFBQUJBRUhRcnhRTEJaZlJBQUJxQUVIZ3J4UUxBUUVBUWFDd0ZBc0YzK0lBQUdzQVFiQ3dGQXNCQVFCQjhMQVVDd1ZNS3dFQWJBQkJnTEVVQ3dVQkFBQUFBUUJCd0xFVUN3VjYwUUFBYlFCQjBMRVVDd0VCQUVHUXNoUUxCYi9pQUFCdUFFR2dzaFFMQVFFQVFlQ3lGQXNGb1dJQUFJMEFRZkN5RkFzQkFRQkJzTE1VQ3dYLzRBQUFqZ0JCd0xNVUN3VUJBQUFBQVFCQmdMUVVDd1hzT3dBQWp3QkJrTFFVQ3dVQkFBQUFBUUJCMExRVUN3WGlPd0FBa0FCQjRMUVVDd1VCQUFBQUFRQkJvTFVVQ3dXc1BnRUFrUUJCc0xVVUN3VUJBQUFBQVFCQjhMVVVDd1dsUGdFQWtnQkJnTFlVQ3dVQkFBQUFBUUJCd0xZVUN3V2RQZ0VBa3dCQjBMWVVDd1VCQUFBQUFRQkJrTGNVQ3dXVlBnRUFsQUJCb0xjVUN3VUJBQUFBQVFCQjRMY1VDd1U2bWdBQWxRQkI4TGNVQ3drQkFBQUFBUUFBQUFFQVFiQzRGQXNGTXBvQUFKWUFRY0M0RkFzSkFRQUFBQUVBQUFBQkFFR0F1UlFMQlJJRUFBQ1hBRUdRdVJRTEFRRUFRZEM1RkFzRkRnUUFBSmdBUWVDNUZBc0JBUUJCb0xvVUN3V2EwQUFBbVFCQnNMb1VDd2tCQUFBQUFRQUFBQUVBUWZDNkZBc0Y5anNBQUpvQVFZQzdGQXNKQVFBQUFBRUFBQUFCQUVIQnV4UUxCRHdBQUpzQVFkQzdGQXNKQVFBQUFBRUFBQUFCQUVHUXZCUUxCYkVTQUFDY0FFR2d2QlFMQlFFQUFBQUJBRUhndkJRTEJhc1NBQUNkQUVId3ZCUUxCUUVBQUFBQkFFR3d2UlFMQlRTNEFBQ2VBRUhBdlJRTEJRRUFBQUFCQUVHQXZoUUxCUzY0QUFDZkFFR1F2aFFMQlFFQUFBQUJBRUhRdmhRTEJZalFBQUNnQUVIZ3ZoUUxCUUVBQUFBQkFFR2d2eFFMQmFYdkFBQ2hBRUd3dnhRTEJRRUFBQUFCQUVId3Z4UUxCUlE4QUFDaUFFR0F3QlFMQlFFQUFBQUJBRUhBd0JRTEJRbzhBQUNqQUVIUXdCUUxCUUVBQUFBQkFFR1F3UlFMQlpVYUFRQ2tBRUdnd1JRTEJRRUFBQUFCQUVIZ3dSUUxCYUFhQVFDbEFFSHd3UlFMQlFFQUFBQUJBRUd3d2hRTEJad2JBQUNtQUVIQXdoUUxBUUVBUVlEREZBc0Y5N2tCQUtjQVFaRERGQXNKQVFBQUFBRUFBQUFCQUVIUXd4UUxCZSs1QVFDb0FFSGd3eFFMQ1FFQUFBQUJBQUFBQVFCQm9NUVVDd1hudVFFQXFRQkJzTVFVQ3dVQkFBQUFBUUJCOE1RVUN3WGZ1UUVBcWdCQmdNVVVDd1VCQUFBQUFRQkJ3TVVVQ3dWNnVRQUFxd0JCME1VVUN3a0JBQUFBQVFBQUFBWUFRWkRHRkFzRmNya0FBS3dBUWFER0ZBc0pBUUFBQUFFQUFBQUJBRUhneGhRTEJkN2dBQUN0QUVId3hoUUxCUUVBQUFBQkFFR3d4eFFMQlIrNUFBQ3VBRUhBeHhRTENRRUFBQUFCQUFBQUJnQkJnTWdVQ3dYUzRBQUFyd0JCa01nVUN3a0JBQUFBQVFBQUFBRUFRZERJRkFzRlA0Z0FBTEFBUWVESUZBc05BUUFBQUFFQUFBQUJBQUFBRndCQm9Na1VDd1VTdVFBQXNRQkJzTWtVQ3drQkFBQUFBUUFBQUFFQVFmREpGQXNGSUlnQUFMSUFRWURLRkFzTkFRQUFBQUVBQUFBQkFBQUFGd0JCd01vVUN3VTV1UUFBc3dCQjBNb1VDd2tCQUFBQUFRQUFBQVlBUVpETEZBc0ZLN2tBQUxRQVFhRExGQXNKQVFBQUFBRUFBQUFCQUVIZ3l4UUxCUytJQUFDMUFFSHd5eFFMRFFFQUFBQUJBQUFBQVFBQUFCY0FRYkRNRkFzRlFCc0JBTFlBUWNETUZBc0ZBUUFBQUFFQVFZRE5GQXNGaHJ3QkFMY0FRWkRORkFzSkFRQUFBQUVBQUFBQkFFSFF6UlFMQlg3Z0FBQzRBRUhnelJRTEJRRUFBQUF4QUVHZ3poUUxCV0xTQUFDNUFFR3d6aFFMQlFFQUFBQUJBRUh3emhRTEJkdzRBQUM2QUVHQXp4UUxDUUVBQUFBQkFBQUFBUUJCd004VUN3WGZPQUFBdXdCQjBNOFVDd2tCQUFBQUFRQUFBQUVBUVpEUUZBc0ZtMklBQU1rQVFhRFFGQXNCQVFCQjROQVVDd1gwNEFBQXlnQkI4TkFVQ3dVQkFBQUFBUUJCc05FVUN3Vi8wQUFBeXdCQndORVVDd1VCQUFBQUFRQkJnTklVQ3dXUjBBQUF6QUJCa05JVUN3a0JBQUFBQVFBQUFBRUFRZERTRkFzRjJxb0JBQUVBUWVEU0ZBc0ZBUUFBQUFFQVFhRFRGQXNGTEs0QkFBRUFRYkRURkFzSkFRQUFBQUVBQUFBQkFFSHcweFFMQlJxdUFRQUNBRUdBMUJRTENRRUFBQUFCQUFBQUFRQkJ3TlFVQ3dVanJnRUFBd0JCME5RVUN3a0JBQUFBQVFBQUFBRUFRWkRWRkFzRkVhNEJBQVFBUWFEVkZBc0pBUUFBQUFFQUFBQUJBRUhnMVJRTEJmK3RBUUFGQUVIdzFSUUxDUUVBQUFBQkFBQUFBUUJCc05ZVUN3VUlyZ0VBQmdCQndOWVVDd2tCQUFBQUFRQUFBQUVBUVlEWEZBc0ZSNjRCQUFjQVFaRFhGQXNKQVFBQUFBRUFBQUFCQUVIUTF4UUxCVFd1QVFBSUFFSGcxeFFMQ1FFQUFBQUJBQUFBQVFCQm9OZ1VDd1UrcmdFQUNRQkJzTmdVQ3drQkFBQUFBUUFBQUFFQVFmRFlGQXNGOGFvQkFBRUFRWURaRkFzQkFRQkJ3TmtVQ3dWd3JRRUFBZ0JCME5rVUN3RUJBRUdRMmhRTEJTV3RBUUFEQUVIZzJoUUxCWFdyQVFBQkFFSHcyaFFMQlFFQUFBQUJBRUd3MnhRTEJlT3RBUUFDQUVIQTJ4UUxCUUVBQUFBQkFFR0EzQlFMQmJHckFRQURBRUdRM0JRTENRRUFBQUFCQUFBQUFRQkIwTndVQ3dWUHF3RUFCQUJCNE53VUN3RUJBRUdnM1JRTEEyQVhBUUJCOE4wVUN3WElNZ0FBQVFCQmdONFVDd2tCQUFBQUJnQUFBQVlBUWNEZUZBc0YwRU1CQUFJQVFkRGVGQXNKQVFBQUFBRUFBQUEyQUVHUTN4UUxCVXR2QUFBREFFR2czeFFMQ1FFQUFBQVFBQUFBTlFCQjROOFVDd1dLZGdBQUJBQkI4TjhVQ3dVQkFBQUFPQUJCc09BVUN3VTJEZ0FBQlFCQndPQVVDd1VCQUFBQU1RQkJnT0VVQ3dYamFBQUFCZ0JCa09FVUN3VUJBQUFBQmdCQjBPRVVDd1dZNFFBQUJ3QkI0T0VVQ3hVQkFBQUFBUUFBQUFFQUFBQUdBQUFBQmdBQUFBRUFRYURpRkFzRkVxb0FBQWdBUWJEaUZBc0ZBUUFBQURFQVFmRGlGQXNGVzdvQUFBa0FRWURqRkFzaEFRQUFBQUVBQUFBQkFBQUFCZ0FBQUFZQUFBQUJBQUFBQVFBQUFEVUFBQUF4QUVIQTR4UUxCZlh1QUFBS0FFSFE0eFFMSVFFQUFBQTNBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBMUFBQUFNUUJCa09RVUN3VkZmd0FBQ3dCQm9PUVVDeVVCQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0FBQUFFQUFBQUJBQUFBQVFBQUFEVUFBQUFvQUVIZzVCUUxCYjhyQVFBTUFFSHc1QlFMRVFFQUFBQUJBQUFBQVFBQUFBRUFBQUExQUVHdzVSUUxCVEIvQUFBTkFFSEE1UlFMQlFFQUFBQUJBRUdBNWhRTEJhandBQUFPQUVHUTVoUUxCUUVBQUFBeEFFSFE1aFFMQmZSeEFBQVBBRUhnNWhRTEZRRUFBQUFCQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0JCb09jVUN3WFJjUUFBRUFCQnNPY1VDeEVCQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0JCOE9jVUN3V1p6d0FBRVFCQmdPZ1VDeEVCQUFBQUFRQUFBQVlBQUFBR0FBQUFNUUJCd09nVUN3VmxIZ0VBRWdCQjBPZ1VDeVVCQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0FBQUFFQUFBQUJBQUFBQVFBQUFEVUFBQUFvQUVHUTZSUUxCUnF2QUFBVEFFR2c2UlFMSFFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBMUFFSGc2UlFMQlFTcUFBQVVBRUh3NlJRTEtRRUFBQUFCQUFBQUFRQUFBQVlBQUFBR0FBQUFBUUFBQUFFQUFBQTFBQUFBQmdBQUFBRUFBQUFvQUVHdzZoUUxCUjNQQUFBVkFFSEE2aFFMRVFFQUFBQUdBQUFBQmdBQUFBRUFBQUFvQUVHQTZ4UUxCVWxwQUFBV0FFR1E2eFFMQ1FFQUFBQUdBQUFBQVFCQjBPc1VDd1VZRmdFQUZ3QkI0T3NVQ3dVQkFBQUFLQUJCb093VUN3VUxGZ0VBR0FCQjhPd1VDd1hrUFFBQUdRQkJnTzBVQ3drR0FBQUFBUUFBQUNnQVFjRHRGQXNGT1I0QkFCb0FRZER0RkFzWkFRQUFBQUVBQUFBQkFBQUFCZ0FBQUFZQUFBQUJBQUFBS3dCQmtPNFVDd1dUSGdFQUd3QkJvTzRVQ3dVQkFBQUFBUUJCNE80VUN3WEc5d0FBSEFCQjhPNFVDd2tCQUFBQUFRQUFBQUVBUWJEdkZBc0YxK29BQUIwQVFjRHZGQXNKQVFBQUFBRUFBQUF4QUVHQThCUUxCVWl1QUFBZUFFR1E4QlFMQlRrQUFBQXlBRUhROEJRTEJjaTFBQUFmQUVIZzhCUUxBVEVBUWFEeEZBc0ZwZUVBQUNBQVFiRHhGQXNOQVFBQUFBWUFBQUFCQUFBQUtBQkI4UEVVQ3dXQTRRQUFJUUJCZ1BJVUN3a0JBQUFBQmdBQUFBRUFRY0R5RkFzRFlCY0JBRUdROHhRTEJjZ3lBQUFCQUVHZzh4UUxEUVlBQUFBR0FBQUFBUUFBQUFzQVFlRHpGQXNGMEVNQkFBSUFRZkR6RkFzSkFRQUFBQUVBQUFBN0FFR3c5QlFMQlV0dkFBQURBRUhBOUJRTENRRUFBQUFRQUFBQU9nQkJnUFVVQ3dXS2RnQUFCQUJCa1BVVUN3VUJBQUFBUFFCQjBQVVVDd1UyRGdBQUJRQkI0UFVVQ3dVQkFBQUFNUUJCb1BZVUN3WGphQUFBQmdCQnNQWVVDd1VCQUFBQUJnQkI4UFlVQ3dXWTRRQUFCd0JCZ1BjVUN4VUJBQUFBQVFBQUFBRUFBQUFHQUFBQUJnQUFBQUVBUWNEM0ZBc0ZFcW9BQUFnQVFkRDNGQXNKT2dBQUFBRUFBQUF4QUVHUStCUUxCVnU2QUFBSkFFR2crQlFMSVFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBNkFBQUFNUUJCNFBnVUN3WDE3Z0FBQ2dCQjhQZ1VDeVVCQUFBQVBBQUFBQUVBQUFBR0FBQUFCZ0FBQUFFQUFBQUJBQUFBQVFBQUFEb0FBQUF4QUVHdytSUUxCVVYvQUFBTEFFSEErUlFMSlFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBQkFBQUFPZ0FBQUNnQVFZRDZGQXNGdnlzQkFBd0FRWkQ2RkFzUkFRQUFBQUVBQUFBQkFBQUFBUUFBQURvQVFkRDZGQXNGTUg4QUFBMEFRZUQ2RkFzRkFRQUFBQUVBUWFEN0ZBc0ZxUEFBQUE0QVFiRDdGQXNGQVFBQUFERUFRZkQ3RkFzRjlIRUFBQThBUVlEOEZBc1ZBUUFBQUFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUVIQS9CUUxCZEZ4QUFBUUFFSFEvQlFMRVFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUVHUS9SUUxCWm5QQUFBUkFFR2cvUlFMRVFFQUFBQUJBQUFBQmdBQUFBWUFBQUF4QUVIZy9SUUxCV1VlQVFBU0FFSHcvUlFMSlFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBQkFBQUFPZ0FBQUNnQVFiRCtGQXNGR3E4QUFCTUFRY0QrRkFzZEFRQUFBQUVBQUFBQkFBQUFCZ0FBQUFZQUFBQUJBQUFBQVFBQUFEb0FRWUQvRkFzRkJLb0FBQlFBUVpEL0ZBc3BBUUFBQUFFQUFBQUJBQUFBQmdBQUFBWUFBQUFCQUFBQUFRQUFBRG9BQUFBR0FBQUFBUUFBQUNnQVFkRC9GQXNGSGM4QUFCVUFRZUQvRkFzUkFRQUFBQVlBQUFBR0FBQUFBUUFBQUNnQVFhQ0FGUXNGU1drQUFCWUFRYkNBRlFzSkFRQUFBQVlBQUFBQkFFSHdnQlVMQlJnV0FRQVhBRUdBZ1JVTEJRRUFBQUFvQUVIQWdSVUxCUXNXQVFBWUFFR1FnaFVMQmVROUFBQVpBRUdnZ2hVTENRWUFBQUFCQUFBQUtBQkI0SUlWQ3dVNUhnRUFHZ0JCOElJVkN4MEJBQUFBQVFBQUFBRUFBQUFHQUFBQUJnQUFBQUVBQUFBNkFBQUFLd0JCc0lNVkN3V1RIZ0VBR3dCQndJTVZDd1VCQUFBQUFRQkJnSVFWQ3dYRzl3QUFIQUJCa0lRVkN3a0JBQUFBQVFBQUFBRUFRZENFRlFzRjErb0FBQjBBUWVDRUZRc05BUUFBQUFFQUFBQUJBQUFBTVFCQm9JVVZDd1ZJcmdBQUhnQkJzSVVWQ3dVK0FBQUFNZ0JCOElVVkN3WEl0UUFBSHdCQmdJWVZDd0V4QUVIQWhoVUxCYVhoQUFBZ0FFSFFoaFVMRFFFQUFBQUdBQUFBQVFBQUFDZ0FRWkNIRlFzRmdPRUFBQ0VBUWFDSEZRc0pBUUFBQUFZQUFBQUJBRUhnaHhVTEJYb0VBQUFpQUVId2h4VUxHUUVBQUFBL0FBQUFBUUFBQUFFQUFBQUdBQUFBQmdBQUFBRUFRYkNJRlFzRmNTa0JBQ01BUWNDSUZRc0ZBUUFBQUNnQVFZQ0pGUXNGZUowQkFDUUFRWkNKRlFzZEFRQUFBQUVBQUFBQkFBQUFCZ0FBQUFFQUFBQUJBQUFBQVFBQUFBWUFRZENKRlFzRFlCY0JBRUdnaWhVTEJjZ3lBQUFCQUVHd2loVUxEUUVBQUFBQkFBQUFBUUFBQUFFQVFmQ0tGUXNGMEVNQkFBSUFRWUNMRlFzTkFRQUFBQUVBQUFBQkFBQUFBUUJCd0lzVkN3Vkxid0FBQXdCQjBJc1ZDd2tCQUFBQUFRQUFBQUVBUVpDTUZRc0ZpbllBQUFRQVFhQ01GUXNGQVFBQUFBRUFRZUNNRlFzRk5nNEFBQVVBUWZDTUZRc0ZBUUFBQURFQVFiQ05GUXNGNDJnQUFBWUFRY0NORlFzRkFRQUFBQUVBUVlDT0ZRc0ZtT0VBQUFjQVFaQ09GUXNWQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFSFFqaFVMQlJLcUFBQUlBRUhnamhVTENRRUFBQUFCQUFBQU1RQkJvSThWQ3dWYnVnQUFDUUJCc0k4VkN5RUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQURFQVFmQ1BGUXNGOWU0QUFBb0FRWUNRRlFzbEFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQU1RQkJ3SkFWQ3dWRmZ3QUFDd0JCMEpBVkN5RUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUNnQVFaQ1JGUXNGdnlzQkFBd0FRYUNSRlFzTkFRQUFBQUVBQUFBQkFBQUFBUUJCNEpFVkN3VXdmd0FBRFFCQjhKRVZDd1VCQUFBQUFRQkJzSklWQ3dXbzhBQUFEZ0JCd0pJVkN3VUJBQUFBTVFCQmdKTVZDd1gwY1FBQUR3QkJrSk1WQ3hVQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRZENURlFzRjBYRUFBQkFBUWVDVEZRc1JBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRYUNVRlFzRm1jOEFBQkVBUWJDVUZRc1JBUUFBQUFFQUFBQUJBQUFBQVFBQUFERUFRZkNVRlFzRlpSNEJBQklBUVlDVkZRc2xBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFLQUJCd0pVVkN3VWFyd0FBRXdCQjBKVVZDeDBCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQmtKWVZDd1VFcWdBQUZBQkJvSllWQ3lVQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFSGdsaFVMQlIzUEFBQVZBRUh3bGhVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFR3dseFVMQlVscEFBQVdBRUhBbHhVTENRRUFBQUFCQUFBQUFRQkJnSmdWQ3dVWUZnRUFGd0JCa0pnVkN3VUJBQUFBS0FCQjBKZ1ZDd1VMRmdFQUdBQkJvSmtWQ3dYa1BRQUFHUUJCc0prVkN3a0JBQUFBQVFBQUFDZ0FRZkNaRlFzRk9SNEJBQm9BUVlDYUZRc2RBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQ2dBUWNDYUZRc0ZreDRCQUJzQVFkQ2FGUXNGQVFBQUFBRUFRWkNiRlFzRnh2Y0FBQndBUWFDYkZRc05BUUFBQUFFQUFBQUJBQUFBTVFCQjRKc1ZDd1hYNmdBQUhRQkI4SnNWQ3cwQkFBQUFBUUFBQUFFQUFBQXhBRUd3bkJVTEJVaXVBQUFlQUVIQW5CVUxCUUVBQUFBeEFFR0FuUlVMQmNpMUFBQWZBRUdRblJVTEFURUFRZENkRlFzRnBlRUFBQ0FBUWVDZEZRc05BUUFBQUFFQUFBQUJBQUFBS0FCQm9KNFZDd1dBNFFBQUlRQkJzSjRWQ3drQkFBQUFBUUFBQUFFQVFmQ2VGUXNGZWdRQUFDSUFRWUNmRlFzWkFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQndKOFZDd1Z4S1FFQUl3QkIwSjhWQ3dVQkFBQUFLQUJCa0tBVkN3VUdvd0FBWlFCQm9LQVZDd1VCQUFBQUFRQkI0S0FWQ3dWQU9BRUFaZ0JCOEtBVkN3RUJBRUd3b1JVTEJjSVhBUUJuQUVIQW9SVUxFUUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBRUdBb2hVTEJiWVhBUUJvQUVIUW9oVUxCZWgxQUFCcEFFSGdvaFVMQlFFQUFBQUJBRUdnb3hVTEJlSFJBQUJxQUVHd294VUxBUUVBUWZDakZRc0ZzeDRBQUdzQVFZQ2tGUXNOQVFBQUFBRUFBQUFCQUFBQUFRQkJ3S1FWQ3dVOEVBQUFiQUJCMEtRVkN3a0JBQUFBQVFBQUFBRUFRWkNsRlFzRmdNQUFBQUVBUWFDbEZRc1JBUUFBQUFFQUFBQW9BQUFBS0FBQUFDZ0FRZUNsRlFzRmFLQUFBQUlBUWZDbEZRc1JBUUFBQUNnQUFBQW9BQUFBS0FBQUFDZ0FRYkNtRlFzRklYb0FBQU1BUWNDbUZRc1JBUUFBQUFFQUFBQUJBQUFBQVFBQUFDZ0FRWUNuRlFzRmFMc0FBQVFBUVpDbkZRc1JBUUFBQUFFQUFBQUJBQUFBQVFBQUFDZ0FRZENuRlFzRnZIb0FBQVVBUWVDbkZRc1pBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUtBQkJvS2dWQ3dYOXV3QUFCZ0JCc0tnVkN4a0JBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFSHdxQlVMQlFzeEFBQUhBRUdBcVJVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFSEFxUlVMQlFFbEFRQUlBRUhRcVJVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFR1FxaFVMQmV3a0FRQUpBRUdncWhVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFSGdxaFVMQlNSekFBQUtBRUh3cWhVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFR3dxeFVMQmVtSUFBQUxBRUhBcXhVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFR0FyQlVMQmJIakFBQU1BRUdRckJVTENRRUFBQUFCQUFBQUFRQkIwS3dWQ3dWek5BQUFEUUJCNEt3VkN3a0JBQUFBQVFBQUFBRUFRYUN0RlFzRmI3d0FBQTRBUWJDdEZRc0JBUUJCOEswVkN3VmFOQUFBRHdCQmdLNFZDd1VCQUFBQUFRQkJ3SzRWQ3dWNTVBQUFFQUJCMEs0VkN3VUJBQUFBQVFCQmtLOFZDd1dYNUFBQUVRQkJvSzhWQ3dVQkFBQUFBUUJCNEs4VkN3VkJOQUFBRWdCQjhLOFZDd1VCQUFBQUFRQkJzTEFWQ3dWMlRRQUFFd0JCd0xBVkN3VUJBQUFBQVFCQmdMRVZDd1VqTkFBQUZBQkJrTEVWQ3dVQkFBQUFBUUJCMExFVkN3WFZlZ0FBRlFCQjRMRVZDd2tCQUFBQUFRQUFBQUVBUWFDeUZRc0ZFTHdBQUJZQVFiQ3lGUXNKQVFBQUFBRUFBQUFCQUVId3NoVUxCVVJ6QUFBWEFFR0FzeFVMQ1FFQUFBQUJBQUFBQVFCQndMTVZDd1hoNHdBQUdBQkIwTE1WQ3cwQkFBQUFBUUFBQUFFQUFBQUJBRUdRdEJVTEJVTGpBQUFaQUVHZ3RCVUxBUUVBUWVDMEZRc0ZNREFBQUJvQVFmQzBGUXNSQVFBQUFBRUFBQUFCQUFBQUFRQUFBQ2dBUWJDMUZRc0ZlTHNBQUJzQVFjQzFGUXNaQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFLQUJCZ0xZVkN3VnBlZ0FBSEFCQmtMWVZDd2tCQUFBQUFRQUFBQUVBUWRDMkZRc0YxTEFBQUIwQVFlQzJGUXNKQVFBQUFBRUFBQUFCQUVHZ3R4VUxCYlF3QUFBZUFFR3d0eFVMRFFFQUFBQUJBQUFBQVFBQUFBRUFRZkMzRlFzRjNqQUFBQjhBUVlDNEZRc05BUUFBQUFFQUFBQUJBQUFBQVFCQndMZ1ZDd1dQdXdBQUlBQkIwTGdWQ3hVQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRWkM1RlFzRjFic0FBQ0VBUWFDNUZRc1ZBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIZ3VSVUxCUVo2QUFBaUFFSHd1UlVMRVFFQUFBQUJBQUFBQVFBQUFBRUFBQUFvQUVHd3VoVUxCZXQ1QUFBakFFSEF1aFVMRVFFQUFBQUJBQUFBQVFBQUFBRUFBQUFvQUVHQXV4VUxCWlF3QUFBa0FFR1F1eFVMQ1FFQUFBQUJBQUFBQVFCQjBMc1ZDd1ZzTUFBQUpRQkI0THNWQ3drQkFBQUFBUUFBQUFFQVFhQzhGUXNGbWFBQUFDWUFRYkM4RlFzSkFRQUFBQUVBQUFBeEFFSHd2QlVMQll4NkFBQW5BRUdBdlJVTENRRUFBQUFCQUFBQUFRQkJ3TDBWQ3dWTU1BQUFLQUJCMEwwVkN3a0JBQUFBQVFBQUFBRUFRWmkrRlFzYXJRY0FBTFlIQUFDM0J3QUF1QWNBQUxrSEFBQzZCd0FBdXdjQVFjUytGUXZUQkR0T0FBQmNQQU1BTzA0QUFBRUFBQUNzcVFFQVhEd0RBS3lwQVFBQ0FBQUE2T1FBQUZ3OEF3RG81QUFBQXdBQUFPa09BQUJjUEFNQTZRNEFBQVFBQUFDTnJ3RUFYRHdEQUkydkFRQUZBQUFBejRJQkFGdzhBd0RQZ2dFQUJnQUFBRHRPQUFEbWFRQUEzbWtBQUFjQUFBQTdUZ0FBZEhRQUFHeDBBQUFJQUFBQU8wNEFBRHMxQVFBek5RRUFDUUFBQUZpOEFBQmNQQU1BV0x3QUFBb0FBQUJNcmdFQVhEd0RBRXl1QVFBTEFBQUFQc0FBQUZ3OEF3QSt3QUFBREFBQUFIK3ZBQUJjUEFNQWY2OEFBQTBBQUFBNUd3RUFPZUFBQURMZ0FBQU9BQUFBT1JzQkFGWGdBQUJPNEFBQUR3QUFBRGtiQVFEaUZBQUEyeFFBQUJBQUFBRFJxZ0VBeEdrQUFMdHBBQUFSQUFBQU8wNEFBSzEwQUFDbGRBQUFFZ0FBQUxFWEFRQldkQUFBVVhRQUFCTUFBQUJodkFBQXozTUFBTVp6QUFBVUFBQUE4b2tBQUhscEFBQm9hUUFBRlFBQUFEa2JBUUR3RkFBQTZSUUFBQllBQUFBNUd3RUFZMndBQUZ4c0FBQVhBQUFBT1JzQkFMaHpBQUN4Y3dBQUdBQUFBRGtiQVFBN2RBQUFOSFFBQUJrQUFBQ2NYUUFBOG5NQUFPUnpBQUFhQUFBQWcxMEJBSmRwQUFDUmFRQUFHd0FBQUVOT0FBRElNd0VBdVRNQkFCd0FBQURRQkFBQW1sMEJBSWxkQVFBZEFBQUFDMDhBQUNCMEFBQUtkQUFBSGdBQUFPRUVBQUMvVVFBQXExRUFBQjhBQUFBNUd3RUE0SUlCQU5tQ0FRQWdBQUFBZm9JQkFPY3lBQURkTWdBQUlRQUFBSmwwQUFEUmJ3QUF4VzhBQUNJQUFBQ3hGZ0FBV3RFQUFFM1JBQUFqQUFBQWpnUUFBUDhMQUFEckN3QUFKQUFBQUlaaUFBQjQwQUFBYU5BQUFMOENBQUNnWVFVQVFhRERGUXNDSjVvQVFZTEVGUXNMQVFELy8vLy9pdUVBQUFFQVFaakVGUXNKQWdBQUFBSUFBQUFEQUVIY3hCVUxBZ0VCQUVIcXhCVUxDd0VBLy8vLy8wVTRBUUFDQUVHQXhSVUxCUUVBQUFBS0FFSFN4UlVMQ3dFQS8vLy8vM1lwQVFBREFFSG94UlVMRVFRQUFBQUxBQUFBQmdBQUFDZ0FBQUF1QUVHNnhoVUxDd0VBLy8vLy94NjNBQUFFQUVIUXhoVUxCUUVBQUFBS0FFR2l4eFVMQ3dFQS8vLy8vNUlaQVFBRkFFRzR4eFVMQ1FJQUFBQUJBQUFBQ2dCQmlzZ1ZDd3NCQVAvLy8vOWhHUUVBQmdCQm9NZ1ZDdzBEQUFBQUFRQUFBQVlBQUFBS0FFSHl5QlVMQ3dFQS8vLy8venZmQUFBSEFFR0l5UlVMQ1FJQUFBQURBQUFBQ2dCQnpNa1ZDd0VCQUVIYXlSVUxDd0VBLy8vLy85SVhBUUFJQUVId3lSVUxEUU1BQUFBQkFBQUFCZ0FBQUFZQVFjTEtGUXNMQVFELy8vLy9NYmNBQUFvQVFkaktGUXNGQVFBQUFBb0FRYXJMRlFzTEFRRC8vLy8vakJrQUFBc0FRY0RMRlFzSkFnQUFBQU1BQUFBS0FFR0V6QlVMQVFFQVFaTE1GUXNMQVFELy8vLy94aGNBQUF3QVFhak1GUXNSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQWNBUWV6TUZRc0NBUUVBUWZyTUZRc0xBUUQvLy8vL3E4Z0FBQTRBUVpETkZRc0pBZ0FBQUEwQUFBQU9BRUhpelJVTEN3RUEvLy8vLzdnZUFBQVBBRUg0elJVTEVRUUFBQUFNQUFBQUFRQUFBQW9BQUFBeEFFSEt6aFVMQ3dFQS8vLy8vM29vQVFBUUFFSGd6aFVMQ1FJQUFBQUJBQUFBRHdCQnNzOFZDd3NCQVAvLy8vL3RDQUFBRVFCQnlNOFZDd1VCQUFBQUlBQkJtdEFWQ3dzQkFQLy8vLzlzTmdFQUV3QkJzTkFWQ3dVQkFBQUFBd0JCOU5BVkN3RUJBRUdDMFJVTEN3RUEvLy8vL3lhK0FBQVVBRUdZMFJVTEJRRUFBQUFEQUVIYzBSVUxBUUVBUWVyUkZRc0xBUUQvLy8vLzRqRUFBQlVBUVlEU0ZRc05Bd0FBQUFNQUFBQUdBQUFBQmdCQnhOSVZDd0VCQUVIUzBoVUxDd0VBLy8vLy8vczhBQUFXQUVIbzBoVUxDUUlBQUFBREFBQUFCZ0JCck5NVkN3RUJBRUc2MHhVTEN3RUEvLy8vLytob0FBQVhBRUhRMHhVTERRTUFBQUFEQUFBQUFRQUFBQVlBUVpUVUZRc0JBUUJCb3RRVkN5TUJBUC8vLy85QkVBQUFHQUFBQUFFQUFBRDRXUU1BQXdBQUFBTUFBQUFCQUFBQUJnQkIvTlFWQ3dFQkFFR0sxUlVMQ3dFQS8vLy8vNndrQVFBWkFFR2cxUlVMSlFrQUFBQURBQUFBQVFBQUFCRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFGQUFBQUM4QVFlVFZGUXNCQVFCQjh0VVZDd3NCQVAvLy8vOTBjd0FBR2dCQmlOWVZDd1VCQUFBQUF3QkJ6TllWQ3dFQkFFSGExaFVMQ3dFQS8vLy8vM1VsQVFBYkFFSHcxaFVMQ1FJQUFBQURBQUFBQVFCQnROY1ZDd0VCQUVIQzF4VUxDd0VBLy8vLy8wME9BQUFjQUVIWTF4VUxEUU1BQUFBREFBQUFBUUFBQUFFQVFaellGUXNCQVFCQnF0Z1ZDeDhCQVAvLy8vOVhEZ0FBSFFBQUFBRUFBQUQ4V1FNQUFnQUFBQU1BQUFBQkFFR0UyUlVMQVFFQVFaTFpGUXNMQVFELy8vLy9JRGdBQUI0QVFhalpGUXNKQWdBQUFBTUFBQUF4QUVIczJSVUxBUUVBUWZyWkZRc2ZBUUQvLy8vL1Z1WUFBQjhBQUFBQkFBQUFBRm9EQUFJQUFBQURBQUFBQ2dCQjFOb1ZDd0VCQUVIaTJoVUxDd0VBLy8vLy8xQnZBQUFnQUVINDJoVUxEUU1BQUFBREFBQUFFQUFBQUFFQVFiemJGUXNCQVFCQnl0c1ZDd3NCQVAvLy8vOFhxZ0FBSVFCQjROc1ZDdzBEQUFBQUF3QUFBQUVBQUFBeEFFR2szQlVMQVFFQVFiTGNGUXNiQVFELy8vLy9GU0FBQUNJQUFBQUJBQUFBQUZvREFBRUFBQUFEQUVHTTNSVUxBUUVBUVpyZEZRc2JBUUQvLy8vL0h5QUFBQ01BQUFBQkFBQUFCRm9EQUFFQUFBQURBRUgwM1JVTEFRRUFRWUxlRlFzYkFRRC8vLy8vYWtFQkFDUUFBQUFCQUFBQUNGb0RBQUVBQUFBREFFSGMzaFVMQVFFQVFlcmVGUXNiQVFELy8vLy9RT3NBQUNVQUFBQUJBQUFBQkZvREFBRUFBQUFEQUVIRTN4VUxBUUVBUWRMZkZRc2ZBUUQvLy8vL3lCWUJBQ1lBQUFBQkFBQUFDRm9EQUFJQUFBQURBQUFBR1FCQnJPQVZDd0VCQUVHNjRCVUxId0VBLy8vLy8xeHZBQUFuQUFBQUFnQUFBQXhhQXdBQ0FBQUFBUUFBQUJBQVFhTGhGUXNMQVFELy8vLy9DZVlBQUNrQVFiamhGUXNKQWdBQUFBSUFBQUFEQUVIODRSVUxBZ0VCQUVHSzRoVUxDd0VBLy8vLy8vRHhBQUFxQUVHZzRoVUxDUUlBQUFBQ0FBQUFBd0JCNU9JVkN3SUJBUUJCOHVJVkN3c0JBUC8vLy85c01RQUFLd0JCaU9NVkN3MERBQUFBQWdBQUFBTUFBQUFKQUVITTR4VUxBZ0VCQUVIYTR4VUxDd0VBLy8vLy8rUHVBQUFzQUVIdzR4VUxEUU1BQUFBQ0FBQUFBd0FBQURFQVFiVGtGUXNDQVFFQVFjTGtGUXNyQVFELy8vLy9OSE1BQUMwQUFBQUJBQUFBRkZvREFBVUFBQUFDQUFBQUF3QUFBQklBQUFBR0FBQUFFd0JCbk9VVkN3SUJBUUJCcXVVVkN3c0JBUC8vLy8rdnZnQUFMZ0JCd09VVkN3a0NBQUFBQWdBQUFBTUFRWVRtRlFzQ0FRRUFRWkxtRlFzTEFRRC8vLy8vQmVZQUFEQUFRYWptRlFzSkFnQUFBQUlBQUFBREFFSHM1aFVMQWdFQkFFSDY1aFVMQ3dFQS8vLy8vK3p4QUFBeEFFR1E1eFVMQ1FJQUFBQUNBQUFBQXdCQjFPY1ZDd0lCQVFCQjR1Y1ZDd3NCQVAvLy8vOW9NUUFBTWdCQitPY1ZDdzBEQUFBQUFnQUFBQU1BQUFBSkFFRzg2QlVMQWdFQkFFSEs2QlVMQ3dFQS8vLy8vOS91QUFBekFFSGc2QlVMRFFNQUFBQUNBQUFBQXdBQUFERUFRYVRwRlFzQ0FRRUFRYkxwRlFzTEFRRC8vLy8vUlpzQUFEUUFRY2pwRlFzTkF3QUFBQUlBQUFBREFBQUFDQUJCak9vVkN3SUJBUUJCbXVvVkN3c0JBUC8vLy85YnF3QUFOZ0JCc09vVkN4RUVBQUFBQWdBQUFBTUFBQUFsQUFBQUFRQkI5T29WQ3dJQkFRQkJndXNWQ3dzQkFQLy8vLysvY1FBQU53QkJtT3NWQ3drQ0FBQUFBZ0FBQUFNQVFkenJGUXNDQVFFQVFlcnJGUXNMQVFELy8vLy9GalVCQURnQVFkTHNGUXNMQVFELy8vLy9OYjhBQURrQVFlanNGUXNSQkFBQUFBSUFBQUFEQUFBQUFRQUFBREVBUWF6dEZRc0NBUUVBUWJydEZRc0xBUUQvLy8vLzFoNEJBRHNBUWREdEZRc1JCQUFBQUFJQUFBQURBQUFBRUFBQUFDZ0FRWlR1RlFzQ0FRRUFRYUx1RlFzTEFRRC8vLy8vckc0QUFEd0FRYmp1RlFzVkJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBRUg4N2hVTEFnRUJBRUdLN3hVTEN3RUEvLy8vLys4L0FRQTlBRUdnN3hVTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBcUFFSGs3eFVMQWdFQkFFSHk3eFVMQ3dFQS8vLy8vNVQxQUFBK0FFR0k4QlVMRFFNQUFBQUJBQUFBQVFBQUFDb0FRZHJ3RlFzTEFRRC8vLy8vR2drQUFEOEFRZkR3RlFzUkJBQUFBQUVBQUFBQkFBQUFLZ0FBQUNvQVFjTHhGUXNyQVFELy8vLy96VGNCQUVBQUFBQUJBQUFBR0ZvREFBVUFBQUFCQUFBQUFRQUFBQUVBQUFBcUFBQUFLZ0JCcXZJVkN3c0JBUC8vLy85WnVBQUFRUUJCd1BJVkN4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQU1RQkJoUE1WQ3dJQkFRQkJrdk1WQ3dzQkFQLy8vLzg2dUFBQVFnQkJxUE1WQ3hFRUFBQUFBZ0FBQUFNQUFBQUJBQUFBTVFCQjdQTVZDd0lCQVFCQit2TVZDeXNCQVAvLy8vOVd1QUFBUXdBQUFBUUFBQUFnV2dNQUJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQXhBRUhVOUJVTEFnRUJBRUhpOUJVTEp3RUEvLy8vLzd2UkFBQkVBQUFBQVFBQUFQeFpBd0FFQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0JCdlBVVkN3SUJBUUJCeXZVVkN5TUJBUC8vLy8rY1lRQUFSUUFBQUFFQUFBQUFXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJwUFlWQ3dJQkFRQkJzdllWQ3lzQkFQLy8vLzlPdUFBQVJnQUFBQUVBQUFBWVdnTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUF4QUVHTTl4VUxBZ0VCQUVHYTl4VUxDd0VBLy8vLy94bndBQUJIQUVHdzl4VUxDUUlBQUFBQkFBQUFHd0JCZ3ZnVkN3c0JBUC8vLy8vYTd3QUFTQUJCbVBnVkN3MERBQUFBQVFBQUFBWUFBQUFiQUVIcStCVUxDd0VBLy8vLy84aUpBQUJKQUVHQStSVUxCUUVBQUFBREFFSEUrUlVMQVFFQVFkTDVGUXNMQVFELy8vLy82ZThBQUVvQVFlajVGUXNKQWdBQUFBRUFBQUF4QUVHNitoVUxDd0VBLy8vLy85WHZBQUJMQUVIUStoVUxDUUlBQUFBQkFBQUFOQUJCb3ZzVkN3c0JBUC8vLy8vVlJBRUFUUUJCdVBzVkN4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkIvUHNWQ3dJQkFRQkJpdndWQ3dzQkFQLy8vLy9CUkFFQVRnQkJvUHdWQ3hVRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFRZVQ4RlFzQ0FRRUFRZkw4RlFzTEFRRC8vLy8vU0JzQkFFOEFRWWo5RlFzVkJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQXlBRUhNL1JVTEFnRUJBRUhhL1JVTEN3RUEvLy8vLy9zMUFBQlFBRUh3L1JVTERRTUFBQUFDQUFBQUF3QUFBREVBUWJUK0ZRc0NBUUVBUWNMK0ZRc0xBUUQvLy8vL3Fqb0FBRkVBUWRqK0ZRc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFESUFRWnovRlFzQ0FRRUFRYXIvRlFzTEFRRC8vLy8vVmhvQUFGSUFRY0QvRlFzVkJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQXlBRUdFZ0JZTEFnRUJBRUdTZ0JZTEN3RUEvLy8vLzgwNUFBQlRBRUdvZ0JZTERRTUFBQUFDQUFBQUF3QUFBQUVBUWV5QUZnc0NBUUVBUWZxQUZnc2pBUUQvLy8vLzEvRUFBRlFBQUFBQkFBQUErRmtEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZFNCRmdzQ0FRRUFRZUtCRmdzTEFRRC8vLy8vZVNVQkFGWUFRZmlCRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFieUNGZ3NDQVFFQVFjcUNGZ3NyQVFELy8vLy92aklCQUZjQUFBQUJBQUFBL0ZrREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFLUUJCcElNV0N3SUJBUUJCc29NV0N3c0JBUC8vLy8rOU1RRUFXQUJCeUlNV0N4VUZBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQ0VBUVl5RUZnc0NBUUVBUVpxRUZnc3ZBUUQvLy8vL2hqSUJBRmtBQUFBQkFBQUEvRmtEQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQ2tBUWZTRUZnc0NBUUVBUVlLRkZnc3ZBUUQvLy8vL2hURUJBRm9BQUFBQkFBQUEvRmtEQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQ0VBUWR5RkZnc0NBUUVBUWVxRkZnc3JBUUQvLy8vL0JqSUJBRnNBQUFBQkFBQUEvRmtEQUFVQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUtRQkJ4SVlXQ3dJQkFRQkIwb1lXQ3lzQkFQLy8vLzhGTVFFQVhBQUFBQUVBQUFEOFdRTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFoQUVHc2h4WUxBZ0VCQUVHNmh4WUxMd0VBLy8vLy8wWXlBUUJkQUFBQUFRQUFBUHhaQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFwQUVHVWlCWUxBZ0VCQUVHaWlCWUxMd0VBLy8vLy8wVXhBUUJlQUFBQUFRQUFBUHhaQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFoQUVIOGlCWUxBZ0VCQUVHS2lSWUxDd0VBLy8vLy82YlNBQUJmQUVHZ2lSWUxGUVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBS1FCQjVJa1dDd0lCQVFCQjhva1dDeThCQVAvLy8vOEhlQUFBWUFBQUFBRUFBQUQ4V1FNQUJnQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBS1FCQnpJb1dDd0lCQVFCQjJvb1dDeThCQVAvLy8vL1Bkd0FBWVFBQUFBRUFBQUQ4V1FNQUJnQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBS1FCQnRJc1dDd0lCQVFCQndvc1dDd3NCQVAvLy8vOUtRQUVBWWdCQjJJc1dDeFVGQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUNrQVFaeU1GZ3NDQVFFQVFhcU1GZ3NMQVFELy8vLy9QTzhBQUdNQVFjQ01GZ3NSQkFBQUFBRUFBQUFCQUFBQUFRQUFBQ2tBUVpLTkZnc0xBUUQvLy8vL3ppVUJBR1FBUWFpTkZnc05Bd0FBQUFJQUFBQURBQUFBQVFCQjdJMFdDd0lCQVFCQitvMFdDeU1CQVAvLy8vODBQUUFBWlFBQUFBRUFBQUFBV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCMUk0V0N3SUJBUUJCNG80V0N5TUJBUC8vLy8vTGV3QUFaZ0FBQUFFQUFBQUFXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ2SThXQ3dJQkFRQkJ5bzhXQ3ljQkFQLy8vLy9jTWdFQVp3QUFBQUlBQUFBd1dnTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRYVNRRmdzQ0FRRUFRYktRRmdzakFRRC8vLy8vTStNQUFHZ0FBQUFDQUFBQU1Gb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFZeVJGZ3NDQVFFQVFacVJGZ3NuQVFELy8vLy8xakFCQUdrQUFBQUJBQUFBT0ZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSDBrUllMQWdFQkFFR0NraFlMSXdFQS8vLy8veDFTQUFCcUFBQUFBZ0FBQURCYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVIY2toWUxBZ0VCQUVIcWtoWUxJd0VBLy8vLy83OWRBQUJyQUFBQUFnQUFBREJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhFa3hZTEFnRUJBRUhTa3hZTEN3RUEvLy8vLzRWcUFRQnRBRUhva3hZTERRTUFBQUFDQUFBQUF3QUFBQUVBUWF5VUZnc0NBUUVBUWJxVUZnc0xBUUQvLy8vL1ozRUJBRzRBUWRDVUZnc05Bd0FBQUFJQUFBQURBQUFBQVFCQmxKVVdDd0lCQVFCQm9wVVdDd3NCQVAvLy8vLzNxUUVBYndCQnVKVVdDdzBEQUFBQUFnQUFBQU1BQUFBQkFFSDhsUllMQWdFQkFFR0tsaFlMQ3dFQS8vLy8vK3VwQVFCd0FFR2dsaFlMRFFNQUFBQUNBQUFBQXdBQUFBRUFRZVNXRmdzQ0FRRUFRZktXRmdzTEFRRC8vLy8vMlJrQUFIRUFRWWlYRmdzTkF3QUFBQUlBQUFBREFBQUFBUUJCekpjV0N3SUJBUUJCMnBjV0N3c0JBUC8vLy8vaUdRQUFjZ0JCOEpjV0N3MERBQUFBQWdBQUFBTUFBQUFCQUVHMG1CWUxBZ0VCQUVIQ21CWUxDd0VBLy8vLy8rc1pBQUJ6QUVIWW1CWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFaeVpGZ3NDQVFFQVFhcVpGZ3NMQVFELy8vLy9lcmdCQUhRQVFjQ1pGZ3NOQXdBQUFBSUFBQUFEQUFBQUFRQkJoSm9XQ3dJQkFRQkJrcG9XQ3lNQkFQLy8vLzlvYWdFQWRRQUFBQUlBQUFBTVdnTUFBd0FBQUFJQUFBQURBQUFBQVFCQjdKb1dDd0lCQVFCQitwb1dDeU1CQVAvLy8vOTJhZ0VBZGdBQUFBRUFBQUFBV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCMUpzV0N3SUJBUUJCNHBzV0N5TUJBUC8vLy85WWNRRUFkd0FBQUFFQUFBQUFXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ2SndXQ3dJQkFRQkJ5cHdXQ3lNQkFQLy8vLzlKWkFBQWVBQUFBQUlBQUFBTVdnTUFBd0FBQUFJQUFBQURBQUFBQVFCQnBKMFdDd0lCQVFCQnNwMFdDeU1CQVAvLy8vOHhSQUVBZVFBQUFBRUFBQUFBV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCako0V0N3SUJBUUJCbXA0V0N5TUJBUC8vLy84NFpBQUFlZ0FBQUFFQUFBQUFXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkI5SjRXQ3dJQkFRQkJncDhXQ3ljQkFQLy8vLy85TWdBQWV3QUFBQUVBQUFBQVdnTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFCQUFRZHlmRmdzQ0FRRUFRZXFmRmdzTEFRRC8vLy8vUFJnQUFId0FRWUNnRmdzTkF3QUFBQUlBQUFBREFBQUFBUUJCeEtBV0N3SUJBUUJCMHFBV0N3c0JBUC8vLy8vRzhBQUFmZ0JCNktBV0N3MERBQUFBQWdBQUFBTUFBQUFCQUVHc29SWUxBZ0VCQUVHNm9SWUxDd0VBLy8vLy84N3dBQUIvQUVIUW9SWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFaU2lGZ3NDQVFFQVFhS2lGZ3NMQVFELy8vLy9PRDhCQUlBQVFiaWlGZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWZ5aUZnc0NBUUVBUVlxakZnc0xBUUQvLy8vL1ZqOEJBSUVBUWFDakZnc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZVNqRmdzQ0FRRUFRZktqRmdzTEFRRC8vLy8vNmx3QkFJSUFRWWlrRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFjeWtGZ3NDQVFFQVFkcWtGZ3NMQVFELy8vLy83MXdCQUlNQVFmQ2tGZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWJTbEZnc0NBUUVBUWNLbEZnc0xBUUQvLy8vL0Y3MEFBSVFBUWRpbEZnc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWnltRmdzQ0FRRUFRYXFtRmdzTEFRRC8vLy8vSzcwQUFJVUFRY0NtRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFZU25GZ3NDQVFFQVFaS25GZ3NMQVFELy8vLy9VUlVBQUlZQVFhaW5GZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWV5bkZnc0NBUUVBUWZxbkZnc0xBUUQvLy8vL1ZoVUFBSWNBUVpDb0Znc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZFNvRmdzQ0FRRUFRZUtvRmdzTEFRRC8vLy8vV3hVQUFJZ0FRZmlvRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFieXBGZ3NDQVFFQVFjcXBGZ3NMQVFELy8vLy94ekFCQUlrQVFlQ3BGZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWFTcUZnc0NBUUVBUWJLcUZnc0xBUUQvLy8vL3k3d0FBSW9BUWNpcUZnc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWXlyRmdzQ0FRRUFRWnFyRmdzTEFRRC8vLy8vekRBQkFJc0FRYkNyRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFmU3JGZ3NDQVFFQVFZS3NGZ3NMQVFELy8vLy8wTHdBQUl3QVFaaXNGZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWR5c0Znc0NBUUVBUWVxc0Znc0xBUUQvLy8vLzBUQUJBSTBBUVlDdEZnc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRY1N0RmdzQ0FRRUFRZEt0RmdzTEFRRC8vLy8vd0ljQUFJNEFRZWl0RmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFheXVGZ3NDQVFFQVFicXVGZ3NuQVFELy8vLy9yb2NBQUk4QUFBQUJBQUFBK0ZrREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR1VyeFlMQWdFQkFFR2lyeFlMSndFQS8vLy8vLzhQQUFDUUFBQUFBUUFBQVBoWkF3QUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkIvSzhXQ3dJQkFRQkJpckFXQ3ljQkFQLy8vLytCYUFBQWtRQUFBQUVBQUFENFdRTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZVN3RmdzQ0FRRUFRZkt3RmdzbkFRRC8vLy8vN1E4QUFKSUFBQUFCQUFBQStGa0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhNc1JZTEFnRUJBRUhhc1JZTEp3RUEvLy8vLzZVNEFBQ1RBQUFBQVFBQUFQaFpBd0FFQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUJCdExJV0N3SUJBUUJCd3JJV0N3c0JBUC8vLy8rWUd3QUFsQUJCMkxJV0N4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkJuTE1XQ3dJQkFRQkJxck1XQ3dzQkFQLy8vLzhRQ1FBQWxRQkJ3TE1XQ3hFRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQmhMUVdDd0lCQVFCQmtyUVdDd3NCQVAvLy8vOGJGQUFBbGdCQnFMUVdDeEVFQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUJCN0xRV0N3SUJBUUJCK3JRV0N3c0JBUC8vLy85ZFBnRUFsd0JCa0xVV0N4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkIxTFVXQ3dJQkFRQkI0clVXQ3dzQkFQLy8vLzlxUGdFQW1BQkIrTFVXQ3hFRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQnZMWVdDd0lCQVFCQnlyWVdDd3NCQVAvLy8vL3lDUUFBbWdCQjRMWVdDdzBEQUFBQUFnQUFBQU1BQUFBQkFFR2t0eFlMQWdFQkFFR3l0eFlMQ3dFQS8vLy8vMzIvQUFDYkFFSEl0eFlMRFFNQUFBQUNBQUFBQXdBQUFBRUFRWXk0RmdzQ0FRRUFRWnE0RmdzTEFRRC8vLy8vUkxvQUFKd0FRYkM0RmdzTkF3QUFBQUlBQUFBREFBQUFBUUJCOUxnV0N3SUJBUUJCZ3JrV0N3c0JBUC8vLy8vTTRBQUFuUUJCbUxrV0N3MERBQUFBQWdBQUFBTUFBQUFCQUVIY3VSWUxBZ0VCQUVIcXVSWUxJd0VBLy8vLy8zWHZBQUNlQUFBQUFRQUFBQUJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhFdWhZTEFnRUJBRUhTdWhZTEl3RUEvLy8vLzFYTEFBQ2ZBQUFBQVFBQUFBQmFBd0FEQUFBQUFnQUFBQU1BQUFBQkFFR3N1eFlMQWdFQkFFRzZ1eFlMSXdFQS8vLy8veWsxQUFDZ0FBQUFBUUFBQUFCYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVHVXZCWUxBZ0VCQUVHaXZCWUxKd0VBLy8vLy81aHlBQUNoQUFBQUFRQUFBQUJhQXdBRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQi9Md1dDd0lCQVFCQmlyMFdDeWNCQUFBRkFRRGZPZ0VBb2dBQUFBRUFBQUFBV2dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFlUzlGZ3NDQVFFQVFmSzlGZ3NuQVFELy8vLy8xVG9CQUtNQUFBQUJBQUFBQUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSE12aFlMQWdFQkFFSGF2aFlMQ3dFQS8vLy8vOExLQUFDa0FFSHd2aFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHMHZ4WUxBZ0VCQUVIQ3Z4WUxDd0VBLy8vLy85ZkpBQUNsQUVIWXZ4WUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdjd0JZTEFnRUJBRUdxd0JZTEN3RUEvLy8vLzJXSUFBQ21BRUhBd0JZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR0V3UllMQWdFQkFFR1N3UllMQ3dFQS8vLy8vMlkxQVFDbkFFR293UllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIc3dSWUxBZ0VCQUVINndSWUxDd0VBLy8vLy80WWJBQUNvQUVHUXdoWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFkVENGZ3NDQVFFQVFlTENGZ3NMQVFELy8vLy81amdBQUtrQVFmakNGZ3NWQlFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFFRzh3eFlMQWdFQkFFSEt3eFlMQ3dFQS8vLy8vL0xLQUFDcUFFSGd3eFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHa3hCWUxBZ0VCQUVHeXhCWUxDd0VBLy8vLy93UEtBQUNyQUVISXhCWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdNeFJZTEFnRUJBRUdheFJZTEN3RUEvLy8vLy95NUFBQ3NBRUd3eFJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSDB4UllMQWdFQkFFR0N4aFlMQ3dFQS8vLy8vd202QUFDdEFFR1l4aFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIY3hoWUxBZ0VCQUVIcXhoWUxDd0VBLy8vLy80YktBQUN1QUVHQXh4WUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhFeHhZTEFnRUJBRUhTeHhZTEN3RUEvLy8vLzVqS0FBQ3ZBRUhveHhZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR3N5QllMQWdFQkFFRzZ5QllMQ3dFQS8vLy8vOGE1QUFDd0FFSFF5QllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHVXlSWUxBZ0VCQUVHaXlSWUxDd0VBLy8vLy85QzVBQUN4QUVHNHlSWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUg4eVJZTEFnRUJBRUdLeWhZTEN3RUEvLy8vL3p6S0FBQ3lBRUdneWhZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSGt5aFlMQWdFQkFFSHl5aFlMQ3dFQS8vLy8vMHZLQUFDekFFR0l5eFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVITXl4WUxBZ0VCQUVIYXl4WUxDd0VBLy8vLy8raktBQUMwQUVId3l4WUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUcwekJZTEFnRUJBRUhDekJZTEN3RUEvLy8vLzl6S0FBQzFBRUhZekJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR2N6UllMQWdFQkFFR3F6UllMQ3dFQS8vLy8vL2JKQUFDMkFFSEF6UllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHRXpoWUxBZ0VCQUVHU3poWUxDd0VBLy8vLy8rZkpBQUMzQUVHb3poWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhzemhZTEFnRUJBRUg2emhZTEN3RUEvLy8vLzdtNUFBQzRBRUdRenhZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSFV6eFlMQWdFQkFFSGl6eFlMQ3dFQS8vLy8vNnE1QUFDNUFFSDR6eFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHODBCWUxBZ0VCQUVISzBCWUxDd0VBLy8vLy8reTVBQUM2QUVIZzBCWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdrMFJZTEFnRUJBRUd5MFJZTEN3RUEvLy8vLzlxNUFBQzdBRUhJMFJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR00waFlMQWdFQkFFR2EwaFlMQ3dFQS8vLy8veXJLQUFDOEFFR3cwaFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIMDBoWUxBZ0VCQUVHQzB4WUxDd0VBLy8vLy94YktBQUM5QUVHWTB4WUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhjMHhZTEFnRUJBRUhxMHhZTEN3RUEvLy8vLzNIS0FBQytBRUdBMUJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSEUxQllMQWdFQkFFSFMxQllMQ3dFQS8vLy8vMXJLQUFDL0FFSG8xQllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHczFSWUxBZ0VCQUVHNjFSWUxDd0VBLy8vLy80L0xBQURDQUVIUTFSWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdVMWhZTEFnRUJBRUdpMWhZTEN3RUEvLy8vLzZGREFRRERBRUc0MWhZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSDgxaFlMQWdFQkFFR0sxeFlMQ3dFQS8vLy8vNkhMQUFERUFFR2cxeFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIazF4WUxBZ0VCQUVIeTF4WUxDd0VBLy8vLy8zNklBQURGQUVHSTJCWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhNMkJZTEFnRUJBRUhhMkJZTEN3RUEvLy8vLzJCcUFBREdBRUh3MkJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFRzAyUllMQWdFQkFFSEMyUllMQ3dFQS8vLy8vNEExQVFESEFFSFkyUllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHYzJoWUxBZ0VCQUVHcTJoWUxDd0VBLy8vLy80MGJBQURJQUVIQTJoWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFZVGJGZ3NDQVFFQVFaTGJGZ3N2QVFELy8vLy9aaG9BQU1rQUFBQUNBQUFBUEZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFlemJGZ3NDQVFFQVFmcmJGZ3NyQVFELy8vLy96RG9BQU1vQUFBQUNBQUFBUEZvREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCMU53V0N3SUJBUUJCNHR3V0N5c0JBUC8vLy8rN09nQUF5d0FBQUFJQUFBQThXZ01BQlFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFFRzgzUllMQWdFQkFFSEszUllMSXdFQS8vLy8vM3p4QUFETUFBQUFBZ0FBQUR4YUF3QURBQUFBQWdBQUFBTUFBQUFCQUVHazNoWUxBZ0VCQUVHeTNoWUxDd0VBLy8vLy81WWNBQUROQUVISTNoWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFZemZGZ3NDQVFFQVFacmZGZ3NqQVFELy8vLy9IUklBQU04QUFBQUJBQUFBL0ZrREFBTUFBQUFDQUFBQUF3QUFBQUVBUWZUZkZnc0NBUUVBUVlMZ0Znc2pBUUQvLy8vL0JRd0FBTkFBQUFBQkFBQUEvRmtEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZHpnRmdzQ0FRRUFRZXJnRmdzakFRRC8vLy8venRFQUFORUFBQUFCQUFBQS9Ga0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFjVGhGZ3NDQVFFQVFkTGhGZ3NqQVFELy8vLy84aGNCQU5JQUFBQUJBQUFBUkZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWF6aUZnc0NBUUVBUWJyaUZnc2pBUUQvLy8vLzRCY0JBTk1BQUFBQkFBQUFSRm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRWlRqRmdzQ0FRRUFRYUxqRmdzakFRRC8vLy8vQmhnQkFOUUFBQUFCQUFBQVJGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFmempGZ3NDQVFFQVFZcmtGZ3NqQVFELy8vLy9xUEVBQU5VQUFBQUJBQUFBUkZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWVUa0Znc0NBUUVBUWZMa0Znc2pBUUQvLy8vL2t2RUFBTllBQUFBQkFBQUFSRm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRY3psRmdzQ0FRRUFRZHJsRmdzakFRRC8vLy8vd1BFQUFOY0FBQUFCQUFBQVJGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFiVG1GZ3NDQVFFQVFjTG1GZ3NWQVFELy8vLy95UkFBQU5vQUFBQUJBQUFBU0ZvREFFR3E1eFlMRlFFQS8vLy8vd0hsQUFEYkFBQUFBUUFBQUVoYUF3QkJrdWdXQ3hzQkFQLy8vLy9VRUFBQTNBQUFBQUVBQUFCTVdnTUFBUUFBQUFFQVFmcm9GZ3NiQVFELy8vLy83dVFBQU4wQUFBQUJBQUFBVEZvREFBRUFBQUFCQUVIaTZSWUxDd0VBLy8vLy96WjFBQURnQUVINDZSWUxEUU1BQUFBRkFBQUFCUUFBQUFRQVFjcnFGZ3NMQVFELy8vLy9GM1VBQU9FQVFlRHFGZ3NKQWdBQUFBVUFBQUFFQUVHeTZ4WUxDd0VBLy8vLy85ay9BUURqQUVISTZ4WUxGUVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUZBQUFBQkFCQmpPd1dDd0lCQVFCQm11d1dDd3NCQVAvLy8vK085UUFBNUFCQnNPd1dDeEVFQUFBQUFRQUFBQVVBQUFBRUFBQUFBUUJCZ3UwV0N3c0JBUC8vLy84a0lBRUE1UUJCbU8wV0N4a0dBQUFBQWdBQUFBTUFBQUFCQUFBQUJRQUFBQVFBQUFBQkFFSGM3UllMQWdFQkFFSHE3UllMQ3dFQS8vLy8vLzhmQVFEbUFFR0E3aFlMSVFnQUFBQUNBQUFBQXdBQUFBRUFBQUFGQUFBQUJBQUFBQVFBQUFBQkFBQUFBUUJCeE80V0N3SUJBUUJCMHU0V0N6Y0JBUC8vLy8vZXp3QUE1d0FBQUFFQUFBQUFXZ01BQ0FBQUFBSUFBQUFEQUFBQUFRQUFBQVVBQUFBRUFBQUFCQUFBQUFFQUFBQUJBRUdzN3hZTEFnRUJBRUc2N3hZTEN3RUFBQU1CQU5rcEFBRG9BRUhRN3hZTEZRVUFBQUFDQUFBQUF3QUFBQUVBQUFBRkFBQUFCQUJCbFBBV0N3SUJBUUJCb3ZBV0N3c0JBUC8vLy8vMEtRQUE2UUJCdVBBV0N4VUZBQUFBQWdBQUFBTUFBQUFCQUFBQUJRQUFBQVFBUWZ6d0Znc0NBUUVBUVlyeEZnc0xBUUQvLy8vL01qOEJBT29BUWFEeEZnc1pCZ0FBQUFJQUFBQURBQUFBQVFBQUFBVUFBQUFFQUFBQUFRQkI1UEVXQ3dJQkFRQkI4dkVXQ3dzQkFQLy8vLy9rWEFFQTZ3QkJpUElXQ3hrR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQlFBQUFBUUFBQUFCQUVITThoWUxBZ0VCQUVIYThoWUxDd0VBLy8vLy83KzRBQURzQUVIdzhoWUxHUVlBQUFBQ0FBQUFBd0FBQUFFQUFBQUZBQUFBQkFBQUFBRUFRYlR6RmdzQ0FRRUFRY0x6RmdzTEFRRC8vLy8vbHJnQUFPMEFRZGp6RmdzWkJnQUFBQUlBQUFBREFBQUFBUUFBQUFVQUFBQUVBQUFBQVFCQm5QUVdDd0lCQVFCQnF2UVdDd3NCQVAvLy8vOHNFd0FBN2dCQndQUVdDeGtHQUFBQUFnQUFBQU1BQUFBQkFBQUFCUUFBQUFRQUFBQUJBRUdFOVJZTEFnRUJBRUdTOVJZTEN3RUEvLy8vL3dNVEFBRHZBRUdvOVJZTEdRWUFBQUFDQUFBQUF3QUFBQUVBQUFBRkFBQUFCQUFBQUFFQVFlejFGZ3NDQVFFQVFmcjFGZ3NMQVFELy8vLy9sVFVCQVBBQVFaRDJGZ3NaQmdBQUFBSUFBQUFEQUFBQUFRQUFBQVVBQUFBRUFBQUFBUUJCMVBZV0N3SUJBUUJCNHZZV0N3c0JBUC8vLy8rUmlBQUE4UUJCK1BZV0N4a0dBQUFBQWdBQUFBTUFBQUFCQUFBQUJRQUFBQVFBQUFBQkFFRzg5eFlMQWdFQkFFSEs5eFlMQ3dFQS8vLy8vNDlxQUFEeUFFSGc5eFlMR1FZQUFBQUNBQUFBQXdBQUFBRUFBQUFGQUFBQUJBQUFBQUVBUWFUNEZnc0NBUUVBUWJMNEZnc0xBUUQvLy8vL3E5QUFBUFVBUWNqNEZnc05Bd0FBQUFJQUFBQURBQUFBTVFCQmpQa1dDd0lCQVFCQm12a1dDd3NCQVAvLy8vL21Id0VBOWdCQnNQa1dDdzBEQUFBQUFRQUFBQUVBQUFBa0FFR0MraFlMQ3dFQS8vLy8vL0FmQVFEM0FFR1kraFlMQ1FJQUFBQUJBQUFBSXdCQjZ2b1dDd3NCQVAvLy8vOUJ5UUFBK0FCQmdQc1dDd1VCQUFBQUF3QkJ4UHNXQ3dFQkFFSFMreFlMQ3dFQS8vLy8vLzdTQUFENUFFSG8reFlMQlFFQUFBQUJBRUc2L0JZTEN3RUEvLy8vLzBQTEFBRDZBRUhRL0JZTEVRUUFBQUFCQUFBQUFRQUFBQUVBQUFBeUFFR2kvUllMQ3dFQS8vLy8vMXZTQUFEN0FFRzQvUllMRFFNQUFBQUJBQUFBQVFBQUFETUFRWXIrRmdzVkFRRC8vLy8vekw0QUFQd0FBQUFCQUFBQS9Ga0RBRUh5L2hZTEN3RUEvLy8vLzNxaEFBRDlBRUhhL3hZTEN3RUEvLy8vLzYvcUFBRCtBRUh3L3hZTEJRRUFBQUFCQUVIQ2dCY0xDd0VBLy8vLy8vTWVBUUQvQUVHcWdSY0xId0VBLy8vLy8zb2FBQUFBQVFBQUFRQUFBQUJhQXdBQ0FBQUFBUUFBQUFZQVFaS0NGd3NmQVFELy8vLy9nNWtBQUFFQkFBQUJBQUFBQUZvREFBSUFBQUFCQUFBQUJnQkIrb0lYQ3pjQkFQLy8vLyt5Q1FBQUF3RUFBQUVBQUFBQVdnTUFDQUFBQUFJQUFBQURBQUFBQlFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFSFVneGNMQWdFQkFFSGlneGNMSXdFQS8vLy8vMm8vQUFBRUFRQUFBUUFBQUFCYUF3QURBQUFBQlFBQUFBRUFBQUFCQUVIS2hCY0xKd0VBLy8vLy8yVy9BQUFGQVFBQUFRQUFBRkJhQXdBRUFBQUFBZ0FBQUFNQUFBQUZBQUFBQVFCQnBJVVhDd0lCQVFCQnNvVVhDeWNCQVAvLy8vL0dDUUFBQmdFQUFBRUFBQUJRV2dNQUJBQUFBQUlBQUFBREFBQUFCUUFBQUFFQVFZeUdGd3NDQVFFQVFacUdGd3NyQVFELy8vLy9SUmdBQUFjQkFBQUJBQUFBVUZvREFBVUFBQUFDQUFBQUF3QUFBQVVBQUFBQkFBQUFBUUJCOUlZWEN3SUJBUUJCZ29jWEN5c0JBUC8vLy84VVB3RUFDQUVBQUFFQUFBQlFXZ01BQlFBQUFBSUFBQUFEQUFBQUJRQUFBQjBBQUFBQkFFSGNoeGNMQWdFQkFFSHFoeGNMS3dFQS8vLy8vejAvQVFBSkFRQUFBUUFBQUZCYUF3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBUWNTSUZ3c0NBUUVBUWRLSUZ3c3JBUUQvLy8vL3o3Z0FBQW9CQUFBQkFBQUFVRm9EQUFVQUFBQUNBQUFBQXdBQUFBVUFBQUFkQUFBQUFRQkJySWtYQ3dJQkFRQkJ1b2tYQ3lzQkFQLy8vLzk0dUFBQUN3RUFBQUVBQUFCUVdnTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUVHVWloY0xBZ0VCQUVHaWloY0xLd0VBLy8vLy82RzRBQUFNQVFBQUFRQUFBRkJhQXdBRkFBQUFBZ0FBQUFNQUFBQUZBQUFBSFFBQUFBRUFRZnlLRndzQ0FRRUFRWXFMRndzckFRRC8vLy8vUEJNQUFBMEJBQUFCQUFBQVVGb0RBQVVBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFCQjVJc1hDd0lCQVFCQjhvc1hDeXNCQVAvLy8vL2xFZ0FBRGdFQUFBRUFBQUJRV2dNQUJRQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBRUhNakJjTEFnRUJBRUhhakJjTEt3RUEvLy8vL3c0VEFBQVBBUUFBQVFBQUFGQmFBd0FGQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQVFiU05Gd3NDQVFFQVFjS05Gd3N2QVFELy8vLy83UllCQUJJQkFBQUJBQUFBQ0ZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFaeU9Gd3NDQVFFQVFhcU9Gd3N2QVFELy8vLy92aFlCQUJNQkFBQUJBQUFBQ0ZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFZU1BGd3NDQVFFQVFaS1BGd3MzQVFELy8vLy81UllCQUJRQkFBQUJBQUFBQ0ZvREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQjdJOFhDd0lCQVFCQitvOFhDemNCQVAvLy8vKzJGZ0VBRlFFQUFBRUFBQUFJV2dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIVWtCY0xBZ0VCQUVIaWtCY0xMd0VBLy8vLy93OUZBQUFXQVFBQUFRQUFBQWhhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHOGtSY0xBZ0VCQUVIS2tSY0xMd0VBLy8vLy8vSkVBQUFYQVFBQUFRQUFBQWhhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHa2toY0xBZ0VCQUVHeWtoY0xKd0VBLy8vLy85WVdBUUFZQVFBQUFRQUFBQWhhQXdBRUFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQm1wTVhDeWNCQVAvLy8vK21GZ0VBR1FFQUFBRUFBQUFJV2dNQUJBQUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFZS1VGd3NqQVFELy8vLy9lRUVCQUJvQkFBQUJBQUFBQ0ZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWR5VUZ3c0NBUUVBUWVxVUZ3c3JBUUQvLy8vLzIwUUFBQnNCQUFBQkFBQUFDRm9EQUFVQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQkJ4SlVYQ3dJQkFRQkIwcFVYQ3lzQkFQLy8vLy9KUkFBQUhBRUFBQUVBQUFBSVdnTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFCQUVHc2xoY0xBZ0VCQUVHNmxoY0xNd0VBLy8vLy93cEZBQUFkQVFBQUFRQUFBQWhhQXdBSEFBQUFBZ0FBQUFNQUFBQUZBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQkJsSmNYQ3dJQkFRQkJvcGNYQ3pNQkFQLy8vLy90UkFBQUhnRUFBQUVBQUFBSVdnTUFCd0FBQUFJQUFBQURBQUFBQlFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUWZ5WEZ3c0NBUUVBUVlxWUZ3c3JBUUQvLy8vLzBSWUJBQjhCQUFBQkFBQUFDRm9EQUFVQUFBQUZBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQkI4cGdYQ3lzQkFQLy8vLytoRmdFQUlBRUFBQUVBQUFBSVdnTUFCUUFBQUFVQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIYW1SY0xMd0VBLy8vLy80dDBBQUFqQVFBQUFRQUFBQVJhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHMG1oY0xBZ0VCQUVIQ21oY0xTd0VBLy8vLy8wL0FBQUFrQVFBQUFRQUFBQVJhQXdBTkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBTVFCQm5Kc1hDd0lCQVFCQnFwc1hDek1CQVAvLy8vL0NIQUFBSlFFQUFBRUFBQUFFV2dNQUJ3QUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRWVNjRndzQ0FRRUFRWktjRndzekFRRC8vLy8vV2VRQUFDWUJBQUFCQUFBQUJGb0RBQWNBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIc25CY0xBZ0VCQUVINm5CY0xMd0VBLy8vLy96SGtBQUFuQVFBQUFRQUFBQVJhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIVW5SY0xBZ0VCQUVIaW5SY0xMd0VBLy8vLy8vY2FBUUFvQVFBQUFRQUFBQVJhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHOG5oY0xBZ0VCQUVIS25oY0xHd0VBLy8vLy8vd2ZBQUFwQVFBQUFRQUFBQVJhQXdBQkFBQUFBUUJCc3A4WEN4c0JBUC8vLy84SUlBQUFLZ0VBQUFFQUFBQUVXZ01BQVFBQUFBRUFRWnFnRndzZkFRRC8vLy8vN0I4QUFDc0JBQUFCQUFBQUJGb0RBQUlBQUFBQ0FBQUFBd0JCOUtBWEN3SUJBUUJCZ3FFWEN5TUJBUC8vLy84dklBQUFMQUVBQUFFQUFBQUVXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkIzS0VYQ3dJQkFRQkI2cUVYQ3g4QkFQLy8vLzlsUGdBQUxRRUFBQUVBQUFBRVdnTUFBZ0FBQUFFQUFBQUJBRUhTb2hjTEl3RUEvLy8vLzMrZ0FBQXVBUUFBQVFBQUFBUmFBd0FEQUFBQUFRQUFBQUVBQUFBQkFFRzZveGNMSHdFQS8vLy8vekRyQUFBdkFRQUFBUUFBQUFSYUF3QUNBQUFBQWdBQUFBTUFRWlNrRndzQ0FRRUFRYUtrRndzckFRRC8vLy8vWHlBQkFEQUJBQUFCQUFBQUJGb0RBQVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFCQi9LUVhDd0lCQVFCQmlxVVhDeXNCQVAvLy8vK2hNZ0VBTVFFQUFBRUFBQUJVV2dNQUJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQXBBRUhrcFJjTEFnRUJBRUh5cFJjTEt3RUEvLy8vLzZBeEFRQXlBUUFBQVFBQUFGUmFBd0FGQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUNFQVFjeW1Gd3NDQVFFQVFkcW1Gd3N2QVFELy8vLy9aVElCQURNQkFBQUJBQUFBVkZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUNrQVFiU25Gd3NDQVFFQVFjS25Gd3N2QVFELy8vLy9aREVCQURRQkFBQUJBQUFBVkZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUNFQVFaeW9Gd3NDQVFFQVFhcW9Gd3NyQVFELy8vLy81VEVCQURVQkFBQUJBQUFBVkZvREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFLUUJCaEtrWEN3SUJBUUJCa0trWEN5My8vLy8vLy8vLy8rUXdBUUEyQVFBQUFRQUFBRlJhQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFDRUFRZXlwRndzQ0FRRUFRZmlwRndzeC8vLy8vLy8vLy84aE1nRUFOd0VBQUFFQUFBQlVXZ01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFLUUJCMUtvWEN3SUJBUUJCNEtvWEN6SC8vLy8vLy8vLy95QXhBUUE0QVFBQUFRQUFBRlJhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFoQUVHOHF4Y0xBZ0VCQUVISXF4Y0xMZi8vLy8vLy8vLy9qOUlBQURrQkFBQUJBQUFBVkZvREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFLUUJCcEt3WEN3SUJBUUJCc3F3WEN5OEJBUC8vLy8vZmR3QUFPZ0VBQUFFQUFBQlVXZ01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFLUUJCakswWEN3SUJBUUJCbXEwWEN5OEJBUC8vLy85MGR3QUFPd0VBQUFFQUFBQlVXZ01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFLUUJCOUswWEN3SUJBUUJCZ3E0WEN5TUJBUC8vLy84RktnQUFQQUVBQUFFQUFBQlVXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkIzSzRYQ3dJQkFRQkI2cTRYQ3d3QkFQLy8vLys3RndFQVBRRUFRZEt2RndzckFRRC8vLy8vUWpVQUFENEJBQUFCQUFBQUFGb0RBQVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUZBQUFBQkFCQnJMQVhDd0lCQVFCQnVyQVhDeU1CQVAvLy8vLzlod0FBUHdFQUFBRUFBQUFBV2dNQUF3QUFBQUVBQUFBRkFBQUFCQUJCb3JFWEN5c0JBUC8vLy84NlFBRUFRQUVBQUFFQUFBQlVXZ01BQlFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBcEFFSDhzUmNMQWdFQkFFR0tzaGNMSXdFQS8vLy8vNzNoQUFCQkFRQUFBUUFBQUJoYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVIa3NoY0xBZ0VCQUVIeHNoY0xIQUVCQVAvLy8vOWVJUUVBUWdFQUFBRUFBQUJZV2dNQUFRQUFBQU1BUWN5ekZ3c0JBUUJCMmJNWEN5d0JBUUQvLy8vL01DRUJBRU1CQUFBQkFBQUFXRm9EQUFVQUFBQUNBQUFBQXdBQUFBWUFBQUFHQUFBQUJnQkJ0TFFYQ3dJQkFRQkJ3YlFYQ3lRQkFRRC8vLy8vUkNFQkFFUUJBQUFCQUFBQVdGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFaeTFGd3NDQVFFQVFhbTFGd3MwQVFFQS8vLy8vNThjQUFCRkFRQUFBUUFBQUZ4YUF3QUhBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCaExZWEN3SUJBUUJCa2JZWEN6QUJBUUQvLy8vL3BFMEFBRVlCQUFBQkFBQUFYRm9EQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUWV5MkZ3c0NBUUVBUWZtMkZ3c2NBUUVBLy8vLy84QjFBQUJIQVFBQUFRQUFBR0JhQXdBQkFBQUFBd0JCMUxjWEN3RUJBRUhodHhjTEpBRUJBUC8vLy8vejRnQUFTQUVBQUFFQUFBQmdXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ2TGdYQ3dJQkFRQkJ5YmdYQ3lRQkFRRC8vLy8vVkhVQUFFa0JBQUFCQUFBQVlGb0RBQU1BQUFBQkFBQUFCUUFBQUFRQVFiRzVGd3NOQVFFQS8vLy8vNUE1QVFCS0FRQkJ5TGtYQ3dVQkFBQUFDZ0JCbWJvWEN3MEJBUUQvLy8vL1BrSUJBRXNCQUVHd3VoY0xDUUlBQUFBQkFBQUFEd0JCZ2JzWEN3MENBUUQvLy8vL0trSUJBRXdCQUVHWXV4Y0xDUUlBQUFBQkFBQUFHd0JCNExzWEN5MEJBQUFBWkZvREFBQUNBUUQvLy8vLzdUZ0FBRTBCQUFBQkFBQUFhRm9EQUFNQUFBQUNBQUFBQXdBQUFBVUFRY1M4RndzQ0FRRUFRZEc4Rndzb0F3RUEvLy8vLzI2L0FBQk9BUUFBQVFBQUFHeGFBd0FFQUFBQUFnQUFBQU1BQUFBRkFBQUFBUUJCckwwWEN3SUJBUUJCdWIwWEN5Z0RBUUQvLy8vL3p3a0FBRThCQUFBQkFBQUFiRm9EQUFRQUFBQUNBQUFBQXdBQUFBVUFBQUFCQUVHVXZoY0xBZ0VCQUVHaHZoY0xLQU1CQVAvLy8vK3F5Z0FBVUFFQUFBRUFBQUJzV2dNQUJBQUFBQUlBQUFBREFBQUFCUUFBQUFFQVFmeStGd3NDQVFFQVFZbS9Gd3NzQXdFQS8vLy8vMVFZQUFCUkFRQUFBUUFBQUhCYUF3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUFRQUFBQUVBUWVTL0Z3c0NBUUVBUWZHL0Z3c29Bd0VBLy8vLy85OFdBQUJTQVFBQUFRQUFBSEJhQXdBRUFBQUFBZ0FBQUFNQUFBQUZBQUFBQVFCQnpNQVhDd0lCQVFCQjJjQVhDeWdEQVFELy8vLy9QaHNBQUZNQkFBQUJBQUFBY0ZvREFBUUFBQUFDQUFBQUF3QUFBQVVBQUFBQkFFRzB3UmNMQWdFQkFFSEJ3UmNMS0FNQkFQLy8vLzlVR3dBQVZBRUFBQUVBQUFCd1dnTUFCQUFBQUFJQUFBQURBQUFBQlFBQUFBRUFRWnpDRndzQ0FRRUFRYW5DRndzc0F3RUEvLy8vLzRnNkFBQlZBUUFBQVFBQUFIQmFBd0FGQUFBQUFnQUFBQU1BQUFBRkFBQUFBUUFBQUFFQVFZVERGd3NDQVFFQVFaSERGd3NzQXdFQS8vLy8vNEVjQUFCV0FRQUFBUUFBQUhCYUF3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBUWV6REZ3c0NBUUVBUWZuREZ3c29Bd0VBLy8vLy8xMnZBUUJYQVFBQUFRQUFBSEJhQXdBRUFBQUFBZ0FBQUFNQUFBQUZBQUFBQVFCQjFNUVhDd0lCQVFCQjRjUVhDeWdEQVFELy8vLy9RSzhCQUZnQkFBQUJBQUFBY0ZvREFBUUFBQUFDQUFBQUF3QUFBQVVBQUFBQkFFRzh4UmNMQWdFQkFFSEp4UmNMTEFNQkFQLy8vLzlXR3dFQVdRRUFBQUVBQUFCMFdnTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFBRUFBQUFCQUVHa3hoY0xBZ0VCQUVHeHhoY0xMQU1CQVAvLy8vOXJhZ0FBV2dFQUFBRUFBQUIwV2dNQUJRQUFBQUlBQUFBREFBQUFCUUFBQUFFQUFBQUJBRUdNeHhjTEFnRUJBRUdaeHhjTExBTUJBUC8vLy84c213QUFXd0VBQUFFQUFBQjRXZ01BQlFBQUFBSUFBQUFEQUFBQUJRQUFBQUVBQUFBQkFFSDB4eGNMQWdFQkFFR0J5QmNMTEFNQkFQLy8vLzlLb1FBQVhBRUFBQUVBQUFCNFdnTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFBRUFBQUFCQUVIY3lCY0xBZ0VCQUVIcHlCY0xNQU1CQVAvLy8vOGVQd0VBWFFFQUFBTUFBQUI4V2dNQUJnQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBQUFBS0FCQnhNa1hDd0lCQVFCQjBja1hDekFEQVFELy8vLy9SejhCQUY0QkFBQURBQUFBZkZvREFBWUFBQUFDQUFBQUF3QUFBQVVBQUFBZEFBQUFBUUFBQUNnQVFhektGd3NDQVFFQVFibktGd3N3QXdFQS8vLy8vd2k5QUFCZkFRQUFBd0FBQUh4YUF3QUdBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBQUFBb0FFR1V5eGNMQWdFQkFFR2h5eGNMTUFNQkFQLy8vLzhjdlFBQVlBRUFBQU1BQUFCOFdnTUFCZ0FBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUFBQUtBQkIvTXNYQ3dJQkFRQkJpY3dYQ3pBREFRRC8vLy8vcTdnQUFHRUJBQUFEQUFBQWZGb0RBQVlBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFBQUFDZ0FRZVRNRndzQ0FRRUFRZkhNRndzd0F3RUEvLy8vLzRLNEFBQmlBUUFBQXdBQUFIeGFBd0FHQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQUFBQW9BRUhNelJjTEFnRUJBRUhaelJjTE1BTUJBUC8vLy8vWnVBQUFZd0VBQUFNQUFBQjhXZ01BQmdBQUFBSUFBQUFEQUFBQUJRQUFBQjBBQUFBQkFBQUFLQUJCdE00WEN3SUJBUUJCd2M0WEN6QURBUUQvLy8vL0dCTUFBR1FCQUFBREFBQUFmRm9EQUFZQUFBQUNBQUFBQXdBQUFBVUFBQUFkQUFBQUFRQUFBQ2dBUVp6UEZ3c0NBUUVBUWFuUEZ3c3dBd0VBLy8vLy8rOFNBQUJsQVFBQUF3QUFBSHhhQXdBR0FBQUFBZ0FBQUFNQUFBQUZBQUFBSFFBQUFBRUFBQUFvQUVHRTBCY0xBZ0VCQUVHUjBCY0xNQU1CQVAvLy8vOUdFd0FBWmdFQUFBTUFBQUI4V2dNQUJnQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBQUFBS0FCQjdOQVhDd0lCQVFCQitkQVhDekFEQVFELy8vLy9jVFVCQUdjQkFBQURBQUFBZkZvREFBWUFBQUFDQUFBQUF3QUFBQVVBQUFBZEFBQUFBUUFBQUNnQVFkVFJGd3NDQVFFQVFlSFJGd3N3QXdFQS8vLy8vMitJQUFCb0FRQUFBd0FBQUh4YUF3QUdBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBQUFBb0FFRzgwaGNMQWdFQkFFSEowaGNMTUFNQkFQLy8vLzlSYWdBQWFRRUFBQU1BQUFCOFdnTUFCZ0FBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUFBQUtBQkJwTk1YQ3dJQkFRQkJzZE1YQ3pBREFRRC8vLy8vVnpVQkFHb0JBQUFEQUFBQWZGb0RBQVlBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFBQUFDZ0FRWXpVRndzQ0FRRUFRWm5VRndzd0F3RUEvLy8vLzFhSUFBQnJBUUFBQXdBQUFIeGFBd0FHQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQUFBQW9BRUgwMUJjTEFnRUJBRUdCMVJjTE1BTUJBUC8vLy84M2FnQUFiQUVBQUFNQUFBQjhXZ01BQmdBQUFBSUFBQUFEQUFBQUJRQUFBQjBBQUFBQkFBQUFLQUJCM05VWEN3SUJBUUJCNmRVWEN5d0RBUUQvLy8vL2JSZ0FBRzBCQUFBQkFBQUFpRm9EQUFVQUFBQUNBQUFBQXdBQUFBVUFBQUFCQUFBQUFRQkJ4TllYQ3dJQkFRQkIwZFlYQ3l3REFRRC8vLy8vMDVvQUFHNEJBQUFCQUFBQWlGb0RBQVVBQUFBQ0FBQUFBd0FBQUFVQUFBQUJBQUFBQVFCQnJOY1hDd0lCQVFCQnVkY1hDdzBEQVFELy8vLy9nOHNBQUpBQkFFSFExeGNMRFFNQUFBQUNBQUFBQXdBQUFBRUFRWlRZRndzQ0FRRUFRYUhZRndzTkJBRUEvLy8vL3czS0FBQ1JBUUJCdU5nWEN4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkIvTmdYQ3dJQkFRQkJpZGtYQ3cwRUFRRC8vLy8veThrQUFKSUJBRUdnMlJjTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSGsyUmNMQWdFQkFFSHgyUmNMS0FRQkFQLy8vLzhLNFFBQWt3RUFBQU1BQUFDTVdnTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRY3phRndzQ0FRRUFRZG5hRndzV0JBRUEvLy8vLzBhd0FBQkFFUUFBQVFBQUFQeFpBd0JCdU5zWEN5MEJBQUFBbUZvREFBQUdBUUQvLy8vLy9uSUJBRVVSQUFBQkFBQUFuRm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRWnpjRndzeEFRRUFBQUVBQUFDZ1dnTUEvLy8vLy8vLy8vOGVkd0VBUmhFQUFBRUFBQUNjV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCaE4wWEN6RUJBUUFBQVFBQUFLQmFBd0QvLy8vLy8vLy8vd040QVFCTUVRQUFBUUFBQUtSYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVIczNSY0xNUUVCQUFBQkFBQUFxRm9EQVAvLy8vLy8vLy8vMm5FQkFFMFJBQUFCQUFBQXBGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFkVGVGd3N4QVFFQUFBRUFBQUNvV2dNQS8vLy8vLy8vLy85N2VBRUFUaEVBQUFFQUFBQ2tXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ2TjhYQ3owQkFRQUFBUUFBQUtoYUF3RC8vLy8vLy8vLy94QjZBUUJQRVFBQUFRQUFBS3hhQXdBR0FBQUFBZ0FBQUFNQUFBQUZBQUFBQVFBQUFBRUFBQUFvQUVHazRCY0xBZ0VCQUVHdzRCY0xLZi8vLy8vLy8vLy9PWGNCQUZBUkFBQUJBQUFBbkZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR000UmNMVVFFQkFBQUJBQUFBb0ZvREFQLy8vLy8vLy8vL0NISUJBRjBSQUFBQkFBQUFzRm9EQUFzQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQitPRVhDeWtCQUFBQXRGb0RBUC8vLy8vLy8vLy9BbndCQUY0UkFBQUJBQUFBc0ZvREFBSUFBQUFCQUFBQUFRQkI0T0lYQ3kwQkFBQUF0Rm9EQVAvLy8vLy8vLy8vYlhvQkFGOFJBQUFDQUFBQXVGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFjVGpGd3NqQVFFQUFBSUFBQURBV2dNQS8vLy8vLy8vLy8rSmRnRUFZQkVBQUFFQUFBQ3dXZ01BUWJEa0Z3c2ZBUUFBQUxSYUF3RC8vLy8vLy8vLy8vaHhBUUJoRVFBQUFRQUFBTEJhQXdCQm1PVVhDelVCQUFBQXRGb0RBUC8vLy8vLy8vLy9seHNBQUdJUkFBQUJBQUFBeUZvREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFTUUJCL09VWEN3SUJBUUJCaWVZWEN5d0dBUUQvLy8vL0dYTUJBR0lSQUFBQkFBQUF6Rm9EQUFVQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQVNRQkI1T1lYQ3prQkFRQUFBUUFBQU5CYUF3QUFCZ0VBLy8vLy81SWJBQUJqRVFBQUFRQUFBTWhhQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFFa0FRY3puRndzQ0FRRUFRZG5uRndzc0JnRUEvLy8vL3hGekFRQmpFUUFBQVFBQUFNeGFBd0FGQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUVrQVFiVG9Gd3M1QVFFQUFBRUFBQURRV2dNQUFBWUJBUC8vLy8rUkd3QUFaQkVBQUFFQUFBRElXZ01BQlFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFCSkFFR2M2UmNMQWdFQkFFR3A2UmNMTEFZQkFQLy8vLzhRY3dFQVpCRUFBQUVBQUFETVdnTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUJKQUVHRTZoY0xQUUVCQUFBQkFBQUEwRm9EQUFBR0FRRC8vLy8vd0QwQUFHVVJBQUFCQUFBQXlGb0RBQVlBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFFa0FRZXpxRndzQ0FRRUFRZm5xRndzd0JnRUEvLy8vLzE1MEFRQmxFUUFBQVFBQUFNeGFBd0FHQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUFFQUFBQkpBRUhVNnhjTFBRRUJBQUFCQUFBQTBGb0RBQUFHQVFELy8vLy90VDBBQUdZUkFBQUJBQUFBeUZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUVrQVFienNGd3NDQVFFQVFjbnNGd3N3QmdFQS8vLy8vMUIwQVFCbUVRQUFBUUFBQU14YUF3QUdBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFCSkFFR2s3UmNMUFFFQkFBQUJBQUFBMEZvREFBQUdBUUQvLy8vL3REMEFBR2NSQUFBQkFBQUF5Rm9EQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBRWtBUVl6dUZ3c0NBUUVBUVpudUZ3c3dCZ0VBLy8vLy8wOTBBUUJuRVFBQUFRQUFBTXhhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUJKQUVIMDdoY0xLUUVCQUFBQkFBQUEwRm9EQUFBR0FRRC8vLy8veW5FQkFIZ1JBQUFCQUFBQTFGb0RBQUVBQUFBREFFSGM3eGNMUlFFQUFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL2Nua0JBSGtSQUFBQkFBQUExRm9EQUFnQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCeVBBWEN5VUJBQUFBMkZvREFQLy8vLy8vLy8vL0tYb0JBSG9SQUFBQkFBQUExRm9EQUFFQUFBQUJBRUd3OFJjTEtRRUFBQURZV2dNQS8vLy8vLy8vLy85SWRnRUFleEVBQUFFQUFBRFVXZ01BQWdBQUFBRUFBQUFCQUVHWThoY0xKUUVBQUFEWVdnTUEvLy8vLy8vLy8vOHBkZ0VBZkJFQUFBRUFBQURVV2dNQUFRQUFBQUVBUVlEekZ3c3RBUUFBQU5oYUF3RC8vLy8vLy8vLy8wMTlBUUI5RVFBQUFRQUFBTlJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhrOHhjTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy8zWG9CQUg4UkFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSE05QmNMT1FFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL1Rxd0JBSWdUQUFBQkFBQUFVRm9EQUFVQUFBQUNBQUFBQXdBQUFBVUFBQUFkQUFBQUFRQkJ0UFVYQ3prQkFRQUFBUUFBQU54YUF3RC8vLy8vLy8vLy8yV3NBUUNKRXdBQUFRQUFBRkJhQXdBRkFBQUFBZ0FBQUFNQUFBQUZBQUFBSFFBQUFBRUFRWnoyRndzNUFRRUFBQUVBQUFEY1dnTUEvLy8vLy8vLy8vODNyQUVBaWhNQUFBRUFBQUJRV2dNQUJRQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBRUdFOXhjTE9RRUJBQUFCQUFBQTNGb0RBUC8vLy8vLy8vLy9DYXdCQUlzVEFBQUJBQUFBVUZvREFBVUFBQUFDQUFBQUF3QUFBQVVBQUFBZEFBQUFBUUJCN1BjWEN6a0JBUUFBQVFBQUFOeGFBd0QvLy8vLy8vLy8veUNzQVFDTUV3QUFBUUFBQUZCYUF3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBUWRUNEZ3czVBUUVBQUFFQUFBRGNXZ01BLy8vLy8vLy8vLy95cXdFQWpSTUFBQUVBQUFCUVdnTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUVHOCtSY0xPUUVCQUFBQkFBQUEzRm9EQVAvLy8vLy8vLy8veEtzQkFJNFRBQUFCQUFBQVVGb0RBQVVBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFCQnBQb1hDemtCQVFBQUFRQUFBTnhhQXdELy8vLy8vLy8vLzl1ckFRQ1BFd0FBQVFBQUFGQmFBd0FGQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQVFZejdGd3MxQVFFQUFBRUFBQURjV2dNQS8vLy8vLy8vLy84UXJRRUFreE1BQUFFQUFBRGdXZ01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWZUN0Z3czVBUUVBQUFFQUFBRGtXZ01BLy8vLy8vLy8vLy8vckFFQWxCTUFBQUVBQUFEZ1dnTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFCQUVIYy9CY0xNUUVCQUFBQkFBQUE1Rm9EQVAvLy8vLy8vLy8vTjNrQkFNQVRBQUFCQUFBQTZGb0RBQU1BQUFBQ0FBQUFBd0FBQUFVQVFjVDlGd3NDQVFFQVFkRDlGd3RSLy8vLy8vLy8vLy9qWXdFQWdSUUFBQUlBQUFEc1dnTUFEZ0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHNC9oY0xUZi8vLy8vLy8vLy92Mk1CQUlJVUFBQUNBQUFBN0ZvREFBMEFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFR2cveGNMTmYvLy8vLy8vLy8vL21NQkFJTVVBQUFDQUFBQTdGb0RBQWNBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHSWdCZ0xKZi8vLy8vLy8vLy9ybUVCQUlRVUFBQUJBQUFBOUZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWVTQUdBc0NBUUVBUWZDQUdBc2wvLy8vLy8vLy8vLy9hQUVBaFJRQUFBRUFBQUQwV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCeklFWUN3SUJBUUJCMklFWUN5WC8vLy8vLy8vLy80RmtBUUNHRkFBQUFRQUFBUFJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUcwZ2hnTEFnRUJBRUhBZ2hnTEpmLy8vLy8vLy8vLzNHUUJBSWNVQUFBQkFBQUE5Rm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRWnlER0FzQ0FRRUFRYWlER0F0Ti8vLy8vLy8vLy8rbFl3RUFpQlFBQUFJQUFBRHNXZ01BRFFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUVpDRUdBc2wvLy8vLy8vLy8vOEdhQUVBaVJRQUFBRUFBQUQwV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCN0lRWUN3SUJBUUJCK0lRWUN5WC8vLy8vLy8vLy8vRmZBUUNLRkFBQUFRQUFBUFJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhVaFJnTEFnRUJBRUhnaFJnTEhmLy8vLy8vLy8vL0dsOEJBSXNVQUFBQkFBQUE5Rm9EQUFFQUFBQUJBRUhJaGhnTFNmLy8vLy8vLy8vL1FGOEJBSXdVQUFBQkFBQUE5Rm9EQUF3QUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRYkNIR0F0Ti8vLy8vLy8vLy85UllRRUFqUlFBQUFFQUFBRDBXZ01BRFFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUVppSUdBdEovLy8vLy8vLy8vKzJYd0VBamhRQUFBRUFBQUQwV2dNQURBQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCZ0lrWUN6SC8vLy8vLy8vLy85eGhBUUNQRkFBQUFRQUFBUFJhQXdBR0FBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIb2lSZ0xJZi8vLy8vLy8vLy9XbU1CQUpBVUFBQUJBQUFBOUZvREFBSUFBQUFCQUFBQUFRQkIwSW9ZQ3lYLy8vLy8vLy8vLyt4bkFRQ1JGQUFBQVFBQUFQUmFBd0FEQUFBQUFnQUFBQU1BQUFBQkFFR3NpeGdMQWdFQkFFRzRpeGdMSWYvLy8vLy8vLy8vUDJJQkFKSVVBQUFCQUFBQTlGb0RBQUlBQUFBQkFBQUFBUUJCb0l3WUN5WC8vLy8vLy8vLy8rbG9BUUNURkFBQUFRQUFBUFJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUg4akJnTEFnRUJBRUdJalJnTEpmLy8vLy8vLy8vLzFGOEJBSlFVQUFBQkFBQUE5Rm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRZVNOR0FzQ0FRRUFRZkNOR0FzbC8vLy8vLy8vLy85NFh3RUFsUlFBQUFFQUFBRDBXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ6STRZQ3dJQkFRQkIySTRZQ3lYLy8vLy8vLy8vLzVWcEFRQ1dGQUFBQVFBQUFQUmFBd0FEQUFBQUFnQUFBQU1BQUFBQkFFRzBqeGdMQWdFQkFFSEFqeGdMSmYvLy8vLy8vLy8vbEY4QkFKY1VBQUFCQUFBQTlGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFaeVFHQXNDQVFFQVFhaVFHQXNsLy8vLy8vLy8vLytpWkFFQW1CUUFBQUVBQUFEMFdnTUFBd0FBQUFJQUFBQURBQUFBQVFCQmhKRVlDd0lCQVFCQmtKRVlDeVgvLy8vLy8vLy8vL3BrQVFDWkZBQUFBUUFBQVBSYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVIc2tSZ0xBZ0VCQUVINGtSZ0xKZi8vLy8vLy8vLy9KMkFCQUpvVUFBQUJBQUFBOUZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWRTU0dBc0NBUUVBUWVDU0dBc2wvLy8vLy8vLy8vOFhaUUVBbXhRQUFBRUFBQUQwV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCdkpNWUN3SUJBUUJCeUpNWUN5WC8vLy8vLy8vLy93ZGZBUUNjRkFBQUFRQUFBUFJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdrbEJnTEFnRUJBRUd3bEJnTEpmLy8vLy8vLy8vL1FHRUJBSjBVQUFBQkFBQUE5Rm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRWXlWR0FzQ0FRRUFRWmlWR0FzbC8vLy8vLy8vLy8vS1lRRUFuaFFBQUFFQUFBRDBXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkI5SlVZQ3dJQkFRQkJnSllZQ3lYLy8vLy8vLy8vLzNKaEFRQ2ZGQUFBQVFBQUFQUmFBd0FEQUFBQUFRQUFBQ2dBQUFBb0FFSG9saGdMSWYvLy8vLy8vLy8vRW1FQkFLQVVBQUFCQUFBQTlGb0RBQUlBQUFBQkFBQUFBUUJCMEpjWUN4My8vLy8vLy8vLy81NWhBUUNoRkFBQUFRQUFBUFJhQXdBQkFBQUFBd0JCckpnWUN3RUJBRUc0bUJnTE5mLy8vLy8vLy8vLzZtQUJBS01VQUFBQkFBQUErRm9EQUFjQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBcEFFR1VtUmdMTlFFQkFBQUJBQUFBL0ZvREFQLy8vLy8vLy8vL1Myc0JBSzRVQUFBQkFBQUFBRnNEQUFRQUFBQUJBQUFBQVFBQUFBRUFBQUFvQUVHSW1oZ0xJZi8vLy8vLy8vLy9PV3NCQUs4VUFBQUJBQUFBQUZzREFBSUFBQUFCQUFBQUFRQkI4Sm9ZQ3lYLy8vLy8vLy8vL3loa0FRQ3dGQUFBQVFBQUFBUmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSE1teGdMTFFFQkFBQUJBQUFBQ0ZzREFQLy8vLy8vLy8vL1Iyb0JBTE1VQUFBQkFBQUFERnNEQUFJQUFBQUJBQUFBQVFCQnVKd1lDekVCQUFBQUVGc0RBUC8vLy8vLy8vLy9FM1lCQU5ZVUFBQUNBQUFBRkZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR2NuUmdMTlFFQkFBQUNBQUFBSEZzREFQLy8vLy8vLy8vL1YyUUJBTllVQUFBQ0FBQUFGRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHRW5oZ0xJd0VCQUFBQ0FBQUFIRnNEQVAvLy8vLy8vLy8vYkdRQkFOY1VBQUFCQUFBQUpGc0RBRUh3bmhnTEh3RUFBQUFvV3dNQS8vLy8vLy8vLy84eFh3RUEyQlFBQUFFQUFBQWtXd01BUWRpZkdBdE5BUUFBQUNoYkF3RC8vLy8vLy8vLy85Vm9BUURaRkFBQUFRQUFBQ1JiQXdBTEFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFjQ2dHQXRSQVFBQUFDaGJBd0QvLy8vLy8vLy8veHBrQVFEYUZBQUFBUUFBQUN4YkF3QU1BQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHb29SZ0xVUUVBQUFBd1d3TUEvLy8vLy8vLy8vK3VZd0VBMnhRQUFBRUFBQUFzV3dNQURBQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCa0tJWUN5VUJBQUFBTUZzREFQLy8vLy8vLy8vL3dIb0JBTjBVQUFBREFBQUFORnNEQUFFQUFBQURBRUgwb2hnTEtRRUFBQUFEQUFBQVFGc0RBUC8vLy8vLy8vLy9tMmNCQU4wVUFBQURBQUFBTkZzREFBRUFBQUFEQUVIY294Z0xMUUVBQUFBREFBQUFRRnNEQVAvLy8vLy8vLy8vTFdnQkFPQVVBQUFCQUFBQUpGc0RBQUlBQUFBQkFBQUFBUUJCeUtRWUN6VUJBQUFBS0ZzREFQLy8vLy8vLy8vL1ZGOEJBTzRVQUFBQkFBQUFURnNEQUFVQUFBQURBQUFBQVFBQUFBVUFBQUFCQUFBQUFRQkJyS1VZQ3owQkFBQUFBUUFBQUZCYkF3RC8vLy8vLy8vLy8zSnBBUUR2RkFBQUFRQUFBRXhiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFxQUVHVXBoZ0xPUUVCQUFBQkFBQUFVRnNEQVAvLy8vLy8vLy8vd21jQkFQQVVBQUFCQUFBQVRGc0RBQVVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBS2dCQmdLY1lDelVCQUFBQVVGc0RBUC8vLy8vLy8vLy9PR2tCQVBFVUFBQUJBQUFBVEZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCNUtjWUN6RUJBUUFBQVFBQUFGQmJBd0QvLy8vLy8vLy8veXBtQVFEeUZBQUFBUUFBQUV4YkF3QURBQUFBQWdBQUFBTUFBQUFCQUVITXFCZ0xJd0VCQUFBQkFBQUFVRnNEQVAvLy8vLy8vLy8vVm0wQkFQUVVBQUFEQUFBQVZGc0RBRUc0cVJnTEh3RUFBQUJnV3dNQS8vLy8vLy8vLy85eWJRRUE5UlFBQUFNQUFBQlVXd01BUWFDcUdBc2ZBUUFBQUdCYkF3RC8vLy8vLy8vLy94bXdBQUFFRlFBQUFRQUFBR1JiQXdCQmthc1lDeFlHQVFELy8vLy9FRzBCQUFRVkFBQUJBQUFBYUZzREFFSDVxeGdMSUFZQkFQLy8vLy82YkFFQUJSVUFBQUVBQUFCb1d3TUFBZ0FBQUFJQUFBQURBRUhVckJnTE1RRUJBQUFCQUFBQWJGc0RBUC8vLy8vLy8vLy9iR2dCQUE4VkFBQUJBQUFBY0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWJ5dEdBc0NBUUVBUWNpdEdBc2wvLy8vLy8vLy8vLy9ZZ0VBRUJVQUFBRUFBQUJ3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCcEs0WUN3SUJBUUJCc0s0WUN5WC8vLy8vLy8vLy8rOXBBUUFSRlFBQUFRQUFBSEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdNcnhnTEFnRUJBRUdZcnhnTEpmLy8vLy8vLy8vLzIya0JBQklWQUFBQkFBQUFjRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZlN2R0FzQ0FRRUFRWUN3R0FzbC8vLy8vLy8vLy8rTGFBRUFFeFVBQUFFQUFBQndXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkIzTEFZQ3dJQkFRQkI2TEFZQ3lYLy8vLy8vLy8vL3dGcUFRQVVGUUFBQVFBQUFIQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSEVzUmdMQWdFQkFFSFFzUmdMSGYvLy8vLy8vLy8vcEdnQkFCVVZBQUFCQUFBQWNGc0RBQUVBQUFBR0FFRzRzaGdMS2YvLy8vLy8vLy8vaVowQkFNTVZBQUFCQUFBQWRGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdVc3hnTEFnRUJBRUdnc3hnTExmLy8vLy8vLy8vL1daUUJBTVFWQUFBQkFBQUFkRnNEQUFVQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQkIvTE1ZQ3dJQkFRQkJpTFFZQ3kzLy8vLy8vLy8vL3ltVUFRREZGUUFBQVFBQUFIUmJBd0FGQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUFFQVFlUzBHQXNDQVFFQVFmQzBHQXNwLy8vLy8vLy8vLzhia3dFQXhoVUFBQUVBQUFCMFd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRY3kxR0FzQ0FRRUFRZGkxR0FzbC8vLy8vLy8vLy8vZHBRRUF4eFVBQUFFQUFBQjRXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ0TFlZQ3dJQkFRQkJ3TFlZQ3lILy8vLy8vLy8vLzFPY0FRRElGUUFBQVFBQUFIaGJBd0FDQUFBQUFRQUFBQUVBUWFpM0dBc3AvLy8vLy8vLy8vLzBwUUVBeVJVQUFBRUFBQUI4V3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFZUzRHQXNDQVFFQVFaQzRHQXNsLy8vLy8vLy8vLzlybkFFQXloVUFBQUVBQUFCOFd3TUFBd0FBQUFFQUFBQUJBQUFBQVFCQitMZ1lDekgvLy8vLy8vLy8veENtQVFETUZRQUFBUUFBQUlCYkF3QUdBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFSFV1UmdMQWdFQkFFSGd1UmdMTGYvLy8vLy8vLy8vaUp3QkFNMFZBQUFCQUFBQWdGc0RBQVVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQnlMb1lDeVgvLy8vLy8vLy8veFNPQVFEUkZRQUFBUUFBQUlSYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVHa3V4Z0xBZ0VCQUVHd3V4Z0xKZi8vLy8vLy8vLy8rNDBCQU5JVkFBQUJBQUFBaEZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUVl5OEdBc0NBUUVBUVppOEdBc3AvLy8vLy8vLy8vL1VwZ0VBMHhVQUFBRUFBQUNFV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFmUzhHQXNDQVFFQVFZQzlHQXNwLy8vLy8vLy8vLy9IcGdFQTFCVUFBQUVBQUFDRVd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZHk5R0FzQ0FRRUFRZWk5R0FzcC8vLy8vLy8vLy8vUmpBRUExUlVBQUFFQUFBQ0VXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWNTK0dBc0NBUUVBUWRDK0dBc3AvLy8vLy8vLy8vL0VqQUVBMWhVQUFBRUFBQUNFV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFheS9HQXNDQVFFQVFiaS9HQXNwLy8vLy8vLy8vLys4bndFQTF4VUFBQUVBQUFDRVd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWlRBR0FzQ0FRRUFRYURBR0FzcC8vLy8vLy8vLy8rdW53RUEyQlVBQUFFQUFBQ0VXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWZ6QUdBc0NBUUVBUVlqQkdBc3AvLy8vLy8vLy8vLzdvd0VBMlJVQUFBRUFBQUNFV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFlVEJHQXNDQVFFQVFmREJHQXNwLy8vLy8vLy8vLy9tb3dFQTJoVUFBQUVBQUFDRVd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRY3pDR0FzQ0FRRUFRZGpDR0FzcC8vLy8vLy8vLy8vcmpBRUEyeFVBQUFFQUFBQ0VXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWJUREdBc0NBUUVBUWNEREdBc3AvLy8vLy8vLy8vL2VqQUVBM0JVQUFBRUFBQUNFV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFaekVHQXNDQVFFQVFhakVHQXNwLy8vLy8vLy8vLy9jcUFFQTNSVUFBQUVBQUFDRVd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWVRGR0FzQ0FRRUFRWkRGR0FzcC8vLy8vLy8vLy8vTnFBRUEzaFVBQUFFQUFBQ0VXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWV6RkdBc0NBUUVBUWZqRkdBc2wvLy8vLy8vLy8vOUJrd0VBNEJVQUFBRUFBQUNJV3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCMU1ZWUN6RUJBUUFBQVFBQUFJeGJBd0QvLy8vLy8vLy8vNFdZQVFEaEZRQUFBUUFBQUloYkF3QURBQUFBQWdBQUFBTUFBQUF4QUVHOHh4Z0xNUUVCQUFBQkFBQUFqRnNEQVAvLy8vLy8vLy8vdFl3QkFPa1ZBQUFCQUFBQWtGc0RBQU1BQUFBQ0FBQUFBd0FBQUFvQVFhVElHQXNDQVFFQVFiRElHQXN4Ly8vLy8vLy8vLzhXbUFFQTZoVUFBQUVBQUFDUVd3TUFCZ0FBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFLQUFBQUNnQkJqTWtZQ3dJQkFRQkJtTWtZQ3luLy8vLy8vLy8vLzU2WUFRRHJGUUFBQVFBQUFKQmJBd0FFQUFBQUFnQUFBQU1BQUFBQkFBQUFNUUJCOU1rWUN3SUJBUUJCZ01vWUN6SC8vLy8vLy8vLy95eHRBUUR1RlFBQUF3QUFBSlJiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQlFBQUFBUUFBQUFCQUVIY3loZ0xBZ0VCQUVIb3loZ0xNZi8vLy8vLy8vLy9BMnNCQU84VkFBQURBQUFBbEZzREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBRkFBQUFCQUFBQUFFQVFjVExHQXNDQVFFQVFkRExHQXNkLy8vLy8vLy8vLytXZVFFQS9oVUFBQUVBQUFDZ1d3TUFBUUFBQUFFQVFiRE1HQXN4QVFBQUFLUmJBd0QvLy8vLy8vLy8veDEwQVFEL0ZRQUFBUUFBQUtCYkF3QUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkJsTTBZQ3hvQkFRQUFBUUFBQUtSYkF3RC8vLy8vLy8vLy94amZBQUFBRmdCQnVNMFlDd2tDQUFBQUFRQUFBQnNBUVlET0dBc1dBZ0FBQUtoYkF3QUFCQUVBLy8vLy81R3FBUUFBRmdCQm9NNFlDd2tDQUFBQUFRQUFBQnNBUWVqT0dBc1dBZ0FBQUtoYkF3QUFCQUVBLy8vLy94TGZBQUFCRmdCQmlNOFlDdzBEQUFBQUFRQUFBQVlBQUFBYkFFSFF6eGdMRmdJQUFBQ29Xd01BQUFRQkFQLy8vLytMcWdFQUFSWUFRZkRQR0FzTkF3QUFBQUVBQUFBR0FBQUFHd0JCdU5BWUN6RUNBQUFBcUZzREFBQUVBUUQvLy8vL3pwOEJBRU1XQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHYzBSZ0xBZ0VCQUVHbzBSZ0xJZi8vLy8vLy8vLy95cDhCQUVRV0FBQUJBQUFBc0ZzREFBSUFBQUFEQUFBQUFRQkJoTklZQ3dFQkFFR1EwaGdMSGYvLy8vLy8vLy8vL0tRQkFFVVdBQUFCQUFBQXNGc0RBQUVBQUFBREFFSHMwaGdMQVFFQVFmalNHQXNkLy8vLy8vLy8vLysrcEFFQVJoWUFBQUVBQUFDd1d3TUFBUUFBQUFNQVFkVFRHQXNCQVFCQjROTVlDeDMvLy8vLy8vLy8vOGFsQVFCSEZnQUFBUUFBQUxCYkF3QUJBQUFBQXdCQnZOUVlDd0VCQUVISTFCZ0xIZi8vLy8vLy8vLy9pS1VCQUVnV0FBQUJBQUFBc0ZzREFBRUFBQUFEQUVHazFSZ0xBUUVBUWJEVkdBc2QvLy8vLy8vLy8vLzZpd0VBU1JZQUFBRUFBQUN3V3dNQUFRQUFBQU1BUVl6V0dBc0JBUUJCbU5ZWUN4My8vLy8vLy8vLy8zS0xBUUJLRmdBQUFRQUFBTEJiQXdBQkFBQUFBd0JCOU5ZWUN3RUJBRUdBMXhnTEhmLy8vLy8vLy8vL0k0Z0JBRXNXQUFBQkFBQUFzRnNEQUFFQUFBQURBRUhjMXhnTEFRRUFRZWpYR0FzZC8vLy8vLy8vLy8rU2h3RUFUQllBQUFFQUFBQ3dXd01BQVFBQUFBTUFRY1RZR0FzQkFRQkIwTmdZQ3gzLy8vLy8vLy8vLzVxWEFRQk5GZ0FBQVFBQUFMQmJBd0FCQUFBQUF3QkJyTmtZQ3dFQkFFRzQyUmdMSGYvLy8vLy8vLy8vRUpjQkFFNFdBQUFCQUFBQXNGc0RBQUVBQUFBREFFR1UyaGdMQVFFQVFhRGFHQXNkLy8vLy8vLy8vLzgyaXdFQVR4WUFBQUVBQUFDd1d3TUFBUUFBQUFNQVFmemFHQXNCQVFCQmlOc1lDeDMvLy8vLy8vLy8vemFNQVFCUUZnQUFBUUFBQUxCYkF3QUJBQUFBQXdCQjVOc1lDd0VCQUVIdzJ4Z0xLZi8vLy8vLy8vLy81b1FCQUZFV0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSE0zQmdMQWdFQkFFSFkzQmdMS2YvLy8vLy8vLy8vSW9VQkFGSVdBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUcwM1JnTEFnRUJBRUhBM1JnTEtmLy8vLy8vLy8vLy9vTUJBRk1XQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHYzNoZ0xBZ0VCQUVHbzNoZ0xLZi8vLy8vLy8vLy9MWVFCQUZRV0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR0UzeGdMQWdFQkFFR1EzeGdMS2YvLy8vLy8vLy8vWjRNQkFGVVdBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhzM3hnTEFnRUJBRUg0M3hnTEtmLy8vLy8vLy8vL21vTUJBRllXQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIVTRCZ0xBZ0VCQUVIZzRCZ0xLZi8vLy8vLy8vLy9WWVFCQUZjV0FBQUNBQUFBdEZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFRzg0UmdMQWdFQkFFSEk0UmdMS2YvLy8vLy8vLy8vV0o4QkFGZ1dBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdrNGhnTEFnRUJBRUd3NGhnTElmLy8vLy8vLy8vL0pwOEJBRmtXQUFBQkFBQUFzRnNEQUFJQUFBQUNBQUFBQXdCQmpPTVlDd0lCQVFCQm1PTVlDeUgvLy8vLy8vLy8vL0tlQVFCYUZnQUFBUUFBQUxCYkF3QUNBQUFBQWdBQUFBTUFRZlRqR0FzQ0FRRUFRWURrR0FzaC8vLy8vLy8vLy8vQm5nRUFXeFlBQUFFQUFBQ3dXd01BQWdBQUFBSUFBQUFEQUVIYzVCZ0xBZ0VCQUVIbzVCZ0xNZi8vLy8vLy8vLy9CSlVCQUZ3V0FBQUJBQUFBc0ZzREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFjVGxHQXNDQVFFQVFkRGxHQXNwLy8vLy8vLy8vLyswaEFFQVhSWUFBQUlBQUFDMFd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRYXptR0FzQ0FRRUFRYmptR0FzaC8vLy8vLy8vLy85WGhRRUFYaFlBQUFJQUFBQzBXd01BQWdBQUFBSUFBQUFEQUVHVTV4Z0xBZ0VCQUVHZzV4Z0xJZi8vLy8vLy8vLy94b01CQUY4V0FBQUNBQUFBdkZzREFBSUFBQUFDQUFBQUF3QkIvT2NZQ3dJQkFRQkJpT2dZQ3lYLy8vLy8vLy8vLzMyVEFRQmdGZ0FBQVFBQUFMQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSGs2QmdMQWdFQkFFSHc2QmdMS2YvLy8vLy8vLy8vaW9VQkFHRVdBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhNNlJnTEFnRUJBRUhZNlJnTEtmLy8vLy8vLy8vL3ZvVUJBR0lXQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHMDZoZ0xBZ0VCQUVIQTZoZ0xMZi8vLy8vLy8vLy9HNUVCQUdNV0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCbk9zWUN3SUJBUUJCcU9zWUN5WC8vLy8vLy8vLy85V2tBUUJrRmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdFN0JnTEFnRUJBRUdRN0JnTEpmLy8vLy8vLy8vL1RJc0JBR1VXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZXpzR0FzQ0FRRUFRZmpzR0FzbC8vLy8vLy8vLy8rWHBBRUFaaFlBQUFFQUFBQ3dXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkIxTzBZQ3dJQkFRQkI0TzBZQ3lYLy8vLy8vLy8vL3hDTEFRQm5GZ0FBQVFBQUFMQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFRzg3aGdMQWdFQkFFSEk3aGdMSmYvLy8vLy8vLy8vbjZVQkFHZ1dBQUFCQUFBQXNGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFhVHZHQXNDQVFFQVFiRHZHQXNsLy8vLy8vLy8vLzhRakFFQWFSWUFBQUVBQUFDd1d3TUFBd0FBQUFJQUFBQURBQUFBQVFCQmpQQVlDd0lCQVFCQm1QQVlDeVgvLy8vLy8vLy8veGVOQVFCcUZnQUFBUUFBQUxCYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVIMDhCZ0xBZ0VCQUVHQThSZ0xKZi8vLy8vLy8vLy92NDRCQUdzV0FBQUJBQUFBc0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWR6eEdBc0NBUUVBUWVqeEdBc2wvLy8vLy8vLy8vK1VqZ0VBYkJZQUFBRUFBQUN3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCeFBJWUN3SUJBUUJCMFBJWUN5WC8vLy8vLy8vLy8rNmNBUUJ0RmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdzOHhnTEFnRUJBRUc0OHhnTEpmLy8vLy8vLy8vL3lKd0JBRzRXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRWlQwR0FzQ0FRRUFRYUQwR0FzbC8vLy8vLy8vLy85c2p3RUFieFlBQUFFQUFBQ3dXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkIvUFFZQ3dJQkFRQkJpUFVZQ3lYLy8vLy8vLy8vLythSkFRQndGZ0FBQVFBQUFMQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSGs5UmdMQWdFQkFFSHc5UmdMSmYvLy8vLy8vLy8vN3BFQkFIRVdBQUFCQUFBQXNGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFjejJHQXNDQVFFQVFkajJHQXN0Ly8vLy8vLy8vLy9ka0FFQWNoWUFBQUVBQUFDd1d3TUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFCQUVHMDl4Z0xBZ0VCQUVIQTl4Z0xMZi8vLy8vLy8vLy9GWnNCQUhNV0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCblBnWUN3SUJBUUJCcVBnWUN5My8vLy8vLy8vLy8rS2hBUUIwRmdBQUFRQUFBTEJiQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFRWVQ1R0FzQ0FRRUFRWkQ1R0FzeC8vLy8vLy8vLy8vYm9BRUFkUllBQUFFQUFBQ3dXd01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCN1BrWUN3SUJBUUJCK1BrWUN5bi8vLy8vLy8vLy82aWJBUUIyRmdBQUFRQUFBTEJiQXdBRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQjFQb1lDd0lCQVFCQjRQb1lDekgvLy8vLy8vLy8vM2lNQVFCM0ZnQUFBUUFBQUxCYkF3QUdBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFRzgreGdMQWdFQkFFSEkreGdMSmYvLy8vLy8vLy8vT3FVQkFIZ1dBQUFCQUFBQXNGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFhVDhHQXNDQVFFQVFiRDhHQXNwLy8vLy8vLy8vLys3aVFFQWVSWUFBQUVBQUFDd1d3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWXo5R0FzQ0FRRUFRWmo5R0FzbC8vLy8vLy8vLy8rZW5RRUFlaFlBQUFFQUFBQ3dXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkI5UDBZQ3dJQkFRQkJnUDRZQ3luLy8vLy8vLy8vL3d1akFRQjdGZ0FBQVFBQUFMQmJBd0FFQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUJCM1A0WUN3SUJBUUJCNlA0WUN5bi8vLy8vLy8vLy8xeW1BUUI4RmdBQUFRQUFBTEJiQXdBRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQnhQOFlDd0lCQVFCQjBQOFlDeTMvLy8vLy8vLy8vemVpQVFCOUZnQUFBUUFBQUxCYkF3QUZBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBUWF5QUdRc0NBUUVBUWJpQUdRc3gvLy8vLy8vLy8vOHNvUUVBZmhZQUFBRUFBQUN3V3dNQUJnQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQmxJRVpDd0lCQVFCQm9JRVpDekgvLy8vLy8vLy8vMk9YQVFCL0ZnQUFBUUFBQUxCYkF3QUdBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFSDhnUmtMQWdFQkFFR0lnaGtMTmYvLy8vLy8vLy8vMjVZQkFJQVdBQUFCQUFBQXNGc0RBQWNBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIa2doa0xBZ0VCQUVId2doa0xMZi8vLy8vLy8vLy9nb2dCQUlFV0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCeklNWkN3SUJBUUJCMklNWkN6SC8vLy8vLy8vLy8rMkhBUUNDRmdBQUFRQUFBTEJiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHMGhCa0xBZ0VCQUVIQWhCa0xNZi8vLy8vLy8vLy9XSWNCQUlNV0FBQUJBQUFBc0ZzREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFaeUZHUXNDQVFFQVFhaUZHUXMxLy8vLy8vLy8vLzhnaHdFQWhCWUFBQUVBQUFDd1d3TUFCd0FBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUVlTR0dRc0NBUUVBUVpDR0dRc2wvLy8vLy8vLy8vK3Vpd0VBaFJZQUFBRUFBQUN3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCN0lZWkN3SUJBUUJCK0lZWkN5WC8vLy8vLy8vLy96V1hBUUNHRmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhVaHhrTEFnRUJBRUhnaHhrTEpmLy8vLy8vLy8vL3I1WUJBSWNXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRYnlJR1FzQ0FRRUFRY2lJR1FzbC8vLy8vLy8vLy85UmlBRUFpQllBQUFFQUFBQ3dXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkJwSWtaQ3dJQkFRQkJzSWtaQ3lYLy8vLy8vLy8vLzc2SEFRQ0pGZ0FBQVFBQUFMQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFR01paGtMQWdFQkFFR1lpaGtMS2YvLy8vLy8vLy8vZjQwQkFJb1dBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUgwaWhrTEFnRUJBRUdBaXhrTEtmLy8vLy8vLy8vL0tJOEJBSXNXQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIY2l4a0xBZ0VCQUVIb2l4a0xLZi8vLy8vLy8vLy9XWklCQUl3V0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSEVqQmtMQWdFQkFFSFFqQmtMTGYvLy8vLy8vLy8vTzQwQkFJMFdBQUFCQUFBQXNGc0RBQVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFCQnJJMFpDd0lCQVFCQnVJMFpDeTMvLy8vLy8vLy8vK2FPQVFDT0ZnQUFBUUFBQUxCYkF3QUZBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBUVpTT0dRc0NBUUVBUWFDT0dRc3QvLy8vLy8vLy8vOFdrZ0VBanhZQUFBRUFBQUN3V3dNQUJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBRUg4amhrTEFnRUJBRUdJanhrTEtmLy8vLy8vLy8vL3dxTUJBSkFXQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIa2p4a0xBZ0VCQUVId2p4a0xKZi8vLy8vLy8vLy9jWllCQUpFV0FBQUJBQUFBc0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWN5UUdRc0NBUUVBUWRpUUdRc2wvLy8vLy8vLy8vLzlsUUVBa2hZQUFBRUFBQUN3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCdEpFWkN3SUJBUUJCd0pFWkN5WC8vLy8vLy8vLy8rR1NBUUNURmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdja2hrTEFnRUJBRUdva2hrTEpmLy8vLy8vLy8vL2NwUUJBSlFXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRWVNUR1FzQ0FRRUFRWkNUR1FzOS8vLy8vLy8vLy84em13RUFsUllBQUFFQUFBQ3dXd01BQ1FBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQjdKTVpDd0lCQVFCQitKTVpDMEgvLy8vLy8vLy8vMUdiQVFDV0ZnQUFBUUFBQUxCYkF3QUtBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQjFKUVpDd0lCQVFCQjRKUVpDeVgvLy8vLy8vLy8veE9sQVFDWEZnQUFBUUFBQUxCYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVHOGxSa0xBZ0VCQUVISWxSa0xKZi8vLy8vLy8vLy96WjBCQUpnV0FBQUJBQUFBc0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWFTV0dRc0NBUUVBUWJDV0dRc2wvLy8vLy8vLy8vLzduUUVBbVJZQUFBRUFBQUN3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCakpjWkN3SUJBUUJCbUpjWkN5My8vLy8vLy8vLy93aWlBUUNhRmdBQUFRQUFBTEJiQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFRZlNYR1FzQ0FRRUFRWUNZR1FzeC8vLy8vLy8vLy8vL29BRUFteFlBQUFFQUFBQ3dXd01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCM0pnWkN3SUJBUUJCNkpnWkN5My8vLy8vLy8vLy80YWhBUUNjRmdBQUFRQUFBTEJiQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFRY1NaR1FzQ0FRRUFRZENaR1FzeC8vLy8vLy8vLy84UXBBRUFuUllBQUFFQUFBQ3dXd01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCckpvWkN3SUJBUUJCdUpvWkN5WC8vLy8vLy8vLy80aUxBUUNlRmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdVbXhrTEFnRUJBRUdnbXhrTEpmLy8vLy8vLy8vL2I1c0JBSjhXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZnliR1FzQ0FRRUFRWWljR1FzNS8vLy8vLy8vLy8rUXBnRUFvQllBQUFFQUFBQ3dXd01BQ0FBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBRUhrbkJrTEFnRUJBRUh3bkJrTFFmLy8vLy8vLy8vL0I2Y0JBS0VXQUFBQ0FBQUF0RnNEQUFvQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBRUhNblJrTEFnRUJBRUhZblJrTFRmLy8vLy8vLy8vL1VxY0JBS0lXQUFBQ0FBQUF2RnNEQUEwQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHMG5oa0xBZ0VCQUVIQW5oa0xLZi8vLy8vLy8vLy9JWmtCQUtNV0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR2NueGtMQWdFQkFFR29ueGtMSmYvLy8vLy8vLy8vWWFVQkFLUVdBQUFCQUFBQXNGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFZU2dHUXNDQVFFQVFaQ2dHUXNwLy8vLy8vLy8vLytJaEFFQXBSWUFBQUVBQUFDd1d3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZXlnR1FzQ0FRRUFRZmlnR1FzeC8vLy8vLy8vLy84emxRRUFwaFlBQUFJQUFBQzBXd01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCMUtFWkN3SUJBUUJCNEtFWkN5bi8vLy8vLy8vLy8yT1ZBUUNuRmdBQUFnQUFBTHhiQXdBRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQnZLSVpDd0lCQVFCQnlLSVpDeVgvLy8vLy8vLy8veWFlQVFDb0ZnQUFBUUFBQUxCYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVHa294a0xBZ0VCQUVHd294a0xLZi8vLy8vLy8vLy9VWjRCQUtrV0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR01wQmtMQWdFQkFFR1lwQmtMS2YvLy8vLy8vLy8vTWFZQkFLb1dBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUgwcEJrTEFnRUJBRUdBcFJrTEtmLy8vLy8vLy8vL041MEJBS3NXQUFBQ0FBQUF0RnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIY3BSa0xBZ0VCQUVIb3BSa0xMZi8vLy8vLy8vLy9acUlCQUt3V0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCeEtZWkN3SUJBUUJCMEtZWkN6SC8vLy8vLy8vLy8xbWhBUUN0RmdBQUFRQUFBTEJiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHc3B4a0xBZ0VCQUVHNHB4a0xMZi8vLy8vLy8vLy90S0VCQUs0V0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCbEtnWkN3SUJBUUJCb0tnWkN6SC8vLy8vLy8vLy8waWtBUUN2RmdBQUFRQUFBTEJiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIOHFCa0xBZ0VCQUVHSXFSa0xKZi8vLy8vLy8vLy8xSXNCQUxBV0FBQUJBQUFBc0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWVTcEdRc0NBUUVBUWZDcEdRc2wvLy8vLy8vLy8vOFVuUUVBc1JZQUFBSUFBQUMwV3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCektvWkN3SUJBUUJCMktvWkN5WC8vLy8vLy8vLy82cVVBUUN5RmdBQUFnQUFBTFJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUcwcXhrTEFnRUJBRUhBcXhrTEpmLy8vLy8vLy8vLzFwUUJBTE1XQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRWnlzR1FzQ0FRRUFRYWlzR1FzbC8vLy8vLy8vLy85dWtRRUF0QllBQUFJQUFBQzBXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkJoSzBaQ3dJQkFRQkJrSzBaQ3lYLy8vLy8vLy8vLzJPZ0FRQzFGZ0FBQWdBQUFMeGJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSHNyUmtMQWdFQkFFSDRyUmtMSmYvLy8vLy8vLy8vMmFJQkFMWVdBQUFDQUFBQXRGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFkU3VHUXNDQVFFQVFlQ3VHUXNsLy8vLy8vLy8vLzlCb3dFQXR4WUFBQUlBQUFDMFd3TUFBd0FBQUFJQUFBQURBQUFBQVFCQnZLOFpDd0lCQVFCQnlLOFpDeVgvLy8vLy8vLy8vOHVSQVFDNEZnQUFBUUFBQUxCYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVHa3NCa0xBZ0VCQUVHd3NCa0xKZi8vLy8vLy8vLy92NFlCQUxvV0FBQUJBQUFBeEZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUVl5eEdRc0NBUUVBUVppeEdRc2gvLy8vLy8vLy8vOFFoZ0VBdXhZQUFBRUFBQURFV3dNQUFnQUFBQUlBQUFBREFFSDBzUmtMQWdFQkFFR0FzaGtMSGYvLy8vLy8vLy8vSUlZQkFMd1dBQUFCQUFBQXhGc0RBQUVBQUFBQkFFSG9zaGtMUGYvLy8vLy8vLy8vWVprQkFOQVdBQUFCQUFBQXlGc0RBQWtBQUFBQ0FBQUFBd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBUWNTekdRc0NBUUVBUWRDekdRczUvLy8vLy8vLy8vOE9pUUVBMFJZQUFBRUFBQURJV3dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHc3RCa0xBZ0VCQUVHNHRCa0xPZi8vLy8vLy8vLy84WW9CQU5JV0FBQUJBQUFBeUZzREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQmxMVVpDd0lCQVFCQm9MVVpDelgvLy8vLy8vLy8vOVNLQVFEVEZnQUFBUUFBQU1oYkF3QUhBQUFBQWdBQUFBTUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCL0xVWkN3SUJBUUJCaUxZWkMwSC8vLy8vLy8vLy80Q2tBUURXRmdBQUFRQUFBTWhiQXdBS0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCNUxZWkN3SUJBUUJCOExZWkMwSC8vLy8vLy8vLy83Q21BUURYRmdBQUFRQUFBTWhiQXdBS0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCekxjWkN3SUJBUUJCMkxjWkMwSC8vLy8vLy8vLy95K1lBUURZRmdBQUFRQUFBTWhiQXdBS0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCdExnWkN3SUJBUUJCd0xnWkMwSC8vLy8vLy8vLy93bUhBUURaRmdBQUFRQUFBTWhiQXdBS0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCbkxrWkN3SUJBUUJCcUxrWkN6SC8vLy8vLy8vLy82eW5BUURhRmdBQUFRQUFBTWhiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUVHRXVoa0xBZ0VCQUVHUXVoa0xNZi8vLy8vLy8vLy9uS2dCQU5zV0FBQUJBQUFBeUZzREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFBUUFBQUFZQVFleTZHUXNDQVFFQVFmaTZHUXN4Ly8vLy8vLy8vLzk4cHdFQTNCWUFBQUVBQUFESVd3TUFCZ0FBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFCQUFBQUJnQkIxTHNaQ3dJQkFRQkI0THNaQ3pILy8vLy8vLy8vLzRhb0FRRGRGZ0FBQVFBQUFNaGJBd0FHQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBRUc4dkJrTEFnRUJBRUhJdkJrTE1mLy8vLy8vLy8vLzJxY0JBTjRXQUFBQkFBQUF5RnNEQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFHQUFBQUFRQUFBQVlBUWFTOUdRc0NBUUVBUWJDOUdRczUvLy8vLy8vLy8vOEFsQUVBM3hZQUFBRUFBQURJV3dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHTXZoa0xBZ0VCQUVHWXZoa0xPZi8vLy8vLy8vLy9YWWtCQU9BV0FBQUJBQUFBeUZzREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQjlMNFpDd0lCQVFCQmdMOFpDem4vLy8vLy8vLy8vNHFKQVFEaEZnQUFBUUFBQU1oYkF3QUlBQUFBQWdBQUFBTUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFkeS9HUXNDQVFFQVFlaS9HUXRCLy8vLy8vLy8vLytpaVFFQTRoWUFBQUVBQUFESVd3TUFDZ0FBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFjVEFHUXNDQVFFQVFkREFHUXM1Ly8vLy8vLy8vLzgyaVFFQTR4WUFBQUVBQUFESVd3TUFDQUFBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FFR3N3UmtMQWdFQkFFRzR3UmtMT2YvLy8vLy8vLy8vaDVvQkFPUVdBQUFCQUFBQXlGc0RBQWdBQUFBQ0FBQUFBd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJsTUlaQ3dJQkFRQkJvTUlaQ3puLy8vLy8vLy8vL3pPcEFRRGxGZ0FBQVFBQUFNaGJBd0FJQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFRZnpDR1FzQ0FRRUFRWWpER1FzNS8vLy8vLy8vLy85OXFRRUE1aFlBQUFFQUFBRElXd01BQ0FBQUFBSUFBQUFEQUFBQUFRQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBRUhrd3hrTEFnRUJBRUh3d3hrTE9mLy8vLy8vLy8vL1FKUUJBT2NXQUFBQkFBQUF5RnNEQUFnQUFBQUNBQUFBQXdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCek1RWkN3SUJBUUJCMk1RWkN6bi8vLy8vLy8vLy81NlRBUURvRmdBQUFRQUFBTWhiQXdBSUFBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBUWJURkdRc0NBUUVBUWNERkdRczUvLy8vLy8vLy8vOENxUUVBNlJZQUFBRUFBQURJV3dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHY3hoa0xBZ0VCQUVHb3hoa0xPZi8vLy8vLy8vLy9aS2tCQU9vV0FBQUJBQUFBeUZzREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQmhNY1pDd0lCQVFCQmtNY1pDem4vLy8vLy8vLy8vMHVwQVFEckZnQUFBUUFBQU1oYkF3QUlBQUFBQWdBQUFBTUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFlekhHUXNDQVFFQVFmakhHUXM1Ly8vLy8vLy8vLy9CbHdFQTdCWUFBQUVBQUFESVd3TUFDQUFBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FFSFV5QmtMQWdFQkFFSGd5QmtMT2YvLy8vLy8vLy8vTEk0QkFPMFdBQUFCQUFBQXlGc0RBQWdBQUFBQ0FBQUFBd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJ2TWtaQ3dJQkFRQkJ5TWtaQ3puLy8vLy8vLy8vLzBPT0FRRHVGZ0FBQVFBQUFNaGJBd0FJQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFRYVRLR1FzQ0FRRUFRYkRLR1FzNS8vLy8vLy8vLy8rNm1RRUE3eFlBQUFFQUFBRElXd01BQ0FBQUFBSUFBQUFEQUFBQUFRQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBRUdNeXhrTEFnRUJBRUdZeXhrTE9mLy8vLy8vLy8vL1NKa0JBUEFXQUFBQkFBQUF5RnNEQUFnQUFBQUNBQUFBQXdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCOU1zWkN3SUJBUUJCZ013WkN6bi8vLy8vLy8vLy8rYVhBUUR4RmdBQUFRQUFBTWhiQXdBSUFBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBUWR6TUdRc0NBUUVBUWVqTUdRczUvLy8vLy8vLy8vL2ptUUVBOGhZQUFBRUFBQURJV3dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVIRXpSa0xBZ0VCQUVIUXpSa0xPZi8vLy8vLy8vLy9mSTRCQVBNV0FBQUJBQUFBeUZzREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQnJNNFpDd0lCQVFCQnVNNFpDem4vLy8vLy8vLy8vNkNaQVFEMEZnQUFBUUFBQU1oYkF3QUlBQUFBQWdBQUFBTUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFaVFBHUXNDQVFFQVFhRFBHUXM1Ly8vLy8vLy8vLy8rbHdFQTlSWUFBQUVBQUFESVd3TUFDQUFBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FFSDh6eGtMQWdFQkFFR0kwQmtMT2YvLy8vLy8vLy8vL1prQkFQWVdBQUFCQUFBQXlGc0RBQWdBQUFBQ0FBQUFBd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkI1TkFaQ3dJQkFRQkI4TkFaQzBILy8vLy8vLy8vL3hxcEFRRDNGZ0FBQVFBQUFNaGJBd0FLQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJ6TkVaQ3dJQkFRQkIyTkVaQzBILy8vLy8vLy8vLy9LR0FRRDRGZ0FBQVFBQUFNaGJBd0FLQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJ0TklaQ3dJQkFRQkJ3TklaQzBILy8vLy8vLy8vLzhLbkFRRDVGZ0FBQVFBQUFNaGJBd0FLQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJuTk1aQ3dJQkFRQkJxTk1aQ3ozLy8vLy8vLy8vLzFtb0FRRDZGZ0FBQVFBQUFNaGJBd0FKQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHRTFCa0xBZ0VCQUVHUTFCa0xIZi8vLy8vLy8vLy9ZSmdCQVA4V0FBQUJBQUFBekZzREFBRUFBQUF5QUVIdzFCa0xLUUVBQUFEUVd3TUEvLy8vLy8vLy8vL2dtQUVBRnhjQUFBRUFBQURVV3dNQUFnQUFBQU1BQUFBb0FFSFUxUmtMTVFFQUFBQUJBQUFBMkZzREFQLy8vLy8vLy8vLzlaZ0JBQmdYQUFBQkFBQUExRnNEQUFNQUFBQURBQUFBQVFBQUFDZ0FRYnpXR1FzdEFRQUFBQUVBQUFEWVd3TUEvLy8vLy8vLy8vL0ltQUVBR1JjQUFBRUFBQURVV3dNQUFnQUFBQU1BQUFBeEFFR2sxeGtMU1FFQUFBQUJBQUFBMkZzREFQLy8vLy8vLy8vL1Rva0JBQ01YQUFBQkFBQUEzRnNEQUFrQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFZellHUXNDQVFFQVFaallHUXM5Ly8vLy8vLy8vLzhabEFFQUpCY0FBQUVBQUFEY1d3TUFDUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCOU5nWkN3SUJBUUJCZ05rWkN6My8vLy8vLy8vLy95YUpBUUFsRndBQUFRQUFBTnhiQXdBSkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FFSGMyUmtMQWdFQkFFSG8yUmtMUGYvLy8vLy8vLy8vMkpjQkFDWVhBQUFCQUFBQTNGc0RBQWtBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBUWNUYUdRc0NBUUVBUWREYUdRczkvLy8vLy8vLy8vOXVqZ0VBSnhjQUFBRUFBQURjV3dNQUNRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJyTnNaQ3dJQkFRQkJ1TnNaQ3ozLy8vLy8vLy8vLzEyT0FRQW9Gd0FBQVFBQUFOeGJBd0FKQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHVTNCa0xBZ0VCQUVHZzNCa0xQZi8vLy8vLy8vLy8wNWtCQUNrWEFBQUJBQUFBM0ZzREFBa0FBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFRZnpjR1FzQ0FRRUFRWWpkR1FzOS8vLy8vLy8vLy8rUW1RRUFLaGNBQUFFQUFBRGNXd01BQ1FBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQjVOMFpDd0lCQVFCQjhOMFpDejMvLy8vLy8vLy8vMzJaQVFBckZ3QUFBUUFBQU54YkF3QUpBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBRUhNM2hrTEFnRUJBRUhZM2hrTFBmLy8vLy8vLy8vL25wb0JBQ3dYQUFBQkFBQUEzRnNEQUFrQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFiVGZHUXNDQVFFQVFjRGZHUXM5Ly8vLy8vLy8vLysxa3dFQUxSY0FBQUVBQUFEY1d3TUFDUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCbk9BWkN3SUJBUUJCcU9BWkN5WC8vLy8vLy8vLy84T1RBUUF1RndBQUFRQUFBT0JiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdFNFJrTEFnRUJBRUdRNFJrTEpmLy8vLy8vLy8vL3E1SUJBRElYQUFBQkFBQUE0RnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZXpoR1FzQ0FRRUFRZmpoR1FzcC8vLy8vLy8vLy8veW1nRUFPaGNBQUFFQUFBRGtXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWRUaUdRczFBUUVBQUFFQUFBRG9Xd01BLy8vLy8vLy8vLy9ibWdFQU94Y0FBQUVBQUFEa1d3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRYnpqR1FzMUFRRUFBQUVBQUFEb1d3TUEvLy8vLy8vLy8vOEltd0VBUFJjQUFBRUFBQURzV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFhVGtHUXN4QVFFQUFBRUFBQUR3V3dNQS8vLy8vLy8vLy8rbGR3RUFnQmNBQUFFQUFBRFVXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJqT1VaQ3pFQkFRQUFBUUFBQU5oYUF3RC8vLy8vLy8vLy84dDBBUUNCRndBQUFRQUFBTlJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUgwNVJrTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy9ISUFCQUlJWEFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSGM1aGtMTlFFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL1hYSUJBSU1YQUFBQkFBQUExRm9EQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIRTV4a0xOUUVCQUFBQkFBQUEyRm9EQVAvLy8vLy8vLy8vVlg0QkFJUVhBQUFCQUFBQTFGb0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdzNkJrTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy96bk1CQUlVWEFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR1U2UmtMTlFFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL05YSUJBSVlYQUFBQkFBQUExRm9EQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIODZSa0xOUUVCQUFBQkFBQUEyRm9EQVAvLy8vLy8vLy8vaTNJQkFJY1hBQUFCQUFBQTFGb0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhrNmhrTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy9QblVCQUlnWEFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSE02eGtMTlFFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL2Vud0JBSWtYQUFBQkFBQUExRm9EQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHMDdCa0xNUUVCQUFBQkFBQUEyRm9EQVAvLy8vLy8vLy8vd25rQkFJb1hBQUFCQUFBQTFGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFaenRHUXMxQVFFQUFBRUFBQURZV2dNQS8vLy8vLy8vLy8vQWRnRUFpeGNBQUFFQUFBRFVXZ01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUVlUdUdRczFBUUVBQUFFQUFBRFlXZ01BLy8vLy8vLy8vLzllZHdFQWpCY0FBQUVBQUFEVVdnTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZXp1R1FzeEFRRUFBQUVBQUFEWVdnTUEvLy8vLy8vLy8vL3RkZ0VBalJjQUFBRUFBQURVV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCMU84WkN6RUJBUUFBQVFBQUFOaGFBd0QvLy8vLy8vLy8vNGgzQVFDT0Z3QUFBUUFBQU5SYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVHODhCa0xOUUVCQUFBQkFBQUEyRm9EQVAvLy8vLy8vLy8vM0h3QkFJOFhBQUFCQUFBQTFGb0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdrOFJrTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy9KM1FCQUpBWEFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR004aGtMUFFFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vLzYzQUJBSk1YQUFBREFBQUE5RnNEQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFGQUFBQUJBQUFBQUVBUWZUeUdRc3RBUUVBQUFFQUFBQUFYQU1BLy8vLy8vLy8vLytWb2dFQXhoY0FBQUVBQUFBRVhBTUFBZ0FBQUFNQUFBQVpBRUhjOHhrTEFRRUFRZWp6R1FzZC8vLy8vLy8vLy85eG93RUF5aGNBQUFFQUFBQUlYQU1BQVFBQUFERUFRZEQwR1FzZC8vLy8vLy8vLy8rT293RUF5eGNBQUFFQUFBQUlYQU1BQVFBQUFERUFRYmoxR1FzZC8vLy8vLy8vLy8rS293RUF6QmNBQUFFQUFBQUlYQU1BQVFBQUFERUFRYUQyR1FzbC8vLy8vLy8vLy8vdW13RUEvaGNBQUFFQUFBQU1YQU1BQXdBQUFBVUFBQUFGQUFBQUJBQkJpUGNaQ3lYLy8vLy8vLy8vLzB5TUFRRC9Gd0FBQVFBQUFBeGNBd0FEQUFBQUJRQUFBQVVBQUFBRUFFSHc5eGtMTGYvLy8vLy8vLy8veFhjQkFBRVpBQUFCQUFBQUVGd0RBQVVBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFCQnpQZ1pDd0lCQVFCQjJQZ1pDeTMvLy8vLy8vLy8vOUozQVFBQ0dRQUFBUUFBQUJCY0F3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBUWJUNUdRc0NBUUVBUWNENUdRc3QvLy8vLy8vLy8vL0pmQUVBQXhrQUFBRUFBQUFRWEFNQUJRQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBRUdjK2hrTEFnRUJBRUdvK2hrTExmLy8vLy8vLy8vLzdYVUJBQVFaQUFBQkFBQUFFRndEQUFVQUFBQUNBQUFBQXdBQUFBVUFBQUFkQUFBQUFRQkJoUHNaQ3dJQkFRQkJrUHNaQ3kzLy8vLy8vLy8vLzRWMUFRQUZHUUFBQVFBQUFCQmNBd0FGQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQVFlejdHUXNDQVFFQVFmajdHUXN0Ly8vLy8vLy8vLysyZkFFQUJoa0FBQUVBQUFBUVhBTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUVIVS9Ca0xBZ0VCQUVIZy9Ca0xMZi8vLy8vLy8vLy8yM1VCQUFjWkFBQUJBQUFBRUZ3REFBVUFBQUFDQUFBQUF3QUFBQVVBQUFBZEFBQUFBUUJCdlAwWkN3SUJBUUJCeVAwWkN5My8vLy8vLy8vLy8zSjFBUUFJR1FBQUFRQUFBQkJjQXdBRkFBQUFBZ0FBQUFNQUFBQUZBQUFBSFFBQUFBRUFRYVQrR1FzQ0FRRUFRYkQrR1F1akJmLy8vLy8vLy8vL053QUFBRUIvQmdBaEFBQUFGUUFBQUlDTUJ3QWlBQUFBQ0FBQUFPQ0JCZ0FqQUFBQUF3QUFBT0NFQmdBa0FBQUFGQUFBQUdDVUJ3QWxBQUFBQmdBQUFBQ0dCZ0FFQUFBQUV3QUFBRUNJQmdBbUFBQUFEQUFBQU9DYkJ3QWZBQUFBQWdBQUFHQ1BCZ0JFQUFBQURBQUFBQ0NRQmdBbkFBQUFCQUFBQUtDVUJnQUxBQUFBQ0FBQUFDQ1dCZ0FNQUFBQUZ3QUFBQ0NaQmdBTkFBQUFCUUFBQU1DaEJnQU9BQUFBQlFBQUFLQ2pCZ0FQQUFBQVR3QUFBR0NnQndBUUFBQUFJQUFBQUlDbEJnQVJBQUFBQndBQUFJQ3hCZ0FTQUFBQUJRQUFBQ0MwQmdBVEFBQUFBZ0FBQUFDMkJnQVVBQUFBS2dBQUFNQzJCZ0FWQUFBQUZBQUFBSURHQmdBV0FBQUFFUUFBQUFET0JnQVhBQUFBQkFBQUFHRFVCZ0JBQUFBQUFnQUFBT0RWQmdCQ0FBQUFDQUFBQUtEV0JnQkJBQUFBQWdBQUFLRFpCZ0JEQUFBQUJBQUFBR0RhQmdBWUFBQUFBd0FBQU9EYkJnQVpBQUFBQXdBQUFBRGRCZ0FhQUFBQUNRQUFBQ0RlQmdBYkFBQUFmZ0FBQUFDK0J3QWNBQUFBZ3dBQUFJRGhCZ0FGQUFBQUNBQUFBS0FTQndBZEFBQUFCd0FBQUtBVkJ3QWVBQUFBQXdBQUFFQVlCd0FnQUFBQTZBQUFBR0FaQndCRkFBQUFBZ0FBQUdCd0J3QkdBQUFBQXdBQUFDQnhCd0JIQUFBQUFnQUFBRUJ5QndCSUFBQUFBZ0FBQUFCekJ3QTFBQUFBRUFBQUFNQnpCd0EyQUFBQUNBQUFBTUI1QndBM0FBQUFBd0FBQU1COEJ3QTRBQUFBQXdBQUFPQjlCd0E1QUFBQUNRQUFBRUR0QndBNkFBQUFFd0FBQUFCL0J3QTdBQUFBQ0FBQUFDQ0dCd0E4QUFBQUF3QUFBQ0NKQndBOUFBQUFCQUFBQUVDS0J3QStBQUFBQ2dBQUFLRHdCd0EvQUFBQUFnQUFBTUNMQndBcEFBQUFGUUFBQUlDTUJ3QXFBQUFBREFBQUFPQ2JCd0F2QUFBQUF3QUFBQURkQmdCSkFBQUFBZ0FBQUFCekJ3QkI0SU1hQ3dOcEZ3RUFRYnFFR2dzTEFRRC8vLy8vWTRJQkFBRUFRWnFGR2dzTEFRRC8vLy8vditBQUFBSUFRZnFGR2dzTEFRRC8vLy8vNkY0QkFBUUFRZHFHR2dzTEFRRC8vLy8vbXBvQUFBZ0FRYnFIR2dzTEFRRC8vLy8vaWhnQUFCQUFRWnFJR2dzVkFRRC8vLy8vOTRnQkFBQUFBUUFCQUFBQVdGd0RBRUg0aUJvTEYvLy8vLy8vLy8vL2ZxWUJBQUFBQWdBQkFBQUFXRndEQUVIWWlSb0xDLy8vLy8vLy8vLy9hUmNCQUVHNmlob0xDd0VBLy8vLy8ycTVBQUFCQUVHYWl4b0xDd0VBLy8vLy8yYTVBQUFDQUVINml4b0xDUUVBLy8vLy8ya1hBUUJCMm93YUN3c0JBUC8vLy8rcUZ3RUFBUUJCdW8wYUN3c0JBUC8vLy8rbUZ3RUFBZ0JCbW80YUN3c0JBUC8vLy85dzlRQUFCQUJCK280YUN3c0JBUC8vLy84a0Z3QUFDQUJCMm84YUN4VUJBUC8vLy85V25RRUFBQUFCQUFFQUFBQmdYQU1BUWJpUUdnc0wvLy8vLy8vLy8vL2ROd0VBUVpxUkdnc0pBUUQvLy8vL2FSY0JBRUg2a1JvTEN3RUEvLy8vLytQMUFBQUNBRUhha2hvTEN3RUEvLy8vL3p6eUFBQUVBRUc2a3hvTEN3RUEvLy8vL3pYeUFBQUlBRUdhbEJvTEN3RUEvLy8vL3lzaUFBQVFBRUg2bEJvTEZRRUEvLy8vLzJvSkFBQkFBQUFBQVFBQUFFUmNBd0JCMnBVYUN3c0JBUC8vLy85YkNRQUFnQUJCdXBZYUN3d0JBUC8vLy85TENRQUFBQUVBUVpxWEdnc01BUUQvLy8vL1Jna0FBQUFDQUVINmx4b0xGUUVBLy8vLy96SUpBQUFBQkFBQUFRQUFBR1JjQXdCQjJwZ2FDd3dCQVAvLy8vOTRDUUFBQUFnQVFicVpHZ3NkQVFELy8vLy9KUWtBQUFBUUFBQUJBQUFBVUZ3REFBRUFBQUJVWEFNQVFabWFHZ3NlQlFFQS8vLy8vNDF4QVFBQUVBQUFBUUFBQUZCY0F3QUJBQUFBVkZ3REFFSDVtaG9MSGdVQkFQLy8vLy9uSEFFQUFDQUFBQUVBQUFCUVhBTUFBUUFBQUZSY0F3QkIyWnNhQ3g0RkFRRC8vLy8vYVh3QkFBQWdBQUFCQUFBQVVGd0RBQUVBQUFCVVhBTUFRYm1jR2dzZUJRRUEvLy8vL3hzY0FRQUFRQUFBQVFBQUFGQmNBd0FCQUFBQVZGd0RBRUdablJvTEhnVUJBUC8vLy8vemV3RUFBRUFBQUFFQUFBQlFYQU1BQVFBQUFGUmNBd0JCK1owYUN4NEZBUUQvLy8vL0pSc0JBQUNBQUFBQkFBQUFVRndEQUFFQUFBQlVYQU1BUWRtZUdnc0tCUUVBLy8vLy8ya1hBUUJCdXA4YUN4VUJBUC8vLy8vWUdBRUFBUUFBQUFFQUFBQndYQU1BUVpxZ0dnc1ZBUUQvLy8vL09Yc0JBQUFBQUFBQ0FBQUFkRndEQUVING9Cb0xGLy8vLy8vLy8vLy81bmtCQUFFQUFBQUNBQUFBZEZ3REFFSFlvUm9MRi8vLy8vLy8vLy8vcUhrQkFBSUFBQUFDQUFBQWRGd0RBRUc0b2hvTEYvLy8vLy8vLy8vL0szTUJBQVFBQUFBQ0FBQUFkRndEQUVHWW94b0xGLy8vLy8vLy8vLy93M1VCQUFnQUFBQUNBQUFBZEZ3REFFSDRveG9MRi8vLy8vLy8vLy8vSTNVQkFCQUFBQUFDQUFBQWRGd0RBRUhZcEJvTEYvLy8vLy8vLy8vL0IzVUJBQ0FBQUFBQ0FBQUFkRndEQUVHNHBSb0xGLy8vLy8vLy8vLy90SGtCQUVBQUFBQUNBQUFBZEZ3REFFR1lwaG9MRi8vLy8vLy8vLy8vcEhrQkFJQUFBQUFDQUFBQWRGd0RBRUg0cGhvTEYvLy8vLy8vLy8vLzluUUJBQUFCQUFBQkFBQUFmRndEQUVIWXB4b0xGLy8vLy8vLy8vLy9aWFVCQUFBQ0FBQUJBQUFBZkZ3REFFRzRxQm9MRi8vLy8vLy8vLy8vL1c4QkFBQUVBQUFCQUFBQWdGd0RBRUdZcVJvTEYvLy8vLy8vLy8vL0RWSUFBQUVBQUFBQkFBQUFoRndEQUVINHFSb0xGLy8vLy8vLy8vLy82MUVBQUFJQUFBQUJBQUFBaEZ3REFFSFlxaG9MRi8vLy8vLy8vLy8vKzFFQUFBUUFBQUFCQUFBQWhGd0RBRUc0cXhvTEYvLy8vLy8vLy8vLzJWRUFBQWdBQUFBQkFBQUFoRndEQUVHWXJCb0xDdi8vLy8vLy8vLy9RcUVBUWZxc0dnc0xBUUQvLy8vLzZvSUJBQUVBUWRxdEdnc0xBUUQvLy8vLzlJSUJBQUlBUWJxdUdnc0xBUUQvLy8vL042OEJBQU1BUVpxdkdnc0xBUUQvLy8vL1BJRUJBQVFBUWZxdkdnc0xBUUQvLy8vLzc0SUJBQVVBUWRxd0dnc0xBUUQvLy8vL2xxa0JBQVlBUWJxeEdnc0xBUUQvLy8vL3Bha0JBQWNBUVpxeUdnc1ZBUUQvLy8vLzZSQUFBQUFBQUFBQkFBQUFSRndEQUVINnNob0xGUUVBLy8vLy8rVzlBQUFCQUFBQUFRQUFBSWhjQXdCQjJyTWFDeFVCQVAvLy8vOFJyQUFBQWdBQUFBRUFBQUNJWEFNQVFicTBHZ3NWQVFELy8vLy9Cd2tBQUFNQUFBQUJBQUFBakZ3REFFR2F0Um9MRlFFQS8vLy8vMThsQUFBRUFBQUFBUUFBQUVSY0F3QkIrclVhQ3hVQkFQLy8vLzluNndBQUJRQUFBQUVBQUFCRVhBTUFRZHEyR2dzVkFRRC8vLy8vZ01BQUFBWUFBQUFCQUFBQWNGd0RBRUc2dHhvTEZRRUEvLy8vLy9abEFRQ1RGQUFBQVFBQUFKQmNBd0JCbUxnYUN4Zi8vLy8vLy8vLy8wUm1BUUNVRkFBQUFRQUFBSkJjQXdCQitMZ2FDeGYvLy8vLy8vLy8vOEprQVFEQkZBQUFBZ0FBQUpSY0F3QkIyTGthQ3hmLy8vLy8vLy8vL3cxM0FRREJGQUFBQWdBQUFKUmNBd0JCdUxvYUN4Zi8vLy8vLy8vLy8zSmtBUURDRkFBQUFnQUFBSlJjQXdCQm1Mc2FDeGYvLy8vLy8vLy8vN0IyQVFEQ0ZBQUFBZ0FBQUpSY0F3QkIrTHNhQ3hmLy8vLy8vLy8vL3lwaEFRRERGQUFBQWdBQUFKUmNBd0JCMkx3YUN4Zi8vLy8vLy8vLy95RnpBUURERkFBQUFnQUFBSlJjQXdCQnVMMGFDeGYvLy8vLy8vLy8vek5oQVFERUZBQUFBZ0FBQUpSY0F3QkJtTDRhQ3hmLy8vLy8vLy8vLzR0ekFRREVGQUFBQWdBQUFKUmNBd0JCK0w0YUN4Zi8vLy8vLy8vLy8rdGhBUURGRkFBQUFnQUFBSlJjQXdCQjJMOGFDeGYvLy8vLy8vLy8vMngwQVFERkZBQUFBZ0FBQUpSY0F3QkJ1TUFhQ3hmLy8vLy8vLy8vL3pSb0FRREdGQUFBQWdBQUFKUmNBd0JCbU1FYUN4Zi8vLy8vLy8vLy93bDhBUURHRkFBQUFnQUFBSlJjQXdCQitNRWFDeGYvLy8vLy8vLy8vMDV0QVFEMEZBQUFBUUFBQUp4Y0F3QkIyTUlhQ3hmLy8vLy8vLy8vLy9OdEFRRDFGQUFBQVFBQUFKeGNBd0JCdU1NYUN3ci8vLy8vLy8vLy82ckxBRUdheEJvTEZRRUEvLy8vLzQ2K0FRQUJBQUFBQVFBQUFLQmNBd0JCK3NRYUN4VUJBUC8vLy85NXVRRUFBZ0FBQUFFQUFBQ2dYQU1BUWRyRkdnc2RBUUQvLy8vL1lia0JBT1FVQUFBQkFBQUFwRndEQUFJQUFBQ29YQU1BUWJuR0dnc2VCUUVBLy8vLy96VnhBUURrRkFBQUFRQUFBS1JjQXdBQ0FBQUFxRndEQUVHWnh4b0xGZ1VCQVAvLy8vK09HZ0VBQUFBQUFBRUFBQUJFWEFNQVFmckhHZ3NWQVFELy8vLy9xY1VCQUFFQUFBQUJBQUFBUkZ3REFFSGF5Qm9MRlFFQS8vLy8vNTZwQVFBQ0FBQUFBUUFBQUhCY0F3QkJ1c2thQ3gwQkFQLy8vLytqdVFBQUF3QUFBQUVBQUFCUVhBTUFBUUFBQUZSY0F3QkJtY29hQ3g0RkFRRC8vLy8vdTNjQkFBTUFBQUFCQUFBQVVGd0RBQUVBQUFCVVhBTUFRZm5LR2dzSkJRRUEvLy8vL3lBd0FFSGF5eG9MQ3dFQS8vLy8vMDBXQUFBQkFFRzZ6Qm9MRlFFQS8vLy8veHk4QUFBQ0FBQUFBUUFBQUVSY0F3QkJtczBhQ3hVQkFQLy8vLy9URlFBQUF3QUFBQUVBQUFCRVhBTUFRZnJOR2dzTEFRRC8vLy8vaTRrQUFBUUFRZHJPR2dzTEFRRC8vLy8vSklrQUFBVUFRYnJQR2dzVkFRRC8vLy8vak84QUFBWUFBQUFDQUFBQVdGMERBRUdhMEJvTEN3RUEvLy8vLzF1ckFBQUhBRUg2MEJvTEZRRUEvLy8vLzJWRUFRQUlBQUFBQVFBQUFHQmRBd0JCMnRFYUN4VUJBUC8vLy84V01RQUFDUUFBQUFFQUFBQkVYQU1BUWJyU0dnc1ZBUUQvLy8vLzVHd0FBQW9BQUFBQkFBQUFaRndEQUVHYTB4b0xDd0VBLy8vLy84NGxBUUFMQUVINjB4b0xIUUVBLy8vLy8rRjZBQUFNQUFBQUFRQUFBRVJjQXdBQ0FBQUFaRjBEQUVIWjFCb0xIZ01CQVAvLy8vL01hUUVBMEJRQUFBSUFBQUNVWEFNQUFnQUFBR3hkQXdCQnVOVWFDeC8vLy8vLy8vLy8vd3lBQVFEUUZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFR1kxaG9MSC8vLy8vLy8vLy8veEdrQkFORVVBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRZmpXR2dzZi8vLy8vLy8vLy84RWdBRUEwUlFBQUFJQUFBQ1VYQU1BQWdBQUFHeGRBd0JCMk5jYUN4Ly8vLy8vLy8vLy8xcHBBUURhRkFBQUFnQUFBSlJjQXdBQ0FBQUFiRjBEQUVHNDJCb0xILy8vLy8vLy8vLy9PMzRCQU5vVUFBQUNBQUFBbEZ3REFBSUFBQUJzWFFNQVFaalpHZ3NmLy8vLy8vLy8vLy9KWmdFQTJ4UUFBQUlBQUFDVVhBTUFBZ0FBQUd4ZEF3QkIrTmthQ3gvLy8vLy8vLy8vLy9CNUFRRGJGQUFBQWdBQUFKUmNBd0FDQUFBQWJGMERBRUhZMmhvTEgvLy8vLy8vLy8vL1Vta0JBTjRVQUFBQ0FBQUFsRndEQUFJQUFBQnNYUU1BUWJqYkdnc2YvLy8vLy8vLy8vL21mUUVBM2hRQUFBSUFBQUNVWEFNQUFnQUFBR3hkQXdCQm1Od2FDeC8vLy8vLy8vLy8veXRqQVFEZkZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFSDQzQm9MSC8vLy8vLy8vLy8vclhVQkFOOFVBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRZGpkR2dzZi8vLy8vLy8vLy8rbWVnQUE1UlFBQUFFQUFBQ2tYQU1BQWdBQUFLaGNBd0JCdWQ0YUN4NEZBUUQvLy8vL1Ftd0JBT1VVQUFBQkFBQUFwRndEQUFJQUFBQ29YQU1BUVpuZkdnc1dCUUVBLy8vLy8wNW5BUUFKRlFBQUFRQUFBSFJkQXdCQitOOGFDeC8vLy8vLy8vLy8vOFZzQVFBYUZRQUFBUUFBQUp4Y0F3QUJBQUFBZUYwREFFSFo0Qm9MSGdRQkFQLy8vLy9zbFFFQTVSVUFBQUVBQUFCOFhRTUFBUUFBQUlCZEF3QkJ1T0VhQ3gvLy8vLy8vLy8vLzJxR0FRQXdGd0FBQVFBQUFJUmRBd0FCQUFBQWlGMERBRUdZNGhvTEgvLy8vLy8vLy8vL1hJWUJBREVYQUFBQkFBQUFoRjBEQUFFQUFBQ0lYUU1BUWZqaUdnc1gvLy8vLy8vLy8vODByd0VBQUFBQUFBSUFBQUNNWFFNQVFkcmpHZ3NWQVFELy8vLy9JcThCQUFFQUFBQURBQUFBbEYwREFFRzY1Qm9MQ3dFQS8vLy8vd3V2QVFBQ0FFR2E1Um9MRlFFQS8vLy8vNmd2QVFBREFBQUFBZ0FBQUtCZEF3QkIrdVVhQ3hVQkFQLy8vLytET2dBQUJBQUFBQUlBQUFDb1hRTUFRZHJtR2dzVkFRRC8vLy8vYkhzQUFBVUFBQUFDQUFBQXNGMERBRUc2NXhvTEZRRUEvLy8vLzBCZEFRQUdBQUFBQVFBQUFMaGRBd0JCbXVnYUN4VUJBUC8vLy85cEZ3RUFBQUFBQUFFQUFBQndYQU1BUWZyb0dnc1ZBUUQvLy8vL2t5QUJBQUVBQUFBQkFBQUFjRndEQUVIYTZSb0xGUUVBLy8vLy8xaWFBQUFDQUFBQUFRQUFBSEJjQXdCQnV1b2FDeFVCQVAvLy8vK3RQUUFBQXdBQUFBRUFBQUJ3WEFNQVFacnJHZ3NWQVFELy8vLy9FVG9CQUFRQUFBQUJBQUFBY0Z3REFFSDY2eG9MRlFFQS8vLy8veUVZQUFBQUFBQUFBUUFBQUhCY0F3QkIydXdhQ3hVQkFQLy8vLy8yaHdBQUFRQUFBQUVBQUFCd1hBTUFRYnJ0R2dzSUFRRC8vLy8vUXFFQVFacnVHZ3NWQVFELy8vLy9RZUlBQUFFQUFBQUJBQUFBUkZ3REFFSDY3aG9MRlFFQS8vLy8vOVRoQUFBQ0FBQUFBUUFBQUVSY0F3QkIydThhQ3hVQkFQLy8vLzlKNGdBQUF3QUFBQUVBQUFCRVhBTUFRYnJ3R2dzVkFRRC8vLy8vR3JZQkFBUUFBQUFCQUFBQVJGd0RBRUdhOFJvTEZRRUEvLy8vLzk2NkFBQUZBQUFBQVFBQUFFUmNBd0JCK3ZFYUN4VUJBUC8vLy84NzRnQUFCZ0FBQUFFQUFBQzhYUU1BUWRyeUdnc1ZBUUQvLy8vL3p1RUFBQWNBQUFBQkFBQUF2RjBEQUVHNjh4b0xGUUVBLy8vLy8wN2lBQUFJQUFBQUFRQUFBTHhkQXdCQm12UWFDeFVCQVAvLy8vL2M0UUFBQ1FBQUFBRUFBQUM4WFFNQVFmcjBHZ3NWQVFELy8vLy9ZYmdCQUFvQUFBQUJBQUFBdkYwREFFSGE5Um9MRlFFQS8vLy8vNlc4QVFBTEFBQUFBUUFBQUx4ZEF3QkJ1dllhQ3hVQkFQLy8vLytsdHdFQURBQUFBQUVBQUFDOFhRTUFRWnIzR2dzVkFRRC8vLy8vRnJZQkFBMEFBQUFCQUFBQXZGMERBRUg2OXhvTEZRRUEvLy8vLzJpNEFRQU9BQUFBQVFBQUFMeGRBd0JCMnZnYUN4VUJBUC8vLy84Z3RnRUFEd0FBQUFFQUFBQzhYUU1BUWJyNUdnc1ZBUUQvLy8vLys3b0FBQkFBQUFBQkFBQUF2RjBEQUVHYStob0xGUUVBLy8vLy8vRzZBQUFSQUFBQUFRQUFBTHhkQXdCQit2b2FDeFVCQVAvLy8vL1Z1Z0FBRWdBQUFBRUFBQUM4WFFNQVFkcjdHZ3NWQVFELy8vLy9CN3NBQUJNQUFBQUJBQUFBdkYwREFFRzYvQm9MRlFFQS8vLy8vK202QUFBVUFBQUFBUUFBQUx4ZEF3QkJtdjBhQ3hVQkFQLy8vLy92MEFBQUZRQUFBQUVBQUFCRVhBTUFRZnI5R2dzVkFRRC8vLy8veGRBQUFCWUFBQUFCQUFBQVJGd0RBRUhhL2hvTEZRRUEvLy8vLzdUUUFBQVhBQUFBQVFBQUFFUmNBd0JCdXY4YUN4VUJBUC8vLy8vMzBBQUFHQUFBQUFFQUFBQkVYQU1BUVpxQUd3c1ZBUUQvLy8vLzZkQUFBQmtBQUFBQkFBQUF2RjBEQUVINmdCc0xGUUVBLy8vLy83L1FBQUFhQUFBQUFRQUFBTHhkQXdCQjJvRWJDeFVCQVAvLy8vK3YwQUFBR3dBQUFBRUFBQUM4WFFNQVFicUNHd3NWQVFELy8vLy96ZEFBQUJ3QUFBQUJBQUFBdkYwREFFR2FneHNMRlFFQS8vLy8vN3ZRQUFBZEFBQUFBUUFBQUx4ZEF3QkIrb01iQ3hVQkFQLy8vLzg0MEFBQUhnQUFBQUVBQUFCRVhBTUFRZHFFR3dzVkFRRC8vLy8vRXRBQUFCOEFBQUFCQUFBQVJGd0RBRUc2aFJzTEZRRUEvLy8vLy83UEFBQWdBQUFBQVFBQUFFUmNBd0JCbW9ZYkN4VUJBUC8vLy85QjBBQUFJUUFBQUFFQUFBQkVYQU1BUWZxR0d3c1ZBUUQvLy8vL0o5QUFBQ0lBQUFBQkFBQUF2RjBEQUVIYWh4c0xGUUVBLy8vLy96SFFBQUFqQUFBQUFRQUFBTHhkQXdCQnVvZ2JDeFVCQVAvLy8vOEwwQUFBSkFBQUFBRUFBQUM4WFFNQVFacUpHd3NWQVFELy8vLy8rTThBQUNVQUFBQUJBQUFBdkYwREFFSDZpUnNMRlFFQS8vLy8veHZRQUFBbUFBQUFBUUFBQUx4ZEF3QkIyb29iQ3hVQkFQLy8vLzhHMEFBQUp3QUFBQUVBQUFDOFhRTUFRYnFMR3dzVkFRRC8vLy8vSWRBQUFDZ0FBQUFCQUFBQXdGMERBRUdhakJzTEZRRUEvLy8vLzlqUUFBQXBBQUFBQVFBQUFNQmRBd0JCK293YkN4VUJBUC8vLy84MmdRRUFBQUFBQUFFQUFBQndYQU1BUWRxTkd3c1ZBUUQvLy8vL202OEJBQUVBQUFBQkFBQUFjRndEQUVHNmpoc0xGUUVBLy8vLy83T3BBUUFDQUFBQUFRQUFBSEJjQXdCQm1vOGJDeFVCQVAvLy8vK0tyd0VBQXdBQUFBRUFBQUJ3WEFNQVFmcVBHd3NWQVFELy8vLy9nSzhCQUFRQUFBQUJBQUFBY0Z3REFFSGFrQnNMRlFFQS8vLy8vNVd2QVFBRkFBQUFBUUFBQUhCY0F3QkJ1cEViQ3hVQkFQLy8vLytJcndFQUJnQUFBQUVBQUFCd1hBTUFRWnFTR3dzVkFRRC8vLy8vZjY4QkFBY0FBQUFCQUFBQWNGd0RBRUg2a2hzTEZRRUEvLy8vLzZJRUFBQUlBQUFBQVFBQUFIQmNBd0JCMnBNYkN4VUJBUC8vLy8vVUt3RUFDUUFBQUFFQUFBQndYQU1BUWJxVUd3c1ZBUUQvLy8vL1doTUFBQW9BQUFBQkFBQUFjRndEQUVHYWxSc0xGUUVBLy8vLy8xMFRBQUFMQUFBQUFRQUFBSEJjQXdCQitwVWJDeFVCQVAvLy8vOWlFd0FBREFBQUFBRUFBQUJ3WEFNQVFkcVdHd3NWQVFELy8vLy9JOUVBQUEwQUFBQUJBQUFBY0Z3REFFRzZseHNMRlFFQS8vLy8vNUcvQUFBT0FBQUFBUUFBQUhCY0F3QkJtcGdiQ3hVQkFQLy8vLzk2cndFQUR3QUFBQUVBQUFCd1hBTUFRZnFZR3dzVkFRRC8vLy8vWVJNQUFCQUFBQUFCQUFBQWNGd0RBRUhhbVJzTEZRRUEvLy8vLzVTdkFRQVJBQUFBQVFBQUFIQmNBd0JCdXBvYkN4VUJBUC8vLy8rSHJ3RUFFZ0FBQUFFQUFBQndYQU1BUVpxYkd3c1ZBUUQvLy8vL1hZQUJBQk1BQUFBQkFBQUFjRndEQUVINm14c0xGUUVBLy8vLy8vRzFBUUFBQUFBQUFRQUFBSEJjQXdCQjJwd2JDeFVCQVAvLy8vOCt0d0VBQVFBQUFBRUFBQUJ3WEFNQVFicWRHd3NWQVFELy8vLy81N1VCQUFJQUFBQUJBQUFBY0Z3REFFR2FuaHNMRlFFQS8vLy8vek8zQVFBREFBQUFBUUFBQUhCY0F3QkIrcDRiQ3hVQkFQLy8vLytqdUFFQUJBQUFBQUVBQUFCd1hBTUFRZHFmR3dzVkFRRC8vLy8vc2JnQkFBVUFBQUFCQUFBQWNGd0RBRUc2b0JzTEZRRUEvLy8vLys3RkFRQUdBQUFBQVFBQUFIQmNBd0JCbXFFYkN4VUJBUC8vLy84SXRnRUFCd0FBQUFFQUFBQndYQU1BUWZxaEd3c1ZBUUQvLy8vL1Y3Y0JBQWdBQUFBQkFBQUFjRndEQUVIYW9oc0xGUUVBLy8vLy80SytBUUFKQUFBQUFRQUFBSEJjQXdCQnVxTWJDeFVCQVAvLy8vLzd0UUVBQ2dBQUFBRUFBQUJ3WEFNQVFacWtHd3NWQVFELy8vLy9TYmNCQUFzQUFBQUJBQUFBY0Z3REFFSDZwQnNMRlFFQS8vLy8vM1MrQVFBTUFBQUFBUUFBQUhCY0F3QkIycVViQ3hVQkFQLy8vLy94UEFBQURRQUFBQUVBQUFCd1hBTUFRYnFtR3dzVkFRRC8vLy8vL3p3QUFBNEFBQUFCQUFBQWNGd0RBRUdhcHhzTEZRRUEvLy8vLzlTNUFRQVBBQUFBQVFBQUFIQmNBd0JCK3FjYkN4VUJBUC8vLy8rVXZBRUFFQUFBQUFFQUFBQndYQU1BUWRxb0d3c0pBUUQvLy8vL0k2b0JBRUc2cVJzTEN3RUEvLy8vLytSZUFRQUJBRUdhcWhzTEN3RUEvLy8vL3ppQkFRQUNBRUg2cWhzTEN3RUEvLy8vLzJxQ0FRQURBRUhhcXhzTEZRRUEvLy8vLzkva0FBQUFBQUFBQVFBQUFNUmRBd0JCdUt3YkN4Zi8vLy8vLy8vLy94T2dBQUFCQUFBQUFRQUFBTVJkQXdCQm1LMGJDeGYvLy8vLy8vLy8vMjZDQVFBQUFBQUFBUUFBQU1oZEF3QkIrSzBiQ3hmLy8vLy8vLy8vLzFXQkFRQUJBQUFBQVFBQUFNaGRBd0JCMks0YkN4Zi8vLy8vLy8vLy84MnFBUUFDQUFBQUFRQUFBTWhkQXdCQnVLOGJDeGYvLy8vLy8vLy8vMTZCQVFBREFBQUFBUUFBQU1oZEF3QkJtTEFiQ3hmLy8vLy8vLy8vL3crcUFRQUVBQUFBQVFBQUFNaGRBd0JCK0xBYkN4Zi8vLy8vLy8vLy93T3FBUUFGQUFBQUFRQUFBTWhkQXdCQjJMRWJDeGYvLy8vLy8vLy8veUZxQVFBR0FBQUFBUUFBQU1oZEF3QkJ1TEliQ3hmLy8vLy8vLy8vLy82dUFRQUhBQUFBQVFBQUFNaGRBd0JCbUxNYkN4Zi8vLy8vLy8vLy84aXFBUUFBQUFBQUFRQUFBTVJkQXdCQitMTWJDeGYvLy8vLy8vLy8vMUJ4QVFBQkFBQUFBUUFBQU1SZEF3QkIyTFFiQ3hmLy8vLy8vLy8vLzBlQkFRQUFBQUFBQVFBQUFNaGRBd0JCdUxVYkN4Zi8vLy8vLy8vLy8xUnhBUUFCQUFBQUFRQUFBTWhkQXdCQm1MWWJDeGYvLy8vLy8vLy8vMHlCQVFBQ0FBQUFBUUFBQU1oZEF3QkIrTFliQ3hmLy8vLy8vLy8vLzNhQ0FRQURBQUFBQVFBQUFNaGRBd0JCMkxjYkN4Zi8vLy8vLy8vLy93UVpBQUFBQUFBQUFRQUFBTXhkQXdCQnVyZ2JDeFVCQVAvLy8vK1RHUUFBQVFBQUFBRUFBQURNWFFNQVFacTVHd3NkQVFELy8vLy9MSUVCQUFJQUFBQUJBQUFBekYwREFBRUFBQURRWFFNQVFmaTVHd3NYLy8vLy8vLy8vLyttQ2dBQUFBQUFBQUVBQUFCd1hBTUFRZHE2R3dzVkFRRC8vLy8vbkFvQUFBRUFBQUFCQUFBQWNGd0RBRUc2dXhzTEZRRUEvLy8vLzFqdkFBQUNBQUFBQVFBQUFIQmNBd0JCbXJ3YkN4VUJBUC8vLy85OUZRQUFBQUFBQUFFQUFBQndYQU1BUWZxOEd3c1ZBUUQvLy8vL2h4VUFBQUVBQUFBQkFBQUFjRndEQUVIYXZSc0xGUUVBLy8vLy83TExBQUFDQUFBQUFRQUFBSEJjQXdCQnVyNGJDeFVCQVAvLy8vK2FOQUFBQXdBQUFBRUFBQUJ3WEFNQVFacS9Hd3NWQVFELy8vLy90MklBQUFRQUFBQUJBQUFBY0Z3REFFSDZ2eHNMRlFFQS8vLy8vd0wxQUFBRkFBQUFBUUFBQUhCY0F3QkIyc0FiQ3hVQkFQLy8vLzgwN3dBQUJnQUFBQUVBQUFCd1hBTUFRYnJCR3dzVkFRRC8vLy8vUis4QUFBY0FBQUFCQUFBQWNGd0RBRUdhd2hzTEZRRUEvLy8vLzY2akFRQTBGd0FBQVFBQUFOUmRBd0JCK3NJYkN4VUJBUC8vLy84Tm9nQUFBQUFBQUFFQUFBQkVYQU1BUWRyREd3c1ZBUUQvLy8vL2llTUFBQUVBQUFBQkFBQUFSRndEQUVHNnhCc0xGUUVBLy8vLy8zY3JBUUFEQUFBQUFRQUFBSEJlQXdCQm1zVWJDeFVCQVAvLy8vK0hLd0VBQkFBQUFBRUFBQUIwWGdNQVFmckZHd3NWQVFELy8vLy9nMEFCQUFVQUFBQUJBQUFBUkZ3REFFSGF4aHNMRlFFQS8vLy8vMDVDQVFBR0FBQUFBUUFBQUVSY0F3QkJ1c2NiQ3hVQkFQLy8vLytKUVFFQUJ3QUFBQVlBQUFDQVhnTUFRWnJJR3dzVkFRRC8vLy8vRmtFQkFBZ0FBQUFDQUFBQXRGd0RBRUg2eUJzTEZRRUEvLy8vLzh4c0FBQUpBQUFBQlFBQUFLQmVBd0JCMnNrYkN4VUJBUC8vLy8rOEVRQUFDZ0FBQUFVQUFBREFYZ01BUWJyS0d3c1ZBUUQvLy8vLzFXd0FBQXNBQUFBQkFBQUFpRndEQUVHYXl4c0xGUUVBLy8vLy8rTnlBQUFNQUFBQUFRQUFBSWhjQXdCQitzc2JDeFVCQVAvLy8vOHdNQUVBRFFBQUFBRUFBQUNJWEFNQVFkck1Hd3NWQVFELy8vLy9pMThBQUE0QUFBQUJBQUFBaUZ3REFFRzZ6UnNMRlFFQS8vLy8vejB3QVFBUEFBQUFBUUFBQUVSY0F3QkJtczRiQ3hVQkFQLy8vLzhpTUFFQUVBQUFBQUVBQUFCRVhBTUFRZnJPR3dzVkFRRC8vLy8vSnVBQUFCRUFBQUFCQUFBQVJGd0RBRUhhenhzTEZRRUEvLy8vL3pWQ0FRQVNBQUFBQVFBQUFPUmRBd0JCdXRBYkN4VUJBUC8vLy8vN29RQUFFd0FBQUFFQUFBRGtYUU1BUVpyUkd3c1ZBUUQvLy8vL1pzd0FBQlFBQUFBQkFBQUFSRndEQUVINjBSc0xGUUVBLy8vLy94L1JBQUFXQUFBQUFRQUFBRVJjQXdCQjJ0SWJDeFVCQVAvLy8vODFzQUFBRndBQUFBRUFBQUJFWEFNQVFiclRHd3NMQVFELy8vLy9nazBBQUJnQVFaclVHd3NMQVFELy8vLy9GdVFBQUJrQVFmclVHd3NMQVFELy8vLy8zMEFCQUJvQVFkclZHd3NMQVFELy8vLy8va0FCQUJzQVFicldHd3NMQVFELy8vLy9FRUVCQUJ3QVFaclhHd3NMQVFELy8vLy80aEVBQUIwQVFmclhHd3NWQVFELy8vLy9lN3dBQUI0QUFBQUJBQUFBY0Z3REFFSGEyQnNMRlFFQS8vLy8vNlBrQUFBZkFBQUFBUUFBQUhCY0F3QkJ1dGtiQ3hVQkFQLy8vLy9MNHdBQUlBQUFBQUVBQUFCd1hBTUFRWnJhR3dzVkFRRC8vLy8vZnpRQUFDRUFBQUFCQUFBQWNGd0RBRUg2MmhzTEZRRUEvLy8vLzhSQUFRQWlBQUFBQVFBQUFIQmNBd0JCMnRzYkN4VUJBUC8vLy84azVBQUFKQUFBQUFNQUFBRFVYZ01BUWJyY0d3c1ZBUUQvLy8vL1R1TUFBQ1VBQUFBQkFBQUFjRndEQUVHYTNSc0xGUUVBLy8vLy83Qk5BQUFtQUFBQUFnQUFBT0JlQXdCQit0MGJDeFVCQVAvLy8vKzlUUUFBSndBQUFBRUFBQUJ3WEFNQVFkcmVHd3NWQVFELy8vLy82MEFCQUNnQUFBQUNBQUFBNEY0REFFRzYzeHNMRlFFQS8vLy8vL1pBQVFBcEFBQUFBd0FBQU5SZUF3QkJtdUFiQ3hVQkFQLy8vLzltRVFBQUtnQUFBQUVBQUFCRVhBTUFRZnJnR3dzVkFRRC8vLy8vK2hFQUFDc0FBQUFCQUFBQVJGd0RBRUhhNFJzTEZRRUEvLy8vLzhtQ0FRQkFFQUFBQVFBQUFPaGVBd0JCdXVJYkN4VUJBUC8vLy8rSWdnRUFRUkFBQUFFQUFBRG9YZ01BUVpyakd3c1ZBUUQvLy8vL3NvSUJBRUlRQUFBQkFBQUE2RjREQUVINjR4c0xGUUVBLy8vLy83K0NBUUJERUFBQUFRQUFBT2hlQXdCQjJ1UWJDeFVCQVAvLy8vK2xnZ0VBUkJBQUFBRUFBQURvWGdNQVFicmxHd3NkQVFELy8vLy9WTXdBQUVBUkFBQUNBQUFBN0Y0REFBRUFBQUQwWGdNQVFabm1Hd3NlQXdFQS8vLy8vK040QVFCQUVRQUFBZ0FBQU94ZUF3QUJBQUFBOUY0REFFSDU1aHNMSGdNQkFQLy8vLytBekFBQVFSRUFBQUlBQUFEc1hnTUFBUUFBQVBSZUF3QkIyZWNiQ3g0REFRRC8vLy8vRm5rQkFFRVJBQUFDQUFBQTdGNERBQUVBQUFEMFhnTUFRYm5vR3dzZUF3RUEvLy8vLzBYTUFBQkNFUUFBQWdBQUFPeGVBd0FCQUFBQTlGNERBRUdaNlJzTEhnTUJBUC8vLy8vUmVBRUFRaEVBQUFJQUFBRHNYZ01BQVFBQUFQUmVBd0JCK2VrYkN4NERBUUQvLy8vL2Njd0FBRU1SQUFBQ0FBQUE3RjREQUFFQUFBRDBYZ01BUWRucUd3c2VBd0VBLy8vLy93UjVBUUJERVFBQUFnQUFBT3hlQXdBQkFBQUE5RjREQUVHNTZ4c0xIZ01CQVAvLy8vODJ6QUFBUkJFQUFBSUFBQURzWGdNQUFRQUFBUFJlQXdCQm1ld2JDeDREQVFELy8vLy92M2dCQUVRUkFBQUNBQUFBN0Y0REFBRUFBQUQwWGdNQVFmbnNHd3NlQXdFQS8vLy8vK1VRQUFCSUVRQUFBUUFBQVBoZUF3QUJBQUFBL0Y0REFFSFo3UnNMSGdNQkFQLy8vLzgvS3dFQVNSRUFBQUVBQUFENFhnTUFBUUFBQVB4ZUF3QkJ1ZTRiQ3g0REFRRC8vLy8vZkJFQUFFb1JBQUFEQUFBQUFGOERBQU1BQUFBTVh3TUFRWm52R3dzZUF3RUEvLy8vLzFWNkFRQlFFUUFBQVFBQUFJUmNBd0FCQUFBQUdGOERBRUg0N3hzTEgvLy8vLy8vLy8vL0NCSUFBRllSQUFBQkFBQUFIRjhEQUFFQUFBQWdYd01BUWRud0d3c2VBd0VBLy8vLy8zSVJBQUJZRVFBQUFRQUFBQ1JmQXdBQkFBQUFLRjhEQUVHNThSc0xIZ01CQVAvLy8vOWVlZ0VBWEJFQUFBRUFBQUNFWEFNQUFRQUFBQmhmQXdCQm1QSWJDdzcvLy8vLy8vLy8vNHVyQVFDQUV3QkJzUEliQ3djQkFBQUErRjBEQUVINDhoc0xEdi8vLy8vLy8vLy9ySzBCQUlFVEFFR1E4eHNMQndFQUFBRDRYUU1BUWRqekd3c08vLy8vLy8vLy8vOHRyUUVBZ2hNQVFmRHpHd3NIQVFBQUFQaGRBd0JCdVBRYkN3Ny8vLy8vLy8vLy8reXNBUUNERXdCQjBQUWJDd2NCQUFBQStGMERBRUdZOVJzTER2Ly8vLy8vLy8vL3lLMEJBSVFUQUVHdzlSc0xCd0VBQUFENFhRTUFRZmoxR3dzTy8vLy8vLy8vLy85SHJRRUFoUk1BUVpEMkd3c0hBUUFBQVBoZEF3QkIyUFliQ3c3Ly8vLy8vLy8vLzN5c0FRQ0dFd0JCOFBZYkN3Y0JBQUFBK0YwREFFRzQ5eHNMSC8vLy8vLy8vLy8vdm04QkFKWVRBQUFCQUFBQUNGMERBQUVBQUFBTVhRTUFRWmo0R3dzZi8vLy8vLy8vLy84YlpnRUFoUlFBQUFJQUFBQXNYd01BQWdBQUFEUmZBd0JCK1BnYkN4Ly8vLy8vLy8vLy8wTmtBUUNKRkFBQUFRQUFBQkJlQXdBQkFBQUFGRjREQUVIWStSc0xILy8vLy8vLy8vLy8vV1VCQUlvVUFBQUJBQUFBRUY0REFBRUFBQUFVWGdNQVFiajZHd3NmLy8vLy8vLy8vLzlNWUFFQWpSUUFBQUlBQUFBOFh3TUFBZ0FBQUVSZkF3QkJtUHNiQ3gvLy8vLy8vLy8vLzE1Z0FRQ09GQUFBQWdBQUFEeGZBd0FDQUFBQVJGOERBRUg0K3hzTEgvLy8vLy8vLy8vL01YQUJBSkFVQUFBQkFBQUFURjhEQUFFQUFBQlFYd01BUWRqOEd3c2YvLy8vLy8vLy8vL0RZQUVBbWhRQUFBRUFBQUNRWEFNQUFRQUFBQmhlQXdCQnVQMGJDeC8vLy8vLy8vLy8vODlnQVFDYkZBQUFBUUFBQUpCY0F3QUJBQUFBR0Y0REFFR1kvaHNMSC8vLy8vLy8vLy8vaW1JQkFKd1VBQUFCQUFBQWtGd0RBQUVBQUFBWVhnTUFRZmorR3dzZi8vLy8vLy8vLy85MFlBRUFuUlFBQUFFQUFBQ1FYQU1BQVFBQUFCaGVBd0JCMlA4YkN4Ly8vLy8vLy8vLy80cGdBUUNlRkFBQUFRQUFBSkJjQXdBQkFBQUFHRjREQUVHNGdCd0xILy8vLy8vLy8vLy9QV0FCQUo4VUFBQUJBQUFBa0Z3REFBRUFBQUFZWGdNQVFaaUJIQXNmLy8vLy8vLy8vLyt6WUFFQW9CUUFBQUVBQUFDUVhBTUFBUUFBQUJoZUF3QkIrSUVjQ3gvLy8vLy8vLy8vLzNoaUFRQ2hGQUFBQVFBQUFKQmNBd0FCQUFBQUdGNERBRUhZZ2h3TEgvLy8vLy8vLy8vL25ud0JBS1lVQUFBQ0FBQUFIRjREQUFJQUFBQWtYZ01BUWJpREhBc2YvLy8vLy8vLy8vL2RhQUVBcGhRQUFBSUFBQUFjWGdNQUFnQUFBQ1JlQXdCQm1JUWNDeC8vLy8vLy8vLy8vLzkxQVFDbkZBQUFBZ0FBQUJ4ZUF3QUNBQUFBSkY0REFFSDRoQndMSC8vLy8vLy8vLy8va21NQkFLY1VBQUFDQUFBQUhGNERBQUlBQUFBa1hnTUFRZGlGSEFzZi8vLy8vLy8vLy8vUWJ3RUFyQlFBQUFJQUFBQlVYd01BQWdBQUFGeGZBd0JCdUlZY0N4Ly8vLy8vLy8vLy80Sm1BUUNzRkFBQUFnQUFBR1JmQXdBQ0FBQUFYRjhEQUVHWWh4d0xILy8vLy8vLy8vLy9JbXNCQUswVUFBQUNBQUFBVkY4REFBSUFBQUJjWHdNQVFmaUhIQXNmLy8vLy8vLy8vLzlqWlFFQXJSUUFBQUlBQUFCa1h3TUFBZ0FBQUZ4ZkF3QkIySWdjQ3gvLy8vLy8vLy8vLzdSckFRQ3VGQUFBQVFBQUFKeGNBd0FCQUFBQWVGMERBRUc0aVJ3TEgvLy8vLy8vLy8vL3pXc0JBSzhVQUFBQkFBQUFuRndEQUFFQUFBQjRYUU1BUVppS0hBc2YvLy8vLy8vLy8vL2xhd0VBc0JRQUFBRUFBQUNjWEFNQUFRQUFBSGhkQXdCQitJb2NDeC8vLy8vLy8vLy8vK3h2QVFDekZBQUFBUUFBQUp4Y0F3QUJBQUFBZUYwREFFSFlpeHdMSC8vLy8vLy8vLy8vaW1rQkFNY1VBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRYmlNSEFzZi8vLy8vLy8vLy85SmZnRUF4eFFBQUFJQUFBQ1VYQU1BQWdBQUFHeGRBd0JCbUkwY0N4Ly8vLy8vLy8vLy81Rm1BUURJRkFBQUFnQUFBSlJjQXdBQ0FBQUFiRjBEQUVINGpSd0xILy8vLy8vLy8vLy9pSGtCQU1nVUFBQUNBQUFBbEZ3REFBSUFBQUJzWFFNQVFkaU9IQXNmLy8vLy8vLy8vLzhHWlFFQXlSUUFBQUlBQUFDVVhBTUFBZ0FBQUd4ZEF3QkJ1SThjQ3gvLy8vLy8vLy8vLzVOM0FRREpGQUFBQWdBQUFKUmNBd0FDQUFBQWJGMERBRUdZa0J3TEgvLy8vLy8vLy8vL3JtUUJBTW9VQUFBQ0FBQUFsRndEQUFJQUFBQnNYUU1BUWZpUUhBc2YvLy8vLy8vLy8vLzRkZ0VBeWhRQUFBSUFBQUNVWEFNQUFnQUFBR3hkQXdCQjJKRWNDeC8vLy8vLy8vLy8vK2hrQVFETEZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFRzRraHdMSC8vLy8vLy8vLy8vZFhjQkFNc1VBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRWmlUSEFzZi8vLy8vLy8vLy8rTlpBRUF6QlFBQUFJQUFBQ1VYQU1BQWdBQUFHeGRBd0JCK0pNY0N4Ly8vLy8vLy8vLy85ZDJBUURNRkFBQUFnQUFBSlJjQXdBQ0FBQUFiRjBEQUVIWWxCd0xILy8vLy8vLy8vLy8wbVFCQU0wVUFBQUNBQUFBbEZ3REFBSUFBQUJzWFFNQVFiaVZIQXNmLy8vLy8vLy8vLzlUZHdFQXpSUUFBQUlBQUFDVVhBTUFBZ0FBQUd4ZEF3QkJtSlljQ3gvLy8vLy8vLy8vL3gxZ0FRRE9GQUFBQWdBQUFKUmNBd0FDQUFBQWJGMERBRUg0bGh3TEgvLy8vLy8vLy8vL3RISUJBTTRVQUFBQ0FBQUFsRndEQUFJQUFBQnNYUU1BUWRpWEhBc2YvLy8vLy8vLy8vK2dYd0VBenhRQUFBSUFBQUNVWEFNQUFnQUFBR3hkQXdCQnVKZ2NDeC8vLy8vLy8vLy8vM1J5QVFEUEZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFR1ltUndMSC8vLy8vLy8vLy8vQzJrQkFOSVVBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRZmlaSEFzZi8vLy8vLy8vLy8vemZBRUEwaFFBQUFJQUFBQ1VYQU1BQWdBQUFHeGRBd0JCMkpvY0N4Ly8vLy8vLy8vLy83cGhBUURURkFBQUFnQUFBSlJjQXdBQ0FBQUFiRjBEQUVHNG14d0xILy8vLy8vLy8vLy9QblFCQU5NVUFBQUNBQUFBbEZ3REFBSUFBQUJzWFFNQVFaaWNIQXNmLy8vLy8vLy8vLzhhYWdFQTFCUUFBQUVBQUFCc1h3TUFBUUFBQUhCZkF3QkIrSndjQ3gvLy8vLy8vLy8vLy9Wb0FRRFZGQUFBQWdBQUFKUmNBd0FDQUFBQWJGMERBRUhZblJ3TEgvLy8vLy8vLy8vL3Ezd0JBTlVVQUFBQ0FBQUFsRndEQUFJQUFBQnNYUU1BUWJpZUhBc2YvLy8vLy8vLy8vL2Jad0VBMWhRQUFBRUFBQUIwWHdNQUFRQUFBSGhmQXdCQm1KOGNDeC8vLy8vLy8vLy8vd1ZpQVFEbkZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFSDRueHdMSC8vLy8vLy8vLy8vNG5RQkFPY1VBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRZGlnSEFzZi8vLy8vLy8vLy84aGNnRUE2QlFBQUFFQUFBQjhYd01BQVFBQUFJQmZBd0JCdUtFY0N4Ly8vLy8vLy8vLy95cHFBUUQrRkFBQUFRQUFBSVJmQXdBQkFBQUFpRjhEQUVHWW9od0xILy8vLy8vLy8vLy80R0FCQVA4VUFBQUJBQUFBaEY4REFBRUFBQUNJWHdNQVFmaWlIQXNmLy8vLy8vLy8vLzgzYWdFQUFCVUFBQUVBQUFDRVh3TUFBUUFBQUloZkF3QkIyS01jQ3gvLy8vLy8vLy8vLzBCcUFRQUJGUUFBQVFBQUFJUmZBd0FCQUFBQWlGOERBRUc0cEJ3TEgvLy8vLy8vLy8vLytIZ0JBSVVYQUFBQkFBQUFqRjhEQUFFQUFBQ1FYd01BUVppbEhBc0wvLy8vLy8vLy8vL2VLd0VBUWZxbEhBc0xBUUQvLy8vL0JDd0JBQUVBUWRxbUhBc0xBUUQvLy8vL2k0a0FBQUlBUWJxbkhBc0xBUUQvLy8vL280a0FBQU1BUVpxb0hBc0xBUUQvLy8vL3liQUFBQVFBUWZxb0hBc1ZBUUQvLy8vL3J3b0FBQVVBQUFBQkFBQUFVRndEQUVIWnFSd0xGZ1VCQVAvLy8vL3BjUUVBQlFBQUFBRUFBQUJRWEFNQVFibXFIQXNXQlFFQS8vLy8vOTkzQVFBR0FBQUFBUUFBQUh4ZkF3QkJtS3NjQ3hmLy8vLy8vLy8vLzJvcEFRQUFBQUFBQXdBQUFKUmZBd0JCK3FzY0N4VUJBUC8vLy84c3VnQUFBUUFBQUFNQUFBQ1VYd01BUWRxc0hBc1ZBUUQvLy8vL0hyb0FBQUlBQUFBREFBQUFsRjhEQUVHNnJSd0xGUUVBLy8vLy8yRXBBUUFEQUFBQUFRQUFBS0JmQXdCQm1hNGNDeDREQVFELy8vLy93V2dCQUFZQUFBQUJBQUFBcEY4REFBRUFBQUNvWHdNQVFmaXVIQXNmLy8vLy8vLy8vLzlJWlFFQUJ3QUFBQUVBQUFDa1h3TUFBUUFBQUtoZkF3QkIySzhjQ3gvLy8vLy8vLy8vL3kxbEFRQUlBQUFBQVFBQUFLUmZBd0FCQUFBQXFGOERBRUc0c0J3TEYvLy8vLy8vLy8vL0l6TUFBQUFBQUFBQkFBQUFjRndEQUVHYXNSd0xGUUVBLy8vLy8wVEFBQUFCQUFBQUFRQUFBSEJjQXdCQityRWNDeFVCQVAvLy8vL1lpUUFBQWdBQUFBRUFBQUJ3WEFNQVFkcXlIQXNJQVFELy8vLy9uQkFBUWJxekhBc1ZBUUQvLy8vLytId0FBQUVBQUFBQkFBQUE0RjBEQUVHYXRCd0xGUUVBLy8vLy93Y0pBQUFDQUFBQUFRQUFBRVJjQXdCQityUWNDeFVCQVAvLy8vL0xyd0FBQXdBQUFBRUFBQUJFWEFNQVFkcTFIQXNMQVFELy8vLy9OVmtBQUFRQVFicTJIQXNMQVFELy8vLy8xQ1VCQUFVQVFacTNIQXNMQVFELy8vLy9nTUFBQUFZQVFmcTNIQXNWQVFELy8vLy9hN2NCQUFjQUFBQUJBQUFBY0Z3REFFSGF1QndMRlFFQS8vLy8veE43QUFBSUFBQUFBUUFBQUhCY0F3QkJ1cmtjQ3dzQkFQLy8vLzlqdHdFQUNRQkJtcm9jQ3dzQkFQLy8vLzladVFFQUNnQkIrcm9jQ3dzQkFQLy8vLzlUdVFFQUN3QkIycnNjQ3hVQkFQLy8vLzk1WWdBQURBQUFBQUVBQUFDc1h3TUFRYnE4SEFzVkFRRC8vLy8vMzBNQkFBMEFBQUFCQUFBQWNGd0RBRUdhdlJ3TEZRRUEvLy8vLzFQdkFBQU9BQUFBQVFBQUFMQmZBd0JCK3IwY0N4VUJBUC8vLy84SG13QUFEd0FBQUFFQUFBQ3dYd01BUWRxK0hBc1ZBUUQvLy8vL1dsMEFBQkVBQUFBQkFBQUFjRndEQUVHNnZ4d0xDd0VBLy8vLy85eE5BQUFTQUVIUXZ4d0xCd0VBQUFDMFh3TUFRWnJBSEFzVkFRRC8vLy8vSXVzQUFCTUFBQUFCQUFBQWNGd0RBRUg2d0J3TEZRRUEvLy8vLzBSekFBQVVBQUFBQVFBQUFIQmNBd0JCMnNFY0N4VUJBUC8vLy85dUlRRUFGUUFBQUFFQUFBQkVYQU1BUWJyQ0hBc0xBUUQvLy8vL1hiY0JBQllBUVpyREhBc1ZBUUQvLy8vL2NPTUFBQmNBQUFBQkFBQUFpRndEQUVINnd4d0xGUUVBLy8vLy8xN2pBQUFZQUFBQUFRQUFBSXhjQXdCQjJzUWNDeFVCQVAvLy8vOUpQZ0VBR1FBQUFBRUFBQUJFWEFNQVFickZIQXNWQVFELy8vLy9xeG9CQUJzQUFBQUJBQUFBUkZ3REFFR2F4aHdMRlFFQS8vLy8veUxkQUFBY0FBQUFBUUFBQUVSY0F3QkIrc1ljQ3hVQkFQLy8vLy9WM1FBQUhRQUFBQUVBQUFCRVhBTUFRZHJISEFzVkFRRC8vLy8va3QwQUFCNEFBQUFCQUFBQVJGd0RBRUc2eUJ3TEZRRUEvLy8vLzdUZEFBQWZBQUFBQVFBQUFFUmNBd0JCbXNrY0N4VUJBUC8vLy85M0t3RUFJQUFBQUFFQUFBQkVYQU1BUWZySkhBc1ZBUUQvLy8vL2h5c0JBQ0VBQUFBQkFBQUFSRndEQUVIYXlod0xGUUVBLy8vLy8yZ09BQUFpQUFBQUFRQUFBTGhmQXdCQnVzc2NDeFVCQVAvLy8vL08zd0FBSXdBQUFBRUFBQUJFWEFNQVFack1IQXNWQVFELy8vLy8yRGtBQUNRQUFBQUJBQUFBdkY4REFFSDZ6QndMRlFFQS8vLy8vK0k1QUFBbEFBQUFBUUFBQUVSY0F3QkIyczBjQ3hVQkFQLy8vLzkrYndBQUpnQUFBQUVBQUFDZ1hBTUFRYnJPSEFzTEFRRC8vLy8vRHJZQkFDY0FRWnJQSEFzVkFRRC8vLy8vUmlVQUFDZ0FBQUFCQUFBQVJGd0RBRUg2enh3TEZRRUEvLy8vL3dvTUFBQXBBQUFBQVFBQUFFUmNBd0JCMnRBY0N4VUJBUC8vLy8vVk1nRUFLZ0FBQUFFQUFBQkVYQU1BUWJyUkhBc0xBUUQvLy8vL0xhOEJBQ3NBUVpyU0hBc1ZBUUQvLy8vL0phOEJBQ3dBQUFBQkFBQUF3RjhEQUVINjBod0xGUUVBLy8vLy8zY09BQUF0QUFBQUFRQUFBRVJjQXdCQjJ0TWNDd3NCQVAvLy8vLzdlZ0FBTGdCQnV0UWNDeFVCQVAvLy8vL3ZlZ0FBTHdBQUFBRUFBQURFWHdNQVFaclZIQXNWQVFELy8vLy9ydzRBQURBQUFBQUJBQUFBUkZ3REFFSDYxUndMRlFFQS8vLy8venhHQUFBeEFBQUFBUUFBQUVSY0F3QkIydFljQ3hVQkFQLy8vLytXQ1FBQU1nQUFBQUVBQUFCRVhBTUFRYnJYSEFzVkFRRC8vLy8vK2IwQUFETUFBQUFCQUFBQVJGd0RBRUdhMkJ3TEZRRUEvLy8vLyt1cEFBQTBBQUFBQVFBQUFFUmNBd0JCK3RnY0N4VUJBUC8vLy8rSHp3QUFOUUFBQUFFQUFBQkVYQU1BUWRyWkhBc1ZBUUQvLy8vL00xRUFBRFlBQUFBQkFBQUFqRndEQUVHNjJod0xGUUVBLy8vLy8yUTlBQUEzQUFBQUFRQUFBRVJjQXdCQm10c2NDeFVCQVAvLy8vOUZQUUFBT0FBQUFBRUFBQUJFWEFNQVFmcmJIQXNWQVFELy8vLy9DeGtBQURrQUFBQUJBQUFBakZ3REFFSGEzQndMRlFFQS8vLy8vN0hTQUFBNkFBQUFBUUFBQU1oZkF3QkJ1ZDBjQ3hZQkFRRC8vLy8veEhVQUFEc0FBQUFCQUFBQWNGd0RBRUdaM2h3TEZnRUJBUC8vLy85aUlRRUFQQUFBQUFFQUFBRE1Yd01BUWZuZUhBc01BUUVBLy8vLy84VzdBQUE5QUVIWjN4d0xGZ01CQVAvLy8vK0Q3Z0FBUGdBQUFBRUFBQURRWHdNQVFibmdIQXNXQXdFQS8vLy8vN1pEQVFBL0FBQUFBUUFBQU5CZkF3QkJtZUVjQ3hZREFRRC8vLy8vUGhzQUFFQUFBQUFCQUFBQTBGOERBRUg1NFJ3TEZnTUJBUC8vLy85V0d3RUFRUUFBQUFFQUFBRFFYd01BUWRuaUhBc1dBd0VBLy8vLy8xSGxBQUJDQUFBQUFRQUFBTkJmQXdCQnVlTWNDeFlEQVFELy8vLy9oem9CQUVNQUFBQUJBQUFBMEY4REFFR1o1QndMRmdNQkFQLy8vLzliUHdFQVJBQUFBQUVBQUFEUVh3TUFRZm5rSEFzTUF3RUEvLy8vLzcxc0FBQkZBRUhaNVJ3TERBVUJBUC8vLy8rbEVRQUFSZ0JCdWVZY0N3d0ZBUUQvLy8vL25xMEFBRWNBUVpubkhBc05CZ0VBLy8vLy81V0NBUUJGRUFCQnNPY2NDd2NCQUFBQTFGOERBRUg2NXh3TEhRRUEvLy8vL3o1NkFRQkdFUUFBQVFBQUFFUmNBd0FCQUFBQUdGOERBRUhZNkJ3TER2Ly8vLy8vLy8vLy9uSUJBRWNSQUVIdzZCd0xCd0VBQUFEMFhnTUFRYmpwSEFzZi8vLy8vLy8vLy8rU1RBQUFTeEVBQUFFQUFBQkVYQU1BQVFBQUFQeGVBd0JCbWVvY0N4NERBUUQvLy8vLzNYSUJBRXdSQUFBQkFBQUFSRndEQUFFQUFBRFlYd01BUWZqcUhBc2YvLy8vLy8vLy8vOTBkQUVBVFJFQUFBRUFBQURjWHdNQUFRQUFBTmhmQXdCQjJPc2NDeC8vLy8vLy8vLy8vNTkwQVFCT0VRQUFBUUFBQUVSY0F3QUJBQUFBMkY4REFFRzQ3QndMRHYvLy8vLy8vLy8vQUhvQkFFOFJBRUhRN0J3TEJ3RUFBQURnWHdNQVFaanRIQXNPLy8vLy8vLy8vLy9YUmdBQVVSRUFRYkR0SEFzSEFRQUFBT1JmQXdCQitlMGNDdzBEQVFELy8vLy9oYmNCQUZFUkFFR1E3aHdMQndFQUFBRGtYd01BUWRudUhBc2VBd0VBLy8vLy84MUdBQUJTRVFBQUFnQUFBT2hmQXdBQkFBQUE1RjhEQUVHNTd4d0xIZ01CQVAvLy8vOTB0d0VBVWhFQUFBSUFBQURvWHdNQUFRQUFBT1JmQXdCQm1mQWNDdzBEQVFELy8vLy9IYmNCQUZNUkFFR3c4QndMQndFQUFBRGtYd01BUWZud0hBc05Bd0VBLy8vLy80ZTJBUUJVRVFCQmtQRWNDd2NCQUFBQTVGOERBRUhaOFJ3TERRTUJBUC8vLy8vbWlRQUFWUkVBUWZEeEhBc0hBUUFBQUNCZkF3QkJ1ZkljQ3g0REFRRC8vLy8vc0JRQUFGY1JBQUFCQUFBQVJGd0RBQUVBQUFBb1h3TUFRWm56SEFzZUF3RUEvLy8vLzB0NkFBQlpFUUFBQVFBQUFFUmNBd0FCQUFBQThGOERBRUg1OHh3TEhnTUJBUC8vLy8rR1N3QUFXaEVBQUFFQUFBRDBYd01BQVFBQUFQQmZBd0JCMmZRY0N3MERBUUQvLy8vL0JVNEFBRjBSQUVIdzlCd0xCd0VBQUFENFh3TUFRYmoxSEFzTy8vLy8vLy8vLy8rOUlRRUFYeEVBUWREMUhBc0hBUUFBQU9oY0F3QkJtUFljQ3c3Ly8vLy8vLy8vLzdWR0FBQmdFUUJCc1BZY0N3Y0JBQUFBL0Y4REFFSDU5aHdMSGdVQkFQLy8vLytyUmdBQVlSRUFBQUVBQUFBQVlBTUFBUUFBQVB4ZkF3QkIyZmNjQ3cwRkFRRC8vLy8vMHJVQkFHSVJBRUh3OXh3TEJ3RUFBQUQ4WHdNQVFibjRIQXNOQlFFQS8vLy8vOW5rQUFCd0VRQkIwUGdjQ3djQkFBQUE4RndEQUVHWitSd0xEUVFCQVAvLy8vOE5vQUFBY1JFQVFiRDVIQXNIQVFBQUFQQmNBd0JCK2ZrY0N3MEVBUUQvLy8vL3dPUUFBSElSQUVHUStod0xCd0VBQUFEd1hBTUFRZG42SEFzTkJBRUEvLy8vL3hlcUFRQnpFUUJCOFBvY0N3Y0JBQUFBOEZ3REFFRzUreHdMRFFRQkFQLy8vLy9ZWGdFQWRCRUFRZEQ3SEFzSEFRQUFBUEJjQXdCQm1md2NDeDRFQVFELy8vLy9qM2dCQUhjUkFBQUJBQUFBUkZ3REFBRUFBQUFFWUFNQVFmajhIQXNmLy8vLy8vLy8vLy9PY1FFQWVCRUFBQUVBQUFCRVhBTUFBUUFBQUFSZ0F3QkIyUDBjQ3gvLy8vLy8vLy8vLzBSNUFRQitFUUFBQWdBQUFIUmNBd0FDQUFBQUNHQURBRUc0L2h3TEgvLy8vLy8vLy8vL1pIa0JBSDhSQUFBQkFBQUFSRndEQUFFQUFBQ0FYd01BUVpqL0hBc2YvLy8vLy8vLy8vOWdyUUVBa0JNQUFBRUFBQUJFWEFNQUFRQUFBQkJnQXdCQitQOGNDeC8vLy8vLy8vLy8vNEd0QVFDUkV3QUFBUUFBQUVSY0F3QUJBQUFBRkdBREFFSFlnQjBMSC8vLy8vLy8vLy8va3F3QkFKSVRBQUFCQUFBQVJGd0RBQUVBQUFBWVlBTUFRYmlCSFFzZi8vLy8vLy8vLy84UmF3RUFsUk1BQUFFQUFBQkVYQU1BQVFBQUFBeGRBd0JCbUlJZEN4Ly8vLy8vLy8vLy81ZXRBUUNYRXdBQUFRQUFBRVJjQXdBQkFBQUFIR0FEQUVINGdoMExILy8vLy8vLy8vLy9HM0FCQUpnVEFBQUJBQUFBUkZ3REFBRUFBQUFnWUFNQVFkaURIUXNPLy8vLy8vLy8vLzhvZVFFQXZ4TUFRZkNESFFzSEFRQUFBQ1JnQXdCQnVJUWRDeC8vLy8vLy8vLy8vejlvQVFDQkZBQUFBUUFBQU9SZEF3QUJBQUFBQUY0REFFR1loUjBMSC8vLy8vLy8vLy8vUzJZQkFJTVVBQUFCQUFBQWpGd0RBQUVBQUFBSVhnTUFRZmlGSFFzZi8vLy8vLy8vLy84QmJBRUFoaFFBQUFFQUFBQW9ZQU1BQWdBQUFDeGdBd0JCMklZZEN4Ly8vLy8vLy8vLy85SmlBUUNHRkFBQUFRQUFBQ2hnQXdBQ0FBQUFMR0FEQUVHNGh4MExILy8vLy8vLy8vLy9GV1lCQUljVUFBQUJBQUFBTkdBREFBRUFBQUE0WUFNQVFaaUlIUXNmLy8vLy8vLy8vLytnWUFFQWl4UUFBQUVBQUFBTVhnTUFBUUFBQUJSZUF3QkIrSWdkQ3gvLy8vLy8vLy8vL3l0aUFRQ01GQUFBQVFBQUFDUmZBd0FCQUFBQVBHQURBRUhZaVIwTEgvLy8vLy8vLy8vL0tYQUJBSkVVQUFBQkFBQUFSRndEQUFFQUFBQlFYd01BUWJpS0hRc2YvLy8vLy8vLy8vOW5aZ0VBa2hRQUFBRUFBQUJFWEFNQUFRQUFBQmhlQXdCQm1Jc2RDdzcvLy8vLy8vLy8vd0ZoQVFDaUZBQkJzSXNkQ3djQkFBQUFRR0FEQUVINGl4MExILy8vLy8vLy8vLy9tRzhCQUtNVUFBQUJBQUFBUkZ3REFBRUFBQUI0WFFNQVFkaU1IUXNPLy8vLy8vLy8vLytVZmdFQXBCUUFRZkNNSFFzSEFnQUFBQ1JlQXdCQnVJMGRDdzcvLy8vLy8vLy8vNjVwQVFDa0ZBQkIwSTBkQ3djQ0FBQUFKRjREQUVHWWpoMExEdi8vLy8vLy8vLy9uV0lCQUtnVUFFR3dqaDBMQndFQUFBQXNYUU1BUWZpT0hRc2YvLy8vLy8vLy8vK1JhZ0VBcXhRQUFBRUFBQUJFWEFNQUFnQUFBRnhmQXdCQjJJOGRDeC8vLy8vLy8vLy8vMk5uQVFDckZBQUFBUUFBQUVSY0F3QUNBQUFBWEY4REFFRzRrQjBMRHYvLy8vLy8vLy8vRzJrQkFMRVVBRUhRa0IwTEJ3RUFBQUNvWHdNQVFaaVJIUXNmLy8vLy8vLy8vLyswdXdBQXRSUUFBQUVBQUFCRVhBTUFBUUFBQURCZUF3QkIrWkVkQ3g0RkFRRC8vLy8vT20wQkFMVVVBQUFCQUFBQVJGd0RBQUVBQUFBd1hnTUFRZG1TSFFzZUJRRUEvLy8vLy9JTkFBQzJGQUFBQVFBQUFFUmNBd0FCQUFBQU1GNERBRUc1a3gwTEhnVUJBUC8vLy8ra2FnRUF0aFFBQUFFQUFBQkVYQU1BQVFBQUFEQmVBd0JCbVpRZEN4NEZBUUQvLy8vLy90d0FBTGNVQUFBQkFBQUF1RjBEQUFFQUFBQXdYZ01BUWZtVUhRc2VCUUVBLy8vLy94MXZBUUMzRkFBQUFRQUFBTGhkQXdBQkFBQUFNRjREQUVIWmxSMExIZ1VCQVAvLy8vOUUzUUFBdUJRQUFBRUFBQURFWHdNQUFRQUFBREJlQXdCQnVaWWRDeDRGQVFELy8vLy9SRzhCQUxnVUFBQUJBQUFBeEY4REFBRUFBQUF3WGdNQVFabVhIUXNlQlFFQS8vLy8vMnZkQUFDNUZBQUFBUUFBQUVSZ0F3QUJBQUFBTUY0REFFSDVseDBMSGdVQkFQLy8vLzl1YndFQXVSUUFBQUVBQUFCRVlBTUFBUUFBQURCZUF3QkIyWmdkQ3g0RkFRRC8vLy8vR053QUFMb1VBQUFCQUFBQUxGNERBQUVBQUFBd1hnTUFRYm1aSFFzZUJRRUEvLy8vL3lWdUFRQzZGQUFBQVFBQUFDeGVBd0FCQUFBQU1GNERBRUdabWgwTEhnVUJBUC8vLy8vYTNBQUF1eFFBQUFFQUFBQXNYZ01BQVFBQUFEQmVBd0JCK1pvZEN4NEZBUUQvLy8vLzltNEJBTHNVQUFBQkFBQUFMRjREQUFFQUFBQXdYZ01BUWRtYkhRc2VCUUVBLy8vLy81SGNBQUM4RkFBQUFRQUFBQ3hlQXdBQkFBQUFNRjREQUVHNW5CMExIZ1VCQVAvLy8vK25iZ0VBdkJRQUFBRUFBQUFzWGdNQUFRQUFBREJlQXdCQm1aMGRDeDRGQVFELy8vLy90dHdBQUwwVUFBQUJBQUFBTEY0REFBRUFBQUF3WGdNQVFmbWRIUXNlQlFFQS8vLy8vODl1QVFDOUZBQUFBUUFBQUN4ZUF3QUJBQUFBTUY0REFFSFpuaDBMSGdVQkFQLy8vLy94MndBQXZoUUFBQUlBQUFCSVlBTUFBUUFBQURCZUF3QkJ1WjhkQ3g0RkFRRC8vLy8vKzIwQkFMNFVBQUFDQUFBQVNHQURBQUVBQUFBd1hnTUFRWm1nSFFzZUJRRUEvLy8vL3ozY0FBQy9GQUFBQWdBQUFGQmdBd0FCQUFBQU1GNERBRUg1b0IwTEhnVUJBUC8vLy85TmJnRUF2eFFBQUFJQUFBQlFZQU1BQVFBQUFEQmVBd0JCMmFFZEN4NEZBUUQvLy8vL1o5d0FBTUFVQUFBQ0FBQUFXR0FEQUFFQUFBQXdYZ01BUWJtaUhRc2VCUUVBLy8vLy8zcHVBUURBRkFBQUFnQUFBRmhnQXdBQkFBQUFNRjREQUVHWm94MExIZ1VCQVAvLy8vOTFaZ0VBM0JRQUFBRUFBQUJFWEFNQUFRQUFBSEJmQXdCQitLTWRDeC8vLy8vLy8vLy8vN3RpQVFEZEZBQUFBUUFBQUVSY0F3QUJBQUFBZUY4REFFSFlwQjBMRHYvLy8vLy8vLy8vcGNnQUFPRVVBRUh3cEIwTEJ3RUFBQUJVWEFNQVFibWxIUXNOQlFFQS8vLy8vMlo0QVFEaEZBQkIwS1VkQ3djQkFBQUFWRndEQUVHWnBoMExEUVVCQVAvLy8vOGpGZ0VBNGhRQVFiQ21IUXNIQVFBQUFGUmNBd0JCK2FZZEN3MEZBUUQvLy8vLy9Ib0JBT0lVQUVHUXB4MExCd0VBQUFCVVhBTUFRZG1uSFFzZUJRRUEvLy8vL3lCWkFBRGpGQUFBQVFBQUFFUmNBd0FDQUFBQXFGd0RBRUc1cUIwTEhnVUJBUC8vLy85d2F3RUE0eFFBQUFFQUFBQkVYQU1BQWdBQUFLaGNBd0JCbWFrZEN3MEZBUUQvLy8vL2MyTUJBT1lVQUVHd3FSMExCd0VBQUFBc1hRTUFRZmlwSFFzZi8vLy8vLy8vLy8rbWVBRUE2UlFBQUFFQUFBQkVYQU1BQVFBQUFJQmZBd0JCMktvZEN4Ly8vLy8vLy8vLy8xaGZBUUR0RkFBQUFRQUFBRVJjQXdBQkFBQUFZR0FEQUVHNHF4MExILy8vLy8vLy8vLy8wbTBCQVBNVUFBQUJBQUFBUkZ3REFBRUFBQUE0WFFNQVFaaXNIUXNmLy8vLy8vLy8vLytzYlFFQS9CUUFBQUVBQUFCRVhBTUFBUUFBQURoZEF3QkIrS3dkQ3gvLy8vLy8vLy8vLy9KaEFRRDlGQUFBQVFBQUFFUmNBd0FCQUFBQWlGOERBRUhZclIwTEgvLy8vLy8vLy8vL2pHMEJBQUlWQUFBQkFBQUFSRndEQUFFQUFBQTRYUU1BUWJpdUhRc2YvLy8vLy8vLy8vOFpzQUFBQXhVQUFBRUFBQUJFWEFNQUFRQUFBR1JnQXdCQm1hOGRDeDRHQVFELy8vLy9FRzBCQUFNVkFBQUJBQUFBUkZ3REFBRUFBQUJrWUFNQVFmbXZIUXNlQmdFQS8vLy8vOTFzQVFBRkZRQUFBZ0FBQUhSY0F3QUJBQUFBYUdBREFFSFlzQjBMSC8vLy8vLy8vLy8vUUdNQkFBY1ZBQUFCQUFBQWZGOERBQUVBQUFCc1lBTUFRYml4SFFzTy8vLy8vLy8vLy85eFp3RUFEaFVBUWRDeEhRc0hBUUFBQUhCZ0F3QkJtTElkQ3c3Ly8vLy8vLy8vLzRtZEFRREFGUUJCc0xJZEN3Y0JBQUFBZEdBREFFSDRzaDBMRHYvLy8vLy8vLy8vQmFnQkFNRVZBRUdRc3gwTEJ3RUFBQUIwWUFNQVFkaXpIUXNPLy8vLy8vLy8vLzhncUFFQXdoVUFRZkN6SFFzSEFRQUFBSFJnQXdCQnVMUWRDdzcvLy8vLy8vLy8venFvQVFETEZRQkIwTFFkQ3djQkFBQUFlR0FEQUVHWXRSMExEdi8vLy8vLy8vLy8rNFVCQU00VkFFR3d0UjBMQndFQUFBQjhZQU1BUWZpMUhRc08vLy8vLy8vLy8vL2tud0VBenhVQVFaQzJIUXNIQVFBQUFIeGdBd0JCMkxZZEN4Ly8vLy8vLy8vLy8rdW9BUURRRlFBQUFRQUFBRVJjQXdBQkFBQUFnR0FEQUVHNHR4MExEdi8vLy8vLy8vLy94WTBCQU9NVkFFSFF0eDBMQndFQUFBQ0FYUU1BUVppNEhRc08vLy8vLy8vLy8vK1hrUUVBNUJVQVFiQzRIUXNIQVFBQUFJQmRBd0JCK0xnZEN3Ny8vLy8vLy8vLy94YVlBUURtRlFCQmtMa2RDd2NCQUFBQWhHQURBRUhZdVIwTER2Ly8vLy8vLy8vLzdHb0JBT3dWQUVId3VSMExCd0VBQUFDSVlBTUFRYmk2SFFzTy8vLy8vLy8vLy8vVmFnRUE3UlVBUWRDNkhRc0hBUUFBQUloZ0F3QkJtTHNkQ3c3Ly8vLy8vLy8vLzc1cUFRRHdGUUJCc0xzZEN3Y0JBQUFBaUdBREFFSDR1eDBMSC8vLy8vLy8vLy8vQ0p3QkFQRVZBQUFCQUFBQWpHQURBQUVBQUFDUVlBTUFRZGk4SFFzTy8vLy8vLy8vLy84emhnRUE4eFVBUWZDOEhRc0hBUUFBQUpCZ0F3QkJ1TDBkQ3c3Ly8vLy8vLy8vLzBGN0FRRDlGUUJCMEwwZEN3Y0JBQUFBbEdBREFFR1l2aDBMRHYvLy8vLy8vLy8vT0pZQkFFQVdBRUd3dmgwTEJ3RUFBQUNZWUFNQVFmaStIUXNPLy8vLy8vLy8vLy9ocGdFQVFSWUFRWkMvSFFzSEFRQUFBSmhnQXdCQjJMOGRDdzcvLy8vLy8vLy8veXVuQVFCQ0ZnQkI4TDhkQ3djQkFBQUFtR0FEQUVHNHdCMExEdi8vLy8vLy8vLy92NFlCQUxrV0FFSFF3QjBMQndFQUFBQ2NZQU1BUVpqQkhRc08vLy8vLy8vLy8vOUdtQUVBdlJZQVFiREJIUXNIQVFBQUFIeGdBd0JCK01FZEN3Ny8vLy8vLy8vLy93U1FBUURBRmdCQmtNSWRDd2NCQUFBQVRGNERBRUhZd2gwTEgvLy8vLy8vLy8vL0U2QUJBTTBXQUFBQkFBQUFjRndEQUFFQUFBQ2dZQU1BUWJqREhRc08vLy8vLy8vLy8vL2JqUUVBMUJZQVFkRERIUXNIQVFBQUFLUmdBd0JCbU1RZEN3Ny8vLy8vLy8vLy96bUtBUURWRmdCQnNNUWRDd2NCQUFBQXFHQURBRUg0eEIwTER2Ly8vLy8vLy8vL3dvOEJBUDRXQUVHUXhSMExCd0VBQUFDc1lBTUFRZGpGSFFzTy8vLy8vLy8vLy8vZ2p3RUFBQmNBUWZERkhRc0hBUUFBQUxCZ0F3QkJ1TVlkQ3c3Ly8vLy8vLy8vL3oyUUFRQUVGd0JCME1ZZEN3Y0JBQUFBVUYwREFFR1l4eDBMRHYvLy8vLy8vLy8vT1pBQkFBa1hBRUd3eHgwTEJ3RUFBQUJRWFFNQVFmakhIUXNPLy8vLy8vLy8vLytPa0FFQUNoY0FRWkRJSFFzSEFRQUFBTFJnQXdCQjJNZ2RDdzcvLy8vLy8vLy8veDZRQVFBUUZ3QkI4TWdkQ3djQkFBQUF1R0FEQUVHNHlSMExEdi8vLy8vLy8vLy9xcHdCQUJJWEFFSFF5UjBMQndFQUFBQzhZQU1BUVpqS0hRc08vLy8vLy8vLy8vOXhtQUVBRkJjQVFiREtIUXNIQVFBQUFNQmdBd0JCK01vZEN3Ny8vLy8vLy8vLy84R2FBUUFXRndCQmtNc2RDd2NCQUFBQWJGd0RBRUhZeXgwTER2Ly8vLy8vLy8vL1U1QUJBQndYQUVId3l4MExCd0VBQUFERVlBTUFRYmpNSFFzTy8vLy8vLy8vLy85WmxnRUFJQmNBUWRETUhRc0hBUUFBQU1oZ0F3QkJtTTBkQ3c3Ly8vLy8vLy8vLzE2S0FRQWlGd0JCc00wZEN3Y0JBQUFBekdBREFFSDR6UjBMRHYvLy8vLy8vLy8vcHBBQkFDOFhBRUdRemgwTEJ3RUFBQUNJWFFNQVFkak9IUXNPLy8vLy8vLy8vLzhibkFFQU14Y0FRZkRPSFFzSEFRQUFBTkJnQXdCQnVNOGRDdzcvLy8vLy8vLy8vOUNRQVFBM0Z3QkIwTThkQ3djQkFBQUExR0FEQUVHWTBCMExEdi8vLy8vLy8vLy92WkFCQURrWEFFR3cwQjBMQndFQUFBRFlZQU1BUWZqUUhRc08vLy8vLy8vLy8vOEltd0VBUEJjQVFaRFJIUXNIQVFBQUFOeGdBd0JCMk5FZEN3Ny8vLy8vLy8vLy8xSy9BQUNBRndCQjhORWRDd2NCQUFBQTRHQURBRUc1MGgwTERRWUJBUC8vLy8vdGR3RUFnQmNBUWREU0hRc0hBUUFBQU9CZ0F3QkJtZE1kQ3g0R0FRRC8vLy8vU3pNQUFJRVhBQUFCQUFBQTVHQURBQUVBQUFEZ1lBTUFRZm5USFFzZUJnRUEvLy8vLzVsekFRQ0JGd0FBQVFBQUFPUmdBd0FCQUFBQTRHQURBRUhaMUIwTERRWUJBUC8vLy85MlBBRUFnaGNBUWZEVUhRc0hBUUFBQU9CZ0F3QkJ1ZFVkQ3cwR0FRRC8vLy8vTG4wQkFJSVhBRUhRMVIwTEJ3RUFBQURnWUFNQVFabldIUXNOQmdFQS8vLy8vNW80QUFDREZ3QkJzTllkQ3djQkFBQUE0R0FEQUVINTFoMExEUVlCQVAvLy8vOFBkQUVBZ3hjQVFaRFhIUXNIQVFBQUFPQmdBd0JCMmRjZEN3MEdBUUQvLy8vLzlYZ0JBSVFYQUVIdzF4MExCd0VBQUFDUVh3TUFRYmpZSFFzTy8vLy8vLy8vLy8vN1RnQUFpUmNBUWREWUhRc0hBUUFBQU9oZ0F3QkJtTmtkQ3gvLy8vLy8vLy8vL3hCNkFRQ0tGd0FBQVFBQUFOQmZBd0FCQUFBQTdHQURBRUg0MlIwTER2Ly8vLy8vLy8vL0lYRUJBSkVYQUVHUTJoMExCd0VBQUFEd1lBTUFRZGphSFFzTy8vLy8vLy8vLy84TmNRRUFraGNBUWZEYUhRc0hBUUFBQVBCZ0F3QkJ1TnNkQ3c3Ly8vLy8vLy8vL3ppY0FRREpGd0JCME5zZEN3Y0JBQUFBOUdBREFFR1kzQjBMRHYvLy8vLy8vLy8vVnAwQkFNNFhBRUd3M0IwTEJ3RUFBQUQ0WUFNQVFmamNIUXNPLy8vLy8vLy8vLy81Y0FFQXp4Y0FRWkRkSFFzSEFRQUFBUHhnQXdCQjJOMGRDdzcvLy8vLy8vLy8vMk9kQVFEaUZ3QkI4TjBkQ3djQkFBQUFBR0VEQUVHNDNoMExEdi8vLy8vLy8vLy9YcE1CQVAwWEFFSFEzaDBMQndFQUFBQUVZUU1BUVpqZkhRc08vLy8vLy8vLy8vK3ZrUUVBSGhnQVFiRGZIUXNIQVFBQUFBaGhBd0JCK044ZEN3Ny8vLy8vLy8vLy8zcCtBUUFBR1FCQmtPQWRDd2NCQUFBQURHRURBRUhZNEIwTEYvLy8vLy8vLy8vL2FIWUJBQUFBQUFBQkFBQUFFR0VEQUVHNDRSMExGLy8vLy8vLy8vLy9uM1lCQUFFQUFBQUJBQUFBRUdFREFFR1k0aDBMRi8vLy8vLy8vLy8vSEhzQkFBQUFBQUFCQUFBQUVHRURBRUg0NGgwTEYvLy8vLy8vLy8vL2Vuc0JBQUVBQUFBQkFBQUFFR0VEQUVIWTR4MExGLy8vLy8vLy8vLy9CSDBCQUFJQUFBQUJBQUFBRUdFREFFRzQ1QjBMRi8vLy8vLy8vLy8vVVhzQkFBQUFBQUFCQUFBQUVHRURBRUdZNVIwTEYvLy8vLy8vLy8vL09JQUJBQUVBQUFBQkFBQUFFR0VEQUVINDVSMExDdi8vLy8vLy8vLy9ZVE1BUVpEbUhRc0hBUUFBQU9CZ0F3QkIyZVlkQ3dvR0FRRC8vLy8vc25NQkFFSHc1aDBMQndFQUFBRGdZQU1BUWJubkhRc0tCZ0VBLy8vLy8ya1hBUUJCbXVnZEN3c0JBUC8vLy8vdE9BRUFBUUJCK3VnZEN3c0JBUC8vLy8rRzd3QUFBZ0JCMnVrZEN3c0JBUC8vLy8vcVJBRUFBd0JCdXVvZEN3c0JBUC8vLy85dHl3QUFCQUJCbXVzZEN3c0JBUC8vLy8vMW9nQUFDQUJCK3VzZEN3c0JBUC8vLy85dXlRQUFFQUJCMnV3ZEN3c0JBUC8vLy85ZXl3QUFJQUJCdXUwZEN3c0JBUC8vLy84V013QUFRQUJCbXU0ZEN3c0JBUC8vLy85b093RUFnQUJCK3U0ZEN3d0JBUC8vLy85dWJnQUFBQUVBUWRydkhRc01BUUQvLy8vL1ZYOEFBQUFDQUVHNjhCMExEQUVBLy8vLy82a2RBUUFBQkFCQm12RWRDd3dCQVAvLy8vL3pLZ0VBQUFnQVFmcnhIUXNNQVFELy8vLy8zeW9CQUFBUUFFSGE4aDBMREFFQS8vLy8vMHczQVFBQUlBQkJ1dk1kQ3drQkFQLy8vLysvUEFFQVFacjBIUXNMQVFELy8vLy9aRVlBQUFFQVFmcjBIUXNMQVFELy8vLy9Gcm9BQUFJQVFkcjFIUXNMQVFELy8vLy8vendBQUFRQVFicjJIUXNMQVFELy8vLy9BendCQUFVQVFacjNIUXNMQVFELy8vLy81SWNBQUFZQVFmcjNIUXNMQVFELy8vLy8yRHNCQUFjQVFkcjRIUXNMQVFELy8vLy8xNGNBQUFnQVFicjVIUXNJQVFELy8vLy9Xa29BUVpyNkhRc0xBUUQvLy8vL04vVUFBQUVBUWZyNkhRc0xBUUQvLy8vL2hiY0FBQUlBUWRyN0hRc0pBUUQvLy8vLzlnb0JBRUc2L0IwTEN3RUEvLy8vLzZVTEFRQUJBRUdhL1IwTEN3RUEvLy8vL3lVTEFRQUNBRUg2L1IwTENRRUEvLy8vLzJrWEFRQkIydjRkQ3dzQkFQLy8vLy90T0FFQUFRQkJ1djhkQ3dzQkFQLy8vLytHN3dBQUFnQkJtb0FlQ3dzQkFQLy8vLy9xUkFFQUF3QkIrb0FlQ3dzQkFQLy8vLzl0eXdBQUJBQkIyb0VlQ3dzQkFQLy8vLy8xb2dBQUNBQkJ1b0llQ3dzQkFQLy8vLzl1eVFBQUVBQkJtb01lQ3dzQkFQLy8vLzlleXdBQUlBQkIrb01lQ3dzQkFQLy8vLzhXTXdBQVFBQkIyb1FlQ3dzQkFQLy8vLzlvT3dFQWdBQkJ1b1VlQ3d3QkFQLy8vLzl1YmdBQUFBRUFRWnFHSGdzTUFRRC8vLy8vVlg4QUFBQUNBRUg2aGg0TERBRUEvLy8vLzZrZEFRQUFCQUJCMm9jZUN3d0JBUC8vLy8vektnRUFBQWdBUWJxSUhnc01BUUQvLy8vLzN5b0JBQUFRQUVHYWlSNExEQUVBLy8vLy8wdzNBUUFBSUFCQitva2VDd3dCQVAvLy8vODFTZ0FBQUVBQVFkcUtIZ3NNQVFELy8vLy9VZW9BQUFDQUFFRzZpeDRMRFFFQS8vLy8vd1FxQVFBQUFBRUFRWnFNSGdzSkFRRC8vLy8vdnp3QkFFSDZqQjRMQ3dFQS8vLy8vMlJHQUFBQkFFSGFqUjRMQ3dFQS8vLy8veGE2QUFBQ0FFRzZqaDRMQ3dFQS8vLy8vLzg4QUFBREFFR2FqeDRMQ3dFQS8vLy8vd004QVFBRUFFSDZqeDRMQ3dFQS8vLy8vK1NIQUFBRkFFSGFrQjRMQ3dFQS8vLy8vOWc3QVFBR0FFRzZrUjRMQ3dFQS8vLy8vOWVIQUFBSEFFR2FraDRMQ0FFQS8vLy8vMXBLQUVINmtoNExDd0VBLy8vLy96ZjFBQUFCQUVIYWt4NExDd0VBLy8vLy80VzNBQUFDQUVHNmxCNExDUUVBLy8vLy8vWUtBUUJCbXBVZUN3c0JBUC8vLy8rbEN3RUFBUUJCK3BVZUN3c0JBUC8vLy84bEN3RUFBZ0JCMnBZZUN3c0JBUC8vLy8vS0N3RUFBd0JCdXBjZUN3a0JBUC8vLy85YkdnRUFRWnFZSGdzTEFRRC8vLy8vVWE4QUFBRUFRZnFZSGdzSkFRRC8vLy8vYVJjQkFFSGFtUjRMRlFFQS8vLy8vLzFpQUFBQkFBQUFBUUFBQUVSY0F3QkIrSmtlQ3dFQkFFRzZtaDRMQ3dFQS8vLy8vK295QVFBQ0FFSFltaDRMQVFFQVFacWJIZ3NMQVFELy8vLy9xRDhCQUFRQVFiaWJIZ3NGQVFBQUFBRUFRZnFiSGdzTEFRRC8vLy8vQXpRQUFBZ0FRWmljSGdzQkFRQkIycHdlQ3hVQkFQLy8vLytUTkFBQUVBQUFBQUVBQUFCSVhBTUFRZmljSGdzQkFRQkJ1cDBlQ3hVQkFQLy8vLys4UkFBQUlBQUFBQUVBQUFCSVhBTUFRZGlkSGdzQkFRQkJtcDRlQ3dzQkFQLy8vLy9lR2dFQVFBQkJ1SjRlQ3dFQkFFSDZuaDRMRlFFQS8vLy8vOVV5QVFDQUFBQUFBUUFBQUV4Y0F3QkJtSjhlQ3dFQkFFSGFueDRMSHdFQS8vLy8vOVFjQVFBQUFRQUFBUUFBQUZCY0F3QUJBQUFBVkZ3REFBVUFRYm1nSGdzZ0JRRUEvLy8vLzFOOEFRQUFBUUFBQVFBQUFGQmNBd0FCQUFBQVZGd0RBQVVBUVptaEhnc2dCUUVBLy8vLy93b2NBUUFBQWdBQUFRQUFBRkJjQXdBQkFBQUFWRndEQUFVQVFmbWhIZ3NnQlFFQS8vLy8vOTk3QVFBQUFnQUFBUUFBQUZCY0F3QUJBQUFBVkZ3REFBVUFRZG1pSGdzZUJRRUEvLy8vLysyL0FBQUFCQUFBQVFBQUFGQmNBd0FCQUFBQVZGd0RBRUc1b3g0TEhnVUJBUC8vLy84U2VBRUFBQVFBQUFFQUFBQlFYQU1BQVFBQUFGUmNBd0JCbWFRZUN4NEZBUUQvLy8vLy9iOEFBQUFJQUFBQkFBQUFVRndEQUFFQUFBQlVYQU1BUWZta0hnc2VCUUVBLy8vLy95VjRBUUFBQ0FBQUFRQUFBRkJjQXdBQkFBQUFWRndEQUVIWnBSNExEUVVCQVAvLy8vK3VNd0VBQUJBQVFibW1IZ3NOQkFFQS8vLy8vNk16QVFBQUlBQkJtYWNlQ3cwRUFRRC8vLy8vSGNzQUFBQkFBRUg1cHg0TERnWUJBUC8vLy8vQlJBQUFBQUFCQUVHWXFCNExBUUVBUWRxb0hnc0pBUUQvLy8vL2FSY0JBRUc2cVI0TEN3RUEvLy8vLzhXK0FBQUJBRUdhcWg0TEN3RUEvLy8vLzhHK0FBQUNBRUg2cWg0TEN3RUEvLy8vLzJMdkFBQUVBRUhacXg0TERBRUJBUC8vLy8rZTBRQUFDQUJCK0tzZUN3RUdBRUc1ckI0TERBRUJBUC8vLy84ZFVBQUFFQUJCMkt3ZUN3RUdBRUdaclI0TERBUUJBUC8vLy84UFVBQUFJQUJCdUswZUN3RUdBRUg1clI0TERBUUJBUC8vLy8vbEdnRUFRQUJCbUs0ZUN3RUdBRUhacmg0TERBUUJBUC8vLy8vZ0hBQUFnQUJCK0s0ZUN3RUdBRUc1cng0TERRUUJBUC8vLy8vcUhBQUFBQUVBUWRpdkhnc0JCZ0JCbWJBZUN4WUVBUUQvLy8vL0Naa0JBQUFBQVFBQkFBQUFYRndEQUVHNHNCNExBUVlBUWZpd0hnc1gvLy8vLy8vLy8vK1doZ0VBQUFBQ0FBRUFBQUJjWEFNQVFaaXhIZ3NCQmdCQjJMRWVDeGYvLy8vLy8vLy8vNnFHQVFBQUFBUUFBUUFBQUZ4Y0F3QkIrTEVlQ3dFR0FFRzRzaDRMRi8vLy8vLy8vLy8va3A0QkFBQUFDQUFCQUFBQVhGd0RBRUhZc2g0TEFRWUFRWml6SGdzWC8vLy8vLy8vLy8vSm9BRUFBQUFRQUFFQUFBQmNYQU1BUWJpekhnc0JCZ0JCK0xNZUN4Zi8vLy8vLy8vLy82eWFBUUFBQUNBQUFRQUFBRnhjQXdCQm1MUWVDd0VHQUVIWXRCNExGLy8vLy8vLy8vLy9rbzhCQUFBQVFBQUJBQUFBWEZ3REFFSDR0QjRMQVFZQVFiaTFIZ3NYLy8vLy8vLy8vLytobGdFQUFBQ0FBQUVBQUFCY1hBTUFRWmkySGdzWC8vLy8vLy8vLy84cWlnRUFBQUFBQVFFQUFBQmNYQU1BUWJpMkhnc0JCZ0JCK0xZZUN4Zi8vLy8vLy8vLy85aUdBUUFBQUFBQ0FRQUFBRnhjQXdCQm1MY2VDd0VHQUVIWXR4NExDLy8vLy8vLy8vLy9hUmNCQUVHNnVCNExDd0VBLy8vLy95VWJBUUFCQUVHYXVSNExDd0VBLy8vLy8vczdBUUFDQUVHNHVSNExBUVlBUWZxNUhnc0xBUUQvLy8vL0hjc0FBQVFBUWRxNkhnc2ZBUUQvLy8vL3Z4d0JBQWdBQUFBQkFBQUFVRndEQUFFQUFBQlVYQU1BQlFCQnVic2VDeUFGQVFELy8vLy9PM3dCQUFnQUFBQUJBQUFBVUZ3REFBRUFBQUJVWEFNQUJRQkJtYndlQ3lBRkFRRC8vLy8vOXhzQkFCQUFBQUFCQUFBQVVGd0RBQUVBQUFCVVhBTUFCUUJCK2J3ZUN5QUZBUUQvLy8vL3lYc0JBQkFBQUFBQkFBQUFVRndEQUFFQUFBQlVYQU1BQlFCQjJiMGVDeDRGQVFELy8vLy92bTRBQUNBQUFBQUJBQUFBVUZ3REFBRUFBQUJVWEFNQVFibStIZ3NlQlFFQS8vLy8vNWgxQVFBZ0FBQUFBUUFBQUZCY0F3QUJBQUFBVkZ3REFFR1p2eDRMSUFVQkFQLy8vLytnekFBQUFBQUJBQUVBQUFCb1hBTUFBUUFBQUd4Y0F3QUJBRUg0dng0TElmLy8vLy8vLy8vL2o4d0FBQUFBQWdBQkFBQUFhRndEQUFFQUFBQnNYQU1BQVFCQjJNQWVDeGYvLy8vLy8vLy8vNFJRQUFBQUFBQUFBUUFBQUl4Y0F3QkIrTUFlQ3dFR0FFRzZ3UjRMRlFFQS8vLy8vOC9LQUFBQkFBQUFBUUFBQUloY0F3QkJtc0llQ3hVQkFQLy8vLzlHdVFBQUFnQUFBQUVBQUFDSVhBTUFRZnJDSGdzVkFRRC8vLy8vOVQ0QkFBTUFBQUFCQUFBQWlGd0RBRUhhd3g0TEZRRUEvLy8vLzgwVUFBQUVBQUFBQVFBQUFJaGNBd0JCdXNRZUN4VUJBUC8vLy8rK0ZBQUFCUUFBQUFFQUFBQ0lYQU1BUVpyRkhnc1ZBUUQvLy8vL1VIa0FBQVlBQUFBQkFBQUFSRndEQUVINnhSNExGUUVBLy8vLy80b3pBQUFIQUFBQUFRQUFBRVJjQXdCQjJzWWVDeFVCQVAvLy8vOTZNd0FBQ0FBQUFBRUFBQUJFWEFNQVFickhIZ3NWQVFELy8vLy90ejRBQUFrQUFBQUJBQUFBUkZ3REFFR2F5QjRMRlFFQS8vLy8vM0FvQVFBS0FBQUFBUUFBQUloY0F3QkIrc2dlQ3hVQkFQLy8vLzhWWFFFQUN3QUFBQUVBQUFDd1hBTUFRZHJKSGdzVkFRRC8vLy8vQitBQUFBd0FBQUFCQUFBQVJGd0RBRUc2eWg0TEZRRUEvLy8vLzZaeUFBQU9BQUFBQVFBQUFFUmNBd0JCbXNzZUN4VUJBUC8vLy84T1J3QUFEd0FBQUFFQUFBQkVYQU1BUWZyTEhnc1ZBUUQvLy8vL09qNEJBQkFBQUFBQkFBQUFSRndEQUVIYXpCNExDd0VBLy8vLy80M2tBQUFSQUVINHpCNExDUVlBQUFBR0FBQUFCZ0JCdXMwZUN4VUJBUC8vLy8vREhnQUFFZ0FBQUFFQUFBQndYQU1BUWRqTkhnc0pCZ0FBQUFZQUFBQUdBRUdhemg0TEZRRUEvLy8vLzFJL0FBQVRBQUFBQVFBQUFJeGNBd0JCK3M0ZUN4VUJBUC8vLy85cFhRQUFGQUFBQUFFQUFBQ01YQU1BUWRyUEhnc1ZBUUQvLy8vL0dnd0FBQlVBQUFBQkFBQUFqRndEQUVHNjBCNExGUUVBLy8vLy93VmVBQUFXQUFBQUFnQUFBTFJjQXdCQm10RWVDeFVCQVAvLy8vOHVEQUFBRndBQUFBRUFBQUNNWEFNQVFmclJIZ3NWQVFELy8vLy9UbUVBQUJnQUFBQUJBQUFBaUZ3REFFSGEwaDRMRlFFQS8vLy8vMkJkQUFBWkFBQUFBUUFBQUloY0F3QkJ1dE1lQ3hVQkFQLy8vLzk1WHdBQUdnQUFBQVFBQUFEQVhBTUFRZGpUSGdzQkJnQkJtdFFlQ3hVQkFQLy8vLzlGUHdBQUd3QUFBQU1BQUFEUVhBTUFRZnJVSGdzVkFRRC8vLy8vWHBvQUFCd0FBQUFCQUFBQWpGd0RBRUhhMVI0TEZRRUEvLy8vLzI2YUFBQWRBQUFBQVFBQUFJeGNBd0JCdXRZZUN4VUJBUC8vLy8vUkhnQUFIZ0FBQUFFQUFBQndYQU1BUWRqV0hnc0JCZ0JCbXRjZUN4VUJBUC8vLy85YTRRQUFId0FBQUFFQUFBQndYQU1BUWZyWEhnc1ZBUUQvLy8vL1VHd0FBQ0VBQUFBQkFBQUFjRndEQUVIWjJCNExGZ0VCQVAvLy8vOVVhd0FBSWdBQUFBRUFBQUJ3WEFNQVFiblpIZ3NXQVFFQS8vLy8veVRrQUFBakFBQUFBUUFBQU54Y0F3QkIyTmtlQ3dFR0FFR1oyaDRMRmdFQkFQLy8vLzh6aVFBQUpBQUFBQUVBQUFEY1hBTUFRYmphSGdzQkJnQkIrZG9lQ3hZQkFRRC8vLy8vMDBBQkFDVUFBQUFCQUFBQTNGd0RBRUdZMng0TEFRRUFRZG5iSGdzTUFnRUEvLy8vLzE1QkFRQW1BRUg0Mng0TENRRUFBQUFCQUFBQUFRQkJ1ZHdlQ3hZQ0FRRC8vLy8vakVBQkFDY0FBQUFCQUFBQWNGd0RBRUhZM0I0TENRRUFBQUFCQUFBQUFRQkJtZDBlQ3g0Q0FRRC8vLy8vdjNJQkFFVVJBQUFCQUFBQVJGd0RBQUVBQUFEZ1hBTUFRZmpkSGdzZi8vLy8vLy8vLy8vSElRRUFYaEVBQUFFQUFBRGtYQU1BQVFBQUFPaGNBd0JCMk40ZUN5SC8vLy8vLy8vLy85bmtBQUJyRVFBQUFRQUFBT3hjQXdBQkFBQUE4RndEQUFZQVFibmZIZ3NnQkFFQS8vLy8vdzJnQUFCc0VRQUFBUUFBQVBSY0F3QUJBQUFBOEZ3REFBWUFRWm5nSGdzZ0JBRUEvLy8vLzhEa0FBQnRFUUFBQVFBQUFQaGNBd0FCQUFBQThGd0RBQVlBUWZuZ0hnc2dCQUVBLy8vLy94ZXFBUUJ1RVFBQUFRQUFBUHhjQXdBQkFBQUE4RndEQUFZQVFkbmhIZ3NnQkFFQS8vLy8vOWhlQVFCdkVRQUFBUUFBQUFCZEF3QUJBQUFBOEZ3REFBWUFRYm5pSGdzZUJBRUEvLy8vLzFpckFRQ1pFd0FBQVFBQUFFUmNBd0FCQUFBQUJGMERBRUdZNHg0TEgvLy8vLy8vLy8vL3AyOEJBS01UQUFBQkFBQUFDRjBEQUFFQUFBQU1YUU1BUWZqakhnc2YvLy8vLy8vLy8vOHpxd0VBMXhNQUFBRUFBQUFJWFFNQUFnQUFBQkJkQXdCQjJPUWVDeC8vLy8vLy8vLy8veG1yQVFEWUV3QUFBUUFBQUFoZEF3QUNBQUFBRUYwREFFRzQ1UjRMSC8vLy8vLy8vLy8vQXFzQkFOa1RBQUFCQUFBQUNGMERBQUlBQUFBUVhRTUFRWmptSGdzZi8vLy8vLy8vLy8vUnJBRUEyaE1BQUFFQUFBQUlYUU1BQWdBQUFCQmRBd0JCK09ZZUN4Ly8vLy8vLy8vLy83aXNBUURiRXdBQUFRQUFBQWhkQXdBQ0FBQUFFRjBEQUVIWTV4NExILy8vLy8vLy8vLy9vcXdCQU53VEFBQUJBQUFBQ0YwREFBSUFBQUFRWFFNQVFiam9IZ3NmLy8vLy8vLy8vLzlZWWdFQWxSUUFBQUlBQUFBWVhRTUFBZ0FBQUNCZEF3QkJtT2tlQ3gvLy8vLy8vLy8vLzVKckFRQ1ZGQUFBQWdBQUFCaGRBd0FDQUFBQUlGMERBRUg0NlI0TElmLy8vLy8vLy8vL0dHSUJBSllVQUFBQ0FBQUFHRjBEQUFJQUFBQWdYUU1BQmdCQjJPb2VDeUgvLy8vLy8vLy8vMXhyQVFDV0ZBQUFBZ0FBQUJoZEF3QUNBQUFBSUYwREFBWUFRYmpySGdzZi8vLy8vLy8vLy8ra1lnRUFxUlFBQUFFQUFBQW9YUU1BQVFBQUFDeGRBd0JCbU93ZUN4Ly8vLy8vLy8vLy8zcGpBUUNxRkFBQUFRQUFBREJkQXdBQkFBQUFMRjBEQUVINDdCNExILy8vLy8vLy8vLy9abUlCQUxJVUFBQUNBQUFBR0YwREFBSUFBQUFnWFFNQVFkanRIZ3NmLy8vLy8vLy8vLytoYXdFQXNoUUFBQUlBQUFBWVhRTUFBZ0FBQUNCZEF3QkJ1TzRlQ3gvLy8vLy8vLy8vLzVsd0FRRDJGQUFBQVFBQUFEUmRBd0FCQUFBQU9GMERBRUdZN3g0TEgvLy8vLy8vLy8vL1FYQUJBUGNVQUFBQkFBQUFORjBEQUFFQUFBQTRYUU1BUWZqdkhnc2YvLy8vLy8vLy8vL1JjQUVBK0JRQUFBRUFBQUE4WFFNQUFRQUFBRGhkQXdCQjJQQWVDeC8vLy8vLy8vLy8vMzF3QVFENUZBQUFBUUFBQUR4ZEF3QUJBQUFBT0YwREFFRzQ4UjRMSC8vLy8vLy8vLy8vc25BQkFQb1VBQUFCQUFBQVFGMERBQUVBQUFBNFhRTUFRWmp5SGdzZi8vLy8vLy8vLy85Y2NBRUEreFFBQUFFQUFBQkFYUU1BQVFBQUFEaGRBd0JCK1BJZUN4Zi8vLy8vLy8vLy80MmJBUUR5RlFBQUFRQUFBRVJkQXdCQm1QTWVDd0VHQUVIWTh4NExGLy8vLy8vLy8vLy84S2NCQVBRVkFBQUJBQUFBU0YwREFFSDQ4eDRMQVFZQVFiajBIZ3NYLy8vLy8vLy8vLzl4cUFFQTlSVUFBQUVBQUFCSVhRTUFRZGowSGdzQkJnQkJtUFVlQ3hmLy8vLy8vLy8vLzVLbkFRRDJGUUFBQVFBQUFFaGRBd0JCdVBVZUN3RUdBRUg0OVI0TEYvLy8vLy8vLy8vL3NxZ0JBUGNWQUFBQkFBQUFTRjBEQUVHWTloNExBUVlBUWRqMkhnc3AvLy8vLy8vLy8vL0ptd0VBQlJjQUFBRUFBQUJNWFFNQUFRQUFBRkJkQXdBR0FBQUFCZ0FBQUFZQVFiajNIZ3NoLy8vLy8vLy8vLzhmbUFFQUJoY0FBQUVBQUFCTVhRTUFBUUFBQUZCZEF3QUdBRUdZK0I0TEgvLy8vLy8vLy8vL1pJd0JBQWNYQUFBQkFBQUFURjBEQUFFQUFBQlFYUU1BUWZqNEhnc2gvLy8vLy8vLy8vK3Nqd0VBQ0JjQUFBRUFBQUJVWFFNQUFRQUFBRkJkQXdBR0FFSFkrUjRMRi8vLy8vLy8vLy8vUzRNQkFBOFhBQUFCQUFBQVZGMERBRUg0K1I0TEFRWUFRYmo2SGdzWC8vLy8vLy8vLy8rc29nRUFDaGdBQUFFQUFBQlVYUU1BUWRqNkhnc0JCZ0JCbVBzZUN4Zi8vLy8vLy8vLy94T0tBUUFSR1FBQUFRQUFBRVJkQXdCQnVQc2VDd0VHQUVINCt4NExGLy8vLy8vLy8vLy9kTGNBQUFBQUFBQUJBQUFBUkZ3REFFSGEvQjRMRlFFQS8vLy8vMWxDQVFBQkFBQUFBZ0FBQU5oZEF3QkIrUHdlQ3dFR0FFRzYvUjRMRlFFQS8vLy8veW5QQUFBQ0FBQUFBUUFBQUVSY0F3QkJtdjRlQ3hVQkFQLy8vLzhSendBQUF3QUFBQUVBQUFCRVhBTUFRZnIrSGdzVkFRQUFBd0VBSVdvQUFBUUFBQUFCQUFBQTRGMERBRUhhL3g0TEZRRUEvLy8vL3lwcUFBQUZBQUFBQVFBQUFPQmRBd0JCdW9BZkN4VUJBUC8vLy84aEtRRUFCZ0FBQUFFQUFBQkVYQU1BUWRpQUh3c0JCZ0JCbW9FZkN4VUJBUC8vLy84dEtRRUFCd0FBQUFFQUFBRGdYUU1BUWJpQkh3c0JCZ0JCK29FZkN4VUJBUC8vLy85ZE93RUFDQUFBQUFFQUFBQkVYQU1BUWRxQ0h3c1ZBUUQvLy8vL2tqd0JBQWtBQUFBQkFBQUFSRndEQUVHNmd4OExGUUVBLy8vLy81MDhBUUFLQUFBQUFRQUFBSEJjQXdCQm1vUWZDd3NCQVAvLy8vOU91Z0FBQ3dCQnVJUWZDd0VjQUVINmhCOExGUUVBLy8vLy8wUGxBQUFOQUFBQUFRQUFBRVJjQXdCQjJvVWZDeFVCQVAvLy8vK29QUUFBRGdBQUFBRUFBQUJFWEFNQVFicUdId3NWQVFELy8vLy84dElBQUE4QUFBQUJBQUFBaUZ3REFFR2FoeDhMRlFFQS8vLy8vK00xQVFBUUFBQUFBUUFBQUVSY0F3QkIrb2NmQ3hVQkFQLy8vLy9lR2dFQUVRQUFBQUVBQUFEa1hRTUFRZHFJSHdzVkFRRC8vLy8vcURFQUFCSUFBQUFCQUFBQVJGd0RBRUc2aVI4TEN3RUEvLy8vLzdJNEFBQVRBRUdhaWg4TEN3RUEvLy8vLyt3NUFRQVVBRUg2aWg4TEN3RUEvLy8vL3lVYkFRQVZBRUhhaXg4TEZRRUEvLy8vLzJ3eEFBQVdBQUFBQVFBQUFIQmNBd0JCdW93ZkN3c0JBUC8vLy8vcklnQUFGd0JCbW8wZkN3c0JBUC8vLy8raEhBRUFHQUJCK28wZkN3c0JBUC8vLy8rYUh3RUFHUUJCMm80ZkN4VUJBUC8vLy84Y3ZBQUFHZ0FBQUFJQUFBRG9YUU1BUWJxUEh3c1ZBUUQvLy8vL0kwRUJBQnNBQUFBQ0FBQUE2RjBEQUVIWWp4OExBUVVBUVptUUh3c1dCQUVBLy8vLy8ycTJBQUFjQUFBQUFRQUFBSEJjQXdCQitwQWZDeFVCQVAvLy8vL2N2QUFBSFFBQUFBRUFBQUR3WFFNQVFaaVJId3NCQmdCQjJwRWZDeFVCQVAvLy8vK2hzUUFBSGdBQUFBRUFBQUJFWEFNQVFmaVJId3NCQmdCQnVwSWZDeFVCQVAvLy8vOHBJd0FBSHdBQUFBRUFBQUJFWEFNQVFkaVNId3NCQmdCQm1wTWZDeFVCQVAvLy8vOE9FZ0FBSUFBQUFBRUFBQUJFWEFNQVFiaVRId3NCQmdCQitwTWZDeFVCQVAvLy8vKyszd0FBSVFBQUFBRUFBQUJFWEFNQVFaaVVId3NCQmdCQjJwUWZDeFVCQVAvLy8vODBOUUFBSWdBQUFBRUFBQUJFWEFNQVFmaVVId3NCQmdCQnVwVWZDeFVCQVAvLy8vK1ROQUFBSXdBQUFBRUFBQUJFWEFNQVFkaVZId3NCQmdCQm1wWWZDeFVCQVAvLy8vOEpld0FBSkFBQUFBRUFBQUN3WEFNQVFiaVdId3NCQmdCQitwWWZDeFVCQVAvLy8vODZLUUVBSlFBQUFBRUFBQUN3WEFNQVFaaVhId3NCQmdCQjJwY2ZDeFVCQVAvLy8vOUVZd0FBSmdBQUFBRUFBQUJ3WEFNQVFmaVhId3NCR2dCQnVwZ2ZDd3NCQVAvLy8vK1hLQUVBSndCQjJKZ2ZDd0VYQUVHYW1SOExGUUVBLy8vLy80Z29BUUFvQUFBQUFRQUFBSEJjQXdCQnVKa2ZDd0VpQUVINm1SOExGUUVBLy8vLy93NVpBQUFwQUFBQUFRQUFBTXhkQXdCQm1Kb2ZDd1VLQUFBQUdBQkIycG9mQ3hVQkFQLy8vLzhEckFBQUtnQUFBQUVBQUFCRVhBTUFRYnFiSHdzVkFRRC8vLy8veWhFQUFDc0FBQUFCQUFBQXVGMERBRUhZbXg4TEFRWUFRWnFjSHdzVkFRRC8vLy8vUENVQUFDd0FBQUFCQUFBQWNGd0RBRUc0bkI4TEFRWUFRZnFjSHdzVkFRRC8vLy8vakRRQUFDMEFBQUFCQUFBQW9Gd0RBRUdZblI4TEFRWUFRZG1kSHdzV0FRRUEvLy8vLzV4QUFRQXVBQUFBQVFBQUFIQmNBd0JCK0owZkN3RUJBRUc1bmg4TEZnSUJBUC8vLy8rMFFBRUFMd0FBQUFFQUFBQ2dYQU1BUWRpZUh3c0JBUUJCbVo4ZkN3MENBUUQvLy8vLytwb0FBSFVSQUVHd254OExCd0VBQUFEMFhRTUFRZm1mSHdzTkJBRUEvLy8vLyt1YUFBQjJFUUJCa0tBZkN3Y0JBQUFBOUYwREFFSFpvQjhMRFFRQkFQLy8vLytmcXdFQWh4TUFRZkNnSHdzSEFRQUFBUGhkQXdCQnVLRWZDeC8vLy8vLy8vLy8vMGxvQVFDQUZBQUFBUUFBQVB4ZEF3QUJBQUFBQUY0REFFR1lvaDhMSC8vLy8vLy8vLy8vV1dZQkFJSVVBQUFCQUFBQUJGNERBQUVBQUFBSVhnTUFRZmlpSHdzWC8vLy8vLy8vLy8rMlpnRUFoQlFBQUFFQUFBQU1YZ01BUWRpakh3c2gvLy8vLy8vLy8vK3RaZ0VBaUJRQUFBRUFBQUFRWGdNQUFRQUFBQlJlQXdBR0FFRzRwQjhMSC8vLy8vLy8vLy8vbm1ZQkFKY1VBQUFDQUFBQUdGMERBQUlBQUFBZ1hRTUFRWmlsSHdzZi8vLy8vLy8vLy8vY2J3RUFseFFBQUFJQUFBQVlYUU1BQWdBQUFDQmRBd0JCK0tVZkN4Ly8vLy8vLy8vLy81WmdBUUNZRkFBQUFRQUFBSkJjQXdBQkFBQUFHRjREQUVIWXBoOExILy8vLy8vLy8vLy9lV1VCQUprVUFBQUNBQUFBR0YwREFBSUFBQUFnWFFNQVFiaW5Id3NmLy8vLy8vLy8vLzhVY2dFQXBSUUFBQUlBQUFBY1hnTUFBZ0FBQUNSZUF3QkJtS2dmQ3gvLy8vLy8vLy8vLzJ4ZkFRQ2xGQUFBQWdBQUFCeGVBd0FDQUFBQUpGNERBRUg0cUI4TEgvLy8vLy8vLy8vL3lyc0FBTFFVQUFBQkFBQUFMRjREQUFFQUFBQXdYZ01BUWRtcEh3c2VCUUVBLy8vLy8wQnRBUUMwRkFBQUFRQUFBQ3hlQXdBQkFBQUFNRjREQUVHNXFoOExIZ1VCQVAvLy8vOWViZ0FBNnhRQUFBRUFBQUNrWEFNQUFnQUFBS2hjQXdCQm1hc2ZDeDRGQVFELy8vLy9IV3dCQU9zVUFBQUJBQUFBcEZ3REFBSUFBQUNvWEFNQVFmbXJId3NlQlFFQS8vLy8vMjl2QUFEc0ZBQUFBUUFBQUtSY0F3QUNBQUFBcUZ3REFFSFpyQjhMSGdVQkFQLy8vLzh3YkFFQTdCUUFBQUVBQUFDa1hBTUFBZ0FBQUtoY0F3QkJ1YTBmQ3hZRkFRRC8vLy8vSW1NQkFBb1ZBQUFCQUFBQWRGMERBRUdZcmg4TEYvLy8vLy8vLy8vLzdXSUJBQllWQUFBQkFBQUFORjREQUVINHJoOExGLy8vLy8vLy8vLy9YR2dCQUJjVkFBQUJBQUFBTkY0REFFSFlyeDhMRi8vLy8vLy8vLy8vRTJNQkFCZ1ZBQUFCQUFBQU5GNERBRUc0c0I4TEYvLy8vLy8vLy8vL2ZtZ0JBQmtWQUFBQkFBQUFORjREQUVHWXNSOExGLy8vLy8vLy8vLy91cGdCQU44VkFBQUJBQUFBUkYwREFFRzRzUjhMQVFZQVFmaXhId3NmLy8vLy8vLy8vLzlDaGdFQTRoVUFBQUVBQUFBNFhnTUFBUUFBQUlCZEF3QkIyTElmQ3hmLy8vLy8vLy8vLzNDVEFRRG5GUUFBQVFBQUFEeGVBd0JCK0xJZkN3RUtBRUc0c3g4TEYvLy8vLy8vLy8vL0JvMEJBT2dWQUFBQkFBQUFQRjREQUVHWXRCOExGLy8vLy8vLy8vLy9wcDRCQVBnVkFBQUJBQUFBUkYwREFFSDR0QjhMRi8vLy8vLy8vLy8veEtJQkFQa1ZBQUFCQUFBQVJGMERBRUdZdFI4TEFRWUFRZGkxSHdzWC8vLy8vLy8vLy8rdWxRRUEraFVBQUFFQUFBQkVYUU1BUWJpMkh3c1gvLy8vLy8vLy8vK3JtQUVBK3hVQUFBRUFBQUJFWFFNQVFaaTNId3NYLy8vLy8vLy8vLytiakFFQS9CVUFBQUVBQUFCRVhRTUFRYmkzSHdzQkJnQkIrTGNmQ3c3Ly8vLy8vLy8vLzkxNUFBQUNGZ0JCa0xnZkN3a0JBQUFBUUY0REFBRUFRZG00SHdzTkJBRUEvLy8vLzNPcUFRQUNGZ0JCOExnZkN3a0JBQUFBUUY0REFBRUFRYmk1SHdzTy8vLy8vLy8vLy8rVVF3RUFBeFlBUWRDNUh3c0pBUUFBQUVCZUF3QUtBRUdadWg4TERRUUJBUC8vLy8rMXFnRUFBeFlBUWJDNkh3c0pBUUFBQUVCZUF3QUtBRUg0dWg4TER2Ly8vLy8vLy8vL3Bxb0JBQVFXQUVHUXV4OExDUUVBQUFCRVhnTUFDZ0JCMkxzZkN4Zi8vLy8vLy8vLy95ZWdBUUMrRmdBQUFRQUFBTVJkQXdCQitMc2ZDd1VHQUFBQUZ3QkJ1THdmQ3hmLy8vLy8vLy8vLy91ZkFRQy9GZ0FBQVFBQUFNUmRBd0JCMkx3ZkN3VUdBQUFBUUFCQm1MMGZDeC8vLy8vLy8vLy8vek9UQVFEQkZnQUFBUUFBQUVoZUF3QUJBQUFBVEY0REFFSDR2UjhMSWYvLy8vLy8vLy8vSjRZQkFNSVdBQUFCQUFBQVNGNERBQUVBQUFCTVhnTUFDZ0JCMkw0ZkN5SC8vLy8vLy8vLy8vYVBBUURERmdBQUFRQUFBRWhlQXdBQkFBQUFURjREQUFZQVFiaS9Id3NoLy8vLy8vLy8vLzhybWdFQXhCWUFBQUVBQUFCSVhnTUFBUUFBQUV4ZUF3QUdBRUdZd0I4TElmLy8vLy8vLy8vL1dKRUJBTVVXQUFBQkFBQUFTRjREQUFFQUFBQk1YZ01BQmdCQitNQWZDeC8vLy8vLy8vLy8vK0NUQVFER0ZnQUFBUUFBQUVoZUF3QUJBQUFBVEY0REFFSFl3UjhMSC8vLy8vLy8vLy8vOEpNQkFNY1dBQUFCQUFBQVNGNERBQUVBQUFCTVhnTUFRYmpDSHdzaC8vLy8vLy8vLy85N2tBRUF5QllBQUFFQUFBQklYZ01BQVFBQUFFeGVBd0FHQUVHWXd4OExILy8vLy8vLy8vLy9kb2tCQU1rV0FBQUJBQUFBU0Y0REFBRUFBQUJNWGdNQVFmakRId3NsLy8vLy8vLy8vLytRbndFQXloWUFBQUVBQUFCSVhnTUFBUUFBQUV4ZUF3QUtBQUFBQ2dCQjJNUWZDeUgvLy8vLy8vLy8vL2lNQVFETEZnQUFBUUFBQUVoZUF3QUJBQUFBVEY0REFBWUFRYmpGSHdzaC8vLy8vLy8vLy84WG1nRUF6QllBQUFFQUFBQklYZ01BQVFBQUFFeGVBd0FHQUVHWXhoOExGLy8vLy8vLy8vLy90cUFCQUFzWEFBQUJBQUFBVUY0REFFSDR4aDhMRi8vLy8vLy8vLy8vMzVzQkFBd1hBQUFCQUFBQVVGNERBRUdZeHg4TEFRWUFRZGpISHdzWC8vLy8vLy8vLy8rYW9BRUFEUmNBQUFFQUFBQlFYZ01BUWJqSUh3c1gvLy8vLy8vLy8vOTVtZ0VBRGhjQUFBRUFBQUJRWGdNQVFkaklId3NCQmdCQm1Na2ZDeGYvLy8vLy8vLy8vNEdlQVFBUkZ3QUFBUUFBQUZSZUF3QkIrTWtmQ3hmLy8vLy8vLy8vLzVXVkFRQVRGd0FBQVFBQUFGaGVBd0JCMk1vZkN4Zi8vLy8vLy8vLy80ZWdBUUFWRndBQUFRQUFBRnhlQXdCQitNb2ZDd1VHQUFBQUJnQkJ1TXNmQ3hmLy8vLy8vLy8vLzdpY0FRQWFGd0FBQVFBQUFHaGNBd0JCMk1zZkN3RUJBRUdZekI4TEYvLy8vLy8vLy8vL25wSUJBQnNYQUFBQkFBQUFhRndEQUVHNHpCOExBUUVBUWZqTUh3c1gvLy8vLy8vLy8vOEptUUVBSFJjQUFBRUFBQUJnWGdNQVFaak5Id3NCQmdCQjJNMGZDeGYvLy8vLy8vLy8vNWFHQVFBZUZ3QUFBUUFBQUdCZUF3QkIrTTBmQ3dFR0FFRzR6aDhMRi8vLy8vLy8vLy8va3A0QkFCOFhBQUFCQUFBQVlGNERBRUhZemg4TEFRWUFRWmpQSHdzWC8vLy8vLy8vLy85ZGxnRUFJUmNBQUFFQUFBQmtYZ01BUWJqUEh3c0JCZ0JCK004ZkN4Zi8vLy8vLy8vLy81dWZBUUE0RndBQUFRQUFBR2hlQXdCQm1OQWZDd0VHQUVIWTBCOExGLy8vLy8vLy8vLy8zSjhCQU1BWEFBQUJBQUFBeEYwREFFSDQwQjhMQlFZQUFBQkJBRUc0MFI4TEYvLy8vLy8vLy8vL3lKSUJBTVVYQUFBQkFBQUFSRjBEQUVHWTBoOExGLy8vLy8vLy8vLy95WlVCQU1jWEFBQUJBQUFBUkYwREFFSDQwaDhMRi8vLy8vLy8vLy8vUjZnQkFQd1hBQUFCQUFBQVJGMERBRUhZMHg4TEYvLy8vLy8vLy8vL2dJb0JBQjhZQUFBQkFBQUFiRjREQUVHNDFCOExGLy8vLy8vLy8vLy9tNG9CQUNBWUFBQUJBQUFBYkY0REFFR1kxUjhMRi8vLy8vLy8vLy8vT3BvQkFDRVlBQUFCQUFBQWJGNERBRUc0MVI4TEFRWUFRZmpWSHdzWC8vLy8vLy8vLy85Ym1nRUFJaGdBQUFFQUFBQnNYZ01BUVpqV0h3c0JCZ0JCMk5ZZkN4Zi8vLy8vLy8vLy8zcUdBUUFqR0FBQUFRQUFBR3hlQXdCQitOWWZDd0VHQUVHNDF4OExGLy8vLy8vLy8vLy9RYUFCQUNRWUFBQUJBQUFBYkY0REFFSFkxeDhMQVJrQVFaallId3NYLy8vLy8vLy8vLys2aUFFQUpSZ0FBQUVBQUFCc1hnTUFRYmpZSHdzQkJnQkIrTmdmQ3hmLy8vLy8vLy8vLzllSUFRQW1HQUFBQVFBQUFHeGVBd0JCbU5rZkN3RUdBRUhZMlI4TEYvLy8vLy8vLy8vL3Vvb0JBQ2NZQUFBQkFBQUFiRjREQUVHNDJoOExDdi8vLy8vLy8vLy9jT0VBUVpyYkh3c0xBUUQvLy8vL2ZqNEFBQUVBUWZyYkh3c0xBUUQvLy8vL2VENEFBQUlBUWRyY0h3c0xBUUQvLy8vLy9SWUFBQU1BUWZqY0h3c0JCZ0JCdXQwZkN3c0JBUC8vLy84TExBRUFCQUJCMk4wZkN3VUdBQUFBQmdCQm10NGZDd3NCQVAvLy8vL21tZ0FBQlFCQit0NGZDd3NCQVAvLy8vOXA0UUFBQmdCQjJ0OGZDd3NCQVAvLy8vKzc2Z0FBQndCQnV1QWZDd3NCQVAvLy8vOWdGUUFBQ0FCQjJPQWZDd0VHQUVHYTRSOExDQUVBLy8vLy8zRGhBRUg2NFI4TEN3RUEvLy8vLzM0K0FBQUJBRUhhNGg4TEN3RUEvLy8vLzNnK0FBQUNBRUc2NHg4TEN3RUEvLy8vLy8wV0FBQURBRUhZNHg4TEFRWUFRWnJrSHdzTEFRRC8vLy8vQ3l3QkFBUUFRYmprSHdzRkJnQUFBQVlBUWZya0h3c0xBUUQvLy8vLzVwb0FBQVVBUWRybEh3c0xBUUQvLy8vL2FlRUFBQVlBUWJybUh3c0xBUUQvLy8vL3Urb0FBQWNBUVpybkh3c0xBUUQvLy8vL1lCVUFBQWdBUWJqbkh3c0JCZ0JCK3VjZkN3c0JBUC8vLy85ZkpRQUFDUUJCbU9nZkN3VUdBQUFBQmdCQjJ1Z2ZDeWdCQVAvLy8vOEFBQUFBQUFBQUFKUUZBQUM4QndBQXZRY0FBTDRIQUFDL0J3QUF3QWNBQU1FSEFFR002UjhMR3BRRkFBRENCd0FBd3djQUFNUUhBQURGQndBQXhnY0FBTWNIQUVHdzZSOExHcFFGQUFESUJ3QUF5UWNBQU1vSEFBRExCd0FBekFjQUFNMEhBRUhVNlI4TEdwUUZBQURPQndBQXp3Y0FBTkFIQUFEUkJ3QUEwZ2NBQU5NSEFFSDQ2UjhMR3BRRkFBRFVCd0FBMVFjQUFOWUhBQURYQndBQTJBY0FBTmtIQUVHYzZoOExHcFFGQUFEYUJ3QUEyd2NBQU53SEFBRGRCd0FBM2djQUFOOEhBRUhBNmg4TEdwUUZBQURnQndBQTRRY0FBT0lIQUFEakJ3QUE1QWNBQU9VSEFFSGs2aDhMR3BRRkFBRG1Cd0FBNXdjQUFPZ0hBQURwQndBQTZnY0FBT3NIQUVHSTZ4OExHcFFGQUFEc0J3QUE3UWNBQU80SEFBRHZCd0FBOEFjQUFQRUhBRUdzNng4TEdwUUZBQUR5QndBQTh3Y0FBUFFIQUFEMUJ3QUE5Z2NBQVBjSEFFSFE2eDhMR3BRRkFBRDRCd0FBK1FjQUFQb0hBQUQ3QndBQS9BY0FBUDBIQUVIMDZ4OExHcFFGQUFEK0J3QUEvd2NBQUFBSUFBQUJDQUFBQWdnQUFBTUlBRUdZN0I4TEdwUUZBQUFFQ0FBQUJRZ0FBQVlJQUFBSENBQUFDQWdBQUFrSUFFRzg3QjhMR3BRRkFBQUtDQUFBQ3dnQUFBd0lBQUFOQ0FBQURnZ0FBQThJQUVIZzdCOExHcFFGQUFBUUNBQUFFUWdBQUJJSUFBQVRDQUFBRkFnQUFCVUlBRUdFN1I4TEdwUUZBQUFXQ0FBQUZ3Z0FBQmdJQUFBWkNBQUFHZ2dBQUJzSUFFR283UjhMR3BRRkFBQWNDQUFBSFFnQUFCNElBQUFmQ0FBQUlBZ0FBQ0VJQUVITTdSOEx3Z0tVQlFBQUlnZ0FBQ01JQUFBa0NBQUFKUWdBQUNZSUFBQW5DQUFBYnFvQkFQdXVBUUR0cmdFQXo2NEJBTm11QVFEMXJnRUFwMzBBQUhaOUFBQ3BKd0VBazMwQUFISGVBQUNmSUFFQWhNZ0FBSlRJQUFDandBQUFGQ2NCQUNkS0FBRDRDQUFBZENjQkFBQW5BUUFuUFFBQWxIc0FBSFlLQVFDTUp3RUF2UWdCQUU5MkFBQng2d0FBWWEwQUFPMjRBQUFUcmdBQXZsWUFBRktnQUFEaUNBQUEzQ01CQUZZbkFRRFR2UUFBdGIwQUFNSzlBQUIrUmdBQVZQQUFBUHV1QVFEY0l3RUFma1lBQUtkOUFBQ25mUUFBclhnQUFISGVBQUJQZGdBQXNPZ0FBT0tnQUFEaW9BQUE0cUFBQU9LZ0FBQ3RWZ0FBazk4QUFJRUdBUUIxZGdBQU9LNEFBSmhXQUFCKzN3QUFiQVlCQUdCMkFBQWpyZ0FBVHdRQUFFY25BUUExSndFQUl5Y0JBQndtQVFDT1ZnQUFaS3NBQUVJRUFRQWNCQUVBQlQwQUFBVTlBRUdZOEI4TEdpZ0lBQUFwQ0FBQUtnZ0FBQ3NJQUFBc0NBQUFMUWdBQUM0SUFFRzg4QjhMR3RZRkFBQXlDQUFBTXdnQUFEUUlBQUExQ0FBQU5nZ0FBRGNJQUVIZzhCOExHamdJQUFBNUNBQUFPZ2dBQURzSUFBQThDQUFBUFFnQUFENElBRUdFOFI4TEdtUUlBQUJsQ0FBQVpnZ0FBR2NJQUFCb0NBQUFhUWdBQUdvSUFFR284UjhMR21zSUFBQnNDQUFBYlFnQUFHNElBQUJ2Q0FBQWNBZ0FBSEVJQUVITThSOExHbklJQUFCekNBQUFkQWdBQUhVSUFBQjJDQUFBZHdnQUFIZ0lBRUh3OFI4TEdua0lBQUI2Q0FBQWV3Z0FBSHdJQUFCOUNBQUFmZ2dBQUg4SUFFR1U4aDhMR29BSUFBQ0JDQUFBZ2dnQUFJTUlBQUNFQ0FBQWhRZ0FBSVlJQUVHNDhoOExHb0FJQUFDSENBQUFpQWdBQUlrSUFBQ0tDQUFBaXdnQUFJd0lBRUhjOGg4TEdvQUlBQUNOQ0FBQWpnZ0FBSThJQUFDUUNBQUFrUWdBQUpJSUFFR0E4eDhMR3BNSUFBQ1VDQUFBbFFnQUFKWUlBQUNYQ0FBQW1BZ0FBSmtJQUVHazh4OExHb0FJQUFDYUNBQUFtd2dBQUp3SUFBQ2RDQUFBbmdnQUFKOElBRUhJOHg4TEdvQUlBQUNnQ0FBQW9RZ0FBS0lJQUFDakNBQUFwQWdBQUtVSUFFSHM4eDhMR29BSUFBQ21DQUFBcHdnQUFLZ0lBQUNwQ0FBQXFnZ0FBS3NJQUVHUTlCOExHb0FJQUFDc0NBQUFyUWdBQUs0SUFBQ3ZDQUFBc0FnQUFMRUlBRUcwOUI4TEdvQUlBQUN5Q0FBQXN3Z0FBTFFJQUFDMUNBQUF0Z2dBQUxjSUFFSFk5QjhMR29BSUFBQzRDQUFBdVFnQUFMb0lBQUM3Q0FBQXZBZ0FBTDBJQUVIODlCOExHb0FJQUFDK0NBQUF2d2dBQU1BSUFBREJDQUFBd2dnQUFNTUlBRUdnOVI4TEdvQUlBQURFQ0FBQXhRZ0FBTVlJQUFESENBQUF5QWdBQU1rSUFFSEU5UjhMR29BSUFBREtDQUFBeXdnQUFNd0lBQUROQ0FBQXpnZ0FBTThJQUVIbzlSOExHb0FJQUFEUUNBQUEwUWdBQU5JSUFBRFRDQUFBMUFnQUFOVUlBRUdNOWg4TEd0WUlBQURYQ0FBQTJBZ0FBTmtJQUFEYUNBQUEyd2dBQU53SUFFR3c5aDhMR3QwSUFBRGVDQUFBM3dnQUFPQUlBQURoQ0FBQTRnZ0FBT01JQUVIVTloOExHb0FJQUFEa0NBQUE1UWdBQU9ZSUFBRG5DQUFBNkFnQUFPa0lBRUg0OWg4TEdvQUlBQURxQ0FBQTZ3Z0FBT3dJQUFEdENBQUE3Z2dBQU84SUFFR2M5eDhMR3ZBSUFBRHhDQUFBOGdnQUFQTUlBQUQwQ0FBQTlRZ0FBUFlJQUVIQTl4OExHb0FJQUFEM0NBQUErQWdBQVBrSUFBRDZDQUFBK3dnQUFQd0lBRUhrOXg4TEdvQUlBQUQ5Q0FBQS9nZ0FBUDhJQUFBQUNRQUFBUWtBQUFJSkFFR0krQjhMR29BSUFBQURDUUFBQkFrQUFBVUpBQUFHQ1FBQUJ3a0FBQWdKQUVHcytCOExHZ2tKQUFBS0NRQUFDd2tBQUF3SkFBQU5DUUFBRGdrQUFBOEpBRUhRK0I4TEdvQUlBQUFRQ1FBQUVRa0FBQklKQUFBVENRQUFGQWtBQUJVSkFFSDArQjhMR29BSUFBQVdDUUFBRndrQUFCZ0pBQUFaQ1FBQUdna0FBQnNKQUVHWStSOExHb0FJQUFBY0NRQUFIUWtBQUI0SkFBQWZDUUFBSUFrQUFDRUpBRUc4K1I4TEdvQUlBQUFpQ1FBQUl3a0FBQ1FKQUFBbENRQUFKZ2tBQUNjSkFFSGcrUjhMR29BSUFBQW9DUUFBS1FrQUFDb0pBQUFyQ1FBQUxBa0FBQzBKQUVHRStoOExHaTRKQUFBdkNRQUFNQWtBQURFSkFBQXlDUUFBTXdrQUFEUUpBRUdvK2g4TEdqVUpBQUEyQ1FBQU53a0FBRGdKQUFBNUNRQUFPZ2tBQURzSkFFSE0raDhMR2p3SkFBQTlDUUFBUGdrQUFEOEpBQUJBQ1FBQVFRa0FBRUlKQUVIdytoOExHa01KQUFCRUNRQUFSUWtBQUVZSkFBQkhDUUFBU0FrQUFFa0pBRUdVK3g4TEdrb0pBQUJMQ1FBQVRBa0FBRTBKQUFCT0NRQUFUd2tBQUZBSkFFRzQreDhMR2xFSkFBQlNDUUFBVXdrQUFGUUpBQUJWQ1FBQVZna0FBRmNKQUVIYyt4OExHb0FJQUFCWUNRQUFXUWtBQUZvSkFBQmJDUUFBWEFrQUFGMEpBRUdBL0I4TEdvQUlBQUJlQ1FBQVh3a0FBR0FKQUFCaENRQUFZZ2tBQUdNSkFFR2svQjhMR29BSUFBQmtDUUFBWlFrQUFHWUpBQUJuQ1FBQWFBa0FBR2tKQUVISS9COExHb0FJQUFCcUNRQUFhd2tBQUd3SkFBQnRDUUFBYmdrQUFHOEpBRUhzL0I4TEdvQUlBQUJ3Q1FBQWNRa0FBSElKQUFCekNRQUFkQWtBQUhVSkFFR1EvUjhMR29BSUFBQjJDUUFBZHdrQUFIZ0pBQUI1Q1FBQWVna0FBSHNKQUVHMC9SOExHb0FJQUFCOENRQUFmUWtBQUg0SkFBQi9DUUFBZ0FrQUFJRUpBRUhZL1I4TEdvQUlBQUNDQ1FBQWd3a0FBSVFKQUFDRkNRQUFoZ2tBQUljSkFFSDgvUjhMR29nSkFBQ0pDUUFBaWdrQUFJc0pBQUNNQ1FBQWpRa0FBSTRKQUVHZy9oOExHbzhKQUFDUUNRQUFrUWtBQUpJSkFBQ1RDUUFBbEFrQUFKVUpBRUhFL2g4TEdvQUlBQUNXQ1FBQWx3a0FBSmdKQUFDWkNRQUFtZ2tBQUpzSkFFSG8vaDhMR29BSUFBQ2NDUUFBblFrQUFKNEpBQUNmQ1FBQW9Ba0FBS0VKQUVHTS94OExHb0FJQUFDaUNRQUFvd2tBQUtRSkFBQ2xDUUFBcGdrQUFLY0pBRUd3L3g4TEdvQUlBQUNvQ1FBQXFRa0FBS29KQUFDckNRQUFyQWtBQUswSkFFSFUveDhMR29BSUFBQ3VDUUFBcndrQUFMQUpBQUN4Q1FBQXNna0FBTE1KQUVINC94OExHb0FJQUFDMENRQUF0UWtBQUxZSkFBQzNDUUFBdUFrQUFMa0pBRUdjZ0NBTEdvQUlBQUM2Q1FBQXV3a0FBTHdKQUFDOUNRQUF2Z2tBQUw4SkFFSEFnQ0FMR29BSUFBREFDUUFBd1FrQUFNSUpBQUREQ1FBQXhBa0FBTVVKQUVIa2dDQUxHb0FJQUFER0NRQUF4d2tBQU1nSkFBREpDUUFBeWdrQUFNc0pBRUdJZ1NBTEdvQUlBQURNQ1FBQXpRa0FBTTRKQUFEUENRQUEwQWtBQU5FSkFFR3NnU0FMR29BSUFBRFNDUUFBMHdrQUFOUUpBQURWQ1FBQTFna0FBTmNKQUVIUWdTQUxHb0FJQUFEWUNRQUEyUWtBQU5vSkFBRGJDUUFBM0FrQUFOMEpBRUgwZ1NBTEdvQUlBQURlQ1FBQTN3a0FBT0FKQUFEaENRQUE0Z2tBQU9NSkFFR1lnaUFMR29BSUFBRGtDUUFBNVFrQUFPWUpBQURuQ1FBQTZBa0FBT2tKQUVHOGdpQUxHb0FJQUFEcUNRQUE2d2tBQU93SkFBRHRDUUFBN2drQUFPOEpBRUhnZ2lBTEdvQUlBQUR3Q1FBQThRa0FBUElKQUFEekNRQUE5QWtBQVBVSkFFR0VneUFMR29BSUFBRDJDUUFBOXdrQUFQZ0pBQUQ1Q1FBQStna0FBUHNKQUVHb2d5QUxHb0FJQUFEOENRQUEvUWtBQVA0SkFBRC9DUUFBQUFvQUFBRUtBRUhNZ3lBTEdvQUlBQUFDQ2dBQUF3b0FBQVFLQUFBRkNnQUFCZ29BQUFjS0FFSHdneUFMR2dnS0FBQUpDZ0FBQ2dvQUFBc0tBQUFNQ2dBQURRb0FBQTRLQUVHVWhDQUxHZ2dLQUFBUENnQUFFQW9BQUJFS0FBQVNDZ0FBRXdvQUFCUUtBRUc0aENBTEdoVUtBQUFXQ2dBQUZ3b0FBQmdLQUFBWkNnQUFHZ29BQUJzS0FFSGNoQ0FMR2dnS0FBQWNDZ0FBSFFvQUFCNEtBQUFmQ2dBQUlBb0FBQ0VLQUVHQWhTQUxHZ2dLQUFBaUNnQUFJd29BQUNRS0FBQWxDZ0FBSmdvQUFDY0tBRUdraFNBTFNpZ0tBQUFwQ2dBQUtnb0FBQ3NLQUFBc0NnQUFMUW9BQUM0S0FBRFZxd0FBWWVZQUFDS2FBQUNHOGdBQVJYMEFBQU0xQUFBNWZRQUE2OHdBQUlETkFBQ016UUFBZ00wQUFQek1BRUg0aFNBTEdpOEtBQUF3Q2dBQU1Rb0FBRElLQUFBekNnQUFOQW9BQURVS0FFR2NoaUFMR2k4S0FBQTJDZ0FBTndvQUFEZ0tBQUE1Q2dBQU9nb0FBRHNLQUVIQWhpQUxHaThLQUFBOENnQUFQUW9BQUQ0S0FBQS9DZ0FBUUFvQUFFRUtBRUhraGlBTEdqZ0lBQUJDQ2dBQVF3b0FBRVFLQUFCRkNnQUFSZ29BQUVjS0FFR0loeUFMR2tnS0FBQkpDZ0FBU2dvQUFFc0tBQUJNQ2dBQVRRb0FBRTRLQUVHc2h5QUxHazhLQUFCUUNnQUFVUW9BQUZJS0FBQlRDZ0FBVkFvQUFGVUtBRUhRaHlBTEdsWUtBQUJYQ2dBQVdBb0FBRmtLQUFCYUNnQUFXd29BQUZ3S0FFSDBoeUFMR2s4S0FBQmRDZ0FBWGdvQUFGOEtBQUJnQ2dBQVlRb0FBR0lLQUVHWWlDQUxHazhLQUFCakNnQUFaQW9BQUdVS0FBQm1DZ0FBWndvQUFHZ0tBRUc4aUNBTEdta0tBQUJxQ2dBQWF3b0FBR3dLQUFCdENnQUFiZ29BQUc4S0FFSGdpQ0FMR2s4S0FBQndDZ0FBY1FvQUFISUtBQUJ6Q2dBQWRBb0FBSFVLQUVHRWlTQUxHazhLQUFCMkNnQUFkd29BQUhnS0FBQjVDZ0FBZWdvQUFIc0tBRUdvaVNBTEdrOEtBQUI4Q2dBQWZRb0FBSDRLQUFCL0NnQUFnQW9BQUlFS0FFSE1pU0FMR2s4S0FBQ0NDZ0FBZ3dvQUFJUUtBQUNGQ2dBQWhnb0FBSWNLQUVId2lTQUxHazhLQUFDSUNnQUFpUW9BQUlvS0FBQ0xDZ0FBakFvQUFJMEtBRUdVaWlBTEdrOEtBQUNPQ2dBQWp3b0FBSkFLQUFDUkNnQUFrZ29BQUpNS0FFRzRpaUFMR2s4S0FBQ1VDZ0FBbFFvQUFKWUtBQUNYQ2dBQW1Bb0FBSmtLQUVIY2lpQUxHazhLQUFDYUNnQUFtd29BQUp3S0FBQ2RDZ0FBbmdvQUFKOEtBRUdBaXlBTEdqZ0lBQUNnQ2dBQW9Rb0FBS0lLQUFDakNnQUFwQW9BQUtVS0FFR2tpeUFMR2tnS0FBQ21DZ0FBcHdvQUFLZ0tBQUNwQ2dBQXFnb0FBS3NLQUVISWl5QUxHamdJQUFDc0NnQUFyUW9BQUs0S0FBQ3ZDZ0FBc0FvQUFMRUtBRUhzaXlBTFdrZ0tBQUN5Q2dBQXN3b0FBTFFLQUFDMUNnQUF0Z29BQUxjS0FBRENmZ0FBd240QUFNSitBQURDZmdBQXduNEFBTUorQUFEQ2ZnQUF3bjRBQU1KK0FBRENmZ0FBd240QUFNSitBQUQ4RkFFQS9CUUJBUHdVQVFEQ2ZnQkIwSXdnQ3hxNEJnQUF1QW9BQUxrS0FBQzZDZ0FBdXdvQUFMd0tBQUM5Q2dCQjlJd2dDeHErQ2dBQXZ3b0FBTUFLQUFEQkNnQUF3Z29BQU1NS0FBREVDZ0JCbUkwZ0N4bzRDQUFBeFFvQUFNWUtBQURIQ2dBQXlBb0FBTWtLQUFES0NnQkJ2STBnQ3hvNENBQUF5d29BQU13S0FBRE5DZ0FBemdvQUFNOEtBQURRQ2dCQjRJMGdDeHBJQ2dBQTBRb0FBTklLQUFEVENnQUExQW9BQU5VS0FBRFdDZ0JCaEk0Z0N4bzRDQUFBMXdvQUFOZ0tBQURaQ2dBQTJnb0FBTnNLQUFEY0NnQkJxSTRnQ3hvNENBQUEzUW9BQU40S0FBRGZDZ0FBNEFvQUFPRUtBQURpQ2dCQnpJNGdDeG80Q0FBQTR3b0FBT1FLQUFEbENnQUE1Z29BQU9jS0FBRG9DZ0JCOEk0Z0N4cnBDZ0FBNmdvQUFPc0tBQURzQ2dBQTdRb0FBTzRLQUFEdkNnQkJsSThnQ3hyd0NnQUE4UW9BQVBJS0FBRHpDZ0FBOUFvQUFQVUtBQUQyQ2dCQnVJOGdDeHIzQ2dBQStBb0FBUGtLQUFENkNnQUErd29BQVB3S0FBRDlDZ0JCM0k4Z0N4citDZ0FBL3dvQUFBQUxBQUFCQ3dBQUFnc0FBQU1MQUFBRUN3QkJnSkFnQ3hvRkN3QUFCZ3NBQUFjTEFBQUlDd0FBQ1FzQUFBb0xBQUFMQ3dCQnBKQWdDeG9NQ3dBQURRc0FBQTRMQUFBUEN3QUFFQXNBQUJFTEFBQVNDd0JCeUpBZ0N4b1RDd0FBRkFzQUFCVUxBQUFXQ3dBQUZ3c0FBQmdMQUFBWkN3QkI3SkFnQ3hvYUN3QUFHd3NBQUJ3TEFBQWRDd0FBSGdzQUFCOExBQUFnQ3dCQmtKRWdDeG9oQ3dBQUlnc0FBQ01MQUFBa0N3QUFKUXNBQUNZTEFBQW5Dd0JCdEpFZ0N4b29Dd0FBS1FzQUFDb0xBQUFyQ3dBQUxBc0FBQzBMQUFBdUN3QkIySkVnQ3hvb0N3QUFMd3NBQURBTEFBQXhDd0FBTWdzQUFETUxBQUEwQ3dCQi9KRWdDeG9vQ3dBQU5Rc0FBRFlMQUFBM0N3QUFPQXNBQURrTEFBQTZDd0JCb0pJZ0N4bzdDd0FBUEFzQUFEMExBQUErQ3dBQVB3c0FBRUFMQUFCQkN3QkJ4SklnQ3hvN0N3QUFRZ3NBQUVNTEFBQkVDd0FBUlFzQUFFWUxBQUJIQ3dCQjZKSWdDeG83Q3dBQVNBc0FBRWtMQUFCS0N3QUFTd3NBQUV3TEFBQk5Dd0JCakpNZ0N4bzdDd0FBVGdzQUFFOExBQUJRQ3dBQVVRc0FBRklMQUFCVEN3QkJzSk1nQ3hvSUNnQUFWQXNBQUZVTEFBQldDd0FBVndzQUFGZ0xBQUJaQ3dCQjFKTWdDeG9JQ2dBQVdnc0FBRnNMQUFCY0N3QUFYUXNBQUY0TEFBQmZDd0JCK0pNZ0N4b1ZDZ0FBWUFzQUFHRUxBQUJpQ3dBQVl3c0FBR1FMQUFCbEN3QkJuSlFnQ3hvN0N3QUFaZ3NBQUdjTEFBQm9Dd0FBYVFzQUFHb0xBQUJyQ3dCQndKUWdDeG83Q3dBQWJBc0FBRzBMQUFCdUN3QUFid3NBQUhBTEFBQnhDd0JCNUpRZ0N4cHlDd0FBY3dzQUFIUUxBQUIxQ3dBQWRnc0FBSGNMQUFCNEN3QkJpSlVnQ3hyV0JRQUFld3NBQUh3TEFBQjlDd0FBZmdzQUFIOExBQUNBQ3dCQnJKVWdDeHE0QmdBQWdRc0FBSUlMQUFDREN3QUFoQXNBQUlVTEFBQ0dDd0JCMEpVZ0N4cUhDd0FBaUFzQUFJa0xBQUNLQ3dBQWl3c0FBSXdMQUFDTkN3QkI5SlVnQ3hxT0N3QUFqd3NBQUpBTEFBQ1JDd0FBa2dzQUFKTUxBQUNVQ3dCQm1KWWdDeHFWQ3dBQWxnc0FBSmNMQUFDWUN3QUFtUXNBQUpvTEFBQ2JDd0JCdkpZZ0N4cWNDd0FBblFzQUFKNExBQUNmQ3dBQW9Bc0FBS0VMQUFDaUN3QkI0SllnQ3hxakN3QUFwQXNBQUtVTEFBQ21Dd0FBcHdzQUFLZ0xBQUNwQ3dCQmhKY2dDeHFxQ3dBQXF3c0FBS3dMQUFDdEN3QUFyZ3NBQUs4TEFBQ3dDd0JCcUpjZ0N4cXhDd0FBc2dzQUFMTUxBQUMwQ3dBQXRRc0FBTFlMQUFDM0N3QkJ6SmNnQ3hxNEN3QUF1UXNBQUxvTEFBQzdDd0FBdkFzQUFMMExBQUMrQ3dCQjhKY2dDeG80Q0FBQXZ3c0FBTUFMQUFEQkN3QUF3Z3NBQU1NTEFBREVDd0JCbEpnZ0N4bzRDQUFBeFFzQUFNWUxBQURIQ3dBQXlBc0FBTWtMQUFES0N3QkJ1SmdnQ3hvaEN3QUF5d3NBQU13TEFBRE5Dd0FBemdzQUFNOExBQURRQ3dCQjNKZ2dDeVVoQ3dBQTBRc0FBTklMQUFEVEN3QUExQXNBQU5VTEFBRFdDd0FBY0NWWUFBQUFBQUFGQUVHTW1TQUxBdXdMQUVHa21TQUxEdTBMQUFEdUN3QUFtQkFJQUFBRUFFRzhtU0FMQVFFQVFjeVpJQXNGLy8vLy93b0FRWkNhSUFzSmdBd0lBQUFBQUFBSkFFR2ttaUFMQWlvTUFFRzRtaUFMRWlzTUFBQUFBQUFBTEF3QUFCZ1ZDQUFBQkFCQjVKb2dDd1QvLy8vL0FFR29teUFMQVFVQVFiU2JJQXNDS2d3QVFjeWJJQXNMN1FzQUFDd01BQUFnR1FnQVFlU2JJQXNCQWdCQjlKc2dDd2ovLy8vLy8vLy8vd0JCdUp3Z0N3T29EUWc9IjsKICBpZiAoIWlzRGF0YVVSSSh3YXNtQmluYXJ5RmlsZSkpIHsKICAgIHdhc21CaW5hcnlGaWxlID0gbG9jYXRlRmlsZSh3YXNtQmluYXJ5RmlsZSk7CiAgfQogIGZ1bmN0aW9uIGdldEJpbmFyeShmaWxlKSB7CiAgICB0cnkgewogICAgICBpZiAoZmlsZSA9PSB3YXNtQmluYXJ5RmlsZSAmJiB3YXNtQmluYXJ5KSB7CiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHdhc21CaW5hcnkpOwogICAgICB9CiAgICAgIGlmIChyZWFkQmluYXJ5KSB7CiAgICAgICAgcmV0dXJuIHJlYWRCaW5hcnkoZmlsZSk7CiAgICAgIH0KICAgICAgdGhyb3cgImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjsKICAgIH0gY2F0Y2ggKGVycikgewogICAgICBhYm9ydChlcnIpOwogICAgfQogIH0KICBmdW5jdGlvbiBnZXRCaW5hcnlQcm9taXNlKCkgewogICAgaWYgKCF3YXNtQmluYXJ5ICYmIChFTlZJUk9OTUVOVF9JU19XRUIgfHwgRU5WSVJPTk1FTlRfSVNfV09SS0VSKSkgewogICAgICBpZiAodHlwZW9mIGZldGNoID09PSAiZnVuY3Rpb24iICYmICFpc0ZpbGVVUkkod2FzbUJpbmFyeUZpbGUpKSB7CiAgICAgICAgcmV0dXJuIGZldGNoKHdhc21CaW5hcnlGaWxlLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pCiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgICAgaWYgKCFyZXNwb25zZVsib2siXSkgewogICAgICAgICAgICAgIHRocm93ICJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICciICsgd2FzbUJpbmFyeUZpbGUgKyAiJyI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlWyJhcnJheUJ1ZmZlciJdKCk7CiAgICAgICAgICB9KQogICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIGdldEJpbmFyeSh3YXNtQmluYXJ5RmlsZSk7CiAgICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAocmVhZEFzeW5jKSB7CiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICByZWFkQXN5bmMoCiAgICAgICAgICAgICAgd2FzbUJpbmFyeUZpbGUsCiAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICByZXNvbHZlKG5ldyBVaW50OEFycmF5KHJlc3BvbnNlKSk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICByZWplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIGdldEJpbmFyeSh3YXNtQmluYXJ5RmlsZSk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gY3JlYXRlV2FzbSgpIHsKICAgIGxldCBpbmZvID0geyBhOiBhc21MaWJyYXJ5QXJnIH07CiAgICBmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoaW5zdGFuY2UsIG1vZHVsZSkgewogICAgICBsZXQgZXhwb3J0cyA9IGluc3RhbmNlLmV4cG9ydHM7CiAgICAgIE1vZHVsZVsiYXNtIl0gPSBleHBvcnRzOwogICAgICB3YXNtTWVtb3J5ID0gTW9kdWxlWyJhc20iXVsibyJdOwogICAgICB1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyh3YXNtTWVtb3J5LmJ1ZmZlcik7CiAgICAgIHdhc21UYWJsZSA9IE1vZHVsZVsiYXNtIl1bInMiXTsKICAgICAgYWRkT25Jbml0KE1vZHVsZVsiYXNtIl1bInAiXSk7CiAgICAgIHJlbW92ZVJ1bkRlcGVuZGVuY3koIndhc20taW5zdGFudGlhdGUiKTsKICAgIH0KICAgIGFkZFJ1bkRlcGVuZGVuY3koIndhc20taW5zdGFudGlhdGUiKTsKICAgIGZ1bmN0aW9uIHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KHJlc3VsdCkgewogICAgICByZWNlaXZlSW5zdGFuY2UocmVzdWx0WyJpbnN0YW5jZSJdKTsKICAgIH0KICAgIGZ1bmN0aW9uIGluc3RhbnRpYXRlQXJyYXlCdWZmZXIocmVjZWl2ZXIpIHsKICAgICAgcmV0dXJuIGdldEJpbmFyeVByb21pc2UoKQogICAgICAgIC50aGVuKGZ1bmN0aW9uIChiaW5hcnkpIHsKICAgICAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShiaW5hcnksIGluZm8pOwogICAgICAgIH0pCiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGluc3RhbmNlKSB7CiAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgICAgfSkKICAgICAgICAudGhlbihyZWNlaXZlciwgZnVuY3Rpb24gKHJlYXNvbikgewogICAgICAgICAgZXJyKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiICsgcmVhc29uKTsKICAgICAgICAgIGFib3J0KHJlYXNvbik7CiAgICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBpbnN0YW50aWF0ZUFzeW5jKCkgewogICAgICBpZiAoCiAgICAgICAgIXdhc21CaW5hcnkgJiYKICAgICAgICB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcgPT09ICJmdW5jdGlvbiIgJiYKICAgICAgICAhaXNEYXRhVVJJKHdhc21CaW5hcnlGaWxlKSAmJgogICAgICAgICFpc0ZpbGVVUkkod2FzbUJpbmFyeUZpbGUpICYmCiAgICAgICAgIUVOVklST05NRU5UX0lTX05PREUgJiYKICAgICAgICB0eXBlb2YgZmV0Y2ggPT09ICJmdW5jdGlvbiIKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIGZldGNoKHdhc21CaW5hcnlGaWxlLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcG9uc2UsIGluZm8pOwogICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0LCBmdW5jdGlvbiAocmVhc29uKSB7CiAgICAgICAgICAgIGVycigid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICIgKyByZWFzb24pOwogICAgICAgICAgICBlcnIoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIik7CiAgICAgICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KTsKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KTsKICAgICAgfQogICAgfQogICAgaWYgKE1vZHVsZVsiaW5zdGFudGlhdGVXYXNtIl0pIHsKICAgICAgdHJ5IHsKICAgICAgICBsZXQgZXhwb3J0cyA9IE1vZHVsZVsiaW5zdGFudGlhdGVXYXNtIl0oaW5mbywgcmVjZWl2ZUluc3RhbmNlKTsKICAgICAgICByZXR1cm4gZXhwb3J0czsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIGVycigiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIiArIGUpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogICAgaW5zdGFudGlhdGVBc3luYygpOwogICAgcmV0dXJuIHt9OwogIH0KICBsZXQgdGVtcERvdWJsZTsKICBsZXQgdGVtcEk2NDsKICBmdW5jdGlvbiBFeGl0U3RhdHVzKHN0YXR1cykgewogICAgdGhpcy5uYW1lID0gIkV4aXRTdGF0dXMiOwogICAgdGhpcy5tZXNzYWdlID0gIlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoIiArIHN0YXR1cyArICIpIjsKICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwogIH0KICBmdW5jdGlvbiBjYWxsUnVudGltZUNhbGxiYWNrcyhjYWxsYmFja3MpIHsKICAgIHdoaWxlIChjYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICBjYWxsYmFja3Muc2hpZnQoKShNb2R1bGUpOwogICAgfQogIH0KICBmdW5jdGlvbiBfX19hc3NlcnRfZmFpbChjb25kaXRpb24sIGZpbGVuYW1lLCBsaW5lLCBmdW5jKSB7CiAgICBhYm9ydCgKICAgICAgIkFzc2VydGlvbiBmYWlsZWQ6ICIgKwogICAgICAgIFVURjhUb1N0cmluZyhjb25kaXRpb24pICsKICAgICAgICAiLCBhdDogIiArCiAgICAgICAgWwogICAgICAgICAgZmlsZW5hbWUgPyBVVEY4VG9TdHJpbmcoZmlsZW5hbWUpIDogInVua25vd24gZmlsZW5hbWUiLAogICAgICAgICAgbGluZSwKICAgICAgICAgIGZ1bmMgPyBVVEY4VG9TdHJpbmcoZnVuYykgOiAidW5rbm93biBmdW5jdGlvbiIsCiAgICAgICAgXSwKICAgICk7CiAgfQogIGZ1bmN0aW9uIF9fX2N4YV9hbGxvY2F0ZV9leGNlcHRpb24oc2l6ZSkgewogICAgcmV0dXJuIF9tYWxsb2Moc2l6ZSArIDI0KSArIDI0OwogIH0KICBmdW5jdGlvbiBFeGNlcHRpb25JbmZvKGV4Y1B0cikgewogICAgdGhpcy5leGNQdHIgPSBleGNQdHI7CiAgICB0aGlzLnB0ciA9IGV4Y1B0ciAtIDI0OwogICAgdGhpcy5zZXRfdHlwZSA9IGZ1bmN0aW9uICh0eXBlKSB7CiAgICAgIEhFQVBVMzJbKHRoaXMucHRyICsgNCkgPj4gMl0gPSB0eXBlOwogICAgfTsKICAgIHRoaXMuZ2V0X3R5cGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiBIRUFQVTMyWyh0aGlzLnB0ciArIDQpID4+IDJdOwogICAgfTsKICAgIHRoaXMuc2V0X2Rlc3RydWN0b3IgPSBmdW5jdGlvbiAoZGVzdHJ1Y3RvcikgewogICAgICBIRUFQVTMyWyh0aGlzLnB0ciArIDgpID4+IDJdID0gZGVzdHJ1Y3RvcjsKICAgIH07CiAgICB0aGlzLmdldF9kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gSEVBUFUzMlsodGhpcy5wdHIgKyA4KSA+PiAyXTsKICAgIH07CiAgICB0aGlzLnNldF9yZWZjb3VudCA9IGZ1bmN0aW9uIChyZWZjb3VudCkgewogICAgICBIRUFQMzJbdGhpcy5wdHIgPj4gMl0gPSByZWZjb3VudDsKICAgIH07CiAgICB0aGlzLnNldF9jYXVnaHQgPSBmdW5jdGlvbiAoY2F1Z2h0KSB7CiAgICAgIGNhdWdodCA9IGNhdWdodCA/IDEgOiAwOwogICAgICBIRUFQOFsodGhpcy5wdHIgKyAxMikgPj4gMF0gPSBjYXVnaHQ7CiAgICB9OwogICAgdGhpcy5nZXRfY2F1Z2h0ID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gSEVBUDhbKHRoaXMucHRyICsgMTIpID4+IDBdICE9IDA7CiAgICB9OwogICAgdGhpcy5zZXRfcmV0aHJvd24gPSBmdW5jdGlvbiAocmV0aHJvd24pIHsKICAgICAgcmV0aHJvd24gPSByZXRocm93biA/IDEgOiAwOwogICAgICBIRUFQOFsodGhpcy5wdHIgKyAxMykgPj4gMF0gPSByZXRocm93bjsKICAgIH07CiAgICB0aGlzLmdldF9yZXRocm93biA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIEhFQVA4Wyh0aGlzLnB0ciArIDEzKSA+PiAwXSAhPSAwOwogICAgfTsKICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICh0eXBlLCBkZXN0cnVjdG9yKSB7CiAgICAgIHRoaXMuc2V0X2FkanVzdGVkX3B0cigwKTsKICAgICAgdGhpcy5zZXRfdHlwZSh0eXBlKTsKICAgICAgdGhpcy5zZXRfZGVzdHJ1Y3RvcihkZXN0cnVjdG9yKTsKICAgICAgdGhpcy5zZXRfcmVmY291bnQoMCk7CiAgICAgIHRoaXMuc2V0X2NhdWdodChmYWxzZSk7CiAgICAgIHRoaXMuc2V0X3JldGhyb3duKGZhbHNlKTsKICAgIH07CiAgICB0aGlzLmFkZF9yZWYgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGxldCB2YWx1ZSA9IEhFQVAzMlt0aGlzLnB0ciA+PiAyXTsKICAgICAgSEVBUDMyW3RoaXMucHRyID4+IDJdID0gdmFsdWUgKyAxOwogICAgfTsKICAgIHRoaXMucmVsZWFzZV9yZWYgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGxldCBwcmV2ID0gSEVBUDMyW3RoaXMucHRyID4+IDJdOwogICAgICBIRUFQMzJbdGhpcy5wdHIgPj4gMl0gPSBwcmV2IC0gMTsKICAgICAgcmV0dXJuIHByZXYgPT09IDE7CiAgICB9OwogICAgdGhpcy5zZXRfYWRqdXN0ZWRfcHRyID0gZnVuY3Rpb24gKGFkanVzdGVkUHRyKSB7CiAgICAgIEhFQVBVMzJbKHRoaXMucHRyICsgMTYpID4+IDJdID0gYWRqdXN0ZWRQdHI7CiAgICB9OwogICAgdGhpcy5nZXRfYWRqdXN0ZWRfcHRyID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gSEVBUFUzMlsodGhpcy5wdHIgKyAxNikgPj4gMl07CiAgICB9OwogICAgdGhpcy5nZXRfZXhjZXB0aW9uX3B0ciA9IGZ1bmN0aW9uICgpIHsKICAgICAgbGV0IGlzUG9pbnRlciA9IF9fX2N4YV9pc19wb2ludGVyX3R5cGUodGhpcy5nZXRfdHlwZSgpKTsKICAgICAgaWYgKGlzUG9pbnRlcikgewogICAgICAgIHJldHVybiBIRUFQVTMyW3RoaXMuZXhjUHRyID4+IDJdOwogICAgICB9CiAgICAgIGxldCBhZGp1c3RlZCA9IHRoaXMuZ2V0X2FkanVzdGVkX3B0cigpOwogICAgICBpZiAoYWRqdXN0ZWQgIT09IDApIHJldHVybiBhZGp1c3RlZDsKICAgICAgcmV0dXJuIHRoaXMuZXhjUHRyOwogICAgfTsKICB9CiAgbGV0IGV4Y2VwdGlvbkxhc3QgPSAwOwogIGxldCB1bmNhdWdodEV4Y2VwdGlvbkNvdW50ID0gMDsKICBmdW5jdGlvbiBfX19jeGFfdGhyb3cocHRyLCB0eXBlLCBkZXN0cnVjdG9yKSB7CiAgICBsZXQgaW5mbyA9IG5ldyBFeGNlcHRpb25JbmZvKHB0cik7CiAgICBpbmZvLmluaXQodHlwZSwgZGVzdHJ1Y3Rvcik7CiAgICBleGNlcHRpb25MYXN0ID0gcHRyOwogICAgdW5jYXVnaHRFeGNlcHRpb25Db3VudCsrOwogICAgdGhyb3cgcHRyOwogIH0KICBmdW5jdGlvbiBfYWJvcnQoKSB7CiAgICBhYm9ydCgiIik7CiAgfQogIGZ1bmN0aW9uIGdldEhlYXBNYXgoKSB7CiAgICByZXR1cm4gMjE0NzQ4MzY0ODsKICB9CiAgZnVuY3Rpb24gZW1zY3JpcHRlbl9yZWFsbG9jX2J1ZmZlcihzaXplKSB7CiAgICB0cnkgewogICAgICB3YXNtTWVtb3J5Lmdyb3coKHNpemUgLSBidWZmZXIuYnl0ZUxlbmd0aCArIDY1NTM1KSA+Pj4gMTYpOwogICAgICB1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyh3YXNtTWVtb3J5LmJ1ZmZlcik7CiAgICAgIHJldHVybiAxOwogICAgfSBjYXRjaCAoZSkge30KICB9CiAgZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fcmVzaXplX2hlYXAocmVxdWVzdGVkU2l6ZSkgewogICAgbGV0IG9sZFNpemUgPSBIRUFQVTgubGVuZ3RoOwogICAgcmVxdWVzdGVkU2l6ZSA9IHJlcXVlc3RlZFNpemUgPj4+IDA7CiAgICBsZXQgbWF4SGVhcFNpemUgPSBnZXRIZWFwTWF4KCk7CiAgICBpZiAocmVxdWVzdGVkU2l6ZSA+IG1heEhlYXBTaXplKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGxldCBhbGlnblVwID0gKHgsIG11bHRpcGxlKSA9PiB4ICsgKChtdWx0aXBsZSAtICh4ICUgbXVsdGlwbGUpKSAlIG11bHRpcGxlKTsKICAgIGZvciAobGV0IGN1dERvd24gPSAxOyBjdXREb3duIDw9IDQ7IGN1dERvd24gKj0gMikgewogICAgICBsZXQgb3Zlckdyb3duSGVhcFNpemUgPSBvbGRTaXplICogKDEgKyAwLjIgLyBjdXREb3duKTsKICAgICAgb3Zlckdyb3duSGVhcFNpemUgPSBNYXRoLm1pbihvdmVyR3Jvd25IZWFwU2l6ZSwgcmVxdWVzdGVkU2l6ZSArIDEwMDY2MzI5Nik7CiAgICAgIGxldCBuZXdTaXplID0gTWF0aC5taW4oCiAgICAgICAgbWF4SGVhcFNpemUsCiAgICAgICAgYWxpZ25VcChNYXRoLm1heChyZXF1ZXN0ZWRTaXplLCBvdmVyR3Jvd25IZWFwU2l6ZSksIDY1NTM2KSwKICAgICAgKTsKICAgICAgbGV0IHJlcGxhY2VtZW50ID0gZW1zY3JpcHRlbl9yZWFsbG9jX2J1ZmZlcihuZXdTaXplKTsKICAgICAgaWYgKHJlcGxhY2VtZW50KSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CiAgbGV0IEVOViA9IHt9OwogIGZ1bmN0aW9uIGdldEV4ZWN1dGFibGVOYW1lKCkgewogICAgcmV0dXJuIHRoaXNQcm9ncmFtIHx8ICIuL3RoaXMucHJvZ3JhbSI7CiAgfQogIGZ1bmN0aW9uIGdldEVudlN0cmluZ3MoKSB7CiAgICBpZiAoIWdldEVudlN0cmluZ3Muc3RyaW5ncykgewogICAgICBsZXQgbGFuZyA9CiAgICAgICAgKAogICAgICAgICAgKHR5cGVvZiBuYXZpZ2F0b3IgPT09ICJvYmplY3QiICYmIG5hdmlnYXRvci5sYW5ndWFnZXMgJiYgbmF2aWdhdG9yLmxhbmd1YWdlc1swXSkgfHwKICAgICAgICAgICJDIgogICAgICAgICkucmVwbGFjZSgiLSIsICJfIikgKyAiLlVURi04IjsKICAgICAgbGV0IGVudiA9IHsKICAgICAgICBVU0VSOiAid2ViX3VzZXIiLAogICAgICAgIExPR05BTUU6ICJ3ZWJfdXNlciIsCiAgICAgICAgUEFUSDogIi8iLAogICAgICAgIFBXRDogIi8iLAogICAgICAgIEhPTUU6ICIvaG9tZS93ZWJfdXNlciIsCiAgICAgICAgTEFORzogbGFuZywKICAgICAgICBfOiBnZXRFeGVjdXRhYmxlTmFtZSgpLAogICAgICB9OwogICAgICBmb3IgKHZhciB4IGluIEVOVikgewogICAgICAgIGlmIChFTlZbeF0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGVudlt4XTsKICAgICAgICBlbHNlIGVudlt4XSA9IEVOVlt4XTsKICAgICAgfQogICAgICBsZXQgc3RyaW5ncyA9IFtdOwogICAgICBmb3IgKHZhciB4IGluIGVudikgewogICAgICAgIHN0cmluZ3MucHVzaCh4ICsgIj0iICsgZW52W3hdKTsKICAgICAgfQogICAgICBnZXRFbnZTdHJpbmdzLnN0cmluZ3MgPSBzdHJpbmdzOwogICAgfQogICAgcmV0dXJuIGdldEVudlN0cmluZ3Muc3RyaW5nczsKICB9CiAgZnVuY3Rpb24gd3JpdGVBc2NpaVRvTWVtb3J5KHN0ciwgYnVmZmVyLCBkb250QWRkTnVsbCkgewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgICAgSEVBUDhbYnVmZmVyKysgPj4gMF0gPSBzdHIuY2hhckNvZGVBdChpKTsKICAgIH0KICAgIGlmICghZG9udEFkZE51bGwpIEhFQVA4W2J1ZmZlciA+PiAwXSA9IDA7CiAgfQogIHZhciBQQVRIID0gewogICAgaXNBYnM6IChwYXRoKSA9PiBwYXRoLmNoYXJBdCgwKSA9PT0gIi8iLAogICAgc3BsaXRQYXRoOiAoZmlsZW5hbWUpID0+IHsKICAgICAgbGV0IHNwbGl0UGF0aFJlID0gL14oXC8/fCkoW1xzXFNdKj8pKCg/OlwuezEsMn18W15cL10rP3wpKFwuW14uXC9dKnwpKSg/OltcL10qKSQvOwogICAgICByZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7CiAgICB9LAogICAgbm9ybWFsaXplQXJyYXk6IChwYXJ0cywgYWxsb3dBYm92ZVJvb3QpID0+IHsKICAgICAgbGV0IHVwID0gMDsKICAgICAgZm9yIChsZXQgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgbGV0IGxhc3QgPSBwYXJ0c1tpXTsKICAgICAgICBpZiAobGFzdCA9PT0gIi4iKSB7CiAgICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7CiAgICAgICAgfSBlbHNlIGlmIChsYXN0ID09PSAiLi4iKSB7CiAgICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7CiAgICAgICAgICB1cCsrOwogICAgICAgIH0gZWxzZSBpZiAodXApIHsKICAgICAgICAgIHBhcnRzLnNwbGljZShpLCAxKTsKICAgICAgICAgIHVwLS07CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkgewogICAgICAgIGZvciAoOyB1cDsgdXAtLSkgewogICAgICAgICAgcGFydHMudW5zaGlmdCgiLi4iKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHBhcnRzOwogICAgfSwKICAgIG5vcm1hbGl6ZTogKHBhdGgpID0+IHsKICAgICAgbGV0IGlzQWJzb2x1dGUgPSBQQVRILmlzQWJzKHBhdGgpLAogICAgICAgIHRyYWlsaW5nU2xhc2ggPSBwYXRoLnN1YnN0cigtMSkgPT09ICIvIjsKICAgICAgcGF0aCA9IFBBVEgubm9ybWFsaXplQXJyYXkoCiAgICAgICAgcGF0aC5zcGxpdCgiLyIpLmZpbHRlcigocCkgPT4gISFwKSwKICAgICAgICAhaXNBYnNvbHV0ZSwKICAgICAgKS5qb2luKCIvIik7CiAgICAgIGlmICghcGF0aCAmJiAhaXNBYnNvbHV0ZSkgewogICAgICAgIHBhdGggPSAiLiI7CiAgICAgIH0KICAgICAgaWYgKHBhdGggJiYgdHJhaWxpbmdTbGFzaCkgewogICAgICAgIHBhdGggKz0gIi8iOwogICAgICB9CiAgICAgIHJldHVybiAoaXNBYnNvbHV0ZSA/ICIvIiA6ICIiKSArIHBhdGg7CiAgICB9LAogICAgZGlybmFtZTogKHBhdGgpID0+IHsKICAgICAgbGV0IHJlc3VsdCA9IFBBVEguc3BsaXRQYXRoKHBhdGgpLAogICAgICAgIHJvb3QgPSByZXN1bHRbMF0sCiAgICAgICAgZGlyID0gcmVzdWx0WzFdOwogICAgICBpZiAoIXJvb3QgJiYgIWRpcikgewogICAgICAgIHJldHVybiAiLiI7CiAgICAgIH0KICAgICAgaWYgKGRpcikgewogICAgICAgIGRpciA9IGRpci5zdWJzdHIoMCwgZGlyLmxlbmd0aCAtIDEpOwogICAgICB9CiAgICAgIHJldHVybiByb290ICsgZGlyOwogICAgfSwKICAgIGJhc2VuYW1lOiAocGF0aCkgPT4gewogICAgICBpZiAocGF0aCA9PT0gIi8iKSByZXR1cm4gIi8iOwogICAgICBwYXRoID0gUEFUSC5ub3JtYWxpemUocGF0aCk7CiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1wvJC8sICIiKTsKICAgICAgbGV0IGxhc3RTbGFzaCA9IHBhdGgubGFzdEluZGV4T2YoIi8iKTsKICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gLTEpIHJldHVybiBwYXRoOwogICAgICByZXR1cm4gcGF0aC5zdWJzdHIobGFzdFNsYXNoICsgMSk7CiAgICB9LAogICAgam9pbigpIHsKICAgICAgbGV0IHBhdGhzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgcmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGhzLmpvaW4oIi8iKSk7CiAgICB9LAogICAgam9pbjI6IChsLCByKSA9PiB7CiAgICAgIHJldHVybiBQQVRILm5vcm1hbGl6ZShsICsgIi8iICsgcik7CiAgICB9LAogIH07CiAgZnVuY3Rpb24gZ2V0UmFuZG9tRGV2aWNlKCkgewogICAgaWYgKHR5cGVvZiBjcnlwdG8gPT09ICJvYmplY3QiICYmIHR5cGVvZiBjcnlwdG9bImdldFJhbmRvbVZhbHVlcyJdID09PSAiZnVuY3Rpb24iKSB7CiAgICAgIGxldCByYW5kb21CdWZmZXIgPSBuZXcgVWludDhBcnJheSgxKTsKICAgICAgcmV0dXJuICgpID0+IHsKICAgICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHJhbmRvbUJ1ZmZlcik7CiAgICAgICAgcmV0dXJuIHJhbmRvbUJ1ZmZlclswXTsKICAgICAgfTsKICAgIH0gZWxzZSBpZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkgewogICAgICB0cnkgewogICAgICAgIGxldCBjcnlwdG9fbW9kdWxlID0gcmVxdWlyZSgiY3J5cHRvIik7CiAgICAgICAgcmV0dXJuICgpID0+IGNyeXB0b19tb2R1bGVbInJhbmRvbUJ5dGVzIl0oMSlbMF07CiAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICB9CiAgICByZXR1cm4gKCkgPT4gYWJvcnQoInJhbmRvbURldmljZSIpOwogIH0KICB2YXIgUEFUSF9GUyA9IHsKICAgIHJlc29sdmUoKSB7CiAgICAgIGxldCByZXNvbHZlZFBhdGggPSAiIiwKICAgICAgICByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7CiAgICAgIGZvciAobGV0IGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7CiAgICAgICAgbGV0IHBhdGggPSBpID49IDAgPyBhcmd1bWVudHNbaV0gOiBGUy5jd2QoKTsKICAgICAgICBpZiAodHlwZW9mIHBhdGggIT09ICJzdHJpbmciKSB7CiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpOwogICAgICAgIH0gZWxzZSBpZiAoIXBhdGgpIHsKICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICB9CiAgICAgICAgcmVzb2x2ZWRQYXRoID0gcGF0aCArICIvIiArIHJlc29sdmVkUGF0aDsKICAgICAgICByZXNvbHZlZEFic29sdXRlID0gUEFUSC5pc0FicyhwYXRoKTsKICAgICAgfQogICAgICByZXNvbHZlZFBhdGggPSBQQVRILm5vcm1hbGl6ZUFycmF5KAogICAgICAgIHJlc29sdmVkUGF0aC5zcGxpdCgiLyIpLmZpbHRlcigocCkgPT4gISFwKSwKICAgICAgICAhcmVzb2x2ZWRBYnNvbHV0ZSwKICAgICAgKS5qb2luKCIvIik7CiAgICAgIHJldHVybiAocmVzb2x2ZWRBYnNvbHV0ZSA/ICIvIiA6ICIiKSArIHJlc29sdmVkUGF0aCB8fCAiLiI7CiAgICB9LAogICAgcmVsYXRpdmU6IChmcm9tLCB0bykgPT4gewogICAgICBmcm9tID0gUEFUSF9GUy5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTsKICAgICAgdG8gPSBQQVRIX0ZTLnJlc29sdmUodG8pLnN1YnN0cigxKTsKICAgICAgZnVuY3Rpb24gdHJpbShhcnIpIHsKICAgICAgICBsZXQgc3RhcnQgPSAwOwogICAgICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHsKICAgICAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAiIikgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGxldCBlbmQgPSBhcnIubGVuZ3RoIC0gMTsKICAgICAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7CiAgICAgICAgICBpZiAoYXJyW2VuZF0gIT09ICIiKSBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHN0YXJ0ID4gZW5kKSByZXR1cm4gW107CiAgICAgICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKICAgICAgfQogICAgICBsZXQgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCIvIikpOwogICAgICBsZXQgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoIi8iKSk7CiAgICAgIGxldCBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7CiAgICAgIGxldCBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7CiAgICAgICAgICBzYW1lUGFydHNMZW5ndGggPSBpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxldCBvdXRwdXRQYXJ0cyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gc2FtZVBhcnRzTGVuZ3RoOyBpIDwgZnJvbVBhcnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3V0cHV0UGFydHMucHVzaCgiLi4iKTsKICAgICAgfQogICAgICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpOwogICAgICByZXR1cm4gb3V0cHV0UGFydHMuam9pbigiLyIpOwogICAgfSwKICB9OwogIGZ1bmN0aW9uIGludEFycmF5RnJvbVN0cmluZyhzdHJpbmd5LCBkb250QWRkTnVsbCwgbGVuZ3RoKSB7CiAgICBsZXQgbGVuID0gbGVuZ3RoID4gMCA/IGxlbmd0aCA6IGxlbmd0aEJ5dGVzVVRGOChzdHJpbmd5KSArIDE7CiAgICBsZXQgdThhcnJheSA9IG5ldyBBcnJheShsZW4pOwogICAgbGV0IG51bUJ5dGVzV3JpdHRlbiA9IHN0cmluZ1RvVVRGOEFycmF5KHN0cmluZ3ksIHU4YXJyYXksIDAsIHU4YXJyYXkubGVuZ3RoKTsKICAgIGlmIChkb250QWRkTnVsbCkgdThhcnJheS5sZW5ndGggPSBudW1CeXRlc1dyaXR0ZW47CiAgICByZXR1cm4gdThhcnJheTsKICB9CiAgdmFyIFRUWSA9IHsKICAgIHR0eXM6IFtdLAogICAgaW5pdCgpIHt9LAogICAgc2h1dGRvd24oKSB7fSwKICAgIHJlZ2lzdGVyKGRldiwgb3BzKSB7CiAgICAgIFRUWS50dHlzW2Rldl0gPSB7IGlucHV0OiBbXSwgb3V0cHV0OiBbXSwgb3BzIH07CiAgICAgIEZTLnJlZ2lzdGVyRGV2aWNlKGRldiwgVFRZLnN0cmVhbV9vcHMpOwogICAgfSwKICAgIHN0cmVhbV9vcHM6IHsKICAgICAgb3BlbihzdHJlYW0pIHsKICAgICAgICBsZXQgdHR5ID0gVFRZLnR0eXNbc3RyZWFtLm5vZGUucmRldl07CiAgICAgICAgaWYgKCF0dHkpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQzKTsKICAgICAgICB9CiAgICAgICAgc3RyZWFtLnR0eSA9IHR0eTsKICAgICAgICBzdHJlYW0uc2Vla2FibGUgPSBmYWxzZTsKICAgICAgfSwKICAgICAgY2xvc2Uoc3RyZWFtKSB7CiAgICAgICAgc3RyZWFtLnR0eS5vcHMuZnN5bmMoc3RyZWFtLnR0eSk7CiAgICAgIH0sCiAgICAgIGZzeW5jKHN0cmVhbSkgewogICAgICAgIHN0cmVhbS50dHkub3BzLmZzeW5jKHN0cmVhbS50dHkpOwogICAgICB9LAogICAgICByZWFkKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zKSB7CiAgICAgICAgaWYgKCFzdHJlYW0udHR5IHx8ICFzdHJlYW0udHR5Lm9wcy5nZXRfY2hhcikgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjApOwogICAgICAgIH0KICAgICAgICBsZXQgYnl0ZXNSZWFkID0gMDsKICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmVzdWx0ID0gc3RyZWFtLnR0eS5vcHMuZ2V0X2NoYXIoc3RyZWFtLnR0eSk7CiAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCAmJiBieXRlc1JlYWQgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNik7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkKSBicmVhazsKICAgICAgICAgIGJ5dGVzUmVhZCsrOwogICAgICAgICAgYnVmZmVyW29mZnNldCArIGldID0gcmVzdWx0OwogICAgICAgIH0KICAgICAgICBpZiAoYnl0ZXNSZWFkKSB7CiAgICAgICAgICBzdHJlYW0ubm9kZS50aW1lc3RhbXAgPSBEYXRlLm5vdygpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwogICAgICB9LAogICAgICB3cml0ZShzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgewogICAgICAgIGlmICghc3RyZWFtLnR0eSB8fCAhc3RyZWFtLnR0eS5vcHMucHV0X2NoYXIpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYwKTsKICAgICAgICB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc3RyZWFtLnR0eS5vcHMucHV0X2NoYXIoc3RyZWFtLnR0eSwgYnVmZmVyW29mZnNldCArIGldKTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOSk7CiAgICAgICAgfQogICAgICAgIGlmIChsZW5ndGgpIHsKICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBpOwogICAgICB9LAogICAgfSwKICAgIGRlZmF1bHRfdHR5X29wczogewogICAgICBnZXRfY2hhcih0dHkpIHsKICAgICAgICBpZiAoIXR0eS5pbnB1dC5sZW5ndGgpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsOwogICAgICAgICAgaWYgKEVOVklST05NRU5UX0lTX05PREUpIHsKICAgICAgICAgICAgbGV0IEJVRlNJWkUgPSAyNTY7CiAgICAgICAgICAgIGxldCBidWYgPSBCdWZmZXIuYWxsb2MoQlVGU0laRSk7CiAgICAgICAgICAgIGxldCBieXRlc1JlYWQgPSAwOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIGJ5dGVzUmVhZCA9IGZzLnJlYWRTeW5jKHByb2Nlc3Muc3RkaW4uZmQsIGJ1ZiwgMCwgQlVGU0laRSwgLTEpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgaWYgKGUudG9TdHJpbmcoKS5pbmNsdWRlcygiRU9GIikpIGJ5dGVzUmVhZCA9IDA7CiAgICAgICAgICAgICAgZWxzZSB0aHJvdyBlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChieXRlc1JlYWQgPiAwKSB7CiAgICAgICAgICAgICAgcmVzdWx0ID0gYnVmLnNsaWNlKDAsIGJ5dGVzUmVhZCkudG9TdHJpbmcoInV0Zi04Iik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcmVzdWx0ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiAmJiB0eXBlb2Ygd2luZG93LnByb21wdCA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICByZXN1bHQgPSB3aW5kb3cucHJvbXB0KCJJbnB1dDogIik7CiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHsKICAgICAgICAgICAgICByZXN1bHQgKz0gIlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVhZGxpbmUgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgcmVzdWx0ID0gcmVhZGxpbmUoKTsKICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkgewogICAgICAgICAgICAgIHJlc3VsdCArPSAiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIHR0eS5pbnB1dCA9IGludEFycmF5RnJvbVN0cmluZyhyZXN1bHQsIHRydWUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHR5LmlucHV0LnNoaWZ0KCk7CiAgICAgIH0sCiAgICAgIHB1dF9jaGFyKHR0eSwgdmFsKSB7CiAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IDEwKSB7CiAgICAgICAgICBvdXQoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwogICAgICAgICAgdHR5Lm91dHB1dCA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAodmFsICE9IDApIHR0eS5vdXRwdXQucHVzaCh2YWwpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgZnN5bmModHR5KSB7CiAgICAgICAgaWYgKHR0eS5vdXRwdXQgJiYgdHR5Lm91dHB1dC5sZW5ndGggPiAwKSB7CiAgICAgICAgICBvdXQoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwogICAgICAgICAgdHR5Lm91dHB1dCA9IFtdOwogICAgICAgIH0KICAgICAgfSwKICAgIH0sCiAgICBkZWZhdWx0X3R0eTFfb3BzOiB7CiAgICAgIHB1dF9jaGFyKHR0eSwgdmFsKSB7CiAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IDEwKSB7CiAgICAgICAgICBlcnIoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwogICAgICAgICAgdHR5Lm91dHB1dCA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAodmFsICE9IDApIHR0eS5vdXRwdXQucHVzaCh2YWwpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgZnN5bmModHR5KSB7CiAgICAgICAgaWYgKHR0eS5vdXRwdXQgJiYgdHR5Lm91dHB1dC5sZW5ndGggPiAwKSB7CiAgICAgICAgICBlcnIoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwogICAgICAgICAgdHR5Lm91dHB1dCA9IFtdOwogICAgICAgIH0KICAgICAgfSwKICAgIH0sCiAgfTsKICBmdW5jdGlvbiBtbWFwQWxsb2Moc2l6ZSkgewogICAgYWJvcnQoKTsKICB9CiAgdmFyIE1FTUZTID0gewogICAgb3BzX3RhYmxlOiBudWxsLAogICAgbW91bnQobW91bnQpIHsKICAgICAgcmV0dXJuIE1FTUZTLmNyZWF0ZU5vZGUobnVsbCwgIi8iLCAxNjM4NCB8IDUxMSwgMCk7CiAgICB9LAogICAgY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIGRldikgewogICAgICBpZiAoRlMuaXNCbGtkZXYobW9kZSkgfHwgRlMuaXNGSUZPKG1vZGUpKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpOwogICAgICB9CiAgICAgIGlmICghTUVNRlMub3BzX3RhYmxlKSB7CiAgICAgICAgTUVNRlMub3BzX3RhYmxlID0gewogICAgICAgICAgZGlyOiB7CiAgICAgICAgICAgIG5vZGU6IHsKICAgICAgICAgICAgICBnZXRhdHRyOiBNRU1GUy5ub2RlX29wcy5nZXRhdHRyLAogICAgICAgICAgICAgIHNldGF0dHI6IE1FTUZTLm5vZGVfb3BzLnNldGF0dHIsCiAgICAgICAgICAgICAgbG9va3VwOiBNRU1GUy5ub2RlX29wcy5sb29rdXAsCiAgICAgICAgICAgICAgbWtub2Q6IE1FTUZTLm5vZGVfb3BzLm1rbm9kLAogICAgICAgICAgICAgIHJlbmFtZTogTUVNRlMubm9kZV9vcHMucmVuYW1lLAogICAgICAgICAgICAgIHVubGluazogTUVNRlMubm9kZV9vcHMudW5saW5rLAogICAgICAgICAgICAgIHJtZGlyOiBNRU1GUy5ub2RlX29wcy5ybWRpciwKICAgICAgICAgICAgICByZWFkZGlyOiBNRU1GUy5ub2RlX29wcy5yZWFkZGlyLAogICAgICAgICAgICAgIHN5bWxpbms6IE1FTUZTLm5vZGVfb3BzLnN5bWxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0cmVhbTogeyBsbHNlZWs6IE1FTUZTLnN0cmVhbV9vcHMubGxzZWVrIH0sCiAgICAgICAgICB9LAogICAgICAgICAgZmlsZTogewogICAgICAgICAgICBub2RlOiB7IGdldGF0dHI6IE1FTUZTLm5vZGVfb3BzLmdldGF0dHIsIHNldGF0dHI6IE1FTUZTLm5vZGVfb3BzLnNldGF0dHIgfSwKICAgICAgICAgICAgc3RyZWFtOiB7CiAgICAgICAgICAgICAgbGxzZWVrOiBNRU1GUy5zdHJlYW1fb3BzLmxsc2VlaywKICAgICAgICAgICAgICByZWFkOiBNRU1GUy5zdHJlYW1fb3BzLnJlYWQsCiAgICAgICAgICAgICAgd3JpdGU6IE1FTUZTLnN0cmVhbV9vcHMud3JpdGUsCiAgICAgICAgICAgICAgYWxsb2NhdGU6IE1FTUZTLnN0cmVhbV9vcHMuYWxsb2NhdGUsCiAgICAgICAgICAgICAgbW1hcDogTUVNRlMuc3RyZWFtX29wcy5tbWFwLAogICAgICAgICAgICAgIG1zeW5jOiBNRU1GUy5zdHJlYW1fb3BzLm1zeW5jLAogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICAgIGxpbms6IHsKICAgICAgICAgICAgbm9kZTogewogICAgICAgICAgICAgIGdldGF0dHI6IE1FTUZTLm5vZGVfb3BzLmdldGF0dHIsCiAgICAgICAgICAgICAgc2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0ciwKICAgICAgICAgICAgICByZWFkbGluazogTUVNRlMubm9kZV9vcHMucmVhZGxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0cmVhbToge30sCiAgICAgICAgICB9LAogICAgICAgICAgY2hyZGV2OiB7CiAgICAgICAgICAgIG5vZGU6IHsgZ2V0YXR0cjogTUVNRlMubm9kZV9vcHMuZ2V0YXR0ciwgc2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0ciB9LAogICAgICAgICAgICBzdHJlYW06IEZTLmNocmRldl9zdHJlYW1fb3BzLAogICAgICAgICAgfSwKICAgICAgICB9OwogICAgICB9CiAgICAgIGxldCBub2RlID0gRlMuY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIGRldik7CiAgICAgIGlmIChGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgICAgICAgbm9kZS5ub2RlX29wcyA9IE1FTUZTLm9wc190YWJsZS5kaXIubm9kZTsKICAgICAgICBub2RlLnN0cmVhbV9vcHMgPSBNRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTsKICAgICAgICBub2RlLmNvbnRlbnRzID0ge307CiAgICAgIH0gZWxzZSBpZiAoRlMuaXNGaWxlKG5vZGUubW9kZSkpIHsKICAgICAgICBub2RlLm5vZGVfb3BzID0gTUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTsKICAgICAgICBub2RlLnN0cmVhbV9vcHMgPSBNRU1GUy5vcHNfdGFibGUuZmlsZS5zdHJlYW07CiAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSAwOwogICAgICAgIG5vZGUuY29udGVudHMgPSBudWxsOwogICAgICB9IGVsc2UgaWYgKEZTLmlzTGluayhub2RlLm1vZGUpKSB7CiAgICAgICAgbm9kZS5ub2RlX29wcyA9IE1FTUZTLm9wc190YWJsZS5saW5rLm5vZGU7CiAgICAgICAgbm9kZS5zdHJlYW1fb3BzID0gTUVNRlMub3BzX3RhYmxlLmxpbmsuc3RyZWFtOwogICAgICB9IGVsc2UgaWYgKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpIHsKICAgICAgICBub2RlLm5vZGVfb3BzID0gTUVNRlMub3BzX3RhYmxlLmNocmRldi5ub2RlOwogICAgICAgIG5vZGUuc3RyZWFtX29wcyA9IE1FTUZTLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtOwogICAgICB9CiAgICAgIG5vZGUudGltZXN0YW1wID0gRGF0ZS5ub3coKTsKICAgICAgaWYgKHBhcmVudCkgewogICAgICAgIHBhcmVudC5jb250ZW50c1tuYW1lXSA9IG5vZGU7CiAgICAgICAgcGFyZW50LnRpbWVzdGFtcCA9IG5vZGUudGltZXN0YW1wOwogICAgICB9CiAgICAgIHJldHVybiBub2RlOwogICAgfSwKICAgIGdldEZpbGVEYXRhQXNUeXBlZEFycmF5KG5vZGUpIHsKICAgICAgaWYgKCFub2RlLmNvbnRlbnRzKSByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7CiAgICAgIGlmIChub2RlLmNvbnRlbnRzLnN1YmFycmF5KSByZXR1cm4gbm9kZS5jb250ZW50cy5zdWJhcnJheSgwLCBub2RlLnVzZWRCeXRlcyk7CiAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShub2RlLmNvbnRlbnRzKTsKICAgIH0sCiAgICBleHBhbmRGaWxlU3RvcmFnZShub2RlLCBuZXdDYXBhY2l0eSkgewogICAgICBsZXQgcHJldkNhcGFjaXR5ID0gbm9kZS5jb250ZW50cyA/IG5vZGUuY29udGVudHMubGVuZ3RoIDogMDsKICAgICAgaWYgKHByZXZDYXBhY2l0eSA+PSBuZXdDYXBhY2l0eSkgcmV0dXJuOwogICAgICBsZXQgQ0FQQUNJVFlfRE9VQkxJTkdfTUFYID0gMTAyNCAqIDEwMjQ7CiAgICAgIG5ld0NhcGFjaXR5ID0gTWF0aC5tYXgoCiAgICAgICAgbmV3Q2FwYWNpdHksCiAgICAgICAgKHByZXZDYXBhY2l0eSAqIChwcmV2Q2FwYWNpdHkgPCBDQVBBQ0lUWV9ET1VCTElOR19NQVggPyAyIDogMS4xMjUpKSA+Pj4gMCwKICAgICAgKTsKICAgICAgaWYgKHByZXZDYXBhY2l0eSAhPSAwKSBuZXdDYXBhY2l0eSA9IE1hdGgubWF4KG5ld0NhcGFjaXR5LCAyNTYpOwogICAgICBsZXQgb2xkQ29udGVudHMgPSBub2RlLmNvbnRlbnRzOwogICAgICBub2RlLmNvbnRlbnRzID0gbmV3IFVpbnQ4QXJyYXkobmV3Q2FwYWNpdHkpOwogICAgICBpZiAobm9kZS51c2VkQnl0ZXMgPiAwKSBub2RlLmNvbnRlbnRzLnNldChvbGRDb250ZW50cy5zdWJhcnJheSgwLCBub2RlLnVzZWRCeXRlcyksIDApOwogICAgfSwKICAgIHJlc2l6ZUZpbGVTdG9yYWdlKG5vZGUsIG5ld1NpemUpIHsKICAgICAgaWYgKG5vZGUudXNlZEJ5dGVzID09IG5ld1NpemUpIHJldHVybjsKICAgICAgaWYgKG5ld1NpemUgPT0gMCkgewogICAgICAgIG5vZGUuY29udGVudHMgPSBudWxsOwogICAgICAgIG5vZGUudXNlZEJ5dGVzID0gMDsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgb2xkQ29udGVudHMgPSBub2RlLmNvbnRlbnRzOwogICAgICAgIG5vZGUuY29udGVudHMgPSBuZXcgVWludDhBcnJheShuZXdTaXplKTsKICAgICAgICBpZiAob2xkQ29udGVudHMpIHsKICAgICAgICAgIG5vZGUuY29udGVudHMuc2V0KG9sZENvbnRlbnRzLnN1YmFycmF5KDAsIE1hdGgubWluKG5ld1NpemUsIG5vZGUudXNlZEJ5dGVzKSkpOwogICAgICAgIH0KICAgICAgICBub2RlLnVzZWRCeXRlcyA9IG5ld1NpemU7CiAgICAgIH0KICAgIH0sCiAgICBub2RlX29wczogewogICAgICBnZXRhdHRyKG5vZGUpIHsKICAgICAgICBsZXQgYXR0ciA9IHt9OwogICAgICAgIGF0dHIuZGV2ID0gRlMuaXNDaHJkZXYobm9kZS5tb2RlKSA/IG5vZGUuaWQgOiAxOwogICAgICAgIGF0dHIuaW5vID0gbm9kZS5pZDsKICAgICAgICBhdHRyLm1vZGUgPSBub2RlLm1vZGU7CiAgICAgICAgYXR0ci5ubGluayA9IDE7CiAgICAgICAgYXR0ci51aWQgPSAwOwogICAgICAgIGF0dHIuZ2lkID0gMDsKICAgICAgICBhdHRyLnJkZXYgPSBub2RlLnJkZXY7CiAgICAgICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgICAgICAgIGF0dHIuc2l6ZSA9IDQwOTY7CiAgICAgICAgfSBlbHNlIGlmIChGUy5pc0ZpbGUobm9kZS5tb2RlKSkgewogICAgICAgICAgYXR0ci5zaXplID0gbm9kZS51c2VkQnl0ZXM7CiAgICAgICAgfSBlbHNlIGlmIChGUy5pc0xpbmsobm9kZS5tb2RlKSkgewogICAgICAgICAgYXR0ci5zaXplID0gbm9kZS5saW5rLmxlbmd0aDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYXR0ci5zaXplID0gMDsKICAgICAgICB9CiAgICAgICAgYXR0ci5hdGltZSA9IG5ldyBEYXRlKG5vZGUudGltZXN0YW1wKTsKICAgICAgICBhdHRyLm10aW1lID0gbmV3IERhdGUobm9kZS50aW1lc3RhbXApOwogICAgICAgIGF0dHIuY3RpbWUgPSBuZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7CiAgICAgICAgYXR0ci5ibGtzaXplID0gNDA5NjsKICAgICAgICBhdHRyLmJsb2NrcyA9IE1hdGguY2VpbChhdHRyLnNpemUgLyBhdHRyLmJsa3NpemUpOwogICAgICAgIHJldHVybiBhdHRyOwogICAgICB9LAogICAgICBzZXRhdHRyKG5vZGUsIGF0dHIpIHsKICAgICAgICBpZiAoYXR0ci5tb2RlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIG5vZGUubW9kZSA9IGF0dHIubW9kZTsKICAgICAgICB9CiAgICAgICAgaWYgKGF0dHIudGltZXN0YW1wICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIG5vZGUudGltZXN0YW1wID0gYXR0ci50aW1lc3RhbXA7CiAgICAgICAgfQogICAgICAgIGlmIChhdHRyLnNpemUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgTUVNRlMucmVzaXplRmlsZVN0b3JhZ2Uobm9kZSwgYXR0ci5zaXplKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGxvb2t1cChwYXJlbnQsIG5hbWUpIHsKICAgICAgICB0aHJvdyBGUy5nZW5lcmljRXJyb3JzWzQ0XTsKICAgICAgfSwKICAgICAgbWtub2QocGFyZW50LCBuYW1lLCBtb2RlLCBkZXYpIHsKICAgICAgICByZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIGRldik7CiAgICAgIH0sCiAgICAgIHJlbmFtZShvbGRfbm9kZSwgbmV3X2RpciwgbmV3X25hbWUpIHsKICAgICAgICBpZiAoRlMuaXNEaXIob2xkX25vZGUubW9kZSkpIHsKICAgICAgICAgIGxldCBuZXdfbm9kZTsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIG5ld19ub2RlID0gRlMubG9va3VwTm9kZShuZXdfZGlyLCBuZXdfbmFtZSk7CiAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgaWYgKG5ld19ub2RlKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgaW4gbmV3X25vZGUuY29udGVudHMpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGVsZXRlIG9sZF9ub2RlLnBhcmVudC5jb250ZW50c1tvbGRfbm9kZS5uYW1lXTsKICAgICAgICBvbGRfbm9kZS5wYXJlbnQudGltZXN0YW1wID0gRGF0ZS5ub3coKTsKICAgICAgICBvbGRfbm9kZS5uYW1lID0gbmV3X25hbWU7CiAgICAgICAgbmV3X2Rpci5jb250ZW50c1tuZXdfbmFtZV0gPSBvbGRfbm9kZTsKICAgICAgICBuZXdfZGlyLnRpbWVzdGFtcCA9IG9sZF9ub2RlLnBhcmVudC50aW1lc3RhbXA7CiAgICAgICAgb2xkX25vZGUucGFyZW50ID0gbmV3X2RpcjsKICAgICAgfSwKICAgICAgdW5saW5rKHBhcmVudCwgbmFtZSkgewogICAgICAgIGRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV07CiAgICAgICAgcGFyZW50LnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgIH0sCiAgICAgIHJtZGlyKHBhcmVudCwgbmFtZSkgewogICAgICAgIGxldCBub2RlID0gRlMubG9va3VwTm9kZShwYXJlbnQsIG5hbWUpOwogICAgICAgIGZvciAobGV0IGkgaW4gbm9kZS5jb250ZW50cykgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpOwogICAgICAgIH0KICAgICAgICBkZWxldGUgcGFyZW50LmNvbnRlbnRzW25hbWVdOwogICAgICAgIHBhcmVudC50aW1lc3RhbXAgPSBEYXRlLm5vdygpOwogICAgICB9LAogICAgICByZWFkZGlyKG5vZGUpIHsKICAgICAgICBsZXQgZW50cmllcyA9IFsiLiIsICIuLiJdOwogICAgICAgIGZvciAobGV0IGtleSBpbiBub2RlLmNvbnRlbnRzKSB7CiAgICAgICAgICBpZiAoIW5vZGUuY29udGVudHMuaGFzT3duUHJvcGVydHkoa2V5KSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIGVudHJpZXMucHVzaChrZXkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZW50cmllczsKICAgICAgfSwKICAgICAgc3ltbGluayhwYXJlbnQsIG5ld25hbWUsIG9sZHBhdGgpIHsKICAgICAgICBsZXQgbm9kZSA9IE1FTUZTLmNyZWF0ZU5vZGUocGFyZW50LCBuZXduYW1lLCA1MTEgfCA0MDk2MCwgMCk7CiAgICAgICAgbm9kZS5saW5rID0gb2xkcGF0aDsKICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfSwKICAgICAgcmVhZGxpbmsobm9kZSkgewogICAgICAgIGlmICghRlMuaXNMaW5rKG5vZGUubW9kZSkpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5vZGUubGluazsKICAgICAgfSwKICAgIH0sCiAgICBzdHJlYW1fb3BzOiB7CiAgICAgIHJlYWQoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikgewogICAgICAgIGxldCBjb250ZW50cyA9IHN0cmVhbS5ub2RlLmNvbnRlbnRzOwogICAgICAgIGlmIChwb3NpdGlvbiA+PSBzdHJlYW0ubm9kZS51c2VkQnl0ZXMpIHJldHVybiAwOwogICAgICAgIGxldCBzaXplID0gTWF0aC5taW4oc3RyZWFtLm5vZGUudXNlZEJ5dGVzIC0gcG9zaXRpb24sIGxlbmd0aCk7CiAgICAgICAgaWYgKHNpemUgPiA4ICYmIGNvbnRlbnRzLnN1YmFycmF5KSB7CiAgICAgICAgICBidWZmZXIuc2V0KGNvbnRlbnRzLnN1YmFycmF5KHBvc2l0aW9uLCBwb3NpdGlvbiArIHNpemUpLCBvZmZzZXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykgYnVmZmVyW29mZnNldCArIGldID0gY29udGVudHNbcG9zaXRpb24gKyBpXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgIH0sCiAgICAgIHdyaXRlKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbk93bikgewogICAgICAgIGlmIChidWZmZXIuYnVmZmVyID09PSBIRUFQOC5idWZmZXIpIHsKICAgICAgICAgIGNhbk93biA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoIWxlbmd0aCkgcmV0dXJuIDA7CiAgICAgICAgbGV0IG5vZGUgPSBzdHJlYW0ubm9kZTsKICAgICAgICBub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgICAgaWYgKGJ1ZmZlci5zdWJhcnJheSAmJiAoIW5vZGUuY29udGVudHMgfHwgbm9kZS5jb250ZW50cy5zdWJhcnJheSkpIHsKICAgICAgICAgIGlmIChjYW5Pd24pIHsKICAgICAgICAgICAgbm9kZS5jb250ZW50cyA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7CiAgICAgICAgICAgIG5vZGUudXNlZEJ5dGVzID0gbGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gbGVuZ3RoOwogICAgICAgICAgfSBlbHNlIGlmIChub2RlLnVzZWRCeXRlcyA9PT0gMCAmJiBwb3NpdGlvbiA9PT0gMCkgewogICAgICAgICAgICBub2RlLmNvbnRlbnRzID0gYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKTsKICAgICAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSBsZW5ndGg7CiAgICAgICAgICAgIHJldHVybiBsZW5ndGg7CiAgICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uICsgbGVuZ3RoIDw9IG5vZGUudXNlZEJ5dGVzKSB7CiAgICAgICAgICAgIG5vZGUuY29udGVudHMuc2V0KGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCksIHBvc2l0aW9uKTsKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgTUVNRlMuZXhwYW5kRmlsZVN0b3JhZ2Uobm9kZSwgcG9zaXRpb24gKyBsZW5ndGgpOwogICAgICAgIGlmIChub2RlLmNvbnRlbnRzLnN1YmFycmF5ICYmIGJ1ZmZlci5zdWJhcnJheSkgewogICAgICAgICAgbm9kZS5jb250ZW50cy5zZXQoYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSwgcG9zaXRpb24pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIG5vZGUuY29udGVudHNbcG9zaXRpb24gKyBpXSA9IGJ1ZmZlcltvZmZzZXQgKyBpXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSBNYXRoLm1heChub2RlLnVzZWRCeXRlcywgcG9zaXRpb24gKyBsZW5ndGgpOwogICAgICAgIHJldHVybiBsZW5ndGg7CiAgICAgIH0sCiAgICAgIGxsc2VlayhzdHJlYW0sIG9mZnNldCwgd2hlbmNlKSB7CiAgICAgICAgbGV0IHBvc2l0aW9uID0gb2Zmc2V0OwogICAgICAgIGlmICh3aGVuY2UgPT09IDEpIHsKICAgICAgICAgIHBvc2l0aW9uICs9IHN0cmVhbS5wb3NpdGlvbjsKICAgICAgICB9IGVsc2UgaWYgKHdoZW5jZSA9PT0gMikgewogICAgICAgICAgaWYgKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgICAgICAgICBwb3NpdGlvbiArPSBzdHJlYW0ubm9kZS51c2VkQnl0ZXM7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChwb3NpdGlvbiA8IDApIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogICAgICB9LAogICAgICBhbGxvY2F0ZShzdHJlYW0sIG9mZnNldCwgbGVuZ3RoKSB7CiAgICAgICAgTUVNRlMuZXhwYW5kRmlsZVN0b3JhZ2Uoc3RyZWFtLm5vZGUsIG9mZnNldCArIGxlbmd0aCk7CiAgICAgICAgc3RyZWFtLm5vZGUudXNlZEJ5dGVzID0gTWF0aC5tYXgoc3RyZWFtLm5vZGUudXNlZEJ5dGVzLCBvZmZzZXQgKyBsZW5ndGgpOwogICAgICB9LAogICAgICBtbWFwKHN0cmVhbSwgbGVuZ3RoLCBwb3NpdGlvbiwgcHJvdCwgZmxhZ3MpIHsKICAgICAgICBpZiAoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpOwogICAgICAgIH0KICAgICAgICBsZXQgcHRyOwogICAgICAgIGxldCBhbGxvY2F0ZWQ7CiAgICAgICAgbGV0IGNvbnRlbnRzID0gc3RyZWFtLm5vZGUuY29udGVudHM7CiAgICAgICAgaWYgKCEoZmxhZ3MgJiAyKSAmJiBjb250ZW50cy5idWZmZXIgPT09IGJ1ZmZlcikgewogICAgICAgICAgYWxsb2NhdGVkID0gZmFsc2U7CiAgICAgICAgICBwdHIgPSBjb250ZW50cy5ieXRlT2Zmc2V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAocG9zaXRpb24gPiAwIHx8IHBvc2l0aW9uICsgbGVuZ3RoIDwgY29udGVudHMubGVuZ3RoKSB7CiAgICAgICAgICAgIGlmIChjb250ZW50cy5zdWJhcnJheSkgewogICAgICAgICAgICAgIGNvbnRlbnRzID0gY29udGVudHMuc3ViYXJyYXkocG9zaXRpb24sIHBvc2l0aW9uICsgbGVuZ3RoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBjb250ZW50cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNvbnRlbnRzLCBwb3NpdGlvbiwgcG9zaXRpb24gKyBsZW5ndGgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBhbGxvY2F0ZWQgPSB0cnVlOwogICAgICAgICAgcHRyID0gbW1hcEFsbG9jKGxlbmd0aCk7CiAgICAgICAgICBpZiAoIXB0cikgewogICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0OCk7CiAgICAgICAgICB9CiAgICAgICAgICBIRUFQOC5zZXQoY29udGVudHMsIHB0cik7CiAgICAgICAgfQogICAgICAgIHJldHVybiB7IHB0ciwgYWxsb2NhdGVkIH07CiAgICAgIH0sCiAgICAgIG1zeW5jKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgbW1hcEZsYWdzKSB7CiAgICAgICAgTUVNRlMuc3RyZWFtX29wcy53cml0ZShzdHJlYW0sIGJ1ZmZlciwgMCwgbGVuZ3RoLCBvZmZzZXQsIGZhbHNlKTsKICAgICAgICByZXR1cm4gMDsKICAgICAgfSwKICAgIH0sCiAgfTsKICBmdW5jdGlvbiBhc3luY0xvYWQodXJsLCBvbmxvYWQsIG9uZXJyb3IsIG5vUnVuRGVwKSB7CiAgICBsZXQgZGVwID0gIW5vUnVuRGVwID8gZ2V0VW5pcXVlUnVuRGVwZW5kZW5jeSgiYWwgIiArIHVybCkgOiAiIjsKICAgIHJlYWRBc3luYygKICAgICAgdXJsLAogICAgICAoYXJyYXlCdWZmZXIpID0+IHsKICAgICAgICBhc3NlcnQoYXJyYXlCdWZmZXIsICdMb2FkaW5nIGRhdGEgZmlsZSAiJyArIHVybCArICciIGZhaWxlZCAobm8gYXJyYXlCdWZmZXIpLicpOwogICAgICAgIG9ubG9hZChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpOwogICAgICAgIGlmIChkZXApIHJlbW92ZVJ1bkRlcGVuZGVuY3koZGVwKTsKICAgICAgfSwKICAgICAgKGV2ZW50KSA9PiB7CiAgICAgICAgaWYgKG9uZXJyb3IpIHsKICAgICAgICAgIG9uZXJyb3IoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgJ0xvYWRpbmcgZGF0YSBmaWxlICInICsgdXJsICsgJyIgZmFpbGVkLic7CiAgICAgICAgfQogICAgICB9LAogICAgKTsKICAgIGlmIChkZXApIGFkZFJ1bkRlcGVuZGVuY3koZGVwKTsKICB9CiAgdmFyIEZTID0gewogICAgcm9vdDogbnVsbCwKICAgIG1vdW50czogW10sCiAgICBkZXZpY2VzOiB7fSwKICAgIHN0cmVhbXM6IFtdLAogICAgbmV4dElub2RlOiAxLAogICAgbmFtZVRhYmxlOiBudWxsLAogICAgY3VycmVudFBhdGg6ICIvIiwKICAgIGluaXRpYWxpemVkOiBmYWxzZSwKICAgIGlnbm9yZVBlcm1pc3Npb25zOiB0cnVlLAogICAgRXJybm9FcnJvcjogbnVsbCwKICAgIGdlbmVyaWNFcnJvcnM6IHt9LAogICAgZmlsZXN5c3RlbXM6IG51bGwsCiAgICBzeW5jRlNSZXF1ZXN0czogMCwKICAgIGxvb2t1cFBhdGg6IChwYXRoLCBvcHRzID0ge30pID0+IHsKICAgICAgcGF0aCA9IFBBVEhfRlMucmVzb2x2ZShGUy5jd2QoKSwgcGF0aCk7CiAgICAgIGlmICghcGF0aCkgcmV0dXJuIHsgcGF0aDogIiIsIG5vZGU6IG51bGwgfTsKICAgICAgbGV0IGRlZmF1bHRzID0geyBmb2xsb3dfbW91bnQ6IHRydWUsIHJlY3Vyc2VfY291bnQ6IDAgfTsKICAgICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIG9wdHMpOwogICAgICBpZiAob3B0cy5yZWN1cnNlX2NvdW50ID4gOCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMyKTsKICAgICAgfQogICAgICBsZXQgcGFydHMgPSBQQVRILm5vcm1hbGl6ZUFycmF5KAogICAgICAgIHBhdGguc3BsaXQoIi8iKS5maWx0ZXIoKHApID0+ICEhcCksCiAgICAgICAgZmFsc2UsCiAgICAgICk7CiAgICAgIGxldCBjdXJyZW50ID0gRlMucm9vdDsKICAgICAgbGV0IGN1cnJlbnRfcGF0aCA9ICIvIjsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgICAgIGxldCBpc2xhc3QgPSBpID09PSBwYXJ0cy5sZW5ndGggLSAxOwogICAgICAgIGlmIChpc2xhc3QgJiYgb3B0cy5wYXJlbnQpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjdXJyZW50ID0gRlMubG9va3VwTm9kZShjdXJyZW50LCBwYXJ0c1tpXSk7CiAgICAgICAgY3VycmVudF9wYXRoID0gUEFUSC5qb2luMihjdXJyZW50X3BhdGgsIHBhcnRzW2ldKTsKICAgICAgICBpZiAoRlMuaXNNb3VudHBvaW50KGN1cnJlbnQpKSB7CiAgICAgICAgICBpZiAoIWlzbGFzdCB8fCAoaXNsYXN0ICYmIG9wdHMuZm9sbG93X21vdW50KSkgewogICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5tb3VudGVkLnJvb3Q7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghaXNsYXN0IHx8IG9wdHMuZm9sbG93KSB7CiAgICAgICAgICBsZXQgY291bnQgPSAwOwogICAgICAgICAgd2hpbGUgKEZTLmlzTGluayhjdXJyZW50Lm1vZGUpKSB7CiAgICAgICAgICAgIGxldCBsaW5rID0gRlMucmVhZGxpbmsoY3VycmVudF9wYXRoKTsKICAgICAgICAgICAgY3VycmVudF9wYXRoID0gUEFUSF9GUy5yZXNvbHZlKFBBVEguZGlybmFtZShjdXJyZW50X3BhdGgpLCBsaW5rKTsKICAgICAgICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgoY3VycmVudF9wYXRoLCB7IHJlY3Vyc2VfY291bnQ6IG9wdHMucmVjdXJzZV9jb3VudCArIDEgfSk7CiAgICAgICAgICAgIGN1cnJlbnQgPSBsb29rdXAubm9kZTsKICAgICAgICAgICAgaWYgKGNvdW50KysgPiA0MCkgewogICAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4geyBwYXRoOiBjdXJyZW50X3BhdGgsIG5vZGU6IGN1cnJlbnQgfTsKICAgIH0sCiAgICBnZXRQYXRoOiAobm9kZSkgPT4gewogICAgICBsZXQgcGF0aDsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoRlMuaXNSb290KG5vZGUpKSB7CiAgICAgICAgICBsZXQgbW91bnQgPSBub2RlLm1vdW50Lm1vdW50cG9pbnQ7CiAgICAgICAgICBpZiAoIXBhdGgpIHJldHVybiBtb3VudDsKICAgICAgICAgIHJldHVybiBtb3VudFttb3VudC5sZW5ndGggLSAxXSAhPT0gIi8iID8gbW91bnQgKyAiLyIgKyBwYXRoIDogbW91bnQgKyBwYXRoOwogICAgICAgIH0KICAgICAgICBwYXRoID0gcGF0aCA/IG5vZGUubmFtZSArICIvIiArIHBhdGggOiBub2RlLm5hbWU7CiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50OwogICAgICB9CiAgICB9LAogICAgaGFzaE5hbWU6IChwYXJlbnRpZCwgbmFtZSkgPT4gewogICAgICBsZXQgaGFzaCA9IDA7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykgewogICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoICsgbmFtZS5jaGFyQ29kZUF0KGkpKSB8IDA7CiAgICAgIH0KICAgICAgcmV0dXJuICgocGFyZW50aWQgKyBoYXNoKSA+Pj4gMCkgJSBGUy5uYW1lVGFibGUubGVuZ3RoOwogICAgfSwKICAgIGhhc2hBZGROb2RlOiAobm9kZSkgPT4gewogICAgICBsZXQgaGFzaCA9IEZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLCBub2RlLm5hbWUpOwogICAgICBub2RlLm5hbWVfbmV4dCA9IEZTLm5hbWVUYWJsZVtoYXNoXTsKICAgICAgRlMubmFtZVRhYmxlW2hhc2hdID0gbm9kZTsKICAgIH0sCiAgICBoYXNoUmVtb3ZlTm9kZTogKG5vZGUpID0+IHsKICAgICAgbGV0IGhhc2ggPSBGUy5oYXNoTmFtZShub2RlLnBhcmVudC5pZCwgbm9kZS5uYW1lKTsKICAgICAgaWYgKEZTLm5hbWVUYWJsZVtoYXNoXSA9PT0gbm9kZSkgewogICAgICAgIEZTLm5hbWVUYWJsZVtoYXNoXSA9IG5vZGUubmFtZV9uZXh0OwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBjdXJyZW50ID0gRlMubmFtZVRhYmxlW2hhc2hdOwogICAgICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAgICAgICBpZiAoY3VycmVudC5uYW1lX25leHQgPT09IG5vZGUpIHsKICAgICAgICAgICAgY3VycmVudC5uYW1lX25leHQgPSBub2RlLm5hbWVfbmV4dDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uYW1lX25leHQ7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgbG9va3VwTm9kZTogKHBhcmVudCwgbmFtZSkgPT4gewogICAgICBsZXQgZXJyQ29kZSA9IEZTLm1heUxvb2t1cChwYXJlbnQpOwogICAgICBpZiAoZXJyQ29kZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUsIHBhcmVudCk7CiAgICAgIH0KICAgICAgbGV0IGhhc2ggPSBGUy5oYXNoTmFtZShwYXJlbnQuaWQsIG5hbWUpOwogICAgICBmb3IgKGxldCBub2RlID0gRlMubmFtZVRhYmxlW2hhc2hdOyBub2RlOyBub2RlID0gbm9kZS5uYW1lX25leHQpIHsKICAgICAgICBsZXQgbm9kZU5hbWUgPSBub2RlLm5hbWU7CiAgICAgICAgaWYgKG5vZGUucGFyZW50LmlkID09PSBwYXJlbnQuaWQgJiYgbm9kZU5hbWUgPT09IG5hbWUpIHsKICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gRlMubG9va3VwKHBhcmVudCwgbmFtZSk7CiAgICB9LAogICAgY3JlYXRlTm9kZTogKHBhcmVudCwgbmFtZSwgbW9kZSwgcmRldikgPT4gewogICAgICBsZXQgbm9kZSA9IG5ldyBGUy5GU05vZGUocGFyZW50LCBuYW1lLCBtb2RlLCByZGV2KTsKICAgICAgRlMuaGFzaEFkZE5vZGUobm9kZSk7CiAgICAgIHJldHVybiBub2RlOwogICAgfSwKICAgIGRlc3Ryb3lOb2RlOiAobm9kZSkgPT4gewogICAgICBGUy5oYXNoUmVtb3ZlTm9kZShub2RlKTsKICAgIH0sCiAgICBpc1Jvb3Q6IChub2RlKSA9PiB7CiAgICAgIHJldHVybiBub2RlID09PSBub2RlLnBhcmVudDsKICAgIH0sCiAgICBpc01vdW50cG9pbnQ6IChub2RlKSA9PiB7CiAgICAgIHJldHVybiAhIW5vZGUubW91bnRlZDsKICAgIH0sCiAgICBpc0ZpbGU6IChtb2RlKSA9PiB7CiAgICAgIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMzI3Njg7CiAgICB9LAogICAgaXNEaXI6IChtb2RlKSA9PiB7CiAgICAgIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMTYzODQ7CiAgICB9LAogICAgaXNMaW5rOiAobW9kZSkgPT4gewogICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDQwOTYwOwogICAgfSwKICAgIGlzQ2hyZGV2OiAobW9kZSkgPT4gewogICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDgxOTI7CiAgICB9LAogICAgaXNCbGtkZXY6IChtb2RlKSA9PiB7CiAgICAgIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMjQ1NzY7CiAgICB9LAogICAgaXNGSUZPOiAobW9kZSkgPT4gewogICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDQwOTY7CiAgICB9LAogICAgaXNTb2NrZXQ6IChtb2RlKSA9PiB7CiAgICAgIHJldHVybiAobW9kZSAmIDQ5MTUyKSA9PT0gNDkxNTI7CiAgICB9LAogICAgZmxhZ01vZGVzOiB7IHI6IDAsICJyKyI6IDIsIHc6IDU3NywgIncrIjogNTc4LCBhOiAxMDg5LCAiYSsiOiAxMDkwIH0sCiAgICBtb2RlU3RyaW5nVG9GbGFnczogKHN0cikgPT4gewogICAgICBsZXQgZmxhZ3MgPSBGUy5mbGFnTW9kZXNbc3RyXTsKICAgICAgaWYgKHR5cGVvZiBmbGFncyA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIgKyBzdHIpOwogICAgICB9CiAgICAgIHJldHVybiBmbGFnczsKICAgIH0sCiAgICBmbGFnc1RvUGVybWlzc2lvblN0cmluZzogKGZsYWcpID0+IHsKICAgICAgbGV0IHBlcm1zID0gWyJyIiwgInciLCAicnciXVtmbGFnICYgM107CiAgICAgIGlmIChmbGFnICYgNTEyKSB7CiAgICAgICAgcGVybXMgKz0gInciOwogICAgICB9CiAgICAgIHJldHVybiBwZXJtczsKICAgIH0sCiAgICBub2RlUGVybWlzc2lvbnM6IChub2RlLCBwZXJtcykgPT4gewogICAgICBpZiAoRlMuaWdub3JlUGVybWlzc2lvbnMpIHsKICAgICAgICByZXR1cm4gMDsKICAgICAgfQogICAgICBpZiAocGVybXMuaW5jbHVkZXMoInIiKSAmJiAhKG5vZGUubW9kZSAmIDI5MikpIHsKICAgICAgICByZXR1cm4gMjsKICAgICAgfSBlbHNlIGlmIChwZXJtcy5pbmNsdWRlcygidyIpICYmICEobm9kZS5tb2RlICYgMTQ2KSkgewogICAgICAgIHJldHVybiAyOwogICAgICB9IGVsc2UgaWYgKHBlcm1zLmluY2x1ZGVzKCJ4IikgJiYgIShub2RlLm1vZGUgJiA3MykpIHsKICAgICAgICByZXR1cm4gMjsKICAgICAgfQogICAgICByZXR1cm4gMDsKICAgIH0sCiAgICBtYXlMb29rdXA6IChkaXIpID0+IHsKICAgICAgbGV0IGVyckNvZGUgPSBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCAieCIpOwogICAgICBpZiAoZXJyQ29kZSkgcmV0dXJuIGVyckNvZGU7CiAgICAgIGlmICghZGlyLm5vZGVfb3BzLmxvb2t1cCkgcmV0dXJuIDI7CiAgICAgIHJldHVybiAwOwogICAgfSwKICAgIG1heUNyZWF0ZTogKGRpciwgbmFtZSkgPT4gewogICAgICB0cnkgewogICAgICAgIGxldCBub2RlID0gRlMubG9va3VwTm9kZShkaXIsIG5hbWUpOwogICAgICAgIHJldHVybiAyMDsKICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgcmV0dXJuIEZTLm5vZGVQZXJtaXNzaW9ucyhkaXIsICJ3eCIpOwogICAgfSwKICAgIG1heURlbGV0ZTogKGRpciwgbmFtZSwgaXNkaXIpID0+IHsKICAgICAgbGV0IG5vZGU7CiAgICAgIHRyeSB7CiAgICAgICAgbm9kZSA9IEZTLmxvb2t1cE5vZGUoZGlyLCBuYW1lKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHJldHVybiBlLmVycm5vOwogICAgICB9CiAgICAgIGxldCBlcnJDb2RlID0gRlMubm9kZVBlcm1pc3Npb25zKGRpciwgInd4Iik7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgcmV0dXJuIGVyckNvZGU7CiAgICAgIH0KICAgICAgaWYgKGlzZGlyKSB7CiAgICAgICAgaWYgKCFGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgICAgICAgICByZXR1cm4gNTQ7CiAgICAgICAgfQogICAgICAgIGlmIChGUy5pc1Jvb3Qobm9kZSkgfHwgRlMuZ2V0UGF0aChub2RlKSA9PT0gRlMuY3dkKCkpIHsKICAgICAgICAgIHJldHVybiAxMDsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgICAgICAgIHJldHVybiAzMTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIDA7CiAgICB9LAogICAgbWF5T3BlbjogKG5vZGUsIGZsYWdzKSA9PiB7CiAgICAgIGlmICghbm9kZSkgewogICAgICAgIHJldHVybiA0NDsKICAgICAgfQogICAgICBpZiAoRlMuaXNMaW5rKG5vZGUubW9kZSkpIHsKICAgICAgICByZXR1cm4gMzI7CiAgICAgIH0gZWxzZSBpZiAoRlMuaXNEaXIobm9kZS5tb2RlKSkgewogICAgICAgIGlmIChGUy5mbGFnc1RvUGVybWlzc2lvblN0cmluZyhmbGFncykgIT09ICJyIiB8fCBmbGFncyAmIDUxMikgewogICAgICAgICAgcmV0dXJuIDMxOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsIEZTLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKGZsYWdzKSk7CiAgICB9LAogICAgTUFYX09QRU5fRkRTOiA0MDk2LAogICAgbmV4dGZkOiAoZmRfc3RhcnQgPSAwLCBmZF9lbmQgPSBGUy5NQVhfT1BFTl9GRFMpID0+IHsKICAgICAgZm9yIChsZXQgZmQgPSBmZF9zdGFydDsgZmQgPD0gZmRfZW5kOyBmZCsrKSB7CiAgICAgICAgaWYgKCFGUy5zdHJlYW1zW2ZkXSkgewogICAgICAgICAgcmV0dXJuIGZkOwogICAgICAgIH0KICAgICAgfQogICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigzMyk7CiAgICB9LAogICAgZ2V0U3RyZWFtOiAoZmQpID0+IEZTLnN0cmVhbXNbZmRdLAogICAgY3JlYXRlU3RyZWFtOiAoc3RyZWFtLCBmZF9zdGFydCwgZmRfZW5kKSA9PiB7CiAgICAgIGlmICghRlMuRlNTdHJlYW0pIHsKICAgICAgICBGUy5GU1N0cmVhbSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHRoaXMuc2hhcmVkID0ge307CiAgICAgICAgfTsKICAgICAgICBGUy5GU1N0cmVhbS5wcm90b3R5cGUgPSB7fTsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGUy5GU1N0cmVhbS5wcm90b3R5cGUsIHsKICAgICAgICAgIG9iamVjdDogewogICAgICAgICAgICBnZXQoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0KHZhbCkgewogICAgICAgICAgICAgIHRoaXMubm9kZSA9IHZhbDsKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgICBpc1JlYWQ6IHsKICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgIHJldHVybiAodGhpcy5mbGFncyAmIDIwOTcxNTUpICE9PSAxOwogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICAgIGlzV3JpdGU6IHsKICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgIHJldHVybiAodGhpcy5mbGFncyAmIDIwOTcxNTUpICE9PSAwOwogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICAgIGlzQXBwZW5kOiB7CiAgICAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbGFncyAmIDEwMjQ7CiAgICAgICAgICAgIH0sCiAgICAgICAgICB9LAogICAgICAgICAgZmxhZ3M6IHsKICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXJlZC5mbGFnczsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0KHZhbCkgewogICAgICAgICAgICAgIHRoaXMuc2hhcmVkLmZsYWdzID0gdmFsOwogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICAgIHBvc2l0aW9uOiB7CiAgICAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaGFyZWQucG9zaXRpb247CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldCh2YWwpIHsKICAgICAgICAgICAgICB0aGlzLnNoYXJlZC5wb3NpdGlvbiA9IHZhbDsKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgc3RyZWFtID0gT2JqZWN0LmFzc2lnbihuZXcgRlMuRlNTdHJlYW0oKSwgc3RyZWFtKTsKICAgICAgbGV0IGZkID0gRlMubmV4dGZkKGZkX3N0YXJ0LCBmZF9lbmQpOwogICAgICBzdHJlYW0uZmQgPSBmZDsKICAgICAgRlMuc3RyZWFtc1tmZF0gPSBzdHJlYW07CiAgICAgIHJldHVybiBzdHJlYW07CiAgICB9LAogICAgY2xvc2VTdHJlYW06IChmZCkgPT4gewogICAgICBGUy5zdHJlYW1zW2ZkXSA9IG51bGw7CiAgICB9LAogICAgY2hyZGV2X3N0cmVhbV9vcHM6IHsKICAgICAgb3BlbjogKHN0cmVhbSkgPT4gewogICAgICAgIGxldCBkZXZpY2UgPSBGUy5nZXREZXZpY2Uoc3RyZWFtLm5vZGUucmRldik7CiAgICAgICAgc3RyZWFtLnN0cmVhbV9vcHMgPSBkZXZpY2Uuc3RyZWFtX29wczsKICAgICAgICBpZiAoc3RyZWFtLnN0cmVhbV9vcHMub3BlbikgewogICAgICAgICAgc3RyZWFtLnN0cmVhbV9vcHMub3BlbihzdHJlYW0pOwogICAgICAgIH0KICAgICAgfSwKICAgICAgbGxzZWVrOiAoKSA9PiB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApOwogICAgICB9LAogICAgfSwKICAgIG1ham9yOiAoZGV2KSA9PiBkZXYgPj4gOCwKICAgIG1pbm9yOiAoZGV2KSA9PiBkZXYgJiAyNTUsCiAgICBtYWtlZGV2OiAobWEsIG1pKSA9PiAobWEgPDwgOCkgfCBtaSwKICAgIHJlZ2lzdGVyRGV2aWNlOiAoZGV2LCBvcHMpID0+IHsKICAgICAgRlMuZGV2aWNlc1tkZXZdID0geyBzdHJlYW1fb3BzOiBvcHMgfTsKICAgIH0sCiAgICBnZXREZXZpY2U6IChkZXYpID0+IEZTLmRldmljZXNbZGV2XSwKICAgIGdldE1vdW50czogKG1vdW50KSA9PiB7CiAgICAgIGxldCBtb3VudHMgPSBbXTsKICAgICAgbGV0IGNoZWNrID0gW21vdW50XTsKICAgICAgd2hpbGUgKGNoZWNrLmxlbmd0aCkgewogICAgICAgIGxldCBtID0gY2hlY2sucG9wKCk7CiAgICAgICAgbW91bnRzLnB1c2gobSk7CiAgICAgICAgY2hlY2sucHVzaC5hcHBseShjaGVjaywgbS5tb3VudHMpOwogICAgICB9CiAgICAgIHJldHVybiBtb3VudHM7CiAgICB9LAogICAgc3luY2ZzOiAocG9wdWxhdGUsIGNhbGxiYWNrKSA9PiB7CiAgICAgIGlmICh0eXBlb2YgcG9wdWxhdGUgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICBjYWxsYmFjayA9IHBvcHVsYXRlOwogICAgICAgIHBvcHVsYXRlID0gZmFsc2U7CiAgICAgIH0KICAgICAgRlMuc3luY0ZTUmVxdWVzdHMrKzsKICAgICAgaWYgKEZTLnN5bmNGU1JlcXVlc3RzID4gMSkgewogICAgICAgIGVycigKICAgICAgICAgICJ3YXJuaW5nOiAiICsKICAgICAgICAgICAgRlMuc3luY0ZTUmVxdWVzdHMgKwogICAgICAgICAgICAiIEZTLnN5bmNmcyBvcGVyYXRpb25zIGluIGZsaWdodCBhdCBvbmNlLCBwcm9iYWJseSBqdXN0IGRvaW5nIGV4dHJhIHdvcmsiLAogICAgICAgICk7CiAgICAgIH0KICAgICAgbGV0IG1vdW50cyA9IEZTLmdldE1vdW50cyhGUy5yb290Lm1vdW50KTsKICAgICAgbGV0IGNvbXBsZXRlZCA9IDA7CiAgICAgIGZ1bmN0aW9uIGRvQ2FsbGJhY2soZXJyQ29kZSkgewogICAgICAgIEZTLnN5bmNGU1JlcXVlc3RzLS07CiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyckNvZGUpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyQ29kZSkgewogICAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgICBpZiAoIWRvbmUuZXJyb3JlZCkgewogICAgICAgICAgICBkb25lLmVycm9yZWQgPSB0cnVlOwogICAgICAgICAgICByZXR1cm4gZG9DYWxsYmFjayhlcnJDb2RlKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCsrY29tcGxldGVkID49IG1vdW50cy5sZW5ndGgpIHsKICAgICAgICAgIGRvQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIG1vdW50cy5mb3JFYWNoKChtb3VudCkgPT4gewogICAgICAgIGlmICghbW91bnQudHlwZS5zeW5jZnMpIHsKICAgICAgICAgIHJldHVybiBkb25lKG51bGwpOwogICAgICAgIH0KICAgICAgICBtb3VudC50eXBlLnN5bmNmcyhtb3VudCwgcG9wdWxhdGUsIGRvbmUpOwogICAgICB9KTsKICAgIH0sCiAgICBtb3VudDogKHR5cGUsIG9wdHMsIG1vdW50cG9pbnQpID0+IHsKICAgICAgbGV0IHJvb3QgPSBtb3VudHBvaW50ID09PSAiLyI7CiAgICAgIGxldCBwc2V1ZG8gPSAhbW91bnRwb2ludDsKICAgICAgbGV0IG5vZGU7CiAgICAgIGlmIChyb290ICYmIEZTLnJvb3QpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCk7CiAgICAgIH0gZWxzZSBpZiAoIXJvb3QgJiYgIXBzZXVkbykgewogICAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKG1vdW50cG9pbnQsIHsgZm9sbG93X21vdW50OiBmYWxzZSB9KTsKICAgICAgICBtb3VudHBvaW50ID0gbG9va3VwLnBhdGg7CiAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICAgIGlmIChGUy5pc01vdW50cG9pbnQobm9kZSkpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDEwKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxldCBtb3VudCA9IHsgdHlwZSwgb3B0cywgbW91bnRwb2ludCwgbW91bnRzOiBbXSB9OwogICAgICBsZXQgbW91bnRSb290ID0gdHlwZS5tb3VudChtb3VudCk7CiAgICAgIG1vdW50Um9vdC5tb3VudCA9IG1vdW50OwogICAgICBtb3VudC5yb290ID0gbW91bnRSb290OwogICAgICBpZiAocm9vdCkgewogICAgICAgIEZTLnJvb3QgPSBtb3VudFJvb3Q7CiAgICAgIH0gZWxzZSBpZiAobm9kZSkgewogICAgICAgIG5vZGUubW91bnRlZCA9IG1vdW50OwogICAgICAgIGlmIChub2RlLm1vdW50KSB7CiAgICAgICAgICBub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG1vdW50Um9vdDsKICAgIH0sCiAgICB1bm1vdW50OiAobW91bnRwb2ludCkgPT4gewogICAgICBsZXQgbG9va3VwID0gRlMubG9va3VwUGF0aChtb3VudHBvaW50LCB7IGZvbGxvd19tb3VudDogZmFsc2UgfSk7CiAgICAgIGlmICghRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTsKICAgICAgfQogICAgICBsZXQgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICBsZXQgbW91bnQgPSBub2RlLm1vdW50ZWQ7CiAgICAgIGxldCBtb3VudHMgPSBGUy5nZXRNb3VudHMobW91bnQpOwogICAgICBPYmplY3Qua2V5cyhGUy5uYW1lVGFibGUpLmZvckVhY2goKGhhc2gpID0+IHsKICAgICAgICBsZXQgY3VycmVudCA9IEZTLm5hbWVUYWJsZVtoYXNoXTsKICAgICAgICB3aGlsZSAoY3VycmVudCkgewogICAgICAgICAgbGV0IG5leHQgPSBjdXJyZW50Lm5hbWVfbmV4dDsKICAgICAgICAgIGlmIChtb3VudHMuaW5jbHVkZXMoY3VycmVudC5tb3VudCkpIHsKICAgICAgICAgICAgRlMuZGVzdHJveU5vZGUoY3VycmVudCk7CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50ID0gbmV4dDsKICAgICAgICB9CiAgICAgIH0pOwogICAgICBub2RlLm1vdW50ZWQgPSBudWxsOwogICAgICBsZXQgaWR4ID0gbm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3VudCk7CiAgICAgIG5vZGUubW91bnQubW91bnRzLnNwbGljZShpZHgsIDEpOwogICAgfSwKICAgIGxvb2t1cDogKHBhcmVudCwgbmFtZSkgPT4gewogICAgICByZXR1cm4gcGFyZW50Lm5vZGVfb3BzLmxvb2t1cChwYXJlbnQsIG5hbWUpOwogICAgfSwKICAgIG1rbm9kOiAocGF0aCwgbW9kZSwgZGV2KSA9PiB7CiAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgcGFyZW50OiB0cnVlIH0pOwogICAgICBsZXQgcGFyZW50ID0gbG9va3VwLm5vZGU7CiAgICAgIGxldCBuYW1lID0gUEFUSC5iYXNlbmFtZShwYXRoKTsKICAgICAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICIuIiB8fCBuYW1lID09PSAiLi4iKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGxldCBlcnJDb2RlID0gRlMubWF5Q3JlYXRlKHBhcmVudCwgbmFtZSk7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgaWYgKCFwYXJlbnQubm9kZV9vcHMubWtub2QpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7CiAgICAgIH0KICAgICAgcmV0dXJuIHBhcmVudC5ub2RlX29wcy5ta25vZChwYXJlbnQsIG5hbWUsIG1vZGUsIGRldik7CiAgICB9LAogICAgY3JlYXRlOiAocGF0aCwgbW9kZSkgPT4gewogICAgICBtb2RlID0gbW9kZSAhPT0gdW5kZWZpbmVkID8gbW9kZSA6IDQzODsKICAgICAgbW9kZSAmPSA0MDk1OwogICAgICBtb2RlIHw9IDMyNzY4OwogICAgICByZXR1cm4gRlMubWtub2QocGF0aCwgbW9kZSwgMCk7CiAgICB9LAogICAgbWtkaXI6IChwYXRoLCBtb2RlKSA9PiB7CiAgICAgIG1vZGUgPSBtb2RlICE9PSB1bmRlZmluZWQgPyBtb2RlIDogNTExOwogICAgICBtb2RlICY9IDUxMSB8IDUxMjsKICAgICAgbW9kZSB8PSAxNjM4NDsKICAgICAgcmV0dXJuIEZTLm1rbm9kKHBhdGgsIG1vZGUsIDApOwogICAgfSwKICAgIG1rZGlyVHJlZTogKHBhdGgsIG1vZGUpID0+IHsKICAgICAgbGV0IGRpcnMgPSBwYXRoLnNwbGl0KCIvIik7CiAgICAgIGxldCBkID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlycy5sZW5ndGg7ICsraSkgewogICAgICAgIGlmICghZGlyc1tpXSkgY29udGludWU7CiAgICAgICAgZCArPSAiLyIgKyBkaXJzW2ldOwogICAgICAgIHRyeSB7CiAgICAgICAgICBGUy5ta2RpcihkLCBtb2RlKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBpZiAoZS5lcnJubyAhPSAyMCkgdGhyb3cgZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBta2RldjogKHBhdGgsIG1vZGUsIGRldikgPT4gewogICAgICBpZiAodHlwZW9mIGRldiA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICBkZXYgPSBtb2RlOwogICAgICAgIG1vZGUgPSA0Mzg7CiAgICAgIH0KICAgICAgbW9kZSB8PSA4MTkyOwogICAgICByZXR1cm4gRlMubWtub2QocGF0aCwgbW9kZSwgZGV2KTsKICAgIH0sCiAgICBzeW1saW5rOiAob2xkcGF0aCwgbmV3cGF0aCkgPT4gewogICAgICBpZiAoIVBBVEhfRlMucmVzb2x2ZShvbGRwYXRoKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBsZXQgbG9va3VwID0gRlMubG9va3VwUGF0aChuZXdwYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTsKICAgICAgbGV0IHBhcmVudCA9IGxvb2t1cC5ub2RlOwogICAgICBpZiAoIXBhcmVudCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBsZXQgbmV3bmFtZSA9IFBBVEguYmFzZW5hbWUobmV3cGF0aCk7CiAgICAgIGxldCBlcnJDb2RlID0gRlMubWF5Q3JlYXRlKHBhcmVudCwgbmV3bmFtZSk7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgaWYgKCFwYXJlbnQubm9kZV9vcHMuc3ltbGluaykgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKTsKICAgICAgfQogICAgICByZXR1cm4gcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmsocGFyZW50LCBuZXduYW1lLCBvbGRwYXRoKTsKICAgIH0sCiAgICByZW5hbWU6IChvbGRfcGF0aCwgbmV3X3BhdGgpID0+IHsKICAgICAgbGV0IG9sZF9kaXJuYW1lID0gUEFUSC5kaXJuYW1lKG9sZF9wYXRoKTsKICAgICAgbGV0IG5ld19kaXJuYW1lID0gUEFUSC5kaXJuYW1lKG5ld19wYXRoKTsKICAgICAgbGV0IG9sZF9uYW1lID0gUEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7CiAgICAgIGxldCBuZXdfbmFtZSA9IFBBVEguYmFzZW5hbWUobmV3X3BhdGgpOwogICAgICBsZXQgbG9va3VwLCBvbGRfZGlyLCBuZXdfZGlyOwogICAgICBsb29rdXAgPSBGUy5sb29rdXBQYXRoKG9sZF9wYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTsKICAgICAgb2xkX2RpciA9IGxvb2t1cC5ub2RlOwogICAgICBsb29rdXAgPSBGUy5sb29rdXBQYXRoKG5ld19wYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTsKICAgICAgbmV3X2RpciA9IGxvb2t1cC5ub2RlOwogICAgICBpZiAoIW9sZF9kaXIgfHwgIW5ld19kaXIpIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgaWYgKG9sZF9kaXIubW91bnQgIT09IG5ld19kaXIubW91bnQpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig3NSk7CiAgICAgIH0KICAgICAgbGV0IG9sZF9ub2RlID0gRlMubG9va3VwTm9kZShvbGRfZGlyLCBvbGRfbmFtZSk7CiAgICAgIGxldCByZWxhdGl2ZSA9IFBBVEhfRlMucmVsYXRpdmUob2xkX3BhdGgsIG5ld19kaXJuYW1lKTsKICAgICAgaWYgKHJlbGF0aXZlLmNoYXJBdCgwKSAhPT0gIi4iKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIHJlbGF0aXZlID0gUEFUSF9GUy5yZWxhdGl2ZShuZXdfcGF0aCwgb2xkX2Rpcm5hbWUpOwogICAgICBpZiAocmVsYXRpdmUuY2hhckF0KDApICE9PSAiLiIpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NSk7CiAgICAgIH0KICAgICAgbGV0IG5ld19ub2RlOwogICAgICB0cnkgewogICAgICAgIG5ld19ub2RlID0gRlMubG9va3VwTm9kZShuZXdfZGlyLCBuZXdfbmFtZSk7CiAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgIGlmIChvbGRfbm9kZSA9PT0gbmV3X25vZGUpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgbGV0IGlzZGlyID0gRlMuaXNEaXIob2xkX25vZGUubW9kZSk7CiAgICAgIGxldCBlcnJDb2RlID0gRlMubWF5RGVsZXRlKG9sZF9kaXIsIG9sZF9uYW1lLCBpc2Rpcik7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgZXJyQ29kZSA9IG5ld19ub2RlID8gRlMubWF5RGVsZXRlKG5ld19kaXIsIG5ld19uYW1lLCBpc2RpcikgOiBGUy5tYXlDcmVhdGUobmV3X2RpciwgbmV3X25hbWUpOwogICAgICBpZiAoZXJyQ29kZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpOwogICAgICB9CiAgICAgIGlmICghb2xkX2Rpci5ub2RlX29wcy5yZW5hbWUpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7CiAgICAgIH0KICAgICAgaWYgKEZTLmlzTW91bnRwb2ludChvbGRfbm9kZSkgfHwgKG5ld19ub2RlICYmIEZTLmlzTW91bnRwb2ludChuZXdfbm9kZSkpKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApOwogICAgICB9CiAgICAgIGlmIChuZXdfZGlyICE9PSBvbGRfZGlyKSB7CiAgICAgICAgZXJyQ29kZSA9IEZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCAidyIpOwogICAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgRlMuaGFzaFJlbW92ZU5vZGUob2xkX25vZGUpOwogICAgICB0cnkgewogICAgICAgIG9sZF9kaXIubm9kZV9vcHMucmVuYW1lKG9sZF9ub2RlLCBuZXdfZGlyLCBuZXdfbmFtZSk7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICB0aHJvdyBlOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIEZTLmhhc2hBZGROb2RlKG9sZF9ub2RlKTsKICAgICAgfQogICAgfSwKICAgIHJtZGlyOiAocGF0aCkgPT4gewogICAgICBsZXQgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTsKICAgICAgbGV0IHBhcmVudCA9IGxvb2t1cC5ub2RlOwogICAgICBsZXQgbmFtZSA9IFBBVEguYmFzZW5hbWUocGF0aCk7CiAgICAgIGxldCBub2RlID0gRlMubG9va3VwTm9kZShwYXJlbnQsIG5hbWUpOwogICAgICBsZXQgZXJyQ29kZSA9IEZTLm1heURlbGV0ZShwYXJlbnQsIG5hbWUsIHRydWUpOwogICAgICBpZiAoZXJyQ29kZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpOwogICAgICB9CiAgICAgIGlmICghcGFyZW50Lm5vZGVfb3BzLnJtZGlyKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpOwogICAgICB9CiAgICAgIGlmIChGUy5pc01vdW50cG9pbnQobm9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCk7CiAgICAgIH0KICAgICAgcGFyZW50Lm5vZGVfb3BzLnJtZGlyKHBhcmVudCwgbmFtZSk7CiAgICAgIEZTLmRlc3Ryb3lOb2RlKG5vZGUpOwogICAgfSwKICAgIHJlYWRkaXI6IChwYXRoKSA9PiB7CiAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pOwogICAgICBsZXQgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICBpZiAoIW5vZGUubm9kZV9vcHMucmVhZGRpcikgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDU0KTsKICAgICAgfQogICAgICByZXR1cm4gbm9kZS5ub2RlX29wcy5yZWFkZGlyKG5vZGUpOwogICAgfSwKICAgIHVubGluazogKHBhdGgpID0+IHsKICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBwYXJlbnQ6IHRydWUgfSk7CiAgICAgIGxldCBwYXJlbnQgPSBsb29rdXAubm9kZTsKICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCk7CiAgICAgIH0KICAgICAgbGV0IG5hbWUgPSBQQVRILmJhc2VuYW1lKHBhdGgpOwogICAgICBsZXQgbm9kZSA9IEZTLmxvb2t1cE5vZGUocGFyZW50LCBuYW1lKTsKICAgICAgbGV0IGVyckNvZGUgPSBGUy5tYXlEZWxldGUocGFyZW50LCBuYW1lLCBmYWxzZSk7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgaWYgKCFwYXJlbnQubm9kZV9vcHMudW5saW5rKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpOwogICAgICB9CiAgICAgIGlmIChGUy5pc01vdW50cG9pbnQobm9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCk7CiAgICAgIH0KICAgICAgcGFyZW50Lm5vZGVfb3BzLnVubGluayhwYXJlbnQsIG5hbWUpOwogICAgICBGUy5kZXN0cm95Tm9kZShub2RlKTsKICAgIH0sCiAgICByZWFkbGluazogKHBhdGgpID0+IHsKICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCk7CiAgICAgIGxldCBsaW5rID0gbG9va3VwLm5vZGU7CiAgICAgIGlmICghbGluaykgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBpZiAoIWxpbmsubm9kZV9vcHMucmVhZGxpbmspIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7CiAgICAgIH0KICAgICAgcmV0dXJuIFBBVEhfRlMucmVzb2x2ZShGUy5nZXRQYXRoKGxpbmsucGFyZW50KSwgbGluay5ub2RlX29wcy5yZWFkbGluayhsaW5rKSk7CiAgICB9LAogICAgc3RhdDogKHBhdGgsIGRvbnRGb2xsb3cpID0+IHsKICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICFkb250Rm9sbG93IH0pOwogICAgICBsZXQgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICBpZiAoIW5vZGUpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCk7CiAgICAgIH0KICAgICAgaWYgKCFub2RlLm5vZGVfb3BzLmdldGF0dHIpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKTsKICAgIH0sCiAgICBsc3RhdDogKHBhdGgpID0+IHsKICAgICAgcmV0dXJuIEZTLnN0YXQocGF0aCwgdHJ1ZSk7CiAgICB9LAogICAgY2htb2Q6IChwYXRoLCBtb2RlLCBkb250Rm9sbG93KSA9PiB7CiAgICAgIGxldCBub2RlOwogICAgICBpZiAodHlwZW9mIHBhdGggPT09ICJzdHJpbmciKSB7CiAgICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICFkb250Rm9sbG93IH0pOwogICAgICAgIG5vZGUgPSBsb29rdXAubm9kZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBub2RlID0gcGF0aDsKICAgICAgfQogICAgICBpZiAoIW5vZGUubm9kZV9vcHMuc2V0YXR0cikgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKTsKICAgICAgfQogICAgICBub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSwgewogICAgICAgIG1vZGU6IChtb2RlICYgNDA5NSkgfCAobm9kZS5tb2RlICYgfjQwOTUpLAogICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSwKICAgICAgfSk7CiAgICB9LAogICAgbGNobW9kOiAocGF0aCwgbW9kZSkgPT4gewogICAgICBGUy5jaG1vZChwYXRoLCBtb2RlLCB0cnVlKTsKICAgIH0sCiAgICBmY2htb2Q6IChmZCwgbW9kZSkgPT4gewogICAgICBsZXQgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICAgICAgaWYgKCFzdHJlYW0pIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTsKICAgICAgfQogICAgICBGUy5jaG1vZChzdHJlYW0ubm9kZSwgbW9kZSk7CiAgICB9LAogICAgY2hvd246IChwYXRoLCB1aWQsIGdpZCwgZG9udEZvbGxvdykgPT4gewogICAgICBsZXQgbm9kZTsKICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAic3RyaW5nIikgewogICAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiAhZG9udEZvbGxvdyB9KTsKICAgICAgICBub2RlID0gbG9va3VwLm5vZGU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbm9kZSA9IHBhdGg7CiAgICAgIH0KICAgICAgaWYgKCFub2RlLm5vZGVfb3BzLnNldGF0dHIpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7CiAgICAgIH0KICAgICAgbm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUsIHsgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0pOwogICAgfSwKICAgIGxjaG93bjogKHBhdGgsIHVpZCwgZ2lkKSA9PiB7CiAgICAgIEZTLmNob3duKHBhdGgsIHVpZCwgZ2lkLCB0cnVlKTsKICAgIH0sCiAgICBmY2hvd246IChmZCwgdWlkLCBnaWQpID0+IHsKICAgICAgbGV0IHN0cmVhbSA9IEZTLmdldFN0cmVhbShmZCk7CiAgICAgIGlmICghc3RyZWFtKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7CiAgICAgIH0KICAgICAgRlMuY2hvd24oc3RyZWFtLm5vZGUsIHVpZCwgZ2lkKTsKICAgIH0sCiAgICB0cnVuY2F0ZTogKHBhdGgsIGxlbikgPT4gewogICAgICBpZiAobGVuIDwgMCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTsKICAgICAgfQogICAgICBsZXQgbm9kZTsKICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAic3RyaW5nIikgewogICAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pOwogICAgICAgIG5vZGUgPSBsb29rdXAubm9kZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBub2RlID0gcGF0aDsKICAgICAgfQogICAgICBpZiAoIW5vZGUubm9kZV9vcHMuc2V0YXR0cikgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKTsKICAgICAgfQogICAgICBpZiAoRlMuaXNEaXIobm9kZS5tb2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMxKTsKICAgICAgfQogICAgICBpZiAoIUZTLmlzRmlsZShub2RlLm1vZGUpKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGxldCBlcnJDb2RlID0gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsICJ3Iik7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgbm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUsIHsgc2l6ZTogbGVuLCB0aW1lc3RhbXA6IERhdGUubm93KCkgfSk7CiAgICB9LAogICAgZnRydW5jYXRlOiAoZmQsIGxlbikgPT4gewogICAgICBsZXQgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICAgICAgaWYgKCFzdHJlYW0pIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTsKICAgICAgfQogICAgICBpZiAoKHN0cmVhbS5mbGFncyAmIDIwOTcxNTUpID09PSAwKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIEZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLCBsZW4pOwogICAgfSwKICAgIHV0aW1lOiAocGF0aCwgYXRpbWUsIG10aW1lKSA9PiB7CiAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pOwogICAgICBsZXQgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICBub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSwgeyB0aW1lc3RhbXA6IE1hdGgubWF4KGF0aW1lLCBtdGltZSkgfSk7CiAgICB9LAogICAgb3BlbjogKHBhdGgsIGZsYWdzLCBtb2RlKSA9PiB7CiAgICAgIGlmIChwYXRoID09PSAiIikgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBmbGFncyA9IHR5cGVvZiBmbGFncyA9PT0gInN0cmluZyIgPyBGUy5tb2RlU3RyaW5nVG9GbGFncyhmbGFncykgOiBmbGFnczsKICAgICAgbW9kZSA9IHR5cGVvZiBtb2RlID09PSAidW5kZWZpbmVkIiA/IDQzOCA6IG1vZGU7CiAgICAgIGlmIChmbGFncyAmIDY0KSB7CiAgICAgICAgbW9kZSA9IChtb2RlICYgNDA5NSkgfCAzMjc2ODsKICAgICAgfSBlbHNlIHsKICAgICAgICBtb2RlID0gMDsKICAgICAgfQogICAgICBsZXQgbm9kZTsKICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAib2JqZWN0IikgewogICAgICAgIG5vZGUgPSBwYXRoOwogICAgICB9IGVsc2UgewogICAgICAgIHBhdGggPSBQQVRILm5vcm1hbGl6ZShwYXRoKTsKICAgICAgICB0cnkgewogICAgICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICEoZmxhZ3MgJiAxMzEwNzIpIH0pOwogICAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgIH0KICAgICAgbGV0IGNyZWF0ZWQgPSBmYWxzZTsKICAgICAgaWYgKGZsYWdzICYgNjQpIHsKICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgaWYgKGZsYWdzICYgMTI4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDIwKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9kZSA9IEZTLm1rbm9kKHBhdGgsIG1vZGUsIDApOwogICAgICAgICAgY3JlYXRlZCA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghbm9kZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBpZiAoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSkgewogICAgICAgIGZsYWdzICY9IH41MTI7CiAgICAgIH0KICAgICAgaWYgKGZsYWdzICYgNjU1MzYgJiYgIUZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCk7CiAgICAgIH0KICAgICAgaWYgKCFjcmVhdGVkKSB7CiAgICAgICAgbGV0IGVyckNvZGUgPSBGUy5tYXlPcGVuKG5vZGUsIGZsYWdzKTsKICAgICAgICBpZiAoZXJyQ29kZSkgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChmbGFncyAmIDUxMiAmJiAhY3JlYXRlZCkgewogICAgICAgIEZTLnRydW5jYXRlKG5vZGUsIDApOwogICAgICB9CiAgICAgIGZsYWdzICY9IH4oMTI4IHwgNTEyIHwgMTMxMDcyKTsKICAgICAgbGV0IHN0cmVhbSA9IEZTLmNyZWF0ZVN0cmVhbSh7CiAgICAgICAgbm9kZSwKICAgICAgICBwYXRoOiBGUy5nZXRQYXRoKG5vZGUpLAogICAgICAgIGZsYWdzLAogICAgICAgIHNlZWthYmxlOiB0cnVlLAogICAgICAgIHBvc2l0aW9uOiAwLAogICAgICAgIHN0cmVhbV9vcHM6IG5vZGUuc3RyZWFtX29wcywKICAgICAgICB1bmdvdHRlbjogW10sCiAgICAgICAgZXJyb3I6IGZhbHNlLAogICAgICB9KTsKICAgICAgaWYgKHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4pIHsKICAgICAgICBzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSk7CiAgICAgIH0KICAgICAgaWYgKE1vZHVsZVsibG9nUmVhZEZpbGVzIl0gJiYgIShmbGFncyAmIDEpKSB7CiAgICAgICAgaWYgKCFGUy5yZWFkRmlsZXMpIEZTLnJlYWRGaWxlcyA9IHt9OwogICAgICAgIGlmICghKHBhdGggaW4gRlMucmVhZEZpbGVzKSkgewogICAgICAgICAgRlMucmVhZEZpbGVzW3BhdGhdID0gMTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHN0cmVhbTsKICAgIH0sCiAgICBjbG9zZTogKHN0cmVhbSkgPT4gewogICAgICBpZiAoRlMuaXNDbG9zZWQoc3RyZWFtKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmIChzdHJlYW0uZ2V0ZGVudHMpIHN0cmVhbS5nZXRkZW50cyA9IG51bGw7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKHN0cmVhbS5zdHJlYW1fb3BzLmNsb3NlKSB7CiAgICAgICAgICBzdHJlYW0uc3RyZWFtX29wcy5jbG9zZShzdHJlYW0pOwogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHRocm93IGU7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgRlMuY2xvc2VTdHJlYW0oc3RyZWFtLmZkKTsKICAgICAgfQogICAgICBzdHJlYW0uZmQgPSBudWxsOwogICAgfSwKICAgIGlzQ2xvc2VkOiAoc3RyZWFtKSA9PiB7CiAgICAgIHJldHVybiBzdHJlYW0uZmQgPT09IG51bGw7CiAgICB9LAogICAgbGxzZWVrOiAoc3RyZWFtLCBvZmZzZXQsIHdoZW5jZSkgPT4gewogICAgICBpZiAoRlMuaXNDbG9zZWQoc3RyZWFtKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmICghc3RyZWFtLnNlZWthYmxlIHx8ICFzdHJlYW0uc3RyZWFtX29wcy5sbHNlZWspIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig3MCk7CiAgICAgIH0KICAgICAgaWYgKHdoZW5jZSAhPSAwICYmIHdoZW5jZSAhPSAxICYmIHdoZW5jZSAhPSAyKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIHN0cmVhbS5wb3NpdGlvbiA9IHN0cmVhbS5zdHJlYW1fb3BzLmxsc2VlayhzdHJlYW0sIG9mZnNldCwgd2hlbmNlKTsKICAgICAgc3RyZWFtLnVuZ290dGVuID0gW107CiAgICAgIHJldHVybiBzdHJlYW0ucG9zaXRpb247CiAgICB9LAogICAgcmVhZDogKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pID0+IHsKICAgICAgaWYgKGxlbmd0aCA8IDAgfHwgcG9zaXRpb24gPCAwKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGlmIChGUy5pc0Nsb3NlZChzdHJlYW0pKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7CiAgICAgIH0KICAgICAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9PT0gMSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmIChGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMxKTsKICAgICAgfQogICAgICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLnJlYWQpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7CiAgICAgIH0KICAgICAgbGV0IHNlZWtpbmcgPSB0eXBlb2YgcG9zaXRpb24gIT09ICJ1bmRlZmluZWQiOwogICAgICBpZiAoIXNlZWtpbmcpIHsKICAgICAgICBwb3NpdGlvbiA9IHN0cmVhbS5wb3NpdGlvbjsKICAgICAgfSBlbHNlIGlmICghc3RyZWFtLnNlZWthYmxlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApOwogICAgICB9CiAgICAgIGxldCBieXRlc1JlYWQgPSBzdHJlYW0uc3RyZWFtX29wcy5yZWFkKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pOwogICAgICBpZiAoIXNlZWtpbmcpIHN0cmVhbS5wb3NpdGlvbiArPSBieXRlc1JlYWQ7CiAgICAgIHJldHVybiBieXRlc1JlYWQ7CiAgICB9LAogICAgd3JpdGU6IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCBjYW5Pd24pID0+IHsKICAgICAgaWYgKGxlbmd0aCA8IDAgfHwgcG9zaXRpb24gPCAwKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGlmIChGUy5pc0Nsb3NlZChzdHJlYW0pKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7CiAgICAgIH0KICAgICAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9PT0gMCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmIChGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMxKTsKICAgICAgfQogICAgICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGlmIChzdHJlYW0uc2Vla2FibGUgJiYgc3RyZWFtLmZsYWdzICYgMTAyNCkgewogICAgICAgIEZTLmxsc2VlayhzdHJlYW0sIDAsIDIpOwogICAgICB9CiAgICAgIGxldCBzZWVraW5nID0gdHlwZW9mIHBvc2l0aW9uICE9PSAidW5kZWZpbmVkIjsKICAgICAgaWYgKCFzZWVraW5nKSB7CiAgICAgICAgcG9zaXRpb24gPSBzdHJlYW0ucG9zaXRpb247CiAgICAgIH0gZWxzZSBpZiAoIXN0cmVhbS5zZWVrYWJsZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDcwKTsKICAgICAgfQogICAgICBsZXQgYnl0ZXNXcml0dGVuID0gc3RyZWFtLnN0cmVhbV9vcHMud3JpdGUoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FuT3duKTsKICAgICAgaWYgKCFzZWVraW5nKSBzdHJlYW0ucG9zaXRpb24gKz0gYnl0ZXNXcml0dGVuOwogICAgICByZXR1cm4gYnl0ZXNXcml0dGVuOwogICAgfSwKICAgIGFsbG9jYXRlOiAoc3RyZWFtLCBvZmZzZXQsIGxlbmd0aCkgPT4gewogICAgICBpZiAoRlMuaXNDbG9zZWQoc3RyZWFtKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmIChvZmZzZXQgPCAwIHx8IGxlbmd0aCA8PSAwKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGlmICgoc3RyZWFtLmZsYWdzICYgMjA5NzE1NSkgPT09IDApIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTsKICAgICAgfQogICAgICBpZiAoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSAmJiAhRlMuaXNEaXIoc3RyZWFtLm5vZGUubW9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myk7CiAgICAgIH0KICAgICAgaWYgKCFzdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDEzOCk7CiAgICAgIH0KICAgICAgc3RyZWFtLnN0cmVhbV9vcHMuYWxsb2NhdGUoc3RyZWFtLCBvZmZzZXQsIGxlbmd0aCk7CiAgICB9LAogICAgbW1hcDogKHN0cmVhbSwgbGVuZ3RoLCBwb3NpdGlvbiwgcHJvdCwgZmxhZ3MpID0+IHsKICAgICAgaWYgKChwcm90ICYgMikgIT09IDAgJiYgKGZsYWdzICYgMikgPT09IDAgJiYgKHN0cmVhbS5mbGFncyAmIDIwOTcxNTUpICE9PSAyKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMik7CiAgICAgIH0KICAgICAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9PT0gMSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDIpOwogICAgICB9CiAgICAgIGlmICghc3RyZWFtLnN0cmVhbV9vcHMubW1hcCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQzKTsKICAgICAgfQogICAgICByZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubW1hcChzdHJlYW0sIGxlbmd0aCwgcG9zaXRpb24sIHByb3QsIGZsYWdzKTsKICAgIH0sCiAgICBtc3luYzogKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgbW1hcEZsYWdzKSA9PiB7CiAgICAgIGlmICghc3RyZWFtLnN0cmVhbV9vcHMubXN5bmMpIHsKICAgICAgICByZXR1cm4gMDsKICAgICAgfQogICAgICByZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubXN5bmMoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBtbWFwRmxhZ3MpOwogICAgfSwKICAgIG11bm1hcDogKHN0cmVhbSkgPT4gMCwKICAgIGlvY3RsOiAoc3RyZWFtLCBjbWQsIGFyZykgPT4gewogICAgICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTkpOwogICAgICB9CiAgICAgIHJldHVybiBzdHJlYW0uc3RyZWFtX29wcy5pb2N0bChzdHJlYW0sIGNtZCwgYXJnKTsKICAgIH0sCiAgICByZWFkRmlsZTogKHBhdGgsIG9wdHMgPSB7fSkgPT4gewogICAgICBvcHRzLmZsYWdzID0gb3B0cy5mbGFncyB8fCAwOwogICAgICBvcHRzLmVuY29kaW5nID0gb3B0cy5lbmNvZGluZyB8fCAiYmluYXJ5IjsKICAgICAgaWYgKG9wdHMuZW5jb2RpbmcgIT09ICJ1dGY4IiAmJiBvcHRzLmVuY29kaW5nICE9PSAiYmluYXJ5IikgewogICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInICsgb3B0cy5lbmNvZGluZyArICciJyk7CiAgICAgIH0KICAgICAgbGV0IHJldDsKICAgICAgbGV0IHN0cmVhbSA9IEZTLm9wZW4ocGF0aCwgb3B0cy5mbGFncyk7CiAgICAgIGxldCBzdGF0ID0gRlMuc3RhdChwYXRoKTsKICAgICAgbGV0IGxlbmd0aCA9IHN0YXQuc2l6ZTsKICAgICAgbGV0IGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7CiAgICAgIEZTLnJlYWQoc3RyZWFtLCBidWYsIDAsIGxlbmd0aCwgMCk7CiAgICAgIGlmIChvcHRzLmVuY29kaW5nID09PSAidXRmOCIpIHsKICAgICAgICByZXQgPSBVVEY4QXJyYXlUb1N0cmluZyhidWYsIDApOwogICAgICB9IGVsc2UgaWYgKG9wdHMuZW5jb2RpbmcgPT09ICJiaW5hcnkiKSB7CiAgICAgICAgcmV0ID0gYnVmOwogICAgICB9CiAgICAgIEZTLmNsb3NlKHN0cmVhbSk7CiAgICAgIHJldHVybiByZXQ7CiAgICB9LAogICAgd3JpdGVGaWxlOiAocGF0aCwgZGF0YSwgb3B0cyA9IHt9KSA9PiB7CiAgICAgIG9wdHMuZmxhZ3MgPSBvcHRzLmZsYWdzIHx8IDU3NzsKICAgICAgbGV0IHN0cmVhbSA9IEZTLm9wZW4ocGF0aCwgb3B0cy5mbGFncywgb3B0cy5tb2RlKTsKICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAic3RyaW5nIikgewogICAgICAgIGxldCBidWYgPSBuZXcgVWludDhBcnJheShsZW5ndGhCeXRlc1VURjgoZGF0YSkgKyAxKTsKICAgICAgICBsZXQgYWN0dWFsTnVtQnl0ZXMgPSBzdHJpbmdUb1VURjhBcnJheShkYXRhLCBidWYsIDAsIGJ1Zi5sZW5ndGgpOwogICAgICAgIEZTLndyaXRlKHN0cmVhbSwgYnVmLCAwLCBhY3R1YWxOdW1CeXRlcywgdW5kZWZpbmVkLCBvcHRzLmNhbk93bik7CiAgICAgIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSB7CiAgICAgICAgRlMud3JpdGUoc3RyZWFtLCBkYXRhLCAwLCBkYXRhLmJ5dGVMZW5ndGgsIHVuZGVmaW5lZCwgb3B0cy5jYW5Pd24pOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7CiAgICAgIH0KICAgICAgRlMuY2xvc2Uoc3RyZWFtKTsKICAgIH0sCiAgICBjd2Q6ICgpID0+IEZTLmN1cnJlbnRQYXRoLAogICAgY2hkaXI6IChwYXRoKSA9PiB7CiAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pOwogICAgICBpZiAobG9va3VwLm5vZGUgPT09IG51bGwpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCk7CiAgICAgIH0KICAgICAgaWYgKCFGUy5pc0Rpcihsb29rdXAubm9kZS5tb2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDU0KTsKICAgICAgfQogICAgICBsZXQgZXJyQ29kZSA9IEZTLm5vZGVQZXJtaXNzaW9ucyhsb29rdXAubm9kZSwgIngiKTsKICAgICAgaWYgKGVyckNvZGUpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKTsKICAgICAgfQogICAgICBGUy5jdXJyZW50UGF0aCA9IGxvb2t1cC5wYXRoOwogICAgfSwKICAgIGNyZWF0ZURlZmF1bHREaXJlY3RvcmllczogKCkgPT4gewogICAgICBGUy5ta2RpcigiL3RtcCIpOwogICAgICBGUy5ta2RpcigiL2hvbWUiKTsKICAgICAgRlMubWtkaXIoIi9ob21lL3dlYl91c2VyIik7CiAgICB9LAogICAgY3JlYXRlRGVmYXVsdERldmljZXM6ICgpID0+IHsKICAgICAgRlMubWtkaXIoIi9kZXYiKTsKICAgICAgRlMucmVnaXN0ZXJEZXZpY2UoRlMubWFrZWRldigxLCAzKSwgewogICAgICAgIHJlYWQ6ICgpID0+IDAsCiAgICAgICAgd3JpdGU6IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgPT4gbGVuZ3RoLAogICAgICB9KTsKICAgICAgRlMubWtkZXYoIi9kZXYvbnVsbCIsIEZTLm1ha2VkZXYoMSwgMykpOwogICAgICBUVFkucmVnaXN0ZXIoRlMubWFrZWRldig1LCAwKSwgVFRZLmRlZmF1bHRfdHR5X29wcyk7CiAgICAgIFRUWS5yZWdpc3RlcihGUy5tYWtlZGV2KDYsIDApLCBUVFkuZGVmYXVsdF90dHkxX29wcyk7CiAgICAgIEZTLm1rZGV2KCIvZGV2L3R0eSIsIEZTLm1ha2VkZXYoNSwgMCkpOwogICAgICBGUy5ta2RldigiL2Rldi90dHkxIiwgRlMubWFrZWRldig2LCAwKSk7CiAgICAgIGxldCByYW5kb21fZGV2aWNlID0gZ2V0UmFuZG9tRGV2aWNlKCk7CiAgICAgIEZTLmNyZWF0ZURldmljZSgiL2RldiIsICJyYW5kb20iLCByYW5kb21fZGV2aWNlKTsKICAgICAgRlMuY3JlYXRlRGV2aWNlKCIvZGV2IiwgInVyYW5kb20iLCByYW5kb21fZGV2aWNlKTsKICAgICAgRlMubWtkaXIoIi9kZXYvc2htIik7CiAgICAgIEZTLm1rZGlyKCIvZGV2L3NobS90bXAiKTsKICAgIH0sCiAgICBjcmVhdGVTcGVjaWFsRGlyZWN0b3JpZXM6ICgpID0+IHsKICAgICAgRlMubWtkaXIoIi9wcm9jIik7CiAgICAgIGxldCBwcm9jX3NlbGYgPSBGUy5ta2RpcigiL3Byb2Mvc2VsZiIpOwogICAgICBGUy5ta2RpcigiL3Byb2Mvc2VsZi9mZCIpOwogICAgICBGUy5tb3VudCgKICAgICAgICB7CiAgICAgICAgICBtb3VudDogKCkgPT4gewogICAgICAgICAgICBsZXQgbm9kZSA9IEZTLmNyZWF0ZU5vZGUocHJvY19zZWxmLCAiZmQiLCAxNjM4NCB8IDUxMSwgNzMpOwogICAgICAgICAgICBub2RlLm5vZGVfb3BzID0gewogICAgICAgICAgICAgIGxvb2t1cDogKHBhcmVudCwgbmFtZSkgPT4gewogICAgICAgICAgICAgICAgbGV0IGZkID0gK25hbWU7CiAgICAgICAgICAgICAgICBsZXQgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICAgICAgICAgICAgICAgIGlmICghc3RyZWFtKSB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTsKICAgICAgICAgICAgICAgIGxldCByZXQgPSB7CiAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCwKICAgICAgICAgICAgICAgICAgbW91bnQ6IHsgbW91bnRwb2ludDogImZha2UiIH0sCiAgICAgICAgICAgICAgICAgIG5vZGVfb3BzOiB7IHJlYWRsaW5rOiAoKSA9PiBzdHJlYW0ucGF0aCB9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldC5wYXJlbnQgPSByZXQ7CiAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHt9LAogICAgICAgICIvcHJvYy9zZWxmL2ZkIiwKICAgICAgKTsKICAgIH0sCiAgICBjcmVhdGVTdGFuZGFyZFN0cmVhbXM6ICgpID0+IHsKICAgICAgaWYgKE1vZHVsZVsic3RkaW4iXSkgewogICAgICAgIEZTLmNyZWF0ZURldmljZSgiL2RldiIsICJzdGRpbiIsIE1vZHVsZVsic3RkaW4iXSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgRlMuc3ltbGluaygiL2Rldi90dHkiLCAiL2Rldi9zdGRpbiIpOwogICAgICB9CiAgICAgIGlmIChNb2R1bGVbInN0ZG91dCJdKSB7CiAgICAgICAgRlMuY3JlYXRlRGV2aWNlKCIvZGV2IiwgInN0ZG91dCIsIG51bGwsIE1vZHVsZVsic3Rkb3V0Il0pOwogICAgICB9IGVsc2UgewogICAgICAgIEZTLnN5bWxpbmsoIi9kZXYvdHR5IiwgIi9kZXYvc3Rkb3V0Iik7CiAgICAgIH0KICAgICAgaWYgKE1vZHVsZVsic3RkZXJyIl0pIHsKICAgICAgICBGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCAic3RkZXJyIiwgbnVsbCwgTW9kdWxlWyJzdGRlcnIiXSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgRlMuc3ltbGluaygiL2Rldi90dHkxIiwgIi9kZXYvc3RkZXJyIik7CiAgICAgIH0KICAgICAgbGV0IHN0ZGluID0gRlMub3BlbigiL2Rldi9zdGRpbiIsIDApOwogICAgICBsZXQgc3Rkb3V0ID0gRlMub3BlbigiL2Rldi9zdGRvdXQiLCAxKTsKICAgICAgbGV0IHN0ZGVyciA9IEZTLm9wZW4oIi9kZXYvc3RkZXJyIiwgMSk7CiAgICB9LAogICAgZW5zdXJlRXJybm9FcnJvcjogKCkgPT4gewogICAgICBpZiAoRlMuRXJybm9FcnJvcikgcmV0dXJuOwogICAgICBGUy5FcnJub0Vycm9yID0gZnVuY3Rpb24gRXJybm9FcnJvcihlcnJubywgbm9kZSkgewogICAgICAgIHRoaXMubm9kZSA9IG5vZGU7CiAgICAgICAgdGhpcy5zZXRFcnJubyA9IGZ1bmN0aW9uIChlcnJubykgewogICAgICAgICAgdGhpcy5lcnJubyA9IGVycm5vOwogICAgICAgIH07CiAgICAgICAgdGhpcy5zZXRFcnJubyhlcnJubyk7CiAgICAgICAgdGhpcy5tZXNzYWdlID0gIkZTIGVycm9yIjsKICAgICAgfTsKICAgICAgRlMuRXJybm9FcnJvci5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTsKICAgICAgRlMuRXJybm9FcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBGUy5FcnJub0Vycm9yOwogICAgICBbNDRdLmZvckVhY2goKGNvZGUpID0+IHsKICAgICAgICBGUy5nZW5lcmljRXJyb3JzW2NvZGVdID0gbmV3IEZTLkVycm5vRXJyb3IoY29kZSk7CiAgICAgICAgRlMuZ2VuZXJpY0Vycm9yc1tjb2RlXS5zdGFjayA9ICI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+IjsKICAgICAgfSk7CiAgICB9LAogICAgc3RhdGljSW5pdDogKCkgPT4gewogICAgICBGUy5lbnN1cmVFcnJub0Vycm9yKCk7CiAgICAgIEZTLm5hbWVUYWJsZSA9IG5ldyBBcnJheSg0MDk2KTsKICAgICAgRlMubW91bnQoTUVNRlMsIHt9LCAiLyIpOwogICAgICBGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTsKICAgICAgRlMuY3JlYXRlRGVmYXVsdERldmljZXMoKTsKICAgICAgRlMuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCk7CiAgICAgIEZTLmZpbGVzeXN0ZW1zID0geyBNRU1GUyB9OwogICAgfSwKICAgIGluaXQ6IChpbnB1dCwgb3V0cHV0LCBlcnJvcikgPT4gewogICAgICBGUy5pbml0LmluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgRlMuZW5zdXJlRXJybm9FcnJvcigpOwogICAgICBNb2R1bGVbInN0ZGluIl0gPSBpbnB1dCB8fCBNb2R1bGVbInN0ZGluIl07CiAgICAgIE1vZHVsZVsic3Rkb3V0Il0gPSBvdXRwdXQgfHwgTW9kdWxlWyJzdGRvdXQiXTsKICAgICAgTW9kdWxlWyJzdGRlcnIiXSA9IGVycm9yIHx8IE1vZHVsZVsic3RkZXJyIl07CiAgICAgIEZTLmNyZWF0ZVN0YW5kYXJkU3RyZWFtcygpOwogICAgfSwKICAgIHF1aXQ6ICgpID0+IHsKICAgICAgRlMuaW5pdC5pbml0aWFsaXplZCA9IGZhbHNlOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IEZTLnN0cmVhbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBsZXQgc3RyZWFtID0gRlMuc3RyZWFtc1tpXTsKICAgICAgICBpZiAoIXN0cmVhbSkgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIEZTLmNsb3NlKHN0cmVhbSk7CiAgICAgIH0KICAgIH0sCiAgICBnZXRNb2RlOiAoY2FuUmVhZCwgY2FuV3JpdGUpID0+IHsKICAgICAgbGV0IG1vZGUgPSAwOwogICAgICBpZiAoY2FuUmVhZCkgbW9kZSB8PSAyOTIgfCA3MzsKICAgICAgaWYgKGNhbldyaXRlKSBtb2RlIHw9IDE0NjsKICAgICAgcmV0dXJuIG1vZGU7CiAgICB9LAogICAgZmluZE9iamVjdDogKHBhdGgsIGRvbnRSZXNvbHZlTGFzdExpbmspID0+IHsKICAgICAgbGV0IHJldCA9IEZTLmFuYWx5emVQYXRoKHBhdGgsIGRvbnRSZXNvbHZlTGFzdExpbmspOwogICAgICBpZiAoIXJldC5leGlzdHMpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gcmV0Lm9iamVjdDsKICAgIH0sCiAgICBhbmFseXplUGF0aDogKHBhdGgsIGRvbnRSZXNvbHZlTGFzdExpbmspID0+IHsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IGZvbGxvdzogIWRvbnRSZXNvbHZlTGFzdExpbmsgfSk7CiAgICAgICAgcGF0aCA9IGxvb2t1cC5wYXRoOwogICAgICB9IGNhdGNoIChlKSB7fQogICAgICBsZXQgcmV0ID0gewogICAgICAgIGlzUm9vdDogZmFsc2UsCiAgICAgICAgZXhpc3RzOiBmYWxzZSwKICAgICAgICBlcnJvcjogMCwKICAgICAgICBuYW1lOiBudWxsLAogICAgICAgIHBhdGg6IG51bGwsCiAgICAgICAgb2JqZWN0OiBudWxsLAogICAgICAgIHBhcmVudEV4aXN0czogZmFsc2UsCiAgICAgICAgcGFyZW50UGF0aDogbnVsbCwKICAgICAgICBwYXJlbnRPYmplY3Q6IG51bGwsCiAgICAgIH07CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBwYXJlbnQ6IHRydWUgfSk7CiAgICAgICAgcmV0LnBhcmVudEV4aXN0cyA9IHRydWU7CiAgICAgICAgcmV0LnBhcmVudFBhdGggPSBsb29rdXAucGF0aDsKICAgICAgICByZXQucGFyZW50T2JqZWN0ID0gbG9va3VwLm5vZGU7CiAgICAgICAgcmV0Lm5hbWUgPSBQQVRILmJhc2VuYW1lKHBhdGgpOwogICAgICAgIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICFkb250UmVzb2x2ZUxhc3RMaW5rIH0pOwogICAgICAgIHJldC5leGlzdHMgPSB0cnVlOwogICAgICAgIHJldC5wYXRoID0gbG9va3VwLnBhdGg7CiAgICAgICAgcmV0Lm9iamVjdCA9IGxvb2t1cC5ub2RlOwogICAgICAgIHJldC5uYW1lID0gbG9va3VwLm5vZGUubmFtZTsKICAgICAgICByZXQuaXNSb290ID0gbG9va3VwLnBhdGggPT09ICIvIjsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHJldC5lcnJvciA9IGUuZXJybm87CiAgICAgIH0KICAgICAgcmV0dXJuIHJldDsKICAgIH0sCiAgICBjcmVhdGVQYXRoOiAocGFyZW50LCBwYXRoLCBjYW5SZWFkLCBjYW5Xcml0ZSkgPT4gewogICAgICBwYXJlbnQgPSB0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KTsKICAgICAgbGV0IHBhcnRzID0gcGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKTsKICAgICAgd2hpbGUgKHBhcnRzLmxlbmd0aCkgewogICAgICAgIGxldCBwYXJ0ID0gcGFydHMucG9wKCk7CiAgICAgICAgaWYgKCFwYXJ0KSBjb250aW51ZTsKICAgICAgICB2YXIgY3VycmVudCA9IFBBVEguam9pbjIocGFyZW50LCBwYXJ0KTsKICAgICAgICB0cnkgewogICAgICAgICAgRlMubWtkaXIoY3VycmVudCk7CiAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICBwYXJlbnQgPSBjdXJyZW50OwogICAgICB9CiAgICAgIHJldHVybiBjdXJyZW50OwogICAgfSwKICAgIGNyZWF0ZUZpbGU6IChwYXJlbnQsIG5hbWUsIHByb3BlcnRpZXMsIGNhblJlYWQsIGNhbldyaXRlKSA9PiB7CiAgICAgIGxldCBwYXRoID0gUEFUSC5qb2luMih0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSwgbmFtZSk7CiAgICAgIGxldCBtb2RlID0gRlMuZ2V0TW9kZShjYW5SZWFkLCBjYW5Xcml0ZSk7CiAgICAgIHJldHVybiBGUy5jcmVhdGUocGF0aCwgbW9kZSk7CiAgICB9LAogICAgY3JlYXRlRGF0YUZpbGU6IChwYXJlbnQsIG5hbWUsIGRhdGEsIGNhblJlYWQsIGNhbldyaXRlLCBjYW5Pd24pID0+IHsKICAgICAgbGV0IHBhdGggPSBuYW1lOwogICAgICBpZiAocGFyZW50KSB7CiAgICAgICAgcGFyZW50ID0gdHlwZW9mIHBhcmVudCA9PT0gInN0cmluZyIgPyBwYXJlbnQgOiBGUy5nZXRQYXRoKHBhcmVudCk7CiAgICAgICAgcGF0aCA9IG5hbWUgPyBQQVRILmpvaW4yKHBhcmVudCwgbmFtZSkgOiBwYXJlbnQ7CiAgICAgIH0KICAgICAgbGV0IG1vZGUgPSBGUy5nZXRNb2RlKGNhblJlYWQsIGNhbldyaXRlKTsKICAgICAgbGV0IG5vZGUgPSBGUy5jcmVhdGUocGF0aCwgbW9kZSk7CiAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAic3RyaW5nIikgewogICAgICAgICAgbGV0IGFyciA9IG5ldyBBcnJheShkYXRhLmxlbmd0aCk7CiAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZGF0YS5sZW5ndGg7IGkgPCBsZW47ICsraSkgYXJyW2ldID0gZGF0YS5jaGFyQ29kZUF0KGkpOwogICAgICAgICAgZGF0YSA9IGFycjsKICAgICAgICB9CiAgICAgICAgRlMuY2htb2Qobm9kZSwgbW9kZSB8IDE0Nik7CiAgICAgICAgbGV0IHN0cmVhbSA9IEZTLm9wZW4obm9kZSwgNTc3KTsKICAgICAgICBGUy53cml0ZShzdHJlYW0sIGRhdGEsIDAsIGRhdGEubGVuZ3RoLCAwLCBjYW5Pd24pOwogICAgICAgIEZTLmNsb3NlKHN0cmVhbSk7CiAgICAgICAgRlMuY2htb2Qobm9kZSwgbW9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5vZGU7CiAgICB9LAogICAgY3JlYXRlRGV2aWNlOiAocGFyZW50LCBuYW1lLCBpbnB1dCwgb3V0cHV0KSA9PiB7CiAgICAgIGxldCBwYXRoID0gUEFUSC5qb2luMih0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSwgbmFtZSk7CiAgICAgIGxldCBtb2RlID0gRlMuZ2V0TW9kZSghIWlucHV0LCAhIW91dHB1dCk7CiAgICAgIGlmICghRlMuY3JlYXRlRGV2aWNlLm1ham9yKSBGUy5jcmVhdGVEZXZpY2UubWFqb3IgPSA2NDsKICAgICAgbGV0IGRldiA9IEZTLm1ha2VkZXYoRlMuY3JlYXRlRGV2aWNlLm1ham9yKyssIDApOwogICAgICBGUy5yZWdpc3RlckRldmljZShkZXYsIHsKICAgICAgICBvcGVuOiAoc3RyZWFtKSA9PiB7CiAgICAgICAgICBzdHJlYW0uc2Vla2FibGUgPSBmYWxzZTsKICAgICAgICB9LAogICAgICAgIGNsb3NlOiAoc3RyZWFtKSA9PiB7CiAgICAgICAgICBpZiAob3V0cHV0ICYmIG91dHB1dC5idWZmZXIgJiYgb3V0cHV0LmJ1ZmZlci5sZW5ndGgpIHsKICAgICAgICAgICAgb3V0cHV0KDEwKTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJlYWQ6IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgPT4gewogICAgICAgICAgbGV0IGJ5dGVzUmVhZCA9IDA7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQ7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzdWx0ID0gaW5wdXQoKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYgYnl0ZXNSZWFkID09PSAwKSB7CiAgICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCkgYnJlYWs7CiAgICAgICAgICAgIGJ5dGVzUmVhZCsrOwogICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoYnl0ZXNSZWFkKSB7CiAgICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwogICAgICAgIH0sCiAgICAgICAgd3JpdGU6IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgPT4gewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIG91dHB1dChidWZmZXJbb2Zmc2V0ICsgaV0pOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjkpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9LAogICAgICB9KTsKICAgICAgcmV0dXJuIEZTLm1rZGV2KHBhdGgsIG1vZGUsIGRldik7CiAgICB9LAogICAgZm9yY2VMb2FkRmlsZTogKG9iaikgPT4gewogICAgICBpZiAob2JqLmlzRGV2aWNlIHx8IG9iai5pc0ZvbGRlciB8fCBvYmoubGluayB8fCBvYmouY29udGVudHMpIHJldHVybiB0cnVlOwogICAgICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAidW5kZWZpbmVkIikgewogICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICJMYXp5IGxvYWRpbmcgc2hvdWxkIGhhdmUgYmVlbiBwZXJmb3JtZWQgKGNvbnRlbnRzIHNldCkgaW4gY3JlYXRlTGF6eUZpbGUsIGJ1dCBpdCB3YXMgbm90LiBMYXp5IGxvYWRpbmcgb25seSB3b3JrcyBpbiB3ZWIgd29ya2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIG9uIHRoZSBtYWluIHRocmVhZC4iLAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAocmVhZF8pIHsKICAgICAgICB0cnkgewogICAgICAgICAgb2JqLmNvbnRlbnRzID0gaW50QXJyYXlGcm9tU3RyaW5nKHJlYWRfKG9iai51cmwpLCB0cnVlKTsKICAgICAgICAgIG9iai51c2VkQnl0ZXMgPSBvYmouY29udGVudHMubGVuZ3RoOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbG9hZCB3aXRob3V0IHJlYWQoKSBvciBYTUxIdHRwUmVxdWVzdC4iKTsKICAgICAgfQogICAgfSwKICAgIGNyZWF0ZUxhenlGaWxlOiAocGFyZW50LCBuYW1lLCB1cmwsIGNhblJlYWQsIGNhbldyaXRlKSA9PiB7CiAgICAgIGZ1bmN0aW9uIExhenlVaW50OEFycmF5KCkgewogICAgICAgIHRoaXMubGVuZ3RoS25vd24gPSBmYWxzZTsKICAgICAgICB0aGlzLmNodW5rcyA9IFtdOwogICAgICB9CiAgICAgIExhenlVaW50OEFycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBMYXp5VWludDhBcnJheV9nZXQoaWR4KSB7CiAgICAgICAgaWYgKGlkeCA+IHRoaXMubGVuZ3RoIC0gMSB8fCBpZHggPCAwKSB7CiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICBsZXQgY2h1bmtPZmZzZXQgPSBpZHggJSB0aGlzLmNodW5rU2l6ZTsKICAgICAgICBsZXQgY2h1bmtOdW0gPSAoaWR4IC8gdGhpcy5jaHVua1NpemUpIHwgMDsKICAgICAgICByZXR1cm4gdGhpcy5nZXR0ZXIoY2h1bmtOdW0pW2NodW5rT2Zmc2V0XTsKICAgICAgfTsKICAgICAgTGF6eVVpbnQ4QXJyYXkucHJvdG90eXBlLnNldERhdGFHZXR0ZXIgPSBmdW5jdGlvbiBMYXp5VWludDhBcnJheV9zZXREYXRhR2V0dGVyKGdldHRlcikgewogICAgICAgIHRoaXMuZ2V0dGVyID0gZ2V0dGVyOwogICAgICB9OwogICAgICBMYXp5VWludDhBcnJheS5wcm90b3R5cGUuY2FjaGVMZW5ndGggPSBmdW5jdGlvbiBMYXp5VWludDhBcnJheV9jYWNoZUxlbmd0aCgpIHsKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oIkhFQUQiLCB1cmwsIGZhbHNlKTsKICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICBpZiAoISgoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkgfHwgeGhyLnN0YXR1cyA9PT0gMzA0KSkKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiICsgdXJsICsgIi4gU3RhdHVzOiAiICsgeGhyLnN0YXR1cyk7CiAgICAgICAgbGV0IGRhdGFsZW5ndGggPSBOdW1iZXIoeGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKTsKICAgICAgICBsZXQgaGVhZGVyOwogICAgICAgIGxldCBoYXNCeXRlU2VydmluZyA9CiAgICAgICAgICAoaGVhZGVyID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCJBY2NlcHQtUmFuZ2VzIikpICYmIGhlYWRlciA9PT0gImJ5dGVzIjsKICAgICAgICBsZXQgdXNlc0d6aXAgPSAoaGVhZGVyID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LUVuY29kaW5nIikpICYmIGhlYWRlciA9PT0gImd6aXAiOwogICAgICAgIGxldCBjaHVua1NpemUgPSAxMDI0ICogMTAyNDsKICAgICAgICBpZiAoIWhhc0J5dGVTZXJ2aW5nKSBjaHVua1NpemUgPSBkYXRhbGVuZ3RoOwogICAgICAgIGxldCBkb1hIUiA9IChmcm9tLCB0bykgPT4gewogICAgICAgICAgaWYgKGZyb20gPiB0bykKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHJhbmdlICgiICsgZnJvbSArICIsICIgKyB0byArICIpIG9yIG5vIGJ5dGVzIHJlcXVlc3RlZCEiKTsKICAgICAgICAgIGlmICh0byA+IGRhdGFsZW5ndGggLSAxKQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIiArIGRhdGFsZW5ndGggKyAiIGJ5dGVzIGF2YWlsYWJsZSEgcHJvZ3JhbW1lciBlcnJvciEiKTsKICAgICAgICAgIGxldCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgIHhoci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKICAgICAgICAgIGlmIChkYXRhbGVuZ3RoICE9PSBjaHVua1NpemUpIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCJSYW5nZSIsICJieXRlcz0iICsgZnJvbSArICItIiArIHRvKTsKICAgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAiYXJyYXlidWZmZXIiOwogICAgICAgICAgaWYgKHhoci5vdmVycmlkZU1pbWVUeXBlKSB7CiAgICAgICAgICAgIHhoci5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3BsYWluOyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkIik7CiAgICAgICAgICB9CiAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgIGlmICghKCh4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwKSB8fCB4aHIuc3RhdHVzID09PSAzMDQpKQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxvYWQgIiArIHVybCArICIuIFN0YXR1czogIiArIHhoci5zdGF0dXMpOwogICAgICAgICAgaWYgKHhoci5yZXNwb25zZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2UgfHwgW10pOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGludEFycmF5RnJvbVN0cmluZyh4aHIucmVzcG9uc2VUZXh0IHx8ICIiLCB0cnVlKTsKICAgICAgICB9OwogICAgICAgIGxldCBsYXp5QXJyYXkgPSB0aGlzOwogICAgICAgIGxhenlBcnJheS5zZXREYXRhR2V0dGVyKChjaHVua051bSkgPT4gewogICAgICAgICAgbGV0IHN0YXJ0ID0gY2h1bmtOdW0gKiBjaHVua1NpemU7CiAgICAgICAgICBsZXQgZW5kID0gKGNodW5rTnVtICsgMSkgKiBjaHVua1NpemUgLSAxOwogICAgICAgICAgZW5kID0gTWF0aC5taW4oZW5kLCBkYXRhbGVuZ3RoIC0gMSk7CiAgICAgICAgICBpZiAodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICBsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXSA9IGRvWEhSKHN0YXJ0LCBlbmQpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHR5cGVvZiBsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXSA9PT0gInVuZGVmaW5lZCIpIHRocm93IG5ldyBFcnJvcigiZG9YSFIgZmFpbGVkISIpOwogICAgICAgICAgcmV0dXJuIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dOwogICAgICAgIH0pOwogICAgICAgIGlmICh1c2VzR3ppcCB8fCAhZGF0YWxlbmd0aCkgewogICAgICAgICAgY2h1bmtTaXplID0gZGF0YWxlbmd0aCA9IDE7CiAgICAgICAgICBkYXRhbGVuZ3RoID0gdGhpcy5nZXR0ZXIoMCkubGVuZ3RoOwogICAgICAgICAgY2h1bmtTaXplID0gZGF0YWxlbmd0aDsKICAgICAgICAgIG91dCgiTGF6eUZpbGVzIG9uIGd6aXAgZm9yY2VzIGRvd25sb2FkIG9mIHRoZSB3aG9sZSBmaWxlIHdoZW4gbGVuZ3RoIGlzIGFjY2Vzc2VkIik7CiAgICAgICAgfQogICAgICAgIHRoaXMuX2xlbmd0aCA9IGRhdGFsZW5ndGg7CiAgICAgICAgdGhpcy5fY2h1bmtTaXplID0gY2h1bmtTaXplOwogICAgICAgIHRoaXMubGVuZ3RoS25vd24gPSB0cnVlOwogICAgICB9OwogICAgICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAidW5kZWZpbmVkIikgewogICAgICAgIGlmICghRU5WSVJPTk1FTlRfSVNfV09SS0VSKQogICAgICAgICAgdGhyb3cgIkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiOwogICAgICAgIGxldCBsYXp5QXJyYXkgPSBuZXcgTGF6eVVpbnQ4QXJyYXkoKTsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsYXp5QXJyYXksIHsKICAgICAgICAgIGxlbmd0aDogewogICAgICAgICAgICBnZXQoKSB7CiAgICAgICAgICAgICAgaWYgKCF0aGlzLmxlbmd0aEtub3duKSB7CiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlTGVuZ3RoKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sZW5ndGg7CiAgICAgICAgICAgIH0sCiAgICAgICAgICB9LAogICAgICAgICAgY2h1bmtTaXplOiB7CiAgICAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICBpZiAoIXRoaXMubGVuZ3RoS25vd24pIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVMZW5ndGgoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NodW5rU2l6ZTsKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgfSk7CiAgICAgICAgdmFyIHByb3BlcnRpZXMgPSB7IGlzRGV2aWNlOiBmYWxzZSwgY29udGVudHM6IGxhenlBcnJheSB9OwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBwcm9wZXJ0aWVzID0geyBpc0RldmljZTogZmFsc2UsIHVybCB9OwogICAgICB9CiAgICAgIGxldCBub2RlID0gRlMuY3JlYXRlRmlsZShwYXJlbnQsIG5hbWUsIHByb3BlcnRpZXMsIGNhblJlYWQsIGNhbldyaXRlKTsKICAgICAgaWYgKHByb3BlcnRpZXMuY29udGVudHMpIHsKICAgICAgICBub2RlLmNvbnRlbnRzID0gcHJvcGVydGllcy5jb250ZW50czsKICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0aWVzLnVybCkgewogICAgICAgIG5vZGUuY29udGVudHMgPSBudWxsOwogICAgICAgIG5vZGUudXJsID0gcHJvcGVydGllcy51cmw7CiAgICAgIH0KICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobm9kZSwgewogICAgICAgIHVzZWRCeXRlczogewogICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50cy5sZW5ndGg7CiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgIH0pOwogICAgICBsZXQgc3RyZWFtX29wcyA9IHt9OwogICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG5vZGUuc3RyZWFtX29wcyk7CiAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7CiAgICAgICAgbGV0IGZuID0gbm9kZS5zdHJlYW1fb3BzW2tleV07CiAgICAgICAgc3RyZWFtX29wc1trZXldID0gZnVuY3Rpb24gZm9yY2VMb2FkTGF6eUZpbGUoKSB7CiAgICAgICAgICBGUy5mb3JjZUxvYWRGaWxlKG5vZGUpOwogICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSk7CiAgICAgIGZ1bmN0aW9uIHdyaXRlQ2h1bmtzKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHsKICAgICAgICBsZXQgY29udGVudHMgPSBzdHJlYW0ubm9kZS5jb250ZW50czsKICAgICAgICBpZiAocG9zaXRpb24gPj0gY29udGVudHMubGVuZ3RoKSByZXR1cm4gMDsKICAgICAgICBsZXQgc2l6ZSA9IE1hdGgubWluKGNvbnRlbnRzLmxlbmd0aCAtIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgICAgIGlmIChjb250ZW50cy5zbGljZSkgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIGldID0gY29udGVudHNbcG9zaXRpb24gKyBpXTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIGldID0gY29udGVudHMuZ2V0KHBvc2l0aW9uICsgaSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBzaXplOwogICAgICB9CiAgICAgIHN0cmVhbV9vcHMucmVhZCA9IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSA9PiB7CiAgICAgICAgRlMuZm9yY2VMb2FkRmlsZShub2RlKTsKICAgICAgICByZXR1cm4gd3JpdGVDaHVua3Moc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7CiAgICAgIH07CiAgICAgIHN0cmVhbV9vcHMubW1hcCA9IChzdHJlYW0sIGxlbmd0aCwgcG9zaXRpb24sIHByb3QsIGZsYWdzKSA9PiB7CiAgICAgICAgRlMuZm9yY2VMb2FkRmlsZShub2RlKTsKICAgICAgICBsZXQgcHRyID0gbW1hcEFsbG9jKGxlbmd0aCk7CiAgICAgICAgaWYgKCFwdHIpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ4KTsKICAgICAgICB9CiAgICAgICAgd3JpdGVDaHVua3Moc3RyZWFtLCBIRUFQOCwgcHRyLCBsZW5ndGgsIHBvc2l0aW9uKTsKICAgICAgICByZXR1cm4geyBwdHIsIGFsbG9jYXRlZDogdHJ1ZSB9OwogICAgICB9OwogICAgICBub2RlLnN0cmVhbV9vcHMgPSBzdHJlYW1fb3BzOwogICAgICByZXR1cm4gbm9kZTsKICAgIH0sCiAgICBjcmVhdGVQcmVsb2FkZWRGaWxlOiAoCiAgICAgIHBhcmVudCwKICAgICAgbmFtZSwKICAgICAgdXJsLAogICAgICBjYW5SZWFkLAogICAgICBjYW5Xcml0ZSwKICAgICAgb25sb2FkLAogICAgICBvbmVycm9yLAogICAgICBkb250Q3JlYXRlRmlsZSwKICAgICAgY2FuT3duLAogICAgICBwcmVGaW5pc2gsCiAgICApID0+IHsKICAgICAgbGV0IGZ1bGxuYW1lID0gbmFtZSA/IFBBVEhfRlMucmVzb2x2ZShQQVRILmpvaW4yKHBhcmVudCwgbmFtZSkpIDogcGFyZW50OwogICAgICBsZXQgZGVwID0gZ2V0VW5pcXVlUnVuRGVwZW5kZW5jeSgiY3AgIiArIGZ1bGxuYW1lKTsKICAgICAgZnVuY3Rpb24gcHJvY2Vzc0RhdGEoYnl0ZUFycmF5KSB7CiAgICAgICAgZnVuY3Rpb24gZmluaXNoKGJ5dGVBcnJheSkgewogICAgICAgICAgaWYgKHByZUZpbmlzaCkgcHJlRmluaXNoKCk7CiAgICAgICAgICBpZiAoIWRvbnRDcmVhdGVGaWxlKSB7CiAgICAgICAgICAgIEZTLmNyZWF0ZURhdGFGaWxlKHBhcmVudCwgbmFtZSwgYnl0ZUFycmF5LCBjYW5SZWFkLCBjYW5Xcml0ZSwgY2FuT3duKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChvbmxvYWQpIG9ubG9hZCgpOwogICAgICAgICAgcmVtb3ZlUnVuRGVwZW5kZW5jeShkZXApOwogICAgICAgIH0KICAgICAgICBpZiAoCiAgICAgICAgICBCcm93c2VyLmhhbmRsZWRCeVByZWxvYWRQbHVnaW4oYnl0ZUFycmF5LCBmdWxsbmFtZSwgZmluaXNoLCAoKSA9PiB7CiAgICAgICAgICAgIGlmIChvbmVycm9yKSBvbmVycm9yKCk7CiAgICAgICAgICAgIHJlbW92ZVJ1bkRlcGVuZGVuY3koZGVwKTsKICAgICAgICAgIH0pCiAgICAgICAgKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGZpbmlzaChieXRlQXJyYXkpOwogICAgICB9CiAgICAgIGFkZFJ1bkRlcGVuZGVuY3koZGVwKTsKICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICJzdHJpbmciKSB7CiAgICAgICAgYXN5bmNMb2FkKHVybCwgKGJ5dGVBcnJheSkgPT4gcHJvY2Vzc0RhdGEoYnl0ZUFycmF5KSwgb25lcnJvcik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHJvY2Vzc0RhdGEodXJsKTsKICAgICAgfQogICAgfSwKICAgIGluZGV4ZWREQjogKCkgPT4gewogICAgICByZXR1cm4gKAogICAgICAgIHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tc0luZGV4ZWREQgogICAgICApOwogICAgfSwKICAgIERCX05BTUU6ICgpID0+IHsKICAgICAgcmV0dXJuICJFTV9GU18iICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwogICAgfSwKICAgIERCX1ZFUlNJT046IDIwLAogICAgREJfU1RPUkVfTkFNRTogIkZJTEVfREFUQSIsCiAgICBzYXZlRmlsZXNUb0RCOiAocGF0aHMsIG9ubG9hZCwgb25lcnJvcikgPT4gewogICAgICBvbmxvYWQgPSBvbmxvYWQgfHwgKCgpID0+IHt9KTsKICAgICAgb25lcnJvciA9IG9uZXJyb3IgfHwgKCgpID0+IHt9KTsKICAgICAgbGV0IGluZGV4ZWREQiA9IEZTLmluZGV4ZWREQigpOwogICAgICB0cnkgewogICAgICAgIHZhciBvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKEZTLkRCX05BTUUoKSwgRlMuREJfVkVSU0lPTik7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gb25lcnJvcihlKTsKICAgICAgfQogICAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoKSA9PiB7CiAgICAgICAgb3V0KCJjcmVhdGluZyBkYiIpOwogICAgICAgIGxldCBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDsKICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICAgICAgfTsKICAgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gewogICAgICAgIGxldCBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDsKICAgICAgICBsZXQgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sICJyZWFkd3JpdGUiKTsKICAgICAgICBsZXQgZmlsZXMgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICAgICAgICBsZXQgb2sgPSAwLAogICAgICAgICAgZmFpbCA9IDAsCiAgICAgICAgICB0b3RhbCA9IHBhdGhzLmxlbmd0aDsKICAgICAgICBmdW5jdGlvbiBmaW5pc2goKSB7CiAgICAgICAgICBpZiAoZmFpbCA9PSAwKSBvbmxvYWQoKTsKICAgICAgICAgIGVsc2Ugb25lcnJvcigpOwogICAgICAgIH0KICAgICAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7CiAgICAgICAgICBsZXQgcHV0UmVxdWVzdCA9IGZpbGVzLnB1dChGUy5hbmFseXplUGF0aChwYXRoKS5vYmplY3QuY29udGVudHMsIHBhdGgpOwogICAgICAgICAgcHV0UmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7CiAgICAgICAgICAgIG9rKys7CiAgICAgICAgICAgIGlmIChvayArIGZhaWwgPT0gdG90YWwpIGZpbmlzaCgpOwogICAgICAgICAgfTsKICAgICAgICAgIHB1dFJlcXVlc3Qub25lcnJvciA9ICgpID0+IHsKICAgICAgICAgICAgZmFpbCsrOwogICAgICAgICAgICBpZiAob2sgKyBmYWlsID09IHRvdGFsKSBmaW5pc2goKTsKICAgICAgICAgIH07CiAgICAgICAgfSk7CiAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IG9uZXJyb3I7CiAgICAgIH07CiAgICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBvbmVycm9yOwogICAgfSwKICAgIGxvYWRGaWxlc0Zyb21EQjogKHBhdGhzLCBvbmxvYWQsIG9uZXJyb3IpID0+IHsKICAgICAgb25sb2FkID0gb25sb2FkIHx8ICgoKSA9PiB7fSk7CiAgICAgIG9uZXJyb3IgPSBvbmVycm9yIHx8ICgoKSA9PiB7fSk7CiAgICAgIGxldCBpbmRleGVkREIgPSBGUy5pbmRleGVkREIoKTsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgb3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksIEZTLkRCX1ZFUlNJT04pOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgcmV0dXJuIG9uZXJyb3IoZSk7CiAgICAgIH0KICAgICAgb3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gb25lcnJvcjsKICAgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gewogICAgICAgIGxldCBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCAicmVhZG9ubHkiKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBvbmVycm9yKGUpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsZXQgZmlsZXMgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICAgICAgICBsZXQgb2sgPSAwLAogICAgICAgICAgZmFpbCA9IDAsCiAgICAgICAgICB0b3RhbCA9IHBhdGhzLmxlbmd0aDsKICAgICAgICBmdW5jdGlvbiBmaW5pc2goKSB7CiAgICAgICAgICBpZiAoZmFpbCA9PSAwKSBvbmxvYWQoKTsKICAgICAgICAgIGVsc2Ugb25lcnJvcigpOwogICAgICAgIH0KICAgICAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7CiAgICAgICAgICBsZXQgZ2V0UmVxdWVzdCA9IGZpbGVzLmdldChwYXRoKTsKICAgICAgICAgIGdldFJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gewogICAgICAgICAgICBpZiAoRlMuYW5hbHl6ZVBhdGgocGF0aCkuZXhpc3RzKSB7CiAgICAgICAgICAgICAgRlMudW5saW5rKHBhdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEZTLmNyZWF0ZURhdGFGaWxlKAogICAgICAgICAgICAgIFBBVEguZGlybmFtZShwYXRoKSwKICAgICAgICAgICAgICBQQVRILmJhc2VuYW1lKHBhdGgpLAogICAgICAgICAgICAgIGdldFJlcXVlc3QucmVzdWx0LAogICAgICAgICAgICAgIHRydWUsCiAgICAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICB0cnVlLAogICAgICAgICAgICApOwogICAgICAgICAgICBvaysrOwogICAgICAgICAgICBpZiAob2sgKyBmYWlsID09IHRvdGFsKSBmaW5pc2goKTsKICAgICAgICAgIH07CiAgICAgICAgICBnZXRSZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7CiAgICAgICAgICAgIGZhaWwrKzsKICAgICAgICAgICAgaWYgKG9rICsgZmFpbCA9PSB0b3RhbCkgZmluaXNoKCk7CiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBvbmVycm9yOwogICAgICB9OwogICAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gb25lcnJvcjsKICAgIH0sCiAgfTsKICB2YXIgU1lTQ0FMTFMgPSB7CiAgICBERUZBVUxUX1BPTExNQVNLOiA1LAogICAgY2FsY3VsYXRlQXQoZGlyZmQsIHBhdGgsIGFsbG93RW1wdHkpIHsKICAgICAgaWYgKFBBVEguaXNBYnMocGF0aCkpIHsKICAgICAgICByZXR1cm4gcGF0aDsKICAgICAgfQogICAgICBsZXQgZGlyOwogICAgICBpZiAoZGlyZmQgPT09IC0xMDApIHsKICAgICAgICBkaXIgPSBGUy5jd2QoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgZGlyc3RyZWFtID0gU1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGRpcmZkKTsKICAgICAgICBkaXIgPSBkaXJzdHJlYW0ucGF0aDsKICAgICAgfQogICAgICBpZiAocGF0aC5sZW5ndGggPT0gMCkgewogICAgICAgIGlmICghYWxsb3dFbXB0eSkgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGlyOwogICAgICB9CiAgICAgIHJldHVybiBQQVRILmpvaW4yKGRpciwgcGF0aCk7CiAgICB9LAogICAgZG9TdGF0KGZ1bmMsIHBhdGgsIGJ1ZikgewogICAgICB0cnkgewogICAgICAgIHZhciBzdGF0ID0gZnVuYyhwYXRoKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIGlmIChlICYmIGUubm9kZSAmJiBQQVRILm5vcm1hbGl6ZShwYXRoKSAhPT0gUEFUSC5ub3JtYWxpemUoRlMuZ2V0UGF0aChlLm5vZGUpKSkgewogICAgICAgICAgcmV0dXJuIC01NDsKICAgICAgICB9CiAgICAgICAgdGhyb3cgZTsKICAgICAgfQogICAgICBIRUFQMzJbYnVmID4+IDJdID0gc3RhdC5kZXY7CiAgICAgIEhFQVAzMlsoYnVmICsgOCkgPj4gMl0gPSBzdGF0LmlubzsKICAgICAgSEVBUDMyWyhidWYgKyAxMikgPj4gMl0gPSBzdGF0Lm1vZGU7CiAgICAgIEhFQVBVMzJbKGJ1ZiArIDE2KSA+PiAyXSA9IHN0YXQubmxpbms7CiAgICAgIEhFQVAzMlsoYnVmICsgMjApID4+IDJdID0gc3RhdC51aWQ7CiAgICAgIEhFQVAzMlsoYnVmICsgMjQpID4+IDJdID0gc3RhdC5naWQ7CiAgICAgIEhFQVAzMlsoYnVmICsgMjgpID4+IDJdID0gc3RhdC5yZGV2OwogICAgICAodGVtcEk2NCA9IFsKICAgICAgICBzdGF0LnNpemUgPj4+IDAsCiAgICAgICAgKCh0ZW1wRG91YmxlID0gc3RhdC5zaXplKSwKICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMQogICAgICAgICAgPyB0ZW1wRG91YmxlID4gMAogICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAKICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NikgPj4+IDAKICAgICAgICAgIDogMCksCiAgICAgIF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDQwKSA+PiAyXSA9IHRlbXBJNjRbMF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDQ0KSA+PiAyXSA9IHRlbXBJNjRbMV0pOwogICAgICBIRUFQMzJbKGJ1ZiArIDQ4KSA+PiAyXSA9IDQwOTY7CiAgICAgIEhFQVAzMlsoYnVmICsgNTIpID4+IDJdID0gc3RhdC5ibG9ja3M7CiAgICAgICh0ZW1wSTY0ID0gWwogICAgICAgIE1hdGguZmxvb3Ioc3RhdC5hdGltZS5nZXRUaW1lKCkgLyAxZTMpID4+PiAwLAogICAgICAgICgodGVtcERvdWJsZSA9IE1hdGguZmxvb3Ioc3RhdC5hdGltZS5nZXRUaW1lKCkgLyAxZTMpKSwKICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMQogICAgICAgICAgPyB0ZW1wRG91YmxlID4gMAogICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAKICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NikgPj4+IDAKICAgICAgICAgIDogMCksCiAgICAgIF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDU2KSA+PiAyXSA9IHRlbXBJNjRbMF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDYwKSA+PiAyXSA9IHRlbXBJNjRbMV0pOwogICAgICBIRUFQVTMyWyhidWYgKyA2NCkgPj4gMl0gPSAwOwogICAgICAodGVtcEk2NCA9IFsKICAgICAgICBNYXRoLmZsb29yKHN0YXQubXRpbWUuZ2V0VGltZSgpIC8gMWUzKSA+Pj4gMCwKICAgICAgICAoKHRlbXBEb3VibGUgPSBNYXRoLmZsb29yKHN0YXQubXRpbWUuZ2V0VGltZSgpIC8gMWUzKSksCiAgICAgICAgK01hdGguYWJzKHRlbXBEb3VibGUpID49IDEKICAgICAgICAgID8gdGVtcERvdWJsZSA+IDAKICAgICAgICAgICAgPyAoTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZSAvIDQyOTQ5NjcyOTYpLCA0Mjk0OTY3Mjk1KSB8IDApID4+PiAwCiAgICAgICAgICAgIDogfn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlIC0gKyh+fnRlbXBEb3VibGUgPj4+IDApKSAvIDQyOTQ5NjcyOTYpID4+PiAwCiAgICAgICAgICA6IDApLAogICAgICBdKSwKICAgICAgICAoSEVBUDMyWyhidWYgKyA3MikgPj4gMl0gPSB0ZW1wSTY0WzBdKSwKICAgICAgICAoSEVBUDMyWyhidWYgKyA3NikgPj4gMl0gPSB0ZW1wSTY0WzFdKTsKICAgICAgSEVBUFUzMlsoYnVmICsgODApID4+IDJdID0gMDsKICAgICAgKHRlbXBJNjQgPSBbCiAgICAgICAgTWF0aC5mbG9vcihzdGF0LmN0aW1lLmdldFRpbWUoKSAvIDFlMykgPj4+IDAsCiAgICAgICAgKCh0ZW1wRG91YmxlID0gTWF0aC5mbG9vcihzdGF0LmN0aW1lLmdldFRpbWUoKSAvIDFlMykpLAogICAgICAgICtNYXRoLmFicyh0ZW1wRG91YmxlKSA+PSAxCiAgICAgICAgICA/IHRlbXBEb3VibGUgPiAwCiAgICAgICAgICAgID8gKE1hdGgubWluKCtNYXRoLmZsb29yKHRlbXBEb3VibGUgLyA0Mjk0OTY3Mjk2KSwgNDI5NDk2NzI5NSkgfCAwKSA+Pj4gMAogICAgICAgICAgICA6IH5+K01hdGguY2VpbCgodGVtcERvdWJsZSAtICsofn50ZW1wRG91YmxlID4+PiAwKSkgLyA0Mjk0OTY3Mjk2KSA+Pj4gMAogICAgICAgICAgOiAwKSwKICAgICAgXSksCiAgICAgICAgKEhFQVAzMlsoYnVmICsgODgpID4+IDJdID0gdGVtcEk2NFswXSksCiAgICAgICAgKEhFQVAzMlsoYnVmICsgOTIpID4+IDJdID0gdGVtcEk2NFsxXSk7CiAgICAgIEhFQVBVMzJbKGJ1ZiArIDk2KSA+PiAyXSA9IDA7CiAgICAgICh0ZW1wSTY0ID0gWwogICAgICAgIHN0YXQuaW5vID4+PiAwLAogICAgICAgICgodGVtcERvdWJsZSA9IHN0YXQuaW5vKSwKICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMQogICAgICAgICAgPyB0ZW1wRG91YmxlID4gMAogICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAKICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NikgPj4+IDAKICAgICAgICAgIDogMCksCiAgICAgIF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDEwNCkgPj4gMl0gPSB0ZW1wSTY0WzBdKSwKICAgICAgICAoSEVBUDMyWyhidWYgKyAxMDgpID4+IDJdID0gdGVtcEk2NFsxXSk7CiAgICAgIHJldHVybiAwOwogICAgfSwKICAgIGRvTXN5bmMoYWRkciwgc3RyZWFtLCBsZW4sIGZsYWdzLCBvZmZzZXQpIHsKICAgICAgaWYgKCFGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myk7CiAgICAgIH0KICAgICAgaWYgKGZsYWdzICYgMikgewogICAgICAgIHJldHVybiAwOwogICAgICB9CiAgICAgIGxldCBidWZmZXIgPSBIRUFQVTguc2xpY2UoYWRkciwgYWRkciArIGxlbik7CiAgICAgIEZTLm1zeW5jKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbiwgZmxhZ3MpOwogICAgfSwKICAgIHZhcmFyZ3M6IHVuZGVmaW5lZCwKICAgIGdldCgpIHsKICAgICAgU1lTQ0FMTFMudmFyYXJncyArPSA0OwogICAgICBsZXQgcmV0ID0gSEVBUDMyWyhTWVNDQUxMUy52YXJhcmdzIC0gNCkgPj4gMl07CiAgICAgIHJldHVybiByZXQ7CiAgICB9LAogICAgZ2V0U3RyKHB0cikgewogICAgICBsZXQgcmV0ID0gVVRGOFRvU3RyaW5nKHB0cik7CiAgICAgIHJldHVybiByZXQ7CiAgICB9LAogICAgZ2V0U3RyZWFtRnJvbUZEKGZkKSB7CiAgICAgIGxldCBzdHJlYW0gPSBGUy5nZXRTdHJlYW0oZmQpOwogICAgICBpZiAoIXN0cmVhbSkgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7CiAgICAgIHJldHVybiBzdHJlYW07CiAgICB9LAogIH07CiAgZnVuY3Rpb24gX2Vudmlyb25fZ2V0KF9fZW52aXJvbiwgZW52aXJvbl9idWYpIHsKICAgIGxldCBidWZTaXplID0gMDsKICAgIGdldEVudlN0cmluZ3MoKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHJpbmcsIGkpIHsKICAgICAgbGV0IHB0ciA9IGVudmlyb25fYnVmICsgYnVmU2l6ZTsKICAgICAgSEVBUFUzMlsoX19lbnZpcm9uICsgaSAqIDQpID4+IDJdID0gcHRyOwogICAgICB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyaW5nLCBwdHIpOwogICAgICBidWZTaXplICs9IHN0cmluZy5sZW5ndGggKyAxOwogICAgfSk7CiAgICByZXR1cm4gMDsKICB9CiAgZnVuY3Rpb24gX2Vudmlyb25fc2l6ZXNfZ2V0KHBlbnZpcm9uX2NvdW50LCBwZW52aXJvbl9idWZfc2l6ZSkgewogICAgbGV0IHN0cmluZ3MgPSBnZXRFbnZTdHJpbmdzKCk7CiAgICBIRUFQVTMyW3BlbnZpcm9uX2NvdW50ID4+IDJdID0gc3RyaW5ncy5sZW5ndGg7CiAgICBsZXQgYnVmU2l6ZSA9IDA7CiAgICBzdHJpbmdzLmZvckVhY2goZnVuY3Rpb24gKHN0cmluZykgewogICAgICBidWZTaXplICs9IHN0cmluZy5sZW5ndGggKyAxOwogICAgfSk7CiAgICBIRUFQVTMyW3BlbnZpcm9uX2J1Zl9zaXplID4+IDJdID0gYnVmU2l6ZTsKICAgIHJldHVybiAwOwogIH0KICBmdW5jdGlvbiBfcHJvY19leGl0KGNvZGUpIHsKICAgIEVYSVRTVEFUVVMgPSBjb2RlOwogICAgaWYgKCFrZWVwUnVudGltZUFsaXZlKCkpIHsKICAgICAgaWYgKE1vZHVsZVsib25FeGl0Il0pIE1vZHVsZVsib25FeGl0Il0oY29kZSk7CiAgICAgIEFCT1JUID0gdHJ1ZTsKICAgIH0KICAgIHF1aXRfKGNvZGUsIG5ldyBFeGl0U3RhdHVzKGNvZGUpKTsKICB9CiAgZnVuY3Rpb24gZXhpdEpTKHN0YXR1cywgaW1wbGljaXQpIHsKICAgIEVYSVRTVEFUVVMgPSBzdGF0dXM7CiAgICBfcHJvY19leGl0KHN0YXR1cyk7CiAgfQogIGxldCBfZXhpdCA9IGV4aXRKUzsKICBmdW5jdGlvbiBfZmRfY2xvc2UoZmQpIHsKICAgIHRyeSB7CiAgICAgIGxldCBzdHJlYW0gPSBTWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpOwogICAgICBGUy5jbG9zZShzdHJlYW0pOwogICAgICByZXR1cm4gMDsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgaWYgKHR5cGVvZiBGUyA9PT0gInVuZGVmaW5lZCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpIHRocm93IGU7CiAgICAgIHJldHVybiBlLmVycm5vOwogICAgfQogIH0KICBmdW5jdGlvbiBkb1JlYWR2KHN0cmVhbSwgaW92LCBpb3ZjbnQsIG9mZnNldCkgewogICAgbGV0IHJldCA9IDA7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlvdmNudDsgaSsrKSB7CiAgICAgIGxldCBwdHIgPSBIRUFQVTMyW2lvdiA+PiAyXTsKICAgICAgbGV0IGxlbiA9IEhFQVBVMzJbKGlvdiArIDQpID4+IDJdOwogICAgICBpb3YgKz0gODsKICAgICAgbGV0IGN1cnIgPSBGUy5yZWFkKHN0cmVhbSwgSEVBUDgsIHB0ciwgbGVuLCBvZmZzZXQpOwogICAgICBpZiAoY3VyciA8IDApIHJldHVybiAtMTsKICAgICAgcmV0ICs9IGN1cnI7CiAgICAgIGlmIChjdXJyIDwgbGVuKSBicmVhazsKICAgIH0KICAgIHJldHVybiByZXQ7CiAgfQogIGZ1bmN0aW9uIF9mZF9yZWFkKGZkLCBpb3YsIGlvdmNudCwgcG51bSkgewogICAgdHJ5IHsKICAgICAgbGV0IHN0cmVhbSA9IFNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7CiAgICAgIGxldCBudW0gPSBkb1JlYWR2KHN0cmVhbSwgaW92LCBpb3ZjbnQpOwogICAgICBIRUFQVTMyW3BudW0gPj4gMl0gPSBudW07CiAgICAgIHJldHVybiAwOwogICAgfSBjYXRjaCAoZSkgewogICAgICBpZiAodHlwZW9mIEZTID09PSAidW5kZWZpbmVkIiB8fCAhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSkgdGhyb3cgZTsKICAgICAgcmV0dXJuIGUuZXJybm87CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbnZlcnRJMzJQYWlyVG9JNTNDaGVja2VkKGxvLCBoaSkgewogICAgcmV0dXJuIChoaSArIDIwOTcxNTIpID4+PiAwIDwgNDE5NDMwNSAtICEhbG8gPyAobG8gPj4+IDApICsgaGkgKiA0Mjk0OTY3Mjk2IDogTmFOOwogIH0KICBmdW5jdGlvbiBfZmRfc2VlayhmZCwgb2Zmc2V0X2xvdywgb2Zmc2V0X2hpZ2gsIHdoZW5jZSwgbmV3T2Zmc2V0KSB7CiAgICB0cnkgewogICAgICBsZXQgb2Zmc2V0ID0gY29udmVydEkzMlBhaXJUb0k1M0NoZWNrZWQob2Zmc2V0X2xvdywgb2Zmc2V0X2hpZ2gpOwogICAgICBpZiAoaXNOYU4ob2Zmc2V0KSkgcmV0dXJuIDYxOwogICAgICBsZXQgc3RyZWFtID0gU1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTsKICAgICAgRlMubGxzZWVrKHN0cmVhbSwgb2Zmc2V0LCB3aGVuY2UpOwogICAgICAodGVtcEk2NCA9IFsKICAgICAgICBzdHJlYW0ucG9zaXRpb24gPj4+IDAsCiAgICAgICAgKCh0ZW1wRG91YmxlID0gc3RyZWFtLnBvc2l0aW9uKSwKICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMQogICAgICAgICAgPyB0ZW1wRG91YmxlID4gMAogICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAKICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NikgPj4+IDAKICAgICAgICAgIDogMCksCiAgICAgIF0pLAogICAgICAgIChIRUFQMzJbbmV3T2Zmc2V0ID4+IDJdID0gdGVtcEk2NFswXSksCiAgICAgICAgKEhFQVAzMlsobmV3T2Zmc2V0ICsgNCkgPj4gMl0gPSB0ZW1wSTY0WzFdKTsKICAgICAgaWYgKHN0cmVhbS5nZXRkZW50cyAmJiBvZmZzZXQgPT09IDAgJiYgd2hlbmNlID09PSAwKSBzdHJlYW0uZ2V0ZGVudHMgPSBudWxsOwogICAgICByZXR1cm4gMDsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgaWYgKHR5cGVvZiBGUyA9PT0gInVuZGVmaW5lZCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpIHRocm93IGU7CiAgICAgIHJldHVybiBlLmVycm5vOwogICAgfQogIH0KICBmdW5jdGlvbiBkb1dyaXRldihzdHJlYW0sIGlvdiwgaW92Y250LCBvZmZzZXQpIHsKICAgIGxldCByZXQgPSAwOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpb3ZjbnQ7IGkrKykgewogICAgICBsZXQgcHRyID0gSEVBUFUzMltpb3YgPj4gMl07CiAgICAgIGxldCBsZW4gPSBIRUFQVTMyWyhpb3YgKyA0KSA+PiAyXTsKICAgICAgaW92ICs9IDg7CiAgICAgIGxldCBjdXJyID0gRlMud3JpdGUoc3RyZWFtLCBIRUFQOCwgcHRyLCBsZW4sIG9mZnNldCk7CiAgICAgIGlmIChjdXJyIDwgMCkgcmV0dXJuIC0xOwogICAgICByZXQgKz0gY3VycjsKICAgIH0KICAgIHJldHVybiByZXQ7CiAgfQogIGZ1bmN0aW9uIF9mZF93cml0ZShmZCwgaW92LCBpb3ZjbnQsIHBudW0pIHsKICAgIHRyeSB7CiAgICAgIGxldCBzdHJlYW0gPSBTWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpOwogICAgICBsZXQgbnVtID0gZG9Xcml0ZXYoc3RyZWFtLCBpb3YsIGlvdmNudCk7CiAgICAgIEhFQVBVMzJbcG51bSA+PiAyXSA9IG51bTsKICAgICAgcmV0dXJuIDA7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGlmICh0eXBlb2YgRlMgPT09ICJ1bmRlZmluZWQiIHx8ICEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKSB0aHJvdyBlOwogICAgICByZXR1cm4gZS5lcnJubzsKICAgIH0KICB9CiAgZnVuY3Rpb24gX3JldHVybl9zdHJpbmcoZGF0YSwgbGVuZ3RoKSB7CiAgICBNb2R1bGUuX3JldHVybl9zdHJpbmdfY2FsbGJhY2soZGF0YSwgbGVuZ3RoKTsKICB9CiAgZnVuY3Rpb24gX19pc0xlYXBZZWFyKHllYXIpIHsKICAgIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiAoeWVhciAlIDEwMCAhPT0gMCB8fCB5ZWFyICUgNDAwID09PSAwKTsKICB9CiAgZnVuY3Rpb24gX19hcnJheVN1bShhcnJheSwgaW5kZXgpIHsKICAgIGxldCBzdW0gPSAwOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gaW5kZXg7IHN1bSArPSBhcnJheVtpKytdKSB7fQogICAgcmV0dXJuIHN1bTsKICB9CiAgbGV0IF9fTU9OVEhfREFZU19MRUFQID0gWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdOwogIGxldCBfX01PTlRIX0RBWVNfUkVHVUxBUiA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTsKICBmdW5jdGlvbiBfX2FkZERheXMoZGF0ZSwgZGF5cykgewogICAgbGV0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7CiAgICB3aGlsZSAoZGF5cyA+IDApIHsKICAgICAgbGV0IGxlYXAgPSBfX2lzTGVhcFllYXIobmV3RGF0ZS5nZXRGdWxsWWVhcigpKTsKICAgICAgbGV0IGN1cnJlbnRNb250aCA9IG5ld0RhdGUuZ2V0TW9udGgoKTsKICAgICAgbGV0IGRheXNJbkN1cnJlbnRNb250aCA9IChsZWFwID8gX19NT05USF9EQVlTX0xFQVAgOiBfX01PTlRIX0RBWVNfUkVHVUxBUilbY3VycmVudE1vbnRoXTsKICAgICAgaWYgKGRheXMgPiBkYXlzSW5DdXJyZW50TW9udGggLSBuZXdEYXRlLmdldERhdGUoKSkgewogICAgICAgIGRheXMgLT0gZGF5c0luQ3VycmVudE1vbnRoIC0gbmV3RGF0ZS5nZXREYXRlKCkgKyAxOwogICAgICAgIG5ld0RhdGUuc2V0RGF0ZSgxKTsKICAgICAgICBpZiAoY3VycmVudE1vbnRoIDwgMTEpIHsKICAgICAgICAgIG5ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoICsgMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld0RhdGUuc2V0TW9udGgoMCk7CiAgICAgICAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSArIDEpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkgKyBkYXlzKTsKICAgICAgICByZXR1cm4gbmV3RGF0ZTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIG5ld0RhdGU7CiAgfQogIGZ1bmN0aW9uIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheSwgYnVmZmVyKSB7CiAgICBIRUFQOC5zZXQoYXJyYXksIGJ1ZmZlcik7CiAgfQogIGZ1bmN0aW9uIF9zdHJmdGltZShzLCBtYXhzaXplLCBmb3JtYXQsIHRtKSB7CiAgICBsZXQgdG1fem9uZSA9IEhFQVAzMlsodG0gKyA0MCkgPj4gMl07CiAgICBsZXQgZGF0ZSA9IHsKICAgICAgdG1fc2VjOiBIRUFQMzJbdG0gPj4gMl0sCiAgICAgIHRtX21pbjogSEVBUDMyWyh0bSArIDQpID4+IDJdLAogICAgICB0bV9ob3VyOiBIRUFQMzJbKHRtICsgOCkgPj4gMl0sCiAgICAgIHRtX21kYXk6IEhFQVAzMlsodG0gKyAxMikgPj4gMl0sCiAgICAgIHRtX21vbjogSEVBUDMyWyh0bSArIDE2KSA+PiAyXSwKICAgICAgdG1feWVhcjogSEVBUDMyWyh0bSArIDIwKSA+PiAyXSwKICAgICAgdG1fd2RheTogSEVBUDMyWyh0bSArIDI0KSA+PiAyXSwKICAgICAgdG1feWRheTogSEVBUDMyWyh0bSArIDI4KSA+PiAyXSwKICAgICAgdG1faXNkc3Q6IEhFQVAzMlsodG0gKyAzMikgPj4gMl0sCiAgICAgIHRtX2dtdG9mZjogSEVBUDMyWyh0bSArIDM2KSA+PiAyXSwKICAgICAgdG1fem9uZTogdG1fem9uZSA/IFVURjhUb1N0cmluZyh0bV96b25lKSA6ICIiLAogICAgfTsKICAgIGxldCBwYXR0ZXJuID0gVVRGOFRvU3RyaW5nKGZvcm1hdCk7CiAgICBsZXQgRVhQQU5TSU9OX1JVTEVTXzEgPSB7CiAgICAgICIlYyI6ICIlYSAlYiAlZCAlSDolTTolUyAlWSIsCiAgICAgICIlRCI6ICIlbS8lZC8leSIsCiAgICAgICIlRiI6ICIlWS0lbS0lZCIsCiAgICAgICIlaCI6ICIlYiIsCiAgICAgICIlciI6ICIlSTolTTolUyAlcCIsCiAgICAgICIlUiI6ICIlSDolTSIsCiAgICAgICIlVCI6ICIlSDolTTolUyIsCiAgICAgICIleCI6ICIlbS8lZC8leSIsCiAgICAgICIlWCI6ICIlSDolTTolUyIsCiAgICAgICIlRWMiOiAiJWMiLAogICAgICAiJUVDIjogIiVDIiwKICAgICAgIiVFeCI6ICIlbS8lZC8leSIsCiAgICAgICIlRVgiOiAiJUg6JU06JVMiLAogICAgICAiJUV5IjogIiV5IiwKICAgICAgIiVFWSI6ICIlWSIsCiAgICAgICIlT2QiOiAiJWQiLAogICAgICAiJU9lIjogIiVlIiwKICAgICAgIiVPSCI6ICIlSCIsCiAgICAgICIlT0kiOiAiJUkiLAogICAgICAiJU9tIjogIiVtIiwKICAgICAgIiVPTSI6ICIlTSIsCiAgICAgICIlT1MiOiAiJVMiLAogICAgICAiJU91IjogIiV1IiwKICAgICAgIiVPVSI6ICIlVSIsCiAgICAgICIlT1YiOiAiJVYiLAogICAgICAiJU93IjogIiV3IiwKICAgICAgIiVPVyI6ICIlVyIsCiAgICAgICIlT3kiOiAiJXkiLAogICAgfTsKICAgIGZvciAodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpIHsKICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZShuZXcgUmVnRXhwKHJ1bGUsICJnIiksIEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKTsKICAgIH0KICAgIGxldCBXRUVLREFZUyA9IFsiU3VuZGF5IiwgIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsICJUaHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiXTsKICAgIGxldCBNT05USFMgPSBbCiAgICAgICJKYW51YXJ5IiwKICAgICAgIkZlYnJ1YXJ5IiwKICAgICAgIk1hcmNoIiwKICAgICAgIkFwcmlsIiwKICAgICAgIk1heSIsCiAgICAgICJKdW5lIiwKICAgICAgIkp1bHkiLAogICAgICAiQXVndXN0IiwKICAgICAgIlNlcHRlbWJlciIsCiAgICAgICJPY3RvYmVyIiwKICAgICAgIk5vdmVtYmVyIiwKICAgICAgIkRlY2VtYmVyIiwKICAgIF07CiAgICBmdW5jdGlvbiBsZWFkaW5nU29tZXRoaW5nKHZhbHVlLCBkaWdpdHMsIGNoYXJhY3RlcikgewogICAgICBsZXQgc3RyID0gdHlwZW9mIHZhbHVlID09PSAibnVtYmVyIiA/IHZhbHVlLnRvU3RyaW5nKCkgOiB2YWx1ZSB8fCAiIjsKICAgICAgd2hpbGUgKHN0ci5sZW5ndGggPCBkaWdpdHMpIHsKICAgICAgICBzdHIgPSBjaGFyYWN0ZXJbMF0gKyBzdHI7CiAgICAgIH0KICAgICAgcmV0dXJuIHN0cjsKICAgIH0KICAgIGZ1bmN0aW9uIGxlYWRpbmdOdWxscyh2YWx1ZSwgZGlnaXRzKSB7CiAgICAgIHJldHVybiBsZWFkaW5nU29tZXRoaW5nKHZhbHVlLCBkaWdpdHMsICIwIik7CiAgICB9CiAgICBmdW5jdGlvbiBjb21wYXJlQnlEYXkoZGF0ZTEsIGRhdGUyKSB7CiAgICAgIGZ1bmN0aW9uIHNnbih2YWx1ZSkgewogICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyAtMSA6IHZhbHVlID4gMCA/IDEgOiAwOwogICAgICB9CiAgICAgIGxldCBjb21wYXJlOwogICAgICBpZiAoKGNvbXBhcmUgPSBzZ24oZGF0ZTEuZ2V0RnVsbFllYXIoKSAtIGRhdGUyLmdldEZ1bGxZZWFyKCkpKSA9PT0gMCkgewogICAgICAgIGlmICgoY29tcGFyZSA9IHNnbihkYXRlMS5nZXRNb250aCgpIC0gZGF0ZTIuZ2V0TW9udGgoKSkpID09PSAwKSB7CiAgICAgICAgICBjb21wYXJlID0gc2duKGRhdGUxLmdldERhdGUoKSAtIGRhdGUyLmdldERhdGUoKSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBjb21wYXJlOwogICAgfQogICAgZnVuY3Rpb24gZ2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aCkgewogICAgICBzd2l0Y2ggKGphbkZvdXJ0aC5nZXREYXkoKSkgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSAtIDEsIDExLCAyOSk7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGphbkZvdXJ0aDsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICByZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksIDAsIDMpOwogICAgICAgIGNhc2UgMzoKICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwgMCwgMik7CiAgICAgICAgY2FzZSA0OgogICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLCAwLCAxKTsKICAgICAgICBjYXNlIDU6CiAgICAgICAgICByZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCkgLSAxLCAxMSwgMzEpOwogICAgICAgIGNhc2UgNjoKICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSAtIDEsIDExLCAzMCk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkgewogICAgICBsZXQgdGhpc0RhdGUgPSBfX2FkZERheXMobmV3IERhdGUoZGF0ZS50bV95ZWFyICsgMTkwMCwgMCwgMSksIGRhdGUudG1feWRheSk7CiAgICAgIGxldCBqYW5Gb3VydGhUaGlzWWVhciA9IG5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCksIDAsIDQpOwogICAgICBsZXQgamFuRm91cnRoTmV4dFllYXIgPSBuZXcgRGF0ZSh0aGlzRGF0ZS5nZXRGdWxsWWVhcigpICsgMSwgMCwgNCk7CiAgICAgIGxldCBmaXJzdFdlZWtTdGFydFRoaXNZZWFyID0gZ2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTsKICAgICAgbGV0IGZpcnN0V2Vla1N0YXJ0TmV4dFllYXIgPSBnZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpOwogICAgICBpZiAoY29tcGFyZUJ5RGF5KGZpcnN0V2Vla1N0YXJ0VGhpc1llYXIsIHRoaXNEYXRlKSA8PSAwKSB7CiAgICAgICAgaWYgKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydE5leHRZZWFyLCB0aGlzRGF0ZSkgPD0gMCkgewogICAgICAgICAgcmV0dXJuIHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkgKyAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpc0RhdGUuZ2V0RnVsbFllYXIoKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpc0RhdGUuZ2V0RnVsbFllYXIoKSAtIDE7CiAgICB9CiAgICBsZXQgRVhQQU5TSU9OX1JVTEVTXzIgPSB7CiAgICAgICIlYSIoZGF0ZSkgewogICAgICAgIHJldHVybiBXRUVLREFZU1tkYXRlLnRtX3dkYXldLnN1YnN0cmluZygwLCAzKTsKICAgICAgfSwKICAgICAgIiVBIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIFdFRUtEQVlTW2RhdGUudG1fd2RheV07CiAgICAgIH0sCiAgICAgICIlYiIoZGF0ZSkgewogICAgICAgIHJldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLCAzKTsKICAgICAgfSwKICAgICAgIiVCIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIE1PTlRIU1tkYXRlLnRtX21vbl07CiAgICAgIH0sCiAgICAgICIlQyIoZGF0ZSkgewogICAgICAgIGxldCB5ZWFyID0gZGF0ZS50bV95ZWFyICsgMTkwMDsKICAgICAgICByZXR1cm4gbGVhZGluZ051bGxzKCh5ZWFyIC8gMTAwKSB8IDAsIDIpOwogICAgICB9LAogICAgICAiJWQiKGRhdGUpIHsKICAgICAgICByZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fbWRheSwgMik7CiAgICAgIH0sCiAgICAgICIlZSIoZGF0ZSkgewogICAgICAgIHJldHVybiBsZWFkaW5nU29tZXRoaW5nKGRhdGUudG1fbWRheSwgMiwgIiAiKTsKICAgICAgfSwKICAgICAgIiVnIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMik7CiAgICAgIH0sCiAgICAgICIlRyIoZGF0ZSkgewogICAgICAgIHJldHVybiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpOwogICAgICB9LAogICAgICAiJUgiKGRhdGUpIHsKICAgICAgICByZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1faG91ciwgMik7CiAgICAgIH0sCiAgICAgICIlSSIoZGF0ZSkgewogICAgICAgIGxldCB0d2VsdmVIb3VyID0gZGF0ZS50bV9ob3VyOwogICAgICAgIGlmICh0d2VsdmVIb3VyID09IDApIHR3ZWx2ZUhvdXIgPSAxMjsKICAgICAgICBlbHNlIGlmICh0d2VsdmVIb3VyID4gMTIpIHR3ZWx2ZUhvdXIgLT0gMTI7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyh0d2VsdmVIb3VyLCAyKTsKICAgICAgfSwKICAgICAgIiVqIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscygKICAgICAgICAgIGRhdGUudG1fbWRheSArCiAgICAgICAgICAgIF9fYXJyYXlTdW0oCiAgICAgICAgICAgICAgX19pc0xlYXBZZWFyKGRhdGUudG1feWVhciArIDE5MDApID8gX19NT05USF9EQVlTX0xFQVAgOiBfX01PTlRIX0RBWVNfUkVHVUxBUiwKICAgICAgICAgICAgICBkYXRlLnRtX21vbiAtIDEsCiAgICAgICAgICAgICksCiAgICAgICAgICAzLAogICAgICAgICk7CiAgICAgIH0sCiAgICAgICIlbSIoZGF0ZSkgewogICAgICAgIHJldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tb24gKyAxLCAyKTsKICAgICAgfSwKICAgICAgIiVNIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21pbiwgMik7CiAgICAgIH0sCiAgICAgICIlbiIoKSB7CiAgICAgICAgcmV0dXJuICJcbiI7CiAgICAgIH0sCiAgICAgICIlcCIoZGF0ZSkgewogICAgICAgIGlmIChkYXRlLnRtX2hvdXIgPj0gMCAmJiBkYXRlLnRtX2hvdXIgPCAxMikgewogICAgICAgICAgcmV0dXJuICJBTSI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAiUE0iOwogICAgICB9LAogICAgICAiJVMiKGRhdGUpIHsKICAgICAgICByZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fc2VjLCAyKTsKICAgICAgfSwKICAgICAgIiV0IigpIHsKICAgICAgICByZXR1cm4gIlx0IjsKICAgICAgfSwKICAgICAgIiV1IihkYXRlKSB7CiAgICAgICAgcmV0dXJuIGRhdGUudG1fd2RheSB8fCA3OwogICAgICB9LAogICAgICAiJVUiKGRhdGUpIHsKICAgICAgICBsZXQgZGF5cyA9IGRhdGUudG1feWRheSArIDcgLSBkYXRlLnRtX3dkYXk7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmZsb29yKGRheXMgLyA3KSwgMik7CiAgICAgIH0sCiAgICAgICIlViIoZGF0ZSkgewogICAgICAgIGxldCB2YWwgPSBNYXRoLmZsb29yKChkYXRlLnRtX3lkYXkgKyA3IC0gKChkYXRlLnRtX3dkYXkgKyA2KSAlIDcpKSAvIDcpOwogICAgICAgIGlmICgoZGF0ZS50bV93ZGF5ICsgMzcxIC0gZGF0ZS50bV95ZGF5IC0gMikgJSA3IDw9IDIpIHsKICAgICAgICAgIHZhbCsrOwogICAgICAgIH0KICAgICAgICBpZiAoIXZhbCkgewogICAgICAgICAgdmFsID0gNTI7CiAgICAgICAgICBsZXQgZGVjMzEgPSAoZGF0ZS50bV93ZGF5ICsgNyAtIGRhdGUudG1feWRheSAtIDEpICUgNzsKICAgICAgICAgIGlmIChkZWMzMSA9PSA0IHx8IChkZWMzMSA9PSA1ICYmIF9faXNMZWFwWWVhcigoZGF0ZS50bV95ZWFyICUgNDAwKSAtIDEpKSkgewogICAgICAgICAgICB2YWwrKzsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHZhbCA9PSA1MykgewogICAgICAgICAgbGV0IGphbjEgPSAoZGF0ZS50bV93ZGF5ICsgMzcxIC0gZGF0ZS50bV95ZGF5KSAlIDc7CiAgICAgICAgICBpZiAoamFuMSAhPSA0ICYmIChqYW4xICE9IDMgfHwgIV9faXNMZWFwWWVhcihkYXRlLnRtX3llYXIpKSkgdmFsID0gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyh2YWwsIDIpOwogICAgICB9LAogICAgICAiJXciKGRhdGUpIHsKICAgICAgICByZXR1cm4gZGF0ZS50bV93ZGF5OwogICAgICB9LAogICAgICAiJVciKGRhdGUpIHsKICAgICAgICBsZXQgZGF5cyA9IGRhdGUudG1feWRheSArIDcgLSAoKGRhdGUudG1fd2RheSArIDYpICUgNyk7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmZsb29yKGRheXMgLyA3KSwgMik7CiAgICAgIH0sCiAgICAgICIleSIoZGF0ZSkgewogICAgICAgIHJldHVybiAoZGF0ZS50bV95ZWFyICsgMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMik7CiAgICAgIH0sCiAgICAgICIlWSIoZGF0ZSkgewogICAgICAgIHJldHVybiBkYXRlLnRtX3llYXIgKyAxOTAwOwogICAgICB9LAogICAgICAiJXoiKGRhdGUpIHsKICAgICAgICBsZXQgb2ZmID0gZGF0ZS50bV9nbXRvZmY7CiAgICAgICAgbGV0IGFoZWFkID0gb2ZmID49IDA7CiAgICAgICAgb2ZmID0gTWF0aC5hYnMob2ZmKSAvIDYwOwogICAgICAgIG9mZiA9IChvZmYgLyA2MCkgKiAxMDAgKyAob2ZmICUgNjApOwogICAgICAgIHJldHVybiAoYWhlYWQgPyAiKyIgOiAiLSIpICsgU3RyaW5nKCIwMDAwIiArIG9mZikuc2xpY2UoLTQpOwogICAgICB9LAogICAgICAiJVoiKGRhdGUpIHsKICAgICAgICByZXR1cm4gZGF0ZS50bV96b25lOwogICAgICB9LAogICAgICAiJSUiKCkgewogICAgICAgIHJldHVybiAiJSI7CiAgICAgIH0sCiAgICB9OwogICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvJSUvZywgIlwwXDAiKTsKICAgIGZvciAodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzIpIHsKICAgICAgaWYgKHBhdHRlcm4uaW5jbHVkZXMocnVsZSkpIHsKICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwgImciKSwgRVhQQU5TSU9OX1JVTEVTXzJbcnVsZV0oZGF0ZSkpOwogICAgICB9CiAgICB9CiAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cMFwwL2csICIlIik7CiAgICBsZXQgYnl0ZXMgPSBpbnRBcnJheUZyb21TdHJpbmcocGF0dGVybiwgZmFsc2UpOwogICAgaWYgKGJ5dGVzLmxlbmd0aCA+IG1heHNpemUpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICB3cml0ZUFycmF5VG9NZW1vcnkoYnl0ZXMsIHMpOwogICAgcmV0dXJuIGJ5dGVzLmxlbmd0aCAtIDE7CiAgfQogIGZ1bmN0aW9uIF9zdHJmdGltZV9sKHMsIG1heHNpemUsIGZvcm1hdCwgdG0sIGxvYykgewogICAgcmV0dXJuIF9zdHJmdGltZShzLCBtYXhzaXplLCBmb3JtYXQsIHRtKTsKICB9CiAgbGV0IEZTTm9kZSA9IGZ1bmN0aW9uIChwYXJlbnQsIG5hbWUsIG1vZGUsIHJkZXYpIHsKICAgIGlmICghcGFyZW50KSB7CiAgICAgIHBhcmVudCA9IHRoaXM7CiAgICB9CiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKICAgIHRoaXMubW91bnQgPSBwYXJlbnQubW91bnQ7CiAgICB0aGlzLm1vdW50ZWQgPSBudWxsOwogICAgdGhpcy5pZCA9IEZTLm5leHRJbm9kZSsrOwogICAgdGhpcy5uYW1lID0gbmFtZTsKICAgIHRoaXMubW9kZSA9IG1vZGU7CiAgICB0aGlzLm5vZGVfb3BzID0ge307CiAgICB0aGlzLnN0cmVhbV9vcHMgPSB7fTsKICAgIHRoaXMucmRldiA9IHJkZXY7CiAgfTsKICBsZXQgcmVhZE1vZGUgPSAyOTIgfCA3MzsKICBsZXQgd3JpdGVNb2RlID0gMTQ2OwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZTTm9kZS5wcm90b3R5cGUsIHsKICAgIHJlYWQ6IHsKICAgICAgZ2V0KCkgewogICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgcmVhZE1vZGUpID09PSByZWFkTW9kZTsKICAgICAgfSwKICAgICAgc2V0KHZhbCkgewogICAgICAgIHZhbCA/ICh0aGlzLm1vZGUgfD0gcmVhZE1vZGUpIDogKHRoaXMubW9kZSAmPSB+cmVhZE1vZGUpOwogICAgICB9LAogICAgfSwKICAgIHdyaXRlOiB7CiAgICAgIGdldCgpIHsKICAgICAgICByZXR1cm4gKHRoaXMubW9kZSAmIHdyaXRlTW9kZSkgPT09IHdyaXRlTW9kZTsKICAgICAgfSwKICAgICAgc2V0KHZhbCkgewogICAgICAgIHZhbCA/ICh0aGlzLm1vZGUgfD0gd3JpdGVNb2RlKSA6ICh0aGlzLm1vZGUgJj0gfndyaXRlTW9kZSk7CiAgICAgIH0sCiAgICB9LAogICAgaXNGb2xkZXI6IHsKICAgICAgZ2V0KCkgewogICAgICAgIHJldHVybiBGUy5pc0Rpcih0aGlzLm1vZGUpOwogICAgICB9LAogICAgfSwKICAgIGlzRGV2aWNlOiB7CiAgICAgIGdldCgpIHsKICAgICAgICByZXR1cm4gRlMuaXNDaHJkZXYodGhpcy5tb2RlKTsKICAgICAgfSwKICAgIH0sCiAgfSk7CiAgRlMuRlNOb2RlID0gRlNOb2RlOwogIEZTLnN0YXRpY0luaXQoKTsKICB2YXIgYXNtTGlicmFyeUFyZyA9IHsKICAgIGE6IF9fX2Fzc2VydF9mYWlsLAogICAgZjogX19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiwKICAgIGU6IF9fX2N4YV90aHJvdywKICAgIGI6IF9hYm9ydCwKICAgIGk6IF9lbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwLAogICAgbDogX2Vudmlyb25fZ2V0LAogICAgbTogX2Vudmlyb25fc2l6ZXNfZ2V0LAogICAgZDogX2V4aXQsCiAgICBnOiBfZmRfY2xvc2UsCiAgICBoOiBfZmRfcmVhZCwKICAgIGs6IF9mZF9zZWVrLAogICAgajogX2ZkX3dyaXRlLAogICAgbjogX3JldHVybl9zdHJpbmcsCiAgICBjOiBfc3RyZnRpbWVfbCwKICB9OwogIGxldCBhc20gPSBjcmVhdGVXYXNtKCk7CiAgdmFyIF9fX3dhc21fY2FsbF9jdG9ycyA9IChNb2R1bGVbIl9fX3dhc21fY2FsbF9jdG9ycyJdID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIChfX193YXNtX2NhbGxfY3RvcnMgPSBNb2R1bGVbIl9fX3dhc21fY2FsbF9jdG9ycyJdID0gTW9kdWxlWyJhc20iXVsicCJdKS5hcHBseSgKICAgICAgbnVsbCwKICAgICAgYXJndW1lbnRzLAogICAgKTsKICB9KTsKICB2YXIgX3Rlc3QgPSAoTW9kdWxlWyJfdGVzdCJdID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIChfdGVzdCA9IE1vZHVsZVsiX3Rlc3QiXSA9IE1vZHVsZVsiYXNtIl1bInEiXSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICB9KTsKICB2YXIgX3NwaXJ2X3RvX3dnc2wgPSAoTW9kdWxlWyJfc3BpcnZfdG9fd2dzbCJdID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIChfc3BpcnZfdG9fd2dzbCA9IE1vZHVsZVsiX3NwaXJ2X3RvX3dnc2wiXSA9IE1vZHVsZVsiYXNtIl1bInIiXSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICB9KTsKICB2YXIgX21hbGxvYyA9IChNb2R1bGVbIl9tYWxsb2MiXSA9IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiAoX21hbGxvYyA9IE1vZHVsZVsiX21hbGxvYyJdID0gTW9kdWxlWyJhc20iXVsidCJdKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogIH0pOwogIHZhciBfZnJlZSA9IChNb2R1bGVbIl9mcmVlIl0gPSBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gKF9mcmVlID0gTW9kdWxlWyJfZnJlZSJdID0gTW9kdWxlWyJhc20iXVsidSJdKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogIH0pOwogIHZhciBfX19jeGFfaXNfcG9pbnRlcl90eXBlID0gKE1vZHVsZVsiX19fY3hhX2lzX3BvaW50ZXJfdHlwZSJdID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIChfX19jeGFfaXNfcG9pbnRlcl90eXBlID0gTW9kdWxlWyJfX19jeGFfaXNfcG9pbnRlcl90eXBlIl0gPSBNb2R1bGVbImFzbSJdWyJ2Il0pLmFwcGx5KAogICAgICBudWxsLAogICAgICBhcmd1bWVudHMsCiAgICApOwogIH0pOwogIGxldCBjYWxsZWRSdW47CiAgZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gZnVuY3Rpb24gcnVuQ2FsbGVyKCkgewogICAgaWYgKCFjYWxsZWRSdW4pIHJ1bigpOwogICAgaWYgKCFjYWxsZWRSdW4pIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IHJ1bkNhbGxlcjsKICB9OwogIGZ1bmN0aW9uIHJ1bihhcmdzKSB7CiAgICBhcmdzID0gYXJncyB8fCBhcmd1bWVudHNfOwogICAgaWYgKHJ1bkRlcGVuZGVuY2llcyA+IDApIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgcHJlUnVuKCk7CiAgICBpZiAocnVuRGVwZW5kZW5jaWVzID4gMCkgewogICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBkb1J1bigpIHsKICAgICAgaWYgKGNhbGxlZFJ1bikgcmV0dXJuOwogICAgICBjYWxsZWRSdW4gPSB0cnVlOwogICAgICBNb2R1bGVbImNhbGxlZFJ1biJdID0gdHJ1ZTsKICAgICAgaWYgKEFCT1JUKSByZXR1cm47CiAgICAgIGluaXRSdW50aW1lKCk7CiAgICAgIGlmIChNb2R1bGVbIm9uUnVudGltZUluaXRpYWxpemVkIl0pIE1vZHVsZVsib25SdW50aW1lSW5pdGlhbGl6ZWQiXSgpOwogICAgICBwb3N0UnVuKCk7CiAgICB9CiAgICBpZiAoTW9kdWxlWyJzZXRTdGF0dXMiXSkgewogICAgICBNb2R1bGVbInNldFN0YXR1cyJdKCJSdW5uaW5nLi4uIik7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgTW9kdWxlWyJzZXRTdGF0dXMiXSgiIik7CiAgICAgICAgfSwgMSk7CiAgICAgICAgZG9SdW4oKTsKICAgICAgfSwgMSk7CiAgICB9IGVsc2UgewogICAgICBkb1J1bigpOwogICAgfQogIH0KICBpZiAoTW9kdWxlWyJwcmVJbml0Il0pIHsKICAgIGlmICh0eXBlb2YgTW9kdWxlWyJwcmVJbml0Il0gPT09ICJmdW5jdGlvbiIpIE1vZHVsZVsicHJlSW5pdCJdID0gW01vZHVsZVsicHJlSW5pdCJdXTsKICAgIHdoaWxlIChNb2R1bGVbInByZUluaXQiXS5sZW5ndGggPiAwKSB7CiAgICAgIE1vZHVsZVsicHJlSW5pdCJdLnBvcCgpKCk7CiAgICB9CiAgfQogIHJ1bigpOwogIHJldHVybiBNb2R1bGU7Cn07CihmdW5jdGlvbiB0cnlUb0V4cG9ydChyb290LCBmYWN0b3J5KSB7CiAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAib2JqZWN0IiAmJiB0eXBlb2YgbW9kdWxlID09PSAib2JqZWN0IikgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7CiAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kKSBkZWZpbmUoInR3Z3NsIiwgW10sIGZhY3RvcnkpOwogIGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAib2JqZWN0IikgZXhwb3J0c1sidHdnc2wiXSA9IGZhY3RvcnkoKTsKICBlbHNlIHJvb3RbInR3Z3NsIl0gPSBmYWN0b3J5KCk7Cn0pKHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHRoaXMsICgpID0+IHsKICBjb25zdCBpbml0aWFsaXplID0gKHdhc21QYXRoKSA9PiB7CiAgICB3YXNtUGF0aCA9IHdhc21QYXRoIHx8ICJ0d2dzbC53YXNtIjsKICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICBNb2R1bGUoewogICAgICAgIGxvY2F0ZUZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gd2FzbVBhdGg7CiAgICAgICAgfSwKICAgICAgICBvblJ1bnRpbWVJbml0aWFsaXplZCgpIHsKICAgICAgICAgIGxldCB0d2dzbCA9IHRoaXM7CiAgICAgICAgICBsZXQgd2dzbCA9ICIiOwogICAgICAgICAgbGV0IHRleHREZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7CiAgICAgICAgICBsZXQgY29udmVydFNwaXJWMldHU0wgPSAoY29kZSkgPT4gewogICAgICAgICAgICBpZiAoIXR3Z3NsLl9yZXR1cm5fc3RyaW5nX2NhbGxiYWNrKSB7CiAgICAgICAgICAgICAgdHdnc2wuX3JldHVybl9zdHJpbmdfY2FsbGJhY2sgPSAoZGF0YSwgbGVuZ3RoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OENsYW1wZWRBcnJheSh0d2dzbC5IRUFQVTguc3ViYXJyYXkoZGF0YSwgZGF0YSArIGxlbmd0aCkpOwogICAgICAgICAgICAgICAgd2dzbCA9IHRleHREZWNvZGVyLmRlY29kZShieXRlcyk7CiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgYWRkciA9IHR3Z3NsLl9tYWxsb2MoY29kZS5ieXRlTGVuZ3RoKTsKICAgICAgICAgICAgdHdnc2wuSEVBUFUzMi5zZXQoY29kZSwgYWRkciAvIDQpOwogICAgICAgICAgICB0d2dzbC5fc3BpcnZfdG9fd2dzbChhZGRyLCBjb2RlLmJ5dGVMZW5ndGgpOwogICAgICAgICAgICB0d2dzbC5fZnJlZShhZGRyKTsKICAgICAgICAgICAgcmV0dXJuIHdnc2w7CiAgICAgICAgICB9OwogICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgIGNvbnZlcnRTcGlyVjJXR1NMLAogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgfSk7CiAgICB9KTsKICB9OwogIGxldCBpbnN0YW5jZTsKICByZXR1cm4gKHdhc21QYXRoKSA9PiB7CiAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgIGluc3RhbmNlID0gaW5pdGlhbGl6ZSh3YXNtUGF0aCk7CiAgICB9CiAgICByZXR1cm4gaW5zdGFuY2U7CiAgfTsKfSk7Cg=="; +var StandalonePlayCanvasAdapterControlsType = /* @__PURE__ */ ((StandalonePlayCanvasAdapterControlsType2) => { + StandalonePlayCanvasAdapterControlsType2[StandalonePlayCanvasAdapterControlsType2["None"] = 0] = "None"; + StandalonePlayCanvasAdapterControlsType2[StandalonePlayCanvasAdapterControlsType2["DragFly"] = 1] = "DragFly"; + StandalonePlayCanvasAdapterControlsType2[StandalonePlayCanvasAdapterControlsType2["Orbit"] = 2] = "Orbit"; + return StandalonePlayCanvasAdapterControlsType2; +})(StandalonePlayCanvasAdapterControlsType || {}); +var StandalonePlayCanvasAdapter = class _StandalonePlayCanvasAdapter { + constructor(element, options) { + this.element = element; + this.options = options; + this.controls = null; + this.canvas = null; + } + getPlayCanvasApp() { + return this.playcanvasApp; + } + getCamera() { + return this.camera; + } + getGraphicsAdapterFactory() { + return PlayCanvasGraphicsInterface; + } + static async create(element, options) { + const adapter = new _StandalonePlayCanvasAdapter(element, options); + await adapter.init(); + return adapter; + } + interactionShouldShowDistance(interaction) { + const cameraComponent = this.camera.camera; + if (!cameraComponent) { + console.error("Camera component not found"); + return null; + } + return PlayCanvasInteractionAdapter.interactionShouldShowDistance( + interaction, + this.camera, + cameraComponent, + this.playcanvasApp + ); + } + async init() { + WasmModule.setConfig("Ammo", { + glueUrl: "data:text/javascript;base64," + ammo_wasm_default, + wasmUrl: "data:application/octet-stream;base64," + ammo_wasm_default2 + }); + await new Promise((resolve) => { + WasmModule.getInstance("Ammo", () => resolve()); + }); + WasmModule.setConfig("DracoDecoderModule", { + glueUrl: "data:text/javascript;base64," + draco_wasm_default, + wasmUrl: "data:application/wasm;base64," + draco_wasm_default2 + }); + this.canvas = document.createElement("canvas"); + this.canvas.style.pointerEvents = "none"; + this.element.appendChild(this.canvas); + this.playcanvasApp = new AppBase(this.canvas); + const gfxOptions = { + deviceTypes: ["webgpu", "webgl2"], + glslangUrl: "data:text/javascript;base64," + glslang_default, + twgslUrl: "data:text/javascript;base64," + twgsl_default + }; + const soundManager = new SoundManager(); + const device = await createGraphicsDevice(this.canvas, gfxOptions); + device.maxPixelRatio = window.devicePixelRatio; + const createOptions = new AppOptions(); + createOptions.soundManager = soundManager; + createOptions.graphicsDevice = device; + createOptions.componentSystems = [ + RenderComponentSystem, + CollisionComponentSystem, + RigidBodyComponentSystem, + CameraComponentSystem, + LightComponentSystem, + ModelComponentSystem, + AnimComponentSystem, + SoundComponentSystem, + AudioListenerComponentSystem + ]; + createOptions.resourceHandlers = [ + AudioHandler, + TextureHandler, + ContainerHandler, + ModelHandler, + AnimationHandler + ]; + this.playcanvasApp.init(createOptions); + this.playcanvasApp.scene.physicalUnits = true; + this.playcanvasApp.setCanvasFillMode(FILLMODE_NONE); + this.playcanvasApp.setCanvasResolution(RESOLUTION_FIXED); + device.resizeCanvas(128, 128); + this.camera = new Entity("camera", this.playcanvasApp); + this.camera.addComponent("audiolistener"); + this.camera.addComponent("camera", { + fov: 75, + clearColor: new Color(1, 1, 1, 1) + }); + this.camera.setPosition(0, 5, 10); + this.playcanvasApp.root.addChild(this.camera); + this.setControlsType(this.options.controlsType); + this.clickTrigger = PlayCanvasClickTrigger.init(this.playcanvasApp, this.element, this.camera); + this.playcanvasApp.on("update", (delta) => { + if (this.controls) { + this.controls.update(delta); + } + }); + this.playcanvasApp.start(); + } + setControlsType(type2) { + if (this.controls) { + this.controls.dispose(); + this.controls = null; + } + switch (type2) { + case 0: + break; + case 2: + this.controls = new PlayCanvasOrbitCameraControls(this.camera, this.element); + break; + case 1: + default: + this.controls = new PlayCanvasDragFlyCameraControls(this.camera, this.element); + break; + } + if (this.controls) { + this.controls.enable(); + } + } + setCameraFOV(fov) { + const cameraComponent = this.camera.camera; + if (!cameraComponent) { + console.error("Camera component not found"); + return null; + } + cameraComponent.fov = fov; + } + start() { + } + getUserPositionAndRotation() { + const position2 = this.camera.getPosition(); + const rotation2 = this.camera.getEulerAngles(); + return { + position: { + x: position2.x, + y: position2.y, + z: position2.z + }, + rotation: { + x: rotation2.x, + y: rotation2.y, + z: rotation2.z + } + }; + } + resize(width, height) { + this.playcanvasApp.resizeCanvas(width, height); + this.playcanvasApp.graphicsDevice.resizeCanvas(width, height); + } + dispose() { + this.playcanvasApp.destroy(); + if (this.canvas) { + this.canvas.remove(); + this.canvas = null; + } + if (this.controls) { + this.controls.dispose(); + } + this.clickTrigger.dispose(); + } + getRootContainer() { + return this.playcanvasApp.root; + } + getBoundingBoxForElement(element) { + if (!(element instanceof TransformableElement)) { + return null; + } + const bounds = element.getContentBounds(); + if (!bounds) { + return null; + } + const camera = this.camera; + const cameraComponent = camera.camera; + if (!cameraComponent) { + throw new Error("Camera component not found"); + } + const renderer = this.playcanvasApp.graphicsDevice; + const clientWidth = renderer.canvas.clientWidth; + const clientHeight = renderer.canvas.clientHeight; + const toCanvasCoords = (point) => { + const vec2 = point.clone().applyMatrix4(new Matr4(camera.getWorldTransform().clone().invert().data)).applyMatrix4(new Matr4(cameraComponent.projectionMatrix.data)); + vec2.x = (vec2.x + 1) / 2 * clientWidth; + vec2.y = (1 - vec2.y) / 2 * clientHeight; + return vec2; + }; + const corners3D = bounds.getCorners(); + const corners2D = corners3D.map(toCanvasCoords); + const minX = Math.min(...corners2D.map((corner) => corner.x)); + const maxX = Math.max(...corners2D.map((corner) => corner.x)); + const minY = Math.min(...corners2D.map((corner) => corner.y)); + const maxY = Math.max(...corners2D.map((corner) => corner.y)); + return { + x: minX, + y: minY, + width: maxX - minX, + height: maxY - minY + }; + } +}; + +// src/PlayCanvasModeInternal.ts +var PlayCanvasModeInternal = class { + constructor(windowTarget, targetForWrappers, mmlSourceDefinition, formIteration) { + this.windowTarget = windowTarget; + this.targetForWrappers = targetForWrappers; + this.mmlSourceDefinition = mmlSourceDefinition; + this.formIteration = formIteration; + this.disposed = false; + this.type = "playcanvas"; + this.environmentMap = null; + this.loadedState = null; + this.init(); + } + async init() { + const fullScreenMMLScene = new FullScreenMMLScene(); + document.body.append(fullScreenMMLScene.element); + const graphicsAdapter = await StandalonePlayCanvasAdapter.create(fullScreenMMLScene.element, { + controlsType: StandalonePlayCanvasAdapterControlsType.DragFly + }); + if (this.disposed) { + graphicsAdapter.dispose(); + return; + } + fullScreenMMLScene.init(graphicsAdapter); + const statusUI = new StatusUI(); + const mmlNetworkSource = MMLNetworkSource.create({ + mmlScene: fullScreenMMLScene, + statusUpdated: (status) => { + if (status === NetworkedDOMWebsocketStatus.Connected) { + statusUI.setNoStatus(); + } else { + statusUI.setStatus(NetworkedDOMWebsocketStatusToString(status)); + } + }, + url: this.mmlSourceDefinition.url, + windowTarget: this.windowTarget, + targetForWrappers: this.targetForWrappers + }); + setDebugGlobals({ + mmlScene: fullScreenMMLScene, + remoteDocumentWrapper: mmlNetworkSource.remoteDocumentWrapper + }); + const loadingCallback = () => { + const [, completedLoading] = fullScreenMMLScene.getLoadingProgressManager().toRatio(); + if (completedLoading) { + fullScreenMMLScene.getLoadingProgressManager().removeProgressCallback(loadingCallback); + const fitContent = this.formIteration.getFieldValue(cameraFitContents); + if (fitContent === "true") { + graphicsAdapter.controls?.fitContent(calculateContentBounds(this.targetForWrappers)); + } + } + }; + fullScreenMMLScene.getLoadingProgressManager().addProgressCallback(loadingCallback); + this.loadedState = { + mmlNetworkSource, + graphicsAdapter, + fullScreenMMLScene, + statusUI + }; + this.update(this.formIteration); + } + update(formIteration) { + this.formIteration = formIteration; + if (!this.loadedState) { + return; + } + const graphicsAdapter = this.loadedState.graphicsAdapter; + const playcanvasScene = graphicsAdapter.getPlayCanvasApp().scene; + const cameraEntity = graphicsAdapter.getCamera(); + const cameraComponent = cameraEntity.camera; + this.setBackgroundColor(formIteration, cameraComponent); + this.setAmbientLight(formIteration, playcanvasScene); + this.setEnvironmentMap(formIteration, graphicsAdapter.getPlayCanvasApp(), playcanvasScene); + this.setCameraMode(formIteration, graphicsAdapter); + formIteration.completed(); + } + setEnvironmentMap(formIteration, playCanvasApp, playcanvasScene) { + let environmentMap = formIteration.getFieldValue(environmentMapField); + const foundEnvMap = envMaps[environmentMap]; + if (foundEnvMap) { + environmentMap = foundEnvMap.url; + } + if (!environmentMap) { + playcanvasScene.envAtlas = null; + playcanvasScene.skybox = null; + this.environmentMap = null; + return; + } + if (environmentMap === this.environmentMap) { + return; + } + const envMapAsset = new Asset("env-atlas", "texture", { url: environmentMap }); + playCanvasApp.assets.add(envMapAsset); + playCanvasApp.assets.load(envMapAsset); + const onEnvMapAssetLoad = (texture) => { + const skybox2 = EnvLighting.generateSkyboxCubemap(texture); + const lighting = EnvLighting.generateLightingSource(texture); + const envAtlas = EnvLighting.generateAtlas(lighting, {}); + lighting.destroy(); + playcanvasScene.envAtlas = envAtlas; + playcanvasScene.skybox = skybox2; + playcanvasScene.skyboxLuminance = 5e4; + }; + if (envMapAsset.loaded) { + onEnvMapAssetLoad(envMapAsset.resource); + } else { + envMapAsset.on("load", (envMapAsset2) => { + onEnvMapAssetLoad(envMapAsset2.resource); + }); + } + } + setAmbientLight(formIteration, playcanvasScene) { + const ambientLightIntensityString = formIteration.getFieldValue(ambientLightField) || "0"; + const ambientLightColorString = formIteration.getFieldValue(ambientLightColorField); + let ambientLightIntensity = parseFloat(ambientLightIntensityString); + if (isNaN(ambientLightIntensity)) { + ambientLightIntensity = 0; + } + if (ambientLightIntensity < 0) { + playcanvasScene.ambientLuminance = 0; + playcanvasScene.ambientLight = new Color(0, 0, 0); + } else { + const color = parseColorAttribute(ambientLightColorString, { + r: 1, + g: 1, + b: 1 + }); + playcanvasScene.ambientLuminance = ambientLightIntensity * 20; + playcanvasScene.ambientLight = new Color( + color.r * ambientLightIntensity * 20, + color.g * ambientLightIntensity * 20, + color.b * ambientLightIntensity * 20 + ); + } + } + setBackgroundColor(formIteration, cameraComponent) { + const backgroundColor = formIteration.getFieldValue(backgroundColorField); + if (!backgroundColor) { + cameraComponent.clearColor = new Color(0, 0, 0, 0); + return; + } + const color = parseColorAttribute(backgroundColor, { + r: 0, + g: 0, + b: 0, + a: 0 + }); + cameraComponent.clearColor = new Color(color.r, color.g, color.b, color.a); + } + setCameraMode(formIteration, graphicsAdapter) { + let cameraFOV = parseFloat(formIteration.getFieldValue(cameraFovField)); + if (isNaN(cameraFOV)) { + cameraFOV = 75; + } + graphicsAdapter.setCameraFOV(cameraFOV); + const cameraMode = formIteration.getFieldValue(cameraModeField); + if (cameraMode === "orbit") { + if (graphicsAdapter.controls?.type !== "orbit") { + graphicsAdapter.setControlsType(StandalonePlayCanvasAdapterControlsType.Orbit); + } + const controls = graphicsAdapter.controls; + let orbitSpeed = parseFloat(formIteration.getFieldValue(cameraOrbitSpeedField)); + if (isNaN(orbitSpeed)) { + orbitSpeed = 0; + } + controls.setDegreesPerSecond(orbitSpeed); + let orbitPitch = parseFloat(formIteration.getFieldValue(cameraOrbitPitchField)); + if (isNaN(orbitPitch)) { + orbitPitch = 0; + } + controls.setPitchDegrees(orbitPitch); + const fitContent = formIteration.getFieldValue(cameraFitContents); + if (fitContent === "true") { + controls.fitContent(calculateContentBounds(this.targetForWrappers)); + } else { + const lookAt = parseXYZ(formIteration.getFieldValue(cameraLookAtField)); + controls.setLookAt(lookAt[0], lookAt[1], lookAt[2]); + let orbitDistance = parseFloat(formIteration.getFieldValue(cameraOrbitDistanceField)); + if (isNaN(orbitDistance)) { + orbitDistance = 1; + } + controls.setDistance(orbitDistance); + } + } else if (cameraMode === "drag-fly") { + if (graphicsAdapter.controls?.type !== "drag-fly") { + graphicsAdapter.setControlsType(StandalonePlayCanvasAdapterControlsType.DragFly); + } + const controls = graphicsAdapter.controls; + const cameraPosition = parseXYZ(formIteration.getFieldValue(cameraPositionField)); + controls.setCameraPosition(cameraPosition[0], cameraPosition[1], cameraPosition[2]); + const lookAt = parseXYZ(formIteration.getFieldValue(cameraLookAtField)); + controls.setLookAt(lookAt[0], lookAt[1], lookAt[2]); + const fitContent = formIteration.getFieldValue(cameraFitContents); + if (fitContent === "true") { + controls.fitContent(calculateContentBounds(this.targetForWrappers)); + } + } else if (cameraMode === "none" && graphicsAdapter.controls !== null) { + graphicsAdapter.setControlsType(StandalonePlayCanvasAdapterControlsType.None); + } + } + dispose() { + this.disposed = true; + if (this.loadedState) { + this.loadedState.mmlNetworkSource.dispose(); + this.loadedState.graphicsAdapter.dispose(); + this.loadedState.fullScreenMMLScene.dispose(); + this.loadedState.statusUI.dispose(); + this.loadedState = null; + } + } +}; +export { + PlayCanvasModeInternal +}; +//# sourceMappingURL=PlayCanvasModeInternal-6JRQ32LR.js.map diff --git a/pull/212/v1/PlayCanvasModeInternal-6JRQ32LR.js.map b/pull/212/v1/PlayCanvasModeInternal-6JRQ32LR.js.map new file mode 100644 index 00000000..5859ad36 --- /dev/null +++ b/pull/212/v1/PlayCanvasModeInternal-6JRQ32LR.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../node_modules/playcanvas/build/playcanvas/src/core/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/core.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/event-handle.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/event-handler.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/events.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/guid.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/path.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/platform.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/string.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/wasm-module.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/read-stream.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/tags.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/time.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/uri.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/tracing.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/math.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/color.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/float-packing.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/vec3.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/mat3.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/vec2.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/vec4.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/mat4.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/quat.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/shape/bounding-box.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/shape/bounding-sphere.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/shape/frustum.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/shape/ray.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/audio/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/constants.js", "../../../node_modules/playcanvas/build/playcanvas/_virtual/_rollupPluginBabelHelpers.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/bit-packing.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/blend-state.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/string-ids.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/depth-state.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/version.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/versioned-object.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/scope-id.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/scope-space.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/vertex-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/hash.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/device-cache.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/vertex-format.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/stencil-parameters.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/graphics-device.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/render-target.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-bind-group.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-bind-group-format.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-index-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/array-utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-vertex-buffer-layout.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-pipeline.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-render-pipeline.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-compute-pipeline.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-render-target.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/uniform-buffer-format.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/bind-group-format.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-processor.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-shader.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/texture-utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-texture.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-uniform-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-vertex-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/preprocessor.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/bind-group.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/dynamic-buffers.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/uniform-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-clear-renderer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-mipmap-renderer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-dynamic-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-dynamic-buffers.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/gpu-profiler.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-query-set.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-gpu-profiler.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-resolver.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-compute.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgpu/webgpu-graphics-device.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/texture.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-vertex-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-index-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-shader-input.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-shader.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-texture.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-render-target.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/frag/gles2.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/vert/gles2.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/frag/gles3.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/vert/gles3.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/frag/webgpu.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/vert/webgpu.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-chunks/frag/shared.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-gpu-profiler.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/webgl/webgl-graphics-device.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-index-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-render-target.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-shader.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-texture.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-vertex-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/null/null-graphics-device.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/graphics-device-create.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/index-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/render-pass.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/shader-processor-options.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/graphics/vertex-iterator.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/input/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/input/mouse-event.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/input/mouse.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/net/http.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/audio/capabilities.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/audio/channel.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/audio/channel3d.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/sound/listener.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/sound/manager.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/sound/sound.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/sound/instance.js", "../../../node_modules/playcanvas/build/playcanvas/src/platform/sound/instance3d.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/alphaTest.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/ambientConstant.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/ambientEnv.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/ambientSH.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/ao.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/aoDetailMap.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoDiffuseOcc.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoSpecOcc.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoSpecOccConst.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoSpecOccConstSimple.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/aoSpecOccSimple.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/base.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/base.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/baseNineSliced.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/baseNineSliced.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/baseNineSlicedTiled.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/bayer.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/biasConst.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/blurVSM.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/clearCoat.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/clearCoatGloss.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/clearCoatNormal.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/clusteredLightUtils.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/clusteredLightCookies.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/clusteredLightShadows.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/clusteredLight.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/combine.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/cookie.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/cubeMapProjectBox.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/cubeMapProjectNone.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/cubeMapRotate.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/debug-output.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/debug-process-frontend.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/decode.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/detailModes.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/diffuse.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/diffuseDetailMap.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/emissive.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/encode.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/end.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/end.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/envAtlas.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/envConst.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/envMultiply.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/extension.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/extension.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/falloffInvSquared.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/falloffLinear.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/fixCubemapSeamsNone.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/fixCubemapSeamsStretch.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/float-unpacking.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fogExp.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fogExp2.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fogLinear.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fogNone.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/fresnelSchlick.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/fullscreenQuad.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/fullscreenQuad.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/gamma1_0.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/gamma2_2.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/gloss.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/iridescenceDiffraction.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/iridescence.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/iridescenceThickness.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/instancing.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/ior.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightDiffuseLambert.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightDirPoint.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightmapAdd.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightmapDirAdd.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/lightmapDir.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/lightmapSingle.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightSpecularAnisoGGX.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightSpecularBlinn.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightSpecularPhong.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/lightSheen.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/linearizeDepth.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/litShaderArgs.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/ltc.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/metalness.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/msdf.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/metalnessModulate.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/msdf.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/normal.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/normalDetailMap.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/normalInstanced.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/normalMap.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/normalSkinned.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/normalXY.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/normalXYZ.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/opacity.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/opacity-dither.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/output.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/outputAlpha.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/outputAlphaOpaque.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/outputAlphaPremul.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/outputTex2D.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/packDepth.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/sheen.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/sheenGloss.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/parallax.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particleAnimFrameClamp.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particleAnimFrameLoop.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particleAnimTex.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleInputFloat.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleInputRgba8.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleOutputFloat.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleOutputRgba8.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterAABB.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterEnd.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterInit.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterNoRespawn.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterOnStop.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterRespawn.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterSphere.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particleUpdaterStart.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_billboard.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_blendAdd.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_blendMultiply.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_blendNormal.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_cpu.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_cpu_end.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_customFace.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_end.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_end.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_halflambert.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_init.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_lambert.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_lighting.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_localShift.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_mesh.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_normal.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_normalMap.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_pointAlong.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/frag/particle_soft.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_soft.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_stretch.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_TBN.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/particle/vert/particle_wrap.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflDir.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflDirAniso.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionCC.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionCube.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionEnvHQ.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionEnv.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionSphere.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/reflectionSheen.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/refractionCube.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/refractionDynamic.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/reproject.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/sampleCatmullRom.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/screenDepth.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowCascades.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowEVSM.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowEVSMn.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowPCSS.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowSampleCoord.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowStandard.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowStandardGL2.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowVSM8.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/shadowVSM_common.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/skinBatchConst.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/skinBatchTex.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/skinConst.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/skinTex.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/skybox/frag/skyboxEnv.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/skybox/frag/skyboxHDR.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/skybox/vert/skybox.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/specular.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/spherical.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/specularityFactor.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/spot.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/start.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/start.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/startNineSliced.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/startNineSlicedTiled.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/storeEVSM.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/tangentBinormal.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/TBN.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/TBNderivative.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/TBNfast.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/TBNObjectSpace.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/textureSample.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/thickness.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingAces.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingAces2.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingFilmic.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingHejl.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingLinear.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingNeutral.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/frag/tonemappingNone.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/transform.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/common/vert/transformDecl.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/standard/frag/transmission.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/twoSidedLighting.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/uv0.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/uv1.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/frag/viewDir.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/lit/vert/viewNormal.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunks/chunks.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/get-program-library.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/shader-generator.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/quad-render.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/render-pass-quad.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/quad-render-utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-pass.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/basic.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/materials/default-material.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/materials/material.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/materials/basic-material.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/batching/batch.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/batching/batch-group.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/skin-instance.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/ref-counted-object.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/mesh.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graph-node.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/ref-counted-cache.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/lightmap-cache.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/mesh-instance.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/render-pass-color-grab.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/render-pass-depth-grab.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/render-pass-depth.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/camera.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/lit-shader-options.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/materials/lit-material-options-builder.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunk-builder.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/chunk-utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/light-camera.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/lighting/lights-buffer.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/lit-shader.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/lit-options-utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/lighting/world-clusters.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-map.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/lighting/light-texture-atlas.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/light-cube.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-map-cache.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-shadow-local-non-clustered.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-renderer-local.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-shadow-directional.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-renderer-directional.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/shadow-renderer.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/world-clusters-allocator.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-cookie-renderer.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-shadow-local-clustered.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-update-clustered.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/blue-noise.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/noise-textures.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/renderer.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/composition/render-action.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-forward.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/render-pass-postprocessing.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/renderer/forward-renderer.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/layer.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/sort.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/composition/layer-composition.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/light.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/lighting/lighting-params.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/morph-instance.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/model.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/morph.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/morph-target.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/skybox.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/geometry-utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/box-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/sphere-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/dome-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/skybox/sky-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/skybox/sky-mesh.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/skybox/sky.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/immediate/immediate-batch.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/immediate/immediate-batches.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/immediate/immediate.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/math/random.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/reproject-texture.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/graphics/env-lighting.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/scene.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/skin.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/materials/standard-material-options.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/programs/standard.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/materials/standard-material-options-builder.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/materials/standard-material-parameters.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/materials/standard-material.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/animation/animation.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/animation/skeleton.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/cone-base-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/capsule-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/cone-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/cylinder-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/plane-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/geometry/torus-geometry.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/shader-lib/program-library.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/globals.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/script/script-types.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/script.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/frame-graph.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/area-light-luts.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/i18n/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/i18n/utils.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/asset/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/asset/asset-file.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/asset/asset.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/tags-cache.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/asset/asset-registry.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/bundle/bundle-registry.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/registry.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/bundle/bundle.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/untar.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/handler.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/bundle.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/loader.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/i18n/i18n-parser.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/i18n/i18n.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/script/script-registry.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/entity.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/scene-registry-item.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/scene-registry.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/stats.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/app-base.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/app-options.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-cache.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-snapshot.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-clip.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-blend.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-target-value.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-evaluator.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-events.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-track.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/binder/anim-binder.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-target.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/binder/default-anim-binder.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-node.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree-1d.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree-2d-cartesian.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree-2d-directional.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-blend-tree-direct.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-state.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-transition.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/controller/anim-controller.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/component-binder.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/component-layer.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/state-graph/anim-state-graph.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/anim/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/audio-listener/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/audio-listener/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/audio-listener/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/utils/entity-reference.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/collision/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/collision/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/rigid-body/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/collision/trigger.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/collision/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/graphics/primitive-cache.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/model/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/model/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/model/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/skin-instance-cache.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/asset/asset-reference.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/render/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/render/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/render/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/core/object-pool.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/rigid-body/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/rigid-body/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/rigid-body/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/sound/slot.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/sound/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/sound/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/sound/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/camera/post-effect-queue.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/camera/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/camera/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/camera/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/light/data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/light/component.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/components/light/system.js", "../../../node_modules/playcanvas/build/playcanvas/src/scene/render.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-curve.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/anim/evaluator/anim-data.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/draco-worker.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/draco-decoder.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/glb-parser.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/animation.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/audio.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/glb-container-resource.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/glb-container-parser.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/container.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/glb-model.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/json-model.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/model.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/basis-worker.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/basis.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/texture.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/basis.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/img.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/ktx.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/ktx2.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/dds.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/parsers/texture/hdr.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/handlers/texture.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/xr/constants.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/xr/xr-finger.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/xr/xr-joint.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/xr/xr-hand.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/xr/xr-input-source.js", "../../../node_modules/playcanvas/build/playcanvas/src/framework/input/element-input.js", "../../../node_modules/playcanvas/build/playcanvas/src/deprecated/deprecated.js", "../../../node_modules/@mml-io/mml-web-playcanvas/src/PlayCanvasClickTrigger.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasAudio.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasChatProbe.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasCube.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasCylinder.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasDebugHelper.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/debug-bounding-box/PlayCanvasDebugBoundingBox.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasFrame.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasImage.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/plane/plane.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasInteraction.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasLabel.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasLight.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasLink.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasMElement.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasModel.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasPlane.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasPositionProbe.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasPrompt.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasRemoteDocument.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/PlayCanvasReconnectingStatus.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasSphere.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasTransformable.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/elements/PlayCanvasVideo.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/PlayCanvasGraphicsInterface.ts", "../../../node_modules/@mml-io/mml-web-playcanvas/src/PlayCanvasInteractionAdapter.ts", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/src/controls/PlayCanvasDragFlyCameraControls.ts", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/src/controls/PlayCanvasOrbitCameraControls.ts", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/src/StandalonePlayCanvasAdapter.ts", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/build/base64:/home/runner/work/mml/mml/packages/mml-web-playcanvas-standalone/src/wasm/ammo.wasm.js", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/build/base64:/home/runner/work/mml/mml/packages/mml-web-playcanvas-standalone/src/wasm/ammo.wasm.wasm", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/build/base64:/home/runner/work/mml/mml/packages/mml-web-playcanvas-standalone/src/wasm/draco.wasm.js", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/build/base64:/home/runner/work/mml/mml/packages/mml-web-playcanvas-standalone/src/wasm/draco.wasm.wasm", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/build/base64:/home/runner/work/mml/mml/packages/mml-web-playcanvas-standalone/src/wasm/glslang.js", "../../../node_modules/@mml-io/mml-web-playcanvas-standalone/build/base64:/home/runner/work/mml/mml/packages/mml-web-playcanvas-standalone/src/wasm/twgsl.js", "../src/PlayCanvasModeInternal.ts"], + "sourcesContent": ["const TRACEID_RENDER_FRAME = 'RenderFrame';\nconst TRACEID_RENDER_FRAME_TIME = 'RenderFrameTime';\nconst TRACEID_RENDER_PASS = 'RenderPass';\nconst TRACEID_RENDER_PASS_DETAIL = 'RenderPassDetail';\nconst TRACEID_RENDER_ACTION = 'RenderAction';\nconst TRACEID_RENDER_TARGET_ALLOC = 'RenderTargetAlloc';\nconst TRACEID_TEXTURE_ALLOC = 'TextureAlloc';\nconst TRACEID_SHADER_ALLOC = 'ShaderAlloc';\nconst TRACEID_SHADER_COMPILE = 'ShaderCompile';\nconst TRACEID_VRAM_TEXTURE = 'VRAM.Texture';\nconst TRACEID_VRAM_VB = 'VRAM.Vb';\nconst TRACEID_VRAM_IB = 'VRAM.Ib';\nconst TRACEID_VRAM_SB = 'VRAM.Sb';\nconst TRACEID_BINDGROUP_ALLOC = 'BindGroupAlloc';\nconst TRACEID_BINDGROUPFORMAT_ALLOC = 'BindGroupFormatAlloc';\nconst TRACEID_RENDERPIPELINE_ALLOC = 'RenderPipelineAlloc';\nconst TRACEID_COMPUTEPIPELINE_ALLOC = 'ComputePipelineAlloc';\nconst TRACEID_PIPELINELAYOUT_ALLOC = 'PipelineLayoutAlloc';\nconst TRACE_ID_ELEMENT = \"Element\";\nconst TRACEID_TEXTURES = 'Textures';\nconst TRACEID_RENDER_QUEUE = 'RenderQueue';\nconst TRACEID_GPU_TIMINGS = 'GpuTimings';\n\nexport { TRACEID_BINDGROUPFORMAT_ALLOC, TRACEID_BINDGROUP_ALLOC, TRACEID_COMPUTEPIPELINE_ALLOC, TRACEID_GPU_TIMINGS, TRACEID_PIPELINELAYOUT_ALLOC, TRACEID_RENDERPIPELINE_ALLOC, TRACEID_RENDER_ACTION, TRACEID_RENDER_FRAME, TRACEID_RENDER_FRAME_TIME, TRACEID_RENDER_PASS, TRACEID_RENDER_PASS_DETAIL, TRACEID_RENDER_QUEUE, TRACEID_RENDER_TARGET_ALLOC, TRACEID_SHADER_ALLOC, TRACEID_SHADER_COMPILE, TRACEID_TEXTURES, TRACEID_TEXTURE_ALLOC, TRACEID_VRAM_IB, TRACEID_VRAM_SB, TRACEID_VRAM_TEXTURE, TRACEID_VRAM_VB, TRACE_ID_ELEMENT };\n", "const version = '1.73.5';\nconst revision = '26a4396';\nconst config = {};\nconst common = {};\nconst apps = {};\nconst data = {};\nconst typeofs = ['undefined', 'number', 'string', 'boolean'];\nconst objectTypes = {\n\t'[object Array]': 'array',\n\t'[object Object]': 'object',\n\t'[object Function]': 'function',\n\t'[object Date]': 'date',\n\t'[object RegExp]': 'regexp',\n\t'[object Float32Array]': 'float32array'\n};\nfunction type(obj) {\n\tif (obj === null) {\n\t\treturn 'null';\n\t}\n\tconst typeString = typeof obj;\n\tif (typeofs.includes(typeString)) {\n\t\treturn typeString;\n\t}\n\treturn objectTypes[Object.prototype.toString.call(obj)];\n}\nfunction extend(target, ex) {\n\tfor (const prop in ex) {\n\t\tconst copy = ex[prop];\n\t\tif (type(copy) === 'object') {\n\t\t\ttarget[prop] = extend({}, copy);\n\t\t} else if (type(copy) === 'array') {\n\t\t\ttarget[prop] = extend([], copy);\n\t\t} else {\n\t\t\ttarget[prop] = copy;\n\t\t}\n\t}\n\treturn target;\n}\n\nexport { apps, common, config, data, extend, revision, type, version };\n", "class EventHandle {\n\tconstructor(handler, name, callback, scope, once = false) {\n\t\tthis.handler = void 0;\n\t\tthis.name = void 0;\n\t\tthis.callback = void 0;\n\t\tthis.scope = void 0;\n\t\tthis._once = void 0;\n\t\tthis._removed = false;\n\t\tthis.handler = handler;\n\t\tthis.name = name;\n\t\tthis.callback = callback;\n\t\tthis.scope = scope;\n\t\tthis._once = once;\n\t}\n\toff() {\n\t\tif (this._removed) return;\n\t\tthis.handler.off(this.name, this.callback, this.scope);\n\t}\n\ton(name, callback, scope = this) {\n\t\treturn this.handler._addCallback(name, callback, scope, false);\n\t}\n\tonce(name, callback, scope = this) {\n\t\treturn this.handler._addCallback(name, callback, scope, true);\n\t}\n\tset removed(value) {\n\t\tif (!value) return;\n\t\tthis._removed = true;\n\t}\n\tget removed() {\n\t\treturn this._removed;\n\t}\n}\n\nexport { EventHandle };\n", "import { EventHandle } from './event-handle.js';\n\nclass EventHandler {\n\tconstructor() {\n\t\tthis._callbacks = new Map();\n\t\tthis._callbackActive = new Map();\n\t}\n\tinitEventHandler() {\n\t\tthis._callbacks = new Map();\n\t\tthis._callbackActive = new Map();\n\t}\n\t_addCallback(name, callback, scope, once) {\n\t\tif (!this._callbacks.has(name)) this._callbacks.set(name, []);\n\t\tif (this._callbackActive.has(name)) {\n\t\t\tconst callbackActive = this._callbackActive.get(name);\n\t\t\tif (callbackActive && callbackActive === this._callbacks.get(name)) {\n\t\t\t\tthis._callbackActive.set(name, callbackActive.slice());\n\t\t\t}\n\t\t}\n\t\tconst evt = new EventHandle(this, name, callback, scope, once);\n\t\tthis._callbacks.get(name).push(evt);\n\t\treturn evt;\n\t}\n\ton(name, callback, scope = this) {\n\t\treturn this._addCallback(name, callback, scope, false);\n\t}\n\tonce(name, callback, scope = this) {\n\t\treturn this._addCallback(name, callback, scope, true);\n\t}\n\toff(name, callback, scope) {\n\t\tif (name) {\n\t\t\tif (this._callbackActive.has(name) && this._callbackActive.get(name) === this._callbacks.get(name)) this._callbackActive.set(name, this._callbackActive.get(name).slice());\n\t\t} else {\n\t\t\tfor (const [key, callbacks] of this._callbackActive) {\n\t\t\t\tif (!this._callbacks.has(key)) continue;\n\t\t\t\tif (this._callbacks.get(key) !== callbacks) continue;\n\t\t\t\tthis._callbackActive.set(key, callbacks.slice());\n\t\t\t}\n\t\t}\n\t\tif (!name) {\n\t\t\tfor (const callbacks of this._callbacks.values()) {\n\t\t\t\tfor (let i = 0; i < callbacks.length; i++) {\n\t\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._callbacks.clear();\n\t\t} else if (!callback) {\n\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\tif (callbacks) {\n\t\t\t\tfor (let i = 0; i < callbacks.length; i++) {\n\t\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\t}\n\t\t\t\tthis._callbacks.delete(name);\n\t\t\t}\n\t\t} else {\n\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\tif (!callbacks) return this;\n\t\t\tfor (let i = 0; i < callbacks.length; i++) {\n\t\t\t\tif (callbacks[i].callback !== callback) continue;\n\t\t\t\tif (scope && callbacks[i].scope !== scope) continue;\n\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\tcallbacks.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t\tif (callbacks.length === 0) this._callbacks.delete(name);\n\t\t}\n\t\treturn this;\n\t}\n\tfire(name, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n\t\tif (!name) return this;\n\t\tconst callbacksInitial = this._callbacks.get(name);\n\t\tif (!callbacksInitial) return this;\n\t\tlet callbacks;\n\t\tif (!this._callbackActive.has(name)) {\n\t\t\tthis._callbackActive.set(name, callbacksInitial);\n\t\t} else if (this._callbackActive.get(name) !== callbacksInitial) {\n\t\t\tcallbacks = callbacksInitial.slice();\n\t\t}\n\t\tfor (let i = 0; (callbacks || this._callbackActive.get(name)) && i < (callbacks || this._callbackActive.get(name)).length; i++) {\n\t\t\tconst evt = (callbacks || this._callbackActive.get(name))[i];\n\t\t\tif (!evt.callback) continue;\n\t\t\tevt.callback.call(evt.scope, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n\t\t\tif (evt._once) {\n\t\t\t\tconst existingCallback = this._callbacks.get(name);\n\t\t\t\tconst ind = existingCallback ? existingCallback.indexOf(evt) : -1;\n\t\t\t\tif (ind !== -1) {\n\t\t\t\t\tif (this._callbackActive.get(name) === existingCallback) this._callbackActive.set(name, this._callbackActive.get(name).slice());\n\t\t\t\t\tconst _callbacks = this._callbacks.get(name);\n\t\t\t\t\tif (!_callbacks) continue;\n\t\t\t\t\t_callbacks[ind].removed = true;\n\t\t\t\t\t_callbacks.splice(ind, 1);\n\t\t\t\t\tif (_callbacks.length === 0) this._callbacks.delete(name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!callbacks) this._callbackActive.delete(name);\n\t\treturn this;\n\t}\n\thasEvent(name) {\n\t\tvar _this$_callbacks$get;\n\t\treturn !!((_this$_callbacks$get = this._callbacks.get(name)) != null && _this$_callbacks$get.length);\n\t}\n}\n\nexport { EventHandler };\n", "import { EventHandler } from './event-handler.js';\n\nconst events = {\n\tattach(target) {\n\t\tconst ev = events;\n\t\ttarget._addCallback = ev._addCallback;\n\t\ttarget.on = ev.on;\n\t\ttarget.off = ev.off;\n\t\ttarget.fire = ev.fire;\n\t\ttarget.once = ev.once;\n\t\ttarget.hasEvent = ev.hasEvent;\n\t\tEventHandler.prototype.initEventHandler.call(target);\n\t\treturn target;\n\t},\n\t_addCallback: EventHandler.prototype._addCallback,\n\ton: EventHandler.prototype.on,\n\toff: EventHandler.prototype.off,\n\tfire: EventHandler.prototype.fire,\n\tonce: EventHandler.prototype.once,\n\thasEvent: EventHandler.prototype.hasEvent\n};\n\nexport { events };\n", "const guid = {\n\tcreate() {\n\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t\t\tconst r = Math.random() * 16 | 0;\n\t\t\tconst v = c === 'x' ? r : r & 0x3 | 0x8;\n\t\t\treturn v.toString(16);\n\t\t});\n\t}\n};\n\nexport { guid };\n", "const path = {\n\tdelimiter: '/',\n\tjoin(...sections) {\n\t\tlet result = sections[0];\n\t\tfor (let i = 0; i < sections.length - 1; i++) {\n\t\t\tconst one = sections[i];\n\t\t\tconst two = sections[i + 1];\n\t\t\tif (two[0] === path.delimiter) {\n\t\t\t\tresult = two;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (one && two && one[one.length - 1] !== path.delimiter && two[0] !== path.delimiter) {\n\t\t\t\tresult += path.delimiter + two;\n\t\t\t} else {\n\t\t\t\tresult += two;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\tnormalize(pathname) {\n\t\tconst lead = pathname.startsWith(path.delimiter);\n\t\tconst trail = pathname.endsWith(path.delimiter);\n\t\tconst parts = pathname.split('/');\n\t\tlet result = '';\n\t\tlet cleaned = [];\n\t\tfor (let i = 0; i < parts.length; i++) {\n\t\t\tif (parts[i] === '') continue;\n\t\t\tif (parts[i] === '.') continue;\n\t\t\tif (parts[i] === '..' && cleaned.length > 0) {\n\t\t\t\tcleaned = cleaned.slice(0, cleaned.length - 2);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (i > 0) cleaned.push(path.delimiter);\n\t\t\tcleaned.push(parts[i]);\n\t\t}\n\t\tresult = cleaned.join('');\n\t\tif (!lead && result[0] === path.delimiter) {\n\t\t\tresult = result.slice(1);\n\t\t}\n\t\tif (trail && result[result.length - 1] !== path.delimiter) {\n\t\t\tresult += path.delimiter;\n\t\t}\n\t\treturn result;\n\t},\n\tsplit(pathname) {\n\t\tconst lastDelimiterIndex = pathname.lastIndexOf(path.delimiter);\n\t\tif (lastDelimiterIndex !== -1) {\n\t\t\treturn [pathname.substring(0, lastDelimiterIndex), pathname.substring(lastDelimiterIndex + 1)];\n\t\t}\n\t\treturn [\"\", pathname];\n\t},\n\tgetBasename(pathname) {\n\t\treturn path.split(pathname)[1];\n\t},\n\tgetDirectory(pathname) {\n\t\treturn path.split(pathname)[0];\n\t},\n\tgetExtension(pathname) {\n\t\tconst ext = pathname.split('?')[0].split('.').pop();\n\t\tif (ext !== pathname) {\n\t\t\treturn '.' + ext;\n\t\t}\n\t\treturn '';\n\t},\n\tisRelativePath(pathname) {\n\t\treturn pathname.charAt(0) !== '/' && pathname.match(/:\\/\\//) === null;\n\t},\n\textractPath(pathname) {\n\t\tlet result = '';\n\t\tconst parts = pathname.split('/');\n\t\tlet i = 0;\n\t\tif (parts.length > 1) {\n\t\t\tif (path.isRelativePath(pathname)) {\n\t\t\t\tif (parts[0] === '.') {\n\t\t\t\t\tfor (i = 0; i < parts.length - 1; ++i) {\n\t\t\t\t\t\tresult += i === 0 ? parts[i] : '/' + parts[i];\n\t\t\t\t\t}\n\t\t\t\t} else if (parts[0] === '..') {\n\t\t\t\t\tfor (i = 0; i < parts.length - 1; ++i) {\n\t\t\t\t\t\tresult += i === 0 ? parts[i] : '/' + parts[i];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresult = '.';\n\t\t\t\t\tfor (i = 0; i < parts.length - 1; ++i) {\n\t\t\t\t\t\tresult += '/' + parts[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < parts.length - 1; ++i) {\n\t\t\t\t\tresult += i === 0 ? parts[i] : '/' + parts[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n\nexport { path };\n", "var _ref, _ref2, _ref3;\nconst detectPassiveEvents = () => {\n\tlet result = false;\n\ttry {\n\t\tconst opts = Object.defineProperty({}, 'passive', {\n\t\t\tget: function () {\n\t\t\t\tresult = true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('testpassive', null, opts);\n\t\twindow.removeEventListener('testpassive', null, opts);\n\t} catch (e) {}\n\treturn result;\n};\nconst ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';\nconst environment = typeof window !== 'undefined' ? 'browser' : typeof global !== 'undefined' ? 'node' : 'worker';\nconst platformName = /android/i.test(ua) ? 'android' : /ip([ao]d|hone)/i.test(ua) ? 'ios' : /windows/i.test(ua) ? 'windows' : /mac os/i.test(ua) ? 'osx' : /linux/i.test(ua) ? 'linux' : /cros/i.test(ua) ? 'cros' : null;\nconst browserName = environment !== 'browser' ? null : /(Chrome\\/|Chromium\\/|Edg.*\\/)/.test(ua) ? 'chrome' : /Safari\\//.test(ua) ? 'safari' : /Firefox\\//.test(ua) ? 'firefox' : 'other';\nconst xbox = /xbox/i.test(ua);\nconst touch = environment === 'browser' && ('ontouchstart' in window || 'maxTouchPoints' in navigator && navigator.maxTouchPoints > 0);\nconst gamepads = environment === 'browser' && (!!navigator.getGamepads || !!navigator.webkitGetGamepads);\nconst workers = typeof Worker !== 'undefined';\nconst passiveEvents = detectPassiveEvents();\nconst platform = {\n\tname: platformName,\n\tenvironment: environment,\n\tglobal: (_ref = (_ref2 = (_ref3 = typeof globalThis !== 'undefined' && globalThis) != null ? _ref3 : environment === 'browser' && window) != null ? _ref2 : environment === 'node' && global) != null ? _ref : environment === 'worker' && self,\n\tbrowser: environment === 'browser',\n\tworker: environment === 'worker',\n\tdesktop: ['windows', 'osx', 'linux', 'cros'].includes(platformName),\n\tmobile: ['android', 'ios'].includes(platformName),\n\tios: platformName === 'ios',\n\tandroid: platformName === 'android',\n\txbox: xbox,\n\tgamepads: gamepads,\n\ttouch: touch,\n\tworkers: workers,\n\tpassiveEvents: passiveEvents,\n\tbrowserName: browserName\n};\n\nexport { platform };\n", "const ASCII_LOWERCASE = 'abcdefghijklmnopqrstuvwxyz';\nconst ASCII_UPPERCASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst ASCII_LETTERS = ASCII_LOWERCASE + ASCII_UPPERCASE;\nconst HIGH_SURROGATE_BEGIN = 0xD800;\nconst HIGH_SURROGATE_END = 0xDBFF;\nconst LOW_SURROGATE_BEGIN = 0xDC00;\nconst LOW_SURROGATE_END = 0xDFFF;\nconst ZERO_WIDTH_JOINER = 0x200D;\nconst REGIONAL_INDICATOR_BEGIN = 0x1F1E6;\nconst REGIONAL_INDICATOR_END = 0x1F1FF;\nconst FITZPATRICK_MODIFIER_BEGIN = 0x1F3FB;\nconst FITZPATRICK_MODIFIER_END = 0x1F3FF;\nconst DIACRITICAL_MARKS_BEGIN = 0x20D0;\nconst DIACRITICAL_MARKS_END = 0x20FF;\nconst VARIATION_MODIFIER_BEGIN = 0xFE00;\nconst VARIATION_MODIFIER_END = 0xFE0F;\nfunction getCodePointData(string, i = 0) {\n\tconst size = string.length;\n\tif (i < 0 || i >= size) {\n\t\treturn null;\n\t}\n\tconst first = string.charCodeAt(i);\n\tif (size > 1 && first >= HIGH_SURROGATE_BEGIN && first <= HIGH_SURROGATE_END) {\n\t\tconst second = string.charCodeAt(i + 1);\n\t\tif (second >= LOW_SURROGATE_BEGIN && second <= LOW_SURROGATE_END) {\n\t\t\treturn {\n\t\t\t\tcode: (first - HIGH_SURROGATE_BEGIN) * 0x400 + second - LOW_SURROGATE_BEGIN + 0x10000,\n\t\t\t\tlong: true\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tcode: first,\n\t\tlong: false\n\t};\n}\nfunction isCodeBetween(string, begin, end) {\n\tif (!string) return false;\n\tconst codeData = getCodePointData(string);\n\tif (codeData) {\n\t\tconst code = codeData.code;\n\t\treturn code >= begin && code <= end;\n\t}\n\treturn false;\n}\nfunction numCharsToTakeForNextSymbol(string, index) {\n\tif (index === string.length - 1) {\n\t\treturn 1;\n\t}\n\tif (isCodeBetween(string[index], HIGH_SURROGATE_BEGIN, HIGH_SURROGATE_END)) {\n\t\tconst first = string.substring(index, index + 2);\n\t\tconst second = string.substring(index + 2, index + 4);\n\t\tif (isCodeBetween(second, FITZPATRICK_MODIFIER_BEGIN, FITZPATRICK_MODIFIER_END) || isCodeBetween(first, REGIONAL_INDICATOR_BEGIN, REGIONAL_INDICATOR_END) && isCodeBetween(second, REGIONAL_INDICATOR_BEGIN, REGIONAL_INDICATOR_END)) {\n\t\t\treturn 4;\n\t\t}\n\t\tif (isCodeBetween(second, VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\t\treturn 3;\n\t\t}\n\t\treturn 2;\n\t}\n\tif (isCodeBetween(string[index + 1], VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\treturn 2;\n\t}\n\treturn 1;\n}\nconst string = {\n\tASCII_LOWERCASE: ASCII_LOWERCASE,\n\tASCII_UPPERCASE: ASCII_UPPERCASE,\n\tASCII_LETTERS: ASCII_LETTERS,\n\tformat(s, ...args) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\ts = s.replace(`{${i}}`, args[i]);\n\t\t}\n\t\treturn s;\n\t},\n\tgetCodePoint(string, i) {\n\t\tconst codePointData = getCodePointData(string, i);\n\t\treturn codePointData && codePointData.code;\n\t},\n\tgetCodePoints(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\tthrow new TypeError('Not a string');\n\t\t}\n\t\tlet i = 0;\n\t\tconst arr = [];\n\t\tlet codePoint;\n\t\twhile (!!(codePoint = getCodePointData(string, i))) {\n\t\t\tarr.push(codePoint.code);\n\t\t\ti += codePoint.long ? 2 : 1;\n\t\t}\n\t\treturn arr;\n\t},\n\tgetSymbols(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\tthrow new TypeError('Not a string');\n\t\t}\n\t\tlet index = 0;\n\t\tconst length = string.length;\n\t\tconst output = [];\n\t\tlet take = 0;\n\t\tlet ch;\n\t\twhile (index < length) {\n\t\t\ttake += numCharsToTakeForNextSymbol(string, index + take);\n\t\t\tch = string[index + take];\n\t\t\tif (isCodeBetween(ch, DIACRITICAL_MARKS_BEGIN, DIACRITICAL_MARKS_END)) {\n\t\t\t\tch = string[index + take++];\n\t\t\t}\n\t\t\tif (isCodeBetween(ch, VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\t\t\tch = string[index + take++];\n\t\t\t}\n\t\t\tif (ch && ch.charCodeAt(0) === ZERO_WIDTH_JOINER) {\n\t\t\t\tch = string[index + take++];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst char = string.substring(index, index + take);\n\t\t\toutput.push(char);\n\t\t\tindex += take;\n\t\t\ttake = 0;\n\t\t}\n\t\treturn output;\n\t},\n\tfromCodePoint() {\n\t\tconst chars = [];\n\t\tlet current;\n\t\tlet codePoint;\n\t\tlet units;\n\t\tfor (let i = 0; i < arguments.length; ++i) {\n\t\t\tcurrent = Number(arguments[i]);\n\t\t\tcodePoint = current - 0x10000;\n\t\t\tunits = current > 0xFFFF ? [(codePoint >> 10) + 0xD800, codePoint % 0x400 + 0xDC00] : [current];\n\t\t\tchars.push(String.fromCharCode.apply(null, units));\n\t\t}\n\t\treturn chars.join('');\n\t}\n};\n\nexport { string };\n", "const cachedResult = func => {\n\tconst uninitToken = {};\n\tlet result = uninitToken;\n\treturn () => {\n\t\tif (result === uninitToken) {\n\t\t\tresult = func();\n\t\t}\n\t\treturn result;\n\t};\n};\nclass Impl {\n\tstatic loadScript(url, callback) {\n\t\tconst s = document.createElement('script');\n\t\ts.setAttribute('src', url);\n\t\ts.onload = () => {\n\t\t\tcallback(null);\n\t\t};\n\t\ts.onerror = () => {\n\t\t\tcallback(`Failed to load script='${url}'`);\n\t\t};\n\t\tdocument.body.appendChild(s);\n\t}\n\tstatic loadWasm(moduleName, config, callback) {\n\t\tconst loadUrl = Impl.wasmSupported() && config.glueUrl && config.wasmUrl ? config.glueUrl : config.fallbackUrl;\n\t\tif (loadUrl) {\n\t\t\tImpl.loadScript(loadUrl, err => {\n\t\t\t\tif (err) {\n\t\t\t\t\tcallback(err, null);\n\t\t\t\t} else {\n\t\t\t\t\tconst module = window[moduleName];\n\t\t\t\t\twindow[moduleName] = undefined;\n\t\t\t\t\tmodule({\n\t\t\t\t\t\tlocateFile: () => config.wasmUrl,\n\t\t\t\t\t\tonAbort: () => {\n\t\t\t\t\t\t\tcallback('wasm module aborted.');\n\t\t\t\t\t\t}\n\t\t\t\t\t}).then(instance => {\n\t\t\t\t\t\tcallback(null, instance);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tcallback('No supported wasm modules found.', null);\n\t\t}\n\t}\n\tstatic getModule(name) {\n\t\tif (!Impl.modules.hasOwnProperty(name)) {\n\t\t\tImpl.modules[name] = {\n\t\t\t\tconfig: null,\n\t\t\t\tinitializing: false,\n\t\t\t\tinstance: null,\n\t\t\t\tcallbacks: []\n\t\t\t};\n\t\t}\n\t\treturn Impl.modules[name];\n\t}\n\tstatic initialize(moduleName, module) {\n\t\tif (module.initializing) {\n\t\t\treturn;\n\t\t}\n\t\tconst config = module.config;\n\t\tif (config.glueUrl || config.wasmUrl || config.fallbackUrl) {\n\t\t\tmodule.initializing = true;\n\t\t\tImpl.loadWasm(moduleName, config, (err, instance) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tif (config.errorHandler) {\n\t\t\t\t\t\tconfig.errorHandler(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(`failed to initialize module=${moduleName} error=${err}`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmodule.instance = instance;\n\t\t\t\t\tmodule.callbacks.forEach(callback => {\n\t\t\t\t\t\tcallback(instance);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\nImpl.modules = {};\nImpl.wasmSupported = cachedResult(() => {\n\ttry {\n\t\tif (typeof WebAssembly === \"object\" && typeof WebAssembly.instantiate === \"function\") {\n\t\t\tconst module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n\t\t\tif (module instanceof WebAssembly.Module) return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n\t\t}\n\t} catch (e) {}\n\treturn false;\n});\nclass WasmModule {\n\tstatic setConfig(moduleName, config) {\n\t\tconst module = Impl.getModule(moduleName);\n\t\tmodule.config = config;\n\t\tif (module.callbacks.length > 0) {\n\t\t\tImpl.initialize(moduleName, module);\n\t\t}\n\t}\n\tstatic getConfig(moduleName) {\n\t\tvar _Impl$modules;\n\t\treturn (_Impl$modules = Impl.modules) == null || (_Impl$modules = _Impl$modules[moduleName]) == null ? void 0 : _Impl$modules.config;\n\t}\n\tstatic getInstance(moduleName, callback) {\n\t\tconst module = Impl.getModule(moduleName);\n\t\tif (module.instance) {\n\t\t\tcallback(module.instance);\n\t\t} else {\n\t\t\tmodule.callbacks.push(callback);\n\t\t\tif (module.config) {\n\t\t\t\tImpl.initialize(moduleName, module);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { WasmModule };\n", "class ReadStream {\n\tconstructor(arraybuffer) {\n\t\tthis.arraybuffer = void 0;\n\t\tthis.dataView = void 0;\n\t\tthis.offset = 0;\n\t\tthis.arraybuffer = arraybuffer;\n\t\tthis.dataView = new DataView(arraybuffer);\n\t}\n\tget remainingBytes() {\n\t\treturn this.dataView.byteLength - this.offset;\n\t}\n\treset(offset = 0) {\n\t\tthis.offset = offset;\n\t}\n\tskip(bytes) {\n\t\tthis.offset += bytes;\n\t}\n\talign(bytes) {\n\t\tthis.offset = this.offset + bytes - 1 & ~(bytes - 1);\n\t}\n\t_inc(amount) {\n\t\tthis.offset += amount;\n\t\treturn this.offset - amount;\n\t}\n\treadChar() {\n\t\treturn String.fromCharCode(this.dataView.getUint8(this.offset++));\n\t}\n\treadChars(numChars) {\n\t\tlet result = '';\n\t\tfor (let i = 0; i < numChars; ++i) {\n\t\t\tresult += this.readChar();\n\t\t}\n\t\treturn result;\n\t}\n\treadU8() {\n\t\treturn this.dataView.getUint8(this.offset++);\n\t}\n\treadU16() {\n\t\treturn this.dataView.getUint16(this._inc(2), true);\n\t}\n\treadU32() {\n\t\treturn this.dataView.getUint32(this._inc(4), true);\n\t}\n\treadU64() {\n\t\treturn this.readU32() + 2 ** 32 * this.readU32();\n\t}\n\treadU32be() {\n\t\treturn this.dataView.getUint32(this._inc(4), false);\n\t}\n\treadArray(result) {\n\t\tfor (let i = 0; i < result.length; ++i) {\n\t\t\tresult[i] = this.readU8();\n\t\t}\n\t}\n\treadLine() {\n\t\tconst view = this.dataView;\n\t\tlet result = '';\n\t\twhile (true) {\n\t\t\tif (this.offset >= view.byteLength) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst c = String.fromCharCode(this.readU8());\n\t\t\tif (c === '\\n') {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tresult += c;\n\t\t}\n\t\treturn result;\n\t}\n}\n\nexport { ReadStream };\n", "import { EventHandler } from './event-handler.js';\n\nclass Tags extends EventHandler {\n\tconstructor(parent) {\n\t\tsuper();\n\t\tthis._index = {};\n\t\tthis._list = [];\n\t\tthis._parent = parent;\n\t}\n\tadd(...args) {\n\t\tlet changed = false;\n\t\tconst tags = this._processArguments(args, true);\n\t\tif (!tags.length) return changed;\n\t\tfor (let i = 0; i < tags.length; i++) {\n\t\t\tif (this._index[tags[i]]) continue;\n\t\t\tchanged = true;\n\t\t\tthis._index[tags[i]] = true;\n\t\t\tthis._list.push(tags[i]);\n\t\t\tthis.fire('add', tags[i], this._parent);\n\t\t}\n\t\tif (changed) this.fire('change', this._parent);\n\t\treturn changed;\n\t}\n\tremove(...args) {\n\t\tlet changed = false;\n\t\tif (!this._list.length) return changed;\n\t\tconst tags = this._processArguments(args, true);\n\t\tif (!tags.length) return changed;\n\t\tfor (let i = 0; i < tags.length; i++) {\n\t\t\tif (!this._index[tags[i]]) continue;\n\t\t\tchanged = true;\n\t\t\tdelete this._index[tags[i]];\n\t\t\tthis._list.splice(this._list.indexOf(tags[i]), 1);\n\t\t\tthis.fire('remove', tags[i], this._parent);\n\t\t}\n\t\tif (changed) this.fire('change', this._parent);\n\t\treturn changed;\n\t}\n\tclear() {\n\t\tif (!this._list.length) return;\n\t\tconst tags = this._list.slice(0);\n\t\tthis._list = [];\n\t\tthis._index = {};\n\t\tfor (let i = 0; i < tags.length; i++) this.fire('remove', tags[i], this._parent);\n\t\tthis.fire('change', this._parent);\n\t}\n\thas(...query) {\n\t\tif (!this._list.length) return false;\n\t\treturn this._has(this._processArguments(query));\n\t}\n\t_has(tags) {\n\t\tif (!this._list.length || !tags.length) return false;\n\t\tfor (let i = 0; i < tags.length; i++) {\n\t\t\tif (tags[i].length === 1) {\n\t\t\t\tif (this._index[tags[i][0]]) return true;\n\t\t\t} else {\n\t\t\t\tlet multiple = true;\n\t\t\t\tfor (let t = 0; t < tags[i].length; t++) {\n\t\t\t\t\tif (this._index[tags[i][t]]) continue;\n\t\t\t\t\tmultiple = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (multiple) return true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tlist() {\n\t\treturn this._list.slice(0);\n\t}\n\t_processArguments(args, flat) {\n\t\tconst tags = [];\n\t\tlet tmp = [];\n\t\tif (!args || !args.length) return tags;\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tif (args[i] instanceof Array) {\n\t\t\t\tif (!flat) tmp = [];\n\t\t\t\tfor (let t = 0; t < args[i].length; t++) {\n\t\t\t\t\tif (typeof args[i][t] !== 'string') continue;\n\t\t\t\t\tif (flat) {\n\t\t\t\t\t\ttags.push(args[i][t]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttmp.push(args[i][t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!flat && tmp.length) tags.push(tmp);\n\t\t\t} else if (typeof args[i] === 'string') {\n\t\t\t\tif (flat) {\n\t\t\t\t\ttags.push(args[i]);\n\t\t\t\t} else {\n\t\t\t\t\ttags.push([args[i]]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn tags;\n\t}\n\tget size() {\n\t\treturn this._list.length;\n\t}\n}\nTags.EVENT_ADD = 'add';\nTags.EVENT_REMOVE = 'remove';\nTags.EVENT_CHANGE = 'change';\n\nexport { Tags };\n", "const now = typeof window !== 'undefined' && window.performance && window.performance.now ? performance.now.bind(performance) : Date.now;\n\nexport { now };\n", "function createURI(options) {\n\tlet s = '';\n\tif ((options.authority || options.scheme) && (options.host || options.hostpath)) {\n\t\tthrow new Error('Can\\'t have \\'scheme\\' or \\'authority\\' and \\'host\\' or \\'hostpath\\' option');\n\t}\n\tif (options.host && options.hostpath) {\n\t\tthrow new Error('Can\\'t have \\'host\\' and \\'hostpath\\' option');\n\t}\n\tif (options.path && options.hostpath) {\n\t\tthrow new Error('Can\\'t have \\'path\\' and \\'hostpath\\' option');\n\t}\n\tif (options.scheme) {\n\t\ts += options.scheme + ':';\n\t}\n\tif (options.authority) {\n\t\ts += '//' + options.authority;\n\t}\n\tif (options.host) {\n\t\ts += options.host;\n\t}\n\tif (options.path) {\n\t\ts += options.path;\n\t}\n\tif (options.hostpath) {\n\t\ts += options.hostpath;\n\t}\n\tif (options.query) {\n\t\ts += '?' + options.query;\n\t}\n\tif (options.fragment) {\n\t\ts += '#' + options.fragment;\n\t}\n\treturn s;\n}\nconst re = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\nclass URI {\n\tconstructor(uri) {\n\t\tthis.scheme = void 0;\n\t\tthis.authority = void 0;\n\t\tthis.path = void 0;\n\t\tthis.query = void 0;\n\t\tthis.fragment = void 0;\n\t\tconst result = uri.match(re);\n\t\tthis.scheme = result[2];\n\t\tthis.authority = result[4];\n\t\tthis.path = result[5];\n\t\tthis.query = result[7];\n\t\tthis.fragment = result[9];\n\t}\n\ttoString() {\n\t\tlet s = '';\n\t\tif (this.scheme) {\n\t\t\ts += this.scheme + ':';\n\t\t}\n\t\tif (this.authority) {\n\t\t\ts += '//' + this.authority;\n\t\t}\n\t\ts += this.path;\n\t\tif (this.query) {\n\t\t\ts += '?' + this.query;\n\t\t}\n\t\tif (this.fragment) {\n\t\t\ts += '#' + this.fragment;\n\t\t}\n\t\treturn s;\n\t}\n\tgetQuery() {\n\t\tconst result = {};\n\t\tif (this.query) {\n\t\t\tconst queryParams = decodeURIComponent(this.query).split('&');\n\t\t\tfor (const queryParam of queryParams) {\n\t\t\t\tconst pair = queryParam.split('=');\n\t\t\t\tresult[pair[0]] = pair[1];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\tsetQuery(params) {\n\t\tlet q = '';\n\t\tfor (const key in params) {\n\t\t\tif (params.hasOwnProperty(key)) {\n\t\t\t\tif (q !== '') {\n\t\t\t\t\tq += '&';\n\t\t\t\t}\n\t\t\t\tq += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);\n\t\t\t}\n\t\t}\n\t\tthis.query = q;\n\t}\n}\n\nexport { URI, createURI };\n", "class Tracing {\n\tstatic set(channel, enabled = true) {}\n\tstatic get(channel) {\n\t\treturn Tracing._traceChannels.has(channel);\n\t}\n}\nTracing._traceChannels = new Set();\nTracing.stack = false;\n\nexport { Tracing };\n", "const math = {\n\tDEG_TO_RAD: Math.PI / 180,\n\tRAD_TO_DEG: 180 / Math.PI,\n\tclamp(value, min, max) {\n\t\tif (value >= max) return max;\n\t\tif (value <= min) return min;\n\t\treturn value;\n\t},\n\tintToBytes24(i) {\n\t\tconst r = i >> 16 & 0xff;\n\t\tconst g = i >> 8 & 0xff;\n\t\tconst b = i & 0xff;\n\t\treturn [r, g, b];\n\t},\n\tintToBytes32(i) {\n\t\tconst r = i >> 24 & 0xff;\n\t\tconst g = i >> 16 & 0xff;\n\t\tconst b = i >> 8 & 0xff;\n\t\tconst a = i & 0xff;\n\t\treturn [r, g, b, a];\n\t},\n\tbytesToInt24(r, g, b) {\n\t\tif (r.length) {\n\t\t\tb = r[2];\n\t\t\tg = r[1];\n\t\t\tr = r[0];\n\t\t}\n\t\treturn r << 16 | g << 8 | b;\n\t},\n\tbytesToInt32(r, g, b, a) {\n\t\tif (r.length) {\n\t\t\ta = r[3];\n\t\t\tb = r[2];\n\t\t\tg = r[1];\n\t\t\tr = r[0];\n\t\t}\n\t\treturn (r << 24 | g << 16 | b << 8 | a) >>> 0;\n\t},\n\tlerp(a, b, alpha) {\n\t\treturn a + (b - a) * math.clamp(alpha, 0, 1);\n\t},\n\tlerpAngle(a, b, alpha) {\n\t\tif (b - a > 180) {\n\t\t\tb -= 360;\n\t\t}\n\t\tif (b - a < -180) {\n\t\t\tb += 360;\n\t\t}\n\t\treturn math.lerp(a, b, math.clamp(alpha, 0, 1));\n\t},\n\tpowerOfTwo(x) {\n\t\treturn x !== 0 && !(x & x - 1);\n\t},\n\tnextPowerOfTwo(val) {\n\t\tval--;\n\t\tval |= val >> 1;\n\t\tval |= val >> 2;\n\t\tval |= val >> 4;\n\t\tval |= val >> 8;\n\t\tval |= val >> 16;\n\t\tval++;\n\t\treturn val;\n\t},\n\tnearestPowerOfTwo(val) {\n\t\treturn Math.pow(2, Math.round(Math.log(val) / Math.log(2)));\n\t},\n\trandom(min, max) {\n\t\tconst diff = max - min;\n\t\treturn Math.random() * diff + min;\n\t},\n\tsmoothstep(min, max, x) {\n\t\tif (x <= min) return 0;\n\t\tif (x >= max) return 1;\n\t\tx = (x - min) / (max - min);\n\t\treturn x * x * (3 - 2 * x);\n\t},\n\tsmootherstep(min, max, x) {\n\t\tif (x <= min) return 0;\n\t\tif (x >= max) return 1;\n\t\tx = (x - min) / (max - min);\n\t\treturn x * x * x * (x * (x * 6 - 15) + 10);\n\t},\n\troundUp(numToRound, multiple) {\n\t\tif (multiple === 0) return numToRound;\n\t\treturn Math.ceil(numToRound / multiple) * multiple;\n\t},\n\tbetween(num, a, b, inclusive) {\n\t\tconst min = Math.min(a, b);\n\t\tconst max = Math.max(a, b);\n\t\treturn inclusive ? num >= min && num <= max : num > min && num < max;\n\t}\n};\n\nexport { math };\n", "import { math } from './math.js';\n\nvar _Color;\nclass Color {\n\tconstructor(r = 0, g = 0, b = 0, a = 1) {\n\t\tthis.r = void 0;\n\t\tthis.g = void 0;\n\t\tthis.b = void 0;\n\t\tthis.a = void 0;\n\t\tconst length = r.length;\n\t\tif (length === 3 || length === 4) {\n\t\t\tthis.r = r[0];\n\t\t\tthis.g = r[1];\n\t\t\tthis.b = r[2];\n\t\t\tthis.a = r[3] !== undefined ? r[3] : 1;\n\t\t} else {\n\t\t\tthis.r = r;\n\t\t\tthis.g = g;\n\t\t\tthis.b = b;\n\t\t\tthis.a = a;\n\t\t}\n\t}\n\tclone() {\n\t\tconst cstr = this.constructor;\n\t\treturn new cstr(this.r, this.g, this.b, this.a);\n\t}\n\tcopy(rhs) {\n\t\tthis.r = rhs.r;\n\t\tthis.g = rhs.g;\n\t\tthis.b = rhs.b;\n\t\tthis.a = rhs.a;\n\t\treturn this;\n\t}\n\tequals(rhs) {\n\t\treturn this.r === rhs.r && this.g === rhs.g && this.b === rhs.b && this.a === rhs.a;\n\t}\n\tset(r, g, b, a = 1) {\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\t\tthis.a = a;\n\t\treturn this;\n\t}\n\tlerp(lhs, rhs, alpha) {\n\t\tthis.r = lhs.r + alpha * (rhs.r - lhs.r);\n\t\tthis.g = lhs.g + alpha * (rhs.g - lhs.g);\n\t\tthis.b = lhs.b + alpha * (rhs.b - lhs.b);\n\t\tthis.a = lhs.a + alpha * (rhs.a - lhs.a);\n\t\treturn this;\n\t}\n\tfromString(hex) {\n\t\tconst i = parseInt(hex.replace('#', '0x'), 16);\n\t\tlet bytes;\n\t\tif (hex.length > 7) {\n\t\t\tbytes = math.intToBytes32(i);\n\t\t} else {\n\t\t\tbytes = math.intToBytes24(i);\n\t\t\tbytes[3] = 255;\n\t\t}\n\t\tthis.set(bytes[0] / 255, bytes[1] / 255, bytes[2] / 255, bytes[3] / 255);\n\t\treturn this;\n\t}\n\ttoString(alpha) {\n\t\tlet s = '#' + ((1 << 24) + (Math.round(this.r * 255) << 16) + (Math.round(this.g * 255) << 8) + Math.round(this.b * 255)).toString(16).slice(1);\n\t\tif (alpha === true) {\n\t\t\tconst a = Math.round(this.a * 255).toString(16);\n\t\t\tif (this.a < 16 / 255) {\n\t\t\t\ts += '0' + a;\n\t\t\t} else {\n\t\t\t\ts += a;\n\t\t\t}\n\t\t}\n\t\treturn s;\n\t}\n}\n_Color = Color;\nColor.BLACK = Object.freeze(new _Color(0, 0, 0, 1));\nColor.BLUE = Object.freeze(new _Color(0, 0, 1, 1));\nColor.CYAN = Object.freeze(new _Color(0, 1, 1, 1));\nColor.GRAY = Object.freeze(new _Color(0.5, 0.5, 0.5, 1));\nColor.GREEN = Object.freeze(new _Color(0, 1, 0, 1));\nColor.MAGENTA = Object.freeze(new _Color(1, 0, 1, 1));\nColor.RED = Object.freeze(new _Color(1, 0, 0, 1));\nColor.WHITE = Object.freeze(new _Color(1, 1, 1, 1));\nColor.YELLOW = Object.freeze(new _Color(1, 1, 0, 1));\n\nexport { Color };\n", "import { math } from './math.js';\n\nconst oneDiv255 = 1 / 255;\nconst floatView = new Float32Array(1);\nconst int32View = new Int32Array(floatView.buffer);\nclass FloatPacking {\n\tstatic float2Half(value) {\n\t\tfloatView[0] = value;\n\t\tconst x = int32View[0];\n\t\tlet bits = x >> 16 & 0x8000;\n\t\tlet m = x >> 12 & 0x07ff;\n\t\tconst e = x >> 23 & 0xff;\n\t\tif (e < 103) {\n\t\t\treturn bits;\n\t\t}\n\t\tif (e > 142) {\n\t\t\tbits |= 0x7c00;\n\t\t\tbits |= (e === 255 ? 0 : 1) && x & 0x007fffff;\n\t\t\treturn bits;\n\t\t}\n\t\tif (e < 113) {\n\t\t\tm |= 0x0800;\n\t\t\tbits |= (m >> 114 - e) + (m >> 113 - e & 1);\n\t\t\treturn bits;\n\t\t}\n\t\tbits |= e - 112 << 10 | m >> 1;\n\t\tbits += m & 1;\n\t\treturn bits;\n\t}\n\tstatic float2Bytes(value, array, offset, numBytes) {\n\t\tconst enc1 = 255.0 * value % 1;\n\t\tarray[offset + 0] = Math.round((value % 1 - oneDiv255 * enc1) * 255);\n\t\tif (numBytes > 1) {\n\t\t\tconst enc2 = 65025.0 * value % 1;\n\t\t\tarray[offset + 1] = Math.round((enc1 - oneDiv255 * enc2) * 255);\n\t\t\tif (numBytes > 2) {\n\t\t\t\tconst enc3 = 16581375.0 * value % 1;\n\t\t\t\tarray[offset + 2] = Math.round((enc2 - oneDiv255 * enc3) * 255);\n\t\t\t\tif (numBytes > 3) {\n\t\t\t\t\tarray[offset + 3] = Math.round(enc3 * 255);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tstatic float2BytesRange(value, array, offset, min, max, numBytes) {\n\t\tvalue = math.clamp((value - min) / (max - min), 0, 1);\n\t\tFloatPacking.float2Bytes(value, array, offset, numBytes);\n\t}\n\tstatic float2MantissaExponent(value, array, offset, numBytes) {\n\t\tconst exponent = Math.floor(Math.log2(Math.abs(value))) + 1;\n\t\tvalue /= Math.pow(2, exponent);\n\t\tFloatPacking.float2BytesRange(value, array, offset, -1, 1, numBytes - 1);\n\t\tarray[offset + numBytes - 1] = Math.round(exponent + 127);\n\t}\n}\n\nexport { FloatPacking };\n", "var _Vec;\nclass Vec3 {\n\tconstructor(x = 0, y = 0, z = 0) {\n\t\tthis.x = void 0;\n\t\tthis.y = void 0;\n\t\tthis.z = void 0;\n\t\tif (x.length === 3) {\n\t\t\tthis.x = x[0];\n\t\t\tthis.y = x[1];\n\t\t\tthis.z = x[2];\n\t\t} else {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t}\n\t}\n\tadd(rhs) {\n\t\tthis.x += rhs.x;\n\t\tthis.y += rhs.y;\n\t\tthis.z += rhs.z;\n\t\treturn this;\n\t}\n\tadd2(lhs, rhs) {\n\t\tthis.x = lhs.x + rhs.x;\n\t\tthis.y = lhs.y + rhs.y;\n\t\tthis.z = lhs.z + rhs.z;\n\t\treturn this;\n\t}\n\taddScalar(scalar) {\n\t\tthis.x += scalar;\n\t\tthis.y += scalar;\n\t\tthis.z += scalar;\n\t\treturn this;\n\t}\n\taddScaled(rhs, scalar) {\n\t\tthis.x += rhs.x * scalar;\n\t\tthis.y += rhs.y * scalar;\n\t\tthis.z += rhs.z * scalar;\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst cstr = this.constructor;\n\t\treturn new cstr(this.x, this.y, this.z);\n\t}\n\tcopy(rhs) {\n\t\tthis.x = rhs.x;\n\t\tthis.y = rhs.y;\n\t\tthis.z = rhs.z;\n\t\treturn this;\n\t}\n\tcross(lhs, rhs) {\n\t\tconst lx = lhs.x;\n\t\tconst ly = lhs.y;\n\t\tconst lz = lhs.z;\n\t\tconst rx = rhs.x;\n\t\tconst ry = rhs.y;\n\t\tconst rz = rhs.z;\n\t\tthis.x = ly * rz - ry * lz;\n\t\tthis.y = lz * rx - rz * lx;\n\t\tthis.z = lx * ry - rx * ly;\n\t\treturn this;\n\t}\n\tdistance(rhs) {\n\t\tconst x = this.x - rhs.x;\n\t\tconst y = this.y - rhs.y;\n\t\tconst z = this.z - rhs.z;\n\t\treturn Math.sqrt(x * x + y * y + z * z);\n\t}\n\tdiv(rhs) {\n\t\tthis.x /= rhs.x;\n\t\tthis.y /= rhs.y;\n\t\tthis.z /= rhs.z;\n\t\treturn this;\n\t}\n\tdiv2(lhs, rhs) {\n\t\tthis.x = lhs.x / rhs.x;\n\t\tthis.y = lhs.y / rhs.y;\n\t\tthis.z = lhs.z / rhs.z;\n\t\treturn this;\n\t}\n\tdivScalar(scalar) {\n\t\tthis.x /= scalar;\n\t\tthis.y /= scalar;\n\t\tthis.z /= scalar;\n\t\treturn this;\n\t}\n\tdot(rhs) {\n\t\treturn this.x * rhs.x + this.y * rhs.y + this.z * rhs.z;\n\t}\n\tequals(rhs) {\n\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z;\n\t}\n\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon;\n\t}\n\tlength() {\n\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n\t}\n\tlengthSq() {\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\t}\n\tlerp(lhs, rhs, alpha) {\n\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\tthis.z = lhs.z + alpha * (rhs.z - lhs.z);\n\t\treturn this;\n\t}\n\tmul(rhs) {\n\t\tthis.x *= rhs.x;\n\t\tthis.y *= rhs.y;\n\t\tthis.z *= rhs.z;\n\t\treturn this;\n\t}\n\tmul2(lhs, rhs) {\n\t\tthis.x = lhs.x * rhs.x;\n\t\tthis.y = lhs.y * rhs.y;\n\t\tthis.z = lhs.z * rhs.z;\n\t\treturn this;\n\t}\n\tmulScalar(scalar) {\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\treturn this;\n\t}\n\tnormalize(src = this) {\n\t\tconst lengthSq = src.x * src.x + src.y * src.y + src.z * src.z;\n\t\tif (lengthSq > 0) {\n\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\tthis.x = src.x * invLength;\n\t\t\tthis.y = src.y * invLength;\n\t\t\tthis.z = src.z * invLength;\n\t\t}\n\t\treturn this;\n\t}\n\tfloor(src = this) {\n\t\tthis.x = Math.floor(src.x);\n\t\tthis.y = Math.floor(src.y);\n\t\tthis.z = Math.floor(src.z);\n\t\treturn this;\n\t}\n\tceil(src = this) {\n\t\tthis.x = Math.ceil(src.x);\n\t\tthis.y = Math.ceil(src.y);\n\t\tthis.z = Math.ceil(src.z);\n\t\treturn this;\n\t}\n\tround(src = this) {\n\t\tthis.x = Math.round(src.x);\n\t\tthis.y = Math.round(src.y);\n\t\tthis.z = Math.round(src.z);\n\t\treturn this;\n\t}\n\tmin(rhs) {\n\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\tif (rhs.z < this.z) this.z = rhs.z;\n\t\treturn this;\n\t}\n\tmax(rhs) {\n\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\tif (rhs.z > this.z) this.z = rhs.z;\n\t\treturn this;\n\t}\n\tproject(rhs) {\n\t\tconst a_dot_b = this.x * rhs.x + this.y * rhs.y + this.z * rhs.z;\n\t\tconst b_dot_b = rhs.x * rhs.x + rhs.y * rhs.y + rhs.z * rhs.z;\n\t\tconst s = a_dot_b / b_dot_b;\n\t\tthis.x = rhs.x * s;\n\t\tthis.y = rhs.y * s;\n\t\tthis.z = rhs.z * s;\n\t\treturn this;\n\t}\n\tset(x, y, z) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\treturn this;\n\t}\n\tsub(rhs) {\n\t\tthis.x -= rhs.x;\n\t\tthis.y -= rhs.y;\n\t\tthis.z -= rhs.z;\n\t\treturn this;\n\t}\n\tsub2(lhs, rhs) {\n\t\tthis.x = lhs.x - rhs.x;\n\t\tthis.y = lhs.y - rhs.y;\n\t\tthis.z = lhs.z - rhs.z;\n\t\treturn this;\n\t}\n\tsubScalar(scalar) {\n\t\tthis.x -= scalar;\n\t\tthis.y -= scalar;\n\t\tthis.z -= scalar;\n\t\treturn this;\n\t}\n\ttoString() {\n\t\treturn `[${this.x}, ${this.y}, ${this.z}]`;\n\t}\n}\n_Vec = Vec3;\nVec3.ZERO = Object.freeze(new _Vec(0, 0, 0));\nVec3.ONE = Object.freeze(new _Vec(1, 1, 1));\nVec3.UP = Object.freeze(new _Vec(0, 1, 0));\nVec3.DOWN = Object.freeze(new _Vec(0, -1, 0));\nVec3.RIGHT = Object.freeze(new _Vec(1, 0, 0));\nVec3.LEFT = Object.freeze(new _Vec(-1, 0, 0));\nVec3.FORWARD = Object.freeze(new _Vec(0, 0, -1));\nVec3.BACK = Object.freeze(new _Vec(0, 0, 1));\n\nexport { Vec3 };\n", "import { Vec3 } from './vec3.js';\n\nvar _Mat;\nclass Mat3 {\n\tconstructor() {\n\t\tthis.data = new Float32Array(9);\n\t\tthis.data[0] = this.data[4] = this.data[8] = 1;\n\t}\n\tclone() {\n\t\tconst cstr = this.constructor;\n\t\treturn new cstr().copy(this);\n\t}\n\tcopy(rhs) {\n\t\tconst src = rhs.data;\n\t\tconst dst = this.data;\n\t\tdst[0] = src[0];\n\t\tdst[1] = src[1];\n\t\tdst[2] = src[2];\n\t\tdst[3] = src[3];\n\t\tdst[4] = src[4];\n\t\tdst[5] = src[5];\n\t\tdst[6] = src[6];\n\t\tdst[7] = src[7];\n\t\tdst[8] = src[8];\n\t\treturn this;\n\t}\n\tset(src) {\n\t\tconst dst = this.data;\n\t\tdst[0] = src[0];\n\t\tdst[1] = src[1];\n\t\tdst[2] = src[2];\n\t\tdst[3] = src[3];\n\t\tdst[4] = src[4];\n\t\tdst[5] = src[5];\n\t\tdst[6] = src[6];\n\t\tdst[7] = src[7];\n\t\tdst[8] = src[8];\n\t\treturn this;\n\t}\n\tgetX(x = new Vec3()) {\n\t\treturn x.set(this.data[0], this.data[1], this.data[2]);\n\t}\n\tgetY(y = new Vec3()) {\n\t\treturn y.set(this.data[3], this.data[4], this.data[5]);\n\t}\n\tgetZ(z = new Vec3()) {\n\t\treturn z.set(this.data[6], this.data[7], this.data[8]);\n\t}\n\tequals(rhs) {\n\t\tconst l = this.data;\n\t\tconst r = rhs.data;\n\t\treturn l[0] === r[0] && l[1] === r[1] && l[2] === r[2] && l[3] === r[3] && l[4] === r[4] && l[5] === r[5] && l[6] === r[6] && l[7] === r[7] && l[8] === r[8];\n\t}\n\tisIdentity() {\n\t\tconst m = this.data;\n\t\treturn m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 0 && m[4] === 1 && m[5] === 0 && m[6] === 0 && m[7] === 0 && m[8] === 1;\n\t}\n\tsetIdentity() {\n\t\tconst m = this.data;\n\t\tm[0] = 1;\n\t\tm[1] = 0;\n\t\tm[2] = 0;\n\t\tm[3] = 0;\n\t\tm[4] = 1;\n\t\tm[5] = 0;\n\t\tm[6] = 0;\n\t\tm[7] = 0;\n\t\tm[8] = 1;\n\t\treturn this;\n\t}\n\ttoString() {\n\t\treturn '[' + this.data.join(', ') + ']';\n\t}\n\ttranspose(src = this) {\n\t\tconst s = src.data;\n\t\tconst t = this.data;\n\t\tif (s === t) {\n\t\t\tlet tmp;\n\t\t\ttmp = s[1];\n\t\t\tt[1] = s[3];\n\t\t\tt[3] = tmp;\n\t\t\ttmp = s[2];\n\t\t\tt[2] = s[6];\n\t\t\tt[6] = tmp;\n\t\t\ttmp = s[5];\n\t\t\tt[5] = s[7];\n\t\t\tt[7] = tmp;\n\t\t} else {\n\t\t\tt[0] = s[0];\n\t\t\tt[1] = s[3];\n\t\t\tt[2] = s[6];\n\t\t\tt[3] = s[1];\n\t\t\tt[4] = s[4];\n\t\t\tt[5] = s[7];\n\t\t\tt[6] = s[2];\n\t\t\tt[7] = s[5];\n\t\t\tt[8] = s[8];\n\t\t}\n\t\treturn this;\n\t}\n\tsetFromMat4(m) {\n\t\tconst src = m.data;\n\t\tconst dst = this.data;\n\t\tdst[0] = src[0];\n\t\tdst[1] = src[1];\n\t\tdst[2] = src[2];\n\t\tdst[3] = src[4];\n\t\tdst[4] = src[5];\n\t\tdst[5] = src[6];\n\t\tdst[6] = src[8];\n\t\tdst[7] = src[9];\n\t\tdst[8] = src[10];\n\t\treturn this;\n\t}\n\tsetFromQuat(r) {\n\t\tconst qx = r.x;\n\t\tconst qy = r.y;\n\t\tconst qz = r.z;\n\t\tconst qw = r.w;\n\t\tconst x2 = qx + qx;\n\t\tconst y2 = qy + qy;\n\t\tconst z2 = qz + qz;\n\t\tconst xx = qx * x2;\n\t\tconst xy = qx * y2;\n\t\tconst xz = qx * z2;\n\t\tconst yy = qy * y2;\n\t\tconst yz = qy * z2;\n\t\tconst zz = qz * z2;\n\t\tconst wx = qw * x2;\n\t\tconst wy = qw * y2;\n\t\tconst wz = qw * z2;\n\t\tconst m = this.data;\n\t\tm[0] = 1 - (yy + zz);\n\t\tm[1] = xy + wz;\n\t\tm[2] = xz - wy;\n\t\tm[3] = xy - wz;\n\t\tm[4] = 1 - (xx + zz);\n\t\tm[5] = yz + wx;\n\t\tm[6] = xz + wy;\n\t\tm[7] = yz - wx;\n\t\tm[8] = 1 - (xx + yy);\n\t\treturn this;\n\t}\n\tinvertMat4(src) {\n\t\tconst s = src.data;\n\t\tconst a0 = s[0];\n\t\tconst a1 = s[1];\n\t\tconst a2 = s[2];\n\t\tconst a4 = s[4];\n\t\tconst a5 = s[5];\n\t\tconst a6 = s[6];\n\t\tconst a8 = s[8];\n\t\tconst a9 = s[9];\n\t\tconst a10 = s[10];\n\t\tconst b11 = a10 * a5 - a6 * a9;\n\t\tconst b21 = -a10 * a1 + a2 * a9;\n\t\tconst b31 = a6 * a1 - a2 * a5;\n\t\tconst b12 = -a10 * a4 + a6 * a8;\n\t\tconst b22 = a10 * a0 - a2 * a8;\n\t\tconst b32 = -a6 * a0 + a2 * a4;\n\t\tconst b13 = a9 * a4 - a5 * a8;\n\t\tconst b23 = -a9 * a0 + a1 * a8;\n\t\tconst b33 = a5 * a0 - a1 * a4;\n\t\tconst det = a0 * b11 + a1 * b12 + a2 * b13;\n\t\tif (det === 0) {\n\t\t\tthis.setIdentity();\n\t\t} else {\n\t\t\tconst invDet = 1 / det;\n\t\t\tconst t = this.data;\n\t\t\tt[0] = b11 * invDet;\n\t\t\tt[1] = b21 * invDet;\n\t\t\tt[2] = b31 * invDet;\n\t\t\tt[3] = b12 * invDet;\n\t\t\tt[4] = b22 * invDet;\n\t\t\tt[5] = b32 * invDet;\n\t\t\tt[6] = b13 * invDet;\n\t\t\tt[7] = b23 * invDet;\n\t\t\tt[8] = b33 * invDet;\n\t\t}\n\t\treturn this;\n\t}\n\ttransformVector(vec, res = new Vec3()) {\n\t\tconst m = this.data;\n\t\tconst {\n\t\t\tx,\n\t\t\ty,\n\t\t\tz\n\t\t} = vec;\n\t\tres.x = x * m[0] + y * m[3] + z * m[6];\n\t\tres.y = x * m[1] + y * m[4] + z * m[7];\n\t\tres.z = x * m[2] + y * m[5] + z * m[8];\n\t\treturn res;\n\t}\n}\n_Mat = Mat3;\nMat3.IDENTITY = Object.freeze(new _Mat());\nMat3.ZERO = Object.freeze(new _Mat().set([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n\nexport { Mat3 };\n", "import { math } from './math.js';\n\nvar _Vec;\nclass Vec2 {\n\tconstructor(x = 0, y = 0) {\n\t\tthis.x = void 0;\n\t\tthis.y = void 0;\n\t\tif (x.length === 2) {\n\t\t\tthis.x = x[0];\n\t\t\tthis.y = x[1];\n\t\t} else {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t}\n\t}\n\tadd(rhs) {\n\t\tthis.x += rhs.x;\n\t\tthis.y += rhs.y;\n\t\treturn this;\n\t}\n\tadd2(lhs, rhs) {\n\t\tthis.x = lhs.x + rhs.x;\n\t\tthis.y = lhs.y + rhs.y;\n\t\treturn this;\n\t}\n\taddScalar(scalar) {\n\t\tthis.x += scalar;\n\t\tthis.y += scalar;\n\t\treturn this;\n\t}\n\taddScaled(rhs, scalar) {\n\t\tthis.x += rhs.x * scalar;\n\t\tthis.y += rhs.y * scalar;\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst cstr = this.constructor;\n\t\treturn new cstr(this.x, this.y);\n\t}\n\tcopy(rhs) {\n\t\tthis.x = rhs.x;\n\t\tthis.y = rhs.y;\n\t\treturn this;\n\t}\n\tcross(rhs) {\n\t\treturn this.x * rhs.y - this.y * rhs.x;\n\t}\n\tdistance(rhs) {\n\t\tconst x = this.x - rhs.x;\n\t\tconst y = this.y - rhs.y;\n\t\treturn Math.sqrt(x * x + y * y);\n\t}\n\tdiv(rhs) {\n\t\tthis.x /= rhs.x;\n\t\tthis.y /= rhs.y;\n\t\treturn this;\n\t}\n\tdiv2(lhs, rhs) {\n\t\tthis.x = lhs.x / rhs.x;\n\t\tthis.y = lhs.y / rhs.y;\n\t\treturn this;\n\t}\n\tdivScalar(scalar) {\n\t\tthis.x /= scalar;\n\t\tthis.y /= scalar;\n\t\treturn this;\n\t}\n\tdot(rhs) {\n\t\treturn this.x * rhs.x + this.y * rhs.y;\n\t}\n\tequals(rhs) {\n\t\treturn this.x === rhs.x && this.y === rhs.y;\n\t}\n\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon;\n\t}\n\tlength() {\n\t\treturn Math.sqrt(this.x * this.x + this.y * this.y);\n\t}\n\tlengthSq() {\n\t\treturn this.x * this.x + this.y * this.y;\n\t}\n\tlerp(lhs, rhs, alpha) {\n\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\treturn this;\n\t}\n\tmul(rhs) {\n\t\tthis.x *= rhs.x;\n\t\tthis.y *= rhs.y;\n\t\treturn this;\n\t}\n\tmul2(lhs, rhs) {\n\t\tthis.x = lhs.x * rhs.x;\n\t\tthis.y = lhs.y * rhs.y;\n\t\treturn this;\n\t}\n\tmulScalar(scalar) {\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\treturn this;\n\t}\n\tnormalize(src = this) {\n\t\tconst lengthSq = src.x * src.x + src.y * src.y;\n\t\tif (lengthSq > 0) {\n\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\tthis.x = src.x * invLength;\n\t\t\tthis.y = src.y * invLength;\n\t\t}\n\t\treturn this;\n\t}\n\trotate(degrees) {\n\t\tconst angle = Math.atan2(this.x, this.y) + degrees * math.DEG_TO_RAD;\n\t\tconst len = Math.sqrt(this.x * this.x + this.y * this.y);\n\t\tthis.x = Math.sin(angle) * len;\n\t\tthis.y = Math.cos(angle) * len;\n\t\treturn this;\n\t}\n\tangle() {\n\t\treturn Math.atan2(this.x, this.y) * math.RAD_TO_DEG;\n\t}\n\tangleTo(rhs) {\n\t\treturn Math.atan2(this.x * rhs.y + this.y * rhs.x, this.x * rhs.x + this.y * rhs.y) * math.RAD_TO_DEG;\n\t}\n\tfloor(src = this) {\n\t\tthis.x = Math.floor(src.x);\n\t\tthis.y = Math.floor(src.y);\n\t\treturn this;\n\t}\n\tceil(src = this) {\n\t\tthis.x = Math.ceil(src.x);\n\t\tthis.y = Math.ceil(src.y);\n\t\treturn this;\n\t}\n\tround(src = this) {\n\t\tthis.x = Math.round(src.x);\n\t\tthis.y = Math.round(src.y);\n\t\treturn this;\n\t}\n\tmin(rhs) {\n\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\treturn this;\n\t}\n\tmax(rhs) {\n\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\treturn this;\n\t}\n\tset(x, y) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\treturn this;\n\t}\n\tsub(rhs) {\n\t\tthis.x -= rhs.x;\n\t\tthis.y -= rhs.y;\n\t\treturn this;\n\t}\n\tsub2(lhs, rhs) {\n\t\tthis.x = lhs.x - rhs.x;\n\t\tthis.y = lhs.y - rhs.y;\n\t\treturn this;\n\t}\n\tsubScalar(scalar) {\n\t\tthis.x -= scalar;\n\t\tthis.y -= scalar;\n\t\treturn this;\n\t}\n\ttoString() {\n\t\treturn `[${this.x}, ${this.y}]`;\n\t}\n\tstatic angleRad(lhs, rhs) {\n\t\treturn Math.atan2(lhs.x * rhs.y - lhs.y * rhs.x, lhs.x * rhs.x + lhs.y * rhs.y);\n\t}\n}\n_Vec = Vec2;\nVec2.ZERO = Object.freeze(new _Vec(0, 0));\nVec2.ONE = Object.freeze(new _Vec(1, 1));\nVec2.UP = Object.freeze(new _Vec(0, 1));\nVec2.DOWN = Object.freeze(new _Vec(0, -1));\nVec2.RIGHT = Object.freeze(new _Vec(1, 0));\nVec2.LEFT = Object.freeze(new _Vec(-1, 0));\n\nexport { Vec2 };\n", "var _Vec;\nclass Vec4 {\n\tconstructor(x = 0, y = 0, z = 0, w = 0) {\n\t\tthis.x = void 0;\n\t\tthis.y = void 0;\n\t\tthis.z = void 0;\n\t\tthis.w = void 0;\n\t\tif (x.length === 4) {\n\t\t\tthis.x = x[0];\n\t\t\tthis.y = x[1];\n\t\t\tthis.z = x[2];\n\t\t\tthis.w = x[3];\n\t\t} else {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\tthis.w = w;\n\t\t}\n\t}\n\tadd(rhs) {\n\t\tthis.x += rhs.x;\n\t\tthis.y += rhs.y;\n\t\tthis.z += rhs.z;\n\t\tthis.w += rhs.w;\n\t\treturn this;\n\t}\n\tadd2(lhs, rhs) {\n\t\tthis.x = lhs.x + rhs.x;\n\t\tthis.y = lhs.y + rhs.y;\n\t\tthis.z = lhs.z + rhs.z;\n\t\tthis.w = lhs.w + rhs.w;\n\t\treturn this;\n\t}\n\taddScalar(scalar) {\n\t\tthis.x += scalar;\n\t\tthis.y += scalar;\n\t\tthis.z += scalar;\n\t\tthis.w += scalar;\n\t\treturn this;\n\t}\n\taddScaled(rhs, scalar) {\n\t\tthis.x += rhs.x * scalar;\n\t\tthis.y += rhs.y * scalar;\n\t\tthis.z += rhs.z * scalar;\n\t\tthis.w += rhs.w * scalar;\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst cstr = this.constructor;\n\t\treturn new cstr(this.x, this.y, this.z, this.w);\n\t}\n\tcopy(rhs) {\n\t\tthis.x = rhs.x;\n\t\tthis.y = rhs.y;\n\t\tthis.z = rhs.z;\n\t\tthis.w = rhs.w;\n\t\treturn this;\n\t}\n\tdiv(rhs) {\n\t\tthis.x /= rhs.x;\n\t\tthis.y /= rhs.y;\n\t\tthis.z /= rhs.z;\n\t\tthis.w /= rhs.w;\n\t\treturn this;\n\t}\n\tdiv2(lhs, rhs) {\n\t\tthis.x = lhs.x / rhs.x;\n\t\tthis.y = lhs.y / rhs.y;\n\t\tthis.z = lhs.z / rhs.z;\n\t\tthis.w = lhs.w / rhs.w;\n\t\treturn this;\n\t}\n\tdivScalar(scalar) {\n\t\tthis.x /= scalar;\n\t\tthis.y /= scalar;\n\t\tthis.z /= scalar;\n\t\tthis.w /= scalar;\n\t\treturn this;\n\t}\n\tdot(rhs) {\n\t\treturn this.x * rhs.x + this.y * rhs.y + this.z * rhs.z + this.w * rhs.w;\n\t}\n\tequals(rhs) {\n\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z && this.w === rhs.w;\n\t}\n\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon && Math.abs(this.w - rhs.w) < epsilon;\n\t}\n\tlength() {\n\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\t}\n\tlengthSq() {\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\t}\n\tlerp(lhs, rhs, alpha) {\n\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\tthis.z = lhs.z + alpha * (rhs.z - lhs.z);\n\t\tthis.w = lhs.w + alpha * (rhs.w - lhs.w);\n\t\treturn this;\n\t}\n\tmul(rhs) {\n\t\tthis.x *= rhs.x;\n\t\tthis.y *= rhs.y;\n\t\tthis.z *= rhs.z;\n\t\tthis.w *= rhs.w;\n\t\treturn this;\n\t}\n\tmul2(lhs, rhs) {\n\t\tthis.x = lhs.x * rhs.x;\n\t\tthis.y = lhs.y * rhs.y;\n\t\tthis.z = lhs.z * rhs.z;\n\t\tthis.w = lhs.w * rhs.w;\n\t\treturn this;\n\t}\n\tmulScalar(scalar) {\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\t\treturn this;\n\t}\n\tnormalize(src = this) {\n\t\tconst lengthSq = src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w;\n\t\tif (lengthSq > 0) {\n\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\tthis.x = src.x * invLength;\n\t\t\tthis.y = src.y * invLength;\n\t\t\tthis.z = src.z * invLength;\n\t\t\tthis.w = src.w * invLength;\n\t\t}\n\t\treturn this;\n\t}\n\tfloor(src = this) {\n\t\tthis.x = Math.floor(src.x);\n\t\tthis.y = Math.floor(src.y);\n\t\tthis.z = Math.floor(src.z);\n\t\tthis.w = Math.floor(src.w);\n\t\treturn this;\n\t}\n\tceil(src = this) {\n\t\tthis.x = Math.ceil(src.x);\n\t\tthis.y = Math.ceil(src.y);\n\t\tthis.z = Math.ceil(src.z);\n\t\tthis.w = Math.ceil(src.w);\n\t\treturn this;\n\t}\n\tround(src = this) {\n\t\tthis.x = Math.round(src.x);\n\t\tthis.y = Math.round(src.y);\n\t\tthis.z = Math.round(src.z);\n\t\tthis.w = Math.round(src.w);\n\t\treturn this;\n\t}\n\tmin(rhs) {\n\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\tif (rhs.z < this.z) this.z = rhs.z;\n\t\tif (rhs.w < this.w) this.w = rhs.w;\n\t\treturn this;\n\t}\n\tmax(rhs) {\n\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\tif (rhs.z > this.z) this.z = rhs.z;\n\t\tif (rhs.w > this.w) this.w = rhs.w;\n\t\treturn this;\n\t}\n\tset(x, y, z, w) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\t\treturn this;\n\t}\n\tsub(rhs) {\n\t\tthis.x -= rhs.x;\n\t\tthis.y -= rhs.y;\n\t\tthis.z -= rhs.z;\n\t\tthis.w -= rhs.w;\n\t\treturn this;\n\t}\n\tsub2(lhs, rhs) {\n\t\tthis.x = lhs.x - rhs.x;\n\t\tthis.y = lhs.y - rhs.y;\n\t\tthis.z = lhs.z - rhs.z;\n\t\tthis.w = lhs.w - rhs.w;\n\t\treturn this;\n\t}\n\tsubScalar(scalar) {\n\t\tthis.x -= scalar;\n\t\tthis.y -= scalar;\n\t\tthis.z -= scalar;\n\t\tthis.w -= scalar;\n\t\treturn this;\n\t}\n\ttoString() {\n\t\treturn `[${this.x}, ${this.y}, ${this.z}, ${this.w}]`;\n\t}\n}\n_Vec = Vec4;\nVec4.ZERO = Object.freeze(new _Vec(0, 0, 0, 0));\nVec4.ONE = Object.freeze(new _Vec(1, 1, 1, 1));\n\nexport { Vec4 };\n", "import { math } from './math.js';\nimport { Vec2 } from './vec2.js';\nimport { Vec3 } from './vec3.js';\nimport { Vec4 } from './vec4.js';\n\nvar _Mat;\nconst _halfSize = new Vec2();\nconst x = new Vec3();\nconst y = new Vec3();\nconst z = new Vec3();\nconst scale = new Vec3();\nclass Mat4 {\n\tconstructor() {\n\t\tthis.data = new Float32Array(16);\n\t\tthis.data[0] = this.data[5] = this.data[10] = this.data[15] = 1;\n\t}\n\tstatic _getPerspectiveHalfSize(halfSize, fov, aspect, znear, fovIsHorizontal) {\n\t\tif (fovIsHorizontal) {\n\t\t\thalfSize.x = znear * Math.tan(fov * Math.PI / 360);\n\t\t\thalfSize.y = halfSize.x / aspect;\n\t\t} else {\n\t\t\thalfSize.y = znear * Math.tan(fov * Math.PI / 360);\n\t\t\thalfSize.x = halfSize.y * aspect;\n\t\t}\n\t}\n\tadd2(lhs, rhs) {\n\t\tconst a = lhs.data,\n\t\t\tb = rhs.data,\n\t\t\tr = this.data;\n\t\tr[0] = a[0] + b[0];\n\t\tr[1] = a[1] + b[1];\n\t\tr[2] = a[2] + b[2];\n\t\tr[3] = a[3] + b[3];\n\t\tr[4] = a[4] + b[4];\n\t\tr[5] = a[5] + b[5];\n\t\tr[6] = a[6] + b[6];\n\t\tr[7] = a[7] + b[7];\n\t\tr[8] = a[8] + b[8];\n\t\tr[9] = a[9] + b[9];\n\t\tr[10] = a[10] + b[10];\n\t\tr[11] = a[11] + b[11];\n\t\tr[12] = a[12] + b[12];\n\t\tr[13] = a[13] + b[13];\n\t\tr[14] = a[14] + b[14];\n\t\tr[15] = a[15] + b[15];\n\t\treturn this;\n\t}\n\tadd(rhs) {\n\t\treturn this.add2(this, rhs);\n\t}\n\tclone() {\n\t\tconst cstr = this.constructor;\n\t\treturn new cstr().copy(this);\n\t}\n\tcopy(rhs) {\n\t\tconst src = rhs.data,\n\t\t\tdst = this.data;\n\t\tdst[0] = src[0];\n\t\tdst[1] = src[1];\n\t\tdst[2] = src[2];\n\t\tdst[3] = src[3];\n\t\tdst[4] = src[4];\n\t\tdst[5] = src[5];\n\t\tdst[6] = src[6];\n\t\tdst[7] = src[7];\n\t\tdst[8] = src[8];\n\t\tdst[9] = src[9];\n\t\tdst[10] = src[10];\n\t\tdst[11] = src[11];\n\t\tdst[12] = src[12];\n\t\tdst[13] = src[13];\n\t\tdst[14] = src[14];\n\t\tdst[15] = src[15];\n\t\treturn this;\n\t}\n\tequals(rhs) {\n\t\tconst l = this.data,\n\t\t\tr = rhs.data;\n\t\treturn l[0] === r[0] && l[1] === r[1] && l[2] === r[2] && l[3] === r[3] && l[4] === r[4] && l[5] === r[5] && l[6] === r[6] && l[7] === r[7] && l[8] === r[8] && l[9] === r[9] && l[10] === r[10] && l[11] === r[11] && l[12] === r[12] && l[13] === r[13] && l[14] === r[14] && l[15] === r[15];\n\t}\n\tisIdentity() {\n\t\tconst m = this.data;\n\t\treturn m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 0 && m[4] === 0 && m[5] === 1 && m[6] === 0 && m[7] === 0 && m[8] === 0 && m[9] === 0 && m[10] === 1 && m[11] === 0 && m[12] === 0 && m[13] === 0 && m[14] === 0 && m[15] === 1;\n\t}\n\tmul2(lhs, rhs) {\n\t\tconst a = lhs.data;\n\t\tconst b = rhs.data;\n\t\tconst r = this.data;\n\t\tconst a00 = a[0];\n\t\tconst a01 = a[1];\n\t\tconst a02 = a[2];\n\t\tconst a03 = a[3];\n\t\tconst a10 = a[4];\n\t\tconst a11 = a[5];\n\t\tconst a12 = a[6];\n\t\tconst a13 = a[7];\n\t\tconst a20 = a[8];\n\t\tconst a21 = a[9];\n\t\tconst a22 = a[10];\n\t\tconst a23 = a[11];\n\t\tconst a30 = a[12];\n\t\tconst a31 = a[13];\n\t\tconst a32 = a[14];\n\t\tconst a33 = a[15];\n\t\tlet b0, b1, b2, b3;\n\t\tb0 = b[0];\n\t\tb1 = b[1];\n\t\tb2 = b[2];\n\t\tb3 = b[3];\n\t\tr[0] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\tr[1] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\tr[2] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\tr[3] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\tb0 = b[4];\n\t\tb1 = b[5];\n\t\tb2 = b[6];\n\t\tb3 = b[7];\n\t\tr[4] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\tr[5] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\tr[6] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\tr[7] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\tb0 = b[8];\n\t\tb1 = b[9];\n\t\tb2 = b[10];\n\t\tb3 = b[11];\n\t\tr[8] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\tr[9] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\tr[10] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\tr[11] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\tb0 = b[12];\n\t\tb1 = b[13];\n\t\tb2 = b[14];\n\t\tb3 = b[15];\n\t\tr[12] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\tr[13] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\tr[14] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\tr[15] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\treturn this;\n\t}\n\tmulAffine2(lhs, rhs) {\n\t\tconst a = lhs.data;\n\t\tconst b = rhs.data;\n\t\tconst r = this.data;\n\t\tconst a00 = a[0];\n\t\tconst a01 = a[1];\n\t\tconst a02 = a[2];\n\t\tconst a10 = a[4];\n\t\tconst a11 = a[5];\n\t\tconst a12 = a[6];\n\t\tconst a20 = a[8];\n\t\tconst a21 = a[9];\n\t\tconst a22 = a[10];\n\t\tconst a30 = a[12];\n\t\tconst a31 = a[13];\n\t\tconst a32 = a[14];\n\t\tlet b0, b1, b2;\n\t\tb0 = b[0];\n\t\tb1 = b[1];\n\t\tb2 = b[2];\n\t\tr[0] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\tr[1] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\tr[2] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\tr[3] = 0;\n\t\tb0 = b[4];\n\t\tb1 = b[5];\n\t\tb2 = b[6];\n\t\tr[4] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\tr[5] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\tr[6] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\tr[7] = 0;\n\t\tb0 = b[8];\n\t\tb1 = b[9];\n\t\tb2 = b[10];\n\t\tr[8] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\tr[9] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\tr[10] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\tr[11] = 0;\n\t\tb0 = b[12];\n\t\tb1 = b[13];\n\t\tb2 = b[14];\n\t\tr[12] = a00 * b0 + a10 * b1 + a20 * b2 + a30;\n\t\tr[13] = a01 * b0 + a11 * b1 + a21 * b2 + a31;\n\t\tr[14] = a02 * b0 + a12 * b1 + a22 * b2 + a32;\n\t\tr[15] = 1;\n\t\treturn this;\n\t}\n\tmul(rhs) {\n\t\treturn this.mul2(this, rhs);\n\t}\n\ttransformPoint(vec, res = new Vec3()) {\n\t\tconst m = this.data;\n\t\tconst {\n\t\t\tx,\n\t\t\ty,\n\t\t\tz\n\t\t} = vec;\n\t\tres.x = x * m[0] + y * m[4] + z * m[8] + m[12];\n\t\tres.y = x * m[1] + y * m[5] + z * m[9] + m[13];\n\t\tres.z = x * m[2] + y * m[6] + z * m[10] + m[14];\n\t\treturn res;\n\t}\n\ttransformVector(vec, res = new Vec3()) {\n\t\tconst m = this.data;\n\t\tconst {\n\t\t\tx,\n\t\t\ty,\n\t\t\tz\n\t\t} = vec;\n\t\tres.x = x * m[0] + y * m[4] + z * m[8];\n\t\tres.y = x * m[1] + y * m[5] + z * m[9];\n\t\tres.z = x * m[2] + y * m[6] + z * m[10];\n\t\treturn res;\n\t}\n\ttransformVec4(vec, res = new Vec4()) {\n\t\tconst m = this.data;\n\t\tconst {\n\t\t\tx,\n\t\t\ty,\n\t\t\tz,\n\t\t\tw\n\t\t} = vec;\n\t\tres.x = x * m[0] + y * m[4] + z * m[8] + w * m[12];\n\t\tres.y = x * m[1] + y * m[5] + z * m[9] + w * m[13];\n\t\tres.z = x * m[2] + y * m[6] + z * m[10] + w * m[14];\n\t\tres.w = x * m[3] + y * m[7] + z * m[11] + w * m[15];\n\t\treturn res;\n\t}\n\tsetLookAt(position, target, up) {\n\t\tz.sub2(position, target).normalize();\n\t\ty.copy(up).normalize();\n\t\tx.cross(y, z).normalize();\n\t\ty.cross(z, x);\n\t\tconst r = this.data;\n\t\tr[0] = x.x;\n\t\tr[1] = x.y;\n\t\tr[2] = x.z;\n\t\tr[3] = 0;\n\t\tr[4] = y.x;\n\t\tr[5] = y.y;\n\t\tr[6] = y.z;\n\t\tr[7] = 0;\n\t\tr[8] = z.x;\n\t\tr[9] = z.y;\n\t\tr[10] = z.z;\n\t\tr[11] = 0;\n\t\tr[12] = position.x;\n\t\tr[13] = position.y;\n\t\tr[14] = position.z;\n\t\tr[15] = 1;\n\t\treturn this;\n\t}\n\tsetFrustum(left, right, bottom, top, znear, zfar) {\n\t\tconst temp1 = 2 * znear;\n\t\tconst temp2 = right - left;\n\t\tconst temp3 = top - bottom;\n\t\tconst temp4 = zfar - znear;\n\t\tconst r = this.data;\n\t\tr[0] = temp1 / temp2;\n\t\tr[1] = 0;\n\t\tr[2] = 0;\n\t\tr[3] = 0;\n\t\tr[4] = 0;\n\t\tr[5] = temp1 / temp3;\n\t\tr[6] = 0;\n\t\tr[7] = 0;\n\t\tr[8] = (right + left) / temp2;\n\t\tr[9] = (top + bottom) / temp3;\n\t\tr[10] = (-zfar - znear) / temp4;\n\t\tr[11] = -1;\n\t\tr[12] = 0;\n\t\tr[13] = 0;\n\t\tr[14] = -temp1 * zfar / temp4;\n\t\tr[15] = 0;\n\t\treturn this;\n\t}\n\tsetPerspective(fov, aspect, znear, zfar, fovIsHorizontal) {\n\t\tMat4._getPerspectiveHalfSize(_halfSize, fov, aspect, znear, fovIsHorizontal);\n\t\treturn this.setFrustum(-_halfSize.x, _halfSize.x, -_halfSize.y, _halfSize.y, znear, zfar);\n\t}\n\tsetOrtho(left, right, bottom, top, near, far) {\n\t\tconst r = this.data;\n\t\tr[0] = 2 / (right - left);\n\t\tr[1] = 0;\n\t\tr[2] = 0;\n\t\tr[3] = 0;\n\t\tr[4] = 0;\n\t\tr[5] = 2 / (top - bottom);\n\t\tr[6] = 0;\n\t\tr[7] = 0;\n\t\tr[8] = 0;\n\t\tr[9] = 0;\n\t\tr[10] = -2 / (far - near);\n\t\tr[11] = 0;\n\t\tr[12] = -(right + left) / (right - left);\n\t\tr[13] = -(top + bottom) / (top - bottom);\n\t\tr[14] = -(far + near) / (far - near);\n\t\tr[15] = 1;\n\t\treturn this;\n\t}\n\tsetFromAxisAngle(axis, angle) {\n\t\tangle *= math.DEG_TO_RAD;\n\t\tconst {\n\t\t\tx,\n\t\t\ty,\n\t\t\tz\n\t\t} = axis;\n\t\tconst c = Math.cos(angle);\n\t\tconst s = Math.sin(angle);\n\t\tconst t = 1 - c;\n\t\tconst tx = t * x;\n\t\tconst ty = t * y;\n\t\tconst m = this.data;\n\t\tm[0] = tx * x + c;\n\t\tm[1] = tx * y + s * z;\n\t\tm[2] = tx * z - s * y;\n\t\tm[3] = 0;\n\t\tm[4] = tx * y - s * z;\n\t\tm[5] = ty * y + c;\n\t\tm[6] = ty * z + s * x;\n\t\tm[7] = 0;\n\t\tm[8] = tx * z + s * y;\n\t\tm[9] = ty * z - x * s;\n\t\tm[10] = t * z * z + c;\n\t\tm[11] = 0;\n\t\tm[12] = 0;\n\t\tm[13] = 0;\n\t\tm[14] = 0;\n\t\tm[15] = 1;\n\t\treturn this;\n\t}\n\tsetTranslate(x, y, z) {\n\t\tconst m = this.data;\n\t\tm[0] = 1;\n\t\tm[1] = 0;\n\t\tm[2] = 0;\n\t\tm[3] = 0;\n\t\tm[4] = 0;\n\t\tm[5] = 1;\n\t\tm[6] = 0;\n\t\tm[7] = 0;\n\t\tm[8] = 0;\n\t\tm[9] = 0;\n\t\tm[10] = 1;\n\t\tm[11] = 0;\n\t\tm[12] = x;\n\t\tm[13] = y;\n\t\tm[14] = z;\n\t\tm[15] = 1;\n\t\treturn this;\n\t}\n\tsetScale(x, y, z) {\n\t\tconst m = this.data;\n\t\tm[0] = x;\n\t\tm[1] = 0;\n\t\tm[2] = 0;\n\t\tm[3] = 0;\n\t\tm[4] = 0;\n\t\tm[5] = y;\n\t\tm[6] = 0;\n\t\tm[7] = 0;\n\t\tm[8] = 0;\n\t\tm[9] = 0;\n\t\tm[10] = z;\n\t\tm[11] = 0;\n\t\tm[12] = 0;\n\t\tm[13] = 0;\n\t\tm[14] = 0;\n\t\tm[15] = 1;\n\t\treturn this;\n\t}\n\tsetViewport(x, y, width, height) {\n\t\tconst m = this.data;\n\t\tm[0] = width * 0.5;\n\t\tm[1] = 0;\n\t\tm[2] = 0;\n\t\tm[3] = 0;\n\t\tm[4] = 0;\n\t\tm[5] = height * 0.5;\n\t\tm[6] = 0;\n\t\tm[7] = 0;\n\t\tm[8] = 0;\n\t\tm[9] = 0;\n\t\tm[10] = 0.5;\n\t\tm[11] = 0;\n\t\tm[12] = x + width * 0.5;\n\t\tm[13] = y + height * 0.5;\n\t\tm[14] = 0.5;\n\t\tm[15] = 1;\n\t\treturn this;\n\t}\n\tsetReflection(normal, distance) {\n\t\tconst a = normal.x;\n\t\tconst b = normal.y;\n\t\tconst c = normal.z;\n\t\tconst data = this.data;\n\t\tdata[0] = 1.0 - 2 * a * a;\n\t\tdata[1] = -2 * a * b;\n\t\tdata[2] = -2 * a * c;\n\t\tdata[3] = 0;\n\t\tdata[4] = -2 * a * b;\n\t\tdata[5] = 1.0 - 2 * b * b;\n\t\tdata[6] = -2 * b * c;\n\t\tdata[7] = 0;\n\t\tdata[8] = -2 * a * c;\n\t\tdata[9] = -2 * b * c;\n\t\tdata[10] = 1.0 - 2 * c * c;\n\t\tdata[11] = 0;\n\t\tdata[12] = -2 * a * distance;\n\t\tdata[13] = -2 * b * distance;\n\t\tdata[14] = -2 * c * distance;\n\t\tdata[15] = 1;\n\t\treturn this;\n\t}\n\tinvert(src = this) {\n\t\tconst s = src.data;\n\t\tconst a00 = s[0];\n\t\tconst a01 = s[1];\n\t\tconst a02 = s[2];\n\t\tconst a03 = s[3];\n\t\tconst a10 = s[4];\n\t\tconst a11 = s[5];\n\t\tconst a12 = s[6];\n\t\tconst a13 = s[7];\n\t\tconst a20 = s[8];\n\t\tconst a21 = s[9];\n\t\tconst a22 = s[10];\n\t\tconst a23 = s[11];\n\t\tconst a30 = s[12];\n\t\tconst a31 = s[13];\n\t\tconst a32 = s[14];\n\t\tconst a33 = s[15];\n\t\tconst b00 = a00 * a11 - a01 * a10;\n\t\tconst b01 = a00 * a12 - a02 * a10;\n\t\tconst b02 = a00 * a13 - a03 * a10;\n\t\tconst b03 = a01 * a12 - a02 * a11;\n\t\tconst b04 = a01 * a13 - a03 * a11;\n\t\tconst b05 = a02 * a13 - a03 * a12;\n\t\tconst b06 = a20 * a31 - a21 * a30;\n\t\tconst b07 = a20 * a32 - a22 * a30;\n\t\tconst b08 = a20 * a33 - a23 * a30;\n\t\tconst b09 = a21 * a32 - a22 * a31;\n\t\tconst b10 = a21 * a33 - a23 * a31;\n\t\tconst b11 = a22 * a33 - a23 * a32;\n\t\tconst det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\t\tif (det === 0) {\n\t\t\tthis.setIdentity();\n\t\t} else {\n\t\t\tconst invDet = 1 / det;\n\t\t\tconst t = this.data;\n\t\t\tt[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n\t\t\tt[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n\t\t\tt[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n\t\t\tt[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n\t\t\tt[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n\t\t\tt[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n\t\t\tt[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n\t\t\tt[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n\t\t\tt[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n\t\t\tt[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n\t\t\tt[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n\t\t\tt[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n\t\t\tt[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n\t\t\tt[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n\t\t\tt[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n\t\t\tt[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n\t\t}\n\t\treturn this;\n\t}\n\tset(src) {\n\t\tconst dst = this.data;\n\t\tdst[0] = src[0];\n\t\tdst[1] = src[1];\n\t\tdst[2] = src[2];\n\t\tdst[3] = src[3];\n\t\tdst[4] = src[4];\n\t\tdst[5] = src[5];\n\t\tdst[6] = src[6];\n\t\tdst[7] = src[7];\n\t\tdst[8] = src[8];\n\t\tdst[9] = src[9];\n\t\tdst[10] = src[10];\n\t\tdst[11] = src[11];\n\t\tdst[12] = src[12];\n\t\tdst[13] = src[13];\n\t\tdst[14] = src[14];\n\t\tdst[15] = src[15];\n\t\treturn this;\n\t}\n\tsetIdentity() {\n\t\tconst m = this.data;\n\t\tm[0] = 1;\n\t\tm[1] = 0;\n\t\tm[2] = 0;\n\t\tm[3] = 0;\n\t\tm[4] = 0;\n\t\tm[5] = 1;\n\t\tm[6] = 0;\n\t\tm[7] = 0;\n\t\tm[8] = 0;\n\t\tm[9] = 0;\n\t\tm[10] = 1;\n\t\tm[11] = 0;\n\t\tm[12] = 0;\n\t\tm[13] = 0;\n\t\tm[14] = 0;\n\t\tm[15] = 1;\n\t\treturn this;\n\t}\n\tsetTRS(t, r, s) {\n\t\tconst qx = r.x;\n\t\tconst qy = r.y;\n\t\tconst qz = r.z;\n\t\tconst qw = r.w;\n\t\tconst sx = s.x;\n\t\tconst sy = s.y;\n\t\tconst sz = s.z;\n\t\tconst x2 = qx + qx;\n\t\tconst y2 = qy + qy;\n\t\tconst z2 = qz + qz;\n\t\tconst xx = qx * x2;\n\t\tconst xy = qx * y2;\n\t\tconst xz = qx * z2;\n\t\tconst yy = qy * y2;\n\t\tconst yz = qy * z2;\n\t\tconst zz = qz * z2;\n\t\tconst wx = qw * x2;\n\t\tconst wy = qw * y2;\n\t\tconst wz = qw * z2;\n\t\tconst m = this.data;\n\t\tm[0] = (1 - (yy + zz)) * sx;\n\t\tm[1] = (xy + wz) * sx;\n\t\tm[2] = (xz - wy) * sx;\n\t\tm[3] = 0;\n\t\tm[4] = (xy - wz) * sy;\n\t\tm[5] = (1 - (xx + zz)) * sy;\n\t\tm[6] = (yz + wx) * sy;\n\t\tm[7] = 0;\n\t\tm[8] = (xz + wy) * sz;\n\t\tm[9] = (yz - wx) * sz;\n\t\tm[10] = (1 - (xx + yy)) * sz;\n\t\tm[11] = 0;\n\t\tm[12] = t.x;\n\t\tm[13] = t.y;\n\t\tm[14] = t.z;\n\t\tm[15] = 1;\n\t\treturn this;\n\t}\n\ttranspose(src = this) {\n\t\tconst s = src.data;\n\t\tconst t = this.data;\n\t\tif (s === t) {\n\t\t\tlet tmp;\n\t\t\ttmp = s[1];\n\t\t\tt[1] = s[4];\n\t\t\tt[4] = tmp;\n\t\t\ttmp = s[2];\n\t\t\tt[2] = s[8];\n\t\t\tt[8] = tmp;\n\t\t\ttmp = s[3];\n\t\t\tt[3] = s[12];\n\t\t\tt[12] = tmp;\n\t\t\ttmp = s[6];\n\t\t\tt[6] = s[9];\n\t\t\tt[9] = tmp;\n\t\t\ttmp = s[7];\n\t\t\tt[7] = s[13];\n\t\t\tt[13] = tmp;\n\t\t\ttmp = s[11];\n\t\t\tt[11] = s[14];\n\t\t\tt[14] = tmp;\n\t\t} else {\n\t\t\tt[0] = s[0];\n\t\t\tt[1] = s[4];\n\t\t\tt[2] = s[8];\n\t\t\tt[3] = s[12];\n\t\t\tt[4] = s[1];\n\t\t\tt[5] = s[5];\n\t\t\tt[6] = s[9];\n\t\t\tt[7] = s[13];\n\t\t\tt[8] = s[2];\n\t\t\tt[9] = s[6];\n\t\t\tt[10] = s[10];\n\t\t\tt[11] = s[14];\n\t\t\tt[12] = s[3];\n\t\t\tt[13] = s[7];\n\t\t\tt[14] = s[11];\n\t\t\tt[15] = s[15];\n\t\t}\n\t\treturn this;\n\t}\n\tgetTranslation(t = new Vec3()) {\n\t\treturn t.set(this.data[12], this.data[13], this.data[14]);\n\t}\n\tgetX(x = new Vec3()) {\n\t\treturn x.set(this.data[0], this.data[1], this.data[2]);\n\t}\n\tgetY(y = new Vec3()) {\n\t\treturn y.set(this.data[4], this.data[5], this.data[6]);\n\t}\n\tgetZ(z = new Vec3()) {\n\t\treturn z.set(this.data[8], this.data[9], this.data[10]);\n\t}\n\tgetScale(scale = new Vec3()) {\n\t\tthis.getX(x);\n\t\tthis.getY(y);\n\t\tthis.getZ(z);\n\t\tscale.set(x.length(), y.length(), z.length());\n\t\treturn scale;\n\t}\n\tget scaleSign() {\n\t\tthis.getX(x);\n\t\tthis.getY(y);\n\t\tthis.getZ(z);\n\t\tx.cross(x, y);\n\t\treturn x.dot(z) < 0 ? -1 : 1;\n\t}\n\tsetFromEulerAngles(ex, ey, ez) {\n\t\tex *= math.DEG_TO_RAD;\n\t\tey *= math.DEG_TO_RAD;\n\t\tez *= math.DEG_TO_RAD;\n\t\tconst s1 = Math.sin(-ex);\n\t\tconst c1 = Math.cos(-ex);\n\t\tconst s2 = Math.sin(-ey);\n\t\tconst c2 = Math.cos(-ey);\n\t\tconst s3 = Math.sin(-ez);\n\t\tconst c3 = Math.cos(-ez);\n\t\tconst m = this.data;\n\t\tm[0] = c2 * c3;\n\t\tm[1] = -c2 * s3;\n\t\tm[2] = s2;\n\t\tm[3] = 0;\n\t\tm[4] = c1 * s3 + c3 * s1 * s2;\n\t\tm[5] = c1 * c3 - s1 * s2 * s3;\n\t\tm[6] = -c2 * s1;\n\t\tm[7] = 0;\n\t\tm[8] = s1 * s3 - c1 * c3 * s2;\n\t\tm[9] = c3 * s1 + c1 * s2 * s3;\n\t\tm[10] = c1 * c2;\n\t\tm[11] = 0;\n\t\tm[12] = 0;\n\t\tm[13] = 0;\n\t\tm[14] = 0;\n\t\tm[15] = 1;\n\t\treturn this;\n\t}\n\tgetEulerAngles(eulers = new Vec3()) {\n\t\tthis.getScale(scale);\n\t\tconst sx = scale.x;\n\t\tconst sy = scale.y;\n\t\tconst sz = scale.z;\n\t\tif (sx === 0 || sy === 0 || sz === 0) return eulers.set(0, 0, 0);\n\t\tconst m = this.data;\n\t\tconst y = Math.asin(-m[2] / sx);\n\t\tconst halfPi = Math.PI * 0.5;\n\t\tlet x, z;\n\t\tif (y < halfPi) {\n\t\t\tif (y > -halfPi) {\n\t\t\t\tx = Math.atan2(m[6] / sy, m[10] / sz);\n\t\t\t\tz = Math.atan2(m[1] / sx, m[0] / sx);\n\t\t\t} else {\n\t\t\t\tz = 0;\n\t\t\t\tx = -Math.atan2(m[4] / sy, m[5] / sy);\n\t\t\t}\n\t\t} else {\n\t\t\tz = 0;\n\t\t\tx = Math.atan2(m[4] / sy, m[5] / sy);\n\t\t}\n\t\treturn eulers.set(x, y, z).mulScalar(math.RAD_TO_DEG);\n\t}\n\ttoString() {\n\t\treturn '[' + this.data.join(', ') + ']';\n\t}\n}\n_Mat = Mat4;\nMat4.IDENTITY = Object.freeze(new _Mat());\nMat4.ZERO = Object.freeze(new _Mat().set([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]));\n\nexport { Mat4 };\n", "import { math } from './math.js';\nimport { Vec3 } from './vec3.js';\n\nvar _Quat;\nclass Quat {\n\tconstructor(x = 0, y = 0, z = 0, w = 1) {\n\t\tthis.x = void 0;\n\t\tthis.y = void 0;\n\t\tthis.z = void 0;\n\t\tthis.w = void 0;\n\t\tif (x.length === 4) {\n\t\t\tthis.x = x[0];\n\t\t\tthis.y = x[1];\n\t\t\tthis.z = x[2];\n\t\t\tthis.w = x[3];\n\t\t} else {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\tthis.w = w;\n\t\t}\n\t}\n\tclone() {\n\t\tconst cstr = this.constructor;\n\t\treturn new cstr(this.x, this.y, this.z, this.w);\n\t}\n\tconjugate(src = this) {\n\t\tthis.x = src.x * -1;\n\t\tthis.y = src.y * -1;\n\t\tthis.z = src.z * -1;\n\t\tthis.w = src.w;\n\t\treturn this;\n\t}\n\tcopy(rhs) {\n\t\tthis.x = rhs.x;\n\t\tthis.y = rhs.y;\n\t\tthis.z = rhs.z;\n\t\tthis.w = rhs.w;\n\t\treturn this;\n\t}\n\tequals(rhs) {\n\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z && this.w === rhs.w;\n\t}\n\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon && Math.abs(this.w - rhs.w) < epsilon;\n\t}\n\tgetAxisAngle(axis) {\n\t\tlet rad = Math.acos(this.w) * 2;\n\t\tconst s = Math.sin(rad / 2);\n\t\tif (s !== 0) {\n\t\t\taxis.x = this.x / s;\n\t\t\taxis.y = this.y / s;\n\t\t\taxis.z = this.z / s;\n\t\t\tif (axis.x < 0 || axis.y < 0 || axis.z < 0) {\n\t\t\t\taxis.x *= -1;\n\t\t\t\taxis.y *= -1;\n\t\t\t\taxis.z *= -1;\n\t\t\t\trad *= -1;\n\t\t\t}\n\t\t} else {\n\t\t\taxis.x = 1;\n\t\t\taxis.y = 0;\n\t\t\taxis.z = 0;\n\t\t}\n\t\treturn rad * math.RAD_TO_DEG;\n\t}\n\tgetEulerAngles(eulers = new Vec3()) {\n\t\tlet x, y, z;\n\t\tconst qx = this.x;\n\t\tconst qy = this.y;\n\t\tconst qz = this.z;\n\t\tconst qw = this.w;\n\t\tconst a2 = 2 * (qw * qy - qx * qz);\n\t\tif (a2 <= -0.99999) {\n\t\t\tx = 2 * Math.atan2(qx, qw);\n\t\t\ty = -Math.PI / 2;\n\t\t\tz = 0;\n\t\t} else if (a2 >= 0.99999) {\n\t\t\tx = 2 * Math.atan2(qx, qw);\n\t\t\ty = Math.PI / 2;\n\t\t\tz = 0;\n\t\t} else {\n\t\t\tx = Math.atan2(2 * (qw * qx + qy * qz), 1 - 2 * (qx * qx + qy * qy));\n\t\t\ty = Math.asin(a2);\n\t\t\tz = Math.atan2(2 * (qw * qz + qx * qy), 1 - 2 * (qy * qy + qz * qz));\n\t\t}\n\t\treturn eulers.set(x, y, z).mulScalar(math.RAD_TO_DEG);\n\t}\n\tinvert(src = this) {\n\t\treturn this.conjugate(src).normalize();\n\t}\n\tlength() {\n\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\t}\n\tlengthSq() {\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\t}\n\tmul(rhs) {\n\t\tconst q1x = this.x;\n\t\tconst q1y = this.y;\n\t\tconst q1z = this.z;\n\t\tconst q1w = this.w;\n\t\tconst q2x = rhs.x;\n\t\tconst q2y = rhs.y;\n\t\tconst q2z = rhs.z;\n\t\tconst q2w = rhs.w;\n\t\tthis.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;\n\t\tthis.y = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;\n\t\tthis.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;\n\t\tthis.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\n\t\treturn this;\n\t}\n\tmulScalar(scalar, src = this) {\n\t\tthis.x = src.x * scalar;\n\t\tthis.y = src.y * scalar;\n\t\tthis.z = src.z * scalar;\n\t\tthis.w = src.w * scalar;\n\t\treturn this;\n\t}\n\tmul2(lhs, rhs) {\n\t\tconst q1x = lhs.x;\n\t\tconst q1y = lhs.y;\n\t\tconst q1z = lhs.z;\n\t\tconst q1w = lhs.w;\n\t\tconst q2x = rhs.x;\n\t\tconst q2y = rhs.y;\n\t\tconst q2z = rhs.z;\n\t\tconst q2w = rhs.w;\n\t\tthis.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;\n\t\tthis.y = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;\n\t\tthis.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;\n\t\tthis.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\n\t\treturn this;\n\t}\n\tnormalize(src = this) {\n\t\tlet len = src.length();\n\t\tif (len === 0) {\n\t\t\tthis.x = this.y = this.z = 0;\n\t\t\tthis.w = 1;\n\t\t} else {\n\t\t\tlen = 1 / len;\n\t\t\tthis.x = src.x * len;\n\t\t\tthis.y = src.y * len;\n\t\t\tthis.z = src.z * len;\n\t\t\tthis.w = src.w * len;\n\t\t}\n\t\treturn this;\n\t}\n\tset(x, y, z, w) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\t\treturn this;\n\t}\n\tsetFromAxisAngle(axis, angle) {\n\t\tangle *= 0.5 * math.DEG_TO_RAD;\n\t\tconst sa = Math.sin(angle);\n\t\tconst ca = Math.cos(angle);\n\t\tthis.x = sa * axis.x;\n\t\tthis.y = sa * axis.y;\n\t\tthis.z = sa * axis.z;\n\t\tthis.w = ca;\n\t\treturn this;\n\t}\n\tsetFromEulerAngles(ex, ey, ez) {\n\t\tif (ex instanceof Vec3) {\n\t\t\tconst vec = ex;\n\t\t\tex = vec.x;\n\t\t\tey = vec.y;\n\t\t\tez = vec.z;\n\t\t}\n\t\tconst halfToRad = 0.5 * math.DEG_TO_RAD;\n\t\tex *= halfToRad;\n\t\tey *= halfToRad;\n\t\tez *= halfToRad;\n\t\tconst sx = Math.sin(ex);\n\t\tconst cx = Math.cos(ex);\n\t\tconst sy = Math.sin(ey);\n\t\tconst cy = Math.cos(ey);\n\t\tconst sz = Math.sin(ez);\n\t\tconst cz = Math.cos(ez);\n\t\tthis.x = sx * cy * cz - cx * sy * sz;\n\t\tthis.y = cx * sy * cz + sx * cy * sz;\n\t\tthis.z = cx * cy * sz - sx * sy * cz;\n\t\tthis.w = cx * cy * cz + sx * sy * sz;\n\t\treturn this;\n\t}\n\tsetFromMat4(m) {\n\t\tconst d = m.data;\n\t\tlet m00 = d[0];\n\t\tlet m01 = d[1];\n\t\tlet m02 = d[2];\n\t\tlet m10 = d[4];\n\t\tlet m11 = d[5];\n\t\tlet m12 = d[6];\n\t\tlet m20 = d[8];\n\t\tlet m21 = d[9];\n\t\tlet m22 = d[10];\n\t\tlet l;\n\t\tl = m00 * m00 + m01 * m01 + m02 * m02;\n\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\tl = 1 / Math.sqrt(l);\n\t\tm00 *= l;\n\t\tm01 *= l;\n\t\tm02 *= l;\n\t\tl = m10 * m10 + m11 * m11 + m12 * m12;\n\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\tl = 1 / Math.sqrt(l);\n\t\tm10 *= l;\n\t\tm11 *= l;\n\t\tm12 *= l;\n\t\tl = m20 * m20 + m21 * m21 + m22 * m22;\n\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\tl = 1 / Math.sqrt(l);\n\t\tm20 *= l;\n\t\tm21 *= l;\n\t\tm22 *= l;\n\t\tif (m22 < 0) {\n\t\t\tif (m00 > m11) {\n\t\t\t\tthis.set(1 + m00 - m11 - m22, m01 + m10, m20 + m02, m12 - m21);\n\t\t\t} else {\n\t\t\t\tthis.set(m01 + m10, 1 - m00 + m11 - m22, m12 + m21, m20 - m02);\n\t\t\t}\n\t\t} else {\n\t\t\tif (m00 < -m11) {\n\t\t\t\tthis.set(m20 + m02, m12 + m21, 1 - m00 - m11 + m22, m01 - m10);\n\t\t\t} else {\n\t\t\t\tthis.set(m12 - m21, m20 - m02, m01 - m10, 1 + m00 + m11 + m22);\n\t\t\t}\n\t\t}\n\t\treturn this.mulScalar(1.0 / this.length());\n\t}\n\tsetFromDirections(from, to) {\n\t\tconst dotProduct = 1 + from.dot(to);\n\t\tif (dotProduct < Number.EPSILON) {\n\t\t\tif (Math.abs(from.x) > Math.abs(from.y)) {\n\t\t\t\tthis.x = -from.z;\n\t\t\t\tthis.y = 0;\n\t\t\t\tthis.z = from.x;\n\t\t\t\tthis.w = 0;\n\t\t\t} else {\n\t\t\t\tthis.x = 0;\n\t\t\t\tthis.y = -from.z;\n\t\t\t\tthis.z = from.y;\n\t\t\t\tthis.w = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.x = from.y * to.z - from.z * to.y;\n\t\t\tthis.y = from.z * to.x - from.x * to.z;\n\t\t\tthis.z = from.x * to.y - from.y * to.x;\n\t\t\tthis.w = dotProduct;\n\t\t}\n\t\treturn this.normalize();\n\t}\n\tslerp(lhs, rhs, alpha) {\n\t\tconst lx = lhs.x;\n\t\tconst ly = lhs.y;\n\t\tconst lz = lhs.z;\n\t\tconst lw = lhs.w;\n\t\tlet rx = rhs.x;\n\t\tlet ry = rhs.y;\n\t\tlet rz = rhs.z;\n\t\tlet rw = rhs.w;\n\t\tlet cosHalfTheta = lw * rw + lx * rx + ly * ry + lz * rz;\n\t\tif (cosHalfTheta < 0) {\n\t\t\trw = -rw;\n\t\t\trx = -rx;\n\t\t\try = -ry;\n\t\t\trz = -rz;\n\t\t\tcosHalfTheta = -cosHalfTheta;\n\t\t}\n\t\tif (Math.abs(cosHalfTheta) >= 1) {\n\t\t\tthis.w = lw;\n\t\t\tthis.x = lx;\n\t\t\tthis.y = ly;\n\t\t\tthis.z = lz;\n\t\t\treturn this;\n\t\t}\n\t\tconst halfTheta = Math.acos(cosHalfTheta);\n\t\tconst sinHalfTheta = Math.sqrt(1 - cosHalfTheta * cosHalfTheta);\n\t\tif (Math.abs(sinHalfTheta) < 0.001) {\n\t\t\tthis.w = lw * 0.5 + rw * 0.5;\n\t\t\tthis.x = lx * 0.5 + rx * 0.5;\n\t\t\tthis.y = ly * 0.5 + ry * 0.5;\n\t\t\tthis.z = lz * 0.5 + rz * 0.5;\n\t\t\treturn this;\n\t\t}\n\t\tconst ratioA = Math.sin((1 - alpha) * halfTheta) / sinHalfTheta;\n\t\tconst ratioB = Math.sin(alpha * halfTheta) / sinHalfTheta;\n\t\tthis.w = lw * ratioA + rw * ratioB;\n\t\tthis.x = lx * ratioA + rx * ratioB;\n\t\tthis.y = ly * ratioA + ry * ratioB;\n\t\tthis.z = lz * ratioA + rz * ratioB;\n\t\treturn this;\n\t}\n\ttransformVector(vec, res = new Vec3()) {\n\t\tconst x = vec.x,\n\t\t\ty = vec.y,\n\t\t\tz = vec.z;\n\t\tconst qx = this.x,\n\t\t\tqy = this.y,\n\t\t\tqz = this.z,\n\t\t\tqw = this.w;\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = -qx * x - qy * y - qz * z;\n\t\tres.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n\t\tres.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n\t\tres.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\t\treturn res;\n\t}\n\ttoString() {\n\t\treturn `[${this.x}, ${this.y}, ${this.z}, ${this.w}]`;\n\t}\n}\n_Quat = Quat;\nQuat.IDENTITY = Object.freeze(new _Quat(0, 0, 0, 1));\nQuat.ZERO = Object.freeze(new _Quat(0, 0, 0, 0));\n\nexport { Quat };\n", "import { Vec3 } from '../math/vec3.js';\n\nconst tmpVecA = new Vec3();\nconst tmpVecB = new Vec3();\nconst tmpVecC = new Vec3();\nconst tmpVecD = new Vec3();\nconst tmpVecE = new Vec3();\nclass BoundingBox {\n\tconstructor(center = new Vec3(), halfExtents = new Vec3(0.5, 0.5, 0.5)) {\n\t\tthis.center = void 0;\n\t\tthis.halfExtents = void 0;\n\t\tthis._min = new Vec3();\n\t\tthis._max = new Vec3();\n\t\tthis.center = center;\n\t\tthis.halfExtents = halfExtents;\n\t}\n\tadd(other) {\n\t\tconst tc = this.center;\n\t\tconst tcx = tc.x;\n\t\tconst tcy = tc.y;\n\t\tconst tcz = tc.z;\n\t\tconst th = this.halfExtents;\n\t\tconst thx = th.x;\n\t\tconst thy = th.y;\n\t\tconst thz = th.z;\n\t\tlet tminx = tcx - thx;\n\t\tlet tmaxx = tcx + thx;\n\t\tlet tminy = tcy - thy;\n\t\tlet tmaxy = tcy + thy;\n\t\tlet tminz = tcz - thz;\n\t\tlet tmaxz = tcz + thz;\n\t\tconst oc = other.center;\n\t\tconst ocx = oc.x;\n\t\tconst ocy = oc.y;\n\t\tconst ocz = oc.z;\n\t\tconst oh = other.halfExtents;\n\t\tconst ohx = oh.x;\n\t\tconst ohy = oh.y;\n\t\tconst ohz = oh.z;\n\t\tconst ominx = ocx - ohx;\n\t\tconst omaxx = ocx + ohx;\n\t\tconst ominy = ocy - ohy;\n\t\tconst omaxy = ocy + ohy;\n\t\tconst ominz = ocz - ohz;\n\t\tconst omaxz = ocz + ohz;\n\t\tif (ominx < tminx) tminx = ominx;\n\t\tif (omaxx > tmaxx) tmaxx = omaxx;\n\t\tif (ominy < tminy) tminy = ominy;\n\t\tif (omaxy > tmaxy) tmaxy = omaxy;\n\t\tif (ominz < tminz) tminz = ominz;\n\t\tif (omaxz > tmaxz) tmaxz = omaxz;\n\t\ttc.x = (tminx + tmaxx) * 0.5;\n\t\ttc.y = (tminy + tmaxy) * 0.5;\n\t\ttc.z = (tminz + tmaxz) * 0.5;\n\t\tth.x = (tmaxx - tminx) * 0.5;\n\t\tth.y = (tmaxy - tminy) * 0.5;\n\t\tth.z = (tmaxz - tminz) * 0.5;\n\t}\n\tcopy(src) {\n\t\tthis.center.copy(src.center);\n\t\tthis.halfExtents.copy(src.halfExtents);\n\t}\n\tclone() {\n\t\treturn new BoundingBox(this.center.clone(), this.halfExtents.clone());\n\t}\n\tintersects(other) {\n\t\tconst aMax = this.getMax();\n\t\tconst aMin = this.getMin();\n\t\tconst bMax = other.getMax();\n\t\tconst bMin = other.getMin();\n\t\treturn aMin.x <= bMax.x && aMax.x >= bMin.x && aMin.y <= bMax.y && aMax.y >= bMin.y && aMin.z <= bMax.z && aMax.z >= bMin.z;\n\t}\n\t_intersectsRay(ray, point) {\n\t\tconst tMin = tmpVecA.copy(this.getMin()).sub(ray.origin);\n\t\tconst tMax = tmpVecB.copy(this.getMax()).sub(ray.origin);\n\t\tconst dir = ray.direction;\n\t\tif (dir.x === 0) {\n\t\t\ttMin.x = tMin.x < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\ttMax.x = tMax.x < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t} else {\n\t\t\ttMin.x /= dir.x;\n\t\t\ttMax.x /= dir.x;\n\t\t}\n\t\tif (dir.y === 0) {\n\t\t\ttMin.y = tMin.y < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\ttMax.y = tMax.y < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t} else {\n\t\t\ttMin.y /= dir.y;\n\t\t\ttMax.y /= dir.y;\n\t\t}\n\t\tif (dir.z === 0) {\n\t\t\ttMin.z = tMin.z < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\ttMax.z = tMax.z < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t} else {\n\t\t\ttMin.z /= dir.z;\n\t\t\ttMax.z /= dir.z;\n\t\t}\n\t\tconst realMin = tmpVecC.set(Math.min(tMin.x, tMax.x), Math.min(tMin.y, tMax.y), Math.min(tMin.z, tMax.z));\n\t\tconst realMax = tmpVecD.set(Math.max(tMin.x, tMax.x), Math.max(tMin.y, tMax.y), Math.max(tMin.z, tMax.z));\n\t\tconst minMax = Math.min(Math.min(realMax.x, realMax.y), realMax.z);\n\t\tconst maxMin = Math.max(Math.max(realMin.x, realMin.y), realMin.z);\n\t\tconst intersects = minMax >= maxMin && maxMin >= 0;\n\t\tif (intersects) point.copy(ray.direction).mulScalar(maxMin).add(ray.origin);\n\t\treturn intersects;\n\t}\n\t_fastIntersectsRay(ray) {\n\t\tconst diff = tmpVecA;\n\t\tconst cross = tmpVecB;\n\t\tconst prod = tmpVecC;\n\t\tconst absDiff = tmpVecD;\n\t\tconst absDir = tmpVecE;\n\t\tconst rayDir = ray.direction;\n\t\tdiff.sub2(ray.origin, this.center);\n\t\tabsDiff.set(Math.abs(diff.x), Math.abs(diff.y), Math.abs(diff.z));\n\t\tprod.mul2(diff, rayDir);\n\t\tif (absDiff.x > this.halfExtents.x && prod.x >= 0) return false;\n\t\tif (absDiff.y > this.halfExtents.y && prod.y >= 0) return false;\n\t\tif (absDiff.z > this.halfExtents.z && prod.z >= 0) return false;\n\t\tabsDir.set(Math.abs(rayDir.x), Math.abs(rayDir.y), Math.abs(rayDir.z));\n\t\tcross.cross(rayDir, diff);\n\t\tcross.set(Math.abs(cross.x), Math.abs(cross.y), Math.abs(cross.z));\n\t\tif (cross.x > this.halfExtents.y * absDir.z + this.halfExtents.z * absDir.y) return false;\n\t\tif (cross.y > this.halfExtents.x * absDir.z + this.halfExtents.z * absDir.x) return false;\n\t\tif (cross.z > this.halfExtents.x * absDir.y + this.halfExtents.y * absDir.x) return false;\n\t\treturn true;\n\t}\n\tintersectsRay(ray, point) {\n\t\tif (point) {\n\t\t\treturn this._intersectsRay(ray, point);\n\t\t}\n\t\treturn this._fastIntersectsRay(ray);\n\t}\n\tsetMinMax(min, max) {\n\t\tthis.center.add2(max, min).mulScalar(0.5);\n\t\tthis.halfExtents.sub2(max, min).mulScalar(0.5);\n\t}\n\tgetMin() {\n\t\treturn this._min.copy(this.center).sub(this.halfExtents);\n\t}\n\tgetMax() {\n\t\treturn this._max.copy(this.center).add(this.halfExtents);\n\t}\n\tcontainsPoint(point) {\n\t\tconst min = this.getMin();\n\t\tconst max = this.getMax();\n\t\tif (point.x < min.x || point.x > max.x || point.y < min.y || point.y > max.y || point.z < min.z || point.z > max.z) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\tsetFromTransformedAabb(aabb, m, ignoreScale = false) {\n\t\tconst ac = aabb.center;\n\t\tconst ar = aabb.halfExtents;\n\t\tconst d = m.data;\n\t\tlet mx0 = d[0];\n\t\tlet mx1 = d[4];\n\t\tlet mx2 = d[8];\n\t\tlet my0 = d[1];\n\t\tlet my1 = d[5];\n\t\tlet my2 = d[9];\n\t\tlet mz0 = d[2];\n\t\tlet mz1 = d[6];\n\t\tlet mz2 = d[10];\n\t\tif (ignoreScale) {\n\t\t\tlet lengthSq = mx0 * mx0 + mx1 * mx1 + mx2 * mx2;\n\t\t\tif (lengthSq > 0) {\n\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\tmx0 *= invLength;\n\t\t\t\tmx1 *= invLength;\n\t\t\t\tmx2 *= invLength;\n\t\t\t}\n\t\t\tlengthSq = my0 * my0 + my1 * my1 + my2 * my2;\n\t\t\tif (lengthSq > 0) {\n\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\tmy0 *= invLength;\n\t\t\t\tmy1 *= invLength;\n\t\t\t\tmy2 *= invLength;\n\t\t\t}\n\t\t\tlengthSq = mz0 * mz0 + mz1 * mz1 + mz2 * mz2;\n\t\t\tif (lengthSq > 0) {\n\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\tmz0 *= invLength;\n\t\t\t\tmz1 *= invLength;\n\t\t\t\tmz2 *= invLength;\n\t\t\t}\n\t\t}\n\t\tthis.center.set(d[12] + mx0 * ac.x + mx1 * ac.y + mx2 * ac.z, d[13] + my0 * ac.x + my1 * ac.y + my2 * ac.z, d[14] + mz0 * ac.x + mz1 * ac.y + mz2 * ac.z);\n\t\tthis.halfExtents.set(Math.abs(mx0) * ar.x + Math.abs(mx1) * ar.y + Math.abs(mx2) * ar.z, Math.abs(my0) * ar.x + Math.abs(my1) * ar.y + Math.abs(my2) * ar.z, Math.abs(mz0) * ar.x + Math.abs(mz1) * ar.y + Math.abs(mz2) * ar.z);\n\t}\n\tstatic computeMinMax(vertices, min, max, numVerts = vertices.length / 3) {\n\t\tif (numVerts > 0) {\n\t\t\tlet minx = vertices[0];\n\t\t\tlet miny = vertices[1];\n\t\t\tlet minz = vertices[2];\n\t\t\tlet maxx = minx;\n\t\t\tlet maxy = miny;\n\t\t\tlet maxz = minz;\n\t\t\tconst n = numVerts * 3;\n\t\t\tfor (let i = 3; i < n; i += 3) {\n\t\t\t\tconst x = vertices[i];\n\t\t\t\tconst y = vertices[i + 1];\n\t\t\t\tconst z = vertices[i + 2];\n\t\t\t\tif (x < minx) minx = x;\n\t\t\t\tif (y < miny) miny = y;\n\t\t\t\tif (z < minz) minz = z;\n\t\t\t\tif (x > maxx) maxx = x;\n\t\t\t\tif (y > maxy) maxy = y;\n\t\t\t\tif (z > maxz) maxz = z;\n\t\t\t}\n\t\t\tmin.set(minx, miny, minz);\n\t\t\tmax.set(maxx, maxy, maxz);\n\t\t}\n\t}\n\tcompute(vertices, numVerts) {\n\t\tBoundingBox.computeMinMax(vertices, tmpVecA, tmpVecB, numVerts);\n\t\tthis.setMinMax(tmpVecA, tmpVecB);\n\t}\n\tintersectsBoundingSphere(sphere) {\n\t\tconst sq = this._distanceToBoundingSphereSq(sphere);\n\t\tif (sq <= sphere.radius * sphere.radius) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t_distanceToBoundingSphereSq(sphere) {\n\t\tconst boxMin = this.getMin();\n\t\tconst boxMax = this.getMax();\n\t\tlet sq = 0;\n\t\tconst axis = ['x', 'y', 'z'];\n\t\tfor (let i = 0; i < 3; ++i) {\n\t\t\tlet out = 0;\n\t\t\tconst pn = sphere.center[axis[i]];\n\t\t\tconst bMin = boxMin[axis[i]];\n\t\t\tconst bMax = boxMax[axis[i]];\n\t\t\tlet val = 0;\n\t\t\tif (pn < bMin) {\n\t\t\t\tval = bMin - pn;\n\t\t\t\tout += val * val;\n\t\t\t}\n\t\t\tif (pn > bMax) {\n\t\t\t\tval = pn - bMax;\n\t\t\t\tout += val * val;\n\t\t\t}\n\t\t\tsq += out;\n\t\t}\n\t\treturn sq;\n\t}\n\t_expand(expandMin, expandMax) {\n\t\ttmpVecA.add2(this.getMin(), expandMin);\n\t\ttmpVecB.add2(this.getMax(), expandMax);\n\t\tthis.setMinMax(tmpVecA, tmpVecB);\n\t}\n}\n\nexport { BoundingBox };\n", "import { Vec3 } from '../math/vec3.js';\n\nconst tmpVecA = new Vec3();\nconst tmpVecB = new Vec3();\nclass BoundingSphere {\n\tconstructor(center = new Vec3(), radius = 0.5) {\n\t\tthis.center = void 0;\n\t\tthis.radius = void 0;\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\t}\n\tcontainsPoint(point) {\n\t\tconst lenSq = tmpVecA.sub2(point, this.center).lengthSq();\n\t\tconst r = this.radius;\n\t\treturn lenSq < r * r;\n\t}\n\tintersectsRay(ray, point) {\n\t\tconst m = tmpVecA.copy(ray.origin).sub(this.center);\n\t\tconst b = m.dot(tmpVecB.copy(ray.direction).normalize());\n\t\tconst c = m.dot(m) - this.radius * this.radius;\n\t\tif (c > 0 && b > 0) return false;\n\t\tconst discr = b * b - c;\n\t\tif (discr < 0) return false;\n\t\tconst t = Math.abs(-b - Math.sqrt(discr));\n\t\tif (point) point.copy(ray.direction).mulScalar(t).add(ray.origin);\n\t\treturn true;\n\t}\n\tintersectsBoundingSphere(sphere) {\n\t\ttmpVecA.sub2(sphere.center, this.center);\n\t\tconst totalRadius = sphere.radius + this.radius;\n\t\tif (tmpVecA.lengthSq() <= totalRadius * totalRadius) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n}\n\nexport { BoundingSphere };\n", "class Frustum {\n\tconstructor() {\n\t\tthis.planes = [];\n\t\tfor (let i = 0; i < 6; i++) this.planes[i] = [];\n\t}\n\tsetFromMat4(matrix) {\n\t\tconst vpm = matrix.data;\n\t\tlet plane;\n\t\tconst planes = this.planes;\n\t\tplane = planes[0];\n\t\tplane[0] = vpm[3] - vpm[0];\n\t\tplane[1] = vpm[7] - vpm[4];\n\t\tplane[2] = vpm[11] - vpm[8];\n\t\tplane[3] = vpm[15] - vpm[12];\n\t\tlet t = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]);\n\t\tplane[0] /= t;\n\t\tplane[1] /= t;\n\t\tplane[2] /= t;\n\t\tplane[3] /= t;\n\t\tplane = planes[1];\n\t\tplane[0] = vpm[3] + vpm[0];\n\t\tplane[1] = vpm[7] + vpm[4];\n\t\tplane[2] = vpm[11] + vpm[8];\n\t\tplane[3] = vpm[15] + vpm[12];\n\t\tt = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]);\n\t\tplane[0] /= t;\n\t\tplane[1] /= t;\n\t\tplane[2] /= t;\n\t\tplane[3] /= t;\n\t\tplane = planes[2];\n\t\tplane[0] = vpm[3] + vpm[1];\n\t\tplane[1] = vpm[7] + vpm[5];\n\t\tplane[2] = vpm[11] + vpm[9];\n\t\tplane[3] = vpm[15] + vpm[13];\n\t\tt = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]);\n\t\tplane[0] /= t;\n\t\tplane[1] /= t;\n\t\tplane[2] /= t;\n\t\tplane[3] /= t;\n\t\tplane = planes[3];\n\t\tplane[0] = vpm[3] - vpm[1];\n\t\tplane[1] = vpm[7] - vpm[5];\n\t\tplane[2] = vpm[11] - vpm[9];\n\t\tplane[3] = vpm[15] - vpm[13];\n\t\tt = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]);\n\t\tplane[0] /= t;\n\t\tplane[1] /= t;\n\t\tplane[2] /= t;\n\t\tplane[3] /= t;\n\t\tplane = planes[4];\n\t\tplane[0] = vpm[3] - vpm[2];\n\t\tplane[1] = vpm[7] - vpm[6];\n\t\tplane[2] = vpm[11] - vpm[10];\n\t\tplane[3] = vpm[15] - vpm[14];\n\t\tt = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]);\n\t\tplane[0] /= t;\n\t\tplane[1] /= t;\n\t\tplane[2] /= t;\n\t\tplane[3] /= t;\n\t\tplane = planes[5];\n\t\tplane[0] = vpm[3] + vpm[2];\n\t\tplane[1] = vpm[7] + vpm[6];\n\t\tplane[2] = vpm[11] + vpm[10];\n\t\tplane[3] = vpm[15] + vpm[14];\n\t\tt = Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]);\n\t\tplane[0] /= t;\n\t\tplane[1] /= t;\n\t\tplane[2] /= t;\n\t\tplane[3] /= t;\n\t}\n\tcontainsPoint(point) {\n\t\tlet p, plane;\n\t\tfor (p = 0; p < 6; p++) {\n\t\t\tplane = this.planes[p];\n\t\t\tif (plane[0] * point.x + plane[1] * point.y + plane[2] * point.z + plane[3] <= 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tcontainsSphere(sphere) {\n\t\tlet c = 0;\n\t\tlet d;\n\t\tlet p;\n\t\tconst sr = sphere.radius;\n\t\tconst sc = sphere.center;\n\t\tconst scx = sc.x;\n\t\tconst scy = sc.y;\n\t\tconst scz = sc.z;\n\t\tconst planes = this.planes;\n\t\tlet plane;\n\t\tfor (p = 0; p < 6; p++) {\n\t\t\tplane = planes[p];\n\t\t\td = plane[0] * scx + plane[1] * scy + plane[2] * scz + plane[3];\n\t\t\tif (d <= -sr) return 0;\n\t\t\tif (d > sr) c++;\n\t\t}\n\t\treturn c === 6 ? 2 : 1;\n\t}\n}\n\nexport { Frustum };\n", "import { Vec3 } from '../math/vec3.js';\n\nclass Ray {\n\tconstructor(origin, direction) {\n\t\tthis.origin = new Vec3();\n\t\tthis.direction = Vec3.FORWARD.clone();\n\t\tif (origin) {\n\t\t\tthis.origin.copy(origin);\n\t\t}\n\t\tif (direction) {\n\t\t\tthis.direction.copy(direction);\n\t\t}\n\t}\n\tset(origin, direction) {\n\t\tthis.origin.copy(origin);\n\t\tthis.direction.copy(direction);\n\t\treturn this;\n\t}\n\tcopy(src) {\n\t\treturn this.set(src.origin, src.direction);\n\t}\n\tclone() {\n\t\treturn new this.constructor(this.origin, this.direction);\n\t}\n}\n\nexport { Ray };\n", "const DISTANCE_LINEAR = 'linear';\nconst DISTANCE_INVERSE = 'inverse';\nconst DISTANCE_EXPONENTIAL = 'exponential';\n\nexport { DISTANCE_EXPONENTIAL, DISTANCE_INVERSE, DISTANCE_LINEAR };\n", "const ADDRESS_REPEAT = 0;\nconst ADDRESS_CLAMP_TO_EDGE = 1;\nconst ADDRESS_MIRRORED_REPEAT = 2;\nconst BLENDMODE_ZERO = 0;\nconst BLENDMODE_ONE = 1;\nconst BLENDMODE_SRC_COLOR = 2;\nconst BLENDMODE_ONE_MINUS_SRC_COLOR = 3;\nconst BLENDMODE_DST_COLOR = 4;\nconst BLENDMODE_ONE_MINUS_DST_COLOR = 5;\nconst BLENDMODE_SRC_ALPHA = 6;\nconst BLENDMODE_SRC_ALPHA_SATURATE = 7;\nconst BLENDMODE_ONE_MINUS_SRC_ALPHA = 8;\nconst BLENDMODE_DST_ALPHA = 9;\nconst BLENDMODE_ONE_MINUS_DST_ALPHA = 10;\nconst BLENDMODE_CONSTANT = 11;\nconst BLENDMODE_ONE_MINUS_CONSTANT = 12;\nconst BLENDEQUATION_ADD = 0;\nconst BLENDEQUATION_SUBTRACT = 1;\nconst BLENDEQUATION_REVERSE_SUBTRACT = 2;\nconst BLENDEQUATION_MIN = 3;\nconst BLENDEQUATION_MAX = 4;\nconst BUFFERUSAGE_READ = 0x0001;\nconst BUFFERUSAGE_WRITE = 0x0002;\nconst BUFFERUSAGE_COPY_SRC = 0x0004;\nconst BUFFERUSAGE_COPY_DST = 0x0008;\nconst BUFFERUSAGE_INDEX = 0x0010;\nconst BUFFERUSAGE_VERTEX = 0x0020;\nconst BUFFERUSAGE_UNIFORM = 0x0040;\nconst BUFFERUSAGE_STORAGE = 0x0080;\nconst BUFFERUSAGE_INDIRECT = 0x0100;\nconst BUFFER_STATIC = 0;\nconst BUFFER_DYNAMIC = 1;\nconst BUFFER_STREAM = 2;\nconst BUFFER_GPUDYNAMIC = 3;\nconst CLEARFLAG_COLOR = 1;\nconst CLEARFLAG_DEPTH = 2;\nconst CLEARFLAG_STENCIL = 4;\nconst CUBEFACE_POSX = 0;\nconst CUBEFACE_NEGX = 1;\nconst CUBEFACE_POSY = 2;\nconst CUBEFACE_NEGY = 3;\nconst CUBEFACE_POSZ = 4;\nconst CUBEFACE_NEGZ = 5;\nconst CULLFACE_NONE = 0;\nconst CULLFACE_BACK = 1;\nconst CULLFACE_FRONT = 2;\nconst CULLFACE_FRONTANDBACK = 3;\nconst FILTER_NEAREST = 0;\nconst FILTER_LINEAR = 1;\nconst FILTER_NEAREST_MIPMAP_NEAREST = 2;\nconst FILTER_NEAREST_MIPMAP_LINEAR = 3;\nconst FILTER_LINEAR_MIPMAP_NEAREST = 4;\nconst FILTER_LINEAR_MIPMAP_LINEAR = 5;\nconst FUNC_NEVER = 0;\nconst FUNC_LESS = 1;\nconst FUNC_EQUAL = 2;\nconst FUNC_LESSEQUAL = 3;\nconst FUNC_GREATER = 4;\nconst FUNC_NOTEQUAL = 5;\nconst FUNC_GREATEREQUAL = 6;\nconst FUNC_ALWAYS = 7;\nconst INDEXFORMAT_UINT8 = 0;\nconst INDEXFORMAT_UINT16 = 1;\nconst INDEXFORMAT_UINT32 = 2;\nconst PIXELFORMAT_A8 = 0;\nconst PIXELFORMAT_L8 = 1;\nconst PIXELFORMAT_LA8 = 2;\nconst PIXELFORMAT_RGB565 = 3;\nconst PIXELFORMAT_RGBA5551 = 4;\nconst PIXELFORMAT_RGBA4 = 5;\nconst PIXELFORMAT_RGB8 = 6;\nconst PIXELFORMAT_RGBA8 = 7;\nconst PIXELFORMAT_DXT1 = 8;\nconst PIXELFORMAT_DXT3 = 9;\nconst PIXELFORMAT_DXT5 = 10;\nconst PIXELFORMAT_RGB16F = 11;\nconst PIXELFORMAT_RGBA16F = 12;\nconst PIXELFORMAT_RGB32F = 13;\nconst PIXELFORMAT_RGBA32F = 14;\nconst PIXELFORMAT_R32F = 15;\nconst PIXELFORMAT_DEPTH = 16;\nconst PIXELFORMAT_DEPTHSTENCIL = 17;\nconst PIXELFORMAT_111110F = 18;\nconst PIXELFORMAT_SRGB = 19;\nconst PIXELFORMAT_SRGBA = 20;\nconst PIXELFORMAT_ETC1 = 21;\nconst PIXELFORMAT_ETC2_RGB = 22;\nconst PIXELFORMAT_ETC2_RGBA = 23;\nconst PIXELFORMAT_PVRTC_2BPP_RGB_1 = 24;\nconst PIXELFORMAT_PVRTC_2BPP_RGBA_1 = 25;\nconst PIXELFORMAT_PVRTC_4BPP_RGB_1 = 26;\nconst PIXELFORMAT_PVRTC_4BPP_RGBA_1 = 27;\nconst PIXELFORMAT_ASTC_4x4 = 28;\nconst PIXELFORMAT_ATC_RGB = 29;\nconst PIXELFORMAT_ATC_RGBA = 30;\nconst PIXELFORMAT_BGRA8 = 31;\nconst PIXELFORMAT_R8I = 32;\nconst PIXELFORMAT_R8U = 33;\nconst PIXELFORMAT_R16I = 34;\nconst PIXELFORMAT_R16U = 35;\nconst PIXELFORMAT_R32I = 36;\nconst PIXELFORMAT_R32U = 37;\nconst PIXELFORMAT_RG8I = 38;\nconst PIXELFORMAT_RG8U = 39;\nconst PIXELFORMAT_RG16I = 40;\nconst PIXELFORMAT_RG16U = 41;\nconst PIXELFORMAT_RG32I = 42;\nconst PIXELFORMAT_RG32U = 43;\nconst PIXELFORMAT_RGBA8I = 44;\nconst PIXELFORMAT_RGBA8U = 45;\nconst PIXELFORMAT_RGBA16I = 46;\nconst PIXELFORMAT_RGBA16U = 47;\nconst PIXELFORMAT_RGBA32I = 48;\nconst PIXELFORMAT_RGBA32U = 49;\nconst PIXELFORMAT_R16F = 50;\nconst PIXELFORMAT_RG16F = 51;\nconst pixelFormatInfo = new Map([[PIXELFORMAT_A8, {\n\tname: 'A8',\n\tsize: 1\n}], [PIXELFORMAT_L8, {\n\tname: 'L8',\n\tsize: 1\n}], [PIXELFORMAT_LA8, {\n\tname: 'LA8',\n\tsize: 2\n}], [PIXELFORMAT_RGB565, {\n\tname: 'RGB565',\n\tsize: 2\n}], [PIXELFORMAT_RGBA5551, {\n\tname: 'RGBA5551',\n\tsize: 2\n}], [PIXELFORMAT_RGBA4, {\n\tname: 'RGBA4',\n\tsize: 2\n}], [PIXELFORMAT_RGB8, {\n\tname: 'RGB8',\n\tsize: 4\n}], [PIXELFORMAT_RGBA8, {\n\tname: 'RGBA8',\n\tsize: 4\n}], [PIXELFORMAT_R16F, {\n\tname: 'R16F',\n\tsize: 2\n}], [PIXELFORMAT_RG16F, {\n\tname: 'RG16F',\n\tsize: 4\n}], [PIXELFORMAT_RGB16F, {\n\tname: 'RGB16F',\n\tsize: 8\n}], [PIXELFORMAT_RGBA16F, {\n\tname: 'RGBA16F',\n\tsize: 8\n}], [PIXELFORMAT_RGB32F, {\n\tname: 'RGB32F',\n\tsize: 16\n}], [PIXELFORMAT_RGBA32F, {\n\tname: 'RGBA32F',\n\tsize: 16\n}], [PIXELFORMAT_R32F, {\n\tname: 'R32F',\n\tsize: 4\n}], [PIXELFORMAT_DEPTH, {\n\tname: 'DEPTH',\n\tsize: 4\n}], [PIXELFORMAT_DEPTHSTENCIL, {\n\tname: 'DEPTHSTENCIL',\n\tsize: 4\n}], [PIXELFORMAT_111110F, {\n\tname: '111110F',\n\tsize: 4\n}], [PIXELFORMAT_SRGB, {\n\tname: 'SRGB',\n\tsize: 4\n}], [PIXELFORMAT_SRGBA, {\n\tname: 'SRGBA',\n\tsize: 4\n}], [PIXELFORMAT_BGRA8, {\n\tname: 'BGRA8',\n\tsize: 4\n}], [PIXELFORMAT_DXT1, {\n\tname: 'DXT1',\n\tblockSize: 8\n}], [PIXELFORMAT_DXT3, {\n\tname: 'DXT3',\n\tblockSize: 16\n}], [PIXELFORMAT_DXT5, {\n\tname: 'DXT5',\n\tblockSize: 16\n}], [PIXELFORMAT_ETC1, {\n\tname: 'ETC1',\n\tblockSize: 8\n}], [PIXELFORMAT_ETC2_RGB, {\n\tname: 'ETC2_RGB',\n\tblockSize: 8\n}], [PIXELFORMAT_ETC2_RGBA, {\n\tname: 'ETC2_RGBA',\n\tblockSize: 16\n}], [PIXELFORMAT_PVRTC_2BPP_RGB_1, {\n\tname: 'PVRTC_2BPP_RGB_1',\n\tblockSize: 8\n}], [PIXELFORMAT_PVRTC_2BPP_RGBA_1, {\n\tname: 'PVRTC_2BPP_RGBA_1',\n\tblockSize: 8\n}], [PIXELFORMAT_PVRTC_4BPP_RGB_1, {\n\tname: 'PVRTC_4BPP_RGB_1',\n\tblockSize: 8\n}], [PIXELFORMAT_PVRTC_4BPP_RGBA_1, {\n\tname: 'PVRTC_4BPP_RGBA_1',\n\tblockSize: 8\n}], [PIXELFORMAT_ASTC_4x4, {\n\tname: 'ASTC_4x4',\n\tblockSize: 16\n}], [PIXELFORMAT_ATC_RGB, {\n\tname: 'ATC_RGB',\n\tblockSize: 8\n}], [PIXELFORMAT_ATC_RGBA, {\n\tname: 'ATC_RGBA',\n\tblockSize: 16\n}], [PIXELFORMAT_R8I, {\n\tname: 'R8I',\n\tsize: 1,\n\tisInt: true\n}], [PIXELFORMAT_R8U, {\n\tname: 'R8U',\n\tsize: 1,\n\tisInt: true\n}], [PIXELFORMAT_R16I, {\n\tname: 'R16I',\n\tsize: 2,\n\tisInt: true\n}], [PIXELFORMAT_R16U, {\n\tname: 'R16U',\n\tsize: 2,\n\tisInt: true\n}], [PIXELFORMAT_R32I, {\n\tname: 'R32I',\n\tsize: 4,\n\tisInt: true\n}], [PIXELFORMAT_R32U, {\n\tname: 'R32U',\n\tsize: 4,\n\tisInt: true\n}], [PIXELFORMAT_RG8I, {\n\tname: 'RG8I',\n\tsize: 2,\n\tisInt: true\n}], [PIXELFORMAT_RG8U, {\n\tname: 'RG8U',\n\tsize: 2,\n\tisInt: true\n}], [PIXELFORMAT_RG16I, {\n\tname: 'RG16I',\n\tsize: 4,\n\tisInt: true\n}], [PIXELFORMAT_RG16U, {\n\tname: 'RG16U',\n\tsize: 4,\n\tisInt: true\n}], [PIXELFORMAT_RG32I, {\n\tname: 'RG32I',\n\tsize: 8,\n\tisInt: true\n}], [PIXELFORMAT_RG32U, {\n\tname: 'RG32U',\n\tsize: 8,\n\tisInt: true\n}], [PIXELFORMAT_RGBA8I, {\n\tname: 'RGBA8I',\n\tsize: 4,\n\tisInt: true\n}], [PIXELFORMAT_RGBA8U, {\n\tname: 'RGBA8U',\n\tsize: 4,\n\tisInt: true\n}], [PIXELFORMAT_RGBA16I, {\n\tname: 'RGBA16I',\n\tsize: 8,\n\tisInt: true\n}], [PIXELFORMAT_RGBA16U, {\n\tname: 'RGBA16U',\n\tsize: 8,\n\tisInt: true\n}], [PIXELFORMAT_RGBA32I, {\n\tname: 'RGBA32I',\n\tsize: 16,\n\tisInt: true\n}], [PIXELFORMAT_RGBA32U, {\n\tname: 'RGBA32U',\n\tsize: 16,\n\tisInt: true\n}]]);\nconst isCompressedPixelFormat = format => {\n\tvar _pixelFormatInfo$get;\n\treturn ((_pixelFormatInfo$get = pixelFormatInfo.get(format)) == null ? void 0 : _pixelFormatInfo$get.blockSize) !== undefined;\n};\nconst isIntegerPixelFormat = format => {\n\tvar _pixelFormatInfo$get2;\n\treturn ((_pixelFormatInfo$get2 = pixelFormatInfo.get(format)) == null ? void 0 : _pixelFormatInfo$get2.isInt) === true;\n};\nconst getPixelFormatArrayType = format => {\n\tswitch (format) {\n\t\tcase PIXELFORMAT_R32F:\n\t\tcase PIXELFORMAT_RGB32F:\n\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\treturn Float32Array;\n\t\tcase PIXELFORMAT_R32I:\n\t\tcase PIXELFORMAT_RG32I:\n\t\tcase PIXELFORMAT_RGBA32I:\n\t\t\treturn Int32Array;\n\t\tcase PIXELFORMAT_R32U:\n\t\tcase PIXELFORMAT_RG32U:\n\t\tcase PIXELFORMAT_RGBA32U:\n\t\t\treturn Uint32Array;\n\t\tcase PIXELFORMAT_R16I:\n\t\tcase PIXELFORMAT_RG16I:\n\t\tcase PIXELFORMAT_RGBA16I:\n\t\t\treturn Int16Array;\n\t\tcase PIXELFORMAT_R16U:\n\t\tcase PIXELFORMAT_RG16U:\n\t\tcase PIXELFORMAT_RGBA16U:\n\t\tcase PIXELFORMAT_RGB565:\n\t\tcase PIXELFORMAT_RGBA5551:\n\t\tcase PIXELFORMAT_RGBA4:\n\t\tcase PIXELFORMAT_R16F:\n\t\tcase PIXELFORMAT_RG16F:\n\t\tcase PIXELFORMAT_RGB16F:\n\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\treturn Uint16Array;\n\t\tcase PIXELFORMAT_R8I:\n\t\tcase PIXELFORMAT_RG8I:\n\t\tcase PIXELFORMAT_RGBA8I:\n\t\t\treturn Int8Array;\n\t\tdefault:\n\t\t\treturn Uint8Array;\n\t}\n};\nconst PRIMITIVE_POINTS = 0;\nconst PRIMITIVE_LINES = 1;\nconst PRIMITIVE_LINELOOP = 2;\nconst PRIMITIVE_LINESTRIP = 3;\nconst PRIMITIVE_TRIANGLES = 4;\nconst PRIMITIVE_TRISTRIP = 5;\nconst PRIMITIVE_TRIFAN = 6;\nconst SEMANTIC_POSITION = \"POSITION\";\nconst SEMANTIC_NORMAL = \"NORMAL\";\nconst SEMANTIC_TANGENT = \"TANGENT\";\nconst SEMANTIC_BLENDWEIGHT = \"BLENDWEIGHT\";\nconst SEMANTIC_BLENDINDICES = \"BLENDINDICES\";\nconst SEMANTIC_COLOR = \"COLOR\";\nconst SEMANTIC_TEXCOORD = \"TEXCOORD\";\nconst SEMANTIC_TEXCOORD0 = \"TEXCOORD0\";\nconst SEMANTIC_TEXCOORD1 = \"TEXCOORD1\";\nconst SEMANTIC_TEXCOORD2 = \"TEXCOORD2\";\nconst SEMANTIC_TEXCOORD3 = \"TEXCOORD3\";\nconst SEMANTIC_TEXCOORD4 = \"TEXCOORD4\";\nconst SEMANTIC_TEXCOORD5 = \"TEXCOORD5\";\nconst SEMANTIC_TEXCOORD6 = \"TEXCOORD6\";\nconst SEMANTIC_TEXCOORD7 = \"TEXCOORD7\";\nconst SEMANTIC_ATTR = \"ATTR\";\nconst SEMANTIC_ATTR0 = \"ATTR0\";\nconst SEMANTIC_ATTR1 = \"ATTR1\";\nconst SEMANTIC_ATTR2 = \"ATTR2\";\nconst SEMANTIC_ATTR3 = \"ATTR3\";\nconst SEMANTIC_ATTR4 = \"ATTR4\";\nconst SEMANTIC_ATTR5 = \"ATTR5\";\nconst SEMANTIC_ATTR6 = \"ATTR6\";\nconst SEMANTIC_ATTR7 = \"ATTR7\";\nconst SEMANTIC_ATTR8 = \"ATTR8\";\nconst SEMANTIC_ATTR9 = \"ATTR9\";\nconst SEMANTIC_ATTR10 = \"ATTR10\";\nconst SEMANTIC_ATTR11 = \"ATTR11\";\nconst SEMANTIC_ATTR12 = \"ATTR12\";\nconst SEMANTIC_ATTR13 = \"ATTR13\";\nconst SEMANTIC_ATTR14 = \"ATTR14\";\nconst SEMANTIC_ATTR15 = \"ATTR15\";\nconst SHADERTAG_MATERIAL = 1;\nconst STENCILOP_KEEP = 0;\nconst STENCILOP_ZERO = 1;\nconst STENCILOP_REPLACE = 2;\nconst STENCILOP_INCREMENT = 3;\nconst STENCILOP_INCREMENTWRAP = 4;\nconst STENCILOP_DECREMENT = 5;\nconst STENCILOP_DECREMENTWRAP = 6;\nconst STENCILOP_INVERT = 7;\nconst TEXTURELOCK_NONE = 0;\nconst TEXTURELOCK_READ = 1;\nconst TEXTURELOCK_WRITE = 2;\nconst TEXTURETYPE_DEFAULT = 'default';\nconst TEXTURETYPE_RGBM = 'rgbm';\nconst TEXTURETYPE_RGBE = 'rgbe';\nconst TEXTURETYPE_RGBP = 'rgbp';\nconst TEXTURETYPE_SWIZZLEGGGR = 'swizzleGGGR';\nconst TEXHINT_NONE = 0;\nconst TEXHINT_SHADOWMAP = 1;\nconst TEXHINT_ASSET = 2;\nconst TEXHINT_LIGHTMAP = 3;\nconst TEXTUREDIMENSION_1D = '1d';\nconst TEXTUREDIMENSION_2D = '2d';\nconst TEXTUREDIMENSION_2D_ARRAY = '2d-array';\nconst TEXTUREDIMENSION_CUBE = 'cube';\nconst TEXTUREDIMENSION_CUBE_ARRAY = 'cube-array';\nconst TEXTUREDIMENSION_3D = '3d';\nconst SAMPLETYPE_FLOAT = 0;\nconst SAMPLETYPE_UNFILTERABLE_FLOAT = 1;\nconst SAMPLETYPE_DEPTH = 2;\nconst SAMPLETYPE_INT = 3;\nconst SAMPLETYPE_UINT = 4;\nconst TEXTUREPROJECTION_NONE = \"none\";\nconst TEXTUREPROJECTION_CUBE = \"cube\";\nconst TEXTUREPROJECTION_EQUIRECT = \"equirect\";\nconst TEXTUREPROJECTION_OCTAHEDRAL = \"octahedral\";\nconst SHADERLANGUAGE_GLSL = 'glsl';\nconst SHADERLANGUAGE_WGSL = 'wgsl';\nconst TYPE_INT8 = 0;\nconst TYPE_UINT8 = 1;\nconst TYPE_INT16 = 2;\nconst TYPE_UINT16 = 3;\nconst TYPE_INT32 = 4;\nconst TYPE_UINT32 = 5;\nconst TYPE_FLOAT32 = 6;\nconst TYPE_FLOAT16 = 7;\nconst UNIFORMTYPE_BOOL = 0;\nconst UNIFORMTYPE_INT = 1;\nconst UNIFORMTYPE_FLOAT = 2;\nconst UNIFORMTYPE_VEC2 = 3;\nconst UNIFORMTYPE_VEC3 = 4;\nconst UNIFORMTYPE_VEC4 = 5;\nconst UNIFORMTYPE_IVEC2 = 6;\nconst UNIFORMTYPE_IVEC3 = 7;\nconst UNIFORMTYPE_IVEC4 = 8;\nconst UNIFORMTYPE_BVEC2 = 9;\nconst UNIFORMTYPE_BVEC3 = 10;\nconst UNIFORMTYPE_BVEC4 = 11;\nconst UNIFORMTYPE_MAT2 = 12;\nconst UNIFORMTYPE_MAT3 = 13;\nconst UNIFORMTYPE_MAT4 = 14;\nconst UNIFORMTYPE_TEXTURE2D = 15;\nconst UNIFORMTYPE_TEXTURECUBE = 16;\nconst UNIFORMTYPE_FLOATARRAY = 17;\nconst UNIFORMTYPE_TEXTURE2D_SHADOW = 18;\nconst UNIFORMTYPE_TEXTURECUBE_SHADOW = 19;\nconst UNIFORMTYPE_TEXTURE3D = 20;\nconst UNIFORMTYPE_VEC2ARRAY = 21;\nconst UNIFORMTYPE_VEC3ARRAY = 22;\nconst UNIFORMTYPE_VEC4ARRAY = 23;\nconst UNIFORMTYPE_MAT4ARRAY = 24;\nconst UNIFORMTYPE_TEXTURE2D_ARRAY = 25;\nconst UNIFORMTYPE_UINT = 26;\nconst UNIFORMTYPE_UVEC2 = 27;\nconst UNIFORMTYPE_UVEC3 = 28;\nconst UNIFORMTYPE_UVEC4 = 29;\nconst UNIFORMTYPE_INTARRAY = 30;\nconst UNIFORMTYPE_UINTARRAY = 31;\nconst UNIFORMTYPE_BOOLARRAY = 32;\nconst UNIFORMTYPE_IVEC2ARRAY = 33;\nconst UNIFORMTYPE_UVEC2ARRAY = 34;\nconst UNIFORMTYPE_BVEC2ARRAY = 35;\nconst UNIFORMTYPE_IVEC3ARRAY = 36;\nconst UNIFORMTYPE_UVEC3ARRAY = 37;\nconst UNIFORMTYPE_BVEC3ARRAY = 38;\nconst UNIFORMTYPE_IVEC4ARRAY = 39;\nconst UNIFORMTYPE_UVEC4ARRAY = 40;\nconst UNIFORMTYPE_BVEC4ARRAY = 41;\nconst UNIFORMTYPE_ITEXTURE2D = 42;\nconst UNIFORMTYPE_UTEXTURE2D = 43;\nconst UNIFORMTYPE_ITEXTURECUBE = 44;\nconst UNIFORMTYPE_UTEXTURECUBE = 45;\nconst UNIFORMTYPE_ITEXTURE3D = 46;\nconst UNIFORMTYPE_UTEXTURE3D = 47;\nconst UNIFORMTYPE_ITEXTURE2D_ARRAY = 48;\nconst UNIFORMTYPE_UTEXTURE2D_ARRAY = 49;\nconst uniformTypeToName = ['bool', 'int', 'float', 'vec2', 'vec3', 'vec4', 'ivec2', 'ivec3', 'ivec4', 'bvec2', 'bvec3', 'bvec4', 'mat2', 'mat3', 'mat4', 'sampler2D', 'samplerCube', '', 'sampler2DShadow', 'samplerCubeShadow', 'sampler3D', '', '', '', '', 'sampler2DArray', 'uint', 'uvec2', 'uvec3', 'uvec4', '', '', '', '', '', '', '', '', '', '', '', '', 'isampler2D', 'usampler2D', 'isamplerCube', 'usamplerCube', 'isampler3D', 'usampler3D', 'isampler2DArray', 'usampler2DArray'];\nconst uniformTypeToStorage = new Uint8Array([TYPE_INT32, TYPE_INT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_INT32, TYPE_INT32, TYPE_FLOAT32, TYPE_INT32, TYPE_INT32, TYPE_INT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_INT32, TYPE_UINT32, TYPE_UINT32, TYPE_UINT32, TYPE_UINT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_UINT32, TYPE_INT32, TYPE_UINT32]);\nconst DEVICETYPE_WEBGL1 = 'webgl1';\nconst DEVICETYPE_WEBGL2 = 'webgl2';\nconst DEVICETYPE_WEBGPU = 'webgpu';\nconst DEVICETYPE_NULL = 'null';\nconst SHADERSTAGE_VERTEX = 1;\nconst SHADERSTAGE_FRAGMENT = 2;\nconst SHADERSTAGE_COMPUTE = 4;\nconst BINDGROUP_MESH = 0;\nconst BINDGROUP_VIEW = 1;\nconst bindGroupNames = ['mesh', 'view'];\nconst UNIFORM_BUFFER_DEFAULT_SLOT_NAME = 'default';\nconst typedArrayTypes = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Uint16Array];\nconst typedArrayTypesByteSize = [1, 1, 2, 2, 4, 4, 4, 2];\nconst vertexTypesNames = ['INT8', 'UINT8', 'INT16', 'UINT16', 'INT32', 'UINT32', 'FLOAT32', 'FLOAT16'];\nconst typedArrayToType = {\n\t\"Int8Array\": TYPE_INT8,\n\t\"Uint8Array\": TYPE_UINT8,\n\t\"Int16Array\": TYPE_INT16,\n\t\"Uint16Array\": TYPE_UINT16,\n\t\"Int32Array\": TYPE_INT32,\n\t\"Uint32Array\": TYPE_UINT32,\n\t\"Float32Array\": TYPE_FLOAT32\n};\nconst typedArrayIndexFormats = [Uint8Array, Uint16Array, Uint32Array];\nconst typedArrayIndexFormatsByteSize = [1, 2, 4];\nconst semanticToLocation = {};\nsemanticToLocation[SEMANTIC_POSITION] = 0;\nsemanticToLocation[SEMANTIC_NORMAL] = 1;\nsemanticToLocation[SEMANTIC_BLENDWEIGHT] = 2;\nsemanticToLocation[SEMANTIC_BLENDINDICES] = 3;\nsemanticToLocation[SEMANTIC_COLOR] = 4;\nsemanticToLocation[SEMANTIC_TEXCOORD0] = 5;\nsemanticToLocation[SEMANTIC_TEXCOORD1] = 6;\nsemanticToLocation[SEMANTIC_TEXCOORD2] = 7;\nsemanticToLocation[SEMANTIC_TEXCOORD3] = 8;\nsemanticToLocation[SEMANTIC_TEXCOORD4] = 9;\nsemanticToLocation[SEMANTIC_TEXCOORD5] = 10;\nsemanticToLocation[SEMANTIC_TEXCOORD6] = 11;\nsemanticToLocation[SEMANTIC_TEXCOORD7] = 12;\nsemanticToLocation[SEMANTIC_TANGENT] = 13;\nsemanticToLocation[SEMANTIC_ATTR0] = 0;\nsemanticToLocation[SEMANTIC_ATTR1] = 1;\nsemanticToLocation[SEMANTIC_ATTR2] = 2;\nsemanticToLocation[SEMANTIC_ATTR3] = 3;\nsemanticToLocation[SEMANTIC_ATTR4] = 4;\nsemanticToLocation[SEMANTIC_ATTR5] = 5;\nsemanticToLocation[SEMANTIC_ATTR6] = 6;\nsemanticToLocation[SEMANTIC_ATTR7] = 7;\nsemanticToLocation[SEMANTIC_ATTR8] = 8;\nsemanticToLocation[SEMANTIC_ATTR9] = 9;\nsemanticToLocation[SEMANTIC_ATTR10] = 10;\nsemanticToLocation[SEMANTIC_ATTR11] = 11;\nsemanticToLocation[SEMANTIC_ATTR12] = 12;\nsemanticToLocation[SEMANTIC_ATTR13] = 13;\nsemanticToLocation[SEMANTIC_ATTR14] = 14;\nsemanticToLocation[SEMANTIC_ATTR15] = 15;\nconst CHUNKAPI_1_51 = '1.51';\nconst CHUNKAPI_1_55 = '1.55';\nconst CHUNKAPI_1_56 = '1.56';\nconst CHUNKAPI_1_57 = '1.57';\nconst CHUNKAPI_1_58 = '1.58';\nconst CHUNKAPI_1_60 = '1.60';\nconst CHUNKAPI_1_62 = '1.62';\nconst CHUNKAPI_1_65 = '1.65';\nconst CHUNKAPI_1_70 = '1.70';\n\nexport { ADDRESS_CLAMP_TO_EDGE, ADDRESS_MIRRORED_REPEAT, ADDRESS_REPEAT, BINDGROUP_MESH, BINDGROUP_VIEW, BLENDEQUATION_ADD, BLENDEQUATION_MAX, BLENDEQUATION_MIN, BLENDEQUATION_REVERSE_SUBTRACT, BLENDEQUATION_SUBTRACT, BLENDMODE_CONSTANT, BLENDMODE_DST_ALPHA, BLENDMODE_DST_COLOR, BLENDMODE_ONE, BLENDMODE_ONE_MINUS_CONSTANT, BLENDMODE_ONE_MINUS_DST_ALPHA, BLENDMODE_ONE_MINUS_DST_COLOR, BLENDMODE_ONE_MINUS_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_COLOR, BLENDMODE_SRC_ALPHA, BLENDMODE_SRC_ALPHA_SATURATE, BLENDMODE_SRC_COLOR, BLENDMODE_ZERO, BUFFERUSAGE_COPY_DST, BUFFERUSAGE_COPY_SRC, BUFFERUSAGE_INDEX, BUFFERUSAGE_INDIRECT, BUFFERUSAGE_READ, BUFFERUSAGE_STORAGE, BUFFERUSAGE_UNIFORM, BUFFERUSAGE_VERTEX, BUFFERUSAGE_WRITE, BUFFER_DYNAMIC, BUFFER_GPUDYNAMIC, BUFFER_STATIC, BUFFER_STREAM, CHUNKAPI_1_51, CHUNKAPI_1_55, CHUNKAPI_1_56, CHUNKAPI_1_57, CHUNKAPI_1_58, CHUNKAPI_1_60, CHUNKAPI_1_62, CHUNKAPI_1_65, CHUNKAPI_1_70, CLEARFLAG_COLOR, CLEARFLAG_DEPTH, CLEARFLAG_STENCIL, CUBEFACE_NEGX, CUBEFACE_NEGY, CUBEFACE_NEGZ, CUBEFACE_POSX, CUBEFACE_POSY, CUBEFACE_POSZ, CULLFACE_BACK, CULLFACE_FRONT, CULLFACE_FRONTANDBACK, CULLFACE_NONE, DEVICETYPE_NULL, DEVICETYPE_WEBGL1, DEVICETYPE_WEBGL2, DEVICETYPE_WEBGPU, FILTER_LINEAR, FILTER_LINEAR_MIPMAP_LINEAR, FILTER_LINEAR_MIPMAP_NEAREST, FILTER_NEAREST, FILTER_NEAREST_MIPMAP_LINEAR, FILTER_NEAREST_MIPMAP_NEAREST, FUNC_ALWAYS, FUNC_EQUAL, FUNC_GREATER, FUNC_GREATEREQUAL, FUNC_LESS, FUNC_LESSEQUAL, FUNC_NEVER, FUNC_NOTEQUAL, INDEXFORMAT_UINT16, INDEXFORMAT_UINT32, INDEXFORMAT_UINT8, PIXELFORMAT_111110F, PIXELFORMAT_A8, PIXELFORMAT_ASTC_4x4, PIXELFORMAT_ATC_RGB, PIXELFORMAT_ATC_RGBA, PIXELFORMAT_BGRA8, PIXELFORMAT_DEPTH, PIXELFORMAT_DEPTHSTENCIL, PIXELFORMAT_DXT1, PIXELFORMAT_DXT3, PIXELFORMAT_DXT5, PIXELFORMAT_ETC1, PIXELFORMAT_ETC2_RGB, PIXELFORMAT_ETC2_RGBA, PIXELFORMAT_L8, PIXELFORMAT_LA8, PIXELFORMAT_PVRTC_2BPP_RGBA_1, PIXELFORMAT_PVRTC_2BPP_RGB_1, PIXELFORMAT_PVRTC_4BPP_RGBA_1, PIXELFORMAT_PVRTC_4BPP_RGB_1, PIXELFORMAT_R16F, PIXELFORMAT_R16I, PIXELFORMAT_R16U, PIXELFORMAT_R32F, PIXELFORMAT_R32I, PIXELFORMAT_R32U, PIXELFORMAT_R8I, PIXELFORMAT_R8U, PIXELFORMAT_RG16F, PIXELFORMAT_RG16I, PIXELFORMAT_RG16U, PIXELFORMAT_RG32I, PIXELFORMAT_RG32U, PIXELFORMAT_RG8I, PIXELFORMAT_RG8U, PIXELFORMAT_RGB16F, PIXELFORMAT_RGB32F, PIXELFORMAT_RGB565, PIXELFORMAT_RGB8, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA16I, PIXELFORMAT_RGBA16U, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA32I, PIXELFORMAT_RGBA32U, PIXELFORMAT_RGBA4, PIXELFORMAT_RGBA5551, PIXELFORMAT_RGBA8, PIXELFORMAT_RGBA8I, PIXELFORMAT_RGBA8U, PIXELFORMAT_SRGB, PIXELFORMAT_SRGBA, PRIMITIVE_LINELOOP, PRIMITIVE_LINES, PRIMITIVE_LINESTRIP, PRIMITIVE_POINTS, PRIMITIVE_TRIANGLES, PRIMITIVE_TRIFAN, PRIMITIVE_TRISTRIP, SAMPLETYPE_DEPTH, SAMPLETYPE_FLOAT, SAMPLETYPE_INT, SAMPLETYPE_UINT, SAMPLETYPE_UNFILTERABLE_FLOAT, SEMANTIC_ATTR, SEMANTIC_ATTR0, SEMANTIC_ATTR1, SEMANTIC_ATTR10, SEMANTIC_ATTR11, SEMANTIC_ATTR12, SEMANTIC_ATTR13, SEMANTIC_ATTR14, SEMANTIC_ATTR15, SEMANTIC_ATTR2, SEMANTIC_ATTR3, SEMANTIC_ATTR4, SEMANTIC_ATTR5, SEMANTIC_ATTR6, SEMANTIC_ATTR7, SEMANTIC_ATTR8, SEMANTIC_ATTR9, SEMANTIC_BLENDINDICES, SEMANTIC_BLENDWEIGHT, SEMANTIC_COLOR, SEMANTIC_NORMAL, SEMANTIC_POSITION, SEMANTIC_TANGENT, SEMANTIC_TEXCOORD, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_TEXCOORD2, SEMANTIC_TEXCOORD3, SEMANTIC_TEXCOORD4, SEMANTIC_TEXCOORD5, SEMANTIC_TEXCOORD6, SEMANTIC_TEXCOORD7, SHADERLANGUAGE_GLSL, SHADERLANGUAGE_WGSL, SHADERSTAGE_COMPUTE, SHADERSTAGE_FRAGMENT, SHADERSTAGE_VERTEX, SHADERTAG_MATERIAL, STENCILOP_DECREMENT, STENCILOP_DECREMENTWRAP, STENCILOP_INCREMENT, STENCILOP_INCREMENTWRAP, STENCILOP_INVERT, STENCILOP_KEEP, STENCILOP_REPLACE, STENCILOP_ZERO, TEXHINT_ASSET, TEXHINT_LIGHTMAP, TEXHINT_NONE, TEXHINT_SHADOWMAP, TEXTUREDIMENSION_1D, TEXTUREDIMENSION_2D, TEXTUREDIMENSION_2D_ARRAY, TEXTUREDIMENSION_3D, TEXTUREDIMENSION_CUBE, TEXTUREDIMENSION_CUBE_ARRAY, TEXTURELOCK_NONE, TEXTURELOCK_READ, TEXTURELOCK_WRITE, TEXTUREPROJECTION_CUBE, TEXTUREPROJECTION_EQUIRECT, TEXTUREPROJECTION_NONE, TEXTUREPROJECTION_OCTAHEDRAL, TEXTURETYPE_DEFAULT, TEXTURETYPE_RGBE, TEXTURETYPE_RGBM, TEXTURETYPE_RGBP, TEXTURETYPE_SWIZZLEGGGR, TYPE_FLOAT16, TYPE_FLOAT32, TYPE_INT16, TYPE_INT32, TYPE_INT8, TYPE_UINT16, TYPE_UINT32, TYPE_UINT8, UNIFORMTYPE_BOOL, UNIFORMTYPE_BOOLARRAY, UNIFORMTYPE_BVEC2, UNIFORMTYPE_BVEC2ARRAY, UNIFORMTYPE_BVEC3, UNIFORMTYPE_BVEC3ARRAY, UNIFORMTYPE_BVEC4, UNIFORMTYPE_BVEC4ARRAY, UNIFORMTYPE_FLOAT, UNIFORMTYPE_FLOATARRAY, UNIFORMTYPE_INT, UNIFORMTYPE_INTARRAY, UNIFORMTYPE_ITEXTURE2D, UNIFORMTYPE_ITEXTURE2D_ARRAY, UNIFORMTYPE_ITEXTURE3D, UNIFORMTYPE_ITEXTURECUBE, UNIFORMTYPE_IVEC2, UNIFORMTYPE_IVEC2ARRAY, UNIFORMTYPE_IVEC3, UNIFORMTYPE_IVEC3ARRAY, UNIFORMTYPE_IVEC4, UNIFORMTYPE_IVEC4ARRAY, UNIFORMTYPE_MAT2, UNIFORMTYPE_MAT3, UNIFORMTYPE_MAT4, UNIFORMTYPE_MAT4ARRAY, UNIFORMTYPE_TEXTURE2D, UNIFORMTYPE_TEXTURE2D_ARRAY, UNIFORMTYPE_TEXTURE2D_SHADOW, UNIFORMTYPE_TEXTURE3D, UNIFORMTYPE_TEXTURECUBE, UNIFORMTYPE_TEXTURECUBE_SHADOW, UNIFORMTYPE_UINT, UNIFORMTYPE_UINTARRAY, UNIFORMTYPE_UTEXTURE2D, UNIFORMTYPE_UTEXTURE2D_ARRAY, UNIFORMTYPE_UTEXTURE3D, UNIFORMTYPE_UTEXTURECUBE, UNIFORMTYPE_UVEC2, UNIFORMTYPE_UVEC2ARRAY, UNIFORMTYPE_UVEC3, UNIFORMTYPE_UVEC3ARRAY, UNIFORMTYPE_UVEC4, UNIFORMTYPE_UVEC4ARRAY, UNIFORMTYPE_VEC2, UNIFORMTYPE_VEC2ARRAY, UNIFORMTYPE_VEC3, UNIFORMTYPE_VEC3ARRAY, UNIFORMTYPE_VEC4, UNIFORMTYPE_VEC4ARRAY, UNIFORM_BUFFER_DEFAULT_SLOT_NAME, bindGroupNames, getPixelFormatArrayType, isCompressedPixelFormat, isIntegerPixelFormat, pixelFormatInfo, semanticToLocation, typedArrayIndexFormats, typedArrayIndexFormatsByteSize, typedArrayToType, typedArrayTypes, typedArrayTypesByteSize, uniformTypeToName, uniformTypeToStorage, vertexTypesNames };\n", "function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nexport { _extends as extends };\n", "const BitPacking = {\n\tset(storage, value, shift, mask = 1) {\n\t\tconst data = storage & ~(mask << shift);\n\t\treturn data | value << shift;\n\t},\n\tget(storage, shift, mask = 1) {\n\t\treturn storage >> shift & mask;\n\t},\n\tall(storage, shift, mask = 1) {\n\t\tconst shifted = mask << shift;\n\t\treturn (storage & shifted) === shifted;\n\t},\n\tany(storage, shift, mask = 1) {\n\t\treturn (storage & mask << shift) !== 0;\n\t}\n};\n\nexport { BitPacking };\n", "import { BitPacking } from '../../core/math/bit-packing.js';\nimport { BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ZERO, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA } from './constants.js';\n\nvar _BlendState;\nconst opMask = 0b111;\nconst factorMask = 0b1111;\nconst colorOpShift = 0;\nconst colorSrcFactorShift = 3;\nconst colorDstFactorShift = 7;\nconst alphaOpShift = 11;\nconst alphaSrcFactorShift = 14;\nconst alphaDstFactorShift = 18;\nconst redWriteShift = 22;\nconst greenWriteShift = 23;\nconst blueWriteShift = 24;\nconst alphaWriteShift = 25;\nconst blendShift = 26;\nconst allWriteMasks = 0b1111;\nconst allWriteShift = redWriteShift;\nclass BlendState {\n\tconstructor(blend = false, colorOp = BLENDEQUATION_ADD, colorSrcFactor = BLENDMODE_ONE, colorDstFactor = BLENDMODE_ZERO, alphaOp, alphaSrcFactor, alphaDstFactor, redWrite = true, greenWrite = true, blueWrite = true, alphaWrite = true) {\n\t\tthis.target0 = 0;\n\t\tthis.setColorBlend(colorOp, colorSrcFactor, colorDstFactor);\n\t\tthis.setAlphaBlend(alphaOp != null ? alphaOp : colorOp, alphaSrcFactor != null ? alphaSrcFactor : colorSrcFactor, alphaDstFactor != null ? alphaDstFactor : colorDstFactor);\n\t\tthis.setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite);\n\t\tthis.blend = blend;\n\t}\n\tset blend(value) {\n\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, blendShift);\n\t}\n\tget blend() {\n\t\treturn BitPacking.all(this.target0, blendShift);\n\t}\n\tsetColorBlend(op, srcFactor, dstFactor) {\n\t\tthis.target0 = BitPacking.set(this.target0, op, colorOpShift, opMask);\n\t\tthis.target0 = BitPacking.set(this.target0, srcFactor, colorSrcFactorShift, factorMask);\n\t\tthis.target0 = BitPacking.set(this.target0, dstFactor, colorDstFactorShift, factorMask);\n\t}\n\tsetAlphaBlend(op, srcFactor, dstFactor) {\n\t\tthis.target0 = BitPacking.set(this.target0, op, alphaOpShift, opMask);\n\t\tthis.target0 = BitPacking.set(this.target0, srcFactor, alphaSrcFactorShift, factorMask);\n\t\tthis.target0 = BitPacking.set(this.target0, dstFactor, alphaDstFactorShift, factorMask);\n\t}\n\tsetColorWrite(redWrite, greenWrite, blueWrite, alphaWrite) {\n\t\tthis.redWrite = redWrite;\n\t\tthis.greenWrite = greenWrite;\n\t\tthis.blueWrite = blueWrite;\n\t\tthis.alphaWrite = alphaWrite;\n\t}\n\tget colorOp() {\n\t\treturn BitPacking.get(this.target0, colorOpShift, opMask);\n\t}\n\tget colorSrcFactor() {\n\t\treturn BitPacking.get(this.target0, colorSrcFactorShift, factorMask);\n\t}\n\tget colorDstFactor() {\n\t\treturn BitPacking.get(this.target0, colorDstFactorShift, factorMask);\n\t}\n\tget alphaOp() {\n\t\treturn BitPacking.get(this.target0, alphaOpShift, opMask);\n\t}\n\tget alphaSrcFactor() {\n\t\treturn BitPacking.get(this.target0, alphaSrcFactorShift, factorMask);\n\t}\n\tget alphaDstFactor() {\n\t\treturn BitPacking.get(this.target0, alphaDstFactorShift, factorMask);\n\t}\n\tset redWrite(value) {\n\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, redWriteShift);\n\t}\n\tget redWrite() {\n\t\treturn BitPacking.all(this.target0, redWriteShift);\n\t}\n\tset greenWrite(value) {\n\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, greenWriteShift);\n\t}\n\tget greenWrite() {\n\t\treturn BitPacking.all(this.target0, greenWriteShift);\n\t}\n\tset blueWrite(value) {\n\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, blueWriteShift);\n\t}\n\tget blueWrite() {\n\t\treturn BitPacking.all(this.target0, blueWriteShift);\n\t}\n\tset alphaWrite(value) {\n\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, alphaWriteShift);\n\t}\n\tget alphaWrite() {\n\t\treturn BitPacking.all(this.target0, alphaWriteShift);\n\t}\n\tget allWrite() {\n\t\treturn BitPacking.get(this.target0, allWriteShift, allWriteMasks);\n\t}\n\tcopy(rhs) {\n\t\tthis.target0 = rhs.target0;\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst clone = new this.constructor();\n\t\treturn clone.copy(this);\n\t}\n\tget key() {\n\t\treturn this.target0;\n\t}\n\tequals(rhs) {\n\t\treturn this.target0 === rhs.target0;\n\t}\n}\n_BlendState = BlendState;\nBlendState.NOBLEND = Object.freeze(new _BlendState());\nBlendState.NOWRITE = Object.freeze(new _BlendState(undefined, undefined, undefined, undefined, undefined, undefined, undefined, false, false, false, false));\nBlendState.ALPHABLEND = Object.freeze(new _BlendState(true, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA));\nBlendState.ADDBLEND = Object.freeze(new _BlendState(true, BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE));\n\nexport { BlendState };\n", "class StringIds {\n\tconstructor() {\n\t\tthis.map = new Map();\n\t\tthis.id = 0;\n\t}\n\tget(name) {\n\t\tlet value = this.map.get(name);\n\t\tif (value === undefined) {\n\t\t\tvalue = this.id++;\n\t\t\tthis.map.set(name, value);\n\t\t}\n\t\treturn value;\n\t}\n}\n\nexport { StringIds };\n", "import { BitPacking } from '../../core/math/bit-packing.js';\nimport { StringIds } from '../../core/string-ids.js';\nimport { FUNC_LESSEQUAL, FUNC_ALWAYS } from './constants.js';\n\nvar _DepthState;\nconst stringIds = new StringIds();\nconst funcMask = 0b111;\nconst funcShift = 0;\nconst writeShift = 3;\nclass DepthState {\n\tconstructor(func = FUNC_LESSEQUAL, write = true) {\n\t\tthis.data = 0;\n\t\tthis._depthBias = 0;\n\t\tthis._depthBiasSlope = 0;\n\t\tthis.key = 0;\n\t\tthis.func = func;\n\t\tthis.write = write;\n\t}\n\tset test(value) {\n\t\tthis.func = value ? FUNC_LESSEQUAL : FUNC_ALWAYS;\n\t\tthis.updateKey();\n\t}\n\tget test() {\n\t\treturn this.func !== FUNC_ALWAYS;\n\t}\n\tset write(value) {\n\t\tthis.data = BitPacking.set(this.data, value ? 1 : 0, writeShift);\n\t\tthis.updateKey();\n\t}\n\tget write() {\n\t\treturn BitPacking.all(this.data, writeShift);\n\t}\n\tset func(value) {\n\t\tthis.data = BitPacking.set(this.data, value, funcShift, funcMask);\n\t\tthis.updateKey();\n\t}\n\tget func() {\n\t\treturn BitPacking.get(this.data, funcShift, funcMask);\n\t}\n\tset depthBias(value) {\n\t\tthis._depthBias = value;\n\t\tthis.updateKey();\n\t}\n\tget depthBias() {\n\t\treturn this._depthBias;\n\t}\n\tset depthBiasSlope(value) {\n\t\tthis._depthBiasSlope = value;\n\t\tthis.updateKey();\n\t}\n\tget depthBiasSlope() {\n\t\treturn this._depthBiasSlope;\n\t}\n\tcopy(rhs) {\n\t\tthis.data = rhs.data;\n\t\tthis._depthBias = rhs._depthBias;\n\t\tthis._depthBiasSlope = rhs._depthBiasSlope;\n\t\tthis.key = rhs.key;\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst clone = new this.constructor();\n\t\treturn clone.copy(this);\n\t}\n\tupdateKey() {\n\t\tconst {\n\t\t\tdata,\n\t\t\t_depthBias,\n\t\t\t_depthBiasSlope\n\t\t} = this;\n\t\tconst key = `${data}-${_depthBias}-${_depthBiasSlope}`;\n\t\tthis.key = stringIds.get(key);\n\t}\n\tequals(rhs) {\n\t\treturn this.key === rhs.key;\n\t}\n}\n_DepthState = DepthState;\nDepthState.DEFAULT = Object.freeze(new _DepthState());\nDepthState.NODEPTH = Object.freeze(new _DepthState(FUNC_ALWAYS, false));\nDepthState.WRITEDEPTH = Object.freeze(new _DepthState(FUNC_ALWAYS, true));\n\nexport { DepthState };\n", "class Version {\n\tconstructor() {\n\t\tthis.globalId = 0;\n\t\tthis.revision = 0;\n\t}\n\tequals(other) {\n\t\treturn this.globalId === other.globalId && this.revision === other.revision;\n\t}\n\tcopy(other) {\n\t\tthis.globalId = other.globalId;\n\t\tthis.revision = other.revision;\n\t}\n\treset() {\n\t\tthis.globalId = 0;\n\t\tthis.revision = 0;\n\t}\n}\n\nexport { Version };\n", "import { Version } from './version.js';\n\nlet idCounter = 0;\nclass VersionedObject {\n\tconstructor() {\n\t\tidCounter++;\n\t\tthis.version = new Version();\n\t\tthis.version.globalId = idCounter;\n\t}\n\tincrement() {\n\t\tthis.version.revision++;\n\t}\n}\n\nexport { VersionedObject };\n", "import { VersionedObject } from './versioned-object.js';\n\nclass ScopeId {\n\tconstructor(name) {\n\t\tthis.name = name;\n\t\tthis.value = null;\n\t\tthis.versionObject = new VersionedObject();\n\t}\n\ttoJSON(key) {\n\t\treturn undefined;\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\tthis.versionObject.increment();\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n}\n\nexport { ScopeId };\n", "import { ScopeId } from './scope-id.js';\n\nclass ScopeSpace {\n\tconstructor(name) {\n\t\tthis.name = name;\n\t\tthis.variables = new Map();\n\t}\n\tresolve(name) {\n\t\tif (!this.variables.has(name)) {\n\t\t\tthis.variables.set(name, new ScopeId(name));\n\t\t}\n\t\treturn this.variables.get(name);\n\t}\n\tremoveValue(value) {\n\t\tfor (const uniformName in this.variables) {\n\t\t\tconst uniform = this.variables[uniformName];\n\t\t\tif (uniform.value === value) {\n\t\t\t\tuniform.value = null;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { ScopeSpace };\n", "import { BUFFER_STATIC } from './constants.js';\n\nlet id = 0;\nclass VertexBuffer {\n\tconstructor(graphicsDevice, format, numVertices, options) {\n\t\tthis.usage = BUFFER_STATIC;\n\t\tlet initialData;\n\t\tif (typeof options === 'object') {\n\t\t\tvar _options$usage;\n\t\t\tthis.usage = (_options$usage = options.usage) != null ? _options$usage : BUFFER_STATIC;\n\t\t\tinitialData = options.data;\n\t\t} else if (arguments.length > 3) {\n\t\t\tvar _arguments$;\n\t\t\tthis.usage = (_arguments$ = arguments[3]) != null ? _arguments$ : BUFFER_STATIC;\n\t\t\tinitialData = arguments[4];\n\t\t}\n\t\tthis.device = graphicsDevice;\n\t\tthis.format = format;\n\t\tthis.numVertices = numVertices;\n\t\tthis.id = id++;\n\t\tthis.impl = graphicsDevice.createVertexBufferImpl(this, format, options);\n\t\tthis.numBytes = format.verticesByteSize ? format.verticesByteSize : format.size * numVertices;\n\t\tthis.adjustVramSizeTracking(graphicsDevice._vram, this.numBytes);\n\t\tif (initialData) {\n\t\t\tthis.setData(initialData);\n\t\t} else {\n\t\t\tthis.storage = new ArrayBuffer(this.numBytes);\n\t\t}\n\t\tthis.device.buffers.push(this);\n\t}\n\tdestroy() {\n\t\tconst device = this.device;\n\t\tconst idx = device.buffers.indexOf(this);\n\t\tif (idx !== -1) {\n\t\t\tdevice.buffers.splice(idx, 1);\n\t\t}\n\t\tif (this.impl.initialized) {\n\t\t\tthis.impl.destroy(device);\n\t\t\tthis.adjustVramSizeTracking(device._vram, -this.storage.byteLength);\n\t\t}\n\t}\n\tadjustVramSizeTracking(vram, size) {\n\t\tvram.vb += size;\n\t}\n\tloseContext() {\n\t\tthis.impl.loseContext();\n\t}\n\tgetFormat() {\n\t\treturn this.format;\n\t}\n\tgetUsage() {\n\t\treturn this.usage;\n\t}\n\tgetNumVertices() {\n\t\treturn this.numVertices;\n\t}\n\tlock() {\n\t\treturn this.storage;\n\t}\n\tunlock() {\n\t\tthis.impl.unlock(this);\n\t}\n\tsetData(data) {\n\t\tif (data.byteLength !== this.numBytes) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.storage = data;\n\t\tthis.unlock();\n\t\treturn true;\n\t}\n}\n\nexport { VertexBuffer };\n", "function hashCode(str) {\n\tlet hash = 0;\n\tfor (let i = 0, len = str.length; i < len; i++) {\n\t\thash = (hash << 5) - hash + str.charCodeAt(i);\n\t\thash |= 0;\n\t}\n\treturn hash;\n}\nfunction hash32Fnv1a(array) {\n\tconst prime = 16777619;\n\tlet hash = 2166136261;\n\tfor (let i = 0; i < array.length; i++) {\n\t\thash ^= array[i];\n\t\thash *= prime;\n\t}\n\treturn hash >>> 0;\n}\n\nexport { hash32Fnv1a, hashCode };\n", "class DeviceCache {\n\tconstructor() {\n\t\tthis._cache = new Map();\n\t}\n\tget(device, onCreate) {\n\t\tif (!this._cache.has(device)) {\n\t\t\tthis._cache.set(device, onCreate());\n\t\t\tdevice.on('destroy', () => {\n\t\t\t\tthis.remove(device);\n\t\t\t});\n\t\t\tdevice.on('devicelost', () => {\n\t\t\t\tvar _this$_cache$get;\n\t\t\t\t(_this$_cache$get = this._cache.get(device)) == null || _this$_cache$get.loseContext == null || _this$_cache$get.loseContext(device);\n\t\t\t});\n\t\t}\n\t\treturn this._cache.get(device);\n\t}\n\tremove(device) {\n\t\tvar _this$_cache$get2;\n\t\t(_this$_cache$get2 = this._cache.get(device)) == null || _this$_cache$get2.destroy == null || _this$_cache$get2.destroy(device);\n\t\tthis._cache.delete(device);\n\t}\n}\n\nexport { DeviceCache };\n", "import { hashCode } from '../../core/hash.js';\nimport { math } from '../../core/math/math.js';\nimport { StringIds } from '../../core/string-ids.js';\nimport { typedArrayTypesByteSize, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_COLOR, SEMANTIC_TANGENT, SEMANTIC_ATTR12, TYPE_FLOAT32, SEMANTIC_ATTR13, SEMANTIC_ATTR14, SEMANTIC_ATTR15 } from './constants.js';\nimport { DeviceCache } from './device-cache.js';\n\nconst stringIds = new StringIds();\nconst webgpuValidElementSizes = [2, 4, 8, 12, 16];\nconst deviceCache = new DeviceCache();\nclass VertexFormat {\n\tconstructor(graphicsDevice, description, vertexCount) {\n\t\tthis.device = graphicsDevice;\n\t\tthis._elements = [];\n\t\tthis.hasUv0 = false;\n\t\tthis.hasUv1 = false;\n\t\tthis.hasColor = false;\n\t\tthis.hasTangents = false;\n\t\tthis.verticesByteSize = 0;\n\t\tthis.vertexCount = vertexCount;\n\t\tthis.interleaved = vertexCount === undefined;\n\t\tthis.instancing = false;\n\t\tthis.size = description.reduce((total, desc) => {\n\t\t\treturn total + Math.ceil(desc.components * typedArrayTypesByteSize[desc.type] / 4) * 4;\n\t\t}, 0);\n\t\tlet offset = 0,\n\t\t\telementSize;\n\t\tfor (let i = 0, len = description.length; i < len; i++) {\n\t\t\tvar _elementDesc$asInt, _elementDesc$normaliz;\n\t\t\tconst elementDesc = description[i];\n\t\t\telementSize = elementDesc.components * typedArrayTypesByteSize[elementDesc.type];\n\t\t\tif (vertexCount) {\n\t\t\t\toffset = math.roundUp(offset, elementSize);\n\t\t\t}\n\t\t\tconst asInt = (_elementDesc$asInt = elementDesc.asInt) != null ? _elementDesc$asInt : false;\n\t\t\tconst normalize = asInt ? false : (_elementDesc$normaliz = elementDesc.normalize) != null ? _elementDesc$normaliz : false;\n\t\t\tconst element = {\n\t\t\t\tname: elementDesc.semantic,\n\t\t\t\toffset: vertexCount ? offset : elementDesc.hasOwnProperty('offset') ? elementDesc.offset : offset,\n\t\t\t\tstride: vertexCount ? elementSize : elementDesc.hasOwnProperty('stride') ? elementDesc.stride : this.size,\n\t\t\t\tdataType: elementDesc.type,\n\t\t\t\tnumComponents: elementDesc.components,\n\t\t\t\tnormalize: normalize,\n\t\t\t\tsize: elementSize,\n\t\t\t\tasInt: asInt\n\t\t\t};\n\t\t\tthis._elements.push(element);\n\t\t\tif (vertexCount) {\n\t\t\t\toffset += elementSize * vertexCount;\n\t\t\t} else {\n\t\t\t\toffset += Math.ceil(elementSize / 4) * 4;\n\t\t\t}\n\t\t\tif (elementDesc.semantic === SEMANTIC_TEXCOORD0) {\n\t\t\t\tthis.hasUv0 = true;\n\t\t\t} else if (elementDesc.semantic === SEMANTIC_TEXCOORD1) {\n\t\t\t\tthis.hasUv1 = true;\n\t\t\t} else if (elementDesc.semantic === SEMANTIC_COLOR) {\n\t\t\t\tthis.hasColor = true;\n\t\t\t} else if (elementDesc.semantic === SEMANTIC_TANGENT) {\n\t\t\t\tthis.hasTangents = true;\n\t\t\t}\n\t\t}\n\t\tif (vertexCount) {\n\t\t\tthis.verticesByteSize = offset;\n\t\t}\n\t\tthis._evaluateHash();\n\t}\n\tget elements() {\n\t\treturn this._elements;\n\t}\n\tstatic getDefaultInstancingFormat(graphicsDevice) {\n\t\treturn deviceCache.get(graphicsDevice, () => {\n\t\t\treturn new VertexFormat(graphicsDevice, [{\n\t\t\t\tsemantic: SEMANTIC_ATTR12,\n\t\t\t\tcomponents: 4,\n\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t}, {\n\t\t\t\tsemantic: SEMANTIC_ATTR13,\n\t\t\t\tcomponents: 4,\n\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t}, {\n\t\t\t\tsemantic: SEMANTIC_ATTR14,\n\t\t\t\tcomponents: 4,\n\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t}, {\n\t\t\t\tsemantic: SEMANTIC_ATTR15,\n\t\t\t\tcomponents: 4,\n\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t}]);\n\t\t});\n\t}\n\tstatic isElementValid(graphicsDevice, elementDesc) {\n\t\tconst elementSize = elementDesc.components * typedArrayTypesByteSize[elementDesc.type];\n\t\tif (graphicsDevice.isWebGPU && !webgpuValidElementSizes.includes(elementSize)) return false;\n\t\treturn true;\n\t}\n\tupdate() {\n\t\tthis._evaluateHash();\n\t}\n\t_evaluateHash() {\n\t\tconst stringElementsBatch = [];\n\t\tconst stringElementsRender = [];\n\t\tconst len = this._elements.length;\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst {\n\t\t\t\tname,\n\t\t\t\tdataType,\n\t\t\t\tnumComponents,\n\t\t\t\tnormalize,\n\t\t\t\toffset,\n\t\t\t\tstride,\n\t\t\t\tsize,\n\t\t\t\tasInt\n\t\t\t} = this._elements[i];\n\t\t\tconst stringElementBatch = name + dataType + numComponents + normalize + asInt;\n\t\t\tstringElementsBatch.push(stringElementBatch);\n\t\t\tconst stringElementRender = stringElementBatch + offset + stride + size;\n\t\t\tstringElementsRender.push(stringElementRender);\n\t\t}\n\t\tstringElementsBatch.sort();\n\t\tconst batchingString = stringElementsBatch.join();\n\t\tthis.batchingHash = hashCode(batchingString);\n\t\tthis.shaderProcessingHashString = batchingString;\n\t\tthis.renderingHashString = stringElementsRender.join('_');\n\t\tthis.renderingHash = stringIds.get(this.renderingHashString);\n\t}\n}\n\nexport { VertexFormat };\n", "import { FUNC_ALWAYS, STENCILOP_KEEP } from './constants.js';\nimport { StringIds } from '../../core/string-ids.js';\n\nvar _StencilParameters;\nconst stringIds = new StringIds();\nclass StencilParameters {\n\tset func(value) {\n\t\tthis._func = value;\n\t\tthis._dirty = true;\n\t}\n\tget func() {\n\t\treturn this._func;\n\t}\n\tset ref(value) {\n\t\tthis._ref = value;\n\t\tthis._dirty = true;\n\t}\n\tget ref() {\n\t\treturn this._ref;\n\t}\n\tset fail(value) {\n\t\tthis._fail = value;\n\t\tthis._dirty = true;\n\t}\n\tget fail() {\n\t\treturn this._fail;\n\t}\n\tset zfail(value) {\n\t\tthis._zfail = value;\n\t\tthis._dirty = true;\n\t}\n\tget zfail() {\n\t\treturn this._zfail;\n\t}\n\tset zpass(value) {\n\t\tthis._zpass = value;\n\t\tthis._dirty = true;\n\t}\n\tget zpass() {\n\t\treturn this._zpass;\n\t}\n\tset readMask(value) {\n\t\tthis._readMask = value;\n\t\tthis._dirty = true;\n\t}\n\tget readMask() {\n\t\treturn this._readMask;\n\t}\n\tset writeMask(value) {\n\t\tthis._writeMask = value;\n\t\tthis._dirty = true;\n\t}\n\tget writeMask() {\n\t\treturn this._writeMask;\n\t}\n\tconstructor(options = {}) {\n\t\tvar _options$func, _options$ref, _options$readMask, _options$writeMask, _options$fail, _options$zfail, _options$zpass;\n\t\tthis._func = void 0;\n\t\tthis._ref = void 0;\n\t\tthis._fail = void 0;\n\t\tthis._zfail = void 0;\n\t\tthis._zpass = void 0;\n\t\tthis._readMask = void 0;\n\t\tthis._writeMask = void 0;\n\t\tthis._dirty = true;\n\t\tthis._key = void 0;\n\t\tthis._func = (_options$func = options.func) != null ? _options$func : FUNC_ALWAYS;\n\t\tthis._ref = (_options$ref = options.ref) != null ? _options$ref : 0;\n\t\tthis._readMask = (_options$readMask = options.readMask) != null ? _options$readMask : 0xFF;\n\t\tthis._writeMask = (_options$writeMask = options.writeMask) != null ? _options$writeMask : 0xFF;\n\t\tthis._fail = (_options$fail = options.fail) != null ? _options$fail : STENCILOP_KEEP;\n\t\tthis._zfail = (_options$zfail = options.zfail) != null ? _options$zfail : STENCILOP_KEEP;\n\t\tthis._zpass = (_options$zpass = options.zpass) != null ? _options$zpass : STENCILOP_KEEP;\n\t\tthis._evalKey();\n\t}\n\t_evalKey() {\n\t\tconst {\n\t\t\t_func,\n\t\t\t_ref,\n\t\t\t_fail,\n\t\t\t_zfail,\n\t\t\t_zpass,\n\t\t\t_readMask,\n\t\t\t_writeMask\n\t\t} = this;\n\t\tconst key = `${_func},${_ref},${_fail},${_zfail},${_zpass},${_readMask},${_writeMask}`;\n\t\tthis._key = stringIds.get(key);\n\t\tthis._dirty = false;\n\t}\n\tget key() {\n\t\tif (this._dirty) {\n\t\t\tthis._evalKey();\n\t\t}\n\t\treturn this._key;\n\t}\n\tcopy(rhs) {\n\t\tthis._func = rhs._func;\n\t\tthis._ref = rhs._ref;\n\t\tthis._readMask = rhs._readMask;\n\t\tthis._writeMask = rhs._writeMask;\n\t\tthis._fail = rhs._fail;\n\t\tthis._zfail = rhs._zfail;\n\t\tthis._zpass = rhs._zpass;\n\t\tthis._dirty = rhs._dirty;\n\t\tthis._key = rhs._key;\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst clone = new this.constructor();\n\t\treturn clone.copy(this);\n\t}\n}\n_StencilParameters = StencilParameters;\nStencilParameters.DEFAULT = Object.freeze(new _StencilParameters());\n\nexport { StencilParameters };\n", "import { extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { EventHandler } from '../../core/event-handler.js';\nimport { platform } from '../../core/platform.js';\nimport { Vec2 } from '../../core/math/vec2.js';\nimport { Color } from '../../core/math/color.js';\nimport { CLEARFLAG_COLOR, CLEARFLAG_DEPTH, PRIMITIVE_TRIFAN, SEMANTIC_POSITION, TYPE_FLOAT32, CULLFACE_BACK, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA16F, PIXELFORMAT_111110F, PRIMITIVE_POINTS } from './constants.js';\nimport { BlendState } from './blend-state.js';\nimport { DepthState } from './depth-state.js';\nimport { ScopeSpace } from './scope-space.js';\nimport { VertexBuffer } from './vertex-buffer.js';\nimport { VertexFormat } from './vertex-format.js';\nimport { StencilParameters } from './stencil-parameters.js';\n\nclass GraphicsDevice extends EventHandler {\n\tconstructor(canvas, options) {\n\t\tvar _this$initOptions, _this$initOptions$dep, _this$initOptions2, _this$initOptions2$st, _this$initOptions3, _this$initOptions3$an, _this$initOptions4, _this$initOptions4$po;\n\t\tsuper();\n\t\tthis.canvas = void 0;\n\t\tthis.backBuffer = null;\n\t\tthis.backBufferSize = new Vec2();\n\t\tthis.backBufferFormat = void 0;\n\t\tthis.backBufferAntialias = false;\n\t\tthis.isWebGPU = false;\n\t\tthis.isWebGL1 = false;\n\t\tthis.isWebGL2 = false;\n\t\tthis.scope = void 0;\n\t\tthis.boneLimit = void 0;\n\t\tthis.maxAnisotropy = void 0;\n\t\tthis.maxCubeMapSize = void 0;\n\t\tthis.maxTextureSize = void 0;\n\t\tthis.maxVolumeSize = void 0;\n\t\tthis.maxColorAttachments = 1;\n\t\tthis.precision = void 0;\n\t\tthis.samples = void 0;\n\t\tthis.supportsStencil = void 0;\n\t\tthis.supportsMrt = false;\n\t\tthis.supportsVolumeTextures = false;\n\t\tthis.supportsCompute = false;\n\t\tthis.supportsStorageTextureRead = false;\n\t\tthis.renderTarget = null;\n\t\tthis.shaders = [];\n\t\tthis.textures = [];\n\t\tthis.targets = new Set();\n\t\tthis.renderVersion = 0;\n\t\tthis.renderPassIndex = void 0;\n\t\tthis.insideRenderPass = false;\n\t\tthis.supportsInstancing = void 0;\n\t\tthis.supportsUniformBuffers = false;\n\t\tthis.textureFloatRenderable = void 0;\n\t\tthis.textureHalfFloatRenderable = void 0;\n\t\tthis.textureFloatFilterable = false;\n\t\tthis.textureHalfFloatFilterable = false;\n\t\tthis.quadVertexBuffer = void 0;\n\t\tthis.blendState = new BlendState();\n\t\tthis.depthState = new DepthState();\n\t\tthis.stencilEnabled = false;\n\t\tthis.stencilFront = new StencilParameters();\n\t\tthis.stencilBack = new StencilParameters();\n\t\tthis.dynamicBuffers = void 0;\n\t\tthis.gpuProfiler = void 0;\n\t\tthis.defaultClearOptions = {\n\t\t\tcolor: [0, 0, 0, 1],\n\t\t\tdepth: 1,\n\t\t\tstencil: 0,\n\t\t\tflags: CLEARFLAG_COLOR | CLEARFLAG_DEPTH\n\t\t};\n\t\tthis.clientRect = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t\tthis.canvas = canvas;\n\t\tthis.initOptions = _extends({}, options);\n\t\t(_this$initOptions$dep = (_this$initOptions = this.initOptions).depth) != null ? _this$initOptions$dep : _this$initOptions.depth = true;\n\t\t(_this$initOptions2$st = (_this$initOptions2 = this.initOptions).stencil) != null ? _this$initOptions2$st : _this$initOptions2.stencil = true;\n\t\t(_this$initOptions3$an = (_this$initOptions3 = this.initOptions).antialias) != null ? _this$initOptions3$an : _this$initOptions3.antialias = true;\n\t\t(_this$initOptions4$po = (_this$initOptions4 = this.initOptions).powerPreference) != null ? _this$initOptions4$po : _this$initOptions4.powerPreference = 'high-performance';\n\t\tthis._maxPixelRatio = platform.browser ? Math.min(1, window.devicePixelRatio) : 1;\n\t\tthis.buffers = [];\n\t\tthis._vram = {\n\t\t\ttex: 0,\n\t\t\tvb: 0,\n\t\t\tib: 0,\n\t\t\tub: 0,\n\t\t\tsb: 0\n\t\t};\n\t\tthis._shaderStats = {\n\t\t\tvsCompiled: 0,\n\t\t\tfsCompiled: 0,\n\t\t\tlinked: 0,\n\t\t\tmaterialShaders: 0,\n\t\t\tcompileTime: 0\n\t\t};\n\t\tthis.initializeContextCaches();\n\t\tthis._drawCallsPerFrame = 0;\n\t\tthis._shaderSwitchesPerFrame = 0;\n\t\tthis._primsPerFrame = [];\n\t\tfor (let i = PRIMITIVE_POINTS; i <= PRIMITIVE_TRIFAN; i++) {\n\t\t\tthis._primsPerFrame[i] = 0;\n\t\t}\n\t\tthis._renderTargetCreationTime = 0;\n\t\tthis.scope = new ScopeSpace(\"Device\");\n\t\tthis.textureBias = this.scope.resolve(\"textureBias\");\n\t\tthis.textureBias.setValue(0.0);\n\t}\n\tpostInit() {\n\t\tconst vertexFormat = new VertexFormat(this, [{\n\t\t\tsemantic: SEMANTIC_POSITION,\n\t\t\tcomponents: 2,\n\t\t\ttype: TYPE_FLOAT32\n\t\t}]);\n\t\tconst positions = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);\n\t\tthis.quadVertexBuffer = new VertexBuffer(this, vertexFormat, 4, {\n\t\t\tdata: positions\n\t\t});\n\t}\n\tdestroy() {\n\t\tvar _this$quadVertexBuffe, _this$dynamicBuffers, _this$gpuProfiler;\n\t\tthis.fire('destroy');\n\t\t(_this$quadVertexBuffe = this.quadVertexBuffer) == null || _this$quadVertexBuffe.destroy();\n\t\tthis.quadVertexBuffer = null;\n\t\t(_this$dynamicBuffers = this.dynamicBuffers) == null || _this$dynamicBuffers.destroy();\n\t\tthis.dynamicBuffers = null;\n\t\t(_this$gpuProfiler = this.gpuProfiler) == null || _this$gpuProfiler.destroy();\n\t\tthis.gpuProfiler = null;\n\t}\n\tonDestroyShader(shader) {\n\t\tthis.fire('destroy:shader', shader);\n\t\tconst idx = this.shaders.indexOf(shader);\n\t\tif (idx !== -1) {\n\t\t\tthis.shaders.splice(idx, 1);\n\t\t}\n\t}\n\tpostDestroy() {\n\t\tthis.scope = null;\n\t\tthis.canvas = null;\n\t}\n\tloseContext() {\n\t\tvar _this$gpuProfiler2;\n\t\tthis.contextLost = true;\n\t\tthis.backBufferSize.set(-1, -1);\n\t\tfor (const texture of this.textures) {\n\t\t\ttexture.loseContext();\n\t\t}\n\t\tfor (const buffer of this.buffers) {\n\t\t\tbuffer.loseContext();\n\t\t}\n\t\tfor (const target of this.targets) {\n\t\t\ttarget.loseContext();\n\t\t}\n\t\t(_this$gpuProfiler2 = this.gpuProfiler) == null || _this$gpuProfiler2.loseContext();\n\t}\n\trestoreContext() {\n\t\tvar _this$gpuProfiler3;\n\t\tthis.contextLost = false;\n\t\tthis.initializeRenderState();\n\t\tthis.initializeContextCaches();\n\t\tfor (const buffer of this.buffers) {\n\t\t\tbuffer.unlock();\n\t\t}\n\t\t(_this$gpuProfiler3 = this.gpuProfiler) == null || _this$gpuProfiler3.restoreContext == null || _this$gpuProfiler3.restoreContext();\n\t}\n\ttoJSON(key) {\n\t\treturn undefined;\n\t}\n\tinitializeContextCaches() {\n\t\tthis.indexBuffer = null;\n\t\tthis.vertexBuffers = [];\n\t\tthis.shader = null;\n\t\tthis.shaderValid = undefined;\n\t\tthis.shaderAsyncCompile = false;\n\t\tthis.renderTarget = null;\n\t}\n\tinitializeRenderState() {\n\t\tthis.blendState = new BlendState();\n\t\tthis.depthState = new DepthState();\n\t\tthis.cullMode = CULLFACE_BACK;\n\t\tthis.vx = this.vy = this.vw = this.vh = 0;\n\t\tthis.sx = this.sy = this.sw = this.sh = 0;\n\t\tthis.blendColor = new Color(0, 0, 0, 0);\n\t}\n\tsetStencilState(stencilFront, stencilBack) {}\n\tsetBlendState(blendState) {}\n\tsetBlendColor(r, g, b, a) {}\n\tsetDepthState(depthState) {}\n\tsetCullMode(cullMode) {}\n\tsetRenderTarget(renderTarget) {\n\t\tthis.renderTarget = renderTarget;\n\t}\n\tsetIndexBuffer(indexBuffer) {\n\t\tthis.indexBuffer = indexBuffer;\n\t}\n\tsetVertexBuffer(vertexBuffer) {\n\t\tif (vertexBuffer) {\n\t\t\tthis.vertexBuffers.push(vertexBuffer);\n\t\t}\n\t}\n\tclearVertexBuffer() {\n\t\tthis.vertexBuffers.length = 0;\n\t}\n\tgetRenderTarget() {\n\t\treturn this.renderTarget;\n\t}\n\tinitRenderTarget(target) {\n\t\tif (target.initialized) return;\n\t\ttarget.init();\n\t\tthis.targets.add(target);\n\t}\n\t_isBrowserInterface(texture) {\n\t\treturn this._isImageBrowserInterface(texture) || this._isImageCanvasInterface(texture) || this._isImageVideoInterface(texture);\n\t}\n\t_isImageBrowserInterface(texture) {\n\t\treturn typeof ImageBitmap !== 'undefined' && texture instanceof ImageBitmap || typeof HTMLImageElement !== 'undefined' && texture instanceof HTMLImageElement;\n\t}\n\t_isImageCanvasInterface(texture) {\n\t\treturn typeof HTMLCanvasElement !== 'undefined' && texture instanceof HTMLCanvasElement;\n\t}\n\t_isImageVideoInterface(texture) {\n\t\treturn typeof HTMLVideoElement !== 'undefined' && texture instanceof HTMLVideoElement;\n\t}\n\tresizeCanvas(width, height) {\n\t\tconst pixelRatio = Math.min(this._maxPixelRatio, platform.browser ? window.devicePixelRatio : 1);\n\t\tconst w = Math.floor(width * pixelRatio);\n\t\tconst h = Math.floor(height * pixelRatio);\n\t\tif (w !== this.canvas.width || h !== this.canvas.height) {\n\t\t\tthis.setResolution(w, h);\n\t\t}\n\t}\n\tsetResolution(width, height) {\n\t\tthis.canvas.width = width;\n\t\tthis.canvas.height = height;\n\t\tthis.fire(GraphicsDevice.EVENT_RESIZE, width, height);\n\t}\n\tupdateClientRect() {\n\t\tif (platform.worker) {\n\t\t\tthis.clientRect.width = this.canvas.width;\n\t\t\tthis.clientRect.height = this.canvas.height;\n\t\t} else {\n\t\t\tconst rect = this.canvas.getBoundingClientRect();\n\t\t\tthis.clientRect.width = rect.width;\n\t\t\tthis.clientRect.height = rect.height;\n\t\t}\n\t}\n\tget width() {\n\t\treturn this.canvas.width;\n\t}\n\tget height() {\n\t\treturn this.canvas.height;\n\t}\n\tset fullscreen(fullscreen) {}\n\tget fullscreen() {\n\t\treturn false;\n\t}\n\tset maxPixelRatio(ratio) {\n\t\tthis._maxPixelRatio = ratio;\n\t}\n\tget maxPixelRatio() {\n\t\treturn this._maxPixelRatio;\n\t}\n\tget deviceType() {\n\t\treturn this._deviceType;\n\t}\n\tgetBoneLimit() {\n\t\treturn this.boneLimit;\n\t}\n\tsetBoneLimit(maxBones) {\n\t\tthis.boneLimit = maxBones;\n\t}\n\tstartRenderPass(renderPass) {}\n\tendRenderPass(renderPass) {}\n\tstartComputePass() {}\n\tendComputePass() {}\n\tframeStart() {\n\t\tthis.renderPassIndex = 0;\n\t\tthis.renderVersion++;\n\t}\n\tframeEnd() {}\n\tcomputeDispatch(computes) {}\n\tgetRenderableHdrFormat(formats = [PIXELFORMAT_111110F, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F], filterable = true) {\n\t\tfor (let i = 0; i < formats.length; i++) {\n\t\t\tconst format = formats[i];\n\t\t\tswitch (format) {\n\t\t\t\tcase PIXELFORMAT_111110F:\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.textureRG11B10Renderable) return format;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\t\t\tif (this.textureHalfFloatRenderable && (!filterable || this.textureHalfFloatFilterable)) {\n\t\t\t\t\t\treturn format;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\t\t\tif (this.textureFloatRenderable && (!filterable || this.textureFloatFilterable)) {\n\t\t\t\t\t\treturn format;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n}\nGraphicsDevice.EVENT_RESIZE = 'resizecanvas';\n\nexport { GraphicsDevice };\n", "import { PIXELFORMAT_DEPTH, PIXELFORMAT_DEPTHSTENCIL } from './constants.js';\nimport { GraphicsDevice } from './graphics-device.js';\n\nlet id = 0;\nclass RenderTarget {\n\tconstructor(options = {}) {\n\t\tvar _options$face, _this$_colorBuffer, _this$_depthBuffer, _options$samples, _options$autoResolve, _options$flipY;\n\t\tthis.name = void 0;\n\t\tthis._device = void 0;\n\t\tthis._colorBuffer = void 0;\n\t\tthis._colorBuffers = void 0;\n\t\tthis._depthBuffer = void 0;\n\t\tthis._depth = void 0;\n\t\tthis._stencil = void 0;\n\t\tthis._samples = void 0;\n\t\tthis.autoResolve = void 0;\n\t\tthis._face = void 0;\n\t\tthis.flipY = void 0;\n\t\tthis.id = id++;\n\t\tconst _arg2 = arguments[1];\n\t\tconst _arg3 = arguments[2];\n\t\tif (options instanceof GraphicsDevice) {\n\t\t\tthis._colorBuffer = _arg2;\n\t\t\toptions = _arg3;\n\t\t} else {\n\t\t\tthis._colorBuffer = options.colorBuffer;\n\t\t}\n\t\tif (this._colorBuffer) {\n\t\t\tthis._colorBuffers = [this._colorBuffer];\n\t\t}\n\t\tthis._depthBuffer = options.depthBuffer;\n\t\tthis._face = (_options$face = options.face) != null ? _options$face : 0;\n\t\tif (this._depthBuffer) {\n\t\t\tconst format = this._depthBuffer._format;\n\t\t\tif (format === PIXELFORMAT_DEPTH) {\n\t\t\t\tthis._depth = true;\n\t\t\t\tthis._stencil = false;\n\t\t\t} else if (format === PIXELFORMAT_DEPTHSTENCIL) {\n\t\t\t\tthis._depth = true;\n\t\t\t\tthis._stencil = true;\n\t\t\t} else {\n\t\t\t\tthis._depth = false;\n\t\t\t\tthis._stencil = false;\n\t\t\t}\n\t\t} else {\n\t\t\tvar _options$depth, _options$stencil;\n\t\t\tthis._depth = (_options$depth = options.depth) != null ? _options$depth : true;\n\t\t\tthis._stencil = (_options$stencil = options.stencil) != null ? _options$stencil : false;\n\t\t}\n\t\tif (options.colorBuffers) {\n\t\t\tif (!this._colorBuffers) {\n\t\t\t\tthis._colorBuffers = [...options.colorBuffers];\n\t\t\t\tthis._colorBuffer = options.colorBuffers[0];\n\t\t\t}\n\t\t}\n\t\tconst device = ((_this$_colorBuffer = this._colorBuffer) == null ? void 0 : _this$_colorBuffer.device) || ((_this$_depthBuffer = this._depthBuffer) == null ? void 0 : _this$_depthBuffer.device) || options.graphicsDevice;\n\t\tthis._device = device;\n\t\tconst {\n\t\t\tmaxSamples\n\t\t} = this._device;\n\t\tthis._samples = Math.min((_options$samples = options.samples) != null ? _options$samples : 1, maxSamples);\n\t\tif (device.isWebGPU) {\n\t\t\tthis._samples = this._samples > 1 ? maxSamples : 1;\n\t\t}\n\t\tthis.autoResolve = (_options$autoResolve = options.autoResolve) != null ? _options$autoResolve : true;\n\t\tthis.name = options.name;\n\t\tif (!this.name) {\n\t\t\tvar _this$_colorBuffer2;\n\t\t\tthis.name = (_this$_colorBuffer2 = this._colorBuffer) == null ? void 0 : _this$_colorBuffer2.name;\n\t\t}\n\t\tif (!this.name) {\n\t\t\tvar _this$_depthBuffer2;\n\t\t\tthis.name = (_this$_depthBuffer2 = this._depthBuffer) == null ? void 0 : _this$_depthBuffer2.name;\n\t\t}\n\t\tif (!this.name) {\n\t\t\tthis.name = \"Untitled\";\n\t\t}\n\t\tthis.flipY = (_options$flipY = options.flipY) != null ? _options$flipY : false;\n\t\tthis.validateMrt();\n\t\tthis.impl = device.createRenderTargetImpl(this);\n\t}\n\tdestroy() {\n\t\tconst device = this._device;\n\t\tif (device) {\n\t\t\tdevice.targets.delete(this);\n\t\t\tif (device.renderTarget === this) {\n\t\t\t\tdevice.setRenderTarget(null);\n\t\t\t}\n\t\t\tthis.destroyFrameBuffers();\n\t\t}\n\t}\n\tdestroyFrameBuffers() {\n\t\tconst device = this._device;\n\t\tif (device) {\n\t\t\tthis.impl.destroy(device);\n\t\t}\n\t}\n\tdestroyTextureBuffers() {\n\t\tvar _this$_depthBuffer3, _this$_colorBuffers;\n\t\t(_this$_depthBuffer3 = this._depthBuffer) == null || _this$_depthBuffer3.destroy();\n\t\tthis._depthBuffer = null;\n\t\t(_this$_colorBuffers = this._colorBuffers) == null || _this$_colorBuffers.forEach(colorBuffer => {\n\t\t\tcolorBuffer.destroy();\n\t\t});\n\t\tthis._colorBuffers = null;\n\t\tthis._colorBuffer = null;\n\t}\n\tresize(width, height) {\n\t\tif (this.width !== width || this.height !== height) {\n\t\t\tvar _this$_depthBuffer4, _this$_colorBuffers2;\n\t\t\tconst device = this._device;\n\t\t\tthis.destroyFrameBuffers();\n\t\t\tif (device.renderTarget === this) {\n\t\t\t\tdevice.setRenderTarget(null);\n\t\t\t}\n\t\t\t(_this$_depthBuffer4 = this._depthBuffer) == null || _this$_depthBuffer4.resize(width, height);\n\t\t\t(_this$_colorBuffers2 = this._colorBuffers) == null || _this$_colorBuffers2.forEach(colorBuffer => {\n\t\t\t\tcolorBuffer.resize(width, height);\n\t\t\t});\n\t\t\tthis.validateMrt();\n\t\t\tthis.impl = device.createRenderTargetImpl(this);\n\t\t}\n\t}\n\tvalidateMrt() {}\n\tinit() {\n\t\tthis.impl.init(this._device, this);\n\t}\n\tget initialized() {\n\t\treturn this.impl.initialized;\n\t}\n\tget device() {\n\t\treturn this._device;\n\t}\n\tloseContext() {\n\t\tthis.impl.loseContext();\n\t}\n\tresolve(color = true, depth = !!this._depthBuffer) {\n\t\tif (this._device && this._samples > 1) {\n\t\t\tthis.impl.resolve(this._device, this, color, depth);\n\t\t}\n\t}\n\tcopy(source, color, depth) {\n\t\tif (!this._device) {\n\t\t\tif (source._device) {\n\t\t\t\tthis._device = source._device;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tconst success = this._device.copyRenderTarget(source, this, color, depth);\n\t\treturn success;\n\t}\n\tget samples() {\n\t\treturn this._samples;\n\t}\n\tget depth() {\n\t\treturn this._depth;\n\t}\n\tget stencil() {\n\t\treturn this._stencil;\n\t}\n\tget colorBuffer() {\n\t\treturn this._colorBuffer;\n\t}\n\tgetColorBuffer(index) {\n\t\tvar _this$_colorBuffers3;\n\t\treturn (_this$_colorBuffers3 = this._colorBuffers) == null ? void 0 : _this$_colorBuffers3[index];\n\t}\n\tget depthBuffer() {\n\t\treturn this._depthBuffer;\n\t}\n\tget face() {\n\t\treturn this._face;\n\t}\n\tget width() {\n\t\tvar _this$_colorBuffer3, _this$_depthBuffer5;\n\t\treturn ((_this$_colorBuffer3 = this._colorBuffer) == null ? void 0 : _this$_colorBuffer3.width) || ((_this$_depthBuffer5 = this._depthBuffer) == null ? void 0 : _this$_depthBuffer5.width) || this._device.width;\n\t}\n\tget height() {\n\t\tvar _this$_colorBuffer4, _this$_depthBuffer6;\n\t\treturn ((_this$_colorBuffer4 = this._colorBuffer) == null ? void 0 : _this$_colorBuffer4.height) || ((_this$_depthBuffer6 = this._depthBuffer) == null ? void 0 : _this$_depthBuffer6.height) || this._device.height;\n\t}\n}\n\nexport { RenderTarget };\n", "class WebgpuBindGroup {\n\tconstructor() {\n\t\tthis.bindGroup = void 0;\n\t}\n\tupdate(bindGroup) {\n\t\tthis.destroy();\n\t\tconst device = bindGroup.device;\n\t\tconst descr = this.createDescriptor(device, bindGroup);\n\t\tthis.bindGroup = device.wgpu.createBindGroup(descr);\n\t}\n\tdestroy() {\n\t\tthis.bindGroup = null;\n\t}\n\tcreateDescriptor(device, bindGroup) {\n\t\tconst entries = [];\n\t\tconst format = bindGroup.format;\n\t\tconst uniformBufferFormats = bindGroup.format.uniformBufferFormats;\n\t\tbindGroup.uniformBuffers.forEach((ub, i) => {\n\t\t\tconst slot = uniformBufferFormats[i].slot;\n\t\t\tconst buffer = ub.persistent ? ub.impl.buffer : ub.allocation.gpuBuffer.buffer;\n\t\t\tentries.push({\n\t\t\t\tbinding: slot,\n\t\t\t\tresource: {\n\t\t\t\t\tbuffer: buffer,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tsize: ub.format.byteSize\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tconst textureFormats = bindGroup.format.textureFormats;\n\t\tbindGroup.textures.forEach((tex, textureIndex) => {\n\t\t\tconst wgpuTexture = tex.impl;\n\t\t\tconst textureFormat = format.textureFormats[textureIndex];\n\t\t\tconst slot = textureFormats[textureIndex].slot;\n\t\t\tconst view = wgpuTexture.getView(device);\n\t\t\tentries.push({\n\t\t\t\tbinding: slot,\n\t\t\t\tresource: view\n\t\t\t});\n\t\t\tif (textureFormat.hasSampler) {\n\t\t\t\tconst sampler = wgpuTexture.getSampler(device, textureFormat.sampleType);\n\t\t\t\tentries.push({\n\t\t\t\t\tbinding: slot + 1,\n\t\t\t\t\tresource: sampler\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tconst storageTextureFormats = bindGroup.format.storageTextureFormats;\n\t\tbindGroup.storageTextures.forEach((tex, textureIndex) => {\n\t\t\tconst wgpuTexture = tex.impl;\n\t\t\tconst slot = storageTextureFormats[textureIndex].slot;\n\t\t\tconst view = wgpuTexture.getView(device);\n\t\t\tentries.push({\n\t\t\t\tbinding: slot,\n\t\t\t\tresource: view\n\t\t\t});\n\t\t});\n\t\tconst storageBufferFormats = bindGroup.format.storageBufferFormats;\n\t\tbindGroup.storageBuffers.forEach((buffer, bufferIndex) => {\n\t\t\tconst wgpuBuffer = buffer.impl.buffer;\n\t\t\tconst slot = storageBufferFormats[bufferIndex].slot;\n\t\t\tentries.push({\n\t\t\t\tbinding: slot,\n\t\t\t\tresource: {\n\t\t\t\t\tbuffer: wgpuBuffer\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tconst descr = {\n\t\t\tlayout: bindGroup.format.impl.bindGroupLayout,\n\t\t\tentries: entries\n\t\t};\n\t\treturn descr;\n\t}\n}\n\nexport { WebgpuBindGroup };\n", "import { SHADERSTAGE_VERTEX, SHADERSTAGE_FRAGMENT, SHADERSTAGE_COMPUTE } from '../constants.js';\n\nclass WebgpuUtils {\n\tstatic shaderStage(stage) {\n\t\tlet ret = 0;\n\t\tif (stage & SHADERSTAGE_VERTEX) ret |= GPUShaderStage.VERTEX;\n\t\tif (stage & SHADERSTAGE_FRAGMENT) ret |= GPUShaderStage.FRAGMENT;\n\t\tif (stage & SHADERSTAGE_COMPUTE) ret |= GPUShaderStage.COMPUTE;\n\t\treturn ret;\n\t}\n}\n\nexport { WebgpuUtils };\n", "import { PIXELFORMAT_A8, PIXELFORMAT_L8, PIXELFORMAT_LA8, PIXELFORMAT_RGB565, PIXELFORMAT_RGBA5551, PIXELFORMAT_RGBA4, PIXELFORMAT_RGB8, PIXELFORMAT_RGBA8, PIXELFORMAT_DXT1, PIXELFORMAT_DXT3, PIXELFORMAT_DXT5, PIXELFORMAT_RGB16F, PIXELFORMAT_RGBA16F, PIXELFORMAT_R16F, PIXELFORMAT_RG16F, PIXELFORMAT_RGB32F, PIXELFORMAT_RGBA32F, PIXELFORMAT_R32F, PIXELFORMAT_DEPTH, PIXELFORMAT_DEPTHSTENCIL, PIXELFORMAT_111110F, PIXELFORMAT_SRGB, PIXELFORMAT_SRGBA, PIXELFORMAT_ETC1, PIXELFORMAT_ETC2_RGB, PIXELFORMAT_ETC2_RGBA, PIXELFORMAT_PVRTC_2BPP_RGB_1, PIXELFORMAT_PVRTC_2BPP_RGBA_1, PIXELFORMAT_PVRTC_4BPP_RGB_1, PIXELFORMAT_PVRTC_4BPP_RGBA_1, PIXELFORMAT_ASTC_4x4, PIXELFORMAT_ATC_RGB, PIXELFORMAT_ATC_RGBA, PIXELFORMAT_BGRA8, PIXELFORMAT_R8I, PIXELFORMAT_R8U, PIXELFORMAT_R16I, PIXELFORMAT_R16U, PIXELFORMAT_R32I, PIXELFORMAT_R32U, PIXELFORMAT_RG8I, PIXELFORMAT_RG8U, PIXELFORMAT_RG16I, PIXELFORMAT_RG16U, PIXELFORMAT_RG32I, PIXELFORMAT_RG32U, PIXELFORMAT_RGBA8I, PIXELFORMAT_RGBA8U, PIXELFORMAT_RGBA16I, PIXELFORMAT_RGBA16U, PIXELFORMAT_RGBA32I, PIXELFORMAT_RGBA32U } from '../constants.js';\n\nconst gpuTextureFormats = [];\ngpuTextureFormats[PIXELFORMAT_A8] = '';\ngpuTextureFormats[PIXELFORMAT_L8] = 'r8unorm';\ngpuTextureFormats[PIXELFORMAT_LA8] = 'rg8unorm';\ngpuTextureFormats[PIXELFORMAT_RGB565] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA5551] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA4] = '';\ngpuTextureFormats[PIXELFORMAT_RGB8] = 'rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_RGBA8] = 'rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_DXT1] = 'bc1-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_DXT3] = 'bc2-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_DXT5] = 'bc3-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_RGB16F] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA16F] = 'rgba16float';\ngpuTextureFormats[PIXELFORMAT_R16F] = 'r16float';\ngpuTextureFormats[PIXELFORMAT_RG16F] = 'rg16float';\ngpuTextureFormats[PIXELFORMAT_RGB32F] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA32F] = 'rgba32float';\ngpuTextureFormats[PIXELFORMAT_R32F] = 'r32float';\ngpuTextureFormats[PIXELFORMAT_DEPTH] = 'depth32float';\ngpuTextureFormats[PIXELFORMAT_DEPTHSTENCIL] = 'depth24plus-stencil8';\ngpuTextureFormats[PIXELFORMAT_111110F] = 'rg11b10ufloat';\ngpuTextureFormats[PIXELFORMAT_SRGB] = '';\ngpuTextureFormats[PIXELFORMAT_SRGBA] = '';\ngpuTextureFormats[PIXELFORMAT_ETC1] = '';\ngpuTextureFormats[PIXELFORMAT_ETC2_RGB] = 'etc2-rgb8unorm';\ngpuTextureFormats[PIXELFORMAT_ETC2_RGBA] = 'etc2-rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_PVRTC_2BPP_RGB_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_2BPP_RGBA_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_4BPP_RGB_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_4BPP_RGBA_1] = '';\ngpuTextureFormats[PIXELFORMAT_ASTC_4x4] = 'astc-4x4-unorm';\ngpuTextureFormats[PIXELFORMAT_ATC_RGB] = '';\ngpuTextureFormats[PIXELFORMAT_ATC_RGBA] = '';\ngpuTextureFormats[PIXELFORMAT_BGRA8] = 'bgra8unorm';\ngpuTextureFormats[PIXELFORMAT_R8I] = 'r8sint';\ngpuTextureFormats[PIXELFORMAT_R8U] = 'r8uint';\ngpuTextureFormats[PIXELFORMAT_R16I] = 'r16sint';\ngpuTextureFormats[PIXELFORMAT_R16U] = 'r16uint';\ngpuTextureFormats[PIXELFORMAT_R32I] = 'r32sint';\ngpuTextureFormats[PIXELFORMAT_R32U] = 'r32uint';\ngpuTextureFormats[PIXELFORMAT_RG8I] = 'rg8sint';\ngpuTextureFormats[PIXELFORMAT_RG8U] = 'rg8uint';\ngpuTextureFormats[PIXELFORMAT_RG16I] = 'rg16sint';\ngpuTextureFormats[PIXELFORMAT_RG16U] = 'rg16uint';\ngpuTextureFormats[PIXELFORMAT_RG32I] = 'rg32sint';\ngpuTextureFormats[PIXELFORMAT_RG32U] = 'rg32uint';\ngpuTextureFormats[PIXELFORMAT_RGBA8I] = 'rgba8sint';\ngpuTextureFormats[PIXELFORMAT_RGBA8U] = 'rgba8uint';\ngpuTextureFormats[PIXELFORMAT_RGBA16I] = 'rgba16sint';\ngpuTextureFormats[PIXELFORMAT_RGBA16U] = 'rgba16uint';\ngpuTextureFormats[PIXELFORMAT_RGBA32I] = 'rgba32sint';\ngpuTextureFormats[PIXELFORMAT_RGBA32U] = 'rgba32uint';\n\nexport { gpuTextureFormats };\n", "import { StringIds } from '../../../core/string-ids.js';\nimport { SAMPLETYPE_FLOAT, SAMPLETYPE_UNFILTERABLE_FLOAT, SAMPLETYPE_DEPTH, SAMPLETYPE_INT, SAMPLETYPE_UINT } from '../constants.js';\nimport { WebgpuUtils } from './webgpu-utils.js';\nimport { gpuTextureFormats } from './constants.js';\n\nconst samplerTypes = [];\nsamplerTypes[SAMPLETYPE_FLOAT] = 'filtering';\nsamplerTypes[SAMPLETYPE_UNFILTERABLE_FLOAT] = 'non-filtering';\nsamplerTypes[SAMPLETYPE_DEPTH] = 'comparison';\nsamplerTypes[SAMPLETYPE_INT] = 'comparison';\nsamplerTypes[SAMPLETYPE_UINT] = 'comparison';\nconst sampleTypes = [];\nsampleTypes[SAMPLETYPE_FLOAT] = 'float';\nsampleTypes[SAMPLETYPE_UNFILTERABLE_FLOAT] = 'unfilterable-float';\nsampleTypes[SAMPLETYPE_DEPTH] = 'depth';\nsampleTypes[SAMPLETYPE_INT] = 'sint';\nsampleTypes[SAMPLETYPE_UINT] = 'uint';\nconst stringIds = new StringIds();\nclass WebgpuBindGroupFormat {\n\tconstructor(bindGroupFormat) {\n\t\tconst device = bindGroupFormat.device;\n\t\tconst {\n\t\t\tkey,\n\t\t\tdescr\n\t\t} = this.createDescriptor(bindGroupFormat);\n\t\tthis.key = stringIds.get(key);\n\t\tthis.bindGroupLayout = device.wgpu.createBindGroupLayout(descr);\n\t}\n\tdestroy() {\n\t\tthis.bindGroupLayout = null;\n\t}\n\tloseContext() {}\n\tcreateDescriptor(bindGroupFormat) {\n\t\tconst entries = [];\n\t\tlet key = '';\n\t\tbindGroupFormat.uniformBufferFormats.forEach(bufferFormat => {\n\t\t\tconst visibility = WebgpuUtils.shaderStage(bufferFormat.visibility);\n\t\t\tkey += `#${bufferFormat.slot}U:${visibility}`;\n\t\t\tentries.push({\n\t\t\t\tbinding: bufferFormat.slot,\n\t\t\t\tvisibility: visibility,\n\t\t\t\tbuffer: {\n\t\t\t\t\ttype: 'uniform',\n\t\t\t\t\thasDynamicOffset: true\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tbindGroupFormat.textureFormats.forEach(textureFormat => {\n\t\t\tconst visibility = WebgpuUtils.shaderStage(textureFormat.visibility);\n\t\t\tconst sampleType = textureFormat.sampleType;\n\t\t\tconst viewDimension = textureFormat.textureDimension;\n\t\t\tconst multisampled = false;\n\t\t\tconst gpuSampleType = sampleTypes[sampleType];\n\t\t\tkey += `#${textureFormat.slot}T:${visibility}-${gpuSampleType}-${viewDimension}-${multisampled}`;\n\t\t\tentries.push({\n\t\t\t\tbinding: textureFormat.slot,\n\t\t\t\tvisibility: visibility,\n\t\t\t\ttexture: {\n\t\t\t\t\tsampleType: gpuSampleType,\n\t\t\t\t\tviewDimension: viewDimension,\n\t\t\t\t\tmultisampled: multisampled\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (textureFormat.hasSampler) {\n\t\t\t\tconst gpuSamplerType = samplerTypes[sampleType];\n\t\t\t\tkey += `#${textureFormat.slot + 1}S:${visibility}-${gpuSamplerType}`;\n\t\t\t\tentries.push({\n\t\t\t\t\tbinding: textureFormat.slot + 1,\n\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\tsampler: {\n\t\t\t\t\t\ttype: gpuSamplerType\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tbindGroupFormat.storageTextureFormats.forEach(textureFormat => {\n\t\t\tconst {\n\t\t\t\tformat,\n\t\t\t\ttextureDimension\n\t\t\t} = textureFormat;\n\t\t\tconst {\n\t\t\t\tread,\n\t\t\t\twrite\n\t\t\t} = textureFormat;\n\t\t\tkey += `#${textureFormat.slot}ST:${format}-${textureDimension}-${read ? 'r1' : 'r0'}-${write ? 'w1' : 'w0'}`;\n\t\t\tentries.push({\n\t\t\t\tbinding: textureFormat.slot,\n\t\t\t\tvisibility: GPUShaderStage.COMPUTE,\n\t\t\t\tstorageTexture: {\n\t\t\t\t\taccess: read ? write ? 'read-write' : 'read-only' : 'write-only',\n\t\t\t\t\tformat: gpuTextureFormats[format],\n\t\t\t\t\tviewDimension: textureDimension\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tbindGroupFormat.storageBufferFormats.forEach(bufferFormat => {\n\t\t\tconst readOnly = bufferFormat.readOnly;\n\t\t\tconst visibility = WebgpuUtils.shaderStage(bufferFormat.visibility);\n\t\t\tkey += `#${bufferFormat.slot}SB:${visibility}-${readOnly ? 'ro' : 'rw'}`;\n\t\t\tentries.push({\n\t\t\t\tbinding: bufferFormat.slot,\n\t\t\t\tvisibility: visibility,\n\t\t\t\tbuffer: {\n\t\t\t\t\ttype: readOnly ? 'read-only-storage' : 'storage'\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tconst descr = {\n\t\t\tentries: entries\n\t\t};\n\t\treturn {\n\t\t\tkey,\n\t\t\tdescr\n\t\t};\n\t}\n}\n\nexport { WebgpuBindGroupFormat };\n", "class WebgpuBuffer {\n\tconstructor(usageFlags = 0) {\n\t\tthis.buffer = null;\n\t\tthis.usageFlags = 0;\n\t\tthis.usageFlags = usageFlags;\n\t}\n\tdestroy(device) {\n\t\tif (this.buffer) {\n\t\t\tthis.buffer.destroy();\n\t\t\tthis.buffer = null;\n\t\t}\n\t}\n\tget initialized() {\n\t\treturn !!this.buffer;\n\t}\n\tloseContext() {}\n\tallocate(device, size) {\n\t\tthis.buffer = device.wgpu.createBuffer({\n\t\t\tsize,\n\t\t\tusage: this.usageFlags\n\t\t});\n\t}\n\tunlock(device, storage) {\n\t\tvar _storage$byteOffset, _storage$buffer;\n\t\tconst wgpu = device.wgpu;\n\t\tif (!this.buffer) {\n\t\t\tconst size = storage.byteLength + 3 & ~3;\n\t\t\tthis.usageFlags |= GPUBufferUsage.COPY_DST;\n\t\t\tthis.allocate(device, size);\n\t\t}\n\t\tconst srcOffset = (_storage$byteOffset = storage.byteOffset) != null ? _storage$byteOffset : 0;\n\t\tconst srcData = new Uint8Array((_storage$buffer = storage.buffer) != null ? _storage$buffer : storage, srcOffset, storage.byteLength);\n\t\tconst data = new Uint8Array(this.buffer.size);\n\t\tdata.set(srcData);\n\t\twgpu.queue.writeBuffer(this.buffer, 0, data, 0, data.length);\n\t}\n\tread(device, offset, size, data) {\n\t\treturn device.readStorageBuffer(this, offset, size, data);\n\t}\n\twrite(device, bufferOffset, data, dataOffset, size) {\n\t\tdevice.writeStorageBuffer(this, bufferOffset, data, dataOffset, size);\n\t}\n\tclear(device, offset, size) {\n\t\tdevice.clearStorageBuffer(this, offset, size);\n\t}\n}\n\nexport { WebgpuBuffer };\n", "import { BUFFERUSAGE_INDEX, BUFFERUSAGE_STORAGE, INDEXFORMAT_UINT16 } from '../constants.js';\nimport { WebgpuBuffer } from './webgpu-buffer.js';\n\nclass WebgpuIndexBuffer extends WebgpuBuffer {\n\tconstructor(indexBuffer, options) {\n\t\tsuper(BUFFERUSAGE_INDEX | (options != null && options.storage ? BUFFERUSAGE_STORAGE : 0));\n\t\tthis.format = null;\n\t\tthis.format = indexBuffer.format === INDEXFORMAT_UINT16 ? \"uint16\" : \"uint32\";\n\t}\n\tunlock(indexBuffer) {\n\t\tconst device = indexBuffer.device;\n\t\tsuper.unlock(device, indexBuffer.storage);\n\t}\n}\n\nexport { WebgpuIndexBuffer };\n", "const array = {\n\tequals(arr1, arr2) {\n\t\tif (arr1.length !== arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (let i = 0; i < arr1.length; i++) {\n\t\t\tif (arr1[i] !== arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n};\n\nexport { array };\n", "import { semanticToLocation, TYPE_INT8, TYPE_UINT8, TYPE_INT16, TYPE_UINT16, TYPE_INT32, TYPE_UINT32, TYPE_FLOAT32, TYPE_FLOAT16 } from '../constants.js';\n\nconst gpuVertexFormats = [];\ngpuVertexFormats[TYPE_INT8] = 'sint8';\ngpuVertexFormats[TYPE_UINT8] = 'uint8';\ngpuVertexFormats[TYPE_INT16] = 'sint16';\ngpuVertexFormats[TYPE_UINT16] = 'uint16';\ngpuVertexFormats[TYPE_INT32] = 'sint32';\ngpuVertexFormats[TYPE_UINT32] = 'uint32';\ngpuVertexFormats[TYPE_FLOAT32] = 'float32';\ngpuVertexFormats[TYPE_FLOAT16] = 'float16';\nconst gpuVertexFormatsNormalized = [];\ngpuVertexFormatsNormalized[TYPE_INT8] = 'snorm8';\ngpuVertexFormatsNormalized[TYPE_UINT8] = 'unorm8';\ngpuVertexFormatsNormalized[TYPE_INT16] = 'snorm16';\ngpuVertexFormatsNormalized[TYPE_UINT16] = 'unorm16';\ngpuVertexFormatsNormalized[TYPE_INT32] = 'sint32';\ngpuVertexFormatsNormalized[TYPE_UINT32] = 'uint32';\ngpuVertexFormatsNormalized[TYPE_FLOAT32] = 'float32';\ngpuVertexFormatsNormalized[TYPE_FLOAT16] = 'float16';\nclass WebgpuVertexBufferLayout {\n\tconstructor() {\n\t\tthis.cache = new Map();\n\t}\n\tget(vertexFormat0, vertexFormat1 = null) {\n\t\tconst key = this.getKey(vertexFormat0, vertexFormat1);\n\t\tlet layout = this.cache.get(key);\n\t\tif (!layout) {\n\t\t\tlayout = this.create(vertexFormat0, vertexFormat1);\n\t\t\tthis.cache.set(key, layout);\n\t\t}\n\t\treturn layout;\n\t}\n\tgetKey(vertexFormat0, vertexFormat1 = null) {\n\t\treturn `${vertexFormat0 == null ? void 0 : vertexFormat0.renderingHashString}-${vertexFormat1 == null ? void 0 : vertexFormat1.renderingHashString}`;\n\t}\n\tcreate(vertexFormat0, vertexFormat1) {\n\t\tconst layout = [];\n\t\tconst addFormat = format => {\n\t\t\tconst interleaved = format.interleaved;\n\t\t\tconst stepMode = format.instancing ? 'instance' : 'vertex';\n\t\t\tlet attributes = [];\n\t\t\tconst elementCount = format.elements.length;\n\t\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\t\tconst element = format.elements[i];\n\t\t\t\tconst location = semanticToLocation[element.name];\n\t\t\t\tconst formatTable = element.normalize ? gpuVertexFormatsNormalized : gpuVertexFormats;\n\t\t\t\tattributes.push({\n\t\t\t\t\tshaderLocation: location,\n\t\t\t\t\toffset: interleaved ? element.offset : 0,\n\t\t\t\t\tformat: `${formatTable[element.dataType]}${element.numComponents > 1 ? 'x' + element.numComponents : ''}`\n\t\t\t\t});\n\t\t\t\tif (!interleaved || i === elementCount - 1) {\n\t\t\t\t\tlayout.push({\n\t\t\t\t\t\tattributes: attributes,\n\t\t\t\t\t\tarrayStride: element.stride,\n\t\t\t\t\t\tstepMode: stepMode\n\t\t\t\t\t});\n\t\t\t\t\tattributes = [];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tif (vertexFormat0) addFormat(vertexFormat0);\n\t\tif (vertexFormat1) addFormat(vertexFormat1);\n\t\treturn layout;\n\t}\n}\n\nexport { WebgpuVertexBufferLayout };\n", "class WebgpuPipeline {\n\tconstructor(device) {\n\t\tthis.device = device;\n\t}\n\tgetPipelineLayout(bindGroupFormats) {\n\t\tconst bindGroupLayouts = [];\n\t\tbindGroupFormats.forEach(format => {\n\t\t\tbindGroupLayouts.push(format.bindGroupLayout);\n\t\t});\n\t\tconst descr = {\n\t\t\tbindGroupLayouts: bindGroupLayouts\n\t\t};\n\t\tconst pipelineLayout = this.device.wgpu.createPipelineLayout(descr);\n\t\treturn pipelineLayout;\n\t}\n}\n\nexport { WebgpuPipeline };\n", "import { hash32Fnv1a } from '../../../core/hash.js';\nimport { array } from '../../../core/array-utils.js';\nimport { WebgpuVertexBufferLayout } from './webgpu-vertex-buffer-layout.js';\nimport { WebgpuPipeline } from './webgpu-pipeline.js';\n\nconst _primitiveTopology = ['point-list', 'line-list', undefined, 'line-strip', 'triangle-list', 'triangle-strip', undefined];\nconst _blendOperation = ['add', 'subtract', 'reverse-subtract', 'min', 'max'];\nconst _blendFactor = ['zero', 'one', 'src', 'one-minus-src', 'dst', 'one-minus-dst', 'src-alpha', 'src-alpha-saturated', 'one-minus-src-alpha', 'dst-alpha', 'one-minus-dst-alpha', 'constant', 'one-minus-constant'];\nconst _compareFunction = ['never', 'less', 'equal', 'less-equal', 'greater', 'not-equal', 'greater-equal', 'always'];\nconst _cullModes = ['none', 'back', 'front'];\nconst _stencilOps = ['keep', 'zero', 'replace', 'increment-clamp', 'increment-wrap', 'decrement-clamp', 'decrement-wrap', 'invert'];\nclass CacheEntry {\n\tconstructor() {\n\t\tthis.pipeline = void 0;\n\t\tthis.hashes = void 0;\n\t}\n}\nclass WebgpuRenderPipeline extends WebgpuPipeline {\n\tconstructor(device) {\n\t\tsuper(device);\n\t\tthis.lookupHashes = new Uint32Array(13);\n\t\tthis.vertexBufferLayout = new WebgpuVertexBufferLayout();\n\t\tthis.cache = new Map();\n\t}\n\tget(primitive, vertexFormat0, vertexFormat1, shader, renderTarget, bindGroupFormats, blendState, depthState, cullMode, stencilEnabled, stencilFront, stencilBack) {\n\t\tvar _vertexFormat0$render, _vertexFormat1$render, _bindGroupFormats$0$k, _bindGroupFormats$, _bindGroupFormats$1$k, _bindGroupFormats$2, _bindGroupFormats$2$k, _bindGroupFormats$3;\n\t\tconst lookupHashes = this.lookupHashes;\n\t\tlookupHashes[0] = primitive.type;\n\t\tlookupHashes[1] = shader.id;\n\t\tlookupHashes[2] = cullMode;\n\t\tlookupHashes[3] = depthState.key;\n\t\tlookupHashes[4] = blendState.key;\n\t\tlookupHashes[5] = (_vertexFormat0$render = vertexFormat0 == null ? void 0 : vertexFormat0.renderingHash) != null ? _vertexFormat0$render : 0;\n\t\tlookupHashes[6] = (_vertexFormat1$render = vertexFormat1 == null ? void 0 : vertexFormat1.renderingHash) != null ? _vertexFormat1$render : 0;\n\t\tlookupHashes[7] = renderTarget.impl.key;\n\t\tlookupHashes[8] = (_bindGroupFormats$0$k = (_bindGroupFormats$ = bindGroupFormats[0]) == null ? void 0 : _bindGroupFormats$.key) != null ? _bindGroupFormats$0$k : 0;\n\t\tlookupHashes[9] = (_bindGroupFormats$1$k = (_bindGroupFormats$2 = bindGroupFormats[1]) == null ? void 0 : _bindGroupFormats$2.key) != null ? _bindGroupFormats$1$k : 0;\n\t\tlookupHashes[10] = (_bindGroupFormats$2$k = (_bindGroupFormats$3 = bindGroupFormats[2]) == null ? void 0 : _bindGroupFormats$3.key) != null ? _bindGroupFormats$2$k : 0;\n\t\tlookupHashes[11] = stencilEnabled ? stencilFront.key : 0;\n\t\tlookupHashes[12] = stencilEnabled ? stencilBack.key : 0;\n\t\tconst hash = hash32Fnv1a(lookupHashes);\n\t\tlet cacheEntries = this.cache.get(hash);\n\t\tif (cacheEntries) {\n\t\t\tfor (let i = 0; i < cacheEntries.length; i++) {\n\t\t\t\tconst entry = cacheEntries[i];\n\t\t\t\tif (array.equals(entry.hashes, lookupHashes)) {\n\t\t\t\t\treturn entry.pipeline;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst primitiveTopology = _primitiveTopology[primitive.type];\n\t\tconst pipelineLayout = this.getPipelineLayout(bindGroupFormats);\n\t\tconst vertexBufferLayout = this.vertexBufferLayout.get(vertexFormat0, vertexFormat1);\n\t\tconst cacheEntry = new CacheEntry();\n\t\tcacheEntry.hashes = new Uint32Array(lookupHashes);\n\t\tcacheEntry.pipeline = this.create(primitiveTopology, shader, renderTarget, pipelineLayout, blendState, depthState, vertexBufferLayout, cullMode, stencilEnabled, stencilFront, stencilBack);\n\t\tif (cacheEntries) {\n\t\t\tcacheEntries.push(cacheEntry);\n\t\t} else {\n\t\t\tcacheEntries = [cacheEntry];\n\t\t}\n\t\tthis.cache.set(hash, cacheEntries);\n\t\treturn cacheEntry.pipeline;\n\t}\n\tgetBlend(blendState) {\n\t\tlet blend;\n\t\tif (blendState.blend) {\n\t\t\tblend = {\n\t\t\t\tcolor: {\n\t\t\t\t\toperation: _blendOperation[blendState.colorOp],\n\t\t\t\t\tsrcFactor: _blendFactor[blendState.colorSrcFactor],\n\t\t\t\t\tdstFactor: _blendFactor[blendState.colorDstFactor]\n\t\t\t\t},\n\t\t\t\talpha: {\n\t\t\t\t\toperation: _blendOperation[blendState.alphaOp],\n\t\t\t\t\tsrcFactor: _blendFactor[blendState.alphaSrcFactor],\n\t\t\t\t\tdstFactor: _blendFactor[blendState.alphaDstFactor]\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn blend;\n\t}\n\tgetDepthStencil(depthState, renderTarget, stencilEnabled, stencilFront, stencilBack) {\n\t\tlet depthStencil;\n\t\tconst {\n\t\t\tdepth,\n\t\t\tstencil\n\t\t} = renderTarget;\n\t\tif (depth || stencil) {\n\t\t\tdepthStencil = {\n\t\t\t\tformat: renderTarget.impl.depthFormat\n\t\t\t};\n\t\t\tif (depth) {\n\t\t\t\tdepthStencil.depthWriteEnabled = depthState.write;\n\t\t\t\tdepthStencil.depthCompare = _compareFunction[depthState.func];\n\t\t\t\tdepthStencil.depthBias = depthState.depthBias;\n\t\t\t\tdepthStencil.depthBiasSlopeScale = depthState.depthBiasSlope;\n\t\t\t} else {\n\t\t\t\tdepthStencil.depthWriteEnabled = false;\n\t\t\t\tdepthStencil.depthCompare = 'always';\n\t\t\t}\n\t\t\tif (stencil && stencilEnabled) {\n\t\t\t\tdepthStencil.stencilReadMas = stencilFront.readMask;\n\t\t\t\tdepthStencil.stencilWriteMask = stencilFront.writeMask;\n\t\t\t\tdepthStencil.stencilFront = {\n\t\t\t\t\tcompare: _compareFunction[stencilFront.func],\n\t\t\t\t\tfailOp: _stencilOps[stencilFront.fail],\n\t\t\t\t\tpassOp: _stencilOps[stencilFront.zpass],\n\t\t\t\t\tdepthFailOp: _stencilOps[stencilFront.zfail]\n\t\t\t\t};\n\t\t\t\tdepthStencil.stencilBack = {\n\t\t\t\t\tcompare: _compareFunction[stencilBack.func],\n\t\t\t\t\tfailOp: _stencilOps[stencilBack.fail],\n\t\t\t\t\tpassOp: _stencilOps[stencilBack.zpass],\n\t\t\t\t\tdepthFailOp: _stencilOps[stencilBack.zfail]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn depthStencil;\n\t}\n\tcreate(primitiveTopology, shader, renderTarget, pipelineLayout, blendState, depthState, vertexBufferLayout, cullMode, stencilEnabled, stencilFront, stencilBack) {\n\t\tconst wgpu = this.device.wgpu;\n\t\tconst webgpuShader = shader.impl;\n\t\tconst descr = {\n\t\t\tvertex: {\n\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint,\n\t\t\t\tbuffers: vertexBufferLayout\n\t\t\t},\n\t\t\tprimitive: {\n\t\t\t\ttopology: primitiveTopology,\n\t\t\t\tfrontFace: 'ccw',\n\t\t\t\tcullMode: _cullModes[cullMode]\n\t\t\t},\n\t\t\tdepthStencil: this.getDepthStencil(depthState, renderTarget, stencilEnabled, stencilFront, stencilBack),\n\t\t\tmultisample: {\n\t\t\t\tcount: renderTarget.samples\n\t\t\t},\n\t\t\tlayout: pipelineLayout\n\t\t};\n\t\tdescr.fragment = {\n\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\ttargets: []\n\t\t};\n\t\tconst colorAttachments = renderTarget.impl.colorAttachments;\n\t\tif (colorAttachments.length > 0) {\n\t\t\tlet writeMask = 0;\n\t\t\tif (blendState.redWrite) writeMask |= GPUColorWrite.RED;\n\t\t\tif (blendState.greenWrite) writeMask |= GPUColorWrite.GREEN;\n\t\t\tif (blendState.blueWrite) writeMask |= GPUColorWrite.BLUE;\n\t\t\tif (blendState.alphaWrite) writeMask |= GPUColorWrite.ALPHA;\n\t\t\tconst blend = this.getBlend(blendState);\n\t\t\tcolorAttachments.forEach(attachment => {\n\t\t\t\tdescr.fragment.targets.push({\n\t\t\t\t\tformat: attachment.format,\n\t\t\t\t\twriteMask: writeMask,\n\t\t\t\t\tblend: blend\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tconst pipeline = wgpu.createRenderPipeline(descr);\n\t\treturn pipeline;\n\t}\n}\n\nexport { WebgpuRenderPipeline };\n", "import { WebgpuPipeline } from './webgpu-pipeline.js';\n\nclass WebgpuComputePipeline extends WebgpuPipeline {\n\tget(shader, bindGroupFormat) {\n\t\tconst pipelineLayout = this.getPipelineLayout([bindGroupFormat.impl]);\n\t\tconst pipeline = this.create(shader, pipelineLayout);\n\t\treturn pipeline;\n\t}\n\tcreate(shader, pipelineLayout) {\n\t\tconst wgpu = this.device.wgpu;\n\t\tconst webgpuShader = shader.impl;\n\t\tconst descr = {\n\t\t\tcompute: {\n\t\t\t\tmodule: webgpuShader.getComputeShaderModule(),\n\t\t\t\tentryPoint: webgpuShader.computeEntryPoint\n\t\t\t},\n\t\t\tlayout: pipelineLayout\n\t\t};\n\t\tconst pipeline = wgpu.createComputePipeline(descr);\n\t\treturn pipeline;\n\t}\n}\n\nexport { WebgpuComputePipeline };\n", "import { StringIds } from '../../../core/string-ids.js';\n\nconst stringIds = new StringIds();\nclass ColorAttachment {\n\tconstructor() {\n\t\tthis.format = void 0;\n\t\tthis.multisampledBuffer = void 0;\n\t}\n\tdestroy() {\n\t\tvar _this$multisampledBuf;\n\t\t(_this$multisampledBuf = this.multisampledBuffer) == null || _this$multisampledBuf.destroy();\n\t\tthis.multisampledBuffer = null;\n\t}\n}\nclass WebgpuRenderTarget {\n\tconstructor(renderTarget) {\n\t\tthis.initialized = false;\n\t\tthis.key = void 0;\n\t\tthis.colorAttachments = [];\n\t\tthis.depthFormat = void 0;\n\t\tthis.hasStencil = void 0;\n\t\tthis.depthTexture = null;\n\t\tthis.depthTextureInternal = false;\n\t\tthis.assignedColorTexture = null;\n\t\tthis.renderPassDescriptor = {};\n\t\tthis.renderTarget = renderTarget;\n\t\tif (renderTarget._colorBuffers) {\n\t\t\trenderTarget._colorBuffers.forEach((colorBuffer, index) => {\n\t\t\t\tthis.setColorAttachment(index, undefined, colorBuffer.impl.format);\n\t\t\t});\n\t\t}\n\t\tthis.updateKey();\n\t}\n\tdestroy(device) {\n\t\tthis.initialized = false;\n\t\tif (this.depthTextureInternal) {\n\t\t\tvar _this$depthTexture;\n\t\t\t(_this$depthTexture = this.depthTexture) == null || _this$depthTexture.destroy();\n\t\t\tthis.depthTexture = null;\n\t\t}\n\t\tthis.assignedColorTexture = null;\n\t\tthis.colorAttachments.forEach(colorAttachment => {\n\t\t\tcolorAttachment.destroy();\n\t\t});\n\t\tthis.colorAttachments.length = 0;\n\t}\n\tupdateKey() {\n\t\tconst rt = this.renderTarget;\n\t\tlet key = `${rt.samples}:${rt.depth ? this.depthFormat : 'nodepth'}`;\n\t\tthis.colorAttachments.forEach(colorAttachment => {\n\t\t\tkey += `:${colorAttachment.format}`;\n\t\t});\n\t\tthis.key = stringIds.get(key);\n\t}\n\tsetDepthFormat(depthFormat) {\n\t\tthis.depthFormat = depthFormat;\n\t\tthis.hasStencil = depthFormat === 'depth24plus-stencil8';\n\t}\n\tassignColorTexture(gpuTexture) {\n\t\tthis.assignedColorTexture = gpuTexture;\n\t\tconst view = gpuTexture.createView();\n\t\tconst colorAttachment = this.renderPassDescriptor.colorAttachments[0];\n\t\tconst samples = this.renderTarget.samples;\n\t\tif (samples > 1) {\n\t\t\tcolorAttachment.resolveTarget = view;\n\t\t} else {\n\t\t\tcolorAttachment.view = view;\n\t\t}\n\t\tthis.setColorAttachment(0, undefined, gpuTexture.format);\n\t\tthis.updateKey();\n\t}\n\tsetColorAttachment(index, multisampledBuffer, format) {\n\t\tif (!this.colorAttachments[index]) {\n\t\t\tthis.colorAttachments[index] = new ColorAttachment();\n\t\t}\n\t\tif (multisampledBuffer) {\n\t\t\tthis.colorAttachments[index].multisampledBuffer = multisampledBuffer;\n\t\t}\n\t\tif (format) {\n\t\t\tthis.colorAttachments[index].format = format;\n\t\t}\n\t}\n\tinit(device, renderTarget) {\n\t\tvar _renderTarget$_colorB, _renderTarget$_colorB2;\n\t\tconst wgpu = device.wgpu;\n\t\tthis.initDepthStencil(wgpu, renderTarget);\n\t\tthis.renderPassDescriptor.colorAttachments = [];\n\t\tconst count = (_renderTarget$_colorB = (_renderTarget$_colorB2 = renderTarget._colorBuffers) == null ? void 0 : _renderTarget$_colorB2.length) != null ? _renderTarget$_colorB : 1;\n\t\tfor (let i = 0; i < count; ++i) {\n\t\t\tvar _this$colorAttachment;\n\t\t\tconst colorAttachment = this.initColor(wgpu, renderTarget, i);\n\t\t\tconst isDefaultFramebuffer = i === 0 && ((_this$colorAttachment = this.colorAttachments[0]) == null ? void 0 : _this$colorAttachment.format);\n\t\t\tif (colorAttachment.view || isDefaultFramebuffer) {\n\t\t\t\tthis.renderPassDescriptor.colorAttachments.push(colorAttachment);\n\t\t\t}\n\t\t}\n\t\tthis.initialized = true;\n\t}\n\tinitDepthStencil(wgpu, renderTarget) {\n\t\tconst {\n\t\t\tsamples,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tdepth,\n\t\t\tdepthBuffer\n\t\t} = renderTarget;\n\t\tif (depth || depthBuffer) {\n\t\t\tif (!depthBuffer) {\n\t\t\t\tthis.setDepthFormat('depth24plus-stencil8');\n\t\t\t\tconst depthTextureDesc = {\n\t\t\t\t\tsize: [width, height, 1],\n\t\t\t\t\tdimension: '2d',\n\t\t\t\t\tsampleCount: samples,\n\t\t\t\t\tformat: this.depthFormat,\n\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT\n\t\t\t\t};\n\t\t\t\tif (samples > 1) {\n\t\t\t\t\tdepthTextureDesc.usage |= GPUTextureUsage.TEXTURE_BINDING;\n\t\t\t\t} else {\n\t\t\t\t\tdepthTextureDesc.usage |= GPUTextureUsage.COPY_SRC;\n\t\t\t\t}\n\t\t\t\tthis.depthTexture = wgpu.createTexture(depthTextureDesc);\n\t\t\t\tthis.depthTextureInternal = true;\n\t\t\t} else {\n\t\t\t\tthis.depthTexture = depthBuffer.impl.gpuTexture;\n\t\t\t\tthis.setDepthFormat(depthBuffer.impl.format);\n\t\t\t}\n\t\t\tthis.renderPassDescriptor.depthStencilAttachment = {\n\t\t\t\tview: this.depthTexture.createView()\n\t\t\t};\n\t\t}\n\t}\n\tinitColor(wgpu, renderTarget, index) {\n\t\tconst colorAttachment = {};\n\t\tconst {\n\t\t\tsamples,\n\t\t\twidth,\n\t\t\theight\n\t\t} = renderTarget;\n\t\tconst colorBuffer = renderTarget.getColorBuffer(index);\n\t\tlet colorView = null;\n\t\tif (colorBuffer) {\n\t\t\tconst mipLevelCount = 1;\n\t\t\tif (colorBuffer.cubemap) {\n\t\t\t\tcolorView = colorBuffer.impl.createView({\n\t\t\t\t\tdimension: '2d',\n\t\t\t\t\tbaseArrayLayer: renderTarget.face,\n\t\t\t\t\tarrayLayerCount: 1,\n\t\t\t\t\tmipLevelCount\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcolorView = colorBuffer.impl.createView({\n\t\t\t\t\tmipLevelCount\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (samples > 1) {\n\t\t\tvar _this$colorAttachment2, _this$colorAttachment3;\n\t\t\tconst multisampledTextureDesc = {\n\t\t\t\tsize: [width, height, 1],\n\t\t\t\tdimension: '2d',\n\t\t\t\tsampleCount: samples,\n\t\t\t\tformat: (_this$colorAttachment2 = (_this$colorAttachment3 = this.colorAttachments[index]) == null ? void 0 : _this$colorAttachment3.format) != null ? _this$colorAttachment2 : colorBuffer.impl.format,\n\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT\n\t\t\t};\n\t\t\tconst multisampledColorBuffer = wgpu.createTexture(multisampledTextureDesc);\n\t\t\tthis.setColorAttachment(index, multisampledColorBuffer, multisampledTextureDesc.format);\n\t\t\tcolorAttachment.view = multisampledColorBuffer.createView();\n\t\t\tcolorAttachment.resolveTarget = colorView;\n\t\t} else {\n\t\t\tcolorAttachment.view = colorView;\n\t\t}\n\t\treturn colorAttachment;\n\t}\n\tsetupForRenderPass(renderPass) {\n\t\tvar _this$renderPassDescr, _this$renderPassDescr2;\n\t\tconst count = (_this$renderPassDescr = (_this$renderPassDescr2 = this.renderPassDescriptor.colorAttachments) == null ? void 0 : _this$renderPassDescr2.length) != null ? _this$renderPassDescr : 0;\n\t\tfor (let i = 0; i < count; ++i) {\n\t\t\tconst colorAttachment = this.renderPassDescriptor.colorAttachments[i];\n\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\tcolorAttachment.clearValue = colorOps.clearValue;\n\t\t\tcolorAttachment.loadOp = colorOps.clear ? 'clear' : 'load';\n\t\t\tcolorAttachment.storeOp = colorOps.store ? 'store' : 'discard';\n\t\t}\n\t\tconst depthAttachment = this.renderPassDescriptor.depthStencilAttachment;\n\t\tif (depthAttachment) {\n\t\t\tdepthAttachment.depthClearValue = renderPass.depthStencilOps.clearDepthValue;\n\t\t\tdepthAttachment.depthLoadOp = renderPass.depthStencilOps.clearDepth ? 'clear' : 'load';\n\t\t\tdepthAttachment.depthStoreOp = renderPass.depthStencilOps.storeDepth ? 'store' : 'discard';\n\t\t\tdepthAttachment.depthReadOnly = false;\n\t\t\tif (this.hasStencil) {\n\t\t\t\tdepthAttachment.stencilClearValue = renderPass.depthStencilOps.clearStencilValue;\n\t\t\t\tdepthAttachment.stencilLoadOp = renderPass.depthStencilOps.clearStencil ? 'clear' : 'load';\n\t\t\t\tdepthAttachment.stencilStoreOp = renderPass.depthStencilOps.storeStencil ? 'store' : 'discard';\n\t\t\t\tdepthAttachment.stencilReadOnly = false;\n\t\t\t}\n\t\t}\n\t}\n\tloseContext() {\n\t\tthis.initialized = false;\n\t}\n\tresolve(device, target, color, depth) {}\n}\n\nexport { WebgpuRenderTarget };\n", "import { math } from '../../core/math/math.js';\nimport { UNIFORMTYPE_MAT4, UNIFORMTYPE_MAT4ARRAY, UNIFORMTYPE_BVEC4, UNIFORMTYPE_BVEC4ARRAY, UNIFORMTYPE_UVEC4, UNIFORMTYPE_UVEC4ARRAY, UNIFORMTYPE_IVEC4, UNIFORMTYPE_IVEC4ARRAY, UNIFORMTYPE_VEC4, UNIFORMTYPE_VEC4ARRAY, UNIFORMTYPE_BVEC3, UNIFORMTYPE_BVEC3ARRAY, UNIFORMTYPE_UVEC3, UNIFORMTYPE_UVEC3ARRAY, UNIFORMTYPE_IVEC3, UNIFORMTYPE_IVEC3ARRAY, UNIFORMTYPE_VEC3, UNIFORMTYPE_VEC3ARRAY, UNIFORMTYPE_BVEC2, UNIFORMTYPE_BVEC2ARRAY, UNIFORMTYPE_UVEC2, UNIFORMTYPE_UVEC2ARRAY, UNIFORMTYPE_IVEC2, UNIFORMTYPE_IVEC2ARRAY, UNIFORMTYPE_VEC2, UNIFORMTYPE_VEC2ARRAY, UNIFORMTYPE_BOOL, UNIFORMTYPE_BOOLARRAY, UNIFORMTYPE_UINT, UNIFORMTYPE_UINTARRAY, UNIFORMTYPE_INT, UNIFORMTYPE_INTARRAY, UNIFORMTYPE_FLOAT, UNIFORMTYPE_FLOATARRAY, bindGroupNames, uniformTypeToName, UNIFORMTYPE_MAT2, UNIFORMTYPE_MAT3 } from './constants.js';\n\nconst uniformTypeToNumComponents = [];\nuniformTypeToNumComponents[UNIFORMTYPE_FLOAT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_INT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_BOOL] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT2] = 8;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT3] = 12;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT4] = 16;\nuniformTypeToNumComponents[UNIFORMTYPE_UINT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC4] = 4;\nclass UniformFormat {\n\tget isArrayType() {\n\t\treturn this.count > 0;\n\t}\n\tconstructor(name, type, count = 0) {\n\t\tthis.name = void 0;\n\t\tthis.type = void 0;\n\t\tthis.byteSize = void 0;\n\t\tthis.offset = void 0;\n\t\tthis.scopeId = void 0;\n\t\tthis.count = void 0;\n\t\tthis.numComponents = void 0;\n\t\tthis.shortName = name;\n\t\tthis.name = count ? `${name}[0]` : name;\n\t\tthis.type = type;\n\t\tthis.numComponents = uniformTypeToNumComponents[type];\n\t\tthis.updateType = type;\n\t\tif (count > 0) {\n\t\t\tswitch (type) {\n\t\t\t\tcase UNIFORMTYPE_FLOAT:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_FLOATARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_INT:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_INTARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_UINT:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_UINTARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_BOOL:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_BOOLARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_VEC2:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC2ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_IVEC2:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC2ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_UVEC2:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC2ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_BVEC2:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC2ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_VEC3:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC3ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_IVEC3:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC3ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_UVEC3:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC3ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_BVEC3:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC3ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_VEC4:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_IVEC4:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_UVEC4:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_BVEC4:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_MAT4:\n\t\t\t\t\tthis.updateType = UNIFORMTYPE_MAT4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.count = count;\n\t\tlet componentSize = this.numComponents;\n\t\tif (count) {\n\t\t\tcomponentSize = math.roundUp(componentSize, 4);\n\t\t}\n\t\tthis.byteSize = componentSize * 4;\n\t\tif (count) this.byteSize *= count;\n\t}\n\tcalculateOffset(offset) {\n\t\tlet alignment = this.byteSize <= 8 ? this.byteSize : 16;\n\t\tif (this.count) alignment = 16;\n\t\toffset = math.roundUp(offset, alignment);\n\t\tthis.offset = offset / 4;\n\t}\n}\nclass UniformBufferFormat {\n\tconstructor(graphicsDevice, uniforms) {\n\t\tthis.byteSize = 0;\n\t\tthis.map = new Map();\n\t\tthis.scope = graphicsDevice.scope;\n\t\tthis.uniforms = uniforms;\n\t\tlet offset = 0;\n\t\tfor (let i = 0; i < uniforms.length; i++) {\n\t\t\tconst uniform = uniforms[i];\n\t\t\tuniform.calculateOffset(offset);\n\t\t\toffset = uniform.offset * 4 + uniform.byteSize;\n\t\t\tuniform.scopeId = this.scope.resolve(uniform.name);\n\t\t\tthis.map.set(uniform.name, uniform);\n\t\t}\n\t\tthis.byteSize = math.roundUp(offset, 16);\n\t}\n\tget(name) {\n\t\treturn this.map.get(name);\n\t}\n\tgetShaderDeclaration(bindGroup, bindIndex) {\n\t\tconst name = bindGroupNames[bindGroup];\n\t\tlet code = `layout(set = ${bindGroup}, binding = ${bindIndex}, std140) uniform ub_${name} {\\n`;\n\t\tthis.uniforms.forEach(uniform => {\n\t\t\tconst typeString = uniformTypeToName[uniform.type];\n\t\t\tcode += ` ${typeString} ${uniform.shortName}${uniform.count ? `[${uniform.count}]` : ''};\\n`;\n\t\t});\n\t\treturn code + '};\\n';\n\t}\n}\n\nexport { UniformBufferFormat, UniformFormat };\n", "import { TEXTUREDIMENSION_2D, SAMPLETYPE_FLOAT, SHADERSTAGE_COMPUTE, PIXELFORMAT_RGBA8, SAMPLETYPE_INT, SAMPLETYPE_UINT, TEXTUREDIMENSION_CUBE, TEXTUREDIMENSION_3D, TEXTUREDIMENSION_2D_ARRAY } from './constants.js';\n\nlet id = 0;\nconst textureDimensionInfo = {\n\t[TEXTUREDIMENSION_2D]: 'texture2D',\n\t[TEXTUREDIMENSION_CUBE]: 'textureCube',\n\t[TEXTUREDIMENSION_3D]: 'texture3D',\n\t[TEXTUREDIMENSION_2D_ARRAY]: 'texture2DArray'\n};\nclass BindBaseFormat {\n\tconstructor(name, visibility) {\n\t\tthis.slot = -1;\n\t\tthis.scopeId = null;\n\t\tthis.name = name;\n\t\tthis.visibility = visibility;\n\t}\n}\nclass BindUniformBufferFormat extends BindBaseFormat {}\nclass BindStorageBufferFormat extends BindBaseFormat {\n\tconstructor(name, visibility, readOnly = false) {\n\t\tsuper(name, visibility);\n\t\tthis.readOnly = readOnly;\n\t}\n}\nclass BindTextureFormat extends BindBaseFormat {\n\tconstructor(name, visibility, textureDimension = TEXTUREDIMENSION_2D, sampleType = SAMPLETYPE_FLOAT, hasSampler = true) {\n\t\tsuper(name, visibility);\n\t\tthis.textureDimension = textureDimension;\n\t\tthis.sampleType = sampleType;\n\t\tthis.hasSampler = hasSampler;\n\t}\n}\nclass BindStorageTextureFormat extends BindBaseFormat {\n\tconstructor(name, format = PIXELFORMAT_RGBA8, textureDimension = TEXTUREDIMENSION_2D, write = true, read = false) {\n\t\tsuper(name, SHADERSTAGE_COMPUTE);\n\t\tthis.format = format;\n\t\tthis.textureDimension = textureDimension;\n\t\tthis.write = write;\n\t\tthis.read = read;\n\t}\n}\nclass BindGroupFormat {\n\tconstructor(graphicsDevice, formats) {\n\t\tthis.uniformBufferFormats = [];\n\t\tthis.textureFormats = [];\n\t\tthis.storageTextureFormats = [];\n\t\tthis.storageBufferFormats = [];\n\t\tthis.id = id++;\n\t\tlet slot = 0;\n\t\tformats.forEach(format => {\n\t\t\tformat.slot = slot++;\n\t\t\tif (format instanceof BindTextureFormat && format.hasSampler) {\n\t\t\t\tslot++;\n\t\t\t}\n\t\t\tif (format instanceof BindUniformBufferFormat) {\n\t\t\t\tthis.uniformBufferFormats.push(format);\n\t\t\t} else if (format instanceof BindTextureFormat) {\n\t\t\t\tthis.textureFormats.push(format);\n\t\t\t} else if (format instanceof BindStorageTextureFormat) {\n\t\t\t\tthis.storageTextureFormats.push(format);\n\t\t\t} else if (format instanceof BindStorageBufferFormat) {\n\t\t\t\tthis.storageBufferFormats.push(format);\n\t\t\t} else ;\n\t\t});\n\t\tthis.device = graphicsDevice;\n\t\tconst scope = graphicsDevice.scope;\n\t\tthis.bufferFormatsMap = new Map();\n\t\tthis.uniformBufferFormats.forEach((bf, i) => this.bufferFormatsMap.set(bf.name, i));\n\t\tthis.textureFormatsMap = new Map();\n\t\tthis.textureFormats.forEach((tf, i) => {\n\t\t\tthis.textureFormatsMap.set(tf.name, i);\n\t\t\ttf.scopeId = scope.resolve(tf.name);\n\t\t});\n\t\tthis.storageTextureFormatsMap = new Map();\n\t\tthis.storageTextureFormats.forEach((tf, i) => {\n\t\t\tthis.storageTextureFormatsMap.set(tf.name, i);\n\t\t\ttf.scopeId = scope.resolve(tf.name);\n\t\t});\n\t\tthis.storageBufferFormatsMap = new Map();\n\t\tthis.storageBufferFormats.forEach((bf, i) => {\n\t\t\tthis.storageBufferFormatsMap.set(bf.name, i);\n\t\t\tbf.scopeId = scope.resolve(bf.name);\n\t\t});\n\t\tthis.impl = graphicsDevice.createBindGroupFormatImpl(this);\n\t}\n\tdestroy() {\n\t\tthis.impl.destroy();\n\t}\n\tgetTexture(name) {\n\t\tconst index = this.textureFormatsMap.get(name);\n\t\tif (index !== undefined) {\n\t\t\treturn this.textureFormats[index];\n\t\t}\n\t\treturn null;\n\t}\n\tgetStorageTexture(name) {\n\t\tconst index = this.storageTextureFormatsMap.get(name);\n\t\tif (index !== undefined) {\n\t\t\treturn this.storageTextureFormats[index];\n\t\t}\n\t\treturn null;\n\t}\n\tgetShaderDeclarationTextures(bindGroup) {\n\t\tlet code = '';\n\t\tthis.textureFormats.forEach(format => {\n\t\t\tlet textureType = textureDimensionInfo[format.textureDimension];\n\t\t\tlet namePostfix = '';\n\t\t\tlet extraCode = '';\n\t\t\tif (textureType === 'texture2DArray') {\n\t\t\t\tnamePostfix = '_texture';\n\t\t\t\textraCode = `#define ${format.name} sampler2DArray(${format.name}${namePostfix}, ${format.name}_sampler)\\n`;\n\t\t\t}\n\t\t\tif (format.sampleType === SAMPLETYPE_INT) {\n\t\t\t\ttextureType = `i${textureType}`;\n\t\t\t} else if (format.sampleType === SAMPLETYPE_UINT) {\n\t\t\t\ttextureType = `u${textureType}`;\n\t\t\t}\n\t\t\tcode += `layout(set = ${bindGroup}, binding = ${format.slot}) uniform ${textureType} ${format.name}${namePostfix};\\n`;\n\t\t\tif (format.hasSampler) {\n\t\t\t\tcode += `layout(set = ${bindGroup}, binding = ${format.slot + 1}) uniform sampler ${format.name}_sampler;\\n`;\n\t\t\t}\n\t\t\tcode += extraCode;\n\t\t});\n\t\treturn code;\n\t}\n\tloseContext() {}\n}\n\nexport { BindGroupFormat, BindStorageBufferFormat, BindStorageTextureFormat, BindTextureFormat, BindUniformBufferFormat };\n", "import { uniformTypeToName, SHADERSTAGE_VERTEX, SHADERSTAGE_FRAGMENT, BINDGROUP_MESH, semanticToLocation, TYPE_FLOAT32, TYPE_FLOAT16, TEXTUREDIMENSION_2D, TEXTUREDIMENSION_3D, TEXTUREDIMENSION_CUBE, TEXTUREDIMENSION_2D_ARRAY, UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SAMPLETYPE_FLOAT, SAMPLETYPE_INT, SAMPLETYPE_UINT, SAMPLETYPE_UNFILTERABLE_FLOAT, SAMPLETYPE_DEPTH, TYPE_INT8, TYPE_INT16, TYPE_INT32 } from './constants.js';\nimport { UniformFormat, UniformBufferFormat } from './uniform-buffer-format.js';\nimport { BindTextureFormat, BindGroupFormat, BindUniformBufferFormat } from './bind-group-format.js';\n\nconst KEYWORD = /[ \\t]*(\\battribute\\b|\\bvarying\\b|\\buniform\\b)/g;\nconst KEYWORD_LINE = /(\\battribute\\b|\\bvarying\\b|\\bout\\b|\\buniform\\b)[ \\t]*([^;]+)([;]+)/g;\nconst MARKER = '@@@';\nconst ARRAY_IDENTIFIER = /([\\w-]+)\\[(.*?)\\]/;\nconst precisionQualifiers = new Set(['highp', 'mediump', 'lowp']);\nconst shadowSamplers = new Set(['sampler2DShadow', 'samplerCubeShadow', 'sampler2DArrayShadow']);\nconst textureDimensions = {\n\tsampler2D: TEXTUREDIMENSION_2D,\n\tsampler3D: TEXTUREDIMENSION_3D,\n\tsamplerCube: TEXTUREDIMENSION_CUBE,\n\tsamplerCubeShadow: TEXTUREDIMENSION_CUBE,\n\tsampler2DShadow: TEXTUREDIMENSION_2D,\n\tsampler2DArray: TEXTUREDIMENSION_2D_ARRAY,\n\tsampler2DArrayShadow: TEXTUREDIMENSION_2D_ARRAY,\n\tisampler2D: TEXTUREDIMENSION_2D,\n\tusampler2D: TEXTUREDIMENSION_2D,\n\tisampler3D: TEXTUREDIMENSION_3D,\n\tusampler3D: TEXTUREDIMENSION_3D,\n\tisamplerCube: TEXTUREDIMENSION_CUBE,\n\tusamplerCube: TEXTUREDIMENSION_CUBE,\n\tisampler2DArray: TEXTUREDIMENSION_2D_ARRAY,\n\tusampler2DArray: TEXTUREDIMENSION_2D_ARRAY\n};\nclass UniformLine {\n\tconstructor(line, shader) {\n\t\tthis.line = line;\n\t\tconst words = line.trim().split(/\\s+/);\n\t\tif (precisionQualifiers.has(words[0])) {\n\t\t\tthis.precision = words.shift();\n\t\t}\n\t\tthis.type = words.shift();\n\t\tif (line.includes(',')) ;\n\t\tif (line.includes('[')) {\n\t\t\tconst rest = words.join(' ');\n\t\t\tconst match = ARRAY_IDENTIFIER.exec(rest);\n\t\t\tthis.name = match[1];\n\t\t\tthis.arraySize = Number(match[2]);\n\t\t\tif (isNaN(this.arraySize)) {\n\t\t\t\tshader.failed = true;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.name = words.shift();\n\t\t\tthis.arraySize = 0;\n\t\t}\n\t\tthis.isSampler = this.type.indexOf('sampler') !== -1;\n\t\tthis.isSignedInt = this.type.indexOf('isampler') !== -1;\n\t\tthis.isUnsignedInt = this.type.indexOf('usampler') !== -1;\n\t}\n}\nclass ShaderProcessor {\n\tstatic run(device, shaderDefinition, shader) {\n\t\tconst varyingMap = new Map();\n\t\tconst vertexExtracted = ShaderProcessor.extract(shaderDefinition.vshader);\n\t\tconst fragmentExtracted = ShaderProcessor.extract(shaderDefinition.fshader);\n\t\tconst attributesBlock = ShaderProcessor.processAttributes(vertexExtracted.attributes, shaderDefinition.attributes, shaderDefinition.processingOptions);\n\t\tconst vertexVaryingsBlock = ShaderProcessor.processVaryings(vertexExtracted.varyings, varyingMap, true);\n\t\tconst fragmentVaryingsBlock = ShaderProcessor.processVaryings(fragmentExtracted.varyings, varyingMap, false);\n\t\tconst outBlock = ShaderProcessor.processOuts(fragmentExtracted.outs);\n\t\tconst concatUniforms = vertexExtracted.uniforms.concat(fragmentExtracted.uniforms);\n\t\tconst uniforms = Array.from(new Set(concatUniforms));\n\t\tconst parsedUniforms = uniforms.map(line => new UniformLine(line, shader));\n\t\tconst uniformsData = ShaderProcessor.processUniforms(device, parsedUniforms, shaderDefinition.processingOptions, shader);\n\t\tconst vBlock = attributesBlock + '\\n' + vertexVaryingsBlock + '\\n' + uniformsData.code;\n\t\tconst vshader = vertexExtracted.src.replace(MARKER, vBlock);\n\t\tconst fBlock = fragmentVaryingsBlock + '\\n' + outBlock + '\\n' + uniformsData.code;\n\t\tconst fshader = fragmentExtracted.src.replace(MARKER, fBlock);\n\t\treturn {\n\t\t\tvshader: vshader,\n\t\t\tfshader: fshader,\n\t\t\tmeshUniformBufferFormat: uniformsData.meshUniformBufferFormat,\n\t\t\tmeshBindGroupFormat: uniformsData.meshBindGroupFormat\n\t\t};\n\t}\n\tstatic extract(src) {\n\t\tconst attributes = [];\n\t\tconst varyings = [];\n\t\tconst outs = [];\n\t\tconst uniforms = [];\n\t\tlet replacement = `${MARKER}\\n`;\n\t\tlet match;\n\t\twhile ((match = KEYWORD.exec(src)) !== null) {\n\t\t\tconst keyword = match[1];\n\t\t\tswitch (keyword) {\n\t\t\t\tcase 'attribute':\n\t\t\t\tcase 'varying':\n\t\t\t\tcase 'uniform':\n\t\t\t\tcase 'out':\n\t\t\t\t\t{\n\t\t\t\t\t\tKEYWORD_LINE.lastIndex = match.index;\n\t\t\t\t\t\tconst lineMatch = KEYWORD_LINE.exec(src);\n\t\t\t\t\t\tif (keyword === 'attribute') {\n\t\t\t\t\t\t\tattributes.push(lineMatch[2]);\n\t\t\t\t\t\t} else if (keyword === 'varying') {\n\t\t\t\t\t\t\tvaryings.push(lineMatch[2]);\n\t\t\t\t\t\t} else if (keyword === 'out') {\n\t\t\t\t\t\t\touts.push(lineMatch[2]);\n\t\t\t\t\t\t} else if (keyword === 'uniform') {\n\t\t\t\t\t\t\tuniforms.push(lineMatch[2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsrc = ShaderProcessor.cutOut(src, match.index, KEYWORD_LINE.lastIndex, replacement);\n\t\t\t\t\t\tKEYWORD.lastIndex = match.index + replacement.length;\n\t\t\t\t\t\treplacement = '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsrc,\n\t\t\tattributes,\n\t\t\tvaryings,\n\t\t\touts,\n\t\t\tuniforms\n\t\t};\n\t}\n\tstatic processUniforms(device, uniforms, processingOptions, shader) {\n\t\tconst uniformLinesSamplers = [];\n\t\tconst uniformLinesNonSamplers = [];\n\t\tuniforms.forEach(uniform => {\n\t\t\tif (uniform.isSampler) {\n\t\t\t\tuniformLinesSamplers.push(uniform);\n\t\t\t} else {\n\t\t\t\tuniformLinesNonSamplers.push(uniform);\n\t\t\t}\n\t\t});\n\t\tconst meshUniforms = [];\n\t\tuniformLinesNonSamplers.forEach(uniform => {\n\t\t\tif (!processingOptions.hasUniform(uniform.name)) {\n\t\t\t\tconst uniformType = uniformTypeToName.indexOf(uniform.type);\n\t\t\t\tconst uniformFormat = new UniformFormat(uniform.name, uniformType, uniform.arraySize);\n\t\t\t\tmeshUniforms.push(uniformFormat);\n\t\t\t}\n\t\t});\n\t\tconst meshUniformBufferFormat = meshUniforms.length ? new UniformBufferFormat(device, meshUniforms) : null;\n\t\tconst uniformBufferFormats = [];\n\t\tif (meshUniformBufferFormat) {\n\t\t\tuniformBufferFormats.push(new BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT));\n\t\t}\n\t\tconst textureFormats = [];\n\t\tuniformLinesSamplers.forEach(uniform => {\n\t\t\tif (!processingOptions.hasTexture(uniform.name)) {\n\t\t\t\tlet sampleType = SAMPLETYPE_FLOAT;\n\t\t\t\tif (uniform.isSignedInt) {\n\t\t\t\t\tsampleType = SAMPLETYPE_INT;\n\t\t\t\t} else if (uniform.isUnsignedInt) {\n\t\t\t\t\tsampleType = SAMPLETYPE_UINT;\n\t\t\t\t} else {\n\t\t\t\t\tif (uniform.precision === 'highp') sampleType = SAMPLETYPE_UNFILTERABLE_FLOAT;\n\t\t\t\t\tif (shadowSamplers.has(uniform.type)) sampleType = SAMPLETYPE_DEPTH;\n\t\t\t\t}\n\t\t\t\tconst dimension = textureDimensions[uniform.type];\n\t\t\t\ttextureFormats.push(new BindTextureFormat(uniform.name, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT, dimension, sampleType));\n\t\t\t}\n\t\t});\n\t\tconst meshBindGroupFormat = new BindGroupFormat(device, [...uniformBufferFormats, ...textureFormats]);\n\t\tlet code = '';\n\t\tprocessingOptions.uniformFormats.forEach((format, bindGroupIndex) => {\n\t\t\tif (format) {\n\t\t\t\tcode += format.getShaderDeclaration(bindGroupIndex, 0);\n\t\t\t}\n\t\t});\n\t\tif (meshUniformBufferFormat) {\n\t\t\tcode += meshUniformBufferFormat.getShaderDeclaration(BINDGROUP_MESH, 0);\n\t\t}\n\t\tprocessingOptions.bindGroupFormats.forEach((format, bindGroupIndex) => {\n\t\t\tif (format) {\n\t\t\t\tcode += format.getShaderDeclarationTextures(bindGroupIndex);\n\t\t\t}\n\t\t});\n\t\tcode += meshBindGroupFormat.getShaderDeclarationTextures(BINDGROUP_MESH);\n\t\treturn {\n\t\t\tcode,\n\t\t\tmeshUniformBufferFormat,\n\t\t\tmeshBindGroupFormat\n\t\t};\n\t}\n\tstatic processVaryings(varyingLines, varyingMap, isVertex) {\n\t\tlet block = '';\n\t\tconst op = isVertex ? 'out' : 'in';\n\t\tvaryingLines.forEach((line, index) => {\n\t\t\tconst words = ShaderProcessor.splitToWords(line);\n\t\t\tconst type = words[0];\n\t\t\tconst name = words[1];\n\t\t\tif (isVertex) {\n\t\t\t\tvaryingMap.set(name, index);\n\t\t\t} else {\n\t\t\t\tindex = varyingMap.get(name);\n\t\t\t}\n\t\t\tblock += `layout(location = ${index}) ${op} ${type} ${name};\\n`;\n\t\t});\n\t\treturn block;\n\t}\n\tstatic processOuts(outsLines) {\n\t\tlet block = '';\n\t\toutsLines.forEach((line, index) => {\n\t\t\tblock += `layout(location = ${index}) out ${line};\\n`;\n\t\t});\n\t\treturn block;\n\t}\n\tstatic getTypeCount(type) {\n\t\tconst lastChar = type.substring(type.length - 1);\n\t\tconst num = parseInt(lastChar, 10);\n\t\treturn isNaN(num) ? 1 : num;\n\t}\n\tstatic processAttributes(attributeLines, shaderDefinitionAttributes, processingOptions) {\n\t\tlet block = '';\n\t\tattributeLines.forEach(line => {\n\t\t\tconst words = ShaderProcessor.splitToWords(line);\n\t\t\tlet type = words[0];\n\t\t\tlet name = words[1];\n\t\t\tif (shaderDefinitionAttributes.hasOwnProperty(name)) {\n\t\t\t\tconst semantic = shaderDefinitionAttributes[name];\n\t\t\t\tconst location = semanticToLocation[semantic];\n\t\t\t\tlet copyCode;\n\t\t\t\tconst element = processingOptions.getVertexElement(semantic);\n\t\t\t\tif (element) {\n\t\t\t\t\tconst dataType = element.dataType;\n\t\t\t\t\tif (dataType !== TYPE_FLOAT32 && dataType !== TYPE_FLOAT16 && !element.normalize && !element.asInt) {\n\t\t\t\t\t\tconst attribNumElements = ShaderProcessor.getTypeCount(type);\n\t\t\t\t\t\tconst newName = `_private_${name}`;\n\t\t\t\t\t\tcopyCode = `vec${attribNumElements} ${name} = vec${attribNumElements}(${newName});\\n`;\n\t\t\t\t\t\tname = newName;\n\t\t\t\t\t\tconst isSignedType = dataType === TYPE_INT8 || dataType === TYPE_INT16 || dataType === TYPE_INT32;\n\t\t\t\t\t\tif (attribNumElements === 1) {\n\t\t\t\t\t\t\ttype = isSignedType ? 'int' : 'uint';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttype = isSignedType ? `ivec${attribNumElements}` : `uvec${attribNumElements}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tblock += `layout(location = ${location}) in ${type} ${name};\\n`;\n\t\t\t\tif (copyCode) {\n\t\t\t\t\tblock += copyCode;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn block;\n\t}\n\tstatic splitToWords(line) {\n\t\tline = line.replace(/\\s+/g, ' ').trim();\n\t\treturn line.split(' ');\n\t}\n\tstatic cutOut(src, start, end, replacement) {\n\t\treturn src.substring(0, start) + replacement + src.substring(end);\n\t}\n}\n\nexport { ShaderProcessor };\n", "import { SHADERLANGUAGE_WGSL } from '../constants.js';\nimport { ShaderProcessor } from '../shader-processor.js';\n\nclass WebgpuShader {\n\tconstructor(shader) {\n\t\tthis._vertexCode = null;\n\t\tthis._fragmentCode = null;\n\t\tthis._computeCode = null;\n\t\tthis.vertexEntryPoint = 'main';\n\t\tthis.fragmentEntryPoint = 'main';\n\t\tthis.computeEntryPoint = 'main';\n\t\tthis.shader = shader;\n\t\tconst definition = shader.definition;\n\t\tif (definition.shaderLanguage === SHADERLANGUAGE_WGSL) {\n\t\t\tvar _definition$vshader, _definition$fshader, _definition$cshader;\n\t\t\tthis._vertexCode = (_definition$vshader = definition.vshader) != null ? _definition$vshader : null;\n\t\t\tthis._fragmentCode = (_definition$fshader = definition.fshader) != null ? _definition$fshader : null;\n\t\t\tthis._computeCode = (_definition$cshader = definition.cshader) != null ? _definition$cshader : null;\n\t\t\tthis.meshUniformBufferFormat = definition.meshUniformBufferFormat;\n\t\t\tthis.meshBindGroupFormat = definition.meshBindGroupFormat;\n\t\t\tthis.computeUniformBufferFormats = definition.computeUniformBufferFormats;\n\t\t\tthis.computeBindGroupFormat = definition.computeBindGroupFormat;\n\t\t\tthis.vertexEntryPoint = 'vertexMain';\n\t\t\tthis.fragmentEntryPoint = 'fragmentMain';\n\t\t\tshader.ready = true;\n\t\t} else {\n\t\t\tif (definition.processingOptions) {\n\t\t\t\tthis.process();\n\t\t\t}\n\t\t}\n\t}\n\tdestroy(shader) {\n\t\tthis._vertexCode = null;\n\t\tthis._fragmentCode = null;\n\t}\n\tcreateShaderModule(code, shaderType) {\n\t\tconst device = this.shader.device;\n\t\tconst wgpu = device.wgpu;\n\t\tconst shaderModule = wgpu.createShaderModule({\n\t\t\tcode: code\n\t\t});\n\t\treturn shaderModule;\n\t}\n\tgetVertexShaderModule() {\n\t\treturn this.createShaderModule(this._vertexCode, 'Vertex');\n\t}\n\tgetFragmentShaderModule() {\n\t\treturn this.createShaderModule(this._fragmentCode, 'Fragment');\n\t}\n\tgetComputeShaderModule() {\n\t\treturn this.createShaderModule(this._computeCode, 'Compute');\n\t}\n\tprocess() {\n\t\tconst shader = this.shader;\n\t\tconst processed = ShaderProcessor.run(shader.device, shader.definition, shader);\n\t\tthis._vertexCode = this.transpile(processed.vshader, 'vertex', shader.definition.vshader);\n\t\tthis._fragmentCode = this.transpile(processed.fshader, 'fragment', shader.definition.fshader);\n\t\tif (!(this._vertexCode && this._fragmentCode)) {\n\t\t\tshader.failed = true;\n\t\t} else {\n\t\t\tshader.ready = true;\n\t\t}\n\t\tshader.meshUniformBufferFormat = processed.meshUniformBufferFormat;\n\t\tshader.meshBindGroupFormat = processed.meshBindGroupFormat;\n\t}\n\ttranspile(src, shaderType, originalSrc) {\n\t\ttry {\n\t\t\tconst spirv = this.shader.device.glslang.compileGLSL(src, shaderType);\n\t\t\treturn this.shader.device.twgsl.convertSpirV2WGSL(spirv);\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to transpile webgl ${shaderType} shader [${this.shader.label}] to WebGPU: [${err.message}] while rendering ${void 0}`, {\n\t\t\t\tprocessed: src,\n\t\t\t\toriginal: originalSrc,\n\t\t\t\tshader: this.shader\n\t\t\t});\n\t\t}\n\t}\n\tget vertexCode() {\n\t\treturn this._vertexCode;\n\t}\n\tget fragmentCode() {\n\t\treturn this._fragmentCode;\n\t}\n\tloseContext() {}\n\trestoreContext(device, shader) {}\n}\n\nexport { WebgpuShader };\n", "import { pixelFormatInfo, PIXELFORMAT_PVRTC_2BPP_RGB_1, PIXELFORMAT_PVRTC_2BPP_RGBA_1 } from './constants.js';\n\nclass TextureUtils {\n\tstatic calcLevelDimension(dimension, mipLevel) {\n\t\treturn Math.max(dimension >> mipLevel, 1);\n\t}\n\tstatic calcMipLevelsCount(width, height, depth = 1) {\n\t\treturn 1 + Math.floor(Math.log2(Math.max(width, height, depth)));\n\t}\n\tstatic calcLevelGpuSize(width, height, depth, format) {\n\t\tvar _pixelFormatInfo$get$, _pixelFormatInfo$get, _formatInfo$blockSize;\n\t\tconst formatInfo = pixelFormatInfo.get(format);\n\t\tconst pixelSize = (_pixelFormatInfo$get$ = (_pixelFormatInfo$get = pixelFormatInfo.get(format)) == null ? void 0 : _pixelFormatInfo$get.size) != null ? _pixelFormatInfo$get$ : 0;\n\t\tif (pixelSize > 0) {\n\t\t\treturn width * height * depth * pixelSize;\n\t\t}\n\t\tconst blockSize = (_formatInfo$blockSize = formatInfo.blockSize) != null ? _formatInfo$blockSize : 0;\n\t\tlet blockWidth = Math.floor((width + 3) / 4);\n\t\tconst blockHeight = Math.floor((height + 3) / 4);\n\t\tconst blockDepth = Math.floor((depth + 3) / 4);\n\t\tif (format === PIXELFORMAT_PVRTC_2BPP_RGB_1 || format === PIXELFORMAT_PVRTC_2BPP_RGBA_1) {\n\t\t\tblockWidth = Math.max(Math.floor(blockWidth / 2), 1);\n\t\t}\n\t\treturn blockWidth * blockHeight * blockDepth * blockSize;\n\t}\n\tstatic calcGpuSize(width, height, depth, format, mipmaps, cubemap) {\n\t\tlet result = 0;\n\t\twhile (1) {\n\t\t\tresult += TextureUtils.calcLevelGpuSize(width, height, depth, format);\n\t\t\tif (!mipmaps || width === 1 && height === 1 && depth === 1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\twidth = Math.max(width >> 1, 1);\n\t\t\theight = Math.max(height >> 1, 1);\n\t\t\tdepth = Math.max(depth >> 1, 1);\n\t\t}\n\t\treturn result * (cubemap ? 6 : 1);\n\t}\n}\n\nexport { TextureUtils };\n", "import { math } from '../../../core/math/math.js';\nimport { isCompressedPixelFormat, PIXELFORMAT_DEPTHSTENCIL, SAMPLETYPE_DEPTH, SAMPLETYPE_INT, SAMPLETYPE_UINT, SAMPLETYPE_UNFILTERABLE_FLOAT, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA16F, isIntegerPixelFormat, pixelFormatInfo, ADDRESS_REPEAT, ADDRESS_CLAMP_TO_EDGE, ADDRESS_MIRRORED_REPEAT, FILTER_NEAREST, FILTER_LINEAR, FILTER_NEAREST_MIPMAP_NEAREST, FILTER_NEAREST_MIPMAP_LINEAR, FILTER_LINEAR_MIPMAP_NEAREST, FILTER_LINEAR_MIPMAP_LINEAR } from '../constants.js';\nimport { TextureUtils } from '../texture-utils.js';\nimport { gpuTextureFormats } from './constants.js';\n\nconst gpuAddressModes = [];\ngpuAddressModes[ADDRESS_REPEAT] = 'repeat';\ngpuAddressModes[ADDRESS_CLAMP_TO_EDGE] = 'clamp-to-edge';\ngpuAddressModes[ADDRESS_MIRRORED_REPEAT] = 'mirror-repeat';\nconst gpuFilterModes = [];\ngpuFilterModes[FILTER_NEAREST] = {\n\tlevel: 'nearest',\n\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_LINEAR] = {\n\tlevel: 'linear',\n\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_NEAREST_MIPMAP_NEAREST] = {\n\tlevel: 'nearest',\n\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_NEAREST_MIPMAP_LINEAR] = {\n\tlevel: 'nearest',\n\tmip: 'linear'\n};\ngpuFilterModes[FILTER_LINEAR_MIPMAP_NEAREST] = {\n\tlevel: 'linear',\n\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_LINEAR_MIPMAP_LINEAR] = {\n\tlevel: 'linear',\n\tmip: 'linear'\n};\nconst dummyUse = thingOne => {};\nclass WebgpuTexture {\n\tconstructor(texture) {\n\t\tthis.gpuTexture = void 0;\n\t\tthis.view = void 0;\n\t\tthis.samplers = [];\n\t\tthis.descr = void 0;\n\t\tthis.format = void 0;\n\t\tthis.texture = texture;\n\t\tthis.format = gpuTextureFormats[texture.format];\n\t\tthis.create(texture.device);\n\t}\n\tcreate(device) {\n\t\tconst texture = this.texture;\n\t\tconst wgpu = device.wgpu;\n\t\tconst mipLevelCount = texture.requiredMipLevels;\n\t\tthis.descr = {\n\t\t\tsize: {\n\t\t\t\twidth: texture.width,\n\t\t\t\theight: texture.height,\n\t\t\t\tdepthOrArrayLayers: texture.cubemap ? 6 : texture.array ? texture.arrayLength : 1\n\t\t\t},\n\t\t\tformat: this.format,\n\t\t\tmipLevelCount: mipLevelCount,\n\t\t\tsampleCount: 1,\n\t\t\tdimension: texture.volume ? '3d' : '2d',\n\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | (isCompressedPixelFormat(texture.format) ? 0 : GPUTextureUsage.RENDER_ATTACHMENT) | (texture.storage ? GPUTextureUsage.STORAGE_BINDING : 0)\n\t\t};\n\t\tthis.gpuTexture = wgpu.createTexture(this.descr);\n\t\tlet viewDescr;\n\t\tif (this.texture.format === PIXELFORMAT_DEPTHSTENCIL) {\n\t\t\tviewDescr = {\n\t\t\t\tformat: 'depth24plus',\n\t\t\t\taspect: 'depth-only'\n\t\t\t};\n\t\t}\n\t\tthis.view = this.createView(viewDescr);\n\t}\n\tdestroy(device) {}\n\tpropertyChanged(flag) {\n\t\tthis.samplers.length = 0;\n\t}\n\tgetView(device) {\n\t\tthis.uploadImmediate(device, this.texture);\n\t\treturn this.view;\n\t}\n\tcreateView(viewDescr) {\n\t\tvar _options$format, _options$dimension, _options$aspect, _options$baseMipLevel, _options$mipLevelCoun, _options$baseArrayLay, _options$arrayLayerCo;\n\t\tconst options = viewDescr != null ? viewDescr : {};\n\t\tconst textureDescr = this.descr;\n\t\tconst texture = this.texture;\n\t\tconst defaultViewDimension = () => {\n\t\t\tif (texture.cubemap) return 'cube';\n\t\t\tif (texture.volume) return '3d';\n\t\t\tif (texture.array) return '2d-array';\n\t\t\treturn '2d';\n\t\t};\n\t\tconst descr = {\n\t\t\tformat: (_options$format = options.format) != null ? _options$format : textureDescr.format,\n\t\t\tdimension: (_options$dimension = options.dimension) != null ? _options$dimension : defaultViewDimension(),\n\t\t\taspect: (_options$aspect = options.aspect) != null ? _options$aspect : 'all',\n\t\t\tbaseMipLevel: (_options$baseMipLevel = options.baseMipLevel) != null ? _options$baseMipLevel : 0,\n\t\t\tmipLevelCount: (_options$mipLevelCoun = options.mipLevelCount) != null ? _options$mipLevelCoun : textureDescr.mipLevelCount,\n\t\t\tbaseArrayLayer: (_options$baseArrayLay = options.baseArrayLayer) != null ? _options$baseArrayLay : 0,\n\t\t\tarrayLayerCount: (_options$arrayLayerCo = options.arrayLayerCount) != null ? _options$arrayLayerCo : textureDescr.depthOrArrayLayers\n\t\t};\n\t\tconst view = this.gpuTexture.createView(descr);\n\t\treturn view;\n\t}\n\tgetSampler(device, sampleType) {\n\t\tlet sampler = this.samplers[sampleType];\n\t\tif (!sampler) {\n\t\t\tconst texture = this.texture;\n\t\t\tconst descr = {\n\t\t\t\taddressModeU: gpuAddressModes[texture.addressU],\n\t\t\t\taddressModeV: gpuAddressModes[texture.addressV],\n\t\t\t\taddressModeW: gpuAddressModes[texture.addressW]\n\t\t\t};\n\t\t\tif (!sampleType && texture.compareOnRead) {\n\t\t\t\tsampleType = SAMPLETYPE_DEPTH;\n\t\t\t}\n\t\t\tif (sampleType === SAMPLETYPE_DEPTH || sampleType === SAMPLETYPE_INT || sampleType === SAMPLETYPE_UINT) {\n\t\t\t\tdescr.compare = 'less';\n\t\t\t\tdescr.magFilter = 'linear';\n\t\t\t\tdescr.minFilter = 'linear';\n\t\t\t} else if (sampleType === SAMPLETYPE_UNFILTERABLE_FLOAT) {\n\t\t\t\tdescr.magFilter = 'nearest';\n\t\t\t\tdescr.minFilter = 'nearest';\n\t\t\t\tdescr.mipmapFilter = 'nearest';\n\t\t\t} else {\n\t\t\t\tconst forceNearest = !device.textureFloatFilterable && (texture.format === PIXELFORMAT_RGBA32F || texture.format === PIXELFORMAT_RGBA16F);\n\t\t\t\tif (forceNearest || this.texture.format === PIXELFORMAT_DEPTHSTENCIL || isIntegerPixelFormat(this.texture.format)) {\n\t\t\t\t\tdescr.magFilter = 'nearest';\n\t\t\t\t\tdescr.minFilter = 'nearest';\n\t\t\t\t\tdescr.mipmapFilter = 'nearest';\n\t\t\t\t} else {\n\t\t\t\t\tdescr.magFilter = gpuFilterModes[texture.magFilter].level;\n\t\t\t\t\tdescr.minFilter = gpuFilterModes[texture.minFilter].level;\n\t\t\t\t\tdescr.mipmapFilter = gpuFilterModes[texture.minFilter].mip;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst allLinear = descr.minFilter === 'linear' && descr.magFilter === 'linear' && descr.mipmapFilter === 'linear';\n\t\t\tdescr.maxAnisotropy = allLinear ? math.clamp(Math.round(texture._anisotropy), 1, device.maxTextureAnisotropy) : 1;\n\t\t\tsampler = device.wgpu.createSampler(descr);\n\t\t\tthis.samplers[sampleType] = sampler;\n\t\t}\n\t\treturn sampler;\n\t}\n\tloseContext() {}\n\tuploadImmediate(device, texture) {\n\t\tif (texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\tthis.uploadData(device);\n\t\t\ttexture._needsUpload = false;\n\t\t\ttexture._needsMipmapsUpload = false;\n\t\t}\n\t}\n\tuploadData(device) {\n\t\tconst texture = this.texture;\n\t\tif (texture._levels) {\n\t\t\tlet anyUploads = false;\n\t\t\tlet anyLevelMissing = false;\n\t\t\tconst requiredMipLevels = texture.requiredMipLevels;\n\t\t\tfor (let mipLevel = 0; mipLevel < requiredMipLevels; mipLevel++) {\n\t\t\t\tconst mipObject = texture._levels[mipLevel];\n\t\t\t\tif (mipObject) {\n\t\t\t\t\tif (texture.cubemap) {\n\t\t\t\t\t\tfor (let face = 0; face < 6; face++) {\n\t\t\t\t\t\t\tconst faceSource = mipObject[face];\n\t\t\t\t\t\t\tif (faceSource) {\n\t\t\t\t\t\t\t\tif (this.isExternalImage(faceSource)) {\n\t\t\t\t\t\t\t\t\tthis.uploadExternalImage(device, faceSource, mipLevel, face);\n\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t} else if (ArrayBuffer.isView(faceSource)) {\n\t\t\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, faceSource, mipLevel, face);\n\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t} else ;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (texture._volume) ; else if (texture.array) {\n\t\t\t\t\t\tif (texture.arrayLength === mipObject.length) {\n\t\t\t\t\t\t\tfor (let index = 0; index < texture._arrayLength; index++) {\n\t\t\t\t\t\t\t\tconst arraySource = mipObject[index];\n\t\t\t\t\t\t\t\tif (this.isExternalImage(arraySource)) {\n\t\t\t\t\t\t\t\t\tthis.uploadExternalImage(device, arraySource, mipLevel, index);\n\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t} else if (ArrayBuffer.isView(arraySource)) {\n\t\t\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, arraySource, mipLevel, index);\n\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t} else ;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.isExternalImage(mipObject)) {\n\t\t\t\t\t\t\tthis.uploadExternalImage(device, mipObject, mipLevel, 0);\n\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t} else if (ArrayBuffer.isView(mipObject)) {\n\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, mipObject, mipLevel, 0);\n\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t} else ;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (anyUploads && anyLevelMissing && texture.mipmaps && !isCompressedPixelFormat(texture.format)) {\n\t\t\t\tdevice.mipmapRenderer.generate(this);\n\t\t\t}\n\t\t\tif (texture._gpuSize) {\n\t\t\t\ttexture.adjustVramSizeTracking(device._vram, -texture._gpuSize);\n\t\t\t}\n\t\t\ttexture._gpuSize = texture.gpuSize;\n\t\t\ttexture.adjustVramSizeTracking(device._vram, texture._gpuSize);\n\t\t}\n\t}\n\tisExternalImage(image) {\n\t\treturn image instanceof ImageBitmap || image instanceof HTMLVideoElement || image instanceof HTMLCanvasElement || image instanceof OffscreenCanvas;\n\t}\n\tuploadExternalImage(device, image, mipLevel, index) {\n\t\tconst src = {\n\t\t\tsource: image,\n\t\t\torigin: [0, 0],\n\t\t\tflipY: false\n\t\t};\n\t\tconst dst = {\n\t\t\ttexture: this.gpuTexture,\n\t\t\tmipLevel: mipLevel,\n\t\t\torigin: [0, 0, index],\n\t\t\taspect: 'all'\n\t\t};\n\t\tconst copySize = {\n\t\t\twidth: this.descr.size.width,\n\t\t\theight: this.descr.size.height,\n\t\t\tdepthOrArrayLayers: 1\n\t\t};\n\t\tdevice.submit();\n\t\tdummyUse(image instanceof HTMLCanvasElement && image.getContext('2d'));\n\t\tdevice.wgpu.queue.copyExternalImageToTexture(src, dst, copySize);\n\t}\n\tuploadTypedArrayData(device, data, mipLevel, index) {\n\t\tconst texture = this.texture;\n\t\tconst wgpu = device.wgpu;\n\t\tconst dest = {\n\t\t\ttexture: this.gpuTexture,\n\t\t\torigin: [0, 0, index],\n\t\t\tmipLevel: mipLevel\n\t\t};\n\t\tconst width = TextureUtils.calcLevelDimension(texture.width, mipLevel);\n\t\tconst height = TextureUtils.calcLevelDimension(texture.height, mipLevel);\n\t\tTextureUtils.calcLevelGpuSize(width, height, 1, texture.format);\n\t\tconst formatInfo = pixelFormatInfo.get(texture.format);\n\t\tlet dataLayout;\n\t\tlet size;\n\t\tif (formatInfo.size) {\n\t\t\tdataLayout = {\n\t\t\t\toffset: 0,\n\t\t\t\tbytesPerRow: formatInfo.size * width,\n\t\t\t\trowsPerImage: height\n\t\t\t};\n\t\t\tsize = {\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t} else if (formatInfo.blockSize) {\n\t\t\tconst blockDim = size => {\n\t\t\t\treturn Math.floor((size + 3) / 4);\n\t\t\t};\n\t\t\tdataLayout = {\n\t\t\t\toffset: 0,\n\t\t\t\tbytesPerRow: formatInfo.blockSize * blockDim(width),\n\t\t\t\trowsPerImage: blockDim(height)\n\t\t\t};\n\t\t\tsize = {\n\t\t\t\twidth: Math.max(4, width),\n\t\t\t\theight: Math.max(4, height)\n\t\t\t};\n\t\t} else ;\n\t\tdevice.submit();\n\t\twgpu.queue.writeTexture(dest, data, dataLayout, size);\n\t}\n}\n\nexport { WebgpuTexture };\n", "import { BUFFERUSAGE_UNIFORM } from '../constants.js';\nimport { WebgpuBuffer } from './webgpu-buffer.js';\n\nclass WebgpuUniformBuffer extends WebgpuBuffer {\n\tconstructor(uniformBuffer) {\n\t\tsuper(BUFFERUSAGE_UNIFORM);\n\t}\n\tunlock(uniformBuffer) {\n\t\tconst device = uniformBuffer.device;\n\t\tsuper.unlock(device, uniformBuffer.storageInt32.buffer);\n\t}\n}\n\nexport { WebgpuUniformBuffer };\n", "import { BUFFERUSAGE_VERTEX, BUFFERUSAGE_STORAGE } from '../constants.js';\nimport { WebgpuBuffer } from './webgpu-buffer.js';\n\nclass WebgpuVertexBuffer extends WebgpuBuffer {\n\tconstructor(vertexBuffer, format, options) {\n\t\tsuper(BUFFERUSAGE_VERTEX | (options != null && options.storage ? BUFFERUSAGE_STORAGE : 0));\n\t}\n\tunlock(vertexBuffer) {\n\t\tconst device = vertexBuffer.device;\n\t\tsuper.unlock(device, vertexBuffer.storage);\n\t}\n}\n\nexport { WebgpuVertexBuffer };\n", "const KEYWORD = /[ \\t]*#(ifn?def|if|endif|else|elif|define|undef|extension|include)/g;\nconst DEFINE = /define[ \\t]+([^\\n]+)\\r?(?:\\n|$)/g;\nconst EXTENSION = /extension[ \\t]+([\\w-]+)[ \\t]*:[ \\t]*(enable|require)/g;\nconst UNDEF = /undef[ \\t]+([^\\n]+)\\r?(?:\\n|$)/g;\nconst IF = /(ifdef|ifndef|if)[ \\t]*([^\\r\\n]+)\\r?\\n/g;\nconst ENDIF = /(endif|else|elif)([ \\t]+[^\\r\\n]+)?\\r?(?:\\n|$)/g;\nconst IDENTIFIER = /([\\w-]+)/;\nconst DEFINED = /(!|\\s)?defined\\(([\\w-]+)\\)/;\nconst INVALID = /[><=|&+-]/g;\nconst INCLUDE = /include[ \\t]+\"([\\w-]+)\"\\r?(?:\\n|$)/g;\nclass Preprocessor {\n\tstatic run(source, includes = new Map(), stripUnusedColorAttachments = false) {\n\t\tsource = source.replace(/\\/\\*[\\s\\S]*?\\*\\/|([^\\\\:]|^)\\/\\/.*$/gm, '$1');\n\t\tsource = source.split(/\\r?\\n/).map(line => line.trimEnd()).join('\\n');\n\t\tconst defines = new Map();\n\t\tif (stripUnusedColorAttachments) {\n\t\t\tconst counts = new Map();\n\t\t\tconst regex = /(pcFragColor[1-8])\\b/g;\n\t\t\tconst matches = source.match(regex);\n\t\t\tmatches == null || matches.forEach(match => {\n\t\t\t\tvar _counts$get;\n\t\t\t\tconst index = parseInt(match.charAt(match.length - 1), 10);\n\t\t\t\tcounts.set(index, ((_counts$get = counts.get(index)) != null ? _counts$get : 0) + 1);\n\t\t\t});\n\t\t\tcounts.forEach((count, index) => {\n\t\t\t\tif (count === 1) {\n\t\t\t\t\tdefines.set(`REMOVE_COLOR_ATTACHMENT_${index}`, '');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tsource = this._preprocess(source, defines, includes);\n\t\tconst intDefines = new Map();\n\t\tdefines.forEach((value, key) => {\n\t\t\tif (Number.isInteger(parseFloat(value)) && !value.includes('.')) {\n\t\t\t\tintDefines.set(key, value);\n\t\t\t}\n\t\t});\n\t\tsource = this.RemoveEmptyLines(source);\n\t\tsource = this.processArraySize(source, intDefines);\n\t\treturn source;\n\t}\n\tstatic processArraySize(source, intDefines) {\n\t\tif (source !== null) {\n\t\t\tintDefines.forEach((value, key) => {\n\t\t\t\tsource = source.replace(new RegExp(`\\\\[${key}\\\\]`, 'g'), `[${value}]`);\n\t\t\t});\n\t\t}\n\t\treturn source;\n\t}\n\tstatic RemoveEmptyLines(source) {\n\t\tif (source !== null) {\n\t\t\tsource = source.split(/\\r?\\n/).map(line => line.trim() === '' ? '' : line).join('\\n');\n\t\t\tsource = source.replace(/(\\n\\n){3,}/gm, '\\n\\n');\n\t\t}\n\t\treturn source;\n\t}\n\tstatic _preprocess(source, defines = new Map(), includes) {\n\t\tconst originalSource = source;\n\t\tconst stack = [];\n\t\tlet error = false;\n\t\tlet match;\n\t\twhile ((match = KEYWORD.exec(source)) !== null) {\n\t\t\tconst keyword = match[1];\n\t\t\tswitch (keyword) {\n\t\t\t\tcase 'define':\n\t\t\t\t\t{\n\t\t\t\t\t\tDEFINE.lastIndex = match.index;\n\t\t\t\t\t\tconst define = DEFINE.exec(source);\n\t\t\t\t\t\terror || (error = define === null);\n\t\t\t\t\t\tconst expression = define[1];\n\t\t\t\t\t\tIDENTIFIER.lastIndex = define.index;\n\t\t\t\t\t\tconst identifierValue = IDENTIFIER.exec(expression);\n\t\t\t\t\t\tconst identifier = identifierValue[1];\n\t\t\t\t\t\tlet value = expression.substring(identifier.length).trim();\n\t\t\t\t\t\tif (value === \"\") value = \"true\";\n\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\tdefines.set(identifier, value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tKEYWORD.lastIndex = define.index + define[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase 'undef':\n\t\t\t\t\t{\n\t\t\t\t\t\tUNDEF.lastIndex = match.index;\n\t\t\t\t\t\tconst undef = UNDEF.exec(source);\n\t\t\t\t\t\tconst identifier = undef[1].trim();\n\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\tdefines.delete(identifier);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tKEYWORD.lastIndex = undef.index + undef[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase 'extension':\n\t\t\t\t\t{\n\t\t\t\t\t\tEXTENSION.lastIndex = match.index;\n\t\t\t\t\t\tconst extension = EXTENSION.exec(source);\n\t\t\t\t\t\terror || (error = extension === null);\n\t\t\t\t\t\tif (extension) {\n\t\t\t\t\t\t\tconst identifier = extension[1];\n\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\tdefines.set(identifier, \"true\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tKEYWORD.lastIndex = extension.index + extension[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase 'ifdef':\n\t\t\t\tcase 'ifndef':\n\t\t\t\tcase 'if':\n\t\t\t\t\t{\n\t\t\t\t\t\tIF.lastIndex = match.index;\n\t\t\t\t\t\tconst iff = IF.exec(source);\n\t\t\t\t\t\tconst expression = iff[2];\n\t\t\t\t\t\tconst evaluated = Preprocessor.evaluate(expression, defines);\n\t\t\t\t\t\terror || (error = evaluated.error);\n\t\t\t\t\t\tlet result = evaluated.result;\n\t\t\t\t\t\tif (keyword === 'ifndef') {\n\t\t\t\t\t\t\tresult = !result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\tanyKeep: result,\n\t\t\t\t\t\t\tkeep: result,\n\t\t\t\t\t\t\tstart: match.index,\n\t\t\t\t\t\t\tend: IF.lastIndex\n\t\t\t\t\t\t});\n\t\t\t\t\t\tKEYWORD.lastIndex = iff.index + iff[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase 'endif':\n\t\t\t\tcase 'else':\n\t\t\t\tcase 'elif':\n\t\t\t\t\t{\n\t\t\t\t\t\tENDIF.lastIndex = match.index;\n\t\t\t\t\t\tconst endif = ENDIF.exec(source);\n\t\t\t\t\t\tconst blockInfo = stack.pop();\n\t\t\t\t\t\tconst blockCode = blockInfo.keep ? source.substring(blockInfo.end, match.index) : \"\";\n\t\t\t\t\t\tsource = source.substring(0, blockInfo.start) + blockCode + source.substring(ENDIF.lastIndex);\n\t\t\t\t\t\tKEYWORD.lastIndex = blockInfo.start + blockCode.length;\n\t\t\t\t\t\tconst endifCommand = endif[1];\n\t\t\t\t\t\tif (endifCommand === 'else' || endifCommand === 'elif') {\n\t\t\t\t\t\t\tlet result = false;\n\t\t\t\t\t\t\tif (!blockInfo.anyKeep) {\n\t\t\t\t\t\t\t\tif (endifCommand === 'else') {\n\t\t\t\t\t\t\t\t\tresult = !blockInfo.keep;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst evaluated = Preprocessor.evaluate(endif[2], defines);\n\t\t\t\t\t\t\t\t\tresult = evaluated.result;\n\t\t\t\t\t\t\t\t\terror || (error = evaluated.error);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\tanyKeep: blockInfo.anyKeep || result,\n\t\t\t\t\t\t\t\tkeep: result,\n\t\t\t\t\t\t\t\tstart: KEYWORD.lastIndex,\n\t\t\t\t\t\t\t\tend: KEYWORD.lastIndex\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase 'include':\n\t\t\t\t\t{\n\t\t\t\t\t\tINCLUDE.lastIndex = match.index;\n\t\t\t\t\t\tconst include = INCLUDE.exec(source);\n\t\t\t\t\t\terror || (error = include === null);\n\t\t\t\t\t\tconst identifier = include[1].trim();\n\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\tconst includeSource = includes == null ? void 0 : includes.get(identifier);\n\t\t\t\t\t\t\tif (includeSource) {\n\t\t\t\t\t\t\t\tsource = source.substring(0, include.index - 1) + includeSource + source.substring(INCLUDE.lastIndex);\n\t\t\t\t\t\t\t\tKEYWORD.lastIndex = include.index;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.error(`Include not found: ${identifier}`);\n\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (error) {\n\t\t\tconsole.warn(\"Failed to preprocess shader: \", {\n\t\t\t\tsource: originalSource\n\t\t\t});\n\t\t\treturn originalSource;\n\t\t}\n\t\treturn source;\n\t}\n\tstatic _keep(stack) {\n\t\tfor (let i = 0; i < stack.length; i++) {\n\t\t\tif (!stack[i].keep) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tstatic evaluate(expression, defines) {\n\t\tconst correct = INVALID.exec(expression) === null;\n\t\tlet invert = false;\n\t\tconst defined = DEFINED.exec(expression);\n\t\tif (defined) {\n\t\t\tinvert = defined[1] === '!';\n\t\t\texpression = defined[2];\n\t\t}\n\t\texpression = expression.trim();\n\t\tlet exists = defines.has(expression);\n\t\tif (invert) {\n\t\t\texists = !exists;\n\t\t}\n\t\treturn {\n\t\t\tresult: exists,\n\t\t\terror: !correct\n\t\t};\n\t}\n}\n\nexport { Preprocessor };\n", "import { platform } from '../../core/platform.js';\nimport { Preprocessor } from '../../core/preprocessor.js';\n\nlet id = 0;\nclass Shader {\n\tconstructor(graphicsDevice, definition) {\n\t\tthis.meshUniformBufferFormat = void 0;\n\t\tthis.meshBindGroupFormat = void 0;\n\t\tthis.id = id++;\n\t\tthis.device = graphicsDevice;\n\t\tthis.definition = definition;\n\t\tthis.name = definition.name || 'Untitled';\n\t\tthis.init();\n\t\tif (definition.cshader) ; else {\n\t\t\tdefinition.vshader = Preprocessor.run(definition.vshader, definition.vincludes);\n\t\t\tconst stripUnusedColorAttachments = graphicsDevice.isWebGL2 && (platform.name === 'osx' || platform.name === 'ios');\n\t\t\tdefinition.fshader = Preprocessor.run(definition.fshader, definition.fincludes, stripUnusedColorAttachments);\n\t\t}\n\t\tthis.impl = graphicsDevice.createShaderImpl(this);\n\t}\n\tinit() {\n\t\tthis.ready = false;\n\t\tthis.failed = false;\n\t}\n\tget label() {\n\t\treturn `Shader Id ${this.id} ${this.name}`;\n\t}\n\tdestroy() {\n\t\tthis.device.onDestroyShader(this);\n\t\tthis.impl.destroy(this);\n\t}\n\tloseContext() {\n\t\tthis.init();\n\t\tthis.impl.loseContext();\n\t}\n\trestoreContext() {\n\t\tthis.impl.restoreContext(this.device, this);\n\t}\n}\n\nexport { Shader };\n", "import { UNIFORM_BUFFER_DEFAULT_SLOT_NAME } from './constants.js';\n\nlet id = 0;\nclass BindGroup {\n\tconstructor(graphicsDevice, format, defaultUniformBuffer) {\n\t\tthis.renderVersionUpdated = -1;\n\t\tthis.uniformBuffers = void 0;\n\t\tthis.uniformBufferOffsets = [];\n\t\tthis.id = id++;\n\t\tthis.device = graphicsDevice;\n\t\tthis.format = format;\n\t\tthis.dirty = true;\n\t\tthis.impl = graphicsDevice.createBindGroupImpl(this);\n\t\tthis.textures = [];\n\t\tthis.storageTextures = [];\n\t\tthis.storageBuffers = [];\n\t\tthis.uniformBuffers = [];\n\t\tthis.defaultUniformBuffer = defaultUniformBuffer;\n\t\tif (defaultUniformBuffer) {\n\t\t\tthis.setUniformBuffer(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, defaultUniformBuffer);\n\t\t}\n\t}\n\tdestroy() {\n\t\tthis.impl.destroy();\n\t\tthis.impl = null;\n\t\tthis.format = null;\n\t\tthis.defaultUniformBuffer = null;\n\t}\n\tsetUniformBuffer(name, uniformBuffer) {\n\t\tconst index = this.format.bufferFormatsMap.get(name);\n\t\tif (this.uniformBuffers[index] !== uniformBuffer) {\n\t\t\tthis.uniformBuffers[index] = uniformBuffer;\n\t\t\tthis.dirty = true;\n\t\t}\n\t}\n\tsetStorageBuffer(name, storageBuffer) {\n\t\tconst index = this.format.storageBufferFormatsMap.get(name);\n\t\tif (this.storageBuffers[index] !== storageBuffer) {\n\t\t\tthis.storageBuffers[index] = storageBuffer;\n\t\t\tthis.dirty = true;\n\t\t}\n\t}\n\tsetTexture(name, texture) {\n\t\tconst index = this.format.textureFormatsMap.get(name);\n\t\tif (this.textures[index] !== texture) {\n\t\t\tthis.textures[index] = texture;\n\t\t\tthis.dirty = true;\n\t\t} else if (this.renderVersionUpdated < texture.renderVersionDirty) {\n\t\t\tthis.dirty = true;\n\t\t}\n\t}\n\tsetStorageTexture(name, texture) {\n\t\tconst index = this.format.storageTextureFormatsMap.get(name);\n\t\tif (this.storageTextures[index] !== texture) {\n\t\t\tthis.storageTextures[index] = texture;\n\t\t\tthis.dirty = true;\n\t\t} else if (this.renderVersionUpdated < texture.renderVersionDirty) {\n\t\t\tthis.dirty = true;\n\t\t}\n\t}\n\tupdateUniformBuffers() {\n\t\tfor (let i = 0; i < this.uniformBuffers.length; i++) {\n\t\t\tthis.uniformBuffers[i].update();\n\t\t}\n\t}\n\tupdate() {\n\t\tconst {\n\t\t\ttextureFormats,\n\t\t\tstorageTextureFormats,\n\t\t\tstorageBufferFormats\n\t\t} = this.format;\n\t\tfor (let i = 0; i < textureFormats.length; i++) {\n\t\t\tconst textureFormat = textureFormats[i];\n\t\t\tconst value = textureFormat.scopeId.value;\n\t\t\tthis.setTexture(textureFormat.name, value);\n\t\t}\n\t\tfor (let i = 0; i < storageTextureFormats.length; i++) {\n\t\t\tconst storageTextureFormat = storageTextureFormats[i];\n\t\t\tconst value = storageTextureFormat.scopeId.value;\n\t\t\tthis.setStorageTexture(storageTextureFormat.name, value);\n\t\t}\n\t\tfor (let i = 0; i < storageBufferFormats.length; i++) {\n\t\t\tconst storageBufferFormat = storageBufferFormats[i];\n\t\t\tconst value = storageBufferFormat.scopeId.value;\n\t\t\tthis.setStorageBuffer(storageBufferFormat.name, value);\n\t\t}\n\t\tthis.uniformBufferOffsets.length = this.uniformBuffers.length;\n\t\tfor (let i = 0; i < this.uniformBuffers.length; i++) {\n\t\t\tconst uniformBuffer = this.uniformBuffers[i];\n\t\t\tthis.uniformBufferOffsets[i] = uniformBuffer.offset;\n\t\t\tif (this.renderVersionUpdated < uniformBuffer.renderVersionDirty) {\n\t\t\t\tthis.dirty = true;\n\t\t\t}\n\t\t}\n\t\tif (this.dirty) {\n\t\t\tthis.dirty = false;\n\t\t\tthis.renderVersionUpdated = this.device.renderVersion;\n\t\t\tthis.impl.update(this);\n\t\t}\n\t}\n}\n\nexport { BindGroup };\n", "import { math } from '../../core/math/math.js';\n\nclass DynamicBuffer {\n\tconstructor(device) {\n\t\tthis.device = void 0;\n\t\tthis.device = device;\n\t}\n}\nclass UsedBuffer {\n\tconstructor() {\n\t\tthis.gpuBuffer = void 0;\n\t\tthis.stagingBuffer = void 0;\n\t\tthis.offset = void 0;\n\t\tthis.size = void 0;\n\t}\n}\nclass DynamicBufferAllocation {\n\tconstructor() {\n\t\tthis.storage = void 0;\n\t\tthis.gpuBuffer = void 0;\n\t\tthis.offset = void 0;\n\t}\n}\nclass DynamicBuffers {\n\tconstructor(device, bufferSize, bufferAlignment) {\n\t\tthis.bufferSize = void 0;\n\t\tthis.gpuBuffers = [];\n\t\tthis.stagingBuffers = [];\n\t\tthis.usedBuffers = [];\n\t\tthis.activeBuffer = null;\n\t\tthis.device = device;\n\t\tthis.bufferSize = bufferSize;\n\t\tthis.bufferAlignment = bufferAlignment;\n\t}\n\tdestroy() {\n\t\tthis.gpuBuffers.forEach(gpuBuffer => {\n\t\t\tgpuBuffer.destroy(this.device);\n\t\t});\n\t\tthis.gpuBuffers = null;\n\t\tthis.stagingBuffers.forEach(stagingBuffer => {\n\t\t\tstagingBuffer.destroy(this.device);\n\t\t});\n\t\tthis.stagingBuffers = null;\n\t\tthis.usedBuffers = null;\n\t\tthis.activeBuffer = null;\n\t}\n\talloc(allocation, size) {\n\t\tif (this.activeBuffer) {\n\t\t\tconst _alignedStart = math.roundUp(this.activeBuffer.size, this.bufferAlignment);\n\t\t\tconst space = this.bufferSize - _alignedStart;\n\t\t\tif (space < size) {\n\t\t\t\tthis.scheduleSubmit();\n\t\t\t}\n\t\t}\n\t\tif (!this.activeBuffer) {\n\t\t\tlet gpuBuffer = this.gpuBuffers.pop();\n\t\t\tif (!gpuBuffer) {\n\t\t\t\tgpuBuffer = this.createBuffer(this.device, this.bufferSize, false);\n\t\t\t}\n\t\t\tlet stagingBuffer = this.stagingBuffers.pop();\n\t\t\tif (!stagingBuffer) {\n\t\t\t\tstagingBuffer = this.createBuffer(this.device, this.bufferSize, true);\n\t\t\t}\n\t\t\tthis.activeBuffer = new UsedBuffer();\n\t\t\tthis.activeBuffer.stagingBuffer = stagingBuffer;\n\t\t\tthis.activeBuffer.gpuBuffer = gpuBuffer;\n\t\t\tthis.activeBuffer.offset = 0;\n\t\t\tthis.activeBuffer.size = 0;\n\t\t}\n\t\tconst activeBuffer = this.activeBuffer;\n\t\tconst alignedStart = math.roundUp(activeBuffer.size, this.bufferAlignment);\n\t\tallocation.gpuBuffer = activeBuffer.gpuBuffer;\n\t\tallocation.offset = alignedStart;\n\t\tallocation.storage = activeBuffer.stagingBuffer.alloc(alignedStart, size);\n\t\tactiveBuffer.size = alignedStart + size;\n\t}\n\tscheduleSubmit() {\n\t\tif (this.activeBuffer) {\n\t\t\tthis.usedBuffers.push(this.activeBuffer);\n\t\t\tthis.activeBuffer = null;\n\t\t}\n\t}\n\tsubmit() {\n\t\tthis.scheduleSubmit();\n\t}\n}\n\nexport { DynamicBuffer, DynamicBufferAllocation, DynamicBuffers };\n", "import { UNIFORMTYPE_FLOAT, UNIFORMTYPE_VEC2, UNIFORMTYPE_VEC3, UNIFORMTYPE_VEC4, UNIFORMTYPE_INT, UNIFORMTYPE_IVEC2, UNIFORMTYPE_IVEC3, UNIFORMTYPE_IVEC4, UNIFORMTYPE_MAT2, UNIFORMTYPE_MAT3, UNIFORMTYPE_FLOATARRAY, UNIFORMTYPE_VEC2ARRAY, UNIFORMTYPE_VEC3ARRAY, UNIFORMTYPE_UINT, UNIFORMTYPE_UVEC2, UNIFORMTYPE_UVEC3, UNIFORMTYPE_UVEC4, UNIFORMTYPE_INTARRAY, UNIFORMTYPE_BOOLARRAY, UNIFORMTYPE_UINTARRAY, UNIFORMTYPE_IVEC2ARRAY, UNIFORMTYPE_BVEC2ARRAY, UNIFORMTYPE_UVEC2ARRAY, UNIFORMTYPE_IVEC3ARRAY, UNIFORMTYPE_BVEC3ARRAY, UNIFORMTYPE_UVEC3ARRAY } from './constants.js';\nimport { DynamicBufferAllocation } from './dynamic-buffers.js';\n\nconst _updateFunctions = [];\n_updateFunctions[UNIFORMTYPE_FLOAT] = function (uniformBuffer, value, offset) {\n\tconst dst = uniformBuffer.storageFloat32;\n\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_VEC2] = (uniformBuffer, value, offset) => {\n\tconst dst = uniformBuffer.storageFloat32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_VEC3] = (uniformBuffer, value, offset) => {\n\tconst dst = uniformBuffer.storageFloat32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_VEC4] = (uniformBuffer, value, offset) => {\n\tconst dst = uniformBuffer.storageFloat32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n\tdst[offset + 2] = value[2];\n\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_INT] = function (uniformBuffer, value, offset) {\n\tconst dst = uniformBuffer.storageInt32;\n\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_IVEC2] = function (uniformBuffer, value, offset) {\n\tconst dst = uniformBuffer.storageInt32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_IVEC3] = function (uniformBuffer, value, offset) {\n\tconst dst = uniformBuffer.storageInt32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_IVEC4] = function (uniformBuffer, value, offset) {\n\tconst dst = uniformBuffer.storageInt32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n\tdst[offset + 2] = value[2];\n\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_MAT2] = (uniformBuffer, value, offset) => {\n\tconst dst = uniformBuffer.storageFloat32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n\tdst[offset + 4] = value[2];\n\tdst[offset + 5] = value[3];\n\tdst[offset + 8] = value[4];\n\tdst[offset + 9] = value[5];\n};\n_updateFunctions[UNIFORMTYPE_MAT3] = (uniformBuffer, value, offset) => {\n\tconst dst = uniformBuffer.storageFloat32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n\tdst[offset + 2] = value[2];\n\tdst[offset + 4] = value[3];\n\tdst[offset + 5] = value[4];\n\tdst[offset + 6] = value[5];\n\tdst[offset + 8] = value[6];\n\tdst[offset + 9] = value[7];\n\tdst[offset + 10] = value[8];\n};\n_updateFunctions[UNIFORMTYPE_FLOATARRAY] = function (uniformBuffer, value, offset, count) {\n\tconst dst = uniformBuffer.storageFloat32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i];\n\t}\n};\n_updateFunctions[UNIFORMTYPE_VEC2ARRAY] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageFloat32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i * 2];\n\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t}\n};\n_updateFunctions[UNIFORMTYPE_VEC3ARRAY] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageFloat32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i * 3];\n\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t}\n};\n_updateFunctions[UNIFORMTYPE_UINT] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageUint32;\n\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_UVEC2] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageUint32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_UVEC3] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageUint32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_UVEC4] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageUint32;\n\tdst[offset] = value[0];\n\tdst[offset + 1] = value[1];\n\tdst[offset + 2] = value[2];\n\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_INTARRAY] = function (uniformBuffer, value, offset, count) {\n\tconst dst = uniformBuffer.storageInt32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i];\n\t}\n};\n_updateFunctions[UNIFORMTYPE_BOOLARRAY] = _updateFunctions[UNIFORMTYPE_INTARRAY];\n_updateFunctions[UNIFORMTYPE_UINTARRAY] = function (uniformBuffer, value, offset, count) {\n\tconst dst = uniformBuffer.storageUint32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i];\n\t}\n};\n_updateFunctions[UNIFORMTYPE_IVEC2ARRAY] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageInt32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i * 2];\n\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t}\n};\n_updateFunctions[UNIFORMTYPE_BVEC2ARRAY] = _updateFunctions[UNIFORMTYPE_IVEC2ARRAY];\n_updateFunctions[UNIFORMTYPE_UVEC2ARRAY] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageUint32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i * 2];\n\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t}\n};\n_updateFunctions[UNIFORMTYPE_IVEC3ARRAY] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageInt32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i * 3];\n\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t}\n};\n_updateFunctions[UNIFORMTYPE_BVEC3ARRAY] = _updateFunctions[UNIFORMTYPE_IVEC3ARRAY];\n_updateFunctions[UNIFORMTYPE_UVEC3ARRAY] = (uniformBuffer, value, offset, count) => {\n\tconst dst = uniformBuffer.storageUint32;\n\tfor (let i = 0; i < count; i++) {\n\t\tdst[offset + i * 4] = value[i * 3];\n\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t}\n};\nclass UniformBuffer {\n\tconstructor(graphicsDevice, format, persistent = true) {\n\t\tthis.device = void 0;\n\t\tthis.persistent = void 0;\n\t\tthis.allocation = void 0;\n\t\tthis.storageFloat32 = void 0;\n\t\tthis.storageInt32 = void 0;\n\t\tthis.storageUint32 = void 0;\n\t\tthis.renderVersionDirty = 0;\n\t\tthis.device = graphicsDevice;\n\t\tthis.format = format;\n\t\tthis.persistent = persistent;\n\t\tif (persistent) {\n\t\t\tthis.impl = graphicsDevice.createUniformBufferImpl(this);\n\t\t\tconst storage = new ArrayBuffer(format.byteSize);\n\t\t\tthis.assignStorage(new Int32Array(storage));\n\t\t\tgraphicsDevice._vram.ub += this.format.byteSize;\n\t\t} else {\n\t\t\tthis.allocation = new DynamicBufferAllocation();\n\t\t}\n\t}\n\tdestroy() {\n\t\tif (this.persistent) {\n\t\t\tconst device = this.device;\n\t\t\tthis.impl.destroy(device);\n\t\t\tdevice._vram.ub -= this.format.byteSize;\n\t\t}\n\t}\n\tget offset() {\n\t\treturn this.persistent ? 0 : this.allocation.offset;\n\t}\n\tassignStorage(storage) {\n\t\tthis.storageInt32 = storage;\n\t\tthis.storageUint32 = new Uint32Array(storage.buffer, storage.byteOffset, storage.byteLength / 4);\n\t\tthis.storageFloat32 = new Float32Array(storage.buffer, storage.byteOffset, storage.byteLength / 4);\n\t}\n\tloseContext() {\n\t\tvar _this$impl;\n\t\t(_this$impl = this.impl) == null || _this$impl.loseContext();\n\t}\n\tsetUniform(uniformFormat) {\n\t\tconst offset = uniformFormat.offset;\n\t\tconst value = uniformFormat.scopeId.value;\n\t\tif (value !== null && value !== undefined) {\n\t\t\tconst updateFunction = _updateFunctions[uniformFormat.updateType];\n\t\t\tif (updateFunction) {\n\t\t\t\tupdateFunction(this, value, offset, uniformFormat.count);\n\t\t\t} else {\n\t\t\t\tthis.storageFloat32.set(value, offset);\n\t\t\t}\n\t\t}\n\t}\n\tset(name) {\n\t\tconst uniformFormat = this.format.map.get(name);\n\t\tif (uniformFormat) {\n\t\t\tthis.setUniform(uniformFormat);\n\t\t}\n\t}\n\tupdate() {\n\t\tconst persistent = this.persistent;\n\t\tif (!persistent) {\n\t\t\tconst allocation = this.allocation;\n\t\t\tconst oldGpuBuffer = allocation.gpuBuffer;\n\t\t\tthis.device.dynamicBuffers.alloc(allocation, this.format.byteSize);\n\t\t\tthis.assignStorage(allocation.storage);\n\t\t\tif (oldGpuBuffer !== allocation.gpuBuffer) {\n\t\t\t\tthis.renderVersionDirty = this.device.renderVersion;\n\t\t\t}\n\t\t}\n\t\tconst uniforms = this.format.uniforms;\n\t\tfor (let i = 0; i < uniforms.length; i++) {\n\t\t\tthis.setUniform(uniforms[i]);\n\t\t}\n\t\tif (persistent) {\n\t\t\tthis.impl.unlock(this);\n\t\t} else {\n\t\t\tthis.storageFloat32 = null;\n\t\t\tthis.storageInt32 = null;\n\t\t}\n\t}\n}\n\nexport { UniformBuffer };\n", "import { BindGroupFormat, BindUniformBufferFormat } from '../bind-group-format.js';\nimport { UniformBufferFormat, UniformFormat } from '../uniform-buffer-format.js';\nimport { BlendState } from '../blend-state.js';\nimport { SHADERLANGUAGE_WGSL, UNIFORMTYPE_VEC4, UNIFORMTYPE_FLOAT, UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX, SHADERSTAGE_FRAGMENT, CLEARFLAG_COLOR, CLEARFLAG_DEPTH, CLEARFLAG_STENCIL, CULLFACE_NONE, BINDGROUP_MESH, PRIMITIVE_TRISTRIP } from '../constants.js';\nimport { Shader } from '../shader.js';\nimport { BindGroup } from '../bind-group.js';\nimport { UniformBuffer } from '../uniform-buffer.js';\nimport { DepthState } from '../depth-state.js';\n\nconst primitive = {\n\ttype: PRIMITIVE_TRISTRIP,\n\tbase: 0,\n\tcount: 4,\n\tindexed: false\n};\nclass WebgpuClearRenderer {\n\tconstructor(device) {\n\t\tconst code = `\n\n\t\t\t\t\t\tstruct ub_mesh {\n\t\t\t\t\t\t\t\tcolor : vec4f,\n\t\t\t\t\t\t\t\tdepth: f32\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(0) @binding(0) var ubMesh : ub_mesh;\n\n\t\t\t\t\t\tvar pos : array = array(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0),\n\t\t\t\t\t\t\t\tvec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\t\toutput.position = vec4(pos[vertexIndex], ubMesh.depth, 1.0);\n\t\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain() -> @location(0) vec4f {\n\t\t\t\t\t\t\t\treturn ubMesh.color;\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\tthis.shader = new Shader(device, {\n\t\t\tname: 'WebGPUClearRendererShader',\n\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\tvshader: code,\n\t\t\tfshader: code\n\t\t});\n\t\tthis.uniformBuffer = new UniformBuffer(device, new UniformBufferFormat(device, [new UniformFormat('color', UNIFORMTYPE_VEC4), new UniformFormat('depth', UNIFORMTYPE_FLOAT)]), false);\n\t\tconst bindGroupFormat = new BindGroupFormat(device, [new BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)]);\n\t\tthis.bindGroup = new BindGroup(device, bindGroupFormat, this.uniformBuffer);\n\t\tthis.colorData = new Float32Array(4);\n\t\tthis.colorId = device.scope.resolve('color');\n\t\tthis.depthId = device.scope.resolve('depth');\n\t}\n\tdestroy() {\n\t\tthis.shader.destroy();\n\t\tthis.shader = null;\n\t\tthis.uniformBuffer.destroy();\n\t\tthis.uniformBuffer = null;\n\t\tthis.bindGroup.destroy();\n\t\tthis.bindGroup = null;\n\t}\n\tclear(device, renderTarget, options, defaultOptions) {\n\t\tvar _options$flags;\n\t\toptions = options || defaultOptions;\n\t\tconst flags = (_options$flags = options.flags) != null ? _options$flags : defaultOptions.flags;\n\t\tif (flags !== 0) {\n\t\t\tif (flags & CLEARFLAG_COLOR && (renderTarget.colorBuffer || renderTarget.impl.assignedColorTexture)) {\n\t\t\t\tvar _options$color;\n\t\t\t\tconst color = (_options$color = options.color) != null ? _options$color : defaultOptions.color;\n\t\t\t\tthis.colorData.set(color);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t} else {\n\t\t\t\tdevice.setBlendState(BlendState.NOWRITE);\n\t\t\t}\n\t\t\tthis.colorId.setValue(this.colorData);\n\t\t\tif (flags & CLEARFLAG_DEPTH && renderTarget.depth) {\n\t\t\t\tvar _options$depth;\n\t\t\t\tconst depth = (_options$depth = options.depth) != null ? _options$depth : defaultOptions.depth;\n\t\t\t\tthis.depthId.setValue(depth);\n\t\t\t\tdevice.setDepthState(DepthState.WRITEDEPTH);\n\t\t\t} else {\n\t\t\t\tthis.depthId.setValue(1);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t}\n\t\t\tif (flags & CLEARFLAG_STENCIL && renderTarget.stencil) ;\n\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\tdevice.setShader(this.shader);\n\t\t\tconst bindGroup = this.bindGroup;\n\t\t\tbindGroup.defaultUniformBuffer.update();\n\t\t\tbindGroup.update();\n\t\t\tdevice.setBindGroup(BINDGROUP_MESH, bindGroup);\n\t\t\tdevice.draw(primitive);\n\t\t}\n\t}\n}\n\nexport { WebgpuClearRenderer };\n", "import { Shader } from '../shader.js';\nimport { SHADERLANGUAGE_WGSL } from '../constants.js';\n\nclass WebgpuMipmapRenderer {\n\tconstructor(device) {\n\t\tthis.device = void 0;\n\t\tthis.device = device;\n\t\tconst code = `\n \n\t\t\t\t\t\tvar pos : array = array(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0),\n\t\t\t\t\t\t\t\tvec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f,\n\t\t\t\t\t\t\t\t@location(0) texCoord : vec2f\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\toutput.texCoord = pos[vertexIndex] * vec2f(0.5, -0.5) + vec2f(0.5);\n\t\t\t\t\t\t\toutput.position = vec4f(pos[vertexIndex], 0, 1);\n\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(0) @binding(0) var imgSampler : sampler;\n\t\t\t\t\t\t@group(0) @binding(1) var img : texture_2d;\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain(@location(0) texCoord : vec2f) -> @location(0) vec4f {\n\t\t\t\t\t\t\treturn textureSample(img, imgSampler, texCoord);\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\tthis.shader = new Shader(device, {\n\t\t\tname: 'WebGPUMipmapRendererShader',\n\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\tvshader: code,\n\t\t\tfshader: code\n\t\t});\n\t\tthis.minSampler = device.wgpu.createSampler({\n\t\t\tminFilter: 'linear'\n\t\t});\n\t}\n\tdestroy() {\n\t\tthis.shader.destroy();\n\t\tthis.shader = null;\n\t}\n\tgenerate(webgpuTexture) {\n\t\tvar _device$commandEncode;\n\t\tconst textureDescr = webgpuTexture.descr;\n\t\tif (textureDescr.mipLevelCount <= 1) {\n\t\t\treturn;\n\t\t}\n\t\tif (webgpuTexture.texture.volume) {\n\t\t\treturn;\n\t\t}\n\t\tconst device = this.device;\n\t\tconst wgpu = device.wgpu;\n\t\tconst webgpuShader = this.shader.impl;\n\t\tconst pipeline = wgpu.createRenderPipeline({\n\t\t\tlayout: 'auto',\n\t\t\tvertex: {\n\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\t\ttargets: [{\n\t\t\t\t\tformat: textureDescr.format\n\t\t\t\t}]\n\t\t\t},\n\t\t\tprimitive: {\n\t\t\t\ttopology: 'triangle-strip'\n\t\t\t}\n\t\t});\n\t\tconst texture = webgpuTexture.texture;\n\t\tconst numFaces = texture.cubemap ? 6 : texture.array ? texture.arrayLength : 1;\n\t\tconst srcViews = [];\n\t\tfor (let face = 0; face < numFaces; face++) {\n\t\t\tsrcViews.push(webgpuTexture.createView({\n\t\t\t\tdimension: '2d',\n\t\t\t\tbaseMipLevel: 0,\n\t\t\t\tmipLevelCount: 1,\n\t\t\t\tbaseArrayLayer: face\n\t\t\t}));\n\t\t}\n\t\tconst commandEncoder = (_device$commandEncode = device.commandEncoder) != null ? _device$commandEncode : wgpu.createCommandEncoder();\n\t\tfor (let i = 1; i < textureDescr.mipLevelCount; i++) {\n\t\t\tfor (let face = 0; face < numFaces; face++) {\n\t\t\t\tconst dstView = webgpuTexture.createView({\n\t\t\t\t\tdimension: '2d',\n\t\t\t\t\tbaseMipLevel: i,\n\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t});\n\t\t\t\tconst passEncoder = commandEncoder.beginRenderPass({\n\t\t\t\t\tcolorAttachments: [{\n\t\t\t\t\t\tview: dstView,\n\t\t\t\t\t\tloadOp: 'clear',\n\t\t\t\t\t\tstoreOp: 'store'\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tconst bindGroup = wgpu.createBindGroup({\n\t\t\t\t\tlayout: pipeline.getBindGroupLayout(0),\n\t\t\t\t\tentries: [{\n\t\t\t\t\t\tbinding: 0,\n\t\t\t\t\t\tresource: this.minSampler\n\t\t\t\t\t}, {\n\t\t\t\t\t\tbinding: 1,\n\t\t\t\t\t\tresource: srcViews[face]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\t\tpassEncoder.setBindGroup(0, bindGroup);\n\t\t\t\tpassEncoder.draw(4);\n\t\t\t\tpassEncoder.end();\n\t\t\t\tsrcViews[face] = dstView;\n\t\t\t}\n\t\t}\n\t\tif (!device.commandEncoder) {\n\t\t\tconst cb = commandEncoder.finish();\n\t\t\tdevice.addCommandBuffer(cb);\n\t\t}\n\t\tdevice.pipeline = null;\n\t}\n}\n\nexport { WebgpuMipmapRenderer };\n", "import { DynamicBuffer } from '../dynamic-buffers.js';\n\nclass WebgpuDynamicBuffer extends DynamicBuffer {\n\tconstructor(device, size, isStaging) {\n\t\tsuper(device);\n\t\tthis.buffer = null;\n\t\tthis.mappedRange = null;\n\t\tthis.buffer = device.wgpu.createBuffer({\n\t\t\tsize: size,\n\t\t\tusage: isStaging ? GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC : GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n\t\t\tmappedAtCreation: isStaging\n\t\t});\n\t\tif (isStaging) {\n\t\t\tthis.onAvailable();\n\t\t}\n\t\tdevice._vram.ub += size;\n\t}\n\tdestroy(device) {\n\t\tdevice._vram.ub -= this.buffer.size;\n\t\tthis.buffer.destroy();\n\t\tthis.buffer = null;\n\t}\n\tonAvailable() {\n\t\tthis.mappedRange = this.buffer.getMappedRange();\n\t}\n\talloc(offset, size) {\n\t\treturn new Int32Array(this.mappedRange, offset, size / 4);\n\t}\n}\n\nexport { WebgpuDynamicBuffer };\n", "import { DynamicBuffers } from '../dynamic-buffers.js';\nimport { WebgpuDynamicBuffer } from './webgpu-dynamic-buffer.js';\n\nclass WebgpuDynamicBuffers extends DynamicBuffers {\n\tconstructor(...args) {\n\t\tsuper(...args);\n\t\tthis.pendingStagingBuffers = [];\n\t}\n\tcreateBuffer(device, size, isStaging) {\n\t\treturn new WebgpuDynamicBuffer(device, size, isStaging);\n\t}\n\tsubmit() {\n\t\tsuper.submit();\n\t\tconst count = this.usedBuffers.length;\n\t\tif (count) {\n\t\t\tconst device = this.device;\n\t\t\tconst gpuBuffers = this.gpuBuffers;\n\t\t\tconst commandEncoder = device.wgpu.createCommandEncoder();\n\t\t\tfor (let i = count - 1; i >= 0; i--) {\n\t\t\t\tconst usedBuffer = this.usedBuffers[i];\n\t\t\t\tconst {\n\t\t\t\t\tstagingBuffer,\n\t\t\t\t\tgpuBuffer,\n\t\t\t\t\toffset,\n\t\t\t\t\tsize\n\t\t\t\t} = usedBuffer;\n\t\t\t\tconst src = stagingBuffer.buffer;\n\t\t\t\tsrc.unmap();\n\t\t\t\tcommandEncoder.copyBufferToBuffer(src, offset, gpuBuffer.buffer, offset, size);\n\t\t\t\tgpuBuffers.push(gpuBuffer);\n\t\t\t}\n\t\t\tconst cb = commandEncoder.finish();\n\t\t\tdevice.addCommandBuffer(cb, true);\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tconst stagingBuffer = this.usedBuffers[i].stagingBuffer;\n\t\t\t\tthis.pendingStagingBuffers.push(stagingBuffer);\n\t\t\t}\n\t\t\tthis.usedBuffers.length = 0;\n\t\t}\n\t}\n\tonCommandBuffersSubmitted() {\n\t\tconst count = this.pendingStagingBuffers.length;\n\t\tif (count) {\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tconst stagingBuffer = this.pendingStagingBuffers[i];\n\t\t\t\tstagingBuffer.buffer.mapAsync(GPUMapMode.WRITE).then(() => {\n\t\t\t\t\tif (this.stagingBuffers) {\n\t\t\t\t\t\tstagingBuffer.onAvailable();\n\t\t\t\t\t\tthis.stagingBuffers.push(stagingBuffer);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.pendingStagingBuffers.length = 0;\n\t\t}\n\t}\n}\n\nexport { WebgpuDynamicBuffers };\n", "import { TRACEID_GPU_TIMINGS } from '../../core/constants.js';\nimport { Tracing } from '../../core/tracing.js';\n\nclass GpuProfiler {\n\tconstructor() {\n\t\tthis.frameAllocations = [];\n\t\tthis.pastFrameAllocations = new Map();\n\t\tthis._enabled = false;\n\t\tthis._enableRequest = false;\n\t\tthis._frameTime = 0;\n\t}\n\tloseContext() {\n\t\tthis.pastFrameAllocations.clear();\n\t}\n\tset enabled(value) {\n\t\tthis._enableRequest = value;\n\t}\n\tget enabled() {\n\t\treturn this._enableRequest;\n\t}\n\tprocessEnableRequest() {\n\t\tif (this._enableRequest !== this._enabled) {\n\t\t\tthis._enabled = this._enableRequest;\n\t\t\tif (!this._enabled) {\n\t\t\t\tthis._frameTime = 0;\n\t\t\t}\n\t\t}\n\t}\n\trequest(renderVersion) {\n\t\tthis.pastFrameAllocations.set(renderVersion, this.frameAllocations);\n\t\tthis.frameAllocations = [];\n\t}\n\treport(renderVersion, timings) {\n\t\tif (timings) {\n\t\t\tconst allocations = this.pastFrameAllocations.get(renderVersion);\n\t\t\tif (timings.length > 0) {\n\t\t\t\tthis._frameTime = timings[0];\n\t\t\t}\n\t\t\tif (Tracing.get(TRACEID_GPU_TIMINGS)) {\n\t\t\t\tfor (let i = 0; i < allocations.length; ++i) {\n\t\t\t\t\tallocations[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.pastFrameAllocations.delete(renderVersion);\n\t}\n\tgetSlot(name) {\n\t\tconst slot = this.frameAllocations.length;\n\t\tthis.frameAllocations.push(name);\n\t\treturn slot;\n\t}\n\tget slotCount() {\n\t\treturn this.frameAllocations.length;\n\t}\n}\n\nexport { GpuProfiler };\n", "class WebgpuQuerySet {\n\tconstructor(device, isTimestamp, capacity) {\n\t\tthis.querySet = void 0;\n\t\tthis.stagingBuffers = [];\n\t\tthis.activeStagingBuffer = null;\n\t\tthis.bytesPerSlot = void 0;\n\t\tthis.device = device;\n\t\tthis.capacity = capacity;\n\t\tthis.bytesPerSlot = isTimestamp ? 8 : 4;\n\t\tconst wgpu = device.wgpu;\n\t\tthis.querySet = wgpu.createQuerySet({\n\t\t\ttype: isTimestamp ? 'timestamp' : 'occlusion',\n\t\t\tcount: capacity\n\t\t});\n\t\tthis.queryBuffer = wgpu.createBuffer({\n\t\t\tsize: this.bytesPerSlot * capacity,\n\t\t\tusage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST\n\t\t});\n\t}\n\tdestroy() {\n\t\tvar _this$querySet, _this$queryBuffer;\n\t\t(_this$querySet = this.querySet) == null || _this$querySet.destroy();\n\t\tthis.querySet = null;\n\t\t(_this$queryBuffer = this.queryBuffer) == null || _this$queryBuffer.destroy();\n\t\tthis.queryBuffer = null;\n\t\tthis.activeStagingBuffer = null;\n\t\tthis.stagingBuffers.forEach(stagingBuffer => {\n\t\t\tstagingBuffer.destroy();\n\t\t});\n\t\tthis.stagingBuffers = null;\n\t}\n\tgetStagingBuffer() {\n\t\tlet stagingBuffer = this.stagingBuffers.pop();\n\t\tif (!stagingBuffer) {\n\t\t\tstagingBuffer = this.device.wgpu.createBuffer({\n\t\t\t\tsize: this.queryBuffer.size,\n\t\t\t\tusage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n\t\t\t});\n\t\t}\n\t\treturn stagingBuffer;\n\t}\n\tresolve(count) {\n\t\tconst device = this.device;\n\t\tconst commandEncoder = device.wgpu.createCommandEncoder();\n\t\tcommandEncoder.resolveQuerySet(this.querySet, 0, count, this.queryBuffer, 0);\n\t\tconst activeStagingBuffer = this.getStagingBuffer();\n\t\tthis.activeStagingBuffer = activeStagingBuffer;\n\t\tcommandEncoder.copyBufferToBuffer(this.queryBuffer, 0, activeStagingBuffer, 0, this.bytesPerSlot * count);\n\t\tconst cb = commandEncoder.finish();\n\t\tdevice.addCommandBuffer(cb);\n\t}\n\trequest(count, renderVersion) {\n\t\tconst stagingBuffer = this.activeStagingBuffer;\n\t\tthis.activeStagingBuffer = null;\n\t\treturn stagingBuffer.mapAsync(GPUMapMode.READ).then(() => {\n\t\t\tvar _this$stagingBuffers;\n\t\t\tconst srcTimings = new BigInt64Array(stagingBuffer.getMappedRange());\n\t\t\tconst timings = [];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\ttimings.push(Number(srcTimings[i * 2 + 1] - srcTimings[i * 2]) * 0.000001);\n\t\t\t}\n\t\t\tstagingBuffer.unmap();\n\t\t\t(_this$stagingBuffers = this.stagingBuffers) == null || _this$stagingBuffers.push(stagingBuffer);\n\t\t\treturn {\n\t\t\t\trenderVersion,\n\t\t\t\ttimings\n\t\t\t};\n\t\t});\n\t}\n}\n\nexport { WebgpuQuerySet };\n", "import { GpuProfiler } from '../gpu-profiler.js';\nimport { WebgpuQuerySet } from './webgpu-query-set.js';\n\nclass WebgpuGpuProfiler extends GpuProfiler {\n\tconstructor(device) {\n\t\tsuper();\n\t\tthis.device = void 0;\n\t\tthis.frameGPUMarkerSlot = void 0;\n\t\tthis.device = device;\n\t\tthis.timestampQueriesSet = device.supportsTimestampQuery ? new WebgpuQuerySet(device, true, 512) : null;\n\t}\n\tdestroy() {\n\t\tvar _this$timestampQuerie;\n\t\t(_this$timestampQuerie = this.timestampQueriesSet) == null || _this$timestampQuerie.destroy();\n\t\tthis.timestampQueriesSet = null;\n\t}\n\tframeStart() {\n\t\tthis.processEnableRequest();\n\t}\n\tframeEnd() {\n\t\tif (this._enabled) {\n\t\t\tvar _this$timestampQuerie2;\n\t\t\t(_this$timestampQuerie2 = this.timestampQueriesSet) == null || _this$timestampQuerie2.resolve(this.slotCount * 2);\n\t\t}\n\t}\n\trequest() {\n\t\tif (this._enabled) {\n\t\t\tvar _this$timestampQuerie3;\n\t\t\tconst renderVersion = this.device.renderVersion;\n\t\t\t(_this$timestampQuerie3 = this.timestampQueriesSet) == null || _this$timestampQuerie3.request(this.slotCount, renderVersion).then(results => {\n\t\t\t\tthis.report(results.renderVersion, results.timings);\n\t\t\t});\n\t\t\tsuper.request(renderVersion);\n\t\t}\n\t}\n}\n\nexport { WebgpuGpuProfiler };\n", "import { Shader } from '../shader.js';\nimport { SHADERLANGUAGE_WGSL } from '../constants.js';\n\nclass WebgpuResolver {\n\tconstructor(device) {\n\t\tthis.device = void 0;\n\t\tthis.pipelineCache = new Map();\n\t\tthis.device = device;\n\t\tconst code = `\n \n\t\t\t\t\t\tvar pos : array = array(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0), vec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\toutput.position = vec4f(pos[vertexIndex], 0, 1);\n\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(0) @binding(0) var img : texture_depth_multisampled_2d;\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain(@builtin(position) fragColor: vec4f) -> @location(0) vec4f {\n\t\t\t\t\t\t\t\t// load th depth value from sample index 0\n\t\t\t\t\t\t\t\tvar depth = textureLoad(img, vec2i(fragColor.xy), 0u);\n\t\t\t\t\t\t\t\treturn vec4(depth, 0.0, 0.0, 0.0);\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\tthis.shader = new Shader(device, {\n\t\t\tname: 'WebGPUResolverDepthShader',\n\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\tvshader: code,\n\t\t\tfshader: code\n\t\t});\n\t}\n\tdestroy() {\n\t\tthis.shader.destroy();\n\t\tthis.shader = null;\n\t\tthis.pipelineCache = null;\n\t}\n\tgetPipeline(format) {\n\t\tlet pipeline = this.pipelineCache.get(format);\n\t\tif (!pipeline) {\n\t\t\tpipeline = this.createPipeline(format);\n\t\t\tthis.pipelineCache.set(format, pipeline);\n\t\t}\n\t\treturn pipeline;\n\t}\n\tcreatePipeline(format) {\n\t\tconst webgpuShader = this.shader.impl;\n\t\tconst pipeline = this.device.wgpu.createRenderPipeline({\n\t\t\tlayout: 'auto',\n\t\t\tvertex: {\n\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\t\ttargets: [{\n\t\t\t\t\tformat: format\n\t\t\t\t}]\n\t\t\t},\n\t\t\tprimitive: {\n\t\t\t\ttopology: 'triangle-strip'\n\t\t\t}\n\t\t});\n\t\treturn pipeline;\n\t}\n\tresolveDepth(commandEncoder, sourceTexture, destinationTexture) {\n\t\tconst device = this.device;\n\t\tconst wgpu = device.wgpu;\n\t\tconst pipeline = this.getPipeline(destinationTexture.format);\n\t\tconst numFaces = sourceTexture.depthOrArrayLayers;\n\t\tfor (let face = 0; face < numFaces; face++) {\n\t\t\tconst srcView = sourceTexture.createView({\n\t\t\t\tdimension: '2d',\n\t\t\t\taspect: 'depth-only',\n\t\t\t\tbaseMipLevel: 0,\n\t\t\t\tmipLevelCount: 1,\n\t\t\t\tbaseArrayLayer: face\n\t\t\t});\n\t\t\tconst dstView = destinationTexture.createView({\n\t\t\t\tdimension: '2d',\n\t\t\t\tbaseMipLevel: 0,\n\t\t\t\tmipLevelCount: 1,\n\t\t\t\tbaseArrayLayer: face\n\t\t\t});\n\t\t\tconst passEncoder = commandEncoder.beginRenderPass({\n\t\t\t\tcolorAttachments: [{\n\t\t\t\t\tview: dstView,\n\t\t\t\t\tloadOp: 'clear',\n\t\t\t\t\tstoreOp: 'store'\n\t\t\t\t}]\n\t\t\t});\n\t\t\tconst bindGroup = wgpu.createBindGroup({\n\t\t\t\tlayout: pipeline.getBindGroupLayout(0),\n\t\t\t\tentries: [{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: srcView\n\t\t\t\t}]\n\t\t\t});\n\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\tpassEncoder.setBindGroup(0, bindGroup);\n\t\t\tpassEncoder.draw(4);\n\t\t\tpassEncoder.end();\n\t\t}\n\t\tdevice.pipeline = null;\n\t}\n}\n\nexport { WebgpuResolver };\n", "import { BindGroup } from '../bind-group.js';\nimport { UniformBuffer } from '../uniform-buffer.js';\n\nclass WebgpuCompute {\n\tconstructor(compute) {\n\t\tthis.uniformBuffers = [];\n\t\tthis.bindGroup = null;\n\t\tthis.compute = compute;\n\t\tconst {\n\t\t\tdevice,\n\t\t\tshader\n\t\t} = compute;\n\t\tconst {\n\t\t\tcomputeBindGroupFormat,\n\t\t\tcomputeUniformBufferFormats\n\t\t} = shader.impl;\n\t\tthis.bindGroup = new BindGroup(device, computeBindGroupFormat);\n\t\tif (computeUniformBufferFormats) {\n\t\t\tfor (const name in computeUniformBufferFormats) {\n\t\t\t\tif (computeUniformBufferFormats.hasOwnProperty(name)) {\n\t\t\t\t\tconst ub = new UniformBuffer(device, computeUniformBufferFormats[name], true);\n\t\t\t\t\tthis.uniformBuffers.push(ub);\n\t\t\t\t\tthis.bindGroup.setUniformBuffer(name, ub);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.pipeline = device.computePipeline.get(shader, computeBindGroupFormat);\n\t}\n\tdestroy() {\n\t\tthis.uniformBuffers.forEach(ub => ub.destroy());\n\t\tthis.uniformBuffers.length = 0;\n\t\tthis.bindGroup.destroy();\n\t\tthis.bindGroup = null;\n\t}\n\tupdateBindGroup() {\n\t\tconst {\n\t\t\tbindGroup\n\t\t} = this;\n\t\tbindGroup.updateUniformBuffers();\n\t\tbindGroup.update();\n\t}\n\tdispatch(x, y, z) {\n\t\tconst device = this.compute.device;\n\t\tdevice.setBindGroup(0, this.bindGroup);\n\t\tconst passEncoder = device.passEncoder;\n\t\tpassEncoder.setPipeline(this.pipeline);\n\t\tpassEncoder.dispatchWorkgroups(x, y, z);\n\t}\n}\n\nexport { WebgpuCompute };\n", "import { DEVICETYPE_WEBGPU, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA8, PIXELFORMAT_BGRA8, BUFFERUSAGE_READ, BUFFERUSAGE_COPY_DST, semanticToLocation } from '../constants.js';\nimport { GraphicsDevice } from '../graphics-device.js';\nimport { RenderTarget } from '../render-target.js';\nimport { StencilParameters } from '../stencil-parameters.js';\nimport { WebgpuBindGroup } from './webgpu-bind-group.js';\nimport { WebgpuBindGroupFormat } from './webgpu-bind-group-format.js';\nimport { WebgpuIndexBuffer } from './webgpu-index-buffer.js';\nimport { WebgpuRenderPipeline } from './webgpu-render-pipeline.js';\nimport { WebgpuComputePipeline } from './webgpu-compute-pipeline.js';\nimport { WebgpuRenderTarget } from './webgpu-render-target.js';\nimport { WebgpuShader } from './webgpu-shader.js';\nimport { WebgpuTexture } from './webgpu-texture.js';\nimport { WebgpuUniformBuffer } from './webgpu-uniform-buffer.js';\nimport { WebgpuVertexBuffer } from './webgpu-vertex-buffer.js';\nimport { WebgpuClearRenderer } from './webgpu-clear-renderer.js';\nimport { WebgpuMipmapRenderer } from './webgpu-mipmap-renderer.js';\nimport { WebgpuDynamicBuffers } from './webgpu-dynamic-buffers.js';\nimport { WebgpuGpuProfiler } from './webgpu-gpu-profiler.js';\nimport { WebgpuResolver } from './webgpu-resolver.js';\nimport { WebgpuCompute } from './webgpu-compute.js';\nimport { WebgpuBuffer } from './webgpu-buffer.js';\n\nconst _uniqueLocations = new Map();\nclass WebgpuGraphicsDevice extends GraphicsDevice {\n\tconstructor(canvas, options = {}) {\n\t\tvar _options$alpha, _options$antialias;\n\t\tsuper(canvas, options);\n\t\tthis.renderPipeline = new WebgpuRenderPipeline(this);\n\t\tthis.computePipeline = new WebgpuComputePipeline(this);\n\t\tthis.clearRenderer = void 0;\n\t\tthis.mipmapRenderer = void 0;\n\t\tthis.pipeline = void 0;\n\t\tthis.bindGroupFormats = [];\n\t\tthis.commandEncoder = null;\n\t\tthis.commandBuffers = [];\n\t\tthis.limits = void 0;\n\t\toptions = this.initOptions;\n\t\toptions.alpha = (_options$alpha = options.alpha) != null ? _options$alpha : true;\n\t\tthis.backBufferAntialias = (_options$antialias = options.antialias) != null ? _options$antialias : false;\n\t\tthis.isWebGPU = true;\n\t\tthis._deviceType = DEVICETYPE_WEBGPU;\n\t}\n\tdestroy() {\n\t\tthis.clearRenderer.destroy();\n\t\tthis.clearRenderer = null;\n\t\tthis.mipmapRenderer.destroy();\n\t\tthis.mipmapRenderer = null;\n\t\tthis.resolver.destroy();\n\t\tthis.resolver = null;\n\t\tsuper.destroy();\n\t}\n\tinitDeviceCaps() {\n\t\tvar _this$wgpu;\n\t\tconst limits = (_this$wgpu = this.wgpu) == null ? void 0 : _this$wgpu.limits;\n\t\tthis.limits = limits;\n\t\tthis.precision = 'highp';\n\t\tthis.maxPrecision = 'highp';\n\t\tthis.maxSamples = 4;\n\t\tthis.maxTextures = 16;\n\t\tthis.maxTextureSize = limits.maxTextureDimension2D;\n\t\tthis.maxCubeMapSize = limits.maxTextureDimension2D;\n\t\tthis.maxVolumeSize = limits.maxTextureDimension3D;\n\t\tthis.maxColorAttachments = limits.maxColorAttachments;\n\t\tthis.maxPixelRatio = 1;\n\t\tthis.maxAnisotropy = 16;\n\t\tthis.fragmentUniformsCount = limits.maxUniformBufferBindingSize / 16;\n\t\tthis.vertexUniformsCount = limits.maxUniformBufferBindingSize / 16;\n\t\tthis.supportsInstancing = true;\n\t\tthis.supportsUniformBuffers = true;\n\t\tthis.supportsVolumeTextures = true;\n\t\tthis.supportsBoneTextures = true;\n\t\tthis.supportsMorphTargetTexturesCore = true;\n\t\tthis.supportsAreaLights = true;\n\t\tthis.supportsDepthShadow = true;\n\t\tthis.supportsGpuParticles = true;\n\t\tthis.supportsMrt = true;\n\t\tthis.supportsCompute = true;\n\t\tthis.extUintElement = true;\n\t\tthis.extTextureFloat = true;\n\t\tthis.textureFloatRenderable = true;\n\t\tthis.textureHalfFloatFilterable = true;\n\t\tthis.extTextureHalfFloat = true;\n\t\tthis.textureHalfFloatRenderable = true;\n\t\tthis.textureHalfFloatUpdatable = true;\n\t\tthis.boneLimit = 1024;\n\t\tthis.supportsImageBitmap = true;\n\t\tthis.extStandardDerivatives = true;\n\t\tthis.extBlendMinmax = true;\n\t\tthis.areaLightLutFormat = this.textureFloatFilterable ? PIXELFORMAT_RGBA32F : PIXELFORMAT_RGBA8;\n\t\tthis.supportsTextureFetch = true;\n\t\tthis.samples = this.backBufferAntialias ? 4 : 1;\n\t\tconst wgslFeatures = navigator.gpu.wgslLanguageFeatures;\n\t\tthis.supportsStorageTextureRead = wgslFeatures == null ? void 0 : wgslFeatures.has('readonly_and_readwrite_storage_textures');\n\t}\n\tasync initWebGpu(glslangUrl, twgslUrl) {\n\t\tvar _this$gpuAdapter, _this$wgpu$lost;\n\t\tif (!window.navigator.gpu) {\n\t\t\tthrow new Error('Unable to retrieve GPU. Ensure you are using a browser that supports WebGPU rendering.');\n\t\t}\n\t\tconst buildUrl = srcPath => {\n\t\t\treturn new URL(srcPath, window.location.href).toString();\n\t\t};\n\t\tconst results = await Promise.all([import(/* @vite-ignore */ /* webpackIgnore: true */ `${buildUrl(twgslUrl)}`).then(module => twgsl(twgslUrl.replace('.js', '.wasm'))), import(/* @vite-ignore */ /* webpackIgnore: true */ `${buildUrl(glslangUrl)}`).then(module => module.default())]);\n\t\tthis.twgsl = results[0];\n\t\tthis.glslang = results[1];\n\t\tconst adapterOptions = {\n\t\t\tpowerPreference: this.initOptions.powerPreference !== 'default' ? this.initOptions.powerPreference : undefined\n\t\t};\n\t\tthis.gpuAdapter = await window.navigator.gpu.requestAdapter(adapterOptions);\n\t\tconst requiredFeatures = [];\n\t\tconst requireFeature = feature => {\n\t\t\tconst supported = this.gpuAdapter.features.has(feature);\n\t\t\tif (supported) {\n\t\t\t\trequiredFeatures.push(feature);\n\t\t\t}\n\t\t\treturn supported;\n\t\t};\n\t\tthis.textureFloatFilterable = requireFeature('float32-filterable');\n\t\tthis.extCompressedTextureS3TC = requireFeature('texture-compression-bc');\n\t\tthis.extCompressedTextureETC = requireFeature('texture-compression-etc2');\n\t\tthis.extCompressedTextureASTC = requireFeature('texture-compression-astc');\n\t\tthis.supportsTimestampQuery = requireFeature('timestamp-query');\n\t\tthis.supportsDepthClip = requireFeature('depth-clip-control');\n\t\tthis.supportsDepth32Stencil = requireFeature('depth32float-stencil8');\n\t\tthis.supportsIndirectFirstInstance = requireFeature('indirect-first-instance');\n\t\tthis.supportsShaderF16 = requireFeature('shader-f16');\n\t\tthis.supportsStorageRGBA8 = requireFeature('bgra8unorm-storage');\n\t\tthis.textureRG11B10Renderable = requireFeature('rg11b10ufloat-renderable');\n\t\tconst adapterLimits = (_this$gpuAdapter = this.gpuAdapter) == null ? void 0 : _this$gpuAdapter.limits;\n\t\tconst requiredLimits = {};\n\t\tif (adapterLimits) {\n\t\t\tfor (const limitName in adapterLimits) {\n\t\t\t\tif (limitName === \"minSubgroupSize\" || limitName === \"maxSubgroupSize\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\trequiredLimits[limitName] = adapterLimits[limitName];\n\t\t\t}\n\t\t}\n\t\tconst deviceDescr = {\n\t\t\trequiredFeatures,\n\t\t\trequiredLimits,\n\t\t\tdefaultQueue: {\n\t\t\t\tlabel: 'Default Queue'\n\t\t\t}\n\t\t};\n\t\tthis.wgpu = await this.gpuAdapter.requestDevice(deviceDescr);\n\t\t(_this$wgpu$lost = this.wgpu.lost) == null || _this$wgpu$lost.then(info => {\n\t\t\tif (info.reason !== 'destroyed') ;\n\t\t});\n\t\tthis.initDeviceCaps();\n\t\tthis.gpuContext = this.canvas.getContext('webgpu');\n\t\tconst preferredCanvasFormat = navigator.gpu.getPreferredCanvasFormat();\n\t\tthis.backBufferFormat = preferredCanvasFormat === 'rgba8unorm' ? PIXELFORMAT_RGBA8 : PIXELFORMAT_BGRA8;\n\t\tthis.canvasConfig = {\n\t\t\tdevice: this.wgpu,\n\t\t\tcolorSpace: 'srgb',\n\t\t\talphaMode: this.initOptions.alpha ? 'premultiplied' : 'opaque',\n\t\t\tformat: preferredCanvasFormat,\n\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST,\n\t\t\tviewFormats: []\n\t\t};\n\t\tthis.gpuContext.configure(this.canvasConfig);\n\t\tthis.createBackbuffer();\n\t\tthis.clearRenderer = new WebgpuClearRenderer(this);\n\t\tthis.mipmapRenderer = new WebgpuMipmapRenderer(this);\n\t\tthis.resolver = new WebgpuResolver(this);\n\t\tthis.postInit();\n\t\treturn this;\n\t}\n\tpostInit() {\n\t\tsuper.postInit();\n\t\tthis.initializeRenderState();\n\t\tthis.setupPassEncoderDefaults();\n\t\tthis.gpuProfiler = new WebgpuGpuProfiler(this);\n\t\tthis.dynamicBuffers = new WebgpuDynamicBuffers(this, 1024 * 1024, this.limits.minUniformBufferOffsetAlignment);\n\t}\n\tcreateBackbuffer() {\n\t\tthis.supportsStencil = this.initOptions.stencil;\n\t\tthis.backBuffer = new RenderTarget({\n\t\t\tname: 'WebgpuFramebuffer',\n\t\t\tgraphicsDevice: this,\n\t\t\tdepth: this.initOptions.depth,\n\t\t\tstencil: this.supportsStencil,\n\t\t\tsamples: this.samples\n\t\t});\n\t}\n\tframeStart() {\n\t\tsuper.frameStart();\n\t\tthis.gpuProfiler.frameStart();\n\t\tthis.submit();\n\t\tconst outColorBuffer = this.gpuContext.getCurrentTexture();\n\t\tif (this.backBufferSize.x !== outColorBuffer.width || this.backBufferSize.y !== outColorBuffer.height) {\n\t\t\tthis.backBufferSize.set(outColorBuffer.width, outColorBuffer.height);\n\t\t\tthis.backBuffer.destroy();\n\t\t\tthis.backBuffer = null;\n\t\t\tthis.createBackbuffer();\n\t\t}\n\t\tconst rt = this.backBuffer;\n\t\tconst wrt = rt.impl;\n\t\twrt.setColorAttachment(0, undefined, outColorBuffer.format);\n\t\tthis.initRenderTarget(rt);\n\t\twrt.assignColorTexture(outColorBuffer);\n\t}\n\tframeEnd() {\n\t\tsuper.frameEnd();\n\t\tthis.gpuProfiler.frameEnd();\n\t\tthis.submit();\n\t\tif (!this.contextLost) {\n\t\t\tthis.gpuProfiler.request();\n\t\t}\n\t}\n\tcreateBufferImpl(usageFlags) {\n\t\treturn new WebgpuBuffer(usageFlags);\n\t}\n\tcreateUniformBufferImpl(uniformBuffer) {\n\t\treturn new WebgpuUniformBuffer(uniformBuffer);\n\t}\n\tcreateVertexBufferImpl(vertexBuffer, format, options) {\n\t\treturn new WebgpuVertexBuffer(vertexBuffer, format, options);\n\t}\n\tcreateIndexBufferImpl(indexBuffer, options) {\n\t\treturn new WebgpuIndexBuffer(indexBuffer, options);\n\t}\n\tcreateShaderImpl(shader) {\n\t\treturn new WebgpuShader(shader);\n\t}\n\tcreateTextureImpl(texture) {\n\t\treturn new WebgpuTexture(texture);\n\t}\n\tcreateRenderTargetImpl(renderTarget) {\n\t\treturn new WebgpuRenderTarget(renderTarget);\n\t}\n\tcreateBindGroupFormatImpl(bindGroupFormat) {\n\t\treturn new WebgpuBindGroupFormat(bindGroupFormat);\n\t}\n\tcreateBindGroupImpl(bindGroup) {\n\t\treturn new WebgpuBindGroup();\n\t}\n\tcreateComputeImpl(compute) {\n\t\treturn new WebgpuCompute(compute);\n\t}\n\tsetBindGroup(index, bindGroup) {\n\t\tif (this.passEncoder) {\n\t\t\tthis.passEncoder.setBindGroup(index, bindGroup.impl.bindGroup, bindGroup.uniformBufferOffsets);\n\t\t\tthis.bindGroupFormats[index] = bindGroup.format.impl;\n\t\t}\n\t}\n\tsubmitVertexBuffer(vertexBuffer, slot) {\n\t\tconst format = vertexBuffer.format;\n\t\tconst {\n\t\t\tinterleaved,\n\t\t\telements\n\t\t} = format;\n\t\tconst elementCount = elements.length;\n\t\tconst vbBuffer = vertexBuffer.impl.buffer;\n\t\tif (interleaved) {\n\t\t\tthis.passEncoder.setVertexBuffer(slot, vbBuffer);\n\t\t\treturn 1;\n\t\t}\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tthis.passEncoder.setVertexBuffer(slot + i, vbBuffer, elements[i].offset);\n\t\t}\n\t\treturn elementCount;\n\t}\n\tvalidateVBLocations(vb0, vb1) {\n\t\tconst validateVB = vb => {\n\t\t\tconst {\n\t\t\t\telements\n\t\t\t} = vb.format;\n\t\t\tfor (let i = 0; i < elements.length; i++) {\n\t\t\t\tconst name = elements[i].name;\n\t\t\t\tconst location = semanticToLocation[name];\n\t\t\t\tif (_uniqueLocations.has(location)) ;\n\t\t\t\t_uniqueLocations.set(location, name);\n\t\t\t}\n\t\t};\n\t\tvalidateVB(vb0);\n\t\tvalidateVB(vb1);\n\t\t_uniqueLocations.clear();\n\t}\n\tdraw(primitive, numInstances = 1, keepBuffers) {\n\t\tif (this.shader.ready && !this.shader.failed) {\n\t\t\tconst passEncoder = this.passEncoder;\n\t\t\tconst vb0 = this.vertexBuffers[0];\n\t\t\tconst vb1 = this.vertexBuffers[1];\n\t\t\tthis.vertexBuffers.length = 0;\n\t\t\tif (vb0) {\n\t\t\t\tconst vbSlot = this.submitVertexBuffer(vb0, 0);\n\t\t\t\tif (vb1) {\n\t\t\t\t\tthis.submitVertexBuffer(vb1, vbSlot);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pipeline = this.renderPipeline.get(primitive, vb0 == null ? void 0 : vb0.format, vb1 == null ? void 0 : vb1.format, this.shader, this.renderTarget, this.bindGroupFormats, this.blendState, this.depthState, this.cullMode, this.stencilEnabled, this.stencilFront, this.stencilBack);\n\t\t\tif (this.pipeline !== pipeline) {\n\t\t\t\tthis.pipeline = pipeline;\n\t\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\t}\n\t\t\tconst ib = this.indexBuffer;\n\t\t\tif (ib) {\n\t\t\t\tthis.indexBuffer = null;\n\t\t\t\tpassEncoder.setIndexBuffer(ib.impl.buffer, ib.impl.format);\n\t\t\t\tpassEncoder.drawIndexed(primitive.count, numInstances, primitive.base, 0, 0);\n\t\t\t} else {\n\t\t\t\tpassEncoder.draw(primitive.count, numInstances, primitive.base, 0);\n\t\t\t}\n\t\t}\n\t}\n\tsetShader(shader, asyncCompile = false) {\n\t\tif (shader !== this.shader) {\n\t\t\tthis.shader = shader;\n\t\t}\n\t}\n\tsetBlendState(blendState) {\n\t\tthis.blendState.copy(blendState);\n\t}\n\tsetDepthState(depthState) {\n\t\tthis.depthState.copy(depthState);\n\t}\n\tsetStencilState(stencilFront, stencilBack) {\n\t\tif (stencilFront || stencilBack) {\n\t\t\tthis.stencilEnabled = true;\n\t\t\tthis.stencilFront.copy(stencilFront != null ? stencilFront : StencilParameters.DEFAULT);\n\t\t\tthis.stencilBack.copy(stencilBack != null ? stencilBack : StencilParameters.DEFAULT);\n\t\t\tconst ref = this.stencilFront.ref;\n\t\t\tif (this.stencilRef !== ref) {\n\t\t\t\tthis.stencilRef = ref;\n\t\t\t\tthis.passEncoder.setStencilReference(ref);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.stencilEnabled = false;\n\t\t}\n\t}\n\tsetBlendColor(r, g, b, a) {\n\t\tconst c = this.blendColor;\n\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\tc.set(r, g, b, a);\n\t\t\tthis.passEncoder.setBlendConstant(c);\n\t\t}\n\t}\n\tsetCullMode(cullMode) {\n\t\tthis.cullMode = cullMode;\n\t}\n\tsetAlphaToCoverage(state) {}\n\tinitializeContextCaches() {\n\t\tsuper.initializeContextCaches();\n\t}\n\tsetupPassEncoderDefaults() {\n\t\tthis.pipeline = null;\n\t\tthis.stencilRef = 0;\n\t\tthis.blendColor.set(0, 0, 0, 0);\n\t}\n\t_uploadDirtyTextures() {\n\t\tthis.textures.forEach(texture => {\n\t\t\tif (texture._needsUpload || texture._needsMipmaps) {\n\t\t\t\ttexture.upload();\n\t\t\t}\n\t\t});\n\t}\n\tstartRenderPass(renderPass) {\n\t\tthis._uploadDirtyTextures();\n\t\tconst rt = renderPass.renderTarget || this.backBuffer;\n\t\tthis.renderTarget = rt;\n\t\tconst wrt = rt.impl;\n\t\tthis.commandEncoder = this.wgpu.createCommandEncoder();\n\t\tif (rt !== this.backBuffer) {\n\t\t\tthis.initRenderTarget(rt);\n\t\t}\n\t\twrt.setupForRenderPass(renderPass);\n\t\tconst renderPassDesc = wrt.renderPassDescriptor;\n\t\tif (this.gpuProfiler._enabled) {\n\t\t\tif (this.gpuProfiler.timestampQueriesSet) {\n\t\t\t\tconst slot = this.gpuProfiler.getSlot(renderPass.name);\n\t\t\t\trenderPassDesc.timestampWrites = {\n\t\t\t\t\tquerySet: this.gpuProfiler.timestampQueriesSet.querySet,\n\t\t\t\t\tbeginningOfPassWriteIndex: slot * 2,\n\t\t\t\t\tendOfPassWriteIndex: slot * 2 + 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tthis.passEncoder = this.commandEncoder.beginRenderPass(renderPassDesc);\n\t\tthis.setupPassEncoderDefaults();\n\t\tconst {\n\t\t\twidth,\n\t\t\theight\n\t\t} = rt;\n\t\tthis.setViewport(0, 0, width, height);\n\t\tthis.setScissor(0, 0, width, height);\n\t\tthis.insideRenderPass = true;\n\t}\n\tendRenderPass(renderPass) {\n\t\tthis.passEncoder.end();\n\t\tthis.passEncoder = null;\n\t\tthis.insideRenderPass = false;\n\t\tthis.bindGroupFormats.length = 0;\n\t\tfor (let i = 0; i < renderPass.colorArrayOps.length; i++) {\n\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\tif (colorOps.mipmaps) {\n\t\t\t\tthis.mipmapRenderer.generate(renderPass.renderTarget._colorBuffers[i].impl);\n\t\t\t}\n\t\t}\n\t\tconst cb = this.commandEncoder.finish();\n\t\tthis.addCommandBuffer(cb);\n\t\tthis.commandEncoder = null;\n\t}\n\tstartComputePass() {\n\t\tthis.commandEncoder = this.wgpu.createCommandEncoder();\n\t\tthis.pipeline = null;\n\t\tthis.passEncoder = this.commandEncoder.beginComputePass();\n\t\tthis.insideRenderPass = true;\n\t}\n\tendComputePass() {\n\t\tthis.passEncoder.end();\n\t\tthis.passEncoder = null;\n\t\tthis.insideRenderPass = false;\n\t\tthis.bindGroupFormats.length = 0;\n\t\tconst cb = this.commandEncoder.finish();\n\t\tthis.addCommandBuffer(cb);\n\t\tthis.commandEncoder = null;\n\t}\n\tcomputeDispatch(computes) {\n\t\tthis.startComputePass();\n\t\tfor (let i = 0; i < computes.length; i++) {\n\t\t\tconst compute = computes[i];\n\t\t\tcompute.applyParameters();\n\t\t\tcompute.impl.updateBindGroup();\n\t\t}\n\t\tfor (let i = 0; i < computes.length; i++) {\n\t\t\tconst compute = computes[i];\n\t\t\tcompute.impl.dispatch(compute.countX, compute.countY, compute.countZ);\n\t\t}\n\t\tthis.endComputePass();\n\t}\n\taddCommandBuffer(commandBuffer, front = false) {\n\t\tif (front) {\n\t\t\tthis.commandBuffers.unshift(commandBuffer);\n\t\t} else {\n\t\t\tthis.commandBuffers.push(commandBuffer);\n\t\t}\n\t}\n\tsubmit() {\n\t\tif (this.commandBuffers.length > 0) {\n\t\t\tthis.dynamicBuffers.submit();\n\t\t\tthis.wgpu.queue.submit(this.commandBuffers);\n\t\t\tthis.commandBuffers.length = 0;\n\t\t\tthis.dynamicBuffers.onCommandBuffersSubmitted();\n\t\t}\n\t}\n\tclear(options) {\n\t\tif (options.flags) {\n\t\t\tthis.clearRenderer.clear(this, this.renderTarget, options, this.defaultClearOptions);\n\t\t}\n\t}\n\tsetViewport(x, y, w, h) {\n\t\tif (this.passEncoder) {\n\t\t\tif (!this.renderTarget.flipY) {\n\t\t\t\ty = this.renderTarget.height - y - h;\n\t\t\t}\n\t\t\tthis.vx = x;\n\t\t\tthis.vy = y;\n\t\t\tthis.vw = w;\n\t\t\tthis.vh = h;\n\t\t\tthis.passEncoder.setViewport(x, y, w, h, 0, 1);\n\t\t}\n\t}\n\tsetScissor(x, y, w, h) {\n\t\tif (this.passEncoder) {\n\t\t\tif (!this.renderTarget.flipY) {\n\t\t\t\ty = this.renderTarget.height - y - h;\n\t\t\t}\n\t\t\tthis.sx = x;\n\t\t\tthis.sy = y;\n\t\t\tthis.sw = w;\n\t\t\tthis.sh = h;\n\t\t\tthis.passEncoder.setScissorRect(x, y, w, h);\n\t\t}\n\t}\n\tclearStorageBuffer(storageBuffer, offset = 0, size = storageBuffer.byteSize) {\n\t\tvar _this$commandEncoder;\n\t\tconst commandEncoder = (_this$commandEncoder = this.commandEncoder) != null ? _this$commandEncoder : this.wgpu.createCommandEncoder();\n\t\tcommandEncoder.clearBuffer(storageBuffer.buffer, offset, size);\n\t\tif (!this.commandEncoder) {\n\t\t\tconst cb = commandEncoder.finish();\n\t\t\tthis.addCommandBuffer(cb);\n\t\t}\n\t}\n\treadStorageBuffer(storageBuffer, offset = 0, size = storageBuffer.byteSize - offset, data = null, immediate = false) {\n\t\tvar _this$commandEncoder2;\n\t\tconst stagingBuffer = this.createBufferImpl(BUFFERUSAGE_READ | BUFFERUSAGE_COPY_DST);\n\t\tstagingBuffer.allocate(this, size);\n\t\tconst destBuffer = stagingBuffer.buffer;\n\t\tconst commandEncoder = (_this$commandEncoder2 = this.commandEncoder) != null ? _this$commandEncoder2 : this.wgpu.createCommandEncoder();\n\t\tcommandEncoder.copyBufferToBuffer(storageBuffer.buffer, offset, destBuffer, 0, size);\n\t\tif (!this.commandEncoder) {\n\t\t\tconst cb = commandEncoder.finish();\n\t\t\tthis.addCommandBuffer(cb);\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst read = () => {\n\t\t\t\tdestBuffer == null || destBuffer.mapAsync(GPUMapMode.READ).then(() => {\n\t\t\t\t\tvar _data;\n\t\t\t\t\t(_data = data) != null ? _data : data = new Uint8Array(size);\n\t\t\t\t\tconst copySrc = destBuffer.getMappedRange(0, size);\n\t\t\t\t\tconst srcType = data.constructor;\n\t\t\t\t\tdata.set(new srcType(copySrc));\n\t\t\t\t\tdestBuffer.unmap();\n\t\t\t\t\tstagingBuffer.destroy(this);\n\t\t\t\t\tresolve(data);\n\t\t\t\t});\n\t\t\t};\n\t\t\tif (immediate) {\n\t\t\t\tthis.submit();\n\t\t\t\tread();\n\t\t\t} else {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tread();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\twriteStorageBuffer(storageBuffer, bufferOffset = 0, data, dataOffset = 0, size) {\n\t\tthis.wgpu.queue.writeBuffer(storageBuffer.buffer, bufferOffset, data, dataOffset, size);\n\t}\n\tcopyRenderTarget(source, dest, color, depth) {\n\t\tvar _this$commandEncoder3;\n\t\tconst copySize = {\n\t\t\twidth: source ? source.width : dest.width,\n\t\t\theight: source ? source.height : dest.height,\n\t\t\tdepthOrArrayLayers: 1\n\t\t};\n\t\tconst commandEncoder = (_this$commandEncoder3 = this.commandEncoder) != null ? _this$commandEncoder3 : this.wgpu.createCommandEncoder();\n\t\tif (color) {\n\t\t\tconst copySrc = {\n\t\t\t\ttexture: source ? source.colorBuffer.impl.gpuTexture : this.renderTarget.impl.assignedColorTexture,\n\t\t\t\tmipLevel: 0\n\t\t\t};\n\t\t\tconst copyDst = {\n\t\t\t\ttexture: dest ? dest.colorBuffer.impl.gpuTexture : this.renderTarget.impl.assignedColorTexture,\n\t\t\t\tmipLevel: 0\n\t\t\t};\n\t\t\tcommandEncoder.copyTextureToTexture(copySrc, copyDst, copySize);\n\t\t}\n\t\tif (depth) {\n\t\t\tconst sourceRT = source ? source : this.renderTarget;\n\t\t\tconst sourceTexture = sourceRT.impl.depthTexture;\n\t\t\tif (source.samples > 1) {\n\t\t\t\tconst destTexture = dest.colorBuffer.impl.gpuTexture;\n\t\t\t\tthis.resolver.resolveDepth(commandEncoder, sourceTexture, destTexture);\n\t\t\t} else {\n\t\t\t\tconst destTexture = dest ? dest.depthBuffer.impl.gpuTexture : this.renderTarget.impl.depthTexture;\n\t\t\t\tconst copySrc = {\n\t\t\t\t\ttexture: sourceTexture,\n\t\t\t\t\tmipLevel: 0\n\t\t\t\t};\n\t\t\t\tconst copyDst = {\n\t\t\t\t\ttexture: destTexture,\n\t\t\t\t\tmipLevel: 0\n\t\t\t\t};\n\t\t\t\tcommandEncoder.copyTextureToTexture(copySrc, copyDst, copySize);\n\t\t\t}\n\t\t}\n\t\tif (!this.commandEncoder) {\n\t\t\tconst cb = commandEncoder.finish();\n\t\t\tthis.addCommandBuffer(cb);\n\t\t}\n\t\treturn true;\n\t}\n}\n\nexport { WebgpuGraphicsDevice };\n", "import { math } from '../../core/math/math.js';\nimport { RenderTarget } from './render-target.js';\nimport { TextureUtils } from './texture-utils.js';\nimport { TEXTURELOCK_NONE, PIXELFORMAT_RGBA8, isCompressedPixelFormat, isIntegerPixelFormat, FILTER_NEAREST, FILTER_LINEAR_MIPMAP_LINEAR, FILTER_LINEAR, ADDRESS_REPEAT, FUNC_LESS, TEXTURETYPE_DEFAULT, TEXTURETYPE_RGBM, TEXTURETYPE_SWIZZLEGGGR, TEXTUREPROJECTION_NONE, TEXTUREPROJECTION_CUBE, PIXELFORMAT_RGB16F, PIXELFORMAT_RGB32F, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F, TEXTURETYPE_RGBP, TEXTURETYPE_RGBE, TEXTURELOCK_WRITE, getPixelFormatArrayType } from './constants.js';\n\nlet id = 0;\nclass Texture {\n\tconstructor(graphicsDevice, options = {}) {\n\t\tvar _options$name, _options$width, _options$height, _options$format, _options$storage, _options$cubemap, _options$fixCubemapSe, _options$flipY, _options$premultiplyA, _ref, _options$mipmaps, _options$minFilter, _options$magFilter, _options$anisotropy, _options$addressU, _options$addressV, _options$addressW, _options$compareOnRea, _options$compareFunc;\n\t\tthis.name = void 0;\n\t\tthis._gpuSize = 0;\n\t\tthis.id = id++;\n\t\tthis._invalid = false;\n\t\tthis._lockedLevel = -1;\n\t\tthis._lockedMode = TEXTURELOCK_NONE;\n\t\tthis.renderVersionDirty = 0;\n\t\tthis._storage = false;\n\t\tthis.device = graphicsDevice;\n\t\tthis.name = (_options$name = options.name) != null ? _options$name : '';\n\t\tthis._width = Math.floor((_options$width = options.width) != null ? _options$width : 4);\n\t\tthis._height = Math.floor((_options$height = options.height) != null ? _options$height : 4);\n\t\tthis._format = (_options$format = options.format) != null ? _options$format : PIXELFORMAT_RGBA8;\n\t\tthis._compressed = isCompressedPixelFormat(this._format);\n\t\tthis._integerFormat = isIntegerPixelFormat(this._format);\n\t\tif (this._integerFormat) {\n\t\t\toptions.mipmaps = false;\n\t\t\toptions.minFilter = FILTER_NEAREST;\n\t\t\toptions.magFilter = FILTER_NEAREST;\n\t\t}\n\t\tif (graphicsDevice.supportsVolumeTextures) {\n\t\t\tvar _options$volume, _options$depth, _options$arrayLength;\n\t\t\tthis._volume = (_options$volume = options.volume) != null ? _options$volume : false;\n\t\t\tthis._depth = Math.floor((_options$depth = options.depth) != null ? _options$depth : 1);\n\t\t\tthis._arrayLength = Math.floor((_options$arrayLength = options.arrayLength) != null ? _options$arrayLength : 0);\n\t\t} else {\n\t\t\tthis._volume = false;\n\t\t\tthis._depth = 1;\n\t\t\tthis._arrayLength = 0;\n\t\t}\n\t\tthis._storage = (_options$storage = options.storage) != null ? _options$storage : false;\n\t\tthis._cubemap = (_options$cubemap = options.cubemap) != null ? _options$cubemap : false;\n\t\tthis.fixCubemapSeams = (_options$fixCubemapSe = options.fixCubemapSeams) != null ? _options$fixCubemapSe : false;\n\t\tthis._flipY = (_options$flipY = options.flipY) != null ? _options$flipY : false;\n\t\tthis._premultiplyAlpha = (_options$premultiplyA = options.premultiplyAlpha) != null ? _options$premultiplyA : false;\n\t\tthis._mipmaps = (_ref = (_options$mipmaps = options.mipmaps) != null ? _options$mipmaps : options.autoMipmap) != null ? _ref : true;\n\t\tthis._minFilter = (_options$minFilter = options.minFilter) != null ? _options$minFilter : FILTER_LINEAR_MIPMAP_LINEAR;\n\t\tthis._magFilter = (_options$magFilter = options.magFilter) != null ? _options$magFilter : FILTER_LINEAR;\n\t\tthis._anisotropy = (_options$anisotropy = options.anisotropy) != null ? _options$anisotropy : 1;\n\t\tthis._addressU = (_options$addressU = options.addressU) != null ? _options$addressU : ADDRESS_REPEAT;\n\t\tthis._addressV = (_options$addressV = options.addressV) != null ? _options$addressV : ADDRESS_REPEAT;\n\t\tthis._addressW = (_options$addressW = options.addressW) != null ? _options$addressW : ADDRESS_REPEAT;\n\t\tthis._compareOnRead = (_options$compareOnRea = options.compareOnRead) != null ? _options$compareOnRea : false;\n\t\tthis._compareFunc = (_options$compareFunc = options.compareFunc) != null ? _options$compareFunc : FUNC_LESS;\n\t\tthis.type = TEXTURETYPE_DEFAULT;\n\t\tif (options.hasOwnProperty('type')) {\n\t\t\tthis.type = options.type;\n\t\t} else if (options.hasOwnProperty('rgbm')) {\n\t\t\tthis.type = options.rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT;\n\t\t} else if (options.hasOwnProperty('swizzleGGGR')) {\n\t\t\tthis.type = options.swizzleGGGR ? TEXTURETYPE_SWIZZLEGGGR : TEXTURETYPE_DEFAULT;\n\t\t}\n\t\tthis.projection = TEXTUREPROJECTION_NONE;\n\t\tif (this._cubemap) {\n\t\t\tthis.projection = TEXTUREPROJECTION_CUBE;\n\t\t} else if (options.projection && options.projection !== TEXTUREPROJECTION_CUBE) {\n\t\t\tthis.projection = options.projection;\n\t\t}\n\t\tthis.impl = graphicsDevice.createTextureImpl(this);\n\t\tthis.dirtyAll();\n\t\tthis._levels = options.levels;\n\t\tif (this._levels) {\n\t\t\tthis.upload();\n\t\t} else {\n\t\t\tthis._levels = this._cubemap ? [[null, null, null, null, null, null]] : [null];\n\t\t}\n\t\tgraphicsDevice.textures.push(this);\n\t}\n\tdestroy() {\n\t\tconst device = this.device;\n\t\tif (device) {\n\t\t\tconst idx = device.textures.indexOf(this);\n\t\t\tif (idx !== -1) {\n\t\t\t\tdevice.textures.splice(idx, 1);\n\t\t\t}\n\t\t\tdevice.scope.removeValue(this);\n\t\t\tthis.impl.destroy(device);\n\t\t\tthis.adjustVramSizeTracking(device._vram, -this._gpuSize);\n\t\t\tthis._levels = null;\n\t\t\tthis.device = null;\n\t\t}\n\t}\n\tresize(width, height, depth = 1) {\n\t\tconst device = this.device;\n\t\tthis.adjustVramSizeTracking(device._vram, -this._gpuSize);\n\t\tthis.impl.destroy(device);\n\t\tthis._width = Math.floor(width);\n\t\tthis._height = Math.floor(height);\n\t\tthis._depth = Math.floor(depth);\n\t\tthis.impl = device.createTextureImpl(this);\n\t\tthis.dirtyAll();\n\t}\n\tloseContext() {\n\t\tthis.impl.loseContext();\n\t\tthis.dirtyAll();\n\t}\n\tadjustVramSizeTracking(vram, size) {\n\t\tvram.tex += size;\n\t}\n\tpropertyChanged(flag) {\n\t\tthis.impl.propertyChanged(flag);\n\t\tthis.renderVersionDirty = this.device.renderVersion;\n\t}\n\tget requiredMipLevels() {\n\t\treturn this.mipmaps ? TextureUtils.calcMipLevelsCount(this.width, this.height) : 1;\n\t}\n\tget lockedMode() {\n\t\treturn this._lockedMode;\n\t}\n\tset minFilter(v) {\n\t\tif (this._minFilter !== v) {\n\t\t\tif (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\tthis._minFilter = v;\n\t\t\t\tthis.propertyChanged(1);\n\t\t\t}\n\t\t}\n\t}\n\tget minFilter() {\n\t\treturn this._minFilter;\n\t}\n\tset magFilter(v) {\n\t\tif (this._magFilter !== v) {\n\t\t\tif (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\tthis._magFilter = v;\n\t\t\t\tthis.propertyChanged(2);\n\t\t\t}\n\t\t}\n\t}\n\tget magFilter() {\n\t\treturn this._magFilter;\n\t}\n\tset addressU(v) {\n\t\tif (this._addressU !== v) {\n\t\t\tthis._addressU = v;\n\t\t\tthis.propertyChanged(4);\n\t\t}\n\t}\n\tget addressU() {\n\t\treturn this._addressU;\n\t}\n\tset addressV(v) {\n\t\tif (this._addressV !== v) {\n\t\t\tthis._addressV = v;\n\t\t\tthis.propertyChanged(8);\n\t\t}\n\t}\n\tget addressV() {\n\t\treturn this._addressV;\n\t}\n\tset addressW(addressW) {\n\t\tif (!this.device.supportsVolumeTextures) return;\n\t\tif (!this._volume) {\n\t\t\treturn;\n\t\t}\n\t\tif (addressW !== this._addressW) {\n\t\t\tthis._addressW = addressW;\n\t\t\tthis.propertyChanged(16);\n\t\t}\n\t}\n\tget addressW() {\n\t\treturn this._addressW;\n\t}\n\tset compareOnRead(v) {\n\t\tif (this._compareOnRead !== v) {\n\t\t\tthis._compareOnRead = v;\n\t\t\tthis.propertyChanged(32);\n\t\t}\n\t}\n\tget compareOnRead() {\n\t\treturn this._compareOnRead;\n\t}\n\tset compareFunc(v) {\n\t\tif (this._compareFunc !== v) {\n\t\t\tthis._compareFunc = v;\n\t\t\tthis.propertyChanged(64);\n\t\t}\n\t}\n\tget compareFunc() {\n\t\treturn this._compareFunc;\n\t}\n\tset anisotropy(v) {\n\t\tif (this._anisotropy !== v) {\n\t\t\tthis._anisotropy = v;\n\t\t\tthis.propertyChanged(128);\n\t\t}\n\t}\n\tget anisotropy() {\n\t\treturn this._anisotropy;\n\t}\n\tset mipmaps(v) {\n\t\tif (this._mipmaps !== v) {\n\t\t\tif (this.device.isWebGPU) ; else if (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\tthis._mipmaps = v;\n\t\t\t}\n\t\t\tif (v) this._needsMipmapsUpload = true;\n\t\t}\n\t}\n\tget mipmaps() {\n\t\treturn this._mipmaps;\n\t}\n\tget storage() {\n\t\treturn this._storage;\n\t}\n\tget width() {\n\t\treturn this._width;\n\t}\n\tget height() {\n\t\treturn this._height;\n\t}\n\tget depth() {\n\t\treturn this._depth;\n\t}\n\tget format() {\n\t\treturn this._format;\n\t}\n\tget cubemap() {\n\t\treturn this._cubemap;\n\t}\n\tget gpuSize() {\n\t\tconst mips = this.pot && this._mipmaps && !(this._compressed && this._levels.length === 1);\n\t\treturn TextureUtils.calcGpuSize(this._width, this._height, this._depth, this._format, mips, this._cubemap);\n\t}\n\tget array() {\n\t\treturn this._arrayLength > 0;\n\t}\n\tget arrayLength() {\n\t\treturn this._arrayLength;\n\t}\n\tget volume() {\n\t\treturn this._volume;\n\t}\n\tset flipY(flipY) {\n\t\tif (this._flipY !== flipY) {\n\t\t\tthis._flipY = flipY;\n\t\t\tthis._needsUpload = true;\n\t\t}\n\t}\n\tget flipY() {\n\t\treturn this._flipY;\n\t}\n\tset premultiplyAlpha(premultiplyAlpha) {\n\t\tif (this._premultiplyAlpha !== premultiplyAlpha) {\n\t\t\tthis._premultiplyAlpha = premultiplyAlpha;\n\t\t\tthis._needsUpload = true;\n\t\t}\n\t}\n\tget premultiplyAlpha() {\n\t\treturn this._premultiplyAlpha;\n\t}\n\tget pot() {\n\t\treturn math.powerOfTwo(this._width) && math.powerOfTwo(this._height);\n\t}\n\tget encoding() {\n\t\tswitch (this.type) {\n\t\t\tcase TEXTURETYPE_RGBM:\n\t\t\t\treturn 'rgbm';\n\t\t\tcase TEXTURETYPE_RGBE:\n\t\t\t\treturn 'rgbe';\n\t\t\tcase TEXTURETYPE_RGBP:\n\t\t\t\treturn 'rgbp';\n\t\t\tdefault:\n\t\t\t\treturn this.format === PIXELFORMAT_RGB16F || this.format === PIXELFORMAT_RGB32F || this.format === PIXELFORMAT_RGBA16F || this.format === PIXELFORMAT_RGBA32F || isIntegerPixelFormat(this.format) ? 'linear' : 'srgb';\n\t\t}\n\t}\n\tdirtyAll() {\n\t\tthis._levelsUpdated = this._cubemap ? [[true, true, true, true, true, true]] : [true];\n\t\tthis._needsUpload = true;\n\t\tthis._needsMipmapsUpload = this._mipmaps;\n\t\tthis._mipmapsUploaded = false;\n\t\tthis.propertyChanged(255);\n\t}\n\tlock(options = {}) {\n\t\tvar _options$level, _options$face, _options$mode;\n\t\t(_options$level = options.level) != null ? _options$level : options.level = 0;\n\t\t(_options$face = options.face) != null ? _options$face : options.face = 0;\n\t\t(_options$mode = options.mode) != null ? _options$mode : options.mode = TEXTURELOCK_WRITE;\n\t\tthis._lockedMode = options.mode;\n\t\tthis._lockedLevel = options.level;\n\t\tconst levels = this.cubemap ? this._levels[options.face] : this._levels;\n\t\tif (levels[options.level] === null) {\n\t\t\tconst width = Math.max(1, this._width >> options.level);\n\t\t\tconst height = Math.max(1, this._height >> options.level);\n\t\t\tconst depth = Math.max(1, this._depth >> options.level);\n\t\t\tconst data = new ArrayBuffer(TextureUtils.calcLevelGpuSize(width, height, depth, this._format));\n\t\t\tlevels[options.level] = new (getPixelFormatArrayType(this._format))(data);\n\t\t}\n\t\treturn levels[options.level];\n\t}\n\tsetSource(source, mipLevel = 0) {\n\t\tlet invalid = false;\n\t\tlet width, height;\n\t\tif (this._cubemap) {\n\t\t\tif (source[0]) {\n\t\t\t\twidth = source[0].width || 0;\n\t\t\t\theight = source[0].height || 0;\n\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\tconst face = source[i];\n\t\t\t\t\tif (!face || face.width !== width || face.height !== height || !this.device._isBrowserInterface(face)) {\n\t\t\t\t\t\tinvalid = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinvalid = true;\n\t\t\t}\n\t\t\tif (!invalid) {\n\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\tif (this._levels[mipLevel][i] !== source[i]) this._levelsUpdated[mipLevel][i] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.device._isBrowserInterface(source)) invalid = true;\n\t\t\tif (!invalid) {\n\t\t\t\tif (source !== this._levels[mipLevel]) this._levelsUpdated[mipLevel] = true;\n\t\t\t\twidth = source.width;\n\t\t\t\theight = source.height;\n\t\t\t}\n\t\t}\n\t\tif (invalid) {\n\t\t\tthis._width = 4;\n\t\t\tthis._height = 4;\n\t\t\tif (this._cubemap) {\n\t\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\t\tthis._levels[mipLevel][i] = null;\n\t\t\t\t\tthis._levelsUpdated[mipLevel][i] = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._levels[mipLevel] = null;\n\t\t\t\tthis._levelsUpdated[mipLevel] = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (mipLevel === 0) {\n\t\t\t\tthis._width = width;\n\t\t\t\tthis._height = height;\n\t\t\t}\n\t\t\tthis._levels[mipLevel] = source;\n\t\t}\n\t\tif (this._invalid !== invalid || !invalid) {\n\t\t\tthis._invalid = invalid;\n\t\t\tthis.upload();\n\t\t}\n\t}\n\tgetSource(mipLevel = 0) {\n\t\treturn this._levels[mipLevel];\n\t}\n\tunlock() {\n\t\tif (this._lockedMode === TEXTURELOCK_NONE) ;\n\t\tif (this._lockedMode === TEXTURELOCK_WRITE) {\n\t\t\tthis.upload();\n\t\t}\n\t\tthis._lockedLevel = -1;\n\t\tthis._lockedMode = TEXTURELOCK_NONE;\n\t}\n\tupload() {\n\t\tvar _this$impl$uploadImme, _this$impl;\n\t\tthis._needsUpload = true;\n\t\tthis._needsMipmapsUpload = this._mipmaps;\n\t\t(_this$impl$uploadImme = (_this$impl = this.impl).uploadImmediate) == null || _this$impl$uploadImme.call(_this$impl, this.device, this);\n\t}\n\tasync downloadAsync() {\n\t\tconst promises = [];\n\t\tfor (let i = 0; i < (this.cubemap ? 6 : 1); i++) {\n\t\t\tvar _this$device$readPixe, _this$device;\n\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\tcolorBuffer: this,\n\t\t\t\tdepth: false,\n\t\t\t\tface: i\n\t\t\t});\n\t\t\tthis.device.setRenderTarget(renderTarget);\n\t\t\tthis.device.initRenderTarget(renderTarget);\n\t\t\tconst levels = this.cubemap ? this._levels[i] : this._levels;\n\t\t\tlet level = levels[0];\n\t\t\tif (levels[0] && this.device._isBrowserInterface(levels[0])) {\n\t\t\t\tlevels[0] = null;\n\t\t\t}\n\t\t\tlevel = this.lock({\n\t\t\t\tface: i\n\t\t\t});\n\t\t\tconst promise = (_this$device$readPixe = (_this$device = this.device).readPixelsAsync) == null ? void 0 : _this$device$readPixe.call(_this$device, 0, 0, this.width, this.height, level).then(() => renderTarget.destroy());\n\t\t\tpromises.push(promise);\n\t\t}\n\t\tawait Promise.all(promises);\n\t}\n}\n\nexport { Texture };\n", "import { BUFFER_GPUDYNAMIC, BUFFER_STREAM, BUFFER_DYNAMIC, BUFFER_STATIC } from '../constants.js';\n\nclass WebglBuffer {\n\tconstructor() {\n\t\tthis.bufferId = null;\n\t}\n\tdestroy(device) {\n\t\tif (this.bufferId) {\n\t\t\tdevice.gl.deleteBuffer(this.bufferId);\n\t\t\tthis.bufferId = null;\n\t\t}\n\t}\n\tget initialized() {\n\t\treturn !!this.bufferId;\n\t}\n\tloseContext() {\n\t\tthis.bufferId = null;\n\t}\n\tunlock(device, usage, target, storage) {\n\t\tconst gl = device.gl;\n\t\tif (!this.bufferId) {\n\t\t\tlet glUsage;\n\t\t\tswitch (usage) {\n\t\t\t\tcase BUFFER_STATIC:\n\t\t\t\t\tglUsage = gl.STATIC_DRAW;\n\t\t\t\t\tbreak;\n\t\t\t\tcase BUFFER_DYNAMIC:\n\t\t\t\t\tglUsage = gl.DYNAMIC_DRAW;\n\t\t\t\t\tbreak;\n\t\t\t\tcase BUFFER_STREAM:\n\t\t\t\t\tglUsage = gl.STREAM_DRAW;\n\t\t\t\t\tbreak;\n\t\t\t\tcase BUFFER_GPUDYNAMIC:\n\t\t\t\t\tglUsage = device.isWebGL2 ? gl.DYNAMIC_COPY : gl.STATIC_DRAW;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.bufferId = gl.createBuffer();\n\t\t\tgl.bindBuffer(target, this.bufferId);\n\t\t\tgl.bufferData(target, storage, glUsage);\n\t\t} else {\n\t\t\tgl.bindBuffer(target, this.bufferId);\n\t\t\tgl.bufferSubData(target, 0, storage);\n\t\t}\n\t}\n}\n\nexport { WebglBuffer };\n", "import { WebglBuffer } from './webgl-buffer.js';\n\nclass WebglVertexBuffer extends WebglBuffer {\n\tconstructor(...args) {\n\t\tsuper(...args);\n\t\tthis.vao = null;\n\t}\n\tdestroy(device) {\n\t\tsuper.destroy(device);\n\t\tdevice.unbindVertexArray();\n\t}\n\tloseContext() {\n\t\tsuper.loseContext();\n\t\tthis.vao = null;\n\t}\n\tunlock(vertexBuffer) {\n\t\tconst device = vertexBuffer.device;\n\t\tsuper.unlock(device, vertexBuffer.usage, device.gl.ARRAY_BUFFER, vertexBuffer.storage);\n\t}\n}\n\nexport { WebglVertexBuffer };\n", "import { INDEXFORMAT_UINT8, INDEXFORMAT_UINT16, INDEXFORMAT_UINT32 } from '../constants.js';\nimport { WebglBuffer } from './webgl-buffer.js';\n\nclass WebglIndexBuffer extends WebglBuffer {\n\tconstructor(indexBuffer) {\n\t\tsuper();\n\t\tconst gl = indexBuffer.device.gl;\n\t\tconst format = indexBuffer.format;\n\t\tif (format === INDEXFORMAT_UINT8) {\n\t\t\tthis.glFormat = gl.UNSIGNED_BYTE;\n\t\t} else if (format === INDEXFORMAT_UINT16) {\n\t\t\tthis.glFormat = gl.UNSIGNED_SHORT;\n\t\t} else if (format === INDEXFORMAT_UINT32) {\n\t\t\tthis.glFormat = gl.UNSIGNED_INT;\n\t\t}\n\t}\n\tunlock(indexBuffer) {\n\t\tconst device = indexBuffer.device;\n\t\tsuper.unlock(device, indexBuffer.usage, device.gl.ELEMENT_ARRAY_BUFFER, indexBuffer.storage);\n\t}\n}\n\nexport { WebglIndexBuffer };\n", "import { UNIFORMTYPE_BVEC4, UNIFORMTYPE_BVEC4ARRAY, UNIFORMTYPE_UVEC4, UNIFORMTYPE_UVEC4ARRAY, UNIFORMTYPE_IVEC4, UNIFORMTYPE_IVEC4ARRAY, UNIFORMTYPE_VEC4, UNIFORMTYPE_VEC4ARRAY, UNIFORMTYPE_BVEC3, UNIFORMTYPE_BVEC3ARRAY, UNIFORMTYPE_UVEC3, UNIFORMTYPE_UVEC3ARRAY, UNIFORMTYPE_IVEC3, UNIFORMTYPE_IVEC3ARRAY, UNIFORMTYPE_VEC3, UNIFORMTYPE_VEC3ARRAY, UNIFORMTYPE_BVEC2, UNIFORMTYPE_BVEC2ARRAY, UNIFORMTYPE_UVEC2, UNIFORMTYPE_UVEC2ARRAY, UNIFORMTYPE_IVEC2, UNIFORMTYPE_IVEC2ARRAY, UNIFORMTYPE_VEC2, UNIFORMTYPE_VEC2ARRAY, UNIFORMTYPE_BOOL, UNIFORMTYPE_BOOLARRAY, UNIFORMTYPE_UINT, UNIFORMTYPE_UINTARRAY, UNIFORMTYPE_INT, UNIFORMTYPE_INTARRAY, UNIFORMTYPE_FLOAT, UNIFORMTYPE_FLOATARRAY } from '../constants.js';\nimport { Version } from '../version.js';\n\nclass WebglShaderInput {\n\tconstructor(graphicsDevice, name, type, locationId) {\n\t\tthis.locationId = locationId;\n\t\tthis.scopeId = graphicsDevice.scope.resolve(name);\n\t\tthis.version = new Version();\n\t\tif (name.substring(name.length - 3) === \"[0]\") {\n\t\t\tswitch (type) {\n\t\t\t\tcase UNIFORMTYPE_FLOAT:\n\t\t\t\t\ttype = UNIFORMTYPE_FLOATARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_INT:\n\t\t\t\t\ttype = UNIFORMTYPE_INTARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_UINT:\n\t\t\t\t\ttype = UNIFORMTYPE_UINTARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_BOOL:\n\t\t\t\t\ttype = UNIFORMTYPE_BOOLARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_VEC2:\n\t\t\t\t\ttype = UNIFORMTYPE_VEC2ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_IVEC2:\n\t\t\t\t\ttype = UNIFORMTYPE_IVEC2ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_UVEC2:\n\t\t\t\t\ttype = UNIFORMTYPE_UVEC2ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_BVEC2:\n\t\t\t\t\ttype = UNIFORMTYPE_BVEC2ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_VEC3:\n\t\t\t\t\ttype = UNIFORMTYPE_VEC3ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_IVEC3:\n\t\t\t\t\ttype = UNIFORMTYPE_IVEC3ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_UVEC3:\n\t\t\t\t\ttype = UNIFORMTYPE_UVEC3ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_BVEC3:\n\t\t\t\t\ttype = UNIFORMTYPE_BVEC3ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_VEC4:\n\t\t\t\t\ttype = UNIFORMTYPE_VEC4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_IVEC4:\n\t\t\t\t\ttype = UNIFORMTYPE_IVEC4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_UVEC4:\n\t\t\t\t\ttype = UNIFORMTYPE_UVEC4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase UNIFORMTYPE_BVEC4:\n\t\t\t\t\ttype = UNIFORMTYPE_BVEC4ARRAY;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.dataType = type;\n\t\tthis.value = [null, null, null, null];\n\t\tthis.array = [];\n\t}\n}\n\nexport { WebglShaderInput };\n", "import { WebglShaderInput } from './webgl-shader-input.js';\nimport { semanticToLocation } from '../constants.js';\nimport { DeviceCache } from '../device-cache.js';\n\nconst _vertexShaderBuiltins = new Set(['gl_VertexID', 'gl_InstanceID', 'gl_DrawID', 'gl_BaseVertex', 'gl_BaseInstance']);\nclass CompiledShaderCache {\n\tconstructor() {\n\t\tthis.map = new Map();\n\t}\n\tdestroy(device) {\n\t\tthis.map.forEach(shader => {\n\t\t\tdevice.gl.deleteShader(shader);\n\t\t});\n\t}\n\tloseContext(device) {\n\t\tthis.map.clear();\n\t}\n}\nconst _vertexShaderCache = new DeviceCache();\nconst _fragmentShaderCache = new DeviceCache();\nclass WebglShader {\n\tconstructor(shader) {\n\t\tthis.compileDuration = 0;\n\t\tthis.init();\n\t\tthis.compile(shader.device, shader);\n\t\tthis.link(shader.device, shader);\n\t\tshader.device.shaders.push(shader);\n\t}\n\tdestroy(shader) {\n\t\tif (this.glProgram) {\n\t\t\tshader.device.gl.deleteProgram(this.glProgram);\n\t\t\tthis.glProgram = null;\n\t\t}\n\t}\n\tinit() {\n\t\tthis.uniforms = [];\n\t\tthis.samplers = [];\n\t\tthis.attributes = [];\n\t\tthis.glProgram = null;\n\t\tthis.glVertexShader = null;\n\t\tthis.glFragmentShader = null;\n\t}\n\tloseContext() {\n\t\tthis.init();\n\t}\n\trestoreContext(device, shader) {\n\t\tthis.compile(device, shader);\n\t\tthis.link(device, shader);\n\t}\n\tcompile(device, shader) {\n\t\tconst definition = shader.definition;\n\t\tthis.glVertexShader = this._compileShaderSource(device, definition.vshader, true);\n\t\tthis.glFragmentShader = this._compileShaderSource(device, definition.fshader, false);\n\t}\n\tlink(device, shader) {\n\t\tif (this.glProgram) return;\n\t\tconst gl = device.gl;\n\t\tif (gl.isContextLost()) {\n\t\t\treturn;\n\t\t}\n\t\tconst glProgram = gl.createProgram();\n\t\tthis.glProgram = glProgram;\n\t\tgl.attachShader(glProgram, this.glVertexShader);\n\t\tgl.attachShader(glProgram, this.glFragmentShader);\n\t\tconst definition = shader.definition;\n\t\tconst attrs = definition.attributes;\n\t\tif (device.isWebGL2 && definition.useTransformFeedback) {\n\t\t\tconst outNames = [];\n\t\t\tfor (const attr in attrs) {\n\t\t\t\tif (attrs.hasOwnProperty(attr)) {\n\t\t\t\t\toutNames.push(\"out_\" + attr);\n\t\t\t\t}\n\t\t\t}\n\t\t\tgl.transformFeedbackVaryings(glProgram, outNames, gl.INTERLEAVED_ATTRIBS);\n\t\t}\n\t\tfor (const attr in attrs) {\n\t\t\tif (attrs.hasOwnProperty(attr)) {\n\t\t\t\tconst semantic = attrs[attr];\n\t\t\t\tconst loc = semanticToLocation[semantic];\n\t\t\t\tgl.bindAttribLocation(glProgram, loc, attr);\n\t\t\t}\n\t\t}\n\t\tgl.linkProgram(glProgram);\n\t}\n\t_compileShaderSource(device, src, isVertexShader) {\n\t\tconst gl = device.gl;\n\t\tconst shaderDeviceCache = isVertexShader ? _vertexShaderCache : _fragmentShaderCache;\n\t\tconst shaderCache = shaderDeviceCache.get(device, () => {\n\t\t\treturn new CompiledShaderCache();\n\t\t});\n\t\tlet glShader = shaderCache.map.get(src);\n\t\tif (!glShader) {\n\t\t\tglShader = gl.createShader(isVertexShader ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER);\n\t\t\tif (!glShader && gl.isContextLost()) {\n\t\t\t\treturn glShader;\n\t\t\t}\n\t\t\tgl.shaderSource(glShader, src);\n\t\t\tgl.compileShader(glShader);\n\t\t\tshaderCache.map.set(src, glShader);\n\t\t}\n\t\treturn glShader;\n\t}\n\tfinalize(device, shader) {\n\t\tconst gl = device.gl;\n\t\tif (gl.isContextLost()) {\n\t\t\treturn true;\n\t\t}\n\t\tconst glProgram = this.glProgram;\n\t\tconst definition = shader.definition;\n\t\tconst linkStatus = gl.getProgramParameter(glProgram, gl.LINK_STATUS);\n\t\tif (!linkStatus) {\n\t\t\tif (!this._isCompiled(device, shader, this.glVertexShader, definition.vshader, \"vertex\")) return false;\n\t\t\tif (!this._isCompiled(device, shader, this.glFragmentShader, definition.fshader, \"fragment\")) return false;\n\t\t\tconst message = \"Failed to link shader program. Error: \" + gl.getProgramInfoLog(glProgram);\n\t\t\tconsole.error(message);\n\t\t\treturn false;\n\t\t}\n\t\tconst numAttributes = gl.getProgramParameter(glProgram, gl.ACTIVE_ATTRIBUTES);\n\t\tfor (let i = 0; i < numAttributes; i++) {\n\t\t\tconst info = gl.getActiveAttrib(glProgram, i);\n\t\t\tconst location = gl.getAttribLocation(glProgram, info.name);\n\t\t\tif (_vertexShaderBuiltins.has(info.name)) continue;\n\t\t\tif (definition.attributes[info.name] === undefined) {\n\t\t\t\tconsole.error(`Vertex shader attribute \"${info.name}\" is not mapped to a semantic in shader definition, shader [${shader.label}]`, shader);\n\t\t\t\tshader.failed = true;\n\t\t\t} else {\n\t\t\t\tconst shaderInput = new WebglShaderInput(device, definition.attributes[info.name], device.pcUniformType[info.type], location);\n\t\t\t\tthis.attributes.push(shaderInput);\n\t\t\t}\n\t\t}\n\t\tconst samplerTypes = device._samplerTypes;\n\t\tconst numUniforms = gl.getProgramParameter(glProgram, gl.ACTIVE_UNIFORMS);\n\t\tfor (let i = 0; i < numUniforms; i++) {\n\t\t\tconst info = gl.getActiveUniform(glProgram, i);\n\t\t\tconst location = gl.getUniformLocation(glProgram, info.name);\n\t\t\tconst shaderInput = new WebglShaderInput(device, info.name, device.pcUniformType[info.type], location);\n\t\t\tif (samplerTypes.has(info.type)) {\n\t\t\t\tthis.samplers.push(shaderInput);\n\t\t\t} else {\n\t\t\t\tthis.uniforms.push(shaderInput);\n\t\t\t}\n\t\t}\n\t\tshader.ready = true;\n\t\treturn true;\n\t}\n\t_isCompiled(device, shader, glShader, source, shaderType) {\n\t\tconst gl = device.gl;\n\t\tif (!gl.getShaderParameter(glShader, gl.COMPILE_STATUS)) {\n\t\t\tconst infoLog = gl.getShaderInfoLog(glShader);\n\t\t\tconst [code, error] = this._processError(source, infoLog);\n\t\t\tconst message = `Failed to compile ${shaderType} shader:\\n\\n${infoLog}\\n${code} while rendering ${void 0}`;\n\t\t\tconsole.error(message);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\tisLinked(device) {\n\t\tconst {\n\t\t\textParallelShaderCompile\n\t\t} = device;\n\t\tif (extParallelShaderCompile) {\n\t\t\treturn device.gl.getProgramParameter(this.glProgram, extParallelShaderCompile.COMPLETION_STATUS_KHR);\n\t\t}\n\t\treturn true;\n\t}\n\t_processError(src, infoLog) {\n\t\tconst error = {};\n\t\tlet code = '';\n\t\tif (src) {\n\t\t\tconst lines = src.split('\\n');\n\t\t\tlet from = 0;\n\t\t\tlet to = lines.length;\n\t\t\tif (infoLog && infoLog.startsWith('ERROR:')) {\n\t\t\t\tconst match = infoLog.match(/^ERROR:\\s([0-9]+):([0-9]+):\\s*(.+)/);\n\t\t\t\tif (match) {\n\t\t\t\t\terror.message = match[3];\n\t\t\t\t\terror.line = parseInt(match[2], 10);\n\t\t\t\t\tfrom = Math.max(0, error.line - 6);\n\t\t\t\t\tto = Math.min(lines.length, error.line + 5);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = from; i < to; i++) {\n\t\t\t\tcode += i + 1 + \":\\t\" + lines[i] + '\\n';\n\t\t\t}\n\t\t\terror.source = src;\n\t\t}\n\t\treturn [code, error];\n\t}\n}\n\nexport { WebglShader };\n", "import { PIXELFORMAT_RGBA32U, PIXELFORMAT_RGBA32I, PIXELFORMAT_RGBA16U, PIXELFORMAT_RGBA16I, PIXELFORMAT_RGBA8U, PIXELFORMAT_RGBA8I, PIXELFORMAT_RG32U, PIXELFORMAT_RG32I, PIXELFORMAT_RG16U, PIXELFORMAT_RG16I, PIXELFORMAT_RG8U, PIXELFORMAT_RG8I, PIXELFORMAT_R32U, PIXELFORMAT_R32I, PIXELFORMAT_R16U, PIXELFORMAT_R16I, PIXELFORMAT_R8U, PIXELFORMAT_R8I, PIXELFORMAT_SRGBA, PIXELFORMAT_SRGB, PIXELFORMAT_111110F, PIXELFORMAT_DEPTHSTENCIL, PIXELFORMAT_DEPTH, PIXELFORMAT_R32F, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGB32F, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGB16F, PIXELFORMAT_RG16F, PIXELFORMAT_R16F, PIXELFORMAT_ATC_RGBA, PIXELFORMAT_ATC_RGB, PIXELFORMAT_ASTC_4x4, PIXELFORMAT_ETC2_RGBA, PIXELFORMAT_ETC2_RGB, PIXELFORMAT_PVRTC_4BPP_RGBA_1, PIXELFORMAT_PVRTC_4BPP_RGB_1, PIXELFORMAT_PVRTC_2BPP_RGBA_1, PIXELFORMAT_PVRTC_2BPP_RGB_1, PIXELFORMAT_ETC1, PIXELFORMAT_DXT5, PIXELFORMAT_DXT3, PIXELFORMAT_DXT1, PIXELFORMAT_RGBA8, PIXELFORMAT_RGB8, PIXELFORMAT_RGBA4, PIXELFORMAT_RGBA5551, PIXELFORMAT_RGB565, PIXELFORMAT_LA8, PIXELFORMAT_L8, PIXELFORMAT_A8 } from '../constants.js';\n\nfunction downsampleImage(image, size) {\n\tconst srcW = image.width;\n\tconst srcH = image.height;\n\tif (srcW > size || srcH > size) {\n\t\tconst scale = size / Math.max(srcW, srcH);\n\t\tconst dstW = Math.floor(srcW * scale);\n\t\tconst dstH = Math.floor(srcH * scale);\n\t\tconst canvas = document.createElement('canvas');\n\t\tcanvas.width = dstW;\n\t\tcanvas.height = dstH;\n\t\tconst context = canvas.getContext('2d');\n\t\tcontext.drawImage(image, 0, 0, srcW, srcH, 0, 0, dstW, dstH);\n\t\treturn canvas;\n\t}\n\treturn image;\n}\nclass WebglTexture {\n\tconstructor() {\n\t\tthis._glTexture = null;\n\t\tthis._glTarget = void 0;\n\t\tthis._glFormat = void 0;\n\t\tthis._glInternalFormat = void 0;\n\t\tthis._glPixelType = void 0;\n\t\tthis._glCreated = void 0;\n\t\tthis.dirtyParameterFlags = 0;\n\t}\n\tdestroy(device) {\n\t\tif (this._glTexture) {\n\t\t\tfor (let i = 0; i < device.textureUnits.length; i++) {\n\t\t\t\tconst textureUnit = device.textureUnits[i];\n\t\t\t\tfor (let j = 0; j < textureUnit.length; j++) {\n\t\t\t\t\tif (textureUnit[j] === this._glTexture) {\n\t\t\t\t\t\ttextureUnit[j] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdevice.gl.deleteTexture(this._glTexture);\n\t\t\tthis._glTexture = null;\n\t\t}\n\t}\n\tloseContext() {\n\t\tthis._glTexture = null;\n\t}\n\tpropertyChanged(flag) {\n\t\tthis.dirtyParameterFlags |= flag;\n\t}\n\tinitialize(device, texture) {\n\t\tconst gl = device.gl;\n\t\tthis._glTexture = gl.createTexture();\n\t\tthis._glTarget = texture._cubemap ? gl.TEXTURE_CUBE_MAP : texture._volume ? gl.TEXTURE_3D : texture.array ? gl.TEXTURE_2D_ARRAY : gl.TEXTURE_2D;\n\t\tswitch (texture._format) {\n\t\t\tcase PIXELFORMAT_A8:\n\t\t\t\tthis._glFormat = gl.ALPHA;\n\t\t\t\tthis._glInternalFormat = gl.ALPHA;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_L8:\n\t\t\t\tthis._glFormat = gl.LUMINANCE;\n\t\t\t\tthis._glInternalFormat = gl.LUMINANCE;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_LA8:\n\t\t\t\tthis._glFormat = gl.LUMINANCE_ALPHA;\n\t\t\t\tthis._glInternalFormat = gl.LUMINANCE_ALPHA;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGB565:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = gl.RGB;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_5_6_5;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA5551:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = gl.RGBA;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_5_5_5_1;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA4:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = gl.RGBA;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_4_4_4_4;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGB8:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = device.isWebGL2 ? gl.RGB8 : gl.RGB;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA8:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = device.isWebGL2 ? gl.RGBA8 : gl.RGBA;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_DXT1:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_DXT3:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_DXT5:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_ETC1:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC1.COMPRESSED_RGB_ETC1_WEBGL;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_PVRTC_2BPP_RGB_1:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_PVRTC_2BPP_RGBA_1:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_PVRTC_4BPP_RGB_1:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_PVRTC_4BPP_RGBA_1:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_ETC2_RGB:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_RGB8_ETC2;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_ETC2_RGBA:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_RGBA8_ETC2_EAC;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_ASTC_4x4:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureASTC.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_ATC_RGB:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureATC.COMPRESSED_RGB_ATC_WEBGL;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_ATC_RGBA:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = device.extCompressedTextureATC.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_R16F:\n\t\t\t\tif (device.isWebGL2) {\n\t\t\t\t\tthis._glFormat = gl.RED;\n\t\t\t\t\tthis._glInternalFormat = gl.R16F;\n\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t} else {\n\t\t\t\t\tthis._glFormat = gl.LUMINANCE;\n\t\t\t\t\tthis._glInternalFormat = gl.LUMINANCE;\n\t\t\t\t\tthis._glPixelType = device.extTextureHalfFloat.HALF_FLOAT_OES;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RG16F:\n\t\t\t\tif (device.isWebGL2) {\n\t\t\t\t\tthis._glFormat = gl.RG;\n\t\t\t\t\tthis._glInternalFormat = gl.RG16F;\n\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t} else {\n\t\t\t\t\tthis._glFormat = gl.RG;\n\t\t\t\t\tthis._glInternalFormat = gl.RG;\n\t\t\t\t\tthis._glPixelType = device.extTextureHalfFloat.HALF_FLOAT_OES;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGB16F:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tif (device.isWebGL2) {\n\t\t\t\t\tthis._glInternalFormat = gl.RGB16F;\n\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t} else {\n\t\t\t\t\tthis._glInternalFormat = gl.RGB;\n\t\t\t\t\tthis._glPixelType = device.extTextureHalfFloat.HALF_FLOAT_OES;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tif (device.isWebGL2) {\n\t\t\t\t\tthis._glInternalFormat = gl.RGBA16F;\n\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t} else {\n\t\t\t\t\tthis._glInternalFormat = gl.RGBA;\n\t\t\t\t\tthis._glPixelType = device.extTextureHalfFloat.HALF_FLOAT_OES;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGB32F:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tif (device.isWebGL2) {\n\t\t\t\t\tthis._glInternalFormat = gl.RGB32F;\n\t\t\t\t} else {\n\t\t\t\t\tthis._glInternalFormat = gl.RGB;\n\t\t\t\t}\n\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tif (device.isWebGL2) {\n\t\t\t\t\tthis._glInternalFormat = gl.RGBA32F;\n\t\t\t\t} else {\n\t\t\t\t\tthis._glInternalFormat = gl.RGBA;\n\t\t\t\t}\n\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_R32F:\n\t\t\t\tthis._glFormat = gl.RED;\n\t\t\t\tthis._glInternalFormat = gl.R32F;\n\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_DEPTH:\n\t\t\t\tif (device.isWebGL2) {\n\t\t\t\t\tthis._glFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\tthis._glInternalFormat = gl.DEPTH_COMPONENT32F;\n\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t} else {\n\t\t\t\t\tthis._glFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\tthis._glInternalFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_DEPTHSTENCIL:\n\t\t\t\tthis._glFormat = gl.DEPTH_STENCIL;\n\t\t\t\tif (device.isWebGL2) {\n\t\t\t\t\tthis._glInternalFormat = gl.DEPTH24_STENCIL8;\n\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT_24_8;\n\t\t\t\t} else {\n\t\t\t\t\tthis._glInternalFormat = gl.DEPTH_STENCIL;\n\t\t\t\t\tthis._glPixelType = device.extDepthTexture.UNSIGNED_INT_24_8_WEBGL;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_111110F:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = gl.R11F_G11F_B10F;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT_10F_11F_11F_REV;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_SRGB:\n\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\tthis._glInternalFormat = gl.SRGB8;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_SRGBA:\n\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\tthis._glInternalFormat = gl.SRGB8_ALPHA8;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_R8I:\n\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.R8I;\n\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_R8U:\n\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.R8UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_R16I:\n\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.R16I;\n\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_R16U:\n\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.R16UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_R32I:\n\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.R32I;\n\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_R32U:\n\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.R32UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RG8I:\n\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RG8I;\n\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RG8U:\n\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RG8UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RG16I:\n\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RG16I;\n\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RG16U:\n\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RG16UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RG32I:\n\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RG32I;\n\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RG32U:\n\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RG32UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA8I:\n\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RGBA8I;\n\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA8U:\n\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RGBA8UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA16I:\n\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RGBA16I;\n\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA16U:\n\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RGBA16UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA32I:\n\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RGBA32I;\n\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\tbreak;\n\t\t\tcase PIXELFORMAT_RGBA32U:\n\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\tthis._glInternalFormat = gl.RGBA32UI;\n\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\tbreak;\n\t\t}\n\t\tthis._glCreated = false;\n\t}\n\tupload(device, texture) {\n\t\tconst gl = device.gl;\n\t\tif (!texture._needsUpload && (texture._needsMipmapsUpload && texture._mipmapsUploaded || !texture.pot)) return;\n\t\tlet mipLevel = 0;\n\t\tlet mipObject;\n\t\tlet resMult;\n\t\tconst requiredMipLevels = texture.requiredMipLevels;\n\t\tif (texture.array) {\n\t\t\tgl.texStorage3D(gl.TEXTURE_2D_ARRAY, requiredMipLevels, this._glInternalFormat, texture._width, texture._height, texture._arrayLength);\n\t\t}\n\t\twhile (texture._levels[mipLevel] || mipLevel === 0) {\n\t\t\tif (!texture._needsUpload && mipLevel === 0) {\n\t\t\t\tmipLevel++;\n\t\t\t\tcontinue;\n\t\t\t} else if (mipLevel && (!texture._needsMipmapsUpload || !texture._mipmaps)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmipObject = texture._levels[mipLevel];\n\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\tif (mipLevel === 1 && !texture._compressed && !texture._integerFormat && texture._levels.length < requiredMipLevels) {\n\t\t\t\tgl.generateMipmap(this._glTarget);\n\t\t\t\ttexture._mipmapsUploaded = true;\n\t\t\t}\n\t\t\tif (texture._cubemap) {\n\t\t\t\tlet face;\n\t\t\t\tif (device._isBrowserInterface(mipObject[0])) {\n\t\t\t\t\tfor (face = 0; face < 6; face++) {\n\t\t\t\t\t\tif (!texture._levelsUpdated[0][face]) continue;\n\t\t\t\t\t\tlet src = mipObject[face];\n\t\t\t\t\t\tif (device._isImageBrowserInterface(src)) {\n\t\t\t\t\t\t\tif (src.width > device.maxCubeMapSize || src.height > device.maxCubeMapSize) {\n\t\t\t\t\t\t\t\tsrc = downsampleImage(src, device.maxCubeMapSize);\n\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\ttexture._width = src.width;\n\t\t\t\t\t\t\t\t\ttexture._height = src.height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\tif (this._glCreated) {\n\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, this._glFormat, this._glPixelType, src);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, this._glFormat, this._glPixelType, src);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\t\t\tfor (face = 0; face < 6; face++) {\n\t\t\t\t\t\tif (!texture._levelsUpdated[0][face]) continue;\n\t\t\t\t\t\tconst texData = mipObject[face];\n\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\tif (this._glCreated && texData) {\n\t\t\t\t\t\t\t\tgl.compressedTexSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glInternalFormat, texData);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, texData);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\tif (this._glCreated && texData) {\n\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glFormat, this._glPixelType, texData);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, this._glFormat, this._glPixelType, texData);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (texture._volume) {\n\t\t\t\tif (texture._compressed) {\n\t\t\t\t\tgl.compressedTexImage3D(gl.TEXTURE_3D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), Math.max(texture._depth * resMult, 1), 0, mipObject);\n\t\t\t\t} else {\n\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\tgl.texImage3D(gl.TEXTURE_3D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), Math.max(texture._depth * resMult, 1), 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t}\n\t\t\t} else if (texture.array && typeof mipObject === \"object\") {\n\t\t\t\tif (texture._arrayLength === mipObject.length) {\n\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\tfor (let index = 0; index < texture._arrayLength; index++) {\n\t\t\t\t\t\t\tgl.compressedTexSubImage3D(gl.TEXTURE_2D_ARRAY, mipLevel, 0, 0, index, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 1, this._glFormat, mipObject[index]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let index = 0; index < texture._arrayLength; index++) {\n\t\t\t\t\t\t\tgl.texSubImage3D(gl.TEXTURE_2D_ARRAY, mipLevel, 0, 0, index, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 1, this._glFormat, this._glPixelType, mipObject[index]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (device._isBrowserInterface(mipObject)) {\n\t\t\t\t\tif (device._isImageBrowserInterface(mipObject)) {\n\t\t\t\t\t\tif (mipObject.width > device.maxTextureSize || mipObject.height > device.maxTextureSize) {\n\t\t\t\t\t\t\tmipObject = downsampleImage(mipObject, device.maxTextureSize);\n\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\ttexture._width = mipObject.width;\n\t\t\t\t\t\t\t\ttexture._height = mipObject.height;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst w = mipObject.width || mipObject.videoWidth;\n\t\t\t\t\tconst h = mipObject.height || mipObject.videoHeight;\n\t\t\t\t\tdevice.setUnpackFlipY(texture._flipY);\n\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\tif (this._glCreated && texture._width === w && texture._height === h && !device._isImageVideoInterface(mipObject)) {\n\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\ttexture._width = w;\n\t\t\t\t\t\t\ttexture._height = h;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\tif (this._glCreated && mipObject) {\n\t\t\t\t\t\t\tgl.compressedTexSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), this._glInternalFormat, mipObject);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgl.compressedTexImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 0, mipObject);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\tif (this._glCreated && mipObject) {\n\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\ttexture._mipmapsUploaded = false;\n\t\t\t\t} else {\n\t\t\t\t\ttexture._mipmapsUploaded = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmipLevel++;\n\t\t}\n\t\tif (texture._needsUpload) {\n\t\t\tif (texture._cubemap) {\n\t\t\t\tfor (let i = 0; i < 6; i++) texture._levelsUpdated[0][i] = false;\n\t\t\t} else {\n\t\t\t\ttexture._levelsUpdated[0] = false;\n\t\t\t}\n\t\t}\n\t\tif (!texture._compressed && !texture._integerFormat && texture._mipmaps && texture._needsMipmapsUpload && (texture.pot || device.isWebGL2) && texture._levels.length === 1) {\n\t\t\tgl.generateMipmap(this._glTarget);\n\t\t\ttexture._mipmapsUploaded = true;\n\t\t}\n\t\tif (texture._gpuSize) {\n\t\t\ttexture.adjustVramSizeTracking(device._vram, -texture._gpuSize);\n\t\t}\n\t\ttexture._gpuSize = texture.gpuSize;\n\t\ttexture.adjustVramSizeTracking(device._vram, texture._gpuSize);\n\t\tthis._glCreated = true;\n\t}\n}\n\nexport { WebglTexture };\n", "import { PIXELFORMAT_RGBA8 } from '../constants.js';\n\nclass FramebufferPair {\n\tconstructor(msaaFB, resolveFB) {\n\t\tthis.msaaFB = void 0;\n\t\tthis.resolveFB = void 0;\n\t\tthis.msaaFB = msaaFB;\n\t\tthis.resolveFB = resolveFB;\n\t}\n\tdestroy(gl) {\n\t\tif (this.msaaFB) {\n\t\t\tgl.deleteRenderbuffer(this.msaaFB);\n\t\t\tthis.msaaFB = null;\n\t\t}\n\t\tif (this.resolveFB) {\n\t\t\tgl.deleteRenderbuffer(this.resolveFB);\n\t\t\tthis.resolveFB = null;\n\t\t}\n\t}\n}\nclass WebglRenderTarget {\n\tconstructor() {\n\t\tthis._glFrameBuffer = null;\n\t\tthis._glDepthBuffer = null;\n\t\tthis._glResolveFrameBuffer = null;\n\t\tthis.colorMrtFramebuffers = null;\n\t\tthis._glMsaaColorBuffers = [];\n\t\tthis._glMsaaDepthBuffer = null;\n\t\tthis.suppliedColorFramebuffer = void 0;\n\t\tthis._isInitialized = false;\n\t}\n\tdestroy(device) {\n\t\tvar _this$colorMrtFramebu;\n\t\tconst gl = device.gl;\n\t\tthis._isInitialized = false;\n\t\tif (this._glFrameBuffer) {\n\t\t\tif (this._glFrameBuffer !== this.suppliedColorFramebuffer) gl.deleteFramebuffer(this._glFrameBuffer);\n\t\t\tthis._glFrameBuffer = null;\n\t\t}\n\t\tif (this._glDepthBuffer) {\n\t\t\tgl.deleteRenderbuffer(this._glDepthBuffer);\n\t\t\tthis._glDepthBuffer = null;\n\t\t}\n\t\tif (this._glResolveFrameBuffer) {\n\t\t\tif (this._glResolveFrameBuffer !== this.suppliedColorFramebuffer) gl.deleteFramebuffer(this._glResolveFrameBuffer);\n\t\t\tthis._glResolveFrameBuffer = null;\n\t\t}\n\t\tthis._glMsaaColorBuffers.forEach(buffer => {\n\t\t\tgl.deleteRenderbuffer(buffer);\n\t\t});\n\t\tthis._glMsaaColorBuffers.length = 0;\n\t\t(_this$colorMrtFramebu = this.colorMrtFramebuffers) == null || _this$colorMrtFramebu.forEach(framebuffer => {\n\t\t\tframebuffer.destroy(gl);\n\t\t});\n\t\tthis.colorMrtFramebuffers = null;\n\t\tif (this._glMsaaDepthBuffer) {\n\t\t\tgl.deleteRenderbuffer(this._glMsaaDepthBuffer);\n\t\t\tthis._glMsaaDepthBuffer = null;\n\t\t}\n\t\tthis.suppliedColorFramebuffer = undefined;\n\t}\n\tget initialized() {\n\t\treturn this._isInitialized;\n\t}\n\tinit(device, target) {\n\t\tconst gl = device.gl;\n\t\tthis._isInitialized = true;\n\t\tconst buffers = [];\n\t\tif (this.suppliedColorFramebuffer !== undefined) {\n\t\t\tthis._glFrameBuffer = this.suppliedColorFramebuffer;\n\t\t} else {\n\t\t\tvar _target$_colorBuffers, _target$_colorBuffers2, _device$extDrawBuffer, _device$extDrawBuffer2;\n\t\t\tthis._glFrameBuffer = gl.createFramebuffer();\n\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\tconst colorBufferCount = (_target$_colorBuffers = (_target$_colorBuffers2 = target._colorBuffers) == null ? void 0 : _target$_colorBuffers2.length) != null ? _target$_colorBuffers : 0;\n\t\t\tconst attachmentBaseConstant = device.isWebGL2 ? gl.COLOR_ATTACHMENT0 : (_device$extDrawBuffer = (_device$extDrawBuffer2 = device.extDrawBuffers) == null ? void 0 : _device$extDrawBuffer2.COLOR_ATTACHMENT0_WEBGL) != null ? _device$extDrawBuffer : gl.COLOR_ATTACHMENT0;\n\t\t\tfor (let i = 0; i < colorBufferCount; ++i) {\n\t\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\t\tif (colorBuffer) {\n\t\t\t\t\tif (!colorBuffer.impl._glTexture) {\n\t\t\t\t\t\tcolorBuffer._width = Math.min(colorBuffer.width, device.maxRenderBufferSize);\n\t\t\t\t\t\tcolorBuffer._height = Math.min(colorBuffer.height, device.maxRenderBufferSize);\n\t\t\t\t\t\tdevice.setTexture(colorBuffer, 0);\n\t\t\t\t\t}\n\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentBaseConstant + i, colorBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, colorBuffer.impl._glTexture, 0);\n\t\t\t\t\tbuffers.push(attachmentBaseConstant + i);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (device.drawBuffers) {\n\t\t\t\tdevice.drawBuffers(buffers);\n\t\t\t}\n\t\t\tconst depthBuffer = target._depthBuffer;\n\t\t\tif (depthBuffer) {\n\t\t\t\tif (!depthBuffer.impl._glTexture) {\n\t\t\t\t\tdepthBuffer._width = Math.min(depthBuffer.width, device.maxRenderBufferSize);\n\t\t\t\t\tdepthBuffer._height = Math.min(depthBuffer.height, device.maxRenderBufferSize);\n\t\t\t\t\tdevice.setTexture(depthBuffer, 0);\n\t\t\t\t}\n\t\t\t\tif (target._stencil) {\n\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, depthBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, target._depthBuffer.impl._glTexture, 0);\n\t\t\t\t} else {\n\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, depthBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, target._depthBuffer.impl._glTexture, 0);\n\t\t\t\t}\n\t\t\t} else if (target._depth) {\n\t\t\t\tconst willRenderMsaa = target._samples > 1 && device.isWebGL2;\n\t\t\t\tif (!willRenderMsaa) {\n\t\t\t\t\tif (!this._glDepthBuffer) {\n\t\t\t\t\t\tthis._glDepthBuffer = gl.createRenderbuffer();\n\t\t\t\t\t}\n\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, this._glDepthBuffer);\n\t\t\t\t\tif (target._stencil) {\n\t\t\t\t\t\tgl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, target.width, target.height);\n\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, this._glDepthBuffer);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst depthFormat = device.isWebGL2 ? gl.DEPTH_COMPONENT32F : gl.DEPTH_COMPONENT16;\n\t\t\t\t\t\tgl.renderbufferStorage(gl.RENDERBUFFER, depthFormat, target.width, target.height);\n\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._glDepthBuffer);\n\t\t\t\t\t}\n\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, null);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (device.isWebGL2 && target._samples > 1) {\n\t\t\tvar _target$_colorBuffers3, _target$_colorBuffers4;\n\t\t\tthis._glResolveFrameBuffer = this._glFrameBuffer;\n\t\t\tthis._glFrameBuffer = gl.createFramebuffer();\n\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\tconst colorBufferCount = (_target$_colorBuffers3 = (_target$_colorBuffers4 = target._colorBuffers) == null ? void 0 : _target$_colorBuffers4.length) != null ? _target$_colorBuffers3 : 0;\n\t\t\tif (this.suppliedColorFramebuffer !== undefined) {\n\t\t\t\tconst buffer = gl.createRenderbuffer();\n\t\t\t\tthis._glMsaaColorBuffers.push(buffer);\n\t\t\t\tconst internalFormat = device.backBufferFormat === PIXELFORMAT_RGBA8 ? gl.RGBA8 : gl.RGB8;\n\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, internalFormat, target.width, target.height);\n\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, buffer);\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < colorBufferCount; ++i) {\n\t\t\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\t\t\tif (colorBuffer) {\n\t\t\t\t\t\tconst buffer = gl.createRenderbuffer();\n\t\t\t\t\t\tthis._glMsaaColorBuffers.push(buffer);\n\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, colorBuffer.impl._glInternalFormat, target.width, target.height);\n\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, buffer);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (target._depth) {\n\t\t\t\tif (!this._glMsaaDepthBuffer) {\n\t\t\t\t\tthis._glMsaaDepthBuffer = gl.createRenderbuffer();\n\t\t\t\t}\n\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, this._glMsaaDepthBuffer);\n\t\t\t\tif (target._stencil) {\n\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, gl.DEPTH24_STENCIL8, target.width, target.height);\n\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, this._glMsaaDepthBuffer);\n\t\t\t\t} else {\n\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, gl.DEPTH_COMPONENT32F, target.width, target.height);\n\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._glMsaaDepthBuffer);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (colorBufferCount > 1) {\n\t\t\t\tthis._createMsaaMrtFramebuffers(device, target, colorBufferCount);\n\t\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\t\tdevice.drawBuffers(buffers);\n\t\t\t}\n\t\t}\n\t}\n\t_createMsaaMrtFramebuffers(device, target, colorBufferCount) {\n\t\tconst gl = device.gl;\n\t\tthis.colorMrtFramebuffers = [];\n\t\tfor (let i = 0; i < colorBufferCount; ++i) {\n\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\tconst srcFramebuffer = gl.createFramebuffer();\n\t\t\tdevice.setFramebuffer(srcFramebuffer);\n\t\t\tconst buffer = this._glMsaaColorBuffers[i];\n\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, colorBuffer.impl._glInternalFormat, target.width, target.height);\n\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, buffer);\n\t\t\tdevice.drawBuffers([gl.COLOR_ATTACHMENT0]);\n\t\t\tconst dstFramebuffer = gl.createFramebuffer();\n\t\t\tdevice.setFramebuffer(dstFramebuffer);\n\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, colorBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, colorBuffer.impl._glTexture, 0);\n\t\t\tthis.colorMrtFramebuffers[i] = new FramebufferPair(srcFramebuffer, dstFramebuffer);\n\t\t}\n\t}\n\t_checkFbo(device, target, type = '') {\n\t\tconst gl = device.gl;\n\t\tconst status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\t\tswitch (status) {\n\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n\t\t\t\tbreak;\n\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n\t\t\t\tbreak;\n\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n\t\t\t\tbreak;\n\t\t\tcase gl.FRAMEBUFFER_UNSUPPORTED:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tloseContext() {\n\t\tthis._glFrameBuffer = null;\n\t\tthis._glDepthBuffer = null;\n\t\tthis._glResolveFrameBuffer = null;\n\t\tthis._glMsaaColorBuffers.length = 0;\n\t\tthis._glMsaaDepthBuffer = null;\n\t\tthis.colorMrtFramebuffers = null;\n\t\tthis.suppliedColorFramebuffer = undefined;\n\t\tthis._isInitialized = false;\n\t}\n\tinternalResolve(device, src, dst, target, mask) {\n\t\tdevice.setScissor(0, 0, target.width, target.height);\n\t\tconst gl = device.gl;\n\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, src);\n\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dst);\n\t\tgl.blitFramebuffer(0, 0, target.width, target.height, 0, 0, target.width, target.height, mask, gl.NEAREST);\n\t}\n\tresolve(device, target, color, depth) {\n\t\tif (device.isWebGL2) {\n\t\t\tconst gl = device.gl;\n\t\t\tif (this.colorMrtFramebuffers) {\n\t\t\t\tif (color) {\n\t\t\t\t\tfor (let i = 0; i < this.colorMrtFramebuffers.length; i++) {\n\t\t\t\t\t\tconst fbPair = this.colorMrtFramebuffers[i];\n\t\t\t\t\t\tthis.internalResolve(device, fbPair.msaaFB, fbPair.resolveFB, target, gl.COLOR_BUFFER_BIT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (depth) {\n\t\t\t\t\tthis.internalResolve(device, this._glFrameBuffer, this._glResolveFrameBuffer, target, gl.DEPTH_BUFFER_BIT);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.internalResolve(device, this._glFrameBuffer, this._glResolveFrameBuffer, target, (color ? gl.COLOR_BUFFER_BIT : 0) | (depth ? gl.DEPTH_BUFFER_BIT : 0));\n\t\t\t}\n\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, this._glFrameBuffer);\n\t\t}\n\t}\n}\n\nexport { WebglRenderTarget };\n", "var gles2PS = `\n#define pcFragColor0 gl_FragData[0]\n#if COLOR_ATTACHMENT_1\n#define pcFragColor1 gl_FragData[1]\n#endif\n#if COLOR_ATTACHMENT_2\n#define pcFragColor2 gl_FragData[2]\n#endif\n#if COLOR_ATTACHMENT_3\n#define pcFragColor3 gl_FragData[3]\n#endif\n#if COLOR_ATTACHMENT_4\n#define pcFragColor4 gl_FragData[4]\n#endif\n#if COLOR_ATTACHMENT_5\n#define pcFragColor5 gl_FragData[5]\n#endif\n#if COLOR_ATTACHMENT_6\n#define pcFragColor6 gl_FragData[6]\n#endif\n#if COLOR_ATTACHMENT_7\n#define pcFragColor7 gl_FragData[7]\n#endif\n#define texture2DBias texture2D\n#define itexture2D texture2D\n#define utexture2D texture2D\n#define SHADOWMAP_PASS(name) name\n#define SHADOWMAP_ACCEPT(name) sampler2D name\n#define TEXTURE_PASS(name) name\n#define TEXTURE_ACCEPT(name) sampler2D name\n#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name\n#ifndef SUPPORTS_TEXLOD\n\t#define texture2DLodEXT texture2D\n\t#define texture2DProjLodEXT textureProj\n\t#define textureCubeLodEXT textureCube\n\t#define textureShadow texture2D\n#else\n\t#define textureShadow(res, uv) texture2DGradEXT(res, uv, vec2(1, 1), vec2(1, 1))\n#endif\n#ifdef SUPPORTS_MRT\n\t#define gl_FragColor pcFragColor0\n#endif\n`;\n\nexport { gles2PS as default };\n", "var gles2VS = `\n#define TEXTURE_PASS(name) name\n#define TEXTURE_ACCEPT(name) sampler2D name\n#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name\n`;\n\nexport { gles2VS as default };\n", "var gles3PS = `\n#ifndef outType_0\n#define outType_0 vec4\n#endif\nlayout(location = 0) out highp outType_0 pc_fragColor;\n#ifndef REMOVE_COLOR_ATTACHMENT_1\n#if COLOR_ATTACHMENT_1\nlayout(location = 1) out highp outType_1 pc_fragColor1;\n#endif\n#endif\n#ifndef REMOVE_COLOR_ATTACHMENT_2\n#if COLOR_ATTACHMENT_2\nlayout(location = 2) out highp outType_2 pc_fragColor2;\n#endif\n#endif\n#ifndef REMOVE_COLOR_ATTACHMENT_3\n#if COLOR_ATTACHMENT_3\nlayout(location = 3) out highp outType_3 pc_fragColor3;\n#endif\n#endif\n#ifndef REMOVE_COLOR_ATTACHMENT_4\n#if COLOR_ATTACHMENT_4\nlayout(location = 4) out highp outType_4 pc_fragColor4;\n#endif\n#endif\n#ifndef REMOVE_COLOR_ATTACHMENT_5\n#if COLOR_ATTACHMENT_5\nlayout(location = 5) out highp outType_5 pc_fragColor5;\n#endif\n#endif\n#ifndef REMOVE_COLOR_ATTACHMENT_6\n#if COLOR_ATTACHMENT_6\nlayout(location = 6) out highp outType_6 pc_fragColor6;\n#endif\n#endif\n#ifndef REMOVE_COLOR_ATTACHMENT_7\n#if COLOR_ATTACHMENT_7\nlayout(location = 7) out highp outType_7 pc_fragColor7;\n#endif\n#endif\n#define gl_FragColor pc_fragColor\n#define pcFragColor0 pc_fragColor\n#define pcFragColor1 pc_fragColor1\n#define pcFragColor2 pc_fragColor2\n#define pcFragColor3 pc_fragColor3\n#define pcFragColor4 pc_fragColor4\n#define pcFragColor5 pc_fragColor5\n#define pcFragColor6 pc_fragColor6\n#define pcFragColor7 pc_fragColor7\n#define varying in\n#define texture2D texture\n#define texture2DBias texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad\n#define utexture2D texture\n#define itexture2D texture\n#define textureShadow(res, uv) textureGrad(res, uv, vec2(1, 1), vec2(1, 1))\n#define SHADOWMAP_PASS(name) name\n#define SHADOWMAP_ACCEPT(name) sampler2DShadow name\n#define TEXTURE_PASS(name) name\n#define TEXTURE_ACCEPT(name) sampler2D name\n#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name\n#define GL2\n#define SUPPORTS_TEXLOD\n#define SUPPORTS_MRT\n`;\n\nexport { gles3PS as default };\n", "var gles3VS = `\n#define attribute in\n#define varying out\n#define texture2D texture\n#define utexture2D texture\n#define itexture2D texture\n#define GL2\n#define VERTEXSHADER\n#define TEXTURE_PASS(name) name\n#define TEXTURE_ACCEPT(name) sampler2D name\n#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name\n`;\n\nexport { gles3VS as default };\n", "var webgpuPS = `\n#extension GL_EXT_samplerless_texture_functions : require\n#ifndef outType_0\n#define outType_0 vec4\n#endif\n#ifndef outType_1\n#define outType_1 vec4\n#endif\n#ifndef outType_2\n#define outType_2 vec4\n#endif\n#ifndef outType_3\n#define outType_3 vec4\n#endif\n#ifndef outType_4\n#define outType_4 vec4\n#endif\n#ifndef outType_5\n#define outType_5 vec4\n#endif\n#ifndef outType_6\n#define outType_6 vec4\n#endif\n#ifndef outType_7\n#define outType_7 vec4\n#endif\nlayout(location = 0) out highp outType_0 pc_fragColor;\nlayout(location = 1) out highp outType_1 pc_fragColor1;\nlayout(location = 2) out highp outType_2 pc_fragColor2;\nlayout(location = 3) out highp outType_3 pc_fragColor3;\nlayout(location = 4) out highp outType_4 pc_fragColor4;\nlayout(location = 5) out highp outType_5 pc_fragColor5;\nlayout(location = 6) out highp outType_6 pc_fragColor6;\nlayout(location = 7) out highp outType_7 pc_fragColor7;\n#define gl_FragColor pc_fragColor\n#define pcFragColor0 pc_fragColor\n#define pcFragColor1 pc_fragColor1\n#define pcFragColor2 pc_fragColor2\n#define pcFragColor3 pc_fragColor3\n#define pcFragColor4 pc_fragColor4\n#define pcFragColor5 pc_fragColor5\n#define pcFragColor6 pc_fragColor6\n#define pcFragColor7 pc_fragColor7\n#define texture2D(res, uv) texture(sampler2D(res, res ## _sampler), uv)\n#define texture2DBias(res, uv, bias) texture(sampler2D(res, res ## _sampler), uv, bias)\n#define texture2DLodEXT(res, uv, lod) textureLod(sampler2D(res, res ## _sampler), uv, lod)\n#define textureCube(res, uv) texture(samplerCube(res, res ## _sampler), uv)\n#define textureCubeLodEXT(res, uv, lod) textureLod(samplerCube(res, res ## _sampler), uv, lod)\n#define textureShadow(res, uv) textureLod(sampler2DShadow(res, res ## _sampler), uv, 0.0)\n#define itexture2D(res, uv) texture(isampler2D(res, res ## _sampler), uv)\n#define utexture2D(res, uv) texture(usampler2D(res, res ## _sampler), uv)\n#define SHADOWMAP_PASS(name) name, name ## _sampler\n#define SHADOWMAP_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_PASS(name) name, name ## _sampler\n#define TEXTURE_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_ACCEPT_HIGHP TEXTURE_ACCEPT\n#define GL2\n#define WEBGPU\n#define SUPPORTS_TEXLOD\n#define SUPPORTS_MRT\n`;\n\nexport { webgpuPS as default };\n", "var webgpuVS = `\n#extension GL_EXT_samplerless_texture_functions : require\n#define texture2D(res, uv) texture(sampler2D(res, res ## _sampler), uv)\n#define itexture2D(res, uv) texture(isampler2D(res, res ## _sampler), uv)\n#define utexture2D(res, uv) texture(usampler2D(res, res ## _sampler), uv)\n#define TEXTURE_PASS(name) name, name ## _sampler\n#define TEXTURE_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_ACCEPT_HIGHP TEXTURE_ACCEPT\n#define GL2\n#define WEBGPU\n#define VERTEXSHADER\n#define gl_VertexID gl_VertexIndex\n`;\n\nexport { webgpuVS as default };\n", "var sharedFS = `\nvec2 getGrabScreenPos(vec4 clipPos) {\n\tvec2 uv = (clipPos.xy / clipPos.w) * 0.5 + 0.5;\n\t#ifdef WEBGPU\n\t\tuv.y = 1.0 - uv.y;\n\t#endif\n\treturn uv;\n}\nvec2 getImageEffectUV(vec2 uv) {\n\t#ifdef WEBGPU\n\t\tuv.y = 1.0 - uv.y;\n\t#endif\n\treturn uv;\n}\n`;\n\nexport { sharedFS as default };\n", "import { SEMANTIC_POSITION, SEMANTIC_NORMAL, SEMANTIC_TANGENT, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_TEXCOORD2, SEMANTIC_TEXCOORD3, SEMANTIC_TEXCOORD4, SEMANTIC_TEXCOORD5, SEMANTIC_TEXCOORD6, SEMANTIC_TEXCOORD7, SEMANTIC_COLOR, SEMANTIC_BLENDINDICES, SEMANTIC_BLENDWEIGHT } from './constants.js';\nimport gles2PS from './shader-chunks/frag/gles2.js';\nimport gles2VS from './shader-chunks/vert/gles2.js';\nimport gles3PS from './shader-chunks/frag/gles3.js';\nimport gles3VS from './shader-chunks/vert/gles3.js';\nimport webgpuPS from './shader-chunks/frag/webgpu.js';\nimport webgpuVS from './shader-chunks/vert/webgpu.js';\nimport sharedFS from './shader-chunks/frag/shared.js';\n\nconst _attrib2Semantic = {\n\tvertex_position: SEMANTIC_POSITION,\n\tvertex_normal: SEMANTIC_NORMAL,\n\tvertex_tangent: SEMANTIC_TANGENT,\n\tvertex_texCoord0: SEMANTIC_TEXCOORD0,\n\tvertex_texCoord1: SEMANTIC_TEXCOORD1,\n\tvertex_texCoord2: SEMANTIC_TEXCOORD2,\n\tvertex_texCoord3: SEMANTIC_TEXCOORD3,\n\tvertex_texCoord4: SEMANTIC_TEXCOORD4,\n\tvertex_texCoord5: SEMANTIC_TEXCOORD5,\n\tvertex_texCoord6: SEMANTIC_TEXCOORD6,\n\tvertex_texCoord7: SEMANTIC_TEXCOORD7,\n\tvertex_color: SEMANTIC_COLOR,\n\tvertex_boneIndices: SEMANTIC_BLENDINDICES,\n\tvertex_boneWeights: SEMANTIC_BLENDWEIGHT\n};\nclass ShaderUtils {\n\tstatic createDefinition(device, options) {\n\t\tvar _options$name, _options$attributes;\n\t\tconst getDefines = (gpu, gl2, gl1, isVertex, options) => {\n\t\t\tconst deviceIntro = device.isWebGPU ? gpu : device.isWebGL2 ? gl2 : ShaderUtils.gl1Extensions(device, options) + gl1;\n\t\t\tlet attachmentsDefine = '';\n\t\t\tif (!isVertex) {\n\t\t\t\tvar _options$fragmentOutp;\n\t\t\t\tlet fragmentOutputTypes = (_options$fragmentOutp = options.fragmentOutputTypes) != null ? _options$fragmentOutp : 'vec4';\n\t\t\t\tif (!Array.isArray(fragmentOutputTypes)) {\n\t\t\t\t\tfragmentOutputTypes = [fragmentOutputTypes];\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < device.maxColorAttachments; i++) {\n\t\t\t\t\tvar _fragmentOutputTypes$;\n\t\t\t\t\tattachmentsDefine += `#define COLOR_ATTACHMENT_${i}\\n`;\n\t\t\t\t\tconst outType = (_fragmentOutputTypes$ = fragmentOutputTypes[i]) != null ? _fragmentOutputTypes$ : 'vec4';\n\t\t\t\t\tattachmentsDefine += `#define outType_${i} ${outType}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn attachmentsDefine + deviceIntro;\n\t\t};\n\t\tconst name = (_options$name = options.name) != null ? _options$name : 'Untitled';\n\t\tconst vertCode = ShaderUtils.versionCode(device) + getDefines(webgpuVS, gles3VS, gles2VS, true, options) + ShaderUtils.getDefinesCode(options.vertexDefines) + sharedFS + ShaderUtils.getShaderNameCode(name) + options.vertexCode;\n\t\tconst fragCode = (options.fragmentPreamble || '') + ShaderUtils.versionCode(device) + getDefines(webgpuPS, gles3PS, gles2PS, false, options) + ShaderUtils.getDefinesCode(options.fragmentDefines) + ShaderUtils.precisionCode(device) + '\\n' + sharedFS + ShaderUtils.getShaderNameCode(name) + (options.fragmentCode || ShaderUtils.dummyFragmentCode());\n\t\tconst attribs = (_options$attributes = options.attributes) != null ? _options$attributes : ShaderUtils.collectAttributes(options.vertexCode);\n\t\treturn {\n\t\t\tname: name,\n\t\t\tattributes: attribs,\n\t\t\tvshader: vertCode,\n\t\t\tvincludes: options.vertexIncludes,\n\t\t\tfincludes: options.fragmentIncludes,\n\t\t\tfshader: fragCode,\n\t\t\tuseTransformFeedback: options.useTransformFeedback\n\t\t};\n\t}\n\tstatic getDefinesCode(defines) {\n\t\tlet code = '';\n\t\tdefines == null || defines.forEach((value, key) => {\n\t\t\tcode += `#define ${key} ${value}\\n`;\n\t\t});\n\t\treturn code;\n\t}\n\tstatic getShaderNameCode(name) {\n\t\treturn `#define SHADER_NAME ${name}\\n`;\n\t}\n\tstatic gl1Extensions(device, options, isVertex) {\n\t\tlet code;\n\t\tif (isVertex) {\n\t\t\tcode = options.vertexExtensions ? `${options.vertexExtensions}\\n` : '';\n\t\t} else {\n\t\t\tcode = options.fragmentExtensions ? `${options.fragmentExtensions}\\n` : '';\n\t\t\tif (device.extStandardDerivatives) {\n\t\t\t\tcode += \"#extension GL_OES_standard_derivatives : enable\\n\";\n\t\t\t}\n\t\t\tif (device.extTextureLod) {\n\t\t\t\tcode += \"#extension GL_EXT_shader_texture_lod : enable\\n\";\n\t\t\t\tcode += \"#define SUPPORTS_TEXLOD\\n\";\n\t\t\t}\n\t\t\tif (device.extDrawBuffers) {\n\t\t\t\tcode += \"#extension GL_EXT_draw_buffers : require\\n\";\n\t\t\t\tcode += \"#define SUPPORTS_MRT\\n\";\n\t\t\t}\n\t\t}\n\t\treturn code;\n\t}\n\tstatic dummyFragmentCode() {\n\t\treturn \"void main(void) {gl_FragColor = vec4(0.0);}\";\n\t}\n\tstatic versionCode(device) {\n\t\tif (device.isWebGPU) {\n\t\t\treturn '#version 450\\n';\n\t\t}\n\t\treturn device.isWebGL2 ? \"#version 300 es\\n\" : \"\";\n\t}\n\tstatic precisionCode(device, forcePrecision) {\n\t\tlet code = '';\n\t\tif (forcePrecision && forcePrecision !== 'highp' && forcePrecision !== 'mediump' && forcePrecision !== 'lowp') {\n\t\t\tforcePrecision = null;\n\t\t}\n\t\tif (forcePrecision) {\n\t\t\tif (forcePrecision === 'highp' && device.maxPrecision !== 'highp') {\n\t\t\t\tforcePrecision = 'mediump';\n\t\t\t}\n\t\t\tif (forcePrecision === 'mediump' && device.maxPrecision === 'lowp') {\n\t\t\t\tforcePrecision = 'lowp';\n\t\t\t}\n\t\t}\n\t\tconst precision = forcePrecision ? forcePrecision : device.precision;\n\t\tif (!device.isWebGPU) {\n\t\t\tcode = `precision ${precision} float;\\nprecision ${precision} int;`;\n\t\t\tif (device.isWebGL2) {\n\t\t\t\tcode += `precision ${precision} sampler2DShadow;\\n`;\n\t\t\t}\n\t\t} else {\n\t\t\tcode = `precision ${precision} float;\\nprecision ${precision} int;\\n`;\n\t\t}\n\t\treturn code;\n\t}\n\tstatic collectAttributes(vsCode) {\n\t\tconst attribs = {};\n\t\tlet attrs = 0;\n\t\tlet found = vsCode.indexOf(\"attribute\");\n\t\twhile (found >= 0) {\n\t\t\tif (found > 0 && vsCode[found - 1] === \"/\") break;\n\t\t\tconst endOfLine = vsCode.indexOf(';', found);\n\t\t\tconst startOfAttribName = vsCode.lastIndexOf(' ', endOfLine);\n\t\t\tconst attribName = vsCode.substring(startOfAttribName + 1, endOfLine);\n\t\t\tif (attribs[attribName]) ; else {\n\t\t\t\tconst semantic = _attrib2Semantic[attribName];\n\t\t\t\tif (semantic !== undefined) {\n\t\t\t\t\tattribs[attribName] = semantic;\n\t\t\t\t} else {\n\t\t\t\t\tattribs[attribName] = \"ATTR\" + attrs;\n\t\t\t\t\tattrs++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfound = vsCode.indexOf(\"attribute\", found + 1);\n\t\t}\n\t\treturn attribs;\n\t}\n}\n\nexport { ShaderUtils };\n", "import { GpuProfiler } from '../gpu-profiler.js';\n\nclass FrameQueriesInfo {\n\tconstructor() {\n\t\tthis.renderVersion = void 0;\n\t\tthis.queries = [];\n\t}\n\tdestroy(gl) {\n\t\tthis.queries.forEach(query => gl.deleteQuery(query));\n\t\tthis.queries = null;\n\t}\n}\nclass WebglGpuProfiler extends GpuProfiler {\n\tconstructor(device) {\n\t\tsuper();\n\t\tthis.device = void 0;\n\t\tthis.freeQueries = [];\n\t\tthis.frameQueries = [];\n\t\tthis.previousFrameQueries = [];\n\t\tthis.timings = [];\n\t\tthis.device = device;\n\t\tthis.ext = device.extDisjointTimerQuery;\n\t}\n\tdestroy() {\n\t\tthis.freeQueries.forEach(query => this.device.gl.deleteQuery(query));\n\t\tthis.frameQueries.forEach(query => this.device.gl.deleteQuery(query));\n\t\tthis.previousFrameQueries.forEach(frameQueriesInfo => frameQueriesInfo.destroy(this.device.gl));\n\t\tthis.freeQueries = null;\n\t\tthis.frameQueries = null;\n\t\tthis.previousFrameQueries = null;\n\t}\n\tloseContext() {\n\t\tsuper.loseContext();\n\t\tthis.freeQueries = [];\n\t\tthis.frameQueries = [];\n\t\tthis.previousFrameQueries = [];\n\t}\n\trestoreContext() {\n\t\tthis.ext = this.device.extDisjointTimerQuery;\n\t}\n\tgetQuery() {\n\t\tvar _this$freeQueries$pop;\n\t\treturn (_this$freeQueries$pop = this.freeQueries.pop()) != null ? _this$freeQueries$pop : this.device.gl.createQuery();\n\t}\n\tstart(name) {\n\t\tif (this.ext) {\n\t\t\tconst slot = this.getSlot(name);\n\t\t\tconst query = this.getQuery();\n\t\t\tthis.frameQueries[slot] = query;\n\t\t\tthis.device.gl.beginQuery(this.ext.TIME_ELAPSED_EXT, query);\n\t\t\treturn slot;\n\t\t}\n\t\treturn undefined;\n\t}\n\tend(slot) {\n\t\tif (slot !== undefined) {\n\t\t\tthis.device.gl.endQuery(this.ext.TIME_ELAPSED_EXT);\n\t\t}\n\t}\n\tframeStart() {\n\t\tthis.processEnableRequest();\n\t\tif (this._enabled) {\n\t\t\tthis.frameGPUMarkerSlot = this.start('GpuFrame');\n\t\t}\n\t}\n\tframeEnd() {\n\t\tif (this._enabled) {\n\t\t\tthis.end(this.frameGPUMarkerSlot);\n\t\t}\n\t}\n\trequest() {\n\t\tif (this._enabled) {\n\t\t\tconst ext = this.ext;\n\t\t\tconst gl = this.device.gl;\n\t\t\tconst renderVersion = this.device.renderVersion;\n\t\t\tconst frameQueries = this.frameQueries;\n\t\t\tif (frameQueries.length > 0) {\n\t\t\t\tthis.frameQueries = [];\n\t\t\t\tconst frameQueriesInfo = new FrameQueriesInfo();\n\t\t\t\tframeQueriesInfo.queries = frameQueries;\n\t\t\t\tframeQueriesInfo.renderVersion = renderVersion;\n\t\t\t\tthis.previousFrameQueries.push(frameQueriesInfo);\n\t\t\t}\n\t\t\tif (this.previousFrameQueries.length > 0) {\n\t\t\t\tconst previousQueriesInfo = this.previousFrameQueries[0];\n\t\t\t\tconst previousQueries = previousQueriesInfo.queries;\n\t\t\t\tconst lastQuery = previousQueries[previousQueries.length - 1];\n\t\t\t\tconst available = gl.getQueryParameter(lastQuery, gl.QUERY_RESULT_AVAILABLE);\n\t\t\t\tconst disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);\n\t\t\t\tif (available && !disjoint) {\n\t\t\t\t\tthis.previousFrameQueries.shift();\n\t\t\t\t\tconst timings = this.timings;\n\t\t\t\t\ttimings.length = 0;\n\t\t\t\t\tfor (let i = 0; i < previousQueries.length; i++) {\n\t\t\t\t\t\tconst query = previousQueries[i];\n\t\t\t\t\t\tconst duration = gl.getQueryParameter(query, gl.QUERY_RESULT);\n\t\t\t\t\t\ttimings[i] = duration * 0.000001;\n\t\t\t\t\t\tthis.freeQueries.push(query);\n\t\t\t\t\t}\n\t\t\t\t\tthis.report(previousQueriesInfo.renderVersion, timings);\n\t\t\t\t}\n\t\t\t\tif (disjoint) {\n\t\t\t\t\tthis.previousFrameQueries.forEach(frameQueriesInfo => {\n\t\t\t\t\t\tthis.report(frameQueriesInfo.renderVersion, null);\n\t\t\t\t\t\tframeQueriesInfo.destroy(gl);\n\t\t\t\t\t});\n\t\t\t\t\tthis.previousFrameQueries.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsuper.request(renderVersion);\n\t\t}\n\t}\n}\n\nexport { WebglGpuProfiler };\n", "import { math } from '../../../core/math/math.js';\nimport { platform } from '../../../core/platform.js';\nimport { Color } from '../../../core/math/color.js';\nimport { DEVICETYPE_WEBGL2, DEVICETYPE_WEBGL1, UNIFORMTYPE_BOOL, UNIFORMTYPE_INT, UNIFORMTYPE_FLOAT, UNIFORMTYPE_VEC2, UNIFORMTYPE_VEC3, UNIFORMTYPE_VEC4, UNIFORMTYPE_IVEC2, UNIFORMTYPE_IVEC3, UNIFORMTYPE_IVEC4, UNIFORMTYPE_BVEC2, UNIFORMTYPE_BVEC3, UNIFORMTYPE_BVEC4, UNIFORMTYPE_MAT2, UNIFORMTYPE_MAT3, UNIFORMTYPE_MAT4, UNIFORMTYPE_TEXTURE2D, UNIFORMTYPE_TEXTURECUBE, UNIFORMTYPE_UINT, UNIFORMTYPE_UVEC2, UNIFORMTYPE_UVEC3, UNIFORMTYPE_UVEC4, UNIFORMTYPE_TEXTURE2D_SHADOW, UNIFORMTYPE_TEXTURECUBE_SHADOW, UNIFORMTYPE_TEXTURE2D_ARRAY, UNIFORMTYPE_TEXTURE3D, UNIFORMTYPE_ITEXTURE2D, UNIFORMTYPE_UTEXTURE2D, UNIFORMTYPE_ITEXTURECUBE, UNIFORMTYPE_UTEXTURECUBE, UNIFORMTYPE_ITEXTURE3D, UNIFORMTYPE_UTEXTURE3D, UNIFORMTYPE_ITEXTURE2D_ARRAY, UNIFORMTYPE_UTEXTURE2D_ARRAY, UNIFORMTYPE_FLOATARRAY, UNIFORMTYPE_VEC2ARRAY, UNIFORMTYPE_VEC3ARRAY, UNIFORMTYPE_VEC4ARRAY, UNIFORMTYPE_INTARRAY, UNIFORMTYPE_UINTARRAY, UNIFORMTYPE_BOOLARRAY, UNIFORMTYPE_IVEC2ARRAY, UNIFORMTYPE_UVEC2ARRAY, UNIFORMTYPE_BVEC2ARRAY, UNIFORMTYPE_IVEC3ARRAY, UNIFORMTYPE_UVEC3ARRAY, UNIFORMTYPE_BVEC3ARRAY, UNIFORMTYPE_IVEC4ARRAY, UNIFORMTYPE_UVEC4ARRAY, UNIFORMTYPE_BVEC4ARRAY, UNIFORMTYPE_MAT4ARRAY, PIXELFORMAT_RGBA8, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGB8, FUNC_ALWAYS, STENCILOP_KEEP, ADDRESS_CLAMP_TO_EDGE, semanticToLocation, CLEARFLAG_COLOR, CLEARFLAG_DEPTH, CLEARFLAG_STENCIL, CULLFACE_NONE, PRIMITIVE_TRISTRIP, FILTER_NEAREST_MIPMAP_NEAREST, FILTER_NEAREST_MIPMAP_LINEAR, FILTER_NEAREST, FILTER_LINEAR_MIPMAP_NEAREST, FILTER_LINEAR_MIPMAP_LINEAR, FILTER_LINEAR } from '../constants.js';\nimport { GraphicsDevice } from '../graphics-device.js';\nimport { RenderTarget } from '../render-target.js';\nimport { Texture } from '../texture.js';\nimport { WebglVertexBuffer } from './webgl-vertex-buffer.js';\nimport { WebglIndexBuffer } from './webgl-index-buffer.js';\nimport { WebglShader } from './webgl-shader.js';\nimport { WebglTexture } from './webgl-texture.js';\nimport { WebglRenderTarget } from './webgl-render-target.js';\nimport { ShaderUtils } from '../shader-utils.js';\nimport { Shader } from '../shader.js';\nimport { BlendState } from '../blend-state.js';\nimport { DepthState } from '../depth-state.js';\nimport { StencilParameters } from '../stencil-parameters.js';\nimport { WebglGpuProfiler } from './webgl-gpu-profiler.js';\n\nconst invalidateAttachments = [];\nconst _fullScreenQuadVS = `\nattribute vec2 vertex_position;\nvarying vec2 vUv0;\nvoid main(void)\n{\n\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\tvUv0 = vertex_position.xy*0.5+0.5;\n}\n`;\nconst _precisionTest1PS = `\nvoid main(void) { \n\tgl_FragColor = vec4(2147483648.0);\n}\n`;\nconst _precisionTest2PS = `\nuniform sampler2D source;\nvec4 packFloat(float depth) {\n\tconst vec4 bit_shift = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0);\n\tconst vec4 bit_mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\n\tvec4 res = mod(depth * bit_shift * vec4(255), vec4(256) ) / vec4(255);\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main(void) {\n\tfloat c = texture2D(source, vec2(0.0)).r;\n\tfloat diff = abs(c - 2147483648.0) / 2147483648.0;\n\tgl_FragColor = packFloat(diff);\n}\n`;\nconst _outputTexture2D = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nvoid main(void) {\n\tgl_FragColor = texture2D(source, vUv0);\n}\n`;\nfunction quadWithShader(device, target, shader) {\n\tconst oldRt = device.renderTarget;\n\tdevice.setRenderTarget(target);\n\tdevice.updateBegin();\n\tdevice.setCullMode(CULLFACE_NONE);\n\tdevice.setBlendState(BlendState.NOBLEND);\n\tdevice.setDepthState(DepthState.NODEPTH);\n\tdevice.setStencilState(null, null);\n\tdevice.setVertexBuffer(device.quadVertexBuffer, 0);\n\tdevice.setShader(shader);\n\tdevice.draw({\n\t\ttype: PRIMITIVE_TRISTRIP,\n\t\tbase: 0,\n\t\tcount: 4,\n\t\tindexed: false\n\t});\n\tdevice.updateEnd();\n\tdevice.setRenderTarget(oldRt);\n\tdevice.updateBegin();\n}\nfunction testRenderable(gl, pixelFormat) {\n\tlet result = true;\n\tconst texture = gl.createTexture();\n\tgl.bindTexture(gl.TEXTURE_2D, texture);\n\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\tgl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 2, 2, 0, gl.RGBA, pixelFormat, null);\n\tconst framebuffer = gl.createFramebuffer();\n\tgl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n\tgl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\tif (gl.checkFramebufferStatus(gl.FRAMEBUFFER) !== gl.FRAMEBUFFER_COMPLETE) {\n\t\tresult = false;\n\t}\n\tgl.bindTexture(gl.TEXTURE_2D, null);\n\tgl.deleteTexture(texture);\n\tgl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\tgl.deleteFramebuffer(framebuffer);\n\treturn result;\n}\nfunction testTextureHalfFloatUpdatable(gl, pixelFormat) {\n\tlet result = true;\n\tconst texture = gl.createTexture();\n\tgl.bindTexture(gl.TEXTURE_2D, texture);\n\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\tconst data = new Uint16Array(4 * 2 * 2);\n\tgl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 2, 2, 0, gl.RGBA, pixelFormat, data);\n\tif (gl.getError() !== gl.NO_ERROR) {\n\t\tresult = false;\n\t\tconsole.log(\"Above error related to HALF_FLOAT_OES can be ignored, it was triggered by testing half float texture support\");\n\t}\n\tgl.bindTexture(gl.TEXTURE_2D, null);\n\tgl.deleteTexture(texture);\n\treturn result;\n}\nfunction testTextureFloatHighPrecision(device) {\n\tif (!device.textureFloatRenderable) return false;\n\tconst shader1 = new Shader(device, ShaderUtils.createDefinition(device, {\n\t\tname: 'ptest1',\n\t\tvertexCode: _fullScreenQuadVS,\n\t\tfragmentCode: _precisionTest1PS\n\t}));\n\tconst shader2 = new Shader(device, ShaderUtils.createDefinition(device, {\n\t\tname: 'ptest2',\n\t\tvertexCode: _fullScreenQuadVS,\n\t\tfragmentCode: _precisionTest2PS\n\t}));\n\tconst textureOptions = {\n\t\tformat: PIXELFORMAT_RGBA32F,\n\t\twidth: 1,\n\t\theight: 1,\n\t\tmipmaps: false,\n\t\tminFilter: FILTER_NEAREST,\n\t\tmagFilter: FILTER_NEAREST,\n\t\tname: 'testFHP'\n\t};\n\tconst tex1 = new Texture(device, textureOptions);\n\tconst targ1 = new RenderTarget({\n\t\tcolorBuffer: tex1,\n\t\tdepth: false\n\t});\n\tquadWithShader(device, targ1, shader1);\n\ttextureOptions.format = PIXELFORMAT_RGBA8;\n\tconst tex2 = new Texture(device, textureOptions);\n\tconst targ2 = new RenderTarget({\n\t\tcolorBuffer: tex2,\n\t\tdepth: false\n\t});\n\tdevice.constantTexSource.setValue(tex1);\n\tquadWithShader(device, targ2, shader2);\n\tconst prevFramebuffer = device.activeFramebuffer;\n\tdevice.setFramebuffer(targ2.impl._glFrameBuffer);\n\tconst pixels = new Uint8Array(4);\n\tdevice.readPixels(0, 0, 1, 1, pixels);\n\tdevice.setFramebuffer(prevFramebuffer);\n\tconst x = pixels[0] / 255;\n\tconst y = pixels[1] / 255;\n\tconst z = pixels[2] / 255;\n\tconst w = pixels[3] / 255;\n\tconst f = x / (256 * 256 * 256) + y / (256 * 256) + z / 256 + w;\n\ttex1.destroy();\n\ttarg1.destroy();\n\ttex2.destroy();\n\ttarg2.destroy();\n\tshader1.destroy();\n\tshader2.destroy();\n\treturn f === 0;\n}\nclass WebglGraphicsDevice extends GraphicsDevice {\n\tconstructor(canvas, options = {}) {\n\t\tvar _options$antialias;\n\t\tsuper(canvas, options);\n\t\tthis.gl = void 0;\n\t\tthis._defaultFramebuffer = null;\n\t\tthis._defaultFramebufferChanged = false;\n\t\toptions = this.initOptions;\n\t\tthis.updateClientRect();\n\t\tthis.initTextureUnits();\n\t\tthis.contextLost = false;\n\t\tthis._contextLostHandler = event => {\n\t\t\tevent.preventDefault();\n\t\t\tthis.loseContext();\n\t\t\tthis.fire('devicelost');\n\t\t};\n\t\tthis._contextRestoredHandler = () => {\n\t\t\tthis.restoreContext();\n\t\t\tthis.fire('devicerestored');\n\t\t};\n\t\tconst ua = typeof navigator !== 'undefined' && navigator.userAgent;\n\t\tthis.forceDisableMultisampling = ua && ua.includes('AppleWebKit') && (ua.includes('15.4') || ua.includes('15_4'));\n\t\tif (this.forceDisableMultisampling) {\n\t\t\toptions.antialias = false;\n\t\t}\n\t\tif (platform.browserName === 'firefox' && platform.name === 'windows') {\n\t\t\tconst _ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n\t\t\tconst match = _ua.match(/Firefox\\/(\\d+(\\.\\d+)*)/);\n\t\t\tconst firefoxVersion = match ? match[1] : null;\n\t\t\tif (firefoxVersion) {\n\t\t\t\tconst version = parseFloat(firefoxVersion);\n\t\t\t\tif (version >= 120 || version === 115) {\n\t\t\t\t\toptions.antialias = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tlet gl = null;\n\t\tthis.backBufferAntialias = (_options$antialias = options.antialias) != null ? _options$antialias : false;\n\t\toptions.antialias = false;\n\t\tif (options.gl) {\n\t\t\tgl = options.gl;\n\t\t} else {\n\t\t\tconst preferWebGl2 = options.preferWebGl2 !== undefined ? options.preferWebGl2 : true;\n\t\t\tconst names = preferWebGl2 ? [\"webgl2\", \"webgl\", \"experimental-webgl\"] : [\"webgl\", \"experimental-webgl\"];\n\t\t\tfor (let i = 0; i < names.length; i++) {\n\t\t\t\tgl = canvas.getContext(names[i], options);\n\t\t\t\tif (gl) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!gl) {\n\t\t\tthrow new Error(\"WebGL not supported\");\n\t\t}\n\t\tthis.gl = gl;\n\t\tthis.isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;\n\t\tthis.isWebGL1 = !this.isWebGL2;\n\t\tthis._deviceType = this.isWebGL2 ? DEVICETYPE_WEBGL2 : DEVICETYPE_WEBGL1;\n\t\tthis.updateBackbufferFormat(null);\n\t\tconst isChrome = platform.browserName === 'chrome';\n\t\tconst isSafari = platform.browserName === 'safari';\n\t\tconst isMac = platform.browser && navigator.appVersion.indexOf(\"Mac\") !== -1;\n\t\tthis._tempEnableSafariTextureUnitWorkaround = isSafari;\n\t\tthis._tempMacChromeBlitFramebufferWorkaround = isMac && isChrome && !options.alpha;\n\t\tcanvas.addEventListener(\"webglcontextlost\", this._contextLostHandler, false);\n\t\tcanvas.addEventListener(\"webglcontextrestored\", this._contextRestoredHandler, false);\n\t\tthis.initializeExtensions();\n\t\tthis.initializeCapabilities();\n\t\tthis.initializeRenderState();\n\t\tthis.initializeContextCaches();\n\t\tthis.createBackbuffer(null);\n\t\tthis.supportsImageBitmap = !isSafari && typeof ImageBitmap !== 'undefined';\n\t\tthis._samplerTypes = new Set([...[gl.SAMPLER_2D, gl.SAMPLER_CUBE], ...(this.isWebGL2 ? [gl.UNSIGNED_INT_SAMPLER_2D, gl.INT_SAMPLER_2D, gl.SAMPLER_2D_SHADOW, gl.SAMPLER_CUBE_SHADOW, gl.SAMPLER_3D, gl.INT_SAMPLER_3D, gl.UNSIGNED_INT_SAMPLER_3D, gl.SAMPLER_2D_ARRAY, gl.INT_SAMPLER_2D_ARRAY, gl.UNSIGNED_INT_SAMPLER_2D_ARRAY] : [])]);\n\t\tthis.glAddress = [gl.REPEAT, gl.CLAMP_TO_EDGE, gl.MIRRORED_REPEAT];\n\t\tthis.glBlendEquation = [gl.FUNC_ADD, gl.FUNC_SUBTRACT, gl.FUNC_REVERSE_SUBTRACT, this.isWebGL2 ? gl.MIN : this.extBlendMinmax ? this.extBlendMinmax.MIN_EXT : gl.FUNC_ADD, this.isWebGL2 ? gl.MAX : this.extBlendMinmax ? this.extBlendMinmax.MAX_EXT : gl.FUNC_ADD];\n\t\tthis.glBlendFunctionColor = [gl.ZERO, gl.ONE, gl.SRC_COLOR, gl.ONE_MINUS_SRC_COLOR, gl.DST_COLOR, gl.ONE_MINUS_DST_COLOR, gl.SRC_ALPHA, gl.SRC_ALPHA_SATURATE, gl.ONE_MINUS_SRC_ALPHA, gl.DST_ALPHA, gl.ONE_MINUS_DST_ALPHA, gl.CONSTANT_COLOR, gl.ONE_MINUS_CONSTANT_COLOR];\n\t\tthis.glBlendFunctionAlpha = [gl.ZERO, gl.ONE, gl.SRC_COLOR, gl.ONE_MINUS_SRC_COLOR, gl.DST_COLOR, gl.ONE_MINUS_DST_COLOR, gl.SRC_ALPHA, gl.SRC_ALPHA_SATURATE, gl.ONE_MINUS_SRC_ALPHA, gl.DST_ALPHA, gl.ONE_MINUS_DST_ALPHA, gl.CONSTANT_ALPHA, gl.ONE_MINUS_CONSTANT_ALPHA];\n\t\tthis.glComparison = [gl.NEVER, gl.LESS, gl.EQUAL, gl.LEQUAL, gl.GREATER, gl.NOTEQUAL, gl.GEQUAL, gl.ALWAYS];\n\t\tthis.glStencilOp = [gl.KEEP, gl.ZERO, gl.REPLACE, gl.INCR, gl.INCR_WRAP, gl.DECR, gl.DECR_WRAP, gl.INVERT];\n\t\tthis.glClearFlag = [0, gl.COLOR_BUFFER_BIT, gl.DEPTH_BUFFER_BIT, gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT, gl.STENCIL_BUFFER_BIT, gl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT, gl.STENCIL_BUFFER_BIT | gl.DEPTH_BUFFER_BIT, gl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT];\n\t\tthis.glCull = [0, gl.BACK, gl.FRONT, gl.FRONT_AND_BACK];\n\t\tthis.glFilter = [gl.NEAREST, gl.LINEAR, gl.NEAREST_MIPMAP_NEAREST, gl.NEAREST_MIPMAP_LINEAR, gl.LINEAR_MIPMAP_NEAREST, gl.LINEAR_MIPMAP_LINEAR];\n\t\tthis.glPrimitive = [gl.POINTS, gl.LINES, gl.LINE_LOOP, gl.LINE_STRIP, gl.TRIANGLES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN];\n\t\tthis.glType = [gl.BYTE, gl.UNSIGNED_BYTE, gl.SHORT, gl.UNSIGNED_SHORT, gl.INT, gl.UNSIGNED_INT, gl.FLOAT, gl.HALF_FLOAT];\n\t\tthis.pcUniformType = {};\n\t\tthis.pcUniformType[gl.BOOL] = UNIFORMTYPE_BOOL;\n\t\tthis.pcUniformType[gl.INT] = UNIFORMTYPE_INT;\n\t\tthis.pcUniformType[gl.FLOAT] = UNIFORMTYPE_FLOAT;\n\t\tthis.pcUniformType[gl.FLOAT_VEC2] = UNIFORMTYPE_VEC2;\n\t\tthis.pcUniformType[gl.FLOAT_VEC3] = UNIFORMTYPE_VEC3;\n\t\tthis.pcUniformType[gl.FLOAT_VEC4] = UNIFORMTYPE_VEC4;\n\t\tthis.pcUniformType[gl.INT_VEC2] = UNIFORMTYPE_IVEC2;\n\t\tthis.pcUniformType[gl.INT_VEC3] = UNIFORMTYPE_IVEC3;\n\t\tthis.pcUniformType[gl.INT_VEC4] = UNIFORMTYPE_IVEC4;\n\t\tthis.pcUniformType[gl.BOOL_VEC2] = UNIFORMTYPE_BVEC2;\n\t\tthis.pcUniformType[gl.BOOL_VEC3] = UNIFORMTYPE_BVEC3;\n\t\tthis.pcUniformType[gl.BOOL_VEC4] = UNIFORMTYPE_BVEC4;\n\t\tthis.pcUniformType[gl.FLOAT_MAT2] = UNIFORMTYPE_MAT2;\n\t\tthis.pcUniformType[gl.FLOAT_MAT3] = UNIFORMTYPE_MAT3;\n\t\tthis.pcUniformType[gl.FLOAT_MAT4] = UNIFORMTYPE_MAT4;\n\t\tthis.pcUniformType[gl.SAMPLER_2D] = UNIFORMTYPE_TEXTURE2D;\n\t\tthis.pcUniformType[gl.SAMPLER_CUBE] = UNIFORMTYPE_TEXTURECUBE;\n\t\tthis.pcUniformType[gl.UNSIGNED_INT] = UNIFORMTYPE_UINT;\n\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC2] = UNIFORMTYPE_UVEC2;\n\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC3] = UNIFORMTYPE_UVEC3;\n\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC4] = UNIFORMTYPE_UVEC4;\n\t\tif (this.isWebGL2) {\n\t\t\tthis.pcUniformType[gl.SAMPLER_2D_SHADOW] = UNIFORMTYPE_TEXTURE2D_SHADOW;\n\t\t\tthis.pcUniformType[gl.SAMPLER_CUBE_SHADOW] = UNIFORMTYPE_TEXTURECUBE_SHADOW;\n\t\t\tthis.pcUniformType[gl.SAMPLER_2D_ARRAY] = UNIFORMTYPE_TEXTURE2D_ARRAY;\n\t\t\tthis.pcUniformType[gl.SAMPLER_3D] = UNIFORMTYPE_TEXTURE3D;\n\t\t\tthis.pcUniformType[gl.INT_SAMPLER_2D] = UNIFORMTYPE_ITEXTURE2D;\n\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D] = UNIFORMTYPE_UTEXTURE2D;\n\t\t\tthis.pcUniformType[gl.INT_SAMPLER_CUBE] = UNIFORMTYPE_ITEXTURECUBE;\n\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D] = UNIFORMTYPE_UTEXTURECUBE;\n\t\t\tthis.pcUniformType[gl.INT_SAMPLER_3D] = UNIFORMTYPE_ITEXTURE3D;\n\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_3D] = UNIFORMTYPE_UTEXTURE3D;\n\t\t\tthis.pcUniformType[gl.INT_SAMPLER_2D_ARRAY] = UNIFORMTYPE_ITEXTURE2D_ARRAY;\n\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D_ARRAY] = UNIFORMTYPE_UTEXTURE2D_ARRAY;\n\t\t}\n\t\tthis.targetToSlot = {};\n\t\tthis.targetToSlot[gl.TEXTURE_2D] = 0;\n\t\tthis.targetToSlot[gl.TEXTURE_CUBE_MAP] = 1;\n\t\tthis.targetToSlot[gl.TEXTURE_3D] = 2;\n\t\tlet scopeX, scopeY, scopeZ, scopeW;\n\t\tlet uniformValue;\n\t\tthis.commitFunction = [];\n\t\tthis.commitFunction[UNIFORMTYPE_BOOL] = function (uniform, value) {\n\t\t\tif (uniform.value !== value) {\n\t\t\t\tgl.uniform1i(uniform.locationId, value);\n\t\t\t\tuniform.value = value;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_INT] = this.commitFunction[UNIFORMTYPE_BOOL];\n\t\tthis.commitFunction[UNIFORMTYPE_FLOAT] = function (uniform, value) {\n\t\t\tif (uniform.value !== value) {\n\t\t\t\tgl.uniform1f(uniform.locationId, value);\n\t\t\t\tuniform.value = value;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_VEC2] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\tgl.uniform2fv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_VEC3] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tscopeZ = value[2];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\tgl.uniform3fv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_VEC4] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tscopeZ = value[2];\n\t\t\tscopeW = value[3];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\tgl.uniform4fv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_IVEC2] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\tgl.uniform2iv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_BVEC2] = this.commitFunction[UNIFORMTYPE_IVEC2];\n\t\tthis.commitFunction[UNIFORMTYPE_IVEC3] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tscopeZ = value[2];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\tgl.uniform3iv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_BVEC3] = this.commitFunction[UNIFORMTYPE_IVEC3];\n\t\tthis.commitFunction[UNIFORMTYPE_IVEC4] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tscopeZ = value[2];\n\t\t\tscopeW = value[3];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\tgl.uniform4iv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_BVEC4] = this.commitFunction[UNIFORMTYPE_IVEC4];\n\t\tthis.commitFunction[UNIFORMTYPE_MAT2] = function (uniform, value) {\n\t\t\tgl.uniformMatrix2fv(uniform.locationId, false, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_MAT3] = function (uniform, value) {\n\t\t\tgl.uniformMatrix3fv(uniform.locationId, false, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_MAT4] = function (uniform, value) {\n\t\t\tgl.uniformMatrix4fv(uniform.locationId, false, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_FLOATARRAY] = function (uniform, value) {\n\t\t\tgl.uniform1fv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_VEC2ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform2fv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_VEC3ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform3fv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_VEC4ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform4fv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_UINT] = function (uniform, value) {\n\t\t\tif (uniform.value !== value) {\n\t\t\t\tgl.uniform1ui(uniform.locationId, value);\n\t\t\t\tuniform.value = value;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_UVEC2] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\tgl.uniform2uiv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_UVEC3] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tscopeZ = value[2];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\tgl.uniform3uiv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_UVEC4] = function (uniform, value) {\n\t\t\tuniformValue = uniform.value;\n\t\t\tscopeX = value[0];\n\t\t\tscopeY = value[1];\n\t\t\tscopeZ = value[2];\n\t\t\tscopeW = value[3];\n\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\tgl.uniform4uiv(uniform.locationId, value);\n\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t}\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_INTARRAY] = function (uniform, value) {\n\t\t\tgl.uniform1iv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_UINTARRAY] = function (uniform, value) {\n\t\t\tgl.uniform1uiv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_BOOLARRAY] = this.commitFunction[UNIFORMTYPE_INTARRAY];\n\t\tthis.commitFunction[UNIFORMTYPE_IVEC2ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform2iv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_UVEC2ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform2uiv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_BVEC2ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC2ARRAY];\n\t\tthis.commitFunction[UNIFORMTYPE_IVEC3ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform3iv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_UVEC3ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform3uiv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_BVEC3ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC3ARRAY];\n\t\tthis.commitFunction[UNIFORMTYPE_IVEC4ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform4iv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_UVEC4ARRAY] = function (uniform, value) {\n\t\t\tgl.uniform4uiv(uniform.locationId, value);\n\t\t};\n\t\tthis.commitFunction[UNIFORMTYPE_BVEC4ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC4ARRAY];\n\t\tthis.commitFunction[UNIFORMTYPE_MAT4ARRAY] = function (uniform, value) {\n\t\t\tgl.uniformMatrix4fv(uniform.locationId, false, value);\n\t\t};\n\t\tthis.supportsBoneTextures = this.extTextureFloat && this.maxVertexTextures > 0;\n\t\tlet numUniforms = this.vertexUniformsCount;\n\t\tnumUniforms -= 4 * 4;\n\t\tnumUniforms -= 8;\n\t\tnumUniforms -= 1;\n\t\tnumUniforms -= 4 * 4;\n\t\tthis.boneLimit = Math.floor(numUniforms / 3);\n\t\tthis.boneLimit = Math.min(this.boneLimit, 128);\n\t\tthis.constantTexSource = this.scope.resolve(\"source\");\n\t\tif (this.extTextureFloat) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tthis.textureFloatRenderable = !!this.extColorBufferFloat;\n\t\t\t} else {\n\t\t\t\tthis.textureFloatRenderable = testRenderable(gl, gl.FLOAT);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.textureFloatRenderable = false;\n\t\t}\n\t\tif (this.extColorBufferHalfFloat) {\n\t\t\tthis.textureHalfFloatRenderable = !!this.extColorBufferHalfFloat;\n\t\t} else if (this.extTextureHalfFloat) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tthis.textureHalfFloatRenderable = !!this.extColorBufferFloat;\n\t\t\t} else {\n\t\t\t\tthis.textureHalfFloatRenderable = testRenderable(gl, this.extTextureHalfFloat.HALF_FLOAT_OES);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.textureHalfFloatRenderable = false;\n\t\t}\n\t\tthis.supportsMorphTargetTexturesCore = this.maxPrecision === \"highp\" && this.maxVertexTextures >= 2;\n\t\tthis.supportsDepthShadow = this.isWebGL2;\n\t\tthis._textureFloatHighPrecision = undefined;\n\t\tthis._textureHalfFloatUpdatable = undefined;\n\t\tthis.areaLightLutFormat = PIXELFORMAT_RGBA8;\n\t\tif (this.extTextureHalfFloat && this.textureHalfFloatUpdatable && this.extTextureHalfFloatLinear) {\n\t\t\tthis.areaLightLutFormat = PIXELFORMAT_RGBA16F;\n\t\t} else if (this.extTextureFloat && this.extTextureFloatLinear) {\n\t\t\tthis.areaLightLutFormat = PIXELFORMAT_RGBA32F;\n\t\t}\n\t\tthis.postInit();\n\t}\n\tpostInit() {\n\t\tsuper.postInit();\n\t\tthis.gpuProfiler = new WebglGpuProfiler(this);\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tconst gl = this.gl;\n\t\tif (this.isWebGL2 && this.feedback) {\n\t\t\tgl.deleteTransformFeedback(this.feedback);\n\t\t}\n\t\tthis.clearVertexArrayObjectCache();\n\t\tthis.canvas.removeEventListener('webglcontextlost', this._contextLostHandler, false);\n\t\tthis.canvas.removeEventListener('webglcontextrestored', this._contextRestoredHandler, false);\n\t\tthis._contextLostHandler = null;\n\t\tthis._contextRestoredHandler = null;\n\t\tthis.gl = null;\n\t\tsuper.postDestroy();\n\t}\n\tcreateBackbuffer(frameBuffer) {\n\t\tthis.supportsStencil = this.initOptions.stencil;\n\t\tthis.backBuffer = new RenderTarget({\n\t\t\tname: 'WebglFramebuffer',\n\t\t\tgraphicsDevice: this,\n\t\t\tdepth: this.initOptions.depth,\n\t\t\tstencil: this.supportsStencil,\n\t\t\tsamples: this.samples\n\t\t});\n\t\tthis.backBuffer.impl.suppliedColorFramebuffer = frameBuffer;\n\t}\n\tupdateBackbufferFormat(framebuffer) {\n\t\tconst gl = this.gl;\n\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n\t\tconst alphaBits = this.gl.getParameter(this.gl.ALPHA_BITS);\n\t\tthis.backBufferFormat = alphaBits ? PIXELFORMAT_RGBA8 : PIXELFORMAT_RGB8;\n\t}\n\tupdateBackbuffer() {\n\t\tconst resolutionChanged = this.canvas.width !== this.backBufferSize.x || this.canvas.height !== this.backBufferSize.y;\n\t\tif (this._defaultFramebufferChanged || resolutionChanged) {\n\t\t\tif (this._defaultFramebufferChanged) {\n\t\t\t\tthis.updateBackbufferFormat(this._defaultFramebuffer);\n\t\t\t}\n\t\t\tthis._defaultFramebufferChanged = false;\n\t\t\tthis.backBufferSize.set(this.canvas.width, this.canvas.height);\n\t\t\tthis.backBuffer.destroy();\n\t\t\tthis.createBackbuffer(this._defaultFramebuffer);\n\t\t}\n\t}\n\tcreateVertexBufferImpl(vertexBuffer, format) {\n\t\treturn new WebglVertexBuffer();\n\t}\n\tcreateIndexBufferImpl(indexBuffer) {\n\t\treturn new WebglIndexBuffer(indexBuffer);\n\t}\n\tcreateShaderImpl(shader) {\n\t\treturn new WebglShader(shader);\n\t}\n\tcreateTextureImpl(texture) {\n\t\treturn new WebglTexture();\n\t}\n\tcreateRenderTargetImpl(renderTarget) {\n\t\treturn new WebglRenderTarget();\n\t}\n\tgetPrecision() {\n\t\tconst gl = this.gl;\n\t\tlet precision = \"highp\";\n\t\tif (gl.getShaderPrecisionFormat) {\n\t\t\tconst vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT);\n\t\t\tconst vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT);\n\t\t\tconst fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n\t\t\tconst fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT);\n\t\t\tif (vertexShaderPrecisionHighpFloat && vertexShaderPrecisionMediumpFloat && fragmentShaderPrecisionHighpFloat && fragmentShaderPrecisionMediumpFloat) {\n\t\t\t\tconst highpAvailable = vertexShaderPrecisionHighpFloat.precision > 0 && fragmentShaderPrecisionHighpFloat.precision > 0;\n\t\t\t\tconst mediumpAvailable = vertexShaderPrecisionMediumpFloat.precision > 0 && fragmentShaderPrecisionMediumpFloat.precision > 0;\n\t\t\t\tif (!highpAvailable) {\n\t\t\t\t\tif (mediumpAvailable) {\n\t\t\t\t\t\tprecision = \"mediump\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprecision = \"lowp\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn precision;\n\t}\n\tgetExtension() {\n\t\tfor (let i = 0; i < arguments.length; i++) {\n\t\t\tif (this.supportedExtensions.indexOf(arguments[i]) !== -1) {\n\t\t\t\treturn this.gl.getExtension(arguments[i]);\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\tget extDisjointTimerQuery() {\n\t\tif (!this._extDisjointTimerQuery) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tthis._extDisjointTimerQuery = this.getExtension('EXT_disjoint_timer_query_webgl2', 'EXT_disjoint_timer_query');\n\t\t\t}\n\t\t}\n\t\treturn this._extDisjointTimerQuery;\n\t}\n\tinitializeExtensions() {\n\t\tvar _gl$getSupportedExten;\n\t\tconst gl = this.gl;\n\t\tthis.supportedExtensions = (_gl$getSupportedExten = gl.getSupportedExtensions()) != null ? _gl$getSupportedExten : [];\n\t\tthis._extDisjointTimerQuery = null;\n\t\tif (this.isWebGL2) {\n\t\t\tthis.extBlendMinmax = true;\n\t\t\tthis.extDrawBuffers = true;\n\t\t\tthis.drawBuffers = gl.drawBuffers.bind(gl);\n\t\t\tthis.extInstancing = true;\n\t\t\tthis.extStandardDerivatives = true;\n\t\t\tthis.extTextureFloat = true;\n\t\t\tthis.extTextureHalfFloat = true;\n\t\t\tthis.textureHalfFloatFilterable = true;\n\t\t\tthis.extTextureLod = true;\n\t\t\tthis.extUintElement = true;\n\t\t\tthis.extVertexArrayObject = true;\n\t\t\tthis.extColorBufferFloat = this.getExtension('EXT_color_buffer_float');\n\t\t\tthis.extDepthTexture = true;\n\t\t\tthis.textureRG11B10Renderable = true;\n\t\t} else {\n\t\t\tvar _this$extDrawBuffers;\n\t\t\tthis.extBlendMinmax = this.getExtension(\"EXT_blend_minmax\");\n\t\t\tthis.extDrawBuffers = this.getExtension('WEBGL_draw_buffers');\n\t\t\tthis.extInstancing = this.getExtension(\"ANGLE_instanced_arrays\");\n\t\t\tthis.drawBuffers = (_this$extDrawBuffers = this.extDrawBuffers) == null ? void 0 : _this$extDrawBuffers.drawBuffersWEBGL.bind(this.extDrawBuffers);\n\t\t\tif (this.extInstancing) {\n\t\t\t\tconst ext = this.extInstancing;\n\t\t\t\tgl.drawArraysInstanced = ext.drawArraysInstancedANGLE.bind(ext);\n\t\t\t\tgl.drawElementsInstanced = ext.drawElementsInstancedANGLE.bind(ext);\n\t\t\t\tgl.vertexAttribDivisor = ext.vertexAttribDivisorANGLE.bind(ext);\n\t\t\t}\n\t\t\tthis.extStandardDerivatives = this.getExtension(\"OES_standard_derivatives\");\n\t\t\tthis.extTextureFloat = this.getExtension(\"OES_texture_float\");\n\t\t\tthis.extTextureLod = this.getExtension('EXT_shader_texture_lod');\n\t\t\tthis.extUintElement = this.getExtension(\"OES_element_index_uint\");\n\t\t\tthis.extVertexArrayObject = this.getExtension(\"OES_vertex_array_object\");\n\t\t\tif (this.extVertexArrayObject) {\n\t\t\t\tconst ext = this.extVertexArrayObject;\n\t\t\t\tgl.createVertexArray = ext.createVertexArrayOES.bind(ext);\n\t\t\t\tgl.deleteVertexArray = ext.deleteVertexArrayOES.bind(ext);\n\t\t\t\tgl.isVertexArray = ext.isVertexArrayOES.bind(ext);\n\t\t\t\tgl.bindVertexArray = ext.bindVertexArrayOES.bind(ext);\n\t\t\t}\n\t\t\tthis.extColorBufferFloat = null;\n\t\t\tthis.extDepthTexture = gl.getExtension('WEBGL_depth_texture');\n\t\t\tthis.extTextureHalfFloat = this.getExtension(\"OES_texture_half_float\");\n\t\t\tthis.extTextureHalfFloatLinear = this.getExtension(\"OES_texture_half_float_linear\");\n\t\t\tthis.textureHalfFloatFilterable = !!this.extTextureHalfFloatLinear;\n\t\t}\n\t\tthis.extDebugRendererInfo = this.getExtension('WEBGL_debug_renderer_info');\n\t\tthis.extTextureFloatLinear = this.getExtension(\"OES_texture_float_linear\");\n\t\tthis.textureFloatFilterable = !!this.extTextureFloatLinear;\n\t\tthis.extFloatBlend = this.getExtension(\"EXT_float_blend\");\n\t\tthis.extTextureFilterAnisotropic = this.getExtension('EXT_texture_filter_anisotropic', 'WEBKIT_EXT_texture_filter_anisotropic');\n\t\tthis.extCompressedTextureETC1 = this.getExtension('WEBGL_compressed_texture_etc1');\n\t\tthis.extCompressedTextureETC = this.getExtension('WEBGL_compressed_texture_etc');\n\t\tthis.extCompressedTexturePVRTC = this.getExtension('WEBGL_compressed_texture_pvrtc', 'WEBKIT_WEBGL_compressed_texture_pvrtc');\n\t\tthis.extCompressedTextureS3TC = this.getExtension('WEBGL_compressed_texture_s3tc', 'WEBKIT_WEBGL_compressed_texture_s3tc');\n\t\tthis.extCompressedTextureATC = this.getExtension('WEBGL_compressed_texture_atc');\n\t\tthis.extCompressedTextureASTC = this.getExtension('WEBGL_compressed_texture_astc');\n\t\tthis.extParallelShaderCompile = this.getExtension('KHR_parallel_shader_compile');\n\t\tthis.extColorBufferHalfFloat = this.getExtension(\"EXT_color_buffer_half_float\");\n\t}\n\tinitializeCapabilities() {\n\t\tvar _contextAttribs$antia, _contextAttribs$stenc;\n\t\tconst gl = this.gl;\n\t\tlet ext;\n\t\tconst userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : \"\";\n\t\tthis.maxPrecision = this.precision = this.getPrecision();\n\t\tconst contextAttribs = gl.getContextAttributes();\n\t\tthis.supportsMsaa = (_contextAttribs$antia = contextAttribs == null ? void 0 : contextAttribs.antialias) != null ? _contextAttribs$antia : false;\n\t\tthis.supportsStencil = (_contextAttribs$stenc = contextAttribs == null ? void 0 : contextAttribs.stencil) != null ? _contextAttribs$stenc : false;\n\t\tthis.supportsInstancing = !!this.extInstancing;\n\t\tthis.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n\t\tthis.maxCubeMapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n\t\tthis.maxRenderBufferSize = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);\n\t\tthis.maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n\t\tthis.maxCombinedTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n\t\tthis.maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);\n\t\tthis.vertexUniformsCount = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n\t\tthis.fragmentUniformsCount = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);\n\t\tif (this.isWebGL2) {\n\t\t\tthis.maxDrawBuffers = gl.getParameter(gl.MAX_DRAW_BUFFERS);\n\t\t\tthis.maxColorAttachments = gl.getParameter(gl.MAX_COLOR_ATTACHMENTS);\n\t\t\tthis.maxVolumeSize = gl.getParameter(gl.MAX_3D_TEXTURE_SIZE);\n\t\t\tthis.supportsMrt = true;\n\t\t\tthis.supportsVolumeTextures = true;\n\t\t} else {\n\t\t\text = this.extDrawBuffers;\n\t\t\tthis.supportsMrt = !!ext;\n\t\t\tthis.maxDrawBuffers = ext ? gl.getParameter(ext.MAX_DRAW_BUFFERS_WEBGL) : 1;\n\t\t\tthis.maxColorAttachments = ext ? gl.getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 1;\n\t\t\tthis.maxVolumeSize = 1;\n\t\t}\n\t\text = this.extDebugRendererInfo;\n\t\tthis.unmaskedRenderer = ext ? gl.getParameter(ext.UNMASKED_RENDERER_WEBGL) : '';\n\t\tthis.unmaskedVendor = ext ? gl.getParameter(ext.UNMASKED_VENDOR_WEBGL) : '';\n\t\tconst maliRendererRegex = /\\bMali-G52+/;\n\t\tconst samsungModelRegex = /SM-[a-zA-Z0-9]+/;\n\t\tthis.supportsGpuParticles = !(this.unmaskedVendor === 'ARM' && userAgent.match(samsungModelRegex)) && !this.unmaskedRenderer.match(maliRendererRegex);\n\t\text = this.extTextureFilterAnisotropic;\n\t\tthis.maxAnisotropy = ext ? gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1;\n\t\tconst antialiasSupported = this.isWebGL2 && !this.forceDisableMultisampling;\n\t\tthis.maxSamples = antialiasSupported ? gl.getParameter(gl.MAX_SAMPLES) : 1;\n\t\tthis.maxSamples = Math.min(this.maxSamples, 4);\n\t\tthis.samples = antialiasSupported && this.backBufferAntialias ? this.maxSamples : 1;\n\t\tthis.supportsAreaLights = this.isWebGL2 || !platform.android;\n\t\tthis.supportsTextureFetch = this.isWebGL2;\n\t\tif (this.maxTextures <= 8) {\n\t\t\tthis.supportsAreaLights = false;\n\t\t}\n\t}\n\tinitializeRenderState() {\n\t\tsuper.initializeRenderState();\n\t\tconst gl = this.gl;\n\t\tgl.disable(gl.BLEND);\n\t\tgl.blendFunc(gl.ONE, gl.ZERO);\n\t\tgl.blendEquation(gl.FUNC_ADD);\n\t\tgl.colorMask(true, true, true, true);\n\t\tgl.blendColor(0, 0, 0, 0);\n\t\tgl.enable(gl.CULL_FACE);\n\t\tthis.cullFace = gl.BACK;\n\t\tgl.cullFace(gl.BACK);\n\t\tgl.enable(gl.DEPTH_TEST);\n\t\tgl.depthFunc(gl.LEQUAL);\n\t\tgl.depthMask(true);\n\t\tthis.stencil = false;\n\t\tgl.disable(gl.STENCIL_TEST);\n\t\tthis.stencilFuncFront = this.stencilFuncBack = FUNC_ALWAYS;\n\t\tthis.stencilRefFront = this.stencilRefBack = 0;\n\t\tthis.stencilMaskFront = this.stencilMaskBack = 0xFF;\n\t\tgl.stencilFunc(gl.ALWAYS, 0, 0xFF);\n\t\tthis.stencilFailFront = this.stencilFailBack = STENCILOP_KEEP;\n\t\tthis.stencilZfailFront = this.stencilZfailBack = STENCILOP_KEEP;\n\t\tthis.stencilZpassFront = this.stencilZpassBack = STENCILOP_KEEP;\n\t\tthis.stencilWriteMaskFront = 0xFF;\n\t\tthis.stencilWriteMaskBack = 0xFF;\n\t\tgl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n\t\tgl.stencilMask(0xFF);\n\t\tthis.alphaToCoverage = false;\n\t\tthis.raster = true;\n\t\tif (this.isWebGL2) {\n\t\t\tgl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t\tgl.disable(gl.RASTERIZER_DISCARD);\n\t\t}\n\t\tthis.depthBiasEnabled = false;\n\t\tgl.disable(gl.POLYGON_OFFSET_FILL);\n\t\tthis.clearDepth = 1;\n\t\tgl.clearDepth(1);\n\t\tthis.clearColor = new Color(0, 0, 0, 0);\n\t\tgl.clearColor(0, 0, 0, 0);\n\t\tthis.clearStencil = 0;\n\t\tgl.clearStencil(0);\n\t\tif (this.isWebGL2) {\n\t\t\tgl.hint(gl.FRAGMENT_SHADER_DERIVATIVE_HINT, gl.NICEST);\n\t\t} else {\n\t\t\tif (this.extStandardDerivatives) {\n\t\t\t\tgl.hint(this.extStandardDerivatives.FRAGMENT_SHADER_DERIVATIVE_HINT_OES, gl.NICEST);\n\t\t\t}\n\t\t}\n\t\tgl.enable(gl.SCISSOR_TEST);\n\t\tgl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);\n\t\tthis.unpackFlipY = false;\n\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n\t\tthis.unpackPremultiplyAlpha = false;\n\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n\t}\n\tinitTextureUnits(count = 16) {\n\t\tthis.textureUnits = [];\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tthis.textureUnits.push([null, null, null]);\n\t\t}\n\t}\n\tinitializeContextCaches() {\n\t\tsuper.initializeContextCaches();\n\t\tthis._vaoMap = new Map();\n\t\tthis.boundVao = null;\n\t\tthis.activeFramebuffer = null;\n\t\tthis.feedback = null;\n\t\tthis.transformFeedbackBuffer = null;\n\t\tthis.textureUnit = 0;\n\t\tthis.initTextureUnits(this.maxCombinedTextures);\n\t}\n\tloseContext() {\n\t\tsuper.loseContext();\n\t\tfor (const shader of this.shaders) {\n\t\t\tshader.loseContext();\n\t\t}\n\t}\n\trestoreContext() {\n\t\tthis.initializeExtensions();\n\t\tthis.initializeCapabilities();\n\t\tsuper.restoreContext();\n\t\tfor (const shader of this.shaders) {\n\t\t\tshader.restoreContext();\n\t\t}\n\t}\n\tsetViewport(x, y, w, h) {\n\t\tif (this.vx !== x || this.vy !== y || this.vw !== w || this.vh !== h) {\n\t\t\tthis.gl.viewport(x, y, w, h);\n\t\t\tthis.vx = x;\n\t\t\tthis.vy = y;\n\t\t\tthis.vw = w;\n\t\t\tthis.vh = h;\n\t\t}\n\t}\n\tsetScissor(x, y, w, h) {\n\t\tif (this.sx !== x || this.sy !== y || this.sw !== w || this.sh !== h) {\n\t\t\tthis.gl.scissor(x, y, w, h);\n\t\t\tthis.sx = x;\n\t\t\tthis.sy = y;\n\t\t\tthis.sw = w;\n\t\t\tthis.sh = h;\n\t\t}\n\t}\n\tsetFramebuffer(fb) {\n\t\tif (this.activeFramebuffer !== fb) {\n\t\t\tconst gl = this.gl;\n\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, fb);\n\t\t\tthis.activeFramebuffer = fb;\n\t\t}\n\t}\n\tcopyRenderTarget(source, dest, color, depth) {\n\t\tconst gl = this.gl;\n\t\tif (source === this.backBuffer) {\n\t\t\tsource = null;\n\t\t}\n\t\tif (!this.isWebGL2 && depth) {\n\t\t\treturn false;\n\t\t}\n\t\tif (color) {\n\t\t\tif (!dest) {\n\t\t\t\tif (!source._colorBuffer) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (source) {\n\t\t\t\tif (!source._colorBuffer || !dest._colorBuffer) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (source._colorBuffer._format !== dest._colorBuffer._format) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (depth && source) {\n\t\t\tif (!source._depth) {\n\t\t\t\tif (!source._depthBuffer || !dest._depthBuffer) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (source._depthBuffer._format !== dest._depthBuffer._format) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.isWebGL2) {\n\t\t\tvar _this$backBuffer, _this$backBuffer2;\n\t\t\tconst prevRt = this.renderTarget;\n\t\t\tthis.renderTarget = dest;\n\t\t\tthis.updateBegin();\n\t\t\tconst src = source ? source.impl._glFrameBuffer : (_this$backBuffer = this.backBuffer) == null ? void 0 : _this$backBuffer.impl._glFrameBuffer;\n\t\t\tconst dst = dest ? dest.impl._glFrameBuffer : (_this$backBuffer2 = this.backBuffer) == null ? void 0 : _this$backBuffer2.impl._glFrameBuffer;\n\t\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, src);\n\t\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dst);\n\t\t\tconst w = source ? source.width : dest ? dest.width : this.width;\n\t\t\tconst h = source ? source.height : dest ? dest.height : this.height;\n\t\t\tgl.blitFramebuffer(0, 0, w, h, 0, 0, w, h, (color ? gl.COLOR_BUFFER_BIT : 0) | (depth ? gl.DEPTH_BUFFER_BIT : 0), gl.NEAREST);\n\t\t\tthis.renderTarget = prevRt;\n\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, prevRt ? prevRt.impl._glFrameBuffer : null);\n\t\t} else {\n\t\t\tconst shader = this.getCopyShader();\n\t\t\tthis.constantTexSource.setValue(source._colorBuffer);\n\t\t\tquadWithShader(this, dest, shader);\n\t\t}\n\t\treturn true;\n\t}\n\tgetCopyShader() {\n\t\tif (!this._copyShader) {\n\t\t\tthis._copyShader = new Shader(this, ShaderUtils.createDefinition(this, {\n\t\t\t\tname: 'outputTex2D',\n\t\t\t\tvertexCode: _fullScreenQuadVS,\n\t\t\t\tfragmentCode: _outputTexture2D\n\t\t\t}));\n\t\t}\n\t\treturn this._copyShader;\n\t}\n\tframeStart() {\n\t\tsuper.frameStart();\n\t\tthis.updateBackbuffer();\n\t\tthis.gpuProfiler.frameStart();\n\t}\n\tframeEnd() {\n\t\tsuper.frameEnd();\n\t\tthis.gpuProfiler.frameEnd();\n\t\tthis.gpuProfiler.request();\n\t}\n\tstartRenderPass(renderPass) {\n\t\tvar _renderPass$renderTar;\n\t\tconst rt = (_renderPass$renderTar = renderPass.renderTarget) != null ? _renderPass$renderTar : this.backBuffer;\n\t\tthis.renderTarget = rt;\n\t\tthis.updateBegin();\n\t\tconst {\n\t\t\twidth,\n\t\t\theight\n\t\t} = rt;\n\t\tthis.setViewport(0, 0, width, height);\n\t\tthis.setScissor(0, 0, width, height);\n\t\tconst colorOps = renderPass.colorOps;\n\t\tconst depthStencilOps = renderPass.depthStencilOps;\n\t\tif (colorOps != null && colorOps.clear || depthStencilOps.clearDepth || depthStencilOps.clearStencil) {\n\t\t\tlet clearFlags = 0;\n\t\t\tconst clearOptions = {};\n\t\t\tif (colorOps != null && colorOps.clear) {\n\t\t\t\tclearFlags |= CLEARFLAG_COLOR;\n\t\t\t\tclearOptions.color = [colorOps.clearValue.r, colorOps.clearValue.g, colorOps.clearValue.b, colorOps.clearValue.a];\n\t\t\t}\n\t\t\tif (depthStencilOps.clearDepth) {\n\t\t\t\tclearFlags |= CLEARFLAG_DEPTH;\n\t\t\t\tclearOptions.depth = depthStencilOps.clearDepthValue;\n\t\t\t}\n\t\t\tif (depthStencilOps.clearStencil) {\n\t\t\t\tclearFlags |= CLEARFLAG_STENCIL;\n\t\t\t\tclearOptions.stencil = depthStencilOps.clearStencilValue;\n\t\t\t}\n\t\t\tclearOptions.flags = clearFlags;\n\t\t\tthis.clear(clearOptions);\n\t\t}\n\t\tthis.insideRenderPass = true;\n\t}\n\tendRenderPass(renderPass) {\n\t\tthis.unbindVertexArray();\n\t\tconst target = this.renderTarget;\n\t\tconst colorBufferCount = renderPass.colorArrayOps.length;\n\t\tif (target) {\n\t\t\tvar _renderPass$colorOps;\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tinvalidateAttachments.length = 0;\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tfor (let i = 0; i < colorBufferCount; i++) {\n\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\tif (!(colorOps.store || colorOps.resolve)) {\n\t\t\t\t\t\tinvalidateAttachments.push(gl.COLOR_ATTACHMENT0 + i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (target !== this.backBuffer) {\n\t\t\t\t\tif (!renderPass.depthStencilOps.storeDepth) {\n\t\t\t\t\t\tinvalidateAttachments.push(gl.DEPTH_ATTACHMENT);\n\t\t\t\t\t}\n\t\t\t\t\tif (!renderPass.depthStencilOps.storeStencil) {\n\t\t\t\t\t\tinvalidateAttachments.push(gl.STENCIL_ATTACHMENT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (invalidateAttachments.length > 0) {\n\t\t\t\t\tif (renderPass.fullSizeClearRect) {\n\t\t\t\t\t\tgl.invalidateFramebuffer(gl.DRAW_FRAMEBUFFER, invalidateAttachments);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((_renderPass$colorOps = renderPass.colorOps) != null && _renderPass$colorOps.resolve) {\n\t\t\t\tif (this.isWebGL2 && renderPass.samples > 1 && target.autoResolve) {\n\t\t\t\t\ttarget.resolve(true, false);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = 0; i < colorBufferCount; i++) {\n\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\tif (colorOps.mipmaps) {\n\t\t\t\t\tconst colorBuffer = target._colorBuffers[i];\n\t\t\t\t\tif (colorBuffer && colorBuffer.impl._glTexture && colorBuffer.mipmaps && (colorBuffer.pot || this.isWebGL2)) {\n\t\t\t\t\t\tthis.activeTexture(this.maxCombinedTextures - 1);\n\t\t\t\t\t\tthis.bindTexture(colorBuffer);\n\t\t\t\t\t\tthis.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.insideRenderPass = false;\n\t}\n\tset defaultFramebuffer(value) {\n\t\tif (this._defaultFramebuffer !== value) {\n\t\t\tthis._defaultFramebuffer = value;\n\t\t\tthis._defaultFramebufferChanged = true;\n\t\t}\n\t}\n\tget defaultFramebuffer() {\n\t\treturn this._defaultFramebuffer;\n\t}\n\tupdateBegin() {\n\t\tvar _this$renderTarget;\n\t\tthis.boundVao = null;\n\t\tif (this._tempEnableSafariTextureUnitWorkaround) {\n\t\t\tfor (let unit = 0; unit < this.textureUnits.length; ++unit) {\n\t\t\t\tfor (let slot = 0; slot < 3; ++slot) {\n\t\t\t\t\tthis.textureUnits[unit][slot] = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst target = (_this$renderTarget = this.renderTarget) != null ? _this$renderTarget : this.backBuffer;\n\t\tconst targetImpl = target.impl;\n\t\tif (!targetImpl.initialized) {\n\t\t\tthis.initRenderTarget(target);\n\t\t}\n\t\tthis.setFramebuffer(targetImpl._glFrameBuffer);\n\t}\n\tupdateEnd() {\n\t\tthis.unbindVertexArray();\n\t\tconst target = this.renderTarget;\n\t\tif (target && target !== this.backBuffer) {\n\t\t\tif (this.isWebGL2 && target._samples > 1 && target.autoResolve) {\n\t\t\t\ttarget.resolve();\n\t\t\t}\n\t\t\tconst colorBuffer = target._colorBuffer;\n\t\t\tif (colorBuffer && colorBuffer.impl._glTexture && colorBuffer.mipmaps && (colorBuffer.pot || this.isWebGL2)) {\n\t\t\t\tthis.activeTexture(this.maxCombinedTextures - 1);\n\t\t\t\tthis.bindTexture(colorBuffer);\n\t\t\t\tthis.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t\t}\n\t\t}\n\t}\n\tsetUnpackFlipY(flipY) {\n\t\tif (this.unpackFlipY !== flipY) {\n\t\t\tthis.unpackFlipY = flipY;\n\t\t\tconst gl = this.gl;\n\t\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY);\n\t\t}\n\t}\n\tsetUnpackPremultiplyAlpha(premultiplyAlpha) {\n\t\tif (this.unpackPremultiplyAlpha !== premultiplyAlpha) {\n\t\t\tthis.unpackPremultiplyAlpha = premultiplyAlpha;\n\t\t\tconst gl = this.gl;\n\t\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha);\n\t\t}\n\t}\n\tactiveTexture(textureUnit) {\n\t\tif (this.textureUnit !== textureUnit) {\n\t\t\tthis.gl.activeTexture(this.gl.TEXTURE0 + textureUnit);\n\t\t\tthis.textureUnit = textureUnit;\n\t\t}\n\t}\n\tbindTexture(texture) {\n\t\tconst impl = texture.impl;\n\t\tconst textureTarget = impl._glTarget;\n\t\tconst textureObject = impl._glTexture;\n\t\tconst textureUnit = this.textureUnit;\n\t\tconst slot = this.targetToSlot[textureTarget];\n\t\tif (this.textureUnits[textureUnit][slot] !== textureObject) {\n\t\t\tthis.gl.bindTexture(textureTarget, textureObject);\n\t\t\tthis.textureUnits[textureUnit][slot] = textureObject;\n\t\t}\n\t}\n\tbindTextureOnUnit(texture, textureUnit) {\n\t\tconst impl = texture.impl;\n\t\tconst textureTarget = impl._glTarget;\n\t\tconst textureObject = impl._glTexture;\n\t\tconst slot = this.targetToSlot[textureTarget];\n\t\tif (this.textureUnits[textureUnit][slot] !== textureObject) {\n\t\t\tthis.activeTexture(textureUnit);\n\t\t\tthis.gl.bindTexture(textureTarget, textureObject);\n\t\t\tthis.textureUnits[textureUnit][slot] = textureObject;\n\t\t}\n\t}\n\tsetTextureParameters(texture) {\n\t\tconst gl = this.gl;\n\t\tconst flags = texture.impl.dirtyParameterFlags;\n\t\tconst target = texture.impl._glTarget;\n\t\tif (flags & 1) {\n\t\t\tlet filter = texture._minFilter;\n\t\t\tif (!texture.pot && !this.isWebGL2 || !texture._mipmaps || texture._compressed && texture._levels.length === 1) {\n\t\t\t\tif (filter === FILTER_NEAREST_MIPMAP_NEAREST || filter === FILTER_NEAREST_MIPMAP_LINEAR) {\n\t\t\t\t\tfilter = FILTER_NEAREST;\n\t\t\t\t} else if (filter === FILTER_LINEAR_MIPMAP_NEAREST || filter === FILTER_LINEAR_MIPMAP_LINEAR) {\n\t\t\t\t\tfilter = FILTER_LINEAR;\n\t\t\t\t}\n\t\t\t}\n\t\t\tgl.texParameteri(target, gl.TEXTURE_MIN_FILTER, this.glFilter[filter]);\n\t\t}\n\t\tif (flags & 2) {\n\t\t\tgl.texParameteri(target, gl.TEXTURE_MAG_FILTER, this.glFilter[texture._magFilter]);\n\t\t}\n\t\tif (flags & 4) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_S, this.glAddress[texture._addressU]);\n\t\t\t} else {\n\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_S, this.glAddress[texture.pot ? texture._addressU : ADDRESS_CLAMP_TO_EDGE]);\n\t\t\t}\n\t\t}\n\t\tif (flags & 8) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_T, this.glAddress[texture._addressV]);\n\t\t\t} else {\n\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_T, this.glAddress[texture.pot ? texture._addressV : ADDRESS_CLAMP_TO_EDGE]);\n\t\t\t}\n\t\t}\n\t\tif (flags & 16) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_R, this.glAddress[texture._addressW]);\n\t\t\t}\n\t\t}\n\t\tif (flags & 32) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tgl.texParameteri(target, gl.TEXTURE_COMPARE_MODE, texture._compareOnRead ? gl.COMPARE_REF_TO_TEXTURE : gl.NONE);\n\t\t\t}\n\t\t}\n\t\tif (flags & 64) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tgl.texParameteri(target, gl.TEXTURE_COMPARE_FUNC, this.glComparison[texture._compareFunc]);\n\t\t\t}\n\t\t}\n\t\tif (flags & 128) {\n\t\t\tconst ext = this.extTextureFilterAnisotropic;\n\t\t\tif (ext) {\n\t\t\t\tgl.texParameterf(target, ext.TEXTURE_MAX_ANISOTROPY_EXT, math.clamp(Math.round(texture._anisotropy), 1, this.maxAnisotropy));\n\t\t\t}\n\t\t}\n\t}\n\tsetTexture(texture, textureUnit) {\n\t\tconst impl = texture.impl;\n\t\tif (!impl._glTexture) impl.initialize(this, texture);\n\t\tif (impl.dirtyParameterFlags > 0 || texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\tthis.activeTexture(textureUnit);\n\t\t\tthis.bindTexture(texture);\n\t\t\tif (impl.dirtyParameterFlags) {\n\t\t\t\tthis.setTextureParameters(texture);\n\t\t\t\timpl.dirtyParameterFlags = 0;\n\t\t\t}\n\t\t\tif (texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\timpl.upload(this, texture);\n\t\t\t\ttexture._needsUpload = false;\n\t\t\t\ttexture._needsMipmapsUpload = false;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.bindTextureOnUnit(texture, textureUnit);\n\t\t}\n\t}\n\tcreateVertexArray(vertexBuffers) {\n\t\tlet key, vao;\n\t\tconst useCache = vertexBuffers.length > 1;\n\t\tif (useCache) {\n\t\t\tkey = \"\";\n\t\t\tfor (let i = 0; i < vertexBuffers.length; i++) {\n\t\t\t\tconst vertexBuffer = vertexBuffers[i];\n\t\t\t\tkey += vertexBuffer.id + vertexBuffer.format.renderingHash;\n\t\t\t}\n\t\t\tvao = this._vaoMap.get(key);\n\t\t}\n\t\tif (!vao) {\n\t\t\tconst gl = this.gl;\n\t\t\tvao = gl.createVertexArray();\n\t\t\tgl.bindVertexArray(vao);\n\t\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n\t\t\tfor (let i = 0; i < vertexBuffers.length; i++) {\n\t\t\t\tconst vertexBuffer = vertexBuffers[i];\n\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer.impl.bufferId);\n\t\t\t\tconst elements = vertexBuffer.format.elements;\n\t\t\t\tfor (let j = 0; j < elements.length; j++) {\n\t\t\t\t\tconst e = elements[j];\n\t\t\t\t\tconst loc = semanticToLocation[e.name];\n\t\t\t\t\tif (e.asInt) {\n\t\t\t\t\t\tgl.vertexAttribIPointer(loc, e.numComponents, this.glType[e.dataType], e.stride, e.offset);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgl.vertexAttribPointer(loc, e.numComponents, this.glType[e.dataType], e.normalize, e.stride, e.offset);\n\t\t\t\t\t}\n\t\t\t\t\tgl.enableVertexAttribArray(loc);\n\t\t\t\t\tif (vertexBuffer.format.instancing) {\n\t\t\t\t\t\tgl.vertexAttribDivisor(loc, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tgl.bindVertexArray(null);\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\tif (useCache) {\n\t\t\t\tthis._vaoMap.set(key, vao);\n\t\t\t}\n\t\t}\n\t\treturn vao;\n\t}\n\tunbindVertexArray() {\n\t\tif (this.boundVao) {\n\t\t\tthis.boundVao = null;\n\t\t\tthis.gl.bindVertexArray(null);\n\t\t}\n\t}\n\tsetBuffers() {\n\t\tconst gl = this.gl;\n\t\tlet vao;\n\t\tif (this.vertexBuffers.length === 1) {\n\t\t\tconst vertexBuffer = this.vertexBuffers[0];\n\t\t\tif (!vertexBuffer.impl.vao) {\n\t\t\t\tvertexBuffer.impl.vao = this.createVertexArray(this.vertexBuffers);\n\t\t\t}\n\t\t\tvao = vertexBuffer.impl.vao;\n\t\t} else {\n\t\t\tvao = this.createVertexArray(this.vertexBuffers);\n\t\t}\n\t\tif (this.boundVao !== vao) {\n\t\t\tthis.boundVao = vao;\n\t\t\tgl.bindVertexArray(vao);\n\t\t}\n\t\tthis.clearVertexBuffer();\n\t\tconst bufferId = this.indexBuffer ? this.indexBuffer.impl.bufferId : null;\n\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, bufferId);\n\t}\n\tdraw(primitive, numInstances, keepBuffers) {\n\t\tconst gl = this.gl;\n\t\tthis.activateShader(this);\n\t\tif (!this.shaderValid) return;\n\t\tlet sampler, samplerValue, texture, numTextures;\n\t\tlet uniform, scopeId, uniformVersion, programVersion;\n\t\tconst shader = this.shader;\n\t\tif (!shader) return;\n\t\tconst samplers = shader.impl.samplers;\n\t\tconst uniforms = shader.impl.uniforms;\n\t\tif (!keepBuffers) {\n\t\t\tthis.setBuffers();\n\t\t}\n\t\tlet textureUnit = 0;\n\t\tfor (let i = 0, len = samplers.length; i < len; i++) {\n\t\t\tsampler = samplers[i];\n\t\t\tsamplerValue = sampler.scopeId.value;\n\t\t\tif (!samplerValue) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (samplerValue instanceof Texture) {\n\t\t\t\ttexture = samplerValue;\n\t\t\t\tthis.setTexture(texture, textureUnit);\n\t\t\t\tif (sampler.slot !== textureUnit) {\n\t\t\t\t\tgl.uniform1i(sampler.locationId, textureUnit);\n\t\t\t\t\tsampler.slot = textureUnit;\n\t\t\t\t}\n\t\t\t\ttextureUnit++;\n\t\t\t} else {\n\t\t\t\tsampler.array.length = 0;\n\t\t\t\tnumTextures = samplerValue.length;\n\t\t\t\tfor (let j = 0; j < numTextures; j++) {\n\t\t\t\t\ttexture = samplerValue[j];\n\t\t\t\t\tthis.setTexture(texture, textureUnit);\n\t\t\t\t\tsampler.array[j] = textureUnit;\n\t\t\t\t\ttextureUnit++;\n\t\t\t\t}\n\t\t\t\tgl.uniform1iv(sampler.locationId, sampler.array);\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0, len = uniforms.length; i < len; i++) {\n\t\t\tuniform = uniforms[i];\n\t\t\tscopeId = uniform.scopeId;\n\t\t\tuniformVersion = uniform.version;\n\t\t\tprogramVersion = scopeId.versionObject.version;\n\t\t\tif (uniformVersion.globalId !== programVersion.globalId || uniformVersion.revision !== programVersion.revision) {\n\t\t\t\tuniformVersion.globalId = programVersion.globalId;\n\t\t\t\tuniformVersion.revision = programVersion.revision;\n\t\t\t\tif (scopeId.value !== null) {\n\t\t\t\t\tthis.commitFunction[uniform.dataType](uniform, scopeId.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.isWebGL2 && this.transformFeedbackBuffer) {\n\t\t\tgl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, this.transformFeedbackBuffer.impl.bufferId);\n\t\t\tgl.beginTransformFeedback(gl.POINTS);\n\t\t}\n\t\tconst mode = this.glPrimitive[primitive.type];\n\t\tconst count = primitive.count;\n\t\tif (primitive.indexed) {\n\t\t\tconst indexBuffer = this.indexBuffer;\n\t\t\tconst format = indexBuffer.impl.glFormat;\n\t\t\tconst offset = primitive.base * indexBuffer.bytesPerIndex;\n\t\t\tif (numInstances > 0) {\n\t\t\t\tgl.drawElementsInstanced(mode, count, format, offset, numInstances);\n\t\t\t} else {\n\t\t\t\tgl.drawElements(mode, count, format, offset);\n\t\t\t}\n\t\t} else {\n\t\t\tconst first = primitive.base;\n\t\t\tif (numInstances > 0) {\n\t\t\t\tgl.drawArraysInstanced(mode, first, count, numInstances);\n\t\t\t} else {\n\t\t\t\tgl.drawArrays(mode, first, count);\n\t\t\t}\n\t\t}\n\t\tif (this.isWebGL2 && this.transformFeedbackBuffer) {\n\t\t\tgl.endTransformFeedback();\n\t\t\tgl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, null);\n\t\t}\n\t\tthis._drawCallsPerFrame++;\n\t}\n\tclear(options) {\n\t\tvar _options$flags;\n\t\tconst defaultOptions = this.defaultClearOptions;\n\t\toptions = options || defaultOptions;\n\t\tconst flags = (_options$flags = options.flags) != null ? _options$flags : defaultOptions.flags;\n\t\tif (flags !== 0) {\n\t\t\tconst gl = this.gl;\n\t\t\tif (flags & CLEARFLAG_COLOR) {\n\t\t\t\tvar _options$color;\n\t\t\t\tconst color = (_options$color = options.color) != null ? _options$color : defaultOptions.color;\n\t\t\t\tconst r = color[0];\n\t\t\t\tconst g = color[1];\n\t\t\t\tconst b = color[2];\n\t\t\t\tconst a = color[3];\n\t\t\t\tconst c = this.clearColor;\n\t\t\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\t\t\tthis.gl.clearColor(r, g, b, a);\n\t\t\t\t\tthis.clearColor.set(r, g, b, a);\n\t\t\t\t}\n\t\t\t\tthis.setBlendState(BlendState.NOBLEND);\n\t\t\t}\n\t\t\tif (flags & CLEARFLAG_DEPTH) {\n\t\t\t\tvar _options$depth;\n\t\t\t\tconst depth = (_options$depth = options.depth) != null ? _options$depth : defaultOptions.depth;\n\t\t\t\tif (depth !== this.clearDepth) {\n\t\t\t\t\tthis.gl.clearDepth(depth);\n\t\t\t\t\tthis.clearDepth = depth;\n\t\t\t\t}\n\t\t\t\tthis.setDepthState(DepthState.WRITEDEPTH);\n\t\t\t}\n\t\t\tif (flags & CLEARFLAG_STENCIL) {\n\t\t\t\tvar _options$stencil;\n\t\t\t\tconst stencil = (_options$stencil = options.stencil) != null ? _options$stencil : defaultOptions.stencil;\n\t\t\t\tif (stencil !== this.clearStencil) {\n\t\t\t\t\tthis.gl.clearStencil(stencil);\n\t\t\t\t\tthis.clearStencil = stencil;\n\t\t\t\t}\n\t\t\t\tgl.stencilMask(0xFF);\n\t\t\t\tthis.stencilWriteMaskFront = 0xFF;\n\t\t\t\tthis.stencilWriteMaskBack = 0xFF;\n\t\t\t}\n\t\t\tgl.clear(this.glClearFlag[flags]);\n\t\t}\n\t}\n\tsubmit() {\n\t\tthis.gl.flush();\n\t}\n\treadPixels(x, y, w, h, pixels) {\n\t\tconst gl = this.gl;\n\t\tgl.readPixels(x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n\t}\n\tasync readPixelsAsync(x, y, w, h, pixels) {\n\t\tvar _this$renderTarget$co, _impl$_glFormat, _impl$_glPixelType;\n\t\tconst gl = this.gl;\n\t\tif (!this.isWebGL2) {\n\t\t\tthis.readPixels(x, y, w, h, pixels);\n\t\t\treturn;\n\t\t}\n\t\tconst clientWaitAsync = (flags, interval_ms) => {\n\t\t\tconst sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\n\t\t\tthis.submit();\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tfunction test() {\n\t\t\t\t\tconst res = gl.clientWaitSync(sync, flags, 0);\n\t\t\t\t\tif (res === gl.WAIT_FAILED) {\n\t\t\t\t\t\tgl.deleteSync(sync);\n\t\t\t\t\t\treject(new Error('webgl clientWaitSync sync failed'));\n\t\t\t\t\t} else if (res === gl.TIMEOUT_EXPIRED) {\n\t\t\t\t\t\tsetTimeout(test, interval_ms);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgl.deleteSync(sync);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttest();\n\t\t\t});\n\t\t};\n\t\tconst impl = (_this$renderTarget$co = this.renderTarget.colorBuffer) == null ? void 0 : _this$renderTarget$co.impl;\n\t\tconst format = (_impl$_glFormat = impl == null ? void 0 : impl._glFormat) != null ? _impl$_glFormat : gl.RGBA;\n\t\tconst pixelType = (_impl$_glPixelType = impl == null ? void 0 : impl._glPixelType) != null ? _impl$_glPixelType : gl.UNSIGNED_BYTE;\n\t\tconst buf = gl.createBuffer();\n\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\n\t\tgl.bufferData(gl.PIXEL_PACK_BUFFER, pixels.byteLength, gl.STREAM_READ);\n\t\tgl.readPixels(x, y, w, h, format, pixelType, 0);\n\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\n\t\tawait clientWaitAsync(0, 20);\n\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\n\t\tgl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, pixels);\n\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\n\t\tgl.deleteBuffer(buf);\n\t}\n\tsetAlphaToCoverage(state) {\n\t\tif (this.isWebGL1) return;\n\t\tif (this.alphaToCoverage === state) return;\n\t\tthis.alphaToCoverage = state;\n\t\tif (state) {\n\t\t\tthis.gl.enable(this.gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t} else {\n\t\t\tthis.gl.disable(this.gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t}\n\t}\n\tsetTransformFeedbackBuffer(tf) {\n\t\tif (this.transformFeedbackBuffer === tf) return;\n\t\tthis.transformFeedbackBuffer = tf;\n\t\tif (this.isWebGL2) {\n\t\t\tconst gl = this.gl;\n\t\t\tif (tf) {\n\t\t\t\tif (!this.feedback) {\n\t\t\t\t\tthis.feedback = gl.createTransformFeedback();\n\t\t\t\t}\n\t\t\t\tgl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, this.feedback);\n\t\t\t} else {\n\t\t\t\tgl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n\t\t\t}\n\t\t}\n\t}\n\tsetRaster(on) {\n\t\tif (this.raster === on) return;\n\t\tthis.raster = on;\n\t\tif (this.isWebGL2) {\n\t\t\tif (on) {\n\t\t\t\tthis.gl.disable(this.gl.RASTERIZER_DISCARD);\n\t\t\t} else {\n\t\t\t\tthis.gl.enable(this.gl.RASTERIZER_DISCARD);\n\t\t\t}\n\t\t}\n\t}\n\tsetStencilTest(enable) {\n\t\tif (this.stencil !== enable) {\n\t\t\tconst gl = this.gl;\n\t\t\tif (enable) {\n\t\t\t\tgl.enable(gl.STENCIL_TEST);\n\t\t\t} else {\n\t\t\t\tgl.disable(gl.STENCIL_TEST);\n\t\t\t}\n\t\t\tthis.stencil = enable;\n\t\t}\n\t}\n\tsetStencilFunc(func, ref, mask) {\n\t\tif (this.stencilFuncFront !== func || this.stencilRefFront !== ref || this.stencilMaskFront !== mask || this.stencilFuncBack !== func || this.stencilRefBack !== ref || this.stencilMaskBack !== mask) {\n\t\t\tthis.gl.stencilFunc(this.glComparison[func], ref, mask);\n\t\t\tthis.stencilFuncFront = this.stencilFuncBack = func;\n\t\t\tthis.stencilRefFront = this.stencilRefBack = ref;\n\t\t\tthis.stencilMaskFront = this.stencilMaskBack = mask;\n\t\t}\n\t}\n\tsetStencilFuncFront(func, ref, mask) {\n\t\tif (this.stencilFuncFront !== func || this.stencilRefFront !== ref || this.stencilMaskFront !== mask) {\n\t\t\tconst gl = this.gl;\n\t\t\tgl.stencilFuncSeparate(gl.FRONT, this.glComparison[func], ref, mask);\n\t\t\tthis.stencilFuncFront = func;\n\t\t\tthis.stencilRefFront = ref;\n\t\t\tthis.stencilMaskFront = mask;\n\t\t}\n\t}\n\tsetStencilFuncBack(func, ref, mask) {\n\t\tif (this.stencilFuncBack !== func || this.stencilRefBack !== ref || this.stencilMaskBack !== mask) {\n\t\t\tconst gl = this.gl;\n\t\t\tgl.stencilFuncSeparate(gl.BACK, this.glComparison[func], ref, mask);\n\t\t\tthis.stencilFuncBack = func;\n\t\t\tthis.stencilRefBack = ref;\n\t\t\tthis.stencilMaskBack = mask;\n\t\t}\n\t}\n\tsetStencilOperation(fail, zfail, zpass, writeMask) {\n\t\tif (this.stencilFailFront !== fail || this.stencilZfailFront !== zfail || this.stencilZpassFront !== zpass || this.stencilFailBack !== fail || this.stencilZfailBack !== zfail || this.stencilZpassBack !== zpass) {\n\t\t\tthis.gl.stencilOp(this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\tthis.stencilFailFront = this.stencilFailBack = fail;\n\t\t\tthis.stencilZfailFront = this.stencilZfailBack = zfail;\n\t\t\tthis.stencilZpassFront = this.stencilZpassBack = zpass;\n\t\t}\n\t\tif (this.stencilWriteMaskFront !== writeMask || this.stencilWriteMaskBack !== writeMask) {\n\t\t\tthis.gl.stencilMask(writeMask);\n\t\t\tthis.stencilWriteMaskFront = writeMask;\n\t\t\tthis.stencilWriteMaskBack = writeMask;\n\t\t}\n\t}\n\tsetStencilOperationFront(fail, zfail, zpass, writeMask) {\n\t\tif (this.stencilFailFront !== fail || this.stencilZfailFront !== zfail || this.stencilZpassFront !== zpass) {\n\t\t\tthis.gl.stencilOpSeparate(this.gl.FRONT, this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\tthis.stencilFailFront = fail;\n\t\t\tthis.stencilZfailFront = zfail;\n\t\t\tthis.stencilZpassFront = zpass;\n\t\t}\n\t\tif (this.stencilWriteMaskFront !== writeMask) {\n\t\t\tthis.gl.stencilMaskSeparate(this.gl.FRONT, writeMask);\n\t\t\tthis.stencilWriteMaskFront = writeMask;\n\t\t}\n\t}\n\tsetStencilOperationBack(fail, zfail, zpass, writeMask) {\n\t\tif (this.stencilFailBack !== fail || this.stencilZfailBack !== zfail || this.stencilZpassBack !== zpass) {\n\t\t\tthis.gl.stencilOpSeparate(this.gl.BACK, this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\tthis.stencilFailBack = fail;\n\t\t\tthis.stencilZfailBack = zfail;\n\t\t\tthis.stencilZpassBack = zpass;\n\t\t}\n\t\tif (this.stencilWriteMaskBack !== writeMask) {\n\t\t\tthis.gl.stencilMaskSeparate(this.gl.BACK, writeMask);\n\t\t\tthis.stencilWriteMaskBack = writeMask;\n\t\t}\n\t}\n\tsetBlendState(blendState) {\n\t\tconst currentBlendState = this.blendState;\n\t\tif (!currentBlendState.equals(blendState)) {\n\t\t\tconst gl = this.gl;\n\t\t\tconst {\n\t\t\t\tblend,\n\t\t\t\tcolorOp,\n\t\t\t\talphaOp,\n\t\t\t\tcolorSrcFactor,\n\t\t\t\tcolorDstFactor,\n\t\t\t\talphaSrcFactor,\n\t\t\t\talphaDstFactor\n\t\t\t} = blendState;\n\t\t\tif (currentBlendState.blend !== blend) {\n\t\t\t\tif (blend) {\n\t\t\t\t\tgl.enable(gl.BLEND);\n\t\t\t\t} else {\n\t\t\t\t\tgl.disable(gl.BLEND);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentBlendState.colorOp !== colorOp || currentBlendState.alphaOp !== alphaOp) {\n\t\t\t\tconst glBlendEquation = this.glBlendEquation;\n\t\t\t\tgl.blendEquationSeparate(glBlendEquation[colorOp], glBlendEquation[alphaOp]);\n\t\t\t}\n\t\t\tif (currentBlendState.colorSrcFactor !== colorSrcFactor || currentBlendState.colorDstFactor !== colorDstFactor || currentBlendState.alphaSrcFactor !== alphaSrcFactor || currentBlendState.alphaDstFactor !== alphaDstFactor) {\n\t\t\t\tgl.blendFuncSeparate(this.glBlendFunctionColor[colorSrcFactor], this.glBlendFunctionColor[colorDstFactor], this.glBlendFunctionAlpha[alphaSrcFactor], this.glBlendFunctionAlpha[alphaDstFactor]);\n\t\t\t}\n\t\t\tif (currentBlendState.allWrite !== blendState.allWrite) {\n\t\t\t\tthis.gl.colorMask(blendState.redWrite, blendState.greenWrite, blendState.blueWrite, blendState.alphaWrite);\n\t\t\t}\n\t\t\tcurrentBlendState.copy(blendState);\n\t\t}\n\t}\n\tsetBlendColor(r, g, b, a) {\n\t\tconst c = this.blendColor;\n\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\tthis.gl.blendColor(r, g, b, a);\n\t\t\tc.set(r, g, b, a);\n\t\t}\n\t}\n\tsetStencilState(stencilFront, stencilBack) {\n\t\tif (stencilFront || stencilBack) {\n\t\t\tthis.setStencilTest(true);\n\t\t\tif (stencilFront === stencilBack) {\n\t\t\t\tthis.setStencilFunc(stencilFront.func, stencilFront.ref, stencilFront.readMask);\n\t\t\t\tthis.setStencilOperation(stencilFront.fail, stencilFront.zfail, stencilFront.zpass, stencilFront.writeMask);\n\t\t\t} else {\n\t\t\t\tvar _stencilFront, _stencilBack;\n\t\t\t\t(_stencilFront = stencilFront) != null ? _stencilFront : stencilFront = StencilParameters.DEFAULT;\n\t\t\t\tthis.setStencilFuncFront(stencilFront.func, stencilFront.ref, stencilFront.readMask);\n\t\t\t\tthis.setStencilOperationFront(stencilFront.fail, stencilFront.zfail, stencilFront.zpass, stencilFront.writeMask);\n\t\t\t\t(_stencilBack = stencilBack) != null ? _stencilBack : stencilBack = StencilParameters.DEFAULT;\n\t\t\t\tthis.setStencilFuncBack(stencilBack.func, stencilBack.ref, stencilBack.readMask);\n\t\t\t\tthis.setStencilOperationBack(stencilBack.fail, stencilBack.zfail, stencilBack.zpass, stencilBack.writeMask);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.setStencilTest(false);\n\t\t}\n\t}\n\tsetDepthState(depthState) {\n\t\tconst currentDepthState = this.depthState;\n\t\tif (!currentDepthState.equals(depthState)) {\n\t\t\tconst gl = this.gl;\n\t\t\tconst write = depthState.write;\n\t\t\tif (currentDepthState.write !== write) {\n\t\t\t\tgl.depthMask(write);\n\t\t\t}\n\t\t\tlet {\n\t\t\t\tfunc,\n\t\t\t\ttest\n\t\t\t} = depthState;\n\t\t\tif (!test && write) {\n\t\t\t\ttest = true;\n\t\t\t\tfunc = FUNC_ALWAYS;\n\t\t\t}\n\t\t\tif (currentDepthState.func !== func) {\n\t\t\t\tgl.depthFunc(this.glComparison[func]);\n\t\t\t}\n\t\t\tif (currentDepthState.test !== test) {\n\t\t\t\tif (test) {\n\t\t\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t\t\t} else {\n\t\t\t\t\tgl.disable(gl.DEPTH_TEST);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tdepthBias,\n\t\t\t\tdepthBiasSlope\n\t\t\t} = depthState;\n\t\t\tif (depthBias || depthBiasSlope) {\n\t\t\t\tif (!this.depthBiasEnabled) {\n\t\t\t\t\tthis.depthBiasEnabled = true;\n\t\t\t\t\tthis.gl.enable(this.gl.POLYGON_OFFSET_FILL);\n\t\t\t\t}\n\t\t\t\tgl.polygonOffset(depthBiasSlope, depthBias);\n\t\t\t} else {\n\t\t\t\tif (this.depthBiasEnabled) {\n\t\t\t\t\tthis.depthBiasEnabled = false;\n\t\t\t\t\tthis.gl.disable(this.gl.POLYGON_OFFSET_FILL);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentDepthState.copy(depthState);\n\t\t}\n\t}\n\tsetCullMode(cullMode) {\n\t\tif (this.cullMode !== cullMode) {\n\t\t\tif (cullMode === CULLFACE_NONE) {\n\t\t\t\tthis.gl.disable(this.gl.CULL_FACE);\n\t\t\t} else {\n\t\t\t\tif (this.cullMode === CULLFACE_NONE) {\n\t\t\t\t\tthis.gl.enable(this.gl.CULL_FACE);\n\t\t\t\t}\n\t\t\t\tconst mode = this.glCull[cullMode];\n\t\t\t\tif (this.cullFace !== mode) {\n\t\t\t\t\tthis.gl.cullFace(mode);\n\t\t\t\t\tthis.cullFace = mode;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.cullMode = cullMode;\n\t\t}\n\t}\n\tsetShader(shader, asyncCompile = false) {\n\t\tif (shader !== this.shader) {\n\t\t\tthis.shader = shader;\n\t\t\tthis.shaderAsyncCompile = asyncCompile;\n\t\t\tthis.shaderValid = undefined;\n\t\t}\n\t}\n\tactivateShader(device) {\n\t\tconst {\n\t\t\tshader\n\t\t} = this;\n\t\tconst {\n\t\t\timpl\n\t\t} = shader;\n\t\tif (this.shaderValid === undefined) {\n\t\t\tif (shader.failed) {\n\t\t\t\tthis.shaderValid = false;\n\t\t\t} else if (!shader.ready) {\n\t\t\t\tif (this.shaderAsyncCompile) {\n\t\t\t\t\tif (impl.isLinked(device)) {\n\t\t\t\t\t\tif (!impl.finalize(this, shader)) {\n\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!impl.finalize(this, shader)) {\n\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.shaderValid === undefined) {\n\t\t\tthis.gl.useProgram(impl.glProgram);\n\t\t\tthis.shaderValid = true;\n\t\t}\n\t}\n\tclearVertexArrayObjectCache() {\n\t\tconst gl = this.gl;\n\t\tthis._vaoMap.forEach((item, key, mapObj) => {\n\t\t\tgl.deleteVertexArray(item);\n\t\t});\n\t\tthis._vaoMap.clear();\n\t}\n\tset fullscreen(fullscreen) {\n\t\tif (fullscreen) {\n\t\t\tconst canvas = this.gl.canvas;\n\t\t\tcanvas.requestFullscreen();\n\t\t} else {\n\t\t\tdocument.exitFullscreen();\n\t\t}\n\t}\n\tget fullscreen() {\n\t\treturn !!document.fullscreenElement;\n\t}\n\tget textureFloatHighPrecision() {\n\t\tif (this._textureFloatHighPrecision === undefined) {\n\t\t\tthis._textureFloatHighPrecision = testTextureFloatHighPrecision(this);\n\t\t}\n\t\treturn this._textureFloatHighPrecision;\n\t}\n\tget textureHalfFloatUpdatable() {\n\t\tif (this._textureHalfFloatUpdatable === undefined) {\n\t\t\tif (this.isWebGL2) {\n\t\t\t\tthis._textureHalfFloatUpdatable = true;\n\t\t\t} else {\n\t\t\t\tthis._textureHalfFloatUpdatable = testTextureHalfFloatUpdatable(this.gl, this.extTextureHalfFloat.HALF_FLOAT_OES);\n\t\t\t}\n\t\t}\n\t\treturn this._textureHalfFloatUpdatable;\n\t}\n}\n\nexport { WebglGraphicsDevice };\n", "class NullIndexBuffer {\n\tunlock(indexBuffer) {}\n}\n\nexport { NullIndexBuffer };\n", "class NullRenderTarget {\n\tdestroy(device) {}\n\tinit(device, renderTarget) {}\n\tloseContext() {}\n\tresolve(device, target, color, depth) {}\n}\n\nexport { NullRenderTarget };\n", "class NullShader {\n\tdestroy(shader) {}\n\tloseContext() {}\n\trestoreContext(device, shader) {}\n}\n\nexport { NullShader };\n", "class NullTexture {\n\tdestroy(device) {}\n\tpropertyChanged(flag) {}\n\tloseContext() {}\n}\n\nexport { NullTexture };\n", "class NullVertexBuffer {\n\tdestroy(device) {}\n\tunlock(vertexBuffer) {}\n}\n\nexport { NullVertexBuffer };\n", "import { DEVICETYPE_NULL, PIXELFORMAT_RGBA8 } from '../constants.js';\nimport { GraphicsDevice } from '../graphics-device.js';\nimport { NullIndexBuffer } from './null-index-buffer.js';\nimport { NullRenderTarget } from './null-render-target.js';\nimport { NullShader } from './null-shader.js';\nimport { NullTexture } from './null-texture.js';\nimport { NullVertexBuffer } from './null-vertex-buffer.js';\n\nclass NullGraphicsDevice extends GraphicsDevice {\n\tconstructor(canvas, options = {}) {\n\t\tsuper(canvas, options);\n\t\toptions = this.initOptions;\n\t\tthis.isNull = true;\n\t\tthis._deviceType = DEVICETYPE_NULL;\n\t\tthis.samples = 1;\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t}\n\tinitDeviceCaps() {\n\t\tthis.disableParticleSystem = true;\n\t\tthis.precision = 'highp';\n\t\tthis.maxPrecision = 'highp';\n\t\tthis.maxSamples = 4;\n\t\tthis.maxTextures = 16;\n\t\tthis.maxTextureSize = 4096;\n\t\tthis.maxCubeMapSize = 4096;\n\t\tthis.maxVolumeSize = 4096;\n\t\tthis.maxColorAttachments = 8;\n\t\tthis.maxPixelRatio = 1;\n\t\tthis.maxAnisotropy = 16;\n\t\tthis.supportsInstancing = true;\n\t\tthis.supportsUniformBuffers = false;\n\t\tthis.supportsVolumeTextures = true;\n\t\tthis.supportsBoneTextures = true;\n\t\tthis.supportsMorphTargetTexturesCore = true;\n\t\tthis.supportsAreaLights = true;\n\t\tthis.supportsDepthShadow = true;\n\t\tthis.supportsGpuParticles = false;\n\t\tthis.supportsMrt = true;\n\t\tthis.extUintElement = true;\n\t\tthis.extTextureFloat = true;\n\t\tthis.textureFloatRenderable = true;\n\t\tthis.extTextureHalfFloat = true;\n\t\tthis.textureHalfFloatRenderable = true;\n\t\tthis.textureHalfFloatUpdatable = true;\n\t\tthis.boneLimit = 1024;\n\t\tthis.supportsImageBitmap = true;\n\t\tthis.extStandardDerivatives = true;\n\t\tthis.extBlendMinmax = true;\n\t\tthis.areaLightLutFormat = PIXELFORMAT_RGBA8;\n\t\tthis.supportsTextureFetch = true;\n\t}\n\tpostInit() {\n\t\tsuper.postInit();\n\t}\n\tframeStart() {\n\t\tsuper.frameStart();\n\t}\n\tframeEnd() {\n\t\tsuper.frameEnd();\n\t}\n\tupdateBegin() {}\n\tupdateEnd() {}\n\treadPixels(x, y, w, h, pixels) {}\n\tcreateVertexBufferImpl(vertexBuffer, format) {\n\t\treturn new NullVertexBuffer(vertexBuffer, format);\n\t}\n\tcreateIndexBufferImpl(indexBuffer) {\n\t\treturn new NullIndexBuffer(indexBuffer);\n\t}\n\tcreateShaderImpl(shader) {\n\t\treturn new NullShader(shader);\n\t}\n\tcreateTextureImpl(texture) {\n\t\treturn new NullTexture(texture);\n\t}\n\tcreateRenderTargetImpl(renderTarget) {\n\t\treturn new NullRenderTarget(renderTarget);\n\t}\n\tdraw(primitive, numInstances = 1, keepBuffers) {}\n\tsetShader(shader, asyncCompile = false) {}\n\tsetBlendState(blendState) {}\n\tsetDepthState(depthState) {}\n\tsetStencilState(stencilFront, stencilBack) {}\n\tsetBlendColor(r, g, b, a) {}\n\tsetCullMode(cullMode) {}\n\tsetAlphaToCoverage(state) {}\n\tinitializeContextCaches() {\n\t\tsuper.initializeContextCaches();\n\t}\n\tclear(options) {}\n\tsetViewport(x, y, w, h) {}\n\tsetScissor(x, y, w, h) {}\n\tcopyRenderTarget(source, dest, color, depth) {\n\t\treturn true;\n\t}\n}\n\nexport { NullGraphicsDevice };\n", "import { platform } from '../../core/platform.js';\nimport { DEVICETYPE_WEBGL2, DEVICETYPE_WEBGL1, DEVICETYPE_NULL, DEVICETYPE_WEBGPU } from './constants.js';\nimport { WebgpuGraphicsDevice } from './webgpu/webgpu-graphics-device.js';\nimport { WebglGraphicsDevice } from './webgl/webgl-graphics-device.js';\nimport { NullGraphicsDevice } from './null/null-graphics-device.js';\n\nfunction createGraphicsDevice(canvas, options = {}) {\n\tvar _options$deviceTypes;\n\tconst deviceTypes = (_options$deviceTypes = options.deviceTypes) != null ? _options$deviceTypes : [];\n\tif (!deviceTypes.includes(DEVICETYPE_WEBGL2)) {\n\t\tdeviceTypes.push(DEVICETYPE_WEBGL2);\n\t}\n\tif (!deviceTypes.includes(DEVICETYPE_WEBGL1)) {\n\t\tdeviceTypes.push(DEVICETYPE_WEBGL1);\n\t}\n\tif (!deviceTypes.includes(DEVICETYPE_NULL)) {\n\t\tdeviceTypes.push(DEVICETYPE_NULL);\n\t}\n\tif (platform.browser && !!navigator.xr) {\n\t\tvar _options$xrCompatible;\n\t\t(_options$xrCompatible = options.xrCompatible) != null ? _options$xrCompatible : options.xrCompatible = true;\n\t}\n\tconst deviceCreateFuncs = [];\n\tfor (let i = 0; i < deviceTypes.length; i++) {\n\t\tvar _window;\n\t\tconst deviceType = deviceTypes[i];\n\t\tif (deviceType === DEVICETYPE_WEBGPU && (_window = window) != null && (_window = _window.navigator) != null && _window.gpu) {\n\t\t\tdeviceCreateFuncs.push(() => {\n\t\t\t\tconst device = new WebgpuGraphicsDevice(canvas, options);\n\t\t\t\treturn device.initWebGpu(options.glslangUrl, options.twgslUrl);\n\t\t\t});\n\t\t}\n\t\tif (deviceType === DEVICETYPE_WEBGL1 || deviceType === DEVICETYPE_WEBGL2) {\n\t\t\tdeviceCreateFuncs.push(() => {\n\t\t\t\toptions.preferWebGl2 = deviceType === DEVICETYPE_WEBGL2;\n\t\t\t\treturn new WebglGraphicsDevice(canvas, options);\n\t\t\t});\n\t\t}\n\t\tif (deviceType === DEVICETYPE_NULL) {\n\t\t\tdeviceCreateFuncs.push(() => {\n\t\t\t\treturn new NullGraphicsDevice(canvas, options);\n\t\t\t});\n\t\t}\n\t}\n\treturn new Promise((resolve, reject) => {\n\t\tlet attempt = 0;\n\t\tconst next = () => {\n\t\t\tif (attempt >= deviceCreateFuncs.length) {\n\t\t\t\treject(new Error('Failed to create a graphics device'));\n\t\t\t} else {\n\t\t\t\tPromise.resolve(deviceCreateFuncs[attempt++]()).then(device => {\n\t\t\t\t\tif (device) {\n\t\t\t\t\t\tresolve(device);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnext();\n\t\t\t\t\t}\n\t\t\t\t}).catch(err => {\n\t\t\t\t\tconsole.log(err);\n\t\t\t\t\tnext();\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tnext();\n\t});\n}\n\nexport { createGraphicsDevice };\n", "import { typedArrayIndexFormatsByteSize, BUFFER_STATIC, INDEXFORMAT_UINT32, INDEXFORMAT_UINT16 } from './constants.js';\n\nlet id = 0;\nclass IndexBuffer {\n\tconstructor(graphicsDevice, format, numIndices, usage = BUFFER_STATIC, initialData, options) {\n\t\tthis.device = graphicsDevice;\n\t\tthis.format = format;\n\t\tthis.numIndices = numIndices;\n\t\tthis.usage = usage;\n\t\tthis.id = id++;\n\t\tthis.impl = graphicsDevice.createIndexBufferImpl(this, options);\n\t\tconst bytesPerIndex = typedArrayIndexFormatsByteSize[format];\n\t\tthis.bytesPerIndex = bytesPerIndex;\n\t\tthis.numBytes = this.numIndices * bytesPerIndex;\n\t\tif (initialData) {\n\t\t\tthis.setData(initialData);\n\t\t} else {\n\t\t\tthis.storage = new ArrayBuffer(this.numBytes);\n\t\t}\n\t\tthis.adjustVramSizeTracking(graphicsDevice._vram, this.numBytes);\n\t\tthis.device.buffers.push(this);\n\t}\n\tdestroy() {\n\t\tconst device = this.device;\n\t\tconst idx = device.buffers.indexOf(this);\n\t\tif (idx !== -1) {\n\t\t\tdevice.buffers.splice(idx, 1);\n\t\t}\n\t\tif (this.device.indexBuffer === this) {\n\t\t\tthis.device.indexBuffer = null;\n\t\t}\n\t\tif (this.impl.initialized) {\n\t\t\tthis.impl.destroy(device);\n\t\t\tthis.adjustVramSizeTracking(device._vram, -this.storage.byteLength);\n\t\t}\n\t}\n\tadjustVramSizeTracking(vram, size) {\n\t\tvram.ib += size;\n\t}\n\tloseContext() {\n\t\tthis.impl.loseContext();\n\t}\n\tgetFormat() {\n\t\treturn this.format;\n\t}\n\tgetNumIndices() {\n\t\treturn this.numIndices;\n\t}\n\tlock() {\n\t\treturn this.storage;\n\t}\n\tunlock() {\n\t\tthis.impl.unlock(this);\n\t}\n\tsetData(data) {\n\t\tif (data.byteLength !== this.numBytes) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.storage = data;\n\t\tthis.unlock();\n\t\treturn true;\n\t}\n\t_lockTypedArray() {\n\t\tconst lock = this.lock();\n\t\tconst indices = this.format === INDEXFORMAT_UINT32 ? new Uint32Array(lock) : this.format === INDEXFORMAT_UINT16 ? new Uint16Array(lock) : new Uint8Array(lock);\n\t\treturn indices;\n\t}\n\twriteData(data, count) {\n\t\tconst indices = this._lockTypedArray();\n\t\tif (data.length > count) {\n\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\tdata = data.subarray(0, count);\n\t\t\t\tindices.set(data);\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < count; i++) indices[i] = data[i];\n\t\t\t}\n\t\t} else {\n\t\t\tindices.set(data);\n\t\t}\n\t\tthis.unlock();\n\t}\n\treadData(data) {\n\t\tconst indices = this._lockTypedArray();\n\t\tconst count = this.numIndices;\n\t\tif (ArrayBuffer.isView(data)) {\n\t\t\tdata.set(indices);\n\t\t} else {\n\t\t\tdata.length = 0;\n\t\t\tfor (let i = 0; i < count; i++) data[i] = indices[i];\n\t\t}\n\t\treturn count;\n\t}\n}\n\nexport { IndexBuffer };\n", "import { Color } from '../../core/math/color.js';\n\nclass ColorAttachmentOps {\n\tconstructor() {\n\t\tthis.clearValue = new Color(0, 0, 0, 1);\n\t\tthis.clear = false;\n\t\tthis.store = false;\n\t\tthis.resolve = true;\n\t\tthis.mipmaps = false;\n\t}\n}\nclass DepthStencilAttachmentOps {\n\tconstructor() {\n\t\tthis.clearDepthValue = 1;\n\t\tthis.clearStencilValue = 0;\n\t\tthis.clearDepth = false;\n\t\tthis.clearStencil = false;\n\t\tthis.storeDepth = false;\n\t\tthis.storeStencil = false;\n\t}\n}\nclass RenderPass {\n\tget colorOps() {\n\t\treturn this.colorArrayOps[0];\n\t}\n\tconstructor(graphicsDevice) {\n\t\tthis._name = void 0;\n\t\tthis.device = void 0;\n\t\tthis._enabled = true;\n\t\tthis.executeEnabled = true;\n\t\tthis.renderTarget = void 0;\n\t\tthis._options = void 0;\n\t\tthis.samples = 0;\n\t\tthis.colorArrayOps = [];\n\t\tthis.depthStencilOps = void 0;\n\t\tthis.requiresCubemaps = true;\n\t\tthis.fullSizeClearRect = true;\n\t\tthis.beforePasses = [];\n\t\tthis.afterPasses = [];\n\t\tthis.device = graphicsDevice;\n\t}\n\tset name(value) {\n\t\tthis._name = value;\n\t}\n\tget name() {\n\t\tif (!this._name) this._name = this.constructor.name;\n\t\treturn this._name;\n\t}\n\tset options(value) {\n\t\tthis._options = value;\n\t\tif (value) {\n\t\t\tvar _this$_options$scaleX, _this$_options$scaleY;\n\t\t\tthis._options.scaleX = (_this$_options$scaleX = this._options.scaleX) != null ? _this$_options$scaleX : 1;\n\t\t\tthis._options.scaleY = (_this$_options$scaleY = this._options.scaleY) != null ? _this$_options$scaleY : 1;\n\t\t}\n\t}\n\tget options() {\n\t\treturn this._options;\n\t}\n\tinit(renderTarget = null, options = null) {\n\t\tvar _renderTarget$_colorB;\n\t\tthis.options = options;\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.samples = Math.max(this.renderTarget ? this.renderTarget.samples : this.device.samples, 1);\n\t\tthis.depthStencilOps = new DepthStencilAttachmentOps();\n\t\tconst numColorOps = renderTarget ? (_renderTarget$_colorB = renderTarget._colorBuffers) == null ? void 0 : _renderTarget$_colorB.length : 1;\n\t\tthis.colorArrayOps.length = 0;\n\t\tfor (let i = 0; i < numColorOps; i++) {\n\t\t\tvar _this$renderTarget;\n\t\t\tconst colorOps = new ColorAttachmentOps();\n\t\t\tthis.colorArrayOps[i] = colorOps;\n\t\t\tif (this.samples === 1) {\n\t\t\t\tcolorOps.store = true;\n\t\t\t\tcolorOps.resolve = false;\n\t\t\t}\n\t\t\tif ((_this$renderTarget = this.renderTarget) != null && (_this$renderTarget = _this$renderTarget._colorBuffers) != null && _this$renderTarget[i].mipmaps) {\n\t\t\t\tcolorOps.mipmaps = true;\n\t\t\t}\n\t\t}\n\t\tthis.postInit();\n\t}\n\tdestroy() {}\n\tpostInit() {}\n\tframeUpdate() {\n\t\tif (this._options && this.renderTarget) {\n\t\t\tvar _this$_options$resize;\n\t\t\tconst resizeSource = (_this$_options$resize = this._options.resizeSource) != null ? _this$_options$resize : this.device.backBuffer;\n\t\t\tconst width = Math.floor(resizeSource.width * this._options.scaleX);\n\t\t\tconst height = Math.floor(resizeSource.height * this._options.scaleY);\n\t\t\tthis.renderTarget.resize(width, height);\n\t\t}\n\t}\n\tbefore() {}\n\texecute() {}\n\tafter() {}\n\tonEnable() {}\n\tonDisable() {}\n\tset enabled(value) {\n\t\tif (this._enabled !== value) {\n\t\t\tthis._enabled = value;\n\t\t\tif (value) {\n\t\t\t\tthis.onEnable();\n\t\t\t} else {\n\t\t\t\tthis.onDisable();\n\t\t\t}\n\t\t}\n\t}\n\tget enabled() {\n\t\treturn this._enabled;\n\t}\n\tsetClearColor(color) {\n\t\tconst count = this.colorArrayOps.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst colorOps = this.colorArrayOps[i];\n\t\t\tif (color) colorOps.clearValue.copy(color);\n\t\t\tcolorOps.clear = !!color;\n\t\t}\n\t}\n\tsetClearDepth(depthValue) {\n\t\tif (depthValue) this.depthStencilOps.clearDepthValue = depthValue;\n\t\tthis.depthStencilOps.clearDepth = depthValue !== undefined;\n\t}\n\tsetClearStencil(stencilValue) {\n\t\tif (stencilValue) this.depthStencilOps.clearStencilValue = stencilValue;\n\t\tthis.depthStencilOps.clearStencil = stencilValue !== undefined;\n\t}\n\trender() {\n\t\tif (this.enabled) {\n\t\t\tconst device = this.device;\n\t\t\tconst realPass = this.renderTarget !== undefined;\n\t\t\tthis.before();\n\t\t\tif (this.executeEnabled) {\n\t\t\t\tif (realPass) {\n\t\t\t\t\tdevice.startRenderPass(this);\n\t\t\t\t}\n\t\t\t\tthis.execute();\n\t\t\t\tif (realPass) {\n\t\t\t\t\tdevice.endRenderPass(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.after();\n\t\t\tdevice.renderPassIndex++;\n\t\t}\n\t}\n}\n\nexport { ColorAttachmentOps, DepthStencilAttachmentOps, RenderPass };\n", "import { BINDGROUP_VIEW } from './constants.js';\n\nclass ShaderProcessorOptions {\n\tconstructor(viewUniformFormat, viewBindGroupFormat, vertexFormat) {\n\t\tthis.uniformFormats = [];\n\t\tthis.bindGroupFormats = [];\n\t\tthis.vertexFormat = void 0;\n\t\tthis.uniformFormats[BINDGROUP_VIEW] = viewUniformFormat;\n\t\tthis.bindGroupFormats[BINDGROUP_VIEW] = viewBindGroupFormat;\n\t\tthis.vertexFormat = vertexFormat;\n\t}\n\thasUniform(name) {\n\t\tfor (let i = 0; i < this.uniformFormats.length; i++) {\n\t\t\tconst uniformFormat = this.uniformFormats[i];\n\t\t\tif (uniformFormat != null && uniformFormat.get(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\thasTexture(name) {\n\t\tfor (let i = 0; i < this.bindGroupFormats.length; i++) {\n\t\t\tconst groupFormat = this.bindGroupFormats[i];\n\t\t\tif (groupFormat != null && groupFormat.getTexture(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tgetVertexElement(semantic) {\n\t\tvar _this$vertexFormat;\n\t\treturn (_this$vertexFormat = this.vertexFormat) == null ? void 0 : _this$vertexFormat.elements.find(element => element.name === semantic);\n\t}\n\tgenerateKey(device) {\n\t\tlet key = JSON.stringify(this.uniformFormats) + JSON.stringify(this.bindGroupFormats);\n\t\tif (device.isWebGPU) {\n\t\t\tvar _this$vertexFormat2;\n\t\t\tkey += (_this$vertexFormat2 = this.vertexFormat) == null ? void 0 : _this$vertexFormat2.shaderProcessingHashString;\n\t\t}\n\t\treturn key;\n\t}\n}\n\nexport { ShaderProcessorOptions };\n", "import { typedArrayTypes } from './constants.js';\n\nfunction set1(a) {\n\tthis.array[this.index] = a;\n}\nfunction set2(a, b) {\n\tthis.array[this.index] = a;\n\tthis.array[this.index + 1] = b;\n}\nfunction set3(a, b, c) {\n\tthis.array[this.index] = a;\n\tthis.array[this.index + 1] = b;\n\tthis.array[this.index + 2] = c;\n}\nfunction set4(a, b, c, d) {\n\tthis.array[this.index] = a;\n\tthis.array[this.index + 1] = b;\n\tthis.array[this.index + 2] = c;\n\tthis.array[this.index + 3] = d;\n}\nfunction arraySet1(index, inputArray, inputIndex) {\n\tthis.array[index] = inputArray[inputIndex];\n}\nfunction arraySet2(index, inputArray, inputIndex) {\n\tthis.array[index] = inputArray[inputIndex];\n\tthis.array[index + 1] = inputArray[inputIndex + 1];\n}\nfunction arraySet3(index, inputArray, inputIndex) {\n\tthis.array[index] = inputArray[inputIndex];\n\tthis.array[index + 1] = inputArray[inputIndex + 1];\n\tthis.array[index + 2] = inputArray[inputIndex + 2];\n}\nfunction arraySet4(index, inputArray, inputIndex) {\n\tthis.array[index] = inputArray[inputIndex];\n\tthis.array[index + 1] = inputArray[inputIndex + 1];\n\tthis.array[index + 2] = inputArray[inputIndex + 2];\n\tthis.array[index + 3] = inputArray[inputIndex + 3];\n}\nfunction arrayGet1(offset, outputArray, outputIndex) {\n\toutputArray[outputIndex] = this.array[offset];\n}\nfunction arrayGet2(offset, outputArray, outputIndex) {\n\toutputArray[outputIndex] = this.array[offset];\n\toutputArray[outputIndex + 1] = this.array[offset + 1];\n}\nfunction arrayGet3(offset, outputArray, outputIndex) {\n\toutputArray[outputIndex] = this.array[offset];\n\toutputArray[outputIndex + 1] = this.array[offset + 1];\n\toutputArray[outputIndex + 2] = this.array[offset + 2];\n}\nfunction arrayGet4(offset, outputArray, outputIndex) {\n\toutputArray[outputIndex] = this.array[offset];\n\toutputArray[outputIndex + 1] = this.array[offset + 1];\n\toutputArray[outputIndex + 2] = this.array[offset + 2];\n\toutputArray[outputIndex + 3] = this.array[offset + 3];\n}\nclass VertexIteratorAccessor {\n\tconstructor(buffer, vertexElement, vertexFormat) {\n\t\tthis.index = 0;\n\t\tthis.numComponents = vertexElement.numComponents;\n\t\tif (vertexFormat.interleaved) {\n\t\t\tthis.array = new typedArrayTypes[vertexElement.dataType](buffer, vertexElement.offset);\n\t\t} else {\n\t\t\tthis.array = new typedArrayTypes[vertexElement.dataType](buffer, vertexElement.offset, vertexFormat.vertexCount * vertexElement.numComponents);\n\t\t}\n\t\tthis.stride = vertexElement.stride / this.array.constructor.BYTES_PER_ELEMENT;\n\t\tswitch (vertexElement.numComponents) {\n\t\t\tcase 1:\n\t\t\t\tthis.set = set1;\n\t\t\t\tthis.getToArray = arrayGet1;\n\t\t\t\tthis.setFromArray = arraySet1;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.set = set2;\n\t\t\t\tthis.getToArray = arrayGet2;\n\t\t\t\tthis.setFromArray = arraySet2;\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tthis.set = set3;\n\t\t\t\tthis.getToArray = arrayGet3;\n\t\t\t\tthis.setFromArray = arraySet3;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tthis.set = set4;\n\t\t\t\tthis.getToArray = arrayGet4;\n\t\t\t\tthis.setFromArray = arraySet4;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tget(offset) {\n\t\treturn this.array[this.index + offset];\n\t}\n\tset(a, b, c, d) {}\n\tgetToArray(offset, outputArray, outputIndex) {}\n\tsetFromArray(index, inputArray, inputIndex) {}\n}\nclass VertexIterator {\n\tconstructor(vertexBuffer) {\n\t\tthis.vertexBuffer = vertexBuffer;\n\t\tthis.vertexFormatSize = vertexBuffer.getFormat().size;\n\t\tthis.buffer = this.vertexBuffer.lock();\n\t\tthis.accessors = [];\n\t\tthis.element = {};\n\t\tconst vertexFormat = this.vertexBuffer.getFormat();\n\t\tfor (let i = 0; i < vertexFormat.elements.length; i++) {\n\t\t\tconst vertexElement = vertexFormat.elements[i];\n\t\t\tthis.accessors[i] = new VertexIteratorAccessor(this.buffer, vertexElement, vertexFormat);\n\t\t\tthis.element[vertexElement.name] = this.accessors[i];\n\t\t}\n\t}\n\tnext(count = 1) {\n\t\tlet i = 0;\n\t\tconst accessors = this.accessors;\n\t\tconst numAccessors = this.accessors.length;\n\t\twhile (i < numAccessors) {\n\t\t\tconst accessor = accessors[i++];\n\t\t\taccessor.index += count * accessor.stride;\n\t\t}\n\t}\n\tend() {\n\t\tthis.vertexBuffer.unlock();\n\t}\n\twriteData(semantic, data, numVertices) {\n\t\tconst element = this.element[semantic];\n\t\tif (element) {\n\t\t\tif (numVertices > this.vertexBuffer.numVertices) {\n\t\t\t\tnumVertices = this.vertexBuffer.numVertices;\n\t\t\t}\n\t\t\tconst numComponents = element.numComponents;\n\t\t\tif (this.vertexBuffer.getFormat().interleaved) {\n\t\t\t\tlet index = 0;\n\t\t\t\tfor (let i = 0; i < numVertices; i++) {\n\t\t\t\t\telement.setFromArray(index, data, i * numComponents);\n\t\t\t\t\tindex += element.stride;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (data.length > numVertices * numComponents) {\n\t\t\t\t\tconst copyCount = numVertices * numComponents;\n\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\tdata = data.subarray(0, copyCount);\n\t\t\t\t\t\telement.array.set(data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = 0; i < copyCount; i++) element.array[i] = data[i];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.array.set(data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treadData(semantic, data) {\n\t\tconst element = this.element[semantic];\n\t\tlet count = 0;\n\t\tif (element) {\n\t\t\tcount = this.vertexBuffer.numVertices;\n\t\t\tlet i;\n\t\t\tconst numComponents = element.numComponents;\n\t\t\tif (this.vertexBuffer.getFormat().interleaved) {\n\t\t\t\tif (Array.isArray(data)) data.length = 0;\n\t\t\t\telement.index = 0;\n\t\t\t\tlet offset = 0;\n\t\t\t\tfor (i = 0; i < count; i++) {\n\t\t\t\t\telement.getToArray(offset, data, i * numComponents);\n\t\t\t\t\toffset += element.stride;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\tdata.set(element.array);\n\t\t\t\t} else {\n\t\t\t\t\tdata.length = 0;\n\t\t\t\t\tconst copyCount = count * numComponents;\n\t\t\t\t\tfor (i = 0; i < copyCount; i++) data[i] = element.array[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n}\n\nexport { VertexIterator, VertexIteratorAccessor };\n", "const ACTION_MOUSE = 'mouse';\nconst ACTION_KEYBOARD = 'keyboard';\nconst ACTION_GAMEPAD = 'gamepad';\nconst AXIS_MOUSE_X = 'mousex';\nconst AXIS_MOUSE_Y = 'mousey';\nconst AXIS_PAD_L_X = 'padlx';\nconst AXIS_PAD_L_Y = 'padly';\nconst AXIS_PAD_R_X = 'padrx';\nconst AXIS_PAD_R_Y = 'padry';\nconst AXIS_KEY = 'key';\nconst EVENT_KEYDOWN = 'keydown';\nconst EVENT_KEYUP = 'keyup';\nconst EVENT_MOUSEDOWN = 'mousedown';\nconst EVENT_MOUSEMOVE = 'mousemove';\nconst EVENT_MOUSEUP = 'mouseup';\nconst EVENT_MOUSEWHEEL = 'mousewheel';\nconst EVENT_TOUCHSTART = 'touchstart';\nconst EVENT_TOUCHEND = 'touchend';\nconst EVENT_TOUCHMOVE = 'touchmove';\nconst EVENT_TOUCHCANCEL = 'touchcancel';\nconst EVENT_SELECT = 'select';\nconst EVENT_SELECTSTART = 'selectstart';\nconst EVENT_SELECTEND = 'selectend';\nconst KEY_BACKSPACE = 8;\nconst KEY_TAB = 9;\nconst KEY_RETURN = 13;\nconst KEY_ENTER = 13;\nconst KEY_SHIFT = 16;\nconst KEY_CONTROL = 17;\nconst KEY_ALT = 18;\nconst KEY_PAUSE = 19;\nconst KEY_CAPS_LOCK = 20;\nconst KEY_ESCAPE = 27;\nconst KEY_SPACE = 32;\nconst KEY_PAGE_UP = 33;\nconst KEY_PAGE_DOWN = 34;\nconst KEY_END = 35;\nconst KEY_HOME = 36;\nconst KEY_LEFT = 37;\nconst KEY_UP = 38;\nconst KEY_RIGHT = 39;\nconst KEY_DOWN = 40;\nconst KEY_PRINT_SCREEN = 44;\nconst KEY_INSERT = 45;\nconst KEY_DELETE = 46;\nconst KEY_0 = 48;\nconst KEY_1 = 49;\nconst KEY_2 = 50;\nconst KEY_3 = 51;\nconst KEY_4 = 52;\nconst KEY_5 = 53;\nconst KEY_6 = 54;\nconst KEY_7 = 55;\nconst KEY_8 = 56;\nconst KEY_9 = 57;\nconst KEY_SEMICOLON = 59;\nconst KEY_EQUAL = 61;\nconst KEY_A = 65;\nconst KEY_B = 66;\nconst KEY_C = 67;\nconst KEY_D = 68;\nconst KEY_E = 69;\nconst KEY_F = 70;\nconst KEY_G = 71;\nconst KEY_H = 72;\nconst KEY_I = 73;\nconst KEY_J = 74;\nconst KEY_K = 75;\nconst KEY_L = 76;\nconst KEY_M = 77;\nconst KEY_N = 78;\nconst KEY_O = 79;\nconst KEY_P = 80;\nconst KEY_Q = 81;\nconst KEY_R = 82;\nconst KEY_S = 83;\nconst KEY_T = 84;\nconst KEY_U = 85;\nconst KEY_V = 86;\nconst KEY_W = 87;\nconst KEY_X = 88;\nconst KEY_Y = 89;\nconst KEY_Z = 90;\nconst KEY_WINDOWS = 91;\nconst KEY_CONTEXT_MENU = 93;\nconst KEY_NUMPAD_0 = 96;\nconst KEY_NUMPAD_1 = 97;\nconst KEY_NUMPAD_2 = 98;\nconst KEY_NUMPAD_3 = 99;\nconst KEY_NUMPAD_4 = 100;\nconst KEY_NUMPAD_5 = 101;\nconst KEY_NUMPAD_6 = 102;\nconst KEY_NUMPAD_7 = 103;\nconst KEY_NUMPAD_8 = 104;\nconst KEY_NUMPAD_9 = 105;\nconst KEY_MULTIPLY = 106;\nconst KEY_ADD = 107;\nconst KEY_SEPARATOR = 108;\nconst KEY_SUBTRACT = 109;\nconst KEY_DECIMAL = 110;\nconst KEY_DIVIDE = 111;\nconst KEY_F1 = 112;\nconst KEY_F2 = 113;\nconst KEY_F3 = 114;\nconst KEY_F4 = 115;\nconst KEY_F5 = 116;\nconst KEY_F6 = 117;\nconst KEY_F7 = 118;\nconst KEY_F8 = 119;\nconst KEY_F9 = 120;\nconst KEY_F10 = 121;\nconst KEY_F11 = 122;\nconst KEY_F12 = 123;\nconst KEY_COMMA = 188;\nconst KEY_PERIOD = 190;\nconst KEY_SLASH = 191;\nconst KEY_OPEN_BRACKET = 219;\nconst KEY_BACK_SLASH = 220;\nconst KEY_CLOSE_BRACKET = 221;\nconst KEY_META = 224;\nconst MOUSEBUTTON_NONE = -1;\nconst MOUSEBUTTON_LEFT = 0;\nconst MOUSEBUTTON_MIDDLE = 1;\nconst MOUSEBUTTON_RIGHT = 2;\nconst PAD_1 = 0;\nconst PAD_2 = 1;\nconst PAD_3 = 2;\nconst PAD_4 = 3;\nconst PAD_FACE_1 = 0;\nconst PAD_FACE_2 = 1;\nconst PAD_FACE_3 = 2;\nconst PAD_FACE_4 = 3;\nconst PAD_L_SHOULDER_1 = 4;\nconst PAD_R_SHOULDER_1 = 5;\nconst PAD_L_SHOULDER_2 = 6;\nconst PAD_R_SHOULDER_2 = 7;\nconst PAD_SELECT = 8;\nconst PAD_START = 9;\nconst PAD_L_STICK_BUTTON = 10;\nconst PAD_R_STICK_BUTTON = 11;\nconst PAD_UP = 12;\nconst PAD_DOWN = 13;\nconst PAD_LEFT = 14;\nconst PAD_RIGHT = 15;\nconst PAD_VENDOR = 16;\nconst PAD_L_STICK_X = 0;\nconst PAD_L_STICK_Y = 1;\nconst PAD_R_STICK_X = 2;\nconst PAD_R_STICK_Y = 3;\nconst EVENT_GAMEPADCONNECTED = 'gamepadconnected';\nconst EVENT_GAMEPADDISCONNECTED = 'gamepaddisconnected';\nconst XRPAD_TOUCHPAD_X = 0;\nconst XRPAD_TOUCHPAD_Y = 1;\nconst XRPAD_STICK_X = 2;\nconst XRPAD_STICK_Y = 3;\nconst XRPAD_TOUCHPAD_BUTTON = 2;\nconst XRPAD_TRIGGER = 0;\nconst XRPAD_SQUEEZE = 1;\nconst XRPAD_STICK_BUTTON = 3;\nconst XRPAD_A = 4;\nconst XRPAD_B = 5;\n\nexport { ACTION_GAMEPAD, ACTION_KEYBOARD, ACTION_MOUSE, AXIS_KEY, AXIS_MOUSE_X, AXIS_MOUSE_Y, AXIS_PAD_L_X, AXIS_PAD_L_Y, AXIS_PAD_R_X, AXIS_PAD_R_Y, EVENT_GAMEPADCONNECTED, EVENT_GAMEPADDISCONNECTED, EVENT_KEYDOWN, EVENT_KEYUP, EVENT_MOUSEDOWN, EVENT_MOUSEMOVE, EVENT_MOUSEUP, EVENT_MOUSEWHEEL, EVENT_SELECT, EVENT_SELECTEND, EVENT_SELECTSTART, EVENT_TOUCHCANCEL, EVENT_TOUCHEND, EVENT_TOUCHMOVE, EVENT_TOUCHSTART, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_A, KEY_ADD, KEY_ALT, KEY_B, KEY_BACKSPACE, KEY_BACK_SLASH, KEY_C, KEY_CAPS_LOCK, KEY_CLOSE_BRACKET, KEY_COMMA, KEY_CONTEXT_MENU, KEY_CONTROL, KEY_D, KEY_DECIMAL, KEY_DELETE, KEY_DIVIDE, KEY_DOWN, KEY_E, KEY_END, KEY_ENTER, KEY_EQUAL, KEY_ESCAPE, KEY_F, KEY_F1, KEY_F10, KEY_F11, KEY_F12, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_G, KEY_H, KEY_HOME, KEY_I, KEY_INSERT, KEY_J, KEY_K, KEY_L, KEY_LEFT, KEY_M, KEY_META, KEY_MULTIPLY, KEY_N, KEY_NUMPAD_0, KEY_NUMPAD_1, KEY_NUMPAD_2, KEY_NUMPAD_3, KEY_NUMPAD_4, KEY_NUMPAD_5, KEY_NUMPAD_6, KEY_NUMPAD_7, KEY_NUMPAD_8, KEY_NUMPAD_9, KEY_O, KEY_OPEN_BRACKET, KEY_P, KEY_PAGE_DOWN, KEY_PAGE_UP, KEY_PAUSE, KEY_PERIOD, KEY_PRINT_SCREEN, KEY_Q, KEY_R, KEY_RETURN, KEY_RIGHT, KEY_S, KEY_SEMICOLON, KEY_SEPARATOR, KEY_SHIFT, KEY_SLASH, KEY_SPACE, KEY_SUBTRACT, KEY_T, KEY_TAB, KEY_U, KEY_UP, KEY_V, KEY_W, KEY_WINDOWS, KEY_X, KEY_Y, KEY_Z, MOUSEBUTTON_LEFT, MOUSEBUTTON_MIDDLE, MOUSEBUTTON_NONE, MOUSEBUTTON_RIGHT, PAD_1, PAD_2, PAD_3, PAD_4, PAD_DOWN, PAD_FACE_1, PAD_FACE_2, PAD_FACE_3, PAD_FACE_4, PAD_LEFT, PAD_L_SHOULDER_1, PAD_L_SHOULDER_2, PAD_L_STICK_BUTTON, PAD_L_STICK_X, PAD_L_STICK_Y, PAD_RIGHT, PAD_R_SHOULDER_1, PAD_R_SHOULDER_2, PAD_R_STICK_BUTTON, PAD_R_STICK_X, PAD_R_STICK_Y, PAD_SELECT, PAD_START, PAD_UP, PAD_VENDOR, XRPAD_A, XRPAD_B, XRPAD_SQUEEZE, XRPAD_STICK_BUTTON, XRPAD_STICK_X, XRPAD_STICK_Y, XRPAD_TOUCHPAD_BUTTON, XRPAD_TOUCHPAD_X, XRPAD_TOUCHPAD_Y, XRPAD_TRIGGER };\n", "import { MOUSEBUTTON_NONE } from './constants.js';\n\nfunction isMousePointerLocked() {\n\treturn !!(document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement);\n}\nclass MouseEvent {\n\tconstructor(mouse, event) {\n\t\tvar _event$ctrlKey, _event$altKey, _event$shiftKey, _event$metaKey;\n\t\tthis.x = 0;\n\t\tthis.y = 0;\n\t\tthis.dx = 0;\n\t\tthis.dy = 0;\n\t\tthis.button = MOUSEBUTTON_NONE;\n\t\tthis.wheelDelta = 0;\n\t\tthis.element = void 0;\n\t\tthis.ctrlKey = false;\n\t\tthis.altKey = false;\n\t\tthis.shiftKey = false;\n\t\tthis.metaKey = false;\n\t\tthis.event = void 0;\n\t\tlet coords = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t\tif (event) {\n\t\t\tif (event instanceof MouseEvent) {\n\t\t\t\tthrow Error('Expected MouseEvent');\n\t\t\t}\n\t\t\tcoords = mouse._getTargetCoords(event);\n\t\t} else {\n\t\t\tevent = {};\n\t\t}\n\t\tif (coords) {\n\t\t\tthis.x = coords.x;\n\t\t\tthis.y = coords.y;\n\t\t} else if (isMousePointerLocked()) {\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t\tif (event.type === 'wheel') {\n\t\t\tif (event.deltaY > 0) {\n\t\t\t\tthis.wheelDelta = 1;\n\t\t\t} else if (event.deltaY < 0) {\n\t\t\t\tthis.wheelDelta = -1;\n\t\t\t}\n\t\t}\n\t\tif (isMousePointerLocked()) {\n\t\t\tthis.dx = event.movementX || event.webkitMovementX || event.mozMovementX || 0;\n\t\t\tthis.dy = event.movementY || event.webkitMovementY || event.mozMovementY || 0;\n\t\t} else {\n\t\t\tthis.dx = this.x - mouse._lastX;\n\t\t\tthis.dy = this.y - mouse._lastY;\n\t\t}\n\t\tif (event.type === 'mousedown' || event.type === 'mouseup') {\n\t\t\tthis.button = event.button;\n\t\t}\n\t\tthis.buttons = mouse._buttons.slice(0);\n\t\tthis.element = event.target;\n\t\tthis.ctrlKey = (_event$ctrlKey = event.ctrlKey) != null ? _event$ctrlKey : false;\n\t\tthis.altKey = (_event$altKey = event.altKey) != null ? _event$altKey : false;\n\t\tthis.shiftKey = (_event$shiftKey = event.shiftKey) != null ? _event$shiftKey : false;\n\t\tthis.metaKey = (_event$metaKey = event.metaKey) != null ? _event$metaKey : false;\n\t\tthis.event = event;\n\t}\n}\n\nexport { MouseEvent, isMousePointerLocked };\n", "import { platform } from '../../core/platform.js';\nimport { EventHandler } from '../../core/event-handler.js';\nimport { EVENT_MOUSEUP, EVENT_MOUSEDOWN, EVENT_MOUSEMOVE, EVENT_MOUSEWHEEL } from './constants.js';\nimport { isMousePointerLocked, MouseEvent } from './mouse-event.js';\n\nclass Mouse extends EventHandler {\n\tconstructor(element) {\n\t\tsuper();\n\t\tthis._lastX = 0;\n\t\tthis._lastY = 0;\n\t\tthis._buttons = [false, false, false];\n\t\tthis._lastbuttons = [false, false, false];\n\t\tthis._target = null;\n\t\tthis._attached = false;\n\t\tthis._upHandler = this._handleUp.bind(this);\n\t\tthis._downHandler = this._handleDown.bind(this);\n\t\tthis._moveHandler = this._handleMove.bind(this);\n\t\tthis._wheelHandler = this._handleWheel.bind(this);\n\t\tthis._contextMenuHandler = event => {\n\t\t\tevent.preventDefault();\n\t\t};\n\t\tthis.attach(element);\n\t}\n\tstatic isPointerLocked() {\n\t\treturn isMousePointerLocked();\n\t}\n\tattach(element) {\n\t\tthis._target = element;\n\t\tif (this._attached) return;\n\t\tthis._attached = true;\n\t\tconst passiveOptions = {\n\t\t\tpassive: false\n\t\t};\n\t\tconst options = platform.passiveEvents ? passiveOptions : false;\n\t\twindow.addEventListener('mouseup', this._upHandler, options);\n\t\twindow.addEventListener('mousedown', this._downHandler, options);\n\t\twindow.addEventListener('mousemove', this._moveHandler, options);\n\t\twindow.addEventListener('wheel', this._wheelHandler, options);\n\t}\n\tdetach() {\n\t\tif (!this._attached) return;\n\t\tthis._attached = false;\n\t\tthis._target = null;\n\t\tconst passiveOptions = {\n\t\t\tpassive: false\n\t\t};\n\t\tconst options = platform.passiveEvents ? passiveOptions : false;\n\t\twindow.removeEventListener('mouseup', this._upHandler, options);\n\t\twindow.removeEventListener('mousedown', this._downHandler, options);\n\t\twindow.removeEventListener('mousemove', this._moveHandler, options);\n\t\twindow.removeEventListener('wheel', this._wheelHandler, options);\n\t}\n\tdisableContextMenu() {\n\t\tif (!this._target) return;\n\t\tthis._target.addEventListener('contextmenu', this._contextMenuHandler);\n\t}\n\tenableContextMenu() {\n\t\tif (!this._target) return;\n\t\tthis._target.removeEventListener('contextmenu', this._contextMenuHandler);\n\t}\n\tenablePointerLock(success, error) {\n\t\tif (!document.body.requestPointerLock) {\n\t\t\tif (error) error();\n\t\t\treturn;\n\t\t}\n\t\tconst s = () => {\n\t\t\tsuccess();\n\t\t\tdocument.removeEventListener('pointerlockchange', s);\n\t\t};\n\t\tconst e = () => {\n\t\t\terror();\n\t\t\tdocument.removeEventListener('pointerlockerror', e);\n\t\t};\n\t\tif (success) {\n\t\t\tdocument.addEventListener('pointerlockchange', s, false);\n\t\t}\n\t\tif (error) {\n\t\t\tdocument.addEventListener('pointerlockerror', e, false);\n\t\t}\n\t\tdocument.body.requestPointerLock();\n\t}\n\tdisablePointerLock(success) {\n\t\tif (!document.exitPointerLock) {\n\t\t\treturn;\n\t\t}\n\t\tconst s = () => {\n\t\t\tsuccess();\n\t\t\tdocument.removeEventListener('pointerlockchange', s);\n\t\t};\n\t\tif (success) {\n\t\t\tdocument.addEventListener('pointerlockchange', s, false);\n\t\t}\n\t\tdocument.exitPointerLock();\n\t}\n\tupdate() {\n\t\tthis._lastbuttons[0] = this._buttons[0];\n\t\tthis._lastbuttons[1] = this._buttons[1];\n\t\tthis._lastbuttons[2] = this._buttons[2];\n\t}\n\tisPressed(button) {\n\t\treturn this._buttons[button];\n\t}\n\twasPressed(button) {\n\t\treturn this._buttons[button] && !this._lastbuttons[button];\n\t}\n\twasReleased(button) {\n\t\treturn !this._buttons[button] && this._lastbuttons[button];\n\t}\n\t_handleUp(event) {\n\t\tthis._buttons[event.button] = false;\n\t\tconst e = new MouseEvent(this, event);\n\t\tif (!e.event) return;\n\t\tthis.fire(EVENT_MOUSEUP, e);\n\t}\n\t_handleDown(event) {\n\t\tthis._buttons[event.button] = true;\n\t\tconst e = new MouseEvent(this, event);\n\t\tif (!e.event) return;\n\t\tthis.fire(EVENT_MOUSEDOWN, e);\n\t}\n\t_handleMove(event) {\n\t\tconst e = new MouseEvent(this, event);\n\t\tif (!e.event) return;\n\t\tthis.fire(EVENT_MOUSEMOVE, e);\n\t\tthis._lastX = e.x;\n\t\tthis._lastY = e.y;\n\t}\n\t_handleWheel(event) {\n\t\tconst e = new MouseEvent(this, event);\n\t\tif (!e.event) return;\n\t\tthis.fire(EVENT_MOUSEWHEEL, e);\n\t}\n\t_getTargetCoords(event) {\n\t\tconst rect = this._target.getBoundingClientRect();\n\t\tconst left = Math.floor(rect.left);\n\t\tconst top = Math.floor(rect.top);\n\t\tif (event.clientX < left || event.clientX >= left + this._target.clientWidth || event.clientY < top || event.clientY >= top + this._target.clientHeight) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tx: event.clientX - left,\n\t\t\ty: event.clientY - top\n\t\t};\n\t}\n}\nMouse.EVENT_MOUSEMOVE = EVENT_MOUSEMOVE;\nMouse.EVENT_MOUSEDOWN = EVENT_MOUSEDOWN;\nMouse.EVENT_MOUSEUP = EVENT_MOUSEUP;\nMouse.EVENT_MOUSEWHEEL = EVENT_MOUSEWHEEL;\n\nexport { Mouse };\n", "import { extend } from '../../core/core.js';\nimport { now } from '../../core/time.js';\nimport { path } from '../../core/path.js';\nimport { URI } from '../../core/uri.js';\nimport { math } from '../../core/math/math.js';\n\nclass Http {\n\tget(url, options, callback) {\n\t\tif (typeof options === 'function') {\n\t\t\tcallback = options;\n\t\t\toptions = {};\n\t\t}\n\t\treturn this.request('GET', url, options, callback);\n\t}\n\tpost(url, data, options, callback) {\n\t\tif (typeof options === 'function') {\n\t\t\tcallback = options;\n\t\t\toptions = {};\n\t\t}\n\t\toptions.postdata = data;\n\t\treturn this.request('POST', url, options, callback);\n\t}\n\tput(url, data, options, callback) {\n\t\tif (typeof options === 'function') {\n\t\t\tcallback = options;\n\t\t\toptions = {};\n\t\t}\n\t\toptions.postdata = data;\n\t\treturn this.request('PUT', url, options, callback);\n\t}\n\tdel(url, options, callback) {\n\t\tif (typeof options === 'function') {\n\t\t\tcallback = options;\n\t\t\toptions = {};\n\t\t}\n\t\treturn this.request('DELETE', url, options, callback);\n\t}\n\trequest(method, url, options, callback) {\n\t\tlet uri, query, postdata;\n\t\tlet errored = false;\n\t\tif (typeof options === 'function') {\n\t\t\tcallback = options;\n\t\t\toptions = {};\n\t\t}\n\t\tif (options.retry) {\n\t\t\toptions = Object.assign({\n\t\t\t\tretries: 0,\n\t\t\t\tmaxRetries: 5\n\t\t\t}, options);\n\t\t}\n\t\toptions.callback = callback;\n\t\tif (options.async == null) {\n\t\t\toptions.async = true;\n\t\t}\n\t\tif (options.headers == null) {\n\t\t\toptions.headers = {};\n\t\t}\n\t\tif (options.postdata != null) {\n\t\t\tif (options.postdata instanceof Document) {\n\t\t\t\tpostdata = options.postdata;\n\t\t\t} else if (options.postdata instanceof FormData) {\n\t\t\t\tpostdata = options.postdata;\n\t\t\t} else if (options.postdata instanceof Object) {\n\t\t\t\tlet contentType = options.headers['Content-Type'];\n\t\t\t\tif (contentType === undefined) {\n\t\t\t\t\toptions.headers['Content-Type'] = Http.ContentType.FORM_URLENCODED;\n\t\t\t\t\tcontentType = options.headers['Content-Type'];\n\t\t\t\t}\n\t\t\t\tswitch (contentType) {\n\t\t\t\t\tcase Http.ContentType.FORM_URLENCODED:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpostdata = '';\n\t\t\t\t\t\t\tlet bFirstItem = true;\n\t\t\t\t\t\t\tfor (const key in options.postdata) {\n\t\t\t\t\t\t\t\tif (options.postdata.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\t\tif (bFirstItem) {\n\t\t\t\t\t\t\t\t\t\tbFirstItem = false;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpostdata += '&';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\t\t\t\t\t\t\tconst encodedValue = encodeURIComponent(options.postdata[key]);\n\t\t\t\t\t\t\t\t\tpostdata += `${encodedKey}=${encodedValue}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\tcase Http.ContentType.JSON:\n\t\t\t\t\t\tif (contentType == null) {\n\t\t\t\t\t\t\toptions.headers['Content-Type'] = Http.ContentType.JSON;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostdata = JSON.stringify(options.postdata);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpostdata = options.postdata;\n\t\t\t}\n\t\t}\n\t\tif (options.cache === false) {\n\t\t\tconst timestamp = now();\n\t\t\turi = new URI(url);\n\t\t\tif (!uri.query) {\n\t\t\t\turi.query = 'ts=' + timestamp;\n\t\t\t} else {\n\t\t\t\turi.query = uri.query + '&ts=' + timestamp;\n\t\t\t}\n\t\t\turl = uri.toString();\n\t\t}\n\t\tif (options.query) {\n\t\t\turi = new URI(url);\n\t\t\tquery = extend(uri.getQuery(), options.query);\n\t\t\turi.setQuery(query);\n\t\t\turl = uri.toString();\n\t\t}\n\t\tconst xhr = new XMLHttpRequest();\n\t\txhr.open(method, url, options.async);\n\t\txhr.withCredentials = options.withCredentials !== undefined ? options.withCredentials : false;\n\t\txhr.responseType = options.responseType || this._guessResponseType(url);\n\t\tfor (const header in options.headers) {\n\t\t\tif (options.headers.hasOwnProperty(header)) {\n\t\t\t\txhr.setRequestHeader(header, options.headers[header]);\n\t\t\t}\n\t\t}\n\t\txhr.onreadystatechange = () => {\n\t\t\tthis._onReadyStateChange(method, url, options, xhr);\n\t\t};\n\t\txhr.onerror = () => {\n\t\t\tthis._onError(method, url, options, xhr);\n\t\t\terrored = true;\n\t\t};\n\t\ttry {\n\t\t\txhr.send(postdata);\n\t\t} catch (e) {\n\t\t\tif (!errored) {\n\t\t\t\toptions.error(xhr.status, xhr, e);\n\t\t\t}\n\t\t}\n\t\treturn xhr;\n\t}\n\t_guessResponseType(url) {\n\t\tconst uri = new URI(url);\n\t\tconst ext = path.getExtension(uri.path).toLowerCase();\n\t\tif (Http.binaryExtensions.indexOf(ext) >= 0) {\n\t\t\treturn Http.ResponseType.ARRAY_BUFFER;\n\t\t} else if (ext === '.json') {\n\t\t\treturn Http.ResponseType.JSON;\n\t\t} else if (ext === '.xml') {\n\t\t\treturn Http.ResponseType.DOCUMENT;\n\t\t}\n\t\treturn Http.ResponseType.TEXT;\n\t}\n\t_isBinaryContentType(contentType) {\n\t\tconst binTypes = [Http.ContentType.BASIS, Http.ContentType.BIN, Http.ContentType.DDS, Http.ContentType.GLB, Http.ContentType.MP3, Http.ContentType.MP4, Http.ContentType.OGG, Http.ContentType.OPUS, Http.ContentType.WAV];\n\t\tif (binTypes.indexOf(contentType) >= 0) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t_isBinaryResponseType(responseType) {\n\t\treturn responseType === Http.ResponseType.ARRAY_BUFFER || responseType === Http.ResponseType.BLOB || responseType === Http.ResponseType.JSON;\n\t}\n\t_onReadyStateChange(method, url, options, xhr) {\n\t\tif (xhr.readyState === 4) {\n\t\t\tswitch (xhr.status) {\n\t\t\t\tcase 0:\n\t\t\t\t\t{\n\t\t\t\t\t\tif (xhr.responseURL && xhr.responseURL.startsWith('file:///')) {\n\t\t\t\t\t\t\tthis._onSuccess(method, url, options, xhr);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._onError(method, url, options, xhr);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase 200:\n\t\t\t\tcase 201:\n\t\t\t\tcase 206:\n\t\t\t\tcase 304:\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._onSuccess(method, url, options, xhr);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._onError(method, url, options, xhr);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t_onSuccess(method, url, options, xhr) {\n\t\tlet response;\n\t\tlet contentType;\n\t\tconst header = xhr.getResponseHeader('Content-Type');\n\t\tif (header) {\n\t\t\tconst parts = header.split(';');\n\t\t\tcontentType = parts[0].trim();\n\t\t}\n\t\ttry {\n\t\t\tif (this._isBinaryContentType(contentType) || this._isBinaryResponseType(xhr.responseType)) {\n\t\t\t\tresponse = xhr.response;\n\t\t\t} else if (contentType === Http.ContentType.JSON || url.split('?')[0].endsWith('.json')) {\n\t\t\t\tresponse = JSON.parse(xhr.responseText);\n\t\t\t} else if (xhr.responseType === Http.ResponseType.DOCUMENT || contentType === Http.ContentType.XML) {\n\t\t\t\tresponse = xhr.responseXML;\n\t\t\t} else {\n\t\t\t\tresponse = xhr.responseText;\n\t\t\t}\n\t\t\toptions.callback(null, response);\n\t\t} catch (err) {\n\t\t\toptions.callback(err);\n\t\t}\n\t}\n\t_onError(method, url, options, xhr) {\n\t\tif (options.retrying) {\n\t\t\treturn;\n\t\t}\n\t\tif (options.retry && options.retries < options.maxRetries) {\n\t\t\toptions.retries++;\n\t\t\toptions.retrying = true;\n\t\t\tconst retryDelay = math.clamp(Math.pow(2, options.retries) * Http.retryDelay, 0, options.maxRetryDelay || 5000);\n\t\t\tconsole.log(`${method}: ${url} - Error ${xhr.status}. Retrying in ${retryDelay} ms`);\n\t\t\tsetTimeout(() => {\n\t\t\t\toptions.retrying = false;\n\t\t\t\tthis.request(method, url, options, options.callback);\n\t\t\t}, retryDelay);\n\t\t} else {\n\t\t\toptions.callback(xhr.status === 0 ? 'Network error' : xhr.status, null);\n\t\t}\n\t}\n}\nHttp.ContentType = {\n\tAAC: 'audio/aac',\n\tBASIS: 'image/basis',\n\tBIN: 'application/octet-stream',\n\tDDS: 'image/dds',\n\tFORM_URLENCODED: 'application/x-www-form-urlencoded',\n\tGIF: 'image/gif',\n\tGLB: 'model/gltf-binary',\n\tJPEG: 'image/jpeg',\n\tJSON: 'application/json',\n\tMP3: 'audio/mpeg',\n\tMP4: 'audio/mp4',\n\tOGG: 'audio/ogg',\n\tOPUS: 'audio/ogg; codecs=\"opus\"',\n\tPNG: 'image/png',\n\tTEXT: 'text/plain',\n\tWAV: 'audio/x-wav',\n\tXML: 'application/xml'\n};\nHttp.ResponseType = {\n\tTEXT: 'text',\n\tARRAY_BUFFER: 'arraybuffer',\n\tBLOB: 'blob',\n\tDOCUMENT: 'document',\n\tJSON: 'json'\n};\nHttp.binaryExtensions = ['.model', '.wav', '.ogg', '.mp3', '.mp4', '.m4a', '.aac', '.dds', '.basis', '.glb', '.opus'];\nHttp.retryDelay = 100;\nconst http = new Http();\n\nexport { Http, http };\n", "function hasAudioContext() {\n\treturn !!(typeof AudioContext !== 'undefined' || typeof webkitAudioContext !== 'undefined');\n}\n\nexport { hasAudioContext };\n", "import { math } from '../../core/math/math.js';\nimport { hasAudioContext } from './capabilities.js';\n\nclass Channel {\n\tconstructor(manager, sound, options = {}) {\n\t\tvar _options$volume, _options$loop, _options$pitch;\n\t\tthis.volume = (_options$volume = options.volume) != null ? _options$volume : 1;\n\t\tthis.loop = (_options$loop = options.loop) != null ? _options$loop : false;\n\t\tthis.pitch = (_options$pitch = options.pitch) != null ? _options$pitch : 1;\n\t\tthis.sound = sound;\n\t\tthis.paused = false;\n\t\tthis.suspended = false;\n\t\tthis.manager = manager;\n\t\tthis.source = null;\n\t\tif (hasAudioContext()) {\n\t\t\tthis.startTime = 0;\n\t\t\tthis.startOffset = 0;\n\t\t\tconst context = manager.context;\n\t\t\tthis.gain = context.createGain();\n\t\t} else if (sound.audio) {\n\t\t\tthis.source = sound.audio.cloneNode(false);\n\t\t\tthis.source.pause();\n\t\t}\n\t}\n\tgetVolume() {\n\t\treturn this.volume;\n\t}\n\tgetLoop() {\n\t\treturn this.loop;\n\t}\n\tsetLoop(loop) {\n\t\tthis.loop = loop;\n\t\tif (this.source) {\n\t\t\tthis.source.loop = loop;\n\t\t}\n\t}\n\tgetPitch() {\n\t\treturn this.pitch;\n\t}\n\tonManagerVolumeChange() {\n\t\tthis.setVolume(this.getVolume());\n\t}\n\tonManagerSuspend() {\n\t\tif (this.isPlaying() && !this.suspended) {\n\t\t\tthis.suspended = true;\n\t\t\tthis.pause();\n\t\t}\n\t}\n\tonManagerResume() {\n\t\tif (this.suspended) {\n\t\t\tthis.suspended = false;\n\t\t\tthis.unpause();\n\t\t}\n\t}\n\tplay() {\n\t\tif (this.source) {\n\t\t\tthrow new Error('Call stop() before calling play()');\n\t\t}\n\t\tthis._createSource();\n\t\tif (!this.source) {\n\t\t\treturn;\n\t\t}\n\t\tthis.startTime = this.manager.context.currentTime;\n\t\tthis.source.start(0, this.startOffset % this.source.buffer.duration);\n\t\tthis.setVolume(this.volume);\n\t\tthis.setLoop(this.loop);\n\t\tthis.setPitch(this.pitch);\n\t\tthis.manager.on('volumechange', this.onManagerVolumeChange, this);\n\t\tthis.manager.on('suspend', this.onManagerSuspend, this);\n\t\tthis.manager.on('resume', this.onManagerResume, this);\n\t\tif (this.manager.suspended) this.onManagerSuspend();\n\t}\n\tpause() {\n\t\tif (this.source) {\n\t\t\tthis.paused = true;\n\t\t\tthis.startOffset += this.manager.context.currentTime - this.startTime;\n\t\t\tthis.source.stop(0);\n\t\t\tthis.source = null;\n\t\t}\n\t}\n\tunpause() {\n\t\tif (this.source || !this.paused) {\n\t\t\tconsole.warn('Call pause() before unpausing.');\n\t\t\treturn;\n\t\t}\n\t\tthis._createSource();\n\t\tif (!this.source) {\n\t\t\treturn;\n\t\t}\n\t\tthis.startTime = this.manager.context.currentTime;\n\t\tthis.source.start(0, this.startOffset % this.source.buffer.duration);\n\t\tthis.setVolume(this.volume);\n\t\tthis.setLoop(this.loop);\n\t\tthis.setPitch(this.pitch);\n\t\tthis.paused = false;\n\t}\n\tstop() {\n\t\tif (this.source) {\n\t\t\tthis.source.stop(0);\n\t\t\tthis.source = null;\n\t\t}\n\t\tthis.manager.off('volumechange', this.onManagerVolumeChange, this);\n\t\tthis.manager.off('suspend', this.onManagerSuspend, this);\n\t\tthis.manager.off('resume', this.onManagerResume, this);\n\t}\n\tsetVolume(volume) {\n\t\tvolume = math.clamp(volume, 0, 1);\n\t\tthis.volume = volume;\n\t\tif (this.gain) {\n\t\t\tthis.gain.gain.value = volume * this.manager.volume;\n\t\t}\n\t}\n\tsetPitch(pitch) {\n\t\tthis.pitch = pitch;\n\t\tif (this.source) {\n\t\t\tthis.source.playbackRate.value = pitch;\n\t\t}\n\t}\n\tisPlaying() {\n\t\treturn !this.paused && this.source.playbackState === this.source.PLAYING_STATE;\n\t}\n\tgetDuration() {\n\t\treturn this.source ? this.source.buffer.duration : 0;\n\t}\n\t_createSource() {\n\t\tconst context = this.manager.context;\n\t\tif (this.sound.buffer) {\n\t\t\tthis.source = context.createBufferSource();\n\t\t\tthis.source.buffer = this.sound.buffer;\n\t\t\tthis.source.connect(this.gain);\n\t\t\tthis.gain.connect(context.destination);\n\t\t\tif (!this.loop) {\n\t\t\t\tthis.source.onended = this.pause.bind(this);\n\t\t\t}\n\t\t}\n\t}\n}\nif (!hasAudioContext()) {\n\tObject.assign(Channel.prototype, {\n\t\tplay: function () {\n\t\t\tif (this.source) {\n\t\t\t\tthis.paused = false;\n\t\t\t\tthis.setVolume(this.volume);\n\t\t\t\tthis.setLoop(this.loop);\n\t\t\t\tthis.setPitch(this.pitch);\n\t\t\t\tthis.source.play();\n\t\t\t}\n\t\t\tthis.manager.on('volumechange', this.onManagerVolumeChange, this);\n\t\t\tthis.manager.on('suspend', this.onManagerSuspend, this);\n\t\t\tthis.manager.on('resume', this.onManagerResume, this);\n\t\t\tif (this.manager.suspended) this.onManagerSuspend();\n\t\t},\n\t\tpause: function () {\n\t\t\tif (this.source) {\n\t\t\t\tthis.paused = true;\n\t\t\t\tthis.source.pause();\n\t\t\t}\n\t\t},\n\t\tunpause: function () {\n\t\t\tif (this.source) {\n\t\t\t\tthis.paused = false;\n\t\t\t\tthis.source.play();\n\t\t\t}\n\t\t},\n\t\tstop: function () {\n\t\t\tif (this.source) {\n\t\t\t\tthis.source.pause();\n\t\t\t}\n\t\t\tthis.manager.off('volumechange', this.onManagerVolumeChange, this);\n\t\t\tthis.manager.off('suspend', this.onManagerSuspend, this);\n\t\t\tthis.manager.off('resume', this.onManagerResume, this);\n\t\t},\n\t\tsetVolume: function (volume) {\n\t\t\tvolume = math.clamp(volume, 0, 1);\n\t\t\tthis.volume = volume;\n\t\t\tif (this.source) {\n\t\t\t\tthis.source.volume = volume * this.manager.volume;\n\t\t\t}\n\t\t},\n\t\tsetPitch: function (pitch) {\n\t\t\tthis.pitch = pitch;\n\t\t\tif (this.source) {\n\t\t\t\tthis.source.playbackRate = pitch;\n\t\t\t}\n\t\t},\n\t\tgetDuration: function () {\n\t\t\treturn this.source && !isNaN(this.source.duration) ? this.source.duration : 0;\n\t\t},\n\t\tisPlaying: function () {\n\t\t\treturn !this.source.paused;\n\t\t}\n\t});\n}\n\nexport { Channel };\n", "import { math } from '../../core/math/math.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { DISTANCE_INVERSE, DISTANCE_LINEAR, DISTANCE_EXPONENTIAL } from './constants.js';\nimport { hasAudioContext } from './capabilities.js';\nimport { Channel } from './channel.js';\n\nconst MAX_DISTANCE = 10000;\nclass Channel3d extends Channel {\n\tconstructor(manager, sound, options) {\n\t\tsuper(manager, sound, options);\n\t\tthis.position = new Vec3();\n\t\tthis.velocity = new Vec3();\n\t\tif (hasAudioContext()) {\n\t\t\tthis.panner = manager.context.createPanner();\n\t\t} else {\n\t\t\tthis.maxDistance = MAX_DISTANCE;\n\t\t\tthis.minDistance = 1;\n\t\t\tthis.rollOffFactor = 1;\n\t\t\tthis.distanceModel = DISTANCE_INVERSE;\n\t\t}\n\t}\n\tgetPosition() {\n\t\treturn this.position;\n\t}\n\tsetPosition(position) {\n\t\tthis.position.copy(position);\n\t\tconst panner = this.panner;\n\t\tif ('positionX' in panner) {\n\t\t\tpanner.positionX.value = position.x;\n\t\t\tpanner.positionY.value = position.y;\n\t\t\tpanner.positionZ.value = position.z;\n\t\t} else if (panner.setPosition) {\n\t\t\tpanner.setPosition(position.x, position.y, position.z);\n\t\t}\n\t}\n\tgetVelocity() {\n\t\treturn this.velocity;\n\t}\n\tsetVelocity(velocity) {\n\t\tthis.velocity.copy(velocity);\n\t}\n\tgetMaxDistance() {\n\t\treturn this.panner.maxDistance;\n\t}\n\tsetMaxDistance(max) {\n\t\tthis.panner.maxDistance = max;\n\t}\n\tgetMinDistance() {\n\t\treturn this.panner.refDistance;\n\t}\n\tsetMinDistance(min) {\n\t\tthis.panner.refDistance = min;\n\t}\n\tgetRollOffFactor() {\n\t\treturn this.panner.rolloffFactor;\n\t}\n\tsetRollOffFactor(factor) {\n\t\tthis.panner.rolloffFactor = factor;\n\t}\n\tgetDistanceModel() {\n\t\treturn this.panner.distanceModel;\n\t}\n\tsetDistanceModel(distanceModel) {\n\t\tthis.panner.distanceModel = distanceModel;\n\t}\n\t_createSource() {\n\t\tconst context = this.manager.context;\n\t\tthis.source = context.createBufferSource();\n\t\tthis.source.buffer = this.sound.buffer;\n\t\tthis.source.connect(this.panner);\n\t\tthis.panner.connect(this.gain);\n\t\tthis.gain.connect(context.destination);\n\t\tif (!this.loop) {\n\t\t\tthis.source.onended = this.pause.bind(this);\n\t\t}\n\t}\n}\nif (!hasAudioContext()) {\n\tlet offset = new Vec3();\n\tconst fallOff = function fallOff(posOne, posTwo, refDistance, maxDistance, rolloffFactor, distanceModel) {\n\t\toffset = offset.sub2(posOne, posTwo);\n\t\tconst distance = offset.length();\n\t\tif (distance < refDistance) {\n\t\t\treturn 1;\n\t\t} else if (distance > maxDistance) {\n\t\t\treturn 0;\n\t\t}\n\t\tlet result = 0;\n\t\tif (distanceModel === DISTANCE_LINEAR) {\n\t\t\tresult = 1 - rolloffFactor * (distance - refDistance) / (maxDistance - refDistance);\n\t\t} else if (distanceModel === DISTANCE_INVERSE) {\n\t\t\tresult = refDistance / (refDistance + rolloffFactor * (distance - refDistance));\n\t\t} else if (distanceModel === DISTANCE_EXPONENTIAL) {\n\t\t\tresult = Math.pow(distance / refDistance, -rolloffFactor);\n\t\t}\n\t\treturn math.clamp(result, 0, 1);\n\t};\n\tObject.assign(Channel3d.prototype, {\n\t\tsetPosition: function (position) {\n\t\t\tthis.position.copy(position);\n\t\t\tif (this.source) {\n\t\t\t\tconst listener = this.manager.listener;\n\t\t\t\tconst lpos = listener.getPosition();\n\t\t\t\tconst factor = fallOff(lpos, this.position, this.minDistance, this.maxDistance, this.rollOffFactor, this.distanceModel);\n\t\t\t\tconst v = this.getVolume();\n\t\t\t\tthis.source.volume = v * factor;\n\t\t\t}\n\t\t},\n\t\tgetMaxDistance: function () {\n\t\t\treturn this.maxDistance;\n\t\t},\n\t\tsetMaxDistance: function (max) {\n\t\t\tthis.maxDistance = max;\n\t\t},\n\t\tgetMinDistance: function () {\n\t\t\treturn this.minDistance;\n\t\t},\n\t\tsetMinDistance: function (min) {\n\t\t\tthis.minDistance = min;\n\t\t},\n\t\tgetRollOffFactor: function () {\n\t\t\treturn this.rollOffFactor;\n\t\t},\n\t\tsetRollOffFactor: function (factor) {\n\t\t\tthis.rollOffFactor = factor;\n\t\t},\n\t\tgetDistanceModel: function () {\n\t\t\treturn this.distanceModel;\n\t\t},\n\t\tsetDistanceModel: function (distanceModel) {\n\t\t\tthis.distanceModel = distanceModel;\n\t\t}\n\t});\n}\n\nexport { Channel3d };\n", "import { Mat4 } from '../../core/math/mat4.js';\nimport { Vec3 } from '../../core/math/vec3.js';\n\nclass Listener {\n\tconstructor(manager) {\n\t\tthis._manager = void 0;\n\t\tthis.position = new Vec3();\n\t\tthis.velocity = new Vec3();\n\t\tthis.orientation = new Mat4();\n\t\tthis._manager = manager;\n\t}\n\tgetPosition() {\n\t\treturn this.position;\n\t}\n\tsetPosition(position) {\n\t\tthis.position.copy(position);\n\t\tconst listener = this.listener;\n\t\tif (listener) {\n\t\t\tif ('positionX' in listener) {\n\t\t\t\tlistener.positionX.value = position.x;\n\t\t\t\tlistener.positionY.value = position.y;\n\t\t\t\tlistener.positionZ.value = position.z;\n\t\t\t} else if (listener.setPosition) {\n\t\t\t\tlistener.setPosition(position.x, position.y, position.z);\n\t\t\t}\n\t\t}\n\t}\n\tgetVelocity() {\n\t\treturn this.velocity;\n\t}\n\tsetVelocity(velocity) {}\n\tsetOrientation(orientation) {\n\t\tthis.orientation.copy(orientation);\n\t\tconst listener = this.listener;\n\t\tif (listener) {\n\t\t\tconst m = orientation.data;\n\t\t\tif ('forwardX' in listener) {\n\t\t\t\tlistener.forwardX.value = -m[8];\n\t\t\t\tlistener.forwardY.value = -m[9];\n\t\t\t\tlistener.forwardZ.value = -m[10];\n\t\t\t\tlistener.upX.value = m[4];\n\t\t\t\tlistener.upY.value = m[5];\n\t\t\t\tlistener.upZ.value = m[6];\n\t\t\t} else if (listener.setOrientation) {\n\t\t\t\tlistener.setOrientation(-m[8], -m[9], -m[10], m[4], m[5], m[6]);\n\t\t\t}\n\t\t}\n\t}\n\tgetOrientation() {\n\t\treturn this.orientation;\n\t}\n\tget listener() {\n\t\tconst context = this._manager.context;\n\t\treturn context ? context.listener : null;\n\t}\n}\n\nexport { Listener };\n", "import { EventHandler } from '../../core/event-handler.js';\nimport { math } from '../../core/math/math.js';\nimport { Channel } from '../audio/channel.js';\nimport { Channel3d } from '../audio/channel3d.js';\nimport { Listener } from './listener.js';\n\nconst CONTEXT_STATE_RUNNING = 'running';\nconst USER_INPUT_EVENTS = ['click', 'touchstart', 'mousedown'];\nclass SoundManager extends EventHandler {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._context = null;\n\t\tthis.AudioContext = typeof AudioContext !== 'undefined' && AudioContext || typeof webkitAudioContext !== 'undefined' && webkitAudioContext;\n\t\tif (!this.AudioContext) ;\n\t\tthis._unlockHandlerFunc = this._unlockHandler.bind(this);\n\t\tthis._userSuspended = false;\n\t\tthis.listener = new Listener(this);\n\t\tthis._volume = 1;\n\t}\n\tset volume(volume) {\n\t\tvolume = math.clamp(volume, 0, 1);\n\t\tthis._volume = volume;\n\t\tthis.fire('volumechange', volume);\n\t}\n\tget volume() {\n\t\treturn this._volume;\n\t}\n\tget suspended() {\n\t\treturn this._userSuspended;\n\t}\n\tget context() {\n\t\tif (!this._context && this.AudioContext) {\n\t\t\tthis._context = new this.AudioContext();\n\t\t\tif (this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\t\tthis._registerUnlockListeners();\n\t\t\t}\n\t\t}\n\t\treturn this._context;\n\t}\n\tsuspend() {\n\t\tif (!this._userSuspended) {\n\t\t\tthis._userSuspended = true;\n\t\t\tif (this._context && this._context.state === CONTEXT_STATE_RUNNING) {\n\t\t\t\tthis._suspend();\n\t\t\t}\n\t\t}\n\t}\n\tresume() {\n\t\tif (this._userSuspended) {\n\t\t\tthis._userSuspended = false;\n\t\t\tif (this._context && this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\t\tthis._resume();\n\t\t\t}\n\t\t}\n\t}\n\tdestroy() {\n\t\tthis.fire('destroy');\n\t\tif (this._context) {\n\t\t\tvar _this$_context;\n\t\t\tthis._removeUnlockListeners();\n\t\t\t(_this$_context = this._context) == null || _this$_context.close();\n\t\t\tthis._context = null;\n\t\t}\n\t}\n\tplaySound(sound, options = {}) {\n\t\tlet channel = null;\n\t\tif (Channel) {\n\t\t\tchannel = new Channel(this, sound, options);\n\t\t\tchannel.play();\n\t\t}\n\t\treturn channel;\n\t}\n\tplaySound3d(sound, position, options = {}) {\n\t\tlet channel = null;\n\t\tif (Channel3d) {\n\t\t\tchannel = new Channel3d(this, sound, options);\n\t\t\tchannel.setPosition(position);\n\t\t\tif (options.volume) {\n\t\t\t\tchannel.setVolume(options.volume);\n\t\t\t}\n\t\t\tif (options.loop) {\n\t\t\t\tchannel.setLoop(options.loop);\n\t\t\t}\n\t\t\tif (options.maxDistance) {\n\t\t\t\tchannel.setMaxDistance(options.maxDistance);\n\t\t\t}\n\t\t\tif (options.minDistance) {\n\t\t\t\tchannel.setMinDistance(options.minDistance);\n\t\t\t}\n\t\t\tif (options.rollOffFactor) {\n\t\t\t\tchannel.setRollOffFactor(options.rollOffFactor);\n\t\t\t}\n\t\t\tif (options.distanceModel) {\n\t\t\t\tchannel.setDistanceModel(options.distanceModel);\n\t\t\t}\n\t\t\tchannel.play();\n\t\t}\n\t\treturn channel;\n\t}\n\t_resume() {\n\t\tthis._context.resume().then(() => {\n\t\t\tconst source = this._context.createBufferSource();\n\t\t\tsource.buffer = this._context.createBuffer(1, 1, this._context.sampleRate);\n\t\t\tsource.connect(this._context.destination);\n\t\t\tsource.start(0);\n\t\t\tsource.onended = event => {\n\t\t\t\tsource.disconnect(0);\n\t\t\t\tthis.fire('resume');\n\t\t\t};\n\t\t}, e => {}).catch(e => {});\n\t}\n\t_suspend() {\n\t\tthis._context.suspend().then(() => {\n\t\t\tthis.fire('suspend');\n\t\t}, e => {}).catch(e => {});\n\t}\n\t_unlockHandler() {\n\t\tthis._removeUnlockListeners();\n\t\tif (!this._userSuspended && this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\tthis._resume();\n\t\t}\n\t}\n\t_registerUnlockListeners() {\n\t\tUSER_INPUT_EVENTS.forEach(eventName => {\n\t\t\twindow.addEventListener(eventName, this._unlockHandlerFunc, false);\n\t\t});\n\t}\n\t_removeUnlockListeners() {\n\t\tUSER_INPUT_EVENTS.forEach(eventName => {\n\t\t\twindow.removeEventListener(eventName, this._unlockHandlerFunc, false);\n\t\t});\n\t}\n}\n\nexport { SoundManager };\n", "class Sound {\n\tconstructor(resource) {\n\t\tthis.audio = void 0;\n\t\tthis.buffer = void 0;\n\t\tif (resource instanceof Audio) {\n\t\t\tthis.audio = resource;\n\t\t} else {\n\t\t\tthis.buffer = resource;\n\t\t}\n\t}\n\tget duration() {\n\t\tlet duration = 0;\n\t\tif (this.buffer) {\n\t\t\tduration = this.buffer.duration;\n\t\t} else if (this.audio) {\n\t\t\tduration = this.audio.duration;\n\t\t}\n\t\treturn duration || 0;\n\t}\n}\n\nexport { Sound };\n", "import { EventHandler } from '../../core/event-handler.js';\nimport { math } from '../../core/math/math.js';\nimport { hasAudioContext } from '../audio/capabilities.js';\n\nconst STATE_PLAYING = 0;\nconst STATE_PAUSED = 1;\nconst STATE_STOPPED = 2;\nfunction capTime(time, duration) {\n\treturn time % duration || 0;\n}\nclass SoundInstance extends EventHandler {\n\tconstructor(manager, sound, options) {\n\t\tsuper();\n\t\tthis.source = null;\n\t\tthis._manager = manager;\n\t\tthis._volume = options.volume !== undefined ? math.clamp(Number(options.volume) || 0, 0, 1) : 1;\n\t\tthis._pitch = options.pitch !== undefined ? Math.max(0.01, Number(options.pitch) || 0) : 1;\n\t\tthis._loop = !!(options.loop !== undefined ? options.loop : false);\n\t\tthis._sound = sound;\n\t\tthis._state = STATE_STOPPED;\n\t\tthis._suspended = false;\n\t\tthis._suspendEndEvent = 0;\n\t\tthis._suspendInstanceEvents = false;\n\t\tthis._playWhenLoaded = true;\n\t\tthis._startTime = Math.max(0, Number(options.startTime) || 0);\n\t\tthis._duration = Math.max(0, Number(options.duration) || 0);\n\t\tthis._startOffset = null;\n\t\tthis._onPlayCallback = options.onPlay;\n\t\tthis._onPauseCallback = options.onPause;\n\t\tthis._onResumeCallback = options.onResume;\n\t\tthis._onStopCallback = options.onStop;\n\t\tthis._onEndCallback = options.onEnd;\n\t\tif (hasAudioContext()) {\n\t\t\tthis._startedAt = 0;\n\t\t\tthis._currentTime = 0;\n\t\t\tthis._currentOffset = 0;\n\t\t\tthis._inputNode = null;\n\t\t\tthis._connectorNode = null;\n\t\t\tthis._firstNode = null;\n\t\t\tthis._lastNode = null;\n\t\t\tthis._waitingContextSuspension = false;\n\t\t\tthis._initializeNodes();\n\t\t\tthis._endedHandler = this._onEnded.bind(this);\n\t\t} else {\n\t\t\tthis._isReady = false;\n\t\t\tthis._loadedMetadataHandler = this._onLoadedMetadata.bind(this);\n\t\t\tthis._timeUpdateHandler = this._onTimeUpdate.bind(this);\n\t\t\tthis._endedHandler = this._onEnded.bind(this);\n\t\t\tthis._createSource();\n\t\t}\n\t}\n\tset currentTime(value) {\n\t\tif (value < 0) return;\n\t\tif (this._state === STATE_PLAYING) {\n\t\t\tconst suspend = this._suspendInstanceEvents;\n\t\t\tthis._suspendInstanceEvents = true;\n\t\t\tthis.stop();\n\t\t\tthis._startOffset = value;\n\t\t\tthis.play();\n\t\t\tthis._suspendInstanceEvents = suspend;\n\t\t} else {\n\t\t\tthis._startOffset = value;\n\t\t\tthis._currentTime = value;\n\t\t}\n\t}\n\tget currentTime() {\n\t\tif (this._startOffset !== null) {\n\t\t\treturn this._startOffset;\n\t\t}\n\t\tif (this._state === STATE_PAUSED) {\n\t\t\treturn this._currentTime;\n\t\t}\n\t\tif (this._state === STATE_STOPPED || !this.source) {\n\t\t\treturn 0;\n\t\t}\n\t\tthis._updateCurrentTime();\n\t\treturn this._currentTime;\n\t}\n\tset duration(value) {\n\t\tthis._duration = Math.max(0, Number(value) || 0);\n\t\tconst isPlaying = this._state === STATE_PLAYING;\n\t\tthis.stop();\n\t\tif (isPlaying) {\n\t\t\tthis.play();\n\t\t}\n\t}\n\tget duration() {\n\t\tif (!this._sound) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (this._duration) {\n\t\t\treturn capTime(this._duration, this._sound.duration);\n\t\t}\n\t\treturn this._sound.duration;\n\t}\n\tget isPaused() {\n\t\treturn this._state === STATE_PAUSED;\n\t}\n\tget isPlaying() {\n\t\treturn this._state === STATE_PLAYING;\n\t}\n\tget isStopped() {\n\t\treturn this._state === STATE_STOPPED;\n\t}\n\tget isSuspended() {\n\t\treturn this._suspended;\n\t}\n\tset loop(value) {\n\t\tthis._loop = !!value;\n\t\tif (this.source) {\n\t\t\tthis.source.loop = this._loop;\n\t\t}\n\t}\n\tget loop() {\n\t\treturn this._loop;\n\t}\n\tset pitch(pitch) {\n\t\tthis._currentOffset = this.currentTime;\n\t\tthis._startedAt = this._manager.context.currentTime;\n\t\tthis._pitch = Math.max(Number(pitch) || 0, 0.01);\n\t\tif (this.source) {\n\t\t\tthis.source.playbackRate.value = this._pitch;\n\t\t}\n\t}\n\tget pitch() {\n\t\treturn this._pitch;\n\t}\n\tset sound(value) {\n\t\tthis._sound = value;\n\t\tif (this._state !== STATE_STOPPED) {\n\t\t\tthis.stop();\n\t\t} else {\n\t\t\tthis._createSource();\n\t\t}\n\t}\n\tget sound() {\n\t\treturn this._sound;\n\t}\n\tset startTime(value) {\n\t\tthis._startTime = Math.max(0, Number(value) || 0);\n\t\tconst isPlaying = this._state === STATE_PLAYING;\n\t\tthis.stop();\n\t\tif (isPlaying) {\n\t\t\tthis.play();\n\t\t}\n\t}\n\tget startTime() {\n\t\treturn this._startTime;\n\t}\n\tset volume(volume) {\n\t\tvolume = math.clamp(volume, 0, 1);\n\t\tthis._volume = volume;\n\t\tif (this.gain) {\n\t\t\tthis.gain.gain.value = volume * this._manager.volume;\n\t\t}\n\t}\n\tget volume() {\n\t\treturn this._volume;\n\t}\n\t_onPlay() {\n\t\tthis.fire('play');\n\t\tif (this._onPlayCallback) this._onPlayCallback(this);\n\t}\n\t_onPause() {\n\t\tthis.fire('pause');\n\t\tif (this._onPauseCallback) this._onPauseCallback(this);\n\t}\n\t_onResume() {\n\t\tthis.fire('resume');\n\t\tif (this._onResumeCallback) this._onResumeCallback(this);\n\t}\n\t_onStop() {\n\t\tthis.fire('stop');\n\t\tif (this._onStopCallback) this._onStopCallback(this);\n\t}\n\t_onEnded() {\n\t\tif (this._suspendEndEvent > 0) {\n\t\t\tthis._suspendEndEvent--;\n\t\t\treturn;\n\t\t}\n\t\tthis.fire('end');\n\t\tif (this._onEndCallback) this._onEndCallback(this);\n\t\tthis.stop();\n\t}\n\t_onManagerVolumeChange() {\n\t\tthis.volume = this._volume;\n\t}\n\t_onManagerSuspend() {\n\t\tif (this._state === STATE_PLAYING && !this._suspended) {\n\t\t\tthis._suspended = true;\n\t\t\tthis.pause();\n\t\t}\n\t}\n\t_onManagerResume() {\n\t\tif (this._suspended) {\n\t\t\tthis._suspended = false;\n\t\t\tthis.resume();\n\t\t}\n\t}\n\t_initializeNodes() {\n\t\tthis.gain = this._manager.context.createGain();\n\t\tthis._inputNode = this.gain;\n\t\tthis._connectorNode = this.gain;\n\t\tthis._connectorNode.connect(this._manager.context.destination);\n\t}\n\tplay() {\n\t\tif (this._state !== STATE_STOPPED) {\n\t\t\tthis.stop();\n\t\t}\n\t\tthis._state = STATE_PLAYING;\n\t\tthis._playWhenLoaded = false;\n\t\tif (this._waitingContextSuspension) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._manager.suspended) {\n\t\t\tthis._manager.once('resume', this._playAudioImmediate, this);\n\t\t\tthis._waitingContextSuspension = true;\n\t\t\treturn false;\n\t\t}\n\t\tthis._playAudioImmediate();\n\t\treturn true;\n\t}\n\t_playAudioImmediate() {\n\t\tthis._waitingContextSuspension = false;\n\t\tif (this._state !== STATE_PLAYING) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.source) {\n\t\t\tthis._createSource();\n\t\t}\n\t\tlet offset = capTime(this._startOffset, this.duration);\n\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\tthis._startOffset = null;\n\t\tif (this._duration) {\n\t\t\tthis.source.start(0, offset, this._duration);\n\t\t} else {\n\t\t\tthis.source.start(0, offset);\n\t\t}\n\t\tthis._startedAt = this._manager.context.currentTime;\n\t\tthis._currentTime = 0;\n\t\tthis._currentOffset = offset;\n\t\tthis.volume = this._volume;\n\t\tthis.loop = this._loop;\n\t\tthis.pitch = this._pitch;\n\t\tthis._manager.on('volumechange', this._onManagerVolumeChange, this);\n\t\tthis._manager.on('suspend', this._onManagerSuspend, this);\n\t\tthis._manager.on('resume', this._onManagerResume, this);\n\t\tthis._manager.on('destroy', this._onManagerDestroy, this);\n\t\tif (!this._suspendInstanceEvents) {\n\t\t\tthis._onPlay();\n\t\t}\n\t}\n\tpause() {\n\t\tthis._playWhenLoaded = false;\n\t\tif (this._state !== STATE_PLAYING) return false;\n\t\tthis._state = STATE_PAUSED;\n\t\tif (this._waitingContextSuspension) {\n\t\t\treturn true;\n\t\t}\n\t\tthis._updateCurrentTime();\n\t\tthis._suspendEndEvent++;\n\t\tthis.source.stop(0);\n\t\tthis.source = null;\n\t\tthis._startOffset = null;\n\t\tif (!this._suspendInstanceEvents) this._onPause();\n\t\treturn true;\n\t}\n\tresume() {\n\t\tif (this._state !== STATE_PAUSED) {\n\t\t\treturn false;\n\t\t}\n\t\tlet offset = this.currentTime;\n\t\tthis._state = STATE_PLAYING;\n\t\tif (this._waitingContextSuspension) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!this.source) {\n\t\t\tthis._createSource();\n\t\t}\n\t\tif (this._startOffset !== null) {\n\t\t\toffset = capTime(this._startOffset, this.duration);\n\t\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\t\tthis._startOffset = null;\n\t\t}\n\t\tif (this._duration) {\n\t\t\tthis.source.start(0, offset, this._duration);\n\t\t} else {\n\t\t\tthis.source.start(0, offset);\n\t\t}\n\t\tthis._startedAt = this._manager.context.currentTime;\n\t\tthis._currentOffset = offset;\n\t\tthis.volume = this._volume;\n\t\tthis.loop = this._loop;\n\t\tthis.pitch = this._pitch;\n\t\tthis._playWhenLoaded = false;\n\t\tif (!this._suspendInstanceEvents) this._onResume();\n\t\treturn true;\n\t}\n\tstop() {\n\t\tthis._playWhenLoaded = false;\n\t\tif (this._state === STATE_STOPPED) return false;\n\t\tconst wasPlaying = this._state === STATE_PLAYING;\n\t\tthis._state = STATE_STOPPED;\n\t\tif (this._waitingContextSuspension) {\n\t\t\treturn true;\n\t\t}\n\t\tthis._manager.off('volumechange', this._onManagerVolumeChange, this);\n\t\tthis._manager.off('suspend', this._onManagerSuspend, this);\n\t\tthis._manager.off('resume', this._onManagerResume, this);\n\t\tthis._manager.off('destroy', this._onManagerDestroy, this);\n\t\tthis._startedAt = 0;\n\t\tthis._currentTime = 0;\n\t\tthis._currentOffset = 0;\n\t\tthis._startOffset = null;\n\t\tthis._suspendEndEvent++;\n\t\tif (wasPlaying && this.source) {\n\t\t\tthis.source.stop(0);\n\t\t}\n\t\tthis.source = null;\n\t\tif (!this._suspendInstanceEvents) this._onStop();\n\t\treturn true;\n\t}\n\tsetExternalNodes(firstNode, lastNode) {\n\t\tif (!firstNode) {\n\t\t\tconsole.error('The firstNode must be a valid Audio Node');\n\t\t\treturn;\n\t\t}\n\t\tif (!lastNode) {\n\t\t\tlastNode = firstNode;\n\t\t}\n\t\tconst speakers = this._manager.context.destination;\n\t\tif (this._firstNode !== firstNode) {\n\t\t\tif (this._firstNode) {\n\t\t\t\tthis._connectorNode.disconnect(this._firstNode);\n\t\t\t} else {\n\t\t\t\tthis._connectorNode.disconnect(speakers);\n\t\t\t}\n\t\t\tthis._firstNode = firstNode;\n\t\t\tthis._connectorNode.connect(firstNode);\n\t\t}\n\t\tif (this._lastNode !== lastNode) {\n\t\t\tif (this._lastNode) {\n\t\t\t\tthis._lastNode.disconnect(speakers);\n\t\t\t}\n\t\t\tthis._lastNode = lastNode;\n\t\t\tthis._lastNode.connect(speakers);\n\t\t}\n\t}\n\tclearExternalNodes() {\n\t\tconst speakers = this._manager.context.destination;\n\t\tif (this._firstNode) {\n\t\t\tthis._connectorNode.disconnect(this._firstNode);\n\t\t\tthis._firstNode = null;\n\t\t}\n\t\tif (this._lastNode) {\n\t\t\tthis._lastNode.disconnect(speakers);\n\t\t\tthis._lastNode = null;\n\t\t}\n\t\tthis._connectorNode.connect(speakers);\n\t}\n\tgetExternalNodes() {\n\t\treturn [this._firstNode, this._lastNode];\n\t}\n\t_createSource() {\n\t\tif (!this._sound) {\n\t\t\treturn null;\n\t\t}\n\t\tconst context = this._manager.context;\n\t\tif (this._sound.buffer) {\n\t\t\tthis.source = context.createBufferSource();\n\t\t\tthis.source.buffer = this._sound.buffer;\n\t\t\tthis.source.connect(this._inputNode);\n\t\t\tthis.source.onended = this._endedHandler;\n\t\t\tthis.source.loopStart = capTime(this._startTime, this.source.buffer.duration);\n\t\t\tif (this._duration) {\n\t\t\t\tthis.source.loopEnd = Math.max(this.source.loopStart, capTime(this._startTime + this._duration, this.source.buffer.duration));\n\t\t\t}\n\t\t}\n\t\treturn this.source;\n\t}\n\t_updateCurrentTime() {\n\t\tthis._currentTime = capTime((this._manager.context.currentTime - this._startedAt) * this._pitch + this._currentOffset, this.duration);\n\t}\n\t_onManagerDestroy() {\n\t\tif (this.source && this._state === STATE_PLAYING) {\n\t\t\tthis.source.stop(0);\n\t\t\tthis.source = null;\n\t\t}\n\t}\n}\nSoundInstance.EVENT_PLAY = 'play';\nSoundInstance.EVENT_PAUSE = 'pause';\nSoundInstance.EVENT_RESUME = 'resume';\nSoundInstance.EVENT_STOP = 'stop';\nSoundInstance.EVENT_END = 'end';\nif (!hasAudioContext()) {\n\tObject.assign(SoundInstance.prototype, {\n\t\tplay: function () {\n\t\t\tif (this._state !== STATE_STOPPED) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\tif (!this.source) {\n\t\t\t\tif (!this._createSource()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.volume = this._volume;\n\t\t\tthis.pitch = this._pitch;\n\t\t\tthis.loop = this._loop;\n\t\t\tthis.source.play();\n\t\t\tthis._state = STATE_PLAYING;\n\t\t\tthis._playWhenLoaded = false;\n\t\t\tthis._manager.on('volumechange', this._onManagerVolumeChange, this);\n\t\t\tthis._manager.on('suspend', this._onManagerSuspend, this);\n\t\t\tthis._manager.on('resume', this._onManagerResume, this);\n\t\t\tthis._manager.on('destroy', this._onManagerDestroy, this);\n\t\t\tif (this._manager.suspended) this._onManagerSuspend();\n\t\t\tif (!this._suspendInstanceEvents) this._onPlay();\n\t\t\treturn true;\n\t\t},\n\t\tpause: function () {\n\t\t\tif (!this.source || this._state !== STATE_PLAYING) return false;\n\t\t\tthis._suspendEndEvent++;\n\t\t\tthis.source.pause();\n\t\t\tthis._playWhenLoaded = false;\n\t\t\tthis._state = STATE_PAUSED;\n\t\t\tthis._startOffset = null;\n\t\t\tif (!this._suspendInstanceEvents) this._onPause();\n\t\t\treturn true;\n\t\t},\n\t\tresume: function () {\n\t\t\tif (!this.source || this._state !== STATE_PAUSED) return false;\n\t\t\tthis._state = STATE_PLAYING;\n\t\t\tthis._playWhenLoaded = false;\n\t\t\tif (this.source.paused) {\n\t\t\t\tthis.source.play();\n\t\t\t\tif (!this._suspendInstanceEvents) this._onResume();\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tstop: function () {\n\t\t\tif (!this.source || this._state === STATE_STOPPED) return false;\n\t\t\tthis._manager.off('volumechange', this._onManagerVolumeChange, this);\n\t\t\tthis._manager.off('suspend', this._onManagerSuspend, this);\n\t\t\tthis._manager.off('resume', this._onManagerResume, this);\n\t\t\tthis._manager.off('destroy', this._onManagerDestroy, this);\n\t\t\tthis._suspendEndEvent++;\n\t\t\tthis.source.pause();\n\t\t\tthis._playWhenLoaded = false;\n\t\t\tthis._state = STATE_STOPPED;\n\t\t\tthis._startOffset = null;\n\t\t\tif (!this._suspendInstanceEvents) this._onStop();\n\t\t\treturn true;\n\t\t},\n\t\tsetExternalNodes: function () {},\n\t\tclearExternalNodes: function () {},\n\t\tgetExternalNodes: function () {\n\t\t\treturn [null, null];\n\t\t},\n\t\t_onLoadedMetadata: function () {\n\t\t\tthis.source.removeEventListener('loadedmetadata', this._loadedMetadataHandler);\n\t\t\tthis._isReady = true;\n\t\t\tlet offset = capTime(this._startOffset, this.duration);\n\t\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\t\tthis._startOffset = null;\n\t\t\tthis.source.currentTime = offset;\n\t\t},\n\t\t_createSource: function () {\n\t\t\tif (this._sound && this._sound.audio) {\n\t\t\t\tthis._isReady = false;\n\t\t\t\tthis.source = this._sound.audio.cloneNode(true);\n\t\t\t\tthis.source.addEventListener('loadedmetadata', this._loadedMetadataHandler);\n\t\t\t\tthis.source.addEventListener('timeupdate', this._timeUpdateHandler);\n\t\t\t\tthis.source.onended = this._endedHandler;\n\t\t\t}\n\t\t\treturn this.source;\n\t\t},\n\t\t_onTimeUpdate: function () {\n\t\t\tif (!this._duration) return;\n\t\t\tif (this.source.currentTime > capTime(this._startTime + this._duration, this.source.duration)) {\n\t\t\t\tif (this.loop) {\n\t\t\t\t\tthis.source.currentTime = capTime(this._startTime, this.source.duration);\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.removeEventListener('timeupdate', this._timeUpdateHandler);\n\t\t\t\t\tthis.source.pause();\n\t\t\t\t\tthis._onEnded();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_onManagerDestroy: function () {\n\t\t\tif (this.source) {\n\t\t\t\tthis.source.pause();\n\t\t\t}\n\t\t}\n\t});\n\tObject.defineProperty(SoundInstance.prototype, 'volume', {\n\t\tget: function () {\n\t\t\treturn this._volume;\n\t\t},\n\t\tset: function (volume) {\n\t\t\tvolume = math.clamp(volume, 0, 1);\n\t\t\tthis._volume = volume;\n\t\t\tif (this.source) {\n\t\t\t\tthis.source.volume = volume * this._manager.volume;\n\t\t\t}\n\t\t}\n\t});\n\tObject.defineProperty(SoundInstance.prototype, 'pitch', {\n\t\tget: function () {\n\t\t\treturn this._pitch;\n\t\t},\n\t\tset: function (pitch) {\n\t\t\tthis._pitch = Math.max(Number(pitch) || 0, 0.01);\n\t\t\tif (this.source) {\n\t\t\t\tthis.source.playbackRate = this._pitch;\n\t\t\t}\n\t\t}\n\t});\n\tObject.defineProperty(SoundInstance.prototype, 'sound', {\n\t\tget: function () {\n\t\t\treturn this._sound;\n\t\t},\n\t\tset: function (value) {\n\t\t\tthis.stop();\n\t\t\tthis._sound = value;\n\t\t}\n\t});\n\tObject.defineProperty(SoundInstance.prototype, 'currentTime', {\n\t\tget: function () {\n\t\t\tif (this._startOffset !== null) {\n\t\t\t\treturn this._startOffset;\n\t\t\t}\n\t\t\tif (this._state === STATE_STOPPED || !this.source) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn this.source.currentTime - this._startTime;\n\t\t},\n\t\tset: function (value) {\n\t\t\tif (value < 0) return;\n\t\t\tthis._startOffset = value;\n\t\t\tif (this.source && this._isReady) {\n\t\t\t\tthis.source.currentTime = capTime(this._startTime + capTime(value, this.duration), this._sound.duration);\n\t\t\t\tthis._startOffset = null;\n\t\t\t}\n\t\t}\n\t});\n}\n\nexport { SoundInstance };\n", "import { math } from '../../core/math/math.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { DISTANCE_LINEAR, DISTANCE_INVERSE, DISTANCE_EXPONENTIAL } from '../audio/constants.js';\nimport { hasAudioContext } from '../audio/capabilities.js';\nimport { SoundInstance } from './instance.js';\n\nconst MAX_DISTANCE = 10000;\nclass SoundInstance3d extends SoundInstance {\n\tconstructor(manager, sound, options = {}) {\n\t\tsuper(manager, sound, options);\n\t\tthis._position = new Vec3();\n\t\tthis._velocity = new Vec3();\n\t\tif (options.position) this.position = options.position;\n\t\tthis.maxDistance = options.maxDistance !== undefined ? Number(options.maxDistance) : MAX_DISTANCE;\n\t\tthis.refDistance = options.refDistance !== undefined ? Number(options.refDistance) : 1;\n\t\tthis.rollOffFactor = options.rollOffFactor !== undefined ? Number(options.rollOffFactor) : 1;\n\t\tthis.distanceModel = options.distanceModel !== undefined ? options.distanceModel : DISTANCE_LINEAR;\n\t}\n\t_initializeNodes() {\n\t\tthis.gain = this._manager.context.createGain();\n\t\tthis.panner = this._manager.context.createPanner();\n\t\tthis.panner.connect(this.gain);\n\t\tthis._inputNode = this.panner;\n\t\tthis._connectorNode = this.gain;\n\t\tthis._connectorNode.connect(this._manager.context.destination);\n\t}\n\tset position(value) {\n\t\tthis._position.copy(value);\n\t\tconst panner = this.panner;\n\t\tif ('positionX' in panner) {\n\t\t\tpanner.positionX.value = value.x;\n\t\t\tpanner.positionY.value = value.y;\n\t\t\tpanner.positionZ.value = value.z;\n\t\t} else if (panner.setPosition) {\n\t\t\tpanner.setPosition(value.x, value.y, value.z);\n\t\t}\n\t}\n\tget position() {\n\t\treturn this._position;\n\t}\n\tset velocity(velocity) {\n\t\tthis._velocity.copy(velocity);\n\t}\n\tget velocity() {\n\t\treturn this._velocity;\n\t}\n\tset maxDistance(value) {\n\t\tthis.panner.maxDistance = value;\n\t}\n\tget maxDistance() {\n\t\treturn this.panner.maxDistance;\n\t}\n\tset refDistance(value) {\n\t\tthis.panner.refDistance = value;\n\t}\n\tget refDistance() {\n\t\treturn this.panner.refDistance;\n\t}\n\tset rollOffFactor(value) {\n\t\tthis.panner.rolloffFactor = value;\n\t}\n\tget rollOffFactor() {\n\t\treturn this.panner.rolloffFactor;\n\t}\n\tset distanceModel(value) {\n\t\tthis.panner.distanceModel = value;\n\t}\n\tget distanceModel() {\n\t\treturn this.panner.distanceModel;\n\t}\n}\nif (!hasAudioContext()) {\n\tlet offset = new Vec3();\n\tconst fallOff = function fallOff(posOne, posTwo, refDistance, maxDistance, rollOffFactor, distanceModel) {\n\t\toffset = offset.sub2(posOne, posTwo);\n\t\tconst distance = offset.length();\n\t\tif (distance < refDistance) {\n\t\t\treturn 1;\n\t\t} else if (distance > maxDistance) {\n\t\t\treturn 0;\n\t\t}\n\t\tlet result = 0;\n\t\tif (distanceModel === DISTANCE_LINEAR) {\n\t\t\tresult = 1 - rollOffFactor * (distance - refDistance) / (maxDistance - refDistance);\n\t\t} else if (distanceModel === DISTANCE_INVERSE) {\n\t\t\tresult = refDistance / (refDistance + rollOffFactor * (distance - refDistance));\n\t\t} else if (distanceModel === DISTANCE_EXPONENTIAL) {\n\t\t\tresult = Math.pow(distance / refDistance, -rollOffFactor);\n\t\t}\n\t\treturn math.clamp(result, 0, 1);\n\t};\n\tObject.defineProperty(SoundInstance3d.prototype, 'position', {\n\t\tget: function () {\n\t\t\treturn this._position;\n\t\t},\n\t\tset: function (position) {\n\t\t\tthis._position.copy(position);\n\t\t\tif (this.source) {\n\t\t\t\tconst listener = this._manager.listener;\n\t\t\t\tconst lpos = listener.getPosition();\n\t\t\t\tconst factor = fallOff(lpos, this._position, this.refDistance, this.maxDistance, this.rollOffFactor, this.distanceModel);\n\t\t\t\tconst v = this.volume;\n\t\t\t\tthis.source.volume = v * factor * this._manager.volume;\n\t\t\t}\n\t\t}\n\t});\n\tObject.defineProperty(SoundInstance3d.prototype, 'maxDistance', {\n\t\tget: function () {\n\t\t\treturn this._maxDistance;\n\t\t},\n\t\tset: function (value) {\n\t\t\tthis._maxDistance = value;\n\t\t}\n\t});\n\tObject.defineProperty(SoundInstance3d.prototype, 'refDistance', {\n\t\tget: function () {\n\t\t\treturn this._refDistance;\n\t\t},\n\t\tset: function (value) {\n\t\t\tthis._refDistance = value;\n\t\t}\n\t});\n\tObject.defineProperty(SoundInstance3d.prototype, 'rollOffFactor', {\n\t\tget: function () {\n\t\t\treturn this._rollOffFactor;\n\t\t},\n\t\tset: function (value) {\n\t\t\tthis._rollOffFactor = value;\n\t\t}\n\t});\n\tObject.defineProperty(SoundInstance3d.prototype, 'distanceModel', {\n\t\tget: function () {\n\t\t\treturn this._distanceModel;\n\t\t},\n\t\tset: function (value) {\n\t\t\tthis._distanceModel = value;\n\t\t}\n\t});\n}\n\nexport { SoundInstance3d };\n", "const BLEND_SUBTRACTIVE = 0;\nconst BLEND_ADDITIVE = 1;\nconst BLEND_NORMAL = 2;\nconst BLEND_NONE = 3;\nconst BLEND_PREMULTIPLIED = 4;\nconst BLEND_MULTIPLICATIVE = 5;\nconst BLEND_ADDITIVEALPHA = 6;\nconst BLEND_MULTIPLICATIVE2X = 7;\nconst BLEND_SCREEN = 8;\nconst BLEND_MIN = 9;\nconst BLEND_MAX = 10;\nconst FOG_NONE = 'none';\nconst FOG_LINEAR = 'linear';\nconst FOG_EXP = 'exp';\nconst FOG_EXP2 = 'exp2';\nconst FRESNEL_NONE = 0;\nconst FRESNEL_SCHLICK = 2;\nconst LAYER_HUD = 0;\nconst LAYER_GIZMO = 1;\nconst LAYER_FX = 2;\nconst LAYER_WORLD = 15;\nconst LAYERID_WORLD = 0;\nconst LAYERID_DEPTH = 1;\nconst LAYERID_SKYBOX = 2;\nconst LAYERID_IMMEDIATE = 3;\nconst LAYERID_UI = 4;\nconst LIGHTTYPE_DIRECTIONAL = 0;\nconst LIGHTTYPE_OMNI = 1;\nconst LIGHTTYPE_POINT = LIGHTTYPE_OMNI;\nconst LIGHTTYPE_SPOT = 2;\nconst LIGHTTYPE_COUNT = 3;\nconst LIGHTSHAPE_PUNCTUAL = 0;\nconst LIGHTSHAPE_RECT = 1;\nconst LIGHTSHAPE_DISK = 2;\nconst LIGHTSHAPE_SPHERE = 3;\nconst LIGHTFALLOFF_LINEAR = 0;\nconst LIGHTFALLOFF_INVERSESQUARED = 1;\nconst SHADOW_PCF3 = 0;\nconst SHADOW_DEPTH = 0;\nconst SHADOW_VSM8 = 1;\nconst SHADOW_VSM16 = 2;\nconst SHADOW_VSM32 = 3;\nconst SHADOW_PCF5 = 4;\nconst SHADOW_PCF1 = 5;\nconst SHADOW_PCSS = 6;\nconst shadowTypeToString = {};\nshadowTypeToString[SHADOW_PCF3] = 'PCF3';\nshadowTypeToString[SHADOW_VSM8] = 'VSM8';\nshadowTypeToString[SHADOW_VSM16] = 'VSM16';\nshadowTypeToString[SHADOW_VSM32] = 'VSM32';\nshadowTypeToString[SHADOW_PCF5] = 'PCF5';\nshadowTypeToString[SHADOW_PCF1] = 'PCF1';\nshadowTypeToString[SHADOW_PCSS] = 'PCSS';\nconst BLUR_BOX = 0;\nconst BLUR_GAUSSIAN = 1;\nconst PARTICLESORT_NONE = 0;\nconst PARTICLESORT_DISTANCE = 1;\nconst PARTICLESORT_NEWER_FIRST = 2;\nconst PARTICLESORT_OLDER_FIRST = 3;\nconst PARTICLEMODE_GPU = 0;\nconst PARTICLEMODE_CPU = 1;\nconst EMITTERSHAPE_BOX = 0;\nconst EMITTERSHAPE_SPHERE = 1;\nconst PARTICLEORIENTATION_SCREEN = 0;\nconst PARTICLEORIENTATION_WORLD = 1;\nconst PARTICLEORIENTATION_EMITTER = 2;\nconst PROJECTION_PERSPECTIVE = 0;\nconst PROJECTION_ORTHOGRAPHIC = 1;\nconst RENDERSTYLE_SOLID = 0;\nconst RENDERSTYLE_WIREFRAME = 1;\nconst RENDERSTYLE_POINTS = 2;\nconst CUBEPROJ_NONE = 0;\nconst CUBEPROJ_BOX = 1;\nconst SPECULAR_PHONG = 0;\nconst SPECULAR_BLINN = 1;\nconst DETAILMODE_MUL = 'mul';\nconst DETAILMODE_ADD = 'add';\nconst DETAILMODE_SCREEN = 'screen';\nconst DETAILMODE_OVERLAY = 'overlay';\nconst DETAILMODE_MIN = 'min';\nconst DETAILMODE_MAX = 'max';\nconst GAMMA_NONE = 0;\nconst GAMMA_SRGB = 1;\nconst GAMMA_SRGBFAST = 2;\nconst GAMMA_SRGBHDR = 3;\nconst TONEMAP_LINEAR = 0;\nconst TONEMAP_FILMIC = 1;\nconst TONEMAP_HEJL = 2;\nconst TONEMAP_ACES = 3;\nconst TONEMAP_ACES2 = 4;\nconst TONEMAP_NEUTRAL = 5;\nconst SPECOCC_NONE = 0;\nconst SPECOCC_AO = 1;\nconst SPECOCC_GLOSSDEPENDENT = 2;\nconst SHADERDEF_NOSHADOW = 1;\nconst SHADERDEF_SKIN = 2;\nconst SHADERDEF_UV0 = 4;\nconst SHADERDEF_UV1 = 8;\nconst SHADERDEF_VCOLOR = 16;\nconst SHADERDEF_INSTANCING = 32;\nconst SHADERDEF_LM = 64;\nconst SHADERDEF_DIRLM = 128;\nconst SHADERDEF_SCREENSPACE = 256;\nconst SHADERDEF_TANGENTS = 512;\nconst SHADERDEF_MORPH_POSITION = 1024;\nconst SHADERDEF_MORPH_NORMAL = 2048;\nconst SHADERDEF_MORPH_TEXTURE_BASED = 4096;\nconst SHADERDEF_LMAMBIENT = 8192;\nconst SHADOWUPDATE_NONE = 0;\nconst SHADOWUPDATE_THISFRAME = 1;\nconst SHADOWUPDATE_REALTIME = 2;\nconst SORTKEY_FORWARD = 0;\nconst SORTKEY_DEPTH = 1;\nconst MASK_AFFECT_DYNAMIC = 1;\nconst MASK_AFFECT_LIGHTMAPPED = 2;\nconst MASK_BAKE = 4;\nconst SHADER_FORWARD = 0;\nconst SHADER_FORWARDHDR = 1;\nconst SHADER_DEPTH = 2;\nconst SHADER_PICK = 3;\nconst SHADER_SHADOW = 4;\nconst SHADER_PREPASS_VELOCITY = 5;\nconst SHADERPASS_FORWARD = 'forward';\nconst SHADERPASS_ALBEDO = 'debug_albedo';\nconst SHADERPASS_WORLDNORMAL = 'debug_world_normal';\nconst SHADERPASS_OPACITY = 'debug_opacity';\nconst SHADERPASS_SPECULARITY = 'debug_specularity';\nconst SHADERPASS_GLOSS = 'debug_gloss';\nconst SHADERPASS_METALNESS = 'debug_metalness';\nconst SHADERPASS_AO = 'debug_ao';\nconst SHADERPASS_EMISSION = 'debug_emission';\nconst SHADERPASS_LIGHTING = 'debug_lighting';\nconst SHADERPASS_UV0 = 'debug_uv0';\nconst SPRITE_RENDERMODE_SIMPLE = 0;\nconst SPRITE_RENDERMODE_SLICED = 1;\nconst SPRITE_RENDERMODE_TILED = 2;\nconst BAKE_COLOR = 0;\nconst BAKE_COLORDIR = 1;\nconst VIEW_CENTER = 0;\nconst VIEW_LEFT = 1;\nconst VIEW_RIGHT = 2;\nconst SORTMODE_NONE = 0;\nconst SORTMODE_MANUAL = 1;\nconst SORTMODE_MATERIALMESH = 2;\nconst SORTMODE_BACK2FRONT = 3;\nconst SORTMODE_FRONT2BACK = 4;\nconst SORTMODE_CUSTOM = 5;\nconst ASPECT_AUTO = 0;\nconst ASPECT_MANUAL = 1;\nconst ORIENTATION_HORIZONTAL = 0;\nconst ORIENTATION_VERTICAL = 1;\nconst SKYTYPE_INFINITE = 'infinite';\nconst SKYTYPE_BOX = 'box';\nconst SKYTYPE_DOME = 'dome';\nconst DITHER_NONE = 'none';\nconst DITHER_BAYER8 = 'bayer8';\nconst DITHER_BLUENOISE = 'bluenoise';\nconst DITHER_IGNNOISE = 'ignnoise';\n\nexport { ASPECT_AUTO, ASPECT_MANUAL, BAKE_COLOR, BAKE_COLORDIR, BLEND_ADDITIVE, BLEND_ADDITIVEALPHA, BLEND_MAX, BLEND_MIN, BLEND_MULTIPLICATIVE, BLEND_MULTIPLICATIVE2X, BLEND_NONE, BLEND_NORMAL, BLEND_PREMULTIPLIED, BLEND_SCREEN, BLEND_SUBTRACTIVE, BLUR_BOX, BLUR_GAUSSIAN, CUBEPROJ_BOX, CUBEPROJ_NONE, DETAILMODE_ADD, DETAILMODE_MAX, DETAILMODE_MIN, DETAILMODE_MUL, DETAILMODE_OVERLAY, DETAILMODE_SCREEN, DITHER_BAYER8, DITHER_BLUENOISE, DITHER_IGNNOISE, DITHER_NONE, EMITTERSHAPE_BOX, EMITTERSHAPE_SPHERE, FOG_EXP, FOG_EXP2, FOG_LINEAR, FOG_NONE, FRESNEL_NONE, FRESNEL_SCHLICK, GAMMA_NONE, GAMMA_SRGB, GAMMA_SRGBFAST, GAMMA_SRGBHDR, LAYERID_DEPTH, LAYERID_IMMEDIATE, LAYERID_SKYBOX, LAYERID_UI, LAYERID_WORLD, LAYER_FX, LAYER_GIZMO, LAYER_HUD, LAYER_WORLD, LIGHTFALLOFF_INVERSESQUARED, LIGHTFALLOFF_LINEAR, LIGHTSHAPE_DISK, LIGHTSHAPE_PUNCTUAL, LIGHTSHAPE_RECT, LIGHTSHAPE_SPHERE, LIGHTTYPE_COUNT, LIGHTTYPE_DIRECTIONAL, LIGHTTYPE_OMNI, LIGHTTYPE_POINT, LIGHTTYPE_SPOT, MASK_AFFECT_DYNAMIC, MASK_AFFECT_LIGHTMAPPED, MASK_BAKE, ORIENTATION_HORIZONTAL, ORIENTATION_VERTICAL, PARTICLEMODE_CPU, PARTICLEMODE_GPU, PARTICLEORIENTATION_EMITTER, PARTICLEORIENTATION_SCREEN, PARTICLEORIENTATION_WORLD, PARTICLESORT_DISTANCE, PARTICLESORT_NEWER_FIRST, PARTICLESORT_NONE, PARTICLESORT_OLDER_FIRST, PROJECTION_ORTHOGRAPHIC, PROJECTION_PERSPECTIVE, RENDERSTYLE_POINTS, RENDERSTYLE_SOLID, RENDERSTYLE_WIREFRAME, SHADERDEF_DIRLM, SHADERDEF_INSTANCING, SHADERDEF_LM, SHADERDEF_LMAMBIENT, SHADERDEF_MORPH_NORMAL, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_TEXTURE_BASED, SHADERDEF_NOSHADOW, SHADERDEF_SCREENSPACE, SHADERDEF_SKIN, SHADERDEF_TANGENTS, SHADERDEF_UV0, SHADERDEF_UV1, SHADERDEF_VCOLOR, SHADERPASS_ALBEDO, SHADERPASS_AO, SHADERPASS_EMISSION, SHADERPASS_FORWARD, SHADERPASS_GLOSS, SHADERPASS_LIGHTING, SHADERPASS_METALNESS, SHADERPASS_OPACITY, SHADERPASS_SPECULARITY, SHADERPASS_UV0, SHADERPASS_WORLDNORMAL, SHADER_DEPTH, SHADER_FORWARD, SHADER_FORWARDHDR, SHADER_PICK, SHADER_PREPASS_VELOCITY, SHADER_SHADOW, SHADOWUPDATE_NONE, SHADOWUPDATE_REALTIME, SHADOWUPDATE_THISFRAME, SHADOW_DEPTH, SHADOW_PCF1, SHADOW_PCF3, SHADOW_PCF5, SHADOW_PCSS, SHADOW_VSM16, SHADOW_VSM32, SHADOW_VSM8, SKYTYPE_BOX, SKYTYPE_DOME, SKYTYPE_INFINITE, SORTKEY_DEPTH, SORTKEY_FORWARD, SORTMODE_BACK2FRONT, SORTMODE_CUSTOM, SORTMODE_FRONT2BACK, SORTMODE_MANUAL, SORTMODE_MATERIALMESH, SORTMODE_NONE, SPECOCC_AO, SPECOCC_GLOSSDEPENDENT, SPECOCC_NONE, SPECULAR_BLINN, SPECULAR_PHONG, SPRITE_RENDERMODE_SIMPLE, SPRITE_RENDERMODE_SLICED, SPRITE_RENDERMODE_TILED, TONEMAP_ACES, TONEMAP_ACES2, TONEMAP_FILMIC, TONEMAP_HEJL, TONEMAP_LINEAR, TONEMAP_NEUTRAL, VIEW_CENTER, VIEW_LEFT, VIEW_RIGHT, shadowTypeToString };\n", "var alphaTestPS = `\nuniform float alpha_ref;\nvoid alphaTest(float a) {\n\tif (a < alpha_ref) discard;\n}\n`;\n\nexport { alphaTestPS as default };\n", "var ambientConstantPS = `\nvoid addAmbient(vec3 worldNormal) {\n\tdDiffuseLight += light_globalAmbient;\n}\n`;\n\nexport { ambientConstantPS as default };\n", "var ambientEnvPS = `\n#ifndef ENV_ATLAS\n#define ENV_ATLAS\nuniform sampler2D texture_envAtlas;\n#endif\nvoid addAmbient(vec3 worldNormal) {\n\tvec3 dir = normalize(cubeMapRotate(worldNormal) * vec3(-1.0, 1.0, 1.0));\n\tvec2 uv = mapUv(toSphericalUv(dir), vec4(128.0, 256.0 + 128.0, 64.0, 32.0) / atlasSize);\n\tvec4 raw = texture2D(texture_envAtlas, uv);\n\tvec3 linear = $DECODE(raw);\n\tdDiffuseLight += processEnvironment(linear);\n}\n`;\n\nexport { ambientEnvPS as default };\n", "var ambientSHPS = `\nuniform vec3 ambientSH[9];\nvoid addAmbient(vec3 worldNormal) {\n\tvec3 n = cubeMapRotate(worldNormal);\n\tvec3 color =\n\t\tambientSH[0] +\n\t\tambientSH[1] * n.x +\n\t\tambientSH[2] * n.y +\n\t\tambientSH[3] * n.z +\n\t\tambientSH[4] * n.x * n.z +\n\t\tambientSH[5] * n.z * n.y +\n\t\tambientSH[6] * n.y * n.x +\n\t\tambientSH[7] * (3.0 * n.z * n.z - 1.0) +\n\t\tambientSH[8] * (n.x * n.x - n.y * n.y);\n\tdDiffuseLight += processEnvironment(max(color, vec3(0.0)));\n}\n`;\n\nexport { ambientSHPS as default };\n", "var aoPS = `\nvoid getAO() {\n\tdAo = 1.0;\n\t#ifdef MAPTEXTURE\n\tfloat aoBase = texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\tdAo *= addAoDetail(aoBase);\n\t#endif\n\t#ifdef MAPVERTEX\n\tdAo *= saturate(vVertexColor.$VC);\n\t#endif\n}\n`;\n\nexport { aoPS as default };\n", "var aoDetailMapPS = `\nfloat addAoDetail(float ao) {\n#ifdef MAPTEXTURE\n\tfloat aoDetail = texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\treturn detailMode_$DETAILMODE(vec3(ao), vec3(aoDetail)).r;\n#else\n\treturn ao;\n#endif\n}\n`;\n\nexport { aoDetailMapPS as default };\n", "var aoDiffuseOccPS = `\nvoid occludeDiffuse(float ao) {\n\tdDiffuseLight *= ao;\n}\n`;\n\nexport { aoDiffuseOccPS as default };\n", "var aoSpecOccPS = `\nuniform float material_occludeSpecularIntensity;\nvoid occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) {\n\tfloat specPow = exp2(gloss * 11.0);\n\tfloat specOcc = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01*specPow) - 1.0 + ao);\n\tspecOcc = mix(1.0, specOcc, material_occludeSpecularIntensity);\n\tdSpecularLight *= specOcc;\n\tdReflection *= specOcc;\n\t\n#ifdef LIT_SHEEN\n\tsSpecularLight *= specOcc;\n\tsReflection *= specOcc;\n#endif\n}\n`;\n\nexport { aoSpecOccPS as default };\n", "var aoSpecOccConstPS = `\nvoid occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) {\n\tfloat specPow = exp2(gloss * 11.0);\n\tfloat specOcc = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01*specPow) - 1.0 + ao);\n\tdSpecularLight *= specOcc;\n\tdReflection *= specOcc;\n\t\n#ifdef LIT_SHEEN\n\tsSpecularLight *= specOcc;\n\tsReflection *= specOcc;\n#endif\n}\n`;\n\nexport { aoSpecOccConstPS as default };\n", "var aoSpecOccConstSimplePS = `\nvoid occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) {\n\tdSpecularLight *= ao;\n\tdReflection *= ao;\n#ifdef LIT_SHEEN\n\tsSpecularLight *= ao;\n\tsReflection *= ao;\n#endif\n}\n`;\n\nexport { aoSpecOccConstSimplePS as default };\n", "var aoSpecOccSimplePS = `\nuniform float material_occludeSpecularIntensity;\nvoid occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) {\n\tfloat specOcc = mix(1.0, ao, material_occludeSpecularIntensity);\n\tdSpecularLight *= specOcc;\n\tdReflection *= specOcc;\n#ifdef LIT_SHEEN\n\tsSpecularLight *= specOcc;\n\tsReflection *= specOcc;\n#endif\n}\n`;\n\nexport { aoSpecOccSimplePS as default };\n", "var basePS = `\nuniform vec3 view_position;\nuniform vec3 light_globalAmbient;\nfloat square(float x) {\n\treturn x*x;\n}\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec3 saturate(vec3 x) {\n\treturn clamp(x, vec3(0.0), vec3(1.0));\n}\n`;\n\nexport { basePS as default };\n", "var baseVS = `\nattribute vec3 vertex_position;\nattribute vec3 vertex_normal;\nattribute vec4 vertex_tangent;\nattribute vec2 vertex_texCoord0;\nattribute vec2 vertex_texCoord1;\nattribute vec4 vertex_color;\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\nuniform mat3 matrix_normal;\nvec3 dPositionW;\nmat4 dModelMatrix;\nmat3 dNormalMatrix;\n`;\n\nexport { baseVS as default };\n", "var baseNineSlicedPS = `\n#define NINESLICED\nvarying vec2 vMask;\nvarying vec2 vTiledUv;\nuniform mediump vec4 innerOffset;\nuniform mediump vec2 outerScale;\nuniform mediump vec4 atlasRect;\nvec2 nineSlicedUv;\n`;\n\nexport { baseNineSlicedPS as default };\n", "var baseNineSlicedVS = `\n#define NINESLICED\nvarying vec2 vMask;\nvarying vec2 vTiledUv;\nuniform mediump vec4 innerOffset;\nuniform mediump vec2 outerScale;\nuniform mediump vec4 atlasRect;\n`;\n\nexport { baseNineSlicedVS as default };\n", "var baseNineSlicedTiledPS = `\n#define NINESLICED\n#define NINESLICETILED\nvarying vec2 vMask;\nvarying vec2 vTiledUv;\nuniform mediump vec4 innerOffset;\nuniform mediump vec2 outerScale;\nuniform mediump vec4 atlasRect;\nvec2 nineSlicedUv;\n`;\n\nexport { baseNineSlicedTiledPS as default };\n", "var bayerPS = `\nfloat bayer2(vec2 p) {\n\treturn mod(2.0 * p.y + p.x + 1.0, 4.0);\n}\nfloat bayer4(vec2 p) {\n\tvec2 p1 = mod(p, 2.0);\n\tvec2 p2 = floor(0.5 * mod(p, 4.0));\n\treturn 4.0 * bayer2(p1) + bayer2(p2);\n}\nfloat bayer8(vec2 p) {\n\tvec2 p1 = mod(p, 2.0);\n\tvec2 p2 = floor(0.5 * mod(p, 4.0));\n\tvec2 p4 = floor(0.25 * mod(p, 8.0));\n\treturn 4.0 * (4.0 * bayer2(p1) + bayer2(p2)) + bayer2(p4);\n}\n`;\n\nexport { bayerPS as default };\n", "var biasConstPS = `\n#define SHADOWBIAS\n#define SHADOW_SAMPLE_Z_BIAS\nfloat getShadowBias(float resolution, float maxBias) {\n\treturn maxBias;\n}\n`;\n\nexport { biasConstPS as default };\n", "var blurVSMPS = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nuniform vec2 pixelOffset;\n#ifdef GAUSS\nuniform float weight[SAMPLES];\n#endif\n#ifdef PACKED\nfloat decodeFloatRG(vec2 rg) {\n\treturn rg.y*(1.0/255.0) + rg.x;\n}\nvec2 encodeFloatRG( float v ) {\n\tvec2 enc = vec2(1.0, 255.0) * v;\n\tenc = fract(enc);\n\tenc -= enc.yy * vec2(1.0/255.0, 1.0/255.0);\n\treturn enc;\n}\n#endif\nvoid main(void) {\n\tvec3 moments = vec3(0.0);\n\tvec2 uv = vUv0 - pixelOffset * (float(SAMPLES) * 0.5);\n\tfor (int i=0; i= vAbs.x && vAbs.z >= vAbs.y) {\n\t\tfaceIndex = dir.z < 0.0 ? 5.0 : 4.0;\n\t\tma = 0.5 / vAbs.z;\n\t\tuv = vec2(dir.z < 0.0 ? -dir.x : dir.x, -dir.y);\n\t\ttileOffset.x = 2.0;\n\t\ttileOffset.y = dir.z < 0.0 ? 1.0 : 0.0;\n\t} else if(vAbs.y >= vAbs.x) {\n\t\tfaceIndex = dir.y < 0.0 ? 3.0 : 2.0;\n\t\tma = 0.5 / vAbs.y;\n\t\tuv = vec2(dir.x, dir.y < 0.0 ? -dir.z : dir.z);\n\t\ttileOffset.x = 1.0;\n\t\ttileOffset.y = dir.y < 0.0 ? 1.0 : 0.0;\n\t} else {\n\t\tfaceIndex = dir.x < 0.0 ? 1.0 : 0.0;\n\t\tma = 0.5 / vAbs.x;\n\t\tuv = vec2(dir.x < 0.0 ? dir.z : -dir.z, -dir.y);\n\t\ttileOffset.x = 0.0;\n\t\ttileOffset.y = dir.x < 0.0 ? 1.0 : 0.0;\n\t}\n\treturn uv * ma + 0.5;\n}\nvec2 getCubemapAtlasCoordinates(const vec3 omniAtlasViewport, float shadowEdgePixels, float shadowTextureResolution, const vec3 dir) {\n\tfloat faceIndex;\n\tvec2 tileOffset;\n\tvec2 uv = getCubemapFaceCoordinates(dir, faceIndex, tileOffset);\n\tfloat atlasFaceSize = omniAtlasViewport.z;\n\tfloat tileSize = shadowTextureResolution * atlasFaceSize;\n\tfloat offset = shadowEdgePixels / tileSize;\n\tuv = uv * vec2(1.0 - offset * 2.0) + vec2(offset * 1.0);\n\tuv *= atlasFaceSize;\n\tuv += tileOffset * atlasFaceSize;\n\tuv += omniAtlasViewport.xy;\n\treturn uv;\n}\n`;\n\nexport { clusteredLightUtilsPS as default };\n", "var clusteredLightCookiesPS = `\nvec3 _getCookieClustered(TEXTURE_ACCEPT(tex), vec2 uv, float intensity, bool isRgb, vec4 cookieChannel) {\n\tvec4 pixel = mix(vec4(1.0), texture2DLodEXT(tex, uv, 0.0), intensity);\n\treturn isRgb == true ? pixel.rgb : vec3(dot(pixel, cookieChannel));\n}\nvec3 getCookie2DClustered(TEXTURE_ACCEPT(tex), mat4 transform, vec3 worldPosition, float intensity, bool isRgb, vec4 cookieChannel) {\n\tvec4 projPos = transform * vec4(worldPosition, 1.0);\n\treturn _getCookieClustered(TEXTURE_PASS(tex), projPos.xy / projPos.w, intensity, isRgb, cookieChannel);\n}\nvec3 getCookieCubeClustered(TEXTURE_ACCEPT(tex), vec3 dir, float intensity, bool isRgb, vec4 cookieChannel, float shadowTextureResolution, float shadowEdgePixels, vec3 omniAtlasViewport) {\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, dir);\n\treturn _getCookieClustered(TEXTURE_PASS(tex), uv, intensity, isRgb, cookieChannel);\n}\n`;\n\nexport { clusteredLightCookiesPS as default };\n", "var clusteredLightShadowsPS = `\nvoid _getShadowCoordPerspZbuffer(mat4 shadowMatrix, vec4 shadowParams, vec3 wPos) {\n\tvec4 projPos = shadowMatrix * vec4(wPos, 1.0);\n\tprojPos.xyz /= projPos.w;\n\tdShadowCoord = projPos.xyz;\n}\nvoid getShadowCoordPerspZbufferNormalOffset(mat4 shadowMatrix, vec4 shadowParams, vec3 normal) {\n\tvec3 wPos = vPositionW + normal * shadowParams.y;\n\t_getShadowCoordPerspZbuffer(shadowMatrix, shadowParams, wPos);\n}\nvec3 normalOffsetPointShadow(vec4 shadowParams, vec3 lightPos, inout vec3 lightDir, vec3 lightDirNorm, vec3 normal) {\n\tfloat distScale = length(lightDir);\n\tvec3 wPos = vPositionW + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\tvec3 dir = wPos - lightPos;\n\treturn dir;\n}\n#ifdef GL2\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\tfloat getShadowOmniClusteredPCF1(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\t\tfloat shadowTextureResolution = shadowParams.x;\n\t\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\treturn textureShadow(shadowMap, vec3(uv, shadowZ));\n\t}\n\t#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF3)\n\tfloat getShadowOmniClusteredPCF3(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\t\tfloat shadowTextureResolution = shadowParams.x;\n\t\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\tvec3 shadowCoord = vec3(uv, shadowZ);\n\t\treturn getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n\t}\n\t#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF5)\n\tfloat getShadowOmniClusteredPCF5(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\t\tfloat shadowTextureResolution = shadowParams.x;\n\t\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\tvec3 shadowCoord = vec3(uv, shadowZ);\n\t\treturn getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n\t}\n\t#endif\n#else\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\tfloat getShadowOmniClusteredPCF1(sampler2D shadowMap, vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\t\tfloat shadowTextureResolution = shadowParams.x;\n\t\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tfloat depth = unpackFloat(textureShadow(shadowMap, uv));\n\t\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\treturn depth > shadowZ ? 1.0 : 0.0;\n\t}\n\t#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF3)\n\tfloat getShadowOmniClusteredPCF3(sampler2D shadowMap, vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\t\tfloat shadowTextureResolution = shadowParams.x;\n\t\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\tvec3 shadowCoord = vec3(uv, shadowZ);\n\t\treturn getShadowPCF3x3(shadowMap, shadowCoord, shadowParams);\n\t}\n\t#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF5)\n\tfloat getShadowOmniClusteredPCF5(sampler2D shadowMap, vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\t\tfloat shadowTextureResolution = shadowParams.x;\n\t\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\tvec3 shadowCoord = vec3(uv, shadowZ);\n\t\treturn getShadowPCF3x3(shadowMap, shadowCoord, shadowParams);\n\t}\n\t#endif\n#endif\n#ifdef GL2\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\tfloat getShadowSpotClusteredPCF1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\t\treturn textureShadow(shadowMap, shadowCoord);\n\t}\n\t#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF3)\n\tfloat getShadowSpotClusteredPCF3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\t\treturn getShadowSpotPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n\t}\n\t#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF5)\n\tfloat getShadowSpotClusteredPCF5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\t\treturn getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n\t}\n\t#endif\n#else\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\tfloat getShadowSpotClusteredPCF1(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) {\n\t\tfloat depth = unpackFloat(textureShadow(shadowMap, shadowCoord.xy));\n\t\treturn depth > shadowCoord.z ? 1.0 : 0.0;\n\t}\n\t#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF3)\n\tfloat getShadowSpotClusteredPCF3(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) {\n\t\treturn getShadowSpotPCF3x3(shadowMap, shadowCoord, shadowParams);\n\t}\n\t#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF5)\n\tfloat getShadowSpotClusteredPCF5(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) {\n\t\treturn getShadowSpotPCF3x3(shadowMap, shadowCoord, shadowParams);\n\t}\n\t#endif\n#endif\n`;\n\nexport { clusteredLightShadowsPS as default };\n", "var clusteredLightPS = `\nuniform highp sampler2D clusterWorldTexture;\nuniform highp sampler2D lightsTexture8;\nuniform highp sampler2D lightsTextureFloat;\n#if defined(CLUSTER_COOKIES)\n\t#define CLUSTER_COOKIES_OR_SHADOWS\n#endif\n#if defined(CLUSTER_SHADOWS)\n\t#define CLUSTER_COOKIES_OR_SHADOWS\n#endif\n#ifdef CLUSTER_SHADOWS\n\t#ifdef GL2\n\t\tuniform sampler2DShadow shadowAtlasTexture;\n\t#else\n\t\tuniform sampler2D shadowAtlasTexture;\n\t#endif\n#endif\n#ifdef CLUSTER_COOKIES\n\tuniform sampler2D cookieAtlasTexture;\n#endif\n#ifdef GL2\n\tuniform int clusterMaxCells;\n#else\n\tuniform float clusterMaxCells;\n\tuniform vec4 lightsTextureInvSize;\n#endif\nuniform float clusterSkip;\nuniform vec3 clusterCellsCountByBoundsSize;\nuniform vec3 clusterTextureSize;\nuniform vec3 clusterBoundsMin;\nuniform vec3 clusterBoundsDelta;\nuniform vec3 clusterCellsDot;\nuniform vec3 clusterCellsMax;\nuniform vec2 clusterCompressionLimit0;\nuniform vec2 shadowAtlasParams;\nstruct ClusterLightData {\n\tvec3 halfWidth;\n\tfloat lightType;\n\tvec3 halfHeight;\n\t#ifdef GL2\n\t\tint lightIndex;\n\t#else\n\t\tfloat lightV;\n\t#endif\n\tvec3 position;\n\tfloat shape;\n\tvec3 direction;\n\tfloat falloffMode;\n\tvec3 color;\n\tfloat shadowIntensity;\n\tvec3 omniAtlasViewport;\n\tfloat range;\n\tvec4 cookieChannelMask;\n\tfloat shadowBias;\n\tfloat shadowNormalBias;\n\tfloat innerConeAngleCos;\n\tfloat outerConeAngleCos;\n\tfloat cookie;\n\tfloat cookieRgb;\n\tfloat cookieIntensity;\n\tfloat mask;\n};\nmat4 lightProjectionMatrix;\n#define isClusteredLightCastShadow(light) ( light.shadowIntensity > 0.0 )\n#define isClusteredLightCookie(light) (light.cookie > 0.5 )\n#define isClusteredLightCookieRgb(light) (light.cookieRgb > 0.5 )\n#define isClusteredLightSpot(light) ( light.lightType > 0.5 )\n#define isClusteredLightFalloffLinear(light) ( light.falloffMode < 0.5 )\n#define isClusteredLightArea(light) ( light.shape > 0.1 )\n#define isClusteredLightRect(light) ( light.shape < 0.3 )\n#define isClusteredLightDisk(light) ( light.shape < 0.6 )\n#ifdef CLUSTER_MESH_DYNAMIC_LIGHTS\n\t#define acceptLightMask(light) ( light.mask < 0.75)\n#else\n\t#define acceptLightMask(light) ( light.mask > 0.25)\n#endif\nvec4 decodeClusterLowRange4Vec4(vec4 d0, vec4 d1, vec4 d2, vec4 d3) {\n\treturn vec4(\n\t\tbytes2floatRange4(d0, -2.0, 2.0),\n\t\tbytes2floatRange4(d1, -2.0, 2.0),\n\t\tbytes2floatRange4(d2, -2.0, 2.0),\n\t\tbytes2floatRange4(d3, -2.0, 2.0)\n\t);\n}\n#ifdef GL2\n\tvec4 sampleLightsTexture8(const ClusterLightData clusterLightData, int index) {\n\t\treturn texelFetch(lightsTexture8, ivec2(index, clusterLightData.lightIndex), 0);\n\t}\n\tvec4 sampleLightTextureF(const ClusterLightData clusterLightData, int index) {\n\t\treturn texelFetch(lightsTextureFloat, ivec2(index, clusterLightData.lightIndex), 0);\n\t}\n#else\n\tvec4 sampleLightsTexture8(const ClusterLightData clusterLightData, float index) {\n\t\treturn texture2DLodEXT(lightsTexture8, vec2(index * lightsTextureInvSize.z, clusterLightData.lightV), 0.0);\n\t}\n\tvec4 sampleLightTextureF(const ClusterLightData clusterLightData, float index) {\n\t\treturn texture2DLodEXT(lightsTextureFloat, vec2(index * lightsTextureInvSize.x, clusterLightData.lightV), 0.0);\n\t}\n#endif\nvoid decodeClusterLightCore(inout ClusterLightData clusterLightData, float lightIndex) {\n\t#ifdef GL2\n\t\tclusterLightData.lightIndex = int(lightIndex);\n\t#else\n\t\tclusterLightData.lightV = (lightIndex + 0.5) * lightsTextureInvSize.w;\n\t#endif\n\tvec4 lightInfo = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_FLAGS);\n\tclusterLightData.lightType = lightInfo.x;\n\tclusterLightData.shape = lightInfo.y;\n\tclusterLightData.falloffMode = lightInfo.z;\n\tclusterLightData.shadowIntensity = lightInfo.w;\n\tvec4 colorA = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_COLOR_A);\n\tvec4 colorB = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_COLOR_B);\n\tclusterLightData.color = vec3(bytes2float2(colorA.xy), bytes2float2(colorA.zw), bytes2float2(colorB.xy)) * clusterCompressionLimit0.y;\n\tclusterLightData.cookie = colorB.z;\n\tclusterLightData.mask = colorB.w;\n\t#ifdef CLUSTER_TEXTURE_FLOAT\n\t\tvec4 lightPosRange = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_POSITION_RANGE);\n\t\tclusterLightData.position = lightPosRange.xyz;\n\t\tclusterLightData.range = lightPosRange.w;\n\t\tvec4 lightDir_Unused = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_SPOT_DIRECTION);\n\t\tclusterLightData.direction = lightDir_Unused.xyz;\n\t#else\n\t\tvec4 encPosX = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_POSITION_X);\n\t\tvec4 encPosY = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_POSITION_Y);\n\t\tvec4 encPosZ = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_POSITION_Z);\n\t\tclusterLightData.position = vec3(bytes2float4(encPosX), bytes2float4(encPosY), bytes2float4(encPosZ)) * clusterBoundsDelta + clusterBoundsMin;\n\t\tvec4 encRange = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_RANGE);\n\t\tclusterLightData.range = bytes2float4(encRange) * clusterCompressionLimit0.x;\n\t\tvec4 encDirX = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SPOT_DIRECTION_X);\n\t\tvec4 encDirY = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SPOT_DIRECTION_Y);\n\t\tvec4 encDirZ = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SPOT_DIRECTION_Z);\n\t\tclusterLightData.direction = vec3(bytes2float4(encDirX), bytes2float4(encDirY), bytes2float4(encDirZ)) * 2.0 - 1.0;\n\t#endif\n}\nvoid decodeClusterLightSpot(inout ClusterLightData clusterLightData) {\n\tvec4 coneAngle = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SPOT_ANGLES);\n\tclusterLightData.innerConeAngleCos = bytes2float2(coneAngle.xy) * 2.0 - 1.0;\n\tclusterLightData.outerConeAngleCos = bytes2float2(coneAngle.zw) * 2.0 - 1.0;\n}\nvoid decodeClusterLightOmniAtlasViewport(inout ClusterLightData clusterLightData) {\n\t#ifdef CLUSTER_TEXTURE_FLOAT\n\t\tclusterLightData.omniAtlasViewport = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_0).xyz;\n\t#else\n\t\tvec4 viewportA = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_ATLAS_VIEWPORT_A);\n\t\tvec4 viewportB = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_ATLAS_VIEWPORT_B);\n\t\tclusterLightData.omniAtlasViewport = vec3(bytes2float2(viewportA.xy), bytes2float2(viewportA.zw), bytes2float2(viewportB.xy));\n\t#endif\n}\nvoid decodeClusterLightAreaData(inout ClusterLightData clusterLightData) {\n\t#ifdef CLUSTER_TEXTURE_FLOAT\n\t\tclusterLightData.halfWidth = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_AREA_DATA_WIDTH).xyz;\n\t\tclusterLightData.halfHeight = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_AREA_DATA_HEIGHT).xyz;\n\t#else\n\t\tvec4 areaWidthX = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_WIDTH_X);\n\t\tvec4 areaWidthY = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_WIDTH_Y);\n\t\tvec4 areaWidthZ = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_WIDTH_Z);\n\t\tclusterLightData.halfWidth = vec3(mantissaExponent2Float(areaWidthX), mantissaExponent2Float(areaWidthY), mantissaExponent2Float(areaWidthZ));\n\t\tvec4 areaHeightX = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_HEIGHT_X);\n\t\tvec4 areaHeightY = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_HEIGHT_Y);\n\t\tvec4 areaHeightZ = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_AREA_DATA_HEIGHT_Z);\n\t\tclusterLightData.halfHeight = vec3(mantissaExponent2Float(areaHeightX), mantissaExponent2Float(areaHeightY), mantissaExponent2Float(areaHeightZ));\n\t#endif\n}\nvoid decodeClusterLightProjectionMatrixData(inout ClusterLightData clusterLightData) {\n\t\n\t#ifdef CLUSTER_TEXTURE_FLOAT\n\t\tvec4 m0 = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_0);\n\t\tvec4 m1 = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_1);\n\t\tvec4 m2 = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_2);\n\t\tvec4 m3 = sampleLightTextureF(clusterLightData, CLUSTER_TEXTURE_F_PROJ_MAT_3);\n\t#else\n\t\tvec4 m00 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_00);\n\t\tvec4 m01 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_01);\n\t\tvec4 m02 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_02);\n\t\tvec4 m03 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_03);\n\t\tvec4 m0 = decodeClusterLowRange4Vec4(m00, m01, m02, m03);\n\t\tvec4 m10 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_10);\n\t\tvec4 m11 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_11);\n\t\tvec4 m12 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_12);\n\t\tvec4 m13 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_13);\n\t\tvec4 m1 = decodeClusterLowRange4Vec4(m10, m11, m12, m13);\n\t\tvec4 m20 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_20);\n\t\tvec4 m21 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_21);\n\t\tvec4 m22 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_22);\n\t\tvec4 m23 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_23);\n\t\tvec4 m2 = decodeClusterLowRange4Vec4(m20, m21, m22, m23);\n\t\tvec4 m30 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_30);\n\t\tvec4 m31 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_31);\n\t\tvec4 m32 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_32);\n\t\tvec4 m33 = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_PROJ_MAT_33);\n\t\tvec4 m3 = vec4(mantissaExponent2Float(m30), mantissaExponent2Float(m31), mantissaExponent2Float(m32), mantissaExponent2Float(m33));\n\t#endif\n\t\n\tlightProjectionMatrix = mat4(m0, m1, m2, m3);\n}\nvoid decodeClusterLightShadowData(inout ClusterLightData clusterLightData) {\n\t\n\tvec4 biases = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_SHADOW_BIAS);\n\tclusterLightData.shadowBias = bytes2floatRange2(biases.xy, -1.0, 20.0),\n\tclusterLightData.shadowNormalBias = bytes2float2(biases.zw);\n}\nvoid decodeClusterLightCookieData(inout ClusterLightData clusterLightData) {\n\tvec4 cookieA = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_COOKIE_A);\n\tclusterLightData.cookieIntensity = cookieA.x;\n\tclusterLightData.cookieRgb = cookieA.y;\n\tclusterLightData.cookieChannelMask = sampleLightsTexture8(clusterLightData, CLUSTER_TEXTURE_8_COOKIE_B);\n}\nvoid evaluateLight(\n\tClusterLightData light, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir,\n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tvec3 cookieAttenuation = vec3(1.0);\n\tfloat diffuseAttenuation = 1.0;\n\tfloat falloffAttenuation = 1.0;\n\tgetLightDirPoint(light.position);\n\t#ifdef CLUSTER_AREALIGHTS\n\tif (isClusteredLightArea(light)) {\n\t\tdecodeClusterLightAreaData(light);\n\t\tif (isClusteredLightRect(light)) {\n\t\t\tcalcRectLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else if (isClusteredLightDisk(light)) {\n\t\t\tcalcDiskLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else {\n\t\t\tcalcSphereLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t}\n\t\tfalloffAttenuation = getFalloffWindow(light.range, dLightDirW);\n\t} else\n\t#endif\n\t{\n\t\tif (isClusteredLightFalloffLinear(light))\n\t\t\tfalloffAttenuation = getFalloffLinear(light.range, dLightDirW);\n\t\telse\n\t\t\tfalloffAttenuation = getFalloffInvSquared(light.range, dLightDirW);\n\t}\n\tif (falloffAttenuation > 0.00001) {\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (isClusteredLightArea(light)) {\n\t\t\tif (isClusteredLightRect(light)) {\n\t\t\t\tdiffuseAttenuation = getRectLightDiffuse(worldNormal, viewDir, dLightDirW, dLightDirNormW) * 16.0;\n\t\t\t} else if (isClusteredLightDisk(light)) {\n\t\t\t\tdiffuseAttenuation = getDiskLightDiffuse(worldNormal, viewDir, dLightDirW, dLightDirNormW) * 16.0;\n\t\t\t} else {\n\t\t\t\tdiffuseAttenuation = getSphereLightDiffuse(worldNormal, viewDir, dLightDirW, dLightDirNormW) * 16.0;\n\t\t\t}\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\tfalloffAttenuation *= getLightDiffuse(worldNormal, viewDir, dLightDirW, dLightDirNormW); \n\t\t}\n\t\tif (isClusteredLightSpot(light)) {\n\t\t\tdecodeClusterLightSpot(light);\n\t\t\tfalloffAttenuation *= getSpotEffect(light.direction, light.innerConeAngleCos, light.outerConeAngleCos, dLightDirNormW);\n\t\t}\n\t\t#if defined(CLUSTER_COOKIES_OR_SHADOWS)\n\t\tif (falloffAttenuation > 0.00001) {\n\t\t\tif (isClusteredLightCastShadow(light) || isClusteredLightCookie(light)) {\n\t\t\t\tif (isClusteredLightSpot(light)) {\n\t\t\t\t\tdecodeClusterLightProjectionMatrixData(light);\n\t\t\t\t} else {\n\t\t\t\t\tdecodeClusterLightOmniAtlasViewport(light);\n\t\t\t\t}\n\t\t\t\tfloat shadowTextureResolution = shadowAtlasParams.x;\n\t\t\t\tfloat shadowEdgePixels = shadowAtlasParams.y;\n\t\t\t\t#ifdef CLUSTER_COOKIES\n\t\t\t\tif (isClusteredLightCookie(light)) {\n\t\t\t\t\tdecodeClusterLightCookieData(light);\n\t\t\t\t\tif (isClusteredLightSpot(light)) {\n\t\t\t\t\t\tcookieAttenuation = getCookie2DClustered(TEXTURE_PASS(cookieAtlasTexture), lightProjectionMatrix, vPositionW, light.cookieIntensity, isClusteredLightCookieRgb(light), light.cookieChannelMask);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcookieAttenuation = getCookieCubeClustered(TEXTURE_PASS(cookieAtlasTexture), dLightDirW, light.cookieIntensity, isClusteredLightCookieRgb(light), light.cookieChannelMask, shadowTextureResolution, shadowEdgePixels, light.omniAtlasViewport);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t\t#ifdef CLUSTER_SHADOWS\n\t\t\t\tif (isClusteredLightCastShadow(light)) {\n\t\t\t\t\tdecodeClusterLightShadowData(light);\n\t\t\t\t\tvec4 shadowParams = vec4(shadowTextureResolution, light.shadowNormalBias, light.shadowBias, 1.0 / light.range);\n\t\t\t\t\tif (isClusteredLightSpot(light)) {\n\t\t\t\t\t\tgetShadowCoordPerspZbufferNormalOffset(lightProjectionMatrix, shadowParams, geometricNormal);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF1(SHADOWMAP_PASS(shadowAtlasTexture), dShadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF3(SHADOWMAP_PASS(shadowAtlasTexture), dShadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF5(SHADOWMAP_PASS(shadowAtlasTexture), dShadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCSS)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCSS(SHADOWMAP_PASS(shadowAtlasTexture), dShadowCoord, shadowParams);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation *= mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvec3 dir = normalOffsetPointShadow(shadowParams, dLightPosW, dLightDirW, dLightDirNormW, geometricNormal);\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF1(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF3(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF5(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation *= mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#endif\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (isClusteredLightArea(light)) {\n\t\t\t{\n\t\t\t\tvec3 areaDiffuse = (diffuseAttenuation * falloffAttenuation) * light.color * cookieAttenuation;\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\t#if defined(LIT_CONSERVE_ENERGY)\n\t\t\t\t\t\tareaDiffuse = mix(areaDiffuse, vec3(0), dLTCSpecFres);\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight += areaDiffuse;\n\t\t\t}\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tfloat areaLightSpecular;\n\t\t\t\tif (isClusteredLightRect(light)) {\n\t\t\t\t\tareaLightSpecular = getRectLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else if (isClusteredLightDisk(light)) {\n\t\t\t\t\tareaLightSpecular = getDiskLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else {\n\t\t\t\t\tareaLightSpecular = getSphereLightSpecular(worldNormal, viewDir);\n\t\t\t\t}\n\t\t\t\tdSpecularLight += dLTCSpecFres * areaLightSpecular * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\tfloat areaLightSpecularCC;\n\t\t\t\t\tif (isClusteredLightRect(light)) {\n\t\t\t\t\t\tareaLightSpecularCC = getRectLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else if (isClusteredLightDisk(light)) {\n\t\t\t\t\t\tareaLightSpecularCC = getDiskLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tareaLightSpecularCC = getSphereLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t}\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * areaLightSpecularCC * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\t{\n\t\t\t\tvec3 punctualDiffuse = falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#if defined(CLUSTER_AREALIGHTS)\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t#if defined(LIT_CONSERVE_ENERGY)\n\t\t\t\t\tpunctualDiffuse = mix(punctualDiffuse, vec3(0), specularity);\n\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight += punctualDiffuse;\n\t\t\t}\n\t \n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvec3 halfDir = normalize(-dLightDirNormW + viewDir);\n\t\t\t\t\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tdSpecularLight += \n\t\t\t\t\t\tgetLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dLightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * \n\t\t\t\t\t\tgetFresnel(\n\t\t\t\t\t\t\tdot(viewDir, halfDir), \n\t\t\t\t\t\t\tgloss, \n\t\t\t\t\t\t\tspecularity\n\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\t\tiridescence_intensity\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t);\n\t\t\t\t#else\n\t\t\t\t\tdSpecularLight += getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dLightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * specularity;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\t\tccSpecularLight += getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, dLightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * getFresnelCC(dot(viewDir, halfDir));\n\t\t\t\t\t#else\n\t\t\t\t\t\tccSpecularLight += getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, dLightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation; \n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tsSpecularLight += getLightSpecularSheen(halfDir, worldNormal, viewDir, dLightDirNormW, sheen_gloss) * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t}\n\t}\n\tdAtten = falloffAttenuation;\n\tdAttenD = diffuseAttenuation;\n\tdAtten3 = cookieAttenuation;\n}\nvoid evaluateClusterLight(\n\tfloat lightIndex, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tClusterLightData clusterLightData;\n\tdecodeClusterLightCore(clusterLightData, lightIndex);\n\tif (acceptLightMask(clusterLightData))\n\t\tevaluateLight(\n\t\t\tclusterLightData, \n\t\t\tworldNormal, \n\t\t\tviewDir, \n\t\t\treflectionDir, \n#if defined(LIT_CLEARCOAT)\n\t\t\tclearcoatReflectionDir, \n#endif\n\t\t\tgloss, \n\t\t\tspecularity, \n\t\t\tgeometricNormal, \n\t\t\ttbn, \n#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel,\n#endif\n\t\t\tclearcoat_worldNormal,\n\t\t\tclearcoat_gloss,\n\t\t\tsheen_gloss,\n\t\t\tiridescence_intensity\n\t\t);\n}\nvoid addClusteredLights(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tif (clusterSkip > 0.5)\n\t\treturn;\n\tvec3 cellCoords = floor((vPositionW - clusterBoundsMin) * clusterCellsCountByBoundsSize);\n\tif (!(any(lessThan(cellCoords, vec3(0.0))) || any(greaterThanEqual(cellCoords, clusterCellsMax)))) {\n\t\tfloat cellIndex = dot(clusterCellsDot, cellCoords);\n\t\tfloat clusterV = floor(cellIndex * clusterTextureSize.y);\n\t\tfloat clusterU = cellIndex - (clusterV * clusterTextureSize.x);\n\t\t#ifdef GL2\n\t\t\tfor (int lightCellIndex = 0; lightCellIndex < clusterMaxCells; lightCellIndex++) {\n\t\t\t\tfloat lightIndex = texelFetch(clusterWorldTexture, ivec2(int(clusterU) + lightCellIndex, clusterV), 0).x;\n\t\t\t\tif (lightIndex <= 0.0)\n\t\t\t\t\t\treturn;\n\t\t\t\tevaluateClusterLight(\n\t\t\t\t\tlightIndex * 255.0, \n\t\t\t\t\tworldNormal, \n\t\t\t\t\tviewDir, \n\t\t\t\t\treflectionDir,\n#if defined(LIT_CLEARCOAT)\n\t\t\t\t\tclearcoatReflectionDir,\n#endif\n\t\t\t\t\tgloss, \n\t\t\t\t\tspecularity, \n\t\t\t\t\tgeometricNormal, \n\t\t\t\t\ttbn, \n#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\tiridescenceFresnel,\n#endif\n\t\t\t\t\tclearcoat_worldNormal,\n\t\t\t\t\tclearcoat_gloss,\n\t\t\t\t\tsheen_gloss,\n\t\t\t\t\tiridescence_intensity\n\t\t\t\t); \n\t\t\t}\n\t\t#else\n\t\t\tclusterV = (clusterV + 0.5) * clusterTextureSize.z;\n\t\t\tconst float maxLightCells = 256.0;\n\t\t\tfor (float lightCellIndex = 0.5; lightCellIndex < maxLightCells; lightCellIndex++) {\n\t\t\t\tfloat lightIndex = texture2DLodEXT(clusterWorldTexture, vec2(clusterTextureSize.y * (clusterU + lightCellIndex), clusterV), 0.0).x;\n\t\t\t\tif (lightIndex <= 0.0)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\tevaluateClusterLight(\n\t\t\t\t\tlightIndex * 255.0, \n\t\t\t\t\tworldNormal, \n\t\t\t\t\tviewDir, \n\t\t\t\t\treflectionDir,\n#if defined(LIT_CLEARCOAT)\n\t\t\t\t\tclearcoatReflectionDir,\n#endif\n\t\t\t\t\tgloss, \n\t\t\t\t\tspecularity, \n\t\t\t\t\tgeometricNormal, \n\t\t\t\t\ttbn, \n#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\tiridescenceFresnel,\n#endif\n\t\t\t\t\tclearcoat_worldNormal,\n\t\t\t\t\tclearcoat_gloss,\n\t\t\t\t\tsheen_gloss,\n\t\t\t\t\tiridescence_intensity\n\t\t\t\t); \n\t\t\t\tif (lightCellIndex >= clusterMaxCells) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t#endif\n\t}\n}\n`;\n\nexport { clusteredLightPS as default };\n", "var combinePS = `\nvec3 combineColor(vec3 albedo, vec3 sheenSpecularity, float clearcoatSpecularity) {\n\tvec3 ret = vec3(0);\n#ifdef LIT_OLD_AMBIENT\n\tret += (dDiffuseLight - light_globalAmbient) * albedo + material_ambient * light_globalAmbient;\n#else\n\tret += albedo * dDiffuseLight;\n#endif\n#ifdef LIT_SPECULAR\n\tret += dSpecularLight;\n#endif\n#ifdef LIT_REFLECTIONS\n\tret += dReflection.rgb * dReflection.a;\n#endif\n#ifdef LIT_SHEEN\n\tfloat sheenScaling = 1.0 - max(max(sheenSpecularity.r, sheenSpecularity.g), sheenSpecularity.b) * 0.157;\n\tret = ret * sheenScaling + (sSpecularLight + sReflection.rgb) * sheenSpecularity;\n#endif\n#ifdef LIT_CLEARCOAT\n\tfloat clearCoatScaling = 1.0 - ccFresnel * clearcoatSpecularity;\n\tret = ret * clearCoatScaling + (ccSpecularLight + ccReflection.rgb) * clearcoatSpecularity;\n#endif\n\treturn ret;\n}\n`;\n\nexport { combinePS as default };\n", "var cookiePS = `\nvec4 getCookie2D(sampler2D tex, mat4 transform, float intensity) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\treturn mix(vec4(1.0), texture2D(tex, projPos.xy), intensity);\n}\nvec4 getCookie2DClip(sampler2D tex, mat4 transform, float intensity) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tif (projPos.x < 0.0 || projPos.x > 1.0 || projPos.y < 0.0 || projPos.y > 1.0 || projPos.z < 0.0) return vec4(0.0);\n\treturn mix(vec4(1.0), texture2D(tex, projPos.xy), intensity);\n}\nvec4 getCookie2DXform(sampler2D tex, mat4 transform, float intensity, vec4 cookieMatrix, vec2 cookieOffset) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tprojPos.xy += cookieOffset;\n\tvec2 uv = mat2(cookieMatrix) * (projPos.xy-vec2(0.5)) + vec2(0.5);\n\treturn mix(vec4(1.0), texture2D(tex, uv), intensity);\n}\nvec4 getCookie2DClipXform(sampler2D tex, mat4 transform, float intensity, vec4 cookieMatrix, vec2 cookieOffset) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tprojPos.xy += cookieOffset;\n\tif (projPos.x < 0.0 || projPos.x > 1.0 || projPos.y < 0.0 || projPos.y > 1.0 || projPos.z < 0.0) return vec4(0.0);\n\tvec2 uv = mat2(cookieMatrix) * (projPos.xy-vec2(0.5)) + vec2(0.5);\n\treturn mix(vec4(1.0), texture2D(tex, uv), intensity);\n}\nvec4 getCookieCube(samplerCube tex, mat4 transform, float intensity) {\n\treturn mix(vec4(1.0), textureCube(tex, dLightDirNormW * mat3(transform)), intensity);\n}\n`;\n\nexport { cookiePS as default };\n", "var cubeMapProjectBoxPS = `\nuniform vec3 envBoxMin;\nuniform vec3 envBoxMax;\nvec3 cubeMapProject(vec3 nrdir) {\n\tnrdir = cubeMapRotate(nrdir);\n\tvec3 rbmax = (envBoxMax - vPositionW) / nrdir;\n\tvec3 rbmin = (envBoxMin - vPositionW) / nrdir;\n\tvec3 rbminmax;\n\trbminmax.x = nrdir.x>0.0? rbmax.x : rbmin.x;\n\trbminmax.y = nrdir.y>0.0? rbmax.y : rbmin.y;\n\trbminmax.z = nrdir.z>0.0? rbmax.z : rbmin.z;\n\tfloat fa = min(min(rbminmax.x, rbminmax.y), rbminmax.z);\n\tvec3 posonbox = vPositionW + nrdir * fa;\n\tvec3 envBoxPos = (envBoxMin + envBoxMax) * 0.5;\n\treturn normalize(posonbox - envBoxPos);\n}\n`;\n\nexport { cubeMapProjectBoxPS as default };\n", "var cubeMapProjectNonePS = `\nvec3 cubeMapProject(vec3 dir) {\n\treturn cubeMapRotate(dir);\n}\n`;\n\nexport { cubeMapProjectNonePS as default };\n", "var cubeMapRotatePS = `\n#ifdef CUBEMAP_ROTATION\nuniform mat3 cubeMapRotationMatrix;\n#endif\nvec3 cubeMapRotate(vec3 refDir) {\n#ifdef CUBEMAP_ROTATION\n\treturn refDir * cubeMapRotationMatrix;\n#else\n\treturn refDir;\n#endif\n}\n`;\n\nexport { cubeMapRotatePS as default };\n", "var debugOutputPS = `\n#ifdef DEBUG_ALBEDO_PASS\ngl_FragColor = vec4(gammaCorrectOutput(dAlbedo), 1.0);\n#endif\n#ifdef DEBUG_UV0_PASS\ngl_FragColor = vec4(litArgs_albedo , 1.0);\n#endif\n#ifdef DEBUG_WORLD_NORMAL_PASS\ngl_FragColor = vec4(litArgs_worldNormal * 0.5 + 0.5, 1.0);\n#endif\n#ifdef DEBUG_OPACITY_PASS\ngl_FragColor = vec4(vec3(litArgs_opacity) , 1.0);\n#endif\n#ifdef DEBUG_SPECULARITY_PASS\ngl_FragColor = vec4(litArgs_specularity, 1.0);\n#endif\n#ifdef DEBUG_GLOSS_PASS\ngl_FragColor = vec4(vec3(litArgs_gloss) , 1.0);\n#endif\n#ifdef DEBUG_METALNESS_PASS\ngl_FragColor = vec4(vec3(litArgs_metalness) , 1.0);\n#endif\n#ifdef DEBUG_AO_PASS\ngl_FragColor = vec4(vec3(litArgs_ao) , 1.0);\n#endif\n#ifdef DEBUG_EMISSION_PASS\ngl_FragColor = vec4(gammaCorrectOutput(litArgs_emission), 1.0);\n#endif\n`;\n\nexport { debugOutputPS as default };\n", "var debugProcessFrontendPS = `\n#ifdef DEBUG_LIGHTING_PASS\nlitArgs_albedo = vec3(0.5);\n#endif\n#ifdef DEBUG_UV0_PASS\n#ifdef VARYING_VUV0\nlitArgs_albedo = vec3(vUv0, 0);\n#else\nlitArgs_albedo = vec3(0);\n#endif\n#endif\n`;\n\nexport { debugProcessFrontendPS as default };\n", "var decodePS = `\nvec3 decodeLinear(vec4 raw) {\n\treturn raw.rgb;\n}\nfloat decodeGamma(float raw) {\n\treturn pow(raw, 2.2);\n}\nvec3 decodeGamma(vec3 raw) {\n\treturn pow(raw, vec3(2.2));\n}\nvec3 decodeGamma(vec4 raw) {\n\treturn pow(raw.xyz, vec3(2.2));\n}\nvec3 decodeRGBM(vec4 raw) {\n\tvec3 color = (8.0 * raw.a) * raw.rgb;\n\treturn color * color;\n}\nvec3 decodeRGBP(vec4 raw) {\n\tvec3 color = raw.rgb * (-raw.a * 7.0 + 8.0);\n\treturn color * color;\n}\nvec3 decodeRGBE(vec4 raw) {\n\tif (raw.a == 0.0) {\n\t\treturn vec3(0.0, 0.0, 0.0);\n\t} else {\n\t\treturn raw.xyz * pow(2.0, raw.w * 255.0 - 128.0);\n\t}\n}\nvec4 passThrough(vec4 raw) {\n\treturn raw;\n}\n`;\n\nexport { decodePS as default };\n", "var detailModesPS = `\nvec3 detailMode_mul(vec3 c1, vec3 c2) {\n\treturn c1 * c2;\n}\nvec3 detailMode_add(vec3 c1, vec3 c2) {\n\treturn c1 + c2;\n}\nvec3 detailMode_screen(vec3 c1, vec3 c2) {\n\treturn 1.0 - (1.0 - c1)*(1.0 - c2);\n}\nvec3 detailMode_overlay(vec3 c1, vec3 c2) {\n\treturn mix(1.0 - 2.0*(1.0 - c1)*(1.0 - c2), 2.0*c1*c2, step(c1, vec3(0.5)));\n}\nvec3 detailMode_min(vec3 c1, vec3 c2) {\n\treturn min(c1, c2);\n}\nvec3 detailMode_max(vec3 c1, vec3 c2) {\n\treturn max(c1, c2);\n}\n`;\n\nexport { detailModesPS as default };\n", "var diffusePS = `\n#ifdef MAPCOLOR\nuniform vec3 material_diffuse;\n#endif\nvoid getAlbedo() {\n\tdAlbedo = vec3(1.0);\n#ifdef MAPCOLOR\n\tdAlbedo *= material_diffuse.rgb;\n#endif\n#ifdef MAPTEXTURE\n\tvec3 albedoBase = $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH;\n\tdAlbedo *= addAlbedoDetail(albedoBase);\n#endif\n#ifdef MAPVERTEX\n\tdAlbedo *= gammaCorrectInput(saturate(vVertexColor.$VC));\n#endif\n}\n`;\n\nexport { diffusePS as default };\n", "var diffuseDetailMapPS = `\nvec3 addAlbedoDetail(vec3 albedo) {\n#ifdef MAPTEXTURE\n\tvec3 albedoDetail = $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH;\n\treturn detailMode_$DETAILMODE(albedo, albedoDetail);\n#else\n\treturn albedo;\n#endif\n}\n`;\n\nexport { diffuseDetailMapPS as default };\n", "var emissivePS = `\n#ifdef MAPCOLOR\nuniform vec3 material_emissive;\n#endif\n#ifdef MAPFLOAT\nuniform float material_emissiveIntensity;\n#endif\nvoid getEmission() {\n\tdEmission = vec3(1.0);\n\t#ifdef MAPFLOAT\n\tdEmission *= material_emissiveIntensity;\n\t#endif\n\t#ifdef MAPCOLOR\n\tdEmission *= material_emissive;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tdEmission *= $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tdEmission *= gammaCorrectInput(saturate(vVertexColor.$VC));\n\t#endif\n}\n`;\n\nexport { emissivePS as default };\n", "var encodePS = `\nvec4 encodeLinear(vec3 source) {\n\treturn vec4(source, 1.0);\n}\nvec4 encodeGamma(vec3 source) {\n\treturn vec4(pow(source + 0.0000001, vec3(1.0 / 2.2)), 1.0);\n}\nvec4 encodeRGBM(vec3 source) {\n\tvec4 result;\n\tresult.rgb = pow(source.rgb, vec3(0.5));\n\tresult.rgb *= 1.0 / 8.0;\n\tresult.a = saturate( max( max( result.r, result.g ), max( result.b, 1.0 / 255.0 ) ) );\n\tresult.a = ceil(result.a * 255.0) / 255.0;\n\tresult.rgb /= result.a;\n\treturn result;\n}\nvec4 encodeRGBP(vec3 source) {\n\tvec3 gamma = pow(source, vec3(0.5));\n\tfloat maxVal = min(8.0, max(1.0, max(gamma.x, max(gamma.y, gamma.z))));\n\tfloat v = 1.0 - ((maxVal - 1.0) / 7.0);\n\tv = ceil(v * 255.0) / 255.0;\n\treturn vec4(gamma / (-v * 7.0 + 8.0), v);\t\n}\nvec4 encodeRGBE(vec3 source) {\n\tfloat maxVal = max(source.x, max(source.y, source.z));\n\tif (maxVal < 1e-32) {\n\t\treturn vec4(0, 0, 0, 0);\n\t} else {\n\t\tfloat e = ceil(log2(maxVal));\n\t\treturn vec4(source / pow(2.0, e), (e + 128.0) / 255.0);\n\t}\n}\n`;\n\nexport { encodePS as default };\n", "var endPS = `\n\tgl_FragColor.rgb = combineColor(litArgs_albedo, litArgs_sheen_specularity, litArgs_clearcoat_specularity);\n\tgl_FragColor.rgb += litArgs_emission;\n\tgl_FragColor.rgb = addFog(gl_FragColor.rgb);\n\t#ifndef HDR\n\tgl_FragColor.rgb = toneMap(gl_FragColor.rgb);\n\tgl_FragColor.rgb = gammaCorrectOutput(gl_FragColor.rgb);\n\t#endif\n`;\n\nexport { endPS as default };\n", "var endVS = `\n`;\n\nexport { endVS as default };\n", "var envAtlasPS = `\nconst float atlasSize = 512.0;\nconst float seamSize = 1.0 / atlasSize;\nvec2 mapUv(vec2 uv, vec4 rect) {\n\treturn vec2(mix(rect.x + seamSize, rect.x + rect.z - seamSize, uv.x),\n\t\t\t\tmix(rect.y + seamSize, rect.y + rect.w - seamSize, uv.y));\n}\nvec2 mapRoughnessUv(vec2 uv, float level) {\n\tfloat t = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4(0, 1.0 - t, t, t * 0.5));\n}\nvec2 mapShinyUv(vec2 uv, float level) {\n\tfloat t = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4(1.0 - t, 1.0 - t, t, t * 0.5));\n}\n`;\n\nexport { envAtlasPS as default };\n", "var envConstPS = `\nvec3 processEnvironment(vec3 color) {\n\treturn color;\n}\n`;\n\nexport { envConstPS as default };\n", "var envMultiplyPS = `\nuniform float skyboxIntensity;\nvec3 processEnvironment(vec3 color) {\n\treturn color * skyboxIntensity;\n}\n`;\n\nexport { envMultiplyPS as default };\n", "var extensionPS = `\n`;\n\nexport { extensionPS as default };\n", "var extensionVS = `\n`;\n\nexport { extensionVS as default };\n", "var falloffInvSquaredPS = `\nfloat getFalloffWindow(float lightRadius, vec3 lightDir) {\n\tfloat sqrDist = dot(lightDir, lightDir);\n\tfloat invRadius = 1.0 / lightRadius;\n\treturn square( saturate( 1.0 - square( sqrDist * square(invRadius) ) ) );\n}\nfloat getFalloffInvSquared(float lightRadius, vec3 lightDir) {\n\tfloat sqrDist = dot(lightDir, lightDir);\n\tfloat falloff = 1.0 / (sqrDist + 1.0);\n\tfloat invRadius = 1.0 / lightRadius;\n\tfalloff *= 16.0;\n\tfalloff *= square( saturate( 1.0 - square( sqrDist * square(invRadius) ) ) );\n\treturn falloff;\n}\n`;\n\nexport { falloffInvSquaredPS as default };\n", "var falloffLinearPS = `\nfloat getFalloffLinear(float lightRadius, vec3 lightDir) {\n\tfloat d = length(lightDir);\n\treturn max(((lightRadius - d) / lightRadius), 0.0);\n}\n`;\n\nexport { falloffLinearPS as default };\n", "var fixCubemapSeamsNonePS = `\nvec3 fixSeams(vec3 vec, float mipmapIndex) {\n\treturn vec;\n}\nvec3 fixSeams(vec3 vec) {\n\treturn vec;\n}\nvec3 fixSeamsStatic(vec3 vec, float invRecMipSize) {\n\treturn vec;\n}\nvec3 calcSeam(vec3 vec) {\n\treturn vec3(0);\n}\nvec3 applySeam(vec3 vec, vec3 seam, float scale) {\n\treturn vec;\n}\n`;\n\nexport { fixCubemapSeamsNonePS as default };\n", "var fixCubemapSeamsStretchPS = `\nvec3 fixSeams(vec3 vec, float mipmapIndex) {\n\tvec3 avec = abs(vec);\n\tfloat scale = 1.0 - exp2(mipmapIndex) / 128.0;\n\tfloat M = max(max(avec.x, avec.y), avec.z);\n\tif (avec.x != M) vec.x *= scale;\n\tif (avec.y != M) vec.y *= scale;\n\tif (avec.z != M) vec.z *= scale;\n\treturn vec;\n}\nvec3 fixSeams(vec3 vec) {\n\tvec3 avec = abs(vec);\n\tfloat scale = 1.0 - 1.0 / 128.0;\n\tfloat M = max(max(avec.x, avec.y), avec.z);\n\tif (avec.x != M) vec.x *= scale;\n\tif (avec.y != M) vec.y *= scale;\n\tif (avec.z != M) vec.z *= scale;\n\treturn vec;\n}\nvec3 fixSeamsStatic(vec3 vec, float invRecMipSize) {\n\tvec3 avec = abs(vec);\n\tfloat scale = invRecMipSize;\n\tfloat M = max(max(avec.x, avec.y), avec.z);\n\tif (avec.x != M) vec.x *= scale;\n\tif (avec.y != M) vec.y *= scale;\n\tif (avec.z != M) vec.z *= scale;\n\treturn vec;\n}\nvec3 calcSeam(vec3 vec) {\n\tvec3 avec = abs(vec);\n\tfloat M = max(avec.x, max(avec.y, avec.z));\n\treturn vec3(avec.x != M ? 1.0 : 0.0,\n\t\t\t\tavec.y != M ? 1.0 : 0.0,\n\t\t\t\tavec.z != M ? 1.0 : 0.0);\n}\nvec3 applySeam(vec3 vec, vec3 seam, float scale) {\n\treturn vec * (seam * -scale + vec3(1.0));\n}\n`;\n\nexport { fixCubemapSeamsStretchPS as default };\n", "var floatUnpackingPS = `\nfloat bytes2float2(vec2 data) {\n\treturn dot(data, vec2(1.0, 1.0 / 255.0));\n}\nfloat bytes2float3(vec3 data) {\n\treturn dot(data, vec3(1.0, 1.0 / 255.0, 1.0 / 65025.0));\n}\nfloat bytes2float4(vec4 data) {\n\treturn dot(data, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0));\n}\nfloat bytes2floatRange2(vec2 data, float min, float max) {\n\treturn mix(min, max, bytes2float2(data));\n}\nfloat bytes2floatRange3(vec3 data, float min, float max) {\n\treturn mix(min, max, bytes2float3(data));\n}\nfloat bytes2floatRange4(vec4 data, float min, float max) {\n\treturn mix(min, max, bytes2float4(data));\n}\nfloat mantissaExponent2Float(vec4 pack)\n{\n\tfloat value = bytes2floatRange3(pack.xyz, -1.0, 1.0);\n\tfloat exponent = floor(pack.w * 255.0 - 127.0);\n\treturn value * exp2(exponent);\n}\n`;\n\nexport { floatUnpackingPS as default };\n", "var fogExpPS = `\nuniform vec3 fog_color;\nuniform float fog_density;\nfloat dBlendModeFogFactor = 1.0;\nvec3 addFog(vec3 color) {\n\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\tfloat fogFactor = exp(-depth * fog_density);\n\tfogFactor = clamp(fogFactor, 0.0, 1.0);\n\treturn mix(fog_color * dBlendModeFogFactor, color, fogFactor);\n}\n`;\n\nexport { fogExpPS as default };\n", "var fogExp2PS = `\nuniform vec3 fog_color;\nuniform float fog_density;\nfloat dBlendModeFogFactor = 1.0;\nvec3 addFog(vec3 color) {\n\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\tfloat fogFactor = exp(-depth * depth * fog_density * fog_density);\n\tfogFactor = clamp(fogFactor, 0.0, 1.0);\n\treturn mix(fog_color * dBlendModeFogFactor, color, fogFactor);\n}\n`;\n\nexport { fogExp2PS as default };\n", "var fogLinearPS = `\nuniform vec3 fog_color;\nuniform float fog_start;\nuniform float fog_end;\nfloat dBlendModeFogFactor = 1.0;\nvec3 addFog(vec3 color) {\n\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\tfloat fogFactor = (fog_end - depth) / (fog_end - fog_start);\n\tfogFactor = clamp(fogFactor, 0.0, 1.0);\n\treturn mix(fog_color * dBlendModeFogFactor, color, fogFactor);\n}\n`;\n\nexport { fogLinearPS as default };\n", "var fogNonePS = `\nfloat dBlendModeFogFactor = 1.0;\nvec3 addFog(vec3 color) {\n\treturn color;\n}\n`;\n\nexport { fogNonePS as default };\n", "var fresnelSchlickPS = `\nvec3 getFresnel(\n\t\tfloat cosTheta, \n\t\tfloat gloss, \n\t\tvec3 specularity\n#if defined(LIT_IRIDESCENCE)\n\t\t, vec3 iridescenceFresnel, \n\t\tfloat iridescenceIntensity\n#endif\n\t) {\n\tfloat fresnel = pow(1.0 - max(cosTheta, 0.0), 5.0);\n\tfloat glossSq = gloss * gloss;\n\tvec3 ret = specularity + (max(vec3(glossSq), specularity) - specularity) * fresnel;\n#if defined(LIT_IRIDESCENCE)\n\treturn mix(ret, iridescenceFresnel, iridescenceIntensity);\n#else\n\treturn ret;\n#endif\t\n}\nfloat getFresnelCC(float cosTheta) {\n\tfloat fresnel = pow(1.0 - max(cosTheta, 0.0), 5.0);\n\treturn 0.04 + (1.0 - 0.04) * fresnel;\n}\n`;\n\nexport { fresnelSchlickPS as default };\n", "var fullscreenQuadPS = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nvoid main(void) {\n\tgl_FragColor = texture2D(source, vUv0);\n}\n`;\n\nexport { fullscreenQuadPS as default };\n", "var fullscreenQuadVS = `\nattribute vec2 vertex_position;\nvarying vec2 vUv0;\nvoid main(void)\n{\n\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\tvUv0 = vertex_position.xy*0.5+0.5;\n}\n`;\n\nexport { fullscreenQuadVS as default };\n", "var gamma1_0PS = `\nfloat gammaCorrectInput(float color) {\n\treturn color;\n}\nvec3 gammaCorrectInput(vec3 color) {\n\treturn color;\n}\nvec4 gammaCorrectInput(vec4 color) {\n\treturn color;\n}\nvec3 gammaCorrectOutput(vec3 color) {\n\treturn color;\n}\n`;\n\nexport { gamma1_0PS as default };\n", "var gamma2_2PS = `\nfloat gammaCorrectInput(float color) {\n\treturn decodeGamma(color);\n}\nvec3 gammaCorrectInput(vec3 color) {\n\treturn decodeGamma(color);\n}\nvec4 gammaCorrectInput(vec4 color) {\n\treturn vec4(decodeGamma(color.xyz), color.w);\n}\nvec3 gammaCorrectOutput(vec3 color) {\n#ifdef HDR\n\treturn color;\n#else\n\treturn pow(color + 0.0000001, vec3(1.0 / 2.2));\n#endif\n}\n`;\n\nexport { gamma2_2PS as default };\n", "var glossPS = `\n#ifdef MAPFLOAT\nuniform float material_gloss;\n#endif\nvoid getGlossiness() {\n\tdGlossiness = 1.0;\n\t#ifdef MAPFLOAT\n\tdGlossiness *= material_gloss;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tdGlossiness *= texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tdGlossiness *= saturate(vVertexColor.$VC);\n\t#endif\n\t#ifdef MAPINVERT\n\tdGlossiness = 1.0 - dGlossiness;\n\t#endif\n\tdGlossiness += 0.0000001;\n}\n`;\n\nexport { glossPS as default };\n", "var iridescenceDiffractionPS = `\nuniform float material_iridescenceRefractionIndex;\n#ifndef PI\n#define PI 3.14159265\n#endif\nfloat iridescence_iorToFresnel(float transmittedIor, float incidentIor) {\n\treturn pow((transmittedIor - incidentIor) / (transmittedIor + incidentIor), 2.0);\n}\nvec3 iridescence_iorToFresnel(vec3 transmittedIor, float incidentIor) {\n\treturn pow((transmittedIor - vec3(incidentIor)) / (transmittedIor + vec3(incidentIor)), vec3(2.0));\n}\nvec3 iridescence_fresnelToIor(vec3 f0) {\n\tvec3 sqrtF0 = sqrt(f0);\n\treturn (vec3(1.0) + sqrtF0) / (vec3(1.0) - sqrtF0);\n}\nvec3 iridescence_sensitivity(float opd, vec3 shift) {\n\tfloat phase = 2.0 * PI * opd * 1.0e-9;\n\tconst vec3 val = vec3(5.4856e-13, 4.4201e-13, 5.2481e-13);\n\tconst vec3 pos = vec3(1.6810e+06, 1.7953e+06, 2.2084e+06);\n\tconst vec3 var = vec3(4.3278e+09, 9.3046e+09, 6.6121e+09);\n\tvec3 xyz = val * sqrt(2.0 * PI * var) * cos(pos * phase + shift) * exp(-pow(phase, 2.0) * var);\n\txyz.x += 9.7470e-14 * sqrt(2.0 * PI * 4.5282e+09) * cos(2.2399e+06 * phase + shift[0]) * exp(-4.5282e+09 * pow(phase, 2.0));\n\txyz /= vec3(1.0685e-07);\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t3.2404542, -0.9692660, 0.0556434,\n\t -1.5371385, 1.8760108, -0.2040259,\n\t -0.4985314, 0.0415560, 1.0572252\n\t);\n\treturn XYZ_TO_REC709 * xyz;\n}\nfloat iridescence_fresnel(float cosTheta, float f0) {\n\tfloat x = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tfloat x2 = x * x;\n\tfloat x5 = x * x2 * x2;\n\treturn f0 + (1.0 - f0) * x5;\n} \nvec3 iridescence_fresnel(float cosTheta, vec3 f0) {\n\tfloat x = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tfloat x2 = x * x;\n\tfloat x5 = x * x2 * x2; \n\treturn f0 + (vec3(1.0) - f0) * x5;\n}\nvec3 calcIridescence(float outsideIor, float cosTheta, vec3 base_f0, float iridescenceThickness) {\n\tfloat iridescenceIor = mix(outsideIor, material_iridescenceRefractionIndex, smoothstep(0.0, 0.03, iridescenceThickness));\n\tfloat sinTheta2Sq = pow(outsideIor / iridescenceIor, 2.0) * (1.0 - pow(cosTheta, 2.0));\n\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\tif (cosTheta2Sq < 0.0) {\n\t\treturn vec3(1.0);\n\t}\n\tfloat cosTheta2 = sqrt(cosTheta2Sq);\n\tfloat r0 = iridescence_iorToFresnel(iridescenceIor, outsideIor);\n\tfloat r12 = iridescence_fresnel(cosTheta, r0);\n\tfloat r21 = r12;\n\tfloat t121 = 1.0 - r12;\n\tfloat phi12 = iridescenceIor < outsideIor ? PI : 0.0;\n\tfloat phi21 = PI - phi12;\n\tvec3 baseIor = iridescence_fresnelToIor(base_f0 + vec3(0.0001));\n\tvec3 r1 = iridescence_iorToFresnel(baseIor, iridescenceIor);\n\tvec3 r23 = iridescence_fresnel(cosTheta2, r1);\n\tvec3 phi23 = vec3(0.0);\n\tif (baseIor[0] < iridescenceIor) phi23[0] = PI;\n\tif (baseIor[1] < iridescenceIor) phi23[1] = PI;\n\tif (baseIor[2] < iridescenceIor) phi23[2] = PI;\n\tfloat opd = 2.0 * iridescenceIor * iridescenceThickness * cosTheta2;\n\tvec3 phi = vec3(phi21) + phi23; \n\tvec3 r123Sq = clamp(r12 * r23, 1e-5, 0.9999);\n\tvec3 r123 = sqrt(r123Sq);\n\tvec3 rs = pow(t121, 2.0) * r23 / (1.0 - r123Sq);\n\tvec3 c0 = r12 + rs;\n\tvec3 i = c0;\n\tvec3 cm = rs - t121;\n\tfor (int m = 1; m <= 2; m++) {\n\t\tcm *= r123;\n\t\tvec3 sm = 2.0 * iridescence_sensitivity(float(m) * opd, float(m) * phi);\n\t\ti += cm * sm;\n\t}\n\treturn max(i, vec3(0.0));\n}\nvec3 getIridescence(float cosTheta, vec3 specularity, float iridescenceThickness) {\n\treturn calcIridescence(1.0, cosTheta, specularity, iridescenceThickness);\n}\n`;\n\nexport { iridescenceDiffractionPS as default };\n", "var iridescencePS = `\n#ifdef MAPFLOAT\nuniform float material_iridescence;\n#endif\nvoid getIridescence() {\n\tfloat iridescence = 1.0;\n\t#ifdef MAPFLOAT\n\tiridescence *= material_iridescence;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tiridescence *= texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\t#endif\n\tdIridescence = iridescence; \n}\n`;\n\nexport { iridescencePS as default };\n", "var iridescenceThicknessPS = `\nuniform float material_iridescenceThicknessMax;\n#ifdef MAPTEXTURE\nuniform float material_iridescenceThicknessMin;\n#endif\nvoid getIridescenceThickness() {\n\t#ifdef MAPTEXTURE\n\tfloat blend = texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\tfloat iridescenceThickness = mix(material_iridescenceThicknessMin, material_iridescenceThicknessMax, blend);\n\t#else\n\tfloat iridescenceThickness = material_iridescenceThicknessMax;\n\t#endif\n\tdIridescenceThickness = iridescenceThickness; \n}\n`;\n\nexport { iridescenceThicknessPS as default };\n", "var instancingVS = `\nattribute vec4 instance_line1;\nattribute vec4 instance_line2;\nattribute vec4 instance_line3;\nattribute vec4 instance_line4;\n`;\n\nexport { instancingVS as default };\n", "var iorPS = `\n#ifdef MAPFLOAT\nuniform float material_refractionIndex;\n#endif\nvoid getIor() {\n#ifdef MAPFLOAT\n\tdIor = material_refractionIndex;\n#else\n\tdIor = 1.0 / 1.5;\n#endif\n}\n`;\n\nexport { iorPS as default };\n", "var lightDiffuseLambertPS = `\nfloat getLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\treturn max(dot(worldNormal, -lightDirNorm), 0.0);\n}\n`;\n\nexport { lightDiffuseLambertPS as default };\n", "var lightDirPointPS = `\nvoid getLightDirPoint(vec3 lightPosW) {\n\tdLightDirW = vPositionW - lightPosW;\n\tdLightDirNormW = normalize(dLightDirW);\n\tdLightPosW = lightPosW;\n}\n`;\n\nexport { lightDirPointPS as default };\n", "var lightmapAddPS = `\nvoid addLightMap(\n\tvec3 lightmap, \n\tvec3 dir, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 vertexNormal, \n\tmat3 tbn\n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel, \n\tfloat iridescenceIntensity\n#endif\n) {\n\tdDiffuseLight += lightmap;\n}\n`;\n\nexport { lightmapAddPS as default };\n", "var lightmapDirAddPS = `\nvoid addLightMap(\n\tvec3 lightmap, \n\tvec3 dir, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 vertexNormal, \n\tmat3 tbn\n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel, \n\tfloat iridescenceIntensity\n#endif\n) {\n\tif (dot(dir, dir) < 0.0001) {\n\t\tdDiffuseLight += lightmap;\n\t} else {\n\t\tfloat vlight = saturate(dot(dir, -vertexNormal));\n\t\tfloat flight = saturate(dot(dir, -worldNormal));\n\t\tfloat nlight = (flight / max(vlight, 0.01)) * 0.5;\n\t\tdDiffuseLight += lightmap * nlight * 2.0;\n\t\tvec3 halfDir = normalize(-dir + viewDir);\n\t\tvec3 specularLight = lightmap * getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dir, gloss, tbn);\n#ifdef LIT_SPECULAR_FRESNEL\n\t\tspecularLight *= \n\t\t\tgetFresnel(dot(viewDir, halfDir), \n\t\t\tgloss, \n\t\t\tspecularity\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tiridescenceIntensity\n\t\t#endif\n\t\t\t);\n#endif\n\t\tdSpecularLight += specularLight;\n\t}\n}\n`;\n\nexport { lightmapDirAddPS as default };\n", "var lightmapDirPS = `\nuniform sampler2D texture_lightMap;\nuniform sampler2D texture_dirLightMap;\nvoid getLightMap() {\n\tdLightmap = $DECODE(texture2DBias(texture_lightMap, $UV, textureBias)).$CH;\n\tvec3 dir = texture2DBias(texture_dirLightMap, $UV, textureBias).xyz * 2.0 - 1.0;\n\tfloat dirDot = dot(dir, dir);\n\tdLightmapDir = (dirDot > 0.001) ? dir / sqrt(dirDot) : vec3(0.0);\n}\n`;\n\nexport { lightmapDirPS as default };\n", "var lightmapSinglePS = `\nvoid getLightMap() {\n\tdLightmap = vec3(1.0);\n\t#ifdef MAPTEXTURE\n\tdLightmap *= $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tdLightmap *= saturate(vVertexColor.$VC);\n\t#endif\n}\n`;\n\nexport { lightmapSinglePS as default };\n", "var lightSpecularAnisoGGXPS = `\nfloat calcLightSpecular(float gloss, vec3 worldNormal, vec3 viewDir, vec3 h, vec3 lightDirNorm, mat3 tbn) {\n\tfloat PI = 3.141592653589793;\n\tfloat roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\tfloat anisotropy = material_anisotropy * roughness;\n \n\tfloat at = max((roughness + anisotropy), roughness / 4.0);\n\tfloat ab = max((roughness - anisotropy), roughness / 4.0);\n\tfloat NoH = dot(worldNormal, h);\n\tfloat ToH = dot(tbn[0], h);\n\tfloat BoH = dot(tbn[1], h);\n\tfloat a2 = at * ab;\n\tvec3 v = vec3(ab * ToH, at * BoH, a2 * NoH);\n\tfloat v2 = dot(v, v);\n\tfloat w2 = a2 / v2;\n\tfloat D = a2 * w2 * w2 * (1.0 / PI);\n\tfloat ToV = dot(tbn[0], viewDir);\n\tfloat BoV = dot(tbn[1], viewDir);\n\tfloat ToL = dot(tbn[0], -lightDirNorm);\n\tfloat BoL = dot(tbn[1], -lightDirNorm);\n\tfloat NoV = dot(worldNormal, viewDir);\n\tfloat NoL = dot(worldNormal, -lightDirNorm);\n\tfloat lambdaV = NoL * length(vec3(at * ToV, ab * BoV, NoV));\n\tfloat lambdaL = NoV * length(vec3(at * ToL, ab * BoL, NoL));\n\tfloat G = 0.5 / (lambdaV + lambdaL);\n\treturn D * G;\n}\nfloat getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) {\n\treturn calcLightSpecular(gloss, worldNormal, viewDir, h, lightDirNorm, tbn);\n}\n`;\n\nexport { lightSpecularAnisoGGXPS as default };\n", "var lightSpecularBlinnPS = `\nfloat calcLightSpecular(float gloss, vec3 worldNormal, vec3 h) {\n\tfloat nh = max( dot( h, worldNormal ), 0.0 );\n\tfloat specPow = exp2(gloss * 11.0);\n\tspecPow = max(specPow, 0.0001);\n\treturn pow(nh, specPow) * (specPow + 2.0) / 8.0;\n}\nfloat getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) {\n\treturn calcLightSpecular(gloss, worldNormal, h);\n}\n`;\n\nexport { lightSpecularBlinnPS as default };\n", "var lightSpecularPhongPS = `\nfloat calcLightSpecular(float gloss, vec3 reflDir, vec3 lightDirNorm) {\n\tfloat specPow = gloss;\n\treturn pow(max(dot(reflDir, -lightDirNorm), 0.0), specPow + 0.0001);\n}\nfloat getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) {\n\treturn calcLightSpecular(gloss, reflDir, lightDirNorm);\n}\n`;\n\nexport { lightSpecularPhongPS as default };\n", "var lightSheenPS = `\nfloat sheenD(vec3 normal, vec3 h, float roughness) {\n\tfloat invR = 1.0 / (roughness * roughness);\n\tfloat cos2h = max(dot(normal, h), 0.0);\n\tcos2h *= cos2h;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\n\treturn (2.0 + invR) * pow(sin2h, invR * 0.5) / (2.0 * PI);\n}\nfloat sheenV(vec3 normal, vec3 viewDir, vec3 light) {\n\tfloat NoV = max(dot(normal, viewDir), 0.000001);\n\tfloat NoL = max(dot(normal, light), 0.000001);\n\treturn 1.0 / (4.0 * (NoL + NoV - NoL * NoV));\n}\nfloat getLightSpecularSheen(vec3 h, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float sheenGloss) {\n\tfloat D = sheenD(worldNormal, h, sheenGloss);\n\tfloat V = sheenV(worldNormal, viewDir, -lightDirNorm);\n\treturn D * V;\n}\n`;\n\nexport { lightSheenPS as default };\n", "var linearizeDepthPS = `\n#ifndef LINEARIZE_DEPTH\n#define LINEARIZE_DEPTH\nfloat linearizeDepth(float z, vec4 cameraParams) {\n\tif (cameraParams.w == 0.0)\n\t\treturn (cameraParams.z * cameraParams.y) / (cameraParams.y + z * (cameraParams.z - cameraParams.y));\n\telse\n\t\treturn cameraParams.z + z * (cameraParams.y - cameraParams.z);\n}\n#ifndef CAMERAPLANES\n#define CAMERAPLANES\nuniform vec4 camera_params;\n#endif\n#ifdef GL2\nfloat linearizeDepth(float z) {\n\treturn linearizeDepth(z, camera_params);\n}\n#else\n#ifndef UNPACKFLOAT\n#define UNPACKFLOAT\nfloat unpackFloat(vec4 rgbaDepth) {\n\tconst vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n\treturn dot(rgbaDepth, bitShift);\n}\n#endif\n#endif\n#endif\n`;\n\nexport { linearizeDepthPS as default };\n", "var litShaderArgsPS = `\nvec3 litArgs_albedo;\nfloat litArgs_opacity;\nvec3 litArgs_emission;\nvec3 litArgs_worldNormal;\nfloat litArgs_ao;\nvec3 litArgs_lightmap;\nvec3 litArgs_lightmapDir;\nfloat litArgs_metalness;\nvec3 litArgs_specularity;\nfloat litArgs_specularityFactor;\nfloat litArgs_gloss;\nfloat litArgs_sheen_gloss;\nvec3 litArgs_sheen_specularity;\nfloat litArgs_transmission;\nfloat litArgs_thickness;\nfloat litArgs_ior;\nfloat litArgs_dispersion;\nfloat litArgs_iridescence_intensity;\nfloat litArgs_iridescence_thickness;\nvec3 litArgs_clearcoat_worldNormal;\nfloat litArgs_clearcoat_specularity;\nfloat litArgs_clearcoat_gloss;\n`;\n\nexport { litShaderArgsPS as default };\n", "var ltcPS = `\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nstruct Coords {\n\tvec3 coord0;\n\tvec3 coord1;\n\tvec3 coord2;\n\tvec3 coord3;\n};\nfloat LTC_EvaluateRect( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in Coords rectCoords) {\n\tvec3 v1 = rectCoords.coord1 - rectCoords.coord0;\n\tvec3 v2 = rectCoords.coord3 - rectCoords.coord0;\n\t\n\tvec3 lightNormal = cross( v1, v2 );\n\tfloat factor = sign(-dot( lightNormal, P - rectCoords.coord0 ));\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = factor * cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords.coord0 - P );\n\tcoords[ 1 ] = mat * ( rectCoords.coord1 - P );\n\tcoords[ 2 ] = mat * ( rectCoords.coord2 - P );\n\tcoords[ 3 ] = mat * ( rectCoords.coord3 - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn result;\n}\nCoords dLTCCoords;\nCoords getLTCLightCoords(vec3 lightPos, vec3 halfWidth, vec3 halfHeight){\n\tCoords coords;\n\tcoords.coord0 = lightPos + halfWidth - halfHeight;\n\tcoords.coord1 = lightPos - halfWidth - halfHeight;\n\tcoords.coord2 = lightPos - halfWidth + halfHeight;\n\tcoords.coord3 = lightPos + halfWidth + halfHeight;\n\treturn coords;\n}\nfloat dSphereRadius;\nCoords getSphereLightCoords(vec3 lightPos, vec3 halfWidth, vec3 halfHeight){\n\tdSphereRadius = max(length(halfWidth), length(halfHeight));\n\tvec3 f = reflect(normalize(lightPos - view_position), vNormalW);\n\tvec3 w = normalize(cross(f, halfHeight));\n\tvec3 h = normalize(cross(f, w));\n\treturn getLTCLightCoords(lightPos, w * dSphereRadius, h * dSphereRadius);\n}\nvec2 dLTCUV;\n#ifdef LIT_CLEARCOAT\nvec2 ccLTCUV;\n#endif\nvec2 getLTCLightUV(float gloss, vec3 worldNormal, vec3 viewDir)\n{\n\tfloat roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\treturn LTC_Uv( worldNormal, viewDir, roughness );\n}\nvec3 dLTCSpecFres;\n#ifdef LIT_CLEARCOAT\nvec3 ccLTCSpecFres;\n#endif\nvec3 getLTCLightSpecFres(vec2 uv, vec3 specularity)\n{\n\tvec4 t2 = texture2DLodEXT(areaLightsLutTex2, uv, 0.0);\n\t#ifdef AREA_R8_G8_B8_A8_LUTS\n\tt2 *= vec4(0.693103,1,1,1);\n\tt2 += vec4(0.306897,0,0,0);\n\t#endif\n\treturn specularity * t2.x + ( vec3( 1.0 ) - specularity) * t2.y;\n}\nvoid calcLTCLightValues(float gloss, vec3 worldNormal, vec3 viewDir, vec3 specularity, float clearcoatGloss, vec3 clearcoatWorldNormal, float clearcoatSpecularity)\n{\n\tdLTCUV = getLTCLightUV(gloss, worldNormal, viewDir);\n\tdLTCSpecFres = getLTCLightSpecFres(dLTCUV, specularity); \n#ifdef LIT_CLEARCOAT\n\tccLTCUV = getLTCLightUV(clearcoatGloss, clearcoatWorldNormal, viewDir);\n\tccLTCSpecFres = getLTCLightSpecFres(ccLTCUV, vec3(clearcoatSpecularity));\n#endif\n}\nvoid calcRectLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight)\n{\n\tdLTCCoords = getLTCLightCoords(lightPos, halfWidth, halfHeight);\n}\nvoid calcDiskLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight)\n{\n\tcalcRectLightValues(lightPos, halfWidth, halfHeight);\n}\nvoid calcSphereLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight)\n{\n\tdLTCCoords = getSphereLightCoords(lightPos, halfWidth, halfHeight);\n}\nvec3 SolveCubic(vec4 Coefficient)\n{\n\tfloat pi = 3.14159;\n\tCoefficient.xyz /= Coefficient.w;\n\tCoefficient.yz /= 3.0;\n\tfloat A = Coefficient.w;\n\tfloat B = Coefficient.z;\n\tfloat C = Coefficient.y;\n\tfloat D = Coefficient.x;\n\tvec3 Delta = vec3(\n\t\t-Coefficient.z * Coefficient.z + Coefficient.y,\n\t\t-Coefficient.y * Coefficient.z + Coefficient.x,\n\t\tdot(vec2(Coefficient.z, -Coefficient.y), Coefficient.xy)\n\t);\n\tfloat Discriminant = dot(vec2(4.0 * Delta.x, -Delta.y), Delta.zy);\n\tvec3 RootsA, RootsD;\n\tvec2 xlc, xsc;\n\t{\n\t\tfloat A_a = 1.0;\n\t\tfloat C_a = Delta.x;\n\t\tfloat D_a = -2.0 * B * Delta.x + Delta.y;\n\t\tfloat Theta = atan(sqrt(Discriminant), -D_a) / 3.0;\n\t\tfloat x_1a = 2.0 * sqrt(-C_a) * cos(Theta);\n\t\tfloat x_3a = 2.0 * sqrt(-C_a) * cos(Theta + (2.0 / 3.0) * pi);\n\t\tfloat xl;\n\t\tif ((x_1a + x_3a) > 2.0 * B)\n\t\t\txl = x_1a;\n\t\telse\n\t\t\txl = x_3a;\n\t\txlc = vec2(xl - B, A);\n\t}\n\t{\n\t\tfloat A_d = D;\n\t\tfloat C_d = Delta.z;\n\t\tfloat D_d = -D * Delta.y + 2.0 * C * Delta.z;\n\t\tfloat Theta = atan(D * sqrt(Discriminant), -D_d) / 3.0;\n\t\tfloat x_1d = 2.0 * sqrt(-C_d) * cos(Theta);\n\t\tfloat x_3d = 2.0 * sqrt(-C_d) * cos(Theta + (2.0 / 3.0) * pi);\n\t\tfloat xs;\n\t\tif (x_1d + x_3d < 2.0 * C)\n\t\t\txs = x_1d;\n\t\telse\n\t\t\txs = x_3d;\n\t\txsc = vec2(-D, xs + C);\n\t}\n\tfloat E = xlc.y * xsc.y;\n\tfloat F = -xlc.x * xsc.y - xlc.y * xsc.x;\n\tfloat G = xlc.x * xsc.x;\n\tvec2 xmc = vec2(C * F - B * G, -B * F + C * E);\n\tvec3 Root = vec3(xsc.x / xsc.y, xmc.x / xmc.y, xlc.x / xlc.y);\n\tif (Root.x < Root.y && Root.x < Root.z)\n\t\tRoot.xyz = Root.yxz;\n\telse if (Root.z < Root.x && Root.z < Root.y)\n\t\tRoot.xyz = Root.xzy;\n\treturn Root;\n}\nfloat LTC_EvaluateDisk(vec3 N, vec3 V, vec3 P, mat3 Minv, Coords points)\n{\n\tvec3 T1, T2;\n\tT1 = normalize(V - N * dot(V, N));\n\tT2 = cross(N, T1);\n\tmat3 R = transposeMat3( mat3( T1, T2, N ) );\n\tvec3 L_[ 3 ];\n\tL_[ 0 ] = R * ( points.coord0 - P );\n\tL_[ 1 ] = R * ( points.coord1 - P );\n\tL_[ 2 ] = R * ( points.coord2 - P );\n\tvec3 Lo_i = vec3(0);\n\tvec3 C = 0.5 * (L_[0] + L_[2]);\n\tvec3 V1 = 0.5 * (L_[1] - L_[2]);\n\tvec3 V2 = 0.5 * (L_[1] - L_[0]);\n\tC = Minv * C;\n\tV1 = Minv * V1;\n\tV2 = Minv * V2;\n\tfloat a, b;\n\tfloat d11 = dot(V1, V1);\n\tfloat d22 = dot(V2, V2);\n\tfloat d12 = dot(V1, V2);\n\tif (abs(d12) / sqrt(d11 * d22) > 0.0001)\n\t{\n\t\tfloat tr = d11 + d22;\n\t\tfloat det = -d12 * d12 + d11 * d22;\n\t\tdet = sqrt(det);\n\t\tfloat u = 0.5 * sqrt(tr - 2.0 * det);\n\t\tfloat v = 0.5 * sqrt(tr + 2.0 * det);\n\t\tfloat e_max = (u + v) * (u + v);\n\t\tfloat e_min = (u - v) * (u - v);\n\t\tvec3 V1_, V2_;\n\t\tif (d11 > d22)\n\t\t{\n\t\t\tV1_ = d12 * V1 + (e_max - d11) * V2;\n\t\t\tV2_ = d12 * V1 + (e_min - d11) * V2;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tV1_ = d12*V2 + (e_max - d22)*V1;\n\t\t\tV2_ = d12*V2 + (e_min - d22)*V1;\n\t\t}\n\t\ta = 1.0 / e_max;\n\t\tb = 1.0 / e_min;\n\t\tV1 = normalize(V1_);\n\t\tV2 = normalize(V2_);\n\t}\n\telse\n\t{\n\t\ta = 1.0 / dot(V1, V1);\n\t\tb = 1.0 / dot(V2, V2);\n\t\tV1 *= sqrt(a);\n\t\tV2 *= sqrt(b);\n\t}\n\tvec3 V3 = cross(V1, V2);\n\tif (dot(C, V3) < 0.0)\n\t\tV3 *= -1.0;\n\tfloat L = dot(V3, C);\n\tfloat x0 = dot(V1, C) / L;\n\tfloat y0 = dot(V2, C) / L;\n\tfloat E1 = inversesqrt(a);\n\tfloat E2 = inversesqrt(b);\n\ta *= L * L;\n\tb *= L * L;\n\tfloat c0 = a * b;\n\tfloat c1 = a * b * (1.0 + x0 * x0 + y0 * y0) - a - b;\n\tfloat c2 = 1.0 - a * (1.0 + x0 * x0) - b * (1.0 + y0 * y0);\n\tfloat c3 = 1.0;\n\tvec3 roots = SolveCubic(vec4(c0, c1, c2, c3));\n\tfloat e1 = roots.x;\n\tfloat e2 = roots.y;\n\tfloat e3 = roots.z;\n\tvec3 avgDir = vec3(a * x0 / (a - e2), b * y0 / (b - e2), 1.0);\n\tmat3 rotate = mat3(V1, V2, V3);\n\tavgDir = rotate * avgDir;\n\tavgDir = normalize(avgDir);\n\tfloat L1 = sqrt(-e2 / e3);\n\tfloat L2 = sqrt(-e2 / e1);\n\tfloat formFactor = L1 * L2 * inversesqrt((1.0 + L1 * L1) * (1.0 + L2 * L2));\n\t\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tvec2 uv = vec2(avgDir.z * 0.5 + 0.5, formFactor);\n\tuv = uv*LUT_SCALE + LUT_BIAS;\n\tfloat scale = texture2DLodEXT(areaLightsLutTex2, uv, 0.0).w;\n\treturn formFactor*scale;\n}\nfloat getRectLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mat3( 1.0 ), dLTCCoords );\n}\nfloat getDiskLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\treturn LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mat3( 1.0 ), dLTCCoords );\n}\nfloat getSphereLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\tfloat falloff = dSphereRadius / (dot(lightDir, lightDir) + dSphereRadius);\n\treturn getLightDiffuse(worldNormal, viewDir, lightDir, lightDirNorm) * falloff;\n}\nmat3 getLTCLightInvMat(vec2 uv)\n{\n\tvec4 t1 = texture2DLodEXT(areaLightsLutTex1, uv, 0.0);\n\t#ifdef AREA_R8_G8_B8_A8_LUTS\n\tt1 *= vec4(1.001, 0.3239, 0.60437568, 1.0);\n\tt1 += vec4(0.0, -0.2976, -0.01381, 0.0);\n\t#endif\n\treturn mat3(\n\t\tvec3( t1.x, 0, t1.y ),\n\t\tvec3(\t0, 1,\t0 ),\n\t\tvec3( t1.z, 0, t1.w )\n\t);\n}\nfloat calcRectLightSpecular(vec3 worldNormal, vec3 viewDir, vec2 uv) {\n\tmat3 mInv = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfloat getRectLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcRectLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfloat calcDiskLightSpecular(vec3 worldNormal, vec3 viewDir, vec2 uv) {\n\tmat3 mInv = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfloat getDiskLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfloat getSphereLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\n`;\n\nexport { ltcPS as default };\n", "var metalnessPS = `\n#ifdef MAPFLOAT\nuniform float material_metalness;\n#endif\nvoid getMetalness() {\n\tfloat metalness = 1.0;\n\t#ifdef MAPFLOAT\n\tmetalness *= material_metalness;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tmetalness *= texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tmetalness *= saturate(vVertexColor.$VC);\n\t#endif\n\tdMetalness = metalness;\n}\n`;\n\nexport { metalnessPS as default };\n", "var msdfPS = `\nuniform sampler2D texture_msdfMap;\n#ifdef GL_OES_standard_derivatives\n#define USE_FWIDTH\n#endif\n#ifdef GL2\n#define USE_FWIDTH\n#endif\nfloat median(float r, float g, float b) {\n\treturn max(min(r, g), min(max(r, g), b));\n}\nfloat map (float min, float max, float v) {\n\treturn (v - min) / (max - min);\n}\nuniform float font_sdfIntensity;\nuniform float font_pxrange;\nuniform float font_textureWidth;\n#ifdef UNIFORM_TEXT_PARAMETERS\nuniform vec4 outline_color;\nuniform float outline_thickness;\nuniform vec4 shadow_color;\nuniform vec2 shadow_offset;\n#else\nvarying vec4 outline_color;\nvarying float outline_thickness;\nvarying vec4 shadow_color;\nvarying vec2 shadow_offset;\n#endif\nvec4 applyMsdf(vec4 color) {\n\tvec3 tsample = texture2D(texture_msdfMap, vUv0).rgb;\n\tvec2 uvShdw = vUv0 - shadow_offset;\n\tvec3 ssample = texture2D(texture_msdfMap, uvShdw).rgb;\n\tfloat sigDist = median(tsample.r, tsample.g, tsample.b);\n\tfloat sigDistShdw = median(ssample.r, ssample.g, ssample.b);\n\tfloat smoothingMax = 0.2;\n\t#ifdef USE_FWIDTH\n\tvec2 w = fwidth(vUv0);\n\tfloat smoothing = clamp(w.x * font_textureWidth / font_pxrange, 0.0, smoothingMax);\n\t#else\n\tfloat font_size = 16.0;\n\tfloat smoothing = clamp(font_pxrange / font_size, 0.0, smoothingMax);\n\t#endif\n\tfloat mapMin = 0.05;\n\tfloat mapMax = clamp(1.0 - font_sdfIntensity, mapMin, 1.0);\n\tfloat sigDistInner = map(mapMin, mapMax, sigDist);\n\tfloat sigDistOutline = map(mapMin, mapMax, sigDist + outline_thickness);\n\tsigDistShdw = map(mapMin, mapMax, sigDistShdw + outline_thickness);\n\tfloat center = 0.5;\n\tfloat inside = smoothstep(center-smoothing, center+smoothing, sigDistInner);\n\tfloat outline = smoothstep(center-smoothing, center+smoothing, sigDistOutline);\n\tfloat shadow = smoothstep(center-smoothing, center+smoothing, sigDistShdw);\n\tvec4 tcolor = (outline > inside) ? outline * vec4(outline_color.a * outline_color.rgb, outline_color.a) : vec4(0.0);\n\ttcolor = mix(tcolor, color, inside);\n\tvec4 scolor = (shadow > outline) ? shadow * vec4(shadow_color.a * shadow_color.rgb, shadow_color.a) : tcolor;\n\ttcolor = mix(scolor, tcolor, outline);\n\t\n\treturn tcolor;\n}\n`;\n\nexport { msdfPS as default };\n", "var metalnessModulatePS = `\nvec3 getSpecularModulate(in vec3 specularity, in vec3 albedo, in float metalness, in float f0) {\n\tvec3 dielectricF0 = f0 * specularity;\n\treturn mix(dielectricF0, albedo, metalness);\n}\nvec3 getAlbedoModulate(in vec3 albedo, in float metalness) {\n\treturn albedo * (1.0 - metalness);\n}\n`;\n\nexport { metalnessModulatePS as default };\n", "var msdfVS = `\nattribute vec3 vertex_outlineParameters;\nattribute vec3 vertex_shadowParameters;\nvarying vec4 outline_color;\nvarying float outline_thickness;\nvarying vec4 shadow_color;\nvarying vec2 shadow_offset;\nvoid unpackMsdfParams() {\n\tvec3 little = mod(vertex_outlineParameters, 256.);\n\tvec3 big = (vertex_outlineParameters - little) / 256.;\n\toutline_color.rb = little.xy / 255.;\n\toutline_color.ga = big.xy / 255.;\n\toutline_thickness = little.z / 255. * 0.2;\n\tlittle = mod(vertex_shadowParameters, 256.);\n\tbig = (vertex_shadowParameters - little) / 256.;\n\tshadow_color.rb = little.xy / 255.;\n\tshadow_color.ga = big.xy / 255.;\n\tshadow_offset = (vec2(little.z, big.z) / 127. - 1.) * 0.005;\n}\n`;\n\nexport { msdfVS as default };\n", "var normalVS = `\n#ifdef MORPHING_TEXTURE_BASED_NORMAL\nuniform highp sampler2D morphNormalTex;\n#endif\nvec3 getNormal() {\n\t#ifdef SKIN\n\tdNormalMatrix = mat3(dModelMatrix[0].xyz, dModelMatrix[1].xyz, dModelMatrix[2].xyz);\n\t#elif defined(INSTANCING)\n\tdNormalMatrix = mat3(instance_line1.xyz, instance_line2.xyz, instance_line3.xyz);\n\t#else\n\tdNormalMatrix = matrix_normal;\n\t#endif\n\tvec3 tempNormal = vertex_normal;\n\t#ifdef MORPHING\n\t#ifdef MORPHING_NRM03\n\ttempNormal += morph_weights_a[0] * morph_nrm0;\n\ttempNormal += morph_weights_a[1] * morph_nrm1;\n\ttempNormal += morph_weights_a[2] * morph_nrm2;\n\ttempNormal += morph_weights_a[3] * morph_nrm3;\n\t#endif\n\t#ifdef MORPHING_NRM47\n\ttempNormal += morph_weights_b[0] * morph_nrm4;\n\ttempNormal += morph_weights_b[1] * morph_nrm5;\n\ttempNormal += morph_weights_b[2] * morph_nrm6;\n\ttempNormal += morph_weights_b[3] * morph_nrm7;\n\t#endif\n\t#endif\n\t#ifdef MORPHING_TEXTURE_BASED_NORMAL\n\t\t#ifdef WEBGPU\n\t\t\tivec2 morphUV = getTextureMorphCoords();\n\t\t\tvec3 morphNormal = texelFetch(morphNormalTex, ivec2(morphUV), 0).xyz;\n\t\t#else\n\t\t\tvec2 morphUV = getTextureMorphCoords();\n\t\t\tvec3 morphNormal = texture2D(morphNormalTex, morphUV).xyz;\n\t\t#endif\n\ttempNormal += morphNormal;\n\t#endif\n\treturn normalize(dNormalMatrix * tempNormal);\n}\n`;\n\nexport { normalVS as default };\n", "var normalDetailMapPS = `\n#ifdef MAPTEXTURE\nuniform float material_normalDetailMapBumpiness;\nvec3 blendNormals(vec3 n1, vec3 n2) {\n\tn1 += vec3(0, 0, 1);\n\tn2 *= vec3(-1, -1, 1);\n\treturn n1 * dot(n1, n2) / n1.z - n2;\n}\n#endif\nvec3 addNormalDetail(vec3 normalMap) {\n#ifdef MAPTEXTURE\n\tvec3 normalDetailMap = unpackNormal(texture2DBias($SAMPLER, $UV, textureBias));\n\tnormalDetailMap = mix(vec3(0.0, 0.0, 1.0), normalDetailMap, material_normalDetailMapBumpiness);\n\treturn blendNormals(normalMap, normalDetailMap);\n#else\n\treturn normalMap;\n#endif\n}\n`;\n\nexport { normalDetailMapPS as default };\n", "var normalInstancedVS = `\nvec3 getNormal() {\n\tdNormalMatrix = mat3(instance_line1.xyz, instance_line2.xyz, instance_line3.xyz);\n\treturn normalize(dNormalMatrix * vertex_normal);\n}\n`;\n\nexport { normalInstancedVS as default };\n", "var normalMapPS = `\n#ifdef MAPTEXTURE\nuniform float material_bumpiness;\n#endif\nvoid getNormal() {\n#ifdef MAPTEXTURE\n\tvec3 normalMap = unpackNormal(texture2DBias($SAMPLER, $UV, textureBias));\n\tnormalMap = mix(vec3(0.0, 0.0, 1.0), normalMap, material_bumpiness);\n\tdNormalW = normalize(dTBN * addNormalDetail(normalMap));\n#else\n\tdNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nexport { normalMapPS as default };\n", "var normalSkinnedVS = `\nvec3 getNormal() {\n\tdNormalMatrix = mat3(dModelMatrix[0].xyz, dModelMatrix[1].xyz, dModelMatrix[2].xyz);\n\treturn normalize(dNormalMatrix * vertex_normal);\n}\n`;\n\nexport { normalSkinnedVS as default };\n", "var normalXYPS = `\nvec3 unpackNormal(vec4 nmap) {\n\tvec3 normal;\n\tnormal.xy = nmap.wy * 2.0 - 1.0;\n\tnormal.z = sqrt(1.0 - saturate(dot(normal.xy, normal.xy)));\n\treturn normal;\n}\n`;\n\nexport { normalXYPS as default };\n", "var normalXYZPS = `\nvec3 unpackNormal(vec4 nmap) {\n\treturn nmap.xyz * 2.0 - 1.0;\n}\n`;\n\nexport { normalXYZPS as default };\n", "var opacityPS = `\n#ifdef MAPFLOAT\nuniform float material_opacity;\n#endif\nvoid getOpacity() {\n\tdAlpha = 1.0;\n\t#ifdef MAPFLOAT\n\tdAlpha *= material_opacity;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tdAlpha *= texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tdAlpha *= clamp(vVertexColor.$VC, 0.0, 1.0);\n\t#endif\n}\n`;\n\nexport { opacityPS as default };\n", "var opacityDitherPS = `\nuniform vec4 blueNoiseJitter;\n#ifdef DITHER_BLUENOISE\n\tuniform sampler2D blueNoiseTex32;\n#endif\nvoid opacityDither(float alpha, float id) {\n\t#ifdef DITHER_BAYER8\n\t\tfloat noise = bayer8(floor(mod(gl_FragCoord.xy + blueNoiseJitter.xy + id, 8.0))) / 64.0;\n\t#else\n\t\t#ifdef DITHER_BLUENOISE\n\t\t\tvec2 uv = fract(gl_FragCoord.xy / 32.0 + blueNoiseJitter.xy + id);\n\t\t\tfloat noise = texture2DLodEXT(blueNoiseTex32, uv, 0.0).y;\n\t\t#endif\n\t\t#ifdef DITHER_IGNNOISE\n\t\t\tvec3 magic = vec3(0.06711056, 0.00583715, 52.9829189);\n\t\t\tfloat noise = fract(magic.z * fract(dot(gl_FragCoord.xy + blueNoiseJitter.xy + id, magic.xy)));\n\t\t#endif\n\t#endif\n\tif (alpha < noise)\n\t\tdiscard;\n}\n`;\n\nexport { opacityDitherPS as default };\n", "var outputPS = `\n`;\n\nexport { outputPS as default };\n", "var outputAlphaPS = `\ngl_FragColor.a = litArgs_opacity;\n`;\n\nexport { outputAlphaPS as default };\n", "var outputAlphaOpaquePS = `\n\tgl_FragColor.a = 1.0;\n`;\n\nexport { outputAlphaOpaquePS as default };\n", "var outputAlphaPremulPS = `\ngl_FragColor.rgb *= litArgs_opacity;\ngl_FragColor.a = litArgs_opacity;\n`;\n\nexport { outputAlphaPremulPS as default };\n", "var outputTex2DPS = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nvoid main(void) {\n\tgl_FragColor = texture2D(source, vUv0);\n}\n`;\n\nexport { outputTex2DPS as default };\n", "var packDepthPS = `\nvec4 packFloat(float depth) {\n\tconst vec4 bit_shift = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0);\n\tconst vec4 bit_mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\n\tvec4 res = mod(depth * bit_shift * vec4(255), vec4(256) ) / vec4(255);\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\n`;\n\nexport { packDepthPS as default };\n", "var sheenPS = `\n#ifdef MAPCOLOR\nuniform vec3 material_sheen;\n#endif\nvoid getSheen() {\n\tvec3 sheenColor = vec3(1, 1, 1);\n\t#ifdef MAPCOLOR\n\tsheenColor *= material_sheen;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tsheenColor *= $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tsheenColor *= saturate(vVertexColor.$VC);\n\t#endif\n\tsSpecularity = sheenColor;\n}\n`;\n\nexport { sheenPS as default };\n", "var sheenGlossPS = `\n#ifdef MAPFLOAT\nuniform float material_sheenGloss;\n#endif\nvoid getSheenGlossiness() {\n\tfloat sheenGlossiness = 1.0;\n\t#ifdef MAPFLOAT\n\tsheenGlossiness *= material_sheenGloss;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tsheenGlossiness *= texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tsheenGlossiness *= saturate(vVertexColor.$VC);\n\t#endif\n\t#ifdef MAPINVERT\n\tsheenGlossiness = 1.0 - sheenGlossiness;\n\t#endif\n\tsheenGlossiness += 0.0000001;\n\tsGlossiness = sheenGlossiness;\n}\n`;\n\nexport { sheenGlossPS as default };\n", "var parallaxPS = `\nuniform float material_heightMapFactor;\nvoid getParallax() {\n\tfloat parallaxScale = material_heightMapFactor;\n\tfloat height = texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\theight = height * parallaxScale - parallaxScale*0.5;\n\tvec3 viewDirT = dViewDirW * dTBN;\n\tviewDirT.z += 0.42;\n\tdUvOffset = height * (viewDirT.xy / viewDirT.z);\n}\n`;\n\nexport { parallaxPS as default };\n", "var particlePS = `\nvarying vec4 texCoordsAlphaLife;\nuniform sampler2D colorMap;\nuniform sampler2D colorParam;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\n#ifndef CAMERAPLANES\n#define CAMERAPLANES\nuniform vec4 camera_params;\n#endif\nuniform float softening;\nuniform float colorMult;\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\n#ifndef UNPACKFLOAT\n#define UNPACKFLOAT\nfloat unpackFloat(vec4 rgbaDepth) {\n\tconst vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n\tfloat depth = dot(rgbaDepth, bitShift);\n\treturn depth;\n}\n#endif\nvoid main(void) {\n\tvec4 tex = gammaCorrectInput(texture2D(colorMap, vec2(texCoordsAlphaLife.x, 1.0 - texCoordsAlphaLife.y)));\n\tvec4 ramp = gammaCorrectInput(texture2D(colorParam, vec2(texCoordsAlphaLife.w, 0.0)));\n\tramp.rgb *= colorMult;\n\tramp.a += texCoordsAlphaLife.z;\n\tvec3 rgb = tex.rgb * ramp.rgb;\n\tfloat a = tex.a * ramp.a;\n`;\n\nexport { particlePS as default };\n", "var particleVS = `\nvec3 unpack3NFloats(float src) {\n\tfloat r = fract(src);\n\tfloat g = fract(src * 256.0);\n\tfloat b = fract(src * 65536.0);\n\treturn vec3(r, g, b);\n}\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec4 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc) {\n\treturn mix( texture2D(tex,tc), texture2D(tex,tc + graphSampleSize), fract(tc.x*graphNumSamples) );\n}\nvec4 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc, out vec3 w) {\n\tvec4 a = texture2D(tex,tc);\n\tvec4 b = texture2D(tex,tc + graphSampleSize);\n\tfloat c = fract(tc.x*graphNumSamples);\n\tvec3 unpackedA = unpack3NFloats(a.w);\n\tvec3 unpackedB = unpack3NFloats(b.w);\n\tw = mix(unpackedA, unpackedB, c);\n\treturn mix(a, b, c);\n}\nvec2 rotate(vec2 quadXY, float pRotation, out mat2 rotMatrix) {\n\tfloat c = cos(pRotation);\n\tfloat s = sin(pRotation);\n\tmat2 m = mat2(c, -s, s, c);\n\trotMatrix = m;\n\treturn m * quadXY;\n}\nvec3 billboard(vec3 InstanceCoords, vec2 quadXY) {\n\t#ifdef SCREEN_SPACE\n\t\tvec3 pos = vec3(-1, 0, 0) * quadXY.x + vec3(0, -1, 0) * quadXY.y;\n\t#else\n\t\tvec3 pos = -matrix_viewInverse[0].xyz * quadXY.x + -matrix_viewInverse[1].xyz * quadXY.y;\n\t#endif\n\treturn pos;\n}\nvec3 customFace(vec3 InstanceCoords, vec2 quadXY) {\n\tvec3 pos = faceTangent * quadXY.x + faceBinorm * quadXY.y;\n\treturn pos;\n}\nvec2 safeNormalize(vec2 v) {\n\tfloat l = length(v);\n\treturn (l > 1e-06) ? v / l : v;\n}\nvoid main(void) {\n\tvec3 meshLocalPos = particle_vertexData.xyz;\n\tfloat id = floor(particle_vertexData.w);\n\tfloat rndFactor = fract(sin(id + 1.0 + seed));\n\tvec3 rndFactor3 = vec3(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n\tfloat uv = id / numParticlesPot;\n\treadInput(uv);\n#ifdef LOCAL_SPACE\n\tinVel = mat3(matrix_model) * inVel;\n#endif\n\tvec2 velocityV = safeNormalize((mat3(matrix_view) * inVel).xy);\n\tfloat particleLifetime = lifetime;\n\tif (inLife <= 0.0 || inLife > particleLifetime || !inShow) meshLocalPos = vec3(0.0);\n\tvec2 quadXY = meshLocalPos.xy;\n\tfloat nlife = clamp(inLife / particleLifetime, 0.0, 1.0);\n\tvec3 paramDiv;\n\tvec4 params = tex1Dlod_lerp(TEXTURE_PASS(internalTex2), vec2(nlife, 0), paramDiv);\n\tfloat scale = params.y;\n\tfloat scaleDiv = paramDiv.x;\n\tfloat alphaDiv = paramDiv.z;\n\tscale += (scaleDiv * 2.0 - 1.0) * scaleDivMult * fract(rndFactor*10000.0);\n#ifndef USE_MESH\n\ttexCoordsAlphaLife = vec4(quadXY * -0.5 + 0.5, (alphaDiv * 2.0 - 1.0) * alphaDivMult * fract(rndFactor*1000.0), nlife);\n#else\n\ttexCoordsAlphaLife = vec4(particle_uv, (alphaDiv * 2.0 - 1.0) * alphaDivMult * fract(rndFactor*1000.0), nlife);\n#endif\n\tvec3 particlePos = inPos;\n\tvec3 particlePosMoved = vec3(0.0);\n\tmat2 rotMatrix;\n`;\n\nexport { particleVS as default };\n", "var particleAnimFrameClampVS = `\n\tfloat animFrame = min(floor(texCoordsAlphaLife.w * animTexParams.y) + animTexParams.x, animTexParams.z);\n`;\n\nexport { particleAnimFrameClampVS as default };\n", "var particleAnimFrameLoopVS = `\n\tfloat animFrame = floor(mod(texCoordsAlphaLife.w * animTexParams.y + animTexParams.x, animTexParams.z + 1.0));\n`;\n\nexport { particleAnimFrameLoopVS as default };\n", "var particleAnimTexVS = `\n\tfloat animationIndex;\n\tif (animTexIndexParams.y == 1.0) {\n\t\tanimationIndex = floor((animTexParams.w + 1.0) * rndFactor3.z) * (animTexParams.z + 1.0);\n\t} else {\n\t\tanimationIndex = animTexIndexParams.x * (animTexParams.z + 1.0);\n\t}\n\tfloat atlasX = (animationIndex + animFrame) * animTexTilesParams.x;\n\tfloat atlasY = 1.0 - floor(atlasX + 1.0) * animTexTilesParams.y;\n\tatlasX = fract(atlasX);\n\ttexCoordsAlphaLife.xy *= animTexTilesParams.xy;\n\ttexCoordsAlphaLife.xy += vec2(atlasX, atlasY);\n`;\n\nexport { particleAnimTexVS as default };\n", "var particleInputFloatPS = `\nvoid readInput(float uv) {\n\tvec4 tex = texture2D(particleTexIN, vec2(uv, 0.25));\n\tvec4 tex2 = texture2D(particleTexIN, vec2(uv, 0.75));\n\tinPos = tex.xyz;\n\tinVel = tex2.xyz;\n\tinAngle = (tex.w < 0.0? -tex.w : tex.w) - 1000.0;\n\tinShow = tex.w >= 0.0;\n\tinLife = tex2.w;\n}\n`;\n\nexport { particleInputFloatPS as default };\n", "var particleInputRgba8PS = `\n#define PI2 6.283185307179586\nuniform vec3 inBoundsSize;\nuniform vec3 inBoundsCenter;\nuniform float maxVel;\nfloat decodeFloatRG(vec2 rg) {\n\treturn rg.y*(1.0/255.0) + rg.x;\n}\nfloat decodeFloatRGBA( vec4 rgba ) {\n\treturn dot( rgba, vec4(1.0, 1.0/255.0, 1.0/65025.0, 1.0/160581375.0) );\n}\nvoid readInput(float uv) {\n\tvec4 tex0 = texture2D(particleTexIN, vec2(uv, 0.125));\n\tvec4 tex1 = texture2D(particleTexIN, vec2(uv, 0.375));\n\tvec4 tex2 = texture2D(particleTexIN, vec2(uv, 0.625));\n\tvec4 tex3 = texture2D(particleTexIN, vec2(uv, 0.875));\n\tinPos = vec3(decodeFloatRG(tex0.rg), decodeFloatRG(tex0.ba), decodeFloatRG(tex1.rg));\n\tinPos = (inPos - vec3(0.5)) * inBoundsSize + inBoundsCenter;\n\tinVel = tex2.xyz;\n\tinVel = (inVel - vec3(0.5)) * maxVel;\n\tinAngle = decodeFloatRG(tex1.ba) * PI2;\n\tinShow = tex2.a > 0.5;\n\tinLife = decodeFloatRGBA(tex3);\n\tfloat maxNegLife = max(lifetime, (numParticles - 1.0) * (rate+rateDiv));\n\tfloat maxPosLife = lifetime+1.0;\n\tinLife = inLife * (maxNegLife + maxPosLife) - maxNegLife;\n}\n`;\n\nexport { particleInputRgba8PS as default };\n", "var particleOutputFloatPS = `\nvoid writeOutput() {\n\tif (gl_FragCoord.y<1.0) {\n\t\tgl_FragColor = vec4(outPos, (outAngle + 1000.0) * visMode);\n\t} else {\n\t\tgl_FragColor = vec4(outVel, outLife);\n\t}\n}\n`;\n\nexport { particleOutputFloatPS as default };\n", "var particleOutputRgba8PS = `\nuniform vec3 outBoundsMul;\nuniform vec3 outBoundsAdd;\nvec2 encodeFloatRG( float v ) {\n\tvec2 enc = vec2(1.0, 255.0) * v;\n\tenc = fract(enc);\n\tenc -= enc.yy * vec2(1.0/255.0, 1.0/255.0);\n\treturn enc;\n}\nvec4 encodeFloatRGBA( float v ) {\n\tvec4 enc = vec4(1.0, 255.0, 65025.0, 160581375.0) * v;\n\tenc = fract(enc);\n\tenc -= enc.yzww * vec4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n\treturn enc;\n}\nvoid writeOutput() {\n\toutPos = outPos * outBoundsMul + outBoundsAdd;\n\toutAngle = fract(outAngle / PI2);\n\toutVel = (outVel / maxVel) + vec3(0.5);\n\tfloat maxNegLife = max(lifetime, (numParticles - 1.0) * (rate+rateDiv));\n\tfloat maxPosLife = lifetime+1.0;\n\toutLife = (outLife + maxNegLife) / (maxNegLife + maxPosLife);\n\tif (gl_FragCoord.y < 1.0) {\n\t\tgl_FragColor = vec4(encodeFloatRG(outPos.x), encodeFloatRG(outPos.y));\n\t} else if (gl_FragCoord.y < 2.0) {\n\t\tgl_FragColor = vec4(encodeFloatRG(outPos.z), encodeFloatRG(outAngle));\n\t} else if (gl_FragCoord.y < 3.0) {\n\t\tgl_FragColor = vec4(outVel, visMode*0.5+0.5);\n\t} else {\n\t\tgl_FragColor = encodeFloatRGBA(outLife);\n\t}\n}\n`;\n\nexport { particleOutputRgba8PS as default };\n", "var particleUpdaterAABBPS = `\nuniform mat3 spawnBounds;\nuniform vec3 spawnPosInnerRatio;\nvec3 calcSpawnPosition(vec3 inBounds, float rndFactor) {\n\tvec3 pos = inBounds - vec3(0.5);\n\tvec3 posAbs = abs(pos);\n\tvec3 maxPos = vec3(max(posAbs.x, max(posAbs.y, posAbs.z)));\n\tvec3 edge = maxPos + (vec3(0.5) - maxPos) * spawnPosInnerRatio;\n\tpos.x = edge.x * (maxPos.x == posAbs.x ? sign(pos.x) : 2.0 * pos.x);\n\tpos.y = edge.y * (maxPos.y == posAbs.y ? sign(pos.y) : 2.0 * pos.y);\n\tpos.z = edge.z * (maxPos.z == posAbs.z ? sign(pos.z) : 2.0 * pos.z);\n#ifndef LOCAL_SPACE\n\treturn emitterPos + spawnBounds * pos;\n#else\n\treturn spawnBounds * pos;\n#endif\n}\nvoid addInitialVelocity(inout vec3 localVelocity, vec3 inBounds) {\n\tlocalVelocity -= vec3(0, 0, initialVelocity);\n}\n`;\n\nexport { particleUpdaterAABBPS as default };\n", "var particleUpdaterEndPS = `\n\twriteOutput();\n}\n`;\n\nexport { particleUpdaterEndPS as default };\n", "var particleUpdaterInitPS = `\nvarying vec2 vUv0;\nuniform highp sampler2D particleTexIN;\nuniform highp sampler2D internalTex0;\nuniform highp sampler2D internalTex1;\nuniform highp sampler2D internalTex2;\nuniform highp sampler2D internalTex3;\nuniform mat3 emitterMatrix;\nuniform mat3 emitterMatrixInv;\nuniform vec3 emitterScale;\nuniform vec3 emitterPos;\nuniform vec3 frameRandom;\nuniform vec3 localVelocityDivMult;\nuniform vec3 velocityDivMult;\nuniform float delta;\nuniform float rate;\nuniform float rateDiv;\nuniform float lifetime;\nuniform float numParticles;\nuniform float rotSpeedDivMult;\nuniform float radialSpeedDivMult;\nuniform float seed;\nuniform float startAngle;\nuniform float startAngle2;\nuniform float initialVelocity;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\nvec3 inPos;\nvec3 inVel;\nfloat inAngle;\nbool inShow;\nfloat inLife;\nfloat visMode;\nvec3 outPos;\nvec3 outVel;\nfloat outAngle;\nbool outShow;\nfloat outLife;\n`;\n\nexport { particleUpdaterInitPS as default };\n", "var particleUpdaterNoRespawnPS = `\n\tif (outLife >= lifetime) {\n\t\toutLife -= max(lifetime, (numParticles - 1.0) * particleRate);\n\t\tvisMode = -1.0;\n\t}\n`;\n\nexport { particleUpdaterNoRespawnPS as default };\n", "var particleUpdaterOnStopPS = `\n\tvisMode = outLife < 0.0? -1.0: visMode;\n`;\n\nexport { particleUpdaterOnStopPS as default };\n", "var particleUpdaterRespawnPS = `\n\tif (outLife >= lifetime) {\n\t\toutLife -= max(lifetime, (numParticles - 1.0) * particleRate);\n\t\tvisMode = 1.0;\n\t}\n\tvisMode = outLife < 0.0? 1.0: visMode;\n`;\n\nexport { particleUpdaterRespawnPS as default };\n", "var particleUpdaterSpherePS = `\nuniform float spawnBoundsSphere;\nuniform float spawnBoundsSphereInnerRatio;\nvec3 calcSpawnPosition(vec3 inBounds, float rndFactor) {\n\tfloat rnd4 = fract(rndFactor * 1000.0);\n\tvec3 norm = normalize(inBounds.xyz - vec3(0.5));\n\tfloat r = rnd4 * (1.0 - spawnBoundsSphereInnerRatio) + spawnBoundsSphereInnerRatio;\n#ifndef LOCAL_SPACE\n\treturn emitterPos + norm * r * spawnBoundsSphere;\n#else\n\treturn norm * r * spawnBoundsSphere;\n#endif\n}\nvoid addInitialVelocity(inout vec3 localVelocity, vec3 inBounds) {\n\tlocalVelocity += normalize(inBounds - vec3(0.5)) * initialVelocity;\n}\n`;\n\nexport { particleUpdaterSpherePS as default };\n", "var particleUpdaterStartPS = `\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec3 unpack3NFloats(float src) {\n\tfloat r = fract(src);\n\tfloat g = fract(src * 256.0);\n\tfloat b = fract(src * 65536.0);\n\treturn vec3(r, g, b);\n}\nvec3 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc, out vec3 w) {\n\tvec4 a = texture2D(tex, tc);\n\tvec4 b = texture2D(tex, tc + graphSampleSize);\n\tfloat c = fract(tc.x * graphNumSamples);\n\tvec3 unpackedA = unpack3NFloats(a.w);\n\tvec3 unpackedB = unpack3NFloats(b.w);\n\tw = mix(unpackedA, unpackedB, c);\n\treturn mix(a.xyz, b.xyz, c);\n}\n#define HASHSCALE4 vec4(1031, .1030, .0973, .1099)\nvec4 hash41(float p) {\n\tvec4 p4 = fract(vec4(p) * HASHSCALE4);\n\tp4 += dot(p4, p4.wzxy+19.19);\n\treturn fract(vec4((p4.x + p4.y)*p4.z, (p4.x + p4.z)*p4.y, (p4.y + p4.z)*p4.w, (p4.z + p4.w)*p4.x));\n}\nvoid main(void) {\n\tif (gl_FragCoord.x > numParticles) discard;\n\treadInput(vUv0.x);\n\tvisMode = inShow? 1.0 : -1.0;\n\tvec4 rndFactor = hash41(gl_FragCoord.x + seed);\n\tfloat particleRate = rate + rateDiv * rndFactor.x;\n\toutLife = inLife + delta;\n\tfloat nlife = clamp(outLife / lifetime, 0.0, 1.0);\n\tvec3 localVelocityDiv;\n\tvec3 velocityDiv;\n\tvec3 paramDiv;\n\tvec3 localVelocity = tex1Dlod_lerp(TEXTURE_PASS(internalTex0), vec2(nlife, 0), localVelocityDiv);\n\tvec3 velocity =\t tex1Dlod_lerp(TEXTURE_PASS(internalTex1), vec2(nlife, 0), velocityDiv);\n\tvec3 params =\t\ttex1Dlod_lerp(TEXTURE_PASS(internalTex2), vec2(nlife, 0), paramDiv);\n\tfloat rotSpeed = params.x;\n\tfloat rotSpeedDiv = paramDiv.y;\n\tvec3 radialParams = tex1Dlod_lerp(TEXTURE_PASS(internalTex3), vec2(nlife, 0), paramDiv);\n\tfloat radialSpeed = radialParams.x;\n\tfloat radialSpeedDiv = radialParams.y;\n\tbool respawn = inLife <= 0.0 || outLife >= lifetime;\n\tinPos = respawn ? calcSpawnPosition(rndFactor.xyz, rndFactor.x) : inPos;\n\tinAngle = respawn ? mix(startAngle, startAngle2, rndFactor.x) : inAngle;\n#ifndef LOCAL_SPACE\n\tvec3 radialVel = inPos - emitterPos;\n#else\n\tvec3 radialVel = inPos;\n#endif\n\tradialVel = (dot(radialVel, radialVel) > 1.0E-8) ? radialSpeed * normalize(radialVel) : vec3(0.0);\n\tradialVel += (radialSpeedDiv * vec3(2.0) - vec3(1.0)) * radialSpeedDivMult * rndFactor.xyz;\n\tlocalVelocity +=\t(localVelocityDiv * vec3(2.0) - vec3(1.0)) * localVelocityDivMult * rndFactor.xyz;\n\tvelocity +=\t\t (velocityDiv * vec3(2.0) - vec3(1.0)) * velocityDivMult * rndFactor.xyz;\n\trotSpeed +=\t\t (rotSpeedDiv * 2.0 - 1.0) * rotSpeedDivMult * rndFactor.y;\n\taddInitialVelocity(localVelocity, rndFactor.xyz);\n#ifndef LOCAL_SPACE\n\toutVel = emitterMatrix * localVelocity + (radialVel + velocity) * emitterScale;\n#else\n\toutVel = (localVelocity + radialVel) / emitterScale + emitterMatrixInv * velocity;\n#endif\n\toutPos = inPos + outVel * delta;\n\toutAngle = inAngle + rotSpeed * delta;\n`;\n\nexport { particleUpdaterStartPS as default };\n", "var particle_billboardVS = `\n\tquadXY = rotate(quadXY, inAngle, rotMatrix);\n\tvec3 localPos = billboard(particlePos, quadXY);\n`;\n\nexport { particle_billboardVS as default };\n", "var particle_blendAddPS = `\n\tdBlendModeFogFactor = 0.0;\n\trgb *= saturate(gammaCorrectInput(max(a, 0.0)));\n\tif ((rgb.r + rgb.g + rgb.b) < 0.000001) discard;\n`;\n\nexport { particle_blendAddPS as default };\n", "var particle_blendMultiplyPS = `\n\trgb = mix(vec3(1.0), rgb, vec3(a));\n\tif (rgb.r + rgb.g + rgb.b > 2.99) discard;\n`;\n\nexport { particle_blendMultiplyPS as default };\n", "var particle_blendNormalPS = `\n\tif (a < 0.01) discard;\n`;\n\nexport { particle_blendNormalPS as default };\n", "var particle_cpuVS = `\nattribute vec4 particle_vertexData;\nattribute vec4 particle_vertexData2;\nattribute vec4 particle_vertexData3;\nattribute float particle_vertexData4;\n#ifndef USE_MESH\nattribute vec2 particle_vertexData5;\n#else\nattribute vec4 particle_vertexData5;\n#endif\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\n#ifndef VIEWMATRIX\n#define VIEWMATRIX\nuniform mat4 matrix_view;\n#endif\nuniform mat3 matrix_normal;\nuniform mat4 matrix_viewInverse;\nuniform float numParticles;\nuniform float lifetime;\nuniform float stretch;\nuniform float seed;\nuniform vec3 wrapBounds;\nuniform vec3 emitterScale;\nuniform vec3 faceTangent;\nuniform vec3 faceBinorm;\n#ifdef PARTICLE_GPU\n\tuniform highp sampler2D internalTex0;\n\tuniform highp sampler2D internalTex1;\n\tuniform highp sampler2D internalTex2;\n#endif\nuniform vec3 emitterPos;\nvarying vec4 texCoordsAlphaLife;\nvec2 rotate(vec2 quadXY, float pRotation, out mat2 rotMatrix)\n{\n\tfloat c = cos(pRotation);\n\tfloat s = sin(pRotation);\n\tmat2 m = mat2(c, -s, s, c);\n\trotMatrix = m;\n\treturn m * quadXY;\n}\nvec3 billboard(vec3 InstanceCoords, vec2 quadXY)\n{\n\tvec3 pos = -matrix_viewInverse[0].xyz * quadXY.x + -matrix_viewInverse[1].xyz * quadXY.y;\n\treturn pos;\n}\nvec3 customFace(vec3 InstanceCoords, vec2 quadXY)\n{\n\tvec3 pos = faceTangent * quadXY.x + faceBinorm * quadXY.y;\n\treturn pos;\n}\nvoid main(void)\n{\n\tvec3 particlePos = particle_vertexData.xyz;\n\tvec3 inPos = particlePos;\n\tvec3 vertPos = particle_vertexData3.xyz;\n\tvec3 inVel = vec3(particle_vertexData2.w, particle_vertexData3.w, particle_vertexData5.x);\n\tfloat id = floor(particle_vertexData4);\n\tfloat rndFactor = fract(sin(id + 1.0 + seed));\n\tvec3 rndFactor3 = vec3(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n#ifdef LOCAL_SPACE\n\tinVel = mat3(matrix_model) * inVel;\n#endif\n\tvec2 velocityV = normalize((mat3(matrix_view) * inVel).xy);\n\tvec2 quadXY = vertPos.xy;\n#ifdef USE_MESH\n\ttexCoordsAlphaLife = vec4(particle_vertexData5.zw, particle_vertexData2.z, particle_vertexData.w);\n#else\n\ttexCoordsAlphaLife = vec4(quadXY * -0.5 + 0.5, particle_vertexData2.z, particle_vertexData.w);\n#endif\n\tmat2 rotMatrix;\n\tfloat inAngle = particle_vertexData2.x;\n\tvec3 particlePosMoved = vec3(0.0);\n\tvec3 meshLocalPos = particle_vertexData3.xyz;\n`;\n\nexport { particle_cpuVS as default };\n", "var particle_cpu_endVS = `\n\tlocalPos *= particle_vertexData2.y * emitterScale;\n\tlocalPos += particlePos;\n\tgl_Position = matrix_viewProjection * vec4(localPos, 1.0);\n`;\n\nexport { particle_cpu_endVS as default };\n", "var particle_customFaceVS = `\n\tquadXY = rotate(quadXY, inAngle, rotMatrix);\n\tvec3 localPos = customFace(particlePos, quadXY);\n`;\n\nexport { particle_customFaceVS as default };\n", "var particle_endPS = `\n\trgb = addFog(rgb);\n\trgb = toneMap(rgb);\n\trgb = gammaCorrectOutput(rgb);\n\tgl_FragColor = vec4(rgb, a);\n}\n`;\n\nexport { particle_endPS as default };\n", "var particle_endVS = `\n\tlocalPos *= scale * emitterScale;\n\tlocalPos += particlePos;\n\t#ifdef SCREEN_SPACE\n\tgl_Position = vec4(localPos.x, localPos.y, 0.0, 1.0);\n\t#else\n\tgl_Position = matrix_viewProjection * vec4(localPos.xyz, 1.0);\n\t#endif\n`;\n\nexport { particle_endVS as default };\n", "var particle_halflambertPS = `\n\tvec3 negNormal = normal*0.5+0.5;\n\tvec3 posNormal = -normal*0.5+0.5;\n\tnegNormal *= negNormal;\n\tposNormal *= posNormal;\n`;\n\nexport { particle_halflambertPS as default };\n", "var particle_initVS = `\nattribute vec4 particle_vertexData;\n#ifdef USE_MESH\nattribute vec2 particle_uv;\n#endif\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\nuniform mat3 matrix_normal;\nuniform mat4 matrix_viewInverse;\n#ifndef VIEWMATRIX\n#define VIEWMATRIX\nuniform mat4 matrix_view;\n#endif\nuniform float numParticles;\nuniform float numParticlesPot;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\nuniform float stretch;\nuniform vec3 wrapBounds;\nuniform vec3 emitterScale;\nuniform vec3 emitterPos;\nuniform vec3 faceTangent;\nuniform vec3 faceBinorm;\nuniform float rate;\nuniform float rateDiv;\nuniform float lifetime;\nuniform float deltaRandomnessStatic;\nuniform float scaleDivMult;\nuniform float alphaDivMult;\nuniform float seed;\nuniform float delta;\nuniform sampler2D particleTexOUT;\nuniform sampler2D particleTexIN;\n#ifdef PARTICLE_GPU\n\tuniform highp sampler2D internalTex0;\n\tuniform highp sampler2D internalTex1;\n\tuniform highp sampler2D internalTex2;\n#endif\n#ifndef CAMERAPLANES\n#define CAMERAPLANES\nuniform vec4 camera_params;\n#endif\nvarying vec4 texCoordsAlphaLife;\nvec3 inPos;\nvec3 inVel;\nfloat inAngle;\nbool inShow;\nfloat inLife;\n`;\n\nexport { particle_initVS as default };\n", "var particle_lambertPS = `\n\tvec3 negNormal = max(normal, vec3(0.0));\n\tvec3 posNormal = max(-normal, vec3(0.0));\n`;\n\nexport { particle_lambertPS as default };\n", "var particle_lightingPS = `\n\tvec3 light = negNormal.x*lightCube[0] + posNormal.x*lightCube[1] +\n\t\t\t\t\t\tnegNormal.y*lightCube[2] + posNormal.y*lightCube[3] +\n\t\t\t\t\t\tnegNormal.z*lightCube[4] + posNormal.z*lightCube[5];\n\trgb *= light;\n`;\n\nexport { particle_lightingPS as default };\n", "var particle_localShiftVS = `\n\tparticlePos = (matrix_model * vec4(particlePos, 1.0)).xyz;\n`;\n\nexport { particle_localShiftVS as default };\n", "var particle_meshVS = `\n\tvec3 localPos = meshLocalPos;\n\tlocalPos.xy = rotate(localPos.xy, inAngle, rotMatrix);\n\tlocalPos.yz = rotate(localPos.yz, inAngle, rotMatrix);\n\tbillboard(particlePos, quadXY);\n`;\n\nexport { particle_meshVS as default };\n", "var particle_normalVS = `\n\tNormal = normalize(localPos + matrix_viewInverse[2].xyz);\n`;\n\nexport { particle_normalVS as default };\n", "var particle_normalMapPS = `\n\tvec3 normalMap = normalize(texture2D(normalMap, vec2(texCoordsAlphaLife.x, 1.0 - texCoordsAlphaLife.y)).xyz * 2.0 - 1.0);\n\tvec3 normal = ParticleMat * normalMap;\n`;\n\nexport { particle_normalMapPS as default };\n", "var particle_pointAlongVS = `\n\tinAngle = atan(velocityV.x, velocityV.y);\n`;\n\nexport { particle_pointAlongVS as default };\n", "var particle_softPS = `\n\tfloat depth = getLinearScreenDepth();\n\tfloat particleDepth = vDepth;\n\tfloat depthDiff = saturate(abs(particleDepth - depth) * softening);\n\ta *= depthDiff;\n`;\n\nexport { particle_softPS as default };\n", "var particle_softVS = `\n\tvDepth = getLinearDepth(localPos);\n`;\n\nexport { particle_softVS as default };\n", "var particle_stretchVS = `\n\tvec3 moveDir = inVel * stretch;\n\tvec3 posPrev = particlePos - moveDir;\n\tposPrev += particlePosMoved;\n\tvec2 centerToVertexV = normalize((mat3(matrix_view) * localPos).xy);\n\tfloat interpolation = dot(-velocityV, centerToVertexV) * 0.5 + 0.5;\n\tparticlePos = mix(particlePos, posPrev, interpolation);\n`;\n\nexport { particle_stretchVS as default };\n", "var particle_TBNVS = `\n\tmat3 rot3 = mat3(rotMatrix[0][0], rotMatrix[0][1], 0.0, rotMatrix[1][0], rotMatrix[1][1], 0.0, 0.0, 0.0, 1.0);\n\tParticleMat = mat3(-matrix_viewInverse[0].xyz, -matrix_viewInverse[1].xyz, matrix_viewInverse[2].xyz) * rot3;\n`;\n\nexport { particle_TBNVS as default };\n", "var particle_wrapVS = `\n\tvec3 origParticlePos = particlePos;\n\tparticlePos -= matrix_model[3].xyz;\n\tparticlePos = mod(particlePos, wrapBounds) - wrapBounds * 0.5;\n\tparticlePos += matrix_model[3].xyz;\n\tparticlePosMoved = particlePos - origParticlePos;\n`;\n\nexport { particle_wrapVS as default };\n", "var reflDirPS = `\nvoid getReflDir(vec3 worldNormal, vec3 viewDir, float gloss, mat3 tbn) {\n\tdReflDirW = normalize(-reflect(viewDir, worldNormal));\n}\n`;\n\nexport { reflDirPS as default };\n", "var reflDirAnisoPS = `\nvoid getReflDir(vec3 worldNormal, vec3 viewDir, float gloss, mat3 tbn) {\n\tfloat roughness = sqrt(1.0 - min(gloss, 1.0));\n\tfloat anisotropy = material_anisotropy * roughness;\n\tvec3 anisotropicDirection = anisotropy >= 0.0 ? tbn[1] : tbn[0];\n\tvec3 anisotropicTangent = cross(anisotropicDirection, viewDir);\n\tvec3 anisotropicNormal = cross(anisotropicTangent, anisotropicDirection);\n\tvec3 bentNormal = normalize(mix(normalize(worldNormal), normalize(anisotropicNormal), anisotropy));\n\tdReflDirW = reflect(-viewDir, bentNormal);\n}\n`;\n\nexport { reflDirAnisoPS as default };\n", "var reflectionCCPS = `\n#ifdef LIT_CLEARCOAT\nvoid addReflectionCC(vec3 reflDir, float gloss) {\n\tccReflection += calcReflection(reflDir, gloss);\n}\n#endif\n`;\n\nexport { reflectionCCPS as default };\n", "var reflectionCubePS = `\nuniform samplerCube texture_cubeMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 lookupVec = fixSeams(cubeMapProject(reflDir));\n\tlookupVec.x *= -1.0;\n\treturn $DECODE(textureCube(texture_cubeMap, lookupVec));\n}\nvoid addReflection(vec3 reflDir, float gloss) { \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nexport { reflectionCubePS as default };\n", "var reflectionEnvHQPS = `\n#ifndef ENV_ATLAS\n#define ENV_ATLAS\nuniform sampler2D texture_envAtlas;\n#endif\nuniform samplerCube texture_cubeMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 dir = cubeMapProject(reflDir) * vec3(-1.0, 1.0, 1.0);\n\tvec2 uv = toSphericalUv(dir);\n\tfloat level = saturate(1.0 - gloss) * 5.0;\n\tfloat ilevel = floor(level);\n\tfloat flevel = level - ilevel;\n\tvec3 sharp = $DECODE_CUBEMAP(textureCube(texture_cubeMap, fixSeams(dir)));\n\tvec3 roughA = $DECODE(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel)));\n\tvec3 roughB = $DECODE(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(sharp, mix(roughA, roughB, flevel), min(level, 1.0)));\n}\nvoid addReflection(vec3 reflDir, float gloss) { \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nexport { reflectionEnvHQPS as default };\n", "var reflectionEnvPS = `\n#ifndef ENV_ATLAS\n#define ENV_ATLAS\nuniform sampler2D texture_envAtlas;\n#endif\nuniform float material_reflectivity;\nfloat shinyMipLevel(vec2 uv) {\n\tvec2 dx = dFdx(uv);\n\tvec2 dy = dFdy(uv);\n\tvec2 uv2 = vec2(fract(uv.x + 0.5), uv.y);\n\tvec2 dx2 = dFdx(uv2);\n\tvec2 dy2 = dFdy(uv2);\n\tfloat maxd = min(max(dot(dx, dx), dot(dy, dy)), max(dot(dx2, dx2), dot(dy2, dy2)));\n\treturn clamp(0.5 * log2(maxd) - 1.0 + textureBias, 0.0, 5.0);\n}\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 dir = cubeMapProject(reflDir) * vec3(-1.0, 1.0, 1.0);\n\tvec2 uv = toSphericalUv(dir);\n\tfloat level = saturate(1.0 - gloss) * 5.0;\n\tfloat ilevel = floor(level);\n\tfloat level2 = shinyMipLevel(uv * atlasSize);\n\tfloat ilevel2 = floor(level2);\n\tvec2 uv0, uv1;\n\tfloat weight;\n\tif (ilevel == 0.0) {\n\t\tuv0 = mapShinyUv(uv, ilevel2);\n\t\tuv1 = mapShinyUv(uv, ilevel2 + 1.0);\n\t\tweight = level2 - ilevel2;\n\t} else {\n\t\tuv0 = uv1 = mapRoughnessUv(uv, ilevel);\n\t\tweight = 0.0;\n\t}\n\tvec3 linearA = $DECODE(texture2D(texture_envAtlas, uv0));\n\tvec3 linearB = $DECODE(texture2D(texture_envAtlas, uv1));\n\tvec3 linear0 = mix(linearA, linearB, weight);\n\tvec3 linear1 = $DECODE(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(linear0, linear1, level - ilevel));\n}\nvoid addReflection(vec3 reflDir, float gloss) { \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nexport { reflectionEnvPS as default };\n", "var reflectionSpherePS = `\n#ifndef VIEWMATRIX\n#define VIEWMATRIX\nuniform mat4 matrix_view;\n#endif\nuniform sampler2D texture_sphereMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 reflDirV = (mat3(matrix_view) * reflDir).xyz;\n\tfloat m = 2.0 * sqrt( dot(reflDirV.xy, reflDirV.xy) + (reflDirV.z+1.0)*(reflDirV.z+1.0) );\n\tvec2 sphereMapUv = reflDirV.xy / m + 0.5;\n\treturn $DECODE(texture2D(texture_sphereMap, sphereMapUv));\n}\nvoid addReflection(vec3 reflDir, float gloss) { \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nexport { reflectionSpherePS as default };\n", "var reflectionSheenPS = `\nvoid addReflectionSheen(vec3 worldNormal, vec3 viewDir, float gloss) {\n\tfloat NoV = dot(worldNormal, viewDir);\n\tfloat alphaG = gloss * gloss;\n\tfloat a = gloss < 0.25 ? -339.2 * alphaG + 161.4 * gloss - 25.9 : -8.48 * alphaG + 14.3 * gloss - 9.95;\n\tfloat b = gloss < 0.25 ? 44.0 * alphaG - 23.7 * gloss + 3.26 : 1.97 * alphaG - 3.27 * gloss + 0.72;\n\tfloat DG = exp( a * NoV + b ) + ( gloss < 0.25 ? 0.0 : 0.1 * ( gloss - 0.25 ) );\n\tsReflection += calcReflection(worldNormal, 0.0) * saturate(DG);\n}\n`;\n\nexport { reflectionSheenPS as default };\n", "var refractionCubePS = `\nvec3 refract2(vec3 viewVec, vec3 normal, float IOR) {\n\tfloat vn = dot(viewVec, normal);\n\tfloat k = 1.0 - IOR * IOR * (1.0 - vn * vn);\n\tvec3 refrVec = IOR * viewVec - (IOR * vn + sqrt(k)) * normal;\n\treturn refrVec;\n}\nvoid addRefraction(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tfloat thickness, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 albedo, \n\tfloat transmission,\n\tfloat refractionIndex,\n\tfloat dispersion\n#if defined(LIT_IRIDESCENCE)\n\t, vec3 iridescenceFresnel,\n\tfloat iridescenceIntensity\n#endif \n) {\n\tvec4 tmpRefl = dReflection;\n\tvec3 reflectionDir = refract2(-viewDir, worldNormal, refractionIndex);\n\tdReflection = vec4(0);\n\taddReflection(reflectionDir, gloss);\n\tdDiffuseLight = mix(dDiffuseLight, dReflection.rgb * albedo, transmission);\n\tdReflection = tmpRefl;\n}\n`;\n\nexport { refractionCubePS as default };\n", "var refractionDynamicPS = `\nuniform float material_invAttenuationDistance;\nuniform vec3 material_attenuation;\nvec3 evalRefractionColor(vec3 refractionVector, float gloss, float refractionIndex) {\n\tvec4 pointOfRefraction = vec4(vPositionW + refractionVector, 1.0);\n\tvec4 projectionPoint = matrix_viewProjection * pointOfRefraction;\n\tvec2 uv = getGrabScreenPos(projectionPoint);\n\t#ifdef SUPPORTS_TEXLOD\n\t\tfloat iorToRoughness = (1.0 - gloss) * clamp((1.0 / refractionIndex) * 2.0 - 2.0, 0.0, 1.0);\n\t\tfloat refractionLod = log2(uScreenSize.x) * iorToRoughness;\n\t\tvec3 refraction = texture2DLodEXT(uSceneColorMap, uv, refractionLod).rgb;\n\t#else\n\t\tvec3 refraction = texture2D(uSceneColorMap, uv).rgb;\n\t#endif\n\treturn refraction;\n}\nvoid addRefraction(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tfloat thickness, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 albedo, \n\tfloat transmission,\n\tfloat refractionIndex,\n\tfloat dispersion\n#if defined(LIT_IRIDESCENCE)\n\t, vec3 iridescenceFresnel,\n\tfloat iridescenceIntensity\n#endif\n) {\n\tvec3 modelScale;\n\tmodelScale.x = length(vec3(matrix_model[0].xyz));\n\tmodelScale.y = length(vec3(matrix_model[1].xyz));\n\tmodelScale.z = length(vec3(matrix_model[2].xyz));\n\tvec3 scale = thickness * modelScale;\n\tvec3 refractionVector = normalize(refract(-viewDir, worldNormal, refractionIndex)) * scale;\n\tvec3 refraction = evalRefractionColor(refractionVector, gloss, refractionIndex);\n\t#ifdef DISPERSION\n\t\tfloat halfSpread = (1.0 / refractionIndex - 1.0) * 0.025 * dispersion;\n\t\tfloat refractionIndexR = refractionIndex - halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexR)) * scale;\n\t\trefraction.r = evalRefractionColor(refractionVector, gloss, refractionIndexR).r;\n\t\tfloat refractionIndexB = refractionIndex + halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexB)) * scale;\n\t\trefraction.b = evalRefractionColor(refractionVector, gloss, refractionIndexB).b;\n\t#endif\n\tvec3 transmittance;\n\tif (material_invAttenuationDistance != 0.0)\n\t{\n\t\tvec3 attenuation = -log(material_attenuation) * material_invAttenuationDistance;\n\t\ttransmittance = exp(-attenuation * length(refractionVector));\n\t}\n\telse\n\t{\n\t\ttransmittance = refraction;\n\t}\n\tvec3 fresnel = vec3(1.0) - \n\t\tgetFresnel(\n\t\t\tdot(viewDir, worldNormal), \n\t\t\tgloss, \n\t\t\tspecularity\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tiridescenceIntensity\n\t\t#endif\n\t\t);\n\tdDiffuseLight = mix(dDiffuseLight, refraction * transmittance * fresnel, transmission);\n}\n`;\n\nexport { refractionDynamicPS as default };\n", "import decodePS from './decode.js';\nimport encodePS from './encode.js';\n\nvar reprojectPS = `\nvarying vec2 vUv0;\n#ifdef CUBEMAP_SOURCE\n\tuniform samplerCube sourceCube;\n#else\n\tuniform sampler2D sourceTex;\n#endif\n#ifdef USE_SAMPLES_TEX\n\tuniform sampler2D samplesTex;\n\tuniform vec2 samplesTexInverseSize;\n#endif\nuniform vec3 params;\nfloat targetFace() { return params.x; }\nfloat sourceCubeSeamScale() { return params.y; }\nfloat targetCubeSeamScale() { return params.z; }\nfloat PI = 3.141592653589793;\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\n${decodePS}\n${encodePS}\nvec3 modifySeams(vec3 dir, float scale) {\n\tvec3 adir = abs(dir);\n\tfloat M = max(max(adir.x, adir.y), adir.z);\n\treturn dir / M * vec3(\n\t\tadir.x == M ? 1.0 : scale,\n\t\tadir.y == M ? 1.0 : scale,\n\t\tadir.z == M ? 1.0 : scale\n\t);\n}\nvec2 toSpherical(vec3 dir) {\n\treturn vec2(dir.xz == vec2(0.0) ? 0.0 : atan(dir.x, dir.z), asin(dir.y));\n}\nvec3 fromSpherical(vec2 uv) {\n\treturn vec3(cos(uv.y) * sin(uv.x),\n\t\t\t\tsin(uv.y),\n\t\t\t\tcos(uv.y) * cos(uv.x));\n}\nvec3 getDirectionEquirect() {\n\treturn fromSpherical((vec2(vUv0.x, 1.0 - vUv0.y) * 2.0 - 1.0) * vec2(PI, PI * 0.5));\n}\nfloat signNotZero(float k){\n\treturn(k >= 0.0) ? 1.0 : -1.0;\n}\nvec2 signNotZero(vec2 v) {\n\treturn vec2(signNotZero(v.x), signNotZero(v.y));\n}\nvec3 octDecode(vec2 o) {\n\tvec3 v = vec3(o.x, 1.0 - abs(o.x) - abs(o.y), o.y);\n\tif (v.y < 0.0) {\n\t\tv.xz = (1.0 - abs(v.zx)) * signNotZero(v.xz);\n\t}\n\treturn normalize(v);\n}\nvec3 getDirectionOctahedral() {\n\treturn octDecode(vec2(vUv0.x, 1.0 - vUv0.y) * 2.0 - 1.0);\n}\nvec2 octEncode(in vec3 v) {\n\tfloat l1norm = abs(v.x) + abs(v.y) + abs(v.z);\n\tvec2 result = v.xz * (1.0 / l1norm);\n\tif (v.y < 0.0) {\n\t\tresult = (1.0 - abs(result.yx)) * signNotZero(result.xy);\n\t}\n\treturn result;\n}\n#ifdef CUBEMAP_SOURCE\n\tvec4 sampleCubemap(vec3 dir) {\n\t\treturn textureCube(sourceCube, modifySeams(dir, 1.0 - sourceCubeSeamScale()));\n\t}\n\tvec4 sampleCubemap(vec2 sph) {\n\treturn sampleCubemap(fromSpherical(sph));\n}\n\tvec4 sampleCubemap(vec3 dir, float mipLevel) {\n\t\treturn textureCubeLodEXT(sourceCube, modifySeams(dir, 1.0 - exp2(mipLevel) * sourceCubeSeamScale()), mipLevel);\n\t}\n\tvec4 sampleCubemap(vec2 sph, float mipLevel) {\n\t\treturn sampleCubemap(fromSpherical(sph), mipLevel);\n\t}\n#else\n\tvec4 sampleEquirect(vec2 sph) {\n\t\tvec2 uv = sph / vec2(PI * 2.0, PI) + 0.5;\n\t\treturn texture2D(sourceTex, vec2(uv.x, 1.0 - uv.y));\n\t}\n\tvec4 sampleEquirect(vec3 dir) {\n\t\treturn sampleEquirect(toSpherical(dir));\n\t}\n\tvec4 sampleEquirect(vec2 sph, float mipLevel) {\n\t\tvec2 uv = sph / vec2(PI * 2.0, PI) + 0.5;\n\t\treturn texture2DLodEXT(sourceTex, vec2(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tvec4 sampleEquirect(vec3 dir, float mipLevel) {\n\t\treturn sampleEquirect(toSpherical(dir), mipLevel);\n\t}\n\tvec4 sampleOctahedral(vec3 dir) {\n\t\tvec2 uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn texture2D(sourceTex, vec2(uv.x, 1.0 - uv.y));\n\t}\n\tvec4 sampleOctahedral(vec2 sph) {\n\t\treturn sampleOctahedral(fromSpherical(sph));\n\t}\n\tvec4 sampleOctahedral(vec3 dir, float mipLevel) {\n\t\tvec2 uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn texture2DLodEXT(sourceTex, vec2(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tvec4 sampleOctahedral(vec2 sph, float mipLevel) {\n\t\treturn sampleOctahedral(fromSpherical(sph), mipLevel);\n\t}\n#endif\nvec3 getDirectionCubemap() {\n\tvec2 st = vUv0 * 2.0 - 1.0;\n\tfloat face = targetFace();\n\tvec3 vec;\n\tif (face == 0.0) {\n\t\tvec = vec3(1, -st.y, -st.x);\n\t} else if (face == 1.0) {\n\t\tvec = vec3(-1, -st.y, st.x);\n\t} else if (face == 2.0) {\n\t\tvec = vec3(st.x, 1, st.y);\n\t} else if (face == 3.0) {\n\t\tvec = vec3(st.x, -1, -st.y);\n\t} else if (face == 4.0) {\n\t\tvec = vec3(st.x, -st.y, 1);\n\t} else {\n\t\tvec = vec3(-st.x, -st.y, -1);\n\t}\n\treturn normalize(modifySeams(vec, 1.0 / (1.0 - targetCubeSeamScale())));\n}\nmat3 matrixFromVector(vec3 n) {\n\tfloat a = 1.0 / (1.0 + n.z);\n\tfloat b = -n.x * n.y * a;\n\tvec3 b1 = vec3(1.0 - n.x * n.x * a, b, -n.x);\n\tvec3 b2 = vec3(b, 1.0 - n.y * n.y * a, -n.y);\n\treturn mat3(b1, b2, n);\n}\nmat3 matrixFromVectorSlow(vec3 n) {\n\tvec3 up = (1.0 - abs(n.y) <= 0.0000001) ? vec3(0.0, 0.0, n.y > 0.0 ? 1.0 : -1.0) : vec3(0.0, 1.0, 0.0);\n\tvec3 x = normalize(cross(up, n));\n\tvec3 y = cross(n, x);\n\treturn mat3(x, y, n);\n}\nvec4 reproject() {\n\tif (NUM_SAMPLES <= 1) {\n\t\treturn ENCODE_FUNC(DECODE_FUNC(SOURCE_FUNC(TARGET_FUNC())));\n\t} else {\n\t\tvec3 t = TARGET_FUNC();\n\t\tvec3 tu = dFdx(t);\n\t\tvec3 tv = dFdy(t);\n\t\tvec3 result = vec3(0.0);\n\t\tfor (float u = 0.0; u < NUM_SAMPLES_SQRT; ++u) {\n\t\t\tfor (float v = 0.0; v < NUM_SAMPLES_SQRT; ++v) {\n\t\t\t\tresult += DECODE_FUNC(SOURCE_FUNC(normalize(t +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttu * (u / NUM_SAMPLES_SQRT - 0.5) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttv * (v / NUM_SAMPLES_SQRT - 0.5))));\n\t\t\t}\n\t\t}\n\t\treturn ENCODE_FUNC(result / (NUM_SAMPLES_SQRT * NUM_SAMPLES_SQRT));\n\t}\n}\nvec4 unpackFloat = vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0);\n#ifdef USE_SAMPLES_TEX\n\tvoid unpackSample(int i, out vec3 L, out float mipLevel) {\n\t\tfloat u = (float(i * 4) + 0.5) * samplesTexInverseSize.x;\n\t\tfloat v = (floor(u) + 0.5) * samplesTexInverseSize.y;\n\t\tvec4 raw;\n\t\traw.x = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.y = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.z = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.w = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat);\n\t\tL.xyz = raw.xyz * 2.0 - 1.0;\n\t\tmipLevel = raw.w * 8.0;\n\t}\n\tvec4 prefilterSamples() {\n\t\tmat3 vecSpace = matrixFromVectorSlow(TARGET_FUNC());\n\t\tvec3 L;\n\t\tfloat mipLevel;\n\t\tvec3 result = vec3(0.0);\n\t\tfloat totalWeight = 0.0;\n\t\tfor (int i = 0; i < NUM_SAMPLES; ++i) {\n\t\t\tunpackSample(i, L, mipLevel);\n\t\t\tresult += DECODE_FUNC(SOURCE_FUNC(vecSpace * L, mipLevel)) * L.z;\n\t\t\ttotalWeight += L.z;\n\t\t}\n\t\treturn ENCODE_FUNC(result / totalWeight);\n\t}\n\tvec4 prefilterSamplesUnweighted() {\n\t\tmat3 vecSpace = matrixFromVectorSlow(TARGET_FUNC());\n\t\tvec3 L;\n\t\tfloat mipLevel;\n\t\tvec3 result = vec3(0.0);\n\t\tfloat totalWeight = 0.0;\n\t\tfor (int i = 0; i < NUM_SAMPLES; ++i) {\n\t\t\tunpackSample(i, L, mipLevel);\n\t\t\tresult += DECODE_FUNC(SOURCE_FUNC(vecSpace * L, mipLevel));\n\t\t}\n\t\treturn ENCODE_FUNC(result / float(NUM_SAMPLES));\n\t}\n#endif\nvoid main(void) {\n\tgl_FragColor = PROCESS_FUNC();\n}\n`;\n\nexport { reprojectPS as default };\n", "var sampleCatmullRomPS = `\nvec4 SampleTextureCatmullRom(TEXTURE_ACCEPT(tex), vec2 uv, vec2 texSize) {\n\tvec2 samplePos = uv * texSize;\n\tvec2 texPos1 = floor(samplePos - 0.5) + 0.5;\n\tvec2 f = samplePos - texPos1;\n\tvec2 w0 = f * (-0.5 + f * (1.0 - 0.5 * f));\n\tvec2 w1 = 1.0 + f * f * (-2.5 + 1.5 * f);\n\tvec2 w2 = f * (0.5 + f * (2.0 - 1.5 * f));\n\tvec2 w3 = f * f * (-0.5 + 0.5 * f);\n\tvec2 w12 = w1 + w2;\n\tvec2 offset12 = w2 / (w1 + w2);\n\tvec2 texPos0 = (texPos1 - 1.0) / texSize;\n\tvec2 texPos3 = (texPos1 + 2.0) / texSize;\n\tvec2 texPos12 = (texPos1 + offset12) / texSize;\n\tvec4 result = vec4(0.0);\n\tresult += texture2DLodEXT(tex, vec2(texPos0.x, texPos0.y), 0.0) * w0.x * w0.y;\n\tresult += texture2DLodEXT(tex, vec2(texPos12.x, texPos0.y), 0.0) * w12.x * w0.y;\n\tresult += texture2DLodEXT(tex, vec2(texPos3.x, texPos0.y), 0.0) * w3.x * w0.y;\n\tresult += texture2DLodEXT(tex, vec2(texPos0.x, texPos12.y), 0.0) * w0.x * w12.y;\n\tresult += texture2DLodEXT(tex, vec2(texPos12.x, texPos12.y), 0.0) * w12.x * w12.y;\n\tresult += texture2DLodEXT(tex, vec2(texPos3.x, texPos12.y), 0.0) * w3.x * w12.y;\n\tresult += texture2DLodEXT(tex, vec2(texPos0.x, texPos3.y), 0.0) * w0.x * w3.y;\n\tresult += texture2DLodEXT(tex, vec2(texPos12.x, texPos3.y), 0.0) * w12.x * w3.y;\n\tresult += texture2DLodEXT(tex, vec2(texPos3.x, texPos3.y), 0.0) * w3.x * w3.y;\n\treturn result;\n}\n`;\n\nexport { sampleCatmullRomPS as default };\n", "var screenDepthPS = `\nuniform highp sampler2D uSceneDepthMap;\n#ifndef SCREENSIZE\n#define SCREENSIZE\nuniform vec4 uScreenSize;\n#endif\n#ifndef VIEWMATRIX\n#define VIEWMATRIX\nuniform mat4 matrix_view;\n#endif\n#ifndef LINEARIZE_DEPTH\n#ifndef CAMERAPLANES\n#define CAMERAPLANES\nuniform vec4 camera_params;\n#endif\n#define LINEARIZE_DEPTH\n#ifdef GL2\nfloat linearizeDepth(float z) {\n\tif (camera_params.w == 0.0)\n\t\treturn (camera_params.z * camera_params.y) / (camera_params.y + z * (camera_params.z - camera_params.y));\n\telse\n\t\treturn camera_params.z + z * (camera_params.y - camera_params.z);\n}\n#else\n#ifndef UNPACKFLOAT\n#define UNPACKFLOAT\nfloat unpackFloat(vec4 rgbaDepth) {\n\tconst vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n\treturn dot(rgbaDepth, bitShift);\n}\n#endif\n#endif\n#endif\nfloat getLinearScreenDepth(vec2 uv) {\n\t#ifdef GL2\n\t\treturn linearizeDepth(texture2D(uSceneDepthMap, uv).r);\n\t#else\n\t\treturn unpackFloat(texture2D(uSceneDepthMap, uv)) * camera_params.y;\n\t#endif\n}\n#ifndef VERTEXSHADER\nfloat getLinearScreenDepth() {\n\tvec2 uv = gl_FragCoord.xy * uScreenSize.zw;\n\treturn getLinearScreenDepth(uv);\n}\n#endif\nfloat getLinearDepth(vec3 pos) {\n\treturn -(matrix_view * vec4(pos, 1.0)).z;\n}\n`;\n\nexport { screenDepthPS as default };\n", "var shadowCascadesPS = `\nconst float maxCascades = 4.0;\nmat4 cascadeShadowMat;\nvoid getShadowCascadeMatrix(mat4 shadowMatrixPalette[4], float shadowCascadeDistances[4], float shadowCascadeCount) {\n\tfloat depth = 1.0 / gl_FragCoord.w;\n\tfloat cascadeIndex = 0.0;\n\tfor (float i = 0.0; i < maxCascades; i++) {\n\t\tif (depth < shadowCascadeDistances[int(i)]) {\n\t\t\tcascadeIndex = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tcascadeIndex = min(cascadeIndex, shadowCascadeCount - 1.0);\n\t#ifdef GL2\n\t\tcascadeShadowMat = shadowMatrixPalette[int(cascadeIndex)];\n\t#else\n\t\tif (cascadeIndex == 0.0) {\n\t\t\tcascadeShadowMat = shadowMatrixPalette[0];\n\t\t}\n\t\telse if (cascadeIndex == 1.0) {\n\t\t\tcascadeShadowMat = shadowMatrixPalette[1];\n\t\t}\n\t\telse if (cascadeIndex == 2.0) {\n\t\t\tcascadeShadowMat = shadowMatrixPalette[2];\n\t\t}\n\t\telse {\n\t\t\tcascadeShadowMat = shadowMatrixPalette[3];\n\t\t}\n\t#endif\n}\nvoid fadeShadow(float shadowCascadeDistances[4]) {\t\t\t\t \n\tfloat depth = 1.0 / gl_FragCoord.w;\n\tif (depth > shadowCascadeDistances[int(maxCascades - 1.0)]) {\n\t\tdShadowCoord.z = -9999999.0;\n\t}\n}\n`;\n\nexport { shadowCascadesPS as default };\n", "var shadowEVSMPS = `\nfloat VSM$(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) {\n\tvec3 moments = texture2D(tex, texCoords).xyz;\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfloat getShadowVSM$(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\treturn VSM$(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfloat getShadowSpotVSM$(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\treturn VSM$(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, length(lightDir) * shadowParams.w + shadowParams.z, shadowParams.y, exponent);\n}\n`;\n\nexport { shadowEVSMPS as default };\n", "var shadowEVSMnPS = `\nfloat VSM$(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) {\n\tfloat pixelSize = 1.0 / resolution;\n\ttexCoords -= vec2(pixelSize);\n\tvec3 s00 = texture2D(tex, texCoords).xyz;\n\tvec3 s10 = texture2D(tex, texCoords + vec2(pixelSize, 0)).xyz;\n\tvec3 s01 = texture2D(tex, texCoords + vec2(0, pixelSize)).xyz;\n\tvec3 s11 = texture2D(tex, texCoords + vec2(pixelSize)).xyz;\n\tvec2 fr = fract(texCoords * resolution);\n\tvec3 h0 = mix(s00, s10, fr.x);\n\tvec3 h1 = mix(s01, s11, fr.x);\n\tvec3 moments = mix(h0, h1, fr.y);\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfloat getShadowVSM$(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\treturn VSM$(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfloat getShadowSpotVSM$(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\treturn VSM$(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, length(lightDir) * shadowParams.w + shadowParams.z, shadowParams.y, exponent);\n}\n`;\n\nexport { shadowEVSMnPS as default };\n", "var shadowPCSSPS = `\n#define PCSS_SAMPLE_COUNT 16\nuniform float pcssDiskSamples[PCSS_SAMPLE_COUNT];\nuniform float pcssSphereSamples[PCSS_SAMPLE_COUNT];\nvec2 vogelDisk(int sampleIndex, float count, float phi, float r) {\n\tconst float GoldenAngle = 2.4;\n\tfloat theta = float(sampleIndex) * GoldenAngle + phi;\n\tfloat sine = sin(theta);\n\tfloat cosine = cos(theta);\n\treturn vec2(r * cosine, r * sine);\n}\nvec3 vogelSphere(int sampleIndex, float count, float phi, float r) {\n\tconst float GoldenAngle = 2.4;\n\tfloat theta = float(sampleIndex) * GoldenAngle + phi;\n\tfloat weight = float(sampleIndex) / count;\n\treturn vec3(cos(theta) * r, weight, sin(theta) * r);\n}\nfloat noise(vec2 screenPos) {\n\tconst float PHI = 1.61803398874989484820459;\n\treturn fract(sin(dot(screenPos * PHI, screenPos)) * screenPos.x);\n}\n#ifndef UNPACKFLOAT\n#define UNPACKFLOAT\nfloat unpackFloat(vec4 rgbaDepth) {\n\tconst vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n\treturn dot(rgbaDepth, bitShift);\n}\n#endif\nfloat viewSpaceDepth(float depth, mat4 invProjection) {\n\tfloat z = depth * 2.0 - 1.0;\n\tvec4 clipSpace = vec4(0.0, 0.0, z, 1.0);\n\tvec4 viewSpace = invProjection * clipSpace;\n\treturn viewSpace.z;\n}\nfloat PCSSBlockerDistance(TEXTURE_ACCEPT(shadowMap), vec2 sampleCoords[PCSS_SAMPLE_COUNT], vec2 shadowCoords, vec2 searchSize, float z) {\n\tfloat blockers = 0.0;\n\tfloat averageBlocker = 0.0;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tvec2 offset = sampleCoords[i] * searchSize;\n\t\tvec2 sampleUV = shadowCoords + offset;\n\t#ifdef GL2\n\t\tfloat blocker = textureLod(shadowMap, sampleUV, 0.0).r;\n\t#else\n\t\tfloat blocker = unpackFloat(texture2D(shadowMap, sampleUV));\n\t#endif\t\t\n\t\tfloat isBlocking = step(blocker, z);\n\t\tblockers += isBlocking;\n\t\taverageBlocker += blocker * isBlocking;\n\t}\n\tif (blockers > 0.0)\n\t\treturn averageBlocker /= blockers;\n\treturn -1.0;\n}\nfloat PCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoords, vec4 cameraParams, vec2 shadowSearchArea) {\n\tfloat receiverDepth = shadowCoords.z;\n#ifndef GL2\n\treceiverDepth *= 1.0 / (cameraParams.y - cameraParams.z);\n#endif\n\tvec2 samplePoints[PCSS_SAMPLE_COUNT];\n\tfloat noise = noise( gl_FragCoord.xy ) * 2.0 * PI;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tfloat pcssPresample = pcssDiskSamples[i];\n\t\tsamplePoints[i] = vogelDisk(i, float(PCSS_SAMPLE_COUNT), noise, pcssPresample);\n\t}\n\tfloat averageBlocker = PCSSBlockerDistance(TEXTURE_PASS(shadowMap), samplePoints, shadowCoords.xy, shadowSearchArea, receiverDepth);\n\tif (averageBlocker == -1.0) {\n\t\treturn 1.0;\n\t} else {\n\t\tvec2 filterRadius = ((receiverDepth - averageBlocker) / averageBlocker) * shadowSearchArea * cameraParams.x;\n\t\tfloat shadow = 0.0;\n\t\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i ++)\n\t\t{\n\t\t\tvec2 sampleUV = samplePoints[i] * filterRadius;\n\t\t\tsampleUV = shadowCoords.xy + sampleUV;\n\t\t#ifdef GL2\n\t\t\tfloat depth = textureLod(shadowMap, sampleUV, 0.0).r;\n\t\t#else\n\t\t\tfloat depth = unpackFloat(texture2D(shadowMap, sampleUV));\n\t\t#endif\n\t\t\tshadow += step(receiverDepth, depth);\n\t\t}\n\t\treturn shadow / float(PCSS_SAMPLE_COUNT);\n\t} \n}\nfloat PCSSCubeBlockerDistance(samplerCube shadowMap, vec3 lightDirNorm, vec3 samplePoints[PCSS_SAMPLE_COUNT], float z, float shadowSearchArea) {\n\tfloat blockers = 0.0;\n\tfloat averageBlocker = 0.0;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tvec3 sampleDir = lightDirNorm + samplePoints[i] * shadowSearchArea;\n\t\tsampleDir = normalize(sampleDir);\n\t#ifdef GL2\n\t\tfloat blocker = textureCubeLodEXT(shadowMap, sampleDir, 0.0).r;\n\t#else\n\t\tfloat blocker = unpackFloat(textureCube(shadowMap, sampleDir));\n\t#endif\n\t\tfloat isBlocking = step(blocker, z);\n\t\tblockers += isBlocking;\n\t\taverageBlocker += blocker * isBlocking;\n\t}\n\tif (blockers > 0.0)\n\t\treturn averageBlocker /= float(blockers);\n\treturn -1.0;\n}\nfloat PCSSCube(samplerCube shadowMap, vec4 shadowParams, vec3 shadowCoords, vec4 cameraParams, float shadowSearchArea, vec3 lightDir) {\n\t\n\tvec3 samplePoints[PCSS_SAMPLE_COUNT];\n\tfloat noise = noise( gl_FragCoord.xy ) * 2.0 * PI;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tfloat r = pcssSphereSamples[i];\n\t\tsamplePoints[i] = vogelSphere(i, float(PCSS_SAMPLE_COUNT), noise, r);\n\t}\n\tfloat receiverDepth = length(lightDir) * shadowParams.w + shadowParams.z;\n\tvec3 lightDirNorm = normalize(lightDir);\n\t\n\tfloat averageBlocker = PCSSCubeBlockerDistance(shadowMap, lightDirNorm, samplePoints, receiverDepth, shadowSearchArea);\n\tif (averageBlocker == -1.0) {\n\t\treturn 1.0;\n\t} else {\n\t\tfloat filterRadius = ((receiverDepth - averageBlocker) / averageBlocker) * shadowSearchArea;\n\t\tfloat shadow = 0.0;\n\t\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++)\n\t\t{\n\t\t\tvec3 offset = samplePoints[i] * filterRadius;\n\t\t\tvec3 sampleDir = lightDirNorm + offset;\n\t\t\tsampleDir = normalize(sampleDir);\n\t\t\t#ifdef GL2\n\t\t\t\tfloat depth = textureCubeLodEXT(shadowMap, sampleDir, 0.0).r;\n\t\t\t#else\n\t\t\t\tfloat depth = unpackFloat(textureCube(shadowMap, sampleDir));\n\t\t\t#endif\n\t\t\tshadow += step(receiverDepth, depth);\n\t\t}\n\t\treturn shadow / float(PCSS_SAMPLE_COUNT);\n\t}\n}\nfloat getShadowPointPCSS(samplerCube shadowMap, vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) {\n\treturn PCSSCube(shadowMap, shadowParams, shadowCoord, cameraParams, shadowSearchArea.x, lightDir);\n}\nfloat getShadowSpotPCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) {\n\treturn PCSS(TEXTURE_PASS(shadowMap), shadowCoord, cameraParams, shadowSearchArea);\n}\nfloat getShadowPCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) {\n\treturn PCSS(TEXTURE_PASS(shadowMap), shadowCoord, cameraParams, shadowSearchArea);\n}\n`;\n\nexport { shadowPCSSPS as default };\n", "var shadowSampleCoordPS = `\nvec3 getShadowSampleCoord$LIGHT(mat4 shadowTransform, vec4 shadowParams, vec3 worldPosition, vec3 lightPos, inout vec3 lightDir, vec3 lightDirNorm, vec3 normal) {\n\tvec3 surfacePosition = worldPosition;\n#ifdef SHADOW_SAMPLE_POINT\n\t#ifdef SHADOW_SAMPLE_NORMAL_OFFSET\n\t\tfloat distScale = length(lightDir);\n\t\tsurfacePosition = worldPosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\tlightDir = surfacePosition - lightPos;\n\t\treturn lightDir;\n\t#endif\n#else\n\t#ifdef SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t#ifdef SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\tsurfacePosition = worldPosition + normal * shadowParams.y;\n\t\t#endif\n\t#else\n\t\t#ifdef SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t#ifdef SHADOW_SAMPLE_ORTHO\n\t\t\t\tfloat distScale = 1.0;\n\t\t\t#else\n\t\t\t\tfloat distScale = abs(dot(vPositionW - lightPos, lightDirNorm));\n\t\t\t#endif\n\t\t\tsurfacePosition = worldPosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t#endif\n\t#endif\n\tvec4 positionInShadowSpace = shadowTransform * vec4(surfacePosition, 1.0);\n\t#ifdef SHADOW_SAMPLE_ORTHO\n\t\tpositionInShadowSpace.z = saturate(positionInShadowSpace.z) - 0.0001;\n\t#else\n\t\t#ifdef SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\tpositionInShadowSpace.xyz /= positionInShadowSpace.w;\n\t\t#else\n\t\t\tpositionInShadowSpace.xy /= positionInShadowSpace.w;\n\t\t\tpositionInShadowSpace.z = length(lightDir) * shadowParams.w;\n\t\t#endif\n\t#endif\n\t#ifdef SHADOW_SAMPLE_Z_BIAS\n\t\tpositionInShadowSpace.z += getShadowBias(shadowParams.x, shadowParams.z);\n\t#endif\n\tsurfacePosition = positionInShadowSpace.xyz;\n#endif\n\treturn surfacePosition;\n}\n`;\n\nexport { shadowSampleCoordPS as default };\n", "var shadowStandardPS = `\nvec3 lessThan2(vec3 a, vec3 b) {\n\treturn clamp((b - a)*1000.0, 0.0, 1.0);\n}\n#ifndef UNPACKFLOAT\n#define UNPACKFLOAT\n\tfloat unpackFloat(vec4 rgbaDepth) {\n\t\tconst vec4 bitShift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n\t\treturn dot(rgbaDepth, bitShift);\n\t}\n#endif\n#ifdef GL2\nfloat _getShadowPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec3 shadowParams) {\n\tfloat z = shadowCoord.z;\n\tvec2 uv = shadowCoord.xy * shadowParams.x;\n\tfloat shadowMapSizeInv = 1.0 / shadowParams.x;\n\tvec2 base_uv = floor(uv + 0.5);\n\tfloat s = (uv.x + 0.5 - base_uv.x);\n\tfloat t = (uv.y + 0.5 - base_uv.y);\n\tbase_uv -= vec2(0.5);\n\tbase_uv *= shadowMapSizeInv;\n\tfloat sum = 0.0;\n\tfloat uw0 = (3.0 - 2.0 * s);\n\tfloat uw1 = (1.0 + 2.0 * s);\n\tfloat u0 = (2.0 - s) / uw0 - 1.0;\n\tfloat u1 = s / uw1 + 1.0;\n\tfloat vw0 = (3.0 - 2.0 * t);\n\tfloat vw1 = (1.0 + 2.0 * t);\n\tfloat v0 = (2.0 - t) / vw0 - 1.0;\n\tfloat v1 = t / vw1 + 1.0;\n\tu0 = u0 * shadowMapSizeInv + base_uv.x;\n\tv0 = v0 * shadowMapSizeInv + base_uv.y;\n\tu1 = u1 * shadowMapSizeInv + base_uv.x;\n\tv1 = v1 * shadowMapSizeInv + base_uv.y;\n\tsum += uw0 * vw0 * textureShadow(shadowMap, vec3(u0, v0, z));\n\tsum += uw1 * vw0 * textureShadow(shadowMap, vec3(u1, v0, z));\n\tsum += uw0 * vw1 * textureShadow(shadowMap, vec3(u0, v1, z));\n\tsum += uw1 * vw1 * textureShadow(shadowMap, vec3(u1, v1, z));\n\tsum *= 1.0f / 16.0;\n\treturn sum;\n}\nfloat getShadowPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\nfloat getShadowSpotPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\nfloat getShadowPCF1x1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn textureShadow(shadowMap, shadowCoord);\n}\nfloat getShadowSpotPCF1x1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn textureShadow(shadowMap, shadowCoord);\n}\n#else\nfloat _xgetShadowPCF3x3(mat3 depthKernel, vec3 shadowCoord, sampler2D shadowMap, vec3 shadowParams) {\n\tmat3 shadowKernel;\n\tvec3 shadowZ = vec3(shadowCoord.z);\n\tshadowKernel[0] = vec3(greaterThan(depthKernel[0], shadowZ));\n\tshadowKernel[1] = vec3(greaterThan(depthKernel[1], shadowZ));\n\tshadowKernel[2] = vec3(greaterThan(depthKernel[2], shadowZ));\n\tvec2 fractionalCoord = fract( shadowCoord.xy * shadowParams.x );\n\tshadowKernel[0] = mix(shadowKernel[0], shadowKernel[1], fractionalCoord.x);\n\tshadowKernel[1] = mix(shadowKernel[1], shadowKernel[2], fractionalCoord.x);\n\tvec4 shadowValues;\n\tshadowValues.x = mix(shadowKernel[0][0], shadowKernel[0][1], fractionalCoord.y);\n\tshadowValues.y = mix(shadowKernel[0][1], shadowKernel[0][2], fractionalCoord.y);\n\tshadowValues.z = mix(shadowKernel[1][0], shadowKernel[1][1], fractionalCoord.y);\n\tshadowValues.w = mix(shadowKernel[1][1], shadowKernel[1][2], fractionalCoord.y);\n\treturn dot( shadowValues, vec4( 1.0 ) ) * 0.25;\n}\nfloat _getShadowPCF3x3(sampler2D shadowMap, vec3 shadowCoord, vec3 shadowParams) {\n\tfloat xoffset = 1.0 / shadowParams.x;\n\tfloat dx0 = -xoffset;\n\tfloat dx1 = xoffset;\n\tmat3 depthKernel;\n\tdepthKernel[0][0] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx0, dx0)));\n\tdepthKernel[0][1] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx0, 0.0)));\n\tdepthKernel[0][2] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx0, dx1)));\n\tdepthKernel[1][0] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(0.0, dx0)));\n\tdepthKernel[1][1] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy));\n\tdepthKernel[1][2] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(0.0, dx1)));\n\tdepthKernel[2][0] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx1, dx0)));\n\tdepthKernel[2][1] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx1, 0.0)));\n\tdepthKernel[2][2] = unpackFloat(textureShadow(shadowMap, shadowCoord.xy + vec2(dx1, dx1)));\n\treturn _xgetShadowPCF3x3(depthKernel, shadowCoord, shadowMap, shadowParams);\n}\nfloat getShadowPCF3x3(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF3x3(shadowMap, shadowCoord, shadowParams.xyz);\n}\nfloat getShadowSpotPCF3x3(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF3x3(shadowMap, shadowCoord, shadowParams.xyz);\n}\nfloat _getShadowPCF1x1(sampler2D shadowMap, vec3 shadowCoord) {\n\tfloat shadowSample = unpackFloat(textureShadow(shadowMap, shadowCoord.xy));\n\treturn shadowSample > shadowCoord.z ? 1.0 : 0.0;\n}\nfloat getShadowPCF1x1(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF1x1(shadowMap, shadowCoord);\n}\nfloat getShadowSpotPCF1x1(sampler2D shadowMap, vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF1x1(shadowMap, shadowCoord);\n}\n#endif\n#ifndef WEBGPU\nfloat _getShadowPoint(samplerCube shadowMap, vec4 shadowParams, vec3 dir) {\n\tvec3 tc = normalize(dir);\n\tvec3 tcAbs = abs(tc);\n\tvec4 dirX = vec4(1,0,0, tc.x);\n\tvec4 dirY = vec4(0,1,0, tc.y);\n\tfloat majorAxisLength = tc.z;\n\tif ((tcAbs.x > tcAbs.y) && (tcAbs.x > tcAbs.z)) {\n\t\tdirX = vec4(0,0,1, tc.z);\n\t\tdirY = vec4(0,1,0, tc.y);\n\t\tmajorAxisLength = tc.x;\n\t} else if ((tcAbs.y > tcAbs.x) && (tcAbs.y > tcAbs.z)) {\n\t\tdirX = vec4(1,0,0, tc.x);\n\t\tdirY = vec4(0,0,1, tc.z);\n\t\tmajorAxisLength = tc.y;\n\t}\n\tfloat shadowParamsInFaceSpace = ((1.0/shadowParams.x) * 2.0) * abs(majorAxisLength);\n\tvec3 xoffset = (dirX.xyz * shadowParamsInFaceSpace);\n\tvec3 yoffset = (dirY.xyz * shadowParamsInFaceSpace);\n\tvec3 dx0 = -xoffset;\n\tvec3 dy0 = -yoffset;\n\tvec3 dx1 = xoffset;\n\tvec3 dy1 = yoffset;\n\tmat3 shadowKernel;\n\tmat3 depthKernel;\n\tdepthKernel[0][0] = unpackFloat(textureCube(shadowMap, tc + dx0 + dy0));\n\tdepthKernel[0][1] = unpackFloat(textureCube(shadowMap, tc + dx0));\n\tdepthKernel[0][2] = unpackFloat(textureCube(shadowMap, tc + dx0 + dy1));\n\tdepthKernel[1][0] = unpackFloat(textureCube(shadowMap, tc + dy0));\n\tdepthKernel[1][1] = unpackFloat(textureCube(shadowMap, tc));\n\tdepthKernel[1][2] = unpackFloat(textureCube(shadowMap, tc + dy1));\n\tdepthKernel[2][0] = unpackFloat(textureCube(shadowMap, tc + dx1 + dy0));\n\tdepthKernel[2][1] = unpackFloat(textureCube(shadowMap, tc + dx1));\n\tdepthKernel[2][2] = unpackFloat(textureCube(shadowMap, tc + dx1 + dy1));\n\tvec3 shadowZ = vec3(length(dir) * shadowParams.w + shadowParams.z);\n\tshadowKernel[0] = vec3(lessThan2(depthKernel[0], shadowZ));\n\tshadowKernel[1] = vec3(lessThan2(depthKernel[1], shadowZ));\n\tshadowKernel[2] = vec3(lessThan2(depthKernel[2], shadowZ));\n\tvec2 uv = (vec2(dirX.w, dirY.w) / abs(majorAxisLength)) * 0.5;\n\tvec2 fractionalCoord = fract( uv * shadowParams.x );\n\tshadowKernel[0] = mix(shadowKernel[0], shadowKernel[1], fractionalCoord.x);\n\tshadowKernel[1] = mix(shadowKernel[1], shadowKernel[2], fractionalCoord.x);\n\tvec4 shadowValues;\n\tshadowValues.x = mix(shadowKernel[0][0], shadowKernel[0][1], fractionalCoord.y);\n\tshadowValues.y = mix(shadowKernel[0][1], shadowKernel[0][2], fractionalCoord.y);\n\tshadowValues.z = mix(shadowKernel[1][0], shadowKernel[1][1], fractionalCoord.y);\n\tshadowValues.w = mix(shadowKernel[1][1], shadowKernel[1][2], fractionalCoord.y);\n\treturn 1.0 - dot( shadowValues, vec4( 1.0 ) ) * 0.25;\n}\nfloat getShadowPointPCF3x3(samplerCube shadowMap, vec3 shadowCoord, vec4 shadowParams, vec3 lightDir) {\n\treturn _getShadowPoint(shadowMap, shadowParams, lightDir);\n}\n#endif\n`;\n\nexport { shadowStandardPS as default };\n", "var shadowStandardGL2PS = `\nfloat _getShadowPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec3 shadowParams) {\n\tfloat z = shadowCoord.z;\n\tvec2 uv = shadowCoord.xy * shadowParams.x;\n\tfloat shadowMapSizeInv = 1.0 / shadowParams.x;\n\tvec2 base_uv = floor(uv + 0.5);\n\tfloat s = (uv.x + 0.5 - base_uv.x);\n\tfloat t = (uv.y + 0.5 - base_uv.y);\n\tbase_uv -= vec2(0.5);\n\tbase_uv *= shadowMapSizeInv;\n\tfloat uw0 = (4.0 - 3.0 * s);\n\tfloat uw1 = 7.0;\n\tfloat uw2 = (1.0 + 3.0 * s);\n\tfloat u0 = (3.0 - 2.0 * s) / uw0 - 2.0;\n\tfloat u1 = (3.0 + s) / uw1;\n\tfloat u2 = s / uw2 + 2.0;\n\tfloat vw0 = (4.0 - 3.0 * t);\n\tfloat vw1 = 7.0;\n\tfloat vw2 = (1.0 + 3.0 * t);\n\tfloat v0 = (3.0 - 2.0 * t) / vw0 - 2.0;\n\tfloat v1 = (3.0 + t) / vw1;\n\tfloat v2 = t / vw2 + 2.0;\n\tfloat sum = 0.0;\n\tu0 = u0 * shadowMapSizeInv + base_uv.x;\n\tv0 = v0 * shadowMapSizeInv + base_uv.y;\n\tu1 = u1 * shadowMapSizeInv + base_uv.x;\n\tv1 = v1 * shadowMapSizeInv + base_uv.y;\n\tu2 = u2 * shadowMapSizeInv + base_uv.x;\n\tv2 = v2 * shadowMapSizeInv + base_uv.y;\n\tsum += uw0 * vw0 * textureShadow(shadowMap, vec3(u0, v0, z));\n\tsum += uw1 * vw0 * textureShadow(shadowMap, vec3(u1, v0, z));\n\tsum += uw2 * vw0 * textureShadow(shadowMap, vec3(u2, v0, z));\n\tsum += uw0 * vw1 * textureShadow(shadowMap, vec3(u0, v1, z));\n\tsum += uw1 * vw1 * textureShadow(shadowMap, vec3(u1, v1, z));\n\tsum += uw2 * vw1 * textureShadow(shadowMap, vec3(u2, v1, z));\n\tsum += uw0 * vw2 * textureShadow(shadowMap, vec3(u0, v2, z));\n\tsum += uw1 * vw2 * textureShadow(shadowMap, vec3(u1, v2, z));\n\tsum += uw2 * vw2 * textureShadow(shadowMap, vec3(u2, v2, z));\n\tsum *= 1.0f / 144.0;\n\tsum = saturate(sum);\n\treturn sum;\n}\nfloat getShadowPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\nfloat getShadowSpotPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\n`;\n\nexport { shadowStandardGL2PS as default };\n", "var shadowVSM8PS = `\nfloat calculateVSM8(vec3 moments, float Z, float vsmBias) {\n\tfloat VSMBias = vsmBias;\n\tfloat depthScale = VSMBias * Z;\n\tfloat minVariance1 = depthScale * depthScale;\n\treturn chebyshevUpperBound(moments.xy, Z, minVariance1, 0.1);\n}\nfloat decodeFloatRG(vec2 rg) {\n\treturn rg.y*(1.0/255.0) + rg.x;\n}\nfloat VSM8(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) {\n\tvec4 c = texture2D(tex, texCoords);\n\tvec3 moments = vec3(decodeFloatRG(c.xy), decodeFloatRG(c.zw), 0.0);\n\treturn calculateVSM8(moments, Z, vsmBias);\n}\nfloat getShadowVSM8(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\treturn VSM8(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, 0.0);\n}\nfloat getShadowSpotVSM8(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\treturn VSM8(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, length(lightDir) * shadowParams.w + shadowParams.z, shadowParams.y, 0.0);\n}\n`;\n\nexport { shadowVSM8PS as default };\n", "var shadowVSM_commonPS = `\nfloat linstep(float a, float b, float v) {\n\treturn saturate((v - a) / (b - a));\n}\nfloat reduceLightBleeding(float pMax, float amount) {\n\t return linstep(amount, 1.0, pMax);\n}\nfloat chebyshevUpperBound(vec2 moments, float mean, float minVariance, float lightBleedingReduction) {\n\tfloat variance = moments.y - (moments.x * moments.x);\n\tvariance = max(variance, minVariance);\n\tfloat d = mean - moments.x;\n\tfloat pMax = variance / (variance + (d * d));\n\tpMax = reduceLightBleeding(pMax, lightBleedingReduction);\n\treturn (mean <= moments.x ? 1.0 : pMax);\n}\nfloat calculateEVSM(vec3 moments, float Z, float vsmBias, float exponent) {\n\tZ = 2.0 * Z - 1.0;\n\tfloat warpedDepth = exp(exponent * Z);\n\tmoments.xy += vec2(warpedDepth, warpedDepth*warpedDepth) * (1.0 - moments.z);\n\tfloat VSMBias = vsmBias;\n\tfloat depthScale = VSMBias * exponent * warpedDepth;\n\tfloat minVariance1 = depthScale * depthScale;\n\treturn chebyshevUpperBound(moments.xy, warpedDepth, minVariance1, 0.1);\n}\n`;\n\nexport { shadowVSM_commonPS as default };\n", "var skinBatchConstVS = `\nattribute float vertex_boneIndices;\nuniform vec4 matrix_pose[BONE_LIMIT * 3];\nmat4 getBoneMatrix(const in float i) {\n\tvec4 v1 = matrix_pose[int(3.0 * i)];\n\tvec4 v2 = matrix_pose[int(3.0 * i + 1.0)];\n\tvec4 v3 = matrix_pose[int(3.0 * i + 2.0)];\n\treturn mat4(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, 1\n\t);\n}\n`;\n\nexport { skinBatchConstVS as default };\n", "var skinBatchTexVS = `\nattribute float vertex_boneIndices;\nuniform highp sampler2D texture_poseMap;\nuniform vec4 texture_poseMapSize;\nmat4 getBoneMatrix(const in float i) {\n\tfloat j = i * 3.0;\n\tfloat dx = texture_poseMapSize.z;\n\tfloat dy = texture_poseMapSize.w;\n\tfloat y = floor(j * dx);\n\tfloat x = j - (y * texture_poseMapSize.x);\n\ty = dy * (y + 0.5);\n\tvec4 v1 = texture2D(texture_poseMap, vec2(dx * (x + 0.5), y));\n\tvec4 v2 = texture2D(texture_poseMap, vec2(dx * (x + 1.5), y));\n\tvec4 v3 = texture2D(texture_poseMap, vec2(dx * (x + 2.5), y));\n\treturn mat4(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, 1\n\t);\n}\n`;\n\nexport { skinBatchTexVS as default };\n", "var skinConstVS = `\nattribute vec4 vertex_boneWeights;\nattribute vec4 vertex_boneIndices;\nuniform vec4 matrix_pose[BONE_LIMIT * 3];\nvoid getBoneMatrix(const in float i, out vec4 v1, out vec4 v2, out vec4 v3) {\n\tv1 = matrix_pose[int(3.0 * i)];\n\tv2 = matrix_pose[int(3.0 * i + 1.0)];\n\tv3 = matrix_pose[int(3.0 * i + 2.0)];\n}\nmat4 getSkinMatrix(const in vec4 indices, const in vec4 weights) {\n\tvec4 a1, a2, a3;\n\tgetBoneMatrix(indices.x, a1, a2, a3);\n\tvec4 b1, b2, b3;\n\tgetBoneMatrix(indices.y, b1, b2, b3);\n\tvec4 c1, c2, c3;\n\tgetBoneMatrix(indices.z, c1, c2, c3);\n\tvec4 d1, d2, d3;\n\tgetBoneMatrix(indices.w, d1, d2, d3);\n\tvec4 v1 = a1 * weights.x + b1 * weights.y + c1 * weights.z + d1 * weights.w;\n\tvec4 v2 = a2 * weights.x + b2 * weights.y + c2 * weights.z + d2 * weights.w;\n\tvec4 v3 = a3 * weights.x + b3 * weights.y + c3 * weights.z + d3 * weights.w;\n\tfloat one = dot(weights, vec4(1.0));\n\treturn mat4(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, one\n\t);\n}\n`;\n\nexport { skinConstVS as default };\n", "var skinTexVS = `\nattribute vec4 vertex_boneWeights;\nattribute vec4 vertex_boneIndices;\nuniform highp sampler2D texture_poseMap;\nuniform vec4 texture_poseMapSize;\nvoid getBoneMatrix(const in float index, out vec4 v1, out vec4 v2, out vec4 v3) {\n\tfloat i = float(index);\n\tfloat j = i * 3.0;\n\tfloat dx = texture_poseMapSize.z;\n\tfloat dy = texture_poseMapSize.w;\n\t\n\tfloat y = floor(j * dx);\n\tfloat x = j - (y * texture_poseMapSize.x);\n\ty = dy * (y + 0.5);\n\tv1 = texture2D(texture_poseMap, vec2(dx * (x + 0.5), y));\n\tv2 = texture2D(texture_poseMap, vec2(dx * (x + 1.5), y));\n\tv3 = texture2D(texture_poseMap, vec2(dx * (x + 2.5), y));\n}\nmat4 getSkinMatrix(const in vec4 indices, const in vec4 weights) {\n\tvec4 a1, a2, a3;\n\tgetBoneMatrix(indices.x, a1, a2, a3);\n\tvec4 b1, b2, b3;\n\tgetBoneMatrix(indices.y, b1, b2, b3);\n\tvec4 c1, c2, c3;\n\tgetBoneMatrix(indices.z, c1, c2, c3);\n\tvec4 d1, d2, d3;\n\tgetBoneMatrix(indices.w, d1, d2, d3);\n\tvec4 v1 = a1 * weights.x + b1 * weights.y + c1 * weights.z + d1 * weights.w;\n\tvec4 v2 = a2 * weights.x + b2 * weights.y + c2 * weights.z + d2 * weights.w;\n\tvec4 v3 = a3 * weights.x + b3 * weights.y + c3 * weights.z + d3 * weights.w;\n\tfloat one = dot(weights, vec4(1.0));\n\treturn mat4(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, one\n\t);\n}\n`;\n\nexport { skinTexVS as default };\n", "var skyboxEnvPS = `\nvarying vec3 vViewDir;\nuniform sampler2D texture_envAtlas;\nuniform float mipLevel;\nvoid main(void) {\n\tvec3 dir = vViewDir * vec3(-1.0, 1.0, 1.0);\n\tvec2 uv = toSphericalUv(normalize(dir));\n\tvec3 linear = SKYBOX_DECODE_FNC(texture2D(texture_envAtlas, mapRoughnessUv(uv, mipLevel)));\n\tgl_FragColor = vec4(gammaCorrectOutput(toneMap(processEnvironment(linear))), 1.0);\n}\n`;\n\nexport { skyboxEnvPS as default };\n", "var skyboxHDRPS = `\nvarying vec3 vViewDir;\nuniform samplerCube texture_cubeMap;\n#ifdef SKYMESH\n\tvarying vec3 vWorldPos;\n\tuniform mat3 cubeMapRotationMatrix;\n\tuniform vec3 projectedSkydomeCenter;\n#endif\nvoid main(void) {\n\t#ifdef SKYMESH\n\t\tvec3 envDir = normalize(vWorldPos - projectedSkydomeCenter);\n\t\tvec3 dir = envDir * cubeMapRotationMatrix;\n\t#else\n\t\tvec3 dir = vViewDir;\n\t#endif\n\tdir.x *= -1.0;\n\tvec3 linear = SKYBOX_DECODE_FNC(textureCube(texture_cubeMap, fixSeamsStatic(dir, SKYBOX_MIP)));\n\tgl_FragColor = vec4(gammaCorrectOutput(toneMap(processEnvironment(linear))), 1.0);\n}\n`;\n\nexport { skyboxHDRPS as default };\n", "var skyboxVS = `\nattribute vec3 aPosition;\n#ifndef VIEWMATRIX\n#define VIEWMATRIX\nuniform mat4 matrix_view;\n#endif\nuniform mat4 matrix_projectionSkybox;\nuniform mat3 cubeMapRotationMatrix;\nvarying vec3 vViewDir;\n#ifdef SKYMESH\n\tuniform mat4 matrix_model;\n\tvarying vec3 vWorldPos;\n#endif\nvoid main(void) {\n\tmat4 view = matrix_view;\n\t#ifdef SKYMESH\n\t\tvec4 worldPos = matrix_model * vec4(aPosition, 1.0);\n\t\tvWorldPos = worldPos.xyz;\n\t\tgl_Position = matrix_projectionSkybox * view * worldPos;\n\t#else\n\t\tview[3][0] = view[3][1] = view[3][2] = 0.0;\n\t\tgl_Position = matrix_projectionSkybox * view * vec4(aPosition, 1.0);\n\t\tvViewDir = aPosition * cubeMapRotationMatrix;\n\t#endif\n\tgl_Position.z = gl_Position.w - 1.0e-7;\n}\n`;\n\nexport { skyboxVS as default };\n", "var specularPS = `\n#ifdef MAPCOLOR\nuniform vec3 material_specular;\n#endif\nvoid getSpecularity() {\n\tvec3 specularColor = vec3(1,1,1);\n\t#ifdef MAPCOLOR\n\tspecularColor *= material_specular;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tspecularColor *= $DECODE(texture2DBias($SAMPLER, $UV, textureBias)).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tspecularColor *= saturate(vVertexColor.$VC);\n\t#endif\n\tdSpecularity = specularColor;\n}\n`;\n\nexport { specularPS as default };\n", "var sphericalPS = `\nconst float PI = 3.141592653589793;\nvec2 toSpherical(vec3 dir) {\n\treturn vec2(dir.xz == vec2(0.0) ? 0.0 : atan(dir.x, dir.z), asin(dir.y));\n}\nvec2 toSphericalUv(vec3 dir) {\n\tvec2 uv = toSpherical(dir) / vec2(PI * 2.0, PI) + 0.5;\n\treturn vec2(uv.x, 1.0 - uv.y);\n}\n`;\n\nexport { sphericalPS as default };\n", "var specularityFactorPS = `\n#ifdef MAPFLOAT\nuniform float material_specularityFactor;\n#endif\nvoid getSpecularityFactor() {\n\tfloat specularityFactor = 1.0;\n\t#ifdef MAPFLOAT\n\tspecularityFactor *= material_specularityFactor;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tspecularityFactor *= texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tspecularityFactor *= saturate(vVertexColor.$VC);\n\t#endif\n\tdSpecularityFactor = specularityFactor;\n}\n`;\n\nexport { specularityFactorPS as default };\n", "var spotPS = `\nfloat getSpotEffect(vec3 lightSpotDir, float lightInnerConeAngle, float lightOuterConeAngle, vec3 lightDirNorm) {\n\tfloat cosAngle = dot(lightDirNorm, lightSpotDir);\n\treturn smoothstep(lightOuterConeAngle, lightInnerConeAngle, cosAngle);\n}\n`;\n\nexport { spotPS as default };\n", "var startPS = `\nvoid main(void) {\n\tdReflection = vec4(0);\n\t#ifdef LIT_CLEARCOAT\n\tccSpecularLight = vec3(0);\n\tccReflection = vec3(0);\n\t#endif\n`;\n\nexport { startPS as default };\n", "var startVS = `\nvoid main(void) {\n\tgl_Position = getPosition();\n`;\n\nexport { startVS as default };\n", "var startNineSlicedPS = `\n\tnineSlicedUv = vUv0;\n\tnineSlicedUv.y = 1.0 - nineSlicedUv.y;\n`;\n\nexport { startNineSlicedPS as default };\n", "var startNineSlicedTiledPS = `\n\tvec2 tileMask = step(vMask, vec2(0.99999));\n\tvec2 tileSize = 0.5 * (innerOffset.xy + innerOffset.zw);\n\tvec2 tileScale = vec2(1.0) / (vec2(1.0) - tileSize);\n\tvec2 clampedUv = mix(innerOffset.xy * 0.5, vec2(1.0) - innerOffset.zw * 0.5, fract((vTiledUv - tileSize) * tileScale));\n\tclampedUv = clampedUv * atlasRect.zw + atlasRect.xy;\n\tnineSlicedUv = vUv0 * tileMask + clampedUv * (vec2(1.0) - tileMask);\n\tnineSlicedUv.y = 1.0 - nineSlicedUv.y;\n\t\n`;\n\nexport { startNineSlicedTiledPS as default };\n", "var storeEVSMPS = `\nfloat exponent = VSM_EXPONENT;\ndepth = 2.0 * depth - 1.0;\ndepth = exp(exponent * depth);\ngl_FragColor = vec4(depth, depth*depth, 1.0, 1.0);\n`;\n\nexport { storeEVSMPS as default };\n", "var tangentBinormalVS = `\nvec3 getTangent() {\n\treturn normalize(dNormalMatrix * vertex_tangent.xyz);\n}\nvec3 getBinormal() {\n\treturn cross(vNormalW, vTangentW) * vertex_tangent.w;\n}\n`;\n\nexport { tangentBinormalVS as default };\n", "var TBNPS = `\nvoid getTBN(vec3 tangent, vec3 binormal, vec3 normal) {\n\tdTBN = mat3(normalize(tangent), normalize(binormal), normalize(normal));\n}\n`;\n\nexport { TBNPS as default };\n", "var TBNderivativePS = `\nuniform float tbnBasis;\nvoid getTBN(vec3 tangent, vec3 binormal, vec3 normal) {\n\tvec2 uv = $UV;\n\tvec3 dp1 = dFdx( vPositionW );\n\tvec3 dp2 = dFdy( vPositionW );\n\tvec2 duv1 = dFdx( uv );\n\tvec2 duv2 = dFdy( uv );\n\tvec3 dp2perp = cross( dp2, normal );\n\tvec3 dp1perp = cross( normal, dp1 );\n\tvec3 T = dp2perp * duv1.x + dp1perp * duv2.x;\n\tvec3 B = dp2perp * duv1.y + dp1perp * duv2.y;\n\tfloat denom = max( dot(T,T), dot(B,B) );\n\tfloat invmax = (denom == 0.0) ? 0.0 : tbnBasis / sqrt( denom );\n\tdTBN = mat3(T * invmax, -B * invmax, normal );\n}\n`;\n\nexport { TBNderivativePS as default };\n", "var TBNfastPS = `\nvoid getTBN(vec3 tangent, vec3 binormal, vec3 normal) {\n\tdTBN = mat3(tangent, binormal, normal);\n}\n`;\n\nexport { TBNfastPS as default };\n", "var TBNObjectSpacePS = `\nvoid getTBN(vec3 tangent, vec3 binormal, vec3 normal) {\n\tvec3 B = cross(normal, vObjectSpaceUpW);\n\tvec3 T = cross(normal, B);\n\tif (dot(B,B)==0.0)\n\t{\n\t\tfloat major=max(max(normal.x, normal.y), normal.z);\n\t\tif (normal.x == major)\n\t\t{\n\t\t\tB=cross(normal, vec3(0,1,0));\n\t\t\tT=cross(normal, B);\n\t\t}\n\t\telse if (normal.y == major)\n\t\t{\n\t\t\tB=cross(normal, vec3(0,0,1));\n\t\t\tT=cross(normal, B);\n\t\t}\n\t\telse if (normal.z == major)\n\t\t{\n\t\t\tB=cross(normal, vec3(1,0,0));\n\t\t\tT=cross(normal, B);\n\t\t}\n\t}\n\tdTBN = mat3(normalize(T), normalize(B), normalize(normal));\n}\n`;\n\nexport { TBNObjectSpacePS as default };\n", "var textureSamplePS = `\nvec4 texture2DSRGB(sampler2D tex, vec2 uv) {\n\treturn gammaCorrectInput(texture2D(tex, uv));\n}\nvec4 texture2DSRGB(sampler2D tex, vec2 uv, float bias) {\n\treturn gammaCorrectInput(texture2D(tex, uv, bias));\n}\nvec3 texture2DRGBM(sampler2D tex, vec2 uv) {\n\treturn decodeRGBM(texture2D(tex, uv));\n}\nvec3 texture2DRGBM(sampler2D tex, vec2 uv, float bias) {\n\treturn decodeRGBM(texture2D(tex, uv, bias));\n}\nvec3 texture2DRGBE(sampler2D tex, vec2 uv) {\n\treturn decodeRGBM(texture2D(tex, uv));\n}\nvec3 texture2DRGBE(sampler2D tex, vec2 uv, float bias) {\n\treturn decodeRGBM(texture2D(tex, uv, bias));\n}\n`;\n\nexport { textureSamplePS as default };\n", "var thicknessPS = `\n#ifdef MAPFLOAT\nuniform float material_thickness;\n#endif\nvoid getThickness() {\n\tdThickness = 1.0;\n\t#ifdef MAPFLOAT\n\tdThickness *= material_thickness;\n\t#endif\n\t#ifdef MAPTEXTURE\n\tdThickness *= texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\tdThickness *= saturate(vVertexColor.$VC);\n\t#endif\n}\n`;\n\nexport { thicknessPS as default };\n", "var tonemappingAcesPS = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tfloat tA = 2.51;\n\tfloat tB = 0.03;\n\tfloat tC = 2.43;\n\tfloat tD = 0.59;\n\tfloat tE = 0.14;\n\tvec3 x = color * exposure;\n\treturn (x*(tA*x+tB))/(x*(tC*x+tD)+tE);\n}\n`;\n\nexport { tonemappingAcesPS as default };\n", "var tonemappingAces2PS = `\nuniform float exposure;\nconst mat3 ACESInputMat = mat3(\n\t0.59719, 0.35458, 0.04823,\n\t0.07600, 0.90834, 0.01566,\n\t0.02840, 0.13383, 0.83777\n);\nconst mat3 ACESOutputMat = mat3(\n\t 1.60475, -0.53108, -0.07367,\n\t-0.10208, 1.10813, -0.00605,\n\t-0.00327, -0.07276, 1.07602\n);\nvec3 RRTAndODTFit(vec3 v) {\n\tvec3 a = v * (v + 0.0245786) - 0.000090537;\n\tvec3 b = v * (0.983729 * v + 0.4329510) + 0.238081;\n\treturn a / b;\n}\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure / 0.6;\n\tcolor = color * ACESInputMat;\n\tcolor = RRTAndODTFit(color);\n\tcolor = color * ACESOutputMat;\n\tcolor = clamp(color, 0.0, 1.0);\n\treturn color;\n}\n`;\n\nexport { tonemappingAces2PS as default };\n", "var tonemappingFilmicPS = `\nconst float A = 0.15;\nconst float B = 0.50;\nconst float C = 0.10;\nconst float D = 0.20;\nconst float E = 0.02;\nconst float F = 0.30;\nconst float W = 11.2;\nuniform float exposure;\nvec3 uncharted2Tonemap(vec3 x) {\n\t return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;\n}\nvec3 toneMap(vec3 color) {\n\tcolor = uncharted2Tonemap(color * exposure);\n\tvec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W,W,W));\n\tcolor = color * whiteScale;\n\treturn color;\n}\n`;\n\nexport { tonemappingFilmicPS as default };\n", "var tonemappingHejlPS = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure;\n\tconst float A = 0.22, B = 0.3, C = .1, D = 0.2, E = .01, F = 0.3;\n\tconst float Scl = 1.25;\n\tvec3 h = max( vec3(0.0), color - vec3(0.004) );\n\treturn (h*((Scl*A)*h+Scl*vec3(C*B,C*B,C*B))+Scl*vec3(D*E,D*E,D*E)) / (h*(A*h+vec3(B,B,B))+vec3(D*F,D*F,D*F)) - Scl*vec3(E/F,E/F,E/F);\n}\n`;\n\nexport { tonemappingHejlPS as default };\n", "var tonemappingLinearPS = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\treturn color * exposure;\n}\n`;\n\nexport { tonemappingLinearPS as default };\n", "var tonemappingNeutralPS = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure;\n\tfloat startCompression = 0.8 - 0.04;\n\tfloat desaturation = 0.15;\n\tfloat x = min(color.r, min(color.g, color.b));\n\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n\tcolor -= offset;\n\tfloat peak = max(color.r, max(color.g, color.b));\n\tif (peak < startCompression) return color;\n\tfloat d = 1. - startCompression;\n\tfloat newPeak = 1. - d * d / (peak + d - startCompression);\n\tcolor *= newPeak / peak;\n\tfloat g = 1. - 1. / (desaturation * (peak - newPeak) + 1.);\n\treturn mix(color, newPeak * vec3(1, 1, 1), g);\n}\n`;\n\nexport { tonemappingNeutralPS as default };\n", "var tonemappingNonePS = `\nvec3 toneMap(vec3 color) {\n\treturn color;\n}\n`;\n\nexport { tonemappingNonePS as default };\n", "var transformVS = `\n#ifdef PIXELSNAP\nuniform vec4 uScreenSize;\n#endif\n#ifdef SCREENSPACE\nuniform float projectionFlipY;\n#endif\n#ifdef MORPHING\nuniform vec4 morph_weights_a;\nuniform vec4 morph_weights_b;\n#endif\n#ifdef MORPHING_TEXTURE_BASED\n\tuniform vec4 morph_tex_params;\n\t#ifdef WEBGPU\n\t\tivec2 getTextureMorphCoords() {\n\t\t\tivec2 textureSize = ivec2(morph_tex_params.xy);\n\t\t\tint morphGridV = int(morph_vertex_id / textureSize.x);\n\t\t\tint morphGridU = int(morph_vertex_id - (morphGridV * textureSize.x));\n\t\t\tmorphGridV = textureSize.y - morphGridV - 1;\n\t\t\treturn ivec2(morphGridU, morphGridV);\n\t\t}\n\t#else\n\t\tvec2 getTextureMorphCoords() {\n\t\t\tvec2 textureSize = morph_tex_params.xy;\n\t\t\tvec2 invTextureSize = morph_tex_params.zw;\n\t\t\tfloat morphGridV = floor(morph_vertex_id * invTextureSize.x);\n\t\t\tfloat morphGridU = morph_vertex_id - (morphGridV * textureSize.x);\n\t\t\treturn vec2(morphGridU, morphGridV) * invTextureSize + (0.5 * invTextureSize);\n\t\t}\n\t#endif\n#endif\n#ifdef MORPHING_TEXTURE_BASED_POSITION\nuniform highp sampler2D morphPositionTex;\n#endif\nmat4 getModelMatrix() {\n\t#ifdef DYNAMICBATCH\n\treturn getBoneMatrix(vertex_boneIndices);\n\t#elif defined(SKIN)\n\treturn matrix_model * getSkinMatrix(vertex_boneIndices, vertex_boneWeights);\n\t#elif defined(INSTANCING)\n\treturn mat4(instance_line1, instance_line2, instance_line3, instance_line4);\n\t#else\n\treturn matrix_model;\n\t#endif\n}\nvec4 getPosition() {\n\tdModelMatrix = getModelMatrix();\n\tvec3 localPos = vertex_position;\n\t#ifdef NINESLICED\n\tlocalPos.xz *= outerScale;\n\tvec2 positiveUnitOffset = clamp(vertex_position.xz, vec2(0.0), vec2(1.0));\n\tvec2 negativeUnitOffset = clamp(-vertex_position.xz, vec2(0.0), vec2(1.0));\n\tlocalPos.xz += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy;\n\tvTiledUv = (localPos.xz - outerScale + innerOffset.xy) * -0.5 + 1.0;\n\tlocalPos.xz *= -0.5;\n\tlocalPos = localPos.xzy;\n\t#endif\n\t#ifdef MORPHING\n\t#ifdef MORPHING_POS03\n\tlocalPos.xyz += morph_weights_a[0] * morph_pos0;\n\tlocalPos.xyz += morph_weights_a[1] * morph_pos1;\n\tlocalPos.xyz += morph_weights_a[2] * morph_pos2;\n\tlocalPos.xyz += morph_weights_a[3] * morph_pos3;\n\t#endif\n\t#ifdef MORPHING_POS47\n\tlocalPos.xyz += morph_weights_b[0] * morph_pos4;\n\tlocalPos.xyz += morph_weights_b[1] * morph_pos5;\n\tlocalPos.xyz += morph_weights_b[2] * morph_pos6;\n\tlocalPos.xyz += morph_weights_b[3] * morph_pos7;\n\t#endif\n\t#endif\n\t#ifdef MORPHING_TEXTURE_BASED_POSITION\n\t\t#ifdef WEBGPU\n\t\t\tivec2 morphUV = getTextureMorphCoords();\n\t\t\tvec3 morphPos = texelFetch(morphPositionTex, ivec2(morphUV), 0).xyz;\n\t\t#else\n\t\t\tvec2 morphUV = getTextureMorphCoords();\n\t\t\tvec3 morphPos = texture2D(morphPositionTex, morphUV).xyz;\n\t\t#endif\n\t\tlocalPos += morphPos;\n\t#endif\n\tvec4 posW = dModelMatrix * vec4(localPos, 1.0);\n\t#ifdef SCREENSPACE\n\tposW.zw = vec2(0.0, 1.0);\n\t#endif\n\tdPositionW = posW.xyz;\n\tvec4 screenPos;\n\t#ifdef UV1LAYOUT\n\tscreenPos = vec4(vertex_texCoord1.xy * 2.0 - 1.0, 0.5, 1);\n\t\t#ifdef WEBGPU\n\t\tscreenPos.y *= -1.0;\n\t\t#endif\n\t#else\n\t#ifdef SCREENSPACE\n\tscreenPos = posW;\n\tscreenPos.y *= projectionFlipY;\n\t#else\n\tscreenPos = matrix_viewProjection * posW;\n\t#endif\n\t#ifdef PIXELSNAP\n\tscreenPos.xy = (screenPos.xy * 0.5) + 0.5;\n\tscreenPos.xy *= uScreenSize.xy;\n\tscreenPos.xy = floor(screenPos.xy);\n\tscreenPos.xy *= uScreenSize.zw;\n\tscreenPos.xy = (screenPos.xy * 2.0) - 1.0;\n\t#endif\n\t#endif\n\treturn screenPos;\n}\nvec3 getWorldPosition() {\n\treturn dPositionW;\n}\n`;\n\nexport { transformVS as default };\n", "var transformDeclVS = `\nattribute vec3 vertex_position;\nuniform mat4 matrix_model;\nuniform mat4 matrix_viewProjection;\nvec3 dPositionW;\nmat4 dModelMatrix;\n`;\n\nexport { transformDeclVS as default };\n", "var transmissionPS = `\n#ifdef MAPFLOAT\nuniform float material_refraction;\n#endif\nvoid getRefraction() {\n\tfloat refraction = 1.0;\n\t#ifdef MAPFLOAT\n\trefraction = material_refraction;\n\t#endif\n\t#ifdef MAPTEXTURE\n\trefraction *= texture2DBias($SAMPLER, $UV, textureBias).$CH;\n\t#endif\n\t#ifdef MAPVERTEX\n\trefraction *= saturate(vVertexColor.$VC);\n\t#endif\n\tdTransmission = refraction;\n}\n`;\n\nexport { transmissionPS as default };\n", "var twoSidedLightingPS = `\nuniform float twoSidedLightingNegScaleFactor;\nvoid handleTwoSidedLighting() {\n\tdTBN[2] *= gl_FrontFacing ? twoSidedLightingNegScaleFactor : -twoSidedLightingNegScaleFactor;\n}\n`;\n\nexport { twoSidedLightingPS as default };\n", "var uv0VS = `\n#ifdef NINESLICED\nvec2 getUv0() {\n\tvec2 uv = vertex_position.xz;\n\tvec2 positiveUnitOffset = clamp(vertex_position.xz, vec2(0.0), vec2(1.0));\n\tvec2 negativeUnitOffset = clamp(-vertex_position.xz, vec2(0.0), vec2(1.0));\n\tuv += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy;\n\tuv = uv * -0.5 + 0.5;\n\tuv = uv * atlasRect.zw + atlasRect.xy;\n\tvMask = vertex_texCoord0.xy;\n\treturn uv;\n}\n#else\nvec2 getUv0() {\n\treturn vertex_texCoord0;\n}\n#endif\n`;\n\nexport { uv0VS as default };\n", "var uv1VS = `\nvec2 getUv1() {\n\treturn vertex_texCoord1;\n}\n`;\n\nexport { uv1VS as default };\n", "var viewDirPS = `\nvoid getViewDir() {\n\tdViewDirW = normalize(view_position - vPositionW);\n}\n`;\n\nexport { viewDirPS as default };\n", "var viewNormalVS = `\n#ifndef VIEWMATRIX\n#define VIEWMATRIX\nuniform mat4 matrix_view;\n#endif\nvec3 getViewNormal() {\n\treturn mat3(matrix_view) * vNormalW;\n}\n`;\n\nexport { viewNormalVS as default };\n", "import alphaTestPS from './standard/frag/alphaTest.js';\nimport ambientConstantPS from './lit/frag/ambientConstant.js';\nimport ambientEnvPS from './lit/frag/ambientEnv.js';\nimport ambientSHPS from './lit/frag/ambientSH.js';\nimport aoPS from './standard/frag/ao.js';\nimport aoDetailMapPS from './standard/frag/aoDetailMap.js';\nimport aoDiffuseOccPS from './lit/frag/aoDiffuseOcc.js';\nimport aoSpecOccPS from './lit/frag/aoSpecOcc.js';\nimport aoSpecOccConstPS from './lit/frag/aoSpecOccConst.js';\nimport aoSpecOccConstSimplePS from './lit/frag/aoSpecOccConstSimple.js';\nimport aoSpecOccSimplePS from './lit/frag/aoSpecOccSimple.js';\nimport basePS from './lit/frag/base.js';\nimport baseVS from './lit/vert/base.js';\nimport baseNineSlicedPS from './lit/frag/baseNineSliced.js';\nimport baseNineSlicedVS from './lit/vert/baseNineSliced.js';\nimport baseNineSlicedTiledPS from './lit/frag/baseNineSlicedTiled.js';\nimport bayerPS from './common/frag/bayer.js';\nimport biasConstPS from './lit/frag/biasConst.js';\nimport blurVSMPS from './lit/frag/blurVSM.js';\nimport clearCoatPS from './standard/frag/clearCoat.js';\nimport clearCoatGlossPS from './standard/frag/clearCoatGloss.js';\nimport clearCoatNormalPS from './standard/frag/clearCoatNormal.js';\nimport clusteredLightUtilsPS from './lit/frag/clusteredLightUtils.js';\nimport clusteredLightCookiesPS from './lit/frag/clusteredLightCookies.js';\nimport clusteredLightShadowsPS from './lit/frag/clusteredLightShadows.js';\nimport clusteredLightPS from './lit/frag/clusteredLight.js';\nimport combinePS from './lit/frag/combine.js';\nimport cookiePS from './lit/frag/cookie.js';\nimport cubeMapProjectBoxPS from './lit/frag/cubeMapProjectBox.js';\nimport cubeMapProjectNonePS from './lit/frag/cubeMapProjectNone.js';\nimport cubeMapRotatePS from './lit/frag/cubeMapRotate.js';\nimport debugOutputPS from './lit/frag/debug-output.js';\nimport debugProcessFrontendPS from './lit/frag/debug-process-frontend.js';\nimport decodePS from './common/frag/decode.js';\nimport detailModesPS from './standard/frag/detailModes.js';\nimport diffusePS from './standard/frag/diffuse.js';\nimport diffuseDetailMapPS from './standard/frag/diffuseDetailMap.js';\nimport emissivePS from './standard/frag/emissive.js';\nimport encodePS from './common/frag/encode.js';\nimport endPS from './lit/frag/end.js';\nimport endVS from './lit/vert/end.js';\nimport envAtlasPS from './common/frag/envAtlas.js';\nimport envConstPS from './common/frag/envConst.js';\nimport envMultiplyPS from './common/frag/envMultiply.js';\nimport extensionPS from './lit/frag/extension.js';\nimport extensionVS from './lit/vert/extension.js';\nimport falloffInvSquaredPS from './lit/frag/falloffInvSquared.js';\nimport falloffLinearPS from './lit/frag/falloffLinear.js';\nimport fixCubemapSeamsNonePS from './common/frag/fixCubemapSeamsNone.js';\nimport fixCubemapSeamsStretchPS from './common/frag/fixCubemapSeamsStretch.js';\nimport floatUnpackingPS from './lit/frag/float-unpacking.js';\nimport fogExpPS from './lit/frag/fogExp.js';\nimport fogExp2PS from './lit/frag/fogExp2.js';\nimport fogLinearPS from './lit/frag/fogLinear.js';\nimport fogNonePS from './lit/frag/fogNone.js';\nimport fresnelSchlickPS from './lit/frag/fresnelSchlick.js';\nimport fullscreenQuadPS from './common/frag/fullscreenQuad.js';\nimport fullscreenQuadVS from './common/vert/fullscreenQuad.js';\nimport gamma1_0PS from './common/frag/gamma1_0.js';\nimport gamma2_2PS from './common/frag/gamma2_2.js';\nimport gles2PS from '../../../platform/graphics/shader-chunks/frag/gles2.js';\nimport gles2VS from '../../../platform/graphics/shader-chunks/vert/gles2.js';\nimport gles3PS from '../../../platform/graphics/shader-chunks/frag/gles3.js';\nimport gles3VS from '../../../platform/graphics/shader-chunks/vert/gles3.js';\nimport glossPS from './standard/frag/gloss.js';\nimport iridescenceDiffractionPS from './lit/frag/iridescenceDiffraction.js';\nimport iridescencePS from './standard/frag/iridescence.js';\nimport iridescenceThicknessPS from './standard/frag/iridescenceThickness.js';\nimport instancingVS from './lit/vert/instancing.js';\nimport iorPS from './standard/frag/ior.js';\nimport lightDiffuseLambertPS from './lit/frag/lightDiffuseLambert.js';\nimport lightDirPointPS from './lit/frag/lightDirPoint.js';\nimport lightmapAddPS from './lit/frag/lightmapAdd.js';\nimport lightmapDirAddPS from './lit/frag/lightmapDirAdd.js';\nimport lightmapDirPS from './standard/frag/lightmapDir.js';\nimport lightmapSinglePS from './standard/frag/lightmapSingle.js';\nimport lightSpecularAnisoGGXPS from './lit/frag/lightSpecularAnisoGGX.js';\nimport lightSpecularBlinnPS from './lit/frag/lightSpecularBlinn.js';\nimport lightSpecularPhongPS from './lit/frag/lightSpecularPhong.js';\nimport lightSheenPS from './lit/frag/lightSheen.js';\nimport linearizeDepthPS from './common/frag/linearizeDepth.js';\nimport litShaderArgsPS from './standard/frag/litShaderArgs.js';\nimport ltcPS from './lit/frag/ltc.js';\nimport metalnessPS from './standard/frag/metalness.js';\nimport msdfPS from './common/frag/msdf.js';\nimport metalnessModulatePS from './lit/frag/metalnessModulate.js';\nimport msdfVS from './common/vert/msdf.js';\nimport normalVS from './lit/vert/normal.js';\nimport normalDetailMapPS from './standard/frag/normalDetailMap.js';\nimport normalInstancedVS from './lit/vert/normalInstanced.js';\nimport normalMapPS from './standard/frag/normalMap.js';\nimport normalSkinnedVS from './lit/vert/normalSkinned.js';\nimport normalXYPS from './standard/frag/normalXY.js';\nimport normalXYZPS from './standard/frag/normalXYZ.js';\nimport opacityPS from './standard/frag/opacity.js';\nimport opacityDitherPS from './standard/frag/opacity-dither.js';\nimport outputPS from './lit/frag/output.js';\nimport outputAlphaPS from './lit/frag/outputAlpha.js';\nimport outputAlphaOpaquePS from './lit/frag/outputAlphaOpaque.js';\nimport outputAlphaPremulPS from './lit/frag/outputAlphaPremul.js';\nimport outputTex2DPS from './common/frag/outputTex2D.js';\nimport packDepthPS from './common/frag/packDepth.js';\nimport sheenPS from './standard/frag/sheen.js';\nimport sheenGlossPS from './standard/frag/sheenGloss.js';\nimport parallaxPS from './standard/frag/parallax.js';\nimport particlePS from './particle/frag/particle.js';\nimport particleVS from './particle/vert/particle.js';\nimport particleAnimFrameClampVS from './particle/vert/particleAnimFrameClamp.js';\nimport particleAnimFrameLoopVS from './particle/vert/particleAnimFrameLoop.js';\nimport particleAnimTexVS from './particle/vert/particleAnimTex.js';\nimport particleInputFloatPS from './particle/frag/particleInputFloat.js';\nimport particleInputRgba8PS from './particle/frag/particleInputRgba8.js';\nimport particleOutputFloatPS from './particle/frag/particleOutputFloat.js';\nimport particleOutputRgba8PS from './particle/frag/particleOutputRgba8.js';\nimport particleUpdaterAABBPS from './particle/frag/particleUpdaterAABB.js';\nimport particleUpdaterEndPS from './particle/frag/particleUpdaterEnd.js';\nimport particleUpdaterInitPS from './particle/frag/particleUpdaterInit.js';\nimport particleUpdaterNoRespawnPS from './particle/frag/particleUpdaterNoRespawn.js';\nimport particleUpdaterOnStopPS from './particle/frag/particleUpdaterOnStop.js';\nimport particleUpdaterRespawnPS from './particle/frag/particleUpdaterRespawn.js';\nimport particleUpdaterSpherePS from './particle/frag/particleUpdaterSphere.js';\nimport particleUpdaterStartPS from './particle/frag/particleUpdaterStart.js';\nimport particle_billboardVS from './particle/vert/particle_billboard.js';\nimport particle_blendAddPS from './particle/frag/particle_blendAdd.js';\nimport particle_blendMultiplyPS from './particle/frag/particle_blendMultiply.js';\nimport particle_blendNormalPS from './particle/frag/particle_blendNormal.js';\nimport particle_cpuVS from './particle/vert/particle_cpu.js';\nimport particle_cpu_endVS from './particle/vert/particle_cpu_end.js';\nimport particle_customFaceVS from './particle/vert/particle_customFace.js';\nimport particle_endPS from './particle/frag/particle_end.js';\nimport particle_endVS from './particle/vert/particle_end.js';\nimport particle_halflambertPS from './particle/frag/particle_halflambert.js';\nimport particle_initVS from './particle/vert/particle_init.js';\nimport particle_lambertPS from './particle/frag/particle_lambert.js';\nimport particle_lightingPS from './particle/frag/particle_lighting.js';\nimport particle_localShiftVS from './particle/vert/particle_localShift.js';\nimport particle_meshVS from './particle/vert/particle_mesh.js';\nimport particle_normalVS from './particle/vert/particle_normal.js';\nimport particle_normalMapPS from './particle/frag/particle_normalMap.js';\nimport particle_pointAlongVS from './particle/vert/particle_pointAlong.js';\nimport particle_softPS from './particle/frag/particle_soft.js';\nimport particle_softVS from './particle/vert/particle_soft.js';\nimport particle_stretchVS from './particle/vert/particle_stretch.js';\nimport particle_TBNVS from './particle/vert/particle_TBN.js';\nimport particle_wrapVS from './particle/vert/particle_wrap.js';\nimport reflDirPS from './lit/frag/reflDir.js';\nimport reflDirAnisoPS from './lit/frag/reflDirAniso.js';\nimport reflectionCCPS from './lit/frag/reflectionCC.js';\nimport reflectionCubePS from './lit/frag/reflectionCube.js';\nimport reflectionEnvHQPS from './lit/frag/reflectionEnvHQ.js';\nimport reflectionEnvPS from './lit/frag/reflectionEnv.js';\nimport reflectionSpherePS from './lit/frag/reflectionSphere.js';\nimport reflectionSheenPS from './lit/frag/reflectionSheen.js';\nimport refractionCubePS from './lit/frag/refractionCube.js';\nimport refractionDynamicPS from './lit/frag/refractionDynamic.js';\nimport reprojectPS from './common/frag/reproject.js';\nimport sampleCatmullRomPS from './common/frag/sampleCatmullRom.js';\nimport screenDepthPS from './common/frag/screenDepth.js';\nimport shadowCascadesPS from './lit/frag/shadowCascades.js';\nimport shadowEVSMPS from './lit/frag/shadowEVSM.js';\nimport shadowEVSMnPS from './lit/frag/shadowEVSMn.js';\nimport shadowPCSSPS from './lit/frag/shadowPCSS.js';\nimport shadowSampleCoordPS from './lit/frag/shadowSampleCoord.js';\nimport shadowStandardPS from './lit/frag/shadowStandard.js';\nimport shadowStandardGL2PS from './lit/frag/shadowStandardGL2.js';\nimport shadowVSM8PS from './lit/frag/shadowVSM8.js';\nimport shadowVSM_commonPS from './lit/frag/shadowVSM_common.js';\nimport skinBatchConstVS from './common/vert/skinBatchConst.js';\nimport skinBatchTexVS from './common/vert/skinBatchTex.js';\nimport skinConstVS from './common/vert/skinConst.js';\nimport skinTexVS from './common/vert/skinTex.js';\nimport skyboxEnvPS from './skybox/frag/skyboxEnv.js';\nimport skyboxHDRPS from './skybox/frag/skyboxHDR.js';\nimport skyboxVS from './skybox/vert/skybox.js';\nimport specularPS from './standard/frag/specular.js';\nimport sphericalPS from './common/frag/spherical.js';\nimport specularityFactorPS from './standard/frag/specularityFactor.js';\nimport spotPS from './lit/frag/spot.js';\nimport startPS from './lit/frag/start.js';\nimport startVS from './lit/vert/start.js';\nimport startNineSlicedPS from './lit/frag/startNineSliced.js';\nimport startNineSlicedTiledPS from './lit/frag/startNineSlicedTiled.js';\nimport storeEVSMPS from './lit/frag/storeEVSM.js';\nimport tangentBinormalVS from './lit/vert/tangentBinormal.js';\nimport TBNPS from './lit/frag/TBN.js';\nimport TBNderivativePS from './lit/frag/TBNderivative.js';\nimport TBNfastPS from './lit/frag/TBNfast.js';\nimport TBNObjectSpacePS from './lit/frag/TBNObjectSpace.js';\nimport textureSamplePS from './standard/frag/textureSample.js';\nimport thicknessPS from './standard/frag/thickness.js';\nimport tonemappingAcesPS from './common/frag/tonemappingAces.js';\nimport tonemappingAces2PS from './common/frag/tonemappingAces2.js';\nimport tonemappingFilmicPS from './common/frag/tonemappingFilmic.js';\nimport tonemappingHejlPS from './common/frag/tonemappingHejl.js';\nimport tonemappingLinearPS from './common/frag/tonemappingLinear.js';\nimport tonemappingNeutralPS from './common/frag/tonemappingNeutral.js';\nimport tonemappingNonePS from './common/frag/tonemappingNone.js';\nimport transformVS from './common/vert/transform.js';\nimport transformDeclVS from './common/vert/transformDecl.js';\nimport transmissionPS from './standard/frag/transmission.js';\nimport twoSidedLightingPS from './lit/frag/twoSidedLighting.js';\nimport uv0VS from './lit/vert/uv0.js';\nimport uv1VS from './lit/vert/uv1.js';\nimport viewDirPS from './lit/frag/viewDir.js';\nimport viewNormalVS from './lit/vert/viewNormal.js';\nimport webgpuPS from '../../../platform/graphics/shader-chunks/frag/webgpu.js';\nimport webgpuVS from '../../../platform/graphics/shader-chunks/vert/webgpu.js';\n\nconst shaderChunks = {\n\talphaTestPS,\n\tambientConstantPS,\n\tambientEnvPS,\n\tambientSHPS,\n\taoPS,\n\taoDetailMapPS,\n\taoDiffuseOccPS,\n\taoSpecOccPS,\n\taoSpecOccConstPS,\n\taoSpecOccConstSimplePS,\n\taoSpecOccSimplePS,\n\tbasePS,\n\tbaseVS,\n\tbaseNineSlicedPS,\n\tbaseNineSlicedVS,\n\tbaseNineSlicedTiledPS,\n\tbayerPS,\n\tbiasConstPS,\n\tblurVSMPS,\n\tclearCoatPS,\n\tclearCoatGlossPS,\n\tclearCoatNormalPS,\n\tclusteredLightCookiesPS,\n\tclusteredLightShadowsPS,\n\tclusteredLightUtilsPS,\n\tclusteredLightPS,\n\tcombinePS,\n\tcookiePS,\n\tcubeMapProjectBoxPS,\n\tcubeMapProjectNonePS,\n\tcubeMapRotatePS,\n\tdebugOutputPS,\n\tdebugProcessFrontendPS,\n\tdetailModesPS,\n\tdiffusePS,\n\tdiffuseDetailMapPS,\n\tdecodePS,\n\temissivePS,\n\tencodePS,\n\tendPS,\n\tendVS,\n\tenvAtlasPS,\n\tenvConstPS,\n\tenvMultiplyPS,\n\textensionPS,\n\textensionVS,\n\tfalloffInvSquaredPS,\n\tfalloffLinearPS,\n\tfixCubemapSeamsNonePS,\n\tfixCubemapSeamsStretchPS,\n\tfloatUnpackingPS,\n\tfogExpPS,\n\tfogExp2PS,\n\tfogLinearPS,\n\tfogNonePS,\n\tfresnelSchlickPS,\n\tfullscreenQuadPS,\n\tfullscreenQuadVS,\n\tgamma1_0PS,\n\tgamma2_2PS,\n\tgles2PS,\n\tgles2VS,\n\tgles3PS,\n\tgles3VS,\n\tglossPS,\n\tiridescenceDiffractionPS,\n\tiridescencePS,\n\tiridescenceThicknessPS,\n\tinstancingVS,\n\tiorPS,\n\tlightDiffuseLambertPS,\n\tlightDirPointPS,\n\tlightmapAddPS,\n\tlightmapDirAddPS,\n\tlightmapDirPS,\n\tlightmapSinglePS,\n\tlightSpecularAnisoGGXPS,\n\tlightSpecularBlinnPS,\n\tlightSpecularPhongPS,\n\tlightSheenPS,\n\tlinearizeDepthPS,\n\tlitShaderArgsPS,\n\tltcPS,\n\tmetalnessPS,\n\tmetalnessModulatePS,\n\tmsdfPS,\n\tmsdfVS,\n\tnormalVS,\n\tnormalDetailMapPS,\n\tnormalInstancedVS,\n\tnormalMapPS,\n\tnormalSkinnedVS,\n\tnormalXYPS,\n\tnormalXYZPS,\n\topacityPS,\n\topacityDitherPS,\n\toutputPS,\n\toutputAlphaPS,\n\toutputAlphaOpaquePS,\n\toutputAlphaPremulPS,\n\toutputTex2DPS,\n\tpackDepthPS,\n\tsheenPS,\n\tsheenGlossPS,\n\tparallaxPS,\n\tparticlePS,\n\tparticleVS,\n\tparticleAnimFrameClampVS,\n\tparticleAnimFrameLoopVS,\n\tparticleAnimTexVS,\n\tparticleInputFloatPS,\n\tparticleInputRgba8PS,\n\tparticleOutputFloatPS,\n\tparticleOutputRgba8PS,\n\tparticleUpdaterAABBPS,\n\tparticleUpdaterEndPS,\n\tparticleUpdaterInitPS,\n\tparticleUpdaterNoRespawnPS,\n\tparticleUpdaterOnStopPS,\n\tparticleUpdaterRespawnPS,\n\tparticleUpdaterSpherePS,\n\tparticleUpdaterStartPS,\n\tparticle_billboardVS,\n\tparticle_blendAddPS,\n\tparticle_blendMultiplyPS,\n\tparticle_blendNormalPS,\n\tparticle_cpuVS,\n\tparticle_cpu_endVS,\n\tparticle_customFaceVS,\n\tparticle_endPS,\n\tparticle_endVS,\n\tparticle_halflambertPS,\n\tparticle_initVS,\n\tparticle_lambertPS,\n\tparticle_lightingPS,\n\tparticle_localShiftVS,\n\tparticle_meshVS,\n\tparticle_normalVS,\n\tparticle_normalMapPS,\n\tparticle_pointAlongVS,\n\tparticle_softPS,\n\tparticle_softVS,\n\tparticle_stretchVS,\n\tparticle_TBNVS,\n\tparticle_wrapVS,\n\treflDirPS,\n\treflDirAnisoPS,\n\treflectionCCPS,\n\treflectionCubePS,\n\treflectionEnvHQPS,\n\treflectionEnvPS,\n\treflectionSpherePS,\n\treflectionSheenPS,\n\trefractionCubePS,\n\trefractionDynamicPS,\n\treprojectPS,\n\tsampleCatmullRomPS,\n\tscreenDepthPS,\n\tshadowCascadesPS,\n\tshadowEVSMPS,\n\tshadowEVSMnPS,\n\tshadowPCSSPS,\n\tshadowSampleCoordPS,\n\tshadowStandardPS,\n\tshadowStandardGL2PS,\n\tshadowVSM8PS,\n\tshadowVSM_commonPS,\n\tskinBatchConstVS,\n\tskinBatchTexVS,\n\tskinConstVS,\n\tskinTexVS,\n\tskyboxEnvPS,\n\tskyboxHDRPS,\n\tskyboxVS,\n\tspecularPS,\n\tsphericalPS,\n\tspecularityFactorPS,\n\tspotPS,\n\tstartPS,\n\tstartVS,\n\tstartNineSlicedPS,\n\tstartNineSlicedTiledPS,\n\tstoreEVSMPS,\n\ttangentBinormalVS,\n\tTBNPS,\n\tTBNderivativePS,\n\tTBNfastPS,\n\tTBNObjectSpacePS,\n\ttextureSamplePS,\n\tthicknessPS,\n\ttonemappingAcesPS,\n\ttonemappingAces2PS,\n\ttonemappingFilmicPS,\n\ttonemappingHejlPS,\n\ttonemappingLinearPS,\n\ttonemappingNeutralPS,\n\ttonemappingNonePS,\n\ttransformVS,\n\ttransformDeclVS,\n\ttransmissionPS,\n\ttwoSidedLightingPS,\n\tuv0VS,\n\tuv1VS,\n\tviewDirPS,\n\tviewNormalVS,\n\twebgpuPS,\n\twebgpuVS\n};\n\nexport { shaderChunks };\n", "import { DeviceCache } from '../../platform/graphics/device-cache.js';\n\nconst programLibraryDeviceCache = new DeviceCache();\nfunction getProgramLibrary(device) {\n\tconst library = programLibraryDeviceCache.get(device);\n\treturn library;\n}\nfunction setProgramLibrary(device, library) {\n\tprogramLibraryDeviceCache.get(device, () => {\n\t\treturn library;\n\t});\n}\n\nexport { getProgramLibrary, setProgramLibrary };\n", "import { GAMMA_SRGB, GAMMA_SRGBFAST, GAMMA_SRGBHDR, TONEMAP_NEUTRAL, TONEMAP_ACES2, TONEMAP_ACES, TONEMAP_HEJL, TONEMAP_LINEAR, TONEMAP_FILMIC } from '../../constants.js';\nimport { shaderChunks } from '../chunks/chunks.js';\n\nclass ShaderGenerator {\n\tstatic begin() {\n\t\treturn 'void main(void)\\n{\\n';\n\t}\n\tstatic end() {\n\t\treturn '}\\n';\n\t}\n\tstatic skinCode(device, chunks = shaderChunks) {\n\t\tif (device.supportsBoneTextures) {\n\t\t\treturn chunks.skinTexVS;\n\t\t}\n\t\treturn \"#define BONE_LIMIT \" + device.getBoneLimit() + \"\\n\" + chunks.skinConstVS;\n\t}\n\tstatic fogCode(value, chunks = shaderChunks) {\n\t\tif (value === 'linear') {\n\t\t\treturn chunks.fogLinearPS ? chunks.fogLinearPS : shaderChunks.fogLinearPS;\n\t\t} else if (value === 'exp') {\n\t\t\treturn chunks.fogExpPS ? chunks.fogExpPS : shaderChunks.fogExpPS;\n\t\t} else if (value === 'exp2') {\n\t\t\treturn chunks.fogExp2PS ? chunks.fogExp2PS : shaderChunks.fogExp2PS;\n\t\t}\n\t\treturn chunks.fogNonePS ? chunks.fogNonePS : shaderChunks.fogNonePS;\n\t}\n\tstatic gammaCode(value, chunks = shaderChunks) {\n\t\tif (value === GAMMA_SRGB || value === GAMMA_SRGBFAST) {\n\t\t\treturn chunks.gamma2_2PS ? chunks.gamma2_2PS : shaderChunks.gamma2_2PS;\n\t\t} else if (value === GAMMA_SRGBHDR) {\n\t\t\treturn \"#define HDR\\n\" + (chunks.gamma2_2PS ? chunks.gamma2_2PS : shaderChunks.gamma2_2PS);\n\t\t}\n\t\treturn chunks.gamma1_0PS ? chunks.gamma1_0PS : shaderChunks.gamma1_0PS;\n\t}\n\tstatic tonemapCode(value, chunks = shaderChunks) {\n\t\tvar _chunks$tonemappingFi, _chunks$tonemappingLi, _chunks$tonemappingHe, _chunks$tonemappingAc, _chunks$tonemappingAc2, _chunks$tonemappingNe, _chunks$tonemapingNon;\n\t\tswitch (value) {\n\t\t\tcase TONEMAP_FILMIC:\n\t\t\t\treturn (_chunks$tonemappingFi = chunks.tonemappingFilmicPS) != null ? _chunks$tonemappingFi : shaderChunks.tonemappingFilmicPS;\n\t\t\tcase TONEMAP_LINEAR:\n\t\t\t\treturn (_chunks$tonemappingLi = chunks.tonemappingLinearPS) != null ? _chunks$tonemappingLi : shaderChunks.tonemappingLinearPS;\n\t\t\tcase TONEMAP_HEJL:\n\t\t\t\treturn (_chunks$tonemappingHe = chunks.tonemappingHejlPS) != null ? _chunks$tonemappingHe : shaderChunks.tonemappingHejlPS;\n\t\t\tcase TONEMAP_ACES:\n\t\t\t\treturn (_chunks$tonemappingAc = chunks.tonemappingAcesPS) != null ? _chunks$tonemappingAc : shaderChunks.tonemappingAcesPS;\n\t\t\tcase TONEMAP_ACES2:\n\t\t\t\treturn (_chunks$tonemappingAc2 = chunks.tonemappingAces2PS) != null ? _chunks$tonemappingAc2 : shaderChunks.tonemappingAces2PS;\n\t\t\tcase TONEMAP_NEUTRAL:\n\t\t\t\treturn (_chunks$tonemappingNe = chunks.tonemappingNeutralPS) != null ? _chunks$tonemappingNe : shaderChunks.tonemappingNeutralPS;\n\t\t}\n\t\treturn (_chunks$tonemapingNon = chunks.tonemapingNonePS) != null ? _chunks$tonemapingNon : shaderChunks.tonemappingNonePS;\n\t}\n}\n\nexport { ShaderGenerator };\n", "import { extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { Shader } from '../../platform/graphics/shader.js';\nimport { ShaderUtils } from '../../platform/graphics/shader-utils.js';\nimport { shaderChunks } from './chunks/chunks.js';\nimport { getProgramLibrary } from './get-program-library.js';\nimport { ShaderGenerator } from './programs/shader-generator.js';\nimport { SHADERLANGUAGE_WGSL } from '../../platform/graphics/constants.js';\n\nfunction createShader(device, vsName, fsName, useTransformFeedback = false, shaderDefinitionOptions = {}) {\n\tif (typeof useTransformFeedback === 'boolean') {\n\t\tshaderDefinitionOptions.useTransformFeedback = useTransformFeedback;\n\t} else if (typeof useTransformFeedback === 'object') {\n\t\tshaderDefinitionOptions = _extends({}, shaderDefinitionOptions, useTransformFeedback);\n\t}\n\treturn new Shader(device, ShaderUtils.createDefinition(device, _extends({}, shaderDefinitionOptions, {\n\t\tname: `${vsName}_${fsName}`,\n\t\tvertexCode: shaderChunks[vsName],\n\t\tfragmentCode: shaderChunks[fsName]\n\t})));\n}\nfunction createShaderFromCode(device, vsCode, fsCode, uniqueName, attributes, useTransformFeedback = false, shaderDefinitionOptions = {}) {\n\tif (typeof useTransformFeedback === 'boolean') {\n\t\tshaderDefinitionOptions.useTransformFeedback = useTransformFeedback;\n\t} else if (typeof useTransformFeedback === 'object') {\n\t\tshaderDefinitionOptions = _extends({}, shaderDefinitionOptions, useTransformFeedback);\n\t}\n\tconst programLibrary = getProgramLibrary(device);\n\tlet shader = programLibrary.getCachedShader(uniqueName);\n\tif (!shader) {\n\t\tshader = new Shader(device, ShaderUtils.createDefinition(device, _extends({}, shaderDefinitionOptions, {\n\t\t\tname: uniqueName,\n\t\t\tvertexCode: vsCode,\n\t\t\tfragmentCode: fsCode,\n\t\t\tattributes: attributes\n\t\t})));\n\t\tprogramLibrary.setCachedShader(uniqueName, shader);\n\t}\n\treturn shader;\n}\nclass ShaderGeneratorPassThrough extends ShaderGenerator {\n\tconstructor(key, shaderDefinition) {\n\t\tsuper();\n\t\tthis.key = key;\n\t\tthis.shaderDefinition = shaderDefinition;\n\t}\n\tgenerateKey(options) {\n\t\treturn this.key;\n\t}\n\tcreateShaderDefinition(device, options) {\n\t\treturn this.shaderDefinition;\n\t}\n}\nfunction processShader(shader, processingOptions) {\n\tvar _shaderDefinition$nam;\n\tconst shaderDefinition = shader.definition;\n\tconst name = (_shaderDefinition$nam = shaderDefinition.name) != null ? _shaderDefinition$nam : 'shader';\n\tconst key = `${name}-id-${shader.id}`;\n\tconst materialGenerator = new ShaderGeneratorPassThrough(key, shaderDefinition);\n\tconst libraryModuleName = 'shader';\n\tconst library = getProgramLibrary(shader.device);\n\tlibrary.register(libraryModuleName, materialGenerator);\n\tconst variant = library.getProgram(libraryModuleName, {}, processingOptions);\n\tif (shader.definition.shaderLanguage === SHADERLANGUAGE_WGSL) {\n\t\tvariant.meshUniformBufferFormat = shaderDefinition.meshUniformBufferFormat;\n\t\tvariant.meshBindGroupFormat = shaderDefinition.meshBindGroupFormat;\n\t}\n\tlibrary.unregister(libraryModuleName);\n\treturn variant;\n}\nshaderChunks.createShader = createShader;\nshaderChunks.createShaderFromCode = createShaderFromCode;\n\nexport { createShader, createShaderFromCode, processShader };\n", "import { Vec4 } from '../../core/math/vec4.js';\nimport { BindGroup } from '../../platform/graphics/bind-group.js';\nimport { BINDGROUP_MESH, PRIMITIVE_TRISTRIP } from '../../platform/graphics/constants.js';\nimport { ShaderProcessorOptions } from '../../platform/graphics/shader-processor-options.js';\nimport { UniformBuffer } from '../../platform/graphics/uniform-buffer.js';\nimport { processShader } from '../shader-lib/utils.js';\n\nconst _quadPrimitive = {\n\ttype: PRIMITIVE_TRISTRIP,\n\tbase: 0,\n\tcount: 4,\n\tindexed: false\n};\nconst _tempViewport = new Vec4();\nconst _tempScissor = new Vec4();\nclass QuadRender {\n\tconstructor(shader) {\n\t\tthis.uniformBuffer = void 0;\n\t\tthis.bindGroup = void 0;\n\t\tconst device = shader.device;\n\t\tthis.shader = shader;\n\t\tif (device.supportsUniformBuffers) {\n\t\t\tconst processingOptions = new ShaderProcessorOptions();\n\t\t\tthis.shader = processShader(shader, processingOptions);\n\t\t\tconst ubFormat = this.shader.meshUniformBufferFormat;\n\t\t\tif (ubFormat) {\n\t\t\t\tthis.uniformBuffer = new UniformBuffer(device, ubFormat, false);\n\t\t\t}\n\t\t\tconst bindGroupFormat = this.shader.meshBindGroupFormat;\n\t\t\tthis.bindGroup = new BindGroup(device, bindGroupFormat, this.uniformBuffer);\n\t\t}\n\t}\n\tdestroy() {\n\t\tvar _this$uniformBuffer, _this$bindGroup;\n\t\t(_this$uniformBuffer = this.uniformBuffer) == null || _this$uniformBuffer.destroy();\n\t\tthis.uniformBuffer = null;\n\t\t(_this$bindGroup = this.bindGroup) == null || _this$bindGroup.destroy();\n\t\tthis.bindGroup = null;\n\t}\n\trender(viewport, scissor) {\n\t\tconst device = this.shader.device;\n\t\tif (viewport) {\n\t\t\tvar _scissor;\n\t\t\t_tempViewport.set(device.vx, device.vy, device.vw, device.vh);\n\t\t\t_tempScissor.set(device.sx, device.sy, device.sw, device.sh);\n\t\t\tscissor = (_scissor = scissor) != null ? _scissor : viewport;\n\t\t\tdevice.setViewport(viewport.x, viewport.y, viewport.z, viewport.w);\n\t\t\tdevice.setScissor(scissor.x, scissor.y, scissor.z, scissor.w);\n\t\t}\n\t\tdevice.setVertexBuffer(device.quadVertexBuffer, 0);\n\t\tconst shader = this.shader;\n\t\tdevice.setShader(shader);\n\t\tif (device.supportsUniformBuffers) {\n\t\t\tvar _bindGroup$defaultUni;\n\t\t\tconst bindGroup = this.bindGroup;\n\t\t\t(_bindGroup$defaultUni = bindGroup.defaultUniformBuffer) == null || _bindGroup$defaultUni.update();\n\t\t\tbindGroup.update();\n\t\t\tdevice.setBindGroup(BINDGROUP_MESH, bindGroup);\n\t\t}\n\t\tdevice.draw(_quadPrimitive);\n\t\tif (viewport) {\n\t\t\tdevice.setViewport(_tempViewport.x, _tempViewport.y, _tempViewport.z, _tempViewport.w);\n\t\t\tdevice.setScissor(_tempScissor.x, _tempScissor.y, _tempScissor.z, _tempScissor.w);\n\t\t}\n\t}\n}\n\nexport { QuadRender };\n", "import { CULLFACE_NONE } from '../../platform/graphics/constants.js';\nimport { DepthState } from '../../platform/graphics/depth-state.js';\nimport { RenderPass } from '../../platform/graphics/render-pass.js';\n\nclass RenderPassQuad extends RenderPass {\n\tconstructor(device, quad, rect, scissorRect) {\n\t\tsuper(device);\n\t\tthis.quad = quad;\n\t\tthis.rect = rect;\n\t\tthis.scissorRect = scissorRect;\n\t}\n\texecute() {\n\t\tconst {\n\t\t\tdevice\n\t\t} = this;\n\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\tdevice.setStencilState(null, null);\n\t\tthis.quad.render(this.rect, this.scissorRect);\n\t}\n}\n\nexport { RenderPassQuad };\n", "import { Vec4 } from '../../core/math/vec4.js';\nimport { QuadRender } from './quad-render.js';\nimport { RenderPassQuad } from './render-pass-quad.js';\n\nconst _tempRect = new Vec4();\nfunction drawQuadWithShader(device, target, shader, rect, scissorRect) {\n\tconst quad = new QuadRender(shader);\n\tif (!rect) {\n\t\trect = _tempRect;\n\t\trect.x = 0;\n\t\trect.y = 0;\n\t\trect.z = target ? target.width : device.width;\n\t\trect.w = target ? target.height : device.height;\n\t}\n\tconst renderPass = new RenderPassQuad(device, quad, rect, scissorRect);\n\trenderPass.init(target);\n\trenderPass.colorOps.clear = false;\n\trenderPass.depthStencilOps.clearDepth = false;\n\tif (device.isWebGPU && target === null && device.samples > 1) {\n\t\trenderPass.colorOps.store = true;\n\t}\n\trenderPass.render();\n\tquad.destroy();\n}\nfunction drawTexture(device, texture, target, shader, rect, scissorRect) {\n\tshader = shader || device.getCopyShader();\n\tdevice.constantTexSource.setValue(texture);\n\tdrawQuadWithShader(device, target, shader, rect, scissorRect);\n}\n\nexport { drawQuadWithShader, drawTexture };\n", "import { SHADER_DEPTH, SHADER_PICK, SHADER_FORWARD, SHADER_FORWARDHDR } from './constants.js';\nimport { DeviceCache } from '../platform/graphics/device-cache.js';\n\nconst shaderPassDeviceCache = new DeviceCache();\nclass ShaderPassInfo {\n\tconstructor(name, index, options = {}) {\n\t\tthis.index = void 0;\n\t\tthis.name = void 0;\n\t\tthis.shaderDefines = void 0;\n\t\tthis.name = name;\n\t\tthis.index = index;\n\t\tObject.assign(this, options);\n\t\tthis.shaderDefines = this.buildShaderDefines();\n\t}\n\tbuildShaderDefines() {\n\t\tlet keyword;\n\t\tif (this.isShadow) {\n\t\t\tkeyword = 'SHADOW';\n\t\t} else if (this.isForward) {\n\t\t\tkeyword = 'FORWARD';\n\t\t} else if (this.index === SHADER_DEPTH) {\n\t\t\tkeyword = 'DEPTH';\n\t\t} else if (this.index === SHADER_PICK) {\n\t\t\tkeyword = 'PICK';\n\t\t}\n\t\tconst define1 = keyword ? `#define ${keyword}_PASS\\n` : '';\n\t\tconst define2 = `#define ${this.name.toUpperCase()}_PASS\\n`;\n\t\treturn define1 + define2;\n\t}\n}\nclass ShaderPass {\n\tconstructor() {\n\t\tthis.passesNamed = new Map();\n\t\tthis.passesIndexed = [];\n\t\tthis.nextIndex = 0;\n\t\tconst add = (name, index, options) => {\n\t\t\tthis.allocate(name, options);\n\t\t};\n\t\tadd('forward', SHADER_FORWARD, {\n\t\t\tisForward: true\n\t\t});\n\t\tadd('forward_hdr', SHADER_FORWARDHDR, {\n\t\t\tisForward: true\n\t\t});\n\t\tadd('depth');\n\t\tadd('pick');\n\t\tadd('shadow');\n\t\tadd('prepass');\n\t}\n\tstatic get(device) {\n\t\treturn shaderPassDeviceCache.get(device, () => {\n\t\t\treturn new ShaderPass();\n\t\t});\n\t}\n\tallocate(name, options) {\n\t\tlet info = this.passesNamed.get(name);\n\t\tif (info === undefined) {\n\t\t\tinfo = new ShaderPassInfo(name, this.nextIndex, options);\n\t\t\tthis.passesNamed.set(info.name, info);\n\t\t\tthis.passesIndexed[info.index] = info;\n\t\t\tthis.nextIndex++;\n\t\t}\n\t\treturn info;\n\t}\n\tgetByIndex(index) {\n\t\tconst info = this.passesIndexed[index];\n\t\treturn info;\n\t}\n\tgetByName(name) {\n\t\treturn this.passesNamed.get(name);\n\t}\n}\n\nexport { ShaderPass, ShaderPassInfo };\n", "import { SEMANTIC_POSITION, SEMANTIC_BLENDWEIGHT, SEMANTIC_BLENDINDICES, SEMANTIC_COLOR, SEMANTIC_TEXCOORD0 } from '../../../platform/graphics/constants.js';\nimport { ShaderUtils } from '../../../platform/graphics/shader-utils.js';\nimport { shaderChunks } from '../chunks/chunks.js';\nimport { ShaderPass } from '../../shader-pass.js';\nimport { ShaderGenerator } from './shader-generator.js';\n\nconst vShader = `\n\n\t\t#include \"shaderPassDefines\"\n\t\t#include \"transformDeclVS\"\n\n\t\t#ifdef SKIN\n\t\t\t\t#include \"skinCode\"\n\t\t#endif\n\n\t\t#include \"transformVS\"\n\n\t\t#ifdef VERTEX_COLORS\n\t\t\t\tattribute vec4 vertex_color;\n\t\t\t\tvarying vec4 vColor;\n\t\t#endif\n\n\t\t#ifdef DIFFUSE_MAP\n\t\t\t\tattribute vec2 vertex_texCoord0;\n\t\t\t\tvarying vec2 vUv0;\n\t\t#endif\n\n\t\t#ifdef DEPTH_PASS\n\t\t\t\tvarying float vDepth;\n\t\t\t\t\n\t\t\t\t#ifndef VIEWMATRIX\n\t\t\t\t#define VIEWMATRIX\n\t\t\t\t\t\tuniform mat4 matrix_view;\n\t\t\t\t#endif\n\n\t\t\t\t#ifndef CAMERAPLANES\n\t\t\t\t#define CAMERAPLANES\n\t\t\t\t\t\tuniform vec4 camera_params;\n\t\t\t\t#endif\n\t\t#endif\n\n\t\tvoid main(void) {\n\t\t\t\tgl_Position = getPosition();\n\n\t\t\t\t#ifdef DEPTH_PASS\n\t\t\t\t\t\tvDepth = -(matrix_view * vec4(getWorldPosition(),1.0)).z * camera_params.x;\n\t\t\t\t#endif \n\n\t\t\t\t#ifdef VERTEX_COLORS\n\t\t\t\t\t\tvColor = vertex_color;\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef DIFFUSE_MAP\n\t\t\t\t\t\tvUv0 = vertex_texCoord0;\n\t\t\t\t#endif\n\t\t}\n`;\nconst fShader = `\n\n\t\t#include \"shaderPassDefines\"\n\n\t\t#ifdef VERTEX_COLORS\n\t\t\t\tvarying vec4 vColor;\n\t\t#else\n\t\t\t\tuniform vec4 uColor;\n\t\t#endif\n\n\t\t#ifdef DIFFUSE_MAP\n\t\t\t\tvarying vec2 vUv0;\n\t\t\t\tuniform sampler2D texture_diffuseMap;\n\t\t#endif\n\n\t\t#ifdef FOG\n\t\t\t\t#include \"fogCode\"\n\t\t#endif\n\n\t\t#ifdef ALPHA_TEST\n\t\t\t\t#include \"alphaTestPS\"\n\t\t#endif\n\n\t\t#ifdef DEPTH_PASS\n\t\t\t\tvarying float vDepth;\n\t\t\t\t#include \"packDepthPS\"\n\t\t#endif\n\n\t\tvoid main(void) {\n\n\t\t\t\t#ifdef VERTEX_COLORS\n\t\t\t\t\t\tgl_FragColor = vColor;\n\t\t\t\t#else\n\t\t\t\t\t\tgl_FragColor = uColor;\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef DIFFUSE_MAP\n\t\t\t\t\t\tgl_FragColor *= texture2D(texture_diffuseMap, vUv0);\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef ALPHA_TEST\n\t\t\t\t\t\talphaTest(gl_FragColor.a);\n\t\t\t\t#endif\n\n\t\t\t\t#ifndef PICK_PASS\n\n\t\t\t\t\t\t#ifdef DEPTH_PASS\n\t\t\t\t\t\t\t\tgl_FragColor = packFloat(vDepth);\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\t\t#ifdef FOG\n\t\t\t\t\t\t\t\t\t\tglFragColor.rgb = addFog(gl_FragColor.rgb);\n\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t}\n`;\nclass ShaderGeneratorBasic extends ShaderGenerator {\n\tgenerateKey(options) {\n\t\tlet key = 'basic';\n\t\tif (options.fog) key += '_fog';\n\t\tif (options.alphaTest) key += '_atst';\n\t\tif (options.vertexColors) key += '_vcol';\n\t\tif (options.diffuseMap) key += '_diff';\n\t\tif (options.skin) key += '_skin';\n\t\tif (options.screenSpace) key += '_ss';\n\t\tif (options.useInstancing) key += '_inst';\n\t\tif (options.useMorphPosition) key += '_morphp';\n\t\tif (options.useMorphNormal) key += '_morphn';\n\t\tif (options.useMorphTextureBased) key += '_morpht';\n\t\tkey += '_' + options.pass;\n\t\treturn key;\n\t}\n\tcreateAttributesDefinition(definitionOptions, options) {\n\t\tconst attributes = {\n\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t};\n\t\tif (options.skin) {\n\t\t\tattributes.vertex_boneWeights = SEMANTIC_BLENDWEIGHT;\n\t\t\tattributes.vertex_boneIndices = SEMANTIC_BLENDINDICES;\n\t\t}\n\t\tif (options.vertexColors) {\n\t\t\tattributes.vertex_color = SEMANTIC_COLOR;\n\t\t}\n\t\tif (options.diffuseMap) {\n\t\t\tattributes.vertex_texCoord0 = SEMANTIC_TEXCOORD0;\n\t\t}\n\t\tdefinitionOptions.attributes = attributes;\n\t}\n\tcreateVertexDefinition(device, definitionOptions, options, shaderPassInfo) {\n\t\tconst includes = new Map();\n\t\tconst defines = new Map();\n\t\tincludes.set('shaderPassDefines', shaderPassInfo.shaderDefines);\n\t\tincludes.set('transformDeclVS', shaderChunks.transformDeclVS);\n\t\tincludes.set('transformVS', shaderChunks.transformVS);\n\t\tincludes.set('skinCode', ShaderGenerator.skinCode(device));\n\t\tif (options.skin) defines.set('SKIN', true);\n\t\tif (options.vertexColors) defines.set('VERTEX_COLORS', true);\n\t\tif (options.diffuseMap) defines.set('DIFFUSE_MAP', true);\n\t\tdefinitionOptions.vertexCode = vShader;\n\t\tdefinitionOptions.vertexIncludes = includes;\n\t\tdefinitionOptions.vertexDefines = defines;\n\t}\n\tcreateFragmentDefinition(definitionOptions, options, shaderPassInfo) {\n\t\tconst includes = new Map();\n\t\tconst defines = new Map();\n\t\tincludes.set('shaderPassDefines', shaderPassInfo.shaderDefines);\n\t\tincludes.set('fogCode', ShaderGenerator.fogCode(options.fog));\n\t\tincludes.set('alphaTestPS', shaderChunks.alphaTestPS);\n\t\tincludes.set('packDepthPS', shaderChunks.packDepthPS);\n\t\tif (options.vertexColors) defines.set('VERTEX_COLORS', true);\n\t\tif (options.diffuseMap) defines.set('DIFFUSE_MAP', true);\n\t\tif (options.fog) defines.set('FOG', true);\n\t\tif (options.alphaTest) defines.set('ALPHA_TEST', true);\n\t\tdefinitionOptions.fragmentCode = fShader;\n\t\tdefinitionOptions.fragmentIncludes = includes;\n\t\tdefinitionOptions.fragmentDefines = defines;\n\t}\n\tcreateShaderDefinition(device, options) {\n\t\tconst definitionOptions = {\n\t\t\tname: 'BasicShader'\n\t\t};\n\t\tconst shaderPassInfo = ShaderPass.get(device).getByIndex(options.pass);\n\t\tthis.createAttributesDefinition(definitionOptions, options);\n\t\tthis.createVertexDefinition(device, definitionOptions, options, shaderPassInfo);\n\t\tthis.createFragmentDefinition(definitionOptions, options, shaderPassInfo);\n\t\treturn ShaderUtils.createDefinition(device, definitionOptions);\n\t}\n}\nconst basic = new ShaderGeneratorBasic();\n\nexport { basic };\n", "import { DeviceCache } from '../../platform/graphics/device-cache.js';\n\nconst defaultMaterialDeviceCache = new DeviceCache();\nfunction getDefaultMaterial(device) {\n\tconst material = defaultMaterialDeviceCache.get(device);\n\treturn material;\n}\nfunction setDefaultMaterial(device, material) {\n\tdefaultMaterialDeviceCache.get(device, () => {\n\t\treturn material;\n\t});\n}\n\nexport { getDefaultMaterial, setDefaultMaterial };\n", "import { CULLFACE_BACK, BLENDMODE_ONE, BLENDEQUATION_REVERSE_SUBTRACT, BLENDMODE_ZERO, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA, BLENDMODE_DST_COLOR, BLENDMODE_SRC_COLOR, BLENDMODE_ONE_MINUS_DST_COLOR, BLENDEQUATION_MIN, BLENDEQUATION_MAX } from '../../platform/graphics/constants.js';\nimport { BlendState } from '../../platform/graphics/blend-state.js';\nimport { DepthState } from '../../platform/graphics/depth-state.js';\nimport { ShaderProcessorOptions } from '../../platform/graphics/shader-processor-options.js';\nimport { BLEND_NONE, BLEND_NORMAL, BLEND_SUBTRACTIVE, BLEND_PREMULTIPLIED, BLEND_ADDITIVE, BLEND_ADDITIVEALPHA, BLEND_MULTIPLICATIVE2X, BLEND_SCREEN, BLEND_MULTIPLICATIVE, BLEND_MIN, BLEND_MAX } from '../constants.js';\nimport { processShader } from '../shader-lib/utils.js';\nimport { getDefaultMaterial } from './default-material.js';\n\nconst blendModes = [];\nblendModes[BLEND_SUBTRACTIVE] = {\n\tsrc: BLENDMODE_ONE,\n\tdst: BLENDMODE_ONE,\n\top: BLENDEQUATION_REVERSE_SUBTRACT\n};\nblendModes[BLEND_NONE] = {\n\tsrc: BLENDMODE_ONE,\n\tdst: BLENDMODE_ZERO,\n\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_NORMAL] = {\n\tsrc: BLENDMODE_SRC_ALPHA,\n\tdst: BLENDMODE_ONE_MINUS_SRC_ALPHA,\n\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_PREMULTIPLIED] = {\n\tsrc: BLENDMODE_ONE,\n\tdst: BLENDMODE_ONE_MINUS_SRC_ALPHA,\n\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_ADDITIVE] = {\n\tsrc: BLENDMODE_ONE,\n\tdst: BLENDMODE_ONE,\n\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_ADDITIVEALPHA] = {\n\tsrc: BLENDMODE_SRC_ALPHA,\n\tdst: BLENDMODE_ONE,\n\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MULTIPLICATIVE2X] = {\n\tsrc: BLENDMODE_DST_COLOR,\n\tdst: BLENDMODE_SRC_COLOR,\n\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_SCREEN] = {\n\tsrc: BLENDMODE_ONE_MINUS_DST_COLOR,\n\tdst: BLENDMODE_ONE,\n\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MULTIPLICATIVE] = {\n\tsrc: BLENDMODE_DST_COLOR,\n\tdst: BLENDMODE_ZERO,\n\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MIN] = {\n\tsrc: BLENDMODE_ONE,\n\tdst: BLENDMODE_ONE,\n\top: BLENDEQUATION_MIN\n};\nblendModes[BLEND_MAX] = {\n\tsrc: BLENDMODE_ONE,\n\tdst: BLENDMODE_ONE,\n\top: BLENDEQUATION_MAX\n};\nlet id = 0;\nclass Material {\n\tconstructor() {\n\t\tthis._shader = null;\n\t\tthis.meshInstances = [];\n\t\tthis.name = 'Untitled';\n\t\tthis.userId = '';\n\t\tthis.id = id++;\n\t\tthis.variants = new Map();\n\t\tthis.parameters = {};\n\t\tthis.alphaTest = 0;\n\t\tthis.alphaToCoverage = false;\n\t\tthis._blendState = new BlendState();\n\t\tthis._depthState = new DepthState();\n\t\tthis.cull = CULLFACE_BACK;\n\t\tthis.stencilFront = null;\n\t\tthis.stencilBack = null;\n\t\tthis._shaderVersion = 0;\n\t\tthis._scene = null;\n\t\tthis.dirty = true;\n\t}\n\tset depthBias(value) {\n\t\tthis._depthState.depthBias = value;\n\t}\n\tget depthBias() {\n\t\treturn this._depthState.depthBias;\n\t}\n\tset slopeDepthBias(value) {\n\t\tthis._depthState.depthBiasSlope = value;\n\t}\n\tget slopeDepthBias() {\n\t\treturn this._depthState.depthBiasSlope;\n\t}\n\tset redWrite(value) {\n\t\tthis._blendState.redWrite = value;\n\t}\n\tget redWrite() {\n\t\treturn this._blendState.redWrite;\n\t}\n\tset greenWrite(value) {\n\t\tthis._blendState.greenWrite = value;\n\t}\n\tget greenWrite() {\n\t\treturn this._blendState.greenWrite;\n\t}\n\tset blueWrite(value) {\n\t\tthis._blendState.blueWrite = value;\n\t}\n\tget blueWrite() {\n\t\treturn this._blendState.blueWrite;\n\t}\n\tset alphaWrite(value) {\n\t\tthis._blendState.alphaWrite = value;\n\t}\n\tget alphaWrite() {\n\t\treturn this._blendState.alphaWrite;\n\t}\n\tset shader(shader) {\n\t\tthis._shader = shader;\n\t}\n\tget shader() {\n\t\treturn this._shader;\n\t}\n\tget transparent() {\n\t\treturn this._blendState.blend;\n\t}\n\t_updateTransparency() {\n\t\tconst transparent = this.transparent;\n\t\tconst meshInstances = this.meshInstances;\n\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\tmeshInstances[i].transparent = transparent;\n\t\t}\n\t}\n\tset blendState(value) {\n\t\tthis._blendState.copy(value);\n\t\tthis._updateTransparency();\n\t}\n\tget blendState() {\n\t\treturn this._blendState;\n\t}\n\tset blendType(type) {\n\t\tconst blendMode = blendModes[type];\n\t\tthis._blendState.setColorBlend(blendMode.op, blendMode.src, blendMode.dst);\n\t\tthis._blendState.setAlphaBlend(blendMode.op, blendMode.src, blendMode.dst);\n\t\tconst blend = type !== BLEND_NONE;\n\t\tif (this._blendState.blend !== blend) {\n\t\t\tthis._blendState.blend = blend;\n\t\t\tthis._updateTransparency();\n\t\t}\n\t\tthis._updateMeshInstanceKeys();\n\t}\n\tget blendType() {\n\t\tif (!this.transparent) {\n\t\t\treturn BLEND_NONE;\n\t\t}\n\t\tconst {\n\t\t\tcolorOp,\n\t\t\tcolorSrcFactor,\n\t\t\tcolorDstFactor,\n\t\t\talphaOp,\n\t\t\talphaSrcFactor,\n\t\t\talphaDstFactor\n\t\t} = this._blendState;\n\t\tfor (let i = 0; i < blendModes.length; i++) {\n\t\t\tconst blendMode = blendModes[i];\n\t\t\tif (blendMode.src === colorSrcFactor && blendMode.dst === colorDstFactor && blendMode.op === colorOp && blendMode.src === alphaSrcFactor && blendMode.dst === alphaDstFactor && blendMode.op === alphaOp) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn BLEND_NORMAL;\n\t}\n\tset depthState(value) {\n\t\tthis._depthState.copy(value);\n\t}\n\tget depthState() {\n\t\treturn this._depthState;\n\t}\n\tset depthTest(value) {\n\t\tthis._depthState.test = value;\n\t}\n\tget depthTest() {\n\t\treturn this._depthState.test;\n\t}\n\tset depthFunc(value) {\n\t\tthis._depthState.func = value;\n\t}\n\tget depthFunc() {\n\t\treturn this._depthState.func;\n\t}\n\tset depthWrite(value) {\n\t\tthis._depthState.write = value;\n\t}\n\tget depthWrite() {\n\t\treturn this._depthState.write;\n\t}\n\tcopy(source) {\n\t\tvar _source$stencilFront;\n\t\tthis.name = source.name;\n\t\tthis._shader = source._shader;\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis._blendState.copy(source._blendState);\n\t\tthis._depthState.copy(source._depthState);\n\t\tthis.cull = source.cull;\n\t\tthis.stencilFront = (_source$stencilFront = source.stencilFront) == null ? void 0 : _source$stencilFront.clone();\n\t\tif (source.stencilBack) {\n\t\t\tthis.stencilBack = source.stencilFront === source.stencilBack ? this.stencilFront : source.stencilBack.clone();\n\t\t}\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst clone = new this.constructor();\n\t\treturn clone.copy(this);\n\t}\n\t_updateMeshInstanceKeys() {\n\t\tconst meshInstances = this.meshInstances;\n\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\tmeshInstances[i].updateKey();\n\t\t}\n\t}\n\tupdateUniforms(device, scene) {}\n\tgetShaderVariant(device, scene, objDefs, unused, pass, sortedLights, viewUniformFormat, viewBindGroupFormat, vertexFormat) {\n\t\tconst processingOptions = new ShaderProcessorOptions(viewUniformFormat, viewBindGroupFormat, vertexFormat);\n\t\treturn processShader(this._shader, processingOptions);\n\t}\n\tupdate() {\n\t\tthis.dirty = true;\n\t\tif (this._shader) this._shader.failed = false;\n\t}\n\tclearParameters() {\n\t\tthis.parameters = {};\n\t}\n\tgetParameters() {\n\t\treturn this.parameters;\n\t}\n\tclearVariants() {\n\t\tthis.variants.clear();\n\t\tconst meshInstances = this.meshInstances;\n\t\tconst count = meshInstances.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tmeshInstances[i].clearShaders();\n\t\t}\n\t}\n\tgetParameter(name) {\n\t\treturn this.parameters[name];\n\t}\n\tsetParameter(name, data) {\n\t\tif (data === undefined && typeof name === 'object') {\n\t\t\tconst uniformObject = name;\n\t\t\tif (uniformObject.length) {\n\t\t\t\tfor (let i = 0; i < uniformObject.length; i++) {\n\t\t\t\t\tthis.setParameter(uniformObject[i]);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tname = uniformObject.name;\n\t\t\tdata = uniformObject.value;\n\t\t}\n\t\tconst param = this.parameters[name];\n\t\tif (param) {\n\t\t\tparam.data = data;\n\t\t} else {\n\t\t\tthis.parameters[name] = {\n\t\t\t\tscopeId: null,\n\t\t\t\tdata: data\n\t\t\t};\n\t\t}\n\t}\n\tdeleteParameter(name) {\n\t\tif (this.parameters[name]) {\n\t\t\tdelete this.parameters[name];\n\t\t}\n\t}\n\tsetParameters(device, names) {\n\t\tconst parameters = this.parameters;\n\t\tif (names === undefined) names = parameters;\n\t\tfor (const paramName in names) {\n\t\t\tconst parameter = parameters[paramName];\n\t\t\tif (parameter) {\n\t\t\t\tif (!parameter.scopeId) {\n\t\t\t\t\tparameter.scopeId = device.scope.resolve(paramName);\n\t\t\t\t}\n\t\t\t\tparameter.scopeId.setValue(parameter.data);\n\t\t\t}\n\t\t}\n\t}\n\tdestroy() {\n\t\tthis.variants.clear();\n\t\tthis._shader = null;\n\t\tfor (let i = 0; i < this.meshInstances.length; i++) {\n\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\tmeshInstance.clearShaders();\n\t\t\tmeshInstance._material = null;\n\t\t\tif (meshInstance.mesh) {\n\t\t\t\tconst defaultMaterial = getDefaultMaterial(meshInstance.mesh.device);\n\t\t\t\tif (this !== defaultMaterial) {\n\t\t\t\t\tmeshInstance.material = defaultMaterial;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.meshInstances.length = 0;\n\t}\n\taddMeshInstanceRef(meshInstance) {\n\t\tthis.meshInstances.push(meshInstance);\n\t}\n\tremoveMeshInstanceRef(meshInstance) {\n\t\tconst meshInstances = this.meshInstances;\n\t\tconst i = meshInstances.indexOf(meshInstance);\n\t\tif (i !== -1) {\n\t\t\tmeshInstances.splice(i, 1);\n\t\t}\n\t}\n}\n\nexport { Material };\n", "import { Color } from '../../core/math/color.js';\nimport { ShaderProcessorOptions } from '../../platform/graphics/shader-processor-options.js';\nimport { SHADERDEF_SKIN, SHADERDEF_SCREENSPACE, SHADERDEF_INSTANCING, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_NORMAL, SHADERDEF_MORPH_TEXTURE_BASED } from '../constants.js';\nimport { getProgramLibrary } from '../shader-lib/get-program-library.js';\nimport { basic } from '../shader-lib/programs/basic.js';\nimport { Material } from './material.js';\n\nclass BasicMaterial extends Material {\n\tconstructor(...args) {\n\t\tsuper(...args);\n\t\tthis.color = new Color(1, 1, 1, 1);\n\t\tthis.colorUniform = new Float32Array(4);\n\t\tthis.colorMap = null;\n\t\tthis.vertexColors = false;\n\t}\n\tcopy(source) {\n\t\tsuper.copy(source);\n\t\tthis.color.copy(source.color);\n\t\tthis.colorMap = source.colorMap;\n\t\tthis.vertexColors = source.vertexColors;\n\t\treturn this;\n\t}\n\tupdateUniforms(device, scene) {\n\t\tthis.clearParameters();\n\t\tthis.colorUniform[0] = this.color.r;\n\t\tthis.colorUniform[1] = this.color.g;\n\t\tthis.colorUniform[2] = this.color.b;\n\t\tthis.colorUniform[3] = this.color.a;\n\t\tthis.setParameter('uColor', this.colorUniform);\n\t\tif (this.colorMap) {\n\t\t\tthis.setParameter('texture_diffuseMap', this.colorMap);\n\t\t}\n\t}\n\tgetShaderVariant(device, scene, objDefs, unused, pass, sortedLights, viewUniformFormat, viewBindGroupFormat, vertexFormat) {\n\t\tconst options = {\n\t\t\tskin: objDefs && (objDefs & SHADERDEF_SKIN) !== 0,\n\t\t\tscreenSpace: objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0,\n\t\t\tuseInstancing: objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0,\n\t\t\tuseMorphPosition: objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0,\n\t\t\tuseMorphNormal: objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0,\n\t\t\tuseMorphTextureBased: objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED) !== 0,\n\t\t\talphaTest: this.alphaTest > 0,\n\t\t\tvertexColors: this.vertexColors,\n\t\t\tdiffuseMap: !!this.colorMap,\n\t\t\tpass: pass\n\t\t};\n\t\tconst processingOptions = new ShaderProcessorOptions(viewUniformFormat, viewBindGroupFormat, vertexFormat);\n\t\tconst library = getProgramLibrary(device);\n\t\tlibrary.register('basic', basic);\n\t\treturn library.getProgram('basic', options, processingOptions, this.userId);\n\t}\n}\n\nexport { BasicMaterial };\n", "import { BoundingBox } from '../../core/shape/bounding-box.js';\n\nclass Batch {\n\tconstructor(meshInstances, dynamic, batchGroupId) {\n\t\tthis._aabb = new BoundingBox();\n\t\tthis.origMeshInstances = void 0;\n\t\tthis.meshInstance = null;\n\t\tthis.dynamic = void 0;\n\t\tthis.batchGroupId = void 0;\n\t\tthis.origMeshInstances = meshInstances;\n\t\tthis.dynamic = dynamic;\n\t\tthis.batchGroupId = batchGroupId;\n\t}\n\tdestroy(scene, layers) {\n\t\tif (this.meshInstance) {\n\t\t\tthis.removeFromLayers(scene, layers);\n\t\t\tthis.meshInstance.destroy();\n\t\t\tthis.meshInstance = null;\n\t\t}\n\t}\n\taddToLayers(scene, layers) {\n\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.addMeshInstances([this.meshInstance]);\n\t\t\t}\n\t\t}\n\t}\n\tremoveFromLayers(scene, layers) {\n\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.removeMeshInstances([this.meshInstance]);\n\t\t\t}\n\t\t}\n\t}\n\tupdateBoundingBox() {\n\t\tthis._aabb.copy(this.origMeshInstances[0].aabb);\n\t\tfor (let i = 1; i < this.origMeshInstances.length; i++) {\n\t\t\tthis._aabb.add(this.origMeshInstances[i].aabb);\n\t\t}\n\t\tthis.meshInstance.aabb = this._aabb;\n\t\tthis.meshInstance._aabbVer = 0;\n\t}\n}\n\nexport { Batch };\n", "import { LAYERID_WORLD } from '../constants.js';\n\nclass BatchGroup {\n\tconstructor(id, name, dynamic, maxAabbSize, layers = [LAYERID_WORLD]) {\n\t\tthis._ui = false;\n\t\tthis._sprite = false;\n\t\tthis._obj = {\n\t\t\tmodel: [],\n\t\t\telement: [],\n\t\t\tsprite: [],\n\t\t\trender: []\n\t\t};\n\t\tthis.id = void 0;\n\t\tthis.name = void 0;\n\t\tthis.dynamic = void 0;\n\t\tthis.maxAabbSize = void 0;\n\t\tthis.layers = void 0;\n\t\tthis.id = id;\n\t\tthis.name = name;\n\t\tthis.dynamic = dynamic;\n\t\tthis.maxAabbSize = maxAabbSize;\n\t\tthis.layers = layers;\n\t}\n}\nBatchGroup.MODEL = 'model';\nBatchGroup.ELEMENT = 'element';\nBatchGroup.SPRITE = 'sprite';\nBatchGroup.RENDER = 'render';\n\nexport { BatchGroup };\n", "import { math } from '../core/math/math.js';\nimport { Mat4 } from '../core/math/mat4.js';\nimport { PIXELFORMAT_RGBA32F, FILTER_NEAREST, TEXTURELOCK_READ } from '../platform/graphics/constants.js';\nimport { Texture } from '../platform/graphics/texture.js';\n\nconst _invMatrix = new Mat4();\nclass SkinInstance {\n\tconstructor(skin) {\n\t\tthis.bones = void 0;\n\t\tthis.boneTextureSize = void 0;\n\t\tthis._dirty = true;\n\t\tthis._rootBone = null;\n\t\tthis._skinUpdateIndex = -1;\n\t\tthis._updateBeforeCull = true;\n\t\tif (skin) {\n\t\t\tthis.initSkin(skin);\n\t\t}\n\t}\n\tset rootBone(rootBone) {\n\t\tthis._rootBone = rootBone;\n\t}\n\tget rootBone() {\n\t\treturn this._rootBone;\n\t}\n\tinit(device, numBones) {\n\t\tif (device.supportsBoneTextures) {\n\t\t\tconst numPixels = numBones * 3;\n\t\t\tlet width = Math.ceil(Math.sqrt(numPixels));\n\t\t\twidth = math.roundUp(width, 3);\n\t\t\tconst height = Math.ceil(numPixels / width);\n\t\t\tthis.boneTexture = new Texture(device, {\n\t\t\t\twidth: width,\n\t\t\t\theight: height,\n\t\t\t\tformat: PIXELFORMAT_RGBA32F,\n\t\t\t\tmipmaps: false,\n\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\tname: 'skin'\n\t\t\t});\n\t\t\tthis.boneTextureSize = [width, height, 1.0 / width, 1.0 / height];\n\t\t\tthis.matrixPalette = this.boneTexture.lock({\n\t\t\t\tmode: TEXTURELOCK_READ\n\t\t\t});\n\t\t\tthis.boneTexture.unlock();\n\t\t} else {\n\t\t\tthis.matrixPalette = new Float32Array(numBones * 12);\n\t\t}\n\t}\n\tdestroy() {\n\t\tif (this.boneTexture) {\n\t\t\tthis.boneTexture.destroy();\n\t\t\tthis.boneTexture = null;\n\t\t}\n\t}\n\tresolve(rootBone, entity) {\n\t\tthis.rootBone = rootBone;\n\t\tconst skin = this.skin;\n\t\tconst bones = [];\n\t\tfor (let j = 0; j < skin.boneNames.length; j++) {\n\t\t\tconst boneName = skin.boneNames[j];\n\t\t\tlet bone = rootBone.findByName(boneName);\n\t\t\tif (!bone) {\n\t\t\t\tbone = entity;\n\t\t\t}\n\t\t\tbones.push(bone);\n\t\t}\n\t\tthis.bones = bones;\n\t}\n\tinitSkin(skin) {\n\t\tthis.skin = skin;\n\t\tthis.bones = [];\n\t\tconst numBones = skin.inverseBindPose.length;\n\t\tthis.init(skin.device, numBones);\n\t\tthis.matrices = [];\n\t\tfor (let i = 0; i < numBones; i++) {\n\t\t\tthis.matrices[i] = new Mat4();\n\t\t}\n\t}\n\tuploadBones(device) {\n\t\tif (device.supportsBoneTextures) {\n\t\t\tthis.boneTexture.lock();\n\t\t\tthis.boneTexture.unlock();\n\t\t}\n\t}\n\t_updateMatrices(rootNode, skinUpdateIndex) {\n\t\tif (this._skinUpdateIndex !== skinUpdateIndex) {\n\t\t\tthis._skinUpdateIndex = skinUpdateIndex;\n\t\t\t_invMatrix.copy(rootNode.getWorldTransform()).invert();\n\t\t\tfor (let i = this.bones.length - 1; i >= 0; i--) {\n\t\t\t\tthis.matrices[i].mulAffine2(_invMatrix, this.bones[i].getWorldTransform());\n\t\t\t\tthis.matrices[i].mulAffine2(this.matrices[i], this.skin.inverseBindPose[i]);\n\t\t\t}\n\t\t}\n\t}\n\tupdateMatrices(rootNode, skinUpdateIndex) {\n\t\tif (this._updateBeforeCull) {\n\t\t\tthis._updateMatrices(rootNode, skinUpdateIndex);\n\t\t}\n\t}\n\tupdateMatrixPalette(rootNode, skinUpdateIndex) {\n\t\tthis._updateMatrices(rootNode, skinUpdateIndex);\n\t\tconst mp = this.matrixPalette;\n\t\tconst count = this.bones.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst pe = this.matrices[i].data;\n\t\t\tconst base = i * 12;\n\t\t\tmp[base] = pe[0];\n\t\t\tmp[base + 1] = pe[4];\n\t\t\tmp[base + 2] = pe[8];\n\t\t\tmp[base + 3] = pe[12];\n\t\t\tmp[base + 4] = pe[1];\n\t\t\tmp[base + 5] = pe[5];\n\t\t\tmp[base + 6] = pe[9];\n\t\t\tmp[base + 7] = pe[13];\n\t\t\tmp[base + 8] = pe[2];\n\t\t\tmp[base + 9] = pe[6];\n\t\t\tmp[base + 10] = pe[10];\n\t\t\tmp[base + 11] = pe[14];\n\t\t}\n\t\tthis.uploadBones(this.skin.device);\n\t}\n}\n\nexport { SkinInstance };\n", "class RefCountedObject {\n\tconstructor() {\n\t\tthis._refCount = 0;\n\t}\n\tincRefCount() {\n\t\tthis._refCount++;\n\t}\n\tdecRefCount() {\n\t\tthis._refCount--;\n\t}\n\tget refCount() {\n\t\treturn this._refCount;\n\t}\n}\n\nexport { RefCountedObject };\n", "import { RefCountedObject } from '../core/ref-counted-object.js';\nimport { Vec3 } from '../core/math/vec3.js';\nimport { BoundingBox } from '../core/shape/bounding-box.js';\nimport { SEMANTIC_TANGENT, SEMANTIC_BLENDINDICES, TYPE_UINT8, SEMANTIC_BLENDWEIGHT, SEMANTIC_POSITION, TYPE_UINT16, TYPE_INT16, TYPE_INT8, BUFFER_STATIC, BUFFER_DYNAMIC, TYPE_FLOAT32, SEMANTIC_NORMAL, SEMANTIC_TEXCOORD, SEMANTIC_COLOR, PRIMITIVE_TRIANGLES, PRIMITIVE_POINTS, typedArrayIndexFormats, PRIMITIVE_LINES, INDEXFORMAT_UINT32, INDEXFORMAT_UINT16 } from '../platform/graphics/constants.js';\nimport { IndexBuffer } from '../platform/graphics/index-buffer.js';\nimport { VertexBuffer } from '../platform/graphics/vertex-buffer.js';\nimport { VertexFormat } from '../platform/graphics/vertex-format.js';\nimport { VertexIterator } from '../platform/graphics/vertex-iterator.js';\nimport { RENDERSTYLE_WIREFRAME, RENDERSTYLE_POINTS, RENDERSTYLE_SOLID } from './constants.js';\n\nlet id = 0;\nclass GeometryData {\n\tconstructor() {\n\t\tthis.initDefaults();\n\t}\n\tinitDefaults() {\n\t\tthis.recreate = false;\n\t\tthis.verticesUsage = BUFFER_STATIC;\n\t\tthis.indicesUsage = BUFFER_STATIC;\n\t\tthis.maxVertices = 0;\n\t\tthis.maxIndices = 0;\n\t\tthis.vertexCount = 0;\n\t\tthis.indexCount = 0;\n\t\tthis.vertexStreamsUpdated = false;\n\t\tthis.indexStreamUpdated = false;\n\t\tthis.vertexStreamDictionary = {};\n\t\tthis.indices = null;\n\t}\n\t_changeVertexCount(count, semantic) {\n\t\tif (!this.vertexCount) {\n\t\t\tthis.vertexCount = count;\n\t\t}\n\t}\n}\nGeometryData.DEFAULT_COMPONENTS_POSITION = 3;\nGeometryData.DEFAULT_COMPONENTS_NORMAL = 3;\nGeometryData.DEFAULT_COMPONENTS_UV = 2;\nGeometryData.DEFAULT_COMPONENTS_COLORS = 4;\nclass GeometryVertexStream {\n\tconstructor(data, componentCount, dataType, dataTypeNormalize, asInt) {\n\t\tthis.data = data;\n\t\tthis.componentCount = componentCount;\n\t\tthis.dataType = dataType;\n\t\tthis.dataTypeNormalize = dataTypeNormalize;\n\t\tthis.asInt = asInt;\n\t}\n}\nclass Mesh extends RefCountedObject {\n\tconstructor(graphicsDevice, options) {\n\t\tsuper();\n\t\tthis._aabbVer = 0;\n\t\tthis._aabb = new BoundingBox();\n\t\tthis._storageVertex = false;\n\t\tthis._storageIndex = false;\n\t\tthis.id = id++;\n\t\tthis.device = graphicsDevice;\n\t\tthis._storageIndex = (options == null ? void 0 : options.storageIndex) || false;\n\t\tthis._storageVertex = (options == null ? void 0 : options.storageVertex) || false;\n\t\tthis.vertexBuffer = null;\n\t\tthis.indexBuffer = [null];\n\t\tthis.primitive = [{\n\t\t\ttype: 0,\n\t\t\tbase: 0,\n\t\t\tcount: 0\n\t\t}];\n\t\tthis.skin = null;\n\t\tthis._morph = null;\n\t\tthis._geometryData = null;\n\t\tthis.boneAabb = null;\n\t}\n\tstatic fromGeometry(graphicsDevice, geometry, options = {}) {\n\t\tconst mesh = new Mesh(graphicsDevice, options);\n\t\tconst {\n\t\t\tpositions,\n\t\t\tnormals,\n\t\t\ttangents,\n\t\t\tcolors,\n\t\t\tuvs,\n\t\t\tuvs1,\n\t\t\tblendIndices,\n\t\t\tblendWeights,\n\t\t\tindices\n\t\t} = geometry;\n\t\tif (positions) {\n\t\t\tmesh.setPositions(positions);\n\t\t}\n\t\tif (normals) {\n\t\t\tmesh.setNormals(normals);\n\t\t}\n\t\tif (tangents) {\n\t\t\tmesh.setVertexStream(SEMANTIC_TANGENT, tangents, 4);\n\t\t}\n\t\tif (colors) {\n\t\t\tmesh.setColors32(colors);\n\t\t}\n\t\tif (uvs) {\n\t\t\tmesh.setUvs(0, uvs);\n\t\t}\n\t\tif (uvs1) {\n\t\t\tmesh.setUvs(1, uvs1);\n\t\t}\n\t\tif (blendIndices) {\n\t\t\tmesh.setVertexStream(SEMANTIC_BLENDINDICES, blendIndices, 4, blendIndices.length / 4, TYPE_UINT8);\n\t\t}\n\t\tif (blendWeights) {\n\t\t\tmesh.setVertexStream(SEMANTIC_BLENDWEIGHT, blendWeights, 4);\n\t\t}\n\t\tif (indices) {\n\t\t\tmesh.setIndices(indices);\n\t\t}\n\t\tmesh.update();\n\t\treturn mesh;\n\t}\n\tset morph(morph) {\n\t\tif (morph !== this._morph) {\n\t\t\tif (this._morph) {\n\t\t\t\tthis._morph.decRefCount();\n\t\t\t}\n\t\t\tthis._morph = morph;\n\t\t\tif (morph) {\n\t\t\t\tmorph.incRefCount();\n\t\t\t}\n\t\t}\n\t}\n\tget morph() {\n\t\treturn this._morph;\n\t}\n\tset aabb(aabb) {\n\t\tthis._aabb = aabb;\n\t\tthis._aabbVer++;\n\t}\n\tget aabb() {\n\t\treturn this._aabb;\n\t}\n\tdestroy() {\n\t\tconst morph = this.morph;\n\t\tif (morph) {\n\t\t\tthis.morph = null;\n\t\t\tif (morph.refCount < 1) {\n\t\t\t\tmorph.destroy();\n\t\t\t}\n\t\t}\n\t\tif (this.vertexBuffer) {\n\t\t\tthis.vertexBuffer.destroy();\n\t\t\tthis.vertexBuffer = null;\n\t\t}\n\t\tfor (let j = 0; j < this.indexBuffer.length; j++) {\n\t\t\tthis._destroyIndexBuffer(j);\n\t\t}\n\t\tthis.indexBuffer.length = 0;\n\t\tthis._geometryData = null;\n\t}\n\t_destroyIndexBuffer(index) {\n\t\tif (this.indexBuffer[index]) {\n\t\t\tthis.indexBuffer[index].destroy();\n\t\t\tthis.indexBuffer[index] = null;\n\t\t}\n\t}\n\t_initBoneAabbs(morphTargets) {\n\t\tthis.boneAabb = [];\n\t\tthis.boneUsed = [];\n\t\tlet x, y, z;\n\t\tlet bMax, bMin;\n\t\tconst boneMin = [];\n\t\tconst boneMax = [];\n\t\tconst boneUsed = this.boneUsed;\n\t\tconst numBones = this.skin.boneNames.length;\n\t\tlet maxMorphX, maxMorphY, maxMorphZ;\n\t\tfor (let i = 0; i < numBones; i++) {\n\t\t\tboneMin[i] = new Vec3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n\t\t\tboneMax[i] = new Vec3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\n\t\t}\n\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\tconst posElement = iterator.element[SEMANTIC_POSITION];\n\t\tconst weightsElement = iterator.element[SEMANTIC_BLENDWEIGHT];\n\t\tconst indicesElement = iterator.element[SEMANTIC_BLENDINDICES];\n\t\tconst numVerts = this.vertexBuffer.numVertices;\n\t\tfor (let j = 0; j < numVerts; j++) {\n\t\t\tfor (let k = 0; k < 4; k++) {\n\t\t\t\tconst boneWeight = weightsElement.array[weightsElement.index + k];\n\t\t\t\tif (boneWeight > 0) {\n\t\t\t\t\tconst boneIndex = indicesElement.array[indicesElement.index + k];\n\t\t\t\t\tboneUsed[boneIndex] = true;\n\t\t\t\t\tx = posElement.array[posElement.index];\n\t\t\t\t\ty = posElement.array[posElement.index + 1];\n\t\t\t\t\tz = posElement.array[posElement.index + 2];\n\t\t\t\t\tbMax = boneMax[boneIndex];\n\t\t\t\t\tbMin = boneMin[boneIndex];\n\t\t\t\t\tif (bMin.x > x) bMin.x = x;\n\t\t\t\t\tif (bMin.y > y) bMin.y = y;\n\t\t\t\t\tif (bMin.z > z) bMin.z = z;\n\t\t\t\t\tif (bMax.x < x) bMax.x = x;\n\t\t\t\t\tif (bMax.y < y) bMax.y = y;\n\t\t\t\t\tif (bMax.z < z) bMax.z = z;\n\t\t\t\t\tif (morphTargets) {\n\t\t\t\t\t\tlet minMorphX = maxMorphX = x;\n\t\t\t\t\t\tlet minMorphY = maxMorphY = y;\n\t\t\t\t\t\tlet minMorphZ = maxMorphZ = z;\n\t\t\t\t\t\tfor (let l = 0; l < morphTargets.length; l++) {\n\t\t\t\t\t\t\tconst target = morphTargets[l];\n\t\t\t\t\t\t\tconst dx = target.deltaPositions[j * 3];\n\t\t\t\t\t\t\tconst dy = target.deltaPositions[j * 3 + 1];\n\t\t\t\t\t\t\tconst dz = target.deltaPositions[j * 3 + 2];\n\t\t\t\t\t\t\tif (dx < 0) {\n\t\t\t\t\t\t\t\tminMorphX += dx;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmaxMorphX += dx;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (dy < 0) {\n\t\t\t\t\t\t\t\tminMorphY += dy;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmaxMorphY += dy;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (dz < 0) {\n\t\t\t\t\t\t\t\tminMorphZ += dz;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmaxMorphZ += dz;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (bMin.x > minMorphX) bMin.x = minMorphX;\n\t\t\t\t\t\tif (bMin.y > minMorphY) bMin.y = minMorphY;\n\t\t\t\t\t\tif (bMin.z > minMorphZ) bMin.z = minMorphZ;\n\t\t\t\t\t\tif (bMax.x < maxMorphX) bMax.x = maxMorphX;\n\t\t\t\t\t\tif (bMax.y < maxMorphY) bMax.y = maxMorphY;\n\t\t\t\t\t\tif (bMax.z < maxMorphZ) bMax.z = maxMorphZ;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\titerator.next();\n\t\t}\n\t\tconst positionElement = this.vertexBuffer.getFormat().elements.find(e => e.name === SEMANTIC_POSITION);\n\t\tif (positionElement && positionElement.normalize) {\n\t\t\tconst func = (() => {\n\t\t\t\tswitch (positionElement.dataType) {\n\t\t\t\t\tcase TYPE_INT8:\n\t\t\t\t\t\treturn x => Math.max(x / 127.0, -1.0);\n\t\t\t\t\tcase TYPE_UINT8:\n\t\t\t\t\t\treturn x => x / 255.0;\n\t\t\t\t\tcase TYPE_INT16:\n\t\t\t\t\t\treturn x => Math.max(x / 32767.0, -1.0);\n\t\t\t\t\tcase TYPE_UINT16:\n\t\t\t\t\t\treturn x => x / 65535.0;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn x => x;\n\t\t\t\t}\n\t\t\t})();\n\t\t\tfor (let i = 0; i < numBones; i++) {\n\t\t\t\tif (boneUsed[i]) {\n\t\t\t\t\tconst min = boneMin[i];\n\t\t\t\t\tconst max = boneMax[i];\n\t\t\t\t\tmin.set(func(min.x), func(min.y), func(min.z));\n\t\t\t\t\tmax.set(func(max.x), func(max.y), func(max.z));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < numBones; i++) {\n\t\t\tconst aabb = new BoundingBox();\n\t\t\taabb.setMinMax(boneMin[i], boneMax[i]);\n\t\t\tthis.boneAabb.push(aabb);\n\t\t}\n\t}\n\t_initGeometryData() {\n\t\tif (!this._geometryData) {\n\t\t\tthis._geometryData = new GeometryData();\n\t\t\tif (this.vertexBuffer) {\n\t\t\t\tthis._geometryData.vertexCount = this.vertexBuffer.numVertices;\n\t\t\t\tthis._geometryData.maxVertices = this.vertexBuffer.numVertices;\n\t\t\t}\n\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\tthis._geometryData.indexCount = this.indexBuffer[0].numIndices;\n\t\t\t\tthis._geometryData.maxIndices = this.indexBuffer[0].numIndices;\n\t\t\t}\n\t\t}\n\t}\n\tclear(verticesDynamic, indicesDynamic, maxVertices = 0, maxIndices = 0) {\n\t\tthis._initGeometryData();\n\t\tthis._geometryData.initDefaults();\n\t\tthis._geometryData.recreate = true;\n\t\tthis._geometryData.maxVertices = maxVertices;\n\t\tthis._geometryData.maxIndices = maxIndices;\n\t\tthis._geometryData.verticesUsage = verticesDynamic ? BUFFER_STATIC : BUFFER_DYNAMIC;\n\t\tthis._geometryData.indicesUsage = indicesDynamic ? BUFFER_STATIC : BUFFER_DYNAMIC;\n\t}\n\tsetVertexStream(semantic, data, componentCount, numVertices, dataType = TYPE_FLOAT32, dataTypeNormalize = false, asInt = false) {\n\t\tthis._initGeometryData();\n\t\tconst vertexCount = numVertices || data.length / componentCount;\n\t\tthis._geometryData._changeVertexCount(vertexCount, semantic);\n\t\tthis._geometryData.vertexStreamsUpdated = true;\n\t\tthis._geometryData.vertexStreamDictionary[semantic] = new GeometryVertexStream(data, componentCount, dataType, dataTypeNormalize, asInt);\n\t}\n\tgetVertexStream(semantic, data) {\n\t\tlet count = 0;\n\t\tlet done = false;\n\t\tif (this._geometryData) {\n\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\tif (stream) {\n\t\t\t\tdone = true;\n\t\t\t\tcount = this._geometryData.vertexCount;\n\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\tdata.set(stream.data);\n\t\t\t\t} else {\n\t\t\t\t\tdata.length = 0;\n\t\t\t\t\tdata.push(stream.data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!done) {\n\t\t\tif (this.vertexBuffer) {\n\t\t\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\t\t\tcount = iterator.readData(semantic, data);\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n\tsetPositions(positions, componentCount = GeometryData.DEFAULT_COMPONENTS_POSITION, numVertices) {\n\t\tthis.setVertexStream(SEMANTIC_POSITION, positions, componentCount, numVertices, TYPE_FLOAT32, false);\n\t}\n\tsetNormals(normals, componentCount = GeometryData.DEFAULT_COMPONENTS_NORMAL, numVertices) {\n\t\tthis.setVertexStream(SEMANTIC_NORMAL, normals, componentCount, numVertices, TYPE_FLOAT32, false);\n\t}\n\tsetUvs(channel, uvs, componentCount = GeometryData.DEFAULT_COMPONENTS_UV, numVertices) {\n\t\tthis.setVertexStream(SEMANTIC_TEXCOORD + channel, uvs, componentCount, numVertices, TYPE_FLOAT32, false);\n\t}\n\tsetColors(colors, componentCount = GeometryData.DEFAULT_COMPONENTS_COLORS, numVertices) {\n\t\tthis.setVertexStream(SEMANTIC_COLOR, colors, componentCount, numVertices, TYPE_FLOAT32, false);\n\t}\n\tsetColors32(colors, numVertices) {\n\t\tthis.setVertexStream(SEMANTIC_COLOR, colors, GeometryData.DEFAULT_COMPONENTS_COLORS, numVertices, TYPE_UINT8, true);\n\t}\n\tsetIndices(indices, numIndices) {\n\t\tthis._initGeometryData();\n\t\tthis._geometryData.indexStreamUpdated = true;\n\t\tthis._geometryData.indices = indices;\n\t\tthis._geometryData.indexCount = numIndices || indices.length;\n\t}\n\tgetPositions(positions) {\n\t\treturn this.getVertexStream(SEMANTIC_POSITION, positions);\n\t}\n\tgetNormals(normals) {\n\t\treturn this.getVertexStream(SEMANTIC_NORMAL, normals);\n\t}\n\tgetUvs(channel, uvs) {\n\t\treturn this.getVertexStream(SEMANTIC_TEXCOORD + channel, uvs);\n\t}\n\tgetColors(colors) {\n\t\treturn this.getVertexStream(SEMANTIC_COLOR, colors);\n\t}\n\tgetIndices(indices) {\n\t\tlet count = 0;\n\t\tif (this._geometryData && this._geometryData.indices) {\n\t\t\tconst streamIndices = this._geometryData.indices;\n\t\t\tcount = this._geometryData.indexCount;\n\t\t\tif (ArrayBuffer.isView(indices)) {\n\t\t\t\tindices.set(streamIndices);\n\t\t\t} else {\n\t\t\t\tindices.length = 0;\n\t\t\t\tfor (let i = 0, il = streamIndices.length; i < il; i++) {\n\t\t\t\t\tindices.push(streamIndices[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\tconst indexBuffer = this.indexBuffer[0];\n\t\t\t\tcount = indexBuffer.readData(indices);\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n\tupdate(primitiveType = PRIMITIVE_TRIANGLES, updateBoundingBox = true) {\n\t\tif (this._geometryData) {\n\t\t\tif (updateBoundingBox) {\n\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[SEMANTIC_POSITION];\n\t\t\t\tif (stream) {\n\t\t\t\t\tif (stream.componentCount === 3) {\n\t\t\t\t\t\tthis._aabb.compute(stream.data, this._geometryData.vertexCount);\n\t\t\t\t\t\tthis._aabbVer++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet destroyVB = this._geometryData.recreate;\n\t\t\tif (this._geometryData.vertexCount > this._geometryData.maxVertices) {\n\t\t\t\tdestroyVB = true;\n\t\t\t\tthis._geometryData.maxVertices = this._geometryData.vertexCount;\n\t\t\t}\n\t\t\tif (destroyVB) {\n\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\tthis.vertexBuffer.destroy();\n\t\t\t\t\tthis.vertexBuffer = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet destroyIB = this._geometryData.recreate;\n\t\t\tif (this._geometryData.indexCount > this._geometryData.maxIndices) {\n\t\t\t\tdestroyIB = true;\n\t\t\t\tthis._geometryData.maxIndices = this._geometryData.indexCount;\n\t\t\t}\n\t\t\tif (destroyIB) {\n\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\tthis.indexBuffer[0].destroy();\n\t\t\t\t\tthis.indexBuffer[0] = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._geometryData.vertexStreamsUpdated) {\n\t\t\t\tthis._updateVertexBuffer();\n\t\t\t}\n\t\t\tif (this._geometryData.indexStreamUpdated) {\n\t\t\t\tthis._updateIndexBuffer();\n\t\t\t}\n\t\t\tthis.primitive[0].type = primitiveType;\n\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\tif (this._geometryData.indexStreamUpdated) {\n\t\t\t\t\tthis.primitive[0].count = this._geometryData.indexCount;\n\t\t\t\t\tthis.primitive[0].indexed = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this._geometryData.vertexStreamsUpdated) {\n\t\t\t\t\tthis.primitive[0].count = this._geometryData.vertexCount;\n\t\t\t\t\tthis.primitive[0].indexed = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._geometryData.vertexCount = 0;\n\t\t\tthis._geometryData.indexCount = 0;\n\t\t\tthis._geometryData.vertexStreamsUpdated = false;\n\t\t\tthis._geometryData.indexStreamUpdated = false;\n\t\t\tthis._geometryData.recreate = false;\n\t\t\tthis.updateRenderStates();\n\t\t}\n\t}\n\t_buildVertexFormat(vertexCount) {\n\t\tconst vertexDesc = [];\n\t\tfor (const semantic in this._geometryData.vertexStreamDictionary) {\n\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\tvertexDesc.push({\n\t\t\t\tsemantic: semantic,\n\t\t\t\tcomponents: stream.componentCount,\n\t\t\t\ttype: stream.dataType,\n\t\t\t\tnormalize: stream.dataTypeNormalize,\n\t\t\t\tasInt: stream.asInt\n\t\t\t});\n\t\t}\n\t\treturn new VertexFormat(this.device, vertexDesc, vertexCount);\n\t}\n\t_updateVertexBuffer() {\n\t\tif (!this.vertexBuffer) {\n\t\t\tconst allocateVertexCount = this._geometryData.maxVertices;\n\t\t\tconst format = this._buildVertexFormat(allocateVertexCount);\n\t\t\tthis.vertexBuffer = new VertexBuffer(this.device, format, allocateVertexCount, {\n\t\t\t\tusage: this._geometryData.verticesUsage,\n\t\t\t\tstorage: this._storageVertex\n\t\t\t});\n\t\t}\n\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\tconst numVertices = this._geometryData.vertexCount;\n\t\tfor (const semantic in this._geometryData.vertexStreamDictionary) {\n\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\titerator.writeData(semantic, stream.data, numVertices);\n\t\t\tdelete this._geometryData.vertexStreamDictionary[semantic];\n\t\t}\n\t\titerator.end();\n\t}\n\t_updateIndexBuffer() {\n\t\tif (this.indexBuffer.length <= 0 || !this.indexBuffer[0]) {\n\t\t\tconst maxVertices = this._geometryData.maxVertices;\n\t\t\tconst createFormat = maxVertices > 0xffff || maxVertices === 0 ? INDEXFORMAT_UINT32 : INDEXFORMAT_UINT16;\n\t\t\tconst options = this._storageIndex ? {\n\t\t\t\tstorage: true\n\t\t\t} : undefined;\n\t\t\tthis.indexBuffer[0] = new IndexBuffer(this.device, createFormat, this._geometryData.maxIndices, this._geometryData.indicesUsage, undefined, options);\n\t\t}\n\t\tconst srcIndices = this._geometryData.indices;\n\t\tif (srcIndices) {\n\t\t\tconst indexBuffer = this.indexBuffer[0];\n\t\t\tindexBuffer.writeData(srcIndices, this._geometryData.indexCount);\n\t\t\tthis._geometryData.indices = null;\n\t\t}\n\t}\n\tprepareRenderState(renderStyle) {\n\t\tif (renderStyle === RENDERSTYLE_WIREFRAME) {\n\t\t\tthis.generateWireframe();\n\t\t} else if (renderStyle === RENDERSTYLE_POINTS) {\n\t\t\tthis.primitive[RENDERSTYLE_POINTS] = {\n\t\t\t\ttype: PRIMITIVE_POINTS,\n\t\t\t\tbase: 0,\n\t\t\t\tcount: this.vertexBuffer ? this.vertexBuffer.numVertices : 0,\n\t\t\t\tindexed: false\n\t\t\t};\n\t\t}\n\t}\n\tupdateRenderStates() {\n\t\tif (this.primitive[RENDERSTYLE_POINTS]) {\n\t\t\tthis.prepareRenderState(RENDERSTYLE_POINTS);\n\t\t}\n\t\tif (this.primitive[RENDERSTYLE_WIREFRAME]) {\n\t\t\tthis.prepareRenderState(RENDERSTYLE_WIREFRAME);\n\t\t}\n\t}\n\tgenerateWireframe() {\n\t\tthis._destroyIndexBuffer(RENDERSTYLE_WIREFRAME);\n\t\tconst numVertices = this.vertexBuffer.numVertices;\n\t\tconst lines = [];\n\t\tlet format;\n\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\tconst offsets = [[0, 1], [1, 2], [2, 0]];\n\t\t\tconst base = this.primitive[RENDERSTYLE_SOLID].base;\n\t\t\tconst count = this.primitive[RENDERSTYLE_SOLID].count;\n\t\t\tconst indexBuffer = this.indexBuffer[RENDERSTYLE_SOLID];\n\t\t\tconst srcIndices = new typedArrayIndexFormats[indexBuffer.format](indexBuffer.storage);\n\t\t\tconst seen = new Set();\n\t\t\tfor (let j = base; j < base + count; j += 3) {\n\t\t\t\tfor (let k = 0; k < 3; k++) {\n\t\t\t\t\tconst i1 = srcIndices[j + offsets[k][0]];\n\t\t\t\t\tconst i2 = srcIndices[j + offsets[k][1]];\n\t\t\t\t\tconst hash = i1 > i2 ? i2 * numVertices + i1 : i1 * numVertices + i2;\n\t\t\t\t\tif (!seen.has(hash)) {\n\t\t\t\t\t\tseen.add(hash);\n\t\t\t\t\t\tlines.push(i1, i2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tformat = indexBuffer.format;\n\t\t} else {\n\t\t\tfor (let i = 0; i < numVertices; i += 3) {\n\t\t\t\tlines.push(i, i + 1, i + 1, i + 2, i + 2, i);\n\t\t\t}\n\t\t\tformat = lines.length > 65535 ? INDEXFORMAT_UINT32 : INDEXFORMAT_UINT16;\n\t\t}\n\t\tconst wireBuffer = new IndexBuffer(this.vertexBuffer.device, format, lines.length);\n\t\tconst dstIndices = new typedArrayIndexFormats[wireBuffer.format](wireBuffer.storage);\n\t\tdstIndices.set(lines);\n\t\twireBuffer.unlock();\n\t\tthis.primitive[RENDERSTYLE_WIREFRAME] = {\n\t\t\ttype: PRIMITIVE_LINES,\n\t\t\tbase: 0,\n\t\t\tcount: lines.length,\n\t\t\tindexed: true\n\t\t};\n\t\tthis.indexBuffer[RENDERSTYLE_WIREFRAME] = wireBuffer;\n\t}\n}\n\nexport { Mesh };\n", "import { EventHandler } from '../core/event-handler.js';\nimport { Tags } from '../core/tags.js';\nimport { Mat3 } from '../core/math/mat3.js';\nimport { Mat4 } from '../core/math/mat4.js';\nimport { Quat } from '../core/math/quat.js';\nimport { Vec3 } from '../core/math/vec3.js';\n\nconst scaleCompensatePosTransform = new Mat4();\nconst scaleCompensatePos = new Vec3();\nconst scaleCompensateRot = new Quat();\nconst scaleCompensateRot2 = new Quat();\nconst scaleCompensateScale = new Vec3();\nconst scaleCompensateScaleForParent = new Vec3();\nconst tmpMat4 = new Mat4();\nconst tmpQuat = new Quat();\nconst position = new Vec3();\nconst invParentWtm = new Mat4();\nconst rotation = new Quat();\nconst invParentRot = new Quat();\nconst matrix = new Mat4();\nconst target = new Vec3();\nconst up = new Vec3();\nfunction createTest(attr, value) {\n\tif (attr instanceof Function) {\n\t\treturn attr;\n\t}\n\treturn node => {\n\t\tlet x = node[attr];\n\t\tif (x instanceof Function) {\n\t\t\tx = x();\n\t\t}\n\t\treturn x === value;\n\t};\n}\nfunction findNode(node, test) {\n\tif (test(node)) return node;\n\tconst children = node._children;\n\tconst len = children.length;\n\tfor (let i = 0; i < len; ++i) {\n\t\tconst result = findNode(children[i], test);\n\t\tif (result) return result;\n\t}\n\treturn null;\n}\nclass GraphNode extends EventHandler {\n\tconstructor(name = 'Untitled') {\n\t\tsuper();\n\t\tthis.name = void 0;\n\t\tthis.tags = new Tags(this);\n\t\tthis._labels = {};\n\t\tthis.localPosition = new Vec3();\n\t\tthis.localRotation = new Quat();\n\t\tthis.localScale = new Vec3(1, 1, 1);\n\t\tthis.localEulerAngles = new Vec3();\n\t\tthis.position = new Vec3();\n\t\tthis.rotation = new Quat();\n\t\tthis.eulerAngles = new Vec3();\n\t\tthis._scale = null;\n\t\tthis.localTransform = new Mat4();\n\t\tthis._dirtyLocal = false;\n\t\tthis._aabbVer = 0;\n\t\tthis._frozen = false;\n\t\tthis.worldTransform = new Mat4();\n\t\tthis._dirtyWorld = false;\n\t\tthis._worldScaleSign = 0;\n\t\tthis._normalMatrix = new Mat3();\n\t\tthis._dirtyNormal = true;\n\t\tthis._right = null;\n\t\tthis._up = null;\n\t\tthis._forward = null;\n\t\tthis._parent = null;\n\t\tthis._children = [];\n\t\tthis._graphDepth = 0;\n\t\tthis._enabled = true;\n\t\tthis._enabledInHierarchy = false;\n\t\tthis.scaleCompensation = false;\n\t\tthis.name = name;\n\t}\n\tget right() {\n\t\tif (!this._right) {\n\t\t\tthis._right = new Vec3();\n\t\t}\n\t\treturn this.getWorldTransform().getX(this._right).normalize();\n\t}\n\tget up() {\n\t\tif (!this._up) {\n\t\t\tthis._up = new Vec3();\n\t\t}\n\t\treturn this.getWorldTransform().getY(this._up).normalize();\n\t}\n\tget forward() {\n\t\tif (!this._forward) {\n\t\t\tthis._forward = new Vec3();\n\t\t}\n\t\treturn this.getWorldTransform().getZ(this._forward).normalize().mulScalar(-1);\n\t}\n\tget normalMatrix() {\n\t\tconst normalMat = this._normalMatrix;\n\t\tif (this._dirtyNormal) {\n\t\t\tnormalMat.invertMat4(this.getWorldTransform()).transpose();\n\t\t\tthis._dirtyNormal = false;\n\t\t}\n\t\treturn normalMat;\n\t}\n\tset enabled(enabled) {\n\t\tif (this._enabled !== enabled) {\n\t\t\tvar _this$_parent;\n\t\t\tthis._enabled = enabled;\n\t\t\tif (enabled && (_this$_parent = this._parent) != null && _this$_parent.enabled || !enabled) {\n\t\t\t\tthis._notifyHierarchyStateChanged(this, enabled);\n\t\t\t}\n\t\t}\n\t}\n\tget enabled() {\n\t\treturn this._enabled && this._enabledInHierarchy;\n\t}\n\tget parent() {\n\t\treturn this._parent;\n\t}\n\tget path() {\n\t\tlet node = this._parent;\n\t\tif (!node) {\n\t\t\treturn '';\n\t\t}\n\t\tlet result = this.name;\n\t\twhile (node && node._parent) {\n\t\t\tresult = `${node.name}/${result}`;\n\t\t\tnode = node._parent;\n\t\t}\n\t\treturn result;\n\t}\n\tget root() {\n\t\tlet result = this;\n\t\twhile (result._parent) {\n\t\t\tresult = result._parent;\n\t\t}\n\t\treturn result;\n\t}\n\tget children() {\n\t\treturn this._children;\n\t}\n\tget graphDepth() {\n\t\treturn this._graphDepth;\n\t}\n\t_notifyHierarchyStateChanged(node, enabled) {\n\t\tnode._onHierarchyStateChanged(enabled);\n\t\tconst c = node._children;\n\t\tfor (let i = 0, len = c.length; i < len; i++) {\n\t\t\tif (c[i]._enabled) this._notifyHierarchyStateChanged(c[i], enabled);\n\t\t}\n\t}\n\t_onHierarchyStateChanged(enabled) {\n\t\tthis._enabledInHierarchy = enabled;\n\t\tif (enabled && !this._frozen) this._unfreezeParentToRoot();\n\t}\n\t_cloneInternal(clone) {\n\t\tclone.name = this.name;\n\t\tconst tags = this.tags._list;\n\t\tclone.tags.clear();\n\t\tfor (let i = 0; i < tags.length; i++) clone.tags.add(tags[i]);\n\t\tclone._labels = Object.assign({}, this._labels);\n\t\tclone.localPosition.copy(this.localPosition);\n\t\tclone.localRotation.copy(this.localRotation);\n\t\tclone.localScale.copy(this.localScale);\n\t\tclone.localEulerAngles.copy(this.localEulerAngles);\n\t\tclone.position.copy(this.position);\n\t\tclone.rotation.copy(this.rotation);\n\t\tclone.eulerAngles.copy(this.eulerAngles);\n\t\tclone.localTransform.copy(this.localTransform);\n\t\tclone._dirtyLocal = this._dirtyLocal;\n\t\tclone.worldTransform.copy(this.worldTransform);\n\t\tclone._dirtyWorld = this._dirtyWorld;\n\t\tclone._dirtyNormal = this._dirtyNormal;\n\t\tclone._aabbVer = this._aabbVer + 1;\n\t\tclone._enabled = this._enabled;\n\t\tclone.scaleCompensation = this.scaleCompensation;\n\t\tclone._enabledInHierarchy = false;\n\t}\n\tclone() {\n\t\tconst clone = new this.constructor();\n\t\tthis._cloneInternal(clone);\n\t\treturn clone;\n\t}\n\tcopy(source) {\n\t\tsource._cloneInternal(this);\n\t\treturn this;\n\t}\n\tdestroy() {\n\t\tthis.remove();\n\t\tconst children = this._children;\n\t\twhile (children.length) {\n\t\t\tconst child = children.pop();\n\t\t\tchild._parent = null;\n\t\t\tchild.destroy();\n\t\t}\n\t\tthis.fire('destroy', this);\n\t\tthis.off();\n\t}\n\tfind(attr, value) {\n\t\tconst results = [];\n\t\tconst test = createTest(attr, value);\n\t\tthis.forEach(node => {\n\t\t\tif (test(node)) results.push(node);\n\t\t});\n\t\treturn results;\n\t}\n\tfindOne(attr, value) {\n\t\tconst test = createTest(attr, value);\n\t\treturn findNode(this, test);\n\t}\n\tfindByTag() {\n\t\tconst query = arguments;\n\t\tconst results = [];\n\t\tconst queryNode = (node, checkNode) => {\n\t\t\tif (checkNode && node.tags.has(...query)) {\n\t\t\t\tresults.push(node);\n\t\t\t}\n\t\t\tfor (let i = 0; i < node._children.length; i++) {\n\t\t\t\tqueryNode(node._children[i], true);\n\t\t\t}\n\t\t};\n\t\tqueryNode(this, false);\n\t\treturn results;\n\t}\n\tfindByName(name) {\n\t\treturn this.findOne('name', name);\n\t}\n\tfindByPath(path) {\n\t\tconst parts = Array.isArray(path) ? path : path.split('/');\n\t\tlet result = this;\n\t\tfor (let i = 0, imax = parts.length; i < imax; ++i) {\n\t\t\tresult = result.children.find(c => c.name === parts[i]);\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\tforEach(callback, thisArg) {\n\t\tcallback.call(thisArg, this);\n\t\tconst children = this._children;\n\t\tconst len = children.length;\n\t\tfor (let i = 0; i < len; ++i) {\n\t\t\tchildren[i].forEach(callback, thisArg);\n\t\t}\n\t}\n\tisDescendantOf(node) {\n\t\tlet parent = this._parent;\n\t\twhile (parent) {\n\t\t\tif (parent === node) return true;\n\t\t\tparent = parent._parent;\n\t\t}\n\t\treturn false;\n\t}\n\tisAncestorOf(node) {\n\t\treturn node.isDescendantOf(this);\n\t}\n\tgetEulerAngles() {\n\t\tthis.getWorldTransform().getEulerAngles(this.eulerAngles);\n\t\treturn this.eulerAngles;\n\t}\n\tgetLocalEulerAngles() {\n\t\tthis.localRotation.getEulerAngles(this.localEulerAngles);\n\t\treturn this.localEulerAngles;\n\t}\n\tgetLocalPosition() {\n\t\treturn this.localPosition;\n\t}\n\tgetLocalRotation() {\n\t\treturn this.localRotation;\n\t}\n\tgetLocalScale() {\n\t\treturn this.localScale;\n\t}\n\tgetLocalTransform() {\n\t\tif (this._dirtyLocal) {\n\t\t\tthis.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale);\n\t\t\tthis._dirtyLocal = false;\n\t\t}\n\t\treturn this.localTransform;\n\t}\n\tgetPosition() {\n\t\tthis.getWorldTransform().getTranslation(this.position);\n\t\treturn this.position;\n\t}\n\tgetRotation() {\n\t\tthis.rotation.setFromMat4(this.getWorldTransform());\n\t\treturn this.rotation;\n\t}\n\tgetScale() {\n\t\tif (!this._scale) {\n\t\t\tthis._scale = new Vec3();\n\t\t}\n\t\treturn this.getWorldTransform().getScale(this._scale);\n\t}\n\tgetWorldTransform() {\n\t\tif (!this._dirtyLocal && !this._dirtyWorld) return this.worldTransform;\n\t\tif (this._parent) this._parent.getWorldTransform();\n\t\tthis._sync();\n\t\treturn this.worldTransform;\n\t}\n\tget worldScaleSign() {\n\t\tif (this._worldScaleSign === 0) {\n\t\t\tthis._worldScaleSign = this.getWorldTransform().scaleSign;\n\t\t}\n\t\treturn this._worldScaleSign;\n\t}\n\tremove() {\n\t\tvar _this$_parent2;\n\t\t(_this$_parent2 = this._parent) == null || _this$_parent2.removeChild(this);\n\t}\n\treparent(parent, index) {\n\t\tthis.remove();\n\t\tif (parent) {\n\t\t\tif (index >= 0) {\n\t\t\t\tparent.insertChild(this, index);\n\t\t\t} else {\n\t\t\t\tparent.addChild(this);\n\t\t\t}\n\t\t}\n\t}\n\tsetLocalEulerAngles(x, y, z) {\n\t\tthis.localRotation.setFromEulerAngles(x, y, z);\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\tsetLocalPosition(x, y, z) {\n\t\tif (x instanceof Vec3) {\n\t\t\tthis.localPosition.copy(x);\n\t\t} else {\n\t\t\tthis.localPosition.set(x, y, z);\n\t\t}\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\tsetLocalRotation(x, y, z, w) {\n\t\tif (x instanceof Quat) {\n\t\t\tthis.localRotation.copy(x);\n\t\t} else {\n\t\t\tthis.localRotation.set(x, y, z, w);\n\t\t}\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\tsetLocalScale(x, y, z) {\n\t\tif (x instanceof Vec3) {\n\t\t\tthis.localScale.copy(x);\n\t\t} else {\n\t\t\tthis.localScale.set(x, y, z);\n\t\t}\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\t_dirtifyLocal() {\n\t\tif (!this._dirtyLocal) {\n\t\t\tthis._dirtyLocal = true;\n\t\t\tif (!this._dirtyWorld) this._dirtifyWorld();\n\t\t}\n\t}\n\t_unfreezeParentToRoot() {\n\t\tlet p = this._parent;\n\t\twhile (p) {\n\t\t\tp._frozen = false;\n\t\t\tp = p._parent;\n\t\t}\n\t}\n\t_dirtifyWorld() {\n\t\tif (!this._dirtyWorld) this._unfreezeParentToRoot();\n\t\tthis._dirtifyWorldInternal();\n\t}\n\t_dirtifyWorldInternal() {\n\t\tif (!this._dirtyWorld) {\n\t\t\tthis._frozen = false;\n\t\t\tthis._dirtyWorld = true;\n\t\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\t\tif (!this._children[i]._dirtyWorld) this._children[i]._dirtifyWorldInternal();\n\t\t\t}\n\t\t}\n\t\tthis._dirtyNormal = true;\n\t\tthis._worldScaleSign = 0;\n\t\tthis._aabbVer++;\n\t}\n\tsetPosition(x, y, z) {\n\t\tif (x instanceof Vec3) {\n\t\t\tposition.copy(x);\n\t\t} else {\n\t\t\tposition.set(x, y, z);\n\t\t}\n\t\tif (this._parent === null) {\n\t\t\tthis.localPosition.copy(position);\n\t\t} else {\n\t\t\tinvParentWtm.copy(this._parent.getWorldTransform()).invert();\n\t\t\tinvParentWtm.transformPoint(position, this.localPosition);\n\t\t}\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\tsetRotation(x, y, z, w) {\n\t\tif (x instanceof Quat) {\n\t\t\trotation.copy(x);\n\t\t} else {\n\t\t\trotation.set(x, y, z, w);\n\t\t}\n\t\tif (this._parent === null) {\n\t\t\tthis.localRotation.copy(rotation);\n\t\t} else {\n\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\tthis.localRotation.copy(invParentRot).mul(rotation);\n\t\t}\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\tsetEulerAngles(x, y, z) {\n\t\tthis.localRotation.setFromEulerAngles(x, y, z);\n\t\tif (this._parent !== null) {\n\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\tthis.localRotation.mul2(invParentRot, this.localRotation);\n\t\t}\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\taddChild(node) {\n\t\tthis._prepareInsertChild(node);\n\t\tthis._children.push(node);\n\t\tthis._onInsertChild(node);\n\t}\n\taddChildAndSaveTransform(node) {\n\t\tconst wPos = node.getPosition();\n\t\tconst wRot = node.getRotation();\n\t\tthis._prepareInsertChild(node);\n\t\tnode.setPosition(tmpMat4.copy(this.worldTransform).invert().transformPoint(wPos));\n\t\tnode.setRotation(tmpQuat.copy(this.getRotation()).invert().mul(wRot));\n\t\tthis._children.push(node);\n\t\tthis._onInsertChild(node);\n\t}\n\tinsertChild(node, index) {\n\t\tthis._prepareInsertChild(node);\n\t\tthis._children.splice(index, 0, node);\n\t\tthis._onInsertChild(node);\n\t}\n\t_prepareInsertChild(node) {\n\t\tnode.remove();\n\t}\n\t_fireOnHierarchy(name, nameHierarchy, parent) {\n\t\tthis.fire(name, parent);\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tthis._children[i]._fireOnHierarchy(nameHierarchy, nameHierarchy, parent);\n\t\t}\n\t}\n\t_onInsertChild(node) {\n\t\tnode._parent = this;\n\t\tconst enabledInHierarchy = node._enabled && this.enabled;\n\t\tif (node._enabledInHierarchy !== enabledInHierarchy) {\n\t\t\tnode._enabledInHierarchy = enabledInHierarchy;\n\t\t\tnode._notifyHierarchyStateChanged(node, enabledInHierarchy);\n\t\t}\n\t\tnode._updateGraphDepth();\n\t\tnode._dirtifyWorld();\n\t\tif (this._frozen) node._unfreezeParentToRoot();\n\t\tnode._fireOnHierarchy('insert', 'inserthierarchy', this);\n\t\tif (this.fire) this.fire('childinsert', node);\n\t}\n\t_updateGraphDepth() {\n\t\tthis._graphDepth = this._parent ? this._parent._graphDepth + 1 : 0;\n\t\tfor (let i = 0, len = this._children.length; i < len; i++) {\n\t\t\tthis._children[i]._updateGraphDepth();\n\t\t}\n\t}\n\tremoveChild(child) {\n\t\tconst index = this._children.indexOf(child);\n\t\tif (index === -1) {\n\t\t\treturn;\n\t\t}\n\t\tthis._children.splice(index, 1);\n\t\tchild._parent = null;\n\t\tchild._fireOnHierarchy('remove', 'removehierarchy', this);\n\t\tthis.fire('childremove', child);\n\t}\n\t_sync() {\n\t\tif (this._dirtyLocal) {\n\t\t\tthis.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale);\n\t\t\tthis._dirtyLocal = false;\n\t\t}\n\t\tif (this._dirtyWorld) {\n\t\t\tif (this._parent === null) {\n\t\t\t\tthis.worldTransform.copy(this.localTransform);\n\t\t\t} else {\n\t\t\t\tif (this.scaleCompensation) {\n\t\t\t\t\tlet parentWorldScale;\n\t\t\t\t\tconst parent = this._parent;\n\t\t\t\t\tlet scale = this.localScale;\n\t\t\t\t\tlet parentToUseScaleFrom = parent;\n\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\twhile (parentToUseScaleFrom && parentToUseScaleFrom.scaleCompensation) {\n\t\t\t\t\t\t\tparentToUseScaleFrom = parentToUseScaleFrom._parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\t\tparentToUseScaleFrom = parentToUseScaleFrom._parent;\n\t\t\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\t\t\tparentWorldScale = parentToUseScaleFrom.worldTransform.getScale();\n\t\t\t\t\t\t\t\tscaleCompensateScale.mul2(parentWorldScale, this.localScale);\n\t\t\t\t\t\t\t\tscale = scaleCompensateScale;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tscaleCompensateRot2.setFromMat4(parent.worldTransform);\n\t\t\t\t\tscaleCompensateRot.mul2(scaleCompensateRot2, this.localRotation);\n\t\t\t\t\tlet tmatrix = parent.worldTransform;\n\t\t\t\t\tif (parent.scaleCompensation) {\n\t\t\t\t\t\tscaleCompensateScaleForParent.mul2(parentWorldScale, parent.getLocalScale());\n\t\t\t\t\t\tscaleCompensatePosTransform.setTRS(parent.worldTransform.getTranslation(scaleCompensatePos), scaleCompensateRot2, scaleCompensateScaleForParent);\n\t\t\t\t\t\ttmatrix = scaleCompensatePosTransform;\n\t\t\t\t\t}\n\t\t\t\t\ttmatrix.transformPoint(this.localPosition, scaleCompensatePos);\n\t\t\t\t\tthis.worldTransform.setTRS(scaleCompensatePos, scaleCompensateRot, scale);\n\t\t\t\t} else {\n\t\t\t\t\tthis.worldTransform.mulAffine2(this._parent.worldTransform, this.localTransform);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._dirtyWorld = false;\n\t\t}\n\t}\n\tsyncHierarchy() {\n\t\tif (!this._enabled) return;\n\t\tif (this._frozen) return;\n\t\tthis._frozen = true;\n\t\tif (this._dirtyLocal || this._dirtyWorld) {\n\t\t\tthis._sync();\n\t\t}\n\t\tconst children = this._children;\n\t\tfor (let i = 0, len = children.length; i < len; i++) {\n\t\t\tchildren[i].syncHierarchy();\n\t\t}\n\t}\n\tlookAt(x, y, z, ux = 0, uy = 1, uz = 0) {\n\t\tif (x instanceof Vec3) {\n\t\t\ttarget.copy(x);\n\t\t\tif (y instanceof Vec3) {\n\t\t\t\tup.copy(y);\n\t\t\t} else {\n\t\t\t\tup.copy(Vec3.UP);\n\t\t\t}\n\t\t} else if (z === undefined) {\n\t\t\treturn;\n\t\t} else {\n\t\t\ttarget.set(x, y, z);\n\t\t\tup.set(ux, uy, uz);\n\t\t}\n\t\tmatrix.setLookAt(this.getPosition(), target, up);\n\t\trotation.setFromMat4(matrix);\n\t\tthis.setRotation(rotation);\n\t}\n\ttranslate(x, y, z) {\n\t\tif (x instanceof Vec3) {\n\t\t\tposition.copy(x);\n\t\t} else {\n\t\t\tposition.set(x, y, z);\n\t\t}\n\t\tposition.add(this.getPosition());\n\t\tthis.setPosition(position);\n\t}\n\ttranslateLocal(x, y, z) {\n\t\tif (x instanceof Vec3) {\n\t\t\tposition.copy(x);\n\t\t} else {\n\t\t\tposition.set(x, y, z);\n\t\t}\n\t\tthis.localRotation.transformVector(position, position);\n\t\tthis.localPosition.add(position);\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\trotate(x, y, z) {\n\t\trotation.setFromEulerAngles(x, y, z);\n\t\tif (this._parent === null) {\n\t\t\tthis.localRotation.mul2(rotation, this.localRotation);\n\t\t} else {\n\t\t\tconst rot = this.getRotation();\n\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\trotation.mul2(invParentRot, rotation);\n\t\t\tthis.localRotation.mul2(rotation, rot);\n\t\t}\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n\trotateLocal(x, y, z) {\n\t\trotation.setFromEulerAngles(x, y, z);\n\t\tthis.localRotation.mul(rotation);\n\t\tif (!this._dirtyLocal) this._dirtifyLocal();\n\t}\n}\n\nexport { GraphNode };\n", "class RefCountedCache {\n\tconstructor() {\n\t\tthis.cache = new Map();\n\t}\n\tdestroy() {\n\t\tthis.cache.forEach((refCount, object) => {\n\t\t\tobject.destroy();\n\t\t});\n\t\tthis.cache.clear();\n\t}\n\tincRef(object) {\n\t\tconst refCount = (this.cache.get(object) || 0) + 1;\n\t\tthis.cache.set(object, refCount);\n\t}\n\tdecRef(object) {\n\t\tif (object) {\n\t\t\tlet refCount = this.cache.get(object);\n\t\t\tif (refCount) {\n\t\t\t\trefCount--;\n\t\t\t\tif (refCount === 0) {\n\t\t\t\t\tthis.cache.delete(object);\n\t\t\t\t\tobject.destroy();\n\t\t\t\t} else {\n\t\t\t\t\tthis.cache.set(object, refCount);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { RefCountedCache };\n", "import { RefCountedCache } from '../../core/ref-counted-cache.js';\n\nclass LightmapCache {\n\tstatic incRef(texture) {\n\t\tthis.cache.incRef(texture);\n\t}\n\tstatic decRef(texture) {\n\t\tthis.cache.decRef(texture);\n\t}\n\tstatic destroy() {\n\t\tthis.cache.destroy();\n\t}\n}\nLightmapCache.cache = new RefCountedCache();\n\nexport { LightmapCache };\n", "import { BoundingBox } from '../core/shape/bounding-box.js';\nimport { BoundingSphere } from '../core/shape/bounding-sphere.js';\nimport { BindGroup } from '../platform/graphics/bind-group.js';\nimport { UniformBuffer } from '../platform/graphics/uniform-buffer.js';\nimport { MASK_AFFECT_DYNAMIC, SHADERDEF_UV0, SHADERDEF_UV1, SHADERDEF_VCOLOR, SHADERDEF_TANGENTS, LAYER_WORLD, RENDERSTYLE_SOLID, SHADERDEF_NOSHADOW, SHADERDEF_SKIN, SHADERDEF_MORPH_TEXTURE_BASED, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_NORMAL, SHADERDEF_SCREENSPACE, SORTKEY_FORWARD, BLEND_NORMAL, BLEND_NONE, SHADERDEF_INSTANCING, MASK_AFFECT_LIGHTMAPPED, MASK_BAKE, SHADERDEF_LM, SHADERDEF_DIRLM, SHADERDEF_LMAMBIENT } from './constants.js';\nimport { GraphNode } from './graph-node.js';\nimport { getDefaultMaterial } from './materials/default-material.js';\nimport { LightmapCache } from './graphics/lightmap-cache.js';\n\nlet id = 0;\nconst _tmpAabb = new BoundingBox();\nconst _tempBoneAabb = new BoundingBox();\nconst _tempSphere = new BoundingSphere();\nconst _meshSet = new Set();\nclass InstancingData {\n\tconstructor(numObjects) {\n\t\tthis.vertexBuffer = null;\n\t\tthis.count = numObjects;\n\t}\n}\nclass ShaderInstance {\n\tconstructor() {\n\t\tthis.shader = void 0;\n\t\tthis.bindGroup = null;\n\t}\n\tgetBindGroup(device) {\n\t\tif (!this.bindGroup) {\n\t\t\tconst shader = this.shader;\n\t\t\tconst ubFormat = shader.meshUniformBufferFormat;\n\t\t\tconst uniformBuffer = new UniformBuffer(device, ubFormat, false);\n\t\t\tconst bindGroupFormat = shader.meshBindGroupFormat;\n\t\t\tthis.bindGroup = new BindGroup(device, bindGroupFormat, uniformBuffer);\n\t\t}\n\t\treturn this.bindGroup;\n\t}\n\tdestroy() {\n\t\tconst group = this.bindGroup;\n\t\tif (group) {\n\t\t\tvar _group$defaultUniform;\n\t\t\t(_group$defaultUniform = group.defaultUniformBuffer) == null || _group$defaultUniform.destroy();\n\t\t\tgroup.destroy();\n\t\t\tthis.bindGroup = null;\n\t\t}\n\t}\n}\nclass ShaderCacheEntry {\n\tconstructor() {\n\t\tthis.shaderInstances = new Map();\n\t}\n\tdestroy() {\n\t\tthis.shaderInstances.forEach(instance => instance.destroy());\n\t\tthis.shaderInstances.clear();\n\t}\n}\nclass MeshInstance {\n\tconstructor(mesh, material, node = null) {\n\t\tthis.visible = true;\n\t\tthis.castShadow = false;\n\t\tthis.transparent = false;\n\t\tthis._material = null;\n\t\tthis._shaderCache = [];\n\t\tthis.id = id++;\n\t\tthis.pick = true;\n\t\tif (mesh instanceof GraphNode) {\n\t\t\tconst temp = mesh;\n\t\t\tmesh = material;\n\t\t\tmaterial = node;\n\t\t\tnode = temp;\n\t\t}\n\t\tthis._key = [0, 0];\n\t\tthis.node = node;\n\t\tthis._mesh = mesh;\n\t\tmesh.incRefCount();\n\t\tthis.material = material;\n\t\tthis._shaderDefs = MASK_AFFECT_DYNAMIC << 16;\n\t\tif (mesh.vertexBuffer) {\n\t\t\tconst format = mesh.vertexBuffer.format;\n\t\t\tthis._shaderDefs |= format.hasUv0 ? SHADERDEF_UV0 : 0;\n\t\t\tthis._shaderDefs |= format.hasUv1 ? SHADERDEF_UV1 : 0;\n\t\t\tthis._shaderDefs |= format.hasColor ? SHADERDEF_VCOLOR : 0;\n\t\t\tthis._shaderDefs |= format.hasTangents ? SHADERDEF_TANGENTS : 0;\n\t\t}\n\t\tthis.layer = LAYER_WORLD;\n\t\tthis._renderStyle = RENDERSTYLE_SOLID;\n\t\tthis._receiveShadow = true;\n\t\tthis._screenSpace = false;\n\t\tthis.cull = true;\n\t\tthis._updateAabb = true;\n\t\tthis._updateAabbFunc = null;\n\t\tthis._calculateSortDistance = null;\n\t\tthis.updateKey();\n\t\tthis._skinInstance = null;\n\t\tthis._morphInstance = null;\n\t\tthis.gsplatInstance = null;\n\t\tthis.instancingData = null;\n\t\tthis._customAabb = null;\n\t\tthis.aabb = new BoundingBox();\n\t\tthis._aabbVer = -1;\n\t\tthis._aabbMeshVer = -1;\n\t\tthis.drawOrder = 0;\n\t\tthis.visibleThisFrame = false;\n\t\tthis.isVisibleFunc = null;\n\t\tthis.parameters = {};\n\t\tthis.stencilFront = null;\n\t\tthis.stencilBack = null;\n\t\tthis.flipFacesFactor = 1;\n\t}\n\tset renderStyle(renderStyle) {\n\t\tthis._renderStyle = renderStyle;\n\t\tthis.mesh.prepareRenderState(renderStyle);\n\t}\n\tget renderStyle() {\n\t\treturn this._renderStyle;\n\t}\n\tset mesh(mesh) {\n\t\tif (mesh === this._mesh) return;\n\t\tif (this._mesh) {\n\t\t\tthis._mesh.decRefCount();\n\t\t}\n\t\tthis._mesh = mesh;\n\t\tif (mesh) {\n\t\t\tmesh.incRefCount();\n\t\t}\n\t}\n\tget mesh() {\n\t\treturn this._mesh;\n\t}\n\tset aabb(aabb) {\n\t\tthis._aabb = aabb;\n\t}\n\tget aabb() {\n\t\tif (!this._updateAabb) {\n\t\t\treturn this._aabb;\n\t\t}\n\t\tif (this._updateAabbFunc) {\n\t\t\treturn this._updateAabbFunc(this._aabb);\n\t\t}\n\t\tlet localAabb = this._customAabb;\n\t\tlet toWorldSpace = !!localAabb;\n\t\tif (!localAabb) {\n\t\t\tlocalAabb = _tmpAabb;\n\t\t\tif (this.skinInstance) {\n\t\t\t\tif (!this.mesh.boneAabb) {\n\t\t\t\t\tconst morphTargets = this._morphInstance ? this._morphInstance.morph._targets : null;\n\t\t\t\t\tthis.mesh._initBoneAabbs(morphTargets);\n\t\t\t\t}\n\t\t\t\tconst boneUsed = this.mesh.boneUsed;\n\t\t\t\tlet first = true;\n\t\t\t\tfor (let i = 0; i < this.mesh.boneAabb.length; i++) {\n\t\t\t\t\tif (boneUsed[i]) {\n\t\t\t\t\t\t_tempBoneAabb.setFromTransformedAabb(this.mesh.boneAabb[i], this.skinInstance.matrices[i]);\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t\tlocalAabb.center.copy(_tempBoneAabb.center);\n\t\t\t\t\t\t\tlocalAabb.halfExtents.copy(_tempBoneAabb.halfExtents);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlocalAabb.add(_tempBoneAabb);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttoWorldSpace = true;\n\t\t\t} else if (this.node._aabbVer !== this._aabbVer || this.mesh._aabbVer !== this._aabbMeshVer) {\n\t\t\t\tif (this.mesh) {\n\t\t\t\t\tlocalAabb.center.copy(this.mesh.aabb.center);\n\t\t\t\t\tlocalAabb.halfExtents.copy(this.mesh.aabb.halfExtents);\n\t\t\t\t} else {\n\t\t\t\t\tlocalAabb.center.set(0, 0, 0);\n\t\t\t\t\tlocalAabb.halfExtents.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tif (this.mesh && this.mesh.morph) {\n\t\t\t\t\tconst morphAabb = this.mesh.morph.aabb;\n\t\t\t\t\tlocalAabb._expand(morphAabb.getMin(), morphAabb.getMax());\n\t\t\t\t}\n\t\t\t\ttoWorldSpace = true;\n\t\t\t\tthis._aabbVer = this.node._aabbVer;\n\t\t\t\tthis._aabbMeshVer = this.mesh._aabbVer;\n\t\t\t}\n\t\t}\n\t\tif (toWorldSpace) {\n\t\t\tthis._aabb.setFromTransformedAabb(localAabb, this.node.getWorldTransform());\n\t\t}\n\t\treturn this._aabb;\n\t}\n\tclearShaders() {\n\t\tconst shaderCache = this._shaderCache;\n\t\tfor (let i = 0; i < shaderCache.length; i++) {\n\t\t\tvar _shaderCache$i;\n\t\t\t(_shaderCache$i = shaderCache[i]) == null || _shaderCache$i.destroy();\n\t\t\tshaderCache[i] = null;\n\t\t}\n\t}\n\tgetShaderInstance(shaderPass, lightHash, scene, viewUniformFormat, viewBindGroupFormat, sortedLights) {\n\t\tlet shaderInstance;\n\t\tlet passEntry = this._shaderCache[shaderPass];\n\t\tif (passEntry) {\n\t\t\tshaderInstance = passEntry.shaderInstances.get(lightHash);\n\t\t} else {\n\t\t\tpassEntry = new ShaderCacheEntry();\n\t\t\tthis._shaderCache[shaderPass] = passEntry;\n\t\t}\n\t\tif (!shaderInstance) {\n\t\t\tconst mat = this._material;\n\t\t\tconst shaderDefs = this._shaderDefs;\n\t\t\tconst variantKey = shaderPass + '_' + shaderDefs + '_' + lightHash;\n\t\t\tshaderInstance = new ShaderInstance();\n\t\t\tshaderInstance.shader = mat.variants.get(variantKey);\n\t\t\tif (!shaderInstance.shader) {\n\t\t\t\tvar _this$_mesh$vertexBuf;\n\t\t\t\tconst shader = mat.getShaderVariant(this.mesh.device, scene, shaderDefs, null, shaderPass, sortedLights, viewUniformFormat, viewBindGroupFormat, (_this$_mesh$vertexBuf = this._mesh.vertexBuffer) == null ? void 0 : _this$_mesh$vertexBuf.format);\n\t\t\t\tmat.variants.set(variantKey, shader);\n\t\t\t\tshaderInstance.shader = shader;\n\t\t\t}\n\t\t\tpassEntry.shaderInstances.set(lightHash, shaderInstance);\n\t\t}\n\t\treturn shaderInstance;\n\t}\n\tset material(material) {\n\t\tthis.clearShaders();\n\t\tconst prevMat = this._material;\n\t\tif (prevMat) {\n\t\t\tprevMat.removeMeshInstanceRef(this);\n\t\t}\n\t\tthis._material = material;\n\t\tif (material) {\n\t\t\tmaterial.addMeshInstanceRef(this);\n\t\t\tthis.transparent = material.transparent;\n\t\t\tthis.updateKey();\n\t\t}\n\t}\n\tget material() {\n\t\treturn this._material;\n\t}\n\tset layer(layer) {\n\t\tthis._layer = layer;\n\t\tthis.updateKey();\n\t}\n\tget layer() {\n\t\treturn this._layer;\n\t}\n\t_updateShaderDefs(shaderDefs) {\n\t\tif (shaderDefs !== this._shaderDefs) {\n\t\t\tthis._shaderDefs = shaderDefs;\n\t\t\tthis.clearShaders();\n\t\t}\n\t}\n\tset calculateSortDistance(calculateSortDistance) {\n\t\tthis._calculateSortDistance = calculateSortDistance;\n\t}\n\tget calculateSortDistance() {\n\t\treturn this._calculateSortDistance;\n\t}\n\tset receiveShadow(val) {\n\t\tif (this._receiveShadow !== val) {\n\t\t\tthis._receiveShadow = val;\n\t\t\tthis._updateShaderDefs(val ? this._shaderDefs & ~SHADERDEF_NOSHADOW : this._shaderDefs | SHADERDEF_NOSHADOW);\n\t\t}\n\t}\n\tget receiveShadow() {\n\t\treturn this._receiveShadow;\n\t}\n\tset skinInstance(val) {\n\t\tthis._skinInstance = val;\n\t\tthis._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_SKIN : this._shaderDefs & ~SHADERDEF_SKIN);\n\t\tthis._setupSkinUpdate();\n\t}\n\tget skinInstance() {\n\t\treturn this._skinInstance;\n\t}\n\tset morphInstance(val) {\n\t\tvar _this$_morphInstance;\n\t\t(_this$_morphInstance = this._morphInstance) == null || _this$_morphInstance.destroy();\n\t\tthis._morphInstance = val;\n\t\tlet shaderDefs = this._shaderDefs;\n\t\tshaderDefs = val && val.morph.useTextureMorph ? shaderDefs | SHADERDEF_MORPH_TEXTURE_BASED : shaderDefs & ~SHADERDEF_MORPH_TEXTURE_BASED;\n\t\tshaderDefs = val && val.morph.morphPositions ? shaderDefs | SHADERDEF_MORPH_POSITION : shaderDefs & ~SHADERDEF_MORPH_POSITION;\n\t\tshaderDefs = val && val.morph.morphNormals ? shaderDefs | SHADERDEF_MORPH_NORMAL : shaderDefs & ~SHADERDEF_MORPH_NORMAL;\n\t\tthis._updateShaderDefs(shaderDefs);\n\t}\n\tget morphInstance() {\n\t\treturn this._morphInstance;\n\t}\n\tset screenSpace(val) {\n\t\tif (this._screenSpace !== val) {\n\t\t\tthis._screenSpace = val;\n\t\t\tthis._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_SCREENSPACE : this._shaderDefs & ~SHADERDEF_SCREENSPACE);\n\t\t}\n\t}\n\tget screenSpace() {\n\t\treturn this._screenSpace;\n\t}\n\tset key(val) {\n\t\tthis._key[SORTKEY_FORWARD] = val;\n\t}\n\tget key() {\n\t\treturn this._key[SORTKEY_FORWARD];\n\t}\n\tset mask(val) {\n\t\tconst toggles = this._shaderDefs & 0x0000FFFF;\n\t\tthis._updateShaderDefs(toggles | val << 16);\n\t}\n\tget mask() {\n\t\treturn this._shaderDefs >> 16;\n\t}\n\tset instancingCount(value) {\n\t\tif (this.instancingData) this.instancingData.count = value;\n\t}\n\tget instancingCount() {\n\t\treturn this.instancingData ? this.instancingData.count : 0;\n\t}\n\tdestroy() {\n\t\tvar _this$_skinInstance, _this$morphInstance;\n\t\tconst mesh = this.mesh;\n\t\tif (mesh) {\n\t\t\tthis.mesh = null;\n\t\t\tif (mesh.refCount < 1) {\n\t\t\t\tmesh.destroy();\n\t\t\t}\n\t\t}\n\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[0], null);\n\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[1], null);\n\t\t(_this$_skinInstance = this._skinInstance) == null || _this$_skinInstance.destroy();\n\t\tthis._skinInstance = null;\n\t\t(_this$morphInstance = this.morphInstance) == null || _this$morphInstance.destroy();\n\t\tthis.morphInstance = null;\n\t\tthis.clearShaders();\n\t\tthis.material = null;\n\t}\n\tstatic _prepareRenderStyleForArray(meshInstances, renderStyle) {\n\t\tif (meshInstances) {\n\t\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\t\tmeshInstances[i]._renderStyle = renderStyle;\n\t\t\t\tconst mesh = meshInstances[i].mesh;\n\t\t\t\tif (!_meshSet.has(mesh)) {\n\t\t\t\t\t_meshSet.add(mesh);\n\t\t\t\t\tmesh.prepareRenderState(renderStyle);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_meshSet.clear();\n\t\t}\n\t}\n\t_isVisible(camera) {\n\t\tif (this.visible) {\n\t\t\tif (this.isVisibleFunc) {\n\t\t\t\treturn this.isVisibleFunc(camera);\n\t\t\t}\n\t\t\t_tempSphere.center = this.aabb.center;\n\t\t\t_tempSphere.radius = this._aabb.halfExtents.length();\n\t\t\treturn camera.frustum.containsSphere(_tempSphere);\n\t\t}\n\t\treturn false;\n\t}\n\tupdateKey() {\n\t\tconst material = this.material;\n\t\tconst blendType = material.alphaToCoverage || material.alphaTest ? BLEND_NORMAL : material.blendType;\n\t\tthis._key[SORTKEY_FORWARD] = (this.layer & 0x0f) << 27 | (blendType === BLEND_NONE ? 1 : 0) << 26 | (material.id & 0x1ffffff) << 0;\n\t}\n\tsetInstancing(vertexBuffer, cull = false) {\n\t\tif (vertexBuffer) {\n\t\t\tthis.instancingData = new InstancingData(vertexBuffer.numVertices);\n\t\t\tthis.instancingData.vertexBuffer = vertexBuffer;\n\t\t\tvertexBuffer.format.instancing = true;\n\t\t\tthis.cull = cull;\n\t\t} else {\n\t\t\tthis.instancingData = null;\n\t\t\tthis.cull = true;\n\t\t}\n\t\tthis._updateShaderDefs(vertexBuffer ? this._shaderDefs | SHADERDEF_INSTANCING : this._shaderDefs & ~SHADERDEF_INSTANCING);\n\t}\n\tensureMaterial(device) {\n\t\tif (!this.material) {\n\t\t\tthis.material = getDefaultMaterial(device);\n\t\t}\n\t}\n\tclearParameters() {\n\t\tthis.parameters = {};\n\t}\n\tgetParameters() {\n\t\treturn this.parameters;\n\t}\n\tgetParameter(name) {\n\t\treturn this.parameters[name];\n\t}\n\tsetParameter(name, data, passFlags = -262141) {\n\t\tif (data === undefined && typeof name === 'object') {\n\t\t\tconst uniformObject = name;\n\t\t\tif (uniformObject.length) {\n\t\t\t\tfor (let i = 0; i < uniformObject.length; i++) {\n\t\t\t\t\tthis.setParameter(uniformObject[i]);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tname = uniformObject.name;\n\t\t\tdata = uniformObject.value;\n\t\t}\n\t\tconst param = this.parameters[name];\n\t\tif (param) {\n\t\t\tparam.data = data;\n\t\t\tparam.passFlags = passFlags;\n\t\t} else {\n\t\t\tthis.parameters[name] = {\n\t\t\t\tscopeId: null,\n\t\t\t\tdata: data,\n\t\t\t\tpassFlags: passFlags\n\t\t\t};\n\t\t}\n\t}\n\tsetRealtimeLightmap(name, texture) {\n\t\tconst old = this.getParameter(name);\n\t\tif (old === texture) return;\n\t\tif (old) {\n\t\t\tLightmapCache.decRef(old.data);\n\t\t}\n\t\tif (texture) {\n\t\t\tLightmapCache.incRef(texture);\n\t\t\tthis.setParameter(name, texture);\n\t\t} else {\n\t\t\tthis.deleteParameter(name);\n\t\t}\n\t}\n\tdeleteParameter(name) {\n\t\tif (this.parameters[name]) {\n\t\t\tdelete this.parameters[name];\n\t\t}\n\t}\n\tsetParameters(device, passFlag) {\n\t\tconst parameters = this.parameters;\n\t\tfor (const paramName in parameters) {\n\t\t\tconst parameter = parameters[paramName];\n\t\t\tif (parameter.passFlags & passFlag) {\n\t\t\t\tif (!parameter.scopeId) {\n\t\t\t\t\tparameter.scopeId = device.scope.resolve(paramName);\n\t\t\t\t}\n\t\t\t\tparameter.scopeId.setValue(parameter.data);\n\t\t\t}\n\t\t}\n\t}\n\tsetLightmapped(value) {\n\t\tif (value) {\n\t\t\tthis.mask = (this.mask | MASK_AFFECT_LIGHTMAPPED) & ~(MASK_AFFECT_DYNAMIC | MASK_BAKE);\n\t\t} else {\n\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[0], null);\n\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[1], null);\n\t\t\tthis._shaderDefs &= ~(SHADERDEF_LM | SHADERDEF_DIRLM | SHADERDEF_LMAMBIENT);\n\t\t\tthis.mask = (this.mask | MASK_AFFECT_DYNAMIC) & ~(MASK_AFFECT_LIGHTMAPPED | MASK_BAKE);\n\t\t}\n\t}\n\tsetCustomAabb(aabb) {\n\t\tif (aabb) {\n\t\t\tif (this._customAabb) {\n\t\t\t\tthis._customAabb.copy(aabb);\n\t\t\t} else {\n\t\t\t\tthis._customAabb = aabb.clone();\n\t\t\t}\n\t\t} else {\n\t\t\tthis._customAabb = null;\n\t\t\tthis._aabbVer = -1;\n\t\t}\n\t\tthis._setupSkinUpdate();\n\t}\n\t_setupSkinUpdate() {\n\t\tif (this._skinInstance) {\n\t\t\tthis._skinInstance._updateBeforeCull = !this._customAabb;\n\t\t}\n\t}\n}\nMeshInstance.lightmapParamNames = ['texture_lightMap', 'texture_dirLightMap'];\n\nexport { MeshInstance };\n", "import { FILTER_LINEAR_MIPMAP_LINEAR, FILTER_LINEAR, ADDRESS_CLAMP_TO_EDGE } from '../../platform/graphics/constants.js';\nimport { RenderPass } from '../../platform/graphics/render-pass.js';\nimport { RenderTarget } from '../../platform/graphics/render-target.js';\nimport { Texture } from '../../platform/graphics/texture.js';\n\nconst _colorUniformNames = ['uSceneColorMap', 'texture_grabPass'];\nclass RenderPassColorGrab extends RenderPass {\n\tconstructor(...args) {\n\t\tsuper(...args);\n\t\tthis.colorRenderTarget = null;\n\t\tthis.source = null;\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.releaseRenderTarget(this.colorRenderTarget);\n\t}\n\tshouldReallocate(targetRT, sourceTexture, sourceFormat) {\n\t\tconst targetFormat = targetRT == null ? void 0 : targetRT.colorBuffer.format;\n\t\tif (targetFormat !== sourceFormat) return true;\n\t\tconst width = (sourceTexture == null ? void 0 : sourceTexture.width) || this.device.width;\n\t\tconst height = (sourceTexture == null ? void 0 : sourceTexture.height) || this.device.height;\n\t\treturn !targetRT || width !== targetRT.width || height !== targetRT.height;\n\t}\n\tallocateRenderTarget(renderTarget, sourceRenderTarget, device, format) {\n\t\tconst mipmaps = device.isWebGL2;\n\t\tconst texture = new Texture(device, {\n\t\t\tname: _colorUniformNames[0],\n\t\t\tformat,\n\t\t\twidth: sourceRenderTarget ? sourceRenderTarget.colorBuffer.width : device.width,\n\t\t\theight: sourceRenderTarget ? sourceRenderTarget.colorBuffer.height : device.height,\n\t\t\tmipmaps,\n\t\t\tminFilter: mipmaps ? FILTER_LINEAR_MIPMAP_LINEAR : FILTER_LINEAR,\n\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t});\n\t\tif (renderTarget) {\n\t\t\trenderTarget.destroyFrameBuffers();\n\t\t\trenderTarget._colorBuffer = texture;\n\t\t\trenderTarget._colorBuffers = [texture];\n\t\t} else {\n\t\t\trenderTarget = new RenderTarget({\n\t\t\t\tname: 'ColorGrabRT',\n\t\t\t\tcolorBuffer: texture,\n\t\t\t\tdepth: false,\n\t\t\t\tstencil: false,\n\t\t\t\tautoResolve: false\n\t\t\t});\n\t\t}\n\t\treturn renderTarget;\n\t}\n\treleaseRenderTarget(rt) {\n\t\tif (rt) {\n\t\t\trt.destroyTextureBuffers();\n\t\t\trt.destroy();\n\t\t}\n\t}\n\tframeUpdate() {\n\t\tvar _sourceRt$colorBuffer;\n\t\tconst device = this.device;\n\t\tconst sourceRt = this.source;\n\t\tconst sourceFormat = (_sourceRt$colorBuffer = sourceRt == null ? void 0 : sourceRt.colorBuffer.format) != null ? _sourceRt$colorBuffer : this.device.backBufferFormat;\n\t\tif (this.shouldReallocate(this.colorRenderTarget, sourceRt == null ? void 0 : sourceRt.colorBuffer, sourceFormat)) {\n\t\t\tthis.releaseRenderTarget(this.colorRenderTarget);\n\t\t\tthis.colorRenderTarget = this.allocateRenderTarget(this.colorRenderTarget, sourceRt, device, sourceFormat);\n\t\t}\n\t\tconst colorBuffer = this.colorRenderTarget.colorBuffer;\n\t\t_colorUniformNames.forEach(name => device.scope.resolve(name).setValue(colorBuffer));\n\t}\n\texecute() {\n\t\tconst device = this.device;\n\t\tconst sourceRt = this.source;\n\t\tconst colorBuffer = this.colorRenderTarget.colorBuffer;\n\t\tif (device.isWebGPU) {\n\t\t\tdevice.copyRenderTarget(sourceRt, this.colorRenderTarget, true, false);\n\t\t\tdevice.mipmapRenderer.generate(this.colorRenderTarget.colorBuffer.impl);\n\t\t} else if (device.isWebGL2) {\n\t\t\tdevice.copyRenderTarget(sourceRt, this.colorRenderTarget, true, false);\n\t\t\tdevice.activeTexture(device.maxCombinedTextures - 1);\n\t\t\tdevice.bindTexture(colorBuffer);\n\t\t\tdevice.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t} else {\n\t\t\tif (!colorBuffer.impl._glTexture) {\n\t\t\t\tcolorBuffer.impl.initialize(device, colorBuffer);\n\t\t\t}\n\t\t\tdevice.bindTexture(colorBuffer);\n\t\t\tconst gl = device.gl;\n\t\t\tgl.copyTexImage2D(gl.TEXTURE_2D, 0, colorBuffer.impl._glFormat, 0, 0, colorBuffer.width, colorBuffer.height, 0);\n\t\t\tcolorBuffer._needsUpload = false;\n\t\t\tcolorBuffer._needsMipmapsUpload = false;\n\t\t}\n\t}\n}\n\nexport { RenderPassColorGrab };\n", "import { FILTER_NEAREST, ADDRESS_CLAMP_TO_EDGE, PIXELFORMAT_DEPTHSTENCIL, PIXELFORMAT_DEPTH, PIXELFORMAT_R32F } from '../../platform/graphics/constants.js';\nimport { RenderPass } from '../../platform/graphics/render-pass.js';\nimport { RenderTarget } from '../../platform/graphics/render-target.js';\nimport { Texture } from '../../platform/graphics/texture.js';\n\nconst _depthUniformNames = ['uSceneDepthMap', 'uDepthMap'];\nclass RenderPassDepthGrab extends RenderPass {\n\tconstructor(device, camera) {\n\t\tsuper(device);\n\t\tthis.depthRenderTarget = null;\n\t\tthis.camera = null;\n\t\tthis.camera = camera;\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.releaseRenderTarget(this.depthRenderTarget);\n\t}\n\tshouldReallocate(targetRT, sourceTexture) {\n\t\tconst width = (sourceTexture == null ? void 0 : sourceTexture.width) || this.device.width;\n\t\tconst height = (sourceTexture == null ? void 0 : sourceTexture.height) || this.device.height;\n\t\treturn !targetRT || width !== targetRT.width || height !== targetRT.height;\n\t}\n\tallocateRenderTarget(renderTarget, sourceRenderTarget, device, format, isDepth) {\n\t\tconst texture = new Texture(device, {\n\t\t\tname: _depthUniformNames[0],\n\t\t\tformat,\n\t\t\twidth: sourceRenderTarget ? sourceRenderTarget.colorBuffer.width : device.width,\n\t\t\theight: sourceRenderTarget ? sourceRenderTarget.colorBuffer.height : device.height,\n\t\t\tmipmaps: false,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t});\n\t\tif (renderTarget) {\n\t\t\trenderTarget.destroyFrameBuffers();\n\t\t\tif (isDepth) {\n\t\t\t\trenderTarget._depthBuffer = texture;\n\t\t\t} else {\n\t\t\t\trenderTarget._colorBuffer = texture;\n\t\t\t\trenderTarget._colorBuffers = [texture];\n\t\t\t}\n\t\t} else {\n\t\t\trenderTarget = new RenderTarget({\n\t\t\t\tname: 'DepthGrabRT',\n\t\t\t\tcolorBuffer: isDepth ? null : texture,\n\t\t\t\tdepthBuffer: isDepth ? texture : null,\n\t\t\t\tdepth: !isDepth,\n\t\t\t\tstencil: device.supportsStencil,\n\t\t\t\tautoResolve: false\n\t\t\t});\n\t\t}\n\t\treturn renderTarget;\n\t}\n\treleaseRenderTarget(rt) {\n\t\tif (rt) {\n\t\t\trt.destroyTextureBuffers();\n\t\t\trt.destroy();\n\t\t}\n\t}\n\tbefore() {\n\t\tvar _camera$renderTarget, _camera$renderTarget$, _camera$renderTarget2, _camera$renderTarget3;\n\t\tconst camera = this.camera;\n\t\tconst device = this.device;\n\t\tconst destinationRt = (_camera$renderTarget = camera == null ? void 0 : camera.renderTarget) != null ? _camera$renderTarget : device.backBuffer;\n\t\tlet useDepthBuffer = true;\n\t\tlet format = destinationRt.stencil ? PIXELFORMAT_DEPTHSTENCIL : PIXELFORMAT_DEPTH;\n\t\tif (device.isWebGPU) {\n\t\t\tconst numSamples = destinationRt.samples;\n\t\t\tif (numSamples > 1) {\n\t\t\t\tformat = PIXELFORMAT_R32F;\n\t\t\t\tuseDepthBuffer = false;\n\t\t\t}\n\t\t}\n\t\tconst sourceTexture = (_camera$renderTarget$ = (_camera$renderTarget2 = camera.renderTarget) == null ? void 0 : _camera$renderTarget2.depthBuffer) != null ? _camera$renderTarget$ : (_camera$renderTarget3 = camera.renderTarget) == null ? void 0 : _camera$renderTarget3.colorBuffer;\n\t\tif (this.shouldReallocate(this.depthRenderTarget, sourceTexture)) {\n\t\t\tthis.releaseRenderTarget(this.depthRenderTarget);\n\t\t\tthis.depthRenderTarget = this.allocateRenderTarget(this.depthRenderTarget, camera.renderTarget, device, format, useDepthBuffer);\n\t\t}\n\t\tconst colorBuffer = useDepthBuffer ? this.depthRenderTarget.depthBuffer : this.depthRenderTarget.colorBuffer;\n\t\t_depthUniformNames.forEach(name => device.scope.resolve(name).setValue(colorBuffer));\n\t}\n\texecute() {\n\t\tconst device = this.device;\n\t\tif (device.isWebGL2 && device.renderTarget.samples > 1) {\n\t\t\tconst src = device.renderTarget.impl._glFrameBuffer;\n\t\t\tconst dest = this.depthRenderTarget;\n\t\t\tdevice.renderTarget = dest;\n\t\t\tdevice.updateBegin();\n\t\t\tthis.depthRenderTarget.impl.internalResolve(device, src, dest.impl._glFrameBuffer, this.depthRenderTarget, device.gl.DEPTH_BUFFER_BIT);\n\t\t} else {\n\t\t\tdevice.copyRenderTarget(device.renderTarget, this.depthRenderTarget, false, true);\n\t\t}\n\t}\n}\n\nexport { RenderPassDepthGrab };\n", "import { Color } from '../../core/math/color.js';\nimport { PIXELFORMAT_RGBA8, FILTER_NEAREST, ADDRESS_CLAMP_TO_EDGE } from '../../platform/graphics/constants.js';\nimport { Texture } from '../../platform/graphics/texture.js';\nimport { RenderPass } from '../../platform/graphics/render-pass.js';\nimport { BlendState } from '../../platform/graphics/blend-state.js';\nimport { RenderTarget } from '../../platform/graphics/render-target.js';\nimport { LAYERID_DEPTH, SHADER_DEPTH } from '../constants.js';\n\nconst webgl1DepthClearColor = new Color(254.0 / 255, 254.0 / 255, 254.0 / 255, 254.0 / 255);\nconst tempMeshInstances = [];\nconst lights = [[], [], []];\nconst _depthUniformNames = ['uSceneDepthMap', 'uDepthMap'];\nclass RenderPassDepth extends RenderPass {\n\tconstructor(device, renderer, camera) {\n\t\tsuper(device);\n\t\tthis.renderer = renderer;\n\t\tthis.camera = camera;\n\t\tthis.setupRenderTarget();\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tif (this.renderTarget) {\n\t\t\tthis.renderTarget.destroyTextureBuffers();\n\t\t\tthis.renderTarget.destroy();\n\t\t\tthis.renderTarget = null;\n\t\t}\n\t}\n\tupdate(scene) {\n\t\tthis.scene = scene;\n\t}\n\tsetupRenderTarget() {\n\t\tconst texture = new Texture(this.device, {\n\t\t\tname: _depthUniformNames[0],\n\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\twidth: 4,\n\t\t\theight: 4,\n\t\t\tmipmaps: false,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t});\n\t\tconst renderTarget = new RenderTarget({\n\t\t\tname: `${_depthUniformNames[0]}RT}`,\n\t\t\tcolorBuffer: texture,\n\t\t\tdepth: true,\n\t\t\tstencil: false\n\t\t});\n\t\tthis.init(renderTarget, {});\n\t\tthis.setClearColor(webgl1DepthClearColor);\n\t\tthis.setClearDepth(1.0);\n\t}\n\tbefore() {\n\t\tconst device = this.device;\n\t\tconst colorBuffer = this.renderTarget.colorBuffer;\n\t\t_depthUniformNames.forEach(name => device.scope.resolve(name).setValue(colorBuffer));\n\t}\n\texecute() {\n\t\tconst {\n\t\t\tdevice,\n\t\t\trenderer,\n\t\t\tcamera,\n\t\t\tscene,\n\t\t\trenderTarget\n\t\t} = this;\n\t\tconst layers = scene.layers.layerList;\n\t\tconst subLayerEnabled = scene.layers.subLayerEnabled;\n\t\tconst isTransparent = scene.layers.subLayerList;\n\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\tconst layer = layers[i];\n\t\t\tif (layer.enabled && subLayerEnabled[i]) {\n\t\t\t\tif (layer.camerasSet.has(camera)) {\n\t\t\t\t\tif (layer.id === LAYERID_DEPTH) break;\n\t\t\t\t\tconst culledInstances = layer.getCulledInstances(camera);\n\t\t\t\t\tconst meshInstances = isTransparent[i] ? culledInstances.transparent : culledInstances.opaque;\n\t\t\t\t\tfor (let j = 0; j < meshInstances.length; j++) {\n\t\t\t\t\t\tvar _meshInstance$materia;\n\t\t\t\t\t\tconst meshInstance = meshInstances[j];\n\t\t\t\t\t\tif ((_meshInstance$materia = meshInstance.material) != null && _meshInstance$materia.depthWrite) {\n\t\t\t\t\t\t\ttempMeshInstances.push(meshInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trenderer.setCameraUniforms(camera, renderTarget);\n\t\t\t\t\trenderer.renderForward(camera, tempMeshInstances, lights, SHADER_DEPTH, meshInstance => {\n\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t}, layer);\n\t\t\t\t\ttempMeshInstances.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { RenderPassDepth };\n", "import { Color } from '../core/math/color.js';\nimport { Mat4 } from '../core/math/mat4.js';\nimport { Vec3 } from '../core/math/vec3.js';\nimport { Vec4 } from '../core/math/vec4.js';\nimport { math } from '../core/math/math.js';\nimport { Frustum } from '../core/shape/frustum.js';\nimport { ASPECT_AUTO, LAYERID_WORLD, LAYERID_DEPTH, LAYERID_SKYBOX, LAYERID_UI, LAYERID_IMMEDIATE, PROJECTION_PERSPECTIVE } from './constants.js';\nimport { RenderPassColorGrab } from './graphics/render-pass-color-grab.js';\nimport { RenderPassDepthGrab } from './graphics/render-pass-depth-grab.js';\nimport { RenderPassDepth } from './graphics/render-pass-depth.js';\n\nconst _deviceCoord = new Vec3();\nconst _halfSize = new Vec3();\nconst _point = new Vec3();\nconst _invViewProjMat = new Mat4();\nconst _frustumPoints = [new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3()];\nclass Camera {\n\tconstructor() {\n\t\tthis.shaderPassInfo = null;\n\t\tthis.renderPassColorGrab = null;\n\t\tthis.renderPassDepthGrab = null;\n\t\tthis.renderPasses = [];\n\t\tthis.jitter = 0;\n\t\tthis._aspectRatio = 16 / 9;\n\t\tthis._aspectRatioMode = ASPECT_AUTO;\n\t\tthis._calculateProjection = null;\n\t\tthis._calculateTransform = null;\n\t\tthis._clearColor = new Color(0.75, 0.75, 0.75, 1);\n\t\tthis._clearColorBuffer = true;\n\t\tthis._clearDepth = 1;\n\t\tthis._clearDepthBuffer = true;\n\t\tthis._clearStencil = 0;\n\t\tthis._clearStencilBuffer = true;\n\t\tthis._cullFaces = true;\n\t\tthis._farClip = 1000;\n\t\tthis._flipFaces = false;\n\t\tthis._fov = 45;\n\t\tthis._frustumCulling = true;\n\t\tthis._horizontalFov = false;\n\t\tthis._layers = [LAYERID_WORLD, LAYERID_DEPTH, LAYERID_SKYBOX, LAYERID_UI, LAYERID_IMMEDIATE];\n\t\tthis._layersSet = new Set(this._layers);\n\t\tthis._nearClip = 0.1;\n\t\tthis._node = null;\n\t\tthis._orthoHeight = 10;\n\t\tthis._projection = PROJECTION_PERSPECTIVE;\n\t\tthis._rect = new Vec4(0, 0, 1, 1);\n\t\tthis._renderTarget = null;\n\t\tthis._scissorRect = new Vec4(0, 0, 1, 1);\n\t\tthis._scissorRectClear = false;\n\t\tthis._aperture = 16.0;\n\t\tthis._shutter = 1.0 / 1000.0;\n\t\tthis._sensitivity = 1000;\n\t\tthis._projMat = new Mat4();\n\t\tthis._projMatDirty = true;\n\t\tthis._projMatSkybox = new Mat4();\n\t\tthis._viewMat = new Mat4();\n\t\tthis._viewMatDirty = true;\n\t\tthis._viewProjMat = new Mat4();\n\t\tthis._viewProjMatDirty = true;\n\t\tthis._shaderMatricesVersion = 0;\n\t\tthis._viewProjInverse = new Mat4();\n\t\tthis._viewProjCurrent = null;\n\t\tthis._viewProjPrevious = new Mat4();\n\t\tthis._jitters = [0, 0, 0, 0];\n\t\tthis.frustum = new Frustum();\n\t\tthis._xr = null;\n\t\tthis._xrProperties = {\n\t\t\thorizontalFov: this._horizontalFov,\n\t\t\tfov: this._fov,\n\t\t\taspectRatio: this._aspectRatio,\n\t\t\tfarClip: this._farClip,\n\t\t\tnearClip: this._nearClip\n\t\t};\n\t}\n\tdestroy() {\n\t\tvar _this$renderPassColor, _this$renderPassDepth;\n\t\t(_this$renderPassColor = this.renderPassColorGrab) == null || _this$renderPassColor.destroy();\n\t\tthis.renderPassColorGrab = null;\n\t\t(_this$renderPassDepth = this.renderPassDepthGrab) == null || _this$renderPassDepth.destroy();\n\t\tthis.renderPassDepthGrab = null;\n\t\tthis.renderPasses.length = 0;\n\t}\n\t_storeShaderMatrices(viewProjMat, jitterX, jitterY, renderVersion) {\n\t\tif (this._shaderMatricesVersion !== renderVersion) {\n\t\t\tvar _this$_viewProjCurren, _this$_viewProjCurren2;\n\t\t\tthis._shaderMatricesVersion = renderVersion;\n\t\t\tthis._viewProjPrevious.copy((_this$_viewProjCurren = this._viewProjCurrent) != null ? _this$_viewProjCurren : viewProjMat);\n\t\t\t(_this$_viewProjCurren2 = this._viewProjCurrent) != null ? _this$_viewProjCurren2 : this._viewProjCurrent = new Mat4();\n\t\t\tthis._viewProjCurrent.copy(viewProjMat);\n\t\t\tthis._viewProjInverse.invert(viewProjMat);\n\t\t\tthis._jitters[2] = this._jitters[0];\n\t\t\tthis._jitters[3] = this._jitters[1];\n\t\t\tthis._jitters[0] = jitterX;\n\t\t\tthis._jitters[1] = jitterY;\n\t\t}\n\t}\n\tget fullSizeClearRect() {\n\t\tconst rect = this._scissorRectClear ? this.scissorRect : this._rect;\n\t\treturn rect.x === 0 && rect.y === 0 && rect.z === 1 && rect.w === 1;\n\t}\n\tset aspectRatio(newValue) {\n\t\tif (this._aspectRatio !== newValue) {\n\t\t\tthis._aspectRatio = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget aspectRatio() {\n\t\tvar _this$xr;\n\t\treturn (_this$xr = this.xr) != null && _this$xr.active ? this._xrProperties.aspectRatio : this._aspectRatio;\n\t}\n\tset aspectRatioMode(newValue) {\n\t\tif (this._aspectRatioMode !== newValue) {\n\t\t\tthis._aspectRatioMode = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget aspectRatioMode() {\n\t\treturn this._aspectRatioMode;\n\t}\n\tset calculateProjection(newValue) {\n\t\tthis._calculateProjection = newValue;\n\t\tthis._projMatDirty = true;\n\t}\n\tget calculateProjection() {\n\t\treturn this._calculateProjection;\n\t}\n\tset calculateTransform(newValue) {\n\t\tthis._calculateTransform = newValue;\n\t}\n\tget calculateTransform() {\n\t\treturn this._calculateTransform;\n\t}\n\tset clearColor(newValue) {\n\t\tthis._clearColor.copy(newValue);\n\t}\n\tget clearColor() {\n\t\treturn this._clearColor;\n\t}\n\tset clearColorBuffer(newValue) {\n\t\tthis._clearColorBuffer = newValue;\n\t}\n\tget clearColorBuffer() {\n\t\treturn this._clearColorBuffer;\n\t}\n\tset clearDepth(newValue) {\n\t\tthis._clearDepth = newValue;\n\t}\n\tget clearDepth() {\n\t\treturn this._clearDepth;\n\t}\n\tset clearDepthBuffer(newValue) {\n\t\tthis._clearDepthBuffer = newValue;\n\t}\n\tget clearDepthBuffer() {\n\t\treturn this._clearDepthBuffer;\n\t}\n\tset clearStencil(newValue) {\n\t\tthis._clearStencil = newValue;\n\t}\n\tget clearStencil() {\n\t\treturn this._clearStencil;\n\t}\n\tset clearStencilBuffer(newValue) {\n\t\tthis._clearStencilBuffer = newValue;\n\t}\n\tget clearStencilBuffer() {\n\t\treturn this._clearStencilBuffer;\n\t}\n\tset cullFaces(newValue) {\n\t\tthis._cullFaces = newValue;\n\t}\n\tget cullFaces() {\n\t\treturn this._cullFaces;\n\t}\n\tset farClip(newValue) {\n\t\tif (this._farClip !== newValue) {\n\t\t\tthis._farClip = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget farClip() {\n\t\tvar _this$xr2;\n\t\treturn (_this$xr2 = this.xr) != null && _this$xr2.active ? this._xrProperties.farClip : this._farClip;\n\t}\n\tset flipFaces(newValue) {\n\t\tthis._flipFaces = newValue;\n\t}\n\tget flipFaces() {\n\t\treturn this._flipFaces;\n\t}\n\tset fov(newValue) {\n\t\tif (this._fov !== newValue) {\n\t\t\tthis._fov = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget fov() {\n\t\tvar _this$xr3;\n\t\treturn (_this$xr3 = this.xr) != null && _this$xr3.active ? this._xrProperties.fov : this._fov;\n\t}\n\tset frustumCulling(newValue) {\n\t\tthis._frustumCulling = newValue;\n\t}\n\tget frustumCulling() {\n\t\treturn this._frustumCulling;\n\t}\n\tset horizontalFov(newValue) {\n\t\tif (this._horizontalFov !== newValue) {\n\t\t\tthis._horizontalFov = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget horizontalFov() {\n\t\tvar _this$xr4;\n\t\treturn (_this$xr4 = this.xr) != null && _this$xr4.active ? this._xrProperties.horizontalFov : this._horizontalFov;\n\t}\n\tset layers(newValue) {\n\t\tthis._layers = newValue.slice(0);\n\t\tthis._layersSet = new Set(this._layers);\n\t}\n\tget layers() {\n\t\treturn this._layers;\n\t}\n\tget layersSet() {\n\t\treturn this._layersSet;\n\t}\n\tset nearClip(newValue) {\n\t\tif (this._nearClip !== newValue) {\n\t\t\tthis._nearClip = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget nearClip() {\n\t\tvar _this$xr5;\n\t\treturn (_this$xr5 = this.xr) != null && _this$xr5.active ? this._xrProperties.nearClip : this._nearClip;\n\t}\n\tset node(newValue) {\n\t\tthis._node = newValue;\n\t}\n\tget node() {\n\t\treturn this._node;\n\t}\n\tset orthoHeight(newValue) {\n\t\tif (this._orthoHeight !== newValue) {\n\t\t\tthis._orthoHeight = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget orthoHeight() {\n\t\treturn this._orthoHeight;\n\t}\n\tset projection(newValue) {\n\t\tif (this._projection !== newValue) {\n\t\t\tthis._projection = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget projection() {\n\t\treturn this._projection;\n\t}\n\tget projectionMatrix() {\n\t\tthis._evaluateProjectionMatrix();\n\t\treturn this._projMat;\n\t}\n\tset rect(newValue) {\n\t\tthis._rect.copy(newValue);\n\t}\n\tget rect() {\n\t\treturn this._rect;\n\t}\n\tset renderTarget(newValue) {\n\t\tthis._renderTarget = newValue;\n\t}\n\tget renderTarget() {\n\t\treturn this._renderTarget;\n\t}\n\tset scissorRect(newValue) {\n\t\tthis._scissorRect.copy(newValue);\n\t}\n\tget scissorRect() {\n\t\treturn this._scissorRect;\n\t}\n\tget viewMatrix() {\n\t\tif (this._viewMatDirty) {\n\t\t\tconst wtm = this._node.getWorldTransform();\n\t\t\tthis._viewMat.copy(wtm).invert();\n\t\t\tthis._viewMatDirty = false;\n\t\t}\n\t\treturn this._viewMat;\n\t}\n\tset aperture(newValue) {\n\t\tthis._aperture = newValue;\n\t}\n\tget aperture() {\n\t\treturn this._aperture;\n\t}\n\tset sensitivity(newValue) {\n\t\tthis._sensitivity = newValue;\n\t}\n\tget sensitivity() {\n\t\treturn this._sensitivity;\n\t}\n\tset shutter(newValue) {\n\t\tthis._shutter = newValue;\n\t}\n\tget shutter() {\n\t\treturn this._shutter;\n\t}\n\tset xr(newValue) {\n\t\tif (this._xr !== newValue) {\n\t\t\tthis._xr = newValue;\n\t\t\tthis._projMatDirty = true;\n\t\t}\n\t}\n\tget xr() {\n\t\treturn this._xr;\n\t}\n\tclone() {\n\t\treturn new Camera().copy(this);\n\t}\n\tcopy(other) {\n\t\tthis._aspectRatio = other._aspectRatio;\n\t\tthis._farClip = other._farClip;\n\t\tthis._fov = other._fov;\n\t\tthis._horizontalFov = other._horizontalFov;\n\t\tthis._nearClip = other._nearClip;\n\t\tthis._xrProperties.aspectRatio = other._xrProperties.aspectRatio;\n\t\tthis._xrProperties.farClip = other._xrProperties.farClip;\n\t\tthis._xrProperties.fov = other._xrProperties.fov;\n\t\tthis._xrProperties.horizontalFov = other._xrProperties.horizontalFov;\n\t\tthis._xrProperties.nearClip = other._xrProperties.nearClip;\n\t\tthis.aspectRatioMode = other.aspectRatioMode;\n\t\tthis.calculateProjection = other.calculateProjection;\n\t\tthis.calculateTransform = other.calculateTransform;\n\t\tthis.clearColor = other.clearColor;\n\t\tthis.clearColorBuffer = other.clearColorBuffer;\n\t\tthis.clearDepth = other.clearDepth;\n\t\tthis.clearDepthBuffer = other.clearDepthBuffer;\n\t\tthis.clearStencil = other.clearStencil;\n\t\tthis.clearStencilBuffer = other.clearStencilBuffer;\n\t\tthis.cullFaces = other.cullFaces;\n\t\tthis.flipFaces = other.flipFaces;\n\t\tthis.frustumCulling = other.frustumCulling;\n\t\tthis.layers = other.layers;\n\t\tthis.orthoHeight = other.orthoHeight;\n\t\tthis.projection = other.projection;\n\t\tthis.rect = other.rect;\n\t\tthis.renderTarget = other.renderTarget;\n\t\tthis.scissorRect = other.scissorRect;\n\t\tthis.aperture = other.aperture;\n\t\tthis.shutter = other.shutter;\n\t\tthis.sensitivity = other.sensitivity;\n\t\tthis.shaderPassInfo = other.shaderPassInfo;\n\t\tthis.jitter = other.jitter;\n\t\tthis._projMatDirty = true;\n\t\treturn this;\n\t}\n\t_enableRenderPassColorGrab(device, enable) {\n\t\tif (enable) {\n\t\t\tif (!this.renderPassColorGrab) {\n\t\t\t\tthis.renderPassColorGrab = new RenderPassColorGrab(device);\n\t\t\t}\n\t\t} else {\n\t\t\tvar _this$renderPassColor2;\n\t\t\t(_this$renderPassColor2 = this.renderPassColorGrab) == null || _this$renderPassColor2.destroy();\n\t\t\tthis.renderPassColorGrab = null;\n\t\t}\n\t}\n\t_enableRenderPassDepthGrab(device, renderer, enable) {\n\t\tif (enable) {\n\t\t\tif (!this.renderPassDepthGrab) {\n\t\t\t\tthis.renderPassDepthGrab = device.isWebGL1 ? new RenderPassDepth(device, renderer, this) : new RenderPassDepthGrab(device, this);\n\t\t\t}\n\t\t} else {\n\t\t\tvar _this$renderPassDepth2;\n\t\t\t(_this$renderPassDepth2 = this.renderPassDepthGrab) == null || _this$renderPassDepth2.destroy();\n\t\t\tthis.renderPassDepthGrab = null;\n\t\t}\n\t}\n\t_updateViewProjMat() {\n\t\tif (this._projMatDirty || this._viewMatDirty || this._viewProjMatDirty) {\n\t\t\tthis._viewProjMat.mul2(this.projectionMatrix, this.viewMatrix);\n\t\t\tthis._viewProjMatDirty = false;\n\t\t}\n\t}\n\tworldToScreen(worldCoord, cw, ch, screenCoord = new Vec3()) {\n\t\tthis._updateViewProjMat();\n\t\tthis._viewProjMat.transformPoint(worldCoord, screenCoord);\n\t\tconst vpm = this._viewProjMat.data;\n\t\tconst w = worldCoord.x * vpm[3] + worldCoord.y * vpm[7] + worldCoord.z * vpm[11] + 1 * vpm[15];\n\t\tscreenCoord.x = (screenCoord.x / w + 1) * 0.5 * cw;\n\t\tscreenCoord.y = (1 - screenCoord.y / w) * 0.5 * ch;\n\t\treturn screenCoord;\n\t}\n\tscreenToWorld(x, y, z, cw, ch, worldCoord = new Vec3()) {\n\t\tconst range = this.farClip - this.nearClip;\n\t\t_deviceCoord.set(x / cw, (ch - y) / ch, z / range);\n\t\t_deviceCoord.mulScalar(2);\n\t\t_deviceCoord.sub(Vec3.ONE);\n\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\tMat4._getPerspectiveHalfSize(_halfSize, this.fov, this.aspectRatio, this.nearClip, this.horizontalFov);\n\t\t\t_halfSize.x *= _deviceCoord.x;\n\t\t\t_halfSize.y *= _deviceCoord.y;\n\t\t\tconst invView = this._node.getWorldTransform();\n\t\t\t_halfSize.z = -this.nearClip;\n\t\t\tinvView.transformPoint(_halfSize, _point);\n\t\t\tconst cameraPos = this._node.getPosition();\n\t\t\tworldCoord.sub2(_point, cameraPos);\n\t\t\tworldCoord.normalize();\n\t\t\tworldCoord.mulScalar(z);\n\t\t\tworldCoord.add(cameraPos);\n\t\t} else {\n\t\t\tthis._updateViewProjMat();\n\t\t\t_invViewProjMat.copy(this._viewProjMat).invert();\n\t\t\t_invViewProjMat.transformPoint(_deviceCoord, worldCoord);\n\t\t}\n\t\treturn worldCoord;\n\t}\n\t_evaluateProjectionMatrix() {\n\t\tif (this._projMatDirty) {\n\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\tthis._projMat.setPerspective(this.fov, this.aspectRatio, this.nearClip, this.farClip, this.horizontalFov);\n\t\t\t\tthis._projMatSkybox.copy(this._projMat);\n\t\t\t} else {\n\t\t\t\tconst y = this._orthoHeight;\n\t\t\t\tconst x = y * this.aspectRatio;\n\t\t\t\tthis._projMat.setOrtho(-x, x, -y, y, this.nearClip, this.farClip);\n\t\t\t\tthis._projMatSkybox.setPerspective(this.fov, this.aspectRatio, this.nearClip, this.farClip);\n\t\t\t}\n\t\t\tthis._projMatDirty = false;\n\t\t}\n\t}\n\tgetProjectionMatrixSkybox() {\n\t\tthis._evaluateProjectionMatrix();\n\t\treturn this._projMatSkybox;\n\t}\n\tgetExposure() {\n\t\tconst ev100 = Math.log2(this._aperture * this._aperture / this._shutter * 100.0 / this._sensitivity);\n\t\treturn 1.0 / (Math.pow(2.0, ev100) * 1.2);\n\t}\n\tgetScreenSize(sphere) {\n\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\tconst distance = this._node.getPosition().distance(sphere.center);\n\t\t\tif (distance < sphere.radius) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tconst viewAngle = Math.asin(sphere.radius / distance);\n\t\t\tconst sphereViewHeight = Math.tan(viewAngle);\n\t\t\tconst screenViewHeight = Math.tan(this.fov / 2 * math.DEG_TO_RAD);\n\t\t\treturn Math.min(sphereViewHeight / screenViewHeight, 1);\n\t\t}\n\t\treturn math.clamp(sphere.radius / this._orthoHeight, 0, 1);\n\t}\n\tgetFrustumCorners(near = this.nearClip, far = this.farClip) {\n\t\tconst fov = this.fov * Math.PI / 180.0;\n\t\tlet y = this._projection === PROJECTION_PERSPECTIVE ? Math.tan(fov / 2.0) * near : this._orthoHeight;\n\t\tlet x = y * this.aspectRatio;\n\t\tconst points = _frustumPoints;\n\t\tpoints[0].x = x;\n\t\tpoints[0].y = -y;\n\t\tpoints[0].z = -near;\n\t\tpoints[1].x = x;\n\t\tpoints[1].y = y;\n\t\tpoints[1].z = -near;\n\t\tpoints[2].x = -x;\n\t\tpoints[2].y = y;\n\t\tpoints[2].z = -near;\n\t\tpoints[3].x = -x;\n\t\tpoints[3].y = -y;\n\t\tpoints[3].z = -near;\n\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\ty = Math.tan(fov / 2.0) * far;\n\t\t\tx = y * this.aspectRatio;\n\t\t}\n\t\tpoints[4].x = x;\n\t\tpoints[4].y = -y;\n\t\tpoints[4].z = -far;\n\t\tpoints[5].x = x;\n\t\tpoints[5].y = y;\n\t\tpoints[5].z = -far;\n\t\tpoints[6].x = -x;\n\t\tpoints[6].y = y;\n\t\tpoints[6].z = -far;\n\t\tpoints[7].x = -x;\n\t\tpoints[7].y = -y;\n\t\tpoints[7].z = -far;\n\t\treturn points;\n\t}\n\tsetXrProperties(properties) {\n\t\tObject.assign(this._xrProperties, properties);\n\t\tthis._projMatDirty = true;\n\t}\n}\n\nexport { Camera };\n", "import { BLEND_NONE, DITHER_NONE, FOG_NONE, GAMMA_NONE } from '../../constants.js';\n\nclass LitShaderOptions {\n\tconstructor() {\n\t\tthis.hasTangents = false;\n\t\tthis.chunks = {};\n\t\tthis.pass = 0;\n\t\tthis.alphaTest = false;\n\t\tthis.blendType = BLEND_NONE;\n\t\tthis.separateAmbient = false;\n\t\tthis.screenSpace = false;\n\t\tthis.skin = false;\n\t\tthis.useInstancing = false;\n\t\tthis.useMorphPosition = false;\n\t\tthis.useMorphNormal = false;\n\t\tthis.useMorphTextureBased = false;\n\t\tthis.nineSlicedMode = 0;\n\t\tthis.clusteredLightingEnabled = true;\n\t\tthis.clusteredLightingCookiesEnabled = false;\n\t\tthis.clusteredLightingShadowsEnabled = false;\n\t\tthis.clusteredLightingShadowType = 0;\n\t\tthis.clusteredLightingAreaLightsEnabled = false;\n\t\tthis.vertexColors = false;\n\t\tthis.lightMapEnabled = false;\n\t\tthis.dirLightMapEnabled = false;\n\t\tthis.useHeights = false;\n\t\tthis.useNormals = false;\n\t\tthis.useClearCoatNormals = false;\n\t\tthis.useAo = false;\n\t\tthis.diffuseMapEnabled = false;\n\t\tthis.useAmbientTint = false;\n\t\tthis.customFragmentShader = null;\n\t\tthis.pixelSnap = false;\n\t\tthis.shadingModel = 0;\n\t\tthis.ambientSH = false;\n\t\tthis.fastTbn = false;\n\t\tthis.twoSidedLighting = false;\n\t\tthis.occludeDirect = false;\n\t\tthis.occludeSpecular = 0;\n\t\tthis.occludeSpecularFloat = false;\n\t\tthis.useMsdf = false;\n\t\tthis.msdfTextAttribute = false;\n\t\tthis.alphaToCoverage = false;\n\t\tthis.opacityFadesSpecular = false;\n\t\tthis.opacityDither = DITHER_NONE;\n\t\tthis.opacityShadowDither = DITHER_NONE;\n\t\tthis.cubeMapProjection = 0;\n\t\tthis.conserveEnergy = false;\n\t\tthis.useSpecular = false;\n\t\tthis.useSpecularityFactor = false;\n\t\tthis.enableGGXSpecular = false;\n\t\tthis.fresnelModel = 0;\n\t\tthis.useRefraction = false;\n\t\tthis.useClearCoat = false;\n\t\tthis.useSheen = false;\n\t\tthis.useIridescence = false;\n\t\tthis.useMetalness = false;\n\t\tthis.useDynamicRefraction = false;\n\t\tthis.dispersion = false;\n\t\tthis.fog = FOG_NONE;\n\t\tthis.gamma = GAMMA_NONE;\n\t\tthis.toneMap = -1;\n\t\tthis.fixSeams = false;\n\t\tthis.reflectionSource = null;\n\t\tthis.reflectionEncoding = null;\n\t\tthis.reflectionCubemapEncoding = null;\n\t\tthis.ambientSource = 'constant';\n\t\tthis.ambientEncoding = null;\n\t\tthis.skyboxIntensity = 1.0;\n\t\tthis.useCubeMapRotation = false;\n\t\tthis.lightMapWithoutAmbient = false;\n\t\tthis.lights = [];\n\t\tthis.noShadow = false;\n\t\tthis.lightMaskDynamic = 0x0;\n\t\tthis.userAttributes = {};\n\t}\n}\n\nexport { LitShaderOptions };\n", "import { SHADER_FORWARDHDR, GAMMA_SRGBHDR, TONEMAP_LINEAR, SHADERDEF_SCREENSPACE, SHADERDEF_SKIN, SHADERDEF_INSTANCING, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_NORMAL, SHADERDEF_MORPH_TEXTURE_BASED, SHADERDEF_TANGENTS, SPRITE_RENDERMODE_SIMPLE, CUBEPROJ_NONE, SPECULAR_BLINN, GAMMA_NONE, MASK_AFFECT_DYNAMIC, LIGHTTYPE_DIRECTIONAL, LIGHTTYPE_OMNI, LIGHTTYPE_SPOT, SHADERDEF_NOSHADOW } from '../constants.js';\n\nclass LitMaterialOptionsBuilder {\n\tstatic update(litOptions, material, scene, objDefs, pass, sortedLights) {\n\t\tLitMaterialOptionsBuilder.updateSharedOptions(litOptions, material, scene, objDefs, pass);\n\t\tLitMaterialOptionsBuilder.updateMaterialOptions(litOptions, material);\n\t\tLitMaterialOptionsBuilder.updateEnvOptions(litOptions, material, scene);\n\t\tLitMaterialOptionsBuilder.updateLightingOptions(litOptions, material, objDefs, sortedLights);\n\t\tif (pass === SHADER_FORWARDHDR) {\n\t\t\tlitOptions.gamma = GAMMA_SRGBHDR;\n\t\t\tlitOptions.toneMap = TONEMAP_LINEAR;\n\t\t}\n\t}\n\tstatic updateSharedOptions(litOptions, material, scene, objDefs, pass) {\n\t\tlitOptions.chunks = material.chunks;\n\t\tlitOptions.pass = pass;\n\t\tlitOptions.alphaTest = material.alphaTest > 0;\n\t\tlitOptions.blendType = material.blendType;\n\t\tlitOptions.screenSpace = objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0;\n\t\tlitOptions.skin = objDefs && (objDefs & SHADERDEF_SKIN) !== 0;\n\t\tlitOptions.useInstancing = objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0;\n\t\tlitOptions.useMorphPosition = objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0;\n\t\tlitOptions.useMorphNormal = objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0;\n\t\tlitOptions.useMorphTextureBased = objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED) !== 0;\n\t\tlitOptions.hasTangents = objDefs && (objDefs & SHADERDEF_TANGENTS) !== 0;\n\t\tlitOptions.nineSlicedMode = material.nineSlicedMode || SPRITE_RENDERMODE_SIMPLE;\n\t\tif (material.useLighting && scene.clusteredLightingEnabled) {\n\t\t\tlitOptions.clusteredLightingEnabled = true;\n\t\t\tlitOptions.clusteredLightingCookiesEnabled = scene.lighting.cookiesEnabled;\n\t\t\tlitOptions.clusteredLightingShadowsEnabled = scene.lighting.shadowsEnabled;\n\t\t\tlitOptions.clusteredLightingShadowType = scene.lighting.shadowType;\n\t\t\tlitOptions.clusteredLightingAreaLightsEnabled = scene.lighting.areaLightsEnabled;\n\t\t} else {\n\t\t\tlitOptions.clusteredLightingEnabled = false;\n\t\t\tlitOptions.clusteredLightingCookiesEnabled = false;\n\t\t\tlitOptions.clusteredLightingShadowsEnabled = false;\n\t\t\tlitOptions.clusteredLightingAreaLightsEnabled = false;\n\t\t}\n\t}\n\tstatic updateMaterialOptions(litOptions, material) {\n\t\tlitOptions.useAmbientTint = false;\n\t\tlitOptions.separateAmbient = false;\n\t\tlitOptions.customFragmentShader = null;\n\t\tlitOptions.pixelSnap = material.pixelSnap;\n\t\tlitOptions.shadingModel = material.shadingModel;\n\t\tlitOptions.ambientSH = material.ambientSH;\n\t\tlitOptions.fastTbn = material.fastTbn;\n\t\tlitOptions.twoSidedLighting = material.twoSidedLighting;\n\t\tlitOptions.occludeDirect = material.occludeDirect;\n\t\tlitOptions.occludeSpecular = material.occludeSpecular;\n\t\tlitOptions.occludeSpecularFloat = material.occludeSpecularIntensity !== 1.0;\n\t\tlitOptions.useMsdf = false;\n\t\tlitOptions.msdfTextAttribute = false;\n\t\tlitOptions.alphaToCoverage = material.alphaToCoverage;\n\t\tlitOptions.opacityFadesSpecular = material.opacityFadesSpecular;\n\t\tlitOptions.opacityDither = material.opacityDither;\n\t\tlitOptions.cubeMapProjection = CUBEPROJ_NONE;\n\t\tlitOptions.conserveEnergy = material.conserveEnergy && material.shadingModel === SPECULAR_BLINN;\n\t\tlitOptions.useSpecular = material.hasSpecular;\n\t\tlitOptions.useSpecularityFactor = material.hasSpecularityFactor;\n\t\tlitOptions.enableGGXSpecular = material.ggxSpecular;\n\t\tlitOptions.fresnelModel = material.fresnelModel;\n\t\tlitOptions.useRefraction = material.hasRefraction;\n\t\tlitOptions.useClearCoat = material.hasClearCoat;\n\t\tlitOptions.useSheen = material.hasSheen;\n\t\tlitOptions.useIridescence = material.hasIrridescence;\n\t\tlitOptions.useMetalness = material.hasMetalness;\n\t\tlitOptions.useDynamicRefraction = material.dynamicRefraction;\n\t\tlitOptions.dispersion = material.dispersion > 0;\n\t\tlitOptions.vertexColors = false;\n\t\tlitOptions.lightMapEnabled = material.hasLighting;\n\t\tlitOptions.dirLightMapEnabled = material.dirLightMap;\n\t\tlitOptions.useHeights = material.hasHeights;\n\t\tlitOptions.useNormals = material.hasNormals;\n\t\tlitOptions.useClearCoatNormals = material.hasClearCoatNormals;\n\t\tlitOptions.useAo = material.hasAo;\n\t\tlitOptions.diffuseMapEnabled = material.hasDiffuseMap;\n\t}\n\tstatic updateEnvOptions(litOptions, material, scene) {\n\t\tlitOptions.fog = material.useFog ? scene.fog : 'none';\n\t\tlitOptions.gamma = material.useGammaTonemap ? scene.gammaCorrection : GAMMA_NONE;\n\t\tlitOptions.toneMap = material.useGammaTonemap ? scene.toneMapping : -1;\n\t\tlitOptions.fixSeams = false;\n\t\tif (material.useSkybox && scene.envAtlas && scene.skybox) {\n\t\t\tlitOptions.reflectionSource = 'envAtlasHQ';\n\t\t\tlitOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\tlitOptions.reflectionCubemapEncoding = scene.skybox.encoding;\n\t\t} else if (material.useSkybox && scene.envAtlas) {\n\t\t\tlitOptions.reflectionSource = 'envAtlas';\n\t\t\tlitOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t} else if (material.useSkybox && scene.skybox) {\n\t\t\tlitOptions.reflectionSource = 'cubeMap';\n\t\t\tlitOptions.reflectionEncoding = scene.skybox.encoding;\n\t\t} else {\n\t\t\tlitOptions.reflectionSource = null;\n\t\t\tlitOptions.reflectionEncoding = null;\n\t\t}\n\t\tif (material.ambientSH) {\n\t\t\tlitOptions.ambientSource = 'ambientSH';\n\t\t\tlitOptions.ambientEncoding = null;\n\t\t} else if (litOptions.reflectionSource && scene.envAtlas) {\n\t\t\tlitOptions.ambientSource = 'envAtlas';\n\t\t\tlitOptions.ambientEncoding = scene.envAtlas.encoding;\n\t\t} else {\n\t\t\tlitOptions.ambientSource = 'constant';\n\t\t\tlitOptions.ambientEncoding = null;\n\t\t}\n\t\tconst hasSkybox = !!litOptions.reflectionSource;\n\t\tlitOptions.skyboxIntensity = hasSkybox;\n\t\tlitOptions.useCubeMapRotation = hasSkybox && scene._skyboxRotationShaderInclude;\n\t}\n\tstatic updateLightingOptions(litOptions, material, objDefs, sortedLights) {\n\t\tlitOptions.lightMapWithoutAmbient = false;\n\t\tif (material.useLighting) {\n\t\t\tconst lightsFiltered = [];\n\t\t\tconst mask = objDefs ? objDefs >> 16 : MASK_AFFECT_DYNAMIC;\n\t\t\tlitOptions.lightMaskDynamic = !!(mask & MASK_AFFECT_DYNAMIC);\n\t\t\tlitOptions.lightMapWithoutAmbient = false;\n\t\t\tif (sortedLights) {\n\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_DIRECTIONAL, sortedLights[LIGHTTYPE_DIRECTIONAL], lightsFiltered, mask);\n\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_OMNI, sortedLights[LIGHTTYPE_OMNI], lightsFiltered, mask);\n\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_SPOT, sortedLights[LIGHTTYPE_SPOT], lightsFiltered, mask);\n\t\t\t}\n\t\t\tlitOptions.lights = lightsFiltered;\n\t\t} else {\n\t\t\tlitOptions.lights = [];\n\t\t}\n\t\tif (litOptions.lights.length === 0 || (objDefs & SHADERDEF_NOSHADOW) !== 0) {\n\t\t\tlitOptions.noShadow = true;\n\t\t}\n\t}\n\tstatic collectLights(lType, lights, lightsFiltered, mask) {\n\t\tfor (let i = 0; i < lights.length; i++) {\n\t\t\tconst light = lights[i];\n\t\t\tif (light.enabled) {\n\t\t\t\tif (light.mask & mask) {\n\t\t\t\t\tlightsFiltered.push(light);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { LitMaterialOptionsBuilder };\n", "class ChunkBuilder {\n\tconstructor() {\n\t\tthis.code = '';\n\t}\n\tappend(...chunks) {\n\t\tchunks.forEach(chunk => {\n\t\t\tif (chunk.endsWith('\\n')) {\n\t\t\t\tthis.code += chunk;\n\t\t\t} else {\n\t\t\t\tthis.code += chunk + '\\n';\n\t\t\t}\n\t\t});\n\t}\n\tprepend(...chunks) {\n\t\tchunks.forEach(chunk => {\n\t\t\tif (chunk.endsWith('\\n')) {\n\t\t\t\tthis.code = chunk + this.code;\n\t\t\t} else {\n\t\t\t\tthis.code = chunk + '\\n' + this.code;\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport { ChunkBuilder };\n", "const decodeTable = {\n\t'linear': 'decodeLinear',\n\t'srgb': 'decodeGamma',\n\t'rgbm': 'decodeRGBM',\n\t'rgbe': 'decodeRGBE',\n\t'rgbp': 'decodeRGBP'\n};\nconst encodeTable = {\n\t'linear': 'encodeLinear',\n\t'srgb': 'encodeGamma',\n\t'rgbm': 'encodeRGBM',\n\t'rgbe': 'encodeRGBE',\n\t'rgbp': 'encodeRGBP'\n};\nclass ChunkUtils {\n\tstatic decodeFunc(encoding) {\n\t\treturn decodeTable[encoding] || 'decodeGamma';\n\t}\n\tstatic encodeFunc(encoding) {\n\t\treturn encodeTable[encoding] || 'encodeGamma';\n\t}\n}\n\nexport { ChunkUtils };\n", "import { Quat } from '../../core/math/quat.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { Mat4 } from '../../core/math/mat4.js';\nimport { ASPECT_MANUAL, LIGHTTYPE_DIRECTIONAL, PROJECTION_ORTHOGRAPHIC, LIGHTTYPE_SPOT, PROJECTION_PERSPECTIVE, LIGHTTYPE_OMNI } from '../constants.js';\nimport { Camera } from '../camera.js';\nimport { GraphNode } from '../graph-node.js';\n\nconst _viewMat = new Mat4();\nconst _viewProjMat = new Mat4();\nconst _viewportMatrix = new Mat4();\nclass LightCamera {\n\tstatic create(name, lightType, face) {\n\t\tconst camera = new Camera();\n\t\tcamera.node = new GraphNode(name);\n\t\tcamera.aspectRatio = 1;\n\t\tcamera.aspectRatioMode = ASPECT_MANUAL;\n\t\tcamera._scissorRectClear = true;\n\t\tswitch (lightType) {\n\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\tcamera.node.setRotation(LightCamera.pointLightRotations[face]);\n\t\t\t\tcamera.fov = 90;\n\t\t\t\tcamera.projection = PROJECTION_PERSPECTIVE;\n\t\t\t\tbreak;\n\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\tcamera.projection = PROJECTION_PERSPECTIVE;\n\t\t\t\tbreak;\n\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\tcamera.projection = PROJECTION_ORTHOGRAPHIC;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn camera;\n\t}\n\tstatic evalSpotCookieMatrix(light) {\n\t\tlet cookieCamera = LightCamera._spotCookieCamera;\n\t\tif (!cookieCamera) {\n\t\t\tcookieCamera = LightCamera.create('SpotCookieCamera', LIGHTTYPE_SPOT);\n\t\t\tLightCamera._spotCookieCamera = cookieCamera;\n\t\t}\n\t\tcookieCamera.fov = light._outerConeAngle * 2;\n\t\tconst cookieNode = cookieCamera._node;\n\t\tcookieNode.setPosition(light._node.getPosition());\n\t\tcookieNode.setRotation(light._node.getRotation());\n\t\tcookieNode.rotateLocal(-90, 0, 0);\n\t\t_viewMat.setTRS(cookieNode.getPosition(), cookieNode.getRotation(), Vec3.ONE).invert();\n\t\t_viewProjMat.mul2(cookieCamera.projectionMatrix, _viewMat);\n\t\tconst cookieMatrix = light.cookieMatrix;\n\t\tconst rectViewport = light.atlasViewport;\n\t\t_viewportMatrix.setViewport(rectViewport.x, rectViewport.y, rectViewport.z, rectViewport.w);\n\t\tcookieMatrix.mul2(_viewportMatrix, _viewProjMat);\n\t\treturn cookieMatrix;\n\t}\n}\nLightCamera.pointLightRotations = [new Quat().setFromEulerAngles(0, 90, 180), new Quat().setFromEulerAngles(0, -90, 180), new Quat().setFromEulerAngles(90, 0, 0), new Quat().setFromEulerAngles(-90, 0, 0), new Quat().setFromEulerAngles(0, 180, 180), new Quat().setFromEulerAngles(0, 0, 180)];\nLightCamera._spotCookieCamera = null;\n\nexport { LightCamera };\n", "import { Vec3 } from '../../core/math/vec3.js';\nimport { PIXELFORMAT_RGBA8, PIXELFORMAT_RGBA32F, ADDRESS_CLAMP_TO_EDGE, TEXTURETYPE_DEFAULT, FILTER_NEAREST } from '../../platform/graphics/constants.js';\nimport { FloatPacking } from '../../core/math/float-packing.js';\nimport { MASK_AFFECT_DYNAMIC, MASK_AFFECT_LIGHTMAPPED, LIGHTTYPE_SPOT, LIGHTSHAPE_PUNCTUAL } from '../constants.js';\nimport { Texture } from '../../platform/graphics/texture.js';\nimport { DeviceCache } from '../../platform/graphics/device-cache.js';\nimport { LightCamera } from '../renderer/light-camera.js';\n\nconst epsilon = 0.000001;\nconst tempVec3 = new Vec3();\nconst tempAreaLightSizes = new Float32Array(6);\nconst areaHalfAxisWidth = new Vec3(-0.5, 0, 0);\nconst areaHalfAxisHeight = new Vec3(0, 0, 0.5);\nconst TextureIndex8 = {\n\tFLAGS: 0,\n\tCOLOR_A: 1,\n\tCOLOR_B: 2,\n\tSPOT_ANGLES: 3,\n\tSHADOW_BIAS: 4,\n\tCOOKIE_A: 5,\n\tCOOKIE_B: 6,\n\tCOUNT_ALWAYS: 7,\n\tPOSITION_X: 7,\n\tPOSITION_Y: 8,\n\tPOSITION_Z: 9,\n\tRANGE: 10,\n\tSPOT_DIRECTION_X: 11,\n\tSPOT_DIRECTION_Y: 12,\n\tSPOT_DIRECTION_Z: 13,\n\tPROJ_MAT_00: 14,\n\tATLAS_VIEWPORT_A: 14,\n\tPROJ_MAT_01: 15,\n\tATLAS_VIEWPORT_B: 15,\n\tPROJ_MAT_02: 16,\n\tPROJ_MAT_03: 17,\n\tPROJ_MAT_10: 18,\n\tPROJ_MAT_11: 19,\n\tPROJ_MAT_12: 20,\n\tPROJ_MAT_13: 21,\n\tPROJ_MAT_20: 22,\n\tPROJ_MAT_21: 23,\n\tPROJ_MAT_22: 24,\n\tPROJ_MAT_23: 25,\n\tPROJ_MAT_30: 26,\n\tPROJ_MAT_31: 27,\n\tPROJ_MAT_32: 28,\n\tPROJ_MAT_33: 29,\n\tAREA_DATA_WIDTH_X: 30,\n\tAREA_DATA_WIDTH_Y: 31,\n\tAREA_DATA_WIDTH_Z: 32,\n\tAREA_DATA_HEIGHT_X: 33,\n\tAREA_DATA_HEIGHT_Y: 34,\n\tAREA_DATA_HEIGHT_Z: 35,\n\tCOUNT: 36\n};\nconst TextureIndexFloat = {\n\tPOSITION_RANGE: 0,\n\tSPOT_DIRECTION: 1,\n\tPROJ_MAT_0: 2,\n\tATLAS_VIEWPORT: 2,\n\tPROJ_MAT_1: 3,\n\tPROJ_MAT_2: 4,\n\tPROJ_MAT_3: 5,\n\tAREA_DATA_WIDTH: 6,\n\tAREA_DATA_HEIGHT: 7,\n\tCOUNT: 8\n};\nconst FORMAT_FLOAT = 0;\nconst FORMAT_8BIT = 1;\nconst shaderDefinesDeviceCache = new DeviceCache();\nclass LightsBuffer {\n\tstatic getLightTextureFormat(device) {\n\t\treturn device.extTextureFloat && device.maxTextures > 8 ? FORMAT_FLOAT : FORMAT_8BIT;\n\t}\n\tstatic getShaderDefines(device) {\n\t\treturn shaderDefinesDeviceCache.get(device, () => {\n\t\t\tconst buildShaderDefines = (device, object, prefix, floatOffset) => {\n\t\t\t\treturn Object.keys(object).map(key => `#define ${prefix}${key} ${object[key]}${floatOffset}`).join('\\n');\n\t\t\t};\n\t\t\tconst lightTextureFormat = LightsBuffer.getLightTextureFormat(device);\n\t\t\tconst clusterTextureFormat = lightTextureFormat === FORMAT_FLOAT ? 'FLOAT' : '8BIT';\n\t\t\tconst floatOffset = device.supportsTextureFetch ? '' : '.5';\n\t\t\treturn `\n\t\t\t\t\t\t\t\t\\n#define CLUSTER_TEXTURE_${clusterTextureFormat}\n\t\t\t\t\t\t\t\t${buildShaderDefines(device, TextureIndex8, 'CLUSTER_TEXTURE_8_', floatOffset)}\n\t\t\t\t\t\t\t\t${buildShaderDefines(device, TextureIndexFloat, 'CLUSTER_TEXTURE_F_', floatOffset)}\n\t\t\t\t\t\t`;\n\t\t});\n\t}\n\tconstructor(device) {\n\t\tthis.device = device;\n\t\tthis.cookiesEnabled = false;\n\t\tthis.shadowsEnabled = false;\n\t\tthis.areaLightsEnabled = false;\n\t\tthis.maxLights = 255;\n\t\tlet pixelsPerLight8 = TextureIndex8.COUNT_ALWAYS;\n\t\tlet pixelsPerLightFloat = 0;\n\t\tthis.lightTextureFormat = LightsBuffer.getLightTextureFormat(device);\n\t\tif (this.lightTextureFormat === FORMAT_FLOAT) {\n\t\t\tpixelsPerLightFloat = TextureIndexFloat.COUNT;\n\t\t} else {\n\t\t\tpixelsPerLight8 = TextureIndex8.COUNT;\n\t\t}\n\t\tthis.lights8 = new Uint8ClampedArray(4 * pixelsPerLight8 * this.maxLights);\n\t\tthis.lightsTexture8 = this.createTexture(this.device, pixelsPerLight8, this.maxLights, PIXELFORMAT_RGBA8, 'LightsTexture8');\n\t\tthis._lightsTexture8Id = this.device.scope.resolve('lightsTexture8');\n\t\tif (pixelsPerLightFloat) {\n\t\t\tthis.lightsFloat = new Float32Array(4 * pixelsPerLightFloat * this.maxLights);\n\t\t\tthis.lightsTextureFloat = this.createTexture(this.device, pixelsPerLightFloat, this.maxLights, PIXELFORMAT_RGBA32F, 'LightsTextureFloat');\n\t\t\tthis._lightsTextureFloatId = this.device.scope.resolve('lightsTextureFloat');\n\t\t} else {\n\t\t\tthis.lightsFloat = null;\n\t\t\tthis.lightsTextureFloat = null;\n\t\t\tthis._lightsTextureFloatId = undefined;\n\t\t}\n\t\tthis._lightsTextureInvSizeId = this.device.scope.resolve('lightsTextureInvSize');\n\t\tthis._lightsTextureInvSizeData = new Float32Array(4);\n\t\tthis._lightsTextureInvSizeData[0] = pixelsPerLightFloat ? 1.0 / this.lightsTextureFloat.width : 0;\n\t\tthis._lightsTextureInvSizeData[1] = pixelsPerLightFloat ? 1.0 / this.lightsTextureFloat.height : 0;\n\t\tthis._lightsTextureInvSizeData[2] = 1.0 / this.lightsTexture8.width;\n\t\tthis._lightsTextureInvSizeData[3] = 1.0 / this.lightsTexture8.height;\n\t\tthis.invMaxColorValue = 0;\n\t\tthis.invMaxAttenuation = 0;\n\t\tthis.boundsMin = new Vec3();\n\t\tthis.boundsDelta = new Vec3();\n\t}\n\tdestroy() {\n\t\tif (this.lightsTexture8) {\n\t\t\tthis.lightsTexture8.destroy();\n\t\t\tthis.lightsTexture8 = null;\n\t\t}\n\t\tif (this.lightsTextureFloat) {\n\t\t\tthis.lightsTextureFloat.destroy();\n\t\t\tthis.lightsTextureFloat = null;\n\t\t}\n\t}\n\tcreateTexture(device, width, height, format, name) {\n\t\tconst tex = new Texture(device, {\n\t\t\tname: name,\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tmipmaps: false,\n\t\t\tformat: format,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\ttype: TEXTURETYPE_DEFAULT,\n\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tanisotropy: 1\n\t\t});\n\t\treturn tex;\n\t}\n\tsetCompressionRanges(maxAttenuation, maxColorValue) {\n\t\tthis.invMaxColorValue = 1 / maxColorValue;\n\t\tthis.invMaxAttenuation = 1 / maxAttenuation;\n\t}\n\tsetBounds(min, delta) {\n\t\tthis.boundsMin.copy(min);\n\t\tthis.boundsDelta.copy(delta);\n\t}\n\tuploadTextures() {\n\t\tif (this.lightsTextureFloat) {\n\t\t\tthis.lightsTextureFloat.lock().set(this.lightsFloat);\n\t\t\tthis.lightsTextureFloat.unlock();\n\t\t}\n\t\tthis.lightsTexture8.lock().set(this.lights8);\n\t\tthis.lightsTexture8.unlock();\n\t}\n\tupdateUniforms() {\n\t\tthis._lightsTexture8Id.setValue(this.lightsTexture8);\n\t\tif (this.lightTextureFormat === FORMAT_FLOAT) {\n\t\t\tthis._lightsTextureFloatId.setValue(this.lightsTextureFloat);\n\t\t}\n\t\tthis._lightsTextureInvSizeId.setValue(this._lightsTextureInvSizeData);\n\t}\n\tgetSpotDirection(direction, spot) {\n\t\tconst mat = spot._node.getWorldTransform();\n\t\tmat.getY(direction).mulScalar(-1);\n\t\tdirection.normalize();\n\t}\n\tgetLightAreaSizes(light) {\n\t\tconst mat = light._node.getWorldTransform();\n\t\tmat.transformVector(areaHalfAxisWidth, tempVec3);\n\t\ttempAreaLightSizes[0] = tempVec3.x;\n\t\ttempAreaLightSizes[1] = tempVec3.y;\n\t\ttempAreaLightSizes[2] = tempVec3.z;\n\t\tmat.transformVector(areaHalfAxisHeight, tempVec3);\n\t\ttempAreaLightSizes[3] = tempVec3.x;\n\t\ttempAreaLightSizes[4] = tempVec3.y;\n\t\ttempAreaLightSizes[5] = tempVec3.z;\n\t\treturn tempAreaLightSizes;\n\t}\n\taddLightDataFlags(data8, index, light, isSpot, castShadows, shadowIntensity) {\n\t\tdata8[index + 0] = isSpot ? 255 : 0;\n\t\tdata8[index + 1] = light._shape * 64;\n\t\tdata8[index + 2] = light._falloffMode * 255;\n\t\tdata8[index + 3] = castShadows ? shadowIntensity * 255 : 0;\n\t}\n\taddLightDataColor(data8, index, light, gammaCorrection, isCookie) {\n\t\tconst invMaxColorValue = this.invMaxColorValue;\n\t\tconst color = gammaCorrection ? light._linearFinalColor : light._finalColor;\n\t\tFloatPacking.float2Bytes(color[0] * invMaxColorValue, data8, index + 0, 2);\n\t\tFloatPacking.float2Bytes(color[1] * invMaxColorValue, data8, index + 2, 2);\n\t\tFloatPacking.float2Bytes(color[2] * invMaxColorValue, data8, index + 4, 2);\n\t\tdata8[index + 6] = isCookie ? 255 : 0;\n\t\tconst isDynamic = !!(light.mask & MASK_AFFECT_DYNAMIC);\n\t\tconst isLightmapped = !!(light.mask & MASK_AFFECT_LIGHTMAPPED);\n\t\tdata8[index + 7] = isDynamic && isLightmapped ? 127 : isLightmapped ? 255 : 0;\n\t}\n\taddLightDataSpotAngles(data8, index, light) {\n\t\tFloatPacking.float2Bytes(light._innerConeAngleCos * (0.5 - epsilon) + 0.5, data8, index + 0, 2);\n\t\tFloatPacking.float2Bytes(light._outerConeAngleCos * (0.5 - epsilon) + 0.5, data8, index + 2, 2);\n\t}\n\taddLightDataShadowBias(data8, index, light) {\n\t\tconst lightRenderData = light.getRenderData(null, 0);\n\t\tconst biases = light._getUniformBiasValues(lightRenderData);\n\t\tFloatPacking.float2BytesRange(biases.bias, data8, index, -1, 20, 2);\n\t\tFloatPacking.float2Bytes(biases.normalBias, data8, index + 2, 2);\n\t}\n\taddLightDataPositionRange(data8, index, light, pos) {\n\t\tconst normPos = tempVec3.sub2(pos, this.boundsMin).div(this.boundsDelta);\n\t\tFloatPacking.float2Bytes(normPos.x, data8, index + 0, 4);\n\t\tFloatPacking.float2Bytes(normPos.y, data8, index + 4, 4);\n\t\tFloatPacking.float2Bytes(normPos.z, data8, index + 8, 4);\n\t\tFloatPacking.float2Bytes(light.attenuationEnd * this.invMaxAttenuation, data8, index + 12, 4);\n\t}\n\taddLightDataSpotDirection(data8, index, light) {\n\t\tthis.getSpotDirection(tempVec3, light);\n\t\tFloatPacking.float2Bytes(tempVec3.x * (0.5 - epsilon) + 0.5, data8, index + 0, 4);\n\t\tFloatPacking.float2Bytes(tempVec3.y * (0.5 - epsilon) + 0.5, data8, index + 4, 4);\n\t\tFloatPacking.float2Bytes(tempVec3.z * (0.5 - epsilon) + 0.5, data8, index + 8, 4);\n\t}\n\taddLightDataLightProjMatrix(data8, index, lightProjectionMatrix) {\n\t\tconst matData = lightProjectionMatrix.data;\n\t\tfor (let m = 0; m < 12; m++) FloatPacking.float2BytesRange(matData[m], data8, index + 4 * m, -2, 2, 4);\n\t\tfor (let m = 12; m < 16; m++) {\n\t\t\tFloatPacking.float2MantissaExponent(matData[m], data8, index + 4 * m, 4);\n\t\t}\n\t}\n\taddLightDataCookies(data8, index, light) {\n\t\tconst isRgb = light._cookieChannel === 'rgb';\n\t\tdata8[index + 0] = Math.floor(light.cookieIntensity * 255);\n\t\tdata8[index + 1] = isRgb ? 255 : 0;\n\t\tif (!isRgb) {\n\t\t\tconst channel = light._cookieChannel;\n\t\t\tdata8[index + 4] = channel === 'rrr' ? 255 : 0;\n\t\t\tdata8[index + 5] = channel === 'ggg' ? 255 : 0;\n\t\t\tdata8[index + 6] = channel === 'bbb' ? 255 : 0;\n\t\t\tdata8[index + 7] = channel === 'aaa' ? 255 : 0;\n\t\t}\n\t}\n\taddLightAtlasViewport(data8, index, atlasViewport) {\n\t\tFloatPacking.float2Bytes(atlasViewport.x, data8, index + 0, 2);\n\t\tFloatPacking.float2Bytes(atlasViewport.y, data8, index + 2, 2);\n\t\tFloatPacking.float2Bytes(atlasViewport.z / 3, data8, index + 4, 2);\n\t}\n\taddLightAreaSizes(data8, index, light) {\n\t\tconst areaSizes = this.getLightAreaSizes(light);\n\t\tfor (let i = 0; i < 6; i++) {\n\t\t\tFloatPacking.float2MantissaExponent(areaSizes[i], data8, index + 4 * i, 4);\n\t\t}\n\t}\n\taddLightData(light, lightIndex, gammaCorrection) {\n\t\tconst isSpot = light._type === LIGHTTYPE_SPOT;\n\t\tconst hasAtlasViewport = light.atlasViewportAllocated;\n\t\tconst isCookie = this.cookiesEnabled && !!light._cookie && hasAtlasViewport;\n\t\tconst isArea = this.areaLightsEnabled && light.shape !== LIGHTSHAPE_PUNCTUAL;\n\t\tconst castShadows = this.shadowsEnabled && light.castShadows && hasAtlasViewport;\n\t\tconst pos = light._node.getPosition();\n\t\tlet lightProjectionMatrix = null;\n\t\tlet atlasViewport = null;\n\t\tif (isSpot) {\n\t\t\tif (castShadows) {\n\t\t\t\tconst lightRenderData = light.getRenderData(null, 0);\n\t\t\t\tlightProjectionMatrix = lightRenderData.shadowMatrix;\n\t\t\t} else if (isCookie) {\n\t\t\t\tlightProjectionMatrix = LightCamera.evalSpotCookieMatrix(light);\n\t\t\t}\n\t\t} else {\n\t\t\tif (castShadows || isCookie) {\n\t\t\t\tatlasViewport = light.atlasViewport;\n\t\t\t}\n\t\t}\n\t\tconst data8 = this.lights8;\n\t\tconst data8Start = lightIndex * this.lightsTexture8.width * 4;\n\t\tthis.addLightDataFlags(data8, data8Start + 4 * TextureIndex8.FLAGS, light, isSpot, castShadows, light.shadowIntensity);\n\t\tthis.addLightDataColor(data8, data8Start + 4 * TextureIndex8.COLOR_A, light, gammaCorrection, isCookie);\n\t\tif (isSpot) {\n\t\t\tthis.addLightDataSpotAngles(data8, data8Start + 4 * TextureIndex8.SPOT_ANGLES, light);\n\t\t}\n\t\tif (light.castShadows) {\n\t\t\tthis.addLightDataShadowBias(data8, data8Start + 4 * TextureIndex8.SHADOW_BIAS, light);\n\t\t}\n\t\tif (isCookie) {\n\t\t\tthis.addLightDataCookies(data8, data8Start + 4 * TextureIndex8.COOKIE_A, light);\n\t\t}\n\t\tif (this.lightTextureFormat === FORMAT_FLOAT) {\n\t\t\tconst dataFloat = this.lightsFloat;\n\t\t\tconst dataFloatStart = lightIndex * this.lightsTextureFloat.width * 4;\n\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 0] = pos.x;\n\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 1] = pos.y;\n\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 2] = pos.z;\n\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 3] = light.attenuationEnd;\n\t\t\tif (isSpot) {\n\t\t\t\tthis.getSpotDirection(tempVec3, light);\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.SPOT_DIRECTION + 0] = tempVec3.x;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.SPOT_DIRECTION + 1] = tempVec3.y;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.SPOT_DIRECTION + 2] = tempVec3.z;\n\t\t\t}\n\t\t\tif (lightProjectionMatrix) {\n\t\t\t\tconst matData = lightProjectionMatrix.data;\n\t\t\t\tfor (let m = 0; m < 16; m++) dataFloat[dataFloatStart + 4 * TextureIndexFloat.PROJ_MAT_0 + m] = matData[m];\n\t\t\t}\n\t\t\tif (atlasViewport) {\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 0] = atlasViewport.x;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 1] = atlasViewport.y;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 2] = atlasViewport.z / 3;\n\t\t\t}\n\t\t\tif (isArea) {\n\t\t\t\tconst areaSizes = this.getLightAreaSizes(light);\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 0] = areaSizes[0];\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 1] = areaSizes[1];\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 2] = areaSizes[2];\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 0] = areaSizes[3];\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 1] = areaSizes[4];\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 2] = areaSizes[5];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.addLightDataPositionRange(data8, data8Start + 4 * TextureIndex8.POSITION_X, light, pos);\n\t\t\tif (isSpot) {\n\t\t\t\tthis.addLightDataSpotDirection(data8, data8Start + 4 * TextureIndex8.SPOT_DIRECTION_X, light);\n\t\t\t}\n\t\t\tif (lightProjectionMatrix) {\n\t\t\t\tthis.addLightDataLightProjMatrix(data8, data8Start + 4 * TextureIndex8.PROJ_MAT_00, lightProjectionMatrix);\n\t\t\t}\n\t\t\tif (atlasViewport) {\n\t\t\t\tthis.addLightAtlasViewport(data8, data8Start + 4 * TextureIndex8.ATLAS_VIEWPORT_A, atlasViewport);\n\t\t\t}\n\t\t\tif (isArea) {\n\t\t\t\tthis.addLightAreaSizes(data8, data8Start + 4 * TextureIndex8.AREA_DATA_WIDTH_X, light);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { LightsBuffer };\n", "import { SEMANTIC_POSITION, SEMANTIC_ATTR12, SEMANTIC_ATTR13, SEMANTIC_ATTR14, SEMANTIC_ATTR15, SEMANTIC_NORMAL, SEMANTIC_TANGENT, SEMANTIC_COLOR, SEMANTIC_ATTR8, SEMANTIC_ATTR9, SEMANTIC_ATTR10, SEMANTIC_ATTR11, SEMANTIC_BLENDWEIGHT, SEMANTIC_BLENDINDICES, PIXELFORMAT_RGBA8, SHADERTAG_MATERIAL, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1 } from '../../../platform/graphics/constants.js';\nimport { shaderChunks } from '../chunks/chunks.js';\nimport { ChunkUtils } from '../chunk-utils.js';\nimport { SPRITE_RENDERMODE_SLICED, SPRITE_RENDERMODE_TILED, LIGHTSHAPE_SPHERE, LIGHTSHAPE_DISK, LIGHTSHAPE_RECT, SHADER_DEPTH, SHADER_PREPASS_VELOCITY, LIGHTTYPE_DIRECTIONAL, SHADOW_VSM32, LIGHTTYPE_OMNI, SHADOW_PCSS, SHADOW_VSM8, LIGHTSHAPE_PUNCTUAL, LIGHTTYPE_SPOT, FRESNEL_SCHLICK, SPECOCC_GLOSSDEPENDENT, SPECOCC_AO, SHADOW_PCF3, SHADOW_PCF5, SHADOW_PCF1, SHADOW_VSM16, SPECULAR_PHONG, shadowTypeToString, LIGHTFALLOFF_LINEAR, BLEND_NORMAL, BLEND_PREMULTIPLIED, BLEND_ADDITIVEALPHA, SHADER_PICK } from '../../constants.js';\nimport { LightsBuffer } from '../../lighting/lights-buffer.js';\nimport { ShaderPass } from '../../shader-pass.js';\nimport { ShaderUtils } from '../../../platform/graphics/shader-utils.js';\nimport { ChunkBuilder } from '../chunk-builder.js';\nimport { ShaderGenerator } from './shader-generator.js';\n\nconst builtinAttributes = {\n\tvertex_normal: SEMANTIC_NORMAL,\n\tvertex_tangent: SEMANTIC_TANGENT,\n\tvertex_texCoord0: SEMANTIC_TEXCOORD0,\n\tvertex_texCoord1: SEMANTIC_TEXCOORD1,\n\tvertex_color: SEMANTIC_COLOR,\n\tvertex_boneWeights: SEMANTIC_BLENDWEIGHT,\n\tvertex_boneIndices: SEMANTIC_BLENDINDICES\n};\nconst builtinVaryings = {\n\tvVertexColor: \"vec4\",\n\tvPositionW: \"vec3\",\n\tvNormalV: \"vec3\",\n\tvNormalW: \"vec3\",\n\tvTangentW: \"vec3\",\n\tvBinormalW: \"vec3\",\n\tvObjectSpaceUpW: \"vec3\",\n\tvUv0: \"vec2\",\n\tvUv1: \"vec2\"\n};\nclass LitShader {\n\tconstructor(device, options) {\n\t\tthis.device = device;\n\t\tthis.options = options;\n\t\tthis.attributes = {\n\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t};\n\t\tif (options.userAttributes) {\n\t\t\tfor (const [semantic, name] of Object.entries(options.userAttributes)) {\n\t\t\t\tthis.attributes[name] = semantic;\n\t\t\t}\n\t\t}\n\t\tif (options.chunks) {\n\t\t\tconst userChunks = options.chunks;\n\t\t\tthis.chunks = Object.create(shaderChunks);\n\t\t\tfor (const chunkName in shaderChunks) {\n\t\t\t\tif (userChunks.hasOwnProperty(chunkName)) {\n\t\t\t\t\tconst chunk = userChunks[chunkName];\n\t\t\t\t\tfor (const a in builtinAttributes) {\n\t\t\t\t\t\tif (builtinAttributes.hasOwnProperty(a) && chunk.indexOf(a) >= 0) {\n\t\t\t\t\t\t\tthis.attributes[a] = builtinAttributes[a];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.chunks[chunkName] = chunk;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.chunks = shaderChunks;\n\t\t}\n\t\tthis.shaderPassInfo = ShaderPass.get(this.device).getByIndex(options.pass);\n\t\tthis.shadowPass = this.shaderPassInfo.isShadow;\n\t\tthis.lighting = options.lights.length > 0 || options.dirLightMapEnabled || options.clusteredLightingEnabled;\n\t\tthis.reflections = !!options.reflectionSource;\n\t\tthis.needsNormal = this.lighting || this.reflections || options.useSpecular || options.ambientSH || options.useHeights || options.enableGGXSpecular || options.clusteredLightingEnabled && !this.shadowPass || options.useClearCoatNormals;\n\t\tthis.needsNormal = this.needsNormal && !this.shadowPass;\n\t\tthis.needsSceneColor = options.useDynamicRefraction;\n\t\tthis.needsScreenSize = options.useDynamicRefraction;\n\t\tthis.needsTransforms = options.useDynamicRefraction;\n\t\tthis.varyings = \"\";\n\t\tthis.varyingDefines = \"\";\n\t\tthis.vshader = null;\n\t\tthis.frontendDecl = null;\n\t\tthis.frontendCode = null;\n\t\tthis.frontendFunc = null;\n\t\tthis.lightingUv = null;\n\t\tthis.defines = [];\n\t\tthis.fshader = null;\n\t}\n\t_vsAddBaseCode(code, chunks, options) {\n\t\tcode += chunks.baseVS;\n\t\tif (options.nineSlicedMode === SPRITE_RENDERMODE_SLICED || options.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\tcode += chunks.baseNineSlicedVS;\n\t\t}\n\t\treturn code;\n\t}\n\t_vsAddTransformCode(code, device, chunks, options) {\n\t\tcode += this.chunks.transformVS;\n\t\treturn code;\n\t}\n\t_setMapTransform(codes, name, id, uv) {\n\t\tconst checkId = id + uv * 100;\n\t\tif (!codes[3][checkId]) {\n\t\t\tconst varName = `texture_${name}MapTransform`;\n\t\t\tcodes[0] += `uniform vec3 ${varName}0;\\n`;\n\t\t\tcodes[0] += `uniform vec3 ${varName}1;\\n`;\n\t\t\tcodes[1] += `varying vec2 vUV${uv}_${id};\\n`;\n\t\t\tcodes[2] += ` vUV${uv}_${id} = vec2(dot(vec3(uv${uv}, 1), ${varName}0), dot(vec3(uv${uv}, 1), ${varName}1));\\n`;\n\t\t\tcodes[3][checkId] = true;\n\t\t}\n\t\treturn codes;\n\t}\n\t_fsGetBaseCode() {\n\t\tconst options = this.options;\n\t\tconst chunks = this.chunks;\n\t\tlet result = this.chunks.basePS;\n\t\tif (options.nineSlicedMode === SPRITE_RENDERMODE_SLICED) {\n\t\t\tresult += chunks.baseNineSlicedPS;\n\t\t} else if (options.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\tresult += chunks.baseNineSlicedTiledPS;\n\t\t}\n\t\treturn result;\n\t}\n\t_fsGetStartCode(code, device, chunks, options) {\n\t\tlet result = chunks.startPS;\n\t\tif (options.nineSlicedMode === SPRITE_RENDERMODE_SLICED) {\n\t\t\tresult += chunks.startNineSlicedPS;\n\t\t} else if (options.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\tresult += chunks.startNineSlicedTiledPS;\n\t\t}\n\t\treturn result;\n\t}\n\t_getLightSourceShapeString(shape) {\n\t\tswitch (shape) {\n\t\t\tcase LIGHTSHAPE_RECT:\n\t\t\t\treturn 'Rect';\n\t\t\tcase LIGHTSHAPE_DISK:\n\t\t\t\treturn 'Disk';\n\t\t\tcase LIGHTSHAPE_SPHERE:\n\t\t\t\treturn 'Sphere';\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\tgenerateVertexShader(useUv, useUnmodifiedUv, mapTransforms) {\n\t\tconst device = this.device;\n\t\tconst options = this.options;\n\t\tconst chunks = this.chunks;\n\t\tlet code = '';\n\t\tlet codeBody = '';\n\t\tcode = this._vsAddBaseCode(code, chunks, options);\n\t\tcodeBody += \" vPositionW = getWorldPosition();\\n\";\n\t\tif (this.options.pass === SHADER_DEPTH || this.options.pass === SHADER_PREPASS_VELOCITY) {\n\t\t\tcode += 'varying float vDepth;\\n';\n\t\t\tcode += '#ifndef VIEWMATRIX\\n';\n\t\t\tcode += '#define VIEWMATRIX\\n';\n\t\t\tcode += 'uniform mat4 matrix_view;\\n';\n\t\t\tcode += '#endif\\n';\n\t\t\tcode += '#ifndef CAMERAPLANES\\n';\n\t\t\tcode += '#define CAMERAPLANES\\n';\n\t\t\tcode += 'uniform vec4 camera_params;\\n\\n';\n\t\t\tcode += '#endif\\n';\n\t\t\tcodeBody += \" vDepth = -(matrix_view * vec4(vPositionW,1.0)).z * camera_params.x;\\n\";\n\t\t}\n\t\tif (this.options.pass === SHADER_PREPASS_VELOCITY) ;\n\t\tif (this.options.useInstancing) {\n\t\t\tthis.attributes.instance_line1 = SEMANTIC_ATTR12;\n\t\t\tthis.attributes.instance_line2 = SEMANTIC_ATTR13;\n\t\t\tthis.attributes.instance_line3 = SEMANTIC_ATTR14;\n\t\t\tthis.attributes.instance_line4 = SEMANTIC_ATTR15;\n\t\t\tcode += chunks.instancingVS;\n\t\t}\n\t\tif (this.needsNormal) {\n\t\t\tthis.attributes.vertex_normal = SEMANTIC_NORMAL;\n\t\t\tcodeBody += \" vNormalW = getNormal();\\n\";\n\t\t\tif (options.reflectionSource === 'sphereMap' && device.fragmentUniformsCount <= 16) {\n\t\t\t\tcode += chunks.viewNormalVS;\n\t\t\t\tcodeBody += \" vNormalV = getViewNormal();\\n\";\n\t\t\t}\n\t\t\tif (options.hasTangents && (options.useHeights || options.useNormals || options.enableGGXSpecular)) {\n\t\t\t\tthis.attributes.vertex_tangent = SEMANTIC_TANGENT;\n\t\t\t\tcode += chunks.tangentBinormalVS;\n\t\t\t\tcodeBody += \" vTangentW = getTangent();\\n\";\n\t\t\t\tcodeBody += \" vBinormalW = getBinormal();\\n\";\n\t\t\t} else if (options.enableGGXSpecular || !device.extStandardDerivatives) {\n\t\t\t\tcodeBody += \" vObjectSpaceUpW = normalize(dNormalMatrix * vec3(0, 1, 0));\\n\";\n\t\t\t}\n\t\t}\n\t\tconst maxUvSets = 2;\n\t\tfor (let i = 0; i < maxUvSets; i++) {\n\t\t\tif (useUv[i]) {\n\t\t\t\tthis.attributes[\"vertex_texCoord\" + i] = \"TEXCOORD\" + i;\n\t\t\t\tcode += chunks[\"uv\" + i + \"VS\"];\n\t\t\t\tcodeBody += \" vec2 uv\" + i + \" = getUv\" + i + \"();\\n\";\n\t\t\t}\n\t\t\tif (useUnmodifiedUv[i]) {\n\t\t\t\tcodeBody += \" vUv\" + i + \" = uv\" + i + \";\\n\";\n\t\t\t}\n\t\t}\n\t\tconst codes = [code, this.varyings, codeBody, []];\n\t\tmapTransforms.forEach(mapTransform => {\n\t\t\tthis._setMapTransform(codes, mapTransform.name, mapTransform.id, mapTransform.uv);\n\t\t});\n\t\tcode = codes[0];\n\t\tthis.varyings = codes[1];\n\t\tcodeBody = codes[2];\n\t\tif (options.vertexColors) {\n\t\t\tthis.attributes.vertex_color = SEMANTIC_COLOR;\n\t\t\tcodeBody += \" vVertexColor = vertex_color;\\n\";\n\t\t}\n\t\tif (options.useMsdf && options.msdfTextAttribute) {\n\t\t\tthis.attributes.vertex_outlineParameters = SEMANTIC_ATTR8;\n\t\t\tthis.attributes.vertex_shadowParameters = SEMANTIC_ATTR9;\n\t\t\tcodeBody += \" unpackMsdfParams();\\n\";\n\t\t\tcode += chunks.msdfVS;\n\t\t}\n\t\tif (options.useMorphPosition || options.useMorphNormal) {\n\t\t\tif (options.useMorphTextureBased) {\n\t\t\t\tcode += \"#define MORPHING_TEXTURE_BASED\\n\";\n\t\t\t\tif (options.useMorphPosition) {\n\t\t\t\t\tcode += \"#define MORPHING_TEXTURE_BASED_POSITION\\n\";\n\t\t\t\t}\n\t\t\t\tif (options.useMorphNormal) {\n\t\t\t\t\tcode += \"#define MORPHING_TEXTURE_BASED_NORMAL\\n\";\n\t\t\t\t}\n\t\t\t\tthis.attributes.morph_vertex_id = SEMANTIC_ATTR15;\n\t\t\t\tconst morphIdType = device.isWebGPU ? 'uint' : 'float';\n\t\t\t\tcode += `attribute ${morphIdType} morph_vertex_id;\\n`;\n\t\t\t} else {\n\t\t\t\tcode += \"#define MORPHING\\n\";\n\t\t\t\tif (options.useMorphPosition) {\n\t\t\t\t\tthis.attributes.morph_pos0 = SEMANTIC_ATTR8;\n\t\t\t\t\tthis.attributes.morph_pos1 = SEMANTIC_ATTR9;\n\t\t\t\t\tthis.attributes.morph_pos2 = SEMANTIC_ATTR10;\n\t\t\t\t\tthis.attributes.morph_pos3 = SEMANTIC_ATTR11;\n\t\t\t\t\tcode += \"#define MORPHING_POS03\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_pos0;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_pos1;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_pos2;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_pos3;\\n\";\n\t\t\t\t} else if (options.useMorphNormal) {\n\t\t\t\t\tthis.attributes.morph_nrm0 = SEMANTIC_ATTR8;\n\t\t\t\t\tthis.attributes.morph_nrm1 = SEMANTIC_ATTR9;\n\t\t\t\t\tthis.attributes.morph_nrm2 = SEMANTIC_ATTR10;\n\t\t\t\t\tthis.attributes.morph_nrm3 = SEMANTIC_ATTR11;\n\t\t\t\t\tcode += \"#define MORPHING_NRM03\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_nrm0;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_nrm1;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_nrm2;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_nrm3;\\n\";\n\t\t\t\t}\n\t\t\t\tif (!options.useMorphNormal) {\n\t\t\t\t\tthis.attributes.morph_pos4 = SEMANTIC_ATTR12;\n\t\t\t\t\tthis.attributes.morph_pos5 = SEMANTIC_ATTR13;\n\t\t\t\t\tthis.attributes.morph_pos6 = SEMANTIC_ATTR14;\n\t\t\t\t\tthis.attributes.morph_pos7 = SEMANTIC_ATTR15;\n\t\t\t\t\tcode += \"#define MORPHING_POS47\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_pos4;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_pos5;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_pos6;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_pos7;\\n\";\n\t\t\t\t} else {\n\t\t\t\t\tthis.attributes.morph_nrm4 = SEMANTIC_ATTR12;\n\t\t\t\t\tthis.attributes.morph_nrm5 = SEMANTIC_ATTR13;\n\t\t\t\t\tthis.attributes.morph_nrm6 = SEMANTIC_ATTR14;\n\t\t\t\t\tthis.attributes.morph_nrm7 = SEMANTIC_ATTR15;\n\t\t\t\t\tcode += \"#define MORPHING_NRM47\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_nrm4;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_nrm5;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_nrm6;\\n\";\n\t\t\t\t\tcode += \"attribute vec3 morph_nrm7;\\n\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (options.skin) {\n\t\t\tthis.attributes.vertex_boneWeights = SEMANTIC_BLENDWEIGHT;\n\t\t\tthis.attributes.vertex_boneIndices = SEMANTIC_BLENDINDICES;\n\t\t\tcode += ShaderGenerator.skinCode(device, chunks);\n\t\t\tcode += \"#define SKIN\\n\";\n\t\t} else if (options.useInstancing) {\n\t\t\tcode += \"#define INSTANCING\\n\";\n\t\t}\n\t\tif (options.screenSpace) {\n\t\t\tcode += \"#define SCREENSPACE\\n\";\n\t\t}\n\t\tif (options.pixelSnap) {\n\t\t\tcode += \"#define PIXELSNAP\\n\";\n\t\t}\n\t\tcode = this._vsAddTransformCode(code, device, chunks, options);\n\t\tif (this.needsNormal) {\n\t\t\tcode += chunks.normalVS;\n\t\t}\n\t\tcode += \"\\n\";\n\t\tcode += chunks.startVS;\n\t\tcode += codeBody;\n\t\tcode += chunks.endVS;\n\t\tcode += \"}\";\n\t\tObject.keys(builtinVaryings).forEach(v => {\n\t\t\tif (code.indexOf(v) >= 0) {\n\t\t\t\tthis.varyings += `varying ${builtinVaryings[v]} ${v};\\n`;\n\t\t\t\tthis.varyingDefines += `#define VARYING_${v.toUpperCase()}\\n`;\n\t\t\t}\n\t\t});\n\t\tconst shaderPassDefines = this.shaderPassInfo.shaderDefines;\n\t\tthis.vshader = shaderPassDefines + this.varyings + code;\n\t}\n\t_fsGetBeginCode() {\n\t\tlet code = this.shaderPassInfo.shaderDefines;\n\t\tfor (let i = 0; i < this.defines.length; i++) {\n\t\t\tcode += `#define ${this.defines[i]}\\n`;\n\t\t}\n\t\treturn code;\n\t}\n\t_fsGetPickPassCode() {\n\t\tlet code = this._fsGetBeginCode();\n\t\tcode += \"uniform vec4 uColor;\\n\";\n\t\tcode += this.varyings;\n\t\tcode += this.varyingDefines;\n\t\tcode += this.frontendDecl;\n\t\tcode += this.frontendCode;\n\t\tcode += ShaderGenerator.begin();\n\t\tcode += this.frontendFunc;\n\t\tcode += \" gl_FragColor = uColor;\\n\";\n\t\tcode += ShaderGenerator.end();\n\t\treturn code;\n\t}\n\t_fsGetDepthPassCode() {\n\t\tconst chunks = this.chunks;\n\t\tlet code = this._fsGetBeginCode();\n\t\tcode += 'varying float vDepth;\\n';\n\t\tcode += this.varyings;\n\t\tcode += this.varyingDefines;\n\t\tcode += chunks.packDepthPS;\n\t\tcode += this.frontendDecl;\n\t\tcode += this.frontendCode;\n\t\tcode += ShaderGenerator.begin();\n\t\tcode += this.frontendFunc;\n\t\tcode += \" gl_FragColor = packFloat(vDepth);\\n\";\n\t\tcode += ShaderGenerator.end();\n\t\treturn code;\n\t}\n\t_fsGetPrePassVelocityCode() {\n\t\treturn this._fsGetDepthPassCode();\n\t}\n\t_fsGetShadowPassCode() {\n\t\tconst device = this.device;\n\t\tconst options = this.options;\n\t\tconst chunks = this.chunks;\n\t\tconst varyings = this.varyings;\n\t\tconst lightType = this.shaderPassInfo.lightType;\n\t\tlet shadowType = this.shaderPassInfo.shadowType;\n\t\tif (lightType !== LIGHTTYPE_DIRECTIONAL && options.clusteredLightingEnabled) {\n\t\t\tif (shadowType === SHADOW_VSM8 || shadowType === SHADOW_VSM16 || shadowType === SHADOW_VSM32 || shadowType === SHADOW_PCSS) {\n\t\t\t\tshadowType = SHADOW_PCF3;\n\t\t\t}\n\t\t}\n\t\tlet code = this._fsGetBeginCode();\n\t\tif (device.extStandardDerivatives && device.isWebGL1) {\n\t\t\tcode += 'uniform vec2 polygonOffset;\\n';\n\t\t}\n\t\tif (shadowType === SHADOW_VSM32) {\n\t\t\tif (device.textureFloatHighPrecision) {\n\t\t\t\tcode += '#define VSM_EXPONENT 15.0\\n\\n';\n\t\t\t} else {\n\t\t\t\tcode += '#define VSM_EXPONENT 5.54\\n\\n';\n\t\t\t}\n\t\t} else if (shadowType === SHADOW_VSM16) {\n\t\t\tcode += '#define VSM_EXPONENT 5.54\\n\\n';\n\t\t}\n\t\tif (lightType !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\tcode += 'uniform vec3 view_position;\\n';\n\t\t\tcode += 'uniform float light_radius;\\n';\n\t\t}\n\t\tcode += varyings;\n\t\tcode += this.varyingDefines;\n\t\tcode += this.frontendDecl;\n\t\tcode += this.frontendCode;\n\t\tconst mayPackDepth = shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3 || shadowType === SHADOW_PCF5 || shadowType === SHADOW_PCSS;\n\t\tconst mustPackDepth = lightType === LIGHTTYPE_OMNI && shadowType !== SHADOW_PCSS && !options.clusteredLightingEnabled;\n\t\tconst usePackedDepth = mayPackDepth && !device.supportsDepthShadow || mustPackDepth;\n\t\tif (usePackedDepth) {\n\t\t\tcode += chunks.packDepthPS;\n\t\t} else if (shadowType === SHADOW_VSM8) {\n\t\t\tcode += \"vec2 encodeFloatRG( float v ) {\\n\";\n\t\t\tcode += \" vec2 enc = vec2(1.0, 255.0) * v;\\n\";\n\t\t\tcode += \" enc = fract(enc);\\n\";\n\t\t\tcode += \" enc -= enc.yy * vec2(1.0/255.0, 1.0/255.0);\\n\";\n\t\t\tcode += \" return enc;\\n\";\n\t\t\tcode += \"}\\n\\n\";\n\t\t}\n\t\tif (shadowType === SHADOW_PCSS) {\n\t\t\tcode += shaderChunks.linearizeDepthPS;\n\t\t}\n\t\tcode += ShaderGenerator.begin();\n\t\tcode += this.frontendFunc;\n\t\tconst isVsm = shadowType === SHADOW_VSM8 || shadowType === SHADOW_VSM16 || shadowType === SHADOW_VSM32;\n\t\tconst applySlopeScaleBias = device.isWebGL1 && device.extStandardDerivatives;\n\t\tconst usePerspectiveDepth = lightType === LIGHTTYPE_DIRECTIONAL || !isVsm && lightType === LIGHTTYPE_SPOT;\n\t\tlet hasModifiedDepth = false;\n\t\tif (usePerspectiveDepth) {\n\t\t\tcode += \" float depth = gl_FragCoord.z;\\n\";\n\t\t} else {\n\t\t\tcode += \" float depth = min(distance(view_position, vPositionW) / light_radius, 0.99999);\\n\";\n\t\t\thasModifiedDepth = true;\n\t\t}\n\t\tif (applySlopeScaleBias) {\n\t\t\tcode += \" float minValue = 2.3374370500153186e-10; //(1.0 / 255.0) / (256.0 * 256.0 * 256.0);\\n\";\n\t\t\tcode += \" depth += polygonOffset.x * max(abs(dFdx(depth)), abs(dFdy(depth))) + minValue * polygonOffset.y;\\n\";\n\t\t\thasModifiedDepth = true;\n\t\t}\n\t\tif (usePackedDepth) {\n\t\t\tcode += \" gl_FragColor = packFloat(depth);\\n\";\n\t\t} else if (!isVsm) {\n\t\t\tconst exportR32 = shadowType === SHADOW_PCSS;\n\t\t\tif (exportR32) {\n\t\t\t\tcode += \" gl_FragColor.r = depth;\\n\";\n\t\t\t} else {\n\t\t\t\tif (hasModifiedDepth) {\n\t\t\t\t\tcode += \" gl_FragDepth = depth;\\n\";\n\t\t\t\t}\n\t\t\t\tcode += \" gl_FragColor = vec4(1.0);\\n\";\n\t\t\t}\n\t\t} else if (shadowType === SHADOW_VSM8) {\n\t\t\tcode += \" gl_FragColor = vec4(encodeFloatRG(depth), encodeFloatRG(depth*depth));\\n\";\n\t\t} else {\n\t\t\tcode += chunks.storeEVSMPS;\n\t\t}\n\t\tcode += ShaderGenerator.end();\n\t\treturn code;\n\t}\n\t_fsGetLitPassCode() {\n\t\tconst device = this.device;\n\t\tconst options = this.options;\n\t\tconst chunks = this.chunks;\n\t\tconst decl = new ChunkBuilder();\n\t\tconst func = new ChunkBuilder();\n\t\tconst backend = new ChunkBuilder();\n\t\tconst code = new ChunkBuilder();\n\t\tif (options.opacityFadesSpecular === false) {\n\t\t\tdecl.append('uniform float material_alphaFade;');\n\t\t}\n\t\tif (options.useSpecular) {\n\t\t\tthis.defines.push(\"LIT_SPECULAR\");\n\t\t\tif (this.reflections) {\n\t\t\t\tthis.defines.push(\"LIT_REFLECTIONS\");\n\t\t\t}\n\t\t\tif (options.useClearCoat) {\n\t\t\t\tthis.defines.push(\"LIT_CLEARCOAT\");\n\t\t\t}\n\t\t\tif (options.fresnelModel > 0) {\n\t\t\t\tthis.defines.push(\"LIT_SPECULAR_FRESNEL\");\n\t\t\t}\n\t\t\tif (options.conserveEnergy) {\n\t\t\t\tthis.defines.push(\"LIT_CONSERVE_ENERGY\");\n\t\t\t}\n\t\t\tif (options.useSheen) {\n\t\t\t\tthis.defines.push(\"LIT_SHEEN\");\n\t\t\t}\n\t\t\tif (options.useIridescence) {\n\t\t\t\tthis.defines.push(\"LIT_IRIDESCENCE\");\n\t\t\t}\n\t\t}\n\t\tconst shadowTypeUsed = [];\n\t\tlet numShadowLights = 0;\n\t\tlet shadowedDirectionalLightUsed = false;\n\t\tlet useVsm = false;\n\t\tlet usePcss = false;\n\t\tlet hasAreaLights = options.lights.some(function (light) {\n\t\t\treturn light._shape && light._shape !== LIGHTSHAPE_PUNCTUAL;\n\t\t});\n\t\tif (options.clusteredLightingEnabled && options.clusteredLightingAreaLightsEnabled) {\n\t\t\thasAreaLights = true;\n\t\t}\n\t\tif (hasAreaLights || options.clusteredLightingEnabled) {\n\t\t\tlet areaLutsPrecision = 'highp';\n\t\t\tif (device.areaLightLutFormat === PIXELFORMAT_RGBA8) {\n\t\t\t\tdecl.append(\"#define AREA_R8_G8_B8_A8_LUTS\");\n\t\t\t\tareaLutsPrecision = 'lowp';\n\t\t\t}\n\t\t\tdecl.append(\"#define AREA_LIGHTS\");\n\t\t\tdecl.append(`uniform ${areaLutsPrecision} sampler2D areaLightsLutTex1;`);\n\t\t\tdecl.append(`uniform ${areaLutsPrecision} sampler2D areaLightsLutTex2;`);\n\t\t}\n\t\tfor (let i = 0; i < options.lights.length; i++) {\n\t\t\tconst light = options.lights[i];\n\t\t\tconst lightType = light._type;\n\t\t\tif (options.clusteredLightingEnabled && lightType !== LIGHTTYPE_DIRECTIONAL) continue;\n\t\t\tconst lightShape = hasAreaLights && light._shape ? light._shape : LIGHTSHAPE_PUNCTUAL;\n\t\t\tdecl.append(\"uniform vec3 light\" + i + \"_color;\");\n\t\t\tif (light._shadowType === SHADOW_PCSS && light.castShadows && !options.noShadow) {\n\t\t\t\tdecl.append(`uniform float light${i}_shadowSearchArea;`);\n\t\t\t\tdecl.append(`uniform vec4 light${i}_cameraParams;`);\n\t\t\t}\n\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\tdecl.append(\"uniform vec3 light\" + i + \"_direction;\");\n\t\t\t} else {\n\t\t\t\tdecl.append(\"uniform vec3 light\" + i + \"_position;\");\n\t\t\t\tdecl.append(\"uniform float light\" + i + \"_radius;\");\n\t\t\t\tif (lightType === LIGHTTYPE_SPOT) {\n\t\t\t\t\tdecl.append(\"uniform vec3 light\" + i + \"_direction;\");\n\t\t\t\t\tdecl.append(\"uniform float light\" + i + \"_innerConeAngle;\");\n\t\t\t\t\tdecl.append(\"uniform float light\" + i + \"_outerConeAngle;\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (lightShape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\tdecl.append(\"uniform vec3 light\" + i + \"_position;\");\n\t\t\t\t}\n\t\t\t\tdecl.append(\"uniform vec3 light\" + i + \"_halfWidth;\");\n\t\t\t\tdecl.append(\"uniform vec3 light\" + i + \"_halfHeight;\");\n\t\t\t}\n\t\t\tif (light.castShadows && !options.noShadow) {\n\t\t\t\tdecl.append(\"uniform mat4 light\" + i + \"_shadowMatrix;\");\n\t\t\t\tdecl.append(\"uniform float light\" + i + \"_shadowIntensity;\");\n\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\tdecl.append(\"uniform mat4 light\" + i + \"_shadowMatrixPalette[4];\");\n\t\t\t\t\tdecl.append(\"uniform float light\" + i + \"_shadowCascadeDistances[4];\");\n\t\t\t\t\tdecl.append(\"uniform float light\" + i + \"_shadowCascadeCount;\");\n\t\t\t\t}\n\t\t\t\tdecl.append(\"uniform vec4 light\" + i + \"_shadowParams;\");\n\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\tshadowedDirectionalLightUsed = true;\n\t\t\t\t}\n\t\t\t\tif (lightType === LIGHTTYPE_OMNI) {\n\t\t\t\t\tdecl.append(\"uniform samplerCube light\" + i + \"_shadowMap;\");\n\t\t\t\t} else {\n\t\t\t\t\tif (light._isPcf && device.supportsDepthShadow) {\n\t\t\t\t\t\tdecl.append(\"uniform sampler2DShadow light\" + i + \"_shadowMap;\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdecl.append(\"uniform sampler2D light\" + i + \"_shadowMap;\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnumShadowLights++;\n\t\t\t\tshadowTypeUsed[light._shadowType] = true;\n\t\t\t\tif (light._isVsm) useVsm = true;\n\t\t\t\tif (light._shadowType === SHADOW_PCSS) usePcss = true;\n\t\t\t}\n\t\t\tif (light._cookie) {\n\t\t\t\tif (light._cookie._cubemap) {\n\t\t\t\t\tif (lightType === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\tdecl.append(\"uniform samplerCube light\" + i + \"_cookie;\");\n\t\t\t\t\t\tdecl.append(\"uniform float light\" + i + \"_cookieIntensity;\");\n\t\t\t\t\t\tif (!light.castShadows || options.noShadow) {\n\t\t\t\t\t\t\tdecl.append(\"uniform mat4 light\" + i + \"_shadowMatrix;\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (lightType === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tdecl.append(\"uniform sampler2D light\" + i + \"_cookie;\");\n\t\t\t\t\t\tdecl.append(\"uniform float light\" + i + \"_cookieIntensity;\");\n\t\t\t\t\t\tif (!light.castShadows || options.noShadow) {\n\t\t\t\t\t\t\tdecl.append(\"uniform mat4 light\" + i + \"_shadowMatrix;\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (light._cookieTransform) {\n\t\t\t\t\t\t\tdecl.append(\"uniform vec4 light\" + i + \"_cookieMatrix;\");\n\t\t\t\t\t\t\tdecl.append(\"uniform vec2 light\" + i + \"_cookieOffset;\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst hasTBN = this.needsNormal && (options.useNormals || options.useClearCoatNormals || options.enableGGXSpecular && !options.useHeights);\n\t\tif (hasTBN) {\n\t\t\tif (options.hasTangents) {\n\t\t\t\tfunc.append(options.fastTbn ? chunks.TBNfastPS : chunks.TBNPS);\n\t\t\t} else {\n\t\t\t\tif (device.extStandardDerivatives && (options.useNormals || options.useClearCoatNormals)) {\n\t\t\t\t\tfunc.append(chunks.TBNderivativePS.replace(/\\$UV/g, this.lightingUv));\n\t\t\t\t} else {\n\t\t\t\t\tfunc.append(chunks.TBNObjectSpacePS);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.twoSidedLighting) {\n\t\t\t\tfunc.append(chunks.twoSidedLightingPS);\n\t\t\t}\n\t\t}\n\t\tfunc.append(chunks.sphericalPS);\n\t\tfunc.append(chunks.decodePS);\n\t\tfunc.append(ShaderGenerator.gammaCode(options.gamma, chunks));\n\t\tfunc.append(ShaderGenerator.tonemapCode(options.toneMap, chunks));\n\t\tfunc.append(ShaderGenerator.fogCode(options.fog, chunks));\n\t\tfunc.append(this.frontendCode);\n\t\tif (options.useCubeMapRotation) {\n\t\t\tdecl.append(\"#define CUBEMAP_ROTATION\");\n\t\t}\n\t\tif (this.needsNormal) {\n\t\t\tfunc.append(chunks.cubeMapRotatePS);\n\t\t\tfunc.append(options.cubeMapProjection > 0 ? chunks.cubeMapProjectBoxPS : chunks.cubeMapProjectNonePS);\n\t\t\tfunc.append(options.skyboxIntensity ? chunks.envMultiplyPS : chunks.envConstPS);\n\t\t}\n\t\tif (this.lighting && options.useSpecular || this.reflections) {\n\t\t\tif (options.useMetalness) {\n\t\t\t\tfunc.append(chunks.metalnessModulatePS);\n\t\t\t}\n\t\t\tif (options.fresnelModel === FRESNEL_SCHLICK) {\n\t\t\t\tfunc.append(chunks.fresnelSchlickPS);\n\t\t\t}\n\t\t\tif (options.useIridescence) {\n\t\t\t\tfunc.append(chunks.iridescenceDiffractionPS);\n\t\t\t}\n\t\t}\n\t\tif (options.useAo) {\n\t\t\tfunc.append(chunks.aoDiffuseOccPS);\n\t\t\tswitch (options.occludeSpecular) {\n\t\t\t\tcase SPECOCC_AO:\n\t\t\t\t\tfunc.append(options.occludeSpecularFloat ? chunks.aoSpecOccSimplePS : chunks.aoSpecOccConstSimplePS);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SPECOCC_GLOSSDEPENDENT:\n\t\t\t\t\tfunc.append(options.occludeSpecularFloat ? chunks.aoSpecOccPS : chunks.aoSpecOccConstPS);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (options.reflectionSource === 'envAtlasHQ') {\n\t\t\tfunc.append(options.fixSeams ? chunks.fixCubemapSeamsStretchPS : chunks.fixCubemapSeamsNonePS);\n\t\t\tfunc.append(chunks.envAtlasPS);\n\t\t\tfunc.append(chunks.reflectionEnvHQPS.replace(/\\$DECODE_CUBEMAP/g, ChunkUtils.decodeFunc(options.reflectionCubemapEncoding)).replace(/\\$DECODE/g, ChunkUtils.decodeFunc(options.reflectionEncoding)));\n\t\t} else if (options.reflectionSource === 'envAtlas') {\n\t\t\tfunc.append(chunks.envAtlasPS);\n\t\t\tfunc.append(chunks.reflectionEnvPS.replace(/\\$DECODE/g, ChunkUtils.decodeFunc(options.reflectionEncoding)));\n\t\t} else if (options.reflectionSource === 'cubeMap') {\n\t\t\tfunc.append(options.fixSeams ? chunks.fixCubemapSeamsStretchPS : chunks.fixCubemapSeamsNonePS);\n\t\t\tfunc.append(chunks.reflectionCubePS.replace(/\\$DECODE/g, ChunkUtils.decodeFunc(options.reflectionEncoding)));\n\t\t} else if (options.reflectionSource === 'sphereMap') {\n\t\t\tfunc.append(chunks.reflectionSpherePS.replace(/\\$DECODE/g, ChunkUtils.decodeFunc(options.reflectionEncoding)));\n\t\t}\n\t\tif (this.reflections) {\n\t\t\tif (options.useClearCoat) {\n\t\t\t\tfunc.append(chunks.reflectionCCPS);\n\t\t\t}\n\t\t\tif (options.useSheen) {\n\t\t\t\tfunc.append(chunks.reflectionSheenPS);\n\t\t\t}\n\t\t}\n\t\tif (options.useRefraction) {\n\t\t\tif (options.useDynamicRefraction) {\n\t\t\t\tif (options.dispersion) {\n\t\t\t\t\tdecl.append(\"uniform float material_dispersion;\");\n\t\t\t\t\tdecl.append('#define DISPERSION\\n');\n\t\t\t\t}\n\t\t\t\tfunc.append(chunks.refractionDynamicPS);\n\t\t\t} else if (this.reflections) {\n\t\t\t\tfunc.append(chunks.refractionCubePS);\n\t\t\t}\n\t\t}\n\t\tif (options.useSheen) {\n\t\t\tfunc.append(chunks.lightSheenPS);\n\t\t}\n\t\tif (options.clusteredLightingEnabled) {\n\t\t\tfunc.append(chunks.clusteredLightUtilsPS);\n\t\t\tif (options.clusteredLightingCookiesEnabled) func.append(chunks.clusteredLightCookiesPS);\n\t\t\tif (options.clusteredLightingShadowsEnabled && !options.noShadow) {\n\t\t\t\tshadowTypeUsed[SHADOW_PCF3] = true;\n\t\t\t\tshadowTypeUsed[SHADOW_PCF5] = true;\n\t\t\t\tshadowTypeUsed[SHADOW_PCSS] = true;\n\t\t\t}\n\t\t}\n\t\tif (numShadowLights > 0 || options.clusteredLightingEnabled) {\n\t\t\tif (shadowedDirectionalLightUsed) {\n\t\t\t\tfunc.append(chunks.shadowCascadesPS);\n\t\t\t}\n\t\t\tif (shadowTypeUsed[SHADOW_PCF1] || shadowTypeUsed[SHADOW_PCF3]) {\n\t\t\t\tfunc.append(chunks.shadowStandardPS);\n\t\t\t}\n\t\t\tif (shadowTypeUsed[SHADOW_PCF5] && !device.isWebGL1) {\n\t\t\t\tfunc.append(chunks.shadowStandardGL2PS);\n\t\t\t}\n\t\t\tif (useVsm) {\n\t\t\t\tfunc.append(chunks.shadowVSM_commonPS);\n\t\t\t\tif (shadowTypeUsed[SHADOW_VSM8]) {\n\t\t\t\t\tfunc.append(chunks.shadowVSM8PS);\n\t\t\t\t}\n\t\t\t\tif (shadowTypeUsed[SHADOW_VSM16]) {\n\t\t\t\t\tfunc.append(device.extTextureHalfFloatLinear ? chunks.shadowEVSMPS.replace(/\\$/g, \"16\") : chunks.shadowEVSMnPS.replace(/\\$/g, \"16\"));\n\t\t\t\t}\n\t\t\t\tif (shadowTypeUsed[SHADOW_VSM32]) {\n\t\t\t\t\tfunc.append(device.extTextureFloatLinear ? chunks.shadowEVSMPS.replace(/\\$/g, \"32\") : chunks.shadowEVSMnPS.replace(/\\$/g, \"32\"));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (usePcss) {\n\t\t\t\tfunc.append(chunks.linearizeDepthPS);\n\t\t\t\tfunc.append(chunks.shadowPCSSPS);\n\t\t\t}\n\t\t\tif (!(device.isWebGL2 || device.isWebGPU || device.extStandardDerivatives)) {\n\t\t\t\tfunc.append(chunks.biasConstPS);\n\t\t\t}\n\t\t}\n\t\tif (options.enableGGXSpecular) func.append(\"uniform float material_anisotropy;\");\n\t\tif (this.lighting) {\n\t\t\tfunc.append(chunks.lightDiffuseLambertPS);\n\t\t\tif (hasAreaLights || options.clusteredLightingAreaLightsEnabled) {\n\t\t\t\tfunc.append(chunks.ltcPS);\n\t\t\t}\n\t\t}\n\t\tlet useOldAmbient = false;\n\t\tif (options.useSpecular) {\n\t\t\tif (this.lighting) {\n\t\t\t\tfunc.append(options.shadingModel === SPECULAR_PHONG ? chunks.lightSpecularPhongPS : options.enableGGXSpecular ? chunks.lightSpecularAnisoGGXPS : chunks.lightSpecularBlinnPS);\n\t\t\t}\n\t\t\tif (!options.fresnelModel && !this.reflections && !options.diffuseMapEnabled) {\n\t\t\t\tdecl.append(\"uniform vec3 material_ambient;\");\n\t\t\t\tdecl.append(\"#define LIT_OLD_AMBIENT\");\n\t\t\t\tuseOldAmbient = true;\n\t\t\t}\n\t\t}\n\t\tfunc.append(chunks.combinePS);\n\t\tif (options.lightMapEnabled) {\n\t\t\tfunc.append(options.useSpecular && options.dirLightMapEnabled ? chunks.lightmapDirAddPS : chunks.lightmapAddPS);\n\t\t}\n\t\tconst addAmbient = !options.lightMapEnabled || options.lightMapWithoutAmbient;\n\t\tif (addAmbient) {\n\t\t\tif (options.ambientSource === 'ambientSH') {\n\t\t\t\tfunc.append(chunks.ambientSHPS);\n\t\t\t} else if (options.ambientSource === 'envAtlas') {\n\t\t\t\tif (options.reflectionSource !== 'envAtlas' && options.reflectionSource !== 'envAtlasHQ') {\n\t\t\t\t\tfunc.append(chunks.envAtlasPS);\n\t\t\t\t}\n\t\t\t\tfunc.append(chunks.ambientEnvPS.replace(/\\$DECODE/g, ChunkUtils.decodeFunc(options.ambientEncoding)));\n\t\t\t} else {\n\t\t\t\tfunc.append(chunks.ambientConstantPS);\n\t\t\t}\n\t\t}\n\t\tif (options.useAmbientTint && !useOldAmbient) {\n\t\t\tdecl.append(\"uniform vec3 material_ambient;\");\n\t\t}\n\t\tif (options.useMsdf) {\n\t\t\tif (!options.msdfTextAttribute) {\n\t\t\t\tdecl.append(\"#define UNIFORM_TEXT_PARAMETERS\");\n\t\t\t}\n\t\t\tfunc.append(chunks.msdfPS);\n\t\t}\n\t\tif (this.needsNormal) {\n\t\t\tfunc.append(chunks.viewDirPS);\n\t\t\tif (options.useSpecular) {\n\t\t\t\tfunc.append(options.enableGGXSpecular ? chunks.reflDirAnisoPS : chunks.reflDirPS);\n\t\t\t}\n\t\t}\n\t\tlet hasPointLights = false;\n\t\tlet usesLinearFalloff = false;\n\t\tlet usesInvSquaredFalloff = false;\n\t\tlet usesSpot = false;\n\t\tlet usesCookie = false;\n\t\tlet usesCookieNow;\n\t\tif (options.clusteredLightingEnabled && this.lighting) {\n\t\t\tusesSpot = true;\n\t\t\thasPointLights = true;\n\t\t\tusesLinearFalloff = true;\n\t\t\tusesCookie = true;\n\t\t\tfunc.append(chunks.floatUnpackingPS);\n\t\t\tif (options.lightMaskDynamic) decl.append(\"#define CLUSTER_MESH_DYNAMIC_LIGHTS\");\n\t\t\tif (options.clusteredLightingCookiesEnabled) decl.append(\"#define CLUSTER_COOKIES\");\n\t\t\tif (options.clusteredLightingShadowsEnabled && !options.noShadow) {\n\t\t\t\tdecl.append(\"#define CLUSTER_SHADOWS\");\n\t\t\t\tdecl.append(\"#define CLUSTER_SHADOW_TYPE_\" + shadowTypeToString[options.clusteredLightingShadowType]);\n\t\t\t}\n\t\t\tif (options.clusteredLightingAreaLightsEnabled) decl.append(\"#define CLUSTER_AREALIGHTS\");\n\t\t\tdecl.append(LightsBuffer.getShaderDefines(device));\n\t\t\tif (options.clusteredLightingShadowsEnabled && !options.noShadow) {\n\t\t\t\tfunc.append(chunks.clusteredLightShadowsPS);\n\t\t\t}\n\t\t\tfunc.append(chunks.clusteredLightPS);\n\t\t}\n\t\tcode.append(this._fsGetStartCode(code, device, chunks, options));\n\t\tif (this.needsNormal) {\n\t\t\tcode.append(\" dVertexNormalW = normalize(vNormalW);\");\n\t\t\tif ((options.useHeights || options.useNormals) && options.hasTangents) {\n\t\t\t\tcode.append(\" dTangentW = vTangentW;\");\n\t\t\t\tcode.append(\" dBinormalW = vBinormalW;\");\n\t\t\t}\n\t\t\tcode.append(\" getViewDir();\");\n\t\t\tif (hasTBN) {\n\t\t\t\tcode.append(\" getTBN(dTangentW, dBinormalW, dVertexNormalW);\");\n\t\t\t\tif (options.twoSidedLighting) {\n\t\t\t\t\tcode.append(\" handleTwoSidedLighting();\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcode.append(this.frontendFunc);\n\t\tif (this.needsNormal) {\n\t\t\tif (options.useSpecular) {\n\t\t\t\tbackend.append(\" getReflDir(litArgs_worldNormal, dViewDirW, litArgs_gloss, dTBN);\");\n\t\t\t}\n\t\t\tif (options.useClearCoat) {\n\t\t\t\tbackend.append(\" ccReflDirW = normalize(-reflect(dViewDirW, litArgs_clearcoat_worldNormal));\");\n\t\t\t}\n\t\t}\n\t\tif (this.lighting && options.useSpecular || this.reflections) {\n\t\t\tif (options.useMetalness) {\n\t\t\t\tbackend.append(\" float f0 = 1.0 / litArgs_ior; f0 = (f0 - 1.0) / (f0 + 1.0); f0 *= f0;\");\n\t\t\t\tbackend.append(\" litArgs_specularity = getSpecularModulate(litArgs_specularity, litArgs_albedo, litArgs_metalness, f0);\");\n\t\t\t\tbackend.append(\" litArgs_albedo = getAlbedoModulate(litArgs_albedo, litArgs_metalness);\");\n\t\t\t}\n\t\t\tif (options.useIridescence) {\n\t\t\t\tbackend.append(\" vec3 iridescenceFresnel = getIridescence(saturate(dot(dViewDirW, litArgs_worldNormal)), litArgs_specularity, litArgs_iridescence_thickness);\");\n\t\t\t}\n\t\t}\n\t\tif (addAmbient) {\n\t\t\tbackend.append(\" addAmbient(litArgs_worldNormal);\");\n\t\t\tif (options.conserveEnergy && options.useSpecular) {\n\t\t\t\tbackend.append(` dDiffuseLight = dDiffuseLight * (1.0 - litArgs_specularity);`);\n\t\t\t}\n\t\t\tif (options.separateAmbient) {\n\t\t\t\tbackend.append(`\n\t\t\t\t\t\t\t\t\t\tvec3 dAmbientLight = dDiffuseLight;\n\t\t\t\t\t\t\t\t\t\tdDiffuseLight = vec3(0);\n\t\t\t\t\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t\tif (options.useAmbientTint && !useOldAmbient) {\n\t\t\tbackend.append(\" dDiffuseLight *= material_ambient;\");\n\t\t}\n\t\tif (options.useAo && !options.occludeDirect) {\n\t\t\tbackend.append(\" occludeDiffuse(litArgs_ao);\");\n\t\t}\n\t\tif (options.lightMapEnabled) {\n\t\t\tbackend.append(` addLightMap(\n\t\t\t\t\t\t\t\tlitArgs_lightmap, \n\t\t\t\t\t\t\t\tlitArgs_lightmapDir, \n\t\t\t\t\t\t\t\tlitArgs_worldNormal, \n\t\t\t\t\t\t\t\tdViewDirW, \n\t\t\t\t\t\t\t\tdReflDirW, \n\t\t\t\t\t\t\t\tlitArgs_gloss, \n\t\t\t\t\t\t\t\tlitArgs_specularity, \n\t\t\t\t\t\t\t\tdVertexNormalW,\n\t\t\t\t\t\t\t\tdTBN\n\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t);`);\n\t\t}\n\t\tif (this.lighting || this.reflections) {\n\t\t\tif (this.reflections) {\n\t\t\t\tif (options.useClearCoat) {\n\t\t\t\t\tbackend.append(\" addReflectionCC(ccReflDirW, litArgs_clearcoat_gloss);\");\n\t\t\t\t\tif (options.fresnelModel > 0) {\n\t\t\t\t\t\tbackend.append(\" ccFresnel = getFresnelCC(dot(dViewDirW, litArgs_clearcoat_worldNormal));\");\n\t\t\t\t\t\tbackend.append(\" ccReflection.rgb *= ccFresnel;\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbackend.append(\" ccFresnel = 0.0;\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.useSpecularityFactor) {\n\t\t\t\t\tbackend.append(\" ccReflection.rgb *= litArgs_specularityFactor;\");\n\t\t\t\t}\n\t\t\t\tif (options.useSheen) {\n\t\t\t\t\tbackend.append(\" addReflectionSheen(litArgs_worldNormal, dViewDirW, litArgs_sheen_gloss);\");\n\t\t\t\t}\n\t\t\t\tbackend.append(\" addReflection(dReflDirW, litArgs_gloss);\");\n\t\t\t\tif (options.fresnelModel > 0) {\n\t\t\t\t\tbackend.append(` dReflection.rgb *= \n\t\t\t\t\t\t\t\t\t\t\t\tgetFresnel(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdot(dViewDirW, litArgs_worldNormal), \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_gloss, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_specularity\n\t\t\t\t\t\t\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);`);\n\t\t\t\t} else {\n\t\t\t\t\tbackend.append(\" dReflection.rgb *= litArgs_specularity;\");\n\t\t\t\t}\n\t\t\t\tif (options.useSpecularityFactor) {\n\t\t\t\t\tbackend.append(\" dReflection.rgb *= litArgs_specularityFactor;\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasAreaLights) {\n\t\t\t\tbackend.append(\" dSpecularLight *= litArgs_specularity;\");\n\t\t\t\tif (options.useSpecular) {\n\t\t\t\t\tbackend.append(\" calcLTCLightValues(litArgs_gloss, litArgs_worldNormal, dViewDirW, litArgs_specularity, litArgs_clearcoat_gloss, litArgs_clearcoat_worldNormal, litArgs_clearcoat_specularity);\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = 0; i < options.lights.length; i++) {\n\t\t\t\tconst light = options.lights[i];\n\t\t\t\tconst lightType = light._type;\n\t\t\t\tif (options.clusteredLightingEnabled && lightType !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tusesCookieNow = false;\n\t\t\t\tconst lightShape = hasAreaLights && light._shape ? light.shape : LIGHTSHAPE_PUNCTUAL;\n\t\t\t\tconst shapeString = hasAreaLights && light._shape ? this._getLightSourceShapeString(lightShape) : '';\n\t\t\t\tif (lightShape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\tbackend.append(\" calc\" + shapeString + \"LightValues(light\" + i + \"_position, light\" + i + \"_halfWidth, light\" + i + \"_halfHeight);\");\n\t\t\t\t}\n\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\tbackend.append(\" dLightDirNormW = light\" + i + \"_direction;\");\n\t\t\t\t\tbackend.append(\" dAtten = 1.0;\");\n\t\t\t\t} else {\n\t\t\t\t\tif (light._cookie) {\n\t\t\t\t\t\tif (lightType === LIGHTTYPE_SPOT && !light._cookie._cubemap) {\n\t\t\t\t\t\t\tusesCookie = true;\n\t\t\t\t\t\t\tusesCookieNow = true;\n\t\t\t\t\t\t} else if (lightType === LIGHTTYPE_OMNI && light._cookie._cubemap) {\n\t\t\t\t\t\t\tusesCookie = true;\n\t\t\t\t\t\t\tusesCookieNow = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbackend.append(\" getLightDirPoint(light\" + i + \"_position);\");\n\t\t\t\t\thasPointLights = true;\n\t\t\t\t\tif (usesCookieNow) {\n\t\t\t\t\t\tif (lightType === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\t\tbackend.append(\" dAtten3 = getCookie2D\" + (light._cookieFalloff ? \"\" : \"Clip\") + (light._cookieTransform ? \"Xform\" : \"\") + \"(light\" + i + \"_cookie, light\" + i + \"_shadowMatrix, light\" + i + \"_cookieIntensity\" + (light._cookieTransform ? \", light\" + i + \"_cookieMatrix, light\" + i + \"_cookieOffset\" : \"\") + \").\" + light._cookieChannel + \";\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbackend.append(\" dAtten3 = getCookieCube(light\" + i + \"_cookie, light\" + i + \"_shadowMatrix, light\" + i + \"_cookieIntensity).\" + light._cookieChannel + \";\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lightShape === LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\tif (light._falloffMode === LIGHTFALLOFF_LINEAR) {\n\t\t\t\t\t\t\tbackend.append(\" dAtten = getFalloffLinear(light\" + i + \"_radius, dLightDirW);\");\n\t\t\t\t\t\t\tusesLinearFalloff = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbackend.append(\" dAtten = getFalloffInvSquared(light\" + i + \"_radius, dLightDirW);\");\n\t\t\t\t\t\t\tusesInvSquaredFalloff = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbackend.append(\" dAtten = getFalloffWindow(light\" + i + \"_radius, dLightDirW);\");\n\t\t\t\t\t\tusesInvSquaredFalloff = true;\n\t\t\t\t\t}\n\t\t\t\t\tbackend.append(\" if (dAtten > 0.00001) {\");\n\t\t\t\t\tif (lightType === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tif (!(usesCookieNow && !light._cookieFalloff)) {\n\t\t\t\t\t\t\tbackend.append(\" dAtten *= getSpotEffect(light\" + i + \"_direction, light\" + i + \"_innerConeAngle, light\" + i + \"_outerConeAngle, dLightDirNormW);\");\n\t\t\t\t\t\t\tusesSpot = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lightShape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tbackend.append(\" dAttenD = getLightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirW, dLightDirNormW);\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbackend.append(\" dAttenD = get\" + shapeString + \"LightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirW, dLightDirNormW) * 16.0;\");\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbackend.append(\" dAtten *= getLightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirW, dLightDirNormW);\");\n\t\t\t\t}\n\t\t\t\tif (light.castShadows && !options.noShadow) {\n\t\t\t\t\tconst pcssShadows = light._shadowType === SHADOW_PCSS;\n\t\t\t\t\tconst vsmShadows = light._shadowType === SHADOW_VSM8 || light._shadowType === SHADOW_VSM16 || light._shadowType === SHADOW_VSM32;\n\t\t\t\t\tconst pcfShadows = light._shadowType === SHADOW_PCF1 || light._shadowType === SHADOW_PCF3 || light._shadowType === SHADOW_PCF5;\n\t\t\t\t\tlet shadowReadMode = null;\n\t\t\t\t\tlet evsmExp;\n\t\t\t\t\tswitch (light._shadowType) {\n\t\t\t\t\t\tcase SHADOW_VSM8:\n\t\t\t\t\t\t\tshadowReadMode = \"VSM8\";\n\t\t\t\t\t\t\tevsmExp = \"0.0\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase SHADOW_VSM16:\n\t\t\t\t\t\t\tshadowReadMode = \"VSM16\";\n\t\t\t\t\t\t\tevsmExp = \"5.54\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase SHADOW_VSM32:\n\t\t\t\t\t\t\tshadowReadMode = \"VSM32\";\n\t\t\t\t\t\t\tif (device.textureFloatHighPrecision) {\n\t\t\t\t\t\t\t\tevsmExp = \"15.0\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tevsmExp = \"5.54\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase SHADOW_PCF1:\n\t\t\t\t\t\t\tshadowReadMode = \"PCF1x1\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase SHADOW_PCF5:\n\t\t\t\t\t\t\tshadowReadMode = \"PCF5x5\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase SHADOW_PCSS:\n\t\t\t\t\t\t\tshadowReadMode = \"PCSS\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase SHADOW_PCF3:\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tshadowReadMode = \"PCF3x3\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (shadowReadMode !== null) {\n\t\t\t\t\t\tif (light._normalOffsetBias && !light._isVsm) {\n\t\t\t\t\t\t\tfunc.append(\"#define SHADOW_SAMPLE_NORMAL_OFFSET\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\tfunc.append(\"#define SHADOW_SAMPLE_ORTHO\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((pcfShadows || pcssShadows) && device.isWebGL2 || device.isWebGPU || device.extStandardDerivatives) {\n\t\t\t\t\t\t\tfunc.append(\"#define SHADOW_SAMPLE_SOURCE_ZBUFFER\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lightType === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\t\tfunc.append(\"#define SHADOW_SAMPLE_POINT\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst coordCode = chunks.shadowSampleCoordPS;\n\t\t\t\t\t\tfunc.append(coordCode.replace(\"$LIGHT\", i));\n\t\t\t\t\t\tfunc.append(\"#undef SHADOW_SAMPLE_NORMAL_OFFSET\");\n\t\t\t\t\t\tfunc.append(\"#undef SHADOW_SAMPLE_ORTHO\");\n\t\t\t\t\t\tfunc.append(\"#undef SHADOW_SAMPLE_SOURCE_ZBUFFER\");\n\t\t\t\t\t\tfunc.append(\"#undef SHADOW_SAMPLE_POINT\");\n\t\t\t\t\t\tlet shadowMatrix = `light${i}_shadowMatrix`;\n\t\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL && light.numCascades > 1) {\n\t\t\t\t\t\t\tbackend.append(` getShadowCascadeMatrix(light${i}_shadowMatrixPalette, light${i}_shadowCascadeDistances, light${i}_shadowCascadeCount);`);\n\t\t\t\t\t\t\tshadowMatrix = `cascadeShadowMat`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbackend.append(` dShadowCoord = getShadowSampleCoord${i}(${shadowMatrix}, light${i}_shadowParams, vPositionW, dLightPosW, dLightDirW, dLightDirNormW, dVertexNormalW);`);\n\t\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\tbackend.append(` fadeShadow(light${i}_shadowCascadeDistances);`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar shadowCoordArgs = `SHADOWMAP_PASS(light${i}_shadowMap), dShadowCoord, light${i}_shadowParams`;\n\t\t\t\t\t\tif (vsmShadows) {\n\t\t\t\t\t\t\tshadowCoordArgs = `${shadowCoordArgs}, ${evsmExp}, dLightDirW`;\n\t\t\t\t\t\t} else if (pcssShadows) {\n\t\t\t\t\t\t\tlet penumbraSizeArg = `vec2(light${i}_shadowSearchArea)`;\n\t\t\t\t\t\t\tif (lightShape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\t\t\tpenumbraSizeArg = `vec2(length(light${i}_halfWidth), length(light${i}_halfHeight)) * light${i}_shadowSearchArea`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tshadowCoordArgs = `${shadowCoordArgs}, light${i}_cameraParams, ${penumbraSizeArg}, dLightDirW`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lightType === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\t\tshadowReadMode = `Point${shadowReadMode}`;\n\t\t\t\t\t\t\tif (!pcssShadows) {\n\t\t\t\t\t\t\t\tshadowCoordArgs = `${shadowCoordArgs}, dLightDirW`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (lightType === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\t\tshadowReadMode = `Spot${shadowReadMode}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbackend.append(` float shadow${i} = getShadow${shadowReadMode}(${shadowCoordArgs});`);\n\t\t\t\t\t\tbackend.append(` dAtten *= mix(1.0, shadow${i}, light${i}_shadowIntensity);`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lightShape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\tif (options.conserveEnergy && options.useSpecular) {\n\t\t\t\t\t\tbackend.append(\" dDiffuseLight += ((dAttenD * dAtten) * light\" + i + \"_color\" + (usesCookieNow ? \" * dAtten3\" : \"\") + \") * (1.0 - dLTCSpecFres);\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbackend.append(\" dDiffuseLight += (dAttenD * dAtten) * light\" + i + \"_color\" + (usesCookieNow ? \" * dAtten3\" : \"\") + \";\");\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (hasAreaLights && options.conserveEnergy && options.useSpecular) {\n\t\t\t\t\t\tbackend.append(\" dDiffuseLight += (dAtten * light\" + i + \"_color\" + (usesCookieNow ? \" * dAtten3\" : \"\") + \") * (1.0 - litArgs_specularity);\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbackend.append(\" dDiffuseLight += dAtten * light\" + i + \"_color\" + (usesCookieNow ? \" * dAtten3\" : \"\") + \";\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.useSpecular) {\n\t\t\t\t\tbackend.append(\" dHalfDirW = normalize(-dLightDirNormW + dViewDirW);\");\n\t\t\t\t}\n\t\t\t\tif (light.affectSpecularity) {\n\t\t\t\t\tif (lightShape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\tif (options.useClearCoat) {\n\t\t\t\t\t\t\tbackend.append(` ccSpecularLight += ccLTCSpecFres * get${shapeString}LightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * light${i}_color` + (usesCookieNow ? \" * dAtten3\" : \"\") + \";\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.useSpecular) {\n\t\t\t\t\t\t\tbackend.append(` dSpecularLight += dLTCSpecFres * get${shapeString}LightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * light${i}_color` + (usesCookieNow ? \" * dAtten3\" : \"\") + \";\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar calcFresnel = false;\n\t\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL && options.fresnelModel > 0) {\n\t\t\t\t\t\t\tcalcFresnel = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.useClearCoat) {\n\t\t\t\t\t\t\tbackend.append(` ccSpecularLight += getLightSpecular(dHalfDirW, ccReflDirW, litArgs_clearcoat_worldNormal, dViewDirW, dLightDirNormW, litArgs_clearcoat_gloss, dTBN) * dAtten * light${i}_color` + (usesCookieNow ? \" * dAtten3\" : \"\") + (calcFresnel ? \" * getFresnelCC(dot(dViewDirW, dHalfDirW));\" : \";\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.useSheen) {\n\t\t\t\t\t\t\tbackend.append(` sSpecularLight += getLightSpecularSheen(dHalfDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_sheen_gloss) * dAtten * light${i}_color` + (usesCookieNow ? \" * dAtten3;\" : \";\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.useSpecular) {\n\t\t\t\t\t\t\tbackend.append(` dSpecularLight += getLightSpecular(dHalfDirW, dReflDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_gloss, dTBN) * dAtten * light${i}_color` + (usesCookieNow ? \" * dAtten3\" : \"\") + (calcFresnel ? ` \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t* getFresnel(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdot(dViewDirW, dHalfDirW), \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_gloss, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_specularity\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t, iridescenceFresnel, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);` : `* litArgs_specularity;`));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lightType !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\tbackend.append(\" }\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.clusteredLightingEnabled && this.lighting) {\n\t\t\t\tusesLinearFalloff = true;\n\t\t\t\tusesInvSquaredFalloff = true;\n\t\t\t\thasPointLights = true;\n\t\t\t\tbackend.append(` addClusteredLights(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_worldNormal, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdViewDirW, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdReflDirW,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#if defined(LIT_CLEARCOAT)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tccReflDirW,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_gloss, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_specularity, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdVertexNormalW, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdTBN, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tiridescenceFresnel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_clearcoat_worldNormal, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_clearcoat_gloss,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_sheen_gloss,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);`);\n\t\t\t}\n\t\t\tif (hasAreaLights) {\n\t\t\t\tif (options.useClearCoat) {\n\t\t\t\t\tbackend.append(\" litArgs_clearcoat_specularity = 1.0;\");\n\t\t\t\t}\n\t\t\t\tif (options.useSpecular) {\n\t\t\t\t\tbackend.append(\" litArgs_specularity = vec3(1);\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.useRefraction) {\n\t\t\t\tbackend.append(` addRefraction(\n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_worldNormal, \n\t\t\t\t\t\t\t\t\t\t\t\tdViewDirW, \n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_thickness, \n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_gloss, \n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_specularity, \n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_albedo, \n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_transmission,\n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_ior,\n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_dispersion\n\t\t\t\t\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t\t\t\t\t\t, iridescenceFresnel, \n\t\t\t\t\t\t\t\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t\t\t\t);`);\n\t\t\t}\n\t\t}\n\t\tif (options.useAo) {\n\t\t\tif (options.occludeDirect) {\n\t\t\t\tbackend.append(\" occludeDiffuse(litArgs_ao);\");\n\t\t\t}\n\t\t\tif (options.occludeSpecular === SPECOCC_AO || options.occludeSpecular === SPECOCC_GLOSSDEPENDENT) {\n\t\t\t\tbackend.append(\" occludeSpecular(litArgs_gloss, litArgs_ao, litArgs_worldNormal, dViewDirW);\");\n\t\t\t}\n\t\t}\n\t\tif (options.useSpecularityFactor) {\n\t\t\tbackend.append(\" dSpecularLight *= litArgs_specularityFactor;\");\n\t\t}\n\t\tif (options.opacityFadesSpecular === false) {\n\t\t\tif (options.blendType === BLEND_NORMAL || options.blendType === BLEND_PREMULTIPLIED) {\n\t\t\t\tbackend.append(\"float specLum = dot((dSpecularLight + dReflection.rgb * dReflection.a), vec3( 0.2126, 0.7152, 0.0722 ));\");\n\t\t\t\tbackend.append(\"#ifdef LIT_CLEARCOAT\\n specLum += dot(ccSpecularLight * litArgs_clearcoat_specularity + ccReflection.rgb * litArgs_clearcoat_specularity, vec3( 0.2126, 0.7152, 0.0722 ));\\n#endif\");\n\t\t\t\tbackend.append(\"litArgs_opacity = clamp(litArgs_opacity + gammaCorrectInput(specLum), 0.0, 1.0);\");\n\t\t\t}\n\t\t\tbackend.append(\"litArgs_opacity *= material_alphaFade;\");\n\t\t}\n\t\tbackend.append(chunks.endPS);\n\t\tif (options.blendType === BLEND_NORMAL || options.blendType === BLEND_ADDITIVEALPHA || options.alphaToCoverage) {\n\t\t\tbackend.append(chunks.outputAlphaPS);\n\t\t} else if (options.blendType === BLEND_PREMULTIPLIED) {\n\t\t\tbackend.append(chunks.outputAlphaPremulPS);\n\t\t} else {\n\t\t\tbackend.append(chunks.outputAlphaOpaquePS);\n\t\t}\n\t\tif (options.useMsdf) {\n\t\t\tbackend.append(\" gl_FragColor = applyMsdf(gl_FragColor);\");\n\t\t}\n\t\tbackend.append(chunks.outputPS);\n\t\tbackend.append(chunks.debugOutputPS);\n\t\tif (hasPointLights) {\n\t\t\tfunc.prepend(chunks.lightDirPointPS);\n\t\t}\n\t\tif (usesLinearFalloff) {\n\t\t\tfunc.prepend(chunks.falloffLinearPS);\n\t\t}\n\t\tif (usesInvSquaredFalloff) {\n\t\t\tfunc.prepend(chunks.falloffInvSquaredPS);\n\t\t}\n\t\tif (usesSpot) {\n\t\t\tfunc.prepend(chunks.spotPS);\n\t\t}\n\t\tif (usesCookie && !options.clusteredLightingEnabled) {\n\t\t\tfunc.prepend(chunks.cookiePS);\n\t\t}\n\t\tlet structCode = \"\";\n\t\tconst backendCode = `void evaluateBackend() {\\n${backend.code}\\n}`;\n\t\tfunc.append(backendCode);\n\t\tcode.append(chunks.debugProcessFrontendPS);\n\t\tcode.append(\" evaluateBackend();\");\n\t\tcode.append(ShaderGenerator.end());\n\t\tconst mergedCode = decl.code + func.code + code.code;\n\t\tif (mergedCode.includes(\"dTBN\")) structCode += \"mat3 dTBN;\\n\";\n\t\tif (mergedCode.includes(\"dVertexNormalW\")) structCode += \"vec3 dVertexNormalW;\\n\";\n\t\tif (mergedCode.includes(\"dTangentW\")) structCode += \"vec3 dTangentW;\\n\";\n\t\tif (mergedCode.includes(\"dBinormalW\")) structCode += \"vec3 dBinormalW;\\n\";\n\t\tif (mergedCode.includes(\"dViewDirW\")) structCode += \"vec3 dViewDirW;\\n\";\n\t\tif (mergedCode.includes(\"dReflDirW\")) structCode += \"vec3 dReflDirW;\\n\";\n\t\tif (mergedCode.includes(\"dHalfDirW\")) structCode += \"vec3 dHalfDirW;\\n\";\n\t\tif (mergedCode.includes(\"ccReflDirW\")) structCode += \"vec3 ccReflDirW;\\n\";\n\t\tif (mergedCode.includes(\"dLightDirNormW\")) structCode += \"vec3 dLightDirNormW;\\n\";\n\t\tif (mergedCode.includes(\"dLightDirW\")) structCode += \"vec3 dLightDirW;\\n\";\n\t\tif (mergedCode.includes(\"dLightPosW\")) structCode += \"vec3 dLightPosW;\\n\";\n\t\tif (mergedCode.includes(\"dShadowCoord\")) structCode += \"vec3 dShadowCoord;\\n\";\n\t\tif (mergedCode.includes(\"dReflection\")) structCode += \"vec4 dReflection;\\n\";\n\t\tif (mergedCode.includes(\"dDiffuseLight\")) structCode += \"vec3 dDiffuseLight;\\n\";\n\t\tif (mergedCode.includes(\"dSpecularLight\")) structCode += \"vec3 dSpecularLight;\\n\";\n\t\tif (mergedCode.includes(\"dAtten\")) structCode += \"float dAtten;\\n\";\n\t\tif (mergedCode.includes(\"dAttenD\")) structCode += \"float dAttenD;\\n\";\n\t\tif (mergedCode.includes(\"dAtten3\")) structCode += \"vec3 dAtten3;\\n\";\n\t\tif (mergedCode.includes(\"dMsdf\")) structCode += \"vec4 dMsdf;\\n\";\n\t\tif (mergedCode.includes(\"ccFresnel\")) structCode += \"float ccFresnel;\\n\";\n\t\tif (mergedCode.includes(\"ccReflection\")) structCode += \"vec3 ccReflection;\\n\";\n\t\tif (mergedCode.includes(\"ccSpecularLight\")) structCode += \"vec3 ccSpecularLight;\\n\";\n\t\tif (mergedCode.includes(\"ccSpecularityNoFres\")) structCode += \"float ccSpecularityNoFres;\\n\";\n\t\tif (mergedCode.includes(\"sSpecularLight\")) structCode += \"vec3 sSpecularLight;\\n\";\n\t\tif (mergedCode.includes(\"sReflection\")) structCode += \"vec3 sReflection;\\n\";\n\t\tconst result = this._fsGetBeginCode() + this.varyings + this.varyingDefines + this._fsGetBaseCode() + structCode + this.frontendDecl + mergedCode;\n\t\treturn result;\n\t}\n\tgenerateFragmentShader(frontendDecl, frontendCode, frontendFunc, lightingUv) {\n\t\tvar _this$handleCompatibi;\n\t\tconst options = this.options;\n\t\tthis.frontendDecl = frontendDecl;\n\t\tthis.frontendCode = frontendCode;\n\t\tthis.frontendFunc = frontendFunc;\n\t\tthis.lightingUv = lightingUv;\n\t\tif (options.pass === SHADER_PICK) {\n\t\t\tthis.fshader = this._fsGetPickPassCode();\n\t\t} else if (options.pass === SHADER_DEPTH) {\n\t\t\tthis.fshader = this._fsGetDepthPassCode();\n\t\t} else if (options.pass === SHADER_PREPASS_VELOCITY) {\n\t\t\tthis.fshader = this._fsGetPrePassVelocityCode();\n\t\t} else if (this.shadowPass) {\n\t\t\tthis.fshader = this._fsGetShadowPassCode();\n\t\t} else if (options.customFragmentShader) {\n\t\t\tthis.fshader = this._fsGetBeginCode() + options.customFragmentShader;\n\t\t} else {\n\t\t\tthis.fshader = this._fsGetLitPassCode();\n\t\t}\n\t\t(_this$handleCompatibi = this.handleCompatibility) == null || _this$handleCompatibi.call(this);\n\t}\n\tgetDefinition() {\n\t\tconst definition = ShaderUtils.createDefinition(this.device, {\n\t\t\tname: 'LitShader',\n\t\t\tattributes: this.attributes,\n\t\t\tvertexCode: this.vshader,\n\t\t\tfragmentCode: this.fshader\n\t\t});\n\t\tif (this.shaderPassInfo.isForward) {\n\t\t\tdefinition.tag = SHADERTAG_MATERIAL;\n\t\t}\n\t\treturn definition;\n\t}\n}\n\nexport { LitShader };\n", "import { LIGHTTYPE_DIRECTIONAL } from '../../constants.js';\n\nconst LitOptionsUtils = {\n\tgenerateKey(options) {\n\t\treturn \"lit\" + Object.keys(options).sort().map(key => {\n\t\t\tif (key === \"chunks\") {\n\t\t\t\treturn LitOptionsUtils.generateChunksKey(options);\n\t\t\t} else if (key === \"lights\") {\n\t\t\t\treturn LitOptionsUtils.generateLightsKey(options);\n\t\t\t}\n\t\t\treturn key + options[key];\n\t\t}).join(\"\\n\");\n\t},\n\tgenerateLightsKey(options) {\n\t\treturn 'lights:' + options.lights.map(light => {\n\t\t\treturn !options.clusteredLightingEnabled || light._type === LIGHTTYPE_DIRECTIONAL ? `${light.key},` : '';\n\t\t}).join(\"\");\n\t},\n\tgenerateChunksKey(options) {\n\t\tvar _options$chunks;\n\t\treturn 'chunks:\\n' + Object.keys((_options$chunks = options.chunks) != null ? _options$chunks : {}).sort().map(key => key + options.chunks[key]).join(\"\");\n\t}\n};\n\nexport { LitOptionsUtils };\n", "import { Vec3 } from '../../core/math/vec3.js';\nimport { math } from '../../core/math/math.js';\nimport { BoundingBox } from '../../core/shape/bounding-box.js';\nimport { PIXELFORMAT_L8 } from '../../platform/graphics/constants.js';\nimport { MASK_AFFECT_DYNAMIC, MASK_AFFECT_LIGHTMAPPED, LIGHTTYPE_SPOT, LIGHTTYPE_DIRECTIONAL } from '../constants.js';\nimport { LightsBuffer } from './lights-buffer.js';\n\nconst tempVec3 = new Vec3();\nconst tempMin3 = new Vec3();\nconst tempMax3 = new Vec3();\nconst tempBox = new BoundingBox();\nconst epsilon = 0.000001;\nclass ClusterLight {\n\tconstructor() {\n\t\tthis.light = null;\n\t\tthis.min = new Vec3();\n\t\tthis.max = new Vec3();\n\t}\n}\nclass WorldClusters {\n\tconstructor(device) {\n\t\tthis.clusterTexture = void 0;\n\t\tthis.device = device;\n\t\tthis.name = 'Untitled';\n\t\tthis.reportCount = 0;\n\t\tthis.boundsMin = new Vec3();\n\t\tthis.boundsMax = new Vec3();\n\t\tthis.boundsDelta = new Vec3();\n\t\tthis._cells = new Vec3(1, 1, 1);\n\t\tthis._cellsLimit = new Vec3();\n\t\tthis.cells = this._cells;\n\t\tthis.maxCellLightCount = 4;\n\t\tthis._maxAttenuation = 0;\n\t\tthis._maxColorValue = 0;\n\t\tthis._usedLights = [];\n\t\tthis._usedLights.push(new ClusterLight());\n\t\tthis.lightsBuffer = new LightsBuffer(device);\n\t\tthis.registerUniforms(device);\n\t}\n\tset maxCellLightCount(count) {\n\t\tif (count !== this._maxCellLightCount) {\n\t\t\tthis._maxCellLightCount = count;\n\t\t\tthis._cellsDirty = true;\n\t\t}\n\t}\n\tget maxCellLightCount() {\n\t\treturn this._maxCellLightCount;\n\t}\n\tset cells(value) {\n\t\ttempVec3.copy(value).floor();\n\t\tif (!this._cells.equals(tempVec3)) {\n\t\t\tthis._cells.copy(tempVec3);\n\t\t\tthis._cellsLimit.copy(tempVec3).sub(Vec3.ONE);\n\t\t\tthis._cellsDirty = true;\n\t\t}\n\t}\n\tget cells() {\n\t\treturn this._cells;\n\t}\n\tdestroy() {\n\t\tthis.lightsBuffer.destroy();\n\t\tthis.releaseClusterTexture();\n\t}\n\treleaseClusterTexture() {\n\t\tif (this.clusterTexture) {\n\t\t\tthis.clusterTexture.destroy();\n\t\t\tthis.clusterTexture = null;\n\t\t}\n\t}\n\tregisterUniforms(device) {\n\t\tthis._clusterSkipId = device.scope.resolve('clusterSkip');\n\t\tthis._clusterMaxCellsId = device.scope.resolve('clusterMaxCells');\n\t\tthis._clusterWorldTextureId = device.scope.resolve('clusterWorldTexture');\n\t\tthis._clusterTextureSizeId = device.scope.resolve('clusterTextureSize');\n\t\tthis._clusterTextureSizeData = new Float32Array(3);\n\t\tthis._clusterBoundsMinId = device.scope.resolve('clusterBoundsMin');\n\t\tthis._clusterBoundsMinData = new Float32Array(3);\n\t\tthis._clusterBoundsDeltaId = device.scope.resolve('clusterBoundsDelta');\n\t\tthis._clusterBoundsDeltaData = new Float32Array(3);\n\t\tthis._clusterCellsCountByBoundsSizeId = device.scope.resolve('clusterCellsCountByBoundsSize');\n\t\tthis._clusterCellsCountByBoundsSizeData = new Float32Array(3);\n\t\tthis._clusterCellsDotId = device.scope.resolve('clusterCellsDot');\n\t\tthis._clusterCellsDotData = new Float32Array(3);\n\t\tthis._clusterCellsMaxId = device.scope.resolve('clusterCellsMax');\n\t\tthis._clusterCellsMaxData = new Float32Array(3);\n\t\tthis._clusterCompressionLimit0Id = device.scope.resolve('clusterCompressionLimit0');\n\t\tthis._clusterCompressionLimit0Data = new Float32Array(2);\n\t}\n\tupdateParams(lightingParams) {\n\t\tif (lightingParams) {\n\t\t\tthis.cells = lightingParams.cells;\n\t\t\tthis.maxCellLightCount = lightingParams.maxLightsPerCell;\n\t\t\tthis.lightsBuffer.cookiesEnabled = lightingParams.cookiesEnabled;\n\t\t\tthis.lightsBuffer.shadowsEnabled = lightingParams.shadowsEnabled;\n\t\t\tthis.lightsBuffer.areaLightsEnabled = lightingParams.areaLightsEnabled;\n\t\t}\n\t}\n\tupdateCells() {\n\t\tif (this._cellsDirty) {\n\t\t\tthis._cellsDirty = false;\n\t\t\tconst cx = this._cells.x;\n\t\t\tconst cy = this._cells.y;\n\t\t\tconst cz = this._cells.z;\n\t\t\tconst numCells = cx * cy * cz;\n\t\t\tconst totalPixels = this.maxCellLightCount * numCells;\n\t\t\tlet width = Math.ceil(Math.sqrt(totalPixels));\n\t\t\twidth = math.roundUp(width, this.maxCellLightCount);\n\t\t\tconst height = Math.ceil(totalPixels / width);\n\t\t\tthis._clusterCellsMaxData[0] = cx;\n\t\t\tthis._clusterCellsMaxData[1] = cy;\n\t\t\tthis._clusterCellsMaxData[2] = cz;\n\t\t\tthis._clusterCellsDotData[0] = this.maxCellLightCount;\n\t\t\tthis._clusterCellsDotData[1] = cx * cz * this.maxCellLightCount;\n\t\t\tthis._clusterCellsDotData[2] = cx * this.maxCellLightCount;\n\t\t\tthis.clusters = new Uint8ClampedArray(totalPixels);\n\t\t\tthis.counts = new Int32Array(numCells);\n\t\t\tthis._clusterTextureSizeData[0] = width;\n\t\t\tthis._clusterTextureSizeData[1] = 1.0 / width;\n\t\t\tthis._clusterTextureSizeData[2] = 1.0 / height;\n\t\t\tthis.releaseClusterTexture();\n\t\t\tthis.clusterTexture = this.lightsBuffer.createTexture(this.device, width, height, PIXELFORMAT_L8, 'ClusterTexture');\n\t\t}\n\t}\n\tuploadTextures() {\n\t\tthis.clusterTexture.lock().set(this.clusters);\n\t\tthis.clusterTexture.unlock();\n\t\tthis.lightsBuffer.uploadTextures();\n\t}\n\tupdateUniforms() {\n\t\tthis._clusterSkipId.setValue(this._usedLights.length > 1 ? 0 : 1);\n\t\tthis.lightsBuffer.updateUniforms();\n\t\tthis._clusterWorldTextureId.setValue(this.clusterTexture);\n\t\tthis._clusterMaxCellsId.setValue(this.maxCellLightCount);\n\t\tconst boundsDelta = this.boundsDelta;\n\t\tthis._clusterCellsCountByBoundsSizeData[0] = this._cells.x / boundsDelta.x;\n\t\tthis._clusterCellsCountByBoundsSizeData[1] = this._cells.y / boundsDelta.y;\n\t\tthis._clusterCellsCountByBoundsSizeData[2] = this._cells.z / boundsDelta.z;\n\t\tthis._clusterCellsCountByBoundsSizeId.setValue(this._clusterCellsCountByBoundsSizeData);\n\t\tthis._clusterBoundsMinData[0] = this.boundsMin.x;\n\t\tthis._clusterBoundsMinData[1] = this.boundsMin.y;\n\t\tthis._clusterBoundsMinData[2] = this.boundsMin.z;\n\t\tthis._clusterBoundsDeltaData[0] = boundsDelta.x;\n\t\tthis._clusterBoundsDeltaData[1] = boundsDelta.y;\n\t\tthis._clusterBoundsDeltaData[2] = boundsDelta.z;\n\t\tthis._clusterCompressionLimit0Data[0] = this._maxAttenuation;\n\t\tthis._clusterCompressionLimit0Data[1] = this._maxColorValue;\n\t\tthis._clusterTextureSizeId.setValue(this._clusterTextureSizeData);\n\t\tthis._clusterBoundsMinId.setValue(this._clusterBoundsMinData);\n\t\tthis._clusterBoundsDeltaId.setValue(this._clusterBoundsDeltaData);\n\t\tthis._clusterCellsDotId.setValue(this._clusterCellsDotData);\n\t\tthis._clusterCellsMaxId.setValue(this._clusterCellsMaxData);\n\t\tthis._clusterCompressionLimit0Id.setValue(this._clusterCompressionLimit0Data);\n\t}\n\tevalLightCellMinMax(clusteredLight, min, max) {\n\t\tmin.copy(clusteredLight.min);\n\t\tmin.sub(this.boundsMin);\n\t\tmin.div(this.boundsDelta);\n\t\tmin.mul2(min, this.cells);\n\t\tmin.floor();\n\t\tmax.copy(clusteredLight.max);\n\t\tmax.sub(this.boundsMin);\n\t\tmax.div(this.boundsDelta);\n\t\tmax.mul2(max, this.cells);\n\t\tmax.ceil();\n\t\tmin.max(Vec3.ZERO);\n\t\tmax.min(this._cellsLimit);\n\t}\n\tcollectLights(lights) {\n\t\tconst maxLights = this.lightsBuffer.maxLights;\n\t\tconst usedLights = this._usedLights;\n\t\tlet lightIndex = 1;\n\t\tlights.forEach(light => {\n\t\t\tconst runtimeLight = !!(light.mask & (MASK_AFFECT_DYNAMIC | MASK_AFFECT_LIGHTMAPPED));\n\t\t\tconst zeroAngleSpotlight = light.type === LIGHTTYPE_SPOT && light._outerConeAngle === 0;\n\t\t\tif (light.enabled && light.type !== LIGHTTYPE_DIRECTIONAL && light.visibleThisFrame && light.intensity > 0 && runtimeLight && !zeroAngleSpotlight) {\n\t\t\t\tif (lightIndex < maxLights) {\n\t\t\t\t\tlet clusteredLight;\n\t\t\t\t\tif (lightIndex < usedLights.length) {\n\t\t\t\t\t\tclusteredLight = usedLights[lightIndex];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclusteredLight = new ClusterLight();\n\t\t\t\t\t\tusedLights.push(clusteredLight);\n\t\t\t\t\t}\n\t\t\t\t\tclusteredLight.light = light;\n\t\t\t\t\tlight.getBoundingBox(tempBox);\n\t\t\t\t\tclusteredLight.min.copy(tempBox.getMin());\n\t\t\t\t\tclusteredLight.max.copy(tempBox.getMax());\n\t\t\t\t\tlightIndex++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tusedLights.length = lightIndex;\n\t}\n\tevaluateBounds() {\n\t\tconst usedLights = this._usedLights;\n\t\tconst min = this.boundsMin;\n\t\tconst max = this.boundsMax;\n\t\tif (usedLights.length > 1) {\n\t\t\tmin.copy(usedLights[1].min);\n\t\t\tmax.copy(usedLights[1].max);\n\t\t\tfor (let i = 2; i < usedLights.length; i++) {\n\t\t\t\tmin.min(usedLights[i].min);\n\t\t\t\tmax.max(usedLights[i].max);\n\t\t\t}\n\t\t} else {\n\t\t\tmin.set(0, 0, 0);\n\t\t\tmax.set(1, 1, 1);\n\t\t}\n\t\tthis.boundsDelta.sub2(max, min);\n\t\tthis.lightsBuffer.setBounds(min, this.boundsDelta);\n\t}\n\tevaluateCompressionLimits(gammaCorrection) {\n\t\tlet maxAttenuation = 0;\n\t\tlet maxColorValue = 0;\n\t\tconst usedLights = this._usedLights;\n\t\tfor (let i = 1; i < usedLights.length; i++) {\n\t\t\tconst light = usedLights[i].light;\n\t\t\tmaxAttenuation = Math.max(light.attenuationEnd, maxAttenuation);\n\t\t\tconst color = gammaCorrection ? light._linearFinalColor : light._finalColor;\n\t\t\tmaxColorValue = Math.max(color[0], maxColorValue);\n\t\t\tmaxColorValue = Math.max(color[1], maxColorValue);\n\t\t\tmaxColorValue = Math.max(color[2], maxColorValue);\n\t\t}\n\t\tthis._maxAttenuation = maxAttenuation + epsilon;\n\t\tthis._maxColorValue = maxColorValue + epsilon;\n\t\tthis.lightsBuffer.setCompressionRanges(this._maxAttenuation, this._maxColorValue);\n\t}\n\tupdateClusters(gammaCorrection) {\n\t\tthis.counts.fill(0);\n\t\tthis.clusters.fill(0);\n\t\tconst divX = this._cells.x;\n\t\tconst divZ = this._cells.z;\n\t\tconst counts = this.counts;\n\t\tconst limit = this._maxCellLightCount;\n\t\tconst clusters = this.clusters;\n\t\tconst pixelsPerCellCount = this.maxCellLightCount;\n\t\tconst usedLights = this._usedLights;\n\t\tfor (let i = 1; i < usedLights.length; i++) {\n\t\t\tconst clusteredLight = usedLights[i];\n\t\t\tconst light = clusteredLight.light;\n\t\t\tthis.lightsBuffer.addLightData(light, i, gammaCorrection);\n\t\t\tthis.evalLightCellMinMax(clusteredLight, tempMin3, tempMax3);\n\t\t\tconst xStart = tempMin3.x;\n\t\t\tconst xEnd = tempMax3.x;\n\t\t\tconst yStart = tempMin3.y;\n\t\t\tconst yEnd = tempMax3.y;\n\t\t\tconst zStart = tempMin3.z;\n\t\t\tconst zEnd = tempMax3.z;\n\t\t\tfor (let x = xStart; x <= xEnd; x++) {\n\t\t\t\tfor (let z = zStart; z <= zEnd; z++) {\n\t\t\t\t\tfor (let y = yStart; y <= yEnd; y++) {\n\t\t\t\t\t\tconst clusterIndex = x + divX * (z + y * divZ);\n\t\t\t\t\t\tconst count = counts[clusterIndex];\n\t\t\t\t\t\tif (count < limit) {\n\t\t\t\t\t\t\tclusters[pixelsPerCellCount * clusterIndex + count] = i;\n\t\t\t\t\t\t\tcounts[clusterIndex] = count + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tupdate(lights, gammaCorrection, lightingParams) {\n\t\tthis.updateParams(lightingParams);\n\t\tthis.updateCells();\n\t\tthis.collectLights(lights);\n\t\tthis.evaluateBounds();\n\t\tthis.evaluateCompressionLimits(gammaCorrection);\n\t\tthis.updateClusters(gammaCorrection);\n\t\tthis.uploadTextures();\n\t}\n\tactivate() {\n\t\tthis.updateUniforms();\n\t}\n}\n\nexport { WorldClusters };\n", "import { PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA16F, PIXELFORMAT_DEPTH, PIXELFORMAT_R32F, PIXELFORMAT_RGBA8, FILTER_NEAREST, FILTER_LINEAR, ADDRESS_CLAMP_TO_EDGE, FUNC_LESS } from '../../platform/graphics/constants.js';\nimport { RenderTarget } from '../../platform/graphics/render-target.js';\nimport { Texture } from '../../platform/graphics/texture.js';\nimport { SHADOW_VSM32, SHADOW_VSM16, SHADOW_PCF5, SHADOW_PCF1, SHADOW_PCF3, SHADOW_PCSS, LIGHTTYPE_OMNI } from '../constants.js';\n\nclass ShadowMap {\n\tconstructor(texture, targets) {\n\t\tthis.texture = texture;\n\t\tthis.cached = false;\n\t\tthis.renderTargets = targets;\n\t}\n\tdestroy() {\n\t\tif (this.texture) {\n\t\t\tthis.texture.destroy();\n\t\t\tthis.texture = null;\n\t\t}\n\t\tconst targets = this.renderTargets;\n\t\tfor (let i = 0; i < targets.length; i++) {\n\t\t\ttargets[i].destroy();\n\t\t}\n\t\tthis.renderTargets.length = 0;\n\t}\n\tstatic getShadowFormat(device, shadowType) {\n\t\tif (shadowType === SHADOW_VSM32) {\n\t\t\treturn PIXELFORMAT_RGBA32F;\n\t\t} else if (shadowType === SHADOW_VSM16) {\n\t\t\treturn PIXELFORMAT_RGBA16F;\n\t\t} else if (shadowType === SHADOW_PCF5) {\n\t\t\treturn PIXELFORMAT_DEPTH;\n\t\t} else if ((shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3) && device.supportsDepthShadow) {\n\t\t\treturn PIXELFORMAT_DEPTH;\n\t\t} else if (shadowType === SHADOW_PCSS && !device.isWebGL1) {\n\t\t\treturn PIXELFORMAT_R32F;\n\t\t}\n\t\treturn PIXELFORMAT_RGBA8;\n\t}\n\tstatic getShadowFiltering(device, shadowType) {\n\t\tif ((shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3 || shadowType === SHADOW_PCSS) && !device.supportsDepthShadow) {\n\t\t\treturn FILTER_NEAREST;\n\t\t} else if (shadowType === SHADOW_VSM32) {\n\t\t\treturn device.extTextureFloatLinear ? FILTER_LINEAR : FILTER_NEAREST;\n\t\t} else if (shadowType === SHADOW_VSM16) {\n\t\t\treturn device.extTextureHalfFloatLinear ? FILTER_LINEAR : FILTER_NEAREST;\n\t\t}\n\t\treturn FILTER_LINEAR;\n\t}\n\tstatic create(device, light) {\n\t\tlet shadowMap = null;\n\t\tif (light._type === LIGHTTYPE_OMNI) {\n\t\t\tshadowMap = this.createCubemap(device, light._shadowResolution, light._shadowType);\n\t\t} else {\n\t\t\tshadowMap = this.create2dMap(device, light._shadowResolution, light._shadowType);\n\t\t}\n\t\treturn shadowMap;\n\t}\n\tstatic createAtlas(device, resolution, shadowType) {\n\t\tconst shadowMap = this.create2dMap(device, resolution, shadowType);\n\t\tconst targets = shadowMap.renderTargets;\n\t\tconst rt = targets[0];\n\t\tfor (let i = 0; i < 5; i++) {\n\t\t\ttargets.push(rt);\n\t\t}\n\t\treturn shadowMap;\n\t}\n\tstatic create2dMap(device, size, shadowType) {\n\t\tconst format = this.getShadowFormat(device, shadowType);\n\t\tconst filter = this.getShadowFiltering(device, shadowType);\n\t\tconst texture = new Texture(device, {\n\t\t\tformat: format,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t\tmipmaps: false,\n\t\t\tminFilter: filter,\n\t\t\tmagFilter: filter,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\tname: 'ShadowMap2D'\n\t\t});\n\t\tlet target = null;\n\t\tif (shadowType === SHADOW_PCF5 || (shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3) && device.supportsDepthShadow) {\n\t\t\ttexture.compareOnRead = true;\n\t\t\ttexture.compareFunc = FUNC_LESS;\n\t\t\ttarget = new RenderTarget({\n\t\t\t\tdepthBuffer: texture\n\t\t\t});\n\t\t} else {\n\t\t\ttarget = new RenderTarget({\n\t\t\t\tcolorBuffer: texture,\n\t\t\t\tdepth: true\n\t\t\t});\n\t\t}\n\t\tif (device.isWebGPU) {\n\t\t\ttarget.flipY = true;\n\t\t}\n\t\treturn new ShadowMap(texture, [target]);\n\t}\n\tstatic createCubemap(device, size, shadowType) {\n\t\tconst format = shadowType === SHADOW_PCSS && !device.isWebGL1 ? PIXELFORMAT_R32F : PIXELFORMAT_RGBA8;\n\t\tconst cubemap = new Texture(device, {\n\t\t\tformat: format,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t\tcubemap: true,\n\t\t\tmipmaps: false,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\tname: 'ShadowMapCube'\n\t\t});\n\t\tconst targets = [];\n\t\tfor (let i = 0; i < 6; i++) {\n\t\t\tconst target = new RenderTarget({\n\t\t\t\tcolorBuffer: cubemap,\n\t\t\t\tface: i,\n\t\t\t\tdepth: true\n\t\t\t});\n\t\t\ttargets.push(target);\n\t\t}\n\t\treturn new ShadowMap(cubemap, targets);\n\t}\n}\n\nexport { ShadowMap };\n", "import { Vec2 } from '../../core/math/vec2.js';\nimport { Vec4 } from '../../core/math/vec4.js';\nimport { PIXELFORMAT_RGBA8, FILTER_NEAREST, ADDRESS_CLAMP_TO_EDGE } from '../../platform/graphics/constants.js';\nimport { RenderTarget } from '../../platform/graphics/render-target.js';\nimport { Texture } from '../../platform/graphics/texture.js';\nimport { SHADOW_PCF3, LIGHTTYPE_SPOT, LIGHTTYPE_OMNI } from '../constants.js';\nimport { ShadowMap } from '../renderer/shadow-map.js';\n\nconst _tempArray = [];\nconst _tempArray2 = [];\nconst _viewport = new Vec4();\nconst _scissor = new Vec4();\nclass Slot {\n\tconstructor(rect) {\n\t\tthis.size = Math.floor(rect.w * 1024);\n\t\tthis.used = false;\n\t\tthis.lightId = -1;\n\t\tthis.rect = rect;\n\t}\n}\nclass LightTextureAtlas {\n\tconstructor(device) {\n\t\tthis.device = device;\n\t\tthis.version = 1;\n\t\tthis.shadowAtlasResolution = 2048;\n\t\tthis.shadowAtlas = null;\n\t\tthis.shadowEdgePixels = 3;\n\t\tthis.cookieAtlasResolution = 4;\n\t\tthis.cookieAtlas = new Texture(this.device, {\n\t\t\tname: 'CookieAtlas',\n\t\t\twidth: this.cookieAtlasResolution,\n\t\t\theight: this.cookieAtlasResolution,\n\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\tcubemap: false,\n\t\t\tmipmaps: false,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t});\n\t\tthis.cookieRenderTarget = new RenderTarget({\n\t\t\tcolorBuffer: this.cookieAtlas,\n\t\t\tdepth: false,\n\t\t\tflipY: true\n\t\t});\n\t\tthis.slots = [];\n\t\tthis.atlasSplit = [];\n\t\tthis.cubeSlotsOffsets = [new Vec2(0, 0), new Vec2(0, 1), new Vec2(1, 0), new Vec2(1, 1), new Vec2(2, 0), new Vec2(2, 1)];\n\t\tthis.scissorVec = new Vec4();\n\t\tthis.allocateShadowAtlas(1);\n\t\tthis.allocateCookieAtlas(1);\n\t\tthis.allocateUniforms();\n\t}\n\tdestroy() {\n\t\tthis.destroyShadowAtlas();\n\t\tthis.destroyCookieAtlas();\n\t}\n\tdestroyShadowAtlas() {\n\t\tvar _this$shadowAtlas;\n\t\t(_this$shadowAtlas = this.shadowAtlas) == null || _this$shadowAtlas.destroy();\n\t\tthis.shadowAtlas = null;\n\t}\n\tdestroyCookieAtlas() {\n\t\tvar _this$cookieAtlas, _this$cookieRenderTar;\n\t\t(_this$cookieAtlas = this.cookieAtlas) == null || _this$cookieAtlas.destroy();\n\t\tthis.cookieAtlas = null;\n\t\t(_this$cookieRenderTar = this.cookieRenderTarget) == null || _this$cookieRenderTar.destroy();\n\t\tthis.cookieRenderTarget = null;\n\t}\n\tallocateShadowAtlas(resolution) {\n\t\tif (!this.shadowAtlas || this.shadowAtlas.texture.width !== resolution) {\n\t\t\tthis.version++;\n\t\t\tthis.destroyShadowAtlas();\n\t\t\tthis.shadowAtlas = ShadowMap.createAtlas(this.device, resolution, SHADOW_PCF3);\n\t\t\tthis.shadowAtlas.cached = true;\n\t\t\tconst scissorOffset = 4 / this.shadowAtlasResolution;\n\t\t\tthis.scissorVec.set(scissorOffset, scissorOffset, -2 * scissorOffset, -2 * scissorOffset);\n\t\t}\n\t}\n\tallocateCookieAtlas(resolution) {\n\t\tif (this.cookieAtlas.width !== resolution) {\n\t\t\tthis.cookieRenderTarget.resize(resolution, resolution);\n\t\t\tthis.version++;\n\t\t}\n\t}\n\tallocateUniforms() {\n\t\tthis._shadowAtlasTextureId = this.device.scope.resolve('shadowAtlasTexture');\n\t\tthis._shadowAtlasParamsId = this.device.scope.resolve('shadowAtlasParams');\n\t\tthis._shadowAtlasParams = new Float32Array(2);\n\t\tthis._cookieAtlasTextureId = this.device.scope.resolve('cookieAtlasTexture');\n\t}\n\tupdateUniforms() {\n\t\tconst isShadowFilterPcf = true;\n\t\tconst rt = this.shadowAtlas.renderTargets[0];\n\t\tconst isDepthShadow = !this.device.isWebGL1 && isShadowFilterPcf;\n\t\tconst shadowBuffer = isDepthShadow ? rt.depthBuffer : rt.colorBuffer;\n\t\tthis._shadowAtlasTextureId.setValue(shadowBuffer);\n\t\tthis._shadowAtlasParams[0] = this.shadowAtlasResolution;\n\t\tthis._shadowAtlasParams[1] = this.shadowEdgePixels;\n\t\tthis._shadowAtlasParamsId.setValue(this._shadowAtlasParams);\n\t\tthis._cookieAtlasTextureId.setValue(this.cookieAtlas);\n\t}\n\tsubdivide(numLights, lightingParams) {\n\t\tlet atlasSplit = lightingParams.atlasSplit;\n\t\tif (!atlasSplit) {\n\t\t\tconst gridSize = Math.ceil(Math.sqrt(numLights));\n\t\t\tatlasSplit = _tempArray2;\n\t\t\tatlasSplit[0] = gridSize;\n\t\t\tatlasSplit.length = 1;\n\t\t}\n\t\tconst arraysEqual = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);\n\t\tif (!arraysEqual(atlasSplit, this.atlasSplit)) {\n\t\t\tthis.version++;\n\t\t\tthis.slots.length = 0;\n\t\t\tthis.atlasSplit.length = 0;\n\t\t\tthis.atlasSplit.push(...atlasSplit);\n\t\t\tconst splitCount = this.atlasSplit[0];\n\t\t\tif (splitCount > 1) {\n\t\t\t\tconst invSize = 1 / splitCount;\n\t\t\t\tfor (let i = 0; i < splitCount; i++) {\n\t\t\t\t\tfor (let j = 0; j < splitCount; j++) {\n\t\t\t\t\t\tconst rect = new Vec4(i * invSize, j * invSize, invSize, invSize);\n\t\t\t\t\t\tconst nextLevelSplit = this.atlasSplit[1 + i * splitCount + j];\n\t\t\t\t\t\tif (nextLevelSplit > 1) {\n\t\t\t\t\t\t\tfor (let x = 0; x < nextLevelSplit; x++) {\n\t\t\t\t\t\t\t\tfor (let y = 0; y < nextLevelSplit; y++) {\n\t\t\t\t\t\t\t\t\tconst invSizeNext = invSize / nextLevelSplit;\n\t\t\t\t\t\t\t\t\tconst rectNext = new Vec4(rect.x + x * invSizeNext, rect.y + y * invSizeNext, invSizeNext, invSizeNext);\n\t\t\t\t\t\t\t\t\tthis.slots.push(new Slot(rectNext));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.slots.push(new Slot(rect));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.slots.push(new Slot(new Vec4(0, 0, 1, 1)));\n\t\t\t}\n\t\t\tthis.slots.sort((a, b) => {\n\t\t\t\treturn b.size - a.size;\n\t\t\t});\n\t\t}\n\t}\n\tcollectLights(localLights, lightingParams) {\n\t\tconst cookiesEnabled = lightingParams.cookiesEnabled;\n\t\tconst shadowsEnabled = lightingParams.shadowsEnabled;\n\t\tlet needsShadowAtlas = false;\n\t\tlet needsCookieAtlas = false;\n\t\tconst lights = _tempArray;\n\t\tlights.length = 0;\n\t\tconst processLights = list => {\n\t\t\tfor (let i = 0; i < list.length; i++) {\n\t\t\t\tconst light = list[i];\n\t\t\t\tif (light.visibleThisFrame) {\n\t\t\t\t\tconst lightShadow = shadowsEnabled && light.castShadows;\n\t\t\t\t\tconst lightCookie = cookiesEnabled && !!light.cookie;\n\t\t\t\t\tneedsShadowAtlas || (needsShadowAtlas = lightShadow);\n\t\t\t\t\tneedsCookieAtlas || (needsCookieAtlas = lightCookie);\n\t\t\t\t\tif (lightShadow || lightCookie) {\n\t\t\t\t\t\tlights.push(light);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tif (cookiesEnabled || shadowsEnabled) {\n\t\t\tprocessLights(localLights);\n\t\t}\n\t\tlights.sort((a, b) => {\n\t\t\treturn b.maxScreenSize - a.maxScreenSize;\n\t\t});\n\t\tif (needsShadowAtlas) {\n\t\t\tthis.allocateShadowAtlas(this.shadowAtlasResolution);\n\t\t}\n\t\tif (needsCookieAtlas) {\n\t\t\tthis.allocateCookieAtlas(this.cookieAtlasResolution);\n\t\t}\n\t\tif (needsShadowAtlas || needsCookieAtlas) {\n\t\t\tthis.subdivide(lights.length, lightingParams);\n\t\t}\n\t\treturn lights;\n\t}\n\tsetupSlot(light, rect) {\n\t\tlight.atlasViewport.copy(rect);\n\t\tconst faceCount = light.numShadowFaces;\n\t\tfor (let face = 0; face < faceCount; face++) {\n\t\t\tif (light.castShadows || light._cookie) {\n\t\t\t\t_viewport.copy(rect);\n\t\t\t\t_scissor.copy(rect);\n\t\t\t\tif (light._type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t_viewport.add(this.scissorVec);\n\t\t\t\t}\n\t\t\t\tif (light._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\tconst smallSize = _viewport.z / 3;\n\t\t\t\t\tconst offset = this.cubeSlotsOffsets[face];\n\t\t\t\t\t_viewport.x += smallSize * offset.x;\n\t\t\t\t\t_viewport.y += smallSize * offset.y;\n\t\t\t\t\t_viewport.z = smallSize;\n\t\t\t\t\t_viewport.w = smallSize;\n\t\t\t\t\t_scissor.copy(_viewport);\n\t\t\t\t}\n\t\t\t\tif (light.castShadows) {\n\t\t\t\t\tconst lightRenderData = light.getRenderData(null, face);\n\t\t\t\t\tlightRenderData.shadowViewport.copy(_viewport);\n\t\t\t\t\tlightRenderData.shadowScissor.copy(_scissor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tassignSlot(light, slotIndex, slotReassigned) {\n\t\tlight.atlasViewportAllocated = true;\n\t\tconst slot = this.slots[slotIndex];\n\t\tslot.lightId = light.id;\n\t\tslot.used = true;\n\t\tif (slotReassigned) {\n\t\t\tlight.atlasSlotUpdated = true;\n\t\t\tlight.atlasVersion = this.version;\n\t\t\tlight.atlasSlotIndex = slotIndex;\n\t\t}\n\t}\n\tupdate(localLights, lightingParams) {\n\t\tthis.shadowAtlasResolution = lightingParams.shadowAtlasResolution;\n\t\tthis.cookieAtlasResolution = lightingParams.cookieAtlasResolution;\n\t\tconst lights = this.collectLights(localLights, lightingParams);\n\t\tif (lights.length > 0) {\n\t\t\tconst slots = this.slots;\n\t\t\tfor (let i = 0; i < slots.length; i++) {\n\t\t\t\tslots[i].used = false;\n\t\t\t}\n\t\t\tconst assignCount = Math.min(lights.length, slots.length);\n\t\t\tfor (let i = 0; i < assignCount; i++) {\n\t\t\t\tconst light = lights[i];\n\t\t\t\tif (light.castShadows) light._shadowMap = this.shadowAtlas;\n\t\t\t\tconst previousSlot = slots[light.atlasSlotIndex];\n\t\t\t\tif (light.atlasVersion === this.version && light.id === (previousSlot == null ? void 0 : previousSlot.lightId)) {\n\t\t\t\t\tconst _previousSlot = slots[light.atlasSlotIndex];\n\t\t\t\t\tif (_previousSlot.size === slots[i].size && !_previousSlot.used) {\n\t\t\t\t\t\tthis.assignSlot(light, light.atlasSlotIndex, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet usedCount = 0;\n\t\t\tfor (let i = 0; i < assignCount; i++) {\n\t\t\t\twhile (usedCount < slots.length && slots[usedCount].used) usedCount++;\n\t\t\t\tconst light = lights[i];\n\t\t\t\tif (!light.atlasViewportAllocated) {\n\t\t\t\t\tthis.assignSlot(light, usedCount, true);\n\t\t\t\t}\n\t\t\t\tconst slot = slots[light.atlasSlotIndex];\n\t\t\t\tthis.setupSlot(light, slot.rect);\n\t\t\t}\n\t\t}\n\t\tthis.updateUniforms();\n\t}\n}\n\nexport { LightTextureAtlas };\n", "import { Vec3 } from '../../core/math/vec3.js';\nimport { LIGHTTYPE_DIRECTIONAL } from '../constants.js';\n\nconst lightCubeDir = [new Vec3(-1, 0, 0), new Vec3(1, 0, 0), new Vec3(0, -1, 0), new Vec3(0, 1, 0), new Vec3(0, 0, -1), new Vec3(0, 0, 1)];\nclass LightCube {\n\tconstructor() {\n\t\tthis.colors = new Float32Array(6 * 3);\n\t}\n\tupdate(ambientLight, lights) {\n\t\tconst colors = this.colors;\n\t\tconst {\n\t\t\tr,\n\t\t\tg,\n\t\t\tb\n\t\t} = ambientLight;\n\t\tfor (let j = 0; j < 6; j++) {\n\t\t\tcolors[j * 3] = r;\n\t\t\tcolors[j * 3 + 1] = g;\n\t\t\tcolors[j * 3 + 2] = b;\n\t\t}\n\t\tfor (let j = 0; j < lights.length; j++) {\n\t\t\tconst light = lights[j];\n\t\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\tfor (let c = 0; c < 6; c++) {\n\t\t\t\t\tconst weight = Math.max(lightCubeDir[c].dot(light._direction), 0) * light._intensity;\n\t\t\t\t\tconst lightColor = light._color;\n\t\t\t\t\tcolors[c * 3] += lightColor.r * weight;\n\t\t\t\t\tcolors[c * 3 + 1] += lightColor.g * weight;\n\t\t\t\t\tcolors[c * 3 + 2] += lightColor.b * weight;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { LightCube };\n", "import { LIGHTTYPE_OMNI } from '../constants.js';\nimport { ShadowMap } from './shadow-map.js';\n\nclass ShadowMapCache {\n\tconstructor() {\n\t\tthis.cache = new Map();\n\t}\n\tdestroy() {\n\t\tthis.clear();\n\t\tthis.cache = null;\n\t}\n\tclear() {\n\t\tthis.cache.forEach(shadowMaps => {\n\t\t\tshadowMaps.forEach(shadowMap => {\n\t\t\t\tshadowMap.destroy();\n\t\t\t});\n\t\t});\n\t\tthis.cache.clear();\n\t}\n\tgetKey(light) {\n\t\tconst isCubeMap = light._type === LIGHTTYPE_OMNI;\n\t\tconst shadowType = light._shadowType;\n\t\tconst resolution = light._shadowResolution;\n\t\treturn `${isCubeMap}-${shadowType}-${resolution}`;\n\t}\n\tget(device, light) {\n\t\tconst key = this.getKey(light);\n\t\tconst shadowMaps = this.cache.get(key);\n\t\tif (shadowMaps && shadowMaps.length) {\n\t\t\treturn shadowMaps.pop();\n\t\t}\n\t\tconst shadowMap = ShadowMap.create(device, light);\n\t\tshadowMap.cached = true;\n\t\treturn shadowMap;\n\t}\n\tadd(light, shadowMap) {\n\t\tconst key = this.getKey(light);\n\t\tconst shadowMaps = this.cache.get(key);\n\t\tif (shadowMaps) {\n\t\t\tshadowMaps.push(shadowMap);\n\t\t} else {\n\t\t\tthis.cache.set(key, [shadowMap]);\n\t\t}\n\t}\n}\n\nexport { ShadowMapCache };\n", "import { RenderPass } from '../../platform/graphics/render-pass.js';\n\nclass RenderPassShadowLocalNonClustered extends RenderPass {\n\tconstructor(device, shadowRenderer, light, face, applyVsm) {\n\t\tsuper(device);\n\t\tthis.requiresCubemaps = false;\n\t\tthis.shadowRenderer = shadowRenderer;\n\t\tthis.light = light;\n\t\tthis.face = face;\n\t\tthis.applyVsm = applyVsm;\n\t\tthis.shadowCamera = shadowRenderer.prepareFace(light, null, face);\n\t\tshadowRenderer.setupRenderPass(this, this.shadowCamera, true);\n\t}\n\texecute() {\n\t\tthis.shadowRenderer.renderFace(this.light, null, this.face, false);\n\t}\n\tafter() {\n\t\tif (this.applyVsm) {\n\t\t\tthis.shadowRenderer.renderVsm(this.light, this.shadowCamera);\n\t\t}\n\t}\n}\n\nexport { RenderPassShadowLocalNonClustered };\n", "import { math } from '../../core/math/math.js';\nimport { ShadowMap } from './shadow-map.js';\nimport { LIGHTTYPE_SPOT, LIGHTTYPE_OMNI } from '../constants.js';\nimport { RenderPassShadowLocalNonClustered } from './render-pass-shadow-local-non-clustered.js';\n\nclass ShadowRendererLocal {\n\tconstructor(renderer, shadowRenderer) {\n\t\tthis.shadowLights = [];\n\t\tthis.renderer = void 0;\n\t\tthis.shadowRenderer = void 0;\n\t\tthis.device = void 0;\n\t\tthis.renderer = renderer;\n\t\tthis.shadowRenderer = shadowRenderer;\n\t\tthis.device = renderer.device;\n\t}\n\tcull(light, comp, casters = null) {\n\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\tlight.visibleThisFrame = true;\n\t\tif (!isClustered) {\n\t\t\tif (!light._shadowMap) {\n\t\t\t\tlight._shadowMap = ShadowMap.create(this.device, light);\n\t\t\t}\n\t\t}\n\t\tconst type = light._type;\n\t\tconst faceCount = type === LIGHTTYPE_SPOT ? 1 : 6;\n\t\tfor (let face = 0; face < faceCount; face++) {\n\t\t\tconst lightRenderData = light.getRenderData(null, face);\n\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\tshadowCam.nearClip = light.attenuationEnd / 1000;\n\t\t\tshadowCam.farClip = light.attenuationEnd;\n\t\t\tlightRenderData.depthRangeCompensation = shadowCam.farClip - shadowCam.nearClip;\n\t\t\tconst shadowCamNode = shadowCam._node;\n\t\t\tconst lightNode = light._node;\n\t\t\tshadowCamNode.setPosition(lightNode.getPosition());\n\t\t\tif (type === LIGHTTYPE_SPOT) {\n\t\t\t\tshadowCam.fov = light._outerConeAngle * 2;\n\t\t\t\tshadowCamNode.setRotation(lightNode.getRotation());\n\t\t\t\tshadowCamNode.rotateLocal(-90, 0, 0);\n\t\t\t} else if (type === LIGHTTYPE_OMNI) {\n\t\t\t\tif (isClustered) {\n\t\t\t\t\tconst tileSize = this.shadowRenderer.lightTextureAtlas.shadowAtlasResolution * light.atlasViewport.z / 3;\n\t\t\t\t\tconst texelSize = 2 / tileSize;\n\t\t\t\t\tconst filterSize = texelSize * this.shadowRenderer.lightTextureAtlas.shadowEdgePixels;\n\t\t\t\t\tshadowCam.fov = Math.atan(1 + filterSize) * math.RAD_TO_DEG * 2;\n\t\t\t\t} else {\n\t\t\t\t\tshadowCam.fov = 90;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.renderer.updateCameraFrustum(shadowCam);\n\t\t\tthis.shadowRenderer.cullShadowCasters(comp, light, lightRenderData.visibleCasters, shadowCam, casters);\n\t\t}\n\t}\n\tprepareLights(shadowLights, lights) {\n\t\tlet shadowCamera;\n\t\tfor (let i = 0; i < lights.length; i++) {\n\t\t\tconst light = lights[i];\n\t\t\tif (this.shadowRenderer.needsShadowRendering(light) && light.atlasViewportAllocated) {\n\t\t\t\tshadowLights.push(light);\n\t\t\t\tfor (let face = 0; face < light.numShadowFaces; face++) {\n\t\t\t\t\tshadowCamera = this.shadowRenderer.prepareFace(light, null, face);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn shadowCamera;\n\t}\n\tbuildNonClusteredRenderPasses(frameGraph, localLights) {\n\t\tfor (let i = 0; i < localLights.length; i++) {\n\t\t\tconst light = localLights[i];\n\t\t\tif (this.shadowRenderer.needsShadowRendering(light)) {\n\t\t\t\tconst applyVsm = light._type === LIGHTTYPE_SPOT;\n\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\tfor (let face = 0; face < faceCount; face++) {\n\t\t\t\t\tconst renderPass = new RenderPassShadowLocalNonClustered(this.device, this.shadowRenderer, light, face, applyVsm);\n\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { ShadowRendererLocal };\n", "import { RenderPass } from '../../platform/graphics/render-pass.js';\nimport { SHADOWUPDATE_NONE, SHADOWUPDATE_THISFRAME } from '../constants.js';\n\nclass RenderPassShadowDirectional extends RenderPass {\n\tconstructor(device, shadowRenderer, light, camera, allCascadesRendering) {\n\t\tsuper(device);\n\t\tthis.shadowRenderer = shadowRenderer;\n\t\tthis.light = light;\n\t\tthis.camera = camera;\n\t\tthis.allCascadesRendering = allCascadesRendering;\n\t}\n\texecute() {\n\t\tconst {\n\t\t\tlight,\n\t\t\tcamera,\n\t\t\tshadowRenderer,\n\t\t\tallCascadesRendering\n\t\t} = this;\n\t\tconst faceCount = light.numShadowFaces;\n\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\tfor (let face = 0; face < faceCount; face++) {\n\t\t\tif ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[face]) !== SHADOWUPDATE_NONE) {\n\t\t\t\tshadowRenderer.renderFace(light, camera, face, !allCascadesRendering);\n\t\t\t}\n\t\t\tif ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[face]) === SHADOWUPDATE_THISFRAME) {\n\t\t\t\tshadowUpdateOverrides[face] = SHADOWUPDATE_NONE;\n\t\t\t}\n\t\t}\n\t}\n\tafter() {\n\t\tthis.shadowRenderer.renderVsm(this.light, this.camera);\n\t}\n}\n\nexport { RenderPassShadowDirectional };\n", "import { math } from '../../core/math/math.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { Mat4 } from '../../core/math/mat4.js';\nimport { BoundingBox } from '../../core/shape/bounding-box.js';\nimport { SHADOWUPDATE_NONE } from '../constants.js';\nimport { ShadowMap } from './shadow-map.js';\nimport { RenderPassShadowDirectional } from './render-pass-shadow-directional.js';\n\nconst visibleSceneAabb = new BoundingBox();\nconst center = new Vec3();\nconst shadowCamView = new Mat4();\nconst aabbPoints = [new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3()];\nconst _depthRange = {\n\tmin: 0,\n\tmax: 0\n};\nfunction getDepthRange(cameraViewMatrix, aabbMin, aabbMax) {\n\taabbPoints[0].x = aabbPoints[1].x = aabbPoints[2].x = aabbPoints[3].x = aabbMin.x;\n\taabbPoints[1].y = aabbPoints[3].y = aabbPoints[7].y = aabbPoints[5].y = aabbMin.y;\n\taabbPoints[2].z = aabbPoints[3].z = aabbPoints[6].z = aabbPoints[7].z = aabbMin.z;\n\taabbPoints[4].x = aabbPoints[5].x = aabbPoints[6].x = aabbPoints[7].x = aabbMax.x;\n\taabbPoints[0].y = aabbPoints[2].y = aabbPoints[4].y = aabbPoints[6].y = aabbMax.y;\n\taabbPoints[0].z = aabbPoints[1].z = aabbPoints[4].z = aabbPoints[5].z = aabbMax.z;\n\tlet minz = 9999999999;\n\tlet maxz = -9999999999;\n\tfor (let i = 0; i < 8; ++i) {\n\t\tcameraViewMatrix.transformPoint(aabbPoints[i], aabbPoints[i]);\n\t\tconst z = aabbPoints[i].z;\n\t\tif (z < minz) minz = z;\n\t\tif (z > maxz) maxz = z;\n\t}\n\t_depthRange.min = minz;\n\t_depthRange.max = maxz;\n\treturn _depthRange;\n}\nclass ShadowRendererDirectional {\n\tconstructor(renderer, shadowRenderer) {\n\t\tthis.renderer = void 0;\n\t\tthis.shadowRenderer = void 0;\n\t\tthis.device = void 0;\n\t\tthis.renderer = renderer;\n\t\tthis.shadowRenderer = shadowRenderer;\n\t\tthis.device = renderer.device;\n\t}\n\tcull(light, comp, camera, casters = null) {\n\t\tlight.visibleThisFrame = true;\n\t\tif (!light._shadowMap) {\n\t\t\tlight._shadowMap = ShadowMap.create(this.device, light);\n\t\t}\n\t\tconst nearDist = camera._nearClip;\n\t\tthis.generateSplitDistances(light, nearDist, Math.min(camera._farClip, light.shadowDistance));\n\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\tfor (let cascade = 0; cascade < light.numCascades; cascade++) {\n\t\t\tif ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[cascade]) === SHADOWUPDATE_NONE) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst lightRenderData = light.getRenderData(camera, cascade);\n\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\tshadowCam.renderTarget = light._shadowMap.renderTargets[0];\n\t\t\tlightRenderData.shadowViewport.copy(light.cascades[cascade]);\n\t\t\tlightRenderData.shadowScissor.copy(light.cascades[cascade]);\n\t\t\tconst shadowCamNode = shadowCam._node;\n\t\t\tconst lightNode = light._node;\n\t\t\tshadowCamNode.setPosition(lightNode.getPosition());\n\t\t\tshadowCamNode.setRotation(lightNode.getRotation());\n\t\t\tshadowCamNode.rotateLocal(-90, 0, 0);\n\t\t\tconst frustumNearDist = cascade === 0 ? nearDist : light._shadowCascadeDistances[cascade - 1];\n\t\t\tconst frustumFarDist = light._shadowCascadeDistances[cascade];\n\t\t\tconst frustumPoints = camera.getFrustumCorners(frustumNearDist, frustumFarDist);\n\t\t\tcenter.set(0, 0, 0);\n\t\t\tconst cameraWorldMat = camera.node.getWorldTransform();\n\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\tcameraWorldMat.transformPoint(frustumPoints[i], frustumPoints[i]);\n\t\t\t\tcenter.add(frustumPoints[i]);\n\t\t\t}\n\t\t\tcenter.mulScalar(1 / 8);\n\t\t\tlet radius = 0;\n\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\tconst dist = frustumPoints[i].sub(center).length();\n\t\t\t\tif (dist > radius) radius = dist;\n\t\t\t}\n\t\t\tconst right = shadowCamNode.right;\n\t\t\tconst up = shadowCamNode.up;\n\t\t\tconst lightDir = shadowCamNode.forward;\n\t\t\tconst sizeRatio = 0.25 * light._shadowResolution / radius;\n\t\t\tconst x = Math.ceil(center.dot(up) * sizeRatio) / sizeRatio;\n\t\t\tconst y = Math.ceil(center.dot(right) * sizeRatio) / sizeRatio;\n\t\t\tconst scaledUp = up.mulScalar(x);\n\t\t\tconst scaledRight = right.mulScalar(y);\n\t\t\tconst dot = center.dot(lightDir);\n\t\t\tconst scaledDir = lightDir.mulScalar(dot);\n\t\t\tcenter.add2(scaledUp, scaledRight).add(scaledDir);\n\t\t\tshadowCamNode.setPosition(center);\n\t\t\tshadowCamNode.translateLocal(0, 0, 1000000);\n\t\t\tshadowCam.nearClip = 0.01;\n\t\t\tshadowCam.farClip = 2000000;\n\t\t\tshadowCam.orthoHeight = radius;\n\t\t\tthis.renderer.updateCameraFrustum(shadowCam);\n\t\t\tthis.shadowRenderer.cullShadowCasters(comp, light, lightRenderData.visibleCasters, shadowCam, casters);\n\t\t\tlet emptyAabb = true;\n\t\t\tconst visibleCasters = lightRenderData.visibleCasters;\n\t\t\tfor (let i = 0; i < visibleCasters.length; i++) {\n\t\t\t\tconst meshInstance = visibleCasters[i];\n\t\t\t\tif (emptyAabb) {\n\t\t\t\t\temptyAabb = false;\n\t\t\t\t\tvisibleSceneAabb.copy(meshInstance.aabb);\n\t\t\t\t} else {\n\t\t\t\t\tvisibleSceneAabb.add(meshInstance.aabb);\n\t\t\t\t}\n\t\t\t}\n\t\t\tshadowCamView.copy(shadowCamNode.getWorldTransform()).invert();\n\t\t\tconst depthRange = getDepthRange(shadowCamView, visibleSceneAabb.getMin(), visibleSceneAabb.getMax());\n\t\t\tshadowCamNode.translateLocal(0, 0, depthRange.max + 0.1);\n\t\t\tshadowCam.farClip = depthRange.max - depthRange.min + 0.2;\n\t\t\tlightRenderData.depthRangeCompensation = shadowCam.farClip;\n\t\t\tlightRenderData.projectionCompensation = radius;\n\t\t}\n\t}\n\tgenerateSplitDistances(light, nearDist, farDist) {\n\t\tlight._shadowCascadeDistances.fill(farDist);\n\t\tfor (let i = 1; i < light.numCascades; i++) {\n\t\t\tconst fraction = i / light.numCascades;\n\t\t\tconst linearDist = nearDist + (farDist - nearDist) * fraction;\n\t\t\tconst logDist = nearDist * (farDist / nearDist) ** fraction;\n\t\t\tconst dist = math.lerp(linearDist, logDist, light.cascadeDistribution);\n\t\t\tlight._shadowCascadeDistances[i - 1] = dist;\n\t\t}\n\t}\n\tgetLightRenderPass(light, camera) {\n\t\tlet renderPass = null;\n\t\tif (this.shadowRenderer.needsShadowRendering(light)) {\n\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\t\tlet allCascadesRendering = true;\n\t\t\tlet shadowCamera;\n\t\t\tfor (let face = 0; face < faceCount; face++) {\n\t\t\t\tif ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[face]) === SHADOWUPDATE_NONE) allCascadesRendering = false;\n\t\t\t\tshadowCamera = this.shadowRenderer.prepareFace(light, camera, face);\n\t\t\t}\n\t\t\trenderPass = new RenderPassShadowDirectional(this.device, this.shadowRenderer, light, camera, allCascadesRendering);\n\t\t\tthis.shadowRenderer.setupRenderPass(renderPass, shadowCamera, allCascadesRendering);\n\t\t}\n\t\treturn renderPass;\n\t}\n}\n\nexport { ShadowRendererDirectional };\n", "import { Color } from '../../core/math/color.js';\nimport { Mat4 } from '../../core/math/mat4.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { Vec4 } from '../../core/math/vec4.js';\nimport { UNIFORMTYPE_MAT4, UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX, SHADERSTAGE_FRAGMENT } from '../../platform/graphics/constants.js';\nimport { drawQuadWithShader } from '../graphics/quad-render-utils.js';\nimport { SHADOW_VSM8, SHADOW_VSM32, SHADOW_PCF5, SHADOW_PCF1, SHADOW_PCF3, LIGHTTYPE_OMNI, LIGHTTYPE_DIRECTIONAL, SORTKEY_DEPTH, SHADOWUPDATE_NONE, SHADOWUPDATE_THISFRAME, BLUR_GAUSSIAN, SHADER_SHADOW } from '../constants.js';\nimport { ShaderPass } from '../shader-pass.js';\nimport { shaderChunks } from '../shader-lib/chunks/chunks.js';\nimport { createShaderFromCode } from '../shader-lib/utils.js';\nimport { LightCamera } from './light-camera.js';\nimport { UniformBufferFormat, UniformFormat } from '../../platform/graphics/uniform-buffer-format.js';\nimport { BindGroupFormat, BindUniformBufferFormat } from '../../platform/graphics/bind-group-format.js';\nimport { BlendState } from '../../platform/graphics/blend-state.js';\n\nfunction gauss(x, sigma) {\n\treturn Math.exp(-(x * x) / (2.0 * sigma * sigma));\n}\nfunction gaussWeights(kernelSize) {\n\tconst sigma = (kernelSize - 1) / (2 * 3);\n\tconst halfWidth = (kernelSize - 1) * 0.5;\n\tconst values = new Array(kernelSize);\n\tlet sum = 0.0;\n\tfor (let i = 0; i < kernelSize; ++i) {\n\t\tvalues[i] = gauss(i - halfWidth, sigma);\n\t\tsum += values[i];\n\t}\n\tfor (let i = 0; i < kernelSize; ++i) {\n\t\tvalues[i] /= sum;\n\t}\n\treturn values;\n}\nconst tempSet = new Set();\nconst shadowCamView = new Mat4();\nconst shadowCamViewProj = new Mat4();\nconst pixelOffset = new Float32Array(2);\nconst blurScissorRect = new Vec4(1, 1, 0, 0);\nconst viewportMatrix = new Mat4();\nclass ShadowRenderer {\n\tconstructor(renderer, lightTextureAtlas) {\n\t\tthis.shadowPassCache = [];\n\t\tthis.device = renderer.device;\n\t\tthis.renderer = renderer;\n\t\tthis.lightTextureAtlas = lightTextureAtlas;\n\t\tconst scope = this.device.scope;\n\t\tthis.polygonOffsetId = scope.resolve('polygonOffset');\n\t\tthis.polygonOffset = new Float32Array(2);\n\t\tthis.sourceId = scope.resolve('source');\n\t\tthis.pixelOffsetId = scope.resolve('pixelOffset');\n\t\tthis.weightId = scope.resolve('weight[0]');\n\t\tthis.blurVsmShaderCode = [shaderChunks.blurVSMPS, '#define GAUSS\\n' + shaderChunks.blurVSMPS];\n\t\tconst packed = '#define PACKED\\n';\n\t\tthis.blurPackedVsmShaderCode = [packed + this.blurVsmShaderCode[0], packed + this.blurVsmShaderCode[1]];\n\t\tthis.blurVsmShader = [{}, {}];\n\t\tthis.blurPackedVsmShader = [{}, {}];\n\t\tthis.blurVsmWeights = {};\n\t\tthis.shadowMapLightRadiusId = scope.resolve('light_radius');\n\t\tthis.viewUniformFormat = null;\n\t\tthis.viewBindGroupFormat = null;\n\t\tthis.blendStateWrite = new BlendState();\n\t\tthis.blendStateNoWrite = new BlendState();\n\t\tthis.blendStateNoWrite.setColorWrite(false, false, false, false);\n\t}\n\tstatic createShadowCamera(device, shadowType, type, face) {\n\t\tconst shadowCam = LightCamera.create('ShadowCamera', type, face);\n\t\tif (shadowType >= SHADOW_VSM8 && shadowType <= SHADOW_VSM32) {\n\t\t\tshadowCam.clearColor = new Color(0, 0, 0, 0);\n\t\t} else {\n\t\t\tshadowCam.clearColor = new Color(1, 1, 1, 1);\n\t\t}\n\t\tshadowCam.clearDepthBuffer = true;\n\t\tshadowCam.clearStencilBuffer = false;\n\t\treturn shadowCam;\n\t}\n\tstatic setShadowCameraSettings(shadowCam, device, shadowType, type, isClustered) {\n\t\tlet hwPcf = shadowType === SHADOW_PCF5 || (shadowType === SHADOW_PCF1 || shadowType === SHADOW_PCF3) && device.supportsDepthShadow;\n\t\tif (type === LIGHTTYPE_OMNI && !isClustered) {\n\t\t\thwPcf = false;\n\t\t}\n\t\tshadowCam.clearColorBuffer = !hwPcf;\n\t}\n\t_cullShadowCastersInternal(meshInstances, visible, camera) {\n\t\tconst numInstances = meshInstances.length;\n\t\tfor (let i = 0; i < numInstances; i++) {\n\t\t\tconst meshInstance = meshInstances[i];\n\t\t\tif (meshInstance.castShadow) {\n\t\t\t\tif (!meshInstance.cull || meshInstance._isVisible(camera)) {\n\t\t\t\t\tmeshInstance.visibleThisFrame = true;\n\t\t\t\t\tvisible.push(meshInstance);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcullShadowCasters(comp, light, visible, camera, casters) {\n\t\tvisible.length = 0;\n\t\tif (casters) {\n\t\t\tthis._cullShadowCastersInternal(casters, visible, camera);\n\t\t} else {\n\t\t\tconst layers = comp.layerList;\n\t\t\tconst len = layers.length;\n\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\tconst layer = layers[i];\n\t\t\t\tif (layer._lightsSet.has(light)) {\n\t\t\t\t\tif (!tempSet.has(layer)) {\n\t\t\t\t\t\ttempSet.add(layer);\n\t\t\t\t\t\tthis._cullShadowCastersInternal(layer.shadowCasters, visible, camera);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttempSet.clear();\n\t\t}\n\t\tvisible.sort(this.renderer.sortCompareDepth);\n\t}\n\tsetupRenderState(device, light) {\n\t\tif (device.isWebGL1 && device.extStandardDerivatives) {\n\t\t\tif (light._type === LIGHTTYPE_OMNI) {\n\t\t\t\tthis.polygonOffset[0] = 0;\n\t\t\t\tthis.polygonOffset[1] = 0;\n\t\t\t\tthis.polygonOffsetId.setValue(this.polygonOffset);\n\t\t\t} else {\n\t\t\t\tthis.polygonOffset[0] = light.shadowBias * -1000.0;\n\t\t\t\tthis.polygonOffset[1] = light.shadowBias * -1000.0;\n\t\t\t\tthis.polygonOffsetId.setValue(this.polygonOffset);\n\t\t\t}\n\t\t}\n\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\tconst gpuOrGl2 = device.isWebGL2 || device.isWebGPU;\n\t\tconst useShadowSampler = isClustered ? light._isPcf && gpuOrGl2 : light._isPcf && gpuOrGl2 && light._type !== LIGHTTYPE_OMNI;\n\t\tdevice.setBlendState(useShadowSampler ? this.blendStateNoWrite : this.blendStateWrite);\n\t\tdevice.setDepthState(light.shadowDepthState);\n\t\tdevice.setStencilState(null, null);\n\t}\n\tdispatchUniforms(light, shadowCam, lightRenderData, face) {\n\t\tconst shadowCamNode = shadowCam._node;\n\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\tthis.renderer.dispatchViewPos(shadowCamNode.getPosition());\n\t\t\tthis.shadowMapLightRadiusId.setValue(light.attenuationEnd);\n\t\t}\n\t\tshadowCamView.setTRS(shadowCamNode.getPosition(), shadowCamNode.getRotation(), Vec3.ONE).invert();\n\t\tshadowCamViewProj.mul2(shadowCam.projectionMatrix, shadowCamView);\n\t\tconst rectViewport = lightRenderData.shadowViewport;\n\t\tshadowCam.rect = rectViewport;\n\t\tshadowCam.scissorRect = lightRenderData.shadowScissor;\n\t\tviewportMatrix.setViewport(rectViewport.x, rectViewport.y, rectViewport.z, rectViewport.w);\n\t\tlightRenderData.shadowMatrix.mul2(viewportMatrix, shadowCamViewProj);\n\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\tlight._shadowMatrixPalette.set(lightRenderData.shadowMatrix.data, face * 16);\n\t\t}\n\t}\n\tgetShadowPass(light) {\n\t\tvar _this$shadowPassCache;\n\t\tconst lightType = light._type;\n\t\tconst shadowType = light._shadowType;\n\t\tlet shadowPassInfo = (_this$shadowPassCache = this.shadowPassCache[lightType]) == null ? void 0 : _this$shadowPassCache[shadowType];\n\t\tif (!shadowPassInfo) {\n\t\t\tconst shadowPassName = `ShadowPass_${lightType}_${shadowType}`;\n\t\t\tshadowPassInfo = ShaderPass.get(this.device).allocate(shadowPassName, {\n\t\t\t\tisShadow: true,\n\t\t\t\tlightType: lightType,\n\t\t\t\tshadowType: shadowType\n\t\t\t});\n\t\t\tif (!this.shadowPassCache[lightType]) this.shadowPassCache[lightType] = [];\n\t\t\tthis.shadowPassCache[lightType][shadowType] = shadowPassInfo;\n\t\t}\n\t\treturn shadowPassInfo.index;\n\t}\n\tsubmitCasters(visibleCasters, light) {\n\t\tconst device = this.device;\n\t\tconst renderer = this.renderer;\n\t\tconst scene = renderer.scene;\n\t\tconst passFlags = 1 << SHADER_SHADOW;\n\t\tconst shadowPass = this.getShadowPass(light);\n\t\tconst count = visibleCasters.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst meshInstance = visibleCasters[i];\n\t\t\tconst mesh = meshInstance.mesh;\n\t\t\tmeshInstance.ensureMaterial(device);\n\t\t\tconst material = meshInstance.material;\n\t\t\trenderer.setBaseConstants(device, material);\n\t\t\trenderer.setSkinning(device, meshInstance);\n\t\t\tif (material.dirty) {\n\t\t\t\tmaterial.updateUniforms(device, scene);\n\t\t\t\tmaterial.dirty = false;\n\t\t\t}\n\t\t\tif (material.chunks) {\n\t\t\t\trenderer.setupCullMode(true, 1, meshInstance);\n\t\t\t\tmaterial.setParameters(device);\n\t\t\t\tmeshInstance.setParameters(device, passFlags);\n\t\t\t}\n\t\t\tconst shaderInstance = meshInstance.getShaderInstance(shadowPass, 0, scene, this.viewUniformFormat, this.viewBindGroupFormat);\n\t\t\tconst shadowShader = shaderInstance.shader;\n\t\t\tmeshInstance._key[SORTKEY_DEPTH] = shadowShader.id;\n\t\t\tdevice.setShader(shadowShader);\n\t\t\trenderer.setVertexBuffers(device, mesh);\n\t\t\trenderer.setMorphing(device, meshInstance.morphInstance);\n\t\t\tthis.renderer.setupMeshUniformBuffers(shaderInstance, meshInstance);\n\t\t\tconst style = meshInstance.renderStyle;\n\t\t\tdevice.setIndexBuffer(mesh.indexBuffer[style]);\n\t\t\trenderer.drawInstance(device, meshInstance, mesh, style);\n\t\t\trenderer._shadowDrawCalls++;\n\t\t}\n\t}\n\tneedsShadowRendering(light) {\n\t\tconst needs = light.enabled && light.castShadows && light.shadowUpdateMode !== SHADOWUPDATE_NONE && light.visibleThisFrame;\n\t\tif (light.shadowUpdateMode === SHADOWUPDATE_THISFRAME) {\n\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_NONE;\n\t\t}\n\t\tif (needs) {\n\t\t\tthis.renderer._shadowMapUpdates += light.numShadowFaces;\n\t\t}\n\t\treturn needs;\n\t}\n\tgetLightRenderData(light, camera, face) {\n\t\treturn light.getRenderData(light._type === LIGHTTYPE_DIRECTIONAL ? camera : null, face);\n\t}\n\tsetupRenderPass(renderPass, shadowCamera, clearRenderTarget) {\n\t\tconst rt = shadowCamera.renderTarget;\n\t\trenderPass.init(rt);\n\t\trenderPass.depthStencilOps.clearDepthValue = 1;\n\t\trenderPass.depthStencilOps.clearDepth = clearRenderTarget;\n\t\tif (rt.depthBuffer) {\n\t\t\trenderPass.depthStencilOps.storeDepth = true;\n\t\t} else {\n\t\t\trenderPass.colorOps.clearValue.copy(shadowCamera.clearColor);\n\t\t\trenderPass.colorOps.clear = clearRenderTarget;\n\t\t\trenderPass.depthStencilOps.storeDepth = false;\n\t\t}\n\t\trenderPass.requiresCubemaps = false;\n\t}\n\tprepareFace(light, camera, face) {\n\t\tconst type = light._type;\n\t\tconst shadowType = light._shadowType;\n\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\tconst lightRenderData = this.getLightRenderData(light, camera, face);\n\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\tShadowRenderer.setShadowCameraSettings(shadowCam, this.device, shadowType, type, isClustered);\n\t\tconst renderTargetIndex = type === LIGHTTYPE_DIRECTIONAL ? 0 : face;\n\t\tshadowCam.renderTarget = light._shadowMap.renderTargets[renderTargetIndex];\n\t\treturn shadowCam;\n\t}\n\trenderFace(light, camera, face, clear, insideRenderPass = true) {\n\t\tconst device = this.device;\n\t\tconst lightRenderData = this.getLightRenderData(light, camera, face);\n\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\tthis.dispatchUniforms(light, shadowCam, lightRenderData, face);\n\t\tconst rt = shadowCam.renderTarget;\n\t\tconst renderer = this.renderer;\n\t\trenderer.setCameraUniforms(shadowCam, rt);\n\t\tif (device.supportsUniformBuffers) {\n\t\t\trenderer.setupViewUniformBuffers(lightRenderData.viewBindGroups, this.viewUniformFormat, this.viewBindGroupFormat, 1);\n\t\t}\n\t\tif (insideRenderPass) {\n\t\t\trenderer.setupViewport(shadowCam, rt);\n\t\t\tif (clear) {\n\t\t\t\trenderer.clear(shadowCam);\n\t\t\t}\n\t\t} else {\n\t\t\trenderer.clearView(shadowCam, rt, true, false);\n\t\t}\n\t\tthis.setupRenderState(device, light);\n\t\tthis.submitCasters(lightRenderData.visibleCasters, light);\n\t}\n\trender(light, camera, insideRenderPass = true) {\n\t\tif (this.needsShadowRendering(light)) {\n\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\tfor (let face = 0; face < faceCount; face++) {\n\t\t\t\tthis.prepareFace(light, camera, face);\n\t\t\t\tthis.renderFace(light, camera, face, true, insideRenderPass);\n\t\t\t}\n\t\t\tthis.renderVsm(light, camera);\n\t\t}\n\t}\n\trenderVsm(light, camera) {\n\t\tif (light._isVsm && light._vsmBlurSize > 1) {\n\t\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\t\tif (!isClustered || light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\tthis.applyVsmBlur(light, camera);\n\t\t\t}\n\t\t}\n\t}\n\tgetVsmBlurShader(isVsm8, blurMode, filterSize) {\n\t\tlet blurShader = (isVsm8 ? this.blurPackedVsmShader : this.blurVsmShader)[blurMode][filterSize];\n\t\tif (!blurShader) {\n\t\t\tthis.blurVsmWeights[filterSize] = gaussWeights(filterSize);\n\t\t\tconst blurVS = shaderChunks.fullscreenQuadVS;\n\t\t\tlet blurFS = '#define SAMPLES ' + filterSize + '\\n';\n\t\t\tif (isVsm8) {\n\t\t\t\tblurFS += this.blurPackedVsmShaderCode[blurMode];\n\t\t\t} else {\n\t\t\t\tblurFS += this.blurVsmShaderCode[blurMode];\n\t\t\t}\n\t\t\tconst blurShaderName = 'blurVsm' + blurMode + '' + filterSize + '' + isVsm8;\n\t\t\tblurShader = createShaderFromCode(this.device, blurVS, blurFS, blurShaderName);\n\t\t\tif (isVsm8) {\n\t\t\t\tthis.blurPackedVsmShader[blurMode][filterSize] = blurShader;\n\t\t\t} else {\n\t\t\t\tthis.blurVsmShader[blurMode][filterSize] = blurShader;\n\t\t\t}\n\t\t}\n\t\treturn blurShader;\n\t}\n\tapplyVsmBlur(light, camera) {\n\t\tconst device = this.device;\n\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\tconst lightRenderData = light.getRenderData(light._type === LIGHTTYPE_DIRECTIONAL ? camera : null, 0);\n\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\tconst origShadowMap = shadowCam.renderTarget;\n\t\tconst tempShadowMap = this.renderer.shadowMapCache.get(device, light);\n\t\tconst tempRt = tempShadowMap.renderTargets[0];\n\t\tconst isVsm8 = light._shadowType === SHADOW_VSM8;\n\t\tconst blurMode = light.vsmBlurMode;\n\t\tconst filterSize = light._vsmBlurSize;\n\t\tconst blurShader = this.getVsmBlurShader(isVsm8, blurMode, filterSize);\n\t\tblurScissorRect.z = light._shadowResolution - 2;\n\t\tblurScissorRect.w = blurScissorRect.z;\n\t\tthis.sourceId.setValue(origShadowMap.colorBuffer);\n\t\tpixelOffset[0] = 1 / light._shadowResolution;\n\t\tpixelOffset[1] = 0;\n\t\tthis.pixelOffsetId.setValue(pixelOffset);\n\t\tif (blurMode === BLUR_GAUSSIAN) this.weightId.setValue(this.blurVsmWeights[filterSize]);\n\t\tdrawQuadWithShader(device, tempRt, blurShader, null, blurScissorRect);\n\t\tthis.sourceId.setValue(tempRt.colorBuffer);\n\t\tpixelOffset[1] = pixelOffset[0];\n\t\tpixelOffset[0] = 0;\n\t\tthis.pixelOffsetId.setValue(pixelOffset);\n\t\tdrawQuadWithShader(device, origShadowMap, blurShader, null, blurScissorRect);\n\t\tthis.renderer.shadowMapCache.add(light, tempShadowMap);\n\t}\n\tinitViewBindGroupFormat() {\n\t\tif (this.device.supportsUniformBuffers && !this.viewUniformFormat) {\n\t\t\tthis.viewUniformFormat = new UniformBufferFormat(this.device, [new UniformFormat(\"matrix_viewProjection\", UNIFORMTYPE_MAT4)]);\n\t\t\tthis.viewBindGroupFormat = new BindGroupFormat(this.device, [new BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)]);\n\t\t}\n\t}\n\tframeUpdate() {\n\t\tthis.initViewBindGroupFormat();\n\t}\n}\n\nexport { ShadowRenderer };\n", "import { WorldClusters } from '../lighting/world-clusters.js';\n\nconst tempClusterArray = [];\nclass WorldClustersAllocator {\n\tconstructor(graphicsDevice) {\n\t\tthis._empty = null;\n\t\tthis._allocated = [];\n\t\tthis._clusters = new Map();\n\t\tthis.device = graphicsDevice;\n\t}\n\tdestroy() {\n\t\tif (this._empty) {\n\t\t\tthis._empty.destroy();\n\t\t\tthis._empty = null;\n\t\t}\n\t\tthis._allocated.forEach(cluster => {\n\t\t\tcluster.destroy();\n\t\t});\n\t\tthis._allocated.length = 0;\n\t}\n\tget count() {\n\t\treturn this._allocated.length;\n\t}\n\tget empty() {\n\t\tif (!this._empty) {\n\t\t\tconst empty = new WorldClusters(this.device);\n\t\t\tempty.name = 'ClusterEmpty';\n\t\t\tempty.update([], false, null);\n\t\t\tthis._empty = empty;\n\t\t}\n\t\treturn this._empty;\n\t}\n\tassign(renderPasses) {\n\t\tconst empty = this.empty;\n\t\ttempClusterArray.push(...this._allocated);\n\t\tthis._allocated.length = 0;\n\t\tthis._clusters.clear();\n\t\tconst passCount = renderPasses.length;\n\t\tfor (let p = 0; p < passCount; p++) {\n\t\t\tconst renderPass = renderPasses[p];\n\t\t\tconst renderActions = renderPass.renderActions;\n\t\t\tif (renderActions) {\n\t\t\t\tconst count = renderActions.length;\n\t\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\t\tconst ra = renderActions[i];\n\t\t\t\t\tra.lightClusters = null;\n\t\t\t\t\tconst layer = ra.layer;\n\t\t\t\t\tif (layer.hasClusteredLights && layer.meshInstances.length) {\n\t\t\t\t\t\tconst hash = layer.getLightIdHash();\n\t\t\t\t\t\tconst existingRenderAction = this._clusters.get(hash);\n\t\t\t\t\t\tlet clusters = existingRenderAction == null ? void 0 : existingRenderAction.lightClusters;\n\t\t\t\t\t\tif (!clusters) {\n\t\t\t\t\t\t\tvar _tempClusterArray$pop;\n\t\t\t\t\t\t\tclusters = (_tempClusterArray$pop = tempClusterArray.pop()) != null ? _tempClusterArray$pop : new WorldClusters(this.device);\n\t\t\t\t\t\t\tthis._allocated.push(clusters);\n\t\t\t\t\t\t\tthis._clusters.set(hash, ra);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tra.lightClusters = clusters;\n\t\t\t\t\t}\n\t\t\t\t\tif (!ra.lightClusters) {\n\t\t\t\t\t\tra.lightClusters = empty;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttempClusterArray.forEach(item => item.destroy());\n\t\ttempClusterArray.length = 0;\n\t}\n\tupdate(renderPasses, gammaCorrection, lighting) {\n\t\tthis.assign(renderPasses);\n\t\tthis._clusters.forEach(renderAction => {\n\t\t\tconst layer = renderAction.layer;\n\t\t\tconst cluster = renderAction.lightClusters;\n\t\t\tcluster.update(layer.clusteredLightsSet, gammaCorrection, lighting);\n\t\t});\n\t}\n}\n\nexport { WorldClustersAllocator };\n", "import { Vec4 } from '../../core/math/vec4.js';\nimport { Mat4 } from '../../core/math/mat4.js';\nimport { CULLFACE_NONE } from '../../platform/graphics/constants.js';\nimport { LIGHTTYPE_DIRECTIONAL, LIGHTTYPE_OMNI } from '../constants.js';\nimport { createShaderFromCode } from '../shader-lib/utils.js';\nimport { LightCamera } from './light-camera.js';\nimport { BlendState } from '../../platform/graphics/blend-state.js';\nimport { QuadRender } from '../graphics/quad-render.js';\nimport { DepthState } from '../../platform/graphics/depth-state.js';\nimport { RenderPass } from '../../platform/graphics/render-pass.js';\n\nconst textureBlitVertexShader = `\n\tattribute vec2 vertex_position;\n\tvarying vec2 uv0;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\t\tuv0 = vertex_position.xy * 0.5 + 0.5;\n\t\t#ifndef WEBGPU\n\t\t\tuv0.y = 1.0 - uv0.y;\n\t\t#endif\n\t}`;\nconst textureBlitFragmentShader = `\n\tvarying vec2 uv0;\n\tuniform sampler2D blitTexture;\n\tvoid main(void) {\n\t\tgl_FragColor = texture2D(blitTexture, uv0);\n\t}`;\nconst textureCubeBlitFragmentShader = `\n\tvarying vec2 uv0;\n\tuniform samplerCube blitTexture;\n\tuniform mat4 invViewProj;\n\tvoid main(void) {\n\t\tvec4 projPos = vec4(uv0 * 2.0 - 1.0, 0.5, 1.0);\n\t\tvec4 worldPos = invViewProj * projPos;\n\t\tgl_FragColor = textureCube(blitTexture, worldPos.xyz);\n\t}`;\nconst _viewport = new Vec4();\nconst _invViewProjMatrices = [];\nclass RenderPassCookieRenderer extends RenderPass {\n\tconstructor(device, cubeSlotsOffsets) {\n\t\tsuper(device);\n\t\tthis._quadRenderer2D = null;\n\t\tthis._quadRendererCube = null;\n\t\tthis._filteredLights = [];\n\t\tthis._cubeSlotsOffsets = cubeSlotsOffsets;\n\t\tthis.requiresCubemaps = false;\n\t\tthis.blitTextureId = device.scope.resolve('blitTexture');\n\t\tthis.invViewProjId = device.scope.resolve('invViewProj');\n\t}\n\tdestroy() {\n\t\tvar _this$_quadRenderer2D, _this$_quadRendererCu;\n\t\t(_this$_quadRenderer2D = this._quadRenderer2D) == null || _this$_quadRenderer2D.destroy();\n\t\tthis._quadRenderer2D = null;\n\t\t(_this$_quadRendererCu = this._quadRendererCube) == null || _this$_quadRendererCu.destroy();\n\t\tthis._quadRendererCube = null;\n\t}\n\tstatic create(renderTarget, cubeSlotsOffsets) {\n\t\tconst renderPass = new RenderPassCookieRenderer(renderTarget.device, cubeSlotsOffsets);\n\t\trenderPass.init(renderTarget);\n\t\trenderPass.colorOps.clear = false;\n\t\trenderPass.depthStencilOps.clearDepth = false;\n\t\treturn renderPass;\n\t}\n\tupdate(lights) {\n\t\tconst filteredLights = this._filteredLights;\n\t\tthis.filter(lights, filteredLights);\n\t\tthis.executeEnabled = filteredLights.length > 0;\n\t}\n\tfilter(lights, filteredLights) {\n\t\tfor (let i = 0; i < lights.length; i++) {\n\t\t\tconst light = lights[i];\n\t\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) continue;\n\t\t\tif (!light.atlasViewportAllocated) continue;\n\t\t\tif (!light.atlasSlotUpdated) continue;\n\t\t\tif (light.enabled && light.cookie && light.visibleThisFrame) {\n\t\t\t\tfilteredLights.push(light);\n\t\t\t}\n\t\t}\n\t}\n\tinitInvViewProjMatrices() {\n\t\tif (!_invViewProjMatrices.length) {\n\t\t\tfor (let face = 0; face < 6; face++) {\n\t\t\t\tconst camera = LightCamera.create(null, LIGHTTYPE_OMNI, face);\n\t\t\t\tconst projMat = camera.projectionMatrix;\n\t\t\t\tconst viewMat = camera.node.getLocalTransform().clone().invert();\n\t\t\t\t_invViewProjMatrices[face] = new Mat4().mul2(projMat, viewMat).invert();\n\t\t\t}\n\t\t}\n\t}\n\tget quadRenderer2D() {\n\t\tif (!this._quadRenderer2D) {\n\t\t\tconst shader = createShaderFromCode(this.device, textureBlitVertexShader, textureBlitFragmentShader, `cookieRenderer2d`);\n\t\t\tthis._quadRenderer2D = new QuadRender(shader);\n\t\t}\n\t\treturn this._quadRenderer2D;\n\t}\n\tget quadRendererCube() {\n\t\tif (!this._quadRendererCube) {\n\t\t\tconst shader = createShaderFromCode(this.device, textureBlitVertexShader, textureCubeBlitFragmentShader, `cookieRendererCube`);\n\t\t\tthis._quadRendererCube = new QuadRender(shader);\n\t\t}\n\t\treturn this._quadRendererCube;\n\t}\n\texecute() {\n\t\tconst device = this.device;\n\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\tdevice.setStencilState();\n\t\tconst renderTargetWidth = this.renderTarget.colorBuffer.width;\n\t\tconst cubeSlotsOffsets = this._cubeSlotsOffsets;\n\t\tconst filteredLights = this._filteredLights;\n\t\tfor (let i = 0; i < filteredLights.length; i++) {\n\t\t\tconst light = filteredLights[i];\n\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\tconst quad = faceCount > 1 ? this.quadRendererCube : this.quadRenderer2D;\n\t\t\tif (faceCount > 1) {\n\t\t\t\tthis.initInvViewProjMatrices();\n\t\t\t}\n\t\t\tthis.blitTextureId.setValue(light.cookie);\n\t\t\tfor (let face = 0; face < faceCount; face++) {\n\t\t\t\t_viewport.copy(light.atlasViewport);\n\t\t\t\tif (faceCount > 1) {\n\t\t\t\t\tconst smallSize = _viewport.z / 3;\n\t\t\t\t\tconst offset = cubeSlotsOffsets[face];\n\t\t\t\t\t_viewport.x += smallSize * offset.x;\n\t\t\t\t\t_viewport.y += smallSize * offset.y;\n\t\t\t\t\t_viewport.z = smallSize;\n\t\t\t\t\t_viewport.w = smallSize;\n\t\t\t\t\tthis.invViewProjId.setValue(_invViewProjMatrices[face].data);\n\t\t\t\t}\n\t\t\t\t_viewport.mulScalar(renderTargetWidth);\n\t\t\t\tquad.render(_viewport);\n\t\t\t}\n\t\t}\n\t\tfilteredLights.length = 0;\n\t}\n}\n\nexport { RenderPassCookieRenderer };\n", "import { RenderPass } from '../../platform/graphics/render-pass.js';\n\nclass RenderPassShadowLocalClustered extends RenderPass {\n\tconstructor(device, shadowRenderer, shadowRendererLocal) {\n\t\tsuper(device);\n\t\tthis.requiresCubemaps = false;\n\t\tthis.shadowRenderer = shadowRenderer;\n\t\tthis.shadowRendererLocal = shadowRendererLocal;\n\t}\n\tupdate(localLights) {\n\t\tconst shadowLights = this.shadowRendererLocal.shadowLights;\n\t\tconst shadowCamera = this.shadowRendererLocal.prepareLights(shadowLights, localLights);\n\t\tconst count = shadowLights.length;\n\t\tthis.enabled = count > 0;\n\t\tif (count) {\n\t\t\tthis.shadowRenderer.setupRenderPass(this, shadowCamera, false);\n\t\t}\n\t}\n\texecute() {\n\t\tconst shadowLights = this.shadowRendererLocal.shadowLights;\n\t\tconst count = shadowLights.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst light = shadowLights[i];\n\t\t\tfor (let face = 0; face < light.numShadowFaces; face++) {\n\t\t\t\tthis.shadowRenderer.renderFace(light, null, face, true);\n\t\t\t}\n\t\t}\n\t\tshadowLights.length = 0;\n\t}\n}\n\nexport { RenderPassShadowLocalClustered };\n", "import { RenderPass } from '../../platform/graphics/render-pass.js';\nimport { RenderPassCookieRenderer } from './render-pass-cookie-renderer.js';\nimport { RenderPassShadowLocalClustered } from './render-pass-shadow-local-clustered.js';\n\nclass RenderPassUpdateClustered extends RenderPass {\n\tconstructor(device, renderer, shadowRenderer, shadowRendererLocal, lightTextureAtlas) {\n\t\tsuper(device);\n\t\tthis.renderer = renderer;\n\t\tthis.frameGraph = null;\n\t\tthis.cookiesRenderPass = RenderPassCookieRenderer.create(lightTextureAtlas.cookieRenderTarget, lightTextureAtlas.cubeSlotsOffsets);\n\t\tthis.beforePasses.push(this.cookiesRenderPass);\n\t\tthis.shadowRenderPass = new RenderPassShadowLocalClustered(device, shadowRenderer, shadowRendererLocal);\n\t\tthis.beforePasses.push(this.shadowRenderPass);\n\t}\n\tupdate(frameGraph, shadowsEnabled, cookiesEnabled, lights, localLights) {\n\t\tthis.frameGraph = frameGraph;\n\t\tthis.cookiesRenderPass.enabled = cookiesEnabled;\n\t\tif (cookiesEnabled) {\n\t\t\tthis.cookiesRenderPass.update(lights);\n\t\t}\n\t\tthis.shadowRenderPass.enabled = shadowsEnabled;\n\t\tif (shadowsEnabled) {\n\t\t\tthis.shadowRenderPass.update(localLights);\n\t\t}\n\t}\n\tdestroy() {\n\t\tthis.cookiesRenderPass.destroy();\n\t\tthis.cookiesRenderPass = null;\n\t}\n\texecute() {\n\t\tconst {\n\t\t\trenderer\n\t\t} = this;\n\t\tconst {\n\t\t\tscene\n\t\t} = renderer;\n\t\trenderer.worldClustersAllocator.update(this.frameGraph.renderPasses, scene.gammaCorrection, scene.lighting);\n\t}\n}\n\nexport { RenderPassUpdateClustered };\n", "import { Vec4 } from './vec4.js';\n\nconst base64String = \"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\";\nlet data = null;\nconst initData = () => {\n\tif (!data) {\n\t\tconst binaryString = atob(base64String);\n\t\tdata = Uint8Array.from(binaryString, char => char.charCodeAt(0));\n\t}\n};\nconst blueNoiseData = () => {\n\tinitData();\n\treturn data;\n};\nclass BlueNoise {\n\tconstructor(seed = 0) {\n\t\tthis.seed = 0;\n\t\tthis.seed = seed * 4;\n\t\tinitData();\n\t}\n\t_next() {\n\t\tthis.seed = (this.seed + 4) % data.length;\n\t}\n\tvalue() {\n\t\tthis._next();\n\t\treturn data[this.seed] / 255;\n\t}\n\tvec4(dest = new Vec4()) {\n\t\tthis._next();\n\t\treturn dest.set(data[this.seed], data[this.seed + 1], data[this.seed + 2], data[this.seed + 3]).mulScalar(1 / 255);\n\t}\n}\n\nexport { BlueNoise, blueNoiseData };\n", "import { blueNoiseData } from '../../core/math/blue-noise.js';\nimport { PIXELFORMAT_RGBA8, ADDRESS_REPEAT, TEXTURETYPE_DEFAULT, FILTER_NEAREST } from '../../platform/graphics/constants.js';\nimport { DeviceCache } from '../../platform/graphics/device-cache.js';\nimport { Texture } from '../../platform/graphics/texture.js';\n\nconst createTexture = (device, namePrefix, size, data) => {\n\tconst texture = new Texture(device, {\n\t\tname: `${namePrefix}${size}`,\n\t\twidth: size,\n\t\theight: size,\n\t\tformat: PIXELFORMAT_RGBA8,\n\t\taddressU: ADDRESS_REPEAT,\n\t\taddressV: ADDRESS_REPEAT,\n\t\ttype: TEXTURETYPE_DEFAULT,\n\t\tmagFilter: FILTER_NEAREST,\n\t\tminFilter: FILTER_NEAREST,\n\t\tanisotropy: 1,\n\t\tmipmaps: false\n\t});\n\ttexture.lock().set(data);\n\ttexture.unlock();\n\treturn texture;\n};\nconst deviceCacheBlueNoise = new DeviceCache();\nconst getBlueNoiseTexture = device => {\n\treturn deviceCacheBlueNoise.get(device, () => {\n\t\tconst data = blueNoiseData();\n\t\tconst size = Math.sqrt(data.length / 4);\n\t\treturn createTexture(device, \"BlueNoise\", size, data);\n\t});\n};\n\nexport { getBlueNoiseTexture };\n", "import { Vec2 } from '../../core/math/vec2.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { Vec4 } from '../../core/math/vec4.js';\nimport { Mat3 } from '../../core/math/mat3.js';\nimport { Mat4 } from '../../core/math/mat4.js';\nimport { BoundingSphere } from '../../core/shape/bounding-sphere.js';\nimport { SORTKEY_FORWARD, SORTKEY_DEPTH, VIEW_CENTER, PROJECTION_ORTHOGRAPHIC, LIGHTTYPE_DIRECTIONAL, SHADOWUPDATE_NONE, SHADOWUPDATE_THISFRAME } from '../constants.js';\nimport { LightTextureAtlas } from '../lighting/light-texture-atlas.js';\nimport { Material } from '../materials/material.js';\nimport { LightCube } from '../graphics/light-cube.js';\nimport { CLEARFLAG_COLOR, CLEARFLAG_DEPTH, CLEARFLAG_STENCIL, CULLFACE_FRONT, CULLFACE_BACK, CULLFACE_NONE, UNIFORMTYPE_MAT4, UNIFORMTYPE_MAT3, UNIFORMTYPE_VEC3, UNIFORMTYPE_FLOAT, UNIFORMTYPE_VEC2, UNIFORMTYPE_INT, UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX, SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_UNFILTERABLE_FLOAT, SAMPLETYPE_DEPTH, SAMPLETYPE_FLOAT, BINDGROUP_VIEW, BINDGROUP_MESH, SEMANTIC_ATTR } from '../../platform/graphics/constants.js';\nimport { UniformBuffer } from '../../platform/graphics/uniform-buffer.js';\nimport { BindGroup } from '../../platform/graphics/bind-group.js';\nimport { UniformFormat, UniformBufferFormat } from '../../platform/graphics/uniform-buffer-format.js';\nimport { BindUniformBufferFormat, BindTextureFormat, BindGroupFormat } from '../../platform/graphics/bind-group-format.js';\nimport { ShadowMapCache } from './shadow-map-cache.js';\nimport { ShadowRendererLocal } from './shadow-renderer-local.js';\nimport { ShadowRendererDirectional } from './shadow-renderer-directional.js';\nimport { ShadowRenderer } from './shadow-renderer.js';\nimport { WorldClustersAllocator } from './world-clusters-allocator.js';\nimport { RenderPassUpdateClustered } from './render-pass-update-clustered.js';\nimport { getBlueNoiseTexture } from '../graphics/noise-textures.js';\nimport { BlueNoise } from '../../core/math/blue-noise.js';\n\nlet _skinUpdateIndex = 0;\nconst viewProjMat = new Mat4();\nconst viewInvMat = new Mat4();\nconst viewMat = new Mat4();\nconst viewMat3 = new Mat3();\nconst tempSphere = new BoundingSphere();\nconst _flipYMat = new Mat4().setScale(1, -1, 1);\nconst _tempLightSet = new Set();\nconst _tempLayerSet = new Set();\nconst _fixProjRangeMat = new Mat4().set([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 1]);\nconst _haltonSequence = [new Vec2(0.5, 0.333333), new Vec2(0.25, 0.666667), new Vec2(0.75, 0.111111), new Vec2(0.125, 0.444444), new Vec2(0.625, 0.777778), new Vec2(0.375, 0.222222), new Vec2(0.875, 0.555556), new Vec2(0.0625, 0.888889), new Vec2(0.5625, 0.037037), new Vec2(0.3125, 0.370370), new Vec2(0.8125, 0.703704), new Vec2(0.1875, 0.148148), new Vec2(0.6875, 0.481481), new Vec2(0.4375, 0.814815), new Vec2(0.9375, 0.259259), new Vec2(0.03125, 0.592593)];\nconst _tempProjMat0 = new Mat4();\nconst _tempProjMat1 = new Mat4();\nconst _tempProjMat2 = new Mat4();\nconst _tempProjMat3 = new Mat4();\nconst _tempProjMat4 = new Mat4();\nconst _tempProjMat5 = new Mat4();\nconst _tempSet = new Set();\nconst _tempMeshInstances = [];\nconst _tempMeshInstancesSkinned = [];\nclass Renderer {\n\tconstructor(graphicsDevice) {\n\t\tthis.clustersDebugRendered = false;\n\t\tthis.processingMeshInstances = new Set();\n\t\tthis.worldClustersAllocator = void 0;\n\t\tthis.lights = [];\n\t\tthis.localLights = [];\n\t\tthis.cameraDirShadowLights = new Map();\n\t\tthis.dirLightShadows = new Map();\n\t\tthis.blueNoise = new BlueNoise(123);\n\t\tthis.device = graphicsDevice;\n\t\tthis.scene = null;\n\t\tthis.worldClustersAllocator = new WorldClustersAllocator(graphicsDevice);\n\t\tthis.lightTextureAtlas = new LightTextureAtlas(graphicsDevice);\n\t\tthis.shadowMapCache = new ShadowMapCache();\n\t\tthis.shadowRenderer = new ShadowRenderer(this, this.lightTextureAtlas);\n\t\tthis._shadowRendererLocal = new ShadowRendererLocal(this, this.shadowRenderer);\n\t\tthis._shadowRendererDirectional = new ShadowRendererDirectional(this, this.shadowRenderer);\n\t\tthis._renderPassUpdateClustered = new RenderPassUpdateClustered(this.device, this, this.shadowRenderer, this._shadowRendererLocal, this.lightTextureAtlas);\n\t\tthis.viewUniformFormat = null;\n\t\tthis.viewBindGroupFormat = null;\n\t\tthis._skinTime = 0;\n\t\tthis._morphTime = 0;\n\t\tthis._cullTime = 0;\n\t\tthis._shadowMapTime = 0;\n\t\tthis._lightClustersTime = 0;\n\t\tthis._layerCompositionUpdateTime = 0;\n\t\tthis._shadowDrawCalls = 0;\n\t\tthis._skinDrawCalls = 0;\n\t\tthis._instancedDrawCalls = 0;\n\t\tthis._shadowMapUpdates = 0;\n\t\tthis._numDrawCallsCulled = 0;\n\t\tthis._camerasRendered = 0;\n\t\tthis._lightClusters = 0;\n\t\tconst scope = graphicsDevice.scope;\n\t\tthis.boneTextureId = scope.resolve('texture_poseMap');\n\t\tthis.boneTextureSizeId = scope.resolve('texture_poseMapSize');\n\t\tthis.poseMatrixId = scope.resolve('matrix_pose[0]');\n\t\tthis.modelMatrixId = scope.resolve('matrix_model');\n\t\tthis.normalMatrixId = scope.resolve('matrix_normal');\n\t\tthis.viewInvId = scope.resolve('matrix_viewInverse');\n\t\tthis.viewPos = new Float32Array(3);\n\t\tthis.viewPosId = scope.resolve('view_position');\n\t\tthis.projId = scope.resolve('matrix_projection');\n\t\tthis.projSkyboxId = scope.resolve('matrix_projectionSkybox');\n\t\tthis.viewId = scope.resolve('matrix_view');\n\t\tthis.viewId3 = scope.resolve('matrix_view3');\n\t\tthis.viewProjId = scope.resolve('matrix_viewProjection');\n\t\tthis.flipYId = scope.resolve('projectionFlipY');\n\t\tthis.tbnBasis = scope.resolve('tbnBasis');\n\t\tthis.nearClipId = scope.resolve('camera_near');\n\t\tthis.farClipId = scope.resolve('camera_far');\n\t\tthis.cameraParams = new Float32Array(4);\n\t\tthis.cameraParamsId = scope.resolve('camera_params');\n\t\tthis.viewIndexId = scope.resolve('view_index');\n\t\tthis.blueNoiseJitterVersion = 0;\n\t\tthis.blueNoiseJitterVec = new Vec4();\n\t\tthis.blueNoiseJitterData = new Float32Array(4);\n\t\tthis.blueNoiseJitterId = scope.resolve('blueNoiseJitter');\n\t\tthis.blueNoiseTextureId = scope.resolve('blueNoiseTex32');\n\t\tthis.alphaTestId = scope.resolve('alpha_ref');\n\t\tthis.opacityMapId = scope.resolve('texture_opacityMap');\n\t\tthis.exposureId = scope.resolve('exposure');\n\t\tthis.twoSidedLightingNegScaleFactorId = scope.resolve('twoSidedLightingNegScaleFactor');\n\t\tthis.twoSidedLightingNegScaleFactorId.setValue(0);\n\t\tthis.morphWeightsA = scope.resolve('morph_weights_a');\n\t\tthis.morphWeightsB = scope.resolve('morph_weights_b');\n\t\tthis.morphPositionTex = scope.resolve('morphPositionTex');\n\t\tthis.morphNormalTex = scope.resolve('morphNormalTex');\n\t\tthis.morphTexParams = scope.resolve('morph_tex_params');\n\t\tthis.lightCube = new LightCube();\n\t\tthis.constantLightCube = scope.resolve('lightCube[0]');\n\t}\n\tdestroy() {\n\t\tthis.shadowRenderer = null;\n\t\tthis._shadowRendererLocal = null;\n\t\tthis._shadowRendererDirectional = null;\n\t\tthis.shadowMapCache.destroy();\n\t\tthis.shadowMapCache = null;\n\t\tthis._renderPassUpdateClustered.destroy();\n\t\tthis._renderPassUpdateClustered = null;\n\t\tthis.lightTextureAtlas.destroy();\n\t\tthis.lightTextureAtlas = null;\n\t}\n\tsortCompare(drawCallA, drawCallB) {\n\t\tif (drawCallA.layer === drawCallB.layer) {\n\t\t\tif (drawCallA.drawOrder && drawCallB.drawOrder) {\n\t\t\t\treturn drawCallA.drawOrder - drawCallB.drawOrder;\n\t\t\t} else if (drawCallA.zdist && drawCallB.zdist) {\n\t\t\t\treturn drawCallB.zdist - drawCallA.zdist;\n\t\t\t} else if (drawCallA.zdist2 && drawCallB.zdist2) {\n\t\t\t\treturn drawCallA.zdist2 - drawCallB.zdist2;\n\t\t\t}\n\t\t}\n\t\treturn drawCallB._key[SORTKEY_FORWARD] - drawCallA._key[SORTKEY_FORWARD];\n\t}\n\tsortCompareMesh(drawCallA, drawCallB) {\n\t\tif (drawCallA.layer === drawCallB.layer) {\n\t\t\tif (drawCallA.drawOrder && drawCallB.drawOrder) {\n\t\t\t\treturn drawCallA.drawOrder - drawCallB.drawOrder;\n\t\t\t} else if (drawCallA.zdist && drawCallB.zdist) {\n\t\t\t\treturn drawCallB.zdist - drawCallA.zdist;\n\t\t\t}\n\t\t}\n\t\tconst keyA = drawCallA._key[SORTKEY_FORWARD];\n\t\tconst keyB = drawCallB._key[SORTKEY_FORWARD];\n\t\tif (keyA === keyB && drawCallA.mesh && drawCallB.mesh) {\n\t\t\treturn drawCallB.mesh.id - drawCallA.mesh.id;\n\t\t}\n\t\treturn keyB - keyA;\n\t}\n\tsortCompareDepth(drawCallA, drawCallB) {\n\t\tconst keyA = drawCallA._key[SORTKEY_DEPTH];\n\t\tconst keyB = drawCallB._key[SORTKEY_DEPTH];\n\t\tif (keyA === keyB && drawCallA.mesh && drawCallB.mesh) {\n\t\t\treturn drawCallB.mesh.id - drawCallA.mesh.id;\n\t\t}\n\t\treturn keyB - keyA;\n\t}\n\tsetupViewport(camera, renderTarget) {\n\t\tconst device = this.device;\n\t\tconst pixelWidth = renderTarget ? renderTarget.width : device.width;\n\t\tconst pixelHeight = renderTarget ? renderTarget.height : device.height;\n\t\tconst rect = camera.rect;\n\t\tlet x = Math.floor(rect.x * pixelWidth);\n\t\tlet y = Math.floor(rect.y * pixelHeight);\n\t\tlet w = Math.floor(rect.z * pixelWidth);\n\t\tlet h = Math.floor(rect.w * pixelHeight);\n\t\tdevice.setViewport(x, y, w, h);\n\t\tif (camera._scissorRectClear) {\n\t\t\tconst scissorRect = camera.scissorRect;\n\t\t\tx = Math.floor(scissorRect.x * pixelWidth);\n\t\t\ty = Math.floor(scissorRect.y * pixelHeight);\n\t\t\tw = Math.floor(scissorRect.z * pixelWidth);\n\t\t\th = Math.floor(scissorRect.w * pixelHeight);\n\t\t}\n\t\tdevice.setScissor(x, y, w, h);\n\t}\n\tsetCameraUniforms(camera, target) {\n\t\tconst flipY = target == null ? void 0 : target.flipY;\n\t\tlet viewCount = 1;\n\t\tif (camera.xr && camera.xr.session) {\n\t\t\tvar _camera$_node;\n\t\t\tconst transform = ((_camera$_node = camera._node) == null || (_camera$_node = _camera$_node.parent) == null ? void 0 : _camera$_node.getWorldTransform()) || null;\n\t\t\tconst views = camera.xr.views;\n\t\t\tviewCount = views.list.length;\n\t\t\tfor (let v = 0; v < viewCount; v++) {\n\t\t\t\tconst view = views.list[v];\n\t\t\t\tview.updateTransforms(transform);\n\t\t\t\tcamera.frustum.setFromMat4(view.projViewOffMat);\n\t\t\t}\n\t\t} else {\n\t\t\tlet projMat = camera.projectionMatrix;\n\t\t\tif (camera.calculateProjection) {\n\t\t\t\tcamera.calculateProjection(projMat, VIEW_CENTER);\n\t\t\t}\n\t\t\tlet projMatSkybox = camera.getProjectionMatrixSkybox();\n\t\t\tif (flipY) {\n\t\t\t\tprojMat = _tempProjMat0.mul2(_flipYMat, projMat);\n\t\t\t\tprojMatSkybox = _tempProjMat1.mul2(_flipYMat, projMatSkybox);\n\t\t\t}\n\t\t\tif (this.device.isWebGPU) {\n\t\t\t\tprojMat = _tempProjMat2.mul2(_fixProjRangeMat, projMat);\n\t\t\t\tprojMatSkybox = _tempProjMat3.mul2(_fixProjRangeMat, projMatSkybox);\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tjitter\n\t\t\t} = camera;\n\t\t\tlet jitterX = 0;\n\t\t\tlet jitterY = 0;\n\t\t\tif (jitter > 0) {\n\t\t\t\tconst targetWidth = target ? target.width : this.device.width;\n\t\t\t\tconst targetHeight = target ? target.height : this.device.height;\n\t\t\t\tconst offset = _haltonSequence[this.device.renderVersion % _haltonSequence.length];\n\t\t\t\tjitterX = jitter * (offset.x * 2 - 1) / targetWidth;\n\t\t\t\tjitterY = jitter * (offset.y * 2 - 1) / targetHeight;\n\t\t\t\tprojMat = _tempProjMat4.copy(projMat);\n\t\t\t\tprojMat.data[8] = jitterX;\n\t\t\t\tprojMat.data[9] = jitterY;\n\t\t\t\tprojMatSkybox = _tempProjMat5.copy(projMatSkybox);\n\t\t\t\tprojMatSkybox.data[8] = jitterX;\n\t\t\t\tprojMatSkybox.data[9] = jitterY;\n\t\t\t\tif (this.blueNoiseJitterVersion !== this.device.renderVersion) {\n\t\t\t\t\tthis.blueNoiseJitterVersion = this.device.renderVersion;\n\t\t\t\t\tthis.blueNoise.vec4(this.blueNoiseJitterVec);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst jitterVec = jitter > 0 ? this.blueNoiseJitterVec : Vec4.ZERO;\n\t\t\tthis.blueNoiseJitterData[0] = jitterVec.x;\n\t\t\tthis.blueNoiseJitterData[1] = jitterVec.y;\n\t\t\tthis.blueNoiseJitterData[2] = jitterVec.z;\n\t\t\tthis.blueNoiseJitterData[3] = jitterVec.w;\n\t\t\tthis.blueNoiseJitterId.setValue(this.blueNoiseJitterData);\n\t\t\tthis.projId.setValue(projMat.data);\n\t\t\tthis.projSkyboxId.setValue(projMatSkybox.data);\n\t\t\tif (camera.calculateTransform) {\n\t\t\t\tcamera.calculateTransform(viewInvMat, VIEW_CENTER);\n\t\t\t} else {\n\t\t\t\tconst pos = camera._node.getPosition();\n\t\t\t\tconst rot = camera._node.getRotation();\n\t\t\t\tviewInvMat.setTRS(pos, rot, Vec3.ONE);\n\t\t\t}\n\t\t\tthis.viewInvId.setValue(viewInvMat.data);\n\t\t\tviewMat.copy(viewInvMat).invert();\n\t\t\tthis.viewId.setValue(viewMat.data);\n\t\t\tviewMat3.setFromMat4(viewMat);\n\t\t\tthis.viewId3.setValue(viewMat3.data);\n\t\t\tviewProjMat.mul2(projMat, viewMat);\n\t\t\tthis.viewProjId.setValue(viewProjMat.data);\n\t\t\tcamera._storeShaderMatrices(viewProjMat, jitterX, jitterY, this.device.renderVersion);\n\t\t\tthis.flipYId.setValue(flipY ? -1 : 1);\n\t\t\tthis.dispatchViewPos(camera._node.getPosition());\n\t\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t\t}\n\t\tthis.tbnBasis.setValue(flipY ? -1 : 1);\n\t\tconst n = camera._nearClip;\n\t\tconst f = camera._farClip;\n\t\tthis.nearClipId.setValue(n);\n\t\tthis.farClipId.setValue(f);\n\t\tthis.cameraParams[0] = 1 / f;\n\t\tthis.cameraParams[1] = f;\n\t\tthis.cameraParams[2] = n;\n\t\tthis.cameraParams[3] = camera.projection === PROJECTION_ORTHOGRAPHIC ? 1 : 0;\n\t\tthis.cameraParamsId.setValue(this.cameraParams);\n\t\tthis.exposureId.setValue(this.scene.physicalUnits ? camera.getExposure() : this.scene.exposure);\n\t\treturn viewCount;\n\t}\n\tclear(camera, clearColor, clearDepth, clearStencil) {\n\t\tconst flags = ((clearColor != null ? clearColor : camera._clearColorBuffer) ? CLEARFLAG_COLOR : 0) | ((clearDepth != null ? clearDepth : camera._clearDepthBuffer) ? CLEARFLAG_DEPTH : 0) | ((clearStencil != null ? clearStencil : camera._clearStencilBuffer) ? CLEARFLAG_STENCIL : 0);\n\t\tif (flags) {\n\t\t\tconst device = this.device;\n\t\t\tdevice.clear({\n\t\t\t\tcolor: [camera._clearColor.r, camera._clearColor.g, camera._clearColor.b, camera._clearColor.a],\n\t\t\t\tdepth: camera._clearDepth,\n\t\t\t\tstencil: camera._clearStencil,\n\t\t\t\tflags: flags\n\t\t\t});\n\t\t}\n\t}\n\tsetCamera(camera, target, clear, renderAction = null) {\n\t\tthis.setCameraUniforms(camera, target);\n\t\tthis.clearView(camera, target, clear, false);\n\t}\n\tclearView(camera, target, clear, forceWrite) {\n\t\tconst device = this.device;\n\t\tdevice.setRenderTarget(target);\n\t\tdevice.updateBegin();\n\t\tif (forceWrite) {\n\t\t\tdevice.setColorWrite(true, true, true, true);\n\t\t\tdevice.setDepthWrite(true);\n\t\t}\n\t\tthis.setupViewport(camera, target);\n\t\tif (clear) {\n\t\t\tconst options = camera._clearOptions;\n\t\t\tdevice.clear(options ? options : {\n\t\t\t\tcolor: [camera._clearColor.r, camera._clearColor.g, camera._clearColor.b, camera._clearColor.a],\n\t\t\t\tdepth: camera._clearDepth,\n\t\t\t\tflags: (camera._clearColorBuffer ? CLEARFLAG_COLOR : 0) | (camera._clearDepthBuffer ? CLEARFLAG_DEPTH : 0) | (camera._clearStencilBuffer ? CLEARFLAG_STENCIL : 0),\n\t\t\t\tstencil: camera._clearStencil\n\t\t\t});\n\t\t}\n\t}\n\tsetupCullMode(cullFaces, flipFactor, drawCall) {\n\t\tconst material = drawCall.material;\n\t\tlet mode = CULLFACE_NONE;\n\t\tif (cullFaces) {\n\t\t\tlet flipFaces = 1;\n\t\t\tif (material.cull === CULLFACE_FRONT || material.cull === CULLFACE_BACK) {\n\t\t\t\tflipFaces = flipFactor * drawCall.flipFacesFactor * drawCall.node.worldScaleSign;\n\t\t\t}\n\t\t\tif (flipFaces < 0) {\n\t\t\t\tmode = material.cull === CULLFACE_FRONT ? CULLFACE_BACK : CULLFACE_FRONT;\n\t\t\t} else {\n\t\t\t\tmode = material.cull;\n\t\t\t}\n\t\t}\n\t\tthis.device.setCullMode(mode);\n\t\tif (mode === CULLFACE_NONE && material.cull === CULLFACE_NONE) {\n\t\t\tthis.twoSidedLightingNegScaleFactorId.setValue(drawCall.node.worldScaleSign);\n\t\t}\n\t}\n\tupdateCameraFrustum(camera) {\n\t\tif (camera.xr && camera.xr.views.list.length) {\n\t\t\tconst view = camera.xr.views.list[0];\n\t\t\tviewProjMat.mul2(view.projMat, view.viewOffMat);\n\t\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t\t\treturn;\n\t\t}\n\t\tconst projMat = camera.projectionMatrix;\n\t\tif (camera.calculateProjection) {\n\t\t\tcamera.calculateProjection(projMat, VIEW_CENTER);\n\t\t}\n\t\tif (camera.calculateTransform) {\n\t\t\tcamera.calculateTransform(viewInvMat, VIEW_CENTER);\n\t\t} else {\n\t\t\tconst pos = camera._node.getPosition();\n\t\t\tconst rot = camera._node.getRotation();\n\t\t\tviewInvMat.setTRS(pos, rot, Vec3.ONE);\n\t\t\tthis.viewInvId.setValue(viewInvMat.data);\n\t\t}\n\t\tviewMat.copy(viewInvMat).invert();\n\t\tviewProjMat.mul2(projMat, viewMat);\n\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t}\n\tsetBaseConstants(device, material) {\n\t\tdevice.setCullMode(material.cull);\n\t\tif (material.opacityMap) {\n\t\t\tthis.opacityMapId.setValue(material.opacityMap);\n\t\t}\n\t\tif (material.opacityMap || material.alphaTest > 0) {\n\t\t\tthis.alphaTestId.setValue(material.alphaTest);\n\t\t}\n\t}\n\tupdateCpuSkinMatrices(drawCalls) {\n\t\t_skinUpdateIndex++;\n\t\tconst drawCallsCount = drawCalls.length;\n\t\tif (drawCallsCount === 0) return;\n\t\tfor (let i = 0; i < drawCallsCount; i++) {\n\t\t\tconst si = drawCalls[i].skinInstance;\n\t\t\tif (si) {\n\t\t\t\tsi.updateMatrices(drawCalls[i].node, _skinUpdateIndex);\n\t\t\t\tsi._dirty = true;\n\t\t\t}\n\t\t}\n\t}\n\tupdateGpuSkinMatrices(drawCalls) {\n\t\tfor (const drawCall of drawCalls) {\n\t\t\tconst skin = drawCall.skinInstance;\n\t\t\tif (skin && skin._dirty) {\n\t\t\t\tskin.updateMatrixPalette(drawCall.node, _skinUpdateIndex);\n\t\t\t\tskin._dirty = false;\n\t\t\t}\n\t\t}\n\t}\n\tupdateMorphing(drawCalls) {\n\t\tfor (const drawCall of drawCalls) {\n\t\t\tconst morphInst = drawCall.morphInstance;\n\t\t\tif (morphInst && morphInst._dirty) {\n\t\t\t\tmorphInst.update();\n\t\t\t}\n\t\t}\n\t}\n\tupdateGSplats(drawCalls) {\n\t\tfor (const drawCall of drawCalls) {\n\t\t\tvar _drawCall$gsplatInsta;\n\t\t\t(_drawCall$gsplatInsta = drawCall.gsplatInstance) == null || _drawCall$gsplatInsta.update();\n\t\t}\n\t}\n\tgpuUpdate(drawCalls) {\n\t\tthis.updateGpuSkinMatrices(drawCalls);\n\t\tthis.updateMorphing(drawCalls);\n\t\tthis.updateGSplats(drawCalls);\n\t}\n\tsetVertexBuffers(device, mesh) {\n\t\tdevice.setVertexBuffer(mesh.vertexBuffer);\n\t}\n\tsetMorphing(device, morphInstance) {\n\t\tif (morphInstance) {\n\t\t\tif (morphInstance.morph.useTextureMorph) {\n\t\t\t\tdevice.setVertexBuffer(morphInstance.morph.vertexBufferIds);\n\t\t\t\tthis.morphPositionTex.setValue(morphInstance.texturePositions);\n\t\t\t\tthis.morphNormalTex.setValue(morphInstance.textureNormals);\n\t\t\t\tthis.morphTexParams.setValue(morphInstance._textureParams);\n\t\t\t} else {\n\t\t\t\tfor (let t = 0; t < morphInstance._activeVertexBuffers.length; t++) {\n\t\t\t\t\tconst vb = morphInstance._activeVertexBuffers[t];\n\t\t\t\t\tif (vb) {\n\t\t\t\t\t\tconst semantic = SEMANTIC_ATTR + (t + 8);\n\t\t\t\t\t\tvb.format.elements[0].name = semantic;\n\t\t\t\t\t\tvb.format.elements[0].scopeId = device.scope.resolve(semantic);\n\t\t\t\t\t\tvb.format.update();\n\t\t\t\t\t\tdevice.setVertexBuffer(vb);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.morphWeightsA.setValue(morphInstance._shaderMorphWeightsA);\n\t\t\t\tthis.morphWeightsB.setValue(morphInstance._shaderMorphWeightsB);\n\t\t\t}\n\t\t}\n\t}\n\tsetSkinning(device, meshInstance) {\n\t\tconst skinInstance = meshInstance.skinInstance;\n\t\tif (skinInstance) {\n\t\t\tthis._skinDrawCalls++;\n\t\t\tif (device.supportsBoneTextures) {\n\t\t\t\tconst boneTexture = skinInstance.boneTexture;\n\t\t\t\tthis.boneTextureId.setValue(boneTexture);\n\t\t\t\tthis.boneTextureSizeId.setValue(skinInstance.boneTextureSize);\n\t\t\t} else {\n\t\t\t\tthis.poseMatrixId.setValue(skinInstance.matrixPalette);\n\t\t\t}\n\t\t}\n\t}\n\tdispatchViewPos(position) {\n\t\tconst vp = this.viewPos;\n\t\tvp[0] = position.x;\n\t\tvp[1] = position.y;\n\t\tvp[2] = position.z;\n\t\tthis.viewPosId.setValue(vp);\n\t}\n\tinitViewBindGroupFormat(isClustered) {\n\t\tif (this.device.supportsUniformBuffers && !this.viewUniformFormat) {\n\t\t\tconst uniforms = [new UniformFormat(\"matrix_viewProjection\", UNIFORMTYPE_MAT4), new UniformFormat(\"cubeMapRotationMatrix\", UNIFORMTYPE_MAT3), new UniformFormat(\"view_position\", UNIFORMTYPE_VEC3), new UniformFormat(\"skyboxIntensity\", UNIFORMTYPE_FLOAT), new UniformFormat(\"exposure\", UNIFORMTYPE_FLOAT), new UniformFormat(\"textureBias\", UNIFORMTYPE_FLOAT)];\n\t\t\tif (isClustered) {\n\t\t\t\tuniforms.push(...[new UniformFormat(\"clusterCellsCountByBoundsSize\", UNIFORMTYPE_VEC3), new UniformFormat(\"clusterTextureSize\", UNIFORMTYPE_VEC3), new UniformFormat(\"clusterBoundsMin\", UNIFORMTYPE_VEC3), new UniformFormat(\"clusterBoundsDelta\", UNIFORMTYPE_VEC3), new UniformFormat(\"clusterCellsDot\", UNIFORMTYPE_VEC3), new UniformFormat(\"clusterCellsMax\", UNIFORMTYPE_VEC3), new UniformFormat(\"clusterCompressionLimit0\", UNIFORMTYPE_VEC2), new UniformFormat(\"shadowAtlasParams\", UNIFORMTYPE_VEC2), new UniformFormat(\"clusterMaxCells\", UNIFORMTYPE_INT), new UniformFormat(\"clusterSkip\", UNIFORMTYPE_FLOAT)]);\n\t\t\t}\n\t\t\tthis.viewUniformFormat = new UniformBufferFormat(this.device, uniforms);\n\t\t\tconst formats = [new BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT), new BindTextureFormat('lightsTextureFloat', SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_UNFILTERABLE_FLOAT), new BindTextureFormat('lightsTexture8', SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_UNFILTERABLE_FLOAT), new BindTextureFormat('shadowAtlasTexture', SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_DEPTH), new BindTextureFormat('cookieAtlasTexture', SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_FLOAT), new BindTextureFormat('areaLightsLutTex1', SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_FLOAT), new BindTextureFormat('areaLightsLutTex2', SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_FLOAT)];\n\t\t\tif (isClustered) {\n\t\t\t\tformats.push(...[new BindTextureFormat('clusterWorldTexture', SHADERSTAGE_FRAGMENT, TEXTUREDIMENSION_2D, SAMPLETYPE_UNFILTERABLE_FLOAT)]);\n\t\t\t}\n\t\t\tthis.viewBindGroupFormat = new BindGroupFormat(this.device, formats);\n\t\t}\n\t}\n\tsetupViewUniformBuffers(viewBindGroups, viewUniformFormat, viewBindGroupFormat, viewCount) {\n\t\tconst device = this.device;\n\t\twhile (viewBindGroups.length < viewCount) {\n\t\t\tconst ub = new UniformBuffer(device, viewUniformFormat, false);\n\t\t\tconst bg = new BindGroup(device, viewBindGroupFormat, ub);\n\t\t\tviewBindGroups.push(bg);\n\t\t}\n\t\tconst viewBindGroup = viewBindGroups[0];\n\t\tviewBindGroup.defaultUniformBuffer.update();\n\t\tviewBindGroup.update();\n\t\tdevice.setBindGroup(BINDGROUP_VIEW, viewBindGroup);\n\t}\n\tsetupMeshUniformBuffers(shaderInstance, meshInstance) {\n\t\tconst device = this.device;\n\t\tif (device.supportsUniformBuffers) {\n\t\t\tthis.modelMatrixId.setValue(meshInstance.node.worldTransform.data);\n\t\t\tthis.normalMatrixId.setValue(meshInstance.node.normalMatrix.data);\n\t\t\tconst meshBindGroup = shaderInstance.getBindGroup(device);\n\t\t\tmeshBindGroup.defaultUniformBuffer.update();\n\t\t\tmeshBindGroup.update();\n\t\t\tdevice.setBindGroup(BINDGROUP_MESH, meshBindGroup);\n\t\t}\n\t}\n\tdrawInstance(device, meshInstance, mesh, style, normal) {\n\t\tconst modelMatrix = meshInstance.node.worldTransform;\n\t\tthis.modelMatrixId.setValue(modelMatrix.data);\n\t\tif (normal) {\n\t\t\tthis.normalMatrixId.setValue(meshInstance.node.normalMatrix.data);\n\t\t}\n\t\tconst instancingData = meshInstance.instancingData;\n\t\tif (instancingData) {\n\t\t\tif (instancingData.count > 0) {\n\t\t\t\tthis._instancedDrawCalls++;\n\t\t\t\tdevice.setVertexBuffer(instancingData.vertexBuffer);\n\t\t\t\tdevice.draw(mesh.primitive[style], instancingData.count);\n\t\t\t} else {\n\t\t\t\tdevice.clearVertexBuffer();\n\t\t\t}\n\t\t} else {\n\t\t\tdevice.draw(mesh.primitive[style]);\n\t\t}\n\t}\n\tdrawInstance2(device, meshInstance, mesh, style) {\n\t\tconst instancingData = meshInstance.instancingData;\n\t\tif (instancingData) {\n\t\t\tif (instancingData.count > 0) {\n\t\t\t\tthis._instancedDrawCalls++;\n\t\t\t\tdevice.draw(mesh.primitive[style], instancingData.count, true);\n\t\t\t} else {\n\t\t\t\tdevice.clearVertexBuffer();\n\t\t\t}\n\t\t} else {\n\t\t\tdevice.draw(mesh.primitive[style], undefined, true);\n\t\t}\n\t}\n\tcull(camera, drawCalls, culledInstances) {\n\t\tconst opaque = culledInstances.opaque;\n\t\topaque.length = 0;\n\t\tconst transparent = culledInstances.transparent;\n\t\ttransparent.length = 0;\n\t\tconst doCull = camera.frustumCulling;\n\t\tconst count = drawCalls.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst drawCall = drawCalls[i];\n\t\t\tif (drawCall.visible) {\n\t\t\t\tconst visible = !doCull || !drawCall.cull || drawCall._isVisible(camera);\n\t\t\t\tif (visible) {\n\t\t\t\t\tdrawCall.visibleThisFrame = true;\n\t\t\t\t\tconst bucket = drawCall.transparent ? transparent : opaque;\n\t\t\t\t\tbucket.push(drawCall);\n\t\t\t\t\tif (drawCall.skinInstance || drawCall.morphInstance || drawCall.gsplatInstance) {\n\t\t\t\t\t\tthis.processingMeshInstances.add(drawCall);\n\t\t\t\t\t\tif (drawCall.gsplatInstance) {\n\t\t\t\t\t\t\tdrawCall.gsplatInstance.cameras.push(camera);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcollectLights(comp) {\n\t\tthis.lights.length = 0;\n\t\tthis.localLights.length = 0;\n\t\tconst stats = this.scene._stats;\n\t\tconst count = comp.layerList.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst layer = comp.layerList[i];\n\t\t\tif (!_tempLayerSet.has(layer)) {\n\t\t\t\t_tempLayerSet.add(layer);\n\t\t\t\tconst lights = layer._lights;\n\t\t\t\tfor (let j = 0; j < lights.length; j++) {\n\t\t\t\t\tconst light = lights[j];\n\t\t\t\t\tif (!_tempLightSet.has(light)) {\n\t\t\t\t\t\t_tempLightSet.add(light);\n\t\t\t\t\t\tthis.lights.push(light);\n\t\t\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\tthis.localLights.push(light);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tstats.lights = this.lights.length;\n\t\t_tempLightSet.clear();\n\t\t_tempLayerSet.clear();\n\t}\n\tcullLights(camera, lights) {\n\t\tconst clusteredLightingEnabled = this.scene.clusteredLightingEnabled;\n\t\tconst physicalUnits = this.scene.physicalUnits;\n\t\tfor (let i = 0; i < lights.length; i++) {\n\t\t\tconst light = lights[i];\n\t\t\tif (light.enabled) {\n\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\tlight.getBoundingSphere(tempSphere);\n\t\t\t\t\tif (camera.frustum.containsSphere(tempSphere)) {\n\t\t\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\t\t\tlight.usePhysicalUnits = physicalUnits;\n\t\t\t\t\t\tconst screenSize = camera.getScreenSize(tempSphere);\n\t\t\t\t\t\tlight.maxScreenSize = Math.max(light.maxScreenSize, screenSize);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!clusteredLightingEnabled) {\n\t\t\t\t\t\t\tif (light.castShadows && !light.shadowMap) {\n\t\t\t\t\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlight.usePhysicalUnits = this.scene.physicalUnits;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcullShadowmaps(comp) {\n\t\tconst isClustered = this.scene.clusteredLightingEnabled;\n\t\tfor (let i = 0; i < this.localLights.length; i++) {\n\t\t\tconst light = this.localLights[i];\n\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\tif (isClustered) {\n\t\t\t\t\tif (light.atlasSlotUpdated && light.shadowUpdateMode === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (light.shadowUpdateMode === SHADOWUPDATE_NONE && light.castShadows) {\n\t\t\t\t\t\tif (!light.getRenderData(null, 0).shadowCamera.renderTarget) {\n\t\t\t\t\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (light.visibleThisFrame && light.castShadows && light.shadowUpdateMode !== SHADOWUPDATE_NONE) {\n\t\t\t\t\tthis._shadowRendererLocal.cull(light, comp);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.cameraDirShadowLights.clear();\n\t\tconst cameras = comp.cameras;\n\t\tfor (let i = 0; i < cameras.length; i++) {\n\t\t\tconst cameraComponent = cameras[i];\n\t\t\tif (cameraComponent.enabled) {\n\t\t\t\tconst camera = cameraComponent.camera;\n\t\t\t\tlet lightList;\n\t\t\t\tconst cameraLayers = camera.layers;\n\t\t\t\tfor (let l = 0; l < cameraLayers.length; l++) {\n\t\t\t\t\tconst cameraLayer = comp.getLayerById(cameraLayers[l]);\n\t\t\t\t\tif (cameraLayer) {\n\t\t\t\t\t\tconst layerDirLights = cameraLayer.splitLights[LIGHTTYPE_DIRECTIONAL];\n\t\t\t\t\t\tfor (let j = 0; j < layerDirLights.length; j++) {\n\t\t\t\t\t\t\tconst light = layerDirLights[j];\n\t\t\t\t\t\t\tif (light.castShadows && !_tempSet.has(light)) {\n\t\t\t\t\t\t\t\tvar _lightList;\n\t\t\t\t\t\t\t\t_tempSet.add(light);\n\t\t\t\t\t\t\t\tlightList = (_lightList = lightList) != null ? _lightList : [];\n\t\t\t\t\t\t\t\tlightList.push(light);\n\t\t\t\t\t\t\t\tthis._shadowRendererDirectional.cull(light, comp, camera);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lightList) {\n\t\t\t\t\tthis.cameraDirShadowLights.set(camera, lightList);\n\t\t\t\t}\n\t\t\t\t_tempSet.clear();\n\t\t\t}\n\t\t}\n\t}\n\tcullComposition(comp) {\n\t\tthis.processingMeshInstances.clear();\n\t\tconst numCameras = comp.cameras.length;\n\t\tfor (let i = 0; i < numCameras; i++) {\n\t\t\tconst camera = comp.cameras[i];\n\t\t\tlet currentRenderTarget;\n\t\t\tlet cameraChanged = true;\n\t\t\tthis._camerasRendered++;\n\t\t\tconst layerIds = camera.layers;\n\t\t\tfor (let j = 0; j < layerIds.length; j++) {\n\t\t\t\tconst layer = comp.getLayerById(layerIds[j]);\n\t\t\t\tif (layer && layer.enabled) {\n\t\t\t\t\tvar _camera$renderTarget;\n\t\t\t\t\tconst renderTarget = (_camera$renderTarget = camera.renderTarget) != null ? _camera$renderTarget : layer.renderTarget;\n\t\t\t\t\tif (cameraChanged || renderTarget !== currentRenderTarget) {\n\t\t\t\t\t\tcameraChanged = false;\n\t\t\t\t\t\tcurrentRenderTarget = renderTarget;\n\t\t\t\t\t\tcamera.frameUpdate(renderTarget);\n\t\t\t\t\t\tthis.updateCameraFrustum(camera.camera);\n\t\t\t\t\t}\n\t\t\t\t\tthis.cullLights(camera.camera, layer._lights);\n\t\t\t\t\tlayer.onPreCull == null || layer.onPreCull(comp.camerasMap.get(camera));\n\t\t\t\t\tconst culledInstances = layer.getCulledInstances(camera.camera);\n\t\t\t\t\tthis.cull(camera.camera, layer.meshInstances, culledInstances);\n\t\t\t\t\tlayer.onPostCull == null || layer.onPostCull(comp.camerasMap.get(camera));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.scene.clusteredLightingEnabled) {\n\t\t\tthis.updateLightTextureAtlas();\n\t\t}\n\t\tthis.cullShadowmaps(comp);\n\t}\n\tupdateShaders(drawCalls, onlyLitShaders) {\n\t\tconst count = drawCalls.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst mat = drawCalls[i].material;\n\t\t\tif (mat) {\n\t\t\t\tif (!_tempSet.has(mat)) {\n\t\t\t\t\t_tempSet.add(mat);\n\t\t\t\t\tif (mat.getShaderVariant !== Material.prototype.getShaderVariant) {\n\t\t\t\t\t\tif (onlyLitShaders) {\n\t\t\t\t\t\t\tif (!mat.useLighting || mat.emitter && !mat.emitter.lighting) continue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmat.clearVariants();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_tempSet.clear();\n\t}\n\tupdateFrameUniforms() {\n\t\tthis.blueNoiseTextureId.setValue(getBlueNoiseTexture(this.device));\n\t}\n\tbeginFrame(comp) {\n\t\tconst scene = this.scene;\n\t\tconst updateShaders = scene.updateShaders;\n\t\tconst layers = comp.layerList;\n\t\tconst layerCount = layers.length;\n\t\tfor (let i = 0; i < layerCount; i++) {\n\t\t\tconst layer = layers[i];\n\t\t\tconst meshInstances = layer.meshInstances;\n\t\t\tconst count = meshInstances.length;\n\t\t\tfor (let j = 0; j < count; j++) {\n\t\t\t\tconst meshInst = meshInstances[j];\n\t\t\t\tmeshInst.visibleThisFrame = false;\n\t\t\t\tif (updateShaders) {\n\t\t\t\t\t_tempMeshInstances.push(meshInst);\n\t\t\t\t}\n\t\t\t\tif (meshInst.skinInstance) {\n\t\t\t\t\t_tempMeshInstancesSkinned.push(meshInst);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (updateShaders) {\n\t\t\tconst onlyLitShaders = !scene.updateShaders;\n\t\t\tthis.updateShaders(_tempMeshInstances, onlyLitShaders);\n\t\t\tscene.updateShaders = false;\n\t\t\tscene._shaderVersion++;\n\t\t}\n\t\tthis.updateFrameUniforms();\n\t\tthis.updateCpuSkinMatrices(_tempMeshInstancesSkinned);\n\t\t_tempMeshInstances.length = 0;\n\t\t_tempMeshInstancesSkinned.length = 0;\n\t\tconst lights = this.lights;\n\t\tconst lightCount = lights.length;\n\t\tfor (let i = 0; i < lightCount; i++) {\n\t\t\tlights[i].beginFrame();\n\t\t}\n\t}\n\tupdateLightTextureAtlas() {\n\t\tthis.lightTextureAtlas.update(this.localLights, this.scene.lighting);\n\t}\n\tupdateLayerComposition(comp) {\n\t\tconst len = comp.layerList.length;\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tcomp.layerList[i]._postRenderCounter = 0;\n\t\t}\n\t\tconst scene = this.scene;\n\t\tconst shaderVersion = scene._shaderVersion;\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst layer = comp.layerList[i];\n\t\t\tlayer._shaderVersion = shaderVersion;\n\t\t\tlayer._preRenderCalledForCameras = 0;\n\t\t\tlayer._postRenderCalledForCameras = 0;\n\t\t\tconst transparent = comp.subLayerList[i];\n\t\t\tif (transparent) {\n\t\t\t\tlayer._postRenderCounter |= 2;\n\t\t\t} else {\n\t\t\t\tlayer._postRenderCounter |= 1;\n\t\t\t}\n\t\t\tlayer._postRenderCounterMax = layer._postRenderCounter;\n\t\t}\n\t\tcomp._update();\n\t}\n\tframeUpdate() {\n\t\tthis.clustersDebugRendered = false;\n\t\tthis.initViewBindGroupFormat(this.scene.clusteredLightingEnabled);\n\t\tthis.dirLightShadows.clear();\n\t}\n}\n\nexport { Renderer };\n", "class RenderAction {\n\tconstructor() {\n\t\tthis.layer = null;\n\t\tthis.transparent = false;\n\t\tthis.camera = null;\n\t\tthis.renderTarget = null;\n\t\tthis.lightClusters = null;\n\t\tthis.clearColor = false;\n\t\tthis.clearDepth = false;\n\t\tthis.clearStencil = false;\n\t\tthis.triggerPostprocess = false;\n\t\tthis.firstCameraUse = false;\n\t\tthis.lastCameraUse = false;\n\t\tthis.viewBindGroups = [];\n\t\tthis.useCameraPasses = false;\n\t}\n\tdestroy() {\n\t\tthis.viewBindGroups.forEach(bg => {\n\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\tbg.destroy();\n\t\t});\n\t\tthis.viewBindGroups.length = 0;\n\t}\n\tsetupClears(camera, layer) {\n\t\tthis.clearColor = (camera == null ? void 0 : camera.clearColorBuffer) || layer.clearColorBuffer;\n\t\tthis.clearDepth = (camera == null ? void 0 : camera.clearDepthBuffer) || layer.clearDepthBuffer;\n\t\tthis.clearStencil = (camera == null ? void 0 : camera.clearStencilBuffer) || layer.clearStencilBuffer;\n\t}\n}\n\nexport { RenderAction };\n", "import { BlendState } from '../../platform/graphics/blend-state.js';\nimport { RenderPass } from '../../platform/graphics/render-pass.js';\nimport { RenderAction } from '../composition/render-action.js';\n\nclass RenderPassForward extends RenderPass {\n\tconstructor(device, layerComposition, scene, renderer) {\n\t\tsuper(device);\n\t\tthis.layerComposition = void 0;\n\t\tthis.scene = void 0;\n\t\tthis.renderer = void 0;\n\t\tthis.renderActions = [];\n\t\tthis.noDepthClear = false;\n\t\tthis.layerComposition = layerComposition;\n\t\tthis.scene = scene;\n\t\tthis.renderer = renderer;\n\t}\n\taddRenderAction(renderAction) {\n\t\tthis.renderActions.push(renderAction);\n\t}\n\taddLayer(cameraComponent, layer, transparent, autoClears = true) {\n\t\tconst ra = new RenderAction();\n\t\tra.renderTarget = this.renderTarget;\n\t\tra.camera = cameraComponent;\n\t\tra.layer = layer;\n\t\tra.transparent = transparent;\n\t\tif (autoClears) {\n\t\t\tconst firstRa = this.renderActions.length === 0;\n\t\t\tra.setupClears(firstRa ? cameraComponent : undefined, layer);\n\t\t}\n\t\tthis.addRenderAction(ra);\n\t}\n\taddLayers(composition, cameraComponent, startIndex, firstLayerClears, lastLayerId, lastLayerIsTransparent = true) {\n\t\tconst {\n\t\t\tlayerList,\n\t\t\tsubLayerEnabled,\n\t\t\tsubLayerList\n\t\t} = composition;\n\t\tlet clearRenderTarget = firstLayerClears;\n\t\tlet index = startIndex;\n\t\twhile (index < layerList.length) {\n\t\t\tconst layer = layerList[index];\n\t\t\tconst isTransparent = subLayerList[index];\n\t\t\tconst enabled = layer.enabled && subLayerEnabled[index];\n\t\t\tconst renderedbyCamera = cameraComponent.camera.layersSet.has(layer.id);\n\t\t\tif (enabled && renderedbyCamera) {\n\t\t\t\tthis.addLayer(cameraComponent, layer, isTransparent, clearRenderTarget);\n\t\t\t\tclearRenderTarget = false;\n\t\t\t}\n\t\t\tindex++;\n\t\t\tif (layer.id === lastLayerId && isTransparent === lastLayerIsTransparent) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t}\n\tupdateDirectionalShadows() {\n\t\tconst {\n\t\t\trenderer,\n\t\t\trenderActions\n\t\t} = this;\n\t\tfor (let i = 0; i < renderActions.length; i++) {\n\t\t\tconst renderAction = renderActions[i];\n\t\t\tconst cameraComp = renderAction.camera;\n\t\t\tconst camera = cameraComp.camera;\n\t\t\tconst shadowDirLights = this.renderer.cameraDirShadowLights.get(camera);\n\t\t\tif (shadowDirLights) {\n\t\t\t\tfor (let l = 0; l < shadowDirLights.length; l++) {\n\t\t\t\t\tconst light = shadowDirLights[l];\n\t\t\t\t\tif (renderer.dirLightShadows.get(light) !== camera) {\n\t\t\t\t\t\trenderer.dirLightShadows.set(light, camera);\n\t\t\t\t\t\tconst shadowPass = renderer._shadowRendererDirectional.getLightRenderPass(light, camera);\n\t\t\t\t\t\tif (shadowPass) {\n\t\t\t\t\t\t\tthis.beforePasses.push(shadowPass);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tupdateClears() {\n\t\tconst renderAction = this.renderActions[0];\n\t\tif (renderAction) {\n\t\t\tconst cameraComponent = renderAction.camera;\n\t\t\tconst camera = cameraComponent.camera;\n\t\t\tconst fullSizeClearRect = camera.fullSizeClearRect;\n\t\t\tthis.setClearColor(fullSizeClearRect && renderAction.clearColor ? camera.clearColor : undefined);\n\t\t\tthis.setClearDepth(fullSizeClearRect && renderAction.clearDepth && !this.noDepthClear ? camera.clearDepth : undefined);\n\t\t\tthis.setClearStencil(fullSizeClearRect && renderAction.clearStencil ? camera.clearStencil : undefined);\n\t\t}\n\t}\n\tframeUpdate() {\n\t\tsuper.frameUpdate();\n\t\tthis.updateDirectionalShadows();\n\t\tthis.updateClears();\n\t}\n\tbefore() {\n\t\tconst {\n\t\t\trenderActions\n\t\t} = this;\n\t\tif (renderActions.length) {\n\t\t\tconst ra = renderActions[0];\n\t\t\tif (ra.camera.onPreRender && ra.firstCameraUse) {\n\t\t\t\tra.camera.onPreRender();\n\t\t\t}\n\t\t}\n\t}\n\texecute() {\n\t\tconst {\n\t\t\tlayerComposition,\n\t\t\trenderActions\n\t\t} = this;\n\t\tfor (let i = 0; i < renderActions.length; i++) {\n\t\t\tconst ra = renderActions[i];\n\t\t\tif (layerComposition.isEnabled(ra.layer, ra.transparent)) {\n\t\t\t\tthis.renderRenderAction(ra, i === 0);\n\t\t\t}\n\t\t}\n\t}\n\tafter() {\n\t\tconst {\n\t\t\trenderActions\n\t\t} = this;\n\t\tif (renderActions.length) {\n\t\t\tconst ra = renderActions[renderActions.length - 1];\n\t\t\tif (ra.camera.onPostRender && ra.lastCameraUse) {\n\t\t\t\tra.camera.onPostRender();\n\t\t\t}\n\t\t}\n\t\tthis.beforePasses.length = 0;\n\t}\n\trenderRenderAction(renderAction, firstRenderAction) {\n\t\tconst {\n\t\t\trenderer,\n\t\t\tlayerComposition\n\t\t} = this;\n\t\tconst device = renderer.device;\n\t\tconst {\n\t\t\tlayer,\n\t\t\ttransparent,\n\t\t\tcamera\n\t\t} = renderAction;\n\t\tconst cameraPass = layerComposition.camerasMap.get(camera);\n\t\tif (!transparent && layer.onPreRenderOpaque) {\n\t\t\tlayer.onPreRenderOpaque(cameraPass);\n\t\t} else if (transparent && layer.onPreRenderTransparent) {\n\t\t\tlayer.onPreRenderTransparent(cameraPass);\n\t\t}\n\t\tif (!(layer._preRenderCalledForCameras & 1 << cameraPass)) {\n\t\t\tif (layer.onPreRender) {\n\t\t\t\tlayer.onPreRender(cameraPass);\n\t\t\t}\n\t\t\tlayer._preRenderCalledForCameras |= 1 << cameraPass;\n\t\t}\n\t\tif (camera) {\n\t\t\tvar _camera$camera$shader, _camera$camera$shader2;\n\t\t\tconst options = {\n\t\t\t\tlightClusters: renderAction.lightClusters\n\t\t\t};\n\t\t\tconst shaderPass = (_camera$camera$shader = (_camera$camera$shader2 = camera.camera.shaderPassInfo) == null ? void 0 : _camera$camera$shader2.index) != null ? _camera$camera$shader : layer.shaderPass;\n\t\t\tif (!firstRenderAction || !camera.camera.fullSizeClearRect) {\n\t\t\t\toptions.clearColor = renderAction.clearColor;\n\t\t\t\toptions.clearDepth = renderAction.clearDepth;\n\t\t\t\toptions.clearStencil = renderAction.clearStencil;\n\t\t\t}\n\t\t\trenderer.renderForwardLayer(camera.camera, renderAction.renderTarget, layer, transparent, shaderPass, renderAction.viewBindGroups, options);\n\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\tdevice.setStencilState(null, null);\n\t\t\tdevice.setAlphaToCoverage(false);\n\t\t}\n\t\tif (!transparent && layer.onPostRenderOpaque) {\n\t\t\tlayer.onPostRenderOpaque(cameraPass);\n\t\t} else if (transparent && layer.onPostRenderTransparent) {\n\t\t\tlayer.onPostRenderTransparent(cameraPass);\n\t\t}\n\t\tif (layer.onPostRender && !(layer._postRenderCalledForCameras & 1 << cameraPass)) {\n\t\t\tlayer._postRenderCounter &= ~(transparent ? 2 : 1);\n\t\t\tif (layer._postRenderCounter === 0) {\n\t\t\t\tlayer.onPostRender(cameraPass);\n\t\t\t\tlayer._postRenderCalledForCameras |= 1 << cameraPass;\n\t\t\t\tlayer._postRenderCounter = layer._postRenderCounterMax;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { RenderPassForward };\n", "import { RenderPass } from '../../platform/graphics/render-pass.js';\n\nclass RenderPassPostprocessing extends RenderPass {\n\tconstructor(device, renderer, renderAction) {\n\t\tsuper(device);\n\t\tthis.renderer = renderer;\n\t\tthis.renderAction = renderAction;\n\t\tthis.requiresCubemaps = false;\n\t}\n\texecute() {\n\t\tconst renderAction = this.renderAction;\n\t\tconst camera = renderAction.camera;\n\t\tcamera.onPostprocessing();\n\t}\n}\n\nexport { RenderPassPostprocessing };\n", "import { Vec3 } from '../../core/math/vec3.js';\nimport { LIGHTSHAPE_PUNCTUAL, LIGHTTYPE_OMNI, LIGHTTYPE_SPOT, LIGHTTYPE_DIRECTIONAL, FOG_NONE, FOG_LINEAR, LAYERID_DEPTH } from '../constants.js';\nimport { Renderer } from './renderer.js';\nimport { LightCamera } from './light-camera.js';\nimport { RenderPassForward } from './render-pass-forward.js';\nimport { RenderPassPostprocessing } from './render-pass-postprocessing.js';\n\nconst _noLights = [[], [], []];\nconst _drawCallList = {\n\tdrawCalls: [],\n\tshaderInstances: [],\n\tisNewMaterial: [],\n\tlightMaskChanged: [],\n\tclear: function () {\n\t\tthis.drawCalls.length = 0;\n\t\tthis.shaderInstances.length = 0;\n\t\tthis.isNewMaterial.length = 0;\n\t\tthis.lightMaskChanged.length = 0;\n\t}\n};\nfunction vogelDiskPrecalculationSamples(numSamples) {\n\tconst samples = [];\n\tfor (let i = 0; i < numSamples; ++i) {\n\t\tconst r = Math.sqrt(i + 0.5) / Math.sqrt(numSamples);\n\t\tsamples.push(r);\n\t}\n\treturn samples;\n}\nfunction vogelSpherePrecalculationSamples(numSamples) {\n\tconst samples = [];\n\tfor (let i = 0; i < numSamples; i++) {\n\t\tconst weight = i / numSamples;\n\t\tconst radius = Math.sqrt(1.0 - weight * weight);\n\t\tsamples.push(radius);\n\t}\n\treturn samples;\n}\nclass ForwardRenderer extends Renderer {\n\tconstructor(graphicsDevice) {\n\t\tsuper(graphicsDevice);\n\t\tconst device = this.device;\n\t\tthis._forwardDrawCalls = 0;\n\t\tthis._materialSwitches = 0;\n\t\tthis._depthMapTime = 0;\n\t\tthis._forwardTime = 0;\n\t\tthis._sortTime = 0;\n\t\tconst scope = device.scope;\n\t\tthis.fogColorId = scope.resolve('fog_color');\n\t\tthis.fogStartId = scope.resolve('fog_start');\n\t\tthis.fogEndId = scope.resolve('fog_end');\n\t\tthis.fogDensityId = scope.resolve('fog_density');\n\t\tthis.ambientId = scope.resolve('light_globalAmbient');\n\t\tthis.skyboxIntensityId = scope.resolve('skyboxIntensity');\n\t\tthis.cubeMapRotationMatrixId = scope.resolve('cubeMapRotationMatrix');\n\t\tthis.pcssDiskSamplesId = scope.resolve('pcssDiskSamples[0]');\n\t\tthis.pcssSphereSamplesId = scope.resolve('pcssSphereSamples[0]');\n\t\tthis.lightColorId = [];\n\t\tthis.lightDir = [];\n\t\tthis.lightDirId = [];\n\t\tthis.lightShadowMapId = [];\n\t\tthis.lightShadowMatrixId = [];\n\t\tthis.lightShadowParamsId = [];\n\t\tthis.lightShadowIntensity = [];\n\t\tthis.lightRadiusId = [];\n\t\tthis.lightPos = [];\n\t\tthis.lightPosId = [];\n\t\tthis.lightWidth = [];\n\t\tthis.lightWidthId = [];\n\t\tthis.lightHeight = [];\n\t\tthis.lightHeightId = [];\n\t\tthis.lightInAngleId = [];\n\t\tthis.lightOutAngleId = [];\n\t\tthis.lightCookieId = [];\n\t\tthis.lightCookieIntId = [];\n\t\tthis.lightCookieMatrixId = [];\n\t\tthis.lightCookieOffsetId = [];\n\t\tthis.lightShadowSearchAreaId = [];\n\t\tthis.lightCameraParamsId = [];\n\t\tthis.shadowMatrixPaletteId = [];\n\t\tthis.shadowCascadeDistancesId = [];\n\t\tthis.shadowCascadeCountId = [];\n\t\tthis.screenSizeId = scope.resolve('uScreenSize');\n\t\tthis._screenSize = new Float32Array(4);\n\t\tthis.fogColor = new Float32Array(3);\n\t\tthis.ambientColor = new Float32Array(3);\n\t\tthis.pcssDiskSamples = vogelDiskPrecalculationSamples(16);\n\t\tthis.pcssSphereSamples = vogelSpherePrecalculationSamples(16);\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t}\n\tdispatchGlobalLights(scene) {\n\t\tthis.ambientColor[0] = scene.ambientLight.r;\n\t\tthis.ambientColor[1] = scene.ambientLight.g;\n\t\tthis.ambientColor[2] = scene.ambientLight.b;\n\t\tif (scene.gammaCorrection) {\n\t\t\tfor (let i = 0; i < 3; i++) {\n\t\t\t\tthis.ambientColor[i] = Math.pow(this.ambientColor[i], 2.2);\n\t\t\t}\n\t\t}\n\t\tif (scene.physicalUnits) {\n\t\t\tfor (let i = 0; i < 3; i++) {\n\t\t\t\tthis.ambientColor[i] *= scene.ambientLuminance;\n\t\t\t}\n\t\t}\n\t\tthis.ambientId.setValue(this.ambientColor);\n\t\tthis.skyboxIntensityId.setValue(scene.physicalUnits ? scene.skyboxLuminance : scene.skyboxIntensity);\n\t\tthis.cubeMapRotationMatrixId.setValue(scene._skyboxRotationMat3.data);\n\t}\n\t_resolveLight(scope, i) {\n\t\tconst light = 'light' + i;\n\t\tthis.lightColorId[i] = scope.resolve(light + '_color');\n\t\tthis.lightDir[i] = new Float32Array(3);\n\t\tthis.lightDirId[i] = scope.resolve(light + '_direction');\n\t\tthis.lightShadowMapId[i] = scope.resolve(light + '_shadowMap');\n\t\tthis.lightShadowMatrixId[i] = scope.resolve(light + '_shadowMatrix');\n\t\tthis.lightShadowParamsId[i] = scope.resolve(light + '_shadowParams');\n\t\tthis.lightShadowIntensity[i] = scope.resolve(light + '_shadowIntensity');\n\t\tthis.lightShadowSearchAreaId[i] = scope.resolve(light + '_shadowSearchArea');\n\t\tthis.lightRadiusId[i] = scope.resolve(light + '_radius');\n\t\tthis.lightPos[i] = new Float32Array(3);\n\t\tthis.lightPosId[i] = scope.resolve(light + '_position');\n\t\tthis.lightWidth[i] = new Float32Array(3);\n\t\tthis.lightWidthId[i] = scope.resolve(light + '_halfWidth');\n\t\tthis.lightHeight[i] = new Float32Array(3);\n\t\tthis.lightHeightId[i] = scope.resolve(light + '_halfHeight');\n\t\tthis.lightInAngleId[i] = scope.resolve(light + '_innerConeAngle');\n\t\tthis.lightOutAngleId[i] = scope.resolve(light + '_outerConeAngle');\n\t\tthis.lightCookieId[i] = scope.resolve(light + '_cookie');\n\t\tthis.lightCookieIntId[i] = scope.resolve(light + '_cookieIntensity');\n\t\tthis.lightCookieMatrixId[i] = scope.resolve(light + '_cookieMatrix');\n\t\tthis.lightCookieOffsetId[i] = scope.resolve(light + '_cookieOffset');\n\t\tthis.lightCameraParamsId[i] = scope.resolve(light + '_cameraParams');\n\t\tthis.shadowMatrixPaletteId[i] = scope.resolve(light + '_shadowMatrixPalette[0]');\n\t\tthis.shadowCascadeDistancesId[i] = scope.resolve(light + '_shadowCascadeDistances[0]');\n\t\tthis.shadowCascadeCountId[i] = scope.resolve(light + '_shadowCascadeCount');\n\t}\n\tsetLTCDirectionalLight(wtm, cnt, dir, campos, far) {\n\t\tthis.lightPos[cnt][0] = campos.x - dir.x * far;\n\t\tthis.lightPos[cnt][1] = campos.y - dir.y * far;\n\t\tthis.lightPos[cnt][2] = campos.z - dir.z * far;\n\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\tconst hWidth = wtm.transformVector(new Vec3(-0.5, 0, 0));\n\t\tthis.lightWidth[cnt][0] = hWidth.x * far;\n\t\tthis.lightWidth[cnt][1] = hWidth.y * far;\n\t\tthis.lightWidth[cnt][2] = hWidth.z * far;\n\t\tthis.lightWidthId[cnt].setValue(this.lightWidth[cnt]);\n\t\tconst hHeight = wtm.transformVector(new Vec3(0, 0, 0.5));\n\t\tthis.lightHeight[cnt][0] = hHeight.x * far;\n\t\tthis.lightHeight[cnt][1] = hHeight.y * far;\n\t\tthis.lightHeight[cnt][2] = hHeight.z * far;\n\t\tthis.lightHeightId[cnt].setValue(this.lightHeight[cnt]);\n\t}\n\tdispatchDirectLights(dirs, scene, mask, camera) {\n\t\tlet cnt = 0;\n\t\tconst scope = this.device.scope;\n\t\tfor (let i = 0; i < dirs.length; i++) {\n\t\t\tif (!(dirs[i].mask & mask)) continue;\n\t\t\tconst directional = dirs[i];\n\t\t\tconst wtm = directional._node.getWorldTransform();\n\t\t\tif (!this.lightColorId[cnt]) {\n\t\t\t\tthis._resolveLight(scope, cnt);\n\t\t\t}\n\t\t\tthis.lightColorId[cnt].setValue(scene.gammaCorrection ? directional._linearFinalColor : directional._finalColor);\n\t\t\twtm.getY(directional._direction).mulScalar(-1);\n\t\t\tdirectional._direction.normalize();\n\t\t\tthis.lightDir[cnt][0] = directional._direction.x;\n\t\t\tthis.lightDir[cnt][1] = directional._direction.y;\n\t\t\tthis.lightDir[cnt][2] = directional._direction.z;\n\t\t\tthis.lightDirId[cnt].setValue(this.lightDir[cnt]);\n\t\t\tif (directional.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\tthis.setLTCDirectionalLight(wtm, cnt, directional._direction, camera._node.getPosition(), camera.farClip);\n\t\t\t}\n\t\t\tif (directional.castShadows) {\n\t\t\t\tconst lightRenderData = directional.getRenderData(camera, 0);\n\t\t\t\tconst biases = directional._getUniformBiasValues(lightRenderData);\n\t\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(lightRenderData.shadowMatrix.data);\n\t\t\t\tthis.shadowMatrixPaletteId[cnt].setValue(directional._shadowMatrixPalette);\n\t\t\t\tthis.shadowCascadeDistancesId[cnt].setValue(directional._shadowCascadeDistances);\n\t\t\t\tthis.shadowCascadeCountId[cnt].setValue(directional.numCascades);\n\t\t\t\tthis.lightShadowIntensity[cnt].setValue(directional.shadowIntensity);\n\t\t\t\tconst projectionCompensation = 50.0 / lightRenderData.projectionCompensation;\n\t\t\t\tconst pixelsPerMeter = directional.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;\n\t\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter * projectionCompensation);\n\t\t\t\tconst cameraParams = directional._shadowCameraParams;\n\t\t\t\tcameraParams.length = 4;\n\t\t\t\tcameraParams[0] = lightRenderData.depthRangeCompensation;\n\t\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\t\tcameraParams[3] = 1;\n\t\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t\t\tconst params = directional._shadowRenderParams;\n\t\t\t\tparams.length = 4;\n\t\t\t\tparams[0] = directional._shadowResolution;\n\t\t\t\tparams[1] = biases.normalBias;\n\t\t\t\tparams[2] = biases.bias;\n\t\t\t\tparams[3] = 0;\n\t\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\t}\n\t\t\tcnt++;\n\t\t}\n\t\treturn cnt;\n\t}\n\tsetLTCPositionalLight(wtm, cnt) {\n\t\tconst hWidth = wtm.transformVector(new Vec3(-0.5, 0, 0));\n\t\tthis.lightWidth[cnt][0] = hWidth.x;\n\t\tthis.lightWidth[cnt][1] = hWidth.y;\n\t\tthis.lightWidth[cnt][2] = hWidth.z;\n\t\tthis.lightWidthId[cnt].setValue(this.lightWidth[cnt]);\n\t\tconst hHeight = wtm.transformVector(new Vec3(0, 0, 0.5));\n\t\tthis.lightHeight[cnt][0] = hHeight.x;\n\t\tthis.lightHeight[cnt][1] = hHeight.y;\n\t\tthis.lightHeight[cnt][2] = hHeight.z;\n\t\tthis.lightHeightId[cnt].setValue(this.lightHeight[cnt]);\n\t}\n\tdispatchOmniLight(scene, scope, omni, cnt) {\n\t\tconst wtm = omni._node.getWorldTransform();\n\t\tif (!this.lightColorId[cnt]) {\n\t\t\tthis._resolveLight(scope, cnt);\n\t\t}\n\t\tthis.lightRadiusId[cnt].setValue(omni.attenuationEnd);\n\t\tthis.lightColorId[cnt].setValue(scene.gammaCorrection ? omni._linearFinalColor : omni._finalColor);\n\t\twtm.getTranslation(omni._position);\n\t\tthis.lightPos[cnt][0] = omni._position.x;\n\t\tthis.lightPos[cnt][1] = omni._position.y;\n\t\tthis.lightPos[cnt][2] = omni._position.z;\n\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\tif (omni.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\tthis.setLTCPositionalLight(wtm, cnt);\n\t\t}\n\t\tif (omni.castShadows) {\n\t\t\tconst lightRenderData = omni.getRenderData(null, 0);\n\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\tconst biases = omni._getUniformBiasValues(lightRenderData);\n\t\t\tconst params = omni._shadowRenderParams;\n\t\t\tparams.length = 4;\n\t\t\tparams[0] = omni._shadowResolution;\n\t\t\tparams[1] = biases.normalBias;\n\t\t\tparams[2] = biases.bias;\n\t\t\tparams[3] = 1.0 / omni.attenuationEnd;\n\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\tthis.lightShadowIntensity[cnt].setValue(omni.shadowIntensity);\n\t\t\tconst pixelsPerMeter = omni.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;\n\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter);\n\t\t\tconst cameraParams = omni._shadowCameraParams;\n\t\t\tcameraParams.length = 4;\n\t\t\tcameraParams[0] = lightRenderData.depthRangeCompensation;\n\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\tcameraParams[3] = 0;\n\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t}\n\t\tif (omni._cookie) {\n\t\t\tthis.lightCookieId[cnt].setValue(omni._cookie);\n\t\t\tthis.lightShadowMatrixId[cnt].setValue(wtm.data);\n\t\t\tthis.lightCookieIntId[cnt].setValue(omni.cookieIntensity);\n\t\t}\n\t}\n\tdispatchSpotLight(scene, scope, spot, cnt) {\n\t\tconst wtm = spot._node.getWorldTransform();\n\t\tif (!this.lightColorId[cnt]) {\n\t\t\tthis._resolveLight(scope, cnt);\n\t\t}\n\t\tthis.lightInAngleId[cnt].setValue(spot._innerConeAngleCos);\n\t\tthis.lightOutAngleId[cnt].setValue(spot._outerConeAngleCos);\n\t\tthis.lightRadiusId[cnt].setValue(spot.attenuationEnd);\n\t\tthis.lightColorId[cnt].setValue(scene.gammaCorrection ? spot._linearFinalColor : spot._finalColor);\n\t\twtm.getTranslation(spot._position);\n\t\tthis.lightPos[cnt][0] = spot._position.x;\n\t\tthis.lightPos[cnt][1] = spot._position.y;\n\t\tthis.lightPos[cnt][2] = spot._position.z;\n\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\tif (spot.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\tthis.setLTCPositionalLight(wtm, cnt);\n\t\t}\n\t\twtm.getY(spot._direction).mulScalar(-1);\n\t\tspot._direction.normalize();\n\t\tthis.lightDir[cnt][0] = spot._direction.x;\n\t\tthis.lightDir[cnt][1] = spot._direction.y;\n\t\tthis.lightDir[cnt][2] = spot._direction.z;\n\t\tthis.lightDirId[cnt].setValue(this.lightDir[cnt]);\n\t\tif (spot.castShadows) {\n\t\t\tconst lightRenderData = spot.getRenderData(null, 0);\n\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\tthis.lightShadowMatrixId[cnt].setValue(lightRenderData.shadowMatrix.data);\n\t\t\tconst biases = spot._getUniformBiasValues(lightRenderData);\n\t\t\tconst params = spot._shadowRenderParams;\n\t\t\tparams.length = 4;\n\t\t\tparams[0] = spot._shadowResolution;\n\t\t\tparams[1] = biases.normalBias;\n\t\t\tparams[2] = biases.bias;\n\t\t\tparams[3] = 1.0 / spot.attenuationEnd;\n\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\tthis.lightShadowIntensity[cnt].setValue(spot.shadowIntensity);\n\t\t\tconst pixelsPerMeter = spot.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;\n\t\t\tconst fov = lightRenderData.shadowCamera._fov * Math.PI / 180.0;\n\t\t\tconst fovRatio = 1.0 / Math.tan(fov / 2.0);\n\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter * fovRatio);\n\t\t\tconst cameraParams = spot._shadowCameraParams;\n\t\t\tcameraParams.length = 4;\n\t\t\tcameraParams[0] = lightRenderData.depthRangeCompensation;\n\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\tcameraParams[3] = 0;\n\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t}\n\t\tif (spot._cookie) {\n\t\t\tif (!spot.castShadows) {\n\t\t\t\tconst cookieMatrix = LightCamera.evalSpotCookieMatrix(spot);\n\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(cookieMatrix.data);\n\t\t\t}\n\t\t\tthis.lightCookieId[cnt].setValue(spot._cookie);\n\t\t\tthis.lightCookieIntId[cnt].setValue(spot.cookieIntensity);\n\t\t\tif (spot._cookieTransform) {\n\t\t\t\tspot._cookieTransformUniform[0] = spot._cookieTransform.x;\n\t\t\t\tspot._cookieTransformUniform[1] = spot._cookieTransform.y;\n\t\t\t\tspot._cookieTransformUniform[2] = spot._cookieTransform.z;\n\t\t\t\tspot._cookieTransformUniform[3] = spot._cookieTransform.w;\n\t\t\t\tthis.lightCookieMatrixId[cnt].setValue(spot._cookieTransformUniform);\n\t\t\t\tspot._cookieOffsetUniform[0] = spot._cookieOffset.x;\n\t\t\t\tspot._cookieOffsetUniform[1] = spot._cookieOffset.y;\n\t\t\t\tthis.lightCookieOffsetId[cnt].setValue(spot._cookieOffsetUniform);\n\t\t\t}\n\t\t}\n\t}\n\tdispatchLocalLights(sortedLights, scene, mask, usedDirLights) {\n\t\tlet cnt = usedDirLights;\n\t\tconst scope = this.device.scope;\n\t\tconst omnis = sortedLights[LIGHTTYPE_OMNI];\n\t\tconst numOmnis = omnis.length;\n\t\tfor (let i = 0; i < numOmnis; i++) {\n\t\t\tconst omni = omnis[i];\n\t\t\tif (!(omni.mask & mask)) continue;\n\t\t\tthis.dispatchOmniLight(scene, scope, omni, cnt);\n\t\t\tcnt++;\n\t\t}\n\t\tconst spts = sortedLights[LIGHTTYPE_SPOT];\n\t\tconst numSpts = spts.length;\n\t\tfor (let i = 0; i < numSpts; i++) {\n\t\t\tconst spot = spts[i];\n\t\t\tif (!(spot.mask & mask)) continue;\n\t\t\tthis.dispatchSpotLight(scene, scope, spot, cnt);\n\t\t\tcnt++;\n\t\t}\n\t}\n\trenderForwardPrepareMaterials(camera, drawCalls, sortedLights, layer, pass) {\n\t\tvar _layer$getLightHash;\n\t\tconst addCall = (drawCall, shaderInstance, isNewMaterial, lightMaskChanged) => {\n\t\t\t_drawCallList.drawCalls.push(drawCall);\n\t\t\t_drawCallList.shaderInstances.push(shaderInstance);\n\t\t\t_drawCallList.isNewMaterial.push(isNewMaterial);\n\t\t\t_drawCallList.lightMaskChanged.push(lightMaskChanged);\n\t\t};\n\t\t_drawCallList.clear();\n\t\tconst device = this.device;\n\t\tconst scene = this.scene;\n\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\tconst lightHash = (_layer$getLightHash = layer == null ? void 0 : layer.getLightHash(clusteredLightingEnabled)) != null ? _layer$getLightHash : 0;\n\t\tlet prevMaterial = null,\n\t\t\tprevObjDefs,\n\t\t\tprevLightMask;\n\t\tconst drawCallsCount = drawCalls.length;\n\t\tfor (let i = 0; i < drawCallsCount; i++) {\n\t\t\tconst drawCall = drawCalls[i];\n\t\t\tdrawCall.ensureMaterial(device);\n\t\t\tconst material = drawCall.material;\n\t\t\tconst objDefs = drawCall._shaderDefs;\n\t\t\tconst lightMask = drawCall.mask;\n\t\t\tif (material && material === prevMaterial && objDefs !== prevObjDefs) {\n\t\t\t\tprevMaterial = null;\n\t\t\t}\n\t\t\tif (material !== prevMaterial) {\n\t\t\t\tthis._materialSwitches++;\n\t\t\t\tmaterial._scene = scene;\n\t\t\t\tif (material.dirty) {\n\t\t\t\t\tmaterial.updateUniforms(device, scene);\n\t\t\t\t\tmaterial.dirty = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst shaderInstance = drawCall.getShaderInstance(pass, lightHash, scene, this.viewUniformFormat, this.viewBindGroupFormat, sortedLights);\n\t\t\taddCall(drawCall, shaderInstance, material !== prevMaterial, !prevMaterial || lightMask !== prevLightMask);\n\t\t\tprevMaterial = material;\n\t\t\tprevObjDefs = objDefs;\n\t\t\tprevLightMask = lightMask;\n\t\t}\n\t\treturn _drawCallList;\n\t}\n\trenderForwardInternal(camera, preparedCalls, sortedLights, pass, drawCallback, flipFaces) {\n\t\tconst device = this.device;\n\t\tconst scene = this.scene;\n\t\tconst passFlag = 1 << pass;\n\t\tconst flipFactor = flipFaces ? -1 : 1;\n\t\tconst clusteredLightingEnabled = this.scene.clusteredLightingEnabled;\n\t\tconst preparedCallsCount = preparedCalls.drawCalls.length;\n\t\tfor (let i = 0; i < preparedCallsCount; i++) {\n\t\t\tvar _drawCall$stencilFron, _drawCall$stencilBack;\n\t\t\tconst drawCall = preparedCalls.drawCalls[i];\n\t\t\tconst newMaterial = preparedCalls.isNewMaterial[i];\n\t\t\tconst lightMaskChanged = preparedCalls.lightMaskChanged[i];\n\t\t\tconst shaderInstance = preparedCalls.shaderInstances[i];\n\t\t\tconst material = drawCall.material;\n\t\t\tconst lightMask = drawCall.mask;\n\t\t\tif (newMaterial) {\n\t\t\t\tconst asyncCompile = false;\n\t\t\t\tdevice.setShader(shaderInstance.shader, asyncCompile);\n\t\t\t\tmaterial.setParameters(device);\n\t\t\t\tif (lightMaskChanged) {\n\t\t\t\t\tconst usedDirLights = this.dispatchDirectLights(sortedLights[LIGHTTYPE_DIRECTIONAL], scene, lightMask, camera);\n\t\t\t\t\tif (!clusteredLightingEnabled) {\n\t\t\t\t\t\tthis.dispatchLocalLights(sortedLights, scene, lightMask, usedDirLights);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.alphaTestId.setValue(material.alphaTest);\n\t\t\t\tdevice.setBlendState(material.blendState);\n\t\t\t\tdevice.setDepthState(material.depthState);\n\t\t\t\tdevice.setAlphaToCoverage(material.alphaToCoverage);\n\t\t\t}\n\t\t\tthis.setupCullMode(camera._cullFaces, flipFactor, drawCall);\n\t\t\tconst stencilFront = (_drawCall$stencilFron = drawCall.stencilFront) != null ? _drawCall$stencilFron : material.stencilFront;\n\t\t\tconst stencilBack = (_drawCall$stencilBack = drawCall.stencilBack) != null ? _drawCall$stencilBack : material.stencilBack;\n\t\t\tdevice.setStencilState(stencilFront, stencilBack);\n\t\t\tconst mesh = drawCall.mesh;\n\t\t\tdrawCall.setParameters(device, passFlag);\n\t\t\tthis.setVertexBuffers(device, mesh);\n\t\t\tthis.setMorphing(device, drawCall.morphInstance);\n\t\t\tthis.setSkinning(device, drawCall);\n\t\t\tthis.setupMeshUniformBuffers(shaderInstance, drawCall);\n\t\t\tconst style = drawCall.renderStyle;\n\t\t\tdevice.setIndexBuffer(mesh.indexBuffer[style]);\n\t\t\tdrawCallback == null || drawCallback(drawCall, i);\n\t\t\tif (camera.xr && camera.xr.session && camera.xr.views.list.length) {\n\t\t\t\tconst views = camera.xr.views;\n\t\t\t\tfor (let v = 0; v < views.list.length; v++) {\n\t\t\t\t\tconst view = views.list[v];\n\t\t\t\t\tdevice.setViewport(view.viewport.x, view.viewport.y, view.viewport.z, view.viewport.w);\n\t\t\t\t\tthis.projId.setValue(view.projMat.data);\n\t\t\t\t\tthis.projSkyboxId.setValue(view.projMat.data);\n\t\t\t\t\tthis.viewId.setValue(view.viewOffMat.data);\n\t\t\t\t\tthis.viewInvId.setValue(view.viewInvOffMat.data);\n\t\t\t\t\tthis.viewId3.setValue(view.viewMat3.data);\n\t\t\t\t\tthis.viewProjId.setValue(view.projViewOffMat.data);\n\t\t\t\t\tthis.viewPosId.setValue(view.positionData);\n\t\t\t\t\tthis.viewIndexId.setValue(v);\n\t\t\t\t\tif (v === 0) {\n\t\t\t\t\t\tthis.drawInstance(device, drawCall, mesh, style, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.drawInstance2(device, drawCall, mesh, style);\n\t\t\t\t\t}\n\t\t\t\t\tthis._forwardDrawCalls++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.drawInstance(device, drawCall, mesh, style, true);\n\t\t\t\tthis._forwardDrawCalls++;\n\t\t\t}\n\t\t\tif (i < preparedCallsCount - 1 && !preparedCalls.isNewMaterial[i + 1]) {\n\t\t\t\tmaterial.setParameters(device, drawCall.parameters);\n\t\t\t}\n\t\t}\n\t}\n\trenderForward(camera, allDrawCalls, sortedLights, pass, drawCallback, layer, flipFaces) {\n\t\tconst preparedCalls = this.renderForwardPrepareMaterials(camera, allDrawCalls, sortedLights, layer, pass);\n\t\tthis.renderForwardInternal(camera, preparedCalls, sortedLights, pass, drawCallback, flipFaces);\n\t\t_drawCallList.clear();\n\t}\n\trenderForwardLayer(camera, renderTarget, layer, transparent, shaderPass, viewBindGroups, options = {}) {\n\t\tvar _options$clearColor, _options$clearDepth, _options$clearStencil;\n\t\tconst {\n\t\t\tscene,\n\t\t\tdevice\n\t\t} = this;\n\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\tthis.setupViewport(camera, renderTarget);\n\t\tconst clearColor = (_options$clearColor = options.clearColor) != null ? _options$clearColor : false;\n\t\tconst clearDepth = (_options$clearDepth = options.clearDepth) != null ? _options$clearDepth : false;\n\t\tconst clearStencil = (_options$clearStencil = options.clearStencil) != null ? _options$clearStencil : false;\n\t\tif (clearColor || clearDepth || clearStencil) {\n\t\t\tthis.clear(camera, clearColor, clearDepth, clearStencil);\n\t\t}\n\t\tlet visible, splitLights;\n\t\tif (layer) {\n\t\t\tlayer.sortVisible(camera, transparent);\n\t\t\tconst culledInstances = layer.getCulledInstances(camera);\n\t\t\tvisible = transparent ? culledInstances.transparent : culledInstances.opaque;\n\t\t\tscene.immediate.onPreRenderLayer(layer, visible, transparent);\n\t\t\tif (layer.requiresLightCube) {\n\t\t\t\tthis.lightCube.update(scene.ambientLight, layer._lights);\n\t\t\t\tthis.constantLightCube.setValue(this.lightCube.colors);\n\t\t\t}\n\t\t\tsplitLights = layer.splitLights;\n\t\t} else {\n\t\t\tvar _options$splitLights;\n\t\t\tvisible = options.meshInstances;\n\t\t\tsplitLights = (_options$splitLights = options.splitLights) != null ? _options$splitLights : _noLights;\n\t\t}\n\t\tif (clusteredLightingEnabled) {\n\t\t\tvar _options$lightCluster;\n\t\t\tconst lightClusters = (_options$lightCluster = options.lightClusters) != null ? _options$lightCluster : this.worldClustersAllocator.empty;\n\t\t\tlightClusters.activate();\n\t\t\tif (layer) {\n\t\t\t\tif (!this.clustersDebugRendered && scene.lighting.debugLayer === layer.id) {\n\t\t\t\t\tthis.clustersDebugRendered = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tscene._activeCamera = camera;\n\t\tconst viewCount = this.setCameraUniforms(camera, renderTarget);\n\t\tif (device.supportsUniformBuffers) {\n\t\t\tthis.setupViewUniformBuffers(viewBindGroups, this.viewUniformFormat, this.viewBindGroupFormat, viewCount);\n\t\t}\n\t\tconst flipFaces = !!(camera._flipFaces ^ (renderTarget == null ? void 0 : renderTarget.flipY));\n\t\tconst forwardDrawCalls = this._forwardDrawCalls;\n\t\tthis.renderForward(camera, visible, splitLights, shaderPass, layer == null ? void 0 : layer.onDrawCall, layer, flipFaces);\n\t\tif (layer) layer._forwardDrawCalls += this._forwardDrawCalls - forwardDrawCalls;\n\t}\n\tsetSceneConstants() {\n\t\tconst scene = this.scene;\n\t\tthis.dispatchGlobalLights(scene);\n\t\tif (scene.fog !== FOG_NONE) {\n\t\t\tthis.fogColor[0] = scene.fogColor.r;\n\t\t\tthis.fogColor[1] = scene.fogColor.g;\n\t\t\tthis.fogColor[2] = scene.fogColor.b;\n\t\t\tif (scene.gammaCorrection) {\n\t\t\t\tfor (let i = 0; i < 3; i++) {\n\t\t\t\t\tthis.fogColor[i] = Math.pow(this.fogColor[i], 2.2);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.fogColorId.setValue(this.fogColor);\n\t\t\tif (scene.fog === FOG_LINEAR) {\n\t\t\t\tthis.fogStartId.setValue(scene.fogStart);\n\t\t\t\tthis.fogEndId.setValue(scene.fogEnd);\n\t\t\t} else {\n\t\t\t\tthis.fogDensityId.setValue(scene.fogDensity);\n\t\t\t}\n\t\t}\n\t\tconst device = this.device;\n\t\tthis._screenSize[0] = device.width;\n\t\tthis._screenSize[1] = device.height;\n\t\tthis._screenSize[2] = 1 / device.width;\n\t\tthis._screenSize[3] = 1 / device.height;\n\t\tthis.screenSizeId.setValue(this._screenSize);\n\t\tthis.pcssDiskSamplesId.setValue(this.pcssDiskSamples);\n\t\tthis.pcssSphereSamplesId.setValue(this.pcssSphereSamples);\n\t}\n\tbuildFrameGraph(frameGraph, layerComposition) {\n\t\tconst scene = this.scene;\n\t\tconst webgl1 = this.device.isWebGL1;\n\t\tframeGraph.reset();\n\t\tthis.update(layerComposition);\n\t\tif (scene.clusteredLightingEnabled) {\n\t\t\tconst {\n\t\t\t\tshadowsEnabled,\n\t\t\t\tcookiesEnabled\n\t\t\t} = scene.lighting;\n\t\t\tthis._renderPassUpdateClustered.update(frameGraph, shadowsEnabled, cookiesEnabled, this.lights, this.localLights);\n\t\t\tframeGraph.addRenderPass(this._renderPassUpdateClustered);\n\t\t} else {\n\t\t\tthis._shadowRendererLocal.buildNonClusteredRenderPasses(frameGraph, this.localLights);\n\t\t}\n\t\tlet startIndex = 0;\n\t\tlet newStart = true;\n\t\tlet renderTarget = null;\n\t\tconst renderActions = layerComposition._renderActions;\n\t\tfor (let i = startIndex; i < renderActions.length; i++) {\n\t\t\tconst renderAction = renderActions[i];\n\t\t\tconst {\n\t\t\t\tlayer,\n\t\t\t\tcamera\n\t\t\t} = renderAction;\n\t\t\tif (renderAction.useCameraPasses) {\n\t\t\t\tcamera.camera.renderPasses.forEach(renderPass => {\n\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst depthPass = camera.camera.renderPassDepthGrab;\n\t\t\t\tif (depthPass && webgl1 && renderAction.firstCameraUse) {\n\t\t\t\t\tdepthPass.options.resizeSource = camera.camera.renderTarget;\n\t\t\t\t\tdepthPass.update(this.scene);\n\t\t\t\t\tframeGraph.addRenderPass(depthPass);\n\t\t\t\t}\n\t\t\t\tconst isDepthLayer = layer.id === LAYERID_DEPTH;\n\t\t\t\tif (webgl1 && isDepthLayer && !camera.renderSceneColorMap) continue;\n\t\t\t\tconst isGrabPass = isDepthLayer && (camera.renderSceneColorMap || camera.renderSceneDepthMap);\n\t\t\t\tif (newStart) {\n\t\t\t\t\tnewStart = false;\n\t\t\t\t\tstartIndex = i;\n\t\t\t\t\trenderTarget = renderAction.renderTarget;\n\t\t\t\t}\n\t\t\t\tconst nextRenderAction = renderActions[i + 1];\n\t\t\t\tconst isNextLayerDepth = nextRenderAction ? nextRenderAction.layer.id === LAYERID_DEPTH : false;\n\t\t\t\tconst isNextLayerGrabPass = isNextLayerDepth && (camera.renderSceneColorMap || camera.renderSceneDepthMap) && !webgl1;\n\t\t\t\tconst nextNeedDirShadows = nextRenderAction ? nextRenderAction.firstCameraUse && this.cameraDirShadowLights.has(nextRenderAction.camera.camera) : false;\n\t\t\t\tif (!nextRenderAction || nextRenderAction.renderTarget !== renderTarget || nextNeedDirShadows || isNextLayerGrabPass || isGrabPass) {\n\t\t\t\t\tconst isDepthOnly = isDepthLayer && startIndex === i;\n\t\t\t\t\tif (!isDepthOnly) {\n\t\t\t\t\t\tthis.addMainRenderPass(frameGraph, layerComposition, renderTarget, startIndex, i);\n\t\t\t\t\t}\n\t\t\t\t\tif (isDepthLayer) {\n\t\t\t\t\t\tif (camera.renderSceneColorMap) {\n\t\t\t\t\t\t\tconst colorGrabPass = camera.camera.renderPassColorGrab;\n\t\t\t\t\t\t\tcolorGrabPass.source = camera.renderTarget;\n\t\t\t\t\t\t\tframeGraph.addRenderPass(colorGrabPass);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (camera.renderSceneDepthMap && !webgl1) {\n\t\t\t\t\t\t\tframeGraph.addRenderPass(camera.camera.renderPassDepthGrab);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (renderAction.triggerPostprocess && camera != null && camera.onPostprocessing) {\n\t\t\t\t\t\tconst renderPass = new RenderPassPostprocessing(this.device, this, renderAction);\n\t\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t\t}\n\t\t\t\t\tnewStart = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\taddMainRenderPass(frameGraph, layerComposition, renderTarget, startIndex, endIndex) {\n\t\tconst renderPass = new RenderPassForward(this.device, layerComposition, this.scene, this);\n\t\trenderPass.init(renderTarget);\n\t\tconst renderActions = layerComposition._renderActions;\n\t\tfor (let i = startIndex; i <= endIndex; i++) {\n\t\t\trenderPass.addRenderAction(renderActions[i]);\n\t\t}\n\t\tframeGraph.addRenderPass(renderPass);\n\t}\n\tupdate(comp) {\n\t\tthis.frameUpdate();\n\t\tthis.shadowRenderer.frameUpdate();\n\t\tthis.scene._updateSkyMesh();\n\t\tthis.updateLayerComposition(comp);\n\t\tthis.collectLights(comp);\n\t\tthis.beginFrame(comp);\n\t\tthis.setSceneConstants();\n\t\tthis.cullComposition(comp);\n\t\tthis.gpuUpdate(this.processingMeshInstances);\n\t}\n}\n\nexport { ForwardRenderer };\n", "import { hash32Fnv1a } from '../core/hash.js';\nimport { SORTMODE_MATERIALMESH, SORTMODE_BACK2FRONT, SHADER_FORWARD, LIGHTTYPE_DIRECTIONAL, LAYER_FX, SORTMODE_NONE, SORTMODE_CUSTOM, SORTMODE_FRONT2BACK, SORTKEY_FORWARD } from './constants.js';\nimport { Material } from './materials/material.js';\n\nfunction sortManual(drawCallA, drawCallB) {\n\treturn drawCallA.drawOrder - drawCallB.drawOrder;\n}\nfunction sortMaterialMesh(drawCallA, drawCallB) {\n\tconst keyA = drawCallA._key[SORTKEY_FORWARD];\n\tconst keyB = drawCallB._key[SORTKEY_FORWARD];\n\tif (keyA === keyB && drawCallA.mesh && drawCallB.mesh) {\n\t\treturn drawCallB.mesh.id - drawCallA.mesh.id;\n\t}\n\treturn keyB - keyA;\n}\nfunction sortBackToFront(drawCallA, drawCallB) {\n\treturn drawCallB.zdist - drawCallA.zdist;\n}\nfunction sortFrontToBack(drawCallA, drawCallB) {\n\treturn drawCallA.zdist - drawCallB.zdist;\n}\nconst sortCallbacks = [null, sortManual, sortMaterialMesh, sortBackToFront, sortFrontToBack];\nlet layerCounter = 0;\nconst lightKeys = [];\nconst _tempMaterials = new Set();\nclass CulledInstances {\n\tconstructor() {\n\t\tthis.opaque = [];\n\t\tthis.transparent = [];\n\t}\n}\nclass Layer {\n\tconstructor(options = {}) {\n\t\tvar _options$enabled, _options$opaqueSortMo, _options$transparentS, _options$shaderPass;\n\t\tthis.meshInstances = [];\n\t\tthis.meshInstancesSet = new Set();\n\t\tthis.shadowCasters = [];\n\t\tthis.shadowCastersSet = new Set();\n\t\tthis._visibleInstances = new WeakMap();\n\t\tthis._lights = [];\n\t\tthis._lightsSet = new Set();\n\t\tthis._clusteredLightsSet = new Set();\n\t\tthis._splitLights = [[], [], []];\n\t\tthis._splitLightsDirty = true;\n\t\tthis.requiresLightCube = false;\n\t\tthis.cameras = [];\n\t\tthis.camerasSet = new Set();\n\t\tthis._dirtyComposition = false;\n\t\tif (options.id !== undefined) {\n\t\t\tthis.id = options.id;\n\t\t\tlayerCounter = Math.max(this.id + 1, layerCounter);\n\t\t} else {\n\t\t\tthis.id = layerCounter++;\n\t\t}\n\t\tthis.name = options.name;\n\t\tthis._enabled = (_options$enabled = options.enabled) != null ? _options$enabled : true;\n\t\tthis._refCounter = this._enabled ? 1 : 0;\n\t\tthis.opaqueSortMode = (_options$opaqueSortMo = options.opaqueSortMode) != null ? _options$opaqueSortMo : SORTMODE_MATERIALMESH;\n\t\tthis.transparentSortMode = (_options$transparentS = options.transparentSortMode) != null ? _options$transparentS : SORTMODE_BACK2FRONT;\n\t\tif (options.renderTarget) {\n\t\t\tthis.renderTarget = options.renderTarget;\n\t\t}\n\t\tthis.shaderPass = (_options$shaderPass = options.shaderPass) != null ? _options$shaderPass : SHADER_FORWARD;\n\t\tthis._clearColorBuffer = !!options.clearColorBuffer;\n\t\tthis._clearDepthBuffer = !!options.clearDepthBuffer;\n\t\tthis._clearStencilBuffer = !!options.clearStencilBuffer;\n\t\tthis.onPreCull = options.onPreCull;\n\t\tthis.onPreRender = options.onPreRender;\n\t\tthis.onPreRenderOpaque = options.onPreRenderOpaque;\n\t\tthis.onPreRenderTransparent = options.onPreRenderTransparent;\n\t\tthis.onPostCull = options.onPostCull;\n\t\tthis.onPostRender = options.onPostRender;\n\t\tthis.onPostRenderOpaque = options.onPostRenderOpaque;\n\t\tthis.onPostRenderTransparent = options.onPostRenderTransparent;\n\t\tthis.onDrawCall = options.onDrawCall;\n\t\tthis.onEnable = options.onEnable;\n\t\tthis.onDisable = options.onDisable;\n\t\tif (this._enabled && this.onEnable) {\n\t\t\tthis.onEnable();\n\t\t}\n\t\tthis.layerReference = options.layerReference;\n\t\tthis.customSortCallback = null;\n\t\tthis.customCalculateSortValues = null;\n\t\tthis._lightHash = 0;\n\t\tthis._lightHashDirty = false;\n\t\tthis._lightIdHash = 0;\n\t\tthis._lightIdHashDirty = false;\n\t\tthis._shaderVersion = -1;\n\t}\n\tset enabled(val) {\n\t\tif (val !== this._enabled) {\n\t\t\tthis._dirtyComposition = true;\n\t\t\tthis._enabled = val;\n\t\t\tif (val) {\n\t\t\t\tthis.incrementCounter();\n\t\t\t\tif (this.onEnable) this.onEnable();\n\t\t\t} else {\n\t\t\t\tthis.decrementCounter();\n\t\t\t\tif (this.onDisable) this.onDisable();\n\t\t\t}\n\t\t}\n\t}\n\tget enabled() {\n\t\treturn this._enabled;\n\t}\n\tset clearColorBuffer(val) {\n\t\tthis._clearColorBuffer = val;\n\t\tthis._dirtyComposition = true;\n\t}\n\tget clearColorBuffer() {\n\t\treturn this._clearColorBuffer;\n\t}\n\tset clearDepthBuffer(val) {\n\t\tthis._clearDepthBuffer = val;\n\t\tthis._dirtyComposition = true;\n\t}\n\tget clearDepthBuffer() {\n\t\treturn this._clearDepthBuffer;\n\t}\n\tset clearStencilBuffer(val) {\n\t\tthis._clearStencilBuffer = val;\n\t\tthis._dirtyComposition = true;\n\t}\n\tget clearStencilBuffer() {\n\t\treturn this._clearStencilBuffer;\n\t}\n\tget hasClusteredLights() {\n\t\treturn this._clusteredLightsSet.size > 0;\n\t}\n\tget clusteredLightsSet() {\n\t\treturn this._clusteredLightsSet;\n\t}\n\tincrementCounter() {\n\t\tif (this._refCounter === 0) {\n\t\t\tthis._enabled = true;\n\t\t\tif (this.onEnable) this.onEnable();\n\t\t}\n\t\tthis._refCounter++;\n\t}\n\tdecrementCounter() {\n\t\tif (this._refCounter === 1) {\n\t\t\tthis._enabled = false;\n\t\t\tif (this.onDisable) this.onDisable();\n\t\t} else if (this._refCounter === 0) {\n\t\t\treturn;\n\t\t}\n\t\tthis._refCounter--;\n\t}\n\taddMeshInstances(meshInstances, skipShadowCasters) {\n\t\tconst destMeshInstances = this.meshInstances;\n\t\tconst destMeshInstancesSet = this.meshInstancesSet;\n\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\tconst mi = meshInstances[i];\n\t\t\tif (!destMeshInstancesSet.has(mi)) {\n\t\t\t\tdestMeshInstances.push(mi);\n\t\t\t\tdestMeshInstancesSet.add(mi);\n\t\t\t\t_tempMaterials.add(mi.material);\n\t\t\t}\n\t\t}\n\t\tif (!skipShadowCasters) {\n\t\t\tthis.addShadowCasters(meshInstances);\n\t\t}\n\t\tif (_tempMaterials.size > 0) {\n\t\t\tconst sceneShaderVer = this._shaderVersion;\n\t\t\t_tempMaterials.forEach(mat => {\n\t\t\t\tif (sceneShaderVer >= 0 && mat._shaderVersion !== sceneShaderVer) {\n\t\t\t\t\tif (mat.getShaderVariant !== Material.prototype.getShaderVariant) {\n\t\t\t\t\t\tmat.clearVariants();\n\t\t\t\t\t}\n\t\t\t\t\tmat._shaderVersion = sceneShaderVer;\n\t\t\t\t}\n\t\t\t});\n\t\t\t_tempMaterials.clear();\n\t\t}\n\t}\n\tremoveMeshInstances(meshInstances, skipShadowCasters) {\n\t\tconst destMeshInstances = this.meshInstances;\n\t\tconst destMeshInstancesSet = this.meshInstancesSet;\n\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\tconst mi = meshInstances[i];\n\t\t\tif (destMeshInstancesSet.has(mi)) {\n\t\t\t\tdestMeshInstancesSet.delete(mi);\n\t\t\t\tconst j = destMeshInstances.indexOf(mi);\n\t\t\t\tif (j >= 0) {\n\t\t\t\t\tdestMeshInstances.splice(j, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!skipShadowCasters) {\n\t\t\tthis.removeShadowCasters(meshInstances);\n\t\t}\n\t}\n\taddShadowCasters(meshInstances) {\n\t\tconst shadowCasters = this.shadowCasters;\n\t\tconst shadowCastersSet = this.shadowCastersSet;\n\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\tconst mi = meshInstances[i];\n\t\t\tif (mi.castShadow && !shadowCastersSet.has(mi)) {\n\t\t\t\tshadowCastersSet.add(mi);\n\t\t\t\tshadowCasters.push(mi);\n\t\t\t}\n\t\t}\n\t}\n\tremoveShadowCasters(meshInstances) {\n\t\tconst shadowCasters = this.shadowCasters;\n\t\tconst shadowCastersSet = this.shadowCastersSet;\n\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\tconst mi = meshInstances[i];\n\t\t\tif (shadowCastersSet.has(mi)) {\n\t\t\t\tshadowCastersSet.delete(mi);\n\t\t\t\tconst j = shadowCasters.indexOf(mi);\n\t\t\t\tif (j >= 0) {\n\t\t\t\t\tshadowCasters.splice(j, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tclearMeshInstances(skipShadowCasters = false) {\n\t\tthis.meshInstances.length = 0;\n\t\tthis.meshInstancesSet.clear();\n\t\tif (!skipShadowCasters) {\n\t\t\tthis.shadowCasters.length = 0;\n\t\t\tthis.shadowCastersSet.clear();\n\t\t}\n\t}\n\tmarkLightsDirty() {\n\t\tthis._lightHashDirty = true;\n\t\tthis._lightIdHashDirty = true;\n\t\tthis._splitLightsDirty = true;\n\t}\n\taddLight(light) {\n\t\tconst l = light.light;\n\t\tif (!this._lightsSet.has(l)) {\n\t\t\tthis._lightsSet.add(l);\n\t\t\tthis._lights.push(l);\n\t\t\tthis.markLightsDirty();\n\t\t}\n\t\tif (l.type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\tthis._clusteredLightsSet.add(l);\n\t\t}\n\t}\n\tremoveLight(light) {\n\t\tconst l = light.light;\n\t\tif (this._lightsSet.has(l)) {\n\t\t\tthis._lightsSet.delete(l);\n\t\t\tthis._lights.splice(this._lights.indexOf(l), 1);\n\t\t\tthis.markLightsDirty();\n\t\t}\n\t\tif (l.type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\tthis._clusteredLightsSet.delete(l);\n\t\t}\n\t}\n\tclearLights() {\n\t\tthis._lightsSet.forEach(light => light.removeLayer(this));\n\t\tthis._lightsSet.clear();\n\t\tthis._clusteredLightsSet.clear();\n\t\tthis._lights.length = 0;\n\t\tthis.markLightsDirty();\n\t}\n\tget splitLights() {\n\t\tif (this._splitLightsDirty) {\n\t\t\tthis._splitLightsDirty = false;\n\t\t\tconst splitLights = this._splitLights;\n\t\t\tfor (let i = 0; i < splitLights.length; i++) splitLights[i].length = 0;\n\t\t\tconst lights = this._lights;\n\t\t\tfor (let i = 0; i < lights.length; i++) {\n\t\t\t\tconst light = lights[i];\n\t\t\t\tif (light.enabled) {\n\t\t\t\t\tsplitLights[light._type].push(light);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = 0; i < splitLights.length; i++) splitLights[i].sort((a, b) => a.key - b.key);\n\t\t}\n\t\treturn this._splitLights;\n\t}\n\tevaluateLightHash(localLights, directionalLights, useIds) {\n\t\tlet hash = 0;\n\t\tconst lights = this._lights;\n\t\tfor (let i = 0; i < lights.length; i++) {\n\t\t\tconst isLocalLight = lights[i].type !== LIGHTTYPE_DIRECTIONAL;\n\t\t\tif (localLights && isLocalLight || directionalLights && !isLocalLight) {\n\t\t\t\tlightKeys.push(useIds ? lights[i].id : lights[i].key);\n\t\t\t}\n\t\t}\n\t\tif (lightKeys.length > 0) {\n\t\t\tlightKeys.sort();\n\t\t\thash = hash32Fnv1a(lightKeys);\n\t\t\tlightKeys.length = 0;\n\t\t}\n\t\treturn hash;\n\t}\n\tgetLightHash(isClustered) {\n\t\tif (this._lightHashDirty) {\n\t\t\tthis._lightHashDirty = false;\n\t\t\tthis._lightHash = this.evaluateLightHash(!isClustered, true, false);\n\t\t}\n\t\treturn this._lightHash;\n\t}\n\tgetLightIdHash() {\n\t\tif (this._lightIdHashDirty) {\n\t\t\tthis._lightIdHashDirty = false;\n\t\t\tthis._lightIdHash = this.evaluateLightHash(true, false, true);\n\t\t}\n\t\treturn this._lightIdHash;\n\t}\n\taddCamera(camera) {\n\t\tif (!this.camerasSet.has(camera.camera)) {\n\t\t\tthis.camerasSet.add(camera.camera);\n\t\t\tthis.cameras.push(camera);\n\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t}\n\tremoveCamera(camera) {\n\t\tif (this.camerasSet.has(camera.camera)) {\n\t\t\tthis.camerasSet.delete(camera.camera);\n\t\t\tconst index = this.cameras.indexOf(camera);\n\t\t\tthis.cameras.splice(index, 1);\n\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t}\n\tclearCameras() {\n\t\tthis.cameras.length = 0;\n\t\tthis.camerasSet.clear();\n\t\tthis._dirtyComposition = true;\n\t}\n\t_calculateSortDistances(drawCalls, drawCallsCount, camPos, camFwd) {\n\t\tfor (let i = 0; i < drawCallsCount; i++) {\n\t\t\tconst drawCall = drawCalls[i];\n\t\t\tif (drawCall.layer <= LAYER_FX) continue;\n\t\t\tif (drawCall.calculateSortDistance) {\n\t\t\t\tdrawCall.zdist = drawCall.calculateSortDistance(drawCall, camPos, camFwd);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst meshPos = drawCall.aabb.center;\n\t\t\tconst tempx = meshPos.x - camPos.x;\n\t\t\tconst tempy = meshPos.y - camPos.y;\n\t\t\tconst tempz = meshPos.z - camPos.z;\n\t\t\tdrawCall.zdist = tempx * camFwd.x + tempy * camFwd.y + tempz * camFwd.z;\n\t\t}\n\t}\n\tgetCulledInstances(camera) {\n\t\tlet instances = this._visibleInstances.get(camera);\n\t\tif (!instances) {\n\t\t\tinstances = new CulledInstances();\n\t\t\tthis._visibleInstances.set(camera, instances);\n\t\t}\n\t\treturn instances;\n\t}\n\tsortVisible(camera, transparent) {\n\t\tconst sortMode = transparent ? this.transparentSortMode : this.opaqueSortMode;\n\t\tif (sortMode === SORTMODE_NONE) return;\n\t\tconst culledInstances = this.getCulledInstances(camera);\n\t\tconst instances = transparent ? culledInstances.transparent : culledInstances.opaque;\n\t\tconst cameraNode = camera.node;\n\t\tif (sortMode === SORTMODE_CUSTOM) {\n\t\t\tconst sortPos = cameraNode.getPosition();\n\t\t\tconst sortDir = cameraNode.forward;\n\t\t\tif (this.customCalculateSortValues) {\n\t\t\t\tthis.customCalculateSortValues(instances, instances.length, sortPos, sortDir);\n\t\t\t}\n\t\t\tif (this.customSortCallback) {\n\t\t\t\tinstances.sort(this.customSortCallback);\n\t\t\t}\n\t\t} else {\n\t\t\tif (sortMode === SORTMODE_BACK2FRONT || sortMode === SORTMODE_FRONT2BACK) {\n\t\t\t\tconst sortPos = cameraNode.getPosition();\n\t\t\t\tconst sortDir = cameraNode.forward;\n\t\t\t\tthis._calculateSortDistances(instances, instances.length, sortPos, sortDir);\n\t\t\t}\n\t\t\tinstances.sort(sortCallbacks[sortMode]);\n\t\t}\n\t}\n}\n\nexport { CulledInstances, Layer };\n", "const cmpPriority = (a, b) => a.priority - b.priority;\nconst sortPriority = arr => arr.sort(cmpPriority);\n\nexport { sortPriority };\n", "import { EventHandler } from '../../core/event-handler.js';\nimport { sortPriority } from '../../core/sort.js';\nimport { LAYERID_DEPTH } from '../constants.js';\nimport { RenderAction } from './render-action.js';\n\nclass LayerComposition extends EventHandler {\n\tconstructor(name = 'Untitled') {\n\t\tsuper();\n\t\tthis.layerList = [];\n\t\tthis.layerIdMap = new Map();\n\t\tthis.layerNameMap = new Map();\n\t\tthis.layerOpaqueIndexMap = new Map();\n\t\tthis.layerTransparentIndexMap = new Map();\n\t\tthis.subLayerList = [];\n\t\tthis.subLayerEnabled = [];\n\t\tthis.cameras = [];\n\t\tthis.camerasMap = new Map();\n\t\tthis._renderActions = [];\n\t\tthis._dirty = false;\n\t\tthis.name = name;\n\t\tthis._opaqueOrder = {};\n\t\tthis._transparentOrder = {};\n\t}\n\tdestroy() {\n\t\tthis.destroyRenderActions();\n\t}\n\tdestroyRenderActions() {\n\t\tthis._renderActions.forEach(ra => ra.destroy());\n\t\tthis._renderActions.length = 0;\n\t}\n\t_update() {\n\t\tconst len = this.layerList.length;\n\t\tif (!this._dirty) {\n\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\tif (this.layerList[i]._dirtyComposition) {\n\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this._dirty) {\n\t\t\tthis._dirty = false;\n\t\t\tthis.cameras.length = 0;\n\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\tconst layer = this.layerList[i];\n\t\t\t\tlayer._dirtyComposition = false;\n\t\t\t\tfor (let j = 0; j < layer.cameras.length; j++) {\n\t\t\t\t\tconst camera = layer.cameras[j];\n\t\t\t\t\tconst index = this.cameras.indexOf(camera);\n\t\t\t\t\tif (index < 0) {\n\t\t\t\t\t\tthis.cameras.push(camera);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.cameras.length > 1) {\n\t\t\t\tsortPriority(this.cameras);\n\t\t\t}\n\t\t\tthis.camerasMap.clear();\n\t\t\tfor (let i = 0; i < this.cameras.length; i++) {\n\t\t\t\tthis.camerasMap.set(this.cameras[i], i);\n\t\t\t}\n\t\t\tlet renderActionCount = 0;\n\t\t\tthis.destroyRenderActions();\n\t\t\tfor (let i = 0; i < this.cameras.length; i++) {\n\t\t\t\tconst camera = this.cameras[i];\n\t\t\t\tif (camera.camera.renderPasses.length > 0) {\n\t\t\t\t\tthis.addDummyRenderAction(renderActionCount, camera);\n\t\t\t\t\trenderActionCount++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet cameraFirstRenderAction = true;\n\t\t\t\tconst cameraFirstRenderActionIndex = renderActionCount;\n\t\t\t\tlet lastRenderAction = null;\n\t\t\t\tlet postProcessMarked = false;\n\t\t\t\tfor (let j = 0; j < len; j++) {\n\t\t\t\t\tconst layer = this.layerList[j];\n\t\t\t\t\tconst isLayerEnabled = layer.enabled && this.subLayerEnabled[j];\n\t\t\t\t\tif (isLayerEnabled) {\n\t\t\t\t\t\tif (layer.cameras.length > 0) {\n\t\t\t\t\t\t\tif (camera.layers.indexOf(layer.id) >= 0) {\n\t\t\t\t\t\t\t\tif (!postProcessMarked && layer.id === camera.disablePostEffectsLayer) {\n\t\t\t\t\t\t\t\t\tpostProcessMarked = true;\n\t\t\t\t\t\t\t\t\tif (lastRenderAction) {\n\t\t\t\t\t\t\t\t\t\tlastRenderAction.triggerPostprocess = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst isTransparent = this.subLayerList[j];\n\t\t\t\t\t\t\t\tlastRenderAction = this.addRenderAction(renderActionCount, layer, isTransparent, camera, cameraFirstRenderAction, postProcessMarked);\n\t\t\t\t\t\t\t\trenderActionCount++;\n\t\t\t\t\t\t\t\tcameraFirstRenderAction = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (cameraFirstRenderActionIndex < renderActionCount) {\n\t\t\t\t\tlastRenderAction.lastCameraUse = true;\n\t\t\t\t}\n\t\t\t\tif (!postProcessMarked && lastRenderAction) {\n\t\t\t\t\tlastRenderAction.triggerPostprocess = true;\n\t\t\t\t}\n\t\t\t\tif (camera.renderTarget && camera.postEffectsEnabled) {\n\t\t\t\t\tthis.propagateRenderTarget(cameraFirstRenderActionIndex - 1, camera);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._logRenderActions();\n\t\t}\n\t}\n\tgetNextRenderAction(renderActionIndex) {\n\t\tconst renderAction = new RenderAction();\n\t\tthis._renderActions.push(renderAction);\n\t\treturn renderAction;\n\t}\n\taddDummyRenderAction(renderActionIndex, camera) {\n\t\tconst renderAction = this.getNextRenderAction(renderActionIndex);\n\t\trenderAction.camera = camera;\n\t\trenderAction.useCameraPasses = true;\n\t}\n\taddRenderAction(renderActionIndex, layer, isTransparent, camera, cameraFirstRenderAction, postProcessMarked) {\n\t\tlet rt = layer.renderTarget;\n\t\tif (camera && camera.renderTarget) {\n\t\t\tif (layer.id !== LAYERID_DEPTH) {\n\t\t\t\trt = camera.renderTarget;\n\t\t\t}\n\t\t}\n\t\tlet used = false;\n\t\tconst renderActions = this._renderActions;\n\t\tfor (let i = renderActionIndex - 1; i >= 0; i--) {\n\t\t\tif (renderActions[i].camera === camera && renderActions[i].renderTarget === rt) {\n\t\t\t\tused = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (postProcessMarked && camera.postEffectsEnabled) {\n\t\t\trt = null;\n\t\t}\n\t\tconst renderAction = this.getNextRenderAction(renderActionIndex);\n\t\trenderAction.triggerPostprocess = false;\n\t\trenderAction.layer = layer;\n\t\trenderAction.transparent = isTransparent;\n\t\trenderAction.camera = camera;\n\t\trenderAction.renderTarget = rt;\n\t\trenderAction.firstCameraUse = cameraFirstRenderAction;\n\t\trenderAction.lastCameraUse = false;\n\t\tconst needsCameraClear = cameraFirstRenderAction || !used;\n\t\tconst needsLayerClear = layer.clearColorBuffer || layer.clearDepthBuffer || layer.clearStencilBuffer;\n\t\tif (needsCameraClear || needsLayerClear) {\n\t\t\trenderAction.setupClears(needsCameraClear ? camera : undefined, layer);\n\t\t}\n\t\treturn renderAction;\n\t}\n\tpropagateRenderTarget(startIndex, fromCamera) {\n\t\tfor (let a = startIndex; a >= 0; a--) {\n\t\t\tconst ra = this._renderActions[a];\n\t\t\tconst layer = ra.layer;\n\t\t\tif (ra.renderTarget && layer.id !== LAYERID_DEPTH) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (layer.id === LAYERID_DEPTH) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ra.useCameraPasses) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst thisCamera = ra == null ? void 0 : ra.camera.camera;\n\t\t\tif (thisCamera) {\n\t\t\t\tif (!fromCamera.camera.rect.equals(thisCamera.rect) || !fromCamera.camera.scissorRect.equals(thisCamera.scissorRect)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tra.renderTarget = fromCamera.renderTarget;\n\t\t}\n\t}\n\t_logRenderActions() {}\n\t_isLayerAdded(layer) {\n\t\tconst found = this.layerIdMap.get(layer.id) === layer;\n\t\treturn found;\n\t}\n\t_isSublayerAdded(layer, transparent) {\n\t\tconst map = transparent ? this.layerTransparentIndexMap : this.layerOpaqueIndexMap;\n\t\tif (map.get(layer) !== undefined) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpush(layer) {\n\t\tif (this._isLayerAdded(layer)) return;\n\t\tthis.layerList.push(layer);\n\t\tthis.layerList.push(layer);\n\t\tthis._opaqueOrder[layer.id] = this.subLayerList.push(false) - 1;\n\t\tthis._transparentOrder[layer.id] = this.subLayerList.push(true) - 1;\n\t\tthis.subLayerEnabled.push(true);\n\t\tthis.subLayerEnabled.push(true);\n\t\tthis._updateLayerMaps();\n\t\tthis._dirty = true;\n\t\tthis.fire('add', layer);\n\t}\n\tinsert(layer, index) {\n\t\tif (this._isLayerAdded(layer)) return;\n\t\tthis.layerList.splice(index, 0, layer, layer);\n\t\tthis.subLayerList.splice(index, 0, false, true);\n\t\tconst count = this.layerList.length;\n\t\tthis._updateOpaqueOrder(index, count - 1);\n\t\tthis._updateTransparentOrder(index, count - 1);\n\t\tthis.subLayerEnabled.splice(index, 0, true, true);\n\t\tthis._updateLayerMaps();\n\t\tthis._dirty = true;\n\t\tthis.fire('add', layer);\n\t}\n\tremove(layer) {\n\t\tlet id = this.layerList.indexOf(layer);\n\t\tdelete this._opaqueOrder[id];\n\t\tdelete this._transparentOrder[id];\n\t\twhile (id >= 0) {\n\t\t\tthis.layerList.splice(id, 1);\n\t\t\tthis.subLayerList.splice(id, 1);\n\t\t\tthis.subLayerEnabled.splice(id, 1);\n\t\t\tid = this.layerList.indexOf(layer);\n\t\t\tthis._dirty = true;\n\t\t\tthis.fire('remove', layer);\n\t\t}\n\t\tconst count = this.layerList.length;\n\t\tthis._updateOpaqueOrder(0, count - 1);\n\t\tthis._updateTransparentOrder(0, count - 1);\n\t\tthis._updateLayerMaps();\n\t}\n\tpushOpaque(layer) {\n\t\tif (this._isSublayerAdded(layer, false)) return;\n\t\tthis.layerList.push(layer);\n\t\tthis._opaqueOrder[layer.id] = this.subLayerList.push(false) - 1;\n\t\tthis.subLayerEnabled.push(true);\n\t\tthis._updateLayerMaps();\n\t\tthis._dirty = true;\n\t\tthis.fire('add', layer);\n\t}\n\tinsertOpaque(layer, index) {\n\t\tif (this._isSublayerAdded(layer, false)) return;\n\t\tthis.layerList.splice(index, 0, layer);\n\t\tthis.subLayerList.splice(index, 0, false);\n\t\tconst count = this.subLayerList.length;\n\t\tthis._updateOpaqueOrder(index, count - 1);\n\t\tthis.subLayerEnabled.splice(index, 0, true);\n\t\tthis._updateLayerMaps();\n\t\tthis._dirty = true;\n\t\tthis.fire('add', layer);\n\t}\n\tremoveOpaque(layer) {\n\t\tfor (let i = 0, len = this.layerList.length; i < len; i++) {\n\t\t\tif (this.layerList[i] === layer && !this.subLayerList[i]) {\n\t\t\t\tthis.layerList.splice(i, 1);\n\t\t\t\tthis.subLayerList.splice(i, 1);\n\t\t\t\tlen--;\n\t\t\t\tthis._updateOpaqueOrder(i, len - 1);\n\t\t\t\tthis.subLayerEnabled.splice(i, 1);\n\t\t\t\tthis._dirty = true;\n\t\t\t\tif (this.layerList.indexOf(layer) < 0) {\n\t\t\t\t\tthis.fire('remove', layer);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis._updateLayerMaps();\n\t}\n\tpushTransparent(layer) {\n\t\tif (this._isSublayerAdded(layer, true)) return;\n\t\tthis.layerList.push(layer);\n\t\tthis._transparentOrder[layer.id] = this.subLayerList.push(true) - 1;\n\t\tthis.subLayerEnabled.push(true);\n\t\tthis._updateLayerMaps();\n\t\tthis._dirty = true;\n\t\tthis.fire('add', layer);\n\t}\n\tinsertTransparent(layer, index) {\n\t\tif (this._isSublayerAdded(layer, true)) return;\n\t\tthis.layerList.splice(index, 0, layer);\n\t\tthis.subLayerList.splice(index, 0, true);\n\t\tconst count = this.subLayerList.length;\n\t\tthis._updateTransparentOrder(index, count - 1);\n\t\tthis.subLayerEnabled.splice(index, 0, true);\n\t\tthis._updateLayerMaps();\n\t\tthis._dirty = true;\n\t\tthis.fire('add', layer);\n\t}\n\tremoveTransparent(layer) {\n\t\tfor (let i = 0, len = this.layerList.length; i < len; i++) {\n\t\t\tif (this.layerList[i] === layer && this.subLayerList[i]) {\n\t\t\t\tthis.layerList.splice(i, 1);\n\t\t\t\tthis.subLayerList.splice(i, 1);\n\t\t\t\tlen--;\n\t\t\t\tthis._updateTransparentOrder(i, len - 1);\n\t\t\t\tthis.subLayerEnabled.splice(i, 1);\n\t\t\t\tthis._dirty = true;\n\t\t\t\tif (this.layerList.indexOf(layer) < 0) {\n\t\t\t\t\tthis.fire('remove', layer);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis._updateLayerMaps();\n\t}\n\tgetOpaqueIndex(layer) {\n\t\tvar _this$layerOpaqueInde;\n\t\treturn (_this$layerOpaqueInde = this.layerOpaqueIndexMap.get(layer)) != null ? _this$layerOpaqueInde : -1;\n\t}\n\tgetTransparentIndex(layer) {\n\t\tvar _this$layerTransparen;\n\t\treturn (_this$layerTransparen = this.layerTransparentIndexMap.get(layer)) != null ? _this$layerTransparen : -1;\n\t}\n\tisEnabled(layer, transparent) {\n\t\tconst index = transparent ? this.getTransparentIndex(layer) : this.getOpaqueIndex(layer);\n\t\treturn this.subLayerEnabled[index];\n\t}\n\t_updateLayerMaps() {\n\t\tthis.layerIdMap.clear();\n\t\tthis.layerNameMap.clear();\n\t\tthis.layerOpaqueIndexMap.clear();\n\t\tthis.layerTransparentIndexMap.clear();\n\t\tfor (let i = 0; i < this.layerList.length; i++) {\n\t\t\tconst layer = this.layerList[i];\n\t\t\tthis.layerIdMap.set(layer.id, layer);\n\t\t\tthis.layerNameMap.set(layer.name, layer);\n\t\t\tconst subLayerIndexMap = this.subLayerList[i] ? this.layerTransparentIndexMap : this.layerOpaqueIndexMap;\n\t\t\tsubLayerIndexMap.set(layer, i);\n\t\t}\n\t}\n\tgetLayerById(id) {\n\t\tvar _this$layerIdMap$get;\n\t\treturn (_this$layerIdMap$get = this.layerIdMap.get(id)) != null ? _this$layerIdMap$get : null;\n\t}\n\tgetLayerByName(name) {\n\t\tvar _this$layerNameMap$ge;\n\t\treturn (_this$layerNameMap$ge = this.layerNameMap.get(name)) != null ? _this$layerNameMap$ge : null;\n\t}\n\t_updateOpaqueOrder(startIndex, endIndex) {\n\t\tfor (let i = startIndex; i <= endIndex; i++) {\n\t\t\tif (this.subLayerList[i] === false) {\n\t\t\t\tthis._opaqueOrder[this.layerList[i].id] = i;\n\t\t\t}\n\t\t}\n\t}\n\t_updateTransparentOrder(startIndex, endIndex) {\n\t\tfor (let i = startIndex; i <= endIndex; i++) {\n\t\t\tif (this.subLayerList[i] === true) {\n\t\t\t\tthis._transparentOrder[this.layerList[i].id] = i;\n\t\t\t}\n\t\t}\n\t}\n\t_sortLayersDescending(layersA, layersB, order) {\n\t\tlet topLayerA = -1;\n\t\tlet topLayerB = -1;\n\t\tfor (let i = 0, len = layersA.length; i < len; i++) {\n\t\t\tconst id = layersA[i];\n\t\t\tif (order.hasOwnProperty(id)) {\n\t\t\t\ttopLayerA = Math.max(topLayerA, order[id]);\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0, len = layersB.length; i < len; i++) {\n\t\t\tconst id = layersB[i];\n\t\t\tif (order.hasOwnProperty(id)) {\n\t\t\t\ttopLayerB = Math.max(topLayerB, order[id]);\n\t\t\t}\n\t\t}\n\t\tif (topLayerA === -1 && topLayerB !== -1) {\n\t\t\treturn 1;\n\t\t} else if (topLayerB === -1 && topLayerA !== -1) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn topLayerB - topLayerA;\n\t}\n\tsortTransparentLayers(layersA, layersB) {\n\t\treturn this._sortLayersDescending(layersA, layersB, this._transparentOrder);\n\t}\n\tsortOpaqueLayers(layersA, layersB) {\n\t\treturn this._sortLayersDescending(layersA, layersB, this._opaqueOrder);\n\t}\n}\n\nexport { LayerComposition };\n", "import { math } from '../core/math/math.js';\nimport { Color } from '../core/math/color.js';\nimport { Mat4 } from '../core/math/mat4.js';\nimport { Vec2 } from '../core/math/vec2.js';\nimport { Vec3 } from '../core/math/vec3.js';\nimport { Vec4 } from '../core/math/vec4.js';\nimport { LIGHTTYPE_DIRECTIONAL, MASK_AFFECT_DYNAMIC, LIGHTFALLOFF_LINEAR, SHADOW_PCF3, BLUR_GAUSSIAN, LIGHTSHAPE_PUNCTUAL, SHADOWUPDATE_REALTIME, LIGHTTYPE_OMNI, SHADOW_PCSS, SHADOW_PCF5, SHADOW_VSM32, SHADOW_VSM16, SHADOW_VSM8, SHADOW_PCF1, MASK_BAKE, SHADOWUPDATE_NONE, SHADOWUPDATE_THISFRAME, LIGHTTYPE_SPOT } from './constants.js';\nimport { ShadowRenderer } from './renderer/shadow-renderer.js';\nimport { DepthState } from '../platform/graphics/depth-state.js';\n\nconst tmpVec = new Vec3();\nconst tmpBiases = {\n\tbias: 0,\n\tnormalBias: 0\n};\nconst chanId = {\n\tr: 0,\n\tg: 1,\n\tb: 2,\n\ta: 3\n};\nconst lightTypes = {\n\t'directional': LIGHTTYPE_DIRECTIONAL,\n\t'omni': LIGHTTYPE_OMNI,\n\t'point': LIGHTTYPE_OMNI,\n\t'spot': LIGHTTYPE_SPOT\n};\nconst directionalCascades = [[new Vec4(0, 0, 1, 1)], [new Vec4(0, 0, 0.5, 0.5), new Vec4(0, 0.5, 0.5, 0.5)], [new Vec4(0, 0, 0.5, 0.5), new Vec4(0, 0.5, 0.5, 0.5), new Vec4(0.5, 0, 0.5, 0.5)], [new Vec4(0, 0, 0.5, 0.5), new Vec4(0, 0.5, 0.5, 0.5), new Vec4(0.5, 0, 0.5, 0.5), new Vec4(0.5, 0.5, 0.5, 0.5)]];\nlet id = 0;\nclass LightRenderData {\n\tconstructor(device, camera, face, light) {\n\t\tthis.light = light;\n\t\tthis.camera = camera;\n\t\tthis.shadowCamera = ShadowRenderer.createShadowCamera(device, light._shadowType, light._type, face);\n\t\tthis.shadowMatrix = new Mat4();\n\t\tthis.shadowViewport = new Vec4(0, 0, 1, 1);\n\t\tthis.shadowScissor = new Vec4(0, 0, 1, 1);\n\t\tthis.depthRangeCompensation = 0;\n\t\tthis.projectionCompensation = 0;\n\t\tthis.face = face;\n\t\tthis.visibleCasters = [];\n\t\tthis.viewBindGroups = [];\n\t}\n\tdestroy() {\n\t\tthis.viewBindGroups.forEach(bg => {\n\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\tbg.destroy();\n\t\t});\n\t\tthis.viewBindGroups.length = 0;\n\t}\n\tget shadowBuffer() {\n\t\tconst rt = this.shadowCamera.renderTarget;\n\t\tif (rt) {\n\t\t\tconst light = this.light;\n\t\t\tif (light._type === LIGHTTYPE_OMNI) {\n\t\t\t\treturn rt.colorBuffer;\n\t\t\t}\n\t\t\treturn light._isPcf && light.device.supportsDepthShadow ? rt.depthBuffer : rt.colorBuffer;\n\t\t}\n\t\treturn null;\n\t}\n}\nclass Light {\n\tconstructor(graphicsDevice, clusteredLighting) {\n\t\tthis.layers = new Set();\n\t\tthis.clusteredLighting = void 0;\n\t\tthis.shadowDepthState = DepthState.DEFAULT.clone();\n\t\tthis.device = graphicsDevice;\n\t\tthis.clusteredLighting = clusteredLighting;\n\t\tthis.id = id++;\n\t\tthis._type = LIGHTTYPE_DIRECTIONAL;\n\t\tthis._color = new Color(0.8, 0.8, 0.8);\n\t\tthis._intensity = 1;\n\t\tthis._affectSpecularity = true;\n\t\tthis._luminance = 0;\n\t\tthis._castShadows = false;\n\t\tthis._enabled = false;\n\t\tthis._mask = MASK_AFFECT_DYNAMIC;\n\t\tthis.isStatic = false;\n\t\tthis.key = 0;\n\t\tthis.bakeDir = true;\n\t\tthis.bakeNumSamples = 1;\n\t\tthis.bakeArea = 0;\n\t\tthis.attenuationStart = 10;\n\t\tthis.attenuationEnd = 10;\n\t\tthis._falloffMode = LIGHTFALLOFF_LINEAR;\n\t\tthis._shadowType = SHADOW_PCF3;\n\t\tthis._vsmBlurSize = 11;\n\t\tthis.vsmBlurMode = BLUR_GAUSSIAN;\n\t\tthis.vsmBias = 0.01 * 0.25;\n\t\tthis._cookie = null;\n\t\tthis.cookieIntensity = 1;\n\t\tthis._cookieFalloff = true;\n\t\tthis._cookieChannel = 'rgb';\n\t\tthis._cookieTransform = null;\n\t\tthis._cookieTransformUniform = new Float32Array(4);\n\t\tthis._cookieOffset = null;\n\t\tthis._cookieOffsetUniform = new Float32Array(2);\n\t\tthis._cookieTransformSet = false;\n\t\tthis._cookieOffsetSet = false;\n\t\tthis._innerConeAngle = 40;\n\t\tthis._outerConeAngle = 45;\n\t\tthis.cascades = null;\n\t\tthis._shadowMatrixPalette = null;\n\t\tthis._shadowCascadeDistances = null;\n\t\tthis.numCascades = 1;\n\t\tthis.cascadeDistribution = 0.5;\n\t\tthis._shape = LIGHTSHAPE_PUNCTUAL;\n\t\tthis._finalColor = new Float32Array([0.8, 0.8, 0.8]);\n\t\tconst c = Math.pow(this._finalColor[0], 2.2);\n\t\tthis._linearFinalColor = new Float32Array([c, c, c]);\n\t\tthis._position = new Vec3(0, 0, 0);\n\t\tthis._direction = new Vec3(0, 0, 0);\n\t\tthis._innerConeAngleCos = Math.cos(this._innerConeAngle * Math.PI / 180);\n\t\tthis._updateOuterAngle(this._outerConeAngle);\n\t\tthis._usePhysicalUnits = undefined;\n\t\tthis._shadowMap = null;\n\t\tthis._shadowRenderParams = [];\n\t\tthis._shadowCameraParams = [];\n\t\tthis.shadowDistance = 40;\n\t\tthis._shadowResolution = 1024;\n\t\tthis._shadowBias = -0.0005;\n\t\tthis.shadowIntensity = 1.0;\n\t\tthis._normalOffsetBias = 0.0;\n\t\tthis.shadowUpdateMode = SHADOWUPDATE_REALTIME;\n\t\tthis.shadowUpdateOverrides = null;\n\t\tthis._penumbraSize = 1.0;\n\t\tthis._isVsm = false;\n\t\tthis._isPcf = true;\n\t\tthis._cookieMatrix = null;\n\t\tthis._atlasViewport = null;\n\t\tthis.atlasViewportAllocated = false;\n\t\tthis.atlasVersion = 0;\n\t\tthis.atlasSlotIndex = 0;\n\t\tthis.atlasSlotUpdated = false;\n\t\tthis._node = null;\n\t\tthis._renderData = [];\n\t\tthis.visibleThisFrame = false;\n\t\tthis.maxScreenSize = 0;\n\t\tthis._updateShadowBias();\n\t}\n\tdestroy() {\n\t\tthis._destroyShadowMap();\n\t\tthis.releaseRenderData();\n\t\tthis._renderData = null;\n\t}\n\treleaseRenderData() {\n\t\tif (this._renderData) {\n\t\t\tfor (let i = 0; i < this._renderData.length; i++) {\n\t\t\t\tthis._renderData[i].destroy();\n\t\t\t}\n\t\t\tthis._renderData.length = 0;\n\t\t}\n\t}\n\taddLayer(layer) {\n\t\tthis.layers.add(layer);\n\t}\n\tremoveLayer(layer) {\n\t\tthis.layers.delete(layer);\n\t}\n\tset shadowBias(value) {\n\t\tif (this._shadowBias !== value) {\n\t\t\tthis._shadowBias = value;\n\t\t\tthis._updateShadowBias();\n\t\t}\n\t}\n\tget shadowBias() {\n\t\treturn this._shadowBias;\n\t}\n\tset numCascades(value) {\n\t\tif (!this.cascades || this.numCascades !== value) {\n\t\t\tthis.cascades = directionalCascades[value - 1];\n\t\t\tthis._shadowMatrixPalette = new Float32Array(4 * 16);\n\t\t\tthis._shadowCascadeDistances = new Float32Array(4);\n\t\t\tthis._destroyShadowMap();\n\t\t\tthis.updateKey();\n\t\t}\n\t}\n\tget numCascades() {\n\t\treturn this.cascades.length;\n\t}\n\tset shadowMap(shadowMap) {\n\t\tif (this._shadowMap !== shadowMap) {\n\t\t\tthis._destroyShadowMap();\n\t\t\tthis._shadowMap = shadowMap;\n\t\t}\n\t}\n\tget shadowMap() {\n\t\treturn this._shadowMap;\n\t}\n\tset mask(value) {\n\t\tif (this._mask !== value) {\n\t\t\tthis._mask = value;\n\t\t\tthis.updateKey();\n\t\t}\n\t}\n\tget mask() {\n\t\treturn this._mask;\n\t}\n\tget numShadowFaces() {\n\t\tconst type = this._type;\n\t\tif (type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\treturn this.numCascades;\n\t\t} else if (type === LIGHTTYPE_OMNI) {\n\t\t\treturn 6;\n\t\t}\n\t\treturn 1;\n\t}\n\tset type(value) {\n\t\tif (this._type === value) return;\n\t\tthis._type = value;\n\t\tthis._destroyShadowMap();\n\t\tthis._updateShadowBias();\n\t\tthis.updateKey();\n\t\tconst stype = this._shadowType;\n\t\tthis._shadowType = null;\n\t\tthis.shadowUpdateOverrides = null;\n\t\tthis.shadowType = stype;\n\t}\n\tget type() {\n\t\treturn this._type;\n\t}\n\tset shape(value) {\n\t\tif (this._shape === value) return;\n\t\tthis._shape = value;\n\t\tthis._destroyShadowMap();\n\t\tthis.updateKey();\n\t\tconst stype = this._shadowType;\n\t\tthis._shadowType = null;\n\t\tthis.shadowType = stype;\n\t}\n\tget shape() {\n\t\treturn this._shape;\n\t}\n\tset usePhysicalUnits(value) {\n\t\tif (this._usePhysicalUnits !== value) {\n\t\t\tthis._usePhysicalUnits = value;\n\t\t\tthis._updateFinalColor();\n\t\t}\n\t}\n\tget usePhysicalUnits() {\n\t\treturn this._usePhysicalUnits;\n\t}\n\tset shadowType(value) {\n\t\tif (this._shadowType === value) return;\n\t\tconst device = this.device;\n\t\tif (this._type === LIGHTTYPE_OMNI && value !== SHADOW_PCF3 && value !== SHADOW_PCSS) value = SHADOW_PCF3;\n\t\tconst supportsDepthShadow = device.supportsDepthShadow;\n\t\tif (value === SHADOW_PCF5 && !supportsDepthShadow) {\n\t\t\tvalue = SHADOW_PCF3;\n\t\t}\n\t\tif (value === SHADOW_VSM32 && (!device.textureFloatRenderable || !device.textureFloatFilterable)) value = SHADOW_VSM16;\n\t\tif (value === SHADOW_VSM16 && !device.textureHalfFloatRenderable) value = SHADOW_VSM8;\n\t\tthis._isVsm = value >= SHADOW_VSM8 && value <= SHADOW_VSM32;\n\t\tthis._isPcf = value === SHADOW_PCF1 || value === SHADOW_PCF3 || value === SHADOW_PCF5;\n\t\tthis._shadowType = value;\n\t\tthis._destroyShadowMap();\n\t\tthis.updateKey();\n\t}\n\tget shadowType() {\n\t\treturn this._shadowType;\n\t}\n\tset enabled(value) {\n\t\tif (this._enabled !== value) {\n\t\t\tthis._enabled = value;\n\t\t\tthis.layersDirty();\n\t\t}\n\t}\n\tget enabled() {\n\t\treturn this._enabled;\n\t}\n\tset castShadows(value) {\n\t\tif (this._castShadows !== value) {\n\t\t\tthis._castShadows = value;\n\t\t\tthis._destroyShadowMap();\n\t\t\tthis.layersDirty();\n\t\t\tthis.updateKey();\n\t\t}\n\t}\n\tget castShadows() {\n\t\treturn this._castShadows && this._mask !== MASK_BAKE && this._mask !== 0;\n\t}\n\tset shadowResolution(value) {\n\t\tif (this._shadowResolution !== value) {\n\t\t\tif (this._type === LIGHTTYPE_OMNI) {\n\t\t\t\tvalue = Math.min(value, this.device.maxCubeMapSize);\n\t\t\t} else {\n\t\t\t\tvalue = Math.min(value, this.device.maxTextureSize);\n\t\t\t}\n\t\t\tthis._shadowResolution = value;\n\t\t\tthis._destroyShadowMap();\n\t\t}\n\t}\n\tget shadowResolution() {\n\t\treturn this._shadowResolution;\n\t}\n\tset vsmBlurSize(value) {\n\t\tif (this._vsmBlurSize === value) return;\n\t\tif (value % 2 === 0) value++;\n\t\tthis._vsmBlurSize = value;\n\t}\n\tget vsmBlurSize() {\n\t\treturn this._vsmBlurSize;\n\t}\n\tset normalOffsetBias(value) {\n\t\tif (this._normalOffsetBias === value) return;\n\t\tif (!this._normalOffsetBias && value || this._normalOffsetBias && !value) {\n\t\t\tthis.updateKey();\n\t\t}\n\t\tthis._normalOffsetBias = value;\n\t}\n\tget normalOffsetBias() {\n\t\treturn this._normalOffsetBias;\n\t}\n\tset falloffMode(value) {\n\t\tif (this._falloffMode === value) return;\n\t\tthis._falloffMode = value;\n\t\tthis.updateKey();\n\t}\n\tget falloffMode() {\n\t\treturn this._falloffMode;\n\t}\n\tset innerConeAngle(value) {\n\t\tif (this._innerConeAngle === value) return;\n\t\tthis._innerConeAngle = value;\n\t\tthis._innerConeAngleCos = Math.cos(value * Math.PI / 180);\n\t\tif (this._usePhysicalUnits) {\n\t\t\tthis._updateFinalColor();\n\t\t}\n\t}\n\tget innerConeAngle() {\n\t\treturn this._innerConeAngle;\n\t}\n\tset outerConeAngle(value) {\n\t\tif (this._outerConeAngle === value) return;\n\t\tthis._outerConeAngle = value;\n\t\tthis._updateOuterAngle(value);\n\t\tif (this._usePhysicalUnits) {\n\t\t\tthis._updateFinalColor();\n\t\t}\n\t}\n\tget outerConeAngle() {\n\t\treturn this._outerConeAngle;\n\t}\n\tset penumbraSize(value) {\n\t\tthis._penumbraSize = value;\n\t}\n\tget penumbraSize() {\n\t\treturn this._penumbraSize;\n\t}\n\t_updateOuterAngle(angle) {\n\t\tconst radAngle = angle * Math.PI / 180;\n\t\tthis._outerConeAngleCos = Math.cos(radAngle);\n\t\tthis._outerConeAngleSin = Math.sin(radAngle);\n\t}\n\tset intensity(value) {\n\t\tif (this._intensity !== value) {\n\t\t\tthis._intensity = value;\n\t\t\tthis._updateFinalColor();\n\t\t}\n\t}\n\tget intensity() {\n\t\treturn this._intensity;\n\t}\n\tset affectSpecularity(value) {\n\t\tif (this._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\tthis._affectSpecularity = value;\n\t\t\tthis.updateKey();\n\t\t}\n\t}\n\tget affectSpecularity() {\n\t\treturn this._affectSpecularity;\n\t}\n\tset luminance(value) {\n\t\tif (this._luminance !== value) {\n\t\t\tthis._luminance = value;\n\t\t\tthis._updateFinalColor();\n\t\t}\n\t}\n\tget luminance() {\n\t\treturn this._luminance;\n\t}\n\tget cookieMatrix() {\n\t\tif (!this._cookieMatrix) {\n\t\t\tthis._cookieMatrix = new Mat4();\n\t\t}\n\t\treturn this._cookieMatrix;\n\t}\n\tget atlasViewport() {\n\t\tif (!this._atlasViewport) {\n\t\t\tthis._atlasViewport = new Vec4(0, 0, 1, 1);\n\t\t}\n\t\treturn this._atlasViewport;\n\t}\n\tset cookie(value) {\n\t\tif (this._cookie === value) return;\n\t\tthis._cookie = value;\n\t\tthis.updateKey();\n\t}\n\tget cookie() {\n\t\treturn this._cookie;\n\t}\n\tset cookieFalloff(value) {\n\t\tif (this._cookieFalloff === value) return;\n\t\tthis._cookieFalloff = value;\n\t\tthis.updateKey();\n\t}\n\tget cookieFalloff() {\n\t\treturn this._cookieFalloff;\n\t}\n\tset cookieChannel(value) {\n\t\tif (this._cookieChannel === value) return;\n\t\tif (value.length < 3) {\n\t\t\tconst chr = value.charAt(value.length - 1);\n\t\t\tconst addLen = 3 - value.length;\n\t\t\tfor (let i = 0; i < addLen; i++) value += chr;\n\t\t}\n\t\tthis._cookieChannel = value;\n\t\tthis.updateKey();\n\t}\n\tget cookieChannel() {\n\t\treturn this._cookieChannel;\n\t}\n\tset cookieTransform(value) {\n\t\tif (this._cookieTransform === value) return;\n\t\tthis._cookieTransform = value;\n\t\tthis._cookieTransformSet = !!value;\n\t\tif (value && !this._cookieOffset) {\n\t\t\tthis.cookieOffset = new Vec2();\n\t\t\tthis._cookieOffsetSet = false;\n\t\t}\n\t\tthis.updateKey();\n\t}\n\tget cookieTransform() {\n\t\treturn this._cookieTransform;\n\t}\n\tset cookieOffset(value) {\n\t\tif (this._cookieOffset === value) return;\n\t\tconst xformNew = !!(this._cookieTransformSet || value);\n\t\tif (xformNew && !value && this._cookieOffset) {\n\t\t\tthis._cookieOffset.set(0, 0);\n\t\t} else {\n\t\t\tthis._cookieOffset = value;\n\t\t}\n\t\tthis._cookieOffsetSet = !!value;\n\t\tif (value && !this._cookieTransform) {\n\t\t\tthis.cookieTransform = new Vec4(1, 1, 0, 0);\n\t\t\tthis._cookieTransformSet = false;\n\t\t}\n\t\tthis.updateKey();\n\t}\n\tget cookieOffset() {\n\t\treturn this._cookieOffset;\n\t}\n\tbeginFrame() {\n\t\tthis.visibleThisFrame = this._type === LIGHTTYPE_DIRECTIONAL && this._enabled;\n\t\tthis.maxScreenSize = 0;\n\t\tthis.atlasViewportAllocated = false;\n\t\tthis.atlasSlotUpdated = false;\n\t}\n\t_destroyShadowMap() {\n\t\tthis.releaseRenderData();\n\t\tif (this._shadowMap) {\n\t\t\tif (!this._shadowMap.cached) {\n\t\t\t\tthis._shadowMap.destroy();\n\t\t\t}\n\t\t\tthis._shadowMap = null;\n\t\t}\n\t\tif (this.shadowUpdateMode === SHADOWUPDATE_NONE) {\n\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t}\n\t\tif (this.shadowUpdateOverrides) {\n\t\t\tfor (let i = 0; i < this.shadowUpdateOverrides.length; i++) {\n\t\t\t\tif (this.shadowUpdateOverrides[i] === SHADOWUPDATE_NONE) {\n\t\t\t\t\tthis.shadowUpdateOverrides[i] = SHADOWUPDATE_THISFRAME;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tgetRenderData(camera, face) {\n\t\tfor (let i = 0; i < this._renderData.length; i++) {\n\t\t\tconst current = this._renderData[i];\n\t\t\tif (current.camera === camera && current.face === face) {\n\t\t\t\treturn current;\n\t\t\t}\n\t\t}\n\t\tconst rd = new LightRenderData(this.device, camera, face, this);\n\t\tthis._renderData.push(rd);\n\t\treturn rd;\n\t}\n\tclone() {\n\t\tconst clone = new Light(this.device, this.clusteredLighting);\n\t\tclone.type = this._type;\n\t\tclone.setColor(this._color);\n\t\tclone.intensity = this._intensity;\n\t\tclone.affectSpecularity = this._affectSpecularity;\n\t\tclone.luminance = this._luminance;\n\t\tclone.castShadows = this.castShadows;\n\t\tclone._enabled = this._enabled;\n\t\tclone.attenuationStart = this.attenuationStart;\n\t\tclone.attenuationEnd = this.attenuationEnd;\n\t\tclone.falloffMode = this._falloffMode;\n\t\tclone.shadowType = this._shadowType;\n\t\tclone.vsmBlurSize = this._vsmBlurSize;\n\t\tclone.vsmBlurMode = this.vsmBlurMode;\n\t\tclone.vsmBias = this.vsmBias;\n\t\tclone.penumbraSize = this.penumbraSize;\n\t\tclone.shadowUpdateMode = this.shadowUpdateMode;\n\t\tclone.mask = this.mask;\n\t\tif (this.shadowUpdateOverrides) {\n\t\t\tclone.shadowUpdateOverrides = this.shadowUpdateOverrides.slice();\n\t\t}\n\t\tclone.innerConeAngle = this._innerConeAngle;\n\t\tclone.outerConeAngle = this._outerConeAngle;\n\t\tclone.numCascades = this.numCascades;\n\t\tclone.cascadeDistribution = this.cascadeDistribution;\n\t\tclone.shape = this._shape;\n\t\tclone.shadowDepthState.copy(this.shadowDepthState);\n\t\tclone.shadowBias = this.shadowBias;\n\t\tclone.normalOffsetBias = this._normalOffsetBias;\n\t\tclone.shadowResolution = this._shadowResolution;\n\t\tclone.shadowDistance = this.shadowDistance;\n\t\tclone.shadowIntensity = this.shadowIntensity;\n\t\treturn clone;\n\t}\n\tstatic getLightUnitConversion(type, outerAngle = Math.PI / 4, innerAngle = 0) {\n\t\tswitch (type) {\n\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\t{\n\t\t\t\t\tconst falloffEnd = Math.cos(outerAngle);\n\t\t\t\t\tconst falloffStart = Math.cos(innerAngle);\n\t\t\t\t\treturn 2 * Math.PI * (1 - falloffStart + (falloffStart - falloffEnd) / 2.0);\n\t\t\t\t}\n\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\treturn 4 * Math.PI;\n\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\treturn 1;\n\t\t}\n\t}\n\t_getUniformBiasValues(lightRenderData) {\n\t\tconst farClip = lightRenderData.shadowCamera._farClip;\n\t\tswitch (this._type) {\n\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\ttmpBiases.bias = this.shadowBias;\n\t\t\t\ttmpBiases.normalBias = this._normalOffsetBias;\n\t\t\t\tbreak;\n\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\tif (this._isVsm) {\n\t\t\t\t\ttmpBiases.bias = -0.00001 * 20;\n\t\t\t\t} else {\n\t\t\t\t\ttmpBiases.bias = this.shadowBias * 20;\n\t\t\t\t\tif (this.device.isWebGL1 && this.device.extStandardDerivatives) tmpBiases.bias *= -100;\n\t\t\t\t}\n\t\t\t\ttmpBiases.normalBias = this._isVsm ? this.vsmBias / (this.attenuationEnd / 7.0) : this._normalOffsetBias;\n\t\t\t\tbreak;\n\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\tif (this._isVsm) {\n\t\t\t\t\ttmpBiases.bias = -0.00001 * 20;\n\t\t\t\t} else {\n\t\t\t\t\ttmpBiases.bias = this.shadowBias / farClip * 100;\n\t\t\t\t\tif (this.device.isWebGL1 && this.device.extStandardDerivatives) tmpBiases.bias *= -100;\n\t\t\t\t}\n\t\t\t\ttmpBiases.normalBias = this._isVsm ? this.vsmBias / (farClip / 7.0) : this._normalOffsetBias;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn tmpBiases;\n\t}\n\tgetColor() {\n\t\treturn this._color;\n\t}\n\tgetBoundingSphere(sphere) {\n\t\tif (this._type === LIGHTTYPE_SPOT) {\n\t\t\tconst size = this.attenuationEnd;\n\t\t\tconst angle = this._outerConeAngle;\n\t\t\tconst cosAngle = this._outerConeAngleCos;\n\t\t\tconst node = this._node;\n\t\t\ttmpVec.copy(node.up);\n\t\t\tif (angle > 45) {\n\t\t\t\tsphere.radius = size * this._outerConeAngleSin;\n\t\t\t\ttmpVec.mulScalar(-size * cosAngle);\n\t\t\t} else {\n\t\t\t\tsphere.radius = size / (2 * cosAngle);\n\t\t\t\ttmpVec.mulScalar(-sphere.radius);\n\t\t\t}\n\t\t\tsphere.center.add2(node.getPosition(), tmpVec);\n\t\t} else if (this._type === LIGHTTYPE_OMNI) {\n\t\t\tsphere.center = this._node.getPosition();\n\t\t\tsphere.radius = this.attenuationEnd;\n\t\t}\n\t}\n\tgetBoundingBox(box) {\n\t\tif (this._type === LIGHTTYPE_SPOT) {\n\t\t\tconst range = this.attenuationEnd;\n\t\t\tconst angle = this._outerConeAngle;\n\t\t\tconst node = this._node;\n\t\t\tconst scl = Math.abs(Math.sin(angle * math.DEG_TO_RAD) * range);\n\t\t\tbox.center.set(0, -range * 0.5, 0);\n\t\t\tbox.halfExtents.set(scl, range * 0.5, scl);\n\t\t\tbox.setFromTransformedAabb(box, node.getWorldTransform(), true);\n\t\t} else if (this._type === LIGHTTYPE_OMNI) {\n\t\t\tbox.center.copy(this._node.getPosition());\n\t\t\tbox.halfExtents.set(this.attenuationEnd, this.attenuationEnd, this.attenuationEnd);\n\t\t}\n\t}\n\t_updateShadowBias() {\n\t\tconst device = this.device;\n\t\tif (device.isWebGL2 || device.isWebGPU) {\n\t\t\tif (this._type === LIGHTTYPE_OMNI && !this.clusteredLighting) {\n\t\t\t\tthis.shadowDepthState.depthBias = 0;\n\t\t\t\tthis.shadowDepthState.depthBiasSlope = 0;\n\t\t\t} else {\n\t\t\t\tconst bias = this.shadowBias * -1000.0;\n\t\t\t\tthis.shadowDepthState.depthBias = bias;\n\t\t\t\tthis.shadowDepthState.depthBiasSlope = bias;\n\t\t\t}\n\t\t}\n\t}\n\t_updateFinalColor() {\n\t\tconst color = this._color;\n\t\tconst r = color.r;\n\t\tconst g = color.g;\n\t\tconst b = color.b;\n\t\tlet i = this._intensity;\n\t\tif (this._usePhysicalUnits) {\n\t\t\ti = this._luminance / Light.getLightUnitConversion(this._type, this._outerConeAngle * math.DEG_TO_RAD, this._innerConeAngle * math.DEG_TO_RAD);\n\t\t}\n\t\tconst finalColor = this._finalColor;\n\t\tconst linearFinalColor = this._linearFinalColor;\n\t\tfinalColor[0] = r * i;\n\t\tfinalColor[1] = g * i;\n\t\tfinalColor[2] = b * i;\n\t\tif (i >= 1) {\n\t\t\tlinearFinalColor[0] = Math.pow(r, 2.2) * i;\n\t\t\tlinearFinalColor[1] = Math.pow(g, 2.2) * i;\n\t\t\tlinearFinalColor[2] = Math.pow(b, 2.2) * i;\n\t\t} else {\n\t\t\tlinearFinalColor[0] = Math.pow(finalColor[0], 2.2);\n\t\t\tlinearFinalColor[1] = Math.pow(finalColor[1], 2.2);\n\t\t\tlinearFinalColor[2] = Math.pow(finalColor[2], 2.2);\n\t\t}\n\t}\n\tsetColor() {\n\t\tif (arguments.length === 1) {\n\t\t\tthis._color.set(arguments[0].r, arguments[0].g, arguments[0].b);\n\t\t} else if (arguments.length === 3) {\n\t\t\tthis._color.set(arguments[0], arguments[1], arguments[2]);\n\t\t}\n\t\tthis._updateFinalColor();\n\t}\n\tlayersDirty() {\n\t\tthis.layers.forEach(layer => {\n\t\t\tlayer.markLightsDirty();\n\t\t});\n\t}\n\tupdateKey() {\n\t\tlet key = this._type << 29 | (this._castShadows ? 1 : 0) << 28 | this._shadowType << 25 | this._falloffMode << 23 | (this._normalOffsetBias !== 0.0 ? 1 : 0) << 22 | (this._cookie ? 1 : 0) << 21 | (this._cookieFalloff ? 1 : 0) << 20 | chanId[this._cookieChannel.charAt(0)] << 18 | (this._cookieTransform ? 1 : 0) << 12 | this._shape << 10 | this.numCascades - 1 << 8 | (this.affectSpecularity ? 1 : 0) << 7 | this.mask << 6;\n\t\tif (this._cookieChannel.length === 3) {\n\t\t\tkey |= chanId[this._cookieChannel.charAt(1)] << 16;\n\t\t\tkey |= chanId[this._cookieChannel.charAt(2)] << 14;\n\t\t}\n\t\tif (key !== this.key) {\n\t\t\tthis.layersDirty();\n\t\t}\n\t\tthis.key = key;\n\t}\n}\n\nexport { Light, lightTypes };\n", "import { math } from '../../core/math/math.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { SHADOW_PCF3 } from '../constants.js';\n\nclass LightingParams {\n\tconstructor(supportsAreaLights, maxTextureSize, dirtyLightsFnc) {\n\t\tthis._areaLightsEnabled = false;\n\t\tthis._cells = new Vec3(10, 3, 10);\n\t\tthis._maxLightsPerCell = 255;\n\t\tthis._shadowsEnabled = true;\n\t\tthis._shadowType = SHADOW_PCF3;\n\t\tthis._shadowAtlasResolution = 2048;\n\t\tthis._cookiesEnabled = false;\n\t\tthis._cookieAtlasResolution = 2048;\n\t\tthis.debugLayer = void 0;\n\t\tthis.atlasSplit = null;\n\t\tthis._supportsAreaLights = supportsAreaLights;\n\t\tthis._maxTextureSize = maxTextureSize;\n\t\tthis._dirtyLightsFnc = dirtyLightsFnc;\n\t}\n\tapplySettings(render) {\n\t\tvar _render$lightingShado, _render$lightingCooki, _render$lightingAreaL, _render$lightingShado2, _render$lightingCooki2, _render$lightingMaxLi, _render$lightingShado3;\n\t\tthis.shadowsEnabled = (_render$lightingShado = render.lightingShadowsEnabled) != null ? _render$lightingShado : this.shadowsEnabled;\n\t\tthis.cookiesEnabled = (_render$lightingCooki = render.lightingCookiesEnabled) != null ? _render$lightingCooki : this.cookiesEnabled;\n\t\tthis.areaLightsEnabled = (_render$lightingAreaL = render.lightingAreaLightsEnabled) != null ? _render$lightingAreaL : this.areaLightsEnabled;\n\t\tthis.shadowAtlasResolution = (_render$lightingShado2 = render.lightingShadowAtlasResolution) != null ? _render$lightingShado2 : this.shadowAtlasResolution;\n\t\tthis.cookieAtlasResolution = (_render$lightingCooki2 = render.lightingCookieAtlasResolution) != null ? _render$lightingCooki2 : this.cookieAtlasResolution;\n\t\tthis.maxLightsPerCell = (_render$lightingMaxLi = render.lightingMaxLightsPerCell) != null ? _render$lightingMaxLi : this.maxLightsPerCell;\n\t\tthis.shadowType = (_render$lightingShado3 = render.lightingShadowType) != null ? _render$lightingShado3 : this.shadowType;\n\t\tif (render.lightingCells) this.cell = new Vec3(render.lightingCells);\n\t}\n\tset cells(value) {\n\t\tthis._cells.copy(value);\n\t}\n\tget cells() {\n\t\treturn this._cells;\n\t}\n\tset maxLightsPerCell(value) {\n\t\tthis._maxLightsPerCell = math.clamp(value, 1, 255);\n\t}\n\tget maxLightsPerCell() {\n\t\treturn this._maxLightsPerCell;\n\t}\n\tset cookieAtlasResolution(value) {\n\t\tthis._cookieAtlasResolution = math.clamp(value, 32, this._maxTextureSize);\n\t}\n\tget cookieAtlasResolution() {\n\t\treturn this._cookieAtlasResolution;\n\t}\n\tset shadowAtlasResolution(value) {\n\t\tthis._shadowAtlasResolution = math.clamp(value, 32, this._maxTextureSize);\n\t}\n\tget shadowAtlasResolution() {\n\t\treturn this._shadowAtlasResolution;\n\t}\n\tset shadowType(value) {\n\t\tif (this._shadowType !== value) {\n\t\t\tthis._shadowType = value;\n\t\t\tthis._dirtyLightsFnc();\n\t\t}\n\t}\n\tget shadowType() {\n\t\treturn this._shadowType;\n\t}\n\tset cookiesEnabled(value) {\n\t\tif (this._cookiesEnabled !== value) {\n\t\t\tthis._cookiesEnabled = value;\n\t\t\tthis._dirtyLightsFnc();\n\t\t}\n\t}\n\tget cookiesEnabled() {\n\t\treturn this._cookiesEnabled;\n\t}\n\tset areaLightsEnabled(value) {\n\t\tif (this._supportsAreaLights) {\n\t\t\tif (this._areaLightsEnabled !== value) {\n\t\t\t\tthis._areaLightsEnabled = value;\n\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t}\n\t\t}\n\t}\n\tget areaLightsEnabled() {\n\t\treturn this._areaLightsEnabled;\n\t}\n\tset shadowsEnabled(value) {\n\t\tif (this._shadowsEnabled !== value) {\n\t\t\tthis._shadowsEnabled = value;\n\t\t\tthis._dirtyLightsFnc();\n\t\t}\n\t}\n\tget shadowsEnabled() {\n\t\treturn this._shadowsEnabled;\n\t}\n}\n\nexport { LightingParams };\n", "import { BLENDEQUATION_ADD, BLENDMODE_ONE } from '../platform/graphics/constants.js';\nimport { drawQuadWithShader } from './graphics/quad-render-utils.js';\nimport { RenderTarget } from '../platform/graphics/render-target.js';\nimport { createShaderFromCode } from './shader-lib/utils.js';\nimport { BlendState } from '../platform/graphics/blend-state.js';\n\nconst textureMorphVertexShader = `\n\tattribute vec2 vertex_position;\n\tvarying vec2 uv0;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\t\tuv0 = vertex_position.xy * 0.5 + 0.5;\n\t}\n\t`;\nconst blendStateAdditive = new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE);\nclass MorphInstance {\n\tconstructor(morph) {\n\t\tthis.morph = morph;\n\t\tmorph.incRefCount();\n\t\tthis.device = morph.device;\n\t\tthis._weights = [];\n\t\tthis._weightMap = new Map();\n\t\tfor (let v = 0; v < morph._targets.length; v++) {\n\t\t\tconst target = morph._targets[v];\n\t\t\tif (target.name) {\n\t\t\t\tthis._weightMap.set(target.name, v);\n\t\t\t}\n\t\t\tthis.setWeight(v, target.defaultWeight);\n\t\t}\n\t\tthis._activeTargets = [];\n\t\tif (morph.useTextureMorph) {\n\t\t\tthis.shaderCache = {};\n\t\t\tthis.maxSubmitCount = this.device.maxTextures;\n\t\t\tthis._shaderMorphWeights = new Float32Array(this.maxSubmitCount);\n\t\t\tconst createRT = (name, textureVar) => {\n\t\t\t\tthis[textureVar] = morph._createTexture(name, morph._renderTextureFormat);\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\tcolorBuffer: this[textureVar],\n\t\t\t\t\tdepth: false\n\t\t\t\t});\n\t\t\t};\n\t\t\tif (morph.morphPositions) {\n\t\t\t\tthis.rtPositions = createRT('MorphRTPos', 'texturePositions');\n\t\t\t}\n\t\t\tif (morph.morphNormals) {\n\t\t\t\tthis.rtNormals = createRT('MorphRTNrm', 'textureNormals');\n\t\t\t}\n\t\t\tthis._textureParams = new Float32Array([morph.morphTextureWidth, morph.morphTextureHeight, 1 / morph.morphTextureWidth, 1 / morph.morphTextureHeight]);\n\t\t\tfor (let i = 0; i < this.maxSubmitCount; i++) {\n\t\t\t\tthis['morphBlendTex' + i] = this.device.scope.resolve('morphBlendTex' + i);\n\t\t\t}\n\t\t\tthis.morphFactor = this.device.scope.resolve('morphFactor[0]');\n\t\t\tthis.zeroTextures = false;\n\t\t} else {\n\t\t\tthis.maxSubmitCount = 8;\n\t\t\tthis._shaderMorphWeights = new Float32Array(this.maxSubmitCount);\n\t\t\tthis._shaderMorphWeightsA = new Float32Array(this._shaderMorphWeights.buffer, 0, 4);\n\t\t\tthis._shaderMorphWeightsB = new Float32Array(this._shaderMorphWeights.buffer, 4 * 4, 4);\n\t\t\tthis._activeVertexBuffers = new Array(this.maxSubmitCount);\n\t\t}\n\t}\n\tdestroy() {\n\t\tthis.shader = null;\n\t\tconst morph = this.morph;\n\t\tif (morph) {\n\t\t\tthis.morph = null;\n\t\t\tmorph.decRefCount();\n\t\t\tif (morph.refCount < 1) {\n\t\t\t\tmorph.destroy();\n\t\t\t}\n\t\t}\n\t\tif (this.rtPositions) {\n\t\t\tthis.rtPositions.destroy();\n\t\t\tthis.rtPositions = null;\n\t\t}\n\t\tif (this.texturePositions) {\n\t\t\tthis.texturePositions.destroy();\n\t\t\tthis.texturePositions = null;\n\t\t}\n\t\tif (this.rtNormals) {\n\t\t\tthis.rtNormals.destroy();\n\t\t\tthis.rtNormals = null;\n\t\t}\n\t\tif (this.textureNormals) {\n\t\t\tthis.textureNormals.destroy();\n\t\t\tthis.textureNormals = null;\n\t\t}\n\t}\n\tclone() {\n\t\treturn new MorphInstance(this.morph);\n\t}\n\t_getWeightIndex(key) {\n\t\tif (typeof key === 'string') {\n\t\t\tconst index = this._weightMap.get(key);\n\t\t\treturn index;\n\t\t}\n\t\treturn key;\n\t}\n\tgetWeight(key) {\n\t\tconst index = this._getWeightIndex(key);\n\t\treturn this._weights[index];\n\t}\n\tsetWeight(key, weight) {\n\t\tconst index = this._getWeightIndex(key);\n\t\tthis._weights[index] = weight;\n\t\tthis._dirty = true;\n\t}\n\t_getFragmentShader(numTextures) {\n\t\tlet fragmentShader = '';\n\t\tif (numTextures > 0) {\n\t\t\tfragmentShader += 'varying vec2 uv0;\\n' + 'uniform highp float morphFactor[' + numTextures + '];\\n';\n\t\t}\n\t\tfor (let i = 0; i < numTextures; i++) {\n\t\t\tfragmentShader += 'uniform highp sampler2D morphBlendTex' + i + ';\\n';\n\t\t}\n\t\tfragmentShader += 'void main (void) {\\n' + ' highp vec4 color = vec4(0, 0, 0, 1);\\n';\n\t\tfor (let i = 0; i < numTextures; i++) {\n\t\t\tfragmentShader += ' color.xyz += morphFactor[' + i + '] * texture2D(morphBlendTex' + i + ', uv0).xyz;\\n';\n\t\t}\n\t\tfragmentShader += ' gl_FragColor = color;\\n' + '}\\n';\n\t\treturn fragmentShader;\n\t}\n\t_getShader(count) {\n\t\tlet shader = this.shaderCache[count];\n\t\tif (!shader) {\n\t\t\tconst fs = this._getFragmentShader(count);\n\t\t\tshader = createShaderFromCode(this.device, textureMorphVertexShader, fs, 'textureMorph' + count);\n\t\t\tthis.shaderCache[count] = shader;\n\t\t}\n\t\treturn shader;\n\t}\n\t_updateTextureRenderTarget(renderTarget, srcTextureName) {\n\t\tconst device = this.device;\n\t\tconst submitBatch = (usedCount, blending) => {\n\t\t\tthis.morphFactor.setValue(this._shaderMorphWeights);\n\t\t\tdevice.setBlendState(blending ? blendStateAdditive : BlendState.NOBLEND);\n\t\t\tconst shader = this._getShader(usedCount);\n\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t};\n\t\tlet usedCount = 0;\n\t\tlet blending = false;\n\t\tconst count = this._activeTargets.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst activeTarget = this._activeTargets[i];\n\t\t\tconst tex = activeTarget.target[srcTextureName];\n\t\t\tif (tex) {\n\t\t\t\tthis['morphBlendTex' + usedCount].setValue(tex);\n\t\t\t\tthis._shaderMorphWeights[usedCount] = activeTarget.weight;\n\t\t\t\tusedCount++;\n\t\t\t\tif (usedCount >= this.maxSubmitCount) {\n\t\t\t\t\tsubmitBatch(usedCount, blending);\n\t\t\t\t\tusedCount = 0;\n\t\t\t\t\tblending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (usedCount > 0 || count === 0 && !this.zeroTextures) {\n\t\t\tsubmitBatch(usedCount, blending);\n\t\t}\n\t}\n\t_updateTextureMorph() {\n\t\tthis.device;\n\t\tif (this._activeTargets.length > 0 || !this.zeroTextures) {\n\t\t\tif (this.rtPositions) this._updateTextureRenderTarget(this.rtPositions, 'texturePositions');\n\t\t\tif (this.rtNormals) this._updateTextureRenderTarget(this.rtNormals, 'textureNormals');\n\t\t\tthis.zeroTextures = this._activeTargets.length === 0;\n\t\t}\n\t}\n\t_updateVertexMorph() {\n\t\tconst count = this.maxSubmitCount;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tthis._shaderMorphWeights[i] = 0;\n\t\t\tthis._activeVertexBuffers[i] = null;\n\t\t}\n\t\tlet posIndex = 0;\n\t\tlet nrmIndex = this.morph.morphPositions ? 4 : 0;\n\t\tfor (let i = 0; i < this._activeTargets.length; i++) {\n\t\t\tconst target = this._activeTargets[i].target;\n\t\t\tif (target._vertexBufferPositions) {\n\t\t\t\tthis._activeVertexBuffers[posIndex] = target._vertexBufferPositions;\n\t\t\t\tthis._shaderMorphWeights[posIndex] = this._activeTargets[i].weight;\n\t\t\t\tposIndex++;\n\t\t\t}\n\t\t\tif (target._vertexBufferNormals) {\n\t\t\t\tthis._activeVertexBuffers[nrmIndex] = target._vertexBufferNormals;\n\t\t\t\tthis._shaderMorphWeights[nrmIndex] = this._activeTargets[i].weight;\n\t\t\t\tnrmIndex++;\n\t\t\t}\n\t\t}\n\t}\n\tupdate() {\n\t\tthis._dirty = false;\n\t\tconst targets = this.morph._targets;\n\t\tlet activeCount = 0;\n\t\tconst epsilon = 0.00001;\n\t\tfor (let i = 0; i < targets.length; i++) {\n\t\t\tconst absWeight = Math.abs(this.getWeight(i));\n\t\t\tif (absWeight > epsilon) {\n\t\t\t\tif (this._activeTargets.length <= activeCount) {\n\t\t\t\t\tthis._activeTargets[activeCount] = {};\n\t\t\t\t}\n\t\t\t\tconst activeTarget = this._activeTargets[activeCount++];\n\t\t\t\tactiveTarget.absWeight = absWeight;\n\t\t\t\tactiveTarget.weight = this.getWeight(i);\n\t\t\t\tactiveTarget.target = targets[i];\n\t\t\t}\n\t\t}\n\t\tthis._activeTargets.length = activeCount;\n\t\tconst maxActiveTargets = this.morph.maxActiveTargets;\n\t\tif (this._activeTargets.length > maxActiveTargets) {\n\t\t\tthis._activeTargets.sort(function (l, r) {\n\t\t\t\treturn l.absWeight < r.absWeight ? 1 : r.absWeight < l.absWeight ? -1 : 0;\n\t\t\t});\n\t\t\tthis._activeTargets.length = maxActiveTargets;\n\t\t}\n\t\tif (this.morph.useTextureMorph) {\n\t\t\tthis._updateTextureMorph();\n\t\t} else {\n\t\t\tthis._updateVertexMorph();\n\t\t}\n\t}\n}\n\nexport { MorphInstance };\n", "import { RENDERSTYLE_WIREFRAME } from './constants.js';\nimport { MeshInstance } from './mesh-instance.js';\nimport { MorphInstance } from './morph-instance.js';\nimport { SkinInstance } from './skin-instance.js';\n\nclass Model {\n\tconstructor() {\n\t\tthis.graph = null;\n\t\tthis.meshInstances = [];\n\t\tthis.skinInstances = [];\n\t\tthis.morphInstances = [];\n\t\tthis.cameras = [];\n\t\tthis.lights = [];\n\t\tthis._shadersVersion = 0;\n\t\tthis._immutable = false;\n\t}\n\tgetGraph() {\n\t\treturn this.graph;\n\t}\n\tsetGraph(graph) {\n\t\tthis.graph = graph;\n\t}\n\tgetCameras() {\n\t\treturn this.cameras;\n\t}\n\tsetCameras(cameras) {\n\t\tthis.cameras = cameras;\n\t}\n\tgetLights() {\n\t\treturn this.lights;\n\t}\n\tsetLights(lights) {\n\t\tthis.lights = lights;\n\t}\n\tgetMaterials() {\n\t\tconst materials = [];\n\t\tfor (let i = 0; i < this.meshInstances.length; i++) {\n\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\tif (materials.indexOf(meshInstance.material) === -1) {\n\t\t\t\tmaterials.push(meshInstance.material);\n\t\t\t}\n\t\t}\n\t\treturn materials;\n\t}\n\tclone() {\n\t\tconst srcNodes = [];\n\t\tconst cloneNodes = [];\n\t\tconst _duplicate = function _duplicate(node) {\n\t\t\tconst newNode = node.clone();\n\t\t\tsrcNodes.push(node);\n\t\t\tcloneNodes.push(newNode);\n\t\t\tfor (let idx = 0; idx < node._children.length; idx++) {\n\t\t\t\tnewNode.addChild(_duplicate(node._children[idx]));\n\t\t\t}\n\t\t\treturn newNode;\n\t\t};\n\t\tconst cloneGraph = _duplicate(this.graph);\n\t\tconst cloneMeshInstances = [];\n\t\tconst cloneSkinInstances = [];\n\t\tconst cloneMorphInstances = [];\n\t\tfor (let i = 0; i < this.skinInstances.length; i++) {\n\t\t\tconst skin = this.skinInstances[i].skin;\n\t\t\tconst cloneSkinInstance = new SkinInstance(skin);\n\t\t\tconst bones = [];\n\t\t\tfor (let j = 0; j < skin.boneNames.length; j++) {\n\t\t\t\tconst boneName = skin.boneNames[j];\n\t\t\t\tconst bone = cloneGraph.findByName(boneName);\n\t\t\t\tbones.push(bone);\n\t\t\t}\n\t\t\tcloneSkinInstance.bones = bones;\n\t\t\tcloneSkinInstances.push(cloneSkinInstance);\n\t\t}\n\t\tfor (let i = 0; i < this.morphInstances.length; i++) {\n\t\t\tconst morph = this.morphInstances[i].morph;\n\t\t\tconst cloneMorphInstance = new MorphInstance(morph);\n\t\t\tcloneMorphInstances.push(cloneMorphInstance);\n\t\t}\n\t\tfor (let i = 0; i < this.meshInstances.length; i++) {\n\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\tconst nodeIndex = srcNodes.indexOf(meshInstance.node);\n\t\t\tconst cloneMeshInstance = new MeshInstance(meshInstance.mesh, meshInstance.material, cloneNodes[nodeIndex]);\n\t\t\tif (meshInstance.skinInstance) {\n\t\t\t\tconst skinInstanceIndex = this.skinInstances.indexOf(meshInstance.skinInstance);\n\t\t\t\tcloneMeshInstance.skinInstance = cloneSkinInstances[skinInstanceIndex];\n\t\t\t}\n\t\t\tif (meshInstance.morphInstance) {\n\t\t\t\tconst morphInstanceIndex = this.morphInstances.indexOf(meshInstance.morphInstance);\n\t\t\t\tcloneMeshInstance.morphInstance = cloneMorphInstances[morphInstanceIndex];\n\t\t\t}\n\t\t\tcloneMeshInstances.push(cloneMeshInstance);\n\t\t}\n\t\tconst clone = new Model();\n\t\tclone.graph = cloneGraph;\n\t\tclone.meshInstances = cloneMeshInstances;\n\t\tclone.skinInstances = cloneSkinInstances;\n\t\tclone.morphInstances = cloneMorphInstances;\n\t\tclone.getGraph().syncHierarchy();\n\t\treturn clone;\n\t}\n\tdestroy() {\n\t\tconst meshInstances = this.meshInstances;\n\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\tmeshInstances[i].destroy();\n\t\t}\n\t\tthis.meshInstances.length = 0;\n\t}\n\tgenerateWireframe() {\n\t\tMeshInstance._prepareRenderStyleForArray(this.meshInstances, RENDERSTYLE_WIREFRAME);\n\t}\n}\n\nexport { Model };\n", "import { RefCountedObject } from '../core/ref-counted-object.js';\nimport { Vec3 } from '../core/math/vec3.js';\nimport { FloatPacking } from '../core/math/float-packing.js';\nimport { BoundingBox } from '../core/shape/bounding-box.js';\nimport { Texture } from '../platform/graphics/texture.js';\nimport { VertexBuffer } from '../platform/graphics/vertex-buffer.js';\nimport { VertexFormat } from '../platform/graphics/vertex-format.js';\nimport { PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGB32F, FILTER_NEAREST, ADDRESS_CLAMP_TO_EDGE, SEMANTIC_ATTR15, TYPE_UINT32, TYPE_FLOAT32 } from '../platform/graphics/constants.js';\n\nclass Morph extends RefCountedObject {\n\tconstructor(targets, graphicsDevice, {\n\t\tpreferHighPrecision = false\n\t} = {}) {\n\t\tsuper();\n\t\tthis._aabb = void 0;\n\t\tthis.preferHighPrecision = void 0;\n\t\tthis.device = graphicsDevice;\n\t\tthis.preferHighPrecision = preferHighPrecision;\n\t\tthis._targets = targets.slice();\n\t\tconst device = this.device;\n\t\tif (device.supportsMorphTargetTexturesCore) {\n\t\t\tconst renderableHalf = device.extTextureHalfFloat && device.textureHalfFloatRenderable ? PIXELFORMAT_RGBA16F : undefined;\n\t\t\tconst renderableFloat = device.extTextureFloat && device.textureFloatRenderable ? PIXELFORMAT_RGBA32F : undefined;\n\t\t\tthis._renderTextureFormat = this.preferHighPrecision ? renderableFloat != null ? renderableFloat : renderableHalf : renderableHalf != null ? renderableHalf : renderableFloat;\n\t\t\tconst textureHalf = device.extTextureHalfFloat && device.textureHalfFloatUpdatable ? PIXELFORMAT_RGBA16F : undefined;\n\t\t\tconst textureFloat = device.extTextureFloat ? PIXELFORMAT_RGB32F : undefined;\n\t\t\tthis._textureFormat = this.preferHighPrecision ? textureFloat != null ? textureFloat : textureHalf : textureHalf != null ? textureHalf : textureFloat;\n\t\t\tif (this._renderTextureFormat !== undefined && this._textureFormat !== undefined) {\n\t\t\t\tthis._useTextureMorph = true;\n\t\t\t}\n\t\t}\n\t\tthis._init();\n\t\tthis._updateMorphFlags();\n\t}\n\tget aabb() {\n\t\tif (!this._aabb) {\n\t\t\tconst min = new Vec3();\n\t\t\tconst max = new Vec3();\n\t\t\tfor (let i = 0; i < this._targets.length; i++) {\n\t\t\t\tconst targetAabb = this._targets[i].aabb;\n\t\t\t\tmin.min(targetAabb.getMin());\n\t\t\t\tmax.max(targetAabb.getMax());\n\t\t\t}\n\t\t\tthis._aabb = new BoundingBox();\n\t\t\tthis._aabb.setMinMax(min, max);\n\t\t}\n\t\treturn this._aabb;\n\t}\n\tget morphPositions() {\n\t\treturn this._morphPositions;\n\t}\n\tget morphNormals() {\n\t\treturn this._morphNormals;\n\t}\n\tget maxActiveTargets() {\n\t\tif (this._useTextureMorph) return this._targets.length;\n\t\treturn this._morphPositions && this._morphNormals ? 4 : 8;\n\t}\n\tget useTextureMorph() {\n\t\treturn this._useTextureMorph;\n\t}\n\t_init() {\n\t\tif (this._useTextureMorph) {\n\t\t\tthis._useTextureMorph = this._initTextureBased();\n\t\t}\n\t\tif (!this._useTextureMorph) {\n\t\t\tfor (let i = 0; i < this._targets.length; i++) {\n\t\t\t\tthis._targets[i]._initVertexBuffers(this.device);\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < this._targets.length; i++) {\n\t\t\tthis._targets[i]._postInit();\n\t\t}\n\t}\n\t_findSparseSet(deltaArrays, ids, usedDataIndices, floatRounding) {\n\t\tlet freeIndex = 1;\n\t\tconst dataCount = deltaArrays[0].length;\n\t\tfor (let v = 0; v < dataCount; v += 3) {\n\t\t\tlet vertexUsed = false;\n\t\t\tfor (let i = 0; i < deltaArrays.length; i++) {\n\t\t\t\tconst data = deltaArrays[i];\n\t\t\t\tif (data[v] !== 0 || data[v + 1] !== 0 || data[v + 2] !== 0) {\n\t\t\t\t\tvertexUsed = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (vertexUsed) {\n\t\t\t\tids.push(freeIndex + floatRounding);\n\t\t\t\tusedDataIndices.push(v / 3);\n\t\t\t\tfreeIndex++;\n\t\t\t} else {\n\t\t\t\tids.push(0 + floatRounding);\n\t\t\t}\n\t\t}\n\t\treturn freeIndex;\n\t}\n\t_initTextureBased() {\n\t\tconst useUintIds = this.device.isWebGPU;\n\t\tconst floatRounding = useUintIds ? 0 : 0.2;\n\t\tconst deltaArrays = [],\n\t\t\tdeltaInfos = [];\n\t\tfor (let i = 0; i < this._targets.length; i++) {\n\t\t\tconst target = this._targets[i];\n\t\t\tif (target.options.deltaPositions) {\n\t\t\t\tdeltaArrays.push(target.options.deltaPositions);\n\t\t\t\tdeltaInfos.push({\n\t\t\t\t\ttarget: target,\n\t\t\t\t\tname: 'texturePositions'\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (target.options.deltaNormals) {\n\t\t\t\tdeltaArrays.push(target.options.deltaNormals);\n\t\t\t\tdeltaInfos.push({\n\t\t\t\t\ttarget: target,\n\t\t\t\t\tname: 'textureNormals'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst ids = [],\n\t\t\tusedDataIndices = [];\n\t\tconst freeIndex = this._findSparseSet(deltaArrays, ids, usedDataIndices, floatRounding);\n\t\tconst maxTextureSize = Math.min(this.device.maxTextureSize, 4096);\n\t\tlet morphTextureWidth = Math.ceil(Math.sqrt(freeIndex));\n\t\tmorphTextureWidth = Math.min(morphTextureWidth, maxTextureSize);\n\t\tconst morphTextureHeight = Math.ceil(freeIndex / morphTextureWidth);\n\t\tif (morphTextureHeight > maxTextureSize) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.morphTextureWidth = morphTextureWidth;\n\t\tthis.morphTextureHeight = morphTextureHeight;\n\t\tlet halfFloat = false;\n\t\tlet numComponents = 3;\n\t\tconst float2Half = FloatPacking.float2Half;\n\t\tif (this._textureFormat === PIXELFORMAT_RGBA16F) {\n\t\t\thalfFloat = true;\n\t\t\tnumComponents = 4;\n\t\t}\n\t\tconst textures = [];\n\t\tfor (let i = 0; i < deltaArrays.length; i++) {\n\t\t\ttextures.push(this._createTexture('MorphTarget', this._textureFormat));\n\t\t}\n\t\tfor (let i = 0; i < deltaArrays.length; i++) {\n\t\t\tconst data = deltaArrays[i];\n\t\t\tconst texture = textures[i];\n\t\t\tconst textureData = texture.lock();\n\t\t\tif (halfFloat) {\n\t\t\t\tfor (let v = 0; v < usedDataIndices.length; v++) {\n\t\t\t\t\tconst index = usedDataIndices[v] * 3;\n\t\t\t\t\tconst dstIndex = v * numComponents + numComponents;\n\t\t\t\t\ttextureData[dstIndex] = float2Half(data[index]);\n\t\t\t\t\ttextureData[dstIndex + 1] = float2Half(data[index + 1]);\n\t\t\t\t\ttextureData[dstIndex + 2] = float2Half(data[index + 2]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let v = 0; v < usedDataIndices.length; v++) {\n\t\t\t\t\tconst index = usedDataIndices[v] * 3;\n\t\t\t\t\tconst dstIndex = v * numComponents + numComponents;\n\t\t\t\t\ttextureData[dstIndex] = data[index];\n\t\t\t\t\ttextureData[dstIndex + 1] = data[index + 1];\n\t\t\t\t\ttextureData[dstIndex + 2] = data[index + 2];\n\t\t\t\t}\n\t\t\t}\n\t\t\ttexture.unlock();\n\t\t\tconst target = deltaInfos[i].target;\n\t\t\ttarget._setTexture(deltaInfos[i].name, texture);\n\t\t}\n\t\tconst formatDesc = [{\n\t\t\tsemantic: SEMANTIC_ATTR15,\n\t\t\tcomponents: 1,\n\t\t\ttype: useUintIds ? TYPE_UINT32 : TYPE_FLOAT32\n\t\t}];\n\t\tthis.vertexBufferIds = new VertexBuffer(this.device, new VertexFormat(this.device, formatDesc, ids.length), ids.length, {\n\t\t\tdata: useUintIds ? new Uint32Array(ids) : new Float32Array(ids)\n\t\t});\n\t\treturn true;\n\t}\n\tdestroy() {\n\t\tvar _this$vertexBufferIds;\n\t\t(_this$vertexBufferIds = this.vertexBufferIds) == null || _this$vertexBufferIds.destroy();\n\t\tthis.vertexBufferIds = null;\n\t\tfor (let i = 0; i < this._targets.length; i++) {\n\t\t\tthis._targets[i].destroy();\n\t\t}\n\t\tthis._targets.length = 0;\n\t}\n\tget targets() {\n\t\treturn this._targets;\n\t}\n\t_updateMorphFlags() {\n\t\tthis._morphPositions = false;\n\t\tthis._morphNormals = false;\n\t\tfor (let i = 0; i < this._targets.length; i++) {\n\t\t\tconst target = this._targets[i];\n\t\t\tif (target.morphPositions) {\n\t\t\t\tthis._morphPositions = true;\n\t\t\t}\n\t\t\tif (target.morphNormals) {\n\t\t\t\tthis._morphNormals = true;\n\t\t\t}\n\t\t}\n\t}\n\t_createTexture(name, format) {\n\t\treturn new Texture(this.device, {\n\t\t\twidth: this.morphTextureWidth,\n\t\t\theight: this.morphTextureHeight,\n\t\t\tformat: format,\n\t\t\tcubemap: false,\n\t\t\tmipmaps: false,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\tname: name\n\t\t});\n\t}\n}\n\nexport { Morph };\n", "import { BoundingBox } from '../core/shape/bounding-box.js';\nimport { TYPE_FLOAT32, SEMANTIC_ATTR0 } from '../platform/graphics/constants.js';\nimport { VertexBuffer } from '../platform/graphics/vertex-buffer.js';\nimport { VertexFormat } from '../platform/graphics/vertex-format.js';\n\nclass MorphTarget {\n\tconstructor(options) {\n\t\tthis.used = false;\n\t\tif (arguments.length === 2) {\n\t\t\toptions = arguments[1];\n\t\t}\n\t\tthis.options = options;\n\t\tthis._name = options.name;\n\t\tthis._defaultWeight = options.defaultWeight || 0;\n\t\tthis._aabb = options.aabb;\n\t\tthis.deltaPositions = options.deltaPositions;\n\t}\n\tdestroy() {\n\t\tvar _this$_vertexBufferPo, _this$_vertexBufferNo, _this$texturePosition, _this$textureNormals;\n\t\t(_this$_vertexBufferPo = this._vertexBufferPositions) == null || _this$_vertexBufferPo.destroy();\n\t\tthis._vertexBufferPositions = null;\n\t\t(_this$_vertexBufferNo = this._vertexBufferNormals) == null || _this$_vertexBufferNo.destroy();\n\t\tthis._vertexBufferNormals = null;\n\t\t(_this$texturePosition = this.texturePositions) == null || _this$texturePosition.destroy();\n\t\tthis.texturePositions = null;\n\t\t(_this$textureNormals = this.textureNormals) == null || _this$textureNormals.destroy();\n\t\tthis.textureNormals = null;\n\t}\n\tget name() {\n\t\treturn this._name;\n\t}\n\tget defaultWeight() {\n\t\treturn this._defaultWeight;\n\t}\n\tget aabb() {\n\t\tif (!this._aabb) {\n\t\t\tthis._aabb = new BoundingBox();\n\t\t\tif (this.deltaPositions) this._aabb.compute(this.deltaPositions);\n\t\t}\n\t\treturn this._aabb;\n\t}\n\tget morphPositions() {\n\t\treturn !!this._vertexBufferPositions || !!this.texturePositions;\n\t}\n\tget morphNormals() {\n\t\treturn !!this._vertexBufferNormals || !!this.textureNormals;\n\t}\n\tclone() {\n\t\treturn new MorphTarget(this.options);\n\t}\n\t_postInit() {\n\t\tif (!this.options.preserveData) {\n\t\t\tthis.options = null;\n\t\t}\n\t\tthis.used = true;\n\t}\n\t_initVertexBuffers(graphicsDevice) {\n\t\tconst options = this.options;\n\t\tthis._vertexBufferPositions = this._createVertexBuffer(graphicsDevice, options.deltaPositions, options.deltaPositionsType);\n\t\tthis._vertexBufferNormals = this._createVertexBuffer(graphicsDevice, options.deltaNormals, options.deltaNormalsType);\n\t\tif (this._vertexBufferPositions) {\n\t\t\tthis.deltaPositions = this._vertexBufferPositions.lock();\n\t\t}\n\t}\n\t_createVertexBuffer(device, data, dataType = TYPE_FLOAT32) {\n\t\tif (data) {\n\t\t\tconst formatDesc = [{\n\t\t\t\tsemantic: SEMANTIC_ATTR0,\n\t\t\t\tcomponents: 3,\n\t\t\t\ttype: dataType\n\t\t\t}];\n\t\t\treturn new VertexBuffer(device, new VertexFormat(device, formatDesc), data.length / 3, {\n\t\t\t\tdata: data\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n\t_setTexture(name, texture) {\n\t\tthis[name] = texture;\n\t}\n}\n\nexport { MorphTarget };\n", "import { SEMANTIC_POSITION } from '../../../platform/graphics/constants.js';\nimport { shaderChunks } from '../chunks/chunks.js';\nimport { ChunkUtils } from '../chunk-utils.js';\nimport { ShaderUtils } from '../../../platform/graphics/shader-utils.js';\nimport { ShaderGenerator } from './shader-generator.js';\nimport { SKYTYPE_INFINITE } from '../../constants.js';\n\nconst mip2size = [128, 64, 16, 8, 4, 2];\nconst fShader = `\n\t\t#include \"decodePS\"\n\t\t#include \"gamma\"\n\t\t#include \"tonemapping\"\n\t\t#include \"envMultiplyPS\"\n\n\t\t#ifdef SKY_CUBEMAP\n\t\t\t\t#include \"cubemapSeams\"\n\t\t\t\t#include \"skyboxHDRPS\"\n\t\t#else\n\t\t\t\t#include \"sphericalPS\"\n\t\t\t\t#include \"envAtlasPS\"\n\t\t\t\t#include \"skyboxEnvPS\"\n\t\t#endif\n`;\nclass ShaderGeneratorSkybox extends ShaderGenerator {\n\tgenerateKey(options) {\n\t\tconst sharedKey = `skybox-${options.type}-${options.encoding}-${options.gamma}-${options.toneMapping}-${options.skymesh}`;\n\t\treturn sharedKey + (options.type === 'cubemap' ? `-${options.mip}` : '');\n\t}\n\tcreateShaderDefinition(device, options) {\n\t\tconst defines = new Map();\n\t\tdefines.set('SKYBOX_DECODE_FNC', ChunkUtils.decodeFunc(options.encoding));\n\t\tif (options.skymesh !== SKYTYPE_INFINITE) defines.set('SKYMESH', '');\n\t\tif (options.type === 'cubemap') {\n\t\t\tdefines.set('SKY_CUBEMAP', '');\n\t\t\tdefines.set('SKYBOX_MIP', (1 - 1 / mip2size[options.mip]).toString());\n\t\t}\n\t\tconst includes = new Map();\n\t\tincludes.set('decodePS', shaderChunks.decodePS);\n\t\tincludes.set('gamma', ShaderGenerator.gammaCode(options.gamma));\n\t\tincludes.set('tonemapping', ShaderGenerator.tonemapCode(options.toneMapping));\n\t\tincludes.set('envMultiplyPS', shaderChunks.envMultiplyPS);\n\t\tif (options.type === 'cubemap') {\n\t\t\tincludes.set('cubemapSeams', options.mip ? shaderChunks.fixCubemapSeamsStretchPS : shaderChunks.fixCubemapSeamsNonePS);\n\t\t\tincludes.set('skyboxHDRPS', shaderChunks.skyboxHDRPS);\n\t\t} else {\n\t\t\tincludes.set('sphericalPS', shaderChunks.sphericalPS);\n\t\t\tincludes.set('envAtlasPS', shaderChunks.envAtlasPS);\n\t\t\tincludes.set('skyboxEnvPS', shaderChunks.skyboxEnvPS);\n\t\t}\n\t\treturn ShaderUtils.createDefinition(device, {\n\t\t\tname: 'SkyboxShader',\n\t\t\tattributes: {\n\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t},\n\t\t\tvertexCode: shaderChunks.skyboxVS,\n\t\t\tvertexDefines: defines,\n\t\t\tfragmentCode: fShader,\n\t\t\tfragmentDefines: defines,\n\t\t\tfragmentIncludes: includes\n\t\t});\n\t}\n}\nconst skybox = new ShaderGeneratorSkybox();\n\nexport { skybox };\n", "import { Vec2 } from '../../core/math/vec2.js';\nimport { Vec3 } from '../../core/math/vec3.js';\n\nconst calculateNormals = (positions, indices) => {\n\tconst triangleCount = indices.length / 3;\n\tconst vertexCount = positions.length / 3;\n\tconst p1 = new Vec3();\n\tconst p2 = new Vec3();\n\tconst p3 = new Vec3();\n\tconst p1p2 = new Vec3();\n\tconst p1p3 = new Vec3();\n\tconst faceNormal = new Vec3();\n\tconst normals = [];\n\tfor (let i = 0; i < positions.length; i++) {\n\t\tnormals[i] = 0;\n\t}\n\tfor (let i = 0; i < triangleCount; i++) {\n\t\tconst i1 = indices[i * 3];\n\t\tconst i2 = indices[i * 3 + 1];\n\t\tconst i3 = indices[i * 3 + 2];\n\t\tp1.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]);\n\t\tp2.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]);\n\t\tp3.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]);\n\t\tp1p2.sub2(p2, p1);\n\t\tp1p3.sub2(p3, p1);\n\t\tfaceNormal.cross(p1p2, p1p3).normalize();\n\t\tnormals[i1 * 3] += faceNormal.x;\n\t\tnormals[i1 * 3 + 1] += faceNormal.y;\n\t\tnormals[i1 * 3 + 2] += faceNormal.z;\n\t\tnormals[i2 * 3] += faceNormal.x;\n\t\tnormals[i2 * 3 + 1] += faceNormal.y;\n\t\tnormals[i2 * 3 + 2] += faceNormal.z;\n\t\tnormals[i3 * 3] += faceNormal.x;\n\t\tnormals[i3 * 3 + 1] += faceNormal.y;\n\t\tnormals[i3 * 3 + 2] += faceNormal.z;\n\t}\n\tfor (let i = 0; i < vertexCount; i++) {\n\t\tconst nx = normals[i * 3];\n\t\tconst ny = normals[i * 3 + 1];\n\t\tconst nz = normals[i * 3 + 2];\n\t\tconst invLen = 1 / Math.sqrt(nx * nx + ny * ny + nz * nz);\n\t\tnormals[i * 3] *= invLen;\n\t\tnormals[i * 3 + 1] *= invLen;\n\t\tnormals[i * 3 + 2] *= invLen;\n\t}\n\treturn normals;\n};\nconst calculateTangents = (positions, normals, uvs, indices) => {\n\tconst triangleCount = indices.length / 3;\n\tconst vertexCount = positions.length / 3;\n\tconst v1 = new Vec3();\n\tconst v2 = new Vec3();\n\tconst v3 = new Vec3();\n\tconst w1 = new Vec2();\n\tconst w2 = new Vec2();\n\tconst w3 = new Vec2();\n\tconst sdir = new Vec3();\n\tconst tdir = new Vec3();\n\tconst tan1 = new Float32Array(vertexCount * 3);\n\tconst tan2 = new Float32Array(vertexCount * 3);\n\tconst tangents = [];\n\tfor (let i = 0; i < triangleCount; i++) {\n\t\tconst i1 = indices[i * 3];\n\t\tconst i2 = indices[i * 3 + 1];\n\t\tconst i3 = indices[i * 3 + 2];\n\t\tv1.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]);\n\t\tv2.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]);\n\t\tv3.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]);\n\t\tw1.set(uvs[i1 * 2], uvs[i1 * 2 + 1]);\n\t\tw2.set(uvs[i2 * 2], uvs[i2 * 2 + 1]);\n\t\tw3.set(uvs[i3 * 2], uvs[i3 * 2 + 1]);\n\t\tconst x1 = v2.x - v1.x;\n\t\tconst x2 = v3.x - v1.x;\n\t\tconst y1 = v2.y - v1.y;\n\t\tconst y2 = v3.y - v1.y;\n\t\tconst z1 = v2.z - v1.z;\n\t\tconst z2 = v3.z - v1.z;\n\t\tconst s1 = w2.x - w1.x;\n\t\tconst s2 = w3.x - w1.x;\n\t\tconst _t = w2.y - w1.y;\n\t\tconst _t2 = w3.y - w1.y;\n\t\tconst area = s1 * _t2 - s2 * _t;\n\t\tif (area === 0) {\n\t\t\tsdir.set(0, 1, 0);\n\t\t\ttdir.set(1, 0, 0);\n\t\t} else {\n\t\t\tconst r = 1 / area;\n\t\t\tsdir.set((_t2 * x1 - _t * x2) * r, (_t2 * y1 - _t * y2) * r, (_t2 * z1 - _t * z2) * r);\n\t\t\ttdir.set((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r);\n\t\t}\n\t\ttan1[i1 * 3 + 0] += sdir.x;\n\t\ttan1[i1 * 3 + 1] += sdir.y;\n\t\ttan1[i1 * 3 + 2] += sdir.z;\n\t\ttan1[i2 * 3 + 0] += sdir.x;\n\t\ttan1[i2 * 3 + 1] += sdir.y;\n\t\ttan1[i2 * 3 + 2] += sdir.z;\n\t\ttan1[i3 * 3 + 0] += sdir.x;\n\t\ttan1[i3 * 3 + 1] += sdir.y;\n\t\ttan1[i3 * 3 + 2] += sdir.z;\n\t\ttan2[i1 * 3 + 0] += tdir.x;\n\t\ttan2[i1 * 3 + 1] += tdir.y;\n\t\ttan2[i1 * 3 + 2] += tdir.z;\n\t\ttan2[i2 * 3 + 0] += tdir.x;\n\t\ttan2[i2 * 3 + 1] += tdir.y;\n\t\ttan2[i2 * 3 + 2] += tdir.z;\n\t\ttan2[i3 * 3 + 0] += tdir.x;\n\t\ttan2[i3 * 3 + 1] += tdir.y;\n\t\ttan2[i3 * 3 + 2] += tdir.z;\n\t}\n\tconst t1 = new Vec3();\n\tconst t2 = new Vec3();\n\tconst n = new Vec3();\n\tconst temp = new Vec3();\n\tfor (let i = 0; i < vertexCount; i++) {\n\t\tn.set(normals[i * 3], normals[i * 3 + 1], normals[i * 3 + 2]);\n\t\tt1.set(tan1[i * 3], tan1[i * 3 + 1], tan1[i * 3 + 2]);\n\t\tt2.set(tan2[i * 3], tan2[i * 3 + 1], tan2[i * 3 + 2]);\n\t\tconst ndott = n.dot(t1);\n\t\ttemp.copy(n).mulScalar(ndott);\n\t\ttemp.sub2(t1, temp).normalize();\n\t\ttangents[i * 4] = temp.x;\n\t\ttangents[i * 4 + 1] = temp.y;\n\t\ttangents[i * 4 + 2] = temp.z;\n\t\ttemp.cross(n, t1);\n\t\ttangents[i * 4 + 3] = temp.dot(t2) < 0.0 ? -1.0 : 1.0;\n\t}\n\treturn tangents;\n};\n\nexport { calculateNormals, calculateTangents };\n", "import { calculateNormals, calculateTangents } from './geometry-utils.js';\n\nclass Geometry {\n\tconstructor() {\n\t\tthis.positions = void 0;\n\t\tthis.normals = void 0;\n\t\tthis.colors = void 0;\n\t\tthis.uvs = void 0;\n\t\tthis.uvs1 = void 0;\n\t\tthis.blendIndices = void 0;\n\t\tthis.blendWeights = void 0;\n\t\tthis.tangents = void 0;\n\t\tthis.indices = void 0;\n\t}\n\tcalculateNormals() {\n\t\tthis.normals = calculateNormals(this.positions, this.indices);\n\t}\n\tcalculateTangents() {\n\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t}\n}\n\nexport { Geometry };\n", "import { Vec3 } from '../../core/math/vec3.js';\nimport { calculateTangents } from './geometry-utils.js';\nimport { Geometry } from './geometry.js';\n\nconst primitiveUv1Padding = 4.0 / 64;\nconst primitiveUv1PaddingScale = 1.0 - primitiveUv1Padding * 2;\nclass BoxGeometry extends Geometry {\n\tconstructor(opts = {}) {\n\t\tvar _opts$halfExtents, _opts$widthSegments, _opts$lengthSegments, _opts$heightSegments, _opts$yOffset;\n\t\tsuper();\n\t\tconst he = (_opts$halfExtents = opts.halfExtents) != null ? _opts$halfExtents : new Vec3(0.5, 0.5, 0.5);\n\t\tconst ws = (_opts$widthSegments = opts.widthSegments) != null ? _opts$widthSegments : 1;\n\t\tconst ls = (_opts$lengthSegments = opts.lengthSegments) != null ? _opts$lengthSegments : 1;\n\t\tconst hs = (_opts$heightSegments = opts.heightSegments) != null ? _opts$heightSegments : 1;\n\t\tconst yOffset = (_opts$yOffset = opts.yOffset) != null ? _opts$yOffset : 0;\n\t\tconst minY = -he.y + yOffset;\n\t\tconst maxY = he.y + yOffset;\n\t\tconst corners = [new Vec3(-he.x, minY, he.z), new Vec3(he.x, minY, he.z), new Vec3(he.x, maxY, he.z), new Vec3(-he.x, maxY, he.z), new Vec3(he.x, minY, -he.z), new Vec3(-he.x, minY, -he.z), new Vec3(-he.x, maxY, -he.z), new Vec3(he.x, maxY, -he.z)];\n\t\tconst faceAxes = [[0, 1, 3], [4, 5, 7], [3, 2, 6], [1, 0, 4], [1, 4, 2], [5, 0, 6]];\n\t\tconst faceNormals = [[0, 0, 1], [0, 0, -1], [0, 1, 0], [0, -1, 0], [1, 0, 0], [-1, 0, 0]];\n\t\tconst sides = {\n\t\t\tFRONT: 0,\n\t\t\tBACK: 1,\n\t\t\tTOP: 2,\n\t\t\tBOTTOM: 3,\n\t\t\tRIGHT: 4,\n\t\t\tLEFT: 5\n\t\t};\n\t\tconst positions = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\t\tlet vcounter = 0;\n\t\tconst generateFace = (side, uSegments, vSegments) => {\n\t\t\tconst temp1 = new Vec3();\n\t\t\tconst temp2 = new Vec3();\n\t\t\tconst temp3 = new Vec3();\n\t\t\tconst r = new Vec3();\n\t\t\tfor (let i = 0; i <= uSegments; i++) {\n\t\t\t\tfor (let j = 0; j <= vSegments; j++) {\n\t\t\t\t\ttemp1.lerp(corners[faceAxes[side][0]], corners[faceAxes[side][1]], i / uSegments);\n\t\t\t\t\ttemp2.lerp(corners[faceAxes[side][0]], corners[faceAxes[side][2]], j / vSegments);\n\t\t\t\t\ttemp3.sub2(temp2, corners[faceAxes[side][0]]);\n\t\t\t\t\tr.add2(temp1, temp3);\n\t\t\t\t\tlet u = i / uSegments;\n\t\t\t\t\tlet v = j / vSegments;\n\t\t\t\t\tpositions.push(r.x, r.y, r.z);\n\t\t\t\t\tnormals.push(faceNormals[side][0], faceNormals[side][1], faceNormals[side][2]);\n\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tu /= 3;\n\t\t\t\t\tv /= 3;\n\t\t\t\t\tu += side % 3 / 3;\n\t\t\t\t\tv += Math.floor(side / 3) / 3;\n\t\t\t\t\tif (i < uSegments && j < vSegments) {\n\t\t\t\t\t\tindices.push(vcounter + vSegments + 1, vcounter + 1, vcounter);\n\t\t\t\t\t\tindices.push(vcounter + vSegments + 1, vcounter + vSegments + 2, vcounter + 1);\n\t\t\t\t\t}\n\t\t\t\t\tvcounter++;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tgenerateFace(sides.FRONT, ws, hs);\n\t\tgenerateFace(sides.BACK, ws, hs);\n\t\tgenerateFace(sides.TOP, ws, ls);\n\t\tgenerateFace(sides.BOTTOM, ws, ls);\n\t\tgenerateFace(sides.RIGHT, ls, hs);\n\t\tgenerateFace(sides.LEFT, ls, hs);\n\t\tthis.positions = positions;\n\t\tthis.normals = normals;\n\t\tthis.uvs = uvs;\n\t\tthis.uvs1 = uvs;\n\t\tthis.indices = indices;\n\t\tif (opts.calculateTangents) {\n\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t}\n\t}\n}\n\nexport { BoxGeometry };\n", "import { calculateTangents } from './geometry-utils.js';\nimport { Geometry } from './geometry.js';\n\nclass SphereGeometry extends Geometry {\n\tconstructor(opts = {}) {\n\t\tvar _opts$radius, _opts$latitudeBands, _opts$longitudeBands;\n\t\tsuper();\n\t\tconst radius = (_opts$radius = opts.radius) != null ? _opts$radius : 0.5;\n\t\tconst latitudeBands = (_opts$latitudeBands = opts.latitudeBands) != null ? _opts$latitudeBands : 16;\n\t\tconst longitudeBands = (_opts$longitudeBands = opts.longitudeBands) != null ? _opts$longitudeBands : 16;\n\t\tconst positions = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\t\tfor (let lat = 0; lat <= latitudeBands; lat++) {\n\t\t\tconst theta = lat * Math.PI / latitudeBands;\n\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\tfor (let lon = 0; lon <= longitudeBands; lon++) {\n\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\tconst y = cosTheta;\n\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\tconst u = 1 - lon / longitudeBands;\n\t\t\t\tconst v = 1 - lat / latitudeBands;\n\t\t\t\tpositions.push(x * radius, y * radius, z * radius);\n\t\t\t\tnormals.push(x, y, z);\n\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t}\n\t\t}\n\t\tfor (let lat = 0; lat < latitudeBands; ++lat) {\n\t\t\tfor (let lon = 0; lon < longitudeBands; ++lon) {\n\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\tindices.push(first + 1, second, first);\n\t\t\t\tindices.push(first + 1, second + 1, second);\n\t\t\t}\n\t\t}\n\t\tthis.positions = positions;\n\t\tthis.normals = normals;\n\t\tthis.uvs = uvs;\n\t\tthis.uvs1 = uvs;\n\t\tthis.indices = indices;\n\t\tif (opts.calculateTangents) {\n\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t}\n\t}\n}\n\nexport { SphereGeometry };\n", "import { SphereGeometry } from './sphere-geometry.js';\n\nclass DomeGeometry extends SphereGeometry {\n\tconstructor(opts = {}) {\n\t\tvar _opts$latitudeBands, _opts$longitudeBands;\n\t\tconst radius = 0.5;\n\t\tconst latitudeBands = (_opts$latitudeBands = opts.latitudeBands) != null ? _opts$latitudeBands : 16;\n\t\tconst longitudeBands = (_opts$longitudeBands = opts.longitudeBands) != null ? _opts$longitudeBands : 16;\n\t\tsuper({\n\t\t\tradius,\n\t\t\tlatitudeBands,\n\t\t\tlongitudeBands\n\t\t});\n\t\tconst bottomLimit = 0.1;\n\t\tconst curvatureRadius = 0.95;\n\t\tconst curvatureRadiusSq = curvatureRadius * curvatureRadius;\n\t\tconst positions = this.positions;\n\t\tfor (let i = 0; i < positions.length; i += 3) {\n\t\t\tconst x = positions[i] / radius;\n\t\t\tlet y = positions[i + 1] / radius;\n\t\t\tconst z = positions[i + 2] / radius;\n\t\t\tif (y < 0) {\n\t\t\t\ty *= 0.3;\n\t\t\t\tif (x * x + z * z < curvatureRadiusSq) {\n\t\t\t\t\ty = -bottomLimit;\n\t\t\t\t}\n\t\t\t}\n\t\t\ty += bottomLimit;\n\t\t\ty *= radius;\n\t\t\tpositions[i + 1] = y;\n\t\t}\n\t}\n}\n\nexport { DomeGeometry };\n", "import { SKYTYPE_DOME, SKYTYPE_BOX } from '../constants.js';\nimport { Mesh } from '../mesh.js';\nimport { BoxGeometry } from '../geometry/box-geometry.js';\nimport { DomeGeometry } from '../geometry/dome-geometry.js';\n\nclass SkyGeometry {\n\tstatic create(device, type) {\n\t\tswitch (type) {\n\t\t\tcase SKYTYPE_BOX:\n\t\t\t\treturn SkyGeometry.box(device);\n\t\t\tcase SKYTYPE_DOME:\n\t\t\t\treturn SkyGeometry.dome(device);\n\t\t}\n\t\treturn SkyGeometry.infinite(device);\n\t}\n\tstatic infinite(device) {\n\t\treturn Mesh.fromGeometry(device, new BoxGeometry(device));\n\t}\n\tstatic box(device) {\n\t\treturn Mesh.fromGeometry(device, new BoxGeometry({\n\t\t\tyOffset: 0.5\n\t\t}));\n\t}\n\tstatic dome(device) {\n\t\tconst geom = new DomeGeometry({\n\t\t\tlatitudeBands: 50,\n\t\t\tlongitudeBands: 50\n\t\t});\n\t\tgeom.normals = undefined;\n\t\tgeom.uvs = undefined;\n\t\treturn Mesh.fromGeometry(device, geom);\n\t}\n}\n\nexport { SkyGeometry };\n", "import { CULLFACE_FRONT } from '../../platform/graphics/constants.js';\nimport { ShaderProcessorOptions } from '../../platform/graphics/shader-processor-options.js';\nimport { SHADER_FORWARDHDR, GAMMA_SRGBHDR, GAMMA_NONE, TONEMAP_LINEAR, LAYERID_SKYBOX } from '../constants.js';\nimport { Material } from '../materials/material.js';\nimport { MeshInstance } from '../mesh-instance.js';\nimport { getProgramLibrary } from '../shader-lib/get-program-library.js';\nimport { skybox } from '../shader-lib/programs/skybox.js';\nimport { SkyGeometry } from './sky-geometry.js';\n\nclass SkyMesh {\n\tconstructor(device, scene, node, texture, type) {\n\t\tthis.meshInstance = null;\n\t\tconst material = new Material();\n\t\tmaterial.name = 'SkyMaterial';\n\t\tmaterial.getShaderVariant = function (dev, sc, defs, unused, pass, sortedLights, viewUniformFormat, viewBindGroupFormat) {\n\t\t\tconst options = {\n\t\t\t\tpass: pass,\n\t\t\t\tencoding: texture.encoding,\n\t\t\t\tgamma: pass === SHADER_FORWARDHDR ? scene.gammaCorrection ? GAMMA_SRGBHDR : GAMMA_NONE : scene.gammaCorrection,\n\t\t\t\ttoneMapping: pass === SHADER_FORWARDHDR ? TONEMAP_LINEAR : scene.toneMapping,\n\t\t\t\tskymesh: type\n\t\t\t};\n\t\t\tif (texture.cubemap) {\n\t\t\t\toptions.type = 'cubemap';\n\t\t\t\toptions.mip = texture.fixCubemapSeams ? scene.skyboxMip : 0;\n\t\t\t\toptions.fixSeams = texture.fixCubemapSeams;\n\t\t\t} else {\n\t\t\t\toptions.type = 'envAtlas';\n\t\t\t}\n\t\t\tconst processingOptions = new ShaderProcessorOptions(viewUniformFormat, viewBindGroupFormat);\n\t\t\tconst library = getProgramLibrary(device);\n\t\t\tlibrary.register('skybox', skybox);\n\t\t\treturn library.getProgram('skybox', options, processingOptions);\n\t\t};\n\t\tif (texture.cubemap) {\n\t\t\tmaterial.setParameter('texture_cubeMap', texture);\n\t\t} else {\n\t\t\tmaterial.setParameter('texture_envAtlas', texture);\n\t\t\tmaterial.setParameter('mipLevel', scene._skyboxMip);\n\t\t}\n\t\tmaterial.cull = CULLFACE_FRONT;\n\t\tmaterial.depthWrite = false;\n\t\tconst skyLayer = scene.layers.getLayerById(LAYERID_SKYBOX);\n\t\tif (skyLayer) {\n\t\t\tconst mesh = SkyGeometry.create(device, type);\n\t\t\tconst meshInstance = new MeshInstance(mesh, material, node);\n\t\t\tthis.meshInstance = meshInstance;\n\t\t\tmeshInstance.cull = false;\n\t\t\tmeshInstance.pick = false;\n\t\t\tskyLayer.addMeshInstances([meshInstance]);\n\t\t\tthis.skyLayer = skyLayer;\n\t\t}\n\t}\n\tdestroy() {\n\t\tif (this.meshInstance) {\n\t\t\tif (this.skyLayer) {\n\t\t\t\tthis.skyLayer.removeMeshInstances([this.meshInstance]);\n\t\t\t}\n\t\t\tthis.meshInstance.destroy();\n\t\t\tthis.meshInstance = null;\n\t\t}\n\t}\n}\n\nexport { SkyMesh };\n", "import { Vec3 } from '../../core/math/vec3.js';\nimport { SKYTYPE_INFINITE } from '../constants.js';\nimport { GraphNode } from '../graph-node.js';\nimport { SkyMesh } from './sky-mesh.js';\n\nclass Sky {\n\tconstructor(scene) {\n\t\tthis._type = SKYTYPE_INFINITE;\n\t\tthis._center = new Vec3(0, 1, 0);\n\t\tthis.skyMesh = null;\n\t\tthis.node = new GraphNode('SkyMeshNode');\n\t\tthis.device = scene.device;\n\t\tthis.scene = scene;\n\t\tthis.center = new Vec3(0, 1, 0);\n\t\tthis.centerArray = new Float32Array(3);\n\t\tthis.projectedSkydomeCenterId = this.device.scope.resolve('projectedSkydomeCenter');\n\t}\n\tapplySettings(render) {\n\t\tvar _render$skyType, _render$skyMeshPositi, _render$skyMeshRotati, _render$skyMeshScale;\n\t\tthis.type = (_render$skyType = render.skyType) != null ? _render$skyType : SKYTYPE_INFINITE;\n\t\tthis.node.setLocalPosition(new Vec3((_render$skyMeshPositi = render.skyMeshPosition) != null ? _render$skyMeshPositi : [0, 0, 0]));\n\t\tthis.node.setLocalEulerAngles(new Vec3((_render$skyMeshRotati = render.skyMeshRotation) != null ? _render$skyMeshRotati : [0, 0, 0]));\n\t\tthis.node.setLocalScale(new Vec3((_render$skyMeshScale = render.skyMeshScale) != null ? _render$skyMeshScale : [1, 1, 1]));\n\t\tif (render.skyCenter) {\n\t\t\tthis._center = new Vec3(render.skyCenter);\n\t\t}\n\t}\n\tset type(value) {\n\t\tif (this._type !== value) {\n\t\t\tthis._type = value;\n\t\t\tthis.scene.updateShaders = true;\n\t\t\tthis.updateSkyMesh();\n\t\t}\n\t}\n\tget type() {\n\t\treturn this._type;\n\t}\n\tset center(value) {\n\t\tthis._center.copy(value);\n\t}\n\tget center() {\n\t\treturn this._center;\n\t}\n\tupdateSkyMesh() {\n\t\tconst texture = this.scene._getSkyboxTex();\n\t\tif (texture) {\n\t\t\tthis.resetSkyMesh();\n\t\t\tthis.skyMesh = new SkyMesh(this.device, this.scene, this.node, texture, this.type);\n\t\t\tthis.scene.fire('set:skybox', texture);\n\t\t}\n\t}\n\tresetSkyMesh() {\n\t\tvar _this$skyMesh;\n\t\t(_this$skyMesh = this.skyMesh) == null || _this$skyMesh.destroy();\n\t\tthis.skyMesh = null;\n\t}\n\tupdate() {\n\t\tif (this.type !== SKYTYPE_INFINITE) {\n\t\t\tconst {\n\t\t\t\tcenter,\n\t\t\t\tcenterArray\n\t\t\t} = this;\n\t\t\tconst temp = new Vec3();\n\t\t\tthis.node.getWorldTransform().transformPoint(center, temp);\n\t\t\tcenterArray[0] = temp.x;\n\t\t\tcenterArray[1] = temp.y;\n\t\t\tcenterArray[2] = temp.z;\n\t\t\tthis.projectedSkydomeCenterId.setValue(centerArray);\n\t\t}\n\t}\n}\n\nexport { Sky };\n", "import { Mat4 } from '../../core/math/mat4.js';\nimport { PRIMITIVE_LINES } from '../../platform/graphics/constants.js';\nimport { Mesh } from '../mesh.js';\nimport { MeshInstance } from '../mesh-instance.js';\nimport { GraphNode } from '../graph-node.js';\n\nconst identityGraphNode = new GraphNode();\nidentityGraphNode.worldTransform = Mat4.IDENTITY;\nidentityGraphNode._dirtyWorld = identityGraphNode._dirtyNormal = false;\nclass ImmediateBatch {\n\tconstructor(device, material, layer) {\n\t\tthis.material = material;\n\t\tthis.layer = layer;\n\t\tthis.positions = [];\n\t\tthis.colors = [];\n\t\tthis.mesh = new Mesh(device);\n\t\tthis.meshInstance = null;\n\t}\n\taddLines(positions, color) {\n\t\tconst destPos = this.positions;\n\t\tconst count = positions.length;\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst pos = positions[i];\n\t\t\tdestPos.push(pos.x, pos.y, pos.z);\n\t\t}\n\t\tconst destCol = this.colors;\n\t\tif (color.length) {\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tconst col = color[i];\n\t\t\t\tdestCol.push(col.r, col.g, col.b, col.a);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tdestCol.push(color.r, color.g, color.b, color.a);\n\t\t\t}\n\t\t}\n\t}\n\taddLinesArrays(positions, color) {\n\t\tconst destPos = this.positions;\n\t\tfor (let i = 0; i < positions.length; i += 3) {\n\t\t\tdestPos.push(positions[i], positions[i + 1], positions[i + 2]);\n\t\t}\n\t\tconst destCol = this.colors;\n\t\tif (color.length) {\n\t\t\tfor (let i = 0; i < color.length; i += 4) {\n\t\t\t\tdestCol.push(color[i], color[i + 1], color[i + 2], color[i + 3]);\n\t\t\t}\n\t\t} else {\n\t\t\tconst count = positions.length / 3;\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tdestCol.push(color.r, color.g, color.b, color.a);\n\t\t\t}\n\t\t}\n\t}\n\tonPreRender(visibleList, transparent) {\n\t\tif (this.positions.length > 0 && this.material.transparent === transparent) {\n\t\t\tthis.mesh.setPositions(this.positions);\n\t\t\tthis.mesh.setColors(this.colors);\n\t\t\tthis.mesh.update(PRIMITIVE_LINES, false);\n\t\t\tif (!this.meshInstance) {\n\t\t\t\tthis.meshInstance = new MeshInstance(this.mesh, this.material, identityGraphNode);\n\t\t\t}\n\t\t\tvisibleList.push(this.meshInstance);\n\t\t}\n\t}\n\tclear() {\n\t\tthis.positions.length = 0;\n\t\tthis.colors.length = 0;\n\t}\n}\n\nexport { ImmediateBatch };\n", "import { ImmediateBatch } from './immediate-batch.js';\n\nclass ImmediateBatches {\n\tconstructor(device) {\n\t\tthis.device = device;\n\t\tthis.map = new Map();\n\t}\n\tgetBatch(material, layer) {\n\t\tlet batch = this.map.get(material);\n\t\tif (!batch) {\n\t\t\tbatch = new ImmediateBatch(this.device, material, layer);\n\t\t\tthis.map.set(material, batch);\n\t\t}\n\t\treturn batch;\n\t}\n\tonPreRender(visibleList, transparent) {\n\t\tthis.map.forEach(batch => {\n\t\t\tbatch.onPreRender(visibleList, transparent);\n\t\t});\n\t}\n\tclear() {\n\t\tthis.map.forEach(batch => batch.clear());\n\t}\n}\n\nexport { ImmediateBatches };\n", "import { PRIMITIVE_TRISTRIP } from '../../platform/graphics/constants.js';\nimport { BLEND_NORMAL } from '../constants.js';\nimport { GraphNode } from '../graph-node.js';\nimport { Mesh } from '../mesh.js';\nimport { MeshInstance } from '../mesh-instance.js';\nimport { BasicMaterial } from '../materials/basic-material.js';\nimport { createShaderFromCode } from '../shader-lib/utils.js';\nimport { shaderChunks } from '../shader-lib/chunks/chunks.js';\nimport { ImmediateBatches } from './immediate-batches.js';\nimport { Vec3 } from '../../core/math/vec3.js';\n\nconst tempPoints = [];\nconst vec = new Vec3();\nclass Immediate {\n\tconstructor(device) {\n\t\tthis.device = device;\n\t\tthis.quadMesh = null;\n\t\tthis.textureShader = null;\n\t\tthis.depthTextureShader = null;\n\t\tthis.cubeLocalPos = null;\n\t\tthis.cubeWorldPos = null;\n\t\tthis.batchesMap = new Map();\n\t\tthis.allBatches = new Set();\n\t\tthis.updatedLayers = new Set();\n\t\tthis._materialDepth = null;\n\t\tthis._materialNoDepth = null;\n\t\tthis.layerMeshInstances = new Map();\n\t}\n\tcreateMaterial(depthTest) {\n\t\tconst material = new BasicMaterial();\n\t\tmaterial.vertexColors = true;\n\t\tmaterial.blendType = BLEND_NORMAL;\n\t\tmaterial.depthTest = depthTest;\n\t\tmaterial.update();\n\t\treturn material;\n\t}\n\tget materialDepth() {\n\t\tif (!this._materialDepth) {\n\t\t\tthis._materialDepth = this.createMaterial(true);\n\t\t}\n\t\treturn this._materialDepth;\n\t}\n\tget materialNoDepth() {\n\t\tif (!this._materialNoDepth) {\n\t\t\tthis._materialNoDepth = this.createMaterial(false);\n\t\t}\n\t\treturn this._materialNoDepth;\n\t}\n\tgetBatch(layer, depthTest) {\n\t\tlet batches = this.batchesMap.get(layer);\n\t\tif (!batches) {\n\t\t\tbatches = new ImmediateBatches(this.device);\n\t\t\tthis.batchesMap.set(layer, batches);\n\t\t}\n\t\tthis.allBatches.add(batches);\n\t\tconst material = depthTest ? this.materialDepth : this.materialNoDepth;\n\t\treturn batches.getBatch(material, layer);\n\t}\n\tgetShader(id, fragment) {\n\t\tif (!this[id]) {\n\t\t\tconst vertex = `\n\t\t\t\tattribute vec2 vertex_position;\n\t\t\t\tuniform mat4 matrix_model;\n\t\t\t\tvarying vec2 uv0;\n\t\t\t\tvoid main(void) {\n\t\t\t\t\tgl_Position = matrix_model * vec4(vertex_position, 0, 1);\n\t\t\t\t\tuv0 = vertex_position.xy + 0.5;\n\t\t\t\t}\n\t\t\t`;\n\t\t\tthis[id] = createShaderFromCode(this.device, vertex, fragment, `DebugShader:${id}`);\n\t\t}\n\t\treturn this[id];\n\t}\n\tgetTextureShader() {\n\t\treturn this.getShader('textureShader', `\n\t\t\tvarying vec2 uv0;\n\t\t\tuniform sampler2D colorMap;\n\t\t\tvoid main (void) {\n\t\t\t\tgl_FragColor = vec4(texture2D(colorMap, uv0).xyz, 1);\n\t\t\t}\n\t\t`);\n\t}\n\tgetUnfilterableTextureShader() {\n\t\treturn this.getShader('textureShaderUnfilterable', `\n\t\t\tvarying vec2 uv0;\n\t\t\tuniform highp sampler2D colorMap;\n\t\t\tvoid main (void) {\n\t\t\t\tivec2 uv = ivec2(uv0 * textureSize(colorMap, 0));\n\t\t\t\tgl_FragColor = vec4(texelFetch(colorMap, uv, 0).xyz, 1);\n\t\t\t}\n\t\t`);\n\t}\n\tgetDepthTextureShader() {\n\t\treturn this.getShader('depthTextureShader', `\n\t\t\t${shaderChunks.screenDepthPS}\n\t\t\tvarying vec2 uv0;\n\t\t\tvoid main() {\n\t\t\t\tfloat depth = getLinearScreenDepth(getImageEffectUV(uv0)) * camera_params.x;\n\t\t\t\tgl_FragColor = vec4(vec3(depth), 1.0);\n\t\t\t}\n\t\t`);\n\t}\n\tgetQuadMesh() {\n\t\tif (!this.quadMesh) {\n\t\t\tthis.quadMesh = new Mesh(this.device);\n\t\t\tthis.quadMesh.setPositions([-0.5, -0.5, 0, 0.5, -0.5, 0, -0.5, 0.5, 0, 0.5, 0.5, 0]);\n\t\t\tthis.quadMesh.update(PRIMITIVE_TRISTRIP);\n\t\t}\n\t\treturn this.quadMesh;\n\t}\n\tdrawMesh(material, matrix, mesh, meshInstance, layer) {\n\t\tif (!meshInstance) {\n\t\t\tconst graphNode = this.getGraphNode(matrix);\n\t\t\tmeshInstance = new MeshInstance(mesh, material, graphNode);\n\t\t}\n\t\tlet layerMeshInstances = this.layerMeshInstances.get(layer);\n\t\tif (!layerMeshInstances) {\n\t\t\tlayerMeshInstances = [];\n\t\t\tthis.layerMeshInstances.set(layer, layerMeshInstances);\n\t\t}\n\t\tlayerMeshInstances.push(meshInstance);\n\t}\n\tdrawWireAlignedBox(min, max, color, depthTest, layer, mat) {\n\t\tif (mat) {\n\t\t\tconst mulPoint = (x, y, z) => {\n\t\t\t\tvec.set(x, y, z);\n\t\t\t\tmat.transformPoint(vec, vec);\n\t\t\t\ttempPoints.push(vec.x, vec.y, vec.z);\n\t\t\t};\n\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t} else {\n\t\t\ttempPoints.push(min.x, min.y, min.z, min.x, max.y, min.z, min.x, max.y, min.z, max.x, max.y, min.z, max.x, max.y, min.z, max.x, min.y, min.z, max.x, min.y, min.z, min.x, min.y, min.z, min.x, min.y, max.z, min.x, max.y, max.z, min.x, max.y, max.z, max.x, max.y, max.z, max.x, max.y, max.z, max.x, min.y, max.z, max.x, min.y, max.z, min.x, min.y, max.z, min.x, min.y, min.z, min.x, min.y, max.z, min.x, max.y, min.z, min.x, max.y, max.z, max.x, max.y, min.z, max.x, max.y, max.z, max.x, min.y, min.z, max.x, min.y, max.z);\n\t\t}\n\t\tconst batch = this.getBatch(layer, depthTest);\n\t\tbatch.addLinesArrays(tempPoints, color);\n\t\ttempPoints.length = 0;\n\t}\n\tdrawWireSphere(center, radius, color, numSegments, depthTest, layer) {\n\t\tconst step = 2 * Math.PI / numSegments;\n\t\tlet angle = 0;\n\t\tfor (let i = 0; i < numSegments; i++) {\n\t\t\tconst sin0 = Math.sin(angle);\n\t\t\tconst cos0 = Math.cos(angle);\n\t\t\tangle += step;\n\t\t\tconst sin1 = Math.sin(angle);\n\t\t\tconst cos1 = Math.cos(angle);\n\t\t\ttempPoints.push(center.x + radius * sin0, center.y, center.z + radius * cos0);\n\t\t\ttempPoints.push(center.x + radius * sin1, center.y, center.z + radius * cos1);\n\t\t\ttempPoints.push(center.x + radius * sin0, center.y + radius * cos0, center.z);\n\t\t\ttempPoints.push(center.x + radius * sin1, center.y + radius * cos1, center.z);\n\t\t\ttempPoints.push(center.x, center.y + radius * sin0, center.z + radius * cos0);\n\t\t\ttempPoints.push(center.x, center.y + radius * sin1, center.z + radius * cos1);\n\t\t}\n\t\tconst batch = this.getBatch(layer, depthTest);\n\t\tbatch.addLinesArrays(tempPoints, color);\n\t\ttempPoints.length = 0;\n\t}\n\tgetGraphNode(matrix) {\n\t\tconst graphNode = new GraphNode('ImmediateDebug');\n\t\tgraphNode.worldTransform = matrix;\n\t\tgraphNode._dirtyWorld = graphNode._dirtyNormal = false;\n\t\treturn graphNode;\n\t}\n\tonPreRenderLayer(layer, visibleList, transparent) {\n\t\tthis.batchesMap.forEach((batches, batchLayer) => {\n\t\t\tif (batchLayer === layer) {\n\t\t\t\tbatches.onPreRender(visibleList, transparent);\n\t\t\t}\n\t\t});\n\t\tif (!this.updatedLayers.has(layer)) {\n\t\t\tthis.updatedLayers.add(layer);\n\t\t\tconst meshInstances = this.layerMeshInstances.get(layer);\n\t\t\tif (meshInstances) {\n\t\t\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\t\t\tvisibleList.push(meshInstances[i]);\n\t\t\t\t}\n\t\t\t\tmeshInstances.length = 0;\n\t\t\t}\n\t\t}\n\t}\n\tonPostRender() {\n\t\tthis.allBatches.forEach(batch => batch.clear());\n\t\tthis.allBatches.clear();\n\t\tthis.updatedLayers.clear();\n\t}\n}\n\nexport { Immediate };\n", "import { math } from './math.js';\n\nconst _goldenAngle = 2.399963229728653;\nconst random = {\n\tcirclePoint(point) {\n\t\tconst r = Math.sqrt(Math.random());\n\t\tconst theta = Math.random() * 2 * Math.PI;\n\t\tpoint.x = r * Math.cos(theta);\n\t\tpoint.y = r * Math.sin(theta);\n\t},\n\tcirclePointDeterministic(point, index, numPoints) {\n\t\tconst theta = index * _goldenAngle;\n\t\tconst r = Math.sqrt(index) / Math.sqrt(numPoints);\n\t\tpoint.x = r * Math.cos(theta);\n\t\tpoint.y = r * Math.sin(theta);\n\t},\n\tspherePointDeterministic(point, index, numPoints, start = 0, end = 1) {\n\t\tstart = 1 - 2 * start;\n\t\tend = 1 - 2 * end;\n\t\tconst y = math.lerp(start, end, index / numPoints);\n\t\tconst radius = Math.sqrt(1 - y * y);\n\t\tconst theta = _goldenAngle * index;\n\t\tpoint.x = Math.cos(theta) * radius;\n\t\tpoint.y = y;\n\t\tpoint.z = Math.sin(theta) * radius;\n\t},\n\tradicalInverse(i) {\n\t\tlet bits = (i << 16 | i >>> 16) >>> 0;\n\t\tbits = ((bits & 0x55555555) << 1 | (bits & 0xAAAAAAAA) >>> 1) >>> 0;\n\t\tbits = ((bits & 0x33333333) << 2 | (bits & 0xCCCCCCCC) >>> 2) >>> 0;\n\t\tbits = ((bits & 0x0F0F0F0F) << 4 | (bits & 0xF0F0F0F0) >>> 4) >>> 0;\n\t\tbits = ((bits & 0x00FF00FF) << 8 | (bits & 0xFF00FF00) >>> 8) >>> 0;\n\t\treturn bits * 2.3283064365386963e-10;\n\t}\n};\n\nexport { random };\n", "import { random } from '../../core/math/random.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { TEXTUREPROJECTION_OCTAHEDRAL, TEXTUREPROJECTION_CUBE, FILTER_NEAREST } from '../../platform/graphics/constants.js';\nimport { DeviceCache } from '../../platform/graphics/device-cache.js';\nimport { GraphicsDevice } from '../../platform/graphics/graphics-device.js';\nimport { RenderTarget } from '../../platform/graphics/render-target.js';\nimport { drawQuadWithShader } from './quad-render-utils.js';\nimport { Texture } from '../../platform/graphics/texture.js';\nimport { ChunkUtils } from '../shader-lib/chunk-utils.js';\nimport { shaderChunks } from '../shader-lib/chunks/chunks.js';\nimport { getProgramLibrary } from '../shader-lib/get-program-library.js';\nimport { createShaderFromCode } from '../shader-lib/utils.js';\nimport { BlendState } from '../../platform/graphics/blend-state.js';\n\nconst getProjectionName = projection => {\n\tswitch (projection) {\n\t\tcase TEXTUREPROJECTION_CUBE:\n\t\t\treturn \"Cubemap\";\n\t\tcase TEXTUREPROJECTION_OCTAHEDRAL:\n\t\t\treturn \"Octahedral\";\n\t\tdefault:\n\t\t\treturn \"Equirect\";\n\t}\n};\nconst packFloat32ToRGBA8 = (value, array, offset) => {\n\tif (value <= 0) {\n\t\tarray[offset + 0] = 0;\n\t\tarray[offset + 1] = 0;\n\t\tarray[offset + 2] = 0;\n\t\tarray[offset + 3] = 0;\n\t} else if (value >= 1.0) {\n\t\tarray[offset + 0] = 255;\n\t\tarray[offset + 1] = 0;\n\t\tarray[offset + 2] = 0;\n\t\tarray[offset + 3] = 0;\n\t} else {\n\t\tlet encX = 1 * value % 1;\n\t\tlet encY = 255 * value % 1;\n\t\tlet encZ = 65025 * value % 1;\n\t\tconst encW = 16581375.0 * value % 1;\n\t\tencX -= encY / 255;\n\t\tencY -= encZ / 255;\n\t\tencZ -= encW / 255;\n\t\tarray[offset + 0] = Math.min(255, Math.floor(encX * 256));\n\t\tarray[offset + 1] = Math.min(255, Math.floor(encY * 256));\n\t\tarray[offset + 2] = Math.min(255, Math.floor(encZ * 256));\n\t\tarray[offset + 3] = Math.min(255, Math.floor(encW * 256));\n\t}\n};\nconst packSamples = samples => {\n\tconst numSamples = samples.length;\n\tconst w = Math.min(numSamples, 512);\n\tconst h = Math.ceil(numSamples / w);\n\tconst data = new Uint8Array(w * h * 4);\n\tlet off = 0;\n\tfor (let i = 0; i < numSamples; i += 4) {\n\t\tpackFloat32ToRGBA8(samples[i + 0] * 0.5 + 0.5, data, off + 0);\n\t\tpackFloat32ToRGBA8(samples[i + 1] * 0.5 + 0.5, data, off + 4);\n\t\tpackFloat32ToRGBA8(samples[i + 2] * 0.5 + 0.5, data, off + 8);\n\t\tpackFloat32ToRGBA8(samples[i + 3] / 8, data, off + 12);\n\t\toff += 16;\n\t}\n\treturn {\n\t\twidth: w,\n\t\theight: h,\n\t\tdata: data\n\t};\n};\nconst hemisphereSamplePhong = (dstVec, x, y, specularPower) => {\n\tconst phi = y * 2 * Math.PI;\n\tconst cosTheta = Math.pow(1 - x, 1 / (specularPower + 1));\n\tconst sinTheta = Math.sqrt(1 - cosTheta * cosTheta);\n\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst hemisphereSampleLambert = (dstVec, x, y) => {\n\tconst phi = y * 2 * Math.PI;\n\tconst cosTheta = Math.sqrt(1 - x);\n\tconst sinTheta = Math.sqrt(x);\n\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst hemisphereSampleGGX = (dstVec, x, y, a) => {\n\tconst phi = y * 2 * Math.PI;\n\tconst cosTheta = Math.sqrt((1 - x) / (1 + (a * a - 1) * x));\n\tconst sinTheta = Math.sqrt(1 - cosTheta * cosTheta);\n\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst D_GGX = (NoH, linearRoughness) => {\n\tconst a = NoH * linearRoughness;\n\tconst k = linearRoughness / (1.0 - NoH * NoH + a * a);\n\treturn k * k * (1 / Math.PI);\n};\nconst generatePhongSamples = (numSamples, specularPower) => {\n\tconst H = new Vec3();\n\tconst result = [];\n\tfor (let i = 0; i < numSamples; ++i) {\n\t\themisphereSamplePhong(H, i / numSamples, random.radicalInverse(i), specularPower);\n\t\tresult.push(H.x, H.y, H.z, 0);\n\t}\n\treturn result;\n};\nconst generateLambertSamples = (numSamples, sourceTotalPixels) => {\n\tconst pixelsPerSample = sourceTotalPixels / numSamples;\n\tconst H = new Vec3();\n\tconst result = [];\n\tfor (let i = 0; i < numSamples; ++i) {\n\t\themisphereSampleLambert(H, i / numSamples, random.radicalInverse(i));\n\t\tconst pdf = H.z / Math.PI;\n\t\tconst mipLevel = 0.5 * Math.log2(pixelsPerSample / pdf);\n\t\tresult.push(H.x, H.y, H.z, mipLevel);\n\t}\n\treturn result;\n};\nconst requiredSamplesGGX = {\n\t\"16\": {\n\t\t\"2\": 26,\n\t\t\"8\": 20,\n\t\t\"32\": 17,\n\t\t\"128\": 16,\n\t\t\"512\": 16\n\t},\n\t\"32\": {\n\t\t\"2\": 53,\n\t\t\"8\": 40,\n\t\t\"32\": 34,\n\t\t\"128\": 32,\n\t\t\"512\": 32\n\t},\n\t\"128\": {\n\t\t\"2\": 214,\n\t\t\"8\": 163,\n\t\t\"32\": 139,\n\t\t\"128\": 130,\n\t\t\"512\": 128\n\t},\n\t\"1024\": {\n\t\t\"2\": 1722,\n\t\t\"8\": 1310,\n\t\t\"32\": 1114,\n\t\t\"128\": 1041,\n\t\t\"512\": 1025\n\t}\n};\nconst getRequiredSamplesGGX = (numSamples, specularPower) => {\n\tconst table = requiredSamplesGGX[numSamples];\n\treturn table && table[specularPower] || numSamples;\n};\nconst generateGGXSamples = (numSamples, specularPower, sourceTotalPixels) => {\n\tconst pixelsPerSample = sourceTotalPixels / numSamples;\n\tconst roughness = 1 - Math.log2(specularPower) / 11.0;\n\tconst a = roughness * roughness;\n\tconst H = new Vec3();\n\tconst L = new Vec3();\n\tconst N = new Vec3(0, 0, 1);\n\tconst result = [];\n\tconst requiredSamples = getRequiredSamplesGGX(numSamples, specularPower);\n\tfor (let i = 0; i < requiredSamples; ++i) {\n\t\themisphereSampleGGX(H, i / requiredSamples, random.radicalInverse(i), a);\n\t\tconst NoH = H.z;\n\t\tL.set(H.x, H.y, H.z).mulScalar(2 * NoH).sub(N);\n\t\tif (L.z > 0) {\n\t\t\tconst pdf = D_GGX(Math.min(1, NoH), a) / 4 + 0.001;\n\t\t\tconst mipLevel = 0.5 * Math.log2(pixelsPerSample / pdf);\n\t\t\tresult.push(L.x, L.y, L.z, mipLevel);\n\t\t}\n\t}\n\twhile (result.length < numSamples * 4) {\n\t\tresult.push(0, 0, 0, 0);\n\t}\n\treturn result;\n};\nconst createSamplesTex = (device, name, samples) => {\n\tconst packedSamples = packSamples(samples);\n\treturn new Texture(device, {\n\t\tname: name,\n\t\twidth: packedSamples.width,\n\t\theight: packedSamples.height,\n\t\tmipmaps: false,\n\t\tminFilter: FILTER_NEAREST,\n\t\tmagFilter: FILTER_NEAREST,\n\t\tlevels: [packedSamples.data]\n\t});\n};\nclass SimpleCache {\n\tconstructor(destroyContent = true) {\n\t\tthis.map = new Map();\n\t\tthis.destroyContent = destroyContent;\n\t}\n\tdestroy() {\n\t\tif (this.destroyContent) {\n\t\t\tthis.map.forEach((value, key) => {\n\t\t\t\tvalue.destroy();\n\t\t\t});\n\t\t}\n\t}\n\tget(key, missFunc) {\n\t\tif (!this.map.has(key)) {\n\t\t\tconst result = missFunc();\n\t\t\tthis.map.set(key, result);\n\t\t\treturn result;\n\t\t}\n\t\treturn this.map.get(key);\n\t}\n}\nconst samplesCache = new SimpleCache(false);\nconst deviceCache = new DeviceCache();\nconst getCachedTexture = (device, key, getSamplesFnc) => {\n\tconst cache = deviceCache.get(device, () => {\n\t\treturn new SimpleCache();\n\t});\n\treturn cache.get(key, () => {\n\t\treturn createSamplesTex(device, key, samplesCache.get(key, getSamplesFnc));\n\t});\n};\nconst generateLambertSamplesTex = (device, numSamples, sourceTotalPixels) => {\n\tconst key = `lambert-samples-${numSamples}-${sourceTotalPixels}`;\n\treturn getCachedTexture(device, key, () => {\n\t\treturn generateLambertSamples(numSamples, sourceTotalPixels);\n\t});\n};\nconst generatePhongSamplesTex = (device, numSamples, specularPower) => {\n\tconst key = `phong-samples-${numSamples}-${specularPower}`;\n\treturn getCachedTexture(device, key, () => {\n\t\treturn generatePhongSamples(numSamples, specularPower);\n\t});\n};\nconst generateGGXSamplesTex = (device, numSamples, specularPower, sourceTotalPixels) => {\n\tconst key = `ggx-samples-${numSamples}-${specularPower}-${sourceTotalPixels}`;\n\treturn getCachedTexture(device, key, () => {\n\t\treturn generateGGXSamples(numSamples, specularPower, sourceTotalPixels);\n\t});\n};\nconst vsCode = `\nattribute vec2 vertex_position;\n\nuniform vec4 uvMod;\n\nvarying vec2 vUv0;\n\nvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\t\tvUv0 = getImageEffectUV((vertex_position.xy * 0.5 + 0.5) * uvMod.xy + uvMod.zw);\n}\n`;\nfunction reprojectTexture(source, target, options = {}) {\n\tvar _options$seamPixels, _options$rect$z, _options$rect, _options$rect$w, _options$rect2;\n\tif (source instanceof GraphicsDevice) {\n\t\tsource = arguments[1];\n\t\ttarget = arguments[2];\n\t\toptions = {};\n\t\tif (arguments[3] !== undefined) {\n\t\t\toptions.specularPower = arguments[3];\n\t\t}\n\t\tif (arguments[4] !== undefined) {\n\t\t\toptions.numSamples = arguments[4];\n\t\t}\n\t}\n\tconst seamPixels = (_options$seamPixels = options.seamPixels) != null ? _options$seamPixels : 0;\n\tconst innerWidth = ((_options$rect$z = (_options$rect = options.rect) == null ? void 0 : _options$rect.z) != null ? _options$rect$z : target.width) - seamPixels * 2;\n\tconst innerHeight = ((_options$rect$w = (_options$rect2 = options.rect) == null ? void 0 : _options$rect2.w) != null ? _options$rect$w : target.height) - seamPixels * 2;\n\tif (innerWidth < 1 || innerHeight < 1) {\n\t\treturn false;\n\t}\n\tconst funcNames = {\n\t\t'none': 'reproject',\n\t\t'lambert': 'prefilterSamplesUnweighted',\n\t\t'phong': 'prefilterSamplesUnweighted',\n\t\t'ggx': 'prefilterSamples'\n\t};\n\tconst specularPower = options.hasOwnProperty('specularPower') ? options.specularPower : 1;\n\tconst face = options.hasOwnProperty('face') ? options.face : null;\n\tconst distribution = options.hasOwnProperty('distribution') ? options.distribution : specularPower === 1 ? 'none' : 'phong';\n\tconst processFunc = funcNames[distribution] || 'reproject';\n\tconst prefilterSamples = processFunc.startsWith('prefilterSamples');\n\tconst decodeFunc = ChunkUtils.decodeFunc(source.encoding);\n\tconst encodeFunc = ChunkUtils.encodeFunc(target.encoding);\n\tconst sourceFunc = `sample${getProjectionName(source.projection)}`;\n\tconst targetFunc = `getDirection${getProjectionName(target.projection)}`;\n\tconst numSamples = options.hasOwnProperty('numSamples') ? options.numSamples : 1024;\n\tconst shaderKey = `${processFunc}_${decodeFunc}_${encodeFunc}_${sourceFunc}_${targetFunc}_${numSamples}`;\n\tconst device = source.device;\n\tlet shader = getProgramLibrary(device).getCachedShader(shaderKey);\n\tif (!shader) {\n\t\tconst defines = `#define PROCESS_FUNC ${processFunc}\\n` + (prefilterSamples ? `#define USE_SAMPLES_TEX\\n` : '') + (source.cubemap ? `#define CUBEMAP_SOURCE\\n` : '') + `#define DECODE_FUNC ${decodeFunc}\\n` + `#define ENCODE_FUNC ${encodeFunc}\\n` + `#define SOURCE_FUNC ${sourceFunc}\\n` + `#define TARGET_FUNC ${targetFunc}\\n` + `#define NUM_SAMPLES ${numSamples}\\n` + `#define NUM_SAMPLES_SQRT ${Math.round(Math.sqrt(numSamples)).toFixed(1)}\\n`;\n\t\tshader = createShaderFromCode(device, vsCode, `${defines}\\n${shaderChunks.reprojectPS}`, shaderKey);\n\t}\n\tdevice.setBlendState(BlendState.NOBLEND);\n\tconst constantSource = device.scope.resolve(source.cubemap ? \"sourceCube\" : \"sourceTex\");\n\tconstantSource.setValue(source);\n\tconst constantParams = device.scope.resolve(\"params\");\n\tdevice.scope.resolve(\"params2\");\n\tconst uvModParam = device.scope.resolve(\"uvMod\");\n\tif (seamPixels > 0) {\n\t\tuvModParam.setValue([(innerWidth + seamPixels * 2) / innerWidth, (innerHeight + seamPixels * 2) / innerHeight, -seamPixels / innerWidth, -seamPixels / innerHeight]);\n\t} else {\n\t\tuvModParam.setValue([1, 1, 0, 0]);\n\t}\n\tconst params = [0, source.fixCubemapSeams ? 1.0 / source.width : 0.0, target.fixCubemapSeams ? 1.0 / target.width : 0.0];\n\tif (prefilterSamples) {\n\t\tconst sourceTotalPixels = source.width * source.height * (source.cubemap ? 6 : 1);\n\t\tconst samplesTex = distribution === 'ggx' ? generateGGXSamplesTex(device, numSamples, specularPower, sourceTotalPixels) : distribution === 'lambert' ? generateLambertSamplesTex(device, numSamples, sourceTotalPixels) : generatePhongSamplesTex(device, numSamples, specularPower);\n\t\tdevice.scope.resolve(\"samplesTex\").setValue(samplesTex);\n\t\tdevice.scope.resolve(\"samplesTexInverseSize\").setValue([1.0 / samplesTex.width, 1.0 / samplesTex.height]);\n\t}\n\tfor (let f = 0; f < (target.cubemap ? 6 : 1); f++) {\n\t\tif (face === null || f === face) {\n\t\t\tvar _options;\n\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\tcolorBuffer: target,\n\t\t\t\tface: f,\n\t\t\t\tdepth: false,\n\t\t\t\tflipY: device.isWebGPU\n\t\t\t});\n\t\t\tparams[0] = f;\n\t\t\tconstantParams.setValue(params);\n\t\t\tdrawQuadWithShader(device, renderTarget, shader, (_options = options) == null ? void 0 : _options.rect);\n\t\t\trenderTarget.destroy();\n\t\t}\n\t}\n\treturn true;\n}\n\nexport { reprojectTexture };\n", "import { Vec4 } from '../../core/math/vec4.js';\nimport { Texture } from '../../platform/graphics/texture.js';\nimport { reprojectTexture } from './reproject-texture.js';\nimport { PIXELFORMAT_RGBA8, TEXTURETYPE_RGBP, TEXTURETYPE_DEFAULT, ADDRESS_CLAMP_TO_EDGE, TEXTUREPROJECTION_EQUIRECT, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F } from '../../platform/graphics/constants.js';\n\nconst fixCubemapSeams = true;\nconst calcLevels = (width, height = 0) => {\n\treturn 1 + Math.floor(Math.log2(Math.max(width, height)));\n};\nconst supportsFloat16 = device => {\n\treturn device.extTextureHalfFloat && device.textureHalfFloatRenderable;\n};\nconst supportsFloat32 = device => {\n\treturn device.extTextureFloat && device.textureFloatRenderable;\n};\nconst lightingSourcePixelFormat = device => {\n\treturn supportsFloat16(device) ? PIXELFORMAT_RGBA16F : supportsFloat32(device) ? PIXELFORMAT_RGBA32F : PIXELFORMAT_RGBA8;\n};\nconst lightingPixelFormat = device => {\n\treturn PIXELFORMAT_RGBA8;\n};\nconst createCubemap = (device, size, format, mipmaps) => {\n\treturn new Texture(device, {\n\t\tname: `lighting-${size}`,\n\t\tcubemap: true,\n\t\twidth: size,\n\t\theight: size,\n\t\tformat: format,\n\t\ttype: format === PIXELFORMAT_RGBA8 ? TEXTURETYPE_RGBP : TEXTURETYPE_DEFAULT,\n\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\tfixCubemapSeams: fixCubemapSeams,\n\t\tmipmaps: !!mipmaps\n\t});\n};\nclass EnvLighting {\n\tstatic generateSkyboxCubemap(source, size) {\n\t\tconst device = source.device;\n\t\tconst result = createCubemap(device, size || (source.cubemap ? source.width : source.width / 4), PIXELFORMAT_RGBA8, false);\n\t\treprojectTexture(source, result, {\n\t\t\tnumSamples: 1024\n\t\t});\n\t\treturn result;\n\t}\n\tstatic generateLightingSource(source, options) {\n\t\tconst device = source.device;\n\t\tconst format = lightingSourcePixelFormat(device);\n\t\tconst result = (options == null ? void 0 : options.target) || new Texture(device, {\n\t\t\tname: `lighting-source`,\n\t\t\tcubemap: true,\n\t\t\twidth: (options == null ? void 0 : options.size) || 128,\n\t\t\theight: (options == null ? void 0 : options.size) || 128,\n\t\t\tformat: format,\n\t\t\ttype: format === PIXELFORMAT_RGBA8 ? TEXTURETYPE_RGBP : TEXTURETYPE_DEFAULT,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\tfixCubemapSeams: false,\n\t\t\tmipmaps: true\n\t\t});\n\t\treprojectTexture(source, result, {\n\t\t\tnumSamples: source.mipmaps ? 1 : 1024\n\t\t});\n\t\treturn result;\n\t}\n\tstatic generateAtlas(source, options) {\n\t\tconst device = source.device;\n\t\tconst format = lightingPixelFormat();\n\t\tconst result = (options == null ? void 0 : options.target) || new Texture(device, {\n\t\t\tname: 'envAtlas',\n\t\t\twidth: (options == null ? void 0 : options.size) || 512,\n\t\t\theight: (options == null ? void 0 : options.size) || 512,\n\t\t\tformat: format,\n\t\t\ttype: TEXTURETYPE_RGBP ,\n\t\t\tprojection: TEXTUREPROJECTION_EQUIRECT,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\tmipmaps: false\n\t\t});\n\t\tconst s = result.width / 512;\n\t\tconst rect = new Vec4(0, 0, 512 * s, 256 * s);\n\t\tconst levels = calcLevels(256) - calcLevels(4);\n\t\tfor (let i = 0; i < levels; ++i) {\n\t\t\treprojectTexture(source, result, {\n\t\t\t\tnumSamples: 1,\n\t\t\t\trect: rect,\n\t\t\t\tseamPixels: s\n\t\t\t});\n\t\t\trect.x += rect.w;\n\t\t\trect.y += rect.w;\n\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t}\n\t\trect.set(0, 256 * s, 256 * s, 128 * s);\n\t\tfor (let i = 1; i < 7; ++i) {\n\t\t\treprojectTexture(source, result, {\n\t\t\t\tnumSamples: (options == null ? void 0 : options.numReflectionSamples) || 1024,\n\t\t\t\tdistribution: (options == null ? void 0 : options.distribution) || 'ggx',\n\t\t\t\tspecularPower: Math.max(1, 2048 >> i * 2),\n\t\t\t\trect: rect,\n\t\t\t\tseamPixels: s\n\t\t\t});\n\t\t\trect.y += rect.w;\n\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t}\n\t\trect.set(128 * s, (256 + 128) * s, 64 * s, 32 * s);\n\t\treprojectTexture(source, result, {\n\t\t\tnumSamples: (options == null ? void 0 : options.numAmbientSamples) || 2048,\n\t\t\tdistribution: 'lambert',\n\t\t\trect: rect,\n\t\t\tseamPixels: s\n\t\t});\n\t\treturn result;\n\t}\n\tstatic generatePrefilteredAtlas(sources, options) {\n\t\tconst device = sources[0].device;\n\t\tconst format = sources[0].format;\n\t\tconst type = sources[0].type;\n\t\tconst result = (options == null ? void 0 : options.target) || new Texture(device, {\n\t\t\tname: 'envPrefilteredAtlas',\n\t\t\twidth: (options == null ? void 0 : options.size) || 512,\n\t\t\theight: (options == null ? void 0 : options.size) || 512,\n\t\t\tformat: format,\n\t\t\ttype: type,\n\t\t\tprojection: TEXTUREPROJECTION_EQUIRECT,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\tmipmaps: false\n\t\t});\n\t\tconst s = result.width / 512;\n\t\tconst rect = new Vec4(0, 0, 512 * s, 256 * s);\n\t\tconst levels = calcLevels(512);\n\t\tfor (let i = 0; i < levels; ++i) {\n\t\t\treprojectTexture(sources[0], result, {\n\t\t\t\tnumSamples: 1,\n\t\t\t\trect: rect,\n\t\t\t\tseamPixels: s\n\t\t\t});\n\t\t\trect.x += rect.w;\n\t\t\trect.y += rect.w;\n\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t}\n\t\trect.set(0, 256 * s, 256 * s, 128 * s);\n\t\tfor (let i = 1; i < sources.length; ++i) {\n\t\t\treprojectTexture(sources[i], result, {\n\t\t\t\tnumSamples: 1,\n\t\t\t\trect: rect,\n\t\t\t\tseamPixels: s\n\t\t\t});\n\t\t\trect.y += rect.w;\n\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t}\n\t\trect.set(128 * s, (256 + 128) * s, 64 * s, 32 * s);\n\t\tif (options != null && options.legacyAmbient) {\n\t\t\treprojectTexture(sources[5], result, {\n\t\t\t\tnumSamples: 1,\n\t\t\t\trect: rect,\n\t\t\t\tseamPixels: s\n\t\t\t});\n\t\t} else {\n\t\t\treprojectTexture(sources[0], result, {\n\t\t\t\tnumSamples: (options == null ? void 0 : options.numSamples) || 2048,\n\t\t\t\tdistribution: 'lambert',\n\t\t\t\trect: rect,\n\t\t\t\tseamPixels: s\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n}\n\nexport { EnvLighting };\n", "import { EventHandler } from '../core/event-handler.js';\nimport { Color } from '../core/math/color.js';\nimport { Vec3 } from '../core/math/vec3.js';\nimport { Quat } from '../core/math/quat.js';\nimport { math } from '../core/math/math.js';\nimport { Mat3 } from '../core/math/mat3.js';\nimport { Mat4 } from '../core/math/mat4.js';\nimport { ADDRESS_CLAMP_TO_EDGE, FILTER_LINEAR, PIXELFORMAT_RGBA8 } from '../platform/graphics/constants.js';\nimport { BAKE_COLORDIR, FOG_NONE, GAMMA_SRGB, LAYERID_IMMEDIATE } from './constants.js';\nimport { LightingParams } from './lighting/lighting-params.js';\nimport { Sky } from './skybox/sky.js';\nimport { Immediate } from './immediate/immediate.js';\nimport { EnvLighting } from './graphics/env-lighting.js';\n\nclass Scene extends EventHandler {\n\tconstructor(graphicsDevice) {\n\t\tsuper();\n\t\tthis.ambientBake = false;\n\t\tthis.ambientBakeOcclusionBrightness = 0;\n\t\tthis.ambientBakeOcclusionContrast = 0;\n\t\tthis.ambientLight = new Color(0, 0, 0);\n\t\tthis.ambientLuminance = 0;\n\t\tthis.exposure = 1;\n\t\tthis.fogColor = new Color(0, 0, 0);\n\t\tthis.fogDensity = 0;\n\t\tthis.fogEnd = 1000;\n\t\tthis.fogStart = 1;\n\t\tthis.lightmapSizeMultiplier = 1;\n\t\tthis.lightmapMaxResolution = 2048;\n\t\tthis.lightmapMode = BAKE_COLORDIR;\n\t\tthis.lightmapFilterEnabled = false;\n\t\tthis.lightmapHDR = false;\n\t\tthis.root = null;\n\t\tthis.physicalUnits = false;\n\t\tthis._envAtlas = null;\n\t\tthis._skyboxCubeMap = null;\n\t\tthis.device = graphicsDevice;\n\t\tthis._gravity = new Vec3(0, -9.8, 0);\n\t\tthis._layers = null;\n\t\tthis._fog = FOG_NONE;\n\t\tthis._gammaCorrection = GAMMA_SRGB;\n\t\tthis._toneMapping = 0;\n\t\tthis._prefilteredCubemaps = [];\n\t\tthis._internalEnvAtlas = null;\n\t\tthis._skyboxIntensity = 1;\n\t\tthis._skyboxLuminance = 0;\n\t\tthis._skyboxMip = 0;\n\t\tthis._skyboxRotationShaderInclude = false;\n\t\tthis._skyboxRotation = new Quat();\n\t\tthis._skyboxRotationMat3 = new Mat3();\n\t\tthis._skyboxRotationMat4 = new Mat4();\n\t\tthis._ambientBakeNumSamples = 1;\n\t\tthis._ambientBakeSpherePart = 0.4;\n\t\tthis._lightmapFilterRange = 10;\n\t\tthis._lightmapFilterSmoothness = 0.2;\n\t\tthis._clusteredLightingEnabled = true;\n\t\tthis._lightingParams = new LightingParams(this.device.supportsAreaLights, this.device.maxTextureSize, () => {\n\t\t\tthis.updateShaders = true;\n\t\t});\n\t\tthis._sky = new Sky(this);\n\t\tthis._stats = {\n\t\t\tmeshInstances: 0,\n\t\t\tlights: 0,\n\t\t\tdynamicLights: 0,\n\t\t\tbakedLights: 0,\n\t\t\tupdateShadersTime: 0\n\t\t};\n\t\tthis.updateShaders = true;\n\t\tthis._shaderVersion = 0;\n\t\tthis.immediate = new Immediate(this.device);\n\t}\n\tget defaultDrawLayer() {\n\t\treturn this.layers.getLayerById(LAYERID_IMMEDIATE);\n\t}\n\tset ambientBakeNumSamples(value) {\n\t\tthis._ambientBakeNumSamples = math.clamp(Math.floor(value), 1, 255);\n\t}\n\tget ambientBakeNumSamples() {\n\t\treturn this._ambientBakeNumSamples;\n\t}\n\tset ambientBakeSpherePart(value) {\n\t\tthis._ambientBakeSpherePart = math.clamp(value, 0.001, 1);\n\t}\n\tget ambientBakeSpherePart() {\n\t\treturn this._ambientBakeSpherePart;\n\t}\n\tset clusteredLightingEnabled(value) {\n\t\tif (this.device.isWebGPU && !value) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this._clusteredLightingEnabled && value) {\n\t\t\tconsole.error('Turning on disabled clustered lighting is not currently supported');\n\t\t\treturn;\n\t\t}\n\t\tthis._clusteredLightingEnabled = value;\n\t}\n\tget clusteredLightingEnabled() {\n\t\treturn this._clusteredLightingEnabled;\n\t}\n\tset envAtlas(value) {\n\t\tif (value !== this._envAtlas) {\n\t\t\tthis._envAtlas = value;\n\t\t\tif (value) {\n\t\t\t\tvalue.addressU = ADDRESS_CLAMP_TO_EDGE;\n\t\t\t\tvalue.addressV = ADDRESS_CLAMP_TO_EDGE;\n\t\t\t\tvalue.minFilter = FILTER_LINEAR;\n\t\t\t\tvalue.magFilter = FILTER_LINEAR;\n\t\t\t\tvalue.mipmaps = false;\n\t\t\t}\n\t\t\tthis._prefilteredCubemaps = [];\n\t\t\tif (this._internalEnvAtlas) {\n\t\t\t\tthis._internalEnvAtlas.destroy();\n\t\t\t\tthis._internalEnvAtlas = null;\n\t\t\t}\n\t\t\tthis._resetSkyMesh();\n\t\t}\n\t}\n\tget envAtlas() {\n\t\treturn this._envAtlas;\n\t}\n\tset fog(type) {\n\t\tif (type !== this._fog) {\n\t\t\tthis._fog = type;\n\t\t\tthis.updateShaders = true;\n\t\t}\n\t}\n\tget fog() {\n\t\treturn this._fog;\n\t}\n\tset gammaCorrection(value) {\n\t\tif (value !== this._gammaCorrection) {\n\t\t\tthis._gammaCorrection = value;\n\t\t\tthis.updateShaders = true;\n\t\t}\n\t}\n\tget gammaCorrection() {\n\t\treturn this._gammaCorrection;\n\t}\n\tset layers(layers) {\n\t\tconst prev = this._layers;\n\t\tthis._layers = layers;\n\t\tthis.fire('set:layers', prev, layers);\n\t}\n\tget layers() {\n\t\treturn this._layers;\n\t}\n\tget sky() {\n\t\treturn this._sky;\n\t}\n\tget lighting() {\n\t\treturn this._lightingParams;\n\t}\n\tset lightmapFilterRange(value) {\n\t\tthis._lightmapFilterRange = Math.max(value, 0.001);\n\t}\n\tget lightmapFilterRange() {\n\t\treturn this._lightmapFilterRange;\n\t}\n\tset lightmapFilterSmoothness(value) {\n\t\tthis._lightmapFilterSmoothness = Math.max(value, 0.001);\n\t}\n\tget lightmapFilterSmoothness() {\n\t\treturn this._lightmapFilterSmoothness;\n\t}\n\tset prefilteredCubemaps(value) {\n\t\tvalue = value || [];\n\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\tconst changed = cubemaps.length !== value.length || cubemaps.some((c, i) => c !== value[i]);\n\t\tif (changed) {\n\t\t\tconst complete = value.length === 6 && value.every(c => !!c);\n\t\t\tif (complete) {\n\t\t\t\tthis._internalEnvAtlas = EnvLighting.generatePrefilteredAtlas(value, {\n\t\t\t\t\ttarget: this._internalEnvAtlas\n\t\t\t\t});\n\t\t\t\tthis._envAtlas = this._internalEnvAtlas;\n\t\t\t} else {\n\t\t\t\tif (this._internalEnvAtlas) {\n\t\t\t\t\tthis._internalEnvAtlas.destroy();\n\t\t\t\t\tthis._internalEnvAtlas = null;\n\t\t\t\t}\n\t\t\t\tthis._envAtlas = null;\n\t\t\t}\n\t\t\tthis._prefilteredCubemaps = value.slice();\n\t\t\tthis._resetSkyMesh();\n\t\t}\n\t}\n\tget prefilteredCubemaps() {\n\t\treturn this._prefilteredCubemaps;\n\t}\n\tset skybox(value) {\n\t\tif (value !== this._skyboxCubeMap) {\n\t\t\tthis._skyboxCubeMap = value;\n\t\t\tthis._resetSkyMesh();\n\t\t}\n\t}\n\tget skybox() {\n\t\treturn this._skyboxCubeMap;\n\t}\n\tset skyboxIntensity(value) {\n\t\tif (value !== this._skyboxIntensity) {\n\t\t\tthis._skyboxIntensity = value;\n\t\t\tthis._resetSkyMesh();\n\t\t}\n\t}\n\tget skyboxIntensity() {\n\t\treturn this._skyboxIntensity;\n\t}\n\tset skyboxLuminance(value) {\n\t\tif (value !== this._skyboxLuminance) {\n\t\t\tthis._skyboxLuminance = value;\n\t\t\tthis._resetSkyMesh();\n\t\t}\n\t}\n\tget skyboxLuminance() {\n\t\treturn this._skyboxLuminance;\n\t}\n\tset skyboxMip(value) {\n\t\tif (value !== this._skyboxMip) {\n\t\t\tthis._skyboxMip = value;\n\t\t\tthis._resetSkyMesh();\n\t\t}\n\t}\n\tget skyboxMip() {\n\t\treturn this._skyboxMip;\n\t}\n\tset skyboxRotation(value) {\n\t\tif (!this._skyboxRotation.equals(value)) {\n\t\t\tconst isIdentity = value.equals(Quat.IDENTITY);\n\t\t\tthis._skyboxRotation.copy(value);\n\t\t\tif (isIdentity) {\n\t\t\t\tthis._skyboxRotationMat3.setIdentity();\n\t\t\t} else {\n\t\t\t\tthis._skyboxRotationMat4.setTRS(Vec3.ZERO, value, Vec3.ONE);\n\t\t\t\tthis._skyboxRotationMat3.invertMat4(this._skyboxRotationMat4);\n\t\t\t}\n\t\t\tif (!this._skyboxRotationShaderInclude && !isIdentity) {\n\t\t\t\tthis._skyboxRotationShaderInclude = true;\n\t\t\t\tthis._resetSkyMesh();\n\t\t\t}\n\t\t}\n\t}\n\tget skyboxRotation() {\n\t\treturn this._skyboxRotation;\n\t}\n\tset toneMapping(value) {\n\t\tif (value !== this._toneMapping) {\n\t\t\tthis._toneMapping = value;\n\t\t\tthis.updateShaders = true;\n\t\t}\n\t}\n\tget toneMapping() {\n\t\treturn this._toneMapping;\n\t}\n\tdestroy() {\n\t\tthis._resetSkyMesh();\n\t\tthis.root = null;\n\t\tthis.off();\n\t}\n\tdrawLine(start, end, color = Color.WHITE, depthTest = true, layer = this.defaultDrawLayer) {\n\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\tbatch.addLines([start, end], [color, color]);\n\t}\n\tdrawLines(positions, colors, depthTest = true, layer = this.defaultDrawLayer) {\n\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\tbatch.addLines(positions, colors);\n\t}\n\tdrawLineArrays(positions, colors, depthTest = true, layer = this.defaultDrawLayer) {\n\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\tbatch.addLinesArrays(positions, colors);\n\t}\n\tapplySettings(settings) {\n\t\tvar _render$skyboxIntensi, _render$skyboxLuminan, _render$skyboxMip, _render$clusteredLigh;\n\t\tconst physics = settings.physics;\n\t\tconst render = settings.render;\n\t\tthis._gravity.set(physics.gravity[0], physics.gravity[1], physics.gravity[2]);\n\t\tthis.ambientLight.set(render.global_ambient[0], render.global_ambient[1], render.global_ambient[2]);\n\t\tthis.ambientLuminance = render.ambientLuminance;\n\t\tthis._fog = render.fog;\n\t\tthis.fogColor.set(render.fog_color[0], render.fog_color[1], render.fog_color[2]);\n\t\tthis.fogStart = render.fog_start;\n\t\tthis.fogEnd = render.fog_end;\n\t\tthis.fogDensity = render.fog_density;\n\t\tthis._gammaCorrection = render.gamma_correction;\n\t\tthis._toneMapping = render.tonemapping;\n\t\tthis.lightmapSizeMultiplier = render.lightmapSizeMultiplier;\n\t\tthis.lightmapMaxResolution = render.lightmapMaxResolution;\n\t\tthis.lightmapMode = render.lightmapMode;\n\t\tthis.exposure = render.exposure;\n\t\tthis._skyboxIntensity = (_render$skyboxIntensi = render.skyboxIntensity) != null ? _render$skyboxIntensi : 1;\n\t\tthis._skyboxLuminance = (_render$skyboxLuminan = render.skyboxLuminance) != null ? _render$skyboxLuminan : 20000;\n\t\tthis._skyboxMip = (_render$skyboxMip = render.skyboxMip) != null ? _render$skyboxMip : 0;\n\t\tif (render.skyboxRotation) {\n\t\t\tthis.skyboxRotation = new Quat().setFromEulerAngles(render.skyboxRotation[0], render.skyboxRotation[1], render.skyboxRotation[2]);\n\t\t}\n\t\tthis.sky.applySettings(render);\n\t\tthis.clusteredLightingEnabled = (_render$clusteredLigh = render.clusteredLightingEnabled) != null ? _render$clusteredLigh : false;\n\t\tthis.lighting.applySettings(render);\n\t\t['lightmapFilterEnabled', 'lightmapFilterRange', 'lightmapFilterSmoothness', 'ambientBake', 'ambientBakeNumSamples', 'ambientBakeSpherePart', 'ambientBakeOcclusionBrightness', 'ambientBakeOcclusionContrast'].forEach(setting => {\n\t\t\tif (render.hasOwnProperty(setting)) {\n\t\t\t\tthis[setting] = render[setting];\n\t\t\t}\n\t\t});\n\t\tthis._resetSkyMesh();\n\t}\n\t_getSkyboxTex() {\n\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\tif (this._skyboxMip) {\n\t\t\tconst skyboxMapping = [0, 1, 3, 4, 5, 6];\n\t\t\treturn cubemaps[skyboxMapping[this._skyboxMip]] || this._envAtlas || cubemaps[0] || this._skyboxCubeMap;\n\t\t}\n\t\treturn this._skyboxCubeMap || cubemaps[0] || this._envAtlas;\n\t}\n\t_updateSkyMesh() {\n\t\tif (!this.sky.skyMesh) {\n\t\t\tthis.sky.updateSkyMesh();\n\t\t}\n\t\tthis.sky.update();\n\t}\n\t_resetSkyMesh() {\n\t\tthis.sky.resetSkyMesh();\n\t\tthis.updateShaders = true;\n\t}\n\tsetSkybox(cubemaps) {\n\t\tif (!cubemaps) {\n\t\t\tthis.skybox = null;\n\t\t\tthis.envAtlas = null;\n\t\t} else {\n\t\t\tthis.skybox = cubemaps[0] || null;\n\t\t\tif (cubemaps[1] && !cubemaps[1].cubemap) {\n\t\t\t\tthis.envAtlas = cubemaps[1];\n\t\t\t} else {\n\t\t\t\tthis.prefilteredCubemaps = cubemaps.slice(1);\n\t\t\t}\n\t\t}\n\t}\n\tget lightmapPixelFormat() {\n\t\treturn this.lightmapHDR && this.device.getRenderableHdrFormat() || PIXELFORMAT_RGBA8;\n\t}\n}\nScene.EVENT_SETLAYERS = 'set:layers';\nScene.EVENT_SETSKYBOX = 'set:skybox';\n\nexport { Scene };\n", "class Skin {\n\tconstructor(graphicsDevice, ibp, boneNames) {\n\t\tthis.device = graphicsDevice;\n\t\tthis.inverseBindPose = ibp;\n\t\tthis.boneNames = boneNames;\n\t}\n}\n\nexport { Skin };\n", "import { LitShaderOptions } from '../shader-lib/programs/lit-shader-options.js';\n\nclass StandardMaterialOptions {\n\tconstructor() {\n\t\tthis.forceUv1 = false;\n\t\tthis.ambientTint = false;\n\t\tthis.diffuseTint = false;\n\t\tthis.specularTint = false;\n\t\tthis.metalnessTint = false;\n\t\tthis.glossTint = false;\n\t\tthis.emissiveTint = false;\n\t\tthis.opacityTint = false;\n\t\tthis.emissiveEncoding = 'linear';\n\t\tthis.lightMapEncoding = 'linear';\n\t\tthis.packedNormal = false;\n\t\tthis.glossInvert = false;\n\t\tthis.sheenGlossInvert = false;\n\t\tthis.clearCoatGlossInvert = false;\n\t\tthis.litOptions = new LitShaderOptions();\n\t}\n\tget pass() {\n\t\treturn this.litOptions.pass;\n\t}\n}\n\nexport { StandardMaterialOptions };\n", "import { SHADER_FORWARD, SHADER_FORWARDHDR, SPRITE_RENDERMODE_SLICED, SPRITE_RENDERMODE_TILED, SPECULAR_PHONG, FRESNEL_SCHLICK, BLEND_NONE, DITHER_NONE, DITHER_BAYER8 } from '../../constants.js';\nimport { ShaderPass } from '../../shader-pass.js';\nimport { LitShader } from './lit-shader.js';\nimport { ChunkBuilder } from '../chunk-builder.js';\nimport { ChunkUtils } from '../chunk-utils.js';\nimport { StandardMaterialOptions } from '../../materials/standard-material-options.js';\nimport { LitOptionsUtils } from './lit-options-utils.js';\nimport { ShaderGenerator } from './shader-generator.js';\n\nconst _matTex2D = [];\nconst buildPropertiesList = options => {\n\treturn Object.keys(options).filter(key => key !== \"litOptions\").sort();\n};\nclass ShaderGeneratorStandard extends ShaderGenerator {\n\tconstructor(...args) {\n\t\tsuper(...args);\n\t\tthis.optionsContext = new StandardMaterialOptions();\n\t\tthis.optionsContextMin = new StandardMaterialOptions();\n\t}\n\tgenerateKey(options) {\n\t\tlet props;\n\t\tif (options === this.optionsContextMin) {\n\t\t\tif (!this.propsMin) this.propsMin = buildPropertiesList(options);\n\t\t\tprops = this.propsMin;\n\t\t} else if (options === this.optionsContext) {\n\t\t\tif (!this.props) this.props = buildPropertiesList(options);\n\t\t\tprops = this.props;\n\t\t} else {\n\t\t\tprops = buildPropertiesList(options);\n\t\t}\n\t\tconst key = \"standard:\\n\" + props.map(prop => prop + options[prop]).join('\\n') + LitOptionsUtils.generateKey(options.litOptions);\n\t\treturn key;\n\t}\n\t_getUvSourceExpression(transformPropName, uVPropName, options) {\n\t\tconst transformId = options[transformPropName];\n\t\tconst uvChannel = options[uVPropName];\n\t\tconst isMainPass = options.litOptions.pass === SHADER_FORWARD || options.litOptions.pass === SHADER_FORWARDHDR;\n\t\tlet expression;\n\t\tif (isMainPass && options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_SLICED) {\n\t\t\texpression = \"nineSlicedUv\";\n\t\t} else if (isMainPass && options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\texpression = \"nineSlicedUv\";\n\t\t} else {\n\t\t\tif (transformId === 0) {\n\t\t\t\texpression = \"vUv\" + uvChannel;\n\t\t\t} else {\n\t\t\t\texpression = \"vUV\" + uvChannel + \"_\" + transformId;\n\t\t\t}\n\t\t\tif (options.heightMap && transformPropName !== \"heightMapTransform\") {\n\t\t\t\texpression += \" + dUvOffset\";\n\t\t\t}\n\t\t}\n\t\treturn expression;\n\t}\n\t_addMapDef(name, enabled) {\n\t\treturn enabled ? `#define ${name}\\n` : `#undef ${name}\\n`;\n\t}\n\t_addMapDefs(float, color, vertex, map, invert) {\n\t\treturn this._addMapDef(\"MAPFLOAT\", float) + this._addMapDef(\"MAPCOLOR\", color) + this._addMapDef(\"MAPVERTEX\", vertex) + this._addMapDef(\"MAPTEXTURE\", map) + this._addMapDef(\"MAPINVERT\", invert);\n\t}\n\t_addMap(propName, chunkName, options, chunks, mapping, encoding = null) {\n\t\tconst mapPropName = propName + \"Map\";\n\t\tconst uVPropName = mapPropName + \"Uv\";\n\t\tconst identifierPropName = mapPropName + \"Identifier\";\n\t\tconst transformPropName = mapPropName + \"Transform\";\n\t\tconst channelPropName = mapPropName + \"Channel\";\n\t\tconst vertexColorChannelPropName = propName + \"VertexColorChannel\";\n\t\tconst tintPropName = propName + \"Tint\";\n\t\tconst vertexColorPropName = propName + \"VertexColor\";\n\t\tconst detailModePropName = propName + \"Mode\";\n\t\tconst invertName = propName + \"Invert\";\n\t\tconst tintOption = options[tintPropName];\n\t\tconst vertexColorOption = options[vertexColorPropName];\n\t\tconst textureOption = options[mapPropName];\n\t\tconst textureIdentifier = options[identifierPropName];\n\t\tconst detailModeOption = options[detailModePropName];\n\t\tlet subCode = chunks[chunkName];\n\t\tif (textureOption) {\n\t\t\tconst uv = this._getUvSourceExpression(transformPropName, uVPropName, options);\n\t\t\tsubCode = subCode.replace(/\\$UV/g, uv).replace(/\\$CH/g, options[channelPropName]);\n\t\t\tif (mapping && subCode.search(/\\$SAMPLER/g) !== -1) {\n\t\t\t\tlet samplerName = \"texture_\" + mapPropName;\n\t\t\t\tconst alias = mapping[textureIdentifier];\n\t\t\t\tif (alias) {\n\t\t\t\t\tsamplerName = alias;\n\t\t\t\t} else {\n\t\t\t\t\tmapping[textureIdentifier] = samplerName;\n\t\t\t\t}\n\t\t\t\tsubCode = subCode.replace(/\\$SAMPLER/g, samplerName);\n\t\t\t}\n\t\t\tif (encoding) {\n\t\t\t\tif (options[channelPropName] === 'aaa') {\n\t\t\t\t\tsubCode = subCode.replace(/\\$DECODE/g, 'passThrough');\n\t\t\t\t} else {\n\t\t\t\t\tsubCode = subCode.replace(/\\$DECODE/g, ChunkUtils.decodeFunc(!options.litOptions.gamma && encoding === 'srgb' ? 'linear' : encoding));\n\t\t\t\t}\n\t\t\t\tif (subCode.indexOf('$texture2DSAMPLE')) {\n\t\t\t\t\tconst decodeTable = {\n\t\t\t\t\t\tlinear: 'texture2D',\n\t\t\t\t\t\tsrgb: 'texture2DSRGB',\n\t\t\t\t\t\trgbm: 'texture2DRGBM',\n\t\t\t\t\t\trgbe: 'texture2DRGBE'\n\t\t\t\t\t};\n\t\t\t\t\tsubCode = subCode.replace(/\\$texture2DSAMPLE/g, decodeTable[encoding] || 'texture2D');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (vertexColorOption) {\n\t\t\tsubCode = subCode.replace(/\\$VC/g, options[vertexColorChannelPropName]);\n\t\t}\n\t\tif (detailModeOption) {\n\t\t\tsubCode = subCode.replace(/\\$DETAILMODE/g, detailModeOption);\n\t\t}\n\t\tconst isFloatTint = !!(tintOption & 1);\n\t\tconst isVecTint = !!(tintOption & 2);\n\t\tconst invertOption = !!options[invertName];\n\t\tsubCode = this._addMapDefs(isFloatTint, isVecTint, vertexColorOption, textureOption, invertOption) + subCode;\n\t\treturn subCode.replace(/\\$/g, \"\");\n\t}\n\t_correctChannel(p, chan, _matTex2D) {\n\t\tif (_matTex2D[p] > 0) {\n\t\t\tif (_matTex2D[p] < chan.length) {\n\t\t\t\treturn chan.substring(0, _matTex2D[p]);\n\t\t\t} else if (_matTex2D[p] > chan.length) {\n\t\t\t\tlet str = chan;\n\t\t\t\tconst chr = str.charAt(str.length - 1);\n\t\t\t\tconst addLen = _matTex2D[p] - str.length;\n\t\t\t\tfor (let i = 0; i < addLen; i++) str += chr;\n\t\t\t\treturn str;\n\t\t\t}\n\t\t\treturn chan;\n\t\t}\n\t}\n\tcreateShaderDefinition(device, options) {\n\t\tconst shaderPassInfo = ShaderPass.get(device).getByIndex(options.litOptions.pass);\n\t\tconst isForwardPass = shaderPassInfo.isForward;\n\t\tconst litShader = new LitShader(device, options.litOptions);\n\t\tconst useUv = [];\n\t\tconst useUnmodifiedUv = [];\n\t\tconst mapTransforms = [];\n\t\tconst maxUvSets = 2;\n\t\tconst textureMapping = {};\n\t\tfor (const p in _matTex2D) {\n\t\t\tconst mname = p + \"Map\";\n\t\t\tif (options[p + \"VertexColor\"]) {\n\t\t\t\tconst cname = p + \"VertexColorChannel\";\n\t\t\t\toptions[cname] = this._correctChannel(p, options[cname], _matTex2D);\n\t\t\t}\n\t\t\tif (options[mname]) {\n\t\t\t\tconst cname = mname + \"Channel\";\n\t\t\t\tconst tname = mname + \"Transform\";\n\t\t\t\tconst uname = mname + \"Uv\";\n\t\t\t\toptions[uname] = Math.min(options[uname], maxUvSets - 1);\n\t\t\t\toptions[cname] = this._correctChannel(p, options[cname], _matTex2D);\n\t\t\t\tconst uvSet = options[uname];\n\t\t\t\tuseUv[uvSet] = true;\n\t\t\t\tuseUnmodifiedUv[uvSet] = useUnmodifiedUv[uvSet] || options[mname] && !options[tname];\n\t\t\t\tif (options[tname]) {\n\t\t\t\t\tmapTransforms.push({\n\t\t\t\t\t\tname: p,\n\t\t\t\t\t\tid: options[tname],\n\t\t\t\t\t\tuv: options[uname]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (options.forceUv1) {\n\t\t\tuseUv[1] = true;\n\t\t\tuseUnmodifiedUv[1] = useUnmodifiedUv[1] !== undefined ? useUnmodifiedUv[1] : true;\n\t\t}\n\t\tlitShader.generateVertexShader(useUv, useUnmodifiedUv, mapTransforms);\n\t\tif (options.litOptions.shadingModel === SPECULAR_PHONG) {\n\t\t\toptions.litOptions.fresnelModel = 0;\n\t\t\toptions.litOptions.ambientSH = false;\n\t\t} else {\n\t\t\toptions.litOptions.fresnelModel = options.litOptions.fresnelModel === 0 ? FRESNEL_SCHLICK : options.litOptions.fresnelModel;\n\t\t}\n\t\tconst decl = new ChunkBuilder();\n\t\tconst code = new ChunkBuilder();\n\t\tconst func = new ChunkBuilder();\n\t\tconst args = new ChunkBuilder();\n\t\tlet lightingUv = \"\";\n\t\tif (options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\tdecl.append(`const float textureBias = -1000.0;`);\n\t\t} else {\n\t\t\tdecl.append(`uniform float textureBias;`);\n\t\t}\n\t\tif (isForwardPass) {\n\t\t\tif (options.heightMap) {\n\t\t\t\tdecl.append(\"vec2 dUvOffset;\");\n\t\t\t\tcode.append(this._addMap(\"height\", \"parallaxPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getParallax();\");\n\t\t\t}\n\t\t\tif (options.litOptions.blendType !== BLEND_NONE || options.litOptions.alphaTest || options.litOptions.alphaToCoverage || options.litOptions.opacityDither !== DITHER_NONE) {\n\t\t\t\tdecl.append(\"float dAlpha;\");\n\t\t\t\tcode.append(this._addMap(\"opacity\", \"opacityPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getOpacity();\");\n\t\t\t\targs.append(\"litArgs_opacity = dAlpha;\");\n\t\t\t\tif (options.litOptions.alphaTest) {\n\t\t\t\t\tcode.append(litShader.chunks.alphaTestPS);\n\t\t\t\t\tfunc.append(\"alphaTest(dAlpha);\");\n\t\t\t\t}\n\t\t\t\tconst opacityDither = options.litOptions.opacityDither;\n\t\t\t\tif (opacityDither !== DITHER_NONE) {\n\t\t\t\t\tif (opacityDither === DITHER_BAYER8) decl.append(litShader.chunks.bayerPS);\n\t\t\t\t\tdecl.append(`#define DITHER_${opacityDither.toUpperCase()}\\n`);\n\t\t\t\t\tdecl.append(litShader.chunks.opacityDitherPS);\n\t\t\t\t\tfunc.append(\"opacityDither(dAlpha, 0.0);\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdecl.append(\"float dAlpha = 1.0;\");\n\t\t\t}\n\t\t\tif (litShader.needsNormal) {\n\t\t\t\tif (options.normalMap || options.clearCoatNormalMap) {\n\t\t\t\t\tcode.append(options.packedNormal ? litShader.chunks.normalXYPS : litShader.chunks.normalXYZPS);\n\t\t\t\t\tif (!options.litOptions.hasTangents) {\n\t\t\t\t\t\tconst baseName = options.normalMap ? \"normalMap\" : \"clearCoatNormalMap\";\n\t\t\t\t\t\tlightingUv = this._getUvSourceExpression(`${baseName}Transform`, `${baseName}Uv`, options);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdecl.append(\"vec3 dNormalW;\");\n\t\t\t\tcode.append(this._addMap(\"normalDetail\", \"normalDetailMapPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tcode.append(this._addMap(\"normal\", \"normalMapPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getNormal();\");\n\t\t\t\targs.append(\"litArgs_worldNormal = dNormalW;\");\n\t\t\t}\n\t\t\tif (litShader.needsSceneColor) {\n\t\t\t\tdecl.append(\"uniform sampler2D uSceneColorMap;\");\n\t\t\t}\n\t\t\tif (litShader.needsScreenSize) {\n\t\t\t\tdecl.append(\"uniform vec4 uScreenSize;\");\n\t\t\t}\n\t\t\tif (litShader.needsTransforms) {\n\t\t\t\tdecl.append(\"uniform mat4 matrix_viewProjection;\");\n\t\t\t\tdecl.append(\"uniform mat4 matrix_model;\");\n\t\t\t}\n\t\t\tif (options.diffuseDetail || options.aoDetail) {\n\t\t\t\tcode.append(litShader.chunks.detailModesPS);\n\t\t\t}\n\t\t\tdecl.append(\"vec3 dAlbedo;\");\n\t\t\tif (options.diffuseDetail) {\n\t\t\t\tcode.append(this._addMap(\"diffuseDetail\", \"diffuseDetailMapPS\", options, litShader.chunks, textureMapping, options.diffuseDetailEncoding));\n\t\t\t}\n\t\t\tcode.append(this._addMap(\"diffuse\", \"diffusePS\", options, litShader.chunks, textureMapping, options.diffuseEncoding));\n\t\t\tfunc.append(\"getAlbedo();\");\n\t\t\targs.append(\"litArgs_albedo = dAlbedo;\");\n\t\t\tif (options.litOptions.useRefraction) {\n\t\t\t\tdecl.append(\"float dTransmission;\");\n\t\t\t\tcode.append(this._addMap(\"refraction\", \"transmissionPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getRefraction();\");\n\t\t\t\targs.append(\"litArgs_transmission = dTransmission;\");\n\t\t\t\tdecl.append(\"float dThickness;\");\n\t\t\t\tcode.append(this._addMap(\"thickness\", \"thicknessPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getThickness();\");\n\t\t\t\targs.append(\"litArgs_thickness = dThickness;\");\n\t\t\t\tif (options.litOptions.dispersion) {\n\t\t\t\t\targs.append(\"litArgs_dispersion = material_dispersion;\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.litOptions.useIridescence) {\n\t\t\t\tdecl.append(\"float dIridescence;\");\n\t\t\t\tcode.append(this._addMap(\"iridescence\", \"iridescencePS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getIridescence();\");\n\t\t\t\targs.append(\"litArgs_iridescence_intensity = dIridescence;\");\n\t\t\t\tdecl.append(\"float dIridescenceThickness;\");\n\t\t\t\tcode.append(this._addMap(\"iridescenceThickness\", \"iridescenceThicknessPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getIridescenceThickness();\");\n\t\t\t\targs.append(\"litArgs_iridescence_thickness = dIridescenceThickness;\");\n\t\t\t}\n\t\t\tif (litShader.lighting && options.litOptions.useSpecular || litShader.reflections) {\n\t\t\t\tdecl.append(\"vec3 dSpecularity;\");\n\t\t\t\tdecl.append(\"float dGlossiness;\");\n\t\t\t\tif (options.litOptions.useSheen) {\n\t\t\t\t\tdecl.append(\"vec3 sSpecularity;\");\n\t\t\t\t\tcode.append(this._addMap(\"sheen\", \"sheenPS\", options, litShader.chunks, textureMapping, options.sheenEncoding));\n\t\t\t\t\tfunc.append(\"getSheen();\");\n\t\t\t\t\targs.append(\"litArgs_sheen_specularity = sSpecularity;\");\n\t\t\t\t\tdecl.append(\"float sGlossiness;\");\n\t\t\t\t\tcode.append(this._addMap(\"sheenGloss\", \"sheenGlossPS\", options, litShader.chunks, textureMapping));\n\t\t\t\t\tfunc.append(\"getSheenGlossiness();\");\n\t\t\t\t\targs.append(\"litArgs_sheen_gloss = sGlossiness;\");\n\t\t\t\t}\n\t\t\t\tif (options.litOptions.useMetalness) {\n\t\t\t\t\tdecl.append(\"float dMetalness;\");\n\t\t\t\t\tcode.append(this._addMap(\"metalness\", \"metalnessPS\", options, litShader.chunks, textureMapping));\n\t\t\t\t\tfunc.append(\"getMetalness();\");\n\t\t\t\t\targs.append(\"litArgs_metalness = dMetalness;\");\n\t\t\t\t\tdecl.append(\"float dIor;\");\n\t\t\t\t\tcode.append(this._addMap(\"ior\", \"iorPS\", options, litShader.chunks, textureMapping));\n\t\t\t\t\tfunc.append(\"getIor();\");\n\t\t\t\t\targs.append(\"litArgs_ior = dIor;\");\n\t\t\t\t}\n\t\t\t\tif (options.litOptions.useSpecularityFactor) {\n\t\t\t\t\tdecl.append(\"float dSpecularityFactor;\");\n\t\t\t\t\tcode.append(this._addMap(\"specularityFactor\", \"specularityFactorPS\", options, litShader.chunks, textureMapping));\n\t\t\t\t\tfunc.append(\"getSpecularityFactor();\");\n\t\t\t\t\targs.append(\"litArgs_specularityFactor = dSpecularityFactor;\");\n\t\t\t\t}\n\t\t\t\tif (options.useSpecularColor) {\n\t\t\t\t\tcode.append(this._addMap(\"specular\", \"specularPS\", options, litShader.chunks, textureMapping, options.specularEncoding));\n\t\t\t\t} else {\n\t\t\t\t\tcode.append(\"void getSpecularity() { dSpecularity = vec3(1); }\");\n\t\t\t\t}\n\t\t\t\tcode.append(this._addMap(\"gloss\", \"glossPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getGlossiness();\");\n\t\t\t\tfunc.append(\"getSpecularity();\");\n\t\t\t\targs.append(\"litArgs_specularity = dSpecularity;\");\n\t\t\t\targs.append(\"litArgs_gloss = dGlossiness;\");\n\t\t\t} else {\n\t\t\t\tdecl.append(\"vec3 dSpecularity = vec3(0.0);\");\n\t\t\t\tdecl.append(\"float dGlossiness = 0.0;\");\n\t\t\t}\n\t\t\tif (options.aoDetail) {\n\t\t\t\tcode.append(this._addMap(\"aoDetail\", \"aoDetailMapPS\", options, litShader.chunks, textureMapping));\n\t\t\t}\n\t\t\tif (options.aoMap || options.aoVertexColor) {\n\t\t\t\tdecl.append(\"float dAo;\");\n\t\t\t\tcode.append(this._addMap(\"ao\", \"aoPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getAO();\");\n\t\t\t\targs.append(\"litArgs_ao = dAo;\");\n\t\t\t}\n\t\t\tdecl.append(\"vec3 dEmission;\");\n\t\t\tcode.append(this._addMap(\"emissive\", \"emissivePS\", options, litShader.chunks, textureMapping, options.emissiveEncoding));\n\t\t\tfunc.append(\"getEmission();\");\n\t\t\targs.append(\"litArgs_emission = dEmission;\");\n\t\t\tif (options.litOptions.useClearCoat) {\n\t\t\t\tdecl.append(\"float ccSpecularity;\");\n\t\t\t\tdecl.append(\"float ccGlossiness;\");\n\t\t\t\tdecl.append(\"vec3 ccNormalW;\");\n\t\t\t\tcode.append(this._addMap(\"clearCoat\", \"clearCoatPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tcode.append(this._addMap(\"clearCoatGloss\", \"clearCoatGlossPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tcode.append(this._addMap(\"clearCoatNormal\", \"clearCoatNormalPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getClearCoat();\");\n\t\t\t\tfunc.append(\"getClearCoatGlossiness();\");\n\t\t\t\tfunc.append(\"getClearCoatNormal();\");\n\t\t\t\targs.append(\"litArgs_clearcoat_specularity = ccSpecularity;\");\n\t\t\t\targs.append(\"litArgs_clearcoat_gloss = ccGlossiness;\");\n\t\t\t\targs.append(\"litArgs_clearcoat_worldNormal = ccNormalW;\");\n\t\t\t}\n\t\t\tif (options.lightMap || options.lightVertexColor) {\n\t\t\t\tconst lightmapDir = options.dirLightMap && options.litOptions.useSpecular;\n\t\t\t\tconst lightmapChunkPropName = lightmapDir ? 'lightmapDirPS' : 'lightmapSinglePS';\n\t\t\t\tdecl.append(\"vec3 dLightmap;\");\n\t\t\t\tif (lightmapDir) {\n\t\t\t\t\tdecl.append(\"vec3 dLightmapDir;\");\n\t\t\t\t}\n\t\t\t\tcode.append(this._addMap(\"light\", lightmapChunkPropName, options, litShader.chunks, textureMapping, options.lightMapEncoding));\n\t\t\t\tfunc.append(\"getLightMap();\");\n\t\t\t\targs.append(\"litArgs_lightmap = dLightmap;\");\n\t\t\t\tif (lightmapDir) {\n\t\t\t\t\targs.append(\"litArgs_lightmapDir = dLightmapDir;\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (code.code.indexOf('texture2DSRGB') !== -1 || code.code.indexOf('texture2DRGBM') !== -1 || code.code.indexOf('texture2DRGBE') !== -1) {\n\t\t\t\tcode.prepend(litShader.chunks.textureSamplePS);\n\t\t\t}\n\t\t} else {\n\t\t\tconst opacityShadowDither = options.litOptions.opacityShadowDither;\n\t\t\tif (options.litOptions.alphaTest || opacityShadowDither) {\n\t\t\t\tdecl.append(\"float dAlpha;\");\n\t\t\t\tcode.append(this._addMap(\"opacity\", \"opacityPS\", options, litShader.chunks, textureMapping));\n\t\t\t\tfunc.append(\"getOpacity();\");\n\t\t\t\targs.append(\"litArgs_opacity = dAlpha;\");\n\t\t\t\tif (options.litOptions.alphaTest) {\n\t\t\t\t\tcode.append(litShader.chunks.alphaTestPS);\n\t\t\t\t\tfunc.append(\"alphaTest(dAlpha);\");\n\t\t\t\t}\n\t\t\t\tif (opacityShadowDither !== DITHER_NONE) {\n\t\t\t\t\tif (opacityShadowDither === DITHER_BAYER8) decl.append(litShader.chunks.bayerPS);\n\t\t\t\t\tdecl.append(`#define DITHER_${opacityShadowDither.toUpperCase()}\\n`);\n\t\t\t\t\tdecl.append(litShader.chunks.opacityDitherPS);\n\t\t\t\t\tfunc.append(\"opacityDither(dAlpha, 0.0);\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdecl.append(litShader.chunks.litShaderArgsPS);\n\t\tcode.append(`void evaluateFrontend() { \\n${func.code}\\n${args.code}\\n }\\n`);\n\t\tfunc.code = `evaluateFrontend();`;\n\t\tfor (const texture in textureMapping) {\n\t\t\tdecl.append(`uniform sampler2D ${textureMapping[texture]};`);\n\t\t}\n\t\tfunc.code = `\\n${func.code.split('\\n').map(l => ` ${l}`).join('\\n')}\\n\\n`;\n\t\tlitShader.generateFragmentShader(decl.code, code.code, func.code, lightingUv);\n\t\treturn litShader.getDefinition();\n\t}\n}\nconst standard = new ShaderGeneratorStandard();\n\nexport { _matTex2D, standard };\n", "import { PIXELFORMAT_DXT5, TEXTURETYPE_SWIZZLEGGGR, PIXELFORMAT_RGBA8 } from '../../platform/graphics/constants.js';\nimport { SHADER_FORWARDHDR, GAMMA_SRGBHDR, TONEMAP_LINEAR, SHADERDEF_TANGENTS, SHADERDEF_SCREENSPACE, SHADERDEF_SKIN, SHADERDEF_INSTANCING, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_NORMAL, SHADERDEF_MORPH_TEXTURE_BASED, BLEND_NONE, DITHER_NONE, SPECULAR_PHONG, GAMMA_NONE, SHADERDEF_NOSHADOW, SHADERDEF_LM, SHADERDEF_DIRLM, SHADERDEF_LMAMBIENT, MASK_AFFECT_DYNAMIC, LIGHTTYPE_DIRECTIONAL, LIGHTTYPE_OMNI, LIGHTTYPE_SPOT, SHADERDEF_UV0, SHADERDEF_UV1, SHADERDEF_VCOLOR, SHADER_PREPASS_VELOCITY } from '../constants.js';\nimport { _matTex2D } from '../shader-lib/programs/standard.js';\nimport { LitMaterialOptionsBuilder } from './lit-material-options-builder.js';\n\nconst arraysEqual = (a, b) => {\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\tfor (let i = 0; i < a.length; ++i) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\nconst notWhite = color => {\n\treturn color.r !== 1 || color.g !== 1 || color.b !== 1;\n};\nconst notBlack = color => {\n\treturn color.r !== 0 || color.g !== 0 || color.b !== 0;\n};\nclass StandardMaterialOptionsBuilder {\n\tconstructor() {\n\t\tthis._mapXForms = null;\n\t}\n\tupdateMinRef(options, scene, stdMat, objDefs, pass, sortedLights) {\n\t\tthis._updateSharedOptions(options, scene, stdMat, objDefs, pass);\n\t\tthis._updateMinOptions(options, stdMat, pass);\n\t\tthis._updateUVOptions(options, stdMat, objDefs, true);\n\t}\n\tupdateRef(options, scene, stdMat, objDefs, pass, sortedLights) {\n\t\tthis._updateSharedOptions(options, scene, stdMat, objDefs, pass);\n\t\tthis._updateEnvOptions(options, stdMat, scene);\n\t\tthis._updateMaterialOptions(options, stdMat);\n\t\tif (pass === SHADER_FORWARDHDR) {\n\t\t\tif (options.litOptions.gamma) options.litOptions.gamma = GAMMA_SRGBHDR;\n\t\t\toptions.litOptions.toneMap = TONEMAP_LINEAR;\n\t\t}\n\t\toptions.litOptions.hasTangents = objDefs && (objDefs & SHADERDEF_TANGENTS) !== 0;\n\t\tthis._updateLightOptions(options, scene, stdMat, objDefs, sortedLights);\n\t\tthis._updateUVOptions(options, stdMat, objDefs, false);\n\t}\n\t_updateSharedOptions(options, scene, stdMat, objDefs, pass) {\n\t\toptions.forceUv1 = stdMat.forceUv1;\n\t\tif (stdMat.userAttributes) {\n\t\t\toptions.litOptions.userAttributes = Object.fromEntries(stdMat.userAttributes.entries());\n\t\t}\n\t\toptions.litOptions.chunks = stdMat.chunks || {};\n\t\toptions.litOptions.pass = pass;\n\t\toptions.litOptions.alphaTest = stdMat.alphaTest > 0;\n\t\toptions.litOptions.blendType = stdMat.blendType;\n\t\toptions.litOptions.screenSpace = objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0;\n\t\toptions.litOptions.skin = objDefs && (objDefs & SHADERDEF_SKIN) !== 0;\n\t\toptions.litOptions.useInstancing = objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0;\n\t\toptions.litOptions.useMorphPosition = objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0;\n\t\toptions.litOptions.useMorphNormal = objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0;\n\t\toptions.litOptions.useMorphTextureBased = objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED) !== 0;\n\t\toptions.litOptions.nineSlicedMode = stdMat.nineSlicedMode || 0;\n\t\tif (scene.clusteredLightingEnabled && stdMat.useLighting) {\n\t\t\toptions.litOptions.clusteredLightingEnabled = true;\n\t\t\toptions.litOptions.clusteredLightingCookiesEnabled = scene.lighting.cookiesEnabled;\n\t\t\toptions.litOptions.clusteredLightingShadowsEnabled = scene.lighting.shadowsEnabled;\n\t\t\toptions.litOptions.clusteredLightingShadowType = scene.lighting.shadowType;\n\t\t\toptions.litOptions.clusteredLightingAreaLightsEnabled = scene.lighting.areaLightsEnabled;\n\t\t} else {\n\t\t\toptions.litOptions.clusteredLightingEnabled = false;\n\t\t\toptions.litOptions.clusteredLightingCookiesEnabled = false;\n\t\t\toptions.litOptions.clusteredLightingShadowsEnabled = false;\n\t\t\toptions.litOptions.clusteredLightingAreaLightsEnabled = false;\n\t\t}\n\t}\n\t_updateUVOptions(options, stdMat, objDefs, minimalOptions) {\n\t\tlet hasUv0 = false;\n\t\tlet hasUv1 = false;\n\t\tlet hasVcolor = false;\n\t\tif (objDefs) {\n\t\t\thasUv0 = (objDefs & SHADERDEF_UV0) !== 0;\n\t\t\thasUv1 = (objDefs & SHADERDEF_UV1) !== 0;\n\t\t\thasVcolor = (objDefs & SHADERDEF_VCOLOR) !== 0;\n\t\t}\n\t\toptions.litOptions.vertexColors = false;\n\t\tthis._mapXForms = [];\n\t\tconst uniqueTextureMap = {};\n\t\tfor (const p in _matTex2D) {\n\t\t\tthis._updateTexOptions(options, stdMat, p, hasUv0, hasUv1, hasVcolor, minimalOptions, uniqueTextureMap);\n\t\t}\n\t\tthis._mapXForms = null;\n\t\toptions.litOptions.lightMapEnabled = options.lightMap;\n\t\toptions.litOptions.dirLightMapEnabled = options.dirLightMap;\n\t\toptions.litOptions.useHeights = options.heightMap;\n\t\toptions.litOptions.useNormals = options.normalMap;\n\t\toptions.litOptions.useClearCoatNormals = options.clearCoatNormalMap;\n\t\toptions.litOptions.useAo = options.aoMap || options.aoVertexColor;\n\t\toptions.litOptions.diffuseMapEnabled = options.diffuseMap;\n\t}\n\t_updateTexOptions(options, stdMat, p, hasUv0, hasUv1, hasVcolor, minimalOptions, uniqueTextureMap) {\n\t\tconst isOpacity = p === 'opacity';\n\t\tif (!minimalOptions || isOpacity) {\n\t\t\tconst mname = p + 'Map';\n\t\t\tconst vname = p + 'VertexColor';\n\t\t\tconst vcname = p + 'VertexColorChannel';\n\t\t\tconst cname = mname + 'Channel';\n\t\t\tconst tname = mname + 'Transform';\n\t\t\tconst uname = mname + 'Uv';\n\t\t\tconst iname = mname + 'Identifier';\n\t\t\tif (p !== 'light') {\n\t\t\t\toptions[mname] = false;\n\t\t\t\toptions[iname] = undefined;\n\t\t\t\toptions[cname] = '';\n\t\t\t\toptions[tname] = 0;\n\t\t\t\toptions[uname] = 0;\n\t\t\t}\n\t\t\toptions[vname] = false;\n\t\t\toptions[vcname] = '';\n\t\t\tif (isOpacity && stdMat.blendType === BLEND_NONE && stdMat.alphaTest === 0.0 && !stdMat.alphaToCoverage && stdMat.opacityDither === DITHER_NONE) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (p !== 'height' && stdMat[vname]) {\n\t\t\t\tif (hasVcolor) {\n\t\t\t\t\toptions[vname] = stdMat[vname];\n\t\t\t\t\toptions[vcname] = stdMat[vcname];\n\t\t\t\t\toptions.litOptions.vertexColors = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (stdMat[mname]) {\n\t\t\t\tlet allow = true;\n\t\t\t\tif (stdMat[uname] === 0 && !hasUv0) allow = false;\n\t\t\t\tif (stdMat[uname] === 1 && !hasUv1) allow = false;\n\t\t\t\tif (allow) {\n\t\t\t\t\tconst mapId = stdMat[mname].id;\n\t\t\t\t\tlet identifier = uniqueTextureMap[mapId];\n\t\t\t\t\tif (identifier === undefined) {\n\t\t\t\t\t\tuniqueTextureMap[mapId] = p;\n\t\t\t\t\t\tidentifier = p;\n\t\t\t\t\t}\n\t\t\t\t\toptions[mname] = !!stdMat[mname];\n\t\t\t\t\toptions[iname] = identifier;\n\t\t\t\t\toptions[tname] = this._getMapTransformID(stdMat.getUniform(tname), stdMat[uname]);\n\t\t\t\t\toptions[cname] = stdMat[cname];\n\t\t\t\t\toptions[uname] = stdMat[uname];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t_updateMinOptions(options, stdMat, pass) {\n\t\toptions.opacityTint = stdMat.blendType !== BLEND_NONE || stdMat.opacityShadowDither !== DITHER_NONE;\n\t\tconst isPrepass = pass === SHADER_PREPASS_VELOCITY;\n\t\toptions.litOptions.opacityShadowDither = isPrepass ? stdMat.opacityDither : stdMat.opacityShadowDither;\n\t\toptions.litOptions.lights = [];\n\t}\n\t_updateMaterialOptions(options, stdMat) {\n\t\tvar _stdMat$diffuseMap, _stdMat$diffuseDetail, _stdMat$emissiveMap, _stdMat$lightMap;\n\t\tconst diffuseTint = stdMat.diffuseTint || !stdMat.diffuseMap && !stdMat.diffuseVertexColor;\n\t\tconst useSpecular = !!(stdMat.useMetalness || stdMat.specularMap || stdMat.sphereMap || stdMat.cubeMap || notBlack(stdMat.specular) || stdMat.specularityFactor > 0 && stdMat.useMetalness || stdMat.enableGGXSpecular || stdMat.clearCoat > 0);\n\t\tconst useSpecularColor = !stdMat.useMetalness || stdMat.useMetalnessSpecularColor;\n\t\tconst specularTint = useSpecular && (stdMat.specularTint || !stdMat.specularMap && !stdMat.specularVertexColor) && notWhite(stdMat.specular);\n\t\tconst specularityFactorTint = useSpecular && stdMat.useMetalnessSpecularColor && (stdMat.specularityFactorTint || stdMat.specularityFactor < 1 && !stdMat.specularityFactorMap);\n\t\tconst emissiveTintColor = !stdMat.emissiveMap || notWhite(stdMat.emissive) && stdMat.emissiveTint;\n\t\tconst emissiveTintIntensity = stdMat.emissiveIntensity !== 1;\n\t\tconst isPackedNormalMap = stdMat.normalMap ? stdMat.normalMap.format === PIXELFORMAT_DXT5 || stdMat.normalMap.type === TEXTURETYPE_SWIZZLEGGGR : false;\n\t\toptions.opacityTint = stdMat.blendType !== BLEND_NONE || stdMat.alphaTest > 0 || stdMat.opacityDither !== DITHER_NONE ? 1 : 0;\n\t\toptions.ambientTint = stdMat.ambientTint;\n\t\toptions.diffuseTint = diffuseTint ? 2 : 0;\n\t\toptions.specularTint = specularTint ? 2 : 0;\n\t\toptions.specularityFactorTint = specularityFactorTint ? 1 : 0;\n\t\toptions.metalnessTint = stdMat.useMetalness && stdMat.metalness < 1 ? 1 : 0;\n\t\toptions.glossTint = 1;\n\t\toptions.emissiveTint = (emissiveTintColor ? 2 : 0) + (emissiveTintIntensity ? 1 : 0);\n\t\toptions.diffuseEncoding = (_stdMat$diffuseMap = stdMat.diffuseMap) == null ? void 0 : _stdMat$diffuseMap.encoding;\n\t\toptions.diffuseDetailEncoding = (_stdMat$diffuseDetail = stdMat.diffuseDetailMap) == null ? void 0 : _stdMat$diffuseDetail.encoding;\n\t\toptions.emissiveEncoding = (_stdMat$emissiveMap = stdMat.emissiveMap) == null ? void 0 : _stdMat$emissiveMap.encoding;\n\t\toptions.lightMapEncoding = (_stdMat$lightMap = stdMat.lightMap) == null ? void 0 : _stdMat$lightMap.encoding;\n\t\toptions.packedNormal = isPackedNormalMap;\n\t\toptions.refractionTint = stdMat.refraction !== 1.0 ? 1 : 0;\n\t\toptions.refractionIndexTint = stdMat.refractionIndex !== 1.0 / 1.5 ? 1 : 0;\n\t\toptions.thicknessTint = stdMat.useDynamicRefraction && stdMat.thickness !== 1.0 ? 1 : 0;\n\t\toptions.specularEncoding = stdMat.specularEncoding || 'linear';\n\t\toptions.sheenEncoding = stdMat.sheenEncoding || 'linear';\n\t\toptions.aoMapUv = stdMat.aoUvSet;\n\t\toptions.aoDetail = !!stdMat.aoMap;\n\t\toptions.diffuseDetail = !!stdMat.diffuseMap;\n\t\toptions.normalDetail = !!stdMat.normalMap;\n\t\toptions.diffuseDetailMode = stdMat.diffuseDetailMode;\n\t\toptions.aoDetailMode = stdMat.aoDetailMode;\n\t\toptions.clearCoatTint = stdMat.clearCoat !== 1.0 ? 1 : 0;\n\t\toptions.clearCoatGloss = !!stdMat.clearCoatGloss;\n\t\toptions.clearCoatGlossTint = stdMat.clearCoatGloss !== 1.0 ? 1 : 0;\n\t\toptions.iorTint = stdMat.refractionIndex !== 1.0 / 1.5 ? 1 : 0;\n\t\toptions.iridescenceTint = stdMat.iridescence !== 1.0 ? 1 : 0;\n\t\toptions.sheenTint = stdMat.useSheen && notWhite(stdMat.sheen) ? 2 : 0;\n\t\toptions.sheenGlossTint = 1;\n\t\toptions.glossInvert = stdMat.glossInvert;\n\t\toptions.sheenGlossInvert = stdMat.sheenGlossInvert;\n\t\toptions.clearCoatGlossInvert = stdMat.clearCoatGlossInvert;\n\t\toptions.useSpecularColor = useSpecularColor;\n\t\toptions.litOptions.separateAmbient = false;\n\t\toptions.litOptions.useAmbientTint = stdMat.ambientTint;\n\t\toptions.litOptions.customFragmentShader = stdMat.customFragmentShader;\n\t\toptions.litOptions.pixelSnap = stdMat.pixelSnap;\n\t\toptions.litOptions.shadingModel = stdMat.shadingModel;\n\t\toptions.litOptions.ambientSH = !!stdMat.ambientSH;\n\t\toptions.litOptions.fastTbn = stdMat.fastTbn;\n\t\toptions.litOptions.twoSidedLighting = stdMat.twoSidedLighting;\n\t\toptions.litOptions.occludeSpecular = stdMat.occludeSpecular;\n\t\toptions.litOptions.occludeSpecularFloat = stdMat.occludeSpecularIntensity !== 1.0;\n\t\toptions.litOptions.useMsdf = !!stdMat.msdfMap;\n\t\toptions.litOptions.msdfTextAttribute = !!stdMat.msdfTextAttribute;\n\t\toptions.litOptions.alphaToCoverage = stdMat.alphaToCoverage;\n\t\toptions.litOptions.opacityFadesSpecular = stdMat.opacityFadesSpecular;\n\t\toptions.litOptions.opacityDither = stdMat.opacityDither;\n\t\toptions.litOptions.cubeMapProjection = stdMat.cubeMapProjection;\n\t\toptions.litOptions.occludeDirect = stdMat.occludeDirect;\n\t\toptions.litOptions.conserveEnergy = stdMat.conserveEnergy && stdMat.shadingModel !== SPECULAR_PHONG;\n\t\toptions.litOptions.useSpecular = useSpecular;\n\t\toptions.litOptions.useSpecularityFactor = (specularityFactorTint || !!stdMat.specularityFactorMap) && stdMat.useMetalnessSpecularColor;\n\t\toptions.litOptions.enableGGXSpecular = stdMat.enableGGXSpecular;\n\t\toptions.litOptions.fresnelModel = stdMat.fresnelModel;\n\t\toptions.litOptions.useRefraction = (stdMat.refraction || !!stdMat.refractionMap) && (stdMat.useDynamicRefraction || !!options.litOptions.reflectionSource);\n\t\toptions.litOptions.useClearCoat = !!stdMat.clearCoat;\n\t\toptions.litOptions.useSheen = stdMat.useSheen;\n\t\toptions.litOptions.useIridescence = stdMat.useIridescence && stdMat.iridescence !== 0.0;\n\t\toptions.litOptions.useMetalness = stdMat.useMetalness;\n\t\toptions.litOptions.useDynamicRefraction = stdMat.useDynamicRefraction;\n\t\toptions.litOptions.dispersion = stdMat.dispersion > 0;\n\t}\n\t_updateEnvOptions(options, stdMat, scene) {\n\t\toptions.litOptions.fog = stdMat.useFog ? scene.fog : 'none';\n\t\toptions.litOptions.gamma = stdMat.useGammaTonemap ? scene.gammaCorrection : GAMMA_NONE;\n\t\toptions.litOptions.toneMap = stdMat.useGammaTonemap ? scene.toneMapping : -1;\n\t\toptions.litOptions.fixSeams = stdMat.cubeMap ? stdMat.cubeMap.fixCubemapSeams : false;\n\t\tconst isPhong = stdMat.shadingModel === SPECULAR_PHONG;\n\t\tlet usingSceneEnv = false;\n\t\tif (stdMat.envAtlas && stdMat.cubeMap && !isPhong) {\n\t\t\toptions.litOptions.reflectionSource = 'envAtlasHQ';\n\t\t\toptions.litOptions.reflectionEncoding = stdMat.envAtlas.encoding;\n\t\t\toptions.litOptions.reflectionCubemapEncoding = stdMat.cubeMap.encoding;\n\t\t} else if (stdMat.envAtlas && !isPhong) {\n\t\t\toptions.litOptions.reflectionSource = 'envAtlas';\n\t\t\toptions.litOptions.reflectionEncoding = stdMat.envAtlas.encoding;\n\t\t} else if (stdMat.cubeMap) {\n\t\t\toptions.litOptions.reflectionSource = 'cubeMap';\n\t\t\toptions.litOptions.reflectionEncoding = stdMat.cubeMap.encoding;\n\t\t} else if (stdMat.sphereMap) {\n\t\t\toptions.litOptions.reflectionSource = 'sphereMap';\n\t\t\toptions.litOptions.reflectionEncoding = stdMat.sphereMap.encoding;\n\t\t} else if (stdMat.useSkybox && scene.envAtlas && scene.skybox && !isPhong) {\n\t\t\toptions.litOptions.reflectionSource = 'envAtlasHQ';\n\t\t\toptions.litOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\toptions.litOptions.reflectionCubemapEncoding = scene.skybox.encoding;\n\t\t\tusingSceneEnv = true;\n\t\t} else if (stdMat.useSkybox && scene.envAtlas && !isPhong) {\n\t\t\toptions.litOptions.reflectionSource = 'envAtlas';\n\t\t\toptions.litOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\tusingSceneEnv = true;\n\t\t} else if (stdMat.useSkybox && scene.skybox) {\n\t\t\toptions.litOptions.reflectionSource = 'cubeMap';\n\t\t\toptions.litOptions.reflectionEncoding = scene.skybox.encoding;\n\t\t\tusingSceneEnv = true;\n\t\t} else {\n\t\t\toptions.litOptions.reflectionSource = null;\n\t\t\toptions.litOptions.reflectionEncoding = null;\n\t\t}\n\t\tif (stdMat.ambientSH && !isPhong) {\n\t\t\toptions.litOptions.ambientSource = 'ambientSH';\n\t\t\toptions.litOptions.ambientEncoding = null;\n\t\t} else {\n\t\t\tconst envAtlas = stdMat.envAtlas || (stdMat.useSkybox && scene.envAtlas ? scene.envAtlas : null);\n\t\t\tif (envAtlas && !isPhong) {\n\t\t\t\toptions.litOptions.ambientSource = 'envAtlas';\n\t\t\t\toptions.litOptions.ambientEncoding = envAtlas.encoding;\n\t\t\t} else {\n\t\t\t\toptions.litOptions.ambientSource = 'constant';\n\t\t\t\toptions.litOptions.ambientEncoding = null;\n\t\t\t}\n\t\t}\n\t\toptions.litOptions.skyboxIntensity = usingSceneEnv;\n\t\toptions.litOptions.useCubeMapRotation = usingSceneEnv && scene._skyboxRotationShaderInclude;\n\t}\n\t_updateLightOptions(options, scene, stdMat, objDefs, sortedLights) {\n\t\toptions.lightMap = false;\n\t\toptions.lightMapChannel = '';\n\t\toptions.lightMapUv = 0;\n\t\toptions.lightMapTransform = 0;\n\t\toptions.litOptions.lightMapWithoutAmbient = false;\n\t\toptions.dirLightMap = false;\n\t\tif (objDefs) {\n\t\t\toptions.litOptions.noShadow = (objDefs & SHADERDEF_NOSHADOW) !== 0;\n\t\t\tif ((objDefs & SHADERDEF_LM) !== 0) {\n\t\t\t\toptions.lightMapEncoding = scene.lightmapPixelFormat === PIXELFORMAT_RGBA8 ? 'rgbm' : 'linear';\n\t\t\t\toptions.lightMap = true;\n\t\t\t\toptions.lightMapChannel = 'rgb';\n\t\t\t\toptions.lightMapUv = 1;\n\t\t\t\toptions.lightMapTransform = 0;\n\t\t\t\toptions.litOptions.lightMapWithoutAmbient = !stdMat.lightMap;\n\t\t\t\tif ((objDefs & SHADERDEF_DIRLM) !== 0) {\n\t\t\t\t\toptions.dirLightMap = true;\n\t\t\t\t}\n\t\t\t\tif ((objDefs & SHADERDEF_LMAMBIENT) !== 0) {\n\t\t\t\t\toptions.litOptions.lightMapWithoutAmbient = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (stdMat.useLighting) {\n\t\t\tconst lightsFiltered = [];\n\t\t\tconst mask = objDefs ? objDefs >> 16 : MASK_AFFECT_DYNAMIC;\n\t\t\toptions.litOptions.lightMaskDynamic = !!(mask & MASK_AFFECT_DYNAMIC);\n\t\t\tif (sortedLights) {\n\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_DIRECTIONAL, sortedLights[LIGHTTYPE_DIRECTIONAL], lightsFiltered, mask);\n\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_OMNI, sortedLights[LIGHTTYPE_OMNI], lightsFiltered, mask);\n\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_SPOT, sortedLights[LIGHTTYPE_SPOT], lightsFiltered, mask);\n\t\t\t}\n\t\t\toptions.litOptions.lights = lightsFiltered;\n\t\t} else {\n\t\t\toptions.litOptions.lights = [];\n\t\t}\n\t\tif (options.litOptions.lights.length === 0) {\n\t\t\toptions.litOptions.noShadow = true;\n\t\t}\n\t}\n\t_getMapTransformID(xform, uv) {\n\t\tif (!xform) return 0;\n\t\tlet xforms = this._mapXForms[uv];\n\t\tif (!xforms) {\n\t\t\txforms = [];\n\t\t\tthis._mapXForms[uv] = xforms;\n\t\t}\n\t\tfor (let i = 0; i < xforms.length; i++) {\n\t\t\tif (arraysEqual(xforms[i][0].value, xform[0].value) && arraysEqual(xforms[i][1].value, xform[1].value)) {\n\t\t\t\treturn i + 1;\n\t\t\t}\n\t\t}\n\t\treturn xforms.push(xform);\n\t}\n}\n\nexport { StandardMaterialOptionsBuilder };\n", "import { extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction _textureParameter(name, channel = true, vertexColor = true) {\n\tconst result = {};\n\tresult[`${name}Map`] = 'texture';\n\tresult[`${name}MapTiling`] = 'vec2';\n\tresult[`${name}MapOffset`] = 'vec2';\n\tresult[`${name}MapRotation`] = 'number';\n\tresult[`${name}MapUv`] = 'number';\n\tif (channel) {\n\t\tresult[`${name}MapChannel`] = 'string';\n\t\tif (vertexColor) {\n\t\t\tresult[`${name}VertexColor`] = 'boolean';\n\t\t\tresult[`${name}VertexColorChannel`] = 'string';\n\t\t}\n\t}\n\treturn result;\n}\nconst standardMaterialParameterTypes = _extends({\n\tname: 'string',\n\tchunks: 'chunks',\n\tmappingFormat: 'string',\n\t_engine: 'boolean',\n\tambient: 'rgb',\n\tambientTint: 'boolean'\n}, _textureParameter('ao'), _textureParameter('aoDetail', true, false), {\n\taoDetailMode: 'string',\n\tdiffuse: 'rgb',\n\tdiffuseTint: 'boolean'\n}, _textureParameter('diffuse'), _textureParameter('diffuseDetail', true, false), {\n\tdiffuseDetailMode: 'string',\n\tspecular: 'rgb',\n\tspecularTint: 'boolean'\n}, _textureParameter('specular'), {\n\toccludeSpecular: 'enum:occludeSpecular',\n\tspecularityFactor: 'number',\n\tspecularityFactorTint: 'boolean'\n}, _textureParameter('specularityFactor'), {\n\tuseMetalness: 'boolean',\n\tmetalness: 'number',\n\tenableGGXSpecular: 'boolean',\n\tanisotropy: 'number',\n\tmetalnessTint: 'boolean'\n}, _textureParameter('metalness'), {\n\tuseMetalnessSpecularColor: 'boolean',\n\tconserveEnergy: 'boolean',\n\tshininess: 'number',\n\tgloss: 'number',\n\tglossInvert: 'boolean'\n}, _textureParameter('gloss'), {\n\tclearCoat: 'number'\n}, _textureParameter('clearCoat'), {\n\tclearCoatGloss: 'number',\n\tclearCoatGlossInvert: 'boolean'\n}, _textureParameter('clearCoatGloss'), {\n\tclearCoatBumpiness: 'number'\n}, _textureParameter('clearCoatNormal', false), {\n\tuseSheen: 'boolean',\n\tsheen: 'rgb',\n\tsheenTint: 'boolean'\n}, _textureParameter('sheen'), {\n\tsheenGloss: 'number',\n\tsheenGlossTint: 'boolean',\n\tsheenGlossInvert: 'boolean'\n}, _textureParameter('sheenGloss'), {\n\tfresnelModel: 'number',\n\temissive: 'rgb',\n\temissiveTint: 'boolean'\n}, _textureParameter('emissive'), {\n\temissiveIntensity: 'number'\n}, _textureParameter('normal', false), {\n\tbumpiness: 'number'\n}, _textureParameter('normalDetail', false), {\n\tnormalDetailMapBumpiness: 'number'\n}, _textureParameter('height', true, false), {\n\theightMapFactor: 'number',\n\talphaToCoverage: 'boolean',\n\talphaTest: 'number',\n\talphaFade: 'number',\n\topacity: 'number'\n}, _textureParameter('opacity'), {\n\topacityFadesSpecular: 'boolean',\n\topacityDither: 'string',\n\topacityShadowDither: 'string',\n\treflectivity: 'number',\n\trefraction: 'number',\n\trefractionTint: 'boolean'\n}, _textureParameter('refraction'), {\n\trefractionIndex: 'number',\n\tdispersion: 'number',\n\tthickness: 'number',\n\tthicknessTint: 'boolean'\n}, _textureParameter('thickness'), {\n\tattenuation: 'rgb',\n\tattenuationDistance: 'number',\n\tuseDynamicRefraction: 'boolean',\n\tsphereMap: 'texture',\n\tcubeMap: 'cubemap',\n\tcubeMapProjection: 'number',\n\tcubeMapProjectionBox: 'boundingbox',\n\tuseIridescence: 'boolean',\n\tiridescence: 'number',\n\tiridescenceTint: 'boolean'\n}, _textureParameter('iridescence'), {\n\tiridescenceThicknessTint: 'boolean',\n\tiridescenceThicknessMin: 'number',\n\tiridescenceThicknessMax: 'number',\n\tiridescenceRefractionIndex: 'number'\n}, _textureParameter('iridescenceThickness'), _textureParameter('light'), {\n\tdepthTest: 'boolean',\n\tdepthFunc: 'enum:depthFunc',\n\tdepthWrite: 'boolean',\n\tdepthBias: 'number',\n\tslopeDepthBias: 'number',\n\tcull: 'enum:cull',\n\tblendType: 'enum:blendType',\n\tshadingModel: 'enum:shadingModel',\n\tuseFog: 'boolean',\n\tuseLighting: 'boolean',\n\tuseSkybox: 'boolean',\n\tuseGammaTonemap: 'boolean',\n\tenvAtlas: 'texture',\n\ttwoSidedLighting: 'boolean'\n});\nconst standardMaterialTextureParameters = [];\nfor (const key in standardMaterialParameterTypes) {\n\tconst type = standardMaterialParameterTypes[key];\n\tif (type === 'texture') {\n\t\tstandardMaterialTextureParameters.push(key);\n\t}\n}\nconst standardMaterialCubemapParameters = [];\nfor (const key in standardMaterialParameterTypes) {\n\tconst type = standardMaterialParameterTypes[key];\n\tif (type === 'cubemap') {\n\t\tstandardMaterialCubemapParameters.push(key);\n\t}\n}\nconst standardMaterialRemovedParameters = {\n\taoMapVertexColor: 'boolean',\n\tdiffuseMapTint: 'boolean',\n\tdiffuseMapVertexColor: 'boolean',\n\temissiveMapTint: 'boolean',\n\temissiveMapVertexColor: 'boolean',\n\tglossMapVertexColor: 'boolean',\n\tmetalnessMapVertexColor: 'boolean',\n\topacityMapVertexColor: 'boolean',\n\tspecularAntialias: 'boolean',\n\tspecularMapTint: 'boolean',\n\tspecularMapVertexColor: 'boolean'\n};\n\nexport { standardMaterialCubemapParameters, standardMaterialParameterTypes, standardMaterialRemovedParameters, standardMaterialTextureParameters };\n", "import { Color } from '../../core/math/color.js';\nimport { math } from '../../core/math/math.js';\nimport { Vec2 } from '../../core/math/vec2.js';\nimport { ShaderProcessorOptions } from '../../platform/graphics/shader-processor-options.js';\nimport { CUBEPROJ_BOX, SPECULAR_PHONG, SHADER_DEPTH, SHADER_PICK, SHADER_PREPASS_VELOCITY, SPECOCC_AO, SPECULAR_BLINN, FRESNEL_SCHLICK, CUBEPROJ_NONE, DITHER_NONE, DETAILMODE_MUL } from '../constants.js';\nimport { ShaderPass } from '../shader-pass.js';\nimport { EnvLighting } from '../graphics/env-lighting.js';\nimport { getProgramLibrary } from '../shader-lib/get-program-library.js';\nimport { _matTex2D, standard } from '../shader-lib/programs/standard.js';\nimport { Material } from './material.js';\nimport { StandardMaterialOptionsBuilder } from './standard-material-options-builder.js';\nimport { standardMaterialTextureParameters, standardMaterialCubemapParameters } from './standard-material-parameters.js';\n\nconst _props = {};\nconst _uniforms = {};\nlet _params = new Set();\nclass StandardMaterial extends Material {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.userAttributes = new Map();\n\t\tthis._dirtyShader = true;\n\t\tthis._assetReferences = {};\n\t\tthis._activeParams = new Set();\n\t\tthis._activeLightingParams = new Set();\n\t\tthis.shaderOptBuilder = new StandardMaterialOptionsBuilder();\n\t\tthis.reset();\n\t}\n\treset() {\n\t\tObject.keys(_props).forEach(name => {\n\t\t\tthis[`_${name}`] = _props[name].value();\n\t\t});\n\t\tthis._chunks = {};\n\t\tthis._uniformCache = {};\n\t}\n\tset shader(shader) {}\n\tget shader() {\n\t\treturn null;\n\t}\n\tset chunks(value) {\n\t\tthis._dirtyShader = true;\n\t\tthis._chunks = value;\n\t}\n\tget chunks() {\n\t\tthis._dirtyShader = true;\n\t\treturn this._chunks;\n\t}\n\tcopy(source) {\n\t\tsuper.copy(source);\n\t\tObject.keys(_props).forEach(k => {\n\t\t\tthis[k] = source[k];\n\t\t});\n\t\tfor (const p in source._chunks) {\n\t\t\tif (source._chunks.hasOwnProperty(p)) this._chunks[p] = source._chunks[p];\n\t\t}\n\t\treturn this;\n\t}\n\tsetAttribute(name, semantic) {\n\t\tthis.userAttributes.set(semantic, name);\n\t}\n\t_setParameter(name, value) {\n\t\t_params.add(name);\n\t\tthis.setParameter(name, value);\n\t}\n\t_setParameters(parameters) {\n\t\tparameters.forEach(v => {\n\t\t\tthis._setParameter(v.name, v.value);\n\t\t});\n\t}\n\t_processParameters(paramsName) {\n\t\tconst prevParams = this[paramsName];\n\t\tprevParams.forEach(param => {\n\t\t\tif (!_params.has(param)) {\n\t\t\t\tdelete this.parameters[param];\n\t\t\t}\n\t\t});\n\t\tthis[paramsName] = _params;\n\t\t_params = prevParams;\n\t\t_params.clear();\n\t}\n\t_updateMap(p) {\n\t\tconst mname = p + 'Map';\n\t\tconst map = this[mname];\n\t\tif (map) {\n\t\t\tthis._setParameter('texture_' + mname, map);\n\t\t\tconst tname = mname + 'Transform';\n\t\t\tconst uniform = this.getUniform(tname);\n\t\t\tif (uniform) {\n\t\t\t\tthis._setParameters(uniform);\n\t\t\t}\n\t\t}\n\t}\n\t_allocUniform(name, allocFunc) {\n\t\tlet uniform = this._uniformCache[name];\n\t\tif (!uniform) {\n\t\t\tuniform = allocFunc();\n\t\t\tthis._uniformCache[name] = uniform;\n\t\t}\n\t\treturn uniform;\n\t}\n\tgetUniform(name, device, scene) {\n\t\treturn _uniforms[name](this, device, scene);\n\t}\n\tupdateUniforms(device, scene) {\n\t\tconst getUniform = name => {\n\t\t\treturn this.getUniform(name, device, scene);\n\t\t};\n\t\tthis._setParameter('material_ambient', getUniform('ambient'));\n\t\tif (!this.diffuseMap || this.diffuseTint) {\n\t\t\tthis._setParameter('material_diffuse', getUniform('diffuse'));\n\t\t}\n\t\tif (this.useMetalness) {\n\t\t\tif (!this.metalnessMap || this.metalness < 1) {\n\t\t\t\tthis._setParameter('material_metalness', this.metalness);\n\t\t\t}\n\t\t\tif (!this.specularMap || this.specularTint) {\n\t\t\t\tthis._setParameter('material_specular', getUniform('specular'));\n\t\t\t}\n\t\t\tif (!this.specularityFactorMap || this.specularityFactorTint) {\n\t\t\t\tthis._setParameter('material_specularityFactor', this.specularityFactor);\n\t\t\t}\n\t\t\tif (!this.sheenMap || this.sheenTint) {\n\t\t\t\tthis._setParameter('material_sheen', getUniform('sheen'));\n\t\t\t}\n\t\t\tif (!this.sheenGlossMap || this.sheenGlossTint) {\n\t\t\t\tthis._setParameter('material_sheenGloss', this.sheenGloss);\n\t\t\t}\n\t\t\tthis._setParameter('material_refractionIndex', this.refractionIndex);\n\t\t} else {\n\t\t\tif (!this.specularMap || this.specularTint) {\n\t\t\t\tthis._setParameter('material_specular', getUniform('specular'));\n\t\t\t}\n\t\t}\n\t\tif (this.enableGGXSpecular) {\n\t\t\tthis._setParameter('material_anisotropy', this.anisotropy);\n\t\t}\n\t\tif (this.clearCoat > 0) {\n\t\t\tthis._setParameter('material_clearCoat', this.clearCoat);\n\t\t\tthis._setParameter('material_clearCoatGloss', this.clearCoatGloss);\n\t\t\tthis._setParameter('material_clearCoatBumpiness', this.clearCoatBumpiness);\n\t\t}\n\t\tthis._setParameter('material_gloss', getUniform('gloss'));\n\t\tif (!this.emissiveMap || this.emissiveTint) {\n\t\t\tthis._setParameter('material_emissive', getUniform('emissive'));\n\t\t}\n\t\tif (this.emissiveIntensity !== 1) {\n\t\t\tthis._setParameter('material_emissiveIntensity', this.emissiveIntensity);\n\t\t}\n\t\tif (this.refraction > 0) {\n\t\t\tthis._setParameter('material_refraction', this.refraction);\n\t\t}\n\t\tif (this.dispersion > 0) {\n\t\t\tthis._setParameter('material_dispersion', this.dispersion);\n\t\t}\n\t\tif (this.useDynamicRefraction) {\n\t\t\tthis._setParameter('material_thickness', this.thickness);\n\t\t\tthis._setParameter('material_attenuation', getUniform('attenuation'));\n\t\t\tthis._setParameter('material_invAttenuationDistance', this.attenuationDistance === 0 ? 0 : 1.0 / this.attenuationDistance);\n\t\t}\n\t\tif (this.useIridescence) {\n\t\t\tthis._setParameter('material_iridescence', this.iridescence);\n\t\t\tthis._setParameter('material_iridescenceRefractionIndex', this.iridescenceRefractionIndex);\n\t\t\tthis._setParameter('material_iridescenceThicknessMin', this.iridescenceThicknessMin);\n\t\t\tthis._setParameter('material_iridescenceThicknessMax', this.iridescenceThicknessMax);\n\t\t}\n\t\tthis._setParameter('material_opacity', this.opacity);\n\t\tif (this.opacityFadesSpecular === false) {\n\t\t\tthis._setParameter('material_alphaFade', this.alphaFade);\n\t\t}\n\t\tif (this.occludeSpecular) {\n\t\t\tthis._setParameter('material_occludeSpecularIntensity', this.occludeSpecularIntensity);\n\t\t}\n\t\tif (this.cubeMapProjection === CUBEPROJ_BOX) {\n\t\t\tthis._setParameter(getUniform('cubeMapProjectionBox'));\n\t\t}\n\t\tfor (const p in _matTex2D) {\n\t\t\tthis._updateMap(p);\n\t\t}\n\t\tif (this.ambientSH) {\n\t\t\tthis._setParameter('ambientSH[0]', this.ambientSH);\n\t\t}\n\t\tif (this.normalMap) {\n\t\t\tthis._setParameter('material_bumpiness', this.bumpiness);\n\t\t}\n\t\tif (this.normalMap && this.normalDetailMap) {\n\t\t\tthis._setParameter('material_normalDetailMapBumpiness', this.normalDetailMapBumpiness);\n\t\t}\n\t\tif (this.heightMap) {\n\t\t\tthis._setParameter('material_heightMapFactor', getUniform('heightMapFactor'));\n\t\t}\n\t\tconst isPhong = this.shadingModel === SPECULAR_PHONG;\n\t\tif (this.envAtlas && this.cubeMap && !isPhong) {\n\t\t\tthis._setParameter('texture_envAtlas', this.envAtlas);\n\t\t\tthis._setParameter('texture_cubeMap', this.cubeMap);\n\t\t} else if (this.envAtlas && !isPhong) {\n\t\t\tthis._setParameter('texture_envAtlas', this.envAtlas);\n\t\t} else if (this.cubeMap) {\n\t\t\tthis._setParameter('texture_cubeMap', this.cubeMap);\n\t\t} else if (this.sphereMap) {\n\t\t\tthis._setParameter('texture_sphereMap', this.sphereMap);\n\t\t}\n\t\tthis._setParameter('material_reflectivity', this.reflectivity);\n\t\tthis._processParameters('_activeParams');\n\t\tif (this._dirtyShader) {\n\t\t\tthis.clearVariants();\n\t\t}\n\t}\n\tupdateEnvUniforms(device, scene) {\n\t\tconst isPhong = this.shadingModel === SPECULAR_PHONG;\n\t\tconst hasLocalEnvOverride = this.envAtlas && !isPhong || this.cubeMap || this.sphereMap;\n\t\tif (!hasLocalEnvOverride && this.useSkybox) {\n\t\t\tif (scene.envAtlas && scene.skybox && !isPhong) {\n\t\t\t\tthis._setParameter('texture_envAtlas', scene.envAtlas);\n\t\t\t\tthis._setParameter('texture_cubeMap', scene.skybox);\n\t\t\t} else if (scene.envAtlas && !isPhong) {\n\t\t\t\tthis._setParameter('texture_envAtlas', scene.envAtlas);\n\t\t\t} else if (scene.skybox) {\n\t\t\t\tthis._setParameter('texture_cubeMap', scene.skybox);\n\t\t\t}\n\t\t}\n\t\tthis._processParameters('_activeLightingParams');\n\t}\n\tgetShaderVariant(device, scene, objDefs, unused, pass, sortedLights, viewUniformFormat, viewBindGroupFormat, vertexFormat) {\n\t\tthis.updateEnvUniforms(device, scene);\n\t\tconst shaderPassInfo = ShaderPass.get(device).getByIndex(pass);\n\t\tconst minimalOptions = pass === SHADER_DEPTH || pass === SHADER_PICK || pass === SHADER_PREPASS_VELOCITY || shaderPassInfo.isShadow;\n\t\tlet options = minimalOptions ? standard.optionsContextMin : standard.optionsContext;\n\t\tif (minimalOptions) this.shaderOptBuilder.updateMinRef(options, scene, this, objDefs, pass, sortedLights);else this.shaderOptBuilder.updateRef(options, scene, this, objDefs, pass, sortedLights);\n\t\tif (this.onUpdateShader) {\n\t\t\toptions = this.onUpdateShader(options);\n\t\t}\n\t\tconst processingOptions = new ShaderProcessorOptions(viewUniformFormat, viewBindGroupFormat, vertexFormat);\n\t\tconst library = getProgramLibrary(device);\n\t\tlibrary.register('standard', standard);\n\t\tconst shader = library.getProgram('standard', options, processingOptions, this.userId);\n\t\tthis._dirtyShader = false;\n\t\treturn shader;\n\t}\n\tdestroy() {\n\t\tfor (const asset in this._assetReferences) {\n\t\t\tthis._assetReferences[asset]._unbind();\n\t\t}\n\t\tthis._assetReferences = null;\n\t\tsuper.destroy();\n\t}\n}\nStandardMaterial.TEXTURE_PARAMETERS = standardMaterialTextureParameters;\nStandardMaterial.CUBEMAP_PARAMETERS = standardMaterialCubemapParameters;\nconst defineUniform = (name, getUniformFunc) => {\n\t_uniforms[name] = getUniformFunc;\n};\nconst definePropInternal = (name, constructorFunc, setterFunc, getterFunc) => {\n\tObject.defineProperty(StandardMaterial.prototype, name, {\n\t\tget: getterFunc || function () {\n\t\t\treturn this[`_${name}`];\n\t\t},\n\t\tset: setterFunc\n\t});\n\t_props[name] = {\n\t\tvalue: constructorFunc\n\t};\n};\nconst defineValueProp = prop => {\n\tconst internalName = `_${prop.name}`;\n\tconst dirtyShaderFunc = prop.dirtyShaderFunc || (() => true);\n\tconst setterFunc = function setterFunc(value) {\n\t\tconst oldValue = this[internalName];\n\t\tif (oldValue !== value) {\n\t\t\tthis._dirtyShader = this._dirtyShader || dirtyShaderFunc(oldValue, value);\n\t\t\tthis[internalName] = value;\n\t\t}\n\t};\n\tdefinePropInternal(prop.name, () => prop.defaultValue, setterFunc, prop.getterFunc);\n};\nconst defineAggProp = prop => {\n\tconst internalName = `_${prop.name}`;\n\tconst dirtyShaderFunc = prop.dirtyShaderFunc || (() => true);\n\tconst setterFunc = function setterFunc(value) {\n\t\tconst oldValue = this[internalName];\n\t\tif (!oldValue.equals(value)) {\n\t\t\tthis._dirtyShader = this._dirtyShader || dirtyShaderFunc(oldValue, value);\n\t\t\tthis[internalName] = oldValue.copy(value);\n\t\t}\n\t};\n\tdefinePropInternal(prop.name, () => prop.defaultValue.clone(), setterFunc, prop.getterFunc);\n};\nconst defineProp = prop => {\n\treturn prop.defaultValue && prop.defaultValue.clone ? defineAggProp(prop) : defineValueProp(prop);\n};\nfunction _defineTex2D(name, channel = \"rgb\", vertexColor = true, uv = 0) {\n\t_matTex2D[name] = channel.length || -1;\n\tdefineProp({\n\t\tname: `${name}Map`,\n\t\tdefaultValue: null,\n\t\tdirtyShaderFunc: (oldValue, newValue) => {\n\t\t\treturn !!oldValue !== !!newValue || oldValue && (oldValue.type !== newValue.type || oldValue.fixCubemapSeams !== newValue.fixCubemapSeams || oldValue.format !== newValue.format);\n\t\t}\n\t});\n\tdefineProp({\n\t\tname: `${name}MapTiling`,\n\t\tdefaultValue: new Vec2(1, 1)\n\t});\n\tdefineProp({\n\t\tname: `${name}MapOffset`,\n\t\tdefaultValue: new Vec2(0, 0)\n\t});\n\tdefineProp({\n\t\tname: `${name}MapRotation`,\n\t\tdefaultValue: 0\n\t});\n\tdefineProp({\n\t\tname: `${name}MapUv`,\n\t\tdefaultValue: uv\n\t});\n\tif (channel) {\n\t\tdefineProp({\n\t\t\tname: `${name}MapChannel`,\n\t\t\tdefaultValue: channel\n\t\t});\n\t\tif (vertexColor) {\n\t\t\tdefineProp({\n\t\t\t\tname: `${name}VertexColor`,\n\t\t\t\tdefaultValue: false\n\t\t\t});\n\t\t\tdefineProp({\n\t\t\t\tname: `${name}VertexColorChannel`,\n\t\t\t\tdefaultValue: channel\n\t\t\t});\n\t\t}\n\t}\n\tconst mapTiling = `${name}MapTiling`;\n\tconst mapOffset = `${name}MapOffset`;\n\tconst mapRotation = `${name}MapRotation`;\n\tconst mapTransform = `${name}MapTransform`;\n\tdefineUniform(mapTransform, (material, device, scene) => {\n\t\tconst tiling = material[mapTiling];\n\t\tconst offset = material[mapOffset];\n\t\tconst rotation = material[mapRotation];\n\t\tif (tiling.x === 1 && tiling.y === 1 && offset.x === 0 && offset.y === 0 && rotation === 0) {\n\t\t\treturn null;\n\t\t}\n\t\tconst uniform = material._allocUniform(mapTransform, () => {\n\t\t\treturn [{\n\t\t\t\tname: `texture_${mapTransform}0`,\n\t\t\t\tvalue: new Float32Array(3)\n\t\t\t}, {\n\t\t\t\tname: `texture_${mapTransform}1`,\n\t\t\t\tvalue: new Float32Array(3)\n\t\t\t}];\n\t\t});\n\t\tconst cr = Math.cos(rotation * math.DEG_TO_RAD);\n\t\tconst sr = Math.sin(rotation * math.DEG_TO_RAD);\n\t\tconst uniform0 = uniform[0].value;\n\t\tuniform0[0] = cr * tiling.x;\n\t\tuniform0[1] = -sr * tiling.y;\n\t\tuniform0[2] = offset.x;\n\t\tconst uniform1 = uniform[1].value;\n\t\tuniform1[0] = sr * tiling.x;\n\t\tuniform1[1] = cr * tiling.y;\n\t\tuniform1[2] = 1.0 - tiling.y - offset.y;\n\t\treturn uniform;\n\t});\n}\nfunction _defineColor(name, defaultValue) {\n\tdefineProp({\n\t\tname: name,\n\t\tdefaultValue: defaultValue,\n\t\tgetterFunc: function () {\n\t\t\tthis._dirtyShader = true;\n\t\t\treturn this[`_${name}`];\n\t\t}\n\t});\n\tdefineUniform(name, (material, device, scene) => {\n\t\tconst uniform = material._allocUniform(name, () => new Float32Array(3));\n\t\tconst color = material[name];\n\t\tconst gamma = material.useGammaTonemap && scene.gammaCorrection;\n\t\tif (gamma) {\n\t\t\tuniform[0] = Math.pow(color.r, 2.2);\n\t\t\tuniform[1] = Math.pow(color.g, 2.2);\n\t\t\tuniform[2] = Math.pow(color.b, 2.2);\n\t\t} else {\n\t\t\tuniform[0] = color.r;\n\t\t\tuniform[1] = color.g;\n\t\t\tuniform[2] = color.b;\n\t\t}\n\t\treturn uniform;\n\t});\n}\nfunction _defineFloat(name, defaultValue, getUniformFunc) {\n\tdefineProp({\n\t\tname: name,\n\t\tdefaultValue: defaultValue,\n\t\tdirtyShaderFunc: (oldValue, newValue) => {\n\t\t\treturn (oldValue === 0 || oldValue === 1) !== (newValue === 0 || newValue === 1);\n\t\t}\n\t});\n\tdefineUniform(name, getUniformFunc);\n}\nfunction _defineObject(name, getUniformFunc) {\n\tdefineProp({\n\t\tname: name,\n\t\tdefaultValue: null,\n\t\tdirtyShaderFunc: (oldValue, newValue) => {\n\t\t\treturn !!oldValue === !!newValue;\n\t\t}\n\t});\n\tdefineUniform(name, getUniformFunc);\n}\nfunction _defineFlag(name, defaultValue) {\n\tdefineProp({\n\t\tname: name,\n\t\tdefaultValue: defaultValue\n\t});\n}\nfunction _defineMaterialProps() {\n\t_defineColor('ambient', new Color(0.7, 0.7, 0.7));\n\t_defineColor('diffuse', new Color(1, 1, 1));\n\t_defineColor('specular', new Color(0, 0, 0));\n\t_defineColor('emissive', new Color(0, 0, 0));\n\t_defineColor('sheen', new Color(1, 1, 1));\n\t_defineColor('attenuation', new Color(1, 1, 1));\n\t_defineFloat('emissiveIntensity', 1);\n\t_defineFloat('specularityFactor', 1);\n\t_defineFloat('sheenGloss', 0.0);\n\t_defineFloat('gloss', 0.25, (material, device, scene) => {\n\t\treturn material.shadingModel === SPECULAR_PHONG ? Math.pow(2, material.gloss * 11) : material.gloss;\n\t});\n\t_defineFloat('heightMapFactor', 1, (material, device, scene) => {\n\t\treturn material.heightMapFactor * 0.025;\n\t});\n\t_defineFloat('opacity', 1);\n\t_defineFloat('alphaFade', 1);\n\t_defineFloat('alphaTest', 0);\n\t_defineFloat('bumpiness', 1);\n\t_defineFloat('normalDetailMapBumpiness', 1);\n\t_defineFloat('reflectivity', 1);\n\t_defineFloat('occludeSpecularIntensity', 1);\n\t_defineFloat('refraction', 0);\n\t_defineFloat('refractionIndex', 1.0 / 1.5);\n\t_defineFloat('dispersion', 0);\n\t_defineFloat('thickness', 0);\n\t_defineFloat('attenuationDistance', 0);\n\t_defineFloat('metalness', 1);\n\t_defineFloat('anisotropy', 0);\n\t_defineFloat('clearCoat', 0);\n\t_defineFloat('clearCoatGloss', 1);\n\t_defineFloat('clearCoatBumpiness', 1);\n\t_defineFloat('aoUvSet', 0, null);\n\t_defineFloat('iridescence', 0);\n\t_defineFloat('iridescenceRefractionIndex', 1.0 / 1.5);\n\t_defineFloat('iridescenceThicknessMin', 0);\n\t_defineFloat('iridescenceThicknessMax', 0);\n\t_defineObject('ambientSH');\n\t_defineObject('cubeMapProjectionBox', (material, device, scene) => {\n\t\tconst uniform = material._allocUniform('cubeMapProjectionBox', () => {\n\t\t\treturn [{\n\t\t\t\tname: 'envBoxMin',\n\t\t\t\tvalue: new Float32Array(3)\n\t\t\t}, {\n\t\t\t\tname: 'envBoxMax',\n\t\t\t\tvalue: new Float32Array(3)\n\t\t\t}];\n\t\t});\n\t\tconst bboxMin = material.cubeMapProjectionBox.getMin();\n\t\tconst minUniform = uniform[0].value;\n\t\tminUniform[0] = bboxMin.x;\n\t\tminUniform[1] = bboxMin.y;\n\t\tminUniform[2] = bboxMin.z;\n\t\tconst bboxMax = material.cubeMapProjectionBox.getMax();\n\t\tconst maxUniform = uniform[1].value;\n\t\tmaxUniform[0] = bboxMax.x;\n\t\tmaxUniform[1] = bboxMax.y;\n\t\tmaxUniform[2] = bboxMax.z;\n\t\treturn uniform;\n\t});\n\t_defineFlag('ambientTint', false);\n\t_defineFlag('diffuseTint', false);\n\t_defineFlag('sheenTint', false);\n\t_defineFlag('specularTint', false);\n\t_defineFlag('specularityFactorTint', false);\n\t_defineFlag('emissiveTint', false);\n\t_defineFlag('fastTbn', false);\n\t_defineFlag('useMetalness', false);\n\t_defineFlag('useMetalnessSpecularColor', false);\n\t_defineFlag('useSheen', false);\n\t_defineFlag('enableGGXSpecular', false);\n\t_defineFlag('occludeDirect', false);\n\t_defineFlag('normalizeNormalMap', true);\n\t_defineFlag('conserveEnergy', true);\n\t_defineFlag('opacityFadesSpecular', true);\n\t_defineFlag('occludeSpecular', SPECOCC_AO);\n\t_defineFlag('shadingModel', SPECULAR_BLINN);\n\t_defineFlag('fresnelModel', FRESNEL_SCHLICK);\n\t_defineFlag('useDynamicRefraction', false);\n\t_defineFlag('cubeMapProjection', CUBEPROJ_NONE);\n\t_defineFlag('customFragmentShader', null);\n\t_defineFlag('useFog', true);\n\t_defineFlag('useLighting', true);\n\t_defineFlag('useGammaTonemap', true);\n\t_defineFlag('useSkybox', true);\n\t_defineFlag('forceUv1', false);\n\t_defineFlag('pixelSnap', false);\n\t_defineFlag('twoSidedLighting', false);\n\t_defineFlag('nineSlicedMode', undefined);\n\t_defineFlag('msdfTextAttribute', false);\n\t_defineFlag('useIridescence', false);\n\t_defineFlag('glossInvert', false);\n\t_defineFlag('sheenGlossInvert', false);\n\t_defineFlag('clearCoatGlossInvert', false);\n\t_defineFlag('opacityDither', DITHER_NONE);\n\t_defineFlag('opacityShadowDither', DITHER_NONE);\n\t_defineTex2D('diffuse');\n\t_defineTex2D('specular');\n\t_defineTex2D('emissive');\n\t_defineTex2D('thickness', 'g');\n\t_defineTex2D('specularityFactor', 'g');\n\t_defineTex2D('normal', '');\n\t_defineTex2D('metalness', 'g');\n\t_defineTex2D('gloss', 'g');\n\t_defineTex2D('opacity', 'a');\n\t_defineTex2D('refraction', 'g');\n\t_defineTex2D('height', 'g', false);\n\t_defineTex2D('ao', 'g');\n\t_defineTex2D('light', 'rgb', true, 1);\n\t_defineTex2D('msdf', '');\n\t_defineTex2D('diffuseDetail', 'rgb', false);\n\t_defineTex2D('normalDetail', '');\n\t_defineTex2D('aoDetail', 'g', false);\n\t_defineTex2D('clearCoat', 'g');\n\t_defineTex2D('clearCoatGloss', 'g');\n\t_defineTex2D('clearCoatNormal', '');\n\t_defineTex2D('sheen', 'rgb');\n\t_defineTex2D('sheenGloss', 'g');\n\t_defineTex2D('iridescence', 'g');\n\t_defineTex2D('iridescenceThickness', 'g');\n\t_defineFlag('diffuseDetailMode', DETAILMODE_MUL);\n\t_defineFlag('aoDetailMode', DETAILMODE_MUL);\n\t_defineObject('cubeMap');\n\t_defineObject('sphereMap');\n\t_defineObject('envAtlas');\n\tconst getterFunc = function getterFunc() {\n\t\treturn this._prefilteredCubemaps;\n\t};\n\tconst setterFunc = function setterFunc(value) {\n\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\tvalue = value || [];\n\t\tlet changed = false;\n\t\tlet complete = true;\n\t\tfor (let i = 0; i < 6; ++i) {\n\t\t\tconst v = value[i] || null;\n\t\t\tif (cubemaps[i] !== v) {\n\t\t\t\tcubemaps[i] = v;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tcomplete = complete && !!cubemaps[i];\n\t\t}\n\t\tif (changed) {\n\t\t\tif (complete) {\n\t\t\t\tthis.envAtlas = EnvLighting.generatePrefilteredAtlas(cubemaps, {\n\t\t\t\t\ttarget: this.envAtlas\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (this.envAtlas) {\n\t\t\t\t\tthis.envAtlas.destroy();\n\t\t\t\t\tthis.envAtlas = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._dirtyShader = true;\n\t\t}\n\t};\n\tconst empty = [null, null, null, null, null, null];\n\tdefinePropInternal('prefilteredCubemaps', () => empty.slice(), setterFunc, getterFunc);\n}\n_defineMaterialProps();\n\nexport { StandardMaterial };\n", "class Key {\n\tconstructor(time, position, rotation, scale) {\n\t\tthis.time = time;\n\t\tthis.position = position;\n\t\tthis.rotation = rotation;\n\t\tthis.scale = scale;\n\t}\n}\nclass Node {\n\tconstructor() {\n\t\tthis._name = '';\n\t\tthis._keys = [];\n\t}\n}\nclass Animation {\n\tconstructor() {\n\t\tthis.name = '';\n\t\tthis.duration = 0;\n\t\tthis._nodes = [];\n\t\tthis._nodeDict = {};\n\t}\n\tgetNode(name) {\n\t\treturn this._nodeDict[name];\n\t}\n\taddNode(node) {\n\t\tthis._nodes.push(node);\n\t\tthis._nodeDict[node._name] = node;\n\t}\n\tget nodes() {\n\t\treturn this._nodes;\n\t}\n}\n\nexport { Animation, Key, Node };\n", "import { Quat } from '../../core/math/quat.js';\nimport { Vec3 } from '../../core/math/vec3.js';\n\nclass InterpolatedKey {\n\tconstructor() {\n\t\tthis._written = false;\n\t\tthis._name = '';\n\t\tthis._keyFrames = [];\n\t\tthis._quat = new Quat();\n\t\tthis._pos = new Vec3();\n\t\tthis._scale = new Vec3();\n\t\tthis._targetNode = null;\n\t}\n\tgetTarget() {\n\t\treturn this._targetNode;\n\t}\n\tsetTarget(node) {\n\t\tthis._targetNode = node;\n\t}\n}\nclass Skeleton {\n\tconstructor(graph) {\n\t\tthis.looping = true;\n\t\tthis._animation = null;\n\t\tthis._time = 0;\n\t\tthis._interpolatedKeys = [];\n\t\tthis._interpolatedKeyDict = {};\n\t\tthis._currKeyIndices = {};\n\t\tthis.graph = null;\n\t\tconst addInterpolatedKeys = node => {\n\t\t\tconst interpKey = new InterpolatedKey();\n\t\t\tinterpKey._name = node.name;\n\t\t\tthis._interpolatedKeys.push(interpKey);\n\t\t\tthis._interpolatedKeyDict[node.name] = interpKey;\n\t\t\tthis._currKeyIndices[node.name] = 0;\n\t\t\tfor (let i = 0; i < node._children.length; i++) addInterpolatedKeys(node._children[i]);\n\t\t};\n\t\taddInterpolatedKeys(graph);\n\t}\n\tset animation(value) {\n\t\tthis._animation = value;\n\t\tthis.currentTime = 0;\n\t}\n\tget animation() {\n\t\treturn this._animation;\n\t}\n\tset currentTime(value) {\n\t\tthis._time = value;\n\t\tconst numNodes = this._interpolatedKeys.length;\n\t\tfor (let i = 0; i < numNodes; i++) {\n\t\t\tconst node = this._interpolatedKeys[i];\n\t\t\tconst nodeName = node._name;\n\t\t\tthis._currKeyIndices[nodeName] = 0;\n\t\t}\n\t\tthis.addTime(0);\n\t\tthis.updateGraph();\n\t}\n\tget currentTime() {\n\t\treturn this._time;\n\t}\n\tget numNodes() {\n\t\treturn this._interpolatedKeys.length;\n\t}\n\taddTime(delta) {\n\t\tif (this._animation !== null) {\n\t\t\tconst nodes = this._animation._nodes;\n\t\t\tconst duration = this._animation.duration;\n\t\t\tif (this._time === duration && !this.looping) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._time += delta;\n\t\t\tif (this._time > duration) {\n\t\t\t\tthis._time = this.looping ? 0.0 : duration;\n\t\t\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\tthis._currKeyIndices[nodeName] = 0;\n\t\t\t\t}\n\t\t\t} else if (this._time < 0) {\n\t\t\t\tthis._time = this.looping ? duration : 0.0;\n\t\t\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\tthis._currKeyIndices[nodeName] = node._keys.length - 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst offset = delta >= 0 ? 1 : -1;\n\t\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\t\tconst node = nodes[i];\n\t\t\t\tconst nodeName = node._name;\n\t\t\t\tconst keys = node._keys;\n\t\t\t\tconst interpKey = this._interpolatedKeyDict[nodeName];\n\t\t\t\tif (interpKey === undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet foundKey = false;\n\t\t\t\tif (keys.length !== 1) {\n\t\t\t\t\tfor (let currKeyIndex = this._currKeyIndices[nodeName]; currKeyIndex < keys.length - 1 && currKeyIndex >= 0; currKeyIndex += offset) {\n\t\t\t\t\t\tconst k1 = keys[currKeyIndex];\n\t\t\t\t\t\tconst k2 = keys[currKeyIndex + 1];\n\t\t\t\t\t\tif (k1.time <= this._time && k2.time >= this._time) {\n\t\t\t\t\t\t\tconst alpha = (this._time - k1.time) / (k2.time - k1.time);\n\t\t\t\t\t\t\tinterpKey._pos.lerp(k1.position, k2.position, alpha);\n\t\t\t\t\t\t\tinterpKey._quat.slerp(k1.rotation, k2.rotation, alpha);\n\t\t\t\t\t\t\tinterpKey._scale.lerp(k1.scale, k2.scale, alpha);\n\t\t\t\t\t\t\tinterpKey._written = true;\n\t\t\t\t\t\t\tthis._currKeyIndices[nodeName] = currKeyIndex;\n\t\t\t\t\t\t\tfoundKey = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (keys.length === 1 || !foundKey && this._time === 0.0 && this.looping) {\n\t\t\t\t\tinterpKey._pos.copy(keys[0].position);\n\t\t\t\t\tinterpKey._quat.copy(keys[0].rotation);\n\t\t\t\t\tinterpKey._scale.copy(keys[0].scale);\n\t\t\t\t\tinterpKey._written = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tblend(skel1, skel2, alpha) {\n\t\tconst numNodes = this._interpolatedKeys.length;\n\t\tfor (let i = 0; i < numNodes; i++) {\n\t\t\tconst key1 = skel1._interpolatedKeys[i];\n\t\t\tconst key2 = skel2._interpolatedKeys[i];\n\t\t\tconst dstKey = this._interpolatedKeys[i];\n\t\t\tif (key1._written && key2._written) {\n\t\t\t\tdstKey._quat.slerp(key1._quat, skel2._interpolatedKeys[i]._quat, alpha);\n\t\t\t\tdstKey._pos.lerp(key1._pos, skel2._interpolatedKeys[i]._pos, alpha);\n\t\t\t\tdstKey._scale.lerp(key1._scale, key2._scale, alpha);\n\t\t\t\tdstKey._written = true;\n\t\t\t} else if (key1._written) {\n\t\t\t\tdstKey._quat.copy(key1._quat);\n\t\t\t\tdstKey._pos.copy(key1._pos);\n\t\t\t\tdstKey._scale.copy(key1._scale);\n\t\t\t\tdstKey._written = true;\n\t\t\t} else if (key2._written) {\n\t\t\t\tdstKey._quat.copy(key2._quat);\n\t\t\t\tdstKey._pos.copy(key2._pos);\n\t\t\t\tdstKey._scale.copy(key2._scale);\n\t\t\t\tdstKey._written = true;\n\t\t\t}\n\t\t}\n\t}\n\tsetGraph(graph) {\n\t\tthis.graph = graph;\n\t\tif (graph) {\n\t\t\tfor (let i = 0; i < this._interpolatedKeys.length; i++) {\n\t\t\t\tconst interpKey = this._interpolatedKeys[i];\n\t\t\t\tconst graphNode = graph.findByName(interpKey._name);\n\t\t\t\tthis._interpolatedKeys[i].setTarget(graphNode);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < this._interpolatedKeys.length; i++) {\n\t\t\t\tthis._interpolatedKeys[i].setTarget(null);\n\t\t\t}\n\t\t}\n\t}\n\tupdateGraph() {\n\t\tif (this.graph) {\n\t\t\tfor (let i = 0; i < this._interpolatedKeys.length; i++) {\n\t\t\t\tconst interpKey = this._interpolatedKeys[i];\n\t\t\t\tif (interpKey._written) {\n\t\t\t\t\tconst transform = interpKey.getTarget();\n\t\t\t\t\ttransform.localPosition.copy(interpKey._pos);\n\t\t\t\t\ttransform.localRotation.copy(interpKey._quat);\n\t\t\t\t\ttransform.localScale.copy(interpKey._scale);\n\t\t\t\t\tif (!transform._dirtyLocal) transform._dirtifyLocal();\n\t\t\t\t\tinterpKey._written = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { Skeleton };\n", "import { Vec3 } from '../../core/math/vec3.js';\nimport { Geometry } from './geometry.js';\n\nconst primitiveUv1Padding = 4.0 / 64;\nconst primitiveUv1PaddingScale = 1.0 - primitiveUv1Padding * 2;\nclass ConeBaseGeometry extends Geometry {\n\tconstructor(baseRadius, peakRadius, height, heightSegments, capSegments, roundedCaps) {\n\t\tsuper();\n\t\tconst pos = new Vec3();\n\t\tconst bottomToTop = new Vec3();\n\t\tconst norm = new Vec3();\n\t\tconst top = new Vec3();\n\t\tconst bottom = new Vec3();\n\t\tconst tangent = new Vec3();\n\t\tconst positions = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst uvs1 = [];\n\t\tconst indices = [];\n\t\tlet offset;\n\t\tif (height > 0) {\n\t\t\tfor (let i = 0; i <= heightSegments; i++) {\n\t\t\t\tfor (let j = 0; j <= capSegments; j++) {\n\t\t\t\t\tconst theta = j / capSegments * 2 * Math.PI - Math.PI;\n\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\tbottom.set(sinTheta * baseRadius, -height / 2, cosTheta * baseRadius);\n\t\t\t\t\ttop.set(sinTheta * peakRadius, height / 2, cosTheta * peakRadius);\n\t\t\t\t\tpos.lerp(bottom, top, i / heightSegments);\n\t\t\t\t\tbottomToTop.sub2(top, bottom).normalize();\n\t\t\t\t\ttangent.set(cosTheta, 0, -sinTheta);\n\t\t\t\t\tnorm.cross(tangent, bottomToTop).normalize();\n\t\t\t\t\tpositions.push(pos.x, pos.y, pos.z);\n\t\t\t\t\tnormals.push(norm.x, norm.y, norm.z);\n\t\t\t\t\tlet u = j / capSegments;\n\t\t\t\t\tlet v = i / heightSegments;\n\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\tconst _v = v;\n\t\t\t\t\tv = u;\n\t\t\t\t\tu = _v;\n\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tu /= 3;\n\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\tif (i < heightSegments && j < capSegments) {\n\t\t\t\t\t\tconst first = i * (capSegments + 1) + j;\n\t\t\t\t\t\tconst second = i * (capSegments + 1) + (j + 1);\n\t\t\t\t\t\tconst third = (i + 1) * (capSegments + 1) + j;\n\t\t\t\t\t\tconst fourth = (i + 1) * (capSegments + 1) + (j + 1);\n\t\t\t\t\t\tindices.push(first, second, third);\n\t\t\t\t\t\tindices.push(second, fourth, third);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (roundedCaps) {\n\t\t\tconst latitudeBands = Math.floor(capSegments / 2);\n\t\t\tconst longitudeBands = capSegments;\n\t\t\tconst capOffset = height / 2;\n\t\t\tfor (let lat = 0; lat <= latitudeBands; lat++) {\n\t\t\t\tconst theta = lat * Math.PI * 0.5 / latitudeBands;\n\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\tfor (let lon = 0; lon <= longitudeBands; lon++) {\n\t\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\t\tconst y = cosTheta;\n\t\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\t\tlet u = 1 - lon / longitudeBands;\n\t\t\t\t\tlet v = 1 - lat / latitudeBands;\n\t\t\t\t\tpositions.push(x * peakRadius, y * peakRadius + capOffset, z * peakRadius);\n\t\t\t\t\tnormals.push(x, y, z);\n\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tu /= 3;\n\t\t\t\t\tv /= 3;\n\t\t\t\t\tu += 1.0 / 3;\n\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t}\n\t\t\t}\n\t\t\toffset = (heightSegments + 1) * (capSegments + 1);\n\t\t\tfor (let lat = 0; lat < latitudeBands; ++lat) {\n\t\t\t\tfor (let lon = 0; lon < longitudeBands; ++lon) {\n\t\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\t\tindices.push(offset + first + 1, offset + second, offset + first);\n\t\t\t\t\tindices.push(offset + first + 1, offset + second + 1, offset + second);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let lat = 0; lat <= latitudeBands; lat++) {\n\t\t\t\tconst theta = Math.PI * 0.5 + lat * Math.PI * 0.5 / latitudeBands;\n\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\tfor (let lon = 0; lon <= longitudeBands; lon++) {\n\t\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\t\tconst y = cosTheta;\n\t\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\t\tlet u = 1 - lon / longitudeBands;\n\t\t\t\t\tlet v = 1 - lat / latitudeBands;\n\t\t\t\t\tpositions.push(x * peakRadius, y * peakRadius - capOffset, z * peakRadius);\n\t\t\t\t\tnormals.push(x, y, z);\n\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tu /= 3;\n\t\t\t\t\tv /= 3;\n\t\t\t\t\tu += 2.0 / 3;\n\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t}\n\t\t\t}\n\t\t\toffset = (heightSegments + 1) * (capSegments + 1) + (longitudeBands + 1) * (latitudeBands + 1);\n\t\t\tfor (let lat = 0; lat < latitudeBands; ++lat) {\n\t\t\t\tfor (let lon = 0; lon < longitudeBands; ++lon) {\n\t\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\t\tindices.push(offset + first + 1, offset + second, offset + first);\n\t\t\t\t\tindices.push(offset + first + 1, offset + second + 1, offset + second);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\toffset = (heightSegments + 1) * (capSegments + 1);\n\t\t\tif (baseRadius > 0) {\n\t\t\t\tfor (let i = 0; i < capSegments; i++) {\n\t\t\t\t\tconst theta = i / capSegments * 2 * Math.PI;\n\t\t\t\t\tconst x = Math.sin(theta);\n\t\t\t\t\tconst y = -height / 2;\n\t\t\t\t\tconst z = Math.cos(theta);\n\t\t\t\t\tlet u = 1 - (x + 1) / 2;\n\t\t\t\t\tlet v = (z + 1) / 2;\n\t\t\t\t\tpositions.push(x * baseRadius, y, z * baseRadius);\n\t\t\t\t\tnormals.push(0, -1, 0);\n\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tu /= 3;\n\t\t\t\t\tv /= 3;\n\t\t\t\t\tu += 1 / 3;\n\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\tif (i > 1) {\n\t\t\t\t\t\tindices.push(offset, offset + i, offset + i - 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\toffset += capSegments;\n\t\t\tif (peakRadius > 0) {\n\t\t\t\tfor (let i = 0; i < capSegments; i++) {\n\t\t\t\t\tconst theta = i / capSegments * 2 * Math.PI;\n\t\t\t\t\tconst x = Math.sin(theta);\n\t\t\t\t\tconst y = height / 2;\n\t\t\t\t\tconst z = Math.cos(theta);\n\t\t\t\t\tlet u = 1 - (x + 1) / 2;\n\t\t\t\t\tlet v = (z + 1) / 2;\n\t\t\t\t\tpositions.push(x * peakRadius, y, z * peakRadius);\n\t\t\t\t\tnormals.push(0, 1, 0);\n\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\tu /= 3;\n\t\t\t\t\tv /= 3;\n\t\t\t\t\tu += 2 / 3;\n\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\tif (i > 1) {\n\t\t\t\t\t\tindices.push(offset, offset + i - 1, offset + i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.positions = positions;\n\t\tthis.normals = normals;\n\t\tthis.uvs = uvs;\n\t\tthis.uvs1 = uvs1;\n\t\tthis.indices = indices;\n\t}\n}\n\nexport { ConeBaseGeometry };\n", "import { ConeBaseGeometry } from './cone-base-geometry.js';\nimport { calculateTangents } from './geometry-utils.js';\n\nclass CapsuleGeometry extends ConeBaseGeometry {\n\tconstructor(opts = {}) {\n\t\tvar _opts$radius, _opts$height, _opts$heightSegments, _opts$sides;\n\t\tconst radius = (_opts$radius = opts.radius) != null ? _opts$radius : 0.3;\n\t\tconst height = (_opts$height = opts.height) != null ? _opts$height : 1;\n\t\tconst heightSegments = (_opts$heightSegments = opts.heightSegments) != null ? _opts$heightSegments : 1;\n\t\tconst sides = (_opts$sides = opts.sides) != null ? _opts$sides : 20;\n\t\tsuper(radius, radius, height - 2 * radius, heightSegments, sides, true);\n\t\tif (opts.calculateTangents) {\n\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t}\n\t}\n}\n\nexport { CapsuleGeometry };\n", "import { ConeBaseGeometry } from './cone-base-geometry.js';\nimport { calculateTangents } from './geometry-utils.js';\n\nclass ConeGeometry extends ConeBaseGeometry {\n\tconstructor(opts = {}) {\n\t\tvar _opts$baseRadius, _opts$peakRadius, _opts$height, _opts$heightSegments, _opts$capSegments;\n\t\tconst baseRadius = (_opts$baseRadius = opts.baseRadius) != null ? _opts$baseRadius : 0.5;\n\t\tconst peakRadius = (_opts$peakRadius = opts.peakRadius) != null ? _opts$peakRadius : 0;\n\t\tconst height = (_opts$height = opts.height) != null ? _opts$height : 1;\n\t\tconst heightSegments = (_opts$heightSegments = opts.heightSegments) != null ? _opts$heightSegments : 5;\n\t\tconst capSegments = (_opts$capSegments = opts.capSegments) != null ? _opts$capSegments : 18;\n\t\tsuper(baseRadius, peakRadius, height, heightSegments, capSegments, false);\n\t\tif (opts.calculateTangents) {\n\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t}\n\t}\n}\n\nexport { ConeGeometry };\n", "import { ConeBaseGeometry } from './cone-base-geometry.js';\nimport { calculateTangents } from './geometry-utils.js';\n\nclass CylinderGeometry extends ConeBaseGeometry {\n\tconstructor(opts = {}) {\n\t\tvar _opts$radius, _opts$height, _opts$heightSegments, _opts$capSegments;\n\t\tconst radius = (_opts$radius = opts.radius) != null ? _opts$radius : 0.5;\n\t\tconst height = (_opts$height = opts.height) != null ? _opts$height : 1;\n\t\tconst heightSegments = (_opts$heightSegments = opts.heightSegments) != null ? _opts$heightSegments : 5;\n\t\tconst capSegments = (_opts$capSegments = opts.capSegments) != null ? _opts$capSegments : 20;\n\t\tsuper(radius, radius, height, heightSegments, capSegments, false);\n\t\tif (opts.calculateTangents) {\n\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t}\n\t}\n}\n\nexport { CylinderGeometry };\n", "import { Vec2 } from '../../core/math/vec2.js';\nimport { calculateTangents } from './geometry-utils.js';\nimport { Geometry } from './geometry.js';\n\nclass PlaneGeometry extends Geometry {\n\tconstructor(opts = {}) {\n\t\tvar _opts$halfExtents, _opts$widthSegments, _opts$lengthSegments;\n\t\tsuper();\n\t\tconst he = (_opts$halfExtents = opts.halfExtents) != null ? _opts$halfExtents : new Vec2(0.5, 0.5);\n\t\tconst ws = (_opts$widthSegments = opts.widthSegments) != null ? _opts$widthSegments : 5;\n\t\tconst ls = (_opts$lengthSegments = opts.lengthSegments) != null ? _opts$lengthSegments : 5;\n\t\tconst positions = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\t\tlet vcounter = 0;\n\t\tfor (let i = 0; i <= ws; i++) {\n\t\t\tfor (let j = 0; j <= ls; j++) {\n\t\t\t\tconst x = -he.x + 2 * he.x * i / ws;\n\t\t\t\tconst y = 0.0;\n\t\t\t\tconst z = -(-he.y + 2 * he.y * j / ls);\n\t\t\t\tconst u = i / ws;\n\t\t\t\tconst v = j / ls;\n\t\t\t\tpositions.push(x, y, z);\n\t\t\t\tnormals.push(0, 1, 0);\n\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\tif (i < ws && j < ls) {\n\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + 1, vcounter);\n\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + ls + 2, vcounter + 1);\n\t\t\t\t}\n\t\t\t\tvcounter++;\n\t\t\t}\n\t\t}\n\t\tthis.positions = positions;\n\t\tthis.normals = normals;\n\t\tthis.uvs = uvs;\n\t\tthis.uvs1 = uvs;\n\t\tthis.indices = indices;\n\t\tif (opts.calculateTangents) {\n\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t}\n\t}\n}\n\nexport { PlaneGeometry };\n", "import { math } from '../../core/math/math.js';\nimport { calculateTangents } from './geometry-utils.js';\nimport { Geometry } from './geometry.js';\n\nclass TorusGeometry extends Geometry {\n\tconstructor(opts = {}) {\n\t\tvar _opts$tubeRadius, _opts$ringRadius, _opts$sectorAngle, _opts$segments, _opts$sides;\n\t\tsuper();\n\t\tconst rc = (_opts$tubeRadius = opts.tubeRadius) != null ? _opts$tubeRadius : 0.2;\n\t\tconst rt = (_opts$ringRadius = opts.ringRadius) != null ? _opts$ringRadius : 0.3;\n\t\tconst sectorAngle = ((_opts$sectorAngle = opts.sectorAngle) != null ? _opts$sectorAngle : 360) * math.DEG_TO_RAD;\n\t\tconst segments = (_opts$segments = opts.segments) != null ? _opts$segments : 30;\n\t\tconst sides = (_opts$sides = opts.sides) != null ? _opts$sides : 20;\n\t\tconst positions = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\t\tfor (let i = 0; i <= sides; i++) {\n\t\t\tfor (let j = 0; j <= segments; j++) {\n\t\t\t\tconst x = Math.cos(sectorAngle * j / segments) * (rt + rc * Math.cos(2 * Math.PI * i / sides));\n\t\t\t\tconst y = Math.sin(2 * Math.PI * i / sides) * rc;\n\t\t\t\tconst z = Math.sin(sectorAngle * j / segments) * (rt + rc * Math.cos(2 * Math.PI * i / sides));\n\t\t\t\tconst nx = Math.cos(sectorAngle * j / segments) * Math.cos(2 * Math.PI * i / sides);\n\t\t\t\tconst ny = Math.sin(2 * Math.PI * i / sides);\n\t\t\t\tconst nz = Math.sin(sectorAngle * j / segments) * Math.cos(2 * Math.PI * i / sides);\n\t\t\t\tconst u = i / sides;\n\t\t\t\tconst v = 1 - j / segments;\n\t\t\t\tpositions.push(x, y, z);\n\t\t\t\tnormals.push(nx, ny, nz);\n\t\t\t\tuvs.push(u, 1.0 - v);\n\t\t\t\tif (i < sides && j < segments) {\n\t\t\t\t\tconst first = i * (segments + 1) + j;\n\t\t\t\t\tconst second = (i + 1) * (segments + 1) + j;\n\t\t\t\t\tconst third = i * (segments + 1) + (j + 1);\n\t\t\t\t\tconst fourth = (i + 1) * (segments + 1) + (j + 1);\n\t\t\t\t\tindices.push(first, second, third);\n\t\t\t\t\tindices.push(second, fourth, third);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.positions = positions;\n\t\tthis.normals = normals;\n\t\tthis.uvs = uvs;\n\t\tthis.uvs1 = uvs;\n\t\tthis.indices = indices;\n\t\tif (opts.calculateTangents) {\n\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t}\n\t}\n}\n\nexport { TorusGeometry };\n", "import { hashCode } from '../../core/hash.js';\nimport { version, revision } from '../../core/core.js';\nimport { Shader } from '../../platform/graphics/shader.js';\nimport { SHADER_FORWARD, SHADER_SHADOW, SHADER_DEPTH, SHADER_PICK, SHADER_PREPASS_VELOCITY } from '../constants.js';\nimport { ShaderPass } from '../shader-pass.js';\nimport { StandardMaterialOptions } from '../materials/standard-material-options.js';\n\nclass ProgramLibrary {\n\tconstructor(device, standardMaterial) {\n\t\tthis.processedCache = new Map();\n\t\tthis.definitionsCache = new Map();\n\t\tthis._generators = new Map();\n\t\tthis._device = device;\n\t\tthis._isClearingCache = false;\n\t\tthis._precached = false;\n\t\tthis._programsCollection = [];\n\t\tthis._defaultStdMatOption = new StandardMaterialOptions();\n\t\tthis._defaultStdMatOptionMin = new StandardMaterialOptions();\n\t\tstandardMaterial.shaderOptBuilder.updateRef(this._defaultStdMatOption, {}, standardMaterial, null, [], SHADER_FORWARD, null);\n\t\tstandardMaterial.shaderOptBuilder.updateMinRef(this._defaultStdMatOptionMin, {}, standardMaterial, null, SHADER_SHADOW, null);\n\t\tdevice.on('destroy:shader', shader => {\n\t\t\tthis.removeFromCache(shader);\n\t\t});\n\t}\n\tdestroy() {\n\t\tthis.clearCache();\n\t}\n\tregister(name, generator) {\n\t\tif (!this._generators.has(name)) {\n\t\t\tthis._generators.set(name, generator);\n\t\t}\n\t}\n\tunregister(name) {\n\t\tif (this._generators.has(name)) {\n\t\t\tthis._generators.delete(name);\n\t\t}\n\t}\n\tisRegistered(name) {\n\t\treturn this._generators.has(name);\n\t}\n\tgenerateShaderDefinition(generator, name, key, options) {\n\t\tlet def = this.definitionsCache.get(key);\n\t\tif (!def) {\n\t\t\tvar _options$litOptions, _options$litOptions2, _def$name;\n\t\t\tlet lights;\n\t\t\tif ((_options$litOptions = options.litOptions) != null && _options$litOptions.lights) {\n\t\t\t\tlights = options.litOptions.lights;\n\t\t\t\toptions.litOptions.lights = lights.map(function (l) {\n\t\t\t\t\tconst lcopy = l.clone ? l.clone() : l;\n\t\t\t\t\tlcopy.key = l.key;\n\t\t\t\t\treturn lcopy;\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.storeNewProgram(name, options);\n\t\t\tif ((_options$litOptions2 = options.litOptions) != null && _options$litOptions2.lights) options.litOptions.lights = lights;\n\t\t\tif (this._precached) ;\n\t\t\tconst device = this._device;\n\t\t\tdef = generator.createShaderDefinition(device, options);\n\t\t\tdef.name = (_def$name = def.name) != null ? _def$name : options.pass ? `${name}-pass:${options.pass}` : name;\n\t\t\tthis.definitionsCache.set(key, def);\n\t\t}\n\t\treturn def;\n\t}\n\tgetCachedShader(key) {\n\t\treturn this.processedCache.get(key);\n\t}\n\tsetCachedShader(key, shader) {\n\t\tthis.processedCache.set(key, shader);\n\t}\n\tgetProgram(name, options, processingOptions, userMaterialId) {\n\t\tconst generator = this._generators.get(name);\n\t\tif (!generator) {\n\t\t\treturn null;\n\t\t}\n\t\tconst generationKeyString = generator.generateKey(options);\n\t\tconst generationKey = hashCode(generationKeyString);\n\t\tconst processingKeyString = processingOptions.generateKey(this._device);\n\t\tconst processingKey = hashCode(processingKeyString);\n\t\tconst totalKey = `${generationKey}#${processingKey}`;\n\t\tlet processedShader = this.getCachedShader(totalKey);\n\t\tif (!processedShader) {\n\t\t\tconst generatedShaderDef = this.generateShaderDefinition(generator, name, generationKey, options);\n\t\t\tlet passName = '';\n\t\t\tlet shaderPassInfo;\n\t\t\tif (options.pass !== undefined) {\n\t\t\t\tshaderPassInfo = ShaderPass.get(this._device).getByIndex(options.pass);\n\t\t\t\tpassName = `-${shaderPassInfo.name}`;\n\t\t\t}\n\t\t\tthis._device.fire('shader:generate', {\n\t\t\t\tuserMaterialId,\n\t\t\t\tshaderPassInfo,\n\t\t\t\tdefinition: generatedShaderDef\n\t\t\t});\n\t\t\tconst shaderDefinition = {\n\t\t\t\tname: `${generatedShaderDef.name}${passName}-proc`,\n\t\t\t\tattributes: generatedShaderDef.attributes,\n\t\t\t\tvshader: generatedShaderDef.vshader,\n\t\t\t\tvincludes: generatedShaderDef.vincludes,\n\t\t\t\tfincludes: generatedShaderDef.fincludes,\n\t\t\t\tfshader: generatedShaderDef.fshader,\n\t\t\t\tprocessingOptions: processingOptions,\n\t\t\t\tshaderLanguage: generatedShaderDef.shaderLanguage\n\t\t\t};\n\t\t\tprocessedShader = new Shader(this._device, shaderDefinition);\n\t\t\tthis.setCachedShader(totalKey, processedShader);\n\t\t}\n\t\treturn processedShader;\n\t}\n\tstoreNewProgram(name, options) {\n\t\tlet opt = {};\n\t\tif (name === \"standard\") {\n\t\t\tconst defaultMat = this._getDefaultStdMatOptions(options.pass);\n\t\t\tfor (const p in options) {\n\t\t\t\tif (options.hasOwnProperty(p) && defaultMat[p] !== options[p] || p === \"pass\") opt[p] = options[p];\n\t\t\t}\n\t\t\tfor (const p in options.litOptions) {\n\t\t\t\topt[p] = options.litOptions[p];\n\t\t\t}\n\t\t} else {\n\t\t\topt = options;\n\t\t}\n\t\tthis._programsCollection.push(JSON.stringify({\n\t\t\tname: name,\n\t\t\toptions: opt\n\t\t}));\n\t}\n\tdumpPrograms() {\n\t\tlet text = 'let device = pc.app ? pc.app.graphicsDevice : pc.Application.getApplication().graphicsDevice;\\n';\n\t\ttext += 'let shaders = [';\n\t\tif (this._programsCollection[0]) text += '\\n\\t' + this._programsCollection[0];\n\t\tfor (let i = 1; i < this._programsCollection.length; ++i) {\n\t\t\ttext += ',\\n\\t' + this._programsCollection[i];\n\t\t}\n\t\ttext += '\\n];\\n';\n\t\ttext += 'device.getProgramLibrary().precompile(shaders);\\n';\n\t\ttext += 'if (pc.version != \\\"' + version + '\\\" || pc.revision != \\\"' + revision + '\\\")\\n';\n\t\ttext += '\\tconsole.warn(\\\"precompile-shaders.js: engine version mismatch, rebuild shaders lib with current engine\\\");';\n\t\tconst element = document.createElement('a');\n\t\telement.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));\n\t\telement.setAttribute('download', 'precompile-shaders.js');\n\t\telement.style.display = 'none';\n\t\tdocument.body.appendChild(element);\n\t\telement.click();\n\t\tdocument.body.removeChild(element);\n\t}\n\tclearCache() {\n\t\tthis._isClearingCache = true;\n\t\tthis.processedCache.forEach(shader => {\n\t\t\tshader.destroy();\n\t\t});\n\t\tthis.processedCache.clear();\n\t\tthis._isClearingCache = false;\n\t}\n\tremoveFromCache(shader) {\n\t\tif (this._isClearingCache) return;\n\t\tthis.processedCache.forEach((cachedShader, key) => {\n\t\t\tif (shader === cachedShader) {\n\t\t\t\tthis.processedCache.delete(key);\n\t\t\t}\n\t\t});\n\t}\n\t_getDefaultStdMatOptions(pass) {\n\t\tconst shaderPassInfo = ShaderPass.get(this._device).getByIndex(pass);\n\t\treturn pass === SHADER_DEPTH || pass === SHADER_PICK || pass === SHADER_PREPASS_VELOCITY || shaderPassInfo.isShadow ? this._defaultStdMatOptionMin : this._defaultStdMatOption;\n\t}\n\tprecompile(cache) {\n\t\tif (cache) {\n\t\t\tconst shaders = new Array(cache.length);\n\t\t\tfor (let i = 0; i < cache.length; i++) {\n\t\t\t\tif (cache[i].name === \"standard\") {\n\t\t\t\t\tconst opt = cache[i].options;\n\t\t\t\t\tconst defaultMat = this._getDefaultStdMatOptions(opt.pass);\n\t\t\t\t\tfor (const p in defaultMat) {\n\t\t\t\t\t\tif (defaultMat.hasOwnProperty(p) && opt[p] === undefined) opt[p] = defaultMat[p];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshaders[i] = this.getProgram(cache[i].name, cache[i].options);\n\t\t\t}\n\t\t}\n\t\tthis._precached = true;\n\t}\n}\n\nexport { ProgramLibrary };\n", "const FILLMODE_NONE = 'NONE';\nconst FILLMODE_FILL_WINDOW = 'FILL_WINDOW';\nconst FILLMODE_KEEP_ASPECT = 'KEEP_ASPECT';\nconst RESOLUTION_AUTO = 'AUTO';\nconst RESOLUTION_FIXED = 'FIXED';\n\nexport { FILLMODE_FILL_WINDOW, FILLMODE_KEEP_ASPECT, FILLMODE_NONE, RESOLUTION_AUTO, RESOLUTION_FIXED };\n", "let currentApplication;\nfunction getApplication() {\n\treturn currentApplication;\n}\nfunction setApplication(app) {\n\tcurrentApplication = app;\n}\n\nexport { getApplication, setApplication };\n", "class ScriptTypes {\n\tstatic push(Type, isLegacy) {\n\t\tif (isLegacy && ScriptTypes._types.length > 0) {\n\t\t\tconsole.assert('Script Ordering Error. Contact support@playcanvas.com');\n\t\t} else {\n\t\t\tScriptTypes._types.push(Type);\n\t\t}\n\t}\n}\nScriptTypes._types = [];\n\nexport { ScriptTypes };\n", "import { events } from '../core/events.js';\nimport { getApplication } from './globals.js';\nimport { ScriptTypes } from './script/script-types.js';\n\nlet _legacy = false;\nlet _createdLoadingScreen = false;\nconst script = {\n\tapp: null,\n\tcreate(name, callback) {\n\t\tif (!_legacy) return;\n\t\tconst ScriptType = callback(script.app);\n\t\tScriptType._pcScriptName = name;\n\t\tScriptTypes.push(ScriptType, _legacy);\n\t\tthis.fire(\"created\", name, callback);\n\t},\n\tattribute(name, type, defaultValue, options) {},\n\tcreateLoadingScreen(callback) {\n\t\tif (_createdLoadingScreen) return;\n\t\t_createdLoadingScreen = true;\n\t\tconst app = getApplication();\n\t\tcallback(app);\n\t}\n};\nObject.defineProperty(script, 'legacy', {\n\tget: function () {\n\t\treturn _legacy;\n\t},\n\tset: function (value) {\n\t\t_legacy = value;\n\t}\n});\nevents.attach(script);\n\nexport { script };\n", "class FrameGraph {\n\tconstructor() {\n\t\tthis.renderPasses = [];\n\t\tthis.renderTargetMap = new Map();\n\t}\n\taddRenderPass(renderPass) {\n\t\trenderPass.frameUpdate();\n\t\tconst beforePasses = renderPass.beforePasses;\n\t\tfor (let i = 0; i < beforePasses.length; i++) {\n\t\t\tconst pass = beforePasses[i];\n\t\t\tif (pass.enabled) {\n\t\t\t\tthis.addRenderPass(pass);\n\t\t\t}\n\t\t}\n\t\tif (renderPass.enabled) {\n\t\t\tthis.renderPasses.push(renderPass);\n\t\t}\n\t\tconst afterPasses = renderPass.afterPasses;\n\t\tfor (let i = 0; i < afterPasses.length; i++) {\n\t\t\tconst pass = afterPasses[i];\n\t\t\tif (pass.enabled) {\n\t\t\t\tthis.addRenderPass(pass);\n\t\t\t}\n\t\t}\n\t}\n\treset() {\n\t\tthis.renderPasses.length = 0;\n\t}\n\tcompile() {\n\t\tconst renderTargetMap = this.renderTargetMap;\n\t\tconst renderPasses = this.renderPasses;\n\t\tfor (let i = 0; i < renderPasses.length; i++) {\n\t\t\tconst renderPass = renderPasses[i];\n\t\t\tconst renderTarget = renderPass.renderTarget;\n\t\t\tif (renderTarget !== undefined) {\n\t\t\t\tconst prevPass = renderTargetMap.get(renderTarget);\n\t\t\t\tif (prevPass) {\n\t\t\t\t\tconst count = renderPass.colorArrayOps.length;\n\t\t\t\t\tfor (let j = 0; j < count; j++) {\n\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[j];\n\t\t\t\t\t\tif (!colorOps.clear) {\n\t\t\t\t\t\t\tprevPass.colorArrayOps[j].store = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!renderPass.depthStencilOps.clearDepth) {\n\t\t\t\t\t\tprevPass.depthStencilOps.storeDepth = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (!renderPass.depthStencilOps.clearStencil) {\n\t\t\t\t\t\tprevPass.depthStencilOps.storeStencil = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trenderTargetMap.set(renderTarget, renderPass);\n\t\t\t}\n\t\t}\n\t\tlet lastCubeTexture = null;\n\t\tlet lastCubeRenderPass = null;\n\t\tfor (let i = 0; i < renderPasses.length; i++) {\n\t\t\tconst renderPass = renderPasses[i];\n\t\t\tconst renderTarget = renderPass.renderTarget;\n\t\t\tconst thisTexture = renderTarget == null ? void 0 : renderTarget.colorBuffer;\n\t\t\tif (thisTexture != null && thisTexture.cubemap) {\n\t\t\t\tif (lastCubeTexture === thisTexture) {\n\t\t\t\t\tconst count = lastCubeRenderPass.colorArrayOps.length;\n\t\t\t\t\tfor (let j = 0; j < count; j++) {\n\t\t\t\t\t\tlastCubeRenderPass.colorArrayOps[j].mipmaps = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastCubeTexture = renderTarget.colorBuffer;\n\t\t\t\tlastCubeRenderPass = renderPass;\n\t\t\t} else if (renderPass.requiresCubemaps) {\n\t\t\t\tlastCubeTexture = null;\n\t\t\t\tlastCubeRenderPass = null;\n\t\t\t}\n\t\t}\n\t\trenderTargetMap.clear();\n\t}\n\trender(device) {\n\t\tthis.compile();\n\t\tconst renderPasses = this.renderPasses;\n\t\tfor (let i = 0; i < renderPasses.length; i++) {\n\t\t\trenderPasses[i].render();\n\t\t}\n\t}\n}\n\nexport { FrameGraph };\n", "import { FloatPacking } from '../core/math/float-packing.js';\nimport { Texture } from '../platform/graphics/texture.js';\nimport { DeviceCache } from '../platform/graphics/device-cache.js';\nimport { ADDRESS_CLAMP_TO_EDGE, TEXTURETYPE_DEFAULT, FILTER_LINEAR, FILTER_NEAREST, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA16F } from '../platform/graphics/constants.js';\n\nclass AreaLightCacheEntry {\n\tconstructor(texture0, texture1) {\n\t\tthis.texture0 = texture0;\n\t\tthis.texture1 = texture1;\n\t}\n\tdestroy() {\n\t\tvar _this$texture, _this$texture2;\n\t\t(_this$texture = this.texture0) == null || _this$texture.destroy();\n\t\t(_this$texture2 = this.texture1) == null || _this$texture2.destroy();\n\t}\n}\nconst deviceCache = new DeviceCache();\nclass AreaLightLuts {\n\tstatic createTexture(device, format, size, postfix = '') {\n\t\tconst tex = new Texture(device, {\n\t\t\tname: `AreaLightLUT${postfix}`,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t\tformat: format,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\ttype: TEXTURETYPE_DEFAULT,\n\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tanisotropy: 1,\n\t\t\tmipmaps: false\n\t\t});\n\t\treturn tex;\n\t}\n\tstatic applyTextures(device, texture1, texture2) {\n\t\tdeviceCache.remove(device);\n\t\tdeviceCache.get(device, () => {\n\t\t\treturn new AreaLightCacheEntry(texture1, texture1 === texture2 ? null : texture2);\n\t\t});\n\t\tdevice.scope.resolve('areaLightsLutTex1').setValue(texture1);\n\t\tdevice.scope.resolve('areaLightsLutTex2').setValue(texture2);\n\t}\n\tstatic createPlaceholder(device) {\n\t\tconst texture = AreaLightLuts.createTexture(device, device.areaLightLutFormat, 2, 'placeholder');\n\t\tconst pixels = texture.lock();\n\t\tpixels.fill(0);\n\t\ttexture.unlock();\n\t\tAreaLightLuts.applyTextures(device, texture, texture);\n\t}\n\tstatic set(device, ltcMat1, ltcMat2) {\n\t\tfunction buildTexture(device, data, format) {\n\t\t\tconst texture = AreaLightLuts.createTexture(device, format, 64);\n\t\t\ttexture.lock().set(data);\n\t\t\ttexture.unlock();\n\t\t\treturn texture;\n\t\t}\n\t\tfunction offsetScale(data, offset, scale) {\n\t\t\tconst count = data.length;\n\t\t\tconst ret = new Float32Array(count);\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tconst n = i % 4;\n\t\t\t\tret[i] = (data[i] + offset[n]) * scale[n];\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t\tfunction convertToHalfFloat(data) {\n\t\t\tconst count = data.length;\n\t\t\tconst ret = new Uint16Array(count);\n\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tret[i] = float2Half(data[i]);\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t\tfunction convertToUint(data) {\n\t\t\tconst count = data.length;\n\t\t\tconst ret = new Uint8ClampedArray(count);\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tret[i] = data[i] * 255;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t\tconst srcData1 = ltcMat1;\n\t\tconst srcData2 = ltcMat2;\n\t\tlet data1, data2;\n\t\tconst format = device.areaLightLutFormat;\n\t\tif (format === PIXELFORMAT_RGBA32F) {\n\t\t\tdata1 = srcData1;\n\t\t\tdata2 = srcData2;\n\t\t} else if (format === PIXELFORMAT_RGBA16F) {\n\t\t\tdata1 = convertToHalfFloat(srcData1);\n\t\t\tdata2 = convertToHalfFloat(srcData2);\n\t\t} else {\n\t\t\tconst o1 = [0.0, 0.2976, 0.01381, 0.0];\n\t\t\tconst s1 = [0.999, 3.08737, 1.6546, 0.603249];\n\t\t\tconst o2 = [-0.306897, 0.0, 0.0, 0.0];\n\t\t\tconst s2 = [1.442787, 1.0, 1.0, 1.0];\n\t\t\tdata1 = convertToUint(offsetScale(srcData1, o1, s1));\n\t\t\tdata2 = convertToUint(offsetScale(srcData2, o2, s2));\n\t\t}\n\t\tconst tex1 = buildTexture(device, data1, format);\n\t\tconst tex2 = buildTexture(device, data2, format);\n\t\tAreaLightLuts.applyTextures(device, tex1, tex2);\n\t}\n}\n\nexport { AreaLightLuts };\n", "const DEFAULT_LOCALE = 'en-US';\nconst DEFAULT_LOCALE_FALLBACKS = {\n\t'en': 'en-US',\n\t'es': 'en-ES',\n\t'zh': 'zh-CN',\n\t'zh-HK': 'zh-TW',\n\t'zh-TW': 'zh-HK',\n\t'zh-MO': 'zh-HK',\n\t'fr': 'fr-FR',\n\t'de': 'de-DE',\n\t'it': 'it-IT',\n\t'ru': 'ru-RU',\n\t'ja': 'ja-JP'\n};\n\nexport { DEFAULT_LOCALE, DEFAULT_LOCALE_FALLBACKS };\n", "import { DEFAULT_LOCALE_FALLBACKS, DEFAULT_LOCALE } from './constants.js';\n\nconst PLURALS = {};\nfunction definePluralFn(locales, fn) {\n\tfor (let i = 0, len = locales.length; i < len; i++) {\n\t\tPLURALS[locales[i]] = fn;\n\t}\n}\nfunction getLang(locale) {\n\tconst idx = locale.indexOf('-');\n\tif (idx !== -1) {\n\t\treturn locale.substring(0, idx);\n\t}\n\treturn locale;\n}\nfunction replaceLang(locale, desiredLang) {\n\tconst idx = locale.indexOf('-');\n\tif (idx !== -1) {\n\t\treturn desiredLang + locale.substring(idx);\n\t}\n\treturn desiredLang;\n}\nfunction findAvailableLocale(desiredLocale, availableLocales) {\n\tif (availableLocales[desiredLocale]) {\n\t\treturn desiredLocale;\n\t}\n\tlet fallback = DEFAULT_LOCALE_FALLBACKS[desiredLocale];\n\tif (fallback && availableLocales[fallback]) {\n\t\treturn fallback;\n\t}\n\tconst lang = getLang(desiredLocale);\n\tfallback = DEFAULT_LOCALE_FALLBACKS[lang];\n\tif (availableLocales[fallback]) {\n\t\treturn fallback;\n\t}\n\tif (availableLocales[lang]) {\n\t\treturn lang;\n\t}\n\treturn DEFAULT_LOCALE;\n}\ndefinePluralFn(['ja', 'ko', 'th', 'vi', 'zh', 'id'], function (n) {\n\treturn 0;\n});\ndefinePluralFn(['fa', 'hi'], function (n) {\n\tif (n >= 0 && n <= 1) {\n\t\treturn 0;\n\t}\n\treturn 1;\n});\ndefinePluralFn(['fr', 'pt'], function (n) {\n\tif (n >= 0 && n < 2) {\n\t\treturn 0;\n\t}\n\treturn 1;\n});\ndefinePluralFn(['da'], function (n) {\n\tif (n === 1 || !Number.isInteger(n) && n >= 0 && n <= 1) {\n\t\treturn 0;\n\t}\n\treturn 1;\n});\ndefinePluralFn(['de', 'en', 'it', 'el', 'es', 'tr', 'fi', 'sv', 'nb', 'no', 'ur'], function (n) {\n\tif (n === 1) {\n\t\treturn 0;\n\t}\n\treturn 1;\n});\ndefinePluralFn(['ru', 'uk'], function (n) {\n\tif (Number.isInteger(n)) {\n\t\tconst mod10 = n % 10;\n\t\tconst mod100 = n % 100;\n\t\tif (mod10 === 1 && mod100 !== 11) {\n\t\t\treturn 0;\n\t\t} else if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) {\n\t\t\treturn 1;\n\t\t} else if (mod10 === 0 || mod10 >= 5 && mod10 <= 9 || mod100 >= 11 && mod100 <= 14) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\treturn 3;\n});\ndefinePluralFn(['pl'], function (n) {\n\tif (Number.isInteger(n)) {\n\t\tif (n === 1) {\n\t\t\treturn 0;\n\t\t}\n\t\tconst mod10 = n % 10;\n\t\tconst mod100 = n % 100;\n\t\tif (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) {\n\t\t\treturn 1;\n\t\t} else if (mod10 >= 0 && mod10 <= 1 || mod10 >= 5 && mod10 <= 9 || mod100 >= 12 && mod100 <= 14) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\treturn 3;\n});\ndefinePluralFn(['ar'], function (n) {\n\tif (n === 0) {\n\t\treturn 0;\n\t} else if (n === 1) {\n\t\treturn 1;\n\t} else if (n === 2) {\n\t\treturn 2;\n\t}\n\tif (Number.isInteger(n)) {\n\t\tconst mod100 = n % 100;\n\t\tif (mod100 >= 3 && mod100 <= 10) {\n\t\t\treturn 3;\n\t\t} else if (mod100 >= 11 && mod100 <= 99) {\n\t\t\treturn 4;\n\t\t}\n\t}\n\treturn 5;\n});\nconst DEFAULT_PLURAL_FN = PLURALS[getLang(DEFAULT_LOCALE)];\nfunction getPluralFn(lang) {\n\treturn PLURALS[lang] || DEFAULT_PLURAL_FN;\n}\n\nexport { findAvailableLocale, getLang, getPluralFn, replaceLang };\n", "const ABSOLUTE_URL = new RegExp('^' + '\\\\s*' + '(?:' + '(?:' + '[a-z]+[a-z0-9\\\\-\\\\+\\\\.]*' + ':' + ')?' + '//' + '|' + 'data:' + '|blob:' + ')', 'i');\nconst ASSET_ANIMATION = 'animation';\nconst ASSET_AUDIO = 'audio';\nconst ASSET_IMAGE = 'image';\nconst ASSET_JSON = 'json';\nconst ASSET_MODEL = 'model';\nconst ASSET_MATERIAL = 'material';\nconst ASSET_TEXT = 'text';\nconst ASSET_TEXTURE = 'texture';\nconst ASSET_TEXTUREATLAS = 'textureatlas';\nconst ASSET_CUBEMAP = 'cubemap';\nconst ASSET_SHADER = 'shader';\nconst ASSET_CSS = 'css';\nconst ASSET_HTML = 'html';\nconst ASSET_SCRIPT = 'script';\nconst ASSET_CONTAINER = 'container';\n\nexport { ABSOLUTE_URL, ASSET_ANIMATION, ASSET_AUDIO, ASSET_CONTAINER, ASSET_CSS, ASSET_CUBEMAP, ASSET_HTML, ASSET_IMAGE, ASSET_JSON, ASSET_MATERIAL, ASSET_MODEL, ASSET_SCRIPT, ASSET_SHADER, ASSET_TEXT, ASSET_TEXTURE, ASSET_TEXTUREATLAS };\n", "class AssetFile {\n\tconstructor(url = '', filename = '', hash = null, size = null, opt = null, contents = null) {\n\t\tthis.url = url;\n\t\tthis.filename = filename;\n\t\tthis.hash = hash;\n\t\tthis.size = size;\n\t\tthis.opt = opt;\n\t\tthis.contents = contents;\n\t}\n\tequals(other) {\n\t\treturn this.url === other.url && this.filename === other.filename && this.hash === other.hash && this.size === other.size && this.opt === other.opt && this.contents === other.contents;\n\t}\n}\n\nexport { AssetFile };\n", "import { path } from '../../core/path.js';\nimport { Tags } from '../../core/tags.js';\nimport { EventHandler } from '../../core/event-handler.js';\nimport { findAvailableLocale } from '../i18n/utils.js';\nimport { ABSOLUTE_URL } from './constants.js';\nimport { AssetFile } from './asset-file.js';\nimport { getApplication } from '../globals.js';\nimport { http } from '../../platform/net/http.js';\n\nlet assetIdCounter = -1;\nconst VARIANT_SUPPORT = {\n\tpvr: 'extCompressedTexturePVRTC',\n\tdxt: 'extCompressedTextureS3TC',\n\tetc2: 'extCompressedTextureETC',\n\tetc1: 'extCompressedTextureETC1',\n\tbasis: 'canvas'\n};\nconst VARIANT_DEFAULT_PRIORITY = ['pvr', 'dxt', 'etc2', 'etc1', 'basis'];\nclass Asset extends EventHandler {\n\tconstructor(name, type, file, data, options) {\n\t\tsuper();\n\t\tthis._id = assetIdCounter--;\n\t\tthis._name = name || '';\n\t\tthis.type = type;\n\t\tthis.tags = new Tags(this);\n\t\tthis._preload = false;\n\t\tthis._file = null;\n\t\tthis._data = data || {};\n\t\tthis.options = options || {};\n\t\tthis._resources = [];\n\t\tthis.urlObject = null;\n\t\tthis._i18n = {};\n\t\tthis.loaded = false;\n\t\tthis.loading = false;\n\t\tthis.registry = null;\n\t\tif (file) this.file = file;\n\t}\n\tset id(value) {\n\t\tthis._id = value;\n\t}\n\tget id() {\n\t\treturn this._id;\n\t}\n\tset name(value) {\n\t\tif (this._name === value) return;\n\t\tconst old = this._name;\n\t\tthis._name = value;\n\t\tthis.fire('name', this, this._name, old);\n\t}\n\tget name() {\n\t\treturn this._name;\n\t}\n\tset file(value) {\n\t\tif (value && value.variants && ['texture', 'textureatlas', 'bundle'].indexOf(this.type) !== -1) {\n\t\t\tvar _this$registry;\n\t\t\tconst app = ((_this$registry = this.registry) == null || (_this$registry = _this$registry._loader) == null ? void 0 : _this$registry._app) || getApplication();\n\t\t\tconst device = app == null ? void 0 : app.graphicsDevice;\n\t\t\tif (device) {\n\t\t\t\tfor (let i = 0, len = VARIANT_DEFAULT_PRIORITY.length; i < len; i++) {\n\t\t\t\t\tconst variant = VARIANT_DEFAULT_PRIORITY[i];\n\t\t\t\t\tif (value.variants[variant] && device[VARIANT_SUPPORT[variant]]) {\n\t\t\t\t\t\tvalue = value.variants[variant];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (app.enableBundles) {\n\t\t\t\t\t\tconst bundles = app.bundles.listBundlesForAsset(this);\n\t\t\t\t\t\tif (bundles && bundles.find(b => {\n\t\t\t\t\t\t\tvar _b$file;\n\t\t\t\t\t\t\treturn b == null || (_b$file = b.file) == null ? void 0 : _b$file.variants[variant];\n\t\t\t\t\t\t})) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst oldFile = this._file;\n\t\tconst newFile = value ? new AssetFile(value.url, value.filename, value.hash, value.size, value.opt, value.contents) : null;\n\t\tif (!!newFile !== !!oldFile || newFile && !newFile.equals(oldFile)) {\n\t\t\tthis._file = newFile;\n\t\t\tthis.fire('change', this, 'file', newFile, oldFile);\n\t\t\tthis.reload();\n\t\t}\n\t}\n\tget file() {\n\t\treturn this._file;\n\t}\n\tset data(value) {\n\t\tconst old = this._data;\n\t\tthis._data = value;\n\t\tif (value !== old) {\n\t\t\tthis.fire('change', this, 'data', value, old);\n\t\t\tif (this.loaded) this.registry._loader.patch(this, this.registry);\n\t\t}\n\t}\n\tget data() {\n\t\treturn this._data;\n\t}\n\tset resource(value) {\n\t\tconst _old = this._resources[0];\n\t\tthis._resources[0] = value;\n\t\tthis.fire('change', this, 'resource', value, _old);\n\t}\n\tget resource() {\n\t\treturn this._resources[0];\n\t}\n\tset resources(value) {\n\t\tconst _old = this._resources;\n\t\tthis._resources = value;\n\t\tthis.fire('change', this, 'resources', value, _old);\n\t}\n\tget resources() {\n\t\treturn this._resources;\n\t}\n\tset preload(value) {\n\t\tvalue = !!value;\n\t\tif (this._preload === value) return;\n\t\tthis._preload = value;\n\t\tif (this._preload && !this.loaded && !this.loading && this.registry) this.registry.load(this);\n\t}\n\tget preload() {\n\t\treturn this._preload;\n\t}\n\tset loadFaces(value) {\n\t\tvalue = !!value;\n\t\tif (!this.hasOwnProperty('_loadFaces') || value !== this._loadFaces) {\n\t\t\tthis._loadFaces = value;\n\t\t\tif (this.loaded) this.registry._loader.patch(this, this.registry);\n\t\t}\n\t}\n\tget loadFaces() {\n\t\treturn this._loadFaces;\n\t}\n\tgetFileUrl() {\n\t\tconst file = this.file;\n\t\tif (!file || !file.url) return null;\n\t\tlet url = file.url;\n\t\tif (this.registry && this.registry.prefix && !ABSOLUTE_URL.test(url)) url = this.registry.prefix + url;\n\t\tif (this.type !== 'script' && file.hash) {\n\t\t\tconst separator = url.indexOf('?') !== -1 ? '&' : '?';\n\t\t\turl += separator + 't=' + file.hash;\n\t\t}\n\t\treturn url;\n\t}\n\tgetAbsoluteUrl(relativePath) {\n\t\tif (relativePath.startsWith('blob:') || relativePath.startsWith('data:')) {\n\t\t\treturn relativePath;\n\t\t}\n\t\tconst base = path.getDirectory(this.file.url);\n\t\treturn path.join(base, relativePath);\n\t}\n\tgetLocalizedAssetId(locale) {\n\t\tlocale = findAvailableLocale(locale, this._i18n);\n\t\treturn this._i18n[locale] || null;\n\t}\n\taddLocalizedAssetId(locale, assetId) {\n\t\tthis._i18n[locale] = assetId;\n\t\tthis.fire('add:localized', locale, assetId);\n\t}\n\tremoveLocalizedAssetId(locale) {\n\t\tconst assetId = this._i18n[locale];\n\t\tif (assetId) {\n\t\t\tdelete this._i18n[locale];\n\t\t\tthis.fire('remove:localized', locale, assetId);\n\t\t}\n\t}\n\tready(callback, scope) {\n\t\tscope = scope || this;\n\t\tif (this.loaded) {\n\t\t\tcallback.call(scope, this);\n\t\t} else {\n\t\t\tthis.once('load', function (asset) {\n\t\t\t\tcallback.call(scope, asset);\n\t\t\t});\n\t\t}\n\t}\n\treload() {\n\t\tif (this.loaded) {\n\t\t\tthis.loaded = false;\n\t\t\tthis.registry.load(this);\n\t\t}\n\t}\n\tunload() {\n\t\tif (!this.loaded && this._resources.length === 0) return;\n\t\tthis.fire('unload', this);\n\t\tthis.registry.fire('unload:' + this.id, this);\n\t\tconst old = this._resources;\n\t\tif (this.urlObject) {\n\t\t\tURL.revokeObjectURL(this.urlObject);\n\t\t\tthis.urlObject = null;\n\t\t}\n\t\tthis.resources = [];\n\t\tthis.loaded = false;\n\t\tif (this.file) {\n\t\t\tthis.registry._loader.clearCache(this.getFileUrl(), this.type);\n\t\t}\n\t\tfor (let i = 0; i < old.length; ++i) {\n\t\t\tconst resource = old[i];\n\t\t\tif (resource && resource.destroy) {\n\t\t\t\tresource.destroy();\n\t\t\t}\n\t\t}\n\t}\n\tstatic fetchArrayBuffer(loadUrl, callback, asset, maxRetries = 0) {\n\t\tvar _asset$file;\n\t\tif (asset != null && (_asset$file = asset.file) != null && _asset$file.contents) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tcallback(null, asset.file.contents);\n\t\t\t});\n\t\t} else {\n\t\t\thttp.get(loadUrl, {\n\t\t\t\tcache: true,\n\t\t\t\tresponseType: 'arraybuffer',\n\t\t\t\tretry: maxRetries > 0,\n\t\t\t\tmaxRetries: maxRetries\n\t\t\t}, callback);\n\t\t}\n\t}\n}\nAsset.EVENT_LOAD = 'load';\nAsset.EVENT_UNLOAD = 'unload';\nAsset.EVENT_REMOVE = 'remove';\nAsset.EVENT_ERROR = 'error';\nAsset.EVENT_CHANGE = 'change';\nAsset.EVENT_ADDLOCALIZED = 'add:localized';\nAsset.EVENT_REMOVELOCALIZED = 'remove:localized';\n\nexport { Asset };\n", "class TagsCache {\n\tconstructor(key = null) {\n\t\tthis._index = {};\n\t\tthis._key = void 0;\n\t\tthis._key = key;\n\t}\n\taddItem(item) {\n\t\tconst tags = item.tags._list;\n\t\tfor (const tag of tags) this.add(tag, item);\n\t}\n\tremoveItem(item) {\n\t\tconst tags = item.tags._list;\n\t\tfor (const tag of tags) this.remove(tag, item);\n\t}\n\tadd(tag, item) {\n\t\tif (this._index[tag] && this._index[tag].list.indexOf(item) !== -1) return;\n\t\tif (!this._index[tag]) {\n\t\t\tthis._index[tag] = {\n\t\t\t\tlist: []\n\t\t\t};\n\t\t\tif (this._key) this._index[tag].keys = {};\n\t\t}\n\t\tthis._index[tag].list.push(item);\n\t\tif (this._key) this._index[tag].keys[item[this._key]] = item;\n\t}\n\tremove(tag, item) {\n\t\tif (!this._index[tag]) return;\n\t\tif (this._key) {\n\t\t\tif (!this._index[tag].keys[item[this._key]]) return;\n\t\t}\n\t\tconst ind = this._index[tag].list.indexOf(item);\n\t\tif (ind === -1) return;\n\t\tthis._index[tag].list.splice(ind, 1);\n\t\tif (this._key) delete this._index[tag].keys[item[this._key]];\n\t\tif (this._index[tag].list.length === 0) delete this._index[tag];\n\t}\n\tfind(args) {\n\t\tconst index = {};\n\t\tconst items = [];\n\t\tlet item, tag, tags, tagsRest, missingIndex;\n\t\tconst sort = (a, b) => {\n\t\t\treturn this._index[a].list.length - this._index[b].list.length;\n\t\t};\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\ttag = args[i];\n\t\t\tif (tag instanceof Array) {\n\t\t\t\tif (tag.length === 0) continue;\n\t\t\t\tif (tag.length === 1) {\n\t\t\t\t\ttag = tag[0];\n\t\t\t\t} else {\n\t\t\t\t\tmissingIndex = false;\n\t\t\t\t\tfor (let t = 0; t < tag.length; t++) {\n\t\t\t\t\t\tif (!this._index[tag[t]]) {\n\t\t\t\t\t\t\tmissingIndex = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (missingIndex) continue;\n\t\t\t\t\ttags = tag.slice(0).sort(sort);\n\t\t\t\t\ttagsRest = tags.slice(1);\n\t\t\t\t\tif (tagsRest.length === 1) tagsRest = tagsRest[0];\n\t\t\t\t\tfor (let n = 0; n < this._index[tags[0]].list.length; n++) {\n\t\t\t\t\t\titem = this._index[tags[0]].list[n];\n\t\t\t\t\t\tif ((this._key ? !index[item[this._key]] : items.indexOf(item) === -1) && item.tags.has(tagsRest)) {\n\t\t\t\t\t\t\tif (this._key) index[item[this._key]] = true;\n\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (tag && typeof tag === 'string' && this._index[tag]) {\n\t\t\t\tfor (let n = 0; n < this._index[tag].list.length; n++) {\n\t\t\t\t\titem = this._index[tag].list[n];\n\t\t\t\t\tif (this._key) {\n\t\t\t\t\t\tif (!index[item[this._key]]) {\n\t\t\t\t\t\t\tindex[item[this._key]] = true;\n\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (items.indexOf(item) === -1) {\n\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn items;\n\t}\n}\n\nexport { TagsCache };\n", "import { path } from '../../core/path.js';\nimport { EventHandler } from '../../core/event-handler.js';\nimport { TagsCache } from '../../core/tags-cache.js';\nimport { standardMaterialTextureParameters } from '../../scene/materials/standard-material-parameters.js';\nimport { script } from '../script.js';\nimport { Asset } from './asset.js';\n\nclass AssetRegistry extends EventHandler {\n\tconstructor(loader) {\n\t\tsuper();\n\t\tthis._assets = new Set();\n\t\tthis._idToAsset = new Map();\n\t\tthis._urlToAsset = new Map();\n\t\tthis._nameToAsset = new Map();\n\t\tthis._tags = new TagsCache('_id');\n\t\tthis.prefix = null;\n\t\tthis.bundles = null;\n\t\tthis._loader = loader;\n\t}\n\tlist(filters = {}) {\n\t\tconst assets = Array.from(this._assets);\n\t\tif (filters.preload !== undefined) {\n\t\t\treturn assets.filter(asset => asset.preload === filters.preload);\n\t\t}\n\t\treturn assets;\n\t}\n\tadd(asset) {\n\t\tvar _asset$file, _asset$file2;\n\t\tif (this._assets.has(asset)) return;\n\t\tthis._assets.add(asset);\n\t\tthis._idToAsset.set(asset.id, asset);\n\t\tif ((_asset$file = asset.file) != null && _asset$file.url) {\n\t\t\tthis._urlToAsset.set(asset.file.url, asset);\n\t\t}\n\t\tif (!this._nameToAsset.has(asset.name)) this._nameToAsset.set(asset.name, new Set());\n\t\tthis._nameToAsset.get(asset.name).add(asset);\n\t\tasset.on('name', this._onNameChange, this);\n\t\tasset.registry = this;\n\t\tthis._tags.addItem(asset);\n\t\tasset.tags.on('add', this._onTagAdd, this);\n\t\tasset.tags.on('remove', this._onTagRemove, this);\n\t\tthis.fire('add', asset);\n\t\tthis.fire('add:' + asset.id, asset);\n\t\tif ((_asset$file2 = asset.file) != null && _asset$file2.url) {\n\t\t\tthis.fire('add:url:' + asset.file.url, asset);\n\t\t}\n\t\tif (asset.preload) this.load(asset);\n\t}\n\tremove(asset) {\n\t\tvar _asset$file3, _asset$file4;\n\t\tif (!this._assets.has(asset)) return false;\n\t\tthis._assets.delete(asset);\n\t\tthis._idToAsset.delete(asset.id);\n\t\tif ((_asset$file3 = asset.file) != null && _asset$file3.url) {\n\t\t\tthis._urlToAsset.delete(asset.file.url);\n\t\t}\n\t\tasset.off('name', this._onNameChange, this);\n\t\tif (this._nameToAsset.has(asset.name)) {\n\t\t\tconst items = this._nameToAsset.get(asset.name);\n\t\t\titems.delete(asset);\n\t\t\tif (items.size === 0) {\n\t\t\t\tthis._nameToAsset.delete(asset.name);\n\t\t\t}\n\t\t}\n\t\tthis._tags.removeItem(asset);\n\t\tasset.tags.off('add', this._onTagAdd, this);\n\t\tasset.tags.off('remove', this._onTagRemove, this);\n\t\tasset.fire('remove', asset);\n\t\tthis.fire('remove', asset);\n\t\tthis.fire('remove:' + asset.id, asset);\n\t\tif ((_asset$file4 = asset.file) != null && _asset$file4.url) {\n\t\t\tthis.fire('remove:url:' + asset.file.url, asset);\n\t\t}\n\t\treturn true;\n\t}\n\tget(id) {\n\t\treturn this._idToAsset.get(Number(id));\n\t}\n\tgetByUrl(url) {\n\t\treturn this._urlToAsset.get(url);\n\t}\n\tload(asset, options) {\n\t\tif ((asset.loading || asset.loaded) && !(options != null && options.force)) {\n\t\t\treturn;\n\t\t}\n\t\tconst file = asset.file;\n\t\tconst _fireLoad = () => {\n\t\t\tthis.fire('load', asset);\n\t\t\tthis.fire('load:' + asset.id, asset);\n\t\t\tif (file && file.url) this.fire('load:url:' + file.url, asset);\n\t\t\tasset.fire('load', asset);\n\t\t};\n\t\tconst _opened = resource => {\n\t\t\tif (resource instanceof Array) {\n\t\t\t\tasset.resources = resource;\n\t\t\t} else {\n\t\t\t\tasset.resource = resource;\n\t\t\t}\n\t\t\tthis._loader.patch(asset, this);\n\t\t\tif (asset.type === 'bundle') {\n\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\tfor (let i = 0; i < assetIds.length; i++) {\n\t\t\t\t\tconst assetInBundle = this._idToAsset.get(assetIds[i]);\n\t\t\t\t\tif (assetInBundle && !assetInBundle.loaded) {\n\t\t\t\t\t\tthis.load(assetInBundle, {\n\t\t\t\t\t\t\tforce: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (asset.resource.loaded) {\n\t\t\t\t\t_fireLoad();\n\t\t\t\t} else {\n\t\t\t\t\tthis.fire('load:start', asset);\n\t\t\t\t\tthis.fire('load:start:' + asset.id, asset);\n\t\t\t\t\tif (file && file.url) this.fire('load:start:url:' + file.url, asset);\n\t\t\t\t\tasset.fire('load:start', asset);\n\t\t\t\t\tasset.resource.on('load', _fireLoad);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t_fireLoad();\n\t\t\t}\n\t\t};\n\t\tconst _loaded = (err, resource, extra) => {\n\t\t\tasset.loaded = true;\n\t\t\tasset.loading = false;\n\t\t\tif (err) {\n\t\t\t\tthis.fire('error', err, asset);\n\t\t\t\tthis.fire('error:' + asset.id, err, asset);\n\t\t\t\tasset.fire('error', err, asset);\n\t\t\t} else {\n\t\t\t\tif (!script.legacy && asset.type === 'script') {\n\t\t\t\t\tconst handler = this._loader.getHandler('script');\n\t\t\t\t\tif (handler._cache[asset.id] && handler._cache[asset.id].parentNode === document.head) {\n\t\t\t\t\t\tdocument.head.removeChild(handler._cache[asset.id]);\n\t\t\t\t\t}\n\t\t\t\t\thandler._cache[asset.id] = extra;\n\t\t\t\t}\n\t\t\t\t_opened(resource);\n\t\t\t}\n\t\t};\n\t\tif (file || asset.type === 'cubemap') {\n\t\t\tthis.fire('load:start', asset);\n\t\t\tthis.fire('load:' + asset.id + ':start', asset);\n\t\t\tasset.loading = true;\n\t\t\tconst fileUrl = asset.getFileUrl();\n\t\t\tif (asset.type === 'bundle') {\n\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\tfor (let i = 0; i < assetIds.length; i++) {\n\t\t\t\t\tconst assetInBundle = this._idToAsset.get(assetIds[i]);\n\t\t\t\t\tif (!assetInBundle) continue;\n\t\t\t\t\tif (assetInBundle.loaded || assetInBundle.resource || assetInBundle.loading) continue;\n\t\t\t\t\tassetInBundle.loading = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._loader.load(fileUrl, asset.type, _loaded, asset, options);\n\t\t} else {\n\t\t\tconst resource = this._loader.open(asset.type, asset.data);\n\t\t\tasset.loaded = true;\n\t\t\t_opened(resource);\n\t\t}\n\t}\n\tloadFromUrl(url, type, callback) {\n\t\tthis.loadFromUrlAndFilename(url, null, type, callback);\n\t}\n\tloadFromUrlAndFilename(url, filename, type, callback) {\n\t\tconst name = path.getBasename(filename || url);\n\t\tconst file = {\n\t\t\tfilename: filename || name,\n\t\t\turl: url\n\t\t};\n\t\tlet asset = this.getByUrl(url);\n\t\tif (!asset) {\n\t\t\tasset = new Asset(name, type, file);\n\t\t\tthis.add(asset);\n\t\t} else if (asset.loaded) {\n\t\t\tcallback(asset.loadFromUrlError || null, asset);\n\t\t\treturn;\n\t\t}\n\t\tconst startLoad = asset => {\n\t\t\tasset.once('load', loadedAsset => {\n\t\t\t\tif (type === 'material') {\n\t\t\t\t\tthis._loadTextures(loadedAsset, (err, textures) => {\n\t\t\t\t\t\tcallback(err, loadedAsset);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tcallback(null, loadedAsset);\n\t\t\t\t}\n\t\t\t});\n\t\t\tasset.once('error', err => {\n\t\t\t\tif (err) {\n\t\t\t\t\tthis.loadFromUrlError = err;\n\t\t\t\t}\n\t\t\t\tcallback(err, asset);\n\t\t\t});\n\t\t\tthis.load(asset);\n\t\t};\n\t\tif (asset.resource) {\n\t\t\tcallback(null, asset);\n\t\t} else if (type === 'model') {\n\t\t\tthis._loadModel(asset, startLoad);\n\t\t} else {\n\t\t\tstartLoad(asset);\n\t\t}\n\t}\n\t_loadModel(modelAsset, continuation) {\n\t\tconst url = modelAsset.getFileUrl();\n\t\tconst ext = path.getExtension(url);\n\t\tif (ext === '.json' || ext === '.glb') {\n\t\t\tconst dir = path.getDirectory(url);\n\t\t\tconst basename = path.getBasename(url);\n\t\t\tconst mappingUrl = path.join(dir, basename.replace(ext, '.mapping.json'));\n\t\t\tthis._loader.load(mappingUrl, 'json', (err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tmodelAsset.data = {\n\t\t\t\t\t\tmapping: []\n\t\t\t\t\t};\n\t\t\t\t\tcontinuation(modelAsset);\n\t\t\t\t} else {\n\t\t\t\t\tthis._loadMaterials(modelAsset, data, (e, materials) => {\n\t\t\t\t\t\tmodelAsset.data = data;\n\t\t\t\t\t\tcontinuation(modelAsset);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tcontinuation(modelAsset);\n\t\t}\n\t}\n\t_loadMaterials(modelAsset, mapping, callback) {\n\t\tconst materials = [];\n\t\tlet count = 0;\n\t\tconst onMaterialLoaded = (err, materialAsset) => {\n\t\t\tthis._loadTextures(materialAsset, (err, textures) => {\n\t\t\t\tmaterials.push(materialAsset);\n\t\t\t\tif (materials.length === count) {\n\t\t\t\t\tcallback(null, materials);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tfor (let i = 0; i < mapping.mapping.length; i++) {\n\t\t\tconst path = mapping.mapping[i].path;\n\t\t\tif (path) {\n\t\t\t\tcount++;\n\t\t\t\tconst url = modelAsset.getAbsoluteUrl(path);\n\t\t\t\tthis.loadFromUrl(url, 'material', onMaterialLoaded);\n\t\t\t}\n\t\t}\n\t\tif (count === 0) {\n\t\t\tcallback(null, materials);\n\t\t}\n\t}\n\t_loadTextures(materialAsset, callback) {\n\t\tconst textures = [];\n\t\tlet count = 0;\n\t\tconst data = materialAsset.data;\n\t\tif (data.mappingFormat !== 'path') {\n\t\t\tcallback(null, textures);\n\t\t\treturn;\n\t\t}\n\t\tconst onTextureLoaded = (err, texture) => {\n\t\t\tif (err) console.error(err);\n\t\t\ttextures.push(texture);\n\t\t\tif (textures.length === count) {\n\t\t\t\tcallback(null, textures);\n\t\t\t}\n\t\t};\n\t\tconst texParams = standardMaterialTextureParameters;\n\t\tfor (let i = 0; i < texParams.length; i++) {\n\t\t\tconst path = data[texParams[i]];\n\t\t\tif (path && typeof path === 'string') {\n\t\t\t\tcount++;\n\t\t\t\tconst url = materialAsset.getAbsoluteUrl(path);\n\t\t\t\tthis.loadFromUrl(url, 'texture', onTextureLoaded);\n\t\t\t}\n\t\t}\n\t\tif (count === 0) {\n\t\t\tcallback(null, textures);\n\t\t}\n\t}\n\t_onTagAdd(tag, asset) {\n\t\tthis._tags.add(tag, asset);\n\t}\n\t_onTagRemove(tag, asset) {\n\t\tthis._tags.remove(tag, asset);\n\t}\n\t_onNameChange(asset, name, nameOld) {\n\t\tif (this._nameToAsset.has(nameOld)) {\n\t\t\tconst items = this._nameToAsset.get(nameOld);\n\t\t\titems.delete(asset);\n\t\t\tif (items.size === 0) {\n\t\t\t\tthis._nameToAsset.delete(nameOld);\n\t\t\t}\n\t\t}\n\t\tif (!this._nameToAsset.has(asset.name)) this._nameToAsset.set(asset.name, new Set());\n\t\tthis._nameToAsset.get(asset.name).add(asset);\n\t}\n\tfindByTag() {\n\t\treturn this._tags.find(arguments);\n\t}\n\tfilter(callback) {\n\t\treturn Array.from(this._assets).filter(asset => callback(asset));\n\t}\n\tfind(name, type) {\n\t\tconst items = this._nameToAsset.get(name);\n\t\tif (!items) return null;\n\t\tfor (const asset of items) {\n\t\t\tif (!type || asset.type === type) {\n\t\t\t\treturn asset;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\tfindAll(name, type) {\n\t\tconst items = this._nameToAsset.get(name);\n\t\tif (!items) return [];\n\t\tconst results = Array.from(items);\n\t\tif (!type) return results;\n\t\treturn results.filter(asset => asset.type === type);\n\t}\n}\nAssetRegistry.EVENT_LOAD = 'load';\nAssetRegistry.EVENT_ADD = 'add';\nAssetRegistry.EVENT_REMOVE = 'remove';\nAssetRegistry.EVENT_ERROR = 'error';\n\nexport { AssetRegistry };\n", "class BundleRegistry {\n\tconstructor(assets) {\n\t\tthis._idToBundle = new Map();\n\t\tthis._assetToBundles = new Map();\n\t\tthis._urlsToBundles = new Map();\n\t\tthis._fileRequests = new Map();\n\t\tthis._assets = assets;\n\t\tthis._assets.bundles = this;\n\t\tthis._assets.on('add', this._onAssetAdd, this);\n\t\tthis._assets.on('remove', this._onAssetRemove, this);\n\t}\n\t_onAssetAdd(asset) {\n\t\tif (asset.type === 'bundle') {\n\t\t\tthis._idToBundle.set(asset.id, asset);\n\t\t\tthis._assets.on(`load:start:${asset.id}`, this._onBundleLoadStart, this);\n\t\t\tthis._assets.on(`load:${asset.id}`, this._onBundleLoad, this);\n\t\t\tthis._assets.on(`error:${asset.id}`, this._onBundleError, this);\n\t\t\tconst assetIds = asset.data.assets;\n\t\t\tfor (let i = 0; i < assetIds.length; i++) {\n\t\t\t\tthis._indexAssetInBundle(assetIds[i], asset);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._assetToBundles.has(asset.id)) {\n\t\t\t\tthis._indexAssetFileUrls(asset);\n\t\t\t}\n\t\t}\n\t}\n\t_unbindAssetEvents(id) {\n\t\tthis._assets.off('load:start:' + id, this._onBundleLoadStart, this);\n\t\tthis._assets.off('load:' + id, this._onBundleLoad, this);\n\t\tthis._assets.off('error:' + id, this._onBundleError, this);\n\t}\n\t_indexAssetInBundle(id, bundle) {\n\t\tlet bundles = this._assetToBundles.get(id);\n\t\tif (!bundles) {\n\t\t\tbundles = new Set();\n\t\t\tthis._assetToBundles.set(id, bundles);\n\t\t}\n\t\tbundles.add(bundle);\n\t\tconst asset = this._assets.get(id);\n\t\tif (asset) this._indexAssetFileUrls(asset);\n\t}\n\t_indexAssetFileUrls(asset) {\n\t\tconst urls = this._getAssetFileUrls(asset);\n\t\tif (!urls) return;\n\t\tfor (let i = 0; i < urls.length; i++) {\n\t\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\t\tif (!bundles) continue;\n\t\t\tthis._urlsToBundles.set(urls[i], bundles);\n\t\t}\n\t}\n\t_getAssetFileUrls(asset) {\n\t\tlet url = asset.getFileUrl();\n\t\tif (!url) return null;\n\t\turl = url.split('?')[0];\n\t\tconst urls = [url];\n\t\tif (asset.type === 'font') {\n\t\t\tconst numFiles = asset.data.info.maps.length;\n\t\t\tfor (let i = 1; i < numFiles; i++) {\n\t\t\t\turls.push(url.replace('.png', i + '.png'));\n\t\t\t}\n\t\t}\n\t\treturn urls;\n\t}\n\t_onAssetRemove(asset) {\n\t\tif (asset.type === 'bundle') {\n\t\t\tthis._idToBundle.delete(asset.id);\n\t\t\tthis._unbindAssetEvents(asset.id);\n\t\t\tconst assetIds = asset.data.assets;\n\t\t\tfor (let i = 0; i < assetIds.length; i++) {\n\t\t\t\tconst bundles = this._assetToBundles.get(assetIds[i]);\n\t\t\t\tif (!bundles) continue;\n\t\t\t\tbundles.delete(asset);\n\t\t\t\tif (bundles.size === 0) {\n\t\t\t\t\tthis._assetToBundles.delete(assetIds[i]);\n\t\t\t\t\tfor (const [url, otherBundles] of this._urlsToBundles) {\n\t\t\t\t\t\tif (otherBundles !== bundles) continue;\n\t\t\t\t\t\tthis._urlsToBundles.delete(url);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._onBundleError(`Bundle ${asset.id} was removed`);\n\t\t} else {\n\t\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\t\tif (!bundles) return;\n\t\t\tthis._assetToBundles.delete(asset.id);\n\t\t\tconst urls = this._getAssetFileUrls(asset);\n\t\t\tif (!urls) return;\n\t\t\tfor (let i = 0; i < urls.length; i++) {\n\t\t\t\tthis._urlsToBundles.delete(urls[i]);\n\t\t\t}\n\t\t}\n\t}\n\t_onBundleLoadStart(asset) {\n\t\tasset.resource.on('add', (url, data) => {\n\t\t\tconst callbacks = this._fileRequests.get(url);\n\t\t\tif (!callbacks) return;\n\t\t\tfor (let i = 0; i < callbacks.length; i++) {\n\t\t\t\tcallbacks[i](null, data);\n\t\t\t}\n\t\t\tthis._fileRequests.delete(url);\n\t\t});\n\t}\n\t_onBundleLoad(asset) {\n\t\tif (!asset.resource) {\n\t\t\tthis._onBundleError(`Bundle ${asset.id} failed to load`);\n\t\t\treturn;\n\t\t}\n\t\tif (!this._fileRequests) return;\n\t\tfor (const [url, requests] of this._fileRequests) {\n\t\t\tconst bundles = this._urlsToBundles.get(url);\n\t\t\tif (!bundles || !bundles.has(asset)) continue;\n\t\t\tconst decodedUrl = decodeURIComponent(url);\n\t\t\tlet err, data;\n\t\t\tif (asset.resource.has(decodedUrl)) {\n\t\t\t\tdata = asset.resource.get(decodedUrl);\n\t\t\t} else if (asset.resource.loaded) {\n\t\t\t\terr = `Bundle ${asset.id} does not contain URL ${url}`;\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (let i = 0; i < requests.length; i++) {\n\t\t\t\trequests[i](err, err || data);\n\t\t\t}\n\t\t\tthis._fileRequests.delete(url);\n\t\t}\n\t}\n\t_onBundleError(err) {\n\t\tfor (const [url, requests] of this._fileRequests) {\n\t\t\tconst bundle = this._findLoadedOrLoadingBundleForUrl(url);\n\t\t\tif (!bundle) {\n\t\t\t\tfor (let i = 0; i < requests.length; i++) requests[i](err);\n\t\t\t\tthis._fileRequests.delete(url);\n\t\t\t}\n\t\t}\n\t}\n\t_findLoadedOrLoadingBundleForUrl(url) {\n\t\tconst bundles = this._urlsToBundles.get(url);\n\t\tif (!bundles) return null;\n\t\tlet candidate = null;\n\t\tfor (const bundle of bundles) {\n\t\t\tif (bundle.loaded && bundle.resource) {\n\t\t\t\treturn bundle;\n\t\t\t} else if (bundle.loading) {\n\t\t\t\tcandidate = bundle;\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\tlistBundlesForAsset(asset) {\n\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\tif (bundles) return Array.from(bundles);\n\t\treturn null;\n\t}\n\tlist() {\n\t\treturn Array.from(this._idToBundle.values());\n\t}\n\thasUrl(url) {\n\t\treturn this._urlsToBundles.has(url);\n\t}\n\turlIsLoadedOrLoading(url) {\n\t\treturn !!this._findLoadedOrLoadingBundleForUrl(url);\n\t}\n\tloadUrl(url, callback) {\n\t\tconst bundle = this._findLoadedOrLoadingBundleForUrl(url);\n\t\tif (!bundle) {\n\t\t\tcallback(`URL ${url} not found in any bundles`);\n\t\t\treturn;\n\t\t}\n\t\tif (bundle.loaded) {\n\t\t\tconst decodedUrl = decodeURIComponent(url);\n\t\t\tif (bundle.resource.has(decodedUrl)) {\n\t\t\t\tcallback(null, bundle.resource.get(decodedUrl));\n\t\t\t\treturn;\n\t\t\t} else if (bundle.resource.loaded) {\n\t\t\t\tcallback(`Bundle ${bundle.id} does not contain URL ${url}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tlet callbacks = this._fileRequests.get(url);\n\t\tif (!callbacks) {\n\t\t\tcallbacks = [];\n\t\t\tthis._fileRequests.set(url, callbacks);\n\t\t}\n\t\tcallbacks.push(callback);\n\t}\n\tdestroy() {\n\t\tthis._assets.off('add', this._onAssetAdd, this);\n\t\tthis._assets.off('remove', this._onAssetRemove, this);\n\t\tfor (const id of this._idToBundle.keys()) {\n\t\t\tthis._unbindAssetEvents(id);\n\t\t}\n\t\tthis._assets = null;\n\t\tthis._idToBundle.clear();\n\t\tthis._idToBundle = null;\n\t\tthis._assetToBundles.clear();\n\t\tthis._assetToBundles = null;\n\t\tthis._urlsToBundles.clear();\n\t\tthis._urlsToBundles = null;\n\t\tthis._fileRequests.clear();\n\t\tthis._fileRequests = null;\n\t}\n}\n\nexport { BundleRegistry };\n", "import { EventHandler } from '../../core/event-handler.js';\n\nclass ComponentSystemRegistry extends EventHandler {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.anim = void 0;\n\t\tthis.animation = void 0;\n\t\tthis.audiolistener = void 0;\n\t\tthis.audiosource = void 0;\n\t\tthis.button = void 0;\n\t\tthis.camera = void 0;\n\t\tthis.collision = void 0;\n\t\tthis.element = void 0;\n\t\tthis.joint = void 0;\n\t\tthis.layoutchild = void 0;\n\t\tthis.layoutgroup = void 0;\n\t\tthis.light = void 0;\n\t\tthis.model = void 0;\n\t\tthis.particlesystem = void 0;\n\t\tthis.render = void 0;\n\t\tthis.rigidbody = void 0;\n\t\tthis.screen = void 0;\n\t\tthis.script = void 0;\n\t\tthis.scrollbar = void 0;\n\t\tthis.scrollview = void 0;\n\t\tthis.sound = void 0;\n\t\tthis.sprite = void 0;\n\t\tthis.zone = void 0;\n\t\tthis.list = [];\n\t}\n\tadd(system) {\n\t\tconst id = system.id;\n\t\tif (this[id]) {\n\t\t\tthrow new Error(`ComponentSystem name '${id}' already registered or not allowed`);\n\t\t}\n\t\tthis[id] = system;\n\t\tthis.list.push(system);\n\t}\n\tremove(system) {\n\t\tconst id = system.id;\n\t\tif (!this[id]) {\n\t\t\tthrow new Error(`No ComponentSystem named '${id}' registered`);\n\t\t}\n\t\tdelete this[id];\n\t\tconst index = this.list.indexOf(this[id]);\n\t\tif (index !== -1) {\n\t\t\tthis.list.splice(index, 1);\n\t\t}\n\t}\n\tdestroy() {\n\t\tthis.off();\n\t\tfor (let i = 0; i < this.list.length; i++) {\n\t\t\tthis.list[i].destroy();\n\t\t}\n\t}\n}\n\nexport { ComponentSystemRegistry };\n", "import { EventHandler } from '../../core/event-handler.js';\n\nclass Bundle extends EventHandler {\n\tconstructor(...args) {\n\t\tsuper(...args);\n\t\tthis._index = new Map();\n\t\tthis._loaded = false;\n\t}\n\taddFile(url, data) {\n\t\tif (this._index.has(url)) return;\n\t\tthis._index.set(url, data);\n\t\tthis.fire('add', url, data);\n\t}\n\thas(url) {\n\t\treturn this._index.has(url);\n\t}\n\tget(url) {\n\t\treturn this._index.get(url) || null;\n\t}\n\tdestroy() {\n\t\tthis._index.clear();\n\t}\n\tset loaded(value) {\n\t\tif (!value || this._loaded) return;\n\t\tthis._loaded = true;\n\t\tthis.fire('load');\n\t}\n\tget loaded() {\n\t\treturn this._loaded;\n\t}\n}\nBundle.EVENT_ADD = 'add';\nBundle.EVENT_LOAD = 'load';\n\nexport { Bundle };\n", "import { EventHandler } from '../../core/event-handler.js';\n\nclass Untar extends EventHandler {\n\tconstructor(fetchPromise, assetsPrefix = '') {\n\t\tsuper();\n\t\tthis.headerSize = 512;\n\t\tthis.paddingSize = 512;\n\t\tthis.bytesRead = 0;\n\t\tthis.bytesReceived = 0;\n\t\tthis.headerRead = false;\n\t\tthis.reader = null;\n\t\tthis.data = new Uint8Array(0);\n\t\tthis.decoder = null;\n\t\tthis.prefix = '';\n\t\tthis.fileName = '';\n\t\tthis.fileSize = 0;\n\t\tthis.fileType = '';\n\t\tthis.ustarFormat = '';\n\t\tthis.prefix = assetsPrefix || '';\n\t\tthis.reader = fetchPromise.body.getReader();\n\t\tthis.reader.read().then(res => {\n\t\t\tthis.pump(res.done, res.value);\n\t\t}).catch(err => {\n\t\t\tthis.fire('error', err);\n\t\t});\n\t}\n\tpump(done, value) {\n\t\tif (done) {\n\t\t\tthis.fire('done');\n\t\t\treturn null;\n\t\t}\n\t\tthis.bytesReceived += value.byteLength;\n\t\tconst data = new Uint8Array(this.data.length + value.length);\n\t\tdata.set(this.data);\n\t\tdata.set(value, this.data.length);\n\t\tthis.data = data;\n\t\twhile (this.readFile());\n\t\treturn this.reader.read().then(res => {\n\t\t\tthis.pump(res.done, res.value);\n\t\t}).catch(err => {\n\t\t\tthis.fire('error', err);\n\t\t});\n\t}\n\treadFile() {\n\t\tif (!this.headerRead && this.bytesReceived > this.bytesRead + this.headerSize) {\n\t\t\tvar _this$decoder;\n\t\t\tthis.headerRead = true;\n\t\t\tconst view = new DataView(this.data.buffer, this.bytesRead, this.headerSize);\n\t\t\t(_this$decoder = this.decoder) != null ? _this$decoder : this.decoder = new TextDecoder('windows-1252');\n\t\t\tconst headers = this.decoder.decode(view);\n\t\t\tthis.fileName = headers.substring(0, 100).replace(/\\0/g, '');\n\t\t\tthis.fileSize = parseInt(headers.substring(124, 136), 8);\n\t\t\tthis.fileType = headers.substring(156, 157);\n\t\t\tthis.ustarFormat = headers.substring(257, 263);\n\t\t\tif (this.ustarFormat.indexOf('ustar') !== -1) {\n\t\t\t\tconst prefix = headers.substring(345, 500).replace(/\\0/g, '');\n\t\t\t\tif (prefix.length > 0) {\n\t\t\t\t\tthis.fileName = prefix.trim() + this.fileName.trim();\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.bytesRead += 512;\n\t\t}\n\t\tif (this.headerRead) {\n\t\t\tif (this.bytesReceived < this.bytesRead + this.fileSize) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.fileType === '' || this.fileType === '0') {\n\t\t\t\tconst dataView = new DataView(this.data.buffer, this.bytesRead, this.fileSize);\n\t\t\t\tconst file = {\n\t\t\t\t\tname: this.prefix + this.fileName,\n\t\t\t\t\tsize: this.fileSize,\n\t\t\t\t\tdata: dataView\n\t\t\t\t};\n\t\t\t\tthis.fire('file', file);\n\t\t\t}\n\t\t\tthis.bytesRead += this.fileSize;\n\t\t\tthis.headerRead = false;\n\t\t\tconst bytesRemained = this.bytesRead % this.paddingSize;\n\t\t\tif (bytesRemained !== 0) this.bytesRead += this.paddingSize - bytesRemained;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n}\n\nexport { Untar };\n", "class ResourceHandler {\n\tconstructor(app, handlerType) {\n\t\tthis.handlerType = '';\n\t\tthis._app = void 0;\n\t\tthis._maxRetries = 0;\n\t\tthis._app = app;\n\t\tthis.handlerType = handlerType;\n\t}\n\tset maxRetries(value) {\n\t\tthis._maxRetries = value;\n\t}\n\tget maxRetries() {\n\t\treturn this._maxRetries;\n\t}\n\tload(url, callback, asset) {}\n\topen(url, data, asset) {\n\t\treturn data;\n\t}\n\tpatch(asset, assets) {}\n}\n\nexport { ResourceHandler };\n", "import { Bundle } from '../bundle/bundle.js';\nimport { Untar } from './untar.js';\nimport { ResourceHandler } from './handler.js';\n\nclass BundleHandler extends ResourceHandler {\n\tconstructor(app) {\n\t\tsuper(app, 'bundle');\n\t\tthis._assets = app.assets;\n\t}\n\t_fetchRetries(url, options, retries = 0) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst tryFetch = () => {\n\t\t\t\tfetch(url, options).then(resolve).catch(err => {\n\t\t\t\t\tretries++;\n\t\t\t\t\tif (retries < this.maxRetries) {\n\t\t\t\t\t\ttryFetch();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\ttryFetch();\n\t\t});\n\t}\n\tload(url, callback) {\n\t\tif (typeof url === 'string') {\n\t\t\turl = {\n\t\t\t\tload: url,\n\t\t\t\toriginal: url\n\t\t\t};\n\t\t}\n\t\tthis._fetchRetries(url.load, {\n\t\t\tmode: 'cors',\n\t\t\tcredentials: 'include'\n\t\t}, this.maxRetries).then(res => {\n\t\t\tconst bundle = new Bundle();\n\t\t\tcallback(null, bundle);\n\t\t\tconst untar = new Untar(res, this._assets.prefix);\n\t\t\tuntar.on('file', file => {\n\t\t\t\tbundle.addFile(file.name, file.data);\n\t\t\t});\n\t\t\tuntar.on('done', () => {\n\t\t\t\tbundle.loaded = true;\n\t\t\t});\n\t\t\tuntar.on('error', err => {\n\t\t\t\tcallback(err);\n\t\t\t});\n\t\t}).catch(err => {\n\t\t\tcallback(err);\n\t\t});\n\t}\n\topen(url, bundle) {\n\t\treturn bundle;\n\t}\n}\n\nexport { BundleHandler };\n", "class ResourceLoader {\n\tconstructor(app) {\n\t\tthis._handlers = {};\n\t\tthis._requests = {};\n\t\tthis._cache = {};\n\t\tthis._app = app;\n\t}\n\taddHandler(type, handler) {\n\t\tthis._handlers[type] = handler;\n\t\thandler._loader = this;\n\t}\n\tremoveHandler(type) {\n\t\tdelete this._handlers[type];\n\t}\n\tgetHandler(type) {\n\t\treturn this._handlers[type];\n\t}\n\tstatic makeKey(url, type) {\n\t\treturn `${url}-${type}`;\n\t}\n\tload(url, type, callback, asset, options) {\n\t\tconst handler = this._handlers[type];\n\t\tif (!handler) {\n\t\t\tconst err = `No resource handler for asset type: '${type}' when loading [${url}]`;\n\t\t\tcallback(err);\n\t\t\treturn;\n\t\t}\n\t\tif (!url) {\n\t\t\tthis._loadNull(handler, callback, asset);\n\t\t\treturn;\n\t\t}\n\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\tif (this._cache[key] !== undefined) {\n\t\t\tcallback(null, this._cache[key]);\n\t\t} else if (this._requests[key]) {\n\t\t\tthis._requests[key].push(callback);\n\t\t} else {\n\t\t\tthis._requests[key] = [callback];\n\t\t\tconst self = this;\n\t\t\tconst handleLoad = function handleLoad(err, urlObj) {\n\t\t\t\tif (err) {\n\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (urlObj.load instanceof DataView) {\n\t\t\t\t\tif (handler.openBinary) {\n\t\t\t\t\t\tif (!self._requests[key]) return;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst data = handler.openBinary(urlObj.load);\n\t\t\t\t\t\t\tself._onSuccess(key, data);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\turlObj.load = URL.createObjectURL(new Blob([urlObj.load]));\n\t\t\t\t\tif (asset) {\n\t\t\t\t\t\tif (asset.urlObject) URL.revokeObjectURL(asset.urlObject);\n\t\t\t\t\t\tasset.urlObject = urlObj.load;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\thandler.load(urlObj, function (err, data, extra) {\n\t\t\t\t\tif (!self._requests[key]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tself._onSuccess(key, handler.open(urlObj.original, data, asset), extra);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tself._onFailure(key, e);\n\t\t\t\t\t}\n\t\t\t\t}, asset);\n\t\t\t};\n\t\t\tconst normalizedUrl = url.split('?')[0];\n\t\t\tif (this._app.enableBundles && this._app.bundles.hasUrl(normalizedUrl) && !(options && options.bundlesIgnore)) {\n\t\t\t\tif (!this._app.bundles.urlIsLoadedOrLoading(normalizedUrl)) {\n\t\t\t\t\tvar _this$_app$assets;\n\t\t\t\t\tconst bundles = this._app.bundles.listBundlesForAsset(asset);\n\t\t\t\t\tlet bundle;\n\t\t\t\t\tif (options && options.bundlesFilter) {\n\t\t\t\t\t\tbundle = options.bundlesFilter(bundles);\n\t\t\t\t\t}\n\t\t\t\t\tif (!bundle) {\n\t\t\t\t\t\tbundles == null || bundles.sort((a, b) => {\n\t\t\t\t\t\t\treturn a.file.size - b.file.size;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbundle = bundles == null ? void 0 : bundles[0];\n\t\t\t\t\t}\n\t\t\t\t\tif (bundle) (_this$_app$assets = this._app.assets) == null || _this$_app$assets.load(bundle);\n\t\t\t\t}\n\t\t\t\tthis._app.bundles.loadUrl(normalizedUrl, function (err, fileUrlFromBundle) {\n\t\t\t\t\thandleLoad(err, {\n\t\t\t\t\t\tload: fileUrlFromBundle,\n\t\t\t\t\t\toriginal: normalizedUrl\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\thandleLoad(null, {\n\t\t\t\t\tload: url,\n\t\t\t\t\toriginal: asset && asset.file.filename || url\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t_loadNull(handler, callback, asset) {\n\t\tconst onLoad = function onLoad(err, data, extra) {\n\t\t\tif (err) {\n\t\t\t\tcallback(err);\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(null, handler.open(null, data, asset), extra);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcallback(e);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\thandler.load(null, onLoad, asset);\n\t}\n\t_onSuccess(key, result, extra) {\n\t\tif (result !== null) {\n\t\t\tthis._cache[key] = result;\n\t\t} else {\n\t\t\tdelete this._cache[key];\n\t\t}\n\t\tfor (let i = 0; i < this._requests[key].length; i++) {\n\t\t\tthis._requests[key][i](null, result, extra);\n\t\t}\n\t\tdelete this._requests[key];\n\t}\n\t_onFailure(key, err) {\n\t\tconsole.error(err);\n\t\tif (this._requests[key]) {\n\t\t\tfor (let i = 0; i < this._requests[key].length; i++) {\n\t\t\t\tthis._requests[key][i](err);\n\t\t\t}\n\t\t\tdelete this._requests[key];\n\t\t}\n\t}\n\topen(type, data) {\n\t\tconst handler = this._handlers[type];\n\t\tif (!handler) {\n\t\t\tconsole.warn('No resource handler found for: ' + type);\n\t\t\treturn data;\n\t\t}\n\t\treturn handler.open(null, data);\n\t}\n\tpatch(asset, assets) {\n\t\tconst handler = this._handlers[asset.type];\n\t\tif (!handler) {\n\t\t\tconsole.warn('No resource handler found for: ' + asset.type);\n\t\t\treturn;\n\t\t}\n\t\tif (handler.patch) {\n\t\t\thandler.patch(asset, assets);\n\t\t}\n\t}\n\tclearCache(url, type) {\n\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\tdelete this._cache[key];\n\t}\n\tgetFromCache(url, type) {\n\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\tif (this._cache[key]) {\n\t\t\treturn this._cache[key];\n\t\t}\n\t\treturn undefined;\n\t}\n\tenableRetry(maxRetries = 5) {\n\t\tmaxRetries = Math.max(0, maxRetries) || 0;\n\t\tfor (const key in this._handlers) {\n\t\t\tthis._handlers[key].maxRetries = maxRetries;\n\t\t}\n\t}\n\tdisableRetry() {\n\t\tfor (const key in this._handlers) {\n\t\t\tthis._handlers[key].maxRetries = 0;\n\t\t}\n\t}\n\tdestroy() {\n\t\tthis._handlers = {};\n\t\tthis._requests = {};\n\t\tthis._cache = {};\n\t}\n}\n\nexport { ResourceLoader };\n", "class I18nParser {\n\t_validate(data) {\n\t\tif (!data.header) {\n\t\t\tthrow new Error('pc.I18n#addData: Missing \"header\" field');\n\t\t}\n\t\tif (!data.header.version) {\n\t\t\tthrow new Error('pc.I18n#addData: Missing \"header.version\" field');\n\t\t}\n\t\tif (data.header.version !== 1) {\n\t\t\tthrow new Error('pc.I18n#addData: Invalid \"header.version\" field');\n\t\t}\n\t\tif (!data.data) {\n\t\t\tthrow new Error('pc.I18n#addData: Missing \"data\" field');\n\t\t} else if (!Array.isArray(data.data)) {\n\t\t\tthrow new Error('pc.I18n#addData: \"data\" field must be an array');\n\t\t}\n\t\tfor (let i = 0, len = data.data.length; i < len; i++) {\n\t\t\tconst entry = data.data[i];\n\t\t\tif (!entry.info) {\n\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].info\" field`);\n\t\t\t}\n\t\t\tif (!entry.info.locale) {\n\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].info.locale\" field`);\n\t\t\t}\n\t\t\tif (typeof entry.info.locale !== 'string') {\n\t\t\t\tthrow new Error(`pc.I18n#addData: \"data[${i}].info.locale\" must be a string`);\n\t\t\t}\n\t\t\tif (!entry.messages) {\n\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].messages\" field`);\n\t\t\t}\n\t\t}\n\t}\n\tparse(data) {\n\t\treturn data.data;\n\t}\n}\n\nexport { I18nParser };\n", "import { EventHandler } from '../../core/event-handler.js';\nimport { Asset } from '../asset/asset.js';\nimport { I18nParser } from './i18n-parser.js';\nimport { DEFAULT_LOCALE, DEFAULT_LOCALE_FALLBACKS } from './constants.js';\nimport { getLang, replaceLang, getPluralFn, findAvailableLocale } from './utils.js';\n\nclass I18n extends EventHandler {\n\tconstructor(app) {\n\t\tsuper();\n\t\tthis.locale = DEFAULT_LOCALE;\n\t\tthis._translations = {};\n\t\tthis._availableLangs = {};\n\t\tthis._app = app;\n\t\tthis._assets = [];\n\t\tthis._parser = new I18nParser();\n\t}\n\tset assets(value) {\n\t\tconst index = {};\n\t\tfor (let _i = 0, len = value.length; _i < len; _i++) {\n\t\t\tconst id = value[_i] instanceof Asset ? value[_i].id : value[_i];\n\t\t\tindex[id] = true;\n\t\t}\n\t\tlet i = this._assets.length;\n\t\twhile (i--) {\n\t\t\tconst id = this._assets[i];\n\t\t\tif (!index[id]) {\n\t\t\t\tthis._app.assets.off('add:' + id, this._onAssetAdd, this);\n\t\t\t\tconst asset = this._app.assets.get(id);\n\t\t\t\tif (asset) {\n\t\t\t\t\tthis._onAssetRemove(asset);\n\t\t\t\t}\n\t\t\t\tthis._assets.splice(i, 1);\n\t\t\t}\n\t\t}\n\t\tfor (const id in index) {\n\t\t\tconst idNum = parseInt(id, 10);\n\t\t\tif (this._assets.indexOf(idNum) !== -1) continue;\n\t\t\tthis._assets.push(idNum);\n\t\t\tconst asset = this._app.assets.get(idNum);\n\t\t\tif (!asset) {\n\t\t\t\tthis._app.assets.once('add:' + idNum, this._onAssetAdd, this);\n\t\t\t} else {\n\t\t\t\tthis._onAssetAdd(asset);\n\t\t\t}\n\t\t}\n\t}\n\tget assets() {\n\t\treturn this._assets;\n\t}\n\tset locale(value) {\n\t\tif (this._locale === value) {\n\t\t\treturn;\n\t\t}\n\t\tlet lang = getLang(value);\n\t\tif (lang === 'in') {\n\t\t\tlang = 'id';\n\t\t\tvalue = replaceLang(value, lang);\n\t\t\tif (this._locale === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst old = this._locale;\n\t\tthis._locale = value;\n\t\tthis._lang = lang;\n\t\tthis._pluralFn = getPluralFn(this._lang);\n\t\tthis.fire('set:locale', value, old);\n\t}\n\tget locale() {\n\t\treturn this._locale;\n\t}\n\tstatic findAvailableLocale(desiredLocale, availableLocales) {\n\t\treturn findAvailableLocale(desiredLocale, availableLocales);\n\t}\n\tfindAvailableLocale(desiredLocale) {\n\t\tif (this._translations[desiredLocale]) {\n\t\t\treturn desiredLocale;\n\t\t}\n\t\tconst lang = getLang(desiredLocale);\n\t\treturn this._findFallbackLocale(desiredLocale, lang);\n\t}\n\tgetText(key, locale) {\n\t\tlet result = key;\n\t\tlet lang;\n\t\tif (!locale) {\n\t\t\tlocale = this._locale;\n\t\t\tlang = this._lang;\n\t\t}\n\t\tlet translations = this._translations[locale];\n\t\tif (!translations) {\n\t\t\tif (!lang) {\n\t\t\t\tlang = getLang(locale);\n\t\t\t}\n\t\t\tlocale = this._findFallbackLocale(locale, lang);\n\t\t\ttranslations = this._translations[locale];\n\t\t}\n\t\tif (translations && translations.hasOwnProperty(key)) {\n\t\t\tresult = translations[key];\n\t\t\tif (Array.isArray(result)) {\n\t\t\t\tresult = result[0];\n\t\t\t}\n\t\t\tif (result === null || result === undefined) {\n\t\t\t\tresult = key;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\tgetPluralText(key, n, locale) {\n\t\tlet result = key;\n\t\tlet lang;\n\t\tlet pluralFn;\n\t\tif (!locale) {\n\t\t\tlocale = this._locale;\n\t\t\tlang = this._lang;\n\t\t\tpluralFn = this._pluralFn;\n\t\t} else {\n\t\t\tlang = getLang(locale);\n\t\t\tpluralFn = getPluralFn(lang);\n\t\t}\n\t\tlet translations = this._translations[locale];\n\t\tif (!translations) {\n\t\t\tlocale = this._findFallbackLocale(locale, lang);\n\t\t\tlang = getLang(locale);\n\t\t\tpluralFn = getPluralFn(lang);\n\t\t\ttranslations = this._translations[locale];\n\t\t}\n\t\tif (translations && translations[key] && pluralFn) {\n\t\t\tconst index = pluralFn(n);\n\t\t\tresult = translations[key][index];\n\t\t\tif (result === null || result === undefined) {\n\t\t\t\tresult = key;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\taddData(data) {\n\t\tlet parsed;\n\t\ttry {\n\t\t\tparsed = this._parser.parse(data);\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\treturn;\n\t\t}\n\t\tfor (let i = 0, len = parsed.length; i < len; i++) {\n\t\t\tconst entry = parsed[i];\n\t\t\tconst locale = entry.info.locale;\n\t\t\tconst messages = entry.messages;\n\t\t\tif (!this._translations[locale]) {\n\t\t\t\tthis._translations[locale] = {};\n\t\t\t\tconst lang = getLang(locale);\n\t\t\t\tif (!this._availableLangs[lang]) {\n\t\t\t\t\tthis._availableLangs[lang] = locale;\n\t\t\t\t}\n\t\t\t}\n\t\t\tObject.assign(this._translations[locale], messages);\n\t\t\tthis.fire('data:add', locale, messages);\n\t\t}\n\t}\n\tremoveData(data) {\n\t\tlet parsed;\n\t\ttry {\n\t\t\tparsed = this._parser.parse(data);\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\treturn;\n\t\t}\n\t\tfor (let i = 0, len = parsed.length; i < len; i++) {\n\t\t\tconst entry = parsed[i];\n\t\t\tconst locale = entry.info.locale;\n\t\t\tconst translations = this._translations[locale];\n\t\t\tif (!translations) continue;\n\t\t\tconst messages = entry.messages;\n\t\t\tfor (const key in messages) {\n\t\t\t\tdelete translations[key];\n\t\t\t}\n\t\t\tif (Object.keys(translations).length === 0) {\n\t\t\t\tdelete this._translations[locale];\n\t\t\t\tdelete this._availableLangs[getLang(locale)];\n\t\t\t}\n\t\t\tthis.fire('data:remove', locale, messages);\n\t\t}\n\t}\n\tdestroy() {\n\t\tthis._translations = null;\n\t\tthis._availableLangs = null;\n\t\tthis._assets = null;\n\t\tthis._parser = null;\n\t\tthis.off();\n\t}\n\t_findFallbackLocale(locale, lang) {\n\t\tlet result = DEFAULT_LOCALE_FALLBACKS[locale];\n\t\tif (result && this._translations[result]) {\n\t\t\treturn result;\n\t\t}\n\t\tresult = DEFAULT_LOCALE_FALLBACKS[lang];\n\t\tif (result && this._translations[result]) {\n\t\t\treturn result;\n\t\t}\n\t\tresult = this._availableLangs[lang];\n\t\tif (result && this._translations[result]) {\n\t\t\treturn result;\n\t\t}\n\t\treturn DEFAULT_LOCALE;\n\t}\n\t_onAssetAdd(asset) {\n\t\tasset.on('load', this._onAssetLoad, this);\n\t\tasset.on('change', this._onAssetChange, this);\n\t\tasset.on('remove', this._onAssetRemove, this);\n\t\tasset.on('unload', this._onAssetUnload, this);\n\t\tif (asset.resource) {\n\t\t\tthis._onAssetLoad(asset);\n\t\t}\n\t}\n\t_onAssetLoad(asset) {\n\t\tthis.addData(asset.resource);\n\t}\n\t_onAssetChange(asset) {\n\t\tif (asset.resource) {\n\t\t\tthis.addData(asset.resource);\n\t\t}\n\t}\n\t_onAssetRemove(asset) {\n\t\tasset.off('load', this._onAssetLoad, this);\n\t\tasset.off('change', this._onAssetChange, this);\n\t\tasset.off('remove', this._onAssetRemove, this);\n\t\tasset.off('unload', this._onAssetUnload, this);\n\t\tif (asset.resource) {\n\t\t\tthis.removeData(asset.resource);\n\t\t}\n\t\tthis._app.assets.once('add:' + asset.id, this._onAssetAdd, this);\n\t}\n\t_onAssetUnload(asset) {\n\t\tif (asset.resource) {\n\t\t\tthis.removeData(asset.resource);\n\t\t}\n\t}\n}\n\nexport { I18n };\n", "import { EventHandler } from '../../core/event-handler.js';\n\nclass ScriptRegistry extends EventHandler {\n\tconstructor(app) {\n\t\tsuper();\n\t\tthis._scripts = {};\n\t\tthis._list = [];\n\t\tthis.app = app;\n\t}\n\tdestroy() {\n\t\tthis.app = null;\n\t\tthis.off();\n\t}\n\tadd(script) {\n\t\tconst scriptName = script.__name;\n\t\tif (this._scripts.hasOwnProperty(scriptName)) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (script.prototype.swap) {\n\t\t\t\t\tconst old = this._scripts[scriptName];\n\t\t\t\t\tconst ind = this._list.indexOf(old);\n\t\t\t\t\tthis._list[ind] = script;\n\t\t\t\t\tthis._scripts[scriptName] = script;\n\t\t\t\t\tthis.fire('swap', scriptName, script);\n\t\t\t\t\tthis.fire('swap:' + scriptName, script);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(`script registry already has '${scriptName}' script, define 'swap' method for new script type to enable code hot swapping`);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn false;\n\t\t}\n\t\tthis._scripts[scriptName] = script;\n\t\tthis._list.push(script);\n\t\tthis.fire('add', scriptName, script);\n\t\tthis.fire('add:' + scriptName, script);\n\t\tsetTimeout(() => {\n\t\t\tif (!this._scripts.hasOwnProperty(scriptName)) return;\n\t\t\tif (!this.app || !this.app.systems || !this.app.systems.script) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst components = this.app.systems.script._components;\n\t\t\tlet attributes;\n\t\t\tconst scriptInstances = [];\n\t\t\tconst scriptInstancesInitialized = [];\n\t\t\tfor (components.loopIndex = 0; components.loopIndex < components.length; components.loopIndex++) {\n\t\t\t\tconst component = components.items[components.loopIndex];\n\t\t\t\tif (component._scriptsIndex[scriptName] && component._scriptsIndex[scriptName].awaiting) {\n\t\t\t\t\tif (component._scriptsData && component._scriptsData[scriptName]) attributes = component._scriptsData[scriptName].attributes;\n\t\t\t\t\tconst scriptInstance = component.create(scriptName, {\n\t\t\t\t\t\tpreloading: true,\n\t\t\t\t\t\tind: component._scriptsIndex[scriptName].ind,\n\t\t\t\t\t\tattributes: attributes\n\t\t\t\t\t});\n\t\t\t\t\tif (scriptInstance) scriptInstances.push(scriptInstance);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = 0; i < scriptInstances.length; i++) scriptInstances[i].__initializeAttributes();\n\t\t\tfor (let i = 0; i < scriptInstances.length; i++) {\n\t\t\t\tif (scriptInstances[i].enabled) {\n\t\t\t\t\tscriptInstances[i]._initialized = true;\n\t\t\t\t\tscriptInstancesInitialized.push(scriptInstances[i]);\n\t\t\t\t\tif (scriptInstances[i].initialize) scriptInstances[i].initialize();\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = 0; i < scriptInstancesInitialized.length; i++) {\n\t\t\t\tif (!scriptInstancesInitialized[i].enabled || scriptInstancesInitialized[i]._postInitialized) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tscriptInstancesInitialized[i]._postInitialized = true;\n\t\t\t\tif (scriptInstancesInitialized[i].postInitialize) scriptInstancesInitialized[i].postInitialize();\n\t\t\t}\n\t\t});\n\t\treturn true;\n\t}\n\tremove(nameOrType) {\n\t\tlet scriptType = nameOrType;\n\t\tlet scriptName = nameOrType;\n\t\tif (typeof scriptName !== 'string') {\n\t\t\tscriptName = scriptType.__name;\n\t\t} else {\n\t\t\tscriptType = this.get(scriptName);\n\t\t}\n\t\tif (this.get(scriptName) !== scriptType) return false;\n\t\tdelete this._scripts[scriptName];\n\t\tconst ind = this._list.indexOf(scriptType);\n\t\tthis._list.splice(ind, 1);\n\t\tthis.fire('remove', scriptName, scriptType);\n\t\tthis.fire('remove:' + scriptName, scriptType);\n\t\treturn true;\n\t}\n\tget(name) {\n\t\treturn this._scripts[name] || null;\n\t}\n\thas(nameOrType) {\n\t\tif (typeof nameOrType === 'string') {\n\t\t\treturn this._scripts.hasOwnProperty(nameOrType);\n\t\t}\n\t\tif (!nameOrType) return false;\n\t\tconst scriptName = nameOrType.__name;\n\t\treturn this._scripts[scriptName] === nameOrType;\n\t}\n\tlist() {\n\t\treturn this._list;\n\t}\n}\n\nexport { ScriptRegistry };\n", "import { guid } from '../core/guid.js';\nimport { GraphNode } from '../scene/graph-node.js';\nimport { getApplication } from './globals.js';\n\nconst _enableList = [];\nclass Entity extends GraphNode {\n\tconstructor(name, app = getApplication()) {\n\t\tsuper(name);\n\t\tthis.anim = void 0;\n\t\tthis.animation = void 0;\n\t\tthis.audiolistener = void 0;\n\t\tthis.button = void 0;\n\t\tthis.camera = void 0;\n\t\tthis.collision = void 0;\n\t\tthis.element = void 0;\n\t\tthis.gsplat = void 0;\n\t\tthis.layoutchild = void 0;\n\t\tthis.layoutgroup = void 0;\n\t\tthis.light = void 0;\n\t\tthis.model = void 0;\n\t\tthis.particlesystem = void 0;\n\t\tthis.render = void 0;\n\t\tthis.rigidbody = void 0;\n\t\tthis.screen = void 0;\n\t\tthis.script = void 0;\n\t\tthis.scrollbar = void 0;\n\t\tthis.scrollview = void 0;\n\t\tthis.sound = void 0;\n\t\tthis.sprite = void 0;\n\t\tthis.c = {};\n\t\tthis._app = void 0;\n\t\tthis._destroying = false;\n\t\tthis._guid = null;\n\t\tthis._template = false;\n\t\tthis._app = app;\n\t}\n\taddComponent(type, data) {\n\t\tconst system = this._app.systems[type];\n\t\tif (!system) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.c[type]) {\n\t\t\treturn null;\n\t\t}\n\t\treturn system.addComponent(this, data);\n\t}\n\tremoveComponent(type) {\n\t\tconst system = this._app.systems[type];\n\t\tif (!system) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.c[type]) {\n\t\t\treturn;\n\t\t}\n\t\tsystem.removeComponent(this);\n\t}\n\tfindComponent(type) {\n\t\tconst entity = this.findOne(function (node) {\n\t\t\treturn node.c && node.c[type];\n\t\t});\n\t\treturn entity && entity.c[type];\n\t}\n\tfindComponents(type) {\n\t\tconst entities = this.find(function (node) {\n\t\t\treturn node.c && node.c[type];\n\t\t});\n\t\treturn entities.map(function (entity) {\n\t\t\treturn entity.c[type];\n\t\t});\n\t}\n\tfindScript(nameOrType) {\n\t\tconst entity = this.findOne(node => {\n\t\t\tvar _node$c;\n\t\t\treturn (_node$c = node.c) == null || (_node$c = _node$c.script) == null ? void 0 : _node$c.has(nameOrType);\n\t\t});\n\t\treturn entity == null ? void 0 : entity.c.script.get(nameOrType);\n\t}\n\tfindScripts(nameOrType) {\n\t\tconst entities = this.find(node => {\n\t\t\tvar _node$c2;\n\t\t\treturn (_node$c2 = node.c) == null || (_node$c2 = _node$c2.script) == null ? void 0 : _node$c2.has(nameOrType);\n\t\t});\n\t\treturn entities.map(entity => entity.c.script.get(nameOrType));\n\t}\n\tgetGuid() {\n\t\tif (!this._guid) {\n\t\t\tthis.setGuid(guid.create());\n\t\t}\n\t\treturn this._guid;\n\t}\n\tsetGuid(guid) {\n\t\tconst index = this._app._entityIndex;\n\t\tif (this._guid) {\n\t\t\tdelete index[this._guid];\n\t\t}\n\t\tthis._guid = guid;\n\t\tindex[this._guid] = this;\n\t}\n\t_notifyHierarchyStateChanged(node, enabled) {\n\t\tlet enableFirst = false;\n\t\tif (node === this && _enableList.length === 0) enableFirst = true;\n\t\tnode._beingEnabled = true;\n\t\tnode._onHierarchyStateChanged(enabled);\n\t\tif (node._onHierarchyStatePostChanged) _enableList.push(node);\n\t\tconst c = node._children;\n\t\tfor (let i = 0, len = c.length; i < len; i++) {\n\t\t\tif (c[i]._enabled) this._notifyHierarchyStateChanged(c[i], enabled);\n\t\t}\n\t\tnode._beingEnabled = false;\n\t\tif (enableFirst) {\n\t\t\tfor (let i = 0; i < _enableList.length; i++) {\n\t\t\t\t_enableList[i]._onHierarchyStatePostChanged();\n\t\t\t}\n\t\t\t_enableList.length = 0;\n\t\t}\n\t}\n\t_onHierarchyStateChanged(enabled) {\n\t\tsuper._onHierarchyStateChanged(enabled);\n\t\tconst components = this.c;\n\t\tfor (const type in components) {\n\t\t\tif (components.hasOwnProperty(type)) {\n\t\t\t\tconst component = components[type];\n\t\t\t\tif (component.enabled) {\n\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\tcomponent.onEnable();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomponent.onDisable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t_onHierarchyStatePostChanged() {\n\t\tconst components = this.c;\n\t\tfor (const type in components) {\n\t\t\tif (components.hasOwnProperty(type)) components[type].onPostStateChange();\n\t\t}\n\t}\n\tfindByGuid(guid) {\n\t\tif (this._guid === guid) return this;\n\t\tconst e = this._app._entityIndex[guid];\n\t\tif (e && (e === this || e.isDescendantOf(this))) {\n\t\t\treturn e;\n\t\t}\n\t\treturn null;\n\t}\n\tdestroy() {\n\t\tthis._destroying = true;\n\t\tfor (const name in this.c) {\n\t\t\tthis.c[name].enabled = false;\n\t\t}\n\t\tfor (const name in this.c) {\n\t\t\tthis.c[name].system.removeComponent(this);\n\t\t}\n\t\tsuper.destroy();\n\t\tif (this._guid) {\n\t\t\tdelete this._app._entityIndex[this._guid];\n\t\t}\n\t\tthis._destroying = false;\n\t}\n\tclone() {\n\t\tconst duplicatedIdsMap = {};\n\t\tconst clone = this._cloneRecursively(duplicatedIdsMap);\n\t\tduplicatedIdsMap[this.getGuid()] = clone;\n\t\tresolveDuplicatedEntityReferenceProperties(this, this, clone, duplicatedIdsMap);\n\t\treturn clone;\n\t}\n\t_cloneRecursively(duplicatedIdsMap) {\n\t\tconst clone = new this.constructor(undefined, this._app);\n\t\tsuper._cloneInternal(clone);\n\t\tfor (const type in this.c) {\n\t\t\tconst component = this.c[type];\n\t\t\tcomponent.system.cloneComponent(this, clone);\n\t\t}\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tconst oldChild = this._children[i];\n\t\t\tif (oldChild instanceof Entity) {\n\t\t\t\tconst newChild = oldChild._cloneRecursively(duplicatedIdsMap);\n\t\t\t\tclone.addChild(newChild);\n\t\t\t\tduplicatedIdsMap[oldChild.getGuid()] = newChild;\n\t\t\t}\n\t\t}\n\t\treturn clone;\n\t}\n}\nEntity.EVENT_DESTROY = 'destroy';\nfunction resolveDuplicatedEntityReferenceProperties(oldSubtreeRoot, oldEntity, newEntity, duplicatedIdsMap) {\n\tif (oldEntity instanceof Entity) {\n\t\tconst components = oldEntity.c;\n\t\tfor (const componentName in components) {\n\t\t\tconst component = components[componentName];\n\t\t\tconst entityProperties = component.system.getPropertiesOfType('entity');\n\t\t\tfor (let i = 0, len = entityProperties.length; i < len; i++) {\n\t\t\t\tconst propertyDescriptor = entityProperties[i];\n\t\t\t\tconst propertyName = propertyDescriptor.name;\n\t\t\t\tconst oldEntityReferenceId = component[propertyName];\n\t\t\t\tconst entityIsWithinOldSubtree = !!oldSubtreeRoot.findByGuid(oldEntityReferenceId);\n\t\t\t\tif (entityIsWithinOldSubtree) {\n\t\t\t\t\tconst newEntityReferenceId = duplicatedIdsMap[oldEntityReferenceId].getGuid();\n\t\t\t\t\tif (newEntityReferenceId) {\n\t\t\t\t\t\tnewEntity.c[componentName][propertyName] = newEntityReferenceId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (components.script && !newEntity._app.useLegacyScriptAttributeCloning) {\n\t\t\tnewEntity.script.resolveDuplicatedEntityReferenceProperties(components.script, duplicatedIdsMap);\n\t\t}\n\t\tif (components.render) {\n\t\t\tnewEntity.render.resolveDuplicatedEntityReferenceProperties(components.render, duplicatedIdsMap);\n\t\t}\n\t\tif (components.anim) {\n\t\t\tnewEntity.anim.resolveDuplicatedEntityReferenceProperties(components.anim, duplicatedIdsMap);\n\t\t}\n\t\tconst _old = oldEntity.children.filter(function (e) {\n\t\t\treturn e instanceof Entity;\n\t\t});\n\t\tconst _new = newEntity.children.filter(function (e) {\n\t\t\treturn e instanceof Entity;\n\t\t});\n\t\tfor (let i = 0, len = _old.length; i < len; i++) {\n\t\t\tresolveDuplicatedEntityReferenceProperties(oldSubtreeRoot, _old[i], _new[i], duplicatedIdsMap);\n\t\t}\n\t}\n}\n\nexport { Entity };\n", "class SceneRegistryItem {\n\tconstructor(name, url) {\n\t\tthis.name = void 0;\n\t\tthis.url = void 0;\n\t\tthis.data = null;\n\t\tthis._loading = false;\n\t\tthis._onLoadedCallbacks = [];\n\t\tthis.name = name;\n\t\tthis.url = url;\n\t}\n\tget loaded() {\n\t\treturn !!this.data;\n\t}\n\tget loading() {\n\t\treturn this._loading;\n\t}\n}\n\nexport { SceneRegistryItem };\n", "import { path } from '../core/path.js';\nimport { ABSOLUTE_URL } from './asset/constants.js';\nimport { SceneRegistryItem } from './scene-registry-item.js';\n\nclass SceneRegistry {\n\tconstructor(app) {\n\t\tthis._app = void 0;\n\t\tthis._list = [];\n\t\tthis._index = {};\n\t\tthis._urlIndex = {};\n\t\tthis._app = app;\n\t}\n\tdestroy() {\n\t\tthis._app = null;\n\t}\n\tlist() {\n\t\treturn this._list;\n\t}\n\tadd(name, url) {\n\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\treturn false;\n\t\t}\n\t\tconst item = new SceneRegistryItem(name, url);\n\t\tconst i = this._list.push(item);\n\t\tthis._index[item.name] = i - 1;\n\t\tthis._urlIndex[item.url] = i - 1;\n\t\treturn true;\n\t}\n\tfind(name) {\n\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\treturn this._list[this._index[name]];\n\t\t}\n\t\treturn null;\n\t}\n\tfindByUrl(url) {\n\t\tif (this._urlIndex.hasOwnProperty(url)) {\n\t\t\treturn this._list[this._urlIndex[url]];\n\t\t}\n\t\treturn null;\n\t}\n\tremove(name) {\n\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\tconst idx = this._index[name];\n\t\t\tlet item = this._list[idx];\n\t\t\tdelete this._urlIndex[item.url];\n\t\t\tdelete this._index[name];\n\t\t\tthis._list.splice(idx, 1);\n\t\t\tfor (let i = 0; i < this._list.length; i++) {\n\t\t\t\titem = this._list[i];\n\t\t\t\tthis._index[item.name] = i;\n\t\t\t\tthis._urlIndex[item.url] = i;\n\t\t\t}\n\t\t}\n\t}\n\t_loadSceneData(sceneItem, storeInCache, callback) {\n\t\tconst app = this._app;\n\t\tlet url = sceneItem;\n\t\tif (typeof sceneItem === 'string') {\n\t\t\tsceneItem = this.findByUrl(url) || this.find(url) || new SceneRegistryItem('Untitled', url);\n\t\t}\n\t\turl = sceneItem.url;\n\t\tif (!url) {\n\t\t\tcallback(\"Cannot find scene to load\");\n\t\t\treturn;\n\t\t}\n\t\tif (sceneItem.loaded) {\n\t\t\tcallback(null, sceneItem);\n\t\t\treturn;\n\t\t}\n\t\tif (app.assets && app.assets.prefix && !ABSOLUTE_URL.test(url)) {\n\t\t\turl = path.join(app.assets.prefix, url);\n\t\t}\n\t\tsceneItem._onLoadedCallbacks.push(callback);\n\t\tif (!sceneItem._loading) {\n\t\t\tconst handler = app.loader.getHandler(\"hierarchy\");\n\t\t\thandler.load(url, (err, data) => {\n\t\t\t\tsceneItem.data = data;\n\t\t\t\tsceneItem._loading = false;\n\t\t\t\tfor (let i = 0; i < sceneItem._onLoadedCallbacks.length; i++) {\n\t\t\t\t\tsceneItem._onLoadedCallbacks[i](err, sceneItem);\n\t\t\t\t}\n\t\t\t\tif (!storeInCache) {\n\t\t\t\t\tsceneItem.data = null;\n\t\t\t\t}\n\t\t\t\tsceneItem._onLoadedCallbacks.length = 0;\n\t\t\t});\n\t\t}\n\t\tsceneItem._loading = true;\n\t}\n\tloadSceneData(sceneItem, callback) {\n\t\tthis._loadSceneData(sceneItem, true, callback);\n\t}\n\tunloadSceneData(sceneItem) {\n\t\tif (typeof sceneItem === 'string') {\n\t\t\tsceneItem = this.findByUrl(sceneItem);\n\t\t}\n\t\tif (sceneItem) {\n\t\t\tsceneItem.data = null;\n\t\t}\n\t}\n\t_loadSceneHierarchy(sceneItem, onBeforeAddHierarchy, callback) {\n\t\tthis._loadSceneData(sceneItem, false, (err, sceneItem) => {\n\t\t\tif (err) {\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(err);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (onBeforeAddHierarchy) {\n\t\t\t\tonBeforeAddHierarchy(sceneItem);\n\t\t\t}\n\t\t\tconst app = this._app;\n\t\t\tconst _loaded = () => {\n\t\t\t\tconst handler = app.loader.getHandler(\"hierarchy\");\n\t\t\t\tapp.systems.script.preloading = true;\n\t\t\t\tconst entity = handler.open(sceneItem.url, sceneItem.data);\n\t\t\t\tapp.systems.script.preloading = false;\n\t\t\t\tapp.loader.clearCache(sceneItem.url, \"hierarchy\");\n\t\t\t\tapp.root.addChild(entity);\n\t\t\t\tapp.systems.fire('initialize', entity);\n\t\t\t\tapp.systems.fire('postInitialize', entity);\n\t\t\t\tapp.systems.fire('postPostInitialize', entity);\n\t\t\t\tif (callback) callback(null, entity);\n\t\t\t};\n\t\t\tapp._preloadScripts(sceneItem.data, _loaded);\n\t\t});\n\t}\n\tloadSceneHierarchy(sceneItem, callback) {\n\t\tthis._loadSceneHierarchy(sceneItem, null, callback);\n\t}\n\tloadSceneSettings(sceneItem, callback) {\n\t\tthis._loadSceneData(sceneItem, false, (err, sceneItem) => {\n\t\t\tif (!err) {\n\t\t\t\tthis._app.applySceneSettings(sceneItem.data.settings);\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tchangeScene(sceneItem, callback) {\n\t\tconst app = this._app;\n\t\tconst onBeforeAddHierarchy = sceneItem => {\n\t\t\tconst {\n\t\t\t\tchildren\n\t\t\t} = app.root;\n\t\t\twhile (children.length) {\n\t\t\t\tchildren[0].destroy();\n\t\t\t}\n\t\t\tapp.applySceneSettings(sceneItem.data.settings);\n\t\t};\n\t\tthis._loadSceneHierarchy(sceneItem, onBeforeAddHierarchy, callback);\n\t}\n\tloadScene(url, callback) {\n\t\tconst app = this._app;\n\t\tconst handler = app.loader.getHandler(\"scene\");\n\t\tif (app.assets && app.assets.prefix && !ABSOLUTE_URL.test(url)) {\n\t\t\turl = path.join(app.assets.prefix, url);\n\t\t}\n\t\thandler.load(url, (err, data) => {\n\t\t\tif (!err) {\n\t\t\t\tconst _loaded = () => {\n\t\t\t\t\tapp.systems.script.preloading = true;\n\t\t\t\t\tconst scene = handler.open(url, data);\n\t\t\t\t\tconst sceneItem = this.findByUrl(url);\n\t\t\t\t\tif (sceneItem && !sceneItem.loaded) {\n\t\t\t\t\t\tsceneItem.data = data;\n\t\t\t\t\t}\n\t\t\t\t\tapp.systems.script.preloading = false;\n\t\t\t\t\tapp.loader.clearCache(url, \"scene\");\n\t\t\t\t\tapp.loader.patch({\n\t\t\t\t\t\tresource: scene,\n\t\t\t\t\t\ttype: \"scene\"\n\t\t\t\t\t}, app.assets);\n\t\t\t\t\tapp.root.addChild(scene.root);\n\t\t\t\t\tif (app.systems.rigidbody && typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tapp.systems.rigidbody.gravity.set(scene._gravity.x, scene._gravity.y, scene._gravity.z);\n\t\t\t\t\t}\n\t\t\t\t\tif (callback) {\n\t\t\t\t\t\tcallback(null, scene);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tapp._preloadScripts(data, _loaded);\n\t\t\t} else {\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport { SceneRegistry };\n", "import { getApplication } from './globals.js';\n\nclass ApplicationStats {\n\tconstructor(device) {\n\t\tthis.frame = {\n\t\t\tfps: 0,\n\t\t\tms: 0,\n\t\t\tdt: 0,\n\t\t\tupdateStart: 0,\n\t\t\tupdateTime: 0,\n\t\t\trenderStart: 0,\n\t\t\trenderTime: 0,\n\t\t\tphysicsStart: 0,\n\t\t\tphysicsTime: 0,\n\t\t\tcullTime: 0,\n\t\t\tsortTime: 0,\n\t\t\tskinTime: 0,\n\t\t\tmorphTime: 0,\n\t\t\tinstancingTime: 0,\n\t\t\ttriangles: 0,\n\t\t\totherPrimitives: 0,\n\t\t\tshaders: 0,\n\t\t\tmaterials: 0,\n\t\t\tcameras: 0,\n\t\t\tshadowMapUpdates: 0,\n\t\t\tshadowMapTime: 0,\n\t\t\tdepthMapTime: 0,\n\t\t\tforwardTime: 0,\n\t\t\tlightClustersTime: 0,\n\t\t\tlightClusters: 0,\n\t\t\t_timeToCountFrames: 0,\n\t\t\t_fpsAccum: 0\n\t\t};\n\t\tthis.drawCalls = {\n\t\t\tforward: 0,\n\t\t\tdepth: 0,\n\t\t\tshadow: 0,\n\t\t\timmediate: 0,\n\t\t\tmisc: 0,\n\t\t\ttotal: 0,\n\t\t\tskinned: 0,\n\t\t\tinstanced: 0,\n\t\t\tremovedByInstancing: 0\n\t\t};\n\t\tthis.misc = {\n\t\t\trenderTargetCreationTime: 0\n\t\t};\n\t\tthis.particles = {\n\t\t\tupdatesPerFrame: 0,\n\t\t\t_updatesPerFrame: 0,\n\t\t\tframeTime: 0,\n\t\t\t_frameTime: 0\n\t\t};\n\t\tthis.shaders = device._shaderStats;\n\t\tthis.vram = device._vram;\n\t\tObject.defineProperty(this.vram, 'totalUsed', {\n\t\t\tget: function () {\n\t\t\t\treturn this.tex + this.vb + this.ib;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(this.vram, 'geom', {\n\t\t\tget: function () {\n\t\t\t\treturn this.vb + this.ib;\n\t\t\t}\n\t\t});\n\t}\n\tget scene() {\n\t\treturn getApplication().scene._stats;\n\t}\n\tget lightmapper() {\n\t\tvar _getApplication$light;\n\t\treturn (_getApplication$light = getApplication().lightmapper) == null ? void 0 : _getApplication$light.stats;\n\t}\n\tget batcher() {\n\t\tconst batcher = getApplication()._batcher;\n\t\treturn batcher ? batcher._stats : null;\n\t}\n}\n\nexport { ApplicationStats };\n", "import { platform } from '../core/platform.js';\nimport { now } from '../core/time.js';\nimport { path } from '../core/path.js';\nimport { EventHandler } from '../core/event-handler.js';\nimport { Color } from '../core/math/color.js';\nimport { Mat4 } from '../core/math/mat4.js';\nimport { math } from '../core/math/math.js';\nimport { Quat } from '../core/math/quat.js';\nimport { Vec3 } from '../core/math/vec3.js';\nimport { PRIMITIVE_TRIANGLES, PRIMITIVE_TRISTRIP, PRIMITIVE_TRIFAN, CULLFACE_NONE } from '../platform/graphics/constants.js';\nimport { http } from '../platform/net/http.js';\nimport { LAYERID_WORLD, LAYERID_DEPTH, SORTMODE_NONE, LAYERID_SKYBOX, LAYERID_UI, SORTMODE_MANUAL, LAYERID_IMMEDIATE, SPECULAR_BLINN } from '../scene/constants.js';\nimport { setProgramLibrary } from '../scene/shader-lib/get-program-library.js';\nimport { ProgramLibrary } from '../scene/shader-lib/program-library.js';\nimport { ForwardRenderer } from '../scene/renderer/forward-renderer.js';\nimport { FrameGraph } from '../scene/frame-graph.js';\nimport { AreaLightLuts } from '../scene/area-light-luts.js';\nimport { Layer } from '../scene/layer.js';\nimport { LayerComposition } from '../scene/composition/layer-composition.js';\nimport { Scene } from '../scene/scene.js';\nimport { Material } from '../scene/materials/material.js';\nimport { StandardMaterial } from '../scene/materials/standard-material.js';\nimport { setDefaultMaterial } from '../scene/materials/default-material.js';\nimport { Asset } from './asset/asset.js';\nimport { AssetRegistry } from './asset/asset-registry.js';\nimport { BundleRegistry } from './bundle/bundle-registry.js';\nimport { ComponentSystemRegistry } from './components/registry.js';\nimport { BundleHandler } from './handlers/bundle.js';\nimport { ResourceLoader } from './handlers/loader.js';\nimport { I18n } from './i18n/i18n.js';\nimport { ScriptRegistry } from './script/script-registry.js';\nimport { Entity } from './entity.js';\nimport { SceneRegistry } from './scene-registry.js';\nimport { script } from './script.js';\nimport { ApplicationStats } from './stats.js';\nimport { FILLMODE_KEEP_ASPECT, RESOLUTION_FIXED, RESOLUTION_AUTO, FILLMODE_FILL_WINDOW } from './constants.js';\nimport { setApplication, getApplication } from './globals.js';\n\nclass Progress {\n\tconstructor(length) {\n\t\tthis.length = length;\n\t\tthis.count = 0;\n\t}\n\tinc() {\n\t\tthis.count++;\n\t}\n\tdone() {\n\t\treturn this.count === this.length;\n\t}\n}\nlet app = null;\nclass AppBase extends EventHandler {\n\tconstructor(canvas) {\n\t\tsuper();\n\t\tthis.frameRequestId = void 0;\n\t\tAppBase._applications[canvas.id] = this;\n\t\tsetApplication(this);\n\t\tapp = this;\n\t\tthis._destroyRequested = false;\n\t\tthis._inFrameUpdate = false;\n\t\tthis._time = 0;\n\t\tthis.timeScale = 1;\n\t\tthis.maxDeltaTime = 0.1;\n\t\tthis.frame = 0;\n\t\tthis.autoRender = true;\n\t\tthis.renderNextFrame = false;\n\t\tthis.useLegacyScriptAttributeCloning = script.legacy;\n\t\tthis._librariesLoaded = false;\n\t\tthis._fillMode = FILLMODE_KEEP_ASPECT;\n\t\tthis._resolutionMode = RESOLUTION_FIXED;\n\t\tthis._allowResize = true;\n\t\tthis.context = this;\n\t}\n\tinit(appOptions) {\n\t\tconst device = appOptions.graphicsDevice;\n\t\tthis.graphicsDevice = device;\n\t\tthis._initDefaultMaterial();\n\t\tthis._initProgramLibrary();\n\t\tthis.stats = new ApplicationStats(device);\n\t\tthis._soundManager = appOptions.soundManager;\n\t\tthis.loader = new ResourceLoader(this);\n\t\tthis._entityIndex = {};\n\t\tthis.scene = new Scene(device);\n\t\tthis._registerSceneImmediate(this.scene);\n\t\tthis.root = new Entity();\n\t\tthis.root._enabledInHierarchy = true;\n\t\tthis.assets = new AssetRegistry(this.loader);\n\t\tif (appOptions.assetPrefix) this.assets.prefix = appOptions.assetPrefix;\n\t\tthis.bundles = new BundleRegistry(this.assets);\n\t\tthis.enableBundles = typeof TextDecoder !== 'undefined';\n\t\tthis.scriptsOrder = appOptions.scriptsOrder || [];\n\t\tthis.scripts = new ScriptRegistry(this);\n\t\tthis.i18n = new I18n(this);\n\t\tthis.scenes = new SceneRegistry(this);\n\t\tthis.defaultLayerWorld = new Layer({\n\t\t\tname: \"World\",\n\t\t\tid: LAYERID_WORLD\n\t\t});\n\t\tthis.defaultLayerDepth = new Layer({\n\t\t\tname: \"Depth\",\n\t\t\tid: LAYERID_DEPTH,\n\t\t\tenabled: false,\n\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t});\n\t\tthis.defaultLayerSkybox = new Layer({\n\t\t\tname: \"Skybox\",\n\t\t\tid: LAYERID_SKYBOX,\n\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t});\n\t\tthis.defaultLayerUi = new Layer({\n\t\t\tname: \"UI\",\n\t\t\tid: LAYERID_UI,\n\t\t\ttransparentSortMode: SORTMODE_MANUAL\n\t\t});\n\t\tthis.defaultLayerImmediate = new Layer({\n\t\t\tname: \"Immediate\",\n\t\t\tid: LAYERID_IMMEDIATE,\n\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t});\n\t\tconst defaultLayerComposition = new LayerComposition(\"default\");\n\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerWorld);\n\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerDepth);\n\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerSkybox);\n\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerWorld);\n\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerImmediate);\n\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerImmediate);\n\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerUi);\n\t\tthis.scene.layers = defaultLayerComposition;\n\t\tAreaLightLuts.createPlaceholder(device);\n\t\tthis.renderer = new ForwardRenderer(device);\n\t\tthis.renderer.scene = this.scene;\n\t\tthis.frameGraph = new FrameGraph();\n\t\tthis.lightmapper = null;\n\t\tif (appOptions.lightmapper) {\n\t\t\tthis.lightmapper = new appOptions.lightmapper(device, this.root, this.scene, this.renderer, this.assets);\n\t\t\tthis.once('prerender', this._firstBake, this);\n\t\t}\n\t\tthis._batcher = null;\n\t\tif (appOptions.batchManager) {\n\t\t\tthis._batcher = new appOptions.batchManager(device, this.root, this.scene);\n\t\t\tthis.once('prerender', this._firstBatch, this);\n\t\t}\n\t\tthis.keyboard = appOptions.keyboard || null;\n\t\tthis.mouse = appOptions.mouse || null;\n\t\tthis.touch = appOptions.touch || null;\n\t\tthis.gamepads = appOptions.gamepads || null;\n\t\tthis.elementInput = appOptions.elementInput || null;\n\t\tif (this.elementInput) this.elementInput.app = this;\n\t\tthis.xr = appOptions.xr ? new appOptions.xr(this) : null;\n\t\tif (this.elementInput) this.elementInput.attachSelectEvents();\n\t\tthis._inTools = false;\n\t\tthis._skyboxAsset = null;\n\t\tthis._scriptPrefix = appOptions.scriptPrefix || '';\n\t\tif (this.enableBundles) {\n\t\t\tthis.loader.addHandler(\"bundle\", new BundleHandler(this));\n\t\t}\n\t\tappOptions.resourceHandlers.forEach(resourceHandler => {\n\t\t\tconst handler = new resourceHandler(this);\n\t\t\tthis.loader.addHandler(handler.handlerType, handler);\n\t\t});\n\t\tthis.systems = new ComponentSystemRegistry();\n\t\tappOptions.componentSystems.forEach(componentSystem => {\n\t\t\tthis.systems.add(new componentSystem(this));\n\t\t});\n\t\tthis._visibilityChangeHandler = this.onVisibilityChange.bind(this);\n\t\tif (typeof document !== 'undefined') {\n\t\t\tif (document.hidden !== undefined) {\n\t\t\t\tthis._hiddenAttr = 'hidden';\n\t\t\t\tdocument.addEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t} else if (document.mozHidden !== undefined) {\n\t\t\t\tthis._hiddenAttr = 'mozHidden';\n\t\t\t\tdocument.addEventListener('mozvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t} else if (document.msHidden !== undefined) {\n\t\t\t\tthis._hiddenAttr = 'msHidden';\n\t\t\t\tdocument.addEventListener('msvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t} else if (document.webkitHidden !== undefined) {\n\t\t\t\tthis._hiddenAttr = 'webkitHidden';\n\t\t\t\tdocument.addEventListener('webkitvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t}\n\t\t}\n\t\tthis.tick = makeTick(this);\n\t}\n\tstatic getApplication(id) {\n\t\treturn id ? AppBase._applications[id] : getApplication();\n\t}\n\t_initDefaultMaterial() {\n\t\tconst material = new StandardMaterial();\n\t\tmaterial.name = \"Default Material\";\n\t\tmaterial.shadingModel = SPECULAR_BLINN;\n\t\tsetDefaultMaterial(this.graphicsDevice, material);\n\t}\n\t_initProgramLibrary() {\n\t\tconst library = new ProgramLibrary(this.graphicsDevice, new StandardMaterial());\n\t\tsetProgramLibrary(this.graphicsDevice, library);\n\t}\n\tget soundManager() {\n\t\treturn this._soundManager;\n\t}\n\tget batcher() {\n\t\treturn this._batcher;\n\t}\n\tget fillMode() {\n\t\treturn this._fillMode;\n\t}\n\tget resolutionMode() {\n\t\treturn this._resolutionMode;\n\t}\n\tconfigure(url, callback) {\n\t\thttp.get(url, (err, response) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst props = response.application_properties;\n\t\t\tconst scenes = response.scenes;\n\t\t\tconst assets = response.assets;\n\t\t\tthis._parseApplicationProperties(props, err => {\n\t\t\t\tthis._parseScenes(scenes);\n\t\t\t\tthis._parseAssets(assets);\n\t\t\t\tif (!err) {\n\t\t\t\t\tcallback(null);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tpreload(callback) {\n\t\tthis.fire(\"preload:start\");\n\t\tconst assets = this.assets.list({\n\t\t\tpreload: true\n\t\t});\n\t\tconst progress = new Progress(assets.length);\n\t\tlet _done = false;\n\t\tconst done = () => {\n\t\t\tif (!this.graphicsDevice) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!_done && progress.done()) {\n\t\t\t\t_done = true;\n\t\t\t\tthis.fire(\"preload:end\");\n\t\t\t\tcallback();\n\t\t\t}\n\t\t};\n\t\tconst total = assets.length;\n\t\tif (progress.length) {\n\t\t\tconst onAssetLoad = asset => {\n\t\t\t\tprogress.inc();\n\t\t\t\tthis.fire('preload:progress', progress.count / total);\n\t\t\t\tif (progress.done()) done();\n\t\t\t};\n\t\t\tconst onAssetError = (err, asset) => {\n\t\t\t\tprogress.inc();\n\t\t\t\tthis.fire('preload:progress', progress.count / total);\n\t\t\t\tif (progress.done()) done();\n\t\t\t};\n\t\t\tfor (let i = 0; i < assets.length; i++) {\n\t\t\t\tif (!assets[i].loaded) {\n\t\t\t\t\tassets[i].once('load', onAssetLoad);\n\t\t\t\t\tassets[i].once('error', onAssetError);\n\t\t\t\t\tthis.assets.load(assets[i]);\n\t\t\t\t} else {\n\t\t\t\t\tprogress.inc();\n\t\t\t\t\tthis.fire(\"preload:progress\", progress.count / total);\n\t\t\t\t\tif (progress.done()) done();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tdone();\n\t\t}\n\t}\n\t_preloadScripts(sceneData, callback) {\n\t\tif (!script.legacy) {\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\tthis.systems.script.preloading = true;\n\t\tconst scripts = this._getScriptReferences(sceneData);\n\t\tconst l = scripts.length;\n\t\tconst progress = new Progress(l);\n\t\tconst regex = /^http(s)?:\\/\\//;\n\t\tif (l) {\n\t\t\tconst onLoad = (err, ScriptType) => {\n\t\t\t\tif (err) console.error(err);\n\t\t\t\tprogress.inc();\n\t\t\t\tif (progress.done()) {\n\t\t\t\t\tthis.systems.script.preloading = false;\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t};\n\t\t\tfor (let i = 0; i < l; i++) {\n\t\t\t\tlet scriptUrl = scripts[i];\n\t\t\t\tif (!regex.test(scriptUrl.toLowerCase()) && this._scriptPrefix) scriptUrl = path.join(this._scriptPrefix, scripts[i]);\n\t\t\t\tthis.loader.load(scriptUrl, 'script', onLoad);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.systems.script.preloading = false;\n\t\t\tcallback();\n\t\t}\n\t}\n\t_parseApplicationProperties(props, callback) {\n\t\tif (typeof props.maxAssetRetries === 'number' && props.maxAssetRetries > 0) {\n\t\t\tthis.loader.enableRetry(props.maxAssetRetries);\n\t\t}\n\t\tif (!props.useDevicePixelRatio) props.useDevicePixelRatio = props.use_device_pixel_ratio;\n\t\tif (!props.resolutionMode) props.resolutionMode = props.resolution_mode;\n\t\tif (!props.fillMode) props.fillMode = props.fill_mode;\n\t\tthis._width = props.width;\n\t\tthis._height = props.height;\n\t\tif (props.useDevicePixelRatio) {\n\t\t\tthis.graphicsDevice.maxPixelRatio = window.devicePixelRatio;\n\t\t}\n\t\tthis.setCanvasResolution(props.resolutionMode, this._width, this._height);\n\t\tthis.setCanvasFillMode(props.fillMode, this._width, this._height);\n\t\tif (props.layers && props.layerOrder) {\n\t\t\tconst composition = new LayerComposition(\"application\");\n\t\t\tconst layers = {};\n\t\t\tfor (const key in props.layers) {\n\t\t\t\tconst data = props.layers[key];\n\t\t\t\tdata.id = parseInt(key, 10);\n\t\t\t\tdata.enabled = data.id !== LAYERID_DEPTH;\n\t\t\t\tlayers[key] = new Layer(data);\n\t\t\t}\n\t\t\tfor (let i = 0, len = props.layerOrder.length; i < len; i++) {\n\t\t\t\tconst sublayer = props.layerOrder[i];\n\t\t\t\tconst layer = layers[sublayer.layer];\n\t\t\t\tif (!layer) continue;\n\t\t\t\tif (sublayer.transparent) {\n\t\t\t\t\tcomposition.pushTransparent(layer);\n\t\t\t\t} else {\n\t\t\t\t\tcomposition.pushOpaque(layer);\n\t\t\t\t}\n\t\t\t\tcomposition.subLayerEnabled[i] = sublayer.enabled;\n\t\t\t}\n\t\t\tthis.scene.layers = composition;\n\t\t}\n\t\tif (props.batchGroups) {\n\t\t\tconst batcher = this.batcher;\n\t\t\tif (batcher) {\n\t\t\t\tfor (let i = 0, len = props.batchGroups.length; i < len; i++) {\n\t\t\t\t\tconst grp = props.batchGroups[i];\n\t\t\t\t\tbatcher.addGroup(grp.name, grp.dynamic, grp.maxAabbSize, grp.id, grp.layers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (props.i18nAssets) {\n\t\t\tthis.i18n.assets = props.i18nAssets;\n\t\t}\n\t\tthis._loadLibraries(props.libraries, callback);\n\t}\n\t_loadLibraries(urls, callback) {\n\t\tconst len = urls.length;\n\t\tlet count = len;\n\t\tconst regex = /^http(s)?:\\/\\//;\n\t\tif (len) {\n\t\t\tconst onLoad = (err, script) => {\n\t\t\t\tcount--;\n\t\t\t\tif (err) {\n\t\t\t\t\tcallback(err);\n\t\t\t\t} else if (count === 0) {\n\t\t\t\t\tthis.onLibrariesLoaded();\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t};\n\t\t\tfor (let i = 0; i < len; ++i) {\n\t\t\t\tlet url = urls[i];\n\t\t\t\tif (!regex.test(url.toLowerCase()) && this._scriptPrefix) url = path.join(this._scriptPrefix, url);\n\t\t\t\tthis.loader.load(url, 'script', onLoad);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.onLibrariesLoaded();\n\t\t\tcallback(null);\n\t\t}\n\t}\n\t_parseScenes(scenes) {\n\t\tif (!scenes) return;\n\t\tfor (let i = 0; i < scenes.length; i++) {\n\t\t\tthis.scenes.add(scenes[i].name, scenes[i].url);\n\t\t}\n\t}\n\t_parseAssets(assets) {\n\t\tconst list = [];\n\t\tconst scriptsIndex = {};\n\t\tconst bundlesIndex = {};\n\t\tif (!script.legacy) {\n\t\t\tfor (let i = 0; i < this.scriptsOrder.length; i++) {\n\t\t\t\tconst id = this.scriptsOrder[i];\n\t\t\t\tif (!assets[id]) continue;\n\t\t\t\tscriptsIndex[id] = true;\n\t\t\t\tlist.push(assets[id]);\n\t\t\t}\n\t\t\tif (this.enableBundles) {\n\t\t\t\tfor (const id in assets) {\n\t\t\t\t\tif (assets[id].type === 'bundle') {\n\t\t\t\t\t\tbundlesIndex[id] = true;\n\t\t\t\t\t\tlist.push(assets[id]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const id in assets) {\n\t\t\t\tif (scriptsIndex[id] || bundlesIndex[id]) continue;\n\t\t\t\tlist.push(assets[id]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.enableBundles) {\n\t\t\t\tfor (const id in assets) {\n\t\t\t\t\tif (assets[id].type === 'bundle') {\n\t\t\t\t\t\tbundlesIndex[id] = true;\n\t\t\t\t\t\tlist.push(assets[id]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const id in assets) {\n\t\t\t\tif (bundlesIndex[id]) continue;\n\t\t\t\tlist.push(assets[id]);\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < list.length; i++) {\n\t\t\tconst data = list[i];\n\t\t\tconst asset = new Asset(data.name, data.type, data.file, data.data);\n\t\t\tasset.id = parseInt(data.id, 10);\n\t\t\tasset.preload = data.preload ? data.preload : false;\n\t\t\tasset.loaded = data.type === 'script' && data.data && data.data.loadingType > 0;\n\t\t\tasset.tags.add(data.tags);\n\t\t\tif (data.i18n) {\n\t\t\t\tfor (const locale in data.i18n) {\n\t\t\t\t\tasset.addLocalizedAssetId(locale, data.i18n[locale]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.assets.add(asset);\n\t\t}\n\t}\n\t_getScriptReferences(scene) {\n\t\tlet priorityScripts = [];\n\t\tif (scene.settings.priority_scripts) {\n\t\t\tpriorityScripts = scene.settings.priority_scripts;\n\t\t}\n\t\tconst _scripts = [];\n\t\tconst _index = {};\n\t\tfor (let i = 0; i < priorityScripts.length; i++) {\n\t\t\t_scripts.push(priorityScripts[i]);\n\t\t\t_index[priorityScripts[i]] = true;\n\t\t}\n\t\tconst entities = scene.entities;\n\t\tfor (const key in entities) {\n\t\t\tif (!entities[key].components.script) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst scripts = entities[key].components.script.scripts;\n\t\t\tfor (let i = 0; i < scripts.length; i++) {\n\t\t\t\tif (_index[scripts[i].url]) continue;\n\t\t\t\t_scripts.push(scripts[i].url);\n\t\t\t\t_index[scripts[i].url] = true;\n\t\t\t}\n\t\t}\n\t\treturn _scripts;\n\t}\n\tstart() {\n\t\tthis.frame = 0;\n\t\tthis.fire(\"start\", {\n\t\t\ttimestamp: now(),\n\t\t\ttarget: this\n\t\t});\n\t\tif (!this._librariesLoaded) {\n\t\t\tthis.onLibrariesLoaded();\n\t\t}\n\t\tthis.systems.fire('initialize', this.root);\n\t\tthis.fire('initialize');\n\t\tthis.systems.fire('postInitialize', this.root);\n\t\tthis.systems.fire('postPostInitialize', this.root);\n\t\tthis.fire('postinitialize');\n\t\tthis.tick();\n\t}\n\tinputUpdate(dt) {\n\t\tif (this.controller) {\n\t\t\tthis.controller.update(dt);\n\t\t}\n\t\tif (this.mouse) {\n\t\t\tthis.mouse.update();\n\t\t}\n\t\tif (this.keyboard) {\n\t\t\tthis.keyboard.update();\n\t\t}\n\t\tif (this.gamepads) {\n\t\t\tthis.gamepads.update();\n\t\t}\n\t}\n\tupdate(dt) {\n\t\tthis.frame++;\n\t\tthis.graphicsDevice.updateClientRect();\n\t\tif (script.legacy) this.systems.fire('fixedUpdate', 1.0 / 60.0);\n\t\tthis.systems.fire(this._inTools ? 'toolsUpdate' : 'update', dt);\n\t\tthis.systems.fire('animationUpdate', dt);\n\t\tthis.systems.fire('postUpdate', dt);\n\t\tthis.fire(\"update\", dt);\n\t\tthis.inputUpdate(dt);\n\t}\n\tframeStart() {\n\t\tthis.graphicsDevice.frameStart();\n\t}\n\tframeEnd() {\n\t\tthis.graphicsDevice.frameEnd();\n\t}\n\trender() {\n\t\tthis.fire('prerender');\n\t\tthis.root.syncHierarchy();\n\t\tif (this._batcher) {\n\t\t\tthis._batcher.updateAll();\n\t\t}\n\t\tthis.renderComposition(this.scene.layers);\n\t\tthis.fire('postrender');\n\t}\n\trenderComposition(layerComposition) {\n\t\tthis.renderer.buildFrameGraph(this.frameGraph, layerComposition);\n\t\tthis.frameGraph.render(this.graphicsDevice);\n\t}\n\t_fillFrameStatsBasic(now, dt, ms) {\n\t\tconst stats = this.stats.frame;\n\t\tstats.dt = dt;\n\t\tstats.ms = ms;\n\t\tif (now > stats._timeToCountFrames) {\n\t\t\tstats.fps = stats._fpsAccum;\n\t\t\tstats._fpsAccum = 0;\n\t\t\tstats._timeToCountFrames = now + 1000;\n\t\t} else {\n\t\t\tstats._fpsAccum++;\n\t\t}\n\t\tthis.stats.drawCalls.total = this.graphicsDevice._drawCallsPerFrame;\n\t\tthis.graphicsDevice._drawCallsPerFrame = 0;\n\t}\n\t_fillFrameStats() {\n\t\tlet stats = this.stats.frame;\n\t\tstats.cameras = this.renderer._camerasRendered;\n\t\tstats.materials = this.renderer._materialSwitches;\n\t\tstats.shaders = this.graphicsDevice._shaderSwitchesPerFrame;\n\t\tstats.shadowMapUpdates = this.renderer._shadowMapUpdates;\n\t\tstats.shadowMapTime = this.renderer._shadowMapTime;\n\t\tstats.depthMapTime = this.renderer._depthMapTime;\n\t\tstats.forwardTime = this.renderer._forwardTime;\n\t\tconst prims = this.graphicsDevice._primsPerFrame;\n\t\tstats.triangles = prims[PRIMITIVE_TRIANGLES] / 3 + Math.max(prims[PRIMITIVE_TRISTRIP] - 2, 0) + Math.max(prims[PRIMITIVE_TRIFAN] - 2, 0);\n\t\tstats.cullTime = this.renderer._cullTime;\n\t\tstats.sortTime = this.renderer._sortTime;\n\t\tstats.skinTime = this.renderer._skinTime;\n\t\tstats.morphTime = this.renderer._morphTime;\n\t\tstats.lightClusters = this.renderer._lightClusters;\n\t\tstats.lightClustersTime = this.renderer._lightClustersTime;\n\t\tstats.otherPrimitives = 0;\n\t\tfor (let i = 0; i < prims.length; i++) {\n\t\t\tif (i < PRIMITIVE_TRIANGLES) {\n\t\t\t\tstats.otherPrimitives += prims[i];\n\t\t\t}\n\t\t\tprims[i] = 0;\n\t\t}\n\t\tthis.renderer._camerasRendered = 0;\n\t\tthis.renderer._materialSwitches = 0;\n\t\tthis.renderer._shadowMapUpdates = 0;\n\t\tthis.graphicsDevice._shaderSwitchesPerFrame = 0;\n\t\tthis.renderer._cullTime = 0;\n\t\tthis.renderer._layerCompositionUpdateTime = 0;\n\t\tthis.renderer._lightClustersTime = 0;\n\t\tthis.renderer._sortTime = 0;\n\t\tthis.renderer._skinTime = 0;\n\t\tthis.renderer._morphTime = 0;\n\t\tthis.renderer._shadowMapTime = 0;\n\t\tthis.renderer._depthMapTime = 0;\n\t\tthis.renderer._forwardTime = 0;\n\t\tstats = this.stats.drawCalls;\n\t\tstats.forward = this.renderer._forwardDrawCalls;\n\t\tstats.culled = this.renderer._numDrawCallsCulled;\n\t\tstats.depth = 0;\n\t\tstats.shadow = this.renderer._shadowDrawCalls;\n\t\tstats.skinned = this.renderer._skinDrawCalls;\n\t\tstats.immediate = 0;\n\t\tstats.instanced = 0;\n\t\tstats.removedByInstancing = 0;\n\t\tstats.misc = stats.total - (stats.forward + stats.shadow);\n\t\tthis.renderer._depthDrawCalls = 0;\n\t\tthis.renderer._shadowDrawCalls = 0;\n\t\tthis.renderer._forwardDrawCalls = 0;\n\t\tthis.renderer._numDrawCallsCulled = 0;\n\t\tthis.renderer._skinDrawCalls = 0;\n\t\tthis.renderer._immediateRendered = 0;\n\t\tthis.renderer._instancedDrawCalls = 0;\n\t\tthis.stats.misc.renderTargetCreationTime = this.graphicsDevice.renderTargetCreationTime;\n\t\tstats = this.stats.particles;\n\t\tstats.updatesPerFrame = stats._updatesPerFrame;\n\t\tstats.frameTime = stats._frameTime;\n\t\tstats._updatesPerFrame = 0;\n\t\tstats._frameTime = 0;\n\t}\n\tsetCanvasFillMode(mode, width, height) {\n\t\tthis._fillMode = mode;\n\t\tthis.resizeCanvas(width, height);\n\t}\n\tsetCanvasResolution(mode, width, height) {\n\t\tthis._resolutionMode = mode;\n\t\tif (mode === RESOLUTION_AUTO && width === undefined) {\n\t\t\twidth = this.graphicsDevice.canvas.clientWidth;\n\t\t\theight = this.graphicsDevice.canvas.clientHeight;\n\t\t}\n\t\tthis.graphicsDevice.resizeCanvas(width, height);\n\t}\n\tisHidden() {\n\t\treturn document[this._hiddenAttr];\n\t}\n\tonVisibilityChange() {\n\t\tif (this.isHidden()) {\n\t\t\tif (this._soundManager) {\n\t\t\t\tthis._soundManager.suspend();\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._soundManager) {\n\t\t\t\tthis._soundManager.resume();\n\t\t\t}\n\t\t}\n\t}\n\tresizeCanvas(width, height) {\n\t\tif (!this._allowResize) return undefined;\n\t\tif (this.xr && this.xr.session) return undefined;\n\t\tconst windowWidth = window.innerWidth;\n\t\tconst windowHeight = window.innerHeight;\n\t\tif (this._fillMode === FILLMODE_KEEP_ASPECT) {\n\t\t\tconst r = this.graphicsDevice.canvas.width / this.graphicsDevice.canvas.height;\n\t\t\tconst winR = windowWidth / windowHeight;\n\t\t\tif (r > winR) {\n\t\t\t\twidth = windowWidth;\n\t\t\t\theight = width / r;\n\t\t\t} else {\n\t\t\t\theight = windowHeight;\n\t\t\t\twidth = height * r;\n\t\t\t}\n\t\t} else if (this._fillMode === FILLMODE_FILL_WINDOW) {\n\t\t\twidth = windowWidth;\n\t\t\theight = windowHeight;\n\t\t}\n\t\tthis.graphicsDevice.canvas.style.width = width + 'px';\n\t\tthis.graphicsDevice.canvas.style.height = height + 'px';\n\t\tthis.updateCanvasSize();\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t}\n\tupdateCanvasSize() {\n\t\tvar _this$xr;\n\t\tif (!this._allowResize || (_this$xr = this.xr) != null && _this$xr.active) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._resolutionMode === RESOLUTION_AUTO) {\n\t\t\tconst canvas = this.graphicsDevice.canvas;\n\t\t\tthis.graphicsDevice.resizeCanvas(canvas.clientWidth, canvas.clientHeight);\n\t\t}\n\t}\n\tonLibrariesLoaded() {\n\t\tthis._librariesLoaded = true;\n\t\tif (this.systems.rigidbody) {\n\t\t\tthis.systems.rigidbody.onLibraryLoaded();\n\t\t}\n\t}\n\tapplySceneSettings(settings) {\n\t\tlet asset;\n\t\tif (this.systems.rigidbody && typeof Ammo !== 'undefined') {\n\t\t\tconst gravity = settings.physics.gravity;\n\t\t\tthis.systems.rigidbody.gravity.set(gravity[0], gravity[1], gravity[2]);\n\t\t}\n\t\tthis.scene.applySettings(settings);\n\t\tif (settings.render.hasOwnProperty('skybox')) {\n\t\t\tif (settings.render.skybox) {\n\t\t\t\tasset = this.assets.get(settings.render.skybox);\n\t\t\t\tif (asset) {\n\t\t\t\t\tthis.setSkybox(asset);\n\t\t\t\t} else {\n\t\t\t\t\tthis.assets.once('add:' + settings.render.skybox, this.setSkybox, this);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setSkybox(null);\n\t\t\t}\n\t\t}\n\t}\n\tsetAreaLightLuts(ltcMat1, ltcMat2) {\n\t\tif (ltcMat1 && ltcMat2) {\n\t\t\tAreaLightLuts.set(this.graphicsDevice, ltcMat1, ltcMat2);\n\t\t}\n\t}\n\tsetSkybox(asset) {\n\t\tif (asset !== this._skyboxAsset) {\n\t\t\tconst onSkyboxRemoved = () => {\n\t\t\t\tthis.setSkybox(null);\n\t\t\t};\n\t\t\tconst onSkyboxChanged = () => {\n\t\t\t\tthis.scene.setSkybox(this._skyboxAsset ? this._skyboxAsset.resources : null);\n\t\t\t};\n\t\t\tif (this._skyboxAsset) {\n\t\t\t\tthis.assets.off('load:' + this._skyboxAsset.id, onSkyboxChanged, this);\n\t\t\t\tthis.assets.off('remove:' + this._skyboxAsset.id, onSkyboxRemoved, this);\n\t\t\t\tthis._skyboxAsset.off('change', onSkyboxChanged, this);\n\t\t\t}\n\t\t\tthis._skyboxAsset = asset;\n\t\t\tif (this._skyboxAsset) {\n\t\t\t\tthis.assets.on('load:' + this._skyboxAsset.id, onSkyboxChanged, this);\n\t\t\t\tthis.assets.once('remove:' + this._skyboxAsset.id, onSkyboxRemoved, this);\n\t\t\t\tthis._skyboxAsset.on('change', onSkyboxChanged, this);\n\t\t\t\tif (this.scene.skyboxMip === 0 && !this._skyboxAsset.loadFaces) {\n\t\t\t\t\tthis._skyboxAsset.loadFaces = true;\n\t\t\t\t}\n\t\t\t\tthis.assets.load(this._skyboxAsset);\n\t\t\t}\n\t\t\tonSkyboxChanged();\n\t\t}\n\t}\n\t_firstBake() {\n\t\tvar _this$lightmapper;\n\t\t(_this$lightmapper = this.lightmapper) == null || _this$lightmapper.bake(null, this.scene.lightmapMode);\n\t}\n\t_firstBatch() {\n\t\tvar _this$batcher;\n\t\t(_this$batcher = this.batcher) == null || _this$batcher.generate();\n\t}\n\t_processTimestamp(timestamp) {\n\t\treturn timestamp;\n\t}\n\tdrawLine(start, end, color, depthTest, layer) {\n\t\tthis.scene.drawLine(start, end, color, depthTest, layer);\n\t}\n\tdrawLines(positions, colors, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\tthis.scene.drawLines(positions, colors, depthTest, layer);\n\t}\n\tdrawLineArrays(positions, colors, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\tthis.scene.drawLineArrays(positions, colors, depthTest, layer);\n\t}\n\tdrawWireSphere(center, radius, color = Color.WHITE, segments = 20, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\tthis.scene.immediate.drawWireSphere(center, radius, color, segments, depthTest, layer);\n\t}\n\tdrawWireAlignedBox(minPoint, maxPoint, color = Color.WHITE, depthTest = true, layer = this.scene.defaultDrawLayer, mat) {\n\t\tthis.scene.immediate.drawWireAlignedBox(minPoint, maxPoint, color, depthTest, layer, mat);\n\t}\n\tdrawMeshInstance(meshInstance, layer = this.scene.defaultDrawLayer) {\n\t\tthis.scene.immediate.drawMesh(null, null, null, meshInstance, layer);\n\t}\n\tdrawMesh(mesh, material, matrix, layer = this.scene.defaultDrawLayer) {\n\t\tthis.scene.immediate.drawMesh(material, matrix, mesh, null, layer);\n\t}\n\tdrawQuad(matrix, material, layer = this.scene.defaultDrawLayer) {\n\t\tthis.scene.immediate.drawMesh(material, matrix, this.scene.immediate.getQuadMesh(), null, layer);\n\t}\n\tdrawTexture(x, y, width, height, texture, material, layer = this.scene.defaultDrawLayer, filterable = true) {\n\t\tif (filterable === false && !this.graphicsDevice.isWebGPU) return;\n\t\tconst matrix = new Mat4();\n\t\tmatrix.setTRS(new Vec3(x, y, 0.0), Quat.IDENTITY, new Vec3(width, -height, 0.0));\n\t\tif (!material) {\n\t\t\tmaterial = new Material();\n\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\tmaterial.setParameter(\"colorMap\", texture);\n\t\t\tmaterial.shader = filterable ? this.scene.immediate.getTextureShader() : this.scene.immediate.getUnfilterableTextureShader();\n\t\t\tmaterial.update();\n\t\t}\n\t\tthis.drawQuad(matrix, material, layer);\n\t}\n\tdrawDepthTexture(x, y, width, height, layer = this.scene.defaultDrawLayer) {\n\t\tconst material = new Material();\n\t\tmaterial.cull = CULLFACE_NONE;\n\t\tmaterial.shader = this.scene.immediate.getDepthTextureShader();\n\t\tmaterial.update();\n\t\tthis.drawTexture(x, y, width, height, null, material, layer);\n\t}\n\tdestroy() {\n\t\tvar _this$lightmapper2, _this$xr2, _this$xr3, _this$_soundManager;\n\t\tif (this._inFrameUpdate) {\n\t\t\tthis._destroyRequested = true;\n\t\t\treturn;\n\t\t}\n\t\tconst canvasId = this.graphicsDevice.canvas.id;\n\t\tthis.fire('destroy', this);\n\t\tthis.off('librariesloaded');\n\t\tif (typeof document !== 'undefined') {\n\t\t\tdocument.removeEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\tdocument.removeEventListener('mozvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\tdocument.removeEventListener('msvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\tdocument.removeEventListener('webkitvisibilitychange', this._visibilityChangeHandler, false);\n\t\t}\n\t\tthis._visibilityChangeHandler = null;\n\t\tthis.root.destroy();\n\t\tthis.root = null;\n\t\tif (this.mouse) {\n\t\t\tthis.mouse.off();\n\t\t\tthis.mouse.detach();\n\t\t\tthis.mouse = null;\n\t\t}\n\t\tif (this.keyboard) {\n\t\t\tthis.keyboard.off();\n\t\t\tthis.keyboard.detach();\n\t\t\tthis.keyboard = null;\n\t\t}\n\t\tif (this.touch) {\n\t\t\tthis.touch.off();\n\t\t\tthis.touch.detach();\n\t\t\tthis.touch = null;\n\t\t}\n\t\tif (this.elementInput) {\n\t\t\tthis.elementInput.detach();\n\t\t\tthis.elementInput = null;\n\t\t}\n\t\tif (this.gamepads) {\n\t\t\tthis.gamepads.destroy();\n\t\t\tthis.gamepads = null;\n\t\t}\n\t\tif (this.controller) {\n\t\t\tthis.controller = null;\n\t\t}\n\t\tthis.systems.destroy();\n\t\tif (this.scene.layers) {\n\t\t\tthis.scene.layers.destroy();\n\t\t}\n\t\tconst assets = this.assets.list();\n\t\tfor (let i = 0; i < assets.length; i++) {\n\t\t\tassets[i].unload();\n\t\t\tassets[i].off();\n\t\t}\n\t\tthis.assets.off();\n\t\tthis.bundles.destroy();\n\t\tthis.bundles = null;\n\t\tthis.i18n.destroy();\n\t\tthis.i18n = null;\n\t\tconst scriptHandler = this.loader.getHandler('script');\n\t\tscriptHandler == null || scriptHandler.clearCache();\n\t\tthis.loader.destroy();\n\t\tthis.loader = null;\n\t\tthis.scene.destroy();\n\t\tthis.scene = null;\n\t\tthis.systems = null;\n\t\tthis.context = null;\n\t\tthis.scripts.destroy();\n\t\tthis.scripts = null;\n\t\tthis.scenes.destroy();\n\t\tthis.scenes = null;\n\t\t(_this$lightmapper2 = this.lightmapper) == null || _this$lightmapper2.destroy();\n\t\tthis.lightmapper = null;\n\t\tif (this._batcher) {\n\t\t\tthis._batcher.destroy();\n\t\t\tthis._batcher = null;\n\t\t}\n\t\tthis._entityIndex = {};\n\t\tthis.defaultLayerDepth.onPreRenderOpaque = null;\n\t\tthis.defaultLayerDepth.onPostRenderOpaque = null;\n\t\tthis.defaultLayerDepth.onDisable = null;\n\t\tthis.defaultLayerDepth.onEnable = null;\n\t\tthis.defaultLayerDepth = null;\n\t\tthis.defaultLayerWorld = null;\n\t\t(_this$xr2 = this.xr) == null || _this$xr2.end();\n\t\t(_this$xr3 = this.xr) == null || _this$xr3.destroy();\n\t\tthis.renderer.destroy();\n\t\tthis.renderer = null;\n\t\tthis.graphicsDevice.destroy();\n\t\tthis.graphicsDevice = null;\n\t\tthis.tick = null;\n\t\tthis.off();\n\t\t(_this$_soundManager = this._soundManager) == null || _this$_soundManager.destroy();\n\t\tthis._soundManager = null;\n\t\tscript.app = null;\n\t\tAppBase._applications[canvasId] = null;\n\t\tif (getApplication() === this) {\n\t\t\tsetApplication(null);\n\t\t}\n\t\tAppBase.cancelTick(this);\n\t}\n\tstatic cancelTick(app) {\n\t\tif (app.frameRequestId) {\n\t\t\twindow.cancelAnimationFrame(app.frameRequestId);\n\t\t\tapp.frameRequestId = undefined;\n\t\t}\n\t}\n\tgetEntityFromIndex(guid) {\n\t\treturn this._entityIndex[guid];\n\t}\n\t_registerSceneImmediate(scene) {\n\t\tthis.on('postrender', scene.immediate.onPostRender, scene.immediate);\n\t}\n}\nAppBase._applications = {};\nconst _frameEndData = {};\nconst makeTick = function makeTick(_app) {\n\tconst application = _app;\n\treturn function (timestamp, frame) {\n\t\tvar _application$xr2;\n\t\tif (!application.graphicsDevice) return;\n\t\tif (application.frameRequestId) {\n\t\t\tvar _application$xr;\n\t\t\t(_application$xr = application.xr) == null || (_application$xr = _application$xr.session) == null || _application$xr.cancelAnimationFrame(application.frameRequestId);\n\t\t\tcancelAnimationFrame(application.frameRequestId);\n\t\t\tapplication.frameRequestId = null;\n\t\t}\n\t\tapplication._inFrameUpdate = true;\n\t\tsetApplication(application);\n\t\tapp = application;\n\t\tconst currentTime = application._processTimestamp(timestamp) || now();\n\t\tconst ms = currentTime - (application._time || currentTime);\n\t\tlet dt = ms / 1000.0;\n\t\tdt = math.clamp(dt, 0, application.maxDeltaTime);\n\t\tdt *= application.timeScale;\n\t\tapplication._time = currentTime;\n\t\tif ((_application$xr2 = application.xr) != null && _application$xr2.session) {\n\t\t\tapplication.frameRequestId = application.xr.session.requestAnimationFrame(application.tick);\n\t\t} else {\n\t\t\tapplication.frameRequestId = platform.browser || platform.worker ? requestAnimationFrame(application.tick) : null;\n\t\t}\n\t\tif (application.graphicsDevice.contextLost) return;\n\t\tapplication._fillFrameStatsBasic(currentTime, dt, ms);\n\t\tapplication.fire(\"frameupdate\", ms);\n\t\tlet shouldRenderFrame = true;\n\t\tif (frame) {\n\t\t\tvar _application$xr3;\n\t\t\tshouldRenderFrame = (_application$xr3 = application.xr) == null ? void 0 : _application$xr3.update(frame);\n\t\t\tapplication.graphicsDevice.defaultFramebuffer = frame.session.renderState.baseLayer.framebuffer;\n\t\t} else {\n\t\t\tapplication.graphicsDevice.defaultFramebuffer = null;\n\t\t}\n\t\tif (shouldRenderFrame) {\n\t\t\tapplication.update(dt);\n\t\t\tapplication.fire(\"framerender\");\n\t\t\tif (application.autoRender || application.renderNextFrame) {\n\t\t\t\tapplication.updateCanvasSize();\n\t\t\t\tapplication.frameStart();\n\t\t\t\tapplication.render();\n\t\t\t\tapplication.frameEnd();\n\t\t\t\tapplication.renderNextFrame = false;\n\t\t\t}\n\t\t\t_frameEndData.timestamp = now();\n\t\t\t_frameEndData.target = application;\n\t\t\tapplication.fire(\"frameend\", _frameEndData);\n\t\t}\n\t\tapplication._inFrameUpdate = false;\n\t\tif (application._destroyRequested) {\n\t\t\tapplication.destroy();\n\t\t}\n\t};\n};\n\nexport { AppBase, app };\n", "class AppOptions {\n\tconstructor() {\n\t\tthis.elementInput = void 0;\n\t\tthis.keyboard = void 0;\n\t\tthis.mouse = void 0;\n\t\tthis.touch = void 0;\n\t\tthis.gamepads = void 0;\n\t\tthis.scriptPrefix = void 0;\n\t\tthis.assetPrefix = void 0;\n\t\tthis.scriptsOrder = void 0;\n\t\tthis.soundManager = void 0;\n\t\tthis.graphicsDevice = void 0;\n\t\tthis.lightmapper = void 0;\n\t\tthis.batchManager = void 0;\n\t\tthis.xr = void 0;\n\t\tthis.componentSystems = [];\n\t\tthis.resourceHandlers = [];\n\t}\n}\n\nexport { AppOptions };\n", "import { EventHandler } from '../../core/event-handler.js';\n\nclass Component extends EventHandler {\n\tconstructor(system, entity) {\n\t\tsuper();\n\t\tthis.system = void 0;\n\t\tthis.entity = void 0;\n\t\tthis.system = system;\n\t\tthis.entity = entity;\n\t\tif (this.system.schema && !this._accessorsBuilt) {\n\t\t\tthis.buildAccessors(this.system.schema);\n\t\t}\n\t\tthis.on('set', function (name, oldValue, newValue) {\n\t\t\tthis.fire('set_' + name, name, oldValue, newValue);\n\t\t});\n\t\tthis.on('set_enabled', this.onSetEnabled, this);\n\t}\n\tstatic _buildAccessors(obj, schema) {\n\t\tschema.forEach(function (descriptor) {\n\t\t\tconst name = typeof descriptor === 'object' ? descriptor.name : descriptor;\n\t\t\tObject.defineProperty(obj, name, {\n\t\t\t\tget: function () {\n\t\t\t\t\treturn this.data[name];\n\t\t\t\t},\n\t\t\t\tset: function (value) {\n\t\t\t\t\tconst data = this.data;\n\t\t\t\t\tconst oldValue = data[name];\n\t\t\t\t\tdata[name] = value;\n\t\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t\t\t},\n\t\t\t\tconfigurable: true\n\t\t\t});\n\t\t});\n\t\tobj._accessorsBuilt = true;\n\t}\n\tbuildAccessors(schema) {\n\t\tComponent._buildAccessors(this, schema);\n\t}\n\tonSetEnabled(name, oldValue, newValue) {\n\t\tif (oldValue !== newValue) {\n\t\t\tif (this.entity.enabled) {\n\t\t\t\tif (newValue) {\n\t\t\t\t\tthis.onEnable();\n\t\t\t\t} else {\n\t\t\t\t\tthis.onDisable();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tonEnable() {}\n\tonDisable() {}\n\tonPostStateChange() {}\n\tget data() {\n\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\treturn record ? record.data : null;\n\t}\n\tset enabled(arg) {}\n\tget enabled() {\n\t\treturn true;\n\t}\n}\n\nexport { Component };\n", "import { EventHandler } from '../../core/event-handler.js';\nimport { Color } from '../../core/math/color.js';\nimport { Vec2 } from '../../core/math/vec2.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { Vec4 } from '../../core/math/vec4.js';\n\nclass ComponentSystem extends EventHandler {\n\tconstructor(app) {\n\t\tsuper();\n\t\tthis.app = app;\n\t\tthis.store = {};\n\t\tthis.schema = [];\n\t}\n\taddComponent(entity, data = {}) {\n\t\tconst component = new this.ComponentType(this, entity);\n\t\tconst componentData = new this.DataType();\n\t\tthis.store[entity.getGuid()] = {\n\t\t\tentity: entity,\n\t\t\tdata: componentData\n\t\t};\n\t\tentity[this.id] = component;\n\t\tentity.c[this.id] = component;\n\t\tthis.initializeComponentData(component, data, []);\n\t\tthis.fire('add', entity, component);\n\t\treturn component;\n\t}\n\tremoveComponent(entity) {\n\t\tconst record = this.store[entity.getGuid()];\n\t\tconst component = entity.c[this.id];\n\t\tthis.fire('beforeremove', entity, component);\n\t\tdelete this.store[entity.getGuid()];\n\t\tentity[this.id] = undefined;\n\t\tdelete entity.c[this.id];\n\t\tthis.fire('remove', entity, record.data);\n\t}\n\tcloneComponent(entity, clone) {\n\t\tconst src = this.store[entity.getGuid()];\n\t\treturn this.addComponent(clone, src.data);\n\t}\n\tinitializeComponentData(component, data = {}, properties) {\n\t\tfor (let i = 0, len = properties.length; i < len; i++) {\n\t\t\tconst descriptor = properties[i];\n\t\t\tlet name, type;\n\t\t\tif (typeof descriptor === 'object') {\n\t\t\t\tname = descriptor.name;\n\t\t\t\ttype = descriptor.type;\n\t\t\t} else {\n\t\t\t\tname = descriptor;\n\t\t\t\ttype = undefined;\n\t\t\t}\n\t\t\tlet value = data[name];\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (type !== undefined) {\n\t\t\t\t\tvalue = convertValue(value, type);\n\t\t\t\t}\n\t\t\t\tcomponent[name] = value;\n\t\t\t} else {\n\t\t\t\tcomponent[name] = component.data[name];\n\t\t\t}\n\t\t}\n\t\tif (component.enabled && component.entity.enabled) {\n\t\t\tcomponent.onEnable();\n\t\t}\n\t}\n\tgetPropertiesOfType(type) {\n\t\tconst matchingProperties = [];\n\t\tconst schema = this.schema || [];\n\t\tschema.forEach(function (descriptor) {\n\t\t\tif (descriptor && typeof descriptor === 'object' && descriptor.type === type) {\n\t\t\t\tmatchingProperties.push(descriptor);\n\t\t\t}\n\t\t});\n\t\treturn matchingProperties;\n\t}\n\tdestroy() {\n\t\tthis.off();\n\t}\n}\nfunction convertValue(value, type) {\n\tif (!value) {\n\t\treturn value;\n\t}\n\tswitch (type) {\n\t\tcase 'rgb':\n\t\t\tif (value instanceof Color) {\n\t\t\t\treturn value.clone();\n\t\t\t}\n\t\t\treturn new Color(value[0], value[1], value[2]);\n\t\tcase 'rgba':\n\t\t\tif (value instanceof Color) {\n\t\t\t\treturn value.clone();\n\t\t\t}\n\t\t\treturn new Color(value[0], value[1], value[2], value[3]);\n\t\tcase 'vec2':\n\t\t\tif (value instanceof Vec2) {\n\t\t\t\treturn value.clone();\n\t\t\t}\n\t\t\treturn new Vec2(value[0], value[1]);\n\t\tcase 'vec3':\n\t\t\tif (value instanceof Vec3) {\n\t\t\t\treturn value.clone();\n\t\t\t}\n\t\t\treturn new Vec3(value[0], value[1], value[2]);\n\t\tcase 'vec4':\n\t\t\tif (value instanceof Vec4) {\n\t\t\t\treturn value.clone();\n\t\t\t}\n\t\t\treturn new Vec4(value[0], value[1], value[2], value[3]);\n\t\tcase 'boolean':\n\t\tcase 'number':\n\t\tcase 'string':\n\t\t\treturn value;\n\t\tcase 'entity':\n\t\t\treturn value;\n\t\tdefault:\n\t\t\tthrow new Error('Could not convert unhandled type: ' + type);\n\t}\n}\n\nexport { ComponentSystem };\n", "const INTERPOLATION_STEP = 0;\nconst INTERPOLATION_LINEAR = 1;\nconst INTERPOLATION_CUBIC = 2;\n\nexport { INTERPOLATION_CUBIC, INTERPOLATION_LINEAR, INTERPOLATION_STEP };\n", "import { math } from '../../../core/math/math.js';\nimport { INTERPOLATION_STEP, INTERPOLATION_CUBIC, INTERPOLATION_LINEAR } from '../constants.js';\n\nclass AnimCache {\n\tconstructor() {\n\t\tthis._left = Infinity;\n\t\tthis._right = -Infinity;\n\t\tthis._len = 0;\n\t\tthis._recip = 0;\n\t\tthis._p0 = 0;\n\t\tthis._p1 = 0;\n\t\tthis._t = 0;\n\t\tthis._hermite = {\n\t\t\tvalid: false,\n\t\t\tp0: 0,\n\t\t\tm0: 0,\n\t\t\tp1: 0,\n\t\t\tm1: 0\n\t\t};\n\t}\n\tupdate(time, input) {\n\t\tif (time < this._left || time >= this._right) {\n\t\t\tconst len = input.length;\n\t\t\tif (!len) {\n\t\t\t\tthis._left = -Infinity;\n\t\t\t\tthis._right = Infinity;\n\t\t\t\tthis._len = 0;\n\t\t\t\tthis._recip = 0;\n\t\t\t\tthis._p0 = this._p1 = 0;\n\t\t\t} else {\n\t\t\t\tif (time < input[0]) {\n\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\tthis._right = input[0];\n\t\t\t\t\tthis._len = 0;\n\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\tthis._p0 = this._p1 = 0;\n\t\t\t\t} else if (time >= input[len - 1]) {\n\t\t\t\t\tthis._left = input[len - 1];\n\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\tthis._len = 0;\n\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\tthis._p0 = this._p1 = len - 1;\n\t\t\t\t} else {\n\t\t\t\t\tconst index = this._findKey(time, input);\n\t\t\t\t\tthis._left = input[index];\n\t\t\t\t\tthis._right = input[index + 1];\n\t\t\t\t\tthis._len = this._right - this._left;\n\t\t\t\t\tconst diff = 1.0 / this._len;\n\t\t\t\t\tthis._recip = isFinite(diff) ? diff : 0;\n\t\t\t\t\tthis._p0 = index;\n\t\t\t\t\tthis._p1 = index + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._t = this._recip === 0 ? 0 : (time - this._left) * this._recip;\n\t\tthis._hermite.valid = false;\n\t}\n\t_findKey(time, input) {\n\t\tlet index = 0;\n\t\twhile (time >= input[index + 1]) {\n\t\t\tindex++;\n\t\t}\n\t\treturn index;\n\t}\n\teval(result, interpolation, output) {\n\t\tconst data = output._data;\n\t\tconst comp = output._components;\n\t\tconst idx0 = this._p0 * comp;\n\t\tif (interpolation === INTERPOLATION_STEP) {\n\t\t\tfor (let i = 0; i < comp; ++i) {\n\t\t\t\tresult[i] = data[idx0 + i];\n\t\t\t}\n\t\t} else {\n\t\t\tconst t = this._t;\n\t\t\tconst idx1 = this._p1 * comp;\n\t\t\tswitch (interpolation) {\n\t\t\t\tcase INTERPOLATION_LINEAR:\n\t\t\t\t\tfor (let i = 0; i < comp; ++i) {\n\t\t\t\t\t\tresult[i] = math.lerp(data[idx0 + i], data[idx1 + i], t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase INTERPOLATION_CUBIC:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst hermite = this._hermite;\n\t\t\t\t\t\tif (!hermite.valid) {\n\t\t\t\t\t\t\tconst t2 = t * t;\n\t\t\t\t\t\t\tconst twot = t + t;\n\t\t\t\t\t\t\tconst omt = 1 - t;\n\t\t\t\t\t\t\tconst omt2 = omt * omt;\n\t\t\t\t\t\t\thermite.valid = true;\n\t\t\t\t\t\t\thermite.p0 = (1 + twot) * omt2;\n\t\t\t\t\t\t\thermite.m0 = t * omt2;\n\t\t\t\t\t\t\thermite.p1 = t2 * (3 - twot);\n\t\t\t\t\t\t\thermite.m1 = t2 * (t - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst p0 = (this._p0 * 3 + 1) * comp;\n\t\t\t\t\t\tconst m0 = (this._p0 * 3 + 2) * comp;\n\t\t\t\t\t\tconst p1 = (this._p1 * 3 + 1) * comp;\n\t\t\t\t\t\tconst m1 = (this._p1 * 3 + 0) * comp;\n\t\t\t\t\t\tfor (let i = 0; i < comp; ++i) {\n\t\t\t\t\t\t\tresult[i] = hermite.p0 * data[p0 + i] + hermite.m0 * data[m0 + i] * this._len + hermite.p1 * data[p1 + i] + hermite.m1 * data[m1 + i] * this._len;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { AnimCache };\n", "import { AnimCache } from './anim-cache.js';\n\nclass AnimSnapshot {\n\tconstructor(animTrack) {\n\t\tthis._name = animTrack.name + 'Snapshot';\n\t\tthis._time = -1;\n\t\tthis._cache = [];\n\t\tthis._results = [];\n\t\tfor (let i = 0; i < animTrack._inputs.length; ++i) {\n\t\t\tthis._cache[i] = new AnimCache();\n\t\t}\n\t\tconst curves = animTrack._curves;\n\t\tconst outputs = animTrack._outputs;\n\t\tfor (let i = 0; i < curves.length; ++i) {\n\t\t\tconst curve = curves[i];\n\t\t\tconst output = outputs[curve._output];\n\t\t\tconst storage = [];\n\t\t\tfor (let j = 0; j < output._components; ++j) {\n\t\t\t\tstorage[j] = 0;\n\t\t\t}\n\t\t\tthis._results[i] = storage;\n\t\t}\n\t}\n}\n\nexport { AnimSnapshot };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { AnimSnapshot } from './anim-snapshot.js';\n\nclass AnimClip {\n\tconstructor(track, time, speed, playing, loop, eventHandler) {\n\t\tthis._name = track.name;\n\t\tthis._track = track;\n\t\tthis._snapshot = new AnimSnapshot(track);\n\t\tthis._playing = playing;\n\t\tthis._time = time;\n\t\tthis._speed = speed;\n\t\tthis._loop = loop;\n\t\tthis._blendWeight = 1.0;\n\t\tthis._blendOrder = 0.0;\n\t\tthis._eventHandler = eventHandler;\n\t\tthis.alignCursorToCurrentTime();\n\t}\n\tset name(name) {\n\t\tthis._name = name;\n\t}\n\tget name() {\n\t\treturn this._name;\n\t}\n\tset track(track) {\n\t\tthis._track = track;\n\t\tthis._snapshot = new AnimSnapshot(track);\n\t}\n\tget track() {\n\t\treturn this._track;\n\t}\n\tget snapshot() {\n\t\treturn this._snapshot;\n\t}\n\tset time(time) {\n\t\tthis._time = time;\n\t\tthis.alignCursorToCurrentTime();\n\t}\n\tget time() {\n\t\treturn this._time;\n\t}\n\tset speed(speed) {\n\t\tconst signChanged = Math.sign(speed) !== Math.sign(this._speed);\n\t\tthis._speed = speed;\n\t\tif (signChanged) {\n\t\t\tthis.alignCursorToCurrentTime();\n\t\t}\n\t}\n\tget speed() {\n\t\treturn this._speed;\n\t}\n\tset loop(loop) {\n\t\tthis._loop = loop;\n\t}\n\tget loop() {\n\t\treturn this._loop;\n\t}\n\tset blendWeight(blendWeight) {\n\t\tthis._blendWeight = blendWeight;\n\t}\n\tget blendWeight() {\n\t\treturn this._blendWeight;\n\t}\n\tset blendOrder(blendOrder) {\n\t\tthis._blendOrder = blendOrder;\n\t}\n\tget blendOrder() {\n\t\treturn this._blendOrder;\n\t}\n\tset eventCursor(value) {\n\t\tthis._eventCursor = value;\n\t}\n\tget eventCursor() {\n\t\treturn this._eventCursor;\n\t}\n\tget eventCursorEnd() {\n\t\treturn this.isReverse ? 0 : this._track.events.length - 1;\n\t}\n\tget nextEvent() {\n\t\treturn this._track.events[this._eventCursor];\n\t}\n\tget isReverse() {\n\t\treturn this._speed < 0;\n\t}\n\tnextEventAheadOfTime(time) {\n\t\tif (!this.nextEvent) return false;\n\t\treturn this.isReverse ? this.nextEvent.time <= time : this.nextEvent.time >= time;\n\t}\n\tnextEventBehindTime(time) {\n\t\tif (!this.nextEvent) return false;\n\t\tif (time === this.track.duration) {\n\t\t\treturn this.isReverse ? this.nextEvent.time >= time : this.nextEvent.time <= time;\n\t\t}\n\t\treturn this.isReverse ? this.nextEvent.time > time : this.nextEvent.time < time;\n\t}\n\tresetEventCursor() {\n\t\tthis._eventCursor = this.isReverse ? this._track.events.length - 1 : 0;\n\t}\n\tmoveEventCursor() {\n\t\tthis._eventCursor += this.isReverse ? -1 : 1;\n\t\tif (this._eventCursor >= this.track.events.length) {\n\t\t\tthis._eventCursor = 0;\n\t\t} else if (this._eventCursor < 0) {\n\t\t\tthis._eventCursor = this.track.events.length - 1;\n\t\t}\n\t}\n\tclipFrameTime(frameEndTime) {\n\t\tconst eventFrame = AnimClip.eventFrame;\n\t\teventFrame.start = 0;\n\t\teventFrame.end = frameEndTime;\n\t\teventFrame.residual = 0;\n\t\tif (this.isReverse) {\n\t\t\tif (frameEndTime < 0) {\n\t\t\t\teventFrame.start = this.track.duration;\n\t\t\t\teventFrame.end = 0;\n\t\t\t\teventFrame.residual = frameEndTime + this.track.duration;\n\t\t\t}\n\t\t} else {\n\t\t\tif (frameEndTime > this.track.duration) {\n\t\t\t\teventFrame.start = 0;\n\t\t\t\teventFrame.end = this.track.duration;\n\t\t\t\teventFrame.residual = frameEndTime - this.track.duration;\n\t\t\t}\n\t\t}\n\t}\n\talignCursorToCurrentTime() {\n\t\tthis.resetEventCursor();\n\t\twhile (this.nextEventBehindTime(this._time) && this._eventCursor !== this.eventCursorEnd) {\n\t\t\tthis.moveEventCursor();\n\t\t}\n\t}\n\tfireNextEvent() {\n\t\tthis._eventHandler.fire(this.nextEvent.name, _extends({\n\t\t\ttrack: this.track\n\t\t}, this.nextEvent));\n\t\tthis.moveEventCursor();\n\t}\n\tfireNextEventInFrame(frameStartTime, frameEndTime) {\n\t\tif (this.nextEventAheadOfTime(frameStartTime) && this.nextEventBehindTime(frameEndTime)) {\n\t\t\tthis.fireNextEvent();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tactiveEventsForFrame(frameStartTime, frameEndTime) {\n\t\tconst eventFrame = AnimClip.eventFrame;\n\t\tthis.clipFrameTime(frameEndTime);\n\t\tconst initialCursor = this.eventCursor;\n\t\twhile (this.fireNextEventInFrame(frameStartTime, eventFrame.end)) {\n\t\t\tif (initialCursor === this.eventCursor) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (this.loop && Math.abs(eventFrame.residual) > 0) {\n\t\t\tthis.activeEventsForFrame(eventFrame.start, eventFrame.residual);\n\t\t}\n\t}\n\tprogressForTime(time) {\n\t\treturn time * this._speed / this._track.duration;\n\t}\n\t_update(deltaTime) {\n\t\tif (this._playing) {\n\t\t\tlet time = this._time;\n\t\t\tconst duration = this._track.duration;\n\t\t\tconst speed = this._speed;\n\t\t\tconst loop = this._loop;\n\t\t\tif (this._track.events.length > 0 && duration > 0) {\n\t\t\t\tthis.activeEventsForFrame(time, time + speed * deltaTime);\n\t\t\t}\n\t\t\ttime += speed * deltaTime;\n\t\t\tif (speed >= 0) {\n\t\t\t\tif (time > duration) {\n\t\t\t\t\tif (loop) {\n\t\t\t\t\t\ttime = time % duration || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttime = this._track.duration;\n\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (time < 0) {\n\t\t\t\t\tif (loop) {\n\t\t\t\t\t\ttime = duration + (time % duration || 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttime = 0;\n\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._time = time;\n\t\t}\n\t\tif (this._time !== this._snapshot._time) {\n\t\t\tthis._track.eval(this._time, this._snapshot);\n\t\t}\n\t}\n\tplay() {\n\t\tthis._playing = true;\n\t\tthis._time = 0;\n\t}\n\tstop() {\n\t\tthis._playing = false;\n\t\tthis._time = 0;\n\t}\n\tpause() {\n\t\tthis._playing = false;\n\t}\n\tresume() {\n\t\tthis._playing = true;\n\t}\n\treset() {\n\t\tthis._time = 0;\n\t}\n}\nAnimClip.eventFrame = {\n\tstart: 0,\n\tend: 0,\n\tresidual: 0\n};\n\nexport { AnimClip };\n", "const ANIM_INTERRUPTION_NONE = 'NONE';\nconst ANIM_INTERRUPTION_PREV = 'PREV_STATE';\nconst ANIM_INTERRUPTION_NEXT = 'NEXT_STATE';\nconst ANIM_INTERRUPTION_PREV_NEXT = 'PREV_STATE_NEXT_STATE';\nconst ANIM_INTERRUPTION_NEXT_PREV = 'NEXT_STATE_PREV_STATE';\nconst ANIM_GREATER_THAN = 'GREATER_THAN';\nconst ANIM_LESS_THAN = 'LESS_THAN';\nconst ANIM_GREATER_THAN_EQUAL_TO = 'GREATER_THAN_EQUAL_TO';\nconst ANIM_LESS_THAN_EQUAL_TO = 'LESS_THAN_EQUAL_TO';\nconst ANIM_EQUAL_TO = 'EQUAL_TO';\nconst ANIM_NOT_EQUAL_TO = 'NOT_EQUAL_TO';\nconst ANIM_PARAMETER_INTEGER = 'INTEGER';\nconst ANIM_PARAMETER_FLOAT = 'FLOAT';\nconst ANIM_PARAMETER_BOOLEAN = 'BOOLEAN';\nconst ANIM_PARAMETER_TRIGGER = 'TRIGGER';\nconst ANIM_BLEND_1D = '1D';\nconst ANIM_BLEND_2D_DIRECTIONAL = '2D_DIRECTIONAL';\nconst ANIM_BLEND_2D_CARTESIAN = '2D_CARTESIAN';\nconst ANIM_BLEND_DIRECT = 'DIRECT';\nconst ANIM_STATE_START = 'START';\nconst ANIM_STATE_END = 'END';\nconst ANIM_STATE_ANY = 'ANY';\nconst ANIM_CONTROL_STATES = [ANIM_STATE_START, ANIM_STATE_END, ANIM_STATE_ANY];\nconst ANIM_LAYER_OVERWRITE = 'OVERWRITE';\nconst ANIM_LAYER_ADDITIVE = 'ADDITIVE';\n\nexport { ANIM_BLEND_1D, ANIM_BLEND_2D_CARTESIAN, ANIM_BLEND_2D_DIRECTIONAL, ANIM_BLEND_DIRECT, ANIM_CONTROL_STATES, ANIM_EQUAL_TO, ANIM_GREATER_THAN, ANIM_GREATER_THAN_EQUAL_TO, ANIM_INTERRUPTION_NEXT, ANIM_INTERRUPTION_NEXT_PREV, ANIM_INTERRUPTION_NONE, ANIM_INTERRUPTION_PREV, ANIM_INTERRUPTION_PREV_NEXT, ANIM_LAYER_ADDITIVE, ANIM_LAYER_OVERWRITE, ANIM_LESS_THAN, ANIM_LESS_THAN_EQUAL_TO, ANIM_NOT_EQUAL_TO, ANIM_PARAMETER_BOOLEAN, ANIM_PARAMETER_FLOAT, ANIM_PARAMETER_INTEGER, ANIM_PARAMETER_TRIGGER, ANIM_STATE_ANY, ANIM_STATE_END, ANIM_STATE_START };\n", "class AnimBlend {\n\tstatic dot(a, b) {\n\t\tconst len = a.length;\n\t\tlet result = 0;\n\t\tfor (let i = 0; i < len; ++i) {\n\t\t\tresult += a[i] * b[i];\n\t\t}\n\t\treturn result;\n\t}\n\tstatic normalize(a) {\n\t\tlet l = AnimBlend.dot(a, a);\n\t\tif (l > 0) {\n\t\t\tl = 1.0 / Math.sqrt(l);\n\t\t\tconst len = a.length;\n\t\t\tfor (let i = 0; i < len; ++i) {\n\t\t\t\ta[i] *= l;\n\t\t\t}\n\t\t}\n\t}\n\tstatic set(a, b, type) {\n\t\tconst len = a.length;\n\t\tif (type === 'quaternion') {\n\t\t\tlet l = AnimBlend.dot(b, b);\n\t\t\tif (l > 0) {\n\t\t\t\tl = 1.0 / Math.sqrt(l);\n\t\t\t}\n\t\t\tfor (let i = 0; i < len; ++i) {\n\t\t\t\ta[i] = b[i] * l;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < len; ++i) {\n\t\t\t\ta[i] = b[i];\n\t\t\t}\n\t\t}\n\t}\n\tstatic blendVec(a, b, t, additive) {\n\t\tconst it = additive ? 1.0 : 1.0 - t;\n\t\tconst len = a.length;\n\t\tfor (let i = 0; i < len; ++i) {\n\t\t\ta[i] = a[i] * it + b[i] * t;\n\t\t}\n\t}\n\tstatic blendQuat(a, b, t, additive) {\n\t\tconst len = a.length;\n\t\tconst it = additive ? 1.0 : 1.0 - t;\n\t\tif (AnimBlend.dot(a, b) < 0) {\n\t\t\tt = -t;\n\t\t}\n\t\tfor (let i = 0; i < len; ++i) {\n\t\t\ta[i] = a[i] * it + b[i] * t;\n\t\t}\n\t\tif (!additive) {\n\t\t\tAnimBlend.normalize(a);\n\t\t}\n\t}\n\tstatic blend(a, b, t, type, additive) {\n\t\tif (type === 'quaternion') {\n\t\t\tAnimBlend.blendQuat(a, b, t, additive);\n\t\t} else {\n\t\t\tAnimBlend.blendVec(a, b, t, additive);\n\t\t}\n\t}\n\tstatic stableSort(a, lessFunc) {\n\t\tconst len = a.length;\n\t\tfor (let i = 0; i < len - 1; ++i) {\n\t\t\tfor (let j = i + 1; j < len; ++j) {\n\t\t\t\tif (lessFunc(a[j], a[i])) {\n\t\t\t\t\tconst tmp = a[i];\n\t\t\t\t\ta[i] = a[j];\n\t\t\t\t\ta[j] = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { AnimBlend };\n", "import { Quat } from '../../../core/math/quat.js';\nimport { ANIM_LAYER_OVERWRITE, ANIM_LAYER_ADDITIVE } from '../controller/constants.js';\nimport { AnimBlend } from './anim-blend.js';\nimport { math } from '../../../core/math/math.js';\n\nclass AnimTargetValue {\n\tconstructor(component, type) {\n\t\tthis._component = component;\n\t\tthis.mask = new Int8Array(component.layers.length);\n\t\tthis.weights = new Float32Array(component.layers.length);\n\t\tthis.totalWeight = 0;\n\t\tthis.counter = 0;\n\t\tthis.layerCounter = 0;\n\t\tthis.valueType = type;\n\t\tthis.dirty = true;\n\t\tthis.value = type === AnimTargetValue.TYPE_QUAT ? [0, 0, 0, 1] : [0, 0, 0];\n\t\tthis.baseValue = null;\n\t\tthis.setter = null;\n\t}\n\tget _normalizeWeights() {\n\t\treturn this._component.normalizeWeights;\n\t}\n\tgetWeight(index) {\n\t\tif (this.dirty) this.updateWeights();\n\t\tif (this._normalizeWeights && this.totalWeight === 0 || !this.mask[index]) {\n\t\t\treturn 0;\n\t\t} else if (this._normalizeWeights) {\n\t\t\treturn this.weights[index] / this.totalWeight;\n\t\t}\n\t\treturn math.clamp(this.weights[index], 0, 1);\n\t}\n\t_layerBlendType(index) {\n\t\treturn this._component.layers[index].blendType;\n\t}\n\tsetMask(index, value) {\n\t\tthis.mask[index] = value;\n\t\tif (this._normalizeWeights) {\n\t\t\tif (this._component.layers[index].blendType === ANIM_LAYER_OVERWRITE) {\n\t\t\t\tthis.mask = this.mask.fill(0, 0, index);\n\t\t\t}\n\t\t\tthis.dirty = true;\n\t\t}\n\t}\n\tupdateWeights() {\n\t\tthis.totalWeight = 0;\n\t\tfor (let i = 0; i < this.weights.length; i++) {\n\t\t\tthis.weights[i] = this._component.layers[i].weight;\n\t\t\tthis.totalWeight += this.mask[i] * this.weights[i];\n\t\t}\n\t\tthis.dirty = false;\n\t}\n\tupdateValue(index, value) {\n\t\tif (this.counter === 0) {\n\t\t\tAnimBlend.set(this.value, AnimTargetValue.IDENTITY_QUAT_ARR, this.valueType);\n\t\t\tif (!this._normalizeWeights) {\n\t\t\t\tAnimBlend.blend(this.value, this.baseValue, 1, this.valueType);\n\t\t\t}\n\t\t}\n\t\tif (!this.mask[index] || this.getWeight(index) === 0) return;\n\t\tif (this._layerBlendType(index) === ANIM_LAYER_ADDITIVE && !this._normalizeWeights) {\n\t\t\tif (this.valueType === AnimTargetValue.TYPE_QUAT) {\n\t\t\t\tconst v = AnimTargetValue.q1.set(this.value[0], this.value[1], this.value[2], this.value[3]);\n\t\t\t\tconst aV1 = AnimTargetValue.q2.set(this.baseValue[0], this.baseValue[1], this.baseValue[2], this.baseValue[3]);\n\t\t\t\tconst aV2 = AnimTargetValue.q3.set(value[0], value[1], value[2], value[3]);\n\t\t\t\tconst aV = aV1.invert().mul(aV2);\n\t\t\t\taV.slerp(Quat.IDENTITY, aV, this.getWeight(index));\n\t\t\t\tv.mul(aV);\n\t\t\t\tAnimTargetValue.quatArr[0] = v.x;\n\t\t\t\tAnimTargetValue.quatArr[1] = v.y;\n\t\t\t\tAnimTargetValue.quatArr[2] = v.z;\n\t\t\t\tAnimTargetValue.quatArr[3] = v.w;\n\t\t\t\tAnimBlend.set(this.value, AnimTargetValue.quatArr, this.valueType);\n\t\t\t} else {\n\t\t\t\tAnimTargetValue.vecArr[0] = value[0] - this.baseValue[0];\n\t\t\t\tAnimTargetValue.vecArr[1] = value[1] - this.baseValue[1];\n\t\t\t\tAnimTargetValue.vecArr[2] = value[2] - this.baseValue[2];\n\t\t\t\tAnimBlend.blend(this.value, AnimTargetValue.vecArr, this.getWeight(index), this.valueType, true);\n\t\t\t}\n\t\t} else {\n\t\t\tAnimBlend.blend(this.value, value, this.getWeight(index), this.valueType);\n\t\t}\n\t\tif (this.setter) this.setter(this.value);\n\t}\n\tunbind() {\n\t\tif (this.setter) {\n\t\t\tthis.setter(this.baseValue);\n\t\t}\n\t}\n}\nAnimTargetValue.TYPE_QUAT = 'quaternion';\nAnimTargetValue.TYPE_VEC3 = 'vector3';\nAnimTargetValue.q1 = new Quat();\nAnimTargetValue.q2 = new Quat();\nAnimTargetValue.q3 = new Quat();\nAnimTargetValue.quatArr = [0, 0, 0, 1];\nAnimTargetValue.vecArr = [0, 0, 0];\nAnimTargetValue.IDENTITY_QUAT_ARR = [0, 0, 0, 1];\n\nexport { AnimTargetValue };\n", "import { AnimTargetValue } from './anim-target-value.js';\nimport { AnimBlend } from './anim-blend.js';\n\nclass AnimEvaluator {\n\tconstructor(binder) {\n\t\tthis._binder = binder;\n\t\tthis._clips = [];\n\t\tthis._inputs = [];\n\t\tthis._outputs = [];\n\t\tthis._targets = {};\n\t}\n\tget clips() {\n\t\treturn this._clips;\n\t}\n\taddClip(clip) {\n\t\tconst targets = this._targets;\n\t\tconst binder = this._binder;\n\t\tconst curves = clip.track.curves;\n\t\tconst snapshot = clip.snapshot;\n\t\tconst inputs = [];\n\t\tconst outputs = [];\n\t\tfor (let i = 0; i < curves.length; ++i) {\n\t\t\tconst curve = curves[i];\n\t\t\tconst paths = curve.paths;\n\t\t\tfor (let j = 0; j < paths.length; ++j) {\n\t\t\t\tconst path = paths[j];\n\t\t\t\tconst resolved = binder.resolve(path);\n\t\t\t\tlet target = targets[resolved && resolved.targetPath || null];\n\t\t\t\tif (!target && resolved) {\n\t\t\t\t\ttarget = {\n\t\t\t\t\t\ttarget: resolved,\n\t\t\t\t\t\tvalue: [],\n\t\t\t\t\t\tcurves: 0,\n\t\t\t\t\t\tblendCounter: 0\n\t\t\t\t\t};\n\t\t\t\t\tfor (let k = 0; k < target.target.components; ++k) {\n\t\t\t\t\t\ttarget.value.push(0);\n\t\t\t\t\t}\n\t\t\t\t\ttargets[resolved.targetPath] = target;\n\t\t\t\t\tif (binder.animComponent) {\n\t\t\t\t\t\tif (!binder.animComponent.targets[resolved.targetPath]) {\n\t\t\t\t\t\t\tlet type;\n\t\t\t\t\t\t\tif (resolved.targetPath.substring(resolved.targetPath.length - 13) === 'localRotation') {\n\t\t\t\t\t\t\t\ttype = AnimTargetValue.TYPE_QUAT;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttype = AnimTargetValue.TYPE_VEC3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath] = new AnimTargetValue(binder.animComponent, type);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath].layerCounter++;\n\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath].setMask(binder.layerIndex, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (target) {\n\t\t\t\t\ttarget.curves++;\n\t\t\t\t\tinputs.push(snapshot._results[i]);\n\t\t\t\t\toutputs.push(target);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._clips.push(clip);\n\t\tthis._inputs.push(inputs);\n\t\tthis._outputs.push(outputs);\n\t}\n\tremoveClip(index) {\n\t\tconst targets = this._targets;\n\t\tconst binder = this._binder;\n\t\tconst clips = this._clips;\n\t\tconst clip = clips[index];\n\t\tconst curves = clip.track.curves;\n\t\tfor (let i = 0; i < curves.length; ++i) {\n\t\t\tconst curve = curves[i];\n\t\t\tconst paths = curve.paths;\n\t\t\tfor (let j = 0; j < paths.length; ++j) {\n\t\t\t\tconst path = paths[j];\n\t\t\t\tconst target = this._binder.resolve(path);\n\t\t\t\tif (target) {\n\t\t\t\t\ttarget.curves--;\n\t\t\t\t\tif (target.curves === 0) {\n\t\t\t\t\t\tbinder.unresolve(path);\n\t\t\t\t\t\tdelete targets[target.targetPath];\n\t\t\t\t\t\tif (binder.animComponent) {\n\t\t\t\t\t\t\tbinder.animComponent.targets[target.targetPath].layerCounter--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tclips.splice(index, 1);\n\t\tthis._inputs.splice(index, 1);\n\t\tthis._outputs.splice(index, 1);\n\t}\n\tremoveClips() {\n\t\twhile (this._clips.length > 0) {\n\t\t\tthis.removeClip(0);\n\t\t}\n\t}\n\tupdateClipTrack(name, animTrack) {\n\t\tthis._clips.forEach(clip => {\n\t\t\tif (clip.name.includes(name)) {\n\t\t\t\tclip.track = animTrack;\n\t\t\t}\n\t\t});\n\t\tthis.rebind();\n\t}\n\tfindClip(name) {\n\t\tconst clips = this._clips;\n\t\tfor (let i = 0; i < clips.length; ++i) {\n\t\t\tconst clip = clips[i];\n\t\t\tif (clip.name === name) {\n\t\t\t\treturn clip;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\trebind() {\n\t\tthis._binder.rebind();\n\t\tthis._targets = {};\n\t\tconst clips = [...this.clips];\n\t\tthis.removeClips();\n\t\tclips.forEach(clip => {\n\t\t\tthis.addClip(clip);\n\t\t});\n\t}\n\tassignMask(mask) {\n\t\treturn this._binder.assignMask(mask);\n\t}\n\tupdate(deltaTime, outputAnimation = true) {\n\t\tconst clips = this._clips;\n\t\tconst order = clips.map(function (c, i) {\n\t\t\treturn i;\n\t\t});\n\t\tAnimBlend.stableSort(order, function (a, b) {\n\t\t\treturn clips[a].blendOrder < clips[b].blendOrder;\n\t\t});\n\t\tfor (let i = 0; i < order.length; ++i) {\n\t\t\tconst index = order[i];\n\t\t\tconst clip = clips[index];\n\t\t\tconst inputs = this._inputs[index];\n\t\t\tconst outputs = this._outputs[index];\n\t\t\tconst blendWeight = clip.blendWeight;\n\t\t\tif (blendWeight > 0.0) {\n\t\t\t\tclip._update(deltaTime);\n\t\t\t}\n\t\t\tif (!outputAnimation) break;\n\t\t\tlet input;\n\t\t\tlet output;\n\t\t\tlet value;\n\t\t\tif (blendWeight >= 1.0) {\n\t\t\t\tfor (let j = 0; j < inputs.length; ++j) {\n\t\t\t\t\tinput = inputs[j];\n\t\t\t\t\toutput = outputs[j];\n\t\t\t\t\tvalue = output.value;\n\t\t\t\t\tAnimBlend.set(value, input, output.target.type);\n\t\t\t\t\toutput.blendCounter++;\n\t\t\t\t}\n\t\t\t} else if (blendWeight > 0.0) {\n\t\t\t\tfor (let j = 0; j < inputs.length; ++j) {\n\t\t\t\t\tinput = inputs[j];\n\t\t\t\t\toutput = outputs[j];\n\t\t\t\t\tvalue = output.value;\n\t\t\t\t\tif (output.blendCounter === 0) {\n\t\t\t\t\t\tAnimBlend.set(value, input, output.target.type);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tAnimBlend.blend(value, input, blendWeight, output.target.type);\n\t\t\t\t\t}\n\t\t\t\t\toutput.blendCounter++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst targets = this._targets;\n\t\tconst binder = this._binder;\n\t\tfor (const path in targets) {\n\t\t\tif (targets.hasOwnProperty(path)) {\n\t\t\t\tconst target = targets[path];\n\t\t\t\tif (binder.animComponent && target.target.isTransform) {\n\t\t\t\t\tconst animTarget = binder.animComponent.targets[path];\n\t\t\t\t\tif (animTarget.counter === animTarget.layerCounter) {\n\t\t\t\t\t\tanimTarget.counter = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (!animTarget.path) {\n\t\t\t\t\t\tanimTarget.path = path;\n\t\t\t\t\t\tanimTarget.baseValue = target.target.get();\n\t\t\t\t\t\tanimTarget.setter = target.target.set;\n\t\t\t\t\t}\n\t\t\t\t\tanimTarget.updateValue(binder.layerIndex, target.value);\n\t\t\t\t\tanimTarget.counter++;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.target.set(target.value);\n\t\t\t\t}\n\t\t\t\ttarget.blendCounter = 0;\n\t\t\t}\n\t\t}\n\t\tthis._binder.update(deltaTime);\n\t}\n}\n\nexport { AnimEvaluator };\n", "class AnimEvents {\n\tconstructor(events) {\n\t\tthis._events = [...events];\n\t\tthis._events.sort((a, b) => a.time - b.time);\n\t}\n\tget events() {\n\t\treturn this._events;\n\t}\n}\n\nexport { AnimEvents };\n", "import { AnimEvents } from './anim-events.js';\n\nvar _AnimTrack;\nclass AnimTrack {\n\tconstructor(name, duration, inputs, outputs, curves, animEvents = new AnimEvents([])) {\n\t\tthis._name = name;\n\t\tthis._duration = duration;\n\t\tthis._inputs = inputs;\n\t\tthis._outputs = outputs;\n\t\tthis._curves = curves;\n\t\tthis._animEvents = animEvents;\n\t}\n\tget name() {\n\t\treturn this._name;\n\t}\n\tget duration() {\n\t\treturn this._duration;\n\t}\n\tget inputs() {\n\t\treturn this._inputs;\n\t}\n\tget outputs() {\n\t\treturn this._outputs;\n\t}\n\tget curves() {\n\t\treturn this._curves;\n\t}\n\tset events(animEvents) {\n\t\tthis._animEvents = animEvents;\n\t}\n\tget events() {\n\t\treturn this._animEvents.events;\n\t}\n\teval(time, snapshot) {\n\t\tsnapshot._time = time;\n\t\tconst inputs = this._inputs;\n\t\tconst outputs = this._outputs;\n\t\tconst curves = this._curves;\n\t\tconst cache = snapshot._cache;\n\t\tconst results = snapshot._results;\n\t\tfor (let i = 0; i < inputs.length; ++i) {\n\t\t\tcache[i].update(time, inputs[i]._data);\n\t\t}\n\t\tfor (let i = 0; i < curves.length; ++i) {\n\t\t\tconst curve = curves[i];\n\t\t\tconst output = outputs[curve._output];\n\t\t\tconst result = results[i];\n\t\t\tcache[curve._input].eval(result, curve._interpolation, output);\n\t\t}\n\t}\n}\n_AnimTrack = AnimTrack;\nAnimTrack.EMPTY = Object.freeze(new _AnimTrack('empty', Number.MAX_VALUE, [], [], []));\n\nexport { AnimTrack };\n", "class AnimBinder {\n\tstatic joinPath(pathSegments, character) {\n\t\tcharacter = character || '.';\n\t\tconst escape = function escape(string) {\n\t\t\treturn string.replace(/\\\\/g, '\\\\\\\\').replace(new RegExp('\\\\' + character, 'g'), '\\\\' + character);\n\t\t};\n\t\treturn pathSegments.map(escape).join(character);\n\t}\n\tstatic splitPath(path, character) {\n\t\tcharacter = character || '.';\n\t\tconst result = [];\n\t\tlet curr = \"\";\n\t\tlet i = 0;\n\t\twhile (i < path.length) {\n\t\t\tlet c = path[i++];\n\t\t\tif (c === '\\\\' && i < path.length) {\n\t\t\t\tc = path[i++];\n\t\t\t\tif (c === '\\\\' || c === character) {\n\t\t\t\t\tcurr += c;\n\t\t\t\t} else {\n\t\t\t\t\tcurr += '\\\\' + c;\n\t\t\t\t}\n\t\t\t} else if (c === character) {\n\t\t\t\tresult.push(curr);\n\t\t\t\tcurr = '';\n\t\t\t} else {\n\t\t\t\tcurr += c;\n\t\t\t}\n\t\t}\n\t\tif (curr.length > 0) {\n\t\t\tresult.push(curr);\n\t\t}\n\t\treturn result;\n\t}\n\tstatic encode(entityPath, component, propertyPath) {\n\t\treturn `${Array.isArray(entityPath) ? entityPath.join('/') : entityPath}/${component}/${Array.isArray(propertyPath) ? propertyPath.join('/') : propertyPath}`;\n\t}\n\tresolve(path) {\n\t\treturn null;\n\t}\n\tunresolve(path) {}\n\tupdate(deltaTime) {}\n}\n\nexport { AnimBinder };\n", "class AnimTarget {\n\tconstructor(func, type, components, targetPath) {\n\t\tif (func.set) {\n\t\t\tthis._set = func.set;\n\t\t\tthis._get = func.get;\n\t\t} else {\n\t\t\tthis._set = func;\n\t\t}\n\t\tthis._type = type;\n\t\tthis._components = components;\n\t\tthis._targetPath = targetPath;\n\t\tthis._isTransform = this._targetPath.substring(this._targetPath.length - 13) === 'localRotation' || this._targetPath.substring(this._targetPath.length - 13) === 'localPosition' || this._targetPath.substring(this._targetPath.length - 10) === 'localScale';\n\t}\n\tget set() {\n\t\treturn this._set;\n\t}\n\tget get() {\n\t\treturn this._get;\n\t}\n\tget type() {\n\t\treturn this._type;\n\t}\n\tget components() {\n\t\treturn this._components;\n\t}\n\tget targetPath() {\n\t\treturn this._targetPath;\n\t}\n\tget isTransform() {\n\t\treturn this._isTransform;\n\t}\n}\n\nexport { AnimTarget };\n", "import { AnimBinder } from './anim-binder.js';\nimport { AnimTarget } from '../evaluator/anim-target.js';\nimport { Entity } from '../../entity.js';\n\nclass DefaultAnimBinder {\n\tconstructor(graph) {\n\t\tthis._isPathInMask = (path, checkMaskValue) => {\n\t\t\tconst maskItem = this._mask[path];\n\t\t\tif (!maskItem) return false;else if (maskItem.children || checkMaskValue && maskItem.value !== false) return true;\n\t\t\treturn false;\n\t\t};\n\t\tthis.graph = graph;\n\t\tif (!graph) return;\n\t\tthis._mask = null;\n\t\tconst nodes = {};\n\t\tconst flatten = function flatten(node) {\n\t\t\tnodes[node.name] = node;\n\t\t\tfor (let i = 0; i < node.children.length; ++i) {\n\t\t\t\tflatten(node.children[i]);\n\t\t\t}\n\t\t};\n\t\tflatten(graph);\n\t\tthis.nodes = nodes;\n\t\tthis.targetCache = {};\n\t\tconst findMeshInstances = function findMeshInstances(node) {\n\t\t\tlet object = node;\n\t\t\twhile (object && !(object instanceof Entity)) {\n\t\t\t\tobject = object.parent;\n\t\t\t}\n\t\t\tlet meshInstances;\n\t\t\tif (object) {\n\t\t\t\tif (object.render) {\n\t\t\t\t\tmeshInstances = object.render.meshInstances;\n\t\t\t\t} else if (object.model) {\n\t\t\t\t\tmeshInstances = object.model.meshInstances;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn meshInstances;\n\t\t};\n\t\tthis.nodeCounts = {};\n\t\tthis.activeNodes = [];\n\t\tthis.handlers = {\n\t\t\t'localPosition': function (node) {\n\t\t\t\tconst object = node.localPosition;\n\t\t\t\tconst func = function func(value) {\n\t\t\t\t\tobject.set(...value);\n\t\t\t\t};\n\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 3, node, 'localPosition');\n\t\t\t},\n\t\t\t'localRotation': function (node) {\n\t\t\t\tconst object = node.localRotation;\n\t\t\t\tconst func = function func(value) {\n\t\t\t\t\tobject.set(...value);\n\t\t\t\t};\n\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'quaternion', 4, node, 'localRotation');\n\t\t\t},\n\t\t\t'localScale': function (node) {\n\t\t\t\tconst object = node.localScale;\n\t\t\t\tconst func = function func(value) {\n\t\t\t\t\tobject.set(...value);\n\t\t\t\t};\n\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 3, node, 'localScale');\n\t\t\t},\n\t\t\t'weight': function (node, weightName) {\n\t\t\t\tif (weightName.indexOf('name.') === 0) {\n\t\t\t\t\tweightName = weightName.replace('name.', '');\n\t\t\t\t} else {\n\t\t\t\t\tweightName = Number(weightName);\n\t\t\t\t}\n\t\t\t\tconst meshInstances = findMeshInstances(node);\n\t\t\t\tlet setters;\n\t\t\t\tif (meshInstances) {\n\t\t\t\t\tfor (let i = 0; i < meshInstances.length; ++i) {\n\t\t\t\t\t\tif (meshInstances[i].node.name === node.name && meshInstances[i].morphInstance) {\n\t\t\t\t\t\t\tconst morphInstance = meshInstances[i].morphInstance;\n\t\t\t\t\t\t\tconst func = value => {\n\t\t\t\t\t\t\t\tmorphInstance.setWeight(weightName, value[0]);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tif (!setters) setters = [];\n\t\t\t\t\t\t\tsetters.push(func);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (setters) {\n\t\t\t\t\tconst callSetters = value => {\n\t\t\t\t\t\tfor (let i = 0; i < setters.length; ++i) {\n\t\t\t\t\t\t\tsetters[i](value);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(callSetters, 'number', 1, node, `weight.${weightName}`);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t'materialTexture': (node, textureName) => {\n\t\t\t\tconst meshInstances = findMeshInstances(node);\n\t\t\t\tif (meshInstances) {\n\t\t\t\t\tlet meshInstance;\n\t\t\t\t\tfor (let i = 0; i < meshInstances.length; ++i) {\n\t\t\t\t\t\tif (meshInstances[i].node.name === node.name) {\n\t\t\t\t\t\t\tmeshInstance = meshInstances[i];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\tconst func = value => {\n\t\t\t\t\t\t\tconst textureAsset = this.animComponent.system.app.assets.get(value[0]);\n\t\t\t\t\t\t\tif (textureAsset && textureAsset.resource && textureAsset.type === 'texture') {\n\t\t\t\t\t\t\t\tmeshInstance.material[textureName] = textureAsset.resource;\n\t\t\t\t\t\t\t\tmeshInstance.material.update();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 1, node, 'materialTexture', 'material');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t}\n\t_isPathActive(path) {\n\t\tif (!this._mask) return true;\n\t\tconst rootNodeNames = [path.entityPath[0], this.graph.name];\n\t\tfor (let j = 0; j < rootNodeNames.length; ++j) {\n\t\t\tlet currEntityPath = rootNodeNames[j];\n\t\t\tif (this._isPathInMask(currEntityPath, path.entityPath.length === 1)) return true;\n\t\t\tfor (let i = 1; i < path.entityPath.length; i++) {\n\t\t\t\tcurrEntityPath += '/' + path.entityPath[i];\n\t\t\t\tif (this._isPathInMask(currEntityPath, i === path.entityPath.length - 1)) return true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tfindNode(path) {\n\t\tif (!this._isPathActive(path)) {\n\t\t\treturn null;\n\t\t}\n\t\tlet node;\n\t\tif (this.graph) {\n\t\t\tnode = this.graph.findByPath(path.entityPath);\n\t\t\tif (!node) {\n\t\t\t\tnode = this.graph.findByPath(path.entityPath.slice(1));\n\t\t\t}\n\t\t}\n\t\tif (!node) {\n\t\t\tnode = this.nodes[path.entityPath[path.entityPath.length - 1] || \"\"];\n\t\t}\n\t\treturn node;\n\t}\n\tstatic createAnimTarget(func, type, valueCount, node, propertyPath, componentType) {\n\t\tconst targetPath = AnimBinder.encode(node.path, componentType ? componentType : 'entity', propertyPath);\n\t\treturn new AnimTarget(func, type, valueCount, targetPath);\n\t}\n\tresolve(path) {\n\t\tconst encodedPath = AnimBinder.encode(path.entityPath, path.component, path.propertyPath);\n\t\tlet target = this.targetCache[encodedPath];\n\t\tif (target) return target;\n\t\tconst node = this.findNode(path);\n\t\tif (!node) {\n\t\t\treturn null;\n\t\t}\n\t\tconst handler = this.handlers[path.propertyPath];\n\t\tif (!handler) {\n\t\t\treturn null;\n\t\t}\n\t\ttarget = handler(node);\n\t\tif (!target) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.targetCache[encodedPath] = target;\n\t\tif (!this.nodeCounts[node.path]) {\n\t\t\tthis.activeNodes.push(node);\n\t\t\tthis.nodeCounts[node.path] = 1;\n\t\t} else {\n\t\t\tthis.nodeCounts[node.path]++;\n\t\t}\n\t\treturn target;\n\t}\n\tunresolve(path) {\n\t\tif (path.component !== 'graph') return;\n\t\tconst node = this.nodes[path.entityPath[path.entityPath.length - 1] || \"\"];\n\t\tthis.nodeCounts[node.path]--;\n\t\tif (this.nodeCounts[node.path] === 0) {\n\t\t\tconst activeNodes = this.activeNodes;\n\t\t\tconst i = activeNodes.indexOf(node.node);\n\t\t\tconst len = activeNodes.length;\n\t\t\tif (i < len - 1) {\n\t\t\t\tactiveNodes[i] = activeNodes[len - 1];\n\t\t\t}\n\t\t\tactiveNodes.pop();\n\t\t}\n\t}\n\tupdate(deltaTime) {\n\t\tconst activeNodes = this.activeNodes;\n\t\tfor (let i = 0; i < activeNodes.length; ++i) {\n\t\t\tactiveNodes[i]._dirtifyLocal();\n\t\t}\n\t}\n\tassignMask(mask) {\n\t\tif (mask !== this._mask) {\n\t\t\tthis._mask = mask;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n}\n\nexport { DefaultAnimBinder };\n", "import { Vec2 } from '../../../core/math/vec2.js';\n\nclass AnimNode {\n\tconstructor(state, parent, name, point, speed = 1) {\n\t\tthis._state = state;\n\t\tthis._parent = parent;\n\t\tthis._name = name;\n\t\tif (Array.isArray(point)) {\n\t\t\tthis._point = new Vec2(point[0], point[1]);\n\t\t\tthis._pointLength = this._point.length();\n\t\t} else {\n\t\t\tthis._point = point;\n\t\t\tthis._pointLength = point;\n\t\t}\n\t\tthis._speed = speed;\n\t\tthis._weightedSpeed = 1.0;\n\t\tthis._weight = 1.0;\n\t\tthis._animTrack = null;\n\t}\n\tget parent() {\n\t\treturn this._parent;\n\t}\n\tget name() {\n\t\treturn this._name;\n\t}\n\tget path() {\n\t\treturn this._parent ? this._parent.path + '.' + this._name : this._name;\n\t}\n\tget point() {\n\t\treturn this._point;\n\t}\n\tget pointLength() {\n\t\treturn this._pointLength;\n\t}\n\tset weight(value) {\n\t\tthis._weight = value;\n\t}\n\tget weight() {\n\t\treturn this._parent ? this._parent.weight * this._weight : this._weight;\n\t}\n\tget normalizedWeight() {\n\t\tconst totalWeight = this._state.totalWeight;\n\t\tif (totalWeight === 0.0) return 0.0;\n\t\treturn this.weight / totalWeight;\n\t}\n\tget speed() {\n\t\treturn this._weightedSpeed * this._speed;\n\t}\n\tget absoluteSpeed() {\n\t\treturn Math.abs(this._speed);\n\t}\n\tset weightedSpeed(weightedSpeed) {\n\t\tthis._weightedSpeed = weightedSpeed;\n\t}\n\tget weightedSpeed() {\n\t\treturn this._weightedSpeed;\n\t}\n\tset animTrack(value) {\n\t\tthis._animTrack = value;\n\t}\n\tget animTrack() {\n\t\treturn this._animTrack;\n\t}\n}\n\nexport { AnimNode };\n", "import { AnimNode } from './anim-node.js';\n\nclass AnimBlendTree extends AnimNode {\n\tconstructor(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter) {\n\t\tsuper(state, parent, name, point);\n\t\tthis._parameters = parameters;\n\t\tthis._parameterValues = new Array(parameters.length);\n\t\tthis._children = [];\n\t\tthis._findParameter = findParameter;\n\t\tthis._syncAnimations = syncAnimations !== false;\n\t\tthis._pointCache = {};\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst child = children[i];\n\t\t\tif (child.children) {\n\t\t\t\tthis._children.push(createTree(child.type, state, this, child.name, 1.0, child.parameter ? [child.parameter] : child.parameters, child.children, child.syncAnimations, createTree, findParameter));\n\t\t\t} else {\n\t\t\t\tthis._children.push(new AnimNode(state, this, child.name, child.point, child.speed));\n\t\t\t}\n\t\t}\n\t}\n\tget weight() {\n\t\tthis.calculateWeights();\n\t\treturn this._parent ? this._parent.weight * this._weight : this._weight;\n\t}\n\tget syncAnimations() {\n\t\treturn this._syncAnimations;\n\t}\n\tgetChild(name) {\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tif (this._children[i].name === name) return this._children[i];\n\t\t}\n\t\treturn null;\n\t}\n\tupdateParameterValues() {\n\t\tlet paramsEqual = true;\n\t\tfor (let i = 0; i < this._parameterValues.length; i++) {\n\t\t\tconst updatedParameter = this._findParameter(this._parameters[i]).value;\n\t\t\tif (this._parameterValues[i] !== updatedParameter) {\n\t\t\t\tthis._parameterValues[i] = updatedParameter;\n\t\t\t\tparamsEqual = false;\n\t\t\t}\n\t\t}\n\t\treturn paramsEqual;\n\t}\n\tgetNodeWeightedDuration(i) {\n\t\treturn this._children[i].animTrack.duration / this._children[i].speedMultiplier * this._children[i].weight;\n\t}\n\tgetNodeCount() {\n\t\tlet count = 0;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tconst child = this._children[i];\n\t\t\tif (child.constructor === AnimBlendTree) {\n\t\t\t\tcount += this._children[i].getNodeCount();\n\t\t\t} else {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n}\n\nexport { AnimBlendTree };\n", "import { math } from '../../../core/math/math.js';\nimport { AnimBlendTree } from './anim-blend-tree.js';\n\nclass AnimBlendTree1D extends AnimBlendTree {\n\tconstructor(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter) {\n\t\tchildren.sort((a, b) => a.point - b.point);\n\t\tsuper(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t}\n\tcalculateWeights() {\n\t\tif (this.updateParameterValues()) return;\n\t\tlet weightedDurationSum = 0.0;\n\t\tthis._children[0].weight = 0.0;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tconst c1 = this._children[i];\n\t\t\tif (i !== this._children.length - 1) {\n\t\t\t\tconst c2 = this._children[i + 1];\n\t\t\t\tif (c1.point === c2.point) {\n\t\t\t\t\tc1.weight = 0.5;\n\t\t\t\t\tc2.weight = 0.5;\n\t\t\t\t} else if (math.between(this._parameterValues[0], c1.point, c2.point, true)) {\n\t\t\t\t\tconst child2Distance = Math.abs(c1.point - c2.point);\n\t\t\t\t\tconst parameterDistance = Math.abs(c1.point - this._parameterValues[0]);\n\t\t\t\t\tconst weight = (child2Distance - parameterDistance) / child2Distance;\n\t\t\t\t\tc1.weight = weight;\n\t\t\t\t\tc2.weight = 1.0 - weight;\n\t\t\t\t} else {\n\t\t\t\t\tc2.weight = 0.0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._syncAnimations) {\n\t\t\t\tweightedDurationSum += c1.animTrack.duration / c1.absoluteSpeed * c1.weight;\n\t\t\t}\n\t\t}\n\t\tif (this._syncAnimations) {\n\t\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\t\tconst child = this._children[i];\n\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { AnimBlendTree1D };\n", "import { Vec2 } from '../../../core/math/vec2.js';\nimport { math } from '../../../core/math/math.js';\nimport { AnimBlendTree } from './anim-blend-tree.js';\n\nclass AnimBlendTreeCartesian2D extends AnimBlendTree {\n\tpointDistanceCache(i, j) {\n\t\tconst pointKey = `${i}${j}`;\n\t\tif (!this._pointCache[pointKey]) {\n\t\t\tthis._pointCache[pointKey] = this._children[j].point.clone().sub(this._children[i].point);\n\t\t}\n\t\treturn this._pointCache[pointKey];\n\t}\n\tcalculateWeights() {\n\t\tif (this.updateParameterValues()) return;\n\t\tlet weightSum, weightedDurationSum;\n\t\tAnimBlendTreeCartesian2D._p.set(...this._parameterValues);\n\t\tweightSum = 0.0;\n\t\tweightedDurationSum = 0.0;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tconst child = this._children[i];\n\t\t\tconst pi = child.point;\n\t\t\tAnimBlendTreeCartesian2D._pip.set(AnimBlendTreeCartesian2D._p.x, AnimBlendTreeCartesian2D._p.y).sub(pi);\n\t\t\tlet minj = Number.MAX_VALUE;\n\t\t\tfor (let j = 0; j < this._children.length; j++) {\n\t\t\t\tif (i === j) continue;\n\t\t\t\tconst pipj = this.pointDistanceCache(i, j);\n\t\t\t\tconst result = math.clamp(1.0 - AnimBlendTreeCartesian2D._pip.dot(pipj) / pipj.lengthSq(), 0.0, 1.0);\n\t\t\t\tif (result < minj) minj = result;\n\t\t\t}\n\t\t\tchild.weight = minj;\n\t\t\tweightSum += minj;\n\t\t\tif (this._syncAnimations) {\n\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tconst child = this._children[i];\n\t\t\tchild.weight = child._weight / weightSum;\n\t\t\tif (this._syncAnimations) {\n\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t}\n\t\t}\n\t}\n}\nAnimBlendTreeCartesian2D._p = new Vec2();\nAnimBlendTreeCartesian2D._pip = new Vec2();\n\nexport { AnimBlendTreeCartesian2D };\n", "import { Vec2 } from '../../../core/math/vec2.js';\nimport { math } from '../../../core/math/math.js';\nimport { AnimBlendTree } from './anim-blend-tree.js';\n\nclass AnimBlendTreeDirectional2D extends AnimBlendTree {\n\tpointCache(i, j) {\n\t\tconst pointKey = `${i}${j}`;\n\t\tif (!this._pointCache[pointKey]) {\n\t\t\tthis._pointCache[pointKey] = new Vec2((this._children[j].pointLength - this._children[i].pointLength) / ((this._children[j].pointLength + this._children[i].pointLength) / 2), Vec2.angleRad(this._children[i].point, this._children[j].point) * 2.0);\n\t\t}\n\t\treturn this._pointCache[pointKey];\n\t}\n\tcalculateWeights() {\n\t\tif (this.updateParameterValues()) return;\n\t\tlet weightSum, weightedDurationSum;\n\t\tAnimBlendTreeDirectional2D._p.set(...this._parameterValues);\n\t\tconst pLength = AnimBlendTreeDirectional2D._p.length();\n\t\tweightSum = 0.0;\n\t\tweightedDurationSum = 0.0;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tconst child = this._children[i];\n\t\t\tconst pi = child.point;\n\t\t\tconst piLength = child.pointLength;\n\t\t\tlet minj = Number.MAX_VALUE;\n\t\t\tfor (let j = 0; j < this._children.length; j++) {\n\t\t\t\tif (i === j) continue;\n\t\t\t\tconst pipj = this.pointCache(i, j);\n\t\t\t\tconst pjLength = this._children[j].pointLength;\n\t\t\t\tAnimBlendTreeDirectional2D._pip.set((pLength - piLength) / ((pjLength + piLength) / 2), Vec2.angleRad(pi, AnimBlendTreeDirectional2D._p) * 2.0);\n\t\t\t\tconst result = math.clamp(1.0 - Math.abs(AnimBlendTreeDirectional2D._pip.dot(pipj) / pipj.lengthSq()), 0.0, 1.0);\n\t\t\t\tif (result < minj) minj = result;\n\t\t\t}\n\t\t\tchild.weight = minj;\n\t\t\tweightSum += minj;\n\t\t\tif (this._syncAnimations) {\n\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tconst child = this._children[i];\n\t\t\tchild.weight = child._weight / weightSum;\n\t\t\tif (this._syncAnimations) {\n\t\t\t\tconst weightedChildDuration = child.animTrack.duration / weightedDurationSum * weightSum;\n\t\t\t\tchild.weightedSpeed = child.absoluteSpeed * weightedChildDuration;\n\t\t\t}\n\t\t}\n\t}\n}\nAnimBlendTreeDirectional2D._p = new Vec2();\nAnimBlendTreeDirectional2D._pip = new Vec2();\n\nexport { AnimBlendTreeDirectional2D };\n", "import { AnimBlendTree } from './anim-blend-tree.js';\n\nclass AnimBlendTreeDirect extends AnimBlendTree {\n\tcalculateWeights() {\n\t\tif (this.updateParameterValues()) return;\n\t\tlet weightSum = 0.0;\n\t\tlet weightedDurationSum = 0.0;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tweightSum += Math.max(this._parameterValues[i], 0.0);\n\t\t\tif (this._syncAnimations) {\n\t\t\t\tconst child = this._children[i];\n\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tconst child = this._children[i];\n\t\t\tconst weight = Math.max(this._parameterValues[i], 0.0);\n\t\t\tif (weightSum) {\n\t\t\t\tchild.weight = weight / weightSum;\n\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tchild.weight = 0.0;\n\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\tchild.weightedSpeed = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { AnimBlendTreeDirect };\n", "import { AnimTrack } from '../evaluator/anim-track.js';\nimport { AnimBlendTree1D } from './anim-blend-tree-1d.js';\nimport { AnimBlendTreeCartesian2D } from './anim-blend-tree-2d-cartesian.js';\nimport { AnimBlendTreeDirectional2D } from './anim-blend-tree-2d-directional.js';\nimport { AnimBlendTreeDirect } from './anim-blend-tree-direct.js';\nimport { AnimNode } from './anim-node.js';\nimport { ANIM_BLEND_DIRECT, ANIM_BLEND_2D_DIRECTIONAL, ANIM_BLEND_2D_CARTESIAN, ANIM_BLEND_1D, ANIM_CONTROL_STATES } from './constants.js';\n\nclass AnimState {\n\tconstructor(controller, name, speed = 1, loop = true, blendTree) {\n\t\tthis._animations = {};\n\t\tthis._animationList = [];\n\t\tthis._controller = controller;\n\t\tthis._name = name;\n\t\tthis._speed = speed;\n\t\tthis._loop = loop;\n\t\tthis._hasAnimations = false;\n\t\tif (blendTree) {\n\t\t\tthis._blendTree = this._createTree(blendTree.type, this, null, name, 1.0, blendTree.parameter ? [blendTree.parameter] : blendTree.parameters, blendTree.children, blendTree.syncAnimations, this._createTree, this._controller.findParameter);\n\t\t} else {\n\t\t\tthis._blendTree = new AnimNode(this, null, name, 1.0, speed);\n\t\t}\n\t}\n\t_createTree(type, state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter) {\n\t\tswitch (type) {\n\t\t\tcase ANIM_BLEND_1D:\n\t\t\t\treturn new AnimBlendTree1D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\tcase ANIM_BLEND_2D_CARTESIAN:\n\t\t\t\treturn new AnimBlendTreeCartesian2D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\tcase ANIM_BLEND_2D_DIRECTIONAL:\n\t\t\t\treturn new AnimBlendTreeDirectional2D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\tcase ANIM_BLEND_DIRECT:\n\t\t\t\treturn new AnimBlendTreeDirect(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t}\n\t\treturn undefined;\n\t}\n\t_getNodeFromPath(path) {\n\t\tlet currNode = this._blendTree;\n\t\tfor (let i = 1; i < path.length; i++) {\n\t\t\tcurrNode = currNode.getChild(path[i]);\n\t\t}\n\t\treturn currNode;\n\t}\n\taddAnimation(path, animTrack) {\n\t\tconst pathString = path.join('.');\n\t\tconst indexOfAnimation = this._animationList.findIndex(function (animation) {\n\t\t\treturn animation.path === pathString;\n\t\t});\n\t\tif (indexOfAnimation >= 0) {\n\t\t\tthis._animationList[indexOfAnimation].animTrack = animTrack;\n\t\t} else {\n\t\t\tconst node = this._getNodeFromPath(path);\n\t\t\tnode.animTrack = animTrack;\n\t\t\tthis._animationList.push(node);\n\t\t}\n\t\tthis._updateHasAnimations();\n\t}\n\t_updateHasAnimations() {\n\t\tthis._hasAnimations = this._animationList.length > 0 && this._animationList.every(animation => animation.animTrack && animation.animTrack !== AnimTrack.EMPTY);\n\t}\n\tget name() {\n\t\treturn this._name;\n\t}\n\tset animations(value) {\n\t\tthis._animationList = value;\n\t\tthis._updateHasAnimations();\n\t}\n\tget animations() {\n\t\treturn this._animationList;\n\t}\n\tget hasAnimations() {\n\t\treturn this._hasAnimations;\n\t}\n\tset speed(value) {\n\t\tthis._speed = value;\n\t}\n\tget speed() {\n\t\treturn this._speed;\n\t}\n\tset loop(value) {\n\t\tthis._loop = value;\n\t}\n\tget loop() {\n\t\treturn this._loop;\n\t}\n\tget nodeCount() {\n\t\tif (!this._blendTree || this._blendTree.constructor === AnimNode) return 1;\n\t\treturn this._blendTree.getNodeCount();\n\t}\n\tget playable() {\n\t\treturn ANIM_CONTROL_STATES.indexOf(this.name) !== -1 || this.animations.length === this.nodeCount;\n\t}\n\tget looping() {\n\t\tif (this.animations.length > 0) {\n\t\t\tconst trackClipName = this.name + '.' + this.animations[0].animTrack.name;\n\t\t\tconst trackClip = this._controller.animEvaluator.findClip(trackClipName);\n\t\t\tif (trackClip) {\n\t\t\t\treturn trackClip.loop;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tget totalWeight() {\n\t\tlet sum = 0;\n\t\tfor (let i = 0; i < this.animations.length; i++) {\n\t\t\tsum += this.animations[i].weight;\n\t\t}\n\t\treturn sum;\n\t}\n\tget timelineDuration() {\n\t\tlet duration = 0;\n\t\tfor (let i = 0; i < this.animations.length; i++) {\n\t\t\tconst animation = this.animations[i];\n\t\t\tif (animation.animTrack.duration > duration) {\n\t\t\t\tduration = animation.animTrack.duration;\n\t\t\t}\n\t\t}\n\t\treturn duration;\n\t}\n}\n\nexport { AnimState };\n", "import { ANIM_INTERRUPTION_NONE } from './constants.js';\n\nclass AnimTransition {\n\tconstructor({\n\t\tfrom,\n\t\tto,\n\t\ttime = 0,\n\t\tpriority = 0,\n\t\tconditions = [],\n\t\texitTime = null,\n\t\ttransitionOffset = null,\n\t\tinterruptionSource = ANIM_INTERRUPTION_NONE\n\t}) {\n\t\tthis._from = from;\n\t\tthis._to = to;\n\t\tthis._time = time;\n\t\tthis._priority = priority;\n\t\tthis._conditions = conditions;\n\t\tthis._exitTime = exitTime;\n\t\tthis._transitionOffset = transitionOffset;\n\t\tthis._interruptionSource = interruptionSource;\n\t}\n\tget from() {\n\t\treturn this._from;\n\t}\n\tset to(value) {\n\t\tthis._to = value;\n\t}\n\tget to() {\n\t\treturn this._to;\n\t}\n\tget time() {\n\t\treturn this._time;\n\t}\n\tget priority() {\n\t\treturn this._priority;\n\t}\n\tget conditions() {\n\t\treturn this._conditions;\n\t}\n\tget exitTime() {\n\t\treturn this._exitTime;\n\t}\n\tget transitionOffset() {\n\t\treturn this._transitionOffset;\n\t}\n\tget interruptionSource() {\n\t\treturn this._interruptionSource;\n\t}\n\tget hasExitTime() {\n\t\treturn !!this.exitTime;\n\t}\n}\n\nexport { AnimTransition };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { sortPriority } from '../../../core/sort.js';\nimport { AnimClip } from '../evaluator/anim-clip.js';\nimport { AnimState } from './anim-state.js';\nimport { AnimNode } from './anim-node.js';\nimport { AnimTransition } from './anim-transition.js';\nimport { ANIM_STATE_START, ANIM_INTERRUPTION_NONE, ANIM_STATE_END, ANIM_STATE_ANY, ANIM_NOT_EQUAL_TO, ANIM_EQUAL_TO, ANIM_LESS_THAN_EQUAL_TO, ANIM_GREATER_THAN_EQUAL_TO, ANIM_LESS_THAN, ANIM_GREATER_THAN, ANIM_INTERRUPTION_NEXT_PREV, ANIM_INTERRUPTION_PREV_NEXT, ANIM_INTERRUPTION_NEXT, ANIM_INTERRUPTION_PREV, ANIM_PARAMETER_TRIGGER, ANIM_CONTROL_STATES } from './constants.js';\n\nclass AnimController {\n\tconstructor(animEvaluator, states, transitions, activate, eventHandler, findParameter, consumeTrigger) {\n\t\tthis._states = {};\n\t\tthis._stateNames = [];\n\t\tthis._findTransitionsFromStateCache = {};\n\t\tthis._findTransitionsBetweenStatesCache = {};\n\t\tthis._previousStateName = null;\n\t\tthis._activeStateName = ANIM_STATE_START;\n\t\tthis._activeStateDuration = 0;\n\t\tthis._activeStateDurationDirty = true;\n\t\tthis._playing = false;\n\t\tthis._activate = void 0;\n\t\tthis._transitions = void 0;\n\t\tthis._currTransitionTime = 1;\n\t\tthis._totalTransitionTime = 1;\n\t\tthis._isTransitioning = false;\n\t\tthis._transitionInterruptionSource = ANIM_INTERRUPTION_NONE;\n\t\tthis._transitionPreviousStates = [];\n\t\tthis._timeInState = 0;\n\t\tthis._timeInStateBefore = 0;\n\t\tthis.findParameter = name => {\n\t\t\treturn this._findParameter(name);\n\t\t};\n\t\tthis._animEvaluator = animEvaluator;\n\t\tthis._eventHandler = eventHandler;\n\t\tthis._findParameter = findParameter;\n\t\tthis._consumeTrigger = consumeTrigger;\n\t\tfor (let i = 0; i < states.length; i++) {\n\t\t\tthis._states[states[i].name] = new AnimState(this, states[i].name, states[i].speed, states[i].loop, states[i].blendTree);\n\t\t\tthis._stateNames.push(states[i].name);\n\t\t}\n\t\tthis._transitions = transitions.map(transition => {\n\t\t\treturn new AnimTransition(_extends({}, transition));\n\t\t});\n\t\tthis._activate = activate;\n\t}\n\tget animEvaluator() {\n\t\treturn this._animEvaluator;\n\t}\n\tset activeState(stateName) {\n\t\tthis._activeStateName = stateName;\n\t}\n\tget activeState() {\n\t\treturn this._findState(this._activeStateName);\n\t}\n\tget activeStateName() {\n\t\treturn this._activeStateName;\n\t}\n\tget activeStateAnimations() {\n\t\treturn this.activeState.animations;\n\t}\n\tset previousState(stateName) {\n\t\tthis._previousStateName = stateName;\n\t}\n\tget previousState() {\n\t\treturn this._findState(this._previousStateName);\n\t}\n\tget previousStateName() {\n\t\treturn this._previousStateName;\n\t}\n\tget playable() {\n\t\tlet playable = true;\n\t\tfor (let i = 0; i < this._stateNames.length; i++) {\n\t\t\tif (!this._states[this._stateNames[i]].playable) {\n\t\t\t\tplayable = false;\n\t\t\t}\n\t\t}\n\t\treturn playable;\n\t}\n\tset playing(value) {\n\t\tthis._playing = value;\n\t}\n\tget playing() {\n\t\treturn this._playing;\n\t}\n\tget activeStateProgress() {\n\t\treturn this._getActiveStateProgressForTime(this._timeInState);\n\t}\n\tget activeStateDuration() {\n\t\tif (this._activeStateDurationDirty) {\n\t\t\tlet maxDuration = 0.0;\n\t\t\tfor (let i = 0; i < this.activeStateAnimations.length; i++) {\n\t\t\t\tconst activeClip = this._animEvaluator.findClip(this.activeStateAnimations[i].name);\n\t\t\t\tif (activeClip) {\n\t\t\t\t\tmaxDuration = Math.max(maxDuration, activeClip.track.duration);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._activeStateDuration = maxDuration;\n\t\t\tthis._activeStateDurationDirty = false;\n\t\t}\n\t\treturn this._activeStateDuration;\n\t}\n\tset activeStateCurrentTime(time) {\n\t\tthis._timeInStateBefore = time;\n\t\tthis._timeInState = time;\n\t\tfor (let i = 0; i < this.activeStateAnimations.length; i++) {\n\t\t\tconst clip = this.animEvaluator.findClip(this.activeStateAnimations[i].name);\n\t\t\tif (clip) {\n\t\t\t\tclip.time = time;\n\t\t\t}\n\t\t}\n\t}\n\tget activeStateCurrentTime() {\n\t\treturn this._timeInState;\n\t}\n\tget transitioning() {\n\t\treturn this._isTransitioning;\n\t}\n\tget transitionProgress() {\n\t\treturn this._currTransitionTime / this._totalTransitionTime;\n\t}\n\tget states() {\n\t\treturn this._stateNames;\n\t}\n\tassignMask(mask) {\n\t\treturn this._animEvaluator.assignMask(mask);\n\t}\n\t_findState(stateName) {\n\t\treturn this._states[stateName];\n\t}\n\t_getActiveStateProgressForTime(time) {\n\t\tif (this.activeStateName === ANIM_STATE_START || this.activeStateName === ANIM_STATE_END || this.activeStateName === ANIM_STATE_ANY) return 1.0;\n\t\tconst activeClip = this._animEvaluator.findClip(this.activeStateAnimations[0].name);\n\t\tif (activeClip) {\n\t\t\treturn activeClip.progressForTime(time);\n\t\t}\n\t\treturn null;\n\t}\n\t_findTransitionsFromState(stateName) {\n\t\tlet transitions = this._findTransitionsFromStateCache[stateName];\n\t\tif (!transitions) {\n\t\t\ttransitions = this._transitions.filter(function (transition) {\n\t\t\t\treturn transition.from === stateName;\n\t\t\t});\n\t\t\tsortPriority(transitions);\n\t\t\tthis._findTransitionsFromStateCache[stateName] = transitions;\n\t\t}\n\t\treturn transitions;\n\t}\n\t_findTransitionsBetweenStates(sourceStateName, destinationStateName) {\n\t\tlet transitions = this._findTransitionsBetweenStatesCache[sourceStateName + '->' + destinationStateName];\n\t\tif (!transitions) {\n\t\t\ttransitions = this._transitions.filter(function (transition) {\n\t\t\t\treturn transition.from === sourceStateName && transition.to === destinationStateName;\n\t\t\t});\n\t\t\tsortPriority(transitions);\n\t\t\tthis._findTransitionsBetweenStatesCache[sourceStateName + '->' + destinationStateName] = transitions;\n\t\t}\n\t\treturn transitions;\n\t}\n\t_transitionHasConditionsMet(transition) {\n\t\tconst conditions = transition.conditions;\n\t\tfor (let i = 0; i < conditions.length; i++) {\n\t\t\tconst condition = conditions[i];\n\t\t\tconst parameter = this._findParameter(condition.parameterName);\n\t\t\tswitch (condition.predicate) {\n\t\t\t\tcase ANIM_GREATER_THAN:\n\t\t\t\t\tif (!(parameter.value > condition.value)) return false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ANIM_LESS_THAN:\n\t\t\t\t\tif (!(parameter.value < condition.value)) return false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ANIM_GREATER_THAN_EQUAL_TO:\n\t\t\t\t\tif (!(parameter.value >= condition.value)) return false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ANIM_LESS_THAN_EQUAL_TO:\n\t\t\t\t\tif (!(parameter.value <= condition.value)) return false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ANIM_EQUAL_TO:\n\t\t\t\t\tif (!(parameter.value === condition.value)) return false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ANIM_NOT_EQUAL_TO:\n\t\t\t\t\tif (!(parameter.value !== condition.value)) return false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\t_findTransition(from, to) {\n\t\tlet transitions = [];\n\t\tif (from && to) {\n\t\t\ttransitions = transitions.concat(this._findTransitionsBetweenStates(from, to));\n\t\t} else {\n\t\t\tif (!this._isTransitioning) {\n\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t} else {\n\t\t\t\tswitch (this._transitionInterruptionSource) {\n\t\t\t\t\tcase ANIM_INTERRUPTION_PREV:\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase ANIM_INTERRUPTION_NEXT:\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase ANIM_INTERRUPTION_PREV_NEXT:\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase ANIM_INTERRUPTION_NEXT_PREV:\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttransitions = transitions.filter(transition => {\n\t\t\tif (transition.to === this.activeStateName) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (transition.hasExitTime) {\n\t\t\t\tlet progressBefore = this._getActiveStateProgressForTime(this._timeInStateBefore);\n\t\t\t\tlet progress = this._getActiveStateProgressForTime(this._timeInState);\n\t\t\t\tif (transition.exitTime < 1.0 && this.activeState.loop) {\n\t\t\t\t\tprogressBefore -= Math.floor(progressBefore);\n\t\t\t\t\tprogress -= Math.floor(progress);\n\t\t\t\t}\n\t\t\t\tif (progress === progressBefore) {\n\t\t\t\t\tif (progress !== transition.exitTime) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t} else if (!(transition.exitTime > progressBefore && transition.exitTime <= progress)) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this._transitionHasConditionsMet(transition);\n\t\t});\n\t\tif (transitions.length > 0) {\n\t\t\tconst transition = transitions[0];\n\t\t\tif (transition.to === ANIM_STATE_END) {\n\t\t\t\tconst startTransition = this._findTransitionsFromState(ANIM_STATE_START)[0];\n\t\t\t\ttransition.to = startTransition.to;\n\t\t\t}\n\t\t\treturn transition;\n\t\t}\n\t\treturn null;\n\t}\n\tupdateStateFromTransition(transition) {\n\t\tlet state;\n\t\tlet animation;\n\t\tlet clip;\n\t\tthis.previousState = transition.from ? this.activeStateName : null;\n\t\tthis.activeState = transition.to;\n\t\tthis._activeStateDurationDirty = true;\n\t\tfor (let i = 0; i < transition.conditions.length; i++) {\n\t\t\tconst condition = transition.conditions[i];\n\t\t\tconst parameter = this._findParameter(condition.parameterName);\n\t\t\tif (parameter.type === ANIM_PARAMETER_TRIGGER) {\n\t\t\t\tthis._consumeTrigger(condition.parameterName);\n\t\t\t}\n\t\t}\n\t\tif (this.previousState) {\n\t\t\tif (!this._isTransitioning) {\n\t\t\t\tthis._transitionPreviousStates = [];\n\t\t\t}\n\t\t\tthis._transitionPreviousStates.push({\n\t\t\t\tname: this._previousStateName,\n\t\t\t\tweight: 1\n\t\t\t});\n\t\t\tconst interpolatedTime = Math.min(this._totalTransitionTime !== 0 ? this._currTransitionTime / this._totalTransitionTime : 1, 1.0);\n\t\t\tfor (let i = 0; i < this._transitionPreviousStates.length; i++) {\n\t\t\t\tif (!this._isTransitioning) {\n\t\t\t\t\tthis._transitionPreviousStates[i].weight = 1.0;\n\t\t\t\t} else if (i !== this._transitionPreviousStates.length - 1) {\n\t\t\t\t\tthis._transitionPreviousStates[i].weight *= 1.0 - interpolatedTime;\n\t\t\t\t} else {\n\t\t\t\t\tthis._transitionPreviousStates[i].weight = interpolatedTime;\n\t\t\t\t}\n\t\t\t\tstate = this._findState(this._transitionPreviousStates[i].name);\n\t\t\t\tfor (let j = 0; j < state.animations.length; j++) {\n\t\t\t\t\tanimation = state.animations[j];\n\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name + '.previous.' + i);\n\t\t\t\t\tif (!clip) {\n\t\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\t\tclip.name = animation.name + '.previous.' + i;\n\t\t\t\t\t}\n\t\t\t\t\tif (i !== this._transitionPreviousStates.length - 1) {\n\t\t\t\t\t\tclip.pause();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._isTransitioning = true;\n\t\tthis._totalTransitionTime = transition.time;\n\t\tthis._currTransitionTime = 0;\n\t\tthis._transitionInterruptionSource = transition.interruptionSource;\n\t\tconst activeState = this.activeState;\n\t\tconst hasTransitionOffset = transition.transitionOffset && transition.transitionOffset > 0.0 && transition.transitionOffset < 1.0;\n\t\tlet timeInState = 0;\n\t\tlet timeInStateBefore = 0;\n\t\tif (hasTransitionOffset) {\n\t\t\tconst offsetTime = activeState.timelineDuration * transition.transitionOffset;\n\t\t\ttimeInState = offsetTime;\n\t\t\ttimeInStateBefore = offsetTime;\n\t\t}\n\t\tthis._timeInState = timeInState;\n\t\tthis._timeInStateBefore = timeInStateBefore;\n\t\tfor (let i = 0; i < activeState.animations.length; i++) {\n\t\t\tclip = this._animEvaluator.findClip(activeState.animations[i].name);\n\t\t\tif (!clip) {\n\t\t\t\tconst speed = Number.isFinite(activeState.animations[i].speed) ? activeState.animations[i].speed : activeState.speed;\n\t\t\t\tclip = new AnimClip(activeState.animations[i].animTrack, this._timeInState, speed, true, activeState.loop, this._eventHandler);\n\t\t\t\tclip.name = activeState.animations[i].name;\n\t\t\t\tthis._animEvaluator.addClip(clip);\n\t\t\t} else {\n\t\t\t\tclip.reset();\n\t\t\t}\n\t\t\tif (transition.time > 0) {\n\t\t\t\tclip.blendWeight = 0.0;\n\t\t\t} else {\n\t\t\t\tclip.blendWeight = activeState.animations[i].normalizedWeight;\n\t\t\t}\n\t\t\tclip.play();\n\t\t\tif (hasTransitionOffset) {\n\t\t\t\tclip.time = activeState.timelineDuration * transition.transitionOffset;\n\t\t\t} else {\n\t\t\t\tconst startTime = activeState.speed >= 0 ? 0 : this.activeStateDuration;\n\t\t\t\tclip.time = startTime;\n\t\t\t}\n\t\t}\n\t}\n\t_transitionToState(newStateName) {\n\t\tif (!this._findState(newStateName)) {\n\t\t\treturn;\n\t\t}\n\t\tlet transition = this._findTransition(this._activeStateName, newStateName);\n\t\tif (!transition) {\n\t\t\tthis._animEvaluator.removeClips();\n\t\t\ttransition = new AnimTransition({\n\t\t\t\tfrom: null,\n\t\t\t\tto: newStateName\n\t\t\t});\n\t\t}\n\t\tthis.updateStateFromTransition(transition);\n\t}\n\tassignAnimation(pathString, animTrack, speed, loop) {\n\t\tconst path = pathString.split('.');\n\t\tlet state = this._findState(path[0]);\n\t\tif (!state) {\n\t\t\tstate = new AnimState(this, path[0], speed);\n\t\t\tthis._states[path[0]] = state;\n\t\t\tthis._stateNames.push(path[0]);\n\t\t}\n\t\tstate.addAnimation(path, animTrack);\n\t\tthis._animEvaluator.updateClipTrack(state.name, animTrack);\n\t\tif (speed !== undefined) {\n\t\t\tstate.speed = speed;\n\t\t}\n\t\tif (loop !== undefined) {\n\t\t\tstate.loop = loop;\n\t\t}\n\t\tif (!this._playing && this._activate && this.playable) {\n\t\t\tthis.play();\n\t\t}\n\t\tthis._activeStateDurationDirty = true;\n\t}\n\tremoveNodeAnimations(nodeName) {\n\t\tif (ANIM_CONTROL_STATES.indexOf(nodeName) !== -1) {\n\t\t\treturn false;\n\t\t}\n\t\tconst state = this._findState(nodeName);\n\t\tif (!state) {\n\t\t\treturn false;\n\t\t}\n\t\tstate.animations = [];\n\t\treturn true;\n\t}\n\tplay(stateName) {\n\t\tif (stateName) {\n\t\t\tthis._transitionToState(stateName);\n\t\t}\n\t\tthis._playing = true;\n\t}\n\tpause() {\n\t\tthis._playing = false;\n\t}\n\treset() {\n\t\tthis._previousStateName = null;\n\t\tthis._activeStateName = ANIM_STATE_START;\n\t\tthis._playing = false;\n\t\tthis._currTransitionTime = 1.0;\n\t\tthis._totalTransitionTime = 1.0;\n\t\tthis._isTransitioning = false;\n\t\tthis._timeInState = 0;\n\t\tthis._timeInStateBefore = 0;\n\t\tthis._animEvaluator.removeClips();\n\t}\n\trebind() {\n\t\tthis._animEvaluator.rebind();\n\t}\n\tupdate(dt) {\n\t\tif (!this._playing) {\n\t\t\treturn;\n\t\t}\n\t\tlet state;\n\t\tlet animation;\n\t\tlet clip;\n\t\tif (this.activeState.loop || this._timeInState < this.activeStateDuration) {\n\t\t\tthis._timeInStateBefore = this._timeInState;\n\t\t\tthis._timeInState += dt * this.activeState.speed;\n\t\t\tif (!this.activeState.loop && this._timeInState > this.activeStateDuration) {\n\t\t\t\tthis._timeInState = this.activeStateDuration;\n\t\t\t\tdt = this.activeStateDuration - this._timeInStateBefore;\n\t\t\t}\n\t\t}\n\t\tconst transition = this._findTransition(this._activeStateName);\n\t\tif (transition) this.updateStateFromTransition(transition);\n\t\tif (this._isTransitioning) {\n\t\t\tthis._currTransitionTime += dt;\n\t\t\tif (this._currTransitionTime <= this._totalTransitionTime) {\n\t\t\t\tconst interpolatedTime = this._totalTransitionTime !== 0 ? this._currTransitionTime / this._totalTransitionTime : 1;\n\t\t\t\tfor (let i = 0; i < this._transitionPreviousStates.length; i++) {\n\t\t\t\t\tstate = this._findState(this._transitionPreviousStates[i].name);\n\t\t\t\t\tconst stateWeight = this._transitionPreviousStates[i].weight;\n\t\t\t\t\tfor (let j = 0; j < state.animations.length; j++) {\n\t\t\t\t\t\tanimation = state.animations[j];\n\t\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name + '.previous.' + i);\n\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\tclip.blendWeight = (1.0 - interpolatedTime) * animation.normalizedWeight * stateWeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate = this.activeState;\n\t\t\t\tfor (let i = 0; i < state.animations.length; i++) {\n\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\tthis._animEvaluator.findClip(animation.name).blendWeight = interpolatedTime * animation.normalizedWeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._isTransitioning = false;\n\t\t\t\tconst activeClips = this.activeStateAnimations.length;\n\t\t\t\tconst totalClips = this._animEvaluator.clips.length;\n\t\t\t\tfor (let i = 0; i < totalClips - activeClips; i++) {\n\t\t\t\t\tthis._animEvaluator.removeClip(0);\n\t\t\t\t}\n\t\t\t\tthis._transitionPreviousStates = [];\n\t\t\t\tstate = this.activeState;\n\t\t\t\tfor (let i = 0; i < state.animations.length; i++) {\n\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\tif (clip) {\n\t\t\t\t\t\tclip.blendWeight = animation.normalizedWeight;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.activeState._blendTree.constructor !== AnimNode) {\n\t\t\t\tstate = this.activeState;\n\t\t\t\tfor (let i = 0; i < state.animations.length; i++) {\n\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\tif (clip) {\n\t\t\t\t\t\tclip.blendWeight = animation.normalizedWeight;\n\t\t\t\t\t\tif (animation.parent.syncAnimations) {\n\t\t\t\t\t\t\tclip.speed = animation.speed;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._animEvaluator.update(dt, this.activeState.hasAnimations);\n\t}\n}\n\nexport { AnimController };\n", "import { AnimTarget } from '../../anim/evaluator/anim-target.js';\nimport { DefaultAnimBinder } from '../../anim/binder/default-anim-binder.js';\nimport { AnimBinder } from '../../anim/binder/anim-binder.js';\nimport { Color } from '../../../core/math/color.js';\nimport { Quat } from '../../../core/math/quat.js';\nimport { Vec2 } from '../../../core/math/vec2.js';\nimport { Vec3 } from '../../../core/math/vec3.js';\nimport { Vec4 } from '../../../core/math/vec4.js';\n\nconst v2 = new Vec2();\nconst v3 = new Vec3();\nconst v4 = new Vec4();\nconst c = new Color();\nconst q = new Quat();\nclass AnimComponentBinder extends DefaultAnimBinder {\n\tconstructor(animComponent, graph, layerName, mask, layerIndex) {\n\t\tsuper(graph);\n\t\tthis.animComponent = animComponent;\n\t\tthis._mask = mask;\n\t\tthis.layerName = layerName;\n\t\tthis.layerIndex = layerIndex;\n\t}\n\tstatic _packFloat(values) {\n\t\treturn values[0];\n\t}\n\tstatic _packBoolean(values) {\n\t\treturn !!values[0];\n\t}\n\tstatic _packVec2(values) {\n\t\tv2.x = values[0];\n\t\tv2.y = values[1];\n\t\treturn v2;\n\t}\n\tstatic _packVec3(values) {\n\t\tv3.x = values[0];\n\t\tv3.y = values[1];\n\t\tv3.z = values[2];\n\t\treturn v3;\n\t}\n\tstatic _packVec4(values) {\n\t\tv4.x = values[0];\n\t\tv4.y = values[1];\n\t\tv4.z = values[2];\n\t\tv4.w = values[3];\n\t\treturn v4;\n\t}\n\tstatic _packColor(values) {\n\t\tc.r = values[0];\n\t\tc.g = values[1];\n\t\tc.b = values[2];\n\t\tc.a = values[3];\n\t\treturn c;\n\t}\n\tstatic _packQuat(values) {\n\t\tq.x = values[0];\n\t\tq.y = values[1];\n\t\tq.z = values[2];\n\t\tq.w = values[3];\n\t\treturn q;\n\t}\n\tresolve(path) {\n\t\tconst encodedPath = AnimBinder.encode(path.entityPath, path.component, path.propertyPath);\n\t\tlet target = this.targetCache[encodedPath];\n\t\tif (target) return target;\n\t\tlet entity;\n\t\tlet propertyComponent;\n\t\tlet targetPath;\n\t\tswitch (path.component) {\n\t\t\tcase 'entity':\n\t\t\t\tentity = this._getEntityFromHierarchy(path.entityPath);\n\t\t\t\ttargetPath = AnimBinder.encode(entity.path, 'entity', path.propertyPath);\n\t\t\t\tpropertyComponent = entity;\n\t\t\t\tbreak;\n\t\t\tcase 'graph':\n\t\t\t\tpropertyComponent = this.findNode(path);\n\t\t\t\tif (!propertyComponent) return null;\n\t\t\t\ttargetPath = AnimBinder.encode(propertyComponent.path, 'graph', path.propertyPath);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tentity = this._getEntityFromHierarchy(path.entityPath);\n\t\t\t\tpropertyComponent = entity.findComponent(path.component);\n\t\t\t\tif (!propertyComponent) return null;\n\t\t\t\ttargetPath = AnimBinder.encode(entity.path, path.component, path.propertyPath);\n\t\t\t\tbreak;\n\t\t}\n\t\ttarget = this._createAnimTargetForProperty(propertyComponent, path.propertyPath, targetPath);\n\t\tthis.targetCache[encodedPath] = target;\n\t\treturn target;\n\t}\n\tupdate(deltaTime) {\n\t\tconst activeNodes = this.activeNodes;\n\t\tif (activeNodes) {\n\t\t\tfor (let i = 0; i < activeNodes.length; i++) {\n\t\t\t\tactiveNodes[i]._dirtifyLocal();\n\t\t\t}\n\t\t}\n\t}\n\t_getEntityFromHierarchy(entityHierarchy) {\n\t\tif (!this.animComponent.entity.name === entityHierarchy[0]) {\n\t\t\treturn null;\n\t\t}\n\t\tconst currEntity = this.animComponent.entity;\n\t\tif (entityHierarchy.length === 1) {\n\t\t\treturn currEntity;\n\t\t}\n\t\treturn currEntity._parent.findByPath(entityHierarchy);\n\t}\n\t_resolvePath(object, path, resolveLeaf) {\n\t\tconst steps = path.length - (resolveLeaf ? 0 : 1);\n\t\tfor (let i = 0; i < steps; i++) {\n\t\t\tobject = object[path[i]];\n\t\t}\n\t\treturn object;\n\t}\n\t_setter(object, path, packFunc) {\n\t\tconst obj = this._resolvePath(object, path);\n\t\tconst key = path[path.length - 1];\n\t\tconst setterFuncName = 'set' + key.substring(0, 1).toUpperCase() + key.substring(1);\n\t\tif (obj[setterFuncName]) {\n\t\t\tconst getterFunc = obj['get' + key.substring(0, 1).toUpperCase() + key.substring(1)].bind(obj);\n\t\t\tlet baseValues = getterFunc();\n\t\t\tbaseValues = [baseValues.x, baseValues.y, baseValues.z, baseValues.w];\n\t\t\tconst setterFunc = obj[setterFuncName].bind(obj);\n\t\t\treturn {\n\t\t\t\tset: values => {\n\t\t\t\t\tsetterFunc(packFunc(values));\n\t\t\t\t},\n\t\t\t\tget: () => baseValues\n\t\t\t};\n\t\t}\n\t\tconst prop = obj[key];\n\t\tif (typeof prop === 'object' && prop.hasOwnProperty('copy')) {\n\t\t\treturn function (values) {\n\t\t\t\tprop.copy(packFunc(values));\n\t\t\t};\n\t\t}\n\t\tif ([Vec2, Vec3, Vec4, Color, Quat].indexOf(obj.constructor) !== -1 && path.length > 1) {\n\t\t\tconst parent = path.length > 2 ? this._resolvePath(object, path.slice(0, -1)) : object;\n\t\t\tconst objKey = path[path.length - 2];\n\t\t\treturn function (values) {\n\t\t\t\tobj[key] = packFunc(values);\n\t\t\t\tparent[objKey] = obj;\n\t\t\t};\n\t\t}\n\t\treturn function (values) {\n\t\t\tobj[key] = packFunc(values);\n\t\t};\n\t}\n\t_createAnimTargetForProperty(propertyComponent, propertyHierarchy, targetPath) {\n\t\tif (this.handlers && propertyHierarchy[0].startsWith('weight.')) {\n\t\t\treturn this.handlers.weight(propertyComponent, propertyHierarchy[0].replace('weight.', ''));\n\t\t} else if (this.handlers && propertyHierarchy[0] === 'material' && propertyHierarchy.length === 2) {\n\t\t\tconst materialPropertyName = propertyHierarchy[1];\n\t\t\tif (materialPropertyName.endsWith('Map')) {\n\t\t\t\treturn this.handlers.materialTexture(propertyComponent, materialPropertyName);\n\t\t\t}\n\t\t}\n\t\tconst property = this._resolvePath(propertyComponent, propertyHierarchy, true);\n\t\tif (typeof property === 'undefined') return null;\n\t\tlet setter;\n\t\tlet animDataType;\n\t\tlet animDataComponents;\n\t\tif (typeof property === 'number') {\n\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packFloat);\n\t\t\tanimDataType = 'vector';\n\t\t\tanimDataComponents = 1;\n\t\t} else if (typeof property === 'boolean') {\n\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packBoolean);\n\t\t\tanimDataType = 'vector';\n\t\t\tanimDataComponents = 1;\n\t\t} else if (typeof property === 'object') {\n\t\t\tswitch (property.constructor) {\n\t\t\t\tcase Vec2:\n\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec2);\n\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\tanimDataComponents = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Vec3:\n\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec3);\n\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\tanimDataComponents = 3;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Vec4:\n\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec4);\n\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Color:\n\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packColor);\n\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Quat:\n\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packQuat);\n\t\t\t\t\tanimDataType = 'quaternion';\n\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tif (propertyHierarchy.indexOf('material') !== -1) {\n\t\t\treturn new AnimTarget(function (values) {\n\t\t\t\tsetter(values);\n\t\t\t\tpropertyComponent.material.update();\n\t\t\t}, animDataType, animDataComponents, targetPath);\n\t\t}\n\t\treturn new AnimTarget(setter, animDataType, animDataComponents, targetPath);\n\t}\n\trebind() {\n\t\tthis.targetCache = {};\n\t\tif (this.animComponent.rootBone) {\n\t\t\tthis.graph = this.animComponent.rootBone;\n\t\t} else {\n\t\t\tthis.graph = this.animComponent.entity;\n\t\t}\n\t\tconst nodes = {};\n\t\tconst flatten = function flatten(node) {\n\t\t\tnodes[node.name] = node;\n\t\t\tfor (let i = 0; i < node.children.length; ++i) {\n\t\t\t\tflatten(node.children[i]);\n\t\t\t}\n\t\t};\n\t\tflatten(this.graph);\n\t\tthis.nodes = nodes;\n\t}\n}\n\nexport { AnimComponentBinder };\n", "import { math } from '../../../core/math/math.js';\nimport { AnimTrack } from '../../anim/evaluator/anim-track.js';\nimport { AnimTransition } from '../../anim/controller/anim-transition.js';\nimport { ANIM_LAYER_OVERWRITE } from '../../anim/controller/constants.js';\n\nclass AnimComponentLayer {\n\tconstructor(name, controller, component, weight = 1, blendType = ANIM_LAYER_OVERWRITE) {\n\t\tthis._name = void 0;\n\t\tthis._controller = void 0;\n\t\tthis._component = void 0;\n\t\tthis._weight = void 0;\n\t\tthis._blendType = void 0;\n\t\tthis._mask = null;\n\t\tthis._blendTime = 0;\n\t\tthis._blendTimeElapsed = 0;\n\t\tthis._startingWeight = 0;\n\t\tthis._targetWeight = 0;\n\t\tthis._name = name;\n\t\tthis._controller = controller;\n\t\tthis._component = component;\n\t\tthis._weight = weight;\n\t\tthis._blendType = blendType;\n\t}\n\tget name() {\n\t\treturn this._name;\n\t}\n\tset playing(value) {\n\t\tthis._controller.playing = value;\n\t}\n\tget playing() {\n\t\treturn this._controller.playing;\n\t}\n\tget playable() {\n\t\treturn this._controller.playable;\n\t}\n\tget activeState() {\n\t\treturn this._controller.activeStateName;\n\t}\n\tget previousState() {\n\t\treturn this._controller.previousStateName;\n\t}\n\tget activeStateProgress() {\n\t\treturn this._controller.activeStateProgress;\n\t}\n\tget activeStateDuration() {\n\t\treturn this._controller.activeStateDuration;\n\t}\n\tset activeStateCurrentTime(time) {\n\t\tconst controller = this._controller;\n\t\tconst layerPlaying = controller.playing;\n\t\tcontroller.playing = true;\n\t\tcontroller.activeStateCurrentTime = time;\n\t\tif (!layerPlaying) {\n\t\t\tcontroller.update(0);\n\t\t}\n\t\tcontroller.playing = layerPlaying;\n\t}\n\tget activeStateCurrentTime() {\n\t\treturn this._controller.activeStateCurrentTime;\n\t}\n\tget transitioning() {\n\t\treturn this._controller.transitioning;\n\t}\n\tget transitionProgress() {\n\t\tif (this.transitioning) {\n\t\t\treturn this._controller.transitionProgress;\n\t\t}\n\t\treturn null;\n\t}\n\tget states() {\n\t\treturn this._controller.states;\n\t}\n\tset weight(value) {\n\t\tthis._weight = value;\n\t\tthis._component.dirtifyTargets();\n\t}\n\tget weight() {\n\t\treturn this._weight;\n\t}\n\tset blendType(value) {\n\t\tif (value !== this._blendType) {\n\t\t\tthis._blendType = value;\n\t\t\tif (this._controller.normalizeWeights) {\n\t\t\t\tthis._component.rebind();\n\t\t\t}\n\t\t}\n\t}\n\tget blendType() {\n\t\treturn this._blendType;\n\t}\n\tset mask(value) {\n\t\tif (this._controller.assignMask(value)) {\n\t\t\tthis._component.rebind();\n\t\t}\n\t\tthis._mask = value;\n\t}\n\tget mask() {\n\t\treturn this._mask;\n\t}\n\tplay(name) {\n\t\tthis._controller.play(name);\n\t}\n\tpause() {\n\t\tthis._controller.pause();\n\t}\n\treset() {\n\t\tthis._controller.reset();\n\t}\n\trebind() {\n\t\tthis._controller.rebind();\n\t}\n\tupdate(dt) {\n\t\tif (this._blendTime) {\n\t\t\tif (this._blendTimeElapsed < this._blendTime) {\n\t\t\t\tthis.weight = math.lerp(this._startingWeight, this._targetWeight, this._blendTimeElapsed / this._blendTime);\n\t\t\t\tthis._blendTimeElapsed += dt;\n\t\t\t} else {\n\t\t\t\tthis.weight = this._targetWeight;\n\t\t\t\tthis._blendTime = 0;\n\t\t\t\tthis._blendTimeElapsed = 0;\n\t\t\t\tthis._startingWeight = 0;\n\t\t\t\tthis._targetWeight = 0;\n\t\t\t}\n\t\t}\n\t\tthis._controller.update(dt);\n\t}\n\tblendToWeight(weight, time) {\n\t\tthis._startingWeight = this.weight;\n\t\tthis._targetWeight = weight;\n\t\tthis._blendTime = Math.max(0, time);\n\t\tthis._blendTimeElapsed = 0;\n\t}\n\tassignMask(mask) {\n\t\tif (this._controller.assignMask(mask)) {\n\t\t\tthis._component.rebind();\n\t\t}\n\t\tthis._mask = mask;\n\t}\n\tassignAnimation(nodePath, animTrack, speed, loop) {\n\t\tif (!(animTrack instanceof AnimTrack)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._controller.assignAnimation(nodePath, animTrack, speed, loop);\n\t\tif (this._controller._transitions.length === 0) {\n\t\t\tthis._controller._transitions.push(new AnimTransition({\n\t\t\t\tfrom: 'START',\n\t\t\t\tto: nodePath\n\t\t\t}));\n\t\t}\n\t\tif (this._component.activate && this._component.playable) {\n\t\t\tthis._component.playing = true;\n\t\t}\n\t}\n\tremoveNodeAnimations(nodeName) {\n\t\tif (this._controller.removeNodeAnimations(nodeName)) {\n\t\t\tthis._component.playing = false;\n\t\t}\n\t}\n\tgetAnimationAsset(stateName) {\n\t\treturn this._component.animationAssets[`${this.name}:${stateName}`];\n\t}\n\ttransition(to, time = 0, transitionOffset = null) {\n\t\tthis._controller.updateStateFromTransition(new AnimTransition({\n\t\t\tfrom: this._controller.activeStateName,\n\t\t\tto,\n\t\t\ttime,\n\t\t\ttransitionOffset\n\t\t}));\n\t}\n}\n\nexport { AnimComponentLayer };\n", "class AnimStateGraph {\n\tconstructor(data) {\n\t\tthis._layers = [];\n\t\tthis._parameters = {};\n\t\tif (!Array.isArray(data.layers)) {\n\t\t\tfor (const layerId in data.layers) {\n\t\t\t\tconst dataLayer = data.layers[layerId];\n\t\t\t\tconst layer = {\n\t\t\t\t\tname: dataLayer.name,\n\t\t\t\t\tblendType: dataLayer.blendType,\n\t\t\t\t\tweight: dataLayer.weight,\n\t\t\t\t\tstates: [],\n\t\t\t\t\ttransitions: []\n\t\t\t\t};\n\t\t\t\tfor (let i = 0; i < dataLayer.states.length; i++) {\n\t\t\t\t\tlayer.states.push(data.states[dataLayer.states[i]]);\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < dataLayer.transitions.length; i++) {\n\t\t\t\t\tconst dataLayerTransition = data.transitions[dataLayer.transitions[i]];\n\t\t\t\t\tif (dataLayerTransition.conditions && !Array.isArray(dataLayerTransition.conditions)) {\n\t\t\t\t\t\tconst conditionKeys = Object.keys(dataLayerTransition.conditions);\n\t\t\t\t\t\tconst conditions = [];\n\t\t\t\t\t\tfor (let j = 0; j < conditionKeys.length; j++) {\n\t\t\t\t\t\t\tconst condition = dataLayerTransition.conditions[conditionKeys[j]];\n\t\t\t\t\t\t\tif (condition.parameterName) {\n\t\t\t\t\t\t\t\tconditions.push(condition);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataLayerTransition.conditions = conditions;\n\t\t\t\t\t}\n\t\t\t\t\tif (Number.isInteger(dataLayerTransition.from)) {\n\t\t\t\t\t\tdataLayerTransition.from = data.states[dataLayerTransition.from].name;\n\t\t\t\t\t}\n\t\t\t\t\tif (Number.isInteger(dataLayerTransition.to)) {\n\t\t\t\t\t\tdataLayerTransition.to = data.states[dataLayerTransition.to].name;\n\t\t\t\t\t}\n\t\t\t\t\tlayer.transitions.push(dataLayerTransition);\n\t\t\t\t}\n\t\t\t\tthis._layers.push(layer);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._layers = data.layers;\n\t\t}\n\t\tfor (const paramId in data.parameters) {\n\t\t\tconst param = data.parameters[paramId];\n\t\t\tthis._parameters[param.name] = {\n\t\t\t\ttype: param.type,\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t}\n\t}\n\tget parameters() {\n\t\treturn Object.assign({}, this._parameters);\n\t}\n\tget layers() {\n\t\treturn this._layers;\n\t}\n}\n\nexport { AnimStateGraph };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { Asset } from '../../asset/asset.js';\nimport { AnimEvaluator } from '../../anim/evaluator/anim-evaluator.js';\nimport { AnimController } from '../../anim/controller/anim-controller.js';\nimport { Component } from '../component.js';\nimport { ANIM_CONTROL_STATES, ANIM_PARAMETER_FLOAT, ANIM_PARAMETER_INTEGER, ANIM_PARAMETER_BOOLEAN, ANIM_PARAMETER_TRIGGER } from '../../anim/controller/constants.js';\nimport { AnimComponentBinder } from './component-binder.js';\nimport { AnimComponentLayer } from './component-layer.js';\nimport { AnimStateGraph } from '../../anim/state-graph/anim-state-graph.js';\nimport { Entity } from '../../entity.js';\nimport { AnimTrack } from '../../anim/evaluator/anim-track.js';\n\nclass AnimComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t\tthis.findParameter = name => {\n\t\t\treturn this._parameters[name];\n\t\t};\n\t\tthis.consumeTrigger = name => {\n\t\t\tthis._consumedTriggers.add(name);\n\t\t};\n\t\tthis._stateGraphAsset = null;\n\t\tthis._animationAssets = {};\n\t\tthis._speed = 1.0;\n\t\tthis._activate = true;\n\t\tthis._playing = false;\n\t\tthis._rootBone = null;\n\t\tthis._stateGraph = null;\n\t\tthis._layers = [];\n\t\tthis._layerIndices = {};\n\t\tthis._parameters = {};\n\t\tthis._targets = {};\n\t\tthis._consumedTriggers = new Set();\n\t\tthis._normalizeWeights = false;\n\t}\n\tset stateGraphAsset(value) {\n\t\tif (value === null) {\n\t\t\tthis.removeStateGraph();\n\t\t\treturn;\n\t\t}\n\t\tif (this._stateGraphAsset) {\n\t\t\tconst stateGraphAsset = this.system.app.assets.get(this._stateGraphAsset);\n\t\t\tstateGraphAsset.off('change', this._onStateGraphAssetChangeEvent, this);\n\t\t}\n\t\tlet _id;\n\t\tlet _asset;\n\t\tif (value instanceof Asset) {\n\t\t\t_id = value.id;\n\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t\tif (!_asset) {\n\t\t\t\tthis.system.app.assets.add(value);\n\t\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t\t}\n\t\t} else {\n\t\t\t_id = value;\n\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t}\n\t\tif (!_asset || this._stateGraphAsset === _id) {\n\t\t\treturn;\n\t\t}\n\t\tif (_asset.resource) {\n\t\t\tthis._stateGraph = _asset.resource;\n\t\t\tthis.loadStateGraph(this._stateGraph);\n\t\t\t_asset.on('change', this._onStateGraphAssetChangeEvent, this);\n\t\t} else {\n\t\t\t_asset.once('load', asset => {\n\t\t\t\tthis._stateGraph = asset.resource;\n\t\t\t\tthis.loadStateGraph(this._stateGraph);\n\t\t\t});\n\t\t\t_asset.on('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\tthis.system.app.assets.load(_asset);\n\t\t}\n\t\tthis._stateGraphAsset = _id;\n\t}\n\tget stateGraphAsset() {\n\t\treturn this._stateGraphAsset;\n\t}\n\tset normalizeWeights(value) {\n\t\tthis._normalizeWeights = value;\n\t\tthis.unbind();\n\t}\n\tget normalizeWeights() {\n\t\treturn this._normalizeWeights;\n\t}\n\tset animationAssets(value) {\n\t\tthis._animationAssets = value;\n\t\tthis.loadAnimationAssets();\n\t}\n\tget animationAssets() {\n\t\treturn this._animationAssets;\n\t}\n\tset speed(value) {\n\t\tthis._speed = value;\n\t}\n\tget speed() {\n\t\treturn this._speed;\n\t}\n\tset activate(value) {\n\t\tthis._activate = value;\n\t}\n\tget activate() {\n\t\treturn this._activate;\n\t}\n\tset playing(value) {\n\t\tthis._playing = value;\n\t}\n\tget playing() {\n\t\treturn this._playing;\n\t}\n\tset rootBone(value) {\n\t\tif (typeof value === 'string') {\n\t\t\tconst entity = this.entity.root.findByGuid(value);\n\t\t\tthis._rootBone = entity;\n\t\t} else if (value instanceof Entity) {\n\t\t\tthis._rootBone = value;\n\t\t} else {\n\t\t\tthis._rootBone = null;\n\t\t}\n\t\tthis.rebind();\n\t}\n\tget rootBone() {\n\t\treturn this._rootBone;\n\t}\n\tset stateGraph(value) {\n\t\tthis._stateGraph = value;\n\t}\n\tget stateGraph() {\n\t\treturn this._stateGraph;\n\t}\n\tget layers() {\n\t\treturn this._layers;\n\t}\n\tset layerIndices(value) {\n\t\tthis._layerIndices = value;\n\t}\n\tget layerIndices() {\n\t\treturn this._layerIndices;\n\t}\n\tset parameters(value) {\n\t\tthis._parameters = value;\n\t}\n\tget parameters() {\n\t\treturn this._parameters;\n\t}\n\tset targets(value) {\n\t\tthis._targets = value;\n\t}\n\tget targets() {\n\t\treturn this._targets;\n\t}\n\tget playable() {\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tif (!this._layers[i].playable) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tget baseLayer() {\n\t\tif (this._layers.length > 0) {\n\t\t\treturn this._layers[0];\n\t\t}\n\t\treturn null;\n\t}\n\t_onStateGraphAssetChangeEvent(asset) {\n\t\tconst prevAnimationAssets = this.animationAssets;\n\t\tconst prevMasks = this.layers.map(layer => layer.mask);\n\t\tthis.removeStateGraph();\n\t\tthis._stateGraph = new AnimStateGraph(asset._data);\n\t\tthis.loadStateGraph(this._stateGraph);\n\t\tthis.animationAssets = prevAnimationAssets;\n\t\tthis.loadAnimationAssets();\n\t\tthis.layers.forEach((layer, i) => {\n\t\t\tlayer.mask = prevMasks[i];\n\t\t});\n\t\tthis.rebind();\n\t}\n\tdirtifyTargets() {\n\t\tconst targets = Object.values(this._targets);\n\t\tfor (let i = 0; i < targets.length; i++) {\n\t\t\ttargets[i].dirty = true;\n\t\t}\n\t}\n\t_addLayer({\n\t\tname,\n\t\tstates,\n\t\ttransitions,\n\t\tweight,\n\t\tmask,\n\t\tblendType\n\t}) {\n\t\tlet graph;\n\t\tif (this.rootBone) {\n\t\t\tgraph = this.rootBone;\n\t\t} else {\n\t\t\tgraph = this.entity;\n\t\t}\n\t\tconst layerIndex = this._layers.length;\n\t\tconst animBinder = new AnimComponentBinder(this, graph, name, mask, layerIndex);\n\t\tconst animEvaluator = new AnimEvaluator(animBinder);\n\t\tconst controller = new AnimController(animEvaluator, states, transitions, this._activate, this, this.findParameter, this.consumeTrigger);\n\t\tthis._layers.push(new AnimComponentLayer(name, controller, this, weight, blendType));\n\t\tthis._layerIndices[name] = layerIndex;\n\t\treturn this._layers[layerIndex];\n\t}\n\taddLayer(name, weight, mask, blendType) {\n\t\tconst layer = this.findAnimationLayer(name);\n\t\tif (layer) return layer;\n\t\tconst states = [{\n\t\t\t'name': 'START',\n\t\t\t'speed': 1\n\t\t}];\n\t\tconst transitions = [];\n\t\treturn this._addLayer({\n\t\t\tname,\n\t\t\tstates,\n\t\t\ttransitions,\n\t\t\tweight,\n\t\t\tmask,\n\t\t\tblendType\n\t\t});\n\t}\n\t_assignParameters(stateGraph) {\n\t\tthis._parameters = {};\n\t\tconst paramKeys = Object.keys(stateGraph.parameters);\n\t\tfor (let i = 0; i < paramKeys.length; i++) {\n\t\t\tconst paramKey = paramKeys[i];\n\t\t\tthis._parameters[paramKey] = {\n\t\t\t\ttype: stateGraph.parameters[paramKey].type,\n\t\t\t\tvalue: stateGraph.parameters[paramKey].value\n\t\t\t};\n\t\t}\n\t}\n\tloadStateGraph(stateGraph) {\n\t\tthis._stateGraph = stateGraph;\n\t\tthis._assignParameters(stateGraph);\n\t\tthis._layers = [];\n\t\tlet containsBlendTree = false;\n\t\tfor (let i = 0; i < stateGraph.layers.length; i++) {\n\t\t\tconst layer = stateGraph.layers[i];\n\t\t\tthis._addLayer(_extends({}, layer));\n\t\t\tif (layer.states.some(state => state.blendTree)) {\n\t\t\t\tcontainsBlendTree = true;\n\t\t\t}\n\t\t}\n\t\tif (!containsBlendTree) {\n\t\t\tthis.setupAnimationAssets();\n\t\t}\n\t}\n\tsetupAnimationAssets() {\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tconst layer = this._layers[i];\n\t\t\tconst layerName = layer.name;\n\t\t\tfor (let j = 0; j < layer.states.length; j++) {\n\t\t\t\tconst stateName = layer.states[j];\n\t\t\t\tif (ANIM_CONTROL_STATES.indexOf(stateName) === -1) {\n\t\t\t\t\tconst stateKey = layerName + ':' + stateName;\n\t\t\t\t\tif (!this._animationAssets[stateKey]) {\n\t\t\t\t\t\tthis._animationAssets[stateKey] = {\n\t\t\t\t\t\t\tasset: null\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.loadAnimationAssets();\n\t}\n\tloadAnimationAssets() {\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tconst layer = this._layers[i];\n\t\t\tfor (let j = 0; j < layer.states.length; j++) {\n\t\t\t\tconst stateName = layer.states[j];\n\t\t\t\tif (ANIM_CONTROL_STATES.indexOf(stateName) !== -1) continue;\n\t\t\t\tconst animationAsset = this._animationAssets[layer.name + ':' + stateName];\n\t\t\t\tif (!animationAsset || !animationAsset.asset) {\n\t\t\t\t\tthis.findAnimationLayer(layer.name).assignAnimation(stateName, AnimTrack.EMPTY);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst assetId = animationAsset.asset;\n\t\t\t\tconst asset = this.system.app.assets.get(assetId);\n\t\t\t\tif (asset) {\n\t\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis.onAnimationAssetLoaded(layer.name, stateName, asset);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tasset.once('load', function (layerName, stateName) {\n\t\t\t\t\t\t\treturn function (asset) {\n\t\t\t\t\t\t\t\tthis.onAnimationAssetLoaded(layerName, stateName, asset);\n\t\t\t\t\t\t\t}.bind(this);\n\t\t\t\t\t\t}.bind(this)(layer.name, stateName));\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tonAnimationAssetLoaded(layerName, stateName, asset) {\n\t\tthis.findAnimationLayer(layerName).assignAnimation(stateName, asset.resource);\n\t}\n\tremoveStateGraph() {\n\t\tthis._stateGraph = null;\n\t\tthis._stateGraphAsset = null;\n\t\tthis._animationAssets = {};\n\t\tthis._layers = [];\n\t\tthis._layerIndices = {};\n\t\tthis._parameters = {};\n\t\tthis._playing = false;\n\t\tthis.unbind();\n\t\tthis._targets = {};\n\t}\n\treset() {\n\t\tthis._assignParameters(this._stateGraph);\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tconst layerPlaying = this._layers[i].playing;\n\t\t\tthis._layers[i].reset();\n\t\t\tthis._layers[i].playing = layerPlaying;\n\t\t}\n\t}\n\tunbind() {\n\t\tif (!this._normalizeWeights) {\n\t\t\tObject.keys(this._targets).forEach(targetKey => {\n\t\t\t\tthis._targets[targetKey].unbind();\n\t\t\t});\n\t\t}\n\t}\n\trebind() {\n\t\tthis._targets = {};\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tthis._layers[i].rebind();\n\t\t}\n\t}\n\tfindAnimationLayer(name) {\n\t\tconst layerIndex = this._layerIndices[name];\n\t\treturn this._layers[layerIndex] || null;\n\t}\n\taddAnimationState(nodeName, animTrack, speed = 1, loop = true, layerName = 'Base') {\n\t\tif (!this._stateGraph) {\n\t\t\tthis.loadStateGraph(new AnimStateGraph({\n\t\t\t\t'layers': [{\n\t\t\t\t\t'name': layerName,\n\t\t\t\t\t'states': [{\n\t\t\t\t\t\t'name': 'START',\n\t\t\t\t\t\t'speed': 1\n\t\t\t\t\t}, {\n\t\t\t\t\t\t'name': nodeName,\n\t\t\t\t\t\t'speed': speed,\n\t\t\t\t\t\t'loop': loop,\n\t\t\t\t\t\t'defaultState': true\n\t\t\t\t\t}],\n\t\t\t\t\t'transitions': [{\n\t\t\t\t\t\t'from': 'START',\n\t\t\t\t\t\t'to': nodeName\n\t\t\t\t\t}]\n\t\t\t\t}],\n\t\t\t\t'parameters': {}\n\t\t\t}));\n\t\t}\n\t\tconst layer = this.findAnimationLayer(layerName);\n\t\tif (layer) {\n\t\t\tlayer.assignAnimation(nodeName, animTrack, speed, loop);\n\t\t} else {\n\t\t\tvar _this$addLayer;\n\t\t\t(_this$addLayer = this.addLayer(layerName)) == null || _this$addLayer.assignAnimation(nodeName, animTrack, speed, loop);\n\t\t}\n\t}\n\tassignAnimation(nodePath, animTrack, layerName, speed = 1, loop = true) {\n\t\tif (!this._stateGraph && nodePath.indexOf('.') === -1) {\n\t\t\tthis.loadStateGraph(new AnimStateGraph({\n\t\t\t\t'layers': [{\n\t\t\t\t\t'name': 'Base',\n\t\t\t\t\t'states': [{\n\t\t\t\t\t\t'name': 'START',\n\t\t\t\t\t\t'speed': 1\n\t\t\t\t\t}, {\n\t\t\t\t\t\t'name': nodePath,\n\t\t\t\t\t\t'speed': speed,\n\t\t\t\t\t\t'loop': loop,\n\t\t\t\t\t\t'defaultState': true\n\t\t\t\t\t}],\n\t\t\t\t\t'transitions': [{\n\t\t\t\t\t\t'from': 'START',\n\t\t\t\t\t\t'to': nodePath\n\t\t\t\t\t}]\n\t\t\t\t}],\n\t\t\t\t'parameters': {}\n\t\t\t}));\n\t\t\tthis.baseLayer.assignAnimation(nodePath, animTrack);\n\t\t\treturn;\n\t\t}\n\t\tconst layer = layerName ? this.findAnimationLayer(layerName) : this.baseLayer;\n\t\tif (!layer) {\n\t\t\treturn;\n\t\t}\n\t\tlayer.assignAnimation(nodePath, animTrack, speed, loop);\n\t}\n\tremoveNodeAnimations(nodeName, layerName) {\n\t\tconst layer = layerName ? this.findAnimationLayer(layerName) : this.baseLayer;\n\t\tif (!layer) {\n\t\t\treturn;\n\t\t}\n\t\tlayer.removeNodeAnimations(nodeName);\n\t}\n\tgetParameterValue(name, type) {\n\t\tconst param = this._parameters[name];\n\t\tif (param && param.type === type) {\n\t\t\treturn param.value;\n\t\t}\n\t\treturn undefined;\n\t}\n\tsetParameterValue(name, type, value) {\n\t\tconst param = this._parameters[name];\n\t\tif (param && param.type === type) {\n\t\t\tparam.value = value;\n\t\t\treturn;\n\t\t}\n\t}\n\tgetFloat(name) {\n\t\treturn this.getParameterValue(name, ANIM_PARAMETER_FLOAT);\n\t}\n\tsetFloat(name, value) {\n\t\tthis.setParameterValue(name, ANIM_PARAMETER_FLOAT, value);\n\t}\n\tgetInteger(name) {\n\t\treturn this.getParameterValue(name, ANIM_PARAMETER_INTEGER);\n\t}\n\tsetInteger(name, value) {\n\t\tif (typeof value === 'number' && value % 1 === 0) {\n\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_INTEGER, value);\n\t\t}\n\t}\n\tgetBoolean(name) {\n\t\treturn this.getParameterValue(name, ANIM_PARAMETER_BOOLEAN);\n\t}\n\tsetBoolean(name, value) {\n\t\tthis.setParameterValue(name, ANIM_PARAMETER_BOOLEAN, !!value);\n\t}\n\tgetTrigger(name) {\n\t\treturn this.getParameterValue(name, ANIM_PARAMETER_TRIGGER);\n\t}\n\tsetTrigger(name, singleFrame = false) {\n\t\tthis.setParameterValue(name, ANIM_PARAMETER_TRIGGER, true);\n\t\tif (singleFrame) {\n\t\t\tthis._consumedTriggers.add(name);\n\t\t}\n\t}\n\tresetTrigger(name) {\n\t\tthis.setParameterValue(name, ANIM_PARAMETER_TRIGGER, false);\n\t}\n\tonBeforeRemove() {\n\t\tif (Number.isFinite(this._stateGraphAsset)) {\n\t\t\tconst stateGraphAsset = this.system.app.assets.get(this._stateGraphAsset);\n\t\t\tstateGraphAsset.off('change', this._onStateGraphAssetChangeEvent, this);\n\t\t}\n\t}\n\tupdate(dt) {\n\t\tfor (let i = 0; i < this.layers.length; i++) {\n\t\t\tthis.layers[i].update(dt * this.speed);\n\t\t}\n\t\tthis._consumedTriggers.forEach(trigger => {\n\t\t\tthis.parameters[trigger].value = false;\n\t\t});\n\t\tthis._consumedTriggers.clear();\n\t}\n\tresolveDuplicatedEntityReferenceProperties(oldAnim, duplicatedIdsMap) {\n\t\tif (oldAnim.rootBone && duplicatedIdsMap[oldAnim.rootBone.getGuid()]) {\n\t\t\tthis.rootBone = duplicatedIdsMap[oldAnim.rootBone.getGuid()];\n\t\t} else {\n\t\t\tthis.rebind();\n\t\t}\n\t}\n}\n\nexport { AnimComponent };\n", "class AnimComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t}\n}\n\nexport { AnimComponentData };\n", "import { AnimTrack } from '../../anim/evaluator/anim-track.js';\nimport { Component } from '../component.js';\nimport { ComponentSystem } from '../system.js';\nimport { AnimComponent } from './component.js';\nimport { AnimComponentData } from './data.js';\n\nconst _schema = ['enabled'];\nclass AnimComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.id = 'anim';\n\t\tthis.ComponentType = AnimComponent;\n\t\tthis.DataType = AnimComponentData;\n\t\tthis.schema = _schema;\n\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\tthis.app.systems.on('animationUpdate', this.onAnimationUpdate, this);\n\t}\n\tinitializeComponentData(component, data, properties) {\n\t\tsuper.initializeComponentData(component, data, _schema);\n\t\tconst complexProperties = ['animationAssets', 'stateGraph', 'layers', 'masks'];\n\t\tObject.keys(data).forEach(key => {\n\t\t\tif (complexProperties.includes(key)) return;\n\t\t\tcomponent[key] = data[key];\n\t\t});\n\t\tif (data.stateGraph) {\n\t\t\tcomponent.stateGraph = data.stateGraph;\n\t\t\tcomponent.loadStateGraph(component.stateGraph);\n\t\t}\n\t\tif (data.layers) {\n\t\t\tdata.layers.forEach((layer, i) => {\n\t\t\t\tlayer._controller.states.forEach(stateKey => {\n\t\t\t\t\tlayer._controller._states[stateKey]._animationList.forEach(node => {\n\t\t\t\t\t\tif (!node.animTrack || node.animTrack === AnimTrack.EMPTY) {\n\t\t\t\t\t\t\tconst animationAsset = this.app.assets.get(layer._component._animationAssets[layer.name + ':' + node.name].asset);\n\t\t\t\t\t\t\tif (animationAsset && !animationAsset.loaded) {\n\t\t\t\t\t\t\t\tanimationAsset.once('load', () => {\n\t\t\t\t\t\t\t\t\tcomponent.layers[i].assignAnimation(node.name, animationAsset.resource);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcomponent.layers[i].assignAnimation(node.name, node.animTrack);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tif (data.animationAssets) {\n\t\t\tcomponent.animationAssets = Object.assign(component.animationAssets, data.animationAssets);\n\t\t}\n\t\tif (data.masks) {\n\t\t\tObject.keys(data.masks).forEach(key => {\n\t\t\t\tif (component.layers[key]) {\n\t\t\t\t\tconst maskData = data.masks[key].mask;\n\t\t\t\t\tconst mask = {};\n\t\t\t\t\tObject.keys(maskData).forEach(maskKey => {\n\t\t\t\t\t\tmask[decodeURI(maskKey)] = maskData[maskKey];\n\t\t\t\t\t});\n\t\t\t\t\tcomponent.layers[key].mask = mask;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tonAnimationUpdate(dt) {\n\t\tconst components = this.store;\n\t\tfor (const id in components) {\n\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\tconst component = components[id].entity.anim;\n\t\t\t\tconst componentData = component.data;\n\t\t\t\tif (componentData.enabled && component.entity.enabled && component.playing) {\n\t\t\t\t\tcomponent.update(dt);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcloneComponent(entity, clone) {\n\t\tlet masks;\n\t\tif (!entity.anim.rootBone || entity.anim.rootBone === entity) {\n\t\t\tmasks = {};\n\t\t\tentity.anim.layers.forEach((layer, i) => {\n\t\t\t\tif (layer.mask) {\n\t\t\t\t\tconst mask = {};\n\t\t\t\t\tObject.keys(layer.mask).forEach(path => {\n\t\t\t\t\t\tconst pathArr = path.split('/');\n\t\t\t\t\t\tpathArr.shift();\n\t\t\t\t\t\tconst clonePath = [clone.name, ...pathArr].join('/');\n\t\t\t\t\t\tmask[clonePath] = layer.mask[path];\n\t\t\t\t\t});\n\t\t\t\t\tmasks[i] = {\n\t\t\t\t\t\tmask\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst data = {\n\t\t\tstateGraphAsset: entity.anim.stateGraphAsset,\n\t\t\tanimationAssets: entity.anim.animationAssets,\n\t\t\tspeed: entity.anim.speed,\n\t\t\tactivate: entity.anim.activate,\n\t\t\tplaying: entity.anim.playing,\n\t\t\trootBone: entity.anim.rootBone,\n\t\t\tstateGraph: entity.anim.stateGraph,\n\t\t\tlayers: entity.anim.layers,\n\t\t\tlayerIndices: entity.anim.layerIndices,\n\t\t\tparameters: entity.anim.parameters,\n\t\t\tnormalizeWeights: entity.anim.normalizeWeights,\n\t\t\tmasks\n\t\t};\n\t\treturn this.addComponent(clone, data);\n\t}\n\tonBeforeRemove(entity, component) {\n\t\tcomponent.onBeforeRemove();\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.app.systems.off('animationUpdate', this.onAnimationUpdate, this);\n\t}\n}\nComponent._buildAccessors(AnimComponent.prototype, _schema);\n\nexport { AnimComponentSystem };\n", "import { Component } from '../component.js';\n\nclass AudioListenerComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t}\n\tsetCurrentListener() {\n\t\tif (this.enabled && this.entity.audiolistener && this.entity.enabled) {\n\t\t\tthis.system.current = this.entity;\n\t\t\tconst position = this.system.current.getPosition();\n\t\t\tthis.system.manager.listener.setPosition(position);\n\t\t}\n\t}\n\tonEnable() {\n\t\tthis.setCurrentListener();\n\t}\n\tonDisable() {\n\t\tif (this.system.current === this.entity) {\n\t\t\tthis.system.current = null;\n\t\t}\n\t}\n}\n\nexport { AudioListenerComponent };\n", "class AudioListenerComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t}\n}\n\nexport { AudioListenerComponentData };\n", "import { Component } from '../component.js';\nimport { ComponentSystem } from '../system.js';\nimport { AudioListenerComponent } from './component.js';\nimport { AudioListenerComponentData } from './data.js';\n\nconst _schema = ['enabled'];\nclass AudioListenerComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.id = 'audiolistener';\n\t\tthis.ComponentType = AudioListenerComponent;\n\t\tthis.DataType = AudioListenerComponentData;\n\t\tthis.schema = _schema;\n\t\tthis.manager = app.soundManager;\n\t\tthis.current = null;\n\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t}\n\tinitializeComponentData(component, data, properties) {\n\t\tproperties = ['enabled'];\n\t\tsuper.initializeComponentData(component, data, properties);\n\t}\n\tonUpdate(dt) {\n\t\tif (this.current) {\n\t\t\tconst position = this.current.getPosition();\n\t\t\tthis.manager.listener.setPosition(position);\n\t\t\tconst wtm = this.current.getWorldTransform();\n\t\t\tthis.manager.listener.setOrientation(wtm);\n\t\t}\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t}\n}\nComponent._buildAccessors(AudioListenerComponent.prototype, _schema);\n\nexport { AudioListenerComponentSystem };\n", "import { Component } from '../components/component.js';\nimport { Entity } from '../entity.js';\nimport { EventHandler } from '../../core/event-handler.js';\n\nclass EntityReference extends EventHandler {\n\tconstructor(parentComponent, entityPropertyName, eventConfig) {\n\t\tsuper();\n\t\tif (!parentComponent || !(parentComponent instanceof Component)) {\n\t\t\tthrow new Error('The parentComponent argument is required and must be a Component');\n\t\t} else if (!entityPropertyName || typeof entityPropertyName !== 'string') {\n\t\t\tthrow new Error('The propertyName argument is required and must be a string');\n\t\t} else if (eventConfig && typeof eventConfig !== 'object') {\n\t\t\tthrow new Error('If provided, the eventConfig argument must be an object');\n\t\t}\n\t\tthis._parentComponent = parentComponent;\n\t\tthis._entityPropertyName = entityPropertyName;\n\t\tthis._entity = null;\n\t\tthis._app = parentComponent.system.app;\n\t\tthis._configureEventListeners(eventConfig || {}, {\n\t\t\t'entity#destroy': this._onEntityDestroy\n\t\t});\n\t\tthis._toggleLifecycleListeners('on');\n\t}\n\t_configureEventListeners(externalEventConfig, internalEventConfig) {\n\t\tconst externalEventListenerConfigs = this._parseEventListenerConfig(externalEventConfig, 'external', this._parentComponent);\n\t\tconst internalEventListenerConfigs = this._parseEventListenerConfig(internalEventConfig, 'internal', this);\n\t\tthis._eventListenerConfigs = externalEventListenerConfigs.concat(internalEventListenerConfigs);\n\t\tthis._listenerStatusFlags = {};\n\t\tthis._gainListeners = {};\n\t\tthis._loseListeners = {};\n\t}\n\t_parseEventListenerConfig(eventConfig, prefix, scope) {\n\t\treturn Object.keys(eventConfig).map(function (listenerDescription, index) {\n\t\t\tconst listenerDescriptionParts = listenerDescription.split('#');\n\t\t\tconst sourceName = listenerDescriptionParts[0];\n\t\t\tconst eventName = listenerDescriptionParts[1];\n\t\t\tconst callback = eventConfig[listenerDescription];\n\t\t\tif (listenerDescriptionParts.length !== 2 || typeof sourceName !== 'string' || sourceName.length === 0 || typeof eventName !== 'string' || eventName.length === 0) {\n\t\t\t\tthrow new Error('Invalid event listener description: `' + listenerDescription + '`');\n\t\t\t}\n\t\t\tif (typeof callback !== 'function') {\n\t\t\t\tthrow new Error('Invalid or missing callback for event listener `' + listenerDescription + '`');\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tid: prefix + '_' + index + '_' + listenerDescription,\n\t\t\t\tsourceName: sourceName,\n\t\t\t\teventName: eventName,\n\t\t\t\tcallback: callback,\n\t\t\t\tscope: scope\n\t\t\t};\n\t\t}, this);\n\t}\n\t_toggleLifecycleListeners(onOrOff) {\n\t\tthis._parentComponent[onOrOff]('set_' + this._entityPropertyName, this._onSetEntity, this);\n\t\tthis._parentComponent.system[onOrOff]('beforeremove', this._onParentComponentRemove, this);\n\t\tthis._app.systems[onOrOff]('postPostInitialize', this._updateEntityReference, this);\n\t\tthis._app[onOrOff]('tools:sceneloaded', this._onSceneLoaded, this);\n\t\tconst allComponentSystems = [];\n\t\tfor (let i = 0; i < this._eventListenerConfigs.length; ++i) {\n\t\t\tconst config = this._eventListenerConfigs[i];\n\t\t\tconst componentSystem = this._app.systems[config.sourceName];\n\t\t\tif (componentSystem) {\n\t\t\t\tif (allComponentSystems.indexOf(componentSystem) === -1) {\n\t\t\t\t\tallComponentSystems.push(componentSystem);\n\t\t\t\t}\n\t\t\t\tif (componentSystem && config.eventName === 'gain') {\n\t\t\t\t\tthis._gainListeners[config.sourceName] = config;\n\t\t\t\t}\n\t\t\t\tif (componentSystem && config.eventName === 'lose') {\n\t\t\t\t\tthis._loseListeners[config.sourceName] = config;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < allComponentSystems.length; ++i) {\n\t\t\tallComponentSystems[i][onOrOff]('add', this._onComponentAdd, this);\n\t\t\tallComponentSystems[i][onOrOff]('beforeremove', this._onComponentRemove, this);\n\t\t}\n\t}\n\t_onSetEntity(name, oldValue, newValue) {\n\t\tif (newValue instanceof Entity) {\n\t\t\tthis._updateEntityReference();\n\t\t} else {\n\t\t\tif (newValue !== null && newValue !== undefined && typeof newValue !== 'string') {\n\t\t\t\tconsole.warn(\"Entity field `\" + this._entityPropertyName + \"` was set to unexpected type '\" + typeof newValue + \"'\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (oldValue !== newValue) {\n\t\t\t\tthis._updateEntityReference();\n\t\t\t}\n\t\t}\n\t}\n\tonParentComponentEnable() {\n\t\tif (!this._entity) {\n\t\t\tthis._updateEntityReference();\n\t\t}\n\t}\n\t_onSceneLoaded() {\n\t\tthis._updateEntityReference();\n\t}\n\t_updateEntityReference() {\n\t\tlet nextEntityGuid = this._parentComponent.data[this._entityPropertyName];\n\t\tlet nextEntity;\n\t\tif (nextEntityGuid instanceof Entity) {\n\t\t\tnextEntity = nextEntityGuid;\n\t\t\tnextEntityGuid = nextEntity.getGuid();\n\t\t\tthis._parentComponent.data[this._entityPropertyName] = nextEntityGuid;\n\t\t} else {\n\t\t\tconst root = this._parentComponent.system.app.root;\n\t\t\tconst isOnSceneGraph = this._parentComponent.entity.isDescendantOf(root);\n\t\t\tnextEntity = isOnSceneGraph && nextEntityGuid ? root.findByGuid(nextEntityGuid) : null;\n\t\t}\n\t\tconst hasChanged = this._entity !== nextEntity;\n\t\tif (hasChanged) {\n\t\t\tif (this._entity) {\n\t\t\t\tthis._onBeforeEntityChange();\n\t\t\t}\n\t\t\tthis._entity = nextEntity;\n\t\t\tif (this._entity) {\n\t\t\t\tthis._onAfterEntityChange();\n\t\t\t}\n\t\t\tthis.fire('set:entity', this._entity);\n\t\t}\n\t}\n\t_onBeforeEntityChange() {\n\t\tthis._toggleEntityListeners('off');\n\t\tthis._callAllGainOrLoseListeners(this._loseListeners);\n\t}\n\t_onAfterEntityChange() {\n\t\tthis._toggleEntityListeners('on');\n\t\tthis._callAllGainOrLoseListeners(this._gainListeners);\n\t}\n\t_onComponentAdd(entity, component) {\n\t\tconst componentName = component.system.id;\n\t\tif (entity === this._entity) {\n\t\t\tthis._callGainOrLoseListener(componentName, this._gainListeners);\n\t\t\tthis._toggleComponentListeners('on', componentName);\n\t\t}\n\t}\n\t_onComponentRemove(entity, component) {\n\t\tconst componentName = component.system.id;\n\t\tif (entity === this._entity) {\n\t\t\tthis._callGainOrLoseListener(componentName, this._loseListeners);\n\t\t\tthis._toggleComponentListeners('off', componentName, true);\n\t\t}\n\t}\n\t_callAllGainOrLoseListeners(listenerMap) {\n\t\tfor (const componentName in this._entity.c) {\n\t\t\tthis._callGainOrLoseListener(componentName, listenerMap);\n\t\t}\n\t}\n\t_callGainOrLoseListener(componentName, listenerMap) {\n\t\tif (this._entity.c.hasOwnProperty(componentName) && listenerMap[componentName]) {\n\t\t\tconst config = listenerMap[componentName];\n\t\t\tconfig.callback.call(config.scope);\n\t\t}\n\t}\n\t_toggleEntityListeners(onOrOff, isDestroying) {\n\t\tif (this._entity) {\n\t\t\tfor (let i = 0; i < this._eventListenerConfigs.length; ++i) {\n\t\t\t\tthis._safeToggleListener(onOrOff, this._eventListenerConfigs[i], isDestroying);\n\t\t\t}\n\t\t}\n\t}\n\t_toggleComponentListeners(onOrOff, componentName, isDestroying) {\n\t\tfor (let i = 0; i < this._eventListenerConfigs.length; ++i) {\n\t\t\tconst config = this._eventListenerConfigs[i];\n\t\t\tif (config.sourceName === componentName) {\n\t\t\t\tthis._safeToggleListener(onOrOff, config, isDestroying);\n\t\t\t}\n\t\t}\n\t}\n\t_safeToggleListener(onOrOff, config, isDestroying) {\n\t\tconst isAdding = onOrOff === 'on';\n\t\tif (isAdding && this._listenerStatusFlags[config.id]) {\n\t\t\treturn;\n\t\t}\n\t\tconst source = this._getEventSource(config.sourceName, isDestroying);\n\t\tif (source) {\n\t\t\tsource[onOrOff](config.eventName, config.callback, config.scope);\n\t\t\tthis._listenerStatusFlags[config.id] = isAdding;\n\t\t}\n\t}\n\t_getEventSource(sourceName, isDestroying) {\n\t\tif (sourceName === 'entity') {\n\t\t\treturn this._entity;\n\t\t}\n\t\tconst component = this._entity[sourceName];\n\t\tif (component) {\n\t\t\treturn component;\n\t\t}\n\t\tif (!isDestroying) {\n\t\t\tconsole.warn('Entity has no component with name ' + sourceName);\n\t\t}\n\t\treturn null;\n\t}\n\t_onEntityDestroy(entity) {\n\t\tif (this._entity === entity) {\n\t\t\tthis._toggleEntityListeners('off', true);\n\t\t\tthis._entity = null;\n\t\t}\n\t}\n\t_onParentComponentRemove(entity, component) {\n\t\tif (component === this._parentComponent) {\n\t\t\tthis._toggleLifecycleListeners('off');\n\t\t\tthis._toggleEntityListeners('off', true);\n\t\t}\n\t}\n\thasComponent(componentName) {\n\t\treturn this._entity && this._entity.c ? !!this._entity.c[componentName] : false;\n\t}\n\tget entity() {\n\t\treturn this._entity;\n\t}\n}\n\nexport { EntityReference };\n", "import { Quat } from '../../../core/math/quat.js';\nimport { Vec3 } from '../../../core/math/vec3.js';\nimport { Asset } from '../../asset/asset.js';\nimport { Component } from '../component.js';\n\nconst _vec3 = new Vec3();\nconst _quat = new Quat();\nclass CollisionComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t\tthis._compoundParent = null;\n\t\tthis._hasOffset = false;\n\t\tthis.entity.on('insert', this._onInsert, this);\n\t\tthis.on('set_type', this.onSetType, this);\n\t\tthis.on('set_convexHull', this.onSetModel, this);\n\t\tthis.on('set_halfExtents', this.onSetHalfExtents, this);\n\t\tthis.on('set_linearOffset', this.onSetOffset, this);\n\t\tthis.on('set_angularOffset', this.onSetOffset, this);\n\t\tthis.on('set_radius', this.onSetRadius, this);\n\t\tthis.on('set_height', this.onSetHeight, this);\n\t\tthis.on('set_axis', this.onSetAxis, this);\n\t\tthis.on('set_asset', this.onSetAsset, this);\n\t\tthis.on('set_renderAsset', this.onSetRenderAsset, this);\n\t\tthis.on('set_model', this.onSetModel, this);\n\t\tthis.on('set_render', this.onSetRender, this);\n\t}\n\tget data() {\n\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\treturn record ? record.data : null;\n\t}\n\tset enabled(arg) {\n\t\tthis._setValue('enabled', arg);\n\t}\n\tget enabled() {\n\t\treturn this.data.enabled;\n\t}\n\tset type(arg) {\n\t\tthis._setValue('type', arg);\n\t}\n\tget type() {\n\t\treturn this.data.type;\n\t}\n\tset halfExtents(arg) {\n\t\tthis._setValue('halfExtents', arg);\n\t}\n\tget halfExtents() {\n\t\treturn this.data.halfExtents;\n\t}\n\tset linearOffset(arg) {\n\t\tthis._setValue('linearOffset', arg);\n\t}\n\tget linearOffset() {\n\t\treturn this.data.linearOffset;\n\t}\n\tset angularOffset(arg) {\n\t\tthis._setValue('angularOffset', arg);\n\t}\n\tget angularOffset() {\n\t\treturn this.data.angularOffset;\n\t}\n\tset radius(arg) {\n\t\tthis._setValue('radius', arg);\n\t}\n\tget radius() {\n\t\treturn this.data.radius;\n\t}\n\tset axis(arg) {\n\t\tthis._setValue('axis', arg);\n\t}\n\tget axis() {\n\t\treturn this.data.axis;\n\t}\n\tset height(arg) {\n\t\tthis._setValue('height', arg);\n\t}\n\tget height() {\n\t\treturn this.data.height;\n\t}\n\tset asset(arg) {\n\t\tthis._setValue('asset', arg);\n\t}\n\tget asset() {\n\t\treturn this.data.asset;\n\t}\n\tset renderAsset(arg) {\n\t\tthis._setValue('renderAsset', arg);\n\t}\n\tget renderAsset() {\n\t\treturn this.data.renderAsset;\n\t}\n\tset convexHull(arg) {\n\t\tthis._setValue('convexHull', arg);\n\t}\n\tget convexHull() {\n\t\treturn this.data.convexHull;\n\t}\n\tset shape(arg) {\n\t\tthis._setValue('shape', arg);\n\t}\n\tget shape() {\n\t\treturn this.data.shape;\n\t}\n\tset model(arg) {\n\t\tthis._setValue('model', arg);\n\t}\n\tget model() {\n\t\treturn this.data.model;\n\t}\n\tset render(arg) {\n\t\tthis._setValue('render', arg);\n\t}\n\tget render() {\n\t\treturn this.data.render;\n\t}\n\tset checkVertexDuplicates(arg) {\n\t\tthis._setValue('checkVertexDuplicates', arg);\n\t}\n\tget checkVertexDuplicates() {\n\t\treturn this.data.checkVertexDuplicates;\n\t}\n\t_setValue(name, value) {\n\t\tconst data = this.data;\n\t\tconst oldValue = data[name];\n\t\tdata[name] = value;\n\t\tthis.fire('set', name, oldValue, value);\n\t}\n\tonSetType(name, oldValue, newValue) {\n\t\tif (oldValue !== newValue) {\n\t\t\tthis.system.changeType(this, oldValue, newValue);\n\t\t}\n\t}\n\tonSetHalfExtents(name, oldValue, newValue) {\n\t\tconst t = this.data.type;\n\t\tif (this.data.initialized && t === 'box') {\n\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t}\n\t}\n\tonSetOffset(name, oldValue, newValue) {\n\t\tthis._hasOffset = !this.data.linearOffset.equals(Vec3.ZERO) || !this.data.angularOffset.equals(Quat.IDENTITY);\n\t\tif (this.data.initialized) {\n\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t}\n\t}\n\tonSetRadius(name, oldValue, newValue) {\n\t\tconst t = this.data.type;\n\t\tif (this.data.initialized && (t === 'sphere' || t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t}\n\t}\n\tonSetHeight(name, oldValue, newValue) {\n\t\tconst t = this.data.type;\n\t\tif (this.data.initialized && (t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t}\n\t}\n\tonSetAxis(name, oldValue, newValue) {\n\t\tconst t = this.data.type;\n\t\tif (this.data.initialized && (t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t}\n\t}\n\tonSetAsset(name, oldValue, newValue) {\n\t\tconst assets = this.system.app.assets;\n\t\tif (oldValue) {\n\t\t\tconst asset = assets.get(oldValue);\n\t\t\tif (asset) {\n\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t}\n\t\t}\n\t\tif (newValue) {\n\t\t\tif (newValue instanceof Asset) {\n\t\t\t\tthis.data.asset = newValue.id;\n\t\t\t}\n\t\t\tconst asset = assets.get(this.data.asset);\n\t\t\tif (asset) {\n\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\tasset.on('remove', this.onAssetRemoved, this);\n\t\t\t}\n\t\t}\n\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\tif (!newValue) {\n\t\t\t\tthis.data.model = null;\n\t\t\t}\n\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t}\n\t}\n\tonSetRenderAsset(name, oldValue, newValue) {\n\t\tconst assets = this.system.app.assets;\n\t\tif (oldValue) {\n\t\t\tconst asset = assets.get(oldValue);\n\t\t\tif (asset) {\n\t\t\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\t\t}\n\t\t}\n\t\tif (newValue) {\n\t\t\tif (newValue instanceof Asset) {\n\t\t\t\tthis.data.renderAsset = newValue.id;\n\t\t\t}\n\t\t\tconst asset = assets.get(this.data.renderAsset);\n\t\t\tif (asset) {\n\t\t\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\t\t\tasset.on('remove', this.onRenderAssetRemoved, this);\n\t\t\t}\n\t\t}\n\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\tif (!newValue) {\n\t\t\t\tthis.data.render = null;\n\t\t\t}\n\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t}\n\t}\n\tonSetModel(name, oldValue, newValue) {\n\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\tthis.system.implementations.mesh.doRecreatePhysicalShape(this);\n\t\t}\n\t}\n\tonSetRender(name, oldValue, newValue) {\n\t\tthis.onSetModel(name, oldValue, newValue);\n\t}\n\tonAssetRemoved(asset) {\n\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\tif (this.data.asset === asset.id) {\n\t\t\tthis.asset = null;\n\t\t}\n\t}\n\tonRenderAssetRemoved(asset) {\n\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\tif (this.data.renderAsset === asset.id) {\n\t\t\tthis.renderAsset = null;\n\t\t}\n\t}\n\t_getCompoundChildShapeIndex(shape) {\n\t\tconst compound = this.data.shape;\n\t\tconst shapes = compound.getNumChildShapes();\n\t\tfor (let i = 0; i < shapes; i++) {\n\t\t\tconst childShape = compound.getChildShape(i);\n\t\t\tif (childShape.ptr === shape.ptr) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\t_onInsert(parent) {\n\t\tif (typeof Ammo === 'undefined') {\n\t\t\treturn;\n\t\t}\n\t\tif (this._compoundParent) {\n\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t} else if (!this.entity.rigidbody) {\n\t\t\tlet ancestor = this.entity.parent;\n\t\t\twhile (ancestor) {\n\t\t\t\tif (ancestor.collision && ancestor.collision.type === 'compound') {\n\t\t\t\t\tif (ancestor.collision.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(ancestor.collision);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tancestor = ancestor.parent;\n\t\t\t}\n\t\t}\n\t}\n\t_updateCompound() {\n\t\tconst entity = this.entity;\n\t\tif (entity._dirtyWorld) {\n\t\t\tlet dirty = entity._dirtyLocal;\n\t\t\tlet parent = entity;\n\t\t\twhile (parent && !dirty) {\n\t\t\t\tif (parent.collision && parent.collision === this._compoundParent) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (parent._dirtyLocal) {\n\t\t\t\t\tdirty = true;\n\t\t\t\t}\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (dirty) {\n\t\t\t\tentity.forEach(this.system.implementations.compound._updateEachDescendantTransform, entity);\n\t\t\t\tconst bodyComponent = this._compoundParent.entity.rigidbody;\n\t\t\t\tif (bodyComponent) {\n\t\t\t\t\tbodyComponent.activate();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tgetShapePosition() {\n\t\tconst pos = this.entity.getPosition();\n\t\tif (this._hasOffset) {\n\t\t\tconst rot = this.entity.getRotation();\n\t\t\tconst lo = this.data.linearOffset;\n\t\t\t_quat.copy(rot).transformVector(lo, _vec3);\n\t\t\treturn _vec3.add(pos);\n\t\t}\n\t\treturn pos;\n\t}\n\tgetShapeRotation() {\n\t\tconst rot = this.entity.getRotation();\n\t\tif (this._hasOffset) {\n\t\t\treturn _quat.copy(rot).mul(this.data.angularOffset);\n\t\t}\n\t\treturn rot;\n\t}\n\tonEnable() {\n\t\tif (this.data.type === 'mesh' && (this.data.asset || this.data.renderAsset) && this.data.initialized) {\n\t\t\tconst asset = this.system.app.assets.get(this.data.asset || this.data.renderAsset);\n\t\t\tif (asset && (!asset.resource || !this.data.shape)) {\n\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (this.entity.rigidbody) {\n\t\t\tif (this.entity.rigidbody.enabled) {\n\t\t\t\tthis.entity.rigidbody.enableSimulation();\n\t\t\t}\n\t\t} else if (this._compoundParent && this !== this._compoundParent) {\n\t\t\tif (this._compoundParent.shape.getNumChildShapes() === 0) {\n\t\t\t\tthis.system.recreatePhysicalShapes(this._compoundParent);\n\t\t\t} else {\n\t\t\t\tconst transform = this.system._getNodeTransform(this.entity, this._compoundParent.entity);\n\t\t\t\tthis._compoundParent.shape.addChildShape(transform, this.data.shape);\n\t\t\t\tAmmo.destroy(transform);\n\t\t\t\tif (this._compoundParent.entity.rigidbody) {\n\t\t\t\t\tthis._compoundParent.entity.rigidbody.activate();\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.entity.trigger) {\n\t\t\tthis.entity.trigger.enable();\n\t\t}\n\t}\n\tonDisable() {\n\t\tif (this.entity.rigidbody) {\n\t\t\tthis.entity.rigidbody.disableSimulation();\n\t\t} else if (this._compoundParent && this !== this._compoundParent) {\n\t\t\tif (!this._compoundParent.entity._destroying) {\n\t\t\t\tthis.system._removeCompoundChild(this._compoundParent, this.data.shape);\n\t\t\t\tif (this._compoundParent.entity.rigidbody) {\n\t\t\t\t\tthis._compoundParent.entity.rigidbody.activate();\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.entity.trigger) {\n\t\t\tthis.entity.trigger.disable();\n\t\t}\n\t}\n\tonBeforeRemove() {\n\t\tif (this.asset) {\n\t\t\tthis.asset = null;\n\t\t}\n\t\tif (this.renderAsset) {\n\t\t\tthis.renderAsset = null;\n\t\t}\n\t\tthis.entity.off('insert', this._onInsert, this);\n\t\tthis.off();\n\t}\n}\nCollisionComponent.EVENT_CONTACT = 'contact';\nCollisionComponent.EVENT_COLLISIONSTART = 'collisionstart';\nCollisionComponent.EVENT_COLLISIONEND = 'collisionend';\nCollisionComponent.EVENT_TRIGGERENTER = 'triggerenter';\nCollisionComponent.EVENT_TRIGGERLEAVE = 'triggerleave';\n\nexport { CollisionComponent };\n", "import { Quat } from '../../../core/math/quat.js';\nimport { Vec3 } from '../../../core/math/vec3.js';\n\nclass CollisionComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t\tthis.type = 'box';\n\t\tthis.halfExtents = new Vec3(0.5, 0.5, 0.5);\n\t\tthis.linearOffset = new Vec3();\n\t\tthis.angularOffset = new Quat();\n\t\tthis.radius = 0.5;\n\t\tthis.axis = 1;\n\t\tthis.height = 2;\n\t\tthis.convexHull = false;\n\t\tthis.asset = null;\n\t\tthis.renderAsset = null;\n\t\tthis.checkVertexDuplicates = true;\n\t\tthis.shape = null;\n\t\tthis.model = null;\n\t\tthis.render = null;\n\t\tthis.initialized = false;\n\t}\n}\n\nexport { CollisionComponentData };\n", "const BODYTYPE_STATIC = 'static';\nconst BODYTYPE_DYNAMIC = 'dynamic';\nconst BODYTYPE_KINEMATIC = 'kinematic';\nconst BODYFLAG_STATIC_OBJECT = 1;\nconst BODYFLAG_KINEMATIC_OBJECT = 2;\nconst BODYFLAG_NORESPONSE_OBJECT = 4;\nconst BODYSTATE_ACTIVE_TAG = 1;\nconst BODYSTATE_ISLAND_SLEEPING = 2;\nconst BODYSTATE_WANTS_DEACTIVATION = 3;\nconst BODYSTATE_DISABLE_DEACTIVATION = 4;\nconst BODYSTATE_DISABLE_SIMULATION = 5;\nconst BODYGROUP_NONE = 0;\nconst BODYGROUP_DEFAULT = 1;\nconst BODYGROUP_DYNAMIC = 1;\nconst BODYGROUP_STATIC = 2;\nconst BODYGROUP_KINEMATIC = 4;\nconst BODYGROUP_ENGINE_1 = 8;\nconst BODYGROUP_TRIGGER = 16;\nconst BODYGROUP_ENGINE_2 = 32;\nconst BODYGROUP_ENGINE_3 = 64;\nconst BODYGROUP_USER_1 = 128;\nconst BODYGROUP_USER_2 = 256;\nconst BODYGROUP_USER_3 = 512;\nconst BODYGROUP_USER_4 = 1024;\nconst BODYGROUP_USER_5 = 2048;\nconst BODYGROUP_USER_6 = 4096;\nconst BODYGROUP_USER_7 = 8192;\nconst BODYGROUP_USER_8 = 16384;\nconst BODYMASK_NONE = 0;\nconst BODYMASK_ALL = 65535;\nconst BODYMASK_STATIC = 2;\nconst BODYMASK_NOT_STATIC = 65535 ^ 2;\nconst BODYMASK_NOT_STATIC_KINEMATIC = 65535 ^ (2 | 4);\n\nexport { BODYFLAG_KINEMATIC_OBJECT, BODYFLAG_NORESPONSE_OBJECT, BODYFLAG_STATIC_OBJECT, BODYGROUP_DEFAULT, BODYGROUP_DYNAMIC, BODYGROUP_ENGINE_1, BODYGROUP_ENGINE_2, BODYGROUP_ENGINE_3, BODYGROUP_KINEMATIC, BODYGROUP_NONE, BODYGROUP_STATIC, BODYGROUP_TRIGGER, BODYGROUP_USER_1, BODYGROUP_USER_2, BODYGROUP_USER_3, BODYGROUP_USER_4, BODYGROUP_USER_5, BODYGROUP_USER_6, BODYGROUP_USER_7, BODYGROUP_USER_8, BODYMASK_ALL, BODYMASK_NONE, BODYMASK_NOT_STATIC, BODYMASK_NOT_STATIC_KINEMATIC, BODYMASK_STATIC, BODYSTATE_ACTIVE_TAG, BODYSTATE_DISABLE_DEACTIVATION, BODYSTATE_DISABLE_SIMULATION, BODYSTATE_ISLAND_SLEEPING, BODYSTATE_WANTS_DEACTIVATION, BODYTYPE_DYNAMIC, BODYTYPE_KINEMATIC, BODYTYPE_STATIC };\n", "import { BODYFLAG_NORESPONSE_OBJECT, BODYGROUP_TRIGGER, BODYMASK_NOT_STATIC, BODYSTATE_ACTIVE_TAG, BODYSTATE_DISABLE_SIMULATION } from '../rigid-body/constants.js';\n\nlet _ammoVec1, _ammoQuat, _ammoTransform;\nclass Trigger {\n\tconstructor(app, component, data) {\n\t\tthis.entity = component.entity;\n\t\tthis.component = component;\n\t\tthis.app = app;\n\t\tif (typeof Ammo !== 'undefined' && !_ammoVec1) {\n\t\t\t_ammoVec1 = new Ammo.btVector3();\n\t\t\t_ammoQuat = new Ammo.btQuaternion();\n\t\t\t_ammoTransform = new Ammo.btTransform();\n\t\t}\n\t\tthis.initialize(data);\n\t}\n\tinitialize(data) {\n\t\tconst entity = this.entity;\n\t\tconst shape = data.shape;\n\t\tif (shape && typeof Ammo !== 'undefined') {\n\t\t\tif (entity.trigger) {\n\t\t\t\tentity.trigger.destroy();\n\t\t\t}\n\t\t\tconst mass = 1;\n\t\t\tconst component = this.component;\n\t\t\tif (component) {\n\t\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t\t_ammoVec1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t\t_ammoQuat.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t\t} else {\n\t\t\t\tconst pos = entity.getPosition();\n\t\t\t\tconst rot = entity.getRotation();\n\t\t\t\t_ammoVec1.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t_ammoQuat.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t}\n\t\t\t_ammoTransform.setOrigin(_ammoVec1);\n\t\t\t_ammoTransform.setRotation(_ammoQuat);\n\t\t\tconst body = this.app.systems.rigidbody.createBody(mass, shape, _ammoTransform);\n\t\t\tbody.setRestitution(0);\n\t\t\tbody.setFriction(0);\n\t\t\tbody.setDamping(0, 0);\n\t\t\t_ammoVec1.setValue(0, 0, 0);\n\t\t\tbody.setLinearFactor(_ammoVec1);\n\t\t\tbody.setAngularFactor(_ammoVec1);\n\t\t\tbody.setCollisionFlags(body.getCollisionFlags() | BODYFLAG_NORESPONSE_OBJECT);\n\t\t\tbody.entity = entity;\n\t\t\tthis.body = body;\n\t\t\tif (this.component.enabled && entity.enabled) {\n\t\t\t\tthis.enable();\n\t\t\t}\n\t\t}\n\t}\n\tdestroy() {\n\t\tconst body = this.body;\n\t\tif (!body) return;\n\t\tthis.disable();\n\t\tthis.app.systems.rigidbody.destroyBody(body);\n\t}\n\t_getEntityTransform(transform) {\n\t\tconst component = this.component;\n\t\tif (component) {\n\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t_ammoVec1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t_ammoQuat.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t} else {\n\t\t\tconst pos = this.entity.getPosition();\n\t\t\tconst rot = this.entity.getRotation();\n\t\t\t_ammoVec1.setValue(pos.x, pos.y, pos.z);\n\t\t\t_ammoQuat.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t}\n\t\ttransform.setOrigin(_ammoVec1);\n\t\ttransform.setRotation(_ammoQuat);\n\t}\n\tupdateTransform() {\n\t\tthis._getEntityTransform(_ammoTransform);\n\t\tconst body = this.body;\n\t\tbody.setWorldTransform(_ammoTransform);\n\t\tbody.activate();\n\t}\n\tenable() {\n\t\tconst body = this.body;\n\t\tif (!body) return;\n\t\tconst systems = this.app.systems;\n\t\tsystems.rigidbody.addBody(body, BODYGROUP_TRIGGER, BODYMASK_NOT_STATIC ^ BODYGROUP_TRIGGER);\n\t\tsystems.rigidbody._triggers.push(this);\n\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\tthis.updateTransform();\n\t}\n\tdisable() {\n\t\tconst body = this.body;\n\t\tif (!body) return;\n\t\tconst systems = this.app.systems;\n\t\tconst idx = systems.rigidbody._triggers.indexOf(this);\n\t\tif (idx > -1) {\n\t\t\tsystems.rigidbody._triggers.splice(idx, 1);\n\t\t}\n\t\tsystems.rigidbody.removeBody(body);\n\t\tbody.forceActivationState(BODYSTATE_DISABLE_SIMULATION);\n\t}\n}\n\nexport { Trigger };\n", "import { Mat4 } from '../../../core/math/mat4.js';\nimport { Quat } from '../../../core/math/quat.js';\nimport { Vec3 } from '../../../core/math/vec3.js';\nimport { SEMANTIC_POSITION } from '../../../platform/graphics/constants.js';\nimport { GraphNode } from '../../../scene/graph-node.js';\nimport { Model } from '../../../scene/model.js';\nimport { ComponentSystem } from '../system.js';\nimport { CollisionComponent } from './component.js';\nimport { CollisionComponentData } from './data.js';\nimport { Trigger } from './trigger.js';\n\nconst mat4 = new Mat4();\nconst p1 = new Vec3();\nconst p2 = new Vec3();\nconst quat = new Quat();\nconst tempGraphNode = new GraphNode();\nconst _schema = ['enabled', 'type', 'halfExtents', 'linearOffset', 'angularOffset', 'radius', 'axis', 'height', 'convexHull', 'asset', 'renderAsset', 'shape', 'model', 'render', 'checkVertexDuplicates'];\nclass CollisionSystemImpl {\n\tconstructor(system) {\n\t\tthis.system = system;\n\t}\n\tbeforeInitialize(component, data) {\n\t\tdata.shape = null;\n\t\tdata.model = new Model();\n\t\tdata.model.graph = new GraphNode();\n\t}\n\tafterInitialize(component, data) {\n\t\tthis.recreatePhysicalShapes(component);\n\t\tcomponent.data.initialized = true;\n\t}\n\treset(component, data) {\n\t\tthis.beforeInitialize(component, data);\n\t\tthis.afterInitialize(component, data);\n\t}\n\trecreatePhysicalShapes(component) {\n\t\tconst entity = component.entity;\n\t\tconst data = component.data;\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\tif (entity.trigger) {\n\t\t\t\tentity.trigger.destroy();\n\t\t\t\tdelete entity.trigger;\n\t\t\t}\n\t\t\tif (data.shape) {\n\t\t\t\tif (component._compoundParent) {\n\t\t\t\t\tthis.system._removeCompoundChild(component._compoundParent, data.shape);\n\t\t\t\t\tif (component._compoundParent.entity.rigidbody) component._compoundParent.entity.rigidbody.activate();\n\t\t\t\t}\n\t\t\t\tthis.destroyShape(data);\n\t\t\t}\n\t\t\tdata.shape = this.createPhysicalShape(component.entity, data);\n\t\t\tconst firstCompoundChild = !component._compoundParent;\n\t\t\tif (data.type === 'compound' && (!component._compoundParent || component === component._compoundParent)) {\n\t\t\t\tcomponent._compoundParent = component;\n\t\t\t\tentity.forEach(this._addEachDescendant, component);\n\t\t\t} else if (data.type !== 'compound') {\n\t\t\t\tif (component._compoundParent && component === component._compoundParent) {\n\t\t\t\t\tentity.forEach(this.system.implementations.compound._updateEachDescendant, component);\n\t\t\t\t}\n\t\t\t\tif (!component.rigidbody) {\n\t\t\t\t\tcomponent._compoundParent = null;\n\t\t\t\t\tlet parent = entity.parent;\n\t\t\t\t\twhile (parent) {\n\t\t\t\t\t\tif (parent.collision && parent.collision.type === 'compound') {\n\t\t\t\t\t\t\tcomponent._compoundParent = parent.collision;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (component._compoundParent) {\n\t\t\t\tif (component !== component._compoundParent) {\n\t\t\t\t\tif (firstCompoundChild && component._compoundParent.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(component._compoundParent);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.system.updateCompoundChildTransform(entity);\n\t\t\t\t\t\tif (component._compoundParent.entity.rigidbody) component._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (entity.rigidbody) {\n\t\t\t\tentity.rigidbody.disableSimulation();\n\t\t\t\tentity.rigidbody.createBody();\n\t\t\t\tif (entity.enabled && entity.rigidbody.enabled) {\n\t\t\t\t\tentity.rigidbody.enableSimulation();\n\t\t\t\t}\n\t\t\t} else if (!component._compoundParent) {\n\t\t\t\tif (!entity.trigger) {\n\t\t\t\t\tentity.trigger = new Trigger(this.system.app, component, data);\n\t\t\t\t} else {\n\t\t\t\t\tentity.trigger.initialize(data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tcreatePhysicalShape(entity, data) {\n\t\treturn undefined;\n\t}\n\tupdateTransform(component, position, rotation, scale) {\n\t\tif (component.entity.trigger) {\n\t\t\tcomponent.entity.trigger.updateTransform();\n\t\t}\n\t}\n\tdestroyShape(data) {\n\t\tif (data.shape) {\n\t\t\tAmmo.destroy(data.shape);\n\t\t\tdata.shape = null;\n\t\t}\n\t}\n\tbeforeRemove(entity, component) {\n\t\tif (component.data.shape) {\n\t\t\tif (component._compoundParent && !component._compoundParent.entity._destroying) {\n\t\t\t\tthis.system._removeCompoundChild(component._compoundParent, component.data.shape);\n\t\t\t\tif (component._compoundParent.entity.rigidbody) component._compoundParent.entity.rigidbody.activate();\n\t\t\t}\n\t\t\tcomponent._compoundParent = null;\n\t\t\tthis.destroyShape(component.data);\n\t\t}\n\t}\n\tremove(entity, data) {\n\t\tif (entity.rigidbody && entity.rigidbody.body) {\n\t\t\tentity.rigidbody.disableSimulation();\n\t\t}\n\t\tif (entity.trigger) {\n\t\t\tentity.trigger.destroy();\n\t\t\tdelete entity.trigger;\n\t\t}\n\t}\n\tclone(entity, clone) {\n\t\tconst src = this.system.store[entity.getGuid()];\n\t\tconst data = {\n\t\t\tenabled: src.data.enabled,\n\t\t\ttype: src.data.type,\n\t\t\thalfExtents: [src.data.halfExtents.x, src.data.halfExtents.y, src.data.halfExtents.z],\n\t\t\tlinearOffset: [src.data.linearOffset.x, src.data.linearOffset.y, src.data.linearOffset.z],\n\t\t\tangularOffset: [src.data.angularOffset.x, src.data.angularOffset.y, src.data.angularOffset.z, src.data.angularOffset.w],\n\t\t\tradius: src.data.radius,\n\t\t\taxis: src.data.axis,\n\t\t\theight: src.data.height,\n\t\t\tconvexHull: src.data.convexHull,\n\t\t\tasset: src.data.asset,\n\t\t\trenderAsset: src.data.renderAsset,\n\t\t\tmodel: src.data.model,\n\t\t\trender: src.data.render,\n\t\t\tcheckVertexDuplicates: src.data.checkVertexDuplicates\n\t\t};\n\t\treturn this.system.addComponent(clone, data);\n\t}\n}\nclass CollisionBoxSystemImpl extends CollisionSystemImpl {\n\tcreatePhysicalShape(entity, data) {\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\tconst he = data.halfExtents;\n\t\t\tconst ammoHe = new Ammo.btVector3(he ? he.x : 0.5, he ? he.y : 0.5, he ? he.z : 0.5);\n\t\t\tconst shape = new Ammo.btBoxShape(ammoHe);\n\t\t\tAmmo.destroy(ammoHe);\n\t\t\treturn shape;\n\t\t}\n\t\treturn undefined;\n\t}\n}\nclass CollisionSphereSystemImpl extends CollisionSystemImpl {\n\tcreatePhysicalShape(entity, data) {\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\treturn new Ammo.btSphereShape(data.radius);\n\t\t}\n\t\treturn undefined;\n\t}\n}\nclass CollisionCapsuleSystemImpl extends CollisionSystemImpl {\n\tcreatePhysicalShape(entity, data) {\n\t\tvar _data$axis, _data$radius, _data$height;\n\t\tconst axis = (_data$axis = data.axis) != null ? _data$axis : 1;\n\t\tconst radius = (_data$radius = data.radius) != null ? _data$radius : 0.5;\n\t\tconst height = Math.max(((_data$height = data.height) != null ? _data$height : 2) - 2 * radius, 0);\n\t\tlet shape = null;\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\tswitch (axis) {\n\t\t\t\tcase 0:\n\t\t\t\t\tshape = new Ammo.btCapsuleShapeX(radius, height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tshape = new Ammo.btCapsuleShape(radius, height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tshape = new Ammo.btCapsuleShapeZ(radius, height);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn shape;\n\t}\n}\nclass CollisionCylinderSystemImpl extends CollisionSystemImpl {\n\tcreatePhysicalShape(entity, data) {\n\t\tvar _data$axis2, _data$radius2, _data$height2;\n\t\tconst axis = (_data$axis2 = data.axis) != null ? _data$axis2 : 1;\n\t\tconst radius = (_data$radius2 = data.radius) != null ? _data$radius2 : 0.5;\n\t\tconst height = (_data$height2 = data.height) != null ? _data$height2 : 1;\n\t\tlet halfExtents = null;\n\t\tlet shape = null;\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\tswitch (axis) {\n\t\t\t\tcase 0:\n\t\t\t\t\thalfExtents = new Ammo.btVector3(height * 0.5, radius, radius);\n\t\t\t\t\tshape = new Ammo.btCylinderShapeX(halfExtents);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\thalfExtents = new Ammo.btVector3(radius, height * 0.5, radius);\n\t\t\t\t\tshape = new Ammo.btCylinderShape(halfExtents);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\thalfExtents = new Ammo.btVector3(radius, radius, height * 0.5);\n\t\t\t\t\tshape = new Ammo.btCylinderShapeZ(halfExtents);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (halfExtents) Ammo.destroy(halfExtents);\n\t\treturn shape;\n\t}\n}\nclass CollisionConeSystemImpl extends CollisionSystemImpl {\n\tcreatePhysicalShape(entity, data) {\n\t\tvar _data$axis3, _data$radius3, _data$height3;\n\t\tconst axis = (_data$axis3 = data.axis) != null ? _data$axis3 : 1;\n\t\tconst radius = (_data$radius3 = data.radius) != null ? _data$radius3 : 0.5;\n\t\tconst height = (_data$height3 = data.height) != null ? _data$height3 : 1;\n\t\tlet shape = null;\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\tswitch (axis) {\n\t\t\t\tcase 0:\n\t\t\t\t\tshape = new Ammo.btConeShapeX(radius, height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tshape = new Ammo.btConeShape(radius, height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tshape = new Ammo.btConeShapeZ(radius, height);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn shape;\n\t}\n}\nclass CollisionMeshSystemImpl extends CollisionSystemImpl {\n\tbeforeInitialize(component, data) {}\n\tcreateAmmoHull(mesh, node, shape, scale) {\n\t\tconst hull = new Ammo.btConvexHullShape();\n\t\tconst point = new Ammo.btVector3();\n\t\tconst positions = [];\n\t\tmesh.getPositions(positions);\n\t\tfor (let i = 0; i < positions.length; i += 3) {\n\t\t\tpoint.setValue(positions[i] * scale.x, positions[i + 1] * scale.y, positions[i + 2] * scale.z);\n\t\t\thull.addPoint(point, false);\n\t\t}\n\t\tAmmo.destroy(point);\n\t\thull.recalcLocalAabb();\n\t\thull.setMargin(0.01);\n\t\tshape.addChildShape(this.system._getNodeTransform(node), hull);\n\t}\n\tcreateAmmoMesh(mesh, node, shape, scale, checkDupes = true) {\n\t\tconst system = this.system;\n\t\tlet triMesh;\n\t\tif (system._triMeshCache[mesh.id]) {\n\t\t\ttriMesh = system._triMeshCache[mesh.id];\n\t\t} else {\n\t\t\tconst vb = mesh.vertexBuffer;\n\t\t\tconst format = vb.getFormat();\n\t\t\tlet stride, positions;\n\t\t\tfor (let _i = 0; _i < format.elements.length; _i++) {\n\t\t\t\tconst element = format.elements[_i];\n\t\t\t\tif (element.name === SEMANTIC_POSITION) {\n\t\t\t\t\tpositions = new Float32Array(vb.lock(), element.offset);\n\t\t\t\t\tstride = element.stride / 4;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst indices = [];\n\t\t\tmesh.getIndices(indices);\n\t\t\tconst numTriangles = mesh.primitive[0].count / 3;\n\t\t\tconst v1 = new Ammo.btVector3();\n\t\t\tlet i1, i2, i3;\n\t\t\tconst base = mesh.primitive[0].base;\n\t\t\ttriMesh = new Ammo.btTriangleMesh();\n\t\t\tsystem._triMeshCache[mesh.id] = triMesh;\n\t\t\tconst vertexCache = new Map();\n\t\t\tconst indexedArray = triMesh.getIndexedMeshArray();\n\t\t\tindexedArray.at(0).m_numTriangles = numTriangles;\n\t\t\tconst sx = scale ? scale.x : 1;\n\t\t\tconst sy = scale ? scale.y : 1;\n\t\t\tconst sz = scale ? scale.z : 1;\n\t\t\tconst addVertex = index => {\n\t\t\t\tconst x = positions[index * stride] * sx;\n\t\t\t\tconst y = positions[index * stride + 1] * sy;\n\t\t\t\tconst z = positions[index * stride + 2] * sz;\n\t\t\t\tlet idx;\n\t\t\t\tif (checkDupes) {\n\t\t\t\t\tconst str = `${x}:${y}:${z}`;\n\t\t\t\t\tidx = vertexCache.get(str);\n\t\t\t\t\tif (idx !== undefined) {\n\t\t\t\t\t\treturn idx;\n\t\t\t\t\t}\n\t\t\t\t\tv1.setValue(x, y, z);\n\t\t\t\t\tidx = triMesh.findOrAddVertex(v1, false);\n\t\t\t\t\tvertexCache.set(str, idx);\n\t\t\t\t} else {\n\t\t\t\t\tv1.setValue(x, y, z);\n\t\t\t\t\tidx = triMesh.findOrAddVertex(v1, false);\n\t\t\t\t}\n\t\t\t\treturn idx;\n\t\t\t};\n\t\t\tfor (var i = 0; i < numTriangles; i++) {\n\t\t\t\ti1 = addVertex(indices[base + i * 3]);\n\t\t\t\ti2 = addVertex(indices[base + i * 3 + 1]);\n\t\t\t\ti3 = addVertex(indices[base + i * 3 + 2]);\n\t\t\t\ttriMesh.addIndex(i1);\n\t\t\t\ttriMesh.addIndex(i2);\n\t\t\t\ttriMesh.addIndex(i3);\n\t\t\t}\n\t\t\tAmmo.destroy(v1);\n\t\t}\n\t\tconst triMeshShape = new Ammo.btBvhTriangleMeshShape(triMesh, true);\n\t\tif (!scale) {\n\t\t\tconst scaling = system._getNodeScaling(node);\n\t\t\ttriMeshShape.setLocalScaling(scaling);\n\t\t\tAmmo.destroy(scaling);\n\t\t}\n\t\tconst transform = system._getNodeTransform(node);\n\t\tshape.addChildShape(transform, triMeshShape);\n\t\tAmmo.destroy(transform);\n\t}\n\tcreatePhysicalShape(entity, data) {\n\t\tif (typeof Ammo === 'undefined') return undefined;\n\t\tif (data.model || data.render) {\n\t\t\tconst shape = new Ammo.btCompoundShape();\n\t\t\tconst entityTransform = entity.getWorldTransform();\n\t\t\tconst scale = entityTransform.getScale();\n\t\t\tif (data.model) {\n\t\t\t\tconst meshInstances = data.model.meshInstances;\n\t\t\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\t\t\tthis.createAmmoMesh(meshInstances[i].mesh, meshInstances[i].node, shape, null, data.checkVertexDuplicates);\n\t\t\t\t}\n\t\t\t\tconst vec = new Ammo.btVector3(scale.x, scale.y, scale.z);\n\t\t\t\tshape.setLocalScaling(vec);\n\t\t\t\tAmmo.destroy(vec);\n\t\t\t} else if (data.render) {\n\t\t\t\tconst meshes = data.render.meshes;\n\t\t\t\tfor (let i = 0; i < meshes.length; i++) {\n\t\t\t\t\tif (data.convexHull) {\n\t\t\t\t\t\tthis.createAmmoHull(meshes[i], tempGraphNode, shape, scale);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.createAmmoMesh(meshes[i], tempGraphNode, shape, scale, data.checkVertexDuplicates);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn shape;\n\t\t}\n\t\treturn undefined;\n\t}\n\trecreatePhysicalShapes(component) {\n\t\tconst data = component.data;\n\t\tif (data.renderAsset || data.asset) {\n\t\t\tif (component.enabled && component.entity.enabled) {\n\t\t\t\tthis.loadAsset(component, data.renderAsset || data.asset, data.renderAsset ? 'render' : 'model');\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tthis.doRecreatePhysicalShape(component);\n\t}\n\tloadAsset(component, id, property) {\n\t\tconst data = component.data;\n\t\tconst assets = this.system.app.assets;\n\t\tconst previousPropertyValue = data[property];\n\t\tconst onAssetFullyReady = asset => {\n\t\t\tif (data[property] !== previousPropertyValue) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdata[property] = asset.resource;\n\t\t\tthis.doRecreatePhysicalShape(component);\n\t\t};\n\t\tconst loadAndHandleAsset = asset => {\n\t\t\tasset.ready(asset => {\n\t\t\t\tif (asset.data.containerAsset) {\n\t\t\t\t\tconst containerAsset = assets.get(asset.data.containerAsset);\n\t\t\t\t\tif (containerAsset.loaded) {\n\t\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontainerAsset.ready(() => {\n\t\t\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tassets.load(containerAsset);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t}\n\t\t\t});\n\t\t\tassets.load(asset);\n\t\t};\n\t\tconst asset = assets.get(id);\n\t\tif (asset) {\n\t\t\tloadAndHandleAsset(asset);\n\t\t} else {\n\t\t\tassets.once('add:' + id, loadAndHandleAsset);\n\t\t}\n\t}\n\tdoRecreatePhysicalShape(component) {\n\t\tconst entity = component.entity;\n\t\tconst data = component.data;\n\t\tif (data.model || data.render) {\n\t\t\tthis.destroyShape(data);\n\t\t\tdata.shape = this.createPhysicalShape(entity, data);\n\t\t\tif (entity.rigidbody) {\n\t\t\t\tentity.rigidbody.disableSimulation();\n\t\t\t\tentity.rigidbody.createBody();\n\t\t\t\tif (entity.enabled && entity.rigidbody.enabled) {\n\t\t\t\t\tentity.rigidbody.enableSimulation();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!entity.trigger) {\n\t\t\t\t\tentity.trigger = new Trigger(this.system.app, component, data);\n\t\t\t\t} else {\n\t\t\t\t\tentity.trigger.initialize(data);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.beforeRemove(entity, component);\n\t\t\tthis.remove(entity, data);\n\t\t}\n\t}\n\tupdateTransform(component, position, rotation, scale) {\n\t\tif (component.shape) {\n\t\t\tconst entityTransform = component.entity.getWorldTransform();\n\t\t\tconst worldScale = entityTransform.getScale();\n\t\t\tconst previousScale = component.shape.getLocalScaling();\n\t\t\tif (worldScale.x !== previousScale.x() || worldScale.y !== previousScale.y() || worldScale.z !== previousScale.z()) {\n\t\t\t\tthis.doRecreatePhysicalShape(component);\n\t\t\t}\n\t\t}\n\t\tsuper.updateTransform(component, position, rotation, scale);\n\t}\n\tdestroyShape(data) {\n\t\tif (!data.shape) return;\n\t\tconst numShapes = data.shape.getNumChildShapes();\n\t\tfor (let i = 0; i < numShapes; i++) {\n\t\t\tconst shape = data.shape.getChildShape(i);\n\t\t\tAmmo.destroy(shape);\n\t\t}\n\t\tAmmo.destroy(data.shape);\n\t\tdata.shape = null;\n\t}\n}\nclass CollisionCompoundSystemImpl extends CollisionSystemImpl {\n\tcreatePhysicalShape(entity, data) {\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\treturn new Ammo.btCompoundShape();\n\t\t}\n\t\treturn undefined;\n\t}\n\t_addEachDescendant(entity) {\n\t\tif (!entity.collision || entity.rigidbody) return;\n\t\tentity.collision._compoundParent = this;\n\t\tif (entity !== this.entity) {\n\t\t\tentity.collision.system.recreatePhysicalShapes(entity.collision);\n\t\t}\n\t}\n\t_updateEachDescendant(entity) {\n\t\tif (!entity.collision) return;\n\t\tif (entity.collision._compoundParent !== this) return;\n\t\tentity.collision._compoundParent = null;\n\t\tif (entity !== this.entity && !entity.rigidbody) {\n\t\t\tentity.collision.system.recreatePhysicalShapes(entity.collision);\n\t\t}\n\t}\n\t_updateEachDescendantTransform(entity) {\n\t\tif (!entity.collision || entity.collision._compoundParent !== this.collision._compoundParent) return;\n\t\tthis.collision.system.updateCompoundChildTransform(entity);\n\t}\n}\nclass CollisionComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.id = 'collision';\n\t\tthis.ComponentType = CollisionComponent;\n\t\tthis.DataType = CollisionComponentData;\n\t\tthis.schema = _schema;\n\t\tthis.implementations = {};\n\t\tthis._triMeshCache = {};\n\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\tthis.on('remove', this.onRemove, this);\n\t}\n\tinitializeComponentData(component, _data, properties) {\n\t\tproperties = ['type', 'halfExtents', 'radius', 'axis', 'height', 'convexHull', 'shape', 'model', 'asset', 'render', 'renderAsset', 'enabled', 'linearOffset', 'angularOffset', 'checkVertexDuplicates'];\n\t\tconst data = {};\n\t\tfor (let i = 0, len = properties.length; i < len; i++) {\n\t\t\tconst property = properties[i];\n\t\t\tdata[property] = _data[property];\n\t\t}\n\t\tlet idx;\n\t\tif (_data.hasOwnProperty('asset')) {\n\t\t\tidx = properties.indexOf('model');\n\t\t\tif (idx !== -1) {\n\t\t\t\tproperties.splice(idx, 1);\n\t\t\t}\n\t\t\tidx = properties.indexOf('render');\n\t\t\tif (idx !== -1) {\n\t\t\t\tproperties.splice(idx, 1);\n\t\t\t}\n\t\t} else if (_data.hasOwnProperty('model')) {\n\t\t\tidx = properties.indexOf('asset');\n\t\t\tif (idx !== -1) {\n\t\t\t\tproperties.splice(idx, 1);\n\t\t\t}\n\t\t}\n\t\tif (!data.type) {\n\t\t\tdata.type = component.data.type;\n\t\t}\n\t\tcomponent.data.type = data.type;\n\t\tif (Array.isArray(data.halfExtents)) {\n\t\t\tdata.halfExtents = new Vec3(data.halfExtents);\n\t\t}\n\t\tif (Array.isArray(data.linearOffset)) {\n\t\t\tdata.linearOffset = new Vec3(data.linearOffset);\n\t\t}\n\t\tif (Array.isArray(data.angularOffset)) {\n\t\t\tconst values = data.angularOffset;\n\t\t\tif (values.length === 3) {\n\t\t\t\tdata.angularOffset = new Quat().setFromEulerAngles(values[0], values[1], values[2]);\n\t\t\t} else {\n\t\t\t\tdata.angularOffset = new Quat(data.angularOffset);\n\t\t\t}\n\t\t}\n\t\tconst impl = this._createImplementation(data.type);\n\t\timpl.beforeInitialize(component, data);\n\t\tsuper.initializeComponentData(component, data, properties);\n\t\timpl.afterInitialize(component, data);\n\t}\n\t_createImplementation(type) {\n\t\tif (this.implementations[type] === undefined) {\n\t\t\tlet impl;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'box':\n\t\t\t\t\timpl = new CollisionBoxSystemImpl(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'sphere':\n\t\t\t\t\timpl = new CollisionSphereSystemImpl(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'capsule':\n\t\t\t\t\timpl = new CollisionCapsuleSystemImpl(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'cylinder':\n\t\t\t\t\timpl = new CollisionCylinderSystemImpl(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'cone':\n\t\t\t\t\timpl = new CollisionConeSystemImpl(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'mesh':\n\t\t\t\t\timpl = new CollisionMeshSystemImpl(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'compound':\n\t\t\t\t\timpl = new CollisionCompoundSystemImpl(this);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.implementations[type] = impl;\n\t\t}\n\t\treturn this.implementations[type];\n\t}\n\t_getImplementation(entity) {\n\t\treturn this.implementations[entity.collision.data.type];\n\t}\n\tcloneComponent(entity, clone) {\n\t\treturn this._getImplementation(entity).clone(entity, clone);\n\t}\n\tonBeforeRemove(entity, component) {\n\t\tthis.implementations[component.data.type].beforeRemove(entity, component);\n\t\tcomponent.onBeforeRemove();\n\t}\n\tonRemove(entity, data) {\n\t\tthis.implementations[data.type].remove(entity, data);\n\t}\n\tupdateCompoundChildTransform(entity) {\n\t\tthis._removeCompoundChild(entity.collision._compoundParent, entity.collision.data.shape);\n\t\tif (entity.enabled && entity.collision.enabled) {\n\t\t\tconst transform = this._getNodeTransform(entity, entity.collision._compoundParent.entity);\n\t\t\tentity.collision._compoundParent.shape.addChildShape(transform, entity.collision.data.shape);\n\t\t\tAmmo.destroy(transform);\n\t\t}\n\t}\n\t_removeCompoundChild(collision, shape) {\n\t\tif (collision.shape.removeChildShape) {\n\t\t\tcollision.shape.removeChildShape(shape);\n\t\t} else {\n\t\t\tconst ind = collision._getCompoundChildShapeIndex(shape);\n\t\t\tif (ind !== null) {\n\t\t\t\tcollision.shape.removeChildShapeByIndex(ind);\n\t\t\t}\n\t\t}\n\t}\n\tonTransformChanged(component, position, rotation, scale) {\n\t\tthis.implementations[component.data.type].updateTransform(component, position, rotation, scale);\n\t}\n\tchangeType(component, previousType, newType) {\n\t\tthis.implementations[previousType].beforeRemove(component.entity, component);\n\t\tthis.implementations[previousType].remove(component.entity, component.data);\n\t\tthis._createImplementation(newType).reset(component, component.data);\n\t}\n\trecreatePhysicalShapes(component) {\n\t\tthis.implementations[component.data.type].recreatePhysicalShapes(component);\n\t}\n\t_calculateNodeRelativeTransform(node, relative) {\n\t\tif (node === relative) {\n\t\t\tconst scale = node.getWorldTransform().getScale();\n\t\t\tmat4.setScale(scale.x, scale.y, scale.z);\n\t\t} else {\n\t\t\tthis._calculateNodeRelativeTransform(node.parent, relative);\n\t\t\tmat4.mul(node.getLocalTransform());\n\t\t}\n\t}\n\t_getNodeScaling(node) {\n\t\tconst wtm = node.getWorldTransform();\n\t\tconst scl = wtm.getScale();\n\t\treturn new Ammo.btVector3(scl.x, scl.y, scl.z);\n\t}\n\t_getNodeTransform(node, relative) {\n\t\tlet pos, rot;\n\t\tif (relative) {\n\t\t\tthis._calculateNodeRelativeTransform(node, relative);\n\t\t\tpos = p1;\n\t\t\trot = quat;\n\t\t\tmat4.getTranslation(pos);\n\t\t\trot.setFromMat4(mat4);\n\t\t} else {\n\t\t\tpos = node.getPosition();\n\t\t\trot = node.getRotation();\n\t\t}\n\t\tconst ammoQuat = new Ammo.btQuaternion();\n\t\tconst transform = new Ammo.btTransform();\n\t\ttransform.setIdentity();\n\t\tconst origin = transform.getOrigin();\n\t\tconst component = node.collision;\n\t\tif (component && component._hasOffset) {\n\t\t\tconst lo = component.data.linearOffset;\n\t\t\tconst ao = component.data.angularOffset;\n\t\t\tconst newOrigin = p2;\n\t\t\tquat.copy(rot).transformVector(lo, newOrigin);\n\t\t\tnewOrigin.add(pos);\n\t\t\tquat.copy(rot).mul(ao);\n\t\t\torigin.setValue(newOrigin.x, newOrigin.y, newOrigin.z);\n\t\t\tammoQuat.setValue(quat.x, quat.y, quat.z, quat.w);\n\t\t} else {\n\t\t\torigin.setValue(pos.x, pos.y, pos.z);\n\t\t\tammoQuat.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t}\n\t\ttransform.setRotation(ammoQuat);\n\t\tAmmo.destroy(ammoQuat);\n\t\tAmmo.destroy(origin);\n\t\treturn transform;\n\t}\n\tdestroy() {\n\t\tfor (const key in this._triMeshCache) {\n\t\t\tAmmo.destroy(this._triMeshCache[key]);\n\t\t}\n\t\tthis._triMeshCache = null;\n\t\tsuper.destroy();\n\t}\n}\n\nexport { CollisionComponentSystem };\n", "import { Vec2 } from '../../core/math/vec2.js';\nimport { CapsuleGeometry } from '../../scene/geometry/capsule-geometry.js';\nimport { ConeGeometry } from '../../scene/geometry/cone-geometry.js';\nimport { CylinderGeometry } from '../../scene/geometry/cylinder-geometry.js';\nimport { TorusGeometry } from '../../scene/geometry/torus-geometry.js';\nimport { Mesh } from '../../scene/mesh.js';\nimport { BoxGeometry } from '../../scene/geometry/box-geometry.js';\nimport { SphereGeometry } from '../../scene/geometry/sphere-geometry.js';\nimport { PlaneGeometry } from '../../scene/geometry/plane-geometry.js';\n\nconst shapePrimitives = [];\nfunction getShapePrimitive(device, type) {\n\tlet primData = null;\n\tfor (let i = 0; i < shapePrimitives.length; i++) {\n\t\tif (shapePrimitives[i].type === type && shapePrimitives[i].device === device) {\n\t\t\tprimData = shapePrimitives[i].primData;\n\t\t}\n\t}\n\tif (!primData) {\n\t\tlet mesh, area;\n\t\tswitch (type) {\n\t\t\tcase 'box':\n\t\t\t\tmesh = Mesh.fromGeometry(device, new BoxGeometry());\n\t\t\t\tarea = {\n\t\t\t\t\tx: 2,\n\t\t\t\t\ty: 2,\n\t\t\t\t\tz: 2,\n\t\t\t\t\tuv: 2.0 / 3\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'capsule':\n\t\t\t\tmesh = Mesh.fromGeometry(device, new CapsuleGeometry({\n\t\t\t\t\tradius: 0.5,\n\t\t\t\t\theight: 2\n\t\t\t\t}));\n\t\t\t\tarea = {\n\t\t\t\t\tx: Math.PI * 2,\n\t\t\t\t\ty: Math.PI,\n\t\t\t\t\tz: Math.PI * 2,\n\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3 * 2\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'cone':\n\t\t\t\tmesh = Mesh.fromGeometry(device, new ConeGeometry({\n\t\t\t\t\tbaseRadius: 0.5,\n\t\t\t\t\tpeakRadius: 0,\n\t\t\t\t\theight: 1\n\t\t\t\t}));\n\t\t\t\tarea = {\n\t\t\t\t\tx: 2.54,\n\t\t\t\t\ty: 2.54,\n\t\t\t\t\tz: 2.54,\n\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'cylinder':\n\t\t\t\tmesh = Mesh.fromGeometry(device, new CylinderGeometry({\n\t\t\t\t\tradius: 0.5,\n\t\t\t\t\theight: 1\n\t\t\t\t}));\n\t\t\t\tarea = {\n\t\t\t\t\tx: Math.PI,\n\t\t\t\t\ty: 0.79 * 2,\n\t\t\t\t\tz: Math.PI,\n\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3 * 2\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'plane':\n\t\t\t\tmesh = Mesh.fromGeometry(device, new PlaneGeometry({\n\t\t\t\t\thalfExtents: new Vec2(0.5, 0.5),\n\t\t\t\t\twidthSegments: 1,\n\t\t\t\t\tlengthSegments: 1\n\t\t\t\t}));\n\t\t\t\tarea = {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 1,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tuv: 1\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'sphere':\n\t\t\t\tmesh = Mesh.fromGeometry(device, new SphereGeometry({\n\t\t\t\t\tradius: 0.5\n\t\t\t\t}));\n\t\t\t\tarea = {\n\t\t\t\t\tx: Math.PI,\n\t\t\t\t\ty: Math.PI,\n\t\t\t\t\tz: Math.PI,\n\t\t\t\t\tuv: 1\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'torus':\n\t\t\t\tmesh = Mesh.fromGeometry(device, new TorusGeometry({\n\t\t\t\t\ttubeRadius: 0.2,\n\t\t\t\t\tringRadius: 0.3\n\t\t\t\t}));\n\t\t\t\tarea = {\n\t\t\t\t\tx: Math.PI * 0.5 * 0.5 - Math.PI * 0.1 * 0.1,\n\t\t\t\t\ty: 0.4,\n\t\t\t\t\tz: 0.4,\n\t\t\t\t\tuv: 1\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Invalid primitive type: ' + type);\n\t\t}\n\t\tmesh.incRefCount();\n\t\tprimData = {\n\t\t\tmesh: mesh,\n\t\t\tarea: area\n\t\t};\n\t\tshapePrimitives.push({\n\t\t\ttype: type,\n\t\t\tdevice: device,\n\t\t\tprimData: primData\n\t\t});\n\t}\n\treturn primData;\n}\n\nexport { getShapePrimitive };\n", "import { LAYERID_WORLD } from '../../../scene/constants.js';\nimport { BatchGroup } from '../../../scene/batching/batch-group.js';\nimport { GraphNode } from '../../../scene/graph-node.js';\nimport { MeshInstance } from '../../../scene/mesh-instance.js';\nimport { Model } from '../../../scene/model.js';\nimport { getShapePrimitive } from '../../graphics/primitive-cache.js';\nimport { Asset } from '../../asset/asset.js';\nimport { Component } from '../component.js';\n\nclass ModelComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t\tthis._type = 'asset';\n\t\tthis._asset = null;\n\t\tthis._model = null;\n\t\tthis._mapping = {};\n\t\tthis._castShadows = true;\n\t\tthis._receiveShadows = true;\n\t\tthis._materialAsset = null;\n\t\tthis._material = void 0;\n\t\tthis._castShadowsLightmap = true;\n\t\tthis._lightmapped = false;\n\t\tthis._lightmapSizeMultiplier = 1;\n\t\tthis.isStatic = false;\n\t\tthis._layers = [LAYERID_WORLD];\n\t\tthis._batchGroupId = -1;\n\t\tthis._customAabb = null;\n\t\tthis._area = null;\n\t\tthis._materialEvents = null;\n\t\tthis._clonedModel = false;\n\t\tthis._material = system.defaultMaterial;\n\t\tentity.on('remove', this.onRemoveChild, this);\n\t\tentity.on('removehierarchy', this.onRemoveChild, this);\n\t\tentity.on('insert', this.onInsertChild, this);\n\t\tentity.on('inserthierarchy', this.onInsertChild, this);\n\t}\n\tset meshInstances(value) {\n\t\tif (!this._model) return;\n\t\tthis._model.meshInstances = value;\n\t}\n\tget meshInstances() {\n\t\tif (!this._model) return null;\n\t\treturn this._model.meshInstances;\n\t}\n\tset customAabb(value) {\n\t\tthis._customAabb = value;\n\t\tif (this._model) {\n\t\t\tconst mi = this._model.meshInstances;\n\t\t\tif (mi) {\n\t\t\t\tfor (let i = 0; i < mi.length; i++) {\n\t\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget customAabb() {\n\t\treturn this._customAabb;\n\t}\n\tset type(value) {\n\t\tif (this._type === value) return;\n\t\tthis._area = null;\n\t\tthis._type = value;\n\t\tif (value === 'asset') {\n\t\t\tif (this._asset !== null) {\n\t\t\t\tthis._bindModelAsset(this._asset);\n\t\t\t} else {\n\t\t\t\tthis.model = null;\n\t\t\t}\n\t\t} else {\n\t\t\tconst primData = getShapePrimitive(this.system.app.graphicsDevice, value);\n\t\t\tthis._area = primData.area;\n\t\t\tconst mesh = primData.mesh;\n\t\t\tconst node = new GraphNode();\n\t\t\tconst model = new Model();\n\t\t\tmodel.graph = node;\n\t\t\tmodel.meshInstances = [new MeshInstance(mesh, this._material, node)];\n\t\t\tthis.model = model;\n\t\t\tthis._asset = null;\n\t\t}\n\t}\n\tget type() {\n\t\treturn this._type;\n\t}\n\tset asset(value) {\n\t\tconst assets = this.system.app.assets;\n\t\tlet _id = value;\n\t\tif (value instanceof Asset) {\n\t\t\t_id = value.id;\n\t\t}\n\t\tif (this._asset !== _id) {\n\t\t\tif (this._asset) {\n\t\t\t\tassets.off('add:' + this._asset, this._onModelAssetAdded, this);\n\t\t\t\tconst _prev = assets.get(this._asset);\n\t\t\t\tif (_prev) {\n\t\t\t\t\tthis._unbindModelAsset(_prev);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._asset = _id;\n\t\t\tif (this._asset) {\n\t\t\t\tconst asset = assets.get(this._asset);\n\t\t\t\tif (!asset) {\n\t\t\t\t\tthis.model = null;\n\t\t\t\t\tassets.on('add:' + this._asset, this._onModelAssetAdded, this);\n\t\t\t\t} else {\n\t\t\t\t\tthis._bindModelAsset(asset);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.model = null;\n\t\t\t}\n\t\t}\n\t}\n\tget asset() {\n\t\treturn this._asset;\n\t}\n\tset model(value) {\n\t\tif (this._model === value) return;\n\t\tif (value && value._immutable) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._model) {\n\t\t\tthis._model._immutable = false;\n\t\t\tthis.removeModelFromLayers();\n\t\t\tthis._model.getGraph().destroy();\n\t\t\tdelete this._model._entity;\n\t\t\tif (this._clonedModel) {\n\t\t\t\tthis._model.destroy();\n\t\t\t\tthis._clonedModel = false;\n\t\t\t}\n\t\t}\n\t\tthis._model = value;\n\t\tif (this._model) {\n\t\t\tthis._model._immutable = true;\n\t\t\tconst meshInstances = this._model.meshInstances;\n\t\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\t\tmeshInstances[i].castShadow = this._castShadows;\n\t\t\t\tmeshInstances[i].receiveShadow = this._receiveShadows;\n\t\t\t\tmeshInstances[i].setCustomAabb(this._customAabb);\n\t\t\t}\n\t\t\tthis.lightmapped = this._lightmapped;\n\t\t\tthis.entity.addChild(this._model.graph);\n\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\tthis.addModelToLayers();\n\t\t\t}\n\t\t\tthis._model._entity = this.entity;\n\t\t\tif (this.entity.animation) this.entity.animation.setModel(this._model);\n\t\t\tif (this.entity.anim) {\n\t\t\t\tthis.entity.anim.rebind();\n\t\t\t}\n\t\t\tif (this.type === 'asset') {\n\t\t\t\tthis.mapping = this._mapping;\n\t\t\t} else {\n\t\t\t\tthis._unsetMaterialEvents();\n\t\t\t}\n\t\t}\n\t}\n\tget model() {\n\t\treturn this._model;\n\t}\n\tset lightmapped(value) {\n\t\tif (value !== this._lightmapped) {\n\t\t\tthis._lightmapped = value;\n\t\t\tif (this._model) {\n\t\t\t\tconst mi = this._model.meshInstances;\n\t\t\t\tfor (let i = 0; i < mi.length; i++) {\n\t\t\t\t\tmi[i].setLightmapped(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget lightmapped() {\n\t\treturn this._lightmapped;\n\t}\n\tset castShadows(value) {\n\t\tif (this._castShadows === value) return;\n\t\tconst model = this._model;\n\t\tif (model) {\n\t\t\tconst layers = this.layers;\n\t\t\tconst scene = this.system.app.scene;\n\t\t\tif (this._castShadows && !value) {\n\t\t\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\tlayer.removeShadowCasters(model.meshInstances);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst meshInstances = model.meshInstances;\n\t\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\t\tmeshInstances[i].castShadow = value;\n\t\t\t}\n\t\t\tif (!this._castShadows && value) {\n\t\t\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\tlayer.addShadowCasters(model.meshInstances);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._castShadows = value;\n\t}\n\tget castShadows() {\n\t\treturn this._castShadows;\n\t}\n\tset receiveShadows(value) {\n\t\tif (this._receiveShadows === value) return;\n\t\tthis._receiveShadows = value;\n\t\tif (this._model) {\n\t\t\tconst meshInstances = this._model.meshInstances;\n\t\t\tfor (let i = 0, len = meshInstances.length; i < len; i++) {\n\t\t\t\tmeshInstances[i].receiveShadow = value;\n\t\t\t}\n\t\t}\n\t}\n\tget receiveShadows() {\n\t\treturn this._receiveShadows;\n\t}\n\tset castShadowsLightmap(value) {\n\t\tthis._castShadowsLightmap = value;\n\t}\n\tget castShadowsLightmap() {\n\t\treturn this._castShadowsLightmap;\n\t}\n\tset lightmapSizeMultiplier(value) {\n\t\tthis._lightmapSizeMultiplier = value;\n\t}\n\tget lightmapSizeMultiplier() {\n\t\treturn this._lightmapSizeMultiplier;\n\t}\n\tset layers(value) {\n\t\tconst layers = this.system.app.scene.layers;\n\t\tif (this.meshInstances) {\n\t\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\tif (!layer) continue;\n\t\t\t\tlayer.removeMeshInstances(this.meshInstances);\n\t\t\t}\n\t\t}\n\t\tthis._layers.length = 0;\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tthis._layers[i] = value[i];\n\t\t}\n\t\tif (!this.enabled || !this.entity.enabled || !this.meshInstances) return;\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\tif (!layer) continue;\n\t\t\tlayer.addMeshInstances(this.meshInstances);\n\t\t}\n\t}\n\tget layers() {\n\t\treturn this._layers;\n\t}\n\tset batchGroupId(value) {\n\t\tif (this._batchGroupId === value) return;\n\t\tif (this.entity.enabled && this._batchGroupId >= 0) {\n\t\t\tvar _this$system$app$batc;\n\t\t\t(_this$system$app$batc = this.system.app.batcher) == null || _this$system$app$batc.remove(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t}\n\t\tif (this.entity.enabled && value >= 0) {\n\t\t\tvar _this$system$app$batc2;\n\t\t\t(_this$system$app$batc2 = this.system.app.batcher) == null || _this$system$app$batc2.insert(BatchGroup.MODEL, value, this.entity);\n\t\t}\n\t\tif (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) {\n\t\t\tthis.addModelToLayers();\n\t\t}\n\t\tthis._batchGroupId = value;\n\t}\n\tget batchGroupId() {\n\t\treturn this._batchGroupId;\n\t}\n\tset materialAsset(value) {\n\t\tlet _id = value;\n\t\tif (value instanceof Asset) {\n\t\t\t_id = value.id;\n\t\t}\n\t\tconst assets = this.system.app.assets;\n\t\tif (_id !== this._materialAsset) {\n\t\t\tif (this._materialAsset) {\n\t\t\t\tassets.off('add:' + this._materialAsset, this._onMaterialAssetAdd, this);\n\t\t\t\tconst _prev = assets.get(this._materialAsset);\n\t\t\t\tif (_prev) {\n\t\t\t\t\tthis._unbindMaterialAsset(_prev);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._materialAsset = _id;\n\t\t\tif (this._materialAsset) {\n\t\t\t\tconst asset = assets.get(this._materialAsset);\n\t\t\t\tif (!asset) {\n\t\t\t\t\tthis._setMaterial(this.system.defaultMaterial);\n\t\t\t\t\tassets.on('add:' + this._materialAsset, this._onMaterialAssetAdd, this);\n\t\t\t\t} else {\n\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._setMaterial(this.system.defaultMaterial);\n\t\t\t}\n\t\t}\n\t}\n\tget materialAsset() {\n\t\treturn this._materialAsset;\n\t}\n\tset material(value) {\n\t\tif (this._material === value) return;\n\t\tthis.materialAsset = null;\n\t\tthis._setMaterial(value);\n\t}\n\tget material() {\n\t\treturn this._material;\n\t}\n\tset mapping(value) {\n\t\tif (this._type !== 'asset') return;\n\t\tthis._unsetMaterialEvents();\n\t\tif (!value) value = {};\n\t\tthis._mapping = value;\n\t\tif (!this._model) return;\n\t\tconst meshInstances = this._model.meshInstances;\n\t\tconst modelAsset = this.asset ? this.system.app.assets.get(this.asset) : null;\n\t\tconst assetMapping = modelAsset ? modelAsset.data.mapping : null;\n\t\tlet asset = null;\n\t\tfor (let i = 0, len = meshInstances.length; i < len; i++) {\n\t\t\tif (value[i] !== undefined) {\n\t\t\t\tif (value[i]) {\n\t\t\t\t\tasset = this.system.app.assets.get(value[i]);\n\t\t\t\t\tthis._loadAndSetMeshInstanceMaterial(asset, meshInstances[i], i);\n\t\t\t\t} else {\n\t\t\t\t\tmeshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t} else if (assetMapping) {\n\t\t\t\tif (assetMapping[i] && (assetMapping[i].material || assetMapping[i].path)) {\n\t\t\t\t\tif (assetMapping[i].material !== undefined) {\n\t\t\t\t\t\tasset = this.system.app.assets.get(assetMapping[i].material);\n\t\t\t\t\t} else if (assetMapping[i].path !== undefined) {\n\t\t\t\t\t\tconst url = this._getMaterialAssetUrl(assetMapping[i].path);\n\t\t\t\t\t\tif (url) {\n\t\t\t\t\t\t\tasset = this.system.app.assets.getByUrl(url);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._loadAndSetMeshInstanceMaterial(asset, meshInstances[i], i);\n\t\t\t\t} else {\n\t\t\t\t\tmeshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget mapping() {\n\t\treturn this._mapping;\n\t}\n\taddModelToLayers() {\n\t\tconst layers = this.system.app.scene.layers;\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.addMeshInstances(this.meshInstances);\n\t\t\t}\n\t\t}\n\t}\n\tremoveModelFromLayers() {\n\t\tconst layers = this.system.app.scene.layers;\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\tif (!layer) continue;\n\t\t\tlayer.removeMeshInstances(this.meshInstances);\n\t\t}\n\t}\n\tonRemoveChild() {\n\t\tif (this._model) this.removeModelFromLayers();\n\t}\n\tonInsertChild() {\n\t\tif (this._model && this.enabled && this.entity.enabled) this.addModelToLayers();\n\t}\n\tonRemove() {\n\t\tthis.asset = null;\n\t\tthis.model = null;\n\t\tthis.materialAsset = null;\n\t\tthis._unsetMaterialEvents();\n\t\tthis.entity.off('remove', this.onRemoveChild, this);\n\t\tthis.entity.off('insert', this.onInsertChild, this);\n\t}\n\tonLayersChanged(oldComp, newComp) {\n\t\tthis.addModelToLayers();\n\t\toldComp.off('add', this.onLayerAdded, this);\n\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t}\n\tonLayerAdded(layer) {\n\t\tconst index = this.layers.indexOf(layer.id);\n\t\tif (index < 0) return;\n\t\tlayer.addMeshInstances(this.meshInstances);\n\t}\n\tonLayerRemoved(layer) {\n\t\tconst index = this.layers.indexOf(layer.id);\n\t\tif (index < 0) return;\n\t\tlayer.removeMeshInstances(this.meshInstances);\n\t}\n\t_setMaterialEvent(index, event, id, handler) {\n\t\tconst evt = event + ':' + id;\n\t\tthis.system.app.assets.on(evt, handler, this);\n\t\tif (!this._materialEvents) this._materialEvents = [];\n\t\tif (!this._materialEvents[index]) this._materialEvents[index] = {};\n\t\tthis._materialEvents[index][evt] = {\n\t\t\tid: id,\n\t\t\thandler: handler\n\t\t};\n\t}\n\t_unsetMaterialEvents() {\n\t\tconst assets = this.system.app.assets;\n\t\tconst events = this._materialEvents;\n\t\tif (!events) return;\n\t\tfor (let i = 0, len = events.length; i < len; i++) {\n\t\t\tif (!events[i]) continue;\n\t\t\tconst evt = events[i];\n\t\t\tfor (const key in evt) {\n\t\t\t\tassets.off(key, evt[key].handler, this);\n\t\t\t}\n\t\t}\n\t\tthis._materialEvents = null;\n\t}\n\t_getAssetByIdOrPath(idOrPath) {\n\t\tlet asset = null;\n\t\tconst isPath = isNaN(parseInt(idOrPath, 10));\n\t\tif (!isPath) {\n\t\t\tasset = this.system.app.assets.get(idOrPath);\n\t\t} else if (this.asset) {\n\t\t\tconst url = this._getMaterialAssetUrl(idOrPath);\n\t\t\tif (url) asset = this.system.app.assets.getByUrl(url);\n\t\t}\n\t\treturn asset;\n\t}\n\t_getMaterialAssetUrl(path) {\n\t\tif (!this.asset) return null;\n\t\tconst modelAsset = this.system.app.assets.get(this.asset);\n\t\treturn modelAsset ? modelAsset.getAbsoluteUrl(path) : null;\n\t}\n\t_loadAndSetMeshInstanceMaterial(materialAsset, meshInstance, index) {\n\t\tconst assets = this.system.app.assets;\n\t\tif (!materialAsset) return;\n\t\tif (materialAsset.resource) {\n\t\t\tmeshInstance.material = materialAsset.resource;\n\t\t\tthis._setMaterialEvent(index, 'remove', materialAsset.id, function () {\n\t\t\t\tmeshInstance.material = this.system.defaultMaterial;\n\t\t\t});\n\t\t} else {\n\t\t\tthis._setMaterialEvent(index, 'load', materialAsset.id, function (asset) {\n\t\t\t\tmeshInstance.material = asset.resource;\n\t\t\t\tthis._setMaterialEvent(index, 'remove', materialAsset.id, function () {\n\t\t\t\t\tmeshInstance.material = this.system.defaultMaterial;\n\t\t\t\t});\n\t\t\t});\n\t\t\tif (this.enabled && this.entity.enabled) assets.load(materialAsset);\n\t\t}\n\t}\n\tonEnable() {\n\t\tconst app = this.system.app;\n\t\tconst scene = app.scene;\n\t\tscene.on('set:layers', this.onLayersChanged, this);\n\t\tif (scene.layers) {\n\t\t\tscene.layers.on('add', this.onLayerAdded, this);\n\t\t\tscene.layers.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tconst isAsset = this._type === 'asset';\n\t\tlet asset;\n\t\tif (this._model) {\n\t\t\tthis.addModelToLayers();\n\t\t} else if (isAsset && this._asset) {\n\t\t\tasset = app.assets.get(this._asset);\n\t\t\tif (asset && asset.resource !== this._model) {\n\t\t\t\tthis._bindModelAsset(asset);\n\t\t\t}\n\t\t}\n\t\tif (this._materialAsset) {\n\t\t\tasset = app.assets.get(this._materialAsset);\n\t\t\tif (asset && asset.resource !== this._material) {\n\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t}\n\t\t}\n\t\tif (isAsset) {\n\t\t\tif (this._mapping) {\n\t\t\t\tfor (const index in this._mapping) {\n\t\t\t\t\tif (this._mapping[index]) {\n\t\t\t\t\t\tasset = this._getAssetByIdOrPath(this._mapping[index]);\n\t\t\t\t\t\tif (asset && !asset.resource) {\n\t\t\t\t\t\t\tapp.assets.load(asset);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this._batchGroupId >= 0) {\n\t\t\tvar _app$batcher;\n\t\t\t(_app$batcher = app.batcher) == null || _app$batcher.insert(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t}\n\t}\n\tonDisable() {\n\t\tconst app = this.system.app;\n\t\tconst scene = app.scene;\n\t\tscene.off('set:layers', this.onLayersChanged, this);\n\t\tif (scene.layers) {\n\t\t\tscene.layers.off('add', this.onLayerAdded, this);\n\t\t\tscene.layers.off('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tif (this._batchGroupId >= 0) {\n\t\t\tvar _app$batcher2;\n\t\t\t(_app$batcher2 = app.batcher) == null || _app$batcher2.remove(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t}\n\t\tif (this._model) {\n\t\t\tthis.removeModelFromLayers();\n\t\t}\n\t}\n\thide() {\n\t\tif (this._model) {\n\t\t\tconst instances = this._model.meshInstances;\n\t\t\tfor (let i = 0, l = instances.length; i < l; i++) {\n\t\t\t\tinstances[i].visible = false;\n\t\t\t}\n\t\t}\n\t}\n\tshow() {\n\t\tif (this._model) {\n\t\t\tconst instances = this._model.meshInstances;\n\t\t\tfor (let i = 0, l = instances.length; i < l; i++) {\n\t\t\t\tinstances[i].visible = true;\n\t\t\t}\n\t\t}\n\t}\n\t_bindMaterialAsset(asset) {\n\t\tasset.on('load', this._onMaterialAssetLoad, this);\n\t\tasset.on('unload', this._onMaterialAssetUnload, this);\n\t\tasset.on('remove', this._onMaterialAssetRemove, this);\n\t\tasset.on('change', this._onMaterialAssetChange, this);\n\t\tif (asset.resource) {\n\t\t\tthis._onMaterialAssetLoad(asset);\n\t\t} else {\n\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\tthis.system.app.assets.load(asset);\n\t\t}\n\t}\n\t_unbindMaterialAsset(asset) {\n\t\tasset.off('load', this._onMaterialAssetLoad, this);\n\t\tasset.off('unload', this._onMaterialAssetUnload, this);\n\t\tasset.off('remove', this._onMaterialAssetRemove, this);\n\t\tasset.off('change', this._onMaterialAssetChange, this);\n\t}\n\t_onMaterialAssetAdd(asset) {\n\t\tthis.system.app.assets.off('add:' + asset.id, this._onMaterialAssetAdd, this);\n\t\tif (this._materialAsset === asset.id) {\n\t\t\tthis._bindMaterialAsset(asset);\n\t\t}\n\t}\n\t_onMaterialAssetLoad(asset) {\n\t\tthis._setMaterial(asset.resource);\n\t}\n\t_onMaterialAssetUnload(asset) {\n\t\tthis._setMaterial(this.system.defaultMaterial);\n\t}\n\t_onMaterialAssetRemove(asset) {\n\t\tthis._onMaterialAssetUnload(asset);\n\t}\n\t_onMaterialAssetChange(asset) {}\n\t_bindModelAsset(asset) {\n\t\tthis._unbindModelAsset(asset);\n\t\tasset.on('load', this._onModelAssetLoad, this);\n\t\tasset.on('unload', this._onModelAssetUnload, this);\n\t\tasset.on('change', this._onModelAssetChange, this);\n\t\tasset.on('remove', this._onModelAssetRemove, this);\n\t\tif (asset.resource) {\n\t\t\tthis._onModelAssetLoad(asset);\n\t\t} else {\n\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\tthis.system.app.assets.load(asset);\n\t\t}\n\t}\n\t_unbindModelAsset(asset) {\n\t\tasset.off('load', this._onModelAssetLoad, this);\n\t\tasset.off('unload', this._onModelAssetUnload, this);\n\t\tasset.off('change', this._onModelAssetChange, this);\n\t\tasset.off('remove', this._onModelAssetRemove, this);\n\t}\n\t_onModelAssetAdded(asset) {\n\t\tthis.system.app.assets.off('add:' + asset.id, this._onModelAssetAdded, this);\n\t\tif (asset.id === this._asset) {\n\t\t\tthis._bindModelAsset(asset);\n\t\t}\n\t}\n\t_onModelAssetLoad(asset) {\n\t\tthis.model = asset.resource.clone();\n\t\tthis._clonedModel = true;\n\t}\n\t_onModelAssetUnload(asset) {\n\t\tthis.model = null;\n\t}\n\t_onModelAssetChange(asset, attr, _new, _old) {\n\t\tif (attr === 'data') {\n\t\t\tthis.mapping = this._mapping;\n\t\t}\n\t}\n\t_onModelAssetRemove(asset) {\n\t\tthis.model = null;\n\t}\n\t_setMaterial(material) {\n\t\tif (this._material === material) return;\n\t\tthis._material = material;\n\t\tconst model = this._model;\n\t\tif (model && this._type !== 'asset') {\n\t\t\tconst meshInstances = model.meshInstances;\n\t\t\tfor (let i = 0, len = meshInstances.length; i < len; i++) {\n\t\t\t\tmeshInstances[i].material = material;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport { ModelComponent };\n", "class ModelComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t}\n}\n\nexport { ModelComponentData };\n", "import { extend } from '../../../core/core.js';\nimport { Vec3 } from '../../../core/math/vec3.js';\nimport { BoundingBox } from '../../../core/shape/bounding-box.js';\nimport { getDefaultMaterial } from '../../../scene/materials/default-material.js';\nimport { Asset } from '../../asset/asset.js';\nimport { Component } from '../component.js';\nimport { ComponentSystem } from '../system.js';\nimport { ModelComponent } from './component.js';\nimport { ModelComponentData } from './data.js';\n\nconst _schema = ['enabled'];\nclass ModelComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.id = 'model';\n\t\tthis.ComponentType = ModelComponent;\n\t\tthis.DataType = ModelComponentData;\n\t\tthis.schema = _schema;\n\t\tthis.defaultMaterial = getDefaultMaterial(app.graphicsDevice);\n\t\tthis.on('beforeremove', this.onRemove, this);\n\t}\n\tinitializeComponentData(component, _data, properties) {\n\t\tproperties = ['material', 'materialAsset', 'asset', 'castShadows', 'receiveShadows', 'castShadowsLightmap', 'lightmapped', 'lightmapSizeMultiplier', 'type', 'mapping', 'layers', 'isStatic', 'batchGroupId'];\n\t\tif (_data.batchGroupId === null || _data.batchGroupId === undefined) {\n\t\t\t_data.batchGroupId = -1;\n\t\t}\n\t\tif (_data.layers && _data.layers.length) {\n\t\t\t_data.layers = _data.layers.slice(0);\n\t\t}\n\t\tfor (let i = 0; i < properties.length; i++) {\n\t\t\tif (_data.hasOwnProperty(properties[i])) {\n\t\t\t\tcomponent[properties[i]] = _data[properties[i]];\n\t\t\t}\n\t\t}\n\t\tif (_data.aabbCenter && _data.aabbHalfExtents) {\n\t\t\tcomponent.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents));\n\t\t}\n\t\tsuper.initializeComponentData(component, _data, ['enabled']);\n\t}\n\tcloneComponent(entity, clone) {\n\t\tconst data = {\n\t\t\ttype: entity.model.type,\n\t\t\tasset: entity.model.asset,\n\t\t\tcastShadows: entity.model.castShadows,\n\t\t\treceiveShadows: entity.model.receiveShadows,\n\t\t\tcastShadowsLightmap: entity.model.castShadowsLightmap,\n\t\t\tlightmapped: entity.model.lightmapped,\n\t\t\tlightmapSizeMultiplier: entity.model.lightmapSizeMultiplier,\n\t\t\tisStatic: entity.model.isStatic,\n\t\t\tenabled: entity.model.enabled,\n\t\t\tlayers: entity.model.layers,\n\t\t\tbatchGroupId: entity.model.batchGroupId,\n\t\t\tmapping: extend({}, entity.model.mapping)\n\t\t};\n\t\tlet materialAsset = entity.model.materialAsset;\n\t\tif (!(materialAsset instanceof Asset) && materialAsset != null) {\n\t\t\tmaterialAsset = this.app.assets.get(materialAsset);\n\t\t}\n\t\tconst material = entity.model.material;\n\t\tif (!material || material === this.defaultMaterial || !materialAsset || material === materialAsset.resource) {\n\t\t\tdata.materialAsset = materialAsset;\n\t\t}\n\t\tconst component = this.addComponent(clone, data);\n\t\tif (entity.model.model && entity.model.type === 'asset' && !entity.model.asset) {\n\t\t\tcomponent.model = entity.model.model.clone();\n\t\t\tcomponent._clonedModel = true;\n\t\t}\n\t\tif (!data.materialAsset) component.material = material;\n\t\tif (entity.model.model) {\n\t\t\tconst meshInstances = entity.model.model.meshInstances;\n\t\t\tconst meshInstancesClone = component.model.meshInstances;\n\t\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\t\tmeshInstancesClone[i].mask = meshInstances[i].mask;\n\t\t\t\tmeshInstancesClone[i].material = meshInstances[i].material;\n\t\t\t\tmeshInstancesClone[i].layer = meshInstances[i].layer;\n\t\t\t\tmeshInstancesClone[i].receiveShadow = meshInstances[i].receiveShadow;\n\t\t\t}\n\t\t}\n\t\tif (entity.model.customAabb) {\n\t\t\tcomponent.customAabb = entity.model.customAabb.clone();\n\t\t}\n\t\treturn component;\n\t}\n\tonRemove(entity, component) {\n\t\tcomponent.onRemove();\n\t}\n}\nComponent._buildAccessors(ModelComponent.prototype, _schema);\n\nexport { ModelComponentSystem };\n", "import { RefCountedObject } from '../core/ref-counted-object.js';\nimport { SkinInstance } from './skin-instance.js';\n\nclass SkinInstanceCachedObject extends RefCountedObject {\n\tconstructor(skin, skinInstance) {\n\t\tsuper();\n\t\tthis.skin = skin;\n\t\tthis.skinInstance = skinInstance;\n\t}\n}\nclass SkinInstanceCache {\n\tstatic createCachedSkinInstance(skin, rootBone, entity) {\n\t\tlet skinInst = SkinInstanceCache.getCachedSkinInstance(skin, rootBone);\n\t\tif (!skinInst) {\n\t\t\tskinInst = new SkinInstance(skin);\n\t\t\tskinInst.resolve(rootBone, entity);\n\t\t\tSkinInstanceCache.addCachedSkinInstance(skin, rootBone, skinInst);\n\t\t}\n\t\treturn skinInst;\n\t}\n\tstatic getCachedSkinInstance(skin, rootBone) {\n\t\tlet skinInstance = null;\n\t\tconst cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\tif (cachedObjArray) {\n\t\t\tconst cachedObj = cachedObjArray.find(element => element.skin === skin);\n\t\t\tif (cachedObj) {\n\t\t\t\tcachedObj.incRefCount();\n\t\t\t\tskinInstance = cachedObj.skinInstance;\n\t\t\t}\n\t\t}\n\t\treturn skinInstance;\n\t}\n\tstatic addCachedSkinInstance(skin, rootBone, skinInstance) {\n\t\tlet cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\tif (!cachedObjArray) {\n\t\t\tcachedObjArray = [];\n\t\t\tSkinInstanceCache._skinInstanceCache.set(rootBone, cachedObjArray);\n\t\t}\n\t\tlet cachedObj = cachedObjArray.find(element => element.skin === skin);\n\t\tif (!cachedObj) {\n\t\t\tcachedObj = new SkinInstanceCachedObject(skin, skinInstance);\n\t\t\tcachedObjArray.push(cachedObj);\n\t\t}\n\t\tcachedObj.incRefCount();\n\t}\n\tstatic removeCachedSkinInstance(skinInstance) {\n\t\tif (skinInstance) {\n\t\t\tconst rootBone = skinInstance.rootBone;\n\t\t\tif (rootBone) {\n\t\t\t\tconst cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\t\t\tif (cachedObjArray) {\n\t\t\t\t\tconst cachedObjIndex = cachedObjArray.findIndex(element => element.skinInstance === skinInstance);\n\t\t\t\t\tif (cachedObjIndex >= 0) {\n\t\t\t\t\t\tconst cachedObj = cachedObjArray[cachedObjIndex];\n\t\t\t\t\t\tcachedObj.decRefCount();\n\t\t\t\t\t\tif (cachedObj.refCount === 0) {\n\t\t\t\t\t\t\tcachedObjArray.splice(cachedObjIndex, 1);\n\t\t\t\t\t\t\tif (!cachedObjArray.length) {\n\t\t\t\t\t\t\t\tSkinInstanceCache._skinInstanceCache.delete(rootBone);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (skinInstance) {\n\t\t\t\t\t\t\t\tskinInstance.destroy();\n\t\t\t\t\t\t\t\tcachedObj.skinInstance = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\nSkinInstanceCache._skinInstanceCache = new Map();\n\nexport { SkinInstanceCache };\n", "class AssetReference {\n\tconstructor(propertyName, parent, registry, callbacks, scope) {\n\t\tthis.propertyName = propertyName;\n\t\tthis.parent = parent;\n\t\tthis._scope = scope;\n\t\tthis._registry = registry;\n\t\tthis.id = null;\n\t\tthis.url = null;\n\t\tthis.asset = null;\n\t\tthis._onAssetLoad = callbacks.load;\n\t\tthis._onAssetAdd = callbacks.add;\n\t\tthis._onAssetRemove = callbacks.remove;\n\t\tthis._onAssetUnload = callbacks.unload;\n\t}\n\tset id(value) {\n\t\tif (this.url) throw Error('Can\\'t set id and url');\n\t\tthis._unbind();\n\t\tthis._id = value;\n\t\tthis.asset = this._registry.get(this._id);\n\t\tthis._bind();\n\t}\n\tget id() {\n\t\treturn this._id;\n\t}\n\tset url(value) {\n\t\tif (this.id) throw Error('Can\\'t set id and url');\n\t\tthis._unbind();\n\t\tthis._url = value;\n\t\tthis.asset = this._registry.getByUrl(this._url);\n\t\tthis._bind();\n\t}\n\tget url() {\n\t\treturn this._url;\n\t}\n\t_bind() {\n\t\tif (this.id) {\n\t\t\tif (this._onAssetLoad) this._registry.on('load:' + this.id, this._onLoad, this);\n\t\t\tif (this._onAssetAdd) this._registry.once('add:' + this.id, this._onAdd, this);\n\t\t\tif (this._onAssetRemove) this._registry.on('remove:' + this.id, this._onRemove, this);\n\t\t\tif (this._onAssetUnload) this._registry.on('unload:' + this.id, this._onUnload, this);\n\t\t}\n\t\tif (this.url) {\n\t\t\tif (this._onAssetLoad) this._registry.on('load:url:' + this.url, this._onLoad, this);\n\t\t\tif (this._onAssetAdd) this._registry.once('add:url:' + this.url, this._onAdd, this);\n\t\t\tif (this._onAssetRemove) this._registry.on('remove:url:' + this.url, this._onRemove, this);\n\t\t}\n\t}\n\t_unbind() {\n\t\tif (this.id) {\n\t\t\tif (this._onAssetLoad) this._registry.off('load:' + this.id, this._onLoad, this);\n\t\t\tif (this._onAssetAdd) this._registry.off('add:' + this.id, this._onAdd, this);\n\t\t\tif (this._onAssetRemove) this._registry.off('remove:' + this.id, this._onRemove, this);\n\t\t\tif (this._onAssetUnload) this._registry.off('unload:' + this.id, this._onUnload, this);\n\t\t}\n\t\tif (this.url) {\n\t\t\tif (this._onAssetLoad) this._registry.off('load:' + this.url, this._onLoad, this);\n\t\t\tif (this._onAssetAdd) this._registry.off('add:' + this.url, this._onAdd, this);\n\t\t\tif (this._onAssetRemove) this._registry.off('remove:' + this.url, this._onRemove, this);\n\t\t}\n\t}\n\t_onLoad(asset) {\n\t\tthis._onAssetLoad.call(this._scope, this.propertyName, this.parent, asset);\n\t}\n\t_onAdd(asset) {\n\t\tthis.asset = asset;\n\t\tthis._onAssetAdd.call(this._scope, this.propertyName, this.parent, asset);\n\t}\n\t_onRemove(asset) {\n\t\tthis._onAssetRemove.call(this._scope, this.propertyName, this.parent, asset);\n\t\tthis.asset = null;\n\t}\n\t_onUnload(asset) {\n\t\tthis._onAssetUnload.call(this._scope, this.propertyName, this.parent, asset);\n\t}\n}\n\nexport { AssetReference };\n", "import { LAYERID_WORLD, RENDERSTYLE_SOLID } from '../../../scene/constants.js';\nimport { BatchGroup } from '../../../scene/batching/batch-group.js';\nimport { MeshInstance } from '../../../scene/mesh-instance.js';\nimport { MorphInstance } from '../../../scene/morph-instance.js';\nimport { getShapePrimitive } from '../../graphics/primitive-cache.js';\nimport { GraphNode } from '../../../scene/graph-node.js';\nimport { SkinInstanceCache } from '../../../scene/skin-instance-cache.js';\nimport { Asset } from '../../asset/asset.js';\nimport { AssetReference } from '../../asset/asset-reference.js';\nimport { Component } from '../component.js';\nimport { EntityReference } from '../../utils/entity-reference.js';\n\nclass RenderComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t\tthis._type = 'asset';\n\t\tthis._castShadows = true;\n\t\tthis._receiveShadows = true;\n\t\tthis._castShadowsLightmap = true;\n\t\tthis._lightmapped = false;\n\t\tthis._lightmapSizeMultiplier = 1;\n\t\tthis.isStatic = false;\n\t\tthis._batchGroupId = -1;\n\t\tthis._layers = [LAYERID_WORLD];\n\t\tthis._renderStyle = RENDERSTYLE_SOLID;\n\t\tthis._meshInstances = [];\n\t\tthis._customAabb = null;\n\t\tthis._area = null;\n\t\tthis._assetReference = void 0;\n\t\tthis._materialReferences = [];\n\t\tthis._material = void 0;\n\t\tthis._rootBone = void 0;\n\t\tthis._rootBone = new EntityReference(this, 'rootBone');\n\t\tthis._rootBone.on('set:entity', this._onSetRootBone, this);\n\t\tthis._assetReference = new AssetReference('asset', this, system.app.assets, {\n\t\t\tadd: this._onRenderAssetAdded,\n\t\t\tload: this._onRenderAssetLoad,\n\t\t\tremove: this._onRenderAssetRemove,\n\t\t\tunload: this._onRenderAssetUnload\n\t\t}, this);\n\t\tthis._material = system.defaultMaterial;\n\t\tentity.on('remove', this.onRemoveChild, this);\n\t\tentity.on('removehierarchy', this.onRemoveChild, this);\n\t\tentity.on('insert', this.onInsertChild, this);\n\t\tentity.on('inserthierarchy', this.onInsertChild, this);\n\t}\n\tset renderStyle(renderStyle) {\n\t\tif (this._renderStyle !== renderStyle) {\n\t\t\tthis._renderStyle = renderStyle;\n\t\t\tMeshInstance._prepareRenderStyleForArray(this._meshInstances, renderStyle);\n\t\t}\n\t}\n\tget renderStyle() {\n\t\treturn this._renderStyle;\n\t}\n\tset customAabb(value) {\n\t\tthis._customAabb = value;\n\t\tconst mi = this._meshInstances;\n\t\tif (mi) {\n\t\t\tfor (let i = 0; i < mi.length; i++) {\n\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t}\n\t\t}\n\t}\n\tget customAabb() {\n\t\treturn this._customAabb;\n\t}\n\tset type(value) {\n\t\tif (this._type !== value) {\n\t\t\tthis._area = null;\n\t\t\tthis._type = value;\n\t\t\tthis.destroyMeshInstances();\n\t\t\tif (value !== 'asset') {\n\t\t\t\tlet material = this._material;\n\t\t\t\tif (!material || material === this.system.defaultMaterial) {\n\t\t\t\t\tmaterial = this._materialReferences[0] && this._materialReferences[0].asset && this._materialReferences[0].asset.resource;\n\t\t\t\t}\n\t\t\t\tconst primData = getShapePrimitive(this.system.app.graphicsDevice, value);\n\t\t\t\tthis._area = primData.area;\n\t\t\t\tthis.meshInstances = [new MeshInstance(primData.mesh, material || this.system.defaultMaterial, this.entity)];\n\t\t\t}\n\t\t}\n\t}\n\tget type() {\n\t\treturn this._type;\n\t}\n\tset meshInstances(value) {\n\t\tthis.destroyMeshInstances();\n\t\tthis._meshInstances = value;\n\t\tif (this._meshInstances) {\n\t\t\tconst mi = this._meshInstances;\n\t\t\tfor (let i = 0; i < mi.length; i++) {\n\t\t\t\tif (!mi[i].node) {\n\t\t\t\t\tmi[i].node = this.entity;\n\t\t\t\t}\n\t\t\t\tmi[i].castShadow = this._castShadows;\n\t\t\t\tmi[i].receiveShadow = this._receiveShadows;\n\t\t\t\tmi[i].renderStyle = this._renderStyle;\n\t\t\t\tmi[i].setLightmapped(this._lightmapped);\n\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t}\n\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\tthis.addToLayers();\n\t\t\t}\n\t\t}\n\t}\n\tget meshInstances() {\n\t\treturn this._meshInstances;\n\t}\n\tset lightmapped(value) {\n\t\tif (value !== this._lightmapped) {\n\t\t\tthis._lightmapped = value;\n\t\t\tconst mi = this._meshInstances;\n\t\t\tif (mi) {\n\t\t\t\tfor (let i = 0; i < mi.length; i++) {\n\t\t\t\t\tmi[i].setLightmapped(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget lightmapped() {\n\t\treturn this._lightmapped;\n\t}\n\tset castShadows(value) {\n\t\tif (this._castShadows !== value) {\n\t\t\tconst mi = this._meshInstances;\n\t\t\tif (mi) {\n\t\t\t\tconst layers = this.layers;\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tif (this._castShadows && !value) {\n\t\t\t\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\t\t\t\tconst layer = scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\tlayer.removeShadowCasters(mi);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < mi.length; i++) {\n\t\t\t\t\tmi[i].castShadow = value;\n\t\t\t\t}\n\t\t\t\tif (!this._castShadows && value) {\n\t\t\t\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\tlayer.addShadowCasters(mi);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._castShadows = value;\n\t\t}\n\t}\n\tget castShadows() {\n\t\treturn this._castShadows;\n\t}\n\tset receiveShadows(value) {\n\t\tif (this._receiveShadows !== value) {\n\t\t\tthis._receiveShadows = value;\n\t\t\tconst mi = this._meshInstances;\n\t\t\tif (mi) {\n\t\t\t\tfor (let i = 0; i < mi.length; i++) {\n\t\t\t\t\tmi[i].receiveShadow = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget receiveShadows() {\n\t\treturn this._receiveShadows;\n\t}\n\tset castShadowsLightmap(value) {\n\t\tthis._castShadowsLightmap = value;\n\t}\n\tget castShadowsLightmap() {\n\t\treturn this._castShadowsLightmap;\n\t}\n\tset lightmapSizeMultiplier(value) {\n\t\tthis._lightmapSizeMultiplier = value;\n\t}\n\tget lightmapSizeMultiplier() {\n\t\treturn this._lightmapSizeMultiplier;\n\t}\n\tset layers(value) {\n\t\tconst layers = this.system.app.scene.layers;\n\t\tlet layer;\n\t\tif (this._meshInstances) {\n\t\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\t\tlayer = layers.getLayerById(this._layers[i]);\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.removeMeshInstances(this._meshInstances);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._layers.length = 0;\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tthis._layers[i] = value[i];\n\t\t}\n\t\tif (!this.enabled || !this.entity.enabled || !this._meshInstances) return;\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tlayer = layers.getLayerById(this._layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.addMeshInstances(this._meshInstances);\n\t\t\t}\n\t\t}\n\t}\n\tget layers() {\n\t\treturn this._layers;\n\t}\n\tset batchGroupId(value) {\n\t\tif (this._batchGroupId !== value) {\n\t\t\tif (this.entity.enabled && this._batchGroupId >= 0) {\n\t\t\t\tvar _this$system$app$batc;\n\t\t\t\t(_this$system$app$batc = this.system.app.batcher) == null || _this$system$app$batc.remove(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t\t}\n\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\tvar _this$system$app$batc2;\n\t\t\t\t(_this$system$app$batc2 = this.system.app.batcher) == null || _this$system$app$batc2.insert(BatchGroup.RENDER, value, this.entity);\n\t\t\t}\n\t\t\tif (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\tthis.addToLayers();\n\t\t\t}\n\t\t\tthis._batchGroupId = value;\n\t\t}\n\t}\n\tget batchGroupId() {\n\t\treturn this._batchGroupId;\n\t}\n\tset material(value) {\n\t\tif (this._material !== value) {\n\t\t\tthis._material = value;\n\t\t\tif (this._meshInstances && this._type !== 'asset') {\n\t\t\t\tfor (let i = 0; i < this._meshInstances.length; i++) {\n\t\t\t\t\tthis._meshInstances[i].material = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget material() {\n\t\treturn this._material;\n\t}\n\tset materialAssets(value = []) {\n\t\tif (this._materialReferences.length > value.length) {\n\t\t\tfor (let i = value.length; i < this._materialReferences.length; i++) {\n\t\t\t\tthis._materialReferences[i].id = null;\n\t\t\t}\n\t\t\tthis._materialReferences.length = value.length;\n\t\t}\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tif (!this._materialReferences[i]) {\n\t\t\t\tthis._materialReferences.push(new AssetReference(i, this, this.system.app.assets, {\n\t\t\t\t\tadd: this._onMaterialAdded,\n\t\t\t\t\tload: this._onMaterialLoad,\n\t\t\t\t\tremove: this._onMaterialRemove,\n\t\t\t\t\tunload: this._onMaterialUnload\n\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif (value[i]) {\n\t\t\t\tconst id = value[i] instanceof Asset ? value[i].id : value[i];\n\t\t\t\tif (this._materialReferences[i].id !== id) {\n\t\t\t\t\tthis._materialReferences[i].id = id;\n\t\t\t\t}\n\t\t\t\tif (this._materialReferences[i].asset) {\n\t\t\t\t\tthis._onMaterialAdded(i, this, this._materialReferences[i].asset);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._materialReferences[i].id = null;\n\t\t\t\tif (this._meshInstances[i]) {\n\t\t\t\t\tthis._meshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget materialAssets() {\n\t\treturn this._materialReferences.map(function (ref) {\n\t\t\treturn ref.id;\n\t\t});\n\t}\n\tset asset(value) {\n\t\tconst id = value instanceof Asset ? value.id : value;\n\t\tif (this._assetReference.id === id) return;\n\t\tif (this._assetReference.asset && this._assetReference.asset.resource) {\n\t\t\tthis._onRenderAssetRemove();\n\t\t}\n\t\tthis._assetReference.id = id;\n\t\tif (this._assetReference.asset) {\n\t\t\tthis._onRenderAssetAdded();\n\t\t}\n\t}\n\tget asset() {\n\t\treturn this._assetReference.id;\n\t}\n\tassignAsset(asset) {\n\t\tconst id = asset instanceof Asset ? asset.id : asset;\n\t\tthis._assetReference.id = id;\n\t}\n\t_onSetRootBone(entity) {\n\t\tif (entity) {\n\t\t\tthis._onRootBoneChanged();\n\t\t}\n\t}\n\t_onRootBoneChanged() {\n\t\tthis._clearSkinInstances();\n\t\tif (this.enabled && this.entity.enabled) {\n\t\t\tthis._cloneSkinInstances();\n\t\t}\n\t}\n\tdestroyMeshInstances() {\n\t\tconst meshInstances = this._meshInstances;\n\t\tif (meshInstances) {\n\t\t\tthis.removeFromLayers();\n\t\t\tthis._clearSkinInstances();\n\t\t\tfor (let i = 0; i < meshInstances.length; i++) {\n\t\t\t\tmeshInstances[i].destroy();\n\t\t\t}\n\t\t\tthis._meshInstances.length = 0;\n\t\t}\n\t}\n\taddToLayers() {\n\t\tconst layers = this.system.app.scene.layers;\n\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.addMeshInstances(this._meshInstances);\n\t\t\t}\n\t\t}\n\t}\n\tremoveFromLayers() {\n\t\tif (this._meshInstances && this._meshInstances.length) {\n\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\tfor (let i = 0; i < this._layers.length; i++) {\n\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.removeMeshInstances(this._meshInstances);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tonRemoveChild() {\n\t\tthis.removeFromLayers();\n\t}\n\tonInsertChild() {\n\t\tif (this._meshInstances && this.enabled && this.entity.enabled) {\n\t\t\tthis.addToLayers();\n\t\t}\n\t}\n\tonRemove() {\n\t\tthis.destroyMeshInstances();\n\t\tthis.asset = null;\n\t\tthis.materialAsset = null;\n\t\tthis._assetReference.id = null;\n\t\tfor (let i = 0; i < this._materialReferences.length; i++) {\n\t\t\tthis._materialReferences[i].id = null;\n\t\t}\n\t\tthis.entity.off('remove', this.onRemoveChild, this);\n\t\tthis.entity.off('insert', this.onInsertChild, this);\n\t}\n\tonLayersChanged(oldComp, newComp) {\n\t\tthis.addToLayers();\n\t\toldComp.off('add', this.onLayerAdded, this);\n\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t}\n\tonLayerAdded(layer) {\n\t\tconst index = this.layers.indexOf(layer.id);\n\t\tif (index < 0) return;\n\t\tlayer.addMeshInstances(this._meshInstances);\n\t}\n\tonLayerRemoved(layer) {\n\t\tconst index = this.layers.indexOf(layer.id);\n\t\tif (index < 0) return;\n\t\tlayer.removeMeshInstances(this._meshInstances);\n\t}\n\tonEnable() {\n\t\tconst app = this.system.app;\n\t\tconst scene = app.scene;\n\t\tthis._rootBone.onParentComponentEnable();\n\t\tthis._cloneSkinInstances();\n\t\tscene.on('set:layers', this.onLayersChanged, this);\n\t\tif (scene.layers) {\n\t\t\tscene.layers.on('add', this.onLayerAdded, this);\n\t\t\tscene.layers.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tconst isAsset = this._type === 'asset';\n\t\tif (this._meshInstances && this._meshInstances.length) {\n\t\t\tthis.addToLayers();\n\t\t} else if (isAsset && this.asset) {\n\t\t\tthis._onRenderAssetAdded();\n\t\t}\n\t\tfor (let i = 0; i < this._materialReferences.length; i++) {\n\t\t\tif (this._materialReferences[i].asset) {\n\t\t\t\tthis.system.app.assets.load(this._materialReferences[i].asset);\n\t\t\t}\n\t\t}\n\t\tif (this._batchGroupId >= 0) {\n\t\t\tvar _app$batcher;\n\t\t\t(_app$batcher = app.batcher) == null || _app$batcher.insert(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t}\n\t}\n\tonDisable() {\n\t\tconst app = this.system.app;\n\t\tconst scene = app.scene;\n\t\tscene.off('set:layers', this.onLayersChanged, this);\n\t\tif (scene.layers) {\n\t\t\tscene.layers.off('add', this.onLayerAdded, this);\n\t\t\tscene.layers.off('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tif (this._batchGroupId >= 0) {\n\t\t\tvar _app$batcher2;\n\t\t\t(_app$batcher2 = app.batcher) == null || _app$batcher2.remove(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t}\n\t\tthis.removeFromLayers();\n\t}\n\thide() {\n\t\tif (this._meshInstances) {\n\t\t\tfor (let i = 0; i < this._meshInstances.length; i++) {\n\t\t\t\tthis._meshInstances[i].visible = false;\n\t\t\t}\n\t\t}\n\t}\n\tshow() {\n\t\tif (this._meshInstances) {\n\t\t\tfor (let i = 0; i < this._meshInstances.length; i++) {\n\t\t\t\tthis._meshInstances[i].visible = true;\n\t\t\t}\n\t\t}\n\t}\n\t_onRenderAssetAdded() {\n\t\tif (!this._assetReference.asset) return;\n\t\tif (this._assetReference.asset.resource) {\n\t\t\tthis._onRenderAssetLoad();\n\t\t} else if (this.enabled && this.entity.enabled) {\n\t\t\tthis.system.app.assets.load(this._assetReference.asset);\n\t\t}\n\t}\n\t_onRenderAssetLoad() {\n\t\tthis.destroyMeshInstances();\n\t\tif (this._assetReference.asset) {\n\t\t\tconst render = this._assetReference.asset.resource;\n\t\t\trender.off('set:meshes', this._onSetMeshes, this);\n\t\t\trender.on('set:meshes', this._onSetMeshes, this);\n\t\t\tif (render.meshes) {\n\t\t\t\tthis._onSetMeshes(render.meshes);\n\t\t\t}\n\t\t}\n\t}\n\t_onSetMeshes(meshes) {\n\t\tthis._cloneMeshes(meshes);\n\t}\n\t_clearSkinInstances() {\n\t\tfor (let i = 0; i < this._meshInstances.length; i++) {\n\t\t\tconst meshInstance = this._meshInstances[i];\n\t\t\tSkinInstanceCache.removeCachedSkinInstance(meshInstance.skinInstance);\n\t\t\tmeshInstance.skinInstance = null;\n\t\t}\n\t}\n\t_cloneSkinInstances() {\n\t\tif (this._meshInstances.length && this._rootBone.entity instanceof GraphNode) {\n\t\t\tfor (let i = 0; i < this._meshInstances.length; i++) {\n\t\t\t\tconst meshInstance = this._meshInstances[i];\n\t\t\t\tconst mesh = meshInstance.mesh;\n\t\t\t\tif (mesh.skin && !meshInstance.skinInstance) {\n\t\t\t\t\tmeshInstance.skinInstance = SkinInstanceCache.createCachedSkinInstance(mesh.skin, this._rootBone.entity, this.entity);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t_cloneMeshes(meshes) {\n\t\tif (meshes && meshes.length) {\n\t\t\tconst meshInstances = [];\n\t\t\tfor (let i = 0; i < meshes.length; i++) {\n\t\t\t\tconst mesh = meshes[i];\n\t\t\t\tconst material = this._materialReferences[i] && this._materialReferences[i].asset && this._materialReferences[i].asset.resource;\n\t\t\t\tconst meshInst = new MeshInstance(mesh, material || this.system.defaultMaterial, this.entity);\n\t\t\t\tmeshInstances.push(meshInst);\n\t\t\t\tif (mesh.morph) {\n\t\t\t\t\tmeshInst.morphInstance = new MorphInstance(mesh.morph);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.meshInstances = meshInstances;\n\t\t\tthis._cloneSkinInstances();\n\t\t}\n\t}\n\t_onRenderAssetUnload() {\n\t\tif (this._type === 'asset') {\n\t\t\tthis.destroyMeshInstances();\n\t\t}\n\t}\n\t_onRenderAssetRemove() {\n\t\tif (this._assetReference.asset && this._assetReference.asset.resource) {\n\t\t\tthis._assetReference.asset.resource.off('set:meshes', this._onSetMeshes, this);\n\t\t}\n\t\tthis._onRenderAssetUnload();\n\t}\n\t_onMaterialAdded(index, component, asset) {\n\t\tif (asset.resource) {\n\t\t\tthis._onMaterialLoad(index, component, asset);\n\t\t} else {\n\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t}\n\t\t}\n\t}\n\t_updateMainMaterial(index, material) {\n\t\tif (index === 0) {\n\t\t\tthis.material = material;\n\t\t}\n\t}\n\t_onMaterialLoad(index, component, asset) {\n\t\tif (this._meshInstances[index]) {\n\t\t\tthis._meshInstances[index].material = asset.resource;\n\t\t}\n\t\tthis._updateMainMaterial(index, asset.resource);\n\t}\n\t_onMaterialRemove(index, component, asset) {\n\t\tif (this._meshInstances[index]) {\n\t\t\tthis._meshInstances[index].material = this.system.defaultMaterial;\n\t\t}\n\t\tthis._updateMainMaterial(index, this.system.defaultMaterial);\n\t}\n\t_onMaterialUnload(index, component, asset) {\n\t\tif (this._meshInstances[index]) {\n\t\t\tthis._meshInstances[index].material = this.system.defaultMaterial;\n\t\t}\n\t\tthis._updateMainMaterial(index, this.system.defaultMaterial);\n\t}\n\tresolveDuplicatedEntityReferenceProperties(oldRender, duplicatedIdsMap) {\n\t\tif (oldRender.rootBone && duplicatedIdsMap[oldRender.rootBone]) {\n\t\t\tthis.rootBone = duplicatedIdsMap[oldRender.rootBone];\n\t\t}\n\t\tthis._clearSkinInstances();\n\t}\n}\n\nexport { RenderComponent };\n", "class RenderComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t\tthis.rootBone = null;\n\t}\n}\n\nexport { RenderComponentData };\n", "import { Vec3 } from '../../../core/math/vec3.js';\nimport { BoundingBox } from '../../../core/shape/bounding-box.js';\nimport { getDefaultMaterial } from '../../../scene/materials/default-material.js';\nimport { Component } from '../component.js';\nimport { ComponentSystem } from '../system.js';\nimport { RenderComponent } from './component.js';\nimport { RenderComponentData } from './data.js';\n\nconst _schema = [{\n\tname: 'rootBone',\n\ttype: 'entity'\n}, 'enabled'];\nconst _properties = ['material', 'meshInstances', 'asset', 'materialAssets', 'castShadows', 'receiveShadows', 'castShadowsLightmap', 'lightmapped', 'lightmapSizeMultiplier', 'renderStyle', 'type', 'layers', 'isStatic', 'batchGroupId'];\nclass RenderComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.id = 'render';\n\t\tthis.ComponentType = RenderComponent;\n\t\tthis.DataType = RenderComponentData;\n\t\tthis.schema = _schema;\n\t\tthis.defaultMaterial = getDefaultMaterial(app.graphicsDevice);\n\t\tthis.on('beforeremove', this.onRemove, this);\n\t}\n\tinitializeComponentData(component, _data, properties) {\n\t\tif (_data.batchGroupId === null || _data.batchGroupId === undefined) {\n\t\t\t_data.batchGroupId = -1;\n\t\t}\n\t\tif (_data.layers && _data.layers.length) {\n\t\t\t_data.layers = _data.layers.slice(0);\n\t\t}\n\t\tfor (let i = 0; i < _properties.length; i++) {\n\t\t\tif (_data.hasOwnProperty(_properties[i])) {\n\t\t\t\tcomponent[_properties[i]] = _data[_properties[i]];\n\t\t\t}\n\t\t}\n\t\tif (_data.aabbCenter && _data.aabbHalfExtents) {\n\t\t\tcomponent.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents));\n\t\t}\n\t\tsuper.initializeComponentData(component, _data, _schema);\n\t}\n\tcloneComponent(entity, clone) {\n\t\tconst data = {};\n\t\tfor (let i = 0; i < _properties.length; i++) {\n\t\t\tdata[_properties[i]] = entity.render[_properties[i]];\n\t\t}\n\t\tdata.enabled = entity.render.enabled;\n\t\tdelete data.meshInstances;\n\t\tconst component = this.addComponent(clone, data);\n\t\tconst srcMeshInstances = entity.render.meshInstances;\n\t\tconst meshes = srcMeshInstances.map(mi => mi.mesh);\n\t\tcomponent._onSetMeshes(meshes);\n\t\tfor (let m = 0; m < srcMeshInstances.length; m++) {\n\t\t\tcomponent.meshInstances[m].material = srcMeshInstances[m].material;\n\t\t}\n\t\tif (entity.render.customAabb) {\n\t\t\tcomponent.customAabb = entity.render.customAabb.clone();\n\t\t}\n\t\treturn component;\n\t}\n\tonRemove(entity, component) {\n\t\tcomponent.onRemove();\n\t}\n}\nComponent._buildAccessors(RenderComponent.prototype, _schema);\n\nexport { RenderComponentSystem };\n", "class ObjectPool {\n\tconstructor(constructorFunc, size) {\n\t\tthis._constructor = void 0;\n\t\tthis._pool = [];\n\t\tthis._count = 0;\n\t\tthis._constructor = constructorFunc;\n\t\tthis._resize(size);\n\t}\n\t_resize(size) {\n\t\tif (size > this._pool.length) {\n\t\t\tfor (let i = this._pool.length; i < size; i++) {\n\t\t\t\tthis._pool[i] = new this._constructor();\n\t\t\t}\n\t\t}\n\t}\n\tallocate() {\n\t\tif (this._count >= this._pool.length) {\n\t\t\tthis._resize(this._pool.length * 2);\n\t\t}\n\t\treturn this._pool[this._count++];\n\t}\n\tfreeAll() {\n\t\tthis._count = 0;\n\t}\n}\n\nexport { ObjectPool };\n", "import { Quat } from '../../../core/math/quat.js';\nimport { Vec3 } from '../../../core/math/vec3.js';\nimport { BODYGROUP_STATIC, BODYMASK_NOT_STATIC, BODYTYPE_STATIC, BODYTYPE_DYNAMIC, BODYTYPE_KINEMATIC, BODYGROUP_KINEMATIC, BODYMASK_ALL, BODYGROUP_DYNAMIC, BODYFLAG_KINEMATIC_OBJECT, BODYSTATE_DISABLE_DEACTIVATION, BODYSTATE_ACTIVE_TAG, BODYSTATE_DISABLE_SIMULATION } from './constants.js';\nimport { Component } from '../component.js';\n\nlet _ammoTransform;\nlet _ammoVec1, _ammoVec2, _ammoQuat;\nconst _quat1 = new Quat();\nconst _quat2 = new Quat();\nconst _vec3 = new Vec3();\nclass RigidBodyComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t\tthis._angularDamping = 0;\n\t\tthis._angularFactor = new Vec3(1, 1, 1);\n\t\tthis._angularVelocity = new Vec3();\n\t\tthis._body = null;\n\t\tthis._friction = 0.5;\n\t\tthis._group = BODYGROUP_STATIC;\n\t\tthis._linearDamping = 0;\n\t\tthis._linearFactor = new Vec3(1, 1, 1);\n\t\tthis._linearVelocity = new Vec3();\n\t\tthis._mask = BODYMASK_NOT_STATIC;\n\t\tthis._mass = 1;\n\t\tthis._restitution = 0;\n\t\tthis._rollingFriction = 0;\n\t\tthis._simulationEnabled = false;\n\t\tthis._type = BODYTYPE_STATIC;\n\t}\n\tstatic onLibraryLoaded() {\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t_ammoTransform = new Ammo.btTransform();\n\t\t\t_ammoVec1 = new Ammo.btVector3();\n\t\t\t_ammoVec2 = new Ammo.btVector3();\n\t\t\t_ammoQuat = new Ammo.btQuaternion();\n\t\t}\n\t}\n\tset angularDamping(damping) {\n\t\tif (this._angularDamping !== damping) {\n\t\t\tthis._angularDamping = damping;\n\t\t\tif (this._body) {\n\t\t\t\tthis._body.setDamping(this._linearDamping, damping);\n\t\t\t}\n\t\t}\n\t}\n\tget angularDamping() {\n\t\treturn this._angularDamping;\n\t}\n\tset angularFactor(factor) {\n\t\tif (!this._angularFactor.equals(factor)) {\n\t\t\tthis._angularFactor.copy(factor);\n\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t_ammoVec1.setValue(factor.x, factor.y, factor.z);\n\t\t\t\tthis._body.setAngularFactor(_ammoVec1);\n\t\t\t}\n\t\t}\n\t}\n\tget angularFactor() {\n\t\treturn this._angularFactor;\n\t}\n\tset angularVelocity(velocity) {\n\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\tthis._body.activate();\n\t\t\t_ammoVec1.setValue(velocity.x, velocity.y, velocity.z);\n\t\t\tthis._body.setAngularVelocity(_ammoVec1);\n\t\t\tthis._angularVelocity.copy(velocity);\n\t\t}\n\t}\n\tget angularVelocity() {\n\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\tconst velocity = this._body.getAngularVelocity();\n\t\t\tthis._angularVelocity.set(velocity.x(), velocity.y(), velocity.z());\n\t\t}\n\t\treturn this._angularVelocity;\n\t}\n\tset body(body) {\n\t\tif (this._body !== body) {\n\t\t\tthis._body = body;\n\t\t\tif (body && this._simulationEnabled) {\n\t\t\t\tbody.activate();\n\t\t\t}\n\t\t}\n\t}\n\tget body() {\n\t\treturn this._body;\n\t}\n\tset friction(friction) {\n\t\tif (this._friction !== friction) {\n\t\t\tthis._friction = friction;\n\t\t\tif (this._body) {\n\t\t\t\tthis._body.setFriction(friction);\n\t\t\t}\n\t\t}\n\t}\n\tget friction() {\n\t\treturn this._friction;\n\t}\n\tset group(group) {\n\t\tif (this._group !== group) {\n\t\t\tthis._group = group;\n\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\tthis.disableSimulation();\n\t\t\t\tthis.enableSimulation();\n\t\t\t}\n\t\t}\n\t}\n\tget group() {\n\t\treturn this._group;\n\t}\n\tset linearDamping(damping) {\n\t\tif (this._linearDamping !== damping) {\n\t\t\tthis._linearDamping = damping;\n\t\t\tif (this._body) {\n\t\t\t\tthis._body.setDamping(damping, this._angularDamping);\n\t\t\t}\n\t\t}\n\t}\n\tget linearDamping() {\n\t\treturn this._linearDamping;\n\t}\n\tset linearFactor(factor) {\n\t\tif (!this._linearFactor.equals(factor)) {\n\t\t\tthis._linearFactor.copy(factor);\n\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t_ammoVec1.setValue(factor.x, factor.y, factor.z);\n\t\t\t\tthis._body.setLinearFactor(_ammoVec1);\n\t\t\t}\n\t\t}\n\t}\n\tget linearFactor() {\n\t\treturn this._linearFactor;\n\t}\n\tset linearVelocity(velocity) {\n\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\tthis._body.activate();\n\t\t\t_ammoVec1.setValue(velocity.x, velocity.y, velocity.z);\n\t\t\tthis._body.setLinearVelocity(_ammoVec1);\n\t\t\tthis._linearVelocity.copy(velocity);\n\t\t}\n\t}\n\tget linearVelocity() {\n\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\tconst velocity = this._body.getLinearVelocity();\n\t\t\tthis._linearVelocity.set(velocity.x(), velocity.y(), velocity.z());\n\t\t}\n\t\treturn this._linearVelocity;\n\t}\n\tset mask(mask) {\n\t\tif (this._mask !== mask) {\n\t\t\tthis._mask = mask;\n\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\tthis.disableSimulation();\n\t\t\t\tthis.enableSimulation();\n\t\t\t}\n\t\t}\n\t}\n\tget mask() {\n\t\treturn this._mask;\n\t}\n\tset mass(mass) {\n\t\tif (this._mass !== mass) {\n\t\t\tthis._mass = mass;\n\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\tconst enabled = this.enabled && this.entity.enabled;\n\t\t\t\tif (enabled) {\n\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t}\n\t\t\t\tthis._body.getCollisionShape().calculateLocalInertia(mass, _ammoVec1);\n\t\t\t\tthis._body.setMassProps(mass, _ammoVec1);\n\t\t\t\tthis._body.updateInertiaTensor();\n\t\t\t\tif (enabled) {\n\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget mass() {\n\t\treturn this._mass;\n\t}\n\tset restitution(restitution) {\n\t\tif (this._restitution !== restitution) {\n\t\t\tthis._restitution = restitution;\n\t\t\tif (this._body) {\n\t\t\t\tthis._body.setRestitution(restitution);\n\t\t\t}\n\t\t}\n\t}\n\tget restitution() {\n\t\treturn this._restitution;\n\t}\n\tset rollingFriction(friction) {\n\t\tif (this._rollingFriction !== friction) {\n\t\t\tthis._rollingFriction = friction;\n\t\t\tif (this._body) {\n\t\t\t\tthis._body.setRollingFriction(friction);\n\t\t\t}\n\t\t}\n\t}\n\tget rollingFriction() {\n\t\treturn this._rollingFriction;\n\t}\n\tset type(type) {\n\t\tif (this._type !== type) {\n\t\t\tthis._type = type;\n\t\t\tthis.disableSimulation();\n\t\t\tswitch (type) {\n\t\t\t\tcase BODYTYPE_DYNAMIC:\n\t\t\t\t\tthis._group = BODYGROUP_DYNAMIC;\n\t\t\t\t\tthis._mask = BODYMASK_ALL;\n\t\t\t\t\tbreak;\n\t\t\t\tcase BODYTYPE_KINEMATIC:\n\t\t\t\t\tthis._group = BODYGROUP_KINEMATIC;\n\t\t\t\t\tthis._mask = BODYMASK_ALL;\n\t\t\t\t\tbreak;\n\t\t\t\tcase BODYTYPE_STATIC:\n\t\t\t\tdefault:\n\t\t\t\t\tthis._group = BODYGROUP_STATIC;\n\t\t\t\t\tthis._mask = BODYMASK_NOT_STATIC;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.createBody();\n\t\t}\n\t}\n\tget type() {\n\t\treturn this._type;\n\t}\n\tcreateBody() {\n\t\tconst entity = this.entity;\n\t\tlet shape;\n\t\tif (entity.collision) {\n\t\t\tshape = entity.collision.shape;\n\t\t\tif (entity.trigger) {\n\t\t\t\tentity.trigger.destroy();\n\t\t\t\tdelete entity.trigger;\n\t\t\t}\n\t\t}\n\t\tif (shape) {\n\t\t\tif (this._body) {\n\t\t\t\tthis.system.removeBody(this._body);\n\t\t\t\tthis.system.destroyBody(this._body);\n\t\t\t\tthis._body = null;\n\t\t\t}\n\t\t\tconst mass = this._type === BODYTYPE_DYNAMIC ? this._mass : 0;\n\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\tconst body = this.system.createBody(mass, shape, _ammoTransform);\n\t\t\tbody.setRestitution(this._restitution);\n\t\t\tbody.setFriction(this._friction);\n\t\t\tbody.setRollingFriction(this._rollingFriction);\n\t\t\tbody.setDamping(this._linearDamping, this._angularDamping);\n\t\t\tif (this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\tconst linearFactor = this._linearFactor;\n\t\t\t\t_ammoVec1.setValue(linearFactor.x, linearFactor.y, linearFactor.z);\n\t\t\t\tbody.setLinearFactor(_ammoVec1);\n\t\t\t\tconst angularFactor = this._angularFactor;\n\t\t\t\t_ammoVec1.setValue(angularFactor.x, angularFactor.y, angularFactor.z);\n\t\t\t\tbody.setAngularFactor(_ammoVec1);\n\t\t\t} else if (this._type === BODYTYPE_KINEMATIC) {\n\t\t\t\tbody.setCollisionFlags(body.getCollisionFlags() | BODYFLAG_KINEMATIC_OBJECT);\n\t\t\t\tbody.setActivationState(BODYSTATE_DISABLE_DEACTIVATION);\n\t\t\t}\n\t\t\tbody.entity = entity;\n\t\t\tthis.body = body;\n\t\t\tif (this.enabled && entity.enabled) {\n\t\t\t\tthis.enableSimulation();\n\t\t\t}\n\t\t}\n\t}\n\tisActive() {\n\t\treturn this._body ? this._body.isActive() : false;\n\t}\n\tactivate() {\n\t\tif (this._body) {\n\t\t\tthis._body.activate();\n\t\t}\n\t}\n\tenableSimulation() {\n\t\tconst entity = this.entity;\n\t\tif (entity.collision && entity.collision.enabled && !this._simulationEnabled) {\n\t\t\tconst body = this._body;\n\t\t\tif (body) {\n\t\t\t\tthis.system.addBody(body, this._group, this._mask);\n\t\t\t\tswitch (this._type) {\n\t\t\t\t\tcase BODYTYPE_DYNAMIC:\n\t\t\t\t\t\tthis.system._dynamic.push(this);\n\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\t\t\t\t\tthis.syncEntityToBody();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BODYTYPE_KINEMATIC:\n\t\t\t\t\t\tthis.system._kinematic.push(this);\n\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_DISABLE_DEACTIVATION);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BODYTYPE_STATIC:\n\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\t\t\t\t\tthis.syncEntityToBody();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (entity.collision.type === 'compound') {\n\t\t\t\t\tthis.system._compounds.push(entity.collision);\n\t\t\t\t}\n\t\t\t\tbody.activate();\n\t\t\t\tthis._simulationEnabled = true;\n\t\t\t}\n\t\t}\n\t}\n\tdisableSimulation() {\n\t\tconst body = this._body;\n\t\tif (body && this._simulationEnabled) {\n\t\t\tconst system = this.system;\n\t\t\tlet idx = system._compounds.indexOf(this.entity.collision);\n\t\t\tif (idx > -1) {\n\t\t\t\tsystem._compounds.splice(idx, 1);\n\t\t\t}\n\t\t\tidx = system._dynamic.indexOf(this);\n\t\t\tif (idx > -1) {\n\t\t\t\tsystem._dynamic.splice(idx, 1);\n\t\t\t}\n\t\t\tidx = system._kinematic.indexOf(this);\n\t\t\tif (idx > -1) {\n\t\t\t\tsystem._kinematic.splice(idx, 1);\n\t\t\t}\n\t\t\tsystem.removeBody(body);\n\t\t\tbody.forceActivationState(BODYSTATE_DISABLE_SIMULATION);\n\t\t\tthis._simulationEnabled = false;\n\t\t}\n\t}\n\tapplyForce(x, y, z, px, py, pz) {\n\t\tconst body = this._body;\n\t\tif (body) {\n\t\t\tbody.activate();\n\t\t\tif (x instanceof Vec3) {\n\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t} else {\n\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t}\n\t\t\tif (y instanceof Vec3) {\n\t\t\t\t_ammoVec2.setValue(y.x, y.y, y.z);\n\t\t\t} else if (px !== undefined) {\n\t\t\t\t_ammoVec2.setValue(px, py, pz);\n\t\t\t} else {\n\t\t\t\t_ammoVec2.setValue(0, 0, 0);\n\t\t\t}\n\t\t\tbody.applyForce(_ammoVec1, _ammoVec2);\n\t\t}\n\t}\n\tapplyTorque(x, y, z) {\n\t\tconst body = this._body;\n\t\tif (body) {\n\t\t\tbody.activate();\n\t\t\tif (x instanceof Vec3) {\n\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t} else {\n\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t}\n\t\t\tbody.applyTorque(_ammoVec1);\n\t\t}\n\t}\n\tapplyImpulse(x, y, z, px, py, pz) {\n\t\tconst body = this._body;\n\t\tif (body) {\n\t\t\tbody.activate();\n\t\t\tif (x instanceof Vec3) {\n\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t} else {\n\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t}\n\t\t\tif (y instanceof Vec3) {\n\t\t\t\t_ammoVec2.setValue(y.x, y.y, y.z);\n\t\t\t} else if (px !== undefined) {\n\t\t\t\t_ammoVec2.setValue(px, py, pz);\n\t\t\t} else {\n\t\t\t\t_ammoVec2.setValue(0, 0, 0);\n\t\t\t}\n\t\t\tbody.applyImpulse(_ammoVec1, _ammoVec2);\n\t\t}\n\t}\n\tapplyTorqueImpulse(x, y, z) {\n\t\tconst body = this._body;\n\t\tif (body) {\n\t\t\tbody.activate();\n\t\t\tif (x instanceof Vec3) {\n\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t} else {\n\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t}\n\t\t\tbody.applyTorqueImpulse(_ammoVec1);\n\t\t}\n\t}\n\tisStatic() {\n\t\treturn this._type === BODYTYPE_STATIC;\n\t}\n\tisStaticOrKinematic() {\n\t\treturn this._type === BODYTYPE_STATIC || this._type === BODYTYPE_KINEMATIC;\n\t}\n\tisKinematic() {\n\t\treturn this._type === BODYTYPE_KINEMATIC;\n\t}\n\t_getEntityTransform(transform) {\n\t\tconst entity = this.entity;\n\t\tconst component = entity.collision;\n\t\tif (component) {\n\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t_ammoVec1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t_ammoQuat.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t} else {\n\t\t\tconst pos = entity.getPosition();\n\t\t\tconst rot = entity.getRotation();\n\t\t\t_ammoVec1.setValue(pos.x, pos.y, pos.z);\n\t\t\t_ammoQuat.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t}\n\t\ttransform.setOrigin(_ammoVec1);\n\t\ttransform.setRotation(_ammoQuat);\n\t}\n\tsyncEntityToBody() {\n\t\tconst body = this._body;\n\t\tif (body) {\n\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\tbody.setWorldTransform(_ammoTransform);\n\t\t\tif (this._type === BODYTYPE_KINEMATIC) {\n\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\tif (motionState) {\n\t\t\t\t\tmotionState.setWorldTransform(_ammoTransform);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbody.activate();\n\t\t}\n\t}\n\t_updateDynamic() {\n\t\tconst body = this._body;\n\t\tif (body.isActive()) {\n\t\t\tconst motionState = body.getMotionState();\n\t\t\tif (motionState) {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tmotionState.getWorldTransform(_ammoTransform);\n\t\t\t\tconst p = _ammoTransform.getOrigin();\n\t\t\t\tconst q = _ammoTransform.getRotation();\n\t\t\t\tconst component = entity.collision;\n\t\t\t\tif (component && component._hasOffset) {\n\t\t\t\t\tconst lo = component.data.linearOffset;\n\t\t\t\t\tconst ao = component.data.angularOffset;\n\t\t\t\t\tconst invertedAo = _quat2.copy(ao).invert();\n\t\t\t\t\tconst entityRot = _quat1.set(q.x(), q.y(), q.z(), q.w()).mul(invertedAo);\n\t\t\t\t\tentityRot.transformVector(lo, _vec3);\n\t\t\t\t\tentity.setPosition(p.x() - _vec3.x, p.y() - _vec3.y, p.z() - _vec3.z);\n\t\t\t\t\tentity.setRotation(entityRot);\n\t\t\t\t} else {\n\t\t\t\t\tentity.setPosition(p.x(), p.y(), p.z());\n\t\t\t\t\tentity.setRotation(q.x(), q.y(), q.z(), q.w());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t_updateKinematic() {\n\t\tconst motionState = this._body.getMotionState();\n\t\tif (motionState) {\n\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\tmotionState.setWorldTransform(_ammoTransform);\n\t\t}\n\t}\n\tteleport(x, y, z, rx, ry, rz) {\n\t\tif (x instanceof Vec3) {\n\t\t\tthis.entity.setPosition(x);\n\t\t} else {\n\t\t\tthis.entity.setPosition(x, y, z);\n\t\t}\n\t\tif (y instanceof Quat) {\n\t\t\tthis.entity.setRotation(y);\n\t\t} else if (y instanceof Vec3) {\n\t\t\tthis.entity.setEulerAngles(y);\n\t\t} else if (rx !== undefined) {\n\t\t\tthis.entity.setEulerAngles(rx, ry, rz);\n\t\t}\n\t\tthis.syncEntityToBody();\n\t}\n\tonEnable() {\n\t\tif (!this._body) {\n\t\t\tthis.createBody();\n\t\t}\n\t\tthis.enableSimulation();\n\t}\n\tonDisable() {\n\t\tthis.disableSimulation();\n\t}\n}\nRigidBodyComponent.EVENT_CONTACT = 'contact';\nRigidBodyComponent.EVENT_COLLISIONSTART = 'collisionstart';\nRigidBodyComponent.EVENT_COLLISIONEND = 'collisionend';\nRigidBodyComponent.EVENT_TRIGGERENTER = 'triggerenter';\nRigidBodyComponent.EVENT_TRIGGERLEAVE = 'triggerleave';\n\nexport { RigidBodyComponent };\n", "class RigidBodyComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t}\n}\n\nexport { RigidBodyComponentData };\n", "import { ObjectPool } from '../../../core/object-pool.js';\nimport { Vec3 } from '../../../core/math/vec3.js';\nimport { Component } from '../component.js';\nimport { ComponentSystem } from '../system.js';\nimport { BODYFLAG_NORESPONSE_OBJECT } from './constants.js';\nimport { RigidBodyComponent } from './component.js';\nimport { RigidBodyComponentData } from './data.js';\n\nlet ammoRayStart, ammoRayEnd;\nclass RaycastResult {\n\tconstructor(entity, point, normal, hitFraction) {\n\t\tthis.entity = void 0;\n\t\tthis.point = void 0;\n\t\tthis.normal = void 0;\n\t\tthis.hitFraction = void 0;\n\t\tthis.entity = entity;\n\t\tthis.point = point;\n\t\tthis.normal = normal;\n\t\tthis.hitFraction = hitFraction;\n\t}\n}\nclass SingleContactResult {\n\tconstructor(a, b, contactPoint) {\n\t\tthis.a = void 0;\n\t\tthis.b = void 0;\n\t\tthis.impulse = void 0;\n\t\tthis.localPointA = void 0;\n\t\tthis.localPointB = void 0;\n\t\tthis.pointA = void 0;\n\t\tthis.pointB = void 0;\n\t\tthis.normal = void 0;\n\t\tif (arguments.length !== 0) {\n\t\t\tthis.a = a;\n\t\t\tthis.b = b;\n\t\t\tthis.impulse = contactPoint.impulse;\n\t\t\tthis.localPointA = contactPoint.localPoint;\n\t\t\tthis.localPointB = contactPoint.localPointOther;\n\t\t\tthis.pointA = contactPoint.point;\n\t\t\tthis.pointB = contactPoint.pointOther;\n\t\t\tthis.normal = contactPoint.normal;\n\t\t} else {\n\t\t\tthis.a = null;\n\t\t\tthis.b = null;\n\t\t\tthis.impulse = 0;\n\t\t\tthis.localPointA = new Vec3();\n\t\t\tthis.localPointB = new Vec3();\n\t\t\tthis.pointA = new Vec3();\n\t\t\tthis.pointB = new Vec3();\n\t\t\tthis.normal = new Vec3();\n\t\t}\n\t}\n}\nclass ContactPoint {\n\tconstructor(localPoint = new Vec3(), localPointOther = new Vec3(), point = new Vec3(), pointOther = new Vec3(), normal = new Vec3(), impulse = 0) {\n\t\tthis.localPoint = void 0;\n\t\tthis.localPointOther = void 0;\n\t\tthis.point = void 0;\n\t\tthis.pointOther = void 0;\n\t\tthis.normal = void 0;\n\t\tthis.impulse = void 0;\n\t\tthis.localPoint = localPoint;\n\t\tthis.localPointOther = localPointOther;\n\t\tthis.point = point;\n\t\tthis.pointOther = pointOther;\n\t\tthis.normal = normal;\n\t\tthis.impulse = impulse;\n\t}\n}\nclass ContactResult {\n\tconstructor(other, contacts) {\n\t\tthis.other = void 0;\n\t\tthis.contacts = void 0;\n\t\tthis.other = other;\n\t\tthis.contacts = contacts;\n\t}\n}\nconst _schema = ['enabled'];\nclass RigidBodyComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.maxSubSteps = 10;\n\t\tthis.fixedTimeStep = 1 / 60;\n\t\tthis.gravity = new Vec3(0, -9.81, 0);\n\t\tthis._gravityFloat32 = new Float32Array(3);\n\t\tthis._dynamic = [];\n\t\tthis._kinematic = [];\n\t\tthis._triggers = [];\n\t\tthis._compounds = [];\n\t\tthis.id = 'rigidbody';\n\t\tthis._stats = app.stats.frame;\n\t\tthis.ComponentType = RigidBodyComponent;\n\t\tthis.DataType = RigidBodyComponentData;\n\t\tthis.contactPointPool = null;\n\t\tthis.contactResultPool = null;\n\t\tthis.singleContactResultPool = null;\n\t\tthis.schema = _schema;\n\t\tthis.collisions = {};\n\t\tthis.frameCollisions = {};\n\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t}\n\tonLibraryLoaded() {\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\tthis.collisionConfiguration = new Ammo.btDefaultCollisionConfiguration();\n\t\t\tthis.dispatcher = new Ammo.btCollisionDispatcher(this.collisionConfiguration);\n\t\t\tthis.overlappingPairCache = new Ammo.btDbvtBroadphase();\n\t\t\tthis.solver = new Ammo.btSequentialImpulseConstraintSolver();\n\t\t\tthis.dynamicsWorld = new Ammo.btDiscreteDynamicsWorld(this.dispatcher, this.overlappingPairCache, this.solver, this.collisionConfiguration);\n\t\t\tif (this.dynamicsWorld.setInternalTickCallback) {\n\t\t\t\tconst checkForCollisionsPointer = Ammo.addFunction(this._checkForCollisions.bind(this), 'vif');\n\t\t\t\tthis.dynamicsWorld.setInternalTickCallback(checkForCollisionsPointer);\n\t\t\t}\n\t\t\tammoRayStart = new Ammo.btVector3();\n\t\t\tammoRayEnd = new Ammo.btVector3();\n\t\t\tRigidBodyComponent.onLibraryLoaded();\n\t\t\tthis.contactPointPool = new ObjectPool(ContactPoint, 1);\n\t\t\tthis.contactResultPool = new ObjectPool(ContactResult, 1);\n\t\t\tthis.singleContactResultPool = new ObjectPool(SingleContactResult, 1);\n\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t} else {\n\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n\t}\n\tinitializeComponentData(component, data, properties) {\n\t\tconst props = ['mass', 'linearDamping', 'angularDamping', 'linearFactor', 'angularFactor', 'friction', 'rollingFriction', 'restitution', 'type', 'group', 'mask'];\n\t\tfor (const property of props) {\n\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\tconst value = data[property];\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tcomponent[property] = new Vec3(value[0], value[1], value[2]);\n\t\t\t\t} else {\n\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsuper.initializeComponentData(component, data, ['enabled']);\n\t}\n\tcloneComponent(entity, clone) {\n\t\tconst rigidbody = entity.rigidbody;\n\t\tconst data = {\n\t\t\tenabled: rigidbody.enabled,\n\t\t\tmass: rigidbody.mass,\n\t\t\tlinearDamping: rigidbody.linearDamping,\n\t\t\tangularDamping: rigidbody.angularDamping,\n\t\t\tlinearFactor: [rigidbody.linearFactor.x, rigidbody.linearFactor.y, rigidbody.linearFactor.z],\n\t\t\tangularFactor: [rigidbody.angularFactor.x, rigidbody.angularFactor.y, rigidbody.angularFactor.z],\n\t\t\tfriction: rigidbody.friction,\n\t\t\trollingFriction: rigidbody.rollingFriction,\n\t\t\trestitution: rigidbody.restitution,\n\t\t\ttype: rigidbody.type,\n\t\t\tgroup: rigidbody.group,\n\t\t\tmask: rigidbody.mask\n\t\t};\n\t\treturn this.addComponent(clone, data);\n\t}\n\tonBeforeRemove(entity, component) {\n\t\tif (component.enabled) {\n\t\t\tcomponent.enabled = false;\n\t\t}\n\t\tif (component.body) {\n\t\t\tthis.destroyBody(component.body);\n\t\t\tcomponent.body = null;\n\t\t}\n\t}\n\taddBody(body, group, mask) {\n\t\tif (group !== undefined && mask !== undefined) {\n\t\t\tthis.dynamicsWorld.addRigidBody(body, group, mask);\n\t\t} else {\n\t\t\tthis.dynamicsWorld.addRigidBody(body);\n\t\t}\n\t}\n\tremoveBody(body) {\n\t\tthis.dynamicsWorld.removeRigidBody(body);\n\t}\n\tcreateBody(mass, shape, transform) {\n\t\tconst localInertia = new Ammo.btVector3(0, 0, 0);\n\t\tif (mass !== 0) {\n\t\t\tshape.calculateLocalInertia(mass, localInertia);\n\t\t}\n\t\tconst motionState = new Ammo.btDefaultMotionState(transform);\n\t\tconst bodyInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, shape, localInertia);\n\t\tconst body = new Ammo.btRigidBody(bodyInfo);\n\t\tAmmo.destroy(bodyInfo);\n\t\tAmmo.destroy(localInertia);\n\t\treturn body;\n\t}\n\tdestroyBody(body) {\n\t\tconst motionState = body.getMotionState();\n\t\tif (motionState) {\n\t\t\tAmmo.destroy(motionState);\n\t\t}\n\t\tAmmo.destroy(body);\n\t}\n\traycastFirst(start, end, options = {}) {\n\t\tif (options.filterTags || options.filterCallback) {\n\t\t\toptions.sort = true;\n\t\t\treturn this.raycastAll(start, end, options)[0] || null;\n\t\t}\n\t\tlet result = null;\n\t\tammoRayStart.setValue(start.x, start.y, start.z);\n\t\tammoRayEnd.setValue(end.x, end.y, end.z);\n\t\tconst rayCallback = new Ammo.ClosestRayResultCallback(ammoRayStart, ammoRayEnd);\n\t\tif (typeof options.filterCollisionGroup === 'number') {\n\t\t\trayCallback.set_m_collisionFilterGroup(options.filterCollisionGroup);\n\t\t}\n\t\tif (typeof options.filterCollisionMask === 'number') {\n\t\t\trayCallback.set_m_collisionFilterMask(options.filterCollisionMask);\n\t\t}\n\t\tthis.dynamicsWorld.rayTest(ammoRayStart, ammoRayEnd, rayCallback);\n\t\tif (rayCallback.hasHit()) {\n\t\t\tconst collisionObj = rayCallback.get_m_collisionObject();\n\t\t\tconst body = Ammo.castObject(collisionObj, Ammo.btRigidBody);\n\t\t\tif (body) {\n\t\t\t\tconst point = rayCallback.get_m_hitPointWorld();\n\t\t\t\tconst normal = rayCallback.get_m_hitNormalWorld();\n\t\t\t\tresult = new RaycastResult(body.entity, new Vec3(point.x(), point.y(), point.z()), new Vec3(normal.x(), normal.y(), normal.z()), rayCallback.get_m_closestHitFraction());\n\t\t\t}\n\t\t}\n\t\tAmmo.destroy(rayCallback);\n\t\treturn result;\n\t}\n\traycastAll(start, end, options = {}) {\n\t\tconst results = [];\n\t\tammoRayStart.setValue(start.x, start.y, start.z);\n\t\tammoRayEnd.setValue(end.x, end.y, end.z);\n\t\tconst rayCallback = new Ammo.AllHitsRayResultCallback(ammoRayStart, ammoRayEnd);\n\t\tif (typeof options.filterCollisionGroup === 'number') {\n\t\t\trayCallback.set_m_collisionFilterGroup(options.filterCollisionGroup);\n\t\t}\n\t\tif (typeof options.filterCollisionMask === 'number') {\n\t\t\trayCallback.set_m_collisionFilterMask(options.filterCollisionMask);\n\t\t}\n\t\tthis.dynamicsWorld.rayTest(ammoRayStart, ammoRayEnd, rayCallback);\n\t\tif (rayCallback.hasHit()) {\n\t\t\tconst collisionObjs = rayCallback.get_m_collisionObjects();\n\t\t\tconst points = rayCallback.get_m_hitPointWorld();\n\t\t\tconst normals = rayCallback.get_m_hitNormalWorld();\n\t\t\tconst hitFractions = rayCallback.get_m_hitFractions();\n\t\t\tconst numHits = collisionObjs.size();\n\t\t\tfor (let i = 0; i < numHits; i++) {\n\t\t\t\tconst body = Ammo.castObject(collisionObjs.at(i), Ammo.btRigidBody);\n\t\t\t\tif (body && body.entity) {\n\t\t\t\t\tif (options.filterTags && !body.entity.tags.has(...options.filterTags) || options.filterCallback && !options.filterCallback(body.entity)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst point = points.at(i);\n\t\t\t\t\tconst normal = normals.at(i);\n\t\t\t\t\tconst result = new RaycastResult(body.entity, new Vec3(point.x(), point.y(), point.z()), new Vec3(normal.x(), normal.y(), normal.z()), hitFractions.at(i));\n\t\t\t\t\tresults.push(result);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.sort) {\n\t\t\t\tresults.sort((a, b) => a.hitFraction - b.hitFraction);\n\t\t\t}\n\t\t}\n\t\tAmmo.destroy(rayCallback);\n\t\treturn results;\n\t}\n\t_storeCollision(entity, other) {\n\t\tlet isNewCollision = false;\n\t\tconst guid = entity.getGuid();\n\t\tthis.collisions[guid] = this.collisions[guid] || {\n\t\t\tothers: [],\n\t\t\tentity: entity\n\t\t};\n\t\tif (this.collisions[guid].others.indexOf(other) < 0) {\n\t\t\tthis.collisions[guid].others.push(other);\n\t\t\tisNewCollision = true;\n\t\t}\n\t\tthis.frameCollisions[guid] = this.frameCollisions[guid] || {\n\t\t\tothers: [],\n\t\t\tentity: entity\n\t\t};\n\t\tthis.frameCollisions[guid].others.push(other);\n\t\treturn isNewCollision;\n\t}\n\t_createContactPointFromAmmo(contactPoint) {\n\t\tconst localPointA = contactPoint.get_m_localPointA();\n\t\tconst localPointB = contactPoint.get_m_localPointB();\n\t\tconst positionWorldOnA = contactPoint.getPositionWorldOnA();\n\t\tconst positionWorldOnB = contactPoint.getPositionWorldOnB();\n\t\tconst normalWorldOnB = contactPoint.get_m_normalWorldOnB();\n\t\tconst contact = this.contactPointPool.allocate();\n\t\tcontact.localPoint.set(localPointA.x(), localPointA.y(), localPointA.z());\n\t\tcontact.localPointOther.set(localPointB.x(), localPointB.y(), localPointB.z());\n\t\tcontact.point.set(positionWorldOnA.x(), positionWorldOnA.y(), positionWorldOnA.z());\n\t\tcontact.pointOther.set(positionWorldOnB.x(), positionWorldOnB.y(), positionWorldOnB.z());\n\t\tcontact.normal.set(normalWorldOnB.x(), normalWorldOnB.y(), normalWorldOnB.z());\n\t\tcontact.impulse = contactPoint.getAppliedImpulse();\n\t\treturn contact;\n\t}\n\t_createReverseContactPointFromAmmo(contactPoint) {\n\t\tconst localPointA = contactPoint.get_m_localPointA();\n\t\tconst localPointB = contactPoint.get_m_localPointB();\n\t\tconst positionWorldOnA = contactPoint.getPositionWorldOnA();\n\t\tconst positionWorldOnB = contactPoint.getPositionWorldOnB();\n\t\tconst normalWorldOnB = contactPoint.get_m_normalWorldOnB();\n\t\tconst contact = this.contactPointPool.allocate();\n\t\tcontact.localPointOther.set(localPointA.x(), localPointA.y(), localPointA.z());\n\t\tcontact.localPoint.set(localPointB.x(), localPointB.y(), localPointB.z());\n\t\tcontact.pointOther.set(positionWorldOnA.x(), positionWorldOnA.y(), positionWorldOnA.z());\n\t\tcontact.point.set(positionWorldOnB.x(), positionWorldOnB.y(), positionWorldOnB.z());\n\t\tcontact.normal.set(normalWorldOnB.x(), normalWorldOnB.y(), normalWorldOnB.z());\n\t\tcontact.impulse = contactPoint.getAppliedImpulse();\n\t\treturn contact;\n\t}\n\t_createSingleContactResult(a, b, contactPoint) {\n\t\tconst result = this.singleContactResultPool.allocate();\n\t\tresult.a = a;\n\t\tresult.b = b;\n\t\tresult.localPointA = contactPoint.localPoint;\n\t\tresult.localPointB = contactPoint.localPointOther;\n\t\tresult.pointA = contactPoint.point;\n\t\tresult.pointB = contactPoint.pointOther;\n\t\tresult.normal = contactPoint.normal;\n\t\tresult.impulse = contactPoint.impulse;\n\t\treturn result;\n\t}\n\t_createContactResult(other, contacts) {\n\t\tconst result = this.contactResultPool.allocate();\n\t\tresult.other = other;\n\t\tresult.contacts = contacts;\n\t\treturn result;\n\t}\n\t_cleanOldCollisions() {\n\t\tfor (const guid in this.collisions) {\n\t\t\tif (this.collisions.hasOwnProperty(guid)) {\n\t\t\t\tconst frameCollision = this.frameCollisions[guid];\n\t\t\t\tconst collision = this.collisions[guid];\n\t\t\t\tconst entity = collision.entity;\n\t\t\t\tconst entityCollision = entity.collision;\n\t\t\t\tconst entityRigidbody = entity.rigidbody;\n\t\t\t\tconst others = collision.others;\n\t\t\t\tconst length = others.length;\n\t\t\t\tlet i = length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tconst other = others[i];\n\t\t\t\t\tif (!frameCollision || frameCollision.others.indexOf(other) < 0) {\n\t\t\t\t\t\tothers.splice(i, 1);\n\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\tif (entityCollision) {\n\t\t\t\t\t\t\t\tentityCollision.fire('triggerleave', other);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (other.rigidbody) {\n\t\t\t\t\t\t\t\tother.rigidbody.fire('triggerleave', entity);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!other.trigger) {\n\t\t\t\t\t\t\tif (entityRigidbody) {\n\t\t\t\t\t\t\t\tentityRigidbody.fire('collisionend', other);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (entityCollision) {\n\t\t\t\t\t\t\t\tentityCollision.fire('collisionend', other);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (others.length === 0) {\n\t\t\t\t\tdelete this.collisions[guid];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t_hasContactEvent(entity) {\n\t\tconst c = entity.collision;\n\t\tif (c && (c.hasEvent('collisionstart') || c.hasEvent('collisionend') || c.hasEvent('contact'))) {\n\t\t\treturn true;\n\t\t}\n\t\tconst r = entity.rigidbody;\n\t\treturn r && (r.hasEvent('collisionstart') || r.hasEvent('collisionend') || r.hasEvent('contact'));\n\t}\n\t_checkForCollisions(world, timeStep) {\n\t\tconst dynamicsWorld = Ammo.wrapPointer(world, Ammo.btDynamicsWorld);\n\t\tconst dispatcher = dynamicsWorld.getDispatcher();\n\t\tconst numManifolds = dispatcher.getNumManifolds();\n\t\tthis.frameCollisions = {};\n\t\tfor (let i = 0; i < numManifolds; i++) {\n\t\t\tconst manifold = dispatcher.getManifoldByIndexInternal(i);\n\t\t\tconst body0 = manifold.getBody0();\n\t\t\tconst body1 = manifold.getBody1();\n\t\t\tconst wb0 = Ammo.castObject(body0, Ammo.btRigidBody);\n\t\t\tconst wb1 = Ammo.castObject(body1, Ammo.btRigidBody);\n\t\t\tconst e0 = wb0.entity;\n\t\t\tconst e1 = wb1.entity;\n\t\t\tif (!e0 || !e1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst flags0 = wb0.getCollisionFlags();\n\t\t\tconst flags1 = wb1.getCollisionFlags();\n\t\t\tconst numContacts = manifold.getNumContacts();\n\t\t\tconst forwardContacts = [];\n\t\t\tconst reverseContacts = [];\n\t\t\tlet newCollision;\n\t\t\tif (numContacts > 0) {\n\t\t\t\tif (flags0 & BODYFLAG_NORESPONSE_OBJECT || flags1 & BODYFLAG_NORESPONSE_OBJECT) {\n\t\t\t\t\tconst e0Events = e0.collision && (e0.collision.hasEvent('triggerenter') || e0.collision.hasEvent('triggerleave'));\n\t\t\t\t\tconst e1Events = e1.collision && (e1.collision.hasEvent('triggerenter') || e1.collision.hasEvent('triggerleave'));\n\t\t\t\t\tconst e0BodyEvents = e0.rigidbody && (e0.rigidbody.hasEvent('triggerenter') || e0.rigidbody.hasEvent('triggerleave'));\n\t\t\t\t\tconst e1BodyEvents = e1.rigidbody && (e1.rigidbody.hasEvent('triggerenter') || e1.rigidbody.hasEvent('triggerleave'));\n\t\t\t\t\tif (e0Events) {\n\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\tif (newCollision && !(flags1 & BODYFLAG_NORESPONSE_OBJECT)) {\n\t\t\t\t\t\t\te0.collision.fire('triggerenter', e1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (e1Events) {\n\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\tif (newCollision && !(flags0 & BODYFLAG_NORESPONSE_OBJECT)) {\n\t\t\t\t\t\t\te1.collision.fire('triggerenter', e0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (e0BodyEvents) {\n\t\t\t\t\t\tif (!newCollision) {\n\t\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\te0.rigidbody.fire('triggerenter', e1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (e1BodyEvents) {\n\t\t\t\t\t\tif (!newCollision) {\n\t\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\te1.rigidbody.fire('triggerenter', e0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst e0Events = this._hasContactEvent(e0);\n\t\t\t\t\tconst e1Events = this._hasContactEvent(e1);\n\t\t\t\t\tconst globalEvents = this.hasEvent('contact');\n\t\t\t\t\tif (globalEvents || e0Events || e1Events) {\n\t\t\t\t\t\tfor (let j = 0; j < numContacts; j++) {\n\t\t\t\t\t\t\tconst btContactPoint = manifold.getContactPoint(j);\n\t\t\t\t\t\t\tconst contactPoint = this._createContactPointFromAmmo(btContactPoint);\n\t\t\t\t\t\t\tif (e0Events || e1Events) {\n\t\t\t\t\t\t\t\tforwardContacts.push(contactPoint);\n\t\t\t\t\t\t\t\tconst reverseContactPoint = this._createReverseContactPointFromAmmo(btContactPoint);\n\t\t\t\t\t\t\t\treverseContacts.push(reverseContactPoint);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (globalEvents) {\n\t\t\t\t\t\t\t\tconst result = this._createSingleContactResult(e0, e1, contactPoint);\n\t\t\t\t\t\t\t\tthis.fire('contact', result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (e0Events) {\n\t\t\t\t\t\t\tconst forwardResult = this._createContactResult(e1, forwardContacts);\n\t\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\t\tif (e0.collision) {\n\t\t\t\t\t\t\t\te0.collision.fire('contact', forwardResult);\n\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\te0.collision.fire('collisionstart', forwardResult);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (e0.rigidbody) {\n\t\t\t\t\t\t\t\te0.rigidbody.fire('contact', forwardResult);\n\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\te0.rigidbody.fire('collisionstart', forwardResult);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (e1Events) {\n\t\t\t\t\t\t\tconst reverseResult = this._createContactResult(e0, reverseContacts);\n\t\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\t\tif (e1.collision) {\n\t\t\t\t\t\t\t\te1.collision.fire('contact', reverseResult);\n\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\te1.collision.fire('collisionstart', reverseResult);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (e1.rigidbody) {\n\t\t\t\t\t\t\t\te1.rigidbody.fire('contact', reverseResult);\n\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\te1.rigidbody.fire('collisionstart', reverseResult);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._cleanOldCollisions();\n\t\tthis.contactPointPool.freeAll();\n\t\tthis.contactResultPool.freeAll();\n\t\tthis.singleContactResultPool.freeAll();\n\t}\n\tonUpdate(dt) {\n\t\tlet i, len;\n\t\tthis._gravityFloat32[0] = this.gravity.x;\n\t\tthis._gravityFloat32[1] = this.gravity.y;\n\t\tthis._gravityFloat32[2] = this.gravity.z;\n\t\tconst gravity = this.dynamicsWorld.getGravity();\n\t\tif (gravity.x() !== this._gravityFloat32[0] || gravity.y() !== this._gravityFloat32[1] || gravity.z() !== this._gravityFloat32[2]) {\n\t\t\tgravity.setValue(this.gravity.x, this.gravity.y, this.gravity.z);\n\t\t\tthis.dynamicsWorld.setGravity(gravity);\n\t\t}\n\t\tconst triggers = this._triggers;\n\t\tfor (i = 0, len = triggers.length; i < len; i++) {\n\t\t\ttriggers[i].updateTransform();\n\t\t}\n\t\tconst compounds = this._compounds;\n\t\tfor (i = 0, len = compounds.length; i < len; i++) {\n\t\t\tcompounds[i]._updateCompound();\n\t\t}\n\t\tconst kinematic = this._kinematic;\n\t\tfor (i = 0, len = kinematic.length; i < len; i++) {\n\t\t\tkinematic[i]._updateKinematic();\n\t\t}\n\t\tthis.dynamicsWorld.stepSimulation(dt, this.maxSubSteps, this.fixedTimeStep);\n\t\tconst dynamic = this._dynamic;\n\t\tfor (i = 0, len = dynamic.length; i < len; i++) {\n\t\t\tdynamic[i]._updateDynamic();\n\t\t}\n\t\tif (!this.dynamicsWorld.setInternalTickCallback) this._checkForCollisions(Ammo.getPointer(this.dynamicsWorld), dt);\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\tif (typeof Ammo !== 'undefined') {\n\t\t\tAmmo.destroy(this.dynamicsWorld);\n\t\t\tAmmo.destroy(this.solver);\n\t\t\tAmmo.destroy(this.overlappingPairCache);\n\t\t\tAmmo.destroy(this.dispatcher);\n\t\t\tAmmo.destroy(this.collisionConfiguration);\n\t\t\tthis.dynamicsWorld = null;\n\t\t\tthis.solver = null;\n\t\t\tthis.overlappingPairCache = null;\n\t\t\tthis.dispatcher = null;\n\t\t\tthis.collisionConfiguration = null;\n\t\t}\n\t}\n}\nRigidBodyComponentSystem.EVENT_CONTACT = 'contact';\nComponent._buildAccessors(RigidBodyComponent.prototype, _schema);\n\nexport { ContactPoint, ContactResult, RaycastResult, RigidBodyComponentSystem, SingleContactResult };\n", "import { EventHandler } from '../../../core/event-handler.js';\nimport { math } from '../../../core/math/math.js';\nimport { Vec3 } from '../../../core/math/vec3.js';\nimport { Asset } from '../../asset/asset.js';\nimport { SoundInstance } from '../../../platform/sound/instance.js';\nimport { SoundInstance3d } from '../../../platform/sound/instance3d.js';\n\nconst instanceOptions = {\n\tvolume: 0,\n\tpitch: 0,\n\tloop: false,\n\tstartTime: 0,\n\tduration: 0,\n\tposition: new Vec3(),\n\tmaxDistance: 0,\n\trefDistance: 0,\n\trollOffFactor: 0,\n\tdistanceModel: 0,\n\tonPlay: null,\n\tonPause: null,\n\tonResume: null,\n\tonStop: null,\n\tonEnd: null\n};\nclass SoundSlot extends EventHandler {\n\tconstructor(component, name = 'Untitled', options = {}) {\n\t\tsuper();\n\t\tthis.name = void 0;\n\t\tthis.instances = [];\n\t\tthis._component = component;\n\t\tthis._assets = component.system.app.assets;\n\t\tthis._manager = component.system.manager;\n\t\tthis.name = name;\n\t\tthis._volume = options.volume !== undefined ? math.clamp(Number(options.volume) || 0, 0, 1) : 1;\n\t\tthis._pitch = options.pitch !== undefined ? Math.max(0.01, Number(options.pitch) || 0) : 1;\n\t\tthis._loop = !!(options.loop !== undefined ? options.loop : false);\n\t\tthis._duration = options.duration > 0 ? options.duration : null;\n\t\tthis._startTime = Math.max(0, Number(options.startTime) || 0);\n\t\tthis._overlap = !!options.overlap;\n\t\tthis._autoPlay = !!options.autoPlay;\n\t\tthis._firstNode = null;\n\t\tthis._lastNode = null;\n\t\tthis._asset = options.asset;\n\t\tif (this._asset instanceof Asset) {\n\t\t\tthis._asset = this._asset.id;\n\t\t}\n\t\tthis._onInstancePlayHandler = this._onInstancePlay.bind(this);\n\t\tthis._onInstancePauseHandler = this._onInstancePause.bind(this);\n\t\tthis._onInstanceResumeHandler = this._onInstanceResume.bind(this);\n\t\tthis._onInstanceStopHandler = this._onInstanceStop.bind(this);\n\t\tthis._onInstanceEndHandler = this._onInstanceEnd.bind(this);\n\t}\n\tplay() {\n\t\tif (!this.overlap) {\n\t\t\tthis.stop();\n\t\t}\n\t\tif (!this.isLoaded && !this._hasAsset()) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst instance = this._createInstance();\n\t\tthis.instances.push(instance);\n\t\tif (!this.isLoaded) {\n\t\t\tconst onLoad = function onLoad(sound) {\n\t\t\t\tconst playWhenLoaded = instance._playWhenLoaded;\n\t\t\t\tinstance.sound = sound;\n\t\t\t\tif (playWhenLoaded) {\n\t\t\t\t\tinstance.play();\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.off('load', onLoad);\n\t\t\tthis.once('load', onLoad);\n\t\t\tthis.load();\n\t\t} else {\n\t\t\tinstance.play();\n\t\t}\n\t\treturn instance;\n\t}\n\tpause() {\n\t\tlet paused = false;\n\t\tconst instances = this.instances;\n\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\tif (instances[i].pause()) {\n\t\t\t\tpaused = true;\n\t\t\t}\n\t\t}\n\t\treturn paused;\n\t}\n\tresume() {\n\t\tlet resumed = false;\n\t\tconst instances = this.instances;\n\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\tif (instances[i].resume()) resumed = true;\n\t\t}\n\t\treturn resumed;\n\t}\n\tstop() {\n\t\tlet stopped = false;\n\t\tconst instances = this.instances;\n\t\tlet i = instances.length;\n\t\twhile (i--) {\n\t\t\tinstances[i].stop();\n\t\t\tstopped = true;\n\t\t}\n\t\tinstances.length = 0;\n\t\treturn stopped;\n\t}\n\tload() {\n\t\tif (!this._hasAsset()) return;\n\t\tconst asset = this._assets.get(this._asset);\n\t\tif (!asset) {\n\t\t\tthis._assets.off('add:' + this._asset, this._onAssetAdd, this);\n\t\t\tthis._assets.once('add:' + this._asset, this._onAssetAdd, this);\n\t\t\treturn;\n\t\t}\n\t\tasset.off('remove', this._onAssetRemoved, this);\n\t\tasset.on('remove', this._onAssetRemoved, this);\n\t\tif (!asset.resource) {\n\t\t\tasset.off('load', this._onAssetLoad, this);\n\t\t\tasset.once('load', this._onAssetLoad, this);\n\t\t\tthis._assets.load(asset);\n\t\t\treturn;\n\t\t}\n\t\tthis.fire('load', asset.resource);\n\t}\n\tsetExternalNodes(firstNode, lastNode) {\n\t\tif (!firstNode) {\n\t\t\tconsole.error('The firstNode must have a valid AudioNode');\n\t\t\treturn;\n\t\t}\n\t\tif (!lastNode) {\n\t\t\tlastNode = firstNode;\n\t\t}\n\t\tthis._firstNode = firstNode;\n\t\tthis._lastNode = lastNode;\n\t\tif (!this._overlap) {\n\t\t\tconst instances = this.instances;\n\t\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\t\tinstances[i].setExternalNodes(firstNode, lastNode);\n\t\t\t}\n\t\t}\n\t}\n\tclearExternalNodes() {\n\t\tthis._firstNode = null;\n\t\tthis._lastNode = null;\n\t\tif (!this._overlap) {\n\t\t\tconst instances = this.instances;\n\t\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\t\tinstances[i].clearExternalNodes();\n\t\t\t}\n\t\t}\n\t}\n\tgetExternalNodes() {\n\t\treturn [this._firstNode, this._lastNode];\n\t}\n\t_hasAsset() {\n\t\treturn this._asset != null;\n\t}\n\t_createInstance() {\n\t\tlet instance = null;\n\t\tconst component = this._component;\n\t\tlet sound = null;\n\t\tif (this._hasAsset()) {\n\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\tif (asset) {\n\t\t\t\tsound = asset.resource;\n\t\t\t}\n\t\t}\n\t\tconst data = instanceOptions;\n\t\tdata.volume = this._volume * component.volume;\n\t\tdata.pitch = this._pitch * component.pitch;\n\t\tdata.loop = this._loop;\n\t\tdata.startTime = this._startTime;\n\t\tdata.duration = this._duration;\n\t\tdata.onPlay = this._onInstancePlayHandler;\n\t\tdata.onPause = this._onInstancePauseHandler;\n\t\tdata.onResume = this._onInstanceResumeHandler;\n\t\tdata.onStop = this._onInstanceStopHandler;\n\t\tdata.onEnd = this._onInstanceEndHandler;\n\t\tif (component.positional) {\n\t\t\tdata.position.copy(component.entity.getPosition());\n\t\t\tdata.maxDistance = component.maxDistance;\n\t\t\tdata.refDistance = component.refDistance;\n\t\t\tdata.rollOffFactor = component.rollOffFactor;\n\t\t\tdata.distanceModel = component.distanceModel;\n\t\t\tinstance = new SoundInstance3d(this._manager, sound, data);\n\t\t} else {\n\t\t\tinstance = new SoundInstance(this._manager, sound, data);\n\t\t}\n\t\tif (this._firstNode) {\n\t\t\tinstance.setExternalNodes(this._firstNode, this._lastNode);\n\t\t}\n\t\treturn instance;\n\t}\n\t_onInstancePlay(instance) {\n\t\tthis.fire('play', instance);\n\t\tthis._component.fire('play', this, instance);\n\t}\n\t_onInstancePause(instance) {\n\t\tthis.fire('pause', instance);\n\t\tthis._component.fire('pause', this, instance);\n\t}\n\t_onInstanceResume(instance) {\n\t\tthis.fire('resume', instance);\n\t\tthis._component.fire('resume', this, instance);\n\t}\n\t_onInstanceStop(instance) {\n\t\tconst idx = this.instances.indexOf(instance);\n\t\tif (idx !== -1) {\n\t\t\tthis.instances.splice(idx, 1);\n\t\t}\n\t\tthis.fire('stop', instance);\n\t\tthis._component.fire('stop', this, instance);\n\t}\n\t_onInstanceEnd(instance) {\n\t\tconst idx = this.instances.indexOf(instance);\n\t\tif (idx !== -1) {\n\t\t\tthis.instances.splice(idx, 1);\n\t\t}\n\t\tthis.fire('end', instance);\n\t\tthis._component.fire('end', this, instance);\n\t}\n\t_onAssetAdd(asset) {\n\t\tthis.load();\n\t}\n\t_onAssetLoad(asset) {\n\t\tthis.load();\n\t}\n\t_onAssetRemoved(asset) {\n\t\tasset.off('remove', this._onAssetRemoved, this);\n\t\tthis._assets.off('add:' + asset.id, this._onAssetAdd, this);\n\t\tthis.stop();\n\t}\n\tupdatePosition(position) {\n\t\tconst instances = this.instances;\n\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\tinstances[i].position = position;\n\t\t}\n\t}\n\tset asset(value) {\n\t\tconst old = this._asset;\n\t\tif (old) {\n\t\t\tthis._assets.off('add:' + old, this._onAssetAdd, this);\n\t\t\tconst oldAsset = this._assets.get(old);\n\t\t\tif (oldAsset) {\n\t\t\t\toldAsset.off('remove', this._onAssetRemoved, this);\n\t\t\t}\n\t\t}\n\t\tthis._asset = value;\n\t\tif (this._asset instanceof Asset) {\n\t\t\tthis._asset = this._asset.id;\n\t\t}\n\t\tif (this._hasAsset() && this._component.enabled && this._component.entity.enabled) {\n\t\t\tthis.load();\n\t\t}\n\t}\n\tget asset() {\n\t\treturn this._asset;\n\t}\n\tset autoPlay(value) {\n\t\tthis._autoPlay = !!value;\n\t}\n\tget autoPlay() {\n\t\treturn this._autoPlay;\n\t}\n\tset duration(value) {\n\t\tthis._duration = Math.max(0, Number(value) || 0) || null;\n\t\tif (!this._overlap) {\n\t\t\tconst instances = this.instances;\n\t\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\t\tinstances[i].duration = this._duration;\n\t\t\t}\n\t\t}\n\t}\n\tget duration() {\n\t\tlet assetDuration = 0;\n\t\tif (this._hasAsset()) {\n\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\tassetDuration = asset != null && asset.resource ? asset.resource.duration : 0;\n\t\t}\n\t\tif (this._duration != null) {\n\t\t\treturn this._duration % (assetDuration || 1);\n\t\t}\n\t\treturn assetDuration;\n\t}\n\tget isLoaded() {\n\t\tif (this._hasAsset()) {\n\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\tif (asset) {\n\t\t\t\treturn !!asset.resource;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tget isPaused() {\n\t\tconst instances = this.instances;\n\t\tconst len = instances.length;\n\t\tif (len === 0) return false;\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tif (!instances[i].isPaused) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tget isPlaying() {\n\t\tconst instances = this.instances;\n\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\tif (instances[i].isPlaying) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tget isStopped() {\n\t\tconst instances = this.instances;\n\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\tif (!instances[i].isStopped) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tset loop(value) {\n\t\tthis._loop = !!value;\n\t\tconst instances = this.instances;\n\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\tinstances[i].loop = this._loop;\n\t\t}\n\t}\n\tget loop() {\n\t\treturn this._loop;\n\t}\n\tset overlap(value) {\n\t\tthis._overlap = !!value;\n\t}\n\tget overlap() {\n\t\treturn this._overlap;\n\t}\n\tset pitch(value) {\n\t\tthis._pitch = Math.max(Number(value) || 0, 0.01);\n\t\tif (!this._overlap) {\n\t\t\tconst instances = this.instances;\n\t\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\t\tinstances[i].pitch = this.pitch * this._component.pitch;\n\t\t\t}\n\t\t}\n\t}\n\tget pitch() {\n\t\treturn this._pitch;\n\t}\n\tset startTime(value) {\n\t\tthis._startTime = Math.max(0, Number(value) || 0);\n\t\tif (!this._overlap) {\n\t\t\tconst instances = this.instances;\n\t\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\t\tinstances[i].startTime = this._startTime;\n\t\t\t}\n\t\t}\n\t}\n\tget startTime() {\n\t\treturn this._startTime;\n\t}\n\tset volume(value) {\n\t\tthis._volume = math.clamp(Number(value) || 0, 0, 1);\n\t\tif (!this._overlap) {\n\t\t\tconst instances = this.instances;\n\t\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\t\tinstances[i].volume = this._volume * this._component.volume;\n\t\t\t}\n\t\t}\n\t}\n\tget volume() {\n\t\treturn this._volume;\n\t}\n}\nSoundSlot.EVENT_PLAY = 'play';\nSoundSlot.EVENT_PAUSE = 'pause';\nSoundSlot.EVENT_RESUME = 'resume';\nSoundSlot.EVENT_STOP = 'stop';\nSoundSlot.EVENT_LOAD = 'load';\n\nexport { SoundSlot };\n", "import { DISTANCE_LINEAR } from '../../../platform/audio/constants.js';\nimport { Component } from '../component.js';\nimport { SoundSlot } from './slot.js';\n\nclass SoundComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t\tthis._volume = 1;\n\t\tthis._pitch = 1;\n\t\tthis._positional = true;\n\t\tthis._refDistance = 1;\n\t\tthis._maxDistance = 10000;\n\t\tthis._rollOffFactor = 1;\n\t\tthis._distanceModel = DISTANCE_LINEAR;\n\t\tthis._slots = {};\n\t\tthis._playingBeforeDisable = {};\n\t}\n\t_updateSoundInstances(property, value, isFactor) {\n\t\tconst slots = this._slots;\n\t\tfor (const key in slots) {\n\t\t\tconst slot = slots[key];\n\t\t\tif (!slot.overlap) {\n\t\t\t\tconst instances = slot.instances;\n\t\t\t\tfor (let i = 0, len = instances.length; i < len; i++) {\n\t\t\t\t\tinstances[i][property] = isFactor ? slot[property] * value : value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tset distanceModel(value) {\n\t\tthis._distanceModel = value;\n\t\tthis._updateSoundInstances('distanceModel', value, false);\n\t}\n\tget distanceModel() {\n\t\treturn this._distanceModel;\n\t}\n\tset maxDistance(value) {\n\t\tthis._maxDistance = value;\n\t\tthis._updateSoundInstances('maxDistance', value, false);\n\t}\n\tget maxDistance() {\n\t\treturn this._maxDistance;\n\t}\n\tset refDistance(value) {\n\t\tthis._refDistance = value;\n\t\tthis._updateSoundInstances('refDistance', value, false);\n\t}\n\tget refDistance() {\n\t\treturn this._refDistance;\n\t}\n\tset rollOffFactor(value) {\n\t\tthis._rollOffFactor = value;\n\t\tthis._updateSoundInstances('rollOffFactor', value, false);\n\t}\n\tget rollOffFactor() {\n\t\treturn this._rollOffFactor;\n\t}\n\tset pitch(value) {\n\t\tthis._pitch = value;\n\t\tthis._updateSoundInstances('pitch', value, true);\n\t}\n\tget pitch() {\n\t\treturn this._pitch;\n\t}\n\tset volume(value) {\n\t\tthis._volume = value;\n\t\tthis._updateSoundInstances('volume', value, true);\n\t}\n\tget volume() {\n\t\treturn this._volume;\n\t}\n\tset positional(newValue) {\n\t\tthis._positional = newValue;\n\t\tconst slots = this._slots;\n\t\tfor (const key in slots) {\n\t\t\tconst slot = slots[key];\n\t\t\tif (!slot.overlap) {\n\t\t\t\tconst instances = slot.instances;\n\t\t\t\tconst oldLength = instances.length;\n\t\t\t\tfor (let i = oldLength - 1; i >= 0; i--) {\n\t\t\t\t\tconst isPlaying = instances[i].isPlaying || instances[i].isSuspended;\n\t\t\t\t\tconst currentTime = instances[i].currentTime;\n\t\t\t\t\tif (isPlaying) instances[i].stop();\n\t\t\t\t\tconst instance = slot._createInstance();\n\t\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\tinstance.play();\n\t\t\t\t\t\tinstance.currentTime = currentTime;\n\t\t\t\t\t}\n\t\t\t\t\tinstances.push(instance);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tget positional() {\n\t\treturn this._positional;\n\t}\n\tset slots(newValue) {\n\t\tconst oldValue = this._slots;\n\t\tif (oldValue) {\n\t\t\tfor (const key in oldValue) {\n\t\t\t\toldValue[key].stop();\n\t\t\t}\n\t\t}\n\t\tconst slots = {};\n\t\tfor (const key in newValue) {\n\t\t\tif (!(newValue[key] instanceof SoundSlot)) {\n\t\t\t\tif (newValue[key].name) {\n\t\t\t\t\tslots[newValue[key].name] = new SoundSlot(this, newValue[key].name, newValue[key]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tslots[newValue[key].name] = newValue[key];\n\t\t\t}\n\t\t}\n\t\tthis._slots = slots;\n\t\tif (this.enabled && this.entity.enabled) this.onEnable();\n\t}\n\tget slots() {\n\t\treturn this._slots;\n\t}\n\tonEnable() {\n\t\tif (this.system._inTools) {\n\t\t\treturn;\n\t\t}\n\t\tconst slots = this._slots;\n\t\tconst playingBeforeDisable = this._playingBeforeDisable;\n\t\tfor (const key in slots) {\n\t\t\tconst slot = slots[key];\n\t\t\tif (slot.autoPlay && slot.isStopped) {\n\t\t\t\tslot.play();\n\t\t\t} else if (playingBeforeDisable[key]) {\n\t\t\t\tslot.resume();\n\t\t\t} else if (!slot.isLoaded) {\n\t\t\t\tslot.load();\n\t\t\t}\n\t\t}\n\t}\n\tonDisable() {\n\t\tconst slots = this._slots;\n\t\tconst playingBeforeDisable = {};\n\t\tfor (const key in slots) {\n\t\t\tif (!slots[key].overlap) {\n\t\t\t\tif (slots[key].isPlaying) {\n\t\t\t\t\tslots[key].pause();\n\t\t\t\t\tplayingBeforeDisable[key] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._playingBeforeDisable = playingBeforeDisable;\n\t}\n\tonRemove() {\n\t\tthis.off();\n\t}\n\taddSlot(name, options) {\n\t\tconst slots = this._slots;\n\t\tif (slots[name]) {\n\t\t\treturn null;\n\t\t}\n\t\tconst slot = new SoundSlot(this, name, options);\n\t\tslots[name] = slot;\n\t\tif (slot.autoPlay && this.enabled && this.entity.enabled) {\n\t\t\tslot.play();\n\t\t}\n\t\treturn slot;\n\t}\n\tremoveSlot(name) {\n\t\tconst slots = this._slots;\n\t\tif (slots[name]) {\n\t\t\tslots[name].stop();\n\t\t\tdelete slots[name];\n\t\t}\n\t}\n\tslot(name) {\n\t\treturn this._slots[name];\n\t}\n\t_getSlotProperty(name, property) {\n\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst slot = this._slots[name];\n\t\tif (!slot) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn slot[property];\n\t}\n\tisPlaying(name) {\n\t\treturn this._getSlotProperty(name, 'isPlaying') || false;\n\t}\n\tisLoaded(name) {\n\t\treturn this._getSlotProperty(name, 'isLoaded') || false;\n\t}\n\tisPaused(name) {\n\t\treturn this._getSlotProperty(name, 'isPaused') || false;\n\t}\n\tisStopped(name) {\n\t\treturn this._getSlotProperty(name, 'isStopped') || false;\n\t}\n\tplay(name) {\n\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\treturn null;\n\t\t}\n\t\tconst slot = this._slots[name];\n\t\tif (!slot) {\n\t\t\treturn null;\n\t\t}\n\t\treturn slot.play();\n\t}\n\tpause(name) {\n\t\tconst slots = this._slots;\n\t\tif (name) {\n\t\t\tconst slot = slots[name];\n\t\t\tif (!slot) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tslot.pause();\n\t\t} else {\n\t\t\tfor (const key in slots) {\n\t\t\t\tslots[key].pause();\n\t\t\t}\n\t\t}\n\t}\n\tresume(name) {\n\t\tconst slots = this._slots;\n\t\tif (name) {\n\t\t\tconst slot = slots[name];\n\t\t\tif (!slot) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (slot.isPaused) {\n\t\t\t\tslot.resume();\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const key in slots) {\n\t\t\t\tslots[key].resume();\n\t\t\t}\n\t\t}\n\t}\n\tstop(name) {\n\t\tconst slots = this._slots;\n\t\tif (name) {\n\t\t\tconst slot = slots[name];\n\t\t\tif (!slot) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tslot.stop();\n\t\t} else {\n\t\t\tfor (const key in slots) {\n\t\t\t\tslots[key].stop();\n\t\t\t}\n\t\t}\n\t}\n}\nSoundComponent.EVENT_PLAY = 'play';\nSoundComponent.EVENT_PAUSE = 'pause';\nSoundComponent.EVENT_RESUME = 'resume';\nSoundComponent.EVENT_STOP = 'stop';\nSoundComponent.EVENT_END = 'end';\n\nexport { SoundComponent };\n", "class SoundComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t}\n}\n\nexport { SoundComponentData };\n", "import { hasAudioContext } from '../../../platform/audio/capabilities.js';\nimport { Component } from '../component.js';\nimport { ComponentSystem } from '../system.js';\nimport { SoundComponent } from './component.js';\nimport { SoundComponentData } from './data.js';\n\nconst _schema = ['enabled'];\nclass SoundComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.id = 'sound';\n\t\tthis.ComponentType = SoundComponent;\n\t\tthis.DataType = SoundComponentData;\n\t\tthis.schema = _schema;\n\t\tthis.manager = app.soundManager;\n\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t}\n\tset volume(volume) {\n\t\tthis.manager.volume = volume;\n\t}\n\tget volume() {\n\t\treturn this.manager.volume;\n\t}\n\tget context() {\n\t\tif (!hasAudioContext()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.manager.context;\n\t}\n\tinitializeComponentData(component, data, properties) {\n\t\tproperties = ['volume', 'pitch', 'positional', 'refDistance', 'maxDistance', 'rollOffFactor', 'distanceModel', 'slots'];\n\t\tfor (let i = 0; i < properties.length; i++) {\n\t\t\tif (data.hasOwnProperty(properties[i])) {\n\t\t\t\tcomponent[properties[i]] = data[properties[i]];\n\t\t\t}\n\t\t}\n\t\tsuper.initializeComponentData(component, data, ['enabled']);\n\t}\n\tcloneComponent(entity, clone) {\n\t\tconst srcComponent = entity.sound;\n\t\tconst srcSlots = srcComponent.slots;\n\t\tconst slots = {};\n\t\tfor (const key in srcSlots) {\n\t\t\tconst srcSlot = srcSlots[key];\n\t\t\tslots[key] = {\n\t\t\t\tname: srcSlot.name,\n\t\t\t\tvolume: srcSlot.volume,\n\t\t\t\tpitch: srcSlot.pitch,\n\t\t\t\tloop: srcSlot.loop,\n\t\t\t\tduration: srcSlot.duration,\n\t\t\t\tstartTime: srcSlot.startTime,\n\t\t\t\toverlap: srcSlot.overlap,\n\t\t\t\tautoPlay: srcSlot.autoPlay,\n\t\t\t\tasset: srcSlot.asset\n\t\t\t};\n\t\t}\n\t\tconst cloneData = {\n\t\t\tdistanceModel: srcComponent.distanceModel,\n\t\t\tenabled: srcComponent.enabled,\n\t\t\tmaxDistance: srcComponent.maxDistance,\n\t\t\tpitch: srcComponent.pitch,\n\t\t\tpositional: srcComponent.positional,\n\t\t\trefDistance: srcComponent.refDistance,\n\t\t\trollOffFactor: srcComponent.rollOffFactor,\n\t\t\tslots: slots,\n\t\t\tvolume: srcComponent.volume\n\t\t};\n\t\treturn this.addComponent(clone, cloneData);\n\t}\n\tonUpdate(dt) {\n\t\tconst store = this.store;\n\t\tfor (const id in store) {\n\t\t\tif (store.hasOwnProperty(id)) {\n\t\t\t\tconst item = store[id];\n\t\t\t\tconst entity = item.entity;\n\t\t\t\tif (entity.enabled) {\n\t\t\t\t\tconst component = entity.sound;\n\t\t\t\t\tif (component.enabled && component.positional) {\n\t\t\t\t\t\tconst position = entity.getPosition();\n\t\t\t\t\t\tconst slots = component.slots;\n\t\t\t\t\t\tfor (const key in slots) {\n\t\t\t\t\t\t\tslots[key].updatePosition(position);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tonBeforeRemove(entity, component) {\n\t\tconst slots = component.slots;\n\t\tfor (const key in slots) {\n\t\t\tif (!slots[key].overlap) {\n\t\t\t\tslots[key].stop();\n\t\t\t}\n\t\t}\n\t\tcomponent.onRemove();\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t}\n}\nComponent._buildAccessors(SoundComponent.prototype, _schema);\n\nexport { SoundComponentSystem };\n", "import { FILTER_NEAREST, ADDRESS_CLAMP_TO_EDGE, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA8 } from '../../../platform/graphics/constants.js';\nimport { RenderTarget } from '../../../platform/graphics/render-target.js';\nimport { Texture } from '../../../platform/graphics/texture.js';\nimport { LAYERID_DEPTH } from '../../../scene/constants.js';\n\nclass PostEffectEntry {\n\tconstructor(effect, inputTarget) {\n\t\tthis.effect = effect;\n\t\tthis.inputTarget = inputTarget;\n\t\tthis.outputTarget = null;\n\t\tthis.name = effect.constructor.name;\n\t}\n}\nclass PostEffectQueue {\n\tconstructor(app, camera) {\n\t\tthis.app = app;\n\t\tthis.camera = camera;\n\t\tthis.destinationRenderTarget = null;\n\t\tthis.effects = [];\n\t\tthis.enabled = false;\n\t\tthis.depthTarget = null;\n\t\tcamera.on('set:rect', this.onCameraRectChanged, this);\n\t}\n\t_allocateColorBuffer(format, name) {\n\t\tvar _renderTarget$width, _renderTarget$height;\n\t\tconst rect = this.camera.rect;\n\t\tconst renderTarget = this.destinationRenderTarget;\n\t\tconst device = this.app.graphicsDevice;\n\t\tconst width = Math.floor(rect.z * ((_renderTarget$width = renderTarget == null ? void 0 : renderTarget.width) != null ? _renderTarget$width : device.width));\n\t\tconst height = Math.floor(rect.w * ((_renderTarget$height = renderTarget == null ? void 0 : renderTarget.height) != null ? _renderTarget$height : device.height));\n\t\tconst colorBuffer = new Texture(device, {\n\t\t\tname: name,\n\t\t\tformat: format,\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tmipmaps: false,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t});\n\t\treturn colorBuffer;\n\t}\n\t_createOffscreenTarget(useDepth, hdr) {\n\t\tconst device = this.app.graphicsDevice;\n\t\tconst format = hdr && device.getRenderableHdrFormat([PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F], true) || PIXELFORMAT_RGBA8;\n\t\tconst name = this.camera.entity.name + '-posteffect-' + this.effects.length;\n\t\tconst colorBuffer = this._allocateColorBuffer(format, name);\n\t\treturn new RenderTarget({\n\t\t\tcolorBuffer: colorBuffer,\n\t\t\tdepth: useDepth,\n\t\t\tstencil: useDepth && this.app.graphicsDevice.supportsStencil,\n\t\t\tsamples: useDepth ? device.samples : 1\n\t\t});\n\t}\n\t_resizeOffscreenTarget(rt) {\n\t\tconst format = rt.colorBuffer.format;\n\t\tconst name = rt.colorBuffer.name;\n\t\trt.destroyFrameBuffers();\n\t\trt.destroyTextureBuffers();\n\t\trt._colorBuffer = this._allocateColorBuffer(format, name);\n\t\trt._colorBuffers = [rt._colorBuffer];\n\t}\n\t_destroyOffscreenTarget(rt) {\n\t\trt.destroyTextureBuffers();\n\t\trt.destroy();\n\t}\n\taddEffect(effect) {\n\t\tconst effects = this.effects;\n\t\tconst isFirstEffect = effects.length === 0;\n\t\tconst inputTarget = this._createOffscreenTarget(isFirstEffect, effect.hdr);\n\t\tconst newEntry = new PostEffectEntry(effect, inputTarget);\n\t\teffects.push(newEntry);\n\t\tthis._sourceTarget = newEntry.inputTarget;\n\t\tif (effects.length > 1) {\n\t\t\teffects[effects.length - 2].outputTarget = newEntry.inputTarget;\n\t\t}\n\t\tthis._newPostEffect = effect;\n\t\tif (effect.needsDepthBuffer) {\n\t\t\tthis._requestDepthMap();\n\t\t}\n\t\tthis.enable();\n\t\tthis._newPostEffect = undefined;\n\t}\n\tremoveEffect(effect) {\n\t\tlet index = -1;\n\t\tfor (let i = 0, len = this.effects.length; i < len; i++) {\n\t\t\tif (this.effects[i].effect === effect) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (index >= 0) {\n\t\t\tif (index > 0) {\n\t\t\t\tthis.effects[index - 1].outputTarget = index + 1 < this.effects.length ? this.effects[index + 1].inputTarget : null;\n\t\t\t} else {\n\t\t\t\tif (this.effects.length > 1) {\n\t\t\t\t\tif (!this.effects[1].inputTarget._depth) {\n\t\t\t\t\t\tthis._destroyOffscreenTarget(this.effects[1].inputTarget);\n\t\t\t\t\t\tthis.effects[1].inputTarget = this._createOffscreenTarget(true, this.effects[1].hdr);\n\t\t\t\t\t\tthis._sourceTarget = this.effects[1].inputTarget;\n\t\t\t\t\t}\n\t\t\t\t\tthis.camera.renderTarget = this.effects[1].inputTarget;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._destroyOffscreenTarget(this.effects[index].inputTarget);\n\t\t\tthis.effects.splice(index, 1);\n\t\t}\n\t\tif (this.enabled) {\n\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\tthis._releaseDepthMap();\n\t\t\t}\n\t\t}\n\t\tif (this.effects.length === 0) {\n\t\t\tthis.disable();\n\t\t}\n\t}\n\t_requestDepthMaps() {\n\t\tfor (let i = 0, len = this.effects.length; i < len; i++) {\n\t\t\tconst effect = this.effects[i].effect;\n\t\t\tif (this._newPostEffect === effect) continue;\n\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\tthis._requestDepthMap();\n\t\t\t}\n\t\t}\n\t}\n\t_releaseDepthMaps() {\n\t\tfor (let i = 0, len = this.effects.length; i < len; i++) {\n\t\t\tconst effect = this.effects[i].effect;\n\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\tthis._releaseDepthMap();\n\t\t\t}\n\t\t}\n\t}\n\t_requestDepthMap() {\n\t\tconst depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\tif (depthLayer) {\n\t\t\tdepthLayer.incrementCounter();\n\t\t\tthis.camera.requestSceneDepthMap(true);\n\t\t}\n\t}\n\t_releaseDepthMap() {\n\t\tconst depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\tif (depthLayer) {\n\t\t\tdepthLayer.decrementCounter();\n\t\t\tthis.camera.requestSceneDepthMap(false);\n\t\t}\n\t}\n\tdestroy() {\n\t\tfor (let i = 0, len = this.effects.length; i < len; i++) {\n\t\t\tthis.effects[i].inputTarget.destroy();\n\t\t}\n\t\tthis.effects.length = 0;\n\t\tthis.disable();\n\t}\n\tenable() {\n\t\tif (!this.enabled && this.effects.length) {\n\t\t\tthis.enabled = true;\n\t\t\tthis._requestDepthMaps();\n\t\t\tthis.app.graphicsDevice.on('resizecanvas', this._onCanvasResized, this);\n\t\t\tthis.destinationRenderTarget = this.camera.renderTarget;\n\t\t\tthis.camera.renderTarget = this.effects[0].inputTarget;\n\t\t\tthis.camera.onPostprocessing = () => {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\tlet rect = null;\n\t\t\t\t\tconst len = this.effects.length;\n\t\t\t\t\tif (len) {\n\t\t\t\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\t\t\t\tconst fx = this.effects[i];\n\t\t\t\t\t\t\tlet destTarget = fx.outputTarget;\n\t\t\t\t\t\t\tif (i === len - 1) {\n\t\t\t\t\t\t\t\trect = this.camera.rect;\n\t\t\t\t\t\t\t\tif (this.destinationRenderTarget) {\n\t\t\t\t\t\t\t\t\tdestTarget = this.destinationRenderTarget;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfx.effect.render(fx.inputTarget, destTarget, rect);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\tdisable() {\n\t\tif (this.enabled) {\n\t\t\tthis.enabled = false;\n\t\t\tthis.app.graphicsDevice.off('resizecanvas', this._onCanvasResized, this);\n\t\t\tthis._releaseDepthMaps();\n\t\t\tthis._destroyOffscreenTarget(this._sourceTarget);\n\t\t\tthis.camera.renderTarget = null;\n\t\t\tthis.camera.onPostprocessing = null;\n\t\t}\n\t}\n\t_onCanvasResized(width, height) {\n\t\tvar _renderTarget$width2, _renderTarget$height2;\n\t\tconst rect = this.camera.rect;\n\t\tconst renderTarget = this.destinationRenderTarget;\n\t\twidth = (_renderTarget$width2 = renderTarget == null ? void 0 : renderTarget.width) != null ? _renderTarget$width2 : width;\n\t\theight = (_renderTarget$height2 = renderTarget == null ? void 0 : renderTarget.height) != null ? _renderTarget$height2 : height;\n\t\tthis.camera.camera.aspectRatio = width * rect.z / (height * rect.w);\n\t\tthis.resizeRenderTargets();\n\t}\n\tresizeRenderTargets() {\n\t\tvar _renderTarget$width3, _renderTarget$height3;\n\t\tconst device = this.app.graphicsDevice;\n\t\tconst renderTarget = this.destinationRenderTarget;\n\t\tconst width = (_renderTarget$width3 = renderTarget == null ? void 0 : renderTarget.width) != null ? _renderTarget$width3 : device.width;\n\t\tconst height = (_renderTarget$height3 = renderTarget == null ? void 0 : renderTarget.height) != null ? _renderTarget$height3 : device.height;\n\t\tconst rect = this.camera.rect;\n\t\tconst desiredWidth = Math.floor(rect.z * width);\n\t\tconst desiredHeight = Math.floor(rect.w * height);\n\t\tconst effects = this.effects;\n\t\tfor (let i = 0, len = effects.length; i < len; i++) {\n\t\t\tconst fx = effects[i];\n\t\t\tif (fx.inputTarget.width !== desiredWidth || fx.inputTarget.height !== desiredHeight) {\n\t\t\t\tthis._resizeOffscreenTarget(fx.inputTarget);\n\t\t\t}\n\t\t}\n\t}\n\tonCameraRectChanged(name, oldValue, newValue) {\n\t\tif (this.enabled) {\n\t\t\tthis.resizeRenderTargets();\n\t\t}\n\t}\n}\n\nexport { PostEffectQueue };\n", "import { LAYERID_UI, LAYERID_DEPTH, ASPECT_AUTO } from '../../../scene/constants.js';\nimport { Camera } from '../../../scene/camera.js';\nimport { ShaderPass } from '../../../scene/shader-pass.js';\nimport { Component } from '../component.js';\nimport { PostEffectQueue } from './post-effect-queue.js';\n\nclass CameraComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t\tthis.onPostprocessing = null;\n\t\tthis.onPreRender = null;\n\t\tthis.onPostRender = null;\n\t\tthis._renderSceneDepthMap = 0;\n\t\tthis._renderSceneColorMap = 0;\n\t\tthis._sceneDepthMapRequested = false;\n\t\tthis._sceneColorMapRequested = false;\n\t\tthis._priority = 0;\n\t\tthis._disablePostEffectsLayer = LAYERID_UI;\n\t\tthis._camera = new Camera();\n\t\tthis._camera.node = entity;\n\t\tthis._postEffects = new PostEffectQueue(system.app, this);\n\t}\n\tsetShaderPass(name) {\n\t\tconst shaderPass = ShaderPass.get(this.system.app.graphicsDevice);\n\t\tconst shaderPassInfo = name ? shaderPass.allocate(name, {\n\t\t\tisForward: true\n\t\t}) : null;\n\t\tthis._camera.shaderPassInfo = shaderPassInfo;\n\t\treturn shaderPassInfo.index;\n\t}\n\tgetShaderPass() {\n\t\tvar _this$_camera$shaderP;\n\t\treturn (_this$_camera$shaderP = this._camera.shaderPassInfo) == null ? void 0 : _this$_camera$shaderP.name;\n\t}\n\tset renderPasses(passes) {\n\t\tthis._camera.renderPasses = passes;\n\t}\n\tget renderPasses() {\n\t\treturn this._camera.renderPasses;\n\t}\n\tset aperture(value) {\n\t\tthis._camera.aperture = value;\n\t}\n\tget aperture() {\n\t\treturn this._camera.aperture;\n\t}\n\tset aspectRatio(value) {\n\t\tthis._camera.aspectRatio = value;\n\t}\n\tget aspectRatio() {\n\t\treturn this._camera.aspectRatio;\n\t}\n\tset aspectRatioMode(value) {\n\t\tthis._camera.aspectRatioMode = value;\n\t}\n\tget aspectRatioMode() {\n\t\treturn this._camera.aspectRatioMode;\n\t}\n\tset calculateProjection(value) {\n\t\tthis._camera.calculateProjection = value;\n\t}\n\tget calculateProjection() {\n\t\treturn this._camera.calculateProjection;\n\t}\n\tset calculateTransform(value) {\n\t\tthis._camera.calculateTransform = value;\n\t}\n\tget calculateTransform() {\n\t\treturn this._camera.calculateTransform;\n\t}\n\tget camera() {\n\t\treturn this._camera;\n\t}\n\tset clearColor(value) {\n\t\tthis._camera.clearColor = value;\n\t}\n\tget clearColor() {\n\t\treturn this._camera.clearColor;\n\t}\n\tset clearColorBuffer(value) {\n\t\tthis._camera.clearColorBuffer = value;\n\t\tthis.dirtyLayerCompositionCameras();\n\t}\n\tget clearColorBuffer() {\n\t\treturn this._camera.clearColorBuffer;\n\t}\n\tset clearDepthBuffer(value) {\n\t\tthis._camera.clearDepthBuffer = value;\n\t\tthis.dirtyLayerCompositionCameras();\n\t}\n\tget clearDepthBuffer() {\n\t\treturn this._camera.clearDepthBuffer;\n\t}\n\tset clearStencilBuffer(value) {\n\t\tthis._camera.clearStencilBuffer = value;\n\t\tthis.dirtyLayerCompositionCameras();\n\t}\n\tget clearStencilBuffer() {\n\t\treturn this._camera.clearStencilBuffer;\n\t}\n\tset cullFaces(value) {\n\t\tthis._camera.cullFaces = value;\n\t}\n\tget cullFaces() {\n\t\treturn this._camera.cullFaces;\n\t}\n\tset disablePostEffectsLayer(layer) {\n\t\tthis._disablePostEffectsLayer = layer;\n\t\tthis.dirtyLayerCompositionCameras();\n\t}\n\tget disablePostEffectsLayer() {\n\t\treturn this._disablePostEffectsLayer;\n\t}\n\tset farClip(value) {\n\t\tthis._camera.farClip = value;\n\t}\n\tget farClip() {\n\t\treturn this._camera.farClip;\n\t}\n\tset flipFaces(value) {\n\t\tthis._camera.flipFaces = value;\n\t}\n\tget flipFaces() {\n\t\treturn this._camera.flipFaces;\n\t}\n\tset fov(value) {\n\t\tthis._camera.fov = value;\n\t}\n\tget fov() {\n\t\treturn this._camera.fov;\n\t}\n\tget frustum() {\n\t\treturn this._camera.frustum;\n\t}\n\tset frustumCulling(value) {\n\t\tthis._camera.frustumCulling = value;\n\t}\n\tget frustumCulling() {\n\t\treturn this._camera.frustumCulling;\n\t}\n\tset horizontalFov(value) {\n\t\tthis._camera.horizontalFov = value;\n\t}\n\tget horizontalFov() {\n\t\treturn this._camera.horizontalFov;\n\t}\n\tset layers(newValue) {\n\t\tconst layers = this._camera.layers;\n\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\tconst layer = this.system.app.scene.layers.getLayerById(layers[i]);\n\t\t\tif (!layer) continue;\n\t\t\tlayer.removeCamera(this);\n\t\t}\n\t\tthis._camera.layers = newValue;\n\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\tfor (let i = 0; i < newValue.length; i++) {\n\t\t\tconst layer = this.system.app.scene.layers.getLayerById(newValue[i]);\n\t\t\tif (!layer) continue;\n\t\t\tlayer.addCamera(this);\n\t\t}\n\t}\n\tget layers() {\n\t\treturn this._camera.layers;\n\t}\n\tget layersSet() {\n\t\treturn this._camera.layersSet;\n\t}\n\tset jitter(value) {\n\t\tthis._camera.jitter = value;\n\t}\n\tget jitter() {\n\t\treturn this._camera.jitter;\n\t}\n\tset nearClip(value) {\n\t\tthis._camera.nearClip = value;\n\t}\n\tget nearClip() {\n\t\treturn this._camera.nearClip;\n\t}\n\tset orthoHeight(value) {\n\t\tthis._camera.orthoHeight = value;\n\t}\n\tget orthoHeight() {\n\t\treturn this._camera.orthoHeight;\n\t}\n\tget postEffects() {\n\t\treturn this._postEffects;\n\t}\n\tget postEffectsEnabled() {\n\t\treturn this._postEffects.enabled;\n\t}\n\tset priority(newValue) {\n\t\tthis._priority = newValue;\n\t\tthis.dirtyLayerCompositionCameras();\n\t}\n\tget priority() {\n\t\treturn this._priority;\n\t}\n\tset projection(value) {\n\t\tthis._camera.projection = value;\n\t}\n\tget projection() {\n\t\treturn this._camera.projection;\n\t}\n\tget projectionMatrix() {\n\t\treturn this._camera.projectionMatrix;\n\t}\n\tset rect(value) {\n\t\tthis._camera.rect = value;\n\t\tthis.fire('set:rect', this._camera.rect);\n\t}\n\tget rect() {\n\t\treturn this._camera.rect;\n\t}\n\tset renderSceneColorMap(value) {\n\t\tif (value && !this._sceneColorMapRequested) {\n\t\t\tthis.requestSceneColorMap(true);\n\t\t\tthis._sceneColorMapRequested = true;\n\t\t} else if (this._sceneColorMapRequested) {\n\t\t\tthis.requestSceneColorMap(false);\n\t\t\tthis._sceneColorMapRequested = false;\n\t\t}\n\t}\n\tget renderSceneColorMap() {\n\t\treturn this._renderSceneColorMap > 0;\n\t}\n\tset renderSceneDepthMap(value) {\n\t\tif (value && !this._sceneDepthMapRequested) {\n\t\t\tthis.requestSceneDepthMap(true);\n\t\t\tthis._sceneDepthMapRequested = true;\n\t\t} else if (this._sceneDepthMapRequested) {\n\t\t\tthis.requestSceneDepthMap(false);\n\t\t\tthis._sceneDepthMapRequested = false;\n\t\t}\n\t}\n\tget renderSceneDepthMap() {\n\t\treturn this._renderSceneDepthMap > 0;\n\t}\n\tset renderTarget(value) {\n\t\tthis._camera.renderTarget = value;\n\t\tthis.dirtyLayerCompositionCameras();\n\t}\n\tget renderTarget() {\n\t\treturn this._camera.renderTarget;\n\t}\n\tset scissorRect(value) {\n\t\tthis._camera.scissorRect = value;\n\t}\n\tget scissorRect() {\n\t\treturn this._camera.scissorRect;\n\t}\n\tset sensitivity(value) {\n\t\tthis._camera.sensitivity = value;\n\t}\n\tget sensitivity() {\n\t\treturn this._camera.sensitivity;\n\t}\n\tset shutter(value) {\n\t\tthis._camera.shutter = value;\n\t}\n\tget shutter() {\n\t\treturn this._camera.shutter;\n\t}\n\tget viewMatrix() {\n\t\treturn this._camera.viewMatrix;\n\t}\n\t_enableDepthLayer(value) {\n\t\tconst hasDepthLayer = this.layers.find(layerId => layerId === LAYERID_DEPTH);\n\t\tif (hasDepthLayer) {\n\t\t\tconst depthLayer = this.system.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\tif (value) {\n\t\t\t\tdepthLayer == null || depthLayer.incrementCounter();\n\t\t\t} else {\n\t\t\t\tdepthLayer == null || depthLayer.decrementCounter();\n\t\t\t}\n\t\t} else if (value) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\trequestSceneColorMap(enabled) {\n\t\tthis._renderSceneColorMap += enabled ? 1 : -1;\n\t\tthis._enableDepthLayer(enabled);\n\t\tthis.camera._enableRenderPassColorGrab(this.system.app.graphicsDevice, this.renderSceneColorMap);\n\t}\n\trequestSceneDepthMap(enabled) {\n\t\tthis._renderSceneDepthMap += enabled ? 1 : -1;\n\t\tthis._enableDepthLayer(enabled);\n\t\tthis.camera._enableRenderPassDepthGrab(this.system.app.graphicsDevice, this.system.app.renderer, this.renderSceneDepthMap);\n\t}\n\tdirtyLayerCompositionCameras() {\n\t\tconst layerComp = this.system.app.scene.layers;\n\t\tlayerComp._dirty = true;\n\t}\n\tscreenToWorld(screenx, screeny, cameraz, worldCoord) {\n\t\tconst device = this.system.app.graphicsDevice;\n\t\tconst w = device.clientRect.width;\n\t\tconst h = device.clientRect.height;\n\t\treturn this._camera.screenToWorld(screenx, screeny, cameraz, w, h, worldCoord);\n\t}\n\tworldToScreen(worldCoord, screenCoord) {\n\t\tconst device = this.system.app.graphicsDevice;\n\t\tconst w = device.clientRect.width;\n\t\tconst h = device.clientRect.height;\n\t\treturn this._camera.worldToScreen(worldCoord, w, h, screenCoord);\n\t}\n\tonAppPrerender() {\n\t\tthis._camera._viewMatDirty = true;\n\t\tthis._camera._viewProjMatDirty = true;\n\t}\n\taddCameraToLayers() {\n\t\tconst layers = this.layers;\n\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\tconst layer = this.system.app.scene.layers.getLayerById(layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.addCamera(this);\n\t\t\t}\n\t\t}\n\t}\n\tremoveCameraFromLayers() {\n\t\tconst layers = this.layers;\n\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\tconst layer = this.system.app.scene.layers.getLayerById(layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.removeCamera(this);\n\t\t\t}\n\t\t}\n\t}\n\tonLayersChanged(oldComp, newComp) {\n\t\tthis.addCameraToLayers();\n\t\toldComp.off('add', this.onLayerAdded, this);\n\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t}\n\tonLayerAdded(layer) {\n\t\tconst index = this.layers.indexOf(layer.id);\n\t\tif (index < 0) return;\n\t\tlayer.addCamera(this);\n\t}\n\tonLayerRemoved(layer) {\n\t\tconst index = this.layers.indexOf(layer.id);\n\t\tif (index < 0) return;\n\t\tlayer.removeCamera(this);\n\t}\n\tonEnable() {\n\t\tconst system = this.system;\n\t\tconst scene = system.app.scene;\n\t\tconst layers = scene.layers;\n\t\tsystem.addCamera(this);\n\t\tscene.on('set:layers', this.onLayersChanged, this);\n\t\tif (layers) {\n\t\t\tlayers.on('add', this.onLayerAdded, this);\n\t\t\tlayers.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tif (this.enabled && this.entity.enabled) {\n\t\t\tthis.addCameraToLayers();\n\t\t}\n\t\tthis.postEffects.enable();\n\t}\n\tonDisable() {\n\t\tconst system = this.system;\n\t\tconst scene = system.app.scene;\n\t\tconst layers = scene.layers;\n\t\tthis.postEffects.disable();\n\t\tthis.removeCameraFromLayers();\n\t\tscene.off('set:layers', this.onLayersChanged, this);\n\t\tif (layers) {\n\t\t\tlayers.off('add', this.onLayerAdded, this);\n\t\t\tlayers.off('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tsystem.removeCamera(this);\n\t}\n\tonRemove() {\n\t\tthis.onDisable();\n\t\tthis.off();\n\t\tthis.camera.destroy();\n\t}\n\tcalculateAspectRatio(rt) {\n\t\tconst device = this.system.app.graphicsDevice;\n\t\tconst width = rt ? rt.width : device.width;\n\t\tconst height = rt ? rt.height : device.height;\n\t\treturn width * this.rect.z / (height * this.rect.w);\n\t}\n\tframeUpdate(rt) {\n\t\tif (this.aspectRatioMode === ASPECT_AUTO) {\n\t\t\tthis.aspectRatio = this.calculateAspectRatio(rt);\n\t\t}\n\t}\n\tstartXr(type, spaceType, options) {\n\t\tthis.system.app.xr.start(this, type, spaceType, options);\n\t}\n\tendXr(callback) {\n\t\tif (!this._camera.xr) {\n\t\t\tif (callback) callback(new Error('Camera is not in XR'));\n\t\t\treturn;\n\t\t}\n\t\tthis._camera.xr.end(callback);\n\t}\n\tcopy(source) {\n\t\tthis.aperture = source.aperture;\n\t\tthis.aspectRatio = source.aspectRatio;\n\t\tthis.aspectRatioMode = source.aspectRatioMode;\n\t\tthis.calculateProjection = source.calculateProjection;\n\t\tthis.calculateTransform = source.calculateTransform;\n\t\tthis.clearColor = source.clearColor;\n\t\tthis.clearColorBuffer = source.clearColorBuffer;\n\t\tthis.clearDepthBuffer = source.clearDepthBuffer;\n\t\tthis.clearStencilBuffer = source.clearStencilBuffer;\n\t\tthis.cullFaces = source.cullFaces;\n\t\tthis.disablePostEffectsLayer = source.disablePostEffectsLayer;\n\t\tthis.farClip = source.farClip;\n\t\tthis.flipFaces = source.flipFaces;\n\t\tthis.fov = source.fov;\n\t\tthis.frustumCulling = source.frustumCulling;\n\t\tthis.horizontalFov = source.horizontalFov;\n\t\tthis.layers = source.layers;\n\t\tthis.nearClip = source.nearClip;\n\t\tthis.orthoHeight = source.orthoHeight;\n\t\tthis.priority = source.priority;\n\t\tthis.projection = source.projection;\n\t\tthis.rect = source.rect;\n\t\tthis.renderTarget = source.renderTarget;\n\t\tthis.scissorRect = source.scissorRect;\n\t\tthis.sensitivity = source.sensitivity;\n\t\tthis.shutter = source.shutter;\n\t}\n}\n\nexport { CameraComponent };\n", "class CameraComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t}\n}\n\nexport { CameraComponentData };\n", "import { sortPriority } from '../../../core/sort.js';\nimport { Color } from '../../../core/math/color.js';\nimport { Vec4 } from '../../../core/math/vec4.js';\nimport { Component } from '../component.js';\nimport { ComponentSystem } from '../system.js';\nimport { CameraComponent } from './component.js';\nimport { CameraComponentData } from './data.js';\n\nconst _schema = ['enabled'];\nclass CameraComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.cameras = [];\n\t\tthis.id = 'camera';\n\t\tthis.ComponentType = CameraComponent;\n\t\tthis.DataType = CameraComponentData;\n\t\tthis.schema = _schema;\n\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\tthis.app.on('prerender', this.onAppPrerender, this);\n\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t}\n\tinitializeComponentData(component, data, properties) {\n\t\tproperties = ['aspectRatio', 'aspectRatioMode', 'calculateProjection', 'calculateTransform', 'clearColor', 'clearColorBuffer', 'clearDepthBuffer', 'clearStencilBuffer', 'renderSceneColorMap', 'renderSceneDepthMap', 'cullFaces', 'farClip', 'flipFaces', 'fov', 'frustumCulling', 'horizontalFov', 'layers', 'renderTarget', 'nearClip', 'orthoHeight', 'projection', 'priority', 'rect', 'scissorRect', 'aperture', 'shutter', 'sensitivity'];\n\t\tfor (let i = 0; i < properties.length; i++) {\n\t\t\tconst property = properties[i];\n\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\tconst value = data[property];\n\t\t\t\tswitch (property) {\n\t\t\t\t\tcase 'rect':\n\t\t\t\t\tcase 'scissorRect':\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\tcomponent[property] = new Vec4(value[0], value[1], value[2], value[3]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'clearColor':\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\tcomponent[property] = new Color(value[0], value[1], value[2], value[3]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsuper.initializeComponentData(component, data, ['enabled']);\n\t}\n\tcloneComponent(entity, clone) {\n\t\tconst c = entity.camera;\n\t\treturn this.addComponent(clone, {\n\t\t\taspectRatio: c.aspectRatio,\n\t\t\taspectRatioMode: c.aspectRatioMode,\n\t\t\tcalculateProjection: c.calculateProjection,\n\t\t\tcalculateTransform: c.calculateTransform,\n\t\t\tclearColor: c.clearColor,\n\t\t\tclearColorBuffer: c.clearColorBuffer,\n\t\t\tclearDepthBuffer: c.clearDepthBuffer,\n\t\t\tclearStencilBuffer: c.clearStencilBuffer,\n\t\t\trenderSceneDepthMap: c.renderSceneDepthMap,\n\t\t\trenderSceneColorMap: c.renderSceneColorMap,\n\t\t\tcullFaces: c.cullFaces,\n\t\t\tenabled: c.enabled,\n\t\t\tfarClip: c.farClip,\n\t\t\tflipFaces: c.flipFaces,\n\t\t\tfov: c.fov,\n\t\t\tfrustumCulling: c.frustumCulling,\n\t\t\thorizontalFov: c.horizontalFov,\n\t\t\tlayers: c.layers,\n\t\t\trenderTarget: c.renderTarget,\n\t\t\tnearClip: c.nearClip,\n\t\t\torthoHeight: c.orthoHeight,\n\t\t\tprojection: c.projection,\n\t\t\tpriority: c.priority,\n\t\t\trect: c.rect,\n\t\t\tscissorRect: c.scissorRect,\n\t\t\taperture: c.aperture,\n\t\t\tsensitivity: c.sensitivity,\n\t\t\tshutter: c.shutter\n\t\t});\n\t}\n\tonBeforeRemove(entity, component) {\n\t\tthis.removeCamera(component);\n\t\tcomponent.onRemove();\n\t}\n\tonUpdate(dt) {}\n\tonAppPrerender() {\n\t\tfor (let i = 0, len = this.cameras.length; i < len; i++) {\n\t\t\tthis.cameras[i].onAppPrerender();\n\t\t}\n\t}\n\taddCamera(camera) {\n\t\tthis.cameras.push(camera);\n\t\tsortPriority(this.cameras);\n\t}\n\tremoveCamera(camera) {\n\t\tconst index = this.cameras.indexOf(camera);\n\t\tif (index >= 0) {\n\t\t\tthis.cameras.splice(index, 1);\n\t\t\tsortPriority(this.cameras);\n\t\t}\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t}\n}\nComponent._buildAccessors(CameraComponent.prototype, _schema);\n\nexport { CameraComponentSystem };\n", "import { LIGHTSHAPE_PUNCTUAL, LIGHTFALLOFF_LINEAR, SHADOW_PCF3, BLUR_GAUSSIAN, SHADOWUPDATE_REALTIME, LAYERID_WORLD } from '../../../scene/constants.js';\nimport { Color } from '../../../core/math/color.js';\n\nclass LightComponentData {\n\tconstructor() {\n\t\tthis.enabled = true;\n\t\tthis.light = void 0;\n\t\tthis.type = 'directional';\n\t\tthis.color = new Color(1, 1, 1);\n\t\tthis.intensity = 1;\n\t\tthis.luminance = 0;\n\t\tthis.shape = LIGHTSHAPE_PUNCTUAL;\n\t\tthis.affectSpecularity = true;\n\t\tthis.castShadows = false;\n\t\tthis.shadowDistance = 40;\n\t\tthis.shadowIntensity = 1;\n\t\tthis.shadowResolution = 1024;\n\t\tthis.shadowBias = 0.05;\n\t\tthis.numCascades = 1;\n\t\tthis.bakeNumSamples = 1;\n\t\tthis.bakeArea = 0;\n\t\tthis.cascadeDistribution = 0.5;\n\t\tthis.normalOffsetBias = 0;\n\t\tthis.range = 10;\n\t\tthis.innerConeAngle = 40;\n\t\tthis.outerConeAngle = 45;\n\t\tthis.falloffMode = LIGHTFALLOFF_LINEAR;\n\t\tthis.shadowType = SHADOW_PCF3;\n\t\tthis.vsmBlurSize = 11;\n\t\tthis.vsmBlurMode = BLUR_GAUSSIAN;\n\t\tthis.vsmBias = 0.01 * 0.25;\n\t\tthis.cookieAsset = null;\n\t\tthis.cookie = null;\n\t\tthis.cookieIntensity = 1;\n\t\tthis.cookieFalloff = true;\n\t\tthis.cookieChannel = 'rgb';\n\t\tthis.cookieAngle = 0;\n\t\tthis.cookieScale = null;\n\t\tthis.cookieOffset = null;\n\t\tthis.shadowUpdateMode = SHADOWUPDATE_REALTIME;\n\t\tthis.mask = 1;\n\t\tthis.affectDynamic = true;\n\t\tthis.affectLightmapped = false;\n\t\tthis.bake = false;\n\t\tthis.bakeDir = true;\n\t\tthis.isStatic = false;\n\t\tthis.layers = [LAYERID_WORLD];\n\t\tthis.penumbraSize = 1;\n\t}\n}\nconst properties = Object.keys(new LightComponentData());\n\nexport { LightComponentData, properties };\n", "import { math } from '../../../core/math/math.js';\nimport { Vec4 } from '../../../core/math/vec4.js';\nimport { MASK_AFFECT_DYNAMIC, MASK_AFFECT_LIGHTMAPPED, MASK_BAKE } from '../../../scene/constants.js';\nimport { Asset } from '../../asset/asset.js';\nimport { Component } from '../component.js';\nimport { properties } from './data.js';\n\nclass LightComponent extends Component {\n\tconstructor(system, entity) {\n\t\tsuper(system, entity);\n\t\tthis._cookieAsset = null;\n\t\tthis._cookieAssetId = null;\n\t\tthis._cookieAssetAdd = false;\n\t\tthis._cookieMatrix = null;\n\t}\n\tget data() {\n\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\treturn record ? record.data : null;\n\t}\n\tset enabled(arg) {\n\t\tthis._setValue('enabled', arg, function (newValue, oldValue) {\n\t\t\tthis.onSetEnabled(null, oldValue, newValue);\n\t\t});\n\t}\n\tget enabled() {\n\t\treturn this.data.enabled;\n\t}\n\tset light(arg) {\n\t\tthis._setValue('light', arg);\n\t}\n\tget light() {\n\t\treturn this.data.light;\n\t}\n\tset type(arg) {\n\t\tthis._setValue('type', arg, function (newValue, oldValue) {\n\t\t\tthis.system.changeType(this, oldValue, newValue);\n\t\t\tthis.refreshProperties();\n\t\t});\n\t}\n\tget type() {\n\t\treturn this.data.type;\n\t}\n\tset color(arg) {\n\t\tthis._setValue('color', arg, function (newValue, oldValue) {\n\t\t\tthis.light.setColor(newValue);\n\t\t}, true);\n\t}\n\tget color() {\n\t\treturn this.data.color;\n\t}\n\tset intensity(arg) {\n\t\tthis._setValue('intensity', arg, function (newValue, oldValue) {\n\t\t\tthis.light.intensity = newValue;\n\t\t});\n\t}\n\tget intensity() {\n\t\treturn this.data.intensity;\n\t}\n\tset luminance(arg) {\n\t\tthis._setValue('luminance', arg, function (newValue, oldValue) {\n\t\t\tthis.light.luminance = newValue;\n\t\t});\n\t}\n\tget luminance() {\n\t\treturn this.data.luminance;\n\t}\n\tset shape(arg) {\n\t\tthis._setValue('shape', arg, function (newValue, oldValue) {\n\t\t\tthis.light.shape = newValue;\n\t\t});\n\t}\n\tget shape() {\n\t\treturn this.data.shape;\n\t}\n\tset affectSpecularity(arg) {\n\t\tthis._setValue('affectSpecularity', arg, function (newValue, oldValue) {\n\t\t\tthis.light.affectSpecularity = newValue;\n\t\t});\n\t}\n\tget affectSpecularity() {\n\t\treturn this.data.affectSpecularity;\n\t}\n\tset castShadows(arg) {\n\t\tthis._setValue('castShadows', arg, function (newValue, oldValue) {\n\t\t\tthis.light.castShadows = newValue;\n\t\t});\n\t}\n\tget castShadows() {\n\t\treturn this.data.castShadows;\n\t}\n\tset shadowDistance(arg) {\n\t\tthis._setValue('shadowDistance', arg, function (newValue, oldValue) {\n\t\t\tthis.light.shadowDistance = newValue;\n\t\t});\n\t}\n\tget shadowDistance() {\n\t\treturn this.data.shadowDistance;\n\t}\n\tset shadowIntensity(arg) {\n\t\tthis._setValue('shadowIntensity', arg, function (newValue, oldValue) {\n\t\t\tthis.light.shadowIntensity = newValue;\n\t\t});\n\t}\n\tget shadowIntensity() {\n\t\treturn this.data.shadowIntensity;\n\t}\n\tset shadowResolution(arg) {\n\t\tthis._setValue('shadowResolution', arg, function (newValue, oldValue) {\n\t\t\tthis.light.shadowResolution = newValue;\n\t\t});\n\t}\n\tget shadowResolution() {\n\t\treturn this.data.shadowResolution;\n\t}\n\tset shadowBias(arg) {\n\t\tthis._setValue('shadowBias', arg, function (newValue, oldValue) {\n\t\t\tthis.light.shadowBias = -0.01 * math.clamp(newValue, 0, 1);\n\t\t});\n\t}\n\tget shadowBias() {\n\t\treturn this.data.shadowBias;\n\t}\n\tset numCascades(arg) {\n\t\tthis._setValue('numCascades', arg, function (newValue, oldValue) {\n\t\t\tthis.light.numCascades = math.clamp(Math.floor(newValue), 1, 4);\n\t\t});\n\t}\n\tget numCascades() {\n\t\treturn this.data.numCascades;\n\t}\n\tset bakeNumSamples(arg) {\n\t\tthis._setValue('bakeNumSamples', arg, function (newValue, oldValue) {\n\t\t\tthis.light.bakeNumSamples = math.clamp(Math.floor(newValue), 1, 255);\n\t\t});\n\t}\n\tget bakeNumSamples() {\n\t\treturn this.data.bakeNumSamples;\n\t}\n\tset bakeArea(arg) {\n\t\tthis._setValue('bakeArea', arg, function (newValue, oldValue) {\n\t\t\tthis.light.bakeArea = math.clamp(newValue, 0, 180);\n\t\t});\n\t}\n\tget bakeArea() {\n\t\treturn this.data.bakeArea;\n\t}\n\tset cascadeDistribution(arg) {\n\t\tthis._setValue('cascadeDistribution', arg, function (newValue, oldValue) {\n\t\t\tthis.light.cascadeDistribution = math.clamp(newValue, 0, 1);\n\t\t});\n\t}\n\tget cascadeDistribution() {\n\t\treturn this.data.cascadeDistribution;\n\t}\n\tset normalOffsetBias(arg) {\n\t\tthis._setValue('normalOffsetBias', arg, function (newValue, oldValue) {\n\t\t\tthis.light.normalOffsetBias = math.clamp(newValue, 0, 1);\n\t\t});\n\t}\n\tget normalOffsetBias() {\n\t\treturn this.data.normalOffsetBias;\n\t}\n\tset range(arg) {\n\t\tthis._setValue('range', arg, function (newValue, oldValue) {\n\t\t\tthis.light.attenuationEnd = newValue;\n\t\t});\n\t}\n\tget range() {\n\t\treturn this.data.range;\n\t}\n\tset innerConeAngle(arg) {\n\t\tthis._setValue('innerConeAngle', arg, function (newValue, oldValue) {\n\t\t\tthis.light.innerConeAngle = newValue;\n\t\t});\n\t}\n\tget innerConeAngle() {\n\t\treturn this.data.innerConeAngle;\n\t}\n\tset outerConeAngle(arg) {\n\t\tthis._setValue('outerConeAngle', arg, function (newValue, oldValue) {\n\t\t\tthis.light.outerConeAngle = newValue;\n\t\t});\n\t}\n\tget outerConeAngle() {\n\t\treturn this.data.outerConeAngle;\n\t}\n\tset falloffMode(arg) {\n\t\tthis._setValue('falloffMode', arg, function (newValue, oldValue) {\n\t\t\tthis.light.falloffMode = newValue;\n\t\t});\n\t}\n\tget falloffMode() {\n\t\treturn this.data.falloffMode;\n\t}\n\tset shadowType(arg) {\n\t\tthis._setValue('shadowType', arg, function (newValue, oldValue) {\n\t\t\tthis.light.shadowType = newValue;\n\t\t});\n\t}\n\tget shadowType() {\n\t\treturn this.data.shadowType;\n\t}\n\tset vsmBlurSize(arg) {\n\t\tthis._setValue('vsmBlurSize', arg, function (newValue, oldValue) {\n\t\t\tthis.light.vsmBlurSize = newValue;\n\t\t});\n\t}\n\tget vsmBlurSize() {\n\t\treturn this.data.vsmBlurSize;\n\t}\n\tset vsmBlurMode(arg) {\n\t\tthis._setValue('vsmBlurMode', arg, function (newValue, oldValue) {\n\t\t\tthis.light.vsmBlurMode = newValue;\n\t\t});\n\t}\n\tget vsmBlurMode() {\n\t\treturn this.data.vsmBlurMode;\n\t}\n\tset vsmBias(arg) {\n\t\tthis._setValue('vsmBias', arg, function (newValue, oldValue) {\n\t\t\tthis.light.vsmBias = math.clamp(newValue, 0, 1);\n\t\t});\n\t}\n\tget vsmBias() {\n\t\treturn this.data.vsmBias;\n\t}\n\tset cookieAsset(arg) {\n\t\tthis._setValue('cookieAsset', arg, function (newValue, oldValue) {\n\t\t\tif (this._cookieAssetId && (newValue instanceof Asset && newValue.id === this._cookieAssetId || newValue === this._cookieAssetId)) return;\n\t\t\tthis.onCookieAssetRemove();\n\t\t\tthis._cookieAssetId = null;\n\t\t\tif (newValue instanceof Asset) {\n\t\t\t\tthis.data.cookieAsset = newValue.id;\n\t\t\t\tthis._cookieAssetId = newValue.id;\n\t\t\t\tthis.onCookieAssetAdd(newValue);\n\t\t\t} else if (typeof newValue === 'number') {\n\t\t\t\tthis._cookieAssetId = newValue;\n\t\t\t\tconst asset = this.system.app.assets.get(newValue);\n\t\t\t\tif (asset) {\n\t\t\t\t\tthis.onCookieAssetAdd(asset);\n\t\t\t\t} else {\n\t\t\t\t\tthis._cookieAssetAdd = true;\n\t\t\t\t\tthis.system.app.assets.on('add:' + this._cookieAssetId, this.onCookieAssetAdd, this);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tget cookieAsset() {\n\t\treturn this.data.cookieAsset;\n\t}\n\tset cookie(arg) {\n\t\tthis._setValue('cookie', arg, function (newValue, oldValue) {\n\t\t\tthis.light.cookie = newValue;\n\t\t});\n\t}\n\tget cookie() {\n\t\treturn this.data.cookie;\n\t}\n\tset cookieIntensity(arg) {\n\t\tthis._setValue('cookieIntensity', arg, function (newValue, oldValue) {\n\t\t\tthis.light.cookieIntensity = math.clamp(newValue, 0, 1);\n\t\t});\n\t}\n\tget cookieIntensity() {\n\t\treturn this.data.cookieIntensity;\n\t}\n\tset cookieFalloff(arg) {\n\t\tthis._setValue('cookieFalloff', arg, function (newValue, oldValue) {\n\t\t\tthis.light.cookieFalloff = newValue;\n\t\t});\n\t}\n\tget cookieFalloff() {\n\t\treturn this.data.cookieFalloff;\n\t}\n\tset cookieChannel(arg) {\n\t\tthis._setValue('cookieChannel', arg, function (newValue, oldValue) {\n\t\t\tthis.light.cookieChannel = newValue;\n\t\t});\n\t}\n\tget cookieChannel() {\n\t\treturn this.data.cookieChannel;\n\t}\n\tset cookieAngle(arg) {\n\t\tthis._setValue('cookieAngle', arg, function (newValue, oldValue) {\n\t\t\tif (newValue !== 0 || this.cookieScale !== null) {\n\t\t\t\tif (!this._cookieMatrix) this._cookieMatrix = new Vec4();\n\t\t\t\tlet scx = 1;\n\t\t\t\tlet scy = 1;\n\t\t\t\tif (this.cookieScale) {\n\t\t\t\t\tscx = this.cookieScale.x;\n\t\t\t\t\tscy = this.cookieScale.y;\n\t\t\t\t}\n\t\t\t\tconst c = Math.cos(newValue * math.DEG_TO_RAD);\n\t\t\t\tconst s = Math.sin(newValue * math.DEG_TO_RAD);\n\t\t\t\tthis._cookieMatrix.set(c / scx, -s / scx, s / scy, c / scy);\n\t\t\t\tthis.light.cookieTransform = this._cookieMatrix;\n\t\t\t} else {\n\t\t\t\tthis.light.cookieTransform = null;\n\t\t\t}\n\t\t});\n\t}\n\tget cookieAngle() {\n\t\treturn this.data.cookieAngle;\n\t}\n\tset cookieScale(arg) {\n\t\tthis._setValue('cookieScale', arg, function (newValue, oldValue) {\n\t\t\tif (newValue !== null || this.cookieAngle !== 0) {\n\t\t\t\tif (!this._cookieMatrix) this._cookieMatrix = new Vec4();\n\t\t\t\tconst scx = newValue.x;\n\t\t\t\tconst scy = newValue.y;\n\t\t\t\tconst c = Math.cos(this.cookieAngle * math.DEG_TO_RAD);\n\t\t\t\tconst s = Math.sin(this.cookieAngle * math.DEG_TO_RAD);\n\t\t\t\tthis._cookieMatrix.set(c / scx, -s / scx, s / scy, c / scy);\n\t\t\t\tthis.light.cookieTransform = this._cookieMatrix;\n\t\t\t} else {\n\t\t\t\tthis.light.cookieTransform = null;\n\t\t\t}\n\t\t}, true);\n\t}\n\tget cookieScale() {\n\t\treturn this.data.cookieScale;\n\t}\n\tset cookieOffset(arg) {\n\t\tthis._setValue('cookieOffset', arg, function (newValue, oldValue) {\n\t\t\tthis.light.cookieOffset = newValue;\n\t\t}, true);\n\t}\n\tget cookieOffset() {\n\t\treturn this.data.cookieOffset;\n\t}\n\tset shadowUpdateMode(arg) {\n\t\tthis._setValue('shadowUpdateMode', arg, function (newValue, oldValue) {\n\t\t\tthis.light.shadowUpdateMode = newValue;\n\t\t}, true);\n\t}\n\tget shadowUpdateMode() {\n\t\treturn this.data.shadowUpdateMode;\n\t}\n\tset mask(arg) {\n\t\tthis._setValue('mask', arg, function (newValue, oldValue) {\n\t\t\tthis.light.mask = newValue;\n\t\t});\n\t}\n\tget mask() {\n\t\treturn this.data.mask;\n\t}\n\tset affectDynamic(arg) {\n\t\tthis._setValue('affectDynamic', arg, function (newValue, oldValue) {\n\t\t\tif (newValue) {\n\t\t\t\tthis.light.mask |= MASK_AFFECT_DYNAMIC;\n\t\t\t} else {\n\t\t\t\tthis.light.mask &= ~MASK_AFFECT_DYNAMIC;\n\t\t\t}\n\t\t\tthis.light.layersDirty();\n\t\t});\n\t}\n\tget affectDynamic() {\n\t\treturn this.data.affectDynamic;\n\t}\n\tset affectLightmapped(arg) {\n\t\tthis._setValue('affectLightmapped', arg, function (newValue, oldValue) {\n\t\t\tif (newValue) {\n\t\t\t\tthis.light.mask |= MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\tif (this.bake) this.light.mask &= ~MASK_BAKE;\n\t\t\t} else {\n\t\t\t\tthis.light.mask &= ~MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\tif (this.bake) this.light.mask |= MASK_BAKE;\n\t\t\t}\n\t\t});\n\t}\n\tget affectLightmapped() {\n\t\treturn this.data.affectLightmapped;\n\t}\n\tset bake(arg) {\n\t\tthis._setValue('bake', arg, function (newValue, oldValue) {\n\t\t\tif (newValue) {\n\t\t\t\tthis.light.mask |= MASK_BAKE;\n\t\t\t\tif (this.affectLightmapped) this.light.mask &= ~MASK_AFFECT_LIGHTMAPPED;\n\t\t\t} else {\n\t\t\t\tthis.light.mask &= ~MASK_BAKE;\n\t\t\t\tif (this.affectLightmapped) this.light.mask |= MASK_AFFECT_LIGHTMAPPED;\n\t\t\t}\n\t\t\tthis.light.layersDirty();\n\t\t});\n\t}\n\tget bake() {\n\t\treturn this.data.bake;\n\t}\n\tset bakeDir(arg) {\n\t\tthis._setValue('bakeDir', arg, function (newValue, oldValue) {\n\t\t\tthis.light.bakeDir = newValue;\n\t\t});\n\t}\n\tget bakeDir() {\n\t\treturn this.data.bakeDir;\n\t}\n\tset isStatic(arg) {\n\t\tthis._setValue('isStatic', arg, function (newValue, oldValue) {\n\t\t\tthis.light.isStatic = newValue;\n\t\t});\n\t}\n\tget isStatic() {\n\t\treturn this.data.isStatic;\n\t}\n\tset layers(arg) {\n\t\tthis._setValue('layers', arg, function (newValue, oldValue) {\n\t\t\tfor (let i = 0; i < oldValue.length; i++) {\n\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(oldValue[i]);\n\t\t\t\tif (!layer) continue;\n\t\t\t\tlayer.removeLight(this);\n\t\t\t\tthis.light.removeLayer(layer);\n\t\t\t}\n\t\t\tfor (let i = 0; i < newValue.length; i++) {\n\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(newValue[i]);\n\t\t\t\tif (!layer) continue;\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\tlayer.addLight(this);\n\t\t\t\t\tthis.light.addLayer(layer);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tget layers() {\n\t\treturn this.data.layers;\n\t}\n\tset shadowUpdateOverrides(values) {\n\t\tthis.light.shadowUpdateOverrides = values;\n\t}\n\tget shadowUpdateOverrides() {\n\t\treturn this.light.shadowUpdateOverrides;\n\t}\n\tset penumbraSize(value) {\n\t\tthis.light.penumbraSize = value;\n\t}\n\tget penumbraSize() {\n\t\treturn this.light.penumbraSize;\n\t}\n\t_setValue(name, value, setFunc, skipEqualsCheck) {\n\t\tconst data = this.data;\n\t\tconst oldValue = data[name];\n\t\tif (!skipEqualsCheck && oldValue === value) return;\n\t\tdata[name] = value;\n\t\tif (setFunc) setFunc.call(this, value, oldValue);\n\t}\n\taddLightToLayers() {\n\t\tfor (let i = 0; i < this.layers.length; i++) {\n\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.addLight(this);\n\t\t\t\tthis.light.addLayer(layer);\n\t\t\t}\n\t\t}\n\t}\n\tremoveLightFromLayers() {\n\t\tfor (let i = 0; i < this.layers.length; i++) {\n\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\tif (layer) {\n\t\t\t\tlayer.removeLight(this);\n\t\t\t\tthis.light.removeLayer(layer);\n\t\t\t}\n\t\t}\n\t}\n\tonLayersChanged(oldComp, newComp) {\n\t\tif (this.enabled && this.entity.enabled) {\n\t\t\tthis.addLightToLayers();\n\t\t}\n\t\toldComp.off('add', this.onLayerAdded, this);\n\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t}\n\tonLayerAdded(layer) {\n\t\tconst index = this.layers.indexOf(layer.id);\n\t\tif (index >= 0 && this.enabled && this.entity.enabled) {\n\t\t\tlayer.addLight(this);\n\t\t\tthis.light.addLayer(layer);\n\t\t}\n\t}\n\tonLayerRemoved(layer) {\n\t\tconst index = this.layers.indexOf(layer.id);\n\t\tif (index >= 0) {\n\t\t\tlayer.removeLight(this);\n\t\t\tthis.light.removeLayer(layer);\n\t\t}\n\t}\n\trefreshProperties() {\n\t\tfor (let i = 0; i < properties.length; i++) {\n\t\t\tconst name = properties[i];\n\t\t\tthis[name] = this[name];\n\t\t}\n\t\tif (this.enabled && this.entity.enabled) {\n\t\t\tthis.onEnable();\n\t\t}\n\t}\n\tonCookieAssetSet() {\n\t\tlet forceLoad = false;\n\t\tif (this._cookieAsset.type === 'cubemap' && !this._cookieAsset.loadFaces) {\n\t\t\tthis._cookieAsset.loadFaces = true;\n\t\t\tforceLoad = true;\n\t\t}\n\t\tif (!this._cookieAsset.resource || forceLoad) this.system.app.assets.load(this._cookieAsset);\n\t\tif (this._cookieAsset.resource) {\n\t\t\tthis.onCookieAssetLoad();\n\t\t}\n\t}\n\tonCookieAssetAdd(asset) {\n\t\tif (this._cookieAssetId !== asset.id) return;\n\t\tthis._cookieAsset = asset;\n\t\tif (this.light.enabled) {\n\t\t\tthis.onCookieAssetSet();\n\t\t}\n\t\tthis._cookieAsset.on('load', this.onCookieAssetLoad, this);\n\t\tthis._cookieAsset.on('remove', this.onCookieAssetRemove, this);\n\t}\n\tonCookieAssetLoad() {\n\t\tif (!this._cookieAsset || !this._cookieAsset.resource) {\n\t\t\treturn;\n\t\t}\n\t\tthis.cookie = this._cookieAsset.resource;\n\t}\n\tonCookieAssetRemove() {\n\t\tif (!this._cookieAssetId) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._cookieAssetAdd) {\n\t\t\tthis.system.app.assets.off('add:' + this._cookieAssetId, this.onCookieAssetAdd, this);\n\t\t\tthis._cookieAssetAdd = false;\n\t\t}\n\t\tif (this._cookieAsset) {\n\t\t\tthis._cookieAsset.off('load', this.onCookieAssetLoad, this);\n\t\t\tthis._cookieAsset.off('remove', this.onCookieAssetRemove, this);\n\t\t\tthis._cookieAsset = null;\n\t\t}\n\t\tthis.cookie = null;\n\t}\n\tonEnable() {\n\t\tthis.light.enabled = true;\n\t\tthis.system.app.scene.on('set:layers', this.onLayersChanged, this);\n\t\tif (this.system.app.scene.layers) {\n\t\t\tthis.system.app.scene.layers.on('add', this.onLayerAdded, this);\n\t\t\tthis.system.app.scene.layers.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tif (this.enabled && this.entity.enabled) {\n\t\t\tthis.addLightToLayers();\n\t\t}\n\t\tif (this._cookieAsset && !this.cookie) {\n\t\t\tthis.onCookieAssetSet();\n\t\t}\n\t}\n\tonDisable() {\n\t\tthis.light.enabled = false;\n\t\tthis.system.app.scene.off('set:layers', this.onLayersChanged, this);\n\t\tif (this.system.app.scene.layers) {\n\t\t\tthis.system.app.scene.layers.off('add', this.onLayerAdded, this);\n\t\t\tthis.system.app.scene.layers.off('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tthis.removeLightFromLayers();\n\t}\n\tonRemove() {\n\t\tthis.onDisable();\n\t\tthis.light.destroy();\n\t\tthis.cookieAsset = null;\n\t}\n}\n\nexport { LightComponent };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { Color } from '../../../core/math/color.js';\nimport { Vec2 } from '../../../core/math/vec2.js';\nimport { LIGHTSHAPE_PUNCTUAL } from '../../../scene/constants.js';\nimport { Light, lightTypes } from '../../../scene/light.js';\nimport { ComponentSystem } from '../system.js';\nimport { LightComponent } from './component.js';\nimport { LightComponentData, properties } from './data.js';\n\nclass LightComponentSystem extends ComponentSystem {\n\tconstructor(app) {\n\t\tsuper(app);\n\t\tthis.id = 'light';\n\t\tthis.ComponentType = LightComponent;\n\t\tthis.DataType = LightComponentData;\n\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t}\n\tinitializeComponentData(component, _data) {\n\t\tconst data = _extends({}, _data);\n\t\tif (!data.type) data.type = component.data.type;\n\t\tcomponent.data.type = data.type;\n\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\tdata.layers = data.layers.slice(0);\n\t\t}\n\t\tif (data.color && Array.isArray(data.color)) data.color = new Color(data.color[0], data.color[1], data.color[2]);\n\t\tif (data.cookieOffset && data.cookieOffset instanceof Array) data.cookieOffset = new Vec2(data.cookieOffset[0], data.cookieOffset[1]);\n\t\tif (data.cookieScale && data.cookieScale instanceof Array) data.cookieScale = new Vec2(data.cookieScale[0], data.cookieScale[1]);\n\t\tif (data.enable) {\n\t\t\tconsole.warn('WARNING: enable: Property is deprecated. Set enabled property instead.');\n\t\t\tdata.enabled = data.enable;\n\t\t}\n\t\tif (!data.shape) {\n\t\t\tdata.shape = LIGHTSHAPE_PUNCTUAL;\n\t\t}\n\t\tconst light = new Light(this.app.graphicsDevice, this.app.scene.clusteredLightingEnabled);\n\t\tlight.type = lightTypes[data.type];\n\t\tlight._node = component.entity;\n\t\tcomponent.data.light = light;\n\t\tsuper.initializeComponentData(component, data, properties);\n\t}\n\t_onRemoveComponent(entity, component) {\n\t\tcomponent.onRemove();\n\t}\n\tcloneComponent(entity, clone) {\n\t\tconst light = entity.light;\n\t\tconst data = [];\n\t\tlet name;\n\t\tfor (let i = 0; i < properties.length; i++) {\n\t\t\tname = properties[i];\n\t\t\tif (name === 'light') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (light[name] && light[name].clone) {\n\t\t\t\tdata[name] = light[name].clone();\n\t\t\t} else {\n\t\t\t\tdata[name] = light[name];\n\t\t\t}\n\t\t}\n\t\treturn this.addComponent(clone, data);\n\t}\n\tchangeType(component, oldValue, newValue) {\n\t\tif (oldValue !== newValue) {\n\t\t\tcomponent.light.type = lightTypes[newValue];\n\t\t}\n\t}\n}\n\nexport { LightComponentSystem };\n", "import { EventHandler } from '../core/event-handler.js';\n\nclass Render extends EventHandler {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._meshes = null;\n\t}\n\tset meshes(value) {\n\t\tthis.decRefMeshes();\n\t\tthis._meshes = value;\n\t\tthis.incRefMeshes();\n\t\tthis.fire('set:meshes', value);\n\t}\n\tget meshes() {\n\t\treturn this._meshes;\n\t}\n\tdestroy() {\n\t\tthis.meshes = null;\n\t}\n\tdecRefMeshes() {\n\t\tif (this._meshes) {\n\t\t\tconst count = this._meshes.length;\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tconst mesh = this._meshes[i];\n\t\t\t\tif (mesh) {\n\t\t\t\t\tmesh.decRefCount();\n\t\t\t\t\tif (mesh.refCount < 1) {\n\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\tthis._meshes[i] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tincRefMeshes() {\n\t\tif (this._meshes) {\n\t\t\tconst count = this._meshes.length;\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tif (this._meshes[i]) {\n\t\t\t\t\tthis._meshes[i].incRefCount();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\nRender.EVENT_SETMESHES = 'set:meshes';\n\nexport { Render };\n", "class AnimCurve {\n\tconstructor(paths, input, output, interpolation) {\n\t\tthis._paths = paths;\n\t\tthis._input = input;\n\t\tthis._output = output;\n\t\tthis._interpolation = interpolation;\n\t}\n\tget paths() {\n\t\treturn this._paths;\n\t}\n\tget input() {\n\t\treturn this._input;\n\t}\n\tget output() {\n\t\treturn this._output;\n\t}\n\tget interpolation() {\n\t\treturn this._interpolation;\n\t}\n}\n\nexport { AnimCurve };\n", "class AnimData {\n\tconstructor(components, data) {\n\t\tthis._components = components;\n\t\tthis._data = data;\n\t}\n\tget components() {\n\t\treturn this._components;\n\t}\n\tget data() {\n\t\treturn this._data;\n\t}\n}\n\nexport { AnimData };\n", "function DracoWorker(jsUrl, wasmUrl) {\n\tlet draco;\n\tconst POSITION_ATTRIBUTE = 0;\n\tconst NORMAL_ATTRIBUTE = 1;\n\tconst wrap = (typedArray, dataType) => {\n\t\tswitch (dataType) {\n\t\t\tcase draco.DT_INT8:\n\t\t\t\treturn new Int8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t\t\tcase draco.DT_INT16:\n\t\t\t\treturn new Int16Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 2);\n\t\t\tcase draco.DT_INT32:\n\t\t\t\treturn new Int32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t\tcase draco.DT_UINT8:\n\t\t\t\treturn new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t\t\tcase draco.DT_UINT16:\n\t\t\t\treturn new Uint16Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 2);\n\t\t\tcase draco.DT_UINT32:\n\t\t\t\treturn new Uint32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t\tcase draco.DT_FLOAT32:\n\t\t\t\treturn new Float32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t}\n\t\treturn null;\n\t};\n\tconst componentSizeInBytes = dataType => {\n\t\tswitch (dataType) {\n\t\t\tcase draco.DT_INT8:\n\t\t\t\treturn 1;\n\t\t\tcase draco.DT_INT16:\n\t\t\t\treturn 2;\n\t\t\tcase draco.DT_INT32:\n\t\t\t\treturn 4;\n\t\t\tcase draco.DT_UINT8:\n\t\t\t\treturn 1;\n\t\t\tcase draco.DT_UINT16:\n\t\t\t\treturn 2;\n\t\t\tcase draco.DT_UINT32:\n\t\t\t\treturn 4;\n\t\t\tcase draco.DT_FLOAT32:\n\t\t\t\treturn 4;\n\t\t}\n\t\treturn 1;\n\t};\n\tconst attributeSizeInBytes = attribute => {\n\t\treturn attribute.num_components() * componentSizeInBytes(attribute.data_type());\n\t};\n\tconst attributeOrder = {\n\t\t0: 0,\n\t\t1: 1,\n\t\t5: 2,\n\t\t2: 3,\n\t\t7: 4,\n\t\t8: 5,\n\t\t4: 6,\n\t\t3: 7\n\t};\n\tconst generateNormals = (vertices, indices) => {\n\t\tconst subtract = (dst, a, b) => {\n\t\t\tdst[0] = a[0] - b[0];\n\t\t\tdst[1] = a[1] - b[1];\n\t\t\tdst[2] = a[2] - b[2];\n\t\t};\n\t\tconst cross = (dst, a, b) => {\n\t\t\tdst[0] = a[1] * b[2] - b[1] * a[2];\n\t\t\tdst[1] = a[2] * b[0] - b[2] * a[0];\n\t\t\tdst[2] = a[0] * b[1] - b[0] * a[1];\n\t\t};\n\t\tconst normalize = (dst, offset) => {\n\t\t\tconst a = dst[offset + 0];\n\t\t\tconst b = dst[offset + 1];\n\t\t\tconst c = dst[offset + 2];\n\t\t\tconst l = 1.0 / Math.sqrt(a * a + b * b + c * c);\n\t\t\tdst[offset + 0] *= l;\n\t\t\tdst[offset + 1] *= l;\n\t\t\tdst[offset + 2] *= l;\n\t\t};\n\t\tconst copy = (dst, src, srcOffset) => {\n\t\t\tfor (let i = 0; i < 3; ++i) {\n\t\t\t\tdst[i] = src[srcOffset + i];\n\t\t\t}\n\t\t};\n\t\tconst numTriangles = indices.length / 3;\n\t\tconst numVertices = vertices.length / 3;\n\t\tconst result = new Float32Array(vertices.length);\n\t\tconst a = [0, 0, 0],\n\t\t\tb = [0, 0, 0],\n\t\t\tc = [0, 0, 0],\n\t\t\tt1 = [0, 0, 0],\n\t\t\tt2 = [0, 0, 0],\n\t\t\tn = [0, 0, 0];\n\t\tfor (let i = 0; i < numTriangles; ++i) {\n\t\t\tconst v0 = indices[i * 3 + 0] * 3;\n\t\t\tconst v1 = indices[i * 3 + 1] * 3;\n\t\t\tconst v2 = indices[i * 3 + 2] * 3;\n\t\t\tcopy(a, vertices, v0);\n\t\t\tcopy(b, vertices, v1);\n\t\t\tcopy(c, vertices, v2);\n\t\t\tsubtract(t1, b, a);\n\t\t\tsubtract(t2, c, a);\n\t\t\tcross(n, t1, t2);\n\t\t\tnormalize(n, 0);\n\t\t\tfor (let j = 0; j < 3; ++j) {\n\t\t\t\tresult[v0 + j] += n[j];\n\t\t\t\tresult[v1 + j] += n[j];\n\t\t\t\tresult[v2 + j] += n[j];\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < numVertices; ++i) {\n\t\t\tnormalize(result, i * 3);\n\t\t}\n\t\treturn new Uint8Array(result.buffer);\n\t};\n\tconst decodeMesh = inputBuffer => {\n\t\tconst result = {};\n\t\tconst buffer = new draco.DecoderBuffer();\n\t\tbuffer.Init(inputBuffer, inputBuffer.length);\n\t\tconst decoder = new draco.Decoder();\n\t\tif (decoder.GetEncodedGeometryType(buffer) !== draco.TRIANGULAR_MESH) {\n\t\t\tresult.error = 'Failed to decode draco mesh: not a mesh';\n\t\t\treturn result;\n\t\t}\n\t\tconst mesh = new draco.Mesh();\n\t\tconst status = decoder.DecodeBufferToMesh(buffer, mesh);\n\t\tif (!status || !status.ok() || mesh.ptr === 0) {\n\t\t\tresult.error = 'Failed to decode draco asset';\n\t\t\treturn result;\n\t\t}\n\t\tconst numIndices = mesh.num_faces() * 3;\n\t\tconst shortIndices = mesh.num_points() <= 65535;\n\t\tconst indicesSize = numIndices * (shortIndices ? 2 : 4);\n\t\tconst indicesPtr = draco._malloc(indicesSize);\n\t\tif (shortIndices) {\n\t\t\tdecoder.GetTrianglesUInt16Array(mesh, indicesSize, indicesPtr);\n\t\t\tresult.indices = new Uint16Array(draco.HEAPU16.buffer, indicesPtr, numIndices).slice().buffer;\n\t\t} else {\n\t\t\tdecoder.GetTrianglesUInt32Array(mesh, indicesSize, indicesPtr);\n\t\t\tresult.indices = new Uint32Array(draco.HEAPU32.buffer, indicesPtr, numIndices).slice().buffer;\n\t\t}\n\t\tdraco._free(indicesPtr);\n\t\tconst attributes = [];\n\t\tfor (let i = 0; i < mesh.num_attributes(); ++i) {\n\t\t\tattributes.push(decoder.GetAttribute(mesh, i));\n\t\t}\n\t\tattributes.sort((a, b) => {\n\t\t\tvar _attributeOrder$a$att, _attributeOrder$b$att;\n\t\t\treturn ((_attributeOrder$a$att = attributeOrder[a.attribute_type()]) != null ? _attributeOrder$a$att : attributeOrder.length) - ((_attributeOrder$b$att = attributeOrder[b.attribute_type()]) != null ? _attributeOrder$b$att : attributeOrder.length);\n\t\t});\n\t\tresult.attributes = attributes.map(a => a.unique_id());\n\t\tlet totalVertexSize = 0;\n\t\tconst offsets = attributes.map(a => {\n\t\t\tconst offset = totalVertexSize;\n\t\t\ttotalVertexSize += Math.ceil(attributeSizeInBytes(a) / 4) * 4;\n\t\t\treturn offset;\n\t\t});\n\t\tconst hasNormals = attributes.some(a => a.attribute_type() === NORMAL_ATTRIBUTE);\n\t\tconst normalOffset = offsets[1];\n\t\tif (!hasNormals) {\n\t\t\tfor (let i = 1; i < offsets.length; ++i) {\n\t\t\t\toffsets[i] += 12;\n\t\t\t}\n\t\t\ttotalVertexSize += 12;\n\t\t}\n\t\tresult.vertices = new ArrayBuffer(mesh.num_points() * totalVertexSize);\n\t\tconst dst = new Uint8Array(result.vertices);\n\t\tfor (let i = 0; i < mesh.num_attributes(); ++i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst sizeInBytes = attributeSizeInBytes(attribute);\n\t\t\tconst ptrSize = mesh.num_points() * sizeInBytes;\n\t\t\tconst ptr = draco._malloc(ptrSize);\n\t\t\tdecoder.GetAttributeDataArrayForAllPoints(mesh, attribute, attribute.data_type(), ptrSize, ptr);\n\t\t\tconst src = new Uint8Array(draco.HEAPU8.buffer, ptr, ptrSize);\n\t\t\tfor (let j = 0; j < mesh.num_points(); ++j) {\n\t\t\t\tfor (let c = 0; c < sizeInBytes; ++c) {\n\t\t\t\t\tdst[j * totalVertexSize + offsets[i] + c] = src[j * sizeInBytes + c];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!hasNormals && attribute.attribute_type() === POSITION_ATTRIBUTE) {\n\t\t\t\tconst normals = generateNormals(wrap(src, attribute.data_type()), shortIndices ? new Uint16Array(result.indices) : new Uint32Array(result.indices));\n\t\t\t\tfor (let j = 0; j < mesh.num_points(); ++j) {\n\t\t\t\t\tfor (let c = 0; c < 12; ++c) {\n\t\t\t\t\t\tdst[j * totalVertexSize + normalOffset + c] = normals[j * 12 + c];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdraco._free(ptr);\n\t\t}\n\t\tdraco.destroy(mesh);\n\t\tdraco.destroy(decoder);\n\t\tdraco.destroy(buffer);\n\t\treturn result;\n\t};\n\tconst decode = data => {\n\t\tconst result = decodeMesh(new Uint8Array(data.buffer));\n\t\tself.postMessage({\n\t\t\tjobId: data.jobId,\n\t\t\terror: result.error,\n\t\t\tindices: result.indices,\n\t\t\tvertices: result.vertices,\n\t\t\tattributes: result.attributes\n\t\t}, [result.indices, result.vertices].filter(t => t != null));\n\t};\n\tconst workQueue = [];\n\tself.onmessage = message => {\n\t\tconst data = message.data;\n\t\tswitch (data.type) {\n\t\t\tcase 'init':\n\t\t\t\tself.DracoDecoderModule({\n\t\t\t\t\tinstantiateWasm: (imports, successCallback) => {\n\t\t\t\t\t\tWebAssembly.instantiate(data.module, imports).then(result => successCallback(result)).catch(reason => console.error('instantiate failed + ' + reason));\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\t\t\t\t}).then(instance => {\n\t\t\t\t\tdraco = instance;\n\t\t\t\t\tworkQueue.forEach(data => decode(data));\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'decodeMesh':\n\t\t\t\tif (draco) {\n\t\t\t\t\tdecode(data);\n\t\t\t\t} else {\n\t\t\t\t\tworkQueue.push(data);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n\nexport { DracoWorker };\n", "import { WasmModule } from '../../core/wasm-module.js';\nimport { DracoWorker } from './draco-worker.js';\nimport { http } from '../../platform/net/http.js';\n\nconst downloadMaxRetries = 3;\nclass JobQueue {\n\tconstructor() {\n\t\tthis.workers = [[], [], []];\n\t\tthis.jobId = 0;\n\t\tthis.jobQueue = [];\n\t\tthis.jobCallbacks = new Map();\n\t\tthis.run = (worker, job) => {\n\t\t\tworker.postMessage({\n\t\t\t\ttype: 'decodeMesh',\n\t\t\t\tjobId: job.jobId,\n\t\t\t\tbuffer: job.buffer\n\t\t\t}, [job.buffer]);\n\t\t};\n\t}\n\tinit(workers) {\n\t\tworkers.forEach(worker => {\n\t\t\tworker.addEventListener('message', message => {\n\t\t\t\tconst data = message.data;\n\t\t\t\tconst callback = this.jobCallbacks.get(data.jobId);\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(data.error, {\n\t\t\t\t\t\tindices: data.indices,\n\t\t\t\t\t\tvertices: data.vertices,\n\t\t\t\t\t\tattributes: data.attributes\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.jobCallbacks.delete(data.jobId);\n\t\t\t\tif (this.jobQueue.length > 0) {\n\t\t\t\t\tconst job = this.jobQueue.shift();\n\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t} else {\n\t\t\t\t\tconst index2 = this.workers[2].indexOf(worker);\n\t\t\t\t\tif (index2 !== -1) {\n\t\t\t\t\t\tthis.workers[2].splice(index2, 1);\n\t\t\t\t\t\tthis.workers[1].push(worker);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst index1 = this.workers[1].indexOf(worker);\n\t\t\t\t\t\tif (index1 !== -1) {\n\t\t\t\t\t\t\tthis.workers[1].splice(index1, 1);\n\t\t\t\t\t\t\tthis.workers[0].push(worker);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.workers[0] = workers;\n\t\twhile (this.jobQueue.length && (this.workers[0].length || this.workers[1].length)) {\n\t\t\tconst job = this.jobQueue.shift();\n\t\t\tif (this.workers[0].length > 0) {\n\t\t\t\tconst worker = this.workers[0].shift();\n\t\t\t\tthis.workers[1].push(worker);\n\t\t\t\tthis.run(worker, job);\n\t\t\t} else {\n\t\t\t\tconst worker = this.workers[1].shift();\n\t\t\t\tthis.workers[2].push(worker);\n\t\t\t\tthis.run(worker, job);\n\t\t\t}\n\t\t}\n\t}\n\tenqueueJob(buffer, callback) {\n\t\tconst job = {\n\t\t\tjobId: this.jobId++,\n\t\t\tbuffer: buffer\n\t\t};\n\t\tthis.jobCallbacks.set(job.jobId, callback);\n\t\tif (this.workers[0].length > 0) {\n\t\t\tconst worker = this.workers[0].shift();\n\t\t\tthis.workers[1].push(worker);\n\t\t\tthis.run(worker, job);\n\t\t} else if (this.workers[1].length > 0) {\n\t\t\tconst worker = this.workers[1].shift();\n\t\t\tthis.workers[2].push(worker);\n\t\t\tthis.run(worker, job);\n\t\t} else {\n\t\t\tthis.jobQueue.push(job);\n\t\t}\n\t}\n}\nconst downloadScript = url => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst options = {\n\t\t\tcache: true,\n\t\t\tresponseType: 'text',\n\t\t\tretry: downloadMaxRetries > 0,\n\t\t\tmaxRetries: downloadMaxRetries\n\t\t};\n\t\thttp.get(url, options, (err, response) => {\n\t\t\tif (err) {\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\tresolve(response);\n\t\t\t}\n\t\t});\n\t});\n};\nconst compileModule = url => {\n\tconst compileManual = () => {\n\t\treturn fetch(url).then(result => result.arrayBuffer()).then(buffer => WebAssembly.compile(buffer));\n\t};\n\tconst compileStreaming = () => {\n\t\treturn WebAssembly.compileStreaming(fetch(url)).catch(err => {\n\t\t\treturn compileManual();\n\t\t});\n\t};\n\treturn WebAssembly.compileStreaming ? compileStreaming() : compileManual();\n};\nconst defaultNumWorkers = 1;\nlet jobQueue;\nlet lazyConfig;\nconst initializeWorkers = config => {\n\tif (jobQueue) {\n\t\treturn true;\n\t}\n\tif (!config) {\n\t\tif (lazyConfig) {\n\t\t\tconfig = lazyConfig;\n\t\t} else {\n\t\t\tconst moduleConfig = WasmModule.getConfig('DracoDecoderModule');\n\t\t\tif (moduleConfig) {\n\t\t\t\tconfig = {\n\t\t\t\t\tjsUrl: moduleConfig.glueUrl,\n\t\t\t\t\twasmUrl: moduleConfig.wasmUrl,\n\t\t\t\t\tnumWorkers: moduleConfig.numWorkers\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tconfig = {\n\t\t\t\t\tjsUrl: 'draco.wasm.js',\n\t\t\t\t\twasmUrl: 'draco.wasm.wasm',\n\t\t\t\t\tnumWorkers: defaultNumWorkers\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tif (!config.jsUrl || !config.wasmUrl) {\n\t\treturn false;\n\t}\n\tjobQueue = new JobQueue();\n\tPromise.all([downloadScript(config.jsUrl), compileModule(config.wasmUrl)]).then(([dracoSource, dracoModule]) => {\n\t\tconst code = ['/* draco */', dracoSource, '/* worker */', `(\\n${DracoWorker.toString()}\\n)()\\n\\n`].join('\\n');\n\t\tconst blob = new Blob([code], {\n\t\t\ttype: 'application/javascript'\n\t\t});\n\t\tconst workerUrl = URL.createObjectURL(blob);\n\t\tconst numWorkers = Math.max(1, Math.min(16, config.numWorkers || defaultNumWorkers));\n\t\tconst workers = [];\n\t\tfor (let i = 0; i < numWorkers; ++i) {\n\t\t\tconst worker = new Worker(workerUrl);\n\t\t\tworker.postMessage({\n\t\t\t\ttype: 'init',\n\t\t\t\tmodule: dracoModule\n\t\t\t});\n\t\t\tworkers.push(worker);\n\t\t}\n\t\tjobQueue.init(workers);\n\t});\n\treturn true;\n};\nconst dracoInitialize = config => {\n\tif (config != null && config.lazyInit) {\n\t\tlazyConfig = config;\n\t} else {\n\t\tinitializeWorkers(config);\n\t}\n};\nconst dracoDecode = (buffer, callback) => {\n\tif (!initializeWorkers()) {\n\t\treturn false;\n\t}\n\tjobQueue.enqueueJob(buffer, callback);\n\treturn true;\n};\n\nexport { dracoDecode, dracoInitialize };\n", "import { path } from '../../core/path.js';\nimport { Color } from '../../core/math/color.js';\nimport { Mat4 } from '../../core/math/mat4.js';\nimport { math } from '../../core/math/math.js';\nimport { Vec2 } from '../../core/math/vec2.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { BoundingBox } from '../../core/shape/bounding-box.js';\nimport { CULLFACE_NONE, CULLFACE_BACK, INDEXFORMAT_UINT32, INDEXFORMAT_UINT16, INDEXFORMAT_UINT8, BUFFER_STATIC, FILTER_LINEAR_MIPMAP_LINEAR, FILTER_NEAREST_MIPMAP_LINEAR, FILTER_LINEAR_MIPMAP_NEAREST, FILTER_NEAREST_MIPMAP_NEAREST, FILTER_LINEAR, FILTER_NEAREST, ADDRESS_REPEAT, ADDRESS_MIRRORED_REPEAT, ADDRESS_CLAMP_TO_EDGE, PRIMITIVE_TRIANGLES, PRIMITIVE_TRIFAN, PRIMITIVE_TRISTRIP, PRIMITIVE_LINESTRIP, PRIMITIVE_LINELOOP, PRIMITIVE_LINES, PRIMITIVE_POINTS, SEMANTIC_NORMAL, SEMANTIC_COLOR, TYPE_UINT8, TYPE_UINT16, TYPE_FLOAT32, TYPE_UINT32, TYPE_INT32, TYPE_INT16, TYPE_INT8, SEMANTIC_POSITION, SEMANTIC_TANGENT, SEMANTIC_BLENDINDICES, SEMANTIC_BLENDWEIGHT, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_TEXCOORD2, SEMANTIC_TEXCOORD3, SEMANTIC_TEXCOORD4, SEMANTIC_TEXCOORD5, SEMANTIC_TEXCOORD6, SEMANTIC_TEXCOORD7, typedArrayTypesByteSize, typedArrayTypes } from '../../platform/graphics/constants.js';\nimport { IndexBuffer } from '../../platform/graphics/index-buffer.js';\nimport { Texture } from '../../platform/graphics/texture.js';\nimport { VertexBuffer } from '../../platform/graphics/vertex-buffer.js';\nimport { VertexFormat } from '../../platform/graphics/vertex-format.js';\nimport { http } from '../../platform/net/http.js';\nimport { SPECOCC_AO, BLEND_NONE, BLEND_NORMAL, PROJECTION_ORTHOGRAPHIC, PROJECTION_PERSPECTIVE, ASPECT_AUTO, LIGHTFALLOFF_INVERSESQUARED, ASPECT_MANUAL } from '../../scene/constants.js';\nimport { GraphNode } from '../../scene/graph-node.js';\nimport { Light, lightTypes } from '../../scene/light.js';\nimport { Mesh } from '../../scene/mesh.js';\nimport { Morph } from '../../scene/morph.js';\nimport { MorphTarget } from '../../scene/morph-target.js';\nimport { calculateNormals } from '../../scene/geometry/geometry-utils.js';\nimport { Render } from '../../scene/render.js';\nimport { Skin } from '../../scene/skin.js';\nimport { StandardMaterial } from '../../scene/materials/standard-material.js';\nimport { Entity } from '../entity.js';\nimport { INTERPOLATION_LINEAR, INTERPOLATION_CUBIC, INTERPOLATION_STEP } from '../anim/constants.js';\nimport { AnimCurve } from '../anim/evaluator/anim-curve.js';\nimport { AnimData } from '../anim/evaluator/anim-data.js';\nimport { AnimTrack } from '../anim/evaluator/anim-track.js';\nimport { Asset } from '../asset/asset.js';\nimport { ABSOLUTE_URL } from '../asset/constants.js';\nimport { dracoDecode } from './draco-decoder.js';\n\nclass GlbResources {\n\tconstructor() {\n\t\tthis.gltf = void 0;\n\t\tthis.nodes = void 0;\n\t\tthis.scenes = void 0;\n\t\tthis.animations = void 0;\n\t\tthis.textures = void 0;\n\t\tthis.materials = void 0;\n\t\tthis.variants = void 0;\n\t\tthis.meshVariants = void 0;\n\t\tthis.meshDefaultMaterials = void 0;\n\t\tthis.renders = void 0;\n\t\tthis.skins = void 0;\n\t\tthis.lights = void 0;\n\t\tthis.cameras = void 0;\n\t}\n\tdestroy() {\n\t\tif (this.renders) {\n\t\t\tthis.renders.forEach(render => {\n\t\t\t\trender.meshes = null;\n\t\t\t});\n\t\t}\n\t}\n}\nconst isDataURI = uri => {\n\treturn /^data:.*,.*$/i.test(uri);\n};\nconst getDataURIMimeType = uri => {\n\treturn uri.substring(uri.indexOf(':') + 1, uri.indexOf(';'));\n};\nconst getNumComponents = accessorType => {\n\tswitch (accessorType) {\n\t\tcase 'SCALAR':\n\t\t\treturn 1;\n\t\tcase 'VEC2':\n\t\t\treturn 2;\n\t\tcase 'VEC3':\n\t\t\treturn 3;\n\t\tcase 'VEC4':\n\t\t\treturn 4;\n\t\tcase 'MAT2':\n\t\t\treturn 4;\n\t\tcase 'MAT3':\n\t\t\treturn 9;\n\t\tcase 'MAT4':\n\t\t\treturn 16;\n\t\tdefault:\n\t\t\treturn 3;\n\t}\n};\nconst getComponentType = componentType => {\n\tswitch (componentType) {\n\t\tcase 5120:\n\t\t\treturn TYPE_INT8;\n\t\tcase 5121:\n\t\t\treturn TYPE_UINT8;\n\t\tcase 5122:\n\t\t\treturn TYPE_INT16;\n\t\tcase 5123:\n\t\t\treturn TYPE_UINT16;\n\t\tcase 5124:\n\t\t\treturn TYPE_INT32;\n\t\tcase 5125:\n\t\t\treturn TYPE_UINT32;\n\t\tcase 5126:\n\t\t\treturn TYPE_FLOAT32;\n\t\tdefault:\n\t\t\treturn 0;\n\t}\n};\nconst getComponentSizeInBytes = componentType => {\n\tswitch (componentType) {\n\t\tcase 5120:\n\t\t\treturn 1;\n\t\tcase 5121:\n\t\t\treturn 1;\n\t\tcase 5122:\n\t\t\treturn 2;\n\t\tcase 5123:\n\t\t\treturn 2;\n\t\tcase 5124:\n\t\t\treturn 4;\n\t\tcase 5125:\n\t\t\treturn 4;\n\t\tcase 5126:\n\t\t\treturn 4;\n\t\tdefault:\n\t\t\treturn 0;\n\t}\n};\nconst getComponentDataType = componentType => {\n\tswitch (componentType) {\n\t\tcase 5120:\n\t\t\treturn Int8Array;\n\t\tcase 5121:\n\t\t\treturn Uint8Array;\n\t\tcase 5122:\n\t\t\treturn Int16Array;\n\t\tcase 5123:\n\t\t\treturn Uint16Array;\n\t\tcase 5124:\n\t\t\treturn Int32Array;\n\t\tcase 5125:\n\t\t\treturn Uint32Array;\n\t\tcase 5126:\n\t\t\treturn Float32Array;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\nconst gltfToEngineSemanticMap = {\n\t'POSITION': SEMANTIC_POSITION,\n\t'NORMAL': SEMANTIC_NORMAL,\n\t'TANGENT': SEMANTIC_TANGENT,\n\t'COLOR_0': SEMANTIC_COLOR,\n\t'JOINTS_0': SEMANTIC_BLENDINDICES,\n\t'WEIGHTS_0': SEMANTIC_BLENDWEIGHT,\n\t'TEXCOORD_0': SEMANTIC_TEXCOORD0,\n\t'TEXCOORD_1': SEMANTIC_TEXCOORD1,\n\t'TEXCOORD_2': SEMANTIC_TEXCOORD2,\n\t'TEXCOORD_3': SEMANTIC_TEXCOORD3,\n\t'TEXCOORD_4': SEMANTIC_TEXCOORD4,\n\t'TEXCOORD_5': SEMANTIC_TEXCOORD5,\n\t'TEXCOORD_6': SEMANTIC_TEXCOORD6,\n\t'TEXCOORD_7': SEMANTIC_TEXCOORD7\n};\nconst attributeOrder = {\n\t[SEMANTIC_POSITION]: 0,\n\t[SEMANTIC_NORMAL]: 1,\n\t[SEMANTIC_TANGENT]: 2,\n\t[SEMANTIC_COLOR]: 3,\n\t[SEMANTIC_BLENDINDICES]: 4,\n\t[SEMANTIC_BLENDWEIGHT]: 5,\n\t[SEMANTIC_TEXCOORD0]: 6,\n\t[SEMANTIC_TEXCOORD1]: 7,\n\t[SEMANTIC_TEXCOORD2]: 8,\n\t[SEMANTIC_TEXCOORD3]: 9,\n\t[SEMANTIC_TEXCOORD4]: 10,\n\t[SEMANTIC_TEXCOORD5]: 11,\n\t[SEMANTIC_TEXCOORD6]: 12,\n\t[SEMANTIC_TEXCOORD7]: 13\n};\nconst getDequantizeFunc = srcType => {\n\tswitch (srcType) {\n\t\tcase TYPE_INT8:\n\t\t\treturn x => Math.max(x / 127.0, -1.0);\n\t\tcase TYPE_UINT8:\n\t\t\treturn x => x / 255.0;\n\t\tcase TYPE_INT16:\n\t\t\treturn x => Math.max(x / 32767.0, -1.0);\n\t\tcase TYPE_UINT16:\n\t\t\treturn x => x / 65535.0;\n\t\tdefault:\n\t\t\treturn x => x;\n\t}\n};\nconst dequantizeArray = (dstArray, srcArray, srcType) => {\n\tconst convFunc = getDequantizeFunc(srcType);\n\tconst len = srcArray.length;\n\tfor (let i = 0; i < len; ++i) {\n\t\tdstArray[i] = convFunc(srcArray[i]);\n\t}\n\treturn dstArray;\n};\nconst getAccessorData = (gltfAccessor, bufferViews, flatten = false) => {\n\tconst numComponents = getNumComponents(gltfAccessor.type);\n\tconst dataType = getComponentDataType(gltfAccessor.componentType);\n\tif (!dataType) {\n\t\treturn null;\n\t}\n\tlet result;\n\tif (gltfAccessor.sparse) {\n\t\tconst sparse = gltfAccessor.sparse;\n\t\tconst indicesAccessor = {\n\t\t\tcount: sparse.count,\n\t\t\ttype: 'SCALAR'\n\t\t};\n\t\tconst indices = getAccessorData(Object.assign(indicesAccessor, sparse.indices), bufferViews, true);\n\t\tconst valuesAccessor = {\n\t\t\tcount: sparse.count,\n\t\t\ttype: gltfAccessor.type,\n\t\t\tcomponentType: gltfAccessor.componentType\n\t\t};\n\t\tconst values = getAccessorData(Object.assign(valuesAccessor, sparse.values), bufferViews, true);\n\t\tif (gltfAccessor.hasOwnProperty('bufferView')) {\n\t\t\tconst baseAccessor = {\n\t\t\t\tbufferView: gltfAccessor.bufferView,\n\t\t\t\tbyteOffset: gltfAccessor.byteOffset,\n\t\t\t\tcomponentType: gltfAccessor.componentType,\n\t\t\t\tcount: gltfAccessor.count,\n\t\t\t\ttype: gltfAccessor.type\n\t\t\t};\n\t\t\tresult = getAccessorData(baseAccessor, bufferViews, true).slice();\n\t\t} else {\n\t\t\tresult = new dataType(gltfAccessor.count * numComponents);\n\t\t}\n\t\tfor (let i = 0; i < sparse.count; ++i) {\n\t\t\tconst targetIndex = indices[i];\n\t\t\tfor (let j = 0; j < numComponents; ++j) {\n\t\t\t\tresult[targetIndex * numComponents + j] = values[i * numComponents + j];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (gltfAccessor.hasOwnProperty(\"bufferView\")) {\n\t\t\tconst bufferView = bufferViews[gltfAccessor.bufferView];\n\t\t\tif (flatten && bufferView.hasOwnProperty('byteStride')) {\n\t\t\t\tconst bytesPerElement = numComponents * dataType.BYTES_PER_ELEMENT;\n\t\t\t\tconst storage = new ArrayBuffer(gltfAccessor.count * bytesPerElement);\n\t\t\t\tconst tmpArray = new Uint8Array(storage);\n\t\t\t\tlet dstOffset = 0;\n\t\t\t\tfor (let i = 0; i < gltfAccessor.count; ++i) {\n\t\t\t\t\tlet srcOffset = (gltfAccessor.byteOffset || 0) + i * bufferView.byteStride;\n\t\t\t\t\tfor (let b = 0; b < bytesPerElement; ++b) {\n\t\t\t\t\t\ttmpArray[dstOffset++] = bufferView[srcOffset++];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult = new dataType(storage);\n\t\t\t} else {\n\t\t\t\tresult = new dataType(bufferView.buffer, bufferView.byteOffset + (gltfAccessor.byteOffset || 0), gltfAccessor.count * numComponents);\n\t\t\t}\n\t\t} else {\n\t\t\tresult = new dataType(gltfAccessor.count * numComponents);\n\t\t}\n\t}\n\treturn result;\n};\nconst getAccessorDataFloat32 = (gltfAccessor, bufferViews) => {\n\tconst data = getAccessorData(gltfAccessor, bufferViews, true);\n\tif (data instanceof Float32Array || !gltfAccessor.normalized) {\n\t\treturn data;\n\t}\n\tconst float32Data = new Float32Array(data.length);\n\tdequantizeArray(float32Data, data, getComponentType(gltfAccessor.componentType));\n\treturn float32Data;\n};\nconst getAccessorBoundingBox = gltfAccessor => {\n\tlet min = gltfAccessor.min;\n\tlet max = gltfAccessor.max;\n\tif (!min || !max) {\n\t\treturn null;\n\t}\n\tif (gltfAccessor.normalized) {\n\t\tconst ctype = getComponentType(gltfAccessor.componentType);\n\t\tmin = dequantizeArray([], min, ctype);\n\t\tmax = dequantizeArray([], max, ctype);\n\t}\n\treturn new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n};\nconst getPrimitiveType = primitive => {\n\tif (!primitive.hasOwnProperty('mode')) {\n\t\treturn PRIMITIVE_TRIANGLES;\n\t}\n\tswitch (primitive.mode) {\n\t\tcase 0:\n\t\t\treturn PRIMITIVE_POINTS;\n\t\tcase 1:\n\t\t\treturn PRIMITIVE_LINES;\n\t\tcase 2:\n\t\t\treturn PRIMITIVE_LINELOOP;\n\t\tcase 3:\n\t\t\treturn PRIMITIVE_LINESTRIP;\n\t\tcase 4:\n\t\t\treturn PRIMITIVE_TRIANGLES;\n\t\tcase 5:\n\t\t\treturn PRIMITIVE_TRISTRIP;\n\t\tcase 6:\n\t\t\treturn PRIMITIVE_TRIFAN;\n\t\tdefault:\n\t\t\treturn PRIMITIVE_TRIANGLES;\n\t}\n};\nconst generateIndices = numVertices => {\n\tconst dummyIndices = new Uint16Array(numVertices);\n\tfor (let i = 0; i < numVertices; i++) {\n\t\tdummyIndices[i] = i;\n\t}\n\treturn dummyIndices;\n};\nconst generateNormals = (sourceDesc, indices) => {\n\tconst p = sourceDesc[SEMANTIC_POSITION];\n\tif (!p || p.components !== 3) {\n\t\treturn;\n\t}\n\tlet positions;\n\tif (p.size !== p.stride) {\n\t\tconst srcStride = p.stride / typedArrayTypesByteSize[p.type];\n\t\tconst src = new typedArrayTypes[p.type](p.buffer, p.offset, p.count * srcStride);\n\t\tpositions = new typedArrayTypes[p.type](p.count * 3);\n\t\tfor (let i = 0; i < p.count; ++i) {\n\t\t\tpositions[i * 3 + 0] = src[i * srcStride + 0];\n\t\t\tpositions[i * 3 + 1] = src[i * srcStride + 1];\n\t\t\tpositions[i * 3 + 2] = src[i * srcStride + 2];\n\t\t}\n\t} else {\n\t\tpositions = new typedArrayTypes[p.type](p.buffer, p.offset, p.count * 3);\n\t}\n\tconst numVertices = p.count;\n\tif (!indices) {\n\t\tindices = generateIndices(numVertices);\n\t}\n\tconst normalsTemp = calculateNormals(positions, indices);\n\tconst normals = new Float32Array(normalsTemp.length);\n\tnormals.set(normalsTemp);\n\tsourceDesc[SEMANTIC_NORMAL] = {\n\t\tbuffer: normals.buffer,\n\t\tsize: 12,\n\t\toffset: 0,\n\t\tstride: 12,\n\t\tcount: numVertices,\n\t\tcomponents: 3,\n\t\ttype: TYPE_FLOAT32\n\t};\n};\nconst flipTexCoordVs = vertexBuffer => {\n\tlet i, j;\n\tconst floatOffsets = [];\n\tconst shortOffsets = [];\n\tconst byteOffsets = [];\n\tfor (i = 0; i < vertexBuffer.format.elements.length; ++i) {\n\t\tconst element = vertexBuffer.format.elements[i];\n\t\tif (element.name === SEMANTIC_TEXCOORD0 || element.name === SEMANTIC_TEXCOORD1) {\n\t\t\tswitch (element.dataType) {\n\t\t\t\tcase TYPE_FLOAT32:\n\t\t\t\t\tfloatOffsets.push({\n\t\t\t\t\t\toffset: element.offset / 4 + 1,\n\t\t\t\t\t\tstride: element.stride / 4\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase TYPE_UINT16:\n\t\t\t\t\tshortOffsets.push({\n\t\t\t\t\t\toffset: element.offset / 2 + 1,\n\t\t\t\t\t\tstride: element.stride / 2\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase TYPE_UINT8:\n\t\t\t\t\tbyteOffsets.push({\n\t\t\t\t\t\toffset: element.offset + 1,\n\t\t\t\t\t\tstride: element.stride\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tconst flip = (offsets, type, one) => {\n\t\tconst typedArray = new type(vertexBuffer.storage);\n\t\tfor (i = 0; i < offsets.length; ++i) {\n\t\t\tlet index = offsets[i].offset;\n\t\t\tconst stride = offsets[i].stride;\n\t\t\tfor (j = 0; j < vertexBuffer.numVertices; ++j) {\n\t\t\t\ttypedArray[index] = one - typedArray[index];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\t};\n\tif (floatOffsets.length > 0) {\n\t\tflip(floatOffsets, Float32Array, 1.0);\n\t}\n\tif (shortOffsets.length > 0) {\n\t\tflip(shortOffsets, Uint16Array, 65535);\n\t}\n\tif (byteOffsets.length > 0) {\n\t\tflip(byteOffsets, Uint8Array, 255);\n\t}\n};\nconst cloneTexture = texture => {\n\tconst shallowCopyLevels = texture => {\n\t\tconst result = [];\n\t\tfor (let mip = 0; mip < texture._levels.length; ++mip) {\n\t\t\tlet level = [];\n\t\t\tif (texture.cubemap) {\n\t\t\t\tfor (let face = 0; face < 6; ++face) {\n\t\t\t\t\tlevel.push(texture._levels[mip][face]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlevel = texture._levels[mip];\n\t\t\t}\n\t\t\tresult.push(level);\n\t\t}\n\t\treturn result;\n\t};\n\tconst result = new Texture(texture.device, texture);\n\tresult._levels = shallowCopyLevels(texture);\n\treturn result;\n};\nconst cloneTextureAsset = src => {\n\tconst result = new Asset(src.name + '_clone', src.type, src.file, src.data, src.options);\n\tresult.loaded = true;\n\tresult.resource = cloneTexture(src.resource);\n\tsrc.registry.add(result);\n\treturn result;\n};\nconst createVertexBufferInternal = (device, sourceDesc, flipV) => {\n\tconst positionDesc = sourceDesc[SEMANTIC_POSITION];\n\tif (!positionDesc) {\n\t\treturn null;\n\t}\n\tconst numVertices = positionDesc.count;\n\tconst vertexDesc = [];\n\tfor (const semantic in sourceDesc) {\n\t\tif (sourceDesc.hasOwnProperty(semantic)) {\n\t\t\tconst element = {\n\t\t\t\tsemantic: semantic,\n\t\t\t\tcomponents: sourceDesc[semantic].components,\n\t\t\t\ttype: sourceDesc[semantic].type,\n\t\t\t\tnormalize: !!sourceDesc[semantic].normalize\n\t\t\t};\n\t\t\tif (!VertexFormat.isElementValid(device, element)) {\n\t\t\t\telement.components++;\n\t\t\t}\n\t\t\tvertexDesc.push(element);\n\t\t}\n\t}\n\tvertexDesc.sort((lhs, rhs) => {\n\t\treturn attributeOrder[lhs.semantic] - attributeOrder[rhs.semantic];\n\t});\n\tlet i, j, k;\n\tlet source, target, sourceOffset;\n\tconst vertexFormat = new VertexFormat(device, vertexDesc);\n\tlet isCorrectlyInterleaved = true;\n\tfor (i = 0; i < vertexFormat.elements.length; ++i) {\n\t\ttarget = vertexFormat.elements[i];\n\t\tsource = sourceDesc[target.name];\n\t\tsourceOffset = source.offset - positionDesc.offset;\n\t\tif (source.buffer !== positionDesc.buffer || source.stride !== target.stride || source.size !== target.size || sourceOffset !== target.offset) {\n\t\t\tisCorrectlyInterleaved = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tconst vertexBuffer = new VertexBuffer(device, vertexFormat, numVertices);\n\tconst vertexData = vertexBuffer.lock();\n\tconst targetArray = new Uint32Array(vertexData);\n\tlet sourceArray;\n\tif (isCorrectlyInterleaved) {\n\t\tsourceArray = new Uint32Array(positionDesc.buffer, positionDesc.offset, numVertices * vertexBuffer.format.size / 4);\n\t\ttargetArray.set(sourceArray);\n\t} else {\n\t\tlet targetStride, sourceStride;\n\t\tfor (i = 0; i < vertexBuffer.format.elements.length; ++i) {\n\t\t\ttarget = vertexBuffer.format.elements[i];\n\t\t\ttargetStride = target.stride / 4;\n\t\t\tsource = sourceDesc[target.name];\n\t\t\tsourceStride = source.stride / 4;\n\t\t\tsourceArray = new Uint32Array(source.buffer, source.offset, (source.count - 1) * sourceStride + (source.size + 3) / 4);\n\t\t\tlet src = 0;\n\t\t\tlet dst = target.offset / 4;\n\t\t\tconst kend = Math.floor((source.size + 3) / 4);\n\t\t\tfor (j = 0; j < numVertices; ++j) {\n\t\t\t\tfor (k = 0; k < kend; ++k) {\n\t\t\t\t\ttargetArray[dst + k] = sourceArray[src + k];\n\t\t\t\t}\n\t\t\t\tsrc += sourceStride;\n\t\t\t\tdst += targetStride;\n\t\t\t}\n\t\t}\n\t}\n\tif (flipV) {\n\t\tflipTexCoordVs(vertexBuffer);\n\t}\n\tvertexBuffer.unlock();\n\treturn vertexBuffer;\n};\nconst createVertexBuffer = (device, attributes, indices, accessors, bufferViews, flipV, vertexBufferDict) => {\n\tconst useAttributes = {};\n\tconst attribIds = [];\n\tfor (const attrib in attributes) {\n\t\tif (attributes.hasOwnProperty(attrib) && gltfToEngineSemanticMap.hasOwnProperty(attrib)) {\n\t\t\tuseAttributes[attrib] = attributes[attrib];\n\t\t\tattribIds.push(attrib + ':' + attributes[attrib]);\n\t\t}\n\t}\n\tattribIds.sort();\n\tconst vbKey = attribIds.join();\n\tlet vb = vertexBufferDict[vbKey];\n\tif (!vb) {\n\t\tconst sourceDesc = {};\n\t\tfor (const attrib in useAttributes) {\n\t\t\tconst accessor = accessors[attributes[attrib]];\n\t\t\tconst accessorData = getAccessorData(accessor, bufferViews);\n\t\t\tconst bufferView = bufferViews[accessor.bufferView];\n\t\t\tconst semantic = gltfToEngineSemanticMap[attrib];\n\t\t\tconst size = getNumComponents(accessor.type) * getComponentSizeInBytes(accessor.componentType);\n\t\t\tconst stride = bufferView && bufferView.hasOwnProperty('byteStride') ? bufferView.byteStride : size;\n\t\t\tsourceDesc[semantic] = {\n\t\t\t\tbuffer: accessorData.buffer,\n\t\t\t\tsize: size,\n\t\t\t\toffset: accessorData.byteOffset,\n\t\t\t\tstride: stride,\n\t\t\t\tcount: accessor.count,\n\t\t\t\tcomponents: getNumComponents(accessor.type),\n\t\t\t\ttype: getComponentType(accessor.componentType),\n\t\t\t\tnormalize: accessor.normalized\n\t\t\t};\n\t\t}\n\t\tif (!sourceDesc.hasOwnProperty(SEMANTIC_NORMAL)) {\n\t\t\tgenerateNormals(sourceDesc, indices);\n\t\t}\n\t\tvb = createVertexBufferInternal(device, sourceDesc, flipV);\n\t\tvertexBufferDict[vbKey] = vb;\n\t}\n\treturn vb;\n};\nconst createSkin = (device, gltfSkin, accessors, bufferViews, nodes, glbSkins) => {\n\tlet i, j, bindMatrix;\n\tconst joints = gltfSkin.joints;\n\tconst numJoints = joints.length;\n\tconst ibp = [];\n\tif (gltfSkin.hasOwnProperty('inverseBindMatrices')) {\n\t\tconst inverseBindMatrices = gltfSkin.inverseBindMatrices;\n\t\tconst ibmData = getAccessorData(accessors[inverseBindMatrices], bufferViews, true);\n\t\tconst ibmValues = [];\n\t\tfor (i = 0; i < numJoints; i++) {\n\t\t\tfor (j = 0; j < 16; j++) {\n\t\t\t\tibmValues[j] = ibmData[i * 16 + j];\n\t\t\t}\n\t\t\tbindMatrix = new Mat4();\n\t\t\tbindMatrix.set(ibmValues);\n\t\t\tibp.push(bindMatrix);\n\t\t}\n\t} else {\n\t\tfor (i = 0; i < numJoints; i++) {\n\t\t\tbindMatrix = new Mat4();\n\t\t\tibp.push(bindMatrix);\n\t\t}\n\t}\n\tconst boneNames = [];\n\tfor (i = 0; i < numJoints; i++) {\n\t\tboneNames[i] = nodes[joints[i]].name;\n\t}\n\tconst key = boneNames.join('#');\n\tlet skin = glbSkins.get(key);\n\tif (!skin) {\n\t\tskin = new Skin(device, ibp, boneNames);\n\t\tglbSkins.set(key, skin);\n\t}\n\treturn skin;\n};\nconst createDracoMesh = (device, primitive, accessors, bufferViews, meshVariants, meshDefaultMaterials, promises) => {\n\tvar _primitive$extensions;\n\tconst result = new Mesh(device);\n\tresult.aabb = getAccessorBoundingBox(accessors[primitive.attributes.POSITION]);\n\tconst vertexDesc = [];\n\tfor (const [name, index] of Object.entries(primitive.attributes)) {\n\t\tvar _accessor$normalized;\n\t\tconst accessor = accessors[index];\n\t\tconst semantic = gltfToEngineSemanticMap[name];\n\t\tconst componentType = getComponentType(accessor.componentType);\n\t\tvertexDesc.push({\n\t\t\tsemantic: semantic,\n\t\t\tcomponents: getNumComponents(accessor.type),\n\t\t\ttype: componentType,\n\t\t\tnormalize: (_accessor$normalized = accessor.normalized) != null ? _accessor$normalized : semantic === SEMANTIC_COLOR && (componentType === TYPE_UINT8 || componentType === TYPE_UINT16)\n\t\t});\n\t}\n\tpromises.push(new Promise((resolve, reject) => {\n\t\tconst dracoExt = primitive.extensions.KHR_draco_mesh_compression;\n\t\tdracoDecode(bufferViews[dracoExt.bufferView].slice().buffer, (err, decompressedData) => {\n\t\t\tif (err) {\n\t\t\t\tconsole.log(err);\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\tvar _primitive$attributes;\n\t\t\t\tconst order = {};\n\t\t\t\tfor (const [name, index] of Object.entries(dracoExt.attributes)) {\n\t\t\t\t\torder[gltfToEngineSemanticMap[name]] = decompressedData.attributes.indexOf(index);\n\t\t\t\t}\n\t\t\t\tvertexDesc.sort((a, b) => {\n\t\t\t\t\treturn order[a.semantic] - order[b.semantic];\n\t\t\t\t});\n\t\t\t\tif (!((_primitive$attributes = primitive.attributes) != null && _primitive$attributes.NORMAL)) {\n\t\t\t\t\tvertexDesc.splice(1, 0, {\n\t\t\t\t\t\tsemantic: 'NORMAL',\n\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst vertexFormat = new VertexFormat(device, vertexDesc);\n\t\t\t\tconst numVertices = decompressedData.vertices.byteLength / vertexFormat.size;\n\t\t\t\tconst indexFormat = numVertices <= 65535 ? INDEXFORMAT_UINT16 : INDEXFORMAT_UINT32;\n\t\t\t\tconst numIndices = decompressedData.indices.byteLength / (numVertices <= 65535 ? 2 : 4);\n\t\t\t\tconst vertexBuffer = new VertexBuffer(device, vertexFormat, numVertices, {\n\t\t\t\t\tdata: decompressedData.vertices\n\t\t\t\t});\n\t\t\t\tconst indexBuffer = new IndexBuffer(device, indexFormat, numIndices, BUFFER_STATIC, decompressedData.indices);\n\t\t\t\tresult.vertexBuffer = vertexBuffer;\n\t\t\t\tresult.indexBuffer[0] = indexBuffer;\n\t\t\t\tresult.primitive[0].type = getPrimitiveType(primitive);\n\t\t\t\tresult.primitive[0].base = 0;\n\t\t\t\tresult.primitive[0].count = indexBuffer ? numIndices : numVertices;\n\t\t\t\tresult.primitive[0].indexed = !!indexBuffer;\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}));\n\tif (primitive != null && (_primitive$extensions = primitive.extensions) != null && _primitive$extensions.KHR_materials_variants) {\n\t\tconst variants = primitive.extensions.KHR_materials_variants;\n\t\tconst tempMapping = {};\n\t\tvariants.mappings.forEach(mapping => {\n\t\t\tmapping.variants.forEach(variant => {\n\t\t\t\ttempMapping[variant] = mapping.material;\n\t\t\t});\n\t\t});\n\t\tmeshVariants[result.id] = tempMapping;\n\t}\n\tmeshDefaultMaterials[result.id] = primitive.material;\n\treturn result;\n};\nconst createMesh = (device, gltfMesh, accessors, bufferViews, flipV, vertexBufferDict, meshVariants, meshDefaultMaterials, assetOptions, promises) => {\n\tconst meshes = [];\n\tgltfMesh.primitives.forEach(primitive => {\n\t\tvar _primitive$extensions2;\n\t\tif ((_primitive$extensions2 = primitive.extensions) != null && _primitive$extensions2.KHR_draco_mesh_compression) {\n\t\t\tmeshes.push(createDracoMesh(device, primitive, accessors, bufferViews, meshVariants, meshDefaultMaterials, promises));\n\t\t} else {\n\t\t\tlet indices = primitive.hasOwnProperty('indices') ? getAccessorData(accessors[primitive.indices], bufferViews, true) : null;\n\t\t\tconst vertexBuffer = createVertexBuffer(device, primitive.attributes, indices, accessors, bufferViews, flipV, vertexBufferDict);\n\t\t\tconst primitiveType = getPrimitiveType(primitive);\n\t\t\tconst mesh = new Mesh(device);\n\t\t\tmesh.vertexBuffer = vertexBuffer;\n\t\t\tmesh.primitive[0].type = primitiveType;\n\t\t\tmesh.primitive[0].base = 0;\n\t\t\tmesh.primitive[0].indexed = indices !== null;\n\t\t\tif (indices !== null) {\n\t\t\t\tlet indexFormat;\n\t\t\t\tif (indices instanceof Uint8Array) {\n\t\t\t\t\tindexFormat = INDEXFORMAT_UINT8;\n\t\t\t\t} else if (indices instanceof Uint16Array) {\n\t\t\t\t\tindexFormat = INDEXFORMAT_UINT16;\n\t\t\t\t} else {\n\t\t\t\t\tindexFormat = INDEXFORMAT_UINT32;\n\t\t\t\t}\n\t\t\t\tif (indexFormat === INDEXFORMAT_UINT32 && !device.extUintElement) {\n\t\t\t\t\tindexFormat = INDEXFORMAT_UINT16;\n\t\t\t\t\tindices = new Uint16Array(indices);\n\t\t\t\t}\n\t\t\t\tif (indexFormat === INDEXFORMAT_UINT8 && device.isWebGPU) {\n\t\t\t\t\tindexFormat = INDEXFORMAT_UINT16;\n\t\t\t\t\tindices = new Uint16Array(indices);\n\t\t\t\t}\n\t\t\t\tconst indexBuffer = new IndexBuffer(device, indexFormat, indices.length, BUFFER_STATIC, indices);\n\t\t\t\tmesh.indexBuffer[0] = indexBuffer;\n\t\t\t\tmesh.primitive[0].count = indices.length;\n\t\t\t} else {\n\t\t\t\tmesh.primitive[0].count = vertexBuffer.numVertices;\n\t\t\t}\n\t\t\tif (primitive.hasOwnProperty(\"extensions\") && primitive.extensions.hasOwnProperty(\"KHR_materials_variants\")) {\n\t\t\t\tconst variants = primitive.extensions.KHR_materials_variants;\n\t\t\t\tconst tempMapping = {};\n\t\t\t\tvariants.mappings.forEach(mapping => {\n\t\t\t\t\tmapping.variants.forEach(variant => {\n\t\t\t\t\t\ttempMapping[variant] = mapping.material;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tmeshVariants[mesh.id] = tempMapping;\n\t\t\t}\n\t\t\tmeshDefaultMaterials[mesh.id] = primitive.material;\n\t\t\tlet accessor = accessors[primitive.attributes.POSITION];\n\t\t\tmesh.aabb = getAccessorBoundingBox(accessor);\n\t\t\tif (primitive.hasOwnProperty('targets')) {\n\t\t\t\tconst targets = [];\n\t\t\t\tprimitive.targets.forEach((target, index) => {\n\t\t\t\t\tconst options = {};\n\t\t\t\t\tif (target.hasOwnProperty('POSITION')) {\n\t\t\t\t\t\taccessor = accessors[target.POSITION];\n\t\t\t\t\t\toptions.deltaPositions = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t\t\toptions.deltaPositionsType = TYPE_FLOAT32;\n\t\t\t\t\t\toptions.aabb = getAccessorBoundingBox(accessor);\n\t\t\t\t\t}\n\t\t\t\t\tif (target.hasOwnProperty('NORMAL')) {\n\t\t\t\t\t\taccessor = accessors[target.NORMAL];\n\t\t\t\t\t\toptions.deltaNormals = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t\t\toptions.deltaNormalsType = TYPE_FLOAT32;\n\t\t\t\t\t}\n\t\t\t\t\tif (gltfMesh.hasOwnProperty('extras') && gltfMesh.extras.hasOwnProperty('targetNames')) {\n\t\t\t\t\t\toptions.name = gltfMesh.extras.targetNames[index];\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.name = index.toString(10);\n\t\t\t\t\t}\n\t\t\t\t\tif (gltfMesh.hasOwnProperty('weights')) {\n\t\t\t\t\t\toptions.defaultWeight = gltfMesh.weights[index];\n\t\t\t\t\t}\n\t\t\t\t\toptions.preserveData = assetOptions.morphPreserveData;\n\t\t\t\t\ttargets.push(new MorphTarget(options));\n\t\t\t\t});\n\t\t\t\tmesh.morph = new Morph(targets, device, {\n\t\t\t\t\tpreferHighPrecision: assetOptions.morphPreferHighPrecision\n\t\t\t\t});\n\t\t\t}\n\t\t\tmeshes.push(mesh);\n\t\t}\n\t});\n\treturn meshes;\n};\nconst extractTextureTransform = (source, material, maps) => {\n\tvar _source$extensions;\n\tlet map;\n\tconst texCoord = source.texCoord;\n\tif (texCoord) {\n\t\tfor (map = 0; map < maps.length; ++map) {\n\t\t\tmaterial[maps[map] + 'MapUv'] = texCoord;\n\t\t}\n\t}\n\tconst zeros = [0, 0];\n\tconst ones = [1, 1];\n\tconst textureTransform = (_source$extensions = source.extensions) == null ? void 0 : _source$extensions.KHR_texture_transform;\n\tif (textureTransform) {\n\t\tconst offset = textureTransform.offset || zeros;\n\t\tconst scale = textureTransform.scale || ones;\n\t\tconst rotation = textureTransform.rotation ? -textureTransform.rotation * math.RAD_TO_DEG : 0;\n\t\tconst tilingVec = new Vec2(scale[0], scale[1]);\n\t\tconst offsetVec = new Vec2(offset[0], 1.0 - scale[1] - offset[1]);\n\t\tfor (map = 0; map < maps.length; ++map) {\n\t\t\tmaterial[`${maps[map]}MapTiling`] = tilingVec;\n\t\t\tmaterial[`${maps[map]}MapOffset`] = offsetVec;\n\t\t\tmaterial[`${maps[map]}MapRotation`] = rotation;\n\t\t}\n\t}\n};\nconst extensionPbrSpecGlossiness = (data, material, textures) => {\n\tlet color, texture;\n\tif (data.hasOwnProperty('diffuseFactor')) {\n\t\tcolor = data.diffuseFactor;\n\t\tmaterial.diffuse.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\tmaterial.opacity = color[3];\n\t} else {\n\t\tmaterial.diffuse.set(1, 1, 1);\n\t\tmaterial.opacity = 1;\n\t}\n\tif (data.hasOwnProperty('diffuseTexture')) {\n\t\tconst diffuseTexture = data.diffuseTexture;\n\t\ttexture = textures[diffuseTexture.index];\n\t\tmaterial.diffuseMap = texture;\n\t\tmaterial.diffuseMapChannel = 'rgb';\n\t\tmaterial.opacityMap = texture;\n\t\tmaterial.opacityMapChannel = 'a';\n\t\textractTextureTransform(diffuseTexture, material, ['diffuse', 'opacity']);\n\t}\n\tmaterial.useMetalness = false;\n\tif (data.hasOwnProperty('specularFactor')) {\n\t\tcolor = data.specularFactor;\n\t\tmaterial.specular.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t} else {\n\t\tmaterial.specular.set(1, 1, 1);\n\t}\n\tif (data.hasOwnProperty('glossinessFactor')) {\n\t\tmaterial.gloss = data.glossinessFactor;\n\t} else {\n\t\tmaterial.gloss = 1.0;\n\t}\n\tif (data.hasOwnProperty('specularGlossinessTexture')) {\n\t\tconst specularGlossinessTexture = data.specularGlossinessTexture;\n\t\tmaterial.specularEncoding = 'srgb';\n\t\tmaterial.specularMap = material.glossMap = textures[specularGlossinessTexture.index];\n\t\tmaterial.specularMapChannel = 'rgb';\n\t\tmaterial.glossMapChannel = 'a';\n\t\textractTextureTransform(specularGlossinessTexture, material, ['gloss', 'metalness']);\n\t}\n};\nconst extensionClearCoat = (data, material, textures) => {\n\tif (data.hasOwnProperty('clearcoatFactor')) {\n\t\tmaterial.clearCoat = data.clearcoatFactor * 0.25;\n\t} else {\n\t\tmaterial.clearCoat = 0;\n\t}\n\tif (data.hasOwnProperty('clearcoatTexture')) {\n\t\tconst clearcoatTexture = data.clearcoatTexture;\n\t\tmaterial.clearCoatMap = textures[clearcoatTexture.index];\n\t\tmaterial.clearCoatMapChannel = 'r';\n\t\textractTextureTransform(clearcoatTexture, material, ['clearCoat']);\n\t}\n\tif (data.hasOwnProperty('clearcoatRoughnessFactor')) {\n\t\tmaterial.clearCoatGloss = data.clearcoatRoughnessFactor;\n\t} else {\n\t\tmaterial.clearCoatGloss = 0;\n\t}\n\tif (data.hasOwnProperty('clearcoatRoughnessTexture')) {\n\t\tconst clearcoatRoughnessTexture = data.clearcoatRoughnessTexture;\n\t\tmaterial.clearCoatGlossMap = textures[clearcoatRoughnessTexture.index];\n\t\tmaterial.clearCoatGlossMapChannel = 'g';\n\t\textractTextureTransform(clearcoatRoughnessTexture, material, ['clearCoatGloss']);\n\t}\n\tif (data.hasOwnProperty('clearcoatNormalTexture')) {\n\t\tconst clearcoatNormalTexture = data.clearcoatNormalTexture;\n\t\tmaterial.clearCoatNormalMap = textures[clearcoatNormalTexture.index];\n\t\textractTextureTransform(clearcoatNormalTexture, material, ['clearCoatNormal']);\n\t\tif (clearcoatNormalTexture.hasOwnProperty('scale')) {\n\t\t\tmaterial.clearCoatBumpiness = clearcoatNormalTexture.scale;\n\t\t}\n\t}\n\tmaterial.clearCoatGlossInvert = true;\n};\nconst extensionUnlit = (data, material, textures) => {\n\tmaterial.useLighting = false;\n\tmaterial.emissive.copy(material.diffuse);\n\tmaterial.emissiveTint = material.diffuseTint;\n\tmaterial.emissiveMap = material.diffuseMap;\n\tmaterial.emissiveMapUv = material.diffuseMapUv;\n\tmaterial.emissiveMapTiling.copy(material.diffuseMapTiling);\n\tmaterial.emissiveMapOffset.copy(material.diffuseMapOffset);\n\tmaterial.emissiveMapRotation = material.diffuseMapRotation;\n\tmaterial.emissiveMapChannel = material.diffuseMapChannel;\n\tmaterial.emissiveVertexColor = material.diffuseVertexColor;\n\tmaterial.emissiveVertexColorChannel = material.diffuseVertexColorChannel;\n\tmaterial.useLighting = false;\n\tmaterial.useSkybox = false;\n\tmaterial.diffuse.set(0, 0, 0);\n\tmaterial.diffuseTint = false;\n\tmaterial.diffuseMap = null;\n\tmaterial.diffuseVertexColor = false;\n};\nconst extensionSpecular = (data, material, textures) => {\n\tmaterial.useMetalnessSpecularColor = true;\n\tif (data.hasOwnProperty('specularColorTexture')) {\n\t\tmaterial.specularEncoding = 'srgb';\n\t\tmaterial.specularMap = textures[data.specularColorTexture.index];\n\t\tmaterial.specularMapChannel = 'rgb';\n\t\textractTextureTransform(data.specularColorTexture, material, ['specular']);\n\t}\n\tif (data.hasOwnProperty('specularColorFactor')) {\n\t\tconst color = data.specularColorFactor;\n\t\tmaterial.specular.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t} else {\n\t\tmaterial.specular.set(1, 1, 1);\n\t}\n\tif (data.hasOwnProperty('specularFactor')) {\n\t\tmaterial.specularityFactor = data.specularFactor;\n\t} else {\n\t\tmaterial.specularityFactor = 1;\n\t}\n\tif (data.hasOwnProperty('specularTexture')) {\n\t\tmaterial.specularityFactorMapChannel = 'a';\n\t\tmaterial.specularityFactorMap = textures[data.specularTexture.index];\n\t\textractTextureTransform(data.specularTexture, material, ['specularityFactor']);\n\t}\n};\nconst extensionIor = (data, material, textures) => {\n\tif (data.hasOwnProperty('ior')) {\n\t\tmaterial.refractionIndex = 1.0 / data.ior;\n\t}\n};\nconst extensionDispersion = (data, material, textures) => {\n\tif (data.hasOwnProperty('dispersion')) {\n\t\tmaterial.dispersion = data.dispersion;\n\t}\n};\nconst extensionTransmission = (data, material, textures) => {\n\tmaterial.blendType = BLEND_NORMAL;\n\tmaterial.useDynamicRefraction = true;\n\tif (data.hasOwnProperty('transmissionFactor')) {\n\t\tmaterial.refraction = data.transmissionFactor;\n\t}\n\tif (data.hasOwnProperty('transmissionTexture')) {\n\t\tmaterial.refractionMapChannel = 'r';\n\t\tmaterial.refractionMap = textures[data.transmissionTexture.index];\n\t\textractTextureTransform(data.transmissionTexture, material, ['refraction']);\n\t}\n};\nconst extensionSheen = (data, material, textures) => {\n\tmaterial.useSheen = true;\n\tif (data.hasOwnProperty('sheenColorFactor')) {\n\t\tconst color = data.sheenColorFactor;\n\t\tmaterial.sheen.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t} else {\n\t\tmaterial.sheen.set(1, 1, 1);\n\t}\n\tif (data.hasOwnProperty('sheenColorTexture')) {\n\t\tmaterial.sheenMap = textures[data.sheenColorTexture.index];\n\t\tmaterial.sheenEncoding = 'srgb';\n\t\textractTextureTransform(data.sheenColorTexture, material, ['sheen']);\n\t}\n\tif (data.hasOwnProperty('sheenRoughnessFactor')) {\n\t\tmaterial.sheenGloss = data.sheenRoughnessFactor;\n\t} else {\n\t\tmaterial.sheenGloss = 0.0;\n\t}\n\tif (data.hasOwnProperty('sheenRoughnessTexture')) {\n\t\tmaterial.sheenGlossMap = textures[data.sheenRoughnessTexture.index];\n\t\tmaterial.sheenGlossMapChannel = 'a';\n\t\textractTextureTransform(data.sheenRoughnessTexture, material, ['sheenGloss']);\n\t}\n\tmaterial.sheenGlossInvert = true;\n};\nconst extensionVolume = (data, material, textures) => {\n\tmaterial.blendType = BLEND_NORMAL;\n\tmaterial.useDynamicRefraction = true;\n\tif (data.hasOwnProperty('thicknessFactor')) {\n\t\tmaterial.thickness = data.thicknessFactor;\n\t}\n\tif (data.hasOwnProperty('thicknessTexture')) {\n\t\tmaterial.thicknessMap = textures[data.thicknessTexture.index];\n\t\tmaterial.thicknessMapChannel = 'g';\n\t\textractTextureTransform(data.thicknessTexture, material, ['thickness']);\n\t}\n\tif (data.hasOwnProperty('attenuationDistance')) {\n\t\tmaterial.attenuationDistance = data.attenuationDistance;\n\t}\n\tif (data.hasOwnProperty('attenuationColor')) {\n\t\tconst color = data.attenuationColor;\n\t\tmaterial.attenuation.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t}\n};\nconst extensionEmissiveStrength = (data, material, textures) => {\n\tif (data.hasOwnProperty('emissiveStrength')) {\n\t\tmaterial.emissiveIntensity = data.emissiveStrength;\n\t}\n};\nconst extensionIridescence = (data, material, textures) => {\n\tmaterial.useIridescence = true;\n\tif (data.hasOwnProperty('iridescenceFactor')) {\n\t\tmaterial.iridescence = data.iridescenceFactor;\n\t}\n\tif (data.hasOwnProperty('iridescenceTexture')) {\n\t\tmaterial.iridescenceMapChannel = 'r';\n\t\tmaterial.iridescenceMap = textures[data.iridescenceTexture.index];\n\t\textractTextureTransform(data.iridescenceTexture, material, ['iridescence']);\n\t}\n\tif (data.hasOwnProperty('iridescenceIor')) {\n\t\tmaterial.iridescenceRefractionIndex = data.iridescenceIor;\n\t}\n\tif (data.hasOwnProperty('iridescenceThicknessMinimum')) {\n\t\tmaterial.iridescenceThicknessMin = data.iridescenceThicknessMinimum;\n\t}\n\tif (data.hasOwnProperty('iridescenceThicknessMaximum')) {\n\t\tmaterial.iridescenceThicknessMax = data.iridescenceThicknessMaximum;\n\t}\n\tif (data.hasOwnProperty('iridescenceThicknessTexture')) {\n\t\tmaterial.iridescenceThicknessMapChannel = 'g';\n\t\tmaterial.iridescenceThicknessMap = textures[data.iridescenceThicknessTexture.index];\n\t\textractTextureTransform(data.iridescenceThicknessTexture, material, ['iridescenceThickness']);\n\t}\n};\nconst createMaterial = (gltfMaterial, textures, flipV) => {\n\tconst material = new StandardMaterial();\n\tmaterial.occludeSpecular = SPECOCC_AO;\n\tmaterial.diffuseTint = true;\n\tmaterial.diffuseVertexColor = true;\n\tmaterial.specularTint = true;\n\tmaterial.specularVertexColor = true;\n\tif (gltfMaterial.hasOwnProperty('name')) {\n\t\tmaterial.name = gltfMaterial.name;\n\t}\n\tlet color, texture;\n\tif (gltfMaterial.hasOwnProperty('pbrMetallicRoughness')) {\n\t\tconst pbrData = gltfMaterial.pbrMetallicRoughness;\n\t\tif (pbrData.hasOwnProperty('baseColorFactor')) {\n\t\t\tcolor = pbrData.baseColorFactor;\n\t\t\tmaterial.diffuse.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t\tmaterial.opacity = color[3];\n\t\t} else {\n\t\t\tmaterial.diffuse.set(1, 1, 1);\n\t\t\tmaterial.opacity = 1;\n\t\t}\n\t\tif (pbrData.hasOwnProperty('baseColorTexture')) {\n\t\t\tconst baseColorTexture = pbrData.baseColorTexture;\n\t\t\ttexture = textures[baseColorTexture.index];\n\t\t\tmaterial.diffuseMap = texture;\n\t\t\tmaterial.diffuseMapChannel = 'rgb';\n\t\t\tmaterial.opacityMap = texture;\n\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\textractTextureTransform(baseColorTexture, material, ['diffuse', 'opacity']);\n\t\t}\n\t\tmaterial.useMetalness = true;\n\t\tmaterial.specular.set(1, 1, 1);\n\t\tif (pbrData.hasOwnProperty('metallicFactor')) {\n\t\t\tmaterial.metalness = pbrData.metallicFactor;\n\t\t} else {\n\t\t\tmaterial.metalness = 1;\n\t\t}\n\t\tif (pbrData.hasOwnProperty('roughnessFactor')) {\n\t\t\tmaterial.gloss = pbrData.roughnessFactor;\n\t\t} else {\n\t\t\tmaterial.gloss = 1;\n\t\t}\n\t\tmaterial.glossInvert = true;\n\t\tif (pbrData.hasOwnProperty('metallicRoughnessTexture')) {\n\t\t\tconst metallicRoughnessTexture = pbrData.metallicRoughnessTexture;\n\t\t\tmaterial.metalnessMap = material.glossMap = textures[metallicRoughnessTexture.index];\n\t\t\tmaterial.metalnessMapChannel = 'b';\n\t\t\tmaterial.glossMapChannel = 'g';\n\t\t\textractTextureTransform(metallicRoughnessTexture, material, ['gloss', 'metalness']);\n\t\t}\n\t}\n\tif (gltfMaterial.hasOwnProperty('normalTexture')) {\n\t\tconst normalTexture = gltfMaterial.normalTexture;\n\t\tmaterial.normalMap = textures[normalTexture.index];\n\t\textractTextureTransform(normalTexture, material, ['normal']);\n\t\tif (normalTexture.hasOwnProperty('scale')) {\n\t\t\tmaterial.bumpiness = normalTexture.scale;\n\t\t}\n\t}\n\tif (gltfMaterial.hasOwnProperty('occlusionTexture')) {\n\t\tconst occlusionTexture = gltfMaterial.occlusionTexture;\n\t\tmaterial.aoMap = textures[occlusionTexture.index];\n\t\tmaterial.aoMapChannel = 'r';\n\t\textractTextureTransform(occlusionTexture, material, ['ao']);\n\t}\n\tif (gltfMaterial.hasOwnProperty('emissiveFactor')) {\n\t\tcolor = gltfMaterial.emissiveFactor;\n\t\tmaterial.emissive.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\tmaterial.emissiveTint = true;\n\t} else {\n\t\tmaterial.emissive.set(0, 0, 0);\n\t\tmaterial.emissiveTint = false;\n\t}\n\tif (gltfMaterial.hasOwnProperty('emissiveTexture')) {\n\t\tconst emissiveTexture = gltfMaterial.emissiveTexture;\n\t\tmaterial.emissiveMap = textures[emissiveTexture.index];\n\t\textractTextureTransform(emissiveTexture, material, ['emissive']);\n\t}\n\tif (gltfMaterial.hasOwnProperty('alphaMode')) {\n\t\tswitch (gltfMaterial.alphaMode) {\n\t\t\tcase 'MASK':\n\t\t\t\tmaterial.blendType = BLEND_NONE;\n\t\t\t\tif (gltfMaterial.hasOwnProperty('alphaCutoff')) {\n\t\t\t\t\tmaterial.alphaTest = gltfMaterial.alphaCutoff;\n\t\t\t\t} else {\n\t\t\t\t\tmaterial.alphaTest = 0.5;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'BLEND':\n\t\t\t\tmaterial.blendType = BLEND_NORMAL;\n\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\tcase 'OPAQUE':\n\t\t\t\tmaterial.blendType = BLEND_NONE;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\tmaterial.blendType = BLEND_NONE;\n\t}\n\tif (gltfMaterial.hasOwnProperty('doubleSided')) {\n\t\tmaterial.twoSidedLighting = gltfMaterial.doubleSided;\n\t\tmaterial.cull = gltfMaterial.doubleSided ? CULLFACE_NONE : CULLFACE_BACK;\n\t} else {\n\t\tmaterial.twoSidedLighting = false;\n\t\tmaterial.cull = CULLFACE_BACK;\n\t}\n\tconst extensions = {\n\t\t\"KHR_materials_clearcoat\": extensionClearCoat,\n\t\t\"KHR_materials_emissive_strength\": extensionEmissiveStrength,\n\t\t\"KHR_materials_ior\": extensionIor,\n\t\t\"KHR_materials_dispersion\": extensionDispersion,\n\t\t\"KHR_materials_iridescence\": extensionIridescence,\n\t\t\"KHR_materials_pbrSpecularGlossiness\": extensionPbrSpecGlossiness,\n\t\t\"KHR_materials_sheen\": extensionSheen,\n\t\t\"KHR_materials_specular\": extensionSpecular,\n\t\t\"KHR_materials_transmission\": extensionTransmission,\n\t\t\"KHR_materials_unlit\": extensionUnlit,\n\t\t\"KHR_materials_volume\": extensionVolume\n\t};\n\tif (gltfMaterial.hasOwnProperty('extensions')) {\n\t\tfor (const key in gltfMaterial.extensions) {\n\t\t\tconst extensionFunc = extensions[key];\n\t\t\tif (extensionFunc !== undefined) {\n\t\t\t\textensionFunc(gltfMaterial.extensions[key], material, textures);\n\t\t\t}\n\t\t}\n\t}\n\tmaterial.update();\n\treturn material;\n};\nconst createAnimation = (gltfAnimation, animationIndex, gltfAccessors, bufferViews, nodes, meshes, gltfNodes) => {\n\tconst createAnimData = gltfAccessor => {\n\t\treturn new AnimData(getNumComponents(gltfAccessor.type), getAccessorDataFloat32(gltfAccessor, bufferViews));\n\t};\n\tconst interpMap = {\n\t\t'STEP': INTERPOLATION_STEP,\n\t\t'LINEAR': INTERPOLATION_LINEAR,\n\t\t'CUBICSPLINE': INTERPOLATION_CUBIC\n\t};\n\tconst inputMap = {};\n\tconst outputMap = {};\n\tconst curveMap = {};\n\tlet outputCounter = 1;\n\tlet i;\n\tfor (i = 0; i < gltfAnimation.samplers.length; ++i) {\n\t\tconst sampler = gltfAnimation.samplers[i];\n\t\tif (!inputMap.hasOwnProperty(sampler.input)) {\n\t\t\tinputMap[sampler.input] = createAnimData(gltfAccessors[sampler.input]);\n\t\t}\n\t\tif (!outputMap.hasOwnProperty(sampler.output)) {\n\t\t\toutputMap[sampler.output] = createAnimData(gltfAccessors[sampler.output]);\n\t\t}\n\t\tconst interpolation = sampler.hasOwnProperty('interpolation') && interpMap.hasOwnProperty(sampler.interpolation) ? interpMap[sampler.interpolation] : INTERPOLATION_LINEAR;\n\t\tconst curve = {\n\t\t\tpaths: [],\n\t\t\tinput: sampler.input,\n\t\t\toutput: sampler.output,\n\t\t\tinterpolation: interpolation\n\t\t};\n\t\tcurveMap[i] = curve;\n\t}\n\tconst quatArrays = [];\n\tconst transformSchema = {\n\t\t'translation': 'localPosition',\n\t\t'rotation': 'localRotation',\n\t\t'scale': 'localScale'\n\t};\n\tconst constructNodePath = node => {\n\t\tconst path = [];\n\t\twhile (node) {\n\t\t\tpath.unshift(node.name);\n\t\t\tnode = node.parent;\n\t\t}\n\t\treturn path;\n\t};\n\tconst createMorphTargetCurves = (curve, gltfNode, entityPath) => {\n\t\tconst out = outputMap[curve.output];\n\t\tif (!out) {\n\t\t\treturn;\n\t\t}\n\t\tlet targetNames;\n\t\tif (meshes && meshes[gltfNode.mesh]) {\n\t\t\tconst mesh = meshes[gltfNode.mesh];\n\t\t\tif (mesh.hasOwnProperty('extras') && mesh.extras.hasOwnProperty('targetNames')) {\n\t\t\t\ttargetNames = mesh.extras.targetNames;\n\t\t\t}\n\t\t}\n\t\tconst outData = out.data;\n\t\tconst morphTargetCount = outData.length / inputMap[curve.input].data.length;\n\t\tconst keyframeCount = outData.length / morphTargetCount;\n\t\tconst singleBufferSize = keyframeCount * 4;\n\t\tconst buffer = new ArrayBuffer(singleBufferSize * morphTargetCount);\n\t\tfor (let j = 0; j < morphTargetCount; j++) {\n\t\t\tvar _targetNames;\n\t\t\tconst morphTargetOutput = new Float32Array(buffer, singleBufferSize * j, keyframeCount);\n\t\t\tfor (let k = 0; k < keyframeCount; k++) {\n\t\t\t\tmorphTargetOutput[k] = outData[k * morphTargetCount + j];\n\t\t\t}\n\t\t\tconst output = new AnimData(1, morphTargetOutput);\n\t\t\tconst weightName = (_targetNames = targetNames) != null && _targetNames[j] ? `name.${targetNames[j]}` : j;\n\t\t\toutputMap[-outputCounter] = output;\n\t\t\tconst morphCurve = {\n\t\t\t\tpaths: [{\n\t\t\t\t\tentityPath: entityPath,\n\t\t\t\t\tcomponent: 'graph',\n\t\t\t\t\tpropertyPath: [`weight.${weightName}`]\n\t\t\t\t}],\n\t\t\t\tinput: curve.input,\n\t\t\t\toutput: -outputCounter,\n\t\t\t\tinterpolation: curve.interpolation\n\t\t\t};\n\t\t\toutputCounter++;\n\t\t\tcurveMap[`morphCurve-${i}-${j}`] = morphCurve;\n\t\t}\n\t};\n\tfor (i = 0; i < gltfAnimation.channels.length; ++i) {\n\t\tconst channel = gltfAnimation.channels[i];\n\t\tconst target = channel.target;\n\t\tconst curve = curveMap[channel.sampler];\n\t\tconst node = nodes[target.node];\n\t\tconst gltfNode = gltfNodes[target.node];\n\t\tconst entityPath = constructNodePath(node);\n\t\tif (target.path.startsWith('weights')) {\n\t\t\tcreateMorphTargetCurves(curve, gltfNode, entityPath);\n\t\t\tcurveMap[channel.sampler].morphCurve = true;\n\t\t} else {\n\t\t\tcurve.paths.push({\n\t\t\t\tentityPath: entityPath,\n\t\t\t\tcomponent: 'graph',\n\t\t\t\tpropertyPath: [transformSchema[target.path]]\n\t\t\t});\n\t\t}\n\t}\n\tconst inputs = [];\n\tconst outputs = [];\n\tconst curves = [];\n\tfor (const inputKey in inputMap) {\n\t\tinputs.push(inputMap[inputKey]);\n\t\tinputMap[inputKey] = inputs.length - 1;\n\t}\n\tfor (const outputKey in outputMap) {\n\t\toutputs.push(outputMap[outputKey]);\n\t\toutputMap[outputKey] = outputs.length - 1;\n\t}\n\tfor (const curveKey in curveMap) {\n\t\tconst curveData = curveMap[curveKey];\n\t\tif (curveData.morphCurve) {\n\t\t\tcontinue;\n\t\t}\n\t\tcurves.push(new AnimCurve(curveData.paths, inputMap[curveData.input], outputMap[curveData.output], curveData.interpolation));\n\t\tif (curveData.paths.length > 0 && curveData.paths[0].propertyPath[0] === 'localRotation' && curveData.interpolation !== INTERPOLATION_CUBIC) {\n\t\t\tquatArrays.push(curves[curves.length - 1].output);\n\t\t}\n\t}\n\tquatArrays.sort();\n\tlet prevIndex = null;\n\tlet data;\n\tfor (i = 0; i < quatArrays.length; ++i) {\n\t\tconst index = quatArrays[i];\n\t\tif (i === 0 || index !== prevIndex) {\n\t\t\tdata = outputs[index];\n\t\t\tif (data.components === 4) {\n\t\t\t\tconst d = data.data;\n\t\t\t\tconst len = d.length - 4;\n\t\t\t\tfor (let j = 0; j < len; j += 4) {\n\t\t\t\t\tconst dp = d[j + 0] * d[j + 4] + d[j + 1] * d[j + 5] + d[j + 2] * d[j + 6] + d[j + 3] * d[j + 7];\n\t\t\t\t\tif (dp < 0) {\n\t\t\t\t\t\td[j + 4] *= -1;\n\t\t\t\t\t\td[j + 5] *= -1;\n\t\t\t\t\t\td[j + 6] *= -1;\n\t\t\t\t\t\td[j + 7] *= -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tprevIndex = index;\n\t\t}\n\t}\n\tlet duration = 0;\n\tfor (i = 0; i < inputs.length; i++) {\n\t\tdata = inputs[i]._data;\n\t\tduration = Math.max(duration, data.length === 0 ? 0 : data[data.length - 1]);\n\t}\n\treturn new AnimTrack(gltfAnimation.hasOwnProperty('name') ? gltfAnimation.name : 'animation_' + animationIndex, duration, inputs, outputs, curves);\n};\nconst tempMat = new Mat4();\nconst tempVec = new Vec3();\nconst createNode = (gltfNode, nodeIndex) => {\n\tconst entity = new GraphNode();\n\tif (gltfNode.hasOwnProperty('name') && gltfNode.name.length > 0) {\n\t\tentity.name = gltfNode.name;\n\t} else {\n\t\tentity.name = 'node_' + nodeIndex;\n\t}\n\tif (gltfNode.hasOwnProperty('matrix')) {\n\t\ttempMat.data.set(gltfNode.matrix);\n\t\ttempMat.getTranslation(tempVec);\n\t\tentity.setLocalPosition(tempVec);\n\t\ttempMat.getEulerAngles(tempVec);\n\t\tentity.setLocalEulerAngles(tempVec);\n\t\ttempMat.getScale(tempVec);\n\t\tentity.setLocalScale(tempVec);\n\t}\n\tif (gltfNode.hasOwnProperty('rotation')) {\n\t\tconst r = gltfNode.rotation;\n\t\tentity.setLocalRotation(r[0], r[1], r[2], r[3]);\n\t}\n\tif (gltfNode.hasOwnProperty('translation')) {\n\t\tconst t = gltfNode.translation;\n\t\tentity.setLocalPosition(t[0], t[1], t[2]);\n\t}\n\tif (gltfNode.hasOwnProperty('scale')) {\n\t\tconst s = gltfNode.scale;\n\t\tentity.setLocalScale(s[0], s[1], s[2]);\n\t}\n\treturn entity;\n};\nconst createCamera = (gltfCamera, node) => {\n\tconst projection = gltfCamera.type === 'orthographic' ? PROJECTION_ORTHOGRAPHIC : PROJECTION_PERSPECTIVE;\n\tconst gltfProperties = projection === PROJECTION_ORTHOGRAPHIC ? gltfCamera.orthographic : gltfCamera.perspective;\n\tconst componentData = {\n\t\tenabled: false,\n\t\tprojection: projection,\n\t\tnearClip: gltfProperties.znear,\n\t\taspectRatioMode: ASPECT_AUTO\n\t};\n\tif (gltfProperties.zfar) {\n\t\tcomponentData.farClip = gltfProperties.zfar;\n\t}\n\tif (projection === PROJECTION_ORTHOGRAPHIC) {\n\t\tcomponentData.orthoHeight = 0.5 * gltfProperties.ymag;\n\t\tif (gltfProperties.ymag) {\n\t\t\tcomponentData.aspectRatioMode = ASPECT_MANUAL;\n\t\t\tcomponentData.aspectRatio = gltfProperties.xmag / gltfProperties.ymag;\n\t\t}\n\t} else {\n\t\tcomponentData.fov = gltfProperties.yfov * math.RAD_TO_DEG;\n\t\tif (gltfProperties.aspectRatio) {\n\t\t\tcomponentData.aspectRatioMode = ASPECT_MANUAL;\n\t\t\tcomponentData.aspectRatio = gltfProperties.aspectRatio;\n\t\t}\n\t}\n\tconst cameraEntity = new Entity(gltfCamera.name);\n\tcameraEntity.addComponent('camera', componentData);\n\treturn cameraEntity;\n};\nconst createLight = (gltfLight, node) => {\n\tconst lightProps = {\n\t\tenabled: false,\n\t\ttype: gltfLight.type === 'point' ? 'omni' : gltfLight.type,\n\t\tcolor: gltfLight.hasOwnProperty('color') ? new Color(gltfLight.color) : Color.WHITE,\n\t\trange: gltfLight.hasOwnProperty('range') ? gltfLight.range : 9999,\n\t\tfalloffMode: LIGHTFALLOFF_INVERSESQUARED,\n\t\tintensity: gltfLight.hasOwnProperty('intensity') ? math.clamp(gltfLight.intensity, 0, 2) : 1\n\t};\n\tif (gltfLight.hasOwnProperty('spot')) {\n\t\tlightProps.innerConeAngle = gltfLight.spot.hasOwnProperty('innerConeAngle') ? gltfLight.spot.innerConeAngle * math.RAD_TO_DEG : 0;\n\t\tlightProps.outerConeAngle = gltfLight.spot.hasOwnProperty('outerConeAngle') ? gltfLight.spot.outerConeAngle * math.RAD_TO_DEG : Math.PI / 4;\n\t}\n\tif (gltfLight.hasOwnProperty(\"intensity\")) {\n\t\tlightProps.luminance = gltfLight.intensity * Light.getLightUnitConversion(lightTypes[lightProps.type], lightProps.outerConeAngle, lightProps.innerConeAngle);\n\t}\n\tconst lightEntity = new Entity(node.name);\n\tlightEntity.rotateLocal(90, 0, 0);\n\tlightEntity.addComponent('light', lightProps);\n\treturn lightEntity;\n};\nconst createSkins = (device, gltf, nodes, bufferViews) => {\n\tif (!gltf.hasOwnProperty('skins') || gltf.skins.length === 0) {\n\t\treturn [];\n\t}\n\tconst glbSkins = new Map();\n\treturn gltf.skins.map(gltfSkin => {\n\t\treturn createSkin(device, gltfSkin, gltf.accessors, bufferViews, nodes, glbSkins);\n\t});\n};\nconst createMeshes = (device, gltf, bufferViews, flipV, options) => {\n\tvar _gltf$meshes, _gltf$accessors, _gltf$bufferViews;\n\tconst vertexBufferDict = {};\n\tconst meshVariants = {};\n\tconst meshDefaultMaterials = {};\n\tconst promises = [];\n\tconst valid = !options.skipMeshes && (gltf == null || (_gltf$meshes = gltf.meshes) == null ? void 0 : _gltf$meshes.length) && (gltf == null || (_gltf$accessors = gltf.accessors) == null ? void 0 : _gltf$accessors.length) && (gltf == null || (_gltf$bufferViews = gltf.bufferViews) == null ? void 0 : _gltf$bufferViews.length);\n\tconst meshes = valid ? gltf.meshes.map(gltfMesh => {\n\t\treturn createMesh(device, gltfMesh, gltf.accessors, bufferViews, flipV, vertexBufferDict, meshVariants, meshDefaultMaterials, options, promises);\n\t}) : [];\n\treturn {\n\t\tmeshes,\n\t\tmeshVariants,\n\t\tmeshDefaultMaterials,\n\t\tpromises\n\t};\n};\nconst createMaterials = (gltf, textures, options, flipV) => {\n\tvar _options$material, _options$material$pro, _options$material2, _options$material3;\n\tif (!gltf.hasOwnProperty('materials') || gltf.materials.length === 0) {\n\t\treturn [];\n\t}\n\tconst preprocess = options == null || (_options$material = options.material) == null ? void 0 : _options$material.preprocess;\n\tconst process = (_options$material$pro = options == null || (_options$material2 = options.material) == null ? void 0 : _options$material2.process) != null ? _options$material$pro : createMaterial;\n\tconst postprocess = options == null || (_options$material3 = options.material) == null ? void 0 : _options$material3.postprocess;\n\treturn gltf.materials.map(gltfMaterial => {\n\t\tif (preprocess) {\n\t\t\tpreprocess(gltfMaterial);\n\t\t}\n\t\tconst material = process(gltfMaterial, textures, flipV);\n\t\tif (postprocess) {\n\t\t\tpostprocess(gltfMaterial, material);\n\t\t}\n\t\treturn material;\n\t});\n};\nconst createVariants = gltf => {\n\tif (!gltf.hasOwnProperty(\"extensions\") || !gltf.extensions.hasOwnProperty(\"KHR_materials_variants\")) return null;\n\tconst data = gltf.extensions.KHR_materials_variants.variants;\n\tconst variants = {};\n\tfor (let i = 0; i < data.length; i++) {\n\t\tvariants[data[i].name] = i;\n\t}\n\treturn variants;\n};\nconst createAnimations = (gltf, nodes, bufferViews, options) => {\n\tvar _options$animation, _options$animation2;\n\tif (!gltf.hasOwnProperty('animations') || gltf.animations.length === 0) {\n\t\treturn [];\n\t}\n\tconst preprocess = options == null || (_options$animation = options.animation) == null ? void 0 : _options$animation.preprocess;\n\tconst postprocess = options == null || (_options$animation2 = options.animation) == null ? void 0 : _options$animation2.postprocess;\n\treturn gltf.animations.map((gltfAnimation, index) => {\n\t\tif (preprocess) {\n\t\t\tpreprocess(gltfAnimation);\n\t\t}\n\t\tconst animation = createAnimation(gltfAnimation, index, gltf.accessors, bufferViews, nodes, gltf.meshes, gltf.nodes);\n\t\tif (postprocess) {\n\t\t\tpostprocess(gltfAnimation, animation);\n\t\t}\n\t\treturn animation;\n\t});\n};\nconst createNodes = (gltf, options) => {\n\tvar _options$node, _options$node$process, _options$node2, _options$node3;\n\tif (!gltf.hasOwnProperty('nodes') || gltf.nodes.length === 0) {\n\t\treturn [];\n\t}\n\tconst preprocess = options == null || (_options$node = options.node) == null ? void 0 : _options$node.preprocess;\n\tconst process = (_options$node$process = options == null || (_options$node2 = options.node) == null ? void 0 : _options$node2.process) != null ? _options$node$process : createNode;\n\tconst postprocess = options == null || (_options$node3 = options.node) == null ? void 0 : _options$node3.postprocess;\n\tconst nodes = gltf.nodes.map((gltfNode, index) => {\n\t\tif (preprocess) {\n\t\t\tpreprocess(gltfNode);\n\t\t}\n\t\tconst node = process(gltfNode, index);\n\t\tif (postprocess) {\n\t\t\tpostprocess(gltfNode, node);\n\t\t}\n\t\treturn node;\n\t});\n\tfor (let i = 0; i < gltf.nodes.length; ++i) {\n\t\tconst gltfNode = gltf.nodes[i];\n\t\tif (gltfNode.hasOwnProperty('children')) {\n\t\t\tconst parent = nodes[i];\n\t\t\tconst uniqueNames = {};\n\t\t\tfor (let j = 0; j < gltfNode.children.length; ++j) {\n\t\t\t\tconst child = nodes[gltfNode.children[j]];\n\t\t\t\tif (!child.parent) {\n\t\t\t\t\tif (uniqueNames.hasOwnProperty(child.name)) {\n\t\t\t\t\t\tchild.name += uniqueNames[child.name]++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tuniqueNames[child.name] = 1;\n\t\t\t\t\t}\n\t\t\t\t\tparent.addChild(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nodes;\n};\nconst createScenes = (gltf, nodes) => {\n\tvar _gltf$scenes$0$nodes;\n\tconst scenes = [];\n\tconst count = gltf.scenes.length;\n\tif (count === 1 && ((_gltf$scenes$0$nodes = gltf.scenes[0].nodes) == null ? void 0 : _gltf$scenes$0$nodes.length) === 1) {\n\t\tconst nodeIndex = gltf.scenes[0].nodes[0];\n\t\tscenes.push(nodes[nodeIndex]);\n\t} else {\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst scene = gltf.scenes[i];\n\t\t\tif (scene.nodes) {\n\t\t\t\tconst sceneRoot = new GraphNode(scene.name);\n\t\t\t\tfor (let n = 0; n < scene.nodes.length; n++) {\n\t\t\t\t\tconst childNode = nodes[scene.nodes[n]];\n\t\t\t\t\tsceneRoot.addChild(childNode);\n\t\t\t\t}\n\t\t\t\tscenes.push(sceneRoot);\n\t\t\t}\n\t\t}\n\t}\n\treturn scenes;\n};\nconst createCameras = (gltf, nodes, options) => {\n\tlet cameras = null;\n\tif (gltf.hasOwnProperty('nodes') && gltf.hasOwnProperty('cameras') && gltf.cameras.length > 0) {\n\t\tvar _options$camera, _options$camera$proce, _options$camera2, _options$camera3;\n\t\tconst preprocess = options == null || (_options$camera = options.camera) == null ? void 0 : _options$camera.preprocess;\n\t\tconst process = (_options$camera$proce = options == null || (_options$camera2 = options.camera) == null ? void 0 : _options$camera2.process) != null ? _options$camera$proce : createCamera;\n\t\tconst postprocess = options == null || (_options$camera3 = options.camera) == null ? void 0 : _options$camera3.postprocess;\n\t\tgltf.nodes.forEach((gltfNode, nodeIndex) => {\n\t\t\tif (gltfNode.hasOwnProperty('camera')) {\n\t\t\t\tconst gltfCamera = gltf.cameras[gltfNode.camera];\n\t\t\t\tif (gltfCamera) {\n\t\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfCamera);\n\t\t\t\t\t}\n\t\t\t\t\tconst camera = process(gltfCamera, nodes[nodeIndex]);\n\t\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpostprocess(gltfCamera, camera);\n\t\t\t\t\t}\n\t\t\t\t\tif (camera) {\n\t\t\t\t\t\tif (!cameras) cameras = new Map();\n\t\t\t\t\t\tcameras.set(gltfNode, camera);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn cameras;\n};\nconst createLights = (gltf, nodes, options) => {\n\tlet lights = null;\n\tif (gltf.hasOwnProperty('nodes') && gltf.hasOwnProperty('extensions') && gltf.extensions.hasOwnProperty('KHR_lights_punctual') && gltf.extensions.KHR_lights_punctual.hasOwnProperty('lights')) {\n\t\tconst gltfLights = gltf.extensions.KHR_lights_punctual.lights;\n\t\tif (gltfLights.length) {\n\t\t\tvar _options$light, _options$light$proces, _options$light2, _options$light3;\n\t\t\tconst preprocess = options == null || (_options$light = options.light) == null ? void 0 : _options$light.preprocess;\n\t\t\tconst process = (_options$light$proces = options == null || (_options$light2 = options.light) == null ? void 0 : _options$light2.process) != null ? _options$light$proces : createLight;\n\t\t\tconst postprocess = options == null || (_options$light3 = options.light) == null ? void 0 : _options$light3.postprocess;\n\t\t\tgltf.nodes.forEach((gltfNode, nodeIndex) => {\n\t\t\t\tif (gltfNode.hasOwnProperty('extensions') && gltfNode.extensions.hasOwnProperty('KHR_lights_punctual') && gltfNode.extensions.KHR_lights_punctual.hasOwnProperty('light')) {\n\t\t\t\t\tconst lightIndex = gltfNode.extensions.KHR_lights_punctual.light;\n\t\t\t\t\tconst gltfLight = gltfLights[lightIndex];\n\t\t\t\t\tif (gltfLight) {\n\t\t\t\t\t\tif (preprocess) {\n\t\t\t\t\t\t\tpreprocess(gltfLight);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst light = process(gltfLight, nodes[nodeIndex]);\n\t\t\t\t\t\tif (postprocess) {\n\t\t\t\t\t\t\tpostprocess(gltfLight, light);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (light) {\n\t\t\t\t\t\t\tif (!lights) lights = new Map();\n\t\t\t\t\t\t\tlights.set(gltfNode, light);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn lights;\n};\nconst linkSkins = (gltf, renders, skins) => {\n\tgltf.nodes.forEach(gltfNode => {\n\t\tif (gltfNode.hasOwnProperty('mesh') && gltfNode.hasOwnProperty('skin')) {\n\t\t\tconst meshGroup = renders[gltfNode.mesh].meshes;\n\t\t\tmeshGroup.forEach(mesh => {\n\t\t\t\tmesh.skin = skins[gltfNode.skin];\n\t\t\t});\n\t\t}\n\t});\n};\nconst createResources = async (device, gltf, bufferViews, textures, options) => {\n\tvar _options$global, _options$global2;\n\tconst preprocess = options == null || (_options$global = options.global) == null ? void 0 : _options$global.preprocess;\n\tconst postprocess = options == null || (_options$global2 = options.global) == null ? void 0 : _options$global2.postprocess;\n\tif (preprocess) {\n\t\tpreprocess(gltf);\n\t}\n\tconst flipV = gltf.asset && gltf.asset.generator === 'PlayCanvas';\n\tconst nodes = createNodes(gltf, options);\n\tconst scenes = createScenes(gltf, nodes);\n\tconst lights = createLights(gltf, nodes, options);\n\tconst cameras = createCameras(gltf, nodes, options);\n\tconst variants = createVariants(gltf);\n\tconst bufferViewData = await Promise.all(bufferViews);\n\tconst {\n\t\tmeshes,\n\t\tmeshVariants,\n\t\tmeshDefaultMaterials,\n\t\tpromises\n\t} = createMeshes(device, gltf, bufferViewData, flipV, options);\n\tconst animations = createAnimations(gltf, nodes, bufferViewData, options);\n\tconst textureAssets = await Promise.all(textures);\n\tconst textureInstances = textureAssets.map(t => t.resource);\n\tconst materials = createMaterials(gltf, textureInstances, options, flipV);\n\tconst skins = createSkins(device, gltf, nodes, bufferViewData);\n\tconst renders = [];\n\tfor (let i = 0; i < meshes.length; i++) {\n\t\trenders[i] = new Render();\n\t\trenders[i].meshes = meshes[i];\n\t}\n\tlinkSkins(gltf, renders, skins);\n\tconst result = new GlbResources();\n\tresult.gltf = gltf;\n\tresult.nodes = nodes;\n\tresult.scenes = scenes;\n\tresult.animations = animations;\n\tresult.textures = textureAssets;\n\tresult.materials = materials;\n\tresult.variants = variants;\n\tresult.meshVariants = meshVariants;\n\tresult.meshDefaultMaterials = meshDefaultMaterials;\n\tresult.renders = renders;\n\tresult.skins = skins;\n\tresult.lights = lights;\n\tresult.cameras = cameras;\n\tif (postprocess) {\n\t\tpostprocess(gltf, result);\n\t}\n\tawait Promise.all(promises);\n\treturn result;\n};\nconst applySampler = (texture, gltfSampler) => {\n\tconst getFilter = (filter, defaultValue) => {\n\t\tswitch (filter) {\n\t\t\tcase 9728:\n\t\t\t\treturn FILTER_NEAREST;\n\t\t\tcase 9729:\n\t\t\t\treturn FILTER_LINEAR;\n\t\t\tcase 9984:\n\t\t\t\treturn FILTER_NEAREST_MIPMAP_NEAREST;\n\t\t\tcase 9985:\n\t\t\t\treturn FILTER_LINEAR_MIPMAP_NEAREST;\n\t\t\tcase 9986:\n\t\t\t\treturn FILTER_NEAREST_MIPMAP_LINEAR;\n\t\t\tcase 9987:\n\t\t\t\treturn FILTER_LINEAR_MIPMAP_LINEAR;\n\t\t\tdefault:\n\t\t\t\treturn defaultValue;\n\t\t}\n\t};\n\tconst getWrap = (wrap, defaultValue) => {\n\t\tswitch (wrap) {\n\t\t\tcase 33071:\n\t\t\t\treturn ADDRESS_CLAMP_TO_EDGE;\n\t\t\tcase 33648:\n\t\t\t\treturn ADDRESS_MIRRORED_REPEAT;\n\t\t\tcase 10497:\n\t\t\t\treturn ADDRESS_REPEAT;\n\t\t\tdefault:\n\t\t\t\treturn defaultValue;\n\t\t}\n\t};\n\tif (texture) {\n\t\tvar _gltfSampler;\n\t\tgltfSampler = (_gltfSampler = gltfSampler) != null ? _gltfSampler : {};\n\t\ttexture.minFilter = getFilter(gltfSampler.minFilter, FILTER_LINEAR_MIPMAP_LINEAR);\n\t\ttexture.magFilter = getFilter(gltfSampler.magFilter, FILTER_LINEAR);\n\t\ttexture.addressU = getWrap(gltfSampler.wrapS, ADDRESS_REPEAT);\n\t\ttexture.addressV = getWrap(gltfSampler.wrapT, ADDRESS_REPEAT);\n\t}\n};\nlet gltfTextureUniqueId = 0;\nconst createImages = (gltf, bufferViews, urlBase, registry, options) => {\n\tvar _options$image, _options$image2, _options$image3;\n\tif (!gltf.images || gltf.images.length === 0) {\n\t\treturn [];\n\t}\n\tconst preprocess = options == null || (_options$image = options.image) == null ? void 0 : _options$image.preprocess;\n\tconst processAsync = options == null || (_options$image2 = options.image) == null ? void 0 : _options$image2.processAsync;\n\tconst postprocess = options == null || (_options$image3 = options.image) == null ? void 0 : _options$image3.postprocess;\n\tconst mimeTypeFileExtensions = {\n\t\t'image/png': 'png',\n\t\t'image/jpeg': 'jpg',\n\t\t'image/basis': 'basis',\n\t\t'image/ktx': 'ktx',\n\t\t'image/ktx2': 'ktx2',\n\t\t'image/vnd-ms.dds': 'dds'\n\t};\n\tconst loadTexture = (gltfImage, url, bufferView, mimeType, options) => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst continuation = bufferViewData => {\n\t\t\t\tconst name = (gltfImage.name || 'gltf-texture') + '-' + gltfTextureUniqueId++;\n\t\t\t\tconst file = {\n\t\t\t\t\turl: url || name\n\t\t\t\t};\n\t\t\t\tif (bufferViewData) {\n\t\t\t\t\tfile.contents = bufferViewData.slice(0).buffer;\n\t\t\t\t}\n\t\t\t\tif (mimeType) {\n\t\t\t\t\tconst extension = mimeTypeFileExtensions[mimeType];\n\t\t\t\t\tif (extension) {\n\t\t\t\t\t\tfile.filename = file.url + '.' + extension;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst asset = new Asset(name, 'texture', file, null, options);\n\t\t\t\tasset.on('load', asset => resolve(asset));\n\t\t\t\tasset.on('error', err => reject(err));\n\t\t\t\tregistry.add(asset);\n\t\t\t\tregistry.load(asset);\n\t\t\t};\n\t\t\tif (bufferView) {\n\t\t\t\tbufferView.then(bufferViewData => continuation(bufferViewData));\n\t\t\t} else {\n\t\t\t\tcontinuation(null);\n\t\t\t}\n\t\t});\n\t};\n\treturn gltf.images.map((gltfImage, i) => {\n\t\tif (preprocess) {\n\t\t\tpreprocess(gltfImage);\n\t\t}\n\t\tlet promise;\n\t\tif (processAsync) {\n\t\t\tpromise = new Promise((resolve, reject) => {\n\t\t\t\tprocessAsync(gltfImage, (err, textureAsset) => {\n\t\t\t\t\tif (err) reject(err);else resolve(textureAsset);\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tpromise = new Promise(resolve => {\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\t}\n\t\tpromise = promise.then(textureAsset => {\n\t\t\tif (textureAsset) {\n\t\t\t\treturn textureAsset;\n\t\t\t} else if (gltfImage.hasOwnProperty('uri')) {\n\t\t\t\tif (isDataURI(gltfImage.uri)) {\n\t\t\t\t\treturn loadTexture(gltfImage, gltfImage.uri, null, getDataURIMimeType(gltfImage.uri), null);\n\t\t\t\t}\n\t\t\t\treturn loadTexture(gltfImage, ABSOLUTE_URL.test(gltfImage.uri) ? gltfImage.uri : path.join(urlBase, gltfImage.uri), null, null, {\n\t\t\t\t\tcrossOrigin: 'anonymous'\n\t\t\t\t});\n\t\t\t} else if (gltfImage.hasOwnProperty('bufferView') && gltfImage.hasOwnProperty('mimeType')) {\n\t\t\t\treturn loadTexture(gltfImage, null, bufferViews[gltfImage.bufferView], gltfImage.mimeType, null);\n\t\t\t}\n\t\t\treturn Promise.reject(new Error(`Invalid image found in gltf (neither uri or bufferView found). index=${i}`));\n\t\t});\n\t\tif (postprocess) {\n\t\t\tpromise = promise.then(textureAsset => {\n\t\t\t\tpostprocess(gltfImage, textureAsset);\n\t\t\t\treturn textureAsset;\n\t\t\t});\n\t\t}\n\t\treturn promise;\n\t});\n};\nconst createTextures = (gltf, images, options) => {\n\tvar _gltf$images, _gltf$textures, _options$texture, _options$texture2, _options$texture3;\n\tif (!(gltf != null && (_gltf$images = gltf.images) != null && _gltf$images.length) || !(gltf != null && (_gltf$textures = gltf.textures) != null && _gltf$textures.length)) {\n\t\treturn [];\n\t}\n\tconst preprocess = options == null || (_options$texture = options.texture) == null ? void 0 : _options$texture.preprocess;\n\tconst processAsync = options == null || (_options$texture2 = options.texture) == null ? void 0 : _options$texture2.processAsync;\n\tconst postprocess = options == null || (_options$texture3 = options.texture) == null ? void 0 : _options$texture3.postprocess;\n\tconst seenImages = new Set();\n\treturn gltf.textures.map(gltfTexture => {\n\t\tif (preprocess) {\n\t\t\tpreprocess(gltfTexture);\n\t\t}\n\t\tlet promise;\n\t\tif (processAsync) {\n\t\t\tpromise = new Promise((resolve, reject) => {\n\t\t\t\tprocessAsync(gltfTexture, gltf.images, (err, gltfImageIndex) => {\n\t\t\t\t\tif (err) reject(err);else resolve(gltfImageIndex);\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tpromise = new Promise(resolve => {\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\t}\n\t\tpromise = promise.then(gltfImageIndex => {\n\t\t\tvar _ref, _ref2, _gltfImageIndex, _gltfTexture$extensio, _gltfTexture$extensio2;\n\t\t\tgltfImageIndex = (_ref = (_ref2 = (_gltfImageIndex = gltfImageIndex) != null ? _gltfImageIndex : gltfTexture == null || (_gltfTexture$extensio = gltfTexture.extensions) == null || (_gltfTexture$extensio = _gltfTexture$extensio.KHR_texture_basisu) == null ? void 0 : _gltfTexture$extensio.source) != null ? _ref2 : gltfTexture == null || (_gltfTexture$extensio2 = gltfTexture.extensions) == null || (_gltfTexture$extensio2 = _gltfTexture$extensio2.EXT_texture_webp) == null ? void 0 : _gltfTexture$extensio2.source) != null ? _ref : gltfTexture.source;\n\t\t\tconst cloneAsset = seenImages.has(gltfImageIndex);\n\t\t\tseenImages.add(gltfImageIndex);\n\t\t\treturn images[gltfImageIndex].then(imageAsset => {\n\t\t\t\tvar _gltf$samplers;\n\t\t\t\tconst asset = cloneAsset ? cloneTextureAsset(imageAsset) : imageAsset;\n\t\t\t\tapplySampler(asset.resource, ((_gltf$samplers = gltf.samplers) != null ? _gltf$samplers : [])[gltfTexture.sampler]);\n\t\t\t\treturn asset;\n\t\t\t});\n\t\t});\n\t\tif (postprocess) {\n\t\t\tpromise = promise.then(textureAsset => {\n\t\t\t\tpostprocess(gltfTexture, textureAsset);\n\t\t\t\treturn textureAsset;\n\t\t\t});\n\t\t}\n\t\treturn promise;\n\t});\n};\nconst loadBuffers = (gltf, binaryChunk, urlBase, options) => {\n\tvar _options$buffer, _options$buffer2, _options$buffer3;\n\tif (!gltf.buffers || gltf.buffers.length === 0) {\n\t\treturn [];\n\t}\n\tconst preprocess = options == null || (_options$buffer = options.buffer) == null ? void 0 : _options$buffer.preprocess;\n\tconst processAsync = options == null || (_options$buffer2 = options.buffer) == null ? void 0 : _options$buffer2.processAsync;\n\tconst postprocess = options == null || (_options$buffer3 = options.buffer) == null ? void 0 : _options$buffer3.postprocess;\n\treturn gltf.buffers.map((gltfBuffer, i) => {\n\t\tif (preprocess) {\n\t\t\tpreprocess(gltfBuffer);\n\t\t}\n\t\tlet promise;\n\t\tif (processAsync) {\n\t\t\tpromise = new Promise((resolve, reject) => {\n\t\t\t\tprocessAsync(gltfBuffer, (err, arrayBuffer) => {\n\t\t\t\t\tif (err) reject(err);else resolve(arrayBuffer);\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tpromise = new Promise(resolve => {\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\t}\n\t\tpromise = promise.then(arrayBuffer => {\n\t\t\tif (arrayBuffer) {\n\t\t\t\treturn arrayBuffer;\n\t\t\t} else if (gltfBuffer.hasOwnProperty('uri')) {\n\t\t\t\tif (isDataURI(gltfBuffer.uri)) {\n\t\t\t\t\tconst byteString = atob(gltfBuffer.uri.split(',')[1]);\n\t\t\t\t\tconst binaryArray = new Uint8Array(byteString.length);\n\t\t\t\t\tfor (let j = 0; j < byteString.length; j++) {\n\t\t\t\t\t\tbinaryArray[j] = byteString.charCodeAt(j);\n\t\t\t\t\t}\n\t\t\t\t\treturn binaryArray;\n\t\t\t\t}\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thttp.get(ABSOLUTE_URL.test(gltfBuffer.uri) ? gltfBuffer.uri : path.join(urlBase, gltfBuffer.uri), {\n\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\tresponseType: 'arraybuffer',\n\t\t\t\t\t\tretry: false\n\t\t\t\t\t}, (err, result) => {\n\t\t\t\t\t\tif (err) reject(err);else resolve(new Uint8Array(result));\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn binaryChunk;\n\t\t});\n\t\tif (postprocess) {\n\t\t\tpromise = promise.then(buffer => {\n\t\t\t\tpostprocess(gltf.buffers[i], buffer);\n\t\t\t\treturn buffer;\n\t\t\t});\n\t\t}\n\t\treturn promise;\n\t});\n};\nconst parseGltf = (gltfChunk, callback) => {\n\tconst decodeBinaryUtf8 = array => {\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(array);\n\t\t}\n\t\tlet str = '';\n\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\tstr += String.fromCharCode(array[i]);\n\t\t}\n\t\treturn decodeURIComponent(escape(str));\n\t};\n\tconst gltf = JSON.parse(decodeBinaryUtf8(gltfChunk));\n\tif (gltf.asset && gltf.asset.version && parseFloat(gltf.asset.version) < 2) {\n\t\tcallback(`Invalid gltf version. Expected version 2.0 or above but found version '${gltf.asset.version}'.`);\n\t\treturn;\n\t}\n\tcallback(null, gltf);\n};\nconst parseGlb = (glbData, callback) => {\n\tconst data = glbData instanceof ArrayBuffer ? new DataView(glbData) : new DataView(glbData.buffer, glbData.byteOffset, glbData.byteLength);\n\tconst magic = data.getUint32(0, true);\n\tconst version = data.getUint32(4, true);\n\tconst length = data.getUint32(8, true);\n\tif (magic !== 0x46546C67) {\n\t\tcallback('Invalid magic number found in glb header. Expected 0x46546C67, found 0x' + magic.toString(16));\n\t\treturn;\n\t}\n\tif (version !== 2) {\n\t\tcallback('Invalid version number found in glb header. Expected 2, found ' + version);\n\t\treturn;\n\t}\n\tif (length <= 0 || length > data.byteLength) {\n\t\tcallback('Invalid length found in glb header. Found ' + length);\n\t\treturn;\n\t}\n\tconst chunks = [];\n\tlet offset = 12;\n\twhile (offset < length) {\n\t\tconst chunkLength = data.getUint32(offset, true);\n\t\tif (offset + chunkLength + 8 > data.byteLength) {\n\t\t\tcallback(`Invalid chunk length found in glb. Found ${chunkLength}`);\n\t\t}\n\t\tconst chunkType = data.getUint32(offset + 4, true);\n\t\tconst chunkData = new Uint8Array(data.buffer, data.byteOffset + offset + 8, chunkLength);\n\t\tchunks.push({\n\t\t\tlength: chunkLength,\n\t\t\ttype: chunkType,\n\t\t\tdata: chunkData\n\t\t});\n\t\toffset += chunkLength + 8;\n\t}\n\tif (chunks.length !== 1 && chunks.length !== 2) {\n\t\tcallback('Invalid number of chunks found in glb file.');\n\t\treturn;\n\t}\n\tif (chunks[0].type !== 0x4E4F534A) {\n\t\tcallback(`Invalid chunk type found in glb file. Expected 0x4E4F534A, found 0x${chunks[0].type.toString(16)}`);\n\t\treturn;\n\t}\n\tif (chunks.length > 1 && chunks[1].type !== 0x004E4942) {\n\t\tcallback(`Invalid chunk type found in glb file. Expected 0x004E4942, found 0x${chunks[1].type.toString(16)}`);\n\t\treturn;\n\t}\n\tcallback(null, {\n\t\tgltfChunk: chunks[0].data,\n\t\tbinaryChunk: chunks.length === 2 ? chunks[1].data : null\n\t});\n};\nconst parseChunk = (filename, data, callback) => {\n\tconst hasGlbHeader = () => {\n\t\tconst u8 = new Uint8Array(data);\n\t\treturn u8[0] === 103 && u8[1] === 108 && u8[2] === 84 && u8[3] === 70;\n\t};\n\tif (filename && filename.toLowerCase().endsWith('.glb') || hasGlbHeader()) {\n\t\tparseGlb(data, callback);\n\t} else {\n\t\tcallback(null, {\n\t\t\tgltfChunk: data,\n\t\t\tbinaryChunk: null\n\t\t});\n\t}\n};\nconst createBufferViews = (gltf, buffers, options) => {\n\tvar _options$bufferView, _options$bufferView2, _options$bufferView3, _gltf$bufferViews2;\n\tconst result = [];\n\tconst preprocess = options == null || (_options$bufferView = options.bufferView) == null ? void 0 : _options$bufferView.preprocess;\n\tconst processAsync = options == null || (_options$bufferView2 = options.bufferView) == null ? void 0 : _options$bufferView2.processAsync;\n\tconst postprocess = options == null || (_options$bufferView3 = options.bufferView) == null ? void 0 : _options$bufferView3.postprocess;\n\tif (!((_gltf$bufferViews2 = gltf.bufferViews) != null && _gltf$bufferViews2.length)) {\n\t\treturn result;\n\t}\n\tfor (let i = 0; i < gltf.bufferViews.length; ++i) {\n\t\tconst gltfBufferView = gltf.bufferViews[i];\n\t\tif (preprocess) {\n\t\t\tpreprocess(gltfBufferView);\n\t\t}\n\t\tlet promise;\n\t\tif (processAsync) {\n\t\t\tpromise = new Promise((resolve, reject) => {\n\t\t\t\tprocessAsync(gltfBufferView, buffers, (err, result) => {\n\t\t\t\t\tif (err) reject(err);else resolve(result);\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tpromise = new Promise(resolve => {\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\t}\n\t\tpromise = promise.then(buffer => {\n\t\t\tif (buffer) {\n\t\t\t\treturn buffer;\n\t\t\t}\n\t\t\treturn buffers[gltfBufferView.buffer].then(buffer => {\n\t\t\t\treturn new Uint8Array(buffer.buffer, buffer.byteOffset + (gltfBufferView.byteOffset || 0), gltfBufferView.byteLength);\n\t\t\t});\n\t\t});\n\t\tif (gltfBufferView.hasOwnProperty('byteStride')) {\n\t\t\tpromise = promise.then(typedArray => {\n\t\t\t\ttypedArray.byteStride = gltfBufferView.byteStride;\n\t\t\t\treturn typedArray;\n\t\t\t});\n\t\t}\n\t\tif (postprocess) {\n\t\t\tpromise = promise.then(typedArray => {\n\t\t\t\tpostprocess(gltfBufferView, typedArray);\n\t\t\t\treturn typedArray;\n\t\t\t});\n\t\t}\n\t\tresult.push(promise);\n\t}\n\treturn result;\n};\nclass GlbParser {\n\tstatic parse(filename, urlBase, data, device, registry, options, callback) {\n\t\tparseChunk(filename, data, (err, chunks) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tparseGltf(chunks.gltfChunk, (err, gltf) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tcallback(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst buffers = loadBuffers(gltf, chunks.binaryChunk, urlBase, options);\n\t\t\t\tconst bufferViews = createBufferViews(gltf, buffers, options);\n\t\t\t\tconst images = createImages(gltf, bufferViews, urlBase, registry, options);\n\t\t\t\tconst textures = createTextures(gltf, images, options);\n\t\t\t\tcreateResources(device, gltf, bufferViews, textures, options).then(result => callback(null, result)).catch(err => callback(err));\n\t\t\t});\n\t\t});\n\t}\n\tstatic createDefaultMaterial() {\n\t\treturn createMaterial({\n\t\t\tname: 'defaultGlbMaterial'\n\t\t}, []);\n\t}\n}\n\nexport { GlbParser };\n", "import { path } from '../../core/path.js';\nimport { Quat } from '../../core/math/quat.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { Http, http } from '../../platform/net/http.js';\nimport { Animation, Node, Key } from '../../scene/animation/animation.js';\nimport { AnimEvents } from '../anim/evaluator/anim-events.js';\nimport { GlbParser } from '../parsers/glb-parser.js';\nimport { ResourceHandler } from './handler.js';\n\nclass AnimationHandler extends ResourceHandler {\n\tconstructor(app) {\n\t\tsuper(app, 'animation');\n\t\tthis.device = app.graphicsDevice;\n\t\tthis.assets = app.assets;\n\t}\n\tload(url, callback, asset) {\n\t\tif (typeof url === 'string') {\n\t\t\turl = {\n\t\t\t\tload: url,\n\t\t\t\toriginal: url\n\t\t\t};\n\t\t}\n\t\tconst options = {\n\t\t\tretry: this.maxRetries > 0,\n\t\t\tmaxRetries: this.maxRetries\n\t\t};\n\t\tif (url.load.startsWith('blob:') || url.load.startsWith('data:')) {\n\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t} else {\n\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t}\n\t\t}\n\t\thttp.get(url.load, options, (err, response) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(`Error loading animation resource: ${url.original} [${err}]`);\n\t\t\t} else {\n\t\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\t\tvar _asset$options;\n\t\t\t\t\tGlbParser.parse('filename.glb', '', response, this.device, this.assets, (_asset$options = asset == null ? void 0 : asset.options) != null ? _asset$options : {}, (err, parseResult) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _asset$data;\n\t\t\t\t\t\t\tconst animations = parseResult.animations;\n\t\t\t\t\t\t\tif (asset != null && (_asset$data = asset.data) != null && _asset$data.events) {\n\t\t\t\t\t\t\t\tfor (let i = 0; i < animations.length; i++) {\n\t\t\t\t\t\t\t\t\tanimations[i].events = new AnimEvents(Object.values(asset.data.events));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tparseResult.destroy();\n\t\t\t\t\t\t\tcallback(null, animations);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tcallback(null, this['_parseAnimationV' + response.animation.version](response));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\topen(url, data, asset) {\n\t\treturn data;\n\t}\n\t_parseAnimationV3(data) {\n\t\tconst animData = data.animation;\n\t\tconst anim = new Animation();\n\t\tanim.name = animData.name;\n\t\tanim.duration = animData.duration;\n\t\tfor (let i = 0; i < animData.nodes.length; i++) {\n\t\t\tconst node = new Node();\n\t\t\tconst n = animData.nodes[i];\n\t\t\tnode._name = n.name;\n\t\t\tfor (let j = 0; j < n.keys.length; j++) {\n\t\t\t\tconst k = n.keys[j];\n\t\t\t\tconst t = k.time;\n\t\t\t\tconst p = k.pos;\n\t\t\t\tconst r = k.rot;\n\t\t\t\tconst s = k.scale;\n\t\t\t\tconst pos = new Vec3(p[0], p[1], p[2]);\n\t\t\t\tconst rot = new Quat().setFromEulerAngles(r[0], r[1], r[2]);\n\t\t\t\tconst scl = new Vec3(s[0], s[1], s[2]);\n\t\t\t\tconst key = new Key(t, pos, rot, scl);\n\t\t\t\tnode._keys.push(key);\n\t\t\t}\n\t\t\tanim.addNode(node);\n\t\t}\n\t\treturn anim;\n\t}\n\t_parseAnimationV4(data) {\n\t\tconst animData = data.animation;\n\t\tconst anim = new Animation();\n\t\tanim.name = animData.name;\n\t\tanim.duration = animData.duration;\n\t\tfor (let i = 0; i < animData.nodes.length; i++) {\n\t\t\tconst node = new Node();\n\t\t\tconst n = animData.nodes[i];\n\t\t\tnode._name = n.name;\n\t\t\tconst defPos = n.defaults.p;\n\t\t\tconst defRot = n.defaults.r;\n\t\t\tconst defScl = n.defaults.s;\n\t\t\tfor (let j = 0; j < n.keys.length; j++) {\n\t\t\t\tconst k = n.keys[j];\n\t\t\t\tconst t = k.t;\n\t\t\t\tconst p = defPos ? defPos : k.p;\n\t\t\t\tconst r = defRot ? defRot : k.r;\n\t\t\t\tconst s = defScl ? defScl : k.s;\n\t\t\t\tconst pos = new Vec3(p[0], p[1], p[2]);\n\t\t\t\tconst rot = new Quat().setFromEulerAngles(r[0], r[1], r[2]);\n\t\t\t\tconst scl = new Vec3(s[0], s[1], s[2]);\n\t\t\t\tconst key = new Key(t, pos, rot, scl);\n\t\t\t\tnode._keys.push(key);\n\t\t\t}\n\t\t\tanim.addNode(node);\n\t\t}\n\t\treturn anim;\n\t}\n}\n\nexport { AnimationHandler };\n", "import { path } from '../../core/path.js';\nimport { Http, http } from '../../platform/net/http.js';\nimport { hasAudioContext } from '../../platform/audio/capabilities.js';\nimport { Sound } from '../../platform/sound/sound.js';\nimport { ResourceHandler } from './handler.js';\n\nconst ie = function () {\n\tif (typeof window === 'undefined') {\n\t\treturn false;\n\t}\n\tconst ua = window.navigator.userAgent;\n\tconst msie = ua.indexOf('MSIE ');\n\tif (msie > 0) {\n\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t}\n\tconst trident = ua.indexOf('Trident/');\n\tif (trident > 0) {\n\t\tconst rv = ua.indexOf('rv:');\n\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t}\n\treturn false;\n}();\nconst supportedExtensions = ['.ogg', '.mp3', '.wav', '.mp4a', '.m4a', '.mp4', '.aac', '.opus'];\nclass AudioHandler extends ResourceHandler {\n\tconstructor(app) {\n\t\tsuper(app, 'audio');\n\t\tthis.manager = app.soundManager;\n\t}\n\t_isSupported(url) {\n\t\tconst ext = path.getExtension(url);\n\t\treturn supportedExtensions.indexOf(ext) > -1;\n\t}\n\tload(url, callback) {\n\t\tif (typeof url === 'string') {\n\t\t\turl = {\n\t\t\t\tload: url,\n\t\t\t\toriginal: url\n\t\t\t};\n\t\t}\n\t\tconst success = function success(resource) {\n\t\t\tcallback(null, new Sound(resource));\n\t\t};\n\t\tconst error = function error(err) {\n\t\t\tlet msg = 'Error loading audio url: ' + url.original;\n\t\t\tif (err) {\n\t\t\t\tmsg += ': ' + (err.message || err);\n\t\t\t}\n\t\t\tconsole.warn(msg);\n\t\t\tcallback(msg);\n\t\t};\n\t\tif (this._createSound) {\n\t\t\tif (!this._isSupported(url.original)) {\n\t\t\t\terror(`Audio format for ${url.original} not supported`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._createSound(url.load, success, error);\n\t\t} else {\n\t\t\terror(null);\n\t\t}\n\t}\n\t_createSound(url, success, error) {\n\t\tif (hasAudioContext()) {\n\t\t\tconst manager = this.manager;\n\t\t\tif (!manager.context) {\n\t\t\t\terror('Audio manager has no audio context');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst options = {\n\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t};\n\t\t\tif (url.startsWith('blob:') || url.startsWith('data:')) {\n\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t}\n\t\t\thttp.get(url, options, function (err, response) {\n\t\t\t\tif (err) {\n\t\t\t\t\terror(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmanager.context.decodeAudioData(response, success, error);\n\t\t\t});\n\t\t} else {\n\t\t\tlet audio = null;\n\t\t\ttry {\n\t\t\t\taudio = new Audio();\n\t\t\t} catch (e) {\n\t\t\t\terror('No support for Audio element');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (ie) {\n\t\t\t\tdocument.body.appendChild(audio);\n\t\t\t}\n\t\t\tconst onReady = function onReady() {\n\t\t\t\taudio.removeEventListener('canplaythrough', onReady);\n\t\t\t\tif (ie) {\n\t\t\t\t\tdocument.body.removeChild(audio);\n\t\t\t\t}\n\t\t\t\tsuccess(audio);\n\t\t\t};\n\t\t\taudio.onerror = function () {\n\t\t\t\taudio.onerror = null;\n\t\t\t\tif (ie) {\n\t\t\t\t\tdocument.body.removeChild(audio);\n\t\t\t\t}\n\t\t\t\terror();\n\t\t\t};\n\t\t\taudio.addEventListener('canplaythrough', onReady);\n\t\t\taudio.src = url;\n\t\t}\n\t}\n}\n\nexport { AudioHandler };\n", "import { GraphNode } from '../../scene/graph-node.js';\nimport { MeshInstance } from '../../scene/mesh-instance.js';\nimport { Model } from '../../scene/model.js';\nimport { MorphInstance } from '../../scene/morph-instance.js';\nimport { SkinInstance } from '../../scene/skin-instance.js';\nimport { SkinInstanceCache } from '../../scene/skin-instance-cache.js';\nimport { Entity } from '../entity.js';\nimport { Asset } from '../asset/asset.js';\n\nclass GlbContainerResource {\n\tconstructor(data, asset, assets, defaultMaterial) {\n\t\tconst createAsset = function createAsset(type, resource, index) {\n\t\t\tconst subAsset = GlbContainerResource.createAsset(asset.name, type, resource, index);\n\t\t\tassets.add(subAsset);\n\t\t\treturn subAsset;\n\t\t};\n\t\tconst renders = [];\n\t\tfor (let i = 0; i < data.renders.length; ++i) {\n\t\t\trenders.push(createAsset('render', data.renders[i], i));\n\t\t}\n\t\tconst materials = [];\n\t\tfor (let i = 0; i < data.materials.length; ++i) {\n\t\t\tmaterials.push(createAsset('material', data.materials[i], i));\n\t\t}\n\t\tconst animations = [];\n\t\tfor (let i = 0; i < data.animations.length; ++i) {\n\t\t\tanimations.push(createAsset('animation', data.animations[i], i));\n\t\t}\n\t\tthis.data = data;\n\t\tthis._model = null;\n\t\tthis._assetName = asset.name;\n\t\tthis._assets = assets;\n\t\tthis._defaultMaterial = defaultMaterial;\n\t\tthis.renders = renders;\n\t\tthis.materials = materials;\n\t\tthis.textures = data.textures;\n\t\tthis.animations = animations;\n\t}\n\tget model() {\n\t\tif (!this._model) {\n\t\t\tconst model = GlbContainerResource.createModel(this.data, this._defaultMaterial);\n\t\t\tconst modelAsset = GlbContainerResource.createAsset(this._assetName, 'model', model, 0);\n\t\t\tthis._assets.add(modelAsset);\n\t\t\tthis._model = modelAsset;\n\t\t}\n\t\treturn this._model;\n\t}\n\tstatic createAsset(assetName, type, resource, index) {\n\t\tconst subAsset = new Asset(assetName + '/' + type + '/' + index, type, {\n\t\t\turl: ''\n\t\t});\n\t\tsubAsset.resource = resource;\n\t\tsubAsset.loaded = true;\n\t\treturn subAsset;\n\t}\n\tinstantiateModelEntity(options) {\n\t\tconst entity = new Entity();\n\t\tentity.addComponent('model', Object.assign({\n\t\t\ttype: 'asset',\n\t\t\tasset: this.model\n\t\t}, options));\n\t\treturn entity;\n\t}\n\tinstantiateRenderEntity(options) {\n\t\tconst defaultMaterial = this._defaultMaterial;\n\t\tconst skinnedMeshInstances = [];\n\t\tconst createMeshInstance = function createMeshInstance(root, entity, mesh, materials, meshDefaultMaterials, skins, gltfNode) {\n\t\t\tconst materialIndex = meshDefaultMaterials[mesh.id];\n\t\t\tconst material = materialIndex === undefined ? defaultMaterial : materials[materialIndex];\n\t\t\tconst meshInstance = new MeshInstance(mesh, material);\n\t\t\tif (mesh.morph) {\n\t\t\t\tmeshInstance.morphInstance = new MorphInstance(mesh.morph);\n\t\t\t}\n\t\t\tif (gltfNode.hasOwnProperty('skin')) {\n\t\t\t\tskinnedMeshInstances.push({\n\t\t\t\t\tmeshInstance: meshInstance,\n\t\t\t\t\trootBone: root,\n\t\t\t\t\tentity: entity\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn meshInstance;\n\t\t};\n\t\tconst cloneHierarchy = (root, node, glb) => {\n\t\t\tconst entity = new Entity();\n\t\t\tnode._cloneInternal(entity);\n\t\t\tif (!root) root = entity;\n\t\t\tlet attachedMi = null;\n\t\t\tlet renderAsset = null;\n\t\t\tfor (let i = 0; i < glb.nodes.length; i++) {\n\t\t\t\tconst glbNode = glb.nodes[i];\n\t\t\t\tif (glbNode === node) {\n\t\t\t\t\tconst gltfNode = glb.gltf.nodes[i];\n\t\t\t\t\tif (gltfNode.hasOwnProperty('mesh')) {\n\t\t\t\t\t\tconst meshGroup = glb.renders[gltfNode.mesh].meshes;\n\t\t\t\t\t\trenderAsset = this.renders[gltfNode.mesh];\n\t\t\t\t\t\tfor (let mi = 0; mi < meshGroup.length; mi++) {\n\t\t\t\t\t\t\tconst mesh = meshGroup[mi];\n\t\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\tconst cloneMi = createMeshInstance(root, entity, mesh, glb.materials, glb.meshDefaultMaterials, glb.skins, gltfNode);\n\t\t\t\t\t\t\t\tif (!attachedMi) {\n\t\t\t\t\t\t\t\t\tattachedMi = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tattachedMi.push(cloneMi);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (glb.lights) {\n\t\t\t\t\t\tconst lightEntity = glb.lights.get(gltfNode);\n\t\t\t\t\t\tif (lightEntity) {\n\t\t\t\t\t\t\tentity.addChild(lightEntity.clone());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (glb.cameras) {\n\t\t\t\t\t\tconst cameraEntity = glb.cameras.get(gltfNode);\n\t\t\t\t\t\tif (cameraEntity) {\n\t\t\t\t\t\t\tcameraEntity.camera.system.cloneComponent(cameraEntity, entity);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (attachedMi) {\n\t\t\t\tentity.addComponent('render', Object.assign({\n\t\t\t\t\ttype: 'asset',\n\t\t\t\t\tmeshInstances: attachedMi,\n\t\t\t\t\trootBone: root\n\t\t\t\t}, options));\n\t\t\t\tentity.render.assignAsset(renderAsset);\n\t\t\t}\n\t\t\tconst children = node.children;\n\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\tconst childClone = cloneHierarchy(root, children[i], glb);\n\t\t\t\tentity.addChild(childClone);\n\t\t\t}\n\t\t\treturn entity;\n\t\t};\n\t\tconst sceneClones = [];\n\t\tfor (const scene of this.data.scenes) {\n\t\t\tsceneClones.push(cloneHierarchy(null, scene, this.data));\n\t\t}\n\t\tskinnedMeshInstances.forEach(data => {\n\t\t\tdata.meshInstance.skinInstance = SkinInstanceCache.createCachedSkinInstance(data.meshInstance.mesh.skin, data.rootBone, data.entity);\n\t\t});\n\t\treturn GlbContainerResource.createSceneHierarchy(sceneClones, Entity);\n\t}\n\tgetMaterialVariants() {\n\t\treturn this.data.variants ? Object.keys(this.data.variants) : [];\n\t}\n\tapplyMaterialVariant(entity, name) {\n\t\tconst variant = name ? this.data.variants[name] : null;\n\t\tif (variant === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tconst renders = entity.findComponents(\"render\");\n\t\tfor (let i = 0; i < renders.length; i++) {\n\t\t\tconst renderComponent = renders[i];\n\t\t\tthis._applyMaterialVariant(variant, renderComponent.meshInstances);\n\t\t}\n\t}\n\tapplyMaterialVariantInstances(instances, name) {\n\t\tconst variant = name ? this.data.variants[name] : null;\n\t\tif (variant === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tthis._applyMaterialVariant(variant, instances);\n\t}\n\t_applyMaterialVariant(variant, instances) {\n\t\tinstances.forEach(instance => {\n\t\t\tif (variant === null) {\n\t\t\t\tinstance.material = this._defaultMaterial;\n\t\t\t} else {\n\t\t\t\tconst meshVariants = this.data.meshVariants[instance.mesh.id];\n\t\t\t\tif (meshVariants) {\n\t\t\t\t\tinstance.material = this.data.materials[meshVariants[variant]];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tstatic createSceneHierarchy(sceneNodes, nodeType) {\n\t\tlet root = null;\n\t\tif (sceneNodes.length === 1) {\n\t\t\troot = sceneNodes[0];\n\t\t} else {\n\t\t\troot = new nodeType('SceneGroup');\n\t\t\tfor (const scene of sceneNodes) {\n\t\t\t\troot.addChild(scene);\n\t\t\t}\n\t\t}\n\t\treturn root;\n\t}\n\tstatic createModel(glb, defaultMaterial) {\n\t\tconst createMeshInstance = function createMeshInstance(model, mesh, skins, skinInstances, materials, node, gltfNode) {\n\t\t\tconst materialIndex = glb.meshDefaultMaterials[mesh.id];\n\t\t\tconst material = materialIndex === undefined ? defaultMaterial : materials[materialIndex];\n\t\t\tconst meshInstance = new MeshInstance(mesh, material, node);\n\t\t\tif (mesh.morph) {\n\t\t\t\tconst morphInstance = new MorphInstance(mesh.morph);\n\t\t\t\tmeshInstance.morphInstance = morphInstance;\n\t\t\t\tmodel.morphInstances.push(morphInstance);\n\t\t\t}\n\t\t\tif (gltfNode.hasOwnProperty('skin')) {\n\t\t\t\tconst skinIndex = gltfNode.skin;\n\t\t\t\tconst skin = skins[skinIndex];\n\t\t\t\tmesh.skin = skin;\n\t\t\t\tconst skinInstance = skinInstances[skinIndex];\n\t\t\t\tmeshInstance.skinInstance = skinInstance;\n\t\t\t\tmodel.skinInstances.push(skinInstance);\n\t\t\t}\n\t\t\tmodel.meshInstances.push(meshInstance);\n\t\t};\n\t\tconst model = new Model();\n\t\tconst skinInstances = [];\n\t\tfor (const skin of glb.skins) {\n\t\t\tconst skinInstance = new SkinInstance(skin);\n\t\t\tskinInstance.bones = skin.bones;\n\t\t\tskinInstances.push(skinInstance);\n\t\t}\n\t\tmodel.graph = GlbContainerResource.createSceneHierarchy(glb.scenes, GraphNode);\n\t\tfor (let i = 0; i < glb.nodes.length; i++) {\n\t\t\tconst node = glb.nodes[i];\n\t\t\tif (node.root === model.graph) {\n\t\t\t\tconst gltfNode = glb.gltf.nodes[i];\n\t\t\t\tif (gltfNode.hasOwnProperty('mesh')) {\n\t\t\t\t\tconst meshGroup = glb.renders[gltfNode.mesh].meshes;\n\t\t\t\t\tfor (let mi = 0; mi < meshGroup.length; mi++) {\n\t\t\t\t\t\tconst mesh = meshGroup[mi];\n\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\tcreateMeshInstance(model, mesh, glb.skins, skinInstances, glb.materials, node, gltfNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn model;\n\t}\n\tdestroy() {\n\t\tconst registry = this._assets;\n\t\tconst destroyAsset = function destroyAsset(asset) {\n\t\t\tregistry.remove(asset);\n\t\t\tasset.unload();\n\t\t};\n\t\tconst destroyAssets = function destroyAssets(assets) {\n\t\t\tassets.forEach(function (asset) {\n\t\t\t\tdestroyAsset(asset);\n\t\t\t});\n\t\t};\n\t\tif (this.animations) {\n\t\t\tdestroyAssets(this.animations);\n\t\t\tthis.animations = null;\n\t\t}\n\t\tif (this.textures) {\n\t\t\tdestroyAssets(this.textures);\n\t\t\tthis.textures = null;\n\t\t}\n\t\tif (this.materials) {\n\t\t\tdestroyAssets(this.materials);\n\t\t\tthis.materials = null;\n\t\t}\n\t\tif (this.renders) {\n\t\t\tdestroyAssets(this.renders);\n\t\t\tthis.renders = null;\n\t\t}\n\t\tif (this._model) {\n\t\t\tdestroyAsset(this._model);\n\t\t\tthis._model = null;\n\t\t}\n\t\tthis.data = null;\n\t\tthis.assets = null;\n\t}\n}\n\nexport { GlbContainerResource };\n", "import { path } from '../../core/path.js';\nimport { Asset } from '../asset/asset.js';\nimport { GlbParser } from './glb-parser.js';\nimport { GlbContainerResource } from './glb-container-resource.js';\n\nclass GlbContainerParser {\n\tconstructor(device, assets, maxRetries) {\n\t\tthis._device = device;\n\t\tthis._assets = assets;\n\t\tthis._defaultMaterial = GlbParser.createDefaultMaterial();\n\t\tthis.maxRetries = maxRetries;\n\t}\n\t_getUrlWithoutParams(url) {\n\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t}\n\tload(url, callback, asset) {\n\t\tAsset.fetchArrayBuffer(url.load, (err, result) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err);\n\t\t\t} else {\n\t\t\t\tGlbParser.parse(this._getUrlWithoutParams(url.original), path.extractPath(url.load), result, this._device, asset.registry, asset.options, (err, result) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(null, new GlbContainerResource(result, asset, this._assets, this._defaultMaterial));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}, asset, this.maxRetries);\n\t}\n\topen(url, data, asset) {\n\t\treturn data;\n\t}\n\tpatch(asset, assets) {}\n}\n\nexport { GlbContainerParser };\n", "import { path } from '../../core/path.js';\nimport { GlbContainerParser } from '../parsers/glb-container-parser.js';\nimport { ResourceHandler } from './handler.js';\n\nclass ContainerResource {\n\tinstantiateModelEntity(options) {\n\t\treturn null;\n\t}\n\tinstantiateRenderEntity(options) {\n\t\treturn null;\n\t}\n\tgetMaterialVariants() {\n\t\treturn null;\n\t}\n\tapplyMaterialVariant(entity, name) {}\n\tapplyMaterialVariantInstances(instances, name) {}\n}\nclass ContainerHandler extends ResourceHandler {\n\tconstructor(app) {\n\t\tsuper(app, 'container');\n\t\tthis.glbContainerParser = new GlbContainerParser(app.graphicsDevice, app.assets, 0);\n\t\tthis.parsers = {};\n\t}\n\tset maxRetries(value) {\n\t\tthis.glbContainerParser.maxRetries = value;\n\t\tfor (const parser in this.parsers) {\n\t\t\tif (this.parsers.hasOwnProperty(parser)) {\n\t\t\t\tthis.parsers[parser].maxRetries = value;\n\t\t\t}\n\t\t}\n\t}\n\tget maxRetries() {\n\t\treturn this.glbContainerParser.maxRetries;\n\t}\n\t_getUrlWithoutParams(url) {\n\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t}\n\t_getParser(url) {\n\t\tconst ext = url ? path.getExtension(this._getUrlWithoutParams(url)).toLowerCase().replace('.', '') : null;\n\t\treturn this.parsers[ext] || this.glbContainerParser;\n\t}\n\tload(url, callback, asset) {\n\t\tif (typeof url === 'string') {\n\t\t\turl = {\n\t\t\t\tload: url,\n\t\t\t\toriginal: url\n\t\t\t};\n\t\t}\n\t\tthis._getParser(url.original).load(url, callback, asset);\n\t}\n\topen(url, data, asset) {\n\t\treturn this._getParser(url).open(url, data, asset);\n\t}\n}\n\nexport { ContainerHandler, ContainerResource };\n", "import { GlbContainerResource } from './glb-container-resource.js';\nimport { GlbParser } from './glb-parser.js';\n\nclass GlbModelParser {\n\tconstructor(modelHandler) {\n\t\tthis._device = modelHandler.device;\n\t\tthis._defaultMaterial = modelHandler.defaultMaterial;\n\t\tthis._assets = modelHandler.assets;\n\t}\n\tparse(data, callback, asset) {\n\t\tvar _asset$options;\n\t\tGlbParser.parse('filename.glb', '', data, this._device, this._assets, (_asset$options = asset == null ? void 0 : asset.options) != null ? _asset$options : {}, (err, result) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err);\n\t\t\t} else {\n\t\t\t\tconst model = GlbContainerResource.createModel(result, this._defaultMaterial);\n\t\t\t\tresult.destroy();\n\t\t\t\tcallback(null, model);\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport { GlbModelParser };\n", "import { Mat4 } from '../../core/math/mat4.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { BoundingBox } from '../../core/shape/bounding-box.js';\nimport { SEMANTIC_COLOR, INDEXFORMAT_UINT32, INDEXFORMAT_UINT16, PRIMITIVE_POINTS, PRIMITIVE_LINES, PRIMITIVE_LINELOOP, PRIMITIVE_LINESTRIP, PRIMITIVE_TRIANGLES, PRIMITIVE_TRISTRIP, PRIMITIVE_TRIFAN, TYPE_INT8, TYPE_UINT8, TYPE_INT16, TYPE_UINT16, TYPE_INT32, TYPE_UINT32, TYPE_FLOAT32, SEMANTIC_POSITION, SEMANTIC_NORMAL, SEMANTIC_TANGENT, SEMANTIC_BLENDWEIGHT, SEMANTIC_BLENDINDICES, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_TEXCOORD2, SEMANTIC_TEXCOORD3, SEMANTIC_TEXCOORD4, SEMANTIC_TEXCOORD5, SEMANTIC_TEXCOORD6, SEMANTIC_TEXCOORD7 } from '../../platform/graphics/constants.js';\nimport { IndexBuffer } from '../../platform/graphics/index-buffer.js';\nimport { VertexBuffer } from '../../platform/graphics/vertex-buffer.js';\nimport { VertexFormat } from '../../platform/graphics/vertex-format.js';\nimport { VertexIterator } from '../../platform/graphics/vertex-iterator.js';\nimport { GraphNode } from '../../scene/graph-node.js';\nimport { Mesh } from '../../scene/mesh.js';\nimport { MeshInstance } from '../../scene/mesh-instance.js';\nimport { Model } from '../../scene/model.js';\nimport { Morph } from '../../scene/morph.js';\nimport { MorphInstance } from '../../scene/morph-instance.js';\nimport { MorphTarget } from '../../scene/morph-target.js';\nimport { Skin } from '../../scene/skin.js';\nimport { SkinInstance } from '../../scene/skin-instance.js';\n\nconst JSON_PRIMITIVE_TYPE = {\n\t'points': PRIMITIVE_POINTS,\n\t'lines': PRIMITIVE_LINES,\n\t'lineloop': PRIMITIVE_LINELOOP,\n\t'linestrip': PRIMITIVE_LINESTRIP,\n\t'triangles': PRIMITIVE_TRIANGLES,\n\t'trianglestrip': PRIMITIVE_TRISTRIP,\n\t'trianglefan': PRIMITIVE_TRIFAN\n};\nconst JSON_VERTEX_ELEMENT_TYPE = {\n\t'int8': TYPE_INT8,\n\t'uint8': TYPE_UINT8,\n\t'int16': TYPE_INT16,\n\t'uint16': TYPE_UINT16,\n\t'int32': TYPE_INT32,\n\t'uint32': TYPE_UINT32,\n\t'float32': TYPE_FLOAT32\n};\nclass JsonModelParser {\n\tconstructor(modelHandler) {\n\t\tthis._device = modelHandler.device;\n\t\tthis._defaultMaterial = modelHandler.defaultMaterial;\n\t}\n\tparse(data, callback) {\n\t\tconst modelData = data.model;\n\t\tif (!modelData) {\n\t\t\tcallback(null, null);\n\t\t\treturn;\n\t\t}\n\t\tif (modelData.version <= 1) {\n\t\t\tcallback('JsonModelParser#parse: Trying to parse unsupported model format.');\n\t\t\treturn;\n\t\t}\n\t\tconst nodes = this._parseNodes(data);\n\t\tconst skins = this._parseSkins(data, nodes);\n\t\tconst vertexBuffers = this._parseVertexBuffers(data);\n\t\tconst indices = this._parseIndexBuffers(data, vertexBuffers);\n\t\tconst morphs = this._parseMorphs(data, nodes, vertexBuffers);\n\t\tconst meshes = this._parseMeshes(data, skins.skins, morphs.morphs, vertexBuffers, indices.buffer, indices.data);\n\t\tconst meshInstances = this._parseMeshInstances(data, nodes, meshes, skins.skins, skins.instances, morphs.morphs, morphs.instances);\n\t\tconst model = new Model();\n\t\tmodel.graph = nodes[0];\n\t\tmodel.meshInstances = meshInstances;\n\t\tmodel.skinInstances = skins.instances;\n\t\tmodel.morphInstances = morphs.instances;\n\t\tmodel.getGraph().syncHierarchy();\n\t\tcallback(null, model);\n\t}\n\t_parseNodes(data) {\n\t\tconst modelData = data.model;\n\t\tconst nodes = [];\n\t\tlet i;\n\t\tfor (i = 0; i < modelData.nodes.length; i++) {\n\t\t\tconst nodeData = modelData.nodes[i];\n\t\t\tconst node = new GraphNode(nodeData.name);\n\t\t\tnode.setLocalPosition(nodeData.position[0], nodeData.position[1], nodeData.position[2]);\n\t\t\tnode.setLocalEulerAngles(nodeData.rotation[0], nodeData.rotation[1], nodeData.rotation[2]);\n\t\t\tnode.setLocalScale(nodeData.scale[0], nodeData.scale[1], nodeData.scale[2]);\n\t\t\tnode.scaleCompensation = !!nodeData.scaleCompensation;\n\t\t\tnodes.push(node);\n\t\t}\n\t\tfor (i = 1; i < modelData.parents.length; i++) {\n\t\t\tnodes[modelData.parents[i]].addChild(nodes[i]);\n\t\t}\n\t\treturn nodes;\n\t}\n\t_parseSkins(data, nodes) {\n\t\tconst modelData = data.model;\n\t\tconst skins = [];\n\t\tconst skinInstances = [];\n\t\tlet i, j;\n\t\tfor (i = 0; i < modelData.skins.length; i++) {\n\t\t\tconst skinData = modelData.skins[i];\n\t\t\tconst inverseBindMatrices = [];\n\t\t\tfor (j = 0; j < skinData.inverseBindMatrices.length; j++) {\n\t\t\t\tconst ibm = skinData.inverseBindMatrices[j];\n\t\t\t\tinverseBindMatrices[j] = new Mat4().set(ibm);\n\t\t\t}\n\t\t\tconst skin = new Skin(this._device, inverseBindMatrices, skinData.boneNames);\n\t\t\tskins.push(skin);\n\t\t\tconst skinInstance = new SkinInstance(skin);\n\t\t\tconst bones = [];\n\t\t\tfor (j = 0; j < skin.boneNames.length; j++) {\n\t\t\t\tconst boneName = skin.boneNames[j];\n\t\t\t\tconst bone = nodes[0].findByName(boneName);\n\t\t\t\tbones.push(bone);\n\t\t\t}\n\t\t\tskinInstance.bones = bones;\n\t\t\tskinInstances.push(skinInstance);\n\t\t}\n\t\treturn {\n\t\t\tskins: skins,\n\t\t\tinstances: skinInstances\n\t\t};\n\t}\n\t_getMorphVertexCount(modelData, morphIndex, vertexBuffers) {\n\t\tfor (let i = 0; i < modelData.meshes.length; i++) {\n\t\t\tconst meshData = modelData.meshes[i];\n\t\t\tif (meshData.morph === morphIndex) {\n\t\t\t\tconst vertexBuffer = vertexBuffers[meshData.vertices];\n\t\t\t\treturn vertexBuffer.numVertices;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\t_parseMorphs(data, nodes, vertexBuffers) {\n\t\tconst modelData = data.model;\n\t\tconst morphs = [];\n\t\tconst morphInstances = [];\n\t\tlet i, j, vertexCount;\n\t\tlet targets, morphTarget, morphTargetArray;\n\t\tif (modelData.morphs) {\n\t\t\tconst sparseToFull = function sparseToFull(data, indices, totalCount) {\n\t\t\t\tconst full = new Float32Array(totalCount * 3);\n\t\t\t\tfor (let s = 0; s < indices.length; s++) {\n\t\t\t\t\tconst dstIndex = indices[s] * 3;\n\t\t\t\t\tfull[dstIndex] = data[s * 3];\n\t\t\t\t\tfull[dstIndex + 1] = data[s * 3 + 1];\n\t\t\t\t\tfull[dstIndex + 2] = data[s * 3 + 2];\n\t\t\t\t}\n\t\t\t\treturn full;\n\t\t\t};\n\t\t\tfor (i = 0; i < modelData.morphs.length; i++) {\n\t\t\t\ttargets = modelData.morphs[i].targets;\n\t\t\t\tmorphTargetArray = [];\n\t\t\t\tvertexCount = this._getMorphVertexCount(modelData, i, vertexBuffers);\n\t\t\t\tfor (j = 0; j < targets.length; j++) {\n\t\t\t\t\tconst targetAabb = targets[j].aabb;\n\t\t\t\t\tconst min = targetAabb.min;\n\t\t\t\t\tconst max = targetAabb.max;\n\t\t\t\t\tconst aabb = new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n\t\t\t\t\tconst indices = targets[j].indices;\n\t\t\t\t\tlet deltaPositions = targets[j].deltaPositions;\n\t\t\t\t\tlet deltaNormals = targets[j].deltaNormals;\n\t\t\t\t\tif (indices) {\n\t\t\t\t\t\tdeltaPositions = sparseToFull(deltaPositions, indices, vertexCount);\n\t\t\t\t\t\tdeltaNormals = sparseToFull(deltaNormals, indices, vertexCount);\n\t\t\t\t\t}\n\t\t\t\t\tmorphTarget = new MorphTarget({\n\t\t\t\t\t\tdeltaPositions: deltaPositions,\n\t\t\t\t\t\tdeltaNormals: deltaNormals,\n\t\t\t\t\t\tname: targets[j].name,\n\t\t\t\t\t\taabb: aabb\n\t\t\t\t\t});\n\t\t\t\t\tmorphTargetArray.push(morphTarget);\n\t\t\t\t}\n\t\t\t\tconst morph = new Morph(morphTargetArray, this._device);\n\t\t\t\tmorphs.push(morph);\n\t\t\t\tconst morphInstance = new MorphInstance(morph);\n\t\t\t\tmorphInstances.push(morphInstance);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tmorphs: morphs,\n\t\t\tinstances: morphInstances\n\t\t};\n\t}\n\t_parseVertexBuffers(data) {\n\t\tconst modelData = data.model;\n\t\tconst vertexBuffers = [];\n\t\tconst attributeMap = {\n\t\t\tposition: SEMANTIC_POSITION,\n\t\t\tnormal: SEMANTIC_NORMAL,\n\t\t\ttangent: SEMANTIC_TANGENT,\n\t\t\tblendWeight: SEMANTIC_BLENDWEIGHT,\n\t\t\tblendIndices: SEMANTIC_BLENDINDICES,\n\t\t\tcolor: SEMANTIC_COLOR,\n\t\t\ttexCoord0: SEMANTIC_TEXCOORD0,\n\t\t\ttexCoord1: SEMANTIC_TEXCOORD1,\n\t\t\ttexCoord2: SEMANTIC_TEXCOORD2,\n\t\t\ttexCoord3: SEMANTIC_TEXCOORD3,\n\t\t\ttexCoord4: SEMANTIC_TEXCOORD4,\n\t\t\ttexCoord5: SEMANTIC_TEXCOORD5,\n\t\t\ttexCoord6: SEMANTIC_TEXCOORD6,\n\t\t\ttexCoord7: SEMANTIC_TEXCOORD7\n\t\t};\n\t\tfor (let i = 0; i < modelData.vertices.length; i++) {\n\t\t\tconst vertexData = modelData.vertices[i];\n\t\t\tconst formatDesc = [];\n\t\t\tfor (const attributeName in vertexData) {\n\t\t\t\tconst attribute = vertexData[attributeName];\n\t\t\t\tformatDesc.push({\n\t\t\t\t\tsemantic: attributeMap[attributeName],\n\t\t\t\t\tcomponents: attribute.components,\n\t\t\t\t\ttype: JSON_VERTEX_ELEMENT_TYPE[attribute.type],\n\t\t\t\t\tnormalize: attributeMap[attributeName] === SEMANTIC_COLOR\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst vertexFormat = new VertexFormat(this._device, formatDesc);\n\t\t\tconst numVertices = vertexData.position.data.length / vertexData.position.components;\n\t\t\tconst vertexBuffer = new VertexBuffer(this._device, vertexFormat, numVertices);\n\t\t\tconst iterator = new VertexIterator(vertexBuffer);\n\t\t\tfor (let j = 0; j < numVertices; j++) {\n\t\t\t\tfor (const attributeName in vertexData) {\n\t\t\t\t\tconst attribute = vertexData[attributeName];\n\t\t\t\t\tswitch (attribute.components) {\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 2], 1.0 - attribute.data[j * 2 + 1]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 3], attribute.data[j * 3 + 1], attribute.data[j * 3 + 2]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 4], attribute.data[j * 4 + 1], attribute.data[j * 4 + 2], attribute.data[j * 4 + 3]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\titerator.next();\n\t\t\t}\n\t\t\titerator.end();\n\t\t\tvertexBuffers.push(vertexBuffer);\n\t\t}\n\t\treturn vertexBuffers;\n\t}\n\t_parseIndexBuffers(data, vertexBuffers) {\n\t\tconst modelData = data.model;\n\t\tlet indexBuffer = null;\n\t\tlet indexData = null;\n\t\tlet i;\n\t\tlet numIndices = 0;\n\t\tfor (i = 0; i < modelData.meshes.length; i++) {\n\t\t\tconst meshData = modelData.meshes[i];\n\t\t\tif (meshData.indices !== undefined) {\n\t\t\t\tnumIndices += meshData.indices.length;\n\t\t\t}\n\t\t}\n\t\tlet maxVerts = 0;\n\t\tfor (i = 0; i < vertexBuffers.length; i++) {\n\t\t\tmaxVerts = Math.max(maxVerts, vertexBuffers[i].numVertices);\n\t\t}\n\t\tif (numIndices > 0) {\n\t\t\tif (maxVerts > 0xFFFF && this._device.extUintElement) {\n\t\t\t\tindexBuffer = new IndexBuffer(this._device, INDEXFORMAT_UINT32, numIndices);\n\t\t\t\tindexData = new Uint32Array(indexBuffer.lock());\n\t\t\t} else {\n\t\t\t\tindexBuffer = new IndexBuffer(this._device, INDEXFORMAT_UINT16, numIndices);\n\t\t\t\tindexData = new Uint16Array(indexBuffer.lock());\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tbuffer: indexBuffer,\n\t\t\tdata: indexData\n\t\t};\n\t}\n\t_parseMeshes(data, skins, morphs, vertexBuffers, indexBuffer, indexData) {\n\t\tconst modelData = data.model;\n\t\tconst meshes = [];\n\t\tlet indexBase = 0;\n\t\tfor (let i = 0; i < modelData.meshes.length; i++) {\n\t\t\tconst meshData = modelData.meshes[i];\n\t\t\tconst meshAabb = meshData.aabb;\n\t\t\tconst min = meshAabb.min;\n\t\t\tconst max = meshAabb.max;\n\t\t\tconst aabb = new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n\t\t\tconst indexed = meshData.indices !== undefined;\n\t\t\tconst mesh = new Mesh(this._device);\n\t\t\tmesh.vertexBuffer = vertexBuffers[meshData.vertices];\n\t\t\tmesh.indexBuffer[0] = indexed ? indexBuffer : null;\n\t\t\tmesh.primitive[0].type = JSON_PRIMITIVE_TYPE[meshData.type];\n\t\t\tmesh.primitive[0].base = indexed ? meshData.base + indexBase : meshData.base;\n\t\t\tmesh.primitive[0].count = meshData.count;\n\t\t\tmesh.primitive[0].indexed = indexed;\n\t\t\tmesh.skin = meshData.skin !== undefined ? skins[meshData.skin] : null;\n\t\t\tmesh.morph = meshData.morph !== undefined ? morphs[meshData.morph] : null;\n\t\t\tmesh.aabb = aabb;\n\t\t\tif (indexed) {\n\t\t\t\tindexData.set(meshData.indices, indexBase);\n\t\t\t\tindexBase += meshData.indices.length;\n\t\t\t}\n\t\t\tmeshes.push(mesh);\n\t\t}\n\t\tif (indexBuffer !== null) {\n\t\t\tindexBuffer.unlock();\n\t\t}\n\t\treturn meshes;\n\t}\n\t_parseMeshInstances(data, nodes, meshes, skins, skinInstances, morphs, morphInstances) {\n\t\tconst modelData = data.model;\n\t\tconst meshInstances = [];\n\t\tlet i;\n\t\tfor (i = 0; i < modelData.meshInstances.length; i++) {\n\t\t\tconst meshInstanceData = modelData.meshInstances[i];\n\t\t\tconst node = nodes[meshInstanceData.node];\n\t\t\tconst mesh = meshes[meshInstanceData.mesh];\n\t\t\tconst meshInstance = new MeshInstance(mesh, this._defaultMaterial, node);\n\t\t\tif (mesh.skin) {\n\t\t\t\tconst skinIndex = skins.indexOf(mesh.skin);\n\t\t\t\tmeshInstance.skinInstance = skinInstances[skinIndex];\n\t\t\t}\n\t\t\tif (mesh.morph) {\n\t\t\t\tconst morphIndex = morphs.indexOf(mesh.morph);\n\t\t\t\tmeshInstance.morphInstance = morphInstances[morphIndex];\n\t\t\t}\n\t\t\tmeshInstances.push(meshInstance);\n\t\t}\n\t\treturn meshInstances;\n\t}\n}\n\nexport { JsonModelParser };\n", "import { path } from '../../core/path.js';\nimport { Http, http } from '../../platform/net/http.js';\nimport { getDefaultMaterial } from '../../scene/materials/default-material.js';\nimport { GlbModelParser } from '../parsers/glb-model.js';\nimport { JsonModelParser } from '../parsers/json-model.js';\nimport { ResourceHandler } from './handler.js';\n\nclass ModelHandler extends ResourceHandler {\n\tconstructor(app) {\n\t\tsuper(app, 'model');\n\t\tthis._parsers = [];\n\t\tthis.device = app.graphicsDevice;\n\t\tthis.assets = app.assets;\n\t\tthis.defaultMaterial = getDefaultMaterial(this.device);\n\t\tthis.addParser(new JsonModelParser(this), function (url, data) {\n\t\t\treturn path.getExtension(url) === '.json';\n\t\t});\n\t\tthis.addParser(new GlbModelParser(this), function (url, data) {\n\t\t\treturn path.getExtension(url) === '.glb';\n\t\t});\n\t}\n\tload(url, callback, asset) {\n\t\tif (typeof url === 'string') {\n\t\t\turl = {\n\t\t\t\tload: url,\n\t\t\t\toriginal: url\n\t\t\t};\n\t\t}\n\t\tconst options = {\n\t\t\tretry: this.maxRetries > 0,\n\t\t\tmaxRetries: this.maxRetries\n\t\t};\n\t\tif (url.load.startsWith('blob:') || url.load.startsWith('data:')) {\n\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t} else {\n\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t}\n\t\t}\n\t\thttp.get(url.load, options, (err, response) => {\n\t\t\tif (!callback) return;\n\t\t\tif (!err) {\n\t\t\t\tfor (let i = 0; i < this._parsers.length; i++) {\n\t\t\t\t\tconst p = this._parsers[i];\n\t\t\t\t\tif (p.decider(url.original, response)) {\n\t\t\t\t\t\tp.parser.parse(response, (err, parseResult) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(null, parseResult);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcallback(\"No parsers found\");\n\t\t\t} else {\n\t\t\t\tcallback(`Error loading model: ${url.original} [${err}]`);\n\t\t\t}\n\t\t});\n\t}\n\topen(url, data) {\n\t\treturn data;\n\t}\n\tpatch(asset, assets) {\n\t\tif (!asset.resource) return;\n\t\tconst data = asset.data;\n\t\tconst self = this;\n\t\tasset.resource.meshInstances.forEach(function (meshInstance, i) {\n\t\t\tif (data.mapping) {\n\t\t\t\tconst handleMaterial = function handleMaterial(asset) {\n\t\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tmeshInstance.material = asset.resource;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tasset.once('load', handleMaterial);\n\t\t\t\t\t\tassets.load(asset);\n\t\t\t\t\t}\n\t\t\t\t\tasset.once('remove', function (asset) {\n\t\t\t\t\t\tif (meshInstance.material === asset.resource) {\n\t\t\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (!data.mapping[i]) {\n\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst id = data.mapping[i].material;\n\t\t\t\tconst url = data.mapping[i].path;\n\t\t\t\tlet material;\n\t\t\t\tif (id !== undefined) {\n\t\t\t\t\tif (!id) {\n\t\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmaterial = assets.get(id);\n\t\t\t\t\t\tif (material) {\n\t\t\t\t\t\t\thandleMaterial(material);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tassets.once('add:' + id, handleMaterial);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (url) {\n\t\t\t\t\tconst path = asset.getAbsoluteUrl(data.mapping[i].path);\n\t\t\t\t\tmaterial = assets.getByUrl(path);\n\t\t\t\t\tif (material) {\n\t\t\t\t\t\thandleMaterial(material);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tassets.once('add:url:' + path, handleMaterial);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\taddParser(parser, decider) {\n\t\tthis._parsers.push({\n\t\t\tparser: parser,\n\t\t\tdecider: decider\n\t\t});\n\t}\n}\n\nexport { ModelHandler };\n", "function BasisWorker() {\n\tconst BASIS_FORMAT = {\n\t\tcTFETC1: 0,\n\t\tcTFETC2: 1,\n\t\tcTFBC1: 2,\n\t\tcTFBC3: 3,\n\t\tcTFPVRTC1_4_RGB: 8,\n\t\tcTFPVRTC1_4_RGBA: 9,\n\t\tcTFASTC_4x4: 10,\n\t\tcTFATC_RGB: 11,\n\t\tcTFATC_RGBA_INTERPOLATED_ALPHA: 12,\n\t\tcTFRGBA32: 13,\n\t\tcTFRGB565: 14,\n\t\tcTFRGBA4444: 16\n\t};\n\tconst opaqueMapping = {\n\t\tastc: BASIS_FORMAT.cTFASTC_4x4,\n\t\tdxt: BASIS_FORMAT.cTFBC1,\n\t\tetc1: BASIS_FORMAT.cTFETC1,\n\t\tetc2: BASIS_FORMAT.cTFETC1,\n\t\tpvr: BASIS_FORMAT.cTFPVRTC1_4_RGB,\n\t\tatc: BASIS_FORMAT.cTFATC_RGB,\n\t\tnone: BASIS_FORMAT.cTFRGB565\n\t};\n\tconst alphaMapping = {\n\t\tastc: BASIS_FORMAT.cTFASTC_4x4,\n\t\tdxt: BASIS_FORMAT.cTFBC3,\n\t\tetc1: BASIS_FORMAT.cTFRGBA4444,\n\t\tetc2: BASIS_FORMAT.cTFETC2,\n\t\tpvr: BASIS_FORMAT.cTFPVRTC1_4_RGBA,\n\t\tatc: BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA,\n\t\tnone: BASIS_FORMAT.cTFRGBA4444\n\t};\n\tconst PIXEL_FORMAT = {\n\t\tETC1: 21,\n\t\tETC2_RGB: 22,\n\t\tETC2_RGBA: 23,\n\t\tDXT1: 8,\n\t\tDXT5: 10,\n\t\tPVRTC_4BPP_RGB_1: 26,\n\t\tPVRTC_4BPP_RGBA_1: 27,\n\t\tASTC_4x4: 28,\n\t\tATC_RGB: 29,\n\t\tATC_RGBA: 30,\n\t\tR8_G8_B8_A8: 7,\n\t\tR5_G6_B5: 3,\n\t\tR4_G4_B4_A4: 5\n\t};\n\tconst basisToEngineMapping = (basisFormat, deviceDetails) => {\n\t\tswitch (basisFormat) {\n\t\t\tcase BASIS_FORMAT.cTFETC1:\n\t\t\t\treturn deviceDetails.formats.etc1 ? PIXEL_FORMAT.ETC1 : PIXEL_FORMAT.ETC2_RGB;\n\t\t\tcase BASIS_FORMAT.cTFETC2:\n\t\t\t\treturn PIXEL_FORMAT.ETC2_RGBA;\n\t\t\tcase BASIS_FORMAT.cTFBC1:\n\t\t\t\treturn PIXEL_FORMAT.DXT1;\n\t\t\tcase BASIS_FORMAT.cTFBC3:\n\t\t\t\treturn PIXEL_FORMAT.DXT5;\n\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGB:\n\t\t\t\treturn PIXEL_FORMAT.PVRTC_4BPP_RGB_1;\n\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGBA:\n\t\t\t\treturn PIXEL_FORMAT.PVRTC_4BPP_RGBA_1;\n\t\t\tcase BASIS_FORMAT.cTFASTC_4x4:\n\t\t\t\treturn PIXEL_FORMAT.ASTC_4x4;\n\t\t\tcase BASIS_FORMAT.cTFATC_RGB:\n\t\t\t\treturn PIXEL_FORMAT.ATC_RGB;\n\t\t\tcase BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA:\n\t\t\t\treturn PIXEL_FORMAT.ATC_RGBA;\n\t\t\tcase BASIS_FORMAT.cTFRGBA32:\n\t\t\t\treturn PIXEL_FORMAT.R8_G8_B8_A8;\n\t\t\tcase BASIS_FORMAT.cTFRGB565:\n\t\t\t\treturn PIXEL_FORMAT.R5_G6_B5;\n\t\t\tcase BASIS_FORMAT.cTFRGBA4444:\n\t\t\t\treturn PIXEL_FORMAT.R4_G4_B4_A4;\n\t\t}\n\t};\n\tconst unswizzleGGGR = data => {\n\t\tconst genB = function genB(R, G) {\n\t\t\tconst r = R * (2.0 / 255.0) - 1.0;\n\t\t\tconst g = G * (2.0 / 255.0) - 1.0;\n\t\t\tconst b = Math.sqrt(1.0 - Math.min(1.0, r * r + g * g));\n\t\t\treturn Math.max(0, Math.min(255, Math.floor((b + 1.0) * 0.5 * 255.0)));\n\t\t};\n\t\tfor (let offset = 0; offset < data.length; offset += 4) {\n\t\t\tconst R = data[offset + 3];\n\t\t\tconst G = data[offset + 1];\n\t\t\tdata[offset + 0] = R;\n\t\t\tdata[offset + 2] = genB(R, G);\n\t\t\tdata[offset + 3] = 255;\n\t\t}\n\t\treturn data;\n\t};\n\tconst pack565 = data => {\n\t\tconst result = new Uint16Array(data.length / 4);\n\t\tfor (let offset = 0; offset < data.length; offset += 4) {\n\t\t\tconst R = data[offset + 0];\n\t\t\tconst G = data[offset + 1];\n\t\t\tconst B = data[offset + 2];\n\t\t\tresult[offset / 4] = (R & 0xf8) << 8 | (G & 0xfc) << 3 | B >> 3;\n\t\t}\n\t\treturn result;\n\t};\n\tconst isPOT = (width, height) => {\n\t\treturn (width & width - 1) === 0 && (height & height - 1) === 0;\n\t};\n\tconst performanceNow = () => {\n\t\treturn typeof performance !== 'undefined' ? performance.now() : 0;\n\t};\n\tlet basis;\n\tlet rgbPriority;\n\tlet rgbaPriority;\n\tconst chooseTargetFormat = (deviceDetails, hasAlpha, isUASTC) => {\n\t\tif (isUASTC) {\n\t\t\tif (deviceDetails.formats.astc) {\n\t\t\t\treturn 'astc';\n\t\t\t}\n\t\t} else {\n\t\t\tif (hasAlpha) {\n\t\t\t\tif (deviceDetails.formats.etc2) {\n\t\t\t\t\treturn 'etc2';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (deviceDetails.formats.etc1 || deviceDetails.formats.etc2) {\n\t\t\t\t\treturn 'etc1';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst testInOrder = priority => {\n\t\t\tfor (let i = 0; i < priority.length; ++i) {\n\t\t\t\tconst format = priority[i];\n\t\t\t\tif (deviceDetails.formats[format]) {\n\t\t\t\t\treturn format;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 'none';\n\t\t};\n\t\treturn testInOrder(hasAlpha ? rgbaPriority : rgbPriority);\n\t};\n\tconst dimensionsValid = (width, height, format, webgl2) => {\n\t\tswitch (format) {\n\t\t\tcase BASIS_FORMAT.cTFETC1:\n\t\t\tcase BASIS_FORMAT.cTFETC2:\n\t\t\t\treturn true;\n\t\t\tcase BASIS_FORMAT.cTFBC1:\n\t\t\tcase BASIS_FORMAT.cTFBC3:\n\t\t\t\treturn (width & 0x3) === 0 && (height & 0x3) === 0;\n\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGB:\n\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGBA:\n\t\t\t\treturn isPOT(width, height) && (width === height || webgl2);\n\t\t\tcase BASIS_FORMAT.cTFASTC_4x4:\n\t\t\t\treturn true;\n\t\t\tcase BASIS_FORMAT.cTFATC_RGB:\n\t\t\tcase BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\tconst transcodeKTX2 = (url, data, options) => {\n\t\tif (!basis.KTX2File) {\n\t\t\tthrow new Error('Basis transcoder module does not include support for KTX2.');\n\t\t}\n\t\tconst funcStart = performanceNow();\n\t\tconst basisFile = new basis.KTX2File(new Uint8Array(data));\n\t\tconst width = basisFile.getWidth();\n\t\tconst height = basisFile.getHeight();\n\t\tconst levels = basisFile.getLevels();\n\t\tconst hasAlpha = !!basisFile.getHasAlpha();\n\t\tconst isUASTC = basisFile.isUASTC && basisFile.isUASTC();\n\t\tif (!width || !height || !levels) {\n\t\t\tbasisFile.close();\n\t\t\tbasisFile.delete();\n\t\t\tthrow new Error(`Invalid image dimensions url=${url} width=${width} height=${height} levels=${levels}`);\n\t\t}\n\t\tconst format = chooseTargetFormat(options.deviceDetails, hasAlpha, isUASTC);\n\t\tconst unswizzle = !!options.isGGGR && format === 'pvr';\n\t\tlet basisFormat;\n\t\tif (unswizzle) {\n\t\t\tbasisFormat = BASIS_FORMAT.cTFRGBA32;\n\t\t} else {\n\t\t\tbasisFormat = hasAlpha ? alphaMapping[format] : opaqueMapping[format];\n\t\t\tif (!dimensionsValid(width, height, basisFormat, options.deviceDetails.webgl2)) {\n\t\t\t\tbasisFormat = hasAlpha ? BASIS_FORMAT.cTFRGBA32 : BASIS_FORMAT.cTFRGB565;\n\t\t\t}\n\t\t}\n\t\tif (!basisFile.startTranscoding()) {\n\t\t\tbasisFile.close();\n\t\t\tbasisFile.delete();\n\t\t\tthrow new Error('Failed to start transcoding url=' + url);\n\t\t}\n\t\tlet i;\n\t\tconst levelData = [];\n\t\tfor (let mip = 0; mip < levels; ++mip) {\n\t\t\tconst dstSize = basisFile.getImageTranscodedSizeInBytes(mip, 0, 0, basisFormat);\n\t\t\tconst dst = new Uint8Array(dstSize);\n\t\t\tif (!basisFile.transcodeImage(dst, mip, 0, 0, basisFormat, 0, -1, -1)) {\n\t\t\t\tbasisFile.close();\n\t\t\t\tbasisFile.delete();\n\t\t\t\tthrow new Error('Failed to transcode image url=' + url);\n\t\t\t}\n\t\t\tconst is16BitFormat = basisFormat === BASIS_FORMAT.cTFRGB565 || basisFormat === BASIS_FORMAT.cTFRGBA4444;\n\t\t\tlevelData.push(is16BitFormat ? new Uint16Array(dst.buffer) : dst);\n\t\t}\n\t\tbasisFile.close();\n\t\tbasisFile.delete();\n\t\tif (unswizzle) {\n\t\t\tbasisFormat = BASIS_FORMAT.cTFRGB565;\n\t\t\tfor (i = 0; i < levelData.length; ++i) {\n\t\t\t\tlevelData[i] = pack565(unswizzleGGGR(levelData[i]));\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tformat: basisToEngineMapping(basisFormat, options.deviceDetails),\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tlevels: levelData,\n\t\t\tcubemap: false,\n\t\t\ttranscodeTime: performanceNow() - funcStart,\n\t\t\turl: url,\n\t\t\tunswizzledGGGR: unswizzle\n\t\t};\n\t};\n\tconst transcodeBasis = (url, data, options) => {\n\t\tconst funcStart = performanceNow();\n\t\tconst basisFile = new basis.BasisFile(new Uint8Array(data));\n\t\tconst width = basisFile.getImageWidth(0, 0);\n\t\tconst height = basisFile.getImageHeight(0, 0);\n\t\tconst images = basisFile.getNumImages();\n\t\tconst levels = basisFile.getNumLevels(0);\n\t\tconst hasAlpha = !!basisFile.getHasAlpha();\n\t\tconst isUASTC = basisFile.isUASTC && basisFile.isUASTC();\n\t\tif (!width || !height || !images || !levels) {\n\t\t\tbasisFile.close();\n\t\t\tbasisFile.delete();\n\t\t\tthrow new Error(`Invalid image dimensions url=${url} width=${width} height=${height} images=${images} levels=${levels}`);\n\t\t}\n\t\tconst format = chooseTargetFormat(options.deviceDetails, hasAlpha, isUASTC);\n\t\tconst unswizzle = !!options.isGGGR && format === 'pvr';\n\t\tlet basisFormat;\n\t\tif (unswizzle) {\n\t\t\tbasisFormat = BASIS_FORMAT.cTFRGBA32;\n\t\t} else {\n\t\t\tbasisFormat = hasAlpha ? alphaMapping[format] : opaqueMapping[format];\n\t\t\tif (!dimensionsValid(width, height, basisFormat, options.deviceDetails.webgl2)) {\n\t\t\t\tbasisFormat = hasAlpha ? BASIS_FORMAT.cTFRGBA32 : BASIS_FORMAT.cTFRGB565;\n\t\t\t}\n\t\t}\n\t\tif (!basisFile.startTranscoding()) {\n\t\t\tbasisFile.close();\n\t\t\tbasisFile.delete();\n\t\t\tthrow new Error('Failed to start transcoding url=' + url);\n\t\t}\n\t\tlet i;\n\t\tconst levelData = [];\n\t\tfor (let mip = 0; mip < levels; ++mip) {\n\t\t\tconst dstSize = basisFile.getImageTranscodedSizeInBytes(0, mip, basisFormat);\n\t\t\tconst dst = new Uint8Array(dstSize);\n\t\t\tif (!basisFile.transcodeImage(dst, 0, mip, basisFormat, 0, 0)) {\n\t\t\t\tif (mip === levels - 1 && dstSize === levelData[mip - 1].buffer.byteLength) {\n\t\t\t\t\tdst.set(new Uint8Array(levelData[mip - 1].buffer));\n\t\t\t\t\tconsole.warn('Failed to transcode last mipmap level, using previous level instead url=' + url);\n\t\t\t\t} else {\n\t\t\t\t\tbasisFile.close();\n\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\tthrow new Error('Failed to transcode image url=' + url);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst is16BitFormat = basisFormat === BASIS_FORMAT.cTFRGB565 || basisFormat === BASIS_FORMAT.cTFRGBA4444;\n\t\t\tlevelData.push(is16BitFormat ? new Uint16Array(dst.buffer) : dst);\n\t\t}\n\t\tbasisFile.close();\n\t\tbasisFile.delete();\n\t\tif (unswizzle) {\n\t\t\tbasisFormat = BASIS_FORMAT.cTFRGB565;\n\t\t\tfor (i = 0; i < levelData.length; ++i) {\n\t\t\t\tlevelData[i] = pack565(unswizzleGGGR(levelData[i]));\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tformat: basisToEngineMapping(basisFormat, options.deviceDetails),\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tlevels: levelData,\n\t\t\tcubemap: false,\n\t\t\ttranscodeTime: performanceNow() - funcStart,\n\t\t\turl: url,\n\t\t\tunswizzledGGGR: unswizzle\n\t\t};\n\t};\n\tconst transcode = (url, data, options) => {\n\t\treturn options.isKTX2 ? transcodeKTX2(url, data, options) : transcodeBasis(url, data, options);\n\t};\n\tconst workerTranscode = (url, data, options) => {\n\t\ttry {\n\t\t\tconst result = transcode(url, data, options);\n\t\t\tresult.levels = result.levels.map(v => v.buffer);\n\t\t\tself.postMessage({\n\t\t\t\turl: url,\n\t\t\t\tdata: result\n\t\t\t}, result.levels);\n\t\t} catch (err) {\n\t\t\tself.postMessage({\n\t\t\t\turl: url,\n\t\t\t\terr: err\n\t\t\t}, null);\n\t\t}\n\t};\n\tconst workerInit = (config, callback) => {\n\t\tconst instantiateWasmFunc = (imports, successCallback) => {\n\t\t\tWebAssembly.instantiate(config.module, imports).then(result => {\n\t\t\t\tsuccessCallback(result);\n\t\t\t}).catch(reason => {\n\t\t\t\tconsole.error('instantiate failed + ' + reason);\n\t\t\t});\n\t\t\treturn {};\n\t\t};\n\t\tself.BASIS(config.module ? {\n\t\t\tinstantiateWasm: instantiateWasmFunc\n\t\t} : null).then(instance => {\n\t\t\tinstance.initializeBasis();\n\t\t\tbasis = instance;\n\t\t\trgbPriority = config.rgbPriority;\n\t\t\trgbaPriority = config.rgbaPriority;\n\t\t\tcallback(null);\n\t\t});\n\t};\n\tconst queue = [];\n\tself.onmessage = message => {\n\t\tconst data = message.data;\n\t\tswitch (data.type) {\n\t\t\tcase 'init':\n\t\t\t\tworkerInit(data.config, () => {\n\t\t\t\t\tfor (let i = 0; i < queue.length; ++i) {\n\t\t\t\t\t\tworkerTranscode(queue[i].url, queue[i].data, queue[i].options);\n\t\t\t\t\t}\n\t\t\t\t\tqueue.length = 0;\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'transcode':\n\t\t\t\tif (basis) {\n\t\t\t\t\tworkerTranscode(data.url, data.data, data.options);\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push(data);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n\nexport { BasisWorker };\n", "import { WasmModule } from '../../core/wasm-module.js';\nimport { PIXELFORMAT_RGB565, PIXELFORMAT_RGBA4 } from '../../platform/graphics/constants.js';\nimport { BasisWorker } from './basis-worker.js';\nimport { http } from '../../platform/net/http.js';\n\nconst getCompressionFormats = device => {\n\treturn {\n\t\tastc: !!device.extCompressedTextureASTC,\n\t\tatc: !!device.extCompressedTextureATC,\n\t\tdxt: !!device.extCompressedTextureS3TC,\n\t\tetc1: !!device.extCompressedTextureETC1,\n\t\tetc2: !!device.extCompressedTextureETC,\n\t\tpvr: !!device.extCompressedTexturePVRTC\n\t};\n};\nconst prepareWorkerModules = (config, callback) => {\n\tconst getWorkerBlob = basisCode => {\n\t\tconst code = ['/* basis */', basisCode, \"\", '(' + BasisWorker.toString() + ')()\\n\\n'].join('\\n');\n\t\treturn new Blob([code], {\n\t\t\ttype: 'application/javascript'\n\t\t});\n\t};\n\tconst wasmSupported = () => {\n\t\ttry {\n\t\t\tif (typeof WebAssembly === 'object' && typeof WebAssembly.instantiate === 'function') {\n\t\t\t\tconst module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n\t\t\t\tif (module instanceof WebAssembly.Module) return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n\t\t\t}\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n\tconst sendResponse = (basisCode, module) => {\n\t\tcallback(null, {\n\t\t\tworkerUrl: URL.createObjectURL(getWorkerBlob(basisCode)),\n\t\t\tmodule: module,\n\t\t\trgbPriority: config.rgbPriority,\n\t\t\trgbaPriority: config.rgbaPriority\n\t\t});\n\t};\n\tconst options = {\n\t\tcache: true,\n\t\tresponseType: 'text',\n\t\tretry: config.maxRetries > 0,\n\t\tmaxRetries: config.maxRetries\n\t};\n\tif (config.glueUrl && config.wasmUrl && wasmSupported()) {\n\t\tlet basisCode = null;\n\t\tlet module = null;\n\t\thttp.get(config.glueUrl, options, (err, response) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err);\n\t\t\t} else {\n\t\t\t\tif (module) {\n\t\t\t\t\tsendResponse(response, module);\n\t\t\t\t} else {\n\t\t\t\t\tbasisCode = response;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tconst fetchPromise = fetch(config.wasmUrl);\n\t\tconst compileManual = () => {\n\t\t\tfetchPromise.then(result => result.arrayBuffer()).then(buffer => WebAssembly.compile(buffer)).then(module_ => {\n\t\t\t\tif (basisCode) {\n\t\t\t\t\tsendResponse(basisCode, module_);\n\t\t\t\t} else {\n\t\t\t\t\tmodule = module_;\n\t\t\t\t}\n\t\t\t}).catch(err => {\n\t\t\t\tcallback(err, null);\n\t\t\t});\n\t\t};\n\t\tif (WebAssembly.compileStreaming) {\n\t\t\tWebAssembly.compileStreaming(fetchPromise).then(module_ => {\n\t\t\t\tif (basisCode) {\n\t\t\t\t\tsendResponse(basisCode, module_);\n\t\t\t\t} else {\n\t\t\t\t\tmodule = module_;\n\t\t\t\t}\n\t\t\t}).catch(err => {\n\t\t\t\tcompileManual();\n\t\t\t});\n\t\t} else {\n\t\t\tcompileManual();\n\t\t}\n\t} else {\n\t\thttp.get(config.fallbackUrl, options, (err, response) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err, null);\n\t\t\t} else {\n\t\t\t\tsendResponse(response, null);\n\t\t\t}\n\t\t});\n\t}\n};\nclass BasisQueue {\n\tconstructor() {\n\t\tthis.callbacks = {};\n\t\tthis.queue = [];\n\t\tthis.clients = [];\n\t}\n\tenqueueJob(url, data, callback, options) {\n\t\tif (this.callbacks.hasOwnProperty(url)) {\n\t\t\tthis.callbacks[url].push(callback);\n\t\t} else {\n\t\t\tthis.callbacks[url] = [callback];\n\t\t\tconst job = {\n\t\t\t\turl: url,\n\t\t\t\tdata: data,\n\t\t\t\toptions: options\n\t\t\t};\n\t\t\tif (this.clients.length > 0) {\n\t\t\t\tthis.clients.shift().run(job);\n\t\t\t} else {\n\t\t\t\tthis.queue.push(job);\n\t\t\t}\n\t\t}\n\t}\n\tenqueueClient(client) {\n\t\tif (this.queue.length > 0) {\n\t\t\tclient.run(this.queue.shift());\n\t\t} else {\n\t\t\tthis.clients.push(client);\n\t\t}\n\t}\n\thandleResponse(url, err, data) {\n\t\tconst callback = this.callbacks[url];\n\t\tif (err) {\n\t\t\tfor (let i = 0; i < callback.length; ++i) {\n\t\t\t\tcallback[i](err);\n\t\t\t}\n\t\t} else {\n\t\t\tif (data.format === PIXELFORMAT_RGB565 || data.format === PIXELFORMAT_RGBA4) {\n\t\t\t\tdata.levels = data.levels.map(function (v) {\n\t\t\t\t\treturn new Uint16Array(v);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdata.levels = data.levels.map(function (v) {\n\t\t\t\t\treturn new Uint8Array(v);\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (let i = 0; i < callback.length; ++i) {\n\t\t\t\tcallback[i](null, data);\n\t\t\t}\n\t\t}\n\t\tdelete this.callbacks[url];\n\t}\n}\nclass BasisClient {\n\tconstructor(queue, config, eager) {\n\t\tthis.queue = queue;\n\t\tthis.worker = new Worker(config.workerUrl);\n\t\tthis.worker.addEventListener('message', message => {\n\t\t\tconst data = message.data;\n\t\t\tthis.queue.handleResponse(data.url, data.err, data.data);\n\t\t\tif (!this.eager) {\n\t\t\t\tthis.queue.enqueueClient(this);\n\t\t\t}\n\t\t});\n\t\tthis.worker.postMessage({\n\t\t\ttype: 'init',\n\t\t\tconfig: config\n\t\t});\n\t\tthis.eager = eager;\n\t}\n\trun(job) {\n\t\tconst transfer = [];\n\t\tif (job.data instanceof ArrayBuffer) {\n\t\t\ttransfer.push(job.data);\n\t\t}\n\t\tthis.worker.postMessage({\n\t\t\ttype: 'transcode',\n\t\t\turl: job.url,\n\t\t\tformat: job.format,\n\t\t\tdata: job.data,\n\t\t\toptions: job.options\n\t\t}, transfer);\n\t\tif (this.eager) {\n\t\t\tthis.queue.enqueueClient(this);\n\t\t}\n\t}\n}\nconst defaultNumWorkers = 1;\nconst defaultRgbPriority = ['etc1', 'etc2', 'astc', 'dxt', 'pvr', 'atc'];\nconst defaultRgbaPriority = ['astc', 'dxt', 'etc2', 'pvr', 'atc'];\nconst defaultMaxRetries = 5;\nconst queue = new BasisQueue();\nlet lazyConfig = null;\nlet initializing = false;\nfunction basisInitialize(config) {\n\tif (initializing) {\n\t\treturn;\n\t}\n\tif (!config) {\n\t\tconfig = lazyConfig || {};\n\t} else if (config.lazyInit) {\n\t\tlazyConfig = config;\n\t\treturn;\n\t}\n\tif (!config.glueUrl || !config.wasmUrl || !config.fallbackUrl) {\n\t\tconst moduleConfig = WasmModule.getConfig('BASIS');\n\t\tif (moduleConfig) {\n\t\t\tconfig = {\n\t\t\t\tglueUrl: moduleConfig.glueUrl,\n\t\t\t\twasmUrl: moduleConfig.wasmUrl,\n\t\t\t\tfallbackUrl: moduleConfig.fallbackUrl,\n\t\t\t\tnumWorkers: moduleConfig.numWorkers\n\t\t\t};\n\t\t}\n\t}\n\tif (config.glueUrl || config.wasmUrl || config.fallbackUrl) {\n\t\tinitializing = true;\n\t\tconst numWorkers = Math.max(1, Math.min(16, config.numWorkers || defaultNumWorkers));\n\t\tconst eagerWorkers = config.numWorkers === 1 || (config.hasOwnProperty('eagerWorkers') ? config.eagerWorkers : true);\n\t\tconfig.rgbPriority = config.rgbPriority || defaultRgbPriority;\n\t\tconfig.rgbaPriority = config.rgbaPriority || defaultRgbaPriority;\n\t\tconfig.maxRetries = config.hasOwnProperty('maxRetries') ? config.maxRetries : defaultMaxRetries;\n\t\tprepareWorkerModules(config, (err, clientConfig) => {\n\t\t\tif (err) {\n\t\t\t\tconsole.error(`failed to initialize basis worker: ${err}`);\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < numWorkers; ++i) {\n\t\t\t\t\tqueue.enqueueClient(new BasisClient(queue, clientConfig, eagerWorkers));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\nlet deviceDetails = null;\nfunction basisTranscode(device, url, data, callback, options) {\n\tbasisInitialize();\n\tif (!deviceDetails) {\n\t\tdeviceDetails = {\n\t\t\twebgl2: device.isWebGL2,\n\t\t\tformats: getCompressionFormats(device)\n\t\t};\n\t}\n\tqueue.enqueueJob(url, data, callback, {\n\t\tdeviceDetails: deviceDetails,\n\t\tisGGGR: !!(options != null && options.isGGGR),\n\t\tisKTX2: !!(options != null && options.isKTX2)\n\t});\n\treturn initializing;\n}\n\nexport { basisInitialize, basisTranscode };\n", "class TextureParser {\n\tload(url, callback, asset) {\n\t\tthrow new Error('not implemented');\n\t}\n\topen(url, data, device) {\n\t\tthrow new Error('not implemented');\n\t}\n}\n\nexport { TextureParser };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { ADDRESS_CLAMP_TO_EDGE, ADDRESS_REPEAT } from '../../../platform/graphics/constants.js';\nimport { Texture } from '../../../platform/graphics/texture.js';\nimport { Asset } from '../../asset/asset.js';\nimport { basisTranscode } from '../../handlers/basis.js';\nimport { TextureParser } from './texture.js';\n\nclass BasisParser extends TextureParser {\n\tconstructor(registry, device) {\n\t\tsuper();\n\t\tthis.device = device;\n\t\tthis.maxRetries = 0;\n\t}\n\tload(url, callback, asset) {\n\t\tconst device = this.device;\n\t\tconst transcode = data => {\n\t\t\tvar _asset$file;\n\t\t\tconst basisModuleFound = basisTranscode(device, url.load, data, callback, {\n\t\t\t\tisGGGR: ((asset == null || (_asset$file = asset.file) == null || (_asset$file = _asset$file.variants) == null || (_asset$file = _asset$file.basis) == null ? void 0 : _asset$file.opt) & 8) !== 0\n\t\t\t});\n\t\t\tif (!basisModuleFound) {\n\t\t\t\tcallback(`Basis module not found. Asset '${asset.name}' basis texture variant will not be loaded.`);\n\t\t\t}\n\t\t};\n\t\tAsset.fetchArrayBuffer(url.load, (err, result) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err);\n\t\t\t} else {\n\t\t\t\ttranscode(result);\n\t\t\t}\n\t\t}, asset, this.maxRetries);\n\t}\n\topen(url, data, device, textureOptions = {}) {\n\t\tconst texture = new Texture(device, _extends({\n\t\t\tname: url,\n\t\t\taddressU: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\taddressV: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\twidth: data.width,\n\t\t\theight: data.height,\n\t\t\tformat: data.format,\n\t\t\tcubemap: data.cubemap,\n\t\t\tlevels: data.levels\n\t\t}, textureOptions));\n\t\ttexture.upload();\n\t\treturn texture;\n\t}\n}\n\nexport { BasisParser };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { PIXELFORMAT_RGBA8 } from '../../../platform/graphics/constants.js';\nimport { Texture } from '../../../platform/graphics/texture.js';\nimport { http } from '../../../platform/net/http.js';\nimport { ABSOLUTE_URL } from '../../asset/constants.js';\nimport { TextureParser } from './texture.js';\n\nclass ImgParser extends TextureParser {\n\tconstructor(registry, device) {\n\t\tsuper();\n\t\tthis.crossOrigin = registry.prefix ? 'anonymous' : null;\n\t\tthis.maxRetries = 0;\n\t\tthis.device = device;\n\t}\n\tload(url, callback, asset) {\n\t\tvar _asset$file;\n\t\tconst hasContents = !!(asset != null && (_asset$file = asset.file) != null && _asset$file.contents);\n\t\tif (hasContents) {\n\t\t\tif (this.device.supportsImageBitmap) {\n\t\t\t\tthis._loadImageBitmapFromBlob(new Blob([asset.file.contents]), callback);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\turl = {\n\t\t\t\tload: URL.createObjectURL(new Blob([asset.file.contents])),\n\t\t\t\toriginal: url.original\n\t\t\t};\n\t\t}\n\t\tconst handler = (err, result) => {\n\t\t\tif (hasContents) {\n\t\t\t\tURL.revokeObjectURL(url.load);\n\t\t\t}\n\t\t\tcallback(err, result);\n\t\t};\n\t\tlet crossOrigin;\n\t\tif (asset && asset.options && asset.options.hasOwnProperty('crossOrigin')) {\n\t\t\tcrossOrigin = asset.options.crossOrigin;\n\t\t} else if (ABSOLUTE_URL.test(url.load)) {\n\t\t\tcrossOrigin = this.crossOrigin;\n\t\t}\n\t\tif (this.device.supportsImageBitmap) {\n\t\t\tthis._loadImageBitmap(url.load, url.original, crossOrigin, handler);\n\t\t} else {\n\t\t\tthis._loadImage(url.load, url.original, crossOrigin, handler);\n\t\t}\n\t}\n\topen(url, data, device, textureOptions = {}) {\n\t\tconst texture = new Texture(device, _extends({\n\t\t\tname: url,\n\t\t\twidth: data.width,\n\t\t\theight: data.height,\n\t\t\tformat: PIXELFORMAT_RGBA8\n\t\t}, textureOptions));\n\t\ttexture.setSource(data);\n\t\treturn texture;\n\t}\n\t_loadImage(url, originalUrl, crossOrigin, callback) {\n\t\tconst image = new Image();\n\t\tif (crossOrigin) {\n\t\t\timage.crossOrigin = crossOrigin;\n\t\t}\n\t\tlet retries = 0;\n\t\tconst maxRetries = this.maxRetries;\n\t\tlet retryTimeout;\n\t\timage.onload = function () {\n\t\t\tcallback(null, image);\n\t\t};\n\t\timage.onerror = function () {\n\t\t\tif (retryTimeout) return;\n\t\t\tif (maxRetries > 0 && ++retries <= maxRetries) {\n\t\t\t\tconst retryDelay = Math.pow(2, retries) * 100;\n\t\t\t\tconsole.log(`Error loading Texture from: '${originalUrl}' - Retrying in ${retryDelay}ms...`);\n\t\t\t\tconst idx = url.indexOf('?');\n\t\t\t\tconst separator = idx >= 0 ? '&' : '?';\n\t\t\t\tretryTimeout = setTimeout(function () {\n\t\t\t\t\timage.src = url + separator + 'retry=' + Date.now();\n\t\t\t\t\tretryTimeout = null;\n\t\t\t\t}, retryDelay);\n\t\t\t} else {\n\t\t\t\tcallback(`Error loading Texture from: '${originalUrl}'`);\n\t\t\t}\n\t\t};\n\t\timage.src = url;\n\t}\n\t_loadImageBitmap(url, originalUrl, crossOrigin, callback) {\n\t\tconst options = {\n\t\t\tcache: true,\n\t\t\tresponseType: 'blob',\n\t\t\tretry: this.maxRetries > 0,\n\t\t\tmaxRetries: this.maxRetries\n\t\t};\n\t\thttp.get(url, options, (err, blob) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err);\n\t\t\t} else {\n\t\t\t\tthis._loadImageBitmapFromBlob(blob, callback);\n\t\t\t}\n\t\t});\n\t}\n\t_loadImageBitmapFromBlob(blob, callback) {\n\t\tcreateImageBitmap(blob, {\n\t\t\tpremultiplyAlpha: 'none',\n\t\t\tcolorSpaceConversion: 'none'\n\t\t}).then(imageBitmap => callback(null, imageBitmap)).catch(e => callback(e));\n\t}\n}\n\nexport { ImgParser };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { ADDRESS_CLAMP_TO_EDGE, ADDRESS_REPEAT, PIXELFORMAT_DXT1, PIXELFORMAT_DXT3, PIXELFORMAT_DXT5, PIXELFORMAT_ETC1, PIXELFORMAT_ETC2_RGB, PIXELFORMAT_ETC2_RGBA, PIXELFORMAT_PVRTC_4BPP_RGB_1, PIXELFORMAT_PVRTC_2BPP_RGB_1, PIXELFORMAT_PVRTC_4BPP_RGBA_1, PIXELFORMAT_PVRTC_2BPP_RGBA_1, PIXELFORMAT_RGB8, PIXELFORMAT_RGBA8, PIXELFORMAT_SRGB, PIXELFORMAT_SRGBA, PIXELFORMAT_111110F, PIXELFORMAT_RGB16F, PIXELFORMAT_RGBA16F } from '../../../platform/graphics/constants.js';\nimport { Texture } from '../../../platform/graphics/texture.js';\nimport { Asset } from '../../asset/asset.js';\nimport { TextureParser } from './texture.js';\n\nconst IDENTIFIER = [0x58544BAB, 0xBB313120, 0x0A1A0A0D];\nconst KNOWN_FORMATS = {\n\t0x83F0: PIXELFORMAT_DXT1,\n\t0x83F2: PIXELFORMAT_DXT3,\n\t0x83F3: PIXELFORMAT_DXT5,\n\t0x8D64: PIXELFORMAT_ETC1,\n\t0x9274: PIXELFORMAT_ETC2_RGB,\n\t0x9278: PIXELFORMAT_ETC2_RGBA,\n\t0x8C00: PIXELFORMAT_PVRTC_4BPP_RGB_1,\n\t0x8C01: PIXELFORMAT_PVRTC_2BPP_RGB_1,\n\t0x8C02: PIXELFORMAT_PVRTC_4BPP_RGBA_1,\n\t0x8C03: PIXELFORMAT_PVRTC_2BPP_RGBA_1,\n\t0x8051: PIXELFORMAT_RGB8,\n\t0x8058: PIXELFORMAT_RGBA8,\n\t0x8C41: PIXELFORMAT_SRGB,\n\t0x8C43: PIXELFORMAT_SRGBA,\n\t0x8C3A: PIXELFORMAT_111110F,\n\t0x881B: PIXELFORMAT_RGB16F,\n\t0x881A: PIXELFORMAT_RGBA16F\n};\nfunction createContainer(pixelFormat, buffer, byteOffset, byteSize) {\n\treturn pixelFormat === PIXELFORMAT_111110F ? new Uint32Array(buffer, byteOffset, byteSize / 4) : new Uint8Array(buffer, byteOffset, byteSize);\n}\nclass KtxParser extends TextureParser {\n\tconstructor(registry) {\n\t\tsuper();\n\t\tthis.maxRetries = 0;\n\t}\n\tload(url, callback, asset) {\n\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t}\n\topen(url, data, device, textureOptions = {}) {\n\t\tconst textureData = this.parse(data);\n\t\tif (!textureData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst texture = new Texture(device, _extends({\n\t\t\tname: url,\n\t\t\taddressU: textureData.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\taddressV: textureData.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\twidth: textureData.width,\n\t\t\theight: textureData.height,\n\t\t\tformat: textureData.format,\n\t\t\tcubemap: textureData.cubemap,\n\t\t\tlevels: textureData.levels\n\t\t}, textureOptions));\n\t\ttexture.upload();\n\t\treturn texture;\n\t}\n\tparse(data) {\n\t\tconst dataU32 = new Uint32Array(data);\n\t\tif (IDENTIFIER[0] !== dataU32[0] || IDENTIFIER[1] !== dataU32[1] || IDENTIFIER[2] !== dataU32[2]) {\n\t\t\treturn null;\n\t\t}\n\t\tconst header = {\n\t\t\tendianness: dataU32[3],\n\t\t\tglType: dataU32[4],\n\t\t\tglTypeSize: dataU32[5],\n\t\t\tglFormat: dataU32[6],\n\t\t\tglInternalFormat: dataU32[7],\n\t\t\tglBaseInternalFormat: dataU32[8],\n\t\t\tpixelWidth: dataU32[9],\n\t\t\tpixelHeight: dataU32[10],\n\t\t\tpixelDepth: dataU32[11],\n\t\t\tnumberOfArrayElements: dataU32[12],\n\t\t\tnumberOfFaces: dataU32[13],\n\t\t\tnumberOfMipmapLevels: dataU32[14],\n\t\t\tbytesOfKeyValueData: dataU32[15]\n\t\t};\n\t\tif (header.pixelDepth > 1) {\n\t\t\treturn null;\n\t\t}\n\t\tif (header.numberOfArrayElements !== 0) {\n\t\t\treturn null;\n\t\t}\n\t\tconst format = KNOWN_FORMATS[header.glInternalFormat];\n\t\tif (format === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\tlet offset = 16 + header.bytesOfKeyValueData / 4;\n\t\tconst isCubemap = header.numberOfFaces > 1;\n\t\tconst levels = [];\n\t\tfor (let mipmapLevel = 0; mipmapLevel < (header.numberOfMipmapLevels || 1); mipmapLevel++) {\n\t\t\tconst imageSizeInBytes = dataU32[offset++];\n\t\t\tif (isCubemap) {\n\t\t\t\tlevels.push([]);\n\t\t\t}\n\t\t\tconst target = isCubemap ? levels[mipmapLevel] : levels;\n\t\t\tfor (let face = 0; face < (isCubemap ? 6 : 1); ++face) {\n\t\t\t\ttarget.push(createContainer(format, data, offset * 4, imageSizeInBytes));\n\t\t\t\toffset += imageSizeInBytes + 3 >> 2;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tformat: format,\n\t\t\twidth: header.pixelWidth,\n\t\t\theight: header.pixelHeight,\n\t\t\tlevels: levels,\n\t\t\tcubemap: isCubemap\n\t\t};\n\t}\n}\n\nexport { KtxParser };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { ReadStream } from '../../../core/read-stream.js';\nimport { ADDRESS_CLAMP_TO_EDGE, ADDRESS_REPEAT } from '../../../platform/graphics/constants.js';\nimport { Texture } from '../../../platform/graphics/texture.js';\nimport { Asset } from '../../asset/asset.js';\nimport { basisTranscode } from '../../handlers/basis.js';\nimport { TextureParser } from './texture.js';\n\nconst KHRConstants = {\n\tKHR_DF_MODEL_ETC1S: 163,\n\tKHR_DF_MODEL_UASTC: 166\n};\nclass Ktx2Parser extends TextureParser {\n\tconstructor(registry, device) {\n\t\tsuper();\n\t\tthis.maxRetries = 0;\n\t\tthis.device = device;\n\t}\n\tload(url, callback, asset) {\n\t\tAsset.fetchArrayBuffer(url.load, (err, result) => {\n\t\t\tif (err) {\n\t\t\t\tcallback(err, result);\n\t\t\t} else {\n\t\t\t\tthis.parse(result, url, callback, asset);\n\t\t\t}\n\t\t}, asset, this.maxRetries);\n\t}\n\topen(url, data, device, textureOptions = {}) {\n\t\tconst texture = new Texture(device, _extends({\n\t\t\tname: url,\n\t\t\taddressU: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\taddressV: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\twidth: data.width,\n\t\t\theight: data.height,\n\t\t\tformat: data.format,\n\t\t\tcubemap: data.cubemap,\n\t\t\tlevels: data.levels\n\t\t}, textureOptions));\n\t\ttexture.upload();\n\t\treturn texture;\n\t}\n\tparse(arraybuffer, url, callback, asset) {\n\t\tconst rs = new ReadStream(arraybuffer);\n\t\tconst magic = [rs.readU32be(), rs.readU32be(), rs.readU32be()];\n\t\tif (magic[0] !== 0xAB4B5458 || magic[1] !== 0x203230BB || magic[2] !== 0x0D0A1A0A) {\n\t\t\treturn null;\n\t\t}\n\t\tconst header = {\n\t\t\tvkFormat: rs.readU32(),\n\t\t\ttypeSize: rs.readU32(),\n\t\t\tpixelWidth: rs.readU32(),\n\t\t\tpixelHeight: rs.readU32(),\n\t\t\tpixelDepth: rs.readU32(),\n\t\t\tlayerCount: rs.readU32(),\n\t\t\tfaceCount: rs.readU32(),\n\t\t\tlevelCount: rs.readU32(),\n\t\t\tsupercompressionScheme: rs.readU32()\n\t\t};\n\t\tconst index = {\n\t\t\tdfdByteOffset: rs.readU32(),\n\t\t\tdfdByteLength: rs.readU32(),\n\t\t\tkvdByteOffset: rs.readU32(),\n\t\t\tkvdByteLength: rs.readU32(),\n\t\t\tsgdByteOffset: rs.readU64(),\n\t\t\tsgdByteLength: rs.readU64()\n\t\t};\n\t\tconst levels = [];\n\t\tfor (let i = 0; i < Math.max(1, header.levelCount); ++i) {\n\t\t\tlevels.push({\n\t\t\t\tbyteOffset: rs.readU64(),\n\t\t\t\tbyteLength: rs.readU64(),\n\t\t\t\tuncompressedByteLength: rs.readU64()\n\t\t\t});\n\t\t}\n\t\tconst dfdTotalSize = rs.readU32();\n\t\tif (dfdTotalSize !== index.kvdByteOffset - index.dfdByteOffset) {\n\t\t\treturn null;\n\t\t}\n\t\trs.skip(8);\n\t\tconst colorModel = rs.readU8();\n\t\trs.skip(index.dfdByteLength - 9);\n\t\trs.skip(index.kvdByteLength);\n\t\tif (header.supercompressionScheme === 1 || colorModel === KHRConstants.KHR_DF_MODEL_UASTC) {\n\t\t\tvar _asset$file;\n\t\t\tconst basisModuleFound = basisTranscode(this.device, url.load, arraybuffer, callback, {\n\t\t\t\tisGGGR: ((asset == null || (_asset$file = asset.file) == null || (_asset$file = _asset$file.variants) == null || (_asset$file = _asset$file.basis) == null ? void 0 : _asset$file.opt) & 8) !== 0,\n\t\t\t\tisKTX2: true\n\t\t\t});\n\t\t\tif (!basisModuleFound) {\n\t\t\t\tcallback('Basis module not found. Asset \"' + asset.name + '\" basis texture variant will not be loaded.');\n\t\t\t}\n\t\t} else {\n\t\t\tcallback('unsupported KTX2 pixel format');\n\t\t}\n\t}\n}\n\nexport { Ktx2Parser };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { PIXELFORMAT_RGB8, ADDRESS_CLAMP_TO_EDGE, ADDRESS_REPEAT, PIXELFORMAT_DXT1, PIXELFORMAT_DXT5, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA32F, PIXELFORMAT_ETC1, PIXELFORMAT_PVRTC_2BPP_RGB_1, PIXELFORMAT_PVRTC_2BPP_RGBA_1, PIXELFORMAT_PVRTC_4BPP_RGB_1, PIXELFORMAT_PVRTC_4BPP_RGBA_1, PIXELFORMAT_RGBA8 } from '../../../platform/graphics/constants.js';\nimport { Texture } from '../../../platform/graphics/texture.js';\nimport { Asset } from '../../asset/asset.js';\nimport { TextureParser } from './texture.js';\n\nclass DdsParser extends TextureParser {\n\tconstructor(registry) {\n\t\tsuper();\n\t\tthis.maxRetries = 0;\n\t}\n\tload(url, callback, asset) {\n\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t}\n\topen(url, data, device, textureOptions = {}) {\n\t\tconst header = new Uint32Array(data, 0, 128 / 4);\n\t\tconst width = header[4];\n\t\tconst height = header[3];\n\t\tconst mips = Math.max(header[7], 1);\n\t\tconst isFourCc = header[20] === 4;\n\t\tconst fcc = header[21];\n\t\tconst bpp = header[22];\n\t\tconst isCubemap = header[28] === 65024;\n\t\tconst FCC_DXT1 = 827611204;\n\t\tconst FCC_DXT5 = 894720068;\n\t\tconst FCC_FP16 = 113;\n\t\tconst FCC_FP32 = 116;\n\t\tconst FCC_ETC1 = 826496069;\n\t\tconst FCC_PVRTC_2BPP_RGB_1 = 825438800;\n\t\tconst FCC_PVRTC_2BPP_RGBA_1 = 825504336;\n\t\tconst FCC_PVRTC_4BPP_RGB_1 = 825439312;\n\t\tconst FCC_PVRTC_4BPP_RGBA_1 = 825504848;\n\t\tlet compressed = false;\n\t\tlet etc1 = false;\n\t\tlet pvrtc2 = false;\n\t\tlet pvrtc4 = false;\n\t\tlet format = null;\n\t\tlet componentSize = 1;\n\t\tlet texture;\n\t\tif (isFourCc) {\n\t\t\tif (fcc === FCC_DXT1) {\n\t\t\t\tformat = PIXELFORMAT_DXT1;\n\t\t\t\tcompressed = true;\n\t\t\t} else if (fcc === FCC_DXT5) {\n\t\t\t\tformat = PIXELFORMAT_DXT5;\n\t\t\t\tcompressed = true;\n\t\t\t} else if (fcc === FCC_FP16) {\n\t\t\t\tformat = PIXELFORMAT_RGBA16F;\n\t\t\t\tcomponentSize = 2;\n\t\t\t} else if (fcc === FCC_FP32) {\n\t\t\t\tformat = PIXELFORMAT_RGBA32F;\n\t\t\t\tcomponentSize = 4;\n\t\t\t} else if (fcc === FCC_ETC1) {\n\t\t\t\tformat = PIXELFORMAT_ETC1;\n\t\t\t\tcompressed = true;\n\t\t\t\tetc1 = true;\n\t\t\t} else if (fcc === FCC_PVRTC_2BPP_RGB_1 || fcc === FCC_PVRTC_2BPP_RGBA_1) {\n\t\t\t\tformat = fcc === FCC_PVRTC_2BPP_RGB_1 ? PIXELFORMAT_PVRTC_2BPP_RGB_1 : PIXELFORMAT_PVRTC_2BPP_RGBA_1;\n\t\t\t\tcompressed = true;\n\t\t\t\tpvrtc2 = true;\n\t\t\t} else if (fcc === FCC_PVRTC_4BPP_RGB_1 || fcc === FCC_PVRTC_4BPP_RGBA_1) {\n\t\t\t\tformat = fcc === FCC_PVRTC_4BPP_RGB_1 ? PIXELFORMAT_PVRTC_4BPP_RGB_1 : PIXELFORMAT_PVRTC_4BPP_RGBA_1;\n\t\t\t\tcompressed = true;\n\t\t\t\tpvrtc4 = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (bpp === 32) {\n\t\t\t\tformat = PIXELFORMAT_RGBA8;\n\t\t\t}\n\t\t}\n\t\tif (!format) {\n\t\t\ttexture = new Texture(device, {\n\t\t\t\twidth: 4,\n\t\t\t\theight: 4,\n\t\t\t\tformat: PIXELFORMAT_RGB8,\n\t\t\t\tname: 'dds-legacy-empty'\n\t\t\t});\n\t\t\treturn texture;\n\t\t}\n\t\ttexture = new Texture(device, _extends({\n\t\t\tname: url,\n\t\t\taddressU: isCubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\taddressV: isCubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tformat: format,\n\t\t\tcubemap: isCubemap,\n\t\t\tmipmaps: mips > 1\n\t\t}, textureOptions));\n\t\tlet offset = 128;\n\t\tconst faces = isCubemap ? 6 : 1;\n\t\tlet mipSize;\n\t\tconst DXT_BLOCK_WIDTH = 4;\n\t\tconst DXT_BLOCK_HEIGHT = 4;\n\t\tconst blockSize = fcc === FCC_DXT1 ? 8 : 16;\n\t\tlet numBlocksAcross, numBlocksDown, numBlocks;\n\t\tfor (let face = 0; face < faces; face++) {\n\t\t\tlet mipWidth = width;\n\t\t\tlet mipHeight = height;\n\t\t\tfor (let i = 0; i < mips; i++) {\n\t\t\t\tif (compressed) {\n\t\t\t\t\tif (etc1) {\n\t\t\t\t\t\tmipSize = Math.floor((mipWidth + 3) / 4) * Math.floor((mipHeight + 3) / 4) * 8;\n\t\t\t\t\t} else if (pvrtc2) {\n\t\t\t\t\t\tmipSize = Math.max(mipWidth, 16) * Math.max(mipHeight, 8) / 4;\n\t\t\t\t\t} else if (pvrtc4) {\n\t\t\t\t\t\tmipSize = Math.max(mipWidth, 8) * Math.max(mipHeight, 8) / 2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnumBlocksAcross = Math.floor((mipWidth + DXT_BLOCK_WIDTH - 1) / DXT_BLOCK_WIDTH);\n\t\t\t\t\t\tnumBlocksDown = Math.floor((mipHeight + DXT_BLOCK_HEIGHT - 1) / DXT_BLOCK_HEIGHT);\n\t\t\t\t\t\tnumBlocks = numBlocksAcross * numBlocksDown;\n\t\t\t\t\t\tmipSize = numBlocks * blockSize;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmipSize = mipWidth * mipHeight * 4;\n\t\t\t\t}\n\t\t\t\tconst mipBuff = format === PIXELFORMAT_RGBA32F ? new Float32Array(data, offset, mipSize) : format === PIXELFORMAT_RGBA16F ? new Uint16Array(data, offset, mipSize) : new Uint8Array(data, offset, mipSize);\n\t\t\t\tif (!isCubemap) {\n\t\t\t\t\ttexture._levels[i] = mipBuff;\n\t\t\t\t} else {\n\t\t\t\t\tif (!texture._levels[i]) texture._levels[i] = [];\n\t\t\t\t\ttexture._levels[i][face] = mipBuff;\n\t\t\t\t}\n\t\t\t\toffset += mipSize * componentSize;\n\t\t\t\tmipWidth = Math.max(mipWidth * 0.5, 1);\n\t\t\t\tmipHeight = Math.max(mipHeight * 0.5, 1);\n\t\t\t}\n\t\t}\n\t\ttexture.upload();\n\t\treturn texture;\n\t}\n}\n\nexport { DdsParser };\n", "import { extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';\nimport { ReadStream } from '../../../core/read-stream.js';\nimport { ADDRESS_REPEAT, ADDRESS_CLAMP_TO_EDGE, FILTER_NEAREST, PIXELFORMAT_RGBA8, TEXTURETYPE_RGBE } from '../../../platform/graphics/constants.js';\nimport { Texture } from '../../../platform/graphics/texture.js';\nimport { Asset } from '../../asset/asset.js';\nimport { TextureParser } from './texture.js';\n\nclass HdrParser extends TextureParser {\n\tconstructor(registry) {\n\t\tsuper();\n\t\tthis.maxRetries = 0;\n\t}\n\tload(url, callback, asset) {\n\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t}\n\topen(url, data, device, textureOptions = {}) {\n\t\tconst textureData = this.parse(data);\n\t\tif (!textureData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst texture = new Texture(device, _extends({\n\t\t\tname: url,\n\t\t\taddressU: ADDRESS_REPEAT,\n\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\tminFilter: FILTER_NEAREST,\n\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\twidth: textureData.width,\n\t\t\theight: textureData.height,\n\t\t\tlevels: textureData.levels,\n\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\ttype: TEXTURETYPE_RGBE,\n\t\t\tmipmaps: false\n\t\t}, textureOptions));\n\t\ttexture.upload();\n\t\treturn texture;\n\t}\n\tparse(data) {\n\t\tconst readStream = new ReadStream(data);\n\t\tconst magic = readStream.readLine();\n\t\tif (!magic.startsWith('#?RADIANCE')) {\n\t\t\treturn null;\n\t\t}\n\t\tconst variables = {};\n\t\twhile (true) {\n\t\t\tconst line = readStream.readLine();\n\t\t\tif (line.length === 0) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tconst parts = line.split('=');\n\t\t\t\tif (parts.length === 2) {\n\t\t\t\t\tvariables[parts[0]] = parts[1];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!variables.hasOwnProperty('FORMAT')) {\n\t\t\treturn null;\n\t\t}\n\t\tconst resolution = readStream.readLine().split(' ');\n\t\tif (resolution.length !== 4) {\n\t\t\treturn null;\n\t\t}\n\t\tconst height = parseInt(resolution[1], 10);\n\t\tconst width = parseInt(resolution[3], 10);\n\t\tconst pixels = this._readPixels(readStream, width, height, resolution[0] === '-Y');\n\t\tif (!pixels) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tlevels: [pixels]\n\t\t};\n\t}\n\t_readPixels(readStream, width, height, flipY) {\n\t\tif (width < 8 || width > 0x7fff) {\n\t\t\treturn this._readPixelsFlat(readStream, width, height);\n\t\t}\n\t\tconst rgbe = [0, 0, 0, 0];\n\t\treadStream.readArray(rgbe);\n\t\tif (rgbe[0] !== 2 || rgbe[1] !== 2 || (rgbe[2] & 0x80) !== 0) {\n\t\t\treadStream.skip(-4);\n\t\t\treturn this._readPixelsFlat(readStream, width, height);\n\t\t}\n\t\tconst buffer = new ArrayBuffer(width * height * 4);\n\t\tconst view = new Uint8Array(buffer);\n\t\tlet scanstart = flipY ? 0 : width * 4 * (height - 1);\n\t\tlet x, y, i, channel, count, value;\n\t\tfor (y = 0; y < height; ++y) {\n\t\t\tif (y) {\n\t\t\t\treadStream.readArray(rgbe);\n\t\t\t}\n\t\t\tif ((rgbe[2] << 8) + rgbe[3] !== width) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tfor (channel = 0; channel < 4; ++channel) {\n\t\t\t\tx = 0;\n\t\t\t\twhile (x < width) {\n\t\t\t\t\tcount = readStream.readU8();\n\t\t\t\t\tif (count > 128) {\n\t\t\t\t\t\tcount -= 128;\n\t\t\t\t\t\tif (x + count > width) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue = readStream.readU8();\n\t\t\t\t\t\tfor (i = 0; i < count; ++i) {\n\t\t\t\t\t\t\tview[scanstart + channel + 4 * x++] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (count === 0 || x + count > width) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (i = 0; i < count; ++i) {\n\t\t\t\t\t\t\tview[scanstart + channel + 4 * x++] = readStream.readU8();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tscanstart += width * 4 * (flipY ? 1 : -1);\n\t\t}\n\t\treturn view;\n\t}\n\t_readPixelsFlat(readStream, width, height) {\n\t\treturn readStream.remainingBytes === width * height * 4 ? new Uint8Array(readStream.arraybuffer, readStream.offset) : null;\n\t}\n}\n\nexport { HdrParser };\n", "import { path } from '../../core/path.js';\nimport { TEXTURETYPE_RGBM, TEXTURETYPE_SWIZZLEGGGR, PIXELFORMAT_RGB8, ADDRESS_REPEAT, ADDRESS_CLAMP_TO_EDGE, ADDRESS_MIRRORED_REPEAT, FILTER_NEAREST, FILTER_LINEAR, FILTER_NEAREST_MIPMAP_NEAREST, FILTER_LINEAR_MIPMAP_NEAREST, FILTER_NEAREST_MIPMAP_LINEAR, FILTER_LINEAR_MIPMAP_LINEAR, TEXTURETYPE_DEFAULT, TEXTURETYPE_RGBE, TEXTURETYPE_RGBP, PIXELFORMAT_RGBA8, PIXELFORMAT_RGBA32F } from '../../platform/graphics/constants.js';\nimport { Texture } from '../../platform/graphics/texture.js';\nimport { TextureUtils } from '../../platform/graphics/texture-utils.js';\nimport { BasisParser } from '../parsers/texture/basis.js';\nimport { ImgParser } from '../parsers/texture/img.js';\nimport { KtxParser } from '../parsers/texture/ktx.js';\nimport { Ktx2Parser } from '../parsers/texture/ktx2.js';\nimport { DdsParser } from '../parsers/texture/dds.js';\nimport { HdrParser } from '../parsers/texture/hdr.js';\nimport { ResourceHandler } from './handler.js';\n\nconst JSON_ADDRESS_MODE = {\n\t'repeat': ADDRESS_REPEAT,\n\t'clamp': ADDRESS_CLAMP_TO_EDGE,\n\t'mirror': ADDRESS_MIRRORED_REPEAT\n};\nconst JSON_FILTER_MODE = {\n\t'nearest': FILTER_NEAREST,\n\t'linear': FILTER_LINEAR,\n\t'nearest_mip_nearest': FILTER_NEAREST_MIPMAP_NEAREST,\n\t'linear_mip_nearest': FILTER_LINEAR_MIPMAP_NEAREST,\n\t'nearest_mip_linear': FILTER_NEAREST_MIPMAP_LINEAR,\n\t'linear_mip_linear': FILTER_LINEAR_MIPMAP_LINEAR\n};\nconst JSON_TEXTURE_TYPE = {\n\t'default': TEXTURETYPE_DEFAULT,\n\t'rgbm': TEXTURETYPE_RGBM,\n\t'rgbe': TEXTURETYPE_RGBE,\n\t'rgbp': TEXTURETYPE_RGBP,\n\t'swizzleGGGR': TEXTURETYPE_SWIZZLEGGGR\n};\nconst _completePartialMipmapChain = function _completePartialMipmapChain(texture) {\n\tconst requiredMipLevels = TextureUtils.calcMipLevelsCount(texture._width, texture._height);\n\tconst isHtmlElement = function isHtmlElement(object) {\n\t\treturn object instanceof HTMLCanvasElement || object instanceof HTMLImageElement || object instanceof HTMLVideoElement;\n\t};\n\tif (!(texture._format === PIXELFORMAT_RGBA8 || texture._format === PIXELFORMAT_RGBA32F) || texture._volume || texture._compressed || texture._levels.length === 1 || texture._levels.length === requiredMipLevels || isHtmlElement(texture._cubemap ? texture._levels[0][0] : texture._levels[0])) {\n\t\treturn;\n\t}\n\tconst downsample = function downsample(width, height, data) {\n\t\tconst sampledWidth = Math.max(1, width >> 1);\n\t\tconst sampledHeight = Math.max(1, height >> 1);\n\t\tconst sampledData = new data.constructor(sampledWidth * sampledHeight * 4);\n\t\tconst xs = Math.floor(width / sampledWidth);\n\t\tconst ys = Math.floor(height / sampledHeight);\n\t\tconst xsys = xs * ys;\n\t\tfor (let y = 0; y < sampledHeight; ++y) {\n\t\t\tfor (let x = 0; x < sampledWidth; ++x) {\n\t\t\t\tfor (let e = 0; e < 4; ++e) {\n\t\t\t\t\tlet sum = 0;\n\t\t\t\t\tfor (let sy = 0; sy < ys; ++sy) {\n\t\t\t\t\t\tfor (let sx = 0; sx < xs; ++sx) {\n\t\t\t\t\t\t\tsum += data[(x * xs + sx + (y * ys + sy) * width) * 4 + e];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsampledData[(x + y * sampledWidth) * 4 + e] = sum / xsys;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn sampledData;\n\t};\n\tfor (let level = texture._levels.length; level < requiredMipLevels; ++level) {\n\t\tconst width = Math.max(1, texture._width >> level - 1);\n\t\tconst height = Math.max(1, texture._height >> level - 1);\n\t\tif (texture._cubemap) {\n\t\t\tconst mips = [];\n\t\t\tfor (let face = 0; face < 6; ++face) {\n\t\t\t\tmips.push(downsample(width, height, texture._levels[level - 1][face]));\n\t\t\t}\n\t\t\ttexture._levels.push(mips);\n\t\t} else {\n\t\t\ttexture._levels.push(downsample(width, height, texture._levels[level - 1]));\n\t\t}\n\t}\n\ttexture._levelsUpdated = texture._cubemap ? [[true, true, true, true, true, true]] : [true];\n};\nclass TextureHandler extends ResourceHandler {\n\tconstructor(app) {\n\t\tsuper(app, 'texture');\n\t\tconst assets = app.assets;\n\t\tconst device = app.graphicsDevice;\n\t\tthis._device = device;\n\t\tthis._assets = assets;\n\t\tthis.imgParser = new ImgParser(assets, device);\n\t\tthis.parsers = {\n\t\t\tdds: new DdsParser(assets),\n\t\t\tktx: new KtxParser(assets),\n\t\t\tktx2: new Ktx2Parser(assets, device),\n\t\t\tbasis: new BasisParser(assets, device),\n\t\t\thdr: new HdrParser(assets)\n\t\t};\n\t}\n\tset crossOrigin(value) {\n\t\tthis.imgParser.crossOrigin = value;\n\t}\n\tget crossOrigin() {\n\t\treturn this.imgParser.crossOrigin;\n\t}\n\tset maxRetries(value) {\n\t\tthis.imgParser.maxRetries = value;\n\t\tfor (const parser in this.parsers) {\n\t\t\tif (this.parsers.hasOwnProperty(parser)) {\n\t\t\t\tthis.parsers[parser].maxRetries = value;\n\t\t\t}\n\t\t}\n\t}\n\tget maxRetries() {\n\t\treturn this.imgParser.maxRetries;\n\t}\n\t_getUrlWithoutParams(url) {\n\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t}\n\t_getParser(url) {\n\t\tconst ext = path.getExtension(this._getUrlWithoutParams(url)).toLowerCase().replace('.', '');\n\t\treturn this.parsers[ext] || this.imgParser;\n\t}\n\t_getTextureOptions(asset) {\n\t\tconst options = {};\n\t\tif (asset) {\n\t\t\tvar _asset$name;\n\t\t\tif (((_asset$name = asset.name) == null ? void 0 : _asset$name.length) > 0) {\n\t\t\t\toptions.name = asset.name;\n\t\t\t}\n\t\t\tconst assetData = asset.data;\n\t\t\tif (assetData.hasOwnProperty('minfilter')) {\n\t\t\t\toptions.minFilter = JSON_FILTER_MODE[assetData.minfilter];\n\t\t\t}\n\t\t\tif (assetData.hasOwnProperty('magfilter')) {\n\t\t\t\toptions.magFilter = JSON_FILTER_MODE[assetData.magfilter];\n\t\t\t}\n\t\t\tif (assetData.hasOwnProperty('addressu')) {\n\t\t\t\toptions.addressU = JSON_ADDRESS_MODE[assetData.addressu];\n\t\t\t}\n\t\t\tif (assetData.hasOwnProperty('addressv')) {\n\t\t\t\toptions.addressV = JSON_ADDRESS_MODE[assetData.addressv];\n\t\t\t}\n\t\t\tif (assetData.hasOwnProperty('mipmaps')) {\n\t\t\t\toptions.mipmaps = assetData.mipmaps;\n\t\t\t}\n\t\t\tif (assetData.hasOwnProperty('anisotropy')) {\n\t\t\t\toptions.anisotropy = assetData.anisotropy;\n\t\t\t}\n\t\t\tif (assetData.hasOwnProperty('flipY')) {\n\t\t\t\toptions.flipY = !!assetData.flipY;\n\t\t\t}\n\t\t\tif (assetData.hasOwnProperty('type')) {\n\t\t\t\toptions.type = JSON_TEXTURE_TYPE[assetData.type];\n\t\t\t} else if (assetData.hasOwnProperty('rgbm') && assetData.rgbm) {\n\t\t\t\toptions.type = TEXTURETYPE_RGBM;\n\t\t\t} else if (asset.file && (asset.file.opt & 8) !== 0) {\n\t\t\t\toptions.type = TEXTURETYPE_SWIZZLEGGGR;\n\t\t\t}\n\t\t}\n\t\treturn options;\n\t}\n\tload(url, callback, asset) {\n\t\tif (typeof url === 'string') {\n\t\t\turl = {\n\t\t\t\tload: url,\n\t\t\t\toriginal: url\n\t\t\t};\n\t\t}\n\t\tthis._getParser(url.original).load(url, callback, asset);\n\t}\n\topen(url, data, asset) {\n\t\tif (!url) return undefined;\n\t\tconst textureOptions = this._getTextureOptions(asset);\n\t\tlet texture = this._getParser(url).open(url, data, this._device, textureOptions);\n\t\tif (texture === null) {\n\t\t\ttexture = new Texture(this._device, {\n\t\t\t\twidth: 4,\n\t\t\t\theight: 4,\n\t\t\t\tformat: PIXELFORMAT_RGB8\n\t\t\t});\n\t\t} else {\n\t\t\t_completePartialMipmapChain(texture);\n\t\t\tif (data.unswizzledGGGR) {\n\t\t\t\tasset.file.variants.basis.opt &= ~8;\n\t\t\t}\n\t\t}\n\t\treturn texture;\n\t}\n\tpatch(asset, assets) {\n\t\tconst texture = asset.resource;\n\t\tif (!texture) {\n\t\t\treturn;\n\t\t}\n\t\tconst options = this._getTextureOptions(asset);\n\t\tfor (const key of Object.keys(options)) {\n\t\t\ttexture[key] = options[key];\n\t\t}\n\t}\n}\n\nexport { TextureHandler };\n", "const XRTYPE_INLINE = 'inline';\nconst XRTYPE_VR = 'immersive-vr';\nconst XRTYPE_AR = 'immersive-ar';\nconst XRSPACE_VIEWER = 'viewer';\nconst XRSPACE_LOCAL = 'local';\nconst XRSPACE_LOCALFLOOR = 'local-floor';\nconst XRSPACE_BOUNDEDFLOOR = 'bounded-floor';\nconst XRSPACE_UNBOUNDED = 'unbounded';\nconst XRTARGETRAY_GAZE = 'gaze';\nconst XRTARGETRAY_SCREEN = 'screen';\nconst XRTARGETRAY_POINTER = 'tracked-pointer';\nconst XREYE_NONE = 'none';\nconst XREYE_LEFT = 'left';\nconst XREYE_RIGHT = 'right';\nconst XRHAND_NONE = 'none';\nconst XRHAND_LEFT = 'left';\nconst XRHAND_RIGHT = 'right';\nconst XRTRACKABLE_POINT = 'point';\nconst XRTRACKABLE_PLANE = 'plane';\nconst XRTRACKABLE_MESH = 'mesh';\nconst XRDEPTHSENSINGUSAGE_CPU = 'cpu-optimized';\nconst XRDEPTHSENSINGUSAGE_GPU = 'gpu-optimized';\nconst XRDEPTHSENSINGFORMAT_L8A8 = 'luminance-alpha';\nconst XRDEPTHSENSINGFORMAT_F32 = 'float32';\n\nexport { XRDEPTHSENSINGFORMAT_F32, XRDEPTHSENSINGFORMAT_L8A8, XRDEPTHSENSINGUSAGE_CPU, XRDEPTHSENSINGUSAGE_GPU, XREYE_LEFT, XREYE_NONE, XREYE_RIGHT, XRHAND_LEFT, XRHAND_NONE, XRHAND_RIGHT, XRSPACE_BOUNDEDFLOOR, XRSPACE_LOCAL, XRSPACE_LOCALFLOOR, XRSPACE_UNBOUNDED, XRSPACE_VIEWER, XRTARGETRAY_GAZE, XRTARGETRAY_POINTER, XRTARGETRAY_SCREEN, XRTRACKABLE_MESH, XRTRACKABLE_PLANE, XRTRACKABLE_POINT, XRTYPE_AR, XRTYPE_INLINE, XRTYPE_VR };\n", "class XrFinger {\n\tconstructor(index, hand) {\n\t\tthis._index = void 0;\n\t\tthis._hand = void 0;\n\t\tthis._joints = [];\n\t\tthis._tip = null;\n\t\tthis._index = index;\n\t\tthis._hand = hand;\n\t\tthis._hand._fingers.push(this);\n\t}\n\tget index() {\n\t\treturn this._index;\n\t}\n\tget hand() {\n\t\treturn this._hand;\n\t}\n\tget joints() {\n\t\treturn this._joints;\n\t}\n\tget tip() {\n\t\treturn this._tip;\n\t}\n}\n\nexport { XrFinger };\n", "import { platform } from '../../core/platform.js';\nimport { Mat4 } from '../../core/math/mat4.js';\nimport { Quat } from '../../core/math/quat.js';\nimport { Vec3 } from '../../core/math/vec3.js';\n\nconst tipJointIds = platform.browser && window.XRHand ? ['thumb-tip', 'index-finger-tip', 'middle-finger-tip', 'ring-finger-tip', 'pinky-finger-tip'] : [];\nconst tipJointIdsIndex = {};\nfor (let i = 0; i < tipJointIds.length; i++) {\n\ttipJointIdsIndex[tipJointIds[i]] = true;\n}\nclass XrJoint {\n\tconstructor(index, id, hand, finger = null) {\n\t\tthis._index = void 0;\n\t\tthis._id = void 0;\n\t\tthis._hand = void 0;\n\t\tthis._finger = void 0;\n\t\tthis._wrist = void 0;\n\t\tthis._tip = void 0;\n\t\tthis._radius = null;\n\t\tthis._localTransform = new Mat4();\n\t\tthis._worldTransform = new Mat4();\n\t\tthis._localPosition = new Vec3();\n\t\tthis._localRotation = new Quat();\n\t\tthis._position = new Vec3();\n\t\tthis._rotation = new Quat();\n\t\tthis._dirtyLocal = true;\n\t\tthis._index = index;\n\t\tthis._id = id;\n\t\tthis._hand = hand;\n\t\tthis._finger = finger;\n\t\tthis._wrist = id === 'wrist';\n\t\tthis._tip = this._finger && !!tipJointIdsIndex[id];\n\t}\n\tupdate(pose) {\n\t\tthis._dirtyLocal = true;\n\t\tthis._radius = pose.radius;\n\t\tthis._localPosition.copy(pose.transform.position);\n\t\tthis._localRotation.copy(pose.transform.orientation);\n\t}\n\t_updateTransforms() {\n\t\tif (this._dirtyLocal) {\n\t\t\tthis._dirtyLocal = false;\n\t\t\tthis._localTransform.setTRS(this._localPosition, this._localRotation, Vec3.ONE);\n\t\t}\n\t\tconst manager = this._hand._manager;\n\t\tconst parent = manager.camera.parent;\n\t\tif (parent) {\n\t\t\tthis._worldTransform.mul2(parent.getWorldTransform(), this._localTransform);\n\t\t} else {\n\t\t\tthis._worldTransform.copy(this._localTransform);\n\t\t}\n\t}\n\tgetPosition() {\n\t\tthis._updateTransforms();\n\t\tthis._worldTransform.getTranslation(this._position);\n\t\treturn this._position;\n\t}\n\tgetRotation() {\n\t\tthis._updateTransforms();\n\t\tthis._rotation.setFromMat4(this._worldTransform);\n\t\treturn this._rotation;\n\t}\n\tget index() {\n\t\treturn this._index;\n\t}\n\tget hand() {\n\t\treturn this._hand;\n\t}\n\tget finger() {\n\t\treturn this._finger;\n\t}\n\tget wrist() {\n\t\treturn this._wrist;\n\t}\n\tget tip() {\n\t\treturn this._tip;\n\t}\n\tget radius() {\n\t\treturn this._radius || 0.005;\n\t}\n}\n\nexport { XrJoint };\n", "import { EventHandler } from '../../core/event-handler.js';\nimport { platform } from '../../core/platform.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { XRHAND_LEFT } from './constants.js';\nimport { XrFinger } from './xr-finger.js';\nimport { XrJoint } from './xr-joint.js';\n\nlet fingerJointIds = [];\nconst vecA = new Vec3();\nconst vecB = new Vec3();\nconst vecC = new Vec3();\nif (platform.browser && window.XRHand) {\n\tfingerJointIds = [['thumb-metacarpal', 'thumb-phalanx-proximal', 'thumb-phalanx-distal', 'thumb-tip'], ['index-finger-metacarpal', 'index-finger-phalanx-proximal', 'index-finger-phalanx-intermediate', 'index-finger-phalanx-distal', 'index-finger-tip'], ['middle-finger-metacarpal', 'middle-finger-phalanx-proximal', 'middle-finger-phalanx-intermediate', 'middle-finger-phalanx-distal', 'middle-finger-tip'], ['ring-finger-metacarpal', 'ring-finger-phalanx-proximal', 'ring-finger-phalanx-intermediate', 'ring-finger-phalanx-distal', 'ring-finger-tip'], ['pinky-finger-metacarpal', 'pinky-finger-phalanx-proximal', 'pinky-finger-phalanx-intermediate', 'pinky-finger-phalanx-distal', 'pinky-finger-tip']];\n}\nclass XrHand extends EventHandler {\n\tconstructor(inputSource) {\n\t\tsuper();\n\t\tthis._manager = void 0;\n\t\tthis._inputSource = void 0;\n\t\tthis._tracking = false;\n\t\tthis._fingers = [];\n\t\tthis._joints = [];\n\t\tthis._jointsById = {};\n\t\tthis._tips = [];\n\t\tthis._wrist = null;\n\t\tconst xrHand = inputSource._xrInputSource.hand;\n\t\tthis._manager = inputSource._manager;\n\t\tthis._inputSource = inputSource;\n\t\tif (xrHand.get('wrist')) {\n\t\t\tconst joint = new XrJoint(0, 'wrist', this, null);\n\t\t\tthis._wrist = joint;\n\t\t\tthis._joints.push(joint);\n\t\t\tthis._jointsById.wrist = joint;\n\t\t}\n\t\tfor (let f = 0; f < fingerJointIds.length; f++) {\n\t\t\tconst finger = new XrFinger(f, this);\n\t\t\tfor (let j = 0; j < fingerJointIds[f].length; j++) {\n\t\t\t\tconst jointId = fingerJointIds[f][j];\n\t\t\t\tif (!xrHand.get(jointId)) continue;\n\t\t\t\tconst joint = new XrJoint(j, jointId, this, finger);\n\t\t\t\tthis._joints.push(joint);\n\t\t\t\tthis._jointsById[jointId] = joint;\n\t\t\t\tif (joint.tip) {\n\t\t\t\t\tthis._tips.push(joint);\n\t\t\t\t\tfinger._tip = joint;\n\t\t\t\t}\n\t\t\t\tfinger._joints.push(joint);\n\t\t\t}\n\t\t}\n\t}\n\tupdate(frame) {\n\t\tconst xrInputSource = this._inputSource._xrInputSource;\n\t\tfor (let j = 0; j < this._joints.length; j++) {\n\t\t\tconst joint = this._joints[j];\n\t\t\tconst jointSpace = xrInputSource.hand.get(joint._id);\n\t\t\tif (jointSpace) {\n\t\t\t\tlet pose;\n\t\t\t\tif (frame.session.visibilityState !== 'hidden') pose = frame.getJointPose(jointSpace, this._manager._referenceSpace);\n\t\t\t\tif (pose) {\n\t\t\t\t\tjoint.update(pose);\n\t\t\t\t\tif (joint.wrist && !this._tracking) {\n\t\t\t\t\t\tthis._tracking = true;\n\t\t\t\t\t\tthis.fire('tracking');\n\t\t\t\t\t}\n\t\t\t\t} else if (joint.wrist) {\n\t\t\t\t\tif (this._tracking) {\n\t\t\t\t\t\tthis._tracking = false;\n\t\t\t\t\t\tthis.fire('trackinglost');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst j1 = this._jointsById['thumb-metacarpal'];\n\t\tconst j4 = this._jointsById['thumb-tip'];\n\t\tconst j6 = this._jointsById['index-finger-phalanx-proximal'];\n\t\tconst j9 = this._jointsById['index-finger-tip'];\n\t\tconst j16 = this._jointsById['ring-finger-phalanx-proximal'];\n\t\tconst j21 = this._jointsById['pinky-finger-phalanx-proximal'];\n\t\tif (j1 && j4 && j6 && j9 && j16 && j21) {\n\t\t\tthis._inputSource._dirtyRay = true;\n\t\t\tthis._inputSource._rayLocal.origin.lerp(j4._localPosition, j9._localPosition, 0.5);\n\t\t\tlet jointL = j1;\n\t\t\tlet jointR = j21;\n\t\t\tif (this._inputSource.handedness === XRHAND_LEFT) {\n\t\t\t\tconst t = jointL;\n\t\t\t\tjointL = jointR;\n\t\t\t\tjointR = t;\n\t\t\t}\n\t\t\tvecA.sub2(jointL._localPosition, this._wrist._localPosition);\n\t\t\tvecB.sub2(jointR._localPosition, this._wrist._localPosition);\n\t\t\tvecC.cross(vecA, vecB).normalize();\n\t\t\tvecA.lerp(j6._localPosition, j16._localPosition, 0.5);\n\t\t\tvecA.sub(this._wrist._localPosition).normalize();\n\t\t\tthis._inputSource._rayLocal.direction.lerp(vecC, vecA, 0.5).normalize();\n\t\t}\n\t\tconst squeezing = this._fingerIsClosed(1) && this._fingerIsClosed(2) && this._fingerIsClosed(3) && this._fingerIsClosed(4);\n\t\tif (squeezing) {\n\t\t\tif (!this._inputSource._squeezing) {\n\t\t\t\tthis._inputSource._squeezing = true;\n\t\t\t\tthis._inputSource.fire('squeezestart');\n\t\t\t\tthis._manager.input.fire('squeezestart', this._inputSource);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._inputSource._squeezing) {\n\t\t\t\tthis._inputSource._squeezing = false;\n\t\t\t\tthis._inputSource.fire('squeeze');\n\t\t\t\tthis._manager.input.fire('squeeze', this._inputSource);\n\t\t\t\tthis._inputSource.fire('squeezeend');\n\t\t\t\tthis._manager.input.fire('squeezeend', this._inputSource);\n\t\t\t}\n\t\t}\n\t}\n\t_fingerIsClosed(index) {\n\t\tconst finger = this._fingers[index];\n\t\tvecA.sub2(finger.joints[0]._localPosition, finger.joints[1]._localPosition).normalize();\n\t\tvecB.sub2(finger.joints[2]._localPosition, finger.joints[3]._localPosition).normalize();\n\t\treturn vecA.dot(vecB) < -0.8;\n\t}\n\tgetJointById(id) {\n\t\treturn this._jointsById[id] || null;\n\t}\n\tget fingers() {\n\t\treturn this._fingers;\n\t}\n\tget joints() {\n\t\treturn this._joints;\n\t}\n\tget tips() {\n\t\treturn this._tips;\n\t}\n\tget wrist() {\n\t\treturn this._wrist;\n\t}\n\tget tracking() {\n\t\treturn this._tracking;\n\t}\n}\nXrHand.EVENT_TRACKING = 'tracking';\nXrHand.EVENT_TRACKINGLOST = 'trackinglost';\n\nexport { XrHand };\n", "import { EventHandler } from '../../core/event-handler.js';\nimport { Mat4 } from '../../core/math/mat4.js';\nimport { Quat } from '../../core/math/quat.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { Ray } from '../../core/shape/ray.js';\nimport { XrHand } from './xr-hand.js';\nimport { now } from '../../core/time.js';\n\nconst vec3A = new Vec3();\nconst quat = new Quat();\nlet ids = 0;\nclass XrInputSource extends EventHandler {\n\tconstructor(manager, xrInputSource) {\n\t\tsuper();\n\t\tthis._id = void 0;\n\t\tthis._manager = void 0;\n\t\tthis._xrInputSource = void 0;\n\t\tthis._ray = new Ray();\n\t\tthis._rayLocal = new Ray();\n\t\tthis._grip = false;\n\t\tthis._hand = null;\n\t\tthis._velocitiesAvailable = false;\n\t\tthis._velocitiesTimestamp = now();\n\t\tthis._localTransform = null;\n\t\tthis._worldTransform = null;\n\t\tthis._position = new Vec3();\n\t\tthis._rotation = new Quat();\n\t\tthis._localPosition = null;\n\t\tthis._localPositionLast = null;\n\t\tthis._localRotation = null;\n\t\tthis._linearVelocity = null;\n\t\tthis._dirtyLocal = true;\n\t\tthis._dirtyRay = false;\n\t\tthis._selecting = false;\n\t\tthis._squeezing = false;\n\t\tthis._elementInput = true;\n\t\tthis._elementEntity = null;\n\t\tthis._hitTestSources = [];\n\t\tthis._id = ++ids;\n\t\tthis._manager = manager;\n\t\tthis._xrInputSource = xrInputSource;\n\t\tif (xrInputSource.hand) this._hand = new XrHand(this);\n\t}\n\tget id() {\n\t\treturn this._id;\n\t}\n\tget inputSource() {\n\t\treturn this._xrInputSource;\n\t}\n\tget targetRayMode() {\n\t\treturn this._xrInputSource.targetRayMode;\n\t}\n\tget handedness() {\n\t\treturn this._xrInputSource.handedness;\n\t}\n\tget profiles() {\n\t\treturn this._xrInputSource.profiles;\n\t}\n\tget grip() {\n\t\treturn this._grip;\n\t}\n\tget hand() {\n\t\treturn this._hand;\n\t}\n\tget gamepad() {\n\t\treturn this._xrInputSource.gamepad || null;\n\t}\n\tget selecting() {\n\t\treturn this._selecting;\n\t}\n\tget squeezing() {\n\t\treturn this._squeezing;\n\t}\n\tset elementInput(value) {\n\t\tif (this._elementInput === value) return;\n\t\tthis._elementInput = value;\n\t\tif (!this._elementInput) this._elementEntity = null;\n\t}\n\tget elementInput() {\n\t\treturn this._elementInput;\n\t}\n\tget elementEntity() {\n\t\treturn this._elementEntity;\n\t}\n\tget hitTestSources() {\n\t\treturn this._hitTestSources;\n\t}\n\tupdate(frame) {\n\t\tif (this._hand) {\n\t\t\tthis._hand.update(frame);\n\t\t} else {\n\t\t\tconst gripSpace = this._xrInputSource.gripSpace;\n\t\t\tif (gripSpace) {\n\t\t\t\tconst gripPose = frame.getPose(gripSpace, this._manager._referenceSpace);\n\t\t\t\tif (gripPose) {\n\t\t\t\t\tif (!this._grip) {\n\t\t\t\t\t\tthis._grip = true;\n\t\t\t\t\t\tthis._localTransform = new Mat4();\n\t\t\t\t\t\tthis._worldTransform = new Mat4();\n\t\t\t\t\t\tthis._localPositionLast = new Vec3();\n\t\t\t\t\t\tthis._localPosition = new Vec3();\n\t\t\t\t\t\tthis._localRotation = new Quat();\n\t\t\t\t\t\tthis._linearVelocity = new Vec3();\n\t\t\t\t\t}\n\t\t\t\t\tconst timestamp = now();\n\t\t\t\t\tconst dt = (timestamp - this._velocitiesTimestamp) / 1000;\n\t\t\t\t\tthis._velocitiesTimestamp = timestamp;\n\t\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\t\tthis._localPositionLast.copy(this._localPosition);\n\t\t\t\t\tthis._localPosition.copy(gripPose.transform.position);\n\t\t\t\t\tthis._localRotation.copy(gripPose.transform.orientation);\n\t\t\t\t\tthis._velocitiesAvailable = true;\n\t\t\t\t\tif (this._manager.input.velocitiesSupported && gripPose.linearVelocity) {\n\t\t\t\t\t\tthis._linearVelocity.copy(gripPose.linearVelocity);\n\t\t\t\t\t} else if (dt > 0) {\n\t\t\t\t\t\tvec3A.sub2(this._localPosition, this._localPositionLast).divScalar(dt);\n\t\t\t\t\t\tthis._linearVelocity.lerp(this._linearVelocity, vec3A, 0.15);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis._velocitiesAvailable = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst targetRayPose = frame.getPose(this._xrInputSource.targetRaySpace, this._manager._referenceSpace);\n\t\t\tif (targetRayPose) {\n\t\t\t\tthis._dirtyRay = true;\n\t\t\t\tthis._rayLocal.origin.copy(targetRayPose.transform.position);\n\t\t\t\tthis._rayLocal.direction.set(0, 0, -1);\n\t\t\t\tquat.copy(targetRayPose.transform.orientation);\n\t\t\t\tquat.transformVector(this._rayLocal.direction, this._rayLocal.direction);\n\t\t\t}\n\t\t}\n\t}\n\t_updateTransforms() {\n\t\tif (this._dirtyLocal) {\n\t\t\tthis._dirtyLocal = false;\n\t\t\tthis._localTransform.setTRS(this._localPosition, this._localRotation, Vec3.ONE);\n\t\t}\n\t\tconst parent = this._manager.camera.parent;\n\t\tif (parent) {\n\t\t\tthis._worldTransform.mul2(parent.getWorldTransform(), this._localTransform);\n\t\t} else {\n\t\t\tthis._worldTransform.copy(this._localTransform);\n\t\t}\n\t}\n\t_updateRayTransforms() {\n\t\tconst dirty = this._dirtyRay;\n\t\tthis._dirtyRay = false;\n\t\tconst parent = this._manager.camera.parent;\n\t\tif (parent) {\n\t\t\tconst parentTransform = this._manager.camera.parent.getWorldTransform();\n\t\t\tparentTransform.getTranslation(this._position);\n\t\t\tthis._rotation.setFromMat4(parentTransform);\n\t\t\tthis._rotation.transformVector(this._rayLocal.origin, this._ray.origin);\n\t\t\tthis._ray.origin.add(this._position);\n\t\t\tthis._rotation.transformVector(this._rayLocal.direction, this._ray.direction);\n\t\t} else if (dirty) {\n\t\t\tthis._ray.origin.copy(this._rayLocal.origin);\n\t\t\tthis._ray.direction.copy(this._rayLocal.direction);\n\t\t}\n\t}\n\tgetPosition() {\n\t\tif (!this._position) return null;\n\t\tthis._updateTransforms();\n\t\tthis._worldTransform.getTranslation(this._position);\n\t\treturn this._position;\n\t}\n\tgetLocalPosition() {\n\t\treturn this._localPosition;\n\t}\n\tgetRotation() {\n\t\tif (!this._rotation) return null;\n\t\tthis._updateTransforms();\n\t\tthis._rotation.setFromMat4(this._worldTransform);\n\t\treturn this._rotation;\n\t}\n\tgetLocalRotation() {\n\t\treturn this._localRotation;\n\t}\n\tgetLinearVelocity() {\n\t\tif (!this._velocitiesAvailable) return null;\n\t\treturn this._linearVelocity;\n\t}\n\tgetOrigin() {\n\t\tthis._updateRayTransforms();\n\t\treturn this._ray.origin;\n\t}\n\tgetDirection() {\n\t\tthis._updateRayTransforms();\n\t\treturn this._ray.direction;\n\t}\n\thitTestStart(options = {}) {\n\t\toptions.inputSource = this;\n\t\toptions.profile = this._xrInputSource.profiles[0];\n\t\tconst callback = options.callback;\n\t\toptions.callback = (err, hitTestSource) => {\n\t\t\tif (hitTestSource) this.onHitTestSourceAdd(hitTestSource);\n\t\t\tif (callback) callback(err, hitTestSource);\n\t\t};\n\t\tthis._manager.hitTest.start(options);\n\t}\n\tonHitTestSourceAdd(hitTestSource) {\n\t\tthis._hitTestSources.push(hitTestSource);\n\t\tthis.fire('hittest:add', hitTestSource);\n\t\thitTestSource.on('result', (position, rotation, inputSource, hitTestResult) => {\n\t\t\tif (inputSource !== this) return;\n\t\t\tthis.fire('hittest:result', hitTestSource, position, rotation, hitTestResult);\n\t\t});\n\t\thitTestSource.once('remove', () => {\n\t\t\tthis.onHitTestSourceRemove(hitTestSource);\n\t\t\tthis.fire('hittest:remove', hitTestSource);\n\t\t});\n\t}\n\tonHitTestSourceRemove(hitTestSource) {\n\t\tconst ind = this._hitTestSources.indexOf(hitTestSource);\n\t\tif (ind !== -1) this._hitTestSources.splice(ind, 1);\n\t}\n}\nXrInputSource.EVENT_REMOVE = 'remove';\nXrInputSource.EVENT_SELECT = 'select';\nXrInputSource.EVENT_SELECTSTART = 'selectstart';\nXrInputSource.EVENT_SELECTEND = 'selectend';\nXrInputSource.EVENT_SQUEEZE = 'squeeze';\nXrInputSource.EVENT_SQUEEZESTART = 'squeezestart';\nXrInputSource.EVENT_SQUEEZEEND = 'squeezeend';\nXrInputSource.EVENT_HITTESTADD = 'hittest:add';\nXrInputSource.EVENT_HITTESTREMOVE = 'hittest:remove';\nXrInputSource.EVENT_HITTESTRESULT = 'hittest:result';\n\nexport { XrInputSource };\n", "import { platform } from '../../core/platform.js';\nimport { Vec3 } from '../../core/math/vec3.js';\nimport { Vec4 } from '../../core/math/vec4.js';\nimport { Ray } from '../../core/shape/ray.js';\nimport { Mouse } from '../../platform/input/mouse.js';\nimport { getApplication } from '../globals.js';\n\nlet targetX, targetY;\nconst vecA = new Vec3();\nconst vecB = new Vec3();\nconst rayA = new Ray();\nconst rayB = new Ray();\nconst rayC = new Ray();\nrayA.end = new Vec3();\nrayB.end = new Vec3();\nrayC.end = new Vec3();\nconst _pq = new Vec3();\nconst _pa = new Vec3();\nconst _pb = new Vec3();\nconst _pc = new Vec3();\nconst _pd = new Vec3();\nconst _m = new Vec3();\nconst _au = new Vec3();\nconst _bv = new Vec3();\nconst _cw = new Vec3();\nconst _ir = new Vec3();\nconst _sct = new Vec3();\nconst _accumulatedScale = new Vec3();\nconst _paddingTop = new Vec3();\nconst _paddingBottom = new Vec3();\nconst _paddingLeft = new Vec3();\nconst _paddingRight = new Vec3();\nconst _cornerBottomLeft = new Vec3();\nconst _cornerBottomRight = new Vec3();\nconst _cornerTopRight = new Vec3();\nconst _cornerTopLeft = new Vec3();\nconst ZERO_VEC4 = new Vec4();\nfunction scalarTriple(p1, p2, p3) {\n\treturn _sct.cross(p1, p2).dot(p3);\n}\nfunction intersectLineQuad(p, q, corners) {\n\t_pq.sub2(q, p);\n\t_pa.sub2(corners[0], p);\n\t_pb.sub2(corners[1], p);\n\t_pc.sub2(corners[2], p);\n\t_m.cross(_pc, _pq);\n\tlet v = _pa.dot(_m);\n\tlet u;\n\tlet w;\n\tif (v >= 0) {\n\t\tu = -_pb.dot(_m);\n\t\tif (u < 0) return -1;\n\t\tw = scalarTriple(_pq, _pb, _pa);\n\t\tif (w < 0) return -1;\n\t\tconst denom = 1.0 / (u + v + w);\n\t\t_au.copy(corners[0]).mulScalar(u * denom);\n\t\t_bv.copy(corners[1]).mulScalar(v * denom);\n\t\t_cw.copy(corners[2]).mulScalar(w * denom);\n\t\t_ir.copy(_au).add(_bv).add(_cw);\n\t} else {\n\t\t_pd.sub2(corners[3], p);\n\t\tu = _pd.dot(_m);\n\t\tif (u < 0) return -1;\n\t\tw = scalarTriple(_pq, _pa, _pd);\n\t\tif (w < 0) return -1;\n\t\tv = -v;\n\t\tconst denom = 1.0 / (u + v + w);\n\t\t_au.copy(corners[0]).mulScalar(u * denom);\n\t\t_bv.copy(corners[3]).mulScalar(v * denom);\n\t\t_cw.copy(corners[2]).mulScalar(w * denom);\n\t\t_ir.copy(_au).add(_bv).add(_cw);\n\t}\n\tif (_pq.sub2(corners[0], corners[2]).lengthSq() < 0.0001 * 0.0001) return -1;\n\tif (_pq.sub2(corners[1], corners[3]).lengthSq() < 0.0001 * 0.0001) return -1;\n\treturn _ir.sub(p).lengthSq();\n}\nclass ElementInputEvent {\n\tconstructor(event, element, camera) {\n\t\tthis.event = event;\n\t\tthis.element = element;\n\t\tthis.camera = camera;\n\t\tthis._stopPropagation = false;\n\t}\n\tstopPropagation() {\n\t\tthis._stopPropagation = true;\n\t\tif (this.event) {\n\t\t\tthis.event.stopImmediatePropagation();\n\t\t\tthis.event.stopPropagation();\n\t\t}\n\t}\n}\nclass ElementMouseEvent extends ElementInputEvent {\n\tconstructor(event, element, camera, x, y, lastX, lastY) {\n\t\tsuper(event, element, camera);\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.ctrlKey = event.ctrlKey || false;\n\t\tthis.altKey = event.altKey || false;\n\t\tthis.shiftKey = event.shiftKey || false;\n\t\tthis.metaKey = event.metaKey || false;\n\t\tthis.button = event.button;\n\t\tif (Mouse.isPointerLocked()) {\n\t\t\tthis.dx = event.movementX || event.webkitMovementX || event.mozMovementX || 0;\n\t\t\tthis.dy = event.movementY || event.webkitMovementY || event.mozMovementY || 0;\n\t\t} else {\n\t\t\tthis.dx = x - lastX;\n\t\t\tthis.dy = y - lastY;\n\t\t}\n\t\tthis.wheelDelta = 0;\n\t\tif (event.type === 'wheel') {\n\t\t\tif (event.deltaY > 0) {\n\t\t\t\tthis.wheelDelta = 1;\n\t\t\t} else if (event.deltaY < 0) {\n\t\t\t\tthis.wheelDelta = -1;\n\t\t\t}\n\t\t}\n\t}\n}\nclass ElementTouchEvent extends ElementInputEvent {\n\tconstructor(event, element, camera, x, y, touch) {\n\t\tsuper(event, element, camera);\n\t\tthis.touches = event.touches;\n\t\tthis.changedTouches = event.changedTouches;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.touch = touch;\n\t}\n}\nclass ElementSelectEvent extends ElementInputEvent {\n\tconstructor(event, element, camera, inputSource) {\n\t\tsuper(event, element, camera);\n\t\tthis.inputSource = inputSource;\n\t}\n}\nclass ElementInput {\n\tconstructor(domElement, options) {\n\t\tthis._app = null;\n\t\tthis._attached = false;\n\t\tthis._target = null;\n\t\tthis._enabled = true;\n\t\tthis._lastX = 0;\n\t\tthis._lastY = 0;\n\t\tthis._upHandler = this._handleUp.bind(this);\n\t\tthis._downHandler = this._handleDown.bind(this);\n\t\tthis._moveHandler = this._handleMove.bind(this);\n\t\tthis._wheelHandler = this._handleWheel.bind(this);\n\t\tthis._touchstartHandler = this._handleTouchStart.bind(this);\n\t\tthis._touchendHandler = this._handleTouchEnd.bind(this);\n\t\tthis._touchcancelHandler = this._touchendHandler;\n\t\tthis._touchmoveHandler = this._handleTouchMove.bind(this);\n\t\tthis._sortHandler = this._sortElements.bind(this);\n\t\tthis._elements = [];\n\t\tthis._hoveredElement = null;\n\t\tthis._pressedElement = null;\n\t\tthis._touchedElements = {};\n\t\tthis._touchesForWhichTouchLeaveHasFired = {};\n\t\tthis._selectedElements = {};\n\t\tthis._selectedPressedElements = {};\n\t\tthis._useMouse = !options || options.useMouse !== false;\n\t\tthis._useTouch = !options || options.useTouch !== false;\n\t\tthis._useXr = !options || options.useXr !== false;\n\t\tthis._selectEventsAttached = false;\n\t\tif (platform.touch) this._clickedEntities = {};\n\t\tthis.attach(domElement);\n\t}\n\tset enabled(value) {\n\t\tthis._enabled = value;\n\t}\n\tget enabled() {\n\t\treturn this._enabled;\n\t}\n\tset app(value) {\n\t\tthis._app = value;\n\t}\n\tget app() {\n\t\treturn this._app || getApplication();\n\t}\n\tattach(domElement) {\n\t\tif (this._attached) {\n\t\t\tthis._attached = false;\n\t\t\tthis.detach();\n\t\t}\n\t\tthis._target = domElement;\n\t\tthis._attached = true;\n\t\tconst opts = platform.passiveEvents ? {\n\t\t\tpassive: true\n\t\t} : false;\n\t\tif (this._useMouse) {\n\t\t\twindow.addEventListener('mouseup', this._upHandler, opts);\n\t\t\twindow.addEventListener('mousedown', this._downHandler, opts);\n\t\t\twindow.addEventListener('mousemove', this._moveHandler, opts);\n\t\t\twindow.addEventListener('wheel', this._wheelHandler, opts);\n\t\t}\n\t\tif (this._useTouch && platform.touch) {\n\t\t\tthis._target.addEventListener('touchstart', this._touchstartHandler, opts);\n\t\t\tthis._target.addEventListener('touchend', this._touchendHandler, false);\n\t\t\tthis._target.addEventListener('touchmove', this._touchmoveHandler, false);\n\t\t\tthis._target.addEventListener('touchcancel', this._touchcancelHandler, false);\n\t\t}\n\t\tthis.attachSelectEvents();\n\t}\n\tattachSelectEvents() {\n\t\tif (!this._selectEventsAttached && this._useXr && this.app && this.app.xr && this.app.xr.supported) {\n\t\t\tif (!this._clickedEntities) this._clickedEntities = {};\n\t\t\tthis._selectEventsAttached = true;\n\t\t\tthis.app.xr.on('start', this._onXrStart, this);\n\t\t}\n\t}\n\tdetach() {\n\t\tif (!this._attached) return;\n\t\tthis._attached = false;\n\t\tconst opts = platform.passiveEvents ? {\n\t\t\tpassive: true\n\t\t} : false;\n\t\tif (this._useMouse) {\n\t\t\twindow.removeEventListener('mouseup', this._upHandler, opts);\n\t\t\twindow.removeEventListener('mousedown', this._downHandler, opts);\n\t\t\twindow.removeEventListener('mousemove', this._moveHandler, opts);\n\t\t\twindow.removeEventListener('wheel', this._wheelHandler, opts);\n\t\t}\n\t\tif (this._useTouch) {\n\t\t\tthis._target.removeEventListener('touchstart', this._touchstartHandler, opts);\n\t\t\tthis._target.removeEventListener('touchend', this._touchendHandler, false);\n\t\t\tthis._target.removeEventListener('touchmove', this._touchmoveHandler, false);\n\t\t\tthis._target.removeEventListener('touchcancel', this._touchcancelHandler, false);\n\t\t}\n\t\tif (this._selectEventsAttached) {\n\t\t\tthis._selectEventsAttached = false;\n\t\t\tthis.app.xr.off('start', this._onXrStart, this);\n\t\t\tthis.app.xr.off('end', this._onXrEnd, this);\n\t\t\tthis.app.xr.off('update', this._onXrUpdate, this);\n\t\t\tthis.app.xr.input.off('selectstart', this._onSelectStart, this);\n\t\t\tthis.app.xr.input.off('selectend', this._onSelectEnd, this);\n\t\t\tthis.app.xr.input.off('remove', this._onXrInputRemove, this);\n\t\t}\n\t\tthis._target = null;\n\t}\n\taddElement(element) {\n\t\tif (this._elements.indexOf(element) === -1) this._elements.push(element);\n\t}\n\tremoveElement(element) {\n\t\tconst idx = this._elements.indexOf(element);\n\t\tif (idx !== -1) this._elements.splice(idx, 1);\n\t}\n\t_handleUp(event) {\n\t\tif (!this._enabled) return;\n\t\tif (Mouse.isPointerLocked()) return;\n\t\tthis._calcMouseCoords(event);\n\t\tthis._onElementMouseEvent('mouseup', event);\n\t}\n\t_handleDown(event) {\n\t\tif (!this._enabled) return;\n\t\tif (Mouse.isPointerLocked()) return;\n\t\tthis._calcMouseCoords(event);\n\t\tthis._onElementMouseEvent('mousedown', event);\n\t}\n\t_handleMove(event) {\n\t\tif (!this._enabled) return;\n\t\tthis._calcMouseCoords(event);\n\t\tthis._onElementMouseEvent('mousemove', event);\n\t\tthis._lastX = targetX;\n\t\tthis._lastY = targetY;\n\t}\n\t_handleWheel(event) {\n\t\tif (!this._enabled) return;\n\t\tthis._calcMouseCoords(event);\n\t\tthis._onElementMouseEvent('mousewheel', event);\n\t}\n\t_determineTouchedElements(event) {\n\t\tconst touchedElements = {};\n\t\tconst cameras = this.app.systems.camera.cameras;\n\t\tfor (let i = cameras.length - 1; i >= 0; i--) {\n\t\t\tconst camera = cameras[i];\n\t\t\tlet done = 0;\n\t\t\tconst len = event.changedTouches.length;\n\t\t\tfor (let j = 0; j < len; j++) {\n\t\t\t\tif (touchedElements[event.changedTouches[j].identifier]) {\n\t\t\t\t\tdone++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst coords = this._calcTouchCoords(event.changedTouches[j]);\n\t\t\t\tconst element = this._getTargetElementByCoords(camera, coords.x, coords.y);\n\t\t\t\tif (element) {\n\t\t\t\t\tdone++;\n\t\t\t\t\ttouchedElements[event.changedTouches[j].identifier] = {\n\t\t\t\t\t\telement: element,\n\t\t\t\t\t\tcamera: camera,\n\t\t\t\t\t\tx: coords.x,\n\t\t\t\t\t\ty: coords.y\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (done === len) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn touchedElements;\n\t}\n\t_handleTouchStart(event) {\n\t\tif (!this._enabled) return;\n\t\tconst newTouchedElements = this._determineTouchedElements(event);\n\t\tfor (let i = 0, len = event.changedTouches.length; i < len; i++) {\n\t\t\tconst touch = event.changedTouches[i];\n\t\t\tconst newTouchInfo = newTouchedElements[touch.identifier];\n\t\t\tconst oldTouchInfo = this._touchedElements[touch.identifier];\n\t\t\tif (newTouchInfo && (!oldTouchInfo || newTouchInfo.element !== oldTouchInfo.element)) {\n\t\t\t\tthis._fireEvent(event.type, new ElementTouchEvent(event, newTouchInfo.element, newTouchInfo.camera, newTouchInfo.x, newTouchInfo.y, touch));\n\t\t\t\tthis._touchesForWhichTouchLeaveHasFired[touch.identifier] = false;\n\t\t\t}\n\t\t}\n\t\tfor (const touchId in newTouchedElements) {\n\t\t\tthis._touchedElements[touchId] = newTouchedElements[touchId];\n\t\t}\n\t}\n\t_handleTouchEnd(event) {\n\t\tif (!this._enabled) return;\n\t\tconst cameras = this.app.systems.camera.cameras;\n\t\tfor (const key in this._clickedEntities) {\n\t\t\tdelete this._clickedEntities[key];\n\t\t}\n\t\tfor (let i = 0, len = event.changedTouches.length; i < len; i++) {\n\t\t\tconst touch = event.changedTouches[i];\n\t\t\tconst touchInfo = this._touchedElements[touch.identifier];\n\t\t\tif (!touchInfo) continue;\n\t\t\tconst element = touchInfo.element;\n\t\t\tconst camera = touchInfo.camera;\n\t\t\tconst x = touchInfo.x;\n\t\t\tconst y = touchInfo.y;\n\t\t\tdelete this._touchedElements[touch.identifier];\n\t\t\tdelete this._touchesForWhichTouchLeaveHasFired[touch.identifier];\n\t\t\tconst coords = this._calcTouchCoords(touch);\n\t\t\tfor (let c = cameras.length - 1; c >= 0; c--) {\n\t\t\t\tconst hovered = this._getTargetElementByCoords(cameras[c], coords.x, coords.y);\n\t\t\t\tif (hovered === element) {\n\t\t\t\t\tif (!this._clickedEntities[element.entity.getGuid()]) {\n\t\t\t\t\t\tthis._fireEvent('click', new ElementTouchEvent(event, element, camera, x, y, touch));\n\t\t\t\t\t\tthis._clickedEntities[element.entity.getGuid()] = Date.now();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._fireEvent(event.type, new ElementTouchEvent(event, element, camera, x, y, touch));\n\t\t}\n\t}\n\t_handleTouchMove(event) {\n\t\tevent.preventDefault();\n\t\tif (!this._enabled) return;\n\t\tconst newTouchedElements = this._determineTouchedElements(event);\n\t\tfor (let i = 0, len = event.changedTouches.length; i < len; i++) {\n\t\t\tconst touch = event.changedTouches[i];\n\t\t\tconst newTouchInfo = newTouchedElements[touch.identifier];\n\t\t\tconst oldTouchInfo = this._touchedElements[touch.identifier];\n\t\t\tif (oldTouchInfo) {\n\t\t\t\tconst coords = this._calcTouchCoords(touch);\n\t\t\t\tif ((!newTouchInfo || newTouchInfo.element !== oldTouchInfo.element) && !this._touchesForWhichTouchLeaveHasFired[touch.identifier]) {\n\t\t\t\t\tthis._fireEvent('touchleave', new ElementTouchEvent(event, oldTouchInfo.element, oldTouchInfo.camera, coords.x, coords.y, touch));\n\t\t\t\t\tthis._touchesForWhichTouchLeaveHasFired[touch.identifier] = true;\n\t\t\t\t}\n\t\t\t\tthis._fireEvent('touchmove', new ElementTouchEvent(event, oldTouchInfo.element, oldTouchInfo.camera, coords.x, coords.y, touch));\n\t\t\t}\n\t\t}\n\t}\n\t_onElementMouseEvent(eventType, event) {\n\t\tlet element = null;\n\t\tconst lastHovered = this._hoveredElement;\n\t\tthis._hoveredElement = null;\n\t\tconst cameras = this.app.systems.camera.cameras;\n\t\tlet camera;\n\t\tfor (let i = cameras.length - 1; i >= 0; i--) {\n\t\t\tcamera = cameras[i];\n\t\t\telement = this._getTargetElementByCoords(camera, targetX, targetY);\n\t\t\tif (element) break;\n\t\t}\n\t\tthis._hoveredElement = element;\n\t\tif ((eventType === 'mousemove' || eventType === 'mouseup') && this._pressedElement) {\n\t\t\tthis._fireEvent(eventType, new ElementMouseEvent(event, this._pressedElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t} else if (element) {\n\t\t\tthis._fireEvent(eventType, new ElementMouseEvent(event, element, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\tif (eventType === 'mousedown') {\n\t\t\t\tthis._pressedElement = element;\n\t\t\t}\n\t\t}\n\t\tif (lastHovered !== this._hoveredElement) {\n\t\t\tif (lastHovered) {\n\t\t\t\tthis._fireEvent('mouseleave', new ElementMouseEvent(event, lastHovered, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t}\n\t\t\tif (this._hoveredElement) {\n\t\t\t\tthis._fireEvent('mouseenter', new ElementMouseEvent(event, this._hoveredElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t}\n\t\t}\n\t\tif (eventType === 'mouseup' && this._pressedElement) {\n\t\t\tif (this._pressedElement === this._hoveredElement) {\n\t\t\t\tconst guid = this._hoveredElement.entity.getGuid();\n\t\t\t\tlet fireClick = !this._clickedEntities;\n\t\t\t\tif (this._clickedEntities) {\n\t\t\t\t\tconst lastTouchUp = this._clickedEntities[guid] || 0;\n\t\t\t\t\tconst dt = Date.now() - lastTouchUp;\n\t\t\t\t\tfireClick = dt > 300;\n\t\t\t\t\tdelete this._clickedEntities[guid];\n\t\t\t\t}\n\t\t\t\tif (fireClick) {\n\t\t\t\t\tthis._fireEvent('click', new ElementMouseEvent(event, this._hoveredElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._pressedElement = null;\n\t\t}\n\t}\n\t_onXrStart() {\n\t\tthis.app.xr.on('end', this._onXrEnd, this);\n\t\tthis.app.xr.on('update', this._onXrUpdate, this);\n\t\tthis.app.xr.input.on('selectstart', this._onSelectStart, this);\n\t\tthis.app.xr.input.on('selectend', this._onSelectEnd, this);\n\t\tthis.app.xr.input.on('remove', this._onXrInputRemove, this);\n\t}\n\t_onXrEnd() {\n\t\tthis.app.xr.off('update', this._onXrUpdate, this);\n\t\tthis.app.xr.input.off('selectstart', this._onSelectStart, this);\n\t\tthis.app.xr.input.off('selectend', this._onSelectEnd, this);\n\t\tthis.app.xr.input.off('remove', this._onXrInputRemove, this);\n\t}\n\t_onXrUpdate() {\n\t\tif (!this._enabled) return;\n\t\tconst inputSources = this.app.xr.input.inputSources;\n\t\tfor (let i = 0; i < inputSources.length; i++) {\n\t\t\tthis._onElementSelectEvent('selectmove', inputSources[i], null);\n\t\t}\n\t}\n\t_onXrInputRemove(inputSource) {\n\t\tconst hovered = this._selectedElements[inputSource.id];\n\t\tif (hovered) {\n\t\t\tinputSource._elementEntity = null;\n\t\t\tthis._fireEvent('selectleave', new ElementSelectEvent(null, hovered, null, inputSource));\n\t\t}\n\t\tdelete this._selectedElements[inputSource.id];\n\t\tdelete this._selectedPressedElements[inputSource.id];\n\t}\n\t_onSelectStart(inputSource, event) {\n\t\tif (!this._enabled) return;\n\t\tthis._onElementSelectEvent('selectstart', inputSource, event);\n\t}\n\t_onSelectEnd(inputSource, event) {\n\t\tif (!this._enabled) return;\n\t\tthis._onElementSelectEvent('selectend', inputSource, event);\n\t}\n\t_onElementSelectEvent(eventType, inputSource, event) {\n\t\tlet element;\n\t\tconst hoveredBefore = this._selectedElements[inputSource.id];\n\t\tlet hoveredNow;\n\t\tconst cameras = this.app.systems.camera.cameras;\n\t\tlet camera;\n\t\tif (inputSource.elementInput) {\n\t\t\trayC.set(inputSource.getOrigin(), inputSource.getDirection());\n\t\t\tfor (let i = cameras.length - 1; i >= 0; i--) {\n\t\t\t\tcamera = cameras[i];\n\t\t\t\telement = this._getTargetElementByRay(rayC, camera);\n\t\t\t\tif (element) break;\n\t\t\t}\n\t\t}\n\t\tinputSource._elementEntity = element || null;\n\t\tif (element) {\n\t\t\tthis._selectedElements[inputSource.id] = element;\n\t\t\thoveredNow = element;\n\t\t} else {\n\t\t\tdelete this._selectedElements[inputSource.id];\n\t\t}\n\t\tif (hoveredBefore !== hoveredNow) {\n\t\t\tif (hoveredBefore) this._fireEvent('selectleave', new ElementSelectEvent(event, hoveredBefore, camera, inputSource));\n\t\t\tif (hoveredNow) this._fireEvent('selectenter', new ElementSelectEvent(event, hoveredNow, camera, inputSource));\n\t\t}\n\t\tconst pressed = this._selectedPressedElements[inputSource.id];\n\t\tif (eventType === 'selectmove' && pressed) {\n\t\t\tthis._fireEvent('selectmove', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t}\n\t\tif (eventType === 'selectstart') {\n\t\t\tthis._selectedPressedElements[inputSource.id] = hoveredNow;\n\t\t\tif (hoveredNow) this._fireEvent('selectstart', new ElementSelectEvent(event, hoveredNow, camera, inputSource));\n\t\t}\n\t\tif (!inputSource.elementInput && pressed) {\n\t\t\tdelete this._selectedPressedElements[inputSource.id];\n\t\t\tif (hoveredBefore) {\n\t\t\t\tthis._fireEvent('selectend', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t}\n\t\t}\n\t\tif (eventType === 'selectend' && inputSource.elementInput) {\n\t\t\tdelete this._selectedPressedElements[inputSource.id];\n\t\t\tif (pressed) {\n\t\t\t\tthis._fireEvent('selectend', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t}\n\t\t\tif (pressed && pressed === hoveredBefore) {\n\t\t\t\tthis._fireEvent('click', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t}\n\t\t}\n\t}\n\t_fireEvent(name, evt) {\n\t\tlet element = evt.element;\n\t\twhile (true) {\n\t\t\telement.fire(name, evt);\n\t\t\tif (evt._stopPropagation) break;\n\t\t\tif (!element.entity.parent) break;\n\t\t\telement = element.entity.parent.element;\n\t\t\tif (!element) break;\n\t\t}\n\t}\n\t_calcMouseCoords(event) {\n\t\tconst rect = this._target.getBoundingClientRect();\n\t\tconst left = Math.floor(rect.left);\n\t\tconst top = Math.floor(rect.top);\n\t\ttargetX = event.clientX - left;\n\t\ttargetY = event.clientY - top;\n\t}\n\t_calcTouchCoords(touch) {\n\t\tlet totalOffsetX = 0;\n\t\tlet totalOffsetY = 0;\n\t\tlet target = touch.target;\n\t\twhile (!(target instanceof HTMLElement)) {\n\t\t\ttarget = target.parentNode;\n\t\t}\n\t\tlet currentElement = target;\n\t\tdo {\n\t\t\ttotalOffsetX += currentElement.offsetLeft - currentElement.scrollLeft;\n\t\t\ttotalOffsetY += currentElement.offsetTop - currentElement.scrollTop;\n\t\t\tcurrentElement = currentElement.offsetParent;\n\t\t} while (currentElement);\n\t\treturn {\n\t\t\tx: touch.pageX - totalOffsetX,\n\t\t\ty: touch.pageY - totalOffsetY\n\t\t};\n\t}\n\t_sortElements(a, b) {\n\t\tconst layerOrder = this.app.scene.layers.sortTransparentLayers(a.layers, b.layers);\n\t\tif (layerOrder !== 0) return layerOrder;\n\t\tif (a.screen && !b.screen) return -1;\n\t\tif (!a.screen && b.screen) return 1;\n\t\tif (!a.screen && !b.screen) return 0;\n\t\tif (a.screen.screen.screenSpace && !b.screen.screen.screenSpace) return -1;\n\t\tif (b.screen.screen.screenSpace && !a.screen.screen.screenSpace) return 1;\n\t\treturn b.drawOrder - a.drawOrder;\n\t}\n\t_getTargetElementByCoords(camera, x, y) {\n\t\tconst rayScreen = this._calculateRayScreen(x, y, camera, rayA) ? rayA : null;\n\t\tconst ray3d = this._calculateRay3d(x, y, camera, rayB) ? rayB : null;\n\t\treturn this._getTargetElement(camera, rayScreen, ray3d);\n\t}\n\t_getTargetElementByRay(ray, camera) {\n\t\trayA.origin.copy(ray.origin);\n\t\trayA.direction.copy(ray.direction);\n\t\trayA.end.copy(rayA.direction).mulScalar(camera.farClip * 2).add(rayA.origin);\n\t\tconst ray3d = rayA;\n\t\tconst screenPos = camera.worldToScreen(ray3d.origin, vecA);\n\t\tconst rayScreen = this._calculateRayScreen(screenPos.x, screenPos.y, camera, rayB) ? rayB : null;\n\t\treturn this._getTargetElement(camera, rayScreen, ray3d);\n\t}\n\t_getTargetElement(camera, rayScreen, ray3d) {\n\t\tlet result = null;\n\t\tlet closestDistance3d = Infinity;\n\t\tthis._elements.sort(this._sortHandler);\n\t\tfor (let i = 0, len = this._elements.length; i < len; i++) {\n\t\t\tconst element = this._elements[i];\n\t\t\tif (!element.layers.some(v => camera.layersSet.has(v))) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (element.screen && element.screen.screen.screenSpace) {\n\t\t\t\tif (!rayScreen) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst currentDistance = this._checkElement(rayScreen, element, true);\n\t\t\t\tif (currentDistance >= 0) {\n\t\t\t\t\tresult = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!ray3d) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst currentDistance = this._checkElement(ray3d, element, false);\n\t\t\t\tif (currentDistance >= 0) {\n\t\t\t\t\tif (currentDistance < closestDistance3d) {\n\t\t\t\t\t\tresult = element;\n\t\t\t\t\t\tclosestDistance3d = currentDistance;\n\t\t\t\t\t}\n\t\t\t\t\tif (element.screen) {\n\t\t\t\t\t\tresult = element;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\t_calculateRayScreen(x, y, camera, ray) {\n\t\tconst sw = this.app.graphicsDevice.width;\n\t\tconst sh = this.app.graphicsDevice.height;\n\t\tconst cameraWidth = camera.rect.z * sw;\n\t\tconst cameraHeight = camera.rect.w * sh;\n\t\tconst cameraLeft = camera.rect.x * sw;\n\t\tconst cameraRight = cameraLeft + cameraWidth;\n\t\tconst cameraBottom = (1 - camera.rect.y) * sh;\n\t\tconst cameraTop = cameraBottom - cameraHeight;\n\t\tlet _x = x * sw / this._target.clientWidth;\n\t\tlet _y = y * sh / this._target.clientHeight;\n\t\tif (_x >= cameraLeft && _x <= cameraRight && _y <= cameraBottom && _y >= cameraTop) {\n\t\t\t_x = sw * (_x - cameraLeft) / cameraWidth;\n\t\t\t_y = sh * (_y - cameraTop) / cameraHeight;\n\t\t\t_y = sh - _y;\n\t\t\tray.origin.set(_x, _y, 1);\n\t\t\tray.direction.set(0, 0, -1);\n\t\t\tray.end.copy(ray.direction).mulScalar(2).add(ray.origin);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t_calculateRay3d(x, y, camera, ray) {\n\t\tconst sw = this._target.clientWidth;\n\t\tconst sh = this._target.clientHeight;\n\t\tconst cameraWidth = camera.rect.z * sw;\n\t\tconst cameraHeight = camera.rect.w * sh;\n\t\tconst cameraLeft = camera.rect.x * sw;\n\t\tconst cameraRight = cameraLeft + cameraWidth;\n\t\tconst cameraBottom = (1 - camera.rect.y) * sh;\n\t\tconst cameraTop = cameraBottom - cameraHeight;\n\t\tlet _x = x;\n\t\tlet _y = y;\n\t\tif (x >= cameraLeft && x <= cameraRight && y <= cameraBottom && _y >= cameraTop) {\n\t\t\t_x = sw * (_x - cameraLeft) / cameraWidth;\n\t\t\t_y = sh * (_y - cameraTop) / cameraHeight;\n\t\t\tcamera.screenToWorld(_x, _y, camera.nearClip, vecA);\n\t\t\tcamera.screenToWorld(_x, _y, camera.farClip, vecB);\n\t\t\tray.origin.copy(vecA);\n\t\t\tray.direction.set(0, 0, -1);\n\t\t\tray.end.copy(vecB);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t_checkElement(ray, element, screen) {\n\t\tif (element.maskedBy) {\n\t\t\tif (this._checkElement(ray, element.maskedBy.element, screen) < 0) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t\tlet scale;\n\t\tif (screen) {\n\t\t\tscale = ElementInput.calculateScaleToScreen(element);\n\t\t} else {\n\t\t\tscale = ElementInput.calculateScaleToWorld(element);\n\t\t}\n\t\tconst corners = ElementInput.buildHitCorners(element, screen ? element.screenCorners : element.worldCorners, scale);\n\t\treturn intersectLineQuad(ray.origin, ray.end, corners);\n\t}\n\tstatic buildHitCorners(element, screenOrWorldCorners, scale) {\n\t\tlet hitCorners = screenOrWorldCorners;\n\t\tconst button = element.entity && element.entity.button;\n\t\tif (button) {\n\t\t\tconst hitPadding = element.entity.button.hitPadding || ZERO_VEC4;\n\t\t\t_paddingTop.copy(element.entity.up);\n\t\t\t_paddingBottom.copy(_paddingTop).mulScalar(-1);\n\t\t\t_paddingRight.copy(element.entity.right);\n\t\t\t_paddingLeft.copy(_paddingRight).mulScalar(-1);\n\t\t\t_paddingTop.mulScalar(hitPadding.w * scale.y);\n\t\t\t_paddingBottom.mulScalar(hitPadding.y * scale.y);\n\t\t\t_paddingRight.mulScalar(hitPadding.z * scale.x);\n\t\t\t_paddingLeft.mulScalar(hitPadding.x * scale.x);\n\t\t\t_cornerBottomLeft.copy(hitCorners[0]).add(_paddingBottom).add(_paddingLeft);\n\t\t\t_cornerBottomRight.copy(hitCorners[1]).add(_paddingBottom).add(_paddingRight);\n\t\t\t_cornerTopRight.copy(hitCorners[2]).add(_paddingTop).add(_paddingRight);\n\t\t\t_cornerTopLeft.copy(hitCorners[3]).add(_paddingTop).add(_paddingLeft);\n\t\t\thitCorners = [_cornerBottomLeft, _cornerBottomRight, _cornerTopRight, _cornerTopLeft];\n\t\t}\n\t\tif (scale.x < 0) {\n\t\t\tconst left = hitCorners[2].x;\n\t\t\tconst right = hitCorners[0].x;\n\t\t\thitCorners[0].x = left;\n\t\t\thitCorners[1].x = right;\n\t\t\thitCorners[2].x = right;\n\t\t\thitCorners[3].x = left;\n\t\t}\n\t\tif (scale.y < 0) {\n\t\t\tconst bottom = hitCorners[2].y;\n\t\t\tconst top = hitCorners[0].y;\n\t\t\thitCorners[0].y = bottom;\n\t\t\thitCorners[1].y = bottom;\n\t\t\thitCorners[2].y = top;\n\t\t\thitCorners[3].y = top;\n\t\t}\n\t\tif (scale.z < 0) {\n\t\t\tconst x = hitCorners[2].x;\n\t\t\tconst y = hitCorners[2].y;\n\t\t\tconst z = hitCorners[2].z;\n\t\t\thitCorners[2].x = hitCorners[0].x;\n\t\t\thitCorners[2].y = hitCorners[0].y;\n\t\t\thitCorners[2].z = hitCorners[0].z;\n\t\t\thitCorners[0].x = x;\n\t\t\thitCorners[0].y = y;\n\t\t\thitCorners[0].z = z;\n\t\t}\n\t\treturn hitCorners;\n\t}\n\tstatic calculateScaleToScreen(element) {\n\t\tlet current = element.entity;\n\t\tconst screenScale = element.screen.screen.scale;\n\t\t_accumulatedScale.set(screenScale, screenScale, screenScale);\n\t\twhile (current && !current.screen) {\n\t\t\t_accumulatedScale.mul(current.getLocalScale());\n\t\t\tcurrent = current.parent;\n\t\t}\n\t\treturn _accumulatedScale;\n\t}\n\tstatic calculateScaleToWorld(element) {\n\t\tlet current = element.entity;\n\t\t_accumulatedScale.set(1, 1, 1);\n\t\twhile (current) {\n\t\t\t_accumulatedScale.mul(current.getLocalScale());\n\t\t\tcurrent = current.parent;\n\t\t}\n\t\treturn _accumulatedScale;\n\t}\n}\n\nexport { ElementInput, ElementInputEvent, ElementMouseEvent, ElementSelectEvent, ElementTouchEvent };\n", "import { version, revision } from '../core/core.js';\nimport { string } from '../core/string.js';\nimport { now } from '../core/time.js';\nimport { math } from '../core/math/math.js';\nimport { Color } from '../core/math/color.js';\nimport { Mat4 } from '../core/math/mat4.js';\nimport { Vec2 } from '../core/math/vec2.js';\nimport { Vec3 } from '../core/math/vec3.js';\nimport { Vec4 } from '../core/math/vec4.js';\nimport { BoundingBox } from '../core/shape/bounding-box.js';\nimport { BoundingSphere } from '../core/shape/bounding-sphere.js';\nimport { Frustum } from '../core/shape/frustum.js';\nimport { Plane } from '../core/shape/plane.js';\nimport { TYPE_INT8, TYPE_UINT8, TYPE_INT16, TYPE_UINT16, TYPE_INT32, TYPE_UINT32, TYPE_FLOAT32, PIXELFORMAT_LA8, PIXELFORMAT_RGB565, PIXELFORMAT_RGBA5551, PIXELFORMAT_RGBA4, PIXELFORMAT_RGB8, PIXELFORMAT_RGBA8, BLENDMODE_CONSTANT, BLENDMODE_ONE_MINUS_CONSTANT, ADDRESS_CLAMP_TO_EDGE, ADDRESS_MIRRORED_REPEAT, ADDRESS_REPEAT, BLENDMODE_ZERO, BLENDMODE_ONE, BLENDMODE_SRC_COLOR, BLENDMODE_ONE_MINUS_SRC_COLOR, BLENDMODE_DST_COLOR, BLENDMODE_ONE_MINUS_DST_COLOR, BLENDMODE_SRC_ALPHA, BLENDMODE_SRC_ALPHA_SATURATE, BLENDMODE_ONE_MINUS_SRC_ALPHA, BLENDMODE_DST_ALPHA, BLENDMODE_ONE_MINUS_DST_ALPHA, BUFFER_STATIC, BUFFER_DYNAMIC, BUFFER_STREAM, CULLFACE_NONE, CULLFACE_BACK, CULLFACE_FRONT, CULLFACE_FRONTANDBACK, FILTER_NEAREST, FILTER_LINEAR, FILTER_NEAREST_MIPMAP_NEAREST, FILTER_NEAREST_MIPMAP_LINEAR, FILTER_LINEAR_MIPMAP_NEAREST, FILTER_LINEAR_MIPMAP_LINEAR, INDEXFORMAT_UINT8, INDEXFORMAT_UINT16, INDEXFORMAT_UINT32, PRIMITIVE_POINTS, PRIMITIVE_LINES, PRIMITIVE_LINELOOP, PRIMITIVE_LINESTRIP, PRIMITIVE_TRIANGLES, PRIMITIVE_TRISTRIP, PRIMITIVE_TRIFAN, SEMANTIC_POSITION, SEMANTIC_NORMAL, SEMANTIC_COLOR, SEMANTIC_TEXCOORD, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_ATTR0, SEMANTIC_ATTR1, SEMANTIC_ATTR2, SEMANTIC_ATTR3, TEXTURELOCK_READ, TEXTURELOCK_WRITE, TEXTURETYPE_RGBM, TEXTURETYPE_DEFAULT, TEXTURETYPE_SWIZZLEGGGR } from '../platform/graphics/constants.js';\nimport { ShaderGenerator } from '../scene/shader-lib/programs/shader-generator.js';\nimport { drawQuadWithShader } from '../scene/graphics/quad-render-utils.js';\nimport { shaderChunks } from '../scene/shader-lib/chunks/chunks.js';\nimport { GraphicsDevice } from '../platform/graphics/graphics-device.js';\nimport { IndexBuffer } from '../platform/graphics/index-buffer.js';\nimport { LayerComposition } from '../scene/composition/layer-composition.js';\nimport { PostEffect } from '../scene/graphics/post-effect.js';\nimport { PostEffectQueue } from '../framework/components/camera/post-effect-queue.js';\nimport { ProgramLibrary } from '../scene/shader-lib/program-library.js';\nimport { getProgramLibrary, setProgramLibrary } from '../scene/shader-lib/get-program-library.js';\nimport { RenderTarget } from '../platform/graphics/render-target.js';\nimport { ScopeId } from '../platform/graphics/scope-id.js';\nimport { Shader } from '../platform/graphics/shader.js';\nimport { WebglShaderInput } from '../platform/graphics/webgl/webgl-shader-input.js';\nimport { Texture } from '../platform/graphics/texture.js';\nimport { VertexBuffer } from '../platform/graphics/vertex-buffer.js';\nimport { VertexFormat } from '../platform/graphics/vertex-format.js';\nimport { VertexIterator } from '../platform/graphics/vertex-iterator.js';\nimport { ShaderUtils } from '../platform/graphics/shader-utils.js';\nimport { BlendState } from '../platform/graphics/blend-state.js';\nimport { DepthState } from '../platform/graphics/depth-state.js';\nimport { PROJECTION_ORTHOGRAPHIC, PROJECTION_PERSPECTIVE, LAYERID_WORLD, LAYERID_IMMEDIATE } from '../scene/constants.js';\nimport { CylinderGeometry } from '../scene/geometry/cylinder-geometry.js';\nimport { BoxGeometry } from '../scene/geometry/box-geometry.js';\nimport { CapsuleGeometry } from '../scene/geometry/capsule-geometry.js';\nimport { ConeGeometry } from '../scene/geometry/cone-geometry.js';\nimport { PlaneGeometry } from '../scene/geometry/plane-geometry.js';\nimport { SphereGeometry } from '../scene/geometry/sphere-geometry.js';\nimport { TorusGeometry } from '../scene/geometry/torus-geometry.js';\nimport { calculateTangents } from '../scene/geometry/geometry-utils.js';\nimport { BasicMaterial } from '../scene/materials/basic-material.js';\nimport { ForwardRenderer } from '../scene/renderer/forward-renderer.js';\nimport { GraphNode } from '../scene/graph-node.js';\nimport { Material } from '../scene/materials/material.js';\nimport { Mesh } from '../scene/mesh.js';\nimport { Morph } from '../scene/morph.js';\nimport { MeshInstance } from '../scene/mesh-instance.js';\nimport { Model } from '../scene/model.js';\nimport { ParticleEmitter } from '../scene/particle-system/particle-emitter.js';\nimport { Picker } from '../framework/graphics/picker.js';\nimport { Scene } from '../scene/scene.js';\nimport { Skin } from '../scene/skin.js';\nimport { SkinInstance } from '../scene/skin-instance.js';\nimport { StandardMaterial } from '../scene/materials/standard-material.js';\nimport { Batch } from '../scene/batching/batch.js';\nimport { getDefaultMaterial } from '../scene/materials/default-material.js';\nimport { StandardMaterialOptions } from '../scene/materials/standard-material-options.js';\nimport { LitShaderOptions } from '../scene/shader-lib/programs/lit-shader-options.js';\nimport { Layer } from '../scene/layer.js';\nimport { Animation, Key, Node } from '../scene/animation/animation.js';\nimport { Skeleton } from '../scene/animation/skeleton.js';\nimport { Channel } from '../platform/audio/channel.js';\nimport { Channel3d } from '../platform/audio/channel3d.js';\nimport { Listener } from '../platform/sound/listener.js';\nimport { Sound } from '../platform/sound/sound.js';\nimport { SoundManager } from '../platform/sound/manager.js';\nimport { AssetRegistry } from '../framework/asset/asset-registry.js';\nimport { XrInputSource } from '../framework/xr/xr-input-source.js';\nimport { Controller } from '../platform/input/controller.js';\nimport { ElementInput } from '../framework/input/element-input.js';\nimport { GamePads } from '../platform/input/game-pads.js';\nimport { Keyboard } from '../platform/input/keyboard.js';\nimport { KeyboardEvent } from '../platform/input/keyboard-event.js';\nimport { Mouse } from '../platform/input/mouse.js';\nimport { MouseEvent } from '../platform/input/mouse-event.js';\nimport { TouchDevice } from '../platform/input/touch-device.js';\nimport { getTouchTargetCoords, Touch, TouchEvent } from '../platform/input/touch-event.js';\nimport { AppBase } from '../framework/app-base.js';\nimport { getApplication } from '../framework/globals.js';\nimport { CameraComponent } from '../framework/components/camera/component.js';\nimport { LightComponent } from '../framework/components/light/component.js';\nimport { ModelComponent } from '../framework/components/model/component.js';\nimport { RenderComponent } from '../framework/components/render/component.js';\nimport { BODYTYPE_STATIC, BODYTYPE_DYNAMIC, BODYTYPE_KINEMATIC, BODYFLAG_STATIC_OBJECT, BODYFLAG_KINEMATIC_OBJECT, BODYFLAG_NORESPONSE_OBJECT, BODYSTATE_ACTIVE_TAG, BODYSTATE_ISLAND_SLEEPING, BODYSTATE_WANTS_DEACTIVATION, BODYSTATE_DISABLE_DEACTIVATION, BODYSTATE_DISABLE_SIMULATION } from '../framework/components/rigid-body/constants.js';\nimport { RigidBodyComponent } from '../framework/components/rigid-body/component.js';\nimport { RigidBodyComponentSystem } from '../framework/components/rigid-body/system.js';\nimport { basisInitialize } from '../framework/handlers/basis.js';\nimport { Geometry } from '../scene/geometry/geometry.js';\n\nconst LINEBATCH_WORLD = 0;\nconst LINEBATCH_OVERLAY = 1;\nconst LINEBATCH_GIZMO = 2;\nconst log = {\n\twrite: function (text) {\n\t\tconsole.log(text);\n\t},\n\topen: function () {\n\t\tlog.write('Powered by PlayCanvas ' + version + ' ' + revision);\n\t},\n\tinfo: function (text) {\n\t\tconsole.info('INFO: ' + text);\n\t},\n\tdebug: function (text) {\n\t\tconsole.debug('DEBUG: ' + text);\n\t},\n\terror: function (text) {\n\t\tconsole.error('ERROR: ' + text);\n\t},\n\twarning: function (text) {\n\t\tconsole.warn('WARNING: ' + text);\n\t},\n\talert: function (text) {\n\t\tlog.write('ALERT: ' + text);\n\t\talert(text);\n\t},\n\tassert: function (condition, text) {\n\t\tif (condition === false) {\n\t\t\tlog.write('ASSERT: ' + text);\n\t\t}\n\t}\n};\nstring.endsWith = function (s, subs) {\n\treturn s.endsWith(subs);\n};\nstring.startsWith = function (s, subs) {\n\treturn s.startsWith(subs);\n};\nclass Timer {\n\tconstructor() {\n\t\tthis._isRunning = false;\n\t\tthis._a = 0;\n\t\tthis._b = 0;\n\t}\n\tstart() {\n\t\tthis._isRunning = true;\n\t\tthis._a = now();\n\t}\n\tstop() {\n\t\tthis._isRunning = false;\n\t\tthis._b = now();\n\t}\n\tgetMilliseconds() {\n\t\treturn this._b - this._a;\n\t}\n}\nconst time = {\n\tnow: now,\n\tTimer: Timer\n};\nObject.defineProperty(Color.prototype, 'data', {\n\tget: function () {\n\t\tif (!this._data) {\n\t\t\tthis._data = new Float32Array(4);\n\t\t}\n\t\tthis._data[0] = this.r;\n\t\tthis._data[1] = this.g;\n\t\tthis._data[2] = this.b;\n\t\tthis._data[3] = this.a;\n\t\treturn this._data;\n\t}\n});\nObject.defineProperty(Color.prototype, 'data3', {\n\tget: function () {\n\t\tif (!this._data3) {\n\t\t\tthis._data3 = new Float32Array(3);\n\t\t}\n\t\tthis._data3[0] = this.r;\n\t\tthis._data3[1] = this.g;\n\t\tthis._data3[2] = this.b;\n\t\treturn this._data3;\n\t}\n});\nfunction inherits(Self, Super) {\n\tconst Temp = function Temp() {};\n\tconst Func = function Func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n\t\tSuper.call(this, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n\t\tSelf.call(this, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n\t};\n\tFunc._super = Super.prototype;\n\tTemp.prototype = Super.prototype;\n\tFunc.prototype = new Temp();\n\treturn Func;\n}\nfunction makeArray(arr) {\n\treturn Array.prototype.slice.call(arr);\n}\nfunction createStyle(cssString) {\n\tconst result = document.createElement('style');\n\tresult.type = 'text/css';\n\tif (result.styleSheet) {\n\t\tresult.styleSheet.cssText = cssString;\n\t} else {\n\t\tresult.appendChild(document.createTextNode(cssString));\n\t}\n\treturn result;\n}\nmath.INV_LOG2 = Math.LOG2E;\nmath.intToBytes = math.intToBytes32;\nmath.bytesToInt = math.bytesToInt32;\nObject.defineProperty(Vec2.prototype, 'data', {\n\tget: function () {\n\t\tif (!this._data) {\n\t\t\tthis._data = new Float32Array(2);\n\t\t}\n\t\tthis._data[0] = this.x;\n\t\tthis._data[1] = this.y;\n\t\treturn this._data;\n\t}\n});\nVec2.prototype.scale = Vec2.prototype.mulScalar;\nObject.defineProperty(Vec3.prototype, 'data', {\n\tget: function () {\n\t\tif (!this._data) {\n\t\t\tthis._data = new Float32Array(3);\n\t\t}\n\t\tthis._data[0] = this.x;\n\t\tthis._data[1] = this.y;\n\t\tthis._data[2] = this.z;\n\t\treturn this._data;\n\t}\n});\nVec3.prototype.scale = Vec3.prototype.mulScalar;\nObject.defineProperty(Vec4.prototype, 'data', {\n\tget: function () {\n\t\tif (!this._data) {\n\t\t\tthis._data = new Float32Array(4);\n\t\t}\n\t\tthis._data[0] = this.x;\n\t\tthis._data[1] = this.y;\n\t\tthis._data[2] = this.z;\n\t\tthis._data[3] = this.w;\n\t\treturn this._data;\n\t}\n});\nVec4.prototype.scale = Vec4.prototype.mulScalar;\nconst shape = {\n\tAabb: BoundingBox,\n\tSphere: BoundingSphere,\n\tPlane: Plane\n};\nBoundingSphere.prototype.intersectRay = BoundingSphere.prototype.intersectsRay;\nFrustum.prototype.update = function (projectionMatrix, viewMatrix) {\n\tconst viewProj = new Mat4();\n\tviewProj.mul2(projectionMatrix, viewMatrix);\n\tthis.setFromMat4(viewProj);\n};\nconst ELEMENTTYPE_INT8 = TYPE_INT8;\nconst ELEMENTTYPE_UINT8 = TYPE_UINT8;\nconst ELEMENTTYPE_INT16 = TYPE_INT16;\nconst ELEMENTTYPE_UINT16 = TYPE_UINT16;\nconst ELEMENTTYPE_INT32 = TYPE_INT32;\nconst ELEMENTTYPE_UINT32 = TYPE_UINT32;\nconst ELEMENTTYPE_FLOAT32 = TYPE_FLOAT32;\nconst PIXELFORMAT_L8_A8 = PIXELFORMAT_LA8;\nconst PIXELFORMAT_R5_G6_B5 = PIXELFORMAT_RGB565;\nconst PIXELFORMAT_R5_G5_B5_A1 = PIXELFORMAT_RGBA5551;\nconst PIXELFORMAT_R4_G4_B4_A4 = PIXELFORMAT_RGBA4;\nconst PIXELFORMAT_R8_G8_B8 = PIXELFORMAT_RGB8;\nconst PIXELFORMAT_R8_G8_B8_A8 = PIXELFORMAT_RGBA8;\nconst BLENDMODE_CONSTANT_COLOR = BLENDMODE_CONSTANT;\nconst BLENDMODE_ONE_MINUS_CONSTANT_COLOR = BLENDMODE_ONE_MINUS_CONSTANT;\nconst BLENDMODE_CONSTANT_ALPHA = BLENDMODE_CONSTANT;\nconst BLENDMODE_ONE_MINUS_CONSTANT_ALPHA = BLENDMODE_ONE_MINUS_CONSTANT;\nfunction UnsupportedBrowserError(message) {\n\tthis.name = 'UnsupportedBrowserError';\n\tthis.message = message || '';\n}\nUnsupportedBrowserError.prototype = Error.prototype;\nfunction ContextCreationError(message) {\n\tthis.name = 'ContextCreationError';\n\tthis.message = message || '';\n}\nContextCreationError.prototype = Error.prototype;\nconst programlib = {\n\tbegin: ShaderGenerator.begin,\n\tdummyFragmentCode: ShaderUtils.dummyFragmentCode,\n\tend: ShaderGenerator.end,\n\tfogCode: ShaderGenerator.fogCode,\n\tgammaCode: ShaderGenerator.gammaCode,\n\tprecisionCode: ShaderUtils.precisionCode,\n\tskinCode: ShaderGenerator.skinCode,\n\ttonemapCode: ShaderGenerator.tonemapCode,\n\tversionCode: ShaderUtils.versionCode\n};\nconst gfx = {\n\tADDRESS_CLAMP_TO_EDGE: ADDRESS_CLAMP_TO_EDGE,\n\tADDRESS_MIRRORED_REPEAT: ADDRESS_MIRRORED_REPEAT,\n\tADDRESS_REPEAT: ADDRESS_REPEAT,\n\tBLENDMODE_ZERO: BLENDMODE_ZERO,\n\tBLENDMODE_ONE: BLENDMODE_ONE,\n\tBLENDMODE_SRC_COLOR: BLENDMODE_SRC_COLOR,\n\tBLENDMODE_ONE_MINUS_SRC_COLOR: BLENDMODE_ONE_MINUS_SRC_COLOR,\n\tBLENDMODE_DST_COLOR: BLENDMODE_DST_COLOR,\n\tBLENDMODE_ONE_MINUS_DST_COLOR: BLENDMODE_ONE_MINUS_DST_COLOR,\n\tBLENDMODE_SRC_ALPHA: BLENDMODE_SRC_ALPHA,\n\tBLENDMODE_SRC_ALPHA_SATURATE: BLENDMODE_SRC_ALPHA_SATURATE,\n\tBLENDMODE_ONE_MINUS_SRC_ALPHA: BLENDMODE_ONE_MINUS_SRC_ALPHA,\n\tBLENDMODE_DST_ALPHA: BLENDMODE_DST_ALPHA,\n\tBLENDMODE_ONE_MINUS_DST_ALPHA: BLENDMODE_ONE_MINUS_DST_ALPHA,\n\tBUFFER_STATIC: BUFFER_STATIC,\n\tBUFFER_DYNAMIC: BUFFER_DYNAMIC,\n\tBUFFER_STREAM: BUFFER_STREAM,\n\tCULLFACE_NONE: CULLFACE_NONE,\n\tCULLFACE_BACK: CULLFACE_BACK,\n\tCULLFACE_FRONT: CULLFACE_FRONT,\n\tCULLFACE_FRONTANDBACK: CULLFACE_FRONTANDBACK,\n\tELEMENTTYPE_INT8: TYPE_INT8,\n\tELEMENTTYPE_UINT8: TYPE_UINT8,\n\tELEMENTTYPE_INT16: TYPE_INT16,\n\tELEMENTTYPE_UINT16: TYPE_UINT16,\n\tELEMENTTYPE_INT32: TYPE_INT32,\n\tELEMENTTYPE_UINT32: TYPE_UINT32,\n\tELEMENTTYPE_FLOAT32: TYPE_FLOAT32,\n\tFILTER_NEAREST: FILTER_NEAREST,\n\tFILTER_LINEAR: FILTER_LINEAR,\n\tFILTER_NEAREST_MIPMAP_NEAREST: FILTER_NEAREST_MIPMAP_NEAREST,\n\tFILTER_NEAREST_MIPMAP_LINEAR: FILTER_NEAREST_MIPMAP_LINEAR,\n\tFILTER_LINEAR_MIPMAP_NEAREST: FILTER_LINEAR_MIPMAP_NEAREST,\n\tFILTER_LINEAR_MIPMAP_LINEAR: FILTER_LINEAR_MIPMAP_LINEAR,\n\tINDEXFORMAT_UINT8: INDEXFORMAT_UINT8,\n\tINDEXFORMAT_UINT16: INDEXFORMAT_UINT16,\n\tINDEXFORMAT_UINT32: INDEXFORMAT_UINT32,\n\tPIXELFORMAT_RGB565: PIXELFORMAT_RGB565,\n\tPIXELFORMAT_RGB8: PIXELFORMAT_RGB8,\n\tPIXELFORMAT_RGBA8: PIXELFORMAT_RGBA8,\n\tPRIMITIVE_POINTS: PRIMITIVE_POINTS,\n\tPRIMITIVE_LINES: PRIMITIVE_LINES,\n\tPRIMITIVE_LINELOOP: PRIMITIVE_LINELOOP,\n\tPRIMITIVE_LINESTRIP: PRIMITIVE_LINESTRIP,\n\tPRIMITIVE_TRIANGLES: PRIMITIVE_TRIANGLES,\n\tPRIMITIVE_TRISTRIP: PRIMITIVE_TRISTRIP,\n\tPRIMITIVE_TRIFAN: PRIMITIVE_TRIFAN,\n\tSEMANTIC_POSITION: SEMANTIC_POSITION,\n\tSEMANTIC_NORMAL: SEMANTIC_NORMAL,\n\tSEMANTIC_COLOR: SEMANTIC_COLOR,\n\tSEMANTIC_TEXCOORD: SEMANTIC_TEXCOORD,\n\tSEMANTIC_TEXCOORD0: SEMANTIC_TEXCOORD0,\n\tSEMANTIC_TEXCOORD1: SEMANTIC_TEXCOORD1,\n\tSEMANTIC_ATTR0: SEMANTIC_ATTR0,\n\tSEMANTIC_ATTR1: SEMANTIC_ATTR1,\n\tSEMANTIC_ATTR2: SEMANTIC_ATTR2,\n\tSEMANTIC_ATTR3: SEMANTIC_ATTR3,\n\tTEXTURELOCK_READ: TEXTURELOCK_READ,\n\tTEXTURELOCK_WRITE: TEXTURELOCK_WRITE,\n\tdrawQuadWithShader: drawQuadWithShader,\n\tprogramlib: programlib,\n\tshaderChunks: shaderChunks,\n\tContextCreationError: ContextCreationError,\n\tDevice: GraphicsDevice,\n\tIndexBuffer: IndexBuffer,\n\tProgramLibrary: ProgramLibrary,\n\tRenderTarget: RenderTarget,\n\tScopeId: ScopeId,\n\tShader: Shader,\n\tShaderInput: WebglShaderInput,\n\tTexture: Texture,\n\tUnsupportedBrowserError: UnsupportedBrowserError,\n\tVertexBuffer: VertexBuffer,\n\tVertexFormat: VertexFormat,\n\tVertexIterator: VertexIterator\n};\nconst _viewport = new Vec4();\nfunction createSphere(device, opts) {\n\treturn Mesh.fromGeometry(device, new SphereGeometry(opts));\n}\nfunction createPlane(device, opts) {\n\treturn Mesh.fromGeometry(device, new PlaneGeometry(opts));\n}\nfunction createBox(device, opts) {\n\treturn Mesh.fromGeometry(device, new BoxGeometry(opts));\n}\nfunction createTorus(device, opts) {\n\treturn Mesh.fromGeometry(device, new TorusGeometry(opts));\n}\nfunction createCapsule(device, opts) {\n\treturn Mesh.fromGeometry(device, new CapsuleGeometry(opts));\n}\nfunction createCone(device, opts) {\n\treturn Mesh.fromGeometry(device, new ConeGeometry(opts));\n}\nfunction createCylinder(device, opts) {\n\treturn Mesh.fromGeometry(device, new CylinderGeometry(opts));\n}\nfunction createMesh(device, positions, opts = {}) {\n\tconst geom = new Geometry();\n\tgeom.positions = positions;\n\tgeom.normals = opts.normals;\n\tgeom.tangents = opts.tangents;\n\tgeom.colors = opts.colors;\n\tgeom.uvs = opts.uvs;\n\tgeom.uvs1 = opts.uvs1;\n\tgeom.blendIndices = opts.blendIndices;\n\tgeom.blendWeights = opts.blendWeights;\n\tgeom.indices = opts.indices;\n\treturn Mesh.fromGeometry(device, geom, opts);\n}\nfunction drawFullscreenQuad(device, target, vertexBuffer, shader, rect) {\n\tlet viewport;\n\tif (rect) {\n\t\tconst w = target ? target.width : device.width;\n\t\tconst h = target ? target.height : device.height;\n\t\tviewport = _viewport.set(rect.x * w, rect.y * h, rect.z * w, rect.w * h);\n\t}\n\tdrawQuadWithShader(device, target, shader, viewport);\n}\nconst posteffect = {\n\tcreateFullscreenQuad: device => {\n\t\treturn device.quadVertexBuffer;\n\t},\n\tdrawFullscreenQuad: drawFullscreenQuad,\n\tPostEffect: PostEffect,\n\tPostEffectQueue: PostEffectQueue\n};\nObject.defineProperty(shaderChunks, 'transformSkinnedVS', {\n\tget: function () {\n\t\treturn '#define SKIN\\n' + shaderChunks.transformVS;\n\t}\n});\nconst deprecatedChunks = {\n\t'ambientPrefilteredCube.frag': 'ambientEnv.frag',\n\t'ambientPrefilteredCubeLod.frag': 'ambientEnv.frag',\n\t'dpAtlasQuad.frag': null,\n\t'genParaboloid.frag': null,\n\t'prefilterCubemap.frag': null,\n\t'reflectionDpAtlas.frag': 'reflectionEnv.frag',\n\t'reflectionPrefilteredCube.frag': 'reflectionEnv.frag',\n\t'reflectionPrefilteredCubeLod.frag': 'reflectionEnv.frag'\n};\nObject.keys(deprecatedChunks).forEach(chunkName => {\n\tObject.defineProperty(shaderChunks, chunkName, {\n\t\tget: function () {\n\t\t\treturn null;\n\t\t},\n\t\tset: function () {}\n\t});\n});\nObject.defineProperties(RenderTarget.prototype, {\n\t_glFrameBuffer: {\n\t\tget: function () {\n\t\t\treturn this.impl._glFrameBuffer;\n\t\t},\n\t\tset: function (rgbm) {}\n\t}\n});\nObject.defineProperty(VertexFormat, 'defaultInstancingFormat', {\n\tget: function () {\n\t\treturn null;\n\t}\n});\nObject.defineProperties(Texture.prototype, {\n\trgbm: {\n\t\tget: function () {\n\t\t\treturn this.type === TEXTURETYPE_RGBM;\n\t\t},\n\t\tset: function (rgbm) {\n\t\t\tthis.type = rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT;\n\t\t}\n\t},\n\tswizzleGGGR: {\n\t\tget: function () {\n\t\t\treturn this.type === TEXTURETYPE_SWIZZLEGGGR;\n\t\t},\n\t\tset: function (swizzleGGGR) {\n\t\t\tthis.type = swizzleGGGR ? TEXTURETYPE_SWIZZLEGGGR : TEXTURETYPE_DEFAULT;\n\t\t}\n\t},\n\t_glTexture: {\n\t\tget: function () {\n\t\t\treturn this.impl._glTexture;\n\t\t}\n\t},\n\tautoMipmap: {\n\t\tget: function () {\n\t\t\treturn this._mipmaps;\n\t\t},\n\t\tset: function (value) {\n\t\t\tthis._mipmaps = value;\n\t\t}\n\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'webgl2', {\n\tget: function () {\n\t\treturn this.isWebGL2;\n\t}\n});\nGraphicsDevice.prototype.getProgramLibrary = function () {\n\treturn getProgramLibrary(this);\n};\nGraphicsDevice.prototype.setProgramLibrary = function (lib) {\n\tsetProgramLibrary(this, lib);\n};\nGraphicsDevice.prototype.removeShaderFromCache = function (shader) {\n\tgetProgramLibrary(this).removeFromCache(shader);\n};\nBlendState.DEFAULT = Object.freeze(new BlendState());\nconst _tempBlendState = new BlendState();\nconst _tempDepthState = new DepthState();\nGraphicsDevice.prototype.setBlendFunction = function (blendSrc, blendDst) {\n\tconst currentBlendState = this.blendState;\n\t_tempBlendState.copy(currentBlendState);\n\t_tempBlendState.setColorBlend(currentBlendState.colorOp, blendSrc, blendDst);\n\t_tempBlendState.setAlphaBlend(currentBlendState.alphaOp, blendSrc, blendDst);\n\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendFunctionSeparate = function (blendSrc, blendDst, blendSrcAlpha, blendDstAlpha) {\n\tconst currentBlendState = this.blendState;\n\t_tempBlendState.copy(currentBlendState);\n\t_tempBlendState.setColorBlend(currentBlendState.colorOp, blendSrc, blendDst);\n\t_tempBlendState.setAlphaBlend(currentBlendState.alphaOp, blendSrcAlpha, blendDstAlpha);\n\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendEquation = function (blendEquation) {\n\tconst currentBlendState = this.blendState;\n\t_tempBlendState.copy(currentBlendState);\n\t_tempBlendState.setColorBlend(blendEquation, currentBlendState.colorSrcFactor, currentBlendState.colorDstFactor);\n\t_tempBlendState.setAlphaBlend(blendEquation, currentBlendState.alphaSrcFactor, currentBlendState.alphaDstFactor);\n\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendEquationSeparate = function (blendEquation, blendAlphaEquation) {\n\tconst currentBlendState = this.blendState;\n\t_tempBlendState.copy(currentBlendState);\n\t_tempBlendState.setColorBlend(blendEquation, currentBlendState.colorSrcFactor, currentBlendState.colorDstFactor);\n\t_tempBlendState.setAlphaBlend(blendAlphaEquation, currentBlendState.alphaSrcFactor, currentBlendState.alphaDstFactor);\n\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setColorWrite = function (redWrite, greenWrite, blueWrite, alphaWrite) {\n\tconst currentBlendState = this.blendState;\n\t_tempBlendState.copy(currentBlendState);\n\t_tempBlendState.setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite);\n\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.getBlending = function () {\n\treturn this.blendState.blend;\n};\nGraphicsDevice.prototype.setBlending = function (blending) {\n\t_tempBlendState.copy(this.blendState);\n\t_tempBlendState.blend = blending;\n\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setDepthWrite = function (write) {\n\t_tempDepthState.copy(this.depthState);\n\t_tempDepthState.write = write;\n\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.setDepthFunc = function (func) {\n\t_tempDepthState.copy(this.depthState);\n\t_tempDepthState.func = func;\n\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.setDepthTest = function (test) {\n\t_tempDepthState.copy(this.depthState);\n\t_tempDepthState.test = test;\n\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.getCullMode = function () {\n\treturn this.cullMode;\n};\nconst PhongMaterial = StandardMaterial;\nconst LitOptions = LitShaderOptions;\nconst scene = {\n\tprocedural: {\n\t\tcalculateTangents: calculateTangents,\n\t\tcreateMesh: createMesh,\n\t\tcreateTorus: createTorus,\n\t\tcreateCylinder: createCylinder,\n\t\tcreateCapsule: createCapsule,\n\t\tcreateCone: createCone,\n\t\tcreateSphere: createSphere,\n\t\tcreatePlane: createPlane,\n\t\tcreateBox: createBox\n\t},\n\tBasicMaterial: BasicMaterial,\n\tForwardRenderer: ForwardRenderer,\n\tGraphNode: GraphNode,\n\tMaterial: Material,\n\tMesh: Mesh,\n\tMeshInstance: MeshInstance,\n\tModel: Model,\n\tParticleEmitter: ParticleEmitter,\n\tPhongMaterial: StandardMaterial,\n\tPicker: Picker,\n\tProjection: {\n\t\tORTHOGRAPHIC: PROJECTION_ORTHOGRAPHIC,\n\t\tPERSPECTIVE: PROJECTION_PERSPECTIVE\n\t},\n\tScene: Scene,\n\tSkin: Skin,\n\tSkinInstance: SkinInstance\n};\nObject.defineProperty(Scene.prototype, 'defaultMaterial', {\n\tget: function () {\n\t\treturn getDefaultMaterial(getApplication().graphicsDevice);\n\t}\n});\nObject.defineProperty(LayerComposition.prototype, '_meshInstances', {\n\tget: function () {\n\t\treturn null;\n\t}\n});\nObject.defineProperty(Scene.prototype, 'drawCalls', {\n\tget: function () {\n\t\treturn null;\n\t}\n});\n['128', '64', '32', '16', '8', '4'].forEach((size, index) => {\n\tObject.defineProperty(Scene.prototype, `skyboxPrefiltered${size}`, {\n\t\tget: function () {\n\t\t\treturn this._prefilteredCubemaps[index];\n\t\t},\n\t\tset: function (value) {\n\t\t\tthis._prefilteredCubemaps[index] = value;\n\t\t\tthis.updateShaders = true;\n\t\t}\n\t});\n});\nObject.defineProperty(Scene.prototype, 'models', {\n\tget: function () {\n\t\tif (!this._models) {\n\t\t\tthis._models = [];\n\t\t}\n\t\treturn this._models;\n\t}\n});\nObject.defineProperty(Layer.prototype, 'renderTarget', {\n\tset: function (rt) {\n\t\tthis._renderTarget = rt;\n\t\tthis._dirtyComposition = true;\n\t},\n\tget: function () {\n\t\treturn this._renderTarget;\n\t}\n});\nScene.prototype.addModel = function (model) {\n\tif (this.containsModel(model)) return;\n\tconst layer = this.layers.getLayerById(LAYERID_WORLD);\n\tif (!layer) return;\n\tlayer.addMeshInstances(model.meshInstances);\n\tthis.models.push(model);\n};\nScene.prototype.addShadowCaster = function (model) {\n\tconst layer = this.layers.getLayerById(LAYERID_WORLD);\n\tif (!layer) return;\n\tlayer.addShadowCasters(model.meshInstances);\n};\nScene.prototype.removeModel = function (model) {\n\tconst index = this.models.indexOf(model);\n\tif (index !== -1) {\n\t\tconst layer = this.layers.getLayerById(LAYERID_WORLD);\n\t\tif (!layer) return;\n\t\tlayer.removeMeshInstances(model.meshInstances);\n\t\tthis.models.splice(index, 1);\n\t}\n};\nScene.prototype.removeShadowCasters = function (model) {\n\tconst layer = this.layers.getLayerById(LAYERID_WORLD);\n\tif (!layer) return;\n\tlayer.removeShadowCasters(model.meshInstances);\n};\nScene.prototype.containsModel = function (model) {\n\treturn this.models.indexOf(model) >= 0;\n};\nScene.prototype.getModels = function (model) {\n\treturn this.models;\n};\nObject.defineProperty(Batch.prototype, 'model', {\n\tget: function () {\n\t\treturn null;\n\t}\n});\nForwardRenderer.prototype.renderComposition = function (comp) {\n\tgetApplication().renderComposition(comp);\n};\nMeshInstance.prototype.syncAabb = function () {};\nMorph.prototype.getTarget = function (index) {\n\treturn this.targets[index];\n};\nGraphNode.prototype._dirtify = function (local) {\n\tif (local) this._dirtifyLocal();else this._dirtifyWorld();\n};\nGraphNode.prototype.addLabel = function (label) {\n\tthis._labels[label] = true;\n};\nGraphNode.prototype.getLabels = function () {\n\treturn Object.keys(this._labels);\n};\nGraphNode.prototype.hasLabel = function (label) {\n\treturn !!this._labels[label];\n};\nGraphNode.prototype.removeLabel = function (label) {\n\tdelete this._labels[label];\n};\nGraphNode.prototype.findByLabel = function (label, results = []) {\n\tif (this.hasLabel(label)) {\n\t\tresults.push(this);\n\t}\n\tfor (let i = 0; i < this._children.length; ++i) {\n\t\tresults = this._children[i].findByLabel(label, results);\n\t}\n\treturn results;\n};\nGraphNode.prototype.getChildren = function () {\n\treturn this.children;\n};\nGraphNode.prototype.getName = function () {\n\treturn this.name;\n};\nGraphNode.prototype.getPath = function () {\n\treturn this.path;\n};\nGraphNode.prototype.getRoot = function () {\n\treturn this.root;\n};\nGraphNode.prototype.getParent = function () {\n\treturn this.parent;\n};\nGraphNode.prototype.setName = function (name) {\n\tthis.name = name;\n};\nMaterial.prototype.getName = function () {\n\treturn this.name;\n};\nMaterial.prototype.setName = function (name) {\n\tthis.name = name;\n};\nMaterial.prototype.getShader = function () {\n\treturn this.shader;\n};\nMaterial.prototype.setShader = function (shader) {\n\tthis.shader = shader;\n};\nObject.defineProperty(Material.prototype, 'blend', {\n\tset: function (value) {\n\t\tthis.blendState.blend = value;\n\t},\n\tget: function () {\n\t\treturn this.blendState.blend;\n\t}\n});\nObject.defineProperty(Material.prototype, 'blendSrc', {\n\tset: function (value) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(currentBlendState.colorOp, value, currentBlendState.colorDstFactor);\n\t\t_tempBlendState.setAlphaBlend(currentBlendState.alphaOp, value, currentBlendState.alphaDstFactor);\n\t\tthis.blendState = _tempBlendState;\n\t},\n\tget: function () {\n\t\treturn this.blendState.colorSrcFactor;\n\t}\n});\nObject.defineProperty(Material.prototype, 'blendDst', {\n\tset: function (value) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(currentBlendState.colorOp, currentBlendState.colorSrcFactor, value);\n\t\t_tempBlendState.setAlphaBlend(currentBlendState.alphaOp, currentBlendState.alphaSrcFactor, value);\n\t\tthis.blendState = _tempBlendState;\n\t},\n\tget: function () {\n\t\treturn this.blendState.colorDstFactor;\n\t}\n});\nObject.defineProperty(StandardMaterial.prototype, 'shininess', {\n\tget: function () {\n\t\treturn this.gloss * 100;\n\t},\n\tset: function (value) {\n\t\tthis.gloss = value * 0.01;\n\t}\n});\nfunction _defineAlias(newName, oldName) {\n\tObject.defineProperty(StandardMaterial.prototype, oldName, {\n\t\tget: function () {\n\t\t\treturn this[newName];\n\t\t},\n\t\tset: function (value) {\n\t\t\tthis[newName] = value;\n\t\t}\n\t});\n}\n_defineAlias('diffuseTint', 'diffuseMapTint');\n_defineAlias('specularTint', 'specularMapTint');\n_defineAlias('emissiveTint', 'emissiveMapTint');\n_defineAlias('aoVertexColor', 'aoMapVertexColor');\n_defineAlias('diffuseVertexColor', 'diffuseMapVertexColor');\n_defineAlias('specularVertexColor', 'specularMapVertexColor');\n_defineAlias('emissiveVertexColor', 'emissiveMapVertexColor');\n_defineAlias('metalnessVertexColor', 'metalnessMapVertexColor');\n_defineAlias('glossVertexColor', 'glossMapVertexColor');\n_defineAlias('opacityVertexColor', 'opacityMapVertexColor');\n_defineAlias('lightVertexColor', 'lightMapVertexColor');\n_defineAlias('sheenGloss', 'sheenGlossiess');\n_defineAlias('clearCoatGloss', 'clearCostGlossiness');\nfunction _defineOption(name, newName) {\n\tif (name !== 'pass') {\n\t\tObject.defineProperty(StandardMaterialOptions.prototype, name, {\n\t\t\tget: function () {\n\t\t\t\treturn this.litOptions[newName || name];\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\tthis.litOptions[newName || name] = value;\n\t\t\t}\n\t\t});\n\t}\n}\n_defineOption('refraction', 'useRefraction');\nconst tempOptions = new LitShaderOptions();\nconst litOptionProperties = Object.getOwnPropertyNames(tempOptions);\nfor (const litOption in litOptionProperties) {\n\t_defineOption(litOptionProperties[litOption]);\n}\nconst anim = {\n\tAnimation: Animation,\n\tKey: Key,\n\tNode: Node,\n\tSkeleton: Skeleton\n};\nAnimation.prototype.getDuration = function () {\n\treturn this.duration;\n};\nAnimation.prototype.getName = function () {\n\treturn this.name;\n};\nAnimation.prototype.getNodes = function () {\n\treturn this.nodes;\n};\nAnimation.prototype.setDuration = function (duration) {\n\tthis.duration = duration;\n};\nAnimation.prototype.setName = function (name) {\n\tthis.name = name;\n};\nSkeleton.prototype.getAnimation = function () {\n\treturn this.animation;\n};\nSkeleton.prototype.getCurrentTime = function () {\n\treturn this.currentTime;\n};\nSkeleton.prototype.getLooping = function () {\n\treturn this.looping;\n};\nSkeleton.prototype.getNumNodes = function () {\n\treturn this.numNodes;\n};\nSkeleton.prototype.setAnimation = function (animation) {\n\tthis.animation = animation;\n};\nSkeleton.prototype.setCurrentTime = function (time) {\n\tthis.currentTime = time;\n};\nSkeleton.prototype.setLooping = function (looping) {\n\tthis.looping = looping;\n};\nconst audio = {\n\tAudioManager: SoundManager,\n\tChannel: Channel,\n\tChannel3d: Channel3d,\n\tListener: Listener,\n\tSound: Sound\n};\nSoundManager.prototype.getListener = function () {\n\treturn this.listener;\n};\nSoundManager.prototype.getVolume = function () {\n\treturn this.volume;\n};\nSoundManager.prototype.setVolume = function (volume) {\n\tthis.volume = volume;\n};\nconst asset = {\n\tASSET_ANIMATION: 'animation',\n\tASSET_AUDIO: 'audio',\n\tASSET_IMAGE: 'image',\n\tASSET_JSON: 'json',\n\tASSET_MODEL: 'model',\n\tASSET_MATERIAL: 'material',\n\tASSET_TEXT: 'text',\n\tASSET_TEXTURE: 'texture',\n\tASSET_CUBEMAP: 'cubemap',\n\tASSET_SCRIPT: 'script'\n};\nAssetRegistry.prototype.getAssetById = function (id) {\n\treturn this.get(id);\n};\nObject.defineProperty(XrInputSource.prototype, 'ray', {\n\tget: function () {\n\t\treturn this._rayLocal;\n\t}\n});\nObject.defineProperty(XrInputSource.prototype, 'position', {\n\tget: function () {\n\t\treturn this._localPosition;\n\t}\n});\nObject.defineProperty(XrInputSource.prototype, 'rotation', {\n\tget: function () {\n\t\treturn this._localRotation;\n\t}\n});\nconst input = {\n\tgetTouchTargetCoords: getTouchTargetCoords,\n\tController: Controller,\n\tGamePads: GamePads,\n\tKeyboard: Keyboard,\n\tKeyboardEvent: KeyboardEvent,\n\tMouse: Mouse,\n\tMouseEvent: MouseEvent,\n\tTouch: Touch,\n\tTouchDevice: TouchDevice,\n\tTouchEvent: TouchEvent\n};\nObject.defineProperty(ElementInput.prototype, 'wheel', {\n\tget: function () {\n\t\treturn this.wheelDelta * -2;\n\t}\n});\nObject.defineProperty(MouseEvent.prototype, 'wheel', {\n\tget: function () {\n\t\treturn this.wheelDelta * -2;\n\t}\n});\nconst RIGIDBODY_TYPE_STATIC = BODYTYPE_STATIC;\nconst RIGIDBODY_TYPE_DYNAMIC = BODYTYPE_DYNAMIC;\nconst RIGIDBODY_TYPE_KINEMATIC = BODYTYPE_KINEMATIC;\nconst RIGIDBODY_CF_STATIC_OBJECT = BODYFLAG_STATIC_OBJECT;\nconst RIGIDBODY_CF_KINEMATIC_OBJECT = BODYFLAG_KINEMATIC_OBJECT;\nconst RIGIDBODY_CF_NORESPONSE_OBJECT = BODYFLAG_NORESPONSE_OBJECT;\nconst RIGIDBODY_ACTIVE_TAG = BODYSTATE_ACTIVE_TAG;\nconst RIGIDBODY_ISLAND_SLEEPING = BODYSTATE_ISLAND_SLEEPING;\nconst RIGIDBODY_WANTS_DEACTIVATION = BODYSTATE_WANTS_DEACTIVATION;\nconst RIGIDBODY_DISABLE_DEACTIVATION = BODYSTATE_DISABLE_DEACTIVATION;\nconst RIGIDBODY_DISABLE_SIMULATION = BODYSTATE_DISABLE_SIMULATION;\nAppBase.prototype.isFullscreen = function () {\n\treturn !!document.fullscreenElement;\n};\nAppBase.prototype.enableFullscreen = function (element, success, error) {\n\telement = element || this.graphicsDevice.canvas;\n\tconst s = function s() {\n\t\tsuccess();\n\t\tdocument.removeEventListener('fullscreenchange', s);\n\t};\n\tconst e = function e() {\n\t\terror();\n\t\tdocument.removeEventListener('fullscreenerror', e);\n\t};\n\tif (success) {\n\t\tdocument.addEventListener('fullscreenchange', s, false);\n\t}\n\tif (error) {\n\t\tdocument.addEventListener('fullscreenerror', e, false);\n\t}\n\tif (element.requestFullscreen) {\n\t\telement.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n\t} else {\n\t\terror();\n\t}\n};\nAppBase.prototype.disableFullscreen = function (success) {\n\tconst s = function s() {\n\t\tsuccess();\n\t\tdocument.removeEventListener('fullscreenchange', s);\n\t};\n\tif (success) {\n\t\tdocument.addEventListener('fullscreenchange', s, false);\n\t}\n\tdocument.exitFullscreen();\n};\nAppBase.prototype.getSceneUrl = function (name) {\n\tconst entry = this.scenes.find(name);\n\tif (entry) {\n\t\treturn entry.url;\n\t}\n\treturn null;\n};\nAppBase.prototype.loadScene = function (url, callback) {\n\tthis.scenes.loadScene(url, callback);\n};\nAppBase.prototype.loadSceneHierarchy = function (url, callback) {\n\tthis.scenes.loadSceneHierarchy(url, callback);\n};\nAppBase.prototype.loadSceneSettings = function (url, callback) {\n\tthis.scenes.loadSceneSettings(url, callback);\n};\nAppBase.prototype.renderMeshInstance = function (meshInstance, options) {\n\tconst layer = options != null && options.layer ? options.layer : this.scene.defaultDrawLayer;\n\tthis.scene.immediate.drawMesh(null, null, null, meshInstance, layer);\n};\nAppBase.prototype.renderMesh = function (mesh, material, matrix, options) {\n\tconst layer = options != null && options.layer ? options.layer : this.scene.defaultDrawLayer;\n\tthis.scene.immediate.drawMesh(material, matrix, mesh, null, layer);\n};\nAppBase.prototype._addLines = function (positions, colors, options) {\n\tconst layer = options && options.layer ? options.layer : this.scene.layers.getLayerById(LAYERID_IMMEDIATE);\n\tconst depthTest = options && options.depthTest !== undefined ? options.depthTest : true;\n\tconst batch = this.scene.immediate.getBatch(layer, depthTest);\n\tbatch.addLines(positions, colors);\n};\nAppBase.prototype.renderLine = function (start, end, color) {\n\tlet endColor = color;\n\tlet options;\n\tconst arg3 = arguments[3];\n\tconst arg4 = arguments[4];\n\tif (arg3 instanceof Color) {\n\t\tendColor = arg3;\n\t\tif (typeof arg4 === 'number') {\n\t\t\tif (arg4 === LINEBATCH_OVERLAY) {\n\t\t\t\toptions = {\n\t\t\t\t\tlayer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE),\n\t\t\t\t\tdepthTest: false\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\toptions = {\n\t\t\t\t\tlayer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE),\n\t\t\t\t\tdepthTest: true\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\toptions = arg4;\n\t\t}\n\t} else if (typeof arg3 === 'number') {\n\t\tendColor = color;\n\t\tif (arg3 === LINEBATCH_OVERLAY) {\n\t\t\toptions = {\n\t\t\t\tlayer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE),\n\t\t\t\tdepthTest: false\n\t\t\t};\n\t\t} else {\n\t\t\toptions = {\n\t\t\t\tlayer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE),\n\t\t\t\tdepthTest: true\n\t\t\t};\n\t\t}\n\t} else if (arg3) {\n\t\toptions = arg3;\n\t}\n\tthis._addLines([start, end], [color, endColor], options);\n};\nAppBase.prototype.renderLines = function (position, color, options) {\n\tif (!options) {\n\t\toptions = {\n\t\t\tlayer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE),\n\t\t\tdepthTest: true\n\t\t};\n\t} else if (typeof options === 'number') {\n\t\tif (options === LINEBATCH_OVERLAY) {\n\t\t\toptions = {\n\t\t\t\tlayer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE),\n\t\t\t\tdepthTest: false\n\t\t\t};\n\t\t} else {\n\t\t\toptions = {\n\t\t\t\tlayer: this.scene.layers.getLayerById(LAYERID_IMMEDIATE),\n\t\t\t\tdepthTest: true\n\t\t\t};\n\t\t}\n\t}\n\tconst multiColor = !!color.length;\n\tif (multiColor) {\n\t\tif (position.length !== color.length) {\n\t\t\tconsole.error('renderLines: position/color arrays have different lengths');\n\t\t\treturn;\n\t\t}\n\t}\n\tif (position.length % 2 !== 0) {\n\t\tconsole.error('renderLines: array length is not divisible by 2');\n\t\treturn;\n\t}\n\tthis._addLines(position, color, options);\n};\nAppBase.prototype.enableVr = function () {};\nObject.defineProperty(CameraComponent.prototype, 'node', {\n\tget: function () {\n\t\treturn this.entity;\n\t}\n});\nObject.defineProperty(LightComponent.prototype, 'enable', {\n\tget: function () {\n\t\treturn this.enabled;\n\t},\n\tset: function (value) {\n\t\tthis.enabled = value;\n\t}\n});\nModelComponent.prototype.setVisible = function (visible) {\n\tthis.enabled = visible;\n};\nObject.defineProperty(ModelComponent.prototype, 'aabb', {\n\tget: function () {\n\t\treturn null;\n\t},\n\tset: function (type) {}\n});\nObject.defineProperty(RenderComponent.prototype, 'aabb', {\n\tget: function () {\n\t\treturn null;\n\t},\n\tset: function (type) {}\n});\nObject.defineProperty(RigidBodyComponent.prototype, 'bodyType', {\n\tget: function () {\n\t\treturn this.type;\n\t},\n\tset: function (type) {\n\t\tthis.type = type;\n\t}\n});\nRigidBodyComponent.prototype.syncBodyToEntity = function () {\n\tthis._updateDynamic();\n};\nRigidBodyComponentSystem.prototype.setGravity = function () {\n\tif (arguments.length === 1) {\n\t\tthis.gravity.copy(arguments[0]);\n\t} else {\n\t\tthis.gravity.set(arguments[0], arguments[1], arguments[2]);\n\t}\n};\nfunction basisSetDownloadConfig(glueUrl, wasmUrl, fallbackUrl) {\n\tbasisInitialize({\n\t\tglueUrl: glueUrl,\n\t\twasmUrl: wasmUrl,\n\t\tfallbackUrl: fallbackUrl,\n\t\tlazyInit: true\n\t});\n}\nfunction prefilterCubemap(options) {}\n\nexport { BLENDMODE_CONSTANT_ALPHA, BLENDMODE_CONSTANT_COLOR, BLENDMODE_ONE_MINUS_CONSTANT_ALPHA, BLENDMODE_ONE_MINUS_CONSTANT_COLOR, ContextCreationError, ELEMENTTYPE_FLOAT32, ELEMENTTYPE_INT16, ELEMENTTYPE_INT32, ELEMENTTYPE_INT8, ELEMENTTYPE_UINT16, ELEMENTTYPE_UINT32, ELEMENTTYPE_UINT8, LINEBATCH_GIZMO, LINEBATCH_OVERLAY, LINEBATCH_WORLD, LitOptions, PIXELFORMAT_L8_A8, PIXELFORMAT_R4_G4_B4_A4, PIXELFORMAT_R5_G5_B5_A1, PIXELFORMAT_R5_G6_B5, PIXELFORMAT_R8_G8_B8, PIXELFORMAT_R8_G8_B8_A8, PhongMaterial, RIGIDBODY_ACTIVE_TAG, RIGIDBODY_CF_KINEMATIC_OBJECT, RIGIDBODY_CF_NORESPONSE_OBJECT, RIGIDBODY_CF_STATIC_OBJECT, RIGIDBODY_DISABLE_DEACTIVATION, RIGIDBODY_DISABLE_SIMULATION, RIGIDBODY_ISLAND_SLEEPING, RIGIDBODY_TYPE_DYNAMIC, RIGIDBODY_TYPE_KINEMATIC, RIGIDBODY_TYPE_STATIC, RIGIDBODY_WANTS_DEACTIVATION, UnsupportedBrowserError, anim, asset, audio, basisSetDownloadConfig, createBox, createCapsule, createCone, createCylinder, createMesh, createPlane, createSphere, createStyle, createTorus, drawFullscreenQuad, gfx, inherits, input, log, makeArray, posteffect, prefilterCubemap, programlib, scene, shape, time };\n", "import {\n EventHandlerCollection,\n getRelativePositionAndRotationRelativeToObject,\n MElement,\n TransformableElement,\n} from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nconst mouseMovePixelsThreshold = 10;\nconst mouseMoveTimeThresholdMilliseconds = 500;\n\n/**\n * The PlayCanvasClickTrigger class is responsible for handling click events on the MML scene and raycasts into the scene to\n * determine which object was clicked and then dispatches events to those elements.\n */\nexport class PlayCanvasClickTrigger {\n private eventHandlerCollection: EventHandlerCollection = new EventHandlerCollection();\n private mouseDownTime: number | null = null;\n private mouseMoveDelta = 0;\n\n static init(\n playcanvasApp: playcanvas.AppBase,\n clickTarget: Document | HTMLElement,\n camera: playcanvas.Entity,\n ): PlayCanvasClickTrigger {\n return new PlayCanvasClickTrigger(playcanvasApp, clickTarget, camera);\n }\n\n private constructor(\n private playcanvasApp: playcanvas.AppBase,\n private clickTarget: Document | HTMLElement,\n private camera: playcanvas.Entity,\n ) {\n this.eventHandlerCollection.add(clickTarget, \"mousedown\", this.handleMouseDown.bind(this));\n this.eventHandlerCollection.add(clickTarget, \"mouseup\", this.handleMouseUp.bind(this));\n this.eventHandlerCollection.add(clickTarget, \"mousemove\", this.handleMouseMove.bind(this));\n }\n\n private handleMouseDown() {\n this.mouseDownTime = Date.now();\n this.mouseMoveDelta = 0;\n }\n\n private handleMouseUp(event: MouseEvent) {\n if (!this.mouseDownTime) {\n return;\n }\n const duration = Date.now() - this.mouseDownTime;\n this.mouseDownTime = null;\n if (\n this.mouseMoveDelta < mouseMovePixelsThreshold &&\n duration < mouseMoveTimeThresholdMilliseconds\n ) {\n this.handleClick(event);\n }\n }\n\n private handleMouseMove(event: MouseEvent) {\n if (this.mouseDownTime) {\n this.mouseMoveDelta += Math.abs(event.movementX) + Math.abs(event.movementY);\n }\n }\n\n private handleClick(event: MouseEvent) {\n if ((event.detail as any).element) {\n // Avoid infinite loop of handling click events that originated from this trigger\n return;\n }\n let x = 0;\n let y = 0;\n if (!document.pointerLockElement) {\n x = event.offsetX;\n y = event.offsetY;\n }\n\n const cameraEntity = this.camera;\n const from = cameraEntity.getPosition();\n const cameraComponent = cameraEntity.camera;\n if (!cameraComponent) {\n console.warn(\"No camera component found on the camera entity. Cannot raycast.\");\n return;\n }\n\n // The pc.Vec3 to raycast to (the click position projected onto the camera's far clip plane)\n const to = cameraComponent.screenToWorld(x, y, cameraComponent.farClip);\n\n // Raycast between the two points and return the closest hit result\n const rigidbodySystem = this.playcanvasApp.systems.rigidbody;\n if (!rigidbodySystem) {\n console.warn(\"No rigidbody system found in the PlayCanvas app. Cannot raycast.\");\n return;\n }\n const result = rigidbodySystem.raycastFirst(from, to);\n\n // If there was a hit, store the entity\n if (result) {\n const hitEntity = result.entity;\n let mElement;\n for (let entity: playcanvas.GraphNode = hitEntity; entity; entity = entity.parent) {\n mElement = MElement.getMElementFromObject(entity);\n if (mElement) {\n break;\n }\n }\n if (mElement && mElement instanceof TransformableElement && mElement.isClickable()) {\n // let's get the intersection point relative to the element origin\n\n const elementRelative = getRelativePositionAndRotationRelativeToObject(\n {\n position: result.point,\n rotation: {\n x: 0,\n y: 0,\n z: 0,\n },\n },\n mElement,\n );\n\n mElement.dispatchEvent(\n new CustomEvent(\"click\", {\n bubbles: true,\n detail: {\n position: {\n ...elementRelative.position,\n },\n },\n }),\n );\n return;\n }\n }\n }\n\n dispose() {\n this.eventHandlerCollection.clear();\n }\n}\n", "import { Audio, AudioGraphics, LoadingInstanceManager } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\ntype AudioLoadedState = {\n asset: playcanvas.Asset;\n};\n\nexport class PlayCanvasAudio extends AudioGraphics {\n private soundComponent: playcanvas.SoundComponent;\n private srcLoadingInstanceManager = new LoadingInstanceManager(`${Audio.tagName}.src`);\n private latestSrcAudioPromise: Promise | null = null;\n protected loadedState: AudioLoadedState | null = null;\n private delayedStartTimer: NodeJS.Timeout | null = null;\n private delayedPauseTimer: NodeJS.Timeout | null = null;\n private static dataAudioFileCount: number = 0;\n\n constructor(private audio: Audio) {\n super(audio);\n const audioEntity = this.audio.getContainer() as playcanvas.Entity;\n this.soundComponent = audioEntity.addComponent(\"sound\", {\n positional: true,\n distanceModel: \"inverse\",\n volume: audio.props.volume,\n } as playcanvas.SoundComponent) as playcanvas.SoundComponent;\n }\n\n private getPlayCanvasApp(): playcanvas.AppBase {\n return this.audio.getScene().getGraphicsAdapter().getPlayCanvasApp();\n }\n\n setSrc(src: string | null): void {\n if (this.loadedState !== null) {\n this.soundComponent.removeSlot(\"slot\");\n this.loadedState.asset.unload();\n this.loadedState = null;\n }\n if (!src) {\n this.srcLoadingInstanceManager.abortIfLoading();\n return;\n }\n\n const contentSrc = this.audio.contentSrcToContentAddress(src);\n const srcAudioPromise = this.asyncLoadSourceAsset(\n contentSrc,\n this.getAudioContext(),\n (loaded, total) => {\n this.srcLoadingInstanceManager.setProgress(loaded / total);\n },\n );\n this.srcLoadingInstanceManager.start(this.audio.getLoadingProgressManager(), contentSrc);\n this.latestSrcAudioPromise = srcAudioPromise;\n srcAudioPromise\n .then((asset) => {\n if (this.latestSrcAudioPromise !== srcAudioPromise || !this.audio.isConnected) {\n // TODO - dispose?\n // If we've loaded a different audio since, or we're no longer connected, dispose of this one\n return;\n }\n this.latestSrcAudioPromise = null;\n this.loadedState = {\n asset,\n };\n\n const sound = asset;\n this.soundComponent.addSlot(\"slot\", {\n volume: 1,\n pitch: 1,\n asset: sound.id,\n loop: true,\n overlap: false,\n autoPlay: false,\n });\n\n const slot = this.soundComponent.slot(\"slot\");\n if (slot) {\n slot.stop();\n slot.overlap = false;\n this.syncAudioTime();\n }\n\n this.srcLoadingInstanceManager.finish();\n })\n .catch((err) => {\n console.error(\"Error loading m-audio.src\", err);\n this.srcLoadingInstanceManager.error(err);\n });\n }\n\n public setStartTime(): void {\n this.syncAudioTime();\n }\n\n public setPauseTime(): void {\n this.syncAudioTime();\n }\n\n public setLoopDuration(): void {\n this.syncAudioTime();\n }\n\n public syncAudioTime(): void {\n if (this.delayedStartTimer) {\n clearTimeout(this.delayedStartTimer);\n this.delayedStartTimer = null;\n }\n if (this.delayedPauseTimer !== null) {\n clearTimeout(this.delayedPauseTimer);\n this.delayedPauseTimer = null;\n }\n\n if (!this.audio.props.src) {\n return;\n }\n\n const slot = this.soundComponent.slot(\"slot\");\n if (slot) {\n if (!this.audio.props.enabled || this.audio.isDisabled()) {\n slot.stop();\n return;\n }\n\n if (slot.loop !== this.audio.props.loop) {\n slot.loop = this.audio.props.loop;\n }\n\n const documentTime = this.audio.getDocumentTime();\n\n if (this.audio.props.pauseTime !== null) {\n if (documentTime !== null && this.audio.props.pauseTime > documentTime) {\n // The pause time is in the future\n const delayedPauseTimer = setTimeout(() => {\n if (this.delayedPauseTimer === delayedPauseTimer) {\n this.delayedPauseTimer = null;\n }\n this.syncAudioTime();\n }, this.audio.props.pauseTime - documentTime);\n this.delayedPauseTimer = delayedPauseTimer;\n } else {\n slot.pause();\n return;\n }\n }\n\n let currentTime: number;\n if (documentTime) {\n currentTime = (documentTime - this.audio.props.startTime) / 1000;\n } else {\n currentTime = (this.audio.props.startTime ? this.audio.props.startTime : 0) / 1000;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const asset = slot._assets.get(slot.asset)!;\n const assetDuration: number | null = asset?.resource.duration || null;\n let targetDuration: number | null = assetDuration;\n if (this.audio.props.loopDuration !== null && this.audio.props.loop) {\n const loopDuration = this.audio.props.loopDuration / 1000;\n if (assetDuration !== null && loopDuration > assetDuration) {\n asset.resource.buffer = extendAudioToDuration(\n this.getAudioContext(),\n asset.resource.buffer,\n loopDuration,\n );\n slot.pause();\n slot.duration = loopDuration;\n }\n targetDuration = loopDuration;\n }\n if (targetDuration !== null && slot.duration !== targetDuration) {\n slot.pause();\n slot.duration = targetDuration;\n }\n\n let desiredAudioTime;\n if (currentTime < 0) {\n // The audio should not start yet\n slot.pause();\n const delayedStartTimer = setTimeout(() => {\n if (this.delayedStartTimer === delayedStartTimer) {\n this.delayedStartTimer = null;\n }\n this.syncAudioTime();\n }, -currentTime * 1000);\n this.delayedStartTimer = delayedStartTimer;\n return;\n } else if (this.audio.props.loop) {\n const slotDuration = slot.duration;\n desiredAudioTime = currentTime % slotDuration;\n } else {\n desiredAudioTime = currentTime;\n }\n\n if (desiredAudioTime >= slot.duration) {\n slot.pause();\n return;\n } else {\n // playing\n }\n\n if (slot.isLoaded && (slot.isPaused || slot.isStopped)) {\n slot.play();\n }\n\n const soundInstance = slot.instances[0];\n let delta = desiredAudioTime - soundInstance.currentTime;\n if (this.audio.props.loop) {\n // Check if the delta wrapping around is smaller (i.e. the desired and current are closer together if we wrap around)\n const loopedDelta = delta - slot.duration;\n if (Math.abs(delta) > Math.abs(loopedDelta)) {\n delta = loopedDelta;\n }\n }\n\n if (Math.abs(delta) < 0.1) {\n // Do nothing - this is close enough - set the playback rate to 1\n slot.pitch = 1;\n } else if (Math.abs(delta) > 0.5) {\n slot.pitch = 1;\n slot.pause();\n soundInstance.currentTime = desiredAudioTime;\n slot.resume();\n return;\n } else {\n if (delta > 0) {\n slot.pitch = 1.02;\n } else {\n slot.pitch = 0.98;\n }\n }\n }\n }\n\n private getAudioContext(): AudioContext {\n const playcanvasApp = this.getPlayCanvasApp();\n const soundSystem = playcanvasApp.systems.sound;\n if (!soundSystem) {\n throw new Error(\"Playcanvas sound system not enabled\");\n }\n return soundSystem.context;\n }\n\n enable(): void {\n // TODO\n }\n disable(): void {\n // TODO\n }\n setLoop(): void {\n this.syncAudioTime();\n }\n setEnabled(): void {\n // TODO\n }\n setVolume(): void {\n this.soundComponent.volume = this.audio.props.volume;\n }\n setConeAngle(): void {\n // TODO\n }\n setConeFalloffAngle(): void {\n // TODO\n }\n setDebug(): void {\n // TODO\n }\n\n private async asyncLoadSourceAsset(\n url: string,\n audioContext: AudioContext,\n // TODO - report progress\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onProgress: (loaded: number, total: number) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n if (url.startsWith(\"data:\")) {\n // Construct an AudioBuffer from the data URL\n const base64 = url.split(\",\", 2)[1];\n if (!base64) {\n reject(new Error(\"Invalid data URL\"));\n return;\n }\n let arrayBuffer;\n\n try {\n const binary = atob(base64);\n const uint8Array = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n uint8Array[i] = binary.charCodeAt(i);\n }\n arrayBuffer = uint8Array.buffer;\n } catch (e) {\n console.error(\"Failed to decode base64 data URL\", e);\n return;\n }\n audioContext\n .decodeAudioData(arrayBuffer)\n .then((audioBuffer) => {\n const soundComp = new playcanvas.Sound(audioBuffer);\n const asset = new playcanvas.Asset(\n \"dataAudioFile-\" + PlayCanvasAudio.dataAudioFileCount++,\n \"audio\",\n { url },\n base64,\n );\n asset.resource = soundComp;\n asset.loaded = true;\n this.getPlayCanvasApp().assets.add(asset);\n resolve(asset);\n })\n .catch((e) => {\n console.error(\"Failed to decode data URI audio data\", e);\n });\n return;\n }\n\n const asset = new playcanvas.Asset(url, \"audio\", { url });\n this.getPlayCanvasApp().assets.add(asset);\n this.getPlayCanvasApp().assets.load(asset);\n asset.ready((asset) => {\n resolve(asset);\n });\n // Listen for errors\n asset.on(\"error\", (err) => {\n console.error(\"Error loading audio asset\", err);\n reject(err);\n });\n });\n }\n\n dispose() {\n if (this.delayedPauseTimer) {\n clearTimeout(this.delayedPauseTimer);\n this.delayedPauseTimer = null;\n }\n if (this.delayedStartTimer) {\n clearTimeout(this.delayedStartTimer);\n this.delayedStartTimer = null;\n }\n const audioEntity = this.audio.getContainer() as playcanvas.Entity;\n audioEntity.removeComponent(\"sound\");\n }\n}\n\nfunction extendAudioToDuration(\n context: AudioContext,\n buffer: AudioBuffer,\n seconds: number,\n): AudioBuffer {\n const updatedBuffer = context.createBuffer(\n buffer.numberOfChannels,\n Math.ceil(seconds * buffer.sampleRate),\n buffer.sampleRate,\n );\n for (let channelNumber = 0; channelNumber < buffer.numberOfChannels; channelNumber++) {\n const channelData = buffer.getChannelData(channelNumber);\n const updatedChannelData = updatedBuffer.getChannelData(channelNumber);\n updatedChannelData.set(channelData, 0);\n }\n return updatedBuffer;\n}\n", "import { ChatProbe, ChatProbeGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasChatProbe extends ChatProbeGraphics {\n private entity: playcanvas.Entity | null = null;\n private debugMaterial: playcanvas.BasicMaterial | null = null;\n\n constructor(private chatProbe: ChatProbe) {\n super(chatProbe);\n this.updateDebugVisualisation();\n }\n\n public disable(): void {}\n\n public enable(): void {}\n\n public setRange(): void {\n this.updateDebugVisualisation();\n }\n\n public setDebug() {\n this.updateDebugVisualisation();\n }\n\n private clearDebugVisualisation() {\n if (this.entity) {\n this.entity.destroy();\n this.entity = null;\n }\n if (this.debugMaterial) {\n this.debugMaterial.destroy();\n this.debugMaterial = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.chatProbe.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (this.chatProbe.isConnected && !this.entity) {\n this.entity = new playcanvas.Entity(\n \"chat-probe-internal\",\n this.chatProbe.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n if (!this.debugMaterial) {\n this.debugMaterial = new playcanvas.BasicMaterial();\n this.debugMaterial.color = new playcanvas.Color(1, 1, 0);\n }\n this.entity.addComponent(\"model\", {\n type: \"sphere\",\n material: this.debugMaterial,\n });\n this.entity.model?.model.meshInstances.forEach((mi) => {\n mi.renderStyle = playcanvas.RENDERSTYLE_WIREFRAME;\n mi.castShadow = false;\n });\n\n this.chatProbe.getContainer().addChild(this.entity);\n }\n\n if (this.entity) {\n this.entity.setLocalScale(\n this.chatProbe.props.range * 2,\n this.chatProbe.props.range * 2,\n this.chatProbe.props.range * 2,\n );\n }\n }\n }\n\n public dispose() {\n this.clearDebugVisualisation();\n }\n}\n", "import { Cube, MCubeProps, MELEMENT_PROPERTY_NAME } from \"@mml-io/mml-web\";\nimport { CubeGraphics } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasCube extends CubeGraphics {\n private entity: playcanvas.Entity;\n private renderComponent: playcanvas.RenderComponent;\n private material: playcanvas.StandardMaterial = new playcanvas.StandardMaterial();\n\n constructor(private cube: Cube) {\n super(cube);\n\n /*\n The primitive must be in an internal entity to allow using setLocalScale\n without affecting children.\n */\n this.entity = new playcanvas.Entity(\n \"cube-internal\",\n cube.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n (this.entity as any)[MELEMENT_PROPERTY_NAME] = cube;\n this.renderComponent = this.entity.addComponent(\"render\", {\n type: \"box\",\n material: this.material,\n }) as playcanvas.RenderComponent;\n this.entity.addComponent(\"collision\", {\n type: \"box\",\n halfExtents: new playcanvas.Vec3(0.5, 0.5, 0.5),\n });\n cube.getContainer().addChild(this.entity);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): playcanvas.Entity {\n return this.entity;\n }\n\n setColor(color: MMLColor): void {\n this.material.diffuse.set(color.r, color.g, color.b);\n this.material.metalness = 0;\n this.material.useMetalness = true;\n this.material.update();\n }\n\n private updateSize(mCubeProps: MCubeProps): void {\n this.entity.setLocalScale(mCubeProps.width, mCubeProps.height, mCubeProps.depth);\n if (this.entity.collision) {\n this.entity.collision.halfExtents.set(\n mCubeProps.width / 2,\n mCubeProps.height / 2,\n mCubeProps.depth / 2,\n );\n // @ts-expect-error - accessing onSetHalfExtents private method\n this.entity.collision.onSetHalfExtents();\n }\n }\n\n setWidth(width: number, mCubeProps: MCubeProps): void {\n this.updateSize(mCubeProps);\n }\n\n setHeight(height: number, mCubeProps: MCubeProps): void {\n this.updateSize(mCubeProps);\n }\n\n setDepth(depth: number, mCubeProps: MCubeProps): void {\n this.updateSize(mCubeProps);\n }\n\n setCastShadows(castShadows: boolean): void {\n this.renderComponent.castShadows = castShadows;\n }\n\n setOpacity(opacity: number): void {\n if (opacity === 1) {\n this.material.blendType = playcanvas.BLEND_NONE;\n } else {\n this.material.blendType = playcanvas.BLEND_NORMAL;\n }\n this.material.opacity = opacity;\n this.material.update();\n }\n\n dispose() {\n this.entity.destroy();\n }\n}\n", "import { Cylinder, MCylinderProps, MELEMENT_PROPERTY_NAME } from \"@mml-io/mml-web\";\nimport { CylinderGraphics } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasCylinder extends CylinderGraphics {\n private entity: playcanvas.Entity;\n private renderComponent: playcanvas.RenderComponent;\n private material: playcanvas.StandardMaterial = new playcanvas.StandardMaterial();\n\n constructor(private cylinder: Cylinder) {\n super(cylinder);\n\n /*\n The primitive must be in an internal entity to allow using setLocalScale\n without affecting children.\n */\n this.entity = new playcanvas.Entity(\n \"cylinder-internal\",\n cylinder.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n (this.entity as any)[MELEMENT_PROPERTY_NAME] = cylinder;\n this.renderComponent = this.entity.addComponent(\"render\", {\n type: \"cylinder\",\n material: this.material,\n }) as playcanvas.RenderComponent;\n const collisionComponent = this.entity.addComponent(\"collision\", {\n type: \"cylinder\",\n }) as playcanvas.CollisionComponent;\n collisionComponent.radius = 0.5;\n collisionComponent.height = 1;\n cylinder.getContainer().addChild(this.entity);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): playcanvas.Entity {\n return this.entity;\n }\n\n setColor(color: MMLColor): void {\n this.material.diffuse.set(color.r, color.g, color.b);\n this.material.metalness = 0;\n this.material.useMetalness = true;\n this.material.update();\n }\n\n private updateSize(mCylinderProps: MCylinderProps): void {\n this.entity.setLocalScale(\n mCylinderProps.radius * 2,\n mCylinderProps.height,\n mCylinderProps.radius * 2,\n );\n if (this.entity.collision) {\n this.entity.collision.radius = mCylinderProps.radius;\n this.entity.collision.height = mCylinderProps.height;\n // @ts-expect-error - accessing onSetHalfExtents private method\n this.entity.collision.onSetHalfExtents();\n }\n }\n\n setRadius(radius: number, mCylinderProps: MCylinderProps): void {\n this.updateSize(mCylinderProps);\n }\n\n setHeight(height: number, mCylinderProps: MCylinderProps): void {\n this.updateSize(mCylinderProps);\n }\n\n setCastShadows(castShadows: boolean): void {\n this.renderComponent.castShadows = castShadows;\n }\n\n setOpacity(opacity: number): void {\n if (opacity === 1) {\n this.material.blendType = playcanvas.BLEND_NONE;\n } else {\n this.material.blendType = playcanvas.BLEND_NORMAL;\n }\n this.material.opacity = opacity;\n this.material.update();\n }\n\n dispose() {\n this.entity.destroy();\n }\n}\n", "import { DebugHelper, DebugHelperGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { createPlayCanvasDebugBoundingBox } from \"../debug-bounding-box/PlayCanvasDebugBoundingBox\";\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasDebugHelper extends DebugHelperGraphics {\n private debugAxes: playcanvas.Entity | null = null;\n\n constructor(private debugHelper: DebugHelper) {\n super(debugHelper);\n\n const graphicsAdapter = this.debugHelper.element.getScene().getGraphicsAdapter();\n\n const playcanvasApp = graphicsAdapter.getPlayCanvasApp();\n\n const playcanvasEntity: playcanvas.Entity = this.debugHelper.getContainer();\n this.debugAxes = new playcanvas.Entity(\"axes\", playcanvasApp);\n playcanvasEntity.addChild(this.debugAxes);\n\n const xMaterial = new playcanvas.BasicMaterial();\n xMaterial.color = new playcanvas.Color(1, 0, 0);\n const xAxis = createPlayCanvasDebugBoundingBox(graphicsAdapter, xMaterial);\n xAxis.setLocalScale(0.5, 0, 0);\n xAxis.setLocalPosition(0.25, 0, 0);\n this.debugAxes.addChild(xAxis);\n\n const yMaterial = new playcanvas.BasicMaterial();\n yMaterial.color = new playcanvas.Color(0, 1, 0);\n const yAxis = createPlayCanvasDebugBoundingBox(graphicsAdapter, yMaterial);\n yAxis.setLocalScale(0, 0.5, 0);\n yAxis.setLocalPosition(0, 0.25, 0);\n this.debugAxes.addChild(yAxis);\n\n const zMaterial = new playcanvas.BasicMaterial();\n zMaterial.color = new playcanvas.Color(0, 0, 1);\n const zAxis = createPlayCanvasDebugBoundingBox(graphicsAdapter, zMaterial);\n zAxis.setLocalScale(0, 0, 0.5);\n zAxis.setLocalPosition(0, 0, 0.25);\n this.debugAxes.addChild(zAxis);\n }\n\n dispose() {\n if (this.debugAxes) {\n this.debugHelper.getContainer().removeChild(this.debugAxes);\n this.debugAxes.destroy();\n }\n this.debugAxes = null;\n }\n}\n", "import * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport function createPlayCanvasDebugBoundingBox(\n graphicsAdapter: PlayCanvasGraphicsAdapter,\n material: playcanvas.Material,\n): playcanvas.Entity {\n const entity = new playcanvas.Entity(\"bounding-box\", graphicsAdapter.getPlayCanvasApp());\n entity.addComponent(\"model\", {\n type: \"box\",\n material,\n });\n entity.model?.model.meshInstances.forEach((mi) => {\n mi.renderStyle = playcanvas.RENDERSTYLE_WIREFRAME;\n mi.castShadow = false;\n });\n return entity;\n}\n", "import { Frame, FrameGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { createPlayCanvasDebugBoundingBox } from \"../debug-bounding-box/PlayCanvasDebugBoundingBox\";\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nfunction setEntityToBoundingBox(\n debugBoxConstraintMesh: playcanvas.Entity,\n minX: number,\n maxX: number,\n minY: number,\n maxY: number,\n minZ: number,\n maxZ: number,\n) {\n debugBoxConstraintMesh.setLocalPosition((maxX + minX) / 2, (maxY + minY) / 2, (maxZ + minZ) / 2);\n debugBoxConstraintMesh.setLocalScale(-(maxX - minX), maxY - minY, maxZ - minZ);\n}\n\nexport class PlayCanvasFrame extends FrameGraphics {\n private debugMaterial: playcanvas.BasicMaterial | null = null;\n private loadRangeMaterial: playcanvas.BasicMaterial | null = null;\n private unloadRangeMaterial: playcanvas.BasicMaterial | null = null;\n\n private debugMeshes: {\n debugBoxConstraintMesh: playcanvas.Entity;\n debugBoxLoadRangeMesh: playcanvas.Entity;\n debugBoxUnloadRangeMesh: playcanvas.Entity;\n } | null = null;\n\n constructor(private frame: Frame) {\n super(frame);\n this.updateDebugVisualisation();\n }\n\n setSrc(): void {\n // no-op\n }\n\n public setDebug(): void {\n this.updateDebugVisualisation();\n }\n public setLoadRange(): void {\n this.updateDebugVisualisation();\n }\n public setUnloadRange(): void {\n this.updateDebugVisualisation();\n }\n public setMinX(): void {\n this.updateDebugVisualisation();\n }\n public setMaxX(): void {\n this.updateDebugVisualisation();\n }\n public setMinY(): void {\n this.updateDebugVisualisation();\n }\n public setMaxY(): void {\n this.updateDebugVisualisation();\n }\n public setMinZ(): void {\n this.updateDebugVisualisation();\n }\n public setMaxZ(): void {\n this.updateDebugVisualisation();\n }\n\n disable(): void {}\n\n enable(): void {}\n\n dispose() {\n this.clearDebugVisualisation();\n }\n\n private clearDebugVisualisation() {\n if (this.debugMeshes) {\n this.debugMeshes.debugBoxConstraintMesh.destroy();\n this.debugMeshes.debugBoxLoadRangeMesh.destroy();\n this.debugMeshes.debugBoxUnloadRangeMesh.destroy();\n this.debugMeshes = null;\n }\n if (this.debugMaterial) {\n this.debugMaterial.destroy();\n this.debugMaterial = null;\n }\n if (this.loadRangeMaterial) {\n this.loadRangeMaterial.destroy();\n this.loadRangeMaterial = null;\n }\n if (this.unloadRangeMaterial) {\n this.unloadRangeMaterial.destroy();\n this.unloadRangeMaterial = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.frame.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (!this.frame.isConnected) {\n return;\n }\n if (!this.debugMeshes) {\n if (!this.debugMaterial) {\n this.debugMaterial = new playcanvas.BasicMaterial();\n this.debugMaterial.color = new playcanvas.Color(1, 0, 0);\n }\n if (!this.loadRangeMaterial) {\n this.loadRangeMaterial = new playcanvas.BasicMaterial();\n this.loadRangeMaterial.color = new playcanvas.Color(0, 1, 0);\n }\n if (!this.unloadRangeMaterial) {\n this.unloadRangeMaterial = new playcanvas.BasicMaterial();\n this.unloadRangeMaterial.color = new playcanvas.Color(0, 0, 1);\n }\n const graphicsAdapter = this.frame.getScene().getGraphicsAdapter();\n this.debugMeshes = {\n debugBoxConstraintMesh: createPlayCanvasDebugBoundingBox(\n graphicsAdapter,\n this.debugMaterial,\n ),\n debugBoxLoadRangeMesh: createPlayCanvasDebugBoundingBox(\n graphicsAdapter,\n this.loadRangeMaterial,\n ),\n debugBoxUnloadRangeMesh: createPlayCanvasDebugBoundingBox(\n graphicsAdapter,\n this.unloadRangeMaterial,\n ),\n };\n this.frame.getContainer().addChild(this.debugMeshes.debugBoxConstraintMesh);\n this.frame.getContainer().addChild(this.debugMeshes.debugBoxLoadRangeMesh);\n this.frame.getContainer().addChild(this.debugMeshes.debugBoxUnloadRangeMesh);\n }\n\n let boxBounds = this.frame.getDefinedBoxBounds();\n if (!boxBounds) {\n boxBounds = [0, 0, 0, 0, 0, 0];\n }\n\n const [minX, maxX, minY, maxY, minZ, maxZ] = boxBounds;\n this.debugMeshes.debugBoxConstraintMesh.enabled = true;\n\n setEntityToBoundingBox(\n this.debugMeshes.debugBoxConstraintMesh,\n minX,\n maxX,\n minY,\n maxY,\n minZ,\n maxZ,\n );\n\n if (this.frame.props.loadRange === null) {\n this.debugMeshes.debugBoxLoadRangeMesh.enabled = false;\n this.debugMeshes.debugBoxUnloadRangeMesh.enabled = false;\n } else {\n this.debugMeshes.debugBoxLoadRangeMesh.enabled = true;\n this.debugMeshes.debugBoxUnloadRangeMesh.enabled = true;\n\n setEntityToBoundingBox(\n this.debugMeshes.debugBoxLoadRangeMesh,\n minX - this.frame.props.loadRange,\n maxX + this.frame.props.loadRange,\n minY - this.frame.props.loadRange,\n maxY + this.frame.props.loadRange,\n minZ - this.frame.props.loadRange,\n maxZ + this.frame.props.loadRange,\n );\n\n setEntityToBoundingBox(\n this.debugMeshes.debugBoxUnloadRangeMesh,\n minX - this.frame.props.loadRange - this.frame.props.unloadRange,\n maxX + this.frame.props.loadRange + this.frame.props.unloadRange,\n minY - this.frame.props.loadRange - this.frame.props.unloadRange,\n maxY + this.frame.props.loadRange + this.frame.props.unloadRange,\n minZ - this.frame.props.loadRange - this.frame.props.unloadRange,\n maxZ + this.frame.props.loadRange + this.frame.props.unloadRange,\n );\n }\n }\n }\n}\n", "import {\n calculateContentSize,\n Image,\n ImageGraphics,\n LoadingInstanceManager,\n MELEMENT_PROPERTY_NAME,\n} from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { createPlaneModel } from \"../plane/plane\";\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\ntype ImageLoadedState = {\n asset: playcanvas.Asset;\n};\n\nexport class PlayCanvasImage extends ImageGraphics {\n private srcLoadingInstanceManager = new LoadingInstanceManager(`${Image.tagName}.src`);\n private latestSrcImagePromise: Promise | null = null;\n private entity: playcanvas.Entity;\n\n private internalEntity: playcanvas.Entity;\n private modelComponent: playcanvas.ModelComponent;\n private material: playcanvas.StandardMaterial = new playcanvas.StandardMaterial();\n protected loadedState: ImageLoadedState | null = null;\n constructor(\n private image: Image,\n private updateMeshCallback: () => void,\n ) {\n super(image, updateMeshCallback);\n\n this.entity = image.getContainer() as playcanvas.Entity;\n\n /*\n The primitive must be in an internal entity to allow using setLocalScale\n without affecting children.\n */\n this.internalEntity = new playcanvas.Entity(\n \"image-internal\",\n image.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n (this.internalEntity as any)[MELEMENT_PROPERTY_NAME] = image;\n\n const { model } = createPlaneModel(this.getPlayCanvasApp(), this.material);\n this.modelComponent = this.internalEntity.addComponent(\n \"model\",\n {},\n ) as playcanvas.ModelComponent;\n this.modelComponent.model = model;\n\n // Use the collision component of the element's entity\n this.entity.addComponent(\"collision\", {\n type: \"box\",\n halfExtents: new playcanvas.Vec3(0.5, 0, 0.5),\n });\n this.entity.addChild(this.internalEntity);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getWidthAndHeight(): { width: number; height: number } {\n return {\n width: this.internalEntity.getLocalScale().x,\n height: this.internalEntity.getLocalScale().y,\n };\n }\n\n getCollisionElement(): playcanvas.Entity {\n return this.entity;\n }\n\n private getPlayCanvasApp(): playcanvas.AppBase {\n return this.image.getScene().getGraphicsAdapter().getPlayCanvasApp();\n }\n\n private updateWidthAndHeight() {\n const loadedImage = this.loadedState?.asset.resource;\n\n const { width, height } = calculateContentSize({\n content: loadedImage ? { width: loadedImage.width, height: loadedImage.height } : undefined,\n width: this.image.props.width,\n height: this.image.props.height,\n });\n\n // Update the size of the visual representation\n this.internalEntity.setLocalScale(width, height, 1);\n\n // Update the collision shape\n if (this.entity.collision) {\n this.entity.collision.halfExtents.set(width / 2, height / 2, 0);\n // @ts-expect-error - accessing onSetHalfExtents private method\n this.entity.collision.onSetHalfExtents();\n }\n\n this.updateMeshCallback();\n }\n\n setWidth(): void {\n this.updateWidthAndHeight();\n }\n\n setHeight(): void {\n this.updateWidthAndHeight();\n }\n\n private clearImage() {\n if (this.material) {\n this.material.diffuseMap = null;\n this.material.opacityMap = null;\n this.material.emissiveMap = null;\n this.material.update();\n }\n this.updateWidthAndHeight();\n }\n\n public setSrc(src: string | null): void {\n if (this.loadedState !== null) {\n this.loadedState.asset.unload();\n this.loadedState = null;\n }\n if (!src) {\n this.clearImage();\n this.srcLoadingInstanceManager.abortIfLoading();\n return;\n }\n\n const contentSrc = this.image.contentSrcToContentAddress(src);\n const srcImagePromise = this.asyncLoadSourceAsset(contentSrc, (loaded, total) => {\n this.srcLoadingInstanceManager.setProgress(loaded / total);\n });\n this.srcLoadingInstanceManager.start(this.image.getLoadingProgressManager(), contentSrc);\n this.latestSrcImagePromise = srcImagePromise;\n srcImagePromise\n .then((asset) => {\n if (this.latestSrcImagePromise !== srcImagePromise || !this.image.isConnected) {\n // TODO\n // If we've loaded a different image since, or we're no longer connected, dispose of this one\n return;\n }\n this.latestSrcImagePromise = null;\n this.loadedState = {\n asset,\n };\n\n const texture = asset.resource;\n texture.premultiplyAlpha = true;\n this.material.diffuseMap = texture;\n this.material.blendType = playcanvas.BLEND_NORMAL;\n this.material.opacityMap = texture;\n this.material.update();\n this.updateWidthAndHeight();\n this.updateMaterialEmissiveIntensity();\n this.srcLoadingInstanceManager.finish();\n })\n .catch((err) => {\n console.error(\"Error loading m-image.src\", err);\n this.clearImage();\n this.srcLoadingInstanceManager.error(err);\n });\n }\n\n setCastShadows(castShadows: boolean): void {\n this.modelComponent.castShadows = castShadows;\n }\n\n setOpacity(opacity: number): void {\n if (opacity === 1) {\n this.material.blendType = playcanvas.BLEND_NONE;\n } else {\n this.material.blendType = playcanvas.BLEND_NORMAL;\n }\n this.material.opacity = opacity;\n this.material.update();\n }\n\n setEmissive(): void {\n this.updateMaterialEmissiveIntensity();\n }\n\n private updateMaterialEmissiveIntensity() {\n if (this.image.props.emissive) {\n this.material.emissiveMap = this.material.diffuseMap;\n this.material.emissiveIntensity = this.image.props.emissive;\n } else {\n this.material.emissiveMap = null;\n this.material.emissiveIntensity = 0;\n }\n this.material.update();\n }\n\n private async asyncLoadSourceAsset(\n url: string,\n // TODO - report progress\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onProgress: (loaded: number, total: number) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n const asset = new playcanvas.Asset(url, \"texture\", { url });\n this.getPlayCanvasApp().assets.add(asset);\n this.getPlayCanvasApp().assets.load(asset);\n asset.ready((asset) => {\n resolve(asset);\n });\n asset.on(\"error\", (err) => {\n reject(err);\n });\n });\n }\n\n dispose() {\n if (this.loadedState) {\n this.loadedState.asset.unload();\n this.loadedState = null;\n }\n this.internalEntity.destroy();\n }\n}\n", "import * as playcanvas from \"playcanvas\";\n\nexport function createPlaneMesh(app: playcanvas.AppBase): playcanvas.Mesh {\n const vertices = [\n // First triangle\n // bottom left\n -0.5, -0.5, 0,\n // bottom right\n 0.5, -0.5, 0,\n // top left\n -0.5, 0.5, 0,\n\n // Second triangle\n // bottom right\n 0.5, -0.5, 0,\n // top right\n 0.5, 0.5, 0,\n // top left\n -0.5, 0.5, 0,\n\n // First triangle\n // top left\n -0.5, 0.5, 0,\n // bottom right\n 0.5, -0.5, 0,\n // bottom left\n -0.5, -0.5, 0,\n\n // Second triangle\n // top left\n -0.5, 0.5, 0,\n // top right\n 0.5, 0.5, 0,\n // bottom right\n 0.5, -0.5, 0,\n ];\n\n const uvs = [\n // First triangle\n // bottom left\n 0, 1,\n // bottom right\n 1, 1,\n // top left\n 0, 0,\n\n // Second triangle\n // bottom right\n 1, 1,\n // top right\n 1, 0,\n // top left\n 0, 0,\n\n // First triangle\n // top left\n 0, 0,\n // bottom right\n 1, 1,\n // bottom left\n 0, 1,\n\n // Second triangle\n // top left\n 0, 0,\n // top right\n 1, 0,\n // bottom right\n 1, 1,\n ];\n\n const normals = Array.from({ length: vertices.length / 3 }).flatMap((value, index) => {\n return index < 6 ? [0, 0, 1] : [0, 0, -1];\n });\n\n const mesh = new playcanvas.Mesh(app.graphicsDevice);\n mesh.setPositions(vertices);\n mesh.setUvs(0, uvs);\n mesh.setNormals(normals);\n mesh.update();\n return mesh;\n}\n\nexport function createPlaneModel(app: playcanvas.AppBase, material: playcanvas.StandardMaterial) {\n const mesh = createPlaneMesh(app);\n const rootNode = new playcanvas.GraphNode();\n const meshInstance = new playcanvas.MeshInstance(mesh, material, rootNode);\n meshInstance.renderStyle = playcanvas.RENDERSTYLE_SOLID;\n const model = new playcanvas.Model();\n model.graph = rootNode;\n model.meshInstances.push(meshInstance);\n return { model, meshInstance };\n}\n", "import { Interaction } from \"@mml-io/mml-web\";\nimport { InteractionGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasInteraction extends InteractionGraphics {\n private entity: playcanvas.Entity | null = null;\n private debugMaterial: playcanvas.BasicMaterial | null = null;\n\n constructor(private positionProbe: Interaction) {\n super(positionProbe);\n this.updateDebugVisualisation();\n }\n\n disable(): void {}\n\n enable(): void {}\n\n public setRange(): void {\n this.updateDebugVisualisation();\n }\n\n public setInFocus(): void {\n // no-op\n }\n\n public setLineOfSight(): void {\n // no-op\n }\n\n public setPriority(): void {\n // no-op\n }\n\n public setPrompt(): void {\n // no-op\n }\n\n public setDebug() {\n this.updateDebugVisualisation();\n }\n\n private clearDebugVisualisation() {\n if (this.entity) {\n this.entity.destroy();\n this.entity = null;\n }\n if (this.debugMaterial) {\n this.debugMaterial.destroy();\n this.debugMaterial = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.positionProbe.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (this.positionProbe.isConnected && !this.entity) {\n this.entity = new playcanvas.Entity(\n \"interaction-internal\",\n this.positionProbe.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n if (!this.debugMaterial) {\n this.debugMaterial = new playcanvas.BasicMaterial();\n this.debugMaterial.color = new playcanvas.Color(0, 1, 0);\n }\n this.entity.addComponent(\"model\", {\n type: \"sphere\",\n material: this.debugMaterial,\n });\n this.entity.model?.model.meshInstances.forEach((mi) => {\n mi.renderStyle = playcanvas.RENDERSTYLE_WIREFRAME;\n mi.castShadow = false;\n });\n\n this.positionProbe.getContainer().addChild(this.entity);\n }\n\n if (this.entity) {\n this.entity.setLocalScale(\n this.positionProbe.props.range * 2,\n this.positionProbe.props.range * 2,\n this.positionProbe.props.range * 2,\n );\n }\n }\n }\n\n dispose() {\n this.clearDebugVisualisation();\n }\n}\n", "import {\n CanvasText,\n Label,\n LabelGraphics,\n MELEMENT_PROPERTY_NAME,\n MLabelProps,\n} from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasLabel extends LabelGraphics {\n private entity: playcanvas.Entity;\n private renderComponent: playcanvas.RenderComponent;\n private material: playcanvas.StandardMaterial = new playcanvas.StandardMaterial();\n private canvasText: CanvasText = new CanvasText();\n\n constructor(private label: Label) {\n super(label);\n\n /*\n The primitive must be in an internal entity to allow using setLocalScale\n without affecting children.\n */\n this.entity = new playcanvas.Entity(\n \"label-internal\",\n label.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n (this.entity as any)[MELEMENT_PROPERTY_NAME] = label;\n this.renderComponent = this.entity.addComponent(\"render\", {\n type: \"plane\",\n material: this.material,\n castShadows: this.label.props.castShadows,\n }) as playcanvas.RenderComponent;\n this.entity.rotate(90, 0, 0);\n this.entity.addComponent(\"collision\", {\n type: \"box\",\n halfExtents: new playcanvas.Vec3(0.5, 0, 0.5),\n });\n label.getContainer().addChild(this.entity);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): playcanvas.Entity {\n return this.entity;\n }\n\n private updateSize(mLabelProps: MLabelProps): void {\n this.entity.setLocalScale(mLabelProps.width, 1, mLabelProps.height);\n if (this.entity.collision) {\n this.entity.collision.halfExtents.set(mLabelProps.width / 2, 0, mLabelProps.height / 2);\n // @ts-expect-error - accessing onSetHalfExtents private method\n this.entity.collision.onSetHalfExtents();\n }\n }\n\n public setWidth(width: number, mLabelProps: MLabelProps): void {\n this.updateSize(mLabelProps);\n this.redrawText();\n }\n\n public setHeight(height: number, mLabelProps: MLabelProps): void {\n this.updateSize(mLabelProps);\n this.redrawText();\n }\n public setContent(): void {\n this.redrawText();\n }\n public setAlignment(): void {\n this.redrawText();\n }\n public setFontSize(): void {\n this.redrawText();\n }\n public setPadding(): void {\n this.redrawText();\n }\n public setColor(): void {\n this.redrawText();\n }\n public setFontColor(): void {\n this.redrawText();\n }\n\n public setEmissive(): void {\n this.updateMaterialEmissiveIntensity();\n }\n\n private updateMaterialEmissiveIntensity() {\n if (this.label.props.emissive) {\n this.material.emissiveMap = this.material.diffuseMap;\n this.material.emissiveIntensity = this.label.props.emissive;\n } else {\n this.material.emissiveMap = null;\n this.material.emissiveIntensity = 0;\n }\n this.material.update();\n }\n\n private redrawText() {\n if (!this.material) {\n return;\n }\n const canvas = this.canvasText.renderText(this.label.props.content, {\n bold: true,\n fontSize: this.label.props.fontSize * 2,\n paddingPx: this.label.props.padding,\n textColorRGB255A1: {\n r: this.label.props.fontColor.r * 255,\n g: this.label.props.fontColor.g * 255,\n b: this.label.props.fontColor.b * 255,\n a: this.label.props.fontColor.a ?? 1,\n },\n backgroundColorRGB255A1: {\n r: this.label.props.color.r * 255,\n g: this.label.props.color.g * 255,\n b: this.label.props.color.b * 255,\n a: this.label.props.color.a ?? 1,\n },\n dimensions: {\n width: this.label.props.width * 200,\n height: this.label.props.height * 200,\n },\n alignment: this.label.props.alignment,\n });\n\n const texture = new playcanvas.Texture(\n this.label.getScene().getGraphicsAdapter().getPlayCanvasApp().graphicsDevice,\n {\n width: canvas.width,\n height: canvas.height,\n },\n );\n texture.setSource(canvas);\n this.material.diffuseMap = texture;\n if ((this.label.props.color.a ?? 1) < 1) {\n this.material.blendType = playcanvas.BLEND_NORMAL;\n this.material.opacityMap = texture;\n } else {\n this.material.blendType = playcanvas.BLEND_NONE;\n this.material.opacityMap = null;\n }\n this.material.update();\n this.updateMaterialEmissiveIntensity();\n texture.destroy();\n }\n\n setCastShadows(castShadows: boolean): void {\n this.renderComponent.castShadows = castShadows;\n }\n\n dispose() {\n this.entity.destroy();\n }\n}\n", "import { Light } from \"@mml-io/mml-web\";\nimport { LightGraphics } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nconst lightIntensityFactor = 1 / 100;\nconst lightLuminanceFactor = 4000;\n\nexport class PlayCanvasLight extends LightGraphics {\n private lightComponent: playcanvas.LightComponent;\n\n constructor(private light: Light) {\n super(light);\n this.createLight();\n }\n\n private createLight() {\n const lightEntity = this.light.getContainer() as playcanvas.Entity;\n if (this.lightComponent) {\n lightEntity.removeComponent(\"light\");\n }\n\n const { r, g, b } = this.light.props.color;\n\n if (this.light.props.type === \"spotlight\") {\n this.lightComponent = lightEntity.addComponent(\"light\", {\n type: \"spot\",\n luminance: this.light.props.intensity * lightLuminanceFactor,\n intensity: this.light.props.intensity * lightIntensityFactor,\n castShadows: this.light.props.castShadows,\n color: new playcanvas.Color(r, g, b),\n shadowBias: 0.001,\n normalOffsetBias: 0.001,\n shape: playcanvas.LIGHTSHAPE_DISK,\n innerConeAngle: this.light.props.angleDeg,\n outerConeAngle: this.light.props.angleDeg,\n range: this.light.props.distance ?? 100,\n falloffMode: playcanvas.LIGHTFALLOFF_INVERSESQUARED,\n enabled: this.light.props.enabled,\n } as playcanvas.LightComponent) as playcanvas.LightComponent;\n } else {\n this.lightComponent = lightEntity.addComponent(\"light\", {\n type: \"point\",\n luminance: this.light.props.intensity * lightLuminanceFactor,\n intensity: this.light.props.intensity * lightIntensityFactor,\n castShadows: this.light.props.castShadows,\n color: new playcanvas.Color(r, g, b),\n shadowBias: 0.001,\n normalOffsetBias: 0.001,\n range: this.light.props.distance ?? 100,\n falloffMode: playcanvas.LIGHTFALLOFF_INVERSESQUARED,\n enabled: this.light.props.enabled,\n } as playcanvas.LightComponent) as playcanvas.LightComponent;\n }\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setEnabled(enabled: boolean): void {\n this.lightComponent.enabled = enabled;\n }\n\n setCastShadows(castShadows: boolean) {\n this.lightComponent.castShadows = castShadows;\n this.lightComponent.refreshProperties();\n }\n\n setAngle(angle: number) {\n if (this.lightComponent.type !== \"spot\") {\n return;\n }\n this.lightComponent.innerConeAngle = angle;\n this.lightComponent.outerConeAngle = angle;\n this.lightComponent.refreshProperties();\n }\n\n setIntensity(intensity: number) {\n this.lightComponent.luminance = intensity * lightLuminanceFactor;\n this.lightComponent.intensity = intensity * lightIntensityFactor;\n this.lightComponent.refreshProperties();\n }\n\n setDistance(distance: number | null) {\n this.lightComponent.range = distance ?? 100;\n this.lightComponent.refreshProperties();\n }\n\n setType(): void {\n this.createLight();\n }\n\n setDebug(): void {\n // TODO\n }\n\n setColor(color: MMLColor): void {\n this.lightComponent.color.set(color.r, color.g, color.b);\n this.lightComponent.refreshProperties();\n }\n\n dispose() {\n const lightEntity = this.light.getContainer() as playcanvas.Entity;\n lightEntity.removeComponent(\"light\");\n }\n}\n", "import { Link } from \"@mml-io/mml-web\";\nimport { LinkGraphics } from \"@mml-io/mml-web\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasLink extends LinkGraphics {\n constructor(private link: Link) {\n super(link);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setHref(): void {\n // no-op\n }\n\n setTarget(): void {\n // no-op\n }\n\n dispose() {}\n}\n", "import { MElement, MELEMENT_PROPERTY_NAME } from \"@mml-io/mml-web\";\nimport { MElementGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasMElement extends MElementGraphics {\n protected container: playcanvas.Entity;\n private currentParentContainer: playcanvas.Entity | null = null;\n\n constructor(private element: MElement) {\n super(element);\n this.container = new playcanvas.Entity(\n element.constructor.name,\n element.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n (this.container as any)[MELEMENT_PROPERTY_NAME] = element;\n\n if (this.currentParentContainer !== null) {\n throw new Error(\"Already connected to a parent\");\n }\n\n const mElementParent = this.element.getMElementParent();\n if (mElementParent) {\n this.currentParentContainer = mElementParent.getContainer();\n this.currentParentContainer.addChild(this.container);\n return;\n }\n\n // If none of the ancestors are MElements then this element may be directly connected to the body (without a wrapper).\n // Attempt to use a global scene that has been configured to attach this element to.\n const scene = this.element.getScene();\n this.currentParentContainer = scene.getRootContainer();\n this.currentParentContainer.addChild(this.container);\n }\n\n public getContainer(): playcanvas.Entity {\n return this.container;\n }\n\n public dispose() {\n if (this.currentParentContainer === null) {\n throw new Error(\"Was not connected to a parent\");\n }\n\n this.currentParentContainer.removeChild(this.container);\n this.currentParentContainer = null;\n\n this.container.destroy();\n }\n}\n", "import {\n IVect3,\n LoadingInstanceManager,\n MElement,\n Model,\n ModelGraphics,\n TransformableElement,\n} from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { createPlayCanvasDebugBoundingBox } from \"../debug-bounding-box/PlayCanvasDebugBoundingBox\";\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\ntype PlayCanvasModelLoadState = {\n renderEntity: playcanvas.Entity;\n boundingBox: playcanvas.BoundingBox;\n collisionWorldScale: IVect3;\n bones: Map;\n};\n\ntype PlayCanvasAnimLoadState = {\n animAsset: playcanvas.Asset;\n animComponent: playcanvas.AnimComponent | null;\n};\n\nexport class PlayCanvasModel extends ModelGraphics {\n private srcLoadingInstanceManager = new LoadingInstanceManager(`${Model.tagName}.src`);\n private animLoadingInstanceManager = new LoadingInstanceManager(`${Model.tagName}.anim`);\n private latestSrcModelPromise: Promise | null = null;\n\n private debugMaterial: playcanvas.BasicMaterial | null = null;\n\n private latestAnimPromise: Promise | null = null;\n private documentTimeTickListener: null | { remove: () => void } = null;\n\n private attachments = new Map<\n Model,\n {\n animComponent: playcanvas.AnimComponent;\n } | null\n >();\n private registeredParentAttachment: Model | null = null;\n\n private socketChildrenByBone = new Map>>();\n\n private debugBoundingBox: playcanvas.Entity | null = null;\n\n protected loadedState: PlayCanvasModelLoadState | null = null;\n protected animState: PlayCanvasAnimLoadState | null = null;\n\n constructor(\n private model: Model,\n private updateMeshCallback: () => void,\n ) {\n super(model, updateMeshCallback);\n }\n\n private getPlayCanvasApp(): playcanvas.AppBase {\n return this.model.getScene().getGraphicsAdapter().getPlayCanvasApp();\n }\n\n hasLoadedModel(): boolean {\n return !!this.loadedState?.renderEntity;\n }\n\n hasLoadedAnimation(): boolean {\n return !!this.animState?.animAsset;\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): playcanvas.Entity {\n return this.model.getContainer();\n }\n\n setDebug(): void {\n this.updateDebugVisualisation();\n }\n\n setCastShadows(): void {\n // TODO\n }\n\n public registerAttachment(attachment: Model) {\n let animState = null;\n if (this.animState) {\n const attachmentLoadedState = (attachment.modelGraphics as PlayCanvasModel).loadedState;\n if (!attachmentLoadedState) {\n throw new Error(\"Attachment must be loaded before registering\");\n }\n const playcanvasEntity = attachmentLoadedState.renderEntity;\n const animComponent = playcanvasEntity.addComponent(\"anim\", {}) as playcanvas.AnimComponent;\n animComponent.assignAnimation(\"SingleAnimation\", this.animState.animAsset.resource);\n animState = {\n animComponent,\n };\n }\n this.attachments.set(attachment, animState);\n }\n\n public unregisterAttachment(attachment: Model) {\n const animState = this.attachments.get(attachment);\n if (animState) {\n animState.animComponent.reset();\n animState.animComponent.unbind();\n animState.animComponent.entity.removeComponent(\"anim\");\n }\n this.attachments.delete(attachment);\n }\n\n getBoundingBox(): { centerOffset: IVect3; size: IVect3 } | null {\n if (this.loadedState) {\n return {\n centerOffset: this.loadedState.boundingBox.center,\n size: this.loadedState.boundingBox.halfExtents,\n };\n }\n return null;\n }\n\n setAnim(anim: string): void {\n if (this.animState) {\n if (this.animState.animComponent) {\n this.animState.animComponent.reset();\n this.animState.animComponent.unbind();\n this.animState.animComponent.entity.removeComponent(\"anim\");\n }\n this.animState = null;\n // TODO - clear up the asset?\n for (const [attachment, animState] of this.attachments) {\n if (animState) {\n animState.animComponent.reset();\n animState.animComponent.unbind();\n animState.animComponent.entity.removeComponent(\"anim\");\n }\n this.attachments.set(attachment, null);\n }\n }\n if (!anim) {\n this.latestAnimPromise = null;\n // If the animation is removed then the model can be added to the parent attachment if the model is loaded\n if (this.loadedState && !this.registeredParentAttachment) {\n const parent = this.model.parentElement;\n if (parent instanceof Model) {\n this.registeredParentAttachment = parent;\n (parent.modelGraphics as PlayCanvasModel).registerAttachment(this.model);\n }\n }\n return;\n }\n const animSrc = this.model.contentSrcToContentAddress(anim);\n const animPromise = this.asyncLoadAnimAsset(animSrc, (loaded, total) => {\n this.animLoadingInstanceManager.setProgress(loaded / total);\n });\n this.animLoadingInstanceManager.start(this.model.getLoadingProgressManager(), anim);\n this.latestAnimPromise = animPromise;\n animPromise\n .then((asset) => {\n if (this.latestAnimPromise !== animPromise || !this.model.isConnected) {\n // TODO\n // If we've loaded a different model since, or we're no longer connected, dispose of this one\n // PlayCanvasModel.disposeOfGroup(result.group);\n return;\n }\n this.latestAnimPromise = null;\n this.animState = {\n animAsset: asset,\n animComponent: null,\n };\n // Play the animation\n this.connectAnimationToModel();\n\n for (const [attachment] of this.attachments) {\n const playcanvasEntity = attachment.getContainer() as playcanvas.Entity;\n const animComponent = playcanvasEntity.addComponent(\n \"anim\",\n {},\n ) as playcanvas.AnimComponent;\n animComponent.assignAnimation(\"SingleAnimation\", this.animState.animAsset.resource);\n const animState = {\n animComponent,\n };\n this.attachments.set(attachment, animState);\n }\n\n if (!this.documentTimeTickListener) {\n this.documentTimeTickListener = this.model.addDocumentTimeTickListener(\n (documentTime: number) => {\n this.updateAnimation(documentTime);\n },\n );\n }\n this.animLoadingInstanceManager.finish();\n })\n .catch((err) => {\n console.error(\"Error loading m-model.anim\", err);\n this.animLoadingInstanceManager.error(err);\n });\n }\n\n private connectAnimationToModel() {\n if (this.animState && this.loadedState) {\n const playcanvasEntity = this.loadedState.renderEntity;\n const animComponent = playcanvasEntity.addComponent(\"anim\", {}) as playcanvas.AnimComponent;\n animComponent.assignAnimation(\"SingleAnimation\", this.animState.animAsset.resource);\n this.animState.animComponent = animComponent;\n }\n }\n\n public registerSocketChild(\n child: TransformableElement,\n socketName: string,\n ): void {\n let children = this.socketChildrenByBone.get(socketName);\n if (!children) {\n children = new Set>();\n this.socketChildrenByBone.set(socketName, children);\n }\n children.add(child);\n\n if (this.loadedState) {\n const bone = this.loadedState.bones.get(socketName);\n if (bone) {\n bone.addChild(child.getContainer());\n } else {\n this.model.getContainer().addChild(child.getContainer());\n }\n }\n }\n\n public unregisterSocketChild(\n child: TransformableElement,\n socketName: string,\n addToRoot: boolean = true,\n ): void {\n const socketChildren = this.socketChildrenByBone.get(socketName);\n if (socketChildren) {\n socketChildren.delete(child);\n if (addToRoot) {\n this.model.getContainer().addChild(child.getContainer());\n }\n if (socketChildren.size === 0) {\n this.socketChildrenByBone.delete(socketName);\n }\n }\n }\n\n public setAnimEnabled(): void {\n // no-op\n }\n\n public setAnimLoop(): void {\n // no-op\n }\n\n public setAnimStartTime(): void {\n // no-op\n }\n\n public setAnimPauseTime(): void {\n // no-op\n }\n\n public transformed(): void {\n /*\n TODO - this hack is necessary to allow scaling of collision models in\n playcanvas. The meshes are cached by id (and potentially shared between\n entities). The scale changing does not cause a cache miss, so the cached\n mesh is used with the wrong scale. This is a workaround to clear the cache.\n */\n const scale = this.loadedState?.renderEntity.getWorldTransform().getScale();\n if (scale && this.loadedState) {\n if (\n Math.abs(this.loadedState.collisionWorldScale.x - scale.x) > 0.001 ||\n Math.abs(this.loadedState.collisionWorldScale.y - scale.y) > 0.001 ||\n Math.abs(this.loadedState.collisionWorldScale.z - scale.z) > 0.001\n ) {\n this.loadedState.collisionWorldScale = { x: scale.x, y: scale.y, z: scale.z };\n\n const collisionComponent = this.loadedState.renderEntity.collision;\n if (collisionComponent) {\n for (const mesh of collisionComponent.data.render.meshes) {\n // @ts-expect-error - accessing _triMeshCache private property\n const triMesh = collisionComponent.system._triMeshCache[mesh.id];\n if (triMesh) {\n // @ts-expect-error - accessing untyped Ammo global\n window.Ammo.destroy(triMesh);\n // @ts-expect-error - accessing _triMeshCache private property\n delete collisionComponent.system._triMeshCache[mesh.id];\n }\n }\n // @ts-expect-error - accessing onSetModel private method\n collisionComponent.onSetModel();\n }\n }\n }\n }\n\n setSrc(src: string): void {\n const playcanvasEntity = this.model.getContainer() as playcanvas.Entity;\n if (this.loadedState !== null) {\n this.loadedState.renderEntity.remove();\n this.loadedState = null;\n if (this.animState) {\n this.animState.animComponent = null;\n }\n if (this.registeredParentAttachment) {\n (this.registeredParentAttachment.modelGraphics as PlayCanvasModel).unregisterAttachment(\n this.model,\n );\n this.registeredParentAttachment = null;\n }\n this.updateMeshCallback();\n this.updateDebugVisualisation();\n }\n if (!src) {\n this.srcLoadingInstanceManager.abortIfLoading();\n this.socketChildrenByBone.forEach((children) => {\n children.forEach((child) => {\n this.model.getContainer().addChild(child.getContainer());\n });\n });\n this.updateMeshCallback();\n this.updateDebugVisualisation();\n return;\n }\n\n const contentSrc = this.model.contentSrcToContentAddress(src);\n const srcModelPromise = this.asyncLoadSourceAsset(contentSrc, (loaded, total) => {\n this.srcLoadingInstanceManager.setProgress(loaded / total);\n });\n this.srcLoadingInstanceManager.start(this.model.getLoadingProgressManager(), contentSrc);\n this.latestSrcModelPromise = srcModelPromise;\n srcModelPromise\n .then((asset) => {\n if (this.latestSrcModelPromise !== srcModelPromise || !this.model.isConnected) {\n // If we've loaded a different model since, or we're no longer connected, dispose of this one\n // PlayCanvasModel.disposeOfGroup(result.group);\n return;\n }\n this.latestSrcModelPromise = null;\n const renderEntity: playcanvas.Entity = asset.resource.instantiateRenderEntity();\n\n let boundingBox: playcanvas.BoundingBox | null = null;\n const renders = renderEntity.findComponents(\"render\") as Array;\n for (const render of renders) {\n for (const meshInstance of render.meshInstances) {\n if (boundingBox) {\n boundingBox.add(meshInstance.aabb);\n } else {\n boundingBox = meshInstance.aabb.clone();\n }\n }\n render.entity.addComponent(\"collision\", {\n type: \"mesh\",\n renderAsset: render.asset,\n });\n }\n if (!boundingBox) {\n boundingBox = new playcanvas.BoundingBox(\n new playcanvas.Vec3(0, 0, 0),\n new playcanvas.Vec3(0, 0, 0),\n );\n }\n boundingBox.halfExtents.mulScalar(2);\n\n const bones = new Map();\n renderEntity.forEach((node) => {\n bones.set(node.name, node);\n });\n\n this.loadedState = {\n renderEntity,\n boundingBox,\n collisionWorldScale: { x: 1, y: 1, z: 1 },\n bones,\n };\n\n playcanvasEntity.addChild(renderEntity);\n\n this.transformed();\n\n for (const [boneName, children] of this.socketChildrenByBone) {\n const bone = bones.get(boneName);\n if (bone) {\n children.forEach((child) => {\n bone.addChild(child.getContainer());\n });\n }\n }\n\n this.connectAnimationToModel();\n this.updateMeshCallback();\n\n const parent = this.model.parentElement;\n if (parent instanceof Model) {\n if (!this.latestAnimPromise && !this.animState) {\n this.registeredParentAttachment = parent;\n (parent.modelGraphics as PlayCanvasModel).registerAttachment(this.model);\n }\n }\n\n this.srcLoadingInstanceManager.finish();\n\n this.updateDebugVisualisation();\n })\n .catch((err) => {\n console.error(\"Error loading m-model.src\", err);\n this.srcLoadingInstanceManager.error(err);\n });\n }\n\n private updateDebugVisualisation() {\n if (!this.model.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (!this.debugBoundingBox) {\n const graphicsAdapter = this.model.getScene().getGraphicsAdapter();\n if (!this.debugMaterial) {\n this.debugMaterial = new playcanvas.BasicMaterial();\n this.debugMaterial.color = new playcanvas.Color(1, 0, 0);\n }\n this.debugBoundingBox = createPlayCanvasDebugBoundingBox(\n graphicsAdapter,\n this.debugMaterial,\n );\n this.model.getContainer().addChild(this.debugBoundingBox);\n }\n if (this.loadedState) {\n const boundingBox = this.loadedState.boundingBox;\n this.debugBoundingBox.setLocalPosition(boundingBox.center);\n this.debugBoundingBox.setLocalScale(boundingBox.halfExtents);\n } else {\n this.debugBoundingBox.setLocalScale(0, 0, 0);\n }\n }\n }\n\n private clearDebugVisualisation() {\n if (this.debugBoundingBox) {\n this.debugBoundingBox.remove();\n this.debugBoundingBox = null;\n }\n if (this.debugMaterial) {\n this.debugMaterial.destroy();\n this.debugMaterial = null;\n }\n }\n\n async asyncLoadSourceAsset(\n url: string,\n // TODO - report progress\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onProgress: (loaded: number, total: number) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n /*\n Rewriting the url with an unused-for-networking fragment here causes the\n asset to be loaded uniquely across elements which allows the meshes to\n be independent and avoid a reuse of a (mis-)scaled mesh for collisions.\n */\n const rewrittenUrl = new URL(url);\n rewrittenUrl.hash = Math.random().toString(10);\n const asset = new playcanvas.Asset(url, \"container\", { url: rewrittenUrl.toString() });\n this.getPlayCanvasApp().assets.add(asset);\n this.getPlayCanvasApp().assets.load(asset);\n asset.ready((asset) => {\n resolve(asset);\n });\n asset.on(\"error\", (err) => {\n reject(err);\n });\n });\n }\n\n async asyncLoadAnimAsset(\n url: string,\n // TODO - report progress\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onProgress: (loaded: number, total: number) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n const asset = new playcanvas.Asset(url, \"animation\", { url });\n this.getPlayCanvasApp().assets.add(asset);\n this.getPlayCanvasApp().assets.load(asset);\n asset.ready((asset) => {\n resolve(asset);\n });\n asset.on(\"error\", (err) => {\n reject(err);\n });\n });\n }\n\n dispose() {\n if (this.documentTimeTickListener) {\n this.documentTimeTickListener.remove();\n this.documentTimeTickListener = null;\n }\n if (this.registeredParentAttachment) {\n (this.registeredParentAttachment?.modelGraphics as PlayCanvasModel)?.unregisterAttachment(\n this.model,\n );\n this.registeredParentAttachment = null;\n }\n if (this.loadedState) {\n this.loadedState.renderEntity.destroy();\n this.loadedState = null;\n }\n this.clearDebugVisualisation();\n this.animLoadingInstanceManager.dispose();\n this.srcLoadingInstanceManager.dispose();\n }\n\n private triggerSocketedChildrenTransformed() {\n // Socketed children need to be updated when the animation is updated as their position may have updated\n this.socketChildrenByBone.forEach((children) => {\n children.forEach((child) => {\n if (child instanceof TransformableElement) {\n child.didUpdateTransformation();\n }\n });\n });\n }\n\n private updateAnimation(docTimeMs: number) {\n let animationTimeMs = docTimeMs - this.model.props.animStartTime;\n if (docTimeMs < this.model.props.animStartTime) {\n animationTimeMs = 0;\n } else if (this.model.props.animPauseTime !== null) {\n if (docTimeMs > this.model.props.animPauseTime) {\n animationTimeMs = this.model.props.animPauseTime - this.model.props.animStartTime;\n }\n }\n\n const animComponent = this.animState?.animComponent;\n if (animComponent) {\n if (!this.model.props.animEnabled) {\n animComponent.playing = false;\n this.triggerSocketedChildrenTransformed();\n } else {\n animComponent.playing = true;\n // @ts-expect-error - accessing _controller private property\n const clip = animComponent.baseLayer._controller._animEvaluator.clips[0];\n if (clip) {\n clip.time = animationTimeMs / 1000;\n }\n }\n }\n\n for (const [model, animState] of this.attachments) {\n if (animState) {\n animState.animComponent.playing = this.model.props.animEnabled;\n // @ts-expect-error - accessing _controller private property\n const clip = animState.animComponent.baseLayer._controller._animEvaluator.clips[0];\n if (clip) {\n clip.time = animationTimeMs / 1000;\n (model.modelGraphics as PlayCanvasModel).triggerSocketedChildrenTransformed();\n }\n }\n }\n this.triggerSocketedChildrenTransformed();\n }\n}\n", "import { MELEMENT_PROPERTY_NAME, MPlaneProps, Plane } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport { PlaneGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasPlane extends PlaneGraphics {\n private entity: playcanvas.Entity;\n private renderComponent: playcanvas.RenderComponent;\n private material: playcanvas.StandardMaterial = new playcanvas.StandardMaterial();\n\n constructor(private plane: Plane) {\n super(plane);\n\n /*\n The primitive must be in an internal entity to allow using setLocalScale\n without affecting children.\n */\n this.entity = new playcanvas.Entity(\n \"plane-internal\",\n plane.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n (this.entity as any)[MELEMENT_PROPERTY_NAME] = plane;\n this.renderComponent = this.entity.addComponent(\"render\", {\n type: \"plane\",\n material: this.material,\n }) as playcanvas.RenderComponent;\n this.entity.rotate(90, 0, 0);\n this.entity.addComponent(\"collision\", {\n type: \"box\",\n halfExtents: new playcanvas.Vec3(0.5, 0, 0.5),\n });\n plane.getContainer().addChild(this.entity);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): playcanvas.Entity {\n return this.entity;\n }\n\n setColor(color: MMLColor): void {\n this.material.diffuse.set(color.r, color.g, color.b);\n this.material.update();\n }\n\n private updateSize(mPlaneProps: MPlaneProps): void {\n this.entity.setLocalScale(mPlaneProps.width, 1, mPlaneProps.height);\n if (this.entity.collision) {\n this.entity.collision.halfExtents.set(mPlaneProps.width / 2, 0, mPlaneProps.height / 2);\n // @ts-expect-error - accessing onSetHalfExtents private method\n this.entity.collision.onSetHalfExtents();\n }\n }\n\n setWidth(width: number, mPlaneProps: MPlaneProps): void {\n this.updateSize(mPlaneProps);\n }\n\n setHeight(height: number, mPlaneProps: MPlaneProps): void {\n this.updateSize(mPlaneProps);\n }\n\n setCastShadows(castShadows: boolean): void {\n // TODO - not casting shadows?\n this.renderComponent.castShadows = castShadows;\n }\n\n setOpacity(opacity: number): void {\n if (opacity === 1) {\n this.material.blendType = playcanvas.BLEND_NONE;\n } else {\n this.material.blendType = playcanvas.BLEND_NORMAL;\n }\n this.material.opacity = opacity;\n this.material.update();\n }\n\n dispose() {\n this.entity.destroy();\n }\n}\n", "import { PositionProbe } from \"@mml-io/mml-web\";\nimport { PositionProbeGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasPositionProbe extends PositionProbeGraphics {\n private entity: playcanvas.Entity | null = null;\n private debugMaterial: playcanvas.BasicMaterial | null = null;\n\n constructor(private positionProbe: PositionProbe) {\n super(positionProbe);\n this.updateDebugVisualisation();\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setRange(): void {\n this.updateDebugVisualisation();\n }\n\n setDebug() {\n this.updateDebugVisualisation();\n }\n\n private clearDebugVisualisation() {\n if (this.entity) {\n this.entity.destroy();\n this.entity = null;\n }\n if (this.debugMaterial) {\n this.debugMaterial.destroy();\n this.debugMaterial = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.positionProbe.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (this.positionProbe.isConnected && !this.entity) {\n this.entity = new playcanvas.Entity(\n \"position-probe-internal\",\n this.positionProbe.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n if (!this.debugMaterial) {\n this.debugMaterial = new playcanvas.BasicMaterial();\n this.debugMaterial.color = new playcanvas.Color(0, 1, 0);\n }\n this.entity.addComponent(\"model\", {\n type: \"sphere\",\n material: this.debugMaterial,\n });\n this.entity.model?.model.meshInstances.forEach((mi) => {\n mi.renderStyle = playcanvas.RENDERSTYLE_WIREFRAME;\n mi.castShadow = false;\n });\n\n this.positionProbe.getContainer().addChild(this.entity);\n }\n\n if (this.entity) {\n this.entity.setLocalScale(\n this.positionProbe.props.range * 2,\n this.positionProbe.props.range * 2,\n this.positionProbe.props.range * 2,\n );\n }\n }\n }\n\n dispose() {\n this.clearDebugVisualisation();\n }\n}\n", "import { Prompt } from \"@mml-io/mml-web\";\nimport { PromptGraphics } from \"@mml-io/mml-web\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasPrompt extends PromptGraphics {\n constructor(private prompt: Prompt) {\n super(prompt);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setMessage(): void {\n // no-op\n }\n\n setPlaceholder(): void {\n // no-op\n }\n\n setPrefill(): void {\n // no-op\n }\n\n setDebug(): void {\n // no-op\n }\n\n dispose() {}\n}\n", "import { RemoteDocument, RemoteDocumentGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\nimport { getPlayCanvasReconnectingStatus } from \"../PlayCanvasReconnectingStatus\";\n\nexport class PlayCanvasRemoteDocument extends RemoteDocumentGraphics {\n private statusUI: playcanvas.Entity | null = null;\n\n constructor(private element: RemoteDocument) {\n super(element);\n }\n\n public showError(showError: boolean): void {\n if (!showError) {\n if (this.statusUI !== null) {\n this.element.getContainer().removeChild(this.statusUI);\n this.statusUI = null;\n }\n } else {\n if (this.statusUI === null) {\n const playCanvasApp = this.element.getScene().getGraphicsAdapter().getPlayCanvasApp();\n this.statusUI = new playcanvas.Entity(\"label-internal\", playCanvasApp);\n this.statusUI.rotate(90, 0, 0);\n\n const { material, width, height } = getPlayCanvasReconnectingStatus(playCanvasApp);\n\n this.statusUI.addComponent(\"render\", {\n type: \"plane\",\n material,\n }) as playcanvas.RenderComponent;\n\n this.statusUI.setLocalScale(width, 1, height);\n\n this.statusUI.setPosition(0, height / 2, 0);\n this.element.getContainer().addChild(this.statusUI);\n }\n }\n }\n\n public dispose() {}\n}\n", "import { CanvasText } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nfunction createReconnectingStatus(playCanvasApp: playcanvas.AppBase): PlayCanvasReconnectingStatus {\n const canvas = new CanvasText().renderText(\"Reconnecting\", {\n bold: true,\n fontSize: 32,\n paddingPx: 10,\n textColorRGB255A1: {\n r: 255,\n g: 0,\n b: 0,\n a: 1.0,\n },\n backgroundColorRGB255A1: {\n r: 255,\n g: 255,\n b: 255,\n a: 1.0,\n },\n alignment: \"center\",\n });\n\n const texture = new playcanvas.Texture(playCanvasApp.graphicsDevice, {\n width: canvas.width,\n height: canvas.height,\n });\n texture.setSource(canvas);\n\n const material = new playcanvas.StandardMaterial();\n material.useLighting = false;\n material.emissiveMap = texture;\n material.update();\n\n texture.destroy();\n\n const width = canvas.width;\n const height = canvas.height;\n\n return { material, width: width / 100, height: height / 100 };\n}\n\nexport type PlayCanvasReconnectingStatus = {\n material: playcanvas.StandardMaterial;\n width: number;\n height: number;\n};\n\nlet reconnectingStatus: PlayCanvasReconnectingStatus | null = null;\n\nexport function getPlayCanvasReconnectingStatus(\n playCanvasApp: playcanvas.AppBase,\n): PlayCanvasReconnectingStatus {\n if (!reconnectingStatus) {\n reconnectingStatus = createReconnectingStatus(playCanvasApp);\n }\n return reconnectingStatus;\n}\n", "import { MELEMENT_PROPERTY_NAME, MSphereProps, Sphere } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport { SphereGraphics } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasSphere extends SphereGraphics {\n private entity: playcanvas.Entity;\n private renderComponent: playcanvas.RenderComponent;\n private material: playcanvas.StandardMaterial = new playcanvas.StandardMaterial();\n\n constructor(private sphere: Sphere) {\n super(sphere);\n\n /*\n The primitive must be in an internal entity to allow using setLocalScale\n without affecting children.\n */\n this.entity = new playcanvas.Entity(\n \"sphere-internal\",\n sphere.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n (this.entity as any)[MELEMENT_PROPERTY_NAME] = sphere;\n this.renderComponent = this.entity.addComponent(\"render\", {\n type: \"sphere\",\n material: this.material,\n }) as playcanvas.RenderComponent;\n this.entity.addComponent(\"collision\", {\n type: \"sphere\",\n });\n if (this.entity.collision) {\n this.entity.collision.radius = 1;\n }\n sphere.getContainer().addChild(this.entity);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): playcanvas.Entity {\n return this.entity;\n }\n\n setColor(color: MMLColor): void {\n this.material.diffuse.set(color.r, color.g, color.b);\n this.material.metalness = 0;\n this.material.useMetalness = true;\n this.material.update();\n }\n\n private updateSize(mSphereProps: MSphereProps): void {\n this.entity.setLocalScale(\n mSphereProps.radius * 2,\n mSphereProps.radius * 2,\n mSphereProps.radius * 2,\n );\n if (this.entity.collision) {\n this.entity.collision.radius = mSphereProps.radius;\n // @ts-expect-error - accessing onSetRadius private method\n this.entity.collision.onSetRadius();\n }\n }\n\n setRadius(radius: number, mSphereProps: MSphereProps): void {\n this.updateSize(mSphereProps);\n }\n\n setCastShadows(castShadows: boolean): void {\n this.renderComponent.castShadows = castShadows;\n }\n\n setOpacity(opacity: number): void {\n if (opacity === 1) {\n this.material.blendType = playcanvas.BLEND_NONE;\n } else {\n this.material.blendType = playcanvas.BLEND_NORMAL;\n }\n this.material.opacity = opacity;\n this.material.update();\n }\n\n dispose() {\n this.entity.destroy();\n }\n}\n", "import {\n Matr4,\n Model,\n TransformableElement,\n TransformableElementProps,\n TransformableGraphics,\n} from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\nimport { PlayCanvasModel } from \"./PlayCanvasModel\";\n\nconst halfToRad = 0.5 * playcanvas.math.DEG_TO_RAD;\n\n// An implementation of XYZ ordered Euler angles in degrees to quaternion\nfunction xyzDegreesToQuaternion(x: number, y: number, z: number): [number, number, number, number] {\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n const cx = Math.cos(x);\n const cy = Math.cos(y);\n const cz = Math.cos(z);\n\n const sx = Math.sin(x);\n const sy = Math.sin(y);\n const sz = Math.sin(z);\n\n return [\n sx * cy * cz + cx * sy * sz, // x\n cx * sy * cz - sx * cy * sz, // y\n cx * cy * sz + sx * sy * cz, // z\n cx * cy * cz - sx * sy * sz, // w\n ];\n}\n\nexport class PlayCanvasTransformable extends TransformableGraphics {\n private socketName: string | null = null;\n private registeredSocketParent: PlayCanvasModel | null = null;\n\n constructor(private transformableElement: TransformableElement) {\n super(transformableElement);\n }\n\n getWorldMatrix(): Matr4 {\n return new Matr4(this.getPlayCanvasEntity().getWorldTransform().data);\n }\n\n setSocket(socketName: string | null): void {\n if (this.socketName !== socketName) {\n if (this.socketName !== null && this.registeredSocketParent) {\n this.registeredSocketParent.unregisterSocketChild(\n this.transformableElement,\n this.socketName,\n );\n }\n this.socketName = socketName;\n if (socketName !== null) {\n this.registerWithParentModel(socketName);\n }\n } else {\n this.socketName = socketName;\n }\n }\n\n private registerWithParentModel(socketName: string): void {\n if (\n (this.transformableElement.parentElement as Model | undefined)\n ?.isModel\n ) {\n const parentModel = this.transformableElement\n .parentElement as Model;\n this.registeredSocketParent = parentModel.modelGraphics as PlayCanvasModel;\n this.registeredSocketParent.registerSocketChild(this.transformableElement, socketName);\n }\n }\n\n setVisible(visible: boolean): void {\n this.getPlayCanvasEntity().enabled = visible;\n }\n\n private updatePosition(x: number, y: number, z: number): void {\n this.getPlayCanvasEntity().setLocalPosition(x, y, z);\n }\n\n setX(x: number, transformableElementProps: TransformableElementProps): void {\n this.updatePosition(\n transformableElementProps.x,\n transformableElementProps.y,\n transformableElementProps.z,\n );\n }\n\n setY(y: number, transformableElementProps: TransformableElementProps): void {\n this.updatePosition(\n transformableElementProps.x,\n transformableElementProps.y,\n transformableElementProps.z,\n );\n }\n\n setZ(z: number, transformableElementProps: TransformableElementProps): void {\n this.updatePosition(\n transformableElementProps.x,\n transformableElementProps.y,\n transformableElementProps.z,\n );\n }\n\n private getPlayCanvasEntity(): playcanvas.Entity {\n return this.transformableElement.getContainer() as playcanvas.Entity;\n }\n\n private updateRotation(rx: number, ry: number, rz: number): void {\n this.getPlayCanvasEntity().setLocalRotation(...xyzDegreesToQuaternion(rx, ry, rz));\n }\n\n setRotationX(rotationX: number, transformableElementProps: TransformableElementProps): void {\n this.updateRotation(\n transformableElementProps.rx,\n transformableElementProps.ry,\n transformableElementProps.rz,\n );\n }\n\n setRotationY(rotationY: number, transformableElementProps: TransformableElementProps): void {\n this.updateRotation(\n transformableElementProps.rx,\n transformableElementProps.ry,\n transformableElementProps.rz,\n );\n }\n\n setRotationZ(rotationZ: number, transformableElementProps: TransformableElementProps): void {\n this.updateRotation(\n transformableElementProps.rx,\n transformableElementProps.ry,\n transformableElementProps.rz,\n );\n }\n\n private updateScale(sx: number, sy: number, sz: number): void {\n this.getPlayCanvasEntity().setLocalScale(sx, sy, sz);\n }\n\n setScaleX(scaleX: number, transformableElementProps: TransformableElementProps): void {\n this.updateScale(\n transformableElementProps.sx,\n transformableElementProps.sy,\n transformableElementProps.sz,\n );\n }\n\n setScaleY(scaleY: number, transformableElementProps: TransformableElementProps): void {\n this.updateScale(\n transformableElementProps.sx,\n transformableElementProps.sy,\n transformableElementProps.sz,\n );\n }\n\n setScaleZ(scaleZ: number, transformableElementProps: TransformableElementProps): void {\n this.updateScale(\n transformableElementProps.sx,\n transformableElementProps.sy,\n transformableElementProps.sz,\n );\n }\n\n dispose() {\n if (this.socketName && this.registeredSocketParent !== null) {\n this.registeredSocketParent.unregisterSocketChild(\n this.transformableElement,\n this.socketName,\n false,\n );\n }\n }\n}\n", "import {\n calculateContentSize,\n EventHandlerCollection,\n MELEMENT_PROPERTY_NAME,\n StaticFileVideoSource,\n Video,\n VideoGraphics,\n VideoSource,\n WHEPVideoSource,\n} from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { createPlaneModel } from \"../plane/plane\";\nimport { PlayCanvasGraphicsAdapter } from \"../PlayCanvasGraphicsAdapter\";\n\nconst audioRefDistance = 1;\nconst audioRolloffFactor = 1;\n\nexport class PlayCanvasVideo extends VideoGraphics {\n private videoSource: VideoSource | null = null;\n private videoMaterial: playcanvas.StandardMaterial = new playcanvas.StandardMaterial();\n private disabledVideoMaterial = new playcanvas.StandardMaterial();\n\n private entity: playcanvas.Entity;\n private modelComponent: playcanvas.ModelComponent;\n private meshInstance: playcanvas.MeshInstance;\n\n private loadedVideoState: {\n video: HTMLVideoElement;\n videoLoadEventCollection: EventHandlerCollection;\n videoTexture: playcanvas.Texture | null;\n audio: {\n gainNode: GainNode;\n audioNode: AudioNode;\n panner: PannerNode;\n } | null;\n } | null = null;\n private documentTimeTickListener: { remove: () => void };\n\n private eventCollection = new EventHandlerCollection();\n\n constructor(\n private video: Video,\n private updateMeshCallback: () => void,\n ) {\n super(video, updateMeshCallback);\n this.disabledVideoMaterial.diffuse = new playcanvas.Color(0, 0, 0);\n\n this.documentTimeTickListener = this.video.addDocumentTimeTickListener(() => {\n this.tick();\n });\n\n this.eventCollection.add(this.getAudioContext(), \"statechange\", () => {\n this.syncVideoTime();\n });\n\n /*\n The primitive must be in an internal entity to allow using setLocalScale\n without affecting children.\n */\n this.entity = new playcanvas.Entity(\n \"video-internal\",\n video.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n );\n (this.entity as any)[MELEMENT_PROPERTY_NAME] = video;\n\n const { model, meshInstance } = createPlaneModel(\n this.video.getScene().getGraphicsAdapter().getPlayCanvasApp(),\n this.disabledVideoMaterial,\n );\n this.modelComponent = this.entity.addComponent(\"model\", {}) as playcanvas.ModelComponent;\n this.modelComponent.model = model;\n this.meshInstance = meshInstance;\n\n this.entity.addComponent(\"collision\", {\n type: \"box\",\n halfExtents: new playcanvas.Vec3(0.5, 0, 0.5),\n });\n video.getContainer().addChild(this.entity);\n }\n\n private getPlayCanvasApp(): playcanvas.AppBase {\n return this.video.getScene().getGraphicsAdapter().getPlayCanvasApp();\n }\n\n getWidthAndHeight(): { width: number; height: number } {\n return {\n width: this.entity.getLocalScale().x,\n height: this.entity.getLocalScale().y,\n };\n }\n\n private getAudioContext(): AudioContext {\n const playcanvasApp = this.getPlayCanvasApp();\n const soundSystem = playcanvasApp.systems.sound;\n if (!soundSystem) {\n throw new Error(\"Playcanvas sound system not enabled\");\n }\n return soundSystem.context;\n }\n\n public syncVideoTime() {\n if (this.loadedVideoState) {\n const videoTag = this.loadedVideoState.video;\n if (videoTag.readyState === 0) {\n return;\n }\n\n const audioContext = this.getAudioContext();\n if (audioContext.state === \"running\") {\n videoTag.muted = false;\n }\n\n if (this.video.isDisabled()) {\n videoTag.muted = true;\n }\n\n if (this.videoSource) {\n this.videoSource.syncVideoSource(this.video.props);\n }\n }\n }\n\n public enable(): void {\n this.updateVideo();\n }\n\n public disable(): void {\n this.updateVideo();\n }\n\n public setSrc(): void {\n this.updateVideo();\n }\n\n public setWidth(): void {\n this.updateWidthAndHeight();\n }\n\n public setHeight(): void {\n this.updateWidthAndHeight();\n }\n\n public setEnabled(): void {\n this.updateVideo();\n }\n\n public setCastShadows(): void {\n this.updateVideo();\n }\n\n public setLoop(): void {\n this.updateVideo();\n }\n\n public setVolume(): void {\n if (this.loadedVideoState?.audio) {\n this.loadedVideoState.audio.gainNode.gain.value = this.video.props.volume;\n }\n }\n\n public setEmissive(): void {\n this.updateMaterialEmissiveIntensity();\n }\n\n public setStartTime(): void {\n this.updateVideo();\n }\n\n public setPauseTime(): void {\n this.updateVideo();\n }\n\n private updateVideo() {\n if (!this.video.isConnected) {\n return;\n }\n\n if (!this.video.props.enabled) {\n this.clearSource();\n return;\n }\n\n if (!this.video.props.src) {\n this.clearSource();\n } else {\n const contentAddress = this.video.contentSrcToContentAddress(this.video.props.src);\n if (this.videoSource === null || this.videoSource.getContentAddress() !== contentAddress) {\n this.clearSource();\n\n const video = document.createElement(\"video\");\n video.playsInline = true;\n // Muted allows autoplay immediately without the user needing to interact with the document\n // Video will be unmuted when the audiocontext is available\n video.muted = true;\n video.autoplay = true;\n video.crossOrigin = \"anonymous\";\n const videoLoadEventCollection = new EventHandlerCollection();\n this.loadedVideoState = {\n video,\n videoLoadEventCollection,\n videoTexture: null,\n audio: null,\n };\n video.loop = this.video.props.loop;\n\n const url = new URL(contentAddress);\n if (WHEPVideoSource.isWHEPURL(url)) {\n this.videoSource = new WHEPVideoSource(url, video);\n } else {\n this.videoSource = new StaticFileVideoSource(url, video, this.video.props, () => {\n return this.video.getDocumentTime();\n });\n }\n\n videoLoadEventCollection.add(video, \"loadeddata\", () => {\n if (!this.loadedVideoState || this.loadedVideoState.video !== video) {\n // Video was changed before it loaded\n return;\n }\n\n // Create a texture to hold the video frame data\n this.loadedVideoState.videoTexture = new playcanvas.Texture(\n this.getPlayCanvasApp().graphicsDevice,\n {\n format: playcanvas.PIXELFORMAT_R8_G8_B8,\n mipmaps: false,\n width: video.videoWidth,\n height: video.videoHeight,\n },\n );\n this.loadedVideoState.videoTexture.setSource(this.loadedVideoState.video);\n this.videoMaterial.diffuseMap = this.loadedVideoState.videoTexture;\n this.videoMaterial.update();\n this.meshInstance.material = this.videoMaterial;\n this.syncVideoTime();\n this.updateWidthAndHeight();\n this.updateMaterialEmissiveIntensity();\n\n // playcanvas doesn't support positional audio for video elements so use the audio context directly\n const audioContext = this.getAudioContext();\n\n const pos = this.entity.getPosition();\n // TODO - initial orientation\n const orientationX = 1.0;\n const orientationY = 0.0;\n const orientationZ = 0.0;\n\n const panner = new PannerNode(audioContext, {\n panningModel: \"HRTF\",\n distanceModel: \"inverse\",\n positionX: pos.x,\n positionY: pos.y,\n positionZ: pos.z,\n orientationX,\n orientationY,\n orientationZ,\n refDistance: audioRefDistance,\n rolloffFactor: audioRolloffFactor,\n });\n\n const gainNode = audioContext.createGain();\n gainNode.gain.value = this.video.props.volume;\n const stereoPanner = new StereoPannerNode(audioContext, { pan: 0 });\n const audioNode = audioContext.createMediaElementSource(video);\n audioNode\n .connect(gainNode)\n .connect(stereoPanner)\n .connect(panner)\n .connect(audioContext.destination);\n\n this.loadedVideoState.audio = { gainNode, audioNode, panner };\n });\n }\n }\n\n if (this.videoSource) {\n this.syncVideoTime();\n }\n }\n\n private tick() {\n const videoTexture = this.loadedVideoState?.videoTexture;\n if (videoTexture) {\n videoTexture.upload();\n }\n const audio = this.loadedVideoState?.audio;\n if (audio) {\n /// Update the position\n const pos = this.entity.getPosition();\n const rotation = this.entity.getEulerAngles();\n audio.panner.positionX.value = pos.x;\n audio.panner.positionY.value = pos.y;\n audio.panner.positionZ.value = pos.z;\n audio.panner.orientationX.value = Math.cos(rotation.y);\n audio.panner.orientationY.value = 0;\n audio.panner.orientationZ.value = Math.sin(rotation.y);\n }\n }\n\n private clearSource() {\n if (this.videoSource) {\n this.videoSource.dispose();\n this.videoSource = null;\n }\n if (this.loadedVideoState) {\n const tag = this.loadedVideoState.video;\n // There is an existing src - stop playing to allow changing it\n tag.pause();\n tag.src = \"\";\n tag.load();\n if (this.loadedVideoState.audio) {\n this.loadedVideoState.audio.audioNode.disconnect();\n this.loadedVideoState.audio = null;\n }\n if (this.loadedVideoState.videoTexture) {\n this.loadedVideoState.videoTexture.destroy();\n this.loadedVideoState.videoTexture = null;\n }\n this.loadedVideoState.videoLoadEventCollection.clear();\n this.loadedVideoState = null;\n this.meshInstance.material = this.disabledVideoMaterial;\n this.updateWidthAndHeight();\n }\n }\n\n private updateMaterialEmissiveIntensity() {\n if (this.loadedVideoState?.videoTexture && this.video.props.emissive) {\n this.videoMaterial.emissiveMap = this.loadedVideoState.videoTexture;\n this.videoMaterial.emissiveIntensity = this.video.props.emissive;\n } else {\n this.videoMaterial.emissiveMap = null;\n this.videoMaterial.emissiveIntensity = 0;\n }\n this.videoMaterial.update();\n }\n\n dispose() {\n this.clearSource();\n this.documentTimeTickListener.remove();\n this.eventCollection.clear();\n this.entity.destroy();\n }\n\n getCollisionElement(): playcanvas.Entity {\n return this.entity;\n }\n\n private updateWidthAndHeight() {\n const { width, height } = calculateContentSize({\n content: this.loadedVideoState\n ? {\n width: this.loadedVideoState.video.videoWidth,\n height: this.loadedVideoState.video.videoHeight,\n }\n : undefined,\n width: this.video.props.width,\n height: this.video.props.height,\n });\n\n this.entity.setLocalScale(width, height, 1);\n if (this.entity.collision) {\n this.entity.collision.halfExtents.set(width / 2, height / 2, 0);\n // @ts-expect-error - accessing onSetHalfExtents private method\n this.entity.collision.onSetHalfExtents();\n }\n\n this.updateMeshCallback();\n }\n}\n", "import { MMLGraphicsInterface } from \"@mml-io/mml-web\";\n\nimport * as PlayCanvasElements from \"./elements\";\nimport { PlayCanvasGraphicsAdapter } from \"./PlayCanvasGraphicsAdapter\";\n\nexport const PlayCanvasGraphicsInterface: MMLGraphicsInterface = {\n MElementGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasMElement(element),\n MMLDebugHelperGraphicsInterface: (debugHelper) =>\n new PlayCanvasElements.PlayCanvasDebugHelper(debugHelper),\n MMLAudioGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasAudio(element),\n MMLChatProbeGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasChatProbe(element),\n MMLCubeGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasCube(element),\n MMLCylinderGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasCylinder(element),\n MMLFrameGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasFrame(element),\n MMLImageGraphicsInterface: (element, updateMeshCallback: () => void) =>\n new PlayCanvasElements.PlayCanvasImage(element, updateMeshCallback),\n MMLInteractionGraphicsInterface: (element) =>\n new PlayCanvasElements.PlayCanvasInteraction(element),\n MMLLabelGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasLabel(element),\n MMLLightGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasLight(element),\n MMLLinkGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasLink(element),\n MMLModelGraphicsInterface: (element, updateMeshCallback: () => void) =>\n new PlayCanvasElements.PlayCanvasModel(element, updateMeshCallback),\n MMLPlaneGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasPlane(element),\n MMLPositionProbeGraphicsInterface: (element) =>\n new PlayCanvasElements.PlayCanvasPositionProbe(element),\n MMLPromptGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasPrompt(element),\n MMLSphereGraphicsInterface: (element) => new PlayCanvasElements.PlayCanvasSphere(element),\n MMLTransformableGraphicsInterface: (element) =>\n new PlayCanvasElements.PlayCanvasTransformable(element),\n MMLVideoGraphicsInterface: (element, updateMeshCallback: () => void) =>\n new PlayCanvasElements.PlayCanvasVideo(element, updateMeshCallback),\n RemoteDocumentGraphicsInterface: (element) =>\n new PlayCanvasElements.PlayCanvasRemoteDocument(element),\n};\n", "import { Interaction } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasGraphicsAdapter } from \"./PlayCanvasGraphicsAdapter\";\n\nexport class PlayCanvasInteractionAdapter {\n static interactionShouldShowDistance(\n interaction: Interaction,\n cameraEntity: playcanvas.Entity,\n cameraComponent: playcanvas.CameraComponent,\n app: playcanvas.AppBase,\n ): number | null {\n const worldPos = interaction.getContainer().getPosition();\n\n const cameraPos = cameraEntity.getPosition();\n const distance = cameraPos.distance(worldPos);\n if (distance > interaction.props.range) {\n return null;\n }\n\n if (interaction.props.inFocus) {\n if (!cameraComponent.frustum.containsPoint(worldPos)) {\n return null;\n }\n }\n\n if (interaction.props.lineOfSight) {\n const rigidbodySystem = app.systems.rigidbody;\n if (!rigidbodySystem) {\n console.warn(\"Rigidbody system not found. Line of sight check will not work.\");\n } else {\n const raycastResults = rigidbodySystem.raycastAll(cameraPos, worldPos);\n if (raycastResults.length > 0) {\n for (const result of raycastResults) {\n if (\n !PlayCanvasInteractionAdapter.hasAncestor(result.entity, interaction.getContainer())\n ) {\n return null;\n }\n }\n }\n }\n }\n\n return distance;\n }\n\n static hasAncestor(object: playcanvas.Entity, ancestor: playcanvas.Entity): boolean {\n let parent = object.parent;\n while (parent !== null) {\n if (parent === ancestor) {\n return true;\n }\n parent = parent.parent;\n }\n return false;\n }\n}\n", "import { EventHandlerCollection, IVect3, Matr4, Quat } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nconst up = { x: 0, y: 1, z: 0 };\nconst right = { x: 1, y: 0, z: 0 };\nconst quaternion = new Quat();\nconst qPitch = new Quat();\nconst qYaw = new Quat();\n\n// Creates a set of 5DOF flight controls that requires dragging the mouse to move the rotation and position of the camera\nexport class PlayCanvasDragFlyCameraControls {\n public readonly type = \"drag-fly\";\n\n private enabled = false;\n\n private camera: playcanvas.Entity;\n private domElement: HTMLElement;\n\n private speed: number;\n private yaw = 0;\n private pitch = 0;\n\n private forward = false;\n private backward = false;\n private left = false;\n private right = false;\n private up = false;\n private down = false;\n\n // Set to constrain the pitch of the camera\n private minPolarAngle = 0 * (Math.PI / 180);\n private maxPolarAngle = 180 * (Math.PI / 180);\n\n private invertedMouseY = false;\n\n private eventHandlerCollection: EventHandlerCollection = new EventHandlerCollection();\n private mouseDown = false;\n\n constructor(camera: playcanvas.Entity, domElement: HTMLElement, speed = 15.0) {\n this.camera = camera;\n this.domElement = domElement;\n this.domElement.style.userSelect = \"none\";\n this.speed = speed;\n }\n\n public fitContent(boundingBox: { min: IVect3; max: IVect3 }) {\n const center = {\n x: (boundingBox.min.x + boundingBox.max.x) / 2,\n y: (boundingBox.min.y + boundingBox.max.y) / 2,\n z: (boundingBox.min.z + boundingBox.max.z) / 2,\n };\n const size = {\n x: boundingBox.max.x - boundingBox.min.x,\n y: boundingBox.max.y - boundingBox.min.y,\n z: boundingBox.max.z - boundingBox.min.z,\n };\n const fov = this.camera?.camera?.fov || 1;\n const maximumDimension = Math.max(size.x, size.y, size.z);\n const distance = Math.abs(maximumDimension / 4 / Math.tan(fov / 2));\n const currentCameraRay = this.camera.forward.clone().normalize();\n currentCameraRay.mulScalar(-distance);\n this.camera.setLocalPosition(\n center.x + currentCameraRay.x,\n center.y + currentCameraRay.y,\n center.z + currentCameraRay.z,\n );\n this.setLookAt(center.x, center.y, center.z);\n }\n\n public enable() {\n if (this.enabled) {\n return;\n }\n this.enabled = true;\n this.eventHandlerCollection.add(document, \"keydown\", this.onKeyDown.bind(this));\n this.eventHandlerCollection.add(document, \"keyup\", this.onKeyUp.bind(this));\n this.eventHandlerCollection.add(window, \"blur\", this.onBlur.bind(this));\n this.eventHandlerCollection.add(document, \"mousemove\", this.onMouseMove.bind(this));\n this.eventHandlerCollection.add(this.domElement, \"mousedown\", this.onMouseDown.bind(this));\n this.eventHandlerCollection.add(document, \"mouseup\", this.onMouseUp.bind(this));\n this.eventHandlerCollection.add(document, \"wheel\", this.onMouseWheel.bind(this));\n }\n\n public disable() {\n if (!this.enabled) {\n return;\n }\n this.eventHandlerCollection.clear();\n this.enabled = false;\n }\n\n public setInvert(invert: boolean) {\n this.invertedMouseY = invert;\n }\n\n public dispose() {\n this.disable();\n }\n\n public setCameraPosition(x: number, y: number, z: number) {\n this.camera.setLocalPosition(x, y, z);\n }\n\n public setLookAt(x: number, y: number, z: number) {\n this.camera.lookAt(x, y, z);\n const { yaw, pitch } = getYawPitchFromQuaternion(this.camera.getRotation());\n this.yaw = yaw;\n this.pitch = pitch;\n this.updateCameraFromYawAndPitch();\n }\n\n public update(dt: number) {\n if (!this.mouseDown) {\n return;\n }\n\n this.camera.translateLocal(\n (Number(this.right) - Number(this.left)) * dt * 30,\n (Number(this.up) - Number(this.down)) * dt * 30,\n (Number(this.backward) - Number(this.forward)) * dt * 30,\n );\n }\n\n private onKeyDown(event: KeyboardEvent) {\n if (!this.mouseDown) {\n return;\n }\n switch (event.code) {\n case \"ArrowUp\":\n case \"KeyW\":\n this.forward = true;\n break;\n case \"ArrowLeft\":\n case \"KeyA\":\n this.left = true;\n break;\n case \"ArrowDown\":\n case \"KeyS\":\n this.backward = true;\n break;\n case \"ArrowRight\":\n case \"KeyD\":\n this.right = true;\n break;\n case \"Space\":\n this.up = true;\n break;\n case \"ShiftLeft\":\n this.down = true;\n break;\n }\n event.preventDefault();\n }\n\n private onKeyUp(event: KeyboardEvent) {\n switch (event.code) {\n case \"ArrowUp\":\n case \"KeyW\":\n this.forward = false;\n break;\n case \"ArrowLeft\":\n case \"KeyA\":\n this.left = false;\n break;\n case \"ArrowDown\":\n case \"KeyS\":\n this.backward = false;\n break;\n case \"ArrowRight\":\n case \"KeyD\":\n this.right = false;\n break;\n case \"Space\":\n this.up = false;\n break;\n case \"ShiftLeft\":\n this.down = false;\n break;\n }\n }\n\n private onBlur() {\n this.mouseDown = false;\n this.forward = false;\n this.left = false;\n this.backward = false;\n this.right = false;\n this.up = false;\n this.down = false;\n }\n\n private onMouseDown() {\n this.mouseDown = true;\n }\n\n private onMouseMove(event: MouseEvent) {\n if (!this.mouseDown) {\n return;\n }\n const movementX = event.movementX;\n let movementY = event.movementY;\n\n if (this.invertedMouseY) {\n movementY *= -1;\n }\n\n this.yaw += movementX * -0.002;\n this.pitch += movementY * -0.002;\n this.updateCameraFromYawAndPitch();\n }\n\n private updateCameraFromYawAndPitch() {\n this.yaw = this.yaw % (Math.PI * 2);\n this.pitch = this.pitch % (Math.PI * 2);\n this.pitch = Math.max(\n Math.PI / 2 - this.maxPolarAngle,\n Math.min(Math.PI / 2 - this.minPolarAngle, this.pitch),\n );\n\n qPitch.setFromAxisAngle(right, this.pitch);\n qYaw.setFromAxisAngle(up, this.yaw);\n\n quaternion.set(0, 0, 0, 1);\n quaternion.multiply(qYaw);\n quaternion.multiply(qPitch);\n\n this.camera.setLocalRotation(quaternion.x, quaternion.y, quaternion.z, quaternion.w);\n }\n\n private onMouseUp() {\n this.mouseDown = false;\n }\n\n private onMouseWheel(event: WheelEvent) {\n if (!this.mouseDown) {\n return;\n }\n this.speed -= event.deltaY * 0.1;\n\n // restrict to a reasonable min and max\n this.speed = Math.max(5, Math.min(this.speed, 1000));\n }\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction getYawPitchFromQuaternion(quaternion: { x: number; y: number; z: number; w: number }) {\n const matr4 = new Matr4();\n matr4.setRotationFromQuaternion(quaternion);\n\n const d = matr4.data;\n const m11 = d[0];\n const m13 = d[8];\n const m23 = d[9];\n const m31 = d[2];\n const m33 = d[10];\n\n const yaw = Math.abs(m23) < 0.9999999 ? Math.atan2(m13, m33) : Math.atan2(-m31, m11);\n const pitch = Math.asin(-clamp(m23, -1, 1));\n return { yaw, pitch };\n}\n", "import { EventHandlerCollection, IVect3, Vect3 } from \"@mml-io/mml-web\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasControls } from \"./PlayCanvasControls\";\n\nexport class PlayCanvasOrbitCameraControls implements PlayCanvasControls {\n public readonly type = \"orbit\";\n\n private enabled = false;\n\n private degreesPerSecond = 10;\n private yaw = 0;\n private pitch = Math.PI * 0.4;\n\n // Set to constrain the pitch of the camera\n private minPolarAngle = -89.9999 * (Math.PI / 180);\n private maxPolarAngle = 89.9999 * (Math.PI / 180);\n\n private invertedMouseY = false;\n\n private eventHandlerCollection: EventHandlerCollection = new EventHandlerCollection();\n private mouseDown = false;\n private cameraLookAt: Vect3 = new Vect3();\n\n constructor(\n private camera: playcanvas.Entity,\n private domElement: HTMLElement,\n private distance = 15.0,\n ) {\n this.domElement.style.userSelect = \"none\";\n }\n\n public fitContent(boundingBox: { min: IVect3; max: IVect3 }) {\n const center = {\n x: (boundingBox.min.x + boundingBox.max.x) / 2,\n y: (boundingBox.min.y + boundingBox.max.y) / 2,\n z: (boundingBox.min.z + boundingBox.max.z) / 2,\n };\n const size = {\n x: boundingBox.max.x - boundingBox.min.x,\n y: boundingBox.max.y - boundingBox.min.y,\n z: boundingBox.max.z - boundingBox.min.z,\n };\n const fov = this.camera?.camera?.fov || 1;\n const maximumDimension = Math.max(size.x, size.y, size.z);\n this.distance = Math.abs(maximumDimension / 4 / Math.tan(fov / 2));\n this.setLookAt(center.x, center.y, center.z);\n this.update();\n }\n\n public enable() {\n if (this.enabled) {\n return;\n }\n this.enabled = true;\n this.eventHandlerCollection.add(window, \"blur\", this.onBlur.bind(this));\n this.eventHandlerCollection.add(document, \"mousemove\", this.onMouseMove.bind(this));\n this.eventHandlerCollection.add(this.domElement, \"mousedown\", this.onMouseDown.bind(this));\n this.eventHandlerCollection.add(document, \"mouseup\", this.onMouseUp.bind(this));\n this.eventHandlerCollection.add(document, \"wheel\", this.onMouseWheel.bind(this));\n }\n\n public disable() {\n if (!this.enabled) {\n return;\n }\n this.eventHandlerCollection.clear();\n this.enabled = false;\n }\n\n public setInvert(invert: boolean) {\n this.invertedMouseY = invert;\n }\n\n public dispose() {\n this.disable();\n }\n\n private getBaseYaw(): number {\n return (-((Date.now() / 1000) * this.degreesPerSecond) % 360) * (Math.PI / 180);\n }\n\n public update() {\n const baseYaw = this.getBaseYaw();\n const yaw = baseYaw + this.yaw;\n const sinPhiRadius = Math.sin(this.pitch) * this.distance;\n const x = sinPhiRadius * Math.sin(yaw);\n const y = Math.cos(this.pitch) * this.distance;\n const z = sinPhiRadius * Math.cos(yaw);\n\n this.camera.setPosition(x, y, z);\n this.camera.translate(this.cameraLookAt.x, this.cameraLookAt.y, this.cameraLookAt.z);\n\n this.camera.lookAt(this.cameraLookAt.x, this.cameraLookAt.y, this.cameraLookAt.z);\n }\n\n private onBlur() {\n this.mouseDown = false;\n }\n\n private onMouseDown() {\n this.mouseDown = true;\n }\n\n public setDegreesPerSecond(degreesPerSecond: number) {\n this.degreesPerSecond = degreesPerSecond;\n }\n\n public setLookAt(x: number, y: number, z: number) {\n this.cameraLookAt.set(x, y, z);\n }\n\n public setDistance(distance: number) {\n this.distance = distance;\n }\n\n public setPitchDegrees(pitch: number) {\n this.pitch = pitch * (Math.PI / 180);\n this.pitch = this.pitch % (Math.PI * 2);\n }\n\n private onMouseMove(event: MouseEvent) {\n if (!this.mouseDown) {\n return;\n }\n const movementX = event.movementX;\n let movementY = event.movementY;\n\n if (this.invertedMouseY) {\n movementY *= -1;\n }\n\n this.yaw += movementX * -0.002;\n this.pitch += movementY * -0.002;\n this.yaw = this.yaw % (Math.PI * 2);\n this.pitch = this.pitch % (Math.PI * 2);\n this.pitch = Math.max(\n Math.PI / 2 - this.maxPolarAngle,\n Math.min(Math.PI / 2 - this.minPolarAngle, this.pitch),\n );\n }\n private onMouseUp() {\n this.mouseDown = false;\n }\n\n private onMouseWheel(event: WheelEvent) {\n this.distance += event.deltaY * 0.1;\n this.distance = Math.max(0.01, Math.min(this.distance, 1000));\n }\n}\n", "import {\n Interaction,\n Matr4,\n MMLGraphicsInterface,\n TransformableElement,\n Vect3,\n} from \"@mml-io/mml-web\";\nimport {\n PlayCanvasClickTrigger,\n PlayCanvasGraphicsAdapter,\n PlayCanvasGraphicsInterface,\n PlayCanvasInteractionAdapter,\n} from \"@mml-io/mml-web-playcanvas\";\nimport ammoWasmJs from \"base64:./wasm/ammo.wasm.js\";\nimport ammoWasmWasm from \"base64:./wasm/ammo.wasm.wasm\";\nimport dracoWasmJs from \"base64:./wasm/draco.wasm.js\";\nimport dracoWasmWasm from \"base64:./wasm/draco.wasm.wasm\";\nimport glslangWasmJs from \"base64:./wasm/glslang.js\";\nimport twgslWasmJs from \"base64:./wasm/twgsl.js\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { PlayCanvasOrbitCameraControls } from \"./controls\";\nimport { PlayCanvasControls } from \"./controls/PlayCanvasControls\";\nimport { PlayCanvasDragFlyCameraControls } from \"./controls/PlayCanvasDragFlyCameraControls\";\n\nexport enum StandalonePlayCanvasAdapterControlsType {\n None,\n DragFly,\n Orbit,\n}\n\nexport type StandalonePlayCanvasAdapterOptions = {\n controlsType?: StandalonePlayCanvasAdapterControlsType;\n};\n\nexport class StandalonePlayCanvasAdapter implements PlayCanvasGraphicsAdapter {\n containerType: playcanvas.Entity;\n collisionType: playcanvas.Entity;\n\n private playcanvasApp: playcanvas.AppBase;\n\n public controls: PlayCanvasControls | null = null;\n private camera: playcanvas.Entity;\n private canvas: HTMLCanvasElement | null = null;\n\n private clickTrigger: PlayCanvasClickTrigger;\n\n private constructor(\n private element: HTMLElement,\n private options: StandalonePlayCanvasAdapterOptions,\n ) {}\n\n getPlayCanvasApp(): playcanvas.AppBase {\n return this.playcanvasApp;\n }\n\n getCamera(): playcanvas.Entity {\n return this.camera;\n }\n\n public getGraphicsAdapterFactory(): MMLGraphicsInterface {\n return PlayCanvasGraphicsInterface as MMLGraphicsInterface;\n }\n\n public static async create(\n element: HTMLElement,\n options: StandalonePlayCanvasAdapterOptions,\n ): Promise {\n const adapter = new StandalonePlayCanvasAdapter(element, options);\n await adapter.init();\n return adapter;\n }\n\n public interactionShouldShowDistance(interaction: Interaction): number | null {\n const cameraComponent = this.camera.camera;\n if (!cameraComponent) {\n console.error(\"Camera component not found\");\n return null;\n }\n return PlayCanvasInteractionAdapter.interactionShouldShowDistance(\n interaction,\n this.camera,\n cameraComponent,\n this.playcanvasApp,\n );\n }\n\n async init() {\n playcanvas.WasmModule.setConfig(\"Ammo\", {\n glueUrl: \"data:text/javascript;base64,\" + ammoWasmJs,\n wasmUrl: \"data:application/octet-stream;base64,\" + ammoWasmWasm,\n });\n await new Promise((resolve) => {\n playcanvas.WasmModule.getInstance(\"Ammo\", () => resolve());\n });\n\n playcanvas.WasmModule.setConfig(\"DracoDecoderModule\", {\n glueUrl: \"data:text/javascript;base64,\" + dracoWasmJs,\n wasmUrl: \"data:application/wasm;base64,\" + dracoWasmWasm,\n });\n\n this.canvas = document.createElement(\"canvas\");\n this.canvas.style.pointerEvents = \"none\";\n this.element.appendChild(this.canvas);\n\n this.playcanvasApp = new playcanvas.AppBase(this.canvas);\n\n const gfxOptions = {\n deviceTypes: [\"webgpu\", \"webgl2\"],\n glslangUrl: \"data:text/javascript;base64,\" + glslangWasmJs,\n twgslUrl: \"data:text/javascript;base64,\" + twgslWasmJs,\n };\n\n const soundManager = new playcanvas.SoundManager();\n const device = await playcanvas.createGraphicsDevice(this.canvas, gfxOptions);\n device.maxPixelRatio = window.devicePixelRatio;\n const createOptions = new playcanvas.AppOptions();\n createOptions.soundManager = soundManager;\n createOptions.graphicsDevice = device;\n createOptions.componentSystems = [\n playcanvas.RenderComponentSystem,\n playcanvas.CollisionComponentSystem,\n playcanvas.RigidBodyComponentSystem,\n playcanvas.CameraComponentSystem,\n playcanvas.LightComponentSystem,\n playcanvas.ModelComponentSystem,\n playcanvas.AnimComponentSystem,\n playcanvas.SoundComponentSystem,\n playcanvas.AudioListenerComponentSystem,\n ];\n createOptions.resourceHandlers = [\n playcanvas.AudioHandler,\n playcanvas.TextureHandler,\n playcanvas.ContainerHandler,\n playcanvas.ModelHandler,\n playcanvas.AnimationHandler,\n ];\n this.playcanvasApp.init(createOptions);\n this.playcanvasApp.scene.physicalUnits = true;\n this.playcanvasApp.setCanvasFillMode(playcanvas.FILLMODE_NONE);\n this.playcanvasApp.setCanvasResolution(playcanvas.RESOLUTION_FIXED);\n\n // Set the canvas size to non-zero to avoid errors on startup\n device.resizeCanvas(128, 128);\n\n this.camera = new playcanvas.Entity(\"camera\", this.playcanvasApp);\n this.camera.addComponent(\"audiolistener\");\n this.camera.addComponent(\"camera\", {\n fov: 75,\n clearColor: new playcanvas.Color(1, 1, 1, 1),\n } as playcanvas.CameraComponent);\n this.camera.setPosition(0, 5, 10);\n this.playcanvasApp.root.addChild(this.camera);\n\n this.setControlsType(this.options.controlsType);\n\n this.clickTrigger = PlayCanvasClickTrigger.init(this.playcanvasApp, this.element, this.camera);\n\n this.playcanvasApp.on(\"update\", (delta) => {\n if (this.controls) {\n this.controls.update(delta);\n }\n });\n\n this.playcanvasApp.start();\n }\n\n public setControlsType(type?: StandalonePlayCanvasAdapterControlsType) {\n if (this.controls) {\n this.controls.dispose();\n this.controls = null;\n }\n switch (type) {\n case StandalonePlayCanvasAdapterControlsType.None:\n break;\n case StandalonePlayCanvasAdapterControlsType.Orbit:\n this.controls = new PlayCanvasOrbitCameraControls(this.camera, this.element);\n break;\n case StandalonePlayCanvasAdapterControlsType.DragFly:\n default:\n this.controls = new PlayCanvasDragFlyCameraControls(this.camera, this.element);\n break;\n }\n if (this.controls) {\n this.controls.enable();\n }\n }\n\n public setCameraFOV(fov: number) {\n const cameraComponent = this.camera.camera;\n if (!cameraComponent) {\n console.error(\"Camera component not found\");\n return null;\n }\n cameraComponent.fov = fov;\n }\n\n start() {}\n\n getUserPositionAndRotation() {\n const position = this.camera.getPosition();\n const rotation = this.camera.getEulerAngles();\n return {\n position: {\n x: position.x,\n y: position.y,\n z: position.z,\n },\n rotation: {\n x: rotation.x,\n y: rotation.y,\n z: rotation.z,\n },\n };\n }\n\n resize(width: number, height: number) {\n this.playcanvasApp.resizeCanvas(width, height);\n this.playcanvasApp.graphicsDevice.resizeCanvas(width, height);\n }\n\n dispose() {\n this.playcanvasApp.destroy();\n if (this.canvas) {\n this.canvas.remove();\n this.canvas = null;\n }\n if (this.controls) {\n this.controls.dispose();\n }\n this.clickTrigger.dispose();\n }\n\n getRootContainer() {\n return this.playcanvasApp.root;\n }\n\n public getBoundingBoxForElement(element: HTMLElement): {\n x: number;\n y: number;\n width: number;\n height: number;\n } | null {\n if (!(element instanceof TransformableElement)) {\n return null;\n }\n\n const bounds = element.getContentBounds();\n if (!bounds) {\n return null;\n }\n\n const camera = this.camera;\n const cameraComponent = camera.camera;\n if (!cameraComponent) {\n throw new Error(\"Camera component not found\");\n }\n\n const renderer = this.playcanvasApp.graphicsDevice;\n const clientWidth = renderer.canvas.clientWidth;\n const clientHeight = renderer.canvas.clientHeight;\n\n // Custom function to convert 3D Vector3 to 2D canvas coordinates\n const toCanvasCoords = (point: Vect3) => {\n const vec = point\n .clone()\n .applyMatrix4(new Matr4(camera.getWorldTransform().clone().invert().data))\n .applyMatrix4(new Matr4(cameraComponent.projectionMatrix.data));\n vec.x = ((vec.x + 1) / 2) * clientWidth;\n vec.y = ((1 - vec.y) / 2) * clientHeight;\n return vec;\n };\n\n // Project the 3D bounding box corners into 2D canvas coordinates\n const corners3D = bounds.getCorners();\n const corners2D = corners3D.map(toCanvasCoords);\n\n // Calculate the 2D bounding box from the projected canvas coordinates\n const minX = Math.min(...corners2D.map((corner) => corner.x));\n const maxX = Math.max(...corners2D.map((corner) => corner.x));\n const minY = Math.min(...corners2D.map((corner) => corner.y));\n const maxY = Math.max(...corners2D.map((corner) => corner.y));\n\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\n", "Ly8gVGhpcyBpcyBhbW1vLmpzLCBhIHBvcnQgb2YgQnVsbGV0IFBoeXNpY3MgdG8gSmF2YVNjcmlwdC4gemxpYiBsaWNlbnNlZC4KCnZhciBBbW1vID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIF9zY3JpcHREaXIgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgPyBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyA6IHVuZGVmaW5lZDsKICAgIGlmICh0eXBlb2YgX19maWxlbmFtZSAhPT0gJ3VuZGVmaW5lZCcpCiAgICAgIF9zY3JpcHREaXIgPSBfc2NyaXB0RGlyIHx8IF9fZmlsZW5hbWU7CiAgICByZXR1cm4gKGZ1bmN0aW9uKEFtbW8pIHsKICAgICAgICBBbW1vID0gQW1tbyB8fCB7fTsKCiAgICAgICAgdmFyIGI7CiAgICAgICAgYiB8fCAoYiA9IHR5cGVvZiBBbW1vICE9PSAndW5kZWZpbmVkJyA/IEFtbW8gOiB7fSk7CiAgICAgICAgdmFyIGFhID0ge30sIGJhOwogICAgICAgIGZvciAoYmEgaW4gYikKICAgICAgICAgIGIuaGFzT3duUHJvcGVydHkoYmEpICYmIChhYVtiYV0gPSBiW2JhXSk7CiAgICAgICAgdmFyIGNhID0gITEKICAgICAgICAgICwgZGEgPSAhMQogICAgICAgICAgLCBlYSA9ICExCiAgICAgICAgICAsIGZhID0gITE7CiAgICAgICAgY2EgPSAib2JqZWN0IiA9PT0gdHlwZW9mIHdpbmRvdzsKICAgICAgICBkYSA9ICJmdW5jdGlvbiIgPT09IHR5cGVvZiBpbXBvcnRTY3JpcHRzOwogICAgICAgIGVhID0gIm9iamVjdCIgPT09IHR5cGVvZiBwcm9jZXNzICYmICJvYmplY3QiID09PSB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyAmJiAic3RyaW5nIiA9PT0gdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZTsKICAgICAgICBmYSA9ICFjYSAmJiAhZWEgJiYgIWRhOwogICAgICAgIHZhciBoYSA9ICIiLCBqYSwga2EsIGxhLCBtYTsKICAgICAgICBpZiAoZWEpCiAgICAgICAgICBoYSA9IGRhID8gcmVxdWlyZSgicGF0aCIpLmRpcm5hbWUoaGEpICsgIi8iIDogX19kaXJuYW1lICsgIi8iLAogICAgICAgICAgICBqYSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgICBsYSB8fCAobGEgPSByZXF1aXJlKCJmcyIpKTsKICAgICAgICAgICAgICBtYSB8fCAobWEgPSByZXF1aXJlKCJwYXRoIikpOwogICAgICAgICAgICAgIGEgPSBtYS5ub3JtYWxpemUoYSk7CiAgICAgICAgICAgICAgcmV0dXJuIGxhLnJlYWRGaWxlU3luYyhhLCBjID8gbnVsbCA6ICJ1dGY4IikKICAgICAgICAgICAgfQogICAgICAgICAgICAsCiAgICAgICAgICAgIGthID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgIGEgPSBqYShhLCAhMCk7CiAgICAgICAgICAgICAgYS5idWZmZXIgfHwgKGEgPSBuZXcgVWludDhBcnJheShhKSk7CiAgICAgICAgICAgICAgYXNzZXJ0KGEuYnVmZmVyKTsKICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICB9CiAgICAgICAgICAgICwKICAgICAgICAgIDEgPCBwcm9jZXNzLmFyZ3YubGVuZ3RoICYmIHByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCAiLyIpLAogICAgICAgICAgICBwcm9jZXNzLmFyZ3Yuc2xpY2UoMiksCiAgICAgICAgICAgIHByb2Nlc3Mub24oInVuY2F1Z2h0RXhjZXB0aW9uIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgIHRocm93IGE7CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBwcm9jZXNzLm9uKCJ1bmhhbmRsZWRSZWplY3Rpb24iLCBuYSksCiAgICAgICAgICAgIGIuaW5zcGVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHJldHVybiAiW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF0iCiAgICAgICAgICAgIH0KICAgICAgICAgIDsKICAgICAgICBlbHNlIGlmIChmYSkKICAgICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiByZWFkICYmIChqYSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICByZXR1cm4gcmVhZChhKQogICAgICAgICAgICB9CiAgICAgICAgICApLAogICAgICAgICAgICBrYSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PT0gdHlwZW9mIHJlYWRidWZmZXIpCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVhZGJ1ZmZlcihhKSk7CiAgICAgICAgICAgICAgYSA9IHJlYWQoYSwgImJpbmFyeSIpOwogICAgICAgICAgICAgIGFzc2VydCgib2JqZWN0IiA9PT0gdHlwZW9mIGEpOwogICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgInVuZGVmaW5lZCIgIT09IHR5cGVvZiBwcmludCAmJiAoInVuZGVmaW5lZCIgPT09IHR5cGVvZiBjb25zb2xlICYmIChjb25zb2xlID0ge30pLAogICAgICAgICAgICBjb25zb2xlLmxvZyA9IHByaW50LAogICAgICAgICAgICBjb25zb2xlLndhcm4gPSBjb25zb2xlLmVycm9yID0gInVuZGVmaW5lZCIgIT09IHR5cGVvZiBwcmludEVyciA/IHByaW50RXJyIDogcHJpbnQpOwogICAgICAgIGVsc2UgaWYgKGNhIHx8IGRhKQogICAgICAgICAgZGEgPyBoYSA9IHNlbGYubG9jYXRpb24uaHJlZiA6IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgJiYgKGhhID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLAogICAgICAgICAgX3NjcmlwdERpciAmJiAoaGEgPSBfc2NyaXB0RGlyKSwKICAgICAgICAgICAgaGEgPSAwICE9PSBoYS5pbmRleE9mKCJibG9iOiIpID8gaGEuc3Vic3RyKDAsIGhhLmxhc3RJbmRleE9mKCIvIikgKyAxKSA6ICIiLAogICAgICAgICAgICBqYSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICB2YXIgYyA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKICAgICAgICAgICAgICBjLm9wZW4oIkdFVCIsIGEsICExKTsKICAgICAgICAgICAgICBjLnNlbmQobnVsbCk7CiAgICAgICAgICAgICAgcmV0dXJuIGMucmVzcG9uc2VUZXh0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLAogICAgICAgICAgZGEgJiYgKGthID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgIHZhciBjID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogICAgICAgICAgICAgIGMub3BlbigiR0VUIiwgYSwgITEpOwogICAgICAgICAgICAgIGMucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKICAgICAgICAgICAgICBjLnNlbmQobnVsbCk7CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGMucmVzcG9uc2UpCiAgICAgICAgICAgIH0KICAgICAgICAgICk7CiAgICAgICAgdmFyIG9hID0gYi5wcmludCB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpCiAgICAgICAgICAsIHBhID0gYi5wcmludEVyciB8fCBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTsKICAgICAgICBmb3IgKGJhIGluIGFhKQogICAgICAgICAgYWEuaGFzT3duUHJvcGVydHkoYmEpICYmIChiW2JhXSA9IGFhW2JhXSk7CiAgICAgICAgYWEgPSBudWxsOwogICAgICAgIHZhciBxYSA9IFtdLCByYSwgc2E7CiAgICAgICAgYi53YXNtQmluYXJ5ICYmIChzYSA9IGIud2FzbUJpbmFyeSk7CiAgICAgICAgdmFyIG5vRXhpdFJ1bnRpbWU7CiAgICAgICAgYi5ub0V4aXRSdW50aW1lICYmIChub0V4aXRSdW50aW1lID0gYi5ub0V4aXRSdW50aW1lKTsKICAgICAgICAib2JqZWN0IiAhPT0gdHlwZW9mIFdlYkFzc2VtYmx5ICYmIHBhKCJubyBuYXRpdmUgd2FzbSBzdXBwb3J0IGRldGVjdGVkIik7CiAgICAgICAgdmFyIHRhLCB1YSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7CiAgICAgICAgICBpbml0aWFsOiA5MzUsCiAgICAgICAgICBtYXhpbXVtOiA5NTUsCiAgICAgICAgICBlbGVtZW50OiAiYW55ZnVuYyIKICAgICAgICB9KSwgdmEgPSAhMTsKICAgICAgICBmdW5jdGlvbiBhc3NlcnQoYSwgYykgewogICAgICAgICAgYSB8fCBuYSgiQXNzZXJ0aW9uIGZhaWxlZDogIiArIGMpCiAgICAgICAgfQogICAgICAgIHZhciB3YSA9ICJ1bmRlZmluZWQiICE9PSB0eXBlb2YgVGV4dERlY29kZXIgPyBuZXcgVGV4dERlY29kZXIoInV0ZjgiKSA6IHZvaWQgMDsKICAgICAgICBmdW5jdGlvbiB4YShhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IGMgKyBkOwogICAgICAgICAgZm9yIChkID0gYzsgYVtkXSAmJiAhKGQgPj0gZSk7ICkKICAgICAgICAgICAgKytkOwogICAgICAgICAgaWYgKDE2IDwgZCAtIGMgJiYgYS5zdWJhcnJheSAmJiB3YSkKICAgICAgICAgICAgcmV0dXJuIHdhLmRlY29kZShhLnN1YmFycmF5KGMsIGQpKTsKICAgICAgICAgIGZvciAoZSA9ICIiOyBjIDwgZDsgKSB7CiAgICAgICAgICAgIHZhciBmID0gYVtjKytdOwogICAgICAgICAgICBpZiAoZiAmIDEyOCkgewogICAgICAgICAgICAgIHZhciBtID0gYVtjKytdICYgNjM7CiAgICAgICAgICAgICAgaWYgKDE5MiA9PSAoZiAmIDIyNCkpCiAgICAgICAgICAgICAgICBlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGYgJiAzMSkgPDwgNiB8IG0pOwogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIEMgPSBhW2MrK10gJiA2MzsKICAgICAgICAgICAgICAgIGYgPSAyMjQgPT0gKGYgJiAyNDApID8gKGYgJiAxNSkgPDwgMTIgfCBtIDw8IDYgfCBDIDogKGYgJiA3KSA8PCAxOCB8IG0gPDwgMTIgfCBDIDw8IDYgfCBhW2MrK10gJiA2MzsKICAgICAgICAgICAgICAgIDY1NTM2ID4gZiA/IGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShmKSA6IChmIC09IDY1NTM2LAogICAgICAgICAgICAgICAgICBlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYgfCBmID4+IDEwLCA1NjMyMCB8IGYgJiAxMDIzKSkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgIGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShmKQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9CiAgICAgICAgInVuZGVmaW5lZCIgIT09IHR5cGVvZiBUZXh0RGVjb2RlciAmJiBuZXcgVGV4dERlY29kZXIoInV0Zi0xNmxlIik7CiAgICAgICAgdmFyIHlhLCB6YSwgQWEsIEJhLCBDYSwgRGEsIEVhID0gYi5JTklUSUFMX01FTU9SWSB8fCA2NzEwODg2NDsKICAgICAgICBpZiAodGEgPSBiLndhc21NZW1vcnkgPyBiLndhc21NZW1vcnkgOiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsKICAgICAgICAgIGluaXRpYWw6IEVhIC8gNjU1MzYsCiAgICAgICAgICBtYXhpbXVtOiBFYSAvIDY1NTM2CiAgICAgICAgfSkpCiAgICAgICAgICB5YSA9IHRhLmJ1ZmZlcjsKICAgICAgICBFYSA9IHlhLmJ5dGVMZW5ndGg7CiAgICAgICAgdmFyIEZhID0geWE7CiAgICAgICAgeWEgPSBGYTsKICAgICAgICBiLkhFQVA4ID0gemEgPSBuZXcgSW50OEFycmF5KEZhKTsKICAgICAgICBiLkhFQVAxNiA9IG5ldyBJbnQxNkFycmF5KEZhKTsKICAgICAgICBiLkhFQVAzMiA9IEJhID0gbmV3IEludDMyQXJyYXkoRmEpOwogICAgICAgIGIuSEVBUFU4ID0gQWEgPSBuZXcgVWludDhBcnJheShGYSk7CiAgICAgICAgYi5IRUFQVTE2ID0gbmV3IFVpbnQxNkFycmF5KEZhKTsKICAgICAgICBiLkhFQVBVMzIgPSBuZXcgVWludDMyQXJyYXkoRmEpOwogICAgICAgIGIuSEVBUEYzMiA9IENhID0gbmV3IEZsb2F0MzJBcnJheShGYSk7CiAgICAgICAgYi5IRUFQRjY0ID0gRGEgPSBuZXcgRmxvYXQ2NEFycmF5KEZhKTsKICAgICAgICBCYVs4MDgwXSA9IDUyNzUzNjA7CiAgICAgICAgZnVuY3Rpb24gR2EoYSkgewogICAgICAgICAgZm9yICg7IDAgPCBhLmxlbmd0aDsgKSB7CiAgICAgICAgICAgIHZhciBjID0gYS5zaGlmdCgpOwogICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYykKICAgICAgICAgICAgICBjKGIpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB2YXIgZCA9IGMuS3k7CiAgICAgICAgICAgICAgIm51bWJlciIgPT09IHR5cGVvZiBkID8gdm9pZCAwID09PSBjLnZ5ID8gYi5keW5DYWxsX3YoZCkgOiBiLmR5bkNhbGxfdmkoZCwgYy52eSkgOiBkKHZvaWQgMCA9PT0gYy52eSA/IG51bGwgOiBjLnZ5KQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBIYSA9IFtdCiAgICAgICAgICAsIElhID0gW10KICAgICAgICAgICwgSmEgPSBbXQogICAgICAgICAgLCBLYSA9IFtdCiAgICAgICAgICAsIExhID0gITE7CiAgICAgICAgZnVuY3Rpb24gTWEoKSB7CiAgICAgICAgICB2YXIgYSA9IGIucHJlUnVuLnNoaWZ0KCk7CiAgICAgICAgICBIYS51bnNoaWZ0KGEpCiAgICAgICAgfQogICAgICAgIHZhciBOYSA9IDAKICAgICAgICAgICwgT2EgPSBudWxsCiAgICAgICAgICAsIFBhID0gbnVsbDsKICAgICAgICBiLnByZWxvYWRlZEltYWdlcyA9IHt9OwogICAgICAgIGIucHJlbG9hZGVkQXVkaW9zID0ge307CiAgICAgICAgZnVuY3Rpb24gbmEoYSkgewogICAgICAgICAgaWYgKGIub25BYm9ydCkKICAgICAgICAgICAgYi5vbkFib3J0KGEpOwogICAgICAgICAgYSArPSAiIjsKICAgICAgICAgIG9hKGEpOwogICAgICAgICAgcGEoYSk7CiAgICAgICAgICB2YSA9ICEwOwogICAgICAgICAgdGhyb3cgbmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcigiYWJvcnQoIiArIGEgKyAiKS4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4iKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gUWEoKSB7CiAgICAgICAgICB2YXIgYSA9IFJhOwogICAgICAgICAgcmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA/IGEuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpIDogMCA9PT0gYS5pbmRleE9mKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIikKICAgICAgICB9CiAgICAgICAgdmFyIFJhID0gImFtbW8ud2FzbS53YXNtIjsKICAgICAgICBpZiAoIVFhKCkpIHsKICAgICAgICAgIHZhciBTYSA9IFJhOwogICAgICAgICAgUmEgPSBiLmxvY2F0ZUZpbGUgPyBiLmxvY2F0ZUZpbGUoU2EsIGhhKSA6IGhhICsgU2EKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gVGEoKSB7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoc2EpCiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHNhKTsKICAgICAgICAgICAgaWYgKGthKQogICAgICAgICAgICAgIHJldHVybiBrYShSYSk7CiAgICAgICAgICAgIHRocm93ICJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCI7CiAgICAgICAgICB9IGNhdGNoIChhKSB7CiAgICAgICAgICAgIG5hKGEpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIFVhKCkgewogICAgICAgICAgcmV0dXJuIHNhIHx8ICFjYSAmJiAhZGEgfHwgImZ1bmN0aW9uIiAhPT0gdHlwZW9mIGZldGNoID8gbmV3IFByb21pc2UoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgIGEoVGEoKSkKICAgICAgICAgICAgfQogICAgICAgICAgKSA6IGZldGNoKFJhLCB7CiAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iCiAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgaWYgKCFhLm9rKQogICAgICAgICAgICAgIHRocm93ICJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICciICsgUmEgKyAiJyI7CiAgICAgICAgICAgIHJldHVybiBhLmFycmF5QnVmZmVyKCkKICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gVGEoKQogICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgdmFyIFZhID0gewogICAgICAgICAgMTg2NDogZnVuY3Rpb24oYSwgYywgZCwgZSwgZiwgbSwgQywgUCkgewogICAgICAgICAgICBhID0gYi5nZXRDYWNoZShiLkNvbmNyZXRlQ29udGFjdFJlc3VsdENhbGxiYWNrKVthXTsKICAgICAgICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KCJhZGRTaW5nbGVSZXN1bHQiKSkKICAgICAgICAgICAgICB0aHJvdyAiYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgQ29uY3JldGVDb250YWN0UmVzdWx0Q2FsbGJhY2s6OmFkZFNpbmdsZVJlc3VsdC4iOwogICAgICAgICAgICByZXR1cm4gYS5hZGRTaW5nbGVSZXN1bHQoYywgZCwgZSwgZiwgbSwgQywgUCkKICAgICAgICAgIH0sCiAgICAgICAgICAyNDI0OiBmdW5jdGlvbihhLCBjLCBkLCBlKSB7CiAgICAgICAgICAgIGEgPSBiLmdldENhY2hlKGIuRGVidWdEcmF3ZXIpW2FdOwogICAgICAgICAgICBpZiAoIWEuaGFzT3duUHJvcGVydHkoImRyYXdMaW5lIikpCiAgICAgICAgICAgICAgdGhyb3cgImEgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpkcmF3TGluZS4iOwogICAgICAgICAgICBhLmRyYXdMaW5lKGMsIGQsIGUpCiAgICAgICAgICB9LAogICAgICAgICAgMjY0OTogZnVuY3Rpb24oYSwgYywgZCwgZSwgZiwgbSkgewogICAgICAgICAgICBhID0gYi5nZXRDYWNoZShiLkRlYnVnRHJhd2VyKVthXTsKICAgICAgICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KCJkcmF3Q29udGFjdFBvaW50IikpCiAgICAgICAgICAgICAgdGhyb3cgImEgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpkcmF3Q29udGFjdFBvaW50LiI7CiAgICAgICAgICAgIGEuZHJhd0NvbnRhY3RQb2ludChjLCBkLCBlLCBmLCBtKQogICAgICAgICAgfSwKICAgICAgICAgIDI5MDY6IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgYSA9IGIuZ2V0Q2FjaGUoYi5EZWJ1Z0RyYXdlcilbYV07CiAgICAgICAgICAgIGlmICghYS5oYXNPd25Qcm9wZXJ0eSgicmVwb3J0RXJyb3JXYXJuaW5nIikpCiAgICAgICAgICAgICAgdGhyb3cgImEgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpyZXBvcnRFcnJvcldhcm5pbmcuIjsKICAgICAgICAgICAgYS5yZXBvcnRFcnJvcldhcm5pbmcoYykKICAgICAgICAgIH0sCiAgICAgICAgICAzMTUzOiBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICAgIGEgPSBiLmdldENhY2hlKGIuRGVidWdEcmF3ZXIpW2FdOwogICAgICAgICAgICBpZiAoIWEuaGFzT3duUHJvcGVydHkoImRyYXczZFRleHQiKSkKICAgICAgICAgICAgICB0aHJvdyAiYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgRGVidWdEcmF3ZXI6OmRyYXczZFRleHQuIjsKICAgICAgICAgICAgYS5kcmF3M2RUZXh0KGMsIGQpCiAgICAgICAgICB9LAogICAgICAgICAgMzM4MDogZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICBhID0gYi5nZXRDYWNoZShiLkRlYnVnRHJhd2VyKVthXTsKICAgICAgICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KCJzZXREZWJ1Z01vZGUiKSkKICAgICAgICAgICAgICB0aHJvdyAiYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgRGVidWdEcmF3ZXI6OnNldERlYnVnTW9kZS4iOwogICAgICAgICAgICBhLnNldERlYnVnTW9kZShjKQogICAgICAgICAgfSwKICAgICAgICAgIDM2MDY6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgYSA9IGIuZ2V0Q2FjaGUoYi5EZWJ1Z0RyYXdlcilbYV07CiAgICAgICAgICAgIGlmICghYS5oYXNPd25Qcm9wZXJ0eSgiZ2V0RGVidWdNb2RlIikpCiAgICAgICAgICAgICAgdGhyb3cgImEgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpnZXREZWJ1Z01vZGUuIjsKICAgICAgICAgICAgcmV0dXJuIGEuZ2V0RGVidWdNb2RlKCkKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIElhLnB1c2goewogICAgICAgICAgS3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBXYSgpCiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIFhhID0gW251bGwsIFtdLCBbXV07CiAgICAgICAgZnVuY3Rpb24gWWEoYSwgYykgewogICAgICAgICAgWmEgfHwgKFphID0gW10pOwogICAgICAgICAgdmFyIGQgPSBaYTsKICAgICAgICAgIGQubGVuZ3RoID0gMDsKICAgICAgICAgIGZvciAodmFyIGU7IGUgPSBBYVthKytdOyApCiAgICAgICAgICAgIDEwMCA9PT0gZSB8fCAxMDIgPT09IGUgPyAoYyA9IGMgKyA3ICYgLTgsCiAgICAgICAgICAgICAgZC5wdXNoKERhW2MgPj4gM10pLAogICAgICAgICAgICAgIGMgKz0gOCkgOiAoYyA9IGMgKyAzICYgLTQsCiAgICAgICAgICAgICAgZC5wdXNoKEJhW2MgPj4gMl0pLAogICAgICAgICAgICAgIGMgKz0gNCk7CiAgICAgICAgICByZXR1cm4gZAogICAgICAgIH0KICAgICAgICB2YXIgWmEsICRhID0gewogICAgICAgICAgaTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG5hKCkKICAgICAgICAgIH0sCiAgICAgICAgICBkOiBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICAgIGMgPSBZYShjLCBkKTsKICAgICAgICAgICAgcmV0dXJuIFZhW2FdLmFwcGx5KG51bGwsIGMpCiAgICAgICAgICB9LAogICAgICAgICAgYTogZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgICBjID0gWWEoYywgZCk7CiAgICAgICAgICAgIHJldHVybiBWYVthXS5hcHBseShudWxsLCBjKQogICAgICAgICAgfSwKICAgICAgICAgIGY6IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgICAgQWEuY29weVdpdGhpbihhLCBjLCBjICsgZCkKICAgICAgICAgIH0sCiAgICAgICAgICBnOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgbmEoIk9PTSIpCiAgICAgICAgICB9LAogICAgICAgICAgaDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICB9LAogICAgICAgICAgZTogZnVuY3Rpb24oKSB7fSwKICAgICAgICAgIGM6IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgZiA9IDAsIG0gPSAwOyBtIDwgZDsgbSsrKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgQyA9IEJhW2MgKyA4ICogbSA+PiAyXSwgUCA9IEJhW2MgKyAoOCAqIG0gKyA0KSA+PiAyXSwgaWEgPSAwOyBpYSA8IFA7IGlhKyspIHsKICAgICAgICAgICAgICAgIHZhciBuYiA9IEFhW0MgKyBpYV0KICAgICAgICAgICAgICAgICAgLCBXYiA9IFhhW2FdOwogICAgICAgICAgICAgICAgMCA9PT0gbmIgfHwgMTAgPT09IG5iID8gKCgxID09PSBhID8gb2EgOiBwYSkoeGEoV2IsIDApKSwKICAgICAgICAgICAgICAgICAgV2IubGVuZ3RoID0gMCkgOiBXYi5wdXNoKG5iKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmICs9IFAKICAgICAgICAgICAgfQogICAgICAgICAgICBCYVtlID4+IDJdID0gZjsKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgIH0sCiAgICAgICAgICBiOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBjID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgQmFbYSA+PiAyXSA9IGMgLyAxRTMgfCAwOwogICAgICAgICAgICBCYVthICsgNCA+PiAyXSA9IGMgJSAxRTMgKiAxRTMgfCAwOwogICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgfSwKICAgICAgICAgIG1lbW9yeTogdGEsCiAgICAgICAgICB0YWJsZTogdWEKICAgICAgICB9LCBhYiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZnVuY3Rpb24gYShmKSB7CiAgICAgICAgICAgIGIuYXNtID0gZi5leHBvcnRzOwogICAgICAgICAgICBOYS0tOwogICAgICAgICAgICBiLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMgJiYgYi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKE5hKTsKICAgICAgICAgICAgMCA9PSBOYSAmJiAobnVsbCAhPT0gT2EgJiYgKGNsZWFySW50ZXJ2YWwoT2EpLAogICAgICAgICAgICAgIE9hID0gbnVsbCksCiAgICAgICAgICAgIFBhICYmIChmID0gUGEsCiAgICAgICAgICAgICAgUGEgPSBudWxsLAogICAgICAgICAgICAgIGYoKSkpCiAgICAgICAgICB9CiAgICAgICAgICBmdW5jdGlvbiBjKGYpIHsKICAgICAgICAgICAgYShmLmluc3RhbmNlKQogICAgICAgICAgfQogICAgICAgICAgZnVuY3Rpb24gZChmKSB7CiAgICAgICAgICAgIHJldHVybiBVYSgpLnRoZW4oZnVuY3Rpb24obSkgewogICAgICAgICAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShtLCBlKQogICAgICAgICAgICB9KS50aGVuKGYsIGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgICBwYSgiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIiArIG0pOwogICAgICAgICAgICAgIG5hKG0pCiAgICAgICAgICAgIH0pCiAgICAgICAgICB9CiAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgYTogJGEKICAgICAgICAgIH07CiAgICAgICAgICBOYSsrOwogICAgICAgICAgYi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzICYmIGIubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhOYSk7CiAgICAgICAgICBpZiAoYi5pbnN0YW50aWF0ZVdhc20pCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmV0dXJuIGIuaW5zdGFudGlhdGVXYXNtKGUsIGEpCiAgICAgICAgICAgIH0gY2F0Y2ggKGYpIHsKICAgICAgICAgICAgICByZXR1cm4gcGEoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIgKyBmKSwKICAgICAgICAgICAgICAgICExCiAgICAgICAgICAgIH0KICAgICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBpZiAoc2EgfHwgImZ1bmN0aW9uIiAhPT0gdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nIHx8IFFhKCkgfHwgImZ1bmN0aW9uIiAhPT0gdHlwZW9mIGZldGNoKQogICAgICAgICAgICAgICAgcmV0dXJuIGQoYyk7CiAgICAgICAgICAgICAgZmV0Y2goUmEsIHsKICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iCiAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbihmKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZiwgZSkudGhlbihjLCBmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAgIHBhKCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIiArIG0pOwogICAgICAgICAgICAgICAgICBwYSgiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKTsKICAgICAgICAgICAgICAgICAgZChjKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICApKCk7CiAgICAgICAgICByZXR1cm4ge30KICAgICAgICB9KCk7CiAgICAgICAgYi5hc20gPSBhYjsKICAgICAgICB2YXIgV2EgPSBiLl9fX3dhc21fY2FsbF9jdG9ycyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdhID0gYi5fX193YXNtX2NhbGxfY3RvcnMgPSBiLmFzbS5qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0RGlzcGF0Y2hlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBiLmFzbS5rKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfcmF5VGVzdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoY2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9yYXlUZXN0XzMgPSBiLmFzbS5sKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0UGFpckNhY2hlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2dldFBhaXJDYWNoZV8wID0gYi5hc20ubSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2dldERpc3BhdGNoSW5mb18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9nZXREaXNwYXRjaEluZm9fMCA9IGIuYXNtLm4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5vKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGdiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2FkZENvbGxpc2lvbk9iamVjdF8yID0gYi5hc20ucCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2FkZENvbGxpc2lvbk9iamVjdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMyA9IGIuYXNtLnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9yZW1vdmVDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGliID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfcmVtb3ZlQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5yKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0QnJvYWRwaGFzZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoamIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9nZXRCcm9hZHBoYXNlXzAgPSBiLmFzbS5zKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfY29udmV4U3dlZXBUZXN0XzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2NvbnZleFN3ZWVwVGVzdF81ID0gYi5hc20udCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2NvbnRhY3RQYWlyVGVzdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9jb250YWN0UGFpclRlc3RfMyA9IGIuYXNtLnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9jb250YWN0VGVzdF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9jb250YWN0VGVzdF8yID0gYi5hc20udikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX3VwZGF0ZVNpbmdsZUFhYmJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9iID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gYi5hc20udykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBiLmFzbS54KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0RGVidWdEcmF3ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uV29ybGRfZ2V0RGVidWdEcmF3ZXJfMCA9IGIuYXNtLnkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9kZWJ1Z0RyYXdXb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9kZWJ1Z0RyYXdXb3JsZF8wID0gYi5hc20ueikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbldvcmxkX2RlYnVnRHJhd09iamVjdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9kZWJ1Z0RyYXdPYmplY3RfMyA9IGIuYXNtLkEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Xb3JsZF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uQikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1YiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvblNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25TaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLkMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25TaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5EKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3YiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvblNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gYi5hc20uRSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4YiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvblNoYXBlX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25TaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLkYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25TaGFwZV9nZXRNYXJnaW5fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHliID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfZ2V0TWFyZ2luXzAgPSBiLmFzbS5HKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uU2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLkgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gYi5hc20uSSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRDb2xsaXNpb25TaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfZ2V0Q29sbGlzaW9uU2hhcGVfMCA9IGIuYXNtLkopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENvbnRhY3RQcm9jZXNzaW5nVGhyZXNob2xkXzEgPSBiLmFzbS5LKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldEFjdGl2YXRpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0QWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS5MKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEViID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9mb3JjZUFjdGl2YXRpb25TdGF0ZV8xID0gYi5hc20uTSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9hY3RpdmF0ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfYWN0aXZhdGVfMCA9IGIuYXNtLk4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfYWN0aXZhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2FjdGl2YXRlXzEgPSBiLmFzbS5PKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2lzQWN0aXZlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9pc0FjdGl2ZV8wID0gYi5hc20uUCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9pc0tpbmVtYXRpY09iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfaXNLaW5lbWF0aWNPYmplY3RfMCA9IGIuYXNtLlEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfaXNTdGF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2lzU3RhdGljT2JqZWN0XzAgPSBiLmFzbS5SKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2lzU3RhdGljT3JLaW5lbWF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2lzU3RhdGljT3JLaW5lbWF0aWNPYmplY3RfMCA9IGIuYXNtLlMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfZ2V0UmVzdGl0dXRpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFJlc3RpdHV0aW9uXzAgPSBiLmFzbS5UKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1iID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldEZyaWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRGcmljdGlvbl8wID0gYi5hc20uVSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRSb2xsaW5nRnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5iID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFJvbGxpbmdGcmljdGlvbl8wID0gYi5hc20uVikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9zZXRSZXN0aXR1dGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0UmVzdGl0dXRpb25fMSA9IGIuYXNtLlcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0RnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldEZyaWN0aW9uXzEgPSBiLmFzbS5YKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldFJvbGxpbmdGcmljdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Um9sbGluZ0ZyaWN0aW9uXzEgPSBiLmFzbS5ZKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFdvcmxkVHJhbnNmb3JtXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRXb3JsZFRyYW5zZm9ybV8wID0gYi5hc20uWikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRDb2xsaXNpb25GbGFnc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU2IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGIuYXNtLl8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFRiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENvbGxpc2lvbkZsYWdzXzEgPSBiLmFzbS4kKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFViID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldFdvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9zZXRXb3JsZFRyYW5zZm9ybV8xID0gYi5hc20uYWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFZiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENvbGxpc2lvblNoYXBlXzEgPSBiLmFzbS5iYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9zZXRDY2RNb3Rpb25UaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gYi5hc20uY2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWWIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFliID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldENjZFN3ZXB0U3BoZXJlUmFkaXVzXzEgPSBiLmFzbS5kYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRVc2VySW5kZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFpiID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFVzZXJJbmRleF8wID0gYi5hc20uZWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJGIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0VXNlckluZGV4XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkYiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9zZXRVc2VySW5kZXhfMSA9IGIuYXNtLmZhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X2dldFVzZXJQb2ludGVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRVc2VyUG9pbnRlcl8wID0gYi5hc20uZ2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3Rfc2V0VXNlclBvaW50ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0X3NldFVzZXJQb2ludGVyXzEgPSBiLmFzbS5oYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBiLmFzbS5pYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RfX19kZXN0cm95X19fMCA9IGIuYXNtLmphKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRBY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRBY3Rpb25fMSA9IGIuYXNtLmthKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9yZW1vdmVBY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9yZW1vdmVBY3Rpb25fMSA9IGIuYXNtLmxhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXRTb2x2ZXJJbmZvXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfZ2V0U29sdmVySW5mb18wID0gYi5hc20ubWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMSA9IGIuYXNtLm5hKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoamMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzIgPSBiLmFzbS5vYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18zID0gYi5hc20ucGEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2dldERpc3BhdGNoZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBiLmFzbS5xYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfcmF5VGVzdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX3JheVRlc3RfMyA9IGIuYXNtLnJhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXRQYWlyQ2FjaGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXRQYWlyQ2FjaGVfMCA9IGIuYXNtLnNhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG9jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaEluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaEluZm9fMCA9IGIuYXNtLnRhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHBjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMSA9IGIuYXNtLnVhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMiA9IGIuYXNtLnZhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMyA9IGIuYXNtLndhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9yZW1vdmVDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9yZW1vdmVDb2xsaXNpb25PYmplY3RfMSA9IGIuYXNtLnhhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXRCcm9hZHBoYXNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0YyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfZ2V0QnJvYWRwaGFzZV8wID0gYi5hc20ueWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnZleFN3ZWVwVGVzdF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnZleFN3ZWVwVGVzdF81ID0gYi5hc20uemEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnRhY3RQYWlyVGVzdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnRhY3RQYWlyVGVzdF8zID0gYi5hc20uQWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2NvbnRhY3RUZXN0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3YyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfY29udGFjdFRlc3RfMiA9IGIuYXNtLkJhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF91cGRhdGVTaW5nbGVBYWJiXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4YyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gYi5hc20uQ2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5YyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfc2V0RGVidWdEcmF3ZXJfMSA9IGIuYXNtLkRhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9nZXREZWJ1Z0RyYXdlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoemMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2dldERlYnVnRHJhd2VyXzAgPSBiLmFzbS5FYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfZGVidWdEcmF3V29ybGRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdXb3JsZF8wID0gYi5hc20uRmEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2RlYnVnRHJhd09iamVjdF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX2RlYnVnRHJhd09iamVjdF8zID0gYi5hc20uR2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREeW5hbWljc1dvcmxkX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idER5bmFtaWNzV29ybGRfX19kZXN0cm95X19fMCA9IGIuYXNtLkhhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHlwZWRDb25zdHJhaW50X2VuYWJsZUZlZWRiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFR5cGVkQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gYi5hc20uSWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUeXBlZENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFR5cGVkQ29uc3RyYWludF9nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMCA9IGIuYXNtLkphKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHlwZWRDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUeXBlZENvbnN0cmFpbnRfc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzEgPSBiLmFzbS5LYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFR5cGVkQ29uc3RyYWludF9nZXRQYXJhbV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUeXBlZENvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGIuYXNtLkxhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHlwZWRDb25zdHJhaW50X3NldFBhcmFtXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFR5cGVkQ29uc3RyYWludF9zZXRQYXJhbV8zID0gYi5hc20uTWEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUeXBlZENvbnN0cmFpbnRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEljID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHlwZWRDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBiLmFzbS5OYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmNhdmVTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uY2F2ZVNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uT2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25jYXZlU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmNhdmVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLlBhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uY2F2ZVNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25jYXZlU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5RYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmNhdmVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTWMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25jYXZlU2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLlJhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5jID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2J0Q2Fwc3VsZVNoYXBlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9idENhcHN1bGVTaGFwZV8yID0gYi5hc20uU2EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT2MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfc2V0TWFyZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLlRhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFBjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfZ2V0TWFyZ2luXzAgPSBiLmFzbS5VYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9nZXRVcEF4aXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFFjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldFVwQXhpc18wID0gYi5hc20uVmEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfZ2V0UmFkaXVzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9nZXRSYWRpdXNfMCA9IGIuYXNtLldhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldEhhbGZIZWlnaHRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldEhhbGZIZWlnaHRfMCA9IGIuYXNtLlhhKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5ZYSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20uWmEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLl9hKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uJGEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJRGVidWdEcmF3X2RyYXdMaW5lXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfZHJhd0xpbmVfMyA9IGIuYXNtLmFiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFljID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SURlYnVnRHJhd19kcmF3Q29udGFjdFBvaW50XzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZYyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfZHJhd0NvbnRhY3RQb2ludF81ID0gYi5hc20uYmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJRGVidWdEcmF3X3JlcG9ydEVycm9yV2FybmluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJRGVidWdEcmF3X3JlcG9ydEVycm9yV2FybmluZ18xID0gYi5hc20uY2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJGMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJRGVidWdEcmF3X2RyYXczZFRleHRfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRjID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SURlYnVnRHJhd19kcmF3M2RUZXh0XzIgPSBiLmFzbS5kYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfc2V0RGVidWdNb2RlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfc2V0RGVidWdNb2RlXzEgPSBiLmFzbS5lYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfZ2V0RGVidWdNb2RlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChiZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfZ2V0RGVidWdNb2RlXzAgPSBiLmFzbS5mYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idElEZWJ1Z0RyYXdfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SURlYnVnRHJhd19fX2Rlc3Ryb3lfX18wID0gYi5hc20uZ2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbl9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uX2J0RGVmYXVsdENvbGxpc2lvbkNvbmZpZ3VyYXRpb25fMCA9IGIuYXNtLmhiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdENvbGxpc2lvbkNvbmZpZ3VyYXRpb25fYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbl9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uXzEgPSBiLmFzbS5pYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25maWd1cmF0aW9uX19fZGVzdHJveV9fXzAgPSBiLmFzbS5qYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLmtiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaFNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20ubGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGlkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5tYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaFNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaFNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5uYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2J0R2hvc3RPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfYnRHaG9zdE9iamVjdF8wID0gYi5hc20ub2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXROdW1PdmVybGFwcGluZ09iamVjdHNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzXzAgPSBiLmFzbS5wYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2dldE92ZXJsYXBwaW5nT2JqZWN0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2dldE92ZXJsYXBwaW5nT2JqZWN0XzEgPSBiLmFzbS5xYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBuZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldEFuaXNvdHJvcGljRnJpY3Rpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gYi5hc20ucmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRDb2xsaXNpb25TaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRDb2xsaXNpb25TaGFwZV8wID0gYi5hc20uc2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gYi5hc20udGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRBY3RpdmF0aW9uU3RhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0QWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS51YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCByZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS52YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2FjdGl2YXRlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChzZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2FjdGl2YXRlXzAgPSBiLmFzbS53YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2FjdGl2YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2FjdGl2YXRlXzEgPSBiLmFzbS54YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzQWN0aXZlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzQWN0aXZlXzAgPSBiLmFzbS55YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzS2luZW1hdGljT2JqZWN0XzAgPSBiLmFzbS56YikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzU3RhdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzU3RhdGljT2JqZWN0XzAgPSBiLmFzbS5BYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4ZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X2lzU3RhdGljT3JLaW5lbWF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfaXNTdGF0aWNPcktpbmVtYXRpY09iamVjdF8wID0gYi5hc20uQmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRSZXN0aXR1dGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRSZXN0aXR1dGlvbl8wID0gYi5hc20uQ2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgemQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRGcmljdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoemQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRGcmljdGlvbl8wID0gYi5hc20uRGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRSb2xsaW5nRnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBiLmFzbS5FYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldFJlc3RpdHV0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldFJlc3RpdHV0aW9uXzEgPSBiLmFzbS5GYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldEZyaWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldEZyaWN0aW9uXzEgPSBiLmFzbS5HYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldFJvbGxpbmdGcmljdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGIuYXNtLkhiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGIuYXNtLkliKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGIuYXNtLkpiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGIuYXNtLktiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGIuYXNtLkxiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGIuYXNtLk1iKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEpkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0Q2NkTW90aW9uVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gYi5hc20uTmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gYi5hc20uT2IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRVc2VySW5kZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0VXNlckluZGV4XzAgPSBiLmFzbS5QYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X3NldFVzZXJJbmRleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9zZXRVc2VySW5kZXhfMSA9IGIuYXNtLlFiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0VXNlclBvaW50ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0VXNlclBvaW50ZXJfMCA9IGIuYXNtLlJiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0VXNlclBvaW50ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9kID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3Rfc2V0VXNlclBvaW50ZXJfMSA9IGIuYXNtLlNiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFBkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RPYmplY3RfZ2V0QnJvYWRwaGFzZUhhbmRsZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdE9iamVjdF9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBiLmFzbS5UYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0T2JqZWN0X19fZGVzdHJveV9fXzAgPSBiLmFzbS5VYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZV9idENvbmVTaGFwZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVfYnRDb25lU2hhcGVfMiA9IGIuYXNtLlZiKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5XYikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFRkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20uWGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLlliKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uWmIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV2QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRBY3Rpb25JbnRlcmZhY2VfdXBkYXRlQWN0aW9uXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEFjdGlvbkludGVyZmFjZV91cGRhdGVBY3Rpb25fMiA9IGIuYXNtLl9iKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhkID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QWN0aW9uSW50ZXJmYWNlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYZCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEFjdGlvbkludGVyZmFjZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uJGIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2J0VmVjdG9yM18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWWQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2J0VmVjdG9yM18wID0gYi5hc20uYWMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWmQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2J0VmVjdG9yM18zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2J0VmVjdG9yM18zID0gYi5hc20uYmMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2xlbmd0aF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJGQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX2xlbmd0aF8wID0gYi5hc20uY2MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3hfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM194XzAgPSBiLmFzbS5kYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfeV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3lfMCA9IGIuYXNtLmVjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM196XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfel8wID0gYi5hc20uZmMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3NldFhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19zZXRYXzEgPSBiLmFzbS5nYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfc2V0WV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3NldFlfMSA9IGIuYXNtLmhjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19zZXRaXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfc2V0Wl8xID0gYi5hc20uaWMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ2UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX3NldFZhbHVlXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfc2V0VmFsdWVfMyA9IGIuYXNtLmpjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19ub3JtYWxpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19ub3JtYWxpemVfMCA9IGIuYXNtLmtjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19yb3RhdGVfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19yb3RhdGVfMiA9IGIuYXNtLmxjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19kb3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19kb3RfMSA9IGIuYXNtLm1jKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9tdWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9tdWxfMSA9IGIuYXNtLm5jKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGxlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9hZGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9hZGRfMSA9IGIuYXNtLm9jKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9zdWJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG1lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19vcF9zdWJfMSA9IGIuYXNtLnBjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzX19fZGVzdHJveV9fXzAgPSBiLmFzbS5xYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJfY2FzdFJheV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlUmF5Y2FzdGVyX2Nhc3RSYXlfMyA9IGIuYXNtLnJjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3Rlcl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlUmF5Y2FzdGVyX19fZGVzdHJveV9fXzAgPSBiLmFzbS5zYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3hfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfeF8wID0gYi5hc20udGMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF95XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3lfMCA9IGIuYXNtLnVjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfel8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc2UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF96XzAgPSBiLmFzbS52YykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0ZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3dfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfd18wID0gYi5hc20ud2MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF9zZXRYXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1ZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3NldFhfMSA9IGIuYXNtLnhjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfc2V0WV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF9zZXRZXzEgPSBiLmFzbS55YykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3ZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3NldFpfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfc2V0Wl8xID0gYi5hc20uemMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWFkV29yZF9zZXRXXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4ZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YWRXb3JkX3NldFdfMSA9IGIuYXNtLkFjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhZFdvcmRfX19kZXN0cm95X19fMCA9IGIuYXNtLkJjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9idEN5bGluZGVyU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9idEN5bGluZGVyU2hhcGVfMSA9IGIuYXNtLkNjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLkRjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9nZXRNYXJnaW5fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9nZXRNYXJnaW5fMCA9IGIuYXNtLkVjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLkZjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLkdjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLkhjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5JYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR2UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfNCA9IGIuYXNtLkpjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldEdyYXZpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldEdyYXZpdHlfMSA9IGIuYXNtLktjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2dldEdyYXZpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEllID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2dldEdyYXZpdHlfMCA9IGIuYXNtLkxjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZFJpZ2lkQm9keV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzEgPSBiLmFzbS5NYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9hZGRSaWdpZEJvZHlfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZFJpZ2lkQm9keV8zID0gYi5hc20uTmMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfcmVtb3ZlUmlnaWRCb2R5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9yZW1vdmVSaWdpZEJvZHlfMSA9IGIuYXNtLk9jKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMSA9IGIuYXNtLlBjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMiA9IGIuYXNtLlFjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3JlbW92ZUNvbnN0cmFpbnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9lID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3JlbW92ZUNvbnN0cmFpbnRfMSA9IGIuYXNtLlJjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFBlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3N0ZXBTaW11bGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zdGVwU2ltdWxhdGlvbl8xID0gYi5hc20uU2MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc3RlcFNpbXVsYXRpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFFlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3N0ZXBTaW11bGF0aW9uXzIgPSBiLmFzbS5UYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zdGVwU2ltdWxhdGlvbl8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc3RlcFNpbXVsYXRpb25fMyA9IGIuYXNtLlVjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldENvbnRhY3RBZGRlZENhbGxiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zZXRDb250YWN0QWRkZWRDYWxsYmFja18xID0gYi5hc20uVmMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0Q29udGFjdFByb2Nlc3NlZENhbGxiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zZXRDb250YWN0UHJvY2Vzc2VkQ2FsbGJhY2tfMSA9IGIuYXNtLldjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldENvbnRhY3REZXN0cm95ZWRDYWxsYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0Q29udGFjdERlc3Ryb3llZENhbGxiYWNrXzEgPSBiLmFzbS5YYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBiLmFzbS5ZYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9yYXlUZXN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9yYXlUZXN0XzMgPSBiLmFzbS5aYykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXRQYWlyQ2FjaGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2dldFBhaXJDYWNoZV8wID0gYi5hc20uX2MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWWUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZ2V0RGlzcGF0Y2hJbmZvXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaEluZm9fMCA9IGIuYXNtLiRjKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFplID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbGxpc2lvbk9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5hZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkZSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRlID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZENvbGxpc2lvbk9iamVjdF8yID0gYi5hc20uYmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9hZGRDb2xsaXNpb25PYmplY3RfMyA9IGIuYXNtLmNkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3JlbW92ZUNvbGxpc2lvbk9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfcmVtb3ZlQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5kZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXRCcm9hZHBoYXNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXRCcm9hZHBoYXNlXzAgPSBiLmFzbS5lZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9jb252ZXhTd2VlcFRlc3RfNSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2NvbnZleFN3ZWVwVGVzdF81ID0gYi5hc20uZmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfY29udGFjdFBhaXJUZXN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9jb250YWN0UGFpclRlc3RfMyA9IGIuYXNtLmdkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2NvbnRhY3RUZXN0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9jb250YWN0VGVzdF8yID0gYi5hc20uaGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gYi5hc20uaWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0RGVidWdEcmF3ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBiLmFzbS5qZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9nZXREZWJ1Z0RyYXdlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoamYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZ2V0RGVidWdEcmF3ZXJfMCA9IGIuYXNtLmtkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2RlYnVnRHJhd1dvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdXb3JsZF8wID0gYi5hc20ubGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZGVidWdEcmF3T2JqZWN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChsZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdPYmplY3RfMyA9IGIuYXNtLm1kKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1mID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZEFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfYWRkQWN0aW9uXzEgPSBiLmFzbS5uZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBuZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9yZW1vdmVBY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5mID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3JlbW92ZUFjdGlvbl8xID0gYi5hc20ub2QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZ2V0U29sdmVySW5mb18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfZ2V0U29sdmVySW5mb18wID0gYi5hc20ucGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHBmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzEgPSBiLmFzbS5xZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMiA9IGIuYXNtLnJkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc2NyZXRlRHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18zID0gYi5hc20uc2QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNjcmV0ZUR5bmFtaWNzV29ybGRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX19fZGVzdHJveV9fXzAgPSBiLmFzbS50ZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0ZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLnVkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4U2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1ZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20udmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4U2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS53ZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3ZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFNoYXBlX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAod2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLnhkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4U2hhcGVfZ2V0TWFyZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4ZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFNoYXBlX2dldE1hcmdpbl8wID0gYi5hc20ueWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uemQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgemYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVyX2dldE51bU1hbmlmb2xkc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoemYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVyX2dldE51bU1hbmlmb2xkc18wID0gYi5hc20uQWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVyX2dldE1hbmlmb2xkQnlJbmRleEludGVybmFsXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChBZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJfZ2V0TWFuaWZvbGRCeUluZGV4SW50ZXJuYWxfMSA9IGIuYXNtLkJkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlcl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVyX19fZGVzdHJveV9fXzAgPSBiLmFzbS5DZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfMyA9IGIuYXNtLkRkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50XzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF81ID0gYi5hc20uRWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0TGluZWFyTG93ZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0TGluZWFyTG93ZXJMaW1pdF8xID0gYi5hc20uRmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0TGluZWFyVXBwZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0TGluZWFyVXBwZXJMaW1pdF8xID0gYi5hc20uR2QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0QW5ndWxhckxvd2VyTGltaXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X3NldEFuZ3VsYXJMb3dlckxpbWl0XzEgPSBiLmFzbS5IZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9zZXRBbmd1bGFyVXBwZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0QW5ndWxhclVwcGVyTGltaXRfMSA9IGIuYXNtLklkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2dldEZyYW1lT2Zmc2V0QV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfZ2V0RnJhbWVPZmZzZXRBXzAgPSBiLmFzbS5KZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLktkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5MZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20uTWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1mID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5OZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZkNvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLk9kKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9mID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uUGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTdHJpZGluZ01lc2hJbnRlcmZhY2Vfc2V0U2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUGYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTdHJpZGluZ01lc2hJbnRlcmZhY2Vfc2V0U2NhbGluZ18xID0gYi5hc20uUWQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUWYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTdHJpZGluZ01lc2hJbnRlcmZhY2VfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFFmID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3RyaWRpbmdNZXNoSW50ZXJmYWNlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5SZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX2dldFdvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX2dldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS5TZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX3NldFdvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX3NldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS5UZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1vdGlvblN0YXRlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5VZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db252ZXhSZXN1bHRDYWxsYmFja19oYXNIaXRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2hhc0hpdF8wID0gYi5hc20uVmQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFZmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBiLmFzbS5XZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMSA9IGIuYXNtLlhkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGIuYXNtLllkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFlmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMSA9IGIuYXNtLlpkKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFpmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uXzAgPSBiLmFzbS5fZCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkZiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRmID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gYi5hc20uJGQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29udmV4UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGFnID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnZleFJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBiLmFzbS5hZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db250YWN0UmVzdWx0Q2FsbGJhY2tfYWRkU2luZ2xlUmVzdWx0XzcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChiZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db250YWN0UmVzdWx0Q2FsbGJhY2tfYWRkU2luZ2xlUmVzdWx0XzcgPSBiLmFzbS5iZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db250YWN0UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNnID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbnRhY3RSZXN1bHRDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gYi5hc20uY2UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVNvbHZlcl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVNvbHZlcl9fX2Rlc3Ryb3lfX18wID0gYi5hc20uZGUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19oYXNIaXRfMCA9IGIuYXNtLmVlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8wID0gYi5hc20uZmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS5nZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzAgPSBiLmFzbS5oZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBiLmFzbS5pZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGpnID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gYi5hc20uamUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb25fMSA9IGIuYXNtLmtlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGxnID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uT2JqZWN0XzAgPSBiLmFzbS5sZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG1nID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gYi5hc20ubWUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbmcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5nID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheVJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBiLmFzbS5uZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hdHJpeDN4M19zZXRFdWxlclpZWF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYXRyaXgzeDNfc2V0RXVsZXJaWVhfMyA9IGIuYXNtLm9lKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWF0cml4M3gzX2dldFJvdGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hdHJpeDN4M19nZXRSb3RhdGlvbl8xID0gYi5hc20ucGUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYXRyaXgzeDNfZ2V0Um93XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hdHJpeDN4M19nZXRSb3dfMSA9IGIuYXNtLnFlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWF0cml4M3gzX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hdHJpeDN4M19fX2Rlc3Ryb3lfX18wID0gYi5hc20ucmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTY2FsYXJBcnJheV9zaXplXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChzZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNjYWxhckFycmF5X3NpemVfMCA9IGIuYXNtLnNlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2NhbGFyQXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2NhbGFyQXJyYXlfYXRfMSA9IGIuYXNtLnRlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2NhbGFyQXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2NhbGFyQXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLnVlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tMU1RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tMU1RfMCA9IGIuYXNtLnZlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tMU1RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tMU1RfMSA9IGIuYXNtLndlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tBU1RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tBU1RfMCA9IGIuYXNtLnhlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHlnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tBU1RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHlnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tBU1RfMSA9IGIuYXNtLnllKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tWU1RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2tWU1RfMCA9IGIuYXNtLnplKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tWU1RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2tWU1RfMSA9IGIuYXNtLkFlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX2dldF9tX2ZsYWdzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9NYXRlcmlhbF9nZXRfbV9mbGFnc18wID0gYi5hc20uQmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTWF0ZXJpYWxfc2V0X21fZmxhZ3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENnID0gYi5fZW1zY3JpcHRlbl9iaW5kX01hdGVyaWFsX3NldF9tX2ZsYWdzXzEgPSBiLmFzbS5DZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9NYXRlcmlhbF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTWF0ZXJpYWxfX19kZXN0cm95X19fMCA9IGIuYXNtLkRlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdGltZVN0ZXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdGltZVN0ZXBfMCA9IGIuYXNtLkVlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdGltZVN0ZXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdGltZVN0ZXBfMSA9IGIuYXNtLkZlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fc3RlcENvdW50XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX3N0ZXBDb3VudF8wID0gYi5hc20uR2UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV9zdGVwQ291bnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fc3RlcENvdW50XzEgPSBiLmFzbS5IZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX2Rpc3BhdGNoRnVuY18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV9kaXNwYXRjaEZ1bmNfMCA9IGIuYXNtLkllKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEpnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fZGlzcGF0Y2hGdW5jXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2Rpc3BhdGNoRnVuY18xID0gYi5hc20uSmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV90aW1lT2ZJbXBhY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdGltZU9mSW1wYWN0XzAgPSBiLmFzbS5LZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX3RpbWVPZkltcGFjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV90aW1lT2ZJbXBhY3RfMSA9IGIuYXNtLkxlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1nID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdXNlQ29udGludW91c18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV91c2VDb250aW51b3VzXzAgPSBiLmFzbS5NZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX3VzZUNvbnRpbnVvdXNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5nID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdXNlQ29udGludW91c18xID0gYi5hc20uTmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV9lbmFibGVTYXRDb252ZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9nID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fZW5hYmxlU2F0Q29udmV4XzAgPSBiLmFzbS5PZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2VuYWJsZVNhdENvbnZleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV9lbmFibGVTYXRDb252ZXhfMSA9IGIuYXNtLlBlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fZW5hYmxlU1BVXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX2VuYWJsZVNQVV8wID0gYi5hc20uUWUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUmcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV9lbmFibGVTUFVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fZW5hYmxlU1BVXzEgPSBiLmFzbS5SZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX3VzZUVwYV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU2cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV91c2VFcGFfMCA9IGIuYXNtLlNlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdXNlRXBhXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX3VzZUVwYV8xID0gYi5hc20uVGUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVWcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19nZXRfbV9hbGxvd2VkQ2NkUGVuZXRyYXRpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fYWxsb3dlZENjZFBlbmV0cmF0aW9uXzAgPSBiLmFzbS5VZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2FsbG93ZWRDY2RQZW5ldHJhdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVmcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV9hbGxvd2VkQ2NkUGVuZXRyYXRpb25fMSA9IGIuYXNtLlZlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fZ2V0X21fdXNlQ29udmV4Q29uc2VydmF0aXZlRGlzdGFuY2VVdGlsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX3VzZUNvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVXRpbF8wID0gYi5hc20uV2UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWGcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREaXNwYXRjaGVySW5mb19zZXRfbV91c2VDb252ZXhDb25zZXJ2YXRpdmVEaXN0YW5jZVV0aWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhnID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGlzcGF0Y2hlckluZm9fc2V0X21fdXNlQ29udmV4Q29uc2VydmF0aXZlRGlzdGFuY2VVdGlsXzEgPSBiLmFzbS5YZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX2dldF9tX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkXzAgPSBiLmFzbS5ZZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChaZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX3NldF9tX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkXzEgPSBiLmFzbS5aZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkZyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERpc3BhdGNoZXJJbmZvX19fZGVzdHJveV9fXzAgPSBiLmFzbS5fZSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25DU18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX2dldF9tX2NoYXNzaXNDb25uZWN0aW9uQ1NfMCA9IGIuYXNtLiRlKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9jaGFzc2lzQ29ubmVjdGlvbkNTXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChiaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25DU18xID0gYi5hc20uYWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX2dldF9tX3doZWVsRGlyZWN0aW9uQ1NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV93aGVlbERpcmVjdGlvbkNTXzAgPSBiLmFzbS5iZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxEaXJlY3Rpb25DU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3doZWVsRGlyZWN0aW9uQ1NfMSA9IGIuYXNtLmNmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV93aGVlbEF4bGVDU18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX2dldF9tX3doZWVsQXhsZUNTXzAgPSBiLmFzbS5kZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxBeGxlQ1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV93aGVlbEF4bGVDU18xID0gYi5hc20uZWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX2dldF9tX3N1c3BlbnNpb25SZXN0TGVuZ3RoXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGhfMCA9IGIuYXNtLmZmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9zdXNwZW5zaW9uUmVzdExlbmd0aF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3N1c3BlbnNpb25SZXN0TGVuZ3RoXzEgPSBiLmFzbS5nZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzAgPSBiLmFzbS5oZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzEgPSBiLmFzbS5qZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBraCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fd2hlZWxSYWRpdXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV93aGVlbFJhZGl1c18wID0gYi5hc20ua2YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3doZWVsUmFkaXVzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChsaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxSYWRpdXNfMSA9IGIuYXNtLmxmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1oID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18wID0gYi5hc20ubWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3N1c3BlbnNpb25TdGlmZm5lc3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5oID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzXzEgPSBiLmFzbS5uZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzAgPSBiLmFzbS5vZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzEgPSBiLmFzbS5wZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV93aGVlbHNEYW1waW5nUmVsYXhhdGlvbl8wID0gYi5hc20ucWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX3doZWVsc0RhbXBpbmdSZWxheGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fc2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb25fMSA9IGIuYXNtLnJmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGIuYXNtLnNmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9mcmljdGlvblNsaXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9mcmljdGlvblNsaXBfMSA9IGIuYXNtLnRmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGIuYXNtLnVmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGIuYXNtLnZmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19nZXRfbV9iSXNGcm9udFdoZWVsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3aCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fZ2V0X21fYklzRnJvbnRXaGVlbF8wID0gYi5hc20ud2YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9Db25zdHJ1Y3Rpb25JbmZvX3NldF9tX2JJc0Zyb250V2hlZWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19zZXRfbV9iSXNGcm9udFdoZWVsXzEgPSBiLmFzbS54ZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5aCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb0NvbnN0cnVjdGlvbkluZm9fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHloID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20ueWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgemggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6aCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfMSA9IGIuYXNtLnpmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlXzIgPSBiLmFzbS5BZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLkJmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20uQ2YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5EZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBFaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLkVmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4VHJpYW5nbGVNZXNoU2hhcGVfZ2V0TWFyZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlX2dldE1hcmdpbl8wID0gYi5hc20uRmYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhUcmlhbmdsZU1lc2hTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uR2YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCcm9hZHBoYXNlSW50ZXJmYWNlX2dldE92ZXJsYXBwaW5nUGFpckNhY2hlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VJbnRlcmZhY2VfZ2V0T3ZlcmxhcHBpbmdQYWlyQ2FjaGVfMCA9IGIuYXNtLkhmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEloID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnJvYWRwaGFzZUludGVyZmFjZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCcm9hZHBoYXNlSW50ZXJmYWNlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5JZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvXzMgPSBiLmFzbS5KZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvXzQgPSBiLmFzbS5LZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fbGluZWFyRGFtcGluZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2xpbmVhckRhbXBpbmdfMCA9IGIuYXNtLkxmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1oID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9saW5lYXJEYW1waW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fbGluZWFyRGFtcGluZ18xID0gYi5hc20uTWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2FuZ3VsYXJEYW1waW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYW5ndWxhckRhbXBpbmdfMCA9IGIuYXNtLk5mKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9oID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9hbmd1bGFyRGFtcGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2FuZ3VsYXJEYW1waW5nXzEgPSBiLmFzbS5PZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fZnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9mcmljdGlvbl8wID0gYi5hc20uUGYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUWggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2ZyaWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fZnJpY3Rpb25fMSA9IGIuYXNtLlFmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9yb2xsaW5nRnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9yb2xsaW5nRnJpY3Rpb25fMCA9IGIuYXNtLlJmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9yb2xsaW5nRnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9yb2xsaW5nRnJpY3Rpb25fMSA9IGIuYXNtLlNmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9yZXN0aXR1dGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX3Jlc3RpdHV0aW9uXzAgPSBiLmFzbS5UZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fcmVzdGl0dXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9yZXN0aXR1dGlvbl8xID0gYi5hc20uVWYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2xpbmVhclNsZWVwaW5nVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fbGluZWFyU2xlZXBpbmdUaHJlc2hvbGRfMCA9IGIuYXNtLlZmKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9saW5lYXJTbGVlcGluZ1RocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2xpbmVhclNsZWVwaW5nVGhyZXNob2xkXzEgPSBiLmFzbS5XZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYW5ndWxhclNsZWVwaW5nVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYW5ndWxhclNsZWVwaW5nVGhyZXNob2xkXzAgPSBiLmFzbS5YZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYW5ndWxhclNsZWVwaW5nVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYW5ndWxhclNsZWVwaW5nVGhyZXNob2xkXzEgPSBiLmFzbS5ZZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbERhbXBpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFpoID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9hZGRpdGlvbmFsRGFtcGluZ18wID0gYi5hc20uWmYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJGggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2FkZGl0aW9uYWxEYW1waW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkaCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbERhbXBpbmdfMSA9IGIuYXNtLl9mKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19nZXRfbV9hZGRpdGlvbmFsRGFtcGluZ0ZhY3Rvcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2FkZGl0aW9uYWxEYW1waW5nRmFjdG9yXzAgPSBiLmFzbS4kZikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbERhbXBpbmdGYWN0b3JfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9hZGRpdGlvbmFsRGFtcGluZ0ZhY3Rvcl8xID0gYi5hc20uYWcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY2kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX2dldF9tX2FkZGl0aW9uYWxMaW5lYXJEYW1waW5nVGhyZXNob2xkU3FyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbExpbmVhckRhbXBpbmdUaHJlc2hvbGRTcXJfMCA9IGIuYXNtLmJnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19zZXRfbV9hZGRpdGlvbmFsTGluZWFyRGFtcGluZ1RocmVzaG9sZFNxcl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlDb25zdHJ1Y3Rpb25JbmZvX3NldF9tX2FkZGl0aW9uYWxMaW5lYXJEYW1waW5nVGhyZXNob2xkU3FyXzEgPSBiLmFzbS5jZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nVGhyZXNob2xkU3FyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nVGhyZXNob2xkU3FyXzAgPSBiLmFzbS5kZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nVGhyZXNob2xkU3FyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nVGhyZXNob2xkU3FyXzEgPSBiLmFzbS5lZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nRmFjdG9yXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fZ2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nRmFjdG9yXzAgPSBiLmFzbS5mZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nRmFjdG9yXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fc2V0X21fYWRkaXRpb25hbEFuZ3VsYXJEYW1waW5nRmFjdG9yXzEgPSBiLmFzbS5nZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm9fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGlpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5Q29uc3RydWN0aW9uSW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20uaGcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgamkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25Db25maWd1cmF0aW9uX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkNvbmZpZ3VyYXRpb25fX19kZXN0cm95X19fMCA9IGIuYXNtLmlnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGVyc2lzdGVudE1hbmlmb2xkX2J0UGVyc2lzdGVudE1hbmlmb2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChraSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9idFBlcnNpc3RlbnRNYW5pZm9sZF8wID0gYi5hc20uamcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQZXJzaXN0ZW50TWFuaWZvbGRfZ2V0Qm9keTBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGVyc2lzdGVudE1hbmlmb2xkX2dldEJvZHkwXzAgPSBiLmFzbS5rZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9nZXRCb2R5MV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQZXJzaXN0ZW50TWFuaWZvbGRfZ2V0Qm9keTFfMCA9IGIuYXNtLmxnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5pID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGVyc2lzdGVudE1hbmlmb2xkX2dldE51bUNvbnRhY3RzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChuaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9nZXROdW1Db250YWN0c18wID0gYi5hc20ubWcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQZXJzaXN0ZW50TWFuaWZvbGRfZ2V0Q29udGFjdFBvaW50XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9nZXRDb250YWN0UG9pbnRfMSA9IGIuYXNtLm5nKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGVyc2lzdGVudE1hbmlmb2xkX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBlcnNpc3RlbnRNYW5pZm9sZF9fX2Rlc3Ryb3lfX18wID0gYi5hc20ub2cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2J0Q29tcG91bmRTaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2J0Q29tcG91bmRTaGFwZV8wID0gYi5hc20ucGcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2J0Q29tcG91bmRTaGFwZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2J0Q29tcG91bmRTaGFwZV8xID0gYi5hc20ucWcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc2kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2FkZENoaWxkU2hhcGVfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9hZGRDaGlsZFNoYXBlXzIgPSBiLmFzbS5yZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0aSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbXBvdW5kU2hhcGVfcmVtb3ZlQ2hpbGRTaGFwZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX3JlbW92ZUNoaWxkU2hhcGVfMSA9IGIuYXNtLnNnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9yZW1vdmVDaGlsZFNoYXBlQnlJbmRleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX3JlbW92ZUNoaWxkU2hhcGVCeUluZGV4XzEgPSBiLmFzbS50ZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2aSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbXBvdW5kU2hhcGVfZ2V0TnVtQ2hpbGRTaGFwZXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXROdW1DaGlsZFNoYXBlc18wID0gYi5hc20udWcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd2kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX2dldENoaWxkU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRDaGlsZFNoYXBlXzEgPSBiLmFzbS52ZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4aSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbXBvdW5kU2hhcGVfdXBkYXRlQ2hpbGRUcmFuc2Zvcm1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV91cGRhdGVDaGlsZFRyYW5zZm9ybV8yID0gYi5hc20ud2cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX3VwZGF0ZUNoaWxkVHJhbnNmb3JtXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5aSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbXBvdW5kU2hhcGVfdXBkYXRlQ2hpbGRUcmFuc2Zvcm1fMyA9IGIuYXNtLnhnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHppID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHppID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLnlnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRNYXJnaW5fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRNYXJnaW5fMCA9IGIuYXNtLnpnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLkFnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLkJnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLkNnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVpID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29tcG91bmRTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb21wb3VuZFNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5EZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrXzIgPSBiLmFzbS5FZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBiLmFzbS5GZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29udmV4RnJvbVdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29udmV4RnJvbVdvcmxkXzAgPSBiLmFzbS5HZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29udmV4RnJvbVdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29udmV4RnJvbVdvcmxkXzEgPSBiLmFzbS5IZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29udmV4VG9Xb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbnZleFRvV29ybGRfMCA9IGIuYXNtLklnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jb252ZXhUb1dvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29udmV4VG9Xb3JsZF8xID0gYi5hc20uSmcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2hpdE5vcm1hbFdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0Tm9ybWFsV29ybGRfMCA9IGIuYXNtLktnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1pID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9oaXROb3JtYWxXb3JsZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2hpdE5vcm1hbFdvcmxkXzEgPSBiLmFzbS5MZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0UG9pbnRXb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2hpdFBvaW50V29ybGRfMCA9IGIuYXNtLk1nKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9pID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9oaXRQb2ludFdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21faGl0UG9pbnRXb3JsZF8xID0gYi5hc20uTmcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMCA9IGIuYXNtLk9nKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS5QZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGIuYXNtLlFnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18xID0gYi5hc20uUmcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVGkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gYi5hc20uU2cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVWkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gYi5hc20uVGcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdENvbnZleFJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0Q29udmV4UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGIuYXNtLlVnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfMiA9IGIuYXNtLlZnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19oYXNIaXRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19oYXNIaXRfMCA9IGIuYXNtLldnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlpID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19nZXRfbV9jb2xsaXNpb25PYmplY3RzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uT2JqZWN0c18wID0gYi5hc20uWGcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWmkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdHNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFppID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25PYmplY3RzXzEgPSBiLmFzbS5ZZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5RnJvbVdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkaSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5RnJvbVdvcmxkXzAgPSBiLmFzbS5aZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5RnJvbVdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5RnJvbVdvcmxkXzEgPSBiLmFzbS5fZykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5VG9Xb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX3JheVRvV29ybGRfMCA9IGIuYXNtLiRnKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9yYXlUb1dvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5VG9Xb3JsZF8xID0gYi5hc20uYWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdE5vcm1hbFdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0Tm9ybWFsV29ybGRfMCA9IGIuYXNtLmJoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9oaXROb3JtYWxXb3JsZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2hpdE5vcm1hbFdvcmxkXzEgPSBiLmFzbS5jaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0UG9pbnRXb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdFBvaW50V29ybGRfMCA9IGIuYXNtLmRoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGdqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9oaXRQb2ludFdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChnaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21faGl0UG9pbnRXb3JsZF8xID0gYi5hc20uZWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdEZyYWN0aW9uc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdEZyYWN0aW9uc18wID0gYi5hc20uZmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2hpdEZyYWN0aW9uc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2hpdEZyYWN0aW9uc18xID0gYi5hc20uZ2gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgamogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMCA9IGIuYXNtLmhoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoa2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS5paCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGIuYXNtLmpoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1qID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FsbEhpdHNSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18xID0gYi5hc20ua2gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gYi5hc20ubGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gYi5hc20ubWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gYi5hc20ubmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gYi5hc20ub2gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChyaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbGxIaXRzUmF5UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGIuYXNtLnBoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNqID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RNYXRlcmlhbEFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNqID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RNYXRlcmlhbEFycmF5X3NpemVfMCA9IGIuYXNtLnFoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRqID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RNYXRlcmlhbEFycmF5X2F0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0aiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90TWF0ZXJpYWxBcnJheV9hdF8xID0gYi5hc20ucmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfdE1hdGVyaWFsQXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RNYXRlcmlhbEFycmF5X19fZGVzdHJveV9fXzAgPSBiLmFzbS5zaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2aiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRWZWhpY2xlUmF5Y2FzdGVyX2J0RGVmYXVsdFZlaGljbGVSYXljYXN0ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFZlaGljbGVSYXljYXN0ZXJfYnREZWZhdWx0VmVoaWNsZVJheWNhc3Rlcl8xID0gYi5hc20udGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0VmVoaWNsZVJheWNhc3Rlcl9jYXN0UmF5XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3aiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRWZWhpY2xlUmF5Y2FzdGVyX2Nhc3RSYXlfMyA9IGIuYXNtLnVoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFZlaGljbGVSYXljYXN0ZXJfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFZlaGljbGVSYXljYXN0ZXJfX19kZXN0cm95X19fMCA9IGIuYXNtLnZoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHlqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9idEVtcHR5U2hhcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHlqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9idEVtcHR5U2hhcGVfMCA9IGIuYXNtLndoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLnhoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEFqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLnloKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLnpoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RW1wdHlTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRFbXB0eVNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5BaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0cmFpbnRTZXR0aW5nX2J0Q29uc3RyYWludFNldHRpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfYnRDb25zdHJhaW50U2V0dGluZ18wID0gYi5hc20uQmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19nZXRfbV90YXVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfZ2V0X21fdGF1XzAgPSBiLmFzbS5DaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0cmFpbnRTZXR0aW5nX3NldF9tX3RhdV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19zZXRfbV90YXVfMSA9IGIuYXNtLkRoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfZ2V0X21fZGFtcGluZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19nZXRfbV9kYW1waW5nXzAgPSBiLmFzbS5FaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0cmFpbnRTZXR0aW5nX3NldF9tX2RhbXBpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfc2V0X21fZGFtcGluZ18xID0gYi5hc20uRmgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19nZXRfbV9pbXB1bHNlQ2xhbXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfZ2V0X21faW1wdWxzZUNsYW1wXzAgPSBiLmFzbS5HaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0cmFpbnRTZXR0aW5nX3NldF9tX2ltcHVsc2VDbGFtcF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U2V0dGluZ19zZXRfbV9pbXB1bHNlQ2xhbXBfMSA9IGIuYXNtLkhoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNldHRpbmdfX19kZXN0cm95X19fMCA9IGIuYXNtLkloKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsU2hhcGVJbmZvX2dldF9tX3NoYXBlUGFydF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fZ2V0X21fc2hhcGVQYXJ0XzAgPSBiLmFzbS5KaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbFNoYXBlSW5mb19zZXRfbV9zaGFwZVBhcnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1qID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsU2hhcGVJbmZvX3NldF9tX3NoYXBlUGFydF8xID0gYi5hc20uS2gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fZ2V0X21fdHJpYW5nbGVJbmRleF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fZ2V0X21fdHJpYW5nbGVJbmRleF8wID0gYi5hc20uTGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fc2V0X21fdHJpYW5nbGVJbmRleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fc2V0X21fdHJpYW5nbGVJbmRleF8xID0gYi5hc20uTWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxTaGFwZUluZm9fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBqID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsU2hhcGVJbmZvX19fZGVzdHJveV9fXzAgPSBiLmFzbS5OaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9idFJpZ2lkQm9keV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYnRSaWdpZEJvZHlfMSA9IGIuYXNtLk9oKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldENlbnRlck9mTWFzc1RyYW5zZm9ybV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0Q2VudGVyT2ZNYXNzVHJhbnNmb3JtXzAgPSBiLmFzbS5QaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDZW50ZXJPZk1hc3NUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldENlbnRlck9mTWFzc1RyYW5zZm9ybV8xID0gYi5hc20uUWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0U2xlZXBpbmdUaHJlc2hvbGRzXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRTbGVlcGluZ1RocmVzaG9sZHNfMiA9IGIuYXNtLlJoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldExpbmVhckRhbXBpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldExpbmVhckRhbXBpbmdfMCA9IGIuYXNtLlNoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEFuZ3VsYXJEYW1waW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRBbmd1bGFyRGFtcGluZ18wID0gYi5hc20uVGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0RGFtcGluZ18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0RGFtcGluZ18yID0gYi5hc20uVWgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWGogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0TWFzc1Byb3BzXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRNYXNzUHJvcHNfMiA9IGIuYXNtLlZoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldExpbmVhckZhY3Rvcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWWogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0TGluZWFyRmFjdG9yXzAgPSBiLmFzbS5XaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaaiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRMaW5lYXJGYWN0b3JfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFpqID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldExpbmVhckZhY3Rvcl8xID0gYi5hc20uWGgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlUb3JxdWVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGFrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5VG9ycXVlXzEgPSBiLmFzbS5ZaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBiayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUxvY2FsVG9ycXVlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChiayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUxvY2FsVG9ycXVlXzEgPSBiLmFzbS5aaCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUZvcmNlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUZvcmNlXzIgPSBiLmFzbS5faCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUNlbnRyYWxGb3JjZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlDZW50cmFsRm9yY2VfMSA9IGIuYXNtLiRoKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5Q2VudHJhbExvY2FsRm9yY2VfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5Q2VudHJhbExvY2FsRm9yY2VfMSA9IGIuYXNtLmFpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5VG9ycXVlSW1wdWxzZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlUb3JxdWVJbXB1bHNlXzEgPSBiLmFzbS5iaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUltcHVsc2VfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5SW1wdWxzZV8yID0gYi5hc20uY2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlDZW50cmFsSW1wdWxzZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYXBwbHlDZW50cmFsSW1wdWxzZV8xID0gYi5hc20uZGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfdXBkYXRlSW5lcnRpYVRlbnNvcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfdXBkYXRlSW5lcnRpYVRlbnNvcl8wID0gYi5hc20uZWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgamsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0TGluZWFyVmVsb2NpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGprID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldExpbmVhclZlbG9jaXR5XzAgPSBiLmFzbS5maSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRBbmd1bGFyVmVsb2NpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEFuZ3VsYXJWZWxvY2l0eV8wID0gYi5hc20uZ2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0TGluZWFyVmVsb2NpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldExpbmVhclZlbG9jaXR5XzEgPSBiLmFzbS5oaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRBbmd1bGFyVmVsb2NpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG1rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEFuZ3VsYXJWZWxvY2l0eV8xID0gYi5hc20uaWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0TW90aW9uU3RhdGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldE1vdGlvblN0YXRlXzAgPSBiLmFzbS5qaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRNb3Rpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0TW90aW9uU3RhdGVfMSA9IGIuYXNtLmtpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEFuZ3VsYXJGYWN0b3JfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHBrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEFuZ3VsYXJGYWN0b3JfMCA9IGIuYXNtLmxpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEFuZ3VsYXJGYWN0b3JfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEFuZ3VsYXJGYWN0b3JfMSA9IGIuYXNtLm1pKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3VwY2FzdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfdXBjYXN0XzEgPSBiLmFzbS5uaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRBYWJiXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChzayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRBYWJiXzIgPSBiLmFzbS5vaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0ayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hcHBseUdyYXZpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FwcGx5R3Jhdml0eV8wID0gYi5hc20ucGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0R3Jhdml0eV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0R3Jhdml0eV8wID0gYi5hc20ucWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0R3Jhdml0eV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0R3Jhdml0eV8xID0gYi5hc20ucmkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0QnJvYWRwaGFzZVByb3h5XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3ayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRCcm9hZHBoYXNlUHJveHlfMCA9IGIuYXNtLnNpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2NsZWFyRm9yY2VzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4ayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9jbGVhckZvcmNlc18wID0gYi5hc20udGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gYi5hc20udWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgemsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0Q29sbGlzaW9uU2hhcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHprID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldENvbGxpc2lvblNoYXBlXzAgPSBiLmFzbS52aSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGRfMSA9IGIuYXNtLndpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEFjdGl2YXRpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0QWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS54aSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9mb3JjZUFjdGl2YXRpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZm9yY2VBY3RpdmF0aW9uU3RhdGVfMSA9IGIuYXNtLnlpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FjdGl2YXRlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9hY3RpdmF0ZV8wID0gYi5hc20uemkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfYWN0aXZhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEVrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2FjdGl2YXRlXzEgPSBiLmFzbS5BaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9pc0FjdGl2ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfaXNBY3RpdmVfMCA9IGIuYXNtLkJpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2lzS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9pc0tpbmVtYXRpY09iamVjdF8wID0gYi5hc20uQ2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfaXNTdGF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2lzU3RhdGljT2JqZWN0XzAgPSBiLmFzbS5EaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0XzAgPSBiLmFzbS5FaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRSZXN0aXR1dGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0UmVzdGl0dXRpb25fMCA9IGIuYXNtLkZpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEZyaWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRGcmljdGlvbl8wID0gYi5hc20uR2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRSb2xsaW5nRnJpY3Rpb25fMCA9IGIuYXNtLkhpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldFJlc3RpdHV0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRSZXN0aXR1dGlvbl8xID0gYi5hc20uSWkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0RnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldEZyaWN0aW9uXzEgPSBiLmFzbS5KaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9rID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldFJvbGxpbmdGcmljdGlvbl8xID0gYi5hc20uS2kpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldFdvcmxkVHJhbnNmb3JtXzAgPSBiLmFzbS5MaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9nZXRDb2xsaXNpb25GbGFnc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGIuYXNtLk1pKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldENvbGxpc2lvbkZsYWdzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDb2xsaXNpb25GbGFnc18xID0gYi5hc20uTmkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS5PaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDb2xsaXNpb25TaGFwZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVGsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGIuYXNtLlBpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0Q2NkTW90aW9uVGhyZXNob2xkXzEgPSBiLmFzbS5RaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXNfMSA9IGIuYXNtLlJpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldFVzZXJJbmRleF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2sgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0VXNlckluZGV4XzAgPSBiLmFzbS5TaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRVc2VySW5kZXhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X3NldFVzZXJJbmRleF8xID0gYi5hc20uVGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWWsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfZ2V0VXNlclBvaW50ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFlrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldFVzZXJQb2ludGVyXzAgPSBiLmFzbS5VaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaayA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9zZXRVc2VyUG9pbnRlcl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmsgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSaWdpZEJvZHlfc2V0VXNlclBvaW50ZXJfMSA9IGIuYXNtLlZpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICRrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEJyb2FkcGhhc2VIYW5kbGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRrID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X2dldEJyb2FkcGhhc2VIYW5kbGVfMCA9IGIuYXNtLldpKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmlnaWRCb2R5X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJpZ2lkQm9keV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uWGkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaEFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW5kZXhlZE1lc2hBcnJheV9zaXplXzAgPSBiLmFzbS5ZaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEluZGV4ZWRNZXNoQXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW5kZXhlZE1lc2hBcnJheV9hdF8xID0gYi5hc20uWmkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaEFycmF5X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEluZGV4ZWRNZXNoQXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLl9pKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGJ2dEJyb2FkcGhhc2VfYnREYnZ0QnJvYWRwaGFzZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREYnZ0QnJvYWRwaGFzZV9idERidnRCcm9hZHBoYXNlXzAgPSBiLmFzbS4kaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERidnRCcm9hZHBoYXNlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERidnRCcm9hZHBoYXNlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5haikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhlaWdodGZpZWxkVGVycmFpblNoYXBlX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfOSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV85ID0gYi5hc20uYmopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfc2V0TWFyZ2luXzEgPSBiLmFzbS5jaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhlaWdodGZpZWxkVGVycmFpblNoYXBlX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV9nZXRNYXJnaW5fMCA9IGIuYXNtLmRqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhlaWdodGZpZWxkVGVycmFpblNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uZWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5maikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhlaWdodGZpZWxkVGVycmFpblNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLmdqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG1sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLmhqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFNvZnRCb2R5U29sdmVyX2J0RGVmYXVsdFNvZnRCb2R5U29sdmVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChubCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRTb2Z0Qm9keVNvbHZlcl9idERlZmF1bHRTb2Z0Qm9keVNvbHZlcl8wID0gYi5hc20uaWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0U29mdEJvZHlTb2x2ZXJfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdFNvZnRCb2R5U29sdmVyX19fZGVzdHJveV9fXzAgPSBiLmFzbS5qaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfYnRDb2xsaXNpb25EaXNwYXRjaGVyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfYnRDb2xsaXNpb25EaXNwYXRjaGVyXzEgPSBiLmFzbS5raikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfZ2V0TnVtTWFuaWZvbGRzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfZ2V0TnVtTWFuaWZvbGRzXzAgPSBiLmFzbS5saikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBybCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfZ2V0TWFuaWZvbGRCeUluZGV4SW50ZXJuYWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uRGlzcGF0Y2hlcl9nZXRNYW5pZm9sZEJ5SW5kZXhJbnRlcm5hbF8xID0gYi5hc20ubWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25EaXNwYXRjaGVyX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChzbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbkRpc3BhdGNoZXJfX19kZXN0cm95X19fMCA9IGIuYXNtLm5qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfMiA9IGIuYXNtLm9qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfMyA9IGIuYXNtLnBqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfNCA9IGIuYXNtLnFqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfNSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19idEF4aXNTd2VlcDNfNSA9IGIuYXNtLnJqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHhsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QXhpc1N3ZWVwM19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRBeGlzU3dlZXAzX19fZGVzdHJveV9fXzAgPSBiLmFzbS5zaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5bCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5bCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzAgPSBiLmFzbS50aikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB6bCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX2J0U29mdEJvZHlXb3JsZEluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fYnRTb2Z0Qm9keVdvcmxkSW5mb18wID0gYi5hc20udWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfYWlyX2RlbnNpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X2Fpcl9kZW5zaXR5XzAgPSBiLmFzbS52aikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF9haXJfZGVuc2l0eV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19zZXRfYWlyX2RlbnNpdHlfMSA9IGIuYXNtLndqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X3dhdGVyX2RlbnNpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X3dhdGVyX2RlbnNpdHlfMCA9IGIuYXNtLnhqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIERsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X3dhdGVyX2RlbnNpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X3dhdGVyX2RlbnNpdHlfMSA9IGIuYXNtLnlqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X3dhdGVyX29mZnNldF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfd2F0ZXJfb2Zmc2V0XzAgPSBiLmFzbS56aikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF93YXRlcl9vZmZzZXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X3dhdGVyX29mZnNldF8xID0gYi5hc20uQWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfbV9tYXhEaXNwbGFjZW1lbnRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X21fbWF4RGlzcGxhY2VtZW50XzAgPSBiLmFzbS5CaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF9tX21heERpc3BsYWNlbWVudF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19zZXRfbV9tYXhEaXNwbGFjZW1lbnRfMSA9IGIuYXNtLkNqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X3dhdGVyX25vcm1hbF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfd2F0ZXJfbm9ybWFsXzAgPSBiLmFzbS5EaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF93YXRlcl9ub3JtYWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X3dhdGVyX25vcm1hbF8xID0gYi5hc20uRWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfbV9icm9hZHBoYXNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX2dldF9tX2Jyb2FkcGhhc2VfMCA9IGIuYXNtLkZqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X21fYnJvYWRwaGFzZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19zZXRfbV9icm9hZHBoYXNlXzEgPSBiLmFzbS5HaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX2dldF9tX2Rpc3BhdGNoZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X21fZGlzcGF0Y2hlcl8wID0gYi5hc20uSGopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19zZXRfbV9kaXNwYXRjaGVyXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChObCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF9tX2Rpc3BhdGNoZXJfMSA9IGIuYXNtLklqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9sID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fZ2V0X21fZ3Jhdml0eV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19nZXRfbV9ncmF2aXR5XzAgPSBiLmFzbS5KaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5V29ybGRJbmZvX3NldF9tX2dyYXZpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlXb3JsZEluZm9fc2V0X21fZ3Jhdml0eV8xID0gYi5hc20uS2opLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVdvcmxkSW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20uTGopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2J0Q29uZVR3aXN0Q29uc3RyYWludF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2J0Q29uZVR3aXN0Q29uc3RyYWludF8yID0gYi5hc20uTWopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2J0Q29uZVR3aXN0Q29uc3RyYWludF80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2J0Q29uZVR3aXN0Q29uc3RyYWludF80ID0gYi5hc20uTmopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldExpbWl0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TGltaXRfMiA9IGIuYXNtLk9qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9zZXRBbmd1bGFyT25seV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldEFuZ3VsYXJPbmx5XzEgPSBiLmFzbS5QaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0RGFtcGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldERhbXBpbmdfMSA9IGIuYXNtLlFqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9lbmFibGVNb3Rvcl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV2wgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2VuYWJsZU1vdG9yXzEgPSBiLmFzbS5SaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TWF4TW90b3JJbXB1bHNlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TWF4TW90b3JJbXB1bHNlXzEgPSBiLmFzbS5TaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TWF4TW90b3JJbXB1bHNlTm9ybWFsaXplZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWWwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldE1heE1vdG9ySW1wdWxzZU5vcm1hbGl6ZWRfMSA9IGIuYXNtLlRqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFpsID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9zZXRNb3RvclRhcmdldF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWmwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldE1vdG9yVGFyZ2V0XzEgPSBiLmFzbS5VaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkbCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0TW90b3JUYXJnZXRJbkNvbnN0cmFpbnRTcGFjZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJGwgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldE1vdG9yVGFyZ2V0SW5Db25zdHJhaW50U3BhY2VfMSA9IGIuYXNtLlZqKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X2VuYWJsZUZlZWRiYWNrXzEgPSBiLmFzbS5XaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBibSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChibSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5YaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzEgPSBiLmFzbS5ZaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9nZXRQYXJhbV8yID0gYi5hc20uWmopLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X3NldFBhcmFtXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLl9qKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVR3aXN0Q29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lVHdpc3RDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBiLmFzbS4kaikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9idEhpbmdlQ29uc3RyYWludF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfYnRIaW5nZUNvbnN0cmFpbnRfMiA9IGIuYXNtLmFrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2J0SGluZ2VDb25zdHJhaW50XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChobSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9idEhpbmdlQ29uc3RyYWludF8zID0gYi5hc20uYmspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfYnRIaW5nZUNvbnN0cmFpbnRfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGltID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2J0SGluZ2VDb25zdHJhaW50XzQgPSBiLmFzbS5jaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9idEhpbmdlQ29uc3RyYWludF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoam0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfYnRIaW5nZUNvbnN0cmFpbnRfNSA9IGIuYXNtLmRrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGttID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2J0SGluZ2VDb25zdHJhaW50XzYgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9idEhpbmdlQ29uc3RyYWludF82ID0gYi5hc20uZWspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfYnRIaW5nZUNvbnN0cmFpbnRfNyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2J0SGluZ2VDb25zdHJhaW50XzcgPSBiLmFzbS5maykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRMaW1pdF80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfc2V0TGltaXRfNCA9IGIuYXNtLmdrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5tID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldExpbWl0XzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChubSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRMaW1pdF81ID0gYi5hc20uaGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZW5hYmxlQW5ndWxhck1vdG9yXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9lbmFibGVBbmd1bGFyTW90b3JfMyA9IGIuYXNtLmlrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldEFuZ3VsYXJPbmx5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRBbmd1bGFyT25seV8xID0gYi5hc20uamspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZW5hYmxlTW90b3JfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2VuYWJsZU1vdG9yXzEgPSBiLmFzbS5raykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBybSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRNYXhNb3RvckltcHVsc2VfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldE1heE1vdG9ySW1wdWxzZV8xID0gYi5hc20ubGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfc2V0TW90b3JUYXJnZXRfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldE1vdG9yVGFyZ2V0XzIgPSBiLmFzbS5taykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0bSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLm5rKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5vaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3bSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20ucGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5xaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5bSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRIaW5nZUNvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLnJrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHptID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SGluZ2VDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6bSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEhpbmdlQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uc2spLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2J0Q29uZVNoYXBlWl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2J0Q29uZVNoYXBlWl8yID0gYi5hc20udGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20udWspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2dldExvY2FsU2NhbGluZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20udmspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gYi5hc20ud2spLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVaX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVTaGFwZVpfX19kZXN0cm95X19fMCA9IGIuYXNtLnhrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9idENvbmVTaGFwZVhfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9idENvbmVTaGFwZVhfMiA9IGIuYXNtLnlrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLnprKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEhtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLkFrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEltID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEltID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLkJrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEptID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uZVNoYXBlWF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25lU2hhcGVYX19fZGVzdHJveV9fXzAgPSBiLmFzbS5DaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9idFRyaWFuZ2xlTWVzaF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfYnRUcmlhbmdsZU1lc2hfMCA9IGIuYXNtLkRrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX2J0VHJpYW5nbGVNZXNoXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9idFRyaWFuZ2xlTWVzaF8xID0gYi5hc20uRWspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfYnRUcmlhbmdsZU1lc2hfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1tID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX2J0VHJpYW5nbGVNZXNoXzIgPSBiLmFzbS5GaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBObSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9hZGRUcmlhbmdsZV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfYWRkVHJpYW5nbGVfMyA9IGIuYXNtLkdrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9tID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX2FkZFRyaWFuZ2xlXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9hZGRUcmlhbmdsZV80ID0gYi5hc20uSGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfZmluZE9yQWRkVmVydGV4XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9maW5kT3JBZGRWZXJ0ZXhfMiA9IGIuYXNtLklrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX2FkZEluZGV4XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyaWFuZ2xlTWVzaF9hZGRJbmRleF8xID0gYi5hc20uSmspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfZ2V0SW5kZXhlZE1lc2hBcnJheV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfZ2V0SW5kZXhlZE1lc2hBcnJheV8wID0gYi5hc20uS2spLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfc2V0U2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfc2V0U2NhbGluZ18xID0gYi5hc20uTGspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmlhbmdsZU1lc2hfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFRtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJpYW5nbGVNZXNoX19fZGVzdHJveV9fXzAgPSBiLmFzbS5NaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9idENvbnZleEh1bGxTaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVW0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfYnRDb252ZXhIdWxsU2hhcGVfMCA9IGIuYXNtLk5rKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2J0Q29udmV4SHVsbFNoYXBlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9idENvbnZleEh1bGxTaGFwZV8xID0gYi5hc20uT2spLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV20gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfYnRDb252ZXhIdWxsU2hhcGVfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2J0Q29udmV4SHVsbFNoYXBlXzIgPSBiLmFzbS5QaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9hZGRQb2ludF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfYWRkUG9pbnRfMSA9IGIuYXNtLlFrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFltID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2FkZFBvaW50XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZbSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9hZGRQb2ludF8yID0gYi5hc20uUmspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWm0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfc2V0TWFyZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChabSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9zZXRNYXJnaW5fMSA9IGIuYXNtLlNrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICRtID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJG0gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfZ2V0TWFyZ2luXzAgPSBiLmFzbS5UaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9nZXROdW1WZXJ0aWNlc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfZ2V0TnVtVmVydGljZXNfMCA9IGIuYXNtLlVrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2luaXRpYWxpemVQb2x5aGVkcmFsRmVhdHVyZXNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2luaXRpYWxpemVQb2x5aGVkcmFsRmVhdHVyZXNfMSA9IGIuYXNtLlZrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX3JlY2FsY0xvY2FsQWFiYl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoY24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfcmVjYWxjTG9jYWxBYWJiXzAgPSBiLmFzbS5XaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9nZXRDb252ZXhQb2x5aGVkcm9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9nZXRDb252ZXhQb2x5aGVkcm9uXzAgPSBiLmFzbS5YaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uWWspLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLlprKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGduID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4SHVsbFNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5faykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBobiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleEh1bGxTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhIdWxsU2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLiRrKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19idFZlaGljbGVUdW5pbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19idFZlaGljbGVUdW5pbmdfMCA9IGIuYXNtLmFsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18wID0gYi5hc20uYmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlVHVuaW5nX3NldF9tX3N1c3BlbnNpb25TdGlmZm5lc3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzXzEgPSBiLmFzbS5jbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfZ2V0X21fc3VzcGVuc2lvbkNvbXByZXNzaW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfZ2V0X21fc3VzcGVuc2lvbkNvbXByZXNzaW9uXzAgPSBiLmFzbS5kbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBubiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfc2V0X21fc3VzcGVuc2lvbkNvbXByZXNzaW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChubiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfc2V0X21fc3VzcGVuc2lvbkNvbXByZXNzaW9uXzEgPSBiLmFzbS5lbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfZ2V0X21fc3VzcGVuc2lvbkRhbXBpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9uID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9zdXNwZW5zaW9uRGFtcGluZ18wID0gYi5hc20uZmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlVHVuaW5nX3NldF9tX3N1c3BlbnNpb25EYW1waW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVUdW5pbmdfc2V0X21fc3VzcGVuc2lvbkRhbXBpbmdfMSA9IGIuYXNtLmdsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMCA9IGIuYXNtLmhsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMSA9IGIuYXNtLmlsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGIuYXNtLmpsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9mcmljdGlvblNsaXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHRuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9mcmljdGlvblNsaXBfMSA9IGIuYXNtLmtsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGIuYXNtLmxsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVR1bmluZ19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGIuYXNtLm1sKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHduID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0V3JhcHBlcl9nZXRXb3JsZFRyYW5zZm9ybV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAod24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb2xsaXNpb25PYmplY3RXcmFwcGVyX2dldFdvcmxkVHJhbnNmb3JtXzAgPSBiLmFzbS5ubCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4biA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdFdyYXBwZXJfZ2V0Q29sbGlzaW9uT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4biA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdFdyYXBwZXJfZ2V0Q29sbGlzaW9uT2JqZWN0XzAgPSBiLmFzbS5vbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5biA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbGxpc2lvbk9iamVjdFdyYXBwZXJfZ2V0Q29sbGlzaW9uU2hhcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHluID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29sbGlzaW9uT2JqZWN0V3JhcHBlcl9nZXRDb2xsaXNpb25TaGFwZV8wID0gYi5hc20ucGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgem4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTaGFwZUh1bGxfYnRTaGFwZUh1bGxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2hhcGVIdWxsX2J0U2hhcGVIdWxsXzEgPSBiLmFzbS5xbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNoYXBlSHVsbF9idWlsZEh1bGxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2hhcGVIdWxsX2J1aWxkSHVsbF8xID0gYi5hc20ucmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTaGFwZUh1bGxfbnVtVmVydGljZXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2hhcGVIdWxsX251bVZlcnRpY2VzXzAgPSBiLmFzbS5zbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNoYXBlSHVsbF9nZXRWZXJ0ZXhQb2ludGVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNoYXBlSHVsbF9nZXRWZXJ0ZXhQb2ludGVyXzAgPSBiLmFzbS50bCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNoYXBlSHVsbF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTaGFwZUh1bGxfX19kZXN0cm95X19fMCA9IGIuYXNtLnVsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX2J0RGVmYXVsdE1vdGlvblN0YXRlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9idERlZmF1bHRNb3Rpb25TdGF0ZV8wID0gYi5hc20udmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0TW90aW9uU3RhdGVfYnREZWZhdWx0TW90aW9uU3RhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX2J0RGVmYXVsdE1vdGlvblN0YXRlXzEgPSBiLmFzbS53bCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9idERlZmF1bHRNb3Rpb25TdGF0ZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0TW90aW9uU3RhdGVfYnREZWZhdWx0TW90aW9uU3RhdGVfMiA9IGIuYXNtLnhsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX2dldFdvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9nZXRXb3JsZFRyYW5zZm9ybV8xID0gYi5hc20ueWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0TW90aW9uU3RhdGVfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEluID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX3NldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS56bCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9nZXRfbV9ncmFwaGljc1dvcmxkVHJhbnNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX2dldF9tX2dyYXBoaWNzV29ybGRUcmFuc18wID0gYi5hc20uQWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0TW90aW9uU3RhdGVfc2V0X21fZ3JhcGhpY3NXb3JsZFRyYW5zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9zZXRfbV9ncmFwaGljc1dvcmxkVHJhbnNfMSA9IGIuYXNtLkJsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdE1vdGlvblN0YXRlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRNb3Rpb25TdGF0ZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uQ2wpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fYnRXaGVlbEluZm9fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE1uID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2J0V2hlZWxJbmZvXzEgPSBiLmFzbS5EbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBObiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRTdXNwZW5zaW9uUmVzdExlbmd0aF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0U3VzcGVuc2lvblJlc3RMZW5ndGhfMCA9IGIuYXNtLkVsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9uID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3VwZGF0ZVdoZWVsXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb191cGRhdGVXaGVlbF8yID0gYi5hc20uRmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18wID0gYi5hc20uR2wpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc3VzcGVuc2lvblN0aWZmbmVzc18xID0gYi5hc20uSGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fZnJpY3Rpb25TbGlwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9mcmljdGlvblNsaXBfMCA9IGIuYXNtLklsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFNuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2ZyaWN0aW9uU2xpcF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fZnJpY3Rpb25TbGlwXzEgPSBiLmFzbS5KbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9lbmdpbmVGb3JjZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fZW5naW5lRm9yY2VfMCA9IGIuYXNtLktsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2VuZ2luZUZvcmNlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9lbmdpbmVGb3JjZV8xID0gYi5hc20uTGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fcm9sbEluZmx1ZW5jZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVm4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fcm9sbEluZmx1ZW5jZV8wID0gYi5hc20uTWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fcm9sbEluZmx1ZW5jZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV24gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fcm9sbEluZmx1ZW5jZV8xID0gYi5hc20uTmwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGgxXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9zdXNwZW5zaW9uUmVzdExlbmd0aDFfMCA9IGIuYXNtLk9sKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFluID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3N1c3BlbnNpb25SZXN0TGVuZ3RoMV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWW4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGgxXzEgPSBiLmFzbS5QbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBabiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV93aGVlbHNSYWRpdXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFpuID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3doZWVsc1JhZGl1c18wID0gYi5hc20uUWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJG4gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxzUmFkaXVzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkbiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93aGVlbHNSYWRpdXNfMSA9IGIuYXNtLlJsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ0NvbXByZXNzaW9uXzAgPSBiLmFzbS5TbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBibyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93aGVlbHNEYW1waW5nQ29tcHJlc3Npb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbl8xID0gYi5hc20uVGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3doZWVsc0RhbXBpbmdSZWxheGF0aW9uXzAgPSBiLmFzbS5VbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93aGVlbHNEYW1waW5nUmVsYXhhdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb25fMSA9IGIuYXNtLlZsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3N0ZWVyaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9zdGVlcmluZ18wID0gYi5hc20uV2wpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc3RlZXJpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3N0ZWVyaW5nXzEgPSBiLmFzbS5YbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBobyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX21heFN1c3BlbnNpb25Gb3JjZV8wID0gYi5hc20uWWwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fbWF4U3VzcGVuc2lvbkZvcmNlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2VfMSA9IGIuYXNtLlpsKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX21heFN1c3BlbnNpb25UcmF2ZWxDbV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoam8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtXzAgPSBiLmFzbS5fbCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ21fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX21heFN1c3BlbnNpb25UcmF2ZWxDbV8xID0gYi5hc20uJGwpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxzU3VzcGVuc2lvbkZvcmNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChsbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV93aGVlbHNTdXNwZW5zaW9uRm9yY2VfMCA9IGIuYXNtLmFtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1vID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3doZWVsc1N1c3BlbnNpb25Gb3JjZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxzU3VzcGVuc2lvbkZvcmNlXzEgPSBiLmFzbS5ibSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBubyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9iSXNGcm9udFdoZWVsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChubyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9iSXNGcm9udFdoZWVsXzAgPSBiLmFzbS5jbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9iSXNGcm9udFdoZWVsXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9iSXNGcm9udFdoZWVsXzEgPSBiLmFzbS5kbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9yYXljYXN0SW5mb18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fcmF5Y2FzdEluZm9fMCA9IGIuYXNtLmVtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3JheWNhc3RJbmZvXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9yYXljYXN0SW5mb18xID0gYi5hc20uZm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25Qb2ludENTXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChybyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9jaGFzc2lzQ29ubmVjdGlvblBvaW50Q1NfMCA9IGIuYXNtLmdtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2NoYXNzaXNDb25uZWN0aW9uUG9pbnRDU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25Qb2ludENTXzEgPSBiLmFzbS5obSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0byA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV93b3JsZFRyYW5zZm9ybV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd29ybGRUcmFuc2Zvcm1fMCA9IGIuYXNtLmltKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3dvcmxkVHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1byA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93b3JsZFRyYW5zZm9ybV8xID0gYi5hc20uam0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxEaXJlY3Rpb25DU18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxEaXJlY3Rpb25DU18wID0gYi5hc20ua20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxEaXJlY3Rpb25DU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAod28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxEaXJlY3Rpb25DU18xID0gYi5hc20ubG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fd2hlZWxBeGxlQ1NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3doZWVsQXhsZUNTXzAgPSBiLmFzbS5tbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5byA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV93aGVlbEF4bGVDU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fd2hlZWxBeGxlQ1NfMSA9IGIuYXNtLm5tKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3JvdGF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6byA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9yb3RhdGlvbl8wID0gYi5hc20ub20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fcm90YXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3JvdGF0aW9uXzEgPSBiLmFzbS5wbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9kZWx0YVJvdGF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9kZWx0YVJvdGF0aW9uXzAgPSBiLmFzbS5xbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9kZWx0YVJvdGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9kZWx0YVJvdGF0aW9uXzEgPSBiLmFzbS5ybSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9icmFrZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fYnJha2VfMCA9IGIuYXNtLnNtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2JyYWtlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9icmFrZV8xID0gYi5hc20udG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9jbGlwcGVkSW52Q29udGFjdERvdFN1c3BlbnNpb25fMCA9IGIuYXNtLnVtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEdvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX2NsaXBwZWRJbnZDb250YWN0RG90U3VzcGVuc2lvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uXzEgPSBiLmFzbS52bSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19nZXRfbV9zdXNwZW5zaW9uUmVsYXRpdmVWZWxvY2l0eV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc3VzcGVuc2lvblJlbGF0aXZlVmVsb2NpdHlfMCA9IGIuYXNtLndtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX3NldF9tX3N1c3BlbnNpb25SZWxhdGl2ZVZlbG9jaXR5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9zdXNwZW5zaW9uUmVsYXRpdmVWZWxvY2l0eV8xID0gYi5hc20ueG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fZ2V0X21fc2tpZEluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEpvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX2dldF9tX3NraWRJbmZvXzAgPSBiLmFzbS55bSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19zZXRfbV9za2lkSW5mb18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRXaGVlbEluZm9fc2V0X21fc2tpZEluZm9fMSA9IGIuYXNtLnptKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIExvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0V2hlZWxJbmZvX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFdoZWVsSW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20uQW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF8wID0gYi5hc20uQm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF80ID0gYi5hc20uQ20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3dfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9vID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF93XzAgPSBiLmFzbS5EbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfc2V0VmFsdWVfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFBvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF9zZXRWYWx1ZV80ID0gYi5hc20uRW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2xlbmd0aF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2xlbmd0aF8wID0gYi5hc20uRm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3hfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF94XzAgPSBiLmFzbS5HbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfeV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU28gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3lfMCA9IGIuYXNtLkhtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF96XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfel8wID0gYi5hc20uSW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3NldFhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF9zZXRYXzEgPSBiLmFzbS5KbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfc2V0WV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3NldFlfMSA9IGIuYXNtLkttKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdvID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF9zZXRaXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXbyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfc2V0Wl8xID0gYi5hc20uTG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X25vcm1hbGl6ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X25vcm1hbGl6ZV8wID0gYi5hc20uTW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3JvdGF0ZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWW8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X3JvdGF0ZV8yID0gYi5hc20uTm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2RvdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWm8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2RvdF8xID0gYi5hc20uT20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX211bF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJG8gPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX211bF8xID0gYi5hc20uUG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX2FkZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX2FkZF8xID0gYi5hc20uUW0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX3N1Yl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X29wX3N1Yl8xID0gYi5hc20uUm0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfX19kZXN0cm95X19fMCA9IGIuYXNtLlNtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RGVmYXVsdENvbGxpc2lvbkNvbnN0cnVjdGlvbkluZm9fYnREZWZhdWx0Q29sbGlzaW9uQ29uc3RydWN0aW9uSW5mb18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnREZWZhdWx0Q29sbGlzaW9uQ29uc3RydWN0aW9uSW5mb19idERlZmF1bHRDb2xsaXNpb25Db25zdHJ1Y3Rpb25JbmZvXzAgPSBiLmFzbS5UbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25zdHJ1Y3Rpb25JbmZvX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChlcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idERlZmF1bHRDb2xsaXNpb25Db25zdHJ1Y3Rpb25JbmZvX19fZGVzdHJveV9fXzAgPSBiLmFzbS5VbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fbm9kZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX25vZGVfMCA9IGIuYXNtLlZtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGdwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9ub2RlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChncCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3Jfc2V0X21fbm9kZV8xID0gYi5hc20uV20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2xvY2FsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChocCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fbG9jYWxfMCA9IGIuYXNtLlhtKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGlwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9sb2NhbF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2xvY2FsXzEgPSBiLmFzbS5ZbSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fYm9keV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoanAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2JvZHlfMCA9IGIuYXNtLlptKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9ib2R5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3Jfc2V0X21fYm9keV8xID0gYi5hc20uX20pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2luZmx1ZW5jZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2luZmx1ZW5jZV8wID0gYi5hc20uJG0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2luZmx1ZW5jZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2luZmx1ZW5jZV8xID0gYi5hc20uYW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2MwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChucCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fYzBfMCA9IGIuYXNtLmJuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG9wID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9jMF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2MwXzEgPSBiLmFzbS5jbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfZ2V0X21fYzFfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHBwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9nZXRfbV9jMV8wID0gYi5hc20uZG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX3NldF9tX2MxXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3Jfc2V0X21fYzFfMSA9IGIuYXNtLmVuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9nZXRfbV9jMl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX2dldF9tX2MyXzAgPSBiLmFzbS5mbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3Jfc2V0X21fYzJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNwID0gYi5fZW1zY3JpcHRlbl9iaW5kX0FuY2hvcl9zZXRfbV9jMl8xID0gYi5hc20uZ24pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQW5jaG9yX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9BbmNob3JfX19kZXN0cm95X19fMCA9IGIuYXNtLmhuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHVwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9nZXRfbV9oaXRQb2ludEluV29ybGRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9nZXRfbV9oaXRQb2ludEluV29ybGRfMCA9IGIuYXNtLmpuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9zZXRfbV9oaXRQb2ludEluV29ybGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9zZXRfbV9oaXRQb2ludEluV29ybGRfMSA9IGIuYXNtLmtuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9nZXRfbV9oaXROb3JtYWxJbldvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfZ2V0X21faGl0Tm9ybWFsSW5Xb3JsZF8wID0gYi5hc20ubG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWhpY2xlUmF5Y2FzdGVyUmVzdWx0X3NldF9tX2hpdE5vcm1hbEluV29ybGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHhwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9zZXRfbV9oaXROb3JtYWxJbldvcmxkXzEgPSBiLmFzbS5tbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfZ2V0X21fZGlzdEZyYWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfZ2V0X21fZGlzdEZyYWN0aW9uXzAgPSBiLmFzbS5ubikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB6cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfc2V0X21fZGlzdEZyYWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6cCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfc2V0X21fZGlzdEZyYWN0aW9uXzEgPSBiLmFzbS5vbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlaGljbGVSYXljYXN0ZXJSZXN1bHRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVoaWNsZVJheWNhc3RlclJlc3VsdF9fX2Rlc3Ryb3lfX18wID0gYi5hc20ucG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzQXJyYXlfc2l6ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzQXJyYXlfc2l6ZV8wID0gYi5hc20ucW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzQXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM0FycmF5X2F0XzEgPSBiLmFzbS5ybikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNBcnJheV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3IzQXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLnNuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RyYWludFNvbHZlcl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdHJhaW50U29sdmVyX19fZGVzdHJveV9fXzAgPSBiLmFzbS50bikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2J0UmF5Y2FzdFZlaGljbGVfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfYnRSYXljYXN0VmVoaWNsZV8zID0gYi5hc20udW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9hcHBseUVuZ2luZUZvcmNlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2FwcGx5RW5naW5lRm9yY2VfMiA9IGIuYXNtLnZuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfc2V0U3RlZXJpbmdWYWx1ZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRTdGVlcmluZ1ZhbHVlXzIgPSBiLmFzbS53bikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFdoZWVsVHJhbnNmb3JtV1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0V2hlZWxUcmFuc2Zvcm1XU18xID0gYi5hc20ueG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVXaGVlbFRyYW5zZm9ybV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVXaGVlbFRyYW5zZm9ybV8yID0gYi5hc20ueW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9hZGRXaGVlbF83ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9hZGRXaGVlbF83ID0gYi5hc20uem4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXROdW1XaGVlbHNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0TnVtV2hlZWxzXzAgPSBiLmFzbS5BbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFJpZ2lkQm9keV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRSaWdpZEJvZHlfMCA9IGIuYXNtLkJuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5wID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0V2hlZWxJbmZvXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFdoZWVsSW5mb18xID0gYi5hc20uQ24pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRCcmFrZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3AgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRCcmFrZV8yID0gYi5hc20uRG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRDb29yZGluYXRlU3lzdGVtXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3NldENvb3JkaW5hdGVTeXN0ZW1fMyA9IGIuYXNtLkVuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0Q3VycmVudFNwZWVkS21Ib3VyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldEN1cnJlbnRTcGVlZEttSG91cl8wID0gYi5hc20uRm4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRDaGFzc2lzV29ybGRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0Q2hhc3Npc1dvcmxkVHJhbnNmb3JtXzAgPSBiLmFzbS5HbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3JheUNhc3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFNwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfcmF5Q2FzdF8xID0gYi5hc20uSG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVWZWhpY2xlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3VwZGF0ZVZlaGljbGVfMSA9IGIuYXNtLkluKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfcmVzZXRTdXNwZW5zaW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3Jlc2V0U3VzcGVuc2lvbl8wID0gYi5hc20uSm4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRTdGVlcmluZ1ZhbHVlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFN0ZWVyaW5nVmFsdWVfMSA9IGIuYXNtLktuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1NfMSA9IGIuYXNtLkxuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1NfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1NfMiA9IGIuYXNtLk1uKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfc2V0UGl0Y2hDb250cm9sXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZcCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3NldFBpdGNoQ29udHJvbF8xID0gYi5hc20uTm4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWnAgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVTdXNwZW5zaW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChacCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3VwZGF0ZVN1c3BlbnNpb25fMSA9IGIuYXNtLk9uKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICRwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlRnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCRwID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlRnJpY3Rpb25fMSA9IGIuYXNtLlBuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0UmlnaHRBeGlzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFJpZ2h0QXhpc18wID0gYi5hc20uUW4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRVcEF4aXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0VXBBeGlzXzAgPSBiLmFzbS5SbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldEZvcndhcmRBeGlzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldEZvcndhcmRBeGlzXzAgPSBiLmFzbS5TbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldEZvcndhcmRWZWN0b3JfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0Rm9yd2FyZFZlY3Rvcl8wID0gYi5hc20uVG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9nZXRVc2VyQ29uc3RyYWludFR5cGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0VXNlckNvbnN0cmFpbnRUeXBlXzAgPSBiLmFzbS5VbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX3NldFVzZXJDb25zdHJhaW50VHlwZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRVc2VyQ29uc3RyYWludFR5cGVfMSA9IGIuYXNtLlZuKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGdxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfc2V0VXNlckNvbnN0cmFpbnRJZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV9zZXRVc2VyQ29uc3RyYWludElkXzEgPSBiLmFzbS5XbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBocSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX2dldFVzZXJDb25zdHJhaW50SWRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfZ2V0VXNlckNvbnN0cmFpbnRJZF8wID0gYi5hc20uWG4pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRSYXljYXN0VmVoaWNsZV91cGRhdGVBY3Rpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGlxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UmF5Y2FzdFZlaGljbGVfdXBkYXRlQWN0aW9uXzIgPSBiLmFzbS5ZbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFJheWNhc3RWZWhpY2xlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5abikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVYX2J0Q3lsaW5kZXJTaGFwZVhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfYnRDeWxpbmRlclNoYXBlWF8xID0gYi5hc20uX24pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWF9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfc2V0TWFyZ2luXzEgPSBiLmFzbS4kbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVYX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWF9nZXRNYXJnaW5fMCA9IGIuYXNtLmFvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5xID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChucSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVYX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uYm8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9xID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5jbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVYX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLmVvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHFxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHFxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVhfX19kZXN0cm95X19fMCA9IGIuYXNtLmZvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVpfYnRDeWxpbmRlclNoYXBlWl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9idEN5bGluZGVyU2hhcGVaXzEgPSBiLmFzbS5nbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVaX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9zZXRNYXJnaW5fMSA9IGIuYXNtLmhvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVpfZ2V0TWFyZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0cSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVaX2dldE1hcmdpbl8wID0gYi5hc20uaW8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVpfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5qbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2cSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVaX2dldExvY2FsU2NhbGluZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLmtvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHdxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q3lsaW5kZXJTaGFwZVpfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3cSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEN5bGluZGVyU2hhcGVaX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gYi5hc20ubG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDeWxpbmRlclNoYXBlWl9fX2Rlc3Ryb3lfX18wID0gYi5hc20ubW8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhQb2x5aGVkcm9uX2dldF9tX3ZlcnRpY2VzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5cSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFBvbHloZWRyb25fZ2V0X21fdmVydGljZXNfMCA9IGIuYXNtLm5vKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4UG9seWhlZHJvbl9zZXRfbV92ZXJ0aWNlc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoenEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhQb2x5aGVkcm9uX3NldF9tX3ZlcnRpY2VzXzEgPSBiLmFzbS5vbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFBvbHloZWRyb25fZ2V0X21fZmFjZXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4UG9seWhlZHJvbl9nZXRfbV9mYWNlc18wID0gYi5hc20ucG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhQb2x5aGVkcm9uX3NldF9tX2ZhY2VzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnZleFBvbHloZWRyb25fc2V0X21fZmFjZXNfMSA9IGIuYXNtLnFvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIENxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udmV4UG9seWhlZHJvbl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb252ZXhQb2x5aGVkcm9uX19fZGVzdHJveV9fXzAgPSBiLmFzbS5ybykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNlcXVlbnRpYWxJbXB1bHNlQ29uc3RyYWludFNvbHZlcl9idFNlcXVlbnRpYWxJbXB1bHNlQ29uc3RyYWludFNvbHZlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTZXF1ZW50aWFsSW1wdWxzZUNvbnN0cmFpbnRTb2x2ZXJfYnRTZXF1ZW50aWFsSW1wdWxzZUNvbnN0cmFpbnRTb2x2ZXJfMCA9IGIuYXNtLnNvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2VxdWVudGlhbEltcHVsc2VDb25zdHJhaW50U29sdmVyX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNlcXVlbnRpYWxJbXB1bHNlQ29uc3RyYWludFNvbHZlcl9fX2Rlc3Ryb3lfX18wID0gYi5hc20udG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfdEFuY2hvckFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9zaXplXzAgPSBiLmFzbS51bykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90QW5jaG9yQXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9hdF8xID0gYi5hc20udm8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfdEFuY2hvckFycmF5X2NsZWFyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90QW5jaG9yQXJyYXlfY2xlYXJfMCA9IGIuYXNtLndvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIElxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9wdXNoX2JhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9wdXNoX2JhY2tfMSA9IGIuYXNtLnhvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEpxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9wb3BfYmFja18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfdEFuY2hvckFycmF5X3BvcF9iYWNrXzAgPSBiLmFzbS55bykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90QW5jaG9yQXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEtxID0gYi5fZW1zY3JpcHRlbl9iaW5kX3RBbmNob3JBcnJheV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uem8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fY29udGFjdE5vcm1hbFdTXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV9jb250YWN0Tm9ybWFsV1NfMCA9IGIuYXNtLkFvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE1xID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX2NvbnRhY3ROb3JtYWxXU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fY29udGFjdE5vcm1hbFdTXzEgPSBiLmFzbS5CbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV9jb250YWN0UG9pbnRXU18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fY29udGFjdFBvaW50V1NfMCA9IGIuYXNtLkNvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE9xID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX2NvbnRhY3RQb2ludFdTXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19zZXRfbV9jb250YWN0UG9pbnRXU18xID0gYi5hc20uRG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fc3VzcGVuc2lvbkxlbmd0aF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fc3VzcGVuc2lvbkxlbmd0aF8wID0gYi5hc20uRW8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fc3VzcGVuc2lvbkxlbmd0aF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUXEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fc3VzcGVuc2lvbkxlbmd0aF8xID0gYi5hc20uRm8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21faGFyZFBvaW50V1NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX2dldF9tX2hhcmRQb2ludFdTXzAgPSBiLmFzbS5HbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19zZXRfbV9oYXJkUG9pbnRXU18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21faGFyZFBvaW50V1NfMSA9IGIuYXNtLkhvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX2dldF9tX3doZWVsRGlyZWN0aW9uV1NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX2dldF9tX3doZWVsRGlyZWN0aW9uV1NfMCA9IGIuYXNtLklvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX3doZWVsRGlyZWN0aW9uV1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX3doZWVsRGlyZWN0aW9uV1NfMSA9IGIuYXNtLkpvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX2dldF9tX3doZWVsQXhsZVdTXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV93aGVlbEF4bGVXU18wID0gYi5hc20uS28pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV3EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fd2hlZWxBeGxlV1NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX3doZWVsQXhsZVdTXzEgPSBiLmFzbS5MbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV9pc0luQ29udGFjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21faXNJbkNvbnRhY3RfMCA9IGIuYXNtLk1vKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX2lzSW5Db250YWN0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZcSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19zZXRfbV9pc0luQ29udGFjdF8xID0gYi5hc20uTm8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWnEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fZ2V0X21fZ3JvdW5kT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChacSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19nZXRfbV9ncm91bmRPYmplY3RfMCA9IGIuYXNtLk9vKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICRxID0gYi5fZW1zY3JpcHRlbl9iaW5kX1JheWNhc3RJbmZvX3NldF9tX2dyb3VuZE9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fc2V0X21fZ3JvdW5kT2JqZWN0XzEgPSBiLmFzbS5QbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9SYXljYXN0SW5mb19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfUmF5Y2FzdEluZm9fX19kZXN0cm95X19fMCA9IGIuYXNtLlFvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9idE11bHRpU3BoZXJlU2hhcGVfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9idE11bHRpU3BoZXJlU2hhcGVfMyA9IGIuYXNtLlJvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLlNvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLlRvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGVyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLlVvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TXVsdGlTcGhlcmVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNdWx0aVNwaGVyZVNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5WbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBnciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2J0U29mdEJvZHlfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYnRTb2Z0Qm9keV80ID0gYi5hc20uV28pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9jaGVja0xpbmtfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGhyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfY2hlY2tMaW5rXzIgPSBiLmFzbS5YbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2NoZWNrRmFjZV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9jaGVja0ZhY2VfMyA9IGIuYXNtLllvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGpyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kTWF0ZXJpYWxfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGpyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kTWF0ZXJpYWxfMCA9IGIuYXNtLlpvKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGtyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kTm9kZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoa3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hcHBlbmROb2RlXzIgPSBiLmFzbS5fbykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FwcGVuZExpbmtfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kTGlua180ID0gYi5hc20uJG8pLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hcHBlbmRGYWNlXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FwcGVuZEZhY2VfNCA9IGIuYXNtLmFwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG5yID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kVGV0cmFfNSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5yID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kVGV0cmFfNSA9IGIuYXNtLmJwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG9yID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYXBwZW5kQW5jaG9yXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FwcGVuZEFuY2hvcl80ID0gYi5hc20uY3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRGb3JjZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRGb3JjZV8xID0gYi5hc20uZHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRGb3JjZV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRGb3JjZV8yID0gYi5hc20uZXApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9hZGRBZXJvRm9yY2VUb05vZGVfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfYWRkQWVyb0ZvcmNlVG9Ob2RlXzIgPSBiLmFzbS5mcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2dldFRvdGFsTWFzc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRUb3RhbE1hc3NfMCA9IGIuYXNtLmdwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0VG90YWxNYXNzXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0ciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFRvdGFsTWFzc18yID0gYi5hc20uaHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRNYXNzXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1ciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldE1hc3NfMiA9IGIuYXNtLmlwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfdHJhbnNmb3JtXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2ciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3RyYW5zZm9ybV8xID0gYi5hc20uanApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV90cmFuc2xhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfdHJhbnNsYXRlXzEgPSBiLmFzbS5rcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4ciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3JvdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9yb3RhdGVfMSA9IGIuYXNtLmxwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHlyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2NhbGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHlyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2NhbGVfMSA9IGIuYXNtLm1wKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHpyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2VuZXJhdGVDbHVzdGVyc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoenIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZW5lcmF0ZUNsdXN0ZXJzXzEgPSBiLmFzbS5ucCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2dlbmVyYXRlQ2x1c3RlcnNfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEFyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2VuZXJhdGVDbHVzdGVyc18yID0gYi5hc20ub3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZW5lcmF0ZUJlbmRpbmdDb25zdHJhaW50c18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZW5lcmF0ZUJlbmRpbmdDb25zdHJhaW50c18yID0gYi5hc20ucHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV91cGNhc3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfdXBjYXN0XzEgPSBiLmFzbS5xcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldEFuaXNvdHJvcGljRnJpY3Rpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKERyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0QW5pc290cm9waWNGcmljdGlvbl8yID0gYi5hc20ucnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRDb2xsaXNpb25TaGFwZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRDb2xsaXNpb25TaGFwZV8wID0gYi5hc20uc3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRnIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZF8xID0gYi5hc20udHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRBY3RpdmF0aW9uU3RhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0QWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS51cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS52cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FjdGl2YXRlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FjdGl2YXRlXzAgPSBiLmFzbS53cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FjdGl2YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2FjdGl2YXRlXzEgPSBiLmFzbS54cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzQWN0aXZlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzQWN0aXZlXzAgPSBiLmFzbS55cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzS2luZW1hdGljT2JqZWN0XzAgPSBiLmFzbS56cCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzU3RhdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzU3RhdGljT2JqZWN0XzAgPSBiLmFzbS5BcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2lzU3RhdGljT3JLaW5lbWF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE5yID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfaXNTdGF0aWNPcktpbmVtYXRpY09iamVjdF8wID0gYi5hc20uQnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRSZXN0aXR1dGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3IgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRSZXN0aXR1dGlvbl8wID0gYi5hc20uQ3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRGcmljdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRGcmljdGlvbl8wID0gYi5hc20uRHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRSb2xsaW5nRnJpY3Rpb25fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFFyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBiLmFzbS5FcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFJlc3RpdHV0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFJlc3RpdHV0aW9uXzEgPSBiLmFzbS5GcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldEZyaWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldEZyaWN0aW9uXzEgPSBiLmFzbS5HcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFJvbGxpbmdGcmljdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGIuYXNtLkhwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFVyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFVyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0V29ybGRUcmFuc2Zvcm1fMCA9IGIuYXNtLklwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFZyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFZyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGIuYXNtLkpwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFdyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGIuYXNtLktwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFhyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFhyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0V29ybGRUcmFuc2Zvcm1fMSA9IGIuYXNtLkxwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFlyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFlyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGIuYXNtLk1wKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFpyID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0Q2NkTW90aW9uVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChaciA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gYi5hc20uTnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHIgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRDY2RTd2VwdFNwaGVyZVJhZGl1c18xID0gYi5hc20uT3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRVc2VySW5kZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGFzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0VXNlckluZGV4XzAgPSBiLmFzbS5QcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBicyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldFVzZXJJbmRleF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRVc2VySW5kZXhfMSA9IGIuYXNtLlFwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGNzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0VXNlclBvaW50ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGNzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0VXNlclBvaW50ZXJfMCA9IGIuYXNtLlJwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGRzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0VXNlclBvaW50ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGRzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0VXNlclBvaW50ZXJfMSA9IGIuYXNtLlNwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGVzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0QnJvYWRwaGFzZUhhbmRsZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBiLmFzbS5UcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBncyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X2dldF9tX2NmZ18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9jZmdfMCA9IGIuYXNtLlVwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGhzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0X21fY2ZnXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChocyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldF9tX2NmZ18xID0gYi5hc20uVnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9ub2Rlc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9ub2Rlc18wID0gYi5hc20uV3ApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwganMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRfbV9ub2Rlc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoanMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRfbV9ub2Rlc18xID0gYi5hc20uWHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9tYXRlcmlhbHNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGtzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0X21fbWF0ZXJpYWxzXzAgPSBiLmFzbS5ZcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBscyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldF9tX21hdGVyaWFsc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9zZXRfbV9tYXRlcmlhbHNfMSA9IGIuYXNtLlpwKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1zID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfZ2V0X21fYW5jaG9yc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9nZXRfbV9hbmNob3JzXzAgPSBiLmFzbS5fcCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBucyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5X3NldF9tX2FuY2hvcnNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG5zID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlfc2V0X21fYW5jaG9yc18xID0gYi5hc20uJHApLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uYXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbnRBcnJheV9zaXplXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEludEFycmF5X3NpemVfMCA9IGIuYXNtLmJxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW50QXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW50QXJyYXlfYXRfMSA9IGIuYXNtLmNxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHNzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW50QXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHNzID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW50QXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLmRxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHRzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa1ZDRl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rVkNGXzAgPSBiLmFzbS5lcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1cyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tWQ0ZfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHVzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa1ZDRl8xID0gYi5hc20uZnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rRFBfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa0RQXzAgPSBiLmFzbS5ncSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4cyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tEUF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rRFBfMSA9IGIuYXNtLmhxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHlzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa0RHXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5cyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tER18wID0gYi5hc20uaXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgenMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rREdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHpzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0RHXzEgPSBiLmFzbS5qcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tMRl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rTEZfMCA9IGIuYXNtLmtxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0xGXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tMRl8xID0gYi5hc20ubHEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rUFJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKENzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa1BSXzAgPSBiLmFzbS5tcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tQUl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rUFJfMSA9IGIuYXNtLm5xKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEVzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa1ZDXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tWQ18wID0gYi5hc20ub3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rVkNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa1ZDXzEgPSBiLmFzbS5wcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tERl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rREZfMCA9IGIuYXNtLnFxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEhzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0RGXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tERl8xID0gYi5hc20ucnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rTVRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKElzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa01UXzAgPSBiLmFzbS5zcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tNVF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rTVRfMSA9IGIuYXNtLnRxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEtzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa0NIUl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rQ0hSXzAgPSBiLmFzbS51cSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tDSFJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKExzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0NIUl8xID0gYi5hc20udnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rS0hSXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tLSFJfMCA9IGIuYXNtLndxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE5zID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0tIUl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rS0hSXzEgPSBiLmFzbS54cSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2tTSFJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE9zID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa1NIUl8wID0gYi5hc20ueXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0hSXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQcyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tTSFJfMSA9IGIuYXNtLnpxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFFzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfa0FIUl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rQUhSXzAgPSBiLmFzbS5BcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBScyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2tBSFJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJzID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfa0FIUl8xID0gYi5hc20uQnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1JIUl9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1JIUl9DTF8wID0gYi5hc20uQ3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1JIUl9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1JIUl9DTF8xID0gYi5hc20uRHEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU0tIUl9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU0tIUl9DTF8wID0gYi5hc20uRXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0tIUl9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0tIUl9DTF8xID0gYi5hc20uRnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1NIUl9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3MgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1NIUl9DTF8wID0gYi5hc20uR3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1NIUl9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1NIUl9DTF8xID0gYi5hc20uSHEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1JfU1BMVF9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWXMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1JfU1BMVF9DTF8wID0gYi5hc20uSXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1JfU1BMVF9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWnMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1JfU1BMVF9DTF8xID0gYi5hc20uSnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU0tfU1BMVF9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHMgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU0tfU1BMVF9DTF8wID0gYi5hc20uS3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0tfU1BMVF9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU0tfU1BMVF9DTF8xID0gYi5hc20uTHEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1NfU1BMVF9DTF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9rU1NfU1BMVF9DTF8wID0gYi5hc20uTXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1NfU1BMVF9DTF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoY3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9rU1NfU1BMVF9DTF8xID0gYi5hc20uTnEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX2dldF9tYXh2b2x1bWVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfbWF4dm9sdW1lXzAgPSBiLmFzbS5PcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBldCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X21heHZvbHVtZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9tYXh2b2x1bWVfMSA9IGIuYXNtLlBxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfdGltZXNjYWxlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3RpbWVzY2FsZV8wID0gYi5hc20uUXEpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF90aW1lc2NhbGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGd0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19zZXRfdGltZXNjYWxlXzEgPSBiLmFzbS5ScSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBodCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3ZpdGVyYXRpb25zXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChodCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3ZpdGVyYXRpb25zXzAgPSBiLmFzbS5TcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X3ZpdGVyYXRpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X3ZpdGVyYXRpb25zXzEgPSBiLmFzbS5UcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3BpdGVyYXRpb25zXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X3BpdGVyYXRpb25zXzAgPSBiLmFzbS5VcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X3BpdGVyYXRpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X3BpdGVyYXRpb25zXzEgPSBiLmFzbS5WcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBsdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2RpdGVyYXRpb25zXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChsdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2RpdGVyYXRpb25zXzAgPSBiLmFzbS5XcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2RpdGVyYXRpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2RpdGVyYXRpb25zXzEgPSBiLmFzbS5YcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBudCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2NpdGVyYXRpb25zXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChudCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2NpdGVyYXRpb25zXzAgPSBiLmFzbS5ZcSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2NpdGVyYXRpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2NpdGVyYXRpb25zXzEgPSBiLmFzbS5acSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfZ2V0X2NvbGxpc2lvbnNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19nZXRfY29sbGlzaW9uc18wID0gYi5hc20uX3EpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX3NldF9jb2xsaXNpb25zXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChxdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25maWdfc2V0X2NvbGxpc2lvbnNfMSA9IGIuYXNtLiRxKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmZpZ19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uZmlnX19fZGVzdHJveV9fXzAgPSBiLmFzbS5hcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX2dldF9tX3hfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfZ2V0X21feF8wID0gYi5hc20uYnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV94XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX3NldF9tX3hfMSA9IGIuYXNtLmNyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHV0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfZ2V0X21fcV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9xXzAgPSBiLmFzbS5kcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX3NldF9tX3FfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHZ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfc2V0X21fcV8xID0gYi5hc20uZXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV92XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX2dldF9tX3ZfMCA9IGIuYXNtLmZyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHh0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfc2V0X21fdl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV92XzEgPSBiLmFzbS5ncikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX2dldF9tX2ZfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHl0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfZ2V0X21fZl8wID0gYi5hc20uaHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgenQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV9mXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6dCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX3NldF9tX2ZfMSA9IGIuYXNtLmlyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEF0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfZ2V0X21fbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9uXzAgPSBiLmFzbS5qcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX3NldF9tX25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfc2V0X21fbl8xID0gYi5hc20ua3IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9pbV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9pbV8wID0gYi5hc20ubHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV9pbV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV9pbV8xID0gYi5hc20ubXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9nZXRfbV9hcmVhXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChFdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX2dldF9tX2FyZWFfMCA9IGIuYXNtLm5yKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEZ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX05vZGVfc2V0X21fYXJlYV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTm9kZV9zZXRfbV9hcmVhXzEgPSBiLmFzbS5vcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Ob2RlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5wcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdob3N0UGFpckNhbGxiYWNrX2J0R2hvc3RQYWlyQ2FsbGJhY2tfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEh0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2hvc3RQYWlyQ2FsbGJhY2tfYnRHaG9zdFBhaXJDYWxsYmFja18wID0gYi5hc20ucXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdFBhaXJDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHaG9zdFBhaXJDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gYi5hc20ucnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRPdmVybGFwcGluZ1BhaXJDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRPdmVybGFwcGluZ1BhaXJDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gYi5hc20uc3IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl8zID0gYi5hc20udHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl80ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl80ID0gYi5hc20udXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFVwQXhpc18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFVwQXhpc18xID0gYi5hc20udnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFdhbGtEaXJlY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE50ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRXYWxrRGlyZWN0aW9uXzEgPSBiLmFzbS53cikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfc2V0VmVsb2NpdHlGb3JUaW1lSW50ZXJ2YWxfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE90ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRWZWxvY2l0eUZvclRpbWVJbnRlcnZhbF8yID0gYi5hc20ueHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3dhcnBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFB0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl93YXJwXzEgPSBiLmFzbS55cikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfcHJlU3RlcF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3ByZVN0ZXBfMSA9IGIuYXNtLnpyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJ0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9wbGF5ZXJTdGVwXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfcGxheWVyU3RlcF8yID0gYi5hc20uQXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgU3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEZhbGxTcGVlZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3QgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEZhbGxTcGVlZF8xID0gYi5hc20uQnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEp1bXBTcGVlZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEp1bXBTcGVlZF8xID0gYi5hc20uQ3IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldE1heEp1bXBIZWlnaHRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFV0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRNYXhKdW1wSGVpZ2h0XzEgPSBiLmFzbS5EcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfY2FuSnVtcF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2Nhbkp1bXBfMCA9IGIuYXNtLkVyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFd0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9qdW1wXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfanVtcF8wID0gYi5hc20uRnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWHQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldEdyYXZpdHlfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFh0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRHcmF2aXR5XzEgPSBiLmFzbS5HcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfZ2V0R3Jhdml0eV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWXQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2dldEdyYXZpdHlfMCA9IGIuYXNtLkhyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFp0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRNYXhTbG9wZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWnQgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldE1heFNsb3BlXzEgPSBiLmFzbS5JcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkdCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfZ2V0TWF4U2xvcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCR0ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9nZXRNYXhTbG9wZV8wID0gYi5hc20uSnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX2dldEdob3N0T2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfZ2V0R2hvc3RPYmplY3RfMCA9IGIuYXNtLktyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJ1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRVc2VHaG9zdFN3ZWVwVGVzdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFVzZUdob3N0U3dlZXBUZXN0XzEgPSBiLmFzbS5McikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfb25Hcm91bmRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGN1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9vbkdyb3VuZF8wID0gYi5hc20uTXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyX3NldFVwSW50ZXJwb2xhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9zZXRVcEludGVycG9sYXRlXzEgPSBiLmFzbS5OcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBldSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfdXBkYXRlQWN0aW9uXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChldSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfdXBkYXRlQWN0aW9uXzIgPSBiLmFzbS5PcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBmdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEtpbmVtYXRpY0NoYXJhY3RlckNvbnRyb2xsZXJfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZ1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0S2luZW1hdGljQ2hhcmFjdGVyQ29udHJvbGxlcl9fX2Rlc3Ryb3lfX18wID0gYi5hc20uUHIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGd1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlBcnJheV9zaXplXzAgPSBiLmFzbS5RcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBodSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5QXJyYXlfYXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGh1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlBcnJheV9hdF8xID0gYi5hc20uUnIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUFycmF5X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5QXJyYXlfX19kZXN0cm95X19fMCA9IGIuYXNtLlNyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGp1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZUFycmF5X3NpemVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGp1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZUFycmF5X3NpemVfMCA9IGIuYXNtLlRyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGt1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZUFycmF5X2F0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZhY2VBcnJheV9hdF8xID0gYi5hc20uVXIpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGYWNlQXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGx1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZUFycmF5X19fZGVzdHJveV9fXzAgPSBiLmFzbS5WcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfYnRTdGF0aWNQbGFuZVNoYXBlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfYnRTdGF0aWNQbGFuZVNoYXBlXzIgPSBiLmFzbS5XcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBudSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChudSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5YcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChvdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5ZcikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBwdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5acikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFN0YXRpY1BsYW5lU2hhcGVfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHF1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3RhdGljUGxhbmVTaGFwZV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uX3IpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcnUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRPdmVybGFwcGluZ1BhaXJDYWNoZV9zZXRJbnRlcm5hbEdob3N0UGFpckNhbGxiYWNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChydSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE92ZXJsYXBwaW5nUGFpckNhY2hlX3NldEludGVybmFsR2hvc3RQYWlyQ2FsbGJhY2tfMSA9IGIuYXNtLiRyKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHN1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0T3ZlcmxhcHBpbmdQYWlyQ2FjaGVfZ2V0TnVtT3ZlcmxhcHBpbmdQYWlyc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRPdmVybGFwcGluZ1BhaXJDYWNoZV9nZXROdW1PdmVybGFwcGluZ1BhaXJzXzAgPSBiLmFzbS5hcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE92ZXJsYXBwaW5nUGFpckNhY2hlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE92ZXJsYXBwaW5nUGFpckNhY2hlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5icykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEluZGV4ZWRNZXNoX2dldF9tX251bVRyaWFuZ2xlc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaF9nZXRfbV9udW1UcmlhbmdsZXNfMCA9IGIuYXNtLmNzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHZ1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0SW5kZXhlZE1lc2hfc2V0X21fbnVtVHJpYW5nbGVzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEluZGV4ZWRNZXNoX3NldF9tX251bVRyaWFuZ2xlc18xID0gYi5hc20uZHMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAod3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRJbmRleGVkTWVzaF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uZXMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF81ID0gYi5hc20uZnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2FkZFNvZnRCb2R5XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5dSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkU29mdEJvZHlfMyA9IGIuYXNtLmdzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHp1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9yZW1vdmVTb2Z0Qm9keV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoenUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JlbW92ZVNvZnRCb2R5XzEgPSBiLmFzbS5ocykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBBdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfcmVtb3ZlQ29sbGlzaW9uT2JqZWN0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChBdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfcmVtb3ZlQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5pcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0V29ybGRJbmZvXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChCdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0V29ybGRJbmZvXzAgPSBiLmFzbS5qcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0U29mdEJvZHlBcnJheV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2dldFNvZnRCb2R5QXJyYXlfMCA9IGIuYXNtLmtzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIER1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9nZXREaXNwYXRjaGVyXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0RGlzcGF0Y2hlcl8wID0gYi5hc20ubHMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JheVRlc3RfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEV1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9yYXlUZXN0XzMgPSBiLmFzbS5tcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0UGFpckNhY2hlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0UGFpckNhY2hlXzAgPSBiLmFzbS5ucykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0RGlzcGF0Y2hJbmZvXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0RGlzcGF0Y2hJbmZvXzAgPSBiLmFzbS5vcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzEgPSBiLmFzbS5wcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzIgPSBiLmFzbS5xcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29sbGlzaW9uT2JqZWN0XzMgPSBiLmFzbS5ycykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0QnJvYWRwaGFzZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2dldEJyb2FkcGhhc2VfMCA9IGIuYXNtLnNzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEx1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb252ZXhTd2VlcFRlc3RfNSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEx1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb252ZXhTd2VlcFRlc3RfNSA9IGIuYXNtLnRzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE11ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb250YWN0UGFpclRlc3RfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE11ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb250YWN0UGFpclRlc3RfMyA9IGIuYXNtLnVzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE51ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9jb250YWN0VGVzdF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2NvbnRhY3RUZXN0XzIgPSBiLmFzbS52cykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfdXBkYXRlU2luZ2xlQWFiYl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3UgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3VwZGF0ZVNpbmdsZUFhYmJfMSA9IGIuYXNtLndzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFB1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXREZWJ1Z0RyYXdlcl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldERlYnVnRHJhd2VyXzEgPSBiLmFzbS54cykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBRdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZ2V0RGVidWdEcmF3ZXJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFF1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9nZXREZWJ1Z0RyYXdlcl8wID0gYi5hc20ueXMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUnUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2RlYnVnRHJhd1dvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChSdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfZGVidWdEcmF3V29ybGRfMCA9IGIuYXNtLnpzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFN1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdPYmplY3RfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFN1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9kZWJ1Z0RyYXdPYmplY3RfMyA9IGIuYXNtLkFzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFR1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXRHcmF2aXR5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc2V0R3Jhdml0eV8xID0gYi5hc20uQnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2dldEdyYXZpdHlfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFV1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9nZXRHcmF2aXR5XzAgPSBiLmFzbS5DcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzEgPSBiLmFzbS5EcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChXdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkUmlnaWRCb2R5XzMgPSBiLmFzbS5FcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBYdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfcmVtb3ZlUmlnaWRCb2R5XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfcmVtb3ZlUmlnaWRCb2R5XzEgPSBiLmFzbS5GcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZdSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29uc3RyYWludF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWXUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2FkZENvbnN0cmFpbnRfMSA9IGIuYXNtLkdzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFp1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9hZGRDb25zdHJhaW50XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChadSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfYWRkQ29uc3RyYWludF8yID0gYi5hc20uSHMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJHUgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JlbW92ZUNvbnN0cmFpbnRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCR1ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9yZW1vdmVDb25zdHJhaW50XzEgPSBiLmFzbS5JcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc3RlcFNpbXVsYXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGF2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zdGVwU2ltdWxhdGlvbl8xID0gYi5hc20uSnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3N0ZXBTaW11bGF0aW9uXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChidiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc3RlcFNpbXVsYXRpb25fMiA9IGIuYXNtLktzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGN2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zdGVwU2ltdWxhdGlvbl8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoY3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3N0ZXBTaW11bGF0aW9uXzMgPSBiLmFzbS5McykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc2V0Q29udGFjdEFkZGVkQ2FsbGJhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXRDb250YWN0QWRkZWRDYWxsYmFja18xID0gYi5hc20uTXMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldENvbnRhY3RQcm9jZXNzZWRDYWxsYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldENvbnRhY3RQcm9jZXNzZWRDYWxsYmFja18xID0gYi5hc20uTnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldENvbnRhY3REZXN0cm95ZWRDYWxsYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldENvbnRhY3REZXN0cm95ZWRDYWxsYmFja18xID0gYi5hc20uT3MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2FkZEFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2FkZEFjdGlvbl8xID0gYi5hc20uUHMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JlbW92ZUFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3JlbW92ZUFjdGlvbl8xID0gYi5hc20uUXMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX2dldFNvbHZlckluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGl2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9nZXRTb2x2ZXJJbmZvXzAgPSBiLmFzbS5ScykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGp2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18xID0gYi5hc20uU3MpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2tfMiA9IGIuYXNtLlRzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGx2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9zZXRJbnRlcm5hbFRpY2tDYWxsYmFja18zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0UmlnaWREeW5hbWljc1dvcmxkX3NldEludGVybmFsVGlja0NhbGxiYWNrXzMgPSBiLmFzbS5VcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRSaWdpZER5bmFtaWNzV29ybGRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG12ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uVnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfYnRGaXhlZENvbnN0cmFpbnRfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG52ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X2J0Rml4ZWRDb25zdHJhaW50XzQgPSBiLmFzbS5XcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBvdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZpeGVkQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLlhzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHB2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5ZcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZpeGVkQ29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHF2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20uWnMpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJ2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5fcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZpeGVkQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoc3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGaXhlZENvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLiRzKS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHR2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Rml4ZWRDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZpeGVkQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uYXQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fYnRUcmFuc2Zvcm1fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHV2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX2J0VHJhbnNmb3JtXzAgPSBiLmFzbS5idCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9idFRyYW5zZm9ybV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fYnRUcmFuc2Zvcm1fMiA9IGIuYXNtLmN0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHd2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX3NldElkZW50aXR5XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRJZGVudGl0eV8wID0gYi5hc20uZHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fc2V0T3JpZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRPcmlnaW5fMSA9IGIuYXNtLmV0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHl2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX3NldFJvdGF0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh5diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRSb3RhdGlvbl8xID0gYi5hc20uZnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgenYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fZ2V0T3JpZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6diA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9nZXRPcmlnaW5fMCA9IGIuYXNtLmd0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEF2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX2dldFJvdGF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChBdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9nZXRSb3RhdGlvbl8wID0gYi5hc20uaHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fZ2V0QmFzaXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX2dldEJhc2lzXzAgPSBiLmFzbS5pdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRGcm9tT3BlbkdMTWF0cml4XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9zZXRGcm9tT3BlbkdMTWF0cml4XzEgPSBiLmFzbS5qdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9pbnZlcnNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9pbnZlcnNlXzAgPSBiLmFzbS5rdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBFdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFRyYW5zZm9ybV9vcF9tdWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEV2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX29wX211bF8xID0gYi5hc20ubHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRUcmFuc2Zvcm1fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZ2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX19fZGVzdHJveV9fXzAgPSBiLmFzbS5tdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrXzIgPSBiLmFzbS5udCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfaGFzSGl0XzAgPSBiLmFzbS5vdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5RnJvbVdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChJdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5RnJvbVdvcmxkXzAgPSBiLmFzbS5wdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5RnJvbVdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5RnJvbVdvcmxkXzEgPSBiLmFzbS5xdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBLdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fcmF5VG9Xb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX3JheVRvV29ybGRfMCA9IGIuYXNtLnJ0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEx2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9yYXlUb1dvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fcmF5VG9Xb3JsZF8xID0gYi5hc20uc3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdE5vcm1hbFdvcmxkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChNdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0Tm9ybWFsV29ybGRfMCA9IGIuYXNtLnR0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE52ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9oaXROb3JtYWxXb3JsZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2hpdE5vcm1hbFdvcmxkXzEgPSBiLmFzbS51dCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21faGl0UG9pbnRXb3JsZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2hpdFBvaW50V29ybGRfMCA9IGIuYXNtLnZ0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFB2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9oaXRQb2ludFdvcmxkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21faGl0UG9pbnRXb3JsZF8xID0gYi5hc20ud3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChRdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMCA9IGIuYXNtLnh0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJ2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS55dCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbkZpbHRlck1hc2tfMCA9IGIuYXNtLnp0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFR2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0Nsb3Nlc3RSYXlSZXN1bHRDYWxsYmFja19zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfc2V0X21fY29sbGlzaW9uRmlsdGVyTWFza18xID0gYi5hc20uQXQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8wID0gYi5hc20uQnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVnYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbl8xID0gYi5hc20uQ3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3YgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX2dldF9tX2NvbGxpc2lvbk9iamVjdF8wID0gYi5hc20uRHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX3NldF9tX2NvbGxpc2lvbk9iamVjdF8xID0gYi5hc20uRXQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWXYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ2xvc2VzdFJheVJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZdiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9DbG9zZXN0UmF5UmVzdWx0Q2FsbGJhY2tfX19kZXN0cm95X19fMCA9IGIuYXNtLkZ0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFp2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uX2J0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChadiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5UmlnaWRCb2R5Q29sbGlzaW9uQ29uZmlndXJhdGlvbl9idFNvZnRCb2R5UmlnaWRCb2R5Q29sbGlzaW9uQ29uZmlndXJhdGlvbl8wID0gYi5hc20uR3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgJHYgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVJpZ2lkQm9keUNvbGxpc2lvbkNvbmZpZ3VyYXRpb25fYnRTb2Z0Qm9keVJpZ2lkQm9keUNvbGxpc2lvbkNvbmZpZ3VyYXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCR2ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uX2J0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uXzEgPSBiLmFzbS5IdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBhdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5UmlnaWRCb2R5Q29sbGlzaW9uQ29uZmlndXJhdGlvbl9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keVJpZ2lkQm9keUNvbGxpc2lvbkNvbmZpZ3VyYXRpb25fX19kZXN0cm95X19fMCA9IGIuYXNtLkl0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGJ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmNyZXRlQ29udGFjdFJlc3VsdENhbGxiYWNrX0NvbmNyZXRlQ29udGFjdFJlc3VsdENhbGxiYWNrXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChidyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFja19Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFja18wID0gYi5hc20uSnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgY3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfQ29uY3JldGVDb250YWN0UmVzdWx0Q2FsbGJhY2tfYWRkU2luZ2xlUmVzdWx0XzcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFja19hZGRTaW5nbGVSZXN1bHRfNyA9IGIuYXNtLkt0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGR3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0NvbmNyZXRlQ29udGFjdFJlc3VsdENhbGxiYWNrX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFja19fX2Rlc3Ryb3lfX18wID0gYi5hc20uTHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChldyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX2J0QnZoVHJpYW5nbGVNZXNoU2hhcGVfMiA9IGIuYXNtLk10KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnZoVHJpYW5nbGVNZXNoU2hhcGVfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlXzMgPSBiLmFzbS5OdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBndyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLk90KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGh3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnZoVHJpYW5nbGVNZXNoU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChodyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20uUHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCdmhUcmlhbmdsZU1lc2hTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnZoVHJpYW5nbGVNZXNoU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5RdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBqdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJ2aFRyaWFuZ2xlTWVzaFNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5SdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBrdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0Q29sbGlzaW9uT2JqZWN0QXJyYXlfc2l6ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoa3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdENvbGxpc2lvbk9iamVjdEFycmF5X3NpemVfMCA9IGIuYXNtLlN0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGx3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RDb2xsaXNpb25PYmplY3RBcnJheV9hdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb25zdENvbGxpc2lvbk9iamVjdEFycmF5X2F0XzEgPSBiLmFzbS5UdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBtdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnN0Q29sbGlzaW9uT2JqZWN0QXJyYXlfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG13ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29uc3RDb2xsaXNpb25PYmplY3RBcnJheV9fX2Rlc3Ryb3lfX18wID0gYi5hc20uVXQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF8zID0gYi5hc20uVnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAob3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF81ID0gYi5hc20uV3QpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldExvd2VyTGluTGltaXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9zZXRMb3dlckxpbkxpbWl0XzEgPSBiLmFzbS5YdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfc2V0VXBwZXJMaW5MaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldFVwcGVyTGluTGltaXRfMSA9IGIuYXNtLll0KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9zZXRMb3dlckFuZ0xpbWl0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChydyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfc2V0TG93ZXJBbmdMaW1pdF8xID0gYi5hc20uWnQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldFVwcGVyQW5nTGltaXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9zZXRVcHBlckFuZ0xpbWl0XzEgPSBiLmFzbS5fdCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0dyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHR3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gYi5hc20uJHQpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gYi5hc20uYXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20uYnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2dldFBhcmFtXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3dyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGIuYXNtLmN1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHh3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X3NldFBhcmFtXzMgPSBiLmFzbS5kdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5dyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNsaWRlckNvbnN0cmFpbnRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U2xpZGVyQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20uZXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgencgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoencgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF8wID0gYi5hc20uZnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldEFuaXNvdHJvcGljRnJpY3Rpb25fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEF3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRBbmlzb3Ryb3BpY0ZyaWN0aW9uXzIgPSBiLmFzbS5ndSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBCdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0Q29sbGlzaW9uU2hhcGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRDb2xsaXNpb25TaGFwZV8wID0gYi5hc20uaHUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENvbnRhY3RQcm9jZXNzaW5nVGhyZXNob2xkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChDdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGRfMSA9IGIuYXNtLml1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIER3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRBY3RpdmF0aW9uU3RhdGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKER3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRBY3RpdmF0aW9uU3RhdGVfMSA9IGIuYXNtLmp1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEV3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9mb3JjZUFjdGl2YXRpb25TdGF0ZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2ZvcmNlQWN0aXZhdGlvblN0YXRlXzEgPSBiLmFzbS5rdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBGdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfYWN0aXZhdGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9hY3RpdmF0ZV8wID0gYi5hc20ubHUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2FjdGl2YXRlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChHdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfYWN0aXZhdGVfMSA9IGIuYXNtLm11KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEh3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9pc0FjdGl2ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2lzQWN0aXZlXzAgPSBiLmFzbS5udSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfaXNLaW5lbWF0aWNPYmplY3RfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9pc0tpbmVtYXRpY09iamVjdF8wID0gYi5hc20ub3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgSncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2lzU3RhdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfaXNTdGF0aWNPYmplY3RfMCA9IGIuYXNtLnB1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEt3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChLdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfaXNTdGF0aWNPcktpbmVtYXRpY09iamVjdF8wID0gYi5hc20ucXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldFJlc3RpdHV0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0UmVzdGl0dXRpb25fMCA9IGIuYXNtLnJ1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE13ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRGcmljdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldEZyaWN0aW9uXzAgPSBiLmFzbS5zdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0Um9sbGluZ0ZyaWN0aW9uXzAgPSBiLmFzbS50dSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBPdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0UmVzdGl0dXRpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE93ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRSZXN0aXR1dGlvbl8xID0gYi5hc20udXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldEZyaWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0RnJpY3Rpb25fMSA9IGIuYXNtLnZ1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFF3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFF3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRSb2xsaW5nRnJpY3Rpb25fMSA9IGIuYXNtLnd1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRXb3JsZFRyYW5zZm9ybV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUncgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldFdvcmxkVHJhbnNmb3JtXzAgPSBiLmFzbS54dSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0Q29sbGlzaW9uRmxhZ3NfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFN3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRDb2xsaXNpb25GbGFnc18wID0gYi5hc20ueXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENvbGxpc2lvbkZsYWdzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uRmxhZ3NfMSA9IGIuYXNtLnp1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFV3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRXb3JsZFRyYW5zZm9ybV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVXcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldFdvcmxkVHJhbnNmb3JtXzEgPSBiLmFzbS5BdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0Q29sbGlzaW9uU2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFZ3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRDb2xsaXNpb25TaGFwZV8xID0gYi5hc20uQnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgV3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3cgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENjZE1vdGlvblRocmVzaG9sZF8xID0gYi5hc20uQ3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X3NldENjZFN3ZXB0U3BoZXJlUmFkaXVzXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYdyA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXNfMSA9IGIuYXNtLkR1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRVc2VySW5kZXhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFl3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRVc2VySW5kZXhfMCA9IGIuYXNtLkV1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFp3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRVc2VySW5kZXhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFp3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRVc2VySW5kZXhfMSA9IGIuYXNtLkZ1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICR3ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRVc2VyUG9pbnRlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHcgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldFVzZXJQb2ludGVyXzAgPSBiLmFzbS5HdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBheCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3Rfc2V0VXNlclBvaW50ZXJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGF4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9zZXRVc2VyUG9pbnRlcl8xID0gYi5hc20uSHUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X2dldEJyb2FkcGhhc2VIYW5kbGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRCcm9hZHBoYXNlSGFuZGxlXzAgPSBiLmFzbS5JdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzXzAgPSBiLmFzbS5KdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfZ2V0T3ZlcmxhcHBpbmdPYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UGFpckNhY2hpbmdHaG9zdE9iamVjdF9nZXRPdmVybGFwcGluZ09iamVjdF8xID0gYi5hc20uS3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQYWlyQ2FjaGluZ0dob3N0T2JqZWN0X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChleCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBhaXJDYWNoaW5nR2hvc3RPYmplY3RfX19kZXN0cm95X19fMCA9IGIuYXNtLkx1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRQb3NpdGlvbldvcmxkT25BXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0UG9zaXRpb25Xb3JsZE9uQV8wID0gYi5hc20uTXUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldFBvc2l0aW9uV29ybGRPbkJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGd4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRQb3NpdGlvbldvcmxkT25CXzAgPSBiLmFzbS5OdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0QXBwbGllZEltcHVsc2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRBcHBsaWVkSW1wdWxzZV8wID0gYi5hc20uT3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldERpc3RhbmNlXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChpeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0RGlzdGFuY2VfMCA9IGIuYXNtLlB1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGp4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRfbV9sb2NhbFBvaW50QV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoanggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX2xvY2FsUG9pbnRBXzAgPSBiLmFzbS5RdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBreCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfc2V0X21fbG9jYWxQb2ludEFfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGt4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9zZXRfbV9sb2NhbFBvaW50QV8xID0gYi5hc20uUnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX2xvY2FsUG9pbnRCXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChseCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0X21fbG9jYWxQb2ludEJfMCA9IGIuYXNtLlN1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG14ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9zZXRfbV9sb2NhbFBvaW50Ql8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X3NldF9tX2xvY2FsUG9pbnRCXzEgPSBiLmFzbS5UdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBueCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfZ2V0X21fcG9zaXRpb25Xb3JsZE9uQl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX3Bvc2l0aW9uV29ybGRPbkJfMCA9IGIuYXNtLlV1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG94ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9zZXRfbV9wb3NpdGlvbldvcmxkT25CXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChveCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfc2V0X21fcG9zaXRpb25Xb3JsZE9uQl8xID0gYi5hc20uVnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX3Bvc2l0aW9uV29ybGRPbkFfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRfbV9wb3NpdGlvbldvcmxkT25BXzAgPSBiLmFzbS5XdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfc2V0X21fcG9zaXRpb25Xb3JsZE9uQV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X3NldF9tX3Bvc2l0aW9uV29ybGRPbkFfMSA9IGIuYXNtLlh1KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9nZXRfbV9ub3JtYWxXb3JsZE9uQl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX25vcm1hbFdvcmxkT25CXzAgPSBiLmFzbS5ZdSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBzeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfc2V0X21fbm9ybWFsV29ybGRPbkJfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0TWFuaWZvbGRQb2ludF9zZXRfbV9ub3JtYWxXb3JsZE9uQl8xID0gYi5hc20uWnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX3VzZXJQZXJzaXN0ZW50RGF0YV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X2dldF9tX3VzZXJQZXJzaXN0ZW50RGF0YV8wID0gYi5hc20uX3UpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X3NldF9tX3VzZXJQZXJzaXN0ZW50RGF0YV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X3NldF9tX3VzZXJQZXJzaXN0ZW50RGF0YV8xID0gYi5hc20uJHUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRNYW5pZm9sZFBvaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2eCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idE1hbmlmb2xkUG9pbnRfX19kZXN0cm95X19fMCA9IGIuYXNtLmF2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHd4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2J0UG9pbnQyUG9pbnRDb25zdHJhaW50XzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3eCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9idFBvaW50MlBvaW50Q29uc3RyYWludF8yID0gYi5hc20uYnYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgeHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2J0UG9pbnQyUG9pbnRDb25zdHJhaW50XzQgPSBiLmFzbS5jdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5eCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9zZXRQaXZvdEFfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHl4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X3NldFBpdm90QV8xID0gYi5hc20uZHYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgenggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfc2V0UGl2b3RCXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh6eCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9zZXRQaXZvdEJfMSA9IGIuYXNtLmV2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEF4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldFBpdm90SW5BXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChBeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9nZXRQaXZvdEluQV8wID0gYi5hc20uZnYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfZ2V0UGl2b3RJbkJfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldFBpdm90SW5CXzAgPSBiLmFzbS5ndikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBDeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLmh2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIER4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5pdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBFeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEV4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20uanYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEZ4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5rdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBHeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRQb2ludDJQb2ludENvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLmx2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldF9tX3NldHRpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2dldF9tX3NldHRpbmdfMCA9IGIuYXNtLm12KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEl4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X3NldF9tX3NldHRpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEl4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X3NldF9tX3NldHRpbmdfMSA9IGIuYXNtLm52KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEp4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChKeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFBvaW50MlBvaW50Q29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20ub3YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgS3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfYnRTb2Z0Qm9keUhlbHBlcnNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEt4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlIZWxwZXJzX2J0U29mdEJvZHlIZWxwZXJzXzAgPSBiLmFzbS5wdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVSb3BlXzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVSb3BlXzUgPSBiLmFzbS5xdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBNeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVQYXRjaF85ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfQ3JlYXRlUGF0Y2hfOSA9IGIuYXNtLnJ2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE54ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlIZWxwZXJzX0NyZWF0ZVBhdGNoVVZfMTAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChOeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVQYXRjaFVWXzEwID0gYi5hc20uc3YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgT3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfQ3JlYXRlRWxsaXBzb2lkXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVFbGxpcHNvaWRfNCA9IGIuYXNtLnR2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFB4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlIZWxwZXJzX0NyZWF0ZUZyb21UcmlNZXNoXzUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19DcmVhdGVGcm9tVHJpTWVzaF81ID0gYi5hc20udXYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfQ3JlYXRlRnJvbUNvbnZleEh1bGxfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFF4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U29mdEJvZHlIZWxwZXJzX0NyZWF0ZUZyb21Db252ZXhIdWxsXzQgPSBiLmFzbS52dikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBSeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNvZnRCb2R5SGVscGVyc19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUnggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTb2Z0Qm9keUhlbHBlcnNfX19kZXN0cm95X19fMCA9IGIuYXNtLnd2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFN4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnJvYWRwaGFzZVByb3h5X2dldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9nZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cF8wID0gYi5hc20ueHYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCcm9hZHBoYXNlUHJveHlfc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXBfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFR4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0QnJvYWRwaGFzZVByb3h5X3NldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwXzEgPSBiLmFzbS55dikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzAgPSBiLmFzbS56dikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrXzEgPSBiLmFzbS5BdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJyb2FkcGhhc2VQcm94eV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3ggPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCcm9hZHBoYXNlUHJveHlfX19kZXN0cm95X19fMCA9IGIuYXNtLkJ2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFh4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX3ROb2RlQXJyYXlfc2l6ZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHggPSBiLl9lbXNjcmlwdGVuX2JpbmRfdE5vZGVBcnJheV9zaXplXzAgPSBiLmFzbS5DdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90Tm9kZUFycmF5X2F0XzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChZeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90Tm9kZUFycmF5X2F0XzEgPSBiLmFzbS5EdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90Tm9kZUFycmF5X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChaeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF90Tm9kZUFycmF5X19fZGVzdHJveV9fXzAgPSBiLmFzbS5FdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkeCA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJveFNoYXBlX2J0Qm94U2hhcGVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKCR4ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfYnRCb3hTaGFwZV8xID0gYi5hc20uRnYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCb3hTaGFwZV9zZXRNYXJnaW5fMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGF5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfc2V0TWFyZ2luXzEgPSBiLmFzbS5HdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBieSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJveFNoYXBlX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCb3hTaGFwZV9nZXRNYXJnaW5fMCA9IGIuYXNtLkh2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGN5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJveFNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gYi5hc20uSXYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZHkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCb3hTaGFwZV9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5KdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBleSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEJveFNoYXBlX2NhbGN1bGF0ZUxvY2FsSW5lcnRpYV8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRCb3hTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLkt2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGZ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Qm94U2hhcGVfX19kZXN0cm95X19fMCA9IGIuYXNtLkx2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGd5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZV9nZXRfbV9pbmRpY2VzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChneSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZhY2VfZ2V0X21faW5kaWNlc18wID0gYi5hc20uTXYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGYWNlX3NldF9tX2luZGljZXNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGh5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZV9zZXRfbV9pbmRpY2VzXzEgPSBiLmFzbS5OdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZhY2VfZ2V0X21fcGxhbmVfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGl5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZV9nZXRfbV9wbGFuZV8xID0gYi5hc20uT3YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgankgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGYWNlX3NldF9tX3BsYW5lXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChqeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEZhY2Vfc2V0X21fcGxhbmVfMiA9IGIuYXNtLlB2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGt5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0RmFjZV9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoa3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRGYWNlX19fZGVzdHJveV9fXzAgPSBiLmFzbS5RdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBseSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9EZWJ1Z0RyYXdlcl9EZWJ1Z0RyYXdlcl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobHkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfRGVidWdEcmF3ZXJfMCA9IGIuYXNtLlJ2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG15ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX2RyYXdMaW5lXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChteSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9EZWJ1Z0RyYXdlcl9kcmF3TGluZV8zID0gYi5hc20uU3YpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfZHJhd0NvbnRhY3RQb2ludF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAobnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfZHJhd0NvbnRhY3RQb2ludF81ID0gYi5hc20uVHYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgb3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfcmVwb3J0RXJyb3JXYXJuaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChveSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9EZWJ1Z0RyYXdlcl9yZXBvcnRFcnJvcldhcm5pbmdfMSA9IGIuYXNtLlV2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHB5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX2RyYXczZFRleHRfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX2RyYXczZFRleHRfMiA9IGIuYXNtLlZ2KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHF5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX3NldERlYnVnTW9kZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfc2V0RGVidWdNb2RlXzEgPSBiLmFzbS5XdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCByeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9EZWJ1Z0RyYXdlcl9nZXREZWJ1Z01vZGVfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX2dldERlYnVnTW9kZV8wID0gYi5hc20uWHYpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgc3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfRGVidWdEcmF3ZXJfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0RlYnVnRHJhd2VyX19fZGVzdHJveV9fXzAgPSBiLmFzbS5ZdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB0eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfYnRDYXBzdWxlU2hhcGVYXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh0eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfYnRDYXBzdWxlU2hhcGVYXzIgPSBiLmFzbS5adikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfc2V0TWFyZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh1eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfc2V0TWFyZ2luXzEgPSBiLmFzbS5fdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB2eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0TWFyZ2luXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh2eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0TWFyZ2luXzAgPSBiLmFzbS4kdikuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB3eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0VXBBeGlzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh3eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0VXBBeGlzXzAgPSBiLmFzbS5hdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0UmFkaXVzXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICh4eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0UmFkaXVzXzAgPSBiLmFzbS5idykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB5eSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVhfZ2V0SGFsZkhlaWdodF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVYX2dldEhhbGZIZWlnaHRfMCA9IGIuYXNtLmN3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHp5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9zZXRMb2NhbFNjYWxpbmdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHp5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLmR3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEF5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEF5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9nZXRMb2NhbFNjYWxpbmdfMCA9IGIuYXNtLmV3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEJ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEJ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGIuYXNtLmZ3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEN5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWF9fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVYX19fZGVzdHJveV9fXzAgPSBiLmFzbS5ndykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBEeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fYnRRdWF0ZXJuaW9uXzQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChEeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fYnRRdWF0ZXJuaW9uXzQgPSBiLmFzbS5odykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBFeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fc2V0VmFsdWVfNCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEV5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRWYWx1ZV80ID0gYi5hc20uaXcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldEV1bGVyWllYXzMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChGeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fc2V0RXVsZXJaWVhfMyA9IGIuYXNtLmp3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEd5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRSb3RhdGlvbl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoR3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldFJvdGF0aW9uXzIgPSBiLmFzbS5rdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fbm9ybWFsaXplXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChIeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fbm9ybWFsaXplXzAgPSBiLmFzbS5sdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBJeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fbGVuZ3RoMl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2xlbmd0aDJfMCA9IGIuYXNtLm13KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEp5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9sZW5ndGhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEp5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9sZW5ndGhfMCA9IGIuYXNtLm53KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEt5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9kb3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEt5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9kb3RfMSA9IGIuYXNtLm93KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEx5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9ub3JtYWxpemVkXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChMeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fbm9ybWFsaXplZF8wID0gYi5hc20ucHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2dldEF4aXNfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE15ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9nZXRBeGlzXzAgPSBiLmFzbS5xdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25faW52ZXJzZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2ludmVyc2VfMCA9IGIuYXNtLnJ3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE95ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9nZXRBbmdsZV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoT3kgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2dldEFuZ2xlXzAgPSBiLmFzbS5zdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBQeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fZ2V0QW5nbGVTaG9ydGVzdFBhdGhfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFB5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9nZXRBbmdsZVNob3J0ZXN0UGF0aF8wID0gYi5hc20udHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2FuZ2xlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChReSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fYW5nbGVfMSA9IGIuYXNtLnV3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFJ5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9hbmdsZVNob3J0ZXN0UGF0aF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoUnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX2FuZ2xlU2hvcnRlc3RQYXRoXzEgPSBiLmFzbS52dykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfYWRkXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChTeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfYWRkXzEgPSBiLmFzbS53dykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBUeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3Bfc3ViXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3Bfc3ViXzEgPSBiLmFzbS54dykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBVeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfbXVsXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChVeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfbXVsXzEgPSBiLmFzbS55dykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fb3BfbXVscV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoVnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX29wX211bHFfMSA9IGIuYXNtLnp3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFd5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9vcF9kaXZfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFd5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9vcF9kaXZfMSA9IGIuYXNtLkF3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFh5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl94XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChYeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25feF8wID0gYi5hc20uQncpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWXkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3lfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFl5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl95XzAgPSBiLmFzbS5DdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBaeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fel8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWnkgPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3pfMCA9IGIuYXNtLkR3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsICR5ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl93XzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICgkeSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fd18wID0gYi5hc20uRXcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldFhfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGF6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRYXzEgPSBiLmFzbS5GdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBieiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fc2V0WV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoYnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldFlfMSA9IGIuYXNtLkd3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGN6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRaXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fc2V0Wl8xID0gYi5hc20uSHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRRdWF0ZXJuaW9uX3NldFdfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGR6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9zZXRXXzEgPSBiLmFzbS5JdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBleiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFF1YXRlcm5pb25fX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGV6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0UXVhdGVybmlvbl9fX2Rlc3Ryb3lfX18wID0gYi5hc20uSncpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2J0Q2Fwc3VsZVNoYXBlWl8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2J0Q2Fwc3VsZVNoYXBlWl8yID0gYi5hc20uS3cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX3NldE1hcmdpbl8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZ3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX3NldE1hcmdpbl8xID0gYi5hc20uTHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldE1hcmdpbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldE1hcmdpbl8wID0gYi5hc20uTXcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgaXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldFVwQXhpc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoaXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldFVwQXhpc18wID0gYi5hc20uTncpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwganogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldFJhZGl1c18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoanogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldFJhZGl1c18wID0gYi5hc20uT3cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDYXBzdWxlU2hhcGVaX2dldEhhbGZIZWlnaHRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGt6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWl9nZXRIYWxmSGVpZ2h0XzAgPSBiLmFzbS5QdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBseiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfc2V0TG9jYWxTY2FsaW5nXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChseiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfc2V0TG9jYWxTY2FsaW5nXzEgPSBiLmFzbS5RdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBteiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChteiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfZ2V0TG9jYWxTY2FsaW5nXzAgPSBiLmFzbS5SdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBueiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChueiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS5TdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBveiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENhcHN1bGVTaGFwZVpfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG96ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q2Fwc3VsZVNoYXBlWl9fX2Rlc3Ryb3lfX18wID0gYi5hc20uVHcpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19nZXRfbV9zcGxpdEltcHVsc2VfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHB6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fZ2V0X21fc3BsaXRJbXB1bHNlXzAgPSBiLmFzbS5VdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBxeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnRhY3RTb2x2ZXJJbmZvX3NldF9tX3NwbGl0SW1wdWxzZV8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19zZXRfbV9zcGxpdEltcHVsc2VfMSA9IGIuYXNtLlZ3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHJ6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fZ2V0X21fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGRfMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHJ6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fZ2V0X21fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGRfMCA9IGIuYXNtLld3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHN6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fc2V0X21fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHN6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fc2V0X21fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGRfMSA9IGIuYXNtLlh3KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHR6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fZ2V0X21fbnVtSXRlcmF0aW9uc18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19nZXRfbV9udW1JdGVyYXRpb25zXzAgPSBiLmFzbS5ZdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB1eiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idENvbnRhY3RTb2x2ZXJJbmZvX3NldF9tX251bUl0ZXJhdGlvbnNfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHV6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0Q29udGFjdFNvbHZlckluZm9fc2V0X21fbnVtSXRlcmF0aW9uc18xID0gYi5hc20uWncpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgdnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19fX2Rlc3Ryb3lfX18wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAodnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRDb250YWN0U29sdmVySW5mb19fX2Rlc3Ryb3lfX18wID0gYi5hc20uX3cpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgd3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfMyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHd6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50XzMgPSBiLmFzbS4kdykuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB4eiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfNSA9IGIuYXNtLmF4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHl6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2VuYWJsZVNwcmluZ18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoeXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZW5hYmxlU3ByaW5nXzIgPSBiLmFzbS5ieCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCB6eiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9zZXRTdGlmZm5lc3NfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKHp6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X3NldFN0aWZmbmVzc18yID0gYi5hc20uY3gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RGFtcGluZ18yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RGFtcGluZ18yID0gYi5hc20uZHgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8wID0gYi5hc20uZXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgQ3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoQ3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8xID0gYi5hc20uZngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0RXF1aWxpYnJpdW1Qb2ludF8yID0gYi5hc20uZ3gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0TGluZWFyTG93ZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0TGluZWFyTG93ZXJMaW1pdF8xID0gYi5hc20uaHgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgRnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0TGluZWFyVXBwZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoRnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0TGluZWFyVXBwZXJMaW1pdF8xID0gYi5hc20uaXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgR3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0QW5ndWxhckxvd2VyTGltaXRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEd6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X3NldEFuZ3VsYXJMb3dlckxpbWl0XzEgPSBiLmFzbS5qeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBIeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9zZXRBbmd1bGFyVXBwZXJMaW1pdF8xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0QW5ndWxhclVwcGVyTGltaXRfMSA9IGIuYXNtLmt4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEl6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2dldEZyYW1lT2Zmc2V0QV8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZ2V0RnJhbWVPZmZzZXRBXzAgPSBiLmFzbS5seCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBKeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9lbmFibGVGZWVkYmFja18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoSnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZW5hYmxlRmVlZGJhY2tfMSA9IGIuYXNtLm14KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIEt6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2dldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoS3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkXzAgPSBiLmFzbS5ueCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBMeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGRfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKEx6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X3NldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZF8xID0gYi5hc20ub3gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgTXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfZ2V0UGFyYW1fMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKE16ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X2dldFBhcmFtXzIgPSBiLmFzbS5weCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBOeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9zZXRQYXJhbV8zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoTnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfc2V0UGFyYW1fMyA9IGIuYXNtLnF4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIE96ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZTcHJpbmdDb25zdHJhaW50X19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChPeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idEdlbmVyaWM2RG9mU3ByaW5nQ29uc3RyYWludF9fX2Rlc3Ryb3lfX18wID0gYi5hc20ucngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTcGhlcmVTaGFwZV9idFNwaGVyZVNoYXBlXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChQeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX2J0U3BoZXJlU2hhcGVfMSA9IGIuYXNtLnN4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFF6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3BoZXJlU2hhcGVfc2V0TWFyZ2luXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChReiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX3NldE1hcmdpbl8xID0gYi5hc20udHgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgUnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTcGhlcmVTaGFwZV9nZXRNYXJnaW5fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFJ6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3BoZXJlU2hhcGVfZ2V0TWFyZ2luXzAgPSBiLmFzbS51eCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBTeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX3NldExvY2FsU2NhbGluZ18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoU3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTcGhlcmVTaGFwZV9zZXRMb2NhbFNjYWxpbmdfMSA9IGIuYXNtLnZ4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFR6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3BoZXJlU2hhcGVfZ2V0TG9jYWxTY2FsaW5nXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChUeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX2dldExvY2FsU2NhbGluZ18wID0gYi5hc20ud3gpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgVXogPSBiLl9lbXNjcmlwdGVuX2JpbmRfYnRTcGhlcmVTaGFwZV9jYWxjdWxhdGVMb2NhbEluZXJ0aWFfMiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFV6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX2J0U3BoZXJlU2hhcGVfY2FsY3VsYXRlTG9jYWxJbmVydGlhXzIgPSBiLmFzbS54eCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBWeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX19fZGVzdHJveV9fXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChWeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9idFNwaGVyZVNoYXBlX19fZGVzdHJveV9fXzAgPSBiLmFzbS55eCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBXeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9Mb2NhbENvbnZleFJlc3VsdF81ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoV3ogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfTG9jYWxDb252ZXhSZXN1bHRfNSA9IGIuYXNtLnp4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIFh6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X2dldF9tX2hpdENvbGxpc2lvbk9iamVjdF8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoWHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfZ2V0X21faGl0Q29sbGlzaW9uT2JqZWN0XzAgPSBiLmFzbS5BeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBZeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9oaXRDb2xsaXNpb25PYmplY3RfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFl6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X3NldF9tX2hpdENvbGxpc2lvbk9iamVjdF8xID0gYi5hc20uQngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgWnogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfZ2V0X21fbG9jYWxTaGFwZUluZm9fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKFp6ID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X2dldF9tX2xvY2FsU2hhcGVJbmZvXzAgPSBiLmFzbS5DeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCAkeiA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9sb2NhbFNoYXBlSW5mb18xID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoJHogPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfc2V0X21fbG9jYWxTaGFwZUluZm9fMSA9IGIuYXNtLkR4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGFBID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X2dldF9tX2hpdE5vcm1hbExvY2FsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChhQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9nZXRfbV9oaXROb3JtYWxMb2NhbF8wID0gYi5hc20uRXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgYkEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfc2V0X21faGl0Tm9ybWFsTG9jYWxfMSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGJBID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X3NldF9tX2hpdE5vcm1hbExvY2FsXzEgPSBiLmFzbS5GeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBjQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9nZXRfbV9oaXRQb2ludExvY2FsXzAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChjQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9nZXRfbV9oaXRQb2ludExvY2FsXzAgPSBiLmFzbS5HeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBkQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9oaXRQb2ludExvY2FsXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChkQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9oaXRQb2ludExvY2FsXzEgPSBiLmFzbS5IeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBlQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9nZXRfbV9oaXRGcmFjdGlvbl8wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoZUEgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfZ2V0X21faGl0RnJhY3Rpb25fMCA9IGIuYXNtLkl4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGZBID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X3NldF9tX2hpdEZyYWN0aW9uXzEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChmQSA9IGIuX2Vtc2NyaXB0ZW5fYmluZF9Mb2NhbENvbnZleFJlc3VsdF9zZXRfbV9oaXRGcmFjdGlvbl8xID0gYi5hc20uSngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgZ0EgPSBiLl9lbXNjcmlwdGVuX2JpbmRfTG9jYWxDb252ZXhSZXN1bHRfX19kZXN0cm95X19fMCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGdBID0gYi5fZW1zY3JpcHRlbl9iaW5kX0xvY2FsQ29udmV4UmVzdWx0X19fZGVzdHJveV9fXzAgPSBiLmFzbS5LeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBoQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9idENvbnN0cmFpbnRQYXJhbXNfQlRfQ09OU1RSQUlOVF9FUlAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChoQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9idENvbnN0cmFpbnRQYXJhbXNfQlRfQ09OU1RSQUlOVF9FUlAgPSBiLmFzbS5MeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgICAgfQogICAgICAgICAgLCBpQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9idENvbnN0cmFpbnRQYXJhbXNfQlRfQ09OU1RSQUlOVF9TVE9QX0VSUCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGlBID0gYi5fZW1zY3JpcHRlbl9lbnVtX2J0Q29uc3RyYWludFBhcmFtc19CVF9DT05TVFJBSU5UX1NUT1BfRVJQID0gYi5hc20uTXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgakEgPSBiLl9lbXNjcmlwdGVuX2VudW1fYnRDb25zdHJhaW50UGFyYW1zX0JUX0NPTlNUUkFJTlRfQ0ZNID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAoakEgPSBiLl9lbXNjcmlwdGVuX2VudW1fYnRDb25zdHJhaW50UGFyYW1zX0JUX0NPTlNUUkFJTlRfQ0ZNID0gYi5hc20uTngpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwga0EgPSBiLl9lbXNjcmlwdGVuX2VudW1fYnRDb25zdHJhaW50UGFyYW1zX0JUX0NPTlNUUkFJTlRfU1RPUF9DRk0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChrQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9idENvbnN0cmFpbnRQYXJhbXNfQlRfQ09OU1RSQUlOVF9TVE9QX0NGTSA9IGIuYXNtLk94KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIGxBID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9GTE9BVCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGxBID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9GTE9BVCA9IGIuYXNtLlB4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG1BID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9ET1VCTEUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChtQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9QSFlfU2NhbGFyVHlwZV9QSFlfRE9VQkxFID0gYi5hc20uUXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgbkEgPSBiLl9lbXNjcmlwdGVuX2VudW1fUEhZX1NjYWxhclR5cGVfUEhZX0lOVEVHRVIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChuQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9QSFlfU2NhbGFyVHlwZV9QSFlfSU5URUdFUiA9IGIuYXNtLlJ4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIG9BID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9TSE9SVCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKG9BID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9TSE9SVCA9IGIuYXNtLlN4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgICB9CiAgICAgICAgICAsIHBBID0gYi5fZW1zY3JpcHRlbl9lbnVtX1BIWV9TY2FsYXJUeXBlX1BIWV9GSVhFRFBPSU5UODggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIChwQSA9IGIuX2Vtc2NyaXB0ZW5fZW51bV9QSFlfU2NhbGFyVHlwZV9QSFlfRklYRURQT0lOVDg4ID0gYi5hc20uVHgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICAgICwgcUEgPSBiLl9lbXNjcmlwdGVuX2VudW1fUEhZX1NjYWxhclR5cGVfUEhZX1VDSEFSID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAocUEgPSBiLl9lbXNjcmlwdGVuX2VudW1fUEhZX1NjYWxhclR5cGVfUEhZX1VDSEFSID0gYi5hc20uVXgpLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYi5fbWFsbG9jID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gKGIuX21hbGxvYyA9IGIuYXNtLlZ4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLl9mcmVlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gKGIuX2ZyZWUgPSBiLmFzbS5XeCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYi5keW5DYWxsX3ZpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gKGIuZHluQ2FsbF92aSA9IGIuYXNtLlh4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLmR5bkNhbGxfdiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIChiLmR5bkNhbGxfdiA9IGIuYXNtLll4KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLmFzbSA9IGFiOwogICAgICAgIGIuVVRGOFRvU3RyaW5nID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgcmV0dXJuIGEgPyB4YShBYSwgYSwgYykgOiAiIgogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYi5hZGRGdW5jdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIGlmICghcmEpIHsKICAgICAgICAgICAgcmEgPSBuZXcgV2Vha01hcDsKICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCB1YS5sZW5ndGg7IGQrKykgewogICAgICAgICAgICAgIHZhciBlID0gdWEuZ2V0KGQpOwogICAgICAgICAgICAgIGUgJiYgcmEuc2V0KGUsIGQpCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChyYS5oYXMoYSkpCiAgICAgICAgICAgIGEgPSByYS5nZXQoYSk7CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKHFhLmxlbmd0aCkKICAgICAgICAgICAgICBkID0gcWEucG9wKCk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGQgPSB1YS5sZW5ndGg7CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHVhLmdyb3coMSkKICAgICAgICAgICAgICB9IGNhdGNoIChQKSB7CiAgICAgICAgICAgICAgICBpZiAoIShQIGluc3RhbmNlb2YgUmFuZ2VFcnJvcikpCiAgICAgICAgICAgICAgICAgIHRocm93IFA7CiAgICAgICAgICAgICAgICB0aHJvdyAiVW5hYmxlIHRvIGdyb3cgd2FzbSB0YWJsZS4gU2V0IEFMTE9XX1RBQkxFX0dST1dUSC4iOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIHVhLnNldChkLCBhKQogICAgICAgICAgICB9IGNhdGNoIChQKSB7CiAgICAgICAgICAgICAgaWYgKCEoUCBpbnN0YW5jZW9mIFR5cGVFcnJvcikpCiAgICAgICAgICAgICAgICB0aHJvdyBQOwogICAgICAgICAgICAgIGFzc2VydCgidW5kZWZpbmVkIiAhPT0gdHlwZW9mIGMsICJNaXNzaW5nIHNpZ25hdHVyZSBhcmd1bWVudCB0byBhZGRGdW5jdGlvbiIpOwogICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09PSB0eXBlb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgIHZhciBmID0gewogICAgICAgICAgICAgICAgICBpOiAiaTMyIiwKICAgICAgICAgICAgICAgICAgajogImk2NCIsCiAgICAgICAgICAgICAgICAgIGY6ICJmMzIiLAogICAgICAgICAgICAgICAgICBkOiAiZjY0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAsIG0gPSB7CiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFtdLAogICAgICAgICAgICAgICAgICByZXN1bHRzOiAidiIgPT0gY1swXSA/IFtdIDogW2ZbY1swXV1dCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZm9yIChlID0gMTsgZSA8IGMubGVuZ3RoOyArK2UpCiAgICAgICAgICAgICAgICAgIG0ucGFyYW1ldGVycy5wdXNoKGZbY1tlXV0pOwogICAgICAgICAgICAgICAgYyA9IG5ldyBXZWJBc3NlbWJseS5GdW5jdGlvbihtLGEpCiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGYgPSBbMSwgMCwgMSwgOTZdOwogICAgICAgICAgICAgICAgbSA9IGMuc2xpY2UoMCwgMSk7CiAgICAgICAgICAgICAgICBjID0gYy5zbGljZSgxKTsKICAgICAgICAgICAgICAgIHZhciBDID0gewogICAgICAgICAgICAgICAgICBpOiAxMjcsCiAgICAgICAgICAgICAgICAgIGo6IDEyNiwKICAgICAgICAgICAgICAgICAgZjogMTI1LAogICAgICAgICAgICAgICAgICBkOiAxMjQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBmLnB1c2goYy5sZW5ndGgpOwogICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IGMubGVuZ3RoOyArK2UpCiAgICAgICAgICAgICAgICAgIGYucHVzaChDW2NbZV1dKTsKICAgICAgICAgICAgICAgICJ2IiA9PSBtID8gZi5wdXNoKDApIDogZiA9IGYuY29uY2F0KFsxLCBDW21dXSk7CiAgICAgICAgICAgICAgICBmWzFdID0gZi5sZW5ndGggLSAyOwogICAgICAgICAgICAgICAgYyA9IG5ldyBVaW50OEFycmF5KFswLCA5NywgMTE1LCAxMDksIDEsIDAsIDAsIDBdLmNvbmNhdChmLCBbMiwgNywgMSwgMSwgMTAxLCAxLCAxMDIsIDAsIDAsIDcsIDUsIDEsIDEsIDEwMiwgMCwgMF0pKTsKICAgICAgICAgICAgICAgIGMgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGMpOwogICAgICAgICAgICAgICAgYyA9IChuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoYyx7CiAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICBmOiBhCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKS5leHBvcnRzLmYKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdWEuc2V0KGQsIGMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYSA9IHJhW2FdID0gZAogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHZhciByQTsKICAgICAgICBiLnRoZW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICBpZiAockEpCiAgICAgICAgICAgIGEoYik7CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIGMgPSBiLm9uUnVudGltZUluaXRpYWxpemVkOwogICAgICAgICAgICBiLm9uUnVudGltZUluaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgYyAmJiBjKCk7CiAgICAgICAgICAgICAgYShiKQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYgogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUGEgPSBmdW5jdGlvbiBzQSgpIHsKICAgICAgICAgIHJBIHx8IHRBKCk7CiAgICAgICAgICByQSB8fCAoUGEgPSBzQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHRBKCkgewogICAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgICAgaWYgKCFyQSAmJiAockEgPSAhMCwKICAgICAgICAgICAgICBiLmNhbGxlZFJ1biA9ICEwLAogICAgICAgICAgICAgICF2YSkpIHsKICAgICAgICAgICAgICBMYSA9ICEwOwogICAgICAgICAgICAgIEdhKElhKTsKICAgICAgICAgICAgICBHYShKYSk7CiAgICAgICAgICAgICAgaWYgKGIub25SdW50aW1lSW5pdGlhbGl6ZWQpCiAgICAgICAgICAgICAgICBiLm9uUnVudGltZUluaXRpYWxpemVkKCk7CiAgICAgICAgICAgICAgaWYgKGIucG9zdFJ1bikKICAgICAgICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYi5wb3N0UnVuICYmIChiLnBvc3RSdW4gPSBbYi5wb3N0UnVuXSk7IGIucG9zdFJ1bi5sZW5ndGg7ICkgewogICAgICAgICAgICAgICAgICB2YXIgYyA9IGIucG9zdFJ1bi5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBLYS51bnNoaWZ0KGMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgR2EoS2EpCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmICghKDAgPCBOYSkpIHsKICAgICAgICAgICAgaWYgKGIucHJlUnVuKQogICAgICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYi5wcmVSdW4gJiYgKGIucHJlUnVuID0gW2IucHJlUnVuXSk7IGIucHJlUnVuLmxlbmd0aDsgKQogICAgICAgICAgICAgICAgTWEoKTsKICAgICAgICAgICAgR2EoSGEpOwogICAgICAgICAgICAwIDwgTmEgfHwgKGIuc2V0U3RhdHVzID8gKGIuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksCiAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgIGIuc2V0U3RhdHVzKCIiKQogICAgICAgICAgICAgICAgfSwgMSk7CiAgICAgICAgICAgICAgICBhKCkKICAgICAgICAgICAgICB9LCAxKSkgOiBhKCkpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGIucnVuID0gdEE7CiAgICAgICAgaWYgKGIucHJlSW5pdCkKICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYi5wcmVJbml0ICYmIChiLnByZUluaXQgPSBbYi5wcmVJbml0XSk7IDAgPCBiLnByZUluaXQubGVuZ3RoOyApCiAgICAgICAgICAgIGIucHJlSW5pdC5wb3AoKSgpOwogICAgICAgIG5vRXhpdFJ1bnRpbWUgPSAhMDsKICAgICAgICB0QSgpOwogICAgICAgIGZ1bmN0aW9uIGcoKSB7fQogICAgICAgIGcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgZy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBnOwogICAgICAgIGcucHJvdG90eXBlLiR4ID0gZzsKICAgICAgICBnLmF5ID0ge307CiAgICAgICAgYi5XcmFwcGVyT2JqZWN0ID0gZzsKICAgICAgICBmdW5jdGlvbiBoKGEpIHsKICAgICAgICAgIHJldHVybiAoYSB8fCBnKS5heQogICAgICAgIH0KICAgICAgICBiLmdldENhY2hlID0gaDsKICAgICAgICBmdW5jdGlvbiBrKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gaChjKQogICAgICAgICAgICAsIGUgPSBkW2FdOwogICAgICAgICAgaWYgKGUpCiAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgZSA9IE9iamVjdC5jcmVhdGUoKGMgfHwgZykucHJvdG90eXBlKTsKICAgICAgICAgIGUuWnggPSBhOwogICAgICAgICAgcmV0dXJuIGRbYV0gPSBlCiAgICAgICAgfQogICAgICAgIGIud3JhcFBvaW50ZXIgPSBrOwogICAgICAgIGIuY2FzdE9iamVjdCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHJldHVybiBrKGEuWngsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLk5VTEwgPSBrKDApOwogICAgICAgIGIuZGVzdHJveSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIGlmICghYS5fX2Rlc3Ryb3lfXykKICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBDYW5ub3QgZGVzdHJveSBvYmplY3QuIChEaWQgeW91IGNyZWF0ZSBpdCB5b3Vyc2VsZj8pIjsKICAgICAgICAgIGEuX19kZXN0cm95X18oKTsKICAgICAgICAgIGRlbGV0ZSBoKGEuJHgpW2EuWnhdCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiLmNvbXBhcmUgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICByZXR1cm4gYS5aeCA9PT0gYy5aeAogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYi5nZXRQb2ludGVyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgcmV0dXJuIGEuWngKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGIuZ2V0Q2xhc3MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICByZXR1cm4gYS4keAogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdmFyIHVBID0gMAogICAgICAgICAgLCB2QSA9IDAKICAgICAgICAgICwgd0EgPSAwCiAgICAgICAgICAsIHhBID0gW10KICAgICAgICAgICwgeUEgPSAwOwogICAgICAgIGZ1bmN0aW9uIHpBKCkgewogICAgICAgICAgaWYgKHlBKSB7CiAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgeEEubGVuZ3RoOyBhKyspCiAgICAgICAgICAgICAgYi5fZnJlZSh4QVthXSk7CiAgICAgICAgICAgIHhBLmxlbmd0aCA9IDA7CiAgICAgICAgICAgIGIuX2ZyZWUodUEpOwogICAgICAgICAgICB1QSA9IDA7CiAgICAgICAgICAgIHZBICs9IHlBOwogICAgICAgICAgICB5QSA9IDAKICAgICAgICAgIH0KICAgICAgICAgIHVBIHx8ICh2QSArPSAxMjgsCiAgICAgICAgICAgIHVBID0gYi5fbWFsbG9jKHZBKSwKICAgICAgICAgICAgYXNzZXJ0KHVBKSk7CiAgICAgICAgICB3QSA9IDAKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gQUEoYSwgYykgewogICAgICAgICAgYXNzZXJ0KHVBKTsKICAgICAgICAgIGEgPSBhLmxlbmd0aCAqIGMuQllURVNfUEVSX0VMRU1FTlQ7CiAgICAgICAgICBhID0gYSArIDcgJiAtODsKICAgICAgICAgIHdBICsgYSA+PSB2QSA/IChhc3NlcnQoMCA8IGEpLAogICAgICAgICAgICB5QSArPSBhLAogICAgICAgICAgICBjID0gYi5fbWFsbG9jKGEpLAogICAgICAgICAgICB4QS5wdXNoKGMpKSA6IChjID0gdUEgKyB3QSwKICAgICAgICAgICAgd0EgKz0gYSk7CiAgICAgICAgICByZXR1cm4gYwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBCQShhLCBjLCBkKSB7CiAgICAgICAgICBkID4+Pj0gMDsKICAgICAgICAgIHN3aXRjaCAoYy5CWVRFU19QRVJfRUxFTUVOVCkgewogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgZCA+Pj49IDE7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBkID4+Pj0gMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgIGQgPj4+PSAzCiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IGEubGVuZ3RoOyBlKyspCiAgICAgICAgICAgIGNbZCArIGVdID0gYVtlXQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBDQShhKSB7CiAgICAgICAgICBpZiAoInN0cmluZyIgPT09IHR5cGVvZiBhKSB7CiAgICAgICAgICAgIGZvciAodmFyIGMgPSAwLCBkID0gMDsgZCA8IGEubGVuZ3RoOyArK2QpIHsKICAgICAgICAgICAgICB2YXIgZSA9IGEuY2hhckNvZGVBdChkKTsKICAgICAgICAgICAgICA1NTI5NiA8PSBlICYmIDU3MzQzID49IGUgJiYgKGUgPSA2NTUzNiArICgoZSAmIDEwMjMpIDw8IDEwKSB8IGEuY2hhckNvZGVBdCgrK2QpICYgMTAyMyk7CiAgICAgICAgICAgICAgMTI3ID49IGUgPyArK2MgOiBjID0gMjA0NyA+PSBlID8gYyArIDIgOiA2NTUzNSA+PSBlID8gYyArIDMgOiBjICsgNAogICAgICAgICAgICB9CiAgICAgICAgICAgIGMgPSBBcnJheShjICsgMSk7CiAgICAgICAgICAgIGUgPSBjLmxlbmd0aDsKICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgICAgIGlmICgwIDwgZSkgewogICAgICAgICAgICAgIGUgPSBkICsgZSAtIDE7CiAgICAgICAgICAgICAgZm9yICh2YXIgZiA9IDA7IGYgPCBhLmxlbmd0aDsgKytmKSB7CiAgICAgICAgICAgICAgICB2YXIgbSA9IGEuY2hhckNvZGVBdChmKTsKICAgICAgICAgICAgICAgIGlmICg1NTI5NiA8PSBtICYmIDU3MzQzID49IG0pIHsKICAgICAgICAgICAgICAgICAgdmFyIEMgPSBhLmNoYXJDb2RlQXQoKytmKTsKICAgICAgICAgICAgICAgICAgbSA9IDY1NTM2ICsgKChtICYgMTAyMykgPDwgMTApIHwgQyAmIDEwMjMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgxMjcgPj0gbSkgewogICAgICAgICAgICAgICAgICBpZiAoZCA+PSBlKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICBjW2QrK10gPSBtCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBpZiAoMjA0NyA+PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQgKyAxID49IGUpCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjW2QrK10gPSAxOTIgfCBtID4+IDYKICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoNjU1MzUgPj0gbSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGQgKyAyID49IGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgY1tkKytdID0gMjI0IHwgbSA+PiAxMgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZCArIDMgPj0gZSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjW2QrK10gPSAyNDAgfCBtID4+IDE4OwogICAgICAgICAgICAgICAgICAgICAgY1tkKytdID0gMTI4IHwgbSA+PiAxMiAmIDYzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNbZCsrXSA9IDEyOCB8IG0gPj4gNiAmIDYzCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY1tkKytdID0gMTI4IHwgbSAmIDYzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNbZF0gPSAwCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYSA9IEFBKGMsIHphKTsKICAgICAgICAgICAgQkEoYywgemEsIGEpCiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBEQShhKSB7CiAgICAgICAgICBpZiAoIm9iamVjdCIgPT09IHR5cGVvZiBhKSB7CiAgICAgICAgICAgIHZhciBjID0gQUEoYSwgQ2EpOwogICAgICAgICAgICBCQShhLCBDYSwgYyk7CiAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBFQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb2xsaXNpb25Xb3JsZCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgRUEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgRUEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRUE7CiAgICAgICAgRUEucHJvdG90eXBlLiR4ID0gRUE7CiAgICAgICAgRUEuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29sbGlzaW9uV29ybGQgPSBFQTsKICAgICAgICBFQS5wcm90b3R5cGUuZ2V0RGlzcGF0Y2hlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoYmIodGhpcy5aeCksIEZBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLnJheVRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBjYihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmdldFBhaXJDYWNoZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZGIodGhpcy5aeCksIEdBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmdldERpc3BhdGNoSW5mbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZWIodGhpcy5aeCksIGwpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUuYWRkQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gZmIoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBnYihlLCBhLCBjKSA6IGhiKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUucmVtb3ZlQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGliKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUuZ2V0QnJvYWRwaGFzZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoamIodGhpcy5aeCksIEhBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmNvbnZleFN3ZWVwVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIHZhciBtID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAga2IobSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVBLnByb3RvdHlwZS5jb250YWN0UGFpclRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBsYihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmNvbnRhY3RUZXN0ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBtYihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLnVwZGF0ZVNpbmdsZUFhYmIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgb2IoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVBLnByb3RvdHlwZS5zZXREZWJ1Z0RyYXdlciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBwYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUEucHJvdG90eXBlLmdldERlYnVnRHJhd2VyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhxYih0aGlzLlp4KSwgSUEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUuZGVidWdEcmF3V29ybGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJiKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQS5wcm90b3R5cGUuZGVidWdEcmF3T2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgc2IoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVBLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgdGIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0Q29sbGlzaW9uU2hhcGUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIG4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBuOwogICAgICAgIG4ucHJvdG90eXBlLiR4ID0gbjsKICAgICAgICBuLmF5ID0ge307CiAgICAgICAgYi5idENvbGxpc2lvblNoYXBlID0gbjsKICAgICAgICBuLnByb3RvdHlwZS5zZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdWIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIG4ucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodmIodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBuLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHdiKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBuLnByb3RvdHlwZS5zZXRNYXJnaW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeGIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIG4ucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHliKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBuLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgemIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHEoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0Q29sbGlzaW9uT2JqZWN0LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBxLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIHEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gcTsKICAgICAgICBxLnByb3RvdHlwZS4keCA9IHE7CiAgICAgICAgcS5heSA9IHt9OwogICAgICAgIGIuYnRDb2xsaXNpb25PYmplY3QgPSBxOwogICAgICAgIHEucHJvdG90eXBlLnNldEFuaXNvdHJvcGljRnJpY3Rpb24gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEFiKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5nZXRDb2xsaXNpb25TaGFwZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQmIodGhpcy5aeCksIG4pCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5zZXRDb250YWN0UHJvY2Vzc2luZ1RocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBDYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuc2V0QWN0aXZhdGlvblN0YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIERiKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5mb3JjZUFjdGl2YXRpb25TdGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBFYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuYWN0aXZhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdm9pZCAwID09PSBhID8gRmIoYykgOiBHYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuaXNBY3RpdmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUhiKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5pc0tpbmVtYXRpY09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhSWIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLmlzU3RhdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFKYih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuaXNTdGF0aWNPcktpbmVtYXRpY09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhS2IodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLmdldFJlc3RpdHV0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gTGIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLmdldEZyaWN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gTWIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLmdldFJvbGxpbmdGcmljdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE5iKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5zZXRSZXN0aXR1dGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBPYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuc2V0RnJpY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUGIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLnNldFJvbGxpbmdGcmljdGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBRYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuZ2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFJiKHRoaXMuWngpLCByKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuZ2V0Q29sbGlzaW9uRmxhZ3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBTYih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuc2V0Q29sbGlzaW9uRmxhZ3MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVGIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLnNldFdvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFViKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5zZXRDb2xsaXNpb25TaGFwZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBWYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuc2V0Q2NkTW90aW9uVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFhiKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5zZXRDY2RTd2VwdFNwaGVyZVJhZGl1cyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBZYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuZ2V0VXNlckluZGV4ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gWmIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLnNldFVzZXJJbmRleCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICAkYihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcS5wcm90b3R5cGUuZ2V0VXNlclBvaW50ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGFjKHRoaXMuWngpLCBKQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLnNldFVzZXJQb2ludGVyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGJjKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBxLnByb3RvdHlwZS5nZXRCcm9hZHBoYXNlSGFuZGxlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhjYyh0aGlzLlp4KSwgdCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBkYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gdSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnREeW5hbWljc1dvcmxkLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB1LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRUEucHJvdG90eXBlKTsKICAgICAgICB1LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHU7CiAgICAgICAgdS5wcm90b3R5cGUuJHggPSB1OwogICAgICAgIHUuYXkgPSB7fTsKICAgICAgICBiLmJ0RHluYW1pY3NXb3JsZCA9IHU7CiAgICAgICAgdS5wcm90b3R5cGUuYWRkQWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGVjKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5yZW1vdmVBY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZmMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmdldFNvbHZlckluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGhjKHRoaXMuWngpLCB2KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2sgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGMgPyBpYyhlLCBhKSA6IHZvaWQgMCA9PT0gZCA/IGpjKGUsIGEsIGMpIDoga2MoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmdldERpc3BhdGNoZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGxjKHRoaXMuWngpLCBGQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLnJheVRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBtYyhlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuZ2V0UGFpckNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhuYyh0aGlzLlp4KSwgR0EpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5nZXREaXNwYXRjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKG9jKHRoaXMuWngpLCBsKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuYWRkQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gcGMoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBxYyhlLCBhLCBjKSA6IHJjKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5yZW1vdmVDb2xsaXNpb25PYmplY3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgc2MoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmdldEJyb2FkcGhhc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHRjKHRoaXMuWngpLCBIQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmNvbnZleFN3ZWVwVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIHZhciBtID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgdWMobSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLmNvbnRhY3RQYWlyVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHZjKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5jb250YWN0VGVzdCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgd2MoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLnVwZGF0ZVNpbmdsZUFhYmIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeGMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHUucHJvdG90eXBlLnNldERlYnVnRHJhd2VyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHljKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5nZXREZWJ1Z0RyYXdlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoemModGhpcy5aeCksIElBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuZGVidWdEcmF3V29ybGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEFjKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1LnByb3RvdHlwZS5kZWJ1Z0RyYXdPYmplY3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBCYyhlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIENjKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBLQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRUeXBlZENvbnN0cmFpbnQsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIEtBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEtBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEtBOwogICAgICAgIEtBLnByb3RvdHlwZS4keCA9IEtBOwogICAgICAgIEtBLmF5ID0ge307CiAgICAgICAgYi5idFR5cGVkQ29uc3RyYWludCA9IEtBOwogICAgICAgIEtBLnByb3RvdHlwZS5lbmFibGVGZWVkYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBEYyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgS0EucHJvdG90eXBlLmdldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEVjKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBLQS5wcm90b3R5cGUuc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZjKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBLQS5wcm90b3R5cGUuZ2V0UGFyYW0gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiBHYyhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgS0EucHJvdG90eXBlLnNldFBhcmFtID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgSGMoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEtBLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgSWModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIExBKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidENvbmNhdmVTaGFwZSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgTEEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgTEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTEE7CiAgICAgICAgTEEucHJvdG90eXBlLiR4ID0gTEE7CiAgICAgICAgTEEuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29uY2F2ZVNoYXBlID0gTEE7CiAgICAgICAgTEEucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBKYyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTEEucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoS2ModGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMQS5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBMYyhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTEEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBNYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gTUEoYSwgYykgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gTmMoYSwgYyk7CiAgICAgICAgICBoKE1BKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgTUEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgTUEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTUE7CiAgICAgICAgTUEucHJvdG90eXBlLiR4ID0gTUE7CiAgICAgICAgTUEuYXkgPSB7fTsKICAgICAgICBiLmJ0Q2Fwc3VsZVNoYXBlID0gTUE7CiAgICAgICAgTUEucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBPYyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFBjKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNQS5wcm90b3R5cGUuZ2V0VXBBeGlzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUWModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE1BLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBSYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLmdldEhhbGZIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBTYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBUYyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoVWModGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNQS5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBWYyhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTUEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBXYyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gSUEoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0SURlYnVnRHJhdywgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgSUEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgSUEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSUE7CiAgICAgICAgSUEucHJvdG90eXBlLiR4ID0gSUE7CiAgICAgICAgSUEuYXkgPSB7fTsKICAgICAgICBiLmJ0SURlYnVnRHJhdyA9IElBOwogICAgICAgIElBLnByb3RvdHlwZS5kcmF3TGluZSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIFhjKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJQS5wcm90b3R5cGUuZHJhd0NvbnRhY3RQb2ludCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIHZhciBtID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgWWMobSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElBLnByb3RvdHlwZS5yZXBvcnRFcnJvcldhcm5pbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgYSA9IGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhID8gYS5aeCA6IENBKGEpOwogICAgICAgICAgWmMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElBLnByb3RvdHlwZS5kcmF3M2RUZXh0ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgekEoKTsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjID0gYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgPyBjLlp4IDogQ0EoYyk7CiAgICAgICAgICAkYyhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSUEucHJvdG90eXBlLnNldERlYnVnTW9kZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBhZChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSUEucHJvdG90eXBlLmdldERlYnVnTW9kZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGJkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGNkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBOQShhKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gYSA/IGRkKCkgOiBlZChhKTsKICAgICAgICAgIGgoTkEpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBOQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBOQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBOQTsKICAgICAgICBOQS5wcm90b3R5cGUuJHggPSBOQTsKICAgICAgICBOQS5heSA9IHt9OwogICAgICAgIGIuYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbiA9IE5BOwogICAgICAgIE5BLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZmQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIE9BKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidFRyaWFuZ2xlTWVzaFNoYXBlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBPQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExBLnByb3RvdHlwZSk7CiAgICAgICAgT0EucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gT0E7CiAgICAgICAgT0EucHJvdG90eXBlLiR4ID0gT0E7CiAgICAgICAgT0EuYXkgPSB7fTsKICAgICAgICBiLmJ0VHJpYW5nbGVNZXNoU2hhcGUgPSBPQTsKICAgICAgICBPQS5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGdkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPQS5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhoZCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9BLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGlkKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGpkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiB3KCkgewogICAgICAgICAgdGhpcy5aeCA9IGtkKCk7CiAgICAgICAgICBoKHcpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICB3LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocS5wcm90b3R5cGUpOwogICAgICAgIHcucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdzsKICAgICAgICB3LnByb3RvdHlwZS4keCA9IHc7CiAgICAgICAgdy5heSA9IHt9OwogICAgICAgIGIuYnRHaG9zdE9iamVjdCA9IHc7CiAgICAgICAgdy5wcm90b3R5cGUuZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbGQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmdldE92ZXJsYXBwaW5nT2JqZWN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKG1kKGMsIGEpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0QW5pc290cm9waWNGcmljdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgbmQoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmdldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhvZCh0aGlzLlp4KSwgbikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLnNldENvbnRhY3RQcm9jZXNzaW5nVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHBkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5zZXRBY3RpdmF0aW9uU3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcWQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmZvcmNlQWN0aXZhdGlvblN0YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5hY3RpdmF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGEgPyBzZChjKSA6IHRkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5pc0FjdGl2ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhdWQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmlzS2luZW1hdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISF2ZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuaXNTdGF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIXdkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISF4ZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuZ2V0UmVzdGl0dXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB5ZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuZ2V0RnJpY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB6ZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuZ2V0Um9sbGluZ0ZyaWN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gQWQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLnNldFJlc3RpdHV0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEJkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5zZXRGcmljdGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBDZChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0Um9sbGluZ0ZyaWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIERkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5nZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoRWQodGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5nZXRDb2xsaXNpb25GbGFncyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEZkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5zZXRDb2xsaXNpb25GbGFncyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBHZChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSGQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLnNldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIElkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5zZXRDY2RNb3Rpb25UaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSmQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLnNldENjZFN3ZXB0U3BoZXJlUmFkaXVzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEtkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5nZXRVc2VySW5kZXggPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMZCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0VXNlckluZGV4ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE1kKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3LnByb3RvdHlwZS5nZXRVc2VyUG9pbnRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTmQodGhpcy5aeCksIEpBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuc2V0VXNlclBvaW50ZXIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgT2QoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHcucHJvdG90eXBlLmdldEJyb2FkcGhhc2VIYW5kbGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFBkKHRoaXMuWngpLCB0KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdy5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFFkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBQQShhLCBjKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBSZChhLCBjKTsKICAgICAgICAgIGgoUEEpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBQQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKTsKICAgICAgICBQQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBQQTsKICAgICAgICBQQS5wcm90b3R5cGUuJHggPSBQQTsKICAgICAgICBQQS5heSA9IHt9OwogICAgICAgIGIuYnRDb25lU2hhcGUgPSBQQTsKICAgICAgICBQQS5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFNkKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBQQS5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhUZCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFBBLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIFVkKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBQQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFZkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBRQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRBY3Rpb25JbnRlcmZhY2UsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFFBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFFBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFFBOwogICAgICAgIFFBLnByb3RvdHlwZS4keCA9IFFBOwogICAgICAgIFFBLmF5ID0ge307CiAgICAgICAgYi5idEFjdGlvbkludGVyZmFjZSA9IFFBOwogICAgICAgIFFBLnByb3RvdHlwZS51cGRhdGVBY3Rpb24gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIFdkKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBRQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFhkKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBwKGEsIGMsIGQpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGEgPyBZZCgpIDogdm9pZCAwID09PSBjID8gX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjNfYnRWZWN0b3IzXzEoYSkgOiB2b2lkIDAgPT09IGQgPyBfZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yM19idFZlY3RvcjNfMihhLCBjKSA6IFpkKGEsIGMsIGQpOwogICAgICAgICAgaChwKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgcC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBwLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHA7CiAgICAgICAgcC5wcm90b3R5cGUuJHggPSBwOwogICAgICAgIHAuYXkgPSB7fTsKICAgICAgICBiLmJ0VmVjdG9yMyA9IHA7CiAgICAgICAgcC5wcm90b3R5cGUubGVuZ3RoID0gcC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gJGQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnggPSBwLnByb3RvdHlwZS54ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gYWUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnkgPSBwLnByb3RvdHlwZS55ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gYmUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnogPSBwLnByb3RvdHlwZS56ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gY2UodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZGUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZWUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZmUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnNldFZhbHVlID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZ2UoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLm5vcm1hbGl6ZSA9IHAucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgaGUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHAucHJvdG90eXBlLnJvdGF0ZSA9IHAucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuIGsoaWUoZCwgYSwgYyksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5kb3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGplKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5vcF9tdWwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoa2UoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5vcF9hZGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsobGUoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5vcF9zdWIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsobWUoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBwLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgbmUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIFJBKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidFZlaGljbGVSYXljYXN0ZXIsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFJBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFJBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJBOwogICAgICAgIFJBLnByb3RvdHlwZS4keCA9IFJBOwogICAgICAgIFJBLmF5ID0ge307CiAgICAgICAgYi5idFZlaGljbGVSYXljYXN0ZXIgPSBSQTsKICAgICAgICBSQS5wcm90b3R5cGUuY2FzdFJheSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIG9lKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHBlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBTQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRRdWFkV29yZCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgU0EucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgU0EucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU0E7CiAgICAgICAgU0EucHJvdG90eXBlLiR4ID0gU0E7CiAgICAgICAgU0EuYXkgPSB7fTsKICAgICAgICBiLmJ0UXVhZFdvcmQgPSBTQTsKICAgICAgICBTQS5wcm90b3R5cGUueCA9IFNBLnByb3RvdHlwZS54ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gcWUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFNBLnByb3RvdHlwZS55ID0gU0EucHJvdG90eXBlLnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiByZSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgU0EucHJvdG90eXBlLnogPSBTQS5wcm90b3R5cGUueiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHNlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTQS5wcm90b3R5cGUudyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHRlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTQS5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB1ZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgU0EucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdmUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFNBLnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHdlKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTQS5wcm90b3R5cGUuc2V0VyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB4ZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgU0EucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB5ZSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gVEEoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB6ZShhKTsKICAgICAgICAgIGgoVEEpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBUQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKTsKICAgICAgICBUQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUQTsKICAgICAgICBUQS5wcm90b3R5cGUuJHggPSBUQTsKICAgICAgICBUQS5heSA9IHt9OwogICAgICAgIGIuYnRDeWxpbmRlclNoYXBlID0gVEE7CiAgICAgICAgVEEucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBBZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVEEucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEJlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBUQS5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIENlKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBUQS5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhEZSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFRBLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEVlKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBUQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEZlKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiB4KGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gR2UoYSwgYywgZCwgZSk7CiAgICAgICAgICBoKHgpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICB4LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodS5wcm90b3R5cGUpOwogICAgICAgIHgucHJvdG90eXBlLmNvbnN0cnVjdG9yID0geDsKICAgICAgICB4LnByb3RvdHlwZS4keCA9IHg7CiAgICAgICAgeC5heSA9IHt9OwogICAgICAgIGIuYnREaXNjcmV0ZUR5bmFtaWNzV29ybGQgPSB4OwogICAgICAgIHgucHJvdG90eXBlLnNldEdyYXZpdHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSGUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmdldEdyYXZpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEllKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuYWRkUmlnaWRCb2R5ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gSmUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBfZW1zY3JpcHRlbl9iaW5kX2J0RGlzY3JldGVEeW5hbWljc1dvcmxkX2FkZFJpZ2lkQm9keV8yKGUsIGEsIGMpIDogS2UoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLnJlbW92ZVJpZ2lkQm9keSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBMZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gTWUoZCwgYSkgOiBOZShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUucmVtb3ZlQ29uc3RyYWludCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBPZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuc3RlcFNpbXVsYXRpb24gPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBjID8gUGUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBRZShlLCBhLCBjKSA6IFJlKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5zZXRDb250YWN0QWRkZWRDYWxsYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTZShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuc2V0Q29udGFjdFByb2Nlc3NlZENhbGxiYWNrID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFRlKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5zZXRDb250YWN0RGVzdHJveWVkQ2FsbGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVWUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmdldERpc3BhdGNoZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFZlKHRoaXMuWngpLCBGQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLnJheVRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBXZShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuZ2V0UGFpckNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhYZSh0aGlzLlp4KSwgR0EpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5nZXREaXNwYXRjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFllKHRoaXMuWngpLCBsKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuYWRkQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gWmUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyAkZShlLCBhLCBjKSA6IGFmKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5yZW1vdmVDb2xsaXNpb25PYmplY3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYmYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmdldEJyb2FkcGhhc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGNmKHRoaXMuWngpLCBIQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmNvbnZleFN3ZWVwVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIHZhciBtID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgZGYobSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmNvbnRhY3RQYWlyVGVzdCA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGVmKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5jb250YWN0VGVzdCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZmYoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLnVwZGF0ZVNpbmdsZUFhYmIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ2YoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLnNldERlYnVnRHJhd2VyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGhmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5nZXREZWJ1Z0RyYXdlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoamYodGhpcy5aeCksIElBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuZGVidWdEcmF3V29ybGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGtmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5kZWJ1Z0RyYXdPYmplY3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBsZihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuYWRkQWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG1mKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4LnByb3RvdHlwZS5yZW1vdmVBY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbmYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLmdldFNvbHZlckluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKG9mKHRoaXMuWngpLCB2KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeC5wcm90b3R5cGUuc2V0SW50ZXJuYWxUaWNrQ2FsbGJhY2sgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGMgPyBwZihlLCBhKSA6IHZvaWQgMCA9PT0gZCA/IHFmKGUsIGEsIGMpIDogcmYoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHgucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBzZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gVUEoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0Q29udmV4U2hhcGUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFVBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpOwogICAgICAgIFVBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFVBOwogICAgICAgIFVBLnByb3RvdHlwZS4keCA9IFVBOwogICAgICAgIFVBLmF5ID0ge307CiAgICAgICAgYi5idENvbnZleFNoYXBlID0gVUE7CiAgICAgICAgVUEucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0ZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVUEucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodWYodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVQS5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB2ZihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVUEucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB3ZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVUEucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHhmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHlmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBGQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnREaXNwYXRjaGVyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBGQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBGQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBGQTsKICAgICAgICBGQS5wcm90b3R5cGUuJHggPSBGQTsKICAgICAgICBGQS5heSA9IHt9OwogICAgICAgIGIuYnREaXNwYXRjaGVyID0gRkE7CiAgICAgICAgRkEucHJvdG90eXBlLmdldE51bU1hbmlmb2xkcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHpmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGQS5wcm90b3R5cGUuZ2V0TWFuaWZvbGRCeUluZGV4SW50ZXJuYWwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoQWYoYywgYSksIFZBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRkEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBCZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gV0EoYSwgYywgZCwgZSwgZikgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBlID8gQ2YoYSwgYywgZCkgOiB2b2lkIDAgPT09IGYgPyBfZW1zY3JpcHRlbl9iaW5kX2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50X2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50XzQoYSwgYywgZCwgZSkgOiBEZihhLCBjLCBkLCBlLCBmKTsKICAgICAgICAgIGgoV0EpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBXQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEtBLnByb3RvdHlwZSk7CiAgICAgICAgV0EucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gV0E7CiAgICAgICAgV0EucHJvdG90eXBlLiR4ID0gV0E7CiAgICAgICAgV0EuYXkgPSB7fTsKICAgICAgICBiLmJ0R2VuZXJpYzZEb2ZDb25zdHJhaW50ID0gV0E7CiAgICAgICAgV0EucHJvdG90eXBlLnNldExpbmVhckxvd2VyTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRWYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdBLnByb3RvdHlwZS5zZXRMaW5lYXJVcHBlckxpbWl0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQS5wcm90b3R5cGUuc2V0QW5ndWxhckxvd2VyTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgR2YoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdBLnByb3RvdHlwZS5zZXRBbmd1bGFyVXBwZXJMaW1pdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBIZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0EucHJvdG90eXBlLmdldEZyYW1lT2Zmc2V0QSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoSWYodGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQS5wcm90b3R5cGUuZW5hYmxlRmVlZGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSmYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdBLnByb3RvdHlwZS5nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBLZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0EucHJvdG90eXBlLnNldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBMZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0EucHJvdG90eXBlLmdldFBhcmFtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICByZXR1cm4gTWYoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdBLnByb3RvdHlwZS5zZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIE5mKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIE9mKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBYQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRTdHJpZGluZ01lc2hJbnRlcmZhY2UsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFhBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFhBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFhBOwogICAgICAgIFhBLnByb3RvdHlwZS4keCA9IFhBOwogICAgICAgIFhBLmF5ID0ge307CiAgICAgICAgYi5idFN0cmlkaW5nTWVzaEludGVyZmFjZSA9IFhBOwogICAgICAgIFhBLnByb3RvdHlwZS5zZXRTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFBmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFFmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBZQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRNb3Rpb25TdGF0ZSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgWUEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgWUEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gWUE7CiAgICAgICAgWUEucHJvdG90eXBlLiR4ID0gWUE7CiAgICAgICAgWUEuYXkgPSB7fTsKICAgICAgICBiLmJ0TW90aW9uU3RhdGUgPSBZQTsKICAgICAgICBZQS5wcm90b3R5cGUuZ2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUmYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFlBLnByb3RvdHlwZS5zZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTZihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWUEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBUZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24geSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgQ29udmV4UmVzdWx0Q2FsbGJhY2ssIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIHkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB5OwogICAgICAgIHkucHJvdG90eXBlLiR4ID0geTsKICAgICAgICB5LmF5ID0ge307CiAgICAgICAgYi5Db252ZXhSZXN1bHRDYWxsYmFjayA9IHk7CiAgICAgICAgeS5wcm90b3R5cGUuaGFzSGl0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFVZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeS5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXAgPSB5LnByb3RvdHlwZS5ieSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFZmKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB5LnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cCA9IHkucHJvdG90eXBlLmR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFdmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsICJtX2NvbGxpc2lvbkZpbHRlckdyb3VwIiwgewogICAgICAgICAgZ2V0OiB5LnByb3RvdHlwZS5ieSwKICAgICAgICAgIHNldDogeS5wcm90b3R5cGUuZHkKICAgICAgICB9KTsKICAgICAgICB5LnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrID0geS5wcm90b3R5cGUuY3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBYZih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeS5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uRmlsdGVyTWFzayA9IHkucHJvdG90eXBlLmV5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFlmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsICJtX2NvbGxpc2lvbkZpbHRlck1hc2siLCB7CiAgICAgICAgICBnZXQ6IHkucHJvdG90eXBlLmN5LAogICAgICAgICAgc2V0OiB5LnByb3RvdHlwZS5leQogICAgICAgIH0pOwogICAgICAgIHkucHJvdG90eXBlLmdldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbiA9IHkucHJvdG90eXBlLmZ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gWmYodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHkucHJvdG90eXBlLnNldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbiA9IHkucHJvdG90eXBlLmd5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgICRmKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsICJtX2Nsb3Nlc3RIaXRGcmFjdGlvbiIsIHsKICAgICAgICAgIGdldDogeS5wcm90b3R5cGUuZnksCiAgICAgICAgICBzZXQ6IHkucHJvdG90eXBlLmd5CiAgICAgICAgfSk7CiAgICAgICAgeS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGFnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBaQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgQ29udGFjdFJlc3VsdENhbGxiYWNrLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBaQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBaQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBaQTsKICAgICAgICBaQS5wcm90b3R5cGUuJHggPSBaQTsKICAgICAgICBaQS5heSA9IHt9OwogICAgICAgIGIuQ29udGFjdFJlc3VsdENhbGxiYWNrID0gWkE7CiAgICAgICAgWkEucHJvdG90eXBlLmFkZFNpbmdsZVJlc3VsdCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYsIG0sIEMpIHsKICAgICAgICAgIHZhciBQID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgbSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIG0gJiYgKG0gPSBtLlp4KTsKICAgICAgICAgIEMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBDICYmIChDID0gQy5aeCk7CiAgICAgICAgICByZXR1cm4gYmcoUCwgYSwgYywgZCwgZSwgZiwgbSwgQykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFpBLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgY2codGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uICRBKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidFNvZnRCb2R5U29sdmVyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICAkQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICAkQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkQTsKICAgICAgICAkQS5wcm90b3R5cGUuJHggPSAkQTsKICAgICAgICAkQS5heSA9IHt9OwogICAgICAgIGIuYnRTb2Z0Qm9keVNvbHZlciA9ICRBOwogICAgICAgICRBLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZGcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHooKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIFJheVJlc3VsdENhbGxiYWNrLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB6LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIHoucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gejsKICAgICAgICB6LnByb3RvdHlwZS4keCA9IHo7CiAgICAgICAgei5heSA9IHt9OwogICAgICAgIGIuUmF5UmVzdWx0Q2FsbGJhY2sgPSB6OwogICAgICAgIHoucHJvdG90eXBlLmhhc0hpdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhZWcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHoucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwID0gei5wcm90b3R5cGUuYnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBmZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgei5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXAgPSB6LnByb3RvdHlwZS5keSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBnZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCAibV9jb2xsaXNpb25GaWx0ZXJHcm91cCIsIHsKICAgICAgICAgIGdldDogei5wcm90b3R5cGUuYnksCiAgICAgICAgICBzZXQ6IHoucHJvdG90eXBlLmR5CiAgICAgICAgfSk7CiAgICAgICAgei5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFzayA9IHoucHJvdG90eXBlLmN5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gaGcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHoucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbkZpbHRlck1hc2sgPSB6LnByb3RvdHlwZS5leSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBpZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCAibV9jb2xsaXNpb25GaWx0ZXJNYXNrIiwgewogICAgICAgICAgZ2V0OiB6LnByb3RvdHlwZS5jeSwKICAgICAgICAgIHNldDogei5wcm90b3R5cGUuZXkKICAgICAgICB9KTsKICAgICAgICB6LnByb3RvdHlwZS5nZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb24gPSB6LnByb3RvdHlwZS5meSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGpnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB6LnByb3RvdHlwZS5zZXRfbV9jbG9zZXN0SGl0RnJhY3Rpb24gPSB6LnByb3RvdHlwZS5neSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBrZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCAibV9jbG9zZXN0SGl0RnJhY3Rpb24iLCB7CiAgICAgICAgICBnZXQ6IHoucHJvdG90eXBlLmZ5LAogICAgICAgICAgc2V0OiB6LnByb3RvdHlwZS5neQogICAgICAgIH0pOwogICAgICAgIHoucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbk9iamVjdCA9IHoucHJvdG90eXBlLmh5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhsZyh0aGlzLlp4KSwgcSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHoucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbk9iamVjdCA9IHoucHJvdG90eXBlLm95ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG1nKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsICJtX2NvbGxpc2lvbk9iamVjdCIsIHsKICAgICAgICAgIGdldDogei5wcm90b3R5cGUuaHksCiAgICAgICAgICBzZXQ6IHoucHJvdG90eXBlLm95CiAgICAgICAgfSk7CiAgICAgICAgei5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIG5nKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBhQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRNYXRyaXgzeDMsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIGFCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIGFCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGFCOwogICAgICAgIGFCLnByb3RvdHlwZS4keCA9IGFCOwogICAgICAgIGFCLmF5ID0ge307CiAgICAgICAgYi5idE1hdHJpeDN4MyA9IGFCOwogICAgICAgIGFCLnByb3RvdHlwZS5zZXRFdWxlclpZWCA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIG9nKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBhQi5wcm90b3R5cGUuZ2V0Um90YXRpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcGcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGFCLnByb3RvdHlwZS5nZXRSb3cgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsocWcoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBhQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBiQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRTY2FsYXJBcnJheSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgYkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgYkIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gYkI7CiAgICAgICAgYkIucHJvdG90eXBlLiR4ID0gYkI7CiAgICAgICAgYkIuYXkgPSB7fTsKICAgICAgICBiLmJ0U2NhbGFyQXJyYXkgPSBiQjsKICAgICAgICBiQi5wcm90b3R5cGUuc2l6ZSA9IGJCLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gc2codGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJCLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gdGcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgdWcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEEoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIE1hdGVyaWFsLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBBLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQTsKICAgICAgICBBLnByb3RvdHlwZS4keCA9IEE7CiAgICAgICAgQS5heSA9IHt9OwogICAgICAgIGIuTWF0ZXJpYWwgPSBBOwogICAgICAgIEEucHJvdG90eXBlLmdldF9tX2tMU1QgPSBBLnByb3RvdHlwZS5qQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHZnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBBLnByb3RvdHlwZS5zZXRfbV9rTFNUID0gQS5wcm90b3R5cGUuUUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgd2coYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwgIm1fa0xTVCIsIHsKICAgICAgICAgIGdldDogQS5wcm90b3R5cGUuakEsCiAgICAgICAgICBzZXQ6IEEucHJvdG90eXBlLlFDCiAgICAgICAgfSk7CiAgICAgICAgQS5wcm90b3R5cGUuZ2V0X21fa0FTVCA9IEEucHJvdG90eXBlLmlBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4geGcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEEucHJvdG90eXBlLnNldF9tX2tBU1QgPSBBLnByb3RvdHlwZS5QQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB5ZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAibV9rQVNUIiwgewogICAgICAgICAgZ2V0OiBBLnByb3RvdHlwZS5pQSwKICAgICAgICAgIHNldDogQS5wcm90b3R5cGUuUEMKICAgICAgICB9KTsKICAgICAgICBBLnByb3RvdHlwZS5nZXRfbV9rVlNUID0gQS5wcm90b3R5cGUua0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB6Zyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQS5wcm90b3R5cGUuc2V0X21fa1ZTVCA9IEEucHJvdG90eXBlLlJDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEFnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICJtX2tWU1QiLCB7CiAgICAgICAgICBnZXQ6IEEucHJvdG90eXBlLmtBLAogICAgICAgICAgc2V0OiBBLnByb3RvdHlwZS5SQwogICAgICAgIH0pOwogICAgICAgIEEucHJvdG90eXBlLmdldF9tX2ZsYWdzID0gQS5wcm90b3R5cGUuUnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBCZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQS5wcm90b3R5cGUuc2V0X21fZmxhZ3MgPSBBLnByb3RvdHlwZS54QyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBDZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAibV9mbGFncyIsIHsKICAgICAgICAgIGdldDogQS5wcm90b3R5cGUuUnosCiAgICAgICAgICBzZXQ6IEEucHJvdG90eXBlLnhDCiAgICAgICAgfSk7CiAgICAgICAgQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIERnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBsKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidERpc3BhdGNoZXJJbmZvLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIGwucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbDsKICAgICAgICBsLnByb3RvdHlwZS4keCA9IGw7CiAgICAgICAgbC5heSA9IHt9OwogICAgICAgIGIuYnREaXNwYXRjaGVySW5mbyA9IGw7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fdGltZVN0ZXAgPSBsLnByb3RvdHlwZS5YQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEVnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV90aW1lU3RlcCA9IGwucHJvdG90eXBlLkREID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX3RpbWVTdGVwIiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5YQSwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUuREQKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5nZXRfbV9zdGVwQ291bnQgPSBsLnByb3RvdHlwZS5PQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEdnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV9zdGVwQ291bnQgPSBsLnByb3RvdHlwZS51RCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBIZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGwucHJvdG90eXBlLCAibV9zdGVwQ291bnQiLCB7CiAgICAgICAgICBnZXQ6IGwucHJvdG90eXBlLk9BLAogICAgICAgICAgc2V0OiBsLnByb3RvdHlwZS51RAogICAgICAgIH0pOwogICAgICAgIGwucHJvdG90eXBlLmdldF9tX2Rpc3BhdGNoRnVuYyA9IGwucHJvdG90eXBlLkp6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSWcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGwucHJvdG90eXBlLnNldF9tX2Rpc3BhdGNoRnVuYyA9IGwucHJvdG90eXBlLnBDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEpnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX2Rpc3BhdGNoRnVuYyIsIHsKICAgICAgICAgIGdldDogbC5wcm90b3R5cGUuSnosCiAgICAgICAgICBzZXQ6IGwucHJvdG90eXBlLnBDCiAgICAgICAgfSk7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fdGltZU9mSW1wYWN0ID0gbC5wcm90b3R5cGUuV0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBLZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgbC5wcm90b3R5cGUuc2V0X21fdGltZU9mSW1wYWN0ID0gbC5wcm90b3R5cGUuQ0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTGcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSwgIm1fdGltZU9mSW1wYWN0IiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5XQSwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUuQ0QKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5nZXRfbV91c2VDb250aW51b3VzID0gbC5wcm90b3R5cGUuWkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIU1nKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV91c2VDb250aW51b3VzID0gbC5wcm90b3R5cGUuRkQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTmcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSwgIm1fdXNlQ29udGludW91cyIsIHsKICAgICAgICAgIGdldDogbC5wcm90b3R5cGUuWkEsCiAgICAgICAgICBzZXQ6IGwucHJvdG90eXBlLkZECiAgICAgICAgfSk7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fZW5hYmxlU2F0Q29udmV4ID0gbC5wcm90b3R5cGUuTnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIU9nKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV9lbmFibGVTYXRDb252ZXggPSBsLnByb3RvdHlwZS50QyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQZyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGwucHJvdG90eXBlLCAibV9lbmFibGVTYXRDb252ZXgiLCB7CiAgICAgICAgICBnZXQ6IGwucHJvdG90eXBlLk56LAogICAgICAgICAgc2V0OiBsLnByb3RvdHlwZS50QwogICAgICAgIH0pOwogICAgICAgIGwucHJvdG90eXBlLmdldF9tX2VuYWJsZVNQVSA9IGwucHJvdG90eXBlLk16ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFRZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgbC5wcm90b3R5cGUuc2V0X21fZW5hYmxlU1BVID0gbC5wcm90b3R5cGUuc0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUmcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSwgIm1fZW5hYmxlU1BVIiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5NeiwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUuc0MKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5nZXRfbV91c2VFcGEgPSBsLnByb3RvdHlwZS5hQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhU2codGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGwucHJvdG90eXBlLnNldF9tX3VzZUVwYSA9IGwucHJvdG90eXBlLkhEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFRnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX3VzZUVwYSIsIHsKICAgICAgICAgIGdldDogbC5wcm90b3R5cGUuYUIsCiAgICAgICAgICBzZXQ6IGwucHJvdG90eXBlLkhECiAgICAgICAgfSk7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fYWxsb3dlZENjZFBlbmV0cmF0aW9uID0gbC5wcm90b3R5cGUubHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBVZyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgbC5wcm90b3R5cGUuc2V0X21fYWxsb3dlZENjZFBlbmV0cmF0aW9uID0gbC5wcm90b3R5cGUuVEIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVmcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSwgIm1fYWxsb3dlZENjZFBlbmV0cmF0aW9uIiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5seiwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUuVEIKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5nZXRfbV91c2VDb252ZXhDb25zZXJ2YXRpdmVEaXN0YW5jZVV0aWwgPSBsLnByb3RvdHlwZS4kQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhV2codGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGwucHJvdG90eXBlLnNldF9tX3VzZUNvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVXRpbCA9IGwucHJvdG90eXBlLkdEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFhnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX3VzZUNvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVXRpbCIsIHsKICAgICAgICAgIGdldDogbC5wcm90b3R5cGUuJEEsCiAgICAgICAgICBzZXQ6IGwucHJvdG90eXBlLkdECiAgICAgICAgfSk7CiAgICAgICAgbC5wcm90b3R5cGUuZ2V0X21fY29udmV4Q29uc2VydmF0aXZlRGlzdGFuY2VUaHJlc2hvbGQgPSBsLnByb3RvdHlwZS5FeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFlnKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsLnByb3RvdHlwZS5zZXRfbV9jb252ZXhDb25zZXJ2YXRpdmVEaXN0YW5jZVRocmVzaG9sZCA9IGwucHJvdG90eXBlLmtDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFpnKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsICJtX2NvbnZleENvbnNlcnZhdGl2ZURpc3RhbmNlVGhyZXNob2xkIiwgewogICAgICAgICAgZ2V0OiBsLnByb3RvdHlwZS5FeiwKICAgICAgICAgIHNldDogbC5wcm90b3R5cGUua0MKICAgICAgICB9KTsKICAgICAgICBsLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgJGcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEIoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mbywgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEI7CiAgICAgICAgQi5wcm90b3R5cGUuJHggPSBCOwogICAgICAgIEIuYXkgPSB7fTsKICAgICAgICBiLmJ0V2hlZWxJbmZvQ29uc3RydWN0aW9uSW5mbyA9IEI7CiAgICAgICAgQi5wcm90b3R5cGUuZ2V0X21fY2hhc3Npc0Nvbm5lY3Rpb25DUyA9IEIucHJvdG90eXBlLnl6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhhaCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEIucHJvdG90eXBlLnNldF9tX2NoYXNzaXNDb25uZWN0aW9uQ1MgPSBCLnByb3RvdHlwZS5lQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBiaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9jaGFzc2lzQ29ubmVjdGlvbkNTIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS55eiwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUuZUMKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5nZXRfbV93aGVlbERpcmVjdGlvbkNTID0gQi5wcm90b3R5cGUuQXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGNoKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fd2hlZWxEaXJlY3Rpb25DUyA9IEIucHJvdG90eXBlLkh5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGRoKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsICJtX3doZWVsRGlyZWN0aW9uQ1MiLCB7CiAgICAgICAgICBnZXQ6IEIucHJvdG90eXBlLkF5LAogICAgICAgICAgc2V0OiBCLnByb3RvdHlwZS5IeQogICAgICAgIH0pOwogICAgICAgIEIucHJvdG90eXBlLmdldF9tX3doZWVsQXhsZUNTID0gQi5wcm90b3R5cGUuenkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGVoKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fd2hlZWxBeGxlQ1MgPSBCLnByb3RvdHlwZS5HeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBmaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV93aGVlbEF4bGVDUyIsIHsKICAgICAgICAgIGdldDogQi5wcm90b3R5cGUuenksCiAgICAgICAgICBzZXQ6IEIucHJvdG90eXBlLkd5CiAgICAgICAgfSk7CiAgICAgICAgQi5wcm90b3R5cGUuZ2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGggPSBCLnByb3RvdHlwZS5UQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGdoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCLnByb3RvdHlwZS5zZXRfbV9zdXNwZW5zaW9uUmVzdExlbmd0aCA9IEIucHJvdG90eXBlLnpEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGhoKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25SZXN0TGVuZ3RoIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS5UQSwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUuekQKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5nZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20gPSBCLnByb3RvdHlwZS5teSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGloKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCLnByb3RvdHlwZS5zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20gPSBCLnByb3RvdHlwZS50eSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBqaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20iLCB7CiAgICAgICAgICBnZXQ6IEIucHJvdG90eXBlLm15LAogICAgICAgICAgc2V0OiBCLnByb3RvdHlwZS50eQogICAgICAgIH0pOwogICAgICAgIEIucHJvdG90eXBlLmdldF9tX3doZWVsUmFkaXVzID0gQi5wcm90b3R5cGUuZ0IgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBraCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fd2hlZWxSYWRpdXMgPSBCLnByb3RvdHlwZS5ORCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBsaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV93aGVlbFJhZGl1cyIsIHsKICAgICAgICAgIGdldDogQi5wcm90b3R5cGUuZ0IsCiAgICAgICAgICBzZXQ6IEIucHJvdG90eXBlLk5ECiAgICAgICAgfSk7CiAgICAgICAgQi5wcm90b3R5cGUuZ2V0X21fc3VzcGVuc2lvblN0aWZmbmVzcyA9IEIucHJvdG90eXBlLm55ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbWgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEIucHJvdG90eXBlLnNldF9tX3N1c3BlbnNpb25TdGlmZm5lc3MgPSBCLnByb3RvdHlwZS51eSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBuaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9zdXNwZW5zaW9uU3RpZmZuZXNzIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS5ueSwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUudXkKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5nZXRfbV93aGVlbHNEYW1waW5nQ29tcHJlc3Npb24gPSBCLnByb3RvdHlwZS5CeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIG9oKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCLnByb3RvdHlwZS5zZXRfbV93aGVlbHNEYW1waW5nQ29tcHJlc3Npb24gPSBCLnByb3RvdHlwZS5JeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBwaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV93aGVlbHNEYW1waW5nQ29tcHJlc3Npb24iLCB7CiAgICAgICAgICBnZXQ6IEIucHJvdG90eXBlLkJ5LAogICAgICAgICAgc2V0OiBCLnByb3RvdHlwZS5JeQogICAgICAgIH0pOwogICAgICAgIEIucHJvdG90eXBlLmdldF9tX3doZWVsc0RhbXBpbmdSZWxheGF0aW9uID0gQi5wcm90b3R5cGUuQ3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBxaCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb24gPSBCLnByb3RvdHlwZS5KeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV93aGVlbHNEYW1waW5nUmVsYXhhdGlvbiIsIHsKICAgICAgICAgIGdldDogQi5wcm90b3R5cGUuQ3ksCiAgICAgICAgICBzZXQ6IEIucHJvdG90eXBlLkp5CiAgICAgICAgfSk7CiAgICAgICAgQi5wcm90b3R5cGUuZ2V0X21fZnJpY3Rpb25TbGlwID0gQi5wcm90b3R5cGUuaXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBzaCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQi5wcm90b3R5cGUuc2V0X21fZnJpY3Rpb25TbGlwID0gQi5wcm90b3R5cGUucHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLnByb3RvdHlwZSwgIm1fZnJpY3Rpb25TbGlwIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS5peSwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUucHkKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5nZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2UgPSBCLnByb3RvdHlwZS5seSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHVoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCLnByb3RvdHlwZS5zZXRfbV9tYXhTdXNwZW5zaW9uRm9yY2UgPSBCLnByb3RvdHlwZS5zeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2aChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9tYXhTdXNwZW5zaW9uRm9yY2UiLCB7CiAgICAgICAgICBnZXQ6IEIucHJvdG90eXBlLmx5LAogICAgICAgICAgc2V0OiBCLnByb3RvdHlwZS5zeQogICAgICAgIH0pOwogICAgICAgIEIucHJvdG90eXBlLmdldF9tX2JJc0Zyb250V2hlZWwgPSBCLnByb3RvdHlwZS53eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhd2godGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEIucHJvdG90eXBlLnNldF9tX2JJc0Zyb250V2hlZWwgPSBCLnByb3RvdHlwZS5EeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB4aChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCAibV9iSXNGcm9udFdoZWVsIiwgewogICAgICAgICAgZ2V0OiBCLnByb3RvdHlwZS53eSwKICAgICAgICAgIHNldDogQi5wcm90b3R5cGUuRHkKICAgICAgICB9KTsKICAgICAgICBCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgeWgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGNCKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gYyA/IHpoKGEpIDogQWgoYSwgYyk7CiAgICAgICAgICBoKGNCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgY0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShVQS5wcm90b3R5cGUpOwogICAgICAgIGNCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNCOwogICAgICAgIGNCLnByb3RvdHlwZS4keCA9IGNCOwogICAgICAgIGNCLmF5ID0ge307CiAgICAgICAgYi5idENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlID0gY0I7CiAgICAgICAgY0IucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBCaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgY0IucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQ2godGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBEaChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgY0IucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBFaChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgY0IucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEZoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEdoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBIQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRCcm9hZHBoYXNlSW50ZXJmYWNlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBIQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBIQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBIQTsKICAgICAgICBIQS5wcm90b3R5cGUuJHggPSBIQTsKICAgICAgICBIQS5heSA9IHt9OwogICAgICAgIGIuYnRCcm9hZHBoYXNlSW50ZXJmYWNlID0gSEE7CiAgICAgICAgSEEucHJvdG90eXBlLmdldE92ZXJsYXBwaW5nUGFpckNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhIaCh0aGlzLlp4KSwgR0EpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBIQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEloKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBEKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBlID8gSmgoYSwgYywgZCkgOiBLaChhLCBjLCBkLCBlKTsKICAgICAgICAgIGgoRClbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIEQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgRC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEOwogICAgICAgIEQucHJvdG90eXBlLiR4ID0gRDsKICAgICAgICBELmF5ID0ge307CiAgICAgICAgYi5idFJpZ2lkQm9keUNvbnN0cnVjdGlvbkluZm8gPSBEOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX2xpbmVhckRhbXBpbmcgPSBELnByb3RvdHlwZS5sQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIExoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9saW5lYXJEYW1waW5nID0gRC5wcm90b3R5cGUuU0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTWgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwgIm1fbGluZWFyRGFtcGluZyIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUubEEsCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLlNDCiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuZ2V0X21fYW5ndWxhckRhbXBpbmcgPSBELnByb3RvdHlwZS5ueiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE5oKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9hbmd1bGFyRGFtcGluZyA9IEQucHJvdG90eXBlLlZCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE9oKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX2FuZ3VsYXJEYW1waW5nIiwgewogICAgICAgICAgZ2V0OiBELnByb3RvdHlwZS5ueiwKICAgICAgICAgIHNldDogRC5wcm90b3R5cGUuVkIKICAgICAgICB9KTsKICAgICAgICBELnByb3RvdHlwZS5nZXRfbV9mcmljdGlvbiA9IEQucHJvdG90eXBlLlN6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUGgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2ZyaWN0aW9uID0gRC5wcm90b3R5cGUueUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUWgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwgIm1fZnJpY3Rpb24iLCB7CiAgICAgICAgICBnZXQ6IEQucHJvdG90eXBlLlN6LAogICAgICAgICAgc2V0OiBELnByb3RvdHlwZS55QwogICAgICAgIH0pOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX3JvbGxpbmdGcmljdGlvbiA9IEQucHJvdG90eXBlLkdBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUmgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX3JvbGxpbmdGcmljdGlvbiA9IEQucHJvdG90eXBlLm1EID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFNoKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX3JvbGxpbmdGcmljdGlvbiIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUuR0EsCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLm1ECiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuZ2V0X21fcmVzdGl0dXRpb24gPSBELnByb3RvdHlwZS5FQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFRoKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9yZXN0aXR1dGlvbiA9IEQucHJvdG90eXBlLmtEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFVoKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX3Jlc3RpdHV0aW9uIiwgewogICAgICAgICAgZ2V0OiBELnByb3RvdHlwZS5FQSwKICAgICAgICAgIHNldDogRC5wcm90b3R5cGUua0QKICAgICAgICB9KTsKICAgICAgICBELnByb3RvdHlwZS5nZXRfbV9saW5lYXJTbGVlcGluZ1RocmVzaG9sZCA9IEQucHJvdG90eXBlLm1BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVmgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2xpbmVhclNsZWVwaW5nVGhyZXNob2xkID0gRC5wcm90b3R5cGUuVEMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV2goYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwgIm1fbGluZWFyU2xlZXBpbmdUaHJlc2hvbGQiLCB7CiAgICAgICAgICBnZXQ6IEQucHJvdG90eXBlLm1BLAogICAgICAgICAgc2V0OiBELnByb3RvdHlwZS5UQwogICAgICAgIH0pOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX2FuZ3VsYXJTbGVlcGluZ1RocmVzaG9sZCA9IEQucHJvdG90eXBlLm96ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gWGgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2FuZ3VsYXJTbGVlcGluZ1RocmVzaG9sZCA9IEQucHJvdG90eXBlLldCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFloKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX2FuZ3VsYXJTbGVlcGluZ1RocmVzaG9sZCIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUub3osCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLldCCiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuZ2V0X21fYWRkaXRpb25hbERhbXBpbmcgPSBELnByb3RvdHlwZS5peiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhWmgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2FkZGl0aW9uYWxEYW1waW5nID0gRC5wcm90b3R5cGUuUUIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJGgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwgIm1fYWRkaXRpb25hbERhbXBpbmciLCB7CiAgICAgICAgICBnZXQ6IEQucHJvdG90eXBlLml6LAogICAgICAgICAgc2V0OiBELnByb3RvdHlwZS5RQgogICAgICAgIH0pOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX2FkZGl0aW9uYWxEYW1waW5nRmFjdG9yID0gRC5wcm90b3R5cGUuanogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBhaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRC5wcm90b3R5cGUuc2V0X21fYWRkaXRpb25hbERhbXBpbmdGYWN0b3IgPSBELnByb3RvdHlwZS5SQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBiaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEQucHJvdG90eXBlLCAibV9hZGRpdGlvbmFsRGFtcGluZ0ZhY3RvciIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUuanosCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLlJCCiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuZ2V0X21fYWRkaXRpb25hbExpbmVhckRhbXBpbmdUaHJlc2hvbGRTcXIgPSBELnByb3RvdHlwZS5reiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGNpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9hZGRpdGlvbmFsTGluZWFyRGFtcGluZ1RocmVzaG9sZFNxciA9IEQucHJvdG90eXBlLlNCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGRpKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX2FkZGl0aW9uYWxMaW5lYXJEYW1waW5nVGhyZXNob2xkU3FyIiwgewogICAgICAgICAgZ2V0OiBELnByb3RvdHlwZS5reiwKICAgICAgICAgIHNldDogRC5wcm90b3R5cGUuU0IKICAgICAgICB9KTsKICAgICAgICBELnByb3RvdHlwZS5nZXRfbV9hZGRpdGlvbmFsQW5ndWxhckRhbXBpbmdUaHJlc2hvbGRTcXIgPSBELnByb3RvdHlwZS5oeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGVpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBELnByb3RvdHlwZS5zZXRfbV9hZGRpdGlvbmFsQW5ndWxhckRhbXBpbmdUaHJlc2hvbGRTcXIgPSBELnByb3RvdHlwZS5QQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBmaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEQucHJvdG90eXBlLCAibV9hZGRpdGlvbmFsQW5ndWxhckRhbXBpbmdUaHJlc2hvbGRTcXIiLCB7CiAgICAgICAgICBnZXQ6IEQucHJvdG90eXBlLmh6LAogICAgICAgICAgc2V0OiBELnByb3RvdHlwZS5QQgogICAgICAgIH0pOwogICAgICAgIEQucHJvdG90eXBlLmdldF9tX2FkZGl0aW9uYWxBbmd1bGFyRGFtcGluZ0ZhY3RvciA9IEQucHJvdG90eXBlLmd6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gZ2kodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEQucHJvdG90eXBlLnNldF9tX2FkZGl0aW9uYWxBbmd1bGFyRGFtcGluZ0ZhY3RvciA9IEQucHJvdG90eXBlLk9CID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGhpKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsICJtX2FkZGl0aW9uYWxBbmd1bGFyRGFtcGluZ0ZhY3RvciIsIHsKICAgICAgICAgIGdldDogRC5wcm90b3R5cGUuZ3osCiAgICAgICAgICBzZXQ6IEQucHJvdG90eXBlLk9CCiAgICAgICAgfSk7CiAgICAgICAgRC5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGlpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBkQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb2xsaXNpb25Db25maWd1cmF0aW9uLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBkQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBkQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBkQjsKICAgICAgICBkQi5wcm90b3R5cGUuJHggPSBkQjsKICAgICAgICBkQi5heSA9IHt9OwogICAgICAgIGIuYnRDb2xsaXNpb25Db25maWd1cmF0aW9uID0gZEI7CiAgICAgICAgZEIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBqaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gVkEoKSB7CiAgICAgICAgICB0aGlzLlp4ID0ga2koKTsKICAgICAgICAgIGgoVkEpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBWQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBWQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBWQTsKICAgICAgICBWQS5wcm90b3R5cGUuJHggPSBWQTsKICAgICAgICBWQS5heSA9IHt9OwogICAgICAgIGIuYnRQZXJzaXN0ZW50TWFuaWZvbGQgPSBWQTsKICAgICAgICBWQS5wcm90b3R5cGUuZ2V0Qm9keTAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGxpKHRoaXMuWngpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkEucHJvdG90eXBlLmdldEJvZHkxID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhtaSh0aGlzLlp4KSwgcSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFZBLnByb3RvdHlwZS5nZXROdW1Db250YWN0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIG5pKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWQS5wcm90b3R5cGUuZ2V0Q29udGFjdFBvaW50ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKG9pKGMsIGEpLCBFKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkEucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBwaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gZUIoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGEgPyBxaSgpIDogcmkoYSk7CiAgICAgICAgICBoKGVCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgZUIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgZUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZUI7CiAgICAgICAgZUIucHJvdG90eXBlLiR4ID0gZUI7CiAgICAgICAgZUIuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29tcG91bmRTaGFwZSA9IGVCOwogICAgICAgIGVCLnByb3RvdHlwZS5hZGRDaGlsZFNoYXBlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBzaShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLnJlbW92ZUNoaWxkU2hhcGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGVCLnByb3RvdHlwZS5yZW1vdmVDaGlsZFNoYXBlQnlJbmRleCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB1aShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLmdldE51bUNoaWxkU2hhcGVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gdmkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGVCLnByb3RvdHlwZS5nZXRDaGlsZFNoYXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKHdpKGMsIGEpLCBuKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLnVwZGF0ZUNoaWxkVHJhbnNmb3JtID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBkID8geGkoZSwgYSwgYykgOiB5aShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB6aShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZUIucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEFpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBlQi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEJpKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBlQi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhDaSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGVCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIERpKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBlQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEVpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBGKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IEZpKGEsIGMpOwogICAgICAgICAgaChGKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgRi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHkucHJvdG90eXBlKTsKICAgICAgICBGLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEY7CiAgICAgICAgRi5wcm90b3R5cGUuJHggPSBGOwogICAgICAgIEYuYXkgPSB7fTsKICAgICAgICBiLkNsb3Nlc3RDb252ZXhSZXN1bHRDYWxsYmFjayA9IEY7CiAgICAgICAgRi5wcm90b3R5cGUuaGFzSGl0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFHaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuZ2V0X21fY29udmV4RnJvbVdvcmxkID0gRi5wcm90b3R5cGUuRnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEhpKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuc2V0X21fY29udmV4RnJvbVdvcmxkID0gRi5wcm90b3R5cGUubEMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSWkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwgIm1fY29udmV4RnJvbVdvcmxkIiwgewogICAgICAgICAgZ2V0OiBGLnByb3RvdHlwZS5GeiwKICAgICAgICAgIHNldDogRi5wcm90b3R5cGUubEMKICAgICAgICB9KTsKICAgICAgICBGLnByb3RvdHlwZS5nZXRfbV9jb252ZXhUb1dvcmxkID0gRi5wcm90b3R5cGUuR3ogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEppKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuc2V0X21fY29udmV4VG9Xb3JsZCA9IEYucHJvdG90eXBlLm1DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEtpKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsICJtX2NvbnZleFRvV29ybGQiLCB7CiAgICAgICAgICBnZXQ6IEYucHJvdG90eXBlLkd6LAogICAgICAgICAgc2V0OiBGLnByb3RvdHlwZS5tQwogICAgICAgIH0pOwogICAgICAgIEYucHJvdG90eXBlLmdldF9tX2hpdE5vcm1hbFdvcmxkID0gRi5wcm90b3R5cGUuankgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKExpKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuc2V0X21faGl0Tm9ybWFsV29ybGQgPSBGLnByb3RvdHlwZS5xeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBNaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEYucHJvdG90eXBlLCAibV9oaXROb3JtYWxXb3JsZCIsIHsKICAgICAgICAgIGdldDogRi5wcm90b3R5cGUuanksCiAgICAgICAgICBzZXQ6IEYucHJvdG90eXBlLnF5CiAgICAgICAgfSk7CiAgICAgICAgRi5wcm90b3R5cGUuZ2V0X21faGl0UG9pbnRXb3JsZCA9IEYucHJvdG90eXBlLmt5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhOaSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEYucHJvdG90eXBlLnNldF9tX2hpdFBvaW50V29ybGQgPSBGLnByb3RvdHlwZS5yeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBPaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEYucHJvdG90eXBlLCAibV9oaXRQb2ludFdvcmxkIiwgewogICAgICAgICAgZ2V0OiBGLnByb3RvdHlwZS5reSwKICAgICAgICAgIHNldDogRi5wcm90b3R5cGUucnkKICAgICAgICB9KTsKICAgICAgICBGLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cCA9IEYucHJvdG90eXBlLmJ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUGkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEYucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwID0gRi5wcm90b3R5cGUuZHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUWkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uRmlsdGVyR3JvdXAiLCB7CiAgICAgICAgICBnZXQ6IEYucHJvdG90eXBlLmJ5LAogICAgICAgICAgc2V0OiBGLnByb3RvdHlwZS5keQogICAgICAgIH0pOwogICAgICAgIEYucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbkZpbHRlck1hc2sgPSBGLnByb3RvdHlwZS5jeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFJpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGLnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrID0gRi5wcm90b3R5cGUuZXkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgU2koYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uRmlsdGVyTWFzayIsIHsKICAgICAgICAgIGdldDogRi5wcm90b3R5cGUuY3ksCiAgICAgICAgICBzZXQ6IEYucHJvdG90eXBlLmV5CiAgICAgICAgfSk7CiAgICAgICAgRi5wcm90b3R5cGUuZ2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uID0gRi5wcm90b3R5cGUuZnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBUaSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRi5wcm90b3R5cGUuc2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uID0gRi5wcm90b3R5cGUuZ3kgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVWkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwgIm1fY2xvc2VzdEhpdEZyYWN0aW9uIiwgewogICAgICAgICAgZ2V0OiBGLnByb3RvdHlwZS5meSwKICAgICAgICAgIHNldDogRi5wcm90b3R5cGUuZ3kKICAgICAgICB9KTsKICAgICAgICBGLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgVmkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEcoYSwgYykgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gV2koYSwgYyk7CiAgICAgICAgICBoKEcpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBHLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoei5wcm90b3R5cGUpOwogICAgICAgIEcucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRzsKICAgICAgICBHLnByb3RvdHlwZS4keCA9IEc7CiAgICAgICAgRy5heSA9IHt9OwogICAgICAgIGIuQWxsSGl0c1JheVJlc3VsdENhbGxiYWNrID0gRzsKICAgICAgICBHLnByb3RvdHlwZS5oYXNIaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIVhpKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25PYmplY3RzID0gRy5wcm90b3R5cGUuQnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFlpKHRoaXMuWngpLCBmQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEcucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbk9iamVjdHMgPSBHLnByb3RvdHlwZS5oQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBaaShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEcucHJvdG90eXBlLCAibV9jb2xsaXNpb25PYmplY3RzIiwgewogICAgICAgICAgZ2V0OiBHLnByb3RvdHlwZS5CeiwKICAgICAgICAgIHNldDogRy5wcm90b3R5cGUuaEMKICAgICAgICB9KTsKICAgICAgICBHLnByb3RvdHlwZS5nZXRfbV9yYXlGcm9tV29ybGQgPSBHLnByb3RvdHlwZS54eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoJGkodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5zZXRfbV9yYXlGcm9tV29ybGQgPSBHLnByb3RvdHlwZS5FeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBhaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEcucHJvdG90eXBlLCAibV9yYXlGcm9tV29ybGQiLCB7CiAgICAgICAgICBnZXQ6IEcucHJvdG90eXBlLnh5LAogICAgICAgICAgc2V0OiBHLnByb3RvdHlwZS5FeQogICAgICAgIH0pOwogICAgICAgIEcucHJvdG90eXBlLmdldF9tX3JheVRvV29ybGQgPSBHLnByb3RvdHlwZS55eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoYmoodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5zZXRfbV9yYXlUb1dvcmxkID0gRy5wcm90b3R5cGUuRnkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgY2ooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLnByb3RvdHlwZSwgIm1fcmF5VG9Xb3JsZCIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUueXksCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLkZ5CiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21faGl0Tm9ybWFsV29ybGQgPSBHLnByb3RvdHlwZS5qeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZGoodGhpcy5aeCksIGdCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRy5wcm90b3R5cGUuc2V0X21faGl0Tm9ybWFsV29ybGQgPSBHLnByb3RvdHlwZS5xeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBlaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEcucHJvdG90eXBlLCAibV9oaXROb3JtYWxXb3JsZCIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUuanksCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLnF5CiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21faGl0UG9pbnRXb3JsZCA9IEcucHJvdG90eXBlLmt5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhmaih0aGlzLlp4KSwgZ0IpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5zZXRfbV9oaXRQb2ludFdvcmxkID0gRy5wcm90b3R5cGUucnkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ2ooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLnByb3RvdHlwZSwgIm1faGl0UG9pbnRXb3JsZCIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUua3ksCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLnJ5CiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21faGl0RnJhY3Rpb25zID0gRy5wcm90b3R5cGUuWnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGhqKHRoaXMuWngpLCBiQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEcucHJvdG90eXBlLnNldF9tX2hpdEZyYWN0aW9ucyA9IEcucHJvdG90eXBlLkZDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGlqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJtX2hpdEZyYWN0aW9ucyIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUuWnosCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLkZDCiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXAgPSBHLnByb3RvdHlwZS5ieSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGpqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHLnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cCA9IEcucHJvdG90eXBlLmR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGtqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJtX2NvbGxpc2lvbkZpbHRlckdyb3VwIiwgewogICAgICAgICAgZ2V0OiBHLnByb3RvdHlwZS5ieSwKICAgICAgICAgIHNldDogRy5wcm90b3R5cGUuZHkKICAgICAgICB9KTsKICAgICAgICBHLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrID0gRy5wcm90b3R5cGUuY3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBsaih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRy5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uRmlsdGVyTWFzayA9IEcucHJvdG90eXBlLmV5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG1qKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJtX2NvbGxpc2lvbkZpbHRlck1hc2siLCB7CiAgICAgICAgICBnZXQ6IEcucHJvdG90eXBlLmN5LAogICAgICAgICAgc2V0OiBHLnByb3RvdHlwZS5leQogICAgICAgIH0pOwogICAgICAgIEcucHJvdG90eXBlLmdldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbiA9IEcucHJvdG90eXBlLmZ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbmoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEcucHJvdG90eXBlLnNldF9tX2Nsb3Nlc3RIaXRGcmFjdGlvbiA9IEcucHJvdG90eXBlLmd5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG9qKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJtX2Nsb3Nlc3RIaXRGcmFjdGlvbiIsIHsKICAgICAgICAgIGdldDogRy5wcm90b3R5cGUuZnksCiAgICAgICAgICBzZXQ6IEcucHJvdG90eXBlLmd5CiAgICAgICAgfSk7CiAgICAgICAgRy5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uT2JqZWN0ID0gRy5wcm90b3R5cGUuaHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHBqKHRoaXMuWngpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRy5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uT2JqZWN0ID0gRy5wcm90b3R5cGUub3kgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcWooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uT2JqZWN0IiwgewogICAgICAgICAgZ2V0OiBHLnByb3RvdHlwZS5oeSwKICAgICAgICAgIHNldDogRy5wcm90b3R5cGUub3kKICAgICAgICB9KTsKICAgICAgICBHLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGhCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSB0TWF0ZXJpYWxBcnJheSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgaEIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgaEIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gaEI7CiAgICAgICAgaEIucHJvdG90eXBlLiR4ID0gaEI7CiAgICAgICAgaEIuYXkgPSB7fTsKICAgICAgICBiLnRNYXRlcmlhbEFycmF5ID0gaEI7CiAgICAgICAgaEIucHJvdG90eXBlLnNpemUgPSBoQi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHNqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBoQi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsodGooYywgYSksIEEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBoQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHVqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBpQihhKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZqKGEpOwogICAgICAgICAgaChpQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIGlCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUkEucHJvdG90eXBlKTsKICAgICAgICBpQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBpQjsKICAgICAgICBpQi5wcm90b3R5cGUuJHggPSBpQjsKICAgICAgICBpQi5heSA9IHt9OwogICAgICAgIGIuYnREZWZhdWx0VmVoaWNsZVJheWNhc3RlciA9IGlCOwogICAgICAgIGlCLnByb3RvdHlwZS5jYXN0UmF5ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgd2ooZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGlCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgeGoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGpCKCkgewogICAgICAgICAgdGhpcy5aeCA9IHlqKCk7CiAgICAgICAgICBoKGpCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgakIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMQS5wcm90b3R5cGUpOwogICAgICAgIGpCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGpCOwogICAgICAgIGpCLnByb3RvdHlwZS4keCA9IGpCOwogICAgICAgIGpCLmF5ID0ge307CiAgICAgICAgYi5idEVtcHR5U2hhcGUgPSBqQjsKICAgICAgICBqQi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHpqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBqQi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhBaih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGpCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEJqKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBqQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIENqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBIKCkgewogICAgICAgICAgdGhpcy5aeCA9IERqKCk7CiAgICAgICAgICBoKEgpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBILnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEgucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSDsKICAgICAgICBILnByb3RvdHlwZS4keCA9IEg7CiAgICAgICAgSC5heSA9IHt9OwogICAgICAgIGIuYnRDb25zdHJhaW50U2V0dGluZyA9IEg7CiAgICAgICAgSC5wcm90b3R5cGUuZ2V0X21fdGF1ID0gSC5wcm90b3R5cGUuVkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBFaih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSC5wcm90b3R5cGUuc2V0X21fdGF1ID0gSC5wcm90b3R5cGUuQkQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRmooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShILnByb3RvdHlwZSwgIm1fdGF1IiwgewogICAgICAgICAgZ2V0OiBILnByb3RvdHlwZS5WQSwKICAgICAgICAgIHNldDogSC5wcm90b3R5cGUuQkQKICAgICAgICB9KTsKICAgICAgICBILnByb3RvdHlwZS5nZXRfbV9kYW1waW5nID0gSC5wcm90b3R5cGUuSHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBHaih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSC5wcm90b3R5cGUuc2V0X21fZGFtcGluZyA9IEgucHJvdG90eXBlLm5DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEhqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSC5wcm90b3R5cGUsICJtX2RhbXBpbmciLCB7CiAgICAgICAgICBnZXQ6IEgucHJvdG90eXBlLkh6LAogICAgICAgICAgc2V0OiBILnByb3RvdHlwZS5uQwogICAgICAgIH0pOwogICAgICAgIEgucHJvdG90eXBlLmdldF9tX2ltcHVsc2VDbGFtcCA9IEgucHJvdG90eXBlLmVBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSWoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEgucHJvdG90eXBlLnNldF9tX2ltcHVsc2VDbGFtcCA9IEgucHJvdG90eXBlLkxDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEpqKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSC5wcm90b3R5cGUsICJtX2ltcHVsc2VDbGFtcCIsIHsKICAgICAgICAgIGdldDogSC5wcm90b3R5cGUuZUEsCiAgICAgICAgICBzZXQ6IEgucHJvdG90eXBlLkxDCiAgICAgICAgfSk7CiAgICAgICAgSC5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEtqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBrQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgTG9jYWxTaGFwZUluZm8sIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIGtCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIGtCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGtCOwogICAgICAgIGtCLnByb3RvdHlwZS4keCA9IGtCOwogICAgICAgIGtCLmF5ID0ge307CiAgICAgICAgYi5Mb2NhbFNoYXBlSW5mbyA9IGtCOwogICAgICAgIGtCLnByb3RvdHlwZS5nZXRfbV9zaGFwZVBhcnQgPSBrQi5wcm90b3R5cGUuSkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMaih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAga0IucHJvdG90eXBlLnNldF9tX3NoYXBlUGFydCA9IGtCLnByb3RvdHlwZS5wRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBNaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGtCLnByb3RvdHlwZSwgIm1fc2hhcGVQYXJ0IiwgewogICAgICAgICAgZ2V0OiBrQi5wcm90b3R5cGUuSkEsCiAgICAgICAgICBzZXQ6IGtCLnByb3RvdHlwZS5wRAogICAgICAgIH0pOwogICAgICAgIGtCLnByb3RvdHlwZS5nZXRfbV90cmlhbmdsZUluZGV4ID0ga0IucHJvdG90eXBlLllBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gTmoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGtCLnByb3RvdHlwZS5zZXRfbV90cmlhbmdsZUluZGV4ID0ga0IucHJvdG90eXBlLkVEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE9qKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoa0IucHJvdG90eXBlLCAibV90cmlhbmdsZUluZGV4IiwgewogICAgICAgICAgZ2V0OiBrQi5wcm90b3R5cGUuWUEsCiAgICAgICAgICBzZXQ6IGtCLnByb3RvdHlwZS5FRAogICAgICAgIH0pOwogICAgICAgIGtCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgUGoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEkoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBRaihhKTsKICAgICAgICAgIGgoSSlbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIEkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShxLnByb3RvdHlwZSk7CiAgICAgICAgSS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBJOwogICAgICAgIEkucHJvdG90eXBlLiR4ID0gSTsKICAgICAgICBJLmF5ID0ge307CiAgICAgICAgYi5idFJpZ2lkQm9keSA9IEk7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0Q2VudGVyT2ZNYXNzVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhSaih0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldENlbnRlck9mTWFzc1RyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0U2xlZXBpbmdUaHJlc2hvbGRzID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBUaihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0TGluZWFyRGFtcGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFVqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRBbmd1bGFyRGFtcGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFZqKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXREYW1waW5nID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBXaihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0TWFzc1Byb3BzID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBYaihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0TGluZWFyRmFjdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhZaih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldExpbmVhckZhY3RvciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBaaihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuYXBwbHlUb3JxdWUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmFwcGx5TG9jYWxUb3JxdWUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYmsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmFwcGx5Rm9yY2UgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGNrKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5hcHBseUNlbnRyYWxGb3JjZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBkayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuYXBwbHlDZW50cmFsTG9jYWxGb3JjZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBlayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuYXBwbHlUb3JxdWVJbXB1bHNlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGZrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5hcHBseUltcHVsc2UgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGdrKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5hcHBseUNlbnRyYWxJbXB1bHNlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGhrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS51cGRhdGVJbmVydGlhVGVuc29yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBpayh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0TGluZWFyVmVsb2NpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGprKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0QW5ndWxhclZlbG9jaXR5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhrayh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldExpbmVhclZlbG9jaXR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGxrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRBbmd1bGFyVmVsb2NpdHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldE1vdGlvblN0YXRlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhuayh0aGlzLlp4KSwgWUEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRNb3Rpb25TdGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBvayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0QW5ndWxhckZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsocGsodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRBbmd1bGFyRmFjdG9yID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHFrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS51cGNhc3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsocmsoYywgYSksIEkpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRBYWJiID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBzayhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuYXBwbHlHcmF2aXR5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB0ayh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0R3Jhdml0eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodWsodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRHcmF2aXR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHZrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRCcm9hZHBoYXNlUHJveHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHdrKHRoaXMuWngpLCB0KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuY2xlYXJGb3JjZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHhrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRBbmlzb3Ryb3BpY0ZyaWN0aW9uID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB5ayhkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0Q29sbGlzaW9uU2hhcGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHprKHRoaXMuWngpLCBuKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldEFjdGl2YXRpb25TdGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBCayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZm9yY2VBY3RpdmF0aW9uU3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQ2soYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmFjdGl2YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYSA/IERrKGMpIDogRWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmlzQWN0aXZlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFGayh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuaXNLaW5lbWF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUdrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5pc1N0YXRpY09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhSGsodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmlzU3RhdGljT3JLaW5lbWF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUlrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRSZXN0aXR1dGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEprKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRGcmljdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEtrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5nZXRSb2xsaW5nRnJpY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMayh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0UmVzdGl0dXRpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTWsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldEZyaWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE5rKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRSb2xsaW5nRnJpY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgT2soYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldFdvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhQayh0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldENvbGxpc2lvbkZsYWdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUWsodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldENvbGxpc2lvbkZsYWdzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFJrKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0Q29sbGlzaW9uU2hhcGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVGsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLnNldENjZE1vdGlvblRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBVayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVmsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldFVzZXJJbmRleCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFdrKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRVc2VySW5kZXggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWGsoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEkucHJvdG90eXBlLmdldFVzZXJQb2ludGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhZayh0aGlzLlp4KSwgSkEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5zZXRVc2VyUG9pbnRlciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBaayhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSS5wcm90b3R5cGUuZ2V0QnJvYWRwaGFzZUhhbmRsZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoJGsodGhpcy5aeCksIHQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBJLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgYWwodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGxCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidEluZGV4ZWRNZXNoQXJyYXksIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIGxCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIGxCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGxCOwogICAgICAgIGxCLnByb3RvdHlwZS4keCA9IGxCOwogICAgICAgIGxCLmF5ID0ge307CiAgICAgICAgYi5idEluZGV4ZWRNZXNoQXJyYXkgPSBsQjsKICAgICAgICBsQi5wcm90b3R5cGUuc2l6ZSA9IGxCLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gYmwodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGxCLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhjbChjLCBhKSwgbUIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBsQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGRsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBuQigpIHsKICAgICAgICAgIHRoaXMuWnggPSBlbCgpOwogICAgICAgICAgaChuQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIG5CLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIG5CLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IG5COwogICAgICAgIG5CLnByb3RvdHlwZS4keCA9IG5COwogICAgICAgIG5CLmF5ID0ge307CiAgICAgICAgYi5idERidnRCcm9hZHBoYXNlID0gbkI7CiAgICAgICAgbkIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBmbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gb0IoYSwgYywgZCwgZSwgZiwgbSwgQywgUCwgaWEpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgbSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIG0gJiYgKG0gPSBtLlp4KTsKICAgICAgICAgIEMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBDICYmIChDID0gQy5aeCk7CiAgICAgICAgICBQICYmICJvYmplY3QiID09PSB0eXBlb2YgUCAmJiAoUCA9IFAuWngpOwogICAgICAgICAgaWEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBpYSAmJiAoaWEgPSBpYS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gZ2woYSwgYywgZCwgZSwgZiwgbSwgQywgUCwgaWEpOwogICAgICAgICAgaChvQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIG9CLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTEEucHJvdG90eXBlKTsKICAgICAgICBvQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBvQjsKICAgICAgICBvQi5wcm90b3R5cGUuJHggPSBvQjsKICAgICAgICBvQi5heSA9IHt9OwogICAgICAgIGIuYnRIZWlnaHRmaWVsZFRlcnJhaW5TaGFwZSA9IG9COwogICAgICAgIG9CLnByb3RvdHlwZS5zZXRNYXJnaW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgaGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIG9CLnByb3RvdHlwZS5nZXRNYXJnaW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBpbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgb0IucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBqbChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgb0IucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoa2wodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBvQi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBsbChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgb0IucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBtbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gcEIoKSB7CiAgICAgICAgICB0aGlzLlp4ID0gbmwoKTsKICAgICAgICAgIGgocEIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBwQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCRBLnByb3RvdHlwZSk7CiAgICAgICAgcEIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gcEI7CiAgICAgICAgcEIucHJvdG90eXBlLiR4ID0gcEI7CiAgICAgICAgcEIuYXkgPSB7fTsKICAgICAgICBiLmJ0RGVmYXVsdFNvZnRCb2R5U29sdmVyID0gcEI7CiAgICAgICAgcEIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBvbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gcUIoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBwbChhKTsKICAgICAgICAgIGgocUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBxQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEZBLnByb3RvdHlwZSk7CiAgICAgICAgcUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gcUI7CiAgICAgICAgcUIucHJvdG90eXBlLiR4ID0gcUI7CiAgICAgICAgcUIuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29sbGlzaW9uRGlzcGF0Y2hlciA9IHFCOwogICAgICAgIHFCLnByb3RvdHlwZS5nZXROdW1NYW5pZm9sZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBxbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgcUIucHJvdG90eXBlLmdldE1hbmlmb2xkQnlJbmRleEludGVybmFsID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKHJsKGMsIGEpLCBWQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHFCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgc2wodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHJCKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gZCA/IHRsKGEsIGMpIDogdm9pZCAwID09PSBlID8gdWwoYSwgYywgZCkgOiB2b2lkIDAgPT09IGYgPyB2bChhLCBjLCBkLCBlKSA6IHdsKGEsIGMsIGQsIGUsIGYpOwogICAgICAgICAgaChyQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIHJCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIHJCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHJCOwogICAgICAgIHJCLnByb3RvdHlwZS4keCA9IHJCOwogICAgICAgIHJCLmF5ID0ge307CiAgICAgICAgYi5idEF4aXNTd2VlcDMgPSByQjsKICAgICAgICByQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHhsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBKQSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgVm9pZFB0ciwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgSkEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgSkEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSkE7CiAgICAgICAgSkEucHJvdG90eXBlLiR4ID0gSkE7CiAgICAgICAgSkEuYXkgPSB7fTsKICAgICAgICBiLlZvaWRQdHIgPSBKQTsKICAgICAgICBKQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHlsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBKKCkgewogICAgICAgICAgdGhpcy5aeCA9IHpsKCk7CiAgICAgICAgICBoKEopW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBKLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEoucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSjsKICAgICAgICBKLnByb3RvdHlwZS4keCA9IEo7CiAgICAgICAgSi5heSA9IHt9OwogICAgICAgIGIuYnRTb2Z0Qm9keVdvcmxkSW5mbyA9IEo7CiAgICAgICAgSi5wcm90b3R5cGUuZ2V0X2Fpcl9kZW5zaXR5ID0gSi5wcm90b3R5cGUuTHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBBbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X2Fpcl9kZW5zaXR5ID0gSi5wcm90b3R5cGUuc0IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQmwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgImFpcl9kZW5zaXR5IiwgewogICAgICAgICAgZ2V0OiBKLnByb3RvdHlwZS5MeSwKICAgICAgICAgIHNldDogSi5wcm90b3R5cGUuc0IKICAgICAgICB9KTsKICAgICAgICBKLnByb3RvdHlwZS5nZXRfd2F0ZXJfZGVuc2l0eSA9IEoucHJvdG90eXBlLnBCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gQ2wodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEoucHJvdG90eXBlLnNldF93YXRlcl9kZW5zaXR5ID0gSi5wcm90b3R5cGUuV0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgIndhdGVyX2RlbnNpdHkiLCB7CiAgICAgICAgICBnZXQ6IEoucHJvdG90eXBlLnBCLAogICAgICAgICAgc2V0OiBKLnByb3RvdHlwZS5XRAogICAgICAgIH0pOwogICAgICAgIEoucHJvdG90eXBlLmdldF93YXRlcl9vZmZzZXQgPSBKLnByb3RvdHlwZS5yQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEVsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBKLnByb3RvdHlwZS5zZXRfd2F0ZXJfb2Zmc2V0ID0gSi5wcm90b3R5cGUuWUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRmwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgIndhdGVyX29mZnNldCIsIHsKICAgICAgICAgIGdldDogSi5wcm90b3R5cGUuckIsCiAgICAgICAgICBzZXQ6IEoucHJvdG90eXBlLllECiAgICAgICAgfSk7CiAgICAgICAgSi5wcm90b3R5cGUuZ2V0X21fbWF4RGlzcGxhY2VtZW50ID0gSi5wcm90b3R5cGUuc0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBHbCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X21fbWF4RGlzcGxhY2VtZW50ID0gSi5wcm90b3R5cGUuWkMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgIm1fbWF4RGlzcGxhY2VtZW50IiwgewogICAgICAgICAgZ2V0OiBKLnByb3RvdHlwZS5zQSwKICAgICAgICAgIHNldDogSi5wcm90b3R5cGUuWkMKICAgICAgICB9KTsKICAgICAgICBKLnByb3RvdHlwZS5nZXRfd2F0ZXJfbm9ybWFsID0gSi5wcm90b3R5cGUucUIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKElsKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X3dhdGVyX25vcm1hbCA9IEoucHJvdG90eXBlLlhEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEpsKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsICJ3YXRlcl9ub3JtYWwiLCB7CiAgICAgICAgICBnZXQ6IEoucHJvdG90eXBlLnFCLAogICAgICAgICAgc2V0OiBKLnByb3RvdHlwZS5YRAogICAgICAgIH0pOwogICAgICAgIEoucHJvdG90eXBlLmdldF9tX2Jyb2FkcGhhc2UgPSBKLnByb3RvdHlwZS5zeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoS2wodGhpcy5aeCksIEhBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X21fYnJvYWRwaGFzZSA9IEoucHJvdG90eXBlLiRCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIExsKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsICJtX2Jyb2FkcGhhc2UiLCB7CiAgICAgICAgICBnZXQ6IEoucHJvdG90eXBlLnN6LAogICAgICAgICAgc2V0OiBKLnByb3RvdHlwZS4kQgogICAgICAgIH0pOwogICAgICAgIEoucHJvdG90eXBlLmdldF9tX2Rpc3BhdGNoZXIgPSBKLnByb3RvdHlwZS5LeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTWwodGhpcy5aeCksIEZBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSi5wcm90b3R5cGUuc2V0X21fZGlzcGF0Y2hlciA9IEoucHJvdG90eXBlLnFDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE5sKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsICJtX2Rpc3BhdGNoZXIiLCB7CiAgICAgICAgICBnZXQ6IEoucHJvdG90eXBlLkt6LAogICAgICAgICAgc2V0OiBKLnByb3RvdHlwZS5xQwogICAgICAgIH0pOwogICAgICAgIEoucHJvdG90eXBlLmdldF9tX2dyYXZpdHkgPSBKLnByb3RvdHlwZS5VeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoT2wodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBKLnByb3RvdHlwZS5zZXRfbV9ncmF2aXR5ID0gSi5wcm90b3R5cGUuQUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwgIm1fZ3Jhdml0eSIsIHsKICAgICAgICAgIGdldDogSi5wcm90b3R5cGUuVXosCiAgICAgICAgICBzZXQ6IEoucHJvdG90eXBlLkFDCiAgICAgICAgfSk7CiAgICAgICAgSi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFFsKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBzQihhLCBjLCBkLCBlKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gZCA/IFJsKGEsIGMpIDogdm9pZCAwID09PSBlID8gX2Vtc2NyaXB0ZW5fYmluZF9idENvbmVUd2lzdENvbnN0cmFpbnRfYnRDb25lVHdpc3RDb25zdHJhaW50XzMoYSwgYywgZCkgOiBTbChhLCBjLCBkLCBlKTsKICAgICAgICAgIGgoc0IpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBzQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEtBLnByb3RvdHlwZSk7CiAgICAgICAgc0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc0I7CiAgICAgICAgc0IucHJvdG90eXBlLiR4ID0gc0I7CiAgICAgICAgc0IuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29uZVR3aXN0Q29uc3RyYWludCA9IHNCOwogICAgICAgIHNCLnByb3RvdHlwZS5zZXRMaW1pdCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgVGwoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5zZXRBbmd1bGFyT25seSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBVbChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldERhbXBpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVmwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5lbmFibGVNb3RvciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBXbChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldE1heE1vdG9ySW1wdWxzZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBYbChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldE1heE1vdG9ySW1wdWxzZU5vcm1hbGl6ZWQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWWwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5zZXRNb3RvclRhcmdldCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBabChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldE1vdG9yVGFyZ2V0SW5Db25zdHJhaW50U3BhY2UgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJGwoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5lbmFibGVGZWVkYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBhbShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLmdldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGJtKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBzQi5wcm90b3R5cGUuc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGNtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBzQi5wcm90b3R5cGUuZ2V0UGFyYW0gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiBkbShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgc0IucHJvdG90eXBlLnNldFBhcmFtID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZW0oZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHNCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZm0odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHRCKGEsIGMsIGQsIGUsIGYsIG0sIEMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgbSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIG0gJiYgKG0gPSBtLlp4KTsKICAgICAgICAgIEMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBDICYmIChDID0gQy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBkID8gZ20oYSwgYykgOiB2b2lkIDAgPT09IGUgPyBobShhLCBjLCBkKSA6IHZvaWQgMCA9PT0gZiA/IGltKGEsIGMsIGQsIGUpIDogdm9pZCAwID09PSBtID8gam0oYSwgYywgZCwgZSwgZikgOiB2b2lkIDAgPT09IEMgPyBrbShhLCBjLCBkLCBlLCBmLCBtKSA6IGxtKGEsIGMsIGQsIGUsIGYsIG0sIEMpOwogICAgICAgICAgaCh0QilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIHRCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoS0EucHJvdG90eXBlKTsKICAgICAgICB0Qi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0QjsKICAgICAgICB0Qi5wcm90b3R5cGUuJHggPSB0QjsKICAgICAgICB0Qi5heSA9IHt9OwogICAgICAgIGIuYnRIaW5nZUNvbnN0cmFpbnQgPSB0QjsKICAgICAgICB0Qi5wcm90b3R5cGUuc2V0TGltaXQgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICB2YXIgbSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gZiA/IG1tKG0sIGEsIGMsIGQsIGUpIDogbm0obSwgYSwgYywgZCwgZSwgZikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5lbmFibGVBbmd1bGFyTW90b3IgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBvbShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdEIucHJvdG90eXBlLnNldEFuZ3VsYXJPbmx5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHBtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB0Qi5wcm90b3R5cGUuZW5hYmxlTW90b3IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcW0oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5zZXRNYXhNb3RvckltcHVsc2UgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcm0oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5zZXRNb3RvclRhcmdldCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgc20oZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5lbmFibGVGZWVkYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0bShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdEIucHJvdG90eXBlLmdldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHVtKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB0Qi5wcm90b3R5cGUuc2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHdtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB0Qi5wcm90b3R5cGUuZ2V0UGFyYW0gPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiB4bShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdEIucHJvdG90eXBlLnNldFBhcmFtID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgeW0oZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHRCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgem0odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHVCKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IEFtKGEsIGMpOwogICAgICAgICAgaCh1QilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIHVCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUEEucHJvdG90eXBlKTsKICAgICAgICB1Qi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB1QjsKICAgICAgICB1Qi5wcm90b3R5cGUuJHggPSB1QjsKICAgICAgICB1Qi5heSA9IHt9OwogICAgICAgIGIuYnRDb25lU2hhcGVaID0gdUI7CiAgICAgICAgdUIucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBCbShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdUIucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQ20odGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB1Qi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBEbShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdUIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBFbSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gdkIoYSwgYykgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gRm0oYSwgYyk7CiAgICAgICAgICBoKHZCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgdkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQQS5wcm90b3R5cGUpOwogICAgICAgIHZCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHZCOwogICAgICAgIHZCLnByb3RvdHlwZS4keCA9IHZCOwogICAgICAgIHZCLmF5ID0ge307CiAgICAgICAgYi5idENvbmVTaGFwZVggPSB2QjsKICAgICAgICB2Qi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEdtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB2Qi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhIbSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHZCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEltKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB2Qi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEptKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiB3QihhLCBjKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGEgPyBLbSgpIDogdm9pZCAwID09PSBjID8gTG0oYSkgOiBNbShhLCBjKTsKICAgICAgICAgIGgod0IpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICB3Qi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFhBLnByb3RvdHlwZSk7CiAgICAgICAgd0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gd0I7CiAgICAgICAgd0IucHJvdG90eXBlLiR4ID0gd0I7CiAgICAgICAgd0IuYXkgPSB7fTsKICAgICAgICBiLmJ0VHJpYW5nbGVNZXNoID0gd0I7CiAgICAgICAgd0IucHJvdG90eXBlLmFkZFRyaWFuZ2xlID0gZnVuY3Rpb24oYSwgYywgZCwgZSkgewogICAgICAgICAgdmFyIGYgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gZSA/IE5tKGYsIGEsIGMsIGQpIDogT20oZiwgYSwgYywgZCwgZSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHdCLnByb3RvdHlwZS5maW5kT3JBZGRWZXJ0ZXggPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiBQbShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgd0IucHJvdG90eXBlLmFkZEluZGV4ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFFtKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB3Qi5wcm90b3R5cGUuZ2V0SW5kZXhlZE1lc2hBcnJheSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoUm0odGhpcy5aeCksIGxCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgd0IucHJvdG90eXBlLnNldFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgU20oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHdCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgVG0odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHhCKGEsIGMpIHsKICAgICAgICAgIHpBKCk7CiAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgYSAmJiAoYSA9IERBKGEpKTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBhID8gVW0oKSA6IHZvaWQgMCA9PT0gYyA/IFZtKGEpIDogV20oYSwgYyk7CiAgICAgICAgICBoKHhCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgeEIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgeEIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0geEI7CiAgICAgICAgeEIucHJvdG90eXBlLiR4ID0geEI7CiAgICAgICAgeEIuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29udmV4SHVsbFNoYXBlID0geEI7CiAgICAgICAgeEIucHJvdG90eXBlLmFkZFBvaW50ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGMgPyBYbShkLCBhKSA6IFltKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuc2V0TWFyZ2luID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFptKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuZ2V0TWFyZ2luID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gJG0odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHhCLnByb3RvdHlwZS5nZXROdW1WZXJ0aWNlcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGFuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuaW5pdGlhbGl6ZVBvbHloZWRyYWxGZWF0dXJlcyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gISFibihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeEIucHJvdG90eXBlLnJlY2FsY0xvY2FsQWFiYiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgY24odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHhCLnByb3RvdHlwZS5nZXRDb252ZXhQb2x5aGVkcm9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhkbih0aGlzLlp4KSwgeUIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGVuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhmbih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHhCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGduKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB4Qi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGhuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBLKCkgewogICAgICAgICAgdGhpcy5aeCA9IGpuKCk7CiAgICAgICAgICBoKEspW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBLLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSzsKICAgICAgICBLLnByb3RvdHlwZS4keCA9IEs7CiAgICAgICAgSy5heSA9IHt9OwogICAgICAgIGIuYnRWZWhpY2xlVHVuaW5nID0gSzsKICAgICAgICBLLnByb3RvdHlwZS5nZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzID0gSy5wcm90b3R5cGUubnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrbih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSy5wcm90b3R5cGUuc2V0X21fc3VzcGVuc2lvblN0aWZmbmVzcyA9IEsucHJvdG90eXBlLnV5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGxuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25TdGlmZm5lc3MiLCB7CiAgICAgICAgICBnZXQ6IEsucHJvdG90eXBlLm55LAogICAgICAgICAgc2V0OiBLLnByb3RvdHlwZS51eQogICAgICAgIH0pOwogICAgICAgIEsucHJvdG90eXBlLmdldF9tX3N1c3BlbnNpb25Db21wcmVzc2lvbiA9IEsucHJvdG90eXBlLlBBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbW4odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEsucHJvdG90eXBlLnNldF9tX3N1c3BlbnNpb25Db21wcmVzc2lvbiA9IEsucHJvdG90eXBlLnZEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG5uKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25Db21wcmVzc2lvbiIsIHsKICAgICAgICAgIGdldDogSy5wcm90b3R5cGUuUEEsCiAgICAgICAgICBzZXQ6IEsucHJvdG90eXBlLnZECiAgICAgICAgfSk7CiAgICAgICAgSy5wcm90b3R5cGUuZ2V0X21fc3VzcGVuc2lvbkRhbXBpbmcgPSBLLnByb3RvdHlwZS5RQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIG9uKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBLLnByb3RvdHlwZS5zZXRfbV9zdXNwZW5zaW9uRGFtcGluZyA9IEsucHJvdG90eXBlLndEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHBuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25EYW1waW5nIiwgewogICAgICAgICAgZ2V0OiBLLnByb3RvdHlwZS5RQSwKICAgICAgICAgIHNldDogSy5wcm90b3R5cGUud0QKICAgICAgICB9KTsKICAgICAgICBLLnByb3RvdHlwZS5nZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20gPSBLLnByb3RvdHlwZS5teSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHFuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBLLnByb3RvdHlwZS5zZXRfbV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20gPSBLLnByb3RvdHlwZS50eSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBybihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEsucHJvdG90eXBlLCAibV9tYXhTdXNwZW5zaW9uVHJhdmVsQ20iLCB7CiAgICAgICAgICBnZXQ6IEsucHJvdG90eXBlLm15LAogICAgICAgICAgc2V0OiBLLnByb3RvdHlwZS50eQogICAgICAgIH0pOwogICAgICAgIEsucHJvdG90eXBlLmdldF9tX2ZyaWN0aW9uU2xpcCA9IEsucHJvdG90eXBlLml5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gc24odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEsucHJvdG90eXBlLnNldF9tX2ZyaWN0aW9uU2xpcCA9IEsucHJvdG90eXBlLnB5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsICJtX2ZyaWN0aW9uU2xpcCIsIHsKICAgICAgICAgIGdldDogSy5wcm90b3R5cGUuaXksCiAgICAgICAgICBzZXQ6IEsucHJvdG90eXBlLnB5CiAgICAgICAgfSk7CiAgICAgICAgSy5wcm90b3R5cGUuZ2V0X21fbWF4U3VzcGVuc2lvbkZvcmNlID0gSy5wcm90b3R5cGUubHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB1bih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSy5wcm90b3R5cGUuc2V0X21fbWF4U3VzcGVuc2lvbkZvcmNlID0gSy5wcm90b3R5cGUuc3kgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdm4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLLnByb3RvdHlwZSwgIm1fbWF4U3VzcGVuc2lvbkZvcmNlIiwgewogICAgICAgICAgZ2V0OiBLLnByb3RvdHlwZS5seSwKICAgICAgICAgIHNldDogSy5wcm90b3R5cGUuc3kKICAgICAgICB9KTsKICAgICAgICBmdW5jdGlvbiB6QigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb2xsaXNpb25PYmplY3RXcmFwcGVyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB6Qi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICB6Qi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB6QjsKICAgICAgICB6Qi5wcm90b3R5cGUuJHggPSB6QjsKICAgICAgICB6Qi5heSA9IHt9OwogICAgICAgIGIuYnRDb2xsaXNpb25PYmplY3RXcmFwcGVyID0gekI7CiAgICAgICAgekIucHJvdG90eXBlLmdldFdvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh3bih0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHpCLnByb3RvdHlwZS5nZXRDb2xsaXNpb25PYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHhuKHRoaXMuWngpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgekIucHJvdG90eXBlLmdldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh5bih0aGlzLlp4KSwgbikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEFCKGEpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gem4oYSk7CiAgICAgICAgICBoKEFCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgQUIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgQUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQUI7CiAgICAgICAgQUIucHJvdG90eXBlLiR4ID0gQUI7CiAgICAgICAgQUIuYXkgPSB7fTsKICAgICAgICBiLmJ0U2hhcGVIdWxsID0gQUI7CiAgICAgICAgQUIucHJvdG90eXBlLmJ1aWxkSHVsbCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gISFBbihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQUIucHJvdG90eXBlLm51bVZlcnRpY2VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gQm4odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEFCLnByb3RvdHlwZS5nZXRWZXJ0ZXhQb2ludGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhDbih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEFCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgRG4odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEJCKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gYSA/IEVuKCkgOiB2b2lkIDAgPT09IGMgPyBGbihhKSA6IEduKGEsIGMpOwogICAgICAgICAgaChCQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIEJCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoWUEucHJvdG90eXBlKTsKICAgICAgICBCQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCQjsKICAgICAgICBCQi5wcm90b3R5cGUuJHggPSBCQjsKICAgICAgICBCQi5heSA9IHt9OwogICAgICAgIGIuYnREZWZhdWx0TW90aW9uU3RhdGUgPSBCQjsKICAgICAgICBCQi5wcm90b3R5cGUuZ2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSG4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEJCLnByb3RvdHlwZS5zZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBJbihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgQkIucHJvdG90eXBlLmdldF9tX2dyYXBoaWNzV29ybGRUcmFucyA9IEJCLnByb3RvdHlwZS5UeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoSm4odGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBCQi5wcm90b3R5cGUuc2V0X21fZ3JhcGhpY3NXb3JsZFRyYW5zID0gQkIucHJvdG90eXBlLnpDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEtuKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQkIucHJvdG90eXBlLCAibV9ncmFwaGljc1dvcmxkVHJhbnMiLCB7CiAgICAgICAgICBnZXQ6IEJCLnByb3RvdHlwZS5UeiwKICAgICAgICAgIHNldDogQkIucHJvdG90eXBlLnpDCiAgICAgICAgfSk7CiAgICAgICAgQkIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBMbih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gTChhKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGhpcy5aeCA9IE1uKGEpOwogICAgICAgICAgaChMKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgTC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBMLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEw7CiAgICAgICAgTC5wcm90b3R5cGUuJHggPSBMOwogICAgICAgIEwuYXkgPSB7fTsKICAgICAgICBiLmJ0V2hlZWxJbmZvID0gTDsKICAgICAgICBMLnByb3RvdHlwZS5nZXRTdXNwZW5zaW9uUmVzdExlbmd0aCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE5uKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS51cGRhdGVXaGVlbCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgT24oZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3N1c3BlbnNpb25TdGlmZm5lc3MgPSBMLnByb3RvdHlwZS5ueSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFBuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV9zdXNwZW5zaW9uU3RpZmZuZXNzID0gTC5wcm90b3R5cGUudXkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUW4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fc3VzcGVuc2lvblN0aWZmbmVzcyIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUubnksCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLnV5CiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fZnJpY3Rpb25TbGlwID0gTC5wcm90b3R5cGUuaXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBSbih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fZnJpY3Rpb25TbGlwID0gTC5wcm90b3R5cGUucHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgU24oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fZnJpY3Rpb25TbGlwIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5peSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUucHkKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9lbmdpbmVGb3JjZSA9IEwucHJvdG90eXBlLk96ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVG4odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX2VuZ2luZUZvcmNlID0gTC5wcm90b3R5cGUudUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVW4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fZW5naW5lRm9yY2UiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLk96LAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS51QwogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3JvbGxJbmZsdWVuY2UgPSBMLnByb3RvdHlwZS5GQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFZuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV9yb2xsSW5mbHVlbmNlID0gTC5wcm90b3R5cGUubEQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV24oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fcm9sbEluZmx1ZW5jZSIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuRkEsCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLmxECiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGgxID0gTC5wcm90b3R5cGUuVUEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBYbih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fc3VzcGVuc2lvblJlc3RMZW5ndGgxID0gTC5wcm90b3R5cGUuQUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWW4oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fc3VzcGVuc2lvblJlc3RMZW5ndGgxIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5VQSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuQUQKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV93aGVlbHNSYWRpdXMgPSBMLnByb3RvdHlwZS5oQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFpuKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV93aGVlbHNSYWRpdXMgPSBMLnByb3RvdHlwZS5PRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICAkbihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV93aGVlbHNSYWRpdXMiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLmhCLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5PRAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbiA9IEwucHJvdG90eXBlLkJ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gYW8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbiA9IEwucHJvdG90eXBlLkl5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGJvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3doZWVsc0RhbXBpbmdDb21wcmVzc2lvbiIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuQnksCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLkl5CiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fd2hlZWxzRGFtcGluZ1JlbGF4YXRpb24gPSBMLnByb3RvdHlwZS5DeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGNvKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV93aGVlbHNEYW1waW5nUmVsYXhhdGlvbiA9IEwucHJvdG90eXBlLkp5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGVvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3doZWVsc0RhbXBpbmdSZWxheGF0aW9uIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5DeSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuSnkKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9zdGVlcmluZyA9IEwucHJvdG90eXBlLk5BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gZm8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX3N0ZWVyaW5nID0gTC5wcm90b3R5cGUudEQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ28oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fc3RlZXJpbmciLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLk5BLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS50RAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX21heFN1c3BlbnNpb25Gb3JjZSA9IEwucHJvdG90eXBlLmx5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gaG8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX21heFN1c3BlbnNpb25Gb3JjZSA9IEwucHJvdG90eXBlLnN5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGlvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX21heFN1c3BlbnNpb25Gb3JjZSIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUubHksCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLnN5CiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtID0gTC5wcm90b3R5cGUubXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBqbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fbWF4U3VzcGVuc2lvblRyYXZlbENtID0gTC5wcm90b3R5cGUudHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAga28oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fbWF4U3VzcGVuc2lvblRyYXZlbENtIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5teSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUudHkKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV93aGVlbHNTdXNwZW5zaW9uRm9yY2UgPSBMLnByb3RvdHlwZS5pQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGxvKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV93aGVlbHNTdXNwZW5zaW9uRm9yY2UgPSBMLnByb3RvdHlwZS5QRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBtbyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV93aGVlbHNTdXNwZW5zaW9uRm9yY2UiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLmlCLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5QRAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX2JJc0Zyb250V2hlZWwgPSBMLnByb3RvdHlwZS53eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhbm8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX2JJc0Zyb250V2hlZWwgPSBMLnByb3RvdHlwZS5EeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBvbyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV9iSXNGcm9udFdoZWVsIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS53eSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuRHkKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9yYXljYXN0SW5mbyA9IEwucHJvdG90eXBlLkRBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhwbyh0aGlzLlp4KSwgTSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX3JheWNhc3RJbmZvID0gTC5wcm90b3R5cGUuakQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcW8oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fcmF5Y2FzdEluZm8iLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLkRBLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5qRAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX2NoYXNzaXNDb25uZWN0aW9uUG9pbnRDUyA9IEwucHJvdG90eXBlLnp6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhybyh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX2NoYXNzaXNDb25uZWN0aW9uUG9pbnRDUyA9IEwucHJvdG90eXBlLmZDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHNvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX2NoYXNzaXNDb25uZWN0aW9uUG9pbnRDUyIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuenosCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLmZDCiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fd29ybGRUcmFuc2Zvcm0gPSBMLnByb3RvdHlwZS5qQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodG8odGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV93b3JsZFRyYW5zZm9ybSA9IEwucHJvdG90eXBlLlFEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHVvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3dvcmxkVHJhbnNmb3JtIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5qQiwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuUUQKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV93aGVlbERpcmVjdGlvbkNTID0gTC5wcm90b3R5cGUuQXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHZvKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fd2hlZWxEaXJlY3Rpb25DUyA9IEwucHJvdG90eXBlLkh5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHdvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3doZWVsRGlyZWN0aW9uQ1MiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLkF5LAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5IeQogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3doZWVsQXhsZUNTID0gTC5wcm90b3R5cGUuenkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHhvKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fd2hlZWxBeGxlQ1MgPSBMLnByb3RvdHlwZS5HeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB5byhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV93aGVlbEF4bGVDUyIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuenksCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLkd5CiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fcm90YXRpb24gPSBMLnByb3RvdHlwZS5IQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHpvKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMLnByb3RvdHlwZS5zZXRfbV9yb3RhdGlvbiA9IEwucHJvdG90eXBlLm5EID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEFvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX3JvdGF0aW9uIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5IQSwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUubkQKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9kZWx0YVJvdGF0aW9uID0gTC5wcm90b3R5cGUuSXogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBCbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fZGVsdGFSb3RhdGlvbiA9IEwucHJvdG90eXBlLm9DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIENvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsICJtX2RlbHRhUm90YXRpb24iLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLkl6LAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS5vQwogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX2JyYWtlID0gTC5wcm90b3R5cGUucnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBEbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fYnJha2UgPSBMLnByb3RvdHlwZS5aQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBFbyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV9icmFrZSIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUucnosCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLlpCCiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuZ2V0X21fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uID0gTC5wcm90b3R5cGUuQXogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBGbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uID0gTC5wcm90b3R5cGUuZ0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgR28oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fY2xpcHBlZEludkNvbnRhY3REb3RTdXNwZW5zaW9uIiwgewogICAgICAgICAgZ2V0OiBMLnByb3RvdHlwZS5BeiwKICAgICAgICAgIHNldDogTC5wcm90b3R5cGUuZ0MKICAgICAgICB9KTsKICAgICAgICBMLnByb3RvdHlwZS5nZXRfbV9zdXNwZW5zaW9uUmVsYXRpdmVWZWxvY2l0eSA9IEwucHJvdG90eXBlLlNBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSG8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEwucHJvdG90eXBlLnNldF9tX3N1c3BlbnNpb25SZWxhdGl2ZVZlbG9jaXR5ID0gTC5wcm90b3R5cGUueUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSW8oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwgIm1fc3VzcGVuc2lvblJlbGF0aXZlVmVsb2NpdHkiLCB7CiAgICAgICAgICBnZXQ6IEwucHJvdG90eXBlLlNBLAogICAgICAgICAgc2V0OiBMLnByb3RvdHlwZS55RAogICAgICAgIH0pOwogICAgICAgIEwucHJvdG90eXBlLmdldF9tX3NraWRJbmZvID0gTC5wcm90b3R5cGUuS0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBKbyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTC5wcm90b3R5cGUuc2V0X21fc2tpZEluZm8gPSBMLnByb3RvdHlwZS5xRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBLbyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCAibV9za2lkSW5mbyIsIHsKICAgICAgICAgIGdldDogTC5wcm90b3R5cGUuS0EsCiAgICAgICAgICBzZXQ6IEwucHJvdG90eXBlLnFECiAgICAgICAgfSk7CiAgICAgICAgTC5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIExvKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBOKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBhID8gTW8oKSA6IHZvaWQgMCA9PT0gYyA/IF9lbXNjcmlwdGVuX2JpbmRfYnRWZWN0b3I0X2J0VmVjdG9yNF8xKGEpIDogdm9pZCAwID09PSBkID8gX2Vtc2NyaXB0ZW5fYmluZF9idFZlY3RvcjRfYnRWZWN0b3I0XzIoYSwgYykgOiB2b2lkIDAgPT09IGUgPyBfZW1zY3JpcHRlbl9iaW5kX2J0VmVjdG9yNF9idFZlY3RvcjRfMyhhLCBjLCBkKSA6IE5vKGEsIGMsIGQsIGUpOwogICAgICAgICAgaChOKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgTi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHAucHJvdG90eXBlKTsKICAgICAgICBOLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE47CiAgICAgICAgTi5wcm90b3R5cGUuJHggPSBOOwogICAgICAgIE4uYXkgPSB7fTsKICAgICAgICBiLmJ0VmVjdG9yNCA9IE47CiAgICAgICAgTi5wcm90b3R5cGUudyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE9vKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5zZXRWYWx1ZSA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIHZhciBmID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBQbyhmLCBhLCBjLCBkLCBlKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTi5wcm90b3R5cGUubGVuZ3RoID0gTi5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUW8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnggPSBOLnByb3RvdHlwZS54ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUm8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnkgPSBOLnByb3RvdHlwZS55ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gU28odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnogPSBOLnByb3RvdHlwZS56ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVG8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVW8oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVm8oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV28oYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLm5vcm1hbGl6ZSA9IE4ucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgWG8odGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE4ucHJvdG90eXBlLnJvdGF0ZSA9IE4ucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuIGsoWW8oZCwgYSwgYyksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5kb3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIFpvKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5vcF9tdWwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoJG8oYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5vcF9hZGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoYXAoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5vcF9zdWIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoYnAoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgY3AodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIENCKCkgewogICAgICAgICAgdGhpcy5aeCA9IGRwKCk7CiAgICAgICAgICBoKENCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgQ0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgQ0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ0I7CiAgICAgICAgQ0IucHJvdG90eXBlLiR4ID0gQ0I7CiAgICAgICAgQ0IuYXkgPSB7fTsKICAgICAgICBiLmJ0RGVmYXVsdENvbGxpc2lvbkNvbnN0cnVjdGlvbkluZm8gPSBDQjsKICAgICAgICBDQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGVwKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBPKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBBbmNob3IsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIE8ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgTy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBPOwogICAgICAgIE8ucHJvdG90eXBlLiR4ID0gTzsKICAgICAgICBPLmF5ID0ge307CiAgICAgICAgYi5BbmNob3IgPSBPOwogICAgICAgIE8ucHJvdG90eXBlLmdldF9tX25vZGUgPSBPLnByb3RvdHlwZS51QSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZnAodGhpcy5aeCksIE5vZGUpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPLnByb3RvdHlwZS5zZXRfbV9ub2RlID0gTy5wcm90b3R5cGUuYUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ3AoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLnByb3RvdHlwZSwgIm1fbm9kZSIsIHsKICAgICAgICAgIGdldDogTy5wcm90b3R5cGUudUEsCiAgICAgICAgICBzZXQ6IE8ucHJvdG90eXBlLmFECiAgICAgICAgfSk7CiAgICAgICAgTy5wcm90b3R5cGUuZ2V0X21fbG9jYWwgPSBPLnByb3RvdHlwZS5uQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoaHAodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPLnByb3RvdHlwZS5zZXRfbV9sb2NhbCA9IE8ucHJvdG90eXBlLlVDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGlwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTy5wcm90b3R5cGUsICJtX2xvY2FsIiwgewogICAgICAgICAgZ2V0OiBPLnByb3RvdHlwZS5uQSwKICAgICAgICAgIHNldDogTy5wcm90b3R5cGUuVUMKICAgICAgICB9KTsKICAgICAgICBPLnByb3RvdHlwZS5nZXRfbV9ib2R5ID0gTy5wcm90b3R5cGUucXogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGpwKHRoaXMuWngpLCBJKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTy5wcm90b3R5cGUuc2V0X21fYm9keSA9IE8ucHJvdG90eXBlLllCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGtwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTy5wcm90b3R5cGUsICJtX2JvZHkiLCB7CiAgICAgICAgICBnZXQ6IE8ucHJvdG90eXBlLnF6LAogICAgICAgICAgc2V0OiBPLnByb3RvdHlwZS5ZQgogICAgICAgIH0pOwogICAgICAgIE8ucHJvdG90eXBlLmdldF9tX2luZmx1ZW5jZSA9IE8ucHJvdG90eXBlLmdBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbHAodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE8ucHJvdG90eXBlLnNldF9tX2luZmx1ZW5jZSA9IE8ucHJvdG90eXBlLk5DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG1wKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTy5wcm90b3R5cGUsICJtX2luZmx1ZW5jZSIsIHsKICAgICAgICAgIGdldDogTy5wcm90b3R5cGUuZ0EsCiAgICAgICAgICBzZXQ6IE8ucHJvdG90eXBlLk5DCiAgICAgICAgfSk7CiAgICAgICAgTy5wcm90b3R5cGUuZ2V0X21fYzAgPSBPLnByb3RvdHlwZS51eiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsobnAodGhpcy5aeCksIGFCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTy5wcm90b3R5cGUuc2V0X21fYzAgPSBPLnByb3RvdHlwZS5hQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBvcChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8ucHJvdG90eXBlLCAibV9jMCIsIHsKICAgICAgICAgIGdldDogTy5wcm90b3R5cGUudXosCiAgICAgICAgICBzZXQ6IE8ucHJvdG90eXBlLmFDCiAgICAgICAgfSk7CiAgICAgICAgTy5wcm90b3R5cGUuZ2V0X21fYzEgPSBPLnByb3RvdHlwZS52eiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsocHAodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPLnByb3RvdHlwZS5zZXRfbV9jMSA9IE8ucHJvdG90eXBlLmJDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHFwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTy5wcm90b3R5cGUsICJtX2MxIiwgewogICAgICAgICAgZ2V0OiBPLnByb3RvdHlwZS52eiwKICAgICAgICAgIHNldDogTy5wcm90b3R5cGUuYkMKICAgICAgICB9KTsKICAgICAgICBPLnByb3RvdHlwZS5nZXRfbV9jMiA9IE8ucHJvdG90eXBlLnd6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gcnAodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE8ucHJvdG90eXBlLnNldF9tX2MyID0gTy5wcm90b3R5cGUuY0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgc3AoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLnByb3RvdHlwZSwgIm1fYzIiLCB7CiAgICAgICAgICBnZXQ6IE8ucHJvdG90eXBlLnd6LAogICAgICAgICAgc2V0OiBPLnByb3RvdHlwZS5jQwogICAgICAgIH0pOwogICAgICAgIE8ucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB0cCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gUSgpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRWZWhpY2xlUmF5Y2FzdGVyUmVzdWx0LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBRLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUTsKICAgICAgICBRLnByb3RvdHlwZS4keCA9IFE7CiAgICAgICAgUS5heSA9IHt9OwogICAgICAgIGIuYnRWZWhpY2xlUmF5Y2FzdGVyUmVzdWx0ID0gUTsKICAgICAgICBRLnByb3RvdHlwZS5nZXRfbV9oaXRQb2ludEluV29ybGQgPSBRLnByb3RvdHlwZS5iQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsodXAodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBRLnByb3RvdHlwZS5zZXRfbV9oaXRQb2ludEluV29ybGQgPSBRLnByb3RvdHlwZS5JQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2cChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFEucHJvdG90eXBlLCAibV9oaXRQb2ludEluV29ybGQiLCB7CiAgICAgICAgICBnZXQ6IFEucHJvdG90eXBlLmJBLAogICAgICAgICAgc2V0OiBRLnByb3RvdHlwZS5JQwogICAgICAgIH0pOwogICAgICAgIFEucHJvdG90eXBlLmdldF9tX2hpdE5vcm1hbEluV29ybGQgPSBRLnByb3RvdHlwZS4keiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsod3AodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBRLnByb3RvdHlwZS5zZXRfbV9oaXROb3JtYWxJbldvcmxkID0gUS5wcm90b3R5cGUuR0MgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeHAoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLnByb3RvdHlwZSwgIm1faGl0Tm9ybWFsSW5Xb3JsZCIsIHsKICAgICAgICAgIGdldDogUS5wcm90b3R5cGUuJHosCiAgICAgICAgICBzZXQ6IFEucHJvdG90eXBlLkdDCiAgICAgICAgfSk7CiAgICAgICAgUS5wcm90b3R5cGUuZ2V0X21fZGlzdEZyYWN0aW9uID0gUS5wcm90b3R5cGUuTHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB5cCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUS5wcm90b3R5cGUuc2V0X21fZGlzdEZyYWN0aW9uID0gUS5wcm90b3R5cGUuckMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgenAoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLnByb3RvdHlwZSwgIm1fZGlzdEZyYWN0aW9uIiwgewogICAgICAgICAgZ2V0OiBRLnByb3RvdHlwZS5MeiwKICAgICAgICAgIHNldDogUS5wcm90b3R5cGUuckMKICAgICAgICB9KTsKICAgICAgICBRLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgQXAodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGdCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidFZlY3RvcjNBcnJheSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgZ0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgZ0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZ0I7CiAgICAgICAgZ0IucHJvdG90eXBlLiR4ID0gZ0I7CiAgICAgICAgZ0IuYXkgPSB7fTsKICAgICAgICBiLmJ0VmVjdG9yM0FycmF5ID0gZ0I7CiAgICAgICAgZ0IucHJvdG90eXBlLnNpemUgPSBnQi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEJwKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBnQi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoQ3AoYywgYSksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBnQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIERwKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBEQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb25zdHJhaW50U29sdmVyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBEQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBEQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEQjsKICAgICAgICBEQi5wcm90b3R5cGUuJHggPSBEQjsKICAgICAgICBEQi5heSA9IHt9OwogICAgICAgIGIuYnRDb25zdHJhaW50U29sdmVyID0gREI7CiAgICAgICAgREIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBFcCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gUihhLCBjLCBkKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gRnAoYSwgYywgZCk7CiAgICAgICAgICBoKFIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBSLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUUEucHJvdG90eXBlKTsKICAgICAgICBSLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFI7CiAgICAgICAgUi5wcm90b3R5cGUuJHggPSBSOwogICAgICAgIFIuYXkgPSB7fTsKICAgICAgICBiLmJ0UmF5Y2FzdFZlaGljbGUgPSBSOwogICAgICAgIFIucHJvdG90eXBlLmFwcGx5RW5naW5lRm9yY2UgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIEdwKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5zZXRTdGVlcmluZ1ZhbHVlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBIcChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0V2hlZWxUcmFuc2Zvcm1XUyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhJcChjLCBhKSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnVwZGF0ZVdoZWVsVHJhbnNmb3JtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBKcChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuYWRkV2hlZWwgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmLCBtLCBDKSB7CiAgICAgICAgICB2YXIgUCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIG0gJiYgIm9iamVjdCIgPT09IHR5cGVvZiBtICYmIChtID0gbS5aeCk7CiAgICAgICAgICBDICYmICJvYmplY3QiID09PSB0eXBlb2YgQyAmJiAoQyA9IEMuWngpOwogICAgICAgICAgcmV0dXJuIGsoS3AoUCwgYSwgYywgZCwgZSwgZiwgbSwgQyksIEwpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXROdW1XaGVlbHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMcCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0UmlnaWRCb2R5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhNcCh0aGlzLlp4KSwgSSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLmdldFdoZWVsSW5mbyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhOcChjLCBhKSwgTCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnNldEJyYWtlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBPcChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuc2V0Q29vcmRpbmF0ZVN5c3RlbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIFBwKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRDdXJyZW50U3BlZWRLbUhvdXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBRcCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0Q2hhc3Npc1dvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhScCh0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnJheUNhc3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIFNwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS51cGRhdGVWZWhpY2xlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFRwKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5yZXNldFN1c3BlbnNpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFVwKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRTdGVlcmluZ1ZhbHVlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBWcChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUudXBkYXRlV2hlZWxUcmFuc2Zvcm1zV1MgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYyA/IFdwKGQsIGEpIDogWHAoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnNldFBpdGNoQ29udHJvbCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBZcChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUudXBkYXRlU3VzcGVuc2lvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBacChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUudXBkYXRlRnJpY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJHAoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLmdldFJpZ2h0QXhpcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGFxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRVcEF4aXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBicSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0Rm9yd2FyZEF4aXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBjcSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuZ2V0Rm9yd2FyZFZlY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZHEodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRVc2VyQ29uc3RyYWludFR5cGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBlcSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUi5wcm90b3R5cGUuc2V0VXNlckNvbnN0cmFpbnRUeXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGZxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5zZXRVc2VyQ29uc3RyYWludElkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGdxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSLnByb3RvdHlwZS5nZXRVc2VyQ29uc3RyYWludElkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gaHEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLnVwZGF0ZUFjdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgaXEoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBqcSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gRUIoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBrcShhKTsKICAgICAgICAgIGgoRUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBFQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFRBLnByb3RvdHlwZSk7CiAgICAgICAgRUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRUI7CiAgICAgICAgRUIucHJvdG90eXBlLiR4ID0gRUI7CiAgICAgICAgRUIuYXkgPSB7fTsKICAgICAgICBiLmJ0Q3lsaW5kZXJTaGFwZVggPSBFQjsKICAgICAgICBFQi5wcm90b3R5cGUuc2V0TWFyZ2luID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGxxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFQi5wcm90b3R5cGUuZ2V0TWFyZ2luID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gbXEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVCLnByb3RvdHlwZS5zZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbnEoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVCLnByb3RvdHlwZS5nZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKG9xKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRUIucHJvdG90eXBlLmNhbGN1bGF0ZUxvY2FsSW5lcnRpYSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcHEoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEVCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcXEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEZCKGEpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gcnEoYSk7CiAgICAgICAgICBoKEZCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgRkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShUQS5wcm90b3R5cGUpOwogICAgICAgIEZCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEZCOwogICAgICAgIEZCLnByb3RvdHlwZS4keCA9IEZCOwogICAgICAgIEZCLmF5ID0ge307CiAgICAgICAgYi5idEN5bGluZGVyU2hhcGVaID0gRkI7CiAgICAgICAgRkIucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBzcShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRkIucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHRxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGQi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHVxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGQi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh2cSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEZCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHdxKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBGQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHhxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiB5QigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb252ZXhQb2x5aGVkcm9uLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB5Qi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICB5Qi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB5QjsKICAgICAgICB5Qi5wcm90b3R5cGUuJHggPSB5QjsKICAgICAgICB5Qi5heSA9IHt9OwogICAgICAgIGIuYnRDb252ZXhQb2x5aGVkcm9uID0geUI7CiAgICAgICAgeUIucHJvdG90eXBlLmdldF9tX3ZlcnRpY2VzID0geUIucHJvdG90eXBlLmRCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh5cSh0aGlzLlp4KSwgZ0IpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB5Qi5wcm90b3R5cGUuc2V0X21fdmVydGljZXMgPSB5Qi5wcm90b3R5cGUuS0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgenEoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5Qi5wcm90b3R5cGUsICJtX3ZlcnRpY2VzIiwgewogICAgICAgICAgZ2V0OiB5Qi5wcm90b3R5cGUuZEIsCiAgICAgICAgICBzZXQ6IHlCLnByb3RvdHlwZS5LRAogICAgICAgIH0pOwogICAgICAgIHlCLnByb3RvdHlwZS5nZXRfbV9mYWNlcyA9IHlCLnByb3RvdHlwZS5ReiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQXEodGhpcy5aeCksIEdCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgeUIucHJvdG90eXBlLnNldF9tX2ZhY2VzID0geUIucHJvdG90eXBlLndDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEJxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeUIucHJvdG90eXBlLCAibV9mYWNlcyIsIHsKICAgICAgICAgIGdldDogeUIucHJvdG90eXBlLlF6LAogICAgICAgICAgc2V0OiB5Qi5wcm90b3R5cGUud0MKICAgICAgICB9KTsKICAgICAgICB5Qi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIENxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBIQigpIHsKICAgICAgICAgIHRoaXMuWnggPSBEcSgpOwogICAgICAgICAgaChIQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIEhCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIEhCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEhCOwogICAgICAgIEhCLnByb3RvdHlwZS4keCA9IEhCOwogICAgICAgIEhCLmF5ID0ge307CiAgICAgICAgYi5idFNlcXVlbnRpYWxJbXB1bHNlQ29uc3RyYWludFNvbHZlciA9IEhCOwogICAgICAgIEhCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgRXEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIElCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSB0QW5jaG9yQXJyYXksIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIElCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIElCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IElCOwogICAgICAgIElCLnByb3RvdHlwZS4keCA9IElCOwogICAgICAgIElCLmF5ID0ge307CiAgICAgICAgYi50QW5jaG9yQXJyYXkgPSBJQjsKICAgICAgICBJQi5wcm90b3R5cGUuc2l6ZSA9IElCLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gRnEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhHcShjLCBhKSwgTykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5jbGVhciA9IElCLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgSHEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5wdXNoX2JhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSXEoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5wb3BfYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgSnEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIElCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgS3EodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIE0oKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIFJheWNhc3RJbmZvLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBNLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIE0ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTTsKICAgICAgICBNLnByb3RvdHlwZS4keCA9IE07CiAgICAgICAgTS5heSA9IHt9OwogICAgICAgIGIuUmF5Y2FzdEluZm8gPSBNOwogICAgICAgIE0ucHJvdG90eXBlLmdldF9tX2NvbnRhY3ROb3JtYWxXUyA9IE0ucHJvdG90eXBlLkN6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhMcSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE0ucHJvdG90eXBlLnNldF9tX2NvbnRhY3ROb3JtYWxXUyA9IE0ucHJvdG90eXBlLmlDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE1xKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTS5wcm90b3R5cGUsICJtX2NvbnRhY3ROb3JtYWxXUyIsIHsKICAgICAgICAgIGdldDogTS5wcm90b3R5cGUuQ3osCiAgICAgICAgICBzZXQ6IE0ucHJvdG90eXBlLmlDCiAgICAgICAgfSk7CiAgICAgICAgTS5wcm90b3R5cGUuZ2V0X21fY29udGFjdFBvaW50V1MgPSBNLnByb3RvdHlwZS5EeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTnEodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNLnByb3RvdHlwZS5zZXRfbV9jb250YWN0UG9pbnRXUyA9IE0ucHJvdG90eXBlLmpDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE9xKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTS5wcm90b3R5cGUsICJtX2NvbnRhY3RQb2ludFdTIiwgewogICAgICAgICAgZ2V0OiBNLnByb3RvdHlwZS5EeiwKICAgICAgICAgIHNldDogTS5wcm90b3R5cGUuakMKICAgICAgICB9KTsKICAgICAgICBNLnByb3RvdHlwZS5nZXRfbV9zdXNwZW5zaW9uTGVuZ3RoID0gTS5wcm90b3R5cGUuUkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBQcSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTS5wcm90b3R5cGUuc2V0X21fc3VzcGVuc2lvbkxlbmd0aCA9IE0ucHJvdG90eXBlLnhEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFFxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTS5wcm90b3R5cGUsICJtX3N1c3BlbnNpb25MZW5ndGgiLCB7CiAgICAgICAgICBnZXQ6IE0ucHJvdG90eXBlLlJBLAogICAgICAgICAgc2V0OiBNLnByb3RvdHlwZS54RAogICAgICAgIH0pOwogICAgICAgIE0ucHJvdG90eXBlLmdldF9tX2hhcmRQb2ludFdTID0gTS5wcm90b3R5cGUuV3ogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFJxKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTS5wcm90b3R5cGUuc2V0X21faGFyZFBvaW50V1MgPSBNLnByb3RvdHlwZS5DQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTcShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE0ucHJvdG90eXBlLCAibV9oYXJkUG9pbnRXUyIsIHsKICAgICAgICAgIGdldDogTS5wcm90b3R5cGUuV3osCiAgICAgICAgICBzZXQ6IE0ucHJvdG90eXBlLkNDCiAgICAgICAgfSk7CiAgICAgICAgTS5wcm90b3R5cGUuZ2V0X21fd2hlZWxEaXJlY3Rpb25XUyA9IE0ucHJvdG90eXBlLmZCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhUcSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE0ucHJvdG90eXBlLnNldF9tX3doZWVsRGlyZWN0aW9uV1MgPSBNLnByb3RvdHlwZS5NRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBVcShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE0ucHJvdG90eXBlLCAibV93aGVlbERpcmVjdGlvbldTIiwgewogICAgICAgICAgZ2V0OiBNLnByb3RvdHlwZS5mQiwKICAgICAgICAgIHNldDogTS5wcm90b3R5cGUuTUQKICAgICAgICB9KTsKICAgICAgICBNLnByb3RvdHlwZS5nZXRfbV93aGVlbEF4bGVXUyA9IE0ucHJvdG90eXBlLmVCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhWcSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE0ucHJvdG90eXBlLnNldF9tX3doZWVsQXhsZVdTID0gTS5wcm90b3R5cGUuTEQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV3EoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLnByb3RvdHlwZSwgIm1fd2hlZWxBeGxlV1MiLCB7CiAgICAgICAgICBnZXQ6IE0ucHJvdG90eXBlLmVCLAogICAgICAgICAgc2V0OiBNLnByb3RvdHlwZS5MRAogICAgICAgIH0pOwogICAgICAgIE0ucHJvdG90eXBlLmdldF9tX2lzSW5Db250YWN0ID0gTS5wcm90b3R5cGUuaEEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIVhxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNLnByb3RvdHlwZS5zZXRfbV9pc0luQ29udGFjdCA9IE0ucHJvdG90eXBlLk9DID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFlxKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTS5wcm90b3R5cGUsICJtX2lzSW5Db250YWN0IiwgewogICAgICAgICAgZ2V0OiBNLnByb3RvdHlwZS5oQSwKICAgICAgICAgIHNldDogTS5wcm90b3R5cGUuT0MKICAgICAgICB9KTsKICAgICAgICBNLnByb3RvdHlwZS5nZXRfbV9ncm91bmRPYmplY3QgPSBNLnByb3RvdHlwZS5WeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFpxKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBNLnByb3RvdHlwZS5zZXRfbV9ncm91bmRPYmplY3QgPSBNLnByb3RvdHlwZS5CQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICAkcShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE0ucHJvdG90eXBlLCAibV9ncm91bmRPYmplY3QiLCB7CiAgICAgICAgICBnZXQ6IE0ucHJvdG90eXBlLlZ6LAogICAgICAgICAgc2V0OiBNLnByb3RvdHlwZS5CQwogICAgICAgIH0pOwogICAgICAgIE0ucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBhcih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gSkIoYSwgYywgZCkgewogICAgICAgICAgekEoKTsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgYyAmJiAoYyA9IERBKGMpKTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gYnIoYSwgYywgZCk7CiAgICAgICAgICBoKEpCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgSkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7CiAgICAgICAgSkIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSkI7CiAgICAgICAgSkIucHJvdG90eXBlLiR4ID0gSkI7CiAgICAgICAgSkIuYXkgPSB7fTsKICAgICAgICBiLmJ0TXVsdGlTcGhlcmVTaGFwZSA9IEpCOwogICAgICAgIEpCLnByb3RvdHlwZS5zZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgY3IoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEpCLnByb3RvdHlwZS5nZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGRyKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgSkIucHJvdG90eXBlLmNhbGN1bGF0ZUxvY2FsSW5lcnRpYSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZXIoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEpCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZnIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIFMoYSwgYywgZCwgZSkgewogICAgICAgICAgekEoKTsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBlICYmIChlID0gREEoZSkpOwogICAgICAgICAgdGhpcy5aeCA9IGdyKGEsIGMsIGQsIGUpOwogICAgICAgICAgaChTKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgUy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHEucHJvdG90eXBlKTsKICAgICAgICBTLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFM7CiAgICAgICAgUy5wcm90b3R5cGUuJHggPSBTOwogICAgICAgIFMuYXkgPSB7fTsKICAgICAgICBiLmJ0U29mdEJvZHkgPSBTOwogICAgICAgIFMucHJvdG90eXBlLmNoZWNrTGluayA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuICEhaHIoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmNoZWNrRmFjZSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHJldHVybiAhIWlyKGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5hcHBlbmRNYXRlcmlhbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoanIodGhpcy5aeCksIEEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5hcHBlbmROb2RlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBrcihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuYXBwZW5kTGluayA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIHZhciBmID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBscihmLCBhLCBjLCBkLCBlKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuYXBwZW5kRmFjZSA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIHZhciBmID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBtcihmLCBhLCBjLCBkLCBlKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuYXBwZW5kVGV0cmEgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICB2YXIgbSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIG5yKG0sIGEsIGMsIGQsIGUsIGYpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5hcHBlbmRBbmNob3IgPSBmdW5jdGlvbihhLCBjLCBkLCBlKSB7CiAgICAgICAgICB2YXIgZiA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgb3IoZiwgYSwgYywgZCwgZSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmFkZEZvcmNlID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGMgPyBwcihkLCBhKSA6IHFyKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5hZGRBZXJvRm9yY2VUb05vZGUgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJyKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRUb3RhbE1hc3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBzcih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0VG90YWxNYXNzID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB0cihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0TWFzcyA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdXIoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnRyYW5zZm9ybSA9IFMucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2cihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUudHJhbnNsYXRlID0gUy5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHdyKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5yb3RhdGUgPSBTLnByb3RvdHlwZS5yb3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeHIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNjYWxlID0gUy5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeXIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdlbmVyYXRlQ2x1c3RlcnMgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGMgPyB6cihkLCBhKSA6IEFyKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZW5lcmF0ZUJlbmRpbmdDb25zdHJhaW50cyA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuIEJyKGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS51cGNhc3QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoQ3IoYywgYSksIFMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRBbmlzb3Ryb3BpY0ZyaWN0aW9uID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBEcihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuZ2V0Q29sbGlzaW9uU2hhcGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEVyKHRoaXMuWngpLCBuKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0Q29udGFjdFByb2Nlc3NpbmdUaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRnIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldEFjdGl2YXRpb25TdGF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBHcihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuZm9yY2VBY3RpdmF0aW9uU3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSHIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmFjdGl2YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYSA/IElyKGMpIDogSnIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmlzQWN0aXZlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFLcih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuaXNLaW5lbWF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUxyKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5pc1N0YXRpY09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhTXIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmlzU3RhdGljT3JLaW5lbWF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIU5yKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRSZXN0aXR1dGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE9yKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRGcmljdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFByKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRSb2xsaW5nRnJpY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBRcih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0UmVzdGl0dXRpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUnIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldEZyaWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFNyKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRSb2xsaW5nRnJpY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVHIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdldFdvcmxkVHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhVcih0aGlzLlp4KSwgcikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdldENvbGxpc2lvbkZsYWdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVnIodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldENvbGxpc2lvbkZsYWdzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFdyKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBYcihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0Q29sbGlzaW9uU2hhcGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWXIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldENjZE1vdGlvblRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBacihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0Q2NkU3dlcHRTcGhlcmVSYWRpdXMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJHIoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdldFVzZXJJbmRleCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGFzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRVc2VySW5kZXggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYnMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLmdldFVzZXJQb2ludGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhjcyh0aGlzLlp4KSwgSkEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRVc2VyUG9pbnRlciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBkcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuZ2V0QnJvYWRwaGFzZUhhbmRsZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZXModGhpcy5aeCksIHQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5nZXRfbV9jZmcgPSBTLnByb3RvdHlwZS54eiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZ3ModGhpcy5aeCksIFQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRfbV9jZmcgPSBTLnByb3RvdHlwZS5kQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBocyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFMucHJvdG90eXBlLCAibV9jZmciLCB7CiAgICAgICAgICBnZXQ6IFMucHJvdG90eXBlLnh6LAogICAgICAgICAgc2V0OiBTLnByb3RvdHlwZS5kQwogICAgICAgIH0pOwogICAgICAgIFMucHJvdG90eXBlLmdldF9tX25vZGVzID0gUy5wcm90b3R5cGUudkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGlzKHRoaXMuWngpLCBLQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFMucHJvdG90eXBlLnNldF9tX25vZGVzID0gUy5wcm90b3R5cGUuYkQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAganMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLnByb3RvdHlwZSwgIm1fbm9kZXMiLCB7CiAgICAgICAgICBnZXQ6IFMucHJvdG90eXBlLnZBLAogICAgICAgICAgc2V0OiBTLnByb3RvdHlwZS5iRAogICAgICAgIH0pOwogICAgICAgIFMucHJvdG90eXBlLmdldF9tX21hdGVyaWFscyA9IFMucHJvdG90eXBlLnJBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhrcyh0aGlzLlp4KSwgaEIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBTLnByb3RvdHlwZS5zZXRfbV9tYXRlcmlhbHMgPSBTLnByb3RvdHlwZS5ZQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBscyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFMucHJvdG90eXBlLCAibV9tYXRlcmlhbHMiLCB7CiAgICAgICAgICBnZXQ6IFMucHJvdG90eXBlLnJBLAogICAgICAgICAgc2V0OiBTLnByb3RvdHlwZS5ZQwogICAgICAgIH0pOwogICAgICAgIFMucHJvdG90eXBlLmdldF9tX2FuY2hvcnMgPSBTLnByb3RvdHlwZS5teiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsobXModGhpcy5aeCksIElCKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUy5wcm90b3R5cGUuc2V0X21fYW5jaG9ycyA9IFMucHJvdG90eXBlLlVCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIG5zKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUy5wcm90b3R5cGUsICJtX2FuY2hvcnMiLCB7CiAgICAgICAgICBnZXQ6IFMucHJvdG90eXBlLm16LAogICAgICAgICAgc2V0OiBTLnByb3RvdHlwZS5VQgogICAgICAgIH0pOwogICAgICAgIFMucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBwcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gTEIoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0SW50QXJyYXksIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIExCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIExCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExCOwogICAgICAgIExCLnByb3RvdHlwZS4keCA9IExCOwogICAgICAgIExCLmF5ID0ge307CiAgICAgICAgYi5idEludEFycmF5ID0gTEI7CiAgICAgICAgTEIucHJvdG90eXBlLnNpemUgPSBMQi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHFzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMQi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIHJzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBMQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHNzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBUKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBDb25maWcsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIFQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgVC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUOwogICAgICAgIFQucHJvdG90eXBlLiR4ID0gVDsKICAgICAgICBULmF5ID0ge307CiAgICAgICAgYi5Db25maWcgPSBUOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rVkNGID0gVC5wcm90b3R5cGUuZnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB0cyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tWQ0YgPSBULnByb3RvdHlwZS5OQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB1cyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia1ZDRiIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuZnosCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLk5CCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tEUCA9IFQucHJvdG90eXBlLlR5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gdnModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rRFAgPSBULnByb3RvdHlwZS5BQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB4cyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia0RQIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5UeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuQUIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa0RHID0gVC5wcm90b3R5cGUuU3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB5cyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tERyA9IFQucHJvdG90eXBlLnpCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHpzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrREciLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLlN5LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS56QgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rTEYgPSBULnByb3RvdHlwZS5WeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEFzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa0xGID0gVC5wcm90b3R5cGUuQ0IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQnMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtMRiIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuVnksCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLkNCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tQUiA9IFQucHJvdG90eXBlLlh5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gQ3ModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rUFIgPSBULnByb3RvdHlwZS5FQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBEcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia1BSIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5YeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuRUIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa1ZDID0gVC5wcm90b3R5cGUuZXogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBFcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tWQyA9IFQucHJvdG90eXBlLk1CID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrVkMiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLmV6LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS5NQgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rREYgPSBULnByb3RvdHlwZS5SeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIEdzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa0RGID0gVC5wcm90b3R5cGUueUIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSHMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtERiIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuUnksCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLnlCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tNVCA9IFQucHJvdG90eXBlLld5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSXModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rTVQgPSBULnByb3RvdHlwZS5EQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBKcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia01UIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5XeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuREIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa0NIUiA9IFQucHJvdG90eXBlLlF5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gS3ModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rQ0hSID0gVC5wcm90b3R5cGUueEIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTHMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtDSFIiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLlF5LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS54QgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rS0hSID0gVC5wcm90b3R5cGUuVXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBNcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tLSFIgPSBULnByb3RvdHlwZS5CQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBOcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia0tIUiIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuVXksCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLkJCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tTSFIgPSBULnByb3RvdHlwZS5ZeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE9zKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa1NIUiA9IFQucHJvdG90eXBlLkZCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFBzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrU0hSIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5ZeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuRkIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa0FIUiA9IFQucHJvdG90eXBlLlB5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUXModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rQUhSID0gVC5wcm90b3R5cGUud0IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUnMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtBSFIiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLlB5LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS53QgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rU1JIUl9DTCA9IFQucHJvdG90eXBlLmF6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gU3ModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rU1JIUl9DTCA9IFQucHJvdG90eXBlLklCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFRzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrU1JIUl9DTCIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuYXosCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLklCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tTS0hSX0NMID0gVC5wcm90b3R5cGUuWnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBVcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tTS0hSX0NMID0gVC5wcm90b3R5cGUuR0IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVnMoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtTS0hSX0NMIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5aeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuR0IKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa1NTSFJfQ0wgPSBULnByb3RvdHlwZS5jeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFdzKHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa1NTSFJfQ0wgPSBULnByb3RvdHlwZS5LQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBYcyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia1NTSFJfQ0wiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLmN6LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS5LQgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9rU1JfU1BMVF9DTCA9IFQucHJvdG90eXBlLmJ6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gWXModGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9rU1JfU1BMVF9DTCA9IFQucHJvdG90eXBlLkpCID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFpzKGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJrU1JfU1BMVF9DTCIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuYnosCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLkpCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2tTS19TUExUX0NMID0gVC5wcm90b3R5cGUuJHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAkcyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2tTS19TUExUX0NMID0gVC5wcm90b3R5cGUuSEIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYXQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImtTS19TUExUX0NMIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS4keSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuSEIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfa1NTX1NQTFRfQ0wgPSBULnByb3RvdHlwZS5keiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGJ0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfa1NTX1NQTFRfQ0wgPSBULnByb3RvdHlwZS5MQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAia1NTX1NQTFRfQ0wiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLmR6LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS5MQgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9tYXh2b2x1bWUgPSBULnByb3RvdHlwZS5sQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGR0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfbWF4dm9sdW1lID0gVC5wcm90b3R5cGUuU0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZXQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgIm1heHZvbHVtZSIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUubEIsCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLlNECiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X3RpbWVzY2FsZSA9IFQucHJvdG90eXBlLm5CID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gZnQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF90aW1lc2NhbGUgPSBULnByb3RvdHlwZS5VRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBndChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAidGltZXNjYWxlIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5uQiwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUuVUQKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfdml0ZXJhdGlvbnMgPSBULnByb3RvdHlwZS5vQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGh0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfdml0ZXJhdGlvbnMgPSBULnByb3RvdHlwZS5WRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBpdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAidml0ZXJhdGlvbnMiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLm9CLAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS5WRAogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9waXRlcmF0aW9ucyA9IFQucHJvdG90eXBlLm1CID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4ganQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFQucHJvdG90eXBlLnNldF9waXRlcmF0aW9ucyA9IFQucHJvdG90eXBlLlREID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGt0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsICJwaXRlcmF0aW9ucyIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUubUIsCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLlRECiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuZ2V0X2RpdGVyYXRpb25zID0gVC5wcm90b3R5cGUuT3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBsdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2RpdGVyYXRpb25zID0gVC5wcm90b3R5cGUudkIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbXQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSwgImRpdGVyYXRpb25zIiwgewogICAgICAgICAgZ2V0OiBULnByb3RvdHlwZS5PeSwKICAgICAgICAgIHNldDogVC5wcm90b3R5cGUudkIKICAgICAgICB9KTsKICAgICAgICBULnByb3RvdHlwZS5nZXRfY2l0ZXJhdGlvbnMgPSBULnByb3RvdHlwZS5NeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIG50KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBULnByb3RvdHlwZS5zZXRfY2l0ZXJhdGlvbnMgPSBULnByb3RvdHlwZS50QiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBvdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAiY2l0ZXJhdGlvbnMiLCB7CiAgICAgICAgICBnZXQ6IFQucHJvdG90eXBlLk15LAogICAgICAgICAgc2V0OiBULnByb3RvdHlwZS50QgogICAgICAgIH0pOwogICAgICAgIFQucHJvdG90eXBlLmdldF9jb2xsaXNpb25zID0gVC5wcm90b3R5cGUuTnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBwdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVC5wcm90b3R5cGUuc2V0X2NvbGxpc2lvbnMgPSBULnByb3RvdHlwZS51QiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBxdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLCAiY29sbGlzaW9ucyIsIHsKICAgICAgICAgIGdldDogVC5wcm90b3R5cGUuTnksCiAgICAgICAgICBzZXQ6IFQucHJvdG90eXBlLnVCCiAgICAgICAgfSk7CiAgICAgICAgVC5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJ0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBOb2RlKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBOb2RlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIE5vZGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTm9kZTsKICAgICAgICBOb2RlLnByb3RvdHlwZS4keCA9IE5vZGU7CiAgICAgICAgTm9kZS5heSA9IHt9OwogICAgICAgIGIuTm9kZSA9IE5vZGU7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuZ2V0X21feCA9IE5vZGUucHJvdG90eXBlLmtCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhzdCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE5vZGUucHJvdG90eXBlLnNldF9tX3ggPSBOb2RlLnByb3RvdHlwZS5SRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB0dChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAibV94IiwgewogICAgICAgICAgZ2V0OiBOb2RlLnByb3RvdHlwZS5rQiwKICAgICAgICAgIHNldDogTm9kZS5wcm90b3R5cGUuUkQKICAgICAgICB9KTsKICAgICAgICBOb2RlLnByb3RvdHlwZS5nZXRfbV9xID0gTm9kZS5wcm90b3R5cGUuQ0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHV0KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuc2V0X21fcSA9IE5vZGUucHJvdG90eXBlLmlEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHZ0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJtX3EiLCB7CiAgICAgICAgICBnZXQ6IE5vZGUucHJvdG90eXBlLkNBLAogICAgICAgICAgc2V0OiBOb2RlLnByb3RvdHlwZS5pRAogICAgICAgIH0pOwogICAgICAgIE5vZGUucHJvdG90eXBlLmdldF9tX3YgPSBOb2RlLnByb3RvdHlwZS5jQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsod3QodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBOb2RlLnByb3RvdHlwZS5zZXRfbV92ID0gTm9kZS5wcm90b3R5cGUuSkQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeHQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgIm1fdiIsIHsKICAgICAgICAgIGdldDogTm9kZS5wcm90b3R5cGUuY0IsCiAgICAgICAgICBzZXQ6IE5vZGUucHJvdG90eXBlLkpECiAgICAgICAgfSk7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuZ2V0X21fZiA9IE5vZGUucHJvdG90eXBlLlB6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayh5dCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE5vZGUucHJvdG90eXBlLnNldF9tX2YgPSBOb2RlLnByb3RvdHlwZS52QyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB6dChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAibV9mIiwgewogICAgICAgICAgZ2V0OiBOb2RlLnByb3RvdHlwZS5QeiwKICAgICAgICAgIHNldDogTm9kZS5wcm90b3R5cGUudkMKICAgICAgICB9KTsKICAgICAgICBOb2RlLnByb3RvdHlwZS5nZXRfbV9uID0gTm9kZS5wcm90b3R5cGUudEEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEF0KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuc2V0X21fbiA9IE5vZGUucHJvdG90eXBlLiRDID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEJ0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJtX24iLCB7CiAgICAgICAgICBnZXQ6IE5vZGUucHJvdG90eXBlLnRBLAogICAgICAgICAgc2V0OiBOb2RlLnByb3RvdHlwZS4kQwogICAgICAgIH0pOwogICAgICAgIE5vZGUucHJvdG90eXBlLmdldF9tX2ltID0gTm9kZS5wcm90b3R5cGUuZEEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBDdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuc2V0X21faW0gPSBOb2RlLnByb3RvdHlwZS5LQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBEdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAibV9pbSIsIHsKICAgICAgICAgIGdldDogTm9kZS5wcm90b3R5cGUuZEEsCiAgICAgICAgICBzZXQ6IE5vZGUucHJvdG90eXBlLktDCiAgICAgICAgfSk7CiAgICAgICAgTm9kZS5wcm90b3R5cGUuZ2V0X21fYXJlYSA9IE5vZGUucHJvdG90eXBlLnB6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gRXQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE5vZGUucHJvdG90eXBlLnNldF9tX2FyZWEgPSBOb2RlLnByb3RvdHlwZS5YQiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBGdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAibV9hcmVhIiwgewogICAgICAgICAgZ2V0OiBOb2RlLnByb3RvdHlwZS5weiwKICAgICAgICAgIHNldDogTm9kZS5wcm90b3R5cGUuWEIKICAgICAgICB9KTsKICAgICAgICBOb2RlLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgR3QodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIE1CKCkgewogICAgICAgICAgdGhpcy5aeCA9IEh0KCk7CiAgICAgICAgICBoKE1CKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgTUIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgTUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTUI7CiAgICAgICAgTUIucHJvdG90eXBlLiR4ID0gTUI7CiAgICAgICAgTUIuYXkgPSB7fTsKICAgICAgICBiLmJ0R2hvc3RQYWlyQ2FsbGJhY2sgPSBNQjsKICAgICAgICBNQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEl0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBOQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRPdmVybGFwcGluZ1BhaXJDYWxsYmFjaywgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgTkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgTkIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTkI7CiAgICAgICAgTkIucHJvdG90eXBlLiR4ID0gTkI7CiAgICAgICAgTkIuYXkgPSB7fTsKICAgICAgICBiLmJ0T3ZlcmxhcHBpbmdQYWlyQ2FsbGJhY2sgPSBOQjsKICAgICAgICBOQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEp0KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBVKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBlID8gS3QoYSwgYywgZCkgOiBMdChhLCBjLCBkLCBlKTsKICAgICAgICAgIGgoVSlbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIFUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShRQS5wcm90b3R5cGUpOwogICAgICAgIFUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVTsKICAgICAgICBVLnByb3RvdHlwZS4keCA9IFU7CiAgICAgICAgVS5heSA9IHt9OwogICAgICAgIGIuYnRLaW5lbWF0aWNDaGFyYWN0ZXJDb250cm9sbGVyID0gVTsKICAgICAgICBVLnByb3RvdHlwZS5zZXRVcEF4aXMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTXQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldFdhbGtEaXJlY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgTnQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldFZlbG9jaXR5Rm9yVGltZUludGVydmFsID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBPdChkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUud2FycCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUucHJlU3RlcCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBRdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUucGxheWVyU3RlcCA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgUnQoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldEZhbGxTcGVlZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBTdChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUuc2V0SnVtcFNwZWVkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFR0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVLnByb3RvdHlwZS5zZXRNYXhKdW1wSGVpZ2h0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFV0KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVLnByb3RvdHlwZS5jYW5KdW1wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFWdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUuanVtcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgV3QodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldEdyYXZpdHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWHQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLmdldEdyYXZpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBZdCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVS5wcm90b3R5cGUuc2V0TWF4U2xvcGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWnQoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLmdldE1heFNsb3BlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gJHQodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLmdldEdob3N0T2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhhdSh0aGlzLlp4KSwgVikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldFVzZUdob3N0U3dlZXBUZXN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGJ1KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVLnByb3RvdHlwZS5vbkdyb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhY3UodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnNldFVwSW50ZXJwb2xhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZHUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLnVwZGF0ZUFjdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZXUoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFUucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBmdSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gT0IoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0U29mdEJvZHlBcnJheSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgT0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgT0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gT0I7CiAgICAgICAgT0IucHJvdG90eXBlLiR4ID0gT0I7CiAgICAgICAgT0IuYXkgPSB7fTsKICAgICAgICBiLmJ0U29mdEJvZHlBcnJheSA9IE9COwogICAgICAgIE9CLnByb3RvdHlwZS5zaXplID0gT0IucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBndSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT0IucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKGh1KGMsIGEpLCBTKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT0IucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBpdSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gR0IoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0RmFjZUFycmF5LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBHQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBHQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBHQjsKICAgICAgICBHQi5wcm90b3R5cGUuJHggPSBHQjsKICAgICAgICBHQi5heSA9IHt9OwogICAgICAgIGIuYnRGYWNlQXJyYXkgPSBHQjsKICAgICAgICBHQi5wcm90b3R5cGUuc2l6ZSA9IEdCLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4ganUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEdCLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gayhrdShjLCBhKSwgUEIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGx1KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBRQihhLCBjKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSBtdShhLCBjKTsKICAgICAgICAgIGgoUUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBRQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExBLnByb3RvdHlwZSk7CiAgICAgICAgUUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUUI7CiAgICAgICAgUUIucHJvdG90eXBlLiR4ID0gUUI7CiAgICAgICAgUUIuYXkgPSB7fTsKICAgICAgICBiLmJ0U3RhdGljUGxhbmVTaGFwZSA9IFFCOwogICAgICAgIFFCLnByb3RvdHlwZS5zZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgbnUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFFCLnByb3RvdHlwZS5nZXRMb2NhbFNjYWxpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKG91KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUUIucHJvdG90eXBlLmNhbGN1bGF0ZUxvY2FsSW5lcnRpYSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcHUoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFFCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcXUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEdBKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidE92ZXJsYXBwaW5nUGFpckNhY2hlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBHQS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBHQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBHQTsKICAgICAgICBHQS5wcm90b3R5cGUuJHggPSBHQTsKICAgICAgICBHQS5heSA9IHt9OwogICAgICAgIGIuYnRPdmVybGFwcGluZ1BhaXJDYWNoZSA9IEdBOwogICAgICAgIEdBLnByb3RvdHlwZS5zZXRJbnRlcm5hbEdob3N0UGFpckNhbGxiYWNrID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJ1KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHQS5wcm90b3R5cGUuZ2V0TnVtT3ZlcmxhcHBpbmdQYWlycyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHN1KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBHQS5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHR1KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBtQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRJbmRleGVkTWVzaCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgbUIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgbUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbUI7CiAgICAgICAgbUIucHJvdG90eXBlLiR4ID0gbUI7CiAgICAgICAgbUIuYXkgPSB7fTsKICAgICAgICBiLmJ0SW5kZXhlZE1lc2ggPSBtQjsKICAgICAgICBtQi5wcm90b3R5cGUuZ2V0X21fbnVtVHJpYW5nbGVzID0gbUIucHJvdG90eXBlLnlBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gdXUodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIG1CLnByb3RvdHlwZS5zZXRfbV9udW1UcmlhbmdsZXMgPSBtQi5wcm90b3R5cGUuZUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdnUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtQi5wcm90b3R5cGUsICJtX251bVRyaWFuZ2xlcyIsIHsKICAgICAgICAgIGdldDogbUIucHJvdG90eXBlLnlBLAogICAgICAgICAgc2V0OiBtQi5wcm90b3R5cGUuZUQKICAgICAgICB9KTsKICAgICAgICBtQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHd1KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBXKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHh1KGEsIGMsIGQsIGUsIGYpOwogICAgICAgICAgaChXKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgVy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHgucHJvdG90eXBlKTsKICAgICAgICBXLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFc7CiAgICAgICAgVy5wcm90b3R5cGUuJHggPSBXOwogICAgICAgIFcuYXkgPSB7fTsKICAgICAgICBiLmJ0U29mdFJpZ2lkRHluYW1pY3NXb3JsZCA9IFc7CiAgICAgICAgVy5wcm90b3R5cGUuYWRkU29mdEJvZHkgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB5dShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUucmVtb3ZlU29mdEJvZHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgenUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnJlbW92ZUNvbGxpc2lvbk9iamVjdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBBdShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZ2V0V29ybGRJbmZvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhCdSh0aGlzLlp4KSwgSikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmdldFNvZnRCb2R5QXJyYXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEN1KHRoaXMuWngpLCBPQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmdldERpc3BhdGNoZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKER1KHRoaXMuWngpLCBGQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnJheVRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBFdShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZ2V0UGFpckNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhGdSh0aGlzLlp4KSwgR0EpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5nZXREaXNwYXRjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEd1KHRoaXMuWngpLCBsKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuYWRkQ29sbGlzaW9uT2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gSHUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBJdShlLCBhLCBjKSA6IEp1KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5nZXRCcm9hZHBoYXNlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhLdSh0aGlzLlp4KSwgSEEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5jb252ZXhTd2VlcFRlc3QgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICB2YXIgbSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIEx1KG0sIGEsIGMsIGQsIGUsIGYpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5jb250YWN0UGFpclRlc3QgPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBNdShlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuY29udGFjdFRlc3QgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIE51KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS51cGRhdGVTaW5nbGVBYWJiID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE91KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5zZXREZWJ1Z0RyYXdlciA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQdShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZ2V0RGVidWdEcmF3ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFF1KHRoaXMuWngpLCBJQSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmRlYnVnRHJhd1dvcmxkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBSdSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZGVidWdEcmF3T2JqZWN0ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgU3UoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnNldEdyYXZpdHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVHUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmdldEdyYXZpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFV1KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuYWRkUmlnaWRCb2R5ID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgdm9pZCAwID09PSBjID8gVnUoZSwgYSkgOiB2b2lkIDAgPT09IGQgPyBfZW1zY3JpcHRlbl9iaW5kX2J0U29mdFJpZ2lkRHluYW1pY3NXb3JsZF9hZGRSaWdpZEJvZHlfMihlLCBhLCBjKSA6IFd1KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5yZW1vdmVSaWdpZEJvZHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgWHUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLmFkZENvbnN0cmFpbnQgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYyA/IFl1KGQsIGEpIDogWnUoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJHUoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnN0ZXBTaW11bGF0aW9uID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gYyA/IGF2KGUsIGEpIDogdm9pZCAwID09PSBkID8gYnYoZSwgYSwgYykgOiBjdihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuc2V0Q29udGFjdEFkZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZHYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnNldENvbnRhY3RQcm9jZXNzZWRDYWxsYmFjayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBldihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuc2V0Q29udGFjdERlc3Ryb3llZENhbGxiYWNrID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGZ2KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5hZGRBY3Rpb24gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZ3YoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFcucHJvdG90eXBlLnJlbW92ZUFjdGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBodihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuZ2V0U29sdmVySW5mbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoaXYodGhpcy5aeCksIHYpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXLnByb3RvdHlwZS5zZXRJbnRlcm5hbFRpY2tDYWxsYmFjayA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYyA/IGp2KGUsIGEpIDogdm9pZCAwID09PSBkID8ga3YoZSwgYSwgYykgOiBsdihlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVy5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIG12KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBSQihhLCBjLCBkLCBlKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgdGhpcy5aeCA9IG52KGEsIGMsIGQsIGUpOwogICAgICAgICAgaChSQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIFJCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoS0EucHJvdG90eXBlKTsKICAgICAgICBSQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBSQjsKICAgICAgICBSQi5wcm90b3R5cGUuJHggPSBSQjsKICAgICAgICBSQi5heSA9IHt9OwogICAgICAgIGIuYnRGaXhlZENvbnN0cmFpbnQgPSBSQjsKICAgICAgICBSQi5wcm90b3R5cGUuZW5hYmxlRmVlZGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgb3YoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFJCLnByb3RvdHlwZS5nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBwdih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUkIucHJvdG90eXBlLnNldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBxdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgUkIucHJvdG90eXBlLmdldFBhcmFtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICByZXR1cm4gcnYoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFJCLnByb3RvdHlwZS5zZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIHN2KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBSQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHR2KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiByKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHZvaWQgMCA9PT0gYSA/IHV2KCkgOiB2b2lkIDAgPT09IGMgPyBfZW1zY3JpcHRlbl9iaW5kX2J0VHJhbnNmb3JtX2J0VHJhbnNmb3JtXzEoYSkgOiB2dihhLCBjKTsKICAgICAgICAgIGgocilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIHIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSByOwogICAgICAgIHIucHJvdG90eXBlLiR4ID0gcjsKICAgICAgICByLmF5ID0ge307CiAgICAgICAgYi5idFRyYW5zZm9ybSA9IHI7CiAgICAgICAgci5wcm90b3R5cGUuc2V0SWRlbnRpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHd2KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICByLnByb3RvdHlwZS5zZXRPcmlnaW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgeHYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHIucHJvdG90eXBlLnNldFJvdGF0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHl2KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICByLnByb3RvdHlwZS5nZXRPcmlnaW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHp2KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUuZ2V0Um90YXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEF2KHRoaXMuWngpLCBYKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUuZ2V0QmFzaXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEJ2KHRoaXMuWngpLCBhQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHIucHJvdG90eXBlLnNldEZyb21PcGVuR0xNYXRyaXggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIGEgJiYgKGEgPSBEQShhKSk7CiAgICAgICAgICBDdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUuaW52ZXJzZSA9IHIucHJvdG90eXBlLmludmVyc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKER2KHRoaXMuWngpLCByKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUub3BfbXVsID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKEV2KGMsIGEpLCByKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgci5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEZ2KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBZKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IEd2KGEsIGMpOwogICAgICAgICAgaChZKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgWS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHoucHJvdG90eXBlKTsKICAgICAgICBZLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFk7CiAgICAgICAgWS5wcm90b3R5cGUuJHggPSBZOwogICAgICAgIFkuYXkgPSB7fTsKICAgICAgICBiLkNsb3Nlc3RSYXlSZXN1bHRDYWxsYmFjayA9IFk7CiAgICAgICAgWS5wcm90b3R5cGUuaGFzSGl0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFIdih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuZ2V0X21fcmF5RnJvbVdvcmxkID0gWS5wcm90b3R5cGUueHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEl2KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuc2V0X21fcmF5RnJvbVdvcmxkID0gWS5wcm90b3R5cGUuRXkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSnYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwgIm1fcmF5RnJvbVdvcmxkIiwgewogICAgICAgICAgZ2V0OiBZLnByb3RvdHlwZS54eSwKICAgICAgICAgIHNldDogWS5wcm90b3R5cGUuRXkKICAgICAgICB9KTsKICAgICAgICBZLnByb3RvdHlwZS5nZXRfbV9yYXlUb1dvcmxkID0gWS5wcm90b3R5cGUueXkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEt2KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuc2V0X21fcmF5VG9Xb3JsZCA9IFkucHJvdG90eXBlLkZ5ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEx2KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWS5wcm90b3R5cGUsICJtX3JheVRvV29ybGQiLCB7CiAgICAgICAgICBnZXQ6IFkucHJvdG90eXBlLnl5LAogICAgICAgICAgc2V0OiBZLnByb3RvdHlwZS5GeQogICAgICAgIH0pOwogICAgICAgIFkucHJvdG90eXBlLmdldF9tX2hpdE5vcm1hbFdvcmxkID0gWS5wcm90b3R5cGUuankgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKE12KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuc2V0X21faGl0Tm9ybWFsV29ybGQgPSBZLnByb3RvdHlwZS5xeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBOdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCAibV9oaXROb3JtYWxXb3JsZCIsIHsKICAgICAgICAgIGdldDogWS5wcm90b3R5cGUuanksCiAgICAgICAgICBzZXQ6IFkucHJvdG90eXBlLnF5CiAgICAgICAgfSk7CiAgICAgICAgWS5wcm90b3R5cGUuZ2V0X21faGl0UG9pbnRXb3JsZCA9IFkucHJvdG90eXBlLmt5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhPdih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFkucHJvdG90eXBlLnNldF9tX2hpdFBvaW50V29ybGQgPSBZLnByb3RvdHlwZS5yeSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCAibV9oaXRQb2ludFdvcmxkIiwgewogICAgICAgICAgZ2V0OiBZLnByb3RvdHlwZS5reSwKICAgICAgICAgIHNldDogWS5wcm90b3R5cGUucnkKICAgICAgICB9KTsKICAgICAgICBZLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25GaWx0ZXJHcm91cCA9IFkucHJvdG90eXBlLmJ5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gUXYodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFkucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwID0gWS5wcm90b3R5cGUuZHkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgUnYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uRmlsdGVyR3JvdXAiLCB7CiAgICAgICAgICBnZXQ6IFkucHJvdG90eXBlLmJ5LAogICAgICAgICAgc2V0OiBZLnByb3RvdHlwZS5keQogICAgICAgIH0pOwogICAgICAgIFkucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbkZpbHRlck1hc2sgPSBZLnByb3RvdHlwZS5jeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFN2KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBZLnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25GaWx0ZXJNYXNrID0gWS5wcm90b3R5cGUuZXkgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVHYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwgIm1fY29sbGlzaW9uRmlsdGVyTWFzayIsIHsKICAgICAgICAgIGdldDogWS5wcm90b3R5cGUuY3ksCiAgICAgICAgICBzZXQ6IFkucHJvdG90eXBlLmV5CiAgICAgICAgfSk7CiAgICAgICAgWS5wcm90b3R5cGUuZ2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uID0gWS5wcm90b3R5cGUuZnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBVdih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWS5wcm90b3R5cGUuc2V0X21fY2xvc2VzdEhpdEZyYWN0aW9uID0gWS5wcm90b3R5cGUuZ3kgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVnYoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwgIm1fY2xvc2VzdEhpdEZyYWN0aW9uIiwgewogICAgICAgICAgZ2V0OiBZLnByb3RvdHlwZS5meSwKICAgICAgICAgIHNldDogWS5wcm90b3R5cGUuZ3kKICAgICAgICB9KTsKICAgICAgICBZLnByb3RvdHlwZS5nZXRfbV9jb2xsaXNpb25PYmplY3QgPSBZLnByb3RvdHlwZS5oeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoV3YodGhpcy5aeCksIHEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBZLnByb3RvdHlwZS5zZXRfbV9jb2xsaXNpb25PYmplY3QgPSBZLnByb3RvdHlwZS5veSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBYdihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCAibV9jb2xsaXNpb25PYmplY3QiLCB7CiAgICAgICAgICBnZXQ6IFkucHJvdG90eXBlLmh5LAogICAgICAgICAgc2V0OiBZLnByb3RvdHlwZS5veQogICAgICAgIH0pOwogICAgICAgIFkucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBZdih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gU0IoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGEgPyBadigpIDogJHYoYSk7CiAgICAgICAgICBoKFNCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgU0IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShOQS5wcm90b3R5cGUpOwogICAgICAgIFNCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNCOwogICAgICAgIFNCLnByb3RvdHlwZS4keCA9IFNCOwogICAgICAgIFNCLmF5ID0ge307CiAgICAgICAgYi5idFNvZnRCb2R5UmlnaWRCb2R5Q29sbGlzaW9uQ29uZmlndXJhdGlvbiA9IFNCOwogICAgICAgIFNCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgYXcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIFRCKCkgewogICAgICAgICAgdGhpcy5aeCA9IGJ3KCk7CiAgICAgICAgICBoKFRCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgVEIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShaQS5wcm90b3R5cGUpOwogICAgICAgIFRCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRCOwogICAgICAgIFRCLnByb3RvdHlwZS4keCA9IFRCOwogICAgICAgIFRCLmF5ID0ge307CiAgICAgICAgYi5Db25jcmV0ZUNvbnRhY3RSZXN1bHRDYWxsYmFjayA9IFRCOwogICAgICAgIFRCLnByb3RvdHlwZS5hZGRTaW5nbGVSZXN1bHQgPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmLCBtLCBDKSB7CiAgICAgICAgICB2YXIgUCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIG0gJiYgIm9iamVjdCIgPT09IHR5cGVvZiBtICYmIChtID0gbS5aeCk7CiAgICAgICAgICBDICYmICJvYmplY3QiID09PSB0eXBlb2YgQyAmJiAoQyA9IEMuWngpOwogICAgICAgICAgcmV0dXJuIGN3KFAsIGEsIGMsIGQsIGUsIGYsIG0sIEMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBUQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGR3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBVQihhLCBjLCBkKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBkID8gZXcoYSwgYykgOiBmdyhhLCBjLCBkKTsKICAgICAgICAgIGgoVUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBVQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9BLnByb3RvdHlwZSk7CiAgICAgICAgVUIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVUI7CiAgICAgICAgVUIucHJvdG90eXBlLiR4ID0gVUI7CiAgICAgICAgVUIuYXkgPSB7fTsKICAgICAgICBiLmJ0QnZoVHJpYW5nbGVNZXNoU2hhcGUgPSBVQjsKICAgICAgICBVQi5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGd3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVQi5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhodyh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFVCLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGl3KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBVQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGp3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBmQigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb25zdENvbGxpc2lvbk9iamVjdEFycmF5LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBmQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBmQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBmQjsKICAgICAgICBmQi5wcm90b3R5cGUuJHggPSBmQjsKICAgICAgICBmQi5heSA9IHt9OwogICAgICAgIGIuYnRDb25zdENvbGxpc2lvbk9iamVjdEFycmF5ID0gZkI7CiAgICAgICAgZkIucHJvdG90eXBlLnNpemUgPSBmQi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGt3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmQi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsobHcoYywgYSksIHEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIG13KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBWQihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGUgPyBudyhhLCBjLCBkKSA6IHZvaWQgMCA9PT0gZiA/IF9lbXNjcmlwdGVuX2JpbmRfYnRTbGlkZXJDb25zdHJhaW50X2J0U2xpZGVyQ29uc3RyYWludF80KGEsIGMsIGQsIGUpIDogb3coYSwgYywgZCwgZSwgZik7CiAgICAgICAgICBoKFZCKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgVkIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShLQS5wcm90b3R5cGUpOwogICAgICAgIFZCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFZCOwogICAgICAgIFZCLnByb3RvdHlwZS4keCA9IFZCOwogICAgICAgIFZCLmF5ID0ge307CiAgICAgICAgYi5idFNsaWRlckNvbnN0cmFpbnQgPSBWQjsKICAgICAgICBWQi5wcm90b3R5cGUuc2V0TG93ZXJMaW5MaW1pdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBwdyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkIucHJvdG90eXBlLnNldFVwcGVyTGluTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcXcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFZCLnByb3RvdHlwZS5zZXRMb3dlckFuZ0xpbWl0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJ3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWQi5wcm90b3R5cGUuc2V0VXBwZXJBbmdMaW1pdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBzdyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkIucHJvdG90eXBlLmVuYWJsZUZlZWRiYWNrID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHR3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWQi5wcm90b3R5cGUuZ2V0QnJlYWtpbmdJbXB1bHNlVGhyZXNob2xkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gdXcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFZCLnByb3RvdHlwZS5zZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdncoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFZCLnByb3RvdHlwZS5nZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgcmV0dXJuIHd3KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWQi5wcm90b3R5cGUuc2V0UGFyYW0gPSBmdW5jdGlvbihhLCBjLCBkKSB7CiAgICAgICAgICB2YXIgZSA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICB4dyhlLCBhLCBjLCBkKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVkIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB5dyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gVigpIHsKICAgICAgICAgIHRoaXMuWnggPSB6dygpOwogICAgICAgICAgaChWKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgVi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHcucHJvdG90eXBlKTsKICAgICAgICBWLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFY7CiAgICAgICAgVi5wcm90b3R5cGUuJHggPSBWOwogICAgICAgIFYuYXkgPSB7fTsKICAgICAgICBiLmJ0UGFpckNhY2hpbmdHaG9zdE9iamVjdCA9IFY7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0QW5pc290cm9waWNGcmljdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgQXcoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmdldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhCdyh0aGlzLlp4KSwgbikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLnNldENvbnRhY3RQcm9jZXNzaW5nVGhyZXNob2xkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEN3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5zZXRBY3RpdmF0aW9uU3RhdGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRHcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmZvcmNlQWN0aXZhdGlvblN0YXRlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEV3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5hY3RpdmF0ZSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB2b2lkIDAgPT09IGEgPyBGdyhjKSA6IEd3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5pc0FjdGl2ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICEhSHcodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmlzS2luZW1hdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFJdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuaXNTdGF0aWNPYmplY3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiAhIUp3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5pc1N0YXRpY09yS2luZW1hdGljT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFLdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuZ2V0UmVzdGl0dXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBMdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuZ2V0RnJpY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBNdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuZ2V0Um9sbGluZ0ZyaWN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gTncodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLnNldFJlc3RpdHV0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIE93KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5zZXRGcmljdGlvbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBQdyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0Um9sbGluZ0ZyaWN0aW9uID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFF3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5nZXRXb3JsZFRyYW5zZm9ybSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoUncodGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5nZXRDb2xsaXNpb25GbGFncyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFN3KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5zZXRDb2xsaXNpb25GbGFncyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBUdyhjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0V29ybGRUcmFuc2Zvcm0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgVXcoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLnNldENvbGxpc2lvblNoYXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFZ3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5zZXRDY2RNb3Rpb25UaHJlc2hvbGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgV3coYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLnNldENjZFN3ZXB0U3BoZXJlUmFkaXVzID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFh3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5nZXRVc2VySW5kZXggPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBZdyh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0VXNlckluZGV4ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFp3KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBWLnByb3RvdHlwZS5nZXRVc2VyUG9pbnRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoJHcodGhpcy5aeCksIEpBKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuc2V0VXNlclBvaW50ZXIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYXgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmdldEJyb2FkcGhhc2VIYW5kbGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGJ4KHRoaXMuWngpLCB0KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuZ2V0TnVtT3ZlcmxhcHBpbmdPYmplY3RzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gY3godGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFYucHJvdG90eXBlLmdldE92ZXJsYXBwaW5nT2JqZWN0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKGR4KGMsIGEpLCBxKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgVi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGV4KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBFKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSBidE1hbmlmb2xkUG9pbnQsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7CiAgICAgICAgfQogICAgICAgIEUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgRS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBFOwogICAgICAgIEUucHJvdG90eXBlLiR4ID0gRTsKICAgICAgICBFLmF5ID0ge307CiAgICAgICAgYi5idE1hbmlmb2xkUG9pbnQgPSBFOwogICAgICAgIEUucHJvdG90eXBlLmdldFBvc2l0aW9uV29ybGRPbkEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGZ4KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuZ2V0UG9zaXRpb25Xb3JsZE9uQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZ3godGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFLnByb3RvdHlwZS5nZXRBcHBsaWVkSW1wdWxzZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGh4KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFLnByb3RvdHlwZS5nZXREaXN0YW5jZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGl4KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBFLnByb3RvdHlwZS5nZXRfbV9sb2NhbFBvaW50QSA9IEUucHJvdG90eXBlLm9BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhqeCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEUucHJvdG90eXBlLnNldF9tX2xvY2FsUG9pbnRBID0gRS5wcm90b3R5cGUuVkMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAga3goYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFLnByb3RvdHlwZSwgIm1fbG9jYWxQb2ludEEiLCB7CiAgICAgICAgICBnZXQ6IEUucHJvdG90eXBlLm9BLAogICAgICAgICAgc2V0OiBFLnByb3RvdHlwZS5WQwogICAgICAgIH0pOwogICAgICAgIEUucHJvdG90eXBlLmdldF9tX2xvY2FsUG9pbnRCID0gRS5wcm90b3R5cGUucEEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGx4KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuc2V0X21fbG9jYWxQb2ludEIgPSBFLnByb3RvdHlwZS5XQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBteChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEUucHJvdG90eXBlLCAibV9sb2NhbFBvaW50QiIsIHsKICAgICAgICAgIGdldDogRS5wcm90b3R5cGUucEEsCiAgICAgICAgICBzZXQ6IEUucHJvdG90eXBlLldDCiAgICAgICAgfSk7CiAgICAgICAgRS5wcm90b3R5cGUuZ2V0X21fcG9zaXRpb25Xb3JsZE9uQiA9IEUucHJvdG90eXBlLkJBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhueCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIEUucHJvdG90eXBlLnNldF9tX3Bvc2l0aW9uV29ybGRPbkIgPSBFLnByb3RvdHlwZS5oRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBveChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEUucHJvdG90eXBlLCAibV9wb3NpdGlvbldvcmxkT25CIiwgewogICAgICAgICAgZ2V0OiBFLnByb3RvdHlwZS5CQSwKICAgICAgICAgIHNldDogRS5wcm90b3R5cGUuaEQKICAgICAgICB9KTsKICAgICAgICBFLnByb3RvdHlwZS5nZXRfbV9wb3NpdGlvbldvcmxkT25BID0gRS5wcm90b3R5cGUuQUEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHB4KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuc2V0X21fcG9zaXRpb25Xb3JsZE9uQSA9IEUucHJvdG90eXBlLmdEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHF4KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRS5wcm90b3R5cGUsICJtX3Bvc2l0aW9uV29ybGRPbkEiLCB7CiAgICAgICAgICBnZXQ6IEUucHJvdG90eXBlLkFBLAogICAgICAgICAgc2V0OiBFLnByb3RvdHlwZS5nRAogICAgICAgIH0pOwogICAgICAgIEUucHJvdG90eXBlLmdldF9tX25vcm1hbFdvcmxkT25CID0gRS5wcm90b3R5cGUud0EgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKHJ4KHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuc2V0X21fbm9ybWFsV29ybGRPbkIgPSBFLnByb3RvdHlwZS5jRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBzeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEUucHJvdG90eXBlLCAibV9ub3JtYWxXb3JsZE9uQiIsIHsKICAgICAgICAgIGdldDogRS5wcm90b3R5cGUud0EsCiAgICAgICAgICBzZXQ6IEUucHJvdG90eXBlLmNECiAgICAgICAgfSk7CiAgICAgICAgRS5wcm90b3R5cGUuZ2V0X21fdXNlclBlcnNpc3RlbnREYXRhID0gRS5wcm90b3R5cGUuYkIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB0eCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgRS5wcm90b3R5cGUuc2V0X21fdXNlclBlcnNpc3RlbnREYXRhID0gRS5wcm90b3R5cGUuSUQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdXgoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFLnByb3RvdHlwZSwgIm1fdXNlclBlcnNpc3RlbnREYXRhIiwgewogICAgICAgICAgZ2V0OiBFLnByb3RvdHlwZS5iQiwKICAgICAgICAgIHNldDogRS5wcm90b3R5cGUuSUQKICAgICAgICB9KTsKICAgICAgICBFLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgdngodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIFdCKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICB0aGlzLlp4ID0gdm9pZCAwID09PSBkID8gd3goYSwgYykgOiB2b2lkIDAgPT09IGUgPyBfZW1zY3JpcHRlbl9iaW5kX2J0UG9pbnQyUG9pbnRDb25zdHJhaW50X2J0UG9pbnQyUG9pbnRDb25zdHJhaW50XzMoYSwgYywgZCkgOiB4eChhLCBjLCBkLCBlKTsKICAgICAgICAgIGgoV0IpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBXQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEtBLnByb3RvdHlwZSk7CiAgICAgICAgV0IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gV0I7CiAgICAgICAgV0IucHJvdG90eXBlLiR4ID0gV0I7CiAgICAgICAgV0IuYXkgPSB7fTsKICAgICAgICBiLmJ0UG9pbnQyUG9pbnRDb25zdHJhaW50ID0gV0I7CiAgICAgICAgV0IucHJvdG90eXBlLnNldFBpdm90QSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB5eChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0IucHJvdG90eXBlLnNldFBpdm90QiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB6eChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0IucHJvdG90eXBlLmdldFBpdm90SW5BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhBeCh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdCLnByb3RvdHlwZS5nZXRQaXZvdEluQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQngodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQi5wcm90b3R5cGUuZW5hYmxlRmVlZGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgQ3goYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdCLnByb3RvdHlwZS5nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBEeCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0IucHJvdG90eXBlLnNldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBFeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgV0IucHJvdG90eXBlLmdldFBhcmFtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICByZXR1cm4gRngoZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFdCLnByb3RvdHlwZS5zZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIEd4KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQi5wcm90b3R5cGUuZ2V0X21fc2V0dGluZyA9IFdCLnByb3RvdHlwZS5JQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoSHgodGhpcy5aeCksIEgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBXQi5wcm90b3R5cGUuc2V0X21fc2V0dGluZyA9IFdCLnByb3RvdHlwZS5vRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBJeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdCLnByb3RvdHlwZSwgIm1fc2V0dGluZyIsIHsKICAgICAgICAgIGdldDogV0IucHJvdG90eXBlLklBLAogICAgICAgICAgc2V0OiBXQi5wcm90b3R5cGUub0QKICAgICAgICB9KTsKICAgICAgICBXQi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIEp4KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBYQigpIHsKICAgICAgICAgIHRoaXMuWnggPSBLeCgpOwogICAgICAgICAgaChYQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIFhCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIFhCLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFhCOwogICAgICAgIFhCLnByb3RvdHlwZS4keCA9IFhCOwogICAgICAgIFhCLmF5ID0ge307CiAgICAgICAgYi5idFNvZnRCb2R5SGVscGVycyA9IFhCOwogICAgICAgIFhCLnByb3RvdHlwZS5DcmVhdGVSb3BlID0gZnVuY3Rpb24oYSwgYywgZCwgZSwgZikgewogICAgICAgICAgdmFyIG0gPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICByZXR1cm4gayhMeChtLCBhLCBjLCBkLCBlLCBmKSwgUykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFhCLnByb3RvdHlwZS5DcmVhdGVQYXRjaCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYsIG0sIEMsIFAsIGlhKSB7CiAgICAgICAgICB2YXIgbmIgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICBtICYmICJvYmplY3QiID09PSB0eXBlb2YgbSAmJiAobSA9IG0uWngpOwogICAgICAgICAgQyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIEMgJiYgKEMgPSBDLlp4KTsKICAgICAgICAgIFAgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBQICYmIChQID0gUC5aeCk7CiAgICAgICAgICBpYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGlhICYmIChpYSA9IGlhLlp4KTsKICAgICAgICAgIHJldHVybiBrKE14KG5iLCBhLCBjLCBkLCBlLCBmLCBtLCBDLCBQLCBpYSksIFMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYQi5wcm90b3R5cGUuQ3JlYXRlUGF0Y2hVViA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUsIGYsIG0sIEMsIFAsIGlhLCBuYikgewogICAgICAgICAgdmFyIFdiID0gdGhpcy5aeDsKICAgICAgICAgIHpBKCk7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIG0gJiYgIm9iamVjdCIgPT09IHR5cGVvZiBtICYmIChtID0gbS5aeCk7CiAgICAgICAgICBDICYmICJvYmplY3QiID09PSB0eXBlb2YgQyAmJiAoQyA9IEMuWngpOwogICAgICAgICAgUCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIFAgJiYgKFAgPSBQLlp4KTsKICAgICAgICAgIGlhICYmICJvYmplY3QiID09PSB0eXBlb2YgaWEgJiYgKGlhID0gaWEuWngpOwogICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIG5iICYmIChuYiA9IERBKG5iKSk7CiAgICAgICAgICByZXR1cm4gayhOeChXYiwgYSwgYywgZCwgZSwgZiwgbSwgQywgUCwgaWEsIG5iKSwgUykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFhCLnByb3RvdHlwZS5DcmVhdGVFbGxpcHNvaWQgPSBmdW5jdGlvbihhLCBjLCBkLCBlKSB7CiAgICAgICAgICB2YXIgZiA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgcmV0dXJuIGsoT3goZiwgYSwgYywgZCwgZSksIFMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYQi5wcm90b3R5cGUuQ3JlYXRlRnJvbVRyaU1lc2ggPSBmdW5jdGlvbihhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICB2YXIgbSA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBjICYmIChjID0gREEoYykpOwogICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCkgewogICAgICAgICAgICB2YXIgQyA9IEFBKGQsIEJhKTsKICAgICAgICAgICAgQkEoZCwgQmEsIEMpOwogICAgICAgICAgICBkID0gQwogICAgICAgICAgfQogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICByZXR1cm4gayhQeChtLCBhLCBjLCBkLCBlLCBmKSwgUykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFhCLnByb3RvdHlwZS5DcmVhdGVGcm9tQ29udmV4SHVsbCA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgIHZhciBmID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICByZXR1cm4gayhReChmLCBhLCBjLCBkLCBlKSwgUykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFhCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgUngodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0QnJvYWRwaGFzZVByb3h5LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpOwogICAgICAgIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdDsKICAgICAgICB0LnByb3RvdHlwZS4keCA9IHQ7CiAgICAgICAgdC5heSA9IHt9OwogICAgICAgIGIuYnRCcm9hZHBoYXNlUHJveHkgPSB0OwogICAgICAgIHQucHJvdG90eXBlLmdldF9tX2NvbGxpc2lvbkZpbHRlckdyb3VwID0gdC5wcm90b3R5cGUuYnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBTeCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdC5wcm90b3R5cGUuc2V0X21fY29sbGlzaW9uRmlsdGVyR3JvdXAgPSB0LnByb3RvdHlwZS5keSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBUeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCAibV9jb2xsaXNpb25GaWx0ZXJHcm91cCIsIHsKICAgICAgICAgIGdldDogdC5wcm90b3R5cGUuYnksCiAgICAgICAgICBzZXQ6IHQucHJvdG90eXBlLmR5CiAgICAgICAgfSk7CiAgICAgICAgdC5wcm90b3R5cGUuZ2V0X21fY29sbGlzaW9uRmlsdGVyTWFzayA9IHQucHJvdG90eXBlLmN5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gVXgodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHQucHJvdG90eXBlLnNldF9tX2NvbGxpc2lvbkZpbHRlck1hc2sgPSB0LnByb3RvdHlwZS5leSA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBWeChjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCAibV9jb2xsaXNpb25GaWx0ZXJNYXNrIiwgewogICAgICAgICAgZ2V0OiB0LnByb3RvdHlwZS5jeSwKICAgICAgICAgIHNldDogdC5wcm90b3R5cGUuZXkKICAgICAgICB9KTsKICAgICAgICB0LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgV3godGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIEtCKCkgewogICAgICAgICAgdGhyb3cgImNhbm5vdCBjb25zdHJ1Y3QgYSB0Tm9kZUFycmF5LCBubyBjb25zdHJ1Y3RvciBpbiBJREwiOwogICAgICAgIH0KICAgICAgICBLQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBLQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBLQjsKICAgICAgICBLQi5wcm90b3R5cGUuJHggPSBLQjsKICAgICAgICBLQi5heSA9IHt9OwogICAgICAgIGIudE5vZGVBcnJheSA9IEtCOwogICAgICAgIEtCLnByb3RvdHlwZS5zaXplID0gS0IucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBYeCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgS0IucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKFl4KGMsIGEpLCBOb2RlKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgS0IucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBaeCh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gWUIoYSkgewogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSAkeChhKTsKICAgICAgICAgIGgoWUIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBZQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKTsKICAgICAgICBZQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBZQjsKICAgICAgICBZQi5wcm90b3R5cGUuJHggPSBZQjsKICAgICAgICBZQi5heSA9IHt9OwogICAgICAgIGIuYnRCb3hTaGFwZSA9IFlCOwogICAgICAgIFlCLnByb3RvdHlwZS5zZXRNYXJnaW4gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYXkoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFlCLnByb3RvdHlwZS5nZXRNYXJnaW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBieSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWUIucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjeShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWUIucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoZHkodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBZQi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBleShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWUIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBmeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gUEIoKSB7CiAgICAgICAgICB0aHJvdyAiY2Fubm90IGNvbnN0cnVjdCBhIGJ0RmFjZSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgUEIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSk7CiAgICAgICAgUEIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUEI7CiAgICAgICAgUEIucHJvdG90eXBlLiR4ID0gUEI7CiAgICAgICAgUEIuYXkgPSB7fTsKICAgICAgICBiLmJ0RmFjZSA9IFBCOwogICAgICAgIFBCLnByb3RvdHlwZS5nZXRfbV9pbmRpY2VzID0gUEIucHJvdG90eXBlLmZBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhneSh0aGlzLlp4KSwgTEIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBQQi5wcm90b3R5cGUuc2V0X21faW5kaWNlcyA9IFBCLnByb3RvdHlwZS5NQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBoeShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBCLnByb3RvdHlwZSwgIm1faW5kaWNlcyIsIHsKICAgICAgICAgIGdldDogUEIucHJvdG90eXBlLmZBLAogICAgICAgICAgc2V0OiBQQi5wcm90b3R5cGUuTUMKICAgICAgICB9KTsKICAgICAgICBQQi5wcm90b3R5cGUuZ2V0X21fcGxhbmUgPSBQQi5wcm90b3R5cGUuekEgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGl5KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBQQi5wcm90b3R5cGUuc2V0X21fcGxhbmUgPSBQQi5wcm90b3R5cGUuZkQgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBqeShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBCLnByb3RvdHlwZSwgIm1fcGxhbmUiLCB7CiAgICAgICAgICBnZXQ6IFBCLnByb3RvdHlwZS56QSwKICAgICAgICAgIHNldDogUEIucHJvdG90eXBlLmZECiAgICAgICAgfSk7CiAgICAgICAgUEIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBreSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gWkIoKSB7CiAgICAgICAgICB0aGlzLlp4ID0gbHkoKTsKICAgICAgICAgIGgoWkIpW3RoaXMuWnhdID0gdGhpcwogICAgICAgIH0KICAgICAgICBaQi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElBLnByb3RvdHlwZSk7CiAgICAgICAgWkIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gWkI7CiAgICAgICAgWkIucHJvdG90eXBlLiR4ID0gWkI7CiAgICAgICAgWkIuYXkgPSB7fTsKICAgICAgICBiLkRlYnVnRHJhd2VyID0gWkI7CiAgICAgICAgWkIucHJvdG90eXBlLmRyYXdMaW5lID0gZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgdmFyIGUgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgbXkoZSwgYSwgYywgZCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFpCLnByb3RvdHlwZS5kcmF3Q29udGFjdFBvaW50ID0gZnVuY3Rpb24oYSwgYywgZCwgZSwgZikgewogICAgICAgICAgdmFyIG0gPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIGYgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBmICYmIChmID0gZi5aeCk7CiAgICAgICAgICBueShtLCBhLCBjLCBkLCBlLCBmKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWkIucHJvdG90eXBlLnJlcG9ydEVycm9yV2FybmluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIHpBKCk7CiAgICAgICAgICBhID0gYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgPyBhLlp4IDogQ0EoYSk7CiAgICAgICAgICBveShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWkIucHJvdG90eXBlLmRyYXczZFRleHQgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICB6QSgpOwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgPSBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyA/IGMuWnggOiBDQShjKTsKICAgICAgICAgIHB5KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBaQi5wcm90b3R5cGUuc2V0RGVidWdNb2RlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHF5KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBaQi5wcm90b3R5cGUuZ2V0RGVidWdNb2RlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gcnkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFpCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgc3kodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uICRCKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IHR5KGEsIGMpOwogICAgICAgICAgaCgkQilbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgICRCLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTUEucHJvdG90eXBlKTsKICAgICAgICAkQi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkQjsKICAgICAgICAkQi5wcm90b3R5cGUuJHggPSAkQjsKICAgICAgICAkQi5heSA9IHt9OwogICAgICAgIGIuYnRDYXBzdWxlU2hhcGVYID0gJEI7CiAgICAgICAgJEIucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB1eShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHZ5KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICAkQi5wcm90b3R5cGUuZ2V0VXBBeGlzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gd3kodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgICRCLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB4eSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLmdldEhhbGZIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB5eSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICB6eShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoQXkodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICAkQi5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBCeShkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgJEIucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBDeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gWChhLCBjLCBkLCBlKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgdGhpcy5aeCA9IER5KGEsIGMsIGQsIGUpOwogICAgICAgICAgaChYKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgWC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNBLnByb3RvdHlwZSk7CiAgICAgICAgWC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBYOwogICAgICAgIFgucHJvdG90eXBlLiR4ID0gWDsKICAgICAgICBYLmF5ID0ge307CiAgICAgICAgYi5idFF1YXRlcm5pb24gPSBYOwogICAgICAgIFgucHJvdG90eXBlLnNldFZhbHVlID0gZnVuY3Rpb24oYSwgYywgZCwgZSkgewogICAgICAgICAgdmFyIGYgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBkICYmICJvYmplY3QiID09PSB0eXBlb2YgZCAmJiAoZCA9IGQuWngpOwogICAgICAgICAgZSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGUgJiYgKGUgPSBlLlp4KTsKICAgICAgICAgIEV5KGYsIGEsIGMsIGQsIGUpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRFdWxlclpZWCA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIEZ5KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRSb3RhdGlvbiA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgR3koZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFgucHJvdG90eXBlLm5vcm1hbGl6ZSA9IFgucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgSHkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFgucHJvdG90eXBlLmxlbmd0aDIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBJeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUubGVuZ3RoID0gWC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gSnkodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFgucHJvdG90eXBlLmRvdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICByZXR1cm4gS3koYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFgucHJvdG90eXBlLm5vcm1hbGl6ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKEx5KHRoaXMuWngpLCBYKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUuZ2V0QXhpcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTXkodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5pbnZlcnNlID0gWC5wcm90b3R5cGUuaW52ZXJzZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoTnkodGhpcy5aeCksIFgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5nZXRBbmdsZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIE95KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5nZXRBbmdsZVNob3J0ZXN0UGF0aCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFB5KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5hbmdsZSA9IFgucHJvdG90eXBlLmFuZ2xlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBReShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUuYW5nbGVTaG9ydGVzdFBhdGggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIFJ5KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5vcF9hZGQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoU3koYywgYSksIFgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5vcF9zdWIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoVHkoYywgYSksIFgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5vcF9tdWwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcmV0dXJuIGsoVXkoYywgYSksIFgpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5vcF9tdWxxID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKFZ5KGMsIGEpLCBYKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUub3BfZGl2ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIHJldHVybiBrKFd5KGMsIGEpLCBYKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUueCA9IFgucHJvdG90eXBlLnggPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBYeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUueSA9IFgucHJvdG90eXBlLnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBZeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUueiA9IFgucHJvdG90eXBlLnogPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBaeSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWC5wcm90b3R5cGUudyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuICR5KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRYID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGF6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGJ6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGN6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5zZXRXID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGR6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBYLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgZXoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGZ1bmN0aW9uIGFDKGEsIGMpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgdGhpcy5aeCA9IGZ6KGEsIGMpOwogICAgICAgICAgaChhQylbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIGFDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTUEucHJvdG90eXBlKTsKICAgICAgICBhQy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBhQzsKICAgICAgICBhQy5wcm90b3R5cGUuJHggPSBhQzsKICAgICAgICBhQy5heSA9IHt9OwogICAgICAgIGIuYnRDYXBzdWxlU2hhcGVaID0gYUM7CiAgICAgICAgYUMucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBneihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGh6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBhQy5wcm90b3R5cGUuZ2V0VXBBeGlzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gaXoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGFDLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBqeih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLmdldEhhbGZIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBreih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLnNldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBseihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLmdldExvY2FsU2NhbGluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsobXoodGhpcy5aeCksIHApCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBhQy5wcm90b3R5cGUuY2FsY3VsYXRlTG9jYWxJbmVydGlhID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBueihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYUMucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBveih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgZnVuY3Rpb24gdigpIHsKICAgICAgICAgIHRocm93ICJjYW5ub3QgY29uc3RydWN0IGEgYnRDb250YWN0U29sdmVySW5mbywgbm8gY29uc3RydWN0b3IgaW4gSURMIjsKICAgICAgICB9CiAgICAgICAgdi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICB2LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHY7CiAgICAgICAgdi5wcm90b3R5cGUuJHggPSB2OwogICAgICAgIHYuYXkgPSB7fTsKICAgICAgICBiLmJ0Q29udGFjdFNvbHZlckluZm8gPSB2OwogICAgICAgIHYucHJvdG90eXBlLmdldF9tX3NwbGl0SW1wdWxzZSA9IHYucHJvdG90eXBlLkxBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gISFweih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgdi5wcm90b3R5cGUuc2V0X21fc3BsaXRJbXB1bHNlID0gdi5wcm90b3R5cGUuckQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgcXooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LnByb3RvdHlwZSwgIm1fc3BsaXRJbXB1bHNlIiwgewogICAgICAgICAgZ2V0OiB2LnByb3RvdHlwZS5MQSwKICAgICAgICAgIHNldDogdi5wcm90b3R5cGUuckQKICAgICAgICB9KTsKICAgICAgICB2LnByb3RvdHlwZS5nZXRfbV9zcGxpdEltcHVsc2VQZW5ldHJhdGlvblRocmVzaG9sZCA9IHYucHJvdG90eXBlLk1BID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gcnoodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIHYucHJvdG90eXBlLnNldF9tX3NwbGl0SW1wdWxzZVBlbmV0cmF0aW9uVGhyZXNob2xkID0gdi5wcm90b3R5cGUuc0QgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgc3ooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LnByb3RvdHlwZSwgIm1fc3BsaXRJbXB1bHNlUGVuZXRyYXRpb25UaHJlc2hvbGQiLCB7CiAgICAgICAgICBnZXQ6IHYucHJvdG90eXBlLk1BLAogICAgICAgICAgc2V0OiB2LnByb3RvdHlwZS5zRAogICAgICAgIH0pOwogICAgICAgIHYucHJvdG90eXBlLmdldF9tX251bUl0ZXJhdGlvbnMgPSB2LnByb3RvdHlwZS54QSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIHR6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICB2LnByb3RvdHlwZS5zZXRfbV9udW1JdGVyYXRpb25zID0gdi5wcm90b3R5cGUuZEQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdXooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LnByb3RvdHlwZSwgIm1fbnVtSXRlcmF0aW9ucyIsIHsKICAgICAgICAgIGdldDogdi5wcm90b3R5cGUueEEsCiAgICAgICAgICBzZXQ6IHYucHJvdG90eXBlLmRECiAgICAgICAgfSk7CiAgICAgICAgdi5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHZ6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBiQyhhLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIGQgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBkICYmIChkID0gZC5aeCk7CiAgICAgICAgICBlICYmICJvYmplY3QiID09PSB0eXBlb2YgZSAmJiAoZSA9IGUuWngpOwogICAgICAgICAgZiAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGYgJiYgKGYgPSBmLlp4KTsKICAgICAgICAgIHRoaXMuWnggPSB2b2lkIDAgPT09IGUgPyB3eihhLCBjLCBkKSA6IHZvaWQgMCA9PT0gZiA/IF9lbXNjcmlwdGVuX2JpbmRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnRfNChhLCBjLCBkLCBlKSA6IHh6KGEsIGMsIGQsIGUsIGYpOwogICAgICAgICAgaChiQylbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIGJDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoV0EucHJvdG90eXBlKTsKICAgICAgICBiQy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBiQzsKICAgICAgICBiQy5wcm90b3R5cGUuJHggPSBiQzsKICAgICAgICBiQy5heSA9IHt9OwogICAgICAgIGIuYnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnQgPSBiQzsKICAgICAgICBiQy5wcm90b3R5cGUuZW5hYmxlU3ByaW5nID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICB5eihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLnNldFN0aWZmbmVzcyA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgIHZhciBkID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgenooZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5zZXREYW1waW5nID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICBBeihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLnNldEVxdWlsaWJyaXVtUG9pbnQgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIHZvaWQgMCA9PT0gYSA/IEJ6KGQpIDogdm9pZCAwID09PSBjID8gQ3ooZCwgYSkgOiBEeihkLCBhLCBjKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLnNldExpbmVhckxvd2VyTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgRXooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5zZXRMaW5lYXJVcHBlckxpbWl0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIEZ6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiQy5wcm90b3R5cGUuc2V0QW5ndWxhckxvd2VyTGltaXQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgR3ooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5zZXRBbmd1bGFyVXBwZXJMaW1pdCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBIeihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLmdldEZyYW1lT2Zmc2V0QSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoSXoodGhpcy5aeCksIHIpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiQy5wcm90b3R5cGUuZW5hYmxlRmVlZGJhY2sgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgSnooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5nZXRCcmVha2luZ0ltcHVsc2VUaHJlc2hvbGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBLeih0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLnNldEJyZWFraW5nSW1wdWxzZVRocmVzaG9sZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBMeihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgYkMucHJvdG90eXBlLmdldFBhcmFtID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgdmFyIGQgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIGMgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBjICYmIChjID0gYy5aeCk7CiAgICAgICAgICByZXR1cm4gTXooZCwgYSwgYykKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGJDLnByb3RvdHlwZS5zZXRQYXJhbSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgIHZhciBlID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIE56KGUsIGEsIGMsIGQpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBiQy5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIE96KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBjQyhhKSB7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgdGhpcy5aeCA9IFB6KGEpOwogICAgICAgICAgaChjQylbdGhpcy5aeF0gPSB0aGlzCiAgICAgICAgfQogICAgICAgIGNDLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpOwogICAgICAgIGNDLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNDOwogICAgICAgIGNDLnByb3RvdHlwZS4keCA9IGNDOwogICAgICAgIGNDLmF5ID0ge307CiAgICAgICAgYi5idFNwaGVyZVNoYXBlID0gY0M7CiAgICAgICAgY0MucHJvdG90eXBlLnNldE1hcmdpbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBReihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgY0MucHJvdG90eXBlLmdldE1hcmdpbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIFJ6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQy5wcm90b3R5cGUuc2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgdmFyIGMgPSB0aGlzLlp4OwogICAgICAgICAgYSAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGEgJiYgKGEgPSBhLlp4KTsKICAgICAgICAgIFN6KGMsIGEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQy5wcm90b3R5cGUuZ2V0TG9jYWxTY2FsaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhUeih0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIGNDLnByb3RvdHlwZS5jYWxjdWxhdGVMb2NhbEluZXJ0aWEgPSBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICB2YXIgZCA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgYyAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGMgJiYgKGMgPSBjLlp4KTsKICAgICAgICAgIFV6KGQsIGEsIGMpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBjQy5wcm90b3R5cGUuX19kZXN0cm95X18gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFZ6KHRoaXMuWngpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBmdW5jdGlvbiBaKGEsIGMsIGQsIGUsIGYpIHsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBjICYmICJvYmplY3QiID09PSB0eXBlb2YgYyAmJiAoYyA9IGMuWngpOwogICAgICAgICAgZCAmJiAib2JqZWN0IiA9PT0gdHlwZW9mIGQgJiYgKGQgPSBkLlp4KTsKICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBlICYmIChlID0gZS5aeCk7CiAgICAgICAgICBmICYmICJvYmplY3QiID09PSB0eXBlb2YgZiAmJiAoZiA9IGYuWngpOwogICAgICAgICAgdGhpcy5aeCA9IFd6KGEsIGMsIGQsIGUsIGYpOwogICAgICAgICAgaChaKVt0aGlzLlp4XSA9IHRoaXMKICAgICAgICB9CiAgICAgICAgWi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTsKICAgICAgICBaLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFo7CiAgICAgICAgWi5wcm90b3R5cGUuJHggPSBaOwogICAgICAgIFouYXkgPSB7fTsKICAgICAgICBiLkxvY2FsQ29udmV4UmVzdWx0ID0gWjsKICAgICAgICBaLnByb3RvdHlwZS5nZXRfbV9oaXRDb2xsaXNpb25PYmplY3QgPSBaLnByb3RvdHlwZS5YeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIGsoWHoodGhpcy5aeCksIHEpCiAgICAgICAgfQogICAgICAgIDsKICAgICAgICBaLnByb3RvdHlwZS5zZXRfbV9oaXRDb2xsaXNpb25PYmplY3QgPSBaLnByb3RvdHlwZS5EQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBZeihjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCAibV9oaXRDb2xsaXNpb25PYmplY3QiLCB7CiAgICAgICAgICBnZXQ6IFoucHJvdG90eXBlLlh6LAogICAgICAgICAgc2V0OiBaLnByb3RvdHlwZS5EQwogICAgICAgIH0pOwogICAgICAgIFoucHJvdG90eXBlLmdldF9tX2xvY2FsU2hhcGVJbmZvID0gWi5wcm90b3R5cGUucUEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKFp6KHRoaXMuWngpLCBrQikKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFoucHJvdG90eXBlLnNldF9tX2xvY2FsU2hhcGVJbmZvID0gWi5wcm90b3R5cGUuWEMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgJHooYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLnByb3RvdHlwZSwgIm1fbG9jYWxTaGFwZUluZm8iLCB7CiAgICAgICAgICBnZXQ6IFoucHJvdG90eXBlLnFBLAogICAgICAgICAgc2V0OiBaLnByb3RvdHlwZS5YQwogICAgICAgIH0pOwogICAgICAgIFoucHJvdG90eXBlLmdldF9tX2hpdE5vcm1hbExvY2FsID0gWi5wcm90b3R5cGUuYUEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBrKGFBKHRoaXMuWngpLCBwKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgWi5wcm90b3R5cGUuc2V0X21faGl0Tm9ybWFsTG9jYWwgPSBaLnByb3RvdHlwZS5IQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBiQShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCAibV9oaXROb3JtYWxMb2NhbCIsIHsKICAgICAgICAgIGdldDogWi5wcm90b3R5cGUuYUEsCiAgICAgICAgICBzZXQ6IFoucHJvdG90eXBlLkhDCiAgICAgICAgfSk7CiAgICAgICAgWi5wcm90b3R5cGUuZ2V0X21faGl0UG9pbnRMb2NhbCA9IFoucHJvdG90eXBlLmNBID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gayhjQSh0aGlzLlp4KSwgcCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFoucHJvdG90eXBlLnNldF9tX2hpdFBvaW50TG9jYWwgPSBaLnByb3RvdHlwZS5KQyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgIHZhciBjID0gdGhpcy5aeDsKICAgICAgICAgIGEgJiYgIm9iamVjdCIgPT09IHR5cGVvZiBhICYmIChhID0gYS5aeCk7CiAgICAgICAgICBkQShjLCBhKQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCAibV9oaXRQb2ludExvY2FsIiwgewogICAgICAgICAgZ2V0OiBaLnByb3RvdHlwZS5jQSwKICAgICAgICAgIHNldDogWi5wcm90b3R5cGUuSkMKICAgICAgICB9KTsKICAgICAgICBaLnByb3RvdHlwZS5nZXRfbV9oaXRGcmFjdGlvbiA9IFoucHJvdG90eXBlLll6ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gZUEodGhpcy5aeCkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIFoucHJvdG90eXBlLnNldF9tX2hpdEZyYWN0aW9uID0gWi5wcm90b3R5cGUuRUMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICB2YXIgYyA9IHRoaXMuWng7CiAgICAgICAgICBhICYmICJvYmplY3QiID09PSB0eXBlb2YgYSAmJiAoYSA9IGEuWngpOwogICAgICAgICAgZkEoYywgYSkKICAgICAgICB9CiAgICAgICAgOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLnByb3RvdHlwZSwgIm1faGl0RnJhY3Rpb24iLCB7CiAgICAgICAgICBnZXQ6IFoucHJvdG90eXBlLll6LAogICAgICAgICAgc2V0OiBaLnByb3RvdHlwZS5FQwogICAgICAgIH0pOwogICAgICAgIFoucHJvdG90eXBlLl9fZGVzdHJveV9fID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBnQSh0aGlzLlp4KQogICAgICAgIH0KICAgICAgICA7CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiBhKCkgewogICAgICAgICAgICAgIGIuQlRfQ09OU1RSQUlOVF9FUlAgPSBoQSgpOwogICAgICAgICAgICAgIGIuQlRfQ09OU1RSQUlOVF9TVE9QX0VSUCA9IGlBKCk7CiAgICAgICAgICAgICAgYi5CVF9DT05TVFJBSU5UX0NGTSA9IGpBKCk7CiAgICAgICAgICAgICAgYi5CVF9DT05TVFJBSU5UX1NUT1BfQ0ZNID0ga0EoKTsKICAgICAgICAgICAgICBiLlBIWV9GTE9BVCA9IGxBKCk7CiAgICAgICAgICAgICAgYi5QSFlfRE9VQkxFID0gbUEoKTsKICAgICAgICAgICAgICBiLlBIWV9JTlRFR0VSID0gbkEoKTsKICAgICAgICAgICAgICBiLlBIWV9TSE9SVCA9IG9BKCk7CiAgICAgICAgICAgICAgYi5QSFlfRklYRURQT0lOVDg4ID0gcEEoKTsKICAgICAgICAgICAgICBiLlBIWV9VQ0hBUiA9IHFBKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBMYSA/IGEoKSA6IEphLnVuc2hpZnQoYSkKICAgICAgICAgIH0KICAgICAgICApKCk7CiAgICAgICAgdGhpcy5BbW1vID0gYjsKCiAgICAgICAgcmV0dXJuIEFtbW8KICAgICAgfQogICAgKTsKICB9CikoKTsKaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKICBtb2R1bGUuZXhwb3J0cyA9IEFtbW87CmVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lWydhbWQnXSkKICBkZWZpbmUoW10sIGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEFtbW87CiAgfSk7CmVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykKICBleHBvcnRzWyJBbW1vIl0gPSBBbW1vOwo=", "AGFzbQEAAAABlgdpYAF/AGABfwF/YAJ/fwBgAn9/AX9gBH9/f38AYAN/f38AYAF/AX1gA39/fwF/YAJ/fQBgBX9/f39/AGAEf39/fwF/YAN/f30AYAZ/f39/f38AYAN/f38BfWAAAX9gBH9/f30AYAN/fX8AYAN/fX0AYAV/f39/fwF/YAZ/f39/f30AYAZ/f39/f38Bf2ACf38BfWAAAGAEf399fwBgAX0BfWALf39/f319fX1/f30AYAV/f39/fwF9YAp/f39/f39/f39/AGADf399AX9gB39/f39/f38AYAx/f39/fX19fX1/fX8AYAZ/fX1/f38AYAl/f39/f39/f38Bf2ACf30Bf2ACfX0Bf2AKf39/f39/f39/fwF9YAp/f39/f39/f39/AX9gBH99f30Bf2AGf39/fX9/AGAEf31/fwBgBH99fX0AYAd/f39/f39/AX9gCH9/f39/f39/AX1gCX9/f39/f39/fwF9YAl/f39/f39/f38AYAV/f39/fQBgBH9/fX0AYAZ/fX19fX0AYAR/f39/AX1gBn9/f31/fwF9YAV/f31/fwF9YAJ/fQF9YAJ9fQF9YAt/f39/f39/f319fQBgCn9/f399fX1/f38AYAV/f399fwBgBX9/fX9/AGAEf35+fwBgBX99f39/AGAFf319fX0AYAV/f39/fQF/YAh/f39/fX1/fwF/YAZ/fH9/f38Bf2ACfn8Bf2AEfX19fQF/YAF8AX1gAX8BfGACfH8BfGAIf39/f39/f38AYAl/f39/f39/f30AYAh/f39/f39/fQBgCn9/f39/f399f30AYAh/f39/f399fQBgCX9/f39/fX9/fwBgCH9/f39/fX1/AGAHf39/f319fwBgBn99f39/fwBgB399f399f38AYAZ/fX19f38AYAh/f39/f39/fwF/YAt/f39/f39/f39/fwF/YA1/f39/f39/f39/f39/AX9gB39/f39/f30Bf2AIf39/f39/fX8Bf2AGf39/f399AX9gCX9/f39/fX1/fwF/YAR/f399AX9gBX9/f31/AX9gCX9/f319fX9/fwF/YAR/f31/AX9gA399fwF/YAN+f38Bf2ABfQF/YAJ9fwF/YAN9f38Bf2AEfX9/fwF/YAN9fX0Bf2ADf35/AX5gBn9/f39/fwF9YAZ/f39/f30BfWAFf39/f30B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ZAA8AiRkADsCYWUADAJiZQDsAwJjZQAMAmRlAAwCZWUAsgICZmUAsAICZ2UArwICaGUArgICaWUArQICamUAPAJrZQA7AmxlAMoBAm1lAMkBAm5lAAwCb2UAuQoCcGUAqQoCcWUAmQoCcmUAHgJzZQAyAnRlAJEKAnVlAEACdmUAPAJ3ZQA7AnhlAKEBAnllAKABAnplAJ8BAkFlAJ4BAkJlAI0KAkNlAIwKAkRlAB4CRWUAxQECRmUAxAECR2UA+wECSGUAnwICSWUAygECSmUAyQECS2UAnwECTGUAngECTWUAiwoCTmUAigoCT2UAiQoCUGUAiAoCUWUAhwoCUmUAhgoCU2UAhQoCVGUAhAoCVWUA0wMCVmUA0gMCV2UAgwoCWGUAggoCWWUA0QMCWmUA0AMCX2UAHgIkZQAwAmFmAMMBAmJmAJ0BAmNmAJwBAmRmAM8DAmVmAM4DAmZmAM0DAmdmAMwDAmhmAMsDAmpmAMoDAmtmAMkDAmxmAMgDAm1mAMcDAm5mAMYDAm9mAMUDAnBmAMQDAnFmAMMDAnJmAMIDAnNmAMEDAnRmAMADAnVmAL8DAnZmAL4DAndmAIEKAnhmAIAKAnlmAB4CemYA/wkCQWYA/gkCQmYAGwJDZgAaAkRmABkCRWYALQJGZgAsAkdmAAwCSGYAvAICSWYADAJKZgD9CQJLZgD8CQJMZgCdAgJNZgCcAgJOZgD7CQJPZgD6CQJQZgD5CQJRZgD4CQJSZgD3CQJTZgD2CQJUZgD1CQJVZgD0CQJWZgDyCQJXZgDxCQJYZgDwCQJZZgDvCQJaZgDuCQJfZgDtCQIkZgDsCQJhZwDrCQJiZwDqCQJjZwDpCQJkZwDoCQJlZwDnCQJmZwDmCQJnZwDlCQJoZwAeAmlnAAwCamcA5AkCa2cA4wkCbGcA4gkCbWcA4QkCbmcA4AkCb2cArQECcGcA3wkCcWcA3gkCcmcA3QkCc2cAvAECdGcA3AkCdWcA2wkCdmcA2QkCd2cA1wkCeGcA1gkCeWcALQJ6ZwAsAkFnABsCQmcAGgJDZwAZAkRnAAwCRWcA1QkCRmcA/wMCR2cA1w0CSGcA0gkCSWcAngMCSmcA0QkCS2cA0AkCTGcAzwkCTWcAzgkCTmcAzQkCT2cA/AMCUGcA+QMCUWcA9wMCUmcA9AMCU2cAPAJUZwA7AlVnAAwCVmcAzAkCV2cAsgICWGcAuwMCWWcAygkCWmcAmwICX2cAmgICJGcAugMCYWgAuQMCYmgAuAMCY2gAyAkCZGgAmAMCZWgAxgkCZmgAxQkCZ2gAxAkCaGgAsAICaWgArwICamgArgICa2gArQICbGgAPAJtaAA7Am5oAMoBAm9oAMkBAnBoAAwCcWgAMgJyaADBAQJzaABAAnRoAMEJAnVoAMoEAnZoAAwCd2gAvwkCeGgAGwJ5aAAaAnpoABkCQWgADAJCaAC+CQJDaADFAQJEaADEAQJFaAA8AkZoADsCR2gAoQECSGgAoAECSWgAHgJKaADAAQJLaAC/AQJMaAD7AQJNaACfAgJOaAAeAk9oAL0JAlBoAHQCUWgAvAkCUmgAuwkCU2gAuQkCVGgAuAkCVWgAtwkCVmgAtgkCV2gAtQkCWGgAswkCWWgAsQkCWmgAsAkCX2gArgkCJGgArAkCYWkAqwkCYmkAqAkCY2kApwkCZGkApgkCZWkApQkCZmkApAkCZ2kAowkCaGkAogkCaWkAoAkCamkAngkCa2kAnQkCbGkAmwkCbWkAmgkCbmkAmAkCb2kAlgkCcGkAlQkCcWkAlAkCcmkAkwkCc2kAcQJ0aQCSCQJ1aQCaAQJ2aQCZAQJ3aQB2AnhpAJgBAnlpAJYBAnppAJUBAkFpAJQBAkJpAJMBAkNpAJIBAkRpAJEBAkVpAJABAkZpAI8BAkdpAI0BAkhpAIwBAklpAIsBAkppAIkBAktpAIgBAkxpAHQCTWkAhwECTmkAhgECT2kAhQECUGkAXAJRaQCEAQJSaQCDAQJTaQA4AlRpADcCVWkAOAJWaQA3AldpAHECWGkAggECWWkAMgJaaQCQCQJfaQBAAiRpAI8JAmFqAAwCYmoAjgkCY2oALQJkagAsAmVqABsCZmoAGgJnagAZAmhqAAwCaWoAjQkCamoADAJragCMCQJsagC8AgJtagCbBAJuagAMAm9qAIsJAnBqAIoJAnFqAIkJAnJqAIgJAnNqAAwCdGoAHgJ1agCHCQJ2agDFAQJ3agDEAQJ4agA8AnlqADsCemoAoQECQWoAoAECQmoAnwECQ2oAngECRGoAnQECRWoAnAECRmoAhQkCR2oAgwkCSGoAggkCSWoAgQkCSmoAmwICS2oAmgICTGoAgAkCTWoA/ggCTmoA/QgCT2oA/AgCUGoA+QgCUWoA+AgCUmoA9wgCU2oA9ggCVGoA9QgCVWoA9AgCVmoA8wgCV2oATwJYagBOAllqAE0CWmoATAJfagBLAiRqAAwCYWsA8ggCYmsA8QgCY2sA8AgCZGsA7wgCZWsA7ggCZmsA7QgCZ2sA7AgCaGsA6wgCaWsA6ggCamsA6AgCa2sA5wgCbGsA5QgCbWsA5AgCbmsATwJvawBOAnBrAE0CcWsATAJyawBLAnNrAAwCdGsA4wgCdWsAGwJ2awAaAndrABkCeGsADAJ5awDiCAJ6awAbAkFrABoCQmsAGQJDawAMAkRrAOEIAkVrAOAIAkZrAN8IAkdrAN4IAkhrAN0IAklrANwIAkprANsIAktrANoIAkxrAIQEAk1rAAwCTmsA2QgCT2sA2AgCUGsA1wgCUWsA1ggCUmsA1QgCU2sALQJUawAsAlVrANQIAlZrANMIAldrANIIAlhrALoBAllrABsCWmsAGgJfawAZAiRrAAwCYWwA0AgCYmwAxQECY2wAxAECZGwAPAJlbAA7AmZsAKEBAmdsAKABAmhsAJ8BAmlsAJ4BAmpsAJQDAmtsALEDAmxsALADAm1sAK8DAm5sAM4IAm9sAM0IAnBsADICcWwAzAgCcmwAywgCc2wAyggCdGwAyQgCdWwAxwgCdmwAxggCd2wAxAgCeGwAwggCeWwAgAQCemwAXAJBbACUAgJCbADBCAJDbAAMAkRsAMAIAkVsAL0IAkZsALwIAkdsALsIAkhsALoIAklsAPoIAkpsALkIAktsALgIAkxsALcIAk1sALYIAk5sALUIAk9sALQIAlBsALMIAlFsALIIAlJsALEIAlNsALAIAlRsAK4IAlVsAOYIAlZsAK0IAldsANEIAlhsAKwIAllsAKsIAlpsAKoIAl9sAKkIAiRsAKgIAmFtAKcIAmJtAKYIAmNtAKUIAmRtAKQIAmVtADACZm0AowgCZ20AoggCaG0AoQgCaW0AmAMCam0AoAgCa20AnwgCbG0AnggCbW0AnQgCbm0AnAgCb20AmwgCcG0AmQgCcW0AmAgCcm0AlwgCc20AlggCdG0AlQgCdW0AlAgCdm0AkwgCd20AkggCeG0AkQgCeW0AkAgCem0AjwgCQW0AHgJCbQCOCAJDbQCNCAJEbQDJAgJFbQCuAwJGbQCDBQJHbQD1AQJIbQD0AQJJbQDzAQJKbQDxAQJLbQDvAQJMbQDuAQJNbQDxBAJObQCLCAJPbQDbBAJQbQDYBAJRbQDUBAJSbQDRBAJTbQCtAQJUbQCKCAJVbQAeAlZtAMABAldtAL8BAlhtAJQCAlltAIEEAlptAK0DAl9tAKwDAiRtAKsDAmFuAKoDAmJuAJ4DAmNuAIkIAmRuAIgIAmVuAIcIAmZuAJ0CAmduAJwCAmhuAB4Cam4AMAJrbgDDAQJsbgCdAQJtbgCcAQJubgCTAgJvbgCSAgJwbgAeAnFuADICcm4AhggCc24AQAJ0bgAMAnVuAIUIAnZuAIQIAnduAIMIAnhuAIIIAnluAIEIAnpuAIAIAkFuAP8HAkJuAP0HAkNuAPwHAkRuAPsHAkVuAPoHAkZuAPkHAkduAPgHAkhuAPcHAkluAPYHAkpuAPUHAktuAPQHAkxuAPMHAk1uAPIHAk5uAPEHAk9uAPAHAlBuAO8HAlFuAO4HAlJuAO0HAlNuAOwHAlRuAOsHAlVuAOkHAlZuAOcHAlduAOYHAlhuAOQHAlluAOgCAlpuAAwCX24A4wcCJG4ALQJhbwAsAmJvABsCY28AGgJlbwAZAmZvAAwCZ28A4gcCaG8ALQJpbwAsAmpvABsCa28AGgJsbwAZAm1vAAwCbm8AlAICb28A4QcCcG8AkQICcW8A4AcCcm8ADAJzbwDdBwJ0bwAMAnVvADICdm8A3AcCd28AOQJ4bwDaBwJ5bwDZBwJ6bwBAAkFvADACQm8AwwECQ28AnQECRG8AnAECRW8AkwICRm8AkgICR28ApAMCSG8AowMCSW8AogMCSm8AoQMCS28AoAMCTG8AnwMCTW8A2AcCTm8A1wcCT28AqQMCUG8AnQMCUW8AHgJSbwDWBwJTbwAbAlRvABoCVW8AGQJWbwAMAldvANUHAlhvANQHAllvANMHAlpvANIHAl9vANEHAiRvANAHAmFwAM8HAmJwAM4HAmNwAM0HAmRwAMwHAmVwAMsHAmZwAMoHAmdwAMkHAmhwAMgHAmlwAMcHAmpwAMYHAmtwAMUHAmxwAMQHAm1wAMMHAm5wAMIHAm9wAMEHAnBwAMAHAnFwAL8HAnJwAJoBAnNwAJkBAnRwAHYCdXAAmAECdnAAlgECd3AAlQECeHAAlAECeXAAkwECenAAkgECQXAAkQECQnAAkAECQ3AAjwECRHAAjQECRXAAjAECRnAAiwECR3AAiQECSHAAiAECSXAAdAJKcACHAQJLcACGAQJMcACFAQJNcABcAk5wAIQBAk9wAIMBAlBwADgCUXAANwJScAA4AlNwADcCVHAAcQJVcAC9BwJWcAC8BwJXcAC6BwJYcAC5BwJZcAC2BwJacAC1BwJfcAC0BwIkcACzBwJhcQCCAQJicQAyAmNxAMEBAmRxAEACZXEAPAJmcQA7AmdxAKEBAmhxAKABAmlxAJ8BAmpxAJ4BAmtxAJQDAmxxALEDAm1xALADAm5xAK8DAm9xAKsDAnBxAKoDAnFxANMDAnJxANIDAnNxAJMCAnRxAJICAnVxANEDAnZxANADAndxAJwDAnhxAJsDAnlxALAHAnpxAK8HAkFxAM0DAkJxAMwDAkNxAMsDAkRxAMoDAkVxAMkDAkZxAMgDAkdxAMcDAkhxAMYDAklxAMUDAkpxAMQDAktxAMMDAkxxAMIDAk1xAMEDAk5xAMADAk9xAL8DAlBxAL4DAlFxAK4HAlJxAK0HAlNxAOgHAlRxAKwHAlVxAKkDAlZxAJ0DAldxAKsHAlhxAKoHAllxAKkHAlpxAKgHAl9xAKcHAiRxAKYHAmFyAKUHAmJyAPsEAmNyAJoDAmRyAJECAmVyAJkDAmZyAJsCAmdyAJoCAmhyALoDAmlyALkDAmpyALgDAmtyAKMHAmxyAKIHAm1yAKEHAm5yAJ0CAm9yAJwCAnByAB4CcXIAoAcCcnIADAJzcgAMAnRyAJ4HAnVyAJ0HAnZyAJwHAndyAKgBAnhyAJoHAnlyAJkHAnpyAJgHAkFyAJcHAkJyAJYHAkNyAJUHAkRyAJQHAkVyAJMHAkZyAJIHAkdyAJEHAkhyAJAHAklyAI8HAkpyAI4HAktyAI0HAkxyAIwHAk1yAIsHAk5yAIoHAk9yAOgCAlByAAwCUXIAMgJScgDBAQJTcgBAAlRyADICVXIAiQcCVnIAiAcCV3IAhQcCWHIAGwJZcgAaAlpyABkCX3IADAIkcgC/AgJhcwCEBwJicwAMAmNzAMABAmRzAL8BAmVzAK0BAmZzAIMHAmdzAIIHAmhzAIEHAmlzAPkBAmpzAIAHAmtzAP8GAmxzAPoBAm1zAMgBAm5zAMIBAm9zAL4BAnBzAKAEAnFzAJwEAnJzALgBAnNzAPYBAnRzAO0BAnVzAOkBAnZzAOUBAndzAOEBAnhzAKgBAnlzAN0BAnpzANcBAkFzANABAkJzAMAEAkNzAP4GAkRzAL4EAkVzALwEAkZzALoEAkdzALYEAkhzALQEAklzAL8CAkpzALEEAktzAK8EAkxzAK0EAk1zAKsEAk5zAKYEAk9zAKMEAlBzALwBAlFzAI8CAlJzAI4CAlNzAI0CAlRzAIoCAlVzAIkCAlZzAAwCV3MA/QYCWHMATwJZcwBOAlpzAE0CX3MATAIkcwBLAmF0AAwCYnQA/AYCY3QA+wYCZHQA+AYCZXQA9gYCZnQA9QYCZ3QA2AECaHQA8wYCaXQA8QYCanQA8AYCa3QA7QYCbHQA6wYCbXQAHgJudADoBgJvdACyAgJwdAC7AwJxdADmBgJydACkAwJzdACjAwJ0dACiAwJ1dAChAwJ2dACgAwJ3dACfAwJ4dACwAgJ5dACvAgJ6dACuAgJBdACtAgJCdAA8AkN0ADsCRHQAygECRXQAyQECRnQADAJHdADlBgJIdADkBgJJdAAMAkp0AOMGAkt0AOwDAkx0AAwCTXQA4QYCTnQA4AYCT3QAGwJQdAAaAlF0ABkCUnQADAJTdAAyAlR0AMEBAlV0AEACVnQA3wYCV3QA3gYCWHQAdgJZdADdBgJadADcBgJfdADaBgIkdABPAmF1AE4CYnUATQJjdQBMAmR1AEsCZXUADAJmdQDYBgJndQCaAQJodQCZAQJpdQB2Amp1AJgBAmt1AJYBAmx1AJUBAm11AJQBAm51AJMBAm91AJIBAnB1AJEBAnF1AJABAnJ1AI8BAnN1AI0BAnR1AIwBAnV1AIsBAnZ1AIkBAnd1AIgBAnh1AHQCeXUAhwECenUAhgECQXUAhQECQnUAXAJDdQCEAQJEdQCDAQJFdQA4AkZ1ADcCR3UAOAJIdQA3Akl1AHECSnUA7wICS3UAiwUCTHUAggECTXUA2AECTnUA1wYCT3UA1gYCUHUA1QYCUXUAMAJSdQDDAQJTdQCdAQJUdQCcAQJVdQDPAwJWdQDOAwJXdQC5CwJYdQCMAgJZdQDUBgJadQDTBgJfdQDSBgIkdQDRBgJhdgAeAmJ2ANAGAmN2AM8GAmR2AM4GAmV2AMwGAmZ2AMoGAmd2AMkGAmh2AE8CaXYATgJqdgBNAmt2AEwCbHYASwJtdgC0CQJudgDIBgJvdgAMAnB2AMcGAnF2AMYGAnJ2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AA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCACQQFIBEAgACECDAELIABBA3FFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANPDQEgAkEDcQ0ACwsCQCADQXxxIgRBwABJDQAgAiAEQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyADQXxqIgQgAEkEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAAC/MBAQN/IwBBEGsiAyQAAkAgAEGI0gEoAgAiAigCAEYEQCACIQEMAQsCQCACKAIYIgEEQANAIAEoAgAgAEYNAiABKAIcIgENAAsLQSQQEiIBQgA3AgQgASAANgIAIAFBADYCICABQgA3AhggASACNgIUIAFCADcCDCABEMsBIAEgAigCGDYCHCACIAE2AhgLQYjSASABNgIACyABIAEoAgRBAWo2AgQgASABKAIQIgBBAWo2AhAgAEUEQCADQQhqQQAQARogASADKAIMQbj3ASgCACIAKAIEayADKAIIIAAoAgBrQcCEPWxqNgIMCyADQRBqJAALMQEBfyMAQRBrIgMkACADIAE2AgwgAyACNgIIIAAgAygCDCADKAIIEIIDIANBEGokAAsEACAAC0UBAX8jAEEQayIDJAAgAyAANgIMIAMgATgCCCADIAI2AgQgAygCDCIAIAMqAgggAygCBCAAKAIAKAIgERAAIANBEGokAAsxAQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAgACgCACgCHBEB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AMwBQQJxGw0AIAAoAgghAyAEQQhqQQBB9AEQCxogAEEEaiAEQQhqENUEIAEgAhCUDiABIAM2AtQBDAELIAAoArwBIgNBf0oNACAAIAAoAgg2ArwBIARBCGpBAEH0ARALGiAAQQRqIARBCGoQ1QQiAUIANwJYIAFCADcCUCABQgA3AkggAUIANwJAIAFCADcCkAEgAUIANwKYASABQgA3AqABIAFCADcCqAEgAUIANwIEIAFBgICA/AM2AgAgAUIANwIMIAFCADcCGCABQYCAgPwDNgIUIAFCADcCICABQgA3AiwgAUGAgID8AzYCKCABQgA3AjQgAUEANgI8IAFCADcCiAEgAUEANgLwASABQgA3AoABIAFCgICA/AM3AnggAUKAgID8g4CAwD83AnAgAUKAgID8AzcCaCABQoCAgPyDgIDAPzcCYCABQgA3AugBIAFCADcC4AEgAUIANwLYASABQgA3AtABIAFCADcCyAEgAUIANwLAASABQgA3ArgBIAFCADcCsAEgACgCvAEhAwsgBEGAAmokACADC1YAIABBADYCLCAAQoCAgICgs+bMPjcCJCAAIAM2AiAgACACNgIcIABBfzYCGCAAQQE7ARQgAEH////7BzYCECAAQn83AgggAEGQwQA2AgAgACABNgIEC3cBAX8jAEEgayIDJAAgAyABNgIcIAMgAjYCGCADIAMoAhwqAgAgAygCGCoCAJM4AhQgAyADKAIcKgIEIAMoAhgqAgSTOAIQIAMgAygCHCoCCCADKAIYKgIIkzgCDCAAIANBFGogA0EQaiADQQxqEAkgA0EgaiQAC0gBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACoCACACKAIIKgIAlCAAKgIEIAIoAggqAgSUkiAAKgIIIAIoAggqAgiUkgsEAEEAC1EBAX8jAEEQayIEJAAgBCAANgIMIAQgATYCCCAEIAI4AgQgBCADNgIAIAQoAgwiACAEKAIIIAQqAgQgBCgCACAAKAIAKAIcERcAIARBEGokAAtLAgF/AX0jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCDCIAIAMoAgggAygCBCAAKAIAKAIgEQ0AIQQgA0EQaiQAIAQLTAEBfyMAQRBrIgIkACACIAA2AgwgAiABOAIIIAIqAgghASMAQRBrIgAgAigCDDYCDCAAIAE4AgggACgCDCAAKgIIOAIQIAJBEGokAAs4AgF/AX0jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAhAhAiABQRBqJAAgAgtSAQF/IwBBEGsiAiQAIAIgADYCDCACIAE6AAsgAi0AC0EBcSEBIwBBEGsiACACKAIMNgIMIAAgAToACyAAKAIMIAAtAAtBAXE6ABUgAkEQaiQAC0QBAX8jAEEQayIBJAAgASAANgIMIAEoAgwiACgCDARAIAAtABBBAXEEQCAAIAAoAgwQ8wULIABBADYCDAsgAUEQaiQAC3cBAX8jAEEgayIDJAAgAyABNgIcIAMgAjYCGCADIAMoAhwqAgAgAygCGCoCAJQ4AhQgAyADKAIcKgIEIAMoAhgqAgSUOAIQIAMgAygCHCoCCCADKAIYKgIIlDgCDCAAIANBFGogA0EQaiADQQxqEAkgA0EgaiQAC9QHAgl/D30gAioCBCIVIBUgAioCCCIWQwAAAACUIhOTIhBDAACAPyAQIBCUIBMgAioCACIQkyIUIBSUkiAQQwAAAACUIg8gFUMAAAAAlCIRkyISIBKUkpEiGJUiDpQgESAWkyINQwAAgD8gECARkyIRIBGUIA0gDZQgEyAPkyINIA2UkpKRIhOVIg+UIBggE14iBBsiE5QgECAUIA6UIA0gD5QgBBsiFJSTIRggECASIA6UIBEgD5QgBBsiEZQgFiATlJMhGSAWIBSUIBUgEZSTIRogAygCDCEJIAFBAUghCgJAA0BBfyEFIApFBEAgAioCCCESIAIqAgQhDiACKgIAIQ1BACEEA0ACQCAJIARBAnRqKAIARQ0AIAVBf0cEQCANIAAgBEEEdGoiAyoCAJQgDiADKgIElJIgEiADKgIIlJIgDSAAIAVBBHRqIgMqAgCUIA4gAyoCBJSSIBIgAyoCCJSSXkEBcw0BCyAEIQULIARBAWoiBCABRw0ACwtBfyEGQQAhBCAJIAVBAnRqIgsoAgBBA0YNAQJAA0AgBiEHIAQiDLIiEkM1+o48lCINEB0hDiANEBwhDUF/IQYgCkUEQCAWIBEgDZQgGCAOlJJDzczMPJSSIQ8gFSAUIA2UIBkgDpSSQ83MzDyUkiEXIBAgEyANlCAaIA6UkkPNzMw8lJIhDkEAIQQDQAJAIAkgBEECdGooAgBFDQAgBkF/RwRAIA4gACAEQQR0aiIDKgIAlCAXIAMqAgSUkiAPIAMqAgiUkiAOIAAgBkEEdGoiAyoCAJQgFyADKgIElJIgDyADKgIIlJJeQQFzDQELIAQhBgsgBEEBaiIEIAFHDQALCyAFIAdGQQAgBSAGRhsNAQJAIAdBf0YNACAGIAdGDQAgEkMAACDCkiIOIBJfQQFzDQADQCAOQzX6jjyUIg8QHSENIA8QHCEPQX8hAyAKRQRAIBYgESAPlCAYIA2UkkPNzMw8lJIhFyAVIBQgD5QgGSANlJJDzczMPJSSIRsgECATIA+UIBogDZSSQ83MzDyUkiENQQAhBANAAkAgCSAEQQJ0aigCAEUNACADQX9HBEAgDSAAIARBBHRqIggqAgCUIBsgCCoCBJSSIBcgCCoCCJSSIA0gACADQQR0aiIIKgIAlCAbIAgqAgSUkiAXIAgqAgiUkl5BAXMNAQsgBCEDCyAEQQFqIgQgAUcNAAsLIAUgB0ZBACADIAVGGw0DIAMhByAOQwAAoECSIg4gEl8NAAsLIAxBLWohBCAMQbwCSQ0ACyALQQA2AgAMAQsLIAtBAzYCAAsgBQuDAgEOfQJAIABFDQAgACgCtAFBAXFFDQAgACoCrAEhDiAAKgIsIQIgACoCDCEGIAAqAhwhByAAKgIkIQMgACoCFCEIIAAqAqgBIQ8gACoCKCEEIAAqAgghCSAAKgIYIQogACoCpAEhBSAAKgIEIQsgAUEANgIMIAEgAyAFIAsgASoCACIFlCAIIAEqAgQiDJSSIAMgASoCCCIDlJKUIg2UIAQgDyAFIAmUIAwgCpSSIAMgBJSSlCIElJIgAiAOIAUgBpQgDCAHlJIgAyAClJKUIgKUkjgCCCABIAggDZQgCiAElJIgByAClJI4AgQgASALIA2UIAkgBJSSIAYgApSSOAIACwv+BAEHfQJAIAIqAmQiBiACKgJwIAYgAioCdJSTIAIqAhAiByAAKgJAlCACKgIUIgggACoCRJSSIAIqAhgiCSAAKgJIlJIgAioCACAAKgJQlCACKgIEIAAqAlSUkiACKgIIIAAqAliUkpIgAioCbCIElJMgBCACKgIwIAEqAkCUIAIqAjQgASoCRJSSIAIqAjggASoCSJSSIAIqAiAgASoCUJQgAioCJCABKgJUlJIgAioCKCABKgJYlJKSlJMiA5IiBCACKgJ4IgVdQQFzRQRAIAUgBpMhAyAFIQQMAQsgBCACKgJ8IgVeQQFzDQAgBSAGkyEDIAUhBAsgAiAEOAJkIAAoAvABBEAgACAAKgJwIAMgByAAKgKAAZSUlCAAKgJAkjgCQCAAIAMgCCAAKgKEAZSUIAAqAnSUIAAqAkSSOAJEIAAgAyAJIAAqAogBlJQgACoCeJQgACoCSJI4AkggAioCSCEEIAIqAkQhBSAAIAMgACoCYJQgAioCQJQgACoCUJI4AlAgACoCaCEGIAAgBSADIAAqAmSUlCAAKgJUkjgCVCAAIAQgAyAGlJQgACoCWJI4AlgLIAEoAvABBEAgAioCOCEEIAIqAjQhBSABIAEqAnAgAyACKgIwIAEqAoABlJSUIAEqAkCSOAJAIAEgAyAFIAEqAoQBlJQgASoCdJQgASoCRJI4AkQgASADIAQgASoCiAGUlCABKgJ4lCABKgJIkjgCSCACKgJYIQQgAioCVCEFIAEgAyABKgJglCACKgJQlCABKgJQkjgCUCABKgJoIQYgASAFIAMgASoCZJSUIAEqAlSSOAJUIAEgBCADIAaUlCABKgJYkjgCWAsLjgUCAX8KfSMAQRBrIgUkACAAKgI0IQYgACoCOCEHIAAqAjAhCiABKgIAIQggASoCBCEJIAEqAgghCyAEQQA2AjwgBCAHIAsgA5SSOAI4IAQgBiAJIAOUkjgCNCAEIAogCCADlJI4AjACfUPbD0k/IAOVIAIqAgAiDiAOlCACKgIEIgwgDJSSIAIqAggiDSANlJKRIgYgBiADlEPbD0k/XhsiBkNvEoM6XUEBc0UEQCADQwAAAD+UIAYgAyADlCADlEOrqqq8lCAGlJSSDAELIAZDAAAAP5QgA5QQHCAGlQshByAAIAUQJiAFKgIIIQogBSoCACEIIAUqAgQhCSAFKgIMIQsgBEEANgIsIARBADYCHCAEQQA2AgwgBCAIIA0gB5QiDZQgCyAMIAeUIgyUIAkgBiADlEMAAAA/lBAdIgOUkpIgCiAOIAeUIgaUkyIHQwAAgD8gAyALlCAGIAiUkyAMIAmUkyANIAqUkyIOIA6UIA0gC5QgAyAKlJIgBiAJlJIgDCAIlJMiDyAPlCADIAiUIAYgC5SSIAwgCpSSIA0gCZSTIgggCJQgByAHlJKSkpGVIgOUIgYgDyADlCIKQwAAAEAgDiADlCIHIAeUIAogCpQgCCADlCIDIAOUIAYgBpSSkpKVIgmUIgiUIgsgByADIAmUIg2UIgySOAIkIAQgAyAIlCIOIAcgBiAJlCIJlCIPkzgCICAEIAsgDJM4AhggBCADIAmUIgsgByAIlCIHkjgCECAEIA4gD5I4AgggBCALIAeTOAIEIARDAACAPyADIA2UIgMgBiAJlCIGkpM4AiggBEMAAIA/IAMgCiAIlCIDkpM4AhQgBEMAAIA/IAYgA5KTOAIAIAVBEGokAAvuBQIDfwh9IwBBgAFrIgckAAJAIAFFDQACQCABKAIoRQ0AIAIgBk5BACAGQX9KGw0AIAAgASgCJCACQQFqIgggAyAEIAUgBhBWIAAgASgCKCAIIAMgBCAFIAYQVgsgAiAFSA0AIAEqAhQhCiABKgIYIQsgASgCKCEFIAEqAhAhDCABKgIAIQ8gASoCBCENIAEqAgghDiAHQQA2AnwgB0EANgJsIAdBADYCXCAHQQA2AkwgB0EANgI8IAdBADYCLCAHQQA2AhwgByAOIAuSQwAAAD+UIhAgCyAOk0MAAAA/lCIOkiILOAJ4IAcgDSAKkkMAAAA/lCIRIAogDZNDAAAAP5QiDZIiCjgCdCAHIAs4AmggByAKOAJkIAcgCzgCWCAHIBEgDZMiDTgCVCAHIAs4AkggByANOAJEIAcgECAOkyILOAI4IAcgCjgCNCAHIAs4AiggByAKOAIkIAcgCzgCGCAHIA04AhQgB0EANgIMIAcgDyAMkkMAAAA/lCIOIAwgD5NDAAAAP5QiDJMiCjgCcCAHIA4gDJIiDDgCYCAHIAw4AlAgByAKOAJAIAcgCjgCMCAHIAw4AiAgByAMOAIQIAcgCjgCACAHIAs4AgggByANOAIEIAAgByAHQRBqIgIgAyAEIAUbIgEgACgCACgCCBEEACAAIAIgB0EgaiIDIAEgACgCACgCCBEEACAAIAMgB0EwaiIEIAEgACgCACgCCBEEACAAIAQgByABIAAoAgAoAggRBAAgACAHQUBrIgUgB0HQAGoiBiABIAAoAgAoAggRBAAgACAGIAdB4ABqIgggASAAKAIAKAIIEQQAIAAgCCAHQfAAaiIJIAEgACgCACgCCBEEACAAIAkgBSABIAAoAgAoAggRBAAgACAHIAUgASAAKAIAKAIIEQQAIAAgAiAGIAEgACgCACgCCBEEACAAIAMgCCABIAAoAgAoAggRBAAgACAEIAkgASAAKAIAKAIIEQQACyAHQYABaiQACzABAX8jAEEQayIDJAAgAyABNgIMIAMgAjYCCCAAIAMoAgggAygCDBAhIANBEGokAAsNACMAQRBrIAA2AgwAC6QBAgF/AX0jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAqAgACfSMAQRBrIgEgAigCCDYCDCABKAIMKgIAC5QgACoCBAJ9IwBBEGsiASACKAIINgIMIAEoAgxBBGoqAgALlJIgACoCCAJ9IwBBEGsiASACKAIINgIMIAEoAgxBCGoqAgALlJIhAyACQRBqJAAgAyAAKgIMIAIoAggqAgyUkgssAgF/AX0jAEEQayIBJAAgASAANgIMIAEoAgwiACAAEFkhAiABQRBqJAAgAgtVAQF/IwBBEGsiAiQAIAIgATYCDCACIAIoAgwqAgCMOAIIIAIgAigCDCoCBIw4AgQgAiACKAIMKgIIjDgCACAAIAJBCGogAkEEaiACEAkgAkEQaiQACzkBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCAAKAIAKAIMEQIAIAJBEGokAAtEAQJ/PwAhAQJAQcD8ASgCACICIABBA2pBfHFqIgAgAUEQdE0NACAAEAYNAEH49wFBMDYCAEF/DwtBwPwBIAA2AgAgAgthAwF/An4BfSMAQRBrIgEkAAJ9IAApAwgiAkIAWQRAIAK1QwAAgF+UIAApAwC1kgwBCyABQgAgACkDACIDfTcDACABIANQrSACQn+FfDcDCCABEF6MCyEEIAFBEGokACAEC9QCAQN/Qej3AUHo9wEoAgBBAWo2AgBBJEEQQYzSASgCABEDACIEQv////8PNwIcIARBfzYCFCAEQn83AgwgBCADNgIIIAQgAjYCBCAEIAE2AgAgBCAAKAIEIgI2AhgCQCACIAAoAghHDQAgAiACQQF0QQEgAhsiA04NAAJ/IAMEQEHo9wFB6PcBKAIAQQFqNgIAIANBAnRBEEGM0gEoAgARAwAhBSAAKAIEIQILIAJBAU4LBEBBACEBA0AgBSABQQJ0IgZqIAAoAgwgBmooAgA2AgAgAUEBaiIBIAJHDQALCyAAKAIMIgEEQCAALQAQBEAgAQRAQez3AUHs9wEoAgBBAWo2AgAgAUGQ0gEoAgARAAALIAAoAgQhAgsgAEEANgIMCyAAIAU2AgwgAEEBOgAQIAAgAzYCCAsgACgCDCACQQJ0aiAENgIAIAAgAkEBajYCBCAEC04BAX8gAEGgjAE2AgAgACgCNCIBBEAgASABKAIAKAIAEQEAGiAAKAI0IgEEQEHs9wFB7PcBKAIAQQFqNgIAIAFBkNIBKAIAEQAACwsgAAvHAgIBfwF9IwBB4ABrIgEkACAAQQE6AFgCQEGw9gEtAABBAXENAEGw9gEQEEUNAEHU9QFCADcCAEHQ9QFBgICA/AM2AgBB3PUBQgA3AgBB6PUBQgA3AwBB5PUBQYCAgPwDNgIAQfD1AUIANwMAQYT2AUIANwIAQYD2AUGAgID8ezYCAEH49QFCgICA/AM3AwBBjPYBQgA3AgBBmPYBQgA3AwBBlPYBQYCAgPx7NgIAQaD2AUIANwMAQaj2AUKAgID8CzcDAEGw9gEQDwsgAEHQ9QEgAUEAQeAAEAsiAUEGIAAoAgAoAkwRBAAgACABKgIAIAAqAiwiApI4AkggACABKgIwIAKTOAI4IAAgAiABKgIUkjgCTCAAIAEqAkQgApM4AjwgACACIAEqAiiSOAJQIABBQGsgASoCWCACkzgCACABQeAAaiQAC8AIAgF/CX0jAEGQA2siBiQAQY3mABAWIAYgAikCCDcD2AIgBiACKQIANwPQAiAGIAIpAhg3A+gCIAYgAikCEDcD4AIgBiACKQIoNwP4AiAGIAIpAiA3A/ACIAYgAikCODcDiAMgBiACKQIwNwOAAyAGIAMpAgg3A5gCIAYgAykCADcDkAIgBiADKQIYNwOoAiAGIAMpAhA3A6ACIAYgAykCKDcDuAIgBiADKQIgNwOwAiAGIAMpAjg3A8gCIAYgAykCMDcDwAIgBkHQAmogBkGQAmogBkEIaiAGQYACahBmIAZBADYC7AEgBiAGKgKAAiIHIAYqAhCUOALoASAGIAcgBioCDJQ4AuQBIAYgByAGKgIIlDgC4AEgBkIANwPYASAGQgA3A9ABIAZBQGtCADcDACAGQgA3AzggBkHQAmogBkGAAmoQJiAGQQA2AjQgBkEANgIkIAYgBioChAIiCCAGKgKIAiIJQwAAAEAgBioCgAIiByAHlCAIIAiUkiAJIAmUkiAGKgKMAiIKIAqUkpUiDJQiDZQiCyAKIAcgDJQiDpQiD5I4AiwgBiALIA+TOAIgIAZDAACAPyAHIA6UIgsgCCAIIAyUIgiUIgySkzgCMCAGQwAAgD8gCyAJIA2UIgmSkzgCHCAGQQA2AhQgBiAHIA2UIgsgCiAIlCIOkzgCKCAGIAcgCJQiByAKIA2UIgiSOAIYIAYgCyAOkjgCECAGIAcgCJM4AgwgBkMAAIA/IAwgCZKTOAIIIAEgBkEIaiAGQdABaiAGQeABaiAGQYACaiAGQfABahCOBCAGQbjxADYCCCAGIAIpAgg3AjQgBiACKQIANwIsIAYgAikCGDcCRCAGIAIpAhA3AjwgBiACKQIoNwJUIAYgAikCIDcCTCAGIAIpAjg3AmQgBiACKQIwNwJcIAYgAykCCDcCdCAGIAMpAgA3AmwgBiADKQIQNwJ8IAYgAykCGDcChAEgBiADKQIoNwKUASAGIAMpAiA3AowBIAYgAykCMDcCnAEgBiADKQI4NwKkASAGIAQ2AsABIAYgBTgCxAEgBiABNgLIASAGIAA2ArwBIAZDawteXUMAAIA/IAYqAqQBIAYqAmSTIgVDAACAPyAGKgKcASAGKgJckyIHIAeUIAYqAqABIAYqAmCTIgggCJSSIAUgBZSSkZUiCpQiCZUgCUMAAAAAWxsiDDgCFCAGQ2sLXl1DAACAPyAIIAqUIg2VIA1DAAAAAFsbIgs4AhAgBiAMQwAAAABdNgIkIAYgC0MAAAAAXTYCICAGIAUgCZQgByAHIAqUIgWUIAggDZSSkjgCKCAGQ2sLXl1DAACAPyAFlSAFQwAAAABbGyIFOAIMIAYgBUMAAAAAXTYCHCAAKAJEIgAgBkGAA2ogBkHAAmogBkEIaiAGQYACaiAGQfABaiAAKAIAKAIYEQwAEBMgBkGQA2okAAuEDQIHfwl9IwBBMGsiAyQAAn8CQAJAIAAoAvQCIgIoAiBBf2oiAUEDSw0AAkACQAJAAkAgAUEBaw4DAQIDAAsgACgC7AIhBUEBIQEDQCADQgA3AyggA0IANwMgIANBIGogBEECdGpBgICA/AM2AgAgAiABQQJ0aiIGQQA2AhAgACAFQX9qIgU2AuwCIAYgACAFQQJ0aigC3AIiBTYCACACIAFBAWo2AiAgACADQSBqIAUQRSAAEGMNBSAAKAL0AiICIAIoAiBBf2oiATYCICAAIAAoAuwCIgVBAnRqIAIgAUECdGooAgAiATYC3AIgACgC9AIhAiADQQA2AhwgAyADKgIojDgCGCADIAMqAiSMOAIUIAMgAyoCIIw4AhAgAiACKAIgIgZBAnRqIgdBADYCECAAIAU2AuwCIAcgATYCACACIAZBAWo2AiAgACADQRBqIAEQRSAAEGMNBSAAKAL0AiICIAIoAiBBf2oiATYCICACIAFBAnRqKAIAIQIgACAAKALsAiIBQQFqIgU2AuwCIAAgAUECdGogAjYC3AIgBEEBaiIEQQNGDQQgACgC9AIiAigCICEBDAAACwALIAIoAgQiASoCGCACKAIAIgIqAhiTIQggASoCFCACKgIUkyEKIAEqAhAgAioCEJMhCUEAIQIDQCADQgA3AyggA0IANwMgIANBIGogAkECdGpBgICA/AM2AgAgA0EANgIcIAMgCCADKgIgIguUIAkgAyoCKCIMlJMiDTgCFCADIAogDJQgCCADKgIkIg6UkyIMOAIQIAMgCSAOlCAKIAuUkyILOAIYIAsgC5QgDCAMlCANIA2UkpJDAAAAAF5BAXNFBEAgACgC9AIiASABKAIgIgRBAnRqIgVBADYCECAAIAAoAuwCQX9qIgY2AuwCIAUgACAGQQJ0aigC3AIiBTYCACABIARBAWo2AiAgACADQRBqIAUQRSAAEGMNBSAAKAL0AiIBIAEoAiBBf2oiBDYCICAAIAAoAuwCIgVBAnRqIAEgBEECdGooAgAiBDYC3AIgACgC9AIhASADQQA2AgwgAyADKgIYjDgCCCADIAMqAhSMOAIEIAMgAyoCEIw4AgAgASABKAIgIgZBAnRqIgdBADYCECAAIAU2AuwCIAcgBDYCACABIAZBAWo2AiAgACADIAQQRSAAEGMNBSAAKAL0AiIBIAEoAiBBf2oiBDYCICABIARBAnRqKAIAIQEgACAAKALsAiIEQQFqNgLsAiAAIARBAnRqIAE2AtwCCyACQQFqIgJBA0cNAAsMAgsgAigCBCIBKgIUIQ0gAigCCCIEKgIYIQwgAigCACIFKgIYIQggASoCGCELIAQqAhQhDiAFKgIUIQogBCoCECEPIAUqAhAhCSABKgIQIRAgA0EANgIsIAMgDSAKkyINIAwgCJMiDJQgCyAIkyILIA4gCpMiDpSTIgg4AiAgAyALIA8gCZMiC5QgECAJkyIJIAyUkyIKOAIkIAMgCSAOlCANIAuUkyIJOAIoIAkgCZQgCCAIlCAKIAqUkpJDAAAAAF5BAXMNASACQQA2AhwgACAAKALsAkF/aiIBNgLsAiAAIAFBAnRqKALcAiEBIAJBBDYCICACIAE2AgwgACADQSBqIAEQRSAAEGMNAiAAKAL0AiICIAIoAiBBf2oiATYCICAAIAAoAuwCIgVBAnRqIAIgAUECdGooAgAiBDYC3AIgACgC9AIhAiADQQA2AhwgAyADKgIojDgCGCADIAMqAiSMOAIUIAMgAyoCIIw4AhAgAiACKAIgIgZBAnRqIgFBADYCECAAIAU2AuwCIAEgBDYCACACIAZBAWo2AiAgACADQRBqIAQQRUEBIAAQYw0DGiAAKAL0AiICIAIoAiBBf2oiATYCICACIAFBAnRqKAIAIQIgACAAKALsAiIBQQFqNgLsAiAAIAFBAnRqIAI2AtwCQQAMAwtBASACKAIAIgAqAhAgAigCDCIEKgIQIgiTIg0gAigCBCIFKgIUIAQqAhQiCpMiDJQgAigCCCICKgIYIAQqAhgiCZMiC5QgACoCFCAKkyIOIAUqAhggCZMiD5QgAioCECAIkyIQlCAAKgIYIAmTIgkgBSoCECAIkyIIlCACKgIUIAqTIgqUkiANIA+UIAqUkyAOIAiUIAuUk5IgCSAMlCAQlJMiCEMAAAAAXCAIIAhbcQ0CGgtBAAwBC0EBCyEBIANBMGokACABC+ACAQJ/IAEgAiAAKAIcIAIoAgAoAhwRAwA2AgAgASACIAAoAiAgAigCACgCHBEDADYCBCABIAIgAiAAIAIoAgAoAigRAwAiAyACKAIAKAIcEQMAIgQ2AgggBARAIAIgAyACKAIAKAIwEQIACyABIAAoAgQ2AgwgASAALQAVNgIYIAEgACgCGDYCKCABIAAoAhA2AiwgASAALQAUNgIwIAEgACgCDDYCFCABIAAoAgg2AhAgASAAKAIkNgIcIAAoAighA0EAIQIgAUEANgIkIAEgAzYCICAAKAIcIgMoAugDIgRBAU4EQCADKALwAyEDA0AgACADIAJBAnRqKAIARgRAIAFBATYCJAsgAkEBaiICIARHDQALCyAAKAIgIgIoAugDIgNBAU4EQCACKALwAyEEQQAhAgNAIAAgBCACQQJ0aigCAEYEQCABQQE2AiQLIAJBAWoiAiADRw0ACwtBvMEACy0AIABBkMEANgIAIAAEQEHs9wFB7PcBKAIAQQFqNgIAIABBkNIBKAIAEQAACwuJBgIBfxd9IwBBQGoiBCQAIAEqAhghDyABKgIUIRAgASoCKCERIAEqAiQhEiAAKgIoIQkgACoCFCEKIAAqAiQhDSAAKgIYIQsgASoCCCETIAEqAgAhFCABKgIEIRUgASoCECEWIAEqAiAhFyAAKgIIIQcgACoCBCEIIAAqAiAhDiAAKgIQIQwgACoCACEGIARBADYCPCAEQQA2AiwgBCAXIAsgCJQgCiAHlJNDAACAPyAGIAogCZQgCyANlJMiGZQgCCALIA6UIAkgDJSTIhqUkiAHIA0gDJQgCiAOlJMiG5SSlSIFlCIYlCASIAwgB5QgCyAGlJMgBZQiC5SSIBEgCiAGlCAMIAiUkyAFlCIKlJI4AjggBCAXIA0gB5QgCSAIlJMgBZQiDJQgEiAJIAaUIA4gB5STIAWUIgeUkiARIA4gCJQgDSAGlJMgBZQiCJSSOAI0IAQgGCAWlCALIBCUkiAKIA+UkjgCKCAEIAwgFpQgByAQlJIgCCAPlJI4AiQgBEEANgIcIAQgFyAZIAWUIgaUIBIgGiAFlCIJlJIgESAbIAWUIgWUkjgCMCAEIAYgFpQgCSAQlJIgBSAPlJI4AiAgBCATIAqUIBQgGJQgFSALlJKSOAIYIAQgEyAIlCAUIAyUIBUgB5SSkjgCFCAEIBMgBZQgFCAGlCAVIAmUkpI4AhAgBEEQaiAEECYgBCAEKgIIIgVDAACAPyAEKgIAIgggCJQgBCoCBCIHIAeUkiAFIAWUkiAEKgIMIgkgCZSSkZUiBpQiBTgCCCAEIAcgBpQiBzgCBCAEIAggBpQiCDgCACAEIAkgBpQiBjgCDCADIAZDAACAv5dDAACAP5YQOiIGIAaSOAIAIAJBADYCDCACIAU4AgggAiAHOAIEIAIgCDgCAAJAIAggCJQgByAHlJIgBSAFlJIiBkMAAIAoXUEBc0UEQCACQgA3AgggAkKAgID8AzcCAAwBCyACIAVDAACAPyAGkZUiBZQ4AgggAiAHIAWUOAIEIAIgCCAFlDgCAAsgBEFAayQACwcAQwAAgD8LAwABC78FAgV/Bn0CQCABRQ0AIAIqAhghCSACKgIUIQogAioCECELIAIqAgghDCACKgIEIQ0gAioCACEOQej3AUHo9wEoAgBBAWo2AgBBgAJBEEGM0gEoAgARAwAiBCABNgIAQcAAIQBBASECA0ACfwJAAkACQCAEIAJBf2oiAUECdGooAgAiByoCACALX0EBcw0AIAcqAhAgDmBBAXMNACAHKgIEIApfQQFzDQAgByoCFCANYEEBcw0AIAcqAgggCV9BAXMNACAHKgIYIAxgQQFzDQAgBygCKARAIAAgAUcEQCAAIQUgBCEGDAQLIAIgAEEBdEEBIAAbIgVKBEAgBCEGIAAiBSEBDAQLQQAhAUEAIQYgBQRAQej3AUHo9wEoAgBBAWo2AgAgBUECdEEQQYzSASgCABEDACEGCyACQQJOBEADQCAGIAFBAnQiAmogAiAEaigCADYCACABQQFqIgEgAEcNAAwEAAsACyAEDQIMAwsgAyAHIAMoAgAoAgwRAgALIAEMAgsgBARAQez3AUHs9wEoAgBBAWo2AgAgBEGQ0gEoAgARAAALIAAhAQsgBiABQQJ0aiAHKAIkNgIAAkACQCABQQFqIgggBUcNACAFIAVBAXRBASAFGyIATg0AQQAhAkEAIQQgAARAQej3AUHo9wEoAgBBAWo2AgAgAEECdEEQQYzSASgCABEDACEECwJAIAFBAE4EQANAIAQgAkECdCIFaiAFIAZqKAIANgIAIAEgAkYhBSACQQFqIQIgBUUNAAwCAAsACyAGRQ0CCyAGBEBB7PcBQez3ASgCAEEBajYCACAGQZDSASgCABEAAAsMAQsgBSEAIAYhBAsgBCAIQQJ0aiAHKAIoNgIAIAFBAmoLIgJBAEoNAAsgBEUNACAEBEBB7PcBQez3ASgCAEEBajYCACAEQZDSASgCABEAAAsLC9QLAgd/BX0jAEHwAGsiBiQAIAAQqgEgAEEBOgCYAiAAQeQiNgIAIABBADYClAIgAEEBOgCYAyAAQQA2ApwCIABCADcCjAIgAEEANgKUAyAAQQE6AKwDIABCADcCjAMgAEEANgKoAyAAQQE6AMADIABCADcCoAMgAEEANgK8AyAAQQE6APADIABCADcCtAMgAEEANgLsAyAAQgA3AuQDIABBAToAhAQgAEEANgKABCAAQQE6AMAFIAAgATYCrAUgAEIANwL4AyAAQQA2ArwFIABCADcCtAUgAEEBOgDUBSAAQQA2AtAFIABCADcCyAUgAEEBOgDoBSAAQQA2AuQFIABCADcC3AUgAEEBOgD8BSAAQQA2AvgFIABCADcC8AUgAEEBOgCQBiAAQQA2AowGIABCADcChAYgAEEBOgCkBiAAQQE6ALgGIABBADYCoAYgAEIANwKYBiAAQQE6AMwGIABBADYCtAYgAEIANwKsBiAAQQE6AOAGIABBADYCyAYgAEIANwLABiAAQQE6APQGIABBADYC3AYgAEIANwLUBiAAQQA2AvAGIABCADcC6AYgAEGgB2oQeiEKIABB3AdqEHoaIABBmAhqEHoaIABB4AhqQQA2AgAgAEHkCGpBAToAACAAQfgIakEBOgAAIABB2AhqQgA3AgAgAEH0CGpBADYCACAAQeAJakEBOgAAIABB7AhqQgA3AgAgAEHcCWpBADYCACAAQdQJakIANwIAIAAQqQUgABDyAiIIQoCAgPwTNwIMIAhCgICA/IOAgMA/NwIEIAAoAsABIgEgASgCACgCMBEGACEMIAZBCGpBAEHkABALGiAAKALIBSIBIAJIBEAgACgCzAUgAkgEQCABIQUCfyACBEBB6PcBQej3ASgCAEEBajYCACACQegAbEEQQYzSASgCABEDACEJIAAoAsgFIQULIAVBAU4LBEADQCAJIAdB6ABsIgtqIAAoAtAFIAtqQegAEBUaIAdBAWoiByAFRw0ACwsgACgC0AUiBQRAIAAtANQFBEAgBQRAQez3AUHs9wEoAgBBAWo2AgAgBUGQ0gEoAgARAAALCyAAQQA2AtAFCyAAIAk2AtAFIABBAToA1AUgACACNgLMBQsDQCAAKALQBSABQegAbGoiBUEANgIAIAVBBGogBkEIakHkABAVGiABQQFqIgEgAkcNAAsLIAAgAjYCyAUgAkEBTgRAQQAhBwNAIAAoAtAFIAdB6ABsakEAQegAEAshBUMAAAAAIQ5DAAAAACEPQwAAAAAhEEMAAAAAIQ1BACEBIAMEQCADKgIMIQ0gAyoCCCEQIAMqAgQhDiADKgIAIQ8gA0EQaiEBCyAFIA84AgggBSAOOAIMIAUgDTgCFCAFIBA4AhAgBSAFKQIINwIYIAUgBSkCEDcCIAJ/IARFBEBDAACAPyENQQAMAQsgBCoCACENIARBBGoLIQQgBUMAAIA/IA2VQwAAAAAgDUMAAAAAXhs4AlggBkEANgIkIAYgDCAQkjgCICAGIAwgDpI4AhwgBiAMIA+SOAIYIAZBADYCFCAGIBAgDJM4AhAgBiAOIAyTOAIMIAYgDyAMkzgCCCAFIAogBkEIaiAFEEI2AmAgBSAINgIEIAEhAyAHQQFqIgcgAkcNAAsLIABB/AZqIQICQCAAKAKgByIBBEAgACgCwAEiAyADKAIAKAIwEQYAIQwgASoCACENIAEqAgQhDiABKgIIIQ8gAEEANgKIByAAIA8gDJM4AoQHIAAgDiAMkzgCgAcgACANIAyTOAL8BiABKgIUIQ0gASoCGCEOIAEqAhAhDyAAQQA2ApgHIAAgDCAOkjgClAcgACAMIA2SOAKQByAAQYwHaiIBIAwgD5I4AgAgACgCvAEiA0UNASAAKAKsBSIEKAIgIgUgAyACIAEgBCgCJCAFKAIAKAIQEQkADAELIAJCADcCACACQgA3AhggAkIANwIQIAJCADcCCAsgBkHwAGokACAACwcAIAAoAhALiAEBAX8jAEEQayIDJAAgAyABNgIMIAMgAjYCCCAAAn8jAEEQayIBIAMoAgwiADYCDCABKAIMIAMoAghBAnRqCwJ/IwBBEGsiASAAQRBqNgIMIAEoAgwgAygCCEECdGoLAn8jAEEQayIBIABBIGo2AgwgASgCDCADKAIIQQJ0agsQCSADQRBqJAAL1wECAX8BfSMAQRBrIgIkACACIAA2AgwgAiABNgIIIwBBEGsiASACKAIMIgA2AgwgASgCDEEIaioCAAJ9IwBBEGsiASACKAIINgIMIAEoAgwqAgALlAJ9IwBBEGsiASAAQRBqNgIMIAEoAgxBCGoqAgACfSMAQRBrIgEgAigCCDYCDCABKAIMQQRqKgIAC5QLkgJ9IwBBEGsiASAAQSBqNgIMIAEoAgxBCGoqAgACfSMAQRBrIgAgAigCCDYCDCAAKAIMQQhqKgIAC5QLkiEDIAJBEGokACADC9cBAgF/AX0jAEEQayICJAAgAiAANgIMIAIgATYCCCMAQRBrIgEgAigCDCIANgIMIAEoAgxBBGoqAgACfSMAQRBrIgEgAigCCDYCDCABKAIMKgIAC5QCfSMAQRBrIgEgAEEQajYCDCABKAIMQQRqKgIAAn0jAEEQayIBIAIoAgg2AgwgASgCDEEEaioCAAuUC5ICfSMAQRBrIgEgAEEgajYCDCABKAIMQQRqKgIAAn0jAEEQayIAIAIoAgg2AgwgACgCDEEIaioCAAuUC5IhAyACQRBqJAAgAwvOAQIBfwF9IwBBEGsiAiQAIAIgADYCDCACIAE2AggjAEEQayIBIAIoAgwiADYCDCABKAIMKgIAAn0jAEEQayIBIAIoAgg2AgwgASgCDCoCAAuUAn0jAEEQayIBIABBEGo2AgwgASgCDCoCAAJ9IwBBEGsiASACKAIINgIMIAEoAgxBBGoqAgALlAuSAn0jAEEQayIBIABBIGo2AgwgASgCDCoCAAJ9IwBBEGsiACACKAIINgIMIAAoAgxBCGoqAgALlAuSIQMgAkEQaiQAIAMLVgEBfyMAQRBrIgEkACABIAA4AgwgASoCDEMAAIC/XQRAIAFDAACAvzgCDAsgASoCDEMAAIA/XgRAIAFDAACAPzgCDAsgASoCDBA6IQAgAUEQaiQAIAALNwEBfyMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDCgCvAEhACABQRBqJAAgAAtIAQF/IwBBEGsiAiAANgIMIAJBADYCCCACIAE2AgQgAiACKAIINgIAA0AgAigCACACKAIESARAIAIgAigCAEEBajYCAAwBCwsLSgEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwiACACKAIIEJUCIAAgAigCCCIBKQIwNwIwIAAgASkCODcCOCACQRBqJAALNgEBfyMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDEEEaiEAIAFBEGokACAACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQyQkgAkEQaiQAC00BAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKgIIIQEjAEEQayIAIAIoAgw2AgwgACABOAIIIAAoAgwgACoCCDgCuAEgAkEQaiQAC2UBAX8jAEEgayIFIAA2AhwgBSABNgIYIAUgAjYCFCAFIAM2AhAgBSAENgIMIAUoAhwiACAFKAIYKgIAOAIAIAAgBSgCFCoCADgCBCAAIAUoAhAqAgA4AgggACAFKAIMKgIAOAIMC4MBAgN/AX4CQCAAQoCAgIAQVARAIAAhBQwBCwNAIAFBf2oiASAAIABCCoAiBUIKfn2nQTByOgAAIABC/////58BViECIAUhACACDQALCyAFpyICBEADQCABQX9qIgEgAiACQQpuIgNBCmxrQTByOgAAIAJBCUshBCADIQIgBA0ACwsgAQusAgICfwd+IAAoAhAiAiABKAIQIgNHBEAgAiADaw8LIAJFBEBBAA8LAn9BfyABKQMIIgZCIIgiBCAAKQMAIgdC/////w+DIgV+IghCIIggBCAHQiCIIgd+fCAGQv////8PgyIGIAd+IgRCIIh8IAhC/////w+DIARC/////w+DfCIEQiCIfCAEQiCGIgQgBSAGfnwiBiAEVK18IgcgASkDACIEQiCIIgUgACkDCCIIQv////8PgyIJfiIKQiCIIAUgCEIgiCIIfnwgBEL/////D4MiBCAIfiIFQiCIfCAKQv////8PgyAFQv////8Pg3wiBUIgiHwgBUIghiIFIAQgCX58IgQgBVStfCIFVA0AGkEBIAcgBVYNABpBfyAGIARUDQAaIAYgBFYLIAJsC0cAIABBADYCECAAQv////8PNwIIIABCADcCACAAQQA2AiAgAEEBOgAkIABBAToAOCAAQgA3AhggAEEANgI0IABCADcCLCAAC/ADAhF/AX4DQCAAKAIMIg4gAiIRIANqQQJtQQR0aiIEKAIIIRIgBCgCBCEKIAQoAgAhByADIQQDQEF/IQZBfyEJIA4gAkEEdGoiCygCACIMBEAgDCgCDCEJCyAHKAIMQX8gBxshBkF/IQhBfyEFIAsoAgQiDwRAIA8oAgwhBQsgCigCDEF/IAobIQgCQAJAIAkgBkoNAAJAIAUgCEoNACAHIAxHDQAgCiAPRw0CIAsoAgggEksNAQwCCyAHIAxHDQEgBSAITA0BCyACQQFqIQIMAQsDQCAOIARBBHQiFGohBkF/IQlBfyEIIAcoAgxBfyAHGyEIIAYoAgAiEARAIBAoAgwhCQtBfyEFQX8hDSAKKAIMQX8gChshDSAGKAIEIhMEQCATKAIMIQULAkACQCAIIAlKDQACQCANIAVKDQAgByAQRw0AIAogE0cNAiAGKAIIIBJJDQEMAgsgByAQRw0BIA0gBUwNAQsgBEF/aiEEDAELCwJ/IAIgBEwEQCALKQIIIRUgCyAGKQIANwIAIAsgBikCCDcCCCAAKAIMIBRqIgUgDzYCBCAFIBU3AgggBSAMNgIAIARBf2ohBCACQQFqIQILIAIgBEwLBEAgACgCDCEODAELCyAEIBFKBEAgACABIBEgBBB7CyACIANIDQALC1gBAX8CQAJAIAAoAgQiAUENSw0AAkACQAJAIAFBAWsODQQDAwICAwMAAwQEAwQECyAAKgIcIAAqAgyUDwALAAALDAELIAAgACgCACgCMBEGAA8LIAAqAiwLrgMCBH8FfSMAQRBrIQggA0H////7BzYCAEH///97IQcgBEH///97NgIAAkAgACgCCCIKQQFIBEBD//9//yELDAELQQAhBwNAIAAoAhAgB0EEdGoiCSoCACILIAEqAgCUIAkqAgQiDCABKgIElJIgCSoCCCINIAEqAgiUkiABKgIwkiIOIAIqAgCUIAsgASoCEJQgDCABKgIUlJIgDSABKgIYlJIgASoCNJIiDyACKgIElJIgCyABKgIglCAMIAEqAiSUkiANIAEqAiiUkiABKgI4kiIMIAIqAgiUkiILIAMqAgBdQQFzRQRAIAMgCzgCACAFQQA2AgwgBSAMOAIIIAUgDzgCBCAFIA44AgALIAsgBCoCAF5BAXNFBEAgBCALOAIAIAZBADYCDCAGIAw4AgggBiAPOAIEIAYgDjgCAAsgB0EBaiIHIApHDQALIAQqAgAiC7whBwsgAyoCACIMIAteBEAgAyAHNgIAIAQgDDgCACAIIAUpAgg3AwggCCAFKQIANwMAIAUgBikCCDcCCCAFIAYpAgA3AgAgBiAIKQMINwIIIAYgCCkDADcCAAsLowIBBn8gACgCRCIMIQsCQCAMIAAoAkhHDQAgDCELIAwgDEEBdEEBIAwbIg1ODQAgDQR/Qej3AUHo9wEoAgBBAWo2AgAgDUGYAWxBEEGM0gEoAgARAwAhDiAAKAJEBSAMCyIPQQFOBEBBACELA0AgDiALQZgBbCIQaiAAKAJMIBBqQZgBEBUaIAtBAWoiCyAPRw0ACwsgACgCTCILBEAgAC0AUARAIAsEQEHs9wFB7PcBKAIAQQFqNgIAIAtBkNIBKAIAEQAACwsgAEEANgJMCyAAIA42AkwgACANNgJIIABBAToAUCAAKAJEIQsLIAAgC0EBajYCRCAAKAJMIAxBmAFsaiIMIAQ2AowBIAAgDCABIAIgAyAFIAYgByAIIAkgChCTDgugBQIDfwV9IAAgAUECdGpBqAlqKgIAIQYCQCAAIAFBBnRqIgIqAuQGIgcgAioC6AYiCGANACAGIAddQQFzRQRAAkAgByAGk0PbD8lAECUiBUPbD0nAXUEBc0UEQCAFQ9sPyUCSIQUMAQsgBUPbD0lAXkEBcw0AIAVD2w/JwJIhBQsgBYshCQJAIAggBpND2w/JQBAlIgVD2w9JwF1BAXNFBEAgBUPbD8lAkiEFDAELIAVD2w9JQF5BAXMNACAFQ9sPycCSIQULIAYgBkPbD8lAkiAJIAWLXRshBgwBCyAGIAheQQFzDQACQCAGIAiTQ9sPyUAQJSIFQ9sPScBdQQFzRQRAIAVD2w/JQJIhBQwBCyAFQ9sPSUBeQQFzDQAgBUPbD8nAkiEFCyAFiyEJAkAgBiAHk0PbD8lAECUiBUPbD0nAXUEBc0UEQCAFQ9sPyUCSIQUMAQsgBUPbD0lAXkEBcw0AIAVD2w/JwJIhBQsgBkPbD8nAkiAGIAWLIAldGyEGCyACIAY4ApgHAn8CQAJAIAcgCF5BAXNFBEAgACABQQZ0akGcB2ohAwwBCyAHIAZeQQFzRQRAIAAgAUEGdGoiASIAQZQHaiAGIAeTIgU4AgAgAUEBNgKcByAFQ9sPSUBeQQFzRQRAIAAgBUPbD8nAkjgClAcMAwsgBUPbD0nAXUEBcw0CIAAgBUPbD8lAkjgClAcMAgsgACABQQZ0aiICIgRBnAdqIQMgCCAGXUEBcw0AIARBAjYCnAcgAiAGIAiTIgU4ApQHIAVD2w9JQF5BAXNFBEAgAiAFQ9sPycCSOAKUBwwCCyAFQ9sPScBdQQFzDQEgAiAFQ9sPyUCSOAKUBwwBCyADQQA2AgBBACAAIAFBBnRqLQCQB0UNARoLQQELC9gCAgF/EH0gACgCBCIDBEAgAyABIAIQKwsgACgCACIABEAgACoC3AEhCyAAKgLUASEMIAAqAtgBIQ0gACoCzAEhDiAAKgLEASEPIAAqAsgBIRAgACoCvAEhESAAKgK4ASESIAAqArQBIRMgAioCBCEHIAIqAgghCCACKgIAIQkgASoCCCEEIAEqAgQhBSAAIAEqAgAiCiAAKgKAASIGlCAAKgKUApI4ApQCIAAgBiAFlCAAKgKYApI4ApgCIAAgBiAElCAAKgKcApI4ApwCIAAgACgCuAJBAWo2ArgCIAAgEyAEIAeUIAUgCJSTIgaUIBIgCiAIlCAEIAmUkyIElJIgESAFIAmUIAogB5STIgWUkiAAKgKkApI4AqQCIAAgBiAPlCAEIBCUkiAFIA6UkiAAKgKoApI4AqgCIAAgBiAMlCAEIA2UkiAFIAuUkiAAKgKsApI4AqwCCwspAQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAQLxogABAOIAFBEGokAAsyAQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAEQCAAIAAoAgAoAggRAAALIAFBEGokAAtNAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAioCCCEBIwBBEGsiACACKAIMNgIMIAAgATgCCCAAKAIMIAAqAgg4AvgBIAJBEGokAAtNAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAioCCCEBIwBBEGsiACACKAIMNgIMIAAgATgCCCAAKAIMIAAqAgg4AvwBIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEOUHIAJBEGokAAtNAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCCCEBIwBBEGsiACACKAIMNgIMIAAgATYCCCAAKAIMIAAoAgg2AswBIAJBEGokAAs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMKALMASEAIAFBEGokACAACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIAIqAggQmgggAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIAIqAggQrwggAkEQaiQAC0oBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAgAigCCBCDAiAAIAIoAggiASkCMDcCMCAAIAEpAjg3AjggAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIAIqAggQwwggAkEQaiQACzkCAX8BfSMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDCoC6AEhAiABQRBqJAAgAgs5AgF/AX0jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAuABIQIgAUEQaiQAIAILIgEBfyMAQRBrIgEkACABIAA2AgwgASgCDBA5IAFBEGokAAs5AgF/AX0jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAuQBIQIgAUEQaiQAIAILPQEBfyMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDCgCzAFBA3FBAEchACABQRBqJAAgAAs9AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMKALMAUEBcUEARyEAIAFBEGokACAACz0BAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwoAswBQQJxQQBHIQAgAUEQaiQAIAALKgEBfyMAQRBrIgEkACABIAA2AgwgASgCDBCpCUEBcSEAIAFBEGokACAACzEBAX8jAEEQayICJAAgAiAANgIMIAIgAToACyACKAIMIAItAAtBAXEQPiACQRBqJAALJAEBfyMAQRBrIgEkACABIAA2AgwgASgCDEEAED4gAUEQaiQACzABAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAgg2AtgBIAJBEGokAAsvAQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIAEoAgwiADYCDCAAEL0BIAFBEGokAAtFAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCCCEAIAIoAgwiASgC2AFBfnFBBEcEQCABIAA2AtgBCyACQRBqJAALNwEBfyMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDCgCwAEhACABQRBqJAAgAAs7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACNgIEIAMoAgwgAygCCCADKAIEEPMJIANBEGokAAsyAQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAQpwMjAEEQayAAQTBqNgIMIAFBEGokAAs1AQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCIBKQIANwIQIAAgASkCCDcCGAsYAQF/IwBBEGsiASAANgIMIAEoAgxBEGoLJAEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOAIMCxgBAX8jAEEQayIBIAA2AgwgASgCDCoCDAskAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AggLGAEBfyMAQRBrIgEgADYCDCABKAIMKgIIC54BAQF/IwBBMGsiCiQAIAogADYCLCAKIAE2AiggCiACNgIkIAogAzYCICAKIAQ2AhwgCiAFNgIYIAogBjYCFCAKIAc2AhAgCiAINgIMIAogCTYCCCAKKAIsIgAgCigCKCAKKAIkIAooAiAQCSAAQRBqIAooAhwgCigCGCAKKAIUEAkgAEEgaiAKKAIQIAooAgwgCigCCBAJIApBMGokAAtHAQF/IAAgARDOARogACgCBCICBEBB7PcBQez3ASgCAEEBajYCACACQZDSASgCABEAAAsgACABNgIEIAAgACgCDEF/ajYCDAuDAQEEfwJAIAAgARDOASIDRQRAQQAhAwwBCyAAKAIIIgVBAE4EQCAFRQ0BA0AgAygCICIGRQ0CIAYhAyAFIARBAWoiBEcNAAsMAQsgACgCACEDCyABIAIpAgA3AgAgASACKQIYNwIYIAEgAikCEDcCECABIAIpAgg3AgggACADIAEQzQEL9QMBCX8jAEEgayIEJAACQCAAKAIMIAEgAUF/TBsiAUEBSA0AIAAoAgAiAkUNAANAQQAhBiACQShqIgcoAgAEQANAAkAgAigCICIDIAJNBEAgAiEDDAELIAMoAigiBSACRiEJIAMgAiAFR0ECdCIKaigCJCEIAn8gACADKAIgIgVFDQAaIAUgBSgCKCADRkECdGpBJGoLIAI2AgAgCCACNgIgIAMgAjYCICACIAU2AiAgAyACKAIkNgIkIAMgBygCADYCKCACKAIkIAM2AiAgBygCACADNgIgIAJBJGoiBSAJQQJ0aiADNgIAIAUgCmogCDYCACAEIANBGGopAgA3AxggBCADQRBqKQIANwMQIAQgA0EIaikCADcDCCAEIAMpAgA3AwAgAyACQRhqKQIANwIYIAMgAkEQaikCADcCECADIAJBCGopAgA3AgggAyACKQIANwIAIAIgBCkDGDcCGCACIAQpAxA3AhAgAiAEKQMINwIIIAIgBCkDADcCAAsgACgCECAGdiECIAZBAWpBH3EhBiADIAJBAXFBAnRqKAIkIgJBKGoiBygCAA0ACwsgAAJ/QQAgACACEM4BRQ0AGiAAKAIACyACEM0BIAAgACgCEEEBajYCECABQX9qIgFFDQEgACgCACECDAAACwALIARBIGokAAueAQEBfyAAKAIAIgEEQCAAIAEQzwELIAAoAgQiAQRAQez3AUHs9wEoAgBBAWo2AgAgAUGQ0gEoAgARAAALIABCgICAgHA3AgQgACgCICIBBEAgAC0AJARAIAEEQEHs9wFB7PcBKAIAQQFqNgIAIAFBkNIBKAIAEQAACwsgAEEANgIgCyAAQQA2AiAgAEIANwIYIABBADYCECAAQQE6ACQLqAEBCH0gACAAKAIAKAIwEQYAIQIgACAAKAIAKAIwEQYAIQMgACAAKAIAKAIwEQYAIQQgACABOAIsIAAqAiQhASAAKgIgIQUgACoCHCEGIAAgACgCACgCMBEGACEHIAAgACgCACgCMBEGACEIIAAgACgCACgCMBEGACEJIABBADYCKCAAIAMgBZIgCJM4AiAgACACIAaSIAeTOAIcIAAgBCABkiAJkzgCJAs5AQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCIAIAIoAgggACgCACgCEBECACACQRBqJAALxgEBBH8gASgCvAEiAwRAIAAoAkQiAiACKAIAKAIkEQEAIgIgAyAAKAIYIAIoAgAoAigRBQAgACgCRCICIAMgACgCGCACKAIAKAIMEQUAIAFBADYCvAELAkAgACgCCCICQQFIDQAgACgCECEEQQAhAwNAIAEgBCADQQJ0aiIFKAIARwRAIANBAWoiAyACRw0BDAILCyADIAJODQAgBSAEIAJBf2oiA0ECdCICaigCADYCACAAKAIQIAJqIAE2AgAgACADNgIICwvxAQAgAEIANwK8ASAAQoCAgICw7YKv3QA3ArQBIABCgICA/IOAgMA/NwKkASAAQeTKADYCACAAQYCAgPwDNgL0ASAAQgE3AuwBIABCADcC5AEgAEKAgICAgICAgD83AtwBIABC/////x83AtQBIABCgYCAgHA3AswBIABCADcC+AEgAEGAgID8AzYCBCAAQoCAgPwDNwKsASAAQgA3AsQBIABCADcCgAIgAEIANwIIIABCADcCECAAQgA3AiQgAEGAgID8AzYCGCAAQgA3AhwgAEFAa0EANgIAIABBgICA/AM2AiwgAEIANwI4IABCADcCMAulCAIBfxh9IAQgBC0AEEFwcSIFOgAQIAMqAgAiGyABKgIAIgyTIhAgACoCACILIAyTIgaUIAMqAgQiHCABKgIEIg2TIhEgACoCBCIJIA2TIgeUkiADKgIIIh0gASoCCCIOkyISIAAqAggiEyAOkyIIlJIhCiAEAn0CQCACKgIAIhggDJMiFCAGlCACKgIEIhkgDZMiFSAH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EGsiAiQAIAIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCACAAIAEoAhg2AhggACABKQIQNwIQIAAgASkCCDcCCCAAQRxqIAIoAghBHGoQgwIgACACKAIIIgEpAkw3AkwgACABKAJcNgJcIAAgASkCVDcCVCACQRBqJAALGAEBfyMAQRBrIgEgADYCDCABKAIMQRhqCyQBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgCIAsYAQF/IwBBEGsiASAANgIMIAEoAgwqAiALGAEBfyMAQRBrIgEgADYCDCABKAIMQQRqC2cBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIgEpAgA3AgAgACABKQIINwIIIAAgAigCCCIBKQIQNwIQIAAgASkCGDcCGCAAIAIoAggiASkCIDcCICAAIAEpAig3AigLUQEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIgAgAygCCBCDAiAAIAMoAgQiASkCADcCMCAAIAEpAgg3AjggA0EQaiQAC34BAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQjAEEQayIBIAMoAgwiADYCDCABKAIMQdQLNgIAIABBgAs2AgAgAEEEaiADKAIIEIoBIABBxABqIAMoAgQQigEgAEGEAWogAygCCBCKASAAQQA2AsQBIANBEGokAAt8AQN/IwBBIGsiACQAAkBB0NgBLQAAQQFxDQBB0NgBEBBFDQAQxQghASAAQwAAAAA4AgwgAEMAAAAAOAIIIABDAAAAADgCBCAAQRBqIgIgAEEMaiAAQQhqIABBBGoQCUGQ2AEgASACEJYCQdDYARAPCyAAQSBqJABBkNgBCy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQxwkgAkEQaiQACzUBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIgEpAgA3AiggACABKQIINwIwCxgBAX8jAEEQayIBIAA2AgwgASgCDEEoagskAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AlwLGAEBfyMAQRBrIgEgADYCDCABKAIMKgJcC1YBAX8jAEEQayIBJAAgASAANgIMIAEoAgwiABD3BiAB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NgJ4IAEgACgCcDYCfCABIAAoAnQ2AoABIAEgACgCeDYChAEgASAAKAJ8NgKIASABIAAoAoABNgKMASABIAAoAoQBNgKQASABIAAoAogBNgKUASABIAAoAowBNgKYASABIAAoApABNgKcASABIAAoApQBNgKgASABIAAoApgBNgKkASABIAAoApwBNgKoASABIAAoAqABNgKsASABIAAoAqQBNgKwASABIAAoAqgBNgK0ASABIAAoAqwBNgK4ASABIAAoArABNgK8ASABIAAoArQBNgLgASAAKAK4ASEDIAFBADYCACABIAM2AsABIAIgACgCwAEgAigCACgCHBEDACEDIAFBADYCCCABIAM2AgQgASAAKALMATYC5AEgASAAKALQATYC6AEgASAAKALUATYC7AEgASAAKALYATYC8AEgASAAKALcATYCxAEgASAAKALgATYCyAEgASAAKALoATYCzAEgASAAKALkATYC0AEgASAAKALsATYC9AEgASACIAIgACACKAIAKAIoEQMAIgMgAigCACgCHBEDACIENgIMIAQEQCACIAMgAigCACgCMBECAAsgASAAKAL0ATYC1AEgASAAKAL4ATYC2AEgASAAKAL8ATYC3AEgASAAKAKAAjYC+AFBgMsACzsCAX8BfSMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDEEMaioCACECIAFBEGokACACC+ADAQJ/AkACQAJAAkACQAJAIAAoAgAiAkEETgRAIAEtAABBCHEEQCACIQMMAgsgACACQX9qIgM2AgAgACAAIANBBHRqIgIpAgw3AjwgACACKQIENwI0IAAgAikCVDcChAEgACACKQJcNwKMASAAIAIpAqwBNwLcASAAIAIpAqQBNwLUAQwBC0EDIQMgAkEDRw0BCyABLQAAQQRxDQEgACADQX9qIgM2AgAgACAAIANBBHRqIgIpAgw3AiwgACACKQIENwIkIAAgAikCVDcCdCAAIAIpAlw3AnwgACACKQKsATcCzAEgACACKQKkATcCxAEMAQtBAiEDIAJBAkgNAQsgAS0AAEECcQ0BIAAgA0F/aiIDNgIAIAAgACADQQR0aiICKQIMNwIcIAAgAikCBDcCFCAAIAIpAlQ3AmQgACACKQJcNwJsIAAgAikCrAE3ArwBIAAgAikCpAE3ArQB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Qez3AUHs9wEoAgBBAWo2AgAgBEGQ0gEoAgARAAALCyAAIAE2AvQIIABBAToA+AggACAHNgLwCAsgASACakEAIAcgAmsQCxogACgC2AghCAsgACAHNgLsCCAIQQFIDQAgAEH0CGooAgAhBSAAQeAIaigCACEAQQAhCgNAIAAgCkECdGooAgAiASAKNgL8AiABKAIYIgJBACACQQBKGyEHQQAhBgNAIAUgBiAIbCAKamoCfyACQQFOBEAgACAGQQJ0aigCACILKAIYIQRBACEJA0AgBEEBTgRAIAEoAiAgCUECdGooAgAhDCALKAIgIQ1BACEDA0BBASAMIA0gA0ECdGooAgBGDQQaIANBAWoiAyAESA0ACwsgCUEBaiIJIAdHDQALC0EACzoAACAGQQFqIgYgCEcNAAsgCkEBaiIKIAhHDQALCyAOQRBqJAAgCAuvBAEHfyMAQUBqIQJB9+8OIQYgACgC3AUiBUEBTgRAA0AgAiAAKALkBSIBIARBNGxqIgMiB0EwaigCADYCOCACIAMpAig3AzAgAiADKQIgNwMoIAIgAykCGDcDICACIAMpAhA3AxggAiADKQIINwMQIAIgAykCADcDCCADIAEgBkGNzOUAbEHf5rvjA2oiBiAFcEE0bGoiASkCADcCACAHIAEoAjA2AjAgAyABKQIoNwIoIAMgASkCIDcCICADIAEpAhg3AhggAyABKQIQNwIQIAMgASkCCDcCCCABIAIoAjg2AjAgASACKQMwNwIoIAEgAikDKDcCICABIAIpAyA3AhggASACKQMYNwIQIAEgAikDEDcCCCABIAIpAwg3AgAgBEEBaiIEIAVHDQALCyAAKALwBSIFQQFOBEBBACEEA0AgAiAAKAL4BSIBIARBLGxqIgMiB0EoaigCADYCMCACIAMpAiA3AyggAiADKQIYNwMgIAIgAykCEDcDGCACIAMpAgg3AxAgAiADKQIANwMIIAMgASAGQY3M5QBsQd/mu+MDaiIGIAVwQSxsaiIBKQIANwIAIAcgASgCKDYCKCADIAEpAiA3AiAgAyABKQIYNwIYIAMgASkCEDcCECADIAEpAgg3AgggASACKAIwNgIoIAEgAikDKDcCICABIAIpAyA3AhggASACKQMYNwIQIAEgAikDEDcCCCABIAIpAwg3AgAgBEEBaiIEIAVHDQALCwuHCQID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BSAEQX9MBEAgASAFmjkDAEEAIAJrIQIMAQsgASAFOQMACyADQRBqJAAgAgukAgACQAJAIAFBFEsNACABQXdqIgFBCUsNAAJAAkACQAJAAkACQAJAAkAgAUEBaw4JAQIJAwQFBgkHAAsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgACACQZMHEQIACw8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAAtKAQN/IAAoAgAsAABBUGpBCkkEQANAIAAoAgAiASwAACEDIAAgAUEBajYCACADIAJBCmxqQVBqIQIgASwAAUFQakEKSQ0ACwsgAgt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARDcAyEAIAEoAgBBQGoLNgIAIAAPCyABIAJBgnhqNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALCxIAIABFBEBBAA8LIAAgARCzCgv5AwIJfwR+IwBBMGsiByQAAkAgAigCCCIIRQRADAELIAghCgNAIAooAhQgACgCZEoEQCAKKAIMIggoAlwhCyAIKAJgIQwgAigCWCENIAgoAlghCCACKAJcIQ4gAigCYCEPIAdBfzYCLCAHIAwgD2siDDYCKCAHIAsgDmsiCzYCJCAHIAggDWsiCDYCICALrCIQIAQpAwh+IAisIhIgBCkDAH58IAysIhMgBCkDEH58IRECfyAFKQMIIBB+IAUpAwAgEn58IAUpAxAgE358IhBCAVkEQCAHIBA3AwggB0EBNgIYQX8hC0F/DAELIBBCf1cEQCAHQX82AhggB0IAIBB9NwMIQQEhC0F/DAELIAdCADcDCCAHQQA2AhhBACELQQALIQgCQAJAAkAgByARQgBXBH4gEUJ/VQ0BIAcgCzYCGEIAIBF9BSARCzcDEAwBCyAHQgA3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AUEBOgBkIAFCADcCRCABQQA2AmAgAUEBOgB4IAFCADcCWCABQQA2AnQgAUEBOgCMASABQgA3AmwgAUEANgKIASABQQE6AKQBIAFBADYCkAEgAUIANwKAASABQQA2AqABIAFCADcCmAEgAUEANgKoASABQv////sHNwIcIAFC////+/f//7//ADcCFCABQv////sPNwIMIAFC////+////79/NwIEIAAoAjghAiABAn8gAwRAIAEgAkEIdEGAgPwHcSACQRh0ciACQQh2QYD+A3EgAkEYdnJyNgI4IAEgAC0ABzoABCABIAAtAAY6AAUgASAALQAFOgAGIAEgAC0ABDoAByABIAAtAAs6AAggASAALQAKOgAJIAEgAC0ACToACiABIAAtAAg6AAsgASAALQAPOgAMIAEgAC0ADjoADSABIAAtAA06AA4gASAALQAMOgAPIAEgAC0AEzoAECABIAAtABI6ABEgASAALQAROgASIAEgAC0AEDoAEyABIAAtABc6ABQgASAALQAWOgAVIAEgAC0AFToAFiABIAAtABQ6ABcgASAALQAbOgAYIAEgAC0AGjoAGSABIAAtABk6ABogASAALQAYOgAbIAEgAC0AHzoAHCABIAAtAB46AB0gASAALQAdOgAeIAEgAC0AHDoAHyABIAAtACM6ACAgASAALQAiOgAhIAEgAC0AIToAIiABIAAtACA6ACMgASAALQAnOgAkIAEgAC0AJjoAJSABIAAtACU6ACYgASAALQAkOgAnIAEgAC0AKzoAKCABIAAtACo6ACkgASAALQApOgAqIAEgAC0AKDoAKyABIAAtAC86ACwgASAALQAuOgAtIAEgAC0ALToALiABIAAtACw6AC8gASAALQAzOgAwIAEgAC0AMjoAMSABIAAtADE6ADIgASAALQAwOgAzIAEgACgCkAEiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgKQASAAKAKoASICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIMAQsgASACNgI4IAEgACkCDDcCDCABIAApAgQ3AgQgASAAKQIcNwIcIAEgACkCFDcCFCABIAApAiw3AiwgASAAKQIkNwIkIAEgACgCkAE2ApABIAAoAqgBCzYCqAEgASAALQA8OgA8IAFBrAFqIQcgACgC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akEANgIAIABBADoA0AcgAEGAgNicBDYC9AcgAEKAgICA0Jmz5j03AuwHIABBiAhqQgA3AgAgAEGACGpCgICAgNCZs6Y+NwIAIABCgICA/IOAgMC/fzcC5AcgAEGcCGpBADYCACAAQoCAgPyDgICAPzcC+AcgAEGUCGpBADYCACAAQQA6AJwKIABBADYCmAogAEEBOgCVCiAAIAU6AJQKIABBkAhqQQA6AAAgACAAKAIcQQRqIAAoAiBBBGoQsgELAwABCw0AIABBkMEANgIAIAALgQIBA38gACgCCCIDQQFOBEADQCAAKAIQIARBAnRqKAIAIgItAOwBQQJxBEAgASABIAIgAigCACgCEBEBAEEBIAEoAgAoAhARBwAiAyACIAMoAgggASACKAIAKAIUEQcAQdKEkcoFIAIgASgCACgCFBEJACAAKAIIIQMLIARBAWoiBCADSA0ACwsgACgC1AFBAU4EQEEAIQQDQCABIAEgACgC3AEgBEECdGooAgAiAiACKAIAKAIkEQEAQQEgASgCACgCEBEHACIDIAIgAygCCCABIAIoAgAoAigRBwBBw565mgUgAiABKAIAKAIUEQkAIARBAWoiBCAAKALUAUgNAAsLCxEAIAAoAtwBIAFBAnRqKAIAC2ABA39B8joQFiAAKALoASICQQFOBEADQCAAKALwASADQQJ0aigCACIELQDMAUEDcUUEQCAEIAEQjA8gBCABIARBxABqEPIBIAAoAugBIQILIANBAWoiAyACSA0ACwsQEwuYBAEDfyAAKAIIIgIgACgCICIBBH8gACgCKAVBAAsgASAAKAI0IgEEfyAAKAI8BUEACyABAn9BACAAKAJIIgFFDQAaIAAoAlALIAEgACgCBCAAKAIUIAAoAhggAigCACgCDBEjABogACgCICICQX9MBEAgACgCJEF/TARAIAAoAigiAQRAIAAtACwEQCABBEBB7PcBQez3ASgCAEEBajYCACABQZDSASgCABEAAAsLIABBADYCKAsgAEIANwIkIABBAToALAsDQCAAKAIoIAJBAnRqQQA2AgAgAkEBaiIBIAJPIQMgASECIAMNAAsLIABBADYCICAAKAI0IgJBf0wEQCAAKAI4QX9MBEAgACgCPCIBBEAgAEFAay0AAARAIAEEQEHs9wFB7PcBKAIAQQFqNgIAIAFBkNIBKAIA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IAJBAToAVCACQgA3AjQgAkEANgJQIAJCADcCSCAAIAI2AsQBC38BBH8CQCAAKALoAyICQQFIDQAgACgC8AMhBANAIAEgBCADQQJ0aiIFKAIARwRAIANBAWoiAyACRw0BDAILCyADIAJODQAgBSAEIAJBf2oiAkECdCIDaigCADYCACAAKALwAyADaiABNgIAIAAgAjYC6AMLIAAgAkEASjYCgAIL0QIBBX8CQAJAIAAoAugDIgJBAUgNACAAKALwAyEEA0AgASAEIANBAnRqKAIARwRAIANBAWoiAyACRw0BDAILCyACIANHDQELAkAgAiAAKALsA0cNACACIAJBAXRBASACGyIETg0AAn8gBARAQej3AUHo9wEoAgBBAWo2AgAgBEECdEEQQYzSASgCABEDACEFIAAoAugDIQILIAJBAU4LBEBBACEDA0AgBSADQQJ0IgZqIAAoAvADIAZqKAIANgIAIANBAWoiAyACRw0ACwsgACgC8AMiAwRAIAAtAPQDBEAgAwRAQez3AUHs9wEoAgBBAWo2AgAgA0GQ0gEoAgARAAALIAAoAugDIQILIABBADYC8AMLIAAgBTYC8AMgACAENgLsAyAAQQE6APQDCyAAKALwAyACQQJ0aiABNgIAIAAgAkEBajYC6AMLIABBATYCgAILXQAgAC0AzAFBA3FFBEAgACAAKgLsAiAAKgLcApQgACoCnAOSOAKcAyAAIAAqAvACIAAqAuAClCAAKgKgA5I4AqADIAAgACoC9AIgACoC5AKUIAAqAqQDkjgCpAMLC5gCAgF/AX4jAEGQAWsiAiQAIAAQqgEgAEEBOgD0AyAAQaA2NgIAIABBADYC8AMgAEIANwLoAyACQQA2AkggAkEANgIEIAJDAAAAADgCACACIAEpAgg3AlQgASkCACEDIAJCADcCDCACQgA3AhQgAkGAgID8AzYCHCACQgA3AyggAkIANwMgIAJBgICA/AM2AjAgAkEANgJEIAJCADcCPCACQgA3AjQgAiADNwJMIAJCiq6P4aPh9ZE8NwKEASACQoquj92j4fWRPDcCfCACQQA6AHggAkGAgID8AzYCdCACQoCAgIDQmbOmPzcCbCACQoCAgPgDNwJkIAJCADcCXCACQYCAgPwDNgIIIAAgAhD6BCACQZABaiQAC5YJAgN/BH0jAEEQayICJAAgAEIA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IABCADcClAcgAEIANwKMByAAQgA3AoQHIABCADcC/AYgAEIANwIQIABBgICA/AM2AgQgAEIANwIIIABCADcCJCAAQYCAgPwDNgIYIABCADcCHCAAQUBrQQA2AgAgAEGAgID8AzYCLCAAQgA3AjggAEIANwIwIAAQqAVB6PcBQej3ASgCAEEBajYCAEEUQRBBjNIBKAIAEQMAIgEiAkIjNwIEIAJBADYCDCACQaCbATYCACABIAA2AhAgAUEgNgIEIAFBuCc2AgAgACABNgLAASABQYCAgPQDNgIMIABBgAlqQgA3AgAgAEGAgID8AzYC/AggAEGICWpCADcCACAAQZQJakIANwIAIABBkAlqQYCAgPwDNgIAIABBnAlqQgA3AgAgAEGoCWpCADcCACAAQaQJakGAgID8AzYCACAAQbAJakIANwIAIABBuAlqQgA3AgAgAEHACWpCADcCACAAQcgJakKAgICAgICAwD83AgALJgAgASgCACIAQZwBIAAoAgAoAjgRAwAiACABIAIgA0EBEIIFIAALJgAgASgCACIAQZwBIAAoAgAoAjgRAwAiACABIAIgA0EAEIIFIAALRQAgASgCACICQRQgAigCACgCOBEDACIDIQIgAC0ABCEAIAJBhLMBNgIAIAIgASgCADYCBCACIAA6ABAgAkGALTYCACADCzcAIAEoAgAiAEEYIAAoAgAoAjgRAwAiACICIgNBhLMBNgIAIAMgASgCADYCBCACQdg1NgIAIAALLAEBfyMAQRBrIgEkACABIAA2AgxB3AAQEiIAIAEoAgwQxgIgAUEQaiQAIAALfQEBfwJAIAFBIEciAw0AIAJBIEcNACAAKAJcDwsCQAJAAkAgA0UEQCACQRNKDQEgACgCYA8LIAFBE0oNASACQSBHDQEgACgCZA8LIAJBa2pBCEsNASAAKAJoDwsgAUFrakEISw0AIAJBIEcNACAAKAJsDwsgACABIAIQwQQLuAIBAX8gAEGUHzYCACAAKAJcIgEgASgCACgCABEBABogACgCXCIBBEBB7PcBQez3ASgCAEEBajYCACABQZDSASgCABEAAAsgACgCYCIBIAEoAgAoAgARAQAaIAAoAmAiAQRAQez3AUHs9wEoAgBBAWo2AgAgAUGQ0gEoAgARAAALIAAoAmQiASABKAIAKAIAEQEAGiAAKAJkIgEE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BzYCECAKIAg2AgwgCiAJOgALIAooAiggCigCJCAKKAIgIAooAhwgCigCGCAKKAIUIAooAhAgCigCDCAKLQALQQFxEJQPIQAgCkEwaiQAIAALXgEBfyMAQSBrIgYkACAGIAA2AhwgBiABNgIYIAYgAjYCFCAGIAM2AhAgBiAENgIMIAYgBTYCCCAGKAIYIAYoAhQgBigCECAGKAIMIAYoAggQlQ8hACAGQSBqJAAgAAsGAEEBEBILNwEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcC3AIgACABKAIINgLkAgs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMQbwCaiEAIAFBEGokACAACzcBAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgxBrAJqIQAgAUEQaiQAIAALNwEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCvAIgACABKQIINwLEAgsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEMsGIAJBEGokAAs3AQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCIBKQIANwKsAiAAIAEpAgg3ArQCCy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQzQYgAkEQaiQAC1ABAX8jAEEQayIEJAAgBCAANgIMIAQgATYCCCAEIAI2AgQgBCADNgIAQegCEA0iACAEKAIMIAQoAgggBCgCBCAEKAIAEMIOIARBEGokACAACzgBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCEHoAhANIgAgAigCDCACKAIIEMEOIAJBEGokACAACyQBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwgAigCCDYCcAsYAQF/IwBBEGsiASAANgIMIAEoAgwoAnALNQEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCQCAAIAEpAgg3AkgLGAEBfyMAQRBrIgEgADYCDCABKAIMQUBrCzkCAX8BfCMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDCoCULshAiABQRBqJAAgAgs5AgF/AXwjAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAni7IQIgAUEQaiQAIAILNgEBfyMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDEEgaiEAIAFBEGokACAACxABAX9BoAIQDSIAENINIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAiABOAIIIAIoAgwgAioCCBDaATgCxAEgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIAIqAggQ2QYgAkEQaiQACzMBAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIAIqAggQ2gE4AsABIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIENsGIAJBEGokAAtNAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAioCCCEBIwBBEGsiACACKAIMNgIMIAAgATgCCCAAKAIMIAAqAgg4ArwBIAJBEGokAAtfAQF/IwBBIGsiBSQAIAUgADYCHCAFIAE2AhggBSACNgIUIAUgAzYCECAFIAQ6AA9B6AgQDSIAIAUoAhwgBSgCGCAFKAIUIAUoAhAgBS0AD0EBcRC2DiAFQSBqJAAgAAtHAQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACOgAHQegIEA0iACADKAIMIAMoAgggAy0AB0EBcRC1DiADQRBqJAAgAAtKAQF/IwBBEGsiAyQAIAMgADYCDCADIAE6AAsgAyACOgAKQcwAEA0iACADKAIMIAMtAAtBAXEgAy0ACkEBcRCXBCADQRBqJAAgAAs9AQF/IwBBEGsiAiQAIAIgADYCDCACIAE6AAtBzAAQDSIAIAIoAgwgAi0AC0EBcUEBEJcEIAJBEGokACAAC1EBAn8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMIgI2AgwgACgCDCIAQbgONgIAIABBATsBBCAAQf//AzsBBiACQcANNgIAIAFBEGokAAsWAQF/QQgQEiIAQgA3AwAgABDiBiAACywBAX8jAEEQayIBJAAgASAANgIMQfAAEBIiACABKAIMEPQCIAFBEGokACAACy4BA38jAEEgayIAJABB8AAQEiEBIABBCGoiAhCBAiABIAIQ9AIgAEEgaiQAIAELNQEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCFCAAIAEpAgg3AhwLiAEBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCDCIAELwDIABB7Aw2AgAgACADKAIIIgEpAgA3AhQgACABKQIINwIcIAAgAygCBCIBKQIANwIkIAAgASkCCDcCLCMAQRBrIABBNGo2AgwjAEEQayAAQcQAajYCDCADQRBqJAALOAEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIQdQAEBIiACACKAIMIAIoAggQ5wYgAkEQaiQAIAAL6QEBAX8jAEEwayICJAAgAiAANgIsIAIgATYCKCACIAIoAiggAigCLCIAEG84AiQgAiACKAIoIAAQbjgCICACIAIoAiggABBtOAIcIAIgAigCKCAAQRBqEG84AhggAiACKAIoIABBEGoQbjgCFCACIAIoAiggAEEQahBtOAIQIAIgAigCKCAAQSBqEG84AgwgAiACKAIoIABBIGoQbjgCCCACIAIoAiggAEEgahBtOAIEIAAgAkEkaiACQSBqIAJBHGogAkEYaiACQRRqIAJBEGogAkEMaiACQQhqIAJBBGoQogEgAkEwaiQAC1ABAX8jAEEgayICJAAgAiAANgIcIAIgATYCGCACQQhqIgEgAigCHCIAIAIoAhhBMGoQESAAQTBqIAEQPxogACACKAIYEOkGIAJBIGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQ6gYhACACQRBqJAAgAAuEAgEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAACfyMAQRBrIgEgAigCCCIANgIMIAEoAgwLAn8jAEEQayIBIABBEGo2AgwgASgCDAsCfyMAQRBrIgEgAEEgajYCDCABKAIMCwJ/IwBBEGsiASAANgIMIAEoAgxBBGoLAn8jAEEQayIBIABBEGo2AgwgASgCDEEEagsCfyMAQRBrIgEgAEEgajYCDCABKAIMQQRqCwJ/IwBBEGsiASAANgIMIAEoAgxBCGoLAn8jAEEQayIBIABBEGo2AgwgASgCDEEIagsCfyMAQRBrIgEgAEEgajYCDCABKAIMQQhqCxCEAiACQRBqJAALXQEBfyMAQdAAayIBJAAgASAANgJMAkBB0NcBLQAAQQFxDQBB0NcBEBBFDQBBkNcBEJsBQdDXARAPCyABQQhqIgAgASgCTBCVA0GQ1wEgABBzIAFB0ABqJABBkNcBC34BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCACKAIIQRBqIAIoAghBIGoQCSAAQRBqIAIoAghBBGogAigCCEEUaiACKAIIQSRqEAkgAEEgaiACKAIIQQhqIAIoAghBGGogAigCCEEoahAJIAJBEGokAAtQAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCIAIAIoAggQ7gYgAEEwaiACKAIIQTBqIAIoAghBNGogAigCCEE4ahAJIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEO8GIAJBEGokAAszAQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMIQAgAUEQaiQAIAALLQEBfyMAQRBrIgIkACACIAE2AgwgAigCDCEBIAAQLxogASAAECYgAkEQaiQAC2sBAX8jAEEgayIBJAAgASAANgIcAkBBjNcBLQAAQQFxDQBBjNcBEBBFDQBB/NYBEC8aQYzXARAPCyABQQhqIgAgASgCHBDyBkH81gEgACkCADcCAEGE1wEgACkCCDcCACABQSBqJABB/NYBCy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQlgMgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQ9AYgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQjAIgAkEQaiQAC64BAQF/IwBBMGsiASQAIAEgADYCLCABKAIsIQAgAUMAAIA/OAIoIAFDAAAAADgCJCABQwAAAAA4AiAgAUMAAAAAOAIcIAFDAACAPzgCGCABQwAAAAA4AhQgAUMAAAAAOAIQIAFDAAAAADgCDCABQwAAgD84AgggACABQShqIAFBJGogAUEgaiABQRxqIAFBGGogAUEUaiABQRBqIAFBDGogAUEIahCiASABQTBqJAALIwEBfyMAQRBrIgEkACABIAA2AgwgASgCDBCeAiABQRBqJAALYAEDfyMAQRBrIgIkACACIAA2AgggAiABNgIEIAIgAigCCCIANgIMIABBMGohAyAAIQEDQCMAQRBrIAE2AgwgAUEQaiIEIQEgAyAERw0ACyAAIAIoAgQQlgMgAkEQaiQAC1EBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCDCIAIAMoAggQ+QYgACADKAIEIgEpAgA3AjAgACABKQIINwI4IANBEGokAAs4AQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AghBwAAQEiIAIAIoAgwgAigCCBD6BiACQRBqJAAgAAsQAQF/QcAAEBIiABCbASAAC1ABAX8jAEEQayIEJAAgBCAANgIMIAQgATYCCCAEIAI2AgQgBCADNgIAQeAAEA0iACAEKAIMIAQoAgggBCgCBCAEKAIAEN4OIARBEGokACAAC3gBAX8jAEEgayIBJAAgASAANgIcAkBB+NYBLQAAQQFxDQBB+NYBEBBFDQAjAEEQa0Ho1gE2AgxB+NYBEA8LIAFBCGogASgCHCIAIAAoAgAoAkwRAgBB6NYBIAEpAgg3AgBB8NYBIAEpAhA3AgAgAUEgaiQAQejWAQs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMQcQCaiEAIAFBEGokACAACzcBAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgxB4AJqIQAgAUEQaiQAIAALLwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwgAigCCBCkDyACQRBqJAALRwEBfyMAQRBrIgQkACAEIAA2AgwgBCABNgIIIAQgAjsBBiAEIAM7AQQgBCgCDCAEKAIIIAQuAQYgBC4BBBClDyAEQRBqJAALVwEBfyMAQSBrIgUkACAFIAA2AhwgBSABNgIYIAUgAjYCFCAFIAM2AhAgBSAENgIMQcwDEA0iACAFKAIcIAUoAhggBSgCFCAFKAIMEKkPIAVBIGokACAACzQCAX8BfSMAQRBrIgEkACABIAA2AgwgASgCDCIAIAAoAgAoAiQRAQCyIQIgAUEQaiQAIAILOAEBfyMAQRBrIgIkACACIAA2AgwgAiABOAIIQdQAEA0iACACKAIMIAIqAggQ9AsgAkEQaiQAIAALRQECfyMAQRBrIgEkACABIAA2AgwgASgCDCIAAn8jAEEQayICIAA2AgwgAigCDCgCBAsQ+QIgABBQIAAQvQEgAUEQaiQACyMBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQhgcgAUEQaiQACy4BAX8jAEEQayIBJAAgASAANgIMIAEoAgwiAARAIAAQhwcgABAOCyABQRBqJAALVAEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgghASMAQRBrIgAgAigCDDYCDCAAIAE2AgggACgCDCgCDCAAKAIIQSRsaiEAIAJBEGokACAACzwBAX8jAEEQayICJAAgAiAANgIMIAIgAToACyACKAIMIgAgAi0AC0EBcSAAKAIAKAI0EQIAIAJBEGokAAs0AQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAgACgCACgCMBEBAEEBcSEAIAFBEGokACAAC1MBAX8jAEEQayICJAAgAiAANgIMIAIgAToACyACLQALQQFxIQEjAEEQayIAIAIoAgw2AgwgACABOgALIAAoAgwgAC0AC0EBcToAqgEgAkEQaiQACyMBAX8jAEEQayIBJAAgASAANgIMIAFBEGokACABKAIMKAIICyMBAX8jAEEQayIBJAAgASAANgIMIAFBEGokACABKAIMKgIkCzwBAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIgAgAioCCCIBOAIkIAAgARAdOAIoIAJBEGokAAsjAQF/IwBBEGsiASQAIAEgADYCDCABQRBqJAAgASgCDCoCLAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIOAIsIAJBEGokAAstAQF/IwBBEGsiASQAIAEgADYCDCABKAIMIgAgACgCACgCLBEAACABQRBqJAALNAEBfyMAQRBrIgEkACABIAA2AgwgASgCDCIAIAAoAgAoAigRAQBBAXEhACABQRBqJAAgAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIOAIgIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIOAIcIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAigCDCACKgIIOAIYIAJBEGokAAtFAQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACOAIEIAMoAgwiACADKAIIIAMqAgQgACgCACgCJBELACADQRBqJAALOQEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIAAoAgAoAiARAgAgAkEQaiQACzkBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAgAigCCCAAKAIAKAIcEQIAIAJBEGokAAtFAQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACOAIEIAMoAgwiACADKAIIIAMqAgQgACgCACgCFBELACADQRBqJAALTQEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCEAIAIoAghBAEgEQCACQQA2AggLIAIoAghBAkoEQCACQQI2AggLIAAgAigCCDYCsAELLwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwgAigCCBCbByACQRBqJAALUAEBfyMAQRBrIgQkACAEIAA2AgwgBCABNgIIIAQgAjgCBCAEIAM2AgBBuAEQDSIAIAQoAgwgBCgCCCAEKgIEIAQoAgAQ0AQgBEEQaiQAIAALRgEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjgCBEG4ARANIgAgAygCDCADKAIIIAMqAgRBARDQBCADQRBqJAAgAAs/AQJ/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDCICNgIMIAAoAgxB0Aw2AgAgAkHsCzYCACABQRBqJAALDwEBf0EEEBIiABCfByAACyQBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgCWAsYAQF/IwBBEGsiASAANgIMIAEoAgwqAlgLNQEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAIoAggiASkCADcCSCAAIAEpAgg3AlALOAEBfyMAQRBrIgEkACABIAA2AgwgASgCDCIAQZABahA5IABB/ABqEDkgAEHoAGoQOSABQRBqJAALLgEBfyMAQRBrIgEkACABIAA2AgwgASgCDCIABEAgABCkByAAEA4LIAFBEGokAAskAQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIAIoAgg2AmQLGAEBfyMAQRBrIgEgADYCDCABKAIMKAJkCyQBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwgAigCCDYCYAsYAQF/IwBBEGsiASAANgIMIAEoAgwoAmALJAEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCACKAIINgJcCxgBAX8jAEEQayIBIAA2AgwgASgCDCgCXAskAQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMIAIoAgg2AlQLJAEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOAJQCxgBAX8jAEEQayIBIAA2AgwgASgCDCoCUAskAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AiwLGAEBfyMAQRBrIgEgADYCDCABKAIMKgIsC3gBAX8jAEHwAGsiAiQAIAIgADYCbCACIAE2AmggAigCbCEAIwBBEGsiASACKAJoNgIMIAIgASgCDCgCBDYCZCACKAJkIQEgAkEAQeAAEAsaIAIQqAMgACABIAIQvwUgAigCaCACKAJkIAAoAgwQ+AIgAkHwAGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIELEHIAJBEGokAAszAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDEGUBmogAigCCBCyByACQRBqJAALGQEBfyMAQRBrIgEgADYCDCABKAIMQZQGagsyAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDEHkBmogAigCCBB1IAJBEGokAAsZAQF/IwBBEGsiASAANgIMIAEoAgxB5AZqC30BAn8jAEGAAWsiAiQAIAIgADYCfCACIAE2AnggAigCfCEAIwBBEGsiASACKAJ4NgIMIAIgASgCDCgCBDYCdCACKAJ0IQMgAkEIaiIBQQBB6AAQCxogARDFBSAAIAMgARDEBSACKAJ4IAIoAnQgACgCDBD2AiACQYABaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQtwcgAkEQaiQACzMBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQcQFaiACKAIIELgHIAJBEGokAAsZAQF/IwBBEGsiASAANgIMIAEoAgxBxAVqC2cBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIgAgAigCCEHoABAVGiAAQegAaiACKAIIQegAahB1IABB/ABqIAIoAghB/ABqEHUgAEGQAWogAigCCEGQAWoQdSACQRBqJAALMwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgxBoAJqIAIoAggQuwcgAkEQaiQACxkBAX8jAEEQayIBIAA2AgwgASgCDEGgAmoLVwEBfyMAQRBrIgEkACABIAA2AggCQAJ/IwBBEGsiACABKAIINgIMIAAoAgwoAuwBQQhGCwRAIAEgASgCCDYCDAwBCyABQQA2AgwLIAFBEGokACABKAIMCy4BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIIEL4HIQAgAkEQaiQAIAALPwEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBBCPBSEAIANBEGokACAACz8BAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCDCADKAIIIAMoAgQQ7AIhACADQRBqJAAgAAs3AQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIQYDAABDsAiEAIAJBEGokACAACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQkAUgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQkQUgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQkgUgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQ/gEgAkEQaiQAC2QBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI4AgQgAygCDCIAKALQBSADKAIIQegAbGpDAACAPyADKgIEIgKVQwAAAAAgAkMAAAAAXhs4AlggAEEBOgCcByADQRBqJAALPgEBfyMAQRBrIgMkACADIAA2AgwgAyABOAIIIAMgAjoAByADKAIMIAMqAgggAy0AB0EBcRCVBSADQRBqJAALKQIBfwF9IwBBEGsiASQAIAEgADYCDCABKAIMEJYFIQIgAUEQaiQAIAILOwEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBBDuAiADQRBqJAALOwEBfyMA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AgAoAhQRCAAgAkEQaiQACyoBAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMEPwNIAJBEGokAAtMAQF/IwBBEGsiAiQAIAIgADYCDCACIAE4AgggAioCCCEBIwBBEGsiACACKAIMNgIMIAAgATgCCCAAKAIMIAAqAgg4AmggAkEQaiQACz4BAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI6AAcgAygCDCADKAIIIAMtAAdBAXEQrwEgA0EQaiQACzEBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAghBARCvASACQRBqJAALOQEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAJBEGokACACKAIMKAKQASACKAIIQZwCbGoqAugBCyMBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQ/g0gAUEQaiQACzkBAX8jAEEQayICJAAgAiAANgIMIAIgATgCCCACKAIMIgAgAioCCCAAKAIAKAIQEQgAIAJBEGokAAs1AgF/AX0jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQ0gQhAyACQRBqJAAgAwsmAQF/IwBBEGsiASQAIAEgADYCDCABQRBqJAAgASgCDCgCdEEEags4AgF/AX0jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAnAhAiABQRBqJAAgAgtRAQF/IwBBEGsiBCQAIAQgADYCDCAEIAE2AgggBCACNgIEIAQgAzYCACAEKAIMIgAgBCgCCCAEKAIEIAQoAgAgACgCACgCGBEEACAEQRBqJAALRQEBfyMAQRBrIgMkACADIAA2AgwgAyABOAIIIAMgAjYCBCADKAIMKAKQASADKAIEQZwCbGogAyoCCDgCgAIgA0EQaiQACzUBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACQRBqJAAgAigCDCgCkAEgAigCCEGcAmxqCzYBAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwoAnQhACABQRBqJAAgAAs6AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDEGEAWo2AgwgACgCDCgCBCEAIAFBEGokACAACycBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQ/gch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CygBAX8jAEEQayICIAA2AgwgAiABOgALIAIoAgwgAi0AC0EBcToAhAILHAEBfyMAQRBrIgEgADYCDCABKAIMLQCEAkEBcQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4ApQCCxkBAX8jAEEQayIBIAA2AgwgASgCDCoClAILJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOALQAQsZAQF/IwBBEGsiASAANgIMIAEoAgwqAtABCyUBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgC+AELGQEBfyMAQRBrIgEgADYCDCABKAIMKgL4AQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AugBCyUBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgC4AELJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOALcAQs2AQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIgAgACgChAJBAWo2AoQCIAAgAioCCDgC4AELGQEBfyMAQRBrIgEgADYCDCABKAIMKgLcAQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AtQBCxkBAX8jAEEQayIBIAA2AgwgASgCDCoC1AELJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOALMAQsZAQF/IwBBEGsiASAANgIMIAEoAgwqAswBCyUBAX8jAEEQayICIAA2AgwgAiABOAIIIAIoAgwgAioCCDgC9AELGQEBfyMAQRBrIgEgADYCDCABKAIMKgL0AQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AvwBCxkBAX8jAEEQayIBIAA2AgwgASgCDCoC/AELJQEBfyMAQRBrIgIgADYCDCACIAE4AgggAigCDCACKgIIOALkAQslAQF/IwBBEGsiAiAANgIMIAIgATgCCCACKAIMIAIqAgg4AtgBCxkBAX8jAEEQayIBIAA2AgwgASgCDCoC2AELNgEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAggQhQ4gA0EQaiQACyQBAX8jAEEQayIBJAAgASAANgIMIAFBEGokACAB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IwBBEGsiACABKAIMNgIMIAAoAgxBoARqIQAgAUEQaiQAIAALUgEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwiACACKAIINgLgAyAAKALgAwRAIAIoAggiASAAQQRqIAEoAgAoAggRAgALIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEJwJIAJBEGokAAs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMKALgAyEAIAFBEGokACAAC0YBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACAAKAKEAkEBajYChAIgACACKAIIIgEpAgA3AsgCIAAgASkCCDcC0AILLwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwgAigCCBCfCSACQRBqJAALRgEBfyMAQRBrIgIgADYCDCACIAE2AgggAigCDCIAIAAoAoQCQQFqNgKEAiAAIAIoAggiASkCADcCuAIgACABKQIINwLAAgsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEKEJIAJBEGokAAs3AQF/IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMQcgCaiEAIAFBEGokACAACzcBAX8jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgxBuAJqIQAgAUEQaiQAIAALIwEBfyMAQRBrIgEkACABIAA2AgwgASgCDBDeAiABQRBqJAALLwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwgAigCCBC0AyACQRBqJAALOgEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBBArIANBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIELUDIAJBEGokAAthAQN/IwBBEGsiASQAIAEgADYCDEEAIQACfyMAQRBrIgIgASgCDCIDNgIMIAIoAgwoAtgBQQJHCwRAIwBBEGsiACADNgIMIAAoAgwoAtgBQQVHIQALIAFBEGokACAAQQFxC2gBAn8jAEEwayICJAAgAiAANgIsIAIgATYCKCACQQhqIgECfyMAQRBrIgMgAigCLCIAQQRqNgIMIAMoAgwLIAIoAigQESACQRhqIgMgASAAQdwCahBRIABBnANqIAMQPxogAkEwaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQqgkgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQtgMgAkEQaiQAC2MBAX8jAEEwayIDJAAgAyAANgIsIAMgATYCKCADIAI2AiQgAygCLCIAIAMoAigQtgMgAygCJCEBIAMgAygCKCAAQdwCahBRIANBEGoiAiABIAMQsAEgACACELcDIANBMGokAAs7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACNgIEIAMoAgwgAygCCCADKAIEEK0JIANBEGokAAtoAQJ/IwBBMGsiAiQAIAIgADYCLCACIAE2AiggAkEIaiIBAn8jAEEQayIDIAIoAiwiAEEEajYCDCADKAIMCyACKAIoEBEgAkEYaiIDIAEgAEGgBGoQUSAAQawDaiADED8aIAJBMGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIEK8JIAJBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIELcDIAJBEGokAAttAQF/IwBBIGsiAiQAIAIgADYCHCACIAE2AhggAigCHCIAIAIoAhgiASkCADcC3AIgACABKQIINwLkAiACQQhqIgEgAEHcAmogAEHYAmoQISAAIAEpAgA3ArAEIAAgASkCCDcCuAQgAkEgaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQsgkgAkEQaiQACxkBAX8jAEEQayIBIAA2AgwgASgCDEHcAmoLNwEBfyMAQRBrIgEkACABIAA2AgwjAEEQayIAIAEoAgw2AgwgACgCDEHcAmohACABQRBqJAAgAAs7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE4AgggAyACNgIEIAMoAgwgAyoCCCADKAIEEN0CIANBEGokAAs7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE4AgggAyACOAIEIAMoAgwgAyoCCCADKgIEEI4PIANBEGokAAs5AgF/AX0jAEEQayIBJAAgASAANgIMIwBBEGsiACABKAIMNgIMIAAoAgwqAsADIQIgAUEQaiQAIAILOQIBfwF9IwBBEGsiASQAIAEgADYCDCMAQRBrIgAgASgCDDYCDCAAKAIMKgK8AyECIAFBEGokACACCzkBAX8jAEEQayIDIAA2AgwgAyABOAIIIAMgAjgCBCADKAIMIgAgAyoCCDgC2AMgACADKgIEOALcAws7AQF/IwBBEGsiAyQAIAMgADYCDCADIAE4AgggAyACOAIEIAMoAgwgAyoCCCADKgIEELoJIANBEGokAAsvAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIENwCIAJBEGokAAssAQF/IwBBEGsiASQAIAEgADYCDEHoBBANIgAgASgCDBCPDyABQRBqJAAgAAs9AQN/QQwQEiIBIQAjAEEQayICIAA2AgwgAigCDCIAQ5qZmT44AgAgAEMAAIA/OAIEIABDAAAAADgCCCABCzUBA39BIBANIgIiACIBQiM3AgQgAUEANgIMIAFBoJsBNgIAIABBGzYCBCAAQYSPATYCACACC1EBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCMAQRBrIgEgAigCDCIANgIMIAEoAgxBzAo2AgAgAEH4xgA2AgAgACACKAIINgIEIAJBEGokAAsrAQF/IwBBEGsiASQAIAEgADYCDEEIEBIiACABKAIMEMAJIAFBEGokACAAC3EBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIQAjAEEQayIBIAIoAgg2AgwgAiABKAIMKAIENgIEIAIoAgQhASACQwAAAAA4AgAgACABIAIQzAUgAigCCCACKAIEIAAoAgwQhAMgAkEQaiQACy8BAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMIAIoAggQwgkgAkEQaiQACzMBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQfAAaiACKAIIEMMJIAJBEGokAAsZAQF/IwBBEGsiASAANgIMIAEoAgxB8ABqCzMBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQdwAaiACKAIIEJkCIAJBEGokAAtxAQF/IwBBIGsiAiQAIAIgADYCHCACIAE2AhggAigCHCEAIwBBEGsiASACKAIYNgIMIAIgASgC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ABAuBEAgASACIAMQowIPCyAAKAIMIQQgAEEQaiIFIAEgAiADENYDAkAgBEECSA0AIAUgBEEDdGohBCAAQRhqIQADQCAAIAEgAiADENYDIAEtADYNASAAQQhqIgAgBEkNAAsLCzIAIAAgASgCCEEAEC4EQCABIAIgAxCjAg8LIAAoAggiACABIAIgAyAAKAIAKAIcEQQACxkAIAAgASgCCEEAEC4EQCABIAIgAxCjAgsLqwIBBH8jAEFAaiIBJAAgACgCACICQXxqKAIAIQMgAkF4aigCACEEIAFBADYCFCABQdzPATYCECABIAA2AgwgAUGM0AE2AghBACECIAFBGGpBAEEnEAsaIAAgBGohAAJAIANBjNABQQAQLgRAIAFBATYCOCADIAFBCGogACAAQQFBACADKAIAKAIUEQwAIABBACABKAIgQQFGGyECDAELIAMgAUEIaiAAQQFBACADKAIAKAIYEQkAIAEoAiwiAEEBSw0AIABBAWsEQCABKAIcQQAgASgCKEEBRhtBACABKAIkQQFGG0EAIAEoAjBBAUYbIQIMAQsgASgCIEEBRwRAIAEoAjANASABKAIkQQFHDQEgASgCKEEBRw0BCyABKAIYIQILIAFBQGskACACC54BAQF/IwBBQGoiAyQAAn9BASAAIAFBABAuDQAaQQAgAUUNABpBACABEJ0KIgFFDQAaIANBfzYCFCADIAA2AhAgA0EANgIMIAMgATYCCCADQRhqQQBBJxALGiADQQE2AjggASADQQhqIAIoAgBBASABKAIAKAIcEQQAQQAgAygCIEEBRw0AGiACIAMoAhg2AgBBAQshACADQUBrJAAgAAtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawsKAEGCzwEQ1wMACzIBAX8jAEEQayIBJAAgASAAKAIENgIIIAEoAghBAToAACAAKAIIQQE6AAAgAUEQaiQACzUBAn8CQCAAKAIIIgAtAAAiAkEBRwR/IAJBAnENASAAQQI6AABBAQVBAAsPC0HMzgEQ1wMACzgBAn8jAEEQayIBJAACfyABIAAoAgQ2AgggASgCCC0AAEEBRwsEQCAAEKIKIQILIAFBEGokACACC0IBAX8jAEEQayID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gIB4CzYCACADQQFqIQMMAQsgE6pBgICAgHggE5lEAAAAAAAA4EFjGyECIAYhCAsgBUHgA2ogA0ECdGogAjYCAAtEAAAAAAAA8D8gCBDGASETIANBAE4EQCADIQIDQCAFIAJBA3RqIBMgBUHgA2ogAkECdGooAgC3ojkDACATRAAAAAAAAHA+oiETQQAhACACQQBKIQQgAkF/aiECIAQNAAsgAyEEA0AgDCAAIAwgAEkbIQYgAyAEayEIQQAhAkQAAAAAAAAAACETA0AgEyACQQN0QbDNAWorAwAgBSACIARqQQN0aisDAKKgIRMgAiAGRyEHIAJBAWohAiAHDQALIAVBoAFqIAhBA3RqIBM5AwAgBEF/aiEEIAAgA0chAiAAQQFqIQAgAg0ACwtEAAAAAAAAAAAhEyADQQBOBEADQCATIAVBoAFqIANBA3RqKwMAoCETIANBAEohACADQX9qIQMgAA0ACwsgASATmiATIAobOQMAIAVBsARqJAAgCUEHcQsuAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCDCACKAIIECYgAkEQaiQAC9kDAgJ/An4jAEEgayICJAACQCABQv///////////wCDIgVCgICAgICAwP9DfCAFQoCAgICAgMCAvH98VARAIAFCBIYgAEI8iIQhBCAAQv//////////D4MiAEKBgICAgICAgAhaBEAgBEKBgICAgICAgMAAfCEEDAILIARCgICAgICAgIBAfSEEIABCgICAgICAgIAIhUIAUg0BIARCAYMgBHwhBAwBCyAAUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQQMAQtCgICAgICAgPj/ACEEIAVC////////v//DAFYNAEIAIQQgBUIwiKciA0GR9wBJDQAgAkEQaiAAIAFC////////P4NCgICAgICAwACEIgQgA0H/iH9qEKwKIAIgACAEQYH4ACADaxCrCiACKQMIQgSGIAIpAwAiAEI8iIQhBCACKQMQIAIpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIARCAXwhBAwBCyAAQoCAgICAgICACIVCAFINACAEQgGDIAR8IQQLIAJBIGokACAEIAFCgICAgICA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AzgCACAEKAIMIAQqAgggBCoCBCAEKgIAELQKIARBEGokAAv6FQIXfwd+IwBBgAFrIgMkAAJAIAIoAgRFDQAgASgCBEUEQCABIAIpAgA3AgAgASACKQIINwIIDAELIAAgACgCZEF/ajYCZCADQQA2AnwgA0EANgJ4An8gASACIANB/ABqIANB+ABqELsKBEAgAygCfCISKAJcIQ0gAygCeCIPKAJcIQogEigCYCEGIA8oAmAhBCASKAJYIQsgDygCWCEHIANBfzYCXCADIAQgBmsiBTYCWCADIAogDWsiAjYCVCADIAcgC2siCTYCUCASKAIIIQEgA0EANgIgIAWsIhogAqwiH34hHEEAIAlrrCIbIAmsfiAfIB9+fSEdQgAgGiAbfn0hICABBEAgASECA0ACQCACKAIMIgUoAlwgDWusIh4gG35CACAfIAUoAlggC2usIhp+fVINACAcIB5+IBogIH58IB0gBSgCYCAGa6x+fEIBUw0AIAgEQCADQn83A0AgA0IANwM4IAggAiADQdAAaiADQThqEKgCQQFHDQELIAIhCAsgAigCACICIAFHDQALIAMgCDYCIAsgDygCCCEFQQAhASADQQA2AgggBQRAIAUhAgNAAkAgAigCDCIJKAJcIAprrCIeIBt+QgAgHyAJKAJYIAdrrCIafn1SDQAgHCAefiAaICB+fCAdIAkoAmAgBGusfnxCAVMNACABBEAgA0J/NwNAIANCADcDOCABIAIgA0HQAGogA0E4ahCoAkECRw0BCyACIQELIAIoAgAiAiAFRw0ACyADIAE2AggLAkAgASAIckUNACAAIBIgDyADQSBqIANBCGoQ3wMgAygCICIBBEAgAyABKAIMIhI2AnwLIAMoAggiAUUNACADIAEoAgwiDzYCeAsgDygCYEEBaiEVIA8oAlghFiAPKAJcDAELIAMoAngiDygCWEEBaiEWIA8oAmAhFSADKAJ8IRIgDygCXAshFyAPIQIgEiEBQQAhC0EAIQhBASEZQQAhBEEAIQcDQCACKAJgIQYgASgCYCEMIAEoAlwhDSACKAJcIQkgASgCWCEKIAIoAlghBSADQX82AnQgAyAJIA1rIhg2AmwgAyAGIAxrIg42AnAgAyAFIAprIgY2AmggAyAXIA1rIgkgDmwgFSAMayIFIBhsa6wiGzcDUCADIAUgBmwgFiAK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IAIgAygCACgCCBEEACAAKAIEIgAgASAAKAIAKAIYEQIAIARBIGokAAsTACAAIAEgAiABKAIAKAJEEQUACzcBAX8jAEEQayICIAA2AgwgAiABNgIIIAIoAgwiACACKAIIIgEpAgA3AqgFIAAgASkCCDcCsAULBgBBrIgBC10BAn8gACgCOCICBEAgASABIAIgAigCACgCCBEBAEEBIAEoAgAoAhARBwAiAiAAKAI4IgMgAigCCCABIAMoAgAoAgwRBwBB1JqFggUgACgCOCABKAIAKAIUEQkACwtdAQJ/IAAoAjQiAgRAIAEgASACIAIoAgAoAgwRAQBBASABKAIAKAIQEQcAIgIgACgCNCIDIAIoAgggASADKAIAKAIQEQcAQdGE2cIEIAAoAjQgASgCACgCFBEJAAsLsgMBAn8gACABIAIQPRogACgCMCIDIAFBDGogAiADKAIAKAI4EQcAGiABIAAoAgw2AjQCQAJAIAAoAjRFDQAgAiACKAIAKAI0EQEAQQFxDQAgAiAAKAI0IAIoAgAoAhgRAwAiAwRAIAFBADYCLCABIAM2AigMAgsgAiAAKAI0IAIoAgAoAhwRAwAhAyABQQA2AiwgASADNgIoIAIgAiAAKAI0IgMgAygCACgCDBEBAEEBIAIoAgAoAhARBwAiAyAAKAI0IgQgAygCCCACIAQoAgAoAhARBwBB0YTZwgQgACgCNCACKAIAKAIUEQkADAELIAFCADcCKAsCQCAAKAI4RQ0AIAIgAigCACgCNBEBAEECcQ0AIAIgACgCOCACKAIAKAIYEQMAIgMEQCABIAM2AjBBoIQBDwsgASACIAAoAjggAigCACgCHBEDADYCMCACIAIgACgCOCIBIAEoAgAoAggRAQBBASACKAIAKAIQEQcAIgEgACgCOCIDIAEoAgggAiADKAIAKAIMEQcAQdSahYIFIAAoAjggAigCACgCFBEJAEGghAEPCyABQQA2AjBBoIQBC+wBAgF/AX0gACAAKAIAKAIcEQEAIgIqAgAgASoCAJMiAyADlCACKgIEIAEqAgSTIgMgA5SSIAIqAgggASoCCJMiAyADlJJDAAAANF5BAXNFBEAgACABEJMEIAAtAD0EQCAAKAI0IgEgASgCACgCABEBABogACgCNCIBBEBB7PcBQez3ASgCAEEBajYCACABQZDSASgCABEA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AiQ2AiQgAyAEKAIoNgIoIAMgBCgCLDYCLCADIAQoAjA2AjAgAyAEKAI0NgI0IAMgBCgCODYCOCADIAQoAjw2AjwgA0HMAGohAyAGQQFqIgYgASgCEEgNAAsLIAIgB0HU/ABBwaSFygUgBygCCCACKAIAKAIUEQkAC0Ht/AALgQUCBX8GfSMAQZABayICJAAgACgCEEEBTgRAIAJBQGshBANAIAIgBkHQAGwiBSAAKAIYaiIDKQIINwMYIAIgAykCADcDECACIAMpAhg3AiggAiADKQIQNwIgIAIgAykCKDcCOCACIAMpAiA3AjAgBCADKQI4NwIIIAQgAykCMDcCACACIAMoAkAiAyADKAIAKAIcEQEAIgMoAgg2AgggAiADKQIANwMAIAAqAlAhByABKgIEIQggACoCTCEJIAEqAgAhCiACIAIqAgggASoCCJQgACoCVJU4AgggAkEANgIMIAIgCiACKgIAlCAJlTgCACACIAggAioCBJQgB5U4AgQgACgCGCAFaigCQCIDIAIgAygCACgCGBECACAAKgJMIQcgASoCACEIIAAqAlAhCSABKgIEIQogACoCVCELIAEqAgghDCACQQA2AkwgAiAMIAIqAkiUIAuVOAJIIAIgCiACKgJElCAJlTgCRCACIAggAioCQJQgB5U4AkAgACgCGCAFaiIDIAIpAxA3AgAgAyACKQMYNwIIIAMgAikCKDcCGCADIAIpAiA3AhAgAyACKQI4NwIoIAMgAikCMDcCICADIAQpAgg3AjggAyAEKQIANwIwIAAoAkAEQCAAKAIYIAVqKAJAIgMgAkEQaiACQYABaiACQfAAaiADKAIAKAIIEQQAIAIgAikDiAE3A1ggAiACKQOAATcDUCACIAIpA3g3AmggAiACKQNwNwJgIAAoAkAgACgCGCAFaigCTCACQdAAahCkAQsgBkEBaiIGIAAoAhBIDQALCyAAIAEpAgA3AkwgACABKQIINwJUIAAgACgCACgCRBEAACACQZABaiQAC4sCAgF/BH0jAEHgAGsiAyQAIANCADcCLCADQgA3AzggA0GAgID8AzYCNCADQgA3AkwgA0GAgID8AzYCSCADQgA3AlQgA0EANgJcIANCADcCJCADQYCAgPwDNgIgIANCADcDQCAAIANBIGogA0EQaiADIAAoAgAoAggRBAAgAyoCGCEE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Rw0ACwsCQCAAKAKoASICIAZODQAgACgCrAEgBk4NAAJAIAZFBEBBACEBDAELQej3AUHo9wEoAgBBAWo2AgAgBkEDdEEQQYzSASgCABEDACEBIAAoAqgBIQILIAJBAU4EQEEAIQgDQCABIAhBA3QiCWogACgCsAEgCWopAgA3AgAgCEEBaiIIIAJHDQALCyAAKAKwASICBEAgAC0AtAEEQCACBEBB7PcBQez3ASgCAEEBajYCACACQZDSASgCABEAAAsLIABBADYCsAELIAAgATYCsAEgACAGNgKsASAAQQE6ALQBCyAAIAY2AqgBQQAhASAGQQFOBEBBACEIA0AgACgCsAEhCiAFIAhBAnRqIgwoAgAiAigCLCIJBEAgCUIANwIAIAlCADcCOCAJQgA3AjAgCUIANwIoIAlCADcCICAJQgA3AhggCUIANwIQIAlCADcCCCAMKAIAIQILIAogCEEDdGohCQJ/IAItABQEQCACIAkgAigCACgCEBECACAJKAIADAELIAlBADYCACAJQQA2AgRBAAsgAWohASAIQQFqIgggBkcNAAsLAkAgACgCMCICIAFODQAgACgCNCABTg0AAkAgAUUEQEEAIQoMAQtB6PcBQej3ASgCAEEBajYCACABQZgBbEEQQYzSASgCABEDACEKIAAoAjAhAgsgAkEBTgRAQQAhCANAIAogCEGYAWwiCWogACgCOCAJakGYARAVGiAIQQFqIgggAkcNAAsLIAAoAjgiAgRAIAAtADwEQCACBEBB7PcBQez3ASgCAEEBajYCACACQZDSASgCABEAAAsLIABBADYCOAsgACAKNgI4IAAgATYCNCAAQQE6ADwLIAAgATYCMCAGQQFOBEAgACgCsAEhCEEAIQ8DQCAIIBJBA3QiFWoiESgCAARAIAUgEkECdGoiEygCACIQKAIgIQIgACgCOCEBIAAgECgCHCIIIAcqAgwQRiEKIAAgAiAHKgIMEEYhDCAAKAIQIQ0gECgCGCIJIAcoAhQgCUEAShsiFCAAKAK4AUoEQCAAIBQ2ArgBCyAPQZgBbCABaiEOQQAhASARKAIAQQFOBEADQCAOIAFBmAFsakEAQZgBEAsiCUL////7////v/8ANwJ4IAkgDDYClAEgCSAKNgKQASAJQgA3AmAgCSAUNgKIASABQQFqIgEgESgCAEgNAAsLIA0g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IQcgASoCjAIhCCABKgKcAiEJIAEqAqwCIQogASoCiAIhCyAAIAEqAqwDIgMgASoCkAKUIAEqArADIgQgASoCoAKUkiABKgK0AyIFIAEqArAClJIgApQ4AugBIAAgAyAIlCAEIAmUkiAFIAqUkiAClDgC5AEgACALIAOUIAYgBJSSIAcgBZSSIAKUOALgAQwBCyAAQgA3AgQgAEGAgID8AzYCACAAQgA3AiAgAEEANgLwASAAQgA3AoABIABCgICA/IOAgMA/NwJwIABCgICA/IOAgMA/NwJgIABCADcCsAEgAEIANwIMIABCADcCGCAAQYCAgPwDNgIUIABCADcCLCAAQYCAgPwDNgIoIABCADcCNCAAQQA2AjwgAEIANwKIASAAQoCAgPwDNwJ4IABCgICA/AM3AmggAEEANgLoASAAQgA3AuABIABCADcC2AEgAEIANwLQASAAQgA3AsgBIABCADcCwAEgAEIANwK4AQsgAEEANgLsAQspACAAENkEIgAEQEHs9wFB7PcBKAIAQQFqNgIAIABBkNIBKAIAEQAACwv4AwAgACABIAIQZBogASAAKAKoBDYCNCABIAAoAqwENgI4IAEgACgCsAQ2AjwgASAAKAK0BDYCQCABIAAoArgENgJEIAEgACgCvAQ2AkggASAAKALABDYCTCABIAAoAsQENgJQIAEgACgCyAQ2AlQgASAAKALMBDYCWCABIAAoAtAENgJcIAEgACgC1AQ2AmAgASAAKALYBDYCZCABIAAoAtwENgJoIAEgACgC4AQ2AmwgASAAKALkBDYCcCABIAAoAugENgJ0IAEgACgC7AQ2AnggASAAKALwBDYCfCABIAAoAvQENgKAASABIAAoAvgENgKEASABIAAoAvwENgKIASABIAAoAoAFNgKMASABIAAoAoQFNgKQASABIAAoAogFNgKUASABIAAoAowFNgKYASABIAAoApAFNgKcASABIAAoApQFNgKgASABIAAoApgFNgKkASABIAAoApwFNgKoASABIAAoAqAFNgKsASABIAAoAqQFNgKwASABIAAtAOAFNgK4ASABIAAtAOEFNgK8ASABIAAoAqwFNgLEASABIAAoAqgFNgLAASABIAAtAOQFNgK0ASABIABBsAVqIgIQ6gE4AsgBIAEgAhDrATgCzAEgASAAKAK4BTYC0AEgASAA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ByAAKAIgIgAqAogClCAKIAAqApgClJIgCSAAKgKoApSSlCAKIAcgACoCjAKUIAogACoCnAKUkiAJIAAqAqwClJKUkiAJIAcgACoCkAKUIAogACoCoAKUkiAJIAAqArAClJKUkpKVOALQBQsgA0GwAWokAAvQAwAgACABIAIQZBogASAAKAKsAjYCNCABIAAoArACNgI4IAEgACgCtAI2AjwgASAAKAK4AjYCQCABIAAoArwCNgJEIAEgACgCwAI2AkggASAAKALEAjYCTCABIAAoAsgCNgJQIAEgACgCzAI2AlQgASAAKALQAjYCWCABIAAoAtQCNgJcIAEgACgC2AI2AmAgASAAKALcAjYCZCABIAAoAuACNgJoIAEgACgC5AI2AmwgASAAKALoAjYCcCABIAAoAuwCNgJ0IAEgACgC8AI2AnggASAAKAL0AjYCfCABIAAoAvgCNgKAASABIAAoAvwCNgKEASABIAAoAoADNgKIASABIAAoAoQDNgKMASABIAAoAogDNgKQASABIAAoAowDNgKUASABIAAoApADNgKYASABIAAoApQDNgKcASABIAAoApgDNgKgASABIAAoApwDNgKkASABIAAoAqADNgKoASABIAAoAqQDNgKsASABIAAoAqgDNgKwASABIAAoArwDNgK0ASABIAAoAsADNgK4ASABIAAoAsQDNgK8ASABIAAoAqwDNgLAASABIAAoArADNgLEASABIAAoArQDNgLIASABIAAoArgDNgLMAUHowwALBQBB1AELvwEAIAAgASkCADcCrAIgACABKQIINwK0AiAAIAEpAhg3AsQCIAAgASkCEDcCvAIgACABKQIoNwLUAiAAIAEpAiA3AswCIAAgASkCODcC5AIgACABKQIwNwLcAiAAIAIpAgg3AvQCIAAgAikCADcC7AIgACACKQIQNwL8AiAAIAIpAhg3AoQDIAAgAikCIDcCjAMgACACKQIoNwKUAyAAIAIpAjg3AqQDIAAgAikCMDcCnAMgACAAKAIAKAIIEQAAC2YBAX0CQCABQX9qIgFBA0sNAAJAAkAgAUECaw4CAQEACyACQQJNBEAgACoC2AQPCyACQX1qQQJLDQEgACoCsAMPCyACQQJNBEAgACoC1AQPCyACQX1qQQJLDQAgACoC3AQhAwsgAwt/ACABQX9qIgFBA00EQAJA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IAAgAykCCDcCtAIgACAEKQIANwK8AiAAIAQpAgg3AsQCIABBADYC5AIgAEKas+b0g4CAwD83AtwCIABBADoA2AIgAEEANgLMAgvuBgAgACABIAIQZBogASAAKAIwNgI0IAEgACgCNDYCOCABIAAoAjg2AjwgASAAKAI8NgJAIAEgAEFAaygCADYCRCABIAAoAkQ2AkggASAAKAJINgJMIAEgACgCTDYCUCABIAAoAlA2AlQgASAAKAJUNgJYIAEgACgCWDYCXCABIAAoAlw2AmAgASAAKAJgNgJkIAEgACgCZDYCaCABIAAoAmg2AmwgASAAKAJsNgJwIAEgACgCcDYCdCABIAAoAnQ2AnggASAAKAJ4NgJ8IAEgACgCfDYCgAEgASAAKAKAATYChAEgASAAKAKEATYCiAEgASAAKAKIATYCjAEgASAAKAKMATYCkAEgASAAKAKQATYClAEgASAAKAKUATYCmAEgASAAKAKYATYCnAEgASAAKAKcATYCoAEgASAAKAKgATYCpAEgASAAKAKkATYCqAEgASAAKAKoATYCrAEgASAAKAKsATYCsAEgASAAKALkBjYC5AEgASAAKALoBjYC1AEgASAAKAKoBTYCxAEgASAAKAK4BTYCtAEgASAAKAKkBzYC6AEgASAAKAKoBzYC2AEgASAAKAKsBTYCyAEgASAAKAK8BTYCuAEgASAAKALkBzYC7AEgASAAKALoBzYC3AEgASAAKAKwBTYCzAEgASAAKALABTYCvAEgASAALQCUCjYC9AEgASAALQCVCjYC+AEgASAAKAKkCjYClAIgASAAKALUCjYCxAIgASAALQCdCjYC/AEgASAAKAK8CjYCrAIgASAAQagKaigCADYCmAIgASAAQdgKaigCADYCyAIgASAAQZ4Kai0AADYCgAIgASAAQcAKaigCADYCsAIgASAAQawKaigCADYCnAIgASAAQdwKaigCADYCzAIgASAAQZ8Kai0AADYChAIgASAAQcQKaigCADYCtAIgASAAQbAKaigCADYCoAIgASAAQeAKaigCADYC0AIgASAAQaAKai0AADYCiAIgASAAQcgKaigCADYCuAIgASAAQbQKaigCADYCpAIgASAAQeQKaigCADYC1AIgASAAQaEKai0AADYCjAIgASAAQcwKaigCADYCvAIgASAAQbgKaigC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CmogAEGsCWopAgA3AgALMwEBfyAAIAFqIgNBnQpqIAI6AAAgAUECTARAIAMgAjoAlAYPCyABQQZ0IABqIAI6ANAFC6oBACAAIAEgAiADEOYEIABBnQpqQQA2AAAgAEEJNgIEIABBhD82AgAgAEGhCmpBADsAACAAQaQKakIANwIAIABBrApqQgA3AgAgAEG0CmpCADcCACAAQbwKakIANwIAIABBxApqQgA3AgAgAEHMCmpCADcCACAAQeQKakKAgID8g4CAwD83AgAgAEHcCmpCgICA/IOAgMA/NwIAIABCgICA/IOAgMA/NwLUCguuAQAgACABIAIgAyAEIAUQ5wQgAEGdCmpBADYAACAAQQk2AgQgAEGEPzYCACAAQaEKakEAOwAAIABBpApqQgA3AgAgAEGsCmpCADcCACAAQbQKakIANwIAIABBvApqQgA3AgAgAEHECmpCADcCACAAQcwKakIANwIAIABB5ApqQoCAgPyDgIDAPzcCACAAQdwKakKAgID8g4CAwD83AgAgAEKAgID8g4CAwD83AtQKC5IEACAAIAEgAhBkGiABIAAoAjA2AjQgASAAKAI0NgI4IAEgACgCODYCPCABIAAoAjw2AkAgASAAQUBrKAIANgJEIAEgACgCRDYCSCABIAAoAkg2AkwgASAAKAJMNgJQIAEgACgCUDYCVCABIAAoAlQ2AlggASAAKAJYNgJcIAEgACgCXDYCYCABIAAoAmA2AmQgASAAKAJkNgJoIAEgACgCaDYCbCABIAAoAmw2AnAgASAAKAJwNgJ0IAEgACgCdDYCeCABIAAoAng2AnwgASAAKAJ8NgKAASABIAAoAoABNgKEASABIAAoAoQBNgKIASABIAAoAogBNgKMASABIAAoAowBNgKQASABIAAoApABNgKUASABIAAoApQBNgKYASABIAAoApgBNgKcASABIAAoApwBNgKgASABIAAoAqABNgKkASABIAAoAqQBNgKoASABIAAoAqgBNgKsASABIAAoAqwBNgKwASABIAAoAuQGNgLkASABIAAoAugGNgLUASABIAAoAqgFNgLEASABIAAoArgFNgK0ASABIAAoAqQHNgLoASABIAAoAqgHNgLYASABIAAoAqwFNgLIASABIAAoArwFNgK4ASABIAAoAuQHNgLsASABIAAoAugHNgLcASABIAAoArAFNgLMASABIAAoAsAFNgK8ASABIAAtAJQKNgL0ASABIAAtAJUKNgL4AUHgPgsFAEH8AQuxAQEBfSACQQJNBEAgAUF+aiIBQQJLBEBDAAAAAA8LAkACQAJAIAFBAWsOAgIBAAsgACACQQJ0aioC9AUPCyAAIAJBAnRqKgKEBg8LIAAgAkECdGoqAuQFDwsCQCACQX1qIgJBAksNACABQX5qIgFBAksNAAJAAkACQCABQQFrDgICAQALIAAgAkEGdGoqAoQHDwsgACACQQZ0aioCiAcPCyAAIAJBBnRqKgKAByEDCyADC5ICAQF/AkACQAJAIANBAk0EQCABQX5qIgFBAksNAQJAAkACQCABQQFrDgICAQALIAAgA0ECdGogAjgC9AUMBAsgACADQQJ0aiACOAKEBgwECyAAIANBAnRqIAI4AuQFIAAgACgCmApBASADQQNsdHI2ApgKDwsgA0F9aiIEQQJLDQAgAUF+aiIBQQJLDQACQAJAAkAgAUEBaw4CAgEACyAAIARBBnRqIAI4AoQHDAMLIAAgBEEGdGogAjgCiAcMAwsgACAEQQZ0aiACOAKAByAAIAAoApgKQQEgA0EDbHRyNgKYCgsPCyAAIAAoApgKQQQgA0EDbHRyNgKYCg8LIAAgACgCmApBAiADQQNsdHI2ApgKC6gBAQJ9QwAAgD8hASAAKAIgKgLYAiICQwAAAABcBEAgACgCHCoC2AIiASABIAKSlSEBCyAAQZAKakEANgIAIABBjApqIAEgAEHgCGoqAgCUQwAAgD8gAZMiAiAAQaAJaioCAJSSOAIAIABBiApqIAEgAEHcCGoqAgCUIAIgAEGcCWoqAgCUkjgCACAAIAEgAEHYCGoqAgCUIAIgAEGYCWoqAgCUkjgChAoLqQIBAn8CQCAALQCcCgRAIAFCADcCAAwBCyAAIAAoAhxBBGogACgCIEEEahCyASABQoCAgIDgADcCAAJ/AkAgACgC2AYNACAALQCUBg0AQQYhAkEADAELIAFCgYCAgNAANwIAQQUhAkEBCyEDQQAgACgC3AZFIAAtAJUGG0UEQCABIAJBf2oiAjYCBCABIANBAWoiAzYCAAtBACAAKALgBkUgAC0AlgYbRQRAIAEgAkF/ajYCBCABIANBAWo2AgALIABBABB/BEAgASABKAIAQQFqNgIAIAEgASgCBEF/ajYCBAsgAEEBEH8EQCABIAEoAgBBAWo2AgAgASABKAIEQX9qNgIECyAAQQIQf0UNACABIAEoAgBBAWo2AgAgASABKAIEQX9qNgIECwvLBQEEfyMAQTBrIgEkAAJAIAAtAJwKRQ0AIABBoAhqQQA2AgAgAEEANgLgByAAQQA2AqAHIABCADcCyAUgAEIANwLQBSAAIAAoAhxBBGogACgCIEEEahCyASAAIAAoAgAoAiwRAAAgASAAQYwKaiICKQIANwMoIAEgACkChAo3AyAgASACKQIANwMYIAEgACkChAo3AxAgACoCuAUgACoCqAVgQQFzRQRAIABBqAhqIABB6AhqIAAtAJQKIgIbKAIAIQMgAEG4CGogAEH4CGogAhsoAgAhBCAAQcgIaiAAQYgJaiACGygCACECIAFBADYCDCABIAI2AgggASAENgIEIAEgAzYCACAAIABBsAFqIAEgAUEgaiABQRBqENkCCyAAKgK8BSAAKgKsBWBBAXNFBEAgAEGsCGogAEHsCGogAC0AlAoiAhsoAgAhAyAAQbwIaiAAQfwIaiACGygCACEEIABBzAhqIABBjAlqIAIbKAIAIQIgAUEANgIMIAEgAjYCCCABIAQ2AgQgASADNgIAIAAgAEGEAmogASABQSBqIAFBEGoQ2QILIAAqAsAFIAAqArAFYEEBc0UEQCAAQbAIaiAAQfAIaiAALQCUCiICGygCACEDIABBwAhqIABBgAlqIAIbKAIAIQQgAEHQCGogAEGQCWogAhsoAgAhAiABQQA2AgwgASACNgIIIAEgBDYCBCABIAM2AgAgACAAQdgCaiABIAFBIGogAUEQahDZAgsgAEEAEH8EQCABIABBwAlqKQIANwMIIAEgACkCuAk3AwAgACAAQawDaiABENgCCyAAQQEQfwRAIAEgAEHQCWopAgA3AwggASAAQcgJaikCADcDACAAIABBgARqIAEQ2AILIABBAhB/RQ0AIAEgAEHgCWopAgA3AwggASAAQdgJaikCADcDACAAIABB1ARqIAEQ2AILIAFBMGokAAu5BQEQfSAAQfQJakEANgIAIABB8AlqIABBoAlqKgIAIABB4AhqKgIAkyIMIABBvAhqKgIAIgYgACoCqAgiApQgAEG4CGoqAgAiByAAQawIaioCACIDlJNDAACAPyAGIABB0AhqKgIAIgiU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CGogACgC8AEgCGooAgA2AgAgBUEBaiIFIARHDQALCyAAKALwASIFBEAgAC0A9AEEQCAFBEBB7PcBQez3ASgCAEEBajYCACAFQZDSASgCABEAAAsgACgC6AEhBAsgAEEANgLwAQsgACAHNgLwASAAIAY2AuwBIABBAToA9AELIAAoAvABIARBAnRqIAE2AgAgACAEQQFqNgLoAQwBCyABKALYAUF+cUEERwRAIAFBAjYC2AELCyAAIAEgAiADIAAoAgAoAiQRBAALC4MDAQV/AkAgAS0AzAFBA3ENACABLQD4A0EBcQ0AIAEgAEH4AWoQ8AELIAEoAsABBEACQCABLQDMAUEBcUUEQAJAIAAoAugBIgIgACgC7AFHDQAgAiACQQF0QQEgAhsiBE4NAAJ/IAQEQEHo9wFB6PcBKAIAQQFqNgIAIARBAnRBEEGM0gEoAgARAwAhBSAAKALoASECCyACQQFOCwRAA0AgBSADQQJ0IgZqIAAoAvABIAZqKAIANgIAIANBAWoiAyACRw0ACwsgACgC8AEiAwRAIAAtAPQBBEAgAwRAQez3AUHs9wEoAgBBAWo2AgAgA0GQ0gEoAgARAAALIAAoAugBIQILIABBADYC8AELIAAgBTYC8AEgACAENgLsASAAQQE6APQBCyAAKALwASACQQJ0aiABNgIAIAAgAkEBajYC6AEMAQsgASgC2AFBfnFBBEcEQCABQQI2AtgBCwsgACABQQJBASABKALMAUEDcSIBG0F9QX8gARsgACgCACgCJBEEAAsLewEEfwJAIAAoAugBIgNBAUgNACAAKALwASEEA0AgASAEIAJBAnRqIgUoAgBHBEAgAkEBaiICIANHDQEMAgsLIAIgA04NACAFIAQgA0F/aiICQQJ0IgNqKAIANgIAIAAoAvABIANqIAE2AgAgACACNgLoAQsgACABEKkBCw0AIAAgASACIAMQwgILGAAgACABKQL4ATcCACAAIAEpAoACNwIIC0MBAX8jAEEQayIEJAAgBCAANgIMIAQgATgCCCAEIAI4AgQgBCADOAIAIAQoAgwgBEEIaiAEQQRqIAQQCSAEQRBqJAALgAEBBH8gACABKQIANwL4ASAAIAEpAgg3AoACIAAoAugBIgNBAU4EQANAAkACQCAAKALwASACQQJ0aigCACIEKALYAUF+aiIFQQNLDQAg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DCARIBiUIA0gGpSSIBAgG5SSIRggESAclCANICCUkiAQICGUkiEPICIgEZQgIyANlJIgJCAQlJIhDiASIBSUCyERIAMqAjQhDSADKgI4IRAgAyoCPCESIAJBADYCrAEgAkEANgKcASACIB44ApgBIAIgEzgClAEgAiAKOAKQASACQQA2AowBIAIgJTgCiAEgAiALOAKEASACIAw4AoABIAJBADYCfCACIBg4AnggAiAPOAJ0IAIgDjgCcCACIBIgFyARkpI4AqgBIAIgGSAQkjgCpAEgAiANIB2SOAKgASACIAQpAgg3A1ggAiAEKQIANwNQIAJBADYCTCACIAo4AkggAiAMOAJEIAIgDjgCQCACQQA2AjwgAiATOAI4IAIgCzgCNCACIA84AjAgACAAKAIAKAIUEQEAIQAgAkIANwMoIAJCADcDICAAIAJB0ABqIAJBQGsgAkEwaiAfIB8gFYwgFpMgFiAVkyACQSBqQQFDAAAgQSAAKAIAKAI8ERkADAILIAIgAUGwCGopAgA3A3ggAiABQagIaiIDKQIANwNwIAIgAUHACGopAgA3A4gBIAIgAUG4CGoiBikCADcDgAEgAiABQdAIaikCADcDmAEgAiABQcgIaiIIKQIANwOQASACIAFB4AhqKQIANwOoASACIAFB2AhqIgcpAgA3A6ABAkAgBARAIAAgACgCACgCFBEBACIEIAJB8ABqIB8gBCgCACgCOBELACACIAFB8AhqKQIANwN4IAIgAUHoCGopAgA3A3AgAiABQYAJaikCADcCiAEgAiABQfgIaikCADcCgAEgAiABQZAJaikCADcCmAEgAiABQYgJaikCADcCkAEgAiABQaAJaikCADcCqAEgAiABQZgJaikCADcCoAEgACAAKAIAKAIUEQEAIgQgAkHwAGogHyAEKAIAKAI4EQsADAELIAIgAUHwCGopAgA3A3ggAiABQegIaikCADcDcCACIAFBgAlqKQIANwKIASACIAFB+AhqKQIANwKAASACIAFBkAlqKQIANwKYASACIAFBiAlqKQIANwKQASACIAFBoAlqKQIANwKoASACIAFBmAlqKQIANwKgAQsgBUUNASACIAMpAgg3A3ggAiADKQIANwNwIAIgBikCCDcCiAEgAiAGKQIANwKAASACIAgpAgg3ApgBIAIgCCkCADcCkAEgAiAHKQIINwKoASACIAcpAgA3AqABIAIgAigCeDYCYCACIAIoAogBNgJkIAJBADYCbCACIAIoApgBNgJoIAIgAigCcDYCUCACIAIoAoABNgJUIAJBADYCXCACIAIoApABNgJYIAEqAugHIQogASoC5AchCyABKgKoByEMIAEqAqQHIQ8gACAAKAIAKAIUEQEAIQUgAkIANwNIIAJCADcDQCAFIAFBmAlqIgQgAkHgAGogAkHQAGogH0NmZmY/lCAPIAwgCyAKIAJBQGtDAAAgQUEBIAUoAgAoAkARHgAgAkEANgJcIAIgAigClAE2AlggAiACKAKEATYCVCACIAIoAnQ2AlAgAUGsCWoqAgAhDCACKgJQIQogAUGwCWoqAgAiDhAcIQsgAiACKgJUIg8gDhAdIg6UIAsgCpSTOAJEIAIgCiAOIAwQHCIRlJQgDyARIAuUlJIgAioCWCINIAwQHSIMlJI4AkggAiAKIAwgDpSUIA8gDCALlJSSIBEgDZSTOAJAIAIgAUHwCGopAgA3A3ggAiABQegIaikCADcDcCACIAFBgAlqKQIANwKIASACIAFB+AhqKQIANwKAASACIAFBkAlqKQIANwKYASACIAFBiAlqKQIANwKQASACIAQpAgA3AqABIAIgAUGgCWopAgA3AqgBIAJBADYCPCACIAIqApABjDgCOCACIAIqAoABjDgCNCACIAIqAnCMOAIwAkAgASoC5AYiCiABKgLoBiILXkEBc0UEQCAAIAAoAgAoAhQRAQAhBSACQgA3AyggAkIANwMgIAUgBCACQTBqIAJBQGsgHyAfQ9sPScBD2w9JQCACQSBqQQBDAAAgQSAFKAIAKAI8ERkADAELIAogC11BAXMNACAAIAAoAgAoAhQRAQAhBSACQgA3AyggAkIANwMgIAUgBCACQTBqIAJBQGsgHyAfIAogCyACQSBqQQFDAAAgQSAFKAIAKAI8ERkACyACIAMpAgg3A3ggAiADKQIANwNwIAIgBikCCDcCiAEgAiAGKQIANwKAASACIAgpAgg3ApgBIAIgCCkCADcCkAEgAiAHKQIINwKoASACIAcpAgA3AqABIAIgASkCsAU3AyggAiABKQKoBTcDICACIAEpAsAFNwMYIAIgASkCuAU3AxAgACAAKAIAKAIUEQEAIQAgAkIANwMIIAJCADcDACAAIAJBIGog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NwIAQbDYAUH02AEpAgA3AgBBuNgBQfzYASkCADcCAEHQ2AEQDwsgACgCHCgCDCEBIAJCADcDUCACQoCAgPwDNwNIIAJB2AJqIAQgASACQcgAaiACQaACahDJBEUNACACQgA3AlwgAkIANwJUIAJCADcCTCACQQA6AOABIAJBkCY2AkggAkIANwI8IAIgAzYCOCACIAAoAhwoAggiATYCMCACQQA2AiggASgC7AEhAyACQQA2AiAgAiABNgIQIAIgASADQR50QR91cTYCLCACIAIpAzg3AxggAiACKQMoNwMIIAAgAkGgAmogAkEYaiACQQhqIAJByABqEIQFRQ0AAn9B6PcBQej3ASgCAEEBajYCAEHYAUEQQYzSASgCABEDACIBQQRqC0EAQdQBEAshAyABQZAmNgIAIAMgAkHIAGpBBHJB5AAQFRogASACKQO4ATcCcCABIAIpA7ABNwJoIAEgAikDyAE3AoABIAEgAikDwAE3AnggASACKQPQATcCiAEgASACKQPYATcCkAEgASACLQDgAToAmAEgASACKAKcAjYC1AEgASACKQKUAjcCzAEgASACKQKMAjcCxAEgASACKQKEAjcCvAEgASACKQL8ATcCtAEgASACKQL0ATcCrAEgASACKQLsATcCpAEgASACKQLkATcCnAECQCAAKAIYIgMoAtQGIgQgAygC2AZHDQAgBCAEQQF0QQEgBBsiBk4NAAJ/IAYEQEHo9wFB6PcBKAIAQQFqNgIAIAZBAnRBEEGM0gEoAgARAwAhByADKALUBiEECyAEQQFOCwRAA0AgByAFQQJ0IghqIAMoAtwGIAhqKAIANgIAIAVBAWoiBSAERw0ACwsgAygC3AYiBQRAIAMtAOAGBEAgBQRAQez3AUHs9wEoAgBBAWo2AgAgBUGQ0gEoAgARAAALIAMoAtQGIQQLIANBADYC3AYLIAMgBzYC3AYgAyAGNgLYBiADQQE6AOAGCyADKALcBiAEQQJ0aiABNgIAIAMgBEEBajYC1AYgACgCGCEDIAECfyAAKAIcKAIILQDMAUEDcQRAIAEgAyoC2AIgASoCQJQ4AkAgA0HkAmoMAQsgASADKgLUAiABKgJAlDgCQCADQeACagsqAgAgASoCRJQ4AkQLIAJBkANqJAALjQQBBn8CQCAAKAIEIgQgACgCCEcNACAEIARBAXRB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AiEEIAEgAzYCkAMgASAENgKUAyABIAAoAtQCNgL4AiABIAAoAtgCNgL8AiABIAAoAtwCNgKAAyABIAAoAuACNgKEAyABIAAoAuQCNgKIAyABIAAoAugCNgKMAyABIAIgAEHYA2oiCyACKAIAKAIcEQMANgKAAiACQcABQQEgAigCACgCEBEHACIMKAIIIgMgACgC+AQ2AmAgAyAAKAL8BDYCZCADIAAoAoAFNgJoIAMgACgChAU2AmwgAyAAKAKIBTYCcCADIAAoAowFNgJ0IAMgACgCkAU2AnggAyAAKAKUBTYCfCADIAAoApgFNgKAASADIAAoApwFNgKEASADIAAoAqAFNgKIASADIAAoAqQFNgKMASADIAAtANkDNgK0ASADIAAtANgDNgKwASADIAAoAogENgKQASADIAAoAowENgKUASADIAAoApAENgKYASADIAAoApQENgKcASADIAAoAuQDIgQ2AqgBAkAgBEUEQCADQQA2AqABDAELIAMgAiAAKALsAyACKAIAKAIcEQMANgKgASADKAKoASIERQ0AIAJBECAEIAIoAgAoAhARBwAhCSAAKALsAyEKIARBAU4EQCAJKAIIIQVBACEHA0AgBSAKIAdBBHRqIgYoAgA2AgAgBSAGKAIENgIEIAUgBigCCDYCCCAFIAYoAgw2AgwgBUEQaiEFIAdBAWoiByAERw0ACwsgAiAJQYAlQcGkhcoFIAogAigCACgCFBEJAAsgAyAAKALcAzYCuAEgAyAAKAKYBDYCACADIAAoApwENgIEIAMgACgCoAQ2AgggAyAAKAKkBDYCDCADIAAoAqgENgIQIAMgACgCrAQ2AhQgAyAAKAKwBDYCGCADIAAoArQENgIcIAMgACgCuAQ2AiAgAyAAKAK8BDYCJCADIAAoAsAENgIoIAMgACgCxAQ2AiwgAyAAKALIBDYCMCADIAAoAswENgI0IAMgACgC0AQ2AjggAyAAKALUBDYCPCADQUBrIAAoAtgENgIAIAMgACgC3AQ2AkQgAyAAKALgBDYCSCADIAAoAuQENgJMIAMgACgC6AQ2AlAgAyAAKALsBDYCVCADIAAoAvAENgJYIAMgACgC9AQ2AlwgAyAAKAL4AyIENgKsAQJAIARFBEAgA0EANgKkAQwBCyADIAIgACgCgAQgAigCACgCHBEDADYCpAEgAygCrAEiBEUNACACQQQgBCACKAIAKAIQEQcAIQYgACgCgAQhByAEQQFOBEAgBigCCCEDQQAhBQNAIAMgByAFQQJ0aigCADYCACADQQRqIQMgBUEBaiIFIARHDQALCyACIAZBkyVBwaSFygUgByACKAIAKAIUEQkACyACIAxBmSVBwaSFygUgCyACKAIAKAIUEQkAIAEgAEHYCGooAgAiAzYCvAICQCADRQRAIAFBADYCnAIMAQsgASACIABB4AhqKAIAKAIAIAIoAgAoAhwRAwA2ApwCIAEoArwCIglFDQAgAkHcAiAJIAIoAgAoAhARBwAhCyAAKALgCCEDIAlBAU4EQCALKAIIIQRBACEKA0AgBCADIApBAnQiB2ooAgAiAygC6AI2AsACIAQgAygCzAI2AoACIAQgAygC0AI2AoQCIAQgAygC1AI2AogCIAQgAygC2AI2AowCIAQgAygC/AI2AtgCIAQgAy0A+QI2AtQCIAQgAygC5AE2AqABIAQgAygC6AE2AqQBIAQgAygC7AE2AqgBIAQgAygC8AE2AqwBIAQgAy0A+AI2AtACIAQgAygClAI2AtABIAQgAygCmAI2AtQBIAQgAygCnAI2AtgBIAQgAygCoAI2AtwBIAQgAygCpAI2AuABIAQgAygCqAI2AuQBIAQgAygCrAI2AugBIAQgAygCsAI2AuwBIAQgAygCPDYCACAEIANBQGsoAgA2AgQgBCADKAJENgIIIAQgAygCSDYCDCAEIAMoAkw2AhAgBCADKAJQNgIUIAQgAygCVDYCGCAEIAMoAlg2AhwgBCADKAJcNgIgIAQgAygCYDYCJCAEIAMoAmQ2AiggBCADKAJoNgIsIAQgAygCbDYCMCAEIAMoAnA2AjQgBCADKAJ0NgI4IAQgAygCeDYCPCAEIAMoAnw2AqgCIAQgAygCgAE2AqwCIAQgAygCtAE2AnAgBCADKAK4ATYCdCAEIAMoArwBNgJ4IAQgAygCwAE2AnwgBCADKALEATYCgAEgBCADKALIATYChAEgBCADKALMATYCiAEgBCADKALQATYCjAEgBCADKALUATYCkAEgBCADKALYATYClAEgBCADKALcATYCmAEgBCADKALgATYCnAEgBCADKALkAjYCvAIgBCADKAKEATYCQCAEIAMoAogBNgJEIAQgAygCjAE2AkggBCADKAKQ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Y3RQb2ludCcpKSB0aHJvdyAnYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgRGVidWdEcmF3ZXI6OmRyYXdDb250YWN0UG9pbnQuJzsgc2VsZlsnZHJhd0NvbnRhY3RQb2ludCddKCQxLCQyLCQzLCQ0LCQ1KTsgfQBpaWlkaWkAeyB2YXIgc2VsZiA9IE1vZHVsZVsnZ2V0Q2FjaGUnXShNb2R1bGVbJ0RlYnVnRHJhd2VyJ10pWyQwXTsgaWYgKCFzZWxmLmhhc093blByb3BlcnR5KCdyZXBvcnRFcnJvcldhcm5pbmcnKSkgdGhyb3cgJ2EgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpyZXBvcnRFcnJvcldhcm5pbmcuJzsgc2VsZlsncmVwb3J0RXJyb3JXYXJuaW5nJ10oJDEpOyB9AGlpAHsgdmFyIHNlbGYgPSBNb2R1bGVbJ2dldENhY2hlJ10oTW9kdWxlWydEZWJ1Z0RyYXdlciddKVskMF07IGlmICghc2VsZi5oYXNPd25Qcm9wZXJ0eSgnZHJhdzNkVGV4dCcpKSB0aHJvdyAnYSBKU0ltcGxlbWVudGF0aW9uIG11c3QgaW1wbGVtZW50IGFsbCBmdW5jdGlvbnMsIHlvdSBmb3Jnb3QgRGVidWdEcmF3ZXI6OmRyYXczZFRleHQuJzsgc2VsZlsnZHJhdzNkVGV4dCddKCQxLCQyKTsgfQBpaWkAeyB2YXIgc2VsZiA9IE1vZHVsZVsnZ2V0Q2FjaGUnXShNb2R1bGVbJ0RlYnVnRHJhd2VyJ10pWyQwXTsgaWYgKCFzZWxmLmhhc093blByb3BlcnR5KCdzZXREZWJ1Z01vZGUnKSkgdGhyb3cgJ2EgSlNJbXBsZW1lbnRhdGlvbiBtdXN0IGltcGxlbWVudCBhbGwgZnVuY3Rpb25zLCB5b3UgZm9yZ290IERlYnVnRHJhd2VyOjpzZXREZWJ1Z01vZGUuJzsgc2VsZlsnc2V0RGVidWdNb2RlJ10oJDEpOyB9AHsgdmFyIHNlbGYgPSBNb2R1bGVbJ2dldENhY2hlJ10oTW9kdWxlWydEZWJ1Z0RyYXdlciddKVskMF07IGlmICghc2VsZi5oYXNPd25Qcm9wZXJ0eSgnZ2V0RGVidWdNb2RlJykpIHRocm93ICdhIEpTSW1wbGVtZW50YXRpb24gbXVzdCBpbXBsZW1lbnQgYWxsIGZ1bmN0aW9ucywgeW91IGZvcmdvdCBEZWJ1Z0RyYXdlcjo6Z2V0RGVidWdNb2RlLic7IHJldHVybiBzZWxmWydnZXREZWJ1Z01vZGUnXSgpOyB9AGkAAAAAAACADwAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAADIzYnREZWZhdWx0U29mdEJvZHlTb2x2ZXIAMTZidFNvZnRCb2R5U29sdmVyAAAAACBoAABiDwAASGgAAEgPAAB4DwAAAAAAANgPAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAAA0MWJ0U29mdEJvZHlSaWdpZEJvZHlDb2xsaXNpb25Db25maWd1cmF0aW9uAEhoAACsDwAAdCoAAAAAAABQEAAAVQAAAFYAAABXAAAATjI4YnRTb2Z0U29mdENvbGxpc2lvbkFsZ29yaXRobTEwQ3JlYXRlRnVuY0UAMzBidENvbGxpc2lvbkFsZ29yaXRobUNyZWF0ZUZ1bmMAAAAgaAAAJRAAAEhoAAD4DwAASBAAAAAAAACgEAAAVQAAAFgAAABZAAAATjI5YnRTb2Z0UmlnaWRDb2xsaXNpb25BbGdvcml0aG0xMENyZWF0ZUZ1bmNFAAAASGgAAHAQAABIEAAAAAAAAPQQAABVAAAAWgAAAFsAAABOMzVidFNvZnRCb2R5Q29uY2F2ZUNvbGxpc2lvbkFsZ29yaXRobTEwQ3JlYXRlRnVuY0UASGgAAMAQAABIEAAAAAAAAFARAABVAAAAXAAAAF0AAABOMzVidFNvZnRCb2R5Q29uY2F2ZUNvbGxpc2lvbkFsZ29yaXRobTE3U3dhcHBlZENyZWF0ZUZ1bmNFAABIaAAAFBEAAEgQAAAAAAAAXBMAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAAAAAAKQTAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAEG0IwuAegEAAAACAAAAAAAAAAEAAAADAAAAAQAAAAIAAAADAAAAAAAAAAIAAAADAAAAVXBkYXRlQ2x1c3RlcnMAQXBwbHlDbHVzdGVycwBTb2Z0Qm9keSBhcHBseUZvcmNlcwBTb2Z0Qm9keU1hdGVyaWFsRGF0YQBTb2Z0Qm9keU5vZGVEYXRhAFNvZnRCb2R5TGlua0RhdGEAU29mdEJvZHlGYWNlRGF0YQBTb2Z0Qm9keVRldHJhRGF0YQBTb2Z0UmlnaWRBbmNob3JEYXRhAGJ0VmVjdG9yM0Zsb2F0RGF0YQBmbG9hdABTb2Z0Qm9keVBvc2VEYXRhAGludABTb2Z0Qm9keUNsdXN0ZXJEYXRhAGJ0U29mdEJvZHlKb2ludERhdGEAYnRTb2Z0Qm9keUZsb2F0RGF0YQBOMTBidFNvZnRCb2R5NUpvaW50RQAAIGgAAOoSAAAAAAAAQBMAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAE4xMGJ0U29mdEJvZHk2Q0pvaW50RQAAAEhoAAAoEwAAABMAADEwYnRTb2Z0Qm9keQAAAABIaAAATBMAALAlAABOMTBidFNvZnRCb2R5MTVSYXlGcm9tVG9DYXN0ZXJFAE42YnREYnZ0OElDb2xsaWRlRQAAIGgAAIgTAABIaAAAaBMAAJwTAAAAAAAAGBQAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAIAAAACBAAAAggAAAIMAAACEAAAAMjRidFNvZnRCb2R5Q29sbGlzaW9uU2hhcGUAAEhoAAD8EwAA+E0AAFNvZnRCb2R5AAAAAAAAAAB4FAAAZwAAAIUAAABpAAAAhgAAAGsAAABsAAAAbQAAAE4xNWJ0U29mdENvbGxpZGVyczEzQ29sbGlkZVNERl9SU0UAAEhoAABUFAAAnBMAAAAAAAD4FAAAZwAAAIcAAABpAAAAiAAAAGsAAABsAAAAbQAAAE4xNWJ0U29mdENvbGxpZGVyczEyQ29sbGlkZUNMX1JTRQBOMTVidFNvZnRDb2xsaWRlcnMxMUNsdXN0ZXJCYXNlRQAASGgAAMoUAACcEwAASGgAAKgUAADsFAAAAAAAAIwVAACJAAAAigAAAIsAAAB3AAAAeAAAAHkAAACMAAAAjQAAAI4AAACPAAAAfgAAAJAAAACRAAAAkgAAAJMAAACDAAAA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aW11bGF0aW9uAGludGVybmFsU2luZ2xlU3RlcFNpbXVsYXRpb24AdXBkYXRlQWN0aW9ucwB1cGRhdGVBY3RpdmF0aW9uU3RhdGUAc29sdmVDb25zdHJhaW50cwBjYWxjdWxhdGVTaW11bGF0aW9uSXNsYW5kcwBjcmVhdGVQcmVkaWN0aXZlQ29udGFjdHMAcmVsZWFzZSBwcmVkaWN0aXZlIGNvbnRhY3QgbWFuaWZvbGRzAHByZWRpY3RpdmUgY29udmV4U3dlZXBUZXN0AGludGVncmF0ZVRyYW5zZm9ybXMAQ0NEIG1vdGlvbiBjbGFtcGluZwBhcHBseSBzcGVjdWxhdGl2ZSBjb250YWN0IHJlc3RpdHV0aW9uAHByZWRpY3RVbmNvbnN0cmFpbnRNb3Rpb24AYnREeW5hbWljc1dvcmxkRmxvYXREYXRhADIzYnREaXNjcmV0ZUR5bmFtaWNzV29ybGQAMTVidER5bmFtaWNzV29ybGQAAAAASGgAAL8dAAAwMwAASGgAAKUdAADUHQAAAAAAAFQeAAAUAQAAFQEAABYBAAAyN0lucGxhY2VTb2x2ZXJJc2xhbmRDYWxsYmFjawBOMjVidFNpbXVsYXRpb25Jc2xhbmRNYW5hZ2VyMTRJc2xhbmRDYWxsYmFja0UAIGgAAB4eAABIaAAAAB4AAEweAAAAAAAAoB4AAAUAAAAXAQAAGAEAABkBAAAzNGJ0Q2xvc2VzdE5vdE1lQ29udmV4UmVzdWx0Q2FsbGJhY2sAAAAASGgAAHgeAACEBAAAAAAAAPQeAAAaAQAAGwEAABwBAAAdAQAAHgEAAB8BAAAgAQAAIQEAACIBAAAjAQAAJAEAADE3YnRGaXhlZENvbnN0cmFpbnQASGgAAOAeAAAEIQAAAAAAAFQfAAAlAQAAJgEAACcBAAAdAQAAKAEAACkBAAAgAQAAKgEAACsBAAAsAQAALQEAAC4BAAAyM2J0R2VuZXJpYzZEb2ZDb25zdHJhaW50AAAASGgAADgfAAAEIQAAYnRHZW5lcmljNkRvZkNvbnN0cmFpbnREYXRhAAAAAADYHwAAJQEAAC8BAAAnAQAAHQEAACgBAAAwAQAAIAEAACoBAAArAQAAMQEAADIBAAAuAQAAMwEAADI5YnRHZW5lcmljNkRvZlNwcmluZ0NvbnN0cmFpbnQA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blBhaXJDYWxsYmFjawAxN2J0T3ZlcmxhcENhbGxiYWNrAAAAIGgAAO4mAABIaAAA1CYAAAQnAAAAAAAAeCcAAKMBAACkAQAApQEAADMwYnRHamtFcGFQZW5ldHJhdGlvbkRlcHRoU29sdmVyADMwYnRDb252ZXhQZW5ldHJhdGlvbkRlcHRoU29sdmVyAAAAIGgAAE0nAABIaAAALCcAAHAnAAAAAAAA3CcAAKYBAACnAQAAqAEAADE3YnRHamtQYWlyRGV0ZWN0b3IAMzZidERpc2NyZXRlQ29sbGlzaW9uRGV0ZWN0b3JJbnRlcmZhY2UAACBoAACsJwAASGgAAJgnAADUJwAAAAAAACAoAACjAQAAqQEAAKoBAAAzM2J0TWlua293c2tpUGVuZXRyYXRpb25EZXB0aFNvbHZlcgBIaAAA/CcAAHAnAAAAAAAALCkAAKsBAACsAQAArQEAAK4BAACvAQAAWk4zM2J0TWlua293c2tpUGVuZXRyYXRpb25EZXB0aFNvbHZlcjEyY2FsY1BlbkRlcHRoRVIyMmJ0Vm9yb25vaVNpbXBsZXhTb2x2ZXJQSzEzYnRDb252ZXhTaGFwZVM0X1JLMTFidFRyYW5zZm9ybVM3X1I5YnRWZWN0b3IzUzlfUzlfUDEyYnRJRGVidWdEcmF3RTIwYnRJbnRlcm1lZGlhdGVSZXN1bHQATjM2YnREaXNjcmV0ZUNvbGxpc2lvbkRldGVjdG9ySW50ZXJmYWNlNlJlc3VsdEUAACBoAADzKAAASGgAAEgoAAAkKQAAAAAAAGgpAACwAQAAsQEAALIBAACzAQAAtAEAADE2YnRFbXB0eUFsZ29yaXRobQAASGgAAFQpAADMFgAAAAAAALQpAAC1AQAAtgEAAAcAAAAHAAAABwAAADMwYnRBY3RpdmF0aW5nQ29sbGlzaW9uQWxnb3JpdGhtAAAAAEhoAACQKQAAzBYAAAAAAAAAKgAAtwEAALgBAAC5AQAAugEAALsBAAAzMmJ0U3BoZXJlU3BoZXJlQ29sbGlzaW9uQWxnb3JpdGhtAABIaAAA3CkAALQpAAAAAAAAdCoAALwBAAC9AQAAUQAAAFIAAAC+AQAAVAAAADMxYnREZWZhdWx0Q29sbGlzaW9uQ29uZmlndXJhdGlvbgAyNGJ0Q29sbGlzaW9uQ29uZmlndXJhdGlvbgAAAAAgaAAATioAAEhoAAAsKgAAbCoAAAAAAADIKgAAVQAAAL8BAADAAQAATjMzYnRDb252ZXhDb25jYXZlQ29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAAAEhoAACUKgAASBAAAAAAAAAkKwAAVQAAAMEBAADCAQAATjMzYnRDb252ZXhDb25jYXZlQ29sbGlzaW9uQWxnb3JpdGhtMTdTd2FwcGVkQ3JlYXRlRnVuY0UAAAAASGgAAOgqAABIEAAAAAAAAHQrAABVAAAAwwEAAMQBAABOMjhidENvbXBvdW5kQ29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAAAABIaAAARCsAAEgQAAAAAAAAzCsAAFUAAADFAQAAxgEAAE4zNmJ0Q29tcG91bmRDb21wb3VuZENvbGxpc2lvbkFsZ29yaXRobTEwQ3JlYXRlRnVuY0UAAAAASGgAAJQrAABIEAAAAAAAACAsAABVAAAAxwEAAMgBAABOMjhidENvbXBvdW5kQ29sbGlzaW9uQWxnb3JpdGhtMTdTd2FwcGVkQ3JlYXRlRnVuY0UASGgAAOwrAABIEAAAAAAAAGQsAABVAAAAyQEAAMoBAABOMTZidEVtcHR5QWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAAAABIaAAAQCwAAEgQAAAAAAAAuCwAAFUAAADLAQAAzAEAAE4zMmJ0U3BoZXJlU3BoZXJlQ29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAAAABIaAAAhCwAAEgQAAAAAAAADC0AAFUAAADNAQAAzgEAAE4zNGJ0U3BoZXJlVHJpYW5nbGVDb2xsaXNpb25BbGdvcml0aG0xMENyZWF0ZUZ1bmNFAABIaAAA2CwAAEgQAAAAAAAAWC0AAFUAAADPAQAA0AEAAE4yNmJ0Qm94Qm94Q29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQAASGgAACwtAABIEAAAAAAAAKgtAABVAAAA0QEAANIBAABOMzFidENvbnZleFBsYW5lQ29sbGlzaW9uQWxnb3JpdGhtMTBDcmVhdGVGdW5jRQBIaAAAeC0AAEgQAAAAAAAAFC4AANMBAADUAQAA1QEAANYBAABpc2xhbmRVbmlvbkZpbmRBbmRRdWlja1NvcnQAcHJvY2Vzc0lzbGFuZHMAMjVidFNpbXVsYXRpb25Jc2xhbmRNYW5hZ2VyAAAgaAAA9y0AAAAAAABcLgAA1wEAANgBAADZAQAA2gEAANsBAAAzMWJ0Q29udmV4UGxhbmVDb2xsaXNpb25BbGdvcml0aG0AAABIaAAAOC4AAMwWAAAAAAAAvC4AANwBAADdAQAA3gEAAN8BAADgAQAAAAAAAOQuAADhAQAA4gEAAOMBAAAzM2J0Q29udmV4Q29uY2F2ZUNvbGxpc2lvbkFsZ29yaXRobQBIaAAAmC4AALQpAAAyNGJ0Q29udmV4VHJpYW5nbGVDYWxsYmFjawAASGgAAMguAACoSgAAAAAAAKQvAACyAAAA5AEAAOUBAABaTjMzYnRDb252ZXhDb25jYXZlQ29sbGlzaW9uQWxnb3JpdGhtMjFjYWxjdWxhdGVUaW1lT2ZJbXBhY3RFUDE3YnRDb2xsaXNpb25PYmplY3RTMV9SSzE2YnREaXNwYXRjaGVySW5mb1AxNmJ0TWFuaWZvbGRSZXN1bHRFMzFMb2NhbFRyaWFuZ2xlU3BoZXJlQ2FzdENhbGxiYWNrAAAASGgAAAQvAACoSgAAAAAAANgvAACmAQAA5gEAAOcBAAAxNmJ0Qm94Qm94RGV0ZWN0b3IAAEhoAADELwAA1CcAAAAAAAAgMAAA6AEAAOkBAADqAQAA6wEAAOwBAAAyNmJ0Qm94Qm94Q29sbGlzaW9uQWxnb3JpdGhtAAAAAEhoAAAAMAAAtCkAAAAAAABcMAAAqwEAAO0BAADuAQAA7wEAAPABAAAxNmJ0TWFuaWZvbGRSZXN1bHQAAEhoAABIMAAAJCkAAAAAAACQMAAAfgEAAPEBAADyAQAAMTVidEdqa0NvbnZleENhc3QAAABIaAAAfDAAACQlAAAAAAAAzDAAAKsBAADzAQAA9AEAAPUBAAD2AQAAMTZidFBvaW50Q29sbGVjdG9yAABIaAAAuDAAACQpAAAAAAAADDEAAH4BAAD3AQAA+AEAADI3YnRDb250aW51b3VzQ29udmV4Q29sbGlzaW9uAAAASGgAAOwwAAAkJQAAAAAAAGQxAACyAAAA+QEAAPoBAAAHAAAAAAAAAJAxAACyAAAA+wEAAPwBAAAHAAAAMjVidFRyaWFuZ2xlUmF5Y2FzdENhbGxiYWNrAEhoAABIMQAAqEoAADI4YnRUcmlhbmdsZUNvbnZleGNhc3RDYWxsYmFjawAASGgAAHAxAACoSgAAAAAAADAzAAD9AQAA/gEAANEAAADSAAAA0wAAANQAAAD/AQAA1gAAAA4BAAAAAgAAAQIAANoAAAACAgAAT3ZlcmZsb3cgaW4gQUFCQiwgb2JqZWN0IHJlbW92ZWQgZnJvbSBzaW11bGF0aW9uAElmIHlvdSBjYW4gcmVwcm9kdWNlIHRoaXMsIHBsZWFzZSBlbWFpbCBidWdzQGNvbnRpbnVvdXNwaHlzaWNzLmNvbQoAUGxlYXNlIGluY2x1ZGUgYWJvdmUgaW5mb3JtYXRpb24sIHlvdXIgUGxhdGZvcm0sIHZlcnNpb24gb2YgT1MuCgBUaGFua3MuCgB1cGRhdGVBYWJicwBjYWxjdWxhdGVPdmVybGFwcGluZ1BhaXJzAHBlcmZvcm1EaXNjcmV0ZUNvbGxpc2lvbkRldGVjdGlvbgBkaXNwYXRjaEFsbENvbGxpc2lvblBhaXJzAGNvbnZleFN3ZWVwQ29tcG91bmQAY29udmV4U3dlZXBUZXN0ADE2YnRDb2xsaXNpb25Xb3JsZAAgaAAAHTMAAAAAAADkMwAAsgAAAAMCAAD6AQAABAIAAFpOMTZidENvbGxpc2lvbldvcmxkMjFyYXlUZXN0U2luZ2xlSW50ZXJuYWxFUksxMWJ0VHJhbnNmb3JtUzJfUEsyNGJ0Q29sbGlzaW9uT2JqZWN0V3JhcHBlclJOU18xN1JheVJlc3VsdENhbGxiYWNrRUUyOUJyaWRnZVRyaWFuZ2xlUmF5Y2FzdENhbGxiYWNrAABIaAAAUDMAAGQxAAAAAAAAoDQAALIAAAAFAgAA+gEAAAYCAABaTjE2YnRDb2xsaXNpb25Xb3JsZDIxcmF5VGVzdFNpbmdsZUludGVybmFsRVJLMTFidFRyYW5zZm9ybVMyX1BLMjRidENvbGxpc2lvbk9iamVjdFdyYXBwZXJSTlNfMTdSYXlSZXN1bHRDYWxsYmFja0VFMjlCcmlkZ2VUcmlhbmdsZVJheWNhc3RDYWxsYmFja18wAAAAAEhoAAAINAAAZDEAAAAAAABQNQAAZwAAAAcCAABpAAAACAIAAGsAAABsAAAAbQAAAFpOMTZidENvbGxpc2lvbldvcmxkMjFyYXlUZXN0U2luZ2xlSW50ZXJuYWxFUksxMWJ0VHJhbnNmb3JtUzJfUEsyNGJ0Q29sbGlzaW9uT2JqZWN0V3JhcHBlclJOU18xN1JheVJlc3VsdENhbGxiYWNrRUU5UmF5VGVzdGVyAAAASGgAANA0AACcEwAAAAAAAPw1AAAMAAAACQIAAAoCAAALAgAAWk4xNmJ0Q29sbGlzaW9uV29ybGQyMXJheVRlc3RTaW5nbGVJbnRlcm5hbEVSSzExYnRUcmFuc2Zvcm1TMl9QSzI0YnRDb2xsaXNpb25PYmplY3RXcmFwcGVyUk5TXzE3UmF5UmVzdWx0Q2FsbGJhY2tFRTE1TG9jYWxJbmZvQWRkZXIyAAAAAEhoAAB0NQAAGAUAAAAAAADQNgAAsgAAAAwCAAD8AQAADQIAAFpOMTZidENvbGxpc2lvbldvcmxkMjVvYmplY3RRdWVyeVNpbmdsZUludGVybmFsRVBLMTNidENvbnZleFNoYXBlUksxMWJ0VHJhbnNmb3JtUzVfUEsyNGJ0Q29sbGlzaW9uT2JqZWN0V3JhcHBlclJOU18yMENvbnZleFJlc3VsdENhbGxiYWNrRWZFMzJCcmlkZ2VUcmlhbmdsZUNvbnZleGNhc3RDYWxsYmFjawAASGgAACA2AACQMQAAAAAAAKg3AACyAAAADgIAAPwBAAAPAgAAWk4xNmJ0Q29sbGlzaW9uV29ybGQyNW9iamVjdFF1ZXJ5U2luZ2xlSW50ZXJuYWxFUEsxM2J0Q29udmV4U2hhcGVSSzExYnRUcmFuc2Zvcm1TNV9QSzI0YnRDb2xsaXNpb25PYmplY3RXcmFwcGVyUk5TXzIwQ29udmV4UmVzdWx0Q2FsbGJhY2tFZkUzMkJyaWRnZVRyaWFuZ2xlQ29udmV4Y2FzdENhbGxiYWNrXzAAAAAASGgAAPQ2AACQMQAAAAAAAGw4AAAFAAAAEAIAABECAAASAgAAWk4xNmJ0Q29sbGlzaW9uV29ybGQyNW9iamVjdFF1ZXJ5U2luZ2xlSW50ZXJuYWxFUEsxM2J0Q29udmV4U2hhcGVSSzExYnRUcmFuc2Zvcm1TNV9QSzI0YnRDb2xsaXNpb25PYmplY3RXcmFwcGVyUk5TXzIwQ29udmV4UmVzdWx0Q2FsbGJhY2tFZkUxNExvY2FsSW5mb0FkZGVyAAAAAEhoAADMNwAAfAQAAAAAAACkOAAA/AAAABMCAAAUAgAAMTlidFNpbmdsZVJheUNhbGxiYWNrAAAASGgAAIw4AAC4GgAAAAAAANw4AAD8AAAAFQIAABYCAAAyMWJ0U2luZ2xlU3dlZXBDYWxsYmFjawBIaAAAxDgAALgaAAAAAAAAGDkAAPwAAAAXAgAAGAIAADIzYnRTaW5nbGVDb250YWN0Q2FsbGJhY2sAAABIaAAA/DgAALAaAAAAAAAAXDkAAKsBAAAZAgAA7gEAAO8BAAAaAgAAMjNidEJyaWRnZWRNYW5pZm9sZFJlc3VsdAAAAEhoAABAOQAAXDAAAAAAAACoOQAAGwIAABwCAAAdAgAAHgIAAPz///+oOQAAHwIAACACAAAhAgAAMTdEZWJ1Z0RyYXdjYWxsYmFjawCkaAAAlDkAAAAAAAACAAAAqEoAAAIAAADUSgAAAgQAAAAAAAD4OQAApgEAACICAAAjAgAAMjJTcGhlcmVUcmlhbmdsZURldGVjdG9yAAAAAEhoAADcOQAA1CcAAAAAAABIOgAAJAIAACUCAAAmAgAAJwIAACgCAAAzNGJ0U3BoZXJlVHJpYW5nbGVDb2xsaXNpb25BbGdvcml0aG0AAAAASGgAACA6AAC0KQAAAAAAAKw6AAApAgAAKgIAACsCAAAAAAAA1DoAACwCAAAtAgAALgIAAC8CAAAwAgAATjIzYnRDb252ZXhDb252ZXhBbGdvcml0aG0xMENyZWF0ZUZ1bmNFAEhoAACEOgAASBAAADIzYnRDb252ZXhDb252ZXhBbGdvcml0aG0AAABIaAAAuDoAALQpAAAAAAAAhDsAAKsBAAAxAgAAMgIAADMCAAA0AgAAWk4yM2J0Q29udmV4Q29udmV4QWxnb3JpdGhtMTZwcm9jZXNzQ29sbGlzaW9uRVBLMjRidENvbGxpc2lvbk9iamVjdFdyYXBwZXJTMl9SSzE2YnREaXNwYXRjaGVySW5mb1AxNmJ0TWFuaWZvbGRSZXN1bHRFMTNidER1bW15UmVzdWx0AAAAAEhoAAD8OgAAJCkAAAAAAAA8PAAAqwEAADUCAAA2AgAANwIAADgCAABaTjIzYnRDb252ZXhDb252ZXhBbGdvcml0aG0xNnByb2Nlc3NDb2xsaXNpb25FUEsyNGJ0Q29sbGlzaW9uT2JqZWN0V3JhcHBlclMyX1JLMTZidERpc3BhdGNoZXJJbmZvUDE2YnRNYW5pZm9sZFJlc3VsdEUyMWJ0V2l0aG91dE1hcmdpblJlc3VsdAAAAABIaAAArDsAACQpAAAAAAAAgDwAAKsBAAA5AgAA7gEAAO8BAAA6AgAAMjRidFBlcnR1cmJlZENvbnRhY3RSZXN1bHQAAEhoAABkPAAAXDAAAAAAAADIPAAAOwIAADwCAAA9AgAAPgIAAD8CAAAyOGJ0Q29tcG91bmRDb2xsaXNpb25BbGdvcml0aG0AAEhoAACoPAAAtCkAAAAAAAAUPQAAZwAAAEACAABpAAAAQQIAAGsAAABsAAAAbQAAADIyYnRDb21wb3VuZExlYWZDYWxsYmFjawAAAABIaAAA+DwAAJwTAAAAAAAAWD0AAEICAABDAgAARAIAAEUCAABGAgAAMjNidEhhc2hlZFNpbXBsZVBhaXJDYWNoZQAAACBoAAA8PQAAAAAAAKQ9AABHAgAASAIAAEkCAABKAgAASwIAADM2YnRDb21wb3VuZENvbXBvdW5kQ29sbGlzaW9uQWxnb3JpdGhtAABIaAAAfD0AALQpAAAAAAAA+D0AAGcAAABMAgAATQIAAJ4AAABrAAAAbAAAAG0AAAAzMGJ0Q29tcG91bmRDb21wb3VuZExlYWZDYWxsYmFjawAAAABIaAAA1D0AAJwTAAAAAAAAlD4AAE4CAABPAgAAUAIAAHcAAAB4AAAAeQAAAFECAABSAgAAUwIAAFQCAAB+AAAAVQIAAFYCAABXAgAAWAIAAIMAAABZAgAAWgIAAGJ0Q29tcG91bmRTaGFwZUNoaWxkRGF0YQBidENvbXBvdW5kU2hhcGVEYXRhADE1YnRDb21wb3VuZFNoYXBlAABIaAAAgT4AABRIAABDb21wb3VuZAAAAAAAAAAA6D8AAIkAAABbAgAAXAIAAHcAAAB4AAAAeQAAAF0CAACNAAAAXgIAAF8CAABgAgAAvwAAAMAAAABhAgAAYgIAAIMAAABjAgAAZAIAAJYAAABlAgAAmAAAAJkAAACaAAAAAAAAAARAAACJAAAAZgIAAFwCAAB3AAAAeAAAAHkAAABdAgAAjQAAAF4CAABnAgAAaAIAAL8AAADAAAAAYQIAAGICAACDAAAAYwIAAGQCAACWAAAAZQIAAJgAAACZAAAAmgAAAAAAAAAgQAAAiQAAAGkCAABcAgAAdwAAAHgAAAB5AAAAXQIAAI0AAABeAgAAagIAAGsCAAC/AAAAwAAAAGECAABiAgAAgwAAAGMCAABkAgAAlgAAAGUCAACYAAAAmQAAAJoAAAAxMWJ0Q29uZVNoYXBlAAAASGgAANg/AAB8SQAAMTJidENvbmVTaGFwZVoAAEhoAAD0PwAA6D8AADEyYnRDb25lU2hhcGVYAABIaAAAEEAAAOg/AABDb25lAGJ0Q29uZVNoYXBlRGF0YQBDb25lWgBDb25lWAAAAAAAAAAAeEAAAGwCAABtAgAAMThidENvbnZleFBvbHloZWRyb24AAAAAIGgAAGBAAAAAAAAAJEEAAG4CAABvAgAAcAIAAHcAAAB4AAAAeQAAAHECAACNAAAAcgIAAHMCAAB+AAAAvwAAAMAAAAB0AgAAdQIAAIMAAADBAAAAdgIAAJYAAAB3AgAAmAAAAJkAAACaAAAAYnRQb3NpdGlvbkFuZFJhZGl1cwBidE11bHRpU3BoZXJlU2hhcGVEYXRhADE4YnRNdWx0aVNwaGVyZVNoYXBlAEhoAAAPQQAArEkAAE11bHRpU3BoZXJlAAAAAACwQQAAiQAAAHgCAAB5AgAAdwAAAHgAAAB5AAAAjAAAAI0AAAB6AgAAewIAAH4AAAB8AgAAfQIAAJIAAACTAAAAgwAAAH4CAAB/AgAAlgAAAIACAACYAAAAmQAAAJoAAAAxM2J0U3BoZXJlU2hhcGUASGgAAKBBAAB8SQAAU1BIRVJFAAAAAAAAVEIAAIECAACCAgAAgwIAAHcAAAB4AAAAeQAAAIQCAACFAgAAhgIAAIcCAAB+AAAAfwAAAIAAAACIAgAAiQIAAIMAAACKAgAAiwIAAIwCAACNAgAAjgIAAGJ0VHJpYW5nbGVNZXNoU2hhcGVEYXRhADIyYnRCdmhUcmlhbmdsZU1lc2hTaGFwZQAAAABIaAAAOEIAAKhEAAAAAAAA/EIAAI8CAACQAgAAkQIAAFpOMjJidEJ2aFRyaWFuZ2xlTWVzaFNoYXBlMTRwZXJmb3JtUmF5Y2FzdEVQMThidFRyaWFuZ2xlQ2FsbGJhY2tSSzlidFZlY3RvcjNTNF9FMjFNeU5vZGVPdmVybGFwQ2FsbGJhY2sAMjFidE5vZGVPdmVybGFwQ2FsbGJhY2sAIGgAANxCAABIaAAAdEIAAPRCAAAAAAAAkEMAAI8CAACSAgAAkwIAAFpOMjJidEJ2aFRyaWFuZ2xlTWVzaFNoYXBlMTdwZXJmb3JtQ29udmV4Y2FzdEVQMThidFRyaWFuZ2xlQ2FsbGJhY2tSSzlidFZlY3RvcjNTNF9TNF9TNF9FMjFNeU5vZGVPdmVybGFwQ2FsbGJhY2sAAAAASGgAABxDAAD0QgAAAAAAACBEAACPAgAAlAIAAJUCAABaTksyMmJ0QnZoVHJpYW5nbGVNZXNoU2hhcGUxOXByb2Nlc3NBbGxUcmlhbmdsZXNFUDE4YnRUcmlhbmdsZUNhbGxiYWNrUks5YnRWZWN0b3IzUzRfRTIxTXlOb2RlT3ZlcmxhcENhbGxiYWNrAAAASGgAALBDAAD0QgAAQlZIVFJJQU5HTEVNRVNIAAAAAACoRAAAlgIAAJcCAACDAgAAdwAAAHgAAAB5AAAAmAIAAIUCAACGAgAAmQIAAH4AAAB/AAAAgAAAAIEAAACCAAAAgwAAAJoCAACLAgAAjAIAADE5YnRUcmlhbmdsZU1lc2hTaGFwZQAAAEhoAACQRAAA+E0AAAAAAAAwRQAAmwIAAJwCAACdAgAAWk5LMTlidFRyaWFuZ2xlTWVzaFNoYXBlMTlwcm9jZXNzQWxsVHJpYW5nbGVzRVAxOGJ0VHJpYW5nbGVDYWxsYmFja1JLOWJ0VmVjdG9yM1M0X0UxNkZpbHRlcmVkQ2FsbGJhY2sAAABIaAAAyEQAANRKAAAAAAAAaEUAALIAAACeAgAAnwIAADIxU3VwcG9ydFZlcnRleENhbGxiYWNrAEhoAABQRQAAqEoAAFRSSUFOR0xFTUVTSAAAAAAAAAAA6EUAAKACAAChAgAAogIAAHcAAAB4AAAAeQAAAKMCAACkAgAApQIAAKYCAAB+AAAAfwAAAIAAAACnAgAAqAIAAIMAAACpAgAAMThidFN0YXRpY1BsYW5lU2hhcGUAAAAASGgAANBFAAD4TQAAU1RBVElDUExBTkUAYnRTdGF0aWNQbGFuZVNoYXBlRGF0YQAAAAAAADxHAAC6AAAAqgIAAFwCAAB3AAAAeAAAAHkAAACMAAAAjQAAAKsCAAAHAAAAfgAAAL8AAADAAAAAkgAAAJMAAACDAAAAwQAAAKwCAACWAAAArQIAAJgAAACZAAAAmgAAAMYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAAAAAAAHBHAAC6AAAArgIAAK8CAAB3AAAAeAAAAHkAAACwAgAAjQAAAKsCAAAHAAAAfgAAAL8AAADAAAAAkgAAAJMAAACDAAAAwQAAAKwCAACWAAAArQIAAJgAAACZAAAAmgAAAMYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAAMjNidFBvbHloZWRyYWxDb252ZXhTaGFwZQAAAEhoAAAgRwAAfEkAADM0YnRQb2x5aGVkcmFsQ29udmV4QWFiYkNhY2hpbmdTaGFwZQAAAABIaAAASEcAADxHAAAAAAAA2EcAALECAACyAgAAswIAAHcAAAB4AAAAeQAAALQCAAC1AgAAtgIAALcCAAB+AAAAfwAAAIAAAACBAAAAggAAAIMAAAC4AgAAMTJidEVtcHR5U2hhcGUAAEhoAADIRwAA+E0AAEVtcHR5AGJ0Q29sbGlzaW9uU2hhcGVEYXRhADE2YnRDb2xsaXNpb25TaGFwZQAAACBoAAD/RwAAAAAAAJBIAACJAAAAuQIAAAcAAAB3AAAAeAAAAHkAAAAHAAAABwAAAAcAAAAHAAAAfgAAAAcAAAAHAAAAgQAAAIIAAACDAAAABwAAAAcAAACWAAAABwAAAAcAAAAHAAAABwAAADEzYnRDb252ZXhTaGFwZQBIaAAAgEgAABRIAAAAAAAAfEkAAIkAAAC6AgAAXAIAAHcAAAB4AAAAeQAAAIwAAACNAAAABwAAAAcAAAB+AAAAvwAAAMAAAACSAAAAkwAAAIMAAADBAAAABwAAAJYAAAAHAAAAmAAAAJkAAACaAAAAAAAAAKxJAACJAAAAuwIAAHACAAB3AAAAeAAAAHkAAABxAgAAjQAAAAcAAAAHAAAAfgAAAL8AAADAAAAAkgAAAJMAAACDAAAAwQAAAAcAAACWAAAABwAAAJgAAACZAAAAmgAAADIxYnRDb252ZXhJbnRlcm5hbFNoYXBlAEhoAABkSQAAkEgAADMyYnRDb252ZXhJbnRlcm5hbEFhYmJDYWNoaW5nU2hhcGUAAEhoAACISQAAfEkAAAAAAACASgAAvAIAAL0CAACvAgAAdwAAAHgAAAB5AAAAvgIAAI0AAACrAgAAvwIAAH4AAAC/AAAAwAAAAMACAADBAgAAgwAAAMICAADDAgAAlgAAAMQCAACYAAAAmQAAAJoAAADGAAAAxQIAAMYCAADHAgAAyAIAAMkCAADKAgAAywIAAMwCAABidFZlY3RvcjNGbG9hdERhdGEAYnRDb252ZXhIdWxsU2hhcGVEYXRhADE3YnRDb252ZXhIdWxsU2hhcGUAAAAASGgAAGlKAABwRwAAQ29udmV4ADE4YnRUcmlhbmdsZUNhbGxiYWNrACBoAACTSgAAMzFidEludGVybmFsVHJpYW5nbGVJbmRleENhbGxiYWNrAAAAIGgAALBKAAAAAAAAHEwAAIkAAADNAgAAzgIAAHcAAAB4AAAAeQAAAM8CAACNAAAA0AIAANECAADSAgAA0wIAAMAAAADUAgAA1QIAAIMAAADBAAAA1gIAAJYAAADXAgAAmAAAAJkAAACaAAAAAAAAADxMAACJAAAA2AIAAM4CAAB3AAAAeAAAAHkAAADPAgAAjQAAANACAADZAgAA0gIAANMCAADAAAAA1AIAANUCAACDAAAAwQAAANYCAACWAAAA1wIAAJgAAACZAAAAmgAAAAAAAABcTAAAiQAAANoCAADOAgAAdwAAAHgAAAB5AAAAzwIAAI0AAADQAgAA2wIAANICAADTAgAAwAAAANQCAADVAgAAgwAAAMEAAADWAgAAlgAAANcCAACYAAAAmQAAAJoAAAAxNGJ0Q2Fwc3VsZVNoYXBlAAAAAEhoAAAITAAAfEkAADE1YnRDYXBzdWxlU2hhcGVYAAAASGgAAChMAAAcTAAAMTVidENhcHN1bGVTaGFwZVoAAABIaAAASEwAABxMAABDYXBzdWxlU2hhcGUAYnRDYXBzdWxlU2hhcGVEYXRhAENhcHN1bGVYAENhcHN1bGVaAAAAAAAAADxNAAC6AAAA3AIAAK8CAAB3AAAAeAAAAHkAAADdAgAA3gIAAKsCAADfAgAAfgAAAL8AAADAAAAAkgAAAJMAAACDAAAA4AIAAOECAACWAAAA4gIAAJgAAACZAAAAmgAAAMYAAADjAgAA5AIAAOUCAADmAgAA5wIAAOgCAADpAgAAMjVidENvbnZleFRyaWFuZ2xlTWVzaFNoYXBlAEhoAAAgTQAAcEcAAAAAAAB8TQAAmwIAAOoCAADrAgAAMjZMb2NhbFN1cHBvcnRWZXJ0ZXhDYWxsYmFjawAAAABIaAAAXE0AANRKAABDb252ZXhUcmltZXNoAAAAAAAAAPhNAAB0AAAA7AIAAAcAAAB3AAAAeAAAAHkAAAAHAAAABwAAAAcAAAAHAAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAABwAAADE0YnRDb25jYXZlU2hhcGUAAAAASGgAAORNAAAUSAAAAAAAAJxOAAC6AAAA7QIAAO4CAAB3AAAAeAAAAHkAAADvAgAAjQAAAPACAADxAgAAfgAAAPICAADAAAAAkgAAAJMAAACDAAAA8wIAAPQCAACWAAAA9QIAAJgAAAD2AgAA9wIAAMYAAAD4AgAA+QIAAPoCAAD7AgAA/AIAAP0CAAD+AgAA/wIAADEwYnRCb3hTaGFwZQAAAABIaAAAjE4AADxHAABCb3gAAACAPwAAgL8AQc6dAQsGgD8AAIC/AEHunQELkxaAPwAAgL8AAAAAAAAAAAEAAAACAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAEAAAABQAAAAYAAAABAAAAAgAAAAMAAAADAAAABAAAAAUAAAAGAAAABwAAAAUAAAAGAAAABwAAAAcAAAAAAAAAkE8AAAADAAABAwAAAgMAAAMDAAAEAwAABQMAAAYDAAAHAwAAMTRidE9wdGltaXplZEJ2aAAAAABIaAAAfE8AAHRZAAAAAAAAFFAAAJsCAAAIAwAACQMAAFpOMTRidE9wdGltaXplZEJ2aDVidWlsZEVQMjNidFN0cmlkaW5nTWVzaEludGVyZmFjZWJSSzlidFZlY3RvcjNTNF9FMjlRdWFudGl6ZWROb2RlVHJpYW5nbGVDYWxsYmFjawBIaAAAsE8AANRKAAAAAAAAkFAAAJsCAAAKAwAACwMAAFpOMTRidE9wdGltaXplZEJ2aDVidWlsZEVQMjNidFN0cmlkaW5nTWVzaEludGVyZmFjZWJSSzlidFZlY3RvcjNTNF9FMjBOb2RlVHJpYW5nbGVDYWxsYmFjawAASGgAADRQAADUSgAAAAAAAAhRAAAMAwAADQMAAA4DAAB3AAAAeAAAAHkAAAAPAwAAEAMAABEDAAASAwAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAEwMAABQDAAAyNWJ0SGVpZ2h0ZmllbGRUZXJyYWluU2hhcGUASGgAAOxQAAD4TQAASEVJR0hURklFTEQAAAAAAGxSAACJAAAAFQMAABYDAAB3AAAAeAAAAHkAAAAXAwAAjQAAABgDAAAZAwAAGgMAABsDAADAAAAAHAMAAB0DAACDAAAAHgMAAB8DAACWAAAAIAMAAJgAAACZAAAAmgAAACEDAAAAAAAAjFIAAIkAAAAiAwAAFgMAAHcAAAB4AAAAeQAAABcDAACNAAAAGAMAACMDAAAaAwAAGwMAAMAAAAAcAwAAHQMAAIMAAAAeAwAAJAMAAJYAAAAlAwAAmAAAAJkAAACaAAAAJgMAAAAAAACsUgAAiQAAACcDAAAWAwAAdwAAAHgAAAB5AAAAFwMAAI0AAAAYAwAAKAMAABoDAAAbAwAAwAAAABwDAAAdAwAAgwAAAB4DAAApAwAAlgAAACoDAACYAAAAmQAAAJoAAAArAwAAMTVidEN5bGluZGVyU2hhcGUAAABIaAAAWFIAAHxJAAAxNmJ0Q3lsaW5kZXJTaGFwZVgAAEhoAAB4UgAAbFIAADE2YnRDeWxpbmRlclNoYXBlWgAASGgAAJhSAABsUgAAQ3lsaW5kZXJZAGJ0Q3lsaW5kZXJTaGFwZURhdGEAQ3lsaW5kZXJYAEN5bGluZGVyWgBidEludEluZGV4RGF0YQBidFNob3J0SW50SW5kZXhUcmlwbGV0RGF0YQBidENoYXJJbmRleFRyaXBsZXREYXRhAGJ0VmVjdG9yM0Zsb2F0RGF0YQBidFZlY3RvcjNEb3VibGVEYXRhAGJ0TWVzaFBhcnREYXRhAGJ0U3RyaWRpbmdNZXNoSW50ZXJmYWNlRGF0YQAyM2J0U3RyaWRpbmdNZXNoSW50ZXJmYWNlAAAgaAAAfVMAAAAAAAAEVAAALAMAAC0DAAAuAwAALwMAADADAAAxAwAAMgMAADMDAAA0AwAANQMAADYDAAA3AwAAOAMAADkDAAA6AwAAMjZidFRyaWFuZ2xlSW5kZXhWZXJ0ZXhBcnJheQAAAABIaAAA5FMAAJhTAAAAAAAAaFQAADsDAAA8AwAALgMAAC8DAAAwAwAAMQMAADIDAAAzAwAAPQMAAD4DAAA2AwAANwMAADgDAAA5AwAAOgMAADE0YnRUcmlhbmdsZU1lc2gAAAAASGgAAFRUAAAEVAAAAAAAAAxVAAA/AwAAQAMAAEEDAABCAwAAQwMAAEQDAABFAwAARgMAAEcDAABIAwAASQMAAEoDAABLAwAATAMAADEyYnRBeGlzU3dlZXAzADIwYnRBeGlzU3dlZXAzSW50ZXJuYWxJdEUAMjFidEJyb2FkcGhhc2VJbnRlcmZhY2UAAAAAIGgAAN1UAABIaAAAw1QAAPhUAABIaAAAtFQAAABVAAAAAAAAAFUAAD8DAABNAwAAQQMAAEIDAABDAwAARAMAAEUDAABGAwAARwMAAEgDAABJAwAASgMAAEsDAABMAwAAAAAAANxVAABOAwAATwMAAFADAABRAwAAUgMAAFMDAABUAwAAVQMAAFYDAABXAwAAWAMAAFkDAABaAwAAWwMAAFwDAABdAwAAXgMAADE1YnROdWxsUGFpckNhY2hlADIyYnRPdmVybGFwcGluZ1BhaXJDYWNoZQAASGgAALZVAAA0BgAASGgAAKRVAADQVQAAAAAAAFRWAABfAwAAYAMAAGEDAABiAwAAYwMAAGQDAABlAwAAZgMAAGcDAABoAwAAaQMAAGoDAABrAwAAbAMAAG0DAABuAwAAbwMAADI4YnRIYXNoZWRPdmVybGFwcGluZ1BhaXJDYWNoZQAASGgAADRWAADQVQAAAAAAAORWAACgAQAAcAMAAHEDAABaTjI4YnRIYXNoZWRPdmVybGFwcGluZ1BhaXJDYWNoZTE5Y2xlYW5Qcm94eUZyb21QYWlyc0VQMTdidEJyb2FkcGhhc2VQcm94eVAxMmJ0RGlzcGF0Y2hlckUxN0NsZWFuUGFpckNhbGxiYWNrAAAASGgAAHRWAAAEJwAAAAAAAIhXAACgAQAAcgMAAHMDAABaTjI4YnRIYXNoZWRPdmVybGFwcGluZ1BhaXJDYWNoZTM3cmVtb3ZlT3ZlcmxhcHBpbmdQYWlyc0NvbnRhaW5pbmdQcm94eUVQMTdidEJyb2FkcGhhc2VQcm94eVAxMmJ0RGlzcGF0Y2hlckUxOFJlbW92ZVBhaXJDYWxsYmFjawAAAABIaAAABFcAAAQnAAAAAAAA6FcAAHQDAAB1AwAAdgMAAHcDAAB4AwAAeQMAAHoDAAB7AwAAfAMAAH0DAAB+AwAAfwMAAIADAACBAwAAMTZidERidnRCcm9hZHBoYXNlAABIaAAA1FcAAPhUAAAAAAAAMFgAAGcAAACCAwAAgwMAAIQDAABrAAAAbAAAAG0AAAAxOGJ0RGJ2dFRyZWVDb2xsaWRlcgAAAABIaAAAGFgAAJwTAAAAAAAAeFgAAGcAAACFAwAAaQAAAIYDAABrAAAAbAAAAG0AAAAxOUJyb2FkcGhhc2VSYXlUZXN0ZXIAAABIaAAAYFgAAJwTAAAAAAAAwFgAAGcAAACHAwAAaQAAAIgDAABrAAAAbAAAAG0AAAAyMEJyb2FkcGhhc2VBYWJiVGVzdGVyAABIaAAAqFgAAJwTAAAxMmJ0RGlzcGF0Y2hlcgAAIGgAAMxYAAAAAAAAdFkAAIkDAACKAwAAAgMAAAMDAAAEAwAABQMAAAYDAABidE9wdGltaXplZEJ2aE5vZGVEYXRhAGJ0UXVhbnRpemVkQnZoTm9kZURhdGEAYnRCdmhTdWJ0cmVlSW5mb0RhdGEAYnRRdWFudGl6ZWRCdmhGbG9hdERhdGEAMTRidFF1YW50aXplZEJ2aAAgaAAAY1kAAAAAAADMFgAAsAEAAIsDAAAHAAAABwAAAAcAAABSb290AAAAABe30TgQAAAALSsgICAwWDB4AChudWxsKQAAAAAAAAAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAETCQsLAAAJBgsAAAsABhEAAAAREREAQZG0AQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEHLtAELAQwAQde0AQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEGFtQELAQ4AQZG1AQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEG/tQELARAAQcu1AQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEGCtgELDhIAAAASEhIAAAAAAAAJAEGztgELAQsAQb+2AQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHttgELAQwAQfm2AQtLDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGLTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYAbmFuAE5BTgAuAEHQtwEL1xUDAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6nAPU1ggBEuy4AnOmEALQmcABBfl8A1pE5AFODOQCc9DkAi1+EACj5vQD4HzsA3v+XAA+YBQARL+8AClqLAG0fbQDPfjYACcsnAEZPtwCeZj8ALepfALondQDl68cAPXvxAPc5BwCSUooA+2vqAB+xXwAIXY0AMANWAHv8RgDwq2sAILzPADb0mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAGcRHAM1nwwAJ6NwAWYMqAIt2xACmHJYARK/dABlX0QClPgUABQf/ADN+PwDCMugAmE/eALt9MgAmPcMAHmvvAJ/4XgA1HzoAf/LKAPGHHQB8kCEAaiR8ANVu+gAwLXcAFTtDALUUxgDDGZ0ArcTCACxNQQAMAF0Ahn1GAONxLQCbxpoAM2IAALTSfAC0p5cAN1XVANc+9gCjEBgATXb8AGSdKgBw16sAY3z4AHqwVwAXFecAwElWADvW2QCnhDgAJCPLANaKdwBaVCMAAB+5APEKGwAZzt8AnzH/AGYeagCZV2EArPtHAH5/2AAiZbcAMuiJAOa/YADvxM0AbDYJAF0/1AAW3tcAWDveAN6bkgDSIigAKIboAOJYTQDGyjIACOMWAOB9ywAXwFAA8x2nABjgWwAuEzQAgxJiAINIAQD1jlsArbB/AB7p8gBISkMAEGfTAKrd2ACuX0IAamHOAAoopADTmbQABqbyAFx3fwCjwoMAYTyIAIpzeACvjFoAb9e9AC2mYwD0v8sAjYHvACbBZwBVykUAytk2ACio0gDCYY0AEsl3AAQmFAASRpsAxFnEAMjFRABNspEAABfzANRDrQApSeUA/dUQAAC+/AAelMwAcM7uABM+9QDs8YAAs+fDAMf4KACTBZQAwXE+AC4JswALRfMAiBKcAKsgewAutZ8AR5LCAHsyLwAMVW0AcqeQAGvnHwAxy5YAeRZKAEF54gD034kA6JSXAOLmhACZMZcAiO1rAF9fNgC7/Q4ASJq0AGekbABxckIAjV0yAJ8VuAC85QkAjTElAPd0OQAwBRwADQwBAEsIaAAs7lgAR6qQAHTnAgC91iQA932mAG5IcgCfFu8AjpSmALSR9gDRU1EAzwryACCYMwD1S34AsmNoAN0+XwBAXQMAhYl/AFVSKQA3ZMAAbdgQADJIMgBbTHUATnHUAEVUbgALCcEAKvVpABRm1QAnB50AXQRQALQ72wDqdsUAh/kXAElrfQAdJ7oAlmkpAMbMrACtFFQAkOJqAIjZiQAsclAABKS+AHcHlADzMHAAAPwnAOpxqABmwkkAZOA9AJfdgwCjP5cAQ5T9AA2GjAAxQd4AkjmdAN1wjAAXt+cACN87ABU3KwBcgKAAWoCTABARkgAP6NgAbICvANv/SwA4kA8AWRh2AGKlFQBhy7sAx4m5ABBAvQDS8gQASXUnAOu29gDbIrsAChSqAIkmLwBkg3YACTszAA6UGgBROqoAHaPCAK/trgBcJhIAbcJNAC16nADAVpcAAz+DAAnw9gArQIwAbTGZADm0BwAMIBUA2MNbAPWSxADGrUsATsqlAKc3zQDmqTYAq5KUAN1CaAAZY94AdozvAGiLUgD82zcArqGrAN8VMQAArqEADPvaAGRNZgDtBbcAKWUwAFdWvwBH/zoAavm5AHW+8wAok98Aq4AwAGaM9gAEyxUA+iIGANnkHQA9s6QAVxuPADbNCQBOQukAE76kADMjtQDwqhoAT2WoANLBpQALPw8AW3jNACP5dgB7iwQAiRdyAMamUwBvbuIA7+sAAJtKWADE2rcAqma6AHbPzwDRAh0AsfEtAIyZwQDDrXcAhkjaAPddoADGgPQArPAvAN3smgA/XLwA0N5tAJDHHwAq27YAoyU6AACvmgCtU5MAtlcEACkttABLgH4A2genAHaqDgB7WaEAFhIqANy3LQD65f0Aidv+AIm+/QDkdmwABqn8AD6AcACFbhUA/Yf/ACg+BwBhZzMAKhiGAE296gCz568Aj21uAJVnOQAxv1sAhNdIADDfFgDHLUMAJWE1AMlwzgAwy7gAv2z9AKQAogAFbOQAWt2gACFvRwBiEtIAuVyEAHBhSQBrVuAAmVIBAFBVNwAe1bcAM/HEABNuXwBdMOQAhS6pAB2ywwChMjYACLekAOqx1AAW9yEAj2nkACf/dwAMA4AAjUAtAE/NoAAgpZkAs6LTAC9dCgC0+UIAEdrLAH2+0ACb28EAqxe9AMqigQAIalwALlUXACcAVQB/FPAA4QeGABQLZACWQY0Ah77eANr9KgBrJbYAe4k0AAXz/gC5v54AaGpPAEoqqABPxFoALfi8ANdamAD0x5UADU2NACA6pgCkV18AFD+xAIA4lQDMIAEAcd2GAMnetgC/YPUATWURAAEHawCMsKwAssDQAFFVSAAe+w4AlXLDAKMGOwDAQDUABtx7AOBFzABOKfoA1srIAOjzQQB8ZN4Am2TYANm+MQCkl8MAd1jUAGnjxQDw2hMAujo8AEYYRgBVdV8A0r31AG6SxgCsLl0ADkTtABw+QgBhxIcAKf3pAOfW8wAifMoAb5E1AAjgxQD/140AbmriALD9xgCTCMEAfF10AGutsgDNbp0APnJ7AMYRagD3z6kAKXPfALXJugC3AFEA4rINAHS6JADlfWAAdNiKAA0VLACBGAwAfmaUAAEpFgCfenYA/f2+AFZF7wDZfjYA7NkTAIu6uQDEl/wAMagnAPFuwwCUxTYA2KhWALSotQDPzA4AEoktAG9XNAAsVokAmc7jANYguQBrXqoAPiqcABFfzAD9C0oA4fT7AI47bQDihiwA6dSEAPy0qQDv7tEALjXJAC85YQA4IUQAG9nIAIH8CgD7SmoALxzYAFO0hABOmYwAVCLMACpV3ADAxtYACxmWABpwuABplWQAJlpgAD9S7gB/EQ8A9LURAPzL9QA0vC0ANLzuAOhdzADdXmAAZ46bAJIz7wDJF7gAYVibAOFXvABRg8YA2D4QAN1xSAAtHN0ArxihACEsRgBZ89cA2XqYAJ5UwABPhvoAVgb8AOV5rgCJIjYAOK0iAGeT3ABV6KoAgiY4AMrnmwBRDaQAmTOxAKnXDgBpBUgAZbLwAH+IpwCITJcA+dE2ACGSswB7gkoAmM8hAECf3ADcR1UA4XQ6AGfrQgD+nd8AXtRfAHtnpAC6rHoAVfaiACuIIwBBulUAWW4IACEqhgA5R4MAiePmAOWe1ABJ+0AA/1bpABwPygDFWYoAlPorANPBxQAPxc8A21quAEfFhgCFQ2IAIYY7ACx5lAAQYYcAKkx7AIAsGgBDvxIAiCaQAHg8iQCoxOQA5dt7AMQ6wgAm9OoA92eKAA2SvwBloysAPZOxAL18CwCkUdwAJ91jAGnh3QCalBkAqCmVAGjOKAAJ7bQARJ8gAE6YygBwgmMAfnwjAA+5MgCn9Y4AFFbnACHxCAC1nSoAb35NAKUZUQC1+asAgt/WAJbdYQAWNgIAxDqfAIOioQBy7W0AOY16AIK4qQBrMlwARidbAAA07QDSAHcA/PRVAAFZTQDgcYAAQbPNAQvDBED7Ifk/AAAAAC1EdD4AAACAmEb4PAAAAGBRzHg7AAAAgIMb8DkAAABAICV6OAAAAIAiguM2AAAAAB3zaTU4Y+0+2g9JP16Yez/aD8k/aTesMWghIjO0DxQzaCGiM9sPST/bD0m/5MsWQOTLFsAAAAAAAAAAgNsPSUDbD0nAAACAPwAAwD8AAAAA3M/RNQAAAAAAwBU/CGoAAF9fY3hhX2d1YXJkX2FjcXVpcmUgZGV0ZWN0ZWQgcmVjdXJzaXZlIGluaXRpYWxpemF0aW9uAFB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsZWQhAFN0OXR5cGVfaW5mbwAAAAAgaAAAoGcAAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAAAAAEhoAAC4ZwAAsGcAAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQAAAEhoAADoZwAA3GcAAAAAAAAMaAAAlwMAAJgDAACZAwAAmgMAAJsDAACcAwAAnQMAAJ4DAAAAAAAAkGgAAJcDAACfAwAAmQMAAJoDAACbAwAAoAMAAKEDAACiAwAATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAAAAAEhoAABoaAAADGgAAAAAAADsaAAAlwMAAKMDAACZAwAAmgMAAJsDAACkAwAApQMAAKYDAABOMTBfX2N4eGFiaXYxMjFfX3ZtaV9jbGFzc190eXBlX2luZm9FAAAASGgAAMRoAAAMaABB+9EBCyVAAACAPwrXozwBAQAAvHsAAI4DAACPAwAAkAMAAJEDAAD/////AEHQ0wELAiR8AEGI1AELAQUAQZTUAQsClAMAQazUAQsKlQMAAJYDAABEfABBxNQBCwECAEHT1AELBf//////", "dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGspe3ZhciBuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG48ay5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6a1tuKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oayl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChrKX19OyRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGspe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmtbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwoayk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGspfTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTsKJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihrKXtrPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsaywib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIG49MDtuPGsubGVuZ3RoOysrbil7dmFyIGw9a1tuXTtpZihsJiZsLk1hdGg9PU1hdGgpcmV0dXJuIGx9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOwokanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihrLG4sbCl7aWYoaz09QXJyYXkucHJvdG90eXBlfHxrPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBrO2tbbl09bC52YWx1ZTtyZXR1cm4ga307JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTskanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjsKdmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGssbil7dmFyIGw9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbbl07aWYobnVsbD09bClyZXR1cm4ga1tuXTtsPWtbbF07cmV0dXJuIHZvaWQgMCE9PWw/bDprW25dfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGssbixsLHApe24mJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChrLG4sbCxwKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChrLG4sbCxwKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihrLG4sbCxwKXtsPSRqc2NvbXAuZ2xvYmFsO2s9ay5zcGxpdCgiLiIpO2ZvcihwPTA7cDxrLmxlbmd0aC0xO3ArKyl7dmFyIGg9a1twXTtpZighKGggaW4gbCkpcmV0dXJuO2w9bFtoXX1rPWtbay5sZW5ndGgtMV07cD1sW2tdO249bihwKTtuIT1wJiZudWxsIT1uJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGwsayx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm59KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihrLG4sbCxwKXt2YXIgaD1rLnNwbGl0KCIuIik7az0xPT09aC5sZW5ndGg7cD1oWzBdO3A9IWsmJnAgaW4gJGpzY29tcC5wb2x5ZmlsbHM/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBBPTA7QTxoLmxlbmd0aC0xO0ErKyl7dmFyIGY9aFtBXTtpZighKGYgaW4gcCkpcmV0dXJuO3A9cFtmXX1oPWhbaC5sZW5ndGgtMV07bD0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09bD9wW2hdOm51bGw7bj1uKGwpO251bGwhPW4mJihrPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsaCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm59KTpuIT09bCYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdJiYobD0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woaCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrbCsiJCIraCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShwLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bn0pKSl9OwokanNjb21wLnBvbHlmaWxsKCJQcm9taXNlIixmdW5jdGlvbihrKXtmdW5jdGlvbiBuKCl7dGhpcy5iYXRjaF89bnVsbH1mdW5jdGlvbiBsKGYpe3JldHVybiBmIGluc3RhbmNlb2YgaD9mOm5ldyBoKGZ1bmN0aW9uKHEsdil7cShmKX0pfWlmKGsmJighKCRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRXx8JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTiYmInVuZGVmaW5lZCI9PT10eXBlb2YgJGpzY29tcC5nbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KXx8ISRqc2NvbXAuZ2xvYmFsLlByb21pc2V8fC0xPT09JGpzY29tcC5nbG9iYWwuUHJvbWlzZS50b1N0cmluZygpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGs7bi5wcm90b3R5cGUuYXN5bmNFeGVjdXRlPWZ1bmN0aW9uKGYpe2lmKG51bGw9PXRoaXMuYmF0Y2hfKXt0aGlzLmJhdGNoXz1bXTt2YXIgcT10aGlzO3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXtxLmV4ZWN1dGVCYXRjaF8oKX0pfXRoaXMuYmF0Y2hfLnB1c2goZil9Owp2YXIgcD0kanNjb21wLmdsb2JhbC5zZXRUaW1lb3V0O24ucHJvdG90eXBlLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uPWZ1bmN0aW9uKGYpe3AoZiwwKX07bi5wcm90b3R5cGUuZXhlY3V0ZUJhdGNoXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5iYXRjaF8mJnRoaXMuYmF0Y2hfLmxlbmd0aDspe3ZhciBmPXRoaXMuYmF0Y2hfO3RoaXMuYmF0Y2hfPVtdO2Zvcih2YXIgcT0wO3E8Zi5sZW5ndGg7KytxKXt2YXIgdj1mW3FdO2ZbcV09bnVsbDt0cnl7digpfWNhdGNoKHope3RoaXMuYXN5bmNUaHJvd18oeil9fX10aGlzLmJhdGNoXz1udWxsfTtuLnByb3RvdHlwZS5hc3luY1Rocm93Xz1mdW5jdGlvbihmKXt0aGlzLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uKGZ1bmN0aW9uKCl7dGhyb3cgZjt9KX07dmFyIGg9ZnVuY3Rpb24oZil7dGhpcy5zdGF0ZV89MDt0aGlzLnJlc3VsdF89dm9pZCAwO3RoaXMub25TZXR0bGVkQ2FsbGJhY2tzXz1bXTt0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF89ITE7dmFyIHE9dGhpcy5jcmVhdGVSZXNvbHZlQW5kUmVqZWN0XygpOwp0cnl7ZihxLnJlc29sdmUscS5yZWplY3QpfWNhdGNoKHYpe3EucmVqZWN0KHYpfX07aC5wcm90b3R5cGUuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKHope3JldHVybiBmdW5jdGlvbihPKXt2fHwodj0hMCx6LmNhbGwocSxPKSl9fXZhciBxPXRoaXMsdj0hMTtyZXR1cm57cmVzb2x2ZTpmKHRoaXMucmVzb2x2ZVRvXykscmVqZWN0OmYodGhpcy5yZWplY3RfKX19O2gucHJvdG90eXBlLnJlc29sdmVUb189ZnVuY3Rpb24oZil7aWYoZj09PXRoaXMpdGhpcy5yZWplY3RfKG5ldyBUeXBlRXJyb3IoIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk7ZWxzZSBpZihmIGluc3RhbmNlb2YgaCl0aGlzLnNldHRsZVNhbWVBc1Byb21pc2VfKGYpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGYpe2Nhc2UgIm9iamVjdCI6dmFyIHE9bnVsbCE9ZjticmVhayBhO2Nhc2UgImZ1bmN0aW9uIjpxPSEwO2JyZWFrIGE7ZGVmYXVsdDpxPSExfXE/dGhpcy5yZXNvbHZlVG9Ob25Qcm9taXNlT2JqXyhmKToKdGhpcy5mdWxmaWxsXyhmKX19O2gucHJvdG90eXBlLnJlc29sdmVUb05vblByb21pc2VPYmpfPWZ1bmN0aW9uKGYpe3ZhciBxPXZvaWQgMDt0cnl7cT1mLnRoZW59Y2F0Y2godil7dGhpcy5yZWplY3RfKHYpO3JldHVybn0iZnVuY3Rpb24iPT10eXBlb2YgcT90aGlzLnNldHRsZVNhbWVBc1RoZW5hYmxlXyhxLGYpOnRoaXMuZnVsZmlsbF8oZil9O2gucHJvdG90eXBlLnJlamVjdF89ZnVuY3Rpb24oZil7dGhpcy5zZXR0bGVfKDIsZil9O2gucHJvdG90eXBlLmZ1bGZpbGxfPWZ1bmN0aW9uKGYpe3RoaXMuc2V0dGxlXygxLGYpfTtoLnByb3RvdHlwZS5zZXR0bGVfPWZ1bmN0aW9uKGYscSl7aWYoMCE9dGhpcy5zdGF0ZV8pdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIitmKyIsICIrcSsiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuc3RhdGVfKTt0aGlzLnN0YXRlXz1mO3RoaXMucmVzdWx0Xz1xOzI9PT10aGlzLnN0YXRlXyYmdGhpcy5zY2hlZHVsZVVuaGFuZGxlZFJlamVjdGlvbkNoZWNrXygpOwp0aGlzLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfKCl9O2gucHJvdG90eXBlLnNjaGVkdWxlVW5oYW5kbGVkUmVqZWN0aW9uQ2hlY2tfPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcztwKGZ1bmN0aW9uKCl7aWYoZi5ub3RpZnlVbmhhbmRsZWRSZWplY3Rpb25fKCkpe3ZhciBxPSRqc2NvbXAuZ2xvYmFsLmNvbnNvbGU7InVuZGVmaW5lZCIhPT10eXBlb2YgcSYmcS5lcnJvcihmLnJlc3VsdF8pfX0sMSl9O2gucHJvdG90eXBlLm5vdGlmeVVuaGFuZGxlZFJlamVjdGlvbl89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF8pcmV0dXJuITE7dmFyIGY9JGpzY29tcC5nbG9iYWwuQ3VzdG9tRXZlbnQscT0kanNjb21wLmdsb2JhbC5FdmVudCx2PSRqc2NvbXAuZ2xvYmFsLmRpc3BhdGNoRXZlbnQ7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgdilyZXR1cm4hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGY/Zj1uZXcgZigidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOgoiZnVuY3Rpb24iPT09dHlwZW9mIHE/Zj1uZXcgcSgidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOihmPSRqc2NvbXAuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpLGYuaW5pdEN1c3RvbUV2ZW50KCJ1bmhhbmRsZWRyZWplY3Rpb24iLCExLCEwLGYpKTtmLnByb21pc2U9dGhpcztmLnJlYXNvbj10aGlzLnJlc3VsdF87cmV0dXJuIHYoZil9O2gucHJvdG90eXBlLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5vblNldHRsZWRDYWxsYmFja3NfKXtmb3IodmFyIGY9MDtmPHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5sZW5ndGg7KytmKUEuYXN5bmNFeGVjdXRlKHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzX1tmXSk7dGhpcy5vblNldHRsZWRDYWxsYmFja3NfPW51bGx9fTt2YXIgQT1uZXcgbjtoLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNQcm9taXNlXz1mdW5jdGlvbihmKXt2YXIgcT10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7CmYuY2FsbFdoZW5TZXR0bGVkXyhxLnJlc29sdmUscS5yZWplY3QpfTtoLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNUaGVuYWJsZV89ZnVuY3Rpb24oZixxKXt2YXIgdj10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7dHJ5e2YuY2FsbChxLHYucmVzb2x2ZSx2LnJlamVjdCl9Y2F0Y2goeil7di5yZWplY3Qoeil9fTtoLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGYscSl7ZnVuY3Rpb24gdih0LHgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKEQpe3RyeXt6KHQoRCkpfWNhdGNoKFIpe08oUil9fTp4fXZhciB6LE8sYmE9bmV3IGgoZnVuY3Rpb24odCx4KXt6PXQ7Tz14fSk7dGhpcy5jYWxsV2hlblNldHRsZWRfKHYoZix6KSx2KHEsTykpO3JldHVybiBiYX07aC5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZil9O2gucHJvdG90eXBlLmNhbGxXaGVuU2V0dGxlZF89ZnVuY3Rpb24oZixxKXtmdW5jdGlvbiB2KCl7c3dpdGNoKHouc3RhdGVfKXtjYXNlIDE6Zih6LnJlc3VsdF8pOwpicmVhaztjYXNlIDI6cSh6LnJlc3VsdF8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuZXhwZWN0ZWQgc3RhdGU6ICIrei5zdGF0ZV8pO319dmFyIHo9dGhpcztudWxsPT10aGlzLm9uU2V0dGxlZENhbGxiYWNrc18/QS5hc3luY0V4ZWN1dGUodik6dGhpcy5vblNldHRsZWRDYWxsYmFja3NfLnB1c2godik7dGhpcy5pc1JlamVjdGlvbkhhbmRsZWRfPSEwfTtoLnJlc29sdmU9bDtoLnJlamVjdD1mdW5jdGlvbihmKXtyZXR1cm4gbmV3IGgoZnVuY3Rpb24ocSx2KXt2KGYpfSl9O2gucmFjZT1mdW5jdGlvbihmKXtyZXR1cm4gbmV3IGgoZnVuY3Rpb24ocSx2KXtmb3IodmFyIHo9JGpzY29tcC5tYWtlSXRlcmF0b3IoZiksTz16Lm5leHQoKTshTy5kb25lO089ei5uZXh0KCkpbChPLnZhbHVlKS5jYWxsV2hlblNldHRsZWRfKHEsdil9KX07aC5hbGw9ZnVuY3Rpb24oZil7dmFyIHE9JGpzY29tcC5tYWtlSXRlcmF0b3IoZiksdj1xLm5leHQoKTtyZXR1cm4gdi5kb25lP2woW10pOm5ldyBoKGZ1bmN0aW9uKHosCk8pe2Z1bmN0aW9uIGJhKEQpe3JldHVybiBmdW5jdGlvbihSKXt0W0RdPVI7eC0tOzA9PXgmJnoodCl9fXZhciB0PVtdLHg9MDtkbyB0LnB1c2godm9pZCAwKSx4KyssbCh2LnZhbHVlKS5jYWxsV2hlblNldHRsZWRfKGJhKHQubGVuZ3RoLTEpLE8pLHY9cS5uZXh0KCk7d2hpbGUoIXYuZG9uZSl9KX07cmV0dXJuIGh9LCJlczYiLCJlczMiKTskanNjb21wLm93bnM9ZnVuY3Rpb24oayxuKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGssbil9OyRqc2NvbXAuYXNzaWduPSRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUyYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihrLG4pe2Zvcih2YXIgbD0xO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspe3ZhciBwPWFyZ3VtZW50c1tsXTtpZihwKWZvcih2YXIgaCBpbiBwKSRqc2NvbXAub3ducyhwLGgpJiYoa1toXT1wW2hdKX1yZXR1cm4ga307CiRqc2NvbXAucG9seWZpbGwoIk9iamVjdC5hc3NpZ24iLGZ1bmN0aW9uKGspe3JldHVybiBrfHwkanNjb21wLmFzc2lnbn0sImVzNiIsImVzMyIpOyRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzPWZ1bmN0aW9uKGssbixsKXtpZihudWxsPT1rKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSAndGhpcycgdmFsdWUgZm9yIFN0cmluZy5wcm90b3R5cGUuIitsKyIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTtpZihuIGluc3RhbmNlb2YgUmVnRXhwKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuIitsKyIgbXVzdCBub3QgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24iKTtyZXR1cm4gaysiIn07CiRqc2NvbXAucG9seWZpbGwoIlN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCIsZnVuY3Rpb24oayl7cmV0dXJuIGs/azpmdW5jdGlvbihuLGwpe3ZhciBwPSRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzKHRoaXMsbiwic3RhcnRzV2l0aCIpO24rPSIiO3ZhciBoPXAubGVuZ3RoLEE9bi5sZW5ndGg7bD1NYXRoLm1heCgwLE1hdGgubWluKGx8MCxwLmxlbmd0aCkpO2Zvcih2YXIgZj0wO2Y8QSYmbDxoOylpZihwW2wrK10hPW5bZisrXSlyZXR1cm4hMTtyZXR1cm4gZj49QX19LCJlczYiLCJlczMiKTsKJGpzY29tcC5wb2x5ZmlsbCgiQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGZ1bmN0aW9uKGspe2Z1bmN0aW9uIG4obCl7bD1OdW1iZXIobCk7cmV0dXJuIEluZmluaXR5PT09bHx8LUluZmluaXR5PT09bD9sOmx8MH1yZXR1cm4gaz9rOmZ1bmN0aW9uKGwscCxoKXt2YXIgQT10aGlzLmxlbmd0aDtsPW4obCk7cD1uKHApO2g9dm9pZCAwPT09aD9BOm4oaCk7bD0wPmw/TWF0aC5tYXgoQStsLDApOk1hdGgubWluKGwsQSk7cD0wPnA/TWF0aC5tYXgoQStwLDApOk1hdGgubWluKHAsQSk7aD0wPmg/TWF0aC5tYXgoQStoLDApOk1hdGgubWluKGgsQSk7aWYobDxwKWZvcig7cDxoOylwIGluIHRoaXM/dGhpc1tsKytdPXRoaXNbcCsrXTooZGVsZXRlIHRoaXNbbCsrXSxwKyspO2Vsc2UgZm9yKGg9TWF0aC5taW4oaCxBK3AtbCksbCs9aC1wO2g+cDspLS1oIGluIHRoaXM/dGhpc1stLWxdPXRoaXNbaF06ZGVsZXRlIHRoaXNbLS1sXTtyZXR1cm4gdGhpc319LCJlczYiLCJlczMiKTsKJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbj1mdW5jdGlvbihrKXtyZXR1cm4gaz9rOkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGlufTskanNjb21wLnBvbHlmaWxsKCJJbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIlVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIlVpbnQ4Q2xhbXBlZEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIiwkanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTskanNjb21wLnBvbHlmaWxsKCJJbnQxNkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIiwkanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTsKJGpzY29tcC5wb2x5ZmlsbCgiVWludDE2QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIkludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIlVpbnQzMkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIiwkanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTskanNjb21wLnBvbHlmaWxsKCJGbG9hdDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIkZsb2F0NjRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7CnZhciBEcmFjb0RlY29kZXJNb2R1bGU9ZnVuY3Rpb24oKXt2YXIgaz0idW5kZWZpbmVkIiE9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzp2b2lkIDA7InVuZGVmaW5lZCIhPT10eXBlb2YgX19maWxlbmFtZSYmKGs9a3x8X19maWxlbmFtZSk7cmV0dXJuIGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGEubG9jYXRlRmlsZT9hLmxvY2F0ZUZpbGUoZSxVKTpVK2V9ZnVuY3Rpb24gcChlLGIsYyl7dmFyIGQ9YitjO2ZvcihjPWI7ZVtjXSYmIShjPj1kKTspKytjO2lmKDE2PGMtYiYmZS5idWZmZXImJnZhKXJldHVybiB2YS5kZWNvZGUoZS5zdWJhcnJheShiLGMpKTtmb3IoZD0iIjtiPGM7KXt2YXIgZz1lW2IrK107aWYoZyYxMjgpe3ZhciB1PWVbYisrXSY2MztpZigxOTI9PShnJjIyNCkpZCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoZyYzMSk8PDZ8dSk7ZWxzZXt2YXIgWD1lW2IrK10mNjM7Zz0yMjQ9PQooZyYyNDApPyhnJjE1KTw8MTJ8dTw8NnxYOihnJjcpPDwxOHx1PDwxMnxYPDw2fGVbYisrXSY2Mzs2NTUzNj5nP2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk6KGctPTY1NTM2LGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Zz4+MTAsNTYzMjB8ZyYxMDIzKSl9fWVsc2UgZCs9U3RyaW5nLmZyb21DaGFyQ29kZShnKX1yZXR1cm4gZH1mdW5jdGlvbiBoKGUsYil7cmV0dXJuIGU/cChlYSxlLGIpOiIifWZ1bmN0aW9uIEEoKXt2YXIgZT1qYS5idWZmZXI7YS5IRUFQOD1ZPW5ldyBJbnQ4QXJyYXkoZSk7YS5IRUFQMTY9bmV3IEludDE2QXJyYXkoZSk7YS5IRUFQMzI9Y2E9bmV3IEludDMyQXJyYXkoZSk7YS5IRUFQVTg9ZWE9bmV3IFVpbnQ4QXJyYXkoZSk7YS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShlKTthLkhFQVBVMzI9Vj1uZXcgVWludDMyQXJyYXkoZSk7YS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSk7YS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9ZnVuY3Rpb24gZihlKXtpZihhLm9uQWJvcnQpYS5vbkFib3J0KGUpOwplPSJBYm9ydGVkKCIrZSsiKSI7ZGEoZSk7d2E9ITA7ZT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUrIi4gQnVpbGQgd2l0aCAtc0FTU0VSVElPTlMgZm9yIG1vcmUgaW5mby4iKTtrYShlKTt0aHJvdyBlO31mdW5jdGlvbiBxKGUpe3RyeXtpZihlPT1QJiZmYSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZmEpO2lmKG1hKXJldHVybiBtYShlKTt0aHJvdyJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCI7fWNhdGNoKGIpe2YoYil9fWZ1bmN0aW9uIHYoKXtpZighZmEmJih4YXx8aGEpKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZmV0Y2gmJiFQLnN0YXJ0c1dpdGgoImZpbGU6Ly8iKSlyZXR1cm4gZmV0Y2goUCx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oZSl7aWYoIWUub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitQKyInIjtyZXR1cm4gZS5hcnJheUJ1ZmZlcigpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gcShQKX0pOwppZihuYSlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSxiKXtuYShQLGZ1bmN0aW9uKGMpe2UobmV3IFVpbnQ4QXJyYXkoYykpfSxiKX0pfXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHEoUCl9KX1mdW5jdGlvbiB6KGUpe2Zvcig7MDxlLmxlbmd0aDspZS5zaGlmdCgpKGEpfWZ1bmN0aW9uIE8oZSl7dGhpcy5leGNQdHI9ZTt0aGlzLnB0cj1lLTI0O3RoaXMuc2V0X3R5cGU9ZnVuY3Rpb24oYil7Vlt0aGlzLnB0cis0Pj4yXT1ifTt0aGlzLmdldF90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIFZbdGhpcy5wdHIrND4+Ml19O3RoaXMuc2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oYil7Vlt0aGlzLnB0cis4Pj4yXT1ifTt0aGlzLmdldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIFZbdGhpcy5wdHIrOD4+Ml19O3RoaXMuc2V0X3JlZmNvdW50PWZ1bmN0aW9uKGIpe2NhW3RoaXMucHRyPj4yXT1ifTt0aGlzLnNldF9jYXVnaHQ9ZnVuY3Rpb24oYil7WVt0aGlzLnB0cisKMTI+PjBdPWI/MTowfTt0aGlzLmdldF9jYXVnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9WVt0aGlzLnB0cisxMj4+MF19O3RoaXMuc2V0X3JldGhyb3duPWZ1bmN0aW9uKGIpe1lbdGhpcy5wdHIrMTM+PjBdPWI/MTowfTt0aGlzLmdldF9yZXRocm93bj1mdW5jdGlvbigpe3JldHVybiAwIT1ZW3RoaXMucHRyKzEzPj4wXX07dGhpcy5pbml0PWZ1bmN0aW9uKGIsYyl7dGhpcy5zZXRfYWRqdXN0ZWRfcHRyKDApO3RoaXMuc2V0X3R5cGUoYik7dGhpcy5zZXRfZGVzdHJ1Y3RvcihjKTt0aGlzLnNldF9yZWZjb3VudCgwKTt0aGlzLnNldF9jYXVnaHQoITEpO3RoaXMuc2V0X3JldGhyb3duKCExKX07dGhpcy5hZGRfcmVmPWZ1bmN0aW9uKCl7Y2FbdGhpcy5wdHI+PjJdKz0xfTt0aGlzLnJlbGVhc2VfcmVmPWZ1bmN0aW9uKCl7dmFyIGI9Y2FbdGhpcy5wdHI+PjJdO2NhW3RoaXMucHRyPj4yXT1iLTE7cmV0dXJuIDE9PT1ifTt0aGlzLnNldF9hZGp1c3RlZF9wdHI9ZnVuY3Rpb24oYil7Vlt0aGlzLnB0cisKMTY+PjJdPWJ9O3RoaXMuZ2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbigpe3JldHVybiBWW3RoaXMucHRyKzE2Pj4yXX07dGhpcy5nZXRfZXhjZXB0aW9uX3B0cj1mdW5jdGlvbigpe2lmKHlhKHRoaXMuZ2V0X3R5cGUoKSkpcmV0dXJuIFZbdGhpcy5leGNQdHI+PjJdO3ZhciBiPXRoaXMuZ2V0X2FkanVzdGVkX3B0cigpO3JldHVybiAwIT09Yj9iOnRoaXMuZXhjUHRyfX1mdW5jdGlvbiBiYSgpe2Z1bmN0aW9uIGUoKXtpZighbGEmJihsYT0hMCxhLmNhbGxlZFJ1bj0hMCwhd2EpKXt6YT0hMDt6KG9hKTtBYShhKTtpZihhLm9uUnVudGltZUluaXRpYWxpemVkKWEub25SdW50aW1lSW5pdGlhbGl6ZWQoKTtpZihhLnBvc3RSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2EucG9zdFJ1bi5sZW5ndGg7KUJhLnVuc2hpZnQoYS5wb3N0UnVuLnNoaWZ0KCkpO3ooQmEpfX1pZighKDA8YWEpKXtpZihhLnByZVJ1bilmb3IoImZ1bmN0aW9uIj09CnR5cGVvZiBhLnByZVJ1biYmKGEucHJlUnVuPVthLnByZVJ1bl0pO2EucHJlUnVuLmxlbmd0aDspQ2EudW5zaGlmdChhLnByZVJ1bi5zaGlmdCgpKTt6KENhKTswPGFhfHwoYS5zZXRTdGF0dXM/KGEuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnNldFN0YXR1cygiIil9LDEpO2UoKX0sMSkpOmUoKSl9fWZ1bmN0aW9uIHQoKXt9ZnVuY3Rpb24geChlKXtyZXR1cm4oZXx8dCkuX19jYWNoZV9ffWZ1bmN0aW9uIEQoZSxiKXt2YXIgYz14KGIpLGQ9Y1tlXTtpZihkKXJldHVybiBkO2Q9T2JqZWN0LmNyZWF0ZSgoYnx8dCkucHJvdG90eXBlKTtkLnB0cj1lO3JldHVybiBjW2VdPWR9ZnVuY3Rpb24gUihlKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXtmb3IodmFyIGI9MCxjPTA7YzxlLmxlbmd0aDsrK2Mpe3ZhciBkPWUuY2hhckNvZGVBdChjKTsxMjc+PWQ/YisrOjIwNDc+PWQ/Yis9Mjo1NTI5Njw9ZCYmNTczNDM+PQpkPyhiKz00LCsrYyk6Yis9M31iPUFycmF5KGIrMSk7Yz0wO2Q9Yi5sZW5ndGg7aWYoMDxkKXtkPWMrZC0xO2Zvcih2YXIgZz0wO2c8ZS5sZW5ndGg7KytnKXt2YXIgdT1lLmNoYXJDb2RlQXQoZyk7aWYoNTUyOTY8PXUmJjU3MzQzPj11KXt2YXIgWD1lLmNoYXJDb2RlQXQoKytnKTt1PTY1NTM2KygodSYxMDIzKTw8MTApfFgmMTAyM31pZigxMjc+PXUpe2lmKGM+PWQpYnJlYWs7YltjKytdPXV9ZWxzZXtpZigyMDQ3Pj11KXtpZihjKzE+PWQpYnJlYWs7YltjKytdPTE5Mnx1Pj42fWVsc2V7aWYoNjU1MzU+PXUpe2lmKGMrMj49ZClicmVhaztiW2MrK109MjI0fHU+PjEyfWVsc2V7aWYoYyszPj1kKWJyZWFrO2JbYysrXT0yNDB8dT4+MTg7YltjKytdPTEyOHx1Pj4xMiY2M31iW2MrK109MTI4fHU+PjYmNjN9YltjKytdPTEyOHx1JjYzfX1iW2NdPTB9ZT1yLmFsbG9jKGIsWSk7ci5jb3B5KGIsWSxlKTtyZXR1cm4gZX1yZXR1cm4gZX1mdW5jdGlvbiBwYShlKXtpZigib2JqZWN0Ij09PXR5cGVvZiBlKXt2YXIgYj0Kci5hbGxvYyhlLFkpO3IuY29weShlLFksYik7cmV0dXJuIGJ9cmV0dXJuIGV9ZnVuY3Rpb24gWigpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBWb2lkUHRyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiO31mdW5jdGlvbiBTKCl7dGhpcy5wdHI9RGEoKTt4KFMpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFEoKXt0aGlzLnB0cj1FYSgpO3goUSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gVygpe3RoaXMucHRyPUZhKCk7eChXKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiB3KCl7dGhpcy5wdHI9R2EoKTt4KHcpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEMoKXt0aGlzLnB0cj1IYSgpO3goQylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gRigpe3RoaXMucHRyPUlhKCk7eChGKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBHKCl7dGhpcy5wdHI9SmEoKTt4KEcpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEUoKXt0aGlzLnB0cj1LYSgpO3goRSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gVCgpe3RoaXMucHRyPQpMYSgpO3goVClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gQigpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBTdGF0dXMsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fWZ1bmN0aW9uIEgoKXt0aGlzLnB0cj1NYSgpO3goSClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gSSgpe3RoaXMucHRyPU5hKCk7eChJKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBKKCl7dGhpcy5wdHI9T2EoKTt4KEopW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEsoKXt0aGlzLnB0cj1QYSgpO3goSylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gTCgpe3RoaXMucHRyPVFhKCk7eChMKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBNKCl7dGhpcy5wdHI9UmEoKTt4KE0pW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIE4oKXt0aGlzLnB0cj1TYSgpO3goTilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24geSgpe3RoaXMucHRyPVRhKCk7eCh5KVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBtKCl7dGhpcy5wdHI9VWEoKTt4KG0pW3RoaXMucHRyXT0KdGhpc31uPXZvaWQgMD09PW4/e306bjt2YXIgYT0idW5kZWZpbmVkIiE9dHlwZW9mIG4/bjp7fSxBYSxrYTthLnJlYWR5PW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsYil7QWE9ZTtrYT1ifSk7dmFyIFZhPSExLFdhPSExO2Eub25SdW50aW1lSW5pdGlhbGl6ZWQ9ZnVuY3Rpb24oKXtWYT0hMDtpZihXYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLm9uTW9kdWxlTG9hZGVkKWEub25Nb2R1bGVMb2FkZWQoYSl9O2Eub25Nb2R1bGVQYXJzZWQ9ZnVuY3Rpb24oKXtXYT0hMDtpZihWYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLm9uTW9kdWxlTG9hZGVkKWEub25Nb2R1bGVMb2FkZWQoYSl9O2EuaXNWZXJzaW9uU3VwcG9ydGVkPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciIT09dHlwZW9mIGUpcmV0dXJuITE7ZT1lLnNwbGl0KCIuIik7cmV0dXJuIDI+ZS5sZW5ndGh8fDM8ZS5sZW5ndGg/ITE6MT09ZVswXSYmMDw9ZVsxXSYmNT49ZVsxXT8hMDowIT1lWzBdfHwxMDxlWzFdPyExOiEwfTt2YXIgWGE9Ck9iamVjdC5hc3NpZ24oe30sYSkseGE9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3csaGE9ImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMsWWE9Im9iamVjdCI9PXR5cGVvZiBwcm9jZXNzJiYib2JqZWN0Ij09dHlwZW9mIHByb2Nlc3MudmVyc2lvbnMmJiJzdHJpbmciPT10eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLFU9IiI7aWYoWWEpe3ZhciBaYT1yZXF1aXJlKCJmcyIpLHFhPXJlcXVpcmUoInBhdGgiKTtVPWhhP3FhLmRpcm5hbWUoVSkrIi8iOl9fZGlybmFtZSsiLyI7dmFyICRhPWZ1bmN0aW9uKGUsYil7ZT1lLnN0YXJ0c1dpdGgoImZpbGU6Ly8iKT9uZXcgVVJMKGUpOnFhLm5vcm1hbGl6ZShlKTtyZXR1cm4gWmEucmVhZEZpbGVTeW5jKGUsYj92b2lkIDA6InV0ZjgiKX07dmFyIG1hPWZ1bmN0aW9uKGUpe2U9JGEoZSwhMCk7ZS5idWZmZXJ8fChlPW5ldyBVaW50OEFycmF5KGUpKTtyZXR1cm4gZX07dmFyIG5hPWZ1bmN0aW9uKGUsYixjKXtlPWUuc3RhcnRzV2l0aCgiZmlsZTovLyIpPwpuZXcgVVJMKGUpOnFhLm5vcm1hbGl6ZShlKTtaYS5yZWFkRmlsZShlLGZ1bmN0aW9uKGQsZyl7ZD9jKGQpOmIoZy5idWZmZXIpfSl9OzE8cHJvY2Vzcy5hcmd2Lmxlbmd0aCYmcHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcL2csIi8iKTtwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7YS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIn19ZWxzZSBpZih4YXx8aGEpaGE/VT1zZWxmLmxvY2F0aW9uLmhyZWY6InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmKFU9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLGsmJihVPWspLFU9MCE9PVUuaW5kZXhPZigiYmxvYjoiKT9VLnN1YnN0cigwLFUucmVwbGFjZSgvWz8jXS4qLywiIikubGFzdEluZGV4T2YoIi8iKSsxKToiIiwkYT1mdW5jdGlvbihlKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJHRVQiLGUsITEpO2Iuc2VuZChudWxsKTsKcmV0dXJuIGIucmVzcG9uc2VUZXh0fSxoYSYmKG1hPWZ1bmN0aW9uKGUpe3ZhciBiPW5ldyBYTUxIdHRwUmVxdWVzdDtiLm9wZW4oIkdFVCIsZSwhMSk7Yi5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjtiLnNlbmQobnVsbCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGIucmVzcG9uc2UpfSksbmE9ZnVuY3Rpb24oZSxiLGMpe3ZhciBkPW5ldyBYTUxIdHRwUmVxdWVzdDtkLm9wZW4oIkdFVCIsZSwhMCk7ZC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjtkLm9ubG9hZD1mdW5jdGlvbigpezIwMD09ZC5zdGF0dXN8fDA9PWQuc3RhdHVzJiZkLnJlc3BvbnNlP2IoZC5yZXNwb25zZSk6YygpfTtkLm9uZXJyb3I9YztkLnNlbmQobnVsbCl9O3ZhciB1ZD1hLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLGRhPWEucHJpbnRFcnJ8fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oYSxYYSk7WGE9bnVsbDt2YXIgZmE7YS53YXNtQmluYXJ5JiYoZmE9YS53YXNtQmluYXJ5KTsKIm9iamVjdCIhPXR5cGVvZiBXZWJBc3NlbWJseSYmZigibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBqYSx3YT0hMSx2YT0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnZvaWQgMCxZLGVhLGNhLFYsQ2E9W10sb2E9W10sQmE9W10semE9ITEsYWE9MCxyYT1udWxsLGlhPW51bGw7dmFyIFA9ImRyYWNvX2RlY29kZXIud2FzbSI7UC5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIil8fChQPWwoUCkpO3ZhciB2ZD0wLHdkPVtudWxsLFtdLFtdXSx4ZD17YjpmdW5jdGlvbihlLGIsYyl7KG5ldyBPKGUpKS5pbml0KGIsYyk7dmQrKzt0aHJvdyBlO30sYTpmdW5jdGlvbigpe2YoIiIpfSxnOmZ1bmN0aW9uKGUsYixjKXtlYS5jb3B5V2l0aGluKGUsYixiK2MpfSxlOmZ1bmN0aW9uKGUpe3ZhciBiPWVhLmxlbmd0aDtlPj4+PTA7aWYoMjE0NzQ4MzY0ODxlKXJldHVybiExO2Zvcih2YXIgYz0KMTs0Pj1jO2MqPTIpe3ZhciBkPWIqKDErLjIvYyk7ZD1NYXRoLm1pbihkLGUrMTAwNjYzMjk2KTt2YXIgZz1NYXRoO2Q9TWF0aC5tYXgoZSxkKTtnPWcubWluLmNhbGwoZywyMTQ3NDgzNjQ4LGQrKDY1NTM2LWQlNjU1MzYpJTY1NTM2KTthOntkPWphLmJ1ZmZlcjt0cnl7amEuZ3JvdyhnLWQuYnl0ZUxlbmd0aCs2NTUzNT4+PjE2KTtBKCk7dmFyIHU9MTticmVhayBhfWNhdGNoKFgpe311PXZvaWQgMH1pZih1KXJldHVybiEwfXJldHVybiExfSxmOmZ1bmN0aW9uKGUpe3JldHVybiA1Mn0sZDpmdW5jdGlvbihlLGIsYyxkLGcpe3JldHVybiA3MH0sYzpmdW5jdGlvbihlLGIsYyxkKXtmb3IodmFyIGc9MCx1PTA7dTxjO3UrKyl7dmFyIFg9VltiPj4yXSxhYj1WW2IrND4+Ml07Yis9ODtmb3IodmFyIHNhPTA7c2E8YWI7c2ErKyl7dmFyIHRhPWVhW1grc2FdLHVhPXdkW2VdOzA9PT10YXx8MTA9PT10YT8oKDE9PT1lP3VkOmRhKShwKHVhLDApKSx1YS5sZW5ndGg9MCk6dWEucHVzaCh0YSl9Zys9CmFifVZbZD4+Ml09ZztyZXR1cm4gMH19OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZyx1KXthLmFzbT1nLmV4cG9ydHM7amE9YS5hc20uaDtBKCk7b2EudW5zaGlmdChhLmFzbS5pKTthYS0tO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmYS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKGFhKTswPT1hYSYmKG51bGwhPT1yYSYmKGNsZWFySW50ZXJ2YWwocmEpLHJhPW51bGwpLGlhJiYoZz1pYSxpYT1udWxsLGcoKSkpfWZ1bmN0aW9uIGIoZyl7ZShnLmluc3RhbmNlKX1mdW5jdGlvbiBjKGcpe3JldHVybiB2KCkudGhlbihmdW5jdGlvbih1KXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodSxkKX0pLnRoZW4oZnVuY3Rpb24odSl7cmV0dXJuIHV9KS50aGVuKGcsZnVuY3Rpb24odSl7ZGEoImZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICIrdSk7Zih1KX0pfXZhciBkPXthOnhkfTthYSsrO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmYS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKGFhKTsKaWYoYS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBhLmluc3RhbnRpYXRlV2FzbShkLGUpfWNhdGNoKGcpe2RhKCJNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAiK2cpLGthKGcpfShmdW5jdGlvbigpe3JldHVybiBmYXx8ImZ1bmN0aW9uIiE9dHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nfHxQLnN0YXJ0c1dpdGgoImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiKXx8UC5zdGFydHNXaXRoKCJmaWxlOi8vIil8fFlhfHwiZnVuY3Rpb24iIT10eXBlb2YgZmV0Y2g/YyhiKTpmZXRjaChQLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihnKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZyxkKS50aGVuKGIsZnVuY3Rpb24odSl7ZGEoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK3UpO2RhKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpOwpyZXR1cm4gYyhiKX0pfSl9KSgpLmNhdGNoKGthKTtyZXR1cm57fX0pKCk7dmFyIGJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYmI9YS5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMD1hLmFzbS5rKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyQnVmZmVyX0RlY29kZXJCdWZmZXJfMD1mdW5jdGlvbigpe3JldHVybihEYT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9EZWNvZGVyQnVmZmVyXzA9YS5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjYj1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9Jbml0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oY2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfSW5pdF8yPWEuYXNtLm0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD0KZnVuY3Rpb24oKXtyZXR1cm4oZGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD1hLmFzbS5uKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEVhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1mdW5jdGlvbigpe3JldHVybihFYT1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9YS5hc20ubykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV90cmFuc2Zvcm1fdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGViPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX3RyYW5zZm9ybV90eXBlXzA9YS5hc20ucCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9fX2Rlc3Ryb3lfX18wPQpmdW5jdGlvbigpe3JldHVybihmYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9fX2Rlc3Ryb3lfX18wPWEuYXNtLnEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRmE9YS5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX0dlb21ldHJ5QXR0cmlidXRlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRmE9YS5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX0dlb21ldHJ5QXR0cmlidXRlXzA9YS5hc20ucikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxnYj1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihnYj1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1hLmFzbS5zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdhPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9Qb2ludEF0dHJpYnV0ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdhPQphLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfUG9pbnRBdHRyaWJ1dGVfMD1hLmFzbS50KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3NpemVfMD1hLmFzbS51KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGliPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaWI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1hLmFzbS52KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPQphLmFzbS53KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9kYXRhX3R5cGVfMD1mdW5jdGlvbigpe3JldHVybihrYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfZGF0YV90eXBlXzA9YS5hc20ueCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbnVtX2NvbXBvbmVudHNfMD1mdW5jdGlvbigpe3JldHVybihsYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbnVtX2NvbXBvbmVudHNfMD1hLmFzbS55KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1iPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ub3JtYWxpemVkXzA9ZnVuY3Rpb24oKXtyZXR1cm4obWI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX25vcm1hbGl6ZWRfMD1hLmFzbS56KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5iPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX3N0cmlkZV8wPQpmdW5jdGlvbigpe3JldHVybihuYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYnl0ZV9zdHJpZGVfMD1hLmFzbS5BKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX29mZnNldF8wPWZ1bmN0aW9uKCl7cmV0dXJuKG9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX29mZnNldF8wPWEuYXNtLkIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3VuaXF1ZV9pZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV91bmlxdWVfaWRfMD1hLmFzbS5DKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHFiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPQphLmFzbS5EKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGE9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fMD1hLmFzbS5FKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1mdW5jdGlvbigpe3JldHVybihyYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9YS5hc20uRikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9CmZ1bmN0aW9uKCl7cmV0dXJuKHNiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1hLmFzbS5HKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fbWluX3ZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4odGI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9taW5fdmFsdWVfMT1hLmFzbS5IKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHViPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcmFuZ2VfMD1mdW5jdGlvbigpe3JldHVybih1Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3JhbmdlXzA9YS5hc20uSSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9CmZ1bmN0aW9uKCl7cmV0dXJuKHZiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1hLmFzbS5KKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fMD1mdW5jdGlvbigpe3JldHVybihJYT1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtXzA9YS5hc20uSykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9YS5hc20uTCkuYXBwbHkobnVsbCwKYXJndW1lbnRzKX0seGI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1mdW5jdGlvbigpe3JldHVybih4Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPWEuYXNtLk0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih5Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPWEuYXNtLk4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmE9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfUG9pbnRDbG91ZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEphPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX1BvaW50Q2xvdWRfMD1hLmFzbS5PKS5hcHBseShudWxsLAphcmd1bWVudHMpfSx6Yj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fYXR0cmlidXRlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKHpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9hdHRyaWJ1dGVzXzA9YS5hc20uUCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fcG9pbnRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfbnVtX3BvaW50c18wPWEuYXNtLlEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihCYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9fX2Rlc3Ryb3lfX18wPWEuYXNtLlIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2E9YS5fZW1zY3JpcHRlbl9iaW5kX01lc2hfTWVzaF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEthPQphLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9NZXNoXzA9YS5hc20uUykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fZmFjZXNfMD1mdW5jdGlvbigpe3JldHVybihDYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fZmFjZXNfMD1hLmFzbS5UKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9hdHRyaWJ1dGVzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRGI9YS5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2F0dHJpYnV0ZXNfMD1hLmFzbS5VKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEViPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybihFYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fcG9pbnRzXzA9YS5hc20uVikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEZiPQphLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPWEuYXNtLlcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGE9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTGE9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9YS5hc20uWCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihHYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1hLmFzbS5ZKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWEuYXNtLlopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWI9YS5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19va18wPWZ1bmN0aW9uKCl7cmV0dXJuKEliPQphLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX29rXzA9YS5hc20uXykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxKYj1hLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX2Vycm9yX21zZ18wPWZ1bmN0aW9uKCl7cmV0dXJuKEpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfZXJyb3JfbXNnXzA9YS5hc20uJCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYj1hLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oS2I9YS5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19fX2Rlc3Ryb3lfX18wPWEuYXNtLmFhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE1hPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9EcmFjb0Zsb2F0MzJBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1hPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9EcmFjb0Zsb2F0MzJBcnJheV8wPWEuYXNtLmJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LApMYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihMYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfR2V0VmFsdWVfMT1hLmFzbS5jYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9zaXplXzA9YS5hc20uZGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X19fZGVzdHJveV9fXzA9YS5hc20uZWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0RyYWNvSW50OEFycmF5XzA9CmZ1bmN0aW9uKCl7cmV0dXJuKE5hPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9EcmFjb0ludDhBcnJheV8wPWEuYXNtLmZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPWEuYXNtLmdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD1hLmFzbS5oYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihRYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD0KYS5hc20uaWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT2E9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9EcmFjb1VJbnQ4QXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihPYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0RyYWNvVUludDhBcnJheV8wPWEuYXNtLmphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihSYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0dldFZhbHVlXzE9YS5hc20ua2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oU2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9YS5hc20ubGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9fX2Rlc3Ryb3lfX18wPQpmdW5jdGlvbigpe3JldHVybihUYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X19fZGVzdHJveV9fXzA9YS5hc20ubWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUGE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9EcmFjb0ludDE2QXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihQYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0RyYWNvSW50MTZBcnJheV8wPWEuYXNtLm5hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFViPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihVYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0dldFZhbHVlXzE9YS5hc20ub2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9zaXplXzA9CmEuYXNtLnBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihXYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X19fZGVzdHJveV9fXzA9YS5hc20ucWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfRHJhY29VSW50MTZBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFFhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0RyYWNvVUludDE2QXJyYXlfMD1hLmFzbS5yYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0dldFZhbHVlXzE9YS5hc20uc2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sClliPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihZYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9zaXplXzA9YS5hc20udGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihaYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWEuYXNtLnVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfRHJhY29JbnQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oUmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD1hLmFzbS52YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0dldFZhbHVlXzE9CmZ1bmN0aW9uKCl7cmV0dXJuKCRiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfR2V0VmFsdWVfMT1hLmFzbS53YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhYz1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihhYz1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X3NpemVfMD1hLmFzbS54YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiYz1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWEuYXNtLnlhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0RyYWNvVUludDMyQXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihTYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9EcmFjb1VJbnQzMkFycmF5XzA9CmEuYXNtLnphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oY2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfR2V0VmFsdWVfMT1hLmFzbS5BYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkYz1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfc2l6ZV8wPWEuYXNtLkJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS5DYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxUYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPQpmdW5jdGlvbigpe3JldHVybihUYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPWEuYXNtLkRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfSGFzRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihmYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0hhc0VudHJ5XzI9YS5hc20uRWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2M9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRJbnRFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlfMj1hLmFzbS5GYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxoYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybihoYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz0KYS5hc20uR2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXREb3VibGVFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGljPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RG91YmxlRW50cnlfMj1hLmFzbS5IYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldFN0cmluZ0VudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4oamM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRTdHJpbmdFbnRyeV8yPWEuYXNtLklhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTnVtRW50cmllc18xPWZ1bmN0aW9uKCl7cmV0dXJuKGtjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTnVtRW50cmllc18xPWEuYXNtLkphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LApsYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEVudHJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGxjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RW50cnlOYW1lXzI9YS5hc20uS2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKG1jPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfX19kZXN0cm95X19fMD1hLmFzbS5MYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVYT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVyXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2Rlcl8wPWEuYXNtLk1hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9ZnVuY3Rpb24oKXtyZXR1cm4obmM9CmEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9YS5hc20uTmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQXJyYXlUb01lc2hfMz1mdW5jdGlvbigpe3JldHVybihvYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvTWVzaF8zPWEuYXNtLk9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkXzI9ZnVuY3Rpb24oKXtyZXR1cm4ocGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRfMj1hLmFzbS5QYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHFjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlOYW1lXzI9CmEuYXNtLlFhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlNZXRhZGF0YUVudHJ5XzM9ZnVuY3Rpb24oKXtyZXR1cm4ocmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnlfMz1hLmFzbS5SYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVfMj1mdW5jdGlvbigpe3JldHVybihzYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVfMj1hLmFzbS5TYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx0Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkXzI9ZnVuY3Rpb24oKXtyZXR1cm4odGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlQnlVbmlxdWVJZF8yPWEuYXNtLlRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LAp1Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRNZXRhZGF0YV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldE1ldGFkYXRhXzE9YS5hc20uVWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlTWV0YWRhdGFfMj1mdW5jdGlvbigpe3JldHVybih2Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVNZXRhZGF0YV8yPWEuYXNtLlZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKHdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWEuYXNtLldhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2hfMj0KZnVuY3Rpb24oKXtyZXR1cm4oeGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaF8yPWEuYXNtLlhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQxNkFycmF5XzM9ZnVuY3Rpb24oKXtyZXR1cm4oeWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDE2QXJyYXlfMz1hLmFzbS5ZYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZXNVSW50MzJBcnJheV8zPWZ1bmN0aW9uKCl7cmV0dXJuKHpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9YS5hc20uWmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRfMz1mdW5jdGlvbigpe3JldHVybihBYz0KYS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRfMz1hLmFzbS5fYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxCYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKEJjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzXzM9YS5hc20uJGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oQ2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzXzM9YS5hc20uYWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKERjPQphLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzXzM9YS5hc20uYmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihFYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50c18zPWEuYXNtLmNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oRmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHNfMz1hLmFzbS5kYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz0KZnVuY3Rpb24oKXtyZXR1cm4oR2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzXzM9YS5hc20uZWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihIYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50c18zPWEuYXNtLmZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKEljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50c18zPWEuYXNtLmdiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50c181PQpmdW5jdGlvbigpe3JldHVybihKYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVEYXRhQXJyYXlGb3JBbGxQb2ludHNfNT1hLmFzbS5oYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9Ta2lwQXR0cmlidXRlVHJhbnNmb3JtXzE9ZnVuY3Rpb24oKXtyZXR1cm4oS2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybV8xPWEuYXNtLmliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZF8xPWZ1bmN0aW9uKCl7cmV0dXJuKExjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZF8xPWEuYXNtLmpiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE1jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZF8yPQpmdW5jdGlvbigpe3JldHVybihNYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWRfMj1hLmFzbS5rYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1mdW5jdGlvbigpe3JldHVybihOYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1hLmFzbS5sYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKE9jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX19fZGVzdHJveV9fXzA9YS5hc20ubWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUGM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX0lOVkFMSURfVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKFBjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT0KYS5hc20ubmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX05PX1RSQU5TRk9STT1mdW5jdGlvbigpe3JldHVybihRYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPWEuYXNtLm9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKFJjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPWEuYXNtLnBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT0KZnVuY3Rpb24oKXtyZXR1cm4oU2M9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX09DVEFIRURST05fVFJBTlNGT1JNPWEuYXNtLnFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0lOVkFMSUQ9ZnVuY3Rpb24oKXtyZXR1cm4oVGM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfSU5WQUxJRD1hLmFzbS5yYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9QT1NJVElPTj1mdW5jdGlvbigpe3JldHVybihVYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9QT1NJVElPTj1hLmFzbS5zYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9OT1JNQUw9CmZ1bmN0aW9uKCl7cmV0dXJuKFZjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX05PUk1BTD1hLmFzbS50YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1mdW5jdGlvbigpe3JldHVybihXYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1hLmFzbS51YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9URVhfQ09PUkQ9ZnVuY3Rpb24oKXtyZXR1cm4oWGM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfVEVYX0NPT1JEPWEuYXNtLnZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFljPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9CmZ1bmN0aW9uKCl7cmV0dXJuKFljPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9YS5hc20ud2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfSU5WQUxJRF9HRU9NRVRSWV9UWVBFPWZ1bmN0aW9uKCl7cmV0dXJuKFpjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX0lOVkFMSURfR0VPTUVUUllfVFlQRT1hLmFzbS54YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9QT0lOVF9DTE9VRD1mdW5jdGlvbigpe3JldHVybigkYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9QT0lOVF9DTE9VRD1hLmFzbS55YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9UUklBTkdVTEFSX01FU0g9CmZ1bmN0aW9uKCl7cmV0dXJuKGFkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1RSSUFOR1VMQVJfTUVTSD1hLmFzbS56YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5WQUxJRD1mdW5jdGlvbigpe3JldHVybihiZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5WQUxJRD1hLmFzbS5BYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UOD1mdW5jdGlvbigpe3JldHVybihjZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UOD1hLmFzbS5CYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDg9ZnVuY3Rpb24oKXtyZXR1cm4oZGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ4PQphLmFzbS5DYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oZWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDE2PWEuYXNtLkRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oZmQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQxNj1hLmFzbS5FYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxnZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4oZ2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDMyPWEuYXNtLkZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9CmZ1bmN0aW9uKCl7cmV0dXJuKGhkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9YS5hc20uR2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDY0PWZ1bmN0aW9uKCl7cmV0dXJuKGlkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ2ND1hLmFzbS5IYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDY0PWZ1bmN0aW9uKCl7cmV0dXJuKGpkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UNjQ9YS5hc20uSWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUMzI9ZnVuY3Rpb24oKXtyZXR1cm4oa2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUMzI9YS5hc20uSmIpLmFwcGx5KG51bGwsCmFyZ3VtZW50cyl9LGxkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9GTE9BVDY0PWZ1bmN0aW9uKCl7cmV0dXJuKGxkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9GTE9BVDY0PWEuYXNtLktiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9CT09MPWZ1bmN0aW9uKCl7cmV0dXJuKG1kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9CT09MPWEuYXNtLkxiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9UWVBFU19DT1VOVD1mdW5jdGlvbigpe3JldHVybihuZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVFlQRVNfQ09VTlQ9YS5hc20uTWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfT0s9ZnVuY3Rpb24oKXtyZXR1cm4ob2Q9CmEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX09LPWEuYXNtLk5iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKHBkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPWEuYXNtLk9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKHFkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPWEuYXNtLlBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPWZ1bmN0aW9uKCl7cmV0dXJuKHJkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPQphLmFzbS5RYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9VTlNVUFBPUlRFRF9WRVJTSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKHNkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOU1VQUE9SVEVEX1ZFUlNJT049YS5hc20uUmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5LTk9XTl9WRVJTSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKHRkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOS05PV05fVkVSU0lPTj1hLmFzbS5TYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTthLl9tYWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oYS5fbWFsbG9jPWEuYXNtLlRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O2EuX2ZyZWU9ZnVuY3Rpb24oKXtyZXR1cm4oYS5fZnJlZT1hLmFzbS5VYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTsKdmFyIHlhPWZ1bmN0aW9uKCl7cmV0dXJuKHlhPWEuYXNtLlZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O2EuX19fc3RhcnRfZW1fanM9MTU4NTY7YS5fX19zdG9wX2VtX2pzPTE1OTU0O3ZhciBsYTtpYT1mdW5jdGlvbiBiKCl7bGF8fGJhKCk7bGF8fChpYT1iKX07aWYoYS5wcmVJbml0KWZvcigiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVJbml0JiYoYS5wcmVJbml0PVthLnByZUluaXRdKTswPGEucHJlSW5pdC5sZW5ndGg7KWEucHJlSW5pdC5wb3AoKSgpO2JhKCk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7dC5wcm90b3R5cGUuY29uc3RydWN0b3I9dDt0LnByb3RvdHlwZS5fX2NsYXNzX189dDt0Ll9fY2FjaGVfXz17fTthLldyYXBwZXJPYmplY3Q9dDthLmdldENhY2hlPXg7YS53cmFwUG9pbnRlcj1EO2EuY2FzdE9iamVjdD1mdW5jdGlvbihiLGMpe3JldHVybiBEKGIucHRyLGMpfTthLk5VTEw9RCgwKTthLmRlc3Ryb3k9ZnVuY3Rpb24oYil7aWYoIWIuX19kZXN0cm95X18pdGhyb3ciRXJyb3I6IENhbm5vdCBkZXN0cm95IG9iamVjdC4gKERpZCB5b3UgY3JlYXRlIGl0IHlvdXJzZWxmPykiOwpiLl9fZGVzdHJveV9fKCk7ZGVsZXRlIHgoYi5fX2NsYXNzX18pW2IucHRyXX07YS5jb21wYXJlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIucHRyPT09Yy5wdHJ9O2EuZ2V0UG9pbnRlcj1mdW5jdGlvbihiKXtyZXR1cm4gYi5wdHJ9O2EuZ2V0Q2xhc3M9ZnVuY3Rpb24oYil7cmV0dXJuIGIuX19jbGFzc19ffTt2YXIgcj17YnVmZmVyOjAsc2l6ZTowLHBvczowLHRlbXBzOltdLG5lZWRlZDowLHByZXBhcmU6ZnVuY3Rpb24oKXtpZihyLm5lZWRlZCl7Zm9yKHZhciBiPTA7YjxyLnRlbXBzLmxlbmd0aDtiKyspYS5fZnJlZShyLnRlbXBzW2JdKTtyLnRlbXBzLmxlbmd0aD0wO2EuX2ZyZWUoci5idWZmZXIpO3IuYnVmZmVyPTA7ci5zaXplKz1yLm5lZWRlZDtyLm5lZWRlZD0wfXIuYnVmZmVyfHwoci5zaXplKz0xMjgsci5idWZmZXI9YS5fbWFsbG9jKHIuc2l6ZSksci5idWZmZXJ8fGYodm9pZCAwKSk7ci5wb3M9MH0sYWxsb2M6ZnVuY3Rpb24oYixjKXtyLmJ1ZmZlcnx8Zih2b2lkIDApO2I9CmIubGVuZ3RoKmMuQllURVNfUEVSX0VMRU1FTlQ7Yj1iKzcmLTg7ci5wb3MrYj49ci5zaXplPygwPGJ8fGYodm9pZCAwKSxyLm5lZWRlZCs9YixjPWEuX21hbGxvYyhiKSxyLnRlbXBzLnB1c2goYykpOihjPXIuYnVmZmVyK3IucG9zLHIucG9zKz1iKTtyZXR1cm4gY30sY29weTpmdW5jdGlvbihiLGMsZCl7ZD4+Pj0wO3N3aXRjaChjLkJZVEVTX1BFUl9FTEVNRU5UKXtjYXNlIDI6ZD4+Pj0xO2JyZWFrO2Nhc2UgNDpkPj4+PTI7YnJlYWs7Y2FzZSA4OmQ+Pj49M31mb3IodmFyIGc9MDtnPGIubGVuZ3RoO2crKyljW2QrZ109YltnXX19O1oucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO1oucHJvdG90eXBlLmNvbnN0cnVjdG9yPVo7Wi5wcm90b3R5cGUuX19jbGFzc19fPVo7Wi5fX2NhY2hlX189e307YS5Wb2lkUHRyPVo7Wi5wcm90b3R5cGUuX19kZXN0cm95X189Wi5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtiYih0aGlzLnB0cil9O1MucHJvdG90eXBlPQpPYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtTLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TO1MucHJvdG90eXBlLl9fY2xhc3NfXz1TO1MuX19jYWNoZV9fPXt9O2EuRGVjb2RlckJ1ZmZlcj1TO1MucHJvdG90eXBlLkluaXQ9Uy5wcm90b3R5cGUuSW5pdD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpOyJvYmplY3QiPT10eXBlb2YgYiYmKGI9cGEoYikpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtjYihkLGIsYyl9O1MucHJvdG90eXBlLl9fZGVzdHJveV9fPVMucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7ZGIodGhpcy5wdHIpfTtRLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtRLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RO1EucHJvdG90eXBlLl9fY2xhc3NfXz1RO1EuX19jYWNoZV9fPXt9O2EuQXR0cmlidXRlVHJhbnNmb3JtRGF0YT1RO1EucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPVEucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPQpmdW5jdGlvbigpe3JldHVybiBlYih0aGlzLnB0cil9O1EucHJvdG90eXBlLl9fZGVzdHJveV9fPVEucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7ZmIodGhpcy5wdHIpfTtXLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtXLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1XO1cucHJvdG90eXBlLl9fY2xhc3NfXz1XO1cuX19jYWNoZV9fPXt9O2EuR2VvbWV0cnlBdHRyaWJ1dGU9VztXLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1XLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2diKHRoaXMucHRyKX07dy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7dy5wcm90b3R5cGUuY29uc3RydWN0b3I9dzt3LnByb3RvdHlwZS5fX2NsYXNzX189dzt3Ll9fY2FjaGVfXz17fTthLlBvaW50QXR0cmlidXRlPXc7dy5wcm90b3R5cGUuc2l6ZT13LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIGhiKHRoaXMucHRyKX07dy5wcm90b3R5cGUuR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YT0Kdy5wcm90b3R5cGUuR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YT1mdW5jdGlvbigpe3JldHVybiBEKGliKHRoaXMucHRyKSxRKX07dy5wcm90b3R5cGUuYXR0cmlidXRlX3R5cGU9dy5wcm90b3R5cGUuYXR0cmlidXRlX3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gamIodGhpcy5wdHIpfTt3LnByb3RvdHlwZS5kYXRhX3R5cGU9dy5wcm90b3R5cGUuZGF0YV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIGtiKHRoaXMucHRyKX07dy5wcm90b3R5cGUubnVtX2NvbXBvbmVudHM9dy5wcm90b3R5cGUubnVtX2NvbXBvbmVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gbGIodGhpcy5wdHIpfTt3LnByb3RvdHlwZS5ub3JtYWxpemVkPXcucHJvdG90eXBlLm5vcm1hbGl6ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIW1iKHRoaXMucHRyKX07dy5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9dy5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmIodGhpcy5wdHIpfTt3LnByb3RvdHlwZS5ieXRlX29mZnNldD0Kdy5wcm90b3R5cGUuYnl0ZV9vZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gb2IodGhpcy5wdHIpfTt3LnByb3RvdHlwZS51bmlxdWVfaWQ9dy5wcm90b3R5cGUudW5pcXVlX2lkPWZ1bmN0aW9uKCl7cmV0dXJuIHBiKHRoaXMucHRyKX07dy5wcm90b3R5cGUuX19kZXN0cm95X189dy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtxYih0aGlzLnB0cil9O0MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO0MucHJvdG90eXBlLmNvbnN0cnVjdG9yPUM7Qy5wcm90b3R5cGUuX19jbGFzc19fPUM7Qy5fX2NhY2hlX189e307YS5BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm09QztDLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1DLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuISFyYihjLGIpfTtDLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz0KQy5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gc2IodGhpcy5wdHIpfTtDLnByb3RvdHlwZS5taW5fdmFsdWU9Qy5wcm90b3R5cGUubWluX3ZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gdGIoYyxiKX07Qy5wcm90b3R5cGUucmFuZ2U9Qy5wcm90b3R5cGUucmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdWIodGhpcy5wdHIpfTtDLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1DLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3ZiKHRoaXMucHRyKX07Ri5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Ri5wcm90b3R5cGUuY29uc3RydWN0b3I9RjtGLnByb3RvdHlwZS5fX2NsYXNzX189RjtGLl9fY2FjaGVfXz17fTthLkF0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm09RjtGLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1GLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT0KZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiEhd2IoYyxiKX07Ri5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9Ri5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9ZnVuY3Rpb24oKXtyZXR1cm4geGIodGhpcy5wdHIpfTtGLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1GLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3liKHRoaXMucHRyKX07Ry5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Ry5wcm90b3R5cGUuY29uc3RydWN0b3I9RztHLnByb3RvdHlwZS5fX2NsYXNzX189RztHLl9fY2FjaGVfXz17fTthLlBvaW50Q2xvdWQ9RztHLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1HLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiB6Yih0aGlzLnB0cil9O0cucHJvdG90eXBlLm51bV9wb2ludHM9Ry5wcm90b3R5cGUubnVtX3BvaW50cz1mdW5jdGlvbigpe3JldHVybiBBYih0aGlzLnB0cil9OwpHLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1HLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0JiKHRoaXMucHRyKX07RS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7RS5wcm90b3R5cGUuY29uc3RydWN0b3I9RTtFLnByb3RvdHlwZS5fX2NsYXNzX189RTtFLl9fY2FjaGVfXz17fTthLk1lc2g9RTtFLnByb3RvdHlwZS5udW1fZmFjZXM9RS5wcm90b3R5cGUubnVtX2ZhY2VzPWZ1bmN0aW9uKCl7cmV0dXJuIENiKHRoaXMucHRyKX07RS5wcm90b3R5cGUubnVtX2F0dHJpYnV0ZXM9RS5wcm90b3R5cGUubnVtX2F0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gRGIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5udW1fcG9pbnRzPUUucHJvdG90eXBlLm51bV9wb2ludHM9ZnVuY3Rpb24oKXtyZXR1cm4gRWIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1FLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0ZiKHRoaXMucHRyKX07VC5wcm90b3R5cGU9Ck9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO1QucHJvdG90eXBlLmNvbnN0cnVjdG9yPVQ7VC5wcm90b3R5cGUuX19jbGFzc19fPVQ7VC5fX2NhY2hlX189e307YS5NZXRhZGF0YT1UO1QucHJvdG90eXBlLl9fZGVzdHJveV9fPVQucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7R2IodGhpcy5wdHIpfTtCLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtCLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1CO0IucHJvdG90eXBlLl9fY2xhc3NfXz1CO0IuX19jYWNoZV9fPXt9O2EuU3RhdHVzPUI7Qi5wcm90b3R5cGUuY29kZT1CLnByb3RvdHlwZS5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIEhiKHRoaXMucHRyKX07Qi5wcm90b3R5cGUub2s9Qi5wcm90b3R5cGUub2s9ZnVuY3Rpb24oKXtyZXR1cm4hIUliKHRoaXMucHRyKX07Qi5wcm90b3R5cGUuZXJyb3JfbXNnPUIucHJvdG90eXBlLmVycm9yX21zZz1mdW5jdGlvbigpe3JldHVybiBoKEpiKHRoaXMucHRyKSl9OwpCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1CLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0tiKHRoaXMucHRyKX07SC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7SC5wcm90b3R5cGUuY29uc3RydWN0b3I9SDtILnByb3RvdHlwZS5fX2NsYXNzX189SDtILl9fY2FjaGVfXz17fTthLkRyYWNvRmxvYXQzMkFycmF5PUg7SC5wcm90b3R5cGUuR2V0VmFsdWU9SC5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBMYihjLGIpfTtILnByb3RvdHlwZS5zaXplPUgucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gTWIodGhpcy5wdHIpfTtILnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1ILnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe05iKHRoaXMucHRyKX07SS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7SS5wcm90b3R5cGUuY29uc3RydWN0b3I9Ckk7SS5wcm90b3R5cGUuX19jbGFzc19fPUk7SS5fX2NhY2hlX189e307YS5EcmFjb0ludDhBcnJheT1JO0kucHJvdG90eXBlLkdldFZhbHVlPUkucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gT2IoYyxiKX07SS5wcm90b3R5cGUuc2l6ZT1JLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFBiKHRoaXMucHRyKX07SS5wcm90b3R5cGUuX19kZXN0cm95X189SS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtRYih0aGlzLnB0cil9O0oucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO0oucHJvdG90eXBlLmNvbnN0cnVjdG9yPUo7Si5wcm90b3R5cGUuX19jbGFzc19fPUo7Si5fX2NhY2hlX189e307YS5EcmFjb1VJbnQ4QXJyYXk9SjtKLnByb3RvdHlwZS5HZXRWYWx1ZT1KLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz0KdGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBSYihjLGIpfTtKLnByb3RvdHlwZS5zaXplPUoucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gU2IodGhpcy5wdHIpfTtKLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1KLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1RiKHRoaXMucHRyKX07Sy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Sy5wcm90b3R5cGUuY29uc3RydWN0b3I9SztLLnByb3RvdHlwZS5fX2NsYXNzX189SztLLl9fY2FjaGVfXz17fTthLkRyYWNvSW50MTZBcnJheT1LO0sucHJvdG90eXBlLkdldFZhbHVlPUsucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gVWIoYyxiKX07Sy5wcm90b3R5cGUuc2l6ZT1LLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFZiKHRoaXMucHRyKX07CksucHJvdG90eXBlLl9fZGVzdHJveV9fPUsucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7V2IodGhpcy5wdHIpfTtMLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtMLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MO0wucHJvdG90eXBlLl9fY2xhc3NfXz1MO0wuX19jYWNoZV9fPXt9O2EuRHJhY29VSW50MTZBcnJheT1MO0wucHJvdG90eXBlLkdldFZhbHVlPUwucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gWGIoYyxiKX07TC5wcm90b3R5cGUuc2l6ZT1MLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFliKHRoaXMucHRyKX07TC5wcm90b3R5cGUuX19kZXN0cm95X189TC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtaYih0aGlzLnB0cil9O00ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO00ucHJvdG90eXBlLmNvbnN0cnVjdG9yPQpNO00ucHJvdG90eXBlLl9fY2xhc3NfXz1NO00uX19jYWNoZV9fPXt9O2EuRHJhY29JbnQzMkFycmF5PU07TS5wcm90b3R5cGUuR2V0VmFsdWU9TS5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiAkYihjLGIpfTtNLnByb3RvdHlwZS5zaXplPU0ucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gYWModGhpcy5wdHIpfTtNLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1NLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2JjKHRoaXMucHRyKX07Ti5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Ti5wcm90b3R5cGUuY29uc3RydWN0b3I9TjtOLnByb3RvdHlwZS5fX2NsYXNzX189TjtOLl9fY2FjaGVfXz17fTthLkRyYWNvVUludDMyQXJyYXk9TjtOLnByb3RvdHlwZS5HZXRWYWx1ZT1OLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz0KdGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBjYyhjLGIpfTtOLnByb3RvdHlwZS5zaXplPU4ucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gZGModGhpcy5wdHIpfTtOLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1OLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2VjKHRoaXMucHRyKX07eS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7eS5wcm90b3R5cGUuY29uc3RydWN0b3I9eTt5LnByb3RvdHlwZS5fX2NsYXNzX189eTt5Ll9fY2FjaGVfXz17fTthLk1ldGFkYXRhUXVlcmllcj15O3kucHJvdG90eXBlLkhhc0VudHJ5PXkucHJvdG90eXBlLkhhc0VudHJ5PWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7ci5wcmVwYXJlKCk7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLnB0cjpSKGMpO3JldHVybiEhZmMoZCxiLGMpfTt5LnByb3RvdHlwZS5HZXRJbnRFbnRyeT0KeS5wcm90b3R5cGUuR2V0SW50RW50cnk9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtyLnByZXBhcmUoKTtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7cmV0dXJuIGdjKGQsYixjKX07eS5wcm90b3R5cGUuR2V0SW50RW50cnlBcnJheT15LnByb3RvdHlwZS5HZXRJbnRFbnRyeUFycmF5PWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtyLnByZXBhcmUoKTtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO2hjKGcsYixjLGQpfTt5LnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT15LnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPQpjJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7cmV0dXJuIGljKGQsYixjKX07eS5wcm90b3R5cGUuR2V0U3RyaW5nRW50cnk9eS5wcm90b3R5cGUuR2V0U3RyaW5nRW50cnk9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtyLnByZXBhcmUoKTtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7cmV0dXJuIGgoamMoZCxiLGMpKX07eS5wcm90b3R5cGUuTnVtRW50cmllcz15LnByb3RvdHlwZS5OdW1FbnRyaWVzPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4ga2MoYyxiKX07eS5wcm90b3R5cGUuR2V0RW50cnlOYW1lPXkucHJvdG90eXBlLkdldEVudHJ5TmFtZT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz0KYy5wdHIpO3JldHVybiBoKGxjKGQsYixjKSl9O3kucHJvdG90eXBlLl9fZGVzdHJveV9fPXkucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7bWModGhpcy5wdHIpfTttLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTttLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1tO20ucHJvdG90eXBlLl9fY2xhc3NfXz1tO20uX19jYWNoZV9fPXt9O2EuRGVjb2Rlcj1tO20ucHJvdG90eXBlLkRlY29kZUFycmF5VG9Qb2ludENsb3VkPW0ucHJvdG90eXBlLkRlY29kZUFycmF5VG9Qb2ludENsb3VkPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtyLnByZXBhcmUoKTsib2JqZWN0Ij09dHlwZW9mIGImJihiPXBhKGIpKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiBEKG5jKGcsYixjLGQpLEIpfTttLnByb3RvdHlwZS5EZWNvZGVBcnJheVRvTWVzaD1tLnByb3RvdHlwZS5EZWNvZGVBcnJheVRvTWVzaD0KZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO3IucHJlcGFyZSgpOyJvYmplY3QiPT10eXBlb2YgYiYmKGI9cGEoYikpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuIEQob2MoZyxiLGMsZCksQil9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtyZXR1cm4gcGMoZCxiLGMpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/CmMucHRyOlIoYyk7cmV0dXJuIHFjKGQsYixjKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5wdHI6UihkKTtyZXR1cm4gcmMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZT1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGU9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBEKHNjKGQsYixjKSx3KX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZD1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkPQpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7cmV0dXJuIEQodGMoZCxiLGMpLHcpfTttLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1tLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIEQodWMoYyxiKSxUKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBEKHZjKGQsYixjKSxUKX07bS5wcm90b3R5cGUuR2V0RmFjZUZyb21NZXNoPW0ucHJvdG90eXBlLkdldEZhY2VGcm9tTWVzaD1mdW5jdGlvbihiLApjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhd2MoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2g9bS5wcm90b3R5cGUuR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7cmV0dXJuIHhjKGQsYixjKX07bS5wcm90b3R5cGUuR2V0VHJpYW5nbGVzVUludDE2QXJyYXk9bS5wcm90b3R5cGUuR2V0VHJpYW5nbGVzVUludDE2QXJyYXk9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7CmQmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIXljKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1tLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISF6YyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhQWMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzPQptLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFCYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFDYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50cz1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzPQpmdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFEYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhRWMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjsKYiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFGYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFHYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJgooYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIUhjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIUljKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVEYXRhQXJyYXlGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkLGcsdSl7dmFyIFg9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJgoib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO2cmJiJvYmplY3QiPT09dHlwZW9mIGcmJihnPWcucHRyKTt1JiYib2JqZWN0Ij09PXR5cGVvZiB1JiYodT11LnB0cik7cmV0dXJuISFKYyhYLGIsYyxkLGcsdSl9O20ucHJvdG90eXBlLlNraXBBdHRyaWJ1dGVUcmFuc2Zvcm09bS5wcm90b3R5cGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7S2MoYyxiKX07bS5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkPW0ucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZD1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIExjKGMsYil9O20ucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZD0KbS5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9Qb2ludENsb3VkPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtyZXR1cm4gRChNYyhkLGIsYyksQil9O20ucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvTWVzaD1tLnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb01lc2g9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBEKE5jKGQsYixjKSxCKX07bS5wcm90b3R5cGUuX19kZXN0cm95X189bS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtPYyh0aGlzLnB0cil9OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXthLkFUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1QYygpO2EuQVRUUklCVVRFX05PX1RSQU5TRk9STT1RYygpOwphLkFUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPVJjKCk7YS5BVFRSSUJVVEVfT0NUQUhFRFJPTl9UUkFOU0ZPUk09U2MoKTthLklOVkFMSUQ9VGMoKTthLlBPU0lUSU9OPVVjKCk7YS5OT1JNQUw9VmMoKTthLkNPTE9SPVdjKCk7YS5URVhfQ09PUkQ9WGMoKTthLkdFTkVSSUM9WWMoKTthLklOVkFMSURfR0VPTUVUUllfVFlQRT1aYygpO2EuUE9JTlRfQ0xPVUQ9JGMoKTthLlRSSUFOR1VMQVJfTUVTSD1hZCgpO2EuRFRfSU5WQUxJRD1iZCgpO2EuRFRfSU5UOD1jZCgpO2EuRFRfVUlOVDg9ZGQoKTthLkRUX0lOVDE2PWVkKCk7YS5EVF9VSU5UMTY9ZmQoKTthLkRUX0lOVDMyPWdkKCk7YS5EVF9VSU5UMzI9aGQoKTthLkRUX0lOVDY0PWlkKCk7YS5EVF9VSU5UNjQ9amQoKTthLkRUX0ZMT0FUMzI9a2QoKTthLkRUX0ZMT0FUNjQ9bGQoKTthLkRUX0JPT0w9bWQoKTthLkRUX1RZUEVTX0NPVU5UPW5kKCk7YS5PSz1vZCgpO2EuRFJBQ09fRVJST1I9cGQoKTthLklPX0VSUk9SPXFkKCk7CmEuSU5WQUxJRF9QQVJBTUVURVI9cmQoKTthLlVOU1VQUE9SVEVEX1ZFUlNJT049c2QoKTthLlVOS05PV05fVkVSU0lPTj10ZCgpfXphP2IoKTpvYS51bnNoaWZ0KGIpfSkoKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEub25Nb2R1bGVQYXJzZWQpYS5vbk1vZHVsZVBhcnNlZCgpO2EuRGVjb2Rlci5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZT1mdW5jdGlvbihiKXtpZihiLl9fY2xhc3NfXyYmYi5fX2NsYXNzX189PT1hLkRlY29kZXJCdWZmZXIpcmV0dXJuIGEuRGVjb2Rlci5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkKGIpO2lmKDg+Yi5ieXRlTGVuZ3RoKXJldHVybiBhLklOVkFMSURfR0VPTUVUUllfVFlQRTtzd2l0Y2goYls3XSl7Y2FzZSAwOnJldHVybiBhLlBPSU5UX0NMT1VEO2Nhc2UgMTpyZXR1cm4gYS5UUklBTkdVTEFSX01FU0g7ZGVmYXVsdDpyZXR1cm4gYS5JTlZBTElEX0dFT01FVFJZX1RZUEV9fTtyZXR1cm4gbi5yZWFkeX19KCk7CiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1EcmFjb0RlY29kZXJNb2R1bGU6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGZ1bmN0aW9uKCl7cmV0dXJuIERyYWNvRGVjb2Rlck1vZHVsZX0pOiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHMmJihleHBvcnRzLkRyYWNvRGVjb2Rlck1vZHVsZT1EcmFjb0RlY29kZXJNb2R1bGUpOwo=", "AGFzbQEAAAABlAEWYAF/AX9gAn9/AX9gAX8AYAN/f38Bf2ACf38AYAR/f39/AX9gA39/fwBgAAF/YAZ/f39/f38Bf2AEf39/fwBgAABgBX9/f39/AGAGf39/f39/AGAFf39/f38Bf2ADf35/AX5gAn9/AX1gAn9+AGAGf39/f39+AGAHf39/f39/fwBgA39/fgF/YAN/f38BfGABfwF9AisHAWEBYQAKAWEBYgAGAWEBYwAFAWEBZAANAWEBZQAAAWEBZgAAAWEBZwAGA4UEgwQCAAMDCgEBAwoCBAYGAAoAAwMCAAIBBAIACgYGBAQJAAYFBAMDAgABAgQCAAACAwMLBAIHAQEEBAYAAQYBAgECBgAGAwYDAAMJBAEEBAYBBgAABwQEAAIECQYGBgAABwcCBQUFBQUFARARAQYCBgkJAQACAQADAgIBAAQAAAMGBAAEBgMEBwQDAAACAQIAAgECAAQBAgEBBAIEAQEBAQUAAQMKAQMEAAMDBQUFBQUFAAUJBgEDEgEEAwABBgANAQQGAAIDAwQGAQEAAwQDAQEHBwUJAQABAAABBAAEAxMLBAEBAQEAAAAEBAQAAQAGAwADAQEJCQMDAQECAQEAAQABAAICAAMDAQECAAEAAQEBAQIAAwEDAwECAAEBAAAAAAwMCwsJCQMKAwEODgMAAgAEBgIABwEHBwcHBwcHBwcHAQcCAwMBBAgFBQUFBQAFBQUFAwUDAQMDBQMDBQUHAgMBAxQJAwMHAQEBAQ8CAAACAwcABwcHFQ8HAAAAAAAAAAcHAgcGBwABAAAAAAEFAAABAgACAwABAgAAAgACAAECAAAGAgACAgICAAEAAgABAAEAAgAAAAABAAABBAIEAAEAAQMDAwgIAgUAAQgCAAgIAgQAAQgCAAMBAwMDCAgCAAEIAgAIAQIACAECAAgICAIACAIACAEBAgAIAQIACAAIAQABAQQHAXABjwOPAwUHAQGAAoCAAgYIAX8BQaCKBQsHqwaVAQFoAgABaQCpAQFqAQABawCRAQFsAIsDAW0AigMBbgCRAQFvAIkDAXAA4QEBcQCIAwFyAIcDAXMAkQEBdACGAwF1AJABAXYAhQMBdwCEAwF4ADMBeQCDAwF6AIIDAUEAgQMBQgCAAwFDAP8CAUQAGQFFAP4CAUYA3wEBRwAyAUgA/QIBSQD8AgFKAGcBSwD7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IARBEGokAA8LECAAC74CAQZ/IAIgAWsiBUECdSIGIAAoAggiAyAAKAIAIgRrQQJ1TQRAIAEgACgCBCAEayIFaiIDIAIgBiAFQQJ1IghLGyIFIAFrIQcgASAFRwRAIAQgASAHEA4aCyAGIAhLBEAgACgCBCEBIAIgBUcEQANAIAEgAygCADYCACABQQRqIQEgA0EEaiIDIAJHDQALCyAAIAE2AgQPCyAAIAQgB2o2AgQPCyAEBEAgACAENgIEIAQQByAAQQA2AgggAEIANwIAQQAhAwsCQCAFQQBIDQBB/////wMgA0EBdiIEIAYgBCAGSxsgA0H8////B08bIgNBgICAgARPDQAgACADQQJ0IgQQCCIDNgIAIAAgAyAEajYCCCAAIAEgAkcEfyADIAEgBUEEa0F8cUEEaiIAEAkgAGoFIAMLNgIEDwsQCwALeQEDfyAALQAMIQMCQCAAKAIIIgFB/x9LDQAgACgCBCICQQBMDQAgACACQQFrIgI2AgQgACgCACACai0AACABQQh0ciEBCyAAQQAgA2tB/wFxIgAgAUEIdmwiAyABQf8BcSICaiABIAAgA2prIAAgAksiABs2AgggAAsJAEGMCRCIAgALBABBAQttAgN/AX4CQCAAQQVLDQAgAikDECIGIAIpAwhZDQAgAigCACAGp2otAAAhBCACIAZCAXw3AxAgASAEwCIFQQBIBH8gAEEBaiABIAIQF0UNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADC4EBAQJ/AkACQCACQQRPBEAgACABckEDcQ0BA0AgACgCACABKAIARw0CIAFBBGohASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCwNAIAAtAAAiAyABLQAAIgRGBEAgAUEBaiEBIABBAWohACACQQFrIgINAQwCCwsgAyAEaw8LQQALegECfyAABEAgACgCWCEBIABBADYCWCABBEAgASgCCCICBEAgASACNgIMIAIQBwsgARAHCyAAKAJEIgEEQCAAIAE2AkggARAHCyAAKAJAIQEgAEEANgJAIAEEQCABKAIAIgIEQCABIAI2AgQgAhAHCyABEAcLIAAQBwsLNQAgAEIANwMIIABBADYCACAAQgA3AxAgAEEANgIgIABCADcCGCAAQQA7ASYgAEEAOgAkIAALkwEAIABBfzYCACAAQgA3AgQgAEIANwIgIABBAToAHCAAQgA3AhQgAEIANwIMIABCADcCKCAAQgA3AjAgAEIANwI4IABCADcCQCAAQgA3AkwgAEIANwJUIABCADcCXCAAIABBBGo2AkggAEIANwJoIABBAToAZCAAQgA3AnAgAEIANwJ4IABCADcCgAEgAEIANwKIAQsEAEEAC+8BAQZ/IAAoAgQiAiAAKAIIRwRAIAIgASgCADYCACAAIAJBBGo2AgQPCwJAIAIgACgCACIFayIDQQJ1IgdBAWoiBEGAgICABEkEQEH/////AyADQQF2IgYgBCAEIAZJGyADQfz///8HTxsiBAR/IARBgICAgARPDQIgBEECdBAIBUEACyIGIAdBAnRqIgMgASgCADYCACADQQRqIQEgAiAFRwRAA0AgA0EEayIDIAJBBGsiAigCADYCACACIAVHDQALCyAAIAYgBEECdGo2AgggACABNgIEIAAgAzYCACAFBEAgBRAHCw8LEAsACxAPAAsGACAAEAcLaQEDfwJAIAAiAUEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrCwkAQdAJEIACAAvtAgEDfyMAQRBrIgQkACAAQQA2AgQCQAJAIAFFDQACQCABIAAoAggiA0EFdCIFTQRAIAAgATYCBAwBCyAEQQA2AgggBEIANwMAIAFBAEgNAiAEIAVB/v///wNNBH8gA0EGdCIDIAFBH2pBYHEiBSADIAVLGwVB/////wcLED4gACgCACEDIAAgBCgCADYCACAEIAM2AgAgACgCBCEFIAAgATYCBCAEIAU2AgQgACgCCCEFIAAgBCgCCDYCCCAEIAU2AgggA0UNACADEAcLIAFBBXYhAyAAKAIAIQAgAi0AAARAIAFBIE8EQCAAQf8BIANBAnQQChoLIAFBYHEgAUYNASAAIANBAnRqIgAgACgCAEF/QSAgAUEfcWt2cjYCAAwBCyABQSBPBEAgAEEAIANBAnQQChoLIAFBYHEgAUYNACAAIANBAnRqIgAgACgCAEF/QSAgAUEfcWt2QX9zcTYCAAsgBEEQaiQADwsQCwALmgQBCH8gASAAKAIIIgMgACgCBCIEa0ECdU0EQAJAIAFFDQAgBCEDIAFBB3EiBgRAA0AgAyACKAIANgIAIANBBGohAyAIQQFqIgggBkcNAAsLIAFBAnQgBGohBCABQQFrQf////8DcUEHSQ0AA0AgAyACKAIANgIAIAMgAigCADYCBCADIAIoAgA2AgggAyACKAIANgIMIAMgAigCADYCECADIAIoAgA2AhQgAyACKAIANgIYIAMgAigCADYCHCADQSBqIgMgBEcNAAsLIAAgBDYCBA8LAkAgBCAAKAIAIgdrIgpBAnUiBiABaiIFQYCAgIAESQRAQf////8DIAMgB2siA0EBdiIEIAUgBCAFSxsgA0H8////B08bIgUEQCAFQYCAgIAETw0CIAVBAnQQCCEJCyAJIAZBAnRqIgYhAyABQQdxIgQEQANAIAMgAigCADYCACADQQRqIQMgCEEBaiIIIARHDQALCyAGIAFBAnRqIQQgAUEBa0H/////A3FBB08EQANAIAMgAigCADYCACADIAIoAgA2AgQgAyACKAIANgIIIAMgAigCADYCDCADIAIoAgA2AhAgAyACKAIANgIUIAMgAigCADYCGCADIAIoAgA2AhwgA0EgaiIDIARHDQALCyAJIAcgChAOIQEgACAENgIEIAAgATYCACAAIAEgBUECdGo2AgggBwRAIAcQBwsPCxALAAsQDwALRAAgAQRAIAAgASgCABAjIAAgASgCBBAjIAEoAhwiAARAIAEgADYCICAAEAcLIAEsABtBAEgEQCABKAIQEAcLIAEQBwsLWwAgAQRAIAAgASgCABAkIAAgASgCBBAkIAEoAhwhACABQQA2AhwgAARAIABBDGogACgCEBAkIAAgACgCBBAjIAAQBwsgASwAG0EASARAIAEoAhAQBwsgARAHCwuLDwQFfwJ9AnwBfgJAIANFDQACfwJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHEEBaw4LAAECAwQFBgcICQoMCyAALQAYIgQgAkH/AXEiBSAEIAVJGwRAIAAoAgAiBCgCACAAKQMwIAApAyggAa1+fKdqIQEgBCgCBCEHA0AgASAHTw0NIAMgBkEDdGogATAAADcDACABQQFqIQEgBkEBaiIGIAAtABgiBCAFIAQgBUkbSQ0ACwsgBCAFTw0LIAMgBEEDdGohAyACQf8BcSAEawwKCyAALQAYIgQgAkH/AXEi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ACADKAIANgIAIAMgBTYCACAAKAIEIQYgACADKAIENgIEIAMgBjYCBCAAKAIIIQYgACADKAIINgIIIAMgBjYCCCAFRQ0AIAUQBwsgBEUNASACBEAgASABKAIAQX8gAnRBf0EgIAJrIgAgACAEIAAgBEkbIgBrdnFBf3NxNgIAIAQgAGshBCABQQRqIQELIARBBXYhACAEQSBPBEAgAUEAIABBAnQQChoLIAQgBEFgcUYNASABIABBAnRqIgAgACgCAEF/QSAgBEEfcWt2QX9zcTYCAAwBCyAAIAE2AgQLIANBEGokAA8LEAsAC20CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhAqRQ0BIAVB/wBxIAEoAgBBB3RyBSAECzYCAEEBIQMLIAMLdAEBfyACRQRAIAAoAgQgASgCBEYPCyAAIAFGBEBBAQ8LIAEoAgQiAi0AACEBAkAgACgCBCIDLQAAIgBFDQAgACABRw0AA0AgAi0AASEBIAMtAAEiAEUNASACQQFqIQIgA0EBaiEDIAAgAUYNAAsLIAAgAUYLJwEBfyAAQQA2AhAgACAAKAIAIgE2AgQgACABNgIMIAEEQCABEAcLCwQAQQAL4ggBBH8jAEEQayIEJAAgACABNgIMIABBADYCCCAAQgA3AgAgAEEQaiIDQgA3AgAgA0IANwAFIANBEGoiAkIANwIAIAJCADcABSADQSBqIgJCADcCACACQgA3AAUgA0EwaiICQgA3AgAgAkIANwAFIANBQGsiAkIANwIAIAJCADcABSADQdAAaiICQgA3AgAgAkIANwAFIANB4ABqIgJCADcCACACQgA3AAUgA0HwAGoiAkIANwIAIAJCADcABSADQYABaiICQgA3AgAgAkIANwAFIANBkAFqIgJCADcCACACQgA3AAUgA0GgAWoiAkIANwIAIAJCADcABSADQbABaiICQgA3AgAgAkIANwAFIANBwAFqIgJCADcCACACQgA3AAUgA0HQAWoiAkIANwIAIAJCADcABSADQeABaiICQgA3AgAgAkIANwAFIANB8AFqIgJCADcCACACQgA3AAUgA0GAAmoiAkIANwIAIAJCADcABSADQZACaiICQgA3AgAgAkIANwAFIANBoAJqIgJCADcCACACQgA3AAUgA0GwAmoiAkIANwIAIAJCADcABSADQcACaiICQgA3AgAgAkIANwAFIANB0AJqIgJCADcCACACQgA3AAUgA0HgAmoiAkIANwIAIAJCADcABSADQfACaiICQgA3AgAgAkIANwAFIANBgANqIgJCADcCACACQgA3AAUgA0GQA2oiAkIANwIAIAJCADcABSADQaADaiICQgA3AgAgAkIANwAFIANBsANqIgJCADcCACACQgA3AAUgA0HAA2oiAkIANwIAIAJCADcABSADQdADaiICQgA3AgAgAkIANwAFIANB4ANqIgJCADcCACACQgA3AAUgA0HwA2oiA0IANwIAIANCADcABSAAQgA3ApAEIABCADcAlQQgAEIANwKgBCAAQQA2ArAEIABCADcCqAQgAEIANwK0BCAAQQA2AsQEIABCADcCvAQgAEIANwLIBCAAQQA2AtgEIABCADcC0AQgAEEANgLkBCAAQgA3AtwEIABB9ARqAn8CQCABBEAgAUGAgICABEkNARALAAsgAEIANwLoBCAAQQA2AvAEIARBADYCCCAEQgA3AwBBAQwBCyAAIAFBAnQiAxAIIgI2AtwEIAAgAiADaiIFNgLkBCACQQAgAxAKGiAAQQA2AvAEIABCADcC6AQgACAFNgLgBCAAIAMQCCICNgLoBCAAIAIgA2oiBTYC8AQgAkEAIAMQChogACAFNgLsBCAEIAMQCCICNgIAIAQgAiADaiIFNgIIIAJBACADEAoaIAQgBTYCBCABQQV0QQFyCyICIAQQQiAEKAIAIgMEQCAEIAM2AgQgAxAHCyAEQQA2AgggBEIANwMAIAEEQCAEIAFBAnQiARAIIgM2AgAgBCABIANqIgU2AgggA0EAIAEQChogBCAFNgIECyAAQYAFaiACIAQQQiAEKAIAIgEEQCAEIAE2AgQgARAHCyAEQRBqJAAgAAv+AQEEfyAAKAKABSIDBEAgAyECIAMgACgChAUiAUcEQANAIAFBDGsiAigCACIEBEAgAUEIayAENgIAIAQQBwsgAiIBIANHDQALIAAoAoAFIQILIAAgAzYChAUgAhAHCyAAKAL0BCIDBEAgAyECIAMgACgC+AQiAUcEQANAIAFBDGsiAigCACIEBEAgAUEIayAENgIAIAQQBwsgAiIBIANHDQALIAAoAvQEIQILIAAgAzYC+AQgAhAHCyAAKALoBCIBBEAgACABNgLsBCABEAcLIAAoAtwEIgEEQCAAIAE2AuAEIAEQBwsgAEHIBGoQLCAAQbQEahAsIABBoARqECwL2QEBBn8gACgCACIAKAIEIgIgACgCCCIESQRAIAIgASgCADYCACAAIAJBBGo2AgQPCwJAIAIgACgCACICayIGQQJ1IgVBAWoiA0GAgICABEkEQEH/////AyAEIAJrIgRBAXYiByADIAMgB0kbIARB/P///wdPGyIDBH8gA0GAgICABE8NAiADQQJ0EAgFQQALIgQgBUECdGoiBSABKAIANgIAIAAgBCACIAYQDiIBIANBAnRqNgIIIAAgBUEEajYCBCAAIAE2AgAgAgRAIAIQBwsPCxALAAsQDwALjgEBAX8gAARAIAAoAkwiAQRAIAAgATYCUCABEAcLIABBQGsoAgAiAQRAIAAgATYCRCABEAcLIAAoAjAiAQRAIAAgATYCNCABEAcLIAAoAhgiAQRAIAAgATYCHCABEAcLIAAoAgwiAQRAIAAgATYCECABEAcLIAAoAgAiAQRAIAAgATYCBCABEAcLIAAQBwsLBwAgACgCBAsHACAAKAIcCwMAAAt3AgF+An8CQCAAQQpLDQAgAikDECIDIAIpAwhZDQAgAigCACADp2osAAAhBSACIANCAXw3AxAgBa0hAyABAn4gBUEASARAIABBAWogASACEDVFDQIgA0L/AIMgASkDAEIHhoQMAQsgA0L/AYMLNwMAQQEhBAsgBAttAgN/AX4CQCAAQQVLDQAgAikDECIGIAIpAwhZDQAgAigCACAGp2otAAAhBCACIAZCAXw3AxAgASAEwCIFQQBIBH8gAEEBaiABIAIQNkUNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADC28BAX8jAEGAAmsiBSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgAUH/AXEgAiADayIDQYACIANBgAJJIgEbEAoaIAFFBEADQCAAIAVBgAIQSSADQYACayIDQf8BSw0ACwsgACAFIAMQSQsgBUGAAmokAAvAAgEIfyABKAIAIgEoAgghBSABKAIEIQcgASgCACEIIAAoAgAiAygCBCIBIAMoAggiAkkEQCABIAU2AgggASAHNgIEIAEgCDYCACADIAFBDGo2AgQPCwJAIAEgAygCACIEa0EMbSIJQQFqIgBB1qrVqgFJBEBB1arVqgEgAiAEa0EMbSICQQF0IgYgACAAIAZJGyACQarVqtUATxsiAgR/IAJB1qrVqgFPDQIgAkEMbBAIBUEACyIGIAlBDGxqIgAgBTYCCCAAIAc2AgQgACAINgIAIABBDGohBSABIARHBEADQCAAQQxrIgAgAUEMayIBKAIANgIAIAAgASgCBDYCBCAAIAEoAgg2AgggASAERw0ACwsgAyAGIAJBDGxqNgIIIAMgBTYCBCADIAA2AgAgBARAIAQQBwsPCxALAAsQDwALIgEBfyAABEAgACgCACIBBEAgACABNgIEIAEQBwsgABAHCwsYAQF/QQwQCCIAQgA3AgAgAEEANgIIIAAL0wECAn8CfgJAIAAoAkANAEEgEAgiAkIANwMQIAJBADYCCCACQgA3AwAgAkIANwMYIAAoAkAhAyAAIAI2AkAgA0UNACADKAIAIgIEQCADIAI2AgQgAhAHCyADEAcLIAAoAkBBACAAKAIcQQFrIgJBCk0EfyACQQJ0QZDqAGooAgAFQX8LIAAtABhsrCIEIAGtfhDkASIDBEAgACAAKAJAIgI2AgAgACACKQMQNwMIIAIpAxghBSAAQgA3AzAgACAENwMoIAAgBTcDECAAIAE2AlALIAMLiwIBB38gAEEEaiEGAkACQCAAKAIEIgBFDQAgASgCACABIAEtAAsiA8BBAEgiAhshBSABKAIEIAMgAhshAyAGIQEDQAJAIAMgACgCFCAALQAbIgIgAsBBAEgiBBsiAiACIANLIgcbIggEQCAAKAIQIABBEGogBBsgBSAIEBgiBA0BC0F/IAcgAiADSRshBAsgASAAIARBAEgiAhshASAAQQRqIAAgAhsoAgAiAA0ACyABIAZGDQACQCABKAIUIAEtABsiACAAwEEASCICGyIAIAMgACADSRsiBARAIAUgASgCECABQRBqIAIbIAQQGCIFDQELIAAgA0sNAQwCCyAFQQBODQELIAYhAQsgAQvlAQEHfyABIAAoAggiBCAAKAIEIgJrQQN1TQRAIAAgAQR/IAJBACABQQN0IgAQCiAAagUgAgs2AgQPCwJAIAIgACgCACICayIGQQN1IgcgAWoiA0GAgICAAkkEQEH/////ASAEIAJrIgRBAnYiCCADIAMgCEkbIARB+P///wdPGyIDBEAgA0GAgICAAk8NAiADQQN0EAghBQsgB0EDdCAFakEAIAFBA3QiARAKIQQgACAFIAIgBhAOIgUgA0EDdGo2AgggACABIARqNgIEIAAgBTYCACACBEAgAhAHCw8LEAsACxAPAAvHCQEJfyMAQSBrIgckAAJAAkAgACgCCEEFdCABTw0AIAFBAEgNASABQQFrQQV2QQFqIgFBAnQQCCECIAcgATYCGCAHQQA2AhQgByACNgIQIAAoAgAhASAHQQA2AgwgByABNgIIIAcgACgCBCICQR9xNgIEIAcgASACQQN2Qfz///8BcWo2AgAjAEEgayICJAAgByAHKAIEIgggBygCDCIFayAHKAIAIgkgBygCCCIDa0EDdGoiASAHKAIUIgZqIgQ2AhQgBkEAIARBAWsgBkEBa3NBIEkbRQRAIAcoAhAgBEEBa0EFdkEAIARBIU8bQQJ0akEANgIACyAHKAIQIAZBA3ZB/P///wFxaiEEAkAgBkEfcSIGIAVGBEAgAUEATA0BIAUEQCAEIAQoAgBBfyAFdEF/QSAgBWsiBiABIAYgASAGSBsiBmt2cSIIQX9zcSADKAIAIAhxcjYCACADQQRqIQMgBCAFIAZqQQN2Qfz///8BcWohBCABIAZrIQELIAFBIG0hBSABQR9qQT9PBEAgBCADIAVBAnQQDhoLIAEgBUEFdGsiAUEATA0BIAQgBUECdCIFaiIEIAQoAgBBf0EgIAFrdiIBQX9zcSADIAVqKAIAIAFxcjYCAAwBCyACIAU2AhwgAiADNgIYIAIgCDYCFCACIAk2AhAgAiAGNgIMIAIgBDYCCAJAIAIoAhQgAigCHCIBayACKAIQIAIoAhgiBGtBA3RqIgVBAEwEQCACKAIMIQEgAigCCCEDDAELAkAgAUUEQCACKAIMIQEMAQsgAigCCCIJIAkoAgBBf0EgIAIoAgwiA2siCCAIIAVBICABayIKIAUgCkgbIgYgBiAISxsiCGt2QX8gA3RxQX9zcSAEKAIAQX8gAXRBfyAKIAZrdnFxIgogAyABa3QgCiABIANrdiABIANJG3I2AgAgAiADIAhqIgRBH3EiATYCDCACIAkgBEEDdkH8////AXFqIgM2AgggBiAIayIEQQBKBEAgAyADKAIAQX9BICAEa3ZBf3NxIAogAigCHCAIanZyNgIAIAIgBDYCDCAEIQELIAUgBmshBSACIAIoAhhBBGoiBDYCGAtBfyABdCEIQSAgAWshBiAFQSBOBEAgCEF/cyEJA0AgAigCCCIDIAMoAgAgCXEgBCgCACIEIAF0cjYCACACIANBBGo2AgggAyADKAIEIAhxIAQgBnZyNgIEIAIgAigCGEEEaiIENgIYIAVBP0shAyAFQSBrIQUgAw0ACwsgAigCCCEDIAVBAEwNACADIAMoAgBBfyAGIAYgBSAFIAZKGyIGa3YgCHFBf3NxIAQoAgBBf0EgIAVrdnEiCCABdHI2AgAgAiABIAZqIgFBH3EiBDYCDCACIAMgAUEDdkH8////AXFqIgM2AgggBSAGayIBQQBMBEAgBCEBDAELIAMgAygCAEF/QSAgAWt2QX9zcSAIIAZ2cjYCACACIAE2AgwLIAIgATYCBCACIAM2AgALIAJBIGokACAAKAIAIQEgACAHKAIQNgIAIAcgATYCECAAKAIEIQIgACAHKAIUNgIEIAcgAjYCFCAAKAIIIQIgACAHKAIYNgIIIAcgAjYCGCABRQ0AIAEQBwsgB0EgaiQADwsQCwALtAQBCH8gASAAKAIIIgMgACgCBCIEa0ECdU0EQAJAIAFFDQAgBCEDIAFBB3EiBgRAA0AgAyACKAIANgIAIANBBGohAyAFQQFqIgUgBkcNAAsLIAFBAnQgBGohBCABQQFrQf////8DcUEHSQ0AA0AgAyACKAIANgIAIAMgAigCADYCBCADIAIoAgA2AgggAyACKAIANgIMIAMgAigCADYCECADIAIoAgA2AhQgAyACKAIANgIYIAMgAigCADYCHCADQSBqIgMgBEcNAAsLIAAgBDYCBA8LAkAgBCAAKAIAIghrQQJ1IgUgAWoiB0GAgICABEkEQEH/////AyADIAhrIglBAXYiAyAHIAMgB0sbIAlB/P///wdPGyIHBEAgB0GAgICABE8NAiAHQQJ0EAghCgsgCiAFQQJ0aiIFIQMgAUEHcSIJBEADQCADIAIoAgA2AgAgA0EEaiEDIAZBAWoiBiAJRw0ACwsgAUECdCAFaiEGIAFBAWtB/////wNxQQdPBEADQCADIAIoAgA2AgAgAyACKAIANgIEIAMgAigCADYCCCADIAIoAgA2AgwgAyACKAIANgIQIAMgAigCADYCFCADIAIoAgA2AhggAyACKAIANgIcIANBIGoiAyAGRw0ACwsgBCAIRwRAA0AgBUEEayIFIARBBGsiBCgCADYCACAEIAhHDQALCyAAIAogB0ECdGo2AgggACAGNgIEIAAgBTYCACAIBEAgCBAHCw8LEAsACxAPAAvlAQEFfwJAIAAoAggiAi0AVA0AIAAoAhAiAUUNACABLQBURQ0AIAIoAkghAyACKAJEIQQgAUEAOgBUAkAgAyAEa0ECdSIDIAEoAkggASgCRCIFa0ECdSIESwRAIAFBxABqIAMgBGtBjBIQPyAAKAIIIQIMAQsgAyAETw0AIAEgBSADQQJ0ajYCSAsgAi0AVA0AIAIoAkQiAyACKAJIRg0AIAAoAhAoAkQhBEEAIQEDQCAEIAFBAnQiBWogAyAFaigCADYCACABQQFqIgEgAigCSCACKAJEIgNrQQJ1SQ0ACwsgACgCEAutAwEBfwJAIAAgARAMRQ0AIABBEGogARAMRQ0AIABBIGogARAMRQ0AIABBMGogARAMRQ0AIABBQGsgARAMRQ0AIABB0ABqIAEQDEUNACAAQeAAaiABEAxFDQAgAEHwAGogARAMRQ0AIABBgAFqIAEQDEUNACAAQZABaiABEAxFDQAgAEGgAWogARAMRQ0AIABBsAFqIAEQDEUNACAAQcABaiABEAxFDQAgAEHQAWogARAMRQ0AIABB4AFqIAEQDEUNACAAQfABaiABEAxFDQAgAEGAAmogARAMRQ0AIABBkAJqIAEQDEUNACAAQaACaiABEAxFDQAgAEGwAmogARAMRQ0AIABBwAJqIAEQDEUNACAAQdACaiABEAxFDQAgAEHgAmogARAMRQ0AIABB8AJqIAEQDEUNACAAQYADaiABEAxFDQAgAEGQA2ogARAMRQ0AIABBoANqIAEQDEUNACAAQbADaiABEAxFDQAgAEHAA2ogARAMRQ0AIABB0ANqIAEQDEUNACAAQeADaiABEAxFDQAgAEHwA2ogARAMRQ0AIABBgARqIAEQDCECCyACC4UCAQZ/IABBADYCCCAAQgA3AgACQAJAIAEEQCABQdaq1aoBTw0BIAAgAUEMbCIBEAgiAzYCBCAAIAM2AgAgACABIANqIgQ2AggCQCACKAIEIgUgAigCACIGRgRAIANBACABQQxrIgEgAUEMcGtBDGoQChoMAQsgBSAGayIHQQBIDQMgB0F8cSEIA0AgA0EANgIIIANCADcCACADIAcQCCIBNgIAIAMgASAIajYCCCAGIQIDQCABIAIoAgA2AgAgAUEEaiEBIAJBBGoiAiAFRw0ACyADIAE2AgQgA0EMaiIDIARHDQALCyAAIAQ2AgQLDwsQCwALIANBADYCCCADQgA3AgAQCwAL1QMBBH8jAEEQayICJAAgACABNgIMIABBADYCCCAAQgA3AgAgAEEQaiIDQgA3AgAgA0IANwAFIABCADcCICAAQQA2AjAgAEIANwIoIABCADcCNCAAQQA2AkQgAEIANwI8IABCADcCSCAAQQA2AlggAEIANwJQIABBADYCZCAAQgA3AlwgAEH0AGoCfwJAIAEEQCABQYCAgIAESQ0BEAsACyAAQgA3AmggAEEANgJwIAJBADYCCCACQgA3AwBBAQwBCyAAIAFBAnQiAxAIIgQ2AlwgACADIARqIgU2AmQgBEEAIAMQChogAEEANgJwIABCADcCaCAAIAU2AmAgACADEAgiBDYCaCAAIAMgBGoiBTYCcCAEQQAgAxAKGiAAIAU2AmwgAiADEAgiBDYCACACIAMgBGoiBTYCCCAEQQAgAxAKGiACIAU2AgQgAUEFdEEBcgsiBCACEEIgAigCACIDBEAgAiADNgIEIAMQBwsgAkEANgIIIAJCADcDACABBEAgAiABQQJ0IgEQCCIDNgIAIAIgASADaiIFNgIIIANBACABEAoaIAIgBTYCBAsgAEGAAWogBCACEEIgAigCACIBBEAgAiABNgIEIAEQBwsgAkEQaiQAIAAL9AEBBH8gACgCgAEiAwRAIAMhAiADIAAoAoQBIgFHBEADQCABQQxrIgIoAgAiBARAIAFBCGsgBDYCACAEEAcLIAIiASADRw0ACyAAKAKAASECCyAAIAM2AoQBIAIQBwsgACgCdCIDBEAgAyECIAMgACgCeCIBRwRAA0AgAUEMayICKAIAIgQEQCABQQhrIAQ2AgAgBBAHCyACIgEgA0cNAAsgACgCdCECCyAAIAM2AnggAhAHCyAAKAJoIgEEQCAAIAE2AmwgARAHCyAAKAJcIgEEQCAAIAE2AmAgARAHCyAAQcgAahAsIABBNGoQLCAAQSBqECwL1wMBBH8jAEEQayICJAAgACABNgIMIABBADYCCCAAQgA3AgAgAEIANwIQIABBADYCICAAQgA3AhggAEIANwIkIABBADYCNCAAQgA3AiwgAEIANwI4IABBADYCSCAAQgA3AkAgAEIANwJMIABBADYCXCAAQgA3AlQgAEEANgJoIABCADcCYCAAQfgAagJ/AkAgAQRAIAFBgICAgARJDQEQCwALIABCADcCbCAAQQA2AnQgAkEANgIIIAJCADcDAEEBDAELIAAgAUECdCIDEAgiBDYCYCAAIAMgBGoiBTYCaCAEQQAgAxAKGiAAQQA2AnQgAEIANwJsIAAgBTYCZCAAIAMQCCIENgJsIAAgAyAEaiIFNgJ0IARBACADEAoaIAAgBTYCcCACIAMQCCIENgIAIAIgAyAEaiIFNgIIIARBACADEAoaIAIgBTYCBCABQQV0QQFyCyIEIAIQQiACKAIAIgMEQCACIAM2AgQgAxAHCyACQQA2AgggAkIANwMAIAEEQCACIAFBAnQiARAIIgM2AgAgAiABIANqIgU2AgggA0EAIAEQChogAiAFNgIECyAAQYQBaiAEIAIQQiACKAIAIgEEQCACIAE2AgQgARAHCyACQRBqJAAgAAv7AQEEfyAAKAKEASIDBEAgAyECIAMgACgCiAEiAUcEQANAIAFBDGsiAigCACIEBEAgAUEIayAENgIAIAQQBwsgAiIBIANHDQALIAAoAoQBIQILIAAgAzYCiAEgAhAHCyAAKAJ4IgMEQCADIQIgAyAAKAJ8IgFHBEADQCABQQxrIgIoAgAiBARAIAFBCGsgBDYCACAEEAcLIAIiASADRw0ACyAAKAJ4IQILIAAgAzYCfCACEAcLIAAoAmwiAQRAIAAgATYCcCABEAcLIAAoAmAiAQRAIAAgATYCZCABEAcLIABBzABqECwgAEE4ahAsIABBJGoQLCAAQRBqECwLDAAgASACIAAQrgIaC1IBAn9B2PsAKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQBEUNAQtB2PsAIAA2AgAgAQ8LQeD8AEEwNgIAQX8LGAAgAC0AAEEgcUUEQCABIAIgABCEARoLC20CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhBKRQ0BIAVB/wBxIAEoAgBBB3RyBSAECzYCAEEBIQMLIAMLxgIBBn8gAiABayIFQQJ1IgYgACgCCCIDIAAoAgAiBGtBAnVNBEAgASABIAAoAgQiAyAEayIHaiIFIAIgBiAHQQJ1IghLGyIHRwRAA0AgBCABKAIANgIAIARBBGohBCABQQRqIgEgB0cNAAsLIAYgCEsEQCACIAdHBEADQCADIAUoAgA2AgAgA0EEaiEDIAVBBGoiBSACRw0ACwsgACADNgIEDwsgACAENgIEDwsgBARAIAAgBDYCBCAEEAcgAEEANgIIIABCADcCAEEAIQMLAkAgBUEASA0AQf////8DIANBAXYiBCAGIAQgBksbIANB/P///wdPGyIDQYCAgIAETw0AIAAgA0ECdCIEEAgiAzYCACAAIAMgBGo2AgggACABIAJHBH8gAyABIAVBBGtBfHFBBGoiABAJIABqBSADCzYCBA8LEAsAC5UBAQF+An8CQCABRQ0AIAAvASZBgQRNBEBBACAAKQMIIAApAxAiA0IIfFMNAhogAiAAKAIAIAOnaikAADcDACAAIAApAxBCCHw3AxAMAQtBAEEBIAIgABDjAUUNARoLIABBAToAJCAAQQA2AiAgACAAKAIAIAApAxAiA6dqIgI2AhggACACIAApAwggA32najYCHEEBCwtAACAAQgA3AwggAEEANgIAIABCADcDKCAAQQk2AhwgAEEBOgAYIABC/////w83AzggAEIANwMQIABCADcDMCAAC20CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhBORQ0BIAVB/wBxIAEoAgBBB3RyBSAECzYCAEEBIQMLIAMLjAsCB38CfSACKAIAIQggAAJ/AkAgASgCBCIFRQ0AAkAgBWkiBkECTwRAIAgiBCAFTwRAIAggBXAhBAsgASgCACAEQQJ0aigCACICRQ0CIAZBAU0NAQNAIAIoAgAiAkUNAyAIIAIoAgQiBkcEQCAFIAZNBH8gBiAFcAUgBgsgBEcNBAsgAigCCCAIRw0AC0EADAMLIAEoAgAgBUEBayAIcSIEQQJ0aigCACICRQ0BCyAFQQFrIQcDQCACKAIAIgJFDQEgCCACKAIEIgZHIAYgB3EgBEdxDQEgAigCCCAIRw0AC0EADAELQRAQCCECIAMoAgAoAgAhAyACQQA2AgwgAiADNgIIIAIgCDYCBCACQQA2AgACQEEAIAUgASgCDEEBarMiDCABKgIQIgsgBbOUXhsNAEECIQQCQCAFIAVBAWtxQQBHIAVBA0lyIAVBAXRyIgYCfyAMIAuVjSILQwAAgE9dIAtDAAAAAGBxBEAgC6kMAQtBAAsiAyADIAZJGyIDQQFGDQAgAyADQQFrcUUEQCADIQQMAQsgAxDAASEEIAEoAgQhBQsCQCAEIAVNBEAgBCAFTw0BIAVBA0khAwJ/IAEoAgyzIAEqAhCVjSILQwAAgE9dIAtDAAAAAGBxBEAgC6kMAQtBAAshBiAEAn8CQCADDQAgBWlBAUsNACAGQQFBICAGQQFrZ2t0IAZBAkkbDAELIAYQwAELIgMgAyAESRsiBCAFTw0BC0EAIQVBACEGAkACQAJAAkAgBCIHBEAgB0GAgICABE8NASAHQQJ0EAghAyABKAIAIQQgASADNgIAIAQEQCAEEAcLIAEgBzYCBEEAIQMgB0EETwRAIAdBfHEhBANAIANBAnQiCSABKAIAakEANgIAIAEoAgAgCUEEcmpBADYCACABKAIAIAlBCHJqQQA2AgAgASgCACAJQQxyakEANgIAIANBBGohAyAGQQRqIgYgBEcNAAsLIAdBA3EiBARAA0AgASgCACADQQJ0akEANgIAIANBAWohAyAFQQFqIgUgBEcNAAsLIAEoAggiBEUNBCABQQhqIQMgBCgCBCEFIAdpIgZBAkkNAiAFIAdPBEAgBSAHcCEFCyABKAIAIAVBAnRqIAM2AgAgBCgCACIDRQ0EIAZBAU0NAwNAIAcgAygCBCIGTQRAIAYgB3AhBgsCQCAFIAZGBEAgAyEEDAELIAZBAnQiCiABKAIAaiIJKAIARQRAIAkgBDYCACADIQQgBiEFDAELIAQgAygCADYCACADIAEoAgAgCmooAgAoAgA2AgAgASgCACAKaigCACADNgIACyAEKAIAIgMNAAsMBAsgASgCACEDIAFBADYCACADBEAgAxAHCyABQQA2AgQMAwsQDwALIAEoAgAgBSAHQQFrcSIFQQJ0aiADNgIAIAQoAgAiA0UNAQsgB0EBayEJA0ACQCAFIAMoAgQgCXEiBkYEQCADIQQMAQsgBkECdCIKIAEoAgBqIgcoAgAEQCAEIAMoAgA2AgAgAyABKAIAIApqKAIAKAIANgIAIAEoAgAgCmooAgAgAzYCAAwBCyAHIAQ2AgAgAyEEIAYhBQsgBCgCACIDDQALCwsgASgCBCIFIAVBAWsiA3FFBEAgAyAIcSEEDAELIAUgCEsEQCAIIQQMAQsgCCAFcCEECwJAAkAgASgCACAEQQJ0aiIEKAIAIgNFBEAgAiABQQhqIgMoAgA2AgAgASACNgIIIAQgAzYCACACKAIAIgNFDQIgAygCBCEDAkAgBSAFQQFrIgRxRQRAIAMgBHEhAwwBCyADIAVJDQAgAyAFcCEDCyABKAIAIANBAnRqIQMMAQsgAiADKAIANgIACyADIAI2AgALIAEgASgCDEEBajYCDEEBCzoABCAAIAI2AgAL1QEBBH8CQCABIAAoAhAgACgCDCIDa0ECdSICSwRAIABBDGogASACaxARDAELIAEgAk8NACAAIAMgAUECdGo2AhALAkACQCAAKAIIIAAoAgAiAmtBAnUgAU8NACABQYCAgIAETw0BIAAoAgQhAyABQQJ0IgEQCCIEIAFqIQUgBCADIAJrQXxxaiIEIQEgAiADRwRAA0AgAUEEayIBIANBBGsiAygCADYCACACIANHDQALCyAAIAU2AgggACAENgIEIAAgATYCACACRQ0AIAIQBwsPCxALAAusDgIMfwR+IwBBEGsiCSQAAkACQAJAAkAgACgCBC0AJEEBTQRAQX8hCiABKQMQIg5CBHwiDyABKQMIVQ0CIAkgASgCACAOp2ooAAAiBzYCDCABIA83AxAMAQtBfyEKQQEgCUEMaiABEBdFDQEgCSgCDCEHCwJAAkACQAJAAkAgB0UNACAHIAAoAggiAigCBCACKAIAa0ECdUEDbksNBSAAKAIELwEkIgJBCHQgAkEIdnJB//8DcUGCAk8EQAJAA0BBASAJQQhqIAEQF0UNCCAJKAIIIQJBASAJQQhqIAEQF0UNCCACIANqIgMgCSgCCCICSQ0IIAMgAmshCAJAIAAoAigiAiAAKAIsRwRAIAIgAzYCBCACIAg2AgAgACACQQxqNgIoIAkoAgwhBwwBCyACIAAoAiQiAmsiC0EMbSIGQQFqIgRB1qrVqgFPDQJB1arVqgEgBkEBdCIMIAQgBCAMSRsgBkGq1arVAE8bIgQEfyAEQdaq1aoBTw0LIARBDGwQCAVBAAsiDCAGQQxsaiIGIAM2AgQgBiAINgIAIAYgC0F0bUEMbGogAiALEA4hCCAAIAwgBEEMbGo2AiwgACAGQQxqNgIoIAAgCDYCJCACRQ0AIAIQBwsgBUEBaiIFIAdJDQALQQAhCiABQQBBABBMGiAHBEADQCABLQAkIQMCQAJAIAAoAgQvASQiAkEIdCACQQh2ckH//wNxQYEETQRAIANFDQJBACEFAkAgASgCGCIEIAEoAiAiAkEDdiIGaiIDIAEoAhwiCE8EQCACIQMMAQsgAy0AACEFIAEgAkEBaiIDNgIgIANBA3YhBiAFIAJBB3F2QQFxIQULIAQgBmogCEkNAQwCCyADRQ0BQQAhBSABKAIYIAEoAiAiA0EDdmoiAiABKAIcTw0BIAItAAAgA0EHcXZBAXEhBQsgASADQQFqNgIgCyAAKAIkIApBDGxqIgMgAy0ACEH+AXEgBUEBcXI6AAggCkEBaiIKIAdHDQALCyABQQA6ACQgASABKQMQIAE1AiBCB3xCA4h8NwMQDAILEAsACwNAIAEpAwgiECABKQMQIg5CBHwiEVMNBiABKAIAIgMgDqdqKAAAIQQgASARNwMQIBAgDkIIfCIPUw0GIAMgEadqKAAAIQggASAPNwMQIA8gEFkNBiADIA+nai0AACEDIAEgDkIJfDcDECADQQFxIQsCQCAAKAIoIgMgACgCLEcEQCADIAs6AAggAyAINgIEIAMgBDYCACAAIANBDGo2AiggCSgCDCEHDAELIAMgACgCJCICayIMQQxtIgNBAWoiBUHWqtWqAU8NA0HVqtWqASADQQF0Ig0gBSAFIA1JGyADQarVqtUATxsiBQR/IAVB1qrVqgFPDQkgBUEMbBAIBUEACyINIANBDGxqIgMgCzoACCADIAg2AgQgAyAENgIAIAMgDEF0bUEMbGogAiAMEA4hBCAAIA0gBUEMbGo2AiwgACADQQxqNgIoIAAgBDYCJCACRQ0AIAIQBwsgBkEBaiIGIAdJDQALCyAJQQA2AggCQCAAKAIELwEkIgNBCHQgA0EIdnJB//8DcSIDQf8DTQRAQX8hCiABKQMQIg5CBHwiDyABKQMIVQ0GIAEoAgAgDqdqKAAAIQMgASAPNwMQDAELIANBgARHDQRBfyEKQQEgCUEIaiABEBdFDQUgCSgCCCEDCyADRQ0DIAAoAgQvASQiAkEIdCACQQh2ckH//wNxQYICSQ0CQQAhBkEAIQcDQEEBIAlBBGogARAXRQ0FIAkoAgQgB2ohBwJAIAAoAjQiAiAAKAI4RwRAIAIgBzYCACAAIAJBBGo2AjQMAQsgAiAAKAIwIgJrIgVBAnUiCEEBaiIEQYCAgIAETw0DQf////8DIAVBAXYiCyAEIAQgC0kbIAVB/P///wdPGyIEBH8gBEGAgICABE8NCCAEQQJ0EAgFQQALIgsgCEECdGoiCCAHNgIAIAAgCyACIAUQDiIFIARBAnRqNgI4IAAgCEEEajYCNCAAIAU2AjAgAkUNACACEAcLIAZBAWoiBiADRw0ACwwDCxALAAsQCwALQQAhCgNAIAEpAxAiDkIEfCIPIAEpAwhVBEBBfyEKDAMLIAEoAgAgDqdqKAAAIQUgASAPNwMQAkAgACgCNCICIAAoAjhHBEAgAiAFNgIAIAAgAkEEajYCNAwBCyACIAAoAjAiAmsiB0ECdSIEQQFqIgZBgICAgARPDQVB/////wMgB0EBdiIIIAYgBiAISRsgB0H8////B08bIgYEfyAGQYCAgIAETw0FIAZBAnQQCAVBAAsiCCAEQQJ0aiIEIAU2AgAgACAIIAIgBxAOIgcgBkECdGo2AjggACAEQQRqNgI0IAAgBzYCMCACRQ0AIAIQBwsgCkEBaiIKIANHDQALCyABKAIQIQoLIAlBEGokACAKDwsQDwALEAsAC20BA38CQAJAIAAoAgggACgCACICa0ECdSABTw0AIAFBgICAgARPDQEgACgCBCEDIAAgAUECdCIEEAggAiADIAJrIgMQDiIBIARqNgIIIAAgASADajYCBCAAIAE2AgAgAkUNACACEAcLDwsQCwALQQAgAQRAIAAgASgCABBTIAAgASgCBBBTIAEsACdBAEgEQCABKAIcEAcLIAEsABtBAEgEQCABKAIQEAcLIAEQBwsL/gcCBn8IfiMAQeAAayIDJAAgACgCECEFIANBAToAXCADIAE2AlggAyABNgJUIAMgBTYCUAJAIAFBf0YEQCAAKAIUIQUMAQsgBSgCACABQQJ0aigCACIEIAAoAhQiBSgCBCAFKAIAIgZrQQJ1Tw0AIAAoAgggBiAEQQJ0aigCAEECdGooAgAhBSAAKAIEIgQtAFRFBEAgBCgCRCAFQQJ0aigCACEFCyADQgA3A0ggA0FAa0IANwMAIANCADcDOCAEIAUgBCwAGCADQThqECUgAUEBaiIFIAFBAmsgBUEDcBshBkF/QQIgAUEDcBsgAWohBwJAAkADQCAGIQQCfyAHIAAoAhxFDQAaIAFBAWoiBSABQQJrIAVBA3AbIQQgAUEBayABQQNwDQAaIAFBAmoLIQUgBEF/RgRAIAAoAhQhAQwDCyAAKAIQKAIAIARBAnRqKAIAIgQgACgCFCIBKAIEIAEoAgAiCGtBAnVPDQIgACgCCCAIIARBAnRqKAIAQQJ0aigCACEEIAAoAgQiAS0AVEUEQCABKAJEIARBAnRqKAIAIQQLIANCADcDMCADQgA3AyggA0IANwMgIAEgBCABLAAYIANBIGoQJSAFQX9GBEAgACgCFCEBDAILIAAoAhAoAgAgBUECdGooAgAiBSAAKAIUIgEoAgQgASgCACIEa0ECdU8NASAAKAIIIAQgBUECdGooAgBBAnRqKAIAIQQgACgCBCIBLQBURQRAIAEoAkQgBEECdGooAgAhBAsgA0IANwMYIANCADcDECADQgA3AwggASAEIAEsABggA0EIahAlIAogAykDCCADKQM4Igp9IgkgAykDKCADKQNAIgt9Igx+fSADKQMQIAt9IgsgAykDICAKfSIPfnwhCiANIAkgAykDMCADKQNIIg19IhB+fCADKQMYIA19IgkgD359IQ0gDiALIBB+fSAJIAx+fCEOIANB0ABqEHkgAygCWCIBQX9HDQALIA4gDkI/hyIJhSAJfSEJQv///////////wAhCyANIA1CP4ciDIUgDH0iDEL///////////8AhSEPAkAgCgJ+IAAoAhxFBEAgCSAPVg0CQoCAgIBwIAkgDHwiCSAKIApCP4ciC4UgC30iC3xCIIYgCSALQv///////////wCFVhsiCUKBgICAgICAgCBTDQIgCUI9iAwBCwJAIAkgD1YNACAJIAx8IgkgCiAKQj+HIgyFIAx9IgxC////////////AIVWDQAgCSAMfCILQoGAgIACVA0CCyALQh2ICyIJfyEKIA0gCX8hDSAOIAl/IQ4LIAIgCj4CCCACIA0+AgQgAiAOPgIAIANB4ABqJAAPCxAVAAsQFQALEBUACxYAIAFBAU0EQCAAIAE2AhwLIAFBAkkLlQsCBX8JfiMAQeAAayIEJAAgACgCECEDIARBAToAXCAEIAE2AlggBCABNgJUIAQgAzYCUAJAAkAgAygCHCABQQJ0aigCACIDIAAoAhQiBSgCBCAFKAIAIgVrQQJ1SQRAIAAoAgggBSADQQJ0aigCAEECdGooAgAhAyAAKAIEIgUtAFRFBEAgBSgCRCADQQJ0aigCACEDCyAEQgA3A0ggBEFAa0IANwMAIARCADcDOCAFIAMgBSwAGCAEQThqECUgAUF/RwRAIAFBAWoiAyABQQJrIANBA3AbIQVBf0ECIAFBA3AbIAFqIQcDQCAFIQMCfyAHIAAoAhxFDQAaIAFBAWoiAyABQQJrIANBA3AbIQMgAUEBayABQQNwDQAaIAFBAmoLIQYgACgCECgCHCADQQJ0aigCACIBIAAoAhQiAygCBCADKAIAIgNrQQJ1Tw0DIAAoAgggAyABQQJ0aigCAEECdGooAgAhAyAAKAIEIgEtAFRFBEAgASgCRCADQQJ0aigCACEDCyAEQgA3AzAgBEIANwMoIARCADcDICABIAMgASwAGCAEQSBqECUgACgCECgCHCAGQQJ0aigCACIBIAAoAhQiAygCBCADKAIAIgNrQQJ1Tw0EIAAoAgggAyABQQJ0aigCAEECdGooAgAhAyAAKAIEIgEtAFRFBEAgASgCRCADQQJ0aigCACEDCyAEQgA3AxggBEIANwMQIARCADcDCCABIAMgASwAGCAEQQhqECUgCSAEKQMIIAQpAzgiCX0iCCAEKQMoIAQpA0AiCn0iC359IAQpAxAgCn0iCiAEKQMgIAl9Ig5+fCEJIAwgCCAEKQMwIAQpA0giD30iEH58IAQpAxggD30iCCAOfn0hDCANIAogEH59IAggC358IQ0gBCgCWCEBIAQoAlAhAwJAIAQtAFwEQAJAAkACQAJAIAFBf0YNACABQQFqIgYgAUECayAGQQNwGyIBQX9GDQAgAygCACABQQN2Qfz///8BcWooAgAgAXZBAXENACADKAJAKAIMIAFBAnRqKAIAIgFBf0cNAQsgBEF/NgJYDAELIAQgAUEBaiIGIAFBAmsgBkEDcBsiATYCWCABQX9HDQELAn9BfyAEKAJUIgFBf0YNABoCQCABQQNwBEAgAUEBayEBDAELQX8gAUECaiIBQX9GDQEaC0F/IAMoAgAgAUEDdkH8////AXFqKAIAIAF2QQFxDQAaQX8gAygCQCgCDCABQQJ0aigCACIBQX9GDQAaIAFBAWsgAUEDcA0AGiABQQJqCyEBIARBADoAXCAEIAE2AlgMAgsgASAEKAJURw0BIARBfzYCWAwBCyAEAn9BfyABQX9GDQAaAkAgAUEDcARAIAFBAWshAQwBC0F/IAFBAmoiAUF/Rg0BGgtBfyADKAIAIAFBA3ZB/P///wFxaigCACABdkEBcQ0AGkF/IAMoAkAoAgwgAUECdGooAgAiAUF/Rg0AGiABQQFrIAFBA3ANABogAUECags2AlgLIAQoAlgiAUF/Rw0ACwsgDSANQj+HIgiFIAh9IQhC////////////ACEKIAwgDEI/hyILhSALfSILQv///////////wCFIQ4CQCAJAn4gACgCHEUEQCAIIA5WDQJCgICAgHAgCCALfCIIIAkgCUI/hyIKhSAKfSIKfEIghiAIIApC////////////AIVWGyIIQoGAgICAgICAIFMNAiAIQj2IDAELAkAgCCAOVg0AIAggC3wiCCAJIAlCP4ciC4UgC30iC0L///////////8AhVYNACAIIAt8IgpCgYCAgAJUDQILIApCHYgLIgh/IQkgDCAIfyEMIA0gCH8hDQsgAiAJPgIIIAIgDD4CBCACIA0+AgAgBEHgAGokAA8LEBUACxAVAAsQFQALBABBBgsrAQF/AkAgACgCLEUNACAAKAIwRQ0AIAAoAjRFDQAgACgCOEEARyEBCyABCwQAQQALkgIBBX8gACgCBCICIAAoAghHBEAgAiABKQIANwIAIAIgASgCCDYCCCAAIAJBDGo2AgQPCwJAIAIgACgCACIGa0EMbSIDQQFqIgRB1qrVqgFJBEBB1arVqgEgA0EBdCIFIAQgBCAFSRsgA0Gq1arVAE8bIgQEfyAEQdaq1aoBTw0CIARBDGwQCAVBAAsiBSADQQxsaiIDIAEpAgA3AgAgAyABKAIINgIIIANBDGohASACIAZHBEADQCADQQxrIgMgAkEMayICKQIANwIAIAMgAigCCDYCCCACIAZHDQALIAAoAgAhAgsgACAFIARBDGxqNgIIIAAgATYCBCAAIAM2AgAgAgRAIAIQBwsPCxALAAsQDwALlAQBA38gASAAIAFGIgI6AAwCQCACDQADQCABKAIIIgItAAwNAQJAIAIgAigCCCIDKAIAIgRGBEACQCADKAIEIgRFDQAgBC0ADA0ADAILAkAgASACKAIARgRAIAIhAQwBCyACIAIoAgQiASgCACIANgIEIAEgAAR/IAAgAjYCCCACKAIIBSADCzYCCCACKAIIIgAgACgCACACR0ECdGogATYCACABIAI2AgAgAiABNgIIIAEoAggiAygCACECCyABQQE6AAwgA0EAOgAMIAMgAigCBCIANgIAIAAEQCAAIAM2AggLIAIgAygCCDYCCCADKAIIIgAgACgCACADR0ECdGogAjYCACACIAM2AgQgAyACNgIIDwsCQCAERQ0AIAQtAAwNAAwBCwJAIAEgAigCAEcEQCACIQEMAQsgAiABKAIEIgA2AgAgASAABH8gACACNgIIIAIoAggFIAMLNgIIIAIoAggiACAAKAIAIAJHQQJ0aiABNgIAIAEgAjYCBCACIAE2AgggASgCCCEDCyABQQE6AAwgA0EAOgAMIAMgAygCBCIAKAIAIgE2AgQgAQRAIAEgAzYCCAsgACADKAIINgIIIAMoAggiASABKAIAIANHQQJ0aiAANgIAIAAgAzYCACADIAA2AggMAgsgBEEMaiEBIAJBAToADCADIAAgA0Y6AAwgAUEBOgAAIAMiASAARw0ACwsLBABBAgslAQF/IABByBk2AgAgACgCICIBBEAgACABNgIkIAEQBwsgABAHC/MCAQd/IAEgACgCCCIEIAAoAgQiAmtBAnVNBEAgACABBH8gAkEAIAFBAnQiABAKIABqBSACCzYCBA8LAkACQAJAIAIgACgCACIGa0ECdSIFIAFqIgNBgICAgARJBEBB/////wMgBCAGayIEQQF2IgcgAyADIAdJGyAEQfz///8HTxsiAwRAIANBgICAgARPDQIgA0ECdBAIIQgLIAggBUECdGoiBEEAIAFBAnQiARAKIgcgAWohBSAIIANBAnRqIQEgAiAGRg0CA0AgAkEEayICKAIAIQMgAkEANgIAIARBBGsiBCADNgIAIAIgBkcNAAsgACABNgIIIAAoAgQhASAAIAU2AgQgACgCACECIAAgBDYCACABIAJGDQMDQCABQQRrIgEoAgAhACABQQA2AgAgAARAIAAgACgCACgCBBECAAsgASACRw0ACwwDCxALAAsQDwALIAAgATYCCCAAIAU2AgQgACAHNgIACyACBEAgAhAHCwvKBAEHfyADIAJrIgdBAEwEQA8LAkAgACgCCCIEIAAoAgQiCGsgB04E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AjggAEIANwMwIAAgBTcDKCAAIAQ6ACAgACADNgIcIAAgAjoAGAuCAQEDfyABEB8iAkHw////B0kEQAJAAkAgAkELTwRAIAJBD3JBAWoiAxAIIQQgACADQYCAgIB4cjYCCCAAIAQ2AgAgACACNgIEIAIgBGohAwwBCyAAIAI6AAsgACACaiEDIAAhBCACRQ0BCyAEIAEgAhAOGgsgA0EAOgAAIAAPCxAgAAuxCwICfwJ+IwBBMGsiAyQAIANBpugAKQEANwEmIANBoOgAKQMANwMgIANBmOgAKQMANwMYIANBkOgAKQMANwMQAkACQCABKQMIIAEpAxAiBUIFfFMEQCADQRBqEB8iBEHw////B08NAgJAAkAgBEELTwRAIARBD3JBAWoiARAIIQIgAyABQYCAgIB4cjYCCCADIAI2AgAgAyAENgIEIAIgBGohAQwBCyADIAQ6AAsgAyAEaiEBIAMhAiAERQ0BCyACIANBEGogBBAJGgsgAUEAOgAAIABBfjYCACAAQQRqIQAgAywAC0EATgRAIAAgAykDADcCACAAIAMoAgg2AggMAgsgACADKAIAIAMoAgQQEiADLAALQQBODQEgAygCABAHDAELIAIgASgCACAFp2oiBCgAADYAACACIAQtAAQ6AAQgASABKQMQQgV8IgU3AxAgAkHsCUEFEBgEQEEgEAgiAUEAOgARIAFB2AstAAA6ABAgAUHQCykAADcACCABQcgLKQAANwAAIABBfzYCACAAQQRqIAFBERASIAEQBwwBCyAFIAEpAwhZBEAgA0EQahAfIgRB8P///wdPDQICQAJAIARBC08EQCAEQQ9yQQFqIgEQCCECIAMgAUGAgICAeHI2AgggAyACNgIAIAMgBDYCBCACIARqIQEMAQsgAyAEOgALIAMgBGohASADIQIgBEUNAQsgAiADQRBqIAQQCRoLIAFBADoAACAAQX42AgAgAEEEaiEAIAMsAAtBAE4EQCAAIAMpAwA3AgAgACADKAIINgIIDAILIAAgAygCACADKAIEEBIgAywAC0EATg0BIAMoAgAQBwwBCyACIAEoAgAgBadqLQAAOgAFIAEgASkDEEIBfCIFNwMQIAUgASkDCFkEQCADQRBqEB8iBEHw////B08NAgJAAkAgBEELTwRAIARBD3JBAWoiARAIIQIgAyABQYCAgIB4cjYCCCADIAI2AgAgAyAENgIEIAIgBGohAQwBCyADIAQ6AAsgAyAEaiEBIAMhAiAERQ0BCyACIANBEGogBBAJGgsgAUEAOgAAIABBfjYCACAAQQRqIQAgAywAC0EATgRAIAAgAykDADcCACAAIAMoAgg2AggMAgsgACADKAIAIAMoAgQQEiADLAALQQBODQEgAygCABAHDAELIAIgASgCACAFp2otAAA6AAYgASABKQMQQgF8IgU3AxAgBSABKQMIWQRAIANBEGoQHyIEQfD///8HTw0CAkACQCAEQQtPBEAgBEEPckEBaiIBEAghAiADIAFBgICAgHhyNgIIIAMgAjYCACADIAQ2AgQgAiAEaiEBDAELIAMgBDoACyADIARqIQEgAyECIARFDQELIAIgA0EQaiAEEAkaCyABQQA6AAAgAEF+NgIAIABBBGohACADLAALQQBOBEAgACADKQMANwIAIAAgAygCCDYCCAwCCyAAIAMoAgAgAygCBBASIAMsAAtBAE4NASADKAIAEAcMAQsgAiABKAIAIAWnai0AADoAByABIAEpAxBCAXwiBTcDECAFIAEpAwhZBEAgAyADQRBqEHEhASAAQX42AgAgAEEEaiEAIAEsAAtBAE4EQCAAIAEpAgA3AgAgACABKAIINgIIDAILIAAgASgCACABKAIEEBIgASwAC0EATg0BIAEoAgAQBwwBCyACIAEoAgAgBadqLQAAOgAIIAEgASkDECIFQgF8IgY3AxAgASkDCCAFQgN8UwRAIAMgA0EQahBxIQEgAEF+NgIAIABBBGohACABLAALQQBOBEAgACABKQIANwIAIAAgASgCCDYCCAwCCyAAIAEoAgAgASgCBBASIAEsAAtBAE4NASABKAIAEAcMAQsgAiABKAIAIAanai8AADsBCiABIAEpAxBCAnw3AxAgAEIANwIIIABCADcCAAsgA0EwaiQADwsQIAALiQEBAX8gACgCVCIBBEAgACABNgJYIAEQBwsgACgCSCIBBEAgACABNgJMIAEQBwsgACgCNCIBBEAgACABNgI4IAEQBwsgACgCKCIBBEAgACABNgIsIAEQBwsgACgCHCIBBEAgACABNgIgIAEQBwsgACgCDCIBBEAgARAHCyAAKAIAIgAEQCAAEAcLC64BAQd/IAFFBEAgAkEANgIADwtBACAALQAMa0H/AXEh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DCACQQJ0aigCACICQX9GDQAaIAJBAWsgAkEDcA0AGiACQQJqCyEBIABBADoADCAAIAE2AggPCyABIAAoAgRHDQEgAEF/NgIIDwsgAAJ/QX8gAUF/Rg0AGgJAIAFBA3AEQCABQQFrIQEMAQtBfyABQQJqIgFBf0YNARoLQX8gAygCDCABQQJ0aigCACIBQX9GDQAaIAFBAWsgAUEDcA0AGiABQQJqCzYCCAsLKgEBfwJAIAFFDQAgASgCOA0AIAEtABhBA0cNACAAIAE2AjxBASECCyACCzMBAX8CQCAAKAI8RQ0AIAAoAixFDQAgACgCMEUNACAAKAI0RQ0AIAAoAjhBAEchAQsgAQs6AQJ+IAIpAwgiBCACKQMQIgNVBEAgAigCACADp2otAAAhASACIANCAXw3AxAgACABNgIECyADIARTCy4BAX8gACgCECIBBEAgACABNgIUIAEQBwsgACgCACIBBEAgACABNgIEIAEQBwsLDAAgABC2ARogABAHC7cEAQd/IABCADcCECAAQQA2AgggAEIANwIAIABBADYCGCABKAIEIgQgASgCACIGayIFQRRtIQICQCAEIAZGBEAMAQsCQCACQc2Zs+YASQRAIAAgBRAIIgQ2AhQgACAENgIQIAAgBCACQRRsajYCGCABKAIAIgIgASgCBCIGRg0CIAQhAQNAIAEgAikCADcCACABIAIoAhA2AhAgASACKQIINwIIIAFBFGohASACQRRqIgIgBkcNAAtBACEGIABBADYCHCAAIAE2AhQgASAERwRAQQEgASAEa0EUbSIBIAFBAU0bIgVBA3EhB0EAIQFBACECIAVBAWtBA08EQCAFQXxxIQhBACEFA0AgAiAEIAFBFGxqIgMoAhAgAygCDGwiAyACIANLGyICIAQgAUEBckEUbGoiAygCECADKAIMbCIDIAIgA0sbIgIgBCABQQJyQRRsaiIDKAIQIAMoAgxsIgMgAiADSxsiAiAEIAFBA3JBFGxqIgMoAhAgAygCDGwiAyACIANLGyECIAFBBGohASAFQQRqIgUgCEcNAAsLIAcEQANAIAIgBCABQRRsaiIFKAIQIAUoAgxsIgUgAiAFSxshAiABQQFqIQEgBkEBaiIGIAdHDQALCyACRQRAIABBADYCDCAADwsgAkEASA0CIAAgAhAIIgZBACACEAoiASACaiIE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QQxqIAFB1OoAEIkBAkAgACgCICAAKAIYIgNrQQJ1IAJPDQAgAkGAgICABE8NAiAAKAIcIQEgAkECdCICEAgiBCACaiEGIAQgASADa0F8cWoiBCECIAEgA0cEQANAIAJBBGsiAiABQQRrIgEoAgA2AgAgASADRw0ACwsgACAGNgIgIAAgBDYCHCAAIAI2AhggA0UNACADEAcLIABCADcCUCAAKAJMIQEgAEEANgJMIAEEQCABEAcLIABCADcCRCAAQUBrIgEoAgAhACABQQA2AgAgAEUNACAAEAcLIAUPCxALAAvvAQECfyAAIAAoAgQiAiABaiIDNgIEIAJBACADQQFrIAJBAWtzQSBJG0UEQCAAKAIAIANBAWtBBXZBACADQSFPG0ECdGpBADYCAAsCQCABRQ0AIAAoAgAgAkEDdkH8////AXFqIQAgAkEfcSICBEAgACAAKAIAQX8gAnRBf0EgIAJrIgIgAiABIAEgAksbIgJrdnFBf3NxNgIAIAEgAmshASAAQQRqIQALIAFBBXYhAiABQSBPBEAgAEEAIAJBAnQQChoLIAEgAUFgcUYNACAAIAJBAnRqIgAgACgCAEF/QSAgAUEfcWt2QX9zcTYCAAsLBABBAgsrACABBEAgACABKAIAEI0BIAAgASgCBBCNASABQRRqIAEoAhgQUyABEAcLC24CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhCOAUUNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADCxAAIAAoAgQgACgCAGtBAnULBwAgACgCUAsLACAABEAgABAHCwvHAQEEfwJAIAAgARA8IgEgAEEEakYNACABQRxqIgAoAgAgACABLAAnQQBIGyEBA0AgASIAQQFqIQEgACwAACICQSBGIAJBCWtBBUlyDQALAkACQAJAIAAsAAAiAkEraw4DAQIAAgtBASEECyABLAAAIQIgASEACyACQTBrQQpJBEADQCADQQpsIAAsAABrQTBqIQMgACwAASEBIABBAWohACABQTBrQQpJDQALCyADQQAgA2sgBBsiAEF/Rg0AIABBAEchBQsgBQuIAQEDfyAABEAgACgCGCIDBEAgACgCHCICIAMiAUcEQANAIAJBBGsiAigCACEBIAJBADYCACABBEAgAUEMaiABKAIQECQgASABKAIEECMgARAHCyACIANHDQALIAAoAhghAQsgACADNgIcIAEQBwsgAEEMaiAAKAIQECQgACAAKAIEECMgABAHCws3ACAAQQA2AiggAEIANwIEIABB4OcANgIAIABCADcCDCAAQgA3AhQgAEIANwIcIABBADsBJCAAC4ABAQN/IABB4OcANgIAIAAoAhQiAgRAIAAgAjYCGCACEAcLIAAoAggiAgRAIAAoAgwiAyACIgFHBEADQCADQQRrIgMoAgAhASADQQA2AgAgAQRAIAEgASgCACgCBBECAAsgAiADRw0ACyAAKAIIIQELIAAgAjYCDCABEAcLIAAQBwttAQJ/QSgQCCICQX82AgAgAkEIaiIDQgA3AxAgA0EANgIIIANCADcDACADQgA3AxggACACIAAoAgAoAhARBAAgASgCWCEAIAEgAjYCWCAABEAgACgCCCIBBEAgACABNgIMIAEQBwsgABAHC0EBC5oBAQR/IAAoAgAiBARAIAQhAyAEIAAoAgQiAUcEQANAIAFBkAFrIgMoAoQBIgIEQCABQQhrIAI2AgAgAhAHCyABQRxrKAIAIgIEQCABQRhrIAI2AgAgAhAHCyABQShrKAIAIgIEQCABQSRrIAI2AgAgAhAHCyABQYwBaxBzIAMiASAERw0ACyAAKAIAIQMLIAAgBDYCBCADEAcLCwcAIAAoAggLsgEBA38CQCAAKAIEIgIgACgCCCIEQQV0RgRAIAJBAWpBAEgNAUH/////ByEDIAAgAkH+////A00EfyAEQQZ0IgMgAkFgcUEgaiICIAIgA0kbBUH/////BwsQPiAAKAIEIQILIAAgAkEBajYCBEEBIAJ0IQMgACgCACACQQN2Qfz///8BcWohACABLQAABEAgACAAKAIAIANyNgIADwsgACAAKAIAIANBf3NxNgIADwsQCwALxBQCEX8BfiMAQSBrIgUkACAAKAIEKAIsIQcgACgCCCIDKAIAIQIgAygCBCEDIAVBADYCGCAFQgA3AxACQCADIAJrQQJ1QQNuIgQgBygCZCAHKAJgIgNrQQxtIgJLBEAgBCACayIGIAcoAmgiBCAHKAJkIgJrQQxtTQRAAkAgBkUNACACIQMgBkEMbEEMayIIQQxuQQFqQQNxIgQE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/wMgBCADayIEQQF2IgogBSAFIApJGyAEQfz///8HTxsiBQR/IAVBgICAgARPDQggBUECdBAIBUEACyIEIAZBAnRqIgYgCDYCACACIAQgAyAJEA4iBDYChAEgAiAGQQRqNgKIASACIAQgBUECdGo2AowBIANFDQAgAxAHCyABQQFqIgEgACgC3AEgACgC2AFrQZABbUkNAQwDCwsQCwALQQAhASAAKALYASICIAAoAtwBRg0AA0ACQCACIAFBkAFsaiICKAKIASIDIAIoAowBIgRJBEAgAyAINgIAIAIgA0EEajYCiAEMAQsgAyACKAKEASIDayIJQQJ1IgZBAWoiBUGAgICABE8NBEH/////AyAEIANrIgRBAXYiCiAFIAUgCkkbIARB/P///wdPGyIFBH8gBUGAgICABE8NBiAFQQJ0EAgFQQALIgQgBkECdGoiBiAINgIAIAIgBCADIAkQDiIENgKEASACIAZBBGo2AogBIAIgBCAFQQJ0ajYCjAEgA0UNACADEAcLIAFBAWoiASAAKALcASAAKALYASICa0GQAW1JDQALCyALQQFqIgtBA0cNAAsgB0EQaiQAQQEPCxALAAsQDwAL5gsBBn8gASAAKAIEIgIgACgCACIGa0GQAW0iA0sEQAJAIAEgA2siAyAAIgEoAggiBiAAKAIEIgJrQZABbU0EQAJAIANFDQAgAiEAIANBB3EiBgRAA0AgABAbIABBkAFqIQAgBEEBaiIEIAZHDQALCyADQZABbCACaiECIANBAWtB/////wBxQQdJDQADQCAAEBsgAEGQAWoQGyAAQaACahAbIABBsANqEBsgAEHABGoQGyAAQdAFahAbIABB4AZqEBsgAEHwB2oQGyAAQYAJaiIAIAJHDQALCyABIAI2AgQMAQsCQAJAAkAgAiABKAIAIgJrQZABbSIHIANqIgBB8ricDkkEQEHxuJwOIAYgAmtBkAFtIgJBAXQiBiAAIAAgBkkbIAJBuJyOB08bIgYEQCAGQfK4nA5PDQIgBkGQAWwQCCEFCyAHQZABbCAFaiICIQAgA0EHcSIHBEADQCAAEBsgAEGQAWohACAEQQFqIgQgB0cNAAsLIANBkAFsIAJqIQcgA0EBa0H/////AHFBB08EQANAIAAQGyAAQZABahAbIABBoAJqEBsgAEGwA2oQGyAAQcAEahAbIABB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AgAgA0UNAiADEAcMAgsgASAETw0BIAAgASADajYCBAwBC0EAIAJCAFMNAhoCQCAAKAIEIgYgACgCACIEayIFrSACWQ0AIAKnIgMgBUsEQCADIAVrIgcgACgCCCIIIAZrTQRAIAAgBkEAIAcQCiAHajYCBAwCCyADQQBIDQNB/////wcgCCAEayIGQQF0IgggAyADIAhJGyAGQf////8DTxsiBhAIIgggBWpBACAHEAoaIAAgCCAEIAUQDiIFIAZqNgIIIAAgAyAFajYCBCAAIAU2AgAgBEUNASAEEAcMAQsgAyAFTw0AIAAgAyAEajYCBAsgAqciA0UNACAAKAIAIAEgAxAOGgsgACAAKQMYQgF8NwMYQQEMAQsQCwALC7MNAQp/IwBBIGsiCCQAIAEgAzYCICABIAI2AiggASAENgIEIAAgAyAIQRBqEHICQCAAKAIADQAgACwAD0EASARAIAAoAgQQBwsgCC0AFyIEIAEgASgCACgCCBEAAEcEQEHAABAIIgFBADoAMiABQaIKLwAAOwAwIAFBmgopAAA3ACggAUGSCikAADcAICABQYoKKQAANwAYIAFBggopAAA3ABAgAUH6CSkAADcACCABQfIJKQAANwAAIABBfzYCACAAQQRqIAFBMhASIAEQBwwBCyABIAgtABUiAjoAJCABIAgtABYiAzoAJSACQQNrQf8BcUH9AU0EQEEgEAgiAUEAOgAWIAFBjwspAAA3AA4gAUGJCykAADcACCABQYELKQAANwAAIABBezYCACAAQQRqIAFBFhASIAEQBwwBCwJAIAJBAkcNAEECQQMgBBsgA08NAEEgEAgiAUEAOgAWIAFB+AopAAA3AA4gAUHyCikAADcACCABQeoKKQAANwAAIABBezYCACAAQQRqIAFBFhASIAEQBwwBCyABKAIgIAJBCHQgA3IiAjsBJgJAIAJB//8DcUGDAkkNACAILgEaQQBODQAjAEEQayIEJABBJBAIIgJCADcCBCACQgA3AhggAkEQaiIDQgA3AgAgAiACQQRqNgIAIAJBADYCICACIAM2AgwgBEEANgIAIAEoAiAhAyMAQRBrIgkkAAJ/QQAgAkUNABogBCADNgIAIAlBADYCDEEAQQEgCUEMaiADEEpFDQAaIAkoAgwiDQRAA0ACQEEBIAlBCGogBCgCABBKBEBBHBAIIgNCADcCBCADQRBqIgdCADcCACADIANBBGo2AgAgAyAHNgIMIAMgCSgCCDYCGCAEIAMQ1AENASADQQxqIAMoAhAQJCADIAMoAgQQIyADEAcLQQAMAwsjAEEQayIHJAAgByADNgIIAkAgA0UNAAJAIAIoAhwiBSACKAIgSQRAIAdBADYCCCAFIAM2AgAgAiAFQQRqNgIcDAELQQAhAwJAAkACQCACKAIcIAIoAhgiBmtBAnUiC0EBaiIFQYCAgIAESQRAQf////8DIAIoAiAgBmsiBkEBdiIKIAUgBSAKSRsgBkH8////B08bIgYEQCAGQYCAgIAETw0CIAZBAnQQCCEDCyAHKAIIIQogB0EANgIIIAMgC0ECdGoiBSAKNgIAIAMgBkECdGohBiAFQQRqIQsgAigCHCIDIAIoAhgiCkYNAgNAIANBBGsiAygCACEOIANBADYCACAFQQRrIgUgDjYCACADIApHDQALIAIgBjYCICACKAIcIQYgAiALNgIcIAIoAhghAyACIAU2AhggAyAGRg0DA0AgBkEEayIGKAIAIQUgBkEANgIAIAUEQCAFQQxqIAUoAhAQJCAFIAUoAgQQIyAFEAcLIAMgBkcNAAsMAwsQCwALEA8ACyACIAY2AiAgAiALNgIcIAIgBTYCGAsgAwRAIAMQBwsLIAcoAgghAyAHQQA2AgggA0UNACADQQxqIAMoAhAQJCADIAMoAgQQIyADEAcLIAdBEGokACAMQQFqIgwgDUcNAAsLIAQgAhDUAQshAyAJQRBqJAACQCADBEAgASgCBCIHKAIEIQMgByACNgIEIAMEQCADEJMBCyAAQgA3AgAgAEIANwIIDAELQSAQCCIDQQA6ABogA0GrDC8AADsAGCADQaMMKQAANwAQIANBmwwpAAA3AAggA0GTDCkAADcAACAAQX82AgAgAEEEaiADQRoQEiADEAcgBEEANgIIIAIQkwELIARBEGokACAAKAIADQEgACwAD0EATg0AIAAoAgQQBwsgASABKAIAKAIMEQAARQRAQTAQCCIBQQA6ACEgAUHoCi0AADoAICABQeAKKQAANwAYIAFB2AopAAA3ABAgAUHQCikAADcACCABQcgKKQAANwAAIABBfzYCACAAQQRqIAFBIRASIAEQBwwBCyABIAEoAgAoAhQRAABFBEAgCEGuDBBxIQEgAEF/NgIAIABBBGohACABLAALQQBOBEAgACABKQIANwIAIAAgASgCCDYCCAwCCyAAIAEoAgAgASgCBBASIAEsAAtBAE4NASABKAIAEAcMAQsgASABKAIAKAIYEQAARQRAIAhBpQoQcSEBIABBfzYCACAAQQRqIQAgASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggMAgsgACABKAIAIAEoAgQQEiABLAALQQBODQEgASgCABAHDAELIABCADcCACAAQgA3AggLIAhBIGokAAuDAgEHfyABIAAoAggiAiAAKAIEIgNrQQJ1TQRAIAAgAQR/IANBACABQQJ0IgAQCiAAagUgAws2AgQPCwJAIAMgACgCACIFa0ECdSIHIAFqIgRBgICAgARJBEBB/////wMgAiAFayICQQF2IgggBCAEIAhJGyACQfz///8HTxsiBARAIARBgICAgARPDQIgBEECdBAIIQYLIAdBAnQgBmoiAkEAIAFBAnQiARAKIAFqIQEgAyAFRwRAA0AgAkEEayICIANBBGsiAygCADYCACADIAVHDQALCyAAIAYgBEECdGo2AgggACABNgIEIAAgAjYCACAFBEAgBRAHCw8LEAsACxAPAAuGAgEGf0HAABAIIQRBDBAIIgIgACgCBCgCUDYCCCACQaDnADYCACACQQA2AgQgBCACEKoBIQQCQAJAIAFBAEgEQCAEIQIMAQsgAEEIaiEHAkAgACgCDCICIAAoAggiBWtBAnUiBiABSg0AIAFBAWohAyABIAZPBEAgByADIAZrEF4MAQsgAyAGTw0AIAUgA0ECdGoiBSACRwRAA0AgAkEEayICKAIAIQMgAkEANgIAIAMEQCADIAMoAgAoAgQRAgALIAIgBUcNAAsLIAAgBTYCDAsgBygCACABQQJ0aiIAKAIAIQIgACAENgIAIAJFDQELIAIgAigCACgCBBECAAsgAUF/c0EfdgvHCwEJfyABQX9GBEBBAQ8LIAAoAhggAUEDbiIDQQN2Qfz///8AcWooAgAgA3ZBAXFFBEAgACAAKAIwIgI2AjQCQCAAKAI4IAJHBEAgAiABNgIAIAAgAkEEajYCNAwBC0EEEAgiBCABNgIAIAAgBEEEaiIFNgI4IAAgBTYCNCAAIAQ2AjAgAkUNACACEAcLIAAoAgQoAhwiBCABQQFqIgIgAUECayACQQNwGyIF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ASgCACEEIAEoAgQhASADQQA6AA8gAEEYaiABIARrQQJ1QQNuIANBD2oQISAAKAIEIgEoAjghBCABKAI0IQEgA0EAOgAOIABBJGogBCABa0ECdSADQQ5qECEgACACKQIINwIQIAAgAikCADcCCCADQRBqJAALggICA38CfgJAIAAoAgwiBCAAKAIIIgNrQQJ1IgUgAS0AGCIBSQRAIABBCGogASAFaxARIAAoAgghAyAAKAIMIQQMAQsgASAFTw0AIAAgAyABQQJ0aiIENgIMC0EAIQECQCACKQMIIAIpAxAiBiAEIANrIgStIgd8Uw0AIAMgAigCACAGp2ogBBAJGiACIAIpAxAgB3wiBjcDECACKQMIIAZCBHxTDQAgACACKAIAIAanaigAADYCFCACIAIpAxAiB0IEfCIGNwMQIAIpAwggBlcNACACKAIAIAanai0AACEDIAIgB0IFfDcDECADQQFrQR1LDQAgACADNgIEQQEhAQsgAQsZACAAEJQBIgBBADYCLCAAQazXADYCACAAC7QMAg5/A34jAEFAaiIEJAAgBEEANgI4IARCADcDMCAEQgA3AyggBEIANwMgIARCADcDGCAEQgA3AxAgBEIANwMIAkACfyAEQQhqIQUCQCABLwEmIgNFDQACQCADQf8DTQRAIAEpAwggASkDECIRQgR8Uw0CIAUgASgCACARp2ooAAAiCDYCDCABIAEpAxBCBHwiETcDEAwBC0EBIAVBDGogARA2RQ0BIAEpAxAhESAFKAIMIQgLIAhBBnatIAEpAwggEX1VDQACQCAFKAIEIAUoAgAiCWtBAnUiAyAISQRAIAUgCCADaxARIAUoAgwhCAwBCyADIAhNDQAgBSAJIAhBAnRqNgIEC0EBIAhFDQEaIAEpAxAhESAFKAIAIQsgASkDCCESQQAhCQNAQQAgESASWQ0CGiABKAIAIgogEadqLQAAIQYgASARQgF8IhE3AxAgBkECdiEDQQAhBwJAAkACQAJAIAZBA3EiDQ4EAgEBAAELQQAgCCADIAlqIgNNDQUaIAsgCUECdGpBACAGQfwBcUEEahAKGiADIQkMAgsDQCARIBJRDQQgCiARp2otAAAhCCABIBFCAXwiETcDECAIIAdBA3RBBnJ0IANyIQMgB0EBaiIHIA1HDQALCyALIAlBAnRqIAM2AgALIAlBAWoi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AQMCBAUHC0E8EAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0PIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABBhBQ2AgAMBgtBPBAIIgAgAzYCBCAAQcgZNgIAIAAgAikCADcCCCAAIAIpAgg3AhAgACACKQIQNwIYIABBADYCKCAAQgA3AiAgAigCHCIFIAIoAhgiA0cEQCAFIANrIgZBAEgNDiAAIAYQCCIBNgIgIAAgASAGQXxxajYCKANAIAEgAygCADYCACABQQRqIQEgA0EEaiIDIAVHDQALIAAgATYCJAsgACAEKQIANwIsIAAgBCkCCDcCNCAAQYAaNgIADAULQfAAEAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0NIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABCADcCPCAAQewbNgIAIABCADcCRCAAQgA3AkwgAEIANwJUIABCADcCXCAAQgA3AmQgAEEANgJsDAQLQdwAEAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0MIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABCADcCPCAAQeQdNgIAIABCADcCRCAAQgA3AkwgAEEANgJUIAAgCTYCWAwDC0HoABAIIgAgAzYCBCAAQcgZNgIAIAAgAikCADcCCCAAIAIpAgg3AhAgACACKQIQNwIYIABBADYCKCAAQgA3AiAgAigCHCIFIAIoAhgiA0cEQCAFIANrIgZBAEgNCyAAIAYQCCIBNgIgIAAgASAGQXxxajYCKANAIAEgAygCADYCACABQQRqIQEgA0EEaiIDIAVHDQALIAAgATYCJAsgACAEKQIANwIsIAAgBCkCCDcCNCAAQQA2AlQgAEIANwJMIABCADcCPCAAQcgfNgIAIAAgBCkCADcCWCAAIAQpAgg3AmAMAgsCf0GAARAIIgAgAzYCBCAAQcgZNgIAIAAgAikCADcCCCAAIAIpAgg3AhAgACACKQIQNwIYIABBADYCKCAAQgA3AiACQCACKAIcIgEgAigCGCIDRwRAIAEgA2siA0EASA0BIAAgAxAIIgE2AiQgACABNgIgIAAgASADQXxxajYCKCACKAIYIgMgAigCHCIFRwRAA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsLIAAgATYCJAsgAEGQGTYCACAAIAQpAgA3AiwgACAEKQIINwI0IABBQGtCADcCACAAQagmNgI8IABBtCE2AgAgACAEKQIANwJIIAAgBCkCCDcCUCAAQoCAgPxzNwJoIABCfzcCYCAAQoGAgIBwNwJYIABBoCM2AjwgAEIANwJwIABCADcAdSAADAELDAoLIQAMAQsACwwBCyAEKAIsIQAgByAKNgIMIAcgADYCCCAHIAU2AhQgByAFQQxqNgIQIAdBCGohBEEAIQACQAJAAkACQAJAAkACQAJAIAFBAWsOBgABAwIEBQcLQTwQCCIAIAM2AgQgAEHIGTYCACAAIAIpAgA3AgggACACKQIINwIQIAAgAikCEDcCGCAAQQA2AiggAEIANwIgIAIoAhwiBSACKAIYIgNHBEAgBSADayIGQQBIDQ4gACAGEAgiATYCICAAIAEgBkF8cWo2AigDQCABIAMoAgA2AgAgAUEEaiEBIANBBGoiAyAFRw0ACyAAIAE2AiQLIAAgBCkCADcCLCAAIAQpAgg3AjQgAEHEJjYCAAwGC0E8EAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0NIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABB7Ck2AgAMBQtB8AAQCCIAIAM2AgQgAEHIGTYCACAAIAIpAgA3AgggACACKQIINwIQIAAgAikCEDcCGCAAQQA2AiggAEIANwIgIAIoAhwiBSACKAIYIgNHBEAgBSADayIGQQBIDQwgACAGEAgiATYCICAAIAEgBkF8cWo2AigDQCABIAMoAgA2AgAgAUEEaiEBIANBBGoiAyAFRw0ACyAAIAE2AiQLIAAgBCkCADcCLCAAIAQpAgg3AjQgAEIANwI8IABBzCs2AgAgAEIANwJEIABCADcCTCAAQgA3AlQgAEIANwJcIABCADcCZCAAQQA2AmwMBAtB3AAQCCIAIAM2AgQgAEHIGTYCACAAIAIpAgA3AgggACACKQIINwIQIAAgAikCEDcCGCAAQQA2AiggAEIANwIgIAIoAhwiBSACKAIYIgNHBEAgBSADayIGQQBIDQsgACAGEAgiATYCICAAIAEgBkF8cWo2AigDQCABIAMoAgA2AgAgAUEEaiEBIANBBGoiAyAFRw0ACyAAIAE2AiQLIAAgBCkCADcCLCAAIAQpAgg3AjQgAEIANwI8IABBuC02AgAgAEIANwJEIABCADcCTCAAQQA2AlQgACAJNgJYDAMLQegAEAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCICACKAIcIgUgAigCGCIDRwRAIAUgA2siBkEASA0KIAAgBhAIIgE2AiAgACABIAZBfHFqNgIoA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsgACABNgIkCyAAIAQpAgA3AiwgACAEKQIINwI0IABBADYCVCAAQgA3AkwgAEIANwI8IABBkC82AgAgACAEKQIANwJYIAAgBCkCCDcCYAwCCwJ/QYABEAgiACADNgIEIABByBk2AgAgACACKQIANwIIIAAgAikCCDcCECAAIAIpAhA3AhggAEEANgIoIABCADcCIAJAIAIoAhwiASACKAIYIgNHBEAgASADayIDQQBIDQEgACADEAgiATYCJCAAIAE2AiAgACABIANBfHFqNgIoIAIoAhgiAyACKAIcIgVHBEADQCABIAMoAgA2AgAg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RQ0AIAAgACgCACgCLBEAACECCyACCwQAQQULMwAgAARAIAAsACdBAEgEQCAAKAIcEAcLIABBDGogACgCEBCNASAAIAAoAgQQUyAAEAcLC7oBAQR/IwBBEGsiAyQAIAMgACABIAIQ+gEgACADKAIANgIYAkAgAEEYaiIFIANGDQAgAEEcaiEBIANBBHIhAiADLQAPIgbAIQQgACwAJ0EATgRAIARBAE4EQCABIAIpAgA3AgAgASACKAIINgIIDAILIAEgAygCBCADKAIIEGAMAQsgASADKAIEIAIgBEEASCIAGyADKAIIIAYgABsQYQsgAywAD0EASARAIAMoAgQQBwsgA0EQaiQAIAULugEBBH8jAEEQayIDJAAgAyAAIAEgAhD7ASAAIAMoAgA2AhgCQCAAQRhqIgUgA0YNACAAQRxqIQEgA0EEciECIAMtAA8iBsAhBCAALAAnQQBOBEAgBEEATgRAIAEgAikCADcCACABIAIoAgg2AggMAgsgASADKAIEIAMoAggQYAwBCyABIAMoAgQgAiAEQQBIIgAbIAMoAgggBiAAGxBhCyADLAAPQQBIBEAgAygCBBAHCyADQRBqJAAgBQvVAwEEfyMAQSBrIgMkACADQQhqIQIjAEHQAGsiACQAIAAgASkDIDcDSCAAQUBrIAEpAxg3AwAgACABKQMQNwM4IAAgASkDCDcDMCAAIAEpAwA3AyggAEEIaiAAQShqIABBGGoQcgJAIAAoAggiAQRAIAIgATYCACACQQRqIQEgACwAF0EATgRAIAEgAEEIakEEciICKQIANwIAIAEgAigCCDYCCAwCCyABIAAoAgwgACgCEBASIAAsABdBAE4NASAAKAIMEAcMAQsgACwAF0EASARAIAAoAgwQBwsgAC0AHyIBQQJPBEBBIBAIIgFBADoAGiABQcULLwAAOwAYIAFBvQspAAA3ABAgAUG1CykAADcACCABQa0LKQAANwAAIABBfzYCCCAAQQhqQQRyIgQgAUEaEBIgACwAFyEFIAIgACgCCDYCACACQQRqIQIgBUEATgRAIAIgBCkCADcCACACIAQoAgg2AgggARAHDAILIAIgACgCDCAAKAIQEBIgACwAF0EASARAIAAoAgwQBwsgARAHDAELIAJCADcCACACIAE2AhAgAkIANwIICyAAQdAAaiQAIAMoAhghACAD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IAYgAEECcmotAAA6AAIgBCADKAIAaiAGIABBA3JqLQAAOgADIABBBGohACAEQQRqIQQgCkEEaiIKIAhHDQALCyAHBEADQCADKAIAIARqIAAgBmotAAA6AAAgAEEBaiEAIARBAWohBCABQQFqIgEgB0cNAAsLIAVBAWoiBSALTyEBIAUgC0cNAAsMAwsQCwALEAsACyAGRQ0BCyAGEAcLIAxBEGokACABQQFxC5AGAQl/IwBBEGsiDCQAIAEoAlAiCyACLQAYIgVsIQACQAJAAkACQAJAIAIoAhwiAUEBRyABQQJHcQ0AIAItAFRFDQAgAigCMCEBIAIoAgAoAgAhAiAMQQA2AgggDEIANwMAIAAEQCAAQQBIDQIgABAIIgYgASACaiAAEAkgAGohBAsgAygCACIABEAgAyAANgIEIAAQBwsgAyAENgIIIAMgBDYCBCADIAY2AgBBASEBDAQLIAUEQCAFEAgiBkEAIAUQChoLAkACQCADKAIEIgggAygCACIBayIHIABJBEAgACAHayIKIAMoAggiCSAIa00EQCADIAhBACAKEAogCmo2AgQMAgsgAEEASA0CQf////8HIAkgAWsiCEEBdCIJIAAgACAJSRsgCEH/////A08bIggQCCIJIAdqQQAgChAKGiADIAkgASAHEA4iByAIajYCCCADIAAgB2o2AgQgAyAHNgIAIAFFDQEgARAHDAELIAAgB08NACADIAAgAWo2AgQLIAtFBEBBASEBDAMLIAVFBEBBACEBQQAhAANAIAIgAi0AVAR/IAAFIAIoAkQgAEECdGooAgALIAIsABggBhBtRQ0EIABBAWoiACALTyEBIAAgC0cNAAsMAwsgBUH8AXEhCCAFQQNxIQdBACEBIAVBBEkhCUEAIQUDQCACIAItAFQEfyAFBSACKAJEIAVBAnRqKAIACyACLAAYIAYQbUUNA0EAIQFBACEAQQAhCiAJRQRAA0AgAygCACAEaiAAIAZqLQAAOgAAIAQgAygCAGogBiAAQQFyai0AADoAASAEIAMoAgBqIAYgAEECcmotAAA6AAIgBCADKAIAaiAGIABBA3JqLQAAOgADIABBBGohACAEQQRqIQQgCkEEaiIKIAhHDQALCyAHBEADQCADKAIAIARqIAAgBmotAAA6AAAgAEEBaiEAIARBAWohBCABQQFqIgEgB0cN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ACIHcSISBEACQCAGKAIcIgIgBigCIEcEQCACQX82AgAgBiACQQRqNgIcDAELIAIgCygCACIBayIFQQJ1Ig9BAWoiB0GAgICABE8NCUH/////AyAFQQF2IhAgByAHIBBJGyAFQfz///8HTxsiBwR/IAdBgICAgARPDQcgB0ECdBAIBUEACyIQIA9BAnRqIgVBfzYCACAFQQRqIQ8gASACRwRAA0AgBUEEayIFIAJBBGsiAigCADYCACABIAJHDQALCyAGIBAgB0ECdGo2AiAgBiAPNgIcIAYgBTYCGCABRQ0AIAEQBwsCQCAGKAI0IgIgBigCOEcEQCACIAA2AgAgBiACQQRqNgI0DAELIAIgBigCMCIBayIFQQJ1Ig9BAWoiB0GAgICABE8NCUH/////AyAFQQF2IhAgByAHIBBJGyAFQfz///8HTxsiBwR/IAdBgICAgARPDQcgB0ECdBAIBUEACyIQIA9BAnRqIgUgADYCACAFQQRqIQAgASACRwRAA0AgBUEEayIFIAJBBGsiAigCADYCACABIAJHDQALCyAGIBAgB0ECdGo2AjggBiAANgI0IAYgBTYCMCABRQ0AIAEQBwsgCCgCFCICIAgoAhgiAEEFdEYEQCACQQFqQQBIDQkgCEEQaiACQf7///8DTQR/IABBBnQiACACQWBxQSBqIgEgACABSxsFQf////8HCxA+IAgoAhQhAgsgCCACQQFqNgIUIAgoAhAiBSACQQN2Qfz///8BcWoiACAAKAIAQX4gAndxNgIAQQEgA3QhAiAFIANBBXYiAUECdGooAgAhByADIgBBAWohAwsgBSABQQJ0aiACIAdyNgIAIAYoAhggAEECdGohDyAGKAIMIQUgBigCACEBIAgoAgAhByAEIQICQAJAAkADQCACQX9GDQEgByACQQN2Qfz///8BcWoiECAQKAIAQQEgAnRyNgIAIA8gAjYCACASBEAgASACQQJ0aiAANgIACyAEAn9BfyACQQFqIhAgAkECayAQQQNwGyICQX9GDQAaQX8gBSACQQJ0aigCACICQX9GDQAaIAJBAWoiECACQQJrIBBBA3AbCyICRw0ACyAEQX9HDQJBASECDAELIARBA3AEQCAEQQFrIQIMAQsgBEECaiICQX9GDQELIAUgAkECdGooAgAiAkF/Rg0AAkAgAkEDcARAIAJBAWsh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A1kEQCABKAIAIAWnaigAACECIAEgAzcDECAAKAIEIAI2AlALIAMgBFcLqQIBBn9ByAAQCCICQgA3AgQgAkHADzYCACACQgA3AgwgAkIANwIUIAJCADcCHCACQgA3AiQgAkHQEDYCACACQgA3AiwgAkIANwI0IAJCADcCPCACQQA2AkQgAiEFAkACQCABQQBIBEAMAQsgAEEIaiEGAkAgACgCDCICIAAoAggiB2tBAnUiAyABSg0AIAFBAWohBCABIANPBEAgBiAEIANrEF4MAQsgAyAETQ0AIAcgBEECdGoiBCACRwRAA0AgAkEEayICKAIAIQMgAkEANgIAIAMEQCADIAMoAgAoAgQRAgALIAIgBEcNAAsLIAAgBDYCDAsgBigCACABQQJ0aiIAKAIAIQIgACAFNgIAIAJFDQELIAIgAigCACgCBBECAAsgAUF/c0EfdgtQAgJ/An4Cf0EAIAAoAiAiASkDCCABKQMQIgNCBHwiBFMNABogASgCACADp2ooAAAhAiABIAQ3AxBBACACQQBIDQAaIAAoAgQgAjYCUEEBCwtGAQN/IAAoAggiASAAKAIMIgNGBEBBAQ8LA0AgASgCACICIAAoAiAgAigCACgCEBEBACICBEAgAUEEaiIBIANHDQELCyACC9IDAgp/AX4CQAJ/QQAgACgCICICKQMIIAIpAxAiC1cNABogAigCACALp2otAAAhBCACIAtCAXw3AxACQCAERQ0AA0AgACABIAAoAgAoAhARAQAEQCAEIAFBAWoiAUcNAQwCCwtBAA8LIAAoAggiASAAKAIMIgJHBEADQCABKAIAIgMgACAAKAIEIAMoAgAoAggRAwBFDQMgAUEEaiIBIAJHDQALCwJAIARFDQBBACEBA0AgACgCCCABQQJ0aigCACICIAAoAiAgAigCACgCDBEBAEUNAyABQQFqIgEgBEcNAAsgBEUNACAAQRRqIQdBACECA0BBACEBIAJBAnQiCSAAKAIIaigCACIDIAMoAgAoAhgRAAAiCkEASgRAA0ACQCAAKAIIIAlqKAIAIgMgASADKAIAKAIUEQEAIgggACgCGCAAKAIUIgNrQQJ1IgVJDQAgBSAIQQFqIgZJBEAgByAGIAVrEBEgBygCACEDDAELIAUgBk0NACAAIAMgBkECdGo2AhgLIAMgCEECdGogAjYCACABQQFq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AgALIABB4OcANgIAIAAoAhQiAQRAIAAgATYCGCABEAcLIAAoAggiAQRAIAAoAgwiAyABIgJHBEADQCADQQRrIgMoAgAhAiADQQA2AgAgAgRAIAIgAigCACgCBBECAAsgASADRw0ACyAAKAIIIQILIAAgATYCDCACEAcLIAALFAAgACgCMCIAIAAoAgAoAhwRAAALFAAgACgCMCIAIAAoAgAoAhgRAAAL/AcCAn8BfiAAKAIgIgEpAwggASkDECIDVQR/IAEoAgAgA6dqLQAAIQIgASADQgF8NwMQIAAoAjAhASAAQQA2AjAgAQRAIAEgASgCACgCBBECAAsCQAJAAn8CQAJAAkAgAg4DAAECBAtBgAMQCCIBQfjYADYCACABQQRqQQBB0AAQChogAUIANwNgIAFBfzYCXCABQn83AlQgAUIANwNoIAFCADcDcCABQgA3A3ggAUIANwOAASABQgA3A4gBIAFCADcDkAEgAUIANwKcASABQYCAgPwDNgKYASABQgA3AqQBIAFCADcCrAEgAUIANwK0ASABQgA3ArwBIAFCADcCxAEgAUIANwLMASABQv////8PNwLUASABQgA3AtwBIAFB6AFqEBoaIAFBkAJqEBoaIAFBuAJqIgJCADcCACACQgA3AAUgAUHIAmoQGhogAUEANgL4AiABQgA3A/ACIAEMAgtBqAMQCCIBQazZADYCACABQQRqQQBB0AAQChogAUIANwNgIAFBfzYCXCABQn83AlQgAUIANwNoIAFCADcDcCABQgA3A3ggAUIANwOAASABQgA3A4gBIAFCADcDkAEgAUIANwKcASABQYCAgPwDNgKYASABQgA3AqQBIAFCADcCrAEgAUIANwK0ASABQgA3ArwBIAFCADcCxAEgAUIANwLMASABQv////8PNwLUASABQgA3AtwBIAFB6AFqEBoaIAFBkAJqEBoaIAFBuAJqIgJCADcCACACQgA3AAUgAUHIAmoQGhogAUIANwOIAyABQgA3A4ADIAFCADcD+AIgAUIANwPwAiABQZADaiICQgA3AgAgAkIANwAFIAFCfzcDoAMgAQwBC0G4AxAIIgFB3NkANgIAIAFBBGpBAEHQABAKGiABQgA3A2AgAUF/NgJcIAFCfzcCVCABQgA3A2ggAUIANwNwIAFCADcDeCABQgA3A4ABIAFCADcDiAEgAUIANwOQASABQgA3ApwBIAFBgICA/AM2ApgBIAFCADcCpAEgAUIANwKsASABQgA3ArQBIAFCADcCvAEgAUIANwLEASABQgA3AswBIAFC/////w83AtQBIAFCADcC3AEgAUHoAWoQGhogAUGQAmoQGhogAUG4AmoiAkIANwIAIAJCADcABSABQcgCahAaGiABQgA3A4gDIAFCADcDgAMgAUIANwP4AiABQgA3A/ACIAFCADcDoAMgAUKCgICA8AA3A5gDIAFCfzcDkAMgAUIANwOoAyABQgA3A7ADIAELIQEgACgCMCECIAAgATYCMCACRQ0BIAIgAigCACgCBBECAAsgACgCMCIBDQBBAA8LIAEgACABKAIAKAIIEQEABUEACwsWACAAKAIwIgAgASAAKAIAKAIUEQEAC34BA38gAEHg5wA2AgAgACgCFCICBEAgACACNgIYIAIQBwsgACgCCCICBEAgACgCDCIDIAIiAUcEQANAIANBBGsiAygCACEBIANBADYCACABBEAgASABKAIAKAIEEQIACyACIANHDQALIAAoAgghAQsgACACNgIMIAEQBwsgAAsbACAAKAIsRQRAQQAPCyAAIAAoAgAoAjARAAALjwECAn8BfiMAQRBrIgIkAAJAIAAoAgQiA0F/Rg0AIAEpAxBCAFUNACABIAEoAgQgACgCCCAAKAIMEF8gASkDEEIAVQ0AIAEgASgCBCAAQRRqIABBGGoQXyABKQMQIQQgAiAAKAIEOgAPIARCAFUNACABIAEoAgQgAkEPaiACQRBqEF8LIAJBEGokACADQX9HC+8VARh/IwBBEGsiDiQAIA4gATYCDCAOQSAQCCIBNgIAIA5CmICAgICEgICAfzcCBCABQbIJKQAANwAQIAFBqgkpAAA3AAggAUGiCSkAADcAACABQQA6ABgjAEEwayIMJAAgDigCDCEFAkACQCAAIgFBEGoiAygCACICRQ0AIAMhAANAIAAgAiACKAIQIAVIIgQbIQAgAkEEaiACIAQbKAIAIgINAAsgACADRg0AIAUgACgCEE4NAQsgDEIANwIcIAwgDEEYaiIYQQRyNgIYIAxBEGoiAEIANwMAIAwgBTYCCCAMIAA2AgwgDEEIaiIWIQIjAEEQayIXJAAgDAJ/AkAgAUEMaiIUKAIEIgBFBEAgFEEEaiIKIQEMAQsgAigC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AEZhaWxlZCB0byBkZWNvZGUgbWV0YWRhdGEuAEZhaWxlZCB0byBkZWNvZGUgZ2VvbWV0cnkgZGF0YS4AKG51bGwpAFB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsZWQhAEtkVHJlZUF0dHJpYnV0ZXNEZWNvZGVyOiBjb21wcmVzc2lvbiBsZXZlbCAlaSBub3Qgc3VwcG9ydGVkLgoARmxvYXRQb2ludHNUcmVlRGVjb2RlcjogY29tcHJlc3Npb24gbGV2ZWwgJWkgbm90IHN1cHBvcnRlZC4KAFZlcnNpb24gbm90IHN1cHBvcnRlZC4gCgBNZXRob2Qgbm90IHN1cHBvcnRlZC4gCgAAAAAAAIQHAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAALAAAAGAAAABkAAABONWRyYWNvMzBBdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1FAAAAABg7AABYBwAAsAcAAE41ZHJhY28xOEF0dHJpYnV0ZVRyYW5zZm9ybUUAAAAA8DoAAJAHAAAAAAAAPAgAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAAE41ZHJhY28xN0F0dHJpYnV0ZXNEZWNvZGVyRQBONWRyYWNvMjZBdHRyaWJ1dGVzRGVjb2RlckludGVyZmFjZUUAAAAA8DoAAAwIAAAYOwAA8AcAADQIAAAAAAAApAgAACYAAAAnAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACgAAAApAAAAKgAAAE41ZHJhY28yM0tkVHJlZUF0dHJpYnV0ZXNEZWNvZGVyRQAAABg7AACACAAAPAgAAAAAAAAECQAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAATjVkcmFjbzI2U2VxdWVudGlhbEF0dHJpYnV0ZURlY29kZXJFAAAAAPA6AADcCAAA/////wAAAAB8CQAANAAAADUAAAAcAAAANgAAADcAAAAfAAAAIAAAACEAAAA4AAAAOQAAADoAAAA7AAAAPAAAAE41ZHJhY28zN1NlcXVlbnRpYWxBdHRyaWJ1dGVEZWNvZGVyc0NvbnRyb2xsZXJFABg7AABMCQAAPAgAAAAAAADwCQAAPQAAAD4AAAA/AAAALgAAAC8AAAAwAAAAQAAAADIAAABBAAAAQgAAAEMAAABEAAAARQAAAE41ZHJhY28zM1NlcXVlbnRpYWxJbnRlZ2VyQXR0cmlidXRlRGVjb2RlckUAGDsAAMQJAAAECQAAAAAAAHwMAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABONWRyYWNvNDBNZXNoUHJlZGljdGlvblNjaGVtZVBhcmFsbGVsb2dyYW1EZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzIzUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFRUUATjVkcmFjbzM3UHJlZGljdGlvblNjaGVtZVR5cGVkRGVjb2RlckludGVyZmFjZUlpaUVFAE41ZHJhY28zMlByZWRpY3Rpb25TY2hlbWVEZWNvZGVySW50ZXJmYWNlRQBONWRyYWNvMjVQcmVkaWN0aW9uU2NoZW1lSW50ZXJmYWNlRQDwOgAAIAwAABg7AAD1CwAARAwAABg7AADBCwAATAwAABg7AABtCwAAWAwAABg7AADXCgAAZAwAABg7AAA0CgAAcAwAAAAAAABwDAAARgAAAFIAAAAjAAAASQAAACMAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAAAjAAAAAAAAAGQMAABGAAAAUwAAACMAAABJAAAAIwAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAACMAAAAAAAAA2A0AAEYAAABUAAAAVQAAAEkAAABWAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAVwAAAE41ZHJhY280NU1lc2hQcmVkaWN0aW9uU2NoZW1lTXVsdGlQYXJhbGxlbG9ncmFtRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFABg7AAAwDQAAcAwAAAAAAADQDgAAWAAAAFkAAABaAAAASQAAAFsAAABLAAAATAAAAE0AAABOAAAATwAAAFwAAABdAAAATjVkcmFjbzU2TWVzaFByZWRpY3Rpb25TY2hlbWVDb25zdHJhaW5lZE11bHRpUGFyYWxsZWxvZ3JhbURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAAGDsAABwOAABwDAAAAAAAALQPAABeAAAAXwAAAGAAAABJAAAAYQAAAGIAAABjAAAAZAAAAE4AAABPAAAAZQAAAGYAAABONWRyYWNvMzZNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc0RlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAAGDsAABQPAABwDAAAAAAAAKAQAABnAAAAaAAAAGkAAABJAAAAagAAAGsAAABsAAAAbQAAAE4AAABPAAAAbgAAAG8AAABONWRyYWNvNDRNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc1BvcnRhYmxlRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAAAYOwAA+A8AAHAMAAAAAAAAjBEAAHAAAABxAAAAcgAAAEkAAABzAAAAdAAAAHUAAAB2AAAATgAAAE8AAAB3AAAAeAAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAAAAABg7AADkEAAAcAwAAAAAAAAUEwAAeQAAAHoAAAB7AAAAfAAAAH0AAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckJhc2VJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAAAPA6AABfEgAAGDsAALQRAAAMEwAAAAAAAAwTAAB5AAAAfgAAACMAAAB8AAAAIwAAAAAAAACgFAAARgAAAH8AAACAAAAASQAAAIEAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAACCAAAATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQAAGDsAAAoUAABkDAAAGDsAAHQTAACUFAAAAAAAAJQUAABGAAAAgwAAACMAAABJAAAAIwAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAACMAAAAAAAAAuBUAAEYAAACEAAAAhQAAAEkAAACGAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAhwAAAE41ZHJhY280NU1lc2hQcmVkaWN0aW9uU2NoZW1lTXVsdGlQYXJhbGxlbG9ncmFtRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAABg7AAAcFQAAlBQAAAAAAACkFgAAiAAAAIkAAACKAAAASQAAAIsAAABLAAAATAAAAE0AAABOAAAATwAAAIwAAACNAAAATjVkcmFjbzU2TWVzaFByZWRpY3Rpb25TY2hlbWVDb25zdHJhaW5lZE11bHRpUGFyYWxsZWxvZ3JhbURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAAGDsAAPwVAACUFAAAAAAAAHwXAACOAAAAjwAAAJAAAABJAAAAkQAAAJIAAACTAAAAlAAAAE4AAABPAAAAlQAAAJYAAABONWRyYWNvMzZNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc0RlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAAGDsAAOgWAACUFAAAAAAAAFwYAACXAAAAmAAAAJkAAABJAAAAmgAAAJsAAACcAAAAnQAAAE4AAABPAAAAngAAAJ8AAABONWRyYWNvNDRNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc1BvcnRhYmxlRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAAAAYOwAAwBcAAJQUAAAAAAAAOBkAAKAAAAChAAAAogAAAEkAAACjAAAApAAAAKUAAACmAAAATgAAAE8AAACnAAAAqAAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAGDsAAKAYAACUFAAAAAAAAKQaAACpAAAAqgAAAKsAAACsAAAArQAAAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQXJlYUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQDwOgAA/hkAABg7AABgGQAAnBoAAAAAAACcGgAAqQAAAK4AAAAjAAAArAAAACMAAAAAAAAAYBsAAEYAAACvAAAAsAAAAEkAAACxAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAsgAAAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFRUUAAAAAGDsAAAQbAABkDAAAAAAAANQbAACzAAAAtAAAALUAAAAuAAAALwAAALYAAABAAAAAMgAAAEEAAAC3AAAAuAAAALkAAAC6AAAATjVkcmFjbzMyU2VxdWVudGlhbE5vcm1hbEF0dHJpYnV0ZURlY29kZXJFAAAYOwAAqBsAAPAJAAAAAAAA4B0AALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfNDlQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkRlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU180OVByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjNQcmVkaWN0aW9uU2NoZW1lRGVjb2RlcklpTlNfNDlQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkRlY29kaW5nVHJhbnNmb3JtSWlFRUVFABg7AABpHQAAWAwAABg7AADIHAAAyB0AABg7AAAYHAAA1B0AAAAAAAB8HwAAxwAAAMgAAADJAAAAygAAAMsAAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzQ5UHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25EZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfNDlQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkRlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUA8DoAAL4eAAAYOwAACB4AAHQfAAAAAAAABCEAAMwAAADNAAAAzgAAAL4AAADPAAAA0AAAANEAAADSAAAAwwAAAMQAAADTAAAA1AAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfNDlQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkRlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzQ5UHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25EZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAABg7AABjIAAAyB0AABg7AADAHwAA+CAAAAAAAACIIgAA1QAAANYAAADXAAAA2AAAANkAAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzQ5UHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25EZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU180OVByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAA8DoAANUhAAAYOwAALCEAAIAiAAAAAAAAMCMAANoAAADbAAAA3AAAAL4AAADdAAAA3gAAAN8AAADgAAAAwwAAAMQAAADhAAAA4gAAAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YURlY29kZXJJaU5TXzQ5UHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25EZWNvZGluZ1RyYW5zZm9ybUlpRUVFRQAYOwAAzCIAAMgdAAAAAAAAZCUAAOMAAADkAAAA5QAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY28yN01lc2hQcmVkaWN0aW9uU2NoZW1lRGVjb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY28yM1ByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRUVFAAAYOwAA3yQAAFgMAAAYOwAAMSQAAEwlAAAYOwAAdCMAAFglAAAAAAAAHCcAAO8AAADwAAAA8QAAAPIAAADzAAAATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUAAADwOgAATyYAABg7AACMJQAAFCcAAAAAAADAKAAA9AAAAPUAAAD2AAAA5gAAAPcAAAD4AAAA+QAAAPoAAADrAAAA7AAAAPsAAAD8AAAATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxEZWNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAAABg7AAAQKAAATCUAABg7AABgJwAAtCgAAAAAAABcKgAA/QAAAP4AAAD/AAAAAAEAAAEBAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUA8DoAAJ4pAAAYOwAA6CgAAFQqAAAAAAAAFCsAANoAAAACAQAAAwEAAOYAAAAEAQAABQEAAAYBAAAHAQAA6wAAAOwAAAAIAQAACQEAAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YURlY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFRUUAAAAAGDsAAKAqAABMJQAAAAAAAJgrAAAKAQAACwEAAAwBAAAuAAAALwAAAA0BAABAAAAAMgAAAEEAAAAOAQAAQwAAAEQAAAAPAQAAEAEAABEBAABONWRyYWNvMzhTZXF1ZW50aWFsUXVhbnRpemF0aW9uQXR0cmlidXRlRGVjb2RlckUAAAAAGDsAAGQrAADwCQAAAAAAAPgrAAASAQAAEwEAABQBAAAVAQAAIwAAABYBAAAXAQAAGAEAABkBAAAaAQAAGwEAABwBAAAjAAAATjVkcmFjbzExTWVzaERlY29kZXJFAAAAGDsAAOArAABMNAAAAAAAAGQsAAAdAQAAHgEAABQBAAAfAQAAIAEAABYBAAAXAQAAGAEAACEBAAAiAQAAIwEAACQBAAAlAQAATjVkcmFjbzIyTWVzaEVkZ2VicmVha2VyRGVjb2RlckUAAAAAGDsAAEAsAAD4KwAAAAAAAIgtAAAmAQAAJwEAACgBAAApAQAAKgEAACsBAAAsAQAALQEAAC4BAAAvAQAA/////wAAAADsLQAAMAEAADEBAAAyAQAAMwEAADQBAAA1AQAANgEAADcBAAA4AQAAOQEAAAAAAABMLgAAOgEAADsBAAA8AQAAPQEAAD4BAAA/AQAAQAEAAEEBAABCAQAAQwEAAE41ZHJhY28yNk1lc2hFZGdlYnJlYWtlckRlY29kZXJJbXBsSU5TXzMxTWVzaEVkZ2VicmVha2VyVHJhdmVyc2FsRGVjb2RlckVFRQBONWRyYWNvMzVNZXNoRWRnZWJyZWFrZXJEZWNvZGVySW1wbEludGVyZmFjZUUAAADwOgAAUC0AABg7AAAELQAAgC0AAE41ZHJhY28yNk1lc2hFZGdlYnJlYWtlckRlY29kZXJJbXBsSU5TXzQxTWVzaEVkZ2VicmVha2VyVHJhdmVyc2FsUHJlZGljdGl2ZURlY29kZXJFRUUAAAAYOwAAlC0AAIAtAABONWRyYWNvMjZNZXNoRWRnZWJyZWFrZXJEZWNvZGVySW1wbElOU18zOE1lc2hFZGdlYnJlYWtlclRyYXZlcnNhbFZhbGVuY2VEZWNvZGVyRUVFAAAYOwAA+C0AAIAtAAAAAAAASC8AAEQBAABFAQAARgEAAE41ZHJhY28xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQBONWRyYWNvMTNUcmF2ZXJzZXJCYXNlSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUA8DoAANkuAAAYOwAAbC4AAEAvAAAAAAAAQC8AAEcBAABIAQAARgEAQfTeAAu2BwEAAAADAAAABQAAAAcAAAAAAAAASDAAAEkBAABKAQAASwEAAEwBAABONWRyYWNvMjJNZXNoVHJhdmVyc2FsU2VxdWVuY2VySU5TXzI4TWF4UHJlZGljdGlvbkRlZ3JlZVRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMyX0VFRUVFRQBONWRyYWNvMTVQb2ludHNTZXF1ZW5jZXJFAAAAAPA6AAAjMAAAGDsAAJwvAABAMAAA/////wAAAAA4MQAATQEAAE4BAABPAQAATjVkcmFjbzI4TWF4UHJlZGljdGlvbkRlZ3JlZVRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzEzVHJhdmVyc2VyQmFzZUlOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUAAPA6AADVMAAAGDsAAGwwAAAwMQAAAAAAADAxAABQAQAAUQEAAE8BAAAAAAAA8DEAAFIBAABTAQAAVAEAAFUBAABONWRyYWNvMjJNZXNoVHJhdmVyc2FsU2VxdWVuY2VySU5TXzE5RGVwdGhGaXJzdFRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMyX0VFRUVFRQAAABg7AABwMQAAQDAAAAAAAABwMgAAVgEAAFcBAABPAQAATjVkcmFjbzE5RGVwdGhGaXJzdFRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUAGDsAABAyAAAwMQAAAAAAACAzAABYAQAAWQEAAFoBAABbAQAATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzJfRUVFRUVFAAAYOwAAlDIAAEAwAEG05gALzgGMMwAAEgEAAFwBAAAUAQAAFQEAAF0BAAAWAQAAFwEAABgBAAAZAQAAGgEAABsBAAAcAQAAXgEAAE41ZHJhY28yMU1lc2hTZXF1ZW50aWFsRGVjb2RlckUAGDsAAGwzAAD4KwAAAAAAAMwzAABfAQAAYAEAAGEBAABiAQAATjVkcmFjbzE1TGluZWFyU2VxdWVuY2VyRQAAABg7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0DsAAA4AAACFAQAAhgEAAAAAAAD4OwAADgAAAIcBAACIAQAAAAAAALg7AAAOAAAAiQEAAIoBAABTdDlleGNlcHRpb24AAAAA8DoAAKg7AABTdDliYWRfYWxsb2MAAAAAGDsAAMA7AAC4OwAAU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoAAAAABg7AADcOwAA0DsAAAAAAAAoPAAAAQAAAIsBAACMAQAAU3QxMWxvZ2ljX2Vycm9yABg7AAAYPAAAuDsAAAAAAABcPAAAAQAAAI0BAACMAQAAU3QxMmxlbmd0aF9lcnJvcgAAAAAYOwAASDwAACg8AAAAAAAAkDwAAAEAAACOAQAAjAEAAFN0MTJvdXRfb2ZfcmFuZ2UAAAAAGDsAAHw8AAAoPAAAU3Q5dHlwZV9pbmZvAAAAAPA6AACcPABBuPkACwEFAEHE+QALAnQBAEHc+QALCnUBAAB2AQAAbD4AQfT5AAsBAgBBhPoACwj//////////wBByPoACwEFAEHU+gALAncBAEHs+gALDnUBAAB4AQAAeD4AAAAEAEGE+wALAQEAQZT7AAsF/////woAQdj7AAsDIEUB", "bGV0IE1vZHVsZSA9IChmdW5jdGlvbiAoKSB7CiAgbGV0IF9zY3JpcHREaXIgPQogICAgdHlwZW9mIGRvY3VtZW50ICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0CiAgICAgID8gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMKICAgICAgOiB1bmRlZmluZWQ7CgogIHJldHVybiBmdW5jdGlvbiAoTW9kdWxlKSB7CiAgICBNb2R1bGUgPSBNb2R1bGUgfHwge307CgogICAgbGV0IGM7CiAgICBjIHx8IChjID0gdHlwZW9mIE1vZHVsZSAhPT0gInVuZGVmaW5lZCIgPyBNb2R1bGUgOiB7fSk7CiAgICBjLmNvbXBpbGVHTFNMWmVyb0NvcHkgPSBmdW5jdGlvbiAoYSwgYiwgZCwgZSkgewogICAgICBkID0gISFkOwogICAgICBzd2l0Y2ggKGIpIHsKICAgICAgICBjYXNlICJ2ZXJ0ZXgiOgogICAgICAgICAgdmFyIGcgPSAwOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiZnJhZ21lbnQiOgogICAgICAgICAgZyA9IDQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJjb21wdXRlIjoKICAgICAgICAgIGcgPSA1OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHRocm93IEVycm9yKCJzaGFkZXJfc3RhZ2UgbXVzdCBiZSAndmVydGV4JywgJ2ZyYWdtZW50Jywgb3IgJ2NvbXB1dGUnLiIpOwogICAgICB9CiAgICAgIHN3aXRjaCAoZSB8fCAiMS4wIikgewogICAgICAgIGNhc2UgIjEuMCI6CiAgICAgICAgICB2YXIgZiA9IDY1NTM2OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiMS4xIjoKICAgICAgICAgIGYgPSA2NTc5MjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIjEuMiI6CiAgICAgICAgICBmID0gNjYwNDg7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICIxLjMiOgogICAgICAgICAgZiA9IDY2MzA0OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiMS40IjoKICAgICAgICAgIGYgPSA2NjU2MDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIjEuNSI6CiAgICAgICAgICBmID0gNjY4MTY7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgdGhyb3cgRXJyb3IoInNwaXJ2X3ZlcnNpb24gbXVzdCBiZSAnMS4wJyB+ICcxLjUnLiIpOwogICAgICB9CiAgICAgIGUgPSBjLl9tYWxsb2MoNCk7CiAgICAgIGIgPSBjLl9tYWxsb2MoNCk7CiAgICAgIGxldCBoID0gYWEoW2EsIGcsIGQsIGYsIGUsIGJdKTsKICAgICAgZCA9IGsoZSk7CiAgICAgIGEgPSBrKGIpOwogICAgICBjLl9mcmVlKGUpOwogICAgICBjLl9mcmVlKGIpOwogICAgICBpZiAoMCA9PT0gaCkgdGhyb3cgRXJyb3IoIkdMU0wgY29tcGlsYXRpb24gZmFpbGVkIik7CiAgICAgIGUgPSB7fTsKICAgICAgZCAvPSA0OwogICAgICBlLmRhdGEgPSBjLkhFQVBVMzIuc3ViYXJyYXkoZCwgZCArIGEpOwogICAgICBlLmZyZWUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgYy5fZGVzdHJveV9vdXRwdXRfYnVmZmVyKGgpOwogICAgICB9OwogICAgICByZXR1cm4gZTsKICAgIH07CiAgICBjLmNvbXBpbGVHTFNMID0gZnVuY3Rpb24gKGEsIGIsIGQsIGUpIHsKICAgICAgYSA9IGMuY29tcGlsZUdMU0xaZXJvQ29weShhLCBiLCBkLCBlKTsKICAgICAgYiA9IGEuZGF0YS5zbGljZSgpOwogICAgICBhLmZyZWUoKTsKICAgICAgcmV0dXJuIGI7CiAgICB9OwogICAgbGV0IHAgPSB7fSwKICAgICAgcTsKICAgIGZvciAocSBpbiBjKSBjLmhhc093blByb3BlcnR5KHEpICYmIChwW3FdID0gY1txXSk7CiAgICBsZXQgciA9ICIuL3RoaXMucHJvZ3JhbSIsCiAgICAgIHQgPSAhMSwKICAgICAgdSA9ICExOwogICAgdCA9ICJvYmplY3QiID09PSB0eXBlb2Ygd2luZG93OwogICAgdSA9ICJmdW5jdGlvbiIgPT09IHR5cGVvZiBpbXBvcnRTY3JpcHRzOwogICAgbGV0IHYgPSAiIiwKICAgICAgdzsKICAgIGlmICh0IHx8IHUpCiAgICAgIHUgPyAodiA9IHNlbGYubG9jYXRpb24uaHJlZikgOiBkb2N1bWVudC5jdXJyZW50U2NyaXB0ICYmICh2ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLAogICAgICAgIF9zY3JpcHREaXIgJiYgKHYgPSBfc2NyaXB0RGlyKSwKICAgICAgICAwICE9PSB2LmluZGV4T2YoImJsb2I6IikgPyAodiA9IHYuc3Vic3RyKDAsIHYubGFzdEluZGV4T2YoIi8iKSArIDEpKSA6ICh2ID0gIiIpLAogICAgICAgIHUgJiYKICAgICAgICAgICh3ID0gZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgbGV0IGIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgICAgYi5vcGVuKCJHRVQiLCBhLCAhMSk7CiAgICAgICAgICAgIGIucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKICAgICAgICAgICAgYi5zZW5kKG51bGwpOwogICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYi5yZXNwb25zZSk7CiAgICAgICAgICB9KTsKICAgIGxldCB4ID0gYy5wcmludCB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICB5ID0gYy5wcmludEVyciB8fCBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTsKICAgIGZvciAocSBpbiBwKSBwLmhhc093blByb3BlcnR5KHEpICYmIChjW3FdID0gcFtxXSk7CiAgICBwID0gbnVsbDsKICAgIGMudGhpc1Byb2dyYW0gJiYgKHIgPSBjLnRoaXNQcm9ncmFtKTsKICAgIGxldCBBOwogICAgYy53YXNtQmluYXJ5ICYmIChBID0gYy53YXNtQmluYXJ5KTsKICAgICJvYmplY3QiICE9PSB0eXBlb2YgV2ViQXNzZW1ibHkgJiYgeSgibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpOwogICAgZnVuY3Rpb24gayhhKSB7CiAgICAgIGxldCBiID0gImkzMiI7CiAgICAgICIqIiA9PT0gYi5jaGFyQXQoYi5sZW5ndGggLSAxKSAmJiAoYiA9ICJpMzIiKTsKICAgICAgc3dpdGNoIChiKSB7CiAgICAgICAgY2FzZSAiaTEiOgogICAgICAgICAgcmV0dXJuIEJbYSA+PiAwXTsKICAgICAgICBjYXNlICJpOCI6CiAgICAgICAgICByZXR1cm4gQlthID4+IDBdOwogICAgICAgIGNhc2UgImkxNiI6CiAgICAgICAgICByZXR1cm4gYmFbYSA+PiAxXTsKICAgICAgICBjYXNlICJpMzIiOgogICAgICAgICAgcmV0dXJuIENbYSA+PiAyXTsKICAgICAgICBjYXNlICJpNjQiOgogICAgICAgICAgcmV0dXJuIENbYSA+PiAyXTsKICAgICAgICBjYXNlICJmbG9hdCI6CiAgICAgICAgICByZXR1cm4gY2FbYSA+PiAyXTsKICAgICAgICBjYXNlICJkb3VibGUiOgogICAgICAgICAgcmV0dXJuIGRhW2EgPj4gM107CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIEQoImludmFsaWQgdHlwZSBmb3IgZ2V0VmFsdWU6ICIgKyBiKTsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGxldCBFLAogICAgICBlYSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7IGluaXRpYWw6IDg1OSwgbWF4aW11bTogODU5LCBlbGVtZW50OiAiYW55ZnVuYyIgfSksCiAgICAgIGZhID0gITE7CiAgICBmdW5jdGlvbiBoYSgpIHsKICAgICAgbGV0IGEgPSBjLl9jb252ZXJ0X2dsc2xfdG9fc3BpcnY7CiAgICAgIGEgfHwKICAgICAgICBEKAogICAgICAgICAgIkFzc2VydGlvbiBmYWlsZWQ6IENhbm5vdCBjYWxsIHVua25vd24gZnVuY3Rpb24gY29udmVydF9nbHNsX3RvX3NwaXJ2LCBtYWtlIHN1cmUgaXQgaXMgZXhwb3J0ZWQiLAogICAgICAgICk7CiAgICAgIHJldHVybiBhOwogICAgfQogICAgZnVuY3Rpb24gYWEoYSkgewogICAgICBsZXQgYiA9ICJzdHJpbmcgbnVtYmVyIGJvb2xlYW4gbnVtYmVyIG51bWJlciBudW1iZXIiLnNwbGl0KCIgIiksCiAgICAgICAgZCA9IHsKICAgICAgICAgIHN0cmluZyhhKSB7CiAgICAgICAgICAgIGxldCBiID0gMDsKICAgICAgICAgICAgaWYgKG51bGwgIT09IGEgJiYgdm9pZCAwICE9PSBhICYmIDAgIT09IGEpIHsKICAgICAgICAgICAgICBsZXQgZCA9IChhLmxlbmd0aCA8PCAyKSArIDE7CiAgICAgICAgICAgICAgYiA9IEcoZCk7CiAgICAgICAgICAgICAgaWEoYSwgSCwgYiwgZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGI7CiAgICAgICAgICB9LAogICAgICAgICAgYXJyYXkoYSkgewogICAgICAgICAgICBsZXQgYiA9IEcoYS5sZW5ndGgpOwogICAgICAgICAgICBCLnNldChhLCBiKTsKICAgICAgICAgICAgcmV0dXJuIGI7CiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgZSA9IGhhKCksCiAgICAgICAgZyA9IFtdLAogICAgICAgIGYgPSAwOwogICAgICBpZiAoYSkKICAgICAgICBmb3IgKGxldCBoID0gMDsgaCA8IGEubGVuZ3RoOyBoKyspIHsKICAgICAgICAgIGxldCBuID0gZFtiW2hdXTsKICAgICAgICAgIG4gPyAoMCA9PT0gZiAmJiAoZiA9IGphKCkpLCAoZ1toXSA9IG4oYVtoXSkpKSA6IChnW2hdID0gYVtoXSk7CiAgICAgICAgfQogICAgICBhID0gZS5hcHBseShudWxsLCBnKTsKICAgICAgMCAhPT0gZiAmJiBrYShmKTsKICAgICAgcmV0dXJuIGE7CiAgICB9CiAgICBsZXQgbGEgPSAidW5kZWZpbmVkIiAhPT0gdHlwZW9mIFRleHREZWNvZGVyID8gbmV3IFRleHREZWNvZGVyKCJ1dGY4IikgOiB2b2lkIDA7CiAgICBmdW5jdGlvbiBJKGEsIGIsIGQpIHsKICAgICAgbGV0IGUgPSBiICsgZDsKICAgICAgZm9yIChkID0gYjsgYVtkXSAmJiAhKGQgPj0gZSk7ICkgKytkOwogICAgICBpZiAoMTYgPCBkIC0gYiAmJiBhLnN1YmFycmF5ICYmIGxhKSByZXR1cm4gbGEuZGVjb2RlKGEuc3ViYXJyYXkoYiwgZCkpOwogICAgICBmb3IgKGUgPSAiIjsgYiA8IGQ7ICkgewogICAgICAgIGxldCBnID0gYVtiKytdOwogICAgICAgIGlmIChnICYgMTI4KSB7CiAgICAgICAgICBsZXQgZiA9IGFbYisrXSAmIDYzOwogICAgICAgICAgaWYgKDE5MiA9PSAoZyAmIDIyNCkpIGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGcgJiAzMSkgPDwgNikgfCBmKTsKICAgICAgICAgIGVsc2UgewogICAgICAgICAgICBsZXQgaCA9IGFbYisrXSAmIDYzOwogICAgICAgICAgICBnID0KICAgICAgICAgICAgICAyMjQgPT0gKGcgJiAyNDApCiAgICAgICAgICAgICAgICA/ICgoZyAmIDE1KSA8PCAxMikgfCAoZiA8PCA2KSB8IGgKICAgICAgICAgICAgICAgIDogKChnICYgNykgPDwgMTgpIHwgKGYgPDwgMTIpIHwgKGggPDwgNikgfCAoYVtiKytdICYgNjMpOwogICAgICAgICAgICA2NTUzNiA+IGcKICAgICAgICAgICAgICA/IChlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZykpCiAgICAgICAgICAgICAgOiAoKGcgLT0gNjU1MzYpLCAoZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2IHwgKGcgPj4gMTApLCA1NjMyMCB8IChnICYgMTAyMykpKSk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShnKTsKICAgICAgfQogICAgICByZXR1cm4gZTsKICAgIH0KICAgIGZ1bmN0aW9uIGlhKGEsIGIsIGQsIGUpIHsKICAgICAgaWYgKDAgPCBlKSB7CiAgICAgICAgZSA9IGQgKyBlIC0gMTsKICAgICAgICBmb3IgKGxldCBnID0gMDsgZyA8IGEubGVuZ3RoOyArK2cpIHsKICAgICAgICAgIGxldCBmID0gYS5jaGFyQ29kZUF0KGcpOwogICAgICAgICAgaWYgKDU1Mjk2IDw9IGYgJiYgNTczNDMgPj0gZikgewogICAgICAgICAgICBsZXQgaCA9IGEuY2hhckNvZGVBdCgrK2cpOwogICAgICAgICAgICBmID0gKDY1NTM2ICsgKChmICYgMTAyMykgPDwgMTApKSB8IChoICYgMTAyMyk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoMTI3ID49IGYpIHsKICAgICAgICAgICAgaWYgKGQgPj0gZSkgYnJlYWs7CiAgICAgICAgICAgIGJbZCsrXSA9IGY7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoMjA0NyA+PSBmKSB7CiAgICAgICAgICAgICAgaWYgKGQgKyAxID49IGUpIGJyZWFrOwogICAgICAgICAgICAgIGJbZCsrXSA9IDE5MiB8IChmID4+IDYpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGlmICg2NTUzNSA+PSBmKSB7CiAgICAgICAgICAgICAgICBpZiAoZCArIDIgPj0gZSkgYnJlYWs7CiAgICAgICAgICAgICAgICBiW2QrK10gPSAyMjQgfCAoZiA+PiAxMik7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChkICsgMyA+PSBlKSBicmVhazsKICAgICAgICAgICAgICAgIGJbZCsrXSA9IDI0MCB8IChmID4+IDE4KTsKICAgICAgICAgICAgICAgIGJbZCsrXSA9IDEyOCB8ICgoZiA+PiAxMikgJiA2Myk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJbZCsrXSA9IDEyOCB8ICgoZiA+PiA2KSAmIDYzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiW2QrK10gPSAxMjggfCAoZiAmIDYzKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYltkXSA9IDA7CiAgICAgIH0KICAgIH0KICAgICJ1bmRlZmluZWQiICE9PSB0eXBlb2YgVGV4dERlY29kZXIgJiYgbmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpOwogICAgbGV0IEosIEIsIEgsIGJhLCBDLCBjYSwgZGE7CiAgICBmdW5jdGlvbiBtYShhKSB7CiAgICAgIEogPSBhOwogICAgICBjLkhFQVA4ID0gQiA9IG5ldyBJbnQ4QXJyYXkoYSk7CiAgICAgIGMuSEVBUDE2ID0gYmEgPSBuZXcgSW50MTZBcnJheShhKTsKICAgICAgYy5IRUFQMzIgPSBDID0gbmV3IEludDMyQXJyYXkoYSk7CiAgICAgIGMuSEVBUFU4ID0gSCA9IG5ldyBVaW50OEFycmF5KGEpOwogICAgICBjLkhFQVBVMTYgPSBuZXcgVWludDE2QXJyYXkoYSk7CiAgICAgIGMuSEVBUFUzMiA9IG5ldyBVaW50MzJBcnJheShhKTsKICAgICAgYy5IRUFQRjMyID0gY2EgPSBuZXcgRmxvYXQzMkFycmF5KGEpOwogICAgICBjLkhFQVBGNjQgPSBkYSA9IG5ldyBGbG9hdDY0QXJyYXkoYSk7CiAgICB9CiAgICBsZXQgbmEgPSBjLlRPVEFMX01FTU9SWSB8fCAxNjc3NzIxNjsKICAgIGMud2FzbU1lbW9yeSA/IChFID0gYy53YXNtTWVtb3J5KSA6IChFID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IG5hIC8gNjU1MzYgfSkpOwogICAgRSAmJiAoSiA9IEUuYnVmZmVyKTsKICAgIG5hID0gSi5ieXRlTGVuZ3RoOwogICAgbWEoSik7CiAgICBDWzg0OTE2XSA9IDU1ODI3MDQ7CiAgICBmdW5jdGlvbiBLKGEpIHsKICAgICAgZm9yICg7IDAgPCBhLmxlbmd0aDsgKSB7CiAgICAgICAgbGV0IGIgPSBhLnNoaWZ0KCk7CiAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT09IHR5cGVvZiBiKSBiKCk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBsZXQgZCA9IGIuSjsKICAgICAgICAgICJudW1iZXIiID09PSB0eXBlb2YgZAogICAgICAgICAgICA/IHZvaWQgMCA9PT0gYi5ICiAgICAgICAgICAgICAgPyBjLmR5bkNhbGxfdihkKQogICAgICAgICAgICAgIDogYy5keW5DYWxsX3ZpKGQsIGIuSCkKICAgICAgICAgICAgOiBkKHZvaWQgMCA9PT0gYi5IID8gbnVsbCA6IGIuSCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBsZXQgb2EgPSBbXSwKICAgICAgcGEgPSBbXSwKICAgICAgcWEgPSBbXSwKICAgICAgcmEgPSBbXTsKICAgIGZ1bmN0aW9uIHNhKCkgewogICAgICBsZXQgYSA9IGMucHJlUnVuLnNoaWZ0KCk7CiAgICAgIG9hLnVuc2hpZnQoYSk7CiAgICB9CiAgICBsZXQgTCA9IDAsCiAgICAgIE0gPSBudWxsLAogICAgICBOID0gbnVsbDsKICAgIGMucHJlbG9hZGVkSW1hZ2VzID0ge307CiAgICBjLnByZWxvYWRlZEF1ZGlvcyA9IHt9OwogICAgZnVuY3Rpb24gRChhKSB7CiAgICAgIGlmIChjLm9uQWJvcnQpIGMub25BYm9ydChhKTsKICAgICAgeChhKTsKICAgICAgeShhKTsKICAgICAgZmEgPSAhMDsKICAgICAgdGhyb3cgbmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcigKICAgICAgICAiYWJvcnQoIiArIGEgKyAiKS4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4iLAogICAgICApOwogICAgfQogICAgZnVuY3Rpb24gdGEoKSB7CiAgICAgIGxldCBhID0gTzsKICAgICAgcmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aAogICAgICAgID8gYS5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIikKICAgICAgICA6IDAgPT09IGEuaW5kZXhPZigiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpOwogICAgfQogICAgdmFyIE8gPSAiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LEFHRnpiUUVBQUFBQjhnTS9ZQUYvQVg5Z0FuOS9BR0FHZjM5L2YzOS9BR0FDZjM4QmYyQUVmMzkvZndCZ0FYOEFZQU4vZjM4QVlBTi9mMzhCZjJBRmYzOS9mMzhBWUFSL2YzOS9BWDlnQlg5L2YzOS9BWDlnQm45L2YzOS9md0YvWUFBQVlBQUJmMkFJZjM5L2YzOS9mMzhCZjJBSGYzOS9mMzkvZndCZ0IzOS9mMzkvZjM4QmYyQUJmQUY4WUFoL2YzOS9mMzkvZndCZ0JYOStmbjUrQUdBS2YzOS9mMzkvZjM5L2Z3Ri9ZQUovZmdCZ0NuOS9mMzkvZjM5L2YzOEFZQVYvZjM5L2ZnRi9ZQU4vZm44QmYyQUVmMzkvZndGK1lBVi9mMzUvZndCZ0JIOStmbjhBWUFKOGZBRjhZQXQvZjM5L2YzOS9mMzkvZndCZ0QzOS9mMzkvZjM5L2YzOS9mMzkvZndCZ0EzOS9mZ0JnQW45OEFHQUxmMzkvZjM5L2YzOS9mMzhCZjJBTWYzOS9mMzkvZjM5L2YzOS9BWDlnQjM5L2YzOS9mbjRCZjJBR2YzOS9mMzUrQVg5Z0JYOS9mMzk4QVg5Z0EzOTlmd0YvWUFaL2ZIOS9mMzhCZjJBQ2ZuOEJmMkFDZm40QmYyQUVmMzkvZmdGK1lBTi9mbjhCZm1BQ2YzOEJmR0FDZkg4QmZHQURmSHgvQVh4Z0EzOStmZ0JnQW45OUFHQURmM3gvQUdBRWYzOStmd0YvWUFOL2ZIOEJmMkFGZjN4L2YzOEJmMkFEZm45L0FYOWdCSDUrZm40QmYyQUJmQUYvWUFKOGZ3Ri9ZQUovZndGK1lBSi9md0Y5WUFOL2YzOEJmV0FDZm40QmZXQURmMzkvQVh4Z0FuNStBWHdDOWdFUkEyVnVkZ0ZoQUFVRFpXNTJBV0lBREFObGJuWUJZd0FERm5kaGMybGZjMjVoY0hOb2IzUmZjSEpsZG1sbGR6RUJaQUFERm5kaGMybGZjMjVoY0hOb2IzUmZjSEpsZG1sbGR6RUJaUUFEQTJWdWRnRm1BQVVXZDJGemFWOXpibUZ3YzJodmRGOXdjbVYyYVdWM01RRm5BQWtXZDJGemFWOXpibUZ3YzJodmRGOXdjbVYyYVdWM01RRm9BQUFEWlc1MkFXa0FBeFozWVhOcFgzTnVZWEJ6YUc5MFgzQnlaWFpwWlhjeEFXb0FDZ05sYm5ZQmF3QUhBMlZ1ZGdGc0FBQURaVzUyQVcwQUNnTmxibllCYmdBREEyVnVkZ0Z2QUFBRFpXNTJCbTFsYlc5eWVRSUFnQUlEWlc1MkJYUmhZbXhsQVhBQTJ3WUR5eHJKR2dNREF3TUFBd1lBQmdBQUJBQUdCQU1BQUFFREFBQUFBQWtDQXdVREF5QUJBd0FEQUFBREFBVUFBd0VEQUFBSEJRTUFBUUVBQUJBQUFRTUJCQUFCQVFBQ0F3a0RBd1lBQkFBR0JSVVZBUUFBQUFBQUF3RUFBUUFEQVFNQUF3RUJEQUlJQVFFRkJ3Y0JBUVFCQXdBQkFRQU5CZ0FNQlFFQUJ3TURBd0FUQVFNQUFRQUhBUUFCQXdBQUJRY0FBQUVGQndBQUF3WUdBd0FEQUFBRkNnQUpCUUFKQXdjR0NBTUFBZ01GQXdBR0FRQURBd01BQUFjREFBRURBd01CRFFBSkFBTUFEd1FCQVFBREFBQUZBQVVCQndNRUN3RUdDQUVCQUF3R0FRVUFBQU1LQkFNRkFBWUFBd01iQ1FZQUFBc0FBd01BQmdBREFRY0JBUUFBQUFnQUNRRUFBQU1BQVFNQUFBTURBQUFGRXdNQkFRRUhBd01KQXdBQUFBRUJBUVVCQUFBQUFBVUZCUWNEQUFBSEFRTUFCd0VFRWdBQUJRY0FBQUVCQUFBSEJnQUdBZ2tBQUFBQUF3QUFBUUVIRlFFR0NRTUFDUUFCQUFjRkFRRUFBUUFEQ1FRSEFBQUpCUVVETHdrSkpnQUZBd0FCQmdFQkFBQUZBQUFCQUFVRkJ3QUJBd1VBQlFBQUFRRUtCZ29KQUFNZ0J3Y0pBUUFEQndFQUJ3c0RCUWNBQUFFRkJ3RUFBQUFEQ3dZQUF3QUJMUTRPQ3dRQkJBa3pBd2NBQXdNREF3QUZBUU1LQVFVQkF3TU5BQUVHQUFZSEF3UUFCUVlEQVFVR0FBRUFBUUVCQUFRRkJBRUpCQW9CQndrSEF3VVlCZ01EQUFBR0FRTURBd0FOQUFNR0JRQUZCUUFBQndFSEFBTUdBQUFHQmdZQUJnTUZCd01IQUFBQUJBRTJCZ01BQVFvREpnTURCd2NCQmdFS0F3a0JBUUFBRUFrREFBVUJBQUVBQlFZQUFBQUFBQUVBQUFFQUFBRUJBUUFFQVFjQkFBTUJBd0FBQVFBQkFRWURBeFFBRkFBQkFCc29BQUFKQ2drRENRQUFBd1lBQUFFREFBTURBQVFBQlFBQUFBVUhDUVlEQUFBQUF3UUJCZ2NBQUFjS0F3WUFCUUFBQndZR0FBQUZCZ1VBQUFBQUFBTUJDUU1EQVFBSUJRQUdBQVVBQndRS0FBRUFBQU1FQXdNRkFRRUJBd2NBQVFVR0F3WUFMaHdIQ1FBQkNRVUdCelFHQUFrREJ3TVlCd2NKQUFVREJnQUtBd01BQUFNQUFBVUZBQVVBQVFNQUFBQUhBUUFHQUFNQUJBRUJBUWtEQXdRQUNBUUdDQVlBQ2drQUFRQUZBZ2NGQlFNQkF5d0JCd1lEQXdNREJRRUFBUWNEQlFNSkNBVUJCZ0FCQVFVQkFRQUFBUThIRHdNUUF4QUFCUWtGQXdBK0J3TURBQUVFQ2dvR0NRVURBd01IQkFBREFBTUxBd01PQXdNREJRTURBUUFFQVFBQkJnY0dCUUFCQUFBQUFBTUdBQUFHQndVSkNnb05Bd1lGQVFNSEFRa0RBQThBQVE0QkJRRURCUUFBQ1FNRkFBQUhCZ0FBQUFBSEFBRUJBUU1CQndFQkJBWUFDQUFFQkFRR0JnVUVBZ1VKQmdZQUFBQUxCUWdHQndFQkJRa0hCQWdBQmdNQUFBa0JBd1lBQlFBQUFBTUJBd0FCQXdNQkFnWUVCZ1VCQ0FZQUJ3b0ZCQWNpQ0FjaUNBUVpBeE1GQUFBQUFCRTRCeW9IQVJBQkFRZ0FCUVVKQVFrS0F3QURBQUVMQ2djSEFBQUFDUUVCQlFZRENnTURBd0FEQVFFREJRUUFCZ2NEQXdBSEJnY0JDd2NEQndjSEF3TUFBQUFHQXdBQUJnRUFCUWtGQVFNRkFCVUdCZ01KQndBQUJRQUJBQUVCQUFrR0JnWUFCUWtBQUFNQUF3a0JBQmdHQVFvS0FBRUZDd1VKQ2dNQUFRVUFBQUFFQXdBQkFRRUJBQVVHQlFFQkJRVUFBUU1BQUFBQUFBa0FCUVlBQlFjREF3WUhBUWNHQUFFQUFBTVNCQU1CQXdZREFRRUJCUVVCQlFvRkJnVUdBUU1CQlFZRkF3RUJBd1FHQUFjSkFnQUdBQUFBQkFZRUFRUUhCZ1lEQkFVSEF3UUdBUVlJQlFjSkJBVURCd1FEQUFrQUJBRUFBUUVBQUFBQUFBRUZDZ29CQkFrQUJRRUlBUU1EQXdFREF3TURBd01EQXdFREFBVUFBUWtKQXdNREF3TURBd01EQXdNREF3TUJBQU1EQndFRkJRQUFBQUFCQVFBQUFBQUFBUU1CQlFFRkFRRUdBUUVOQUFZQkJnUUFBUk1CQkFFSUJSSUdBUklIQlFFR0JRTU5CUUVBQUFBQUNnNEFCd0VGQlFVQURRRUZCUUFBQVFZSEJ4NFdCeDRXQUFBRkFTRUJBd0FBQmdFaEFRVUJCUUVDQlFnQ0FnUUlBZ0lBQVE4SER3c0JBQWNFUFRzWkF3a0xDUmtKQXdZREF4a0FDUUFGQXdNQUF3QUhIenc1QkJNYkV3QUFBUUVBQlFBQUF3RUFBd0FEQUFBRkJRTUJBQWNSRVM0QUFBTURBeW9BQmdjRUFBb3RBQUFERFEwREJRWUFBd0VEQUFFRkJnVUdBUUFCQlFBQUFRUUFFQWdFQmdVR0NoUUVBd1lHQ1FvREJRWVFBQUF5QndzRENRWURBUUVBQWdVRkFRTUFCUU1BQUFBS0F3b0tBQU1EQmdNQkJRTUdCd0VEQVFjQkF3TUVBd2dEQVFNQUFBUURBd01JQ0FNRkFRRUJCUVFFQXdrUUF3RURBQU1EQXdZREJnTURBd0VEQXdNQkFRRUJDUUVHQUFFR0FBTUZCUUFIQUFZQUJ3TUFBd1VCQVFVRkJRVUJBQUVCQXdBRkJnVUZBUUFKQVFFREF3VUJCUVVBQVFVQUFBRURBQUVEQkFjREFBVUJBUUVIQUFFREFBY0FDd01CQXdBS0FRRUlDZ1lIR0FVREF3WURCZ01HQVFnQkJnRUFBQUFFQXdVSkF3QURBQU1BQVFZQkJ3RURBQUVCQmdVQkJ3RURBUUVGQlFVSUFRUUJDQUVKQlFFQkFBMEJBd1VBQVFFQkF4UUFBQUFBQXdBRkFBRUJBd0FCQlFFQUJRVUJBQVVKQXdFQUFRTUZCd2tIQVFVQUFRVUVBQVVHQVFNRUJRUUhBUVFBQUFZQUFBQUFBQUVCQlFBQUFBQUFBd0FEQUFBQUFBQUZBQUFBQUFBQUFBQUFBQUFHQVFFQUFRVUJDUUFIQVFFQkJRa0pEUTBCQndrSkRRRURBd2NLRFFjRUJ3RUpBUUVCQVFjR0NBZ0hDUWdEQXdNRENRTUpBUVFBQkFJQ0JnWUVBUUVCQVFFSkJ3Y0dCQVVHQWdZR0NRa0JCZ0VCQVFFREFBY0dCQWdGQUFRQkFRTUNDZ1FBQXdnQUJnWUVBQVVCQkFRRUJBWUhCQVFKQmdjRUFRUUJCZ0VKQ1FrSkF3Y0hCZ1FKQmdrTENRa0hDQWtFQWdFR0JnRUpCZ2tHQmdBSkFRVVNCUjBkQ0FjREFBRUNBZ0lDRHdFRUFRRUFBd0FEQVFNQUFBQUFBQUFBQXdBRENBd0FCd01KQVFBRkFRUUJBUWNCQmdrRkF3TURBd01EQXdNREF3TURBd01EQXdFQkFBQUFOd0VIQmdZR0JnWUdCZ1lHQndjQUFBVUFBUVVGQ0FVQUFBQUFBQUFBQUFBQUFBRUZBUUVCQVFVQkFRRUJBUVVEQXdZR0JnWUJBd2NCQUFBRkJnVUJCUUFOS1JFREFnSUNDQWdJQkFRRUFBY01EQjhWQmdZR0JnWUdCZ1lCQVFFQkNBRUhCd0VHQlFVQkJRa0FBd0VGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUXdBQlF3QUJRY01BQVVNQUFVTUFBVU1BQUVCQVFFQkFRQUJBQVVGQndvTERnc0JEZ2NLQ3c0TERnQUpCZ29BQUFvTERnb0JEZ1VLQ2djSkJ3TUhBd1VLQndrSEF3Y0RDUWtKQndVRkFRVU5CUVVGQVF3TURBd0VCQUlDQVFjSEN5TUxBQ01IQmhBR0ZoQUhCaEFXRUFFSENnSVFCeEFJQ0FnQkFnUUlDQWdJQ0FnRURnc0xDd3NMQ0FnSUFnUUlDQWdJQ0FnRURnc0xDd3NMQVFFS0pDVVhDaGNLQXdvS0pDVVhDZ01YQ2dvREF3c0tDd29MQ2dzS0N3b0tDd29MQndvTEN3c0tDd29MQ2dzS0N3b0tDd29MQXdvTEF3c0hCQW9IQmdRS0JBWXNPZ29KQndjTkFRd0hCd01IRHdJcE1BRUZDUU1EQlFBREFRTUZBQWNEQUFjRUdnVUZCUWNKQnh3Y0VSRVJFUkVKQXdNREF3TUJBQUFIQUFVckFRRW5OU2dGQndBckJRVUFEQTBIQXdRQkFBQUlBd1FFRFFFQkFRRUVCUWNCQmdjQkFBVUZBUUVEQkFRQkJRQUhBQVVCQmdRTkJnTUZCUVVCQlFVSUFRRUJBUUVCQlFVRkJRRUFCUVlTQ1FFQkJ3b0hCQVVEQndrQkJ3VURBUXNEQkFRSkJ3a0RDQU1LQUFFQUF3TUFBdzRIQXdvSkJnWUFBQUVGQlFVSkJBTUFBd2NGQVFVRkFBVUJCQWNFQkFFQkFRUUFCd0VCQ1FNRkFRRUVBUUVCQVFFSEF3TUhCZ1FFQVFRQkFBRUtBUUVCQlFZSkJnb0dBd1FGQmdzSkFRY0VBUUVCQVFRQUFRa0RCUU1KQnc4QkFRa0ZBZ0VEQ2djREF3QURBd01EQndRSUJ3RUNBUVFFQkFRREFRWURBUU1GQ0FFREJ3Y0hCd3NKQXdFQkFRRUhCUVVBQndvREF3Y0pBd2dHQmdjQkF3WURBUVVEQVFZQkF3VUpCZ0VCQXdFSEJ3Y0JCUU1IQVFRR0J3TUdBd0VCQkFRQkFRSUlCd2NIQndFQkJRRURBUWdCQmdZQkNnWUVCZ2NCQlFFRUFRa0RBQU1FQXdBREF3RUJCd01BQXdVQkF3VURBd0VCQlFFRkF3TUFCQWdhQlFVQUJnVUFCZ0VCQmdBR0FRRUVCQVlGQlFVR0JnVUJBUUVFQUFFSkF3RUVBUVlBQndNQkJRQUJCd0VJQndnRkJRVUJCUVVBQXdVREFRRUlCd2dCQVFFRUJ3RUZCZ2tEQUFNRkFRTURBd01EQlFFREFRTUFBd0VCQkFJREF3a0JBd0FBQUFBREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TUdBd1VLQVFjRUFRQUJDUU1CQkFFSkJnUURCQVlFQmdRREJRQUFCQUVCQUFZQkFRQUJBUWdJQVFBREJBY0RBd0VCQ1FFRENRTUdBd1VBQVFFQkFRY0dCQVFFQkFjR0JBUUJCZ1FFQmdZRUJnUUdCZ1lEQ1FFSEF3RUhCQWNIQndFSEJ3Y0JNUUVIQUFjSEJ3RUlBUVlFQmdZR0JnUUVCQVFBQkFRRUJBUUVCQVFFQkFRQUFBQUVCZ1lHQVFrR0JBY0RBd2dJQ2dnSUJnRUlCUUVCQmdFQkF3Y0VCZ0FIQVFRSEFRUUJBUUVQQVFFQkFRQUFCZ0FBQUFBRkFBVUFCUUFBQVFBQkFRWUdBUUFCQXdNQUFRUUFBUUVBQlFZQUFBRUJBd0FEQlFRR0FBVUZBUUVHQmdJR0JRSUNBd2dIQ0FFQkJRQUpCUUVCQVFFSUJRVUZDUUVJQUFFR0JRUUNDd3NHQkFZTENBWUJCUVFBQVFVQkFRa0JBUUVEQXdBRkJRVUFBd01FQmdVRkJRWURGQVVVQVFBTUFBRUhCUUVCQkFBQkJBa0RBd0VHQkFnSEF3TURBUUVCQlFRREJ3WUVCQUVGQmdFQkFRQUFCQVVBQUFBR0F3TUFBd01EQndNSEJRRUZBQUFBQUFBQUFBTUFBUUFBQUFBQUFRRUZBQUFBQUFBQUFBQUFCUVVCQVFVQkFBRUJCUXNNQmdrQmZ3RkIwTjNVQWdzSE1nb0JjQURYR2dGeEFOWWFBWElBMVJvQmN3Q2JBUUYwQUNvQmRRQ0dFUUYyQUlVUkFYY0FoQkVCZUFDREVRRjVBSUlSQ2RNTUFRQkJBUXZhQnZvTitnM1FBMnFEQVpVUmhBT2FBbzhEMEFQUUE1NEVuZ1NlQko0RW5nU2VCSjRFbEE2RUF5WG9HTmNaMFJteUdhNFo5aGdscWhCcVpHUmtaR1JrWkdSa1pHUnFaR1JrWkdSa1pHUmtaR1RlQklRRDV4QmVYdVlRdkFxOEN1QVQ1UkRrRU9NUTRoRGhFT0FRM3hEZUVOMFEzQkJxYW9RRGp3UGRFY29SNnhCa2FtUnFhcHNDNmhCcWFwc0MwQU5xYXIwSzZCRGNCOU1IOGhCcWFyc0syeERUQjZBQzJ3ZWdBdkVRYW1xNkN0a1EwUkRIRVBBUWFtcmFCN2tLdUFxckJyY0s1UlB2RUdwcTJnZTVDcXNHcXdicUUrNFFhbXEyQ3RnUW9BTGJCOXNIMXhEV0VOVVExQkNRQXBBQzdCQnFhdG9IMHdmVEVLc0c2UkJxYXBzQ3RRcTBDb1FEL0FtRUErSVkzaGpkR05zWTJoalpHTmdZMXhqV0dOVVkzQmpTR05FWTN4alFHTThZeUJqT0dNc1l3aGpOR01vWXdSak1HTWtZeEJpK0dNVVl3eGkvR01jWXhoaTlHTHdZdXhpNkdMa1l1QmlJRUljUWhoQ0ZFSjRQblErY0Q1c1BtZytaRDVnUGxnK1VENFFLZ3dxQUVKTVAwQVBRQTRrUWhCQ0NDb0lRL3duckUvZ092QW55RHZFT3ZBbnNEdjBKK3cvNkQ5QVB6dy9BRC9jUCtRL1NEOUVQN3crM0QycURBVFhOR3N3YTJnNjJDY3NhK0ErUUVOa08yUTRiRzlnTzF3N1dEc29heVJySUdzY2EwUW5SQ2RJYTFBN1VEdE1PeGhyU0R0QU9oQWJGR3NRYXd4ckNHc0Vhenc3T0RzME92eHErR3IwYXZCcTdHcmthekE2NEdyY2F0aHExR3JRYXN4cXlHckVhYW9RRDB3bThBY0VPMGdKa1pHUmtaTThFMlFla0dxTWFvaHFoR3FBYXFnNlFHbXFiQW9RSnNSbUVDZWtONlEyWENlNFprd25sR2FNRnl4bHFnd0dHQ2J3WmFtUmswd25aQjdzWnVobUVBN2taWko0WjVnMm9HWkVaa0JscWF0ME4zUTJ0R1k4WmpobU1HWW9aaVJtSUdZQUpoeG1HR1lVWmhCbURHWUlaZ1JtQUdmOFkvaGpjRGR3Tm9obmZEWnNaYW1wZVhxOFptaG5jQjl3SG1SbTRDcmNLbUJtWEdaWVpsQm1UR1pJWlpKc0NhdHNOMnczOUdQd1kreGlzR2JVS3RBcTREL3NKaEFPUEE2c1lyUml5R0xFWXJoaXdHS29ZcVJpb0dJOERwaGlsR0tRWWp3T2hHSjhZandQd0Y0OEQ3UmVQQSt3WGp3UHFGK3dJeWhmTUY4MFh0QmV6RjhJWHdSZEl3QmUvRjZnRHZoZTlGN3dYdXhlNkY3a1h1QmUzRjdZWHRSZHFzaGV4RjdBWHJRMllGNXNYb2dXYkFwMGFseGVXRi9nR213S2JBbXFEQVpvWG9nV2JBbVRCRm1Sa3BBMkZGNFFYZ3hlQ0Y0RVgveGJ3Qlo0TjloYjFGdjRIeVF1NkU3a1Rnd0h6RnFJRm13TDZCdElXK1FhUkRkQVd6eGIvQjlVTHZ4TytFL2NHemhiUUE5SVF6UmJMRm1Sa3d4UEtGc0lUeVJiQUU4Z1doQU9EQVlNTm93MmlEWU1Cc3hhaUJac0Nnd0d4RnFJRm13S3dGcThXeHdpYkZwb1dtQmFYRnBZV2xSYVBBNFlXaFJiSUNJTVdnaGFCRm9BVy94WEVDUElWOFJYdEZld1Y1aFhpRmQ0VjFoWFVGZE1WL1FMUEZZUUpsQlNlQ05vVW5RaWRGSUVNbVJTQURKZ1U5eFB6RTRNQjV4UG1FK2dUNGhQaEUyVGZFOXdUZ0FqSEU4VVR4Qk9pQmRZTDFndUJDTFVUN0FUSUU2d1RLcHNDa2hLUEV0TVIwQkhORWNrUnhoSERFY0VSdnhHOUVic1J1UkczRWJVUnN4SHhDcFVTa0JMckNvTVNnaEtCRW9BUy94SEhDZjRSL1JIOEVmY0sraEg1RWZZUjlCSHpFV1R4RWU0UjVncmdFZDRSM0JIYkVka1IxeEhsQ3Q4UjJRZjJHZG9SMkJIV0VXcURBWU1CamhLTkVvd1NpeEtLRW9rU2lCS0hFc2NKaGhLRkVvUVNnd0hxQ3VvSzhBZjRCdmdHK3hINEJvTUI3UkhyRWZBSFpHVHBFZWNLZ3dIbkVlUVI4QWRrWk9JUjV3cURBWU1CYW9NQm9CT2ZFNTBUYW9NQm5CT2JFNW9UZ3dHWkU1Y1RsQk9TRTZvTHFndVBFNDBUaXhPSkU0Y1Rnd0dHRTRVVGdoT0FFNkFMb0F2OUV2c1MrUkwzRXZVU2d3SHlFdkVTOEJMdUV1MFM3QkxyRXVvU2d3SHBFdWNTNWhMbEV1UVM0eExpRXVFU2FvTUJtd3ZlRXQwUzNCTGJFdG9TMlJMVkVjOFJ5Qkc2RWJZUndoRytFV3FEQVpzTHpCTExFc29TeVJMSUVzY1MwaEhNRWNVUnVCRzBFY0FSdkJIdUIrTUt1Ukx1QitNS3R4S0RBYjBHdlFicUErb0Q2Z09QQzJUcEEra0Rnd0c5QnIwRzZnUHFBK29Eand0azZRUHBBNE1CdkFhOEJ1b0R1d2E3Qm8wTFpPa0Q2UU9EQWJ3R3ZBYnFBN3NHdXdhTkMyVHBBK2tEZ3dHeUVyQVNnd0d0RXFvU2d3R25FcVVTZ3dHa0VxTVNnd0g2Q3A4UzBBT0RBZm9LbmhMUUEycUVBMnFEQVpzQ213S1VFWW9SalJHU0VZTUJpeEdPRVpFUmd3R01FWThSa0JFS3ArUW15Um9NQUNBQUtBSUVJQUVReEFFTEN3QWdBQ0FCRUxvRElBQUxEUUFnQUNnQ0FDQUJRUUowYWdzT0FDQUFJQUVnQVJDZ0FSQ2dCd3NTQUNBQUVNRUJCRUFnQUNnQ0FBOExJQUFMUlFFQmZ5TUFRU0JySWdJa0FDQUNJQUVRekFFMkFoQVE1d0VnQWtFWWFpQUFJQUVnQWtFUWFpQUNRUWhxRUo0UUlBSkJHR29RUkNFQUlBSkJJR29rQUNBQVFRUnFDeXdCQVg4Z0FCQVdCRUFEUUNBQUlBTVFFU2dDQUNBQklBSVFwaGtnQTBFQmFpSURJQUFRRmtrTkFBc0xDeEFBSUFBb0FnUWdBQ2dDQUd0QkFuVUxPQUFnQUNBQkVORWFJQUJCQkdvUWlnTWdBQ0lCUVFocUVJa0RJQUlFUUNBQklBRXBBZ3hDUUlOQ0FZUTNBZ3dMSUFCQlBHb1EwQm9MQ2dBZ0FCREJBaERjRGdzZEFDQUFFTUVCQkVBZ0FCQWpHaUFBS0FJQUdpQUFFTUlFR2dzZ0FBc3VBUUYvSUFBUUZnUkFBMEFnQUNBRUVCRW9BZ0FnQVNBQ0lBTVFwUmtnQkVFQmFpSUVJQUFRRmtrTkFBc0xDd2NBSUFCQkNHb0xaZ0VCZnlNQVFSQnJJZ01rQUNBQ0lBTWdBQkFpSWdKQkFFRUFFS3dCSVFBZ0FoQVpHaUFBQkVBZ0FDQUFLQUlBS0FJMEVRQUFJZ0FnQUNnQ0FDZ0NLQkVBQUNJQUlBRkJCblJCd1A4QmNhMGdBQ2tDQkVLL2dINkRoRGNDQkFzZ0EwRVFhaVFBQzBJQkFYOGpBRUVRYXlJRUpBQWdBQ0FFSUFFUUlpSUJRUUJCQUJDc0FTRUFJQUVRR1JvZ0FBUkFJQUFnQWlBRElBQW9BZ0FvQWtBUkJnQUxJQVJCRUdva0FBc01BQ0FBSUFFUWx3SkJBWE1MRlFBZ0FCREJBUVJBSUFBb0FnUVBDeUFBTFFBTEN4OEJBWDhnQUJEQkFRUkFJQUFvQWdBaEFTQUFFTUlFR2lBQkVDb0xJQUFMS3dFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FpQUFRZGdBYWlBQ1FReHFFTmNKSUFKQkVHb2tBQXNWQUNBQUVQc05JQUFnQVNBQkVLQUJFSTBKSUFBTEJ3QWdBRUVNYWdzS0FDQUFFTUVDRU9BT0N3Y0FJQUJCQkdvTE1RRUNmeUFBUVFFZ0FCc2hBQU5BQWtBZ0FCQ2JBU0lCRFFCQnpOa1VLQUlBSWdKRkRRQWdBaEVNQUF3QkN3c2dBUXNxQVFGL0l3QkJFR3NpQkNRQUlBUWdBellDRENBQUlBRWdBaUFERU5VRklRQWdCRUVRYWlRQUlBQUxNZ0VCZnlNQVFSQnJJZ1lrQUNBR0lBUTJBZ3dnQUNBQklBSWdBeUFFUVFCSElBWkJER29nQlJEUkFTQUdRUkJxSkFBTFJRRUJmeU1BUVNCcklnSWtBQ0FDSUFFUXpBRTJBaEFRNXdFZ0FrRVlhaUFBSUFFZ0FrRVFhaUFDUVFocUVPRVlJQUpCR0dvUVZ5RUFJQUpCSUdva0FDQUFRUkJxQzZvTkFRZC9Ba0FnQUVVTkFDQUFRWGhxSWdNZ0FFRjhhaWdDQUNJQlFYaHhJZ0JxSVFVQ1FDQUJRUUZ4RFFBZ0FVRURjVVVOQVNBRElBTW9BZ0FpQW1zaUEwSGcyUlFvQWdBaUJFa05BU0FBSUFKcUlRQWdBMEhrMlJRb0FnQkhCRUFnQWtIL0FVMEVRQ0FES0FJSUlnUWdBa0VEZGlJQ1FRTjBRZmpaRkdwSEdpQUVJQU1vQWd3aUFVWUVRRUhRMlJSQjBOa1VLQUlBUVg0Z0FuZHhOZ0lBREFNTElBUWdBVFlDRENBQklBUTJBZ2dNQWdzZ0F5Z0NHQ0VHQWtBZ0F5QURLQUlNSWdGSEJFQWdCQ0FES0FJSUlnSk5CRUFnQWlnQ0RCb0xJQUlnQVRZQ0RDQUJJQUkyQWdnTUFRc0NRQ0FEUVJScUlnSW9BZ0FpQkEwQUlBTkJFR29pQWlnQ0FDSUVEUUJCQUNFQkRBRUxBMEFnQWlFSElBUWlBVUVVYWlJQ0tBSUFJZ1FOQUNBQlFSQnFJUUlnQVNnQ0VDSUVEUUFMSUFkQkFEWUNBQXNnQmtVTkFRSkFJQU1nQXlnQ0hDSUNRUUowUVlEY0ZHb2lCQ2dDQUVZRVFDQUVJQUUyQWdBZ0FRMEJRZFRaRkVIVTJSUW9BZ0JCZmlBQ2QzRTJBZ0FNQXdzZ0JrRVFRUlFnQmlnQ0VDQURSaHRxSUFFMkFnQWdBVVVOQWdzZ0FTQUdOZ0lZSUFNb0FoQWlBZ1JBSUFFZ0FqWUNFQ0FDSUFFMkFoZ0xJQU1vQWhRaUFrVU5BU0FCSUFJMkFoUWdBaUFCTmdJWURBRUxJQVVvQWdRaUFVRURjVUVEUncwQVFkalpGQ0FBTmdJQUlBVWdBVUYrY1RZQ0JDQURJQUJCQVhJMkFnUWdBQ0FEYWlBQU5nSUFEd3NnQlNBRFRRMEFJQVVvQWdRaUFVRUJjVVVOQUFKQUlBRkJBbkZGQkVBZ0JVSG8yUlFvQWdCR0JFQkI2TmtVSUFNMkFnQkIzTmtVUWR6WkZDZ0NBQ0FBYWlJQU5nSUFJQU1nQUVFQmNqWUNCQ0FEUWVUWkZDZ0NBRWNOQTBIWTJSUkJBRFlDQUVIazJSUkJBRFlDQUE4TElBVkI1TmtVS0FJQVJnUkFRZVRaRkNBRE5nSUFRZGpaRkVIWTJSUW9BZ0FnQUdvaUFEWUNBQ0FESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBRHdzZ0FVRjRjU0FBYWlFQUFrQWdBVUgvQVUwRVFDQUZLQUlNSVFJZ0JTZ0NDQ0lFSUFGQkEzWWlBVUVEZEVINDJSUnFJZ2RIQkVCQjROa1VLQUlBR2dzZ0FpQUVSZ1JBUWREWkZFSFEyUlFvQWdCQmZpQUJkM0UyQWdBTUFnc2dBaUFIUndSQVFlRFpGQ2dDQUJvTElBUWdBallDRENBQ0lBUTJBZ2dNQVFzZ0JTZ0NHQ0VHQWtBZ0JTQUZLQUlNSWdGSEJFQkI0TmtVS0FJQUlBVW9BZ2dpQWswRVFDQUNLQUlNR2dzZ0FpQUJOZ0lNSUFFZ0FqWUNDQXdCQ3dKQUlBVkJGR29pQWlnQ0FDSUVEUUFnQlVFUWFpSUNLQUlBSWdRTkFFRUFJUUVNQVFzRFFDQUNJUWNnQkNJQlFSUnFJZ0lvQWdBaUJBMEFJQUZCRUdvaEFpQUJLQUlRSWdRTkFBc2dCMEVBTmdJQUN5QUdSUTBBQWtBZ0JTQUZLQUljSWdKQkFuUkJnTndVYWlJRUtBSUFSZ1JBSUFRZ0FUWUNBQ0FCRFFGQjFOa1VRZFRaRkNnQ0FFRitJQUozY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFWR0cyb2dBVFlDQUNBQlJRMEJDeUFCSUFZMkFoZ2dCU2dDRUNJQ0JFQWdBU0FDTmdJUUlBSWdBVFlDR0FzZ0JTZ0NGQ0lDUlEwQUlBRWdBallDRkNBQ0lBRTJBaGdMSUFNZ0FFRUJjallDQkNBQUlBTnFJQUEyQWdBZ0EwSGsyUlFvQWdCSERRRkIyTmtVSUFBMkFnQVBDeUFGSUFGQmZuRTJBZ1FnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUFzZ0FFSC9BVTBFUUNBQVFRTjJJZ0ZCQTNSQitOa1VhaUVBQW45QjBOa1VLQUlBSWdKQkFTQUJkQ0lCY1VVRVFFSFEyUlFnQVNBQ2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFJZ0FDQUROZ0lJSUFJZ0F6WUNEQ0FESUFBMkFnd2dBeUFDTmdJSUR3c2dBMElBTndJUUlBTUNmMEVBSUFCQkNIWWlBVVVOQUJwQkh5QUFRZi8vL3dkTERRQWFJQUVnQVVHQS9qOXFRUkIyUVFoeElnRjBJZ0lnQWtHQTRCOXFRUkIyUVFSeElnSjBJZ1FnQkVHQWdBOXFRUkIyUVFKeElnUjBRUTkySUFFZ0FuSWdCSEpySWdGQkFYUWdBQ0FCUVJWcWRrRUJjWEpCSEdvTElnSTJBaHdnQWtFQ2RFR0EzQlJxSVFFQ1FBSkFBa0JCMU5rVUtBSUFJZ1JCQVNBQ2RDSUhjVVVFUUVIVTJSUWdCQ0FIY2pZQ0FDQUJJQU0yQWdBZ0F5QUJOZ0lZREFFTElBQkJBRUVaSUFKQkFYWnJJQUpCSDBZYmRDRUNJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBSkJIWFloQVNBQ1FRRjBJUUlnQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUROZ0lRSUFNZ0JEWUNHQXNnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFFS0FJSUlnQWdBellDRENBRUlBTTJBZ2dnQTBFQU5nSVlJQU1nQkRZQ0RDQURJQUEyQWdnTFFmRFpGRUh3MlJRb0FnQkJmMm9pQURZQ0FDQUFEUUJCbU4wVUlRTURRQ0FES0FJQUlnQkJDR29oQXlBQURRQUxRZkRaRkVGL05nSUFDd3NpQVFGL0lBRVFvQUVpQWlBQUVCOUdCSDhnQUVGL0lBRWdBaENiQjBVRlFRQUxDdzBBSUFBb0FnQWdBVUVEZEdvTEVBQWdBRUVDTmdJSUlBQWdBVGtEQUFzMUFRRi9Jd0JCRUdzaUFpUUFJQUlnQUNnQ0FEWUNEQ0FBSUFFb0FnQTJBZ0FnQVNBQ1FReHFLQUlBTmdJQUlBSkJFR29rQUFzT0FDQUFRUkJxSUFFUUVTZ0NBQXNKQUNBQUVMUUZJQUFMQ3dBZ0FDQUJOZ0lBSUFBTENRQWdBQ2dDQkJCaEN3b0FJQUFvQWdoQkNFWUxLQUVCZnlBQklBRkJmMm9pQW5GRkJFQWdBQ0FDY1E4TElBQWdBVThFZnlBQUlBRndCU0FBQ3dzTkFDQUFRZGlTRHpZQ0FDQUFDeXdCQVg4Z0FCREZCQ0FBS0FJQUJFQWdBQkR1Q2lBQUVCc2FJQUFvQWdBaEFTQUFFTGNDR2lBQkVDb0xDeEFBSUFBb0FnUWdBQ2dDQUd0QkZHMExEUUFnQUNnQ0FDQUJRUlJzYWdzN0FRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFRUkJxSUFKQkRHb1FSeUFDUVFFNkFBc2dBRUVjYWlBQ1FRdHFFTlVNSUFKQkVHb2tBQXNuQVFGL0l3QkJFR3NpQWlRQUlBSWdBVFlDRENBQUlBSkJER29RclFJZ0FrRVFhaVFBSUFBTENRQWdBRUVJYWhBbEN3a0FJQUFRSlNnQ0FBdURCQUVEZnlBQ1FZREFBRThFUUNBQUlBRWdBaEFLR2lBQUR3c2dBQ0FDYWlFREFrQWdBQ0FCYzBFRGNVVUVRQUpBSUFKQkFVZ0VRQ0FBSVFJTUFRc2dBRUVEY1VVRVFDQUFJUUlNQVFzZ0FDRUNBMEFnQWlBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVFGcUlnSWdBMDhOQVNBQ1FRTnhEUUFMQ3dKQUlBTkJmSEVpQkVIQUFFa05BQ0FDSUFSQlFHb2lCVXNOQUFOQUlBSWdBU2dDQURZQ0FDQUNJQUVvQWdRMkFnUWdBaUFCS0FJSU5nSUlJQUlnQVNnQ0REWUNEQ0FDSUFFb0FoQTJBaEFnQWlBQktBSVVOZ0lVSUFJZ0FTZ0NHRFlDR0NBQ0lBRW9BaHcyQWh3Z0FpQUJLQUlnTmdJZ0lBSWdBU2dDSkRZQ0pDQUNJQUVvQWlnMkFpZ2dBaUFCS0FJc05nSXNJQUlnQVNnQ01EWUNNQ0FDSUFFb0FqUTJBalFnQWlBQktBSTROZ0k0SUFJZ0FTZ0NQRFlDUENBQlFVQnJJUUVnQWtGQWF5SUNJQVZORFFBTEN5QUNJQVJQRFFFRFFDQUNJQUVvQWdBMkFnQWdBVUVFYWlFQklBSkJCR29pQWlBRVNRMEFDd3dCQ3lBRFFRUkpCRUFnQUNFQ0RBRUxJQU5CZkdvaUJDQUFTUVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBaUFCTFFBQk9nQUJJQUlnQVMwQUFqb0FBaUFDSUFFdEFBTTZBQU1nQVVFRWFpRUJJQUpCQkdvaUFpQUVUUTBBQ3dzZ0FpQURTUVJBQTBBZ0FpQUJMUUFBT2dBQUlBRkJBV29oQVNBQ1FRRnFJZ0lnQTBjTkFBc0xJQUFMQ1FBZ0FFRUFFUHdOQzBrQkFYOGpBRUVnYXlJQ0pBQWdBaUFCRU13Qk5nSVFFT2NCSUFKQkdHb2dBQ0FCUWVEYkVTQUNRUkJxSUFKQkNHb1Fvd3dnQWtFWWFoQkVJUUFnQWtFZ2FpUUFJQUJCQkdvTENRQWdBQ2dDQUJCaEMwc0JBWDhqQUVFUWF5SUNKQUFDUUNBQUtBSUVJQUFRR3lnQ0FFa0VRQ0FBRUJzZ0FDZ0NCQ0FCRVBrQklBQWdBQ2dDQkVFRWFqWUNCQXdCQ3lBQUlBRVExQXdMSUFKQkVHb2tBQXN4QVFGL0l3QkJJR3NpQWlRQUlBSkJDR29nQUVFc2FpQUNRUkJxSUFFUWFTSUFFTkVOSUFBUUlCb2dBa0VnYWlRQUN3Y0FJQUJCRUdvTENnQWdBQ2dDQUVFSWFndVJBUUFnQUVIWWtnODJBZ0FnQUVFQU5nSlFJQUJDQURjQ1BDQUFRZ0EzQWtRZ0FDQUFLQUlFUVlDQWdINXhJQVZCRUhSQmdJQThjU0FFUVF4MFFZRGdBM0VnQTBFSWRFR0FIbkVnQVVIL0FYRnljbkpCZ0lEQUFFRUFJQVliUVFBZ0EwRUJSaHR5Y2pZQ0JDQUFRY3dBYWhDS0F5QUFRUWhxRUlrRElBQWdBa0UvY2EwZ0FDa0NERUpBZzRRM0Fnd2dBQXNLQUJEVkF5QUFFSlFDQzBzQkFYOGpBRUVRYXlJQ0pBQUNRQ0FBS0FJRUlBQVFHeWdDQUVjRVFDQUFFQnNnQUNnQ0JDQUJFUGtCSUFBZ0FDZ0NCRUVFYWpZQ0JBd0JDeUFBSUFFUTFBd0xJQUpCRUdva0FBc0hBQ0FBSUFGeUN3d0FJQUFvQWdBZ0FSQVNHZ3N0QUNBQ0lBQW9BZ2dpQW5GRkJFQWdBQ0FCUWFtZkVDQURJQUlRakE1QkFDQUFLQUlBS0FLZ0FSRUNBQXNMQ0FBZ0FFSG9BR29MT3dFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFRVFhaUFDUVF4cUVFY2dBa0VBT2dBTElBQkJIR29nQWtFTGFoRFZEQ0FDUVJCcUpBQUxDUUFnQUNBQkVLUVJDdzRBSUFBUTZnRWdBQkRxQVNBQUMwMEFJQUFRaWdNZ0FDQUFLQUlBUVlDQW9IOXhJQUZCL3dGeElBSkJDSFJCZ1A0RGNYSkJnSUFFUVFBZ0F4dHlRWUNBQ0VFQUlBUWJja0dBZ0JCQkFDQUZHM0p5UVlDQXdBQnlOZ0lBQ3drQUlBQVFFeUFCYWdzNUFDQUFJQU0yQWd3Z0FDQUNOZ0lJSUFBZ0FUWUNCQ0FBUVpUYkVUWUNBQ0FBUVJCcUVEQWFJQUJCSEdvUTFnd2dBRUVBTmdJb0lBQUxDUUFnQUNBQkVMWVFDMU1CQW45QmZ5RUNBa0FnQUVIQUFXb2lBeEM0QWcwQUEwQWdBeENRQVNnQ0FDSUNJQUVnQWlnQ0FDZ0NDQkVEQUNJQ1FYOUhEUUZCZnlFQ0lBTVF1QUlOQVNBQUVKUU5JQU1RdUFKRkRRQUxDeUFDQ3ljQUlBQWdBQzhCa0FGQmdPQURjU0FDUVFoMFFZQWVjU0FCUVFSMFFmQUJjWEp5T3dHUUFRc1ZBQ0FBSUFBb0FvZ0JRUUZxSWdBMkFvZ0JJQUFMc0FFQkFuOGpBRUVRYXlJRkpBQWdBeUFGSUFBUUlpSURRUUJCQUJDc0FTRUFJQU1RR1JvQ1FDQUFSUTBBSUFBZ0FDZ0NBQ2dDTkJFQUFDZ0NRQ0lBRURkQkFVZ05BQU5BSUFBZ0JCQTRLQUlBSWdNZ0F5Z0NBQ2dDR0JFQUFDQUJFSWNCUlFSQUlBQWdCQkE0S0FJQUlnQWdBQ2dDQUNnQ0tCRUFBQ0lBSUFKQkJuUkJ3UDhCY2EwZ0FDa0NCRUsvZ0g2RGhEY0NCQXdDQ3lBRVFRRnFJZ1FnQUJBM1NBMEFDd3NnQlVFUWFpUUFDd29BSUFBb0FnQkJFR29MT3dBZ0FVRUNFSzBESUFGQnZKY1JFQkFnQUNnQ0FCRFREUkFRUWNXWEVSQVFJQUlRRUVIT2x4RVFFQm9nQUNBQUtBTFFBMEVCYWpZQzBBTUxDZ0FnQUNnQ0FCRE5CUXNRQUNBQVFRczJBZ2dnQUNBQk53TUFDeEFBSUFCQkNqWUNDQ0FBSUFFM0F3QUxEQUFnQUNBQlFSeHFFTGdHQ3hzQkFYOUJDaUVCSUFBUXdRRUVmeUFBRU1JRVFYOXFCU0FCQ3dzSEFDQUFRUlJxQ3hRQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkN4VUFJQUFvQWdRaUFFVUVRRUVBRHdzZ0FCQ2FBUXNrQVFGL0l3QkJFR3NpQVNRQUlBRkJDR29nQUJBeEtBSUFJUUFnQVVFUWFpUUFJQUFMRFFBZ0FFSG9BR29nQVJDOEZRc1pBQ0FBSUFBdkFaQUJRWURnQTNFZ0FVRVBjWEk3QVpBQkN3UUFRUUFMRUFBZ0FFRUlOZ0lJSUFBZ0FUWUNBQXNSQUNBQUlBQW9BZ0JCQkdvMkFnQWdBQXNPQUNBQUlBRW9BZ0EyQWdBZ0FBc09BQ0FBSUFFZ0FSQ2dBUkR0QndzVkFDQUFFT29CSUFBZ0FTQUJFS0FCRUxVR0lBQUxCQUFnQUFzTkFDQUFLQUlBSUFGQkdHeHFDeEFBSUFCQkJEWUNDQ0FBSUFFNkFBQUxFQUFnQUVFSk5nSUlJQUFnQVRZQ0FBc0dBQkNDQVFBTFN3QWdBQkNLQXlBQUlBQW9BZ0JCZ0lCQWNTQUJRZjhCY1NBQ1FRaDBRWUQrQTNGeVFZQ0FCRUVBSUFNYmNrR0FnQWhCQUNBRUczSkJnSUFRUVFBZ0JSdHlja0dBZ0NCeU5nSUFDendBSUFBUWlnTWdBQ0FBS0FJQVFZQ0FZSEVnQWtFSWRFR0EvZ054SUFGQi93Rnhja0dBZ0FSQkFDQURHM0pCZ0lBUVFRQWdCQnR5Y2pZQ0FBc1FBQ0FBUVFjMkFnZ2dBQ0FCT3dFQUN4QUFJQUJCQmpZQ0NDQUFJQUU3QVFBTFJRQWdBRUVBTmdLVUFTQUFRWmdCYWhENEF5QUFRUUEyQXFRQklBQkJxQUZxRVBnRElBQkJBRG9BdkFFZ0FFSUFOd0swQVNBQVFjUUJhaEN1Q0NBQVFRQTJBc0FCQ3hJQUlBQWdBRUVnRU1rQklBRWdBaER6QkFzU0FDQUFJQUkyQWdRZ0FDQUJPZ0FBSUFBTEVBQWdBRUVGTmdJSUlBQWdBVG9BQUFzUUFDQUFRUXcyQWdnZ0FDQUJPZ0FBQzFzQkFuOGpBRUVRYXlJRkpBQWdBa0gvLy8vL0IwY0VRRUVzRUNaQnh3QVF0d0VpQkNBQkVEa2dCQ0FDRUV3Z0EwRUFUZ1JBSUFRZ0F4Qk1DeUFBUVlRQ2FpQUZRUWhxSUFRUU9pSUFFSDBnQUJBK0N5QUZRUkJxSkFBTERnQWdBQ0FCSUFFUXRRc1FuUkVMU2dFQ2Z3SkFJQUF0QUFBaUFrVWdBaUFCTFFBQUlnTkhjZzBBQTBBZ0FTMEFBU0VESUFBdEFBRWlBa1VOQVNBQlFRRnFJUUVnQUVFQmFpRUFJQUlnQTBZTkFBc0xJQUlnQTJzTHdnRUNBMzhCZmdKQUFrQWdBQ2tEY0NJRVVFVUVRQ0FBS1FONElBUlpEUUVMSUFBUTJoTWlBa0YvU2cwQkN5QUFRUUEyQW1oQmZ3OExJQUFvQWdnaEFRSkFBa0FnQUNrRGNDSUVVQTBBSUFRZ0FDa0RlRUovaFh3aUJDQUJJQUFvQWdRaUEydXNXUTBBSUFBZ0F5QUVwMm8yQW1nTUFRc2dBQ0FCTmdKb0N3SkFJQUZGQkVBZ0FDZ0NCQ0VBREFFTElBQWdBQ2tEZUNBQklBQW9BZ1FpQUd0QkFXcXNmRGNEZUFzZ0FFRi9haUlBTFFBQUlBSkhCRUFnQUNBQ09nQUFDeUFDQ3pBQkFYOGdBU2dDQUNFQ0lBQkJCR29nQVJCOUlBSWdBQkNzQmlBQ0tBSUVCRUFnQUNnQ05DZ0NCQ0FDRUl3QkN3dExBUUYvSXdCQkVHc2lBaVFBQWtBZ0FDZ0NCQ0FBRUJzb0FnQkpCRUFnQUJBYklBQW9BZ1FnQVJDM0NDQUFJQUFvQWdSQkJHbzJBZ1FNQVFzZ0FDQUJFTkVWQ3lBQ1FSQnFKQUFMSndFQmZ5TUFRUkJySWdFa0FDQUJRUWhxSUFBUWdRRVFNU2dDQUNFQUlBRkJFR29rQUNBQUN6TUFBa0JCNU1vVUxRQUFRUUZ4RFFCQjVNb1VFSzRCUlEwQVFlREtGQkNwRXpZQ0FFSGt5aFFRclFFTFFlREtGQ2dDQUFzc0FRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dvZ0FTQUNJQUlRaXhBZ0FDQURRUWhxRU5jRUlBTkJFR29rQUFzbUFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCQWxFREVvQWdBaEFDQUJRUkJxSkFBZ0FBc0ZBQkFCQUFzR0FDQUFFQ29MU3dFQmZ5TUFRUkJySWdJa0FBSkFJQUFvQWdRZ0FCQWJLQUlBUndSQUlBQVFHeUFBS0FJRUlBRVFwUVVnQUNBQUtBSUVRUWhxTmdJRURBRUxJQUFnQVJDaURnc2dBa0VRYWlRQUN3MEFJQUF0QUFaQklIRkJCWFlMSHdBZ0FVVWdBa0gvLy8vL0IwWnlSUVJBSUFBZ0FTQUNRWDhRZUFzZ0FRc1FBQ0FBUVg4Z0FTQUJFS0FCRUpzSEN3Z0FJQUFnQVJBZUN3OEFJQUFnQVJBVElBRVFIeENnQndzTkFDQUFMUUFDUVFSeFFRSjJDNTRMQWdWL0QzNGpBRUhnQUdzaUJTUUFJQVJDTDRZZ0EwSVJpSVFoRHlBQ1FpQ0dJQUZDSUlpRUlRMGdCRUwvLy8vLy8vOC9neUlPUWcrR0lBTkNNWWlFSVJBZ0FpQUVoVUtBZ0lDQWdJQ0FnSUIvZ3lFS0lBNUNFWWdoRVNBQ1F2Ly8vLy8vL3orRElndENJSWdoRWlBRVFqQ0lwMEgvL3dGeElRY0NRQUovSUFKQ01JaW5RZi8vQVhFaUNVRi9ha0g5L3dGTkJFQkJBQ0FIUVg5cVFmNy9BVWtOQVJvTElBRlFJQUpDLy8vLy8vLy8vLy8vQUlNaURFS0FnSUNBZ0lEQS8vOEFWQ0FNUW9DQWdJQ0FnTUQvL3dCUkcwVUVRQ0FDUW9DQWdJQ0FnQ0NFSVFvTUFnc2dBMUFnQkVMLy8vLy8vLy8vLy84QWd5SUNRb0NBZ0lDQWdNRC8vd0JVSUFKQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFSQ2dJQ0FnSUNBSUlRaENpQURJUUVNQWdzZ0FTQU1Rb0NBZ0lDQWdNRC8vd0NGaEZBRVFDQUNJQU9FVUFSQVFvQ0FnSUNBZ09ELy93QWhDa0lBSVFFTUF3c2dDa0tBZ0lDQWdJREEvLzhBaENFS1FnQWhBUXdDQ3lBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQUlBRWdESVFoQWtJQUlRRWdBbEFFUUVLQWdJQ0FnSURnLy84QUlRb01Bd3NnQ2tLQWdJQ0FnSURBLy84QWhDRUtEQUlMSUFFZ0RJUlFCRUJDQUNFQkRBSUxJQUlnQTRSUUJFQkNBQ0VCREFJTElBeEMvLy8vLy8vL1AxZ0VRQ0FGUWRBQWFpQUJJQXNnQVNBTElBdFFJZ1liZVNBR1FRWjByWHluSWdaQmNXb1E5d0VnQlNrRFdDSUxRaUNHSUFVcEExQWlBVUlnaUlRaERTQUxRaUNJSVJKQkVDQUdheUVHQ3lBR0lBSkMvLy8vLy8vL1AxWU5BQm9nQlVGQWF5QURJQTRnQXlBT0lBNVFJZ2diZVNBSVFRWjByWHluSWdoQmNXb1E5d0VnQlNrRFNDSUNRZytHSUFVcEEwQWlBMEl4aUlRaEVDQUNRaStHSUFOQ0VZaUVJUThnQWtJUmlDRVJJQVlnQ0d0QkVHb0xJUVlnRDBMLy8vLy9ENE1pQWlBQlF2Ly8vLzhQZ3lJQmZpSVBJQU5DRDRaQ2dJRCsvdytESWdNZ0RVTC8vLy8vRDRNaURINThJZ1JDSUlZaURpQUJJQU4rZkNJTklBNVVyU0FDSUF4K0loVWdBeUFMUXYvLy8vOFBneUlMZm53aUV5QVFRdi8vLy84UGd5SU9JQUYrZkNJUUlBUWdEMVN0UWlDR0lBUkNJSWlFZkNJVUlBSWdDMzRpRmlBRElCSkNnSUFFaENJUGZud2lBeUFNSUE1K2ZDSVNJQUVnRVVMLy8vLy9CNE5DZ0lDQWdBaUVJZ0YrZkNJUlFpQ0dmQ0lYZkNFRUlBY2dDV29nQm1wQmdZQi9haUVHQWtBZ0N5QU9maUlZSUFJZ0QzNThJZ0lnR0ZTdElBSWdBU0FNZm53aURDQUNWSzE4SUF3Z0V5QVZWSzBnRUNBVFZLMThmQ0lDSUF4VXJYd2dBU0FQZm53Z0FTQUxmaUlMSUE0Z0QzNThJZ0VnQzFTdFFpQ0dJQUZDSUlpRWZDQUNJQUZDSUlaOElnRWdBbFN0ZkNBQklCRWdFbFN0SUFNZ0ZsU3RJQklnQTFTdGZIeENJSVlnRVVJZ2lJUjhJZ01nQVZTdGZDQURJQlFnRUZTdElCY2dGRlN0Zkh3aUFpQURWSzE4SWdGQ2dJQ0FnSUNBd0FDRFVFVUVRQ0FHUVFGcUlRWU1BUXNnRFVJL2lDRURJQUZDQVlZZ0FrSS9pSVFoQVNBQ1FnR0dJQVJDUDRpRUlRSWdEVUlCaGlFTklBTWdCRUlCaG9RaEJBc2dCa0gvL3dGT0JFQWdDa0tBZ0lDQWdJREEvLzhBaENFS1FnQWhBUXdCQ3dKK0lBWkJBRXdFUUVFQklBWnJJZ2RCL3dCTkJFQWdCVUVRYWlBTklBUWdCeER0QkNBRlFTQnFJQUlnQVNBR1FmOEFhaUlHRVBjQklBVkJNR29nRFNBRUlBWVE5d0VnQlNBQ0lBRWdCeER0QkNBRktRTXdJQVVwQXppRVFnQlNyU0FGS1FNZ0lBVXBBeENFaENFTklBVXBBeWdnQlNrREdJUWhCQ0FGS1FNQUlRSWdCU2tEQ0F3Q0MwSUFJUUVNQWdzZ0FVTC8vLy8vLy84L2d5QUdyVUl3aG9RTElBcUVJUW9nRFZBZ0JFSi9WU0FFUW9DQWdJQ0FnSUNBZ0g5UkcwVUVRQ0FLSUFKQ0FYd2lBU0FDVksxOElRb01BUXNnRFNBRVFvQ0FnSUNBZ0lDQWdIK0ZoRkJGQkVBZ0FpRUJEQUVMSUFvZ0FpQUNRZ0dEZkNJQklBSlVyWHdoQ2dzZ0FDQUJOd01BSUFBZ0NqY0RDQ0FGUWVBQWFpUUFDeTBCQVg4Z0FTZ0NCQ0lDSUFCQkVHb2lBQkFXVHdSQUlBQWdBa0VRYWhEQURBc2dBQ0FDRUJFZ0FUWUNBQXRMQVFGL0l3QkJJR3NpQWlRQUlBSWdBRUhFQUdvaUFDQUNRUWhxSUFFUWFTSUJFSU1FTmdJWUlBSWdBQkNCQVRZQ0FDQUNRUmhxSUFJUUhpRUFJQUVRSUJvZ0FrRWdhaVFBSUFBTGNBRUNmeUFBRU5vQklnSkJmMGNFUUNBQUtBSVlJQUFvQWhCQkJIUnFJZ0VnQVNnQ0RFRUJhallDRENBQUlBQW9BakJCQVdvMkFqQWdBa0VLUmdSQUlBRWdBU2dDQ0VFQmFqWUNDQ0FBUVFBMkFqQWdBQ0FBS0FJc1FRRnFOZ0lzSUFGQkFEWUNEQXNnQUJDbUVBc2dBZ3Y0QVFFQmZ5QUFJQUV0QUFRZ0FDZ0NCRUdBZm5GeUlnSTJBZ1FnQUNBQktBSk1OZ0pNSUFCQkNHb2dBVUVJYWtFMEVEMGFJQUFnQVNnQ0JFR0FIbkVnQWtIL1lYRnlJZ0kyQWdRZ0FDQUNRZitmZkhFZ0FTZ0NCRUdBNEFOeGNpSUNOZ0lFSUFBZ0FrSC8vME54SUFFb0FnUkJnSUE4Y1hJaUFqWUNCQ0FBSUFKQi8vKy9mM0VnQVNnQ0JFR0FnTUFBY1hJMkFnUWdBQ0FCS0FJOE5nSThJQUFnQVNnQ1JEWUNSQ0FBSUFFb0FrZzJBa2dnQUNBQUtBSUFLQUtJQVJFQUFCb2dBQ0FCS0FKQU5nSkFJQUFnQVNnQ1VEWUNVQ0FCRUlVQklRRWdBQ0FBS0FJRVFmLy8vMzV4UVlDQWdBRkJBQ0FCRzNJMkFnUUxDZ0FnQUNnQ0JFRjhhZ3N4QVFGL0l3QkJFR3NpQXlRQUlBTWdBVFlDRENBQUlBTkJER29RWnhvZ0FDQUNLUUlBTndJRUlBTkJFR29rQUNBQUN3a0FJQUFnQVJBU0dnc0pBQ0FBRVAwSElBQUxEQUFnQUNBQkxRQUFPZ0FBQ3lrQkFYOGpBRUVRYXlJQ0pBQWdBaUFCRUlRT0lBQWdBaERHQ2lBQ0VCa2FJQUpCRUdva0FDQUFDd2tBSUFBUTdSQWdBQXRaQVFKL0l3QkJJR3NpQVNRQUlBRkJBRFlDRENBQlFkWUVOZ0lJSUFFZ0FTa0RDRGNEQUNBQUFuOGdBVUVRYWlJQ0lBRXBBZ0EzQWdRZ0FpQUFOZ0lBSUFJTEVKRVNJQUFvQWdRaEFDQUJRU0JxSkFBZ0FFRi9hZ3NiQUNBQVFRQTJBZ1FnQUVHVTZoSTJBZ0FnQUVIc3Z4STJBZ0FMRWdBZ0FDQUNOZ0lFSUFBZ0FUWUNBQ0FBQ3hBQUlBQW9BZ1FnQUNnQ0FHdEJBM1VMeWk0QkMzOGpBRUVRYXlJTEpBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCME5rVUtBSUFJZ1pCRUNBQVFRdHFRWGh4SUFCQkMwa2JJZ1ZCQTNZaUFIWWlBVUVEY1FSQUlBRkJmM05CQVhFZ0FHb2lBa0VEZENJRVFZRGFGR29vQWdBaUFVRUlhaUVBQWtBZ0FTZ0NDQ0lESUFSQitOa1VhaUlFUmdSQVFkRFpGQ0FHUVg0Z0FuZHhOZ0lBREFFTFFlRFpGQ2dDQUJvZ0F5QUVOZ0lNSUFRZ0F6WUNDQXNnQVNBQ1FRTjBJZ0pCQTNJMkFnUWdBU0FDYWlJQklBRW9BZ1JCQVhJMkFnUU1EQXNnQlVIWTJSUW9BZ0FpQ0UwTkFTQUJCRUFDUUVFQ0lBQjBJZ0pCQUNBQ2EzSWdBU0FBZEhFaUFFRUFJQUJyY1VGL2FpSUFJQUJCREhaQkVIRWlBSFlpQVVFRmRrRUljU0lDSUFCeUlBRWdBbllpQUVFQ2RrRUVjU0lCY2lBQUlBRjJJZ0JCQVhaQkFuRWlBWElnQUNBQmRpSUFRUUYyUVFGeElnRnlJQUFnQVhacUlnSkJBM1FpQTBHQTJoUnFLQUlBSWdFb0FnZ2lBQ0FEUWZqWkZHb2lBMFlFUUVIUTJSUWdCa0YrSUFKM2NTSUdOZ0lBREFFTFFlRFpGQ2dDQUJvZ0FDQUROZ0lNSUFNZ0FEWUNDQXNnQVVFSWFpRUFJQUVnQlVFRGNqWUNCQ0FCSUFWcUlnY2dBa0VEZENJQ0lBVnJJZ05CQVhJMkFnUWdBU0FDYWlBRE5nSUFJQWdFUUNBSVFRTjJJZ1JCQTNSQitOa1VhaUVCUWVUWkZDZ0NBQ0VDQW44Z0JrRUJJQVIwSWdSeFJRUkFRZERaRkNBRUlBWnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEJDQUJJQUkyQWdnZ0JDQUNOZ0lNSUFJZ0FUWUNEQ0FDSUFRMkFnZ0xRZVRaRkNBSE5nSUFRZGpaRkNBRE5nSUFEQXdMUWRUWkZDZ0NBQ0lLUlEwQklBcEJBQ0FLYTNGQmYyb2lBQ0FBUVF4MlFSQnhJZ0IySWdGQkJYWkJDSEVpQWlBQWNpQUJJQUoySWdCQkFuWkJCSEVpQVhJZ0FDQUJkaUlBUVFGMlFRSnhJZ0Z5SUFBZ0FYWWlBRUVCZGtFQmNTSUJjaUFBSUFGMmFrRUNkRUdBM0JScUtBSUFJZ0VvQWdSQmVIRWdCV3NoQXlBQklRSURRQUpBSUFJb0FoQWlBRVVFUUNBQ0tBSVVJZ0JGRFFFTElBQW9BZ1JCZUhFZ0JXc2lBaUFESUFJZ0Ewa2lBaHNoQXlBQUlBRWdBaHNoQVNBQUlRSU1BUXNMSUFFb0FoZ2hDU0FCSUFFb0Fnd2lCRWNFUUVIZzJSUW9BZ0FnQVNnQ0NDSUFUUVJBSUFBb0Fnd2FDeUFBSUFRMkFnd2dCQ0FBTmdJSURBc0xJQUZCRkdvaUFpZ0NBQ0lBUlFSQUlBRW9BaEFpQUVVTkF5QUJRUkJxSVFJTEEwQWdBaUVISUFBaUJFRVVhaUlDS0FJQUlnQU5BQ0FFUVJCcUlRSWdCQ2dDRUNJQURRQUxJQWRCQURZQ0FBd0tDMEYvSVFVZ0FFRy9mMHNOQUNBQVFRdHFJZ0JCZUhFaEJVSFUyUlFvQWdBaUIwVU5BRUVBSUFWcklRSUNRQUpBQWtBQ2YwRUFJQUJCQ0hZaUFFVU5BQnBCSHlBRlFmLy8vd2RMRFFBYUlBQWdBRUdBL2o5cVFSQjJRUWh4SWdCMElnRWdBVUdBNEI5cVFSQjJRUVJ4SWdGMElnTWdBMEdBZ0E5cVFSQjJRUUp4SWdOMFFROTJJQUFnQVhJZ0EzSnJJZ0JCQVhRZ0JTQUFRUlZxZGtFQmNYSkJIR29MSWdoQkFuUkJnTndVYWlnQ0FDSURSUVJBUVFBaEFBd0JDeUFGUVFCQkdTQUlRUUYyYXlBSVFSOUdHM1FoQVVFQUlRQURRQUpBSUFNb0FnUkJlSEVnQldzaUJpQUNUdzBBSUFNaEJDQUdJZ0lOQUVFQUlRSWdBeUVBREFNTElBQWdBeWdDRkNJR0lBWWdBeUFCUVIxMlFRUnhhaWdDRUNJRFJoc2dBQ0FHR3lFQUlBRWdBMEVBUjNRaEFTQUREUUFMQ3lBQUlBUnlSUVJBUVFJZ0NIUWlBRUVBSUFCcmNpQUhjU0lBUlEwRElBQkJBQ0FBYTNGQmYyb2lBQ0FBUVF4MlFSQnhJZ0IySWdGQkJYWkJDSEVpQXlBQWNpQUJJQU4ySWdCQkFuWkJCSEVpQVhJZ0FDQUJkaUlBUVFGMlFRSnhJZ0Z5SUFBZ0FYWWlBRUVCZGtFQmNTSUJjaUFBSUFGMmFrRUNkRUdBM0JScUtBSUFJUUFMSUFCRkRRRUxBMEFnQUNnQ0JFRjRjU0FGYXlJRElBSkpJUUVnQXlBQ0lBRWJJUUlnQUNBRUlBRWJJUVFnQUNnQ0VDSUJCSDhnQVFVZ0FDZ0NGQXNpQUEwQUN3c2dCRVVOQUNBQ1FkalpGQ2dDQUNBRmEwOE5BQ0FFS0FJWUlRZ2dCQ0FFS0FJTUlnRkhCRUJCNE5rVUtBSUFJQVFvQWdnaUFFMEVRQ0FBS0FJTUdnc2dBQ0FCTmdJTUlBRWdBRFlDQ0F3SkN5QUVRUlJxSWdNb0FnQWlBRVVFUUNBRUtBSVFJZ0JGRFFNZ0JFRVFhaUVEQ3dOQUlBTWhCaUFBSWdGQkZHb2lBeWdDQUNJQURRQWdBVUVRYWlFRElBRW9BaEFpQUEwQUN5QUdRUUEyQWdBTUNBdEIyTmtVS0FJQUlnRWdCVThFUUVIazJSUW9BZ0FoQUFKQUlBRWdCV3NpQWtFUVR3UkFRZGpaRkNBQ05nSUFRZVRaRkNBQUlBVnFJZ00yQWdBZ0F5QUNRUUZ5TmdJRUlBQWdBV29nQWpZQ0FDQUFJQVZCQTNJMkFnUU1BUXRCNU5rVVFRQTJBZ0JCMk5rVVFRQTJBZ0FnQUNBQlFRTnlOZ0lFSUFBZ0FXb2lBU0FCS0FJRVFRRnlOZ0lFQ3lBQVFRaHFJUUFNQ2d0QjNOa1VLQUlBSWdFZ0JVc0VRRUhjMlJRZ0FTQUZheUlCTmdJQVFlalpGRUhvMlJRb0FnQWlBQ0FGYWlJQ05nSUFJQUlnQVVFQmNqWUNCQ0FBSUFWQkEzSTJBZ1FnQUVFSWFpRUFEQW9MUVFBaEFDQUZRUzlxSWdRQ2YwR28zUlFvQWdBRVFFR3czUlFvQWdBTUFRdEJ0TjBVUW44M0FnQkJyTjBVUW9DZ2dJQ0FnQVEzQWdCQnFOMFVJQXRCREdwQmNIRkIyS3JWcWdWek5nSUFRYnpkRkVFQU5nSUFRWXpkRkVFQU5nSUFRWUFnQ3lJQ2FpSUdRUUFnQW1zaUIzRWlBaUFGVFEwSlFZamRGQ2dDQUNJREJFQkJnTjBVS0FJQUlnZ2dBbW9pQ1NBSVRTQUpJQU5MY2cwS0MwR00zUlF0QUFCQkJIRU5CQUpBQWtCQjZOa1VLQUlBSWdNRVFFR1EzUlFoQUFOQUlBQW9BZ0FpQ0NBRFRRUkFJQWdnQUNnQ0JHb2dBMHNOQXdzZ0FDZ0NDQ0lBRFFBTEMwRUFFS0VFSWdGQmYwWU5CU0FDSVFaQnJOMFVLQUlBSWdCQmYyb2lBeUFCY1FSQUlBSWdBV3NnQVNBRGFrRUFJQUJyY1dvaEJnc2dCaUFGVFNBR1FmNy8vLzhIUzNJTkJVR0kzUlFvQWdBaUFBUkFRWURkRkNnQ0FDSURJQVpxSWdjZ0EwMGdCeUFBUzNJTkJnc2dCaENoQkNJQUlBRkhEUUVNQndzZ0JpQUJheUFIY1NJR1FmNy8vLzhIU3cwRUlBWVFvUVFpQVNBQUtBSUFJQUFvQWdScVJnMERJQUVoQUFzZ0JVRXdhaUFHVFNBR1FmNy8vLzhIUzNJZ0FDSUJRWDlHY2tVRVFFR3czUlFvQWdBaUFDQUVJQVpyYWtFQUlBQnJjU0lBUWY3Ly8vOEhTdzBHSUFBUW9RUkJmMGNFUUNBQUlBWnFJUVlNQnd0QkFDQUdheENoQkJvTUJBc2dBVUYvUncwRkRBTUxRUUFoQkF3SEMwRUFJUUVNQlFzZ0FVRi9SdzBDQzBHTTNSUkJqTjBVS0FJQVFRUnlOZ0lBQ3lBQ1FmNy8vLzhIU3cwQklBSVFvUVFpQVVFQUVLRUVJZ0JQSUFGQmYwWnlJQUJCZjBaeURRRWdBQ0FCYXlJR0lBVkJLR3BORFFFTFFZRGRGRUdBM1JRb0FnQWdCbW9pQURZQ0FDQUFRWVRkRkNnQ0FFc0VRRUdFM1JRZ0FEWUNBQXNDUUFKQUFrQkI2TmtVS0FJQUlnTUVRRUdRM1JRaEFBTkFJQUVnQUNnQ0FDSUNJQUFvQWdRaUJHcEdEUUlnQUNnQ0NDSUFEUUFMREFJTFFlRFpGQ2dDQUNJQVFRQWdBU0FBVHh0RkJFQkI0TmtVSUFFMkFnQUxRUUFoQUVHVTNSUWdCallDQUVHUTNSUWdBVFlDQUVIdzJSUkJmellDQUVIMDJSUkJxTjBVS0FJQU5nSUFRWnpkRkVFQU5nSUFBMEFnQUVFRGRDSUNRWURhRkdvZ0FrSDQyUlJxSWdNMkFnQWdBa0dFMmhScUlBTTJBZ0FnQUVFQmFpSUFRU0JIRFFBTFFkelpGQ0FHUVZocUlnQkJlQ0FCYTBFSGNVRUFJQUZCQ0dwQkIzRWJJZ0pySWdNMkFnQkI2TmtVSUFFZ0Ftb2lBallDQUNBQ0lBTkJBWEkyQWdRZ0FDQUJha0VvTmdJRVFlelpGRUc0M1JRb0FnQTJBZ0FNQWdzZ0FDMEFERUVJY1NBQklBTk5jaUFDSUFOTGNnMEFJQUFnQkNBR2FqWUNCRUhvMlJRZ0EwRjRJQU5yUVFkeFFRQWdBMEVJYWtFSGNSc2lBR29pQVRZQ0FFSGMyUlJCM05rVUtBSUFJQVpxSWdJZ0FHc2lBRFlDQUNBQklBQkJBWEkyQWdRZ0FpQURha0VvTmdJRVFlelpGRUc0M1JRb0FnQTJBZ0FNQVFzZ0FVSGcyUlFvQWdBaUJFa0VRRUhnMlJRZ0FUWUNBQ0FCSVFRTElBRWdCbW9oQWtHUTNSUWhBQUpBQWtBQ1FBSkFBa0FDUUFOQUlBSWdBQ2dDQUVjRVFDQUFLQUlJSWdBTkFRd0NDd3NnQUMwQURFRUljVVVOQVF0QmtOMFVJUUFEUUNBQUtBSUFJZ0lnQTAwRVFDQUNJQUFvQWdScUlnUWdBMHNOQXdzZ0FDZ0NDQ0VBREFBQUN3QUxJQUFnQVRZQ0FDQUFJQUFvQWdRZ0JtbzJBZ1FnQVVGNElBRnJRUWR4UVFBZ0FVRUlha0VIY1J0cUlna2dCVUVEY2pZQ0JDQUNRWGdnQW10QkIzRkJBQ0FDUVFocVFRZHhHMm9pQVNBSmF5QUZheUVBSUFVZ0NXb2hCeUFCSUFOR0JFQkI2TmtVSUFjMkFnQkIzTmtVUWR6WkZDZ0NBQ0FBYWlJQU5nSUFJQWNnQUVFQmNqWUNCQXdEQ3lBQlFlVFpGQ2dDQUVZRVFFSGsyUlFnQnpZQ0FFSFkyUlJCMk5rVUtBSUFJQUJxSWdBMkFnQWdCeUFBUVFGeU5nSUVJQUFnQjJvZ0FEWUNBQXdEQ3lBQktBSUVJZ0pCQTNGQkFVWUVRQ0FDUVhoeElRb0NRQ0FDUWY4QlRRUkFJQUVvQWdnaUF5QUNRUU4ySWdSQkEzUkIrTmtVYWtjYUlBTWdBU2dDRENJQ1JnUkFRZERaRkVIUTJSUW9BZ0JCZmlBRWQzRTJBZ0FNQWdzZ0F5QUNOZ0lNSUFJZ0F6WUNDQXdCQ3lBQktBSVlJUWdDUUNBQklBRW9BZ3dpQmtjRVFDQUVJQUVvQWdnaUFrMEVRQ0FDS0FJTUdnc2dBaUFHTmdJTUlBWWdBallDQ0F3QkN3SkFJQUZCRkdvaUF5Z0NBQ0lGRFFBZ0FVRVFhaUlES0FJQUlnVU5BRUVBSVFZTUFRc0RRQ0FESVFJZ0JTSUdRUlJxSWdNb0FnQWlCUTBBSUFaQkVHb2hBeUFHS0FJUUlnVU5BQXNnQWtFQU5nSUFDeUFJUlEwQUFrQWdBU0FCS0FJY0lnSkJBblJCZ053VWFpSURLQUlBUmdSQUlBTWdCallDQUNBR0RRRkIxTmtVUWRUWkZDZ0NBRUYrSUFKM2NUWUNBQXdDQ3lBSVFSQkJGQ0FJS0FJUUlBRkdHMm9nQmpZQ0FDQUdSUTBCQ3lBR0lBZzJBaGdnQVNnQ0VDSUNCRUFnQmlBQ05nSVFJQUlnQmpZQ0dBc2dBU2dDRkNJQ1JRMEFJQVlnQWpZQ0ZDQUNJQVkyQWhnTElBRWdDbW9oQVNBQUlBcHFJUUFMSUFFZ0FTZ0NCRUYrY1RZQ0JDQUhJQUJCQVhJMkFnUWdBQ0FIYWlBQU5nSUFJQUJCL3dGTkJFQWdBRUVEZGlJQlFRTjBRZmpaRkdvaEFBSi9RZERaRkNnQ0FDSUNRUUVnQVhRaUFYRkZCRUJCME5rVUlBRWdBbkkyQWdBZ0FBd0JDeUFBS0FJSUN5RUJJQUFnQnpZQ0NDQUJJQWMyQWd3Z0J5QUFOZ0lNSUFjZ0FUWUNDQXdEQ3lBSEFuOUJBQ0FBUVFoMklnRkZEUUFhUVI4Z0FFSC8vLzhIU3cwQUdpQUJJQUZCZ1A0L2FrRVFka0VJY1NJQmRDSUNJQUpCZ09BZmFrRVFka0VFY1NJQ2RDSURJQU5CZ0lBUGFrRVFka0VDY1NJRGRFRVBkaUFCSUFKeUlBTnlheUlCUVFGMElBQWdBVUVWYW5aQkFYRnlRUnhxQ3lJQk5nSWNJQWRDQURjQ0VDQUJRUUowUVlEY0ZHb2hBZ0pBUWRUWkZDZ0NBQ0lEUVFFZ0FYUWlCSEZGQkVCQjFOa1VJQU1nQkhJMkFnQWdBaUFITmdJQURBRUxJQUJCQUVFWklBRkJBWFpySUFGQkgwWWJkQ0VESUFJb0FnQWhBUU5BSUFFaUFpZ0NCRUY0Y1NBQVJnMERJQU5CSFhZaEFTQURRUUYwSVFNZ0FpQUJRUVJ4YWlJRUtBSVFJZ0VOQUFzZ0JDQUhOZ0lRQ3lBSElBSTJBaGdnQnlBSE5nSU1JQWNnQnpZQ0NBd0NDMEhjMlJRZ0JrRllhaUlBUVhnZ0FXdEJCM0ZCQUNBQlFRaHFRUWR4R3lJQ2F5SUhOZ0lBUWVqWkZDQUJJQUpxSWdJMkFnQWdBaUFIUVFGeU5nSUVJQUFnQVdwQktEWUNCRUhzMlJSQnVOMFVLQUlBTmdJQUlBTWdCRUVuSUFSclFRZHhRUUFnQkVGWmFrRUhjUnRxUVZGcUlnQWdBQ0FEUVJCcVNSc2lBa0ViTmdJRUlBSkJtTjBVS1FJQU53SVFJQUpCa04wVUtRSUFOd0lJUVpqZEZDQUNRUWhxTmdJQVFaVGRGQ0FHTmdJQVFaRGRGQ0FCTmdJQVFaemRGRUVBTmdJQUlBSkJHR29oQUFOQUlBQkJCellDQkNBQVFRaHFJUUVnQUVFRWFpRUFJQVFnQVVzTkFBc2dBaUFEUmcwRElBSWdBaWdDQkVGK2NUWUNCQ0FESUFJZ0Eyc2lCRUVCY2pZQ0JDQUNJQVEyQWdBZ0JFSC9BVTBFUUNBRVFRTjJJZ0ZCQTNSQitOa1VhaUVBQW45QjBOa1VLQUlBSWdKQkFTQUJkQ0lCY1VVRVFFSFEyUlFnQVNBQ2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFFZ0FDQUROZ0lJSUFFZ0F6WUNEQ0FESUFBMkFnd2dBeUFCTmdJSURBUUxJQU5DQURjQ0VDQURBbjlCQUNBRVFRaDJJZ0JGRFFBYVFSOGdCRUgvLy84SFN3MEFHaUFBSUFCQmdQNC9ha0VRZGtFSWNTSUFkQ0lCSUFGQmdPQWZha0VRZGtFRWNTSUJkQ0lDSUFKQmdJQVBha0VRZGtFQ2NTSUNkRUVQZGlBQUlBRnlJQUp5YXlJQVFRRjBJQVFnQUVFVmFuWkJBWEZ5UVJ4cUN5SUFOZ0ljSUFCQkFuUkJnTndVYWlFQkFrQkIxTmtVS0FJQUlnSkJBU0FBZENJR2NVVUVRRUhVMlJRZ0FpQUdjallDQUNBQklBTTJBZ0FnQXlBQk5nSVlEQUVMSUFSQkFFRVpJQUJCQVhacklBQkJIMFliZENFQUlBRW9BZ0FoQVFOQUlBRWlBaWdDQkVGNGNTQUVSZzBFSUFCQkhYWWhBU0FBUVFGMElRQWdBaUFCUVFSeGFpSUdLQUlRSWdFTkFBc2dCaUFETmdJUUlBTWdBallDR0FzZ0F5QUROZ0lNSUFNZ0F6WUNDQXdEQ3lBQ0tBSUlJZ0FnQnpZQ0RDQUNJQWMyQWdnZ0IwRUFOZ0lZSUFjZ0FqWUNEQ0FISUFBMkFnZ0xJQWxCQ0dvaEFBd0ZDeUFDS0FJSUlnQWdBellDRENBQ0lBTTJBZ2dnQTBFQU5nSVlJQU1nQWpZQ0RDQURJQUEyQWdnTFFkelpGQ2dDQUNJQUlBVk5EUUJCM05rVUlBQWdCV3NpQVRZQ0FFSG8yUlJCNk5rVUtBSUFJZ0FnQldvaUFqWUNBQ0FDSUFGQkFYSTJBZ1FnQUNBRlFRTnlOZ0lFSUFCQkNHb2hBQXdEQzBIWXdCUkJNRFlDQUVFQUlRQU1BZ3NDUUNBSVJRMEFBa0FnQkNnQ0hDSUFRUUowUVlEY0ZHb2lBeWdDQUNBRVJnUkFJQU1nQVRZQ0FDQUJEUUZCMU5rVUlBZEJmaUFBZDNFaUJ6WUNBQXdDQ3lBSVFSQkJGQ0FJS0FJUUlBUkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBZzJBaGdnQkNnQ0VDSUFCRUFnQVNBQU5nSVFJQUFnQVRZQ0dBc2dCQ2dDRkNJQVJRMEFJQUVnQURZQ0ZDQUFJQUUyQWhnTEFrQWdBa0VQVFFSQUlBUWdBaUFGYWlJQVFRTnlOZ0lFSUFBZ0JHb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBUWdCVUVEY2pZQ0JDQUVJQVZxSWdNZ0FrRUJjallDQkNBQ0lBTnFJQUkyQWdBZ0FrSC9BVTBFUUNBQ1FRTjJJZ0ZCQTNSQitOa1VhaUVBQW45QjBOa1VLQUlBSWdKQkFTQUJkQ0lCY1VVRVFFSFEyUlFnQVNBQ2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFFZ0FDQUROZ0lJSUFFZ0F6WUNEQ0FESUFBMkFnd2dBeUFCTmdJSURBRUxJQU1DZjBFQUlBSkJDSFlpQUVVTkFCcEJIeUFDUWYvLy93ZExEUUFhSUFBZ0FFR0EvajlxUVJCMlFRaHhJZ0IwSWdFZ0FVR0E0QjlxUVJCMlFRUnhJZ0YwSWdVZ0JVR0FnQTlxUVJCMlFRSnhJZ1YwUVE5MklBQWdBWElnQlhKcklnQkJBWFFnQWlBQVFSVnFka0VCY1hKQkhHb0xJZ0EyQWh3Z0EwSUFOd0lRSUFCQkFuUkJnTndVYWlFQkFrQUNRQ0FIUVFFZ0FIUWlCWEZGQkVCQjFOa1VJQVVnQjNJMkFnQWdBU0FETmdJQURBRUxJQUpCQUVFWklBQkJBWFpySUFCQkgwWWJkQ0VBSUFFb0FnQWhCUU5BSUFVaUFTZ0NCRUY0Y1NBQ1JnMENJQUJCSFhZaEJTQUFRUUYwSVFBZ0FTQUZRUVJ4YWlJR0tBSVFJZ1VOQUFzZ0JpQUROZ0lRQ3lBRElBRTJBaGdnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFCS0FJSUlnQWdBellDRENBQklBTTJBZ2dnQTBFQU5nSVlJQU1nQVRZQ0RDQURJQUEyQWdnTElBUkJDR29oQUF3QkN3SkFJQWxGRFFBQ1FDQUJLQUljSWdCQkFuUkJnTndVYWlJQ0tBSUFJQUZHQkVBZ0FpQUVOZ0lBSUFRTkFVSFUyUlFnQ2tGK0lBQjNjVFlDQUF3Q0N5QUpRUkJCRkNBSktBSVFJQUZHRzJvZ0JEWUNBQ0FFUlEwQkN5QUVJQWsyQWhnZ0FTZ0NFQ0lBQkVBZ0JDQUFOZ0lRSUFBZ0JEWUNHQXNnQVNnQ0ZDSUFSUTBBSUFRZ0FEWUNGQ0FBSUFRMkFoZ0xBa0FnQTBFUFRRUkFJQUVnQXlBRmFpSUFRUU55TmdJRUlBQWdBV29pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQUVnQlVFRGNqWUNCQ0FCSUFWcUlnUWdBMEVCY2pZQ0JDQURJQVJxSUFNMkFnQWdDQVJBSUFoQkEzWWlCVUVEZEVINDJSUnFJUUJCNU5rVUtBSUFJUUlDZjBFQklBVjBJZ1VnQm5GRkJFQkIwTmtVSUFVZ0JuSTJBZ0FnQUF3QkN5QUFLQUlJQ3lFRklBQWdBallDQ0NBRklBSTJBZ3dnQWlBQU5nSU1JQUlnQlRZQ0NBdEI1TmtVSUFRMkFnQkIyTmtVSUFNMkFnQUxJQUZCQ0dvaEFBc2dDMEVRYWlRQUlBQUxmd0VDZnlNQVFSQnJJZ0lrQUNBQUVMa0dJQUpCQ0dvZ0FCQTZJUUJCME5jVUVCWWdBVTBFUUNBQlFRRnFFSllTQzBIUTF4UWdBUkFSS0FJQUJFQkIwTmNVSUFFUUVTZ0NBQkROQlFzZ0FCQmZJUU5CME5jVUlBRVFFU0FETmdJQUlBQW9BZ0FoQVNBQVFRQTJBZ0FnQVFSQUlBRVF6UVVMSUFKQkVHb2tBQXNKQUNBQVFRQVF4Z0VMS1FFQmZ5TUFRUkJySWdNa0FDQURJQUUyQWd3Z0FDQURRUXhxSUFJUXpnb2dBMEVRYWlRQUlBQUxFQUFnQUNnQ0FCRFFDMEVZZEVFWWRRdVBBUUVEZnlBQUlRRUNRQUpBSUFCQkEzRkZEUUFnQUMwQUFFVUVRQXdDQ3dOQUlBRkJBV29pQVVFRGNVVU5BU0FCTFFBQURRQUxEQUVMQTBBZ0FTSUNRUVJxSVFFZ0FpZ0NBQ0lEUVg5eklBTkIvLzM3ZDJweFFZQ0Jnb1I0Y1VVTkFBc2dBMEgvQVhGRkJFQWdBaUVCREFFTEEwQWdBaTBBQVNFRElBSkJBV29pQVNFQ0lBTU5BQXNMSUFFZ0FHc0x1UUlCQlg4akFFRkFhaUlDSkFBZ0FFRTRhaUlERUlRTUlRVWdBa0VJYWlBREVMNENJQUlnQWlnQ09EWUNQQ0FDUVFocUVMZ0JJQUpCQ0dvZ0FSRGtBU0FDSUFKQlBHb2dBa0VJYWhENkF5QUNRUWhxSUFNUXZnSWdBaWdDTkNFRUlBSkJDR29RdUFFZ0FSQ0dCQ0VHSUFNZ0FSRCtCQ0FBSUFFZ0FTZ0NBQ2dDTEJFQUFCRDdBeUFGSUFBZ0FrRThhaEM4Q0VGM2NTQUFJQUpCUEdvUS93UWdCQ0FHY2hDRkRDRUVBa0FnQVNBQktBSUFLQUljRVFBQVFReEhEUUFnQXlBRkVQMEVCRUFnQlNBREVQb0NJZ0JHRFFFZ0EwR3JBU0FBSUFRZ0EwRUFRUUFRZEJDcUFTRUVEQUVMSUFNZ0JSREpBMFVOQUNBRElBVVF5QU1oQVNBRklBTWdBeEQ2QWlBQkVMRUJJZ1pHRFFBZ0EwR3JBU0FHSUFRZ0FDQURRUUJCQUJCMElBRVFvUUlRcWdFaEJBc2dBa0ZBYXlRQUlBUUxGZ0FnQUNBQktBSUFOZ0lBSUFBZ0FpMEFBRG9BQkFzcEFDQUFLQUpNRUJoRkJFQWdBQ0FCUWVHVUNpQUNRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd3NKQUNBQUlBRVF2aEFMQ2dBZ0FDZ0NBQkRMQ3dzSkFDQUFJQUVRZ3hVTEVBQWdBQ2dDQkNBQUtBSUFhMEVNYlFzUUFDQUFLQUlFSUFBb0FnQnJRUVIxQ3c4QUlBQWdBQ2dDQUJDZUdqWUNBQXVhQVFFQ2Z5TUFRVEJySWdVa0FBSkFJQUF0QUpBQkJFQWdCVUVnYWtFQ0VKTUlJZ1pCQUJBUklBTTJBZ0FnQmtFQkVCRWdCRFlDQUNBQUlBRWdBaUFHSUFWQkVHb1FNQ0lCRUtzRUlRQWdBUkEySUFZUU5nd0JDMEVzRUNZZ0FCQlZJQUlnQVJCUklnRWdBeEE1SUFFZ0JCQTVJQUFvQW9RQklBVkJDR29nQVJBNklnQVFmQ0FBRUQ0Z0FTZ0NCQ0VBQ3lBRlFUQnFKQUFnQUFzaEFDQUFRWDlxSWdCQkNFMEVRQ0FBUVFKMFFkaklDMm9vQWdBUEMwSFl1d3NMZUFFRWZ5QUFFTUVDSVFVRFFBSkFJQWNnQUNBRklnUVFFU2dDQUMwQUdHb2hCeUFBSUFRUUVTZ0NBQ0FCRUl3S0lRWWdCRUVCU0EwQUlBUkJmMm9oQlNBR1JRMEJDd3NnQWdSQUlBSWdCQkRnRGpvQUFBc2dBd1JBSUFNZ0FCREJBaERjRGdSL1FRRUZJQUFRd1FJZ0JFWUxPZ0FBQ3lBR0N4WUFJQUJCQURZQ0FDQUFJQUFvQWdCQkFYSTJBZ0FMRFFBZ0FDMEFBRUVBUjBFQmN3dWVBUUVCZnlNQVFUQnJJZ1FrQUNBRUlBTTJBaWdnQkNBQk5nSXNBa0FnQUMwQWtBRUVRQ0FBUWRFQUlBSWdCRUVZYWtFQklBUkJMR29ReFFNaUFTQUVRUWhxUVFFZ0JFRW9haERGQXlJQ0VLc0VJUUFnQWhBMklBRVFOZ3dCQzBFc0VDWWdBQkJWSUFKQjBRQVFVU0lDSUFFUU9TQUNJQU1RVENBQUtBS0VBU0FFSUFJUU9pSUFFSHdnQUJBK0lBSW9BZ1FoQUFzZ0JFRXdhaVFBSUFBTEN3QWdBQ0FCUVFBUW5nTUwvQUVCQkg4akFFRVFheUlESkFBZ0EwRVhOZ0lJQWtBZ0FFSGNBbW9pQlNBRFFRaHFFRDhRRmtFQlRnUkFBMEFnQTBFWE5nSUlJQU1nQlNBRFFRaHFFRDhnQkJBUktBSUFJZ1kyQWd3Z0JrRUFFQzhnQVVZRVFDQURLQUlNUVFFUUx5QUNSZzBEQ3lBRFFSYzJBZ2dnQkVFQmFpSUVJQVVnQTBFSWFoQS9FQlpJRFFBTEMwRXNFQ1lpQmlBQUVGVkJBRUVYRUZFaEJDQURJQVkyQWd3Z0JDQUJFRGtnQkNBQ0VFd2dBMEVYTmdJSUlBVWdBMEVJYWhBL0lBTkJER29RUnlBQVFaQUNhaUFEUVFocUlBTW9BZ3dRT2lJQkVIMGdBUkErSUFCQjZBQnFJQU1vQWd3UWpBRUxJQU1vQWd3b0FnUWhBQ0FEUVJCcUpBQWdBQXNUQUNBQUtBSUVJQUpKQkVBZ0FDQUJFRUlMQzZ3QkFRTi9Jd0JCRUdzaUJpUUFJQUFnQmlBQkVDSWlBVUVBUVFBUXJBRWhBQ0FCRUJrYUFrQWdBRVVOQUNBQUlBQW9BZ0FvQWlRUkFBQWlBQ0FBS0FJQUtBSWtFUUFBSWdFZ0FTZ0NBQ2dDTUJFQUFDZ0NRQ0lCRURkQkFVZ05BQU5BSUFFZ0JSQTRLQUlBSWdjZ0J5Z0NBQ2dDR0JFQUFDQUNFSWNCUlFSQUlBQWdCU0FESUFRZ0FDZ0NBQ2dDZUJFRUFBd0NDeUFGUVFGcUlnVWdBUkEzU0EwQUN3c2dCa0VRYWlRQUN6MEJBWDhqQUVFUWF5SUNKQUFnQWlBQVFkQUdhaUlBSUFFUWd3UTJBZ2dnQWlBQUVJRUJOZ0lBSUFKQkNHb2dBaEFlSVFBZ0FrRVFhaVFBSUFBTERRQWdBQ2dDQUJET0N4b2dBQXR0QVFKL0l3QkJFR3NpQnlRQVFTd1FKa0VRRUxjQklnWWdBU2dDREJBNUlBWWdBaEJNSUFOQkFFNEVRQ0FHSUFNUVRBc2dCRUVBVGdSQUlBWWdCQkJNQ3lBRlFRQk9CRUFnQmlBRkVFd0xJQUJCN0FGcUlBZEJDR29nQmhBNklnQVFmU0FBRUQ0Z0IwRVFhaVFBQ3pJQUlBQWdBVFlDRENBQVFnQTNBZ1FnQUVHVTJ4RTJBZ0FnQUVFUWFoQXdHaUFBUVJ4cUVOWU1JQUJCQURZQ0tDQUFDeEFBSUFCQkZHb1FOaUFBUVFScUVEWUxDd0FnQUNBQkVNWUtJQUFMRVFBZ0FDQUFRWDlxY1VVZ0FFRUNTM0VMR1FBZ0FDQUJFSzBESUFBZ0FoQzZBeUFBUWJyS0R4QzZBd3NKQUNBQUlBRTJBZ1FMRFFBZ0FDZ0NBQkRLQ3hvZ0FBc0pBQ0FBSUFFUTBRc0xId0FnQUNBQklBRVF1UlVnQVNBQktBSUFLQUlzRVFBQVFRQkJBQkRoQmdzTUFDQUFJQUVRb3dKQkFYTUxDZ0FnQUN3QUMwRUFTQXNPQUJEVkEwRVFFSlFDSUFBUUlnc1NBQ0FBSUFJNkFBUWdBQ0FCTmdJQUlBQUxEUUFnQUNnQ0FDQUJRUVIwYWd2a0FRRUVmeU1BUVJCcklnRWtBQUpBQWtBZ0FDQUFLQUlBS0FJY0VRQUFRUTlIQkVBZ0FDQUFLQUlBS0FJY0VRQUFRUkJIRFFFTElBRWdBQ2dDUUJCQU5nSUlJQUVnQUNnQ1FCQXlOZ0lBSUFGQkNHb2dBUkFlUlEwQkEwQWdBU2dDQ0NnQ0FCREZBU0VESUFGQkNHb2lCQ2dDQUJvZ0JCQzBBaUFCSUFBb0FrQVFNallDQUNBQ0lBTnFJUUlnQVVFSWFpQUJFQjROQUFzTUFRc2dBQ2dDQkNJQ1FSQjBRUngxSWdNRVFDQURJQUpCREhSQkhIVnNJUUlNQVFzZ0FrRVVkRUVjZFNFQ0N5QUFLQUk4SWdBRVFDQUFFTlVPSUFKc0lRSUxJQUZCRUdva0FDQUNDeU1CQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FpQUFFQ1VvQWdBUkJRQUxDd2tBSUFBZ0FSRE1Dd3NOQUNBQUlBQWdBUkJpRU1nREN3c0FJQUFnQVVFQUVKc0lDL1FVQWdSL0FYNGpBRUhRQUdzaUFpUUFJQUlnQUJEVkFTSUVOZ0pJSUFJZ0JEWUNRQ0FDSUFRMkFqZ0NRQ0FCUVFocUlnTVE2d0pGRFFBZ0FpQURRVFFRUFNJQUlBQXBBeGhDZ0lDQWdQQUJoRGNER0NBQUVPc0NSUTBBSUFCQnlBQnFRWWlWRHhCSkFrQWdBeENPQkVVTkFDQUFRY2dBYWtHUWxROFFTU0FBUVVCcklBRW9BaHhCL3g5eEVPb0NJQU1Rc2dNRVFDQUFRY2dBYWtHYmxROFFTU0FBUVVCcklBRW9BaHhCREhaQkIzRVE2Z0lMSUFNUXpnUkZEUUFnQUVISUFHcEJwNVVQRUVrZ0FFRkFheUFCTFFBaUVPb0NDeUFERUtzRkJFQWdBRUhJQUdwQnI1VVBFRWtnQUVGQWF5QUJLQUljUVE5MlFmOEFjUkRxQWdzZ0F4RHBBZ1JBSUFCQnlBQnFRYldWRHhCSklBQkJRR3NnQVM4QklCRHFBZ3NnQXhDeEF3UkFJQUJCeUFCcVFiK1ZEeEJKSUFCQlFHc2dBUzBBSXhEcUFnc2dBeEROQkFSQUlBQkJ5QUJxUWNpVkR4QkpJQUJCeUFCcUlBRXBBZ3hDTklpblFRZHhFS3dKRUVrTElBTVFoZ01FUUNBQVFjZ0Fha0hJbFE4UVNTQUFRY2dBYWlBQktRSU1RamVJcDBFUGNSQ3FCUkJKQ3lBREVKWUNCRUFnQUVISUFHcEJ5cFVQRUVrZ0FFRTRhaUFCS0FJVUVNd0VDeUFERU5rREJFQWdBRUhJQUdwQjA1VVBFRWtnQUVFNGFpQUJLQUlZRU13RUN5QURFSjhIQkVBZ0FFSElBR3BCeUpVUEVFa2dBRUhJQUdvZ0FTMEFMQkRMQkJCSkN3SkFJQU1RbFFKRkRRQWdBeENGQTBVTkFDQUFRY2dBYWtIYmxROFFTU0FBUVVCcklBRW9BaVJCRDNFUTZnSUxJQU1RaFFNRVFDQUFRY2dBYWtIb2xROFFTU0FBUVVCcklBRXBBaUJDTW9pblFmOC9jUkRxQWdzZ0F4Q0NCZ1JBSUFCQnlBQnFRZldWRHhCSklBQkJRR3NnQVNrQ0lFSWtpS2RCLy84QWNSRHFBZ3NnQXhES0JBUkFJQUJCeUFCcVFZS1dEeEJKSUFCQlFHc2dBUzBBS0JEcUFnc2dBeENwQlFSQUlBQkJ5QUJxUVp1V0R4QkpJQUJCUUdzZ0FTZ0NLRUVJZGtIL0QzRVE2Z0lMSUFFdEFDMEVRQ0FBUWNnQWFrR3BsZzhRU1FzZ0FTMEFMZ1JBSUFCQnlBQnFRYmlXRHhCSkN5QURFS3NKQkVBZ0FFSElBR3BCeXBZUEVFa2dBRUZBYTBFQklBRW9BaWhCRTNaQlAzRjBFT29DQ3lBQkxRQXZCRUFnQUVISUFHcEI0NVlQRUVrTElBRXRBREFFUUNBQVFjZ0Fha0h3bGc4UVNRc2dBU2dDTkVHQWNFY0VRQ0FBUWNnQWFrR0lsdzhRU1NBQVFUaHFJQUVvQWpRUXpBUUxJQUV0QURnRVFDQUFRY2dBYWtHd2x3OFFTUXNnQUVISUFHcEIvTlVPRUVrTEFuOENmd0ovQW44Q2Z3Si9BbjhDZndKL0FuOENmd0ovQW44Q2Z3Si9BbjhDZndKL0FuOENmd0ovQW44Q2Z5QUJLUUlNSWdaQ2dJQ0F3QUNEVUVVRVFDQUNRY2dBYWtIQWx3OFFTU0FCS1FJTUlRWUxJQVpDZ0lDQWdDQ0RVRVVMQkVBZ0FrSElBR3BCeTVjUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lBQmcxQkZDd1JBSUFKQnlBQnFRZHFYRHhCSklBRXBBZ3doQmdzZ0JrS0FnSUNBQW9OUVJRc0VRQ0FDUWNnQWFrSGtsdzhRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnQVNEVUVVTEJFQWdBa0hJQUdwQjdKY1BFRWtnQVNrQ0RDRUdDeUFHUW9DQWdJREFBSU5RUlFzRVFDQUNRY2dBYWtIeWx3OFFTU0FCS1FJTUlRWUxJQVpDZ0lDQWdJQUJnMUJGQ3dSQUlBSkJ5QUJxUVlHWUR4QkpJQUVwQWd3aEJnc2dCa0tBZ0lDQWdBS0RVRVVMQkVBZ0FrSElBR3BCbHBnUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQUJJTlFSUXNFUUNBQ1FjZ0Fha0dqbUE4UVNTQUJLUUlNSVFZTElBWkNnSUNBZ0lBSWcxQkZDd1JBSUFKQnlBQnFRYk9ZRHhCSklBRXBBZ3doQmdzZ0JrS0FnSUNBZ0JDRFVFVUxCRUFnQWtISUFHcEJ2cGdQRUVrZ0FTa0NEQ0VHQ3lBR1FvQ0FnSUNBSUlOUVJRc0VRQ0FDUWNnQWFrSEdtQThRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnSURBQUlOUVJRc0VRQ0FDUWNnQWFrSE5tQThRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnSUNBQ0lOUVJRc0VRQ0FDUWNnQWFrSFZtQThRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnSUNBSUlOUVJRc0VRQ0FDUWNnQWFrSGZtQThRU1NBQktRSU1JUVlMSUFaQ2dJQ0FnSUNBd0FDRFVFVUxCRUFnQWtISUFHcEI3NWdQRUVrZ0FTa0NEQ0VHQ3lBR1FvQ0FnSUNBZ0lBQmcxQkZDd1JBSUFKQnlBQnFRWVNaRHhCSklBRXBBZ3doQmdzZ0JrS0FnSUNBZ0lDQUFvTlFSUXNFUUNBQ1FjZ0Fha0dYbVE4UVNTQUJLUUlNSVFZTElBWkNnSUNBZ0lDQWdBU0RVRVVMQkVBZ0FrSElBR3BCcVprUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQWdCQ0RVRVVMQkVBZ0FrSElBR3BCdFprUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQWdBR0RVRVVMQkVBZ0FrSElBR3BCdjVrUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQWdBS0RVRVVMQkVBZ0FrSElBR3BCeVprUEVFa2dBU2tDRENFR0N5QUdRb0NBZ0lDQWdBU0RVRVVMQkVBZ0FrSElBR3BCMDVrUEVFa2dBU2tDRENFR0N5QUdwMEYvVEFzRWZpQUNRY2dBYWtIZW1ROFFTU0FCS1FJTUJTQUdDMEtBZ0lDQUVJTlFSUVJBSUFKQnlBQnFRZmVaRHhCSkN5QUNRY2dBYWtISWxROFFTU0FDUWNnQWFpQUJFTWtFRUVrQ1FDQUJJQUVvQWdBb0FuQVJBQUJGRFFBZ0FTZ0NQQkJnUVFGSURRQkJBQ0VBQTBBZ0FrSElBR29DZnlBQktBSThJQUFRMWdFaUF5QUFja1VFUUVHRG1nOGdBU2dDUEMwQURBMEJHZ3NnQWtFNGFnSi9JQU5GQkVBZ0FrSElBR3BCbTVvUEVFbEJwSm9QSUFBTkFob2dBa0hJQUdwQnlKVVBFRWtnQVNnQ1BDZ0NDQXdCQ3lBQ1FjZ0Fha0hJbFE4UVNTQUJLQUk4SUFBUTFnRUxFTXdFUWFTYUR3c1FTU0FBUVFGcUlnQWdBU2dDUEJCZ1NBMEFDd3NnQVNBQktBSUFLQUtzQVJFQUFBUkFJQUpCeUFCcVFlK1pEaEJKUVFBaEFDQUJLQUpRRUdCQkFFb0VRQU5BSUFKQk9Hb2dBU2dDVUNBQUVOWUJFTXdFSUFFb0FsQVFZRUYvYWlBQVJ3UkFJQUpCeUFCcVFiYWFEeEJKQ3lBQVFRRnFJZ0FnQVNnQ1VCQmdTQTBBQ3dzZ0FrSElBR3BCOFprT0VFa0xJQUV0QUE5QkIzRUVRQ0FDUWNnQWFrSElsUThRU1NBQ1FjZ0FhaUFCRUw0T0VFa0xBa0FnQWtFNGFnSi9JQUVnQVNnQ0FDZ0NiQkVBQUFSQUlBSkJ5QUJxUWNpVkR4QkpJQUpCT0dvZ0FTZ0NCRUVRZEVFY2RSRE1CQ0FDUWNnQWFrRzVtZzhRU1VHN21nOGhBRUVNSVFNZ0FVRUVhZ3dCQ3lBQklBRW9BZ0FvQW1nUkFBQkZEUUVnQWtISUFHcEJ5SlVQRUVsQnhwb1BJUUJCRkNFRElBRkJCR29MS0FJQUlBTjBRUngxRU13RUlBSkJ5QUJxSUFBUVNRc2dBa0hJQUdwQnlKVVBFRWtnQWlBQkVLa0NJQVFnQWhDSkFSb2dBaEFaR2lBQkx3RU1RY0QvQVhFRVFDQUNRY2dBYWtISWxROFFTU0FDUWNnQWFnSi9JQUVvQWd4QkJuWkIvd054SWdCQjl3Qk5CRUFnQUVFQ2RFRzB0ZzlxS0FJQURBRUxRZFN0RHdzUVNRc0NRQ0FCSUFFb0FnQW9Bb2dCRVFBQVJRMEFJQUVvQWtCRkRRQWdBa0hJQUdwQjI1b1BFRWtnQVNnQ1FCQTNCRUJCQUNFQVFRRWhBd05BSUFFb0FrQWdBQkE0S0FJQUlnVWdCU2dDQUNnQ0RCRUFBRVVFUUNBRFFRRnhSUVJBSUFKQnlBQnFRYmFhRHhCSkN5QUNJQUVvQWtBZ0FCQTRLQUlBRU1vQklBUWdBaENKQVJvZ0FoQVpHaUFFUWNpVkR4QVNHaUFFSUFFb0FrQWdBQkE0S0FJQUlnTWdBeWdDQUNnQ0dCRUFBQkNKQVJwQkFDRURDeUFBUVFGcUlnQWdBU2dDUUJBM1NRMEFDd3NnQWtISUFHcEIzWm9QRUVrTElBSkIwQUJxSkFBTEpBRUNmeU1BUVJCcklnQWtBQ0FBUVFocVFRQVFNU2dDQUNFQklBQkJFR29rQUNBQkN5VUJBWDhqQUVFUWF5SUJKQUFnQVVFSWFpQUFFSW9LS0FJQUlRQWdBVUVRYWlRQUlBQUx0UUlBSUFCQjJKSVBOZ0lBSUFFZ0FTZ0NBQ2dDY0JFQUFBUkFJQUFnQVJDUEFTQUJJQUVvQWdBb0Frd1JBQUFRWUVFQlJnUkFJQUJCQURZQ1BDQUFEd3RCRUJCR0lnTVFzd01oQWlBQUlBTTJBandnQVNnQ1BDSUJFR0JCQWs0RVFDQUNJQUVRa2hBTElBQVBDeUFCTFFBRVFYRnFRUUZOQkVBZ0FDQUJLQUpBSUFJUU9DZ0NBQkNQQVNBQUR3c2dBQ0FCRUk4QkFrQWdBQ2dDQkNJQlFSQjBRWUNBZ0lBQlRnUkFJQUFnQVVFRVFRZ2dBeHQyUVlBZWNTSUNJQUZCLzJGeGNpSUJRZitmUUhFMkFnUWdBa0dBQWtjTkFTQUFJQUZCLzUrQWYzRkJnSURBQUhJMkFnUWdBQThMSUFBZ0FDZ0NBQ2dDYUJFQUFBUkFJQUFnQUNnQ0JFSC80YjkvY1VHQUFuSTJBZ1FnQUE4TElBQVFoUUZGRFFBZ0FFRUFOZ0pRSUFBZ0FDZ0NCRUgvLy85K2NUWUNCQXNnQUFzU0FRRi9JQUFvQWdBaEFTQUFFR1lhSUFFTEVBQWdBRUhvQUdvZ0FSQXZRUUFRTHdzUUFDQUFLQUlJSUFBb0FnUnJRUUoxQzRzQ0FRTi9Jd0JCUUdvaUJ5UUFBa0FnQUNnQ0NDQUNjVVVOQUNBRFFRRklCSDlCQUFVZ0FDZ0NFQ0FEVGdzaEFpQUVRUUZPQkVCQkFDRURBMEFnQUNBRklBTkJBblJxSWdnb0FnQWdBQ2dDQUNnQ0hCRURBRUYvYWlJSlFRSk5CRUFnQ1VFQ2EwVUVRQ0FBS0FJTUlRSWdCMEVRYWlBSElBZ29BZ0FRSWlJSUVOSU5JQWRCSUdvZ0IwRVFha0hWbnhBUTJBTWdCMEV3YWlBSFFTQnFJQVlRMkFNZ0FrRUJJQWRCTUdvUUV5QUJFTllFSUFkQk1Hb1FHUm9nQjBFZ2FoQVpHaUFIUVJCcUVCa2FJQWdRR1JvTFFRRWhBZ3NnQTBFQmFpSURJQVJIRFFBTEN5QUNEUUFnQUNBQlFlbWZFQ0FHUWFLZ0VFRUFJQUFvQWdBb0FxQUJFUUlBQ3lBSFFVQnJKQUFMTUFBZ0FpQUFLQUlVSWdKMlFRRnhSUVJBSUFBZ0FVR01ueEFnQXlBQ0VOTU5RUUFnQUNnQ0FDZ0NvQUVSQWdBTEN5QUFJQUFRc0JrZ0FDQUJLQUlJTmdJSUlBQWdBU2tDQURjQ0FDQUJFT29CQ3drQUlBQWdBVG9BQ3dzT0FDQUFFUHNOSUFBUTZnRWdBQXNKQUNBQUlBRVFyQVVMQ2dBZ0FDZ0NSQkQ2Q1F1N0FRRUNmeUFBS0FJa0VNSUJJUUVnQUNnQ0hDZ0NBQ0FCTmdJUVFkMEVJUUlDUUNBQUxRQUtEUUFnQUNnQ0JDZ0NUQ0FBS0FJY0tBSUFLQUlRUVFCQkFCQ3NBU0VCSUFBb0Fod29BZ0FnQVRZQ0dDQUFMUUFJRFFBZ0FDMEFDUTBBSUFBb0Fod29BZ0FvQWhnaUFVVU5BQ0FCSUFFb0FnQW9BaVFSQUFBaUFVVU5BQ0FCSUFFb0FnQW9BbGdSQUFCRkRRQWdBU0FCS0FJQUtBSXdFUUFBRVBRQkJFQWdBQzBBQ3cwQkN5QUFRUUU2QUFoQjNnUWhBZ3NnQWd0YUFRUi9Jd0JCRUdzaUFTUUFJQUFvQWdRb0Frd1FKRVVFUUNBQUtBSWtJUUlnQUNnQ0JDSURLQUlBS0FLZ0FTRUVJQUZCbGI0Sk5nSUFJQU1nQUVFTWFrRzN5QWtnQWtHVnZna2dBU0FFRVFJQUN5QUJRUkJxSkFBTGJRRUVmd0pBQWtBZ0FDZ0NFQ0lCSUFBb0FnUWlBMDRFUUNBQVFRRTZBRFVNQVFzZ0FDZ0NEQ0VFSUFBb0FoUWhBZ05BSUFJZ0JDQUJRUUowYWlnQ0FFa05Ba0VBSVFJZ0FVRUJhaUlCSUFOSERRQUxDMEYvRHdzZ0FDZ0NDQ0FCUVFKMGFpZ0NBQ0FDYWkwQUFBc2xBQ0FBRU1VRUlBQW9BZ0FFUUNBQUVMSUtJQUFRT3hvZ0FDZ0NBQm9nQUJDM0Fob0xDMHNCQVg4akFFRVFheUlDSkFBQ1FDQUFLQUlFSUFBUUd5Z0NBRWNFUUNBQUVEc2dBQ2dDQkNBQkVKY0RJQUFnQUNnQ0JFRUVhallDQkF3QkN5QUFJQUVReHd3TElBSkJFR29rQUF2ekFnSUNmd0YrQWtBZ0FrVU5BQ0FBSUFKcUlnTkJmMm9nQVRvQUFDQUFJQUU2QUFBZ0FrRURTUTBBSUFOQmZtb2dBVG9BQUNBQUlBRTZBQUVnQTBGOWFpQUJPZ0FBSUFBZ0FUb0FBaUFDUVFkSkRRQWdBMEY4YWlBQk9nQUFJQUFnQVRvQUF5QUNRUWxKRFFBZ0FFRUFJQUJyUVFOeElnUnFJZ01nQVVIL0FYRkJnWUtFQ0d3aUFUWUNBQ0FESUFJZ0JHdEJmSEVpQkdvaUFrRjhhaUFCTmdJQUlBUkJDVWtOQUNBRElBRTJBZ2dnQXlBQk5nSUVJQUpCZUdvZ0FUWUNBQ0FDUVhScUlBRTJBZ0FnQkVFWlNRMEFJQU1nQVRZQ0dDQURJQUUyQWhRZ0F5QUJOZ0lRSUFNZ0FUWUNEQ0FDUVhCcUlBRTJBZ0FnQWtGc2FpQUJOZ0lBSUFKQmFHb2dBVFlDQUNBQ1FXUnFJQUUyQWdBZ0JDQURRUVJ4UVJoeUlnUnJJZ0pCSUVrTkFDQUJyU0lGUWlDR0lBV0VJUVVnQXlBRWFpRUJBMEFnQVNBRk53TVlJQUVnQlRjREVDQUJJQVUzQXdnZ0FTQUZOd01BSUFGQklHb2hBU0FDUVdCcUlnSkJIMHNOQUFzTElBQUxFUUFnQUNBQklBQW9BZ0FvQWh3UkF3QUxiQUVCZnlNQVFSQnJJZ1FrQUNBRElBUWdBQkFpSWdOQkFFRUFFS3dCSVFBZ0F4QVpHaUFBQkVBZ0FDQUFLQUlBS0FJMEVRQUFJZ0FnQUNnQ0FDZ0NLQkVBQUNJQUlBSkJCblJCd1A4QmNTQUJRVDl4Y3EwZ0FDa0NCRUtBZ0g2RGhEY0NCQXNnQkVFUWFpUUFDN0lEQVFKL0l3QkJNR3NpQmlRQUlBQWdBU0FDSUFRZ0JDZ0NBQ2dDREJFQUFDQUFLQUlBS0FMd0FSRUVBQ0FBSUFFZ0FpQUZJQVVvQWdBb0Fnd1JBQUFnQUNnQ0FDZ0M4QUVSQkFCQkFTRUhBa0FnQTBIYmZtcEJBMHNOQUNBRUlBUW9BZ0FvQXFnQkVRQUFCRUFnQlNBRktBSUFLQUtvQVJFQUFBMEJDMEVBSVFjTEFrQUNRQUpBSUFRZ0JDZ0NBQ2dDZUJFQUFCQ3dBa1VFUUNBRklBVW9BZ0FvQW5nUkFBQVFzQUpGRFFFTElBQWdBQ2dDQUNnQ1RCRUFBRVVOQVFzQ1FDQUVJQVFvQWdBb0FuZ1JBQUFRcndKRkJFQWdCU0FGS0FJQUtBSjRFUUFBRUs4Q1JRMEJDeUFBSUFBb0FnQW9BbGdSQUFCRkRRRUxBa0FDUUNBRUlBUW9BZ0FvQW5nUkFBQVF4Z0pGQkVBZ0JTQUZLQUlBS0FKNEVRQUFFTVlDUlEwQkN5QUFJQUFvQWdBb0FtUVJBQUFnQjNFTkFRd0NDeUFIUlEwQkN5QUFLQUlvSVFjZ0JpQUJLUUlJTndNSUlBWWdBU2tDQURjREFDQUhJQU1nQkNBRklBWVF6d01pQXcwQkN5QUdRU0JxSUFRUXFnSWdCa0VRYWlBRkVLb0NJQUFnQVNBQ0lBWkJJR29nQmtFUWFoREdCeUFHUVJCcUVCa2FJQVpCSUdvUUdScEJBQ0VEQ3lBR1FUQnFKQUFnQXdzSkFDQUFJQUUyQWdBTEdBQWdBQzBBQUVFZ2NVVUVRQ0FCSUFJZ0FCQ0dDQm9MQzJFQkFuOGpBRUVRYXlJR0pBQWdBMEgvLy8vL0IwY0VRRUVzRUNaQnlBQVF0d0VpQlNBQkVEa2dCU0FDRUV3Z0JTQURFRXdnQkVFQVRnUkFJQVVnQkJCTUN5QUFRWVFDYWlBR1FRaHFJQVVRT2lJQUVIMGdBQkErQ3lBR1FSQnFKQUFMOGdJQkFuOGdBQkNCQlNJQUlBRWdBU2dDQUNnQ0xCRUFBQ2tDQkVJdGlLZEJBWEVnQUMwQUFFSCtBWEZ5T2dBQUlBQWdBU0FCS0FJQUtBSXNFUUFBS1FJRVFpNklwMEVDY1NBQUxRQUFRZjBCY1hJNkFBQWdBQ0FCSUFFb0FnQW9BaXdSQUFBcEFnUkNMb2luUVFSeElBQXRBQUJCK3dGeGNqb0FBRUVJSVFJZ0FDQUJJQUVvQWdBb0Fpd1JBQUF0QUFwQkFuRUVmeUFDQlNBQklBRW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0IxRkJBM1FMSUFBdEFBQkI5d0Z4Y2pvQUFDQUFJQUVnQVNnQ0FDZ0NMQkVBQUNrQ0JFSXVpS2RCRUhFZ0FDMEFBRUh2QVhGeU9nQUFJQUFnQVNBQktBSUFLQUlzRVFBQUxRQUpRY0FBY1NBQUxRQUFRYjhCY1hJNkFBQWdBU0FCS0FJQUtBSXNFUUFBSVFNZ0FDQUFMUUFBSWdKQjN3RnhRU0FnQWtFQmRrRWdjU0FDUVI5eEcwRWdJQU1wQWdSQ2dJQ0FnSUNBZ0FTRFVCdHlPZ0FBSUFFZ0FTZ0NBQ2dDSEJFQUFDRUJJQUFnQUMwQUFFSC9BSEVnQVVFT1JrRUhkSEk2QUFBTENnQWdBQ0FCTmdLRUFRc0tBQ0FBS0FJRVFSOTJDeFFCQVg4akFFRVFheUlBSkFBZ0FFRVFhaVFBQ3hBQUlBSUVRQ0FBSUFFZ0FoQTlHZ3NMRUFBZ0FDQUJRWUNBZ0lCNGNqWUNDQXNRQUNBQVFnQTNBZ0FnQUVFQU5nSUlDeE1BSUFBcEFnUkNnSUNBZ0lIaUFJTkNBRklMSmdFQmZ5TUFRUkJySWdFa0FDQUJRUWhxSUFBUUV4QXhLQUlBSVFBZ0FVRVFhaVFBSUFBTFV3RUNmeU1BUVJCcklnSWtBQ0FBSUFKQkNHb1E3UVVoQXdKQUlBRVF3UUZGQkVBZ0F5QUJLQUlJTmdJSUlBTWdBU2tDQURjQ0FBd0JDeUFBSUFFb0FnQWdBU2dDQkJDMUJnc2dBa0VRYWlRQUlBQUxSUUVCZnlNQVFSQnJJZ1VrQUNBRklBSTJBZ3dnQlNBRU5nSUlJQVVnQlVFTWFoRDFBaUVDSUFBZ0FTQURJQVVvQWdnUTFRVWhBQ0FDRVBRQ0lBVkJFR29rQUNBQUM2TUJBUUovQWtBZ0FCQWZSUTBBSUFFZ0FoQytCaUFDUVh4cUlRUWdBQkFUSWdJZ0FCQWZhaUVGQTBBQ1FDQUNMQUFBSVFBZ0FTQUVUdzBBQWtBZ0FFRUJTQ0FBUWY4QVRuSU5BQ0FCS0FJQUlBSXNBQUJHRFFBZ0EwRUVOZ0lBRHdzZ0FrRUJhaUFDSUFVZ0FtdEJBVW9iSVFJZ0FVRUVhaUVCREFFTEN5QUFRUUZJSUFCQi93Qk9jZzBBSUFRb0FnQkJmMm9nQWl3QUFFa05BQ0FEUVFRMkFnQUxDd3dBSUFBZ0FSRFJDMEVCY3dzUEFDQUFJQUFvQWdBb0FnUTJBZ0FMQ2dBZ0FFRVVhaEQwQVF0K0FDQUFRUkJxSWdBZ0FTQUJLQUlBS0FJQUVRQUFLQUlFRUpVQlFmU1RFUkFRR2dKQUlBRWdBU2dDQUNnQ0FCRUFBQ2dDQ0FSQUlBQWdBU0FCS0FJQUtBSUFFUUFBS0FJSUVKVUJHZ3dCQ3lBQVFmYVRFUkFRR2dzZ0FrRUJUZ1JBUVFBaEFRTkFJQUJCK1pNUkVCQWFJQUZCQVdvaUFTQUNSdzBBQ3dzTEVnQWdBQ0FBS0FJQUtBSWNFUUFBUVJKR0N6RUJBWDhnQUVHVXNBODJBZ0FnQVVVRVFDQUFRUUEyQWdRZ0FBOExRUkFRUmlJQ0lBRVFyQW9nQUNBQ05nSUVJQUFMREFBZ0FDQUJFTXdMUVFGekMxQUJBWDRDUUNBRFFjQUFjUVJBSUFFZ0EwRkFhcTJHSVFKQ0FDRUJEQUVMSUFORkRRQWdBaUFEclNJRWhpQUJRY0FBSUFOcnJZaUVJUUlnQVNBRWhpRUJDeUFBSUFFM0F3QWdBQ0FDTndNSUM0b0JBUUYvSXdCQk1Hc2lCQ1FBSUFRZ0F6WUNMQUpBSUFBdEFKQUJCRUFnQUNBQklBSWdCRUVnYWtFQklBUkJMR29ReFFNaUFTQUVRUkJxRURBaUFoQ3JCQ0VBSUFJUU5pQUJFRFlNQVF0QkxCQW1JQUFRVlNBQ0lBRVFVU0lCSUFNUU9TQUFLQUtFQVNBRVFRaHFJQUVRT2lJQUVId2dBQkErSUFFb0FnUWhBQXNnQkVFd2FpUUFJQUFMQ1FBZ0FTQUNFSjhDQ3dzQUlBQkJqTXNVRUpzREN3Y0FJQUFRSDBVTHZnRUJBWDhqQUVFZ2F5SUdKQUFDUUNBREJFQWdCQ0FFS0FJQUtBSU1FUUFBSWdCRkJFQkJBQ0VEREFJTElBQWdBQ2dDQUNnQ0ZCRUFBQVJBSUFBZ0FDZ0NBQ2dDRkJFQUFDSUJJQUlnQlNBQktBSUFLQUs4QVJFSEFDSUREUUlMSUFZZ0FDQUFLQUlBS0FJQUVRQUFJZ0VwQWdnM0F3Z2dCaUFCS1FJQU53TUFJQUlnQUNBR0lBVVE0Z2doQXd3QkN5QUdJQUVwQWdnM0F4Z2dCaUFCS1FJQU53TVFJQVFnQWlBRklBWkJFR29RcEFJaEF3c2dCa0VnYWlRQUlBTUxEZ0FnQUMwQUFVRUlkRUdBREVZTENRQWdBQ0FCRU9JWkMxOEJBbjhqQUVFUWF5SUNKQUFnQWtFSWFpQUJFQ01RclFJZ0FDQUNRUWhxRUswSklRTUNRQ0FCRU1FQlJRUkFJQU1nQVNnQ0NEWUNDQ0FESUFFcEFnQTNBZ0FNQVFzZ0FDQUJLQUlBSUFFb0FnUVFqUWtMSUFKQkVHb2tBQ0FBQ3c4QUlBQW9BaFJCL3g5eFFmOGZSd3NUQUNBQUlBRVFsUU1nQUVFRWFpQUNFREVhQ3hrQVFmLy8vLzhESUFCSkJFQVFnZ0VBQ3lBQVFRSjBFQ1lMRGdBZ0FDQUJRUUowYWlnQzRBTUxHQUFnQUNBQklBQW9BZ0JxUVg5cVFRQWdBV3R4TmdJQUN4QUFJQUFnQVNBQ0lBSVFvQUVRbXdjTEZ3QWdBQ0FCUndSQUlBQWdBUkFUSUFFUUh4RHRCd3NMRVFBZ0FDQUJJQUVvQWdBb0FoUVJBUUFMRHdBZ0FDQUFLQUlBS0FJUUVRQUFDd3NBSUFCQmhNc1VFSnNEQytZTUFRaC9Jd0JCRUdzaUJDUUFJQVFnQURZQ0RBSkFJQUJCMHdGTkJFQkJzSkFTUWZDUkVpQUVRUXhxRU5rTEtBSUFJUUFNQVFzZ0JDQUFJQUJCMGdGdUlnWkIwZ0ZzSWdOck5nSUlRZkNSRWtHd2t4SWdCRUVJYWhEWkMwSHdrUkpyUVFKMUlRVUNRQU5BSUFWQkFuUkI4SkVTYWlnQ0FDQURhaUVBUVFVaEF3SkFBa0FDUUFOQUlBTkJMMFlOQVNBQUlBY2dBQ0FEUVFKMFFiQ1FFbW9vQWdBaUFXNGlBaUFCU1NJSUd5RUhJQU5CQVdvaEEwRUJRUWRCQUNBQUlBRWdBbXhHR3lBSUd5SUJSUTBBQ3lBQlFYeHFJZ05CQTBzTkJDQURRUUZyRGdNRUJBRUFDMEhUQVNFREEwQWdBQ0FEYmlJQklBTkpEUUlnQUNBQklBTnNSZzBCSUFBZ0EwRUthaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRU1haUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRVFhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRVNhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRVdhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRWNhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRWVhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRWthaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRW9haUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRXFhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRXVhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRTBhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRTZhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRThhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwSENBR29pQVc0aUFpQUJTUTBDSUFBZ0FTQUNiRVlOQVNBQUlBTkJ4Z0JxSWdGdUlnSWdBVWtOQWlBQUlBRWdBbXhHRFFFZ0FDQURRY2dBYWlJQmJpSUNJQUZKRFFJZ0FDQUJJQUpzUmcwQklBQWdBMEhPQUdvaUFXNGlBaUFCU1EwQ0lBQWdBU0FDYkVZTkFTQUFJQU5CMGdCcUlnRnVJZ0lnQVVrTkFpQUFJQUVnQW14R0RRRWdBQ0FEUWRnQWFpSUJiaUlDSUFGSkRRSWdBQ0FCSUFKc1JnMEJJQUFnQTBIZ0FHb2lBVzRpQWlBQlNRMENJQUFnQVNBQ2JFWU5BU0FBSUFOQjVBQnFJZ0Z1SWdJZ0FVa05BaUFBSUFFZ0FteEdEUUVnQUNBRFFlWUFhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwSHFBR29pQVc0aUFpQUJTUTBDSUFBZ0FTQUNiRVlOQVNBQUlBTkI3QUJxSWdGdUlnSWdBVWtOQWlBQUlBRWdBbXhHRFFFZ0FDQURRZkFBYWlJQmJpSUNJQUZKRFFJZ0FDQUJJQUpzUmcwQklBQWdBMEg0QUdvaUFXNGlBaUFCU1EwQ0lBQWdBU0FDYkVZTkFTQUFJQU5CL2dCcUlnRnVJZ0lnQVVrTkFpQUFJQUVnQW14R0RRRWdBQ0FEUVlJQmFpSUJiaUlDSUFGSkRRSWdBQ0FCSUFKc1JnMEJJQUFnQTBHSUFXb2lBVzRpQWlBQlNRMENJQUFnQVNBQ2JFWU5BU0FBSUFOQmlnRnFJZ0Z1SWdJZ0FVa05BaUFBSUFFZ0FteEdEUUVnQUNBRFFZNEJhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwR1VBV29pQVc0aUFpQUJTUTBDSUFBZ0FTQUNiRVlOQVNBQUlBTkJsZ0ZxSWdGdUlnSWdBVWtOQWlBQUlBRWdBbXhHRFFFZ0FDQURRWndCYWlJQmJpSUNJQUZKRFFJZ0FDQUJJQUpzUmcwQklBQWdBMEdpQVdvaUFXNGlBaUFCU1EwQ0lBQWdBU0FDYkVZTkFTQUFJQU5CcGdGcUlnRnVJZ0lnQVVrTkFpQUFJQUVnQW14R0RRRWdBQ0FEUWFnQmFpSUJiaUlDSUFGSkRRSWdBQ0FCSUFKc1JnMEJJQUFnQTBHc0FXb2lBVzRpQWlBQlNRMENJQUFnQVNBQ2JFWU5BU0FBSUFOQnNnRnFJZ0Z1SWdJZ0FVa05BaUFBSUFFZ0FteEdEUUVnQUNBRFFiUUJhaUlCYmlJQ0lBRkpEUUlnQUNBQklBSnNSZzBCSUFBZ0EwRzZBV29pQVc0aUFpQUJTUTBDSUFBZ0FTQUNiRVlOQVNBQUlBTkJ2Z0ZxSWdGdUlnSWdBVWtOQWlBQUlBRWdBbXhHRFFFZ0FDQURRY0FCYWlJQmJpSUNJQUZKRFFJZ0FDQUJJQUpzUmcwQklBQWdBMEhFQVdvaUFXNGlBaUFCU1EwQ0lBQWdBU0FDYkVZTkFTQUFJQU5CeGdGcUlnRnVJZ0lnQVVrTkFpQUFJQUVnQW14R0RRRWdBQ0FEUWRBQmFpSUJiaUlDSUFGSkRRSWdBMEhTQVdvaEF5QUFJQUVnQW14SERRQUxDMEVBSUFWQkFXb2lBQ0FBUVRCR0lnQWJJUVVnQUNBR2FpSUdRZElCYkNFRERBRUxDeUFFSUFBMkFnd01BUXNnQkNBQU5nSU1JQWNoQUFzZ0JFRVFhaVFBSUFBTGVRRUJmeU1BUVlBQ2F5SUZKQUFnQkVHQXdBUnhJQUlnQTB4eVJRUkFJQVVnQVNBQ0lBTnJJZ1JCZ0FJZ0JFR0FBa2tpQVJzUTNRRWFJQUFnQlNBQkJIOGdCQVVnQWlBRGF5RUJBMEFnQUNBRlFZQUNFT0lCSUFSQmdINXFJZ1JCL3dGTERRQUxJQUZCL3dGeEN4RGlBUXNnQlVHQUFtb2tBQXNuQVFGL0l3QkJFR3NpQVNRQUlBRkJDR29nQUNnQ0JCQXhLQUlBSVFBZ0FVRVFhaVFBSUFBTHFRRUJCWDhnQUVIb0FHb2hCZ05BQWtBZ0JpQUJFQzhpQkNnQ0RDSUZRV3RxSWdkQkMwc05BQUpBQWtBQ1FBSkFBa0FnQjBFQ2F3NEtCQVFGQlFVRUJBQUZBd0VMSUFRUXZBSkJBRXdOQWtFQUlRRU1BUXNnQWlBRlJ3MEJJQVJCQUJBdklBTkdEd3NEUUNBQUlBUWdBUkF2SUFJZ0F4Q05Ba1VFUUNBQlFRRnFJZ0VnQkJDOEFrZ05BUXdDQ3d0QkFTRUlDeUFJRHdzZ0FDQUJFTEFCSVFFTUFRc0xJQUlnQlVZTEVnQWdBQ0FCTmdLVUFTQUFRUUU2QUx3QkN4Z0JBWDlCQVNFQklBQVFvUU1FZnlBQkJTQUFFT1lCQ3dzSUFDQUFRWUFCYWdzWUFDQUFJQUVvQWdBMkFnQWdBQ0FCS0FJRU5nSUVJQUFMRUFBZ0FDZ0NCQ0FBS0FJQWEwRVliUXNtQVFGL0l3QkJFR3NpQWlRQUlBQWdBaUFCRUdraUFCQzRHU0FBRUNBYUlBSkJFR29rQUF2cEFRRURmeUFBSUFBb0FpaEJBV28yQWlnZ0FDQUFLQUlzSUFGcU5nSXNJQUVnQUNnQ0VDSUNhaUlFSUFBb0FnQWlBMDBFUUNBQUlBQW9BZ2dpQVNBRWFpQUJRWDl6Y1RZQ0VDQUFLQUlZSUFKcUR3c2dBQ2dDRENBQmFpSUNJQU5MQkVBZ0FoQW1JZ0VnQUNnQ0dDQUNJQU5xUVg5cUlBTnVFSmtCR2lBQUlBRTJBaGdnQUNBQUtBSUFOZ0lRSUFFZ0FDZ0NER29QQ3dKQUlBQW9BaFFpQWdSQUlBQWdBaWdDQURZQ0ZBd0JDeUFERUNZaEFnc2dBQ0FDSUFBb0FoaEJBUkNaQVRZQ0dDQUFJQUFvQWdnaUF5QUJJQUFvQWd3aUFHcHFJQU5CZjNOeE5nSVFJQUFnQW1vTEZ3QWdBQ2tDR0VLQWdJQ0E4QUdEUW9DQWdJRHdBVklMQ2dBZ0FDZ0NERUYvUndzTkFDQUFLQUlBSUFFb0FnQkdDMm9CQW44Q1FDQUFFQjhpQWlBQkVCOUhEUUFnQUJBVElRTWdBUkFUSVFFQ1FDQUFFTUVCUlFSQUlBSU5BVUVCRHdzZ0F5QUJJQUlRaXdkRkR3c0RRQ0FETFFBQUlBRXRBQUJIRFFFZ0FVRUJhaUVCSUFOQkFXb2hBeUFDUVg5cUlnSU5BQXRCQVE4TFFRQUxFZ0FnQUNrQ0JFS0FnSUNBeGdHRFFnQlNDeFFBSUFCQnpBMDJBZ0FnQUVFUWFoRGJBU0FBQ3dNQUFRdklDUUlFZndSK0l3QkI4QUJySWdVa0FDQUVRdi8vLy8vLy8vLy8vd0NESVFvQ1FBSkFJQUZDZjN3aUMwSi9VU0FDUXYvLy8vLy8vLy8vL3dDRElna2dDeUFCVksxOFFuOThJZ3RDLy8vLy8vLy92Ly8vQUZZZ0MwTC8vLy8vLy8rLy8vOEFVUnRGQkVBZ0EwSi9mQ0lMUW45U0lBb2dDeUFEVksxOFFuOThJZ3RDLy8vLy8vLy92Ly8vQUZRZ0MwTC8vLy8vLy8rLy8vOEFVUnNOQVFzZ0FWQWdDVUtBZ0lDQWdJREEvLzhBVkNBSlFvQ0FnSUNBZ01ELy93QlJHMFVFUUNBQ1FvQ0FnSUNBZ0NDRUlRUWdBU0VEREFJTElBTlFJQXBDZ0lDQWdJQ0F3UC8vQUZRZ0NrS0FnSUNBZ0lEQS8vOEFVUnRGQkVBZ0JFS0FnSUNBZ0lBZ2hDRUVEQUlMSUFFZ0NVS0FnSUNBZ0lEQS8vOEFoWVJRQkVCQ2dJQ0FnSUNBNFAvL0FDQUNJQUVnQTRVZ0FpQUVoVUtBZ0lDQWdJQ0FnSUIvaFlSUUlnWWJJUVJDQUNBQklBWWJJUU1NQWdzZ0F5QUtRb0NBZ0lDQWdNRC8vd0NGaEZBTkFTQUJJQW1FVUFSQUlBTWdDb1JDQUZJTkFpQUJJQU9ESVFNZ0FpQUVneUVFREFJTElBTWdDb1JRUlEwQUlBRWhBeUFDSVFRTUFRc2dBeUFCSUFNZ0FWWWdDaUFKVmlBSklBcFJHeUlIR3lFS0lBUWdBaUFIR3lJTFF2Ly8vLy8vL3orRElRa2dBaUFFSUFjYklnSkNNSWluUWYvL0FYRWhDQ0FMUWpDSXAwSC8vd0Z4SWdaRkJFQWdCVUhnQUdvZ0NpQUpJQW9nQ1NBSlVDSUdHM2tnQmtFR2RLMThweUlHUVhGcUVQY0JJQVVwQTJnaENTQUZLUU5nSVFwQkVDQUdheUVHQ3lBQklBTWdCeHNoQXlBQ1F2Ly8vLy8vL3orRElRRWdDQVIrSUFFRklBVkIwQUJxSUFNZ0FTQURJQUVnQVZBaUJ4dDVJQWRCQm5TdGZLY2lCMEZ4YWhEM0FVRVFJQWRySVFnZ0JTa0RVQ0VESUFVcEExZ0xRZ09HSUFOQ1BZaUVRb0NBZ0lDQWdJQUVoQ0VFSUFsQ0E0WWdDa0k5aUlRaEFTQUNJQXVGSVF3Q2ZpQURRZ09HSWdNZ0JpQUlheUlIUlEwQUdpQUhRZjhBU3dSQVFnQWhCRUlCREFFTElBVkJRR3NnQXlBRVFZQUJJQWRyRVBjQklBVkJNR29nQXlBRUlBY1E3UVFnQlNrRE9DRUVJQVVwQXpBZ0JTa0RRQ0FGS1FOSWhFSUFVcTJFQ3lFRElBRkNnSUNBZ0lDQWdBU0VJUWtnQ2tJRGhpRUNBa0FnREVKL1Z3UkFJQUlnQTMwaUFTQUpJQVI5SUFJZ0ExU3RmU0lEaEZBRVFFSUFJUU5DQUNFRURBTUxJQU5DLy8vLy8vLy8vd05XRFFFZ0JVRWdhaUFCSUFNZ0FTQURJQU5RSWdjYmVTQUhRUVowclh5blFYUnFJZ2NROXdFZ0JpQUhheUVHSUFVcEF5Z2hBeUFGS1FNZ0lRRU1BUXNnQWlBRGZDSUJJQU5VclNBRUlBbDhmQ0lEUW9DQWdJQ0FnSUFJZzFBTkFDQUJRZ0dESUFOQ1A0WWdBVUlCaUlTRUlRRWdCa0VCYWlFR0lBTkNBWWdoQXdzZ0MwS0FnSUNBZ0lDQWdJQi9neUVDSUFaQi8vOEJUZ1JBSUFKQ2dJQ0FnSUNBd1AvL0FJUWhCRUlBSVFNTUFRdEJBQ0VIQWtBZ0JrRUFTZ1JBSUFZaEJ3d0JDeUFGUVJCcUlBRWdBeUFHUWY4QWFoRDNBU0FGSUFFZ0EwRUJJQVpyRU8wRUlBVXBBd0FnQlNrREVDQUZLUU1ZaEVJQVVxMkVJUUVnQlNrRENDRURDeUFEUWoyR0lBRkNBNGlFSWdRZ0FhZEJCM0VpQmtFRVM2MThJZ0VnQkZTdElBTkNBNGhDLy8vLy8vLy9QNE1nQW9RZ0I2MUNNSWFFZkNBQklBRkNBWU5DQUNBR1FRUkdHeUlCZkNJRElBRlVyWHdoQkFzZ0FDQUROd01BSUFBZ0JEY0RDQ0FGUWZBQWFpUUFDeEVBSUFBZ0FTQUFLQUlBS0FJc0VRTUFDNTBCQVFSL0l3QkJFR3NpQWlRQUlBQW9BZ2doQkNBQUtBSUVJUVVnQWlBQVFSQnFJZ01RRmtFQ1FRRWdCQnRxSUFWQkFFZHFRUkIwSUFBb0FneHlOZ0lNSUFFZ0FrRU1haEJCSUFBb0FnZ0VRQ0FCSUFCQkNHb1FSd3NnQUVFRWFpSUFLQUlBQkVBZ0FTQUFFRWNMUVFBaEFDQURFQlpCQUVvRVFBTkFJQUVnQXlBQUVCRVFSeUFBUVFGcUlnQWdBeEFXU0EwQUN3c2dBa0VRYWlRQUN3d0FJQUFnQVNnQ0FEWUNBQXNKQUNBQUlBRTJBbWdMY1FFRGZ5TUFRUkJySWdNa0FDQURJQUUyQWd3Z0FnUkFJQUJCT0dvaUJDQUVJQUVRWWlBQ0VMRUJJUVZCQUNFQklBTVFNQ0VBSUFKQkFFb0VRQU5BSUFBZ0EwRU1haEJISUFGQkFXb2lBU0FDUncwQUN3c2dCQ0FGSUFCQkFCRDFBeUVCSUFBUU5nc2dBMEVRYWlRQUlBRUxDd0FnQUNBQlFRRVFtd2dMSmdFQmZ3SkFJQUFnQVJEbEJrVU5BQ0FBSUFFUTNneEZEUUFnQUNBQkVPVVZJUUlMSUFJTDFRRUJBbjhqQUVFUWF5SUZKQUFnQlNBQU5nSU1Ba0FnQUFSQUlBQWdBQ2dDQUNnQ0dCRUFBQ0lBQkVBZ0FDZ0NhRVVOQWd0QnFBRVFSaUlFRVAwRElnQWdCQ2dDQUNnQ3ZBRVJBQUFnQlVFTWFoRGNBU0FES0FJSURRRWdBeUFGS0FJTUlnUWdCQ2dDQUNnQ0FCRUFBQ0lFS1FJQU53SUFJQU1nQkNrQ0NEY0NDQXdCQzBHb0FSQkdFUDBESVFBTElBQWdBU0FBS0FJQUtBSzRBUkVCQUNBREtBSUlCRUFnQUNBRElBQW9BZ0FvQWdRUkFRQUxJQUFnQWlBQUtBSUFLQUowRVFFQUlBQVF4QkFoQUNBRlFSQnFKQUFnQUFzUUFDQUFRUnhxSUFFUUVTZ0NBQkFUQ3hnQkFYOUJBU0VCSUFBUTd3VUVmeUFCQlNBQUVJTURDd3NOQUNBQUtBSUlLQUlBSUFCR0N3MEFJQUF0QUFKQkVIRkJCSFlMSXdBZ0FTMEFCRUVPUmdSQUlBQWdBVUhNQUdvUXFna1BDeUFBSUFFUXVnNFFJaG9MREFBZ0FDQUJRUlJxRU1vQkN5QUJBWDhnQUNnQ0FDRUNJQUFnQVRZQ0FDQUNCRUFnQUJBbElBSVE1UWtMQ3hzQkFYOGdBQ2dDRENnQ0JDSUJCRUFnQUNnQ0FDQUJFUVVBQ3dzSkFDQUFJQUVRWnhvTENnQWdBQzBBQ0VFSGRnc3VBUUYvUVFFaEFTQUFRUVlnQUNnQ0FDZ0NzQUVSQXdBRWZ5QUJCU0FBUVFjZ0FDZ0NBQ2dDc0FFUkF3QUxDeElBSUFCQkF5QUFLQUlBS0FLd0FSRURBQXNRQUNBQUtBSUVRVDl4UVh0cVFRSkpDd2NBSUFBUUdSb0xPQUVCZnlBQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQUVDVWlBQzBBQkFSQUlBQW9BZ0FhQ3lBQkJFQWdBQ2dDQUJvZ0FSQXFDd3NMRHdBZ0FDQUFLQUlBUVJScU5nSUFDeHNBSUFKRkJFQWdBQ0FCUmc4TElBQW9BZ1FnQVNnQ0JCQjZSUXNPQUNBQUlBRWdBUkNnQVJES0JRc1NBQ0FBRUJzb0FnQWdBQ2dDQUd0QkFuVUxEUUFnQUNnQ0FDQUFLQUlFUmd0cEFRRi9JQUlvQWdSQnNBRnhJZ0pCSUVZRVFDQUJEd3NDUUNBQ1FSQkhEUUFnQUMwQUFDSUNRVlZxSWdOQkFrc2dBMEVCYTBWeVJRUkFJQUJCQVdvUEN5QUNRVEJISUFFZ0FHdEJBa2h5RFFBZ0FDMEFBVUVnY2tINEFFY05BQ0FBUVFKcUlRQUxJQUFMZndJQ2Z3RitJd0JCRUdzaUF5UUFJQUFDZmlBQlJRUkFRZ0FNQVFzZ0F5QUJJQUZCSDNVaUFtb2dBbk1pQXExQ0FDQUNaeUlDUWRFQWFoRDNBU0FES1FNSVFvQ0FnSUNBZ01BQWhVR2VnQUVnQW11dFFqQ0dmQ0FCUVlDQWdJQjRjYTFDSUlhRUlRUWdBeWtEQUFzM0F3QWdBQ0FFTndNSUlBTkJFR29rQUF0WkFRUi9JQUJCNkFCcUlRTURRQUpBQWtBZ0F5QUJFQzhpQkNnQ0RFRnRhaUlDUVExTERRQkJBU0FDZEVHd3pBQnhEUUZCQVNBQ2RFR1BFSEZGRFFBZ0JDZ0NCQ0VGQ3lBRkR3c2dBQ0FCRUxBQklRRU1BQUFMQUFzSkFDQUFRUkJxRUJZTEVnQWdBQ0FBUVNBUW9nSWdBU0FDRVBNRUN3NEFJQUFnQVVHVUFXb1EvQU1hQ3hBQUlBQWdBVUVCSUFKMElBTVEwZ0VMaXdFQUlBY2dCRUVDZEdvaUJ5Z0NBQ0FHSUFJZ0JCQ0JEa0VDZEdvb0FnQVFrQWtnQUNBRUlBQW9BZ0FvQWhRUkF3QWdBU0FDSUFNZ0JDQUZJQWNvQWdBUWtBY2dBQ0FCSUFJZ0F5QUVJQWNvQWdBZ0FDZ0NBQ2dDR0JFQ0FDQUNRUWhISUFGQnJBSklja1VFUUNBSEtBSUFRUUU2QUJBUEN5QUJRZTRBUmdSQUlBY29BZ0JCQVRvQUVRc0xDUUFnQUJBV1FYOXFDdzBBSUFBb0FnUW9BZ0FvQWdRTFp3QWdBRUVBTmdJQUlBQWdBQ2tDQkVLQWdINkROd0lFSUFBZ0FDa0NCRUwvLy8vL3VHQ0ROd0lFSUFBZ0FDa0NCRUwvLy8vLy81OS9nemNDQkNBQUlBQXBBZ1JDLy8vLy8vLy9nSGlETndJRUlBQWdBQ2tDQkVMLy8vLy9aNE0zQWdRZ0FCREREZ3NOQUNBQktBSUFJQUlvQWdCR0N3OEFJQUFvQWdoQmdQZy9jVUVBUndzdUFRRi9RUUVoQVNBQVFRUWdBQ2dDQUNnQ3NBRVJBd0FFZnlBQkJTQUFRUVVnQUNnQ0FDZ0NzQUVSQXdBTEN5Z0JBWDhnQUNnQ0FDSUNRUU5NQkVBZ0FDQUNRUUZxTmdJQUlBQWdBa0VDZEdvZ0FUWUNCQXNMTmdBZ0FFSUFOd0lJSUFCQkFEb0FCeUFBSUFFNkFBWWdBRUVBT2dBRklBQkJBVG9BQkNBQVFjd05OZ0lBSUFCQkVHb1Frd0VhQ3hJQUlBQkJDRFlDQ0NBQVFRQTJBZ0FnQUFzT0FDQUFFT29CSUFBUWpnc2dBQXNuQVFGL0lBSkJBRTRFZnlBQUtBSUlJQUpCL3dGeFFRRjBhaThCQUNBQmNVRUFSd1VnQXdzTEpBRUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBQ0FCSUFJUTVBc2dBMEVRYWlRQUN3b0FJQUJCVUdwQkNra0xUUUVDZnlNQVFSQnJJZ01rQUVFc0VDWkI0UUVRdHdFaUJDQUFJQUZCQUJCMEVEa2dCQ0FBSUFKQkFCQjBFRGtnQUNnQ2hBRWdBMEVJYWlBRUVEb2lBQkI4SUFBUVBpQURRUkJxSkFBTGZBRUNmeU1BUVJCcklnY2tBRUVzRUNaQlBoQzNBU0lHSUFJUU9TQUdJQUVRT1FKQUlBTWdBQ0FDRUxZRUVKTU1JZ0ZGRFFBZ0JpQUJFRXdnQVVFQ2NRUkFJQVlnQlJCTUN5QUJRUWh4UlEwQUlBWWdBQ0FFUVFBUWRCQTVDeUFBS0FLRUFTQUhRUWhxSUFZUU9pSUFFSHdnQUJBK0lBZEJFR29rQUF0UEFRRi9RZlFBRUVZaUJDQUFJQUVRb3dZaEFDQUVJQVFvQWdBb0FvUUJFUUFBSWdFZ0FTa0NCRUpBZzBJQ2hEY0NCQ0FFSUFJZ0JDZ0NBQ2dDQkJFQkFDQURCRUFnQUVFQk9nQndDeUFBQ3ljQkFYOGpBRUVRYXlJQkpBQWdBVUVJYWlBQUVPY0RFREVvQWdBaEFDQUJRUkJxSkFBZ0FBc1BBQ0FBSUFBb0FnQW9BZ3dSQUFBTEhBQWdBRUVhVFFSQUlBQkJBblJCNkxJUGFpZ0NBQThMUVpTdkR3c09BQ0FBTFFBSVFjQUFjVUVHZGd1b0FRRUNmd0pBSUFBb0FnUW9Ba3dRSkEwQUlBQW9BZ1FRTXlFRElBQW9BZ1FoQWdKQUFrQWdBd1JBSUFJb0FoQkJyQUpJRFFFTElBSVFNeUVESUFBb0FnUWhBaUFERFFFZ0FpZ0NFQ0FCVGcwQkN5QUNMUUFFQkVBZ0FDZ0NCQ0lCSUFCQkRHcEI1TWdKSUFBb0FpUkJsYjRKUVFBZ0FTZ0NBQ2dDcEFFUkFnQUxJQUFRMkFFUEN5QUNFRE5GRFFBZ0FDZ0NCQ2dDRUVHc0FrZ05BQ0FBRU5rQkN5QUFLQUlvQ3hJQUlBQVFHeWdDQUNBQUtBSUFhMEVEZFFzSkFDQUFRUVJxRUNVTEVRQWdBQ0FCSUFFb0FnQW9BaHdSQVFBTEVRQWdBQ0FCSUFFb0FnQW9BaGdSQVFBTEV3QWdBQ0FCSUFJZ0FDZ0NBQ2dDREJFSEFBdEVBZ0ovQVg0Z0FDQUJOd053SUFBZ0FDZ0NDQ0lDSUFBb0FnUWlBMnVzSWdRM0EzZ2dBVkFnQkNBQlYzSkZCRUFnQUNBRElBR25hallDYUE4TElBQWdBallDYUF0SkFRSi9Jd0JCRUdzaUF5UUFRU3dRSmtINUFSQzNBU0lDSUFFUXdnSVFPU0FBS0FLRUFTQURRUWhxSUFJUU9pSUNFSHdnQWhBK0lBRWdBQ2dDaEFFUTF3VWdBMEVRYWlRQUM0b0JBUUovSXdCQkVHc2lBeVFBQWtBZ0FrVUVRQ0FBSUFFUTJSUU1BUXNDUUNBQkJFQWdBQ2dDSUNBQlJ3MEJDeUFBS0FJa0lnUkZEUUFnQWlBRUlBUVFvQUZCQVdvUTFBVkZEUUVMSUFBZ0FqWUNKQ0FBSUFFMkFpQWdBQzBBS0VVTkFDQUFJQU1nQWhCcElnRVF3UWdoQWlBQkVDQWFJQUFnQWlBQUtBSWdFSjRNQ3lBRFFSQnFKQUFMSVFBZ0FTQUJJQUlRb3dNaUFBUkFJQUFnQXlBQUtBSUFLQUlFRVFFQUN5QUFDd2tBSUFBZ0FSRGdCZ3NVQUNBQUtBSUFJZ0JGQkVCQkFBOExJQUFRRXd2L0JRRUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBQkNIQlEwQUlBQW9BaXhCN2dCR0RRQWdBU0FDUmcwRkFrQkJBU0FDZEVHR0puRkZJQUpCREV0QkFYSnlEUUJCL0F3Z0FVRi9haUlFUWY4ZmNYWkJBWEVnQkVFTFMzSU5BRUVCSVFRZ0EwR3ZCRXdFUUNBRFFkSitha0VEU1EwR0lBTkJmV29pQlVFRVN3UkFJQU5Cd3dOSERRSU1Cd3NnQlVFQmF3NERBUUVCQmdzZ0EwSFFlMm9pQTBFU1N3MEFRUUVnQTNSQndiY2ZjUTBGQ3dKQUFrQWdBRUhLL3dnUWpRRU5BQ0FBUWFLQUNSQ05BUTBBSUFCQno0QUpFSTBCRFFBZ0FFSDlnQWtRalFFTkFDQUFRYXVCQ1JDTkFRMEFJQUJCOHY4SUVJMEJEUUFnQUVIWmdRa1FqUUVOQUNBQVFZbUNDUkNOQVVVTkFRc2dBQ0FCSUFJUXZ3Z05CaUFBSUFFZ0FoQytDQTBHSUFBZ0FTQUNFTHNJRFFZZ0FDQUJJQUlRdUFnTkJrRUJJUVFnQUNBQklBSVF0Z2dOQlNBQlFReEhRUUZ5RFFGQkFDRUVJQUpCZjJvaUFFRUpUdzBGUVlFRElBQkIvd054ZGtFQmNROExJQUpCZjJvaUFrRUtTdzBBUVFBaEJBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQkFXc09DZ0FHQ3dzTENRTUNCUVFCQ3lBQlFRdExEUVpCQVNFRVFRRWdBWFFpQWtHR0huRU5DaUFDUWNBQmNRMEpJQUZCQTBjTkJpQUFRZEdDQ1JDTkFROExJQUZCZjJvaUFVRUxTdzBGUVFFaEJBSkFJQUZCQVdzT0N3WUFCZ1lORFFvS0JnWU1DZ3NnQUVIUmdna1FqUUVOQ1F3TEN5QUJRWHBxSWdGQkJrc05CRUVCSVFRQ1FBSkFJQUZCQW1zT0JRQUtCZ1lNQVFzZ0FDZ0NMRUdQQTBvTkNRd0xDd3dMQ3lBQlFYcHFJZ0ZCQmtzTkEwRUJJUVFDUUNBQlFRRnJEZ1lFQ0FRRUJBb0FDd3dLQ3lBQlFYcHFJZ0ZCQlVzTkFrRUJJUVFDUUNBQlFRSnJEZ1FIQndjSEFBc01DUXNnQVVGNmFpSUJRUVJMRFFGQkFTRUVBa0FnQVVFQmF3NEVBZ1lDQmdBTERBZ0xJQUZCZldvaUFVRUVUUTBCQzBFQUR3c0NRQ0FCUVFGckRnUURBd1lHQUFzZ0FFSFJnZ2tRalFFUEN5QUJRWDV4UVFaSERRRU1CQXNnQUVHNWdna1FqUUVoQkFzZ0JBOExRUUVQQzBFQUR3c2dBRUc1Z2drUWpRRUxDZ0FnQUMwQUNFRUJjUXNLQUNBQUlBRVF0Z0lhQ3lRQUlBQkJDMDhFZnlBQVFSQnFRWEJ4SWdBZ0FFRi9haUlBSUFCQkMwWWJCVUVLQ3dzcEFRRi9Ba0FnQVVFSVJnMEFRUUVoQXlBQVFZTUJTQTBBSUFJb0FnQkZJQUZCQkVaeUR3c2dBd3NIQUNBQUVDQWFDd2tBSUFBZ0FSRENEZ3NYQUNBQUlBRkhCRUFnQUNBQkVCTWdBUkFmRUxzT0N3c01BQ0FBTXdFWVF2Ly9BMUlMTUFFQmZ5TUFRUkJySWdJa0FDQUFLQUlBSVFBZ0FpQUJFTlVLSUFBZ0FoQVRFQklhSUFJUUlCb2dBa0VRYWlRQUN4Z0JBWDlCQVNFQklBQVF2UTRFZnlBQkJTQUFFTHdPQ3d2YUFRRUJmeUFBSUFBb0FneEJBV29pQWpZQ0RDQUJJQUlnQVNnQ0FDZ0NPQkVCQUFKQUFrQWdBQzBBRVEwQUlBRWdBU2dDQUNnQ0hCRUFBQTBBUVFBaEFpQUFJQUFRd1FJUUVTZ0NBQ0FCSUFFb0FnQW9BZ3dSQUFBUXRBa05BUXNDUUNBQUxRQVFSUTBBSUFBUUdFVU5BQ0FBRU1FQ1FRRklEUUJCQUNFQ0lBQkJBQkFSS0FJQUlBRWdBU2dDQUNnQ0RCRUFBQkMwQ1EwQklBQVF3UUpCQWtnTkFDQUFRUUVRRVNnQ0FDQUJJQUVvQWdBb0Fnd1JBQUFRdEFrTkFRc2dBQ0FBRU1FQ0VCRW9BZ0FnQVNBQUxRQVJFS1lISVFJTElBSUxUd0FnQUNBQkVMVUpJQUJCNk5BUE5nSUFJQUJCRkdwQkFFRUFRUUZCQUVFQVFRQVFSU0VCSUFBZ0F6b0FhQ0FBUWV3QWFoQ25CeG9nQUVGL05nSjhJQUJDQURjQ2RDQUJJQUlRandFZ0FBdFBBQ0FESUFFMkFnZ2dBMElBTndJQUlBSWdBellDQUNBQUtBSUFLQUlBQkVBZ0FDQUFLQUlBS0FJQU5nSUFDeUFBRUNVb0FnQWdBaWdDQUJEdkRTQUFFQnNpQUNBQUtBSUFRUUZxTmdJQUMyc0JBWDhDZjBFQklBRWdBU2dDQUNnQ0hCRUFBQ0FDUmcwQUdrRUFJQUVnQVNnQ0FDZ0NIQkVBQUVFUFJ3MEFHa0VBSUFFb0FrQWlBUkEzUlEwQUdnSkFBMEFnQUNBQklBTVFPQ2dDQUNBQ0VPOENEUUVnQTBFQmFpSURJQUVRTjBrTkFBdEJBQThMUVFFTEN5a0FJQUFvQWdSQlAzRkJmR29pQUVFV1RRUkFRWUdBamdNZ0FFSC8vLzhEY1haQkFYRVBDMEVBQ3lrQUlBQW9BZ1JCUDNGQmZXb2lBRUVWVFFSQVFZR0E0d0VnQUVILy8vOEJjWFpCQVhFUEMwRUFDMm9CQW44akFFRVFheUlFSkFBZ0JFRUFOZ0lNSUFCQkRHb2dCRUVNYWlBREVJRUNJQUVFUUNBQUtBSVFHaUFCRUlJQ0lRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFQ2RHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUVDZEdvMkFnQWdCRUVRYWlRQUlBQUxJUUFnQUNBQUtBSUlRWDlxTmdJSUlBQkJFR29pQUNBQUtBSUVRWHhxRU13RkN4SUFJQUFvQWdBaUFBUkFJQUFRc3dzYUN3c1JBQ0FBSUFFb0FnQVFzd3MyQWdBZ0FBdHNBUU4rSUFBZ0FrSWdpQ0lESUFGQ0lJZ2lCSDVDQUh3Z0FrTC8vLy8vRDRNaUFpQUJRdi8vLy84UGd5SUJmaUlGUWlDSUlBSWdCSDU4SWdKQ0lJaDhJQUVnQTM0Z0FrTC8vLy8vRDROOElnRkNJSWg4TndNSUlBQWdCVUwvLy8vL0Q0TWdBVUlnaG9RM0F3QUxSZ0VCZnlBQklBSnNJUVFDUUNBREtBSk1RWDlNQkVBZ0FDQUVJQU1RaGdnaEFBd0JDeUFBSUFRZ0F4Q0dDQ0VBQ3lBQUlBUkdCRUFnQWtFQUlBRWJEd3NnQUNBQmJndXRBUUVCZnlNQVFTQnJJZ1FrQUNBRUlBRTJBaHdDUUNBQUxRQ1FBUVJBSUFCQjBRQWdBaUFFUVJCcVFRRWdCRUVjYWhERkF5SUFJQU1RcXdRaEFTQUFFRFlNQVF0QkxCQW1JQUFRVlNBQ1FkRUFFRkVpQWlBQkVEbEJBQ0VCSUFNUUZrRUFTZ1JBQTBBZ0FpQURJQUVRRVNnQ0FCQk1JQUZCQVdvaUFTQURFQlpJRFFBTEN5QUFLQUtFQVNBRVFRaHFJQUlRT2lJQUVId2dBQkErSUFJb0FnUWhBUXNnQkVFZ2FpUUFJQUVMc0FFQkJIOGpBRUVRYXlJREpBQkJNa0VySUFJYklRVWdBRUVnRU1RRElRUWdBYndoQmdKQUlBSkZCRUFnQUVFV0lBVWdCQ0FHRUprSUlnSU5BUXRCTEJBbUlnSWdBQkJWSUFRZ0JSQlJJUVFnQXlBQ05nSU1JQVFnQmhCTUlBQkJrQUpxSUFOQkNHb2dCQkE2SWdJUWZTQUNFRDRnQTBFV05nSUVJQUJCdEFKcUlBTkJCR29RUHlBRFFReHFFRWNnQUVIb0FHb2dBeWdDREJDTUFTQURLQUlNS0FJRUlRSUxJQU5CRUdva0FDQUNDN2tCQVFOL0l3QkJFR3NpQVNRQUlBRkJGRFlDREFKQUlBQkIzQUpxSWdJZ0FVRU1haEEvRUJaRkJFQkJMQkFtSWdNZ0FCQlZRUUJCRkJCUkdpQUJJQU0yQWd3Z0FVRVVOZ0lJSUFJZ0FVRUlhaEEvSUFGQkRHb1FSeUFBUVpBQ2FpQUJRUWhxSUFFb0Fnd1FPaUlDRUgwZ0FoQStJQUJCNkFCcUlBRW9BZ3dRakFFZ0FTZ0NEQ0VBREFFTElBRkJGRFlDQ0NBQklBSWdBVUVJYWhBL0VKQUJLQUlBSWdBMkFnd0xJQUFvQWdRaEFDQUJRUkJxSkFBZ0FBc3hBUUYvSUFBUXhRUWdBQ2dDQUFSQUlBQWdBQ2dDQUJEK0N5QUFFQnNhSUFBb0FnQWhBU0FBRUxjQ0dpQUJFQ29MQzRRQkFRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUNJQUJCbUFScUlnRWdBa0VNYWhEckREWUNDQ0FDRUlVRU5nSUFBa0FnQWtFSWFpQUNFSWdCQkVBZ0FTQUNRUXhxRU1jREtBSUFJUUFNQVFzZ0FFRTRhaUlBSUFJb0Fnd1FRaUFBSUFJb0Fnd1Fud3doQUNBQklBSkJER29ReHdNZ0FEWUNBQXNnQWtFUWFpUUFJQUFMSEFBZ0FFR1UyeEUyQWdBZ0FFRWNhaENJQnlBQVFSQnFFRFlnQUF1RUFRRUVmeU1BUVJCcklnTWtBQ0FEUVF4cUlRUURRQ0FFSUFFdEFBQWlCVG9BQUFKL0lBUkJBV29nQWtFQmFpSUNRUVJIRFFBYUlBQWdBeWdDREJCTVFRQWhBaUFEUVF4cUN5RUVJQUZCQVdvaEFTQUZEUUFMSUFKQkFVNEVRQ0FDUVFOTUJFQWdCRUVBUVFRZ0Ftc1EzUUVhQ3lBQUlBTW9BZ3dRVEFzZ0EwRVFhaVFBQ3c4QUlBRWdBaUFBS0FJSVFYOFFlQXNLQUNBQUlBRTJBcFFCQ3pVQkFuOGdBQ2dDQUNJREtBSUFJZ0pCZ0FoTUJFQWdBQ2dDQkNnQ0FDRUFJQU1nQWtFQmFqWUNBQ0FBSUFKcUlBRTZBQ0FMQ3hBQUlBQW9BZ1FnQUNnQ0FHdEJCWFVMR0FBZ0FFRjdhaUlBUVFaTkJFQWdBRUVCY1VVUEMwRUFDd01BQUFzZkFDQUFLUUlZUW9DQWdJQ0FnSUQrL3dDRFFvQ0FnSUNBZ0lEKy93QlNDdzRBSUFBdkFRcEJnQTl4UVFCSEN4a0FJQUFRd1FFRVFDQUFJQUVRdkFFUEN5QUFJQUVRMUFFTEVnQWdBQkFqS0FJQUlBQW9BZ0JyUVFKMUN5a0FJQUFnQUNrQ0JFTC8vLytIZjRNM0FnUWdBQkREQWlBQUlBQXBBZ1JDLy8rQitGK0ROd0lFQ3hNQUlBQWdBQ2dDQUVHQWdJRCtlWEUyQWdBTEN3QWdBQ0FCSUFJUXhBSUxGd0FnQUNnQ1BDSUFSUVJBUVFBUEN5QUFFR0JCQVVvTERBQWdBQ2dDUENBQkVQVUpDNEVDQVFGL0FrQWdBU0FCS0FJQUtBSndFUUFBUlEwQUFuOENRQ0FBS0FJVUlnSkJBMFlFZjBFQklBRWdBU2dDQUNnQ0xCRUFBQ2tDQkVJL2cwSURVUTBDR2lBQUtBSVVCU0FDQzBFQlJ3MEFJQUVnQVNnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElFVWcwQVFRRWdBU0FCS0FJQUtBSXNFUUFBTFFBSlFRRnhSUTBCR2dzZ0FDZ0NGQ0lDUVFSR0JIOGdBU0FCS0FJQUtBSXNFUUFBS1FJRVFqK0RRZ05SQkVCQkFTQUJJQUVvQWdBb0Fpd1JBQUF0QUFoQkVIRU5BaG9MSUFBb0FoUUZJQUlMUVExSERRRkJBQ0FCSUFFb0FnQW9BaXdSQUFBcEFnUkNQNE5DQkZJTkFCb2dBU0FCS0FJQUtBSXNFUUFBTFFBSVFZQUJjVVVMRHd0QkFBc0lBQ0FBRUpvQ0dnc0tBQ0FBS0FJOFFRRnhDeWdCQVg4Z0FCRFJEaUFBS0FJQUJFQWdBQ2dDRUJvZ0FDZ0NBQ0VCSUFBUWlBTWFJQUVRS2dzTEtRRUNmeU1BUVJCcklnRWtBQ0FCUVFocUlnSWdBQkQzQ1NBQ0tBSUFJUUFnQVVFUWFpUUFJQUFMS3dFQmZ5TUFRUkJySWdFa0FDQUJRUWhxSUFBUUV5QUFFQjlxRURFb0FnQWhBQ0FCUVJCcUpBQWdBQXNnQUNBQUVLc1JJQUFnQVNnQ0NEWUNDQ0FBSUFFcEFnQTNBZ0FnQVJDT0N3c0pBQ0FBUVFBMkFnQUwyUUVCQW44akFFRVFheUlGSkFBZ0JTQUJOZ0lJQWtBZ0FDQUZRUWhxRU1jQkJFQWdBaUFDS0FJQVFRWnlOZ0lBUVFBaEFRd0JDeUFEUVlBUUlBQVFwUUVpQVJEYUFrVUVRQ0FDSUFJb0FnQkJCSEkyQWdCQkFDRUJEQUVMSUFNZ0FSRGxCQ0VCQTBBQ1FDQUJRVkJxSVFFZ0FCQzlBUm9nQUNBRlFRaHFFUFlCUlNBRVFRSkljZzBBSUFOQmdCQWdBQkNsQVNJR0VOb0NSUTBDSUFSQmYyb2hCQ0FESUFZUTVRUWdBVUVLYkdvaEFRd0JDd3NnQUNBRlFRaHFFTWNCUlEwQUlBSWdBaWdDQUVFQ2NqWUNBQXNnQlVFUWFpUUFJQUVMREFBZ0FTQUNLQUlBTmdJQUM5a0JBUUovSXdCQkVHc2lCU1FBSUFVZ0FUWUNDQUpBSUFBZ0JVRUlhaEMrQVFSQUlBSWdBaWdDQUVFR2NqWUNBRUVBSVFFTUFRc2dBMEdBRUNBQUVKOEJJZ0VReXdKRkJFQWdBaUFDS0FJQVFRUnlOZ0lBUVFBaEFRd0JDeUFESUFFUTVnUWhBUU5BQWtBZ0FVRlFhaUVCSUFBUXRRRWFJQUFnQlVFSWFoRHdBVVVnQkVFQ1NISU5BQ0FEUVlBUUlBQVFud0VpQmhETEFrVU5BaUFFUVg5cUlRUWdBeUFHRU9ZRUlBRkJDbXhxSVFFTUFRc0xJQUFnQlVFSWFoQytBVVVOQUNBQ0lBSW9BZ0JCQW5JMkFnQUxJQVZCRUdva0FDQUJDME1CQVg4akFFRVFheUlFSkFBZ0JDQUJOZ0lNSUFRZ0F6WUNDQ0FFSUFSQkRHb1E5UUloQVNBQUlBSWdCQ2dDQ0JDb0V5RUFJQUVROUFJZ0JFRVFhaVFBSUFBTExnQUNRQ0FBS0FJRVFjb0FjU0lBQkVBZ0FFSEFBRVlFUUVFSUR3c2dBRUVJUncwQlFSQVBDMEVBRHd0QkNnc09BQ0FBS0FJQUlBRVFsd0VRTHd1QkFnSUNmd1IrSXdCQkVHc2lBaVFBSUFHOUlnVkNnSUNBZ0lDQWdJQ0FmNE1oQndKK0lBVkMvLy8vLy8vLy8vLy9BSU1pQkVLQWdJQ0FnSUNBZUh4Qy8vLy8vLy8vLysvL0FGZ0VRQ0FFUWp5R0lRWWdCRUlFaUVLQWdJQ0FnSUNBZ0R4OERBRUxJQVJDZ0lDQWdJQ0FnUGovQUZvRVFDQUZRanlHSVFZZ0JVSUVpRUtBZ0lDQWdJREEvLzhBaEF3QkN5QUVVQVJBUWdBTUFRc2dBaUFFUWdBZ0JFS0FnSUNBRUZvRWZ5QUVRaUNJcDJjRklBV25aMEVnYWdzaUEwRXhhaEQzQVNBQ0tRTUFJUVlnQWlrRENFS0FnSUNBZ0lEQUFJVkJqUGdBSUFOcnJVSXdob1FMSVFRZ0FDQUdOd01BSUFBZ0JDQUhoRGNEQ0NBQ1FSQnFKQUFMbFFFQkFuOGpBRUVRYXlJRUpBQUNmeUFBTFFDUUFRUkFJQUFnQVNBQ0lBSVFRQ0FDRURJZ0FCQ3hGQkQxQXd3QkMwRXNFQ1lnQUJCVklBRkIwQUFRVVNFRFFRQWhBU0FDRUJaQkFFb0VRQU5BSUFNZ0FpQUJFQkVvQWdBUU9TQUJRUUZxSWdFZ0FoQVdTQTBBQ3dzZ0FDZ0NoQUVnQkVFSWFpQURFRG9pQUJCOElBQVFQaUFES0FJRUN5RUFJQVJCRUdva0FDQUFDMkFCQW44Q1FBSkFBa0FnQUVIb0FHb2dBUkF2SWdFb0Fnd2lCRUZwYWlJQVFRbExEUUJCQVNBQWRFSGpBSEVOQVNBQVFRZEhCRUFnQUVFSlJ3MEJRUUVoQXd3Q0N5QUNJUU1NQVFzZ0JFSHVLVWNOQVFzZ0FTQURFQzhoQXdzZ0F3dFBBUUYvSXdCQjRBQnJJZ0FrQUNBQVFkZ0Fha0VCRVBVQklnUkJBQkFQSUFFUWR5QUVJQUJCREVFQ1FRRkJBRUVBUVFBUVJTSUJJQUlnQXhEUUFpRUNJQUVRTlJvZ0FFSGdBR29rQUNBQ0MwZ0JBWDhqQUVFUWF5SUNKQUFnQWlBQVFReHFJZ0FRUUNBQUVESWdBUkRpRkRZQ0NDQUNJQUFRTWpZQ0FDQUNRUWhxSUFJUWx3SUVRQ0FBSUFFUStRMExJQUpCRUdva0FBc1JBQ0FBS1FJRVFyK0FnSUFJZzBJQ1VRc05BQ0FBSUFBZ0FSQmlFS29JQzZFQkFRSi9Jd0JCRUdzaUF5UUFJQU1nQWpZQ0NDQURJQUUyQWd4QkFDRUFBa0FnQVNBQ2NrVU5BQUpBQWtBZ0FVVU5BQ0FCSUFFb0FnQW9BaGdSQUFBaUFFVU5BQ0FBS0FKb1JRMEJDMEdvQVJCR0lnUVEvUU1oQUNBQlJRMEFJQUFnQkNnQ0FDZ0N2QUVSQUFBZ0EwRU1haERjQVNBREtBSUlJUUlMSUFKRkRRQWdBQ0FBS0FJQUtBSzhBUkVBQUNBRFFRaHFFTndCQ3lBRFFSQnFKQUFnQUF0TEFRRi9Jd0JCRUdzaUFpUUFBa0FnQUNnQ0JDQUFFQnNvQWdCSkJFQWdBQkFiSUFBb0FnUWdBUkNsQlNBQUlBQW9BZ1JCQ0dvMkFnUU1BUXNnQUNBQkVLSU9DeUFDUVJCcUpBQUxNUUVCZnlBQUtBSUFLQUlBSWdFRWZ5QUJCU0FBS0FJSUlBQW9BZ1FvQWdBaUFDQUFLQUlBS0FKNEVRQUFFTDhCQ3dzTEFDQUFJQUVnQWhDNkJRdWdBUUVFZnlNQVFSQnJJZ2NrQUFKQUlBQkZEUUFnQkNnQ0RDRUdJQUlnQVdzaUNFRUJUZ1JBSUFBZ0FTQUlFSlFGSUFoSERRRUxJQVlnQXlBQmF5SUJhMEVBSUFZZ0FVb2JJZ0ZCQVU0RVFDQUFJQWNnQVNBRkVPd05JZ1VRRXlBQkVKUUZJUVlnQlJBZ0dpQUJJQVpIRFFFTElBTWdBbXNpQVVFQlRnUkFJQUFnQWlBQkVKUUZJQUZIRFFFTElBUVFuQTBnQUNFSkN5QUhRUkJxSkFBZ0NRc0hBQ0FBSUFGR0N4b0FJQUFnQUNrQ0JFTEEvLy8vZDROQ2dvQ0FnQWlFTndJRUMwZ0FJQUVnQVNnQ0FDZ0NQQkVBQUNBQklBRW9BZ0FvQWd3UkFBQWdBU0FCS0FJQUtBSXdFUUFBSUFFZ0FTZ0NBQ2dDWEJFQUFDQUJJQUVvQWdBb0Ftd1JBQUFnQWhENUNBc1NBQ0FBRUJzb0FnQWdBQ2dDQUd0QkRHMExCd0FnQUVFd2FndGVBUUYvQWtBQ1FDQUJRUVZOQkVCQjhNa1BJUUlDUUFKQUFrQUNRQ0FCUVFGckRnVUZBQUVDQXdZTFFmckpEeUVDREFRTFFZTEtEeUVDREFNTFFaUEtEeUVDREFJTFFhUEtEeUVDREFFTFFhcktEeUVDQ3lBQUlBSVF1Z01MQ3pFQkFYOGdBQkRmQXlBQUtBSUFCRUFnQUNBQUtBSUFFS0FPSUFBUUd4b2dBQ2dDQUNFQklBQVExZ0lhSUFFUUtnc0xEQUFnQVNBQ0VJc2FRUjkyQ3c0QUlBQWdBUkNjR2lBQkVPb0JDeEVBSUFBeEFCdENHSVpDZ0lDQStBOVNDeEVBSUFBb0FoUkJnT0FCY1VHQWdBRkhDeUlBSUFCQkFEWUNCQ0FBUVlTd0R6WUNBQ0FBUVFBNkFBd2dBRUVCTmdJSUlBQUw1UU1CQW44Z0FFSFlrZzgyQWdBZ0FDQUJMUUFBSWdJZ0FDZ0NCRUdBZm5GeUlnTTJBZ1FnQUNBRFFmOWhjU0FCTHdHUUFVRUlkRUdBSG5GeUlnTTJBZ1FnQUNBRFFmK2ZmSEVnQVM4QmtBRkJDSFJCZ09BRGNYSWlBellDQkNBQUlBTkIvLytEZjNFZ0FTMEFrUUZCRDNGQkVIUnlJZ00yQWdRZ0FDQURRZi8vdjM1eElBRXZBWkFCUVFsMFFZQ0FnQUZ4Y2pZQ0JDQUJLQUtVQVNFRElBQkJBRFlDU0NBQVFnQTNBa0FnQUNBRE5nSThJQUFnQVNnQ3JBRTJBbEFDUUNBQ1FRNUdCRUFnQUNBQktBSUVOZ0pNREFFTElBQkJ6QUJxRUlvREN5QUFRUWhxSUFGQkNHcEJOQkE5R2lBQktBS1lBU0lDQkVBQ1FDQUNMUUFFUVJKR0JFQWdBRUVTT2dBRUlBQWdBU2dDbUFFb0FrQTJBa0FNQVFzZ0FDQUNLQUpBTmdKQUN5QUFJQUVvQXBnQklnSWdBaWdDQUNnQ0ZCRUFBQkFURU1JQk5nSklDd0pBQWtBZ0FTMEFrUUZCRUhGQkJIWkZEUUFnQVNnQ3JBRWlBa1VOQUNBQ0VHQkJBVWdOQUNBQktBS3NBVUVBRU5ZQklnSkJFRWNnQVNnQ0FDSUJRUUZIY2tVRVFDQUFRUU02QUFRTUFnc2dBa0VJUnlJQ0lBRkJDVWR5UlFSQUlBQkJCVG9BQkF3Q0N5QUNJQUZCQ0VkeURRQWdBRUVFT2dBRUlBQWdBQ2tDREVMLy8vOUhnemNDREFzZ0FBOExJQUFnQUNrQ0RFTC8vLzlIZ3pjQ0RDQUFDOUVKQVFKL0l3QkI0QUJySWdja0FDQUhRUWhxSUFNUXRBTWlCaUFFRUpBRUlBWWdBeWdDbEFFUWh3WWdBQ0FCSUFZb0Fqd1FsQVFDUUNBR0VJVUJCRUFnQUNnQ0tCRExCeUFBS0FJb0VKa0dBa0FnQXlnQ3JBRWlCQVJBSUFRUVlFRUVSZzBCQ3lBQUlBRkJ2cE1MSUFJUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBeWdDckFGRkRRRUNRQ0FES0FJQUVKSUVSUTBBSUFNb0Fxd0JRUUFRMWdGQkVFWU5BQ0FES0FLc0FVRUFFTllCUVNCR0RRQWdBeWdDckFGQkFCRFdBVUhBQUVZTkFDQUFJQUZCM0pNTElBSVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQXlnQ0FCQ21Ba1VOQVNBREtBS3NBVUVBRU5ZQlFRaEdEUUVnQXlnQ3JBRkJBQkRXQVVFZ1JnMEJJQUFnQVVHUmxBc2dBaEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBTW9BcXdCSWdSRkRRQWdCQkJnUlEwQUlBQWdBVUhBbEFzZ0FoQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDMEVBSVFRQ1FDQUFJQUVnQWlBR0xRQUVFTDRIRFFBQ1FDQUZCRUFnQUNBQlFkdVVDeUFGSUFBb0FnQW9BdkFCRVFRQURBRUxJQUFnQVNBQ0lBWVF2dzhMSUFBZ0FTQUdJQUlRelE4Z0FDQUJJQVlnQWhES0R5QUFJQUVnQmlBQ0VNd1BJQUFnQVNBR0lBSVF5dzhnQUNBQklBWkJBQkRmQ1FKQUlBWVFHeWtDQkVJL2cwSUNVZzBBSUFaQkVpQUdLQUlBS0FLd0FSRURBRVVOQUNBQUlBRkI1NVFMUWFLVkMwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FHRUJzcEFnUkNQNE5DQlZFTkFDQUdFQnNwQWdSQ1A0TkNCbEVOQUNBR0VMQUNCRUFnQUNBQlFhS1ZDMEd1NmdrZ0FDZ0NBQ2dDVUJFRUFBc2dCaEN2QWdSQUlBQWdBVUdpbFF0QjYrb0pJQUFvQWdBb0Fsd1JCQUFMSUFZUXhnSkZEUUFnQUNBQlFhS1ZDMEdwNndrZ0FDZ0NBQ2dDYUJFRUFBc0NRQ0FHRUJzcEFnUkNQNE5DQjFJTkFDQUdFTFFIUlEwQUlBQWdBVUdpbFF0QnJKVUxRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFKQjE4VUtFSndFUlEwQUlBTXRBRUZGQkVBZ0EwRkFheTBBQUVVTkFRc2dBQ0FCUWVlVkMwR3dsZ3RCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FrSEt4UW9RbkFSRkRRQWdBeWdDZUVVTkFDQUFJQUZCd1pZTFFiQ1dDMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQnlBQUlBRWdBaUFHRUJzZ0EwRThhaEMrRHlJRE5nSUVJQU5GQkVBZ0FDQUJJQUlRbUFRTElBQWdCaEFiRUtzUEFrQUNRQ0FHRUlRR0JFQWdBQ0FCSUFZUUd5QUdLQUk4SUFWQkFCQzhCeUFBSUFFZ0JoQWJFT0VKR2lBQUlBRWdCaERGRHlBQUlBRWdBaUFHSUFkQkJHb1F3ZzhnQlVVTkFTQUFJQUZCQVVINEFFSGg0Z2xCMjVRTEVDZ2dBQ0FCUVFoQnJBSkJBRUhibEFzUUtBd0JDeUFIS0FJRUlnTkZCRUFnQnlBQUlBRWdBaUFHRUtvUElnTTJBZ1FNQWdzZ0JpQURJQU1vQWdBb0FqQVJBQUFRd0FGRkRRQWdBQ0FCUWUyV0MwSGx4d29nQnlnQ0JDSURJQU1vQWdBb0Fnd1JBQUFRRTBFQUlBQW9BZ0FvQXFBQkVRSUFDeUFIS0FJRUlRTUxJQU5GRFFBQ1FDQUFJQUVnQlFSL0lBTWdBeWdDQUNnQ0pCRUFBQ0lEUlEwQklBQWdBU0FGSUFNUXFROGhCQ0FIS0FJRUJTQURDeEM0QnlBQUlBRWdCeWdDQkJDMER3d0JDeUFBSUFGQmg1Y0xJQUlRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0JoQTFHaUFIUWVBQWFpUUFJQVFMUVFBQ1FDQUFMUUNrQVEwQUFuOUJBU0FDRUtJSFJRMEFHaUFDRUxrRkMwVU5BQ0FBSUFGQjFiNEtRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzTERRQWdBQzBBQ0VFQ2NVRUJkZ3NKQUNBQUlBRVFsd0lMRWdBZ0FCQWJLQUlBSUFBb0FnQnJRUVIxQzBzQUFrQWdBQzBBREVFRWNVVU5BQ0FCUlFSQUlBQkIrQXdRdGdJYURBRUxJQUFnQVJDZ0FSRGlCeUFBSUFFUXRnSWFDeUFBTFFBTVFRSnhCRUFnQVVHbzlSRW9BZ0FRendZYUN3dW9BUUFDUUNBQlFZQUlUZ1JBSUFCRUFBQUFBQUFBNEgraUlRQWdBVUgvRDBnRVFDQUJRWUY0YWlFQkRBSUxJQUJFQUFBQUFBQUE0SCtpSVFBZ0FVSDlGeUFCUWYwWFNCdEJnbkJxSVFFTUFRc2dBVUdCZUVvTkFDQUFSQUFBQUFBQUFCQUFvaUVBSUFGQmczQktCRUFnQVVIK0Iyb2hBUXdCQ3lBQVJBQUFBQUFBQUJBQW9pRUFJQUZCaG1nZ0FVR0dhRW9iUWZ3UGFpRUJDeUFBSUFGQi93ZHFyVUkwaHIraUM5WURBUU4vSXdCQklHc2lDQ1FBSUFnZ0FqWUNFQ0FJSUFFMkFoZ2dDRUVJYWlBREVGd2dDRUVJYWhDSkFpRUpJQWhCQ0dvUVdTQUVRUUEyQWdCQkFDRUNBa0FEUUNBR0lBZEdJQUp5RFFFQ1FDQUlRUmhxSUFoQkVHb1F4d0VOQUFKQUlBa2dCaWdDQUJEbEJFRWxSZ1JBSUFaQkJHb2lBaUFIUmcwQ1FRQWhDZ0ovSUFrZ0FpZ0NBQkRsQkNJQlFjVUFSaUFCUWY4QmNVRXdSbkpGQkVBZ0JpRUNJQUVNQVFzZ0JrRUlhaUFIUmcwRElBRWhDaUFKSUFZb0FnZ1E1UVFMSVFFZ0NDQUFJQWdvQWhnZ0NDZ0NFQ0FESUFRZ0JTQUJJQW9nQUNnQ0FDZ0NKQkVPQURZQ0dDQUNRUWhxSVFZTUFRc2dDVUdBd0FBZ0JpZ0NBQkRhQWdSQUEwQUNRQ0FISUFaQkJHb2lCa1lFUUNBSElRWU1BUXNnQ1VHQXdBQWdCaWdDQUJEYUFnMEJDd3NEUUNBSVFSaHFJQWhCRUdvUTlnRkZEUUlnQ1VHQXdBQWdDRUVZYWhDbEFSRGFBa1VOQWlBSVFSaHFFTDBCR2d3QUFBc0FDeUFKSUFoQkdHb1FwUUVRM2dFZ0NTQUdLQUlBRU40QlJnUkFJQVpCQkdvaEJpQUlRUmhxRUwwQkdnd0JDeUFFUVFRMkFnQUxJQVFvQWdBaEFnd0JDd3NnQkVFRU5nSUFDeUFJUVJocUlBaEJFR29ReHdFRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFnb0FoZ2hBQ0FJUVNCcUpBQWdBQXZXQXdFRGZ5TUFRU0JySWdna0FDQUlJQUkyQWhBZ0NDQUJOZ0lZSUFoQkNHb2dBeEJjSUFoQkNHb1ErZ0VoQ1NBSVFRaHFFRmtnQkVFQU5nSUFRUUFoQWdKQUEwQWdCaUFIUmlBQ2NnMEJBa0FnQ0VFWWFpQUlRUkJxRUw0QkRRQUNRQ0FKSUFZc0FBQVE1Z1JCSlVZRVFDQUdRUUZxSWdJZ0IwWU5Ba0VBSVFvQ2Z5QUpJQUlzQUFBUTVnUWlBVUhGQUVZZ0FVSC9BWEZCTUVaeVJRUkFJQVloQWlBQkRBRUxJQVpCQW1vZ0IwWU5BeUFCSVFvZ0NTQUdMQUFDRU9ZRUN5RUJJQWdnQUNBSUtBSVlJQWdvQWhBZ0F5QUVJQVVnQVNBS0lBQW9BZ0FvQWlRUkRnQTJBaGdnQWtFQ2FpRUdEQUVMSUFsQmdNQUFJQVlzQUFBUXl3SUVRQU5BQWtBZ0J5QUdRUUZxSWdaR0JFQWdCeUVHREFFTElBbEJnTUFBSUFZc0FBQVF5d0lOQVFzTEEwQWdDRUVZYWlBSVFSQnFFUEFCUlEwQ0lBbEJnTUFBSUFoQkdHb1Fud0VReXdKRkRRSWdDRUVZYWhDMUFSb01BQUFMQUFzZ0NTQUlRUmhxRUo4QkVNUUdJQWtnQml3QUFCREVCa1lFUUNBR1FRRnFJUVlnQ0VFWWFoQzFBUm9NQVFzZ0JFRUVOZ0lBQ3lBRUtBSUFJUUlNQVFzTElBUkJCRFlDQUFzZ0NFRVlhaUFJUVJCcUVMNEJCRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUlLQUlZSVFBZ0NFRWdhaVFBSUFBTHJRRUJCSDhqQUVFUWF5SUlKQUFDUUNBQVJRMEFJQVFvQWd3aEJpQUNJQUZySWdkQkFVNEVRQ0FBSUFFZ0IwRUNkU0lIRUpRRklBZEhEUUVMSUFZZ0F5QUJhMEVDZFNJQmEwRUFJQVlnQVVvYklnRkJBVTRFUUNBQUlBZ2dBU0FGRUo0TElnVVFFeUFCRUpRRklRWWdCUkFnR2lBQklBWkhEUUVMSUFNZ0Ftc2lBVUVCVGdSQUlBQWdBaUFCUVFKMUlnRVFsQVVnQVVjTkFRc2dCQkNjRFNBQUlRa0xJQWhCRUdva0FDQUpDeFlBSUFBZ0FTQUNJQU1nQUNnQ0FDZ0NNQkVKQUJvTGhnRUJBWDhnQVNnQ1RFRUFTQVJBQWtBZ0FTd0FTeUFBUWY4QmNVWU5BQ0FCS0FJVUlnSWdBU2dDRUU4TkFDQUJJQUpCQVdvMkFoUWdBaUFBT2dBQUR3c2dBU0FBRUljSUR3c0NRQUpBSUFFc0FFc2dBRUgvQVhGR0RRQWdBU2dDRkNJQ0lBRW9BaEJQRFFBZ0FTQUNRUUZxTmdJVUlBSWdBRG9BQUF3QkN5QUJJQUFRaHdnTEMyUUJBbjhDUUFKQUlBQWdBeWdDQUJESUFTQUFJQUlvQWdBUXlBRnJJZ1ZCQUVvRVFDQUNJUVFnQXlFQ0RBRUxJQU1oQkNBRlFYOUtEUUVMSUFRZ0FDQUJJQVFvQWdBaUFTQUFJQUFnQVJCaUlBQWdBaWdDQUJESUFSQ3hBUkR4QkRZQ0FBc0xyUUVCQVg4akFFRWdheUlFSkFCQkxCQW1JQUFRVlNBQ0lBRVFVU0VCSUFRZ0F4QkFOZ0lZSUFRZ0F4QXlOZ0lRSUFSQkdHb2dCRUVRYWhBZUJFQURRQ0FFS0FJWUtBSUVJUUlDUUNBRUtBSVlMUUFBQkVBZ0FTQUNFRGtNQVFzZ0FTQUNFRXdMSUFSQkdHb1E3UU1nQkNBREVESTJBaEFnQkVFWWFpQUVRUkJxRUI0TkFBc0xJQUFvQW9RQklBUkJDR29nQVJBNklnQVFmQ0FBRUQ0Z0FTZ0NCQ0VBSUFSQklHb2tBQ0FBQzhZQkFnVi9BWDRqQUVFUWF5SURKQUJCTWtFcklBSWJJUVVnQUVIQUFCREVBeUVFSUFHOUlnaENJSWluSVFZZ0NLY2hCd0pBSUFKRkJFQWdBRUVXSUFVZ0JDQUhJQVlRbXd3aUFnMEJDMEVzRUNZaUFpQUFFRlVnQkNBRkVGRWhCQ0FESUFJMkFnd2dCQ0FIRUV3Z0JDQUdFRXdnQUVHUUFtb2dBMEVJYWlBRUVEb2lBaEI5SUFJUVBpQURRUlkyQWdRZ0FFRzBBbW9nQTBFRWFoQS9JQU5CREdvUVJ5QUFRZWdBYWlBREtBSU1FSXdCSUFNb0Fnd29BZ1FoQWdzZ0EwRVFhaVFBSUFJTDlRRUJCSDhqQUVFUWF5SUNKQUFnQWtFV05nSUlBa0FnQUVIY0Ftb2lBeUFDUVFocUVEOFFGa0VCVGdSQUEwQWdBa0VXTmdJSUlBSWdBeUFDUVFocUVEOGdCQkFSS0FJQUlnVTJBZ3dnQlVFQUVDOGdBVVlOQWlBQ1FSWTJBZ2dnQkVFQmFpSUVJQU1nQWtFSWFoQS9FQlpJRFFBTEMwRXNFQ1lpQkNBQUVGVkJBRUVXRUZFaEJTQUNJQVEyQWd3Z0JTQUJFRXdnQWtFV05nSUlJQU1nQWtFSWFoQS9JQUpCREdvUVJ5QUFRWkFDYWlBQ1FRaHFJQUlvQWd3UU9pSURFSDBnQXhBK0lBQkI2QUJxSUFJb0Fnd1FqQUVnQVVIQUFFY05BQ0FBUVFvUUlRc2dBaWdDRENnQ0JDRUFJQUpCRUdva0FDQUFDeDRBSUFBUXRBVWdBUVJBSUFBZ0FSRDhCQ0FBSUFFZ0FoQ1NGUXNnQUFzUEFDQUFLQUlFSUFBb0FnQVF2d0VMUlFFQmZ5TUFRU0JySWdJa0FDQUNJQUVRa2dNMkFoQVE1d0VnQWtFWWFpQUFJQUVnQWtFUWFpQUNRUWhxRU04TUlBSkJHR29RUkNFQUlBSkJJR29rQUNBQVFRUnFDd2tBSUFBZ0FSRFpCZ3NNQUNBQUlBRVEzd0pCRjBZTEhnRUJmeUFBRUpZRkJIOGdBZ1VnQUNBQUtBSVFFUHNHSUFFUXB3WUxDeElBSUFBUUd5Z0NBQ0FBS0FJQWEwRUZkUXNQQUNBQUlBQW9BZ1JCQkdvUXZBRUxwd0lCQm44akFFRXdheUlESkFBQ1FDQUFLQUlJSUFBUUl5Z0NBRWNOQUNBQVFRaHFJUVFnQUVFRWFpRUZJQUFvQWdRaUFpQUFLQUlBSWdaTEJFQWdCQ0FDSUFRb0FnQWdBaUFDSUFaclFRSjFRUUZxUVg1dFFRSjBJZ1JxRUpFRU5nSUFJQVVnQlNnQ0FDQUVhallDQUF3QkN5QURJQUFRSXlnQ0FDQUFLQUlBYTBFQmRUWUNHQ0FEUVFFMkFpd2dBMEVZYWlBRFFSaHFJQU5CTEdvUVVpZ0NBQ0lDSUFKQkFuWWdBQkFqRVBJQ0lRSWdBMEVRYWlBQUtBSUVFREVoQmlBRFFRaHFJQUFvQWdnUU1TRUhJQUlnQmlnQ0FDQUhLQUlBRVB3R0lBQWdBaEF1SUFVZ0FrRUVhaEF1SUFRZ0FrRUlhaEF1SUFBUUl5QUNFQ01RTGlBQ0VKRURDeUFBRUNNZ0FDZ0NDQ0FCRVBrQklBQWdBQ2dDQ0VFRWFqWUNDQ0FEUVRCcUpBQUxXUUVCZnlNQVFTQnJJZ0lrQUNBQ0lBQWdBa0VJYWlBQkVDSWlBQkRERnpZQ0dDQUFFQmthSUFJUWhRUTJBZ2hCQUNFQUlBSkJHR29nQWtFSWFoQzRBMFVFUUNBQ1FSaHFFRVFvQWhBaEFBc2dBa0VnYWlRQUlBQUx2Z3NCQkg4akFFSFFBV3NpQlNRQUlBVWdBellDeUFFZ0JTQUNOZ0xNQVFKQUlBSWdBaWdDQUNnQ2VCRUFBQ0lHSUFZb0FnQW9BaHdSQUFCQkVFWU5BQ0FESUFNb0FnQW9BbmdSQUFBaUJpQUdLQUlBS0FJY0VRQUFRUkJHRFFBQ1FDQUJRZWwrYWtFQlN3MEFJQUJCc2Y4SUVJMEJSUTBBSUFJUThnRUVRQ0FDSUFJb0FnQW9BbmdSQUFBaUJpQUdLQUlBS0FKVUVRQUFJZ1lnQmlnQ0FDZ0N2QUVSQUFBTkFnc2dBeER5QVFSQUlBTWdBeWdDQUNnQ2VCRUFBQ0lHSUFZb0FnQW9BbFFSQUFBaUJpQUdLQUlBS0FLOEFSRUFBQTBDQ3dKQUlBSVE4Z0ZGRFFBZ0F5QURLQUlBS0FLQUFSRUFBQkNtQWtVTkFDQUNJQUlvQWdBb0FuZ1JBQUFoQnlBQUlBSWdBaWdDQUNnQ2VCRUFBQkR3Q0t3Z0JCRHhDQ0VHSUFVZ0FDQUVRWlFCUVFFZ0FpQUZRZkFBYWtFTFFRQkJBVUVBUVFCQkFCQkZJZ0lRL0FFaUNEWUN6QUVnQWhBMUdpQUFRUW9nQXhDWEJTRUNJQVVnQkNrQ0NEY0RHQ0FGSUFRcEFnQTNBeEFnQlNBQVFaa0JJQUlnQmlBRlFSQnFFTThESWdJMkFzZ0JJQVVnQkNrQ0NEY0RDQ0FGSUFRcEFnQTNBd0FnQUNBRVFaTUJRUUVnQUNBQklBZ2dBaUFGRU04RElBY1EvQUVoQnd3Q0N3SkFJQUZCNlg1cUlnWkJBVXNOQUNBR1FRRnJCRUFnQXhEeUFVVU5BU0FDSUFJb0FnQW9Bb0FCRVFBQUVLWUNSUTBCSUFNZ0F5Z0NBQ2dDZUJFQUFDRUJJQUFnQXlBREtBSUFLQUo0RVFBQUVQQUlyQ0FFRVBFSUlRY2dCU0FBSUFSQmxBRkJBU0FESUFWQjhBQnFRUXRCQUVFQlFRQkJBRUVBRUVVaUF4RDhBU0lHTmdMSUFTQURFRFVhSUFCQkNpQUNFSmNGSVFJZ0JTQUVLUUlJTndOSUlBVWdCQ2tDQURjRFFDQUZJQUJCbVFFZ0FpQUhJQVZCUUdzUXp3TWlBallDekFFZ0JTQUVLUUlJTndNNElBVWdCQ2tDQURjRE1DQUFJQVJCa3dGQkFTQUFRWmNCSUFJZ0JpQUZRVEJxRU04RElBRVEvQUVoQnd3REN5QUNFUElCUlEwQUlBTVE4Z0ZGRFFBZ0FDQUNJQUlvQWdBb0FuZ1JBQUFROEFpc0lBUVF4UTBoQVNBQUlBUkJsQUZCQVNBQ0lBVkI4QUJxUVF0QkFFRUJRUUJCQUVFQUVFVWlBaEQ4QVNFSElBSVFOUm9nQUNBRVFaUUJRUUVnQXlBRlFmQUFha0VMUVFCQkFVRUFRUUJCQUJCRklnSVEvQUVoQXlBQ0VEVWFJQUFnQkVIckFFRUJJQWNnQlVId0FHcEJDa0VBUVFGQkFFRUFRUUFRUlNJQ0VQd0JJUWNnQWhBMUdpQUZJQUFnQkVIckFFRUJJQU1nQlVId0FHcEJDa0VBUVFGQkFFRUFRUUFRUlNJQ0VQd0JJZ00yQXNnQklBSVFOUm9nQlNBRUtRSUlOd05vSUFVZ0JDa0NBRGNEWUNBRklBQkJtQUVnQnlBRElBVkI0QUJxRU04RElnSTJBc3dCSUFVZ0JDa0NDRGNEV0NBRklBUXBBZ0EzQTFBZ0FFR2FBU0FDSUFFZ0JVSFFBR29RendNaEJ3d0NDeUFDRVBJQkRRRWdBeER5QVEwQkN5QUZRZkFBYWlBQUlBRWdBaUFERU1FTklBVWdCVUh3QUdvb0FnQWlBallDekFFZ0JTQUZRZkFBYWhBbEtBSUFJZ00yQXNnQklBTkZJQUpGY2cwQUlBVW9Bc3dCSWdKRkRRQWdCU2dDeUFFaUEwVU5BQ0FGSUFRcEFnZzNBeWdnQlNBRUtRSUFOd01nSUFBZ0FTQUNJQU1nQlVFZ2FoRHVDQ0lBRU8wSVJRMEFJQUFnQUNnQ0FDZ0N5QUVSQlFBZ0FDQUFLQUlBS0FMQUFSRUFBQ0lCSUFFb0FnQW9BaFFSQUFBaUFVVWdBQ0FBS0FJQUtBTEVBUkVBQUNJQ0lBSW9BZ0FvQWhRUkFBQWlBa1Z5UlFSQUlBRWdBQ2dDYUNBQ0lBRW9BZ0FvQXJnQkVRY0FJZ2NOQVFzQ1FDQUFJQUFvQWdBb0FzQUJFUUFBSUFBZ0FDZ0NBQ2dDeEFFUkFBQVF2QTFGRFFBZ0FCRHBDRVVOQUNBQUlBQW9BZ0FvQW53UkFBQWlBU0FCS0FJQUtBSW9FUUFBRUtrREN3SkFJQUFnQUNnQ0FDZ0N3QUVSQUFBaUFTQUJLQUlBS0FLRUFSRUFBQkRpQWtVRVFDQUFJQUFvQWdBb0FzUUJFUUFBSWdFZ0FTZ0NBQ2dDaEFFUkFBQVE0Z0pGRFFFTElBQW9BbWdRdUExRkRRQWdBQ0FBS0FJQUtBSjhFUUFBSWdFZ0FTZ0NBQ2dDS0JFQUFDSUJJQUVwQWdSQ2dJQ0FnQkNFTndJRUN5QUFJUWNMSUFWQjBBRnFKQUFnQndzREFBRUxGQUFnQUNBQVFRaHFLQUlBRUw0WklBQVF1QVVMR3dBZ0FDQUJLUUlBTndJQUlBQWdBU2dDQ0RZQ0NDQUJFT29CQ3drQUlBQWdBUkRZRXdzTkFDQUFLQUlBSUFGQkRHeHFDd3dBUVpEMEVpZ0NBQkRxQ3dzSUFDQUFRZjhCY1FzSkFDQUFJQUVRcUE0TERRQWdBQ0FCSUFJUUVoQ3dBd3NLQUNBQUtBSVFRWDlIQ3l3QUlBQVFpZ01nQUNBQUtBSUFRWUNBVEhFZ0FVSC9BWEZCZ0lBUVFRQWdBaHR5Y2tHQWppQnlOZ0lBQ3dzQUlBQWdBU0FDRU5nRUN3c0FJQUFnQVJBeEdpQUFDNmNDQVFOL0FrQWdBQkNZQmtVTkFDQUFMUUNrQVEwQUlBTXRBQWRCQjNFaEJBSkFBa0FnQWtGNGFpSUZRUVpMQkVBZ0FrRUJSZzBCREFJTEFrQWdCVUVDYXc0RUFnSUNBQUVMQWtBZ0JFRURTdzBBSUFSQkFXc09BZ0FBQVFzZ0FDQUJRZlc2Q2tHWHV3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdBeTBBQjBFSGNTRUVDeUFFRFFFZ0FCQ1FBeUVHSUFJUXh3UWhCQ0FBS0FJQUlRVUNRQ0FHQkVBZ0FDQUJRYU83Q2lBRVFkeTdDa0VBSUFVb0FxUUJFUUlBREFFTElBQWdBVUdqdXdvZ0JFSGoxZ2xCQUNBRktBS2dBUkVDQUFzZ0F5QURLUUlFUXYvLy8wZURRb0NBZ0JDRU53SUVJQUFnQWtFQ2RHcEJBallDN0FVTUFRc2dCRVVOQUNBQUlBRkI4N3NLSUFJUXh3UkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxDeUVBSUFCQmYyb2lBRUVDVFFSQUlBQkJBblJCL01nTGFpZ0NBQThMUWRpN0N3czFBQ0FBS0FJQUdpQUFLQUlBSUFBUTFnSkJBM1JxR2lBQUtBSUFJQUFRbWdGQkEzUnFHaUFBS0FJQUlBQVExZ0pCQTNScUdndnRBUUVCZnlBQUVNa0NJUUFDUUNBQktBSUlRWDVxSWdOQkNVc05BQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FEUVFGckRna0pBd1lFQndBQkJRZ0NDeUFBSUFJb0FnQWdBU2dDQUd3UVpROExJQUFnQWlnQ0FDQUJLQUlBYkJCdER3c2dBQ0FCS3dNQUlBSXJBd0NpRUMwUEN5QUFJQUl0QUFBZ0FTMEFBR3hCR0hSQkdIVVFiQThMSUFBZ0FpOEJBQ0FCTHdFQWJFRVFkRUVRZFJCeUR3c2dBQ0FDS1FNQUlBRXBBd0IrRUZzUEN5QUFJQUl0QUFBZ0FTMEFBR3hCL3dGeEVIWVBDeUFBSUFJdkFRQWdBUzhCQUd4Qi8vOERjUkJ4RHdzZ0FDQUNLUU1BSUFFcEF3QitFRm9MQ3hjQUlBQkJsTEFQTmdJQUlBQWdBU2dDQkRZQ0JDQUFDMG9CQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFBZ0FDZ0NDRUVCYWpZQ0NDQUFJQUJCREdvZ0FFRUlhaENtQVNnQ0FEWUNEQ0FBUVJCcUlBSkJER29RM0FFZ0FrRVFhaVFBQ3c4QUlBQWdBQ2dDQUVFQmFqWUNBQXZrQWdFQ2Z3SkFJQUFnQVVZTkFBSkFJQUVnQW1vZ0FFc0VRQ0FBSUFKcUlnUWdBVXNOQVFzZ0FDQUJJQUlRUFJvUEN5QUFJQUZ6UVFOeElRTUNRQUpBSUFBZ0FVa0VRQ0FERFFJZ0FFRURjVVVOQVFOQUlBSkZEUVFnQUNBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVg5cUlRSWdBRUVCYWlJQVFRTnhEUUFMREFFTEFrQWdBdzBBSUFSQkEzRUVRQU5BSUFKRkRRVWdBQ0FDUVg5cUlnSnFJZ01nQVNBQ2FpMEFBRG9BQUNBRFFRTnhEUUFMQ3lBQ1FRTk5EUUFEUUNBQUlBSkJmR29pQW1vZ0FTQUNhaWdDQURZQ0FDQUNRUU5MRFFBTEN5QUNSUTBDQTBBZ0FDQUNRWDlxSWdKcUlBRWdBbW90QUFBNkFBQWdBZzBBQ3d3Q0N5QUNRUU5ORFFBZ0FpRURBMEFnQUNBQktBSUFOZ0lBSUFGQkJHb2hBU0FBUVFScUlRQWdBMEY4YWlJRFFRTkxEUUFMSUFKQkEzRWhBZ3NnQWtVTkFBTkFJQUFnQVMwQUFEb0FBQ0FBUVFGcUlRQWdBVUVCYWlFQklBSkJmMm9pQWcwQUN3c0xEd0FnQUNBQUtBSUFLQUlrRVFBQUN4RUFJQUFnQVNBQktBSUFLQUlnRVFFQUN5Y0JBWDhqQUVFUWF5SUJKQUFnQVVFSWFpQUFLQUlBRURFb0FnQWhBQ0FCUVJCcUpBQWdBQXNSQUNBQUlBRWdBU2dDQUNnQ0xCRUJBQXNNQUNBQVFZS0dnQ0EyQUFBTEJ3QWdBQkJPR2dzdUFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCQVRJQUFRSDBFQ2RHb1FNU2dDQUNFQUlBRkJFR29rQUNBQUM0OEJBUUYvSUFOQmdCQnhCRUFnQUVFck9nQUFJQUJCQVdvaEFBc2dBMEdBQkhFRVFDQUFRU002QUFBZ0FFRUJhaUVBQ3dOQUlBRXRBQUFpQkFSQUlBQWdCRG9BQUNBQVFRRnFJUUFnQVVFQmFpRUJEQUVMQ3lBQUFuOUI3d0FnQTBIS0FIRWlBVUhBQUVZTkFCcEIyQUJCK0FBZ0EwR0FnQUZ4R3lBQlFRaEdEUUFhUWVRQVFmVUFJQUliQ3pvQUFBc1BBQ0FBSUFBb0FnQkJDR28yQWdBTEZnQWdBQ0FCSUFJZ0F5QUFLQUlBS0FJZ0VRa0FHZ3N0QVFGL0lBRVFGa0VBU2dSQUEwQWdBU0FDRUJFb0FnQWdBQkNlQWlBQ1FRRnFJZ0lnQVJBV1NBMEFDd3NMa3dFQkFYOGpBRUVnYXlJRUpBQkJMQkFtSUFBUVZTQUNJQUVRVVNFQklBUWdBeEJBTmdJWUlBUWdBeEF5TmdJUUlBUkJHR29nQkVFUWFoQWVCRUFEUUNBQklBUW9BaGdvQWdBUU9TQUVRUmhxRUdZYUlBUWdBeEF5TmdJUUlBUkJHR29nQkVFUWFoQWVEUUFMQ3lBQUtBS0VBU0FFUVFocUlBRVFPaUlBRUh3Z0FCQStJQUVvQWdRaEFDQUVRU0JxSkFBZ0FBdFpBUUovSXdCQkVHc2lCU1FBUVN3UUprSGdBUkMzQVNJRUlBQWdBVUVBRUhRUU9TQUVJQUFnQWtFQUVIUVFPU0FFSUFBZ0EwRUFFSFFRT1NBQUtBS0VBU0FGUVFocUlBUVFPaUlBRUh3Z0FCQStJQVZCRUdva0FBdWZBUUVCZnlNQVFSQnJJZ1VrQUNBQUlBRWdBaERiQlNFQ1FTd1FKaUFBRUZVZ0FrRTdFRkVpQWlBQkVFd2dCQVJBSUFJZ0JCQTVDd0pBSUFGQkIwWUVRQ0FBS0FLRUFTZ0NOQ0FGUVFocUlBSVFPaUlCRUxrVUlBRVFQZ3dCQ3lBQVFaQUNhaUFGSUFJUU9pSUJFSDBnQVJBK0lBQkI2QUJxSUFJUWpBRUxJQU1FUUNBQUlBSW9BZ1FnQXhEYUJRc2dBaWdDQkNFQUlBVkJFR29rQUNBQUN5Y0JBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUJCUUdzZ0FrRU1haEJISUFKQkVHb2tBQXVKQVFFQ2Z5TUFRUkJySWdRa0FDQUFRZER1RVRZQ0FDQUFRUVJxRURBaEF5QUFRUkJxRURBYUlBQkJIR29RTUJvZ0FFRW9haEF3R2lBQVFRQTZBRGdnQUNBQ05nSTBJQU1nQkVFSWFrRXNFQ1lnQVVFQVFmZ0JFRkVRT2lJQkVIMGdBUkErSUFNUWtBRW9BZ0FnQUJDc0JpQUNLQUlFSUFNUWtBRW9BZ0FRakFFZ0JFRVFhaVFBSUFBTHZnSUJBMzhqQUVFUWF5SUVKQUFnQkNBQk5nSU1Ba0FDUUFKQUFrQUNRQ0FBSUFFUTN3SWlCa0ZwYWlJRlFRZExCRUFnQmtIdUtVY05BUXdEQ3lBRlFRSnJEZ1lBQUFBQ0FBRUNDeUFBUXdBQUFBQkJBQkQ1QWlFRkRBTUxJQU1OQVNBQUlBRWdBaERERkNJRkRRSU1BUXNnQXcwQUlBQWdCaUFCSUFJUXhCUWlCUTBCQzBFc0VDWWlCU0FBRUZVZ0FVRXpRU3dnQXhzUVVTRURJQVFnQlRZQ0NFRUFJUUVnQWhBV1FRQktCRUFEUUNBRElBSWdBUkFSS0FJQUVEa2dBVUVCYWlJQklBSVFGa2dOQUFzTElBQkJrQUpxSUFRZ0F4QTZJZ0VRZlNBQkVENENRQ0FHUVI1R0JFQWdBRUhJQW1vZ0JFRU1haERZQmlBRVFRaHFFRWNNQVFzZ0JDQUdOZ0lBSUFCQnRBSnFJQVFRUHlBRVFRaHFFRWNMSUFCQjZBQnFJQVFvQWdnUWpBRWdCQ2dDQ0NnQ0JDRUZDeUFFUVJCcUpBQWdCUXNOQUNBQklBRkJBQ0FDRU5ZR0N5TUFJQUFnQUNBQkVHSWlBUkN2REFSL0lBQkI2QUJxSUFFUUwwRUFFQzhGSUFFTEN4WUJBWDhnQUJBV0lRRWdBQkR1Q2lBQUlBRVF5QVVMRXdBZ0FDQUFRY0FBRU1rQklBRWdBaENaREF2UEFRRUNmeUFCSUFFdEFBQWlCQ0FDTFFBQVFRRnhjaUlET2dBQUlBRWdCQ0FDTFFBQWNrRUNjU0FEUVgxeGNpSURPZ0FBSUFFZ0EwRjdjU0FFSUFJdEFBQnlRUVJ4Y2lJRE9nQUFJQUVnQTBGM2NTQUVJQUl0QUFCeVFRaHhjaUlET2dBQUlBRWdBMEZ2Y1NBRUlBSXRBQUJ5UVJCeGNpSURPZ0FBSUFFZ0EwRmZjU0FFSUFJdEFBQnlRU0J4Y2lJRE9nQUFJQUVnQTBHL2YzRWdCQ0FDTFFBQWNrSEFBSEZ5SWdNNkFBQWdBU0FEUWY4QWNTQUVJQUl0QUFCeVFZQUJjWEk2QUFBZ0FDQUJLQUlBTmdJQUN6TUJBWDlCLy8vLy93Y2hBaUFCRU9JQ0JIOGdBRUU0YWlJQVFhSGhFVUdBaWdRUXNnRWdBRUcxS1JBaFFiUXBCU0FDQ3d0U0FDQUFJQUVvQWdBMkFnQWdBRUVFYWlBQlFRUnFFSUFGR2lBQUlBRW9BaEEyQWhBZ0FFRVVhaUFCUVJScUVJQUZHaUFBSUFFdEFEQTZBREFnQUNBQktRSW9Od0lvSUFBZ0FTa0NJRGNDSUNBQUMwSUFJQUJCQUJEd0JpQUFRZUNYQ1RZQ0FDQUFRZkFBYWhDVEFSb2dBRUdBQVdvUWt3RWFJQUJCa0FGcUVOVUJHaUFBUVFBMkFxUUJJQUJCQURvQW9BRWdBQXNiQUNBQVFjQUJhaENRQVNnQ0FDSUFJQUFvQWdBb0Fnd1JBQUFMQ3dBZ0FDQUJJQUlRemdvTER3QWdBQ0FBS0FJUUlBRnlFTTBMQ3hJQVFYOGdBVWtFUUJDQ0FRQUxJQUVRSmdzT0FDQUFJQUVnQVJDZ0FSQ3lEUXNKQUNBQUlBRVF6d3NMRFFBZ0FDZ0NCQ0FBS0FJQWF3c2xBUUovSXdCQkVHc2lBQ1FBSUFCQkNHb1F5d0VRTVNnQ0FDRUJJQUJCRUdva0FDQUJDMlVCQVg4Q2YwRUFJQUFnQUNnQ0FDZ0NIQkVBQUVFU1J3MEFHa0VRSUFBZ0FDZ0NBQ2dDVkJFQUFDSUJJQUVvQWdBb0FpZ1JBQUFRcXdsRkRRQWFRUUVnQUNBQUtBSUFLQUpVRVFBQUlnQWdBQ2dDQUNnQ0tCRUFBQ2dDSUVFVGRrRS9jWFFMQzZRREFRVi9Jd0JCNEFCcklnUWtBQUpBSUFBZ0FDZ0NBQ2dDY0JFQUFBUkFJQVJCQ0dvZ0FFRUFRUUFRelFFaEF3Si9Ba0FnQUNBQUtBSUFLQUowRVFBQVJRMEFJQUFnQUNnQ0FDZ0NMQkVBQUJEVUFnMEFJQUFnQUNnQ0FDZ0NQQkVBQUNBRElBRVFod1JzREFFTElBTVFHeUlBSUFBcEFnUkMvLy8vLy85M2d6Y0NCQ0FESUFFUWh3UUxJUUlnQXhBMUdnd0JDeUFBSUFBb0FnQW9Bb2dCRVFBQUJFQWdBQ2dDUUJBM1FRRklEUUVEUUNBRVFRaHFJQUFnQTBFQUVNMEJJZ1VnQVJDSEJDRUdJQVVRTlJvZ0FpQUdhaUVDSUFOQkFXb2lBeUFBS0FKQUVEZElEUUFMREFFTFFRRWhBaUFBSUFBb0FnQW9BbUFSQUFBTkFDQUFJQUFvQWdBb0FtZ1JBQUFFUUNBQlJRUkFJQUFnQUNnQ0FDZ0NMQkVBQUJEeEFnMENDMEVDSVFJZ0FDQUFLQUlBS0FJY0VRQUFRUUpHQkVBZ0FDQUFLQUlBS0FJd0VRQUFRUUpLRFFJTFFRRWhBZ3dCQ3lBQUlBQW9BZ0FvQW13UkFBQkZEUUFnQkVFSWFpQUFRUUJCQUJETkFTRUNJQUFnQUNnQ0FDZ0NOQkVBQUNFQUlBSWdBUkNIQkNFQklBSVFOUm9nQUNBQmJDRUNDeUFFUWVBQWFpUUFJQUlMRmdBZ0FTQUNLUUlBTndJQUlBRWdBaWdDQ0RZQ0NBdFlBUUovSXdCQkVHc2lBU1FBQWtBZ0FCREJBUVJBSUFBb0FnQWhBaUFCUVFBNkFBOGdBaUFCUVE5cUVKUUJJQUJCQUJDOEFRd0JDeUFCUVFBNkFBNGdBQ0FCUVE1cUVKUUJJQUJCQUJEVUFRc2dBVUVRYWlRQUN4WUFRUUZCSUNBQVFYOXFaMnQwSUFBZ0FFRUNUeHNMTlFBZ0FDZ0NBQm9nQUNnQ0FDQUFFS3NEUVF4c2Fob2dBQ2dDQUNBQUVLY0JRUXhzYWhvZ0FDZ0NBQ0FBRUtzRFFReHNhaG9MTHdFQ2Z5TUFRUkJySWdFa0FFRWNFRVlpQWhEK0RSb2dBU0FDTmdJTUlBQWdBVUVNYWhEOURTQUJRUkJxSkFBTEVnQWdBQkFiS0FJQUlBQW9BZ0JyUVJodEN5SUJBWDlCQVNFQkFrQWdBQkNBQWcwQUlBQVFzZ01OQUNBQUVNNEVJUUVMSUFFTEN3QWdBQ0FCSUFJUXJ3TUxDUUFnQUNBQk5nSThDd3NBSUFBZ0FTQUNFSU1QQ3dvQUlBQkJmMnBCQTBrTEN3QWdBVUYvYWlBQWNVVUxRUUFDUUNBQ1JRMEFJQUlRWUVFQlJnMEFJQUFnQVVFT1FjTEFDaEJLSUFBZ0FVRUlRYllDUVFCQndzQUtFQ2dnQUNBQlFRWkJyZ05CQUVIQ3dBb1FLQXNMSVFBZ0FFRi9haUlBUVFWTkJFQWdBRUVDZEVHWXlRdHFLQUlBRHd0QjJMc0xDeG9BUVk3QkMwR1J3UXRCMkxzTElBQkJBa1liSUFCQkFVWWJDNm9GQVFKL0lBSW9BZ0FpQXdSQUlBQWdBVUhnakFzZ0F4Q3JBVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlnQ0VDSURCRUFnQUNBQlFlQ01DeUFERU40RFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUNLQUlVSWdNRVFDQUFJQUZCNEl3TElBTVFsZ1JCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJdEFCZ0VRQ0FBSUFGQjRJd0xRZXpsQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpZ0NDRUYvUndSQUlBQWdBVUhnakF0QnFQRUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDMEVBSVFNRFFDQUNJQU5CQW5ScUlnUW9BaHhCQWs0RVFDQUFJQUZCNEl3TFFZcjBDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkNnQ0xFRi9Sd1JBSUFBZ0FVSGdqQXRCaVkwTFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QURRUUZxSWdOQkEwY05BQXNDUUNBQ0tBSU1RWDlHRFFBQ1FDQUFLQUlVSWdOQmYyb2lCRUVDU3dSQUlBTkJEVWNOQWd3QkN3SkFJQVJCQVdzT0FnSUJBQXNnQUNBQlFlQ01DMEh4NEFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUWVDTUMwR1o0UWxCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJdEFEZ0VRQ0FBSUFGQjRJd0xRWjdtQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpMEFPUVJBSUFBZ0FVSGdqQXRCcytZS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUlvQWxCQmYwWU5BQ0FBS0FJVVFRMUhEUUFnQUNBQlFlQ01DMEdLNFFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBSXRBRUFFUUNBQUlBRkI0SXdMUWVHckNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBaWdDUkVGL1J3UkFJQUFnQVVIZ2pBdEJ0UEFLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQ0tBSklJZ0lFUUNBQUlBRkI0SXdMSUFJUWxRUkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxDNVFCQUFKQUlBQW9Ba3dRSkEwQUlBSVF0d1VFUUNBQUlBRkIvWlFLSUFJUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBa0dxbFFvUThBbEJmMFlOQUFKQUlBQVFNMFVOQUNBQUtBSVFRYXNDU2cwQUlBQWdBVUd0bFFvZ0FoQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQUNBQlFZK1dDaUFDRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NwQUVSQWdBTEM3OEJBUWQvSXdCQkVHc2lCU1FBSUFVUTFRRWhCQUpBSUFCQnlLc0JhaUlHRUJZaUIwRi9ha0VBSUFJYklnSWdCMDhOQUVFQklRZ0RRQ0FHSUFJUUVTZ0NBQ0lESUFNb0FnQW9BalFSQUFBaEF3SkFJQWhGQkVBZ0FDZ0NGRUVOUncwQkN5QUFJQU1nQXlnQ0FDZ0NLQkVBQUNBRUVNZ0hJZ2xGRFFJTElBQWdBU0FKSUFRUUV5QURJQVlnQWhBUktBSUFJZ01nQXlnQ0FDZ0NEQkVBQUJEdUQwRUFJUWdnQWtFQmFpSUNJQWRIRFFBTEN5QUVFQmthSUFWQkVHb2tBQXNOQUNBQUxRQUpRUkJ4UVFSMkN4QUFJQUFvQWdRZ0FSQXNJQUkyQWdBTEN3QWdBQ0FCRUN0QkFYTUxIZ0VCZnlNQVFSQnJJZ0VrQUNBQUlBRkJDR29RL2drZ0FVRVFhaVFBQ3dRQVFRRUxFQUFnQUNnQ0FDQUJLQUlBYTBFQ2RRc05BQ0FCS0FJQUlBSW9BZ0JJQzFRQkFYOUIwTjBVS0FJQUlnRWdBRUVEYWtGOGNXb2lBRUYvVEFSQVFkakFGRUV3TmdJQVFYOFBDd0pBSUFBL0FFRVFkRTBOQUNBQUVBc05BRUhZd0JSQk1EWUNBRUYvRHd0QjBOMFVJQUEyQWdBZ0FRc1NBQ0FBRUVNb0FnQWdBQ2dDQUd0QkFuVUxCd0FnQUVFZ2FndFBBQ0FESUFFMkFnZ2dBMElBTndJQUlBSWdBellDQUNBQUtBSUFLQUlBQkVBZ0FDQUFLQUlBS0FJQU5nSUFDeUFBRUNVb0FnQWdBaWdDQUJEdkRTQUFFQ01pQUNBQUtBSUFRUUZxTmdJQUN3a0FJQUFnQVJEZ0VndmJBUUlCZndKK1FRRWhCQUpBSUFCQ0FGSWdBVUwvLy8vLy8vLy8vLzhBZ3lJRlFvQ0FnSUNBZ01ELy93QldJQVZDZ0lDQWdJQ0F3UC8vQUZFYkRRQWdBa0lBVWlBRFF2Ly8vLy8vLy8vLy93Q0RJZ1pDZ0lDQWdJQ0F3UC8vQUZZZ0JrS0FnSUNBZ0lEQS8vOEFVUnNOQUNBQUlBS0VJQVVnQm9TRVVBUkFRUUFQQ3lBQklBT0RRZ0JaQkVCQmZ5RUVJQUFnQWxRZ0FTQURVeUFCSUFOUkd3MEJJQUFnQW9VZ0FTQURoWVJDQUZJUEMwRi9JUVFnQUNBQ1ZpQUJJQU5WSUFFZ0ExRWJEUUFnQUNBQ2hTQUJJQU9GaEVJQVVpRUVDeUFFQ3hRQUlBSUVmeUFBSUFFZ0FoREpFd1VnQUFzYUM0c0NBQUpBSUFBRWZ5QUJRZjhBVFEwQkFrQkJ3UE1TS0FJQUtBSUFSUVJBSUFGQmdIOXhRWUMvQTBZTkF3d0JDeUFCUWY4UFRRUkFJQUFnQVVFL2NVR0FBWEk2QUFFZ0FDQUJRUVoyUWNBQmNqb0FBRUVDRHdzZ0FVR0FzQU5QUVFBZ0FVR0FRSEZCZ01BRFJ4dEZCRUFnQUNBQlFUOXhRWUFCY2pvQUFpQUFJQUZCREhaQjRBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUZCQXc4TElBRkJnSUI4YWtILy96OU5CRUFnQUNBQlFUOXhRWUFCY2pvQUF5QUFJQUZCRW5aQjhBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUlnQUNBQlFReDJRVDl4UVlBQmNqb0FBVUVFRHdzTFFkakFGRUVaTmdJQVFYOEZRUUVMRHdzZ0FDQUJPZ0FBUVFFTEVBQWdBRUVnUmlBQVFYZHFRUVZKY2dzMkFRRi9Jd0JCRUdzaUFpUUFRU3dRSmlBQkVMY0JJUUVnQUNnQ2hBRWdBa0VJYWlBQkVEb2lBQkI4SUFBUVBpQUNRUkJxSkFBTDVRRUJBWDhqQUVFUWF5SUZKQUJCTEJBbUlBQVFWU0FDUVRRUVVTSUNJQUVRVENBRklBTVFRRFlDQ0NBRklBTVFNallDQUNBRlFRaHFJQVVRSGdSQUEwQWdBaUFGS0FJSUtBSUFFRGtnQlVFSWFoQm1HaUFGSUFNUU1qWUNBQ0FGUVFocUlBVVFIZzBBQ3dzZ0JTQUVFRUEyQWdnZ0JTQUVFREkyQWdBZ0JVRUlhaUFGRUI0RVFBTkFJQUlnQlNnQ0NDZ0NBQkJNSUFWQkNHb1FaaG9nQlNBRUVESTJBZ0FnQlVFSWFpQUZFQjROQUFzTElBQkI2QUJxSUFJUWpBRWdBRUdRQW1vZ0JVRUlhaUFDRURvaUFCQjlJQUFRUGlBQ0tBSUVJUUFnQlVFUWFpUUFJQUFMQ3dBZ0FDQUJPd0VBSUFBTDhRRUJCSDhqQUVFd2F5SURKQUFnQUVFUUVNUURJUVVnQTBFb2FnSi9JQU1nQWJ3MkFpQWdBeWdDSUFzUU1TQURRUmhxSUFOQkVHcEJBQkNzQkM4QkFCQ3NCQ0lFRU1vVUlBTWdCQzhCQURzQkFFRXlRU3NnQWhzaEJDQURJQU12QVFBN0FRZ2dBeThCQ0NFR0FrQWdBa1VFUUNBQVFSWWdCQ0FGSUFZUW1RZ2lBZzBCQzBFc0VDWWlBaUFBRUZVZ0JTQUVFRkVoQkNBRElBSTJBZ2dnQkNBR0VFd2dBRUdRQW1vZ0F5QUVFRG9pQWhCOUlBSVFQaUFEUVJZMkFnQWdBRUcwQW1vZ0F4QS9JQU5CQ0dvUVJ5QUFRZWdBYWlBREtBSUlFSXdCSUFNb0FnZ29BZ1FoQWdzZ0EwRXdhaVFBSUFJTERRQWdBQ0FBSUFFUVloQ3pEQXNOQUNBQUlBQWdBUkJpRU1rREN4SUFJQUFnQUVFUUVNa0JJQUVnQWhEekJBc1NBQ0FBSUFCQkNCREpBU0FCSUFJUTh3UUxTd0VCZnlNQVFSQnJJZ0lrQUFKQUlBQW9BZ1FnQUJBYktBSUFTUVJBSUFBUU95QUFLQUlFSUFFUWx3TWdBQ0FBS0FJRVFRUnFOZ0lFREFFTElBQWdBUkRIREFzZ0FrRVFhaVFBQy9BREFRcC9Jd0JCOEFCcklnVWtBQUpBQWtBZ0FTQUJLQUlBS0FLSUFSRUFBRVVFUUNBQklBRW9BZ0FvQW5BUkFBQkZEUUVMSUFCQk9Hb2lBeUFDRUdJaUJ5QURJQU1nQXhEd0JDSUxFR0lRc0FFaUJFWU5BQUpBSUFBb0Fvd0VFS3dES0FJQVFZQ0lCRWtOQUNBRElBTWdBaEJpUVJSQkFCQ05BaUFESUFSQkZFRUFFSTBDUncwQUlBQWdBU0FEUVpBRElBUWdBaEQ0QVJDMURBd0NDeUFCSUFFb0FnQW9BbkFSQUFBRVFFRUFJUVFnQlVFWWFpQUJRUUJCQUJETkFTRUdJQU1nQnhDd0FTRUhJQUVnQVNnQ0FDZ0NQQkVBQUVFQVNnUkFBMEFnQXlBQ0lBY2dCQkN2QVNFSUlBTVFjeUFESUFzUWdBTWdBeUFFUVFBUXZRSWhDU0FGUVJCcUlBRVE1QUVnQVJDR0JDRUtJQVVnQlNnQ0VEWUNBQ0FESUFrZ0JTQUtFSUlGSUFBZ0JpQUlFTE1FSUFSQkFXb2lCQ0FCSUFFb0FnQW9BandSQUFCSURRQUxDeUFHRURVYURBSUxJQUVvQWtBaUJoQTNRUUZJRFFGQkFDRUVBMEFnQmlBRUVEZ29BZ0FoQ0NBRElBSWdBeUFISUFRUW5nTWdCQkN2QVNFSklBTVFjeUFESUFzUWdBTWdBeUFFUVFBUXZRSWhDaUFGUVFocUlBRVE1QUVnQVJDR0JDRU1JQVVnQlNnQ0NEWUNCQ0FESUFvZ0JVRUVhaUFNRUlJRklBQWdDQ0FKRUxNRUlBUkJBV29pQkNBR0VEZElEUUFMREFFTElBQWdBU0FDRUxVTUN5QUZRZkFBYWlRQUN3MEFJQUJCbEFGcUlBRVFuUlVMcXc0QkIzOGpBRUh3QUdzaUJTUUFJQVZCNEFCcUVEQWhDU0FBSUFFUXZ3RWhDZ0pBQWtBQ1FDQUJJQUVvQWdBb0FuQVJBQUFFUUNBRlFRaHFJQUZCQUVFQUVNMEJJUVFnQVNBQktBSUFLQUk4RVFBQVFRRk9CRUFEUUNBRklBQWdCQ0FDSUFOQkFCQzFCRFlDQUNBSklBVVFRU0FJUVFGcUlnZ2dBU0FCS0FJQUtBSThFUUFBU0EwQUN3c2dCQkExR2d3QkN5QUJJQUVvQWdBb0Ftd1JBQUFFUUNBRlFRaHFJQUZCQUVFQUVNMEJJUVFnQVNBQktBSUFLQUkwRVFBQVFRRk9CRUFEUUNBRklBQWdCQ0FDSUFOQkFCQzFCRFlDQUNBSklBVVFRU0FJUVFGcUlnZ2dBU0FCS0FJQUtBSTBFUUFBU0EwQUN3c2dCQkExR2d3QkN5QUJFSVVCQkVBZ0JTQUFJQVZCQ0dvZ0FTQUJLQUlBS0FJY0VRQUFRUUJCQVVFQVFRQkJBQkJGSWdFZ0FpQURRUUFRdFFRMkFnQWdDU0FGRUVFZ0FSQTFHZ3dCQ3lBQklBRW9BZ0FvQW9nQkVRQUFCRUFnQlVFSWFpSUVJQUVvQWtBUVFEWUNBQ0FGSUFFb0FrQVFNallDQUNBRUlBVVFIa1VOQVFOQUlBVWdBQ0FFS0FJQUtBSUFJQUlnQTBFQUVMVUVOZ0lBSUFrZ0JSQkJJQVFRdEFJZ0JTQUJLQUpBRURJMkFnQWdCQ0FGRUI0TkFBc01BUXNnQVNBQktBSUFLQUl3RVFBQVFRSklEUUVnQVNBQktBSUFLQUl3RVFBQVJRMEFJQUJCT0dvaEJBTkFJQU1vQWdBaEJpQUNFSTBHSVFjQ1FDQUJJQUVvQWdBb0Fod1JBQUJCZjJvaUMwRUxTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQXRCQVdzT0N3b0xCQVVHQndBQkNBa0RBZ3NnQlNBRUlBWWdCMGdFZnlBQ0lBTW9BZ0FRRHlnQ0FBVkJBQXRCQUJDOUFqWUNDQ0FKSUFWQkNHb1FRUXdMQ3lBRklBUWdCaUFIU0FSL0lBSWdBeWdDQUJBUEtBSUFCVUVBQzBFQUVIUTJBZ2dnQ1NBRlFRaHFFRUVNQ2dzZ0JTQUVJQVlnQjBnRWZTQUNJQU1vQWdBUUR5c0RBTFlGUXdBQUFBQUxRUUFRK1FJMkFnZ2dDU0FGUVFocUVFRU1DUXNnQlNBRUlBWWdCMGdFZnlBQ0lBTW9BZ0FRRHkwQUFBVkJBQXRCQUJDYUREWUNDQ0FKSUFWQkNHb1FRUXdJQ3lBRklBUWdCaUFIU0FSL0lBSWdBeWdDQUJBUExBQUFCVUVBQzBFQUVPVUZOZ0lJSUFrZ0JVRUlhaEJCREFjTElBVWdCQ0FHSUFkSUJIOGdBaUFES0FJQUVBOHRBQUFGUVFBTFFRQVFzUVEyQWdnZ0NTQUZRUWhxRUVFTUJnc2dCU0FFSUFZZ0IwZ0VmeUFDSUFNb0FnQVFEeTRCQUFWQkFBdEJBQkRrQlRZQ0NDQUpJQVZCQ0dvUVFRd0ZDeUFGSUFRZ0JpQUhTQVIvSUFJZ0F5Z0NBQkFQTHdFQUJVRUFDMEVBRUxBRU5nSUlJQWtnQlVFSWFoQkJEQVFMSUFVZ0JDQUdJQWRJQkg0Z0FpQURLQUlBRUE4cEF3QUZRZ0FMUVFBUTR3VTJBZ2dnQ1NBRlFRaHFFRUVNQXdzZ0JTQUVJQVlnQjBnRWZpQUNJQU1vQWdBUUR5a0RBQVZDQUF0QkFCRDVBellDQ0NBSklBVkJDR29RUVF3Q0N5QUZJQVFnQmlBSFNBUjhJQUlnQXlnQ0FCQVBLd01BQlVRQUFBQUFBQUFBQUF0QkFCRERBellDQ0NBSklBVkJDR29RUVF3QkN5QUZJQVFnQmlBSFNBUjlJQUlnQXlnQ0FCQVBLd01BdGdWREFBQUFBQXRCQUJDdEJEWUNDQ0FKSUFWQkNHb1FRUXNnQXlBREtBSUFRUUZxTmdJQUlBaEJBV29pQ0NBQklBRW9BZ0FvQWpBUkFBQkpEUUFMQ3lBQVFUaHFJQW9nQ1VFQUVQVURJUWdNQVFzZ0F5Z0NBQ0VHSUFJUWpRWWhCd0pBSUFFZ0FTZ0NBQ2dDSEJFQUFFRi9haUlCUVJGTERRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRUUZyRGhFS0N3UUZCZ2NBQVFnSkF3ME5EUTBOREFJTElBQkJPR29nQmlBSFNBUi9JQUlnQXlnQ0FCQVBLQUlBQlVFQUN5QUVFTDBDSVFnTURBc2dBRUU0YWlBR0lBZElCSDhnQWlBREtBSUFFQThvQWdBRlFRQUxJQVFRZENFSURBc0xJQUJCT0dvZ0JpQUhTQVI5SUFJZ0F5Z0NBQkFQS3dNQXRnVkRBQUFBQUFzZ0JCRDVBaUVJREFvTElBQkJPR29nQmlBSFNBUi9JQUlnQXlnQ0FCQVBMUUFBQlVFQUN5QUVFSm9NSVFnTUNRc2dBRUU0YWlBR0lBZElCSDhnQWlBREtBSUFFQThzQUFBRlFRQUxJQVFRNVFVaENBd0lDeUFBUVRocUlBWWdCMGdFZnlBQ0lBTW9BZ0FRRHkwQUFBVkJBQXNnQkJDeEJDRUlEQWNMSUFCQk9Hb2dCaUFIU0FSL0lBSWdBeWdDQUJBUExnRUFCVUVBQ3lBRUVPUUZJUWdNQmdzZ0FFRTRhaUFHSUFkSUJIOGdBaUFES0FJQUVBOHZBUUFGUVFBTElBUVFzQVFoQ0F3RkN5QUFRVGhxSUFZZ0IwZ0VmaUFDSUFNb0FnQVFEeWtEQUFWQ0FBc2dCQkRqQlNFSURBUUxJQUJCT0dvZ0JpQUhTQVIrSUFJZ0F5Z0NBQkFQS1FNQUJVSUFDeUFFRVBrRElRZ01Bd3NnQUVFNGFpQUdJQWRJQkh3Z0FpQURLQUlBRUE4ckF3QUZSQUFBQUFBQUFBQUFDeUFFRU1NRElRZ01BZ3NnQUVFNGFpQUdJQWRJQkgwZ0FpQURLQUlBRUE4ckF3QzJCVU1BQUFBQUN5QUVFSzBFSVFnTUFRc2dBRUU0YWlJQVFmd0FJQW9nQUNBR0lBZElCSDRnQWlBREtBSUFFQThwQXdBRlFnQUxJQVFRK1FNUStBRWhDQXNnQXlBREtBSUFRUUZxTmdJQUN5QUpFRFlnQlVId0FHb2tBQ0FJQ3cwQUlBQWdBQ0FCRUdJUXlBd0w5d1lCQW44Q1FBSkFBa0FnQUNBQklBTVEyQWhGRFFBZ0FpQURJQU1vQWdBb0FuZ1JBQUFRb3dJTkFpQUNJQUlvQWdBb0FvZ0JFUUFBRFFBZ0F5QURLQUlBS0FLc0FSRUFBQTBBSUFJZ0FpZ0NBQ2dDY0JFQUFBMEFJQU1nQXlnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQW5BUkFBQU5BQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCUWNJRFRBUkFJQUZCeEFGTUJFQWdBVUVIVFEwQ0RBY0xJQUZCdTM1cUlnUkJHazBOQXd3RkN3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRYUlFVEFSQUlBRkJ2WHhxSWdWQkVVc05FRUVNSVFRZ0JVRUJhdzRSRUJBUUVCQVFBZ01GQmdjTENBa1NBUVFSQ3lBQlFkMTdhaUlFUVNGTkRRd2dBVUc1QlVZTkVDQUJRY3NGUncwUERCQUxRUUVoQkF3UUMwRUlJUVFNRHd0QkNTRUVEQTRMUVFJaEJBd05DMEVFSVFRZ0FFSEsvd2dRalFFTkRDQUFRYUtBQ1JDTkFVVU5EZ3dNQzBFRklRUWdBRUhLL3dnUWpRRU5DeUFBUWFLQUNSQ05BVVVORFF3TEMwRUdJUVFnQUVISy93Z1FqUUVOQ2lBQVFjK0FDUkNOQVEwS0RBd0xRUW9oQkF3SkMwRUxJUVFNQ0F0QkFTQUJkRUdLQVhGRkRRUU1CZ3RCQnlFRUlBQkJ5djhJRUkwQkRRWWdBRUhQZ0FrUWpRRkZEUWdNQmd0QkFTQUVkRUdCZ1A0NWNVVU5BUXdFQ3dKQUFrQWdCRUVCYXc0aEJBUUVCQVFFQkFRRUJBUUVCUVFFQkFVRUJRVUZCUVFGQlFRRkJRVUZCUUFBQVFzZ0FpQUNLQUlBS0FJY0VRQUFFS1lDQkVBZ0F5RUVJQU1nQXlnQ0FDZ0NnQUVSQUFBUXBnSU5Cd3RCQUE4TFFRTWhCQ0FBUWNyL0NCQ05BUTBFSUFCQjh2OElFSTBCUlEwR0RBUUxJQUZCODMxcUlnUkJCa3NOQVNBRVFRTkhEUUlNQVFzZ0FVR2JBVVlnQVVHK0FVWnlEUUVMSUFOQkFDQUNJQUlvQWdBb0Fod1JBQUFnQXlBREtBSUFLQUo0RVFBQUlnQWdBQ2dDQUNnQ0hCRUFBRVliRHdzQ1FDQUNFUFFCUlFSQUlBTWdBeWdDQUNnQ2VCRUFBQkQwQVVVTkFRc2dBMEVBSUFJZ0F5QURLQUlBS0FKNEVRQUFFS01DR3c4TElBSWdBaWdDQUNnQ0hCRUFBQ0FESUFNb0FnQW9BbmdSQUFBaUJDQUVLQUlBS0FJY0VRQUFSZzBEUVFBaEJDQUFJQU1nQXlnQ0FDZ0NnQUVSQUFBZ0FpQUNLQUlBS0FJY0VRQUFJQUVRNFFKRkRRRWdBaUFDS0FJQUtBSWNFUUFBSVFRTElBTWdBeWdDQUNnQ0ZCRUFBRVVOQVNBRUlBTWdBeWdDQUNnQ0ZCRUFBQkRRQ0NFRUN5QUVEd3NnQUNBRUlBTVFsd1VQQ3lBREN4a0FJQUFnQVRZQ0NDQUFRUUE2QUFRZ0FFSHd5eEUyQWdBTE93RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhBQVdvZ0FrRU1haENBRGlBQ0tBSU1JZ0FnQUNnQ0FDZ0NKQkVGQUNBQ1FSQnFKQUFMRHdBZ0FCQWJLQUlBSUFBb0FnQnJDd2NBSUFCQkdHb0wwZ2NCQlg4akFFRVFheUlKSkFBZ0NTQUdLUUlJTndNSUlBa2dCaWtDQURjREFBSkFBa0FDUUFKQUlBRkJLRWNFUUNBQlFaZ0JSd1JBSUFGQm9nRkhCRUJCQXlFSEEwQWdCeUlJUVFOMFFkRHZFbW9vQWdBZ0FVWU5CQ0FJUVg5cUlRY2dDQTBBQ3lBQUtBSndJZ0FnQ1VHQXVSRkIyN2dSUWNtekVVRUFJQUFvQWdBb0FxZ0JFUUlBSUFWQkFUb0FBQ0FFUVFBMkFnQU1CZ3RCcUxjUklBWkJJR29pQ0JCNlJRUkFJQUFvQW5BYUFrQWdBQkN2RjBVTkFDQUFLQUp3RUpBRElRb2dBQ2dDY0NJQktBSUFJUWNnQ2dSQUlBRWdCa0d3dHhGQnFMY1JRY216RVVFQUlBY29BcXdCRVFJQURBRUxJQUVnQmtIeXR4RkJxTGNSUWNtekVVRUFJQWNvQXFnQkVRSUFDMEVBSVFjQ2Z5QUFJQVlRVXlJQlFTaEdCRUJCQVNFSElBQWdCaEJUSVFFTElBRkJvZ0ZIQ3dSQUlBQW9BbkFpQUNBSlFiSzRFVUhidUJGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBZ0JVRUJPZ0FBSUFSQkFEWUNBQXdIQ3lBRUFuOUJBQ0FBSUFCQkZHb2dDQkRPQXhEeEJTSUJSUTBBR2lBQkxRQWtRUUoyUVg5elFRRnhDellDQUNBQUlBWVFVeUVCSUFkRkRRVWdBVUVwUmcwRUlBQW9BbkFpQUNBSlFmTzRFVUhidUJGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBZ0JVRUJPZ0FBSUFSQkFEWUNBQXdHQ3lBQUlBQkJvZ0VnQXlBRUlBVWdCaEM1RFNBQ0lBTWdCQ0FGSUFZUXZBUWhBUXdGQ3lBRUlBWW9BaGcyQWdBTUFnc2dBQ0FBSUFZUVUwRUFJQU1nQkNBRklBWVF2QVFoQVNBRkxRQUFEUUlnQVVFcFJnMEJJQUFvQW5BaUFDQUpRZk80RVVIYnVCRkJ5Yk1SUVFBZ0FDZ0NBQ2dDcUFFUkFnQWdCVUVCT2dBQUlBUkJBRFlDQUF3REN5QUFJQUFnQmhCVFFRd2dBeUFFSUFVZ0JoQzhCQ0VCSUFRZ0JDZ0NBQ0FJUVFOMFFkVHZFbW9vQWdBUkFBQTJBZ0FNQVFzZ0FDQUdFRk1oQVFzZ0FDQUJJQU1nQkNBRklBWVF1UTBoQVNBRkxRQUFEUUFEUUNBQlFRcEdEUUZCRVNFSElBRkJLVVlOQVFOQUlBRWdCeUlJUVF4c0lnZEI4TzBTYWlnQ0FFY0VRQ0FJUVg5cUlRY2dDQTBCREFNTEN5QUhRZlR0RW1vaUNpZ0NBQ0FDVEEwQkFuOGdBMEVCY1NBQlFZNEJSa0VBSUFRb0FnQWlDRUVCUmh0eVJRUkFRUUFnQVVHTkFVY2dDSElOQVJvTFFRRUxJUU1nQUNBQUlBWVFVeUFLS0FJQUlBTWdCQ0FGSUFZUXZBUWhBU0FFS0FJQUlnb2dCMEg0N1JKcUlnc29BZ0FpQjBHeUEwY2dCMEd6QTBkeGNrVUVRQ0FBS0FKd0lnY2dDVUdQdVJGQjI3Z1JRY216RVVFQUlBY29BZ0FvQXFnQkVRSUFRUUVoQ2lBRVFRRTJBZ0FnQ3lnQ0FDRUhDeUFFSUFnZ0NpQUhFUU1BTmdJQUlBVXRBQUJGRFFBTEN5QUpRUkJxSkFBZ0FRdW5BUUVEZndKQUlBTkJmMFlnQTBFS1JuSU5BRUhKc3hFaEJDQUJRZHQrYWlJQlFRWk5CRUFnQVVFQ2RFR014UkZxS0FJQUlRUUxJQUFvQW5BUWtBTWhCaUFBS0FKd0lnRW9BZ0FoQlFKQUlBWUVRQ0FCSUFKQjhiWVJJQVJCeWJNUlFRQWdCU2dDckFFUkFnQU1BUXNnQVNBQ1FmRzJFU0FFUWNtekVVRUFJQVVvQXFnQkVRSUFDd05BSUFOQmYwWWdBMEVLUm5JTkFTQUFJQUlRVXlFRERBQUFDd0FMSUFNTE9BRUJmMEVFSVFJZ0FDQUFLQUlBS0FJY0VRQUFRWDVxSWdCQkVFMEVRQ0FBUVFKMFFhU3lFV29vQWdBaEFnc2dBU0FDTmdJQUlBSUxIZ0VCZnlBQUtBSnNJZ0VFZnlBQkJTQUFRUlJxRUJzdEFBZEJCM0VMQ3hRQUlBQWdBRUVJYWlnQ0FCRHdEU0FBRUxnRkN4QUFJQUFnQVJBVElBRVFIeERLQlJvTERnQWdBQ2dDQ0VILy8vLy9CM0VMS3dBZ0FDQUFFTUVDRUJFb0FnQWdBUkRoR1NBQUVKQUJLQUlBSWdFRVFDQUJFS2NaR2dzZ0FCQ1JDUXNTQUNBQUVCc29BZ0FnQUNnQ0FHdEJGRzBMTkFBZ0FDZ0NBQm9nQUNnQ0FDQUFFTGNDUVFKMGFob2dBQ2dDQUNBQUVCWkJBblJxR2lBQUtBSUFJQUFRdHdKQkFuUnFHZ3NNQUNBQklBSXBBZ0EzQWdBTEhBQWdBRUVTVFFSQUlBQkJBblJCNkxVUGFpZ0NBQThMUVlHZ0R3c05BQ0FBTFFBQ1FTQnhRUVYyQ3cwQUlBQW9BZ3hCUDNFUTB3SUxDd0FnQUMwQUlFSC9BVWNMSVFBZ0FFRi9haUlBUVN0TkJFQWdBRUVDZEVIb3N3OXFLQUlBRHd0Qjlwb1BDekFCQVg4akFFRVFheUlDSkFBZ0FDZ0NBQ0VBSUFJZ0FSRHJCeUFBSUFJUUV4QVNHaUFDRUNBYUlBSkJFR29rQUFzT0FDQUFMUUFLUWZBQWNVRUFSd3NRQUNBQU1RQWFRaENHUW9DQS9BZFNDd2tBSUFBZ0FUWUNDQXNhQVFGL0lBQXRBQUpCQ0hFRWZ5QUFFS1FIUVFGekJTQUJDd3NKQUNBQUVCc29BZ0FMVEFFQmZ5TUFRUkJySWdJa0FDQUNRYmJGRGtHOHhRNGdBVUdiQTBnYk5nSUFJQUlnQVVFQ2RFSFF4UTVxS0FJQU5nSUVJQUJCcnNVT0lBSVF6QUpCS1NBQUVNQURJQUpCRUdva0FBdldBUUlEZndGOUl3QkJFR3NpQWlRQUlBSWdBVFlDREFKQUlBSWdBVUVCUmdSL1FRSUZJQUVnQVVGL2FuRkZEUUVnQVJDS0Fnc2lBVFlDREFzQ1FDQUJJQUFRUENJRFN3UkFJQUFnQVJEQkNRd0JDeUFCSUFOUERRQWdBeEM2QVNFRUFuOGdBQkFqS0FJQXN5QUFFRU1xQWdDVmpTSUZRd0FBZ0U5ZElBVkRBQUFBQUdCeEJFQWdCYWtNQVF0QkFBc2hBU0FDQW44Z0JBUkFJQUVRaWdRTUFRc2dBUkNLQWdzMkFnZ2dBaUFDUVF4cUlBSkJDR29RVWlnQ0FDSUJOZ0lNSUFFZ0EwOE5BQ0FBSUFFUXdRa0xJQUpCRUdva0FBc1pBQ0FBSUFFb0FnQVFNUm9nQUNBQlFRUnFMUUFBT2dBRUN3MEFJQUFwQWdSQ1BvTkNEbEVMSUFBZ0FDQUJFSzBESUFBZ0F4Q05DaUFBSUFJUXVnTWdBRUhLekFrUXVnTUxGZ0FnQUNBQkVHY2FJQUFnQVVFRWFpMEFBRG9BQkFzTkFDQUJLQUlBSUFJb0FnQkpDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCRFdBa0VEZEdvYUlBQW9BZ0FnQUJEV0FrRURkR29hSUFBb0FnQWFDd29BSUFBdEFBUkJEVVlMV1FFQ2Z5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FCRGxEaUlESUFGUEJFQWdBQkMzQWlJQUlBTkJBWFpKQkVBZ0FpQUFRUUYwTmdJSUlBSkJDR29nQWtFTWFoQlNLQUlBSVFNTElBSkJFR29rQUNBRER3c1FiZ0FMREFBZ0FDQUJLQUlFTmdJRUMwVUJBWDhqQUVFZ2F5SUNKQUFnQWlBQkVKSUROZ0lRRU9jQklBSkJHR29nQUNBQklBSkJFR29nQWtFSWFoRGFFQ0FDUVJocUVFUWhBQ0FDUVNCcUpBQWdBRUVFYWdzVkFDQUFRWWlFQ1RZQ0FDQUFRUlJxRURVYUlBQUxDZ0FnQUJBYktBSUFSUXNiQUNBQUtBSUFJZ0FnQVNnQ0JEWUNCQ0FCS0FJRUlBQTJBZ0FMSUFBZ0FDZ0NCQ0lBUlFSQVFRQVBDeUFBSUFBb0FnQW9Bc0FCRVFBQUVCWUxzd0VCQTM4akFFRVFheUlDSkFBZ0FpQUJPZ0FQQWtBQ1FBSkFBbjhnQUJEQkFTSUVSUVJBUVFvaEFTQUFMUUFMREFFTElBQVF3Z1JCZjJvaEFTQUFLQUlFQ3lJRElBRkdCRUFnQUNBQlFRRWdBU0FCRU93SElBQVF3UUZGRFFFTUFnc2dCQTBCQ3lBQUlRRWdBQ0FEUVFGcUVOUUJEQUVMSUFBb0FnQWhBU0FBSUFOQkFXb1F2QUVMSUFFZ0Eyb2lBQ0FDUVE5cUVKUUJJQUpCQURvQURpQUFRUUZxSUFKQkRtb1FsQUVnQWtFUWFpUUFDeE1BSUFBUTZnRWdBQ0FCSUFFUXRRc1FuaEVMemdFQkJuOGpBRUVRYXlJRUpBQWdBQkFsS0FJQUlRVUNmeUFDS0FJQUlBQW9BZ0JySWdOQi8vLy8vd2RKQkVBZ0EwRUJkQXdCQzBGL0N5SURRUVFnQXhzaEF5QUJLQUlBSVFZZ0FDZ0NBQ0VISUFWQjFRUkdCSDlCQUFVZ0FDZ0NBQXNnQXhDd0JpSUlCRUFnQlVIVkJFY0VRQ0FBRUY4YUN5QUVRZFFFTmdJRUlBQWdCRUVJYWlBSUlBUkJCR29RbmdFaUJSQ0dDeUFGRUowQklBRWdBQ2dDQUNBR0lBZHJRUUoxUVFKMGFqWUNBQ0FDSUFBb0FnQWdBMEY4Y1dvMkFnQWdCRUVRYWlRQUR3c1FnZ0VBQ3hNQUlBQWdBVUVBSUFBb0FnQW9BalFSQndBTEV3QWdBQ0FCUVFBZ0FDZ0NBQ2dDSkJFSEFBdnpBZ0VDZnlNQVFSQnJJZ29rQUNBS0lBQTJBZ3dDUUFKQUFrQUNRQ0FES0FJQUlBSkhEUUFnQ1NnQ1lDQUFSaUlMUlFSQUlBa29BbVFnQUVjTkFRc2dBeUFDUVFGcU5nSUFJQUpCSzBFdElBc2JPZ0FBREFFTElBWVFIMFVnQUNBRlIzSU5BVUVBSVFBZ0NDZ0NBQ0lCSUFkclFaOEJTZzBDSUFRb0FnQWhBQ0FJSUFGQkJHbzJBZ0FnQVNBQU5nSUFDMEVBSVFBZ0JFRUFOZ0lBREFFTFFYOGhBQ0FKSUFsQjZBQnFJQXBCREdvUTh3Y2dDV3NpQmtIY0FFb05BQ0FHUVFKMUlRVUNRQ0FCUVhocUlnZEJBa3NFUUNBQlFSQkhJQVpCMkFCSWNnMEJJQU1vQWdBaUFTQUNSaUFCSUFKclFRSktjZzBDSUFGQmYyb3RBQUJCTUVjTkFrRUFJUUFnQkVFQU5nSUFJQU1nQVVFQmFqWUNBQ0FCSUFWQndMa1NhaTBBQURvQUFBd0NDeUFIUVFGclJRMEFJQVVnQVU0TkFRc2dBeUFES0FJQUlnQkJBV28yQWdBZ0FDQUZRY0M1RW1vdEFBQTZBQUFnQkNBRUtBSUFRUUZxTmdJQVFRQWhBQXNnQ2tFUWFpUUFJQUFMQ3dBZ0FFRzh5eFFRbXdNTDd3SUJBMzhqQUVFUWF5SUtKQUFnQ2lBQU9nQVBBa0FDUUFKQUFrQWdBeWdDQUNBQ1J3MEFJQUJCL3dGeElnc2dDUzBBR0VZaURFVUVRQ0FKTFFBWklBdEhEUUVMSUFNZ0FrRUJhallDQUNBQ1FTdEJMU0FNR3pvQUFBd0JDeUFHRUI5RklBQWdCVWR5RFFGQkFDRUFJQWdvQWdBaUFTQUhhMEdmQVVvTkFpQUVLQUlBSVFBZ0NDQUJRUVJxTmdJQUlBRWdBRFlDQUF0QkFDRUFJQVJCQURZQ0FBd0JDMEYvSVFBZ0NTQUpRUnBxSUFwQkQyb1E5Z2NnQ1dzaUJVRVhTZzBBQWtBZ0FVRjRhaUlHUVFKTEJFQWdBVUVRUnlBRlFSWkljZzBCSUFNb0FnQWlBU0FDUmlBQklBSnJRUUpLY2cwQ0lBRkJmMm90QUFCQk1FY05Ba0VBSVFBZ0JFRUFOZ0lBSUFNZ0FVRUJhallDQUNBQklBVkJ3TGtTYWkwQUFEb0FBQXdDQ3lBR1FRRnJSUTBBSUFVZ0FVNE5BUXNnQXlBREtBSUFJZ0JCQVdvMkFnQWdBQ0FGUWNDNUVtb3RBQUE2QUFBZ0JDQUVLQUlBUVFGcU5nSUFRUUFoQUFzZ0NrRVFhaVFBSUFBTEN3QWdBRUcweXhRUW13TUxad0lCZndGK0l3QkJFR3NpQWlRQUlBQUNmaUFCUlFSQVFnQU1BUXNnQWlBQnJVSUFRZkFBSUFGblFSOXpJZ0ZyRVBjQklBSXBBd2hDZ0lDQWdJQ0F3QUNGSUFGQi8vOEFhcTFDTUlaOElRTWdBaWtEQUFzM0F3QWdBQ0FETndNSUlBSkJFR29rQUFzS0FDQUFFSUVJR2lBQUMyQUJBWDRDUUFKK0lBTkJ3QUJ4QkVBZ0FpQURRVUJxcllnaEFVSUFJUUpDQUF3QkN5QURSUTBCSUFKQndBQWdBMnV0aGlBQklBT3RJZ1NJaENFQklBSWdCSWdoQWtJQUN5RUVJQUVnQklRaEFRc2dBQ0FCTndNQUlBQWdBamNEQ0F1REFRSURmd0YrQWtBZ0FFS0FnSUNBRUZRRVFDQUFJUVVNQVFzRFFDQUJRWDlxSWdFZ0FDQUFRZ3FBSWdWQ0NuNTlwMEV3Y2pvQUFDQUFRdi8vLy8rZkFWWWhBaUFGSVFBZ0FnMEFDd3NnQmFjaUFnUkFBMEFnQVVGL2FpSUJJQUlnQWtFS2JpSURRUXBzYTBFd2Nqb0FBQ0FDUVFsTElRUWdBeUVDSUFRTkFBc0xJQUVMQndBZ0FFRkFhd3NPQUNBQVFRRVEwUVlnQUJEUUJndkJBUUVEZnlNQVFTQnJJZ1FrQUNBRUlBSTJBaHdnQUNBREVNZ0RJZ1pCQVVjRVFBSkFJQUF0QUpBQkJFQWdBRUhvQUdvZ0FDQURJQVJCRUdvZ0JpQUVRUnhxRU1VRElnSWdBQ0FFS0FJY0VJNE1FUFVERUM4aEJTQUNFRFlNQVF0QkxCQW1JQUFRVlNBRFFkQUFFRkVoQlVFQUlRTWdCa0VBU2dSQUEwQWdCU0FDRURrZ0EwRUJhaUlESUFaSERRQUxDeUFBS0FLRUFTQUVRUWhxSUFVUU9pSUNFSHdnQWhBK0N5QUFJQVVvQWdRZ0FSQ0dBU0VDQ3lBRVFTQnFKQUFnQWd1SkFRRUNmeU1BUVJCcklnWWtBRUVzRUNZZ0FCQlZJQUFnQVJEYUJrRTlFRkVpQlNBQkVEa0NRQ0FDSUFBZ0FSQzJCQkNURENJQlJRMEFJQVVnQVJCTUlBRkJBbkVFUUNBRklBUVFUQXNnQVVFUWNVVU5BQ0FGSUFBZ0EwRUFFSFFRT1FzZ0FDZ0NoQUVnQmtFSWFpQUZFRG9pQUJCOElBQVFQaUFGS0FJRUlRQWdCa0VRYWlRQUlBQUxvZ0VCQW44akFFRVFheUlFSkFCQk1rRXJJQU1iSVFVQ1FDQURSUVJBSUFCQkZTQUZJQUVnQWhDWkNDSUREUUVMUVN3UUppSURJQUFRVlNBQklBVVFVU0VCSUFRZ0F6WUNEQ0FCSUFJUVRDQUFRWkFDYWlBRVFRaHFJQUVRT2lJQkVIMGdBUkErSUFSQkZUWUNCQ0FBUWJRQ2FpQUVRUVJxRUQ4Z0JFRU1haEJISUFCQjZBQnFJQVFvQWd3UWpBRWdCQ2dDRENnQ0JDRURDeUFFUVJCcUpBQWdBd3NKQUNBQUlBRVEzeFFMVHdFQmZ5TUFRZUFBYXlJQUpBQWdBRUhZQUdwQkFSRDFBU0lFUVFBUUR5QUJFR1VnQkNBQVFRaEJBa0VCUVFCQkFFRUFFRVVpQVNBQ0lBTVEwQUloQWlBQkVEVWFJQUJCNEFCcUpBQWdBZ3NTQUNBQUVCc29BZ0FnQUNnQ0FHdEJORzBMTHdBZ0FDZ0NBQ2dDUEVHQWlBUlBCSDlCZ01BQUlBQW9BZ1F0QUFBaUFFRUlSa0VNZENBQVFRbEdHd1ZCQUFzTERRQWdBQ0FBSUFFUVloRDlCQXNQQUNBQklBSWdBQ2dDQkVGL0VIZ0xFZ0FnQUJBYktBSUFJQUFvQWdCclFUaHRDeEFBSUFBb0FnUWdBQ2dDQUd0Qk9HMExRQUVCZnlBQUVPVU9JQUZKQkVBUWJnQUxJQUFRR3hvZ0FDQUJFSUlDSWdJMkFnQWdBQ0FDTmdJRUlBQVFHeUFDSUFGQkFuUnFOZ0lBSUFCQkFCQ3RCUXN4QVFGL1FRRWhBZ0pBSUFBZ0FSRGZBa0VXUmcwQUlBQWdBUkRmQWtFVlJnMEFJQUFnQVJEZkFrRVVSaUVDQ3lBQ0N4Z0FJQUFnQUNnQ0FDZ0NMQkVBQUMwQUIwRUhjUkNEQlF0eEFDQUFLQUtNQkMwQWlBUkZBbjhnQVMwQUFDSUJRY0VBY1FSQVFRVkJBU0FBS0FLTUJDMEFpQVFiREFFTFFRRWdBVUVDY1EwQUdrRUZJQUZCQkhFTkFCcEJBaUFCUVFoeERRQWFRUU5CLy8vLy93Y2dBVUVRY1JzTElnRkJBVWR5UlFSQUlBQkJPR3BCNGlrUUlRc2dBUXRIQVFKL0l3QkJFR3NpQWlRQUlBRVFHeG9nQUNBQ1FRaHFFSTBPR2lBQkVCWWlBd1JBSUFBZ0F4RDhCQ0FBSUFFb0FnQWdBU2dDQkNBREVLOElDeUFDUVJCcUpBQWdBQXNKQUNBQUVLNElJQUFMUndFQmZ5TUFRUkJySWdRa0FDQUVJQUUyQWd3Z0FFR1lBV29nQkVFTWFoQkhJQVJCQ0dvZ0FFSEVBV29nQWhENkF5QUFJQUFvQXNBQklBTnlOZ0xBQVNBRVFSQnFKQUFMRXdCQkFFSC8vLy8vQnlBQVFYOXFRUUpKR3dzS0FDQUFLQUlBRUlBSkN4WUFJQUFnQUVFSWFpZ0NBQkR3RFNBQUVMZ0ZJQUFMSHdBZ0FFRjhhaUlBUVFkTkJFQWdBRUVDZEVHb2lRbHFLQUlBRHd0QmZ3c0tBQ0FBS0FJb1FRaEdDdzhBSUFBZ0FDZ0NBQ2dDQURZQ0FBc0xBQ0FBSUFFZ0FoQ1hCUXMzQVFGL0l3QkJFR3NpQkNRQUlBUWdBeWtDQ0RjRENDQUVJQU1wQWdBM0F3QWdBQ0FCSUFJZ0JCRHVDQ0VBSUFSQkVHb2tBQ0FBQ3l3QkFYOGpBRUVRYXlJREpBQWdBMEVJYWlBQklBSWdBaENRRmlBQUlBTkJDR29RMXdRZ0EwRVFhaVFBQ3k0QkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFFUTZ3dzJBZ2dnQWtFSWFoQkVJUUFnQWtFUWFpUUFJQUJCQkdvTEJ3QWdBRUVvYWdzT0FDQUFFQk1nQUJBZmFrRi9hZ3NOQUNBQUtBSUlJQUFvQWdSR0N4QUFJQUFvQWdRZ0FTZ0NCRVpCQVhNTEZ3QWdBQ0FETmdJUUlBQWdBallDRENBQUlBRTJBZ2dMRlFBZ0FDQUJFSlVESUFCQkJHb2dBUkFsRUpVREN4TUFJQUFnQVJDVkF5QUFRUVJxSUFJUWxRTUxFd0FnQUNBQklBSWdBQ2dDQUNnQ01CRUhBQXMyQVFGL0lBQVFYaUVCSUFBb0FnUWdBQ2dDRUNBQktBSUFha0YvYWlJQVFRaDJRZnovL3dkeGFpZ0NBQ0FBUWY4SGNVRUNkR29MRFFBZ0FDZ0NFQ0FBRUlJRFR3dThCZ0VHZnlNQVFmQUFheUlFSkFBQ2YwRUJJQUlnQWlnQ0FDZ0NnQUVSQUFCQkJFWU5BQnBCQVNBQ0lBSW9BZ0FvQW9BQkVRQUFRUVZHRFFBYVFRRWdBaUFDS0FJQUtBS0FBUkVBQUVFR1JnMEFHa0VCSUFJZ0FpZ0NBQ2dDZ0FFUkFBQkJCMFlOQUJwQkFTQUNJQUlvQWdBb0FvQUJFUUFBUVFoR0RRQWFRUUVnQWlBQ0tBSUFLQUtBQVJFQUFFRUpSZzBBR2tFQklBSWdBaWdDQUNnQ2dBRVJBQUJCQ2tZTkFCb2dBaUFDS0FJQUtBS0FBUkVBQUVFTFJnc2hBd0ovUVFFZ0FpQUNLQUlBS0FLQUFSRUFBRUVEUmcwQUdrRUJJQUlnQWlnQ0FDZ0NnQUVSQUFCQkFVWU5BQm9nQWlBQ0tBSUFLQUtBQVJFQUFFRUNSZ3NoQ0NBQlFYeHFJUVVnQVVFQmNpRUhBa0FDUUNBQUVQNEdEUUFnQXlBSFFRVkhja0VCUncwQklBSWdBaWdDQUNnQ2dBRVJBQUJCQkVjRVFDQUNJQUlvQWdBb0FvQUJFUUFBUVFWSElBVkJDRWx5RFFFTUFnc2dCVUVIU3cwQkN3SkFJQUFRL1FZTkFDQURRUUZ6SUFkQkIwWnhEUUVnQWlBQ0tBSUFLQUtBQVJFQUFFRUdSd1JBSUFJZ0FpZ0NBQ2dDZ0FFUkFBQkJCMGNnQlVFSVNYSU5BUXdDQ3lBRlFRZExEUUVMQWtBZ0FCRGVDQTBBSUFnZ0FVRURSM0pCQVVjTkFTQUNJQUlvQWdBb0FvQUJFUUFBSVFNZ0FVRi9ha0VEU1EwQUlBTkJBMFlOQVFzZ0JFRUFOZ0pzSUFFZ0FpQUNLQUlBS0FLQUFSRUFBQ0FFUWV3QWFoRDRGa1VOQUNBRVFSaHFJQUZCQUNBQ0lBSW9BZ0FvQXBBQkVRQUFJQUlnQWlnQ0FDZ0NsQUVSQUFBZ0FpQUNLQUlBS0FLWUFSRUFBRUVBRUVVaEJTQUVLQUpzSVFZZ0JDQUNJQUlvQWdBb0FnQVJBQUFpQXlrQ0NEY0RFQ0FFSUFNcEFnQTNBd2dnQmlBQ0lBUkJDR29nQlJEaUNDRURBa0FDUUNBQ0lBSW9BZ0FvQWhRUkFBQkZEUUFnQUJEK0JrVkJBQ0FIUVFWR0d3MEFRUUFnQjBFSFJpQUFFUDBHR3cwQVFRQWdBVUVEUmlBQUVONElHdzBBSUFJZ0FpZ0NBQ2dDRkJFQUFDSUFJQVFvQW13Z0JTQUFLQUlBS0FLOEFSRUhBQ0lHRFFFTEFrQWdBaUFDS0FJQUtBSjRFUUFBSWdBZ0FDZ0NBQ2dDTEJFQUFCRG1BVVVOQUNBREVPa0lSUTBBSUFNZ0F5Z0NBQ2dDZkJFQUFDSUFJQUFvQWdBb0FpZ1JBQUFRcVFNTElBTWhCZ3NnQlJBMUdnc2dCRUh3QUdva0FDQUdDeU1BSUFOQkJVWUVRQ0FBSUFFZ0FpQUVFSUlIRHdzZ0FDQUJJQUlnQXlBRUVJTUhDeUFCQVg4Z0FDZ0NCQ0FCS0FJQVRnUi9JQUFvQWdBZ0FTZ0NCRXdGSUFJTEN3c0FJQUFnQVNBQ0VPRU5Dd2dBSUFBb0FnUkZDdzhBSUFBZ0FDZ0NBRUVNYWpZQ0FBczFBUUYvSXdCQkVHc2lBU1FBSUFFZ0FDZ0NCRUYvYWpZQ0RDQUFRUkJxSUFGQkRHb1EvZ0VvQWdBaEFDQUJRUkJxSkFBZ0FBc0pBQ0FBRU9vTklBQUxDd0FnQUNBQklBSVFvQVFMQ1FBZ0FTQUNFTklEQ3dvQUlBRWdBaER0QVJvTEJBQkJmd3NkQVFGL0lBQkJpTDRQTmdJQUlBQW9BaGdpQVFSQUlBRVFLZ3NnQUFzUUFDQUFRZ0EzQWdBZ0FFSUFOd0lJQ3drQUlBRWdBaERJQ2dzUEFFR1E5QklvQWdBZ0FCRHNDeG9MRFFBZ0FDMEFBMEVnY1VFRmRnc05BQ0FBTFFBQ1FRaHhRUU4yQ3hFQUlBQW9BaUJCZ1A0ZmNVR0EvaDlIQ3lFQUlBQkJmMm9pQUVFRVRRUkFJQUJCQW5SQjFMTVBhaWdDQUE4TFFmYWFEd3NUQUNBQUtBSVVRWUNBL2dGeFFZQ0EvZ0JIQ3c0QUlBQW9BZ1FnQVJBc0tBSUFDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCQzNBa0VDZEdvYUlBQW9BZ0FnQUJDM0FrRUNkR29hSUFBb0FnQWFDM0lCQVg4Z0FDQUJFTFVKSUFCQnZNOFBOZ0lBSUFCQkZHb1Frd0VhSUFCQkpHcEJBRUVBUVFGQkFFRUFRUUFRUlNFRUlBQkIvQUJxSUFFUTB4b2dBRUlBTndLUUFTQUFJQU0yQW93QklBUWdBaENQQVNBQUlBSWdBaWdDQUNnQ0xCRUFBQ2dDQkVFR2RrSC9BM0UyQW5nZ0FBc0pBQ0FBSUFFUXdna0xNUUVCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVNBQUVEd2dBQkFsRUtZT0VERW9BZ0FoQUNBQ1FSQnFKQUFnQUFzbkFRRi9Jd0JCRUdzaUFpUUFJQUlnQVJDckJ5SUJJQUFRZ1E4Z0FSQ3NBaUFDUVJCcUpBQUxDd0FnQUVFQU5nSUFJQUFMbEFFQkEzOGpBRUVnYXlJR0pBQWdBQ2dDVENBR1FSQnFJQU1RSWlJSFFRQkJBQkNzQVNFRklBY1FHUm9nQlNBRktBSUFLQUlrRVFBQUlnVWdCU2dDQUNnQ1hCRUFBQ0lGUVFBUUR5Z0NBQ0FDU0FSQUlBVkJBQkFQS0FJQUlRSWdBQ2dDQUNnQ29BRWhCU0FHSUFJMkFnUWdCaUFETmdJQUlBQWdBVUg1NGdvZ0JFR1g0d29nQmlBRkVRSUFDeUFHUVNCcUpBQUxMd0VCZnlNQVFSQnJJZ0VrQUNBQVFnQTNBZ0FnQVVFQU5nSU1JQUJCQ0dvZ0FVRU1haENoQ3lBQlFSQnFKQUFMQ2dBZ0FDMEFDVUVCY1F1Q0FnSUNmd0YrQWtBQ1FDQUNLUUlFSWdXblFUOXhJZ05CYzJvaUJFRUNTd1JBSUFOQkFrOE5BUXdDQ3dKQUFrQUNRQ0FFUVFGckRnSUJBZ0FMSUFBZ0FVRUJRWUlCUVFCQnpLa0tFQ2dnQUNBQlFRaEJyQUpCQUVITXFRb1FLQ0FDSUFJcEFnUkNRSU5DQTRRM0FnUU1Bd3NnQUNBQlFRRkJnZ0ZCQUVIZ3FRb1FLQ0FBSUFGQkNFR3NBa0VBUWVDcENoQW9JQUlnQWlrQ0JFSkFnMElFaERjQ0JBd0JDeUFDSUFWQ1FJTkNBNFEzQWdRZ0FDQUJRZmFwQ2tIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQUlRNGdKRkRRQWdBQ0FCUVptcUNrRytxUXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBZ0FTQUNFT1FKQ3c0QUlBQkJBMEhEbWdvUWhRSkZDeUFCQVg4Z0FDZ0NBQ0VCSUFCQkFEWUNBQ0FCQkVBZ0FCQWxJQUVRNVFrTEN6Y0JBbjlCQVNFQkFrQWdBQkJnUVFGTURRQURRQ0FBSUFFUXJBVUVRQ0FCUVFGcUlnRWdBQkJnU0EwQkRBSUxDMEVCSVFJTElBSUxDUUFnQVNBQ0VKZ0NDek1BSUFJZ0FpZ0NBQ2dDdEFFUkFBQUVRQ0FBSUFGQkFVSDRBRUhoNGdrZ0F4QW9JQUFnQVVFSVFhd0NRUUFnQXhBb0N3dm5BUUVDZnlNQVFTQnJJZ1VrQUNBQUlBRWdBaUFFSUFBb0FnQW9BdkFCRVFRQUFrQUNRQ0FFSUFRb0FnQW9BbmdSQUFBUXNBSUVRQ0FBSUFBb0FnQW9Ba3dSQUFCRkRRRUxJQVFnQkNnQ0FDZ0NlQkVBQUJDdkFnUkFJQUFnQUNnQ0FDZ0NXQkVBQUVVTkFRc2dCQ0FFS0FJQUtBSjRFUUFBRU1ZQ0JFQWdBQ0FBS0FJQUtBSmtFUUFBUlEwQkN5QUFLQUlvSVFZZ0JTQUJLUUlJTndNSUlBVWdBU2tDQURjREFDQUdJQU1nQkNBRkVQRU1JZ01OQVFzZ0JVRVFhaUFFRUtvQ0lBQWdBU0FDSUFWQkVHb1E3UThnQlVFUWFoQVpHaUFFSVFNTElBVkJJR29rQUNBREN3MEFJQUF0QUFoQklIRkJCWFlML3dJQkJYOGpBRUhnQUdzaUJDUUFBa0FnQVNnQ0FDSUNJQUlvQWdBb0FqQVJBQUFpQWtVTkFDQUNJQUlvQWdBb0FuZ1JBQUFpQXlBREtBSUFLQUljRVFBQVJRUkFBbjlCNDlZSklBQW9BaUJGRFFBYVFmK1BDaUFDSUFJb0FnQW9Bc0FCRVFBQVFmT1BDaEFyRFFBYVFlUFdDU0FBS0FJZ1JRMEFHa0dza0FwQjQ5WUpJQUlnQWlnQ0FDZ0N3QUVSQUFCQm5wQUtFQ3NiQ3lFRElBQWdBaUFDS0FJQUtBSUFFUUFBUWMyUUNpQUNJQUlvQWdBb0FzQUJFUUFBRUJNZ0EwRUFJQUFvQWdBb0FxQUJFUUlBSUFJZ0FpZ0NBQ2dDd0FFUkFBQVFIMFVOQVVHQUFSQkdJZ01nQWlBQ0tBSUFLQUxBQVJFQUFDQUVRUWhxUVFGQkFFRUJRUUJCQUVFQUVFVWlCVUVBRU8wQ0lRWWdCUkExR2lBQUtBSk1JQU1RN0FJYUlBRWdBQ2dDS0NBR0lBSWdBaWdDQUNnQ0FCRUFBQkNxQXpZQ0FBd0JDeUFDSUFJb0FnQW9Bb1FCRVFBQUtRSUVRaitEUWhoU0RRQWdBQ0FDSUFJb0FnQW9BZ0FSQUFCQkFVSDRBRUVBUWVPUUNoQW9DeUFFUWVBQWFpUUFDd3NBSUFBb0Fnd3RBQWhGQzEwQkEzOGdBQ2dDQUNFQklBQVFwd1VoQWlBQUVLZ0ZJUU1nQWlBQUVJb0JJQUZCRDNaQkFuRnlRUU4wSUFGQkVYWkJBWEZCQWtFQUlBTWJja0VCZEhKeVFSUnNJQUFvQWdBaUFFSC9BWEZxUVFOMElBQkJDSFpCL3dGeGFnc3hBUUYvSXdCQkVHc2lBaVFBSUFJZ0FDZ0NBRFlDQ0NBQ1FRaHFJQUVReHdVZ0FpZ0NDQ0VBSUFKQkVHb2tBQ0FBQzFrQkFYOGpBRUVRYXlJRUpBQWdBUkFiSWdFZ0FFRU1FQ1lnQkVFSWFpQUJRUUFRd3dFUWtRRWlBQ2dDQUVFSWFpQURFUGtCSUFBUUpVRUJPZ0FFSUFBb0FnQWdBallDQkNBQUtBSUFRUUEyQWdBZ0JFRVFhaVFBQ3drQUlBQWdBUkI2UlFzcEFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJFSThRRURFb0FnQWhBQ0FDUVJCcUpBQWdBQXNUQUNBQVFaU2NDVFlDQUNBQVFRUnFFS1FGQzBnQkFYOGdBQ2dDQUNJQ0tBSVlRWDlxUWY2SEJFMEVRQ0FDSUFBb0FnUW9BZ0FpQUNBQUtBSUFLQUlBRVFBQVFZMk5DU0FCUWRLTENVRUFJQUlvQWdBb0FxUUJFUUlBQ3dzU0FDQUFJQUFvQWdBZ0FVRUNkR28yQWdBTEt3QWdBQ2dDQUJvZ0FDZ0NBQ0FBRUxjQ1FRSjBhaG9nQUNnQ0FCb2dBQ2dDQUNBQUVCWkJBblJxR2d0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFFTkFLSWdNZ0FVOEVRQ0FBRUxjQ0lnQWdBMEVCZGtrRVFDQUNJQUJCQVhRMkFnZ2dBa0VJYWlBQ1FReHFFRklvQWdBaEF3c2dBa0VRYWlRQUlBTVBDeEJ1QUF0OEFRTi9Jd0JCRUdzaUJTUUFBa0FnQUJCZElnUWdBQkFmSWdOcklBSlBCRUFnQWtVTkFTQUFFQk1pQkNBRGFpQUJJQUlRNkFFZ0FDQUNJQU5xSWdFUWh3TWdCVUVBT2dBUElBRWdCR29nQlVFUGFoQ1VBUXdCQ3lBQUlBUWdBaUFEYWlBRWF5QURJQU5CQUNBQ0lBRVEyd29MSUFWQkVHb2tBQ0FBQ3lRQUlBQkJBazhFZnlBQVFRUnFRWHh4SWdBZ0FFRi9haUlBSUFCQkFrWWJCVUVCQ3dzWUFRRi9JQUFRRmlFQ0lBQWdBUkN4Q2lBQUlBSVF5QVVMS3dFQmZ3Si9JQUFnQUNnQ0JFRi9haUlCTmdJRUlBRkJmMFlMQkVBZ0FDQUFLQUlBS0FJSUVRVUFDd3M5QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVJCY0lBSWdBMEVJYWhEb0JDSUJFSWdDTmdJQUlBQWdBUkNIQWlBRFFRaHFFRmtnQTBFUWFpUUFDd2tBSUFBZ0FSRHpFZ3M5QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVJCY0lBSWdBMEVJYWhEcUJDSUJFSWdDT2dBQUlBQWdBUkNIQWlBRFFRaHFFRmtnQTBFUWFpUUFDd2tBSUFBUWt3c2dBQXVaQVFFRGZDQUFJQUNpSWdNZ0F5QURvcUlnQTBSODFjOWFPdG5sUGFKRTY1d3JpdWJsV3I2Z29pQURJQU5FZmY2eFYrTWR4ejZpUk5WaHdSbWdBU3Evb0tKRXB2Z1FFUkVSZ1QrZ29DRUZJQU1nQUtJaEJDQUNSUVJBSUFRZ0F5QUZva1JKVlZWVlZWWEZ2NkNpSUFDZ0R3c2dBQ0FESUFGRUFBQUFBQUFBNEQraUlBUWdCYUtob2lBQm9TQUVSRWxWVlZWVlZjVS9vcUNoQzVJQkFRTjhSQUFBQUFBQUFQQS9JQUFnQUtJaUFrUUFBQUFBQUFEZ1A2SWlBNkVpQkVRQUFBQUFBQUR3UHlBRW9TQURvU0FDSUFJZ0FpQUNSSkFWeXhtZ0Fmbytva1IzVWNFV2JNRld2NkNpUkV4VlZWVlZWYVUvb0tJZ0FpQUNvaUlESUFPaUlBSWdBa1RVT0lpKzZmcW92YUpFeExHMHZaN3VJVDZnb2tTdFVweUFUMzZTdnFDaW9LSWdBQ0FCb3FHZ29BdGxBUU4vSUFKRkJFQkJBQThMQWtBZ0FDMEFBQ0lEUlEwQUEwQUNRQ0FESUFFdEFBQWlCVWNOQUNBQ1FYOXFJZ0pGSUFWRmNnMEFJQUZCQVdvaEFTQUFMUUFCSVFNZ0FFRUJhaUVBSUFNTkFRd0NDd3NnQXlFRUN5QUVRZjhCY1NBQkxRQUFhd3U2QVFFQ2Z5TUFRYUFCYXlJRUpBQWdCRUVJYWtHdzlSRkJrQUVRUFJvQ1FBSkFJQUZCZjJwQi8vLy8vd2RQQkVBZ0FRMEJRUUVoQVNBRVFaOEJhaUVBQ3lBRUlBQTJBalFnQkNBQU5nSWNJQVJCZmlBQWF5SUZJQUVnQVNBRlN4c2lBVFlDT0NBRUlBQWdBV29pQURZQ0pDQUVJQUEyQWhnZ0JFRUlhaUFDSUFNUTVRc2hBQ0FCUlEwQklBUW9BaHdpQVNBQklBUW9BaGhHYTBFQU9nQUFEQUVMUWRqQUZFRTlOZ0lBUVg4aEFBc2dCRUdnQVdva0FDQUFDeU1CQVg4Z0FDZ0NoQUVvQWpRaUFVRThFQ1lnQUJCVklBRVE5QU1pQUJEekF5QUFDMEVCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFCQkVHb2dBa0VNYWhCSElBSW9BZ3doQVNBQ0lBQTJBZ2dnQVVFY2FpQUNRUWhxRUVFZ0FrRVFhaVFBQzhJQ0FRTi9Jd0JCRUdzaUJTUUFBbjlCQUNBQlFabC9haUlFUVFSTERRQWFBa0FDUUFKQUlBUkJBbXNPQXdFQ0FnQUxRUUFoQkNBQVFlZ0FhaUFBSUFJb0FnQVE5d01RTDBFQkVDOGlCa0VHVFFSQUlBWkJBblJCa084UmFpZ0NBQ0VFQ3lBRUlBQkI2QUJxSUFBZ0FpZ0NBQkQzQXhBdlFRTVFMMEVBUjJvaEJBSi9JQU1FUUNBQVFTQVF5UUVNQVFzZ0FFRWdFS0lDQ3lJRElBUkJBVVlOQWhvZ0FDQURJQVFRc1FFTUFnc2dBQ0FBSUFBZ0FpZ0NCQkJpRUxzQ1FRSVFzUUVNQVFzZ0F3UkFJQUJCSUJESkFRd0JDeUFBUVNBUW9nSUxJUU5CTEJBbUlBQVFWU0FESUFFUVVTSUJJQUlvQWdBUU9TQUNLQUlFSWdNRVFDQUJJQU1RT1FzZ0FpZ0NEQ0lDQkVBZ0FTQUNFRGtMSUFBb0FvUUJJQVZCQ0dvZ0FSQTZJZ0lRZkNBQ0VENGdBRUV5RUNFZ0FTZ0NCQ0VBSUFWQkVHb2tBQ0FBQ3pRQkFYOUJQQkFtSUFBUVZTQUFLQUtFQVNnQ05CRDBBeUlCUVFFNkFEZ2dBQ2dDaEFFb0FqUWdBUkR6QXlBQUlBRVE1UUVMUVFFQ2Z5TUFRUkJySWdNa0FFRXNFQ1pCQlJDM0FTSUVJQUVRT1NBRUlBSVEvZ0lnQUVINEFXb2dBMEVJYWlBRUVEb2lBQkI5SUFBUVBpQURRUkJxSkFBTC9BRUJCSDhqQUVFUWF5SURKQUFnQTBFZ05nSUlBa0FnQUVIY0Ftb2lCU0FEUVFocUVEOFFGa0VCVGdSQUEwQWdBMEVnTmdJSUlBTWdCU0FEUVFocUVEOGdCQkFSS0FJQUlnWTJBZ3dnQmtFQUVDOGdBVVlFUUNBREtBSU1RUUVRTHlBQ1JnMERDeUFEUVNBMkFnZ2dCRUVCYWlJRUlBVWdBMEVJYWhBL0VCWklEUUFMQzBFc0VDWWlCaUFBRUZWQkFFRWdFRkVoQkNBRElBWTJBZ3dnQkNBQkVFd2dCQ0FDRURrZ0EwRWdOZ0lJSUFVZ0EwRUlhaEEvSUFOQkRHb1FSeUFBUVpBQ2FpQURRUWhxSUFNb0Fnd1FPaUlCRUgwZ0FSQStJQUJCNkFCcUlBTW9BZ3dRakFFTElBTW9BZ3dvQWdRaEFDQURRUkJxSkFBZ0FBdFBBUUYvSXdCQjRBQnJJZ0FrQUNBQVFkZ0Fha0VCRVBVQklnVkJBQkFQSUFFUUxTQUZJQUFnQWtFQ1FRRkJBRUVBUVFBUVJTSUNJQU1nQkJEUUFpRURJQUlRTlJvZ0FFSGdBR29rQUNBREN5d0JBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJJQUlnQWhEZUZDQUFJQU5CQ0dvUTF3UWdBMEVRYWlRQUN3Y0FJQUJCRUVjTFdRRUJmMEVCSVFRQ1FDQUREUUFDZnlBQUtBS01CQnBCQUFzRVFDQUNJQUlvQWdBb0Fod1JBQUJCRUVZUEN5QUNJQUlvQWdBb0FzQUJFUUFBRFFBZ0FVRUdSaUFDSUFJb0FnQW9BaHdSQUFCQkVFWnhJUVFMSUFRTERRQWdBQ0FBSUFFUVloQzBEQXRXQVFGL0lBRWdBaENLQnlJREJFQWdBRUU0YWhCeklBTWdBQ0FES0FJQUtBSUlFUUVBSUFBZ0F5QURLQUlBS0FJTUVRQUFJZ0FnQUNnQ0FDZ0NlQkVBQUJDaEFROExJQUJCT0dvZ0FTQUNFTllCUVFBUWRBc1ZBQ0FBUWVnQWFpQUFJQUVRdXdJUUwwRUFFQzhMRXdBZ0FDQUFRY0FBRUtJQ0lBRWdBaENaREFzU0FDQUFJQUJCRUJDaUFpQUJJQUlROHdRTEVnQWdBQ0FBUVFnUW9nSWdBU0FDRVBNRUN4a0FJQUFnQXpZQ0NDQUFJQUkyQWdRZ0FDQUJOZ0lBSUFBTEVBQkJLa0gvLy8vL0J5QUFFTGNER3dzaEFRRi9JQUFvQWdBaEFTQUFMUUFFQkVBZ0FSQ0FDUThMSUFGQkFEb0FrQUVMRmdBZ0FDQUJOZ0lBSUFBZ0FTMEFrQUU2QUFRZ0FBc1dBQ0FBSUFFdEFBQTZBQUFnQUVFRWFpQUNFTklEQ3g4QUlBQWdBQ2dDQUNnQ2VCRUFBQ0lBSUFBb0FnQW9BaXdSQUFBUXR3TUxod01CQTM4akFFRXdheUlGSkFBQ1FDQUNJQUlvQWdBb0FuZ1JBQUFpQmlBR0tBSUFLQUljRVFBQVFSQkdEUUFnQXlBREtBSUFLQUo0RVFBQUlnWWdCaWdDQUNnQ0hCRUFBRUVRUmcwQUFrQWdBVUhKZTJwQkFVc05BQ0FDRVBJQlJRMEFJQUJCc2Y4SUVJMEJSUTBBSUFNZ0F5Z0NBQ2dDZUJFQUFDSUdJQVlvQWdBb0FtQVJBQUJGRFFFZ0F5QURLQUlBS0FKNEVRQUFJZ1lnQmlnQ0FDZ0NrQUVSQUFCRkRRRWdCU0FFS1FJSU53TVlJQVVnQkNrQ0FEY0RFQ0FBUVpjQlFaZ0JJQUZCdHdSR0d5QUNJQU1nQlVFUWFoRFBBeUlCUlEwQklBSWdBaWdDQUNnQ01CRUFBQkRBR0NFQ0lBVWdCQ2tDQ0RjRENDQUZJQVFwQWdBM0F3QWdBRUcyQkNBQ0lBRWdCUkRzQlNFSERBRUxJQUFnQVNBQ0lBSW9BZ0FvQW5nUkFBQWdBeEMzQkNJRFJRMEFJQUlnQWlnQ0FDZ0NlQkVBQUJvZ0JTQUVLUUlJTndNb0lBVWdCQ2tDQURjRElDQUFJQUVnQWlBRElBVkJJR29RN2dnaUFCRHRDRVVOQUNBQUlBQW9BZ0FvQXNnQkVRVUFJQUFoQndzZ0JVRXdhaVFBSUFjTENRQWdBQkRxQVNBQUN4b0FJQUFnQVNBQktBSUFRWFJxS0FJQWFpZ0NHRFlDQUNBQUN4Z0FJQUJCZkdvaUFFRUdUUVJBSUFCQkFYRkZEd3RCQUFzU0FDQUFFS1FYSWdCQk9Hb1E3QVFhSUFBTFdBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBaUFBUVFScUlnQWdBa0VNYWhESEZ6WUNDQ0FDSUFBUWZqWUNBRUVBSVFBZ0FrRUlhaUFDRUxnRFJRUkFJQUpCQ0dvUVYwRUVhaUVBQ3lBQ1FSQnFKQUFnQUFzMUFDQUFLQUpBSWdBZ0FDZ0NBQ2dDR0JFQUFDSUFJQUFvQWdBb0Fyd0JFUUFBRUpBQktBSUFJZ0FnQUNnQ0FDZ0NHQkVBQUFzT0FDQUFMUUFCUVFoMFFZQUNSZ3RZQVFKL0lBQWdBQ2dDQUNJQktBSUVJZ0kyQWdBZ0FnUkFJQUlnQUJEUEJBc2dBU0FBS0FJSU5nSUlBbjhnQUJDbkFnUkFJQUFvQWdnTUFRc2dBQ2dDQ0VFRWFnc2dBVFlDQUNBQklBQTJBZ1FnQUNBQkVNOEVDMWdCQW44Z0FDQUFLQUlFSWdFb0FnQWlBallDQkNBQ0JFQWdBaUFBRU04RUN5QUJJQUFvQWdnMkFnZ0NmeUFBRUtjQ0JFQWdBQ2dDQ0F3QkN5QUFLQUlJUVFScUN5QUJOZ0lBSUFFZ0FEWUNBQ0FBSUFFUXp3UUxEZ0FnQUMwQUFVRUlkRUdBQ2tZTE5RQWdBQ2dDQUJvZ0FDZ0NBQ0FBRUxrRFFRUjBhaG9nQUNnQ0FDQUFFS2dCUVFSMGFob2dBQ2dDQUNBQUVMa0RRUVIwYWhvTENnQWdBQ2dDQkVGMGFnc3NBQ0FBS0FJQUdpQUFLQUlBSUFBUXF3TkJER3hxR2lBQUtBSUFJQUFRcXdOQkRHeHFHaUFBS0FJQUdnc01BQ0FBS0FJQUlBRVFsQUlMSGdBZ0FCQXdHaUFBUVFBMkFoUWdBRUVBT3dFUUlBQkJBRFlDRENBQUM2QUJBUU4vSUFCQ0FEY0NGQ0FBUVJBMkFnUWdBRUdBd0FBMkFnQWdBRUVjYWhBd0dpQUFRUUEyQWlnZ0FDQUFLQUlBSWdGQi94OU5CSDhnQUVHQUlEWUNBRUdBSUFVZ0FRczJBaEFnQUNBQUtBSUVRWHh4SWdGQkJDQUJHeUlETmdJRVFRRWhBUU5BSUFFaUFrRUJkQ0VCSUFJZ0Ewa05BQXNnQUNBQ05nSUVJQUFnQWtGL2FqWUNDQ0FBSUFKQkIycEJBQ0FDYTNFMkFnd2dBQkNkQ1NBQUN3a0FJQUJCS0JDaUNRc2NBQ0FCSUFCcklnRUVRQ0FDSUFGcklnSWdBQ0FCRU9RREN5QUNDeDBBSUFBZ0FTZ0NDRFlDQ0NBQUlBRXRBQXc2QUF3Z0FDQUJFSm9hQ3c0QUlBQXRBQU5Cd0FCeFFRWjJDeEFBSUFJRVFDQUFJQUVnQWhEa0F3c0xHd0FnQUNrQ0dFS0FnSUNBZ1A3L0FZTkNnSUNBZ0lEKy93RlNDdzRBSUFBb0FnUWdBUkFzS0FJRUN3b0FJQUFvQWp4QkFFY0xKd0FnQXlBREtBSUFJQUlnQVdzaUFHc2lBallDQUNBQVFRRk9CRUFnQWlBQklBQVFQUm9MQ3hFQUlBQWdBU2dDQUNBQktBSUVFTjBPQ3lNQkFYOGdBUVJBSUFBb0Fqd2lBa1VFUUNBQUlBRVEzdzRQQ3lBQ0lBRVFteG9MQ3lzQkFYOGpBRUVRYXlJQ0pBQWdBQ0FCSUFJUTBRVWlBQkRNQ1NBQUlBQVFQQkNzQnlBQ1FSQnFKQUFMaGdvQkJYOGpBRUd3QVdzaUJ5UUFBa0FnQXlBREtBSUFLQUlZRVFBQUlnUkZEUUFnQkNnQ2FBMEFJQUlnQWlnQ0FDZ0NjQkVBQUFSQVFRQWhBeUFIUWRnQWFrRUFRUUJCQVVFQVFRQkJBQkJGSWdVZ0FoQ1BBU0FGSUFJZ0FpZ0NBQ2dDVEJFQUFCRGZEaUFGSUFRZ0JDZ0NBQ2dDdkFFUkFBQVFGaENOQXlBRUlBUW9BZ0FvQXJ3QkVRQUFRUUFRRVNnQ0FDSUNJQUlvQWdBb0Fnd1JBQUFoQmdKQUlBVVFqQU5GRFFBZ0JpQUdLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NjQkVBQUVVTkFFRUJJUUlnQlNnQ1BCQmdJQVlnQmlnQ0FDZ0NlQkVBQUNJSUlBZ29BZ0FvQWt3UkFBQVFZRUVCYWtjTkFDQUZLQUk4RUdCQkFrZ05BQU5BSUFVb0Fqd2dBaERXQVVVRVFDQUZLQUk4SUFJZ0JpQUdLQUlBS0FKNEVRQUFJZ2dnQ0NnQ0FDZ0NUQkVBQUNBQ1FYOXFFTllCRUpzRUN5QUNRUUZxSWdJZ0JTZ0NQQkJnU0EwQUN3c2dCeUFGUVFCQkFCRE5BU0VDQW44Q1FDQUVJQVFvQWdBb0Fyd0JFUUFBRUJaRkRRQURRQUpBSUFBZ0FTQUNJQVFnQkNnQ0FDZ0N2QUVSQUFBZ0F4QVJLQUlBSWdZZ0JpZ0NBQ2dDREJFQUFCQ0pCaUVHSUFRZ0JDZ0NBQ2dDdkFFUkFBQWdBeEFSSUFZMkFnQWdCQ0FFS0FJQUtBSzhBUkVBQUNBREVCRW9BZ0JGRFFBZ0EwRUJhaUlESUFRZ0JDZ0NBQ2dDdkFFUkFBQVFGa2tOQVF3Q0N3dEJBQXdCQ3lBQUlBRWdCQ0FGRUpVR0N5RURJQUlRTlJvZ0JSQTFHZ3dCQ3dKQUFrQWdBaUFDS0FJQUtBS0lBUkVBQUFSQUFrQWdBaWdDUUJBM0lBUWdCQ2dDQUNnQ3ZBRVJBQUFRRmtZRVFDQUNLQUpBRURkRkRRTkJBQ0VEREFFTFFRQWhBeUFBSUFGQnJab0xRYythQzBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3RUN3TkFJQUFnQVNBQ0tBSkFJQU1RT0NnQ0FDQUVJQVFvQWdBb0Fyd0JFUUFBSUFNUUVTZ0NBQ0lGSUFVb0FnQW9BZ3dSQUFBUWlRWWhCU0FFSUFRb0FnQW9BcndCRVFBQUlBTVFFU0FGTmdJQUlBUWdCQ2dDQUNnQ3ZBRVJBQUFnQXhBUktBSUFSUTBESUFOQkFXb2lBeUFDS0FKQUVEZEpEUUFMREFFTElBSWdBaWdDQUNnQ2JCRUFBQVJBSUFJZ0FpZ0NBQ2dDTkJFQUFDQUVJQVFvQWdBb0Fyd0JFUUFBRUJaSEJFQWdCMEhZQUdvZ0FoREtBVUVBSVFNZ0FDQUJRZUNhQzBIUG1nc2dCMEhZQUdvUUUwRUFJQUFvQWdBb0FxQUJFUUlBSUFkQjJBQnFFQmthREFRTFFRQWhBeUFIUWRnQWFpQUNRUUJCQUJETkFTRUZBa0FnQWlBQ0tBSUFLQUkwRVFBQVFRQktCRUFEUUNBQUlBRWdCU0FFSUFRb0FnQW9BcndCRVFBQUlBTVFFU2dDQUNJR0lBWW9BZ0FvQWd3UkFBQVFpUVloQmlBRUlBUW9BZ0FvQXJ3QkVRQUFJQU1RRVNBR05nSUFJQVFnQkNnQ0FDZ0N2QUVSQUFBZ0F4QVJLQUlBUlEwQ0lBTkJBV29pQXlBQ0lBSW9BZ0FvQWpRUkFBQklEUUFMQ3lBRkVEVWFEQUlMSUFVUU5Sb01BZ3NnQWlBQ0tBSUFLQUpvRVFBQUJFQWdBaUFDS0FJQUtBSXdFUUFBSUFRZ0JDZ0NBQ2dDdkFFUkFBQVFGa1lOQVNBSFFkZ0FhaUFDRU1vQlFRQWhBeUFBSUFGQmdKc0xRYythQ3lBSFFkZ0FhaEFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCMEhZQUdvUUdSb01Bd3NnQjBIWUFHb2dBaERLQVVFQUlRTWdBQ0FCUWJDYkMwSFBtZ3NnQjBIWUFHb1FFMEVBSUFBb0FnQW9BcUFCRVFJQUlBZEIyQUJxRUJrYURBSUxJQUFnQVNBRUlBUW9BZ0FvQXJ3QkVRQUFFQlpCQVVZRWZ5QUVJQVFvQWdBb0Fyd0JFUUFBUVFBUUVTZ0NBQVVnQkFzZ0FoQ1ZCaUVEREFFTFFRQWhBd3NnQjBHd0FXb2tBQ0FEQ3lJQkFYOGdBQ2dDa0FRaUFrRi9Sd1JBSUFFZ0FrWVBDeUFBSUFFMkFwQUVRUUVMSHdFQmZ5QUFLQUtZQkNJQ0JFQWdBU0FDUmc4TElBQWdBVFlDbUFSQkFRc3ZBQ0FDSUFJb0FnQW9Bc3dCRVFBQUJFQWdBQ0FCUWJMYkNpQURRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd3NWQUNBQUtBSUVJZ0JGQkVCQkFBOExJQUFRcUFFTDVRSUJBWDhnQTBFQU5nSUVBa0FDUUNBREFuOGdBaUFDS0FJQUtBSVVFUUFBSWdVRVFDQUZFRXRCQUJBUEtBSUFEQUVMQWtBZ0FpQUNLQUlBS0FLRUFSRUFBQkRtQVFSQUlBTWdBallDQkNBQ0lBSW9BZ0FvQWpBUkFBQWlBMFVOQVVFQklBTVFrQUlRalFaQkFVZ05BaG9nQXhDUUFrRUFFQThvQWdBTUFnc0NRQ0FDSUFJb0FnQW9BaHdSQUFCRkRRQWdBaUFDS0FJQUtBSWNFUUFBS0FKb1FjVUVSdzBBSUFJZ0FpZ0NBQ2dDSEJFQUFDSUZJQVVvQWdBb0Fyd0JFUUFBSWdVZ0JTZ0NBQ2dDZUJFQUFCQ0ZBVVVOQUNBRElBSWdBaWdDQUNnQ0hCRUFBRFlDQkF3QkN5QURRUUUyQWdBTUFndEJBUXNpQXpZQ0FDQUNJQUlvQWdBb0FvQUJFUUFBUVFoSEJFQWdBaUFDS0FJQUtBS0FBUkVBQUVFSlJ3MEJDeUFEUVFCS0RRRWdBQ0FCSUFSQjQ5WUpRZlM4Q2tFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQUNBQklBUkI0OVlKUWM2OENrRUFJQUFvQWdBb0FxQUJFUUlBQ3d2NEFRRUJmeU1BUVJCcklnUWtBQUpBSUFKQkFYSkJEMGNOQUNBRElBTW9BZ0FvQXBRQkVRQUFSUTBBSUFRZ0F4Q3BBaUFBSUFGQm1Md0tJQVFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUNBRUVCa2FDd0pBSUFBdEFLUUJEUUFnQXhDd0FnUkFJQVFnQXhDcEFpQUFJQUVnQkJBVFFhN3FDU0FBS0FJQUtBSlFFUVFBSUFRUUdSb0xJQUF0QUtRQkRRQWdBeEN2QWdSQUlBUWdBeENwQWlBQUlBRWdCQkFUUWV2cUNTQUFLQUlBS0FKY0VRUUFJQVFRR1JvTElBQXRBS1FCRFFBZ0F4REdBa1VOQUNBRUlBTVFxUUlnQUNBQklBUVFFMEdwNndrZ0FDZ0NBQ2dDYUJFRUFDQUVFQmthQ3lBRVFSQnFKQUFMbWdVQkFYNGdBUkROQkFSQUlBQWdBQ2tDQkVMLy8vLy8vLy8vUjRNZ0FTa0NCRUtBZ0lDQWdJQ0FPSU9FTndJRUN5QUJFSVlEQkVBZ0FDQUFLUUlFUXYvLy8vLy8vLysvZUlNZ0FTa0NCRUtBZ0lDQWdJQ0F3QWVEaERjQ0JBc2dBUkN4QXdSQUlBQWdBU2tDR0VJWWlEd0FHd3NnQVJDZkJ3UkFJQUFnQVMwQUpEb0FKQXNnQVJDVkFnUkFJQUFnQUNrQ0dFTC8vLy8vajM2RElBRXBBaGhDZ0lDQWdQQUJnNFEzQWhnTElBRVFxd2tFUUNBQUlBQW9BaUJCLy8rZmNIRWdBU2dDSUVHQWdPQVBjWEkyQWlBTElBRVEyUU1FUUNBQUlBRW9BaEEyQWhBTEFrQWdBZzBBSUFFUWdBSUVRQ0FBSUFBb0FoUkJnR0J4SUFFb0FoUkIveDl4Y2pZQ0ZBc2dBUkNXQWdSQUlBQWdBU2dDRERZQ0RBc2dBUkNyQlFSQUlBQWdBQ2dDRkVILy80RitjU0FCS0FJVVFZQ0EvZ0Z4Y2pZQ0ZBc2dBVE1CR0NJRFF2Ly9BMUlFUUNBQUlBTTlBUmdMSUFFUXFRVUVRQ0FBSUFBb0FpQkIvNEZnY1NBQktBSWdRWUQrSDNGeU5nSWdDeUFCRUxJREJFQWdBQ0FBS0FJVVFmK2ZmbkVnQVNnQ0ZFR0E0QUZ4Y2pZQ0ZBc2dBUkRPQkFSQUlBQWdBU2tDR0VJUWlEd0FHZ3NnQVJDQ0JnUkFJQUFnQUNrQ0dFTC8vLy8vLzRHQWZvTWdBU2tDR0VLQWdJQ0FnUDcvQVlPRU53SVlDeUFCRUlVREJFQWdBQ0FBS1FJWVF2Ly8vLy8vLy8rQmdIK0RJQUVwQWhoQ2dJQ0FnSUNBZ1A3L0FJT0VOd0lZQ3lBQkVNb0VCRUFnQUNBQktBSWdPZ0FnQ3lBQkxRQWxCRUFnQUVFQk9nQWxDeUFCTFFBbUJFQWdBRUVCT2dBbUN5QUJMUUFuQkVBZ0FFRUJPZ0FuQ3lBQkxRQW9CRUFnQUVFQk9nQW9DeUFCS0FJc0lnSkJnSEJIQkVBZ0FDQUNOZ0lzQ3lBQkxRQXdCRUFnQUVFQk9nQXdDeUFCTFFBSVFSQnhSUTBBSUFBZ0FDa0NCRUtBZ0lDQWdBS0VOd0lFQ3d1akV3SUJmeGwrQWtBZ0F4RHJBVVVOQUNBQ0VPc0JSUTBBSUFBZ0FVR090QXBCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQU1RbVFKRkRRQWdBaENaQWtVTkFDQUFJQUZCMHJRS1FlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBRURRQUNRQ0FBRURORkJFQWdBQ2dDRUVHa0EwZ05BUXNnQUJBelJRMEJJQUFvQWhCQnRRSktEUUVMSUFCQm9PTUpJQUFvQWdBb0FpQVJBd0FOQUFKQUlBTVF0d05GRFFBQ1FDQUNMUUFIUVFoeERRQWdBaENaQWcwQUlBSVE2d0VOQUNBQ0tBSUVRYitBZ0RoeFJRMEJDeUFBSUFGQnI3VUtRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FBSkFJQU10QUFkQkNIRkZEUUFDUUNBQ0VKa0NEUUFnQWhEckFRMEFJQUlvQWdSQnY0Q0FPSEZGRFFFTElBQWdBVUhUdFFwQjQ5WUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMQWtBZ0F4Q1pBa1VOQUNBQ0VPc0JSUVJBSUFJb0FnUkJ2NENBT0hGRkRRRUxJQUFnQVVHc3RncEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTEFrQWdBeERyQVVVTkFDQUNLQUlFUWIrQWdEaHhSUTBBSUFBZ0FVSDV0Z3BCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBRUxJQU10QUFSQlAzRkZEUUFnQWkwQUIwRUhjVVVOQUNBQUlBRkI0TGNLUWVQV0NVSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FERUxjRFJRMEFJQUlvQWdSQlAzRWlCVUVPUzBFQklBVjBRWVRBQVhGRmNnMEFJQUFnQVVHdnRRcEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBREtRSUVRaitEUWdKU0RRQWdBaWdDQkVFL2NVRnpha0VCU3cwQUlBQWdBVUdTdUFwQjQ5WUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBQWtBQ1FBSkFBa0FDUUNBQ0tRSUVJZ2FuUVQ5eElnVkJBazhFUUNBRlFRMUdCRUFnQXlrQ0JFSS9nMElPVVEwRkN5QUdRaitESWdkQ2Mzd2lDRUlCV0EwQklBZENBbElFUUNBREtRSUVJUWNNQmdzZ0F5a0NCQ0lIUWorRFFnMVNEUVVNQWdzZ0FpQURLUUlFUWorRElBWkNRSU9FTndJRURBVUxJQWluUVFGclJRMEJJQU1wQWdRaUIwSS9nMElDVWcwREN5QUNJQVpDUUlOQ0VJUTNBZ1FNQXdzZ0F5a0NCQ0lIUWorRFFnMVNEUUVMSUFJZ0JrSkFnMElQaERjQ0JBd0JDeUFIcDBFL2NTSUZRUUpKRFFBZ0FDQUJRYks0Q2lBRkVOTUNRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFRTkFDQURMUUFIUVFkeElnVkZEUUFnQWkwQUIwRUhjVVVOQUNBQUlBRkJ6cmdLSUFVUW5nZEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FDUUNBQ0tRSUVJZ1pDZ0lDQU9JTlFSUVJBSUFSRkRRRWdBeWtDQkVLQWdJQTRneUlIVUEwQ0lBSWdCeUFHUXYvLy8wZURoRGNDQkF3Q0N5QUNJQU1wQWdSQ2dJQ0FPSU1nQmtMLy8vOUhnNFFpQmpjQ0JDQUVEUUVMSUFNcEFnUWlCMEtBZ0lDQWdJQUlnMUJGUVFBZ0JrS0FnSUNBZ0lEZ0E0TkNBRkliSUFkQ2dJQ0FnSUNBSUlOUVJVRUFJQVpDZ0lDQWdJQ0F5QU9EUWdCU0czSWdCMEtBZ0lDQWdJREFBSU5RUlVFQUlBWkNnSUNBZ0lDQXFBT0RRZ0JTR3lBSFFvQ0FnSUNBZ0lBQmcxQkZRUUFnQmtLQWdJQ0FnSURvQW9OQ0FGSWJjbkpGQkVBZ0IwS0FnSUNBZ0lDQUFvTlFJQVpDZ0lDQWdJQ0E2QUdEVUhJTkFRc2dBQ0FCUWZPNENpQUhwMEVZZGtFSGNSQ2VCMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlBRFFRQVFrQVlnQWlBQ0tRSUVJZ1lnQXlrQ0JDSUhRb0NBZ01BQWc0UWlDRGNDQkNBQ0lBZ2dBeWtDQkNJSVFvQ0FnSUFCZzRRaUNUY0NCQ0FDSUFrZ0F5a0NCQ0lKUW9DQWdJQUNnNFFpQ2pjQ0JDQUNJQW9nQXlrQ0JDSUtRb0NBZ0lBRWc0UWlDemNDQkNBQ0lBc2dBeWtDQkNJTFFvQ0FnSUFJZzRRaUREY0NCQ0FDSUF3Z0F5a0NCQ0lNUW9DQWdJQWdnNFFpRFRjQ0JDQUNJQTBnQXlrQ0JDSU5Rb0NBZ0lEQUFJT0VJZzQzQWdRZ0FpQU9JQU1wQWdRaURrS0FnSUNBZ0FHRGhDSVBOd0lFSUFJZ0R5QURLUUlFSWc5Q2dJQ0FnSUFFZzRRaUVEY0NCQ0FDSUJBZ0F5a0NCQ0lRUW9DQWdJQ0FDSU9FSWhFM0FnUWdBaUFSSUFNcEFnUWlFVUtBZ0lDQWdCQ0RoQ0lTTndJRUlBSWdFaUFES1FJRUloSkNnSUNBZ0lBZ2c0UWlFemNDQkNBQ0lCTWdBeWtDQkNJVFFvQ0FnSUNBd0FDRGhDSVVOd0lFSUFJZ0ZDQURLUUlFSWhSQ2dJQ0FnSUNBQ0lPRUloVTNBZ1FnQWlBVklBTXBBZ1FpRlVLQWdJQ0FnSUFnZzRRaUZqY0NCQ0FDSUJZZ0F5a0NCQ0lXUW9DQWdJQ0FnTUFBZzRRaUZ6Y0NCQ0FDSUJjZ0F5a0NCQ0lYUW9DQWdJQ0FnSUFCZzRRaUdEY0NCQ0FDSUJnZ0F5a0NCQ0lZUW9DQWdJQ0FnSUFDZzRRaUdUY0NCQ0FDSUJrZ0F5a0NCQ0laUW9DQWdJQ0FnSUFFZzRRaUdqY0NCQ0FDSUJvZ0F5a0NCQ0lhUW9DQWdJQ0FnQkNEaENJYk53SUVJQUlnR3lBREtRSUVJaHRDZ0lDQWdJQ0FBWU9FSWh3M0FnUWdBaUFjSUFNcEFnUWlIRUtBZ0lDQWdJQUNnNFFpSFRjQ0JDQUNJQjBnQXlrQ0JDSWRRb0NBZ0lDQWdBU0RoQ0llTndJRUlBSWdIaUFES1FJRUloNUNnSUNBZ0JDRGhEY0NCRUVBSUFpblFSeDJRUUZ4SUFaQ2dJQ0FnQUdEVUJ0QkFDQUhwMEViZGtFQmNTQUdRb0NBZ01BQWcxQWJja0VBSUFtblFSMTJRUUZ4SUFaQ2dJQ0FnQUtEVUJ0eVFRQWdDcWRCSG5aQkFYRWdCa0tBZ0lDQUJJTlFHM0lnQmlBTGc2ZEJIM1p5UVFBZ0RFSWhpS2RCQVhFZ0JrS0FnSUNBSUlOUUczSkJBQ0FOUWlLSXAwRUJjU0FHUW9DQWdJREFBSU5RRzNKQkFDQU9RaU9JcDBFQmNTQUdRb0NBZ0lDQUFZTlFHM0pCQUNBUFFpV0lwMEVCY1NBR1FvQ0FnSUNBQklOUUczSkJBQ0FRUWlhSXAwRUJjU0FHUW9DQWdJQ0FDSU5RRzNKQkFFZEJBQ0FSUWllSXAwRUJjU0FHUW9DQWdJQ0FFSU5RRzNKQkFDQVNRaWlJcDBFQmNTQUdRb0NBZ0lDQUlJTlFHM0pCQUNBVFFpbUlwMEVCY1NBR1FvQ0FnSUNBd0FDRFVCdHlRUUFnRkVJdGlLZEJBWEVnQmtLQWdJQ0FnSUFJZzFBYmNrRUFJQlZDTDRpblFRRnhJQVpDZ0lDQWdJQ0FJSU5RRzNKQkFFZEJBQ0FXUWpDSXAwRUJjU0FHUW9DQWdJQ0FnTUFBZzFBYmNrRUFJQmRDTVlpblFRRnhJQVpDZ0lDQWdJQ0FnQUdEVUJ0eVFRQWdHRUl5aUtkQkFYRWdCa0tBZ0lDQWdJQ0FBb05RRzNKQkFDQVpRak9JcDBFQmNTQUdRb0NBZ0lDQWdJQUVnMUFiY2tFQUlCcENMb2luUVFGeElBWkNnSUNBZ0lDQUVJTlFHM0pCQUNBYlFpcUlwMEVCY1NBR1FvQ0FnSUNBZ0FHRFVCdHlRUUFnSEVJcmlLZEJBWEVnQmtLQWdJQ0FnSUFDZzFBYmNrRUFJQjFDTElpblFRRnhJQVpDZ0lDQWdJQ0FCSU5RRzNKQkFDQWVRaUNJcDBFQmNTQUdRb0NBZ0lBUWcxQWJjZ1JBSUFBZ0FVSGR1UXBCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3dHFBQUpBQWtBZ0FpQUNLQUlBS0FLQUFSRUFBRUVNUncwQUlBSWdBaWdDQUNnQ29BRVJBQUFOQUNBQ0lBSW9BZ0FvQXB3QkVRQUFEUUFnQWlBQ0tBSUFLQUtrQVJFQUFFVU5BUXNnQUNBQlFkdWtDa0hqMWdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTEN3MEFJQUF0QUFoQkNIRkJBM1lMMWdFQkFuOGpBRUV3YXlJRkpBQUNRQ0FBS0FJb1FiQUVJQUlnQVNBQktBSUFLQUlNRVFBQUVMY0VJZ1lFUUNBR0lBWW9BZ0FvQW5nUkFBQWdBaERBQVVVTkFRc2dCVUVnYWlBQklBRW9BZ0FvQWd3UkFBQWlBU0FCS0FJQUtBSjRFUUFBRU1vQklBVkJJR29RRXlFQklBVkJFR29nQWhES0FTQUZRUkJxRUJNaEFpQUFLQUlBS0FLZ0FTRUdJQVVnQWpZQ0NDQUZJQUUyQWdRZ0JTQUROZ0lBSUFBZ0JFSGoxZ2xCNUpvS1FidWNDeUFGSUFZUkFnQWdCVUVRYWhBWkdpQUZRU0JxRUJrYVFRQWhCZ3NnQlVFd2FpUUFJQVlMcHdjQkNuOGpBRUh3QVdzaUJDUUFBa0FnQWtVTkFDQUNJQUlvQWdBb0Fnd1JBQUJGRFFBZ0FDQUJRZVNhQ2lBQ0lBSW9BZ0FvQWd3UkFBQWdBQ2dDQUNnQzhBRVJCQUFnQWlBQ0tBSUFLQUlZRVFBQUlRVWdBQ2dDS0NBREVMUUlJZ1pCc1FSR0JFQWdCU0FGS0FJQUtBSzhBUkVBQUVFQkVCRW9BZ0FpQWlBQ0tBSUFLQUlNRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaUFSQUFBdEFBSkJBbkVFUUNBRklBVW9BZ0FvQXJ3QkVRQUFRUUFRRVNnQ0FDSUNJQUlvQWdBb0Fnd1JBQUFpQWlBQ0tBSUFLQUo4RVFBQUlnSWdBaWdDQUNnQ0pCRUFBQ0lDSUFJb0FnQkJnSUFJY2pZQ0FBc2dBQ2dDS0JvZ0JDQUJLUUlJTndNSUlBUWdBU2tDQURjREFDQUZRYkVFSUFNZ0JCQ2tBaUVGREFFTElBUkI2QUZxSVFvZ0JrR3dCRVlFUUNBS0lBTW9Ba0FRUURZQ0FBc2dCRUdRQVdwQkFFRUFRUUZCQUVFQVFRQVFSU0VKQWtBZ0F5QURLQUlBS0FKd0VRQUFCRUFnQ1NBRVFUaHFJQU5CQUVFQUVNMEJJZ2NRandFZ0J4QTFHZ3dCQ3lBSklBTVFqd0VMQWtBQ1FBSkFJQVVFUUNBRktBSm9SUTBCQ3dKL0lBTWdBeWdDQUNnQ2NCRUFBQVJBSUFBZ0FpQUpRUUVnQWlBQ0tBSUFLQUlBRVFBQUVKUUdEQUVMSUFaQnNBUkdCRUFnQUNBQ0lBb29BZ0FvQWdCQkFTQUNJQUlvQWdBb0FnQVJBQUFRbEFZTUFRc2dBQ0FESUFZZ0FpQUNLQUlBS0FJTUVRQUFJQUlnQWlnQ0FDZ0NBQkVBQUVFQUVNUUhDeUlGUlEwQlFRQWdCa0d3QkVjZ0F5QURLQUlBS0FKd0VRQUFHdzBDSUFBb0FpZ2FJQVFnQVNrQ0NEY0RHQ0FFSUFFcEFnQTNBeEFnQlVHd0JDQURJQVJCRUdvUXBBSWhCUXdDQ3lBRUlBVWdCU2dDQUNnQ3ZBRVJBQUFpQ3hCQU5nSTRJQVFnQ3hBeU5nSXdJQVJCT0dvZ0JFRXdhaEFlQkVBZ0JrR3dCRWNoREVFQUlRY0RRQ0FESUFNb0FnQW9BbkFSQUFBaERTQUVLQUk0S0FJQUlRZ0NmeUFOQkVBZ0FDQUlJQWtnQjBFQmFpQUNJQUlvQWdBb0FnQVJBQUFRbEFZTUFRc2dERVVFUUNBQUlBZ2dDaUFIRURnb0FnQWdCMEVCYWlBQ0lBSW9BZ0FvQWdBUkFBQVFsQVlNQVFzZ0FDQURJQVlnQ0NBSUtBSUFLQUlNRVFBQUlBSWdBaWdDQUNnQ0FCRUFBRUVCRU1RSEN5SUlSUTBDSUFRb0FqZ2dDRFlDQUNBRVFUaHFFTTRCR2lBRUlBc1FNallDTUNBSFFRRnFJUWNnQkVFNGFpQUVRVEJxRUI0TkFBc0xJQUFvQWlnYUlBUWdBU2tDQ0RjREtDQUVJQUVwQWdBM0F5QWdCU0FHSUFNZ0JFRWdhaENrQWlFRkRBRUxRUUFoQlFzZ0NSQTFHZ3NnQkVId0FXb2tBQ0FGQ3cwQUlBQXRBQWxCQ0hGQkEzWUxmd0VEZnlNQVFSQnJJZ0lrQUFKQUFrQWdBQ2dDUkMwQU5RUkFJQUFvQWtBTkFRc2dBQkRYQVNFRElBQW9BZ0FvQXFBQklRUWdBa0hqMWdrMkFnQWdBQ0FEUWVQV0NVSGoxZ2tnQVNBQ0lBUVJBZ0FNQVFzZ0FDQUFFTmNCUWVUV0NVSGoxZ2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFKQkVHb2tBQXNNQUNBQVFieXBBV290QUFRTEZ3QWdBRUVCT2dEYUF5QUFRWUFIYWtHd3VRc1Frd0lMWFFFQmZ5TUFRUkJySWdZa0FDQUJFQnNpQVNBQVFSQVFKaUFHUVFocUlBRkJBQkREQVJDUkFTSUFLQUlBUVFocUlBTWdCQ0FGRU04SElBQVFKVUVCT2dBRUlBQW9BZ0FnQWpZQ0JDQUFLQUlBUVFBMkFnQWdCa0VRYWlRQUN3OEFJQUVvQWdBZ0FpZ0NBQkREQlFzVUFDQUFJQUJCQ0dvb0FnQVEyZzhnQUJDNEJRdS9BZ0VGZndKQUlBQXRBRFVOQUFKQUFrQUNRQ0FBS0FJVUlnRkZCRUFnQUNnQ0RDRUVJQUFvQWhBaEFRTkFJQUZCQWtnaEF5QUVJQUZCZjJvaUFVRUNkR29vQWdBaEFpQUREUUlnQWtVTkFBc2dBQ0FCTmdJUURBSUxJQUFnQVVGL2FpSUNOZ0lVSUFBb0FoZ2dBQ2dDRUNJQlFRUjBhaUlESUFNb0FneEJmMm8yQWd3Z0FDQUFLQUl3UVg5cU5nSXdJQU1vQWd4QmYwb05BZ0pBSUFKRkRRQWdBQ2dDQ0NBQlFRSjBhaWdDQUNFRklBSWhBUU5BSUFFZ0JXb3RBQUJCQ2tZRVFDQUJJUVFNQWdzZ0FVRi9haUlCRFFBTEN5QUFJQUlnQkdzaUFUWUNNQ0FESUFFMkFnd01BZ3NnQUNBQk5nSVFJQUlOQUNBQVFRQTJBaFFNQVFzZ0FDQUNRWDlxTmdJVUN5QUFFTm9CUVFwSERRQWdBQ2dDR0NBQUtBSVFRUVIwYWlJQklBRW9BZ2hCZjJvMkFnZ2dBQ0FBS0FJc1FYOXFOZ0lzQ3d0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFFSmdLSWdNZ0FVOEVRQ0FBRU5ZQ0lnQWdBMEVCZGtrRVFDQUNJQUJCQVhRMkFnZ2dBa0VJYWlBQ1FReHFFRklvQWdBaEF3c2dBa0VRYWlRQUlBTVBDeEJ1QUFzc0FDQUFLQUlBR2lBQUtBSUFJQUFRdVFOQkJIUnFHaUFBS0FJQUlBQVF1UU5CQkhScUdpQUFLQUlBR2dzTkFDQUFJQUZCQW5ScUtBSUVDMEFDQVg4QmZDQUFLQUlFRUtnQkJFQURRQ0FESUFBZ0FoQVBLd01BSUFFZ0FoQVBLd01Bb3FBaEF5QUNRUUZxSWdJZ0FDZ0NCQkNvQVVrTkFBc0xJQU1MS0FBZ0FCREZCU0FBUVlpRUNUWUNBQ0FBUVJScVFRQkJBRUVCUVFCQkFFRUFFRVVnQVJDUEFRc25BQ0FBSUFJUW9nWWdBRUgwa2drMkFnQWdBRUhvQUdvZ0FSRGhBeG9nQUVFQU9nQndJQUFMN1FFQkFYOGdBQkRKQWlFQUFrQWdBU2dDQ0VGK2FpSURRUWxMRFFBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRKQ1FNR0JBY0FBUVVJQWdzZ0FDQUJLQUlBSUFJb0FnQnJFR1VQQ3lBQUlBRW9BZ0FnQWlnQ0FHc1FiUThMSUFBZ0FTc0RBQ0FDS3dNQW9SQXREd3NnQUNBQkxRQUFJQUl0QUFCclFSaDBRUmgxRUd3UEN5QUFJQUV2QVFBZ0FpOEJBR3RCRUhSQkVIVVFjZzhMSUFBZ0FTa0RBQ0FDS1FNQWZSQmJEd3NnQUNBQkxRQUFJQUl0QUFCclFmOEJjUkIyRHdzZ0FDQUJMd0VBSUFJdkFRQnJRZi8vQTNFUWNROExJQUFnQVNrREFDQUNLUU1BZlJCYUN3dXhBUUVDZndKQUlBQW9BZ2hCZm1vaUEwRUpTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFOQkFXc09DUWtEQkFVR0FBRUhDQUlMSUFBb0FnQWdBU2dDQUVvUEN5QUFLQUlBSUFFb0FnQkxEd3NnQUNzREFDQUJLd01BWkE4TElBQXNBQUFnQVN3QUFFb1BDeUFBTFFBQUlBRXRBQUJMRHdzZ0FDNEJBQ0FCTGdFQVNnOExJQUF2QVFBZ0FTOEJBRXNQQ3lBQUtRTUFJQUVwQXdCVkR3c2dBQ2tEQUNBQktRTUFWaUVDQ3lBQ0M3RUJBUUovQWtBZ0FDZ0NDRUYrYWlJRFFRbExEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQTBFQmF3NEpDUUFCQWdNSENBUUZCZ3NnQUN3QUFDQUJMQUFBU0E4TElBQXRBQUFnQVMwQUFFa1BDeUFBTGdFQUlBRXVBUUJJRHdzZ0FDOEJBQ0FCTHdFQVNROExJQUFwQXdBZ0FTa0RBRk1QQ3lBQUtRTUFJQUVwQXdCVUR3c2dBQ3NEQUNBQkt3TUFZdzhMSUFBb0FnQWdBU2dDQUVnUEN5QUFLQUlBSUFFb0FnQkpJUUlMSUFJTENnQWdBQ2dDQUNBQlJndVhBZ0VDZndKQUlBRW9BZ2dpQXlBQUtBSUlSdzBBQWtBZ0EwRithaUlDUVFwTERRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FDUVFGckRnb0tCZ2NFQlFBQkNBa0NBd3RCQVNFQ0lBRW9BZ0FnQUNnQ0FFY05DUXdLQzBFQklRSWdBU2dDQUNBQUtBSUFSdzBJREFrTFFRRWhBaUFCTFFBQUlBQXRBQUJIRFFjTUNBdEJBU0VDSUFFckF3QWdBQ3NEQUdJTkJnd0hDMEVCSVFJZ0FTOEJBQ0FBTHdFQVJ3MEZEQVlMUVFFaEFpQUJMd0VBSUFBdkFRQkhEUVFNQlF0QkFTRUNJQUV0QUFBZ0FDMEFBRWNOQXd3RUMwRUJJUUlnQVMwQUFDQUFMUUFBUncwQ0RBTUxRUUVoQWlBQktRTUFJQUFwQXdCU0RRRU1BZ3RCQVNFQ0lBRXBBd0FnQUNrREFGRU5BUXRCQUNFQ0N5QUNDdzhBSUFCQkVHb1FHUm9nQUJBWkdnc3BBQ0FCQkVBZ0FDQUJLQUlBRUtvR0lBQWdBU2dDQkJDcUJpQUFFTmNDR2lBQlFSQnFFS2tHQ3dzSEFDQUFLQUp3Q3drQUlBQWdBVFlDS0F1RkFRRUNmeU1BUVJCcklnTWtBQ0FBS0FJRUlRUUNmd0pBSUFBb0FnQVFSQkRoQkVFQlJnUkFJQUFvQWdBUVJDQURRUXhxRU9NSERRRUxJQVFnQUNnQ0NDZ0NBQ0lBSUFBb0FnQW9BZ0FSQUFCQjZvd0pJQUZCMG9zSlFRQWdCQ2dDQUNnQ3BBRVJBZ0JCQUF3QkN5QUNJQU1vQWd3MkFnQkJBUXNoQWlBRFFSQnFKQUFnQWdzTkFDQUFLQUlBSUFFb0FnQkhDeUVBSUFBUTBRNGdBQ2dDQUFSQUlBQW9BaEFhSUFBb0FnQWFJQUFRaUFNYUN3dUVBUUVDZnlBQVJRUkFJQUVRbXdFUEN5QUJRVUJQQkVCQjJNQVVRVEEyQWdCQkFBOExJQUJCZUdwQkVDQUJRUXRxUVhoeElBRkJDMGtiRUlrUklnSUVRQ0FDUVFocUR3c2dBUkNiQVNJQ1JRUkFRUUFQQ3lBQ0lBQWdBRUY4YWlnQ0FDSURRWGh4UVFSQkNDQURRUU54RzJzaUF5QUJJQU1nQVVrYkVEMGFJQUFRS2lBQ0Mya0JBbjhqQUVFUWF5SUVKQUFnQkVFQU5nSU1JQUJCREdvZ0JFRU1haUFERUlFQ0lBRUVRQ0FBS0FJUUlBRVE1QWNoQlFzZ0FDQUZOZ0lBSUFBZ0JTQUNRUUowYWlJQ05nSUlJQUFnQWpZQ0JDQUFFQ01nQlNBQlFRSjBhallDQUNBRVFSQnFKQUFnQUF0SkFRSi9JQUFvQWdRaUJVRUlkU0VHSUFBb0FnQWlBQ0FCSUFWQkFYRUVmeUFDS0FJQUlBWnFLQUlBQlNBR0N5QUNhaUFEUVFJZ0JVRUNjUnNnQkNBQUtBSUFLQUlZRVFnQUN3a0FJQUJCQURZQ0FBdTJBUUVEZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dDUUFKQUFrQUNmeUFBRU1FQklnUkZCRUJCQVNFQklBQXRBQXNNQVFzZ0FCRENCRUYvYWlFQklBQW9BZ1FMSWdNZ0FVWUVRQ0FBSUFGQkFTQUJJQUVRMWdvZ0FCREJBVVVOQVF3Q0N5QUVEUUVMSUFBaEFTQUFJQU5CQVdvUTFBRU1BUXNnQUNnQ0FDRUJJQUFnQTBFQmFoQzhBUXNnQVNBRFFRSjBhaUlBSUFKQkRHb1Fud0lnQWtFQU5nSUlJQUJCQkdvZ0FrRUlhaENmQWlBQ1FSQnFKQUFMZVFFRGZ5TUFRUkJySWdNa0FFRnZJQUpQQkVBQ1FDQUNRUXBOQkVBZ0FDQUNFTlFCSUFBaEJBd0JDeUFBSUFBZ0FoRGtBa0VCYWlJRkVJRUVJZ1FRNFFFZ0FDQUZFT2tCSUFBZ0FoQzhBUXNnQkNBQklBSVE2QUVnQTBFQU9nQVBJQUlnQkdvZ0EwRVBhaENVQVNBRFFSQnFKQUFQQ3hCdUFBc2JBUUYvUVFFaEFTQUFFTUVCQkg4Z0FCRENCRUYvYWdVZ0FRc0xNd0VCZnlBQUVCWWlBaUFCU1FSQUlBQWdBU0FDYXhDeUVROExJQUlnQVVzRVFDQUFJQUFvQWdBZ0FVRUNkR29RekFVTEN4TUFJQUFnQVNnQ0FDSUFOZ0lBSUFBUXVRWUxEd0FnQUNBQUtBSUVRUUZxTmdJRUN4RUFJQUFnQVNBQktBSUFLQUlvRVFFQUN3Z0FJQUFReWdJYUN3Z0FRZi8vLy84SEN3VUFRZjhBQ3drQUlBQWdBUkRmRWd2a0F3RUlmeU1BUVJCcklnb2tBQ0FHRUlrQ0lRc2dDaUFHRU9nRUlnWVFod0lDUUNBS0VQc0JCRUFnQ3lBQUlBSWdBeEMvQXlBRklBTWdBaUFBYTBFQ2RHb2lCallDQUF3QkN5QUZJQU0yQWdBQ1FDQUFJZ2N0QUFBaUNFRlZhaUlKUVFKTERRQWdDVUVCYTBVTkFDQUxJQWhCR0hSQkdIVVFuUUloQnlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFjMkFnQWdBRUVCYWlFSEN3SkFJQUlnQjJ0QkFrZ05BQ0FITFFBQVFUQkhEUUFnQnkwQUFVRWdja0g0QUVjTkFDQUxRVEFRblFJaENDQUZJQVVvQWdBaUNVRUVhallDQUNBSklBZzJBZ0FnQ3lBSExBQUJFSjBDSVFnZ0JTQUZLQUlBSWdsQkJHbzJBZ0FnQ1NBSU5nSUFJQWRCQW1vaEJ3c2dCeUFDRUtVRUlBWVFpQUloREVFQUlRbEJBQ0VJSUFjaEJnTi9JQVlnQWs4RWZ5QURJQWNnQUd0QkFuUnFJQVVvQWdBUXZnWWdCU2dDQUFVQ1FDQUtJQWdRVUMwQUFFVU5BQ0FKSUFvZ0NCQlFMQUFBUncwQUlBVWdCU2dDQUNJSlFRUnFOZ0lBSUFrZ0REWUNBQ0FJSUFnZ0NoQWZRWDlxU1dvaENFRUFJUWtMSUFzZ0Jpd0FBQkNkQWlFTklBVWdCU2dDQUNJT1FRUnFOZ0lBSUE0Z0RUWUNBQ0FHUVFGcUlRWWdDVUVCYWlFSkRBRUxDeUVHQ3lBRUlBWWdBeUFCSUFCclFRSjBhaUFCSUFKR0d6WUNBQ0FLRUNBYUlBcEJFR29rQUF2UUFRRURmeUFDUVlBUWNRUkFJQUJCS3pvQUFDQUFRUUZxSVFBTElBSkJnQWh4QkVBZ0FFRWpPZ0FBSUFCQkFXb2hBQXNnQWtHRUFuRWlBMEdFQWtjRVFDQUFRYTdVQURzQUFFRUJJUVFnQUVFQ2FpRUFDeUFDUVlDQUFYRWhBZ05BSUFFdEFBQWlCUVJBSUFBZ0JUb0FBQ0FBUVFGcUlRQWdBVUVCYWlFQkRBRUxDeUFBQW44Q1FDQURRWUFDUndSQUlBTkJCRWNOQVVIR0FFSG1BQ0FDR3d3Q0MwSEZBRUhsQUNBQ0d3d0JDMEhCQUVIaEFDQUNHeUFEUVlRQ1JnMEFHa0hIQUVIbkFDQUNHd3M2QUFBZ0JBdmJBd0VJZnlNQVFSQnJJZ29rQUNBR0VQb0JJUXNnQ2lBR0VPb0VJZ1lRaHdJQ1FDQUtFUHNCQkVBZ0N5QUFJQUlnQXhEdUF5QUZJQU1nQWlBQWEyb2lCallDQUF3QkN5QUZJQU0yQWdBQ1FDQUFJZ2N0QUFBaUNFRlZhaUlKUVFKTERRQWdDVUVCYTBVTkFDQUxJQWhCR0hSQkdIVVEzZ0VoQnlBRklBVW9BZ0FpQ0VFQmFqWUNBQ0FJSUFjNkFBQWdBRUVCYWlFSEN3SkFJQUlnQjJ0QkFrZ05BQ0FITFFBQVFUQkhEUUFnQnkwQUFVRWdja0g0QUVjTkFDQUxRVEFRM2dFaENDQUZJQVVvQWdBaUNVRUJhallDQUNBSklBZzZBQUFnQ3lBSExBQUJFTjRCSVFnZ0JTQUZLQUlBSWdsQkFXbzJBZ0FnQ1NBSU9nQUFJQWRCQW1vaEJ3c2dCeUFDRUtVRUlBWVFpQUloREVFQUlRbEJBQ0VJSUFjaEJnTi9JQVlnQWs4RWZ5QURJQWNnQUd0cUlBVW9BZ0FRcFFRZ0JTZ0NBQVVDUUNBS0lBZ1FVQzBBQUVVTkFDQUpJQW9nQ0JCUUxBQUFSdzBBSUFVZ0JTZ0NBQ0lKUVFGcU5nSUFJQWtnRERvQUFDQUlJQWdnQ2hBZlFYOXFTV29oQ0VFQUlRa0xJQXNnQml3QUFCRGVBU0VOSUFVZ0JTZ0NBQ0lPUVFGcU5nSUFJQTRnRFRvQUFDQUdRUUZxSVFZZ0NVRUJhaUVKREFFTEN5RUdDeUFFSUFZZ0F5QUJJQUJyYWlBQklBSkdHellDQUNBS0VDQWFJQXBCRUdva0FBc01BQ0FBRUJNZ0FVRUNkR29MdndRQkMzOGpBRUdBQVdzaUNDUUFJQWdnQVRZQ2VDQUNJQU1RcmdzaENTQUlRZFFFTmdJUUlBaEJDR3BCQUNBSVFSQnFFSjRCSVJBZ0NFRVFhaUVLQWtBZ0NVSGxBRThFUUNBSkVKc0JJZ3BGRFFFZ0VDQUtFTVlCQ3lBS0lRY2dBaUVCQTBBZ0FTQURSZ1JBQTBBQ1FDQUpRUUFnQUNBSVFmZ0FhaEQyQVJ0RkJFQWdBQ0FJUWZnQWFoREhBUVJBSUFVZ0JTZ0NBRUVDY2pZQ0FBc01BUXNnQUJDbEFTRU9JQVpGQkVBZ0JDQU9FTjRCSVE0TElBeEJBV29oRFVFQUlROGdDaUVISUFJaEFRTkFJQUVnQTBZRVFDQU5JUXdnRDBVTkF5QUFFTDBCR2lBS0lRY2dBaUVCSUFrZ0MycEJBa2tOQXdOQUlBRWdBMFlFUUF3RkJRSkFJQWN0QUFCQkFrY05BQ0FCRUI4Z0RVWU5BQ0FIUVFBNkFBQWdDMEYvYWlFTEN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBQUxBQVVDUUNBSExRQUFRUUZIRFFBZ0FTQU1FTUlHS0FJQUlSRUNRQ0FHQkg4Z0VRVWdCQ0FSRU40QkN5QU9SZ1JBUVFFaER5QUJFQjhnRFVjTkFpQUhRUUk2QUFBZ0MwRUJhaUVMREFFTElBZEJBRG9BQUFzZ0NVRi9haUVKQ3lBSFFRRnFJUWNnQVVFTWFpRUJEQUVMQUFBTEFBc0xBa0FDUUFOQUlBSWdBMFlOQVNBS0xRQUFRUUpIQkVBZ0NrRUJhaUVLSUFKQkRHb2hBZ3dCQ3dzZ0FpRUREQUVMSUFVZ0JTZ0NBRUVFY2pZQ0FBc2dFQkNkQVNBSVFZQUJhaVFBSUFNUEJRSkFJQUVRK3dGRkJFQWdCMEVCT2dBQURBRUxJQWRCQWpvQUFDQUxRUUZxSVFzZ0NVRi9haUVKQ3lBSFFRRnFJUWNnQVVFTWFpRUJEQUVMQUFBTEFBc1FnZ0VBQ3hFQUlBQWdBU0FBS0FJQUtBSU1FUU1BQzhZRUFRdC9Jd0JCZ0FGcklnZ2tBQ0FJSUFFMkFuZ2dBaUFERUs0TElRa2dDRUhVQkRZQ0VDQUlRUWhxUVFBZ0NFRVFhaENlQVNFUUlBaEJFR29oQ2dKQUlBbEI1UUJQQkVBZ0NSQ2JBU0lLUlEwQklCQWdDaERHQVFzZ0NpRUhJQUloQVFOQUlBRWdBMFlFUUFOQUFrQWdDVUVBSUFBZ0NFSDRBR29ROEFFYlJRUkFJQUFnQ0VINEFHb1F2Z0VFUUNBRklBVW9BZ0JCQW5JMkFnQUxEQUVMSUFBUW53RWhEaUFHUlFSQUlBUWdEaERFQmlFT0N5QU1RUUZxSVExQkFDRVBJQW9oQnlBQ0lRRURRQ0FCSUFOR0JFQWdEU0VNSUE5RkRRTWdBQkMxQVJvZ0NpRUhJQUloQVNBSklBdHFRUUpKRFFNRFFDQUJJQU5HQkVBTUJRVUNRQ0FITFFBQVFRSkhEUUFnQVJBZklBMUdEUUFnQjBFQU9nQUFJQXRCZjJvaEN3c2dCMEVCYWlFSElBRkJER29oQVF3QkN3QUFDd0FGQWtBZ0J5MEFBRUVCUncwQUlBRWdEQkJRTEFBQUlSRUNRQ0FPUWY4QmNTQUdCSDhnRVFVZ0JDQVJFTVFHQzBIL0FYRkdCRUJCQVNFUElBRVFIeUFOUncwQ0lBZEJBam9BQUNBTFFRRnFJUXNNQVFzZ0IwRUFPZ0FBQ3lBSlFYOXFJUWtMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQUFzQUN3c0NRQUpBQTBBZ0FpQURSZzBCSUFvdEFBQkJBa2NFUUNBS1FRRnFJUW9nQWtFTWFpRUNEQUVMQ3lBQ0lRTU1BUXNnQlNBRktBSUFRUVJ5TmdJQUN5QVFFSjBCSUFoQmdBRnFKQUFnQXc4RkFrQWdBUkQ3QVVVRVFDQUhRUUU2QUFBTUFRc2dCMEVDT2dBQUlBdEJBV29oQ3lBSlFYOXFJUWtMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQUFzQUN4Q0NBUUFMbkFFQkJYOGdBQkNnQVNFRUFrQUNRRUdzeVJRb0FnQkZEUUFnQUMwQUFFVU5BQ0FBUVQwUTRBc05BRUdzeVJRb0FnQW9BZ0FpQWtVTkFBTkFBa0FnQUNBQ0lBUVExQVVoQTBHc3lSUW9BZ0FoQWlBRFJRUkFJQUlnQVVFQ2RHb29BZ0FpQXlBRWFpSUZMUUFBUVQxR0RRRUxJQUlnQVVFQmFpSUJRUUowYWlnQ0FDSUNEUUVNQXdzTElBTkZEUUVnQlVFQmFpRUJDeUFCRHd0QkFBc0lBQ0FBRUxzTEdndmxBZ0VHZnlNQVFSQnJJZ2NrQUNBRFFhakpGQ0FER3lJRktBSUFJUU1DUUFKQUFrQWdBVVVFUUNBRERRRU1Bd3RCZmlFRUlBSkZEUUlnQUNBSFFReHFJQUFiSVFZQ1FDQURCRUFnQWlFQURBRUxJQUV0QUFBaUFFRVlkRUVZZFNJRFFRQk9CRUFnQmlBQU5nSUFJQU5CQUVjaEJBd0VDeUFCTEFBQUlRQkJ3UE1TS0FJQUtBSUFSUVJBSUFZZ0FFSC92d054TmdJQVFRRWhCQXdFQ3lBQVFmOEJjVUcrZm1vaUFFRXlTdzBCSUFCQkFuUkJrSmNTYWlnQ0FDRURJQUpCZjJvaUFFVU5BaUFCUVFGcUlRRUxJQUV0QUFBaUNFRURkaUlKUVhCcUlBTkJHblVnQ1dweVFRZExEUUFEUUNBQVFYOXFJUUFnQ0VHQWYyb2dBMEVHZEhJaUEwRUFUZ1JBSUFWQkFEWUNBQ0FHSUFNMkFnQWdBaUFBYXlFRURBUUxJQUJGRFFJZ0FVRUJhaUlCTFFBQUlnaEJ3QUZ4UVlBQlJnMEFDd3NnQlVFQU5nSUFRZGpBRkVFWk5nSUFRWDhoQkF3QkN5QUZJQU0yQWdBTElBZEJFR29rQUNBRUM0MEJBUUYvQWtBZ0FDZ0NCQ0lCSUFFb0FnQkJkR29vQWdCcUtBSVlSUTBBSUFBb0FnUWlBU0FCS0FJQVFYUnFLQUlBYWhETEJrVU5BQ0FBS0FJRUlnRWdBU2dDQUVGMGFpZ0NBR29vQWdSQmdNQUFjVVVOQUNBQUtBSUVJZ0VnQVNnQ0FFRjBhaWdDQUdvb0FoZ1EwZ3RCZjBjTkFDQUFLQUlFSWdBZ0FDZ0NBRUYwYWlnQ0FHcEJBUkNBQkFzTFZRQWdBQ0FCTmdJRUlBQkJBRG9BQUNBQklBRW9BZ0JCZEdvb0FnQnFFTXNHQkVBZ0FTQUJLQUlBUVhScUtBSUFhaWdDU0FSQUlBRWdBU2dDQUVGMGFpZ0NBR29vQWtnUTFBc0xJQUJCQVRvQUFBc2dBQXNJQUNBQUtBSVFSUXZaQXdJQ2Z3SitJd0JCSUdzaUFpUUFBa0FnQVVMLy8vLy8vLy8vLy84QWd5SUZRb0NBZ0lDQWdNRC9RM3dnQlVLQWdJQ0FnSURBZ0x4L2ZGUUVRQ0FCUWdTR0lBQkNQSWlFSVFRZ0FFTC8vLy8vLy8vLy93K0RJZ0JDZ1lDQWdJQ0FnSUFJV2dSQUlBUkNnWUNBZ0lDQWdJREFBSHdoQkF3Q0N5QUVRb0NBZ0lDQWdJQ0FRSDBoQkNBQVFvQ0FnSUNBZ0lDQUNJVkNBRklOQVNBRVFnR0RJQVI4SVFRTUFRc2dBRkFnQlVLQWdJQ0FnSURBLy84QVZDQUZRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUJRZ1NHSUFCQ1BJaUVRdi8vLy8vLy8vOERnMEtBZ0lDQWdJQ0EvUDhBaENFRURBRUxRb0NBZ0lDQWdJRDQvd0FoQkNBRlF2Ly8vLy8vLzcvL3d3QldEUUJDQUNFRUlBVkNNSWluSWdOQmtmY0FTUTBBSUFJZ0FDQUJRdi8vLy8vLy96K0RRb0NBZ0lDQWdNQUFoQ0lFUVlINEFDQURheER0QkNBQ1FSQnFJQUFnQkNBRFFmK0lmMm9ROXdFZ0Fpa0RDRUlFaGlBQ0tRTUFJZ0JDUElpRUlRUWdBaWtERUNBQ0tRTVloRUlBVXEwZ0FFTC8vLy8vLy8vLy93K0RoQ0lBUW9HQWdJQ0FnSUNBQ0ZvRVFDQUVRZ0Y4SVFRTUFRc2dBRUtBZ0lDQWdJQ0FnQWlGUWdCU0RRQWdCRUlCZ3lBRWZDRUVDeUFDUVNCcUpBQWdCQ0FCUW9DQWdJQ0FnSUNBZ0grRGhMOExpQUlCQkg4Z0FrRUFSeUVFQWtBQ1FBSkFBa0FnQWtVZ0FFRURjVVZ5RFFBZ0FVSC9BWEVoQXdOQUlBQXRBQUFnQTBZTkFpQUFRUUZxSVFBZ0FrRi9haUlDUVFCSElRUWdBa1VOQVNBQVFRTnhEUUFMQ3lBRVJRMEJDeUFBTFFBQUlBRkIvd0Z4UmcwQkFrQWdBa0VFVHdSQUlBRkIvd0Z4UVlHQ2hBaHNJUVVnQWtGOGFpSURRUU54SVFRZ0EwRjhjU0FBYWtFRWFpRURBMEFnQUNnQ0FDQUZjeUlHUVg5eklBWkIvLzM3ZDJweFFZQ0Jnb1I0Y1EwQ0lBQkJCR29oQUNBQ1FYeHFJZ0pCQTBzTkFBc2dCQ0VDSUFNaEFBc2dBa1VOQVFzZ0FVSC9BWEVoQVFOQUlBQXRBQUFnQVVZTkFpQUFRUUZxSVFBZ0FrRi9haUlDRFFBTEMwRUFEd3NnQUFzTEFDQUFJQUVRMlJNZ0FBc2NBUUYvUVg5QkFDQUFFS0FCSWdJZ0FFRUJJQUlnQVJEM0FrY2JDM1FCQVg4Z0FDZ0NwQUVpQVVVRVFDQUFFS1VVSUFCQnRBRnFJZ0VvQWdBRVFDQUFRWmdCYWlBQkVFY2dBRUVBTmdLMEFRc2dBRUdZQVdvaUFSQVdSUVJBSUFBb0FwUUJEd3NnQUNBQUlBQkI2QUJxSUFBZ0FDZ0NsQUVRWWhDMkRDQUFLQUtVQVNBQkVMZ1VJZ0UyQXFRQkN5QUJDNVVCQVFKL0l3QkJFR3NpQXlRQUFrQWdBRUdvQVdvaUFoQVdSUVJBSUFBb0FyUUJSUTBCQ3lBQ0VCWkJBVXNOQUNBQ0VCWkJBVVlFUUNBRElBQWdBaWdDQUNnQ0FFRUFFSFEyQWd3Z0FFR1lBV29nQTBFTWFoQkJJQUlRK0FNZ0FFRUFOZ0s0QVF3QkN5QUJSUTBBSUFCQnRBRnFJZ0VvQWdCRkRRQWdBRUdZQVdvZ0FSQkhJQUJDQURjQ3RBRUxJQU5CRUdva0FBdGpBUUovSXdCQkVHc2lCU1FBUVN3UUprSDZBUkMzQVNJRUlBRVFPU0FFSUFJUXdnSVFPU0FFSUFNUXdnSVFPU0FBS0FLRUFTQUZRUWhxSUFRUU9pSUJFSHdnQVJBK0lBSWdBQ2dDaEFFUTF3VWdBeUFBS0FLRUFSRFhCU0FGUVJCcUpBQUw4UUVCQW44akFFRWdheUlGSkFBQ1FDQUVFQlpCQVVZRVFDQUFJQUFnQXlBQ0lBUW9BZ0FvQWdBUXJ3RWdBUkNHQVNFRERBRUxJQUF0QUpBQkJFQWdCVUVRYWtFQ0VKTUlJZ1pCQVJBUklBTTJBZ0FnQmtFQUVCRWdBellDQUNBQUlBQkJ6d0FnQWlBR0lBUVFxd1FnQVJDR0FTRURJQVlRTmd3QkMwRXNFQ1lnQUJCVklBSkJ6d0FRVVNJQ0lBTVFPU0FDSUFNUU9VRUFJUU1nQkJBV1FRQktCRUFEUUNBQ0lBUWdBeEFSS0FJQUVFd2dBMEVCYWlJRElBUVFGa2dOQUFzTElBQW9Bb1FCSUFWQkNHb2dBaEE2SWdNUWZDQURFRDRnQUNBQ0tBSUVJQUVRaGdFaEF3c2dCVUVnYWlRQUlBTUxyUUVCQW44akFFRXdheUlGSkFBQ1FDQUFMUUNRQVFSQUlBVkJJR3BCQXhDVENDSUdRUUFRRVNBQ05nSUFJQVpCQVJBUklBTTJBZ0FnQmtFQ0VCRWdCRFlDQUNBQVFha0JJQUVnQmlBRlFSQnFFREFpQVJDckJDRUFJQUVRTmlBR0VEWU1BUXRCTEJBbUlBQVFWU0FCUWFrQkVGRWlBU0FDRURrZ0FTQURFRGtnQVNBRUVEa2dBQ2dDaEFFZ0JVRUlhaUFCRURvaUFCQjhJQUFRUGlBQktBSUVJUUFMSUFWQk1Hb2tBQ0FBQzRVQkFRRi9Jd0JCSUdzaUF5UUFRU3dRSmlBQkVMY0JJUUVnQXlBQ0VFQTJBaGdnQXlBQ0VESTJBaEFnQTBFWWFpQURRUkJxRUI0RVFBTkFJQUVnQXlnQ0dDZ0NBQkE1SUFOQkdHb1FaaG9nQXlBQ0VESTJBaEFnQTBFWWFpQURRUkJxRUI0TkFBc0xJQUFvQW9RQklBTkJDR29nQVJBNklnQVFmQ0FBRUQ0Z0EwRWdhaVFBQ3pzQkFYOUJIQkJHSWdBaUJCREZCU0FFSUFJMkFoZ2dCQ0FCTmdJVUlBUkI0STRKTmdJQUlBUWhBU0FBSUFNZ0FDZ0NBQ2dDQkJFQkFDQUJDeXNCQVg4Z0FDZ0NBQ0VCSUFCQkFEWUNBQ0FCQkVBZ0FCQWxJZ0FvQWdBYUlBQW9BZ1FhSUFFUUtnc0xTUUVCZnlNQVFTQnJJZ0lrQUNBQ0lBRVFrZ00yQWhBUTV3RWdBa0VZYWlBQUlBRkJ0TzRSSUFKQkVHb2dBa0VJYWhDakRDQUNRUmhxRUVRaEFDQUNRU0JxSkFBZ0FFRUVhZ3RjQVFKL1FRRWhBZ0pBSUFCQjZBQnFJZ01nQVJBdklnQW9BZ3hCYVdvaUFVRUhTdzBBQWtBQ1FBSkFJQUZCQW1zT0JnTURBd0VEQWdBTElBQkJBUkF2RHdzZ0F5QUFRUUVRTHhBdlFRQVFMdzhMSUFBUXZBSWhBZ3NnQWdzVUFDQUFRZWdBYWlBQUlBRVFZaEF2UVFFUUx3dmVBUUVDZnlNQVFTQnJJZ01rQUNBRElBSTJBaGdnQXlBQk5nSWNJQU5CSGpZQ0NBSkFBa0FnQUVIY0Ftb2lCQ0FEUVFocUVEOFFGa0VCVGdSQVFRQWhBUU5BSUFOQkhqWUNDQUpBSUFRZ0EwRUlhaEEvSUFFUUVTZ0NBQ0lDRUx3Q1FRSkhEUUFnQWtFQUVDOGdBeWdDSEVjTkFDQUNRUUVRTHlBREtBSVlSZzBEQ3lBRFFSNDJBZ2dnQVVFQmFpSUJJQVFnQTBFSWFoQS9FQlpJRFFBTEN5QURRUWhxRURBaUFTQURRUnhxRUVjZ0FTQURRUmhxRUVjZ0FDQUJRY2p0RVJDYUNDRUNJQUVRTmd3QkN5QUNLQUlFSVFJTElBTkJJR29rQUNBQ0M4QURBUUovSXdCQklHc2lCQ1FBSUFRZ0FUWUNIQ0FDUlFSQUlBUkJFR29nQUVFNGFpQUVRUnhxRU4wRkN3SkFJQUJCRUdvaUJTQUVRUnhxRVBRRURRQWdBRUVrYWlJQklBUkJIR29ROUFRTkFDQUFJQVFvQWh3Z0FpQURFTEFISUFSQkVHb2dCU0FFUVJ4cUVOMEZJQVJCQURZQ0RDQUVRUUEyQWdnQ1FDQUVLQUljRU9BVUlnTkZEUUFnQTBFQUVDOGhCU0FFSUFRb0Fod29BalFvQWdRZ0JSQXZLQUlvTmdJTUlBUkJFR29nQVNBRVFReHFFTjBGSUFNb0FneEI5Z0ZIRFFBZ0EwRUJFQzhoQXlBRUlBUW9BaHdvQWpRb0FnUWdBeEF2S0FJb05nSUlJQVJCRUdvZ0FTQUVRUWhxRU4wRkN3SkFJQUlOQUNBRUlBUW9BaHhCSEdvaUFoQkFOZ0lRSUFRZ0FoQXlOZ0lBSUFSQkVHb2dCQkFlUlEwQUEwQWdBQ0FFS0FJUUtBSUFRUUJCQUJEY0JpQUVRUkJxRUdZYUlBUWdBaEF5TmdJQUlBUkJFR29nQkJBZURRQUxDeUFFS0FJSUJFQWdBRUU0YWlBRVFRaHFFUFFFSVFJZ0FTQUVRUWhxRU1vSUlBQWdCQ2dDQ0NBQ1JTQUVLQUljRU53R0N5QUVLQUlNUlEwQUlBQkJPR29nQkVFTWFoRDBCQ0VDSUFFZ0JFRU1haERLQ0NBQUlBUW9BZ3dnQWtWQkFYUWdCQ2dDSEJEY0Jnc2dCRUVnYWlRQUN4QUFJQUFvQWdRZ0FDZ0NBR3RCTkcwTERBQWdBQ0FCRU44Q1FSNUdDMllBQW44Q1FDQUFSUTBBUVFFZ0FDQUFLQUlBS0FKRUVRQUFEUUVhSUFBZ0FDZ0NBQ2dDWUJFQUFFVU5BRUVBSUFBZ0FDZ0NBQ2dDZUJFQUFDSUFJQUFvQWdBb0Fpd1JBQUFvQWdSQlAzRWlBRUVRU3cwQkdrR253QVlnQUhaQkFYRVBDMEVBQ3dzUEFDQUFRZWdBYWlBQkVDOG9BZ3dMK3dzQkJIOGpBRUhnQUdzaUNDUUFBa0FnQVNBQktBSUFLQUljRVFBQUlnWkJFa3NFUUVFQUlRWU1BUXNDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQmtFQmF3NFNCQVVHQndnSkNnSURDd3dCRFJBUkVRNFBBQXNnQUVFNGFoQ2NDQ0VHREJFTElBQkJPR29oQlNBQ0JFQWdCVUVnRU1rQklRWU1FUXNnQlJENkFpRUdEQkFMSUFCQk9HcEJJQkNpQWlFR0RBOExJQUJCT0dwQklCREpBU0VHREE0TElBQkJPR3BCSUJERUF5RUdEQTBMSUFCQk9HcEJ3QUFReEFNaEJnd01DeUFBUVRocVFSQVF4QU1oQmd3TEN5QUFRVGhxUVFnUW9nSWhCZ3dLQ3lBQVFUaHFRUWdReVFFaEJnd0pDeUFBUVRocVFSQVFvZ0loQmd3SUN5QUFRVGhxUVJBUXlRRWhCZ3dIQ3lBQVFUaHFRY0FBRUtJQ0lRWU1CZ3NnQUVFNGFrSEFBQkRKQVNFR0RBVUxJQUJCT0dvaUJVRVZFQ0VnQlVFZ0VNa0JJUVlNQkFzZ0FFRTRhaERPRkNFR0RBTUxJQWdnQVNBQktBSUFLQUpVRVFBQU5nSmNJQWdnQUVHa0NHb2lCeUFJUWR3QWFoRENERFlDQUNBSUlBY1FmallDV0NBSUlBaEIyQUJxRUxnREJFQWdBRUU0YWhEWEZDRUdJQWdnQVNBQktBSUFLQUpVRVFBQU5nSUFJQWNnQ0JDdENDQUdOZ0lBQ3lBSUlBRWdBU2dDQUNnQ1ZCRUFBRFlDQUNBSElBZ1FyUWdvQWdBaEJpQUZEUUlnQUNBQklBRW9BZ0FvQWxRUkFBQVF2d0VoQlNBSUlBRWdBU2dDQUNnQ1ZCRUFBRFlDQUNBQVFUaHFJQWNnQ0JDdENDZ0NBQ0FGRU5ZVURBSUxJQUJCT0dvaEJ5QUJJQUVvQWdBb0FpQVJBQUFpQlJESUJBUkFJQWNRMkJRaEJnd0NDeUFISUFBZ0JSQzRGUUovSUFVdEFBRkJmMnBCL3dGeElnWkJCazBFUUNBR0RBRUxRUUVMSUFVUWdna2dCUkNEQ1NBRkVJb0JRUUpCQVNBRkVLZ0ZHeUFBSUFFUXR4VVEwQlFoQmlBRkVLZ0NSUTBCSUFjZ0JoRFBGQ0VHREFFTElBZ2dBU2dDUURZQ0FDQUJJQU1Rd1F4RkJFQWdBQ0FDUVR4c2FpQURLUUlFUWpTSXAwRUhjVUVVYkdwQjZBUnFJQWdReHdNb0FnQWlCZzBCQ3lBQklBRW9BZ0FvQWh3UkFBQkJFRVlFUUNBQVFkQUhhaUFBUWVRSGFpQUlFTWNERU4wRUlBZ29BZ0FRTnhEQURBc2dBQ0FCSUFnb0FnQWdBaUFERUxVVklRWUxBa0FnQVNBQktBSUFLQUpzRVFBQUJFQWdBRUU0YWlBR0lBRWdBU2dDQUNnQ05CRUFBQ0FCSUFFb0FnQW9BamdSQUFBUTFCUWhCZ3dCQ3lBQklBRW9BZ0FvQWpBUkFBQkJBa2dOQUNBQVFUaHFJQVlnQVNBQktBSUFLQUl3RVFBQUVMRUJJUVlMSUFFUWhRRUVRQ0FBUVRocUlnVkI3U2tRSVNBRlFZZmhFUkJDSUFFZ0FTZ0NBQ2dDSEJFQUFFRURSZ1JBSUFWQkNSQWhDd0pBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUZSd1JBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUVSdzBCQ3lBRlFTY1FJUXNnQlNBR0lBQWdBU0FCS0FJQUtBSllFUUFBUVFFUTRRVWdBQ0FCSUFFb0FnQW9BbGdSQUFCQkFoRGhCU0FBSUFFZ0FTZ0NBQ2dDV0JFQUFFRURFT0VGRU5NVUlRWUxBa0FnQVNBQktBSUFLQUp3RVFBQVJRMEFBa0FnQVNBQktBSUFLQUpNRVFBQUVHQkJBazRFUUVFQUlRY0NRQ0FDUlEwQUlBRWdBU2dDQUNnQ0hCRUFBRUVRUmcwQUlBZ2dBVUVBUVFBUXpRRWlCU2dDUEJCZ1FRSk9CRUFEUUNBRktBSThFTEVWSUFVb0Fqd1FZRUVCU2cwQUN3c2dCU0FDSUFNcEFnUkNOSWluUVFkeEVMOE1JUWNnQlJBMUdnc2dBU0FCS0FJQUtBSk1FUUFBRUdBaUJVRUNTQTBCSUFCQk9Hb2hBd05BSUFNZ0JpQUFJQUVnQVNnQ0FDZ0NUQkVBQUNBRlFYOXFJZ0lRNFFVZ0J4Q2REQ0VHSUFkQkFVNEVRQ0FESUFaQkJpQUhFSGdMSUFFZ0FTZ0NBQ2dDVEJFQUFDQUNFTllCSUFkc0lRY2dCVUVDU2lFSklBSWhCU0FKRFFBTERBRUxRUUFoQnlBQ1JRMEFJQUVnQVNnQ0FDZ0NIQkVBQUVFUVJnMEFJQUVnQWlBREtRSUVRalNJcDBFSGNSQy9EQ0VIQ3dKL0lBRWdBU2dDQUNnQ2RCRUFBQVJBSUFCQk9Hb2dCaUFBSUFFZ0FTZ0NBQ2dDVEJFQUFFRUFFT0VGSUFjUW5Rd01BUXNnQkVVRVFDQUFRVGhxSWdGQm9lRVJRWUNLQkJDeUFTQUJRYllwRUNFTElBQkJPR29nQmhEU0ZBc2hCaUFIUVFGSURRQWdBRUU0YWlBR1FRWWdCeEI0Q3lBSVFlQUFhaVFBSUFZTFp3RUNmeU1BUVJCcklnQWtBQ0FBSUFFMkFnd0NRQ0FCUlFSQURBRUxRYWdCRUVZaUFSRDlBeUlDSUFFb0FnQW9BcndCRVFBQUlBQkJER29RM0FFZ0FTQUFLQUlNSWdNZ0F5Z0NBQ2dDQUJFQUFDQUJLQUlBS0FJRUVRRUFDeUFBUVJCcUpBQWdBZ3RGQVFGL0l3QkJJR3NpQWlRQUlBSWdBUkRNQVRZQ0VCRG5BU0FDUVJocUlBQWdBU0FDUVJCcUlBSkJDR29RMEJVZ0FrRVlhaEJFSVFBZ0FrRWdhaVFBSUFCQkRHb0x2QWdCQjM4akFFRVFheUlKSkFBZ0NTQUZOZ0lJSUFrZ0JEWUNEQ0FHRUlNRElRb2dCaENTQkNFTVFaQUJJUWhCQVNFTkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRYU1DVEFSQUlBRkI2WDVxSWc1QkdVc05GeUFPUVFGckRoa1VFdzhPRFF3TENna0dCZ1lHQmdZR0JoY1NGZ0VSQkFVREZRc2dBVUhKZTJvaUJrRU5UUTBHSUFGQjJucHFJZ1ZCQlUwTkJ5QUJRZHg5YWlJQlFRRkxEUllnQVVFQmF3MFBEQUVMUVpFQklRZ01GQXRCa3dFaENFRUFJUTBNRXd0QnB3RWhDRUVBSVEwTUVndEJwZ0VoQ0VFQUlRME1FUXRCcFFFaENFRUFJUTBNRUFzQ1FDQUhSU0FCUWQ5K2FrRUJTM0lOQUFKQUlBQkJPR29pQnlBRUVLOEVEUUFnQnlBRUVLSUREUUFnQnlBSElBUVFZaENYRlVVTkFRc2dBaUFISUFjZ0FpZ0NBQ0FFSUFVZ0FVR2hBVVlRaXd3aUN4RC9BZ3dSQ3lBQlFkOSthaUlCUVFkTERSQUNmd0pBQWtBQ1FBSkFBa0FDUUNBQlFRRnJEZ2NGQkFVQUFRSURCQXRCdUFFaEMwR3dBVUd4QVNBS0d3d0ZDMEc2QVNFTFFhd0JRYTBCSUFvYkRBUUxRYndCSVF0QnNnRkJzd0VnQ2hzTUF3dEJ2Z0VoQzBHdUFVR3ZBU0FLR3d3Q0MwRzBBU0VMUWFRQlFhb0JJQVpCREVZYkRBRUxRYllCSVF0QnBRRkJxd0VnQmtFTVJoc0xJUUVnQWlBQVFUaHFJZ0FnQUNBTElBRWdEQnNnQXlBRUlBVVFxZ0VpQVJENUJDQUNJQUFnQVJEL0FpQUFJQUVnQWlnQ0FCQ0dBU0VMREJBTElBWkJBV3NPRFF3TERnb0pDQWNHQXdJQkJBVU5Dd0pBQWtBQ1FBSkFBa0FDUUNBRlFRRnJEZ1VFQXdJQkFBVUxRZDRyUWQwcklBb2JJUWdNRWd0QjJpdEIyU3NnQ2hzaENBd1JDMEhZSzBIWEt5QUtHeUVJREJBTFFkd3JRZHNySUFvYklRZ01Ed3RCMWl0QjFTc2dDaHNoQ0F3T0MwSFVLMEhUS3lBS0d5RUlEQTBMUWNZQklRZ01EQXRCeFFFaENBd0xDMEhIQVNFSURBb0xRY1FCSVFnTUNRdEJ3Z0ZCd3dFZ0Noc2hDQXdJQzBHTkFVR0pBVUdMQVNBS0d5QU1HeUVJREFjTFFZZ0JRWVlCUVljQklBb2JJQXdiSVFnTUJndEJrZ0VoQ0F3RkMwR1BBU0VJREFRTEFrQWdERVVOQUNBQVFUaHFJZ0VnQkJDdkJFVUVRQ0FCSUFVUXJ3UkZEUUVMUVk0QklRaEJBQ0VOSUFFZ0JSQ3ZCRVVOQkNBSlFReHFJQWxCQ0dvUUxpQUpLQUlNSVFRTUJBdEJoUUZCaEFFZ0RCc2hDQXdEQzBHRkFVR0VBU0FNR3lFSURBSUxRWU1CUVlJQklBd2JJUWdNQVF0QmdRRkJnQUVnREJzaENBc0NRQUpBSUFCQk9Hb2lBU0FFRUtJRERRQWdBU0FKS0FJSUVLSUREUUFnQVNBSktBSU1FT0FGRFFBZ0FTQUpLQUlJRU9BRlJRMEJDeUFBSUFnZ0FpQURJQWtvQWd3Z0NTZ0NDQkNiRlNFTERBRUxJQTBFUUNBQklBSW9BZ0FnQ1VFTWFpQUpRUWhxRU1FREN5QUNJQUVnQVNBSUlBTWdDU2dDRENBSktBSUlFS29CSWdBUStRUWdBaUFCSUFBUS93SWdBU0FBSUFJb0FnQVFoZ0VoQ3dzZ0NVRVFhaVFBSUFzTEhBRUJmeUFCTFFBRUlBQXRBQVJ6Qkg4Z0FnVWdBQ0FCRVBzSEN3dEZBUUYvSXdCQklHc2lBaVFBSUFJZ0FSRE1BVFlDRUJEbkFTQUNRUmhxSUFBZ0FTQUNRUkJxSUFKQkNHb1F6d3dnQWtFWWFoQkVJUUFnQWtFZ2FpUUFJQUJCQkdvTENRQWdBQ0FCRUlVSkN5QUJBWDhnQUNnQ0FDRUJJQUJCQURZQ0FDQUJCRUFnQUJBbElBRVFqUllMQ3ljQUl3QkJFR3NpQUNRQUlBQWdBVFlDQ0NBQVFRaHFRUVFRN2cwaEFTQUFRUkJxSkFBZ0FRc01BQ0FBSUFFb0FnQVE2UVlMQ1FBZ0FDQUJFSjRXQzJvQkFuOUJBU0VCQWtBQ1FBSkFJQUJCalFKTUJFQWdBRUhwZm1vaUFrRVdTMEVCSUFKMFFaK0E0QU54UlhJTkFRd0RDeUFBUVk0Q1JpQUFRY2w3YWtFSlNYSWdBRUdrQWtaeURRSU1BUXNnQUVFTlN3MEFRUUVnQUhSQndQZ0FjUTBCQzBFQUlRRUxJQUVMRHdBZ0FDQUJJQUlnQXlBQkVLVVJDeWNCQVg4Z0FVRXZFS0lKSWdKQmYwWUVRQ0FBSUFFUTdRRWFEd3NnQUNBQlFRQWdBaER0QmdzTEFDQUFRUXhxS0FJQVJRc2dBQ0FBUVFFUXR3d2dBRUVBTmdKc0lBQWdBVFlDYUNBQVFZeUdDVFlDQUFzYkFRRi9RYmdJRUNZaUF5QUFJQUVnQWhDeUZpQUFJQU1RdVFRTGpnRUJBbjlCZnlFREFrQWdBQkNXQlEwQUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFBZ0F4RDdCaUFDRUxZV0lRTWdBaUFCRU5jQklnUXBBZ0EzQWdBZ0FpQUVLUUlJTndJSUlBTkJJMGNOQUVFaklRTWdBRUVqRU1vRFJRMEFJQUVnQWtGM1FmelZFUkJLSUFFZ0FrRjNRWUlCUVFCQi9OVVJFQ2dnQUNBQUtBSVFRUUZxTmdJUVFaY0JJUU1MSUFNTEtRRUJmeU1BUVNCcklnTWtBQ0FBSUFNZ0FTQUNFTGtXSWdBUXVCWWdBQkRPQ0NBRFFTQnFKQUFMTkFFQmZ5TUFRUkJySWdFa0FDQUFFTUFXSUFCQkFEWUNFQ0FCUVFBMkFnd2dBRUVVYWlBQlFReHFFSzBDSUFGQkVHb2tBQXNyQVFGL0lBQVFpQTBnQUNJQktBSUFCRUFnQVJDSERTQUJFRHNhSUFFb0FnQWFJQUVReXdNYUN5QUFDdzhBSUFBZ0FDZ0NHQ0FCYWpZQ0dBc2JBQ0FBUWV6S0VUWUNBQ0FBUVNCcUVDQWFJQUFRZ0FnYUlBQUxCQUJCQVFzU0FDQUFFTk1XSWdCQlBHb1E3QVFhSUFBTHJnRUJBbjhnQUVIOHlSRTJBZ0FnQUNnQ1ZDSUJCRUFnQVJBcUN5QUFRY0FCYWlJQkVMZ0NSUVJBQTBBZ0FCQ1VEU0FCRUxnQ1JRMEFDd3NnQUVHSUFtb1ErUVlhSUFCQi9BRnFFQ0FhSUFCQjVBRnFFSk1OSUFCQjJBRnFFQ0FhSUFFUU5pQUFRUlJxSWdGQk1Hb1FHUm9nQVVFY2FoRGJBU0FCSUFFb0Fnd1F3eFlnQVNnQ0FDRUNJQUZCQURZQ0FDQUNCRUFnQVJBbElBSVFpdzBMSUFCQkJHb2lBU0FCRUR3UXp3Z2dBQXNOQUNBQUtBSUFJQUZCQlhScUMya0JBWDhqQUVFUWF5SURKQUFnQXlBQ05nSUFJQU1nQVRZQ0NDQUFLQUlRSVFFZ0EwRUlhaUFERUs0R0JFQURRQ0FCSUFBb0FnZ2dBeWdDQ0JENUFTQUFJQUFvQWdoQkJHbzJBZ2dnQTBFSWFoQm1HaUFEUVFocUlBTVFyZ1lOQUFzTElBTkJFR29rQUFzdUFRRi9RUUVoQVFKQUlBQkJ5djhJRUkwQkRRQWdBRUc1Z2drUWpRRU5BQ0FBUWMrQUNSQ05BU0VCQ3lBQkN5QUJBWDlCQVNFQklBQkJ5djhJRUkwQkJIOGdBUVVnQUVHaWdBa1FqUUVMQ3drQUlBRWdBaENNRnd1MkJRRUdmeUFDUVNCcUlRVWdBRUVVYWlFR0lBQWdBaEJUSVFNZ0FVRUFSeUVIUVFBaEFRTkFJQWNnQVVWeElRZ0RRQUpBQWtBZ0EwRWpSd1JBSUFOQmYwWU5BUU5BSUFOQmYwWU5BaUFEUVFwSEJFQWdBQ0FDRUZNaEF3d0JDd3NnQUNBQ0VGTWhBd3dEQ3lBQUlBSVFVeUlEUWFJQlJ3MENJQVlnQlJET0F5SUVRZHQrYWtFQ1RRUkFBa0FnQUNnQ2RDSURRY0FBVEFSQUlBQW9BcndCSWdSQndRQklEUUVMSUFBb0FuQWlBQ0FDUVkrMkVVR3V0aEZCeWJNUlFRQWdBQ2dDQUNnQ3FBRVJBZ0JCZnc4TElBRkJBV29oQVNBQUlBUkJBV28yQXJ3QklBQWdBMEVCYWpZQ2RFR2lBU0VEREFRTElBUkJxZ0ZHQkVBZ0FFR3FBU0FDSUFBZ0FoQlRFTDBFSVFNZ0FDQUFLQUs4QVNJRWFrRUFPZ0I0SUFBZ0JFRi9hallDdkFFZ0FVVUVRQ0FBS0FKMElnRkJBVWdOQWlBQUlBRkJmMm8yQW5RZ0F3OExJQUFnQUNnQ2RFRi9hallDZENBQlFYOXFJUUVNQkFzZ0NFVU5BU0FFUWFnQlJnUkFJQUFnQUNnQ3ZBRnFRUUU2QUhnZ0FFR29BU0FDSUFBZ0FoQlRFTDBFRHd0Qm9nRWhBMEVBSVFFZ0JFR3BBVWNOQXlBQUlBQW9BcndCYWkwQWVBUkFJQUFvQW5BaUFTQUNRY0cyRVVIVHRoRkJ5Yk1SUVFBZ0FTZ0NBQ2dDcUFFUkFnQUxJQUFvQW5RaUFVRUJUZ1JBSUFBZ0FVRi9hallDZENBQUlBQW9BcndCSWdGcVFRQTZBSGdnQUNBQlFYOXFOZ0s4QVFzZ0FDQUNFTG9OSVFNTElBTVBDeUFFUWFnQlJnUkFBa0FnQUNBQUtBSzhBV29pQTBINEFHb3RBQUFFUUNBQUtBSndJZ01nQWtIWnRoRkI2N1lSUWNtekVVRUFJQU1vQWdBb0FxZ0JFUUlBREFFTElBTkJBVG9BZUFzZ0FFR29BU0FDSUFBZ0FoQlRFTDBFSVFNTUFRdEJvZ0VoQXlBRVFha0JSdzBBSUFBZ0FDZ0N2QUZxTFFCNFJRMEFJQUFvQW5BaUJDQUNRY0cyRVVIVHRoRkJ5Yk1SUVFBZ0JDZ0NBQ2dDcUFFUkFnQU1BQUFMQUFBTEFBc0pBQ0FBUVFBMkFoQUxsd1FDQkg4QmZpTUFRZUFBYXlJRUpBQWdBa0VBTmdJQUFrQWdBQ0FBS0FJQUtBSndFUUFBQkVBZ0JFRUlhaUFBUVFCQkFCRE5BU0lHSUFFZ0JFSGNBR29nQXhDQ0J5RUZJQUlnQVNnQ0FEWUNBQ0FDSUFVUWhBSWdBU0FDS0FJQUlBQWdBQ2dDQUNnQ1BCRUFBRUYvYW13Z0FTZ0NBR28yQWdBZ0JoQTFHZ3dCQ3lBQUlBQW9BZ0FvQWh3UkFBQkJEMFlFUUNBQUtBSkFJUUlnQVVFQU5nSUFJQVJCQURZQ0NDQUNFRGRGRFFGQkFDRUFBMEFnQWlBQUVEZ29BZ0FpQlNBRktBSUFLQUlvRVFBQUtRSUVJUWdnQkNBQ0lBQVFPQ2dDQUNBRVFRUnFJQVJCM0FCcUlBaENOSWluUVFkeElnVkJBVVlnQXlBRkd4Q0NCellDQUNBRUlBUkJDR29nQkJDbUFTZ0NBRFlDQ0NBQklBUW9BZ0FRaEFJZ0FTQUJLQUlBSUFRb0FnUnFOZ0lBSUFCQkFXb2lBQ0FDRURkSkRRQUxJQVFvQWdnaEJRd0JDeUFBSUFBb0FnQW9BbUFSQUFBRVFDQUFJQUVRdmdRaEJRd0JDeUFBSUFBb0FnQW9BbWdSQUFBRVFDQUFJQUVRdmdRaEJTQUJJQUFnQUNnQ0FDZ0NNQkVBQUNBQktBSUFiRFlDQUF3QkN5QUFJQUFvQWdBb0Ftd1JBQUFFUUNBRVFRaHFJQUJCQUNBREVNMEJJZ1lnQVNBRVFkd0FhaUFERUlJSElRVWdBaUFCS0FJQUlnYzJBZ0FnQUNnQ0FDRUNJQUVDZnlBREJFQWdBQ0FDS0FJNEVRQUFEQUVMSUFBZ0FpZ0NOQkVBQUFzZ0IydzJBZ0FnQmhBMUdnd0JDMEVCSVFVZ0FVRUJOZ0lBQ3lBRVFlQUFhaVFBSUFVTHhRVUNBMzhCZmlNQVFmQUFheUlGSkFBZ0FrRUFOZ0lBQWtBZ0FDQUFLQUlBS0FKd0VRQUFCRUFnQlNBRlFSQnFJQUJCQUVFQUVNMEJJZ2NnQVNBRlFlZ0FhaUFESUFRUWd3Y2lCallDYkNBRFFRSkdCRUFnQlVHSXNCRWdCVUhzQUdvUXBnRW9BZ0FpQmpZQ2JBc2dBU0FHRUlRQ0lBSWdBU2dDQUNJQ05nSUFJQUVnQUNBQUtBSUFLQUk4RVFBQUlBSnNOZ0lBSUFVb0Ftd2hBaUFIRURVYURBRUxJQUFnQUNnQ0FDZ0NIQkVBQUVFUFJnUkFJQUFvQWtBaEFrRUFJUUFnQVVFQU5nSUFJQVVnQTBFQ1JrRUVkQ0lHTmdJUUlBRWdBaEEzQkg4RFFDQUNJQUFRT0NnQ0FDSUdJQVlvQWdBb0FpZ1JBQUFwQWdRaENDQUZJQUlnQUJBNEtBSUFJQVZCN0FCcUlBVkI2QUJxSUFNZ0NFSTBpS2RCQjNFaUJrRUJSaUFFSUFZYkVJTUhOZ0lNSUFVZ0JVRVFhaUFGUVF4cUVLWUJLQUlBTmdJUUlBRWdCU2dDREJDRUFpQUJJQUVvQWdBZ0JTZ0NiR28yQWdBZ0FFRUJhaUlBSUFJUU4wa05BQXNnQlNnQ0VBVWdCZ3NRaEFJZ0JTZ0NFQ0VDREFFTElBQWdBQ2dDQUNnQ1lCRUFBQVJBSUFBZ0FSQytCQ0VDREFFTElBQWdBQ2dDQUNnQ2FCRUFBQVJBSUFBZ0FSQytCQ0VDSUFBZ0FDZ0NBQ2dDTUJFQUFFRi9haUlEUVFGTkJFQWdBMEVCYXcwQ0lBRWdBU2dDQUVFQmREWUNBQ0FDUVFGMElRSU1BZ3NnQVNBQUlBQW9BZ0FvQWpBUkFBQWdBU2dDQUd3MkFnQWdBa0VDZENFQ0RBRUxJQUFnQUNnQ0FDZ0NiQkVBQUFSQUlBVWdCVUVRYWlBQVFRQWdCQkROQVNJSElBRWdCVUhvQUdvZ0F5QUVFSU1ISWdZMkFtd2dBMEVDUmdSQUlBVkJpTEFSSUFWQjdBQnFFS1lCS0FJQUlnWTJBbXdMSUFFZ0JoQ0VBaUFDSUFFb0FnQWlBellDQUNBQUtBSUFJUUlnQVFKL0lBUUVRQ0FBSUFJb0FqZ1JBQUFNQVFzZ0FDQUNLQUkwRVFBQUN5QURiRFlDQUNBRktBSnNJUUlnQnhBMUdnd0JDMEVRSVFJZ0FVRVFOZ0lBQ3lBRlFmQUFhaVFBSUFJTHFnVUJCMzhqQUVIZ0FHc2lCU1FBQWtBZ0FTQUJLQUlBS0FKd0VRQUFCRUFnQlVFSWFpQUJRUUJCQUJETkFTRURJQUVnQVNnQ0FDZ0NQQkVBQUNFQklBQWdBeUFDSUFRZ0JCQ0VCeUVBSUFNUU5Sb2dBQ0FCYkNFR0RBRUxJQUVnQVNnQ0FDZ0NpQUVSQUFBRVFDQUZRUUEyQWdRQ1FDQUJLQUpBRURkQkFVZ05BQU5BSUFWQkNHb2dBU0FHUVFBUXpRRWhCeUFGUVFBNkFBTWdCVUVBT2dBQ0lBVkJBRG9BQVNBQUlBY2dCVUVEYWlBRlFRSnFJQVZCQVdvUWhBY2hDQUpBSUFWQkJHb0NmeUFGTFFBREJFQkJBU0VKUVFnTUFRc2dCUzBBQWdSQVFRRWhDa0VFREFFTElBVXRBQUZGRFFGQkFTRUxRUUlMRUlRQ0N5QUZJQVVvQWdRZ0NHbzJBZ1FnQnhBMUdpQUdRUUZxSWdZZ0FTZ0NRQkEzU0EwQUN5QUpCRUFnQWtFQk9nQUFJQVZCQkdwQkNCQ0VBZ3dCQ3lBS0JFQWdBMEVCT2dBQUlBVkJCR3BCQkJDRUFnd0JDeUFMUlEwQUlBUkJBVG9BQUNBRlFRUnFRUUlRaEFJTElBVW9BZ1FoQmd3QkMwRUJJUVlDUUNBQklBRW9BZ0FvQW1BUkFBQU5BQ0FCSUFFb0FnQW9BbWdSQUFBRVFDQUJJQUVvQWdBb0FqQVJBQUFoQmd3QkN5QUJJQUVvQWdBb0Ftd1JBQUJGRFFBZ0FTQUJLQUlBS0FJMEVRQUFJQUVnQVNnQ0FDZ0NPQkVBQUd3aEJnc0NRQUpBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUNSZzBBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUtSZzBBSUFFZ0FTZ0NBQ2dDSEJFQUFFRUxSdzBCQ3lBQ1FRRTZBQUFnQmtFRGRDRUdEQUVMQWtBQ1FDQUJJQUVvQWdBb0Fod1JBQUJCQTBZTkFDQUJJQUVvQWdBb0Fod1JBQUJCQmtZTkFDQUJJQUVvQWdBb0Fod1JBQUJCQjBjTkFRc2dCRUVCT2dBQUlBWkJBWFFoQmd3QkN5QUJJQUVvQWdBb0Fod1JBQUJCQkVZTkFDQUJJQUVvQWdBb0Fod1JBQUJCQlVZTkFDQURRUUU2QUFBZ0JrRUNkQ0VHQ3lBRlFlQUFhaVFBSUFZTExBRUNmeU1BUVJCcklnQWtBQ0FBRU1zQk5nSUFJQUJCQ0dvZ0FCQm5LQUlBSVFFZ0FFRVFhaVFBSUFFTERBQWdBRUVBSUFGckVNRUZDeDhBSUFBZ0FTZ0NBQ0FDUVFOMlFmei8vLzhCY1dvZ0FrRWZjUkNaQVJvTEpBRUJmeUFBS0FJQUJFQWdBQkFiR2lBQUtBSUFJUUVnQUJBYktBSUFHaUFCRUNvTEN6Z0JBWDhnQUNnQ0JDRUNJQUVFUUNBQUtBSUFJZ0FnQUNnQ0FDQUNjallDQUE4TElBQW9BZ0FpQUNBQUtBSUFJQUpCZjNOeE5nSUFDd2tBSUFBZ0FSQ0RCZ3NVQUNBQ1JRUkFRUUFQQ3lBQUlBRWdBaENFQ0Fzc0FDQUJCRUFnQUNBQktBSUFFSXdISUFBZ0FTZ0NCQkNNQnlBQUVDVWFJQUZCRUdvUTVnSWdBUkFxQ3d0K0FRSi9Jd0JCRUdzaUJDUUFJQVJCQURZQ0RDQUFRUXhxSUFSQkRHb2dBeENCQWlBQkJFQWdBQ2dDRUJwQjFhclZxZ0VnQVNJRFNRUkFFSUlCQUFzZ0EwRU1iQkFtSVFVTElBQWdCVFlDQUNBQUlBVWdBa0VNYkdvaUFqWUNDQ0FBSUFJMkFnUWdBQkFqSUFVZ0FVRU1iR28yQWdBZ0JFRVFhaVFBSUFBTFdRRUNmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBQkRJR1NJRElBRlBCRUFnQUJDckF5SUFJQU5CQVhaSkJFQWdBaUFBUVFGME5nSUlJQUpCQ0dvZ0FrRU1haEJTS0FJQUlRTUxJQUpCRUdva0FDQUREd3NRYmdBTENRQWdBQkFqR2tGdkMrOENBUUovSXdCQjhBdHJJZ2NrQUNBSFFlQUVhaUFFSUFFZ0FoQ2JDU0VJSUFjZ0F5a0NDRGNEMEFRZ0J5QURLUUlBTndQSUJDQUhRYmdFYWtIWXVnOFFhU0VESUFjZ0J5a0QwQVEzQXhnZ0J5QUhLUVBJQkRjREVDQUhRZGdFYWlBR0lBZ2dBU0FDSUFRZ0JTQUhRUkJxUVFCQkFTQURFSWdPRURvaEFTQURFQ0FhSUFkQnNBUnFFSmdPSVFJZ0IwR1lBV29nQVNnQ0FDQUhRU0JxUWRpNkR4QnBJZ01nQWhDWERTRUNJQU1RSUJvZ0IwSG9BR29nQVNnQ0FCQ0hEaUVESUFFb0FnQWdBeENHRGlBQktBSUFJQUlRaFE0Z0JoQ01CQ0FISUFBUUV6WUNZQ0FISUFBUUh5SUFOZ0pZSUFBRVFDQUhRU0JxUVFFZ0IwSGdBR29nQjBIWUFHcEJBRUVBUVFCQkFCQ1RCeUVBSUFFb0FnQWlBeUFDSUFCQkFDQURLQUlBS0FMWUFSRUpBRVVFUUNBRlFRTkJwY2dQRUxzQklBY2dCUkFUTmdJQUlBY1E2Uk1nQnlnQ1lCRGVFd3NnQUJDakJSb0xJQUlRK2dZYUlBRVFQaUFJRUpvSkdpQUhRZkFMYWlRQUN3MEFJQUFvQWdCQkFFZEJBWE1MRFFBZ0FFR0FCMm9nQVJENURRdXdBZ0VCZnlBQVFRQTZBRFVnQUNBSE9nQTBJQUFnQmpZQ0lDQUFJQVUyQWh3Z0FFSUFOd0lRSUFBZ0F6WUNEQ0FBSUFJMkFnZ2dBQ0FCTmdJRUlBQkJpTDRQTmdJQUlBQkJmeUFCUVFSMElBRkIvLy8vL3dCeElBRkhHeEFtSWdNMkFoaEJBU0VDQWtBZ0FVRUJTQTBBSUFOQkFDQUZheENQQ1NBQUtBSUVJZ0ZCQVV3TkFBTkFJQUFvQWhnZ0FrRUVkR29nQWlBQUtBSWNheENQQ1NBQ1FRRnFJZ0lnQUNnQ0JDSUJTQTBBQ3dzZ0JFVWdBVUVBVEhKRkJFQURRQUpBSUFRZ0NFRUNkR29vQWdBaUFrVUVRRUVBSVFJTUFRc2dBaERDQVNFQ0lBQW9BZ1FoQVFzZ0FDZ0NHQ0FJUVFSMGFpQUNOZ0lBSUFoQkFXb2lDQ0FCU0EwQUN3c2dBQ2dDR0NBQUtBSVFRUVIwYWtFQk5nSUlJQUJCSkdwQkFSQ1BDU0FBSUFBb0FoZ29BZ0EyQWlRZ0FBdEZBUUYvSUFBZ0FSQWJFSTBPSVFJZ0FDQUJLQUlBTmdJQUlBQWdBU2dDQkRZQ0JDQUJFQnNvQWdBaEFDQUNFQnNnQURZQ0FDQUJFQnRCQURZQ0FDQUJRZ0EzQWdBTE5RQWdBQ2dDQUJvZ0FDZ0NBQ0FBRUkwRVFSaHNhaG9nQUNnQ0FDQUFFSklDUVJoc2Fob2dBQ2dDQUNBQUVJMEVRUmhzYWhvTEdBRUJmeUFBRUJZaEFpQUFJQUVRMFFvZ0FDQUNFTWdGQ3dvQUlBQWdBVUVNYkdvTEJ3QWdBQkRBQkFzZ0FRRi9Jd0JCRUdzaUFTUUFJQUFnQVVFSWFoRCtDU0FCUVJCcUpBQWdBQXRnQVFKL0lBQW9BaGdpQVFSQUEwQWdBU2dDQUNFQklBQW9BaGdpQWdSQUlBSVFLZ3NnQUNBQk5nSVlJQUVOQUFzTElBQW9BaFFpQVFSQUEwQWdBU2dDQUNFQ0lBRVFLaUFBSUFJMkFoUWdBaUlCRFFBTEN5QUFRUnhxRUs0RElBQUxrQUVCQVg4akFFRVFheUlFSkFBZ0JDQUROZ0lJSUFRZ0FUWUNEQ0FEUVg5R0lBQVFIeUlCUVFCSmNrVUVRQ0FFSUFFMkFnQWdCQ0FFUVF4cUlBUVFwQUVvQWdBMkFnUUNRQ0FBRUJNZ0FpQUVRUVJxSUFSQkNHb1FwQUVvQWdBUWl3Y2lBQTBBUVg4aEFDQUVLQUlFSWdFZ0JDZ0NDQ0lDU1EwQUlBRWdBa3NoQUFzZ0JFRVFhaVFBSUFBUEN4QnVBQXNRQUNBQUtBSUFJQUVvQWdCclFRTjFDeDRCQVg4Z0FDZ0NCRVVFUUVFUUVFWWlBUkNUQVJvZ0FDQUJOZ0lFQ3dzY0FDQUFRUU5OQkVBZ0FFRUNkRUdZdFE5cUtBSUFEd3RCeHAwUEN3b0FJQUF0QUNSQkFFY0xmQUVEZnlNQVFSQnJJZ1VrQUFKQUlBQVFYU0lFSUFBUUh5SURheUFDVHdSQUlBSkZEUUVnQUJBVElnUWdBMm9nQVNBQ0VPZ0JJQUFnQWlBRGFpSUJFSWNESUFWQkFEb0FEeUFCSUFScUlBVkJEMm9RbEFFTUFRc2dBQ0FFSUFJZ0Eyb2dCR3NnQXlBRFFRQWdBaUFCRUs0SkN5QUZRUkJxSkFBZ0FBc0pBQ0FBSUFFUVp4b0xEUUFnQUNnQ0JDZ0NBQ2dDQUFzTEFDQUFMUUFDUVNoeFJRc09BQ0FBTFFBQlFRaDBRWUFPUmdzS0FDQUFFS0lIUVFCSEMrQUNBUU4vSXdCQlFHb2lBeVFBQW44Z0FTQUJLQUlBS0FJTUVRQUFJZ1ZCbXBrT0VDc0VRQ0FCSUFFb0FnQW9BaVFSQUFBaEFpQUFJQUFvQWhRaUJFRUJhallDRkNBQ0lBUWdBaWdDQUNnQ2NCRUJBQ0FESUFFZ0FTZ0NBQ2dDSkJFQUFDSUNJQUlvQWdBb0FuUVJBQUEyQWdRZ0EwR2hzQTgyQWdBZ0EwRWdha0VVUVp5d0R5QURFQ2NhSUFFZ0EwRWdhaERDQVNBQktBSUFLQUlRRVFFQUlBQWdBUkNNR2d3QkN5QUJJQUVvQWdBb0FoZ1JBQUFoQkNBQklBRW9BZ0FvQWh3UkFBQUVRQ0FDUlFSQUlBTWdBQ0FGRU1RRk5nSWdJQU1nQUJCK05nSVFRUUFnQTBFZ2FpQURRUkJxRUlnQkRRSWFDeUFESUFFMkFod2dBMEVRYWlBQUlBTkJJR29nQkNBRFFSeHFFS1VKSWdBUXBBa2dBQkN5QWtFQkRBRUxJQU1nQVRZQ0hDQURRUkJxSUFBZ0EwRWdhaUFFSUFOQkhHb1FwUWtpQUJDa0NTQURMUUFVSVFFZ0FCQ3lBaUFCUVFCSEN5RUNJQU5CUUdza0FDQUNDeFFBSUFCQkFEWUNCQ0FBUVpTd0R6WUNBQ0FBQzB3QkFYOGpBRUVRYXlJQ0pBQkJqUFFTS0FJQUJFQWdBaUFBUWQreUR5QUFHellDQUVHSThSRW9BZ0FpQUVHVTRnc2dBaERNQWlBQUlBRVEwZ1JCQ2lBQUVNQURDeUFDUVJCcUpBQUxTd0VCZnlNQVFSQnJJZ0lrQUFKQUlBQW9BZ1FnQUJBYktBSUFSd1JBSUFBUU95QUFLQUlFSUFFUXN3a2dBQ0FBS0FJRVFSUnFOZ0lFREFFTElBQWdBUkRQR2dzZ0FrRVFhaVFBQzh3REFRTi9JQUVvQWdBaUFnUkFJQUFnQWpZQ0FBc2dBUzBBQkFSQUlBQkJBVG9BQkFzZ0FTMEFCUVJBSUFCQkFUb0FCUXNnQVNnQ0NDSUNRWDlIQkVBZ0FDQUNOZ0lJQ3lBQktBSU1JZ0pCZjBjRVFDQUFJQUkyQWd3TElBRW9BaEFpQWdSQUlBQWdBallDRUFzZ0FTZ0NGQ0lDQkVBZ0FDQUNOZ0lVQ3lBQkxRQVlCRUFnQUVFQk9nQVlDMEVBSVFJRFFDQUJJQUpCQW5RaUEyb29BaHdpQkVFQ1RnUkFJQUFnQTJvZ0JEWUNIQXNnQWtFQmFpSUNRUU5IRFFBTFFRQWhBZ05BUVFFaEF5QUFJQUpxSUFFZ0Ftb3RBQ2dFZnlBREJTQUFJQUpxTFFBb1FRQkhDem9BS0NBQ1FRRnFJZ0pCQTBjTkFBdEJBQ0VDQTBBZ0FTQUNRUUowSWdOcUtBSXNJZ1JCZjBjRVFDQUFJQU5xSUFRMkFpd0xJQUpCQVdvaUFrRURSdzBBQ3lBQkxRQTRCRUFnQUVFQk9nQTRDeUFCTFFBNUJFQWdBRUVCT2dBNUN5QUJLQUk4SWdJRVFDQUFJQUkyQWp3TElBRXRBRUFFUUNBQVFRRTZBRUFMSUFFb0FrUWlBa0YvUndSQUlBQWdBallDUkFzZ0FTMEFUQVJBSUFCQkFUb0FUQXNnQVMwQVRRUkFJQUJCQVRvQVRRc2dBUzBBVGdSQUlBQkJBVG9BVGdzZ0FTZ0NVQ0lDUVg5SEJFQWdBQ0FDTmdKUUN5QUJLQUpJSWdFRVFDQUFJQUUyQWtnTEN3c0FJQUFnQVJDQ0R5QUFDeUVBSUFFRVFDQUFJQUVvQWdBUXJBY2dBQ0FCS0FJRUVLd0hJQUFRMXdJYUN3dVNBUUVEZnlBQUVEd2hBeUFBRUNVaEJRSkFJQU1FUUFKQUEwQUNRQUovSUFBUUd5QUNJQU5CRUdvaUJCQ3ZBd1JBSUFNb0FnQkZEUVlnQXd3QkN5QUFFQnNnQkNBQ0VLOERSUTBESUFOQkJHb2hCQ0FES0FJRVJRMEJJQVFpQXdzaEJTQURLQUlBSVFNTUFRc0xJQUVnQXpZQ0FDQUVEd3NnQVNBRE5nSUFJQVVQQ3lBQUVDVWhBd3NnQVNBRE5nSUFJQU1MS1FBZ0FRUkFJQUFnQVNnQ0FCQ3VCeUFBSUFFb0FnUVFyZ2NnQUJEWEFob2dBVUVRYWhDeUFnc0xKQUFnQVFSQUlBQWdBU2dDQUJDdkJ5QUFJQUVvQWdRUXJ3Y2dBQkFsR2lBQkVDb0xDMElCQVg4akFFRVFheUlFSkFBZ0JDQUNOZ0lJSUFRZ0FUWUNEQ0FFSUFNMkFnUWdBQ0FFS0FJTUlBUW9BZ2dnQkNnQ0JDQUFLQUlJRVFRQUlBUkJFR29rQUF1bkF3RURmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBRUhvQUdvUVJDZ0NBQ0VGSUFFRWZ5QUZFQlpGQkVBZ0FDQUJJQUVvQWdBb0FnQVJBQUJCdkxjTFFmTzNDMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQVVFQklBRW9BZ0FvQXJnQkVRRUFJQU1nQVRZQ0NDQUZJQU5CQ0dvUXNnUWdBeWdDREFVZ0Fnc0VRQ0FGRUJZRVFFRUFJUUVEUUFKQUlBVWdBUkFSS0FJQUlnSWdBaWdDQUNnQ05CRUFBQ0lDUlEwQUlBSW9BaGdpQWlBREtBSU1JZ1FnQkNnQ0FDZ0NOQkVBQUNnQ0dDSUVja1VFUUNBQUlBTW9BZ3dpQWlBQ0tBSUFLQUlBRVFBQVFmcTNDMEdLdUF0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBa1VnQkVWeURRQWdBaUFDS0FJQUtBSVVFUUFBUlEwQUlBUWdCQ2dDQUNnQ0ZCRUFBRVVOQUNBQ0lBSW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWdCQ0FFS0FJQUtBSVVFUUFBRUV0QkFCQVBLQUlBUncwQUlBQWdBeWdDRENJQ0lBSW9BZ0FvQWdBUkFBQkJrcmdMUWFPNEMwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBVUVCYWlJQklBVVFGa2tOQUFzTElBVWdBMEVNYWhEY0FRc2dBMEVRYWlRQUN3MEFJQUF0QUFsQkFuRkJBWFlMdkJZQ0NYOEJmaU1BUWZBQmF5SUlKQUFnQUNBQklBQkJ1QVZxSWdZUXFBOGdBQ0FCSUFZUXB3OENRQ0FFUlEwQUlBQWdBU0FHSUFSQkFFRUFFTHdISUFBZ0FTQUVFSlFFSUFRUVlFRUNTQTBBSUFBZ0FVRjNRZW1jQ3hCS0N5QUNFRGNFUUFOQUlBSWdDaEE0S0FJQUlnY2dCeWdDQUNnQ0tCRUFBQ0VGSUFBZ0FpQUtFRGhCQkdvaUNTQUZFTFlGQWtBZ0JTa0NCQ0lPcDBFL2NTSUxRUUpKRFFBZ0N5QUFLQUs4QlVFL2NVWU5BQ0FBSUFsQmdaMExJQWNnQnlnQ0FDZ0NHQkVBQUJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUlBVXBBZ1FoRGdzZ0JTQU9Ra0NESUFBcEFyd0ZRaitEaERjQ0JDQUdJQVVReWdjQ1FBSi9BbjhnQUNrQ3ZBVWlEa0tBZ0lDQWdBU0RVRVVFUUNBRklBVXBBZ1JDZ0lDQWdJQUVoRGNDQkNBQUtRSzhCU0VPQ3lBT1FvQ0FnSUNBQ0lOUVJRc0VRQ0FGSUFVcEFnUkNnSUNBZ0lBSWhEY0NCQ0FBS1FLOEJTRU9DeUFPUW9DQWdJQ0FFSU5RUlFzRWZpQUZJQVVwQWdSQ2dJQ0FnSUFRaERjQ0JDQUFLUUs4QlFVZ0RndW5RVDl4UVh0cVFRRkxEUUFnQlJDWkFrVUVRQ0FGRU9zQlJRMEJDeUFBSUFsQnhKMExJQWNnQnlnQ0FDZ0NHQkVBQUJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUhJQWNvQWdBb0FuQVJBQUFFUUNBQUlBa2dCaUFISUFjb0FnQW9BbEFSQUFCQkFDQUtJQUlRTjBGL2FrWVF2QWNMQWtBZ0JSQ1dBa1VOQUNBQUtBSVlEUUFnQUNBSlFYZEJtcDRMRUVvZ0FDQUpRWGRCdUFOQjQrb0tRWnFlQ3hBb0N5QUhJQWNvQWdBb0FzQUJFUUFBQkVBZ0FDQUpRYkdlQ3lBQ0lBb1FPQ2dDQUNJRklBVW9BZ0FvQWhnUkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQnhDMEJ3UkFJQUFnQ1VIOG5nc2dBaUFLRURnb0FnQWlCU0FGS0FJQUtBSVlFUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBcEJBV29pQ2lBQ0VEZEpEUUFMQ3dKQUFrQWdBQ2dDVEJBa0RRQWdBQ2dDdEFVUXR3VkZEUUFnQUNBQklBSWdBQ2dDdEFVZ0F5QUVFTDBQREFFTElBQWdBU0FBS0FLMEJSQ1lCQ0FEQkVBZ0FDQUJJQU1RbUFRTElBSVFOd1JBUVFBaEJRTkFJQUFnQWlBRkVEaEJCR29nQWlBRkVEZ29BZ0FpQ2lBS0tBSUFLQUlZRVFBQUVKZ0VJQVZCQVdvaUJTQUNFRGRKRFFBTEN3SkFJQUFvQXJ3RlFUOXhRWDFxSWdWQkEwMEVRQUpBQWtBQ1FBSkFJQVZCQVdzT0F3TUFBUUlMSUFoQnVBRnFJQUJCK0trQmFrRTBFRDBhREFRTElBaEJ1QUZxSUFCQnhLa0Jha0UwRUQwYURBTUxJQWhCdUFGcUlBQkJyS29CYWtFMEVEMGFEQUlMSUFoQnVBRnFJQUJCNEtvQmFrRTBFRDBhREFFTElBaEJ1QUZxRUlrREN3SkFBa0FnQmkwQUpRUkFJQVlRaGdORkRRRUxJQVl0QURCRkRRRWdCaENHQXcwQkN5QUFJQUFwQXJ3RlF2Ly8vLy8vLy8rL2VJTkNnSUNBZ0lDQWdNQUJoRGNDdkFVTEFrQWdCaEN1QWtVTkFDQUdFSVlERFFBZ0FDQUFLUUs4QlVMLy8vLy8vLy8vdjNpRFFvQ0FnSUNBZ0lEQUFZUTNBcndGQ3lBSVFiZ0JhaUFHUVFFUWtBWUNRQ0FHRU5rRFJRMEFJQWdwQXJ3QlFqZUlwMEVQY1NJRlFRVk5RUUJCQVNBRmRFRXNjUnNOQUNBQUlBRkJ1NThMUWREckNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FDQUlRWDgyQXNnQkN3SkFJQUlRTjBVRVFFRUFJUXRCQUNFRkRBRUxRUUFoQlVFQUlRdEJBQ0VLQTBBZ0FpQUtFRGdvQWdBaUJ5QUhLQUlBS0FJb0VRQUFJUWNnQWlBS0VEaEJCR29oQ1FKQUlBY1FzUU5GRFFBZ0J5a0NHQ0FJS1FQUUFZVkNnSUNBK0ErRFVBMEFJQUFnQ1VINm53dEJnZklLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBY1FsUUpGRFFBZ0J5a0NHQ0FJS1FQUUFZVkNnSUNBZ1BBQmcxQU5BQ0FBSUFsQjE5SUtRWnpUQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0J4Q0dBd1JBSUFBZ0NVR1pvQXNnQWlBS0VEZ29BZ0FpRENBTUtBSUFLQUlZRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQnhDQUFrVUVRRUVCSVEwTUFRc2dBQ2dDdkFWQlAzRkJmV3BCQVUwRVFDQUFJQWxCRGtIUW9Bc1FTaUFBSUFsQkJrRzRBMEhqNmdwQjBLQUxFQ2dnQUNBSlFRaEJ3QUpCQWtIc3hBcEIwS0FMRU5FQlFRRWhCUXdCQ3lBQUlBbEI2YUFMUWRDZ0MwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FIRU5rRFJRUkFJQWNRbGdKRkRRRUxJQWdwQXJ3QlFqZUlwMEVQY1NJTVFRVk5RUUJCQVNBTWRFRXNjUnNOQUNBQUlBbEJ1NThMUVltaEMwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dCeERVQWlFTUlBaEI0QUJxSUFoQnVBRnFRVFFRUFJvZ0FDQUpJQWhCNEFCcUlBZEJBQkNSQmlBSElBaEI0QUJxUVRRUVBSb2dDeUFNY2lFTElBcEJBV29pQ2lBQ0VEZEpEUUFMQ3lBQUlBRWdCU0FFRUxVUEFrQWdBQ2tDdkFWQ1A0TkNCRklOQUNBQVFlQ3FBV29RbFFKRkRRQWdCaENWQWcwQUlBWVFoUU5GRFFBZ0FDQUFLUUxRQlVMLy8vLy9qMzZESUFCQitLb0JhaWtDQUVLQWdJQ0E4QUdEaERjQzBBVUxJQUFnQVNBR0lBSWdCU0FORUtZUElBQWdCaUFDRU4wSklBQWdCaUFDRUtVUElBSVFOd1JBUVFBaEJRTkFJQUFnQWlBRkVEaEJCR29nQWlBRkVEZ29BZ0FRdVFjZ0JVRUJhaUlGSUFJUU4wa05BQXNMQWtBZ0MwRUJjVVVOQUNBQ0VEZEZEUUJCQUNFRkEwQWdBQ0FDSUFVUU9FRUVhaUFDSUFVUU9DZ0NBRUVCRU44SklBVkJBV29pQlNBQ0VEZEpEUUFMQ3lBR0lBaEJ1QUZxUVFFUWtBWWdDRUhnQUdvZ0FpQUFLQUswQlNBR0VNOEpJUVVDUUNBRUJFQWdCU0FFRUpBRURBRUxJQUFnQVNBRklBTWlBZ1IvSUFJRklBQW9BclFGQ3hEMENRc0NRQUpBSUFZdEFDWUVRQ0FBS1FLOEJVSS9nMElHVWdSQUlBQWdBVUc0aXd0QnF1VUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFJUVFocUlBVWdBQ2dDdEFVUXpna2hCRUdBQVJCR0lnSWdBQ2dDdEFVZ0JFRUJFTzBDR2dKQUlBQW9Ba3dnQWhEc0FnMEFBa0FnQUNnQ1RDQUFLQUswQlVFQVFRQVFyQUVpQWlBQ0tBSUFLQUl3RVFBQUVQUUJSUTBBSUFJZ0FpZ0NBQ2dDTUJFQUFDSUdJQVlvQWdBb0FsUVJBQUFvQWtCRkRRQWdBaUFDS0FJQUtBSXdFUUFBSWdZZ0JpZ0NBQ2dDVkJFQUFDZ0NRQkEzRFFBZ0FpQUNLQUlBS0FJd0VRQUFJZ1lnQmlnQ0FDZ0NMQkVBQUNrQ0JDQUZFQnNwQWdTRlFqK0RRZ0JTRFFBZ0FpQUNLQUlBS0FJd0VRQUFJZ0lnQWlnQ0FDZ0NWQkVBQUNBRkVJZ0dEQUVMSUFBZ0FVR1dvUXNnQUNnQ3RBVVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkJBMUdpQUREUUVNQWdzZ0NFRUlha0VRSUFVUUd5Z0NCRUUvY1VFQlFRQkJBRUVBRUVVaEFrR0FBUkJHSWdRZ0FDZ0N0QVVnQWtFQUVPMENHaUFBS0FKTUlBUVE3QUpGQkVBQ1FBSkFJQUFvQWt3Z0FDZ0N0QVZCQUVFQUVLd0JJZ1FnQkNnQ0FDZ0NNQkVBQUNJR0lBWW9BZ0FvQWh3UkFBQkJFRVlFUUNBRUlBUW9BZ0FvQWpBUkFBQWlCQ0FFS0FJQUtBSXNFUUFBS1FJRUlBVVFHeWtDQklWQ1A0TkNBRklOQWlBQUlBRkJ0YUVMSUFBb0FyUUZFQk1nQlJESkJFRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBQWdBVUhvb1FzZ0FDZ0N0QVVRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FoQTFHZ3dEQ3dzZ0FoQTFHaUFERFFCQjQ5WUpFTUlCSVFNTFFZQUJFRVlpQWlBRElBVkJBQkR0QWlFRUlBQW9Ba3dnQWhEc0FrVUVRQ0FEUWVQV0NSQXJCRUFnQUNBQlFaU2lDeUFBS0FLMEJSQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUlMSUFBZ0FVSGRvZ3NnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQUNBQklBSVF1QWNDUUNBQUlBVVFqZ01FUUNBSUlBSTJBZ2dnQUVISXF3RnFJQWhCQ0dvUXNnUWdBQ0FCUVFFUW1RUU1BUXNnQUNBQklBUWdBaWdDQUNnQ05CRUFBQkRIQndzZ0FDQUNJQUFvQWdBb0FvZ0NFUUVBQ3lBRkVEVWFDeUFJUWZBQmFpUUFDMklCQW44akFFRWdheUlCSkFBQ2YwRUJJQUF0QUFaQklIRkJCWFlOQUJwQkFDQUFJQUFvQWdBb0FvZ0JFUUFBUlEwQUdpQUFLQUpBRUVBaEFpQUFLQUpBRURJaEFDQUJJQUV0QUJBNkFBOGdBaUFBRUkwUEN5RUFJQUZCSUdva0FDQUFDM2tCQTM4Z0EwRUFPZ0FBSUFBUXdRSWhCUU5BQWtBZ0FDQUZFQkVvQWdBZ0FTQUNFTklKSUFWQmYyb2hCQ0FDRUxnQ0lRWWdCVUVFU0EwQUlBUWhCU0FHRFFFTEN5QUNFTGdDQkVBZ0EwRUJPZ0FBQTBBZ0FDQUVFQkVvQWdBZ0FTQUNFTklKSUFSQkFFb2hBeUFFUVg5cUlRUWdBdzBBQ3dzTEtnQWdBQ0FDUVE0UTd3SUVRQ0FBSUFGQnpkY0tJQU5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQzlRQkFRSi9Ba0FnQWlnQ0FDSUVRUkJMRFFBQ1FFRUJJQVIwSWdWQmdNQURjVVVFUUNBRlFRTnhEUUZCQVNBRWRFR0VnQVJ4UlEwQ0lBTWdBeWdDQUNnQ0tCRUFBQ0lBSUFBcEFnUkNRSU5DRUlRM0FnUVBDeUFESUFNb0FnQW9BaWdSQUFBaUFDQUVyU0FBS1FJRVFrQ0RoRGNDQkE4TElBTWdBeWdDQUNnQ0tCRUFBQ0lBSUFBcEFnUkNRSU5DRFlRM0FnUVBDeUFESUFNb0FnQW9BaWdSQUFBaUF5QURLUUlFUWtDRFFnMkVOd0lFSUFBZ0FVR3gxQW9nQWlnQ0FCRFRBa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXZSQkFFQ2Z5QUNJQUlvQWdBb0FqQVJBQUFpQkNBRUtBSUFLQUlzRVFBQUlRTWdBQ0FCSUFRUXVRY0NRQ0FERUk0RVJRMEFJQU1vQWdSQlAzRkJlMnBCQVVzTkFDQUNJQUlvQWdBb0FpZ1JBQUFOQUNBQUlBRkJ0L1VLUVlmc0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FBS0FJWVJRMEFJQUF0QUtRQkRRQWdBeThCQkVIQS93RnhEUUFnQXhDQUFnMEFJQUFvQWlndEFNMEZEUUFnQXlnQ0JFRS9jVUY5YWtFQlN3MEFJQVFnQkNnQ0FDZ0NMQkVBQUJDdUFnMEFJQVFnQkNnQ0FDZ0NIQkVBQUVFUVJnUkFJQVFvQWtCQkFCQTRLQUlBSWdJZ0FpZ0NBQ2dDS0JFQUFCQ0FBZzBCSUFRb0FrQkJBQkE0S0FJQUlnSWdBaWdDQUNnQ0tCRUFBQzhCQkVIQS93RnhEUUVMSUFBZ0FVSGc5UXBCaCt3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQU1RcVFsRkRRQWdBeWdDQkVFL2NVRjdha0VCU3cwQUlBUWdCQ2dDQUNnQ0hCRUFBRUVRUmcwQUlBTVF6UVFFUUNBQUlBRkJqL1lLUWNiMkNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBeENHQXdSQUlBQWdBVUhOOWdwQnh2WUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFNUWxnSkZEUUFnQkJEYUJBMEFJQUFnQVVIKzlncEIyNE1LUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBREVOa0RCRUFnQUNBQlFmNzJDa0hRNndwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBTXRBQ1VFUUNBQUlBRkJwL2NLUVp6bENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBeTBBTUVVTkFDQUFJQUZCeS9jS1FlNzNDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNMdmhZQ0JYOEJmaU1BUVVCcUlnVWtBQ0FBSUFFZ0FpQUNLQUlBS0FJc0VRQUFJZ01RM0FrQ1FDQURFSTRFUlEwQUFrQWdBeENBQWtVTkFDQURLUUlFUWorRFFnUlNEUUFnQUNnQ0ZFRUVSdzBBSUFNb0FoUkIveDl4SUFBb0F1Z0dTUTBBSUFBZ0FVSFArQXBCaCt3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQU1Rc2dORkRRQWdBeWdDRkNFRUlBSWdBaWdDQUNnQ01CRUFBRUVDUVFFZ0FpQUNLQUlBS0FJY0VRQUFRUUpHRzJ3Z0JFRU1ka0VIY1dwQkJVNEVRQ0FBSUFGQjdmZ0tRZVB0Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FBSkFJQUlnQWlnQ0FDZ0NiQkVBQUEwQUlBSWdBaWdDQUNnQ0hCRUFBRUVRUmcwQUlBSWdBaWdDQUNnQ0hCRUFBRUVQUncwQkN5QUFJQUZCbC9rS1FlUHRDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlBQ0tBSUFLQUljRVFBQVFRSkhEUUFnQXkwQUZVRVFjVVVOQUNBQUlBRkJ4ZmtLUWVQdENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQUpBSUFNb0FnUkJQM0VpQkVFTVN3MEFRUUVnQkhRaUJrR0FQbkVOQVNBR1FSaHhSUVJBUVFFZ0JIUkI0QUJ4UlEwQklBSWdBaWdDQUNnQ0hCRUFBRUVRUncwQ0lBQWdBVUcvK2dwQmgrd0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUlMSUFJZ0FpZ0NBQ2dDSEJFQUFFRVFSZ1JBSUFBZ0FVRUdRYmdEUWVQcUNrSDMrUW9RS0FzZ0FpQUNLQUlBS0FJc0VRQUFFSzRDUlEwQklBQWdBVUdhK2dwQmgrd0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFBZ0FVSG4rZ3BCaCt3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUFLQUlvSUFNZ0FpQUZRVDlxRVB3WElRUWdCUzBBUHlJR0lBUkJBRWh5Qkg4Z0JnVWdBQ2dDQUNnQ29BRWhCaUFGSUFRMkFqQWdBQ0FCUWFqN0NrR0g3QXBCek9jSklBVkJNR29nQmhFQ0FDQUZMUUEvQzBIL0FYRkZEUUFnQUNnQ0ZFRUVSdzBBSUFNUThBSkZEUUFnQUNnQ0FDZ0NvQUVoQmlBRklBUTJBaUFnQUNBQlFjVDdDa0dIN0FwQnpPY0pJQVZCSUdvZ0JoRUNBQXNDUUNBREVJVURSUTBBSUFNUWxRSkZEUUFnQUNnQ0tDQUNFUFVYSWdSQkFFNEVRQ0FES0FJY0lRWWdBQ2dDQUNnQ29BRWhCeUFGSUFRMkFoQWdCU0FHUVE5eE5nSVVJQUFnQVVHTC9BcEI4KzRLUWFMOENpQUZRUkJxSUFjUkFnQUxBa0FDUUNBQ1FRSWdBaWdDQUNnQ3NBRVJBd0FOQUNBQ1FRb2dBaWdDQUNnQ3NBRVJBd0FOQUNBQ1FRc2dBaWdDQUNnQ3NBRVJBd0JGRFFFTElBTXBBaGhDTW9pblFmOC9jVUVJRUpNRURRQWdBQ0FCUWJuOENrSHo3Z3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FBSkFJQUpCRENBQ0tBSUFLQUt3QVJFREFBMEFJQUpCQVNBQ0tBSUFLQUt3QVJFREFBMEFJQUpCQ0NBQ0tBSUFLQUt3QVJFREFBMEFJQUpCQ1NBQ0tBSUFLQUt3QVJFREFFVU5BUXNnQXlrQ0dFSXlpS2RCL3o5eFFRUVFrd1FOQUNBQUlBRkJoUDBLUWZQdUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDd0pBSUFJUXNBSU5BQ0FDUVFZZ0FpZ0NBQ2dDc0FFUkF3QU5BQ0FDUVFjZ0FpZ0NBQ2dDc0FFUkF3QkZEUUVMSUFNcEFoaENNb2luUWY4L2NVRUNFSk1FRFFBZ0FDQUJRYkw5Q2tIejdncEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQXhDQ0JrVU5BQ0FERUpVQ1JRMEFJQUFvQWlnZ0F5a0NHQ0lJUWlDSXAwRVBjU0FJUWlTSXAwSC8vd0J4RU5zSkRRQWdBQ2dDQUNnQ29BRWhCQ0FGSUFNb0FoeEJEM0UyQWdBZ0FDQUJRWUgrQ2tHVDd3cEJ6T2NKSUFVZ0JCRUNBQXNDUUFKQUlBTVE2UUlFUUFKQUlBSWdBaWdDQUNnQ2xBRVJBQUFOQUNBQ0lBSW9BZ0FvQWh3UkFBQkJFRVlOQUNBQUlBRkJyLzRLUWVyc0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FDSUFJb0FnQW9BaHdSQUFCQkRrY05BQ0FETHdFWUlRUUNRQ0FDSUFJb0FnQW9BbkFSQUFCRkRRQWdBQ2dDSUVFQlRnUkFJQVJCQVdvaEJBd0JDeUFDSUFJb0FnQW9BblFSQUFBRVFDQUNJQUlvQWdBb0FrUVJBQUFnQkdvaEJBd0JDeUFFUVFGcUlRUWdBQ2dDSUEwQUlBQWdBVUhvL2dwQnorQUpRZVBXQ1VFQUlBQW9BZ0FvQXFRQkVRSUFDeUFBS0FJZ0RRQWdCQ0FBS0FMY0JrZ05BQ0FBSUFGQnhmOEtRZXJzQ2tHRGdBdEI0OVlKSUFJZ0FpZ0NBQ2dDY0JFQUFCdEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FoRGFCRVVOQVNBREx3RVlJQUJCMUFocUtBSUFTUTBCSUFBZ0FVR1JnQXRCNnV3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxJQUFvQWlndEFNd0ZEUUFnQWhEYUJBUkFJQUFnQVVIVGdBdEJsN3NLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSVlSUTBBSUFNUXNRSkZEUUFDUUNBQ0lBSW9BZ0FvQWh3UkFBQkJFRWNOQUNBRExRQWxEUUFnQXkwQU1BMEFJQU1ReWdRTkFDQURMUUFtRFFBZ0FDQUJRZkdBQzBIcTdBcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQUNnQ0lFRUJTQTBBSUFJZ0FpZ0NBQ2dDSEJFQUFFRU9SdzBBSUFBZ0FVR2hnUXRCNnV3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUlRakFORkRRQWdBQ2dDSUVFQlNBMEFJQUlnQWlnQ0FDZ0NsQUVSQUFCRkJFQWdBaUFDS0FJQUtBSXNFUUFBRUxFQ1JRMEJJQUlnQWlnQ0FDZ0NIQkVBQUVFUVJ3MEJDeUFBSUFGQjBvRUxRYk9DQzBIajFnbEJBQ0FBS0FJQUtBS2tBUkVDQUFzQ1FDQURFSllDUlEwQUlBSWdBaWdDQUNnQ0hCRUFBRUVRUncwQUlBQWdBVUc0Z2d0QjI0TUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFERUo4SElRWWdBaUFDS0FJQUtBS2NBUkVBQUNFRUFrQWdCZ1JBSUFSRkJFQWdBQ0FCUWVLQ0N5QURMUUFrRU1zRVFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxBa0FnQWlBQ0tBSUFLQUlnRVFBQUxRQUFRUUZIRFFBZ0F5MEFKRUVYU0EwQUlBQWdBVUgzZ2dzZ0F5MEFKQkRMQkVIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQUNJQUlvQWdBb0FpQVJBQUF0QUFCQkNFY05BQ0FETFFBa1FSWk9CRUFnQXkwQUpFRWlTQTBCQ3lBQUlBRkJuNE1MSUFNdEFDUVF5d1JCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FpQUNLQUlBS0FJZ0VRQUFMUUFBUVFsSERRQWdBeTBBSkVFZ1NnMEFJQUFnQVVISGd3c2dBeTBBSkJETEJFSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBQkF6UlEwQklBTXRBQ1JCQTBZTkFTQURMUUFrUVJwR0RRRWdBeTBBSkVFbFJnMEJJQU1RbGdZTkFTQURFSm9FRFFFZ0FDQUJRZkdEQ3lBRExRQWtFTXNFUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBUkZEUUFnQXhDYUJBMEFJQUFnQVVFR1FhaUVDeEJLSUFBZ0FVRUdRUUJCOTRRTFFhaUVDeEFvQ3dKQUlBTXRBQ1ZGRFFBZ0FpQUNLQUlBS0FJY0VRQUFRUkJHRFFBZ0FDQUJRWnFGQzBHYzVRcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQXkwQUprVU5BQ0FDSUFJb0FnQW9BaHdSQUFCQkVFWU5BQ0FBSUFGQm1vVUxRYXJsQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQURMUUF3UlEwQUlBSWdBaWdDQUNnQ0hCRUFBRUVRUmcwQUlBQWdBVUdhaFF0Qjd2Y0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFDSUFJb0FnQW9BcUFCRVFBQUlRWWdBeERLQkNFRUFrQWdCZ1JBSUFRTkFTQUFJQUZCdUlVTFFleUZDMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBRVJRMEFJQUFnQVVIMGhRdEIvKzhLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBREVLa0ZSUTBBSUFJZ0FpZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJQ1VnUkFJQUFnQVVHVWhndEJoKzBLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQ0lBSW9BZ0FvQW1BUkFBQkZCRUFnQUNBQlFjU0dDMEdIN1FwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBSWdBaWdDQUNnQ0hCRUFBRUYvYWtFTVNRMEFJQUFnQVVIa2hndEJoKzBLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRlFVQnJKQUFMSlFFQmZ5TUFRUkJySWdFa0FDQUJRUUEyQWd3Z0FDQUJRUXhxRUswQ0lBRkJFR29rQUF1Y0FRQWdBa0hleEFvUWh3RkZCRUFnQUNBQklBTkI5dUFLUVlyaENoQ3pCUThMSUFKQjVNVUtFSWNCUlFSQUlBQWdBU0FEUWFIaENrRzE0UW9Rc3dVUEN5QUNRZlRGQ2hDSEFVVUVRQ0FBSUFFZ0EwSFE0UXBCNU9FS0VMTUZEd3NnQWtILzRRb1Fod0ZGQkVBZ0FDQUJJQU5Cb2VFS1FaamlDaEN6QlE4TElBSkJ2T0lLRUljQlJRUkFJQUFnQVNBRFFkRGhDa0hWNGdvUXN3VUxDNXdFQWdGL0FYNENRQ0FBTFFDa0FRMEFJQVFFUUNBRUlBUW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSjRFUUFBUlEwQklBQWdBVUhwdmdwQnorQUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQXhDNUJRUkFJQUFnQVVHSnZ3cEJ6K0FKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBSUFNUTRBa0xBa0FnQXhEREQwVU5BQ0FDS0FJRVFUOXhJZ1JCQjAxQkFFRUJJQVIwUVljQmNSc05BQ0FBSUFGQjBMOEtRYy9nQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FCQXpSUTBBQWtBZ0FDZ0NGQ0lFUVg5cUlnWkJBa3NFUUNBRVFRMUhEUUVnQWlrQ0JFSS9nMElFVWcwQklBQVFNd1JBSUFBb0FoQkJ2d0pLRFFNTElBQkJzTUFLSUFBb0FnQW9BaUFSQXdCRkRRRU1BZ3NDUUFKQUFrQWdCa0VCYXc0Q0FnQUJDeUFDS1FJRVFqK0RRZ05TRFFJZ0FCQXpCRUFnQUNnQ0VFRy9Ba29OQkFzZ0FFRUNRYURBQ2lBQUtBSUFLQUlrRVFjQVJRMENEQU1MSUFJb0FnUkJQM0ZCZldvaUJFRUJTdzBCSUFSQkFXdEZCRUFnQWhDMUJRMENDeUFBRURNRVFDQUFLQUlRUWI4Q1NnMERDeUFBUVFKQnFNQUtJQUFvQWdBb0FpUVJCd0JGRFFFTUFnc0NRQ0FDS1FJRVFqK0RJZ2RDQTFFRWZpQUNFTFVGUlEwQklBSXBBZ1JDUDRNRklBY0xRZ1JTRFFFTElBQVFNd1JBSUFBb0FoQkJ2d0pLRFFJTElBQkJBa0dvd0FvZ0FDZ0NBQ2dDSkJFSEFBMEJDeUFDS1FJRVFqK0RRZ1pSUVFBZ0JSc05BQ0FBSUFFZ0F4QzJBd3NMQ0FBZ0FCQ3lCUm9MS2dBZ0F3Ui9RUUFGSUFBZ0FVSEFwQW9nQWhBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQVFRRUxDMllBQWtBQ1FDQUJJQUVvQWdBb0FvQUJFUUFBUVFoSEJFQWdBU0FCS0FJQUtBS0FBUkVBQUVFSlJ3MEJDeUFCSUFFb0FnQW9BcWdCRVFBQURRRUxJQUFnQVNBQktBSUFLQUlBRVFBQVFiNlVDaUFDUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dzbkFDQUFFSmdHQkVBZ0FTQUNRUmgwUVlDQWdEaHhyU0FCS1FJRVF2Ly8vMGVEaERjQ0JBc0xDQUFnQUdsQkFVWUxFUUFnQUNBQVFYOXFjVVVnQUVFQVNuRUxJd0FnQUNnQ0JFRS9jVUZ6YWlJQVFRTk5CRUJCRFNBQVFROXhka0VCY1E4TFFRQUx5UlFCQkg4akFFSHdBV3NpQnlRQUFrQWdBeUFES0FJQUtBSjRFUUFBSWdZZ0JpZ0NBQ2dDYkJFQUFFVU5BQ0FCSUFFb0FnQW9BbUFSQUFCRkJFQWdBU0FCS0FJQUtBSm9FUUFBUlEwQkN5QUJJQUVvQWdBb0Fvd0JFUUFBSUFNZ0F5Z0NBQ2dDZUJFQUFDSUdJQVlvQWdBb0Fvd0JFUUFBYzBFQlJ3MEFJQUFnQjBHWUFXb2dBeUFES0FJQUtBS0FBUkVBQUVFQUlBRWdBU2dDQUNnQ01CRUFBRUVBUVFBZ0F5QURLQUlBS0FLa0FSRUFBQkJGSWdZZ0FDZ0NLQ0FHRUxRSUlBTWdCRUVBRU1RSElRTWdCaEExR2dzQ1FBSkFBa0FDUUNBQ1FiWjhhaUlJUWVvQVN3MEFRZE1ESVFZQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDRUVCYXc1cUFRVUdCd2dKQ2dJUkF4RVJFUkVSRVJFUkVSRVJFUU1EQXdJQ0FnVUZCUVlHQmdjSEJ3Z0lDQkFRRUFBQkFRa0pDUXNMQ3dNREF3TURBd01EQXc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHdRRUJBUUVCQVFFQkFRRUJBUVBEd3dORGhBTElBTWdBeWdDQUNnQ2VCRUFBQ0lHSUFZb0FnQW9BaHdSQUFCQkVrY05BQ0FBSUFSQkFVSFVtd3RCMkpzTElBQW9BZ0FvQWhRUkNBQWdBQ2dDS0NBRElBTW9BZ0FvQWdBUkFBQkJsZ0ZCQVNBRElBRVEvQUVoQmd3UkMwSExBeUVHREE4TFFkSURJUVlNRGd0QjFBTWhCZ3dOQzBHakJDRUdJQUFvQWlnUTNnZ05EQ0FIUVpnQmFrRUJRUUFnQVNBQktBSUFLQUl3RVFBQVFRQkJBRUVBRUVVaUFTQURJQU1vQWdBb0FuZ1JBQUFRd0FFRVFDQUFLQUlvSVFRZ0J5QURJQU1vQWdBb0FnQVJBQUFpQlNrQ0NEY0RNQ0FISUFVcEFnQTNBeWdnQTBIVEF5QUNRYkYvYWlBQ1FhTUVSaHNnQVNBSFFTaHFFS1FDSVFNTElBQW9BaWhCQXlBREVJa0ZJUVlnQVJBMUdnd05DMEhNQXlFR0lBQW9BaWdRL2dZTkN5QUhRWmdCYWtFSVFRQWdBU0FCS0FJQUtBSXdFUUFBUVFCQkFFRUFFRVVpQVNBRElBTW9BZ0FvQW5nUkFBQVF3QUVFUUNBQUtBSW9JUVFnQjBGQWF5QURJQU1vQWdBb0FnQVJBQUFpQlNrQ0NEY0RBQ0FISUFVcEFnQTNBemdnQTBIS0F5QUNRUXhxSUFKQnpBTkdHeUFCSUFkQk9Hb1FwQUloQXdzZ0FDZ0NLRUVFSUFNUWlRVWhCaUFCRURVYURBd0xRYzBESVFZZ0FDZ0NLQkQrQmcwS0lBZEJtQUZxUVFsQkFDQUJJQUVvQWdBb0FqQVJBQUJCQUVFQVFRQVFSU0lCSUFNZ0F5Z0NBQ2dDZUJFQUFCREFBUVJBSUFBb0FpZ2hCQ0FISUFNZ0F5Z0NBQ2dDQUJFQUFDSUZLUUlJTndOUUlBY2dCU2tDQURjRFNDQURRY3NESUFKQkRHb2dBa0hOQTBZYklBRWdCMEhJQUdvUXBBSWhBd3NnQUNnQ0tFRUZJQU1RaVFVaEJpQUJFRFVhREFzTFFjNERJUVlnQUNnQ0tCRDlCZzBKSUFkQm1BRnFRUWhCQUNBQklBRW9BZ0FvQWpBUkFBQkJBRUVBUVFBUVJTSUJJQU1nQXlnQ0FDZ0NlQkVBQUJEQUFRUkFJQUFvQWlnaEJDQUhJQU1nQXlnQ0FDZ0NBQkVBQUNJRktRSUlOd05nSUFjZ0JTa0NBRGNEV0NBRFFjb0RJQUpCQm1vZ0FrSE9BMFliSUFFZ0IwSFlBR29RcEFJaEF3c2dBQ2dDS0VFR0lBTVFpUVVoQmlBQkVEVWFEQW9MUWM4RElRWWdBQ2dDS0JEOUJnMElJQWRCbUFGcVFRbEJBQ0FCSUFFb0FnQW9BakFSQUFCQkFFRUFRUUFRUlNJQklBTWdBeWdDQUNnQ2VCRUFBQkRBQVFSQUlBQW9BaWdoQkNBSElBTWdBeWdDQUNnQ0FCRUFBQ0lGS1FJSU53TndJQWNnQlNrQ0FEY0RhQ0FEUWNzRElBSkJCbW9nQWtIUEEwWWJJQUVnQjBIb0FHb1FwQUloQXdzZ0FDZ0NLRUVISUFNUWlRVWhCaUFCRURVYURBa0xRZEFESVFZTUJ3c2dBU0FCS0FJQUtBSmdFUUFBUlEwQUlBTWdBeWdDQUNnQ2VCRUFBQkQwQVVVTkFDQUFLQUlvSUFNZ0F5Z0NBQ2dDQUJFQUFFR1VBVUVCSUFNZ0FSRDhBU0VHREFjTFFkRURJUVlNQlFzZ0FDZ0NLQ0FESUFNb0FnQW9BZ0FSQUFCQkRrRUJJQU1nQVJEOEFTRUdEQVVMSUFNZ0F5Z0NBQ2dDZUJFQUFCRDBBUVJBSUFBb0FpZ2dBeUFES0FJQUtBSUFFUUFBUWJNRVFRRWdBeUFCRVB3QklRWU1CUXNDUUNBRElBTW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSmdFUUFBUlEwQUlBTWdBeWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaHdSQUFCQkMwY05BQ0FBS0FJb0lBTWdBeWdDQUNnQ0FCRUFBRUdUQVVFQklBTWdBUkQ4QVNFR0RBVUxRUUFoQmlBRElBTW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSm9FUUFBUlEwRUlBTWdBeWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaHdSQUFCQkNVY05CQ0FESUFNb0FnQW9BcEFCRVFBQVFRSkhEUVFnQUNBRVFRRkIxSnNMUWZhYkN5QUFLQUlBS0FJVUVRZ0FJQUFvQWlnZ0F5QURLQUlBS0FJQUVRQUFRWlVCUVFFZ0F5QUJFUHdCSVFZTUJBc2dBeUFES0FJQUtBSjRFUUFBRUlVQklRSWdBU0FCS0FJQUtBSWNFUUFBSVFRZ0FrVUVRQ0FESUFNb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FJY0VRQUFJQVJIQkVBZ0FDZ0NLQ0FCSUFFb0FnQW9BaHdSQUFBZ0F4Q0pCU0VEQ3lBQUtBSW9JUUFnQnlBRElBTW9BZ0FvQWdBUkFBQWlBaWtDQ0RjRGtBRWdCeUFDS1FJQU53T0lBU0FEUWJRRUlBRWdCMEdJQVdvUXBBSWhCZ3dFQzBFQUlRSUNRQ0FFUVg5cUlnUkJDRXNOQUFKQUFrQUNRQUpBQWtBQ1FDQUVRUUZyRGdnR0JRSURCZ1lBQVFRTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwRklBUkJBblJCOE1rTGFpZ0NBQ0VDREFVTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwRUlBUkJBblJCbE1vTGFpZ0NBQ0VDREFRTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwRElBUkJBblJCdU1vTGFpZ0NBQ0VDREFNTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwQ0lBUkJBblJCM01vTGFpZ0NBQ0VDREFJTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmZXb2lCRUVIVHcwQklBUkJBblJCZ01zTGFpZ0NBQ0VDREFFTElBTWdBeWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaHdSQUFCQmYyb2lCRUVKVHcwQUlBUkJBblJCbk1zTGFpZ0NBQ0VDQ3lBQUtBSW9JUUFnQnlBRElBTW9BZ0FvQWdBUkFBQWlCQ2tDQ0RjRGdBRWdCeUFFS1FJQU53TjRJQUlnQXlBSFFmZ0FhaUFCRU9JSUlnWWdCaWdDQUNnQ0hCRUFBQ0lBSUFBb0FnQW9BcndCRVFBQUlnQWdBQ2dDQUNnQ0ZCRUFBRVVOQXlBR0lBWW9BZ0FvQWh3UkFBQWlBQ0FBS0FJQUtBSzhBUkVBQUNJQUlBQW9BZ0FvQWhRUkFBQWlBQ0FDSUFZZ0JpZ0NBQ2dDZUJFQUFDQUFLQUlBS0FLOEFSRUhBQ0VHREFNTFFRQWhCaUFBSUFSQmxKd0xRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3Q0MwSEtBeUVHQ3lBQUtBSW9JUWdnQnlBRElBTW9BZ0FvQWdBUkFBQWlDU2tDQ0RjRElDQUhJQWtwQWdBM0F4Z2dDQ0FHSUFNZ0IwRVlhaER4RENJR1JRUkFRUUFoQmlBQUlBUkJyWndMUWVTYUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFGRFFBZ0F5QUdSd1JBSUFZZ0JpZ0NBQ2dDZUJFQUFDQUJFS01DRFFFTElBQW9BaWdoQUNBSElBUXBBZ2czQXhBZ0J5QUVLUUlBTndNSUlBWWdBaUFCSUFkQkNHb1FwQUloQmdzZ0IwSHdBV29rQUNBR0N4TUFJQUFnQUNrQ0JFS0FnSUNBSUlRM0FnUUxWUUVDZnlNQVFSQnJJZ1VrQUNBREVCTWhBeUFFRUJNaEJDQUFLQUlBS0FLZ0FTRUdJQVVnQkRZQ0NDQUZJQU0yQWdRZ0JTQUNOZ0lBSUFBZ0FVSFFqZ29nQWtIbWpnb2dCU0FHRVFJQUlBVkJFR29rQUF1L0FRQUNRQ0FDSUFJb0FnQW9BbkFSQUFCRkRRQWdBaUFDS0FJQUtBSW9FUUFBTFFBSlFRRnhEUUFnQUNnQ1RCQWtEUUFnQWlBQ0tBSUFLQUlvRVFBQUtRSUVRaitEUWdOU0RRQWdBaUFDS0FJQUtBSW9FUUFBTFFBSlFRRnhEUUFnQUNnQ0ZFRi9ha0VCU3cwQUlBSWdBaWdDQUNnQ1BCRUFBQ0FBUWJBSWFpZ0NBRVlOQUNBQ0lBSW9BZ0FvQW5RUkFBQUVRQ0FBSUFGQmdlQUpRYy9nQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpQUFLQUt3Q0JDTkF3c0x2Z0lCQm44akFFRVFheUlGSkFBZ0JVSHA0QWtRSWlFRElBQW9BaWdvQXBBRVFYOUhCRUFnQUNnQ0tDZ0NrQVFoQmdzQ1FBSkFBbjhDUUNBQUtBSVVJZ2RCZjJvaUNFRURTd1JBSUFkQkRVY05CQ0FBS0FJb0tBTFlCRUYvUncwQlFRQU1BZ3NDUUFKQUFrQWdDRUVCYXc0REJnQUNBUXNnQUNnQ0tDZ0NsQVFROHdraEJDQURJQUFvQWlnb0FwUUVFS3NCRU5jRERBVUxJQU5COGVBSkVOY0REQU1MSUFOQjhlQUpFTmNEUVFNaEJBd0RDeUFBS0FJb0tBTFlCQXNoQkNBQktRSUVRc0QvQVlOQ2dEZFJCRUFnQUNnQ0tDZ0NtQVFROHdraEFTQURRZnJnQ1JEWEF5QURJQUFvQWlnb0FwZ0VFS3NCRUpJQklBRWdCR3doQkF3Q0N5QUJFTDBGQkVBZ0EwR0s0UWtRMXdNTUFnc2dBMEdaNFFrUTF3TUxJQVloQkFzZ0FnUkFJQUlnQXhEb0Fnc2dBeEFaR2lBRlFSQnFKQUFnQkF0WUFRSi9Jd0JCRUdzaUFpUUFJQUlnQUJBYklnTVFqaGNnQXlBQ0tBSUFRUWhxSUFFUStRRWdBQ0FDS0FJQUlBSW9BZ0FReVFnZ0FCQWJJZ0FnQUNnQ0FFRUJhallDQUNBQ0VGOGFJQUlRMXdZZ0FrRVFhaVFBQzlZQkFRRitJQUFRbGdZRVFDQUJJQUVwQWdSQy8vLy8vLy8vZllNZ0FDa0NCRUtBZ0lDQWdJQUNnNFEzQWdRTElBQVFtZ1FFUUNBQklBRXBBZ1JDLy8vLy8vLy9lNE1nQUNrQ0JFS0FnSUNBZ0lBRWc0UTNBZ1FMQW44Z0FDa0NCQ0lDUW9DQWdJQ0FnQWlEVUVVRVFDQUJJQUVwQWdSQ2dJQ0FnSUNBQ0lRM0FnUWdBQ2tDQkNFQ0N5QUNRb0NBZ0lDQWdCQ0RVRVVMQkg0Z0FTQUJLUUlFUW9DQWdJQ0FnQkNFTndJRUlBQXBBZ1FGSUFJTFFvQ0FnSUNBZ0FHRFVFVUVRQ0FCSUFFcEFnUkNnSUNBZ0lDQUFZUTNBZ1FMQ3hjQUlBQkJBVG9BaUFRZ0FFR0FCMnBCaDdvTEVKTUNDeElBSUFBZ0FTQUNJQU1nQUNnQ0NCRUpBQXVVQVFFQ2Z3SkFJQUFvQWdBaUF5QURLQUlBS0FLUUFSRUFBRUVCU0EwQVFRQWhBd05BSUFBb0FnUWdBQ2dDQUNJRUlBTWdCQ2dDQUNnQ29BRVJBd0FvQWdRZ0FTQURJQUVvQWdBb0FxQUJFUU1BS0FJRUlBSWdBeUFDS0FJQUtBS2dBUkVEQUNnQ0JCRE1CMFVFUUNBRFFRRnFJZ01nQUNnQ0FDSUVJQVFvQWdBb0FwQUJFUUFBU0EwQkRBSUxDMEVCRHd0QkFBdTdBd0VEZnlNQVFVQnFJZ1FrQUNBRUlBSTJBamdDUUNBREtBSUFJZ1ZCZjB3RVFDQUFLQUlBS0FLZ0FTRUNJQVFnQlRZQ0FDQUFJQUZCdDgwSlFmblBDVUg3endrZ0JDQUNFUUlBSUFOQkFEWUNBQXdCQ3lBQ0lBSW9BZ0FvQW5BUkFBQWhCaUFDS0FJQUlRVWdCZ1JBSUFJZ0JTZ0NkQkVBQUVVTkFTQUVRVGhxRUlNUURRRWdBeWdDQUNBQ0lBSW9BZ0FvQWp3UkFBQklEUUVnQUNnQ0FDZ0NvQUVoQlNBRUlBTW9BZ0EyQWhBZ0FDQUJRYmZOQ1VINXp3bEJrOUFKSUFSQkVHb2dCUkVDQUNBRElBSWdBaWdDQUNnQ1BCRUFBRUYvYWpZQ0FBd0JDeUFDSUFVb0FtZ1JBQUFFUUNBREtBSUFJQUlnQWlnQ0FDZ0NNQkVBQUVnTkFTQUFLQUlBS0FLZ0FTRUZJQVFnQXlnQ0FEWUNJQ0FBSUFGQnQ4MEpRZm5QQ1VHeDBBa2dCRUVnYWlBRkVRSUFJQU1nQWlBQ0tBSUFLQUl3RVFBQVFYOXFOZ0lBREFFTElBSWdBaWdDQUNnQ2JCRUFBRVVOQUNBREtBSUFJQUlnQWlnQ0FDZ0NOQkVBQUVnTkFDQUFLQUlBS0FLZ0FTRUZJQVFnQXlnQ0FEWUNNQ0FBSUFGQnQ4MEpRZm5QQ1VIUTBBa2dCRUV3YWlBRkVRSUFJQU1nQWlBQ0tBSUFLQUkwRVFBQVFYOXFOZ0lBQ3lBRVFVQnJKQUFMRHdBZ0FDQUJJQUlnQXlBRUVJZ0tDem9CQW45QmhTb2hBU0FBTFFBQUlnSUVRQU5BSUFGQklXd2dBa0VZZEVFWWRXb2hBU0FBTFFBQklRSWdBRUVCYWlFQUlBSU5BQXNMSUFFTGRBRUNmeU1BUVNCcklnTWtBQUpBSUFFb0FnQWlCQVJBQWtBZ0FnUkFJQU5CMDh3SklBUVFxQWtnQTBFUWFpQURRZFBNQ1JEWUF5QURFQmthREFFTElBTkJFR29nQkJEL0FSb0xJQUFnQTBFUWFoQVRFR2thSUFOQkVHb1FHUm9NQVFzZ0FDQUJOQUlFRUpnUkN5QURRU0JxSkFBTDVBRUJBWDhDUUNBQUtBSUVLQUpNRUNRTkFDQUFLQUlFRURORkJFQWdBQ2dDQkNJQ0tBSVFRYU1EU2cwQklBSkJyYjhKSUFJb0FnQW9BaUFSQXdBTkFRc0NRQ0FCUlEwQUlBQW9BZ1FRTTBVTkFDQUFLQUlFS0FJUVFiWUNUZzBCQ3lBQUtBSUVFRE1oQWlBQUtBSUVJUUVDUUFKQUlBSUVRQ0FCS0FJUVFhc0NTZzBCQ3lBQkVETWhBaUFBS0FJRUlRRWdBZzBCSUFFb0FoQkJnZ0ZJRFFFTElBQVEyUUVNQVFzZ0FTMEFCQVJBSUFBb0FnUWlBU0FBUVF4cVFmM0pDU0FBS0FJa1FaVytDVUVBSUFFb0FnQW9BcVFCRVFJQUN5QUFFTmdCRHdzZ0FDZ0NLQXNIQUNBQUtBSm9DeElBSUFBUUl5Z0NBQ0FBS0FJQWEwRURkUXRwQVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBQVFReHFJQVJCREdvZ0F4Q0JBaUFCQkVBZ0FDZ0NFQ0FCRUpjS0lRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFRGRHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUVEZEdvMkFnQWdCRUVRYWlRQUlBQUxMQUVCZnlBQklBQW9BZ1FpQWtjRVFBTkFJQUFRT3hvZ0FrRjRhaUlDSUFGSERRQUxDeUFBSUFFMkFnUUxnUUVCQW44Q1FBSkFJQUZCZjJvaUEwRURTd1JBSUFGQkRVY05BU0FBTFFBSVFZQUJjUTBCREFJTEFrQUNRQUpBQWtBZ0EwRUJhdzREQVFNQ0FBc2dBQzBBQ1VFQmNRMERRUUVoQWlBQUVQRUNSUTBFREFNTElBQXRBQWxCQVhGRkRRRU1BZ3NnQUMwQUNFRVFjVVVOQVFzZ0FCRHhBaUVDQ3lBQ0R3c2dBQkR3QWdzS0FDQUJJQUlRNFFNYUN3Y0FJQUFvQWdnTENBQWdBQkRlQkJvTENBQWdBRUh3QUdvTENBQWdBRUhzQUdvTExRRUJmeU1BUVJCcklnRWtBQ0FCSUFBb0FnUTJBZ2dnQVVFSWFoQytDaWdDQUNFQUlBRkJFR29rQUNBQUN3OEFJQUFvQWdBZ0FVRUVkQkNVQWdzSkFDQUFJQUUyQWlRTFV3RUNmeUFBS0FJRUlRSkJBU0VESUFBb0FnQVFSQkRoQkVFQlRnUi9JQUlnQUNnQ0NDZ0NBQ0lBSUFBb0FnQW9BZ0FSQUFCQnc0d0pJQUZCMG9zSlFRQWdBaWdDQUNnQ3BBRVJBZ0JCQUFVZ0F3c0xDUUFnQUJEekVDQUFDeVVBSUFBUVhTQUFFQjhnQVdwQkFtcEpCRUFnQUNBQUVGMGdBQkJkUVFGMmFoQ2hFUXNMSEFBZ0FCRC9FQ0lBUlFSQVFRQVBDeUFCSUFBb0FnQTJBZ0JCQVFzUEFDQUFLQUlBSUFGQkFuUVFsQUlMVUFFQmZ5QUFFTVVFSUFBUU95QUFLQUlBSUFBb0FnUWdBVUVFYWlJQ0VNOEtJQUFnQWhBdUlBQkJCR29nQVVFSWFoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVCWVFyUVVMU3dFQ2Z5QUFLQUlFSWdaQkNIVWhCeUFBS0FJQUlnQWdBU0FDSUFaQkFYRUVmeUFES0FJQUlBZHFLQUlBQlNBSEN5QURhaUFFUVFJZ0JrRUNjUnNnQlNBQUtBSUFLQUlVRVFJQUN5QUFBa0FnQUNnQ0JDQUJSdzBBSUFBb0FoeEJBVVlOQUNBQUlBSTJBaHdMQzZJQkFDQUFRUUU2QURVQ1FDQUFLQUlFSUFKSERRQWdBRUVCT2dBMElBQW9BaEFpQWtVRVFDQUFRUUUyQWlRZ0FDQUROZ0lZSUFBZ0FUWUNFQ0FEUVFGSERRRWdBQ2dDTUVFQlJ3MEJJQUJCQVRvQU5nOExJQUVnQWtZRVFDQUFLQUlZSWdKQkFrWUVRQ0FBSUFNMkFoZ2dBeUVDQ3lBQUtBSXdRUUZISUFKQkFVZHlEUUVnQUVFQk9nQTJEd3NnQUVFQk9nQTJJQUFnQUNnQ0pFRUJhallDSkFzTFhRRUJmeUFBS0FJUUlnTkZCRUFnQUVFQk5nSWtJQUFnQWpZQ0dDQUFJQUUyQWhBUEN3SkFJQUVnQTBZRVFDQUFLQUlZUVFKSERRRWdBQ0FDTmdJWUR3c2dBRUVCT2dBMklBQkJBallDR0NBQUlBQW9BaVJCQVdvMkFpUUxDdzRBSUFBUVRpSUFJQUFRWFJCTkN5Y0JBWDhqQUVFUWF5SUNKQUFnQWhEcUJ5QUFJQUlnQVJDYUVTQUNFQ0FhSUFKQkVHb2tBQXV2QVFFRGZ5TUFRUkJySWdVa0FFRnZJQUZySUFKUEJFQWdBQkFUSVFZZ0FBSi9RZWYvLy84SElBRkxCRUFnQlNBQlFRRjBOZ0lJSUFVZ0FTQUNhallDRENBRlFReHFJQVZCQ0dvUVVpZ0NBQkRrQWd3QkMwRnVDMEVCYWlJSEVJRUVJUUlnQkFSQUlBSWdCaUFFRU9nQkN5QURJQVJySWdNRVFDQUNJQVJxSUFRZ0Jtb2dBeERvQVFzZ0FVRUtSd1JBSUFZUUtnc2dBQ0FDRU9FQklBQWdCeERwQVNBRlFSQnFKQUFQQ3hCdUFBdG5BUUovSXdCQkVHc2lCQ1FBQWtBZ0FCQmRJZ01nQWs4RVFDQUFFQk1pQXlBQklBSVFnUVlnQkVFQU9nQVBJQUlnQTJvZ0JFRVBhaENVQVNBQUlBSVFod01NQVFzZ0FDQURJQUlnQTJzZ0FCQWZJZ0JCQUNBQUlBSWdBUkRiQ2dzZ0JFRVFhaVFBQ3hjQUlBQW9BZ2dRZjBjRVFDQUFLQUlJRUxZTEN5QUFDem9CQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lNSUFOQkNHb2dBMEVNYWhEMUFpRUNJQUFnQVJDb0JDRUFJQUlROUFJZ0EwRVFhaVFBSUFBTEN3QWdCQ0FDTmdJQVFRTUxFQUFnQUJDWUFTQUFRY0RERWpZQ0FBc2lBQ01BUVJCcklnTWtBQ0FBRURzZ0FTQUNJQUJCQkdvUWx3c2dBMEVRYWlRQUN6SUFJQUlvQWdBaEFnTkFBa0FnQUNBQlJ3Ui9JQUFvQWdBZ0FrY05BU0FBQlNBQkN3OExJQUJCQkdvaEFBd0FBQXNBQzRFRUFRRi9Jd0JCRUdzaURDUUFJQXdnQURZQ0RBSkFBa0FnQUNBRlJnUkFJQUV0QUFCRkRRRkJBQ0VBSUFGQkFEb0FBQ0FFSUFRb0FnQWlBVUVCYWpZQ0FDQUJRUzQ2QUFBZ0J4QWZSUTBDSUFrb0FnQWlBU0FJYTBHZkFVb05BaUFLS0FJQUlRSWdDU0FCUVFScU5nSUFJQUVnQWpZQ0FBd0NDd0pBSUFBZ0JrY05BQ0FIRUI5RkRRQWdBUzBBQUVVTkFVRUFJUUFnQ1NnQ0FDSUJJQWhyUVo4QlNnMENJQW9vQWdBaEFDQUpJQUZCQkdvMkFnQWdBU0FBTmdJQVFRQWhBQ0FLUVFBMkFnQU1BZ3RCZnlFQUlBc2dDMEdBQVdvZ0RFRU1haER6QnlBTGF5SUZRZndBU2cwQklBVkJBblZCd0xrU2FpMEFBQ0VHQWtBZ0JVR29mMnBCSG5jaUFFRURUUVJBQWtBQ1FDQUFRUUpyRGdJQUFBRUxJQU1nQkNnQ0FDSUJSd1JBUVg4aEFDQUJRWDlxTFFBQVFkOEFjU0FDTFFBQVFmOEFjVWNOQlFzZ0JDQUJRUUZxTmdJQUlBRWdCam9BQUVFQUlRQU1CQXNnQWtIUUFEb0FBQXdCQ3lBQ0xBQUFJZ0FnQmtIZkFIRkhEUUFnQWlBQVFZQUJjam9BQUNBQkxRQUFSUTBBSUFGQkFEb0FBQ0FIRUI5RkRRQWdDU2dDQUNJQUlBaHJRWjhCU2cwQUlBb29BZ0FoQVNBSklBQkJCR28yQWdBZ0FDQUJOZ0lBQ3lBRUlBUW9BZ0FpQUVFQmFqWUNBQ0FBSUFZNkFBQkJBQ0VBSUFWQjFBQktEUUVnQ2lBS0tBSUFRUUZxTmdJQURBRUxRWDhoQUFzZ0RFRVFhaVFBSUFBTFhBRUJmeU1BUVJCcklnVWtBQ0FGUVFocUlBRVFYQ0FGUVFocUVJa0NRY0M1RWtIZ3VSSWdBaEMvQXlBRElBVkJDR29RNkFRaUFSRFNBallDQUNBRUlBRVFpQUkyQWdBZ0FDQUJFSWNDSUFWQkNHb1FXU0FGUVJCcUpBQUxNZ0FnQWkwQUFDRUNBMEFDUUNBQUlBRkhCSDhnQUMwQUFDQUNSdzBCSUFBRklBRUxEd3NnQUVFQmFpRUFEQUFBQ3dBTGtRUUJBWDhqQUVFUWF5SU1KQUFnRENBQU9nQVBBa0FDUUNBQUlBVkdCRUFnQVMwQUFFVU5BVUVBSVFBZ0FVRUFPZ0FBSUFRZ0JDZ0NBQ0lCUVFGcU5nSUFJQUZCTGpvQUFDQUhFQjlGRFFJZ0NTZ0NBQ0lCSUFoclFaOEJTZzBDSUFvb0FnQWhBaUFKSUFGQkJHbzJBZ0FnQVNBQ05nSUFEQUlMQWtBZ0FDQUdSdzBBSUFjUUgwVU5BQ0FCTFFBQVJRMEJRUUFoQUNBSktBSUFJZ0VnQ0d0Qm53RktEUUlnQ2lnQ0FDRUFJQWtnQVVFRWFqWUNBQ0FCSUFBMkFnQkJBQ0VBSUFwQkFEWUNBQXdDQzBGL0lRQWdDeUFMUVNCcUlBeEJEMm9ROWdjZ0Myc2lCa0VmU2cwQklBWkJ3TGtTYWkwQUFDRUZJQVpCYW1vaUFFRURUUVJBQWtBQ1FDQUFRUUpyRGdJQUFBRUxJQU1nQkNnQ0FDSUJSd1JBUVg4aEFDQUJRWDlxTFFBQVFkOEFjU0FDTFFBQVFmOEFjVWNOQkFzZ0JDQUJRUUZxTmdJQUlBRWdCVG9BQUVFQUlRQU1Bd3NnQWtIUUFEb0FBQ0FFSUFRb0FnQWlBRUVCYWpZQ0FDQUFJQVU2QUFCQkFDRUFEQUlMQWtBZ0Fpd0FBQ0lBSUFWQjN3QnhSdzBBSUFJZ0FFR0FBWEk2QUFBZ0FTMEFBRVVOQUNBQlFRQTZBQUFnQnhBZlJRMEFJQWtvQWdBaUFDQUlhMEdmQVVvTkFDQUtLQUlBSVFFZ0NTQUFRUVJxTmdJQUlBQWdBVFlDQUFzZ0JDQUVLQUlBSWdCQkFXbzJBZ0FnQUNBRk9nQUFRUUFoQUNBR1FSVktEUUVnQ2lBS0tBSUFRUUZxTmdJQURBRUxRWDhoQUFzZ0RFRVFhaVFBSUFBTFhBRUJmeU1BUVJCcklnVWtBQ0FGUVFocUlBRVFYQ0FGUVFocUVQb0JRY0M1RWtIZ3VSSWdBaER1QXlBRElBVkJDR29RNmdRaUFSRFNBam9BQUNBRUlBRVFpQUk2QUFBZ0FDQUJFSWNDSUFWQkNHb1FXU0FGUVJCcUpBQUxud0VDQVg4RGZpTUFRYUFCYXlJRUpBQWdCRUVRYWtFQVFaQUJFTjBCR2lBRVFYODJBbHdnQkNBQk5nSThJQVJCZnpZQ0dDQUVJQUUyQWhRZ0JFRVFha0lBRU5zQ0lBUWdCRUVRYWlBRFFRRVF3QXNnQkNrRENDRUZJQVFwQXdBaEJpQUNCRUFnQWlBQklBRWdCQ2tEaUFFZ0JDZ0NGQ0FFS0FJWWE2eDhJZ2VuYWlBSFVCczJBZ0FMSUFBZ0JqY0RBQ0FBSUFVM0F3Z2dCRUdnQVdva0FBc05BQ0FBSUFFZ0FrSi9FSVVJQzA0QkFYOENRQ0FBUWN3QWFpQUJRY3dBYWhDd0MwVU5BQ0FCS0FJRUlBQW9BZ1J6UVlEKy93QnhEUUFnQUJDRkFTQUJFSVVCUncwQUlBQWdBUkNZRTBVTkFDQUFJQUVRbFJNaEFnc2dBZ3RGQVFGL0l3QkJFR3NpQlNRQUlBVWdBU0FDSUFNZ0JFS0FnSUNBZ0lDQWdJQi9oUkNjQWlBRktRTUFJUUVnQUNBRktRTUlOd01JSUFBZ0FUY0RBQ0FGUVJCcUpBQUxPUUVCZnlNQVFSQnJJZ0VrQUNBQVFnQTNBZ0FnQVVFQU5nSU1JQUJCQ0dvaUFDQUJRUXhxRUpVRElBQkJCR29ReHdZZ0FVRVFhaVFBQ3cwQUlBQkJCR29RN0FRYUlBQUxEUUFnQUVFSWFoRHNCQm9nQUFzVUFDQUFRYmlURWpZQ0FDQUFRUVJxRUZrZ0FBczNBQ0FBUWRpVUVqWUNBQ0FBUVFBUTF3c2dBRUVjYWhCWklBQW9BaUFRS2lBQUtBSWtFQ29nQUNnQ01CQXFJQUFvQWp3UUtpQUFDNFFFQXdGL0FYNERmQUpBSUFDOUlnSkNJSWluUWYvLy8vOEhjU0lCUVlDQXdLQUVUd1JBSUFKQy8vLy8vLy8vLy8vL0FJTkNnSUNBZ0lDQWdQai9BRllOQVVRWUxVUlUreUg1djBRWUxVUlUreUg1UHlBQ1FnQlRHdzhMQW44Z0FVSC8vKy8rQTAwRVFFRi9JQUZCZ0lDQThnTlBEUUVhREFJTElBQ1pJUUFnQVVILy84di9BMDBFUUNBQlFmLy9sLzhEVFFSQUlBQWdBS0JFQUFBQUFBQUE4TCtnSUFCRUFBQUFBQUFBQUVDZ295RUFRUUFNQWdzZ0FFUUFBQUFBQUFEd3Y2QWdBRVFBQUFBQUFBRHdQNkNqSVFCQkFRd0JDeUFCUWYvL2pZQUVUUVJBSUFCRUFBQUFBQUFBK0wrZ0lBQkVBQUFBQUFBQStEK2lSQUFBQUFBQUFQQS9vS01oQUVFQ0RBRUxSQUFBQUFBQUFQQy9JQUNqSVFCQkF3c2hBU0FBSUFDaUlnUWdCS0lpQXlBRElBTWdBeUFEUkM5c2FpeEV0S0svb2tTYS9kNVNMZDZ0djZDaVJHMmFkSy95c0xPL29LSkVjUllqL3NaeHZMK2dva1RFNjVpWm1abkp2NkNpSVFVZ0JDQURJQU1nQXlBRElBTkVFZG9pNHpxdGtEK2lST3NOZGlSTGU2ay9vS0pFVVQzUW9HWU5zVCtnb2tSdUlFekZ6VVczUDZDaVJQK0RBSklrU2NJL29LSkVEVlZWVlZWVjFUK2dvaUVESUFGQmYwd0VRQ0FBSUFBZ0JTQURvS0toRHdzZ0FVRURkQ0lCUWZDT0Vtb3JBd0FnQUNBRklBT2dvaUFCUVpDUEVtb3JBd0NoSUFDaG9TSUFtaUFBSUFKQ0FGTWJJUUFMSUFBTHdBa0RCSDhCZmdSOEl3QkJNR3NpQkNRQUFrQUNRQUpBSUFDOUlnWkNJSWluSWdKQi8vLy8vd2R4SWdOQit0UzlnQVJOQkVBZ0FrSC8vejl4UWZ2REpFWU5BU0FEUWZ5eWk0QUVUUVJBSUFaQ0FGa0VRQ0FCSUFCRUFBQkFWUHNoK2IrZ0lnQkVNV05pR21HMDBMMmdJZ2M1QXdBZ0FTQUFJQWVoUkRGallocGh0TkM5b0RrRENFRUJJUUlNQlFzZ0FTQUFSQUFBUUZUN0lmay9vQ0lBUkRGallocGh0TkE5b0NJSE9RTUFJQUVnQUNBSG9VUXhZMklhWWJUUVBhQTVBd2hCZnlFQ0RBUUxJQVpDQUZrRVFDQUJJQUJFQUFCQVZQc2hDY0NnSWdCRU1XTmlHbUcwNEwyZ0lnYzVBd0FnQVNBQUlBZWhSREZqWWhwaHRPQzlvRGtEQ0VFQ0lRSU1CQXNnQVNBQVJBQUFRRlQ3SVFsQW9DSUFSREZqWWhwaHRPQTlvQ0lIT1FNQUlBRWdBQ0FIb1VReFkySWFZYlRnUGFBNUF3aEJmaUVDREFNTElBTkJ1NHp4Z0FSTkJFQWdBMEc4KzllQUJFMEVRQ0FEUWZ5eXk0QUVSZzBDSUFaQ0FGa0VRQ0FCSUFCRUFBQXdmM3paRXNDZ0lnQkV5cFNUcDVFTzZiMmdJZ2M1QXdBZ0FTQUFJQWVoUk1xVWs2ZVJEdW05b0RrRENFRURJUUlNQlFzZ0FTQUFSQUFBTUg5ODJSSkFvQ0lBUk1xVWs2ZVJEdWs5b0NJSE9RTUFJQUVnQUNBSG9VVEtsSk9ua1E3cFBhQTVBd2hCZlNFQ0RBUUxJQU5CKzhQa2dBUkdEUUVnQmtJQVdRUkFJQUVnQUVRQUFFQlUreUVad0tBaUFFUXhZMklhWWJUd3ZhQWlCemtEQUNBQklBQWdCNkZFTVdOaUdtRzA4TDJnT1FNSVFRUWhBZ3dFQ3lBQklBQkVBQUJBVlBzaEdVQ2dJZ0JFTVdOaUdtRzA4RDJnSWdjNUF3QWdBU0FBSUFlaFJERmpZaHBodFBBOW9Ea0RDRUY4SVFJTUF3c2dBMEg2dytTSkJFc05BUXNnQVNBQUlBQkVnOGpKYlRCZjVEK2lSQUFBQUFBQUFEaERvRVFBQUFBQUFBQTR3NkFpQ0VRQUFFQlUreUg1djZLZ0lnY2dDRVF4WTJJYVliVFFQYUlpQ3FFaUFEa0RBQ0FEUVJSMklnVWdBTDFDTklpblFmOFBjV3RCRVVnaEF3Si9JQWlaUkFBQUFBQUFBT0JCWXdSQUlBaXFEQUVMUVlDQWdJQjRDeUVDQWtBZ0F3MEFJQUVnQnlBSVJBQUFZQnBodE5BOW9pSUFvU0lKSUFoRWMzQURMb29ab3p1aUlBY2dDYUVnQUtHaElncWhJZ0E1QXdBZ0JTQUF2VUkwaUtkQi93OXhhMEV5U0FSQUlBa2hCd3dCQ3lBQklBa2dDRVFBQUFBdWlobWpPNklpQUtFaUJ5QUlSTUZKSUNXYWczczVvaUFKSUFlaElBQ2hvU0lLb1NJQU9RTUFDeUFCSUFjZ0FLRWdDcUU1QXdnTUFRc2dBMEdBZ01EL0IwOEVRQ0FCSUFBZ0FLRWlBRGtEQUNBQklBQTVBd2hCQUNFQ0RBRUxJQVpDLy8vLy8vLy8vd2VEUW9DQWdJQ0FnSUN3d1FDRXZ5RUFRUUFoQWdOQUlBUkJFR29nQWlJRlFRTjBhZ0ovSUFDWlJBQUFBQUFBQU9CQll3UkFJQUNxREFFTFFZQ0FnSUI0QzdjaUJ6a0RBQ0FBSUFlaFJBQUFBQUFBQUhCQm9pRUFRUUVoQWlBRlJRMEFDeUFFSUFBNUF5QUNRQ0FBUkFBQUFBQUFBQUFBWWdSQVFRSWhBZ3dCQzBFQklRVURRQ0FGSWdKQmYyb2hCU0FFUVJCcUlBSkJBM1JxS3dNQVJBQUFBQUFBQUFBQVlRMEFDd3NnQkVFUWFpQUVJQU5CRkhaQjZuZHFJQUpCQVdvUTB4TWhBaUFFS3dNQUlRQWdCa0ovVndSQUlBRWdBSm81QXdBZ0FTQUVLd01JbWprRENFRUFJQUpySVFJTUFRc2dBU0FBT1FNQUlBRWdCQ2tEQ0RjRENBc2dCRUV3YWlRQUlBSUxRd0VEZndKQUlBSkZEUUFEUUNBQUxRQUFJZ1FnQVMwQUFDSUZSZ1JBSUFGQkFXb2hBU0FBUVFGcUlRQWdBa0YvYWlJQ0RRRU1BZ3NMSUFRZ0JXc2hBd3NnQXd0OEFRRi9Jd0JCa0FGcklnUWtBQ0FFSUFBMkFpd2dCQ0FBTmdJRUlBUkJBRFlDQUNBRVFYODJBa3dnQkVGL0lBQkIvLy8vL3dkcUlBQkJBRWdiTmdJSUlBUkNBQkRiQWlBRUlBSkJBU0FERU9JTElRTWdBUVJBSUFFZ0FDQUVLQUlFSUFRb0FuaHFJQVFvQWdocmFqWUNBQXNnQkVHUUFXb2tBQ0FEQzdjQkFRUi9Ba0FnQWlnQ0VDSURCSDhnQXdVZ0FoRGpDdzBCSUFJb0FoQUxJQUlvQWhRaUJXc2dBVWtFUUNBQ0lBQWdBU0FDS0FJa0VRY0FEd3NDUUNBQ0xBQkxRUUJJRFFBZ0FTRUVBMEFnQkNJRFJRMEJJQUFnQTBGL2FpSUVhaTBBQUVFS1J3MEFDeUFDSUFBZ0F5QUNLQUlrRVFjQUlnUWdBMGtOQVNBQklBTnJJUUVnQUNBRGFpRUFJQUlvQWhRaEJTQURJUVlMSUFVZ0FDQUJFRDBhSUFJZ0FpZ0NGQ0FCYWpZQ0ZDQUJJQVpxSVFRTElBUUxnd0VCQTM4akFFRVFheUlDSkFBZ0FpQUJPZ0FQQWtBZ0FDZ0NFQ0lEUlFSQUlBQVE0d3NOQVNBQUtBSVFJUU1MQWtBZ0FDZ0NGQ0lFSUFOUERRQWdBQ3dBU3lBQlFmOEJjVVlOQUNBQUlBUkJBV28yQWhRZ0JDQUJPZ0FBREFFTElBQWdBa0VQYWtFQklBQW9BaVFSQndCQkFVY05BQ0FDTFFBUEdnc2dBa0VRYWlRQUM4d1JBZzkvQVg0akFFSFFBR3NpQnlRQUlBY2dBVFlDVENBSFFUZHFJUlVnQjBFNGFpRVNRUUFoQVFKQUEwQUNRQ0FQUVFCSURRQWdBVUgvLy8vL0J5QVBhMG9FUUVIWXdCUkJQVFlDQUVGL0lROE1BUXNnQVNBUGFpRVBDeUFIS0FKTUlnc2hBUUpBQWtBQ1FBSi9Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ3kwQUFDSUpCRUFEUUFKQUFrQUNRQ0FKUWY4QmNTSUlSUVJBSUFFaENRd0JDeUFJUVNWSERRRWdBU0VKQTBBZ0FTMEFBVUVsUncwQklBY2dBVUVDYWlJSU5nSk1JQWxCQVdvaENTQUJMUUFDSVF3Z0NDRUJJQXhCSlVZTkFBc0xJQWtnQzJzaEFTQUFCRUFnQUNBTElBRVE0Z0VMSUFFTkVpQUhLQUpNTEFBQkVNMENJUWhCZnlFUlFRRWhDU0FIS0FKTUlRRUNRQ0FJUlEwQUlBRXRBQUpCSkVjTkFDQUJMQUFCUVZCcUlSRkJBU0VUUVFNaENRc2dCeUFCSUFscUlnRTJBa3hCQUNFSkFrQWdBU3dBQUNJUVFXQnFJZ3hCSDBzRVFDQUJJUWdNQVFzZ0FTRUlRUUVnREhRaURFR0owUVJ4UlEwQUEwQWdCeUFCUVFGcUlnZzJBa3dnQ1NBTWNpRUpJQUVzQUFFaUVFRmdhaUlNUVI5TERRRWdDQ0VCUVFFZ0RIUWlERUdKMFFSeERRQUxDd0pBSUJCQktrWUVRQ0FIQW44Q1FDQUlMQUFCRU0wQ1JRMEFJQWNvQWt3aUFTMEFBa0VrUncwQUlBRXNBQUZCQW5RZ0JHcEJ3SDVxUVFvMkFnQWdBU3dBQVVFRGRDQURha0dBZldvb0FnQWhEVUVCSVJNZ0FVRURhZ3dCQ3lBVERRZEJBQ0VUUVFBaERTQUFCRUFnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBU2dDQUNFTkN5QUhLQUpNUVFGcUN5SUJOZ0pNSUExQmYwb05BVUVBSUExcklRMGdDVUdBd0FCeUlRa01BUXNnQjBITUFHb1E1d3NpRFVFQVNBMEZJQWNvQWt3aEFRdEJmeUVLQWtBZ0FTMEFBRUV1UncwQUlBRXRBQUZCS2tZRVFBSkFJQUVzQUFJUXpRSkZEUUFnQnlnQ1RDSUJMUUFEUVNSSERRQWdBU3dBQWtFQ2RDQUVha0hBZm1wQkNqWUNBQ0FCTEFBQ1FRTjBJQU5xUVlCOWFpZ0NBQ0VLSUFjZ0FVRUVhaUlCTmdKTURBSUxJQk1OQmlBQUJIOGdBaUFDS0FJQUlnRkJCR28yQWdBZ0FTZ0NBQVZCQUFzaENpQUhJQWNvQWt4QkFtb2lBVFlDVEF3QkN5QUhJQUZCQVdvMkFrd2dCMEhNQUdvUTV3c2hDaUFIS0FKTUlRRUxRUUFoQ0FOQUlBZ2hGRUYvSVE0Z0FTd0FBRUcvZjJwQk9Vc05GQ0FISUFGQkFXb2lFRFlDVENBQkxBQUFJUWdnRUNFQklBZ2dGRUU2YkdwQjMvQVJhaTBBQUNJSVFYOXFRUWhKRFFBTElBaEZEUk1DUUFKQUFrQWdDRUVUUmdSQUlCRkJmMHdOQVF3WEN5QVJRUUJJRFFFZ0JDQVJRUUowYWlBSU5nSUFJQWNnQXlBUlFRTjBhaWtEQURjRFFBdEJBQ0VCSUFCRkRSUU1BUXNnQUVVTkVpQUhRVUJySUFnZ0FpQUdFT1lMSUFjb0Frd2hFQXNnQ1VILy8zdHhJZ3dnQ1NBSlFZREFBSEViSVFsQkFDRU9RWXp4RVNFUklCSWhDQ0FRUVg5cUxBQUFJZ0ZCWDNFZ0FTQUJRUTl4UVFOR0d5QUJJQlFiSWdGQnFIOXFJaEJCSUUwTkFRSkFBbjhDUUFKQUlBRkJ2MzlxSWd4QkJrc0VRQ0FCUWRNQVJ3MFZJQXBGRFFFZ0J5Z0NRQXdEQ3lBTVFRRnJEZ01VQVJRSkMwRUFJUUVnQUVFZ0lBMUJBQ0FKRUlzQ0RBSUxJQWRCQURZQ0RDQUhJQWNwQTBBK0FnZ2dCeUFIUVFocU5nSkFRWDhoQ2lBSFFRaHFDeUVJUVFBaEFRSkFBMEFnQ0NnQ0FDSUxSUTBCSUFkQkJHb2dDeERmQ3lJTFFRQklJZ3dnQ3lBS0lBRnJTM0pGQkVBZ0NFRUVhaUVJSUFvZ0FTQUxhaUlCU3cwQkRBSUxDMEYvSVE0Z0RBMFZDeUFBUVNBZ0RTQUJJQWtRaXdJZ0FVVUVRRUVBSVFFTUFRdEJBQ0VNSUFjb0FrQWhDQU5BSUFnb0FnQWlDMFVOQVNBSFFRUnFJQXNRM3dzaUN5QU1haUlNSUFGS0RRRWdBQ0FIUVFScUlBc1E0Z0VnQ0VFRWFpRUlJQXdnQVVrTkFBc0xJQUJCSUNBTklBRWdDVUdBd0FCekVJc0NJQTBnQVNBTklBRktHeUVCREJJTElBY2dBVUVCYWlJSU5nSk1JQUV0QUFFaENTQUlJUUVNQVFzTElCQkJBV3NPSHcwTkRRME5EUTBOQWcwRUJRSUNBZzBGRFEwTkRRa0dCdzBOQXcwS0RRMElDeUFQSVE0Z0FBMFBJQk5GRFExQkFTRUJBMEFnQkNBQlFRSjBhaWdDQUNJQUJFQWdBeUFCUVFOMGFpQUFJQUlnQmhEbUMwRUJJUTRnQVVFQmFpSUJRUXBIRFFFTUVRc0xRUUVoRGlBQlFRcFBEUThEUUNBRUlBRkJBblJxS0FJQURRRWdBVUVJU3lFQUlBRkJBV29oQVNBQVJRMEFDd3dQQzBGL0lRNE1EZ3NnQUNBSEt3TkFJQTBnQ2lBSklBRWdCUkVuQUNFQkRBd0xJQWNvQWtBaUFVR1c4UkVnQVJzaUMwRUFJQW9RelFZaUFTQUtJQXRxSUFFYklRZ2dEQ0VKSUFFZ0Myc2dDaUFCR3lFS0RBa0xJQWNnQnlrRFFEd0FOMEVCSVFvZ0ZTRUxJQXdoQ1F3SUN5QUhLUU5BSWhaQ2YxY0VRQ0FIUWdBZ0ZuMGlGamNEUUVFQklRNUJqUEVSREFZTElBbEJnQkJ4QkVCQkFTRU9RWTN4RVF3R0MwR084UkZCalBFUklBbEJBWEVpRGhzTUJRc2dCeWtEUUNBU0VPUVRJUXNnQ1VFSWNVVU5CU0FLSUJJZ0Myc2lBVUVCYWlBS0lBRktHeUVLREFVTElBcEJDQ0FLUVFoTEd5RUtJQWxCQ0hJaENVSDRBQ0VCQ3lBSEtRTkFJQklnQVVFZ2NSRGpFeUVMSUFsQkNIRkZEUU1nQnlrRFFGQU5BeUFCUVFSMlFZenhFV29oRVVFQ0lRNE1Bd3RCQUNFQklCUkIvd0Z4SWdoQkIwc05CUUpBQWtBQ1FBSkFBa0FDUUFKQUlBaEJBV3NPQndFQ0F3UU1CUVlBQ3lBSEtBSkFJQTgyQWdBTUN3c2dCeWdDUUNBUE5nSUFEQW9MSUFjb0FrQWdENnczQXdBTUNRc2dCeWdDUUNBUE93RUFEQWdMSUFjb0FrQWdEem9BQUF3SEN5QUhLQUpBSUE4MkFnQU1CZ3NnQnlnQ1FDQVByRGNEQUF3RkN5QUhLUU5BSVJaQmpQRVJDeUVSSUJZZ0VoRHVCQ0VMQ3lBSlFmLy9lM0VnQ1NBS1FYOUtHeUVKQW44Z0NpQUhLUU5BSWhaUVJYSkZCRUFnRWlFTFFRQU1BUXNnQ2lBV1VDQVNJQXRyYWlJQklBb2dBVW9iQ3lFS0N5QUFRU0FnRGlBSUlBdHJJZ3dnQ2lBS0lBeElHeUlRYWlJSUlBMGdEU0FJU0JzaUFTQUlJQWtRaXdJZ0FDQVJJQTRRNGdFZ0FFRXdJQUVnQ0NBSlFZQ0FCSE1RaXdJZ0FFRXdJQkFnREVFQUVJc0NJQUFnQ3lBTUVPSUJJQUJCSUNBQklBZ2dDVUdBd0FCekVJc0NEQUVMQzBFQUlRNExJQWRCMEFCcUpBQWdEZ3NrQUNBQkJFQWdBQ0FCS0FJQUVJa0lJQUFnQVNnQ0JCQ0pDQ0FBRUNVYUlBRVFLZ3NMSkFBZ0FRUkFJQUFnQVNnQ0FCQ0tDQ0FBSUFFb0FnUVFpZ2dnQUJBbEdpQUJFQ29MQzJ3QkEzOGdBRUVCRU5FR0lBQVEwQVloQlNBQUlBQkJxQUZxSWdZUUZnUi9JQUFnQUNBQUlBVkJBRUgvLy8vL0IwRUFFUElFSWdjUVlpQUhJQUVnQmhDeUZBVWdBUXNnQlNBQUlBVVF0Z1JCNVNsR0JIOGdBa0VDRUVnRklBSUxJQU5CQUNBRWF5QUVjUkRQQWdzMkFRRi9JQUFRWGlFQklBQW9BZ1FnQUNnQ0VDQUJLQUlBYWtGL2FpSUFRUVoyUWZ6Ly94OXhhaWdDQUNBQVFmOEJjVUVFZEdvTEdBQWdBQ0FBUWZBQ2FoQ1ZCU2dDQUJEY0FpQUFFTmtGQzRjQkFRUi9JQUFvQWdBZ0FDZ0NIQkRjQWlBQUtBSUFJQUFvQWhBUTVRRWdBQ2dDQUNBQUtBSWNJQUFvQWdnUWlBd2dBQ2dDRkNFQklBQW9BZ1FoQWlBQUtBSUFJUU1DUUNBQUtBSVlJZ1FFUUNBRElBSWdBU0FFRU5JR0RBRUxJQU1nQWlBQklBQW9BaHdRMGdZTElBQW9BZ3dnQUNnQ0hCRHpBeUFBS0FJQUlBQW9BaHdRNVFFTGtBRUFJQUJCQURZQ0dDQUFJQUkyQWdnZ0FDQUJOZ0lFSUFBZ0F6WUNBQ0FBSUFNb0FvUUJLQUkwTmdJTVFUd1FKaUlCSUFBb0FnQVFWU0FBS0FJTUVQUURHaUFBSUFFMkFoUkJQQkFtSWdFZ0FDZ0NBQkJWSUFBb0Fnd1E5QU1hSUFBZ0FUWUNIQ0FBSUFBb0FnQW9Bb1FCTmdJUUlBQW9BZ3dnQUNnQ0ZCRHpBeUFBS0FJQUlBQW9BaFFRNVFFZ0FBdFdBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQUpBSUFBb0FnQW9BZ0JCQWs4RVFDQUFLQUlFSUFKQkRHb1FSd3dCQ3lBQUtBSUlJQUUyQWdBTElBQW9BZ3dpQUNBQUtBSUFRUUZxTmdJQUlBSkJFR29rQUF1RkJBRUVmeU1BUWZBQWF5SUVKQUFnQkNBQk5nSnNJQVJCQURZQ2FDQUVJQUFnQXhESUF5SUdOZ0prSUFSQkFEWUNZQUpBQWtBZ0FoQVdRUUZIRFFBZ0FDQUNRUUFRRVNnQ0FCRDRCRVVnQmtFQ1NYSU5BQ0FBSUFFZ0FrRUFFQkVvQWdBZ0F4RHhCQ0VGREFFTElBUkIwQUJxRURBaEFTQUVJQUFnQXhDN0FqWUNUQ0FFSUFFMkFqd2dCQ0FFUWVBQWFqWUNSQ0FFSUFSQjZBQnFOZ0pBSUFRZ0JFSGtBR28yQWpnZ0JDQUFOZ0lnSUFRZ0JFSE1BR28yQWpRZ0JDQUVRZXdBYWpZQ01DQUVJQVJCT0dvMkFpd2dCQ0FFUWVRQWFqWUNLQ0FFSUFSQjRBQnFOZ0lrSUFRZ0FEWUNDQ0FFSUFSQnpBQnFOZ0lZSUFRZ0JFRTRhallDRkNBRUlBUkI1QUJxTmdJUUlBUWdCRUhnQUdvMkFnd0NRQ0FDRUJaRkRRQURRQUpBQWtBZ0FDQUNJQVVRRVNnQ0FCRDRCRVVFUUNBQUlBSWdCUkFSS0FJQUVPRU1SUTBCQ3lBRVFUaHFJQUlnQlJBUktBSUFFSkFJREFFTElBQWdBaUFGRUJFb0FnQVFyd1FoQnlBQ0lBVVFFU2dDQUNFR0lBY0VRQ0FFUVNCcUlBWVFzQlFNQVFzZ0FDQUdFS0lEUlEwQUlBUkJDR29nQWlBRkVCRW9BZ0FRcnhRTElBUW9BbUFnQkNnQ1pFOE5BU0FGUVFGcUlnVWdBaEFXU1EwQUN3c0NRQ0FCRUJaRkJFQWdCQ2dDYUNFRkRBRUxJQVFnQUNBRElBRVFuUU1pQlRZQ2FBc2dBQ0FGSUFRb0Ftd1FoZ0VoQlNBQkVEWUxJQVJCOEFCcUpBQWdCUXQ2QVFGL0l3QkJFR3NpQlNRQVFTd1FKaUFBRUZVZ0FVRU1FRkVpQVNBQ0VEa2dBU0FERUV4QkFDRURJQVFRRmtFQVNnUkFBMEFnQVNBRUlBTVFFU2dDQUJBNUlBTkJBV29pQXlBRUVCWklEUUFMQ3lBQUtBS0VBU0FGUVFocUlBRVFPaUlBRUh3Z0FCQStJQUVvQWdRaEFDQUZRUkJxSkFBZ0FBc2NBQ0FBRUxRRklBRUVRQ0FBSUFFUS9BUWdBQ0FCRUt3SUN5QUFDeGNBSUFCQkJHb1FrQUVvQWdBb0FneEJoMzVxUVFkSkN4VUFJQUVnQUhRZ0FVRUFJQUJyZGlBQVFYOUtHd3NOQUNBQUtBSUFRZi8vL3dOeEN3a0FJQUFnQVRzQkFBc21BRUU4RUVZaUFDQUJJQUlnQXlBRUVNZ1VJUUVnQUNBRklBQW9BZ0FvQWdRUkFRQWdBUXVsQVFFRGZ5TUFRUkJySWdVa0FDQUZJQUUyQWd3Q2Z3SkFJQUJCdEFKcUlnY2dCVUVNYWhBL0VCWkJBVWdOQUVFQUlRQURRQUpBSUFVZ0FUWUNDQUpBSUFJZ0J5QUZRUWhxRUQ4Z0FCQVJLQUlBSWdZb0FneEhEUUFnQXlBR0tBSUlSdzBBSUFaQkFCQXZJQVJHRFFFTElBVWdBVFlDRENBQVFRRnFJZ0FnQnlBRlFReHFFRDhRRmtnTkFRd0NDd3NnQmlnQ0JBd0JDMEVBQ3lFQUlBVkJFR29rQUNBQUM3QUJBUVIvSXdCQkVHc2lBeVFBUVN3UUppSUZJQUFRVlVFQVFSNFFVU0VHSUFNZ0JUWUNEQ0FCRUJaQkFFb0VRQU5BSUFZZ0FTQUVFQkVvQWdBUU9TQUVRUUZxSWdRZ0FSQVdTQTBBQ3dzZ0EwRWVOZ0lJSUFCQjNBSnFJQU5CQ0dvUVB5QURRUXhxRUVjZ0FFR1FBbW9nQXlBREtBSU1FRG9pQVJCOUlBRVFQaUFBUWVnQWFpQURLQUlNRUl3QklBQWdBeWdDRENnQ0JDQUNFTm9GSUFNb0Fnd29BZ1FoQUNBRFFSQnFKQUFnQUF1S0FnRUVmeU1BUVJCcklnTWtBQ0FEUVJVMkFnZ0NRQ0FBUWR3Q2FpSUZJQU5CQ0dvUVB4QVdRUUJLQkVBRFFDQURRUlUyQWdnZ0F5QUZJQU5CQ0dvUVB5QUVFQkVvQWdBaUJqWUNEQ0FHUVFBUUx5QUJSZ1JBSUFNb0FneEJBUkF2SUFKR0RRTUxJQU5CRlRZQ0NDQUVRUUZxSWdRZ0JTQURRUWhxRUQ4UUZrZ05BQXNMUVN3UUppSUdJQUFRVlVFQVFSVVFVU0VFSUFNZ0JqWUNEQ0FFSUFFUVRDQUVJQUlRVENBRFFSVTJBZ2dnQlNBRFFRaHFFRDhnQTBFTWFoQkhJQUJCa0FKcUlBTkJDR29nQXlnQ0RCQTZJZ0lRZlNBQ0VENGdBRUhvQUdvZ0F5Z0NEQkNNQVNBQlFjQUFSdzBBSUFCQkN4QWhDeUFES0FJTUtBSUVJUUFnQTBFUWFpUUFJQUFMdVFFQkEzOGpBRUVRYXlJQkpBQWdBVUVUTmdJTUFrQWdBRUhjQW1vaUFpQUJRUXhxRUQ4UUZrVUVRRUVzRUNZaUF5QUFFRlZCQUVFVEVGRWFJQUVnQXpZQ0RDQUJRUk0yQWdnZ0FpQUJRUWhxRUQ4Z0FVRU1haEJISUFCQmtBSnFJQUZCQ0dvZ0FTZ0NEQkE2SWdJUWZTQUNFRDRnQUVIb0FHb2dBU2dDREJDTUFTQUJLQUlNSVFBTUFRc2dBVUVUTmdJSUlBRWdBaUFCUVFocUVEOFFrQUVvQWdBaUFEWUNEQXNnQUNnQ0JDRUFJQUZCRUdva0FDQUFDeHNBSUFCQjZPMFJOZ0lBSUFCQkVHb1FOaUFBUVFScUVEWWdBQXZtQVFFQmZ5QUFRY0R0RVRZQ0FDQUFRYlFEYWlJQklBRVFQQkNLQ0NBQVFhQURhaERSQXlBQVFZZ0RhaERiRkNBQVFmQUNhaENURFNBQVFkd0NhaENjQmlBQVFjZ0NhaENjQmlBQVFiUUNhaENjQmlBQVFhZ0NhaEQ3QWlBQVFad0NhaEQ3QWlBQVFaQUNhaEQ3QWlBQVFZUUNhaEQ3QWlBQVFmZ0JhaEQ3QWlBQVFld0JhaEQ3QWlBQVFlQUJhaEQ3QWlBQVFkUUJhaEQ3QWlBQVFjZ0JhaEQ3QWlBQVFaUUJhaEM0QVNBQVFlZ0FhaENkQ0JvZ0FFSFlBR29pQVNBQkVEd1FpUWdnQUVIRUFHb1FOaUFBUVRocUVEWWdBRUVzYWhEeURTQUFRUlJxRUNBYUlBQUxUd0VCZnlNQVFlQUFheUlBSkFBZ0FFSFlBR3BCQVJEMUFTSUVRUUFRRHlBQkVHMGdCQ0FBUVFsQkFrRUJRUUJCQUVFQUVFVWlBU0FDSUFNUTBBSWhBaUFCRURVYUlBQkI0QUJxSkFBZ0Fnc2tBQ0FCQkVBZ0FDQUJLQUlBRUtBSUlBQWdBU2dDQkJDZ0NDQUFFQ1VhSUFFUUtnc0xKQUFnQVFSQUlBQWdBU2dDQUJDaENDQUFJQUVvQWdRUW9RZ2dBQkFsR2lBQkVDb0xDMTBCQVg4Z0FCQmVHaUFBRUY0aEFTQUFLQUlFSUFBb0FoQWdBU2dDQUdwQmYycEJDblpCL1AvL0FYRnFLQUlBR2lBQUVGNGlBU0FCS0FJQVFYOXFOZ0lBSUFBUW9neEJnTUFBVHdSQUlBQVEzQWdvQWdBUUtpQUFFTnNJQ3dzSkFDQUJJQUlROUJRTERRQWdBQ2dDQUNBQlFUUnNhZ3ZvQ0FFSGZ5TUFRVEJySWdja0FBSkFBa0FnQVVHK2ZXb2lCVUhIQUVzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRUUZyRGtjQkFRRUNBZ0lDQWdJQ0FnSUNBd01FQkFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRWUdCZ1lHQmdZSEJ3Y0hDUWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FBTElBQkJPR3BCUFJBaElBUVFnd01hSUFRUWtnUWFRZi8vLy84SElRaEJ6UUloQmd3SkN5QUFRVGhxSWdWQlBSQWhJQVZCUGhBaERBY0xJQUJCT0dvaUJVRTlFQ0VnQlVIQUFCQWhEQVlMSUFCQk9Hb2lCVUU5RUNFZ0JVSEJBQkFoREFVTElBQkJPR29pQlVFOUVDRWdCVUhDQUJBaERBUUxJQUJCT0dvaUJVRTlFQ0VnQlVFL0VDRU1Bd3NnQUVFNGFpSUZRVDBRSVNBRlFjTUFFQ0VNQWdzZ0FFRTRhaUlGUVQwUUlTQUZRY1FBRUNFTUFRc2dBRUU0YWlJRlFhSG5FUkJDSUFWQnNTa1FJUXNnQkJDREF5RUtJQVFRa2dRaENVSC8vLy8vQnlFSVFRQWhCUUpBSUFGQnZYMXFJZ3RCeGdCTERRQkJ6Z0loQmdKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0MwRUJhdzVHQUFFQ0F3UUZCZ2NIQndnSkNnc01EUTRQRUJFU0V4UU9EeEFSRWhNVURnOFFFUklURkE0UEVCRVNFeFFWRmhZV0Z3NFBFQkVTRXhRT0R4QVJFaE1VRGc4UUVSSVRGQmdMUWM4Q0lRWU1Gd3RCMEFJaEJnd1dDMEhSQWlFR0RCVUxRZElDSVFZTUZBdEIwd0loQmd3VEMwSFVBaUVHREJJTFFkVUNJUVlNRVF0QjFnSWhCUXdQQzBIWEFpRUdEQThMUWRnQ0lRWU1EZ3RCMlFJaEJnd05DMEhhQWlFR0RBd0xRZHNDSVFZTUN3dEIzQUloQmd3S0MwSGVBa0hkQWlBSkd5RUZEQWdMUWVBQ1FkOENJQWtiSVFVTUJ3dEI0d0pCNGdKQjRRSWdDaHNnQ1JzaEJRd0dDMEhtQWtIbEFrSGtBaUFLR3lBSkd5RUZEQVVMUWVvQ1FlY0NJQVJCREVZYklRVU1CQXRCNndKQjZBSWdCRUVNUmhzaEJRd0RDMEhzQWtIcEFpQUVRUXhHR3lFRkRBSUxRZTBDSVFZTUFndEI3Z0loQlFzQ1FDQUJRYlY5YWlJRVFUNUxEUUFnQlNFR0FrQUNRQUpBQWtBQ1FBSkFBa0FnQkVFQmF3NCtBUUlJQ0FnSUNBZ0FBQUFBQUFBQUFRRUJBUUVCQVFJQ0FnSUNBZ0lEQXdNREF3TURDQWdJQ0FnRUJBUUVCQVFFQlFVRkJRVUZCUVlHQmdZR0JnWUFDMEVBSVFnTUJndEJBU0VJREFVTFFRSWhDQXdFQzBFRElRZ01Bd3RCQmlFSURBSUxRUWNoQ0F3QkMwRUlJUWdMSUFVaEJnc2dCMEVnYWhBd0lnVWdCMEVZYWtFQklBQkJPR29pQkVFRFFRQVFkQkIxRUlRQklBaEIvLy8vL3dkSEJFQWdCU0FIUVJCcVFRQWdDQkIxRUlRQkN5QUhJQU1RUURZQ0NDQUhJQU1RTWpZQ0VDQUhRUWhxSUFkQkVHb1FIZ1JBQTBBZ0JTQUhRUkJxUVFFZ0J5Z0NDQ2dDQUJCMUVJUUJJQWRCQ0dvUVpob2dCeUFERURJMkFoQWdCMEVJYWlBSFFSQnFFQjROQUFzTEFrQWdBVUdQZldvaUFFRURUdzBBSUFRZ0FFRUFFSFFpQUVVTkFDQUZJQWRCRUdwQkFTQUFFSFVRaEFFTElBUWdCaUFDSUFVUXdnTWhBQ0FGRUs0RElBZEJNR29rQUNBQUN4QUFJQUJCNkFCcUlBRVFMMEVHRUM4TGVBRUNmeUFBS0FLTUJDMEFpQVFFUUFKL0FuOGdBUzBBQUNJRFFkOEFjUVJBUVFCQmdBSVFTRUdBQkJCSUlRSWdBUzBBQUNFREN5QURRU0J4Q3dSL0lBSkJnQWdRU0NFQ0lBRXRBQUFGSUFNTFFjQUFjUVJBSUFKQmdCQVFTQ0VDQ3lBQ1JRc0VRRUVBRHdzZ0FFRTRha0hoS1JBaEN5QUNDdzBBSUFBZ0FDQUJFR0lRcnd3TERnQWdBQ2dDYUVHNWUycEJGRWtMREFBZ0FDQUJFTjhDUVJoR0N4a0FJQUFnQVVjRVFDQUFJQUVvQWdBZ0FTZ0NCQkNhRlFzTE9nRUJmeU1BUVJCcklnSWtBQ0FBRUJzYUEwQWdBQ2dDQkJEWENpQUFJQUFvQWdSQkJHbzJBZ1FnQVVGL2FpSUJEUUFMSUFKQkVHb2tBQXRGQVFGL0l3QkJJR3NpQWlRQUlBSWdBUkRNQVRZQ0VCRG5BU0FDUVJocUlBQWdBU0FDUVJCcUlBSkJDR29RMEF3Z0FrRVlhaEJYSVFBZ0FrRWdhaVFBSUFCQkJHb0xDUUFnQUVFQU9nQUFDeUlBSXdCQkVHc2lBeVFBSUFBUUd5QUJJQUlnQUVFRWFoREREQ0FEUVJCcUpBQUxEUUFnQUMwQUNVRUVjVUVDZGd1d0FRRUJmeU1BUVJCcklnTWtBQUpBSUFJTkFDQUFMUUFKUVNCeFFRVjJCRUFnQTBFWE5nSU1JQUVnQTBFTWFoQkJDeUFBTFFBSlFjQUFjVUVHZGtVTkFDQURRUlUyQWd3Z0FTQURRUXhxRUVFZ0EwRVhOZ0lNSUFFZ0EwRU1haEJCQ3lBQUVMQUlCRUFnQTBFVE5nSU1JQUVnQTBFTWFoQkJDeUFBRUpZR0JFQWdBMEVZTmdJTUlBRWdBMEVNYWhCQkN5QUFFSm9FQkVBZ0EwRVpOZ0lNSUFFZ0EwRU1haEJCQ3lBRFFSQnFKQUFMcHc4QkFYOENRQUpBSUFGQmYyb2lBMEgyQUVzTkFFRUFJUUVDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzUyQ2dzTURnMG9LU0VpSXlRbEppY3FLeXd0TGk4d0FRSURCQllYR0dFQVlBOFFZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lCc1pGUkVmSFJ4Z0htQmdCd1VHWUdBSUdoSVRGQ0F4TWpNME5UWTNPVGc2T3p3OVBqOUFRVUpEUkVWTVJrZElTVXBMVFU1UFVGRlNVMVJWVmxkWVdWcGJYRjFlWHdrTFFRRWhBU0FDRFdBZ0FDZ0NqQVFvQWdCQmYyb2lBa0VDU3cxZ0lBSkJBbXRGQkVBZ0FFRTRha0VZRUNGQkFROExJQUJCT0dwQkZ4QWhRUUVQQzBFRkR3dEJCZzhMUVNvUEMwRXJEd3RCRHc4TFFSQVBDMEVSRHd0QkZnOExRUmdQQzBFWkR3dEJHZzhMUVJzUEMwRWREd3RCSEE4TFFRTWhBU0FDRFZFZ0FFRTRha0VnRUNGQkF3OExRUVFoQVNBQ0RWQWdBRUU0YWtFaEVDRkJCQThMSUFCQk9Hb2lBa0U1RUNFQ1FDQUFLQUtNQkNnQ0FFVU5BQ0FBS0FLTUJDZ0NBRUVCUmcwQVFRb2hBU0FBS0FLTUJDZ0NBRUVDUncxUUN5QUNRWi9kRVVHQWlnUVFzZ0VnQWtHR0tSQWhRUW9QQ3lBQVFUaHFRU01RSVVFU0R3c2dBRUU0YWtFakVDRkJFdzhMUVJRUEMwRUpJUUVnQUNnQ2pBUW9BZ0JCRFVZTlN5QUFRVGhxSWdKQkFoQWhBa0FnQUNnQ2pBUW9BZ0JGRFFBZ0FDZ0NqQVFvQWdCQkFVWU5BQ0FBS0FLTUJDZ0NBRUVDUncxTUN5QUNRWi9kRVVHQWlnUVFzZ0VnQWtHR0tSQWhRUWtQQ3lBQVFUaHFJZ0JCdzkwUlFZQ0dCQkN5QVNBQVFjc2lFQ0ZCeUNJUEN5QUFRVGhxSWdCQnc5MFJRWUNHQkJDeUFTQUFRY3NpRUNGQnlTSVBDeUFBUVRocUlnQkJ3OTBSUVlDR0JCQ3lBU0FBUWNzaUVDRkJ5aUlQQzBFSElRRWdBQ2dDakFRb0FnQkJCRWNOUnlBQVFUaHFRUUlRSVVFSER3c2dBRUU0YWlJQVFlTGRFUkJDSUFCQmxTY1FJVUdXSnc4TFFRZ1BDMEVNRHd0QkN3OExRUTBQQzBFT0R3dEJGdzhMSUFCQk9Hb2lBRUdBM2hFUVFpQUFRY2NpRUNGQkpBOExJQUJCT0dvaUFFR0EzaEVRUWlBQVFjY2lFQ0ZCS1E4TElBQkJPR29pQUVHQTNoRVFRaUFBUWNjaUVDRkJ3Q0lQQ3lBQVFUaHFJZ0JCZ040UkVFSWdBRUhISWhBaFFjRWlEd3NnQUVFNGFpSUFRWURlRVJCQ0lBQkJ4eUlRSVVIQ0lnOExJQUJCT0dvaUFFR0EzaEVRUWlBQVFjY2lFQ0ZCd3lJUEN5QUFRVGhxSWdCQmdONFJFRUlnQUVISEloQWhRY1FpRHdzZ0FFRTRha0U5RUNGQkpnOExJQUJCT0dwQlBSQWhRU2dQQ3lBQVFUaHFRVDBRSVVFa0R3c2dBRUU0YWtFOUVDRkJLUThMSUFCQk9Hb2lBRUU5RUNFZ0FFSEFBQkFoUWNBaUR3c2dBRUU0YWlJQVFUMFFJU0FBUWNBQUVDRkJ3U0lQQ3lBQVFUaHFJZ0JCUFJBaElBQkJ3QUFRSVVIQ0lnOExJQUJCT0dvaUFFRTlFQ0VnQUVIQUFCQWhRY01pRHdzZ0FFRTRhaUlBUVQwUUlTQUFRY0FBRUNGQnhDSVBDeUFBUVRocVFaYmVFUkJDUVlBbkR3c2dBRUU0YWtHVzNoRVFRa0dCSnc4TElBQkJPR3BCbHQ0UkVFSkJnaWNQQ3lBQVFUaHFRWmJlRVJCQ1FZTW5Ed3NnQUVFNGFrR1czaEVRUWtHRUp3OExJQUJCT0dwQmx0NFJFRUpCaFNjUEN5QUFRVGhxUVpiZUVSQkNRWVluRHdzZ0FFRTRhaUlBUWIvZUVVR0FoZ1FRc2dFZ0FFSFZJaEFoUWRZaUR3c2dBRUU0YWlJQVFkVGVFVUdBaGdRUXNnRWdBRUhYSWhBaFFkZ2lEd3NnQUVFNGFpSUFRZWJlRVJCQ0lBQkJxeWtRSVVHc0tROExJQUJCT0dvaUFFSG0zaEVRUWlBQVFhc3BFQ0ZCclNrUEMwR0ZLU0VCSUFJTkpDQUFRVGhxSWdCQmh0d1JFRUlnQUVHSEtSQWhRWVVwRHd0QmlTa2hBU0FDRFNNZ0FFRTRhaUlBUVozY0VSQkNJQUJCaXlrUUlVR0pLUThMUVlvcElRRWdBZzBpSUFCQk9Hb2lBRUdkM0JFUVFpQUFRWXNwRUNGQmlpa1BDMEdOS1NFQklBSU5JU0FBUVRocUlnQkJpdDhSRUVJZ0FFR01LUkFoUVkwcER3dEJqaWtoQVNBQ0RTQWdBRUU0YWlJQVFZcmZFUkJDSUFCQmpDa1FJVUdPS1E4TElBQkJPR29pQUVHdzN4RVFRaUFBUVpFcEVDRkJrQ2tQQ3lBQVFUaHFJZ0JCejk4UkVFSWdBRUdyS1JBaFFhd3BEd3NnQUVFNGFpSUFRYy9mRVJCQ0lBQkJxeWtRSVVHdEtROExRY2NwRHd0QnlDa1BDMEhKS1E4TFFjb3BEd3RCeXlrUEMwSE1LUThMUWMwcER3dEJ6aWtQQzBIUEtROExRZFFwRHd0QjFTa1BDMEhTS1E4TFFkTXBEd3RCNXlrUEN5QUFRVGhxSWdCQjNkd1JFRUlnQUVHa0tSQWhRYVlwRHdzZ0FFRTRhaUlBUWQzY0VSQkNJQUJCcENrUUlVR25LUThMUVpvcER3dEJteWtQQzBHY0tROExRWjBwRHd0Qm5pa1BDMEdmS1E4TFFhQXBEd3RCb1NrUEN5QUFRVGhxSWdCQjQ5OFJFRUlnQUVIOUtSQWhRZjRwRHdzZ0FFRTRhaUlBUWVQZkVSQkNJQUJCL1NrUUlVSC9LUThMSUFCQk9Hb2lBRUhqM3hFUVFpQUFRZjBwRUNGQmdDb1BDeUFBUVRocUlnQkI0OThSRUVJZ0FFSDlLUkFoUVlFcUR3dEIvLy8vL3djaEFRc2dBUXNjQUNBQUtBSUVJQUFvQWdBZ0FTZ0NBR3RCQTNScUlBRW9BZ1JyQzRvTUFRSi9RYklFSVFBQ1FDQUJJQUVvQWdBb0Fpd1JBQUFRNGdJTkFFRzBCQ0VBSUFFUWhRRU5BRUVBSVFBZ0FTQUJLQUlBS0FJY0VRQUFRWDlxSWdKQkVVc05BQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUNRUUZyRGhFRkJpQWhJaU1DQXlRbEJDY0FKaWNuQndFTFFiRUVRUUFnQVNBQktBSUFLQUlnRVFBQUVLZ0NHdzhMSUFFZ0FTZ0NBQ2dDYkJFQUFDRURJQUVvQWdBaEFpQURSUTBKSUFFZ0FpZ0NOQkVBQUVGK2FpSUNRUUpMRFNVZ0FrRUJhdzRDQndnR0N5QUJJQUVvQWdBb0FqUVJBQUFoQXlBQktBSUFJUUlnQTBVTkRDQUJJQUlvQWpRUkFBQkJmbW9pQWtFQ1N3MGtJQUpCQVdzT0Fnb0xDUXNnQVNBQktBSUFLQUkwRVFBQUlRTWdBU2dDQUNFQ0lBTkZEUThnQVNBQ0tBSTBFUUFBUVg1cUlnSkJBa3NOSXlBQ1FRRnJEZ0lORGd3TElBRWdBU2dDQUNnQ05CRUFBQ0VESUFFb0FnQWhBaUFEUlEwU0lBRWdBaWdDTkJFQUFFRithaUlDUVFKTERTSWdBa0VCYXc0Q0VCRVBDeUFCSUFFb0FnQW9BalFSQUFBaEF5QUJLQUlBSVFJZ0EwVU5GU0FCSUFJb0FqUVJBQUJCZm1vaUFrRUNTdzBoSUFKQkFXc09BaE1VRWdzZ0FTQUJLQUlBS0FJMEVRQUFJUU1nQVNnQ0FDRUNJQU5GRFJnZ0FTQUNLQUkwRVFBQVFYNXFJZ0pCQWtzTklDQUNRUUZyRGdJV0Z4VUxRYk1FRHdzZ0FTQUJLQUlBS0FJNEVRQUFJZ0ZCZm1wQkEwOE5IaUFCUWRZRGFnOExJQUVnQVNnQ0FDZ0NPQkVBQUNJQlFYNXFRUU5QRFIwZ0FVSFpBMm9QQ3lBQklBRW9BZ0FvQWpnUkFBQWlBVUYrYWtFRFR3MGNJQUZCM0FOcUR3c2dBU0FDS0FJd0VRQUFRWDlxSWdGQkJFOE5HeUFCUVFKMFFmaUhDV29vQWdBUEN5QUJJQUVvQWdBb0FqZ1JBQUFpQVVGK2FrRURUdzBhSUFGQmhnUnFEd3NnQVNBQktBSUFLQUk0RVFBQUlnRkJmbXBCQTA4TkdTQUJRWWtFYWc4TElBRWdBU2dDQUNnQ09CRUFBQ0lCUVg1cVFRTlBEUmdnQVVHTUJHb1BDeUFCSUFJb0FqQVJBQUJCZjJvaUFVRUVUdzBYSUFGQkFuUkJpSWdKYWlnQ0FBOExJQUVnQVNnQ0FDZ0NPQkVBQUNJQlFYNXFRUU5QRFJZZ0FVR1BCR29QQ3lBQklBRW9BZ0FvQWpnUkFBQWlBVUYrYWtFRFR3MFZJQUZCa2dScUR3c2dBU0FCS0FJQUtBSTRFUUFBSWdGQmZtcEJBMDhORkNBQlFaVUVhZzhMSUFFZ0FpZ0NNQkVBQUVGL2FpSUJRUVJQRFJNZ0FVRUNkRUdZaUFscUtBSUFEd3NnQVNBQktBSUFLQUk0RVFBQUlnRkJmbXBCQTA4TkVpQUJRWmdFYWc4TElBRWdBU2dDQUNnQ09CRUFBQ0lCUVg1cVFRTlBEUkVnQVVHYkJHb1BDeUFCSUFFb0FnQW9BamdSQUFBaUFVRitha0VEVHcwUUlBRkJuZ1JxRHdzZ0FTQUNLQUl3RVFBQVFYOXFJZ0ZCQkU4TkR5QUJRUUowUWFpSUNXb29BZ0FQQ3lBQklBRW9BZ0FvQWpnUkFBQWlBVUYrYWtFRFR3ME9JQUZCL1FOcUR3c2dBU0FCS0FJQUtBSTRFUUFBSWdGQmZtcEJBMDhORFNBQlFZQUVhZzhMSUFFZ0FTZ0NBQ2dDT0JFQUFDSUJRWDVxUVFOUERRd2dBVUdEQkdvUEN5QUJJQUlvQWpBUkFBQkJmMm9pQVVFRVR3MExJQUZCQW5SQnVJZ0phaWdDQUE4TElBRWdBU2dDQUNnQ09CRUFBQ0lCUVg1cVFRTlBEUW9nQVVHbEJHb1BDeUFCSUFFb0FnQW9BamdSQUFBaUFVRitha0VEVHcwSklBRkJxQVJxRHdzZ0FTQUJLQUlBS0FJNEVRQUFJZ0ZCZm1wQkEwOE5DQ0FCUWFzRWFnOExJQUVnQWlnQ01CRUFBQ0lCUVg5cVFRUlBEUWNnQVVHaUJHb1BDeUFCSUFFb0FnQW9BakFSQUFCQmYyb2lBVUVFVHcwR0lBRkJBblJCeUlnSmFpZ0NBQThMSUFFZ0FTZ0NBQ2dDTUJFQUFFRi9haUlCUVFSUERRVWdBVUVDZEVIWWlBbHFLQUlBRHdzZ0FTQUJLQUlBS0FJd0VRQUFRWDlxSWdGQkJFOE5CQ0FCUVFKMFFlaUlDV29vQWdBUEN5QUJJQUVvQWdBb0FqQVJBQUJCZjJvaUFVRUVUdzBESUFGQkFuUkIrSWdKYWlnQ0FBOExJQUVnQVNnQ0FDZ0NNQkVBQUVGL2FpSUJRUVJQRFFJZ0FVRUNkRUdJaVFscUtBSUFEd3NnQVNBQktBSUFLQUl3RVFBQVFYOXFJZ0ZCQkU4TkFTQUJRUUowUVppSkNXb29BZ0FQQzBHd0JDRUFDeUFBQ3d3QUlBQVFHeWdDQUVFRmRBdGVBUUYvQWtBQ1FDQUJRUXRMRFFCQkFTRUFRUUVnQVhRaUEwSHdBWEZGQkVBZ0EwR0FCbkZGQkVCQkFTQUJkRUdBR0hGRklBSkJBa2R5RFFJTUF3c2dBa0YvYWtFQ1R3MEJEQUlMSUFKQmYycEJBMGtOQVF0QkFDRUFDeUFBQ3dvQUlBRWdBaERSREJvTERRQWdBVUVEUmlBQ1FRRkdjUXNKQUNBQUlBRVE2UlFMM1FjQkJIOGpBRUV3YXlJSEpBQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVIY2ZHb2lCa0VWU3dSQUlBRkJzM3RxSWdaQkNVME5BVUVBREE4TElBWkJBV3NPRlFNRUJRWUhDQWtNRFFvTERBRUNBd1FGQmdjSUNRRUxJQVpCQVdzT0NRSURCQVVHQndnTERBQUxRZW9CREF3TFFlc0JEQXNMUWUwQlFld0JJQVJCQW5KQkMwWWJEQW9MUWU4QlFlNEJJQVJCQW5KQkMwWWJEQWtMUWZBQkRBZ0xRZkVCREFjTFFmSUJEQVlMUWVVQkRBVUxRZVlCREFRTFFlZ0JEQU1MUWVrQkRBSUxRZU1CREFFTFFlUUJDeUVJSUFSQkFYSkJDMFlFUUNBQVFUaHFRUXdRSVFzZ0IwRUFOZ0lzSUFkQkFEWUNLQ0FIUVFBMkFpUWdCeUFBUVRocUlnWkJCVUVCSUFBb0Fvd0VMUUNJQkJ0QkFCQjBJZ2syQWlBZ0J5QUdJQVV0QUFCQndBQnhRUVoyQkg5QmdJQUNRUUFnQUNnQ2pBUXRBSWdFR3dWQkFBdEJBQkIwSWdRMkFod2dCeUFFTmdJWUlBY2dBMEVBRUJFb0FnQTJBaXdDUUFKQUlBaEJBWEpCNlFGR0RRQWdCd0ovQWtBZ0NFR2RmbW9pQlVFRFN3MEFBa0FDUUNBRlFRRnJEZ01DQWdBQkN5QUhJQU5CQVJBUktBSUFOZ0lvSUFjZ0EwRUNFQkVvQWdBMkFpUWdCQ0VGSUFNUUZrRUVTUTBFSUFjZ0EwRURFQkVvQWdBaUNUWUNJQ0FISUFZZ0JpQURRUVFRRVNnQ0FCRFBBU0FHSUFOQkJSQVJLQUlBRU04QmNrRUFFSFFpQlRZQ0hDQUhJQVlnQmlBRFFRWVFFU2dDQUJEUEFTQUdJQU5CQnhBUktBSUFFTThCY2tFQUVIUWlCRFlDR0F3RUN5QURFQlpCQWtrTkFpQUhJQU5CQVJBUktBSUFJZ2syQWlBZ0JpQUdJQU5CQWhBUktBSUFFTThCSUFZZ0EwRURFQkVvQWdBUXp3RnlRUUFRZEF3QkN5QUhJQU5CQVJBUktBSUFOZ0lrSUFNUUZrRURTUTBCSUFjZ0EwRUNFQkVvQWdBaUNUWUNJQ0FHSUFZZ0EwRURFQkVvQWdBUXp3RWdCaUFEUVFRUUVTZ0NBQkRQQVhKQkFCQjBDeUlGTmdJY0RBRUxJQVFoQlFzZ0JpQUZFTThCSVFNZ0JpQUVFTThCSVFSQmdNQUFRWUNBQVJCSVFZQWdFRWhCZ0lBQ0VFZ2dBeUFFY25FRVFDQUdRZUVwRUNFTEFrQWdBQ2dDakFRdEFJZ0VSUTBBSUFZZ0NSRFBBVUVCUncwQUlBWkI0aWtRSVFzZ0IwRUlhaEF3SWdBZ0IwRXNhaEJISUFBZ0IwRWdhaEJISUFBZ0IwRWNhaEJIQW44Q1FBSkFBa0FnQ0VHZGZtb2lBMEVHU3cwQUlBTkJBV3NPQkFBQUFRQUNDeUFBSUFkQkpHb1FSeUFJUWVRQlJ3MEJJQVpCNUFFZ0FCRFZCa0VBREFJTElBQWdCMEVZYWhCSElBQWdCMEVrYWhCSElBQWdCMEVvYWhCSEN5QUdJQWdnQWlBQUVQQURJZ01nQVVHdkEwY05BQm9nQmtHQ0FTQUNJQU1nQmtFQlFRQVF2UUlRcWdFTElRRWdBQkEySUFkQk1Hb2tBQ0FCQzh3QkFBSkFJQUZCZkdvaUFVRUdTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCUVFGckRnWUVCUUVBQmdJREN5QUNRWGRxSWdGQkFrc05Cd0pBSUFGQkFXc09BZ2NIQUFzZ0FDZ0NMRUdQQTBvTkJrRUFEd3NnQWtGM2FrRURUdzBHREFVTElBSkJDMFlOQkF3RkN5QUNRWHRxSWdCQkIwOE5CRUgzQUNBQVFmOEFjWFpCQVhFUEN5QUNRWHBxSWdCQkJrOE5BMEU3SUFCQlAzRjJRUUZ4RHdzZ0FrRjVhaUlBUVFWUERRSkJIU0FBUVI5eGRrRUJjUThMSUFKQmZuRkJDa2NOQVF0QkFROExRUUFMZmdFQ2Z3SkFJQUFvQW93RUxRQ0lCRVVOQUNBQkxBQUFJZ05CQUVnTkFBSi9BbjhnQTBIZkFIRUVRRUVBUVFnUVNFRVFFRWdoQWlBQkxRQUFJUU1MSUFOQklIRUxCSDhnQWtFZ0VFZ2hBaUFCTFFBQUJTQURDMEhBQUhFRVFDQUNRUUVRU0NFQ0N5QUNSUXNFUUVFQUR3c2dBRUU0YWtIaEtSQWhDeUFDQzVFREFRbC9Jd0JCTUdzaUJTUUFJQUlRRmtFQlRnUkFJQUJCT0dvaEJBTkFJQUlnQ1JBUklRWUNRQ0FFSUFFZ0NSQ2VBeUlMSUFRZ0JpZ0NBQkJpSWdkR0RRQWdBQ2dDakFRUXJBTW9BZ0JCZ0lnRVR3UkFJQVlnQkVHUUF5QUxJQVlvQWdBUStBRTJBZ0FNQVFzQ1FDQUVJQWNRM2dZRVFDQUZRU0JxRURBaENFRUFJUU1nQkNBSEVOa0dJZ3BCQUV3TkFRTkFJQVVnQkNBR0tBSUFJQVFnQnlBREVKNERJQU1RcndFMkFod2dDQ0FGUVJ4cUVFRWdBMEVCYWlJRElBcEhEUUFMREFFTElBVkJJR29RTUNFSUlBUWdCeERaQmlFS0lBUWdCeEN3QVNFSFFRQWhBeUFLUVFCS0JFQURRQ0FGSUFRZ0JpZ0NBQ0FISUFNUXJ3RTJBaHdnQ0NBRlFSeHFFRUVnQTBFQmFpSURJQXBIRFFBTEN5QUFJQXNnQlNBSUVJQUZJZ01RdlFnaEJpQUNJQWtRRVNBR05nSUFJQU1RTmlBSUVEWU1BUXNnQUNBTElBVkJFR29nQ0JDQUJTSURFTDBJSVFZZ0FpQUpFQkVnQmpZQ0FDQURFRFlnQ0JBMkN5QUpRUUZxSWdrZ0FoQVdTQTBBQ3dzZ0FFRTRhaUFCSUFJUW5RTWhBQ0FGUVRCcUpBQWdBQXNuQUFKL0FrQWdBa0VDUncwQUlBRkJmMm9pQUVFQ1N3MEFRUUVnQUVFQmF3MEJHZ3RCQUFzTEVBQWdBa0VJUmlBQlFYeHhRUVJHY1FzcEFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJFTHNWRURFb0FnQWhBQ0FDUVJCcUpBQWdBQXVmQVFFRWZ5TUFRU0JySWdJa0FDQUNJQUJCb0FOcUlnUWdBUkRTRlRZQ0dDQUNFSVVFTmdJSUFrQWdBa0VZYWlBQ1FRaHFFSWdCQkVBZ0FrRVlhaEJFS0FJTUlRTU1BUXNnQUJCVklRTkJMQkFtSUFOQkFFRUhFRkVpQlNBQkVCTWlBUkQrQWlBQVFjZ0JhaUFDUVFocUlBVVFPaUlBRUgwZ0FCQStJQVFnQWtFSWFpQUJFR2tpQUJEakJpQUROZ0lBSUFBUUlCb0xJQUpCSUdva0FDQURDdzBBSUFCQlFHc1FrQUVvQWdBTENBQWdBRUhFQUdvTHJRRUJBbjhnQUVIdzJCRTJBZ0FnQUVHd0NHb1FoUVVhSUFCQnBBaHFJZ0VnQVJBOEVLRUlJQUJCa0FocUVORURJQUJCK0FkcUVPWVVJQUJCNUFkcUVJVUZHaUFBUWRBSGFpSUJFSndHSUFCQjZBUnFJUUlEUUNBQlFXeHFFSVVGSWdFZ0FrY05BQXNnQUVIVUJHb1EwUU1nQUVIQUJHb1F3QVFnQUVHc0JHb1FoUVVhSUFCQm1BUnFFSVVGR2lBQVFZQUVhaUlCSUFFUVBCQ2dDQ0FBUVRocUVKNElHaUFBRUpvQ0dpQUFDdzRBSUFBZ0FTQUNFTFlDRU5JREN4VUFJQUFRRXlBQUVCOGdBUkFUSUFFUUh4RHFDUXNiQUNBQVFZVFhFVFlDQUNBQVFTeHFFQ0FhSUFBUW1nSWFJQUFMSXdBZ0FFRzQyQkUyQWdBZ0FFRTRhaEFnR2lBQVFTUnFFTkVESUFBUW1nSWFJQUFMSlFFQmZ5QUNJQUEyQWdRZ0FTQUFLQUlBSWdNMkFnQWdBeUFCTmdJRUlBQWdBallDQUFzSkFDQUFJQUVRb3hZTExnRUJmeU1BUVJCcklnRWtBQ0FCSUFBUSt3dzJBZ0FnQVVFSWFpQUJFR2NvQWdBaEFDQUJRUkJxSkFBZ0FBdHVBUUovSXdCQkVHc2lBU1FBQWtBZ0FCREJBUVJBSUFBZ0FDZ0NCRUYvYWlJQ0VMd0JJQUFvQWdBaEFDQUJRUUE2QUE4Z0FDQUNhaUFCUVE5cUVKUUJEQUVMSUFBZ0FDMEFDMEYvYWlJQ0VOUUJJQUZCQURvQURpQUFJQUpxSUFGQkRtb1FsQUVMSUFGQkVHb2tBQXYzRFFNSWZ3SitBbndqQUVFd2F5SUVKQUFnQkNBRE5nSW9JQVFnQVRZQ0xDQUVJQVJCS0dvMkFpUWdCQ0FFUVN4cU5nSWdBa0FnQVVFQlNBMEFBMEFnQXlBRmFpMEFJRUV3UncwQklBVkJBV29pQlNBQlJ3MEFDeUFCSVFVTElBRWhCd0pBQTBBZ0J5SUdJQVZNQkVBZ0JpQUZheUlJUVJCSUlRa01BZ3NnQXlBR1FYOXFJZ2RxTFFBZ1FUQkdEUUFMSUFZZ0JXc2lDRUVRU0NFSklBWWdCVXdnQ0VFUFNuSU5BQU5BSUFNZ0JXb3dBQ0FnREVJS2ZueENVSHdoRENBRlFRRnFJZ1VnQmtjTkFBc0xJQUVnQm1zaEFVRUFJUU1DUUNBQ1FTNUhCRUJCQUNFSERBRUxJQVJCSUdwQkxoQ0JBeUFBRVA0RElRSWdCQ2dDTENJTElRb2dBa0V3UmdSQUEwQWdCRUVnYWtFd0VJRURJQUFRL2dNaUFrRXdSZzBBQ3lBRUtBSXNJUW9MUVFFaEJ5QUNRVkJxUVFsTERRQWdDaUVGQTBBZ0JFRWdhaUFDRUlFRElBVWdCQ2dDTENBQ1FUQkdHeUVGSUFBUS9nTWlBa0ZRYWtFS1NRMEFDeUFGSUFwTURRQWdDU0FJSUFaQmYzTnFJQVZxSWdoQkVFaHhJZ2xCQVVjZ0JpQUZUbkpGQkVBZ0JDZ0NLQ0VCQTBBZ0RDQUJJQVpxTUFBZ0lnMGdERUlLZm54Q1VId2dEVUl1VVJzaERDQUdRUUZxSWdZZ0JVY05BQXNMSUFzZ0JXc2hBUXNDZndKQUlBSkJJSEpCNVFCR0JFQWdCRUVnYWlBQ0VJRURBa0FnQUJEK0F5SUNRVlZxSWdWQkFrc0VRRUVBSVFZTUFRdEJBQ0VHSUFWQkFXdEZEUUFnQkVFZ2FpQUNFSUVESUFKQkxVWWhCaUFBRVA0RElRSUxBa0FnQWtGUWFpSUZRUWxOQkVBRFFDQUVRU0JxSUFJUWdRTWdCU0FEUVFwc2FpRURJQUFRL2dNaUFrRlFhaUlGUVFwSkRRQUxJQVpGRFFFTUF3c2dBQ2dDY0NJRklBUW9BaWhCbk13UlFiek1FVUc4ekJGQkFDQUZLQUlBS0FLb0FSRUNBQ0FHRFFJTFFRRWhCd3NnQVNBRGFpSUJJQUZCSDNVaUEyb2dBM01oQlNBQlFSOTJEQUVMSUFNZ0FXc2hCVUVCSVFkQkFRc2hBd0pBSUFrZ0JVRVhTSEVpQVVFQlJ3MEFSQUFBQUFBQUFQQS9JUThnQlVFQlNBMEFSQUFBQUFBQUFDUkFJUTREUUNBUElBNmlJQThnQlVFQmNSc2hEeUFPSUE2aUlRNGdCVUVCZGlJRkRRQUxRUUFoQlFzQ2Z3SkFBa0FnQWtFZ2NrR2FmMm9pQmtFR1N3MEFBa0FDUUFKQUFrQWdCa0VCYXc0R0JBRUVCQVFBQWdzZ0FDZ0NkRVVFUUNBQUtBSndLQUlvR2lBQUtBSndJZ1lnQkNnQ0tFRzl6QkVnQmlnQ0FDZ0NRQkVHQUFzZ0J5QUFLQUowUVFCSGNrVUVRQ0FBS0FKd0lnY2dCQ2dDS0VIYXpCRkJ2TXdSUWJ6TUVVRUFJQWNvQWdBb0FxZ0JFUUlBQ3dKL0lBQW9BbkFvQWlnYVFRRUxCRUFnQUJEK0F5SUhRU0J5UWVZQVJ3MERJQVJCSUdvZ0FoQ0JBeUFFUVNCcUlBY1FnUU5CbndFTUJnc2dBQ2dDY0NnQ0tCcEJuZ0VNQlFzZ0FDZ0NkRVVFUUNBQUtBSndLQUlvR2lBQUtBSndJZ1lnQkNnQ0tFR0t6UkZCQUNBR0tBSUFLQUpFRVFRQUN5QUhJQUFvQW5SQkFFZHlSUVJBSUFBb0FuQWlCeUFFS0FJb1Fkck1FVUc4ekJGQnZNd1JRUUFnQnlnQ0FDZ0NxQUVSQWdBTEFuOGdBQ2dDY0NnQ0tCcEJBUXNFUUNBQUVQNERJZ2RCSUhKQjVnQkhEUUlnQkVFZ2FpQUNFSUVESUFSQklHb2dCeENCQTBHZ0FRd0ZDeUFBS0FKd0tBSW9Ha0dlQVF3RUN3SkFJQUFvQW5RTkFDQUFLQUp3SUFRb0FpaEJDRUdzQWtFQVFhWE5FUkFvSUFBb0FuUU5BQ0FBS0FKd0VKQUREUUFnQUNnQ2NDQUVLQUlvUVhkQitBQkJBRUdselJFUUtBc2dCeUFBS0FKMFFRQkhja1VFUUNBQUtBSndJZ2NnQkNnQ0tFSGF6QkZCdk13UlFiek1FVUVBSUFjb0FnQW9BcWdCRVFJQUN5QUVRU0JxSUFJUWdRTU1BZ3NnQUJDRURRc2dBQkNFRFF0Qm5nRUxJUWNnQkNnQ0xDSUNRWUVJVGdSL0lBUkJnQWcyQWl3Z0FDZ0NjQ0lDSUFRb0FpaEJ1ODBSUWJ6TUVVRzh6QkZCQUNBQ0tBSUFLQUtvQVJFQ0FDQUVLQUlzQlNBQ0N5QUVLQUlvYWtFQU9nQWdBa0FnQVFSQUlBeTZJUTRnRDBRQUFBQUFBQUFBQUdFRVFDQUVLQUlvSUE0NUF4Z01BZ3NnQXdSQUlBUW9BaWdnRGlBUG96a0RHQXdDQ3lBRUtBSW9JQThnRHFJNUF4Z01BUXNnQkNnQ0tDSUJRZ0EzQXhnQ1FDQUVRUkJxSUFGQklHb1FJaUlCRUk0RkxRQUFRZVlBUndSQUlBRVFqZ1V0QUFCQnhnQkhEUUVMSUFFUXpBZ0xBa0FnQVJDT0JTMEFBRUhvQUVjRVFDQUJFSTRGTFFBQVFjZ0FSdzBCQ3lBQkVNd0lDd0pBSUFFUWpnVXRBQUJCN0FCSEJFQWdBUkNPQlMwQUFFSE1BRWNOQVFzZ0FSRE1DQXNnQUVHSUFtb2lBaUFBS0FLSUFrRjBhaWdDQUdwQkFCRE5DeUFDUVFocUlBUWdBUkFURUdraUJoQytGaUFHRUNBYUlBSWdCQ2dDS0VFWWFoQzhFd0pBSUFJZ0FDZ0NpQUpCZEdvb0FnQnFMUUFRUVFWeFJRMEFJQVVnQ0dwQnJRSklJZ0FnQTBFQmN5SUNSWEpGQkVBZ0JDZ0NLRUtBZ0lDQWdJQ0ErUDhBTndNWUN5QUFJQUp5RFFBZ0JDZ0NLRUlBTndNWUN5QUJFQmthQ3lBRVFUQnFKQUFnQndzS0FDQUFRUkJxRUJrYUN5a0FJQUVFUUNBQUlBRW9BZ0FRendnZ0FDQUJLQUlFRU04SUlBQVExd0lhSUFGQkVHb1FpZzBMQzQ0bUFnWi9BWHdqQUVIZ0FHc2lCaVFBSUFFUVN5RUVJQVpCMkFCcUlBRWdBU2dDQUNnQ2VCRUFBQkRGQVNJSEVQVUJJUU1nQVNBQktBSUFLQUo0RVFBQUlRVUNRQ0FIUVFGT0JFQURRQ0FGSUFVb0FnQW9BaHdSQUFCQmYyb2lCVUVMU3cwQ0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JVRUJhdzRMQlFRR0NRY0tBUUlJQ3dNQUN5QUFRWDlxSWdWQkMwc05EZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRUUZyRGdzQ0FBTUhCQWdGQ1FZS0N3RUxJQU1nQWhBUElBUWdBaEFQS3dNQUVDME1GZ3NnQXlBQ0VBOGdCQ0FDRUE4ckF3QVFMUXdWQ3lBRElBSVFEeUFFSUFJUUR5c0RBQkF0REJRTElBTWdBaEFQQW44Z0JDQUNFQThyQXdBaUNKbEVBQUFBQUFBQTRFRmpCRUFnQ0tvTUFRdEJnSUNBZ0hnTEVHd01Fd3NnQXlBQ0VBOENmeUFFSUFJUUR5c0RBQ0lJbVVRQUFBQUFBQURnUVdNRVFDQUlxZ3dCQzBHQWdJQ0FlQXNRY2d3U0N5QURJQUlRRHdKL0lBUWdBaEFQS3dNQUlnaVpSQUFBQUFBQUFPQkJZd1JBSUFpcURBRUxRWUNBZ0lCNEN4QmxEQkVMSUFNZ0FoQVBBbjRnQkNBQ0VBOHJBd0FpQ0psRUFBQUFBQUFBNEVOakJFQWdDTEFNQVF0Q2dJQ0FnSUNBZ0lDQWZ3c1FXd3dRQ3lBRElBSVFEd0ovSUFRZ0FoQVBLd01BSWdoRUFBQUFBQUFBOEVGaklBaEVBQUFBQUFBQUFBQm1jUVJBSUFpckRBRUxRUUFMRUhZTUR3c2dBeUFDRUE4Q2Z5QUVJQUlRRHlzREFDSUlSQUFBQUFBQUFQQkJZeUFJUkFBQUFBQUFBQUFBWm5FRVFDQUlxd3dCQzBFQUN4QnhEQTRMSUFNZ0FoQVBBbjhnQkNBQ0VBOHJBd0FpQ0VRQUFBQUFBQUR3UVdNZ0NFUUFBQUFBQUFBQUFHWnhCRUFnQ0tzTUFRdEJBQXNRYlF3TkN5QURJQUlRRHdKK0lBUWdBaEFQS3dNQUlnaEVBQUFBQUFBQThFTmpJQWhFQUFBQUFBQUFBQUJtY1FSQUlBaXhEQUVMUWdBTEVGb01EQXNnQXlBQ0VBOGdCQ0FDRUE4ckF3QkVBQUFBQUFBQUFBQmlFSGNNQ3dzZ0FFRi9haUlGUVF0TERRMENRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JVRUJhdzRMQWdBREJ3UUlCUWtHQ2dzQkN5QURJQUlRRHlBRUlBSVFEeWdDQUxjUUxRd1ZDeUFESUFJUUR5QUVJQUlRRHlnQ0FMY1FMUXdVQ3lBRElBSVFEeUFFSUFJUUR5Z0NBTGNRTFF3VEN5QURJQUlRRHlBRUlBSVFEeWdDQUVFWWRFRVlkUkJzREJJTElBTWdBaEFQSUFRZ0FoQVBLQUlBUVJCMFFSQjFFSElNRVFzZ0F5QUNFQThnQkNBQ0VBOG9BZ0FRWlF3UUN5QURJQUlRRHlBRUlBSVFEeWdDQUt3UVd3d1BDeUFESUFJUUR5QUVJQUlRRHlnQ0FFSC9BWEVRZGd3T0N5QURJQUlRRHlBRUlBSVFEeWdDQUVILy93TnhFSEVNRFFzZ0F5QUNFQThnQkNBQ0VBOG9BZ0FRYlF3TUN5QURJQUlRRHlBRUlBSVFEeWdDQUt3UVdnd0xDeUFESUFJUUR5QUVJQUlRRHlnQ0FFRUFSeEIzREFvTElBQkJmMm9pQlVFTFN3ME1Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBVkJBV3NPQ3dJQUF3Y0VDQVVKQmdvTEFRc2dBeUFDRUE4Z0JDQUNFQThvQWdDNEVDME1GQXNnQXlBQ0VBOGdCQ0FDRUE4b0FnQzRFQzBNRXdzZ0F5QUNFQThnQkNBQ0VBOG9BZ0M0RUMwTUVnc2dBeUFDRUE4Z0JDQUNFQThvQWdCQkdIUkJHSFVRYkF3UkN5QURJQUlRRHlBRUlBSVFEeWdDQUVFUWRFRVFkUkJ5REJBTElBTWdBaEFQSUFRZ0FoQVBLQUlBRUdVTUR3c2dBeUFDRUE4Z0JDQUNFQThvQWdDdEVGc01EZ3NnQXlBQ0VBOGdCQ0FDRUE4b0FnQkIvd0Z4RUhZTURRc2dBeUFDRUE4Z0JDQUNFQThvQWdCQi8vOERjUkJ4REF3TElBTWdBaEFQSUFRZ0FoQVBLQUlBRUcwTUN3c2dBeUFDRUE4Z0JDQUNFQThvQWdDdEVGb01DZ3NnQXlBQ0VBOGdCQ0FDRUE4b0FnQkJBRWNRZHd3SkN5QUFRWDlxSWdWQkMwc05Dd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRUUZyRGdzQ0FBTUhCQWdGQ1FZS0N3RUxJQU1nQWhBUElBUWdBaEFQTFFBQXVCQXREQk1MSUFNZ0FoQVBJQVFnQWhBUExRQUF1QkF0REJJTElBTWdBaEFQSUFRZ0FoQVBMUUFBdUJBdERCRUxJQU1nQWhBUElBUWdBaEFQTFFBQUVHd01FQXNnQXlBQ0VBOGdCQ0FDRUE4dEFBQVFjZ3dQQ3lBRElBSVFEeUFFSUFJUUR5MEFBQkJsREE0TElBTWdBaEFQSUFRZ0FoQVBMUUFBclJCYkRBMExJQU1nQWhBUElBUWdBaEFQTFFBQUVIWU1EQXNnQXlBQ0VBOGdCQ0FDRUE4dEFBQVFjUXdMQ3lBRElBSVFEeUFFSUFJUUR5MEFBQkJ0REFvTElBTWdBaEFQSUFRZ0FoQVBMUUFBclJCYURBa0xJQU1nQWhBUElBUWdBaEFQTFFBQUVIY01DQXNnQUVGL2FpSUZRUXRMRFFvQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQlVFQmF3NExBZ0FEQndRSUJRa0dDZ3NCQ3lBRElBSVFEeUFFSUFJUUR5c0RBQkF0REJJTElBTWdBaEFQSUFRZ0FoQVBLd01BRUMwTUVRc2dBeUFDRUE4Z0JDQUNFQThyQXdBUUxRd1FDeUFESUFJUUR3Si9JQVFnQWhBUEt3TUFJZ2laUkFBQUFBQUFBT0JCWXdSQUlBaXFEQUVMUVlDQWdJQjRDeEJzREE4TElBTWdBaEFQQW44Z0JDQUNFQThyQXdBaUNKbEVBQUFBQUFBQTRFRmpCRUFnQ0tvTUFRdEJnSUNBZ0hnTEVISU1EZ3NnQXlBQ0VBOENmeUFFSUFJUUR5c0RBQ0lJbVVRQUFBQUFBQURnUVdNRVFDQUlxZ3dCQzBHQWdJQ0FlQXNRWlF3TkN5QURJQUlRRHdKK0lBUWdBaEFQS3dNQUlnaVpSQUFBQUFBQUFPQkRZd1JBSUFpd0RBRUxRb0NBZ0lDQWdJQ0FnSDhMRUZzTURBc2dBeUFDRUE4Q2Z5QUVJQUlRRHlzREFDSUlSQUFBQUFBQUFQQkJZeUFJUkFBQUFBQUFBQUFBWm5FRVFDQUlxd3dCQzBFQUN4QjJEQXNMSUFNZ0FoQVBBbjhnQkNBQ0VBOHJBd0FpQ0VRQUFBQUFBQUR3UVdNZ0NFUUFBQUFBQUFBQUFHWnhCRUFnQ0tzTUFRdEJBQXNRY1F3S0N5QURJQUlRRHdKL0lBUWdBaEFQS3dNQUlnaEVBQUFBQUFBQThFRmpJQWhFQUFBQUFBQUFBQUJtY1FSQUlBaXJEQUVMUVFBTEVHME1DUXNnQXlBQ0VBOENmaUFFSUFJUUR5c0RBQ0lJUkFBQUFBQUFBUEJEWXlBSVJBQUFBQUFBQUFBQVpuRUVRQ0FJc1F3QkMwSUFDeEJhREFnTElBTWdBaEFQSUFRZ0FoQVBLd01BUkFBQUFBQUFBQUFBWWhCM0RBY0xJQUJCZjJvaUJVRUxTdzBKQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVZCQVdzT0N3SUFBd2NFQ0FVSkJnb0xBUXNnQXlBQ0VBOGdCQ0FDRUE4ckF3QVFMUXdSQ3lBRElBSVFEeUFFSUFJUUR5c0RBQkF0REJBTElBTWdBaEFQSUFRZ0FoQVBLd01BRUMwTUR3c2dBeUFDRUE4Q2Z5QUVJQUlRRHlzREFDSUltVVFBQUFBQUFBRGdRV01FUUNBSXFnd0JDMEdBZ0lDQWVBc1FiQXdPQ3lBRElBSVFEd0ovSUFRZ0FoQVBLd01BSWdpWlJBQUFBQUFBQU9CQll3UkFJQWlxREFFTFFZQ0FnSUI0Q3hCeURBMExJQU1nQWhBUEFuOGdCQ0FDRUE4ckF3QWlDSmxFQUFBQUFBQUE0RUZqQkVBZ0NLb01BUXRCZ0lDQWdIZ0xFR1VNREFzZ0F5QUNFQThDZmlBRUlBSVFEeXNEQUNJSW1VUUFBQUFBQUFEZ1EyTUVRQ0FJc0F3QkMwS0FnSUNBZ0lDQWdJQi9DeEJiREFzTElBTWdBaEFQQW44Z0JDQUNFQThyQXdBaUNFUUFBQUFBQUFEd1FXTWdDRVFBQUFBQUFBQUFBR1p4QkVBZ0NLc01BUXRCQUFzUWRnd0tDeUFESUFJUUR3Si9JQVFnQWhBUEt3TUFJZ2hFQUFBQUFBQUE4RUZqSUFoRUFBQUFBQUFBQUFCbWNRUkFJQWlyREFFTFFRQUxFSEVNQ1FzZ0F5QUNFQThDZnlBRUlBSVFEeXNEQUNJSVJBQUFBQUFBQVBCQll5QUlSQUFBQUFBQUFBQUFabkVFUUNBSXF3d0JDMEVBQ3hCdERBZ0xJQU1nQWhBUEFuNGdCQ0FDRUE4ckF3QWlDRVFBQUFBQUFBRHdRMk1nQ0VRQUFBQUFBQUFBQUdaeEJFQWdDTEVNQVF0Q0FBc1FXZ3dIQ3lBRElBSVFEeUFFSUFJUUR5c0RBRVFBQUFBQUFBQUFBR0lRZHd3R0N5QUFRWDlxSWdWQkMwc05DQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRUUZyRGdzQ0FBTUhCQWdGQ1FZS0N3RUxJQU1nQWhBUElBUWdBaEFQTEFBQXR4QXREQkFMSUFNZ0FoQVBJQVFnQWhBUExBQUF0eEF0REE4TElBTWdBaEFQSUFRZ0FoQVBMQUFBdHhBdERBNExJQU1nQWhBUElBUWdBaEFQTEFBQUVHd01EUXNnQXlBQ0VBOGdCQ0FDRUE4c0FBQVFjZ3dNQ3lBRElBSVFEeUFFSUFJUUR5d0FBQkJsREFzTElBTWdBaEFQSUFRZ0FoQVBMQUFBckJCYkRBb0xJQU1nQWhBUElBUWdBaEFQTFFBQUVIWU1DUXNnQXlBQ0VBOGdCQ0FDRUE4c0FBQkIvLzhEY1JCeERBZ0xJQU1nQWhBUElBUWdBaEFQTEFBQUVHME1Cd3NnQXlBQ0VBOGdCQ0FDRUE4c0FBQ3NFRm9NQmdzZ0F5QUNFQThnQkNBQ0VBOHNBQUJCQUVjUWR3d0ZDeUFBUVg5cUlnVkJDMHNOQndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FGUVFGckRnc0NBQU1IQkFnRkNRWUtDd0VMSUFNZ0FoQVBJQVFnQWhBUExnRUF0eEF0REE4TElBTWdBaEFQSUFRZ0FoQVBMZ0VBdHhBdERBNExJQU1nQWhBUElBUWdBaEFQTGdFQXR4QXREQTBMSUFNZ0FoQVBJQVFnQWhBUExnRUFRUmgwUVJoMUVHd01EQXNnQXlBQ0VBOGdCQ0FDRUE4dUFRQVFjZ3dMQ3lBRElBSVFEeUFFSUFJUUR5NEJBQkJsREFvTElBTWdBaEFQSUFRZ0FoQVBMZ0VBckJCYkRBa0xJQU1nQWhBUElBUWdBaEFQTGdFQVFmOEJjUkIyREFnTElBTWdBaEFQSUFRZ0FoQVBMd0VBRUhFTUJ3c2dBeUFDRUE4Z0JDQUNFQTh1QVFBUWJRd0dDeUFESUFJUUR5QUVJQUlRRHk0QkFLd1FXZ3dGQ3lBRElBSVFEeUFFSUFJUUR5NEJBRUVBUnhCM0RBUUxJQUJCZjJvaUJVRUxTdzBHQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVZCQVdzT0N3SUFBd2NFQ0FVSkJnb0xBUXNnQXlBQ0VBOGdCQ0FDRUE4cEF3QzVFQzBNRGdzZ0F5QUNFQThnQkNBQ0VBOHBBd0M1RUMwTURRc2dBeUFDRUE4Z0JDQUNFQThwQXdDNUVDME1EQXNnQXlBQ0VBOGdCQ0FDRUE4cEF3Q25RUmgwUVJoMUVHd01Dd3NnQXlBQ0VBOGdCQ0FDRUE4cEF3Q25RUkIwUVJCMUVISU1DZ3NnQXlBQ0VBOGdCQ0FDRUE4cEF3Q25FR1VNQ1FzZ0F5QUNFQThnQkNBQ0VBOHBBd0FRV3d3SUN5QURJQUlRRHlBRUlBSVFEeWtEQUtkQi93RnhFSFlNQndzZ0F5QUNFQThnQkNBQ0VBOHBBd0NuUWYvL0EzRVFjUXdHQ3lBRElBSVFEeUFFSUFJUUR5a0RBS2NRYlF3RkN5QURJQUlRRHlBRUlBSVFEeWtEQUJCYURBUUxJQU1nQWhBUElBUWdBaEFQS1FNQVFnQlNFSGNNQXdzZ0FFRi9haUlGUVF0TERRVUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JVRUJhdzRMQWdBREJ3UUlCUWtHQ2dzQkN5QURJQUlRRHlBRUlBSVFEeTBBQUxnUUxRd05DeUFESUFJUUR5QUVJQUlRRHkwQUFMZ1FMUXdNQ3lBRElBSVFEeUFFSUFJUUR5MEFBTGdRTFF3TEN5QURJQUlRRHlBRUlBSVFEeXdBQUJCc0RBb0xJQU1nQWhBUElBUWdBaEFQTFFBQUVISU1DUXNnQXlBQ0VBOGdCQ0FDRUE4dEFBQVFaUXdJQ3lBRElBSVFEeUFFSUFJUUR5MEFBSzBRV3d3SEN5QURJQUlRRHlBRUlBSVFEeTBBQUJCMkRBWUxJQU1nQWhBUElBUWdBaEFQTFFBQUVIRU1CUXNnQXlBQ0VBOGdCQ0FDRUE4dEFBQVFiUXdFQ3lBRElBSVFEeUFFSUFJUUR5MEFBSzBRV2d3REN5QURJQUlRRHlBRUlBSVFEeTBBQUVFQVJ4QjNEQUlMSUFCQmYyb2lCVUVMU3cwRUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFWQkFXc09Dd0lBQXdjRUNBVUpCZ29MQVFzZ0F5QUNFQThnQkNBQ0VBOHZBUUM0RUMwTURBc2dBeUFDRUE4Z0JDQUNFQTh2QVFDNEVDME1Dd3NnQXlBQ0VBOGdCQ0FDRUE4dkFRQzRFQzBNQ2dzZ0F5QUNFQThnQkNBQ0VBOHZBUUJCR0hSQkdIVVFiQXdKQ3lBRElBSVFEeUFFSUFJUUR5NEJBQkJ5REFnTElBTWdBaEFQSUFRZ0FoQVBMd0VBRUdVTUJ3c2dBeUFDRUE4Z0JDQUNFQTh2QVFDdEVGc01CZ3NnQXlBQ0VBOGdCQ0FDRUE4dkFRQkIvd0Z4RUhZTUJRc2dBeUFDRUE4Z0JDQUNFQTh2QVFBUWNRd0VDeUFESUFJUUR5QUVJQUlRRHk4QkFCQnREQU1MSUFNZ0FoQVBJQVFnQWhBUEx3RUFyUkJhREFJTElBTWdBaEFQSUFRZ0FoQVBMd0VBUVFCSEVIY01BUXNnQUVGL2FpSUZRUXRMRFFNQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQlVFQmF3NExBZ0FEQndRSUJRa0dDZ3NCQ3lBRElBSVFEeUFFSUFJUUR5a0RBTG9RTFF3TEN5QURJQUlRRHlBRUlBSVFEeWtEQUxvUUxRd0tDeUFESUFJUUR5QUVJQUlRRHlrREFMb1FMUXdKQ3lBRElBSVFEeUFFSUFJUUR5a0RBS2RCR0hSQkdIVVFiQXdJQ3lBRElBSVFEeUFFSUFJUUR5a0RBS2RCRUhSQkVIVVFjZ3dIQ3lBRElBSVFEeUFFSUFJUUR5a0RBS2NRWlF3R0N5QURJQUlRRHlBRUlBSVFEeWtEQUJCYkRBVUxJQU1nQWhBUElBUWdBaEFQS1FNQXAwSC9BWEVRZGd3RUN5QURJQUlRRHlBRUlBSVFEeWtEQUtkQi8vOERjUkJ4REFNTElBTWdBaEFQSUFRZ0FoQVBLUU1BcHhCdERBSUxJQU1nQWhBUElBUWdBaEFQS1FNQUVGb01BUXNnQXlBQ0VBOGdCQ0FDRUE4cEF3QkNBRklRZHdzZ0FTQUJLQUlBS0FKNEVRQUFJUVVnQWtFQmFpSUNJQWRIRFFBTEN5QURJQVlnQUNBRklBVW9BZ0FvQWl3UkFBQW9BZ1JCUDNFZ0JTQUZLQUlBS0FJd0VRQUFJQVVnQlNnQ0FDZ0NOQkVBQUNBRklBVW9BZ0FvQWpnUkFBQkJBQkJGSWdBZ0FTQUJLQUlBS0FJQUVRQUFRUUFRMEFJaEFTQUFFRFVhQ3lBR1FlQUFhaVFBSUFFTExBRUJmeUFBSUFBb0FnUVFqUTBnQUNnQ0FBUkFJQUFRSXhvZ0FDZ0NBQ0VCSUFBUWlBTWFJQUVRS2dzTENnQWdBRUVZZEVFWWRRc1FBQ0FBSUFFM0F3Z2dBRUlBTndNQUN4Y0FJQUFnQWpZQ0hDQUFJQUUyQWhRZ0FDQUJOZ0lZQzVrQkFRRi9Jd0JCTUdzaUF5UUFJQU1nQWpZQ0tDQURJQUUyQWl3Z0EwRVlhaUFBQW44Z0F5QURLQUlzRUNJYUlBTWdBeWdDS0RZQ0VDQURDeERqRmlBRElBTW9BaGcyQWlBZ0F4Q3lBaUFBUVJ4cUlnRVFGaUFES0FJb0lnSkJBV3BKQkVBZ0F5QUFRVEJxTmdJQUlBRWdBa0hrQUdvZ0F4RGlGZ3NnQTBFZ2FoQkVJUUFnQVNBREtBSW9FQkVnQURZQ0FDQURRVEJxSkFBTENRQWdBQ0FCRUpvTkN4VUFJQUFnQXhEdEJSb2dBQ0FCSUFJUThCWWdBQXQ4QVFGL0FrQUNRQ0FDSUFJb0FnQW9Bb0FCRVFBQUlnQkJjMnBCQWs4RVFDQUFSUTBDSUFCQkVVY05BUXNnQVVFRVJnMEFJQUZCdGdSSElBSWdBaWdDQUNnQ2dBRVJBQUJCRGtkeURRRWdBaUFDS0FJQUtBSVFFUUFBUlEwQklBSWdBaWdDQUNnQ0VCRUFBQ2dDYUVHeEJFY05BUXRCQVNFREN5QURDd2dBSUFBb0FnQkZDekFBQWtCQmZ5QUFLQUpNRUtnRFJRUkFJQUFvQWt3aEFBd0JDeUFBSUFBUThSWWlBRFlDVEFzZ0FFRVlkRUVZZFFzUEFDQUFJQUFvQWdoQmZHb1FqUTBMQ2dBZ0FDZ0NDRUY4YWd1dkFnRUVmeU1BUVRCcklnTWtBQUpBSUFBb0FnUWdBQ2dDQUVjTkFDQUFLQUlJSUFBUUl5Z0NBRWtFUUNBQUVDTWhCQ0FBSUFBb0FnUWdBQ2dDQ0NJQ0lBSWdCQ2dDQUNBQ2EwRUNkVUVCYWtFQ2JVRUNkQ0lFYWhEK0JUWUNCQ0FBSUFBb0FnZ2dCR28yQWdnTUFRc2dBeUFBRUNNb0FnQWdBQ2dDQUd0QkFYVTJBaGdnQTBFQk5nSXNJQU5CR0dvZ0EwRVlhaUFEUVN4cUVGSW9BZ0FpQWlBQ1FRTnFRUUoySUFBUUl4RHlBaUVDSUFOQkVHb2dBQ2dDQkJBeElRUWdBMEVJYWlBQUtBSUlFREVoQlNBQ0lBUW9BZ0FnQlNnQ0FCRDhCaUFBSUFJUUxpQUFRUVJxSUFKQkJHb1FMaUFBUVFocUlBSkJDR29RTGlBQUVDTWdBaEFqRUM0Z0FoQ1JBd3NnQUJBaklBQW9BZ1JCZkdvZ0FSRDVBU0FBSUFBb0FnUkJmR28yQWdRZ0EwRXdhaVFBQ3k0QkFYOUJBU0VCQWtBZ0FFSEsvd2dRalFFTkFDQUFRZEdDQ1JDTkFRMEFJQUJCOHY4SUVJMEJJUUVMSUFFTHNRSUJCSDhqQUVFd2F5SURKQUFDUUNBQUtBSUVJQUFvQWdCSERRQWdBQ2dDQ0NBQUVDTW9BZ0JKQkVBZ0FCQWpJUVFnQUNBQUtBSUVJQUFvQWdnaUFpQUNJQVFvQWdBZ0FtdEJBblZCQVdwQkFtMUJBblFpQkdvUS9nVTJBZ1FnQUNBQUtBSUlJQVJxTmdJSURBRUxJQU1nQUJBaktBSUFJQUFvQWdCclFRRjFOZ0lZSUFOQkFUWUNMQ0FEUVJocUlBTkJHR29nQTBFc2FoQlNLQUlBSWdJZ0FrRURha0VDZGlBQUtBSVFFUElDSVFJZ0EwRVFhaUFBS0FJRUVERWhCQ0FEUVFocUlBQW9BZ2dRTVNFRklBSWdCQ2dDQUNBRktBSUFFUHdHSUFBZ0FoQXVJQUJCQkdvZ0FrRUVhaEF1SUFCQkNHb2dBa0VJYWhBdUlBQVFJeUFDRUNNUUxpQUNFSkVEQ3lBQUtBSVFJQUFvQWdSQmZHb2dBUkQ1QVNBQUlBQW9BZ1JCZkdvMkFnUWdBMEV3YWlRQUM2a0NBUVovSXdCQk1Hc2lBeVFBQWtBZ0FDZ0NDQ0FBRUNNb0FnQkhEUUFnQUVFSWFpRUVJQUJCQkdvaEJTQUFLQUlFSWdJZ0FDZ0NBQ0lHU3dSQUlBUWdBaUFFS0FJQUlBSWdBaUFHYTBFQ2RVRUJha0YrYlVFQ2RDSUVhaENSQkRZQ0FDQUZJQVVvQWdBZ0JHbzJBZ0FNQVFzZ0F5QUFFQ01vQWdBZ0FDZ0NBR3RCQVhVMkFoZ2dBMEVCTmdJc0lBTkJHR29nQTBFWWFpQURRU3hxRUZJb0FnQWlBaUFDUVFKMklBQW9BaEFROGdJaEFpQURRUkJxSUFBb0FnUVFNU0VHSUFOQkNHb2dBQ2dDQ0JBeElRY2dBaUFHS0FJQUlBY29BZ0FRL0FZZ0FDQUNFQzRnQlNBQ1FRUnFFQzRnQkNBQ1FRaHFFQzRnQUJBaklBSVFJeEF1SUFJUWtRTUxJQUFvQWhBZ0FDZ0NDQ0FCRVBrQklBQWdBQ2dDQ0VFRWFqWUNDQ0FEUVRCcUpBQUxFZ0FnQUJBaktBSUFJQUFvQWdoclFRSjFDMElCQVg4akFFRVFheUlFSkFBZ0JDQUNLUUlJTndNSUlBUWdBaWtDQURjREFDQUFJQUVnQkJEOERDSUFJQU1nQUNnQ0FDZ0NkQkVCQUNBRVFSQnFKQUFnQUFzTUFDQUJJQUl0QUFBNkFBQUxDZ0FnQVNBQ0VQOEJHZ3NyQUNBQkVNSUJJUUVnQUJDZEJTQUNSZ1JBSUFBZ0FUWUNKQXNnQUNnQ0dDQUNRUVIwYWlBQk5nSUFDeFlBSUFBb0FnQWlBRVVFUUVISnN4RVBDeUFBRUJNTEtnQWdBQkN1RFNBQUtBSUFCRUFnQUNBQUtBSUFFSjBOSUFBUU94b2dBQ2dDQUJvZ0FCQzZCQm9MQzVJTUFReC9Jd0JCOEFocklnVWtBQ0FCUVFBNkFCQUNRQUpBQWtBQ1FBSkFBa0FnQUVFVWFpSUtJQUZCSUdvaUJCRE9BeUlIUWMxK2FpSUdRUUpMQkVBZ0IwVU5BU0FBSUFjUThRVWlDVVVOQVVFQUlRUWdDUzBBSkNJR1FRSnhEUVpCQUNBR1FRUnhJZ1lnQWhzTkJpQUdRUUFnQWhzTkFrRTBFQ1lpQWlBQUVLNFhJUXNnQlVIb0NHb2dBU2tDQ0RjREFDQUZJQUVwQWdBM0ErQUlJQUlnQ1RZQ0RDQUpMUUFrUVFGeFJRMEVJQU5GSUFBZ0JVRTRhaENlQlNJR0VGTWlCRUVLUjNKRkJFQURRQ0FBSUFZUVV5SUVRUXBHRFFBTEN5QUVRU2hHRFFNZ0FDQUVJQVlROFFZZ0N5QUNLQUlBS0FJRUVRVUFRUUFoQkF3R0N3SkFBa0FDUUNBR1FRRnJEZ0lCQWdBTElBRWdBQ2dDY0JEWEFTZ0NDQ0lDTmdJWUlBVWdBallDQUNBRVFZRUlRYlRBRVNBRkVDY2FJQUJCbUFFZ0FSRHhCa0VDSVFRTUJ3c2dBQ2dDY0JEWEFTZ0NBQVJBSUFBb0FuQWlBaUFCUVFGQnBMd1JRYmZBRVNBQ0tBSUFLQUlZRVFnQUN5QUJJQUFvQW5BUTF3RW9BZ1EyQWhnZ0JVRTRhaUFCUVFFUTBRY2dCU0FGUVRocUVCTTJBaEFnQkVHQkNFR1B1eEVnQlVFUWFoQW5HaUFGUVRocUVDQWFJQUJCbUFFZ0FSRHhCa0VDSVFRTUJnc2dBU0FBS0FKd0tBSVFJZ0kyQWhnZ0JTQUNOZ0lnSUFSQmdRaEJ0TUFSSUFWQklHb1FKeG9nQUVHWUFTQUJFUEVHUVFJaEJBd0ZDMEVBSVFRZ0FrVU5CQXRCREJBbUlnRWlBaUFBRUxnRUlBSkJrTUlSTmdJQUlBQWdBUkM1QkVFRElRUU1Bd3NnQWtFUWFpSU1JQUlvQWd3UUZoQzNCaUFDS0FJTUVCWUVRRUVBSVFRRFFFRVVFQ1lpQmhEcUNCb2dEQ0FFRUJFZ0JqWUNBQ0FFUVFGcUlnUWdBaWdDREJBV1NRMEFDd3NnQWtFZ2FpSU9JQUlvQWd3UUZoQzNCaUFDS0FJTUVCWUVRRUVBSVFRRFFDQU9JQVFRRVVFQU5nSUFJQVJCQVdvaUJDQUNLQUlNRUJaSkRRQUxDMEVBSVFZRFFDQUZRU2hxRUpNQkdnTkFJQUFnQVJCVElnUkJmWEZCZlVZRVFDQUFLQUp3SWdBZ0JVSGdDR3BCejhBUlFlWEFFU0FLSUFjUXBRSkJBQ0FBS0FJQUtBS29BUkVDQUF3RUN3SkFJQVJCQ2tjRVFDQUVRU05IRFFFZ0FDZ0NjQ0lBSUFGQm1NRVJRZVhBRVNBS0lBY1FwUUpCQUNBQUtBSUFLQUtvQVJFQ0FBd0ZDeUFERFFFZ0FDZ0NjQ0lBSUFWQjRBaHFRZlhBRVVIbHdCRWdDaUFIRUtVQ1FRQWdBQ2dDQUNnQ3FBRVJBZ0FNQkFzQ1FBSkFBa0FDUUFKQVFRQWdCRUVwUnlBQ0tBSU1FQlliRFFBQ1FBSkFJQVZCS0dvUWhBUkZCRUFnQkVGWWFpSUlRUVJMQkVBZ0JFSDdBRWNOQnd3R0N5QUlRUUZyRGdRQ0JnWURBUXNnQkVIN0FFWU5CQ0FFUVNoSERRVUxJQVZCS1RvQUp5QUZRU2hxSUFWQkoyb1FyUmNNQlFzZ0JpQUNLQUlNRUJaQkFVY2dEWEpxSVFZZ0JVRW9haERuQ0F3QkN5QUZRU2hxRU9jSUlBWkJBV29pQmlBQ0tBSU1FQlpKRFFVTEFrQUNRQ0FHSUFJb0Fnd1FGa2tFUUNBQUtBSndJZ1FnQlVIZ0NHcEJwOEVSUWVYQUVTQUtJQWNRcFFKQkFDQUVLQUlBS0FLb0FSRUNBQXdCQ3dKL0lBUkJmMGNFUUNBRVFTbEdEUUpCQUNFR0EwQkJBQ0FFUVNsSElnZ2dCa0VCVG5KRkRRSWFJQVlnQmtGL2FpQUVRZjBBUjBFQUlBZ2JHeUVHSUFBZ0FSQlRJZ1JCK3dCSFFRQWdCRUVvUnh0RkJFQWdCa0VCYWlFR0N5QUVRWDlIRFFBTEMwRUJDeUVJSUFBb0FuQWhCQ0FLSUFjUXBRSWhCaUFFS0FJQUtBS29BU0VISUFnTkFTQUVJQVZCNEFocVFiM0JFVUhsd0JFZ0JrRUFJQWNSQWdBTElBSW9BZ3dRRmtVTkJrRUFJUVFEUUNBQUlBd2dCQkFSS0FJQUlBRWdBeENzRnlFR0lBNGdCQkFSSUFZMkFnQWdCRUVCYWlJRUlBSW9BZ3dRRmtrTkFBc01CZ3NnQkNBRlFlQUlha0hQd0JGQjVjQVJJQVpCQUNBSEVRSUFJQXNnQWlnQ0FDZ0NCQkVGQUVFQklRUU1Cd3NnQUNnQ2NCb0xJQVZCS0dvUWhBUkZEUUFnQkNBRktBSXNRWDlxTEFBQVJ3MEFJQVVvQWl4QmYyb2hEU0FGUVNocUlnZ1FoQVFoRHlBSUlBMFFuUTBnQ0NBUEVPVVdDeUFNSUFZUUVTZ0NBQ0FFSUFFUTh3WkJBU0VOREFBQUN3QUFDd0FMSUFBZ0FoQzVCRUVDSVFRZ0NTQUpMUUFrUVFKeU9nQWtJQWxCRUdvUWdRY01BUXNnQ3lBQ0tBSUFLQUlFRVFVQUlBVkJLR29RNXdoQkFTRUVDeUFGUWZBSWFpUUFJQVFMaEFNQkEzOENRQ0FBSUFBb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FLTUFSRUFBQVJBUVFBaEFpQUFLQUpvUVlOL2FpSUFRVGhQRFFGQ2c1akFnWUNBZ1BnQUlBQ3RpS2RCQVhFUEN5QUFJQUFvQWdBb0FsQVJBQUFpQVFSQVFRQWhBaUFCSUFFb0FnQW9Bc0FCRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9Bb3dCRVFBQURRRWdBU0FCS0FJQUtBTEVBUkVBQUNJQklBRW9BZ0FvQW5nUkFBQWlBU0FCS0FJQUtBS01BUkVBQUEwQkN3SkFJQUFvQW1oQmVtb2lBRUd1QVVzTkFFRUJJUUlnQUVFQ2F3Nm1BUUFCQUFBQUFBQUJBUUVCQVFFQkFRQUFBQUVCQVFFQkFRRUJBQUFBQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFBQUFBQkFRRUJBUUVCQVFFQkFRRUJBUUFBQUFBQUFBRUJBUUVCQVFFQkFRRUJBUUVCQUFBQUFBQUFBUUVCQVFFQkFRRUJBUUVCQVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQVFFQkFRRUJBUUVCQUFBQkFRRUJBQUVBQUFBQkMwRUFJUUlMSUFJTEVRQWdBQkNUQVJvZ0FFRUFOZ0lRSUFBTEt3RUJmeUFBSUFFUXpnTWlBa1VFUUNBQUlBQW9BaXdpQWtFQmFqWUNMQ0FBSUFFZ0FoRFZDQXNnQWdzS0FDQUFFSm9DR2lBQUMzZ0JBWDhDUUNBQlJRMEFJQUVnQVNnQ0FDZ0NIQkVBQUFSQUlBQWdBU0FCS0FJQUtBSWNFUUFBRU1JV0R3c2dBU0FCS0FJQUtBSWdFUUFBQkVBZ0FDQUJJQUVvQWdBb0FpQVJBQUFRdnhZUEN5QUJJQUVvQWdBb0FoZ1JBQUJGRFFBZ0FDQUJJQUVvQWdBb0FoZ1JBQUFRdkJZaEFnc2dBZ3Q2QVFKL1FmZ0FFRVlpQkNJRklBQVE4QVlnQlVHOGxBazJBZ0FnQlNFQUlBTW9BZ2hGQkVBZ0F5QUJJQUVvQWdBb0FnQVJBQUFpQlNrQ0FEY0NBQ0FESUFVcEFnZzNBZ2dMSUFRZ0F5QUVLQUlBS0FJRUVRRUFJQUFnQVNBRUtBSUFLQUs0QVJFQkFDQUFJQUlnQkNnQ0FDZ0N2QUVSQVFBZ0FBc3BBQ0FCQkVBZ0FDQUJLQUlBRU84SUlBQWdBU2dDQkJEdkNDQUFFTmNDR2lBQlFSQnFFTElDQ3dzc0FRRi9JQUFnQUNnQ0FDZ0NWQkVBQUJEeEZ5SUJJQUFRaGdRaUFHcEJmMnBCQUNBQWEzRWdBU0FBR3d0UEFRRi9Jd0JCNEFCcklnQWtBQ0FBUWRnQWFrRUJFUFVCSWdOQkFCQVBJQUVRV2lBRElBQkJDMEVDUVFGQkFFRUFRUUFRUlNJRElBSkJBUkRRQWlFQ0lBTVFOUm9nQUVIZ0FHb2tBQ0FDQ3hZQUlBRWdBaWtDQURjQ0FDQUJJQUlwQWdnM0FnZ0xTd0VCZnlNQVFSQnJJZ0lrQUFKQUlBQW9BZ1FnQUJBYktBSUFSd1JBSUFBUUd5QUFLQUlFSUFFUXl3MGdBQ0FBS0FJRVFSaHFOZ0lFREFFTElBQWdBUkQ2RndzZ0FrRVFhaVFBQzRBQkFBSkFJQUFnQVVFTWJHcEJvQVpxSWdFUWtnSUVRRUVBSVFBRFFDQUNJQUVnQUJCckVQc1hEUUlDUUNBQ0lBRWdBQkJyRUprRlJRMEFJQU1nQXlnQ0FDZ0NIQkVBQUNBQklBQVFheWdDRUVZTkFDQUVRUUU2QUFBTUF3c2dBRUVCYWlJQUlBRVFrZ0pKRFFBTEMwRi9Ed3NnQWlBQklBQVFheENtQVNnQ0FBc3NBUUYrSUFBZ0FTa0NBRGNDQUNBQ0tRSUFJUVVnQUNBRU5nSVVJQUFnQXpZQ0VDQUFJQVUzQWdnZ0FBc05BQ0FBTFFBSVFRUnhRUUoyQ3prQkFYOGdBQ0FCUVJScUlnSVF5Z0VnQVJDL0JDQUNFQnN0QUFkQkIzRkhCRUFnQUVIOGt4RVFrZ0VnQUNBQkVMOEVFSjRIRUpJQkN3c2dBUUYvSUFBb0FnQWhBU0FBUVFBMkFnQWdBUVJBSUFBUUpTQUJFTFVZQ3dzMkFRRi9RWXdCRUVZaUJpQUFJQUVnQWhEVUdDRUFJQVlnQlNBR0tBSUFLQUlFRVFFQUlBQWdBeERRRFNBQUlBUTJBb2dCSUFBTEpnQWdBQ0FBS0FJRUVPY1lJQUFvQWdBRVFDQUFLQUlRR2lBQUtBSUFHaUFBRUlzSkdnc0xhUUVDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWdBUkNqRGlFRkN5QUFJQVUyQWdBZ0FDQUZJQUpCREd4cUlnSTJBZ2dnQUNBQ05nSUVJQUFRSXlBRklBRkJER3hxTmdJQUlBUkJFR29rQUNBQUMzY0FJQUJCMkpJUE5nSUFJQUJCQURZQ1VDQUFRZ0EzQWp3Z0FFSUFOd0pFSUFBZ0FDZ0NCRUdBZ0lCK2NTQUVRUWgwUVlBZWNTQUJRZjhCY1hKeU5nSUVJQUJCekFCcUVJb0RJQUJCQ0dvUWlRTWdBQ0FEUVJoMFFZQ0FnRGh4SUFKQlAzRnlyU0FBS1FJTVFzRC8vMGVEaERjQ0RDQUFDeEFBSUFBb0FnQWdBU2dDQUd0QkRHMExFZ0FnQUJBaktBSUFJQUFvQWdCclFRUjFDeWtBSUFFRVFDQUFJQUVvQWdBUS93Z2dBQ0FCS0FJRUVQOElJQUFRMXdJYUlBRkJFR29Rc2dJTEN3b0FJQUJCQVRvQWtBRUxFd0FnQUNnQ0JDQUFLQUlBS0FJQWNVRUFSd3NOQUNBQUxRQUNRUUp4UVFGMkN3b0FJQUF0QUFKQkFYRUxCZ0FRZ2dFQUN4SUFJQUVRRXlBQkVCTWdBUkFmYWhDekdRc2dBUUYvSUFCQm5Nc1BOZ0lBSUFBb0FnUWlBUVJBSUFFUW1nY1FLZ3NnQUFza0FDQUJCRUFnQUNBQktBSUFFSWNKSUFBZ0FTZ0NCQkNIQ1NBQUVDVWFJQUVRS2dzTExBQWdBUVJBSUFBZ0FTZ0NBQkNJQ1NBQUlBRW9BZ1FRaUFrZ0FCQWxHaUFCUVJCcUVMSUNJQUVRS2dzTExBQWdBUVJBSUFBZ0FTZ0NBQkNKQ1NBQUlBRW9BZ1FRaVFrZ0FCQWxHaUFCUVJCcUVQRU5JQUVRS2dzTFVBRUJmeUFBRU1VRUlBQVFHeUFBS0FJQUlBQW9BZ1FnQVVFRWFpSUNFSVVHSUFBZ0FoQXVJQUJCQkdvZ0FVRUlhaEF1SUFBUUd5QUJFQ01RTGlBQklBRW9BZ1EyQWdBZ0FDQUFFQllRclFVTEVnQWdBQkFqS0FJQUlBQW9BZ0JyUVF4dEN5MEJBWDhnQUNBQUtBSUVFTVlaSUFBb0FnQUVRQ0FBS0FJUUdpQUFLQUlBSVFFZ0FCQ0xDUm9nQVJBcUN3dUNBUUVEZnlNQVFSQnJJZ1FrQUNBQUVJOEhJQUpQQkVBQ1FDQUNRUXBOQkVBZ0FDQUNFTlFCSUFBaEF3d0JDeUFDRU9RQ0lRTWdBQ0FBRUNNZ0EwRUJhaUlGRVBvRklnTVE0UUVnQUNBRkVPa0JJQUFnQWhDOEFRc2dBeUFCSUFJUTZBRWdCRUVBT2dBUElBSWdBMm9nQkVFUGFoQ1VBU0FFUVJCcUpBQVBDeEJ1QUFzZ0FRRi9JQUFvQWdBaEFTQUFRUUEyQWdBZ0FRUkFJQUVFUUNBQkVDb0xDd3NPQUNBQUVLUUZJQUFnQVRZQ0JBdFNBUUYvSUFFUUZnUkFBMEFnQUNBQklBSVFFUkNBRGlBQUlBQW9BaFJCQVdvMkFoUWdBa0VCYWlJQ0lBRVFGa2tOQUFzTElBQWdBU2dDRERZQ0RDQUFJQUV0QUJBNkFCQWdBQ0FCTFFBUk9nQVJDdzhBSUFBZ0FDZ0NCRUY4YWhDV0J3c0tBQ0FBUVFFNkFKMEVDNmNCQVFKL0lBQkI5TG9QTmdJQUlBQW9BdmdCSWdFRVFDQUJFSllKRUNvTElBQW9BdndCSWdFRVFDQUJJQUVvQWdBb0FnUVJCUUFMUVFBaEFRTkFBa0FnQUNBQmFpMEE2QUZGRFFBZ0FDQUJRUUowYWlnQ3NBRWlBa1VOQUNBQ0VKb0pFQ29MSUFGQkFXb2lBVUVPUncwQUN5QUFLQUlFSWdFRVFDQUJFSm9IRUNvTElBQkJzQUZxSVFFZ0FFRUlhaUVDQTBBZ0FVRjBhaUlCRUpZT0lBRWdBa2NOQUFzZ0FBczNBUUYvSXdCQkVHc2lBaVFBSUFBUStBVkJvOGdQRUxZQ0dpQUNJQUVRNndjZ0FCRDRCU0FDRU1FRUlBSVFJQm9nQWtFUWFpUUFDd29BSUFBZ0FVRUNkR29MRVFBZ0FFRVFhaERtQWlBQUVPWUNJQUFMWVFFQmZ5QUFRZVM2RHpZQ0FDQUFLQUlVSWdFRVFDQUJFSllKRUNvTElBQW9BZ3dpQVFSQUlBRWdBU2dDQUNnQ0JCRUZBQXNnQUNnQ0VDSUJCRUFnQVJDYUNSQXFDeUFBS0FJRUlnRUVRQ0FCRUpvSEVDb0xJQUJCTEdvUUlCb2dBQXNSQUNBQUVKa09JQUJCRUdvUW1RNGdBQXNKQUNBQUVPY1pJQUFMaWdJQkFuOGdBRUdBQjJvUW1nNGdBRUgwQm1vaUFTQUJFRHdRaVFrZ0FFSG9CbW9RSUJvZ0FFSGNCbW9RSUJvZ0FFSFFCbW9pQVJEekRTQUFRYUFHYWlFQ0EwQWdBVUYwYWlJQkVKVUhJQUVReEJrZ0FTQUNSdzBBQ3lBQVFaUUdhaUlCRVBjRklBRW9BZ0FFUUNBQklBRW9BZ0FRdnhrZ0FSQWJHaUFCS0FJQUlRSWdBUkM1QXhvZ0FoQXFDeUFBUVlBR2FoREFCQ0FBUWVnRmFoRFJBeUFBUWRRRmFoRHpEU0FBUWNBRmFoQ2FEaUFBUWZnRWFpSUNRY2dBYWlFQkEwQWdBVUYwYWlJQklBRVFQQkNIQ1NBQklBSkhEUUFMSUFCQndBUnFJZ0VRbFFjZ0FSRERHU0FBUWNRQWFoRHlEU0FBUVJ4cUVNSVpJQUJCRUdvUUlCb2dBRUVFYWhBZ0dpQUFDNlVFQVFGL0l3QkJFR3NpQkNRQUlBQWdBVFlDQUNBQVFRUnFFRTRhSUFCQkVHb1FUaG9nQUVFY2FoQ1pDUm9nQUNBQ05nSXNJQUFnQXpZQ0tDQUFRVEJxRUp3T0dpQUFRUUEyQWtBZ0FFSEVBR29RblFRZ0FFRUFPZ0RjQXlBQVFnQTNBdFFESUFCQ0FEY0N6QU1nQUVFQU9nQzhCQ0FBUVFBMkFyZ0VJQUJCQURvQXRBUWdBRUVBTmdLd0JDQUFRbjgzQW93RUlBQkJBRG9BaUFRZ0FFRUFOZ0tFQkNBQVFZNjhEellDZ0FRZ0FFR0l2QTgyQXZ3RElBQkNBRGNDbEFRZ0FFRUFPd0djQkNBQVFnQTNBcUFFSUFCQ0FEY0Fwd1FnQUVIQUJHb1FNQ0VDSUFCQy8vLy8vdzgzQXRnRUlBQkNBRGNDMEFRZ0FFRUFPZ0RPQkNBQVFRQTdBY3dFSUFCQitBUnFJZ0ZCeUFCcUlRTURRQ0FCRUprSFFReHFJZ0VnQTBjTkFBc2dBRUhBQldvUU1Cb2dBRUVBTmdEUEJTQUFRUUEyQXN3RklBQkIxQVZxRUowRUlBQkJBRFlBNHdVZ0FFRUFOZ0xnQlNBQVFlZ0ZhaENXQVJvZ0FFRUFOZ0w4QlNBQVFZQUdhaENXQVJvZ0FFR1VCbW9RTUJvZ0FFSFFCbW9oQVNBQVFhQUdhaUVEQTBBZ0F4QXdRUXhxSWdNZ0FVY05BQXNnQUVIUUJtb1FuUVFnQUVIY0Jtb1FUaG9nQUVIb0Jtb1FUaG9nQUVIMEJtb1FtUWNhSUFCQmdBZHFFREFhSUFCQmZ6WUMrQU1nQUVKL053THdBeUFBUVFBNkFPNERJQUJCQURzQjdBTWdBRUVCTmdMb0F5QUFRb0dBZ0lBUU53TGdBeUFDRVBNWklBUkJBRFlDRENBQVFlQUVha0VHSUFSQkRHb1ExUmtnQkVFUWFpUUFJQUFMS3dBZ0FCQVdJQUFvQWhSTEJFQURRQ0FBUVFBUXd3UWdBQkFXSUFBb0FoUkxEUUFMQ3lBQUVEWWdBQXMvQVFGL0l3QkJFR3NpQVNRQUlBRWdBQ2dDRURZQ0NDQUJJQUFvQWhnMkFnd2dBRUVjYWlBQlFRaHFFSVFCSUFBZ0FDZ0NBRFlDRUNBQlFSQnFKQUFMUUFFQmZ5QUNLQUlBQkVBRFFDQUNJQUFvQWdBb0FnQWdBQ2dDQkNnQ0FCRDZHUVJBSUFFZ0FoRDFHUXNnQWlnQ0dDRURJQUpCR0dvaEFpQUREUUFMQ3dzTUFDQUFLQUlBUVNRUWxBSUxJQUVCZnlBQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQUVDVWdBUkNGR2dzTGtnRUJBMzhnQUJBOElRTWdBQkFsSVFVQ1FDQURCRUFDUUFOQUFrQUNmeUFBRUNNZ0FpQURRUkJxSWdRUWp3UUVRQ0FES0FJQVJRMEdJQU1NQVFzZ0FCQWpJQVFnQWhDUEJFVU5BeUFEUVFScUlRUWdBeWdDQkVVTkFTQUVJZ01MSVFVZ0F5Z0NBQ0VEREFFTEN5QUJJQU0yQWdBZ0JBOExJQUVnQXpZQ0FDQUZEd3NnQUJBbElRTUxJQUVnQXpZQ0FDQURDdzhBSUFBUUV5QUFFQjhnQVJDSkdnc01BQ0FBSUFFUW1BSkJBWE1MTEFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ0FpQUNFSWNhSUFBZ0EwRUlhaERVQkNBRFFSQnFKQUFMRmdBZ0FDQUJFUDhCR2lBQUlBSW9BZ0EyQWhBZ0FBc3NBQ0FBS0FJQUdpQUFLQUlBSUFBUTFnSkJBM1JxR2lBQUtBSUFHaUFBS0FJQUlBQVFtZ0ZCQTNScUdnc0xBQ0FBSUFFZ0FoQzJEZ3RMQVFKL0l3QkJFR3NpQXlRQUlBTkJDR29nQWhDeENTQUFJQU5CQ0dvUXNBa2lBQ0FCSUFFUW9BRWlBU0FCSUFJUUh5SUVhaEN2Q1NBQUlBSVFFeUFFRUtBSEdpQURRUkJxSkFBTE53RUJmMEVCSVFFQ1FDQUFFTTBFRFFBZ0FCQ0dBdzBBSUFBUWxnSU5BQ0FBRU9rQ0RRQWdBQkNyQlEwQUlBQVEyUU1oQVFzZ0FRdk9BZ0VEZnlNQVFTQnJJZ01rQUNBRFFSQnFFTlVCSVFJQ1FDQUJFTWdFQkVBZ0FrSGluUThRRWhvZ0FDQUNFTEFEREFFTElBRXRBQUJCZldvaUJFSC9BWEZCQ0UwRVFDQUNJQVJCR0hSQkdIVkJBblJCcUxVUGFpZ0NBQkFTR2dzZ0FnSi9JQUVRcUFVRVFFR0luZzlCa0o0UElBRVFwQWNiREFFTFFlS2REMEdXbmc4Z0FSQ29BaHNMRUJJYUlBRVFwd1VFUUNBQ1FaNmVEeEFTR2lBQUlBSVFzQU1NQVFzZ0FSQ0FCZ1JBSUFOQnFwNFBJQUlRcUFrZ0FDQURRYTJlRHhEWUF5QURFQmthREFFTElBRXRBQUZCZjJvaUJFSC9BWEZCQmswRVFDQUNJQVJCR0hSQkdIVkJBblJCekxVUGFpZ0NBQkFTR2dzZ0FSQ0tBUVJBSUFKQjRKNFBFQklhQ3lBQktBSUFJZ1JCZ0lBRWNRUi9JQUpCNDU0UEVCSWFJQUVvQWdBRklBUUxRWUNBQ0hFRVFDQUNRZW1lRHhBU0dnc2dBQ0FDRUxBREN5QUNFQmthSUFOQklHb2tBQXNUQUNBQUtBSWdRWUNBNEE5eFFZQ0E0QTlIQ3hvQVFkK2FEMEhzbWc5Qjlwb1BJQUJCQVVZYklBQkJBa1liQ3hNQUlBQVE2Z0VnQUVFTWFpQUJFSzBDSUFBTC93RUJBMzhqQUVFUWF5SUlKQUFnQUJDUEJ5SUpJQUZCZjNOcUlBSlBCRUFnQUJBVElRb0NmeUFKUVFGMlFYQnFJQUZMQkVBZ0NDQUJRUUYwTmdJSUlBZ2dBU0FDYWpZQ0RDQUlRUXhxSUFoQkNHb1FVaWdDQUJEa0Fnd0JDeUFKUVg5cUN5RUNJQUFRSXlBQ1FRRnFJZ2tRK2dVaEFpQUVCRUFnQWlBS0lBUVE2QUVMSUFZRVFDQUNJQVJxSUFjZ0JoRG9BUXNnQXlBRmF5SURJQVJySWdjRVFDQUNJQVJxSUFacUlBUWdDbW9nQldvZ0J4RG9BUXNnQVVFS1J3UkFJQUFRSXhvTElBQWdBaERoQVNBQUlBa1E2UUVnQUNBRElBWnFJZ0FRdkFFZ0NFRUFPZ0FISUFBZ0Ftb2dDRUVIYWhDVUFTQUlRUkJxSkFBUEN4QnVBQXVDQVFFQ2Z5TUFRUkJySWdRa0FDQUFFSThISUFOUEJFQUNRQ0FEUVFwTkJFQWdBQ0FDRU5RQklBQWhBd3dCQ3lBREVPUUNJUU1nQUNBQUVDTWdBMEVCYWlJRkVQb0ZJZ01RNFFFZ0FDQUZFT2tCSUFBZ0FoQzhBUXNnQXlBQklBSVE2QUVnQkVFQU9nQVBJQUlnQTJvZ0JFRVBhaENVQVNBRVFSQnFKQUFQQ3hCdUFBc1JBQ0FBSUFFUXJRa2FJQUFRNmdFZ0FBc0xBQ0FBSUFFUUl4Qm5HZ3UwQVFFRWZ3SkFBa0FnQVMwQUFFRWlSdzBBSUFFaEJBTkFBa0FnQkVFQmFpRUZBa0FnQkN3QUFTSURRZHNBVEFSQUlBTkJJa1lOQWlBRFFTZEdEUVFnQTBFc1J3MEJEQVFMSUFOQjNBQkhEUUJCM0FBaEF5QUVMUUFDUWR3QVJ3MERJQVJCQW1vaEJRc2dBQVJBSUFBZ0Ftb2dBem9BQUFzZ0FrRUJhaUVDSUFVaEJBd0JDd3NnQUVVTkFTQUFJQUpxUVFBNkFBQWdBZzhMSUFCRkJFQWdBUkRiRGc4TElBQWdBUkNFR2lBQWF5RUNDeUFDQ3lBQUlBRWdBaWtDQURjQ0FDQUJJQUlvQWhBMkFoQWdBU0FDS1FJSU53SUlDMkVCQTM4akFFRVFheUlDSkFBZ0FpQUFJQUVRc0FVMkFnZ2dBaUFBRUg0MkFnQkJBQ0VBQWtBZ0FrRUlhaUFDRUlnQlJRMEFJQUpCQ0dvUVZ5SURFUDBGSWdSQmYwWU5BQ0FESUFRZ0FSQ25EZzBBUVFFaEFBc2dBa0VRYWlRQUlBQUxJQUFnQUVFQk9nQVFJQUJCQURZQ0RDQUFJQUUyQWdRZ0FFR3dsQTgyQWdBTERnQWdBQ0FCRUJNUXdnRTJBa1FMWEFFQ2Z5TUFRUkJySWdJa0FFSHBzQTlCQ1VFQlFZanhFU2dDQUNJREVQY0NHaUFBSUFGTkJFQURRQ0FDSUFBdUFRQTJBZ0FnQTBIenNBOGdBaERNQWlBQVFRSnFJZ0FnQVUwTkFBc0xRUW9nQXhEQUF5QUNRUkJxSkFBTENRQWdBRUVBRU40T0N3a0FJQUJCQURvQWNBc29BUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNDQ0FBSUFJb0FnZ29BZ0EyQWdBZ0FrRVFhaVFBQ3dvQUlBQkI0UUUyQWdBTEx3RUJmeU1BUVJCcklnVWtBQ0FGSUFRMkFnZ2dCU0FETmdJTUlBQWdBU0FDRVBjT0lRQWdCVUVRYWlRQUlBQUxJQUVCZnlBQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQUVDVWdBUkRVR2dzTEZnQWdBUkRNQVNFQklBSVF6QUVhSUFBZ0FSRDBEZ3NLQUNBQVFkOEJOZ0lBQzBVQkFYOGpBRUVRYXlJREpBQWdBUkFsSWdFZ0FFRVVFQ1lnQTBFSWFpQUJRUUFRd3dFUWtRRWlBQ2dDQUVFUWFpQUNFUGtCSUFBUUpVRUJPZ0FFSUFOQkVHb2tBQXU5QWdFRmZ5QUFFQ1VhQWtBZ0FRUkFJQUFnQVJDQ0FoQ3JBaUFBRUNVZ0FUWUNBQU5BSUFBZ0F4QVJRUUEyQWdBZ0EwRUJhaUlESUFGSERRQUxJQUJCQ0dvaUFpZ0NBQ0lFUlEwQklBQWdCQ2dDQkNBQkVEUWlCaEFSSUFJMkFnQWdCQ2dDQUNJQ1JRMEJBMEFDUUNBR0lBSW9BZ1FnQVJBMElnVkdCRUFnQWlFRURBRUxBa0FDUUNBQUlBVVFFU2dDQUFSQUlBSWhBeUFDS0FJQVJRMENJQUFRUXlBQ1FRaHFJQUlvQWdCQkNHb1Fpd01OQVF3Q0N5QUFJQVVRRVNBRU5nSUFJQUloQkNBRklRWU1BZ3NEUUNBREtBSUFJZ01vQWdCRkRRRWdBQkJESUFKQkNHb2dBeWdDQUVFSWFoQ0xBdzBBQ3dzZ0JDQURLQUlBTmdJQUlBTWdBQ0FGRUJFb0FnQW9BZ0EyQWdBZ0FDQUZFQkVvQWdBZ0FqWUNBQXNnQkNnQ0FDSUNEUUFMREFFTElBQkJBQkNyQWlBQUVDVkJBRFlDQUFzTENnQWdBU0FBYTBFQ2RRc3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkE3R2lBQ1FXeHFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBc2dBUUYvSUFBb0FnQWhBU0FBUVFBMkFnQWdBUVJBSUFBUUpTQUJFSkVQQ3d0R0FRRi9Jd0JCRUdzaUF5UUFJQUVRSlNFQklBQkJJQkFtSUFOQkNHb2dBVUVBRU1NQkVKRUJJZ0FvQWdCQkVHb2dBaEQvQVJvZ0FCQWxRUUU2QUFRZ0EwRVFhaVFBQzBNQkFuOGdBQkRmQkVVRVFDQUFFRHNhSUFBb0FnUWlBU0FBSWdJb0FnQVE0QVFnQUJBYlFRQTJBZ0FnQUNBQlJ3UkFBMEFnQWlBQktBSUVJZ0ZIRFFBTEN3c0xCQUFnQVFzWkFDQUFJQUZIQkVBZ0FDQUJLQUlBSUFFb0FnUVFoQThMQ3dvQUlBQWdBVFlDMUFRTFRRRUJmeUFBSUFFUTNna2hBaUFBUVFNUUVTZ0NBQ0FDSUFBdEFCRVFwZ2NhSUFFZ0FTZ0NBQ2dDSkJFQUFBUi9JQUlGSUFCQkF4QVJLQUlBSUFFZ0FTZ0NBQ2dDREJFQUFCQ01DZ3NMeVFVQkJIOGpBRUhBQVdzaUJTUUFBa0FnQUNnQ1RDQURRUUJCQUJDc0FTSUVSUVJBSUFJdEFDWUVRQ0FGSUFWQjJBQnFJQVZCc0FGcUVKTUJJZ1FnQXlBQ0VNOEpJZ1lnQXhET0NTRUNRWUFCRUVZaUJ5QURJQUpCQVJEdEFob2dBQ2dDVENBSEVPd0NSUVJBSUFBZ0FVSG9vUXNnQUNnQ3RBVVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWhBMUdpQUdFRFVhSUFRUXBBNGdCQkNrRHd3Q0N5QUFJQUZCa2FvTElBTVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBRUlBUW9BZ0FvQWh3UkFBQUVRQ0FBSUFGQnRLb0xJQU1RRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN3SkFBa0FnQWhEckFRMEFJQUlReFFJTkFDQUNFSmtDRFFBZ0FoRHJBZzBBSUFJb0FnUkJ2NENBT0hGRkRRRUxJQUFnQVVIV3Fnc2dBeEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBUWdCQ2dDQUNnQ1VCRUFBQVJBSUFBb0Frd2dCQkRLQ1NFRUN5QUNMUUFIUVFoeEJFQWdBQ2dDS0NBREVMUUJCRUFnQUNBQlFjT3JDMEhDcUF0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBUWdCQ2dDQUNnQ05CRUFBQ0lDSUFJb0FnQW9BaWdSQUFBaUFpQUNLUUlFUW9DQWdNQUFoRGNDQkNBQUlBRWdCQ0FFS0FJQUtBSXdFUUFBSWdBZ0FDZ0NBQ2dDTEJFQUFCRGtDUXdCQ3lBQ0VMY0RCRUFnQUNnQ0tDQURFTFFCQkVBZ0FDQUJRY09yQzBITDFncEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQVFnQkNnQ0FDZ0NOQkVBQUNJQUlBQW9BZ0FvQWlnUkFBQVF4UWNNQVFzZ0FpZ0NCRUYvVEFSQUlBUWdCQ2dDQUNnQ05CRUFBQ0lBSUFBb0FnQW9BaWdSQUFBUXFRTWdBaENwQlVVTkFTQUNLQUlnSVFBZ0JDQUVLQUlBS0FJMEVRQUFJZ0VnQVNnQ0FDZ0NLQkVBQUNJQklBRW9BaUJCLzRGZ2NTQUFRWUQrSDNGeU5nSWdEQUVMSUFBZ0FVSHBxd3RCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcVFCRVFJQUN5QUZRY0FCYWlRQUM0TURBUWQvSXdCQklHc2lCQ1FBSUFBZ0FSQ1BBU0FCS0FJOEJFQkJFQkJHSWdVUXN3TWhBeUFBSUFVMkFqd2dBeUFCS0FJOEVQOEZDeUFCS0FKUUJFQkJFQkJHSWdVUXN3TWhBeUFBSUFVMkFsQWdBeUFCS0FKUUVQOEZDd0pBSUFFZ0FTZ0NBQ2dDaUFFUkFBQkZEUUFnQVNnQ1FFVU5BQ0FFSUFJZ0FVRkFheUlGRUl3UE5nSVlJQVFnQWhCK05nSUFJQVJCR0dvZ0JCQ0lBUVJBSUFBZ0JFRVlhaEJYS0FJRU5nSkFEQUVMUVJBUVJpSURFSk1CR2lBQUlBTTJBa0FnQWlBRkVJc1BJQU0yQWdBZ0JTZ0NBQkEzUlEwQUlBUkJCSElpQnlFSVFRQWhBd05BSUFjZ0JTZ0NBQ0FERURnaUJpa0NCRGNDQUNBSUlBWXBBZ3czQWdoQjFBQVFSaUlHUVFCQkFFRUJRUUJCQUVFQUVFVWhDU0FFSUFZMkFnQWdDU0FGS0FJQUlBTVFPQ2dDQUNBQ0VNd0pJQUFvQWtBZ0JCQ3BCeUFEUVFGcUlnTWdCU2dDQUJBM1NRMEFDd3NnQVNnQ1JDSUNCRUFnQUNBQ0VCTVF3Z0UyQWtRTElBRW9Ba2dpQVFSQUlBQWdBUkFURU1JQk5nSklDeUFFUVNCcUpBQUxJQUVCZjBIVUFCQkdRUUJCQUVFQlFRQkJBRUVBRUVVaUFTQUFFSWdHSUFFTFl3QWdBRUhZa2c4MkFnQWdBRUlBTndJOElBQkNBRGNDUkNBQUlBQW9BZ1JCZ0lDQWYzRkJrZ0p5TmdJRUlBQWdBaEFURU1JQk5nSklJQUJCQ0dvUWlRTWdBQ0FBS1FJTVFrQ0RJQUVwQWd4Q1A0T0VOd0lNSUFBZ0FSRE5DVFlDUUNBQUMxNEFJQUJCMkpJUE5nSUFJQUFnQUNnQ0JFR0FnSUIrY1VHUUFuSTJBZ1FnQUVFSWFpQURRVFFRUFJvZ0FFRUFOZ0pRSUFCQkFEWUNSQ0FBSUFFMkFrQWdBRUVBTmdJOElBQkJ6QUJxRUlvRElBQWdBaEFURU1JQk5nSklJQUFMWFFFQmZ5TUFRUkJySWdZa0FDQUJFQnNpQVNBQVFSZ1FKaUFHUVFocUlBRkJBQkREQVJDUkFTSUFLQUlBUVFocUlBTWdCQ0FGRUlVUElBQVFKVUVCT2dBRUlBQW9BZ0FnQWpZQ0JDQUFLQUlBUVFBMkFnQWdCa0VRYWlRQUN3Y0FJQUFvQWp3THRnRUJBMzhqQUVFd2F5SURKQUFnQTBFWWFpQUFJQU5CSUdvZ0FTQUJFUDBGSWdSQkFXb2dBMEVZYWhDN0N4Q1FEeUlCRUxBRkVOd0RJUVVnQVNBRUVGQkJLVG9BQUNBRFFSQnFJQUFnQVJDUER4RGNBeUVBSUFNZ0JTZ0NBRFlDQ0NBRFFRaHFJQUFRaUFFRVFBTkFJQU1nQTBFSWFoQlhLQUlRSWdRZ0JDZ0NBQ2dDSEJFQUFEWUNCQ0FDSUFOQkJHb1FzZ1FnQTBFSWFoQ3BBU0FEUVFocUlBQVFpQUVOQUFzTElBRVFHUm9nQTBFd2FpUUFDd2NBSUFBb0FnUUxIQUFnQUVFUFRRUkFJQUJCQW5SQnNNa0xhaWdDQUE4TFFlbmdDUXNoQUNBQVFYOXFJZ0JCQTAwRVFDQUFRUUowUVlqSkMyb29BZ0FQQzBIWXV3c0x4ZzhCQW44Z0F4RHNBU0FERUpNRElBTVE3QUVRekFvZ0EwRUNFS3dKRUNzRVFDQUNJQUlwQWd4Qy8vLy8vLy8vLzBlRFFvQ0FnSUNBZ0lBUWhEY0NEQThMSUFOQkFSQ3NDUkFyQkVBZ0FpQUNLUUlNUXYvLy8vLy8vLzlIZzBLQWdJQ0FnSUNBQ0lRM0Fnd1BDeUFEUVFRUXFnVVFLd1JBSUFBb0FoZ0VRQ0FBSUFGQm9PUUtJQUFvQWdBb0FwQUJFUVlBQ3lBQ0lBSXBBZ3hDLy8vLy8vLy8vNzk0ZzBLQWdJQ0FnSUNBZ0FLRU53SU1Ed3NnQTBFQkVLb0ZFQ3NFUUNBQUtBSVlCRUFnQUNBQlFhZmtDaUFBS0FJQUtBS1FBUkVHQUFzZ0FpQUNLUUlNUXYvLy8vLy8vLysvZUlOQ2dJQ0FnSUNBZ01BQWhEY0NEQThMSUFOQkFoQ3FCUkFyQkVBZ0FpQUNLUUlNUXYvLy8vLy8vLysvZUlOQ2dJQ0FnSUNBZ0lBQmhEY0NEQThMSUFOQkF4Q3FCUkFyQkVBZ0FDQUJRUTVCcnVRS0VFb2dBQ0FCUVFaQnJnTkJBRUd1NUFvUUtDQUFJQUZCQ0VHMkFrRUFRYTdrQ2hBb0lBSWdBaWtDREVMLy8vLy8vLy8vdjNpRFFvQ0FnSUNBZ0lEQUFZUTNBZ3dQQ3dKQUFrQWdBMEVGRUtvRkVDdEZCRUJCQVNFRUEwQWdBeUFFRU1zRUVDc0VRQ0FFUVhscVFROUpJQVJCSmt0eVJVRUFJQVJCWkdwQkJFc2JSUVJBSUFBZ0FVRUhRZFRrQ2hCS0N5QUFJQUZCQjBHa0EwSHM1QXBCaStVS0VDZ2dBQ0FCUVFoQnRnSkI3T1FLUVl2bENoQW9JQUlnQkRvQUxBOExJQVJCQVdvaUJFRXRSdzBBQ3lBRFFaemxDaEFyQkVBZ0FDQUJRWnpsQ2lBQUtBSUFLQUtZQVJFR0FDQUNRUUU2QUMwUEN5QURRYXJsQ2hBckJFQWdBQ0FCUWFybENpQUFLQUlBS0FLWUFSRUdBQ0FBSUFGQkFVRzg1UXBCcXVVS0lBQW9BZ0FvQWhRUkNBQWdBa0VCT2dBdUlBQW9BaWdRbVFZZ0FDZ0NLRUVCT2dEbUJROExBa0FnQUNnQ0ZDSUVRUTFMUVFFZ0JIUkJqTUFBY1VWeURRQWdBMEVGRUtzQkVDc0VRQ0FDUVFVMkFqd1BDd0pBSUFBb0FoUWlCRUVOUjBFQUlBUkJBMGNiUlFSQUlBTkJBUkNyQVJBckJFQWdBa0VCTmdJOER3c2dBMEVDRUtzQkVDc0VRQ0FDUVFJMkFqd1BDeUFBS0FJVUlnUkJBMGNOQWlBRFFRUVFxd0VRS3dSQUlBSkJCRFlDUEE4TElBTkJBeENyQVJBckJFQWdBa0VETmdJOER3c2dBMEVHRUtzQkVDc0VRQ0FDUVFZMkFqd1BDeUFEUVFjUXF3RVFLd1JBSUFKQkJ6WUNQQThMSUFOQndPVUtFQ3RGRFFFZ0FDQUJRUUZCek9VS1FkRGxDaUFBS0FJQUtBSVVFUWdBSUFKQkFUb0FMeUFBS0FJb1FRRTZBTTRFRHdzZ0EwRUZFS3NCRUNzRVFDQUNRUVUyQWp3UEN5QURRUWdRcXdFUUt3UkFJQUpCQ0RZQ1BBOExJQU5CQ1JDckFSQXJCRUFnQWtFSk5nSThEd3NnQTBFQkVONERFQ3NFUUNBQ1FRRTJBa3dQQ3lBRFFRSVEzZ01RS3dSQUlBSkJBallDVEE4TElBTkJBeERlQXhBckJFQWdBa0VETmdKTUR3c2dBMEVCRUpZRUVDc0VRQ0FDUVFFMkFsQVBDeUFEUVFJUWxnUVFLd1JBSUFKQkFqWUNVQThMSUFOQjdPVUtFQ3RGRFFBZ0FrRUJPZ0JVRHdzZ0FDZ0NGQ0VFQ3lBRVFRUkdCRUFnQTBIMzVRb1FLd1JBSUFBZ0FVRUdRZmZsQ2hCS0lBSkJBVG9BUVE4TElBTkJpZVlLRUNzRVFDQUFJQUZCQmtHSjVnb1FTaUFDUVVCclFRRTZBQUFQQ3lBRFFaN21DaEFyQkVBZ0FDQUJRUWRCcEFOQjdPUUtRWjdtQ2hBb0lBQWdBVUVJUWJZQ1FRQkJudVlLRUNnZ0FrRUJPZ0IwRHdzZ0EwR3o1Z29RS3cwRFFRRWhCQU5BSUFNZ0JCRFZDUkFyQkVBZ0FDQUJRUVpCLytZS0VFb2dBQ0FCUVFaQnBBTkJBRUgvNWdvUUtDQUNJQVEyQW5nUEMwRUJJUVVnQkVFQmFpSUVRUVZIRFFBTEEwQWdBeUFGRUpVRUVDc0VRQ0FBSUFGQkJrR1c1d29RU2lBQUlBRkJCa0hDQTBFQVFaYm5DaEFvSUFBZ0FVRUJRY1RuQ2lBRkVKVUVJQUFvQWdBb0FoUVJDQUFnQlVGN2FrRUJUUVJBSUFBZ0FVRUJRY2puQ2lBRkVKVUVJQUFvQWdBb0FoUVJDQUFMSUFJZ0JUWUNoQUVQQ3lBRlFRRnFJZ1ZCQjBjTkFBdEJBQ0VFSUFOQkRVSE01d29RaFFKRkJFQURRQ0FESUFRUTFBa1FLd1JBSUFBZ0FVRUlRY0FDUWRybkNrSGhxd29RS0NBQUlBRkJkMEVBUWRybkNrSGhxd29RS0NBQUtBSW9JZ0FnQUNnQ3VBUkJBU0FFZEhJMkFyZ0VJQUpCQVRvQWZBOExJQVJCQVdvaUJFRVFSdzBBQ3lBQUlBRkIrZWNLUWN6bkNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQU5Ca09nS0VDc05BaUFBS0FJVUlRUUxBa0FnQkVFTFN3MEFBa0FDUUFKQUlBUkJCR3NPQ0FNREFRRUJBUUVCQUFzZ0EwSEc2QW9RSzBVTkFTQUFJQUZCQVVIWTZBcEIzT2dLSUFBb0FnQW9BaFFSQ0FBZ0FrRUJPZ0F3RHdzZ0EwSHQ2QW9RSzBVTkFDQUNRUUU2QURnUEN5QUFLQUlVSVFRTEFrQWdCRUVGUncwQUlBTkJFVUg4NkFvUWhRSU5BQ0FBSUFGQkFVR1E2UXBCbE9rS0lBQW9BZ0FvQWhRUkNBQWdBMEd2NlFvUUt3UkFJQUpCQVRvQWlRRVBDeUFEUWNqcENoQXJSUTBBSUFKQkFUb0FpZ0VQQ3lBQUlBRkI0dWtLSUFNUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQUFnQVVHMTVBb2dBQ2dDQUNnQ21BRVJCZ0FnQUNBQlFRRkJ2T1FLUWNEa0NpQUFLQUlBS0FJVUVRZ0FJQUlnQWlrQ0RFTC8vLy8vLy8vL3YzaURRb0NBZ0lDQWdJREFBb1EzQWd3UEN5QUFJQUZCQVVHazZBcEJxT2dLSUFBb0FnQW9BaFFSQ0FBZ0FrRUJPZ0NJQVE4TElBQWdBVUVDUWNqbUNrSFE1Z29nQUNnQ0FDZ0NGQkVJQUNBQVFlVG1DaUFBS0FJQUtBSWdFUU1BQkVBZ0FrRUJPZ0IwQ3lBQ1FRRTZBSFVMTEFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ0FpQUNFUHNPSUFBZ0EwRUlhaERVQkNBRFFSQnFKQUFMS2dBZ0FDQUNRUklRN3dJRVFDQUFJQUZCaE5nS0lBTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxDejhCQVg4Z0FDQUFLQUpZSWdKQkFVNEVmeUFBSUFGQmp0Y0tRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUNBQUtBSllCU0FDQzBFQmFqWUNXQXU2QmdJQ2Z3RitJd0JCRUdzaUJTUUFJQUlReFFJRVFDQUNLUUlFSVFZZ0F5QURLQUlBS0FJb0VRQUFJZ1FnQkNrQ0JFTC8vLy8vLy85dmd5QUdRb0NBZ0lDQWdCQ0RoRGNDQkNBQ0tRSUVJUVlnQXlBREtBSUFLQUlvRVFBQUlnUWdCQ2tDQkVMLy8vLy8vLzkzZ3lBR1FvQ0FnSUNBZ0FpRGhEY0NCQ0FDS1FJRUlRWWdBeUFES0FJQUtBSW9FUUFBSWdRZ0JDa0NCRUwvLy8vLy8vOWZneUFHUW9DQWdJQ0FnQ0NEaERjQ0JDQUNLUUlFSVFZZ0F5QURLQUlBS0FJb0VRQUFJZ1FnQkNrQ0JFTC8vLy8vLy8rL2Y0TWdCa0tBZ0lDQWdJREFBSU9FTndJRUlBSXBBZ1FoQmlBRElBTW9BZ0FvQWlnUkFBQWlCQ0FFS1FJRVF2Ly8vLy8vLy85K2d5QUdRb0NBZ0lDQWdJQUJnNFEzQWdRZ0Fpa0NCQ0VHSUFNZ0F5Z0NBQ2dDS0JFQUFDSUVJQVFwQWdSQy8vLy8vLy8vLzMyRElBWkNnSUNBZ0lDQWdBS0RoRGNDQkNBQ0tRSUVJUVlnQXlBREtBSUFLQUlvRVFBQUlnUWdCQ2tDQkVMLy8vLy8vLy8vZTRNZ0JrS0FnSUNBZ0lDQUJJT0VOd0lFSUFJcEFnUWhCaUFESUFNb0FnQW9BaWdSQUFBaUJDQUVLUUlFUXYvLy8vLy8vMzJESUFaQ2dJQ0FnSUNBQW9PRU53SUVJQUlwQWdRaEJpQURJQU1vQWdBb0FpZ1JBQUFpQkNBRUtRSUVRdi8vLy8vLy8zdURJQVpDZ0lDQWdJQ0FCSU9FTndJRUlBSXBBZ1FoQmlBRElBTW9BZ0FvQWlnUkFBQWlCQ0FFS1FJRVF2Ly8vLy8vLzM2RElBWkNnSUNBZ0lDQUFZT0VOd0lFQ3dKQUlBSVE2d0ZGQkVBZ0FoQ1pBa1VOQVFzZ0FDQUJRZVhVQ2tIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQUlRNndJRVFDQUFJQUZCcnRVS1FlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWkwQUIwRUljUVJBSUFBZ0FVSGoxUXBCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUlRdHdORkRRQWdBaERWQkFSQUlBTWdBeWdDQUNnQ0tCRUFBQkRGQnd3QkN5QUFJQUZCbXRZS1FjdldDa0hqMWdsQkFDQUFLQUlBS0FLa0FSRUNBQXNnQWhEaUFnUkFJQUlwQWdRaEJpQURJQU1vQWdBb0FpZ1JBQUFpQkNBRUtRSUVRdi8vLy85dmd5QUdRb0NBZ0lBUWc0UTNBZ1FMSUFVZ0FpZ0NCRUUvY1RZQ0RDQUFJQUVnQlVFTWFpQURFTGNISUFWQkVHb2tBQXM1QVFGL0lBQkJ3QVJxSWdBZ0FSQnJLQUlNSVFNZ0FDQUJFR3NoQUNBRFFmLy9BRWNFUUNBQUtBSU1JQUpHRHdzZ0FDQUNOZ0lNUVFFTDJ3a0JBbjhqQUVFUWF5SURKQUFDUUNBQ0tRSUVRaitEUWdkU0RRQWdBaERyQWtVTkFDQUFJQUZCZzRjTFFhZmtDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBQ0VMSURSUTBBSUFJUWdBSU5BQ0FBSUFGQnQ0Y0xRZVB0Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQUNFSTRFUlEwQUFrQWdBaWdDQkVFL2NVRjlhaUlFUVFOTERRQUNRQUpBQWtBZ0JFRUJhdzREQVFJQ0FBc0NRQUpBSUFBUU0wVU5BQ0FBS0FJUVFiVUNTZzBBSUFBZ0FVRUFRZUtIQ3hDL0Fnd0JDeUFBSUFGQlgwSGlod3NRMGdFTElBQW9BaFJGQkVBZ0EwR2dpQXNwQXdBM0F3Z2dBQ0FCUVhkQnlnSkJBaUFEUVFocVFlS0hDeERSQVNBQUlBRkJDRUdzQWtFQVFlS0hDeEFvREFNTElBQWdBVUYzUVpvRFFmVEVDa0hpaHdzUUtDQUFJQUZCQ0VHMkFrRUFRZUtIQ3hBb0RBSUxBa0FDUUNBQUVETkZEUUFnQUNnQ0VFRzFBa29OQUNBQUlBRkJCRUgraHdzUXZ3SU1BUXNnQUNBQlFWOUIvb2NMRU5JQkN5QUFLQUlVUVFSR0JFQWdBMEdnaUFzcEF3QTNBd2dnQUNBQlFYZEJ5Z0pCQWlBRFFRaHFRZjZIQ3hEUkFTQUFJQUZCQ0VHc0FrRUFRZjZIQ3hBb0RBSUxJQUFnQVVGM1Fab0RRZlRFQ2tIK2h3c1FLQ0FBSUFGQkNFRzJBa0VBUWY2SEN4QW9EQUVMSUFBZ0FVRVBRYWlJQ3hCS0lBQWdBVUYzUWNvQ1FaRHNDa0dvaUFzUUtDQUFJQUZCZDBHdUEwSFFpQXRCcUlnTEVDZ2dBQ0FCUVFoQnRnSkJBRUdvaUFzUUtBc2dBaERPQkVVTkFDQUNLUUlFUWorRFFnUlNCRUFnQUNBQlFmR0lDMEdnOGdwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBSVFnQUlOQUNBQUlBRkJqNGtMUWFEeUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FDRU9rQ1JRMEFJQUlRc1FJTkFDQUNFSzRDRFFBZ0FDQUJRYnFKQzBIcTdBcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQWhDeEEwVU5BQ0FDRVBBQ0RRQWdBQ0FCUWZHSUMwR0I4Z3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FoQzhEa1VOQUNBQ0VQQUNEUUFnQUNBQlFmR0lDMEhuaVF0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTEFrQWdBaENwQ1VVTkFDQUNFTEVDRFFBZ0FoQ3VBZzBBQWtBZ0FoRE5CRVVFUUNBQ0VJWURSUTBCQ3lBQUlBRkIvSWtMUWNiMkNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBaENXQWtVRVFDQUNFTmtEUlEwQkN5QUFJQUZCd1lvTFFjYjJDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBQ0xRQWxSUTBBSUFJcEFnUkNQNE5DQlZJRVFDQUFJQUZCOW9vTFFaemxDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWhDckJVVU5BQ0FBSUFGQmxvc0xRY2JzQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQUNMUUFtUlEwQUlBSXBBZ1JDUDROQ0JsRU5BQ0FBSUFGQnVJc0xRYXJsQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzQ1FDQUNMUUF3UlEwQUlBSXBBZ1JDUDROQ0JsSUVRQ0FBSUFGQjFZc0xRZTczQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FoRHBBZ1JBSUFBZ0FVSDBpd3RCNnV3S1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUNFS3NGUlEwQUlBQWdBVUgwaXd0Qnh1d0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFJcEFnUkNQNE5DQ2xJTkFDQUNFT3NDUlEwQUlBQWdBVUdYakF0QjBZd0xRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFEUVJCcUpBQUx1Z0lCQlg4akFFRVFheUlESkFBQ1FDQUJFSlVDUlEwQUlBRVFoUU5GRFFBZ0F5QUJLUUlZUWpLSXAwSC9QM0UyQWd3Z0FoQTNCRUFEUUNBQ0lBVVFPQ2dDQUNJRUlBUW9BZ0FvQWlnUkFBQWhCaUFEUVFBNkFBc2dBMEVBT2dBS0lBTkJBRG9BQ1NBQUtBSW9JQUlnQlJBNEtBSUFJQU5CQzJvZ0EwRUthaUFEUVFscUVJUUhJUWNDUUNBR0VJVURSUVJBUVFnaEJBSkFBa0FnQXkwQUN3MEFRUVFoQkNBRExRQUtEUUJCQWlFRUlBTXRBQWxGRFFFTElBTkJER29nQkJDRUFnc2dCaUFHS1FJWVF2Ly8vLy8vLy8rQmdIK0RJQU1vQWd3aUJFSC9QM0d0UWpLR2hEY0NHQXdCQ3lBRElBWXBBaGhDTW9pblFmOC9jU0lFTmdJTUN5QURJQVFnQjJvMkFnd2dCVUVCYWlJRklBSVFOMGtOQUFzTElBRWdBU2tDR0VLQWdJQ0FnSUNBL3Y4QWhEY0NHQXNnQTBFUWFpUUFDNkFCQUNBQklBRW9BZ0FvQWlRUkFBQUVRQ0FCSUFFb0FnQW9BZ0FSQUFBaUFDQUJJQUVvQWdBb0Fqd1JBQUFnQUNnQ0FDZ0NPQkVCQUNBQUR3c2dBU0FCS0FJQUtBSXNFUUFBSWdFZ0FTZ0NBQ2dDV0JFQUFDSUFJQUFvQWdBb0FnQVJBQUFpQUVIajFna1F3Z0VnQUNnQ0FDZ0NFQkVCQUNBQUlBRWdBU2dDQUNnQ1dCRUFBQ0lCSUFFb0FnQW9BandSQUFBZ0FDZ0NBQ2dDT0JFQkFDQUFDOUVCQVFKL0FrQUNRQ0FDSUFJb0FnQW9BaWdSQUFBUTFBSkZEUUFDUUNBREJFQWdBaUFDS0FJQUtBSndFUUFBRFFFTUF3c2dBaENNQTBVTkFndEJCQ0VFSUFBdEFLUUJSUVJBSUFCQnFBbHFLQUlBSVFRTElBSWdBaWdDQUNnQ1VCRUFBQ0FEUVFGeklnVVExZ0VpQTBVZ0F5QUVSbkpGQkVBZ0FDQUJRYkhEQ2tIUDRBbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDeUFERFFBZ0FpQUNLQUlBS0FKUUVRQUFJQVVnQkJDYkJBc1BDeUFBSUFGQi84TUtRWi9FQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzM0FRRi9RUUVoQVNBQUVHQkJBVW9FUUFOQUlBQWdBUkNzQlVVRVFDQUFJQUZCQVJDYkJBc2dBVUVCYWlJQklBQVFZRWdOQUFzTEMzRUJBWDRDUUNBQ0tRSUVJZ05DUDROQ0FsRUVmaUFBSUFGQkFVSDRBRUhoNGdsQmo3MEtFQ2dnQUNBQlFRaEJyQUpCQUVHUHZRb1FLQ0FDS1FJRUJTQURDMEkvZzBJRFVnMEFJQUFvQWhRTkFDQUFJQUZCZDBHNHJRb1FTaUFBSUFGQkFVR1dBVUVBUWJpdENoQW9DMEVBQ3pjQkFYOENmeUFCS0FJQUlnSkJEa1lFUUNBQUlBRkJCR29Rd0FWQkFuUnFRYndKYWd3QkN5QUFJQUpCQW5ScVFld0ZhZ3NvQWdBTHVBMENBWDhCZmdKQUlBQW9Ba3dRR0VVTkFBSkFJQU1vQXBnQklnUUVRQ0FFRVBRQkRRRUxBa0FnQWlnQ0NFR0ErQjl4UlEwQUlBTWlCQ2dDQUVFT1JnUi9JQVJCQkdvUTBBUUZRUUFMRFFBZ0F5a0NERUkvZzBJR1VRMEFJQUFnQVVIYnFncEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBSVF4UUpGRFFBZ0F5Z0NBRUVPUmcwQUlBTkJDR29Rc1FJTkFDQUFJQUZCMjZvS1FlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBQ0tRSUVRaitEUWdaU0RRQWdBeWdDQUVFUVJnMEFJQUl0QUNZTkFDQUFJQUZCaWFzS1FiQ3JDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlnQ0JFRS9jVUY5YWtFQlN3MEFJQU10QUh3RVFDQUFJQUZCdDZzS1FlR3JDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBREtBSUFJZ1JCREVjTkFDQUFMUUNrQVEwQUlBQWdBVUh3cXdvZ0FpZ0NCRUUvY1JEVEFrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExBa0FnQkJDbUFrVUVRQ0FES0FJQVFRSkhEUUVMSUFBZ0FVRUlRYXdDUVFCQi82c0tFQ2dMQWtBZ0FpMEFCMEhBQUhFTkFDQUNFSk1HRFFBZ0FpMEFDRUVRY1VFRWRnMEFBa0FnQXlnQ0FCQ21BZzBBSUFNb0FnQkJBa1lOQUNBREtBS1lBU0lFUlEwQklBUkJDQ0FFS0FJQUtBS3dBUkVEQUEwQUlBTW9BcGdCSWdSQkNTQUVLQUlBS0FLd0FSRURBQTBBSUFNb0FwZ0JFSzhDRFFBZ0F5Z0NtQUVReGdJTkFDQURLQUtZQVJESER3MEFJQU1vQXBnQklnUkJBaUFFS0FJQUtBS3dBUkVEQUVVTkFRc2dBaWtDQkVJL2cwSjlmQ0lGUWdGV0RRQWdCYWRCQVdzRVFDQUFLQUlVUVFSSERRRWdBQ0FCUVpPc0NpQURLQUlBRU1jRUlBSW9BZ1JCUDNFUTB3SkJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN5QUFLQUlVRFFBZ0FDZ0NFRUdzQWtjTkFDQUFJQUZCazZ3S0lBTW9BZ0FReHdRZ0FpZ0NCRUUvY1JEVEFrRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBSVF0UVZGRFFBZ0FoQ1pBa1VOQUNBQUlBRkJyYXdLUWR5c0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBaEN1QWtVZ0F5Z0NBRUVRUm5KRkJFQWdBQ0FCUWVLc0NrR1NyUXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBb0FoUWhCQ0FDS1FJRUlnVkNQNE5DQTFFRVFDQUVRUVZMRFFFQ1FBSkFBa0FDUUNBRVFRRnJEZ1VEQlFVQkFnQUxJQU1vQWdBaUJFRVBSZ1JBSUFBZ0FVR1pyUXBCQXhEVEFrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQU1vQXBRQkJIOGdBQ0FCUVhkQnVLMEtFRW9nQUNBQlFRRkJsZ0ZCQUVHNHJRb1FLQ0FES0FJQUJTQUVDMEVDUmdSQUlBQWdBVUYzUVpvRFFRQkJ6SzBLRUNnTEFrQWdBaERyQVEwQUlBSVFtUUlOQUNBQ0VNVUNEUUFnQWkwQUIwRUljVVVOQlFzZ0FDQUJRZTZ0Q2tIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDeUFES0FLWUFVVU5BeUFBSUFGQkNFR3NBa0VBUVpldUNoQW9JQUFnQVVGM1FaWUJRUUJCbDY0S0VDZ2dBeWdDbUFFaUFpQUNLQUlBS0FLNEFSRUFBQVJBSUFBZ0FVRjNRYlN1Q2hCS0N5QURLQUtZQVNJQ0lBSW9BZ0FvQXJRQkVRQUFSUTBESUFBZ0FVRjNRZWF1Q2hCS0R3c2dBQ2dDVEJBa0RRSWdBQ0FCUVpldkNrSFpyd3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3lBRlFvQ0FnSUNBSUlOUURRRWdBQ0FCUWR5dkNrSGNyQXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3lBRVFRVkxEUUFDUUFKQUFrQUNRQ0FFUVFGckRnVUVBd1FCQWdBTElBTW9BcGdCUlEwRElBQWdBVUVJUWF3Q1FRQkJrckFLRUNnZ0FDQUJRWGRCbGdGQkFFR1NzQW9RS0NBREtBS1lBU0lDSUFJb0FnQW9BcmdCRVFBQUJFQWdBQ0FCUVhkQnJyQUtFRW9MSUFNb0FwZ0JJZ0lnQWlnQ0FDZ0N0QUVSQUFCRkRRTWdBQ0FCUVhkQjM3QUtFRW9QQ3lBQUlBRkJDRUdzQWtFQVFZK3hDaEFvSUFNb0FnQkJEMFlFUUNBQUlBRkJwckVLSUFJb0FnUkJQM0VRMHdKQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBUEN5QURMd0dRQVVFVWRFRVFkVUdBSUU0RVFDQUFJQUZCdkxFS0lBSW9BZ1JCUDNFUTB3SkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDeUFDRU9zQkJFQWdBQ0FCUWMreENrR0NzZ3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJUW1RSUVRQ0FBSUFGQm1MSUtRYyt5Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0F5Z0NBQ0lEUVF0TFFRRWdBM1JCaEJoeFJYSU5BaUFBSUFGQjZiSUtJQUlvQWdSQlAzRVEwd0pCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3lBQUlBRkJrN01LUWF2c0NVSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQVZDZ0lDQWdJQWdnMUFOQUNBQUlBRkIxck1LUWR5c0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0xtUUVCQVg4Q1FDQUNMUUFIUVFoeFJRMEFJQUlROEFJaEF5QUNFUEVDSVFJQ1FDQUFLQUlRUWFzQ1RBUkFJQUFRTXcwQklBQW9BaEJCcEFOSURRRUxJQU1OQVNBQUlBRkJnYXdMUWNLb0MwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQUlnQTNKQkFVWUVRQ0FBS0FJVUlBSkJBWE55RFFFTElBQWdBVUdkckF0QndxZ0xRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd3NNQUNBQUtBSUFHaUFCRUNvTFBnQWdBU0FCS0FJQUtBS0VBUkVBQUJDUEFrVUVRQ0FBSUFFZ0FTZ0NBQ2dDQUJFQUFFR2hsQW9nQWtIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzTFRnRUNmeU1BUVJCcklnVWtBQ0FFRUJNaEJDQURFQk1oQXlBQUtBSUFLQUtnQVNFR0lBVWdBellDQkNBRklBUTJBZ0FnQUNBQlFlUFdDU0FDUWM2TkNpQUZJQVlSQWdBZ0JVRVFhaVFBQ3drQUlBQkJCR29RTmd2WEFRRUNmeU1BUWJBQmF5SUVKQUFnQkVIWUFHb2dBaEMwQXlJQ0VCc2lBeUFES1FJRVF2Ly8vMGVETndJRUlBSVFoQVlFUUNBQUlBRkJBVUg0QUVIaDRnbEJrNHdLRUNnZ0FDQUJRUWhCckFKQkFFR1RqQW9RS0FzZ0FDZ0NLQ0FDRUxRSUlnTkZCRUFnQUNBQlFhZU1DaUFDRUxvT1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUlBSWdCRUVCUVFCQkFVRUFRUUJCQUJCRklnQVFqd0VnQUJBMUdrSFRBeUVEQ3lBRVFlUFdDUkFpSVFCQm1BRVFSaUFBSUFJZ0F4Q3VCU0VCSUFBUUdSb2dBaEExR2lBRVFiQUJhaVFBSUFFTE5nQkJBQ0FCVFFSL0lBTkZCRUJCQUE4TFFYOGdBQ0FBSUFGcUlnRWdBaUFDSUFOcUVQNE9JZ0lnQUdzZ0FTQUNSaHNGUVg4TEM3SUVBQUpBSUFJZ0FpZ0NBQ2dDSEJFQUFFRVBSdzBBSUFBZ0FrRURFTzhDUlEwQUlBQWdBU0FEUWFQWUNpQUFLQUlBS0FKUUVRUUFDd0pBSUFJZ0FpZ0NBQ2dDY0JFQUFFVU5BQ0FDSUFJb0FnQW9BaHdSQUFCQkEwY05BQ0FBSUFFZ0EwSE4yQW9nQUNnQ0FDZ0NVQkVFQUFzQ1FDQUNJQUlvQWdBb0Fod1JBQUJCRDBjTkFDQUFJQUpCQmhEdkFrVU5BQ0FBSUFFZ0EwSDIyQW9nQUNnQ0FDZ0NYQkVFQUFzQ1FDQUNJQUlvQWdBb0FuQVJBQUJGRFFBZ0FpQUNLQUlBS0FJY0VRQUFRUVpIRFFBZ0FDQUJJQU5CbnRrS0lBQW9BZ0FvQWx3UkJBQUxBa0FnQWlBQ0tBSUFLQUljRVFBQVFROUhEUUFnQUNBQ1FRY1E3d0pGRFFBZ0FDQUJJQU5CeGRrS0lBQW9BZ0FvQWx3UkJBQUxBa0FnQWlBQ0tBSUFLQUp3RVFBQVJRMEFJQUlnQWlnQ0FDZ0NIQkVBQUVFSFJ3MEFJQUFnQVNBRFFlN1pDaUFBS0FJQUtBSmNFUVFBQ3dKQUlBSWdBaWdDQUNnQ0hCRUFBRUVQUncwQUlBQWdBa0VFRU84Q1JRMEFJQUFnQVNBRFFaYmFDaUFBS0FJQUtBSm9FUVFBQ3dKQUlBSWdBaWdDQUNnQ2NCRUFBRVVOQUNBQ0lBSW9BZ0FvQWh3UkFBQkJCRWNOQUNBQUlBRWdBMEc5MmdvZ0FDZ0NBQ2dDYUJFRUFBc0NRQ0FDSUFJb0FnQW9BaHdSQUFCQkQwY05BQ0FBSUFKQkJSRHZBa1VOQUNBQUlBRWdBMEhqMmdvZ0FDZ0NBQ2dDYUJFRUFBc0NRQ0FDSUFJb0FnQW9BbkFSQUFCRkRRQWdBaUFDS0FJQUtBSWNFUUFBUVFWSERRQWdBQ0FCSUFOQmk5c0tJQUFvQWdBb0FtZ1JCQUFMQ3dvQUlBQkJBVG9BekFRTEh3RUJmeUFBS0FLb0JDSUNCRUFnQVNBQ1JnOExJQUFnQVRZQ3FBUkJBUXRDQVFGL0lBRVF3Z0VoQTBHQUFSQkdJZ0VnQXlBQ1FRQVE3UUloQWlBQUtBSk1JZ0FnQUNnQ0RFRUJhaUlBTmdJTUlBRWdBQ0FCS0FJQUtBSTRFUUVBSUFJTFJ3QUNRQ0FESUFNb0FnQW9BaEFSQUFCRkRRQWdBeUFES0FJQUtBSVFFUUFBS0FKb1FiRUVSdzBBSUFBZ0FVSGppd29nQWtIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzTEZBQWdBQkFUSUFBUUh5QUJJQUVRb0FFUTZna0xSUUVEZnlBQUVCOGhBaUFBRUJNaEEwSEZ1L0tJZUNFQklBSUVRRUVBSVFBRFFDQUJJQUFnQTJvc0FBQnpRWk9EZ0Foc0lRRWdBRUVCYWlJQUlBSkhEUUFMQ3lBQkM0MEdBUVovSXdCQklHc2lCeVFBSUFBb0Frd1FHRVVFUUNBQUlBRkJkMEhqNVFrUVNnc0NRQ0FBS0FKTUlBSWdBaWdDQUNnQ0dCRUFBQ0FIUVI5cVFRQVFyQUVpQ0VVTkFBSkFJQWdnQ0NnQ0FDZ0NIQkVBQUVVTkFDQUhMUUFmUlEwQUlBQWdBVUYzUWY3bENSQktDeUFJSUFnb0FnQW9BaHdSQUFBaUJVVU5BQ0FGSUFVb0FnQW9BbndSQUFCRklBTkZja1VFUUNBQUlBRkJDRUdzQWtFQVFhRG1DUkFvQ3lBRklBVW9BZ0FvQWpBUkFBQWdBaUFDS0FJQUtBSXdFUUFBRU1BQkJFQWdBQ0FCUWNibUNTQUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF0QkFTRUVJQVVnQlNnQ0FDZ0NrQUVSQUFCQkFVZ05BRUVBSVFRRFFDQUZJQVFnQlNnQ0FDZ0NvQUVSQXdBb0FnUWlCaUFHS0FJQUtBSW9FUUFBS1FJRUlBSWdCQ0FDS0FJQUtBS2NBUkVEQUNnQ0JDSUdJQVlvQWdBb0FpZ1JBQUFwQWdTRlFqK0RVRVVFUUNBQ0lBUWdBaWdDQUNnQ25BRVJBd0FvQWdRUXlRUWhCaUFBS0FJQUtBS2dBU0VKSUFjZ0JFRUJhallDRUNBQUlBRkIrdVlKSUFaQnpPY0pJQWRCRUdvZ0NSRUNBQXNDUUNBRklBUWdCU2dDQUNnQ29BRVJBd0FvQWdRaUJpQUdLQUlBS0FJb0VRQUFLUUlFSUFJZ0JDQUNLQUlBS0FLY0FSRURBQ2dDQkNJR0lBWW9BZ0FvQWlnUkFBQXBBZ1NGUW9DQWdEaURVQVJBSUFSQkFXb2hCQXdCQ3lBQ0lBUWdBaWdDQUNnQ25BRVJBd0FvQWdRUXZnNGhCaUFBS0FJQUtBS2dBU0VKSUFjZ0JFRUJhaUlFTmdJQUlBQWdBVUhQNXdrZ0JrSE01d2tnQnlBSkVRSUFDeUFFSUFVZ0JTZ0NBQ2dDa0FFUkFBQklEUUFMUVFFaEJBc2dBQ0FCSUFJZ0FpZ0NBQ2dDTUJFQUFFR2o2QWtRdXdVQ1FDQURSUTBBSUFBb0Frd1FKQVJBSUFJZ0FpZ0NBQ2dDY0JFRkFBd0JDeUFFUVFGeklBY3RBQjlCQUVkeVJRUkFJQWdnQ0NnQ0FDZ0NIQkVBQUNJRElBTW9BZ0FvQW5nUkJRQUxJQUlnQWlnQ0FDZ0NlQkVGQUFzZ0FDZ0NUQ0FDRU93Q1JRUkFJQUFnQVVIQjZBa2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBZEJJR29rQUNBQ0N4OEFJQUJCZjJvaUFFRUZUUVJBSUFCQkFuUkJ3TWdMYWlnQ0FBOExRUUFMWmdBQ1FDQUNJQUlvQWdBb0FuQVJBQUFOQUNBQUtBSk1FQ1FOQUNBQ0lBSW9BZ0FvQWl3UkFBQWdBQ2dDRkJEWEIwVU5BQ0FDSUFJb0FnQW9BaXdSQUFBdEFDY05BQ0FBSUFGQjB1QUpJQUlReVFRZ0F4QVRRUUFnQUNnQ0FDZ0NvQUVSQWdBTEN3OEFJQUFvQWdRb0FnQWdBVFlDQUF1NEFRRUJmd0ovUVFBZ0FDQUFLQUlBS0FKNEVRQUFJZ0VnQVNnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElHVWcwQUdnSkFJQUFnQUNnQ0FDZ0NVQkVBQUNJQVJRMEFJQUFvQW1oQnN3RkhEUUFnQUNBQUtBSUFLQUxFQVJFQUFDSUJJQUVvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FoQVVFQUlBQWdBQ2dDQUNnQ3dBRVJBQUFROGdFTkFScEJBU0FCSUFBZ0FDZ0NBQ2dDd0FFUkFBQWlBQ0FBS0FJQUtBSjRFUUFBS0FKQUVEZEJmMnBHRFFFYUMwRUFDd3NKQUNBQUlBRVFNUm9MSkFFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFCQjBBWnFJQUVROUE4Z0FrRVFhaVFBQ3lrQUlBQW9BZ1JCUDNGQmZXb2lBRUVYVFFSQVFZK0Evd2NnQUVILy8vOEhjWFpCQVhFUEMwRUFDMmNCQW44akFFRVFheUlCSkFBQ2Z5QUFRU1JxSUFBdEFEUU5BQm9nQUNnQ0dDRUNJQUZCQURZQ0RDQUJJQUFvQWdRZ0FDZ0NJRUYvYzJvMkFnZ2dBaUFCUVF4cUlBQkJFR29nQVVFSWFoRCtBUkNtQVNnQ0FFRUVkR29MSVFBZ0FVRVFhaVFBSUFBTEhRRUJmeUFBUWVTbUVEWUNBQ0FBUVN4cUlnRWdBUkE4RUs0SElBQUxiUUFnQUVHRTBnazJBZ0FnQUVHUUJXb1FyQUlnQUVHQUJXb1FyQUlnQUVId0JHb1FyQUlnQUVIZ0JHb1FyQUlnQUVIUUJHb1FyQUlnQUVIQUJHb1FHUm9nQUVHb0FXb1Eyd0VnQUVHTUFXb1Fzd29nQUVINEFHb1F4Z2tnQUVIb0FHb1F4Z2tnQUJEN0NSb2dBQXRUQVFGL0lBQkJwTlFKTmdJQUlBQW9BcVNyQVNJQkJFQWdBUkFxQ3lBQVFjaXJBV29RMndFZ0FFRzRxd0ZxRU5zQklBQkJyS3NCYWlJQklBRVFQQkN2QnlBQVFaU3JBV29RR1JvZ0FCRDhDUm9nQUFzN0FRRi9Jd0JCRUdzaUFpUUFJQUJCQkdvUXZRY2dBa0VBTmdJTUlBQkJDR29nQWtFTWFpQUJFS0VISUFBZ0FCQWxOZ0lBSUFKQkVHb2tBQXVmQVFFQ2Z5TUFRUkJySWdFa0FDQUFMUUNrQVVVRVFFR29BUkJHSWdJUS9RTWFJQUVnQWpZQ0RDQUJJQUJCcUFGcUlnSVFRRFlDQ0NBQklBSVFNallDQUNBQlFRaHFJQUVRSGdSQUEwQWdBQ2dDS0NBQlFReHFJQUVvQWdnb0FnQVFpZ3dnQVVFSWFoQm1HaUFCSUFJUU1qWUNBQ0FCUVFocUlBRVFIZzBBQ3dzZ0FDZ0NLQ0FCUVF4cUlBQW9BaFFnQUNnQ1RCQzBGQXNnQVVFUWFpUUFDejRCQVg4akFFRVFheUlGSkFBZ0JTQUVOZ0lJSUFVZ0F6WUNEQ0FBSUFFZ0FpQUZLQUlNSUFVb0FnZ2dBQ2dDQ0JFS0FDRUFJQVZCRUdva0FDQUFDNVlHQVFkL0l3QkJNR3NpQlNRQUlBUkJBRG9BQUNBRlFTQnFFSk1CSVFjZ0JTQUFFRUEyQWhBZ0JTQUFFREkyQWdnZ0JVRVFhaUFGUVFocUVCNEVRQU5BSUFVb0FoQW9BZ0FoQmdKQUlBRWdBU2dDQUNnQ2tBRVJBQUFnQmlBR0tBSUFLQUtZQVJFQUFFZ05BQ0FCSUFFb0FnQW9BcEFCRVFBQUlBWWdCaWdDQUNnQ2tBRVJBQUJLRFFBZ0JTQUJJQUVvQWdBb0FwQUJFUUFBTmdJSUlBVWdCaUFHS0FJQUtBS1FBUkVBQURZQ0dDQUZRUWhxSUFWQkdHb1EvZ0VvQWdBaUMwRUJUZ1JBUVFBaENBTkFJQVlnQ0NBR0tBSUFLQUtnQVJFREFDZ0NCQ0lLSUFvb0FnQW9BaWdSQUFBUXd3Y0VRQ0FDSUFFZ0NDQUJLQUlBS0FLZ0FSRURBQ2dDQkNBR0lBZ2dCaWdDQUNnQ29BRVJBd0FvQWdRZ0JpQUdLQUlBS0FKc0VRQUFJQWdRZ0FwRkRRTUxJQVlnQ0NBR0tBSUFLQUtnQVJFREFDZ0NCQ0lLSUFvb0FnQW9BaWdSQUFBUTFRUUVRQ0FDSUFZZ0NDQUdLQUlBS0FLZ0FSRURBQ2dDQkNBQklBZ2dBU2dDQUNnQ29BRVJBd0FvQWdRZ0JpQUdLQUlBS0FKc0VRQUFJQWdRZ0FwRkRRTUxJQWhCQVdvaUNDQUxSdzBBQ3dzZ0JTQUdOZ0lJSUFjZ0JVRUlhaEN5QkFzZ0JVRVFhaEJtR2lBRklBQVFNallDQ0NBRlFSQnFJQVZCQ0dvUUhnMEFDd3NDUUNBSEVCWkZEUUFnQnhBV1FRRkdCRUFnQnlnQ0FDZ0NBQ0VKREFFTElBVWdBellDRkNBRklBRTJBaEFnQlNBRE5nSU1JQVVnQVRZQ0NDQUhLQUlBS0FJQUlRa2dCU0FIRUVBMkFnQWdCU0FGUVFFUXdRVTJBaGdnQlNBSEVESTJBZ0FnQlVFWWFpQUZFQjRFUUFOQUlBVkJFR29nQ1NBRktBSVlLQUlBSWdBUXpRY0VRQ0FKSUFBZ0JVRVFhaUFBSUFrUXpRY2JJUWtMSUFWQkdHb1FaaG9nQlNBSEVESTJBZ0FnQlVFWWFpQUZFQjROQUFzTElBVWdCeEJBTmdJWUlBVWdCeEF5TmdJQUlBVkJHR29nQlJBZVJRMEFBMEFDUUNBSklBVW9BaGdvQWdCR0RRQWdCVUVRYWlBSklBVW9BaGdvQWdBaUFCRE5CMFVFUUNBRlFRaHFJQWtnQUJDQkVFVU5BUXNnQkVFQk9nQUFDeUFGUVJocUVHWWFJQVVnQnhBeU5nSUFJQVZCR0dvZ0JSQWVEUUFMQ3lBSEVOc0JJQVZCTUdva0FDQUpDeXNBSUFFZ0FDZ0NUQ0FCS0FJQUVNb0pJZ0UyQWdBZ0FRUkFJQUFnQVNBQUtBSUFLQUtJQWhFQkFBc0xwZ0VCQVg4Q1FDQURSUTBBSUFNZ0F5Z0NBQ2dDSUJFQUFDSUVCRUFnQkNnQ2FDSURRYzkrYWtFRVQwRUFJQU5COEFWSEd3MEJJQUFnQVNBQ0lBUWdCQ2dDQUNnQ3dBRVJBQUFnQUNnQ0FDZ0M4QUVSQkFBUEN5QURJQU1vQWdBb0FqQVJBQUFpQTBVTkFDQURJQU1vQWdBb0FvUUJFUUFBRUpvRVJRMEFJQUFnQVVIV3p3a2dBaUFESUFNb0FnQW9Bc0FCRVFBQUVCTkJBQ0FBS0FJQUtBS2dBUkVDQUFzTHpBUUJCbjhqQUVGQWFpSUZKQUFDZndKQUlBTWdBeWdDQUNnQ0lCRUFBQ0lFQkVBZ0JDZ0NhQ0lEUWM5K2FrRUVUMEVBSUFOQjhBVkhHMFVFUUNBQUlBRWdBaUFFSUFRb0FnQW9Bc0FCRVFBQUlBQW9BZ0FvQXV3QkVRa0FEQU1MSUFBb0FnQW9BcUFCSVFNZ0JVRzN6UWsyQWpBZ0FDQUJRYVhOQ1NBQ1FiZk5DU0FGUVRCcUlBTVJBZ0FNQVFzQ2YwRUFJQU1nQXlnQ0FDZ0NNQkVBQUNJSFJRMEFHaUFISUFjb0FnQW9Bc0FCRVFBQUVCTUxJUWxCdU0wSklRUUNRQUpBQWtBQ1FBSkFJQU1nQXlnQ0FDZ0NoQUVSQUFBb0FnUkJQM0VpQmtGK2FpSUlRUWhMQkVBZ0JrRVFSZzBGREFFTEFrQUNRQUpBSUFoQkFXc09DQU1EQWdFREF3TUFCd3RCQUVHeXpna2dBQ2dDRkVFSFJoc2hCZ3dEQzBHRHpnbEI1TTBKUVFBZ0F5QURLQUlBS0FLRUFSRUFBQkNXQmhzZ0F5QURLQUlBS0FLRUFSRUFBQzBBTUJzaEJnd0NDMEhOelFraEJBd0VDMEVBSVFZZ0F5QURLQUlBS0FLQUFSRUFBQ0lEUVhOcUlnaEJCRXNFUUNBRERRRkI5TTRKSVFRTUJBdEIzYzRKSVFRZ0NFRUJhdzRFQXdBQUFRSUxJQVlnQjNKRkJFQWdBQ2dDQUNnQ29BRWhBeUFGUWJmTkNUWUNBQ0FBSUFGQnBjMEpJQUpCdDgwSklBVWdBeEVDQUF3RUN5QUdJZ1FOQWtFQURBUUxRYUxQQ1NFRURBRUxRWWJQQ1NFRUN5QUFLQUlBS0FLZ0FTRURJQWNFUUNBRklBUTJBaFFnQlNBSk5nSVFJQUFnQVVHbHpRa2dBa0hIendrZ0JVRVFhaUFERVFJQURBRUxJQVVnQkRZQ0lDQUFJQUZCcGMwSklBSkIwYzhKSUFWQklHb2dBeEVDQUF0QkFRc2hBQ0FGUVVCckpBQWdBQXNOQUNBQUxRQThRUUp4UVFGMkN4TUFJQUJCQVRvQU5TQUFJQUFvQWdRMkFoQUxxd0lCQlg4Z0FCQWxHZ0pBSUFFRVFDQUFJQUVRZ2dJUXF3SWdBQkFsSUFFMkFnQURRQ0FBSUFNUUVVRUFOZ0lBSUFOQkFXb2lBeUFCUncwQUN5QUFRUWhxSWdJb0FnQWlCRVVOQVNBQUlBUW9BZ1FnQVJBMElnWVFFU0FDTmdJQUEwQWdCQ2dDQUNJQ1JRMENJQVlnQWlnQ0JDQUJFRFFpQlVZRVFDQUNJUVFNQVFzQ1FBSkFJQUFnQlJBUktBSUFCRUFnQWlFRElBSW9BZ0JGRFFJZ0FpZ0NDQ0FDS0FJQUtBSUlFTU1GRFFFTUFnc2dBQ0FGRUJFZ0JEWUNBQ0FDSVFRZ0JTRUdEQUlMQTBBZ0F5Z0NBQ0lES0FJQVJRMEJJQUlvQWdnZ0F5Z0NBQ2dDQ0JEREJRMEFDd3NnQkNBREtBSUFOZ0lBSUFNZ0FDQUZFQkVvQWdBb0FnQTJBZ0FnQUNBRkVCRW9BZ0FnQWpZQ0FBd0FBQXNBQ3lBQVFRQVFxd0lnQUJBbFFRQTJBZ0FMQ3d3QUlBRWdBeWdDQUJDTUVBdTlBZ0VHZnlBQUVDVWFBa0FnQVFSQUlBQWdBUkNDQWhDckFpQUFFQ1VnQVRZQ0FBTkFJQUFnQXhBUlFRQTJBZ0FnQTBFQmFpSURJQUZIRFFBTElBQkJDR29pQWlnQ0FDSUVSUTBCSUFBZ0JDZ0NCQ0FCRURRaUJoQVJJQUkyQWdBZ0JDZ0NBQ0lDUlEwQkEwQUNRQ0FHSUFJb0FnUWdBUkEwSWdWR0JFQWdBaUVFREFFTEFrQUNRQ0FBSUFVUUVTZ0NBQVJBSUFJaEF5QUNLQUlBUlEwQ0lBQVFReUlISUFKQkNHb2dBaWdDQUVFSWFoQ2JCZzBCREFJTElBQWdCUkFSSUFRMkFnQWdBaUVFSUFVaEJnd0NDd05BSUFNb0FnQWlBeWdDQUVVTkFTQUhJQUpCQ0dvZ0F5Z0NBRUVJYWhDYkJnMEFDd3NnQkNBREtBSUFOZ0lBSUFNZ0FDQUZFQkVvQWdBb0FnQTJBZ0FnQUNBRkVCRW9BZ0FnQWpZQ0FBc2dCQ2dDQUNJQ0RRQUxEQUVMSUFCQkFCQ3JBaUFBRUNWQkFEWUNBQXNMQ3dBZ0FDQUJFUGNKSUFBTENnQWdBU2dDQUJEUUJ3dEpBUUYvSXdCQkVHc2lBaVFBSUFJZ0FDQUJFTVFGTmdJSUlBSWdBQkIrTmdJQVFRQWhBQ0FDUVFocUlBSVF1QU5GQkVBZ0FrRUlhaEJYS0FJUUlRQUxJQUpCRUdva0FDQUFDMkVCQVg4akFFRkFhaUlDSkFBZ0FpQUJLQUlJTmdJQUlBSkJJR3BCR0VITXpBa2dBaEFuR2lBQ1FSQnFJQUZCQUJEUkJ5QUFJQUpCRUdvUUV4QzZBeUFDUVJCcUVDQWFJQUFnQWtFZ2FoQzZBeUFBUWRETUNSQzZBeUFDUVVCckpBQUxSZ0FnQVFSQUlBQVEyUUZCQUE4TElBQW9BZ1F0QUFRRVFDQUFLQUlFSWdFZ0FFRU1ha0hHeUFrZ0FDZ0NKRUdWdmdsQkFDQUJLQUlBS0FLa0FSRUNBQXNnQUJEWUFRc05BQ0FBS1FNQUlBRXBBd0JVQ3cwQUlBQXBBd0FnQVNrREFGTUxEUUFnQUM4QkFDQUJMd0VBU1FzTkFDQUFMZ0VBSUFFdUFRQklDdzBBSUFBdEFBQWdBUzBBQUVrTERRQWdBQ3dBQUNBQkxBQUFTQXNOQUNBQUt3TUFJQUVyQXdCakN5MEFJQUVnQUNnQ0NFY0VRQU5BSUFBb0FoQWFJQUFnQUNnQ0NFRjRhallDQ0NBQUtBSUlJQUZIRFFBTEN3c1BBQ0FBS0FJQUlBRkJBM1FRbEFJTFF3RUJmeU1BUVJCcklnRWtBQ0FBRURzYUlBRkIvLy8vL3dFMkFnd2dBVUgvLy8vL0J6WUNDQ0FCUVF4cUlBRkJDR29RcEFFb0FnQWhBQ0FCUVJCcUpBQWdBQXNQQUNBQUlBQW9BZ0JCRUdvMkFnQUxRd0VCZnlNQVFSQnJJZ0VrQUNBQUVEc2FJQUZCLy8vLy93QTJBZ3dnQVVILy8vLy9CellDQ0NBQlFReHFJQUZCQ0dvUXBBRW9BZ0FoQUNBQlFSQnFKQUFnQUFzL0FRRi9JQUFRbWdvZ0FVa0VRQkJ1QUFzZ0FDQUFFRHNnQVJEZUJ5SUNOZ0lBSUFBZ0FqWUNCQ0FBRUJzZ0FpQUJRUVIwYWpZQ0FDQUFRUUFRbndZTFpRRURmeUFBUVpTd0R6WUNBRUVRRUVZaUJDQURFS3dLSUFBZ0JEWUNCQ0FEUVFGT0JFQkJBQ0VFQTBBZ0FTQUNJQVJxRUE4aEJTQUFLQUlFSUFRUXhBRWlCaUFGS0FJSU5nSUlJQVlnQlNrREFEY0RBQ0FFUVFGcUlnUWdBMGNOQUFzTElBQUxsUUlCQkg4akFFSGdBR3NpQkNRQUlBUkJDR29nQVNBQktBSUFLQUo0RVFBQUlBSkJBQkROQVNJRkVCc2lBQ0FBS1FJRVFrQ0RRZ0tFTndJRUlBVVF4UUVoQmtFQUlRQUNRQ0FCSUFFb0FnQW9BbmdSQUFBUWhRRU5BQUpBQWtBZ0FTQUJLQUlBS0FLZ0FSRUFBQTBBSUFFZ0FTZ0NBQ2dDckFFUkFBQkZEUUFnQWtFQVNnMEJEQUlMSUFJZ0Jtd2hBQXdCQ3dOQUlBRWdBU2dDQUNnQ2VCRUFBQ2dDUUNBSEVEZ29BZ0FReFFFZ0FHb2hBQ0FIUVFGcUlnY2dBa2NOQUFzTElBUWdBU0FCS0FJQUtBSVVFUUFBRUVzZ0FDQUdFSndLSUFFZ0FTZ0NBQ2dDZUJFQUFDQURRUUFRMEFJaUFBUkFJQUFnQlNBQUtBSUFLQUowRVFFQUlBQWhBUXNnQlJBMUdpQUVRZUFBYWlRQUlBRUxDUUFnQUNBQkVMQVFDd2tBSUFBZ0FSQ3hFQXNKQUNBQUlBRVFzaEFMQ1FBZ0FDQUJFTE1RQ3drQUlBQWdBUkMwRUFzSkFDQUFJQUVRdFJBTENRQWdBQ0FCRUxjUUN3a0FJQUFnQVJDNEVBc0pBQ0FBSUFFUXVSQUxDUUFnQUNBQkVMb1FDd2tBSUFBZ0FSQzdFQXNKQUNBQUlBRVF2QkFMQ1FBZ0FDQUJFTDBRQ3drQUlBQWdBUkMvRUFzYUFDQUFFUDBISUFFRVFDQUFJQUVRbXdvZ0FDQUJFS3dRQ3dzSUFDQUFLUU1BVUFzTUFDQUFJQUVRcndwQkFYTUxSQUFnQUNnQ0JDSUFJQUVvQWdRaUFVWUVRRUVCRHdzZ0FFVWdBVVZ5Qkg5QkFBVWdBQkNvQVNBQkVLZ0JSZ1IvSUFBUVFDQUFFRElnQVJCQUVLc1FCVUVBQ3dzTE5nRUNmeUFBUVpTd0R6WUNBRUVRRUVZaUJDSURFUDBISUFFRVFDQURJQUVRbXdvZ0F5QUJJQUlRclJBTElBQWdCRFlDQkNBQUN5d0JBWDhnQVNBQUtBSUVJZ0pIQkVBRFFDQUFFRHNhSUFKQmZHb2lBaUFCUncwQUN3c2dBQ0FCTmdJRUN3d0FJQUFnQUNnQ0FCQ3hDZ3NMQUNBQUlBQVFQQkNxQmdzSEFDQUFLQUlZQ3djQUlBQW9BaFFMUUFFQmZ5QUFRZUNYQ1RZQ0FDQUFLQUtrQVNJQkJFQWdBUkN6Q2dzZ0FFR1FBV29RR1JvZ0FFR0FBV29RMndFZ0FFSHdBR29RMndFZ0FCRGVCQm9nQUFzSEFDQUFLQUowQ3drQUlBQWdBVFlDZEFzSkFDQUFJQUUyQW5BTENnQWdBQkRlQkJvZ0FBc2NBQ0FBUWFTUkNUWUNBQ0FBUWZBQWFoQVpHaUFBRU40RUdpQUFDd2tBSUFCQkZHb1FHd3NjQUNBQVFkeVBDVFlDQUNBQVFld0FhaEFaR2lBQUVONEVHaUFBQ3hFQUlBQWdBQ2dDQUVGOGFqWUNBQ0FBQ3hBQUlBQWdBVFlDQkNBQUlBRTJBZ0FMTlFFQmZ5TUFRUkJySWdJa0FDQUNJQUFvQWdRMkFnZ2dBaUFCS0FJRU5nSUFJQUpCQ0dvZ0FoQWVJUUFnQWtFUWFpUUFJQUFMQ3dBZ0FDQUJFRUFRdndvTEp3RUJmeUFBS0FJQUlRRWdBRUVBTmdJQUlBRUVRQ0FBRUNVaUFDZ0NBQm9nQUNnQ0JCb0xDeEVBSUFBZ0FSQm5HaUFBUVFScUVNY0dDeEFBSUFBZ0FEWUNBQ0FBSUFBMkFnUUxDUUFnQUNBQk5nSXNDMEVCQVg4Z0FDZ0NEQ0lDUVFSeEJIOGdBQ0FCRUI4UTRnY2dBQ0FCRUJNUXRnSWFJQUFvQWd3RklBSUxRUUp4QkVBZ0FSQVRRYWoxRVNnQ0FCRFBCaG9MQ3lVQkFYOGdBQ2dDQUNJRElBRTJBZ1FnQVNBRE5nSUFJQUFnQWpZQ0FDQUNJQUEyQWdRTERBQWdBQ0FCS1FJQU53SUFDMVFCQVg4akFFRVFheUlDSkFBZ0FpQUFFRHNRL1JBZ0FpZ0NBRUVJYWlBQkVNZ0tJQUFnQWlnQ0FDQUNLQUlBRU1rSUlBQVFHeUlBSUFBb0FnQkJBV28yQWdBZ0FoQmZHaUFDRU1JS0lBSkJFR29rQUFzTkFCRFZBMEVRRUpRQ0VPRUhDN2dCQVFGL1FRSWhBUUpBSUFCQi9Ja0pFQ3NOQUNBQVFZT0tDUkFyRFFCQkJ5RUJJQUJCa0lvSkVDc05BRUVTSVFFZ0FFR1lpZ2tRS3cwQVFSTWhBU0FBUVorS0NSQXJEUUFnQUVHa2lna1FLdzBBUVJzaEFTQUFRYkNLQ1JBckRRQkJIQ0VCSUFCQnhJb0pFQ3NOQUVFZElRRWdBRUhXaWdrUUt3MEFRUjRoQVNBQVFlV0tDUkFyRFFCQkh5RUJJQUJCOUlvSkVDc05BRUVnSVFFZ0FFR0hpd2tRS3cwQVFTRkJBQ0FBUVpLTENSQXJHeUVCQ3lBQkMza0JBWDhqQUVFZ2F5SURKQUFnQXlBQk5nSVFJQU1nQURZQ0dDQURJQUkyQWdnZ0EwRVlhaUFEUVJCcUVCNEVRQU5BSUFNb0FoZ3NBQUJCM2dFUkFBQWhBQ0FES0FJSUlBQTZBQUFnQTBFWWFoRGpBeUFEUVFocUVPTURJQU5CR0dvZ0EwRVFhaEFlRFFBTElBTW9BZ2dhQ3lBRFFTQnFKQUFMS3dFQmZ5QUFLQUlBSVFJZ0FDQUJOZ0lBSUFJRVFDQUFFQ1VpQUNnQ0FCb2dBQ2dDQkJvZ0FoQXFDd3NUQUNBQUlBRVFaeG9nQUVFRWFpQUNFR2NhQ3owQkFYOGdBU0FDUndSQUlBTW9BZ0FoQkFOQUlBQWdCRUY4YWlBQ1FYeHFJZ0lRbHdNZ0F5QURLQUlBUVh4cUlnUTJBZ0FnQVNBQ1J3MEFDd3NMUXdFQmZ5TUFRUkJySWdFa0FDQUFFRHNhSUFGQi8vLy8vd00yQWd3Z0FVSC8vLy8vQnpZQ0NDQUJRUXhxSUFGQkNHb1FwQUVvQWdBaEFDQUJRUkJxSkFBZ0FBc3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkFiR2lBQ1FYeHFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBdXJCZ0lGZndSK0l3QkJnQUZySWdVa0FBSkFBa0FDUUNBRElBUkNBRUlBRUtZRVJRMEFJQU1nQkJDSEVTRUhJQUpDTUlpbklnbEIvLzhCY1NJR1FmLy9BVVlOQUNBSERRRUxJQVZCRUdvZ0FTQUNJQU1nQkJDTEFTQUZJQVVwQXhBaUFpQUZLUU1ZSWdFZ0FpQUJFTUVMSUFVcEF3Z2hBaUFGS1FNQUlRUU1BUXNnQVNBQ1F2Ly8vLy8vL3orRElBYXRRakNHaENJS0lBTWdCRUwvLy8vLy8vOC9neUFFUWpDSXAwSC8vd0Z4SWdldFFqQ0doQ0lMRUtZRVFRQk1CRUFnQVNBS0lBTWdDeENtQkFSQUlBRWhCQXdDQ3lBRlFmQUFhaUFCSUFKQ0FFSUFFSXNCSUFVcEEzZ2hBaUFGS1FOd0lRUU1BUXNnQmdSK0lBRUZJQVZCNEFCcUlBRWdDa0lBUW9DQWdJQ0FnTUM3d0FBUWl3RWdCU2tEYUNJS1FqQ0lwMEdJZjJvaEJpQUZLUU5nQ3lFRUlBZEZCRUFnQlVIUUFHb2dBeUFMUWdCQ2dJQ0FnSUNBd0x2QUFCQ0xBU0FGS1FOWUlndENNSWluUVloL2FpRUhJQVVwQTFBaEF3c2dDa0wvLy8vLy8vOC9nMEtBZ0lDQWdJREFBSVFpQ2lBTFF2Ly8vLy8vL3orRFFvQ0FnSUNBZ01BQWhDSU5mU0FFSUFOVXJYMGlERUovVlNFSUlBUWdBMzBoQ3lBR0lBZEtCRUFEUUFKK0lBZ0VRQ0FMSUF5RVVBUkFJQVZCSUdvZ0FTQUNRZ0JDQUJDTEFTQUZLUU1vSVFJZ0JTa0RJQ0VFREFVTElBdENQNGdoQ2lBTVFnR0dEQUVMSUFwQ0FZWWhDaUFFSVFzZ0JFSS9pQXNoRENBS0lBeUVJZ29nRFgwZ0MwSUJoaUlFSUFOVXJYMGlERUovVlNFSUlBUWdBMzBoQ3lBR1FYOXFJZ1lnQjBvTkFBc2dCeUVHQ3dKQUlBaEZEUUFnQ3lJRUlBd2lDb1JDQUZJTkFDQUZRVEJxSUFFZ0FrSUFRZ0FRaXdFZ0JTa0RPQ0VDSUFVcEF6QWhCQXdCQ3lBS1F2Ly8vLy8vL3o5WUJFQURRQ0FFUWorSUlRRWdCa0YvYWlFR0lBUkNBWVloQkNBQklBcENBWWFFSWdwQ2dJQ0FnSUNBd0FCVURRQUxDeUFKUVlDQUFuRWhCeUFHUVFCTUJFQWdCVUZBYXlBRUlBcEMvLy8vLy8vL1A0TWdCa0g0QUdvZ0IzS3RRakNHaEVJQVFvQ0FnSUNBZ01ERFB4Q0xBU0FGS1FOSUlRSWdCU2tEUUNFRURBRUxJQXBDLy8vLy8vLy9QNE1nQmlBSGNxMUNNSWFFSVFJTElBQWdCRGNEQUNBQUlBSTNBd2dnQlVHQUFXb2tBQXVxREFFR2Z5QUFJQUZxSVFVQ1FBSkFJQUFvQWdRaUFrRUJjUTBBSUFKQkEzRkZEUUVnQUNnQ0FDSURJQUZxSVFFZ0FDQURheUlBUWVUWkZDZ0NBRWNFUUVIZzJSUW9BZ0FoQkNBRFFmOEJUUVJBSUFBb0FnZ2lCQ0FEUVFOMklnTkJBM1JCK05rVWFrY2FJQVFnQUNnQ0RDSUNSZ1JBUWREWkZFSFEyUlFvQWdCQmZpQURkM0UyQWdBTUF3c2dCQ0FDTmdJTUlBSWdCRFlDQ0F3Q0N5QUFLQUlZSVFZQ1FDQUFJQUFvQWd3aUFrY0VRQ0FFSUFBb0FnZ2lBMDBFUUNBREtBSU1HZ3NnQXlBQ05nSU1JQUlnQXpZQ0NBd0JDd0pBSUFCQkZHb2lBeWdDQUNJRURRQWdBRUVRYWlJREtBSUFJZ1FOQUVFQUlRSU1BUXNEUUNBRElRY2dCQ0lDUVJScUlnTW9BZ0FpQkEwQUlBSkJFR29oQXlBQ0tBSVFJZ1FOQUFzZ0IwRUFOZ0lBQ3lBR1JRMEJBa0FnQUNBQUtBSWNJZ05CQW5SQmdOd1VhaUlFS0FJQVJnUkFJQVFnQWpZQ0FDQUNEUUZCMU5rVVFkVFpGQ2dDQUVGK0lBTjNjVFlDQUF3REN5QUdRUkJCRkNBR0tBSVFJQUJHRzJvZ0FqWUNBQ0FDUlEwQ0N5QUNJQVkyQWhnZ0FDZ0NFQ0lEQkVBZ0FpQUROZ0lRSUFNZ0FqWUNHQXNnQUNnQ0ZDSURSUTBCSUFJZ0F6WUNGQ0FESUFJMkFoZ01BUXNnQlNnQ0JDSUNRUU54UVFOSERRQkIyTmtVSUFFMkFnQWdCU0FDUVg1eE5nSUVJQUFnQVVFQmNqWUNCQ0FGSUFFMkFnQVBDd0pBSUFVb0FnUWlBa0VDY1VVRVFDQUZRZWpaRkNnQ0FFWUVRRUhvMlJRZ0FEWUNBRUhjMlJSQjNOa1VLQUlBSUFGcUlnRTJBZ0FnQUNBQlFRRnlOZ0lFSUFCQjVOa1VLQUlBUncwRFFkalpGRUVBTmdJQVFlVFpGRUVBTmdJQUR3c2dCVUhrMlJRb0FnQkdCRUJCNU5rVUlBQTJBZ0JCMk5rVVFkalpGQ2dDQUNBQmFpSUJOZ0lBSUFBZ0FVRUJjallDQkNBQUlBRnFJQUUyQWdBUEMwSGcyUlFvQWdBaEF5QUNRWGh4SUFGcUlRRUNRQ0FDUWY4QlRRUkFJQVVvQWdnaUJDQUNRUU4ySWdKQkEzUkIrTmtVYWtjYUlBUWdCU2dDRENJRFJnUkFRZERaRkVIUTJSUW9BZ0JCZmlBQ2QzRTJBZ0FNQWdzZ0JDQUROZ0lNSUFNZ0JEWUNDQXdCQ3lBRktBSVlJUVlDUUNBRklBVW9BZ3dpQWtjRVFDQURJQVVvQWdnaUEwMEVRQ0FES0FJTUdnc2dBeUFDTmdJTUlBSWdBellDQ0F3QkN3SkFJQVZCRkdvaUF5Z0NBQ0lFRFFBZ0JVRVFhaUlES0FJQUlnUU5BRUVBSVFJTUFRc0RRQ0FESVFjZ0JDSUNRUlJxSWdNb0FnQWlCQTBBSUFKQkVHb2hBeUFDS0FJUUlnUU5BQXNnQjBFQU5nSUFDeUFHUlEwQUFrQWdCU0FGS0FJY0lnTkJBblJCZ053VWFpSUVLQUlBUmdSQUlBUWdBallDQUNBQ0RRRkIxTmtVUWRUWkZDZ0NBRUYrSUFOM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBVkdHMm9nQWpZQ0FDQUNSUTBCQ3lBQ0lBWTJBaGdnQlNnQ0VDSURCRUFnQWlBRE5nSVFJQU1nQWpZQ0dBc2dCU2dDRkNJRFJRMEFJQUlnQXpZQ0ZDQURJQUkyQWhnTElBQWdBVUVCY2pZQ0JDQUFJQUZxSUFFMkFnQWdBRUhrMlJRb0FnQkhEUUZCMk5rVUlBRTJBZ0FQQ3lBRklBSkJmbkUyQWdRZ0FDQUJRUUZ5TmdJRUlBQWdBV29nQVRZQ0FBc2dBVUgvQVUwRVFDQUJRUU4ySWdKQkEzUkIrTmtVYWlFQkFuOUIwTmtVS0FJQUlnTkJBU0FDZENJQ2NVVUVRRUhRMlJRZ0FpQURjallDQUNBQkRBRUxJQUVvQWdnTElRTWdBU0FBTmdJSUlBTWdBRFlDRENBQUlBRTJBZ3dnQUNBRE5nSUlEd3NnQUVJQU53SVFJQUFDZjBFQUlBRkJDSFlpQWtVTkFCcEJIeUFCUWYvLy93ZExEUUFhSUFJZ0FrR0EvajlxUVJCMlFRaHhJZ0owSWdNZ0EwR0E0QjlxUVJCMlFRUnhJZ04wSWdRZ0JFR0FnQTlxUVJCMlFRSnhJZ1IwUVE5MklBSWdBM0lnQkhKcklnSkJBWFFnQVNBQ1FSVnFka0VCY1hKQkhHb0xJZ00yQWh3Z0EwRUNkRUdBM0JScUlRSUNRQUpBUWRUWkZDZ0NBQ0lFUVFFZ0EzUWlCM0ZGQkVCQjFOa1VJQVFnQjNJMkFnQWdBaUFBTmdJQUlBQWdBallDR0F3QkN5QUJRUUJCR1NBRFFRRjJheUFEUVI5R0czUWhBeUFDS0FJQUlRSURRQ0FDSWdRb0FnUkJlSEVnQVVZTkFpQURRUjEySVFJZ0EwRUJkQ0VESUFRZ0FrRUVjV29pQjBFUWFpZ0NBQ0lDRFFBTElBY2dBRFlDRUNBQUlBUTJBaGdMSUFBZ0FEWUNEQ0FBSUFBMkFnZ1BDeUFFS0FJSUlnRWdBRFlDRENBRUlBQTJBZ2dnQUVFQU5nSVlJQUFnQkRZQ0RDQUFJQUUyQWdnTEMxSUJBWDhnQUNnQ0JDRUVJQUFvQWdBaUFDQUJBbjlCQUNBQ1JRMEFHaUFFUVFoMUlnRWdCRUVCY1VVTkFCb2dBaWdDQUNBQmFpZ0NBQXNnQW1vZ0EwRUNJQVJCQW5FYklBQW9BZ0FvQWh3UkJBQUxKd0VCZnlNQVFSQnJJZ0lrQUNBQ0VPb0hJQUFnQWlBQkVKa1JJQUlRSUJvZ0FrRVFhaVFBQzcwQkFRTi9Jd0JCRUdzaUJTUUFRZS8vLy84RElnWWdBV3NnQWs4RVFDQUFFQk1oQndKL0lBWkJBWFpCY0dvZ0FVc0VRQ0FGSUFGQkFYUTJBZ2dnQlNBQklBSnFOZ0lNSUFWQkRHb2dCVUVJYWhCU0tBSUFFTXNGREFFTElBWkJmMm9MUVFGcUlnWVFnZ0loQWlBRUJFQWdBaUFISUFRUXB3UUxJQU1nQkdzaUF3UkFJQVJCQW5RaUJDQUNhaUFFSUFkcUlBTVFwd1FMSUFGQkFVY0VRQ0FIRUNvTElBQWdBaERoQVNBQUlBWVE2UUVnQlVFUWFpUUFEd3NRYmdBTEJ3QWdBQkN6Qmd1SUFnRURmeU1BUVJCcklnZ2tBRUh2Ly8vL0F5SUpJQUZCZjNOcUlBSlBCRUFnQUJBVElRb0NmeUFKUVFGMlFYQnFJQUZMQkVBZ0NDQUJRUUYwTmdJSUlBZ2dBU0FDYWpZQ0RDQUlRUXhxSUFoQkNHb1FVaWdDQUJETEJRd0JDeUFKUVg5cUMwRUJhaUlKRUlJQ0lRSWdCQVJBSUFJZ0NpQUVFS2NFQ3lBR0JFQWdCRUVDZENBQ2FpQUhJQVlRcHdRTElBTWdCV3NpQXlBRWF5SUhCRUFnQkVFQ2RDSUVJQUpxSUFaQkFuUnFJQVFnQ21vZ0JVRUNkR29nQnhDbkJBc2dBVUVCUndSQUlBb1FLZ3NnQUNBQ0VPRUJJQUFnQ1JEcEFTQUFJQU1nQm1vaUFCQzhBU0FJUVFBMkFnUWdBaUFBUVFKMGFpQUlRUVJxRUo4Q0lBaEJFR29rQUE4TEVHNEFDeFFBSUFFRVFDQUFJQUlRMWdNZ0FSRGRBUm9MQ3pFQkFYOGdBQ2dDRUJvZ0FDZ0NDQ0VDQTBBZ0FoQ3pCaUFBSUFBb0FnaEJCR29pQWpZQ0NDQUJRWDlxSWdFTkFBc0w3Z0VCQTM4akFFRVFheUlJSkFBZ0FVRi9jMEZ2YWlBQ1R3UkFJQUFRRXlFSklBQUNmMEhuLy8vL0J5QUJTd1JBSUFnZ0FVRUJkRFlDQ0NBSUlBRWdBbW8yQWd3Z0NFRU1haUFJUVFocUVGSW9BZ0FRNUFJTUFRdEJiZ3RCQVdvaUNoQ0JCQ0VDSUFRRVFDQUNJQWtnQkJEb0FRc2dCZ1JBSUFJZ0JHb2dCeUFHRU9nQkN5QURJQVZySWdNZ0JHc2lCd1JBSUFJZ0JHb2dCbW9nQkNBSmFpQUZhaUFIRU9nQkN5QUJRUXBIQkVBZ0NSQXFDeUFBSUFJUTRRRWdBQ0FLRU9rQklBQWdBeUFHYWlJQUVMd0JJQWhCQURvQUJ5QUFJQUpxSUFoQkIyb1FsQUVnQ0VFUWFpUUFEd3NRYmdBTERRQWdBQ0FDU1NBQklBQk5jUXNKQUNBQUVIODJBZ0FMTEFFQmZ5QUFLQUlFSVFJRFFDQUJJQUpIQkVBZ0FCQ2pCQm9nQWtGOGFpRUNEQUVMQ3lBQUlBRTJBZ1FMR2dBQ1FDQUFJQUZHQkVBZ0FFRUFPZ0J3REFFTElBRVFLZ3NMT0FCQjBOY1VLQUlBR2tIUTF4UW9BZ0JCME5jVUVLSUVRUUowYWhwQjBOY1VLQUlBUWREWEZCQ2lCRUVDZEdvYVFkRFhGQ2dDQUJvTENRQWdBQ0FCRUxFUkMwWUJBbjhqQUVFUWF5SUFKQUJCME5jVUVLTUVHaUFBUWYvLy8vOEROZ0lNSUFCQi8vLy8vd2MyQWdnZ0FFRU1haUFBUVFocUVLUUJLQUlBSVFFZ0FFRVFhaVFBSUFFTENRQWdBQkR1QnhBcUN4MEFJQUFnQUNnQ0FFSC8vNzkvY1VHQWdNQUFRUUFnQVJ0eU5nSUFDeFVBSUFCQmdMMFNOZ0lBSUFCQkVHb1FJQm9nQUFzVkFDQUFRZGk4RWpZQ0FDQUFRUXhxRUNBYUlBQUxCQUJCQkF0Q0FRSi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJRUWhxSUFGQkRHb1E5UUloQUVFRVFRRkJ3UE1TS0FJQUtBSUFHeUVDSUFBUTlBSWdBVUVRYWlRQUlBSUxQZ0VCZnlNQVFSQnJJZ1VrQUNBRklBUTJBZ3dnQlVFSWFpQUZRUXhxRVBVQ0lRUWdBQ0FCSUFJZ0F4RElCaUVBSUFRUTlBSWdCVUVRYWlRQUlBQUxFZ0FnQkNBQ05nSUFJQWNnQlRZQ0FFRURDeWdCQVg4Z0FFSDB1eEkyQWdBQ1FDQUFLQUlJSWdGRkRRQWdBQzBBREVVTkFDQUJFQ29MSUFBTFlBRUNmd0pBSUFBUVBDSURCRUFEUUFKQUlBQVFJeUFDSUFOQkVHb1Fqd1FFUUNBREtBSUFJZ1JGRFFRTUFRc2dBeWdDQkNJRURRQWdBU0FETmdJQUlBTkJCR29QQ3lBRUlRTU1BQUFMQUFzZ0FCQWxJUU1MSUFFZ0F6WUNBQ0FEQ3h3QUlBRW9BZ0FRdVFZZ0FDZ0NBQkROQlNBQUlBRW9BZ0EyQWdBTERBQWdBQ0FBS0FJQUVORUtDeFFBSUFBUWt4SW9BZ0FpQURZQ0FDQUFFTGtHQ3pRQUlBQW9BZ0FhSUFBb0FnQWdBQkNpQkVFQ2RHb2FJQUFvQWdBZ0FCQVdRUUowYWhvZ0FDZ0NBQ0FBRUtJRVFRSjBhaG9MY1FFQ2Z5QUFRZUM3RWpZQ0FDQUFRUkJxSVFFRFFDQUNJQUVRRmtrRVFDQUJJQUlRRVNnQ0FBUkFJQUVnQWhBUktBSUFFTTBGQ3lBQ1FRRnFJUUlNQVFzTElBQkJzQUZxRUNBYUlBRVE4QW9nQVNnQ0FBUkFJQUVROUFvZ0FSQ2pCQ0FCS0FJQUlBRVFvZ1FRM3dvTElBQUxRZ0FDUUVId3loUXRBQUJCQVhFTkFFSHd5aFFRcmdGRkRRQVFteEpCNk1vVVFjRFhGRFlDQUVIc3loUkI2TW9VTmdJQVFmREtGQkN0QVF0QjdNb1VLQUlBQ3lzQUlBQW9BZ0FhSUFBb0FnQWdBQkNpQkVFQ2RHb2FJQUFvQWdBYUlBQW9BZ0FnQUJBV1FRSjBhaG9MREFBZ0FDQUFLQUlBRU40S0MwTUJBWDhqQUVFUWF5SUJKQUJCME5jVUVLTUVHZ05BUWRUWEZDZ0NBQkN6QmtIVTF4UkIxTmNVS0FJQVFRUnFOZ0lBSUFCQmYyb2lBQTBBQ3lBQlFSQnFKQUFMV1FFQmZ5QUFLQUlJUlFSQVFRQVBDd0pBSUFBUXB3SUVRQ0FBS0FJSUlnQkJBRFlDQUNBQUtBSUVJZ0ZGRFFFZ0FSQy9EZzhMSUFBb0FnaEJBRFlDQkNBQUtBSUlJZ0FvQWdBaUFVVU5BQ0FCRUw4T0lRQUxJQUFMSUFBZ0FFR292QkkyQWdBZ0FDZ0NDQkIvUndSQUlBQW9BZ2dRdGdzTElBQUxEd0FnQUNnQ0FDQUJMQUFBRU9JRUN6OEJBWDhqQUVFUWF5SURKQUFnQXlBQU5nSUlBMEFnQVNBQ1NRUkFJQU5CQ0dvZ0FSRDRDaUFCUVFGcUlRRU1BUXNMSUFNb0FnZ2FJQU5CRUdva0FBc1ZBRUYvQW44Z0FSQVRHa0gvLy8vL0J3dEJBUnNMQ3dBZ0FDQUJJQUlRb1JJTGl3WUJDbjhqQUVFUWF5SVVKQUFnQWlBQU5nSUFJQU5CZ0FSeElSWUNRQU5BSUJWQkJFWUVRQUpBSUEwUUgwRUJTd1JBSUJRZ0RSRHNBVFlDQ0NBQ0lCUkJDR3BCQVJEQkJTQU5FT3NESUFJb0FnQVErd28yQWdBTElBTkJzQUZ4SWdOQkVFWU5BeUFEUVNCSERRQWdBU0FDS0FJQU5nSUFEQU1MQlFKQUlBZ2dGV29zQUFBaUQwRUVTdzBBQWtBQ1FBSkFBa0FDUUNBUFFRRnJEZ1FCQXdJRUFBc2dBU0FDS0FJQU5nSUFEQVFMSUFFZ0FpZ0NBRFlDQUNBR1FTQVFuUUloRHlBQ0lBSW9BZ0FpRUVFRWFqWUNBQ0FRSUE4MkFnQU1Bd3NnRFJEN0FRMENJQTFCQUJEQ0JpZ0NBQ0VQSUFJZ0FpZ0NBQ0lRUVFScU5nSUFJQkFnRHpZQ0FBd0NDeUFNRVBzQklCWkZjZzBCSUFJZ0RCRHNBU0FNRU9zRElBSW9BZ0FRK3dvMkFnQU1BUXNnQWlnQ0FDRVhJQVJCQkdvZ0JDQUhHeUlFSVJFRFFBSkFJQkVnQlU4TkFDQUdRWUFRSUJFb0FnQVEyZ0pGRFFBZ0VVRUVhaUVSREFFTEN5QU9JZzlCQVU0RVFBTkFJQTlCQVVnaUVDQVJJQVJOY2tVRVFDQVJRWHhxSWhFb0FnQWhFQ0FDSUFJb0FnQWlFa0VFYWpZQ0FDQVNJQkEyQWdBZ0QwRi9haUVQREFFTEN5QVFCSDlCQUFVZ0JrRXdFSjBDQ3lFVElBSW9BZ0FoRUFOQUlCQkJCR29oRWlBUFFRRk9CRUFnRUNBVE5nSUFJQTlCZjJvaER5QVNJUkFNQVFzTElBSWdFallDQUNBUUlBazJBZ0FMQWtBZ0JDQVJSZ1JBSUFaQk1CQ2RBaUVQSUFJZ0FpZ0NBQ0lRUVFScUloRTJBZ0FnRUNBUE5nSUFEQUVMQW45QmZ5QUxFUHNCRFFBYUlBdEJBQkJRTEFBQUN5RVNRUUFoRDBFQUlSTURRQ0FFSUJGSEJFQUNRQ0FQSUJKSEJFQWdEeUVRREFFTElBSWdBaWdDQUNJUVFRUnFOZ0lBSUJBZ0NqWUNBRUVBSVJBZ0UwRUJhaUlUSUFzUUgwOEVRQ0FQSVJJTUFRc2dDeUFURUZBdEFBQkIvd0JHQkVCQmZ5RVNEQUVMSUFzZ0V4QlFMQUFBSVJJTElCRkJmR29pRVNnQ0FDRVBJQUlnQWlnQ0FDSVlRUVJxTmdJQUlCZ2dEellDQUNBUVFRRnFJUThNQVFzTElBSW9BZ0FoRVFzZ0Z5QVJFTDRHQ3lBVlFRRnFJUlVNQVFzTElBRWdBRFlDQUFzZ0ZFRVFhaVFBQzdzQ0FRRi9Jd0JCRUdzaUNpUUFJQWtDZnlBQUJFQWdBaENDQ3lFQUFrQWdBUVJBSUFvZ0FCRG9BeUFESUFvb0FnQTJBQUFnQ2lBQUVPWUREQUVMSUFvZ0FCQzZCaUFESUFvb0FnQTJBQUFnQ2lBQUVOZ0NDeUFJSUFvUWxBTWdDaEFnR2lBRUlBQVEwZ0kyQWdBZ0JTQUFFSWdDTmdJQUlBb2dBQkNIQWlBR0lBb1Ewd0VnQ2hBZ0dpQUtJQUFRMlFJZ0J5QUtFSlFESUFvUUlCb2dBQkRsQXd3QkN5QUNFSUVMSVFBQ1FDQUJCRUFnQ2lBQUVPZ0RJQU1nQ2lnQ0FEWUFBQ0FLSUFBUTVnTU1BUXNnQ2lBQUVMb0dJQU1nQ2lnQ0FEWUFBQ0FLSUFBUTJBSUxJQWdnQ2hDVUF5QUtFQ0FhSUFRZ0FCRFNBallDQUNBRklBQVFpQUkyQWdBZ0NpQUFFSWNDSUFZZ0NoRFRBU0FLRUNBYUlBb2dBQkRaQWlBSElBb1FsQU1nQ2hBZ0dpQUFFT1VEQ3pZQ0FDQUtRUkJxSkFBTEN3QWdBQ0FCSUFJUW9oSUwvUVVCQ244akFFRVFheUlVSkFBZ0FpQUFOZ0lBSUFOQmdBUnhJUllEUUFKQUFrQUNRQUpBSUJWQkJFWUVRQ0FORUI5QkFVc0VRQ0FVSUEwUTdBRTJBZ2dnQWlBVVFRaHFRUUVRaHdzZ0RSQ1RBeUFDS0FJQUVQNEtOZ0lBQ3lBRFFiQUJjU0lEUVJCR0RRSWdBMEVnUncwQklBRWdBaWdDQURZQ0FBd0NDeUFJSUJWcUxBQUFJZzlCQkVzTkF3SkFBa0FDUUFKQUFrQWdEMEVCYXc0RUFRTUNCQUFMSUFFZ0FpZ0NBRFlDQUF3SEN5QUJJQUlvQWdBMkFnQWdCa0VnRU40QklROGdBaUFDS0FJQUloQkJBV28yQWdBZ0VDQVBPZ0FBREFZTElBMFErd0VOQlNBTlFRQVFVQzBBQUNFUElBSWdBaWdDQUNJUVFRRnFOZ0lBSUJBZ0R6b0FBQXdGQ3lBTUVQc0JJQlpGY2cwRUlBSWdEQkRzQVNBTUVKTURJQUlvQWdBUS9nbzJBZ0FNQkFzZ0FpZ0NBQ0VYSUFSQkFXb2dCQ0FIR3lJRUlSRURRQUpBSUJFZ0JVOE5BQ0FHUVlBUUlCRXNBQUFReXdKRkRRQWdFVUVCYWlFUkRBRUxDeUFPSWc5QkFVNEVRQU5BSUE5QkFVZ2lFQ0FSSUFSTmNrVUVRQ0FSUVg5cUloRXRBQUFoRUNBQ0lBSW9BZ0FpRWtFQmFqWUNBQ0FTSUJBNkFBQWdEMEYvYWlFUERBRUxDeUFRQkg5QkFBVWdCa0V3RU40QkN5RVNBMEFnQWlBQ0tBSUFJaEJCQVdvMkFnQWdEMEVCVGdSQUlCQWdFam9BQUNBUFFYOXFJUThNQVFzTElCQWdDVG9BQUFzZ0JDQVJSZ1JBSUFaQk1CRGVBU0VQSUFJZ0FpZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFBd0RDd0ovUVg4Z0N4RDdBUTBBR2lBTFFRQVFVQ3dBQUFzaEVFRUFJUTlCQUNFVEEwQWdCQ0FSUmcwREFrQWdEeUFRUndSQUlBOGhFZ3dCQ3lBQ0lBSW9BZ0FpRUVFQmFqWUNBQ0FRSUFvNkFBQkJBQ0VTSUJOQkFXb2lFeUFMRUI5UEJFQWdEeUVRREFFTElBc2dFeEJRTFFBQVFmOEFSZ1JBUVg4aEVBd0JDeUFMSUJNUVVDd0FBQ0VRQ3lBUlFYOXFJaEV0QUFBaER5QUNJQUlvQWdBaUdFRUJhallDQUNBWUlBODZBQUFnRWtFQmFpRVBEQUFBQ3dBTElBRWdBRFlDQUFzZ0ZFRVFhaVFBRHdzZ0Z5QUNLQUlBRUtVRUN5QVZRUUZxSVJVTUFBQUxBQXU3QWdFQmZ5TUFRUkJySWdva0FDQUpBbjhnQUFSQUlBSVFpUXNoQUFKQUlBRUVRQ0FLSUFBUTZBTWdBeUFLS0FJQU5nQUFJQW9nQUJEbUF3d0JDeUFLSUFBUXVnWWdBeUFLS0FJQU5nQUFJQW9nQUJEWUFnc2dDQ0FLRU5NQklBb1FJQm9nQkNBQUVOSUNPZ0FBSUFVZ0FCQ0lBam9BQUNBS0lBQVFod0lnQmlBS0VOTUJJQW9RSUJvZ0NpQUFFTmtDSUFjZ0NoRFRBU0FLRUNBYUlBQVE1UU1NQVFzZ0FoQ0lDeUVBQWtBZ0FRUkFJQW9nQUJEb0F5QURJQW9vQWdBMkFBQWdDaUFBRU9ZRERBRUxJQW9nQUJDNkJpQURJQW9vQWdBMkFBQWdDaUFBRU5nQ0N5QUlJQW9RMHdFZ0NoQWdHaUFFSUFBUTBnSTZBQUFnQlNBQUVJZ0NPZ0FBSUFvZ0FCQ0hBaUFHSUFvUTB3RWdDaEFnR2lBS0lBQVEyUUlnQnlBS0VOTUJJQW9RSUJvZ0FCRGxBd3MyQWdBZ0NrRVFhaVFBQ3dzQUlBQkJvTW9VRUpzREN3c0FJQUJCcU1vVUVKc0RDMWdCQW44akFFRVFheUlCSkFBQ1FDQUFFTUVCQkVBZ0FDZ0NBQ0VDSUFGQkFEWUNEQ0FDSUFGQkRHb1Fud0lnQUVFQUVMd0JEQUVMSUFGQkFEWUNDQ0FBSUFGQkNHb1Fud0lnQUVFQUVOUUJDeUFCUVJCcUpBQUxGUUFnQUNBQktBSUFFTW9MSUFFb0FnQVFtUUVhQytvTkFRaC9Jd0JCc0FScklnc2tBQ0FMSUFvMkFxUUVJQXNnQVRZQ3FBUWdDMEhWQkRZQ1lDQUxJQXRCaUFGcUlBdEJrQUZxSUF0QjRBQnFFSjRCSWc4b0FnQWlBVFlDaEFFZ0N5QUJRWkFEYWpZQ2dBRWdDMEhnQUdvUVRpRVJJQXRCMEFCcUVNb0NJUTRnQzBGQWF4REtBaUVNSUF0Qk1Hb1F5Z0loRFNBTFFTQnFFTW9DSVJBZ0FpQURJQXRCK0FCcUlBdEI5QUJxSUF0QjhBQnFJQkVnRGlBTUlBMGdDMEVjYWhDc0VpQUpJQWdvQWdBMkFnQWdCRUdBQkhFaEVrRUFJUUZCQUNFRUEwQWdCQ0VLQWtBQ1FBSkFJQUZCQkVZTkFDQUFJQXRCcUFScUVQWUJSUTBBQWtBQ1FBSkFJQXRCK0FCcUlBRnFMQUFBSWdKQkJFc05BRUVBSVFRQ1FBSkFBa0FDUUFKQUlBSkJBV3NPQkFBRUF3Y0JDeUFCUVFOR0RRUWdCMEdBd0FBZ0FCQ2xBUkRhQWdSQUlBdEJFR29nQUJDRUN5QVFJQXNvQWhBUXRBWU1BZ3NnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdJQ3lBQlFRTkdEUU1MQTBBZ0FDQUxRYWdFYWhEMkFVVU5BeUFIUVlEQUFDQUFFS1VCRU5vQ1JRMERJQXRCRUdvZ0FCQ0VDeUFRSUFzb0FoQVF0QVlNQUFBTEFBc2dEQkFmUVFBZ0RSQWZhMFlOQVFKQUlBd1FId1JBSUEwUUh3MEJDeUFNRUI4aEF5QUFFS1VCSVFJZ0F3UkFJQXdRRXlnQ0FDQUNSZ1JBSUFBUXZRRWFJQXdnQ2lBTUVCOUJBVXNiSVFRTUNRc2dCa0VCT2dBQURBTUxJQUlnRFJBVEtBSUFSdzBDSUFBUXZRRWFJQVpCQVRvQUFDQU5JQW9nRFJBZlFRRkxHeUVFREFjTElBQVFwUUVnREJBVEtBSUFSZ1JBSUFBUXZRRWFJQXdnQ2lBTUVCOUJBVXNiSVFRTUJ3c2dBQkNsQVNBTkVCTW9BZ0JHQkVBZ0FCQzlBUm9nQmtFQk9nQUFJQTBnQ2lBTkVCOUJBVXNiSVFRTUJ3c2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0ZDeUFTSUFGQkFra2dDbkp5UlFSQUlBRkJBa1lnQ3kwQWUwRUFSM0ZGRFFZTElBc2dEaERzQVRZQ0NDQUxRUkJxSUF0QkNHb1FaeUVDQWtBZ0FVVU5BQ0FCSUF0cUxRQjNRUUZMRFFBRFFBSkFJQXNnRGhEckF6WUNDQ0FDSUF0QkNHb1FIa1VOQUNBSFFZREFBQ0FDS0FJQUtBSUFFTm9DUlEwQUlBSVFaaG9NQVFzTElBc2dEaERzQVRZQ0NDQUNJQXRCQ0dvUW53UWlBaUFRRUI5TkJFQWdDeUFRRU9zRE5nSUlJQXRCQ0dvZ0FoQ0dCeUFRRU9zRElBNFE3QUVRcUJJTkFRc2dDeUFPRU93Qk5nSUFJQXRCQ0dvZ0N4Qm5HaUFMSUFzb0FnZzJBaEFMSUFzZ0N5Z0NFRFlDQ0FOQUFrQWdDeUFPRU9zRE5nSUFJQXRCQ0dvZ0N4QWVSUTBBSUFBZ0MwR29CR29ROWdGRkRRQWdBQkNsQVNBTEtBSUlLQUlBUncwQUlBQVF2UUVhSUF0QkNHb1FaaG9NQVFzTElCSkZEUUFnQ3lBT0VPc0ROZ0lBSUF0QkNHb2dDeEFlRFFFTElBb2hCQXdFQ3lBRklBVW9BZ0JCQkhJMkFnQkJBQ0VBREFJTEEwQUNRQ0FBSUF0QnFBUnFFUFlCUlEwQUFuOGdCMEdBRUNBQUVLVUJJZ0lRMmdJRVFDQUpLQUlBSWdNZ0N5Z0NwQVJHQkVBZ0NDQUpJQXRCcEFScUVPUUVJQWtvQWdBaEF3c2dDU0FEUVFScU5nSUFJQU1nQWpZQ0FDQUVRUUZxREFFTElBUkZJQkVRSDBWeURRRWdBaUFMS0FKd1J3MEJJQXNvQW9RQklnSWdDeWdDZ0FGR0JFQWdEeUFMUVlRQmFpQUxRWUFCYWhEa0JDQUxLQUtFQVNFQ0N5QUxJQUpCQkdvMkFvUUJJQUlnQkRZQ0FFRUFDeUVFSUFBUXZRRWFEQUVMQ3lBUEtBSUFJUU1DUUNBRVJRMEFJQU1nQ3lnQ2hBRWlBa1lOQUNBTEtBS0FBU0FDUmdSQUlBOGdDMEdFQVdvZ0MwR0FBV29RNUFRZ0N5Z0NoQUVoQWdzZ0N5QUNRUVJxTmdLRUFTQUNJQVEyQWdBTEFrQWdDeWdDSEVFQlNBMEFBa0FnQUNBTFFhZ0VhaERIQVVVRVFDQUFFS1VCSUFzb0FuUkdEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzRFFDQUFFTDBCR2lBTEtBSWNRUUZJRFFFQ1FDQUFJQXRCcUFScUVNY0JSUVJBSUFkQmdCQWdBQkNsQVJEYUFnMEJDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVFMSUFrb0FnQWdDeWdDcEFSR0JFQWdDQ0FKSUF0QnBBUnFFT1FFQ3lBQUVLVUJJUUlnQ1NBSktBSUFJZ05CQkdvMkFnQWdBeUFDTmdJQUlBc2dDeWdDSEVGL2FqWUNIQXdBQUFzQUN5QUtJUVFnQ0NnQ0FDQUpLQUlBUncwQ0lBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUFRc0NRQ0FLUlEwQVFRRWhCQU5BSUFRZ0NoQWZUdzBCQWtBZ0FDQUxRYWdFYWhESEFVVUVRQ0FBRUtVQklBb2dCQkRDQmlnQ0FFWU5BUXNnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdEQ3lBQUVMMEJHaUFFUVFGcUlRUU1BQUFMQUF0QkFTRUFJQThvQWdBZ0N5Z0NoQUZHRFFCQkFDRUFJQXRCQURZQ0VDQVJJQThvQWdBZ0N5Z0NoQUVnQzBFUWFoRHZBU0FMS0FJUUJFQWdCU0FGS0FJQVFRUnlOZ0lBREFFTFFRRWhBQXNnRUJBZ0dpQU5FQ0FhSUF3UUlCb2dEaEFnR2lBUkVDQWFJQThRblFFZ0MwR3dCR29rQUNBQUR3c2dBVUVCYWlFQkRBQUFDd0FMSFFBZ0FDQUJFRjhReGdFZ0FSQWxLQUlBSVFFZ0FCQWxJQUUyQWdBTE5BRUJmeU1BUVJCcklnSWtBQ0FDSUFBb0FnQTJBZ2dnQWlBQ0tBSUlJQUZxTmdJSUlBSW9BZ2doQUNBQ1FSQnFKQUFnQUFzTEFDQUFRWkRLRkJDYkF3c0xBQ0FBUVpqS0ZCQ2JBd3ZGQVFFR2Z5TUFRUkJySWdRa0FDQUFFQ1VvQWdBaEJRSi9JQUlvQWdBZ0FDZ0NBR3NpQTBILy8vLy9CMGtFUUNBRFFRRjBEQUVMUVg4TElnTkJBU0FER3lFRElBRW9BZ0FoQmlBQUtBSUFJUWNnQlVIVkJFWUVmMEVBQlNBQUtBSUFDeUFERUxBR0lnZ0VRQ0FGUWRVRVJ3UkFJQUFRWHhvTElBUkIxQVEyQWdRZ0FDQUVRUWhxSUFnZ0JFRUVhaENlQVNJRkVJWUxJQVVRblFFZ0FTQUFLQUlBSUFZZ0IydHFOZ0lBSUFJZ0F5QUFLQUlBYWpZQ0FDQUVRUkJxSkFBUEN4Q0NBUUFMR2dBZ0FDQUJLQUlBRU00TFFSaDBRUmgxSUFFb0FnQVFkUm9MbXc0QkNIOGpBRUd3QkdzaUN5UUFJQXNnQ2pZQ3BBUWdDeUFCTmdLb0JDQUxRZFVFTmdKb0lBc2dDMEdJQVdvZ0MwR1FBV29nQzBIb0FHb1FuZ0VpRHlnQ0FDSUJOZ0tFQVNBTElBRkJrQU5xTmdLQUFTQUxRZWdBYWhCT0lSRWdDMEhZQUdvUVRpRU9JQXRCeUFCcUVFNGhEQ0FMUVRocUVFNGhEU0FMUVNocUVFNGhFQ0FDSUFNZ0MwSDRBR29nQzBIM0FHb2dDMEgyQUdvZ0VTQU9JQXdnRFNBTFFTUnFFTEVTSUFrZ0NDZ0NBRFlDQUNBRVFZQUVjU0VTUVFBaEFVRUFJUVFEUUNBRUlRb0NRQUpBQWtBZ0FVRUVSZzBBSUFBZ0MwR29CR29ROEFGRkRRQUNRQUpBQWtBZ0MwSDRBR29nQVdvc0FBQWlBa0VFU3cwQVFRQWhCQUpBQWtBQ1FBSkFBa0FnQWtFQmF3NEVBQVFEQndFTElBRkJBMFlOQkNBSFFZREFBQ0FBRUo4QkVNc0NCRUFnQzBFWWFpQUFFSXNMSUJBZ0N5d0FHQkRpQkF3Q0N5QUZJQVVvQWdCQkJISTJBZ0JCQUNFQURBZ0xJQUZCQTBZTkF3c0RRQ0FBSUF0QnFBUnFFUEFCUlEwRElBZEJnTUFBSUFBUW53RVF5d0pGRFFNZ0MwRVlhaUFBRUlzTElCQWdDeXdBR0JEaUJBd0FBQXNBQ3lBTUVCOUJBQ0FORUI5clJnMEJBa0FnREJBZkJFQWdEUkFmRFFFTElBd1FIeUVESUFBUW53RWhBaUFEQkVBZ0RFRUFFRkF0QUFBZ0FrSC9BWEZHQkVBZ0FCQzFBUm9nRENBS0lBd1FIMEVCU3hzaEJBd0pDeUFHUVFFNkFBQU1Bd3NnRFVFQUVGQXRBQUFnQWtIL0FYRkhEUUlnQUJDMUFSb2dCa0VCT2dBQUlBMGdDaUFORUI5QkFVc2JJUVFNQndzZ0FCQ2ZBVUgvQVhFZ0RFRUFFRkF0QUFCR0JFQWdBQkMxQVJvZ0RDQUtJQXdRSDBFQlN4c2hCQXdIQ3lBQUVKOEJRZjhCY1NBTlFRQVFVQzBBQUVZRVFDQUFFTFVCR2lBR1FRRTZBQUFnRFNBS0lBMFFIMEVCU3hzaEJBd0hDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVVMSUJJZ0FVRUNTU0FLY25KRkJFQWdBVUVDUmlBTExRQjdRUUJIY1VVTkJnc2dDeUFPRU93Qk5nSVFJQXRCR0dvZ0MwRVFhaEJuSVFJQ1FDQUJSUTBBSUFFZ0Myb3RBSGRCQVVzTkFBTkFBa0FnQ3lBT0VKTUROZ0lRSUFJZ0MwRVFhaEFlUlEwQUlBZEJnTUFBSUFJb0FnQXNBQUFReXdKRkRRQWdBaERqQXd3QkN3c2dDeUFPRU93Qk5nSVFJQUlvQWdBZ0N5Z0NFR3NpQWlBUUVCOU5CRUFnQ3lBUUVKTUROZ0lRSUF0QkVHcEJBQ0FDYXhDSEN5QVFFSk1ESUE0UTdBRVFyaElOQVFzZ0N5QU9FT3dCTmdJSUlBdEJFR29nQzBFSWFoQm5HaUFMSUFzb0FoQTJBaGdMSUFzZ0N5Z0NHRFlDRUFOQUFrQWdDeUFPRUpNRE5nSUlJQXRCRUdvZ0MwRUlhaEFlUlEwQUlBQWdDMEdvQkdvUThBRkZEUUFnQUJDZkFVSC9BWEVnQ3lnQ0VDMEFBRWNOQUNBQUVMVUJHaUFMUVJCcUVPTUREQUVMQ3lBU1JRMEFJQXNnRGhDVEF6WUNDQ0FMUVJCcUlBdEJDR29RSGcwQkN5QUtJUVFNQkFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3Q0N3TkFBa0FnQUNBTFFhZ0VhaER3QVVVTkFBSi9JQWRCZ0JBZ0FCQ2ZBU0lDRU1zQ0JFQWdDU2dDQUNJRElBc29BcVFFUmdSQUlBZ2dDU0FMUWFRRWFoQ0tDeUFKS0FJQUlRTUxJQWtnQTBFQmFqWUNBQ0FESUFJNkFBQWdCRUVCYWd3QkN5QUVSU0FSRUI5RmNnMEJJQXN0QUhZZ0FrSC9BWEZIRFFFZ0N5Z0NoQUVpQWlBTEtBS0FBVVlFUUNBUElBdEJoQUZxSUF0QmdBRnFFT1FFSUFzb0FvUUJJUUlMSUFzZ0FrRUVhallDaEFFZ0FpQUVOZ0lBUVFBTElRUWdBQkMxQVJvTUFRc0xJQThvQWdBaEF3SkFJQVJGRFFBZ0F5QUxLQUtFQVNJQ1JnMEFJQXNvQW9BQklBSkdCRUFnRHlBTFFZUUJhaUFMUVlBQmFoRGtCQ0FMS0FLRUFTRUNDeUFMSUFKQkJHbzJBb1FCSUFJZ0JEWUNBQXNDUUNBTEtBSWtRUUZJRFFBQ1FDQUFJQXRCcUFScUVMNEJSUVJBSUFBUW53RkIvd0Z4SUFzdEFIZEdEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzRFFDQUFFTFVCR2lBTEtBSWtRUUZJRFFFQ1FDQUFJQXRCcUFScUVMNEJSUVJBSUFkQmdCQWdBQkNmQVJETEFnMEJDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVFMSUFrb0FnQWdDeWdDcEFSR0JFQWdDQ0FKSUF0QnBBUnFFSW9MQ3lBQUVKOEJJUUlnQ1NBSktBSUFJZ05CQVdvMkFnQWdBeUFDT2dBQUlBc2dDeWdDSkVGL2FqWUNKQXdBQUFzQUN5QUtJUVFnQ0NnQ0FDQUpLQUlBUncwQ0lBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUFRc0NRQ0FLUlEwQVFRRWhCQU5BSUFRZ0NoQWZUdzBCQWtBZ0FDQUxRYWdFYWhDK0FVVUVRQ0FBRUo4QlFmOEJjU0FLSUFRUVVDMEFBRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN5QUFFTFVCR2lBRVFRRnFJUVFNQUFBTEFBdEJBU0VBSUE4b0FnQWdDeWdDaEFGR0RRQkJBQ0VBSUF0QkFEWUNHQ0FSSUE4b0FnQWdDeWdDaEFFZ0MwRVlhaER2QVNBTEtBSVlCRUFnQlNBRktBSUFRUVJ5TmdJQURBRUxRUUVoQUFzZ0VCQWdHaUFORUNBYUlBd1FJQm9nRGhBZ0dpQVJFQ0FhSUE4UW5RRWdDMEd3Qkdva0FDQUFEd3NnQVVFQmFpRUJEQUFBQ3dBTERBQWdBRUVCUVMwUW5nc2FDeTBCQVg4Z0FDRUJRUUFoQUFOQUlBQkJBMGNFUUNBQklBQkJBblJxUVFBMkFnQWdBRUVCYWlFQURBRUxDd3NNQUNBQVFRRkJMUkRzRFJvTER3QWdBQkM5QnlBQVFRUnFFTWNHQ3pVQkFYOGpBRUVRYXlJQ0pBQWdBaUFBTFFBQU9nQVBJQUFnQVMwQUFEb0FBQ0FCSUFKQkQyb3RBQUE2QUFBZ0FrRVFhaVFBQzJRQkFYOGpBRUVRYXlJR0pBQWdCa0VBT2dBUElBWWdCVG9BRGlBR0lBUTZBQTBnQmtFbE9nQU1JQVVFUUNBR1FRMXFJQVpCRG1vUWtRc0xJQUlnQVNBQklBSW9BZ0FRbWcwZ0JrRU1haUFESUFBb0FnQVFEQ0FCYWpZQ0FDQUdRUkJxSkFBTEhnRUJmeU1BUVJCcklnRWtBQ0FBSUFGQkNHb1F2UklnQVVFUWFpUUFDMElBSUFFZ0FpQURJQVJCQkJDV0F5RUJJQU10QUFCQkJIRkZCRUFnQUNBQlFkQVBhaUFCUWV3T2FpQUJJQUZCNUFCSUd5QUJRY1VBU0J0QmxIRnFOZ0lBQ3d0QUFDQUNJQU1nQUVFSWFpQUFLQUlJS0FJRUVRQUFJZ0FnQUVHZ0Ftb2dCU0FFUVFBUXd3WWdBR3NpQUVHZkFrd0VRQ0FCSUFCQkRHMUJERzgyQWdBTEMwQUFJQUlnQXlBQVFRaHFJQUFvQWdnb0FnQVJBQUFpQUNBQVFhZ0JhaUFGSUFSQkFCRERCaUFBYXlJQVFhY0JUQVJBSUFFZ0FFRU1iVUVIYnpZQ0FBc0xPZ0VCZnlBQklBSkhCRUFnQXlnQ0FDRUVBMEFnQUNBRUlBRVFsd01nQXlBREtBSUFRUVJxSWdRMkFnQWdBVUVFYWlJQklBSkhEUUFMQ3d0Q0FDQUJJQUlnQXlBRVFRUVFtQU1oQVNBRExRQUFRUVJ4UlFSQUlBQWdBVUhRRDJvZ0FVSHNEbW9nQVNBQlFlUUFTQnNnQVVIRkFFZ2JRWlJ4YWpZQ0FBc0xRQUFnQWlBRElBQkJDR29nQUNnQ0NDZ0NCQkVBQUNJQUlBQkJvQUpxSUFVZ0JFRUFFTVVHSUFCcklnQkJud0pNQkVBZ0FTQUFRUXh0UVF4dk5nSUFDd3RBQUNBQ0lBTWdBRUVJYWlBQUtBSUlLQUlBRVFBQUlnQWdBRUdvQVdvZ0JTQUVRUUFReFFZZ0FHc2lBRUduQVV3RVFDQUJJQUJCREcxQkIyODJBZ0FMQ3dRQVFRSUxQd0VCZnlBQUVOQUtJQUZKQkVBUWJnQUxJQUFnQUJBN0lBRVE1QWNpQWpZQ0FDQUFJQUkyQWdRZ0FCQWJJQUlnQVVFQ2RHbzJBZ0FnQUVFQUVLMEZDOE1GQVFwL0l3QkJFR3NpQ1NRQUlBWVFpUUloQ2lBSklBWVE2QVFpRFJDSEFpQUZJQU0yQWdBZ0FDSUhMUUFBSWdaQlZXb2lDRUVDU3lBSVFRRnJSWEpGQkVBZ0NpQUdRUmgwUVJoMUVKMENJUVlnQlNBRktBSUFJZ2RCQkdvMkFnQWdCeUFHTmdJQUlBQkJBV29oQndzQ1FBSkFJQUlnQnlJR2EwRUJUQTBBSUFjdEFBQkJNRWNOQUNBSExRQUJRU0J5UWZnQVJ3MEFJQXBCTUJDZEFpRUdJQVVnQlNnQ0FDSUlRUVJxTmdJQUlBZ2dCallDQUNBS0lBY3NBQUVRblFJaEJpQUZJQVVvQWdBaUNFRUVhallDQUNBSUlBWTJBZ0FnQjBFQ2FpSUhJUVlEUUNBR0lBSlBEUUlnQml3QUFCQi9FTGdMUlEwQ0lBWkJBV29oQmd3QUFBc0FDd05BSUFZZ0FrOE5BU0FHTEFBQUlRZ1FmeG9nQ0JETkFrVU5BU0FHUVFGcUlRWU1BQUFMQUFzQ1FDQUpFUHNCQkVBZ0NpQUhJQVlnQlNnQ0FCQy9BeUFGSUFVb0FnQWdCaUFIYTBFQ2RHbzJBZ0FNQVFzZ0J5QUdFS1VFSUEwUWlBSWhEaUFISVFnRFFDQUlJQVpQQkVBZ0F5QUhJQUJyUVFKMGFpQUZLQUlBRUw0R0JRSkFJQWtnQ3hCUUxBQUFRUUZJRFFBZ0RDQUpJQXNRVUN3QUFFY05BQ0FGSUFVb0FnQWlERUVFYWpZQ0FDQU1JQTQyQWdBZ0N5QUxJQWtRSDBGL2FrbHFJUXRCQUNFTUN5QUtJQWdzQUFBUW5RSWhEeUFGSUFVb0FnQWlFRUVFYWpZQ0FDQVFJQTgyQWdBZ0NFRUJhaUVJSUF4QkFXb2hEQXdCQ3dzTEFrQUNRQU5BSUFZZ0FrOE5BU0FHTFFBQUlnZEJMa2NFUUNBS0lBZEJHSFJCR0hVUW5RSWhCeUFGSUFVb0FnQWlDRUVFYWpZQ0FDQUlJQWMyQWdBZ0JrRUJhaUVHREFFTEN5QU5FTklDSVFjZ0JTQUZLQUlBSWd0QkJHb2lDRFlDQUNBTElBYzJBZ0FnQmtFQmFpRUdEQUVMSUFVb0FnQWhDQXNnQ2lBR0lBSWdDQkMvQXlBRklBVW9BZ0FnQWlBR2EwRUNkR29pQlRZQ0FDQUVJQVVnQXlBQklBQnJRUUowYWlBQklBSkdHellDQUNBSkVDQWFJQWxCRUdva0FBc1NBQ0FBRU9vQklBQWdBU0FDRUpzUklBQUxzZ1VCQ244akFFRVFheUlKSkFBZ0JoRDZBU0VLSUFrZ0JoRHFCQ0lORUljQ0lBVWdBellDQUNBQUlnY3RBQUFpQmtGVmFpSUlRUUpMSUFoQkFXdEZja1VFUUNBS0lBWkJHSFJCR0hVUTNnRWhCaUFGSUFVb0FnQWlCMEVCYWpZQ0FDQUhJQVk2QUFBZ0FFRUJhaUVIQ3dKQUFrQWdBaUFISWdaclFRRk1EUUFnQnkwQUFFRXdSdzBBSUFjdEFBRkJJSEpCK0FCSERRQWdDa0V3RU40QklRWWdCU0FGS0FJQUlnaEJBV28yQWdBZ0NDQUdPZ0FBSUFvZ0J5d0FBUkRlQVNFR0lBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0Jqb0FBQ0FIUVFKcUlnY2hCZ05BSUFZZ0FrOE5BaUFHTEFBQUVIOFF1QXRGRFFJZ0JrRUJhaUVHREFBQUN3QUxBMEFnQmlBQ1R3MEJJQVlzQUFBaENCQi9HaUFJRU0wQ1JRMEJJQVpCQVdvaEJnd0FBQXNBQ3dKQUlBa1Erd0VFUUNBS0lBY2dCaUFGS0FJQUVPNERJQVVnQlNnQ0FDQUdJQWRyYWpZQ0FBd0JDeUFISUFZUXBRUWdEUkNJQWlFT0lBY2hDQU5BSUFnZ0JrOEVRQ0FESUFjZ0FHdHFJQVVvQWdBUXBRUUZBa0FnQ1NBTUVGQXNBQUJCQVVnTkFDQUxJQWtnREJCUUxBQUFSdzBBSUFVZ0JTZ0NBQ0lMUVFGcU5nSUFJQXNnRGpvQUFDQU1JQXdnQ1JBZlFYOXFTV29oREVFQUlRc0xJQW9nQ0N3QUFCRGVBU0VQSUFVZ0JTZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFDQUlRUUZxSVFnZ0MwRUJhaUVMREFFTEN3c0RRQUpBSUFvQ2Z5QUdJQUpKQkVBZ0JpMEFBQ0lIUVM1SERRSWdEUkRTQWlFSElBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0J6b0FBQ0FHUVFGcUlRWUxJQVlMSUFJZ0JTZ0NBQkR1QXlBRklBVW9BZ0FnQWlBR2Eyb2lCVFlDQUNBRUlBVWdBeUFCSUFCcmFpQUJJQUpHR3pZQ0FDQUpFQ0FhSUFsQkVHb2tBQThMSUFvZ0IwRVlkRUVZZFJEZUFTRUhJQVVnQlNnQ0FDSUlRUUZxTmdJQUlBZ2dCem9BQUNBR1FRRnFJUVlNQUFBTEFBc1BBQ0FCSUFJZ0F5QUVJQVVRL2hJTENRQWdBQ0FCRUpVREN4TUFJQUJCQURvQUJDQUFRWUFDTmdBQUlBQUxSUUVCZnlNQVFSQnJJZ01rQUNBRElBRTJBZ3dnQXlBQ05nSUlJQU1nQTBFTWFoRDFBaUVCSUFCQjRia1NJQU1vQWdnUXZBc2hBQ0FCRVBRQ0lBTkJFR29rQUNBQUM2UUJBZ0ovQkg0akFFRWdheUlFSkFBQ1FDQUJJQUpIQkVCQjJNQVVLQUlBSVFWQjJNQVVRUUEyQWdBZ0JDQUJJQVJCSEdvUXFoRWdCQ2tEQ0NFR0lBUXBBd0FoQjBIWXdCUW9BZ0FpQVVVRVFFSFl3QlFnQlRZQ0FBc2dBaUFFS0FJY1JnUkFJQWNoQ0NBR0lRa2dBVUhFQUVjTkFnc2dBMEVFTmdJQUlBZ2hCeUFKSVFZTUFRc2dBMEVFTmdJQUN5QUFJQWMzQXdBZ0FDQUdOd01JSUFSQklHb2tBQXVGQVFJQ2Z3SjhJd0JCRUdzaUF5UUFBa0FnQUNBQlJ3UkFRZGpBRkNnQ0FDRUVRZGpBRkVFQU5nSUFFSDhhSUFBZ0EwRU1haENqRXlFRlFkakFGQ2dDQUNJQVJRUkFRZGpBRkNBRU5nSUFDeUFCSUFNb0FneEdCRUFnQlNFR0lBQkJ4QUJIRFFJTElBSkJCRFlDQUNBR0lRVU1BUXNnQWtFRU5nSUFDeUFEUVJCcUpBQWdCUXVGQVFJQ2Z3SjlJd0JCRUdzaUF5UUFBa0FnQUNBQlJ3UkFRZGpBRkNnQ0FDRUVRZGpBRkVFQU5nSUFFSDhhSUFBZ0EwRU1haENrRXlFRlFkakFGQ2dDQUNJQVJRUkFRZGpBRkNBRU5nSUFDeUFCSUFNb0FneEdCRUFnQlNFR0lBQkJ4QUJIRFFJTElBSkJCRFlDQUNBR0lRVU1BUXNnQWtFRU5nSUFDeUFEUVJCcUpBQWdCUXU4QVFJRGZ3RitJd0JCRUdzaUJDUUFBbjRnQUNBQlJ3UkFBa0FDUUNBQUxRQUFJZ1ZCTFVjTkFDQUFRUUZxSWdBZ0FVY05BQXdCQzBIWXdCUW9BZ0FoQmtIWXdCUkJBRFlDQUNBQUlBUkJER29nQXhCL0VQb0hJUWRCMk1BVUtBSUFJZ0JGQkVCQjJNQVVJQVkyQWdBTElBRWdCQ2dDREVjTkFDQUFRY1FBUjBFQVFuOGdCMW9iUlFSQUlBSkJCRFlDQUVKL0RBTUxRZ0FnQjMwZ0J5QUZRUzFHR3d3Q0N3c2dBa0VFTmdJQVFnQUxJUWNnQkVFUWFpUUFJQWNMUXdFQmZ5QUFLQUlFSWdBZ0FTZ0NCQ0lCY2tVaEFpQUFSU0FCUlhJRWZ5QUNCU0FBRUpvQklBRVFtZ0ZHQkg4Z0FCQkFJQUFRTWlBQkVFQVFneE1GUVFBTEN3dkRBUUlEZndGK0l3QkJFR3NpQkNRQUFuOGdBQ0FCUndSQUFrQUNRQ0FBTFFBQUlnVkJMVWNOQUNBQVFRRnFJZ0FnQVVjTkFBd0JDMEhZd0JRb0FnQWhCa0hZd0JSQkFEWUNBQ0FBSUFSQkRHb2dBeEIvRVBvSElRZEIyTUFVS0FJQUlnQkZCRUJCMk1BVUlBWTJBZ0FMSUFFZ0JDZ0NERWNOQUNBQVFjUUFSMEVBSUFkQy8vLy8vdzlZRzBVRVFDQUNRUVEyQWdCQmZ3d0RDMEVBSUFlbklnQnJJQUFnQlVFdFJoc01BZ3NMSUFKQkJEWUNBRUVBQ3lFQUlBUkJFR29rQUNBQUN3OEFJQUVnQWlBRElBUWdCUkNRRXd2SUFRSURmd0YrSXdCQkVHc2lCQ1FBQW44Z0FDQUJSd1JBQWtBQ1FDQUFMUUFBSWdWQkxVY05BQ0FBUVFGcUlnQWdBVWNOQUF3QkMwSFl3QlFvQWdBaEJrSFl3QlJCQURZQ0FDQUFJQVJCREdvZ0F4Qi9FUG9ISVFkQjJNQVVLQUlBSWdCRkJFQkIyTUFVSUFZMkFnQUxJQUVnQkNnQ0RFY05BQ0FBUWNRQVIwRUFJQWRDLy84RFdCdEZCRUFnQWtFRU5nSUFRZi8vQXd3REMwRUFJQWVuSWdCcklBQWdCVUV0UmhzTUFnc0xJQUpCQkRZQ0FFRUFDeUVBSUFSQkVHb2tBQ0FBUWYvL0EzRUx5UUVDQW44QmZpTUFRUkJySWdRa0FBSkFJQUFnQVVjRVFBSkFRZGpBRkNnQ0FDRUZRZGpBRkVFQU5nSUFJQUFnQkVFTWFpQURFSDhRc2dzaEJrSFl3QlFvQWdBaUFFVUVRRUhZd0JRZ0JUWUNBQXNnQVNBRUtBSU1SdzBBSUFCQnhBQkdJQVpDZ0lDQWdJQ0FnSUNBZjFOeVJVRUFRdi8vLy8vLy8vLy8vd0FnQmxrYkRRSWdBa0VFTmdJQUlBWkNBVmtFUUVMLy8vLy8vLy8vLy84QUlRWU1Bd3RDZ0lDQWdJQ0FnSUNBZnlFR0RBSUxDeUFDUVFRMkFnQkNBQ0VHQ3lBRVFSQnFKQUFnQmd1MkFRSUNmd0YrSXdCQkVHc2lCQ1FBQW44Z0FDQUJSd1JBQWtCQjJNQVVLQUlBSVFWQjJNQVVRUUEyQWdBZ0FDQUVRUXhxSUFNUWZ4Q3lDeUVHUWRqQUZDZ0NBQ0lBUlFSQVFkakFGQ0FGTmdJQUN5QUJJQVFvQWd4SERRQWdBRUhFQUVZZ0JrS0FnSUNBZUZOeVJVRUFJQVpDLy8vLy93ZFhHMFVFUUNBQ1FRUTJBZ0JCLy8vLy93Y2dCa0lCV1EwREdrR0FnSUNBZUF3REN5QUdwd3dDQ3dzZ0FrRUVOZ0lBUVFBTElRQWdCRUVRYWlRQUlBQUxDZ0FnQVNBQWEwRU1iUXVZQVFFRWZ5TUFRUkJySWdVa0FDQUJJQUlRcndVaUJFSHYvLy8vQTAwRVFBSkFJQVJCQVUwRVFDQUFJQVFRMUFFZ0FDRUREQUVMSUFBZ0JCRExCVUVCYWlJR0VJSUNJZ01RNFFFZ0FDQUdFT2tCSUFBZ0JCQzhBUXNEUUNBQklBSkhCRUFnQXlBQkVKOENJQU5CQkdvaEF5QUJRUVJxSVFFTUFRc0xJQVZCQURZQ0RDQURJQVZCREdvUW53SWdCVUVRYWlRQUR3c1FiZ0FMYkFFQmZ3SkFJQUVvQWdBZ0FDZ0NBSE5CLy84UGNRMEFJQUFRaWdFZ0FSQ0tBVWNOQUNBQUVLZ0ZJQUVRcUFWSERRQWdBQkNvQWlBQkVLZ0NSdzBBSUFBUXlBUWdBUkRJQkVjTkFDQUFFS2NGSUFFUXB3VkhEUUFnQUJDQUJpQUJFSUFHYzBFQmN5RUNDeUFDQ3drQUlBQWdBUkNvQ3dzV0FDQUFJQUVnQWtLQWdJQ0FnSUNBZ0lCL0VJVUlDekVCQVg5QndQTVNLQUlBSVFFZ0FBUkFRY0R6RWtHUXlSUWdBQ0FBUVg5R0d6WUNBQXRCZnlBQklBRkJrTWtVUmhzTHZ3Z0JCWDhnQVNnQ0FDRUVBa0FDUUFKQUFrQUNRQUpBQWtBQ2Z3SkFBa0FnQTBVTkFDQURLQUlBSWdaRkRRQWdBRVVFUUNBQ0lRTU1CQXNnQTBFQU5nSUFJQUloQXd3QkN3SkFBa0JCd1BNU0tBSUFLQUlBUlFSQUlBQkZEUUVnQWtVTkN5QUNJUVlEUUNBRUxBQUFJZ01FUUNBQUlBTkIvNzhEY1RZQ0FDQUFRUVJxSVFBZ0JFRUJhaUVFSUFaQmYyb2lCZzBCREEwTEN5QUFRUUEyQWdBZ0FVRUFOZ0lBSUFJZ0Jtc1BDeUFDSVFNZ0FFVU5BU0FDSVFWQkFBd0RDeUFFRUtBQkR3dEJBU0VGREFJTFFRRUxJUWNEUUNBSFJRUkFJQVZGRFFnRFFBSkFBa0FDUUNBRUxRQUFJZ2RCZjJvaUNFSCtBRXNFUUNBSElRWWdCU0VEREFFTElBUkJBM0VnQlVFRlNYSU5BU0FGSUFWQmUycEJmSEZyUVh4cUlRTUNRQUpBQTBBZ0JDZ0NBQ0lHUWYvOSszZHFJQVp5UVlDQmdvUjRjUTBCSUFBZ0JrSC9BWEUyQWdBZ0FDQUVMUUFCTmdJRUlBQWdCQzBBQWpZQ0NDQUFJQVF0QUFNMkFnd2dBRUVRYWlFQUlBUkJCR29oQkNBRlFYeHFJZ1ZCQkVzTkFBc2dCQzBBQUNFR0RBRUxJQVVoQXdzZ0JrSC9BWEVpQjBGL2FpRUlDeUFJUWY0QVN3MEJJQU1oQlFzZ0FDQUhOZ0lBSUFCQkJHb2hBQ0FFUVFGcUlRUWdCVUYvYWlJRkRRRU1DZ3NMSUFkQnZuNXFJZ2RCTWtzTkJDQUVRUUZxSVFRZ0IwRUNkRUdRbHhKcUtBSUFJUVpCQVNFSERBRUxJQVF0QUFBaUJVRURkaUlIUVhCcUlBY2dCa0VhZFdweVFRZExEUUlDUUFKQUFuOGdCQ0lIUVFGcUlBVkJnSDlxSUFaQkJuUnlJZ1ZCZjBvTkFCb2dCeTBBQVVHQWYyb2lDRUUvU3cwQklBUkJBbW9nQ0NBRlFRWjBjaUlGUVg5S0RRQWFJQWN0QUFKQmdIOXFJZ2RCUDBzTkFTQUhJQVZCQm5SeUlRVWdCRUVEYWdzaEJDQUFJQVUyQWdBZ0EwRi9haUVGSUFCQkJHb2hBQXdCQzBIWXdCUkJHVFlDQUNBRVFYOXFJUVFNQmd0QkFDRUhEQUFBQ3dBTEEwQWdCVVVFUUNBRUxRQUFRUU4ySWdWQmNHb2dCa0VhZFNBRmFuSkJCMHNOQWdKL0lBUWlCVUVCYWlBR1FZQ0FnQkJ4UlEwQUdpQUZMUUFCUWNBQmNVR0FBVWNOQXlBRVFRSnFJQVpCZ0lBZ2NVVU5BQm9nQlMwQUFrSEFBWEZCZ0FGSERRTWdCRUVEYWdzaEJDQURRWDlxSVFOQkFTRUZEQUVMQTBBQ1FDQUVRUU54SUFRdEFBQWlCa0YvYWtIK0FFdHlEUUFnQkNnQ0FDSUdRZi85KzNkcUlBWnlRWUNCZ29SNGNRMEFBMEFnQTBGOGFpRURJQVFvQWdRaEJpQUVRUVJxSWdVaEJDQUdJQVpCLy8zN2QycHlRWUNCZ29SNGNVVU5BQXNnQlNFRUN5QUdRZjhCY1NJRlFYOXFRZjRBVFFSQUlBTkJmMm9oQXlBRVFRRnFJUVFNQVFzTElBVkJ2bjVxSWdWQk1rc05BaUFFUVFGcUlRUWdCVUVDZEVHUWx4SnFLQUlBSVFaQkFDRUZEQUFBQ3dBTElBUkJmMm9oQkNBR0RRRWdCQzBBQUNFR0N5QUdRZjhCY1EwQUlBQUVRQ0FBUVFBMkFnQWdBVUVBTmdJQUN5QUNJQU5yRHd0QjJNQVVRUmsyQWdBZ0FFVU5BUXNnQVNBRU5nSUFDMEYvRHdzZ0FTQUVOZ0lBSUFJTEl3RUNmeUFBSVFFRFFDQUJJZ0pCQkdvaEFTQUNLQUlBRFFBTElBSWdBR3RCQW5VTERnQWdBQkM1Q3dSQUlBQVFLZ3NMS2dFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFSEF1eElnQVJDOEN5RUFJQUpCRUdva0FDQUFDeGNBSUFBUXpRSkJBRWNnQUVFZ2NrR2ZmMnBCQmtseUN4Y0FJQUJCQUVjZ0FFSHdtUkpIY1NBQVFZaWFFa2R4QzhzRkFRbC9Jd0JCa0FKcklnVWtBQUpBSUFFdEFBQU5BRUdnbWhJUXhnWWlBUVJBSUFFdEFBQU5BUXNnQUVFTWJFR3dtaEpxRU1ZR0lnRUVRQ0FCTFFBQURRRUxRZmlhRWhER0JpSUJCRUFnQVMwQUFBMEJDMEg5bWhJaEFRc0NRQU5BSUFFZ0Ftb3RBQUFpQTBVZ0EwRXZSbkpGQkVCQkR5RUVJQUpCQVdvaUFrRVBSdzBCREFJTEN5QUNJUVFMUWYyYUVpRURBa0FDUUFKQUFrQUNRQ0FCTFFBQUlnSkJMa1lOQUNBQklBUnFMUUFBRFFBZ0FTRURJQUpCd3dCSERRRUxJQU10QUFGRkRRRUxJQU5CL1pvU0VIcEZEUUFnQTBHRm14SVFlZzBCQ3lBQVJRUkFRZFNaRWlFQ0lBTXRBQUZCTGtZTkFndEJBQ0VDREFFTFFiakpGQ2dDQUNJQ0JFQURRQ0FESUFKQkNHb1Fla1VOQWlBQ0tBSVlJZ0lOQUFzTFFiREpGQkFGUWJqSkZDZ0NBQ0lDQkVBRFFDQURJQUpCQ0dvUWVrVUVRRUd3eVJRUUFBd0RDeUFDS0FJWUlnSU5BQXNMUVFBaEFRSkFBa0FDUUVId3lCUW9BZ0FOQUVHTG14SVF4Z1lpQWtVTkFDQUNMUUFBUlEwQUlBUkJBV29oQ0VIK0FTQUVheUVKQTBBZ0FrRTZFT0VMSWdjZ0Ftc2dCeTBBQUNJS1FRQkhheUlHSUFsSkJIOGdCVUVRYWlBQ0lBWVFQUm9nQlVFUWFpQUdhaUlDUVM4NkFBQWdBa0VCYWlBRElBUVFQUm9nQlVFUWFpQUdJQWhxYWtFQU9nQUFJQVZCRUdvZ0JVRU1haEFDSWdZRVFFRWNFSnNCSWdJTkJDQUdJQVVvQWd3UXFoTU1Bd3NnQnkwQUFBVWdDZ3RCQUVjZ0Iyb2lBaTBBQUEwQUN3dEJIQkNiQVNJQ1JRMEJJQUpCMUprU0tRSUFOd0lBSUFKQkNHb2lBU0FESUFRUVBSb2dBU0FFYWtFQU9nQUFJQUpCdU1rVUtBSUFOZ0lZUWJqSkZDQUNOZ0lBSUFJaEFRd0JDeUFDSUFZMkFnQWdBaUFGS0FJTU5nSUVJQUpCQ0dvaUFTQURJQVFRUFJvZ0FTQUVha0VBT2dBQUlBSkJ1TWtVS0FJQU5nSVlRYmpKRkNBQ05nSUFJQUloQVF0QnNNa1VFQUFnQVVIVW1SSWdBQ0FCY2hzaEFnc2dCVUdRQW1va0FDQUNDd3dBSUFBUTFRTTJBZ0FnQUF0S0FRRi9Jd0JCa0FGcklnTWtBQ0FEUVFCQmtBRVEzUUVpQTBGL05nSk1JQU1nQURZQ0xDQURRZE1FTmdJZ0lBTWdBRFlDVkNBRElBRWdBaEN2RXlFQUlBTkJrQUZxSkFBZ0FBdE9BQUpBSUFCRkRRQWdBVUVDYWlJQlFRVkxEUUFDUUFKQUFrQUNRQ0FCUVFGckRnVUJBZ0lFQXdBTElBQWdBandBQUE4TElBQWdBajBCQUE4TElBQWdBajRDQUE4TElBQWdBamNEQUFzTHRnTUNBMzhCZmlNQVFTQnJJZ01rQUFKQUlBRkMvLy8vLy8vLy8vLy9BSU1pQlVLQWdJQ0FnSURBdjBCOElBVkNnSUNBZ0lDQXdNQy9mM3hVQkVBZ0FVSVppS2NoQWlBQVVDQUJRdi8vL3crRElnVkNnSUNBQ0ZRZ0JVS0FnSUFJVVJ0RkJFQWdBa0dCZ0lDQUJHb2hBZ3dDQ3lBQ1FZQ0FnSUFFYWlFQ0lBQWdCVUtBZ0lBSWhZUkNBRklOQVNBQ1FRRnhJQUpxSVFJTUFRc2dBRkFnQlVLQWdJQ0FnSURBLy84QVZDQUZRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUJRaG1JcDBILy8vOEJjVUdBZ0lEK0IzSWhBZ3dCQzBHQWdJRDhCeUVDSUFWQy8vLy8vLy8vdjcvQUFGWU5BRUVBSVFJZ0JVSXdpS2NpQkVHUi9nQkpEUUFnQXlBQUlBRkMvLy8vLy8vL1A0TkNnSUNBZ0lDQXdBQ0VJZ1ZCZ2Y4QUlBUnJFTzBFSUFOQkVHb2dBQ0FGSUFSQi80Ri9haEQzQVNBREtRTUlJZ0JDR1lpbklRSWdBeWtEQUNBREtRTVFJQU1wQXhpRVFnQlNyWVFpQlZBZ0FFTC8vLzhQZ3lJQVFvQ0FnQWhVSUFCQ2dJQ0FDRkViUlFSQUlBSkJBV29oQWd3QkN5QUZJQUJDZ0lDQUNJV0VRZ0JTRFFBZ0FrRUJjU0FDYWlFQ0N5QURRU0JxSkFBZ0FpQUJRaUNJcDBHQWdJQ0FlSEZ5dmd2OUF3SURmd0YrQWtBQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWtFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVIc0xJZ05CVldvaUFrRUNUVUVBSUFKQkFXc2JSUVJBSUFOQlVHb2hBUXdCQ3lBRFFTMUdJUVFDUUNBQlJRSi9JQUFvQWdRaUFpQUFLQUpvU1FSQUlBQWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBQVFld3NpQWtGUWFpSUJRUXBKY2cwQUlBQW9BbWhGRFFBZ0FDQUFLQUlFUVg5cU5nSUVDeUFDSVFNTEFrQWdBVUVLU1FSQVFRQWhBUU5BSUFNZ0FVRUtiR29oQVFKL0lBQW9BZ1FpQWlBQUtBSm9TUVJBSUFBZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFBUWV3c2lBMEZRYWlJQ1FRbE5RUUFnQVVGUWFpSUJRY3lacytZQVNCc05BQXNnQWF3aEJRSkFJQUpCQ2s4TkFBTkFJQU90SUFWQ0NuNThRbEI4SVFVQ2Z5QUFLQUlFSWdFZ0FDZ0NhRWtFUUNBQUlBRkJBV28yQWdRZ0FTMEFBQXdCQ3lBQUVIc0xJZ05CVUdvaUFrRUpTdzBCSUFWQ3JvK0YxOGZDNjZNQlV3MEFDd3NnQWtFS1NRUkFBMEFDZnlBQUtBSUVJZ0VnQUNnQ2FFa0VRQ0FBSUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFBRUhzTFFWQnFRUXBKRFFBTEN5QUFLQUpvQkVBZ0FDQUFLQUlFUVg5cU5nSUVDMElBSUFWOUlBVWdCQnNoQlF3QkMwS0FnSUNBZ0lDQWdJQi9JUVVnQUNnQ2FFVU5BQ0FBSUFBb0FnUkJmMm8yQWdSQ2dJQ0FnSUNBZ0lDQWZ3OExJQVVMaVFnQ0JYOENmaU1BUVRCcklnVWtBQUpBSUFKQkFrMEVRQ0FDUVFKMElnSkJySmtTYWlnQ0FDRUhJQUpCb0prU2FpZ0NBQ0VJQTBBQ2Z5QUJLQUlFSWdJZ0FTZ0NhRWtFUUNBQklBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQkVIc0xJZ0lRcVFRTkFBc0NRQ0FDUVZWcUlnUkJBa3NFUUVFQklRWU1BUXRCQVNFR0lBUkJBV3RGRFFCQmYwRUJJQUpCTFVZYklRWWdBU2dDQkNJQ0lBRW9BbWhKQkVBZ0FTQUNRUUZxTmdJRUlBSXRBQUFoQWd3QkN5QUJFSHNoQWd0QkFDRUVBa0FDUUFOQUlBUkIzSmdTYWl3QUFDQUNRU0J5UmdSQUFrQWdCRUVHU3cwQUlBRW9BZ1FpQWlBQktBSm9TUVJBSUFFZ0FrRUJhallDQkNBQ0xRQUFJUUlNQVFzZ0FSQjdJUUlMSUFSQkFXb2lCRUVJUncwQkRBSUxDeUFFUVFOSEJFQWdCRUVJUmcwQklBTkZJQVJCQkVseURRSWdCRUVJUmcwQkN5QUJLQUpvSWdJRVFDQUJJQUVvQWdSQmYybzJBZ1FMSUFORklBUkJCRWx5RFFBRFFDQUNCRUFnQVNBQktBSUVRWDlxTmdJRUN5QUVRWDlxSWdSQkEwc05BQXNMSUFVZ0JySkRBQUNBZjVRUXN4TWdCU2tEQ0NFSklBVXBBd0FoQ2d3Q0N3SkFBa0FDUUNBRURRQkJBQ0VFQTBBZ0JFSGxtQkpxTEFBQUlBSkJJSEpIRFFFQ1FDQUVRUUZMRFFBZ0FTZ0NCQ0lDSUFFb0FtaEpCRUFnQVNBQ1FRRnFOZ0lFSUFJdEFBQWhBZ3dCQ3lBQkVIc2hBZ3NnQkVFQmFpSUVRUU5IRFFBTERBRUxBa0FDUUNBRVFRTkxEUUFnQkVFQmF3NERBQUFDQVFzZ0FTZ0NhQVJBSUFFZ0FTZ0NCRUYvYWpZQ0JBc01BZ3NDUUNBQ1FUQkhEUUFDZnlBQktBSUVJZ1FnQVNnQ2FFa0VRQ0FCSUFSQkFXbzJBZ1FnQkMwQUFBd0JDeUFCRUhzTFFTQnlRZmdBUmdSQUlBVkJFR29nQVNBSUlBY2dCaUFERUxFVElBVXBBeGdoQ1NBRktRTVFJUW9NQlFzZ0FTZ0NhRVVOQUNBQklBRW9BZ1JCZjJvMkFnUUxJQVZCSUdvZ0FTQUNJQWdnQnlBR0lBTVFzQk1nQlNrREtDRUpJQVVwQXlBaENnd0RDd0pBQW44Z0FTZ0NCQ0lDSUFFb0FtaEpCRUFnQVNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQVJCN0MwRW9SZ1JBUVFFaEJBd0JDMEtBZ0lDQWdJRGcvLzhBSVFrZ0FTZ0NhRVVOQXlBQklBRW9BZ1JCZjJvMkFnUU1Bd3NEUUFKL0lBRW9BZ1FpQWlBQktBSm9TUVJBSUFFZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFFUWV3c2lBa0ZRYWtFS1NTQUNRYjkvYWtFYVNYSWdBa0hmQUVaeVJVRUFJQUpCbjM5cVFScFBHMFVFUUNBRVFRRnFJUVFNQVFzTFFvQ0FnSUNBZ09ELy93QWhDU0FDUVNsR0RRSWdBU2dDYUNJQ0JFQWdBU0FCS0FJRVFYOXFOZ0lFQ3lBREJFQWdCRVVOQXdOQUlBUkJmMm9oQkNBQ0JFQWdBU0FCS0FJRVFYOXFOZ0lFQ3lBRURRQUxEQU1MQzBIWXdCUkJIRFlDQUNBQlFnQVEyd0lMUWdBaENRc2dBQ0FLTndNQUlBQWdDVGNEQ0NBRlFUQnFKQUFMdHhBQ0JYOE1maU1BUWNBQmF5SUZKQUFnQkVMLy8vLy8vLzgvZ3lFU0lBSkMvLy8vLy8vL1A0TWhEQ0FDSUFTRlFvQ0FnSUNBZ0lDQWdIK0RJUkVnQkVJd2lLZEIvLzhCY1NFSUFrQUNRQUpBSUFKQ01JaW5RZi8vQVhFaUNVRi9ha0g5L3dGTkJFQWdDRUYvYWtIKy93RkpEUUVMSUFGUUlBSkMvLy8vLy8vLy8vLy9BSU1pQ2tLQWdJQ0FnSURBLy84QVZDQUtRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUNRb0NBZ0lDQWdDQ0VJUkVNQWdzZ0ExQWdCRUwvLy8vLy8vLy8vLzhBZ3lJQ1FvQ0FnSUNBZ01ELy93QlVJQUpDZ0lDQWdJQ0F3UC8vQUZFYlJRUkFJQVJDZ0lDQWdJQ0FJSVFoRVNBRElRRU1BZ3NnQVNBS1FvQ0FnSUNBZ01ELy93Q0ZoRkFFUUNBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQVFnQWhBVUtBZ0lDQWdJRGcvLzhBSVJFTUF3c2dFVUtBZ0lDQWdJREEvLzhBaENFUlFnQWhBUXdDQ3lBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQVFnQWhBUXdDQ3lBQklBcUVVQTBDSUFJZ0E0UlFCRUFnRVVLQWdJQ0FnSURBLy84QWhDRVJRZ0FoQVF3Q0N5QUtRdi8vLy8vLy96OVlCRUFnQlVHd0FXb2dBU0FNSUFFZ0RDQU1VQ0lHRzNrZ0JrRUdkSzE4cHlJR1FYRnFFUGNCUVJBZ0Jtc2hCaUFGS1FPNEFTRU1JQVVwQTdBQklRRUxJQUpDLy8vLy8vLy9QMVlOQUNBRlFhQUJhaUFESUJJZ0F5QVNJQkpRSWdjYmVTQUhRUVowclh5bklnZEJjV29ROXdFZ0JpQUhha0Z3YWlFR0lBVXBBNmdCSVJJZ0JTa0RvQUVoQXdzZ0JVR1FBV29nRWtLQWdJQ0FnSURBQUlRaUZFSVBoaUFEUWpHSWhDSUNRb1RKK2M2LzVyeUM5UUFnQW4waUJCRDJBaUFGUVlBQmFrSUFJQVVwQTVnQmZTQUVFUFlDSUFWQjhBQnFJQVVwQTRnQlFnR0dJQVVwQTRBQlFqK0loQ0lFSUFJUTlnSWdCVUhnQUdvZ0JFSUFJQVVwQTNoOUVQWUNJQVZCMEFCcUlBVXBBMmhDQVlZZ0JTa0RZRUkvaUlRaUJDQUNFUFlDSUFWQlFHc2dCRUlBSUFVcEExaDlFUFlDSUFWQk1Hb2dCU2tEU0VJQmhpQUZLUU5BUWorSWhDSUVJQUlROWdJZ0JVRWdhaUFFUWdBZ0JTa0RPSDBROWdJZ0JVRVFhaUFGS1FNb1FnR0dJQVVwQXlCQ1A0aUVJZ1FnQWhEMkFpQUZJQVJDQUNBRktRTVlmUkQyQWlBR0lBa2dDR3RxSVFZQ2ZrSUFJQVVwQXdoQ0FZWWdCU2tEQUVJL2lJUkNmM3dpQ2tMLy8vLy9ENE1pQkNBQ1FpQ0lJZzUrSWhBZ0NrSWdpQ0lLSUFKQy8vLy8vdytESWd0K2ZDSUNRaUNHSWcwZ0JDQUxmbndpQ3lBTlZLMGdDaUFPZmlBQ0lCQlVyVUlnaGlBQ1FpQ0loSHg4SUFzZ0JDQURRaEdJUXYvLy8vOFBneUlPZmlJUUlBb2dBMElQaGtLQWdQNy9ENE1pRFg1OElnSkNJSVlpRHlBRUlBMStmQ0FQVkswZ0NpQU9maUFDSUJCVXJVSWdoaUFDUWlDSWhIeDhmQ0lDSUF0VXJYd2dBa0lBVXExOGZTSUxRdi8vLy84UGd5SU9JQVIrSWhBZ0NpQU9maUlOSUFRZ0MwSWdpQ0lQZm53aUMwSWdobndpRGlBUVZLMGdDaUFQZmlBTElBMVVyVUlnaGlBTFFpQ0loSHg4SUE1Q0FDQUNmU0lDUWlDSUlnc2dCSDRpRUNBQ1F2Ly8vLzhQZ3lJTklBcCtmQ0lDUWlDR0lnOGdCQ0FOZm53Z0QxU3RJQW9nQzM0Z0FpQVFWSzFDSUlZZ0FrSWdpSVI4Zkh3aUFpQU9WSzE4SUFKQ2Zud2lFQ0FDVksxOFFuOThJZ3RDLy8vLy93K0RJZ0lnREVJQ2hpQUJRajZJaEVMLy8vLy9ENE1pQkg0aURpQUJRaDZJUXYvLy8vOFBneUlLSUF0Q0lJZ2lDMzU4SWcwZ0RsU3RJQTBnRUVJZ2lDSU9JQXhDSG9oQy8vL3YvdytEUW9DQUVJUWlESDU4SWc4Z0RWU3RmQ0FMSUF4K2ZDQUNJQXgrSWhNZ0JDQUxmbndpRFNBVFZLMUNJSVlnRFVJZ2lJUjhJQThnRFVJZ2hud2lEU0FQVksxOElBMGdDaUFPZmlJVElCQkMvLy8vL3crREloQWdCSDU4SWc4Z0UxU3RJQThnQWlBQlFnS0dRdnovLy84UGd5SVRmbndpRlNBUFZLMThmQ0lQSUExVXJYd2dEeUFMSUJOK0lnc2dEQ0FRZm53aURDQUVJQTUrZkNJRUlBSWdDbjU4SWdKQ0lJZ2dBaUFFVkswZ0RDQUxWSzBnQkNBTVZLMThmRUlnaG9SOElnd2dEMVN0ZkNBTUlCVWdEaUFUZmlJRUlBb2dFSDU4SWdwQ0lJZ2dDaUFFVksxQ0lJYUVmQ0lFSUJWVXJTQUVJQUpDSUlaOElBUlVyWHg4SWdRZ0RGU3RmQ0lDUXYvLy8vLy8vLzhBV0FSQUlBRkNNWVlnQkVMLy8vLy9ENE1pQVNBRFF2Ly8vLzhQZ3lJS2ZpSU1RZ0JTclgxQ0FDQU1mU0lRSUFSQ0lJZ2lEQ0FLZmlJTklBRWdBMElnaUNJTGZud2lEa0lnaGlJUFZLMTlJQUpDLy8vLy93K0RJQXArSUFFZ0VrTC8vLy8vRDROK2ZDQUxJQXgrZkNBT0lBMVVyVUlnaGlBT1FpQ0loSHdnQkNBVVFpQ0lmaUFESUFKQ0lJaCtmQ0FDSUF0K2ZDQU1JQkorZkVJZ2hueDlJUklnQmtGL2FpRUdJQkFnRDMwTUFRc2dCRUloaUNFTElBRkNNSVlnQWtJL2hpQUVRZ0dJaENJRVF2Ly8vLzhQZ3lJQklBTkMvLy8vL3crRElncCtJZ3hDQUZLdGZVSUFJQXg5SWc0Z0FTQURRaUNJSWd4K0loQWdDeUFDUWgrR2hDSU5Rdi8vLy84UGd5SVBJQXArZkNJTFFpQ0dJaE5VclgwZ0RDQVBmaUFLSUFKQ0FZZ2lDa0wvLy8vL0Q0TitmQ0FCSUJKQy8vLy8vdytEZm53Z0N5QVFWSzFDSUlZZ0MwSWdpSVI4SUFRZ0ZFSWdpSDRnQXlBQ1FpR0lmbndnQ2lBTWZud2dEU0FTZm54Q0lJWjhmU0VTSUFvaEFpQU9JQk45Q3lFQklBWkJnSUFCVGdSQUlCRkNnSUNBZ0lDQXdQLy9BSVFoRVVJQUlRRU1BUXNnQmtHQmdIOU1CRUJDQUNFQkRBRUxJQVFnQVVJQmhpQURXaUFTUWdHR0lBRkNQNGlFSWdFZ0ZGb2dBU0FVVVJ1dGZDSUJJQVJVclNBQ1F2Ly8vLy8vL3orRElBWkIvLzhBYXExQ01JYUVmQ0FSaENFUkN5QUFJQUUzQXdBZ0FDQVJOd01JSUFWQndBRnFKQUFQQ3lBQVFnQTNBd0FnQUNBUlFvQ0FnSUNBZ09ELy93QWdBaUFEaEVJQVVoczNBd2dnQlVIQUFXb2tBQXZFQWdFQmZ5TUFRZEFBYXlJRUpBQUNRQ0FEUVlDQUFVNEVRQ0FFUVNCcUlBRWdBa0lBUW9DQWdJQ0FnSUQvL3dBUWl3RWdCQ2tES0NFQ0lBUXBBeUFoQVNBRFFmLy9BVWdFUUNBRFFZR0FmMm9oQXd3Q0N5QUVRUkJxSUFFZ0FrSUFRb0NBZ0lDQWdJRC8vd0FRaXdFZ0EwSDkvd0lnQTBIOS93SklHMEdDZ0g1cUlRTWdCQ2tER0NFQ0lBUXBBeEFoQVF3QkN5QURRWUdBZjBvTkFDQUVRVUJySUFFZ0FrSUFRb0NBZ0lDQWdNQUFFSXNCSUFRcEEwZ2hBaUFFS1FOQUlRRWdBMEdEZ0g1S0JFQWdBMEgrL3dCcUlRTU1BUXNnQkVFd2FpQUJJQUpDQUVLQWdJQ0FnSURBQUJDTEFTQURRWWFBZlNBRFFZYUFmVW9iUWZ6L0FXb2hBeUFFS1FNNElRSWdCQ2tETUNFQkN5QUVJQUVnQWtJQUlBTkIvLzhBYXExQ01JWVFpd0VnQUNBRUtRTUlOd01JSUFBZ0JDa0RBRGNEQUNBRVFkQUFhaVFBQ3pVQUlBQWdBVGNEQUNBQUlBSkMvLy8vLy8vL1A0TWdCRUl3aUtkQmdJQUNjU0FDUWpDSXAwSC8vd0Z4Y3ExQ01JYUVOd01JQ3l3QkFYOGdBQ2dDQUNJQkJFQWdBUkRMQzBGL0VLZ0RSUVJBSUFBb0FnQkZEd3NnQUVFQU5nSUFDMEVCQ3l3QkFYOGdBQ2dDQUNJQkJFQWdBUkRRQzBGL0VLZ0RSUVJBSUFBb0FnQkZEd3NnQUVFQU5nSUFDMEVCQ3ljQkFYOENRQ0FBS0FJQUlnSkZEUUFnQWlBQkVMc1RRWDhRcUFORkRRQWdBRUVBTmdJQUN3c25BUUYvQWtBZ0FDZ0NBQ0lDUlEwQUlBSWdBUkNQRFVGL0VLZ0RSUTBBSUFCQkFEWUNBQXNMQ3dBZ0FFSGd5UlFRbXdNTENRQWdBQkQrQnhBcUN6RUJBWDhnQUNnQ0RDSUJJQUFvQWhCR0JFQWdBQ0FBS0FJQUtBSW9FUUFBRHdzZ0FDQUJRUVJxTmdJTUlBRW9BZ0FMSndFQmZ5QUFLQUlNSWdFZ0FDZ0NFRVlFUUNBQUlBQW9BZ0FvQWlRUkFBQVBDeUFCS0FJQUN4QUFJQUFReEFzZ0FSREVDM05CQVhNTEVBQWdBQ0FBS0FJWVJTQUJjallDRUFzMEFRRi9JQUFvQWd3aUFTQUFLQUlRUmdSQUlBQWdBQ2dDQUNnQ0tCRUFBQThMSUFBZ0FVRUJhallDRENBQkxBQUFFTllEQzJZQkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFFZ0FCQThJQUFRSlJDMkV6WUNDQ0FDSUFBUWdRRTJBZ0FDZndKQUlBSkJDR29nQWhBZVJRMEFJQUFRR3lBQklBSkJDR29RVnhDdkF3MEFJQUlvQWdnTUFRc2dBQkNCQVFzaEFDQUNRUkJxSkFBZ0FBc3FBUUYvSUFBb0Fnd2lBU0FBS0FJUVJnUkFJQUFnQUNnQ0FDZ0NKQkVBQUE4TElBRXNBQUFRMWdNTEVBQWdBQkRGQ3lBQkVNVUxjMEVCY3dzUEFDQUFJQUFvQWdBb0FoZ1JBQUFMT2dBZ0FFRUJFUEFHSUFCQjRKY0pOZ0lBSUFCQjhBQnFFSk1CR2lBQVFZQUJhaENUQVJvZ0FFR1FBV29RMVFFYUlBQkJBRFlDcEFFZ0FBdHVBUUovSXdCQkVHc2lBU1FBSUFBZ0FDZ0NBRUYwYWlnQ0FHb29BaGdFUUFKQUlBRkJDR29nQUJES0JpSUNMUUFBUlEwQUlBQWdBQ2dDQUVGMGFpZ0NBR29vQWhnUTBndEJmMGNOQUNBQUlBQW9BZ0JCZEdvb0FnQnFRUUVRZ0FRTElBSVF5UVlMSUFGQkVHb2tBQXNKQUNBQUVQOEhFQ29MQkFCQmZ3czhBUUovSUFBb0FpZ2hBZ05BSUFJRVFDQUJJQUFnQWtGL2FpSUNRUUowSWdNZ0FDZ0NKR29vQWdBZ0FDZ0NJQ0FEYWlnQ0FCRUdBQXdCQ3dzTEdnQWdBRUVGVFFSQUlBQkJBblJCNUlrSmFpZ0NBQThMUVFBTEN3QWdBQ0FCSUFJUXl4TUxuUU1EQTM4QmZnSjhBa0FDUUFKQUFrQWdBTDBpQkVJQVdRUkFJQVJDSUlpbklnRkIvLzgvU3cwQkN5QUVRdi8vLy8vLy8vLy8vd0NEVUFSQVJBQUFBQUFBQVBDL0lBQWdBS0tqRHdzZ0JFSi9WUTBCSUFBZ0FLRkVBQUFBQUFBQUFBQ2pEd3NnQVVILy83Ly9CMHNOQWtHQWdNRC9BeUVDUVlGNElRTWdBVUdBZ01EL0EwY0VRQ0FCSVFJTUFnc2dCS2NOQVVRQUFBQUFBQUFBQUE4TElBQkVBQUFBQUFBQVVFT2l2U0lFUWlDSXB5RUNRY3QzSVFNTElBTWdBa0hpdmlWcUlnRkJGSFpxdHlJRlJBQUE0UDVDTHVZL29pQUVRdi8vLy84UGd5QUJRZi8vUDNGQm5zR2Evd05xclVJZ2hvUy9SQUFBQUFBQUFQQy9vQ0lBSUFWRWRqeDVOZTg1NmoyaUlBQWdBRVFBQUFBQUFBQUFRS0NqSWdVZ0FDQUFSQUFBQUFBQUFPQS9vcUlpQmlBRklBV2lJZ1VnQmFJaUFDQUFJQUJFbjhaNDBBbWF3eitpUks5NGpoM0ZjY3cvb0tKRUJQcVhtWm1aMlQrZ29pQUZJQUFnQUNBQVJFUlNQdDhTOGNJL29rVGVBOHVXWkViSFA2Q2lSRm1USXBRa1NkSS9vS0pFazFWVlZWVlY1VCtnb3FDZ29xQWdCcUdnb0NFQUN5QUFDN2tEQXdKL0FYNENmQ0FBdlNJRFFqK0lweUVCQWtBQ1FBSjhBa0FnQUFKL0FrQUNRQ0FEUWlDSXAwSC8vLy8vQjNFaUFrR3J4cGlFQkU4RVFDQURRdi8vLy8vLy8vLy8vd0NEUW9DQWdJQ0FnSUQ0L3dCV0JFQWdBQThMSUFCRTd6bjYva0l1aGtCa1FRRnpSUVJBSUFCRUFBQUFBQUFBNEgraUR3c2dBRVRTdkhyZEt5T0d3R05CQVhNTkFTQUFSRkV3TGRVUVNZZkFZMFVOQVF3R0N5QUNRY1BjMlA0RFNRMERJQUpCc3NYQy93TkpEUUVMSUFCRS9vSXJaVWNWOXoraUlBRkJBM1JCOEk4U2Fpc0RBS0FpQkpsRUFBQUFBQUFBNEVGakJFQWdCS29NQWd0QmdJQ0FnSGdNQVFzZ0FVRUJjeUFCYXdzaUFiY2lCRVFBQU9EK1FpN212NktnSWdBZ0JFUjJQSGsxN3pucVBhSWlCYUVNQVFzZ0FrR0FnTUR4QTAwTkFrRUFJUUVnQUFzaEJDQUFJQVFnQkNBRUlBU2lJZ0FnQUNBQUlBQWdBRVRRcEw1eWFUZG1QcUpFOFd2U3hVRzl1NzZnb2tRczNpV3ZhbFlSUDZDaVJKTzl2aFpzd1dhL29LSkVQbFZWVlZWVnhUK2dvcUVpQUtKRUFBQUFBQUFBQUVBZ0FLR2pJQVdob0VRQUFBQUFBQUR3UDZBaEJDQUJSUTBBSUFRZ0FSQzdBeUVFQ3lBRUR3c2dBRVFBQUFBQUFBRHdQNkFMckFNREFuOEJmZ044SUFDOUlnVkNnSUNBZ0lELy8vLy9BSU5DZ1lDQWdQQ0U1ZkkvVkNJRVJRUkFSQmd0UkZUN0llay9JQUNhSUFBZ0JVSUFVeUlERzZGRUIxd1VNeWFtZ1R3Z0Fab2dBU0FERzZHZ0lRQWdCVUkvaUtjaEEwUUFBQUFBQUFBQUFDRUJDeUFBSUFBZ0FDQUFvaUlHb2lJSFJHTlZWVlZWVmRVL29pQUJJQVlnQVNBSElBWWdCcUlpQVNBQklBRWdBU0FCUkhOVFlOdkxkZk8rb2tTbWtqZWdpSDRVUDZDaVJBRmw4dkxZUkVNL29LSkVLQU5XeVNKdGJUK2dva1EzMWdhRTlHU1dQNkNpUkhyK0VCRVJFY0Uvb0NBR0lBRWdBU0FCSUFFZ0FVVFVlcjkwY0NyN1BxSkU2YWZ3TWcrNEVqK2dva1JvRUkwYTl5WXdQNkNpUkJXRDRQN0kyMWMvb0tKRWs0UnU2ZU1tZ2orZ29rVCtRYk1idXFHclA2Q2lvS0tnb3FDZ0lnYWdJUUVnQkVVRVFFRUJJQUpCQVhScnR5SUhJQUFnQmlBQklBR2lJQUVnQjZDam9hQWlBQ0FBb0tFaUFKb2dBQ0FER3c4TElBSUVmRVFBQUFBQUFBRHd2eUFCb3lJSElBRzlRb0NBZ0lCd2c3OGlDQ0FIdlVLQWdJQ0FjSU8vSWdHaVJBQUFBQUFBQVBBL29DQUdJQWdnQUtHaElBR2lvS0lnQWFBRklBRUxDd29BSUFBUTBRVWFJQUFMRmdBZ0FFVUVRRUVBRHd0QjJNQVVJQUEyQWdCQmZ3c1NBQ0FBUlFSQVFRQVBDeUFBSUFFUXFBUUxHZ0FnQUNBQkVPRUxJZ0JCQUNBQUxRQUFJQUZCL3dGeFJoc0wyZ0VCQW44Q1FDQUJRZjhCY1NJREJFQWdBRUVEY1FSQUEwQWdBQzBBQUNJQ1JTQUNJQUZCL3dGeFJuSU5BeUFBUVFGcUlnQkJBM0VOQUFzTEFrQWdBQ2dDQUNJQ1FYOXpJQUpCLy8zN2QycHhRWUNCZ29SNGNRMEFJQU5CZ1lLRUNHd2hBd05BSUFJZ0EzTWlBa0YvY3lBQ1FmLzkrM2RxY1VHQWdZS0VlSEVOQVNBQUtBSUVJUUlnQUVFRWFpRUFJQUpCLy8zN2Qyb2dBa0YvYzNGQmdJR0NoSGh4UlEwQUN3c0RRQ0FBSWdJdEFBQWlBd1JBSUFKQkFXb2hBQ0FESUFGQi93RnhSdzBCQ3dzZ0FnOExJQUFRb0FFZ0FHb1BDeUFBQzhvS0FnVi9CSDRqQUVFUWF5SUhKQUFDUUFKQUFrQUNRQUpBSUFGQkpFMEVRQU5BQW44Z0FDZ0NCQ0lFSUFBb0FtaEpCRUFnQUNBRVFRRnFOZ0lFSUFRdEFBQU1BUXNnQUJCN0N5SUVFS2tFRFFBTEFrQWdCRUZWYWlJRlFRSkxJQVZCQVd0RmNnMEFRWDlCQUNBRVFTMUdHeUVHSUFBb0FnUWlCQ0FBS0FKb1NRUkFJQUFnQkVFQmFqWUNCQ0FFTFFBQUlRUU1BUXNnQUJCN0lRUUxBa0FnQVVGdmNTQUVRVEJIY2tVRVFBSi9JQUFvQWdRaUJDQUFLQUpvU1FSQUlBQWdCRUVCYWpZQ0JDQUVMUUFBREFFTElBQVFld3NpQkVFZ2NrSDRBRVlFUUVFUUlRRUNmeUFBS0FJRUlnUWdBQ2dDYUVrRVFDQUFJQVJCQVdvMkFnUWdCQzBBQUF3QkN5QUFFSHNMSWdSQndmWVJhaTBBQUVFUVNRMEZJQUFvQW1naUFRUkFJQUFnQUNnQ0JFRi9hallDQkFzZ0FnUkFRZ0FoQXlBQlJRMEpJQUFnQUNnQ0JFRi9hallDQkF3SkMwSUFJUU1nQUVJQUVOc0NEQWdMSUFFTkFVRUlJUUVNQkFzZ0FVRUtJQUViSWdFZ0JFSEI5aEZxTFFBQVN3MEFJQUFvQW1nRVFDQUFJQUFvQWdSQmYybzJBZ1FMUWdBaEF5QUFRZ0FRMndKQjJNQVVRUncyQWdBTUJnc2dBVUVLUncwQ0lBUkJVR29pQWtFSlRRUkFRUUFoQVFOQUlBRkJDbXdnQW1vaEFRSi9JQUFvQWdRaUFpQUFLQUpvU1FSQUlBQWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBQVFld3NpQkVGUWFpSUNRUWxOUVFBZ0FVR1pzK2JNQVVrYkRRQUxJQUd0SVFrTElBSkJDVXNOQVNBSlFncCtJUW9nQXEwaEN3TkFBbjhnQUNnQ0JDSUJJQUFvQW1oSkJFQWdBQ0FCUVFGcU5nSUVJQUV0QUFBTUFRc2dBQkI3Q3lJRVFWQnFJZ0pCQ1VzZ0NpQUxmQ0lKUXBxejVzeVpzK2JNR1ZweURRSWdDVUlLZmlJS0lBS3RJZ3RDZjRWWURRQUxRUW9oQVF3REMwSFl3QlJCSERZQ0FFSUFJUU1NQkF0QkNpRUJJQUpCQ1UwTkFRd0NDeUFCSUFGQmYycHhCRUFnQVNBRVFjSDJFV290QUFBaUFrc0VRRUVBSVFVRFFDQUNJQUVnQld4cUlnVkJ4dVB4T0UxQkFDQUJBbjhnQUNnQ0JDSUNJQUFvQW1oSkJFQWdBQ0FDUVFGcU5nSUVJQUl0QUFBTUFRc2dBQkI3Q3lJRVFjSDJFV290QUFBaUFrc2JEUUFMSUFXdElRa0xJQUVnQWswTkFTQUJyU0VLQTBBZ0NTQUtmaUlMSUFLdFF2OEJneUlNUW4rRlZnMENJQXNnREh3aENTQUJBbjhnQUNnQ0JDSUNJQUFvQW1oSkJFQWdBQ0FDUVFGcU5nSUVJQUl0QUFBTUFRc2dBQkI3Q3lJRVFjSDJFV290QUFBaUFrME5BaUFISUFvZ0NSRDJBaUFIS1FNSVVBMEFDd3dCQ3lBQlFSZHNRUVYyUVFkeFFjSDRFV29zQUFBaENDQUJJQVJCd2ZZUmFpMEFBQ0lDU3dSQVFRQWhCUU5BSUFJZ0JTQUlkSElpQlVILy8vOC9UVUVBSUFFQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWtFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVIc0xJZ1JCd2ZZUmFpMEFBQ0lDU3hzTkFBc2dCYTBoQ1FzZ0FTQUNUVUovSUFpdElncUlJZ3NnQ1ZSeURRQURRQ0FDclVML0FZTWdDU0FLaG9RaENRSi9JQUFvQWdRaUFpQUFLQUpvU1FSQUlBQWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBQVFld3NoQkNBSklBdFdEUUVnQVNBRVFjSDJFV290QUFBaUFrc05BQXNMSUFFZ0JFSEI5aEZxTFFBQVRRMEFBMEFnQVFKL0lBQW9BZ1FpQWlBQUtBSm9TUVJBSUFBZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFBUWV3dEJ3ZllSYWkwQUFFc05BQXRCMk1BVVFjUUFOZ0lBSUFaQkFDQURRZ0dEVUJzaEJpQURJUWtMSUFBb0FtZ0VRQ0FBSUFBb0FnUkJmMm8yQWdRTEFrQWdDU0FEVkEwQUlBT25RUUZ4SUFaeVJRUkFRZGpBRkVIRUFEWUNBQ0FEUW45OElRTU1BZ3NnQ1NBRFdBMEFRZGpBRkVIRUFEWUNBQXdCQ3lBSklBYXNJZ09GSUFOOUlRTUxJQWRCRUdva0FDQURDMWtCQVg4Z0FDQUFMUUJLSWdGQmYyb2dBWEk2QUVvZ0FDZ0NBQ0lCUVFoeEJFQWdBQ0FCUVNCeU5nSUFRWDhQQ3lBQVFnQTNBZ1FnQUNBQUtBSXNJZ0UyQWh3Z0FDQUJOZ0lVSUFBZ0FTQUFLQUl3YWpZQ0VFRUFDeEFBSUFBZ0FTQUNRUUJCQUJEb0N4b0xFUUFnQUNBQklBSkJ3d1JCeEFRUTZBc0xvd0lBQWtBQ1FDQUJRUlJMRFFBZ0FVRjNhaUlCUVFsTERRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRkJBV3NPQ1FFQ0NRTUVCUVlKQndBTElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FTZ0NBRFlDQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUUUNBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUVUNBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUSUJBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUTUJBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUQUFBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FURUFBRGNEQUE4TElBQWdBaUFERVFFQUN3OExJQUlnQWlnQ0FFRUhha0Y0Y1NJQlFRaHFOZ0lBSUFBZ0FTa0RBRGNEQUF0RUFRTi9JQUFvQWdBc0FBQVF6UUlFUUFOQUlBQW9BZ0FpQWl3QUFDRURJQUFnQWtFQmFqWUNBQ0FESUFGQkNteHFRVkJxSVFFZ0Fpd0FBUkROQWcwQUN3c2dBUXY4QWdFRGZ5TUFRZEFCYXlJRkpBQWdCU0FDTmdMTUFVRUFJUUlnQlVHZ0FXcEJBRUVvRU4wQkdpQUZJQVVvQXN3Qk5nTElBUUpBUVFBZ0FTQUZRY2dCYWlBRlFkQUFhaUFGUWFBQmFpQURJQVFRaUFoQkFFZ0VRRUYvSVFFTUFRc2dBQ2dDVEVFQVRnUkFRUUVoQWdzZ0FDZ0NBQ0VHSUFBc0FFcEJBRXdFUUNBQUlBWkJYM0UyQWdBTElBWkJJSEVoQndKL0lBQW9BakFFUUNBQUlBRWdCVUhJQVdvZ0JVSFFBR29nQlVHZ0FXb2dBeUFFRUlnSURBRUxJQUJCMEFBMkFqQWdBQ0FGUWRBQWFqWUNFQ0FBSUFVMkFod2dBQ0FGTmdJVUlBQW9BaXdoQmlBQUlBVTJBaXdnQUNBQklBVkJ5QUZxSUFWQjBBQnFJQVZCb0FGcUlBTWdCQkNJQ0NJQklBWkZEUUFhSUFCQkFFRUFJQUFvQWlRUkJ3QWFJQUJCQURZQ01DQUFJQVkyQWl3Z0FFRUFOZ0ljSUFCQkFEWUNFQ0FBS0FJVUlRTWdBRUVBTmdJVUlBRkJmeUFER3dzaEFTQUFJQUFvQWdBaUFDQUhjallDQUVGL0lBRWdBRUVnY1JzaEFTQUNSUTBBQ3lBRlFkQUJhaVFBSUFFTGZ3SUJmd0YrSUFDOUlnTkNOSWluUWY4UGNTSUNRZjhQUndSOElBSkZCRUFnQVNBQVJBQUFBQUFBQUFBQVlRUi9RUUFGSUFCRUFBQUFBQUFBOEVPaUlBRVE2UXNoQUNBQktBSUFRVUJxQ3pZQ0FDQUFEd3NnQVNBQ1FZSjRhallDQUNBRFF2Ly8vLy8vLy8rSGdIK0RRb0NBZ0lDQWdJRHdQNFMvQlNBQUN3c2RBQ0FBRU9zTElnQW9BZ1JCenBXYUVrWUVmeUFBS0FJQUJVRUFDd3NIQUNBQVFYOXFDeXNBSUFCRkJFQkJBQThMSUFBUTZ3c2lBQ2dDQkVIT2xab1NSZ1IvSUFBZ0FUWUNBRUVBQlVFY0MwVUxVUUVFZnlNQVFSQnJJZ0FrQUFKL1FSd2dBRUVNYWlJQ1JRMEFHa0VJRUpzQklnTkNnSUNBZ09EWm9xTUNOd0lBSUFJZ0F6WUNBRUVBQzBVRVFDQUFLQUlNUVFGcUlRRUxJQUJCRUdva0FDQUJDemtCQVg4Q2YwRUFRYkRBRkNnQ0FDSUFSUTBBR2tFQklBQVE2Z3NOQUJwQkFFR3d3QlFvQWdCQkFSRHNDMFVOQUJwQkFCQ21CVUVCQ3dzTUFDQUFJQUVRcUF0QkFYTUxJd0VCZnlBQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQUVDVW9BZ1FhSUFFUUtnc0xDUUFnQUNBQkVQRVRDdzhBSUFBb0FtaEJ0bnhxUWVzQVNRc1NBQ0FBUVFFMkFnUWdBQ0FCTmdJQUlBQUxDd0FnQUNBQkVGOFEvQTBMTmdFQmZ5TUFRUkJySWdJa0FDQUNJQUVvQWdCQkFCQXZOZ0lNSUFBb0FnQWdBa0VNYWhEdkV5RUFJQUpCRUdva0FDQUFRUUJIQ3ljQkFYOUJBU0VCSUFBb0FtZ2lBRUhLZTJwQkQwa2dBRUYyYWtFRVNYSUVmeUFCQlVFQUN3c1lBUUYvSUFBUUZpRUNJQUFnQVJEK0N5QUFJQUlReUFVTE1BRUJmeUFBRUJZaUFVRUJTUVJBSUFCQkFTQUJheEQ3RXc4TElBRkJBVXNFUUNBQUlBQW9BZ0JCQkdvUTl3c0xDeXdCQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCSUFJZ0FoRHdFeUFBSUFOQkNHb1Exd1FnQTBFUWFpUUFDd2tBSUFCQkFCRE5DZ3V4QmdFRmZ5TUFRUkJySWdNa0FDQUFJQUlRbkF3aUJFRnJha0VCVFFSQUlBQWdBaERpQlNFRkN3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUVvQWd3aUJrSFNBRXdFUUNBR1FVTnFJZ2RCQmtzRVFDQUdRUXhIRFFJZ0FVRUJFQzhpQVVHMGYycEJBMGtOQlNBQlFVMXFRUUZMRFFzZ0FDZ0NCRUgvaFFSTERRc2dBQ0FDUVJWQkVCQ05Ba1VOQ3lBQVFhenZFUkJDREFzTElBZEJBbXNPQlFFQkNnRUtBZ3NnQmtHUGYycEJBMGtOQWlBR1FkTUFSZzBKQ3lBRVFSWkhJQVZCRUVkeVJRUkFJQUJCQ1JBaEN5QUVRUlZISWdFZ0JVRVFSM0lOQXlBQVFSWVFJUXdJQ3lBRVFSNUdCRUFnQUNBQ1FSVkJDQkNOQWdSQUlBQkJKeEFoQ3lBQUlBSkJGVUVRRUkwQ0JFQWdBRUVXRUNFTElBQWdBa0VXUVJBUWpRSkZEUWdnQUVFSkVDRU1DQXNnQUNBQlFRQVFMeEMyQkNFQklBVkJFRWNFUUNBRlFRaEhEUWdnQVVGM2FpSUNRUU5ORFFRZ0FVRUNSaUFCUWVVcFJuSU5DQXdIQ3lBQlFReE5EUVFNQlFzQ1FDQUFJQUpCRmtFUUVJMENSUVJBSUFBZ0FrRVZRUkFRalFKRkRRRUxJQU1nQUVIWUFHb2lCQkRSQWpZQ0NDQURJQVFRZmpZQ0FDQURRUWhxSUFNUUhnUkFRUUFoQVFOQUlBTkJDR29RVnlnQ0FFR3ZYV29pQlVFRFRRMENJQUVnQlVFRVNYSWhBU0FEUVFocUVLa0JJQU1nQkJCK05nSUFJQU5CQ0dvZ0F4QWVEUUFMSUFGQkFYRU5BUXNnQUNBQ1FSWkJFQkNOQWdSQUlBQkJDUkFoQ3lBQUlBSkJGVUVRRUkwQ1JRMEFJQUJCRmhBaEN5QUFJQUpCRlVFSUVJMENSUTBHSUFNZ0FFSFlBR29pQVJEUkFqWUNDQ0FESUFFUWZqWUNBQ0FEUVFocUlBTVFIZ1JBUVFBaEFnTkFJQU5CQ0dvUVZ5Z0NBRUdnWFdvaUJFRUNUUTBJSUFJZ0JFRURTWEloQWlBRFFRaHFFS2tCSUFNZ0FSQitOZ0lBSUFOQkNHb2dBeEFlRFFBTElBSkJBWEVOQndzZ0FFRW5FQ0VNQmdzZ0FDZ0NCRUgvaFFSTERRVWdBQ0FDUVJaQkVCQ05Ba1VOQlNBQVFjWHZFUkJDREFVTElBRWdCVUVJUjNJTkJDQUFRU2NRSVF3RUN5QUNRUUZyRGdJQ0FnTUxRUUVnQVhSQmppUnhEUUlMSUFGQjVTbEdEUUVnQkVFVlJnUkFJQUJCRmhBaEN5QUVRUlpIRFFFZ0FFRUpFQ0VNQVFzZ0FFRW5FQ0VMSUFOQkVHb2tBQXN6QVFKL0l3QkJFR3NpQWlRQVFUQVFKaUlEUVFBMkFnQWdBQ0FESUFKQkNHb2dBVUVCRUprQkVKRUJHaUFDUVJCcUpBQUxMUUVCZndKL1FRQWdBQ0lCRU5BQlJRMEFHaUFCRU5BQlFRaDBRWDlxQ3lBQUtBSVFheUFBRUY0b0FnQnJDekFCQVg4Z0FTQUFLQUlFSWdKSEJFQURRQ0FBRUJzYUlBSkJmR29pQWhBK0lBRWdBa2NOQUFzTElBQWdBVFlDQkFzS0FDQUFRYk1FTmdJQUN5c0FJQUJCME80Uk5nSUFJQUJCS0dvUSt3SWdBRUVjYWhBMklBQkJFR29RTmlBQVFRUnFFUHNDSUFBTG1nRUJCSDhnQUVIQTdoRTJBZ0FnQUVFMGFpSURFQlpCQUVvRVFBTkFJQU1nQVJBUktBSUFJZ0lFUUNBQ0lBSW9BZ0FvQWdRUkJRQUxJQUZCQVdvaUFTQURFQlpJRFFBTEMwRUFJUUVnQUVGQWF5SUNFQlpCQUVvRVFBTkFJQUlnQVJBUktBSUFJZ1FFUUNBRUlBUW9BZ0FvQWdRUkJRQUxJQUZCQVdvaUFTQUNFQlpJRFFBTEN5QUNFRFlnQXhBMklBQkJDR29RL1FJYUlBQUxTQUVCZnlBQkVGNG9BZ0FoQWlBQUlBRW9BZ1FnQVNnQ0VDQUNhaUlBUVFaMlFmei8veDl4YWlJQ0lBRVFqd1VFZjBFQUJTQUNLQUlBSUFCQi93RnhRUVIwYWdzUW1RRWFDK1FCQVFOL0l3QkI4QUJySWdRa0FDQUFLQUlJQkVBZ0JFRkFhMEVBUVFCQkF4QlJJZ1VnQUNnQ0NCQk1JQVVnQUNnQ0RCQk1Ba0FDUUNBQlJRMEFJQVVnQVJBNUlBSVFIMFVOQUNBRVFUQnFFRTRoQVNBQ0VCOUJBVTRFUUVFQUlRQURRQ0FFSUFJZ0FFSHIvdzhRN1FZZ0FTQUVFTk1CSUFRUUlCb0NRQ0FBUlFSQUlBVWdBUkFURVA0Q0lBVWdBeENlQWd3QkN5QUVRUUlRdHdFaUJpQUJFQk1RL2dJZ0JpQURFSjRDSUFZUS9RSWFDeUFDRUI4Z0FFSHIvdzlxSWdCS0RRQUxDeUFCRUNBYURBRUxJQVVnQXhDZUFnc2dCUkQ5QWhvTElBUkI4QUJxSkFBTGdBSUJBMzhqQUVFUWF5SUNKQUFDUUNBQUtBS1VBU0lCUlFSQVFRQWhBUXdCQ3lBQUlBRVFZaUVCSUFBdEFMd0JSUVJBSUFBZ0FSQ3dBU0VCQ3lBQ0lBQkJtQUZxSWdNUVFEWUNDQ0FDSUFNUU1qWUNBQ0FDUVFocUlBSVFIZ1JBQTBBQ2Z5QUFJQUVRM2dZRVFDQUFJQUVnQUNBQ0tBSUlLQUlBRU04QkVKNEREQUVMSUFBZ0FSQ3dBUXNoQVNBQ1FRaHFFR1lhSUFJZ0F4QXlOZ0lBSUFKQkNHb2dBaEFlRFFBTEN3SkFJQUJCcUFGcUlnTVFGa0VCUmdSQUlBQWdBUkN3QVNFQkRBRUxJQU1RRmtFQ1NRMEFJQUFnQUNBQkVMQUJJQU1RRmhDeEFTRUJDeUFBS0FLMEFVVU5BQ0FBSUFFUXNBRWhBUXNnQWtFUWFpUUFJQUVMb0FRQkFuOGpBRUVnYXlJSEpBQUNRQ0FBTFFDOEFRUkFJQUJCQUJEUkJpQUFRWmdCYWlJRkVCWUVRQ0FBS0FLNEFTRUlJQWRCRUdvUU1DRUdJQUFDZndKQUlBVVFGa0VCVGdSQVFRQWhCQU5BSUFBZ0JTQUVFQkVvQWdBUTRBWkJLMGNOQWlBSElBQWdCU0FFRUJFb0FnQVF6d0UyQWd3Z0JpQUhRUXhxRUVFZ0JFRUJhaUlFSUFVUUZrZ05BQXNMSUFBZ0FDZ0NsQUVnQ0NBRElBZ2JJQVlRK0FJTUFRc2dBQ2dDQkNFRklBQWdBQ2dDbEFFUVlpRUVBa0FnQlVHQWlBUlBCRUFnQUNBQVFRY2dCRUhRN1JFZ0FDZ0NsQUVROGdNaUJFRVlRWDhRZUF3QkN5QUFRUWNnQkVIUTdSRkJBQkR5QXlFRUlBQWdBQ2dDbEFFZ0JFRUFRZi8vLy84SFFRQVF6d0lMSUFCQkFEb0F2QUVnQUNBRU5nS1VBU0FBSUFBUTBBWkJBRUgvLy8vL0IwRUFFUElFQ3lJRUlBRVFoZ0VhSUFZUU5nd0NDeUFBS0FLVUFTRUVEQUVMSUFCQkFSRFJCaUFBSUFBb0FwUUJFTFlFUWVVcFJnUkFJQVJCQWhCSUlRUUxJQUFnQUNBQUVOQUdJQVFnQlVFQUlBWnJJQVp4RVBJRUlnUWdBUkNHQVJvZ0FDQUVJQUpCZnhCNEN3SkFJQUJCcUFGcUlnVVFGa1VFUUNBQUtBSzBBVVVOQVFzZ0JSQVdCRUFnQUNBQUlBUVFZaEM3QWlFR0lBQWdBU0FGRUJaQkFrOEVmeUFBSUFZZ0JSQVdFTEVCQlNBR0N5QUVJQVVRMHdZaEJBc2dBQUovSUFBb0FyUUJJZ1VFUUNBQUlBQWdCQ0FESUFVUWtRd2dBUkNHQVNFRUN5QUVDeUFDUVg4UWVBc2dCMEVnYWlRQUlBUUxud0VCQVg4akFFRVFheUlGSkFBZ0JTQUFRY1FCYWlBREVQb0RJQUFnQUNnQ3dBRWdCSEkyQXNBQklBQW9BcmdCUlFSQUlBQWdBallDdUFFTEFrQWdBRUdvQVdvaUFoQVdCRUFnQlNBQ0VJQUZJUU5CQUNFRUlBSVFweFFnQVJBV0JFQURRQ0FDSUFNZ0FTQUVFQkVvQWdBUUVSQkhJQVJCQVdvaUJDQUJFQlpKRFFBTEN5QURFRFlNQVFzZ0FpQUJFS3NJQ3lBQUVLWVVJQVZCRUdva0FBdTFBUUVDZnlNQVFVQnFJZ0VrQUNBQklBQkJIR29pQkJDTUFqWUNPQ0FCUVFocUlBRkJPR29RWnlFQUlBRWdCQkJoTmdJd0FrQUNRQ0FBSUFGQk9Hb2dBVUV3YWhCbklnVVFIa1VOQUFOQUlBQVFSQ0FDRUtNSkRRRWdBQkJFUVJCcUlBTVFtQUlOQWlBQUVQRUJJQUVnQkJCaE5nSXdJQUFnQlNBQlFUQnFFR2NRSGcwQUN3c2dCQUovSUFGQkNHb2lBQ0FDRVA4QkdpQUFRUkJxSUFNUS93RWFJQUFMRUtNVUlBQVFxUVlMSUFGQlFHc2tBQXRFQVFKL0l3QkJFR3NpQXlRQVFTd1FKa0gzQVJDM0FTSUVJQUVRd2dJUU9TQUVJQUlRVENBQUtBS0VBU0FEUVFocUlBUVFPaUlBRUh3Z0FCQStJQU5CRUdva0FBdEdBUUovSUFBb0FnQWdBQ2dDSEJEY0FrRThFQ1lpQVNBQUtBSUFFRlVnQUNnQ0RCRDBBeUVDSUFBZ0FUWUNHQ0FBS0FJTUlBSVE4d01nQUNnQ0FDQUFLQUlZRU9VQkMwVUFJQUVnQWlBQ0tBSUFLQUlvRVFBQUlnQUVmeUFBQlNBQ0lBSW9BZ0FvQWl3UkFBQWlBaUFDS0FJQUtBSllFUUFBQ3hDdkdDSUFJQUVvQWdBZ0FCQ2pBellDQUF1U0F3RUpmeU1BUVNCcklnZ2tBQ0FBRVBvQ0lRa2dBQ0FBSUFJUVlpSUZFTmtHSVFvQ1FBSkFBa0FnQUNBRkVQMEVEUUFnQUNBRkVNa0REUUFnQ2tFQlRnMEJRUUFoQlF3Q0N3Si9Ba0FDUUNBQUlBVVFuQXhCYkdvaUJrRUNTdzBBQWtBZ0JrRUJhdzRDQVFBQ0MwRzBBVUcyQVNBRUd3d0NDMEdxQVVHckFTQUVHd3dCQzBILy8vLy9CeUVCUWFRQlFhVUJJQVFiQ3lFR0lBQUNmeUFBSUFVUS9RUUVRQ0FBSUFZZ0NTQUNJQU1RcWdFTUFRc2dBQ0FBSUFZZ0FDQUpJQW9Rc1FFZ0FpQURFS29CSWdJZ0FSQ0dBUm9nQUVHYkFVR2FBU0FFR3lBSklBSVErQUVMSUFFUWhnRWhCUXdCQzBHbkFVR21BU0FFR3lFTVFRQWhCUU5BSUFnZ0J6WUNEQ0FJUVJCcVFRRWdDRUVNYWhERkF5RUxJQUFnQUNBQ0VHSWdCeENlQXlFR0lBQWdBQ0FERUdJZ0J4Q2VBeUVOSUFBZ0FTQUFJQUlnQmlBTEVQZ0NJQUFnQXlBTklBc1ErQUlnQkJDTERDRUdJQWNFZnlBQUlBQWdEQ0FKSUFVZ0JoQ3FBU0FCRUlZQkJTQUdDeUVGSUFzUU5pQUhRUUZxSWdjZ0NrY05BQXNMSUFoQklHb2tBQ0FGQzdnSkFRZC9Jd0JCUUdvaURDUUFJQXhCRUdwQkFFRW9FTjBCR2lBTUlBZ29BZ0EyQWhBZ0RDQUlLQUlFTmdJVUFuOUJBaUFJS0FJUUlncEZEUUFhSUF3Z0NqWUNHRUVEQ3lFTklBZ29BaWdpQ2dSQUlBeEJFR29nRFVFQ2RISWdDallDQUNBTlFRRnFJUTBMSUFnb0FqUWlDZ1JBSUF4QkVHb2dEVUVDZEdvZ0NqWUNBQ0FOUVFGcUlRMExBbjhnQ0NnQ09DSUtCRUFnREVFUWFpQU5RUUowYWlBS05nSUFJQTFCQVdvaERRc2dEVUVCYWlJUElBZ29BZ2hGRFFBYVFRQkJBUkJJSVFzZ0RFRVFhaUFQUVFKMGFpQUlLQUlJTmdJQUlBMUJBbW9MSVFvQ2Z3Si9BbjhnQ0NnQ0RBUkFJQXRCQWhCSUlRc2dDQ2dDREF3QkN5QUlLQUljQkVBZ0MwRUVFRWdoQ3lBTVFSQnFJQXBCQW5ScUlBZ29BaHcyQWdBZ0NrRUJhaUVISUFnb0FpQWhEa0VDREFJTFFRQWdCaUFIUlNBRWNuSU5BaG9nQzBFQ0VFZ2hDeUFBUXdBQUFBQkJBQkQ1QWdzaERpQUtJUWRCQVFzaEVDQU1RUkJxSUFkQkFuUnFJQTQyQWdBZ0NpQVFhaUVLUVFFTElRY2dDQ2dDRkNJT0JFQWdDeUFBSUE0UTRBWVF5eFFFZjBFSUJTQUFRUmtRSVVFUUN4QklJUXNnREVFUWFpQUtRUUowYWlBSUtBSVVOZ0lBSUFwQkFXb2hDZ3NnQ0NnQ0dBUkFJQUJCR1JBaElBdEJJQkJJSVFzZ0RFRVFhaUFLUVFKMGFpQUlLQUlZTmdJQUlBcEJBV29oQ2dzZ0NDZ0NKQVJBSUF0QndBQVFTQ0VMSUF4QkVHb2dDa0VDZEdvZ0NDZ0NKRFlDQUNBS1FRRnFJUW9MSUFnb0FqQUVRQ0FBUVNvUUlTQUxRWUFCRUVnaEN5QU1RUkJxSUFwQkFuUnFJQWdvQWpBMkFnQWdDa0VCYWlFS0N5QUlMUUE4QkVBZ0MwR0FDQkJJSVFzTEFrQWdDQzBBUFFSL0lBdEJnQkFRU0FVZ0N3c2dDUkJJSWdsRkJFQWdDa0YvYWlFS0RBRUxJQXhCRUdvZ0RVRUNkR29nQ1RZQ0FBc0NmMEc1QWtIZkFDQURHeUFFRFFBYUlBZ29BalFFUUVHaktTQUlLQUk0RFFFYUN5QUlLQUlRSVFRZ0JnUkFRYnNDUWVFQUlBTWJJQVFOQVJwQnVnSkI0QUFnQXhzTUFRc2dCd1JBSUFRRVFFRzRBa0hlQUNBREd5QUZEUUlhUWJRQ1Fkb0FJQU1iREFJTFFiWUNRZHdBSUFNYklBVU5BUnBCc2dKQjJBQWdBeHNNQVFzZ0JBUkFRYmNDUWQwQUlBTWJJQVVOQVJwQnN3SkIyUUFnQXhzTUFRdEJ0UUpCMndBZ0F4c2dCUTBBR2tHeEFrSFhBQ0FER3dzaEJRSi9JQUlnQUNBQ0VQMEVEUUFhSUFJZ0JVR25mMm9pQkVFRlN3MEFHaUFDUVFFZ0JIUkJNM0ZGRFFBYUlBQWdBaEM3QWdzaEJFRUFJUXNDZnlBRFJRUkFRUUFoQjBFQUlRNGdCQXdCQ3lBRUlRY2dBQ0FFSUFBZ0NDZ0NMQkRhQmlJT0VOc0dDeUVHUVN3UUppQUFFRlVnQmlBRkVGRWhCQU5BSUFRZ0RFRVFhaUFMUVFKMGFpZ0NBQkE1SUF0QkFXb2lDeUFOUncwQUN5QU5JQXBJQkVBZ0JDQU1RUkJxSUExQkFuUnFLQUlBRUV3TElBOGdDa2dFUUFOQUlBUWdERUVRYWlBUFFRSjBhaWdDQUJBNUlBOUJBV29pRHlBS1J3MEFDd3NnQUNBRUtBSUVJQUVRaGdFYUlBQW9Bb1FCSUF4QkNHb2dCQkE2SWdVUWZDQUZFRDRnQkNnQ0JDRUxBa0FnQXdSQUlBQkJLUkFoSUFBZ0FDQUxJQTVCQVJDdkFTQUlLQUlzUVFCQi8vLy8vd2RCQUJEUEFpQUFJQUFnQ3lBSFFRQVFyd0VpQ3lBQkVJWUJHZ3dCQ3lBQ0lBWkdEUUFnQUNBQklBc2dBaER4QkNFTEN5QU1RVUJySkFBZ0N3c21BQ0FDSUFOQkFFRUFFS3dCSWdJRVFDQUFJQUVnQWlBQ0tBSUFLQUlrRVFBQUVJb01Dd3NQQUNBQUlBRVE0QVpCVUdwQkJVa0xud0VCQW44akFFRWdheUlESkFCQkxCQW1JQUVRdHdFaEFTQURJQUlRUURZQ0dDQURJQUlRTWpZQ0VDQURRUmhxSUFOQkVHb1FIZ1JBQTBBZ0F5Z0NHQ2dDQkNFRUFrQWdBeWdDR0MwQUFBUkFJQUVnQkJBNURBRUxJQUVnQkJCTUN5QURRUmhxRU8wRElBTWdBaEF5TmdJUUlBTkJHR29nQTBFUWFoQWVEUUFMQ3lBQUtBS0VBU0FEUVFocUlBRVFPaUlBRUh3Z0FCQStJQU5CSUdva0FBczZBUUYvSXdCQkVHc2lBeVFBUVN3UUppQUJFTGNCSWdFZ0FoQTVJQUFvQW9RQklBTkJDR29nQVJBNklnQVFmQ0FBRUQ0Z0EwRVFhaVFBQzA4QkFYOGpBRUVRYXlJRUpBQkJMQkFtSUFBUVZTQUNRYzBBRUZFaUFpQUJFRGtnQWlBREVEa2dBQ2dDaEFFZ0JFRUlhaUFDRURvaUFCQjhJQUFRUGlBQ0tBSUVJUUFnQkVFUWFpUUFJQUFMVlFFQmZ5TUFRUkJySWdVa0FFRXNFQ1lnQUJCVklBTkIwZ0FRVVNJRElBRVFPU0FESUFJUU9TQURJQVFRVENBQUtBS0VBU0FGUVFocUlBTVFPaUlBRUh3Z0FCQStJQU1vQWdRaEFDQUZRUkJxSkFBZ0FBdENBUUYvQWtBQ1FDQUJRWDVxSWdKQkFrc0VRQ0FCUVF4R0lBRkI1U2xHY2cwQ0RBRUxJQUpCQVdzTkFRdEJDRUVRRUVoQklCQklRWDl6SUFCeElRQUxJQUFMUEFFQ2Z5QUFLQUtFQVNJQ0tBSTBJUUVnQWhDVUNFVUVRQ0FBUVFFZ0FTZ0NFQ0FBRUp3SVJ3Ui9JQUFnQVNnQ0VCQzhGQVZCQUFzUWxRd0xDMjRCQW44akFFRVFheUlESkFBQ1FDQUNCRUJCTEJBbVFRQkJBRUgrQVJCUklnUWdBaEE1SUFBb0FvUUJJQU5CQ0dvZ0JCQTZJZ0lRZkF3QkN5QUFLQUtFQVNBRFFTd1FKa0VBUVFCQi9RRVFVUkE2SWdJUWZBc2dBaEErSUFGRkJFQWdBQkRaQlFzZ0EwRVFhaVFBQzUwQ0FRUi9Jd0JCRUdzaUNTUUFJQUFnQWlBRUVORVVJUW9nQkJBV0JFQWdBQ0FFRUJZZ0FDZ0NpQUVpQkdvMkFvZ0JJQVJCQVdvaENBc2dBRUhRQUJBbUlBQVFWU0FDSUFvZ0NDQUFRZWdBYWhDK0ZDSUNLQUlNSUFFUWhnRWFJQVVRcHdFRVFBTkFJQVVnQnhEVUF4QVdRUUZPQkVBZ0J5QUlhaUVCUVFBaEJBTkFJQUFnQVNBRklBY1ExQU1nQkJBUktBSUFRWDhRZUNBRVFRRnFJZ1FnQlNBSEVOUURFQlpJRFFBTEN5QUhRUUZxSWdjZ0JSQ25BVWtOQUFzTElBWUVRRUU4RUNZaUFTQUFFRlVnQWhEMEF5RUVJQVlnQVRZQ0FDQUNJQVFROHdNZ0FDQUdLQUlBRU9VQkN5QURCRUFnQUNBQ0tBSU1JQU1RMmdVTElBQkJxQUpxSUFsQkNHb2dBaEE2SWdBUWZTQUFFRDRnQ1VFUWFpUUFJQUlMRWdBZ0FDZ0NBRUVYZGtIL0FYRkJnWDlxQ3dvQUlBQW9BZ0JCSDNZTHR3RUJCSDhqQUVFUWF5SUVKQUJCTWtFcklBTWJJUVVnQWtJZ2lLY2hCaUFDcHlFSEFrQWdBMFVFUUNBQVFSVWdCU0FCSUFjZ0JoQ2JEQ0lERFFFTFFTd1FKaUlESUFBUVZTQUJJQVVRVVNFQklBUWdBellDRENBQklBY1FUQ0FCSUFZUVRDQUFRWkFDYWlBRVFRaHFJQUVRT2lJQkVIMGdBUkErSUFSQkZUWUNCQ0FBUWJRQ2FpQUVRUVJxRUQ4Z0JFRU1haEJISUFCQjZBQnFJQVFvQWd3UWpBRWdCQ2dDRENnQ0JDRURDeUFFUVJCcUpBQWdBd3VhQWdFRmZ5TUFRUkJySWdNa0FFRXdRVEVnQVJ0QktVRXFJQUViSUFJYklRUWdBQkQ2QWlFRkFrQUNRQ0FDRFFBZ0EwRVVOZ0lNSUFCQnRBSnFJZ1lnQTBFTWFoQS9FQlpCQVVnTkFFRUFJUUpCQUNFQkEwQWdBMEVVTmdJTUFrQWdCU0FHSUFOQkRHb1FQeUFDRUJFb0FnQWlCeWdDQ0VjTkFDQUVJQWNvQWd4SERRQWdCeWdDQkNFQkN5QURRUlEyQWd3Z0FrRUJhaUlDSUFZZ0EwRU1haEEvRUJaSURRQUxJQUVOQVF0QkxCQW1JZ0VnQUJCVklBVWdCQkJSSVFJZ0F5QUJOZ0lNSUFCQmtBSnFJQU5CQ0dvZ0FoQTZJZ0VRZlNBQkVENGdBMEVVTmdJSUlBQkJ0QUpxSUFOQkNHb1FQeUFEUVF4cUVFY2dBRUhvQUdvZ0F5Z0NEQkNNQVNBREtBSU1LQUlFSVFFTElBTkJFR29rQUNBQkM3QUJBUU4vSXdCQkVHc2lCaVFBSUFZZ0FUWUNEQUovQWtBZ0FFRzBBbW9pQ0NBR1FReHFFRDhRRmtFQlNBMEFRUUFoQUFOQUFrQWdCaUFCTmdJSUFrQWdBaUFJSUFaQkNHb1FQeUFBRUJFb0FnQWlCeWdDREVjTkFDQURJQWNvQWdoSERRQWdCMEVBRUM4Z0JFY05BQ0FIUVFFUUx5QUZSZzBCQ3lBR0lBRTJBZ3dnQUVFQmFpSUFJQWdnQmtFTWFoQS9FQlpJRFFFTUFnc0xJQWNvQWdRTUFRdEJBQXNoQUNBR1FSQnFKQUFnQUF0UEFRSi9JQUJCNkFCcUlRSURRQ0FDSUFFUUx5SUJLQUlNSWdOQmFXb2lBRUVKUzBIakJDQUFRZi8vQTNGMlFRRnhSWEpGQkVBZ0FTQUFRUUowUWVqdUVXb29BZ0FRTHlFQkRBRUxDeUFEQzRvQ0FRTi9Jd0JCRUdzaUJDUUFBa0FDUUNBRERRQWdCRUVjTmdJSUlBQkIzQUpxSWdVZ0JFRUlhaEEvRUJaQkFVZ05BRUVBSVFNRFFDQUVRUncyQWdnZ0JDQUZJQVJCQ0dvUVB5QURFQkVvQWdBaUJqWUNEQ0FHUVFBUUx5QUJSZ1JBSUFRb0FneEJBUkF2SUFKR0RRTUxJQVJCSERZQ0NDQURRUUZxSWdNZ0JTQUVRUWhxRUQ4UUZrZ05BQXNMUVN3UUppSUZJQUFRVlVFQVFSd1FVU0VESUFRZ0JUWUNEQ0FESUFFUU9TQURJQUlRT1NBRVFSdzJBZ2dnQUVIY0Ftb2dCRUVJYWhBL0lBUkJER29RUnlBQVFaQUNhaUFFUVFocUlBUW9BZ3dRT2lJQkVIMGdBUkErSUFCQjZBQnFJQVFvQWd3UWpBRUxJQVFvQWd3b0FnUWhBQ0FFUVJCcUpBQWdBQXRHQVFKL0l3QkJFR3NpQkNRQVFTd1FKa0VJRUxjQklnTWdBUkE1SUFNZ0FoQk1JQU5CQUJCTUlBQW9Bb1FCSUFSQkNHb2dBeEE2SWdBUWZDQUFFRDRnQkVFUWFpUUFDMVFCQW44akFFRVFheUlESkFCQkxCQW1JQUFRVlVFQVFRc1FVU0lDSUFFUS9nSWdBRUhvQUdvZ0FoQ01BU0FBUWRRQmFpQURRUWhxSUFJUU9pSUFFSDBnQUJBK0lBSW9BZ1FoQUNBRFFSQnFKQUFnQUF0VUFRSi9Jd0JCNEFCcklnSWtBQ0FDUVJCcUlBSWdBUkNyQnlJREVPRVVJZ0VnQUVFQVFRQVEzQVlnQVVFNGFoQ1lCeUFCUVNScUVKZ0hJQUZCRUdvUW1BY2dBUkNzQWlBREVLd0NJQUpCNEFCcUpBQUxSUUVCZnlBQkVGNG9BZ0FoQWlBQUlBRW9BZ1FnQVNnQ0VDQUNhaUlBUVFwMlFmei8vd0Z4YWlJQ0lBRVFqd1VFZjBFQUJTQUNLQUlBSUFCQi94OXhhZ3NRbVFFYUN5MEJBWDhDZjBFQUlBQWlBUkRRQVVVTkFCb2dBUkRRQVVFTWRFRi9hZ3NnQUNnQ0VHc2dBQkJlS0FJQWF3dm5Bd0lGZndGOUl3QkJJR3NpQmlRQUlBRVFJeG9nQWlnQ0FDRUpJQUVRUENFSElBWkJBRG9BSHdKQUFrQWdCMFVOQUNBQklBa2dCeEEwSWdvUUVTZ0NBQ0lJUlEwQUEwQWdDQ2dDQUNJSVJRMEJJQWtnQ0NnQ0JFY0VRQ0FJS0FJRUlBY1FOQ0FLUncwQ0N5QUJFRU1nQ0VFSWFpQUNFSXNEUlEwQUN3d0JDeUFHUVJCcUlBRWdDU0FESUFRZ0JSRFFDU0FCRUNNb0FnQWhBaUFCRUVNaEF3SkFJQWNFUUNBREtnSUFJQWV6bENBQ1FRRnFzMTFCQVhNTkFRc2dCaUFIRUxvQlFRRnpJQWRCQVhSeU5nSU1JQVlDZnlBQkVDTW9BZ0JCQVdxeklBRVFReW9DQUpXTklndERBQUNBVDEwZ0MwTUFBQUFBWUhFRVFDQUxxUXdCQzBFQUN6WUNDQ0FCSUFaQkRHb2dCa0VJYWhCU0tBSUFFTk1FSUFrZ0FSQThJZ2NRTkNFS0N3SkFJQUVnQ2hBUktBSUFJZ0pGQkVBZ0JpZ0NFQ0FCUVFocUlnSW9BZ0EyQWdBZ0FpQUdLQUlRTmdJQUlBRWdDaEFSSUFJMkFnQWdCaWdDRUNnQ0FFVU5BU0FHS0FJUUlRSWdBU0FHS0FJUUtBSUFLQUlFSUFjUU5CQVJJQUkyQWdBTUFRc2dCaWdDRUNBQ0tBSUFOZ0lBSUFJZ0JpZ0NFRFlDQUFzZ0JrRVFhaEJmSVFnZ0FSQWpJZ0VnQVNnQ0FFRUJhallDQUNBR1FRRTZBQjhnQmtFUWFoQzlDUXNnQUNBR1FSQnFJQWdRTVNBR1FSOXFFS0lCSUFaQklHb2tBQXMxQUNBQUtBSUFHaUFBS0FJQUlBQVE5Z1JCTkd4cUdpQUFLQUlBSUFBUTNRWkJOR3hxR2lBQUtBSUFJQUFROWdSQk5HeHFHZ3NIQUNBQUVEQWFDekFCQVg4Z0FTQUFLQUlFSWdKSEJFQURRQ0FBRUJzYUlBSkJkR29pQWhBMklBRWdBa2NOQUFzTElBQWdBVFlDQkFzUkFDQUFRVFJxSUFFUUVTZ0NBQ2dDQ0FzTkFDQUFRVUJyS0FJQUtBSUFDekVCQVg4Z0FCQ0xCQ0FBS0FJQUJFQWdBQ0FBS0FJQUVLWU1JQUFRR3hvZ0FDZ0NBQ0VCSUFBUXF3TWFJQUVRS2dzTEVRQWdBRUUwYWlBQkVCRW9BZ0FvQWdRTEZ3QWdBQzBBZFFSL1FRRUZRUUpCQUNBQUxRQjJHd3NMT0FFQmYwRUJJUUVnQUNBQUtBSUFLQUl3RVFBQUJIOGdBUVVnQUNBQUtBSUFLQUo0RVFBQUlnQWdBQ2dDQUNnQ0xCRUFBQkNQQWdzTGpBRUJBMzhnQUNnQ0JDRUJBa0FnQUNnQ0FDZ0NBQ0lESUFNb0FnQW9Bb0FCRVFBQVJRMEFBa0FnQVNnQ2pBUVFyQU1vQWdCQi80Y0VTdzBBSUFBb0FnQW9BZ0FpQVNBQktBSUFLQUo0RVFBQUlnRWdBU2dDQUNnQ1lCRUFBQTBBSUFBb0FnQW9BZ0FpQUNBQUtBSUFLQUo0RVFBQUlnQWdBQ2dDQUNnQ2FCRUFBRVVOQVF0QkFTRUNDeUFDQy9RQ0FRcC9Jd0JCMEFCcklnVWtBQ0FBUVRocUlnWWdCRUVBRUJFb0FnQVF5QUVoQ3lBR0lBWWdCRUVBRUJFb0FnQVFZaEM3QWlFTUlBVkJRR3NRTUNFSElBdEJBVTRFUUNBQlFZY0NSaUVOSUFGQjBDSkhJUTREUUNBRlFUQnFFREFoQ1NBRklBZzJBaGdnQ1NBRlFSaHFFRUVnQlVFb2FrRUJJQVlnQkVFQUVCRW9BZ0FnRENBSkVQZ0NFSFVoQ2lBRlFSaHFFREFoQUFKQUFrQWdEVVVFUUNBT0RRRWdBQ0FLRUlRQklBQWdCVUVRYWtFQklBUkJBUkFSS0FJQUVIVVFoQUVNQWdzZ0FDQUZRUkJxUVFFZ0JrRURRUUFRZEJCMUVJUUJJQUFnQ2hDRUFTQUFJQVZCQ0dwQkFTQUVRUUVRRVNnQ0FCQjFFSVFCREFFTElBQWdCVUVRYWtFQklBWkJBMEVBRUhRUWRSQ0VBU0FBSUFWQkNHcEJBQ0FDRUhVUWhBRWdBQ0FLRUlRQkN5QUZJQVlnQVNBTUlBQVF3Z00yQWhBZ0J5QUZRUkJxRUVFZ0FCQ3VBeUFKRURZZ0NFRUJhaUlJSUF0SERRQUxDeUFHSUFNZ0J4Q2RBeUVBSUFjUU5pQUZRZEFBYWlRQUlBQUxEQUFnQUNBQkVOOENRUnRHQy9BR0FRVi9Jd0JCTUdzaUJTUUFJQVFRZ3dNaENTQUVFSklFSVFZZ0JVRWdhaEF3SVFnQ1FDQUJRY3A5YWtFQ1RRUkFJQUJCT0dvaUJFR0EzaEVRUWlBRVFjY2lFQ0ZCLy8vLy93Y2hCQXdCQ3lBQVFUaHFJUWNnQVVISGZXcEJBazBFUUNBSFFmYm1FUkJDSUFkQnp5SVFJVUgvLy8vL0J5RUVEQUVMSUFkQkVoQWhBbjlCLy8vLy93Y2dBVUgxZkdvaUJFRVJTdzBBR2dKQUFrQUNRQUpBSUFSQkEyc09Ed01EQXdFQkFRTURBd0lDQWdNREF3QUxRUUFNQXd0QkFRd0NDMEVDREFFTElBZEJ6ZVlSRUVKQi8vLy8vd2NnQVVIeWZHb2lCRUVQVHcwQUdpQUVRUUowUWJqc0VXb29BZ0FMSVFRZ0NDQUZRUWhxUVFFZ0IwRURRUUFRZEJCMUVJUUJJQVJCLy8vLy93ZEdEUUFnQ0NBRlFSaHFRUUFnQkJCMUVJUUJDeUFGSUFNUVFEWUNHQ0FGSUFNUU1qWUNDQ0FGUVJocUlBVkJDR29RSGdSQUEwQWdDQ0FGUVFocVFRRWdCU2dDR0NnQ0FCQjFFSVFCSUFWQkdHb1FaaG9nQlNBREVESTJBZ2dnQlVFWWFpQUZRUWhxRUI0TkFBc0xBa0FDUUNBQlFmVjhhaUlIUVJGTEJFQUNRQ0FCUWNwOWFpSUdRUVZOQkVCQnpTSWhBUUpBQWtBQ1FBSkFJQVpCQVdzT0JRRUNCd1VBQXd0QnppSWhBUXdHQzBIUUlpRUJJQUJCT0dvZ0FoREpBMFVOQlNBQVFkQWlJQVFnQWlBREVLNE1JUU1NQmd0QnhpSWhBUXdFQ3lBQVFUaHFJZ0JCeFNJZ0FDQUFRU0FReVFFaUEwRUVFTEVCSUFnUXdnTWhCQ0FGUVFocUVEQWhBU0FGSUFBZ0JDQURRUUFRcndFMkFoZ2dBU0FGUVJocUVFRWdCU0FBSUFRZ0EwRUJFSzhCTmdJWUlBRWdCVUVZYWhCQklBQkIvQUFnQWlBQUlBQWdBMEVDRUxFQklBRVFuUU1RK0FFaEF5QUJFRFlNQkFzZ0FDZ0NOQ0FGUVFocVFZem5FUkJwSWdBUW9BTWdBQkFnR2tFQUlRTU1Bd3RCekNJaEFRd0JDd0pBQW44Q1FBSkFBa0FDZndKQUFrQUNRQ0FIUVFGckRoRUZCQUlCQUFZRkJBSUJBQVlGQkFJQkFBWUxRWWtuUVlnbklBWWJEQUlMUVkwblFZNG5RWThuSUFrYklBWWJEQUVMUVlvblFZc25RWXduSUFrYklBWWJDeUVCSUFCQk9Hb2dBaERKQXcwRURBVUxRWWtDUVlnQ0lBWWJEQUlMUVkwQ1FZNENRWThDSUFrYklBWWJEQUVMUVlvQ1FZc0NRWXdDSUFrYklBWWJDeUVCSUFCQk9Hb2dBaERKQTBVTkFRc2dBQ0FCSUFRZ0FpQURFSzRNSVFNTUFRc2dBRUU0YWlBQklBSWdDQkRDQXlFREN5QUlFSzRESUFWQk1Hb2tBQ0FEQys0QkFRaC9Jd0JCTUdzaUJTUUFJQUJCT0dvaUFDQUVFTWdCSVFrZ0FDQUVFSzRFSVFZZ0FDQUFJQUFnQkJCaUVMc0NJQVlRc1FFaEN5QUFJQUFnQXhDN0FpQUdFTEVCSVF3Z0JVRWdhaEF3SVFZZ0NVRUJUZ1JBQTBBZ0JVRVFhaEF3SVFnZ0JTQUhOZ0lNSUFnZ0JVRU1haEJCSUFJZ0FDQUFJQUVnRENBQUlBUWdDeUFJRVBnQ0VQZ0JJZ29RK1FRZ0FpQUFJQW9RL3dJZ0JTQUFJQW9nQWlnQ0FCQ0dBVFlDRENBR0lBVkJER29RUVNBSUVEWWdCMEVCYWlJSElBbEhEUUFMQ3lBQ0lBQWdBQ0FBSUFNZ0JoQ2RBeUFDS0FJQUVJWUJJZ0FRL3dJZ0JoQTJJQVZCTUdva0FDQUFDdzRBSUFBb0FtaEJvM3RxUVR4SkN3NEFJQUFnQUNBQkVMQUJFTWdEQ3cwQUlBQWdBUkRmQWtIdUtVWUwvUUlCQkg4akFFRkFhaUlFSkFBQ1FDQUJJQUVvQWdBb0Fod1JBQUJCREVjTkFDQUFRVGhxSWdNZ0F4Q0VEQ0lGRVAwRUJFQWdBeEQ2QWlBRlJ3UkFJQU1nQlNBQ0lBTkJBVUVBRUhRZ0EwRUFRUUFRZEJEVUJpRUNEQUlMSUFNZ0FoQmlJQVZHRFFFZ0EwR3JBU0FGSUFJZ0EwRUFRUUFRZEJDcUFTRUNEQUVMSUFNZ0JSREpBMFVOQUNBRElBVVF5QU1oQmlBRElBTVErZ0lnQmhDeEFTQUZSd1JBSUFNZ0JTQUNJQUFnQTBFQlFRQVFkQ0FHRUtFQ0lBQWdBMEVBUVFBUWRDQUdFS0VDRU5RR0lRSU1BUXNnQXlBQ0VHSWdCVVlOQUNBRFFhc0JJQVVnQWlBQUlBTkJBRUVBRUhRZ0JoQ2hBaENxQVNFQ0N5QUVRUWhxSUFCQk9Hb2lBeEMrQWlBRUlBUW9BamcyQWp3Z0JFRUlhaEM0QVNBRVFRaHFJQUVRNUFFZ0JDQUVRVHhxSUFSQkNHb1ErZ01nQkVFSWFpQURFTDRDSUFRb0FqUWhCU0FFUVFocUVMZ0JJQUVRaGdRaEFTQURJQUlnQUNBRVFUeHFFTHdJUVc5eElBQWdCRUU4YWhEL0JDQUJJQVZ5RUlzSUlBUkJRR3NrQUFzU0FDQUFRUkJxSUFFUUVTZ0NBRUVBRUM4TFZBRUJmeU1BUWVBQWF5SUNKQUFnQUJERkJTQUFRWWlFQ1RZQ0FDQUFRUlJxUVFCQkFFRUJRUUJCQUVFQUVFVWdBa0VJYWlBQlFRQkJBVUVBUVFCQkFCQkZJZ0FRandFZ0FCQTFHaUFDUWVBQWFpUUFDelVBSUFBb0FnQWFJQUFvQWdBZ0FCRDZCRUU0YkdvYUlBQW9BZ0FnQUJEN0JFRTRiR29hSUFBb0FnQWdBQkQ2QkVFNGJHb2FDK2NCQVFGL0lBQWdBQ2dDQUNnQ2JCRUFBQVJBUVFSQkJVSC8vLy8vQnlBQlFRSkdHeUFCUVFGR0d3OExRZi8vLy84SElRRUNRQ0FBSUFBb0FnQW9BaHdSQUFCQkVFY05BQ0FBSUFBb0FnQW9BaXdSQUFBb0FnUkJQM0ZCZldvaUFrRURTdzBBQWtBQ1FDQUNRUUpyRGdJQUFBRUxRUWhCQ1VILy8vLy9CeUFBSUFBb0FnQW9BaXdSQUFBcEFnUkNONGluUVE5eElnQkJCRVliSUFCQkFVWWJEd3NnQUNBQUtBSUFLQUlzRVFBQUVLNENSUTBBUVFoQkNVSC8vLy8vQnlBQUlBQW9BZ0FvQWl3UkFBQXBBZ1JDTjRpblFROXhJZ0JCQkVZYklBQkJBVVliSVFFTElBRUxDd0FnQVNBQ1FUZ1FQUm9MTFFFQmYwSDRBQkJHSWdNZ0FDQUJLQUlBSUFFb0FnUVFxeFVoQUNBRElBSWdBeWdDQUNnQ0JCRUJBQ0FBQzVFSEFRSitJQUFwQWdRaUFrS0FnSUNBZ0lDQU9JTlFCRUFnQUNBQktRSUVRb0NBZ0lDQWdJQTRneUFDUXYvLy8vLy8vLzlIZzRRaUFqY0NCQXNDZndKL0FuOENmd0ovQW44Q2Z3Si9BbjhDZndKL0FuOENmd0ovQW44Q2Z3Si9BbjhnQVNrQ0JDSURRb0NBZ01BQWcxQkZCRUFnQUNBQ1FvQ0FnTUFBaENJQ053SUVJQUVwQWdRaEF3c2dBMEtBZ0lDQUJJTlFSUXNFUUNBQUlBSkNnSUNBZ0FTRUlnSTNBZ1FnQVNrQ0JDRURDeUFEUW9DQWdJQUJnMUJGQ3dSQUlBQWdBa0tBZ0lDQUFZUWlBamNDQkNBQktRSUVJUU1MSUFOQ2dJQ0FnTUFBZzFCRkN3UkFJQUFnQWtLQWdJQ0F3QUNFSWdJM0FnUWdBU2tDQkNFREN5QURRb0NBZ0lDQUFZTlFSUXNFUUNBQUlBSkNnSUNBZ0lBQmhDSUNOd0lFSUFFcEFnUWhBd3NnQTBLQWdJQ0FnQVNEVUVVTEJFQWdBQ0FDUW9DQWdJQ0FCSVFpQWpjQ0JDQUJLUUlFSVFNTElBTkNnSUNBZ0lBSWcxQkZDd1JBSUFBZ0FrS0FnSUNBZ0FpRUlnSTNBZ1FnQVNrQ0JDRURDeUFEUW9DQWdJQ0FFSU5RUlFzRVFDQUFJQUpDZ0lDQWdJQVFoQ0lDTndJRUlBRXBBZ1FoQXdzZ0EwS0FnSUNBZ0NDRFVFVUxCRUFnQUNBQ1FvQ0FnSUNBSUlRaUFqY0NCQ0FCS1FJRUlRTUxJQU5DZ0lDQWdJREFBSU5RUlFzRVFDQUFJQUpDZ0lDQWdJREFBSVFpQWpjQ0JDQUJLUUlFSVFNTElBTkNnSUNBZ0lDQUNJTlFSUXNFUUNBQUlBSkNnSUNBZ0lDQUNJUWlBamNDQkNBQktRSUVJUU1MSUFOQ2dJQ0FnSUNBSUlOUVJRc0VRQ0FBSUFKQ2dJQ0FnSUNBSUlRaUFqY0NCQ0FCS1FJRUlRTUxJQU5DZ0lDQWdJQ0F3QUNEVUVVTEJFQWdBQ0FDUW9DQWdJQ0FnTUFBaENJQ053SUVJQUVwQWdRaEF3c2dBMEtBZ0lDQWdJQ0FBWU5RUlFzRVFDQUFJQUpDZ0lDQWdJQ0FnQUdFSWdJM0FnUWdBU2tDQkNFREN5QURRb0NBZ0lDQWdJQUNnMUJGQ3dSQUlBQWdBa0tBZ0lDQWdJQ0FBb1FpQWpjQ0JDQUJLUUlFSVFNTElBTkNnSUNBZ0lDQWdBU0RVRVVMQkVBZ0FDQUNRb0NBZ0lDQWdJQUVoQ0lDTndJRUlBRXBBZ1FoQXdzZ0EwS0FnSUNBZ0lBUWcxQkZDd1JBSUFBZ0FrS0FnSUNBZ0lBUWhDSUNOd0lFSUFFcEFnUWhBd3NnQTBLQWdJQ0FnSUFCZzFCRkN3UkFJQUFnQWtLQWdJQ0FnSUFCaENJQ053SUVJQUVwQWdRaEF3c2dBMEtBZ0lDQWdJQUNnMUJGQ3dSK0lBQWdBa0tBZ0lDQWdJQUNoQ0lDTndJRUlBRXBBZ1FGSUFNTFFvQ0FnSUNBZ0FTRFVFVUVRQ0FBSUFKQ2dJQ0FnSUNBQklRM0FnUUxDOFFEQVFSL0l3QkJJR3NpQWlRQUlBQW9Bb3dFRU1NSUlRTUNmeUFCSUFFb0FnQW9BaGdSQUFCQjRlRVJFQ3NFUUNBQ0lBTWdBa0VJYWtIODRSRVFhU0lFRUlNRU5nSVlJQUlnQXhDQkFUWUNBQ0FDUVJocUlBSVFsd0loQlNBRUVDQWFRUUVnQlEwQkdnc2dBU0FCS0FJQUtBSVlFUUFBUVpqaUVSQXJCRUFnQWlBRElBSkJDR3BCL09FUkVHa2lCQkNEQkRZQ0dDQUNJQU1RZ1FFMkFnQWdBa0VZYWlBQ0VKY0NJUVVnQkJBZ0drRUJJQVVOQVJvTEFrQWdBQ2dDakFRb0FnQkJEVVlOQUNBQklBRW9BZ0FvQWhnUkFBQkJyK0lSRUNzRVFDQUNJQU1nQWtFSWFrRy80aEVRYVNJQUVJTUVOZ0lZSUFJZ0F4Q0JBVFlDQUNBQ1FSaHFJQUlRbHdJaEJDQUFFQ0FhUVFFZ0JBMENHZ3NnQVNBQktBSUFLQUlZRVFBQVFkWGlFUkFyQkVBZ0FpQURJQUpCQ0dwQjZ1SVJFR2tpQUJDREJEWUNHQ0FDSUFNUWdRRTJBZ0FnQWtFWWFpQUNFSmNDSVFRZ0FCQWdHa0VCSUFRTkFob0xJQUVnQVNnQ0FDZ0NHQkVBQUVHUDR4RVFLMFVOQUNBQ0lBTWdBa0VJYWtIcTRoRVFhU0lBRUlNRU5nSVlJQUlnQXhDQkFUWUNBQ0FDUVJocUlBSVFsd0loQVNBQUVDQWFRUUVnQVEwQkdndEJBQXNoQUNBQ1FTQnFKQUFnQUF0cEFRSi9Jd0JCSUdzaUF5UUFBa0FnQUJBYktBSUFJQUFvQWdSclFRSjFJQUZQQkVBZ0FDQUJFS3dJREFFTElBQVFHeUVDSUFOQkNHb2dBQ0FBRUJZZ0FXb1Eyd1FnQUJBV0lBSVE4Z0lpQWlBQkVLOFZJQUFnQWhDS0NTQUNFSkVEQ3lBRFFTQnFKQUFMTkFFQmZ5TUFRUkJySWdNa0FDQUFJQU5CREdvZ0EwRUlhaUFCSUFKQkFVWVFtQVVhSUFNb0FnZ2hBQ0FEUVJCcUpBQWdBQXN6QVFGL0lBQVFGaUlDSUFGSkJFQWdBQ0FCSUFKckVMNE1Ed3NnQWlBQlN3UkFJQUFnQUNnQ0FDQUJRUUowYWhDV0J3c0xMUUFDZjBFQklBRXRBQWRCQ0hFTkFCcEJBQ0FCRUlBQ1JRMEFHaUFBSUFBb0FnQW9BaHdSQUFCQkVFWUxDeWtCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFUXRCVVFNU2dDQUNFQUlBSkJFR29rQUNBQUN5Z0FJQUlnQVdzaUFFRUJUZ1JBSUFNb0FnQWdBU0FBRUQwYUlBTWdBeWdDQUNBQWFqWUNBQXNMRGdBZ0FDQUJRUUowYWlnQzhBTUw2UU1DQlg4QmZTTUFRU0JySWdVa0FDQUJFQ01hSUFJb0FnQWhDQ0FCRUR3aEJpQUZRUUE2QUI4Q1FBSkFJQVpGRFFBZ0FTQUlJQVlRTkNJSkVCRW9BZ0FpQjBVTkFBTkFJQWNvQWdBaUIwVU5BU0FJSUFjb0FnUkhCRUFnQnlnQ0JDQUdFRFFnQ1VjTkFnc2dBUkJESUFkQkNHb2dBaENMQTBVTkFBc01BUXNnQlVFUWFpQUJJQWhCNE5zUklBTWdCQkNhQmlBQkVDTW9BZ0FoQWlBQkVFTWhBd0pBSUFZRVFDQURLZ0lBSUFhemxDQUNRUUZxczExQkFYTU5BUXNnQlNBR0VMb0JRUUZ6SUFaQkFYUnlOZ0lNSUFVQ2Z5QUJFQ01vQWdCQkFXcXpJQUVRUXlvQ0FKV05JZ3BEQUFDQVQxMGdDa01BQUFBQVlIRUVRQ0FLcVF3QkMwRUFDellDQ0NBQklBVkJER29nQlVFSWFoQlNLQUlBRU5NRUlBZ2dBUkE4SWdZUU5DRUpDd0pBSUFFZ0NSQVJLQUlBSWdKRkJFQWdCU2dDRUNBQlFRaHFJZ0lvQWdBMkFnQWdBaUFGS0FJUU5nSUFJQUVnQ1JBUklBSTJBZ0FnQlNnQ0VDZ0NBRVVOQVNBRktBSVFJUUlnQVNBRktBSVFLQUlBS0FJRUlBWVFOQkFSSUFJMkFnQU1BUXNnQlNnQ0VDQUNLQUlBTmdJQUlBSWdCU2dDRURZQ0FBc2dCVUVRYWhCZklRY2dBUkFqSWdFZ0FTZ0NBRUVCYWpZQ0FDQUZRUUU2QUI4Z0JVRVFhaEN6QWdzZ0FDQUZRUkJxSUFjUU1TQUZRUjlxRUtJQklBVkJJR29rQUF2TUFnRUJmMEVCSVFJQ1FDQUJJQUVvQWdBb0Fpd1JBQUFROFFJTkFFRURJUUlnQVNBQktBSUFLQUlzRVFBQUVQQUNEUUFDUUFKL0lBQW9Bb3dFR2tFQUN3UkFJQUVnQVNnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElGVWcwQkMwRUtJUUlnQVJEYUJBMEJRUUFoQWlBQklBRW9BZ0FvQXNBQkVRQUFEUUVMSUFFZ0FTZ0NBQ2dDTEJFQUFCQ3hBZ1JBUWQ4cElRSWdBU0FCS0FJQUtBSXNFUUFBTFFBd0RRRUxBa0FnQUNnQ2pBUXRBTm9EUlEwQUlBRWdBU2dDQUNnQ0xCRUFBQ2tDQkVJL2cwSUdVZzBBSUFCQk9HcEI0dUFSUVlDR0JCQ3lBVUVNRHdzZ0FTQUJLQUlBS0FJc0VRQUFFTEVDSVFJZ0FTQUJLQUlBS0FJc0VRQUFJUUFnQWdSQVFRa2hBaUFBTFFBbERRRWdBU0FCS0FJQUtBSWNFUUFBUVJCR1FRRjBJUUlNQVF0QkJ5RUNJQUFvQWdSQlAzRWlBRUVRU3cwQUlBQkJBblJCd09vUmFpZ0NBQThMSUFJTFZ3RUNmeU1BUVNCcklnTWtBQ0FBRURzaUFpQURRUWhxSUFBZ0FCQVdRUUZxRU1rRklBQVFGaUFDRUxFR0lnSW9BZ2dnQVJDWEF5QUNJQUlvQWdoQkJHbzJBZ2dnQUNBQ0VPVUhJQUlRcndZZ0EwRWdhaVFBQ3cwQUlBQkI2QUJxSUFFUXRnd0xlUUVCZndKQUlBQWdBQ2dDQUNnQ0hCRUFBRUVRUmdSQUlBQWdBQ2dDQUNnQ0xCRUFBQkN4QWtVTkFTQUFJQUFvQWdBb0Fpd1JBQUF0QURBTkFTQUFJQUFvQWdBb0Fpd1JBQUF0QUNWQkFYTVBDeUFBSUFBb0FnQW9BaHdSQUFCQkRrY05BQ0FBSUFBb0FnQW9BaXdSQUFBUXNRSWhBUXNnQVFzVEFFRVNRZi8vLy84SElBQXRBQWRCQ0hFYkM2d0NBZ0YvQW40Z0F5a0NCQ0lGUW9DQWdJQ0FCSU1oQmdKQUlBSkJBRTRFUUFKL0lBWlFSUVJBSUFBb0Fvd0VLQUlBUVFSR0JFQWdBRUU0YWlJRVFaSXBFQ0VnQkVINTJoRVFRZ3NnQUVFNGFpQUJJQUpCbHlsQmZ4RGpBU0FES1FJRUlRVUxJQVZDZ0lDQWdJQUlnMUJGQ3dSK0lBQkJPR29nQVNBQ1FaZ3BRWDhRNHdFZ0F5a0NCQVVnQlF0Q2dJQ0FnSUFRZzFBTkFTQUFRVGhxSUFFZ0FrR1pLVUYvRU9NQkR3c0NmeUFHVUVVRVFDQUFLQUtNQkNnQ0FFRUVSZ1JBSUFCQk9Hb2lBa0dTS1JBaElBSkIrZG9SRUVJTElBQkJPR29nQVVHWEtVRi9FSGdnQXlrQ0JDRUZDeUFGUW9DQWdJQ0FDSU5RUlFzRWZpQUFRVGhxSUFGQm1DbEJmeEI0SUFNcEFnUUZJQVVMUW9DQWdJQ0FFSU5RRFFBZ0FFRTRhaUFCUVprcFFYOFFlQXNMVHdFQmZnSi9RUkFnQVNrQ0JDSUNRb0NBZ0lBQmcwSUFVZzBBR2tFUElBSkNnSUNBZ0lBZ2cwSUFVZzBBR2tILy8vLy9CeUFDUW9DQWdJQ0F3QUNEVUEwQUdpQUFRVGhxUVNNUUlVRVJDd3RMQUFKL1FmLy8vLzhISUFFdEFBZEJJSEVOQUJwQkRTQUJFUFlJRFFBYVFRNGdBUzBBQjBIQUFIRU5BQnBCLy8vLy93Y2dBUkNUQmtVTkFCb2dBRUU0YWtHVzNoRVFRa0dISndzTFJRRUJmeU1BUVNCcklnSWtBQ0FDSUFFUXpBRTJBaEFRNXdFZ0FrRVlhaUFBSUFFZ0FrRVFhaUFDUVFocUVNVU1JQUpCR0dvUVJDRUFJQUpCSUdva0FDQUFRUVJxQytnREFnVi9BWDBqQUVFZ2F5SUZKQUFnQVJBaklBSVE2Z1loQ0NBQkVEd2hCaUFGUVFBNkFCOENRQUpBSUFaRkRRQWdBU0FJSUFZUU5DSUpFQkVvQWdBaUIwVU5BQU5BSUFjb0FnQWlCMFVOQVNBSUlBY29BZ1JIQkVBZ0J5Z0NCQ0FHRURRZ0NVY05BZ3NnQVJCRElBZEJDR29nQWhDTEEwVU5BQXNNQVFzZ0JVRVFhaUFCSUFoQjROc1JJQU1nQkJDYUJpQUJFQ01vQWdBaEFpQUJFRU1oQXdKQUlBWUVRQ0FES2dJQUlBYXpsQ0FDUVFGcXMxMUJBWE1OQVFzZ0JTQUdFTG9CUVFGeklBWkJBWFJ5TmdJTUlBVUNmeUFCRUNNb0FnQkJBV3F6SUFFUVF5b0NBSldOSWdwREFBQ0FUMTBnQ2tNQUFBQUFZSEVFUUNBS3FRd0JDMEVBQ3pZQ0NDQUJJQVZCREdvZ0JVRUlhaEJTS0FJQUVOTUVJQWdnQVJBOElnWVFOQ0VKQ3dKQUlBRWdDUkFSS0FJQUlnSkZCRUFnQlNnQ0VDQUJRUWhxSWdJb0FnQTJBZ0FnQWlBRktBSVFOZ0lBSUFFZ0NSQVJJQUkyQWdBZ0JTZ0NFQ2dDQUVVTkFTQUZLQUlRSVFJZ0FTQUZLQUlRS0FJQUtBSUVJQVlRTkJBUklBSTJBZ0FNQVFzZ0JTZ0NFQ0FDS0FJQU5nSUFJQUlnQlNnQ0VEWUNBQXNnQlVFUWFoQmZJUWNnQVJBaklnRWdBU2dDQUVFQmFqWUNBQ0FGUVFFNkFCOGdCVUVRYWhDekFnc2dBQ0FGUVJCcUlBY1FNU0FGUVI5cUVLSUJJQVZCSUdva0FBdUNBUUVDZnlNQVFTQnJJZ1VrQUNBQklBVkJIR29nQWhEQkZTSUdLQUlBSVFJZ0JVRUFPZ0FiSUFKRkJFQWdCVUVJYWlBQlFlRGJFU0FESUFRUXdCVWdBU0FGS0FJY0lBWWdCU2dDQ0JEdUFpQUZRUWhxRUY4aEFpQUZRUUU2QUJzZ0JVRUlhaEN6QWdzZ0FDQUZRUWhxSUFJUU1TQUZRUnRxRUtJQklBVkJJR29rQUFzckFRRi9Jd0JCRUdzaUFpUUFJQUlnQVJCZk5nSU1JQUFnQWtFTWFpQUJFS0VISUFKQkVHb2tBQ0FBQ3kwQkFYOGdBQ0FBS0FJRUVNUVZJQUFvQWdBRVFDQUFLQUlRR2lBQUtBSUFJUUVnQUJDSUF4b2dBUkFxQ3d0UUFRRi9JQUFReFFRZ0FCQWJJQUFvQWdBZ0FDZ0NCQ0FCUVFScUlnSVF4UlVnQUNBQ0VDNGdBRUVFYWlBQlFRaHFFQzRnQUJBYklBRVFJeEF1SUFFZ0FTZ0NCRFlDQUNBQUlBQVFGaEN0QlF0WEFRSi9Jd0JCSUdzaUF5UUFJQUFRR3lJQ0lBTkJDR29nQUNBQUVCWkJBV29RMndRZ0FCQVdJQUlROGdJaUFpZ0NDQ0FCRVBrQklBSWdBaWdDQ0VFRWFqWUNDQ0FBSUFJUWlna2dBaENSQXlBRFFTQnFKQUFMWkFFQmZ5TUFRUkJySWdJa0FDQUFLQUlFSUFBUXRRaEdCRUFnQUNBQUlBQW9BZ1JCQVdvUXpoVVF6UlVMSUFBZ0FDZ0NCRUVCYWpZQ0JDQUJMUUFBSVFFZ0FrRUlhaUFBSUFBb0FnUkJmMm9RNFEwZ0FrRUlhaUFCRUlrSElBSkJFR29rQUFzdkFRRi9Jd0JCRUdzaUFTUUFJQUJDQURjQ0FDQUJRUUEyQWd3Z0FFRUlhaUFCUVF4cUVLMENJQUZCRUdva0FBdVFBZ0VGZnlNQVFUQnJJZ1FrQUNBRUlBRTJBaWdnQUNnQ0FDRUJJQVFnQUJCQU5nSUlJQUVnQkVFb2FpQUVRUWhxRUp3SFFRTjBhaUVCQWtBZ0FpQURFTElPSWdWQkFVZ05BQ0FGSUFBUUd5Z0NBQ0FBS0FJRUlnZHJRUU4xVEFSQUlBUWdBellDQ0NBRklBY2dBV3NpQ0VFRGRTSUdTZ1JBSUFRZ0FqWUNDQ0FFUVFocUlBWVFzUTRnQUNBRUtBSUlJQU1nQlNBR2F4Q0hGU0FJUVFGSURRSUxJQUFnQVNBSElBRWdCVUVEZEdvUWhoVWdBaUFFS0FJSUlBRVFzQTRNQVFzZ0FCQWJJUVlnQkVFSWFpQUFJQUFRbWdFZ0JXb1FudzRnQVNBQUtBSUFhMEVEZFNBR0VKNE9JZ1VnQWlBREVJVVZJQUFnQlNBQkVJUVZJUUVnQlJDZERnc2dBUkJoR2lBRVFUQnFKQUFMakFjQkRIOGpBRUZBYWlJR0pBQWdBU0FCS0FJQUtBTEFBUkVBQUNFSUFuOGdBUkN5REVVRVFFRUFJQUVRcVFoRkRRRWFDeUFJUVFBUUVTZ0NBQ0lFSUFRb0FnQW9BZ3dSQUFBaUJDQUVLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NJQkVBQUNnQ0FDSUVRWUQrRDNGQmdJZ01SaUVKUVFBZ0JFR0FnQWh4UlEwQUdpQUlRUUVRRVNnQ0FDSUZJQVVvQWdBb0Fnd1JBQUFpQlNBRktBSUFLQUo0RVFBQUlnVWdCU2dDQUNnQ0hCRUFBRUVEUmdzaEJTQUlFQlpCQVU0RVFDQUpRUUZ6SVFzZ0JFR0FnQkJ4SVE4Z0JVRUJjeUVNSUFVZ0NYSWhEU0FFUVlDQUNIRWhEaUFBUVRocUlRb2dCRUVJZGtIL0FYRWhDVUVBSVFRRFFDQUtFSE1nQ0NBRUVCRW9BZ0FpQnlBQUlBY29BZ0FvQWdnUkFRQUNRQUpBQWtBZ0FTZ0NhRUd6ZTJvaUIwSEpBRXNOQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBZEJDbXNPUUJNVEFBMFRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEFRTURCQVVHQmdjSkNnb1RBZ1lIQ0FzTURCTVREZzhQRUJFU0N5QUVRUU5HSUFSQkFrWWdEeHNORXd3U0N5QU5JQVJCQTBaeElBUkJBa1lnREhFZ0MzRnlEUklNRVFzZ0RTQUVRUVJHY1NBRVFRTkdJQXh4SUF0eGNnMFJEQkFMSUFSQkJFWWdCRUVEUmlBRkd3MFFEQThMSUFSQkEwWWdDVUVGUjNFZ0NVRUZSaUFFUVFKR2NYSU5Ed3dPQ3lBRVFRUkdJQWxCQlVkeElBbEJCVVlnQkVFRFJuRnlEUTRNRFFzZ0JFRUZSaUFFUVFSR0lBVWJEUTBNREFzZ0JFRUdSaUFFUVFWR0lBVWJEUXdNQ3dzZ0JFRUhSaUFFUVFaR0lBVWJEUXNNQ2dzZ0JFRURSaUFFUVFKR0lBNGJEUW9NQ1FzZ0JFRUVSaUFFUVFOR0lBNGJEUWtNQ0FzZ0JFRURSZzBJREFjTElBUkJCRVlOQnd3R0N5QUVRUU5HRFFZTUJRc2dCRUVFUmcwRkRBUUxJQVJCQlVZTkJBd0RDeUFFUVFaR0RRTU1BZ3NnQkVFSFJ3MEJEQUlMSUFSRkRRRUxJQVlnQUNBSUlBUVFFU2dDQUNJSElBY29BZ0FvQWd3UkFBQWlCeUFIS0FJQUtBSjRFUUFBRUtFQk5nSUlJQUlnQmtFSWFoQkJEQUVMSUFZZ0NoRHdCRFlDQ0NBQ0lBWkJDR29RUVNBR1FRaHFJQW9RdmdJZ0F5QUdMUUE0T2dBQUlBWkJDR29RdUFFZ0JrRUlhaUFJSUFRUUVTZ0NBQ0lISUFjb0FnQW9BZ3dSQUFBaUJ5QUhLQUlBS0FKNEVRQUFFT1FCSUFZZ0F5QUdRUWhxRVBvREN5QUVRUUZxSWdRZ0NCQVdTQTBBQ3dzZ0JrRkFheVFBQ3g0QUlBRWdBU2dDQUNnQ3lBRVJBQUFnQUNnQ2pBUVFReEFURUljQlJRdHZBUU4vSXdCQkVHc2lCaVFBSUFZUU1DRUVJQUlnQWlnQ0FDZ0NVQkVBQUNJRklBVW9BZ0FvQXNRQkVRQUFJZ1VnQlNnQ0FDZ0NHQkVBQUNBRUVOME1JQUJCT0dvZ0FTQUFJQUlnQWlnQ0FDZ0NlQkVBQUJDL0FTQURJQVFRMHdZaEFDQUVFRFlnQmtFUWFpUUFJQUFMcXd3QkJuOGpBRUVRYXlJSUpBQWdDQ0FFTmdJTUlBVVFnd01oQnlBRkVKSUVJUXRCZnlFS0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCbndWTUJFQWdBVUhKZm1vaURFSDhBazBOQ2lBQlFYcHFJZ1ZCQ0VzTkQwR29BU0VCSUFWQkFXc09DQTBOQ1E4UER3OElBUXNnQVVIZ2Vtb2lCVUVGU3dSQUlBRkJzd1ZIRFE5Qm5nRWhBUXdOQ3lBRlFRRnJEZ1VDQXdRRkJnRUxRZjRBSVFFZ0MwVU5DMEgvQUNFQklBQkJPR29nQXhDcUNFVU5DeUFBUWY4QUlBSWdBeUFFRUxFTUlRa01EUXRCekFFaEFRd0tDMEhOQVNFQkRBa0xRY2tBSVFjTUJndEJ5d0JCeWdBZ0J4c2hCd3dGQ3lBQVFUaHFJZ0ZCMENzUUlTQUJRYW5tRVJCQ1FkRXJJUUVNQmdzZ0FFRTRhaUlCUWRBckVDRWdBVUdwNWhFUVFrSFNLeUVCREFVTFFkTUFJUUVNQkF0QnlBRWhBUXdEQzBFaElRY0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUF4QkFXc08vQUkvUGowOE9qczVNelExTnpnMlJUQXZMaTBzS3hNU0tpa0dCQ2duUlVWRlJVVkZSU1lsUlVWRkFRRUJBUUVCQVFFQkFRRUJKQ01pSVI0ZEhCc2dIeG9aQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFeVJVVkZNVVZGUlVWRlJSZ1hGaEVRRHc0TkRBdEZSVVZGUlVFQVFrVkZSVVZGUlVWRlJVVkZSVVVKUlFrSkNRbEZSVVZGUlVWRkNBZ0lSUWdJQ0VVSUNBZ0lDRVZGUlVVSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBaEZSVVZGUlVWRlJRZ0lDQUpGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRkNRa0pDUWtKQ1FrSkNRa0pDUWtKQ1FrSlJVVkZCd1VEUlVWRlJVVkZSVVZGUlVVS0NncEZSVVZGUlVWRlJVVVZGRVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGQVVBTFFTSWhCd3hBQzBIOEFDRUJERUVMUWJBcElRRU1RQXNnQUVIajVoRVEvQUloQ2d0QkFpRUhERHdMSUFCQjQrWVJFUHdDSVFvTFFRRWhCd3c2Q3lBQVFjM21FUkQ4QWlFS1FRUWhCd3c1Q3lBSUVEQWlBaUFJUVF4cUVFY2dBQ0FCSUFNZ0FpQUZFS1VJSVFrZ0FoQTJERHdMSUFnUU1DSUNJQWhCREdvUVJ5QUFJQUVnQXlBQ0lBVVFzQXdoQ1NBQ0VEWU1Pd3NnQ0JBd0lnSWdDRUVNYWhCSElBQWdBU0FESUFJZ0JTQUdFTG9JSVFrZ0FoQTJERG9MUWN3QUlRY2dCVUVEUncwMUlBQkJPR3BCaStZUkVFSU1OUXRCMXdFaEFRdzJDMEhXQVNFQkREVUxRZFVCSVFFTU5BdEIxQUVoQVF3ekMwSFRBU0VCRERJTFFkSUJJUUVNTVF0QkJrRUhJQXNiSVFjTUxndEJCRUVGSUFzYklRY01MUXRCbXdFaEFRd3VDMEdhQVNFQkRDMExRZEVCSVFFTUxBdEIwQUVoQVF3ckMwSFBBU0VCRENvTFFjRUFJUWNNSnd0Qk95RUhEQ1lMUWNBQUlRY01KUXRCTnlFSERDUUxRVDhoQnd3akMwRTJJUWNNSWd0QlBpRUhEQ0VMUVRvaEJ3d2dDMEU5SVFjTUh3dEJPU0VIREI0TFFUd2hCd3dkQzBFNElRY01IQXRCblFFaEFRd2RDMEdjQVNFQkRCd0xRUW9oQnd3WkMwRUpJUWNNR0F0QkF5RUhEQmNMUVFnaEJ3d1dDMEVnSVFjTUZRdEJIeUVIREJRTFFSNGhCd3dUQzBFZElRY01FZ3RCSENFSERCRUxRUnNoQnd3UUMwSEZBQ0VIREE4TFFjSUFJUWNNRGd0QkV5RUhEQTBMUVJRaEJ3d01DMEVWSVFjTUN3dEJHQ0VIREFvTFFSWWhCd3dKQzBFWElRY01DQXRCRWlFSERBY0xRUkFoQnd3R0MwRVJJUWNNQlF0QkR5RUhEQVFMUVE0aEJ3d0RDMEVOSVFjTUFndEJEQ0VIREFFTFFRc2hCd3NnQ0JBd0lnUWdDRUVNYWhCSElBQkJPR29nQXlBS1FYOU1CSDhnQUNnQ2xBUUZJQW9MSUFjZ0JCQ1NDQ0VCSUFRUU5nd0NDMEhVQUNFQkN5QUFRVGhxSUFFZ0F5QUVFUGdCSVFFTElBSWdBRUU0YWlJQUlBRVErUVFnQWlBQUlBRVEvd0lnQUNBQklBSW9BZ0FRaGdFaENRc2dDRUVRYWlRQUlBa0x5U1lCRDM4akFFSFFBbXNpQWlRQUFrQWdBUkNwQ0VVRVFDQUJFTElNUlEwQkN5QUFRVGhxSWdRZ0FTQUJLQUlBS0FJQUVRQUFLQUlJSUFFZ0FTZ0NBQ2dDQUJFQUFCRGdBaERkQWlBQ0FuOGdBU0FCS0FJQUtBSVlFUUFBQkVBZ0FTQUJLQUlBS0FJWUVRQUFJZ01nQXlnQ0FDZ0N2QUVSQUFCQkFCQVJLQUlBSWdNZ0F5Z0NBQ2dDREJFQUFDSURJQU1vQWdBb0FuZ1JBQUFNQVFzZ0FTQUJLQUlBS0FJY0VRQUFJZ01nQXlnQ0FDZ0N2QUVSQUFBaUF5QURLQUlBS0FJTUVRQUFJZ01nQXlnQ0FDZ0NlQkVBQUFzaUNDQUlLQUlBS0FJZ0VRQUFLQUlBSWdNMkFzZ0NBa0FnQTBHQWdBaHhSUTBBSUFFZ0FTZ0NBQ2dDR0JFQUFFVU5BQ0FCSUFFb0FnQW9BaGdSQUFBaUF5QURLQUlBS0FLOEFSRUFBRUVCRUJFb0FnQWlBeUFES0FJQUtBSU1FUUFBSWdNZ0F5Z0NBQ2dDZUJFQUFDSURJQU1vQWdBb0Fod1JBQUJCQTBZaENRc2dBaUFBTmdMQUFpQUNJQUpCeUFKcU5nTEVBaUFDUWJnQ2FoQ0JCU0VLSUFKQnFBSnFFREFoQndKQUlBRWdBU2dDQUNnQ0dCRUFBQVJBSUFBZ0FTQUJLQUlBS0FJWUVRQUFJQWNnQ2hEWURBd0JDeUFBSUFFZ0FTZ0NBQ2dDSEJFQUFDQUhFSllWQ3lBQkVMOEVFSU1GSVFzZ0FrSG9BV3BCQUVIQUFCRGRBUm9nQWlBSFFRQVFFU2dDQURZQzZBRWdBaUFDS0FMSUFpSUROZ0xRQVNBQ0lBTTJBaEFnQVNBQ1FSQnFJQUpCMkFGcUVKUVZJQUVnQVNnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQWh3UkFBQWhBd0pBQWtBQ1FBSkFBa0FnQWkwQTJBRkZEUUFDUUNBQktBSm9RZDRFUmcwQUlBUWdBaWdDNkFFUXFBaEZEUUFnQWlBRVFlUUFJQVFnQWlnQzZBRVE5d01nQWlnQzZBRVErQUUyQXVnQkN5QUJLQUpvSWdWQm8zdHFJZ1pCQTAwTkFTQUZRYmw3YWlJR1FRRkxCRUFnQlVHSUJVY05BU0FFUWJ3Q0lBUVErZ0lnQjBFQUVCRW9BZ0FRK0FFaEF3d0ZDeUFHUVFGckRRTU1BZ3NnQVNBQktBSUFLQUo0RVFBQUlnTWdBeWdDQUNnQ01CRUFBQ0VESUFFb0FtZ2hCU0FDUWZnQWFpQUJJQUVvQWdBb0FuZ1JBQUFpQmlBR0tBSUFLQUljRVFBQVFRQkJCQ0FESUFWQjVnUkdHeUlPUVFCQkFFRUFFRVVoRHlBQ0lBQTJBblFnQWlBUE5nSndBa0FnQVJDcENBUkFJQUpCNEFCcUVEQWhCU0FDSUFjUVFEWUNXQ0FDSUFKQjJBQnFFTTRCTmdJNElBVWdBa0hRQUdwQkFTQUNLQUk0S0FJQUVIVVFoQUVDUUNBQ0xRRGdBUVJBSUFJZ0JFRUFRUUFRdlFJMkFrZ2dBa0U0YWhBd0lnRWdBa0hJQUdvUVJ5QUJJQUpCeUFCcUVFY2dCU0FDUVRCcVFRRWdCQ0FFSUFSQklCQ2lBa0VDRUxFQklBRkJBQkQxQXhCMUVJUUJJQUpCS0dwQkFFRUFFSFVpQUNBQUtBSUVJQUpCd0FKcUVQY0VjallDQkNBQ1FjZ0NhaENLQVNFR0lBQW9BZ1FoQXdKQUFrQWdCZ1JBSUFBZ0EwSEFBSEkyQWdRTUFRc2dBMFVOQVFzZ0JTQUFFSVFCSUFKQnlBSnFFSW9CUlEwQUlBSWdBa0hZQUdvUXpnRTJBaGdnQlNBQ1FTQnFRUUVnQWlnQ0dDZ0NBQkIxRUlRQkN5QUVJQVJCNGdBZ0FrSHdBR29ReGdNZ0JSRENBeUlESUFzUWhnRWFJQUVRTmd3QkN5QUNJQUpCMkFCcUVNNEJOZ0k0SUFVZ0FrRXdha0VCSUFJb0FqZ29BZ0FRZFJDRUFRSkFJQUVvQW1oQnlRUkhCRUFnQVNnQ2FFSExCRWNOQVF0QkFDRURJQUpCeUFKcUVJb0JCRUJCQUVIQUFCQklJUU1MSUFJdEFOb0JCRUFnQkVIRjVCRVFRaUFFUVpjbkVDRWdBMEVDRUVnaEF3c2dBa0U0YWlBSUVPUUJBa0FnQXlBQUlBSkJPR29RcHdnUVNFSC9mWEVnQWtIQUFtb1E5d1FRU0NJRFJRMEFJQVVnQWtFNGFrRUFJQU1RZFJDRUFTQURRY0FBY1FSQUlBSWdBa0hZQUdvUXpnRTJBaWdnQlNBQ1FUaHFRUUVnQWlnQ0tDZ0NBQkIxRUlRQkN5QURRUUp4QkVBZ0FpQUNRZGdBYWhET0FUWUNLQ0FGSUFKQk9HcEJBU0FDS0FJb0tBSUFFSFVRaEFFTElBTkJnQVJ4UlEwQUlBSkJLR29nQ0JEa0FTQUZJQUpCT0dwQkFTQUVJQUFnQWtFb2FoRC9CRUVBRUhRUWRSQ0VBUXNnQkNBRUlBVW9BZ0FvQWdRUTl3TVFwZ2hGQkVBZ0JFRTNFQ0VMSUFJZ0JFSGlBQ0FDUWZBQWFoREdBeUFGRU1JRE5nSW9JQVFnQWtFNGFrRUJJQUpCS0dvUXhRTWlCa0VBRUJFb0FnQWdDeENHQVJvZ0FTQUJLQUlBS0FKNEVRQUFJZ01nQXlnQ0FDZ0NNQkVBQUNBT1J3UkFJQVFnQ3lBR0lBQWdBU0FCS0FJQUtBSjRFUUFBRUw4QkVKRUlJUUFnQmtFQUVCRWdBRFlDQUFzZ0JrRUFFQkVvQWdBaEF5QUdFRFlNQVFzQ1FDQUJLQUpvUWNvRVJ3UkFJQUVvQW1oQnpBUkhEUUVMQWtBQ1FDQUNRY2dDYWhDS0FVVUVRQ0FDTFFEYUFVVU5BUXNnQWlBQ1FkZ0Fha0VCRU1FRk5nSW9JQVVnQWtFNGFrRUJJQUlvQWlnb0FnQVFkUkNFQVF3QkN5QUZJQUpCT0dwQkFTQUNLQUpZS0FJQUVIVVFoQUVMUVFBaEFTQUNRY2dDYWhDS0FRUkFRUUJCd0FBUVNDRUJDeUFDTFFEYUFRUkFJQVJCeGVRUkVFSWdCRUdYSnhBaElBRkJBaEJJSVFFTElBSkJPR29nQ0JEa0FRSkFJQUVnQUNBQ1FUaHFFS2NJRUVoQi8zdHhJQUpCd0FKcUVQY0VFRWdpQVVVTkFDQUZJQUpCT0dwQkFDQUJFSFVRaEFFZ0FVSEFBSEVFUUNBQ0lBSkIyQUJxRU00Qk5nSW9JQVVnQWtFNGFrRUJJQUlvQWlnb0FnQVFkUkNFQVFzZ0FVRUNjUVJBSUFJZ0FrSFlBR29RemdFMkFpZ2dCU0FDUVRocVFRRWdBaWdDS0NnQ0FCQjFFSVFCQ3lBQlFZQUNjVVVOQUNBQ1FTaHFJQWdRNUFFZ0JTQUNRVGhxUVFFZ0JDQUFJQUpCS0dvUS93UkJBQkIwRUhVUWhBRUxJQVJCNHdBZ0JSQ1BERUVBSVFNZ0JDQUVJQVVvQWdBb0FnUVE5d01RcGdnTkFTQUVRVGdRSVF3QkN3SkFJQUVvQW1oQjJRUkhCRUFnQVNnQ2FFSGFCRWNOQVFzZ0JFRXBFQ0VnQkNBRUlBVW9BZ0FvQWdRUTl3TVFwZ2hGQkVBZ0JFRTNFQ0VMUVFBaEFTQUNRY2dDYWhDS0FRUkFRUUJCd0FBUVNDRUJDeUFDTFFEYUFRUkFJQVJCeGVRUkVFSWdCRUdYSnhBaElBRkJBaEJJSVFFTElBSkJPR29nQ0JEa0FRSkFJQUVnQUNBQ1FUaHFFS2NJRUVoQi8zMXhJQUpCd0FKcUVQY0VFRWdpQVVVTkFDQUZJQUpCT0dwQkFDQUJFSFVRaEFFZ0FVSEFBSEVFUUNBQ0lBSkIyQUJxRU00Qk5nSW9JQVVnQWtFNGFrRUJJQUlvQWlnb0FnQVFkUkNFQVFzZ0FVRUNjUVJBSUFJZ0FrSFlBR29RemdFMkFpZ2dCU0FDUVRocVFRRWdBaWdDS0NnQ0FCQjFFSVFCQ3lBQlFZQUVjVVVOQUNBQ1FTaHFJQWdRNUFFZ0JTQUNRVGhxUVFFZ0JDQUFJQUpCS0dvUS93UkJBQkIwRUhVUWhBRUxJQUlvQWxnb0FnQWhBQ0FFSUFRZ0JFSEFBaUFFSUFKQjhBQnFFTVlESWdFZ0JDQUFFTm9HSWdNUTJ3WWdCUkRDQXlJR0lBTkJBUkN2QVNBQVFRQkIvLy8vL3dkQkFCRFBBaUFFSUFZZ0FVRUFFSzhCSVFNTUFRc2dCU0FDUVNocVFRRUNmeUFDUWNnQ2FoQ0tBUVJBSUFJZ0FrSFlBR29RemdFMkFqZ2dBaWdDT0NnQ0FBd0JDeUFFUVFCQkFCQjBDeEIxRUlRQklBSWdCRUU4SUFSQkN3Si9JQUVvQW1oQjFnUkdCRUFnQkNBRlFRSVFMQ2dDQkJCaURBRUxJQUpCOEFCcUVNWURDeERiQlNBRkVNSUROZ0lnSUFKQk9Hb1FNQ0lHSUFKQklHb1FSeUFDSUFjUU1qWUNTQ0FDUWRnQWFpQUNRY2dBYWhBZUJFQURRQ0FHSUFJb0FsZ1FSeUFDUWRnQWFoQm1HaUFDSUFjUU1qWUNTQ0FDUWRnQWFpQUNRY2dBYWhBZURRQUxDeUFBSUFFb0FtZ2dBa0h3QUdvUXhnTWdCaUFCSUFFb0FnQW9Bb0FCRVFBQUlBb1F1Z2doQXlBR0VEWUxJQVVRcmdNTUFRc2dBaTBBNGdFRVFDQUNJQWNRUURZQ1VDQUNRZUFBYWhBd0lRQWdCQ0FDS0FMb0FSQ29DQVJBSUFJZ0JFSGtBQ0FFSUFJb0F1Z0JFUGNESUFJb0F1Z0JFUGdCTmdMb0FRc2dBQ0FDUWVnQmFoQkhJQUpCMEFCcUVHWWFJQUpCeUFKcUVLUUhCRUFnQWlBRVFRQkJBQkM5QWpZQ01DQUNRVGhxRURBaUF5QUNRVEJxRUVjZ0F5QUNRVEJxRUVjZ0FpQUVJQVFnQkVFZ0VLSUNRUUlRc1FFZ0EwRUFFUFVETmdJb0lBQWdBa0VvYWhCQklBTVFOZ3NnQWlBSEVESTJBamdnQWtIUUFHb2dBa0U0YWhBZUJFQURRQ0FBSUFJb0FsQVFSeUFDUWRBQWFoQm1HaUFDSUFjUU1qWUNPQ0FDUWRBQWFpQUNRVGhxRUI0TkFBc0xRWk1uSVFNZ0FTZ0NhRUg2QkVjRVFFR1VKMEVBSUFFb0FtaEIrd1JHR3lFREN5QUVRZW5rRVJCQ0lBUkJraWNRSVNBRUlBTWdBa0h3QUdvUXhnTWdBQkR3QXlFRElBQVFOZ3dCQ3lBQktBSm9RWU43YWtFVFNTRUtJQUVvQW1oQjducHFRUVZKSVEwQ2YwRUFJQUl0QU1rQ1FRaDBRWUFJUncwQUdrRUFJQUpCeUFKcUVJTUpSUTBBR2lBQ1FjZ0NhaENDQ1FzaEF3SkFJQUl0QU5vQkRRQWdBaTBBM3dFTkFDQURJQUl0QU5zQmNnMEFJQUl0QU53QklRVWdBaTBBM1FFaEJpQUNMUURlQVNFTUlBSXRBT0VCSVJBZ0J4QVdJQW9nRUdwQkEwRUNJQXdiSUFscVFRRWdCaUFGRzBIL0FYRnFhaUlGUVFOcUlBVWdEUnRLSVF3TEFrQWdBaTBBMndGRkRRQWdCQ0FDS0FMb0FSQ29DRVVOQUNBQ0lBUkI1QUFnQkNBQ0tBTG9BUkQzQXlBQ0tBTG9BUkQ0QVRZQzZBRUxBa0FnQWkwQTNnRkZEUUFnQUNnQ2pBUVF3d2doQlNBQ0xRRGFBU0FNUVFGelJYSkZCRUFnQWlBRklBSkI0QUJxUVlibEVSQnBJZ1lRZ3dRMkFqZ2dBaUFGRUlFQk5nSlFJQUpCT0dvZ0FrSFFBR29RSGlFRklBWVFJQm9nQlVVTkFRc2dCRUdsNVJFUVFpQUVRWkVuRUNFTFFRRWhCU0FDSUFkQkFSQVJLQUlBTmdMc0FRSkFJQU1nQ1hKQkFVWUVRQ0FDSUFkQkFoQVJLQUlBTmdMNEFRd0JDd0pBSUFJb0FzZ0NRWUNBQ0hFaUEwVU5BQ0FDTFFEZUFVVU5BQ0FDSUFkQkFoQVJLQUlBTmdMNEFRd0JDMEVBSVFVZ0EwVU5BQ0FDUWVBQWFoQXdJUU1nQWlBQ0xRRFpBUVIvUVFJRklBUWdBaWdDN0FFUXlBRkJmMm9MTmdJNElBTWdBa0U0YWhCQklBSWdCQ0FDS0FMc0FTSUdJQVFnQkNBR0VHSVF1d0lnQXhENEFqWUMrQUVnQXhBMkN3SkFJQUl0QU5vQkJFQWdBaUFISUFWQkFuSVFFU2dDQURZQzlBRWdCVUVCYWlFRlFRQWhDUXdCQzBFQUlRa2dBQ2dDakFRb0FnQkJCRVlOQUNBQUtBS01CQ2dDQUVFRlJnUkFJQUFvQW93RUtBTFVCQTBCQzBFQklRa0xJQUpCeUFKcUVJb0JCRUFnQWlBSElBVkJBbW9RRVNnQ0FEWUNqQUlnQlVFQmFpRUZDd0pBSUFJdEFOOEJSUVJBSUFVaEF3d0JDeUFDSUFjZ0JVRUNhaUlERUJFb0FnQTJBb1FDSUFJZ0J5QUZRUU5xRUJFb0FnQTJBb2dDQ3dKQUlBSXRBTndCQkVBZ0FpQUhJQU5CQW1vUUVTZ0NBRFlDL0FFZ0EwRUJhaUVEREFFTElBSXRBTjBCUlEwQUlBSWdCeUFEUVFKcUVCRW9BZ0EyQW9BQ0lBTkJBV29oQXdzZ0FpMEE0UUVFUUNBQ0lBY2dBMEVDYWhBUktBSUFOZ0tZQWlBRFFRRnFJUU1MSUFvRVFDQUNJQWNnQTBFQ2FoQVJLQUlBTmdLVUFpQURRUUZxSVFNTEFrQWdBaTBBM2dGRkRRQWdBaTBBeWdKQkFuRU5BQ0FEUVFKcUlnVWdCeEFXU0FSQUlBSWdCeUFGRUJFb0FnQTJBcEFDSUFOQkFXb2hBd3dCQ3lBQ0lBUkJBRUVBRUwwQ05nS1FBZ3RCQUNFRkFrQWdEVVVFUUNBRElRWU1BUXNnQWlBSElBTkJBbW9RRVNnQ0FEWUNuQUlnQWlBSElBTkJBMm9pQmhBUktBSUFOZ0tnQWlBSElBTkJCR29RRVNnQ0FDRUZDeUFNQkVBZ0FpQUhJQVpCQW1vUUVTZ0NBRFlDOEFFTElBMEVRQ0FFUWNYbEVSQkNJQVJCb2lrUUlTQUVJQVFnQlJCaUVMQUJJUU1nQWtIZ0FHb1FNQ0VBSUFJZ0FrSHdBR29ReGdNMkFqZ2dBQ0FDUVRocUVFRkJBQ0VCQTBBZ0FpQUVJQU1nQVJDZUF6WUNPQ0FBSUFKQk9Hb1FRU0FCUVFGcUlnRkJCVWNOQUFzZ0JDQUxJQVFnQUVIajVSRVFtZ2dpQmlBS0lBSXRBTnNCSUFJdEFOa0JJQUl0QU40QklBa2dBa0hvQVdvZ0FrSEFBbW9ROXdRUWpBd2hBMEVBSVFFRFFDQUVFSE1nQkNBRkVJQURJQUpCT0dvUWdRVVFyZ2dnQkNBQlFRQVF2UUloQ0NBQ0lBSW9BamdpQ1RZQ0ZDQUNJQWsyQWd3Z0JDQUlJQUpCREdwQkFCQ0NCU0FFSUFRZ0F5QUVJQVlnQVVFQmFpSUJFSjRESUFFUXJ3RkJBRUgvLy8vL0IwRUFFSXNJSUFGQkJVY05BQXNnQkNBRElBSkI4QUJxRU1ZRFFRQVFyd0VoQXlBQUVEWU1BUXNDUUNBQ0xRRFpBVVVOQUNBRUlBSW9BdXdCRU1nQklRTWdBaTBBeVFKQmYyb2lCa0VFU3cwQVFRRWhCUUpBQWtBZ0JrRUJhdzRFQUFJQ0FBRUxRUUloQlFzZ0JTQURRWDlxSWdOR0RRQWdBaUFFSUFRZ0FpZ0M3QUVpQmlBRUlBUWdCaEJpRUxzQ0lBTVFyd0VnQWlnQzdBRWlBeUFFSUFNUVlpQUZFSklNTmdMc0FRc2dDQ0FJS0FJQUtBSXNFUUFBTFFBS1FRaHhCRUFnQWtFQk9nQ2tBZ3NnQ0NBSUtBSUFLQUlzRVFBQUxRQUpRY0FBY1FSQUlBSkJBVG9BcFFJTElBSWdCQ0FMSUFKQjhBQnFFTVlESUFvZ0FpMEEyd0VnQWkwQTJRRWdBaTBBM2dFZ0NTQUNRZWdCYWlBQ1FjQUNhaEQzQkJDTUREWUNPQ0FDUWVBQWFrRUJJQUpCT0dvUXhRTWhCU0FCSUFFb0FnQW9BbmdSQUFBaUF5QURLQUlBS0FJd0VRQUFJQTVIQkVBZ0JDQUxJQVVnQUNBQklBRW9BZ0FvQW5nUkFBQVF2d0VRa1FnaEFDQUZRUUFRRVNBQU5nSUFDeUFGUVFBUUVTZ0NBQ0VESUFVUU5nc2dEeEExR2d3REN3SkFBa0FnQmtFQmF3NERBUUFDQXdzZ0JFSHFBQ0FDUWVnQmFpQURRUWxHRU5nRklRTU1Bd3NnQWlBSFFRRVFFU2dDQURZQzdBRWdCRUhwQUNBQ1FlZ0JhaUFEUVFsR0VOZ0ZJUU1NQWdzZ0JFSHJBQ0FDUWVnQmFpQURRUWxHRU5nRklRTU1BUXNnQnhBV1FRSlBCRUFnQWlBSFFRRVFFU2dDQURZQzlBRWdCRUhuQUNBQ1FlZ0JhaUFEUVFsR0VOZ0ZJUU1NQVFzZ0JFSG9BQ0FDUWVnQmFpQURRUWxHRU5nRklRTUxJQWNRTmdzZ0FrSFFBbW9rQUNBREMyNEJBMzhqQUVFUWF5SUNKQUFnQUNBQUtBSUFLQUxBQVJFQUFDSURFQlpCQVU0RVFFRUFJUUFEUUNBQ0lBTWdBQkFSS0FJQUlnUWdCQ2dDQUNnQ0ZCRUFBQkJMUVFBUUR5Z0NBRFlDRENBQklBSkJER29RUVNBQVFRRnFJZ0FnQXhBV1NBMEFDd3NnQWtFUWFpUUFDeW9CQVg4Z0FDZ0NQQ0lBSUFFb0Fqd2lBbkpGSVFFZ0FFVWdBa1Z5Qkg4Z0FRVWdBQ0FDRUxFTEN3c2ZBQ0FBUVh4cUlnQkJCazBFUUNBQVFRSjBRY2lKQ1dvb0FnQVBDMEVVQ3d3QUlBQWdBUkRmQWtFZ1Jnc05BQ0FBSUFBZ0FSQmlFT0FNQzIwQUFrQWdBRUY2YWlJQVFRUkxEUUFDUUFKQUFrQWdBRUVCYXc0RUF3RURBZ0FMSUFGQmUyb2lBRUVIVHcwQ0lBQkIvd0J4UlE4TElBRkJlMm9pQUVFRlR3MEJRUVVnQUVFZmNYWkJBWEVQQ3lBQlFYdHFJZ0JCQjA4TkFFRVZJQUJCL3dCeGRrRUJjUThMUVFBTEZnQWdBQ0FCS0FJQU5nSUFJQUFnQWlnQ0FEWUNCQXVyQVFFRmZ5TUFRUkJySWdNa0FDQUFFQ01nQVJEbkJpRUVBa0FDUUNBQUVEd2lCVVVOQUNBQUlBUWdCUkEwSWdZUUVTZ0NBQ0lDUlEwQUlBSW9BZ0FpQWtVTkFBTkFJQVFnQWlnQ0JFY0VRQ0FDS0FJRUlBVVFOQ0FHUncwQ0N3SkFJQVFnQWlnQ0JFY05BQ0FBRUVNZ0FrRUlhaUFCRUtZRFJRMEFJQU5CQ0dvZ0FoQXhLQUlBSVFJTUF3c2dBaWdDQUNJQ0RRQUxDeUFERU1zQklnSTJBZ2dMSUFOQkVHb2tBQ0FDQzk0QkFRVi9Jd0JCRUdzaUJ5UUFJQUVRUENFRklBRWdBaWdDQkNBRkVEUWlCaEFSS0FJQUlRTURRQ0FESWdRb0FnQWlBeUFDUncwQUN3SkFJQVFnQVVFSWFrY0VRQ0FFS0FJRUlBVVFOQ0FHUmcwQkN5QUNLQUlBSWdNRVFDQURLQUlFSUFVUU5DQUdSZzBCQ3lBQklBWVFFVUVBTmdJQUN3SkFJQUlvQWdBaUEwVU5BQ0FES0FJRUlBVVFOQ0lESUFaR0RRQWdBU0FERUJFZ0JEWUNBQXNnQkNBQ0tBSUFOZ0lBSUFKQkFEWUNBQ0FCRUNNaUJDQUVLQUlBUVg5cU5nSUFJQUFnQWlBSFFRaHFJQUVRRzBFQkVNTUJFSkVCR2lBSFFSQnFKQUFMcmdFQkJYOGpBRUVRYXlJREpBQWdBQkFqSUFFb0FnQVE2UVloQkFKQUFrQWdBQkE4SWdWRkRRQWdBQ0FFSUFVUU5DSUdFQkVvQWdBaUFrVU5BQ0FDS0FJQUlnSkZEUUFEUUNBRUlBSW9BZ1JIQkVBZ0FpZ0NCQ0FGRURRZ0JrY05BZ3NDUUNBRUlBSW9BZ1JIRFFBZ0FCQkRJQUpCQ0dvZ0FSREVBa1VOQUNBRFFRaHFJQUlRTVNnQ0FDRUNEQU1MSUFJb0FnQWlBZzBBQ3dzZ0F4RExBU0lDTmdJSUN5QURRUkJxSkFBZ0FndXJBUUVGZnlNQVFSQnJJZ01rQUNBQUVDTWdBUkNGQ1NFRUFrQUNRQ0FBRUR3aUJVVU5BQ0FBSUFRZ0JSQTBJZ1lRRVNnQ0FDSUNSUTBBSUFJb0FnQWlBa1VOQUFOQUlBUWdBaWdDQkVjRVFDQUNLQUlFSUFVUU5DQUdSdzBDQ3dKQUlBUWdBaWdDQkVjTkFDQUFFRU1nQWtFSWFpQUJFTG9GUlEwQUlBTkJDR29nQWhBeEtBSUFJUUlNQXdzZ0FpZ0NBQ0lDRFFBTEN5QURFTXNCSWdJMkFnZ0xJQU5CRUdva0FDQUNDd2tBSUFBZ0FSRDlGUXRFQVFKL0l3QkJFR3NpQWlRQUlBSkJMem9BRHlBQUlBSkJDR29RbXcwaUFDQUNRUTlxSUFFUUh5SURRUUZxRUtBUklBQWdBUkFUSUFNUXlnVWFJQUpCRUdva0FBdXJBUUVGZnlNQVFSQnJJZ01rQUNBQUVDTWdBUkRxQmlFRUFrQUNRQ0FBRUR3aUJVVU5BQ0FBSUFRZ0JSQTBJZ1lRRVNnQ0FDSUNSUTBBSUFJb0FnQWlBa1VOQUFOQUlBUWdBaWdDQkVjRVFDQUNLQUlFSUFVUU5DQUdSdzBDQ3dKQUlBUWdBaWdDQkVjTkFDQUFFRU1nQWtFSWFpQUJFSXNEUlEwQUlBTkJDR29nQWhBeEtBSUFJUUlNQXdzZ0FpZ0NBQ0lDRFFBTEN5QURFTXNCSWdJMkFnZ0xJQU5CRUdva0FDQUNDeWtCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFUTZnd1FNU2dDQUNFQUlBSkJFR29rQUNBQUN3a0FJQUFnQVJDRUZndTlBZ0VGZnlBQUVDVWFBa0FnQVFSQUlBQWdBUkNDQWhDckFpQUFFQ1VnQVRZQ0FBTkFJQUFnQXhBUlFRQTJBZ0FnQTBFQmFpSURJQUZIRFFBTElBQkJDR29pQWlnQ0FDSUVSUTBCSUFBZ0JDZ0NCQ0FCRURRaUJoQVJJQUkyQWdBZ0JDZ0NBQ0lDUlEwQkEwQUNRQ0FHSUFJb0FnUWdBUkEwSWdWR0JFQWdBaUVFREFFTEFrQUNRQ0FBSUFVUUVTZ0NBQVJBSUFJaEF5QUNLQUlBUlEwQ0lBQVFReUFDUVFocUlBSW9BZ0JCQ0dvUXhBSU5BUXdDQ3lBQUlBVVFFU0FFTmdJQUlBSWhCQ0FGSVFZTUFnc0RRQ0FES0FJQUlnTW9BZ0JGRFFFZ0FCQkRJQUpCQ0dvZ0F5Z0NBRUVJYWhERUFnMEFDd3NnQkNBREtBSUFOZ0lBSUFNZ0FDQUZFQkVvQWdBb0FnQTJBZ0FnQUNBRkVCRW9BZ0FnQWpZQ0FBc2dCQ2dDQUNJQ0RRQUxEQUVMSUFCQkFCQ3JBaUFBRUNWQkFEWUNBQXNMMWdFQ0EzOEJmU01BUVJCcklnSWtBQ0FDSUFFMkFnd0NRQ0FDSUFGQkFVWUVmMEVDQlNBQklBRkJmMnB4UlEwQklBRVFpZ0lMSWdFMkFnd0xBa0FnQVNBQUVEd2lBMHNFUUNBQUlBRVE3UXdNQVFzZ0FTQURUdzBBSUFNUXVnRWhCQUovSUFBUUl5Z0NBTE1nQUJCREtnSUFsWTBpQlVNQUFJQlBYU0FGUXdBQUFBQmdjUVJBSUFXcERBRUxRUUFMSVFFZ0FnSi9JQVFFUUNBQkVJb0VEQUVMSUFFUWlnSUxOZ0lJSUFJZ0FrRU1haUFDUVFocUVGSW9BZ0FpQVRZQ0RDQUJJQU5QRFFBZ0FDQUJFTzBNQ3lBQ1FSQnFKQUFMdlFJQkJYOGdBQkFsR2dKQUlBRUVRQ0FBSUFFUWdnSVFxd0lnQUJBbElBRTJBZ0FEUUNBQUlBTVFFVUVBTmdJQUlBTkJBV29pQXlBQlJ3MEFDeUFBUVFocUlnSW9BZ0FpQkVVTkFTQUFJQVFvQWdRZ0FSQTBJZ1lRRVNBQ05nSUFJQVFvQWdBaUFrVU5BUU5BQWtBZ0JpQUNLQUlFSUFFUU5DSUZSZ1JBSUFJaEJBd0JDd0pBQWtBZ0FDQUZFQkVvQWdBRVFDQUNJUU1nQWlnQ0FFVU5BaUFBRUVNZ0FrRUlhaUFDS0FJQVFRaHFFS1lERFFFTUFnc2dBQ0FGRUJFZ0JEWUNBQ0FDSVFRZ0JTRUdEQUlMQTBBZ0F5Z0NBQ0lES0FJQVJRMEJJQUFRUXlBQ1FRaHFJQU1vQWdCQkNHb1FwZ01OQUFzTElBUWdBeWdDQURZQ0FDQURJQUFnQlJBUktBSUFLQUlBTmdJQUlBQWdCUkFSS0FJQUlBSTJBZ0FMSUFRb0FnQWlBZzBBQ3d3QkN5QUFRUUFRcXdJZ0FCQWxRUUEyQWdBTEM5WUJBZ04vQVgwakFFRVFheUlDSkFBZ0FpQUJOZ0lNQWtBZ0FpQUJRUUZHQkg5QkFnVWdBU0FCUVg5cWNVVU5BU0FCRUlvQ0N5SUJOZ0lNQ3dKQUlBRWdBQkE4SWdOTEJFQWdBQ0FCRU84TURBRUxJQUVnQTA4TkFDQURFTG9CSVFRQ2Z5QUFFQ01vQWdDeklBQVFReW9DQUpXTklnVkRBQUNBVDEwZ0JVTUFBQUFBWUhFRVFDQUZxUXdCQzBFQUN5RUJJQUlDZnlBRUJFQWdBUkNLQkF3QkN5QUJFSW9DQ3pZQ0NDQUNJQUpCREdvZ0FrRUlhaEJTS0FJQUlnRTJBZ3dnQVNBRFR3MEFJQUFnQVJEdkRBc2dBa0VRYWlRQUM5OEdBUVIvSXdCQjhBQnJJZ1VrQUFKQUlBSkZEUUFnQWlBQ0tBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ0hCRUFBRUVRUmcwQUFrQUNRQUpBSUFGQnRueHFJZ2RCQ2tzRVFDQUJRWHBxSWdSQkIwc0VRQ0FCUWFNRVJ3MERRUU1oQkF3Q0N3SkFBa0FnQkVFQmF3NERBQVFFQVFzZ0FpQUNLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NIQkVBQUVFTVJ3MEZJQUlnQWlnQ0FDZ0NlQkVBQUNJRUlBUW9BZ0FvQW13UkFBQU5CU0FDSUFJb0FnQW9BbmdSQUFBaUJDQUVLQUlBS0FKd0VRQUFEUVVnQWlBQ0tBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ2FCRUFBRVVOQkF3RkN5QUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUljRVFBQVFROUdEUVFnQWlBQ0tBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ2NCRUFBRVVOQWd3RUMwRU1JUVFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSFFRRnJEZ29IQmdVRUF3SUJDZ2tBQ0F0QkFpRUVEQWtMUVFzaEJBd0lDMEVLSVFRTUJ3dEJCeUVFREFZTFFRWWhCQXdGQzBFRklRUU1CQXRCQkNFRURBTUxRUWtoQkF3Q0MwRUlJUVFNQVF0QkFTRUVDeUFBSUFFZ0JVRVlhaUFFUVFBZ0FpQUNLQUlBS0FLUUFSRUFBQ0FDSUFJb0FnQW9BcFFCRVFBQUlBSWdBaWdDQUNnQ21BRVJBQUFnQWlBQ0tBSUFLQUtrQVJFQUFCQkZJZ1FnQWhDM0JDRUNJQVFRTlJvZ0FrVU5BZ3NnQVVHMmZHcEJDMGtFUUNBQ0lRWU1BZ3NnQWlFR0lBRkJvd1JHRFFFTElBVWdBeWtDQ0RjREVDQUZJQU1wQWdBM0F3aEJBQ0VHSUFBZ0FTQUNJQVZCQ0dvUS9Bd2lBQkR0Q0VVTkFDQUFJQUFvQWdBb0FzUUJFUVVBSUFBZ0FDZ0NBQ2dDdkFFUkFBQWlBaUFDS0FJQUtBSVVFUUFBSVFNZ0FDQUFLQUlBS0FLOEFSRUFBQ0VDSUFNRVFDQUNJQUlvQWdBb0FoUVJBQUFpQWlBQklBQWdBQ2dDQUNnQ2VCRUFBQ0FDS0FJQUtBSzhBUkVIQUNFR0RBRUxBa0FnQWlBQ0tBSUFLQUo0RVFBQUlnRWdBU2dDQUNnQ0xCRUFBQkRtQVVVTkFDQUFFT2tJUlEwQUlBQWdBQ2dDQUNnQ2ZCRUFBQ0lCSUFFb0FnQW9BaWdSQUFBUXFRTUxBa0FnQUNBQUtBSUFLQUs4QVJFQUFDSUJJQUVvQWdBb0FvUUJFUUFBRU9JQ1JRMEFJQUFvQW1nUXVBMUZEUUFnQUNBQUtBSUFLQUo4RVFBQUlnRWdBU2dDQUNnQ0tCRUFBQ0lCSUFFcEFnUkNnSUNBZ0JDRU53SUVDeUFBSVFZTElBVkI4QUJxSkFBZ0JndTlBZ0VGZnlBQUVDVWFBa0FnQVFSQUlBQWdBUkNDQWhDckFpQUFFQ1VnQVRZQ0FBTkFJQUFnQXhBUlFRQTJBZ0FnQTBFQmFpSURJQUZIRFFBTElBQkJDR29pQWlnQ0FDSUVSUTBCSUFBZ0JDZ0NCQ0FCRURRaUJoQVJJQUkyQWdBZ0JDZ0NBQ0lDUlEwQkEwQUNRQ0FHSUFJb0FnUWdBUkEwSWdWR0JFQWdBaUVFREFFTEFrQUNRQ0FBSUFVUUVTZ0NBQVJBSUFJaEF5QUNLQUlBUlEwQ0lBQVFReUFDUVFocUlBSW9BZ0JCQ0dvUXVnVU5BUXdDQ3lBQUlBVVFFU0FFTmdJQUlBSWhCQ0FGSVFZTUFnc0RRQ0FES0FJQUlnTW9BZ0JGRFFFZ0FCQkRJQUpCQ0dvZ0F5Z0NBRUVJYWhDNkJRMEFDd3NnQkNBREtBSUFOZ0lBSUFNZ0FDQUZFQkVvQWdBb0FnQTJBZ0FnQUNBRkVCRW9BZ0FnQWpZQ0FBc2dCQ2dDQUNJQ0RRQUxEQUVMSUFCQkFCQ3JBaUFBRUNWQkFEWUNBQXNMTEFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ0FpQUNFSWNXSUFBZ0EwRUlhaERYQkNBRFFSQnFKQUFMSFFFQmYwRUJJUUVnQVVFQUlBQkI4QVZHSUFCQnozNXFRUVJKY2hzTEpnRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBQWdBUkNNRmhBeEtBSUFHaUFDUVJCcUpBQUxGQUFnQUNBQkVPMEJHaUFBSUFJb0FnQTJBZ3dMSHdFQmYwRUJJUUVnQVVFQUlBQkJ5bnRxUVE5SklBQkJkbXBCQkVseUd3dEZBUUYvSXdCQklHc2lBaVFBSUFJZ0FSRE1BVFlDRUJEbkFTQUNRUmhxSUFBZ0FTQUNRUkJxSUFKQkNHb1FsQllnQWtFWWFoQkVJUUFnQWtFZ2FpUUFJQUJCQkdvTENnQWdBRUVFYWhBZ0dnc1VBQ0FBSUFCQkNHb29BZ0FRbkJZZ0FCQzRCUXNxQVFGL0l3QkJFR3NpQVNRQUlBRkJDR29nQUVFSWFpZ0NBQkF4S0FJQUlRQWdBVUVRYWlRQUlBQUxjUUVDZjBIMEFCQkdJZ1FpQXlBQUVQQUdJQU5CQURZQ2NDQURRWkNXQ1RZQ0FDQURJUUFnQWlnQ0NFVUVRQ0FDSUFFZ0FTZ0NBQ2dDQUJFQUFDSURLUUlBTndJQUlBSWdBeWtDQ0RjQ0NBc2dCQ0FDSUFRb0FnQW9BZ1FSQVFBZ0FDQUJJQVFvQWdBb0FyZ0JFUUVBSUFBTEJ3QWdBRUU4YWdzMEFRSi9RUlFRSmlJRUlnTWdBQkM0QkNBRElBSTZBQkFnQXlBQk5nSU1JQU5CME5ZUk5nSUFJQUFnQkJDNUJDQUJFSUVIQ3lvQkFYOGdBRUhBQVdvaUFCQzRBZ1IvSUFFRklBQVFrQUVvQWdBaUFDQUFLQUlBS0FJVUVRQUFDd3ZvQkFFSGZ5TUFRZEFJYXlJRUpBQUNRQ0FCUVpjQlJ3UkFJQUFRL3d4RkRRRWdBRUVVYWlFRklBSkJJR29oQmlBRVFjZ0FhaUVIQTBBZ0FDQUVRU2hxRUo0RklnZ1FVeG9nQUJDN0ZnUkFJQUFvQW5BaUFDQUNRWS9VRVVHTTFCRkJ2TXdSUVFBZ0FDZ0NBQ2dDcUFFUkFnQU1Bd3NEUUNBQklRTWdBQ0FJRUZNaUNVRjlSZ1JBSUFBb0FuQWlBQ0FDUWJ6VUVVR00xQkZCdk13UlFRQWdBQ2dDQUNnQ3FBRVJBZ0FNQkFzQ1FBSkFBa0FnQTBIZEFFd0VRQ0FEUVY5cUlnRkJIVXRCQVNBQmRFR3hySUhBQTNGRmNnMEJEQUlMSUFOQituNXFJZ0ZCSEUwRVFFRUJJQUYwUVlNSGNRMENJQUZCSEVZTkF3c2dBMEdFZjJvaUFVRUNTd1JBSUFOQjNnQkdEUUlNQVFzZ0FVRUJhdzBCQ3lBQUtBSndJZ0FnQWtIaDFCRkJqTlFSUWJ6TUVVRUFJQUFvQWdBb0FxZ0JFUUlBSUFNaEFRd0ZDeUFFSUFVZ0F4Q2xBallDSUNBR1FZRUlRZlhURVNBRVFTQnFFQ2NhSUFRZ0JTQUpFS1VDTmdJUUlBZEJnUWhCOWRNUklBUkJFR29RSnhvTElBWVFvQUVpQVNBSEVLQUJha0dCQ0U4RVFDQUFLQUp3SWdBZ0FrR0ExUkZCak5RUlFiek1FVUVBSUFBb0FnQW9BcWdCRVFJQUlBTWhBUXdFQ3lBRUlBYzJBZ0FnQVNBQ2FrRWdha0dCQ0NBQmEwSDEweEVnQkJBbkdrR2lBU0VCQWtBZ0EwR2lBVVlOQUNBRklBWVF6Z01pQVVFQVNnMEFJQUFvQW5BaUFTQUNRWjNWRVVHTTFCRkJ2TXdSUVFBZ0FTZ0NBQ2dDcUFFUkFnQWdBeUVCQ3lBQUlBRVF1aFlOQUFzZ0FCRC9EQTBBQ3d3QkN5QUFLQUp3SWdFZ0FrSDQweEZCak5RUlFiek1FVUVBSUFFb0FnQW9BcWdCRVFJQUlBQWdBaEJUSVFFTElBUkIwQWhxSkFBZ0FRdjJBZ0VFZnlNQVFSQnJJZ01rQUNBQlFTQnFJUVVDUUFKQUEwQUNRQ0FBSUFBZ0FSQlRJQUVRZ0EwaUFrRWpSd1JBSUFKQmYwY05BUXdEQ3lBQUtBSnNRUXBHQkVBZ0FDQUJFSndYUVg5SERRSU1Bd3NnQUNnQ2NDSUFJQUZCOXRJUlFiSFRFVUc4ekJGQkFDQUFLQUlBS0FLb0FSRUNBRUYvSVFJTUF3c2dBQ0FDTmdKc0lBSkJDa1lOQUFKQUlBSkI2SDVxSWdSQkNrc0VRQ0FDUVNkSERRRWdBQ2dDY0NJQ0lBRkIxTk1SUWQzTkVVRzh6QkZCQUNBQ0tBSUFLQUtvQVJFQ0FBd0NDd0pBQWtBQ1FDQUVRUWxyRGdJQ0FBRUxJQUFnQVVFQVFRRVE2QWhCZjJvaUJFRUNTdzBBUVg4aEFpQUVRUUZyRGdJREF3VUxJQVV0QUFCRkRRSU1CQXRCb1FFaEFpQUFLQUowRFFNZ0FDZ0NjQ2dDS0JvZ0FDZ0NjQ0lDSUFGQnM5TVJRZEhURVVHOHpCRkJBQ0FDS0FJQUtBS29BUkVDQUF3QkN3c2dBeUFBUVJScUlBSVFwUUkyQWdBZ0JVR0JDRUgxMHhFZ0F4QW5HZ3dCQ3lBQUVMMFdRWDhoQWdzZ0EwRVFhaVFBSUFJTEpBQWdBRUZTYWlJQVFUcE5CRUJDZ1lDQXJJQ0FnTUFGSUFDdGlLZEJBWEVQQzBFQUM2Z2xBZ2QvQW40Z0FVRUFPZ0FRSUFGQ0FEY0RHQ0FBSVFZZ0FDQUFLQUlBS0FJTUVRQUFJUUpCaEFFaEJBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBbjhDUUFKQUFrQUNRQUpBQWtBQ1FBTkFJQUpCSUVkQkFDQUNRUWxIRzBVRVFDQUJRUUU2QUJBZ0FDQUFLQUlBS0FJTUVRQUFJUUlNQVFzZ0FTQUdLQUlJS0FKd0VOY0JJZ1VwQWdBM0FnQWdBU0FGS1FJSU53SUlJQUpCTDBjRVFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQlgyb2lCVUhiQUVzTkFDQUZRUUZyRGxzVEFBQUhEQklBQUFZRkFBUVBBQUlEQXdNREF3TURBd01VQUEwSkRnQUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFJQVFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBTENnc2dBa0dBQVNBQ1FZQUJTQnNQQzBFQUlRTURRQUovSUFOQi93ZE1CRUFnQVNBRGFpQUNPZ0FnSUFOQkFXb2hBeUFBSUFBb0FnQW9BZ3dSQUFBTUFRc2dCMFVFUUNBR0tBSUlLQUp3SWdVZ0FVSGV6eEZCdk13UlFiek1FVUVBSUFVb0FnQW9BcWdCRVFJQVFRRWhCd3NnQUNBQUtBSUFLQUlNRVFBQUN5SUNRVjl4UWI5L2FrRWFTU0FDUWQ4QVJpQUNRVkJxUVFwSmNuSU5BQXNnQTBVTkR5QUJJQU5xUVFBNkFDQWdBQ0FBS0FJQUtBSVFFUVVBUWFJQkR3c2dBVUV3T2dBZ0FrQUNRQ0FBSUFBb0FnQW9BZ3dSQUFBaUEwRWdja0g0QUVjRVFFRUFJUVFnQTBGNGNVRXdSZzBCUVFBaEJVRUJJUUlNQWdzZ0FTQURPZ0FoQWtBZ0FDQUFLQUlBS0FJTUVRQUFJZ0pCVUdwQkNra2dBa0dmZjJwQkJrbHlSVUVBSUFKQnYzOXFRUVZMRzBVRVFFRUNJUU5CQUNFRUEwQUNRQ0FEUWY4SFNpQUpRdi8vLy8vLy8vLy9EMVp5UlFSQUlBRWdBMm9nQWpvQUlBSkFJQUpCVUdvaUJVRUtTUTBBSUFKQnYzOXFRUVZOQkVBZ0FrRkphaUVGREFFTElBSkJuMzlxUVFWTkJFQWdBa0dwZjJvaEJRd0JDeUFHS0FJSUtBSndJZ1VnQVVIc3p4RkJ2TXdSUWJ6TUVVRUFJQVVvQWdBb0FxZ0JFUUlBSUFRaEJRc2dBMEVCYWlFRElBV3NJQWxDQklhRUlRa2dCU0VFREFFTFFuOGhDU0FIRFFBZ0JpZ0NDQ2dDY0NJRktBSUFLQUtvQVNFQ0FrQWdBMEgvQjB3RVFDQUZJQUZCamRBUlFiek1FVUc4ekJGQkFDQUNFUUlBREFFTElBVWdBVUdwMEJGQnZNd1JRYnpNRVVFQUlBSVJBZ0FMUVFFaEJ3c2dBQ0FBS0FJQUtBSU1FUUFBSWdKQlVHcEJDa2tnQWtHL2YycEJCa2x5SUFKQm4zOXFRUVpKY2cwQUN3d0JDeUFHS0FJSUtBSndJZ1FnQVVIc3p4RkJ2TXdSUWJ6TUVVRUFJQVFvQWdBb0FxZ0JFUUlBUVFJaEF3c0NRQUpBQWtBQ1FDQUNRU0J5SWdSQmpYOXFJZ1ZCQWtzRVFDQUVRZXdBUncwQlFRQWhBQ0FEUWY4SFRBUi9JQUVnQTJvZ0Fqb0FJQ0FEUVFGcUJTQURDeUFCYWtFQU9nQWdRUUFoQWd3a0N3SkFBa0FnQlVFQmF3NENBZ0FCQ3lBRFFmOEhUQVJBSUFFZ0Eyb2dBam9BSUNBRFFRRnFJUU1MQW44Z0FDQUFLQUlBS0FJTUVRQUFJZ1JCSUhKQjdBQkdCRUJCQVNBRFFmOEhTZzBCR2lBQklBTnFJQVE2QUNBZ0EwRUJhaUVEUVFFTUFRc2dBQ0FBS0FJQUtBSVFFUVVBUVFBTElRUWdBQ0FBS0FJQUtBSU1FUUFBSWdWQklISkI4d0JIRFFRZ0JpZ0NDQ2dDY0NnQ0tCb2dBMEgvQjBvTkFpQUJJQU5xSWdCQkFEb0FJU0FBSUFVNkFDQU1Bd3NnQmlnQ0NDZ0NjQ2dDS0JwQkFDRUZJQU5CL3dkTUJIOGdBU0FEYWlBQ09nQWdJQU5CQVdvRklBTUxJQUZxUVFBNkFDQU1KQXNnQUNBQUtBSUFLQUlRRVFVQVFRQWhBaUFCSUFOcVFRQTZBQ0FNSkFzZ0FTQURha0VBT2dBZ0MwRUJJUUJCQVNFQ1FRRWhCU0FFUlEwaERDQUxJQUFnQUNnQ0FDZ0NFQkVGQUVFQUlRQWdBU0FEYWtFQU9nQWdRUUVoQWlBRURSOE1JUXRCQVNFQ1FRQWhCUU5BSUFraENnSkFJQUpCL3dkTUJFQWdBU0FDYWlBRE9nQWdJQUpCQVdvaEFnd0JDeUFIRFFBZ0JpZ0NDQ2dDY0NJSElBRkIvTkFSUWJ6TUVVRzh6QkZCQUNBSEtBSUFLQUtvQVJFQ0FFRUJJUWNMSUFOQlVHcXNJQXBDQTRhRUlBb2dDa0tBZ0lDQWdJQ0FnQ0JVR3lFSklBVWdDa0wvLy8vLy8vLy8veDlXY2lFRklBQWdBQ2dDQUNnQ0RCRUFBQ0lEUVhoeFFUQkdEUUFMQ3lBRFFRRnlRVGxHQkVBRFFBSkFJQUpCL3dkTUJFQWdBU0FDYWlBRE9nQWdJQUpCQVdvaEFnd0JDeUFIRFFBZ0JpZ0NDQ2dDY0NJRUlBRkIvTkFSUWJ6TUVVRzh6QkZCQUNBRUtBSUFLQUtvQVJFQ0FFRUJJUWNMSUFBZ0FDZ0NBQ2dDREJFQUFDSURRVkJxUVFwSkRRQUxRUUVoQkFzZ0F4Q0NEUVJBSUFZb0FnZ2dBaUFESUFFUXpRZ1BDeUFFQkVBZ0JpZ0NDQ2dDY0NJRUlBRkJsZEVSUWJ6TUVVRzh6QkZCQUNBRUtBSUFLQUtvQVJFQ0FBc0Nmd0pBSUFOQklISWlCRUdOZjJvaUIwRUNTd1JBSUFSQjdBQkhEUUZCQUNFRVFRRWdBa0gvQjBvTkFob2dBU0FDYWlBRE9nQWdJQUpCQVdvaEFrRUJEQUlMQWtBQ1FDQUhRUUZyRGdJQ0FBRUxJQUpCL3dkTUJFQWdBU0FDYWlBRE9nQWdJQUpCQVdvaEFnc0NmeUFBSUFBb0FnQW9BZ3dSQUFBaUJFRWdja0hzQUVZRVFFRUJJQUpCL3dkS0RRRWFJQUVnQW1vZ0JEb0FJQ0FDUVFGcUlRSkJBUXdCQ3lBQUlBQW9BZ0FvQWhBUkJRQkJBQXNoQnlBQUlBQW9BZ0FvQWd3UkFBQWlBMEVnY2tIekFFWUVRRUVCSVFRZ0JpZ0NDQ2dDY0NnQ0tCb2dBa0gvQjBvTkh5QUJJQUpxSUFNNkFDQWdBa0VCYWlFQ0RCOExJQUFnQUNnQ0FDZ0NFQkVGQUVFQklRUU1Id3RCQVNFSUlBWW9BZ2dvQW5Bb0FpZ2FRUUFoQkNBQ1FmOEhTZzBjSUFFZ0Ftb2dBem9BSUNBQ1FRRnFJUUlNSEFzZ0FDQUFLQUlBS0FJUUVRVUFRUUFoQkVFQUN5RUhEQndMUVFBaEF3TkFBa0FnQTBIL0Iwd0VRQ0FCSUFOcUlBSTZBQ0FnQTBFQmFpRUREQUVMSUFjTkFDQUdLQUlJS0FKd0lnUWdBVUg4MEJGQnZNd1JRYnpNRVVFQUlBUW9BZ0FvQXFnQkVRSUFRUUVoQndzZ0FDQUFLQUlBS0FJTUVRQUFJZ0pCVUdwQkNra05BQXNnQWhDQ0RRUkFJQVlvQWdnZ0F5QUNJQUVRelFnUEN3SkFBa0FDUUFKQUlBSkJJSElpQkVHTmYyb2lCVUVDU3dSQUlBUkI3QUJIRFFNZ0EwSC9CMHdOQVVFQUlRUkJBU0VIREJzTEFrQWdCVUVCYXc0Q0F3QUNDeUFESVFRZ0EwSC9CMHdFUUNBQklBTnFJQUk2QUNBZ0EwRUJhaUVFQ3dKL0lBQWdBQ2dDQUNnQ0RCRUFBQ0lGUVNCeVFld0FSZ1JBUVFFZ0JFSC9CMG9OQVJvZ0FTQUVhaUFGT2dBZ0lBUkJBV29oQkVFQkRBRUxJQUFnQUNnQ0FDZ0NFQkVGQUVFQUN5RUhJQUFnQUNnQ0FDZ0NEQkVBQUNJRlFTQnlRZk1BUncwRFFRRWhDQ0FHS0FJSUtBSndLQUlvR2lBRVFmOEhTZzBZSUFFZ0JHb2dCVG9BSUNBRVFRRnFJUVFNR0FzZ0FTQURhaUFDT2dBZ1FRRWhCeUFEUVFGcUlRUkJBQXdZQzBFQklRUWdCaWdDQ0NnQ2NDZ0NLQnBCQUNFSElBTkIvd2RLRFJnZ0FTQURhaUFDT2dBZ0lBTkJBV29oQkVFQkRCY0xJQUFnQUNnQ0FDZ0NFQkVGQUVFQUlRY2dBeUVFUVFBTUZnc2dBQ0FBS0FJQUtBSVFFUVVBUVFFaENFRUFEQlVMSUFBZ0FDZ0NBQ2dDREJFQUFDSUJRUzFHQkVCQmxBRVBDeUFCUVQxR0JFQkJnZ0VQQ3lBQUlBQW9BZ0FvQWhBUkJRQkJMUThMSUFBZ0FDZ0NBQ2dDREJFQUFDSUJRU3RHQkVCQmxRRVBDeUFCUVQxR0JFQkJnUUVQQ3lBQUlBQW9BZ0FvQWhBUkJRQkJLdzhMUVlNQklRUWdBQ0FBS0FJQUtBSU1FUUFBUVQxR0RSQWdBQ0FBS0FJQUtBSVFFUVVBUVNvUEMwR0ZBU0VFSUFBZ0FDZ0NBQ2dDREJFQUFFRTlSZzBQSUFBZ0FDZ0NBQ2dDRUJFRkFFRWxEd3NnQUNBQUtBSUFLQUlNRVFBQUlnRkIzZ0JHQkVCQmp3RVBDeUFCUVQxR0JFQkJqQUVQQ3lBQUlBQW9BZ0FvQWhBUkJRQkIzZ0FQQzBHUUFTRUVJQUFnQUNnQ0FDZ0NEQkVBQUVFOVJnME5JQUFnQUNnQ0FDZ0NFQkVGQUVFOUR3dEJrUUVoQkNBQUlBQW9BZ0FvQWd3UkFBQkJQVVlORENBQUlBQW9BZ0FvQWhBUkJRQkJJUThMSUFBZ0FDZ0NBQ2dDREJFQUFDSUJRZndBUmdSQVFZNEJEd3NnQVVFOVJnUkFRWXNCRHdzZ0FDQUFLQUlBS0FJUUVRVUFRZndBRHdzZ0FDQUFLQUlBS0FJTUVRQUFJZ0ZCSmtZRVFFR05BUThMSUFGQlBVWUVRRUdLQVE4TElBQWdBQ2dDQUNnQ0VCRUZBRUVtRHdzZ0FDQUFLQUlBS0FJTUVRQUFRVVJxSWdGQkFVMEVRRUdUQVNFRUlBRkJBV3RGRFFwQmlRRWhCQ0FBSUFBb0FnQW9BZ3dSQUFCQlBVWU5DaUFBSUFBb0FnQW9BaEFSQlFCQmh3RVBDeUFBSUFBb0FnQW9BaEFSQlFCQlBBOExJQUFnQUNnQ0FDZ0NEQkVBQUVGRGFpSUJRUUZOQkVCQmtnRWhCQ0FCUVFGckRRbEJpQUVoQkNBQUlBQW9BZ0FvQWd3UkFBQkJQVVlOQ1NBQUlBQW9BZ0FvQWhBUkJRQkJoZ0VQQ3lBQUlBQW9BZ0FvQWhBUkJRQkJQZzhMSUFBZ0FDZ0NBQ2dDREJFQUFDRUZJQUFnQUNnQ0FDZ0NFQkVGQUVFdUlRUWdCVUZRYWtFSlN3MEhJQVlvQWdoQkFFRXVJQUVRelFnUEN3SkFJQUFnQUNnQ0FDZ0NEQkVBQUNJRlFTcEhCRUFnQlVFOVJnMElJQVZCTDBjTkFTQUdLQUlJUVFFNkFOUUJBMEFnQUNBQUtBSUFLQUlNRVFBQUlnUkJDa2RCQUNBRVFYOUhHdzBBQ3lBQlFRRTZBQkFnQmlnQ0NFRUFPZ0RVQVNBRUR3c2dBQ0FBS0FJQUtBSU1FUUFBSVFJQ1FBTkFJQUpCS2tjRVFDQUNRWDlHRFJZZ0FDQUFLQUlBS0FJTUVRQUFJUUlNQVFzZ0FDQUFLQUlBS0FJTUVRQUFJZ0pCTDBZTkFTQUNRWDlIRFFBTERCUUxJQUZCQVRvQUVDQUFJQUFvQWdBb0Fnd1JBQUFoQWd3QkN3c2dBQ0FBS0FJQUtBSVFFUVVBUVM4UEN5QUdLQUlJSVFBZ0FVRUFOZ0lZSUFGQkFEb0FJQ0FBS0FKd0tBSW9Ha0VuRHdzZ0FDQUFLQUlBS0FJTUVRQUFJZ0pCSWtZaEJVRUFJUU1EUUNBQ1FYOUdJQUpCQ2taeUlBSkJJa1p5RFFJZ0FTQURhaUFDT2dBZ0lBQWdBQ2dDQUNnQ0RCRUFBQ0lDUVNKR0lRVkJnQWdoQnlBRFFRRnFJZ05CZ0FoSERRQUxEQUlMUVpZQklRUWdBQ0FBS0FJQUtBSU1FUUFBUVRwR0RRSWdBQ0FBS0FJQUtBSVFFUVVBUVRvaEJBd0NDeUFESVFjTElBRWdCMnBCQURvQUlFR2hBU0VFSUFVTkFDQUFJQUFvQWdBb0FoQVJCUUFnQUNnQ0NDZ0NjQ0lBSUFGQjJkSVJRZS9TRVVHOHpCRkJBQ0FBS0FJQUtBS29BUkVDQUVHaEFROExJQVFQQzBFQkN5RUZJQUVnQkdwQkFEb0FJQ0FEUVFGT0JFQWdCU0VFREFJTERBSUxJQUVnQTJwQkFEb0FJQXRCQUNFQ0FrQUNRQU5BSUFFZ0Ftb3NBQ0JCVUdvaEFBSkFJQWNFUUNBSlFwbXo1c3lacytiTUdWWU5BeUFKUXBtejVzeVpzK2JNR1ZJTkFTQUFRUVZMRFFNTUFRc2dCQVJBUVFFaEJTQUpRcGt6VmcwRUlBbENtVE5TRFFFZ0FFSCsvd054UVFWTERRUU1BUXRCQUNFRklBbENtYlBtekFGV0RRTWdDVUtacytiTUFWSU5BQ0FBUVFaUERRTUxJQUNzSUFsQ0NuNThJUWtnQWtFQmFpSUNJQU5IRFFBTElBUWhCUXdDQ3lBRUlRVUxJQVlvQWdnb0FuQWlBQ0FCUWZQUkVVRzh6QkZCdk13UlFRQWdBQ2dDQUNnQ3FBRVJBZ0JDZnlFSkN5QUhCRUFnQmlnQ0NDZ0NjQ2dDS0JvZ0JpZ0NDQ0lBS0FKMFJRUkFJQUFvQW5BZ0FVRjNRWXZTRVJCS0lBWW9BZ2dvQW5BZ0FVRjNRUUJCQTBHUXpoRkJpOUlSRU5FQkN5QUJJQWszQXhoQm13RkJtZ0VnQ0JzUEN5QUZCRUFnQmlnQ0NDSUFLQUowUlFSQUlBQW9BbkFvQWlnYUlBWW9BZ2dvQW5BZ0FVRjNRWnJTRVJCS0lBWW9BZ2dvQW5BZ0FVRjNRUUJCQTBHTXp4RkJxdElSRU5FQkN5QUJJQWsrQWhoQm5RRkJuQUVnQ0JzUEN5QUJJQWsrQWhoQm1RRkJtQUVnQ0JzUEMwRUFJUWNNQVF0QkFTRUlDeUFCSUFKcVFRQTZBQ0FnQlNBSFFYOXpJQWxDLy8vLy93OVdjWEpCQVhFRVFDQUdLQUlJS0FKd0lnQWdBVUd6MFJGQnZNd1JRYnpNRVVFQUlBQW9BZ0FvQXFnQkVRSUFDeUFIQkVBZ0JpZ0NDQ2dDY0NnQ0tCb2dCaWdDQ0NJQUtBSjBSUVJBSUFBb0FuQWdBVUYzUWNuUkVSQktJQVlvQWdnb0FuQWdBVUYzUVFCQkEwR1F6aEZCeWRFUkVORUJDeUFCSUFrM0F4aEJtd0ZCbWdFZ0JCc1BDeUFJQkVBZ0JpZ0NDQ0lBS0FKMFJRUkFJQUFvQW5Bb0FpZ2FJQVlvQWdnb0FuQWdBVUYzUWQ3UkVSQktJQVlvQWdnb0FuQWdBVUYzUVFCQkEwR016eEZCM3RFUkVORUJDeUFCSUFrK0FoaEJuUUZCbkFFZ0JCc1BDeUFCSUFrK0FoaEJtUUZCbUFFZ0JCc1BDd0ovSUFZb0FnZ29BbkFvQWlnYVFRRUxCRUFnQmlnQ0NDSUFLQUowUlFSQUlBQW9BbkFnQVVGM1FjYlFFUkJLSUFZb0FnZ29BbkFnQVVGM1FRQkJBMEdRemhGQnh0QVJFTkVCQ3lBQklBazNBeGhCbXdGQm1nRWdBaHNQQ3lBQ0lRVWdBRVVOQVFzZ0JpZ0NDQ0lBS0FKMFJRUkFJQUFvQW5Bb0FpZ2FJQVlvQWdnb0FuQWdBVUYzUWVIUUVSQktJQVlvQWdnb0FuQWdBVUYzUVFCQkEwR016eEZCNGRBUkVORUJDeUFCSUFrK0FoaEJuUUZCbkFFZ0JSc1BDeUFKUW9DQWdJQVFWQ0FIY2tVRVFDQUdLQUlJS0FKd0lnQWdBVUdOMEJGQnZNd1JRYnpNRVVFQUlBQW9BZ0FvQXFnQkVRSUFDeUFCSUFrK0FoaEJtUUZCbUFFZ0Foc1BDeUFHS0FJSUtBSndJZ0FnQVVHNTBoRkIwZElSUWJ6TUVVRUFJQUFvQWdBb0FxZ0JFUUlBUVg4TEd3QWdBRUhBQVdvUWtBRW9BZ0FpQUNBQUtBSUFLQUlRRVFVQUN4Y0FJQUFnQVJDMEV5QUFRUUEyQWtnZ0FFRi9OZ0pNQ3pFQkFYOGdBU0FBS0FJRUlnSkhCRUFEUUNBQUVEc2FJQUpCWUdvaUFoRE9DQ0FCSUFKSERRQUxDeUFBSUFFMkFnUUxEQUFnQUNBQUtBSUFFSVlOQ3pVQUlBQW9BZ0FhSUFBb0FnQWdBQkRMQTBFRmRHb2FJQUFvQWdBZ0FCQ0NBMEVGZEdvYUlBQW9BZ0FnQUJETEEwRUZkR29hQ3hBQUlBQkJFR29ROVFZYUlBQVEyd0VMQ2dBZ0FFRUVhaENKRFFzTkFDQUFFQ1VhSUFBb0FnQWFDd2tBSUFCQkRHb1FKUXNKQUNBQUlBRVF4QllMU0FFQmZ5QUJFRjRvQWdBaEFpQUFJQUVvQWdRZ0FTZ0NFQ0FDYWlJQVFRaDJRZnovL3dkeGFpSUNJQUVRandVRWYwRUFCU0FDS0FJQUlBQkIvd2R4UVFKMGFnc1FtUUVhQ3owQkFYOGdBQ2dDR0NJQ0lBQW9BaHhHQkVBZ0FDQUJFTllESUFBb0FnQW9BalFSQXdBUEN5QUFJQUpCQVdvMkFoZ2dBaUFCT2dBQUlBRVExZ01MRVFBZ0FFRi9FS2dEQkg5QkFBVWdBQXNMQ1FBZ0FCRDVCaEFxQ3hrQUlBQWdBUkM0QkNBQUlBSTJBZ3dnQUVIUTFSRTJBZ0FMT3dFQ2Z5QUFFTWNXSUFBb0FnUWlBU0FBS0FJSUlnSkhCRUFEUUNBQUVGNGFJQUVvQWdBUUtpQUJRUVJxSWdFZ0FrY05BQXNMSUFBUTBRZ0xQZ0VCZnlBQVFjQUJhaUlBRUpBQktBSUFJZ0VnQVNnQ0FDZ0NLQkVGQUNBQUVKQUJLQUlBSWdFRVFDQUJJQUVvQWdBb0FnUVJCUUFMSUFBUWtRa0xKZ0FnQUJER0V5QUFRZXpLRVRZQ0FDQUFRU0JxRUU0YUlBQWdBVFlDTUNBQVFRQTJBaXdMRmdBZ0FFSFlsQkkyQWdBZ0FFR0VsUkkyQWdBZ0FBdklBUUVCZnlNQVFSQnJJZ1FrQUNBQVFmekpFVFlDQUNBQVFRUnFFTkVGR2lBQVFSUnFFT1FXSUFBZ0FUWUNjQ0FBUVFvMkFtd2dBRUVBTmdKY0lBQkJBRFlDVkNBQVFjQUJhaEF3R2lBQVFRQTZBTlFCSUFBZ0F6WUMwQUVnQUVIWUFXb2dBaER0QVJvZ0FFSGtBV29ROUFZZ0FFSDhBV29nQWhEdEFSb2dBRUdJQW1vUTJCWWhBU0FBUVFBMkFyd0JJQUJCOUFCcVFRQkJ4UUFRM1FFYUlBUkJDR29nQVNBQktBSUFRWFJxS0FJQWFoRHlDaERYRmlBRVFRaHFFRmtnQkVFUWFpUUFJQUFMSUFFQmZ5QUFLQUlBSVFJZ0FDQUJOZ0lBSUFJRVFDQUFFQ1VnQWhDTERRc0x4QUlCQlg4Z0FCQWxFQ1VoQWdKQUlBRUVRQ0FBSUFJZ0FSRGtCeENZRFNBQUVDVWdBVFlDQUFOQUlBQWdBeEFSUVFBMkFnQWdBMEVCYWlJRElBRkhEUUFMSUFCQkRHb2lBaWdDQUNJRVJRMEJJQUFnQkNnQ0JDQUJFRFFpQmhBUklBSTJBZ0FnQkNnQ0FDSUNSUTBCQTBBQ1FDQUdJQUlvQWdRZ0FSQTBJZ1ZHQkVBZ0FpRUVEQUVMQWtBQ1FDQUFJQVVRRVNnQ0FBUkFJQUloQXlBQ0tBSUFSUTBDSUFBUXV3UWdBa0VJYWlBQ0tBSUFRUWhxRUtZRERRRU1BZ3NnQUNBRkVCRWdCRFlDQUNBQ0lRUWdCU0VHREFJTEEwQWdBeWdDQUNJREtBSUFSUTBCSUFBUXV3UWdBa0VJYWlBREtBSUFRUWhxRUtZRERRQUxDeUFFSUFNb0FnQTJBZ0FnQXlBQUlBVVFFU2dDQUNnQ0FEWUNBQ0FBSUFVUUVTZ0NBQ0FDTmdJQUN5QUVLQUlBSWdJTkFBc01BUXNnQUVFQUVKZ05JQUFRSlVFQU5nSUFDd3NIQUNBQklBQnJDeEVBSUFBZ0FSRHRCUm9nQUJEcUFTQUFDdzhBSUFBb0Fnd2FJQUJCQURZQ0RBc3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkE3R2lBQ1FYOXFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBc0pBQ0FBRVBBRkVDb0xYQUVCZnlBQUVGNGFJQUFRWGlFQklBQW9BZ1FnQUNnQ0VDQUJLQUlBYWtGL2FrRUlka0g4Ly84SGNXb29BZ0FhSUFBUVhpSUJJQUVvQWdCQmYybzJBZ0FnQUJDZ0RVR0FFRThFUUNBQUVOd0lLQUlBRUNvZ0FCRGJDQXNMTFFFQmZ3Si9RUUFnQUNJQkVOQUJSUTBBR2lBQkVOQUJRUXAwUVg5cUN5QUFLQUlRYXlBQUVGNG9BZ0JyQzA4QkFuOGpBRUVRYXlJQ0pBQWdBQkJlSVFNZ0FCQ2dEVVVFUUNBQUVQMFdDeUFDUVFocUlBQVFqZzBnQXlBQ0tBSU1JQUVRK1FFZ0FCQmVJZ0FnQUNnQ0FFRUJhallDQUNBQ1FSQnFKQUFMZmdFQ2Z5QUFLQUlNSVFFQ1FBTkFJQUVRblFZZ0FDZ0NEQkRhQVVGMmFpSUJRUU5MRFFFQ1FBSkFJQUZCQVdzT0F3TURBUUFMSUFBb0Fnd1FuUVlnQUNnQ0RCRGFBVUVOUmcwQUlBQW9BZ3dRamdFYUN5QUFLQUlNRUowR0lBQW9BZ3dRMmdFaEFpQUFLQUlNSVFFZ0FrSGNBRVlOQUFzZ0FSQ09BUm9MQzhVQkFRRi9Ba0FnQUNnQ0RCQ09BU0lCUWR3QVJnUkFBMEFnQUNnQ0RCRGFBVUVOUndSQUlBQW9BZ3dRMmdGQkNrY05Bd3NnQUNnQ0NDZ0NjQ0lCSUFBb0Fnd1ErZ2tnQUNnQ0NDMEExQUVnQVNnQ0FDZ0N6QUVSQndCRkJFQWdBQ2dDQ0MwQTFBRU5Bd3NnQUNnQ0RCQ09BVUVOUnlBQUtBSU1FSTRCSWdGQkNrZHlSUVJBSUFBb0Fnd1FqZ0VoQVFzZ0FVSGNBRVlOQUFzTEFrQWdBVUVOUncwQVFRb2hBU0FBS0FJTUVOb0JRUXBIRFFBZ0FDZ0NEQkNPQVJvTElBRVBDMEhjQUFzbUFDQUFRWXpERVRZQ0FDQUFRVUJyRUtNRkdpQUFRUmhxRUNBYUlBQkJER29RSUJvZ0FBc3NBQ0FBS0FJQUdpQUFLQUlBSUFBUXl3TkJCWFJxR2lBQUtBSUFJQUFReXdOQkJYUnFHaUFBS0FJQUdnc1BBQ0FBS0FJQUlBRkJCWFFRbEFJTFFnRUJmeU1BUVJCcklnRWtBQ0FBRURzYUlBRkIvLy8vUHpZQ0RDQUJRZi8vLy84SE5nSUlJQUZCREdvZ0FVRUlhaENrQVNnQ0FDRUFJQUZCRUdva0FDQUFDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCRExBMEVGZEdvYUlBQW9BZ0FhSUFBb0FnQWdBQkNDQTBFRmRHb2FDMWtCQW44akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFBUXB3MGlBeUFCVHdSQUlBQVF5d01pQUNBRFFRRjJTUVJBSUFJZ0FFRUJkRFlDQ0NBQ1FRaHFJQUpCREdvUVVpZ0NBQ0VEQ3lBQ1FSQnFKQUFnQXc4TEVHNEFDeUlBSXdCQkVHc2lBeVFBSUFBUU95QUJJQUlnQUVFRWFoQ1BGeUFEUVJCcUpBQUxDd0FnQUNBQklBSVFrQmNMUVFBQ2Z3SkFJQUFRbGdVZ0FVR2lBVWR5RFFBZ0FDQUFLQUlRRVBzR0VOb09SUTBBUVFFZ0FDQUFLQUlRRVBzR0tBSUFRZWgrYWtFTFNRMEJHZ3RCQUFzTGdRRUJCSDhnQUVIY3dSRTJBZ0FnQUVFUWFpSURFQllFUUFOQUlBTWdBUkFSS0FJQUlnSUVRQ0FDRVBVR0VDb0xJQUZCQVdvaUFTQURFQlpKRFFBTEN5QUFRU0JxSWdJUUZnUkFRUUFoQVFOQUlBSWdBUkFSS0FJQUlnUUVRQ0FFRVBVR0VDb0xJQUZCQVdvaUFTQUNFQlpKRFFBTEN5QUNFTnNCSUFNUTJ3RWdBQXNzQUNBQUtBSUFHaUFBS0FJQUlBQVF1Z1JxR2lBQUtBSUFJQUFRaEFScUdpQUFLQUlBSUFBUXVnUnFHZ3RMQVFGL0l3QkJFR3NpQWlRQUFrQWdBQ2dDQkNBQUVCc29BZ0JKQkVBZ0FCQTdJQUFvQWdRZ0FSRGtDQ0FBSUFBb0FnUkJFR28yQWdRTUFRc2dBQ0FCRUtBWEN5QUNRUkJxSkFBTE5nQWdBQ0FCTmdJb0lBQW9BaGdnQUJDZEJVRUVkR29nQVRZQ0JDQUFRUUEyQWlRZ0FDZ0NHQ0FBRUowRlFRUjBha0VBTmdJQUN4d0FJQUFnQVRZQ0xDQUFLQUlZSUFBUW5RVkJCSFJxSUFFMkFnZ0xxZ0VCQm44akFFRWdheUlESkFBQ1FDQURRUmhxSUFBUXlnWWlCQzBBQUVVTkFDQURRUWhxSUFBUTdnVWhCU0FBSUFBb0FnQkJkR29vQWdCcUtBSUVJUVlnQUNBQUtBSUFRWFJxS0FJQWFpSUhFTm9JSVFnZ0F5QUZLQUlBSUFFZ0FTQUNhaUlDSUFFZ0JrR3dBWEZCSUVZYklBSWdCeUFJRUtjRE5nSVFJQU5CRUdvUTJRaEZEUUFnQUNBQUtBSUFRWFJxS0FJQWFrRUZFSUFFQ3lBRUVNa0dJQU5CSUdva0FDQUFDd2tBSUFBUVhpZ0NBQXNNQUNBQUlBRkJCR29RcGhjTER3QWdBQ0FCRUJNZ0FSQWZFTElOQzBjQkFuOGdBRUU0YWhDV0RTRUJJQUJCeE1NUk5nSUFJQUZCMk1NUk5nSUFJQUFnQUVFRWFpSUNFS2NYSUFCQnhNTVJOZ0lBSUFGQjJNTVJOZ0lBSUFKQkVCQ1ZEU0FBQzhzQ0FRTi9JQUFnQWhCVElRUUNRQ0FBS0FKMElnTkJ3UUJNQkVBZ0FDZ0N2QUVpQlVIQ0FFZ05BUXNnQUNnQ2NDSUFJQUpCajdZUlFlKzVFVUhKc3hGQkFDQUFLQUlBS0FLb0FSRUNBRUYvRHdzZ0FDQURRUUZxTmdKMElBQWdCVUVCYWpZQ3ZBRWdCRUdpQVVjRVFDQUFLQUp3SWdVb0FnQW9BcWdCSVFBZ0FRUkFJQVVnQWtHaXN4RkI3N2tSUWNtekVVRUFJQUFSQWdBZ0JBOExJQVVnQWtHaXN4RkI5cmtSUWNtekVVRUFJQUFSQWdBZ0JBOExJQUFnQUVFVWFpQUNRU0JxRU00REVQRUZJUVJCQ2lFREFrQWdBQ0FDRUZNaUJVRUtSZzBBSUFBb0FuQWlBeUFDUWY2NUVVSHZ1UkZCeWJNUlFRQWdBeWdDQUNnQ3FBRVJBZ0FnQlNFREEwQWdBMEYvUmlBRFFRcEdjZzBCSUFBZ0FoQlRJUU1NQUFBTEFBc2dCQVIvSUFRdEFDUkJBblpCZjNOQkFYRUZRUUFMSUFGSEJIOGdBRUVCSUFJUWdBY0ZJQU1MQ3k0QUlBQkJlbXBCQ0VrZ0FFSHBmbW9pQUVFZFRVRUFRUUVnQUhSQi81L3Yvd054RzNKRkJFQkJBQThMUVFFTDdnRUJBMzhnQlVFZ2FpRUdBMEFnQVVHaUFVWUVRRUdvdHhFZ0JoQjZSUVJBUWFJQkR3c0NRQ0FBSUFWQkFVRUFFT2dJSWdGQkEwc05BQUpBQWtBZ0FVRUNhdzRDQWdFQUN5QUFLQUp3SWdFZ0JVR2R1UkZCMjdnUlFjbXpFVUVBSUFFb0FnQW9BcWdCRVFJQUlBUkJBVG9BQUNBRFFRQTJBZ0FNQVFzZ0FnMEFJQUFvQW5BUU0wVU5BQ0FBS0FKd0VKQURJUWdnQUNnQ2NDSUJLQUlBSVFjZ0NBUkFJQUVnQlVHM3VSRkIyN2dSSUFaQkFDQUhLQUtzQVJFQ0FBd0JDeUFCSUFWQnQ3a1JRZHU0RVNBR1FRQWdCeWdDcUFFUkFnQUxJQUFnQlJCVElRRWdCQzBBQUVVTkFRc0xJQUVMeUFFQkJIOGpBRUVRYXlJQ0pBQWdBQ0FCRUZNaEF3SkFBa0FnQUNnQ2RDSUVRY0FBVEFSQUlBQW9BcndCSWdWQndRQklEUUVMSUFBb0FuQWlBQ0FCUVkrMkVVR2V0eEZCeWJNUlFRQWdBQ2dDQUNnQ3FBRVJBZ0JCZnlFRERBRUxJQUFnQkVFQmFqWUNkQ0FBSUFWQkFXbzJBcndCSUFKQkFEWUNEQ0FDUVFBNkFBc2dBRUdsQVNBQklBQWdBMEVBUVFBZ0FrRU1haUFDUVF0cUlBRVF2QVFRdlFRaEF5QUNLQUlNRFFBZ0FpMEFDdzBBSUFCQkFTQUJFSUFISVFNTElBSkJFR29rQUNBREMwQUJBbjhnQUNBQkVNZ0pJQUJCRUdvaUF5QUJRUkJxSWdKSEJFQWdBeUFDS0FJQUlBSW9BZ1FRa3hjTElBQWdBU2dDSURZQ0lDQUFJQUV0QUNRNkFDUUxpUUVCQVg4Q2Z5QUFJQUFvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUlzRVFBQUVPWUJCRUJCQVNBQklBRW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXNFUUFBRUk4Q0RRRWFDMEVBSUFFZ0FTZ0NBQ2dDZUJFQUFDSUJJQUVvQWdBb0Fpd1JBQUFRNWdGRkRRQWFJQUFnQUNnQ0FDZ0NlQkVBQUNJQUlBQW9BZ0FvQWl3UkFBQVFqd0lMQ3lFQUlBQVFrd0VhSUFCQkVHb1E2Z2dhSUFBZ0FDMEFKRUg0QVhFNkFDUWdBQXRRQVFGL0l3QkIwQUJySWdVa0FDQUFCSDhnQUNBRklBRWdCQ0FDSUFNUXl4Y2lBU0FBS0FJQUtBSUlFUUVBSUFFdEFEa2hBQ0FCRU93SUdpQUFRUUJIQlVFQUN5RUFJQVZCMEFCcUpBQWdBQXZVQWdFRmZ5QUFFQ1VhQWtBZ0FRUkFJQUFDZjBILy8vLy9BeUFCSWdKSkJFQVFnZ0VBQ3lBQ1FRSjBFQ1lMRUtzQ0lBQVFKU0FCTmdJQUEwQWdBQ0FERUJGQkFEWUNBQ0FEUVFGcUlnTWdBVWNOQUFzZ0FFRUlhaUlDS0FJQUlnUkZEUUVnQUNBRUtBSUVJQUVRTkNJR0VCRWdBallDQUNBRUtBSUFJZ0pGRFFFRFFBSkFJQVlnQWlnQ0JDQUJFRFFpQlVZRVFDQUNJUVFNQVFzQ1FBSkFJQUFnQlJBUktBSUFCRUFnQWlFRElBSW9BZ0JGRFFJZ0FCQkRJQUpCQ0dvZ0FpZ0NBRUVJYWhERUFnMEJEQUlMSUFBZ0JSQVJJQVEyQWdBZ0FpRUVJQVVoQmd3Q0N3TkFJQU1vQWdBaUF5Z0NBRVVOQVNBQUVFTWdBa0VJYWlBREtBSUFRUWhxRU1RQ0RRQUxDeUFFSUFNb0FnQTJBZ0FnQXlBQUlBVVFFU2dDQUNnQ0FEWUNBQ0FBSUFVUUVTZ0NBQ0FDTmdJQUN5QUVLQUlBSWdJTkFBc01BUXNnQUVFQUVLc0NJQUFRSlVFQU5nSUFDd3ZXQVFJRGZ3RjlJd0JCRUdzaUFpUUFJQUlnQVRZQ0RBSkFJQUlnQVVFQlJnUi9RUUlGSUFFZ0FVRi9hbkZGRFFFZ0FSQ0tBZ3NpQVRZQ0RBc0NRQ0FCSUFBUVBDSURTd1JBSUFBZ0FSQy9EUXdCQ3lBQklBTlBEUUFnQXhDNkFTRUVBbjhnQUJBaktBSUFzeUFBRUVNcUFnQ1ZqU0lGUXdBQWdFOWRJQVZEQUFBQUFHQnhCRUFnQmFrTUFRdEJBQXNoQVNBQ0FuOGdCQVJBSUFFUWlnUU1BUXNnQVJDS0FnczJBZ2dnQWlBQ1FReHFJQUpCQ0dvUVVpZ0NBQ0lCTmdJTUlBRWdBMDhOQUNBQUlBRVF2dzBMSUFKQkVHb2tBQXZhQ1FFQ2Z5TUFRVEJySWdVa0FDQUZJQVEyQWlnZ0JTQUROZ0lzQWtBQ1FDQUJJQUlnQXhEWUNBUkFJQUVnQWlBRUVOZ0lEUUVMSUFWQkFEWUNFQ0FGUVFBMkFod2dCVUVnYWlBRlFSQnFJQVZCSEdvUWt3VWdBQ0FGUVNCcUVKSUZEQUVMQWtBZ0F5QURLQUlBS0FKNEVRQUFJQVFnQkNnQ0FDZ0NlQkVBQUJEQUFVVU5BQUpBSUFNZ0F5Z0NBQ2dDckFFUkFBQkZCRUFnQkNBRUtBSUFLQUtzQVJFQUFFVU5BUXNnQlVFQU5nSVFJQVZCQURZQ0hDQUZRU0JxSUFWQkVHb2dCVUVjYWhDVEJTQUFJQVZCSUdvUWtnVU1BZ3NDUUNBRElBTW9BZ0FvQW5nUkFBQWlCaUFHS0FJQUtBSndFUUFBUlFSQUlBUWdCQ2dDQUNnQ2VCRUFBQ0lHSUFZb0FnQW9BbkFSQUFCRkRRRUxJQVZCQURZQ0VDQUZRUUEyQWh3Z0JVRWdhaUFGUVJCcUlBVkJIR29Ra3dVZ0FDQUZRU0JxRUpJRkRBSUxJQU1nQXlnQ0FDZ0NlQkVBQUJDRkFVVUVRQ0FFSUFRb0FnQW9BbmdSQUFBUWhRRkZEUUVMSUFBZ0JVRXNhaUFGUVNocUVQOEREQUVMSUFWQkZEWUNFQ0FGUVJRMkFod2dCVUVnYWlBRlFSQnFJQVZCSEdvUS93TUNRQUpBQWtBQ1FDQUNRZWwrYWlJRFFSbExEUUJCQVNBRGRDSUVRWitmN3dOeERRRUNRQ0FFUVlDQWdCeHhSUVJBUVFFZ0EzUkI0QUJ4UlEwQ0RBRUxJQUFnQlVFc2FpQUZRU2hxRVA4RERBVUxBa0FnQlNnQ0xDSUJJQUVvQWdBb0FvQUJFUUFBRUtZQ1JRMEFJQVVvQWlnaUFTQUJLQUlBS0FLQUFSRUFBQkNtQWtVTkFDQUFJQVZCTEdvZ0JVRW9haEQvQXd3RkN5QUZRUUEyQWh3Z0JVRUFOZ0lNSUFWQkVHb2dCVUVjYWlBRlFReHFFSk1GSUFBZ0JVRVFhaENTQlF3RUN5QUNRUUZIRFFFTElBVW9BaXdpQXlBREtBSUFLQUtBQVJFQUFDQUZLQUlvSWdNZ0F5Z0NBQ2dDZ0FFUkFBQkdCRUFnQUNBRlFTeHFJQVZCS0dvUS93TU1Bd3NnQlVFUWFpQUJJQVVvQWl3aUF5QURLQUlBS0FLQUFSRUFBQ0FGS0FJb0lnTWdBeWdDQUNnQ2dBRVJBQUFnQWhETUZpQUZRU0JxSWdJZ0JVRVFhaUlERUdjYUlBSkJCR29nQTBFRWFoQm5HaUFGS0FJZ1FSUkhCRUFnQlVFZ2FoQWxLQUlBUVJSSERRSUxJQVZCQURZQ0hDQUZRUUEyQWd3Z0JVRVFhaUFGUVJ4cUlBVkJER29Ra3dVZ0FDQUZRUkJxRUpJRkRBSUxJQVVvQWl3aUFTQUJLQUlBS0FKNEVRQUFJQVVvQWlnaUFTQUJLQUlBS0FKNEVRQUFFS01DQkVBZ0FDQUZRU3hxSUFWQktHb1Evd01NQWdzZ0JVRUFOZ0ljSUFWQkFEWUNEQ0FGUVJCcUlBVkJIR29nQlVFTWFoQ1RCU0FBSUFWQkVHb1FrZ1VNQVFzZ0JTZ0NJQ0VESUFVb0Fpd2lBaUFDS0FJQUtBSjRFUUFBSWdJZ0FpZ0NBQ2dDSEJFQUFDRUVJQVVvQWl3aEFnSkFJQU1nQkVjRVFDQUNJQUlvQWdBb0FoUVJBQUFoQkNBRktBSWdJUU1nQlNnQ0xDRUNJQVFFUUNBRklBTWdBaUFDS0FJQUtBSVVFUUFBRU5BSU5nSVFEQUlMSUFVZ0FTQURJQUlRbHdVMkFoQU1BUXNnQlNBQ05nSVFDeUFGUVNCcUVDVW9BZ0FoQXlBRktBSW9JZ0lnQWlnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWh3UkFBQWhCQ0FGS0FJb0lRSUNRQ0FESUFSSEJFQWdBaUFDS0FJQUtBSVVFUUFBSVFRZ0JVRWdhaEFsS0FJQUlRTWdCU2dDS0NFQ0lBUUVRQ0FGSUFNZ0FpQUNLQUlBS0FJVUVRQUFFTkFJTmdJY0RBSUxJQVVnQVNBRElBSVFsd1UyQWh3TUFRc2dCU0FDTmdJY0N5QUFJQVZCRUdvZ0JVRWNhaEQvQXdzZ0JVRXdhaVFBQzk0Q0FRRi9Jd0JCSUdzaUJTUUFJQVVnQVRZQ0dBSkFBa0FDUUFKQUFrQWdCVUVZYWlBRlFSQnFJQUFRZ1FFUU1SQ1hBa1VFUUNBQUVCc2dCQ0FGUVJocUVGY1Fyd05GRFFFTElBVWdCU2dDR0RZQ0VDQUZRUkJxSUFWQkNHb2dBQkRuQXhBeEVKY0NSUVJBSUFBUUd3Si9JQVZCRUdvaUFTQUJLQUlBRU9JWE5nSUFJQUVMRUZjZ0JCQ3ZBMFVOQWdzZ0JTZ0NHQ0lES0FJQVJRMERJQUlnQlNnQ0VDSUFOZ0lBSUFCQkJHb2hBd3dFQ3lBQUVCc2dCVUVZYWhCWElBUVFyd05GRFFFZ0JTQUZLQUlZRU9NWE5nSVFJQVZCRUdvZ0JVRUlhaUFBRUlFQkVERVFsd0pGQkVBZ0FCQWJJQVFnQlVFUWFoQlhFSzhEUlEwQkN5QUZLQUlZS0FJRVJRUkFJQUlnQlNnQ0dDSUFOZ0lBSUFCQkJHb2hBd3dFQ3lBRktBSVFJUU1NQWdzZ0FDQUNJQVFRclFjaEF3d0NDeUFDSUFVb0FoZ2lBRFlDQUNBRElBQTJBZ0FNQVFzZ0FpQUROZ0lBQ3lBRlFTQnFKQUFnQXd0RkFRRi9Jd0JCRUdzaUF5UUFJQUVRSlNJQklBQkJIQkFtSUFOQkNHb2dBVUVBRU1NQkVKRUJJZ0FvQWdCQkVHb2dBaENoQlNBQUVDVkJBVG9BQkNBRFFSQnFKQUFMWUFFQ2Z3SkFJQUFRUENJREJFQURRQUpBSUFBUUd5QUNJQU5CRUdvUXJ3TUVRQ0FES0FJQUlnUkZEUVFNQVFzZ0F5Z0NCQ0lFRFFBZ0FTQUROZ0lBSUFOQkJHb1BDeUFFSVFNTUFBQUxBQXNnQUJBbElRTUxJQUVnQXpZQ0FDQURDMDhCQVg4akFFSGdBR3NpQUNRQUlBQkIyQUJxUVFFUTlRRWlBMEVBRUE4Z0FSQmJJQU1nQUVFS1FRSkJBVUVBUVFCQkFCQkZJZ01nQWtFQkVOQUNJUUlnQXhBMUdpQUFRZUFBYWlRQUlBSUwrZ0VCQkg4RFFBSkFJQUFnQUNnQ0FDZ0NlQkVBQUVVZ0FrRUJjWElOQUNBQUlBQW9BZ0FvQW53UkFBQU5BQ0FBSUFBZ0FDZ0NBQ2dDU0JFQUFCQ05Bd3NDUUNBQVFRaHFFTlFDUlEwQUlBQW9BandpQVVVTkFDQUJFTGtGUlEwQUlBQW9BandRNEFrTEFrQUNRQ0FBSUFBb0FnQW9Bb2dCRVFBQVJRMEFJQUFvQWtBUU4wVU5BQ0FBS0FKQUVEY2lCRUYvYWlFRElBQW9Ba0FoQVVFQUlRSWdCRUVCVEEwQkEwQWdBU0FDRURnb0FnQVF4ZzBnQUNnQ1FDRUJJQUpCQVdvaUFpQURSdzBBQ3d3QkN3OExJQUVnQXhBNEtBSUFJUUVnQUNBQUtBSUFLQUlvRVFBQUtRSUVRaitEUWdaUklRSWdBU0VBREFBQUN3QUxSUUVCZnlNQVFTQnJJZ0lrQUNBQ0lBRVFrZ00yQWhBUTV3RWdBa0VZYWlBQUlBRWdBa0VRYWlBQ1FRaHFFTzhYSUFKQkdHb1FWeUVBSUFKQklHb2tBQ0FBUVJCcUM2d0JBUVYvSXdCQkVHc2lBeVFBSUFBUUl4b2dBU2dDQUNFRUFrQUNRQ0FBRUR3aUJVVU5BQ0FBSUFRZ0JSQTBJZ1lRRVNnQ0FDSUNSUTBBSUFJb0FnQWlBa1VOQUFOQUlBUWdBaWdDQkVjRVFDQUNLQUlFSUFVUU5DQUdSdzBDQ3dKQUlBUWdBaWdDQkVjTkFDQUFFRU1nQWtFSWFpQUJFTVFDUlEwQUlBTkJDR29nQWhBeEtBSUFJUUlNQXdzZ0FpZ0NBQ0lDRFFBTEN5QURFTXNCSWdJMkFnZ0xJQU5CRUdva0FDQUNDeXdCQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCSUFJZ0FoRE9GeUFBSUFOQkNHb1Exd1FnQTBFUWFpUUFDekFCQVg4akFFRVFheUlDSkFBZ0FpQUFJQUVReUEwMkFnQWdBa0VJYWlBQ0VHY29BZ0FoQUNBQ1FSQnFKQUFnQUFzZ0FDQUJJQUlwQWdBM0FnQWdBU0FDS1FJUU53SVFJQUVnQWlrQ0NEY0NDQXNKQUNBQUlBRVEyaGNMOXdFQkFYOENRQ0FCSUFFb0FnQW9BbmdSQUFCRkRRQWdBaUFDS0FJQUtBSjRFUUFBQkVBZ0FTQUNJQUlvQWdBb0FrZ1JBQUFnQVNnQ0FDZ0NoQUVSQVFBZ0FpQUNLQUlBS0FKOEVRQUFSUTBCSUFFZ0FTZ0NBQ2dDZ0FFUkJRQU1BUXNnQWlBQ0tBSUFLQUowRVFBQVJRMEFJQUVnQWlBQ0tBSUFLQUk4RVFBQUVJMERDd0pBSUFFZ0FTZ0NBQ2dDaUFFUkFBQkZEUUFnQWlBQ0tBSUFLQUtJQVJFQUFFVU5BQ0FCS0FKQUVEY2dBaWdDUUJBM1J3MEFJQUVvQWtBUU4wRUJTQTBBQTBBZ0FDQUJLQUpBSUFNUU9DZ0NBQ0FDS0FKQUlBTVFPQ2dDQUJETkRTQURRUUZxSWdNZ0FTZ0NRQkEzU0EwQUN3c0xDUUFnQUNBQkVPa1hDNWNHQWdWL0FYNGpBRUd3QTJzaUJTUUFJQUVnQVNnQ0FDZ0NlQkVBQUJERkFTSUpRUUZPQkVBZ0FFRVFhaUVIQTBBZ0FDQUJJQVFROHdFQ1FDQUNJQWdRRHlnQ0NFRi9haUlHUVF0TkJFQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FHUVFOckRna0NBd1FGQmdjSUNRQUJDeUFIUVl5VUVVR1JsQkVnQWlBSUVBOHRBQUFiRUJBYUlBZEIxN0VRRUJCQmw1UVJFQkJCMnJFUUVCQWFJQWRCM0xFUUVCQWFEQW9MSUFBZ0FpQUlFQThyQXdBZ0F4Q3NHQ0FIUWR5eEVCQVFHZ3dKQ3lBQ0lBZ1FEeXdBQUNFR0lBVkJxcFFSTmdJRUlBVWdCallDQUNBRlFZQUJha0dzQWtHaWxCRWdCUkFuR2lBSElBVkJnQUZxRUJCQjNMRVFFQkFhREFnTElBSWdDQkFQTFFBQUlRWWdCVUcvbEJFMkFoUWdCU0FHTmdJUUlBVkJnQUZxUWF3Q1FiZVVFU0FGUVJCcUVDY2FJQWNnQlVHQUFXb1FFRUhjc1JBUUVCb01Cd3NnQWlBSUVBOHVBUUFoQmlBRlFjMlVFVFlDSkNBRklBWTJBaUFnQlVHQUFXcEJyQUpCb3BRUklBVkJJR29RSnhvZ0J5QUZRWUFCYWhBUVFkeXhFQkFRR2d3R0N5QUNJQWdRRHk4QkFDRUdJQVZCMjVRUk5nSTBJQVVnQmpZQ01DQUZRWUFCYWtHc0FrRzNsQkVnQlVFd2FoQW5HaUFISUFWQmdBRnFFQkJCM0xFUUVCQWFEQVVMSUFJZ0NCQVBLQUlBSVFZZ0JVSHFsQkUyQWtRZ0JTQUdOZ0pBSUFWQmdBRnFRYXdDUWFLVUVTQUZRVUJyRUNjYUlBY2dCVUdBQVdvUUVFSGNzUkFRRUJvTUJBc2dBaUFJRUE4b0FnQWhCaUFGUWZTVUVUWUNWQ0FGSUFZMkFsQWdCVUdBQVdwQnJBSkJ0NVFSSUFWQjBBQnFFQ2NhSUFjZ0JVR0FBV29RRUVIY3NSQVFFQm9NQXdzZ0FpQUlFQThwQXdBaENpQUZRWW1WRVRZQ2FDQUZJQW8zQTJBZ0JVR0FBV3BCckFKQi81UVJJQVZCNEFCcUVDY2FJQWNnQlVHQUFXb1FFRUhjc1JBUUVCb01BZ3NnQWlBSUVBOHBBd0FoQ2lBRlFhR1ZFVFlDZUNBRklBbzNBM0FnQlVHQUFXcEJyQUpCbDVVUklBVkI4QUJxRUNjYUlBY2dCVUdBQVdvUUVFSGNzUkFRRUJvTUFRc2dBRUVEUWJDVkVTQUJJQUVvQWdBb0FnQVJBQUFRMWdRTElBaEJBV29pQ0NBSlJ3MEFDd3NnQlVHd0Eyb2tBQXNOQUNBQVFZQUJhaUFCRU53RUN5d0JBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJJQUlnQWhDM0dDQUFJQU5CQ0dvUTFBUWdBMEVRYWlRQUN4QUFJQUFnQVVIS254QVEzZzBRc0FNTEhBQWdBRUVOVFFSQUlBQkJBblJCM0tnUWFpZ0NBQThMUWY2ZUVBc0lBQ0FBUVFOeFJRc09BQ0FBRUJzYVFmLy8vLzhIRHdzOUFRRi9JQUVnQWtjRVFDQURLQUlBSVFRRFFDQUFJQVJCZEdvZ0FrRjBhaUlDRUlnRUlBTWdBeWdDQUVGMGFpSUVOZ0lBSUFFZ0FrY05BQXNMQzFrQkFuOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQVE3QmdpQXlBQlR3UkFJQUFRcXdNaUFDQURRUUYyU1FSQUlBSWdBRUVCZERZQ0NDQUNRUWhxSUFKQkRHb1FVaWdDQUNFREN5QUNRUkJxSkFBZ0F3OExFRzRBQ3dnQUlBQVFrd0VhQzJrQkFuOGpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBQkJER29nQkVFTWFpQURFSUVDSUFFRVFDQUFLQUlRSUFFUTNnY2hCUXNnQUNBRk5nSUFJQUFnQlNBQ1FRUjBhaUlDTmdJSUlBQWdBallDQkNBQUVDTWdCU0FCUVFSMGFqWUNBQ0FFUVJCcUpBQWdBQXRaQVFKL0l3QkJFR3NpQWlRQUlBSWdBVFlDRENBQUVKb0tJZ01nQVU4RVFDQUFFTGtESWdBZ0EwRUJka2tFUUNBQ0lBQkJBWFEyQWdnZ0FrRUlhaUFDUVF4cUVGSW9BZ0FoQXdzZ0FrRVFhaVFBSUFNUEN4QnVBQXNqQVFGL0lBQW9BaFFpQVNBQktBSUFLQUl3RVFBQUtBSkFJQUFvQWhnUU9DZ0NBQXNNQUNBQVFSUnFJQUVRMUFNTEJ3QWdBRUVrYWdzT0FDQUFJQUVnQVJDZ0FSRHdHQXNWQUNBQVFlalFEellDQUNBQVFSUnFFRFVhSUFBTGJRRUNmeU1BUVJCcklnSWtBQ0FBSUFFb0FndzJBZ3dnQUNBQkxRQVFPZ0FRSUFBZ0FTMEFFVG9BRVNBQktBSVVJZ01nQVJBV1NRUkFBMEFnQWlBQklBTVFFU2dDQUJDZEdUWUNEQ0FBSUFKQkRHb1EvUTBnQTBFQmFpSURJQUVRRmtrTkFBc0xJQUpCRUdva0FBc2lBQ0FBSUFFb0FnQWdBa0VEZGtIOC8vLy9BWEZxUVFFZ0FrRWZjWFFRbVFFYUMxUUJBWDhnQUJEVkRTQUJTUVJBRUc0QUN5QUFFQnNhUWYvLy8vOERJQUZCZjJwQkJYWkJBV29pQVNJQ1NRUkFFSUlCQUFzZ0FrRUNkQkFtSVFJZ0FFRUFOZ0lFSUFBZ0FqWUNBQ0FBRUJzZ0FUWUNBQXRKQVFGL0l3QkJFR3NpQXlRQUlBQkNBRGNDQUNBRFFRQTJBZ3dnQUVFSWFpQURRUXhxRUswQ0lBRUVRQ0FBSUFFUTRnMGdBQ0FCSUFJdEFBQVFuQmtMSUFOQkVHb2tBQ0FBQzBzQkFYOGpBRUVRYXlJQ0pBQUNRQ0FBS0FJRUlBQVFHeWdDQUVjRVFDQUFFRHNnQUNnQ0JDQUJFSWdFSUFBZ0FDZ0NCRUVNYWpZQ0JBd0JDeUFBSUFFUW54a0xJQUpCRUdva0FBc3hBQ0FBUWJDVUR6WUNBQ0FBSUFFb0FnUVFFeERDQVRZQ0JDQUJLQUlJSVFFZ0FFRUJPZ0FRSUFBZ0FUWUNDQ0FBQzVZQkFRTi9Jd0JCRUdzaUFTUUFJQUJCdk04UE5nSUFJQUVnQUVFVWFpSUNFRUEyQWdnZ0FTQUNFREkyQWdBZ0FVRUlhaUFCRUI0RVFBTkFJQUVvQWdnb0FnUWlBd1JBSUFNZ0F5Z0NBQ2dDQkJFRkFBc2dBVUVJYWhDY0JTQUJJQUlRTWpZQ0FDQUJRUWhxSUFFUUhnMEFDd3NnQUVIOEFHb1FHUm9nQUVFa2FoQTFHaUFDRUlzRUlBSVFxUmtnQVVFUWFpUUFJQUFMYVFFQ2Z5QUFJQUFvQWdBb0FrUVJBQUFpQWdSQUlBRkJFR29pQTBINXpnOFFFQm9nQWtFQlRnUkFRUUFoQVFOQUlBTWdBQ0FBS0FJQUtBSklFUUFBSUFGQkFuUnFLQUlBRUJCQi9NNFBFQkFhSUFGQkFXb2lBU0FDUncwQUN3c2dBMEgremc4UUVCb0xDL1VIQVFSL0l3QkJNR3NpQkNRQVFlMEFJUUlDUUNBQUlBQW9BZ0FvQW13UkFBQkZCRUJCOWdBaEFpQUFJQUFvQWdBb0FtZ1JBQUJGRFFFTElBRWdBaERuQWdzQ1FDQUFMUUFFSWdKQmYyb2lBMEVRU3cwQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQTBFQmF3NFFCQVVHQndnSkFRSUtDd01NRGc4UERRQUxJQUZCNWdBUTV3SU1Ed3NnQVVIcEFCRG5BZ3dPQ3lBQlFmVUFFT2NDREEwTElBRkI0Z0FRNXdJTURBc2dBVUhrQUJEbkFnd0xDeUFCUVpqT0R4Q1NBUXdLQ3lBQlFaek9EeENTQVF3SkN5QUJRWi9PRHhDU0FRd0lDeUFCUWFMT0R4Q1NBUXdIQ3lBQlFhYk9EeENTQVF3R0N5QUJRYXJPRHhDU0FRd0ZDeUFCUWE3T0R4Q1NBUXdFQ3lBQlFiTE9EeENTQVF3REN5QUJRYlhPRHhDU0FRd0NDeUFBUWN3QWFpRUNBa0FnQUMwQVRFRjlhaUlGUVFaTERRQkJtTTRQSVFNQ1FBSkFBa0FnQlVFQmF3NEdBd01EQXdBQkFndEJ1czRQSVFNTUFRdEJ2TTRQSVFNTElBRWdBeENTQVFzZ0FRSi9RYjdPRHlBQ0VLZ0ZEUUFhUWNET0R5QUNFTWdFRFFBYVFjVE9EMEhDemc4Z0FoQ29BaHNMRUpJQklBSVFnd2tFUUNBQlFjYk9EeENTQVFzZ0FoQ0NDUVJBSUFGQnlNNFBFSklCQ3lBQ0VLY0ZCRUFnQVVIS3pnOFFrZ0VMSUFJUWdBWUVRQ0FCUWN6T0R4Q1NBUXNnQWkwQUFVRi9haUlEUWY4QmNVRUdUUVJBSUFFZ0EwRVlkRUVZZFVFQ2RFR2cwdzlxS0FJQUVKSUJDeUFDRUlvQlJRMEJJQUZCM2M0UEVKSUJEQUVMSUFGQjM4NFBRZWZPRHlBQ1FROUdHeENTQVNBQUtBSklJZ0lFUUNBQklBSVFpUUVhQ3lBQUtBSkFFRGRGRFFCQkFDRUNBMEFnQVVFdEVPY0NJQUFvQWtBZ0FoQTRLQUlBSUFFUTZBMGdBa0VCYWlJQ0lBQW9Ba0FRTjBrTkFBc0xJQUFnQUNnQ0FDZ0NNQkVBQUNFRElBQW9BZ0FoQWlBQkFuOGdBMEVCVGdSQUlBQWdBaWdDTUJFQUFBd0JDeUFCSUFBZ0FpZ0NOQkVBQUVFWWRFR0FnSUNBQTJwQkdIVVE1d0lnQUNBQUtBSUFLQUk0RVFBQUMwRVlkRUdBZ0lDQUEycEJHSFVRNXdJQ1FDQUFLQUk4SWdORkRRQkJBQ0VDSUFNUVlFRUFUQTBBQTBBZ0FDZ0NQQ0FDRUlvSElRVWdBQ2dDUENFREFrQWdCUVJBSUFNZ0FoQ0tCeUlESUFNb0FnQW9BakFSQUFBaEJTQUFLQUk4SUFJUWlnY2hBeUFGQkVBZ0JDQURJQU1vQWdBb0FqQVJBQUFpQXlBREtBSUFLQUs0QVJFQUFEWUNJQ0FFUVNWcVFRdEI3czRQSUFSQklHb1FKeG9NQWdzZ0JDQUROZ0lRSUFSQkpXcEJDMEh5emc4Z0JFRVFhaEFuR2d3QkN5QUVJQU1nQWhEV0FUWUNBQ0FFUVNWcVFRdEI5czRQSUFRUUp4b0xJQUZCMndBUTV3SWdBU0FFUVNWcUVKSUJJQUZCM1FBUTV3SWdBa0VCYWlJQ0lBQW9BandRWUVnTkFBc0xJQVJCTUdva0FBc0dBQkNDQVFBTEhBQWdBRUlBTndNWUlBQkJBRG9BRUNBQUVLUUZJQUJCQURvQUlBc0pBQ0FBSUFFUXdRUUxFZ0FnQUJEcUFTQUFJQUVnQWhDZkVTQUFDd2tBSUFBZ0FUWUNSQXZEQVFFRGZ3SkFJQUZCQkVrRVFDQUJJUUlNQVFzZ0FTRURJQUVoQWdOQUlBQW9BQUJCbGRQSDNnVnNJZ1JCR0hZZ0JITkJsZFBIM2dWc0lBSkJsZFBIM2dWc2N5RUNJQUJCQkdvaEFDQURRWHhxSWdOQkEwc05BQXNnQVVFRGNTRUJDeUFCUVg5cUlnRkJBazBFUUFKQUFrQUNRQ0FCUVFGckRnSUJBQUlMSUFBdEFBSkJFSFFnQW5NaEFnc2dBQzBBQVVFSWRDQUNjeUVDQ3lBQ0lBQXRBQUJ6UVpYVHg5NEZiQ0VDQ3lBQ1FRMTJJQUp6UVpYVHg5NEZiQ0lBUVE5MklBQnpDNWNDQVFKL0lBRWdBQ0FCUmlJQ09nQU1Ba0FnQWcwQUEwQWdBU2dDQ0MwQURBMEJJQUVvQWdnUXB3SWhBeUFCS0FJSUlRSUNRQUovSUFNRVFBSkFJQUlvQWdnb0FnUWlBa1VOQUNBQ0xRQU1EUUFnQWtFTWFpRUNJQUVvQWdnaUFVRUJPZ0FNSUFFb0FnZ01BZ3NnQVJDbkFrVUVRQ0FCS0FJSUlnRVE5UVVMSUFFb0FnZ2lBRUVCT2dBTUlBQW9BZ2dpQUVFQU9nQU1JQUFROUFVUEN5QUNLQUlJS0FJQUlnSkZEUUVnQWkwQURBMEJJQUpCREdvaEFpQUJLQUlJSWdGQkFUb0FEQ0FCS0FJSUN5SUJJQUFnQVVZNkFBd2dBa0VCT2dBQUlBQWdBVWNOQVF3Q0N3c2dBUkNuQWdSQUlBRW9BZ2dpQVJEMEJRc2dBU2dDQ0NJQVFRRTZBQXdnQUNnQ0NDSUFRUUE2QUF3Z0FCRDFCUXNMSUFBZ0FCQWJHaUFCQkVBRFFDQUJLQUlBSVFBZ0FSQXFJQUFpQVEwQUN3c0xEd0FnQUVFTWFoQWdHaUFBRUNBYUN3c0FJQUFnQUJBOEVJd0hDd3NBSUFBZ0FCQThFSWdKQzhnTkFTSi9Jd0JCRUdzaUJTUUFJQVJCQ0VZZ0EwSENBMGh5SVJVZ0FFRUVhaUVhSUFCQjVBQnFJUnNnQUVIVUFHb2hIRUVBSVFNRFFBSkFJQU1pQndSQUlBRXRBQUZCQ0hSQmdBaEdEUUVnQVJEOUFRMEJJQUV0QUFKQkFYRU5BU0FCRUlvQkRRRWdBUkNvQWtVTkFRdEJBQ0VEQTBBQ1FDQURJZ2dFUUNBQkVQMEJEUUVnQVJEMkJRMEJJQUVRaWdFTkFTQUJFS2dDUlEwQklBRW9BZ0FpQTBHQS9nOXhRWUNFREVZZ0EwR0EvZ3R4UVlDSUNFWnlEUUVMSUFjZ0NISWhIVUVBSVFNRFFBSkFJQU1pREFSQUlBZ05BeUFCRUlvQkRRRWdBUkNvQWtVTkFTQUJLQUlBSWdSQkNIWkIvd0Z4UVg1cUlnTkJBa3NnQTBFQmEwVnlSVUVBSUFSQmdJQU1jVUdBZ0F4R0d3MEJJQUVROWdVTkFTQUJFUDBCRFFFTElBZ2dESEloRmlBSUlBeHFJUmRCQUNFREEwQUNRQUpBSUJjZ0F5SVBJQWRxSWg1cVFRTkxEUUFnRHdSQUlBRXRBQUZCQ0hSQmdBaEdEUUlnQVJEOUFRMENJQUVRaWdFTkFndEJBQ0VEQTBBQ1FDQVhJQU1pQmlBZWFtb2lIMEVEU3lBV1FRQWdBeHR5RFFBQ1FDQUdCRUFnQVNnQ0FDSURRWUNBQ0hFTkJDQURRWUQrQTNGQmdBaEhEUUVNQkFzZ0FSQ0tBUTBCSUFFUS9RRU5BU0FCRUtnQ1JRMEJDMEhrN0FkQjhPd0hJQVliSVNCQi91d0hRWVR0QnlBR0d5RWhRUUFoQXlBVklBWWdIWEpCQUVkeUlTSURRQ0FESWhBRVFDQVdEUUlnQVJDS0FRMENJQUVRcUFKRkRRSWdBUkQ5QVEwQ0MwRUFJUU1nRUNBZmFrRURUUVJBQTBBZ0FDQUJLQUlBSWdsQkJuWkIvQWR4YWlnQzJBSWhCQUpBSUFkRlFRQWdBeUlTR3cwQUlBbEJnSUFJY1NFTklCSUVRQ0FKUVlEK0EzRkJnQVpHSUExeURRRWdBUkNvQWtVTkFRc2dEVUVSZGlJRElBZHFRUUlnQ1VFUWRrRUJjU0FFYWlJRUlBUkJBa2diSUFRZ0F4dHFJZ05CQkNBTlJTQURRUVZJY2lJREd5RVJJQU5CQVhNaEUwRUFJUU1EUUFKQUlBTWlDMFVOQUNBQktBSUFJZ05CL3dGeFFRTkhEUUlnQTBHQWdBaHhSUTBBSUJOQmYzTWhBMEVCSVJNZ0VTQURRUUZ4YXlFUkMwSFM3UWRCeHUwSElBc2JJUlJCM2UwSFFmTHRCeUFMR3lFTlFmL3RCMEdIN2djZ0N4c2hHRUd4N1FkQnV1MEhJQXNiSVFRZ0FFRUlRUU5CQVNBTEd5QUdHeUlqUVFKMGFpRWtJQUFnRVVFQ2RHb2hKVUVBSVFNRFFDQURJZzVCQUVjZ0luRkZCRUFnRENBT2NpRW1RUUFoQXdOQUFrQWdCUUovSUFNaUNRUkFJQlVOQWlBQkVQTUZEUUlnQVJEOUFTQUhjZzBDSUFVUTFRRkJ3T1FIRUJJYUlDQU1BUXNnQlJEVkFTRVpJQUVvQWdBaUEwSC9BWEVoQ2lBWklBTkJnSUFJY1FSL1FjenNCMEhYN0FjZ0NrRURSaHNGSUJrZ0FDQUtRUUowYWlnQ2lBSVFFaHBCM3V3SEN4QVNHaUFoQ3hBU0dpQUhCRUFnQlVHTTdRY1FFaG9MSUFnRVFDQUZRWkh0QnhBU0dnc2dFQVJBSUFWQmxlMEhFQklhQ3lBR0JFQWdCVUdhN1FjUUVob0xJQThFUUNBRlFhRHRCeEFTR2dzZ0RnUkFJQVZCcCswSEVCSWFDeUFKSUE1eUJFQWdCVUd0N1FjUUVob0xJQVZCeXV3SEVCSWFJQVVnQWhDSkFSb2dCUUovSUFRZ0VnMEFHaUFGUWNEdEJ4QVNHaUFSUVFGR0JFQWdJeERIQkF3QkN5QUZJQ1FvQW9nQ0VCSWFJQVZCd3UwSEVCSWFJQ1VvQXZRQkN4QVNHaUFUUVFGeEJFQWdCVUhHN1FjUUVob0xBa0FnQmtVRVFDQUJFSW9CR2d3QkN3SkFBa0FnQVJEOUFRMEFJQUVROWdVTkFDQUJFSW9CUlEwQkN5QUJFSW9CUlEwQkN5QUZRYzN0QnhBU0dnc2dDQVJBSUFVZ0ZCQVNHZ3NnRUFSQUlBMGhBeUFGSUFBZ0FTZ0NBRUVHZGtIOEIzRnFLQUxZQWtFQlJ3Ui9JQVVnR0JBU0dpQUZJQUJCOUFGcUlnb2dBRUhZQW1vaUF5QUJLQUlBUVFaMlFmd0hjV29vQWdCQkFuUnFLQUlBRUJJYUlBVWdHQkFTR2lBS0lBTWdBU2dDQUVFR2RrSDhCM0ZxS0FJQVFRSjBhaWdDQUFVZ0F3c1FFaG9MSUE4RVFFSE43UWNoQXlBRklBQWdBU2dDQUVFR2RrSDhCM0ZxS0FMWUFrRUJSd1IvSUFWQmpPNEhFQklhSUFBZ0FDQUJLQUlBUVFaMlFmd0hjV29vQXRnQ1FRSjBhaWdDOUFFRklBTUxFQklhQ3lBT0JFQWdCU0FVRUJJYUN5QUpCRUFnQlVHUzdnY1FFaG9nQVNnQ0FDSURRZjhCY1NFS0lBVWdBMEdBZ0FoeEJIOUI1YUlDUWRDaUFpQUtRUU5HR3dVZ0JTQUFJQXBCQW5ScUtBS0lBaEFTR2tIZ29nSUxFQklhQ3lBTUJFQWdCU0FVRUJJYUN5QUZRYnprQnhBU0dpQWFJUU1nSmdSL0lCd2dCUkNKQVJvZ0d3VWdBd3NnQlJDSkFSb2dCUkFaR2tFQklRTWdDVVVOQVFzTFFRRWhBeUFPUlEwQkN3dEJBU0VESUF0RkRRQUxDMEVCSVFNZ0VrVU5BQXNMUVFFaEF5QVFSUTBBQ3d0QkFTRURJQVpGRFFBTEMwRUJJUU1nRDBVTkFRc0xRUUVoQXlBTVJRMEJDd3RCQVNFRElBaEZEUUVMQzBFQklRTWdCMFVOQVFzTElBVkJFR29rQUF0WEFRSi9Jd0JCSUdzaUF5UUFJQUFRR3lJQ0lBTkJDR29nQUNBQUVCWkJBV29RMndRZ0FCQVdJQUlReFJraUFpZ0NDQ0FCRVBrQklBSWdBaWdDQ0VFRWFqWUNDQ0FBSUFJUWlna2dBaENSQXlBRFFTQnFKQUFMUFFFQmZ5QUJJQUpIQkVBZ0F5Z0NBQ0VFQTBBZ0FDQUVRWFJxSUFKQmRHb2lBaENnQlNBRElBTW9BZ0JCZEdvaUJEWUNBQ0FCSUFKSERRQUxDd3RSQVFGL0lBQVFpd1FnQUJBYklBQW9BZ0FnQUNnQ0JDQUJRUVJxSWdJUTlnMGdBQ0FDRUM0Z0FFRUVhaUFCUVFocUVDNGdBQkFiSUFFUUl4QXVJQUVnQVNnQ0JEWUNBQ0FBSUFBUXB3RVErUVVMendVQkJYOGdBQ0FCS0FJQUlnWkJDSFpCL3dGeElnaEJBblJxS0FMWUFpRUpBa0FDUUNBQkVOQUVSUTBBSUFOQnRRSk1RUUFnQkVFSVJoc05BU0FEUWEwRFNnMEFJQVJCQ0VjTkFRc2dCRUVJUmdSQUlBQkJCR3BCNmVNSEVCSWFDMEg4cEFJaEJ5QUFRUVJxSWdVZ0JrRVFka0VCY1NBSmFpQUlRUVJHYXlJR1FRRkhCSDhnQlVIdzR3Y1FFaG9nQUNBR1FRSjBhaWdDOUFFRklBY0xFQklhSUFWQjllTUhRYWJrQnlBQkVOQUVHeEFTR2lBRklBSVFpUUVhSUFVQ2Z3SkFJQUVRMEFRTkFDQUJFUFlGRFFBZ0FSRDlBUTBBUWJUa0J5QUJFSW9CUlEwQkdndEJ2T1FIQ3hBU0dnSkFJQVJCQ0VjZ0EwR3RBMHB4SWdaQkFVY05BQ0FCRUlvQlJRMEFJQVZCd09RSEVCSWFJQVZCeGVRSFFmamtCeUFCRU5BRUd4QVNHaUFGSUFJUWlRRWFJQVZCdk9RSEVCSWFDd0pBSUFSQkNFWWdBMEdRQTBoeURRQWdBUkNvQWtVTkFDQUJMUUFCUVFoMFFZQUtSZzBBSUFFUWlnRU5BQ0FCRVAwQkRRQWdBRUhVQUdvaEJFRUFJUWNEUUFKQUlBY2lBd1JBSUFFdEFBQkJBMGNOQVFzZ0JFR0k1UWNRRWhvZ0JDQUNFSWtCR2lBRUFuOGdBQ0FCS0FJQVFRWjJRZndIY1dvb0F0Z0NRUUZHQkVCQnF1VUhJQU5GRFFFYUlBUkJudVVIRUJJYUlBUkJ2T1FIRUJJYURBSUxJQVJCc3VVSFFidmxCeUFER3hBU0dpQUFJQUFnQVNnQ0FFRUdka0g4QjNGcUtBTFlBa0VDZEdvb0F2UUJDeEFTR2lBRVFiemtCeEFTR2tFQklRY2dBMFVOQVFzTElBQkI1QUJxSWdSQmlPVUhFQklhSUFRZ0FoQ0pBUnBCcXVVSElRTWdCQ0FBSUFFb0FnQkJCblpCL0FkeGFpZ0MyQUpCQVVjRWZ5QUVRYnZsQnhBU0dpQUFJQUFnQVNnQ0FFRUdka0g4QjNGcUtBTFlBa0VDZEdvb0F2UUJCU0FEQ3hBU0dpQUVRYnprQnhBU0dnc2dCa1VOQUNBQkVOQUVEUUFnQVMwQUFVRUlkRUdBQ2tZTkFDQUJFSW9CRFFBZ0FSRDlBUTBBSUFWQndlVUhFQklhSUFVZ0FoQ0pBUm9nQlVHODVBY1FFaG9MQzBzQkFYOGpBRUVRYXlJQ0pBQUNRQ0FBS0FJRUlBQVFHeWdDQUVjRVFDQUFFQnNnQUNnQ0JDQUJFS0VGSUFBZ0FDZ0NCRUVNYWpZQ0JBd0JDeUFBSUFFUXlSa0xJQUpCRUdva0FBc0VBRUVBQ3c4QUlBQVE2Z0VnQUVFTWFoREhCZ3NwQVFGL0lBQW9BZ0FoQWlBQUlBRTJBZ0FnQWdSQUlBSUVRQ0FDSUFJb0FnQW9BZ1FSQlFBTEN3dExBUUYvSXdCQkVHc2lBaVFBQWtBZ0FDZ0NCQ0FBRUJzb0FnQkpCRUFnQUJBYklBQW9BZ1FnQVJENUFTQUFJQUFvQWdSQkJHbzJBZ1FNQVFzZ0FDQUJFUFVOQ3lBQ1FSQnFKQUFMRndBZ0FCQ1RDeUFBUVFBNkFCZ2dBRUlBTndJUUlBQUxFQUVCZjBINEFoQkdJZ0FRMnhrZ0FBdExBUUYvSXdCQkVHc2lBaVFBQWtBZ0FDZ0NCQ0FBRUJzb0FnQkhCRUFnQUJBYklBQW9BZ1FnQVJENUFTQUFJQUFvQWdSQkJHbzJBZ1FNQVFzZ0FDQUJFUFVOQ3lBQ1FSQnFKQUFMRFFBZ0FFRUlSaUFCUVFSR2NRc29BUUYvSUFBUUZnUkFBMEFnQUNBQkVCRW9BZ0FRcEJrZ0FVRUJhaUlCSUFBUUZra05BQXNMQ3djQUlBQVFGa1VMTlFFQmZ5TUFRU0JySWdJa0FDQUNJQUUyQWdBZ0FrRVFha0VRUVpDK0R5QUNFQ2NhSUFBZ0FrRVFhaEFpR2lBQ1FTQnFKQUFMQ2dBZ0FDQUJOZ0s4QVFzS0FDQUFJQUUyQXJnQkN4c0FJQUJCQURZQ0NDQUFJQUUyQWdRZ0FFR0V5UTgyQWdBZ0FBdFJBUUovSXdCQkVHc2lDaVFBSUFrUUgwVUVRQ0FCRU8wWkN5QUtJQWtRRXhBaUlRbEIyS3NCRUNZaUN5QUFJQUVnQ0NBQ0lBTWdCaUFFSUFVZ0J5QUpFUDhQSUFrUUdSb2dDa0VRYWlRQUlBc0xId0FnQUVGK2FpSUFRUVpOQkVBZ0FFRUNkRUg4elE5cUtBSUFEd3RCQUFzYkFDQUFLQUlNUVFCTUJFQWdBQ2dDQ0VFQVNrRUJkQThMUVFFTGtRSUJBWDhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVISkFrd0VRQ0FBUVpVQlRBUkFJQUJCZ1FGTUJFQWdBRUh1QUVZTkF5QUFRZmdBUncwTFFRSVBDeUFBUVlJQlJnMERJQUJCakFGSERRcEJCQThMSUFCQnRRSk1CRUFnQUVHV0FVWU5CQ0FBUWF3Q1J3MEtRUVlQQ3lBQVFiWUNSZzBISUFCQndBSkhEUWxCRHc4TElBQkJyUU5NQkVBZ0FFR1pBMHdFUUNBQVFjb0NSZzBGSUFCQmtBTkhEUXBCQ0E4TElBQkJtZ05HRFFVZ0FFR2tBMGNOQ1VFS0R3c2dBRUhCQTB3RVFDQUFRYTREUmcwR0lBQkJ1QU5IRFFsQkRBOExJQUJCd2dOR0RRY2dBRUhNQTBjTkNFRVFEd3RCQVE4TFFRTVBDMEVGRHd0QkJ3OExRUWtQQzBFTER3dEJEUThMUVE0aEFRc2dBUXNoQUNBQVFYOXFJZ0JCQjAwRVFDQUFRUUowUWR6TkQyb29BZ0FQQzBHdXZnOExMd0FqQUVFUWF5SUJKQUFnQUVJQU53SUFJQUZCQURZQ0RDQUFRUWhxSUFGQkRHb1FsUU1nQVVFUWFpUUFJQUFMR1FCQnF0V3ExUUFnQUVrRVFCQ0NBUUFMSUFCQkdHd1FKZ3NYQUNBQUVEQWFJQUJDLy84QU53SU1JQUJCQURZQUV3c1NBQ0FBRUNNb0FnQWdBQ2dDQUd0QkdHMExMQUFnQUNnQ0FCb2dBQ2dDQUNBQUVJMEVRUmhzYWhvZ0FDZ0NBQ0FBRUkwRVFSaHNhaG9nQUNnQ0FCb0xNUUVCZnlBQklBQW9BZ1FpQWtjRVFBTkFJQUFRR3hvZ0FrRm9haUlDRUs0RElBRWdBa2NOQUFzTElBQWdBVFlDQkF0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFFTmtaSWdNZ0FVOEVRQ0FBRUkwRUlnQWdBMEVCZGtrRVFDQUNJQUJCQVhRMkFnZ2dBa0VJYWlBQ1FReHFFRklvQWdBaEF3c2dBa0VRYWlRQUlBTVBDeEJ1QUFzMkFRSi9JQUJCdkNFMkFnQWdBRUgwQVdvaEFTQUFRUlJxSVFJRFFDQUJRWEJxRUJraUFTQUNSdzBBQ3lBQVFRUnFFQmthSUFBTDlBSUJBWDRnQUNBQktRSUFOd0l3SUFBZ0FTa0NDQ0lDTndJNElBS25RUUZPQkVBZ0FFR0FCMnBCMU1zUEVKTUNDeUFBS0FJOFFRRk9CRUFnQUVHQUIycEI1Y3NQRUpNQ0N3SkFBa0FnQUNnQ01DSUJRZitEQkV3RVFDQUJSU0FCUVlDQUJFWnlEUUlnQVVHQWdnUkhEUUVnQUVHQUIycEI5c3NQRUpNQ0RBSUxBa0FDUUNBQlFmK0hCRXdFUUNBQlFZQ0VCRVlOQVNBQlFZQ0dCRWNOQXlBQVFZQUhha0dlekE4UWt3SU1CQXNnQVVHQWlBUkdEUUVnQVVHQWlnUkhEUUlnQUVHQUIycEJ4c3dQRUpNQ0RBTUxJQUJCZ0FkcVFZck1EeENUQWd3Q0N5QUFRWUFIYWtHeXpBOFFrd0lNQVFzZ0FFR0FCMnBCMnN3UEVKTUNDd0pBSUFCQmdBZHFBbjhDUUNBQUtBSTRJZ0ZCLzUrQUFrd0VRQ0FCUlEwRFFmTE1EeUFCUVlDQWdBSkdEUUlhREFFTElBRkJnTUNBQWtjRVFDQUJRWUNnZ0FKSERRRkJoODBQREFJTFFaek5Ed3dCQzBHeHpROExFSk1DQ3lBQUtBSThRUUZPQkVBZ0FFR0FCMnBCeXMwUEVKTUNDd3RMQVFKL0lBQVEzd1JGQkVBZ0FCQWJHaUFBS0FJRUlnRWdBQ0lDS0FJQUVPQUVJQUFRRzBFQU5nSUFJQUFnQVVjRVFBTkFJQUVpQUNnQ0JDRUJJQUFRS2lBQklBSkhEUUFMQ3dzTEdRQWdBQkQ0QlVHanlBOFF0Z0lhSUFBUStBVWdBUkRCQkFzVUFDQUFRYUFNTmdJQUlBQkJoQXcyQWdBZ0FBc09BQ0FBRUU0YUlBQkJCRFlDREFzeEFRRi9JQUFRaXdRZ0FDZ0NBQVJBSUFBZ0FDZ0NBQkM5R1NBQUVCc2FJQUFvQWdBaEFTQUFFS3NER2lBQkVDb0xDeTRCQVg4Z0FDZ0NBQ0lDQkVBRFFDQUJJQUFvQWdRZ0FoQVZJQUFvQWhnaEFpQUFRUmhxSVFBZ0FnMEFDd3NMRWdBZ0FFSUFOd0lBSUFCQ0FEY0NDQ0FBQ3lnQkFYOGdBQkNzRGlBQUtBSUFCRUFnQUNnQ0VCb2dBQ2dDQUNFQklBQVExQWNhSUFFUUtnc0xmZ0VDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWFRZi8vLy84QklBRWlBMGtFUUJDQ0FRQUxJQU5CQTNRUUppRUZDeUFBSUFVMkFnQWdBQ0FGSUFKQkEzUnFJZ0kyQWdnZ0FDQUNOZ0lFSUFBUUl5QUZJQUZCQTNScU5nSUFJQVJCRUdva0FDQUFDMWtCQW44akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFBUStCa2lBeUFCVHdSQUlBQVExZ0lpQUNBRFFRRjJTUVJBSUFJZ0FFRUJkRFlDQ0NBQ1FRaHFJQUpCREdvUVVpZ0NBQ0VEQ3lBQ1FSQnFKQUFnQXc4TEVHNEFDeXdCQVg4Z0FTQUFLQUlFSWdKSEJFQURRQ0FBRUJzYUlBSkJlR29pQWlBQlJ3MEFDd3NnQUNBQk5nSUVDd29BSUFBb0FnUkJlR29MV1FFQ2Z5TUFRU0JySWdNa0FDQUFFQnNpQWlBRFFRaHFJQUFnQUJDYUFVRUJhaENmRGlBQUVKb0JJQUlRbmc0aUFpZ0NDQ0FCRUtVRklBSWdBaWdDQ0VFSWFqWUNDQ0FBSUFJUStSa2dBaENkRGlBRFFTQnFKQUFMRHdBZ0FDZ0NBQ0FCUVF4c0VKUUNDelFBSUFBb0FnQWFJQUFvQWdBZ0FCREVCRUVVYkdvYUlBQW9BZ0FnQUJBM1FSUnNhaG9nQUNnQ0FDQUFFTVFFUVJSc2Fob0xHZ0FnQVVVRVFFRUFEd3NnQUNBQ0xBQUFFTllESUFFUXpRWUxWQUVDZnlNQVFSQnJJZ1FrQUNBQ0JFQURRQ0FESUFJZ0FCQWpJQUpCRUdvZ0FSQ1BCQ0lGR3lFRElBSkJCRUVBSUFVYmFpZ0NBQ0lDRFFBTEN5QUVRUWhxSUFNUU1TZ0NBQ0VBSUFSQkVHb2tBQ0FBQ3hFQUlBQWdBU0FDRUJNZ0FoQWZFSnNIQ3c0QUlBQWdBU0FCRUtBQkVMc09DemdCQVg4Z0FDZ0NCQ0lCQkVBZ0FSRGZBeUFCS0FJQUJFQWdBUkMwRGlBQkVEc2FJQUVvQWdBYUlBRVExZ0lhQ3dzZ0FFRUFOZ0lFQ3hJQUlBQkJoTEFQTmdJQUlBQVFxUTRnQUFzU0FDQUFJQUFvQWdBZ0FVRURkR28yQWdBTERBQWdBQ0FBS0FJRUVKWUtDejBCQVg4Z0FTQUNSd1JBSUFNb0FnQWhCQU5BSUFBZ0JFRjRhaUFDUVhocUlnSVF4Z1FnQXlBREtBSUFRWGhxSWdRMkFnQWdBU0FDUncwQUN3c0xKQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ2dnQVNnQ0NDRUFJQUZCRUdva0FDQUFDeUVBSUFBUXJBNGdBQ2dDQUFSQUlBQW9BaEFhSUFBb0FnQWFJQUFRMUFjYUN3c1NBQ0FBRUs0T0lBRVFyZzRnQWhDMkRob0xDUUFnQUNBQkVLc09Dd2tBSUFBZ0FSQ1NHZ3VRQWdFRmZ5TUFRVEJySWdRa0FDQUVJQUUyQWlnZ0FDZ0NBQ0VCSUFRZ0FCQkFOZ0lJSUFFZ0JFRW9haUFFUVFocUVKd0hRUU4wYWlFQkFrQWdBaUFERUxJT0lnVkJBVWdOQUNBRklBQVFHeWdDQUNBQUtBSUVJZ2RyUVFOMVRBUkFJQVFnQXpZQ0NDQUZJQWNnQVdzaUNFRURkU0lHU2dSQUlBUWdBallDQ0NBRVFRaHFJQVlRc1E0Z0FDQUVLQUlJSUFNZ0JTQUdheENXR2lBSVFRRklEUUlMSUFBZ0FTQUhJQUVnQlVFRGRHb1FsUm9nQWlBRUtBSUlJQUVRc0E0TUFRc2dBQkE3SVFZZ0JFRUlhaUFBSUFBUW1nRWdCV29RbmdZZ0FTQUFLQUlBYTBFRGRTQUdFTlVISWdVZ0FpQURFSlFhSUFBZ0JTQUJFSk1hSVFFZ0JSQ3ZEZ3NnQVJCaEdpQUVRVEJxSkFBTERBQWdBQ0FBS0FJQUVOWUhDem9CQVg4Z0FTQUNSd1JBSUFNb0FnQWhCQU5BSUFBZ0JDQUJFTVlFSUFNZ0F5Z0NBRUVJYWlJRU5nSUFJQUZCQ0dvaUFTQUNSdzBBQ3dzTEpnRUJmeUFCSUFCcklnRkJBM1VoQXlBQkJFQWdBaUFBSUFFUTVBTUxJQUlnQTBFRGRHb0xHUUVCZnlBQUVKb0JJUUlnQUNBQkVOWUhJQUFnQWhDbUNRc2lBQ01BUVJCcklnTWtBQ0FBRURzZ0FTQUNJQUJCQkdvUXRRNGdBMEVRYWlRQUN4UUJBWDhEUUNBQUlnRW9BZ0FpQUEwQUN5QUJDd29BSUFBdEFBUVF4d1FMWndFQ2Z5TUFRUkJySWdRa0FBSkFJQUFRWFNJRElBSlBCRUFnQUJBVElnTWdBU0FDRUlFR0lBUkJBRG9BRHlBQ0lBTnFJQVJCRDJvUWxBRWdBQ0FDRUljRERBRUxJQUFnQXlBQ0lBTnJJQUFRSHlJQVFRQWdBQ0FDSUFFUXJna0xJQVJCRUdva0FBc2lBUUYvUVFFaEFRSkFJQUFRbFFJTkFDQUFFSUlHRFFBZ0FCQ0ZBeUVCQ3lBQkN6NEJBWDlCQVNFQkFrQWdBQkNwQ1EwQUlBQVFqZ1FOQUNBQUVMRUREUUFnQUJDZkJ3MEFJQUF0QURBTkFDQUFMUUFsRFFBZ0FDMEFKaUVCQ3lBQkN3MEFJQUF0QUE5QkIzRVFuZ2NMSFFFQmZ3TkFJQUFpQVNnQ0FDSUFEUUFnQVNnQ0JDSUFEUUFMSUFFTERRQVExUU5CRUJDVUFoQ1RBUXMrQVFGL0l3QkJFR3NpQWlRQUlBSWdBUkFpSWdFZ0FDZ0NCQkNKQVJvZ0FDQUJFQk1Rd2dFZ0FDZ0NBQ2dDRUJFQkFDQUJFQmthSUFKQkVHb2tBQXV4QVFFRGZ5TUFRUkJySWdJa0FDQUNJQUU2QUE4Q1FBSkFBa0FDZnlBQUVNRUJJZ1JGQkVCQkNpRUJJQUF0QUFzTUFRc2dBQkRDQkVGL2FpRUJJQUFvQWdRTElnTWdBVVlFUUNBQUlBRWdBU0FCRUo4YUlBQVF3UUZGRFFFTUFnc2dCQTBCQ3lBQUlRRWdBQ0FEUVFGcUVOUUJEQUVMSUFBb0FnQWhBU0FBSUFOQkFXb1F2QUVMSUFFZ0Eyb2lBQ0FDUVE5cUVKUUJJQUpCQURvQURpQUFRUUZxSUFKQkRtb1FsQUVnQWtFUWFpUUFDMGdBSUFBUXNCb2dBRUVBT2dBd0lBQkJnSEEyQWl3Z0FFRUFOZ0FsSUFCQkFEb0FKQ0FBSUFBb0FpQkJnSURnRDNJMkFpQWdBQkN1R2lBQUlBQW9BaUJCZ1A0ZmNqWUNJQXQyQVFKL0l3QkJJR3NpQVNRQUFuOUJBU0FBSWdJZ0FDZ0NBQ2dDY0JFQUFBUi9JQUlvQWp4QkFCQ0RCZ1ZCQUFzTkFCcEJBQ0FBSUFBb0FnQW9Bb2dCRVFBQVJRMEFHaUFBS0FKQUVFQWhBaUFBS0FKQUVESWhBQ0FCSUFFdEFCQTZBQThnQWlBQUVLVWFDeUVBSUFGQklHb2tBQ0FBQzF3QkFuOGpBRUVnYXlJQkpBQUNmMEVCSUFBUXB4b05BQnBCQUNBQUlBQW9BZ0FvQW9nQkVRQUFSUTBBR2lBQUtBSkFFRUFoQWlBQUtBSkFFREloQUNBQklBRXRBQkE2QUE4Z0FpQUFFS1lhQ3lFQ0lBRkJJR29rQUNBQ0MyVUJBbjhqQUVFZ2F5SUJKQUFDZjBFQklBQWdBQ2dDQUNnQ21BRVJBQUFOQUJwQkFDQUFJQUFvQWdBb0FvZ0JFUUFBUlEwQUdpQUFLQUpBRUVBaEFpQUFLQUpBRURJaEFDQUJJQUV0QUJBNkFBOGdBaUFBRUtnYUN5RUFJQUZCSUdva0FDQUFDMlVCQW44akFFRWdheUlCSkFBQ2YwRUJJQUFnQUNnQ0FDZ0NsQUVSQUFBTkFCcEJBQ0FBSUFBb0FnQW9Bb2dCRVFBQVJRMEFHaUFBS0FKQUVFQWhBaUFBS0FKQUVESWhBQ0FCSUFFdEFCQTZBQThnQWlBQUVLa2FDeUVBSUFGQklHb2tBQ0FBQzJRQkFuOGpBRUVnYXlJQkpBQUNmMEVCSUFBZ0FDZ0NBQ2dDZUJFQUFBMEFHa0VBSUFBZ0FDZ0NBQ2dDaUFFUkFBQkZEUUFhSUFBb0FrQVFRQ0VDSUFBb0FrQVFNaUVBSUFFZ0FTMEFFRG9BRHlBQ0lBQVFxaG9MSVFBZ0FVRWdhaVFBSUFBTGRRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnZ0NmMEVCQW45QkFDQUFJZ0VnQWlnQ0NFWU5BQm9nQVNBQktBSUFLQUtJQVJFQUFBc05BQm9nQWlnQ0NDRUJRUUFnQUNBQUtBSUFLQUtJQVJFQUFFVU5BQm9nQUNnQ1FCQkFJQUFvQWtBUU1pQUJFS3NhQ3lFQUlBSkJFR29rQUNBQUMyUUJBbjhqQUVFZ2F5SUJKQUFDZjBFQklBQWdBQ2dDQUNnQ2NCRUFBQTBBR2tFQUlBQWdBQ2dDQUNnQ2lBRVJBQUJGRFFBYUlBQW9Ba0FRUUNFQ0lBQW9Ba0FRTWlFQUlBRWdBUzBBRURvQUR5QUNJQUFRckJvTElRQWdBVUVnYWlRQUlBQUxZQUVCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ2dDZjBFQklBQXRBQVFnQWlnQ0NFWU5BQm9nQWlnQ0NDRUJRUUFnQUNBQUtBSUFLQUtJQVJFQUFFVU5BQm9nQUNnQ1FCQkFJQUFvQWtBUU1pQUJFSzBhQ3lFQUlBSkJFR29rQUNBQUN3b0FJQUFvQWxCQkFFY0xJZ0FnQUMwQUJFRjhha0gvQVhFaUFFRUpUUVJBUWY4RklBQjJRUUZ4RHd0QkFBc05BQ0FBTFFBRVFYOXFRUU5KQ3cwQUlBQXRBQVJCY1dwQkFra0xEZ0FnQUMwQUJVSHdBWEZCQUVjTERBQWdBQ0FBS0FJRUVMb2FDeDhBSUFBb0FnUWlBRUVVZEVILy8vLy9BVW9nQUVHQWdNQUFjVUVVZG5JTFNRRUJmd0pBSUFBZ0FDZ0NBQ2dDYUJFQUFBMEFJQUFnQUNnQ0FDZ0NiQkVBQUEwQUlBQWdBQ2dDQUNnQ2lBRVJBQUFOQUNBQUlBQW9BZ0FvQW5BUkFBQkJBWE1oQVFzZ0FRc0hBQ0FBS0FKUUN6RUJBbjlCQVNFQ0lBQVFZRUVBU2dSQUEwQWdBQ0FCRUt3RklBSnNJUUlnQVVFQmFpSUJJQUFRWUVnTkFBc0xJQUlMRFFBZ0FDZ0NCRUVNZEVFY2RRc05BQ0FBS0FJRVFSQjBRUngxQ3cwQUlBQW9BZ1JCRkhSQkhIVUxDQUFnQUVITUFHb0xDQUFnQUMwQUJFVUxIQUVDZndOQUlBRWlBa0VCYWlFQklBQWdBbW90QUFBTkFBc2dBZ3NIQUNBQVFRUklDelFCQVg4akFFRVFheUlESkFBZ0FCQ2RCeUFESUFJMkFnd2dBeUFCTmdJSUlBQW9BZ1FnQTBFSWFoQ1BHaUFEUVJCcUpBQUxDd0FnQUNBQlFRQVEzUTRMSFFFQ2YwRVFFRVlpQWhDekF5RURJQUFnQWpZQ1BDQURJQUVRL3dVTEJ3QWdBRUVEU0F0VUFRRi9Jd0JCRUdzaUFpUUFJQUlnQUJBN0VNNGFJQUlvQWdCQkNHb2dBUkNmQWlBQUlBSW9BZ0FnQWlnQ0FCREpDQ0FBRUJzaUFDQUFLQUlBUVFGcU5nSUFJQUlRWHhvZ0FoRENDaUFDUVJCcUpBQUxKZ0VCZnlBQUVEc2FJQUFvQWdBaUFTQUJFT0FFSUFBUUd5SUFJQUFvQWdCQmYybzJBZ0FMQ1FBZ0FDQUJOZ0pBQzZRRUFRaC9Jd0JCSUdzaUNDUUFRUUFnQTBFQ2RFSFF4UTVxS0FJQUlnY1FzZ2toQmtHT3VRNGhCQUpBQWtBZ0EwRitSZ1JBSUFZaEFnd0JDeUFDTGdFQUlRSWdDQ0FITmdJQVFRRWhCUUpBQWtBZ0FrRUJkRUdBekF0cUxnRUFJZ2RCdTN4R0RRQkJBQ0FIYXlBSFFSOTFjU0lEUVpySkFDQUhheUlDUVpzRElBSkJtd05JR3lJTFRnMEFJQVloQWdOQUFrQWdBMEVCUmcwQUlBTWdBeUFIYWtFQmRFR3c0Z3RxTGdFQVJ3MEFJQVZCQlVZTkFrRUNJUWtnQ0NBRlFRSjBhaUFEUVFKMFFkREZEbW9vQWdBaUNqWUNBRUVBSUFvUXNna2lDaUFDYWlJQ0lBcEpEUVVnQlVFQmFpRUZDeUFEUVFGcUlnTWdDMGdOQUFzZ0JVRi9haUlEUVFSTERRSUNRQUpBQWtBQ1FDQURRUUZyRGdRQUFRSURCUXRCazdFUElRUU1CUXRCdmJFUElRUU1CQXRCN2JFUElRUU1Bd3RCbzdJUElRUU1BZ3NnQmlFQ0MwSDNzQThoQkVFQklRVUxRUUloQ1NBRUVOc09JZ01nQW1vaUJpQURTU0lERFFBZ0FDZ0NBQ0FDSUFZZ0F4c2lBa2tFUUVFQklRa2dBRUYvSUFKQkFYUWlBQ0FDSUFCTEd6WUNBQXdCQ3lBQktBSUFJUU5CQUNFSlFRQWhBQU5BSUFNZ0JDMEFBQ0lHT2dBQUFrQWdCa0VsUndSQVFRRWhBVUVCSVFJZ0JrVU5Bd3dCQ3dKQUlBQWdCVTROQUNBRUxRQUJRZk1BUncwQVFRSWhBaUFESUFnZ0FFRUNkR29vQWdBUXNna2hBU0FBUVFGcUlRQU1BUXRCQVNFQlFRRWhBZ3NnQWlBRWFpRUVJQUVnQTJvaEF3d0FBQXNBQ3lBSVFTQnFKQUFnQ1F0REFRRi9Jd0JCRUdzaUFTUUFJQUFRR3hvZ0FVSC8vLy8vQXpZQ0RDQUJRZi8vLy84SE5nSUlJQUZCREdvZ0FVRUlhaENrQVNnQ0FDRUFJQUZCRUdva0FDQUFDMW9BSUFCQjJKSVBOZ0lBSUFCQkFEWUNVQ0FBUVFBMkFrUWdBQ0FCTmdKQUlBQkJBRFlDUENBQUlBQW9BZ1JCZ0lDQWZuRkJqd0p5TmdJRUlBQkJ6QUJxRUlvRElBQkJDR29RaVFNZ0FDQUNFQk1Rd2dFMkFrZ2dBQXNsQUNBQUVJb0RJQUFnQUNnQ0FFSC8vL2QrY1VHQWdJZ0JRWUNBZ0FFZ0FSdHlOZ0lBQ3p3QkFYOENRQ0FCS0FJQUlnSkZEUUFnQWlBQVFjQUVhaENZQWtVTkFDQUFLQUlvRUNVUUgwVU5BQ0FCSUFBb0FpZ1FKUkFURU1JQk5nSUFDd3VhQVFFRGZ5TUFRU0JySWdJa0FDQUNJQUZCZjJvMkFoQWdBaUFCUVFGMFFaQ0pEMm92QVFBMkFoUkJpUEVSS0FJQUlnTkJucElQSUFKQkVHb1F6QUlnQVVIZ2tnNXFMUUFBSWdFRVFBTkFJQUlnQkVFQmFpSUVOZ0lBSUFOQnhaSVBJQUlRekFJZ0F5QUFJQVFnQVd0QkFYUnFMZ0VBUVFGMFFjQzVEbW92QVFBUTBnUkJDaUFERU1BRElBRWdCRWNOQUFzTElBSkJJR29rQUF2cW13SUNHMzhCZmlNQVFhRFFBbXNpQWlRQUlBSkIwTTRDYWtFQVFkQUJFTjBCR2lBQ0lBSkI4QU5xTmdMc0F5QUNRWUFCTmdMb0EwR0k4UkVvQWdBaEMwR005QklvQWdBRVFFSEF5d3RCRDBFQklBc1E5d0lhQ3lBQVFiZ0ZhaUVhSUFCQitBQnFJUlFnQUVIUUFHb2hFU0FBUWVnQWFpRVdJQUJCakFGcUlSc2dBRUhzQldvaEVpQUNRY2dGYWlFWklBSkJrQVZxSVFZZ0FrR29CbW9oRnlBQ1FaUUZhaUVUSUFKQmpBVnFJUU5CeUFFaEZTQUNRY0FHYWlJQklSZ2dBa0hBeXdKcUlnZ2hERUYrSVEwRFFFR005QklvQWdBRVFDQUNJQWMyQW9BQ0lBdEIwTXNMSUFKQmdBSnFFTXdDQ3lBSUlBYzdBUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FFSC94QTRDZndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBTUlCVkJBWFFpQkdwQmZtb2dDRTBFUUNBVlFZL09BRXNOQnlBRVFaRE9BQ0FFUVpET0FFa2JJaFZCMGdGc1FjOEJhaENiQVNJRVJRMEhJQVFnRENBSUlBeHJRUUYxSWdGQkFXb2lDRUVCZEJBOUlnUWdGVUVCZENJRlFjOEJha0gvL3dOeFFkQUJia0hRQVd4cUlCZ2dDRUhRQVd3UVBTRVlJQUpCd01zQ2FpQU1Sd1JBSUF3UUtnc2dCQ0FCUVFGMGFpRUlRWXowRWlnQ0FBUkFJQUlnRlRZQzhBRWdDMEhqeXdzZ0FrSHdBV29RekFJTElBRkIwQUZzSUJocUlRRWdCQ0FGYWtGK2FpQUlUUTBCSUFRaERBc2dCMEdDQTBZTkJ5QUhRUUYwSWc1QmdNd0xhaThCQUNJRVFidjhBMFlOQXlBRVFSQjBRUkIxSVE4Q2Z5QU5RWDVHQkVCQmpQUVNLQUlBQkVCQnJ0Y0xRUkZCQVNBTEVQY0NHZ3NnQWtIUXpnSnFJQUFRb2hBaERRc2dEVUVBVEFzRVFFRUFJUVZCalBRU0tBSUFSUTBDUWNEWEMwRVZRUUVnQ3hEM0Fob01BZ3RCQWlFRklBMUJtUVZOQkVBZ0RVRUJkRUhnMXd0cUx3RUFJUVVMUVl6MEVpZ0NBRVVOQWlBQ1FaamlDellDNEFFZ0MwR1U0Z3NnQWtIZ0FXb1F6QUlnQ3lBRkVOSUVRUW9nQ3hEQUF3d0NDeUFFSVF3TUJndEJBQ0VOQ3lBRklBOXFJZzlCbWNrQVN3MEFJQVVnRDBFQmRDSVBRYkRpQzJvdUFRQkhEUUFnRDBIdzlBeHFMZ0VBSWdkQkFFd0VRRUVBSUFkcklRNE1BZ3RCalBRU0tBSUFCRUFnQWtHa2h3NDJBdEFCSUF0QmxPSUxJQUpCMEFGcUVNd0NJQXNnQlJEU0JFRUtJQXNRd0FNTElCQkJmMnBCQUNBUUd5RVFJQUZCMEFGcUlnRWdBa0hRemdKcVFkQUJFRDBhUVg0aERReGVDeUFPUWJDSERtb3ZBUUFpRGtVTkFRc2dBa0h3QkdvZ0FVRUJJQTVCNEpJT2FpMEFBQ0lQYTBIUUFXeHFRZEFCRUQwYVFZejBFaWdDQUFSQUlBZ2dEaERwRGdzZ0RrRithaUlFUWNRRVN3MWJBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUUZyRHNRRUFRSURCQVVHQndnSkNnc01EUTRQRUJFU0V4UVZGaGNZR1JvYkhCMGVIeUFoSWlNa0pTWW5LQ2txS3l3dExpOHdNVEl6TkRVMk56ZzVPanM4UFQ0L1FFRkNRMFJGUmtkSVNVcExURTFPVDFCUlVsTlVWVlpYV0ZsYVcxeGRYbDlnWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHA3ZkgxK2Y0QUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFac0JuQUdkQVo0Qm53R2dBYUVCb2dHakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0hKQk1rRXVBRzVBYm9CdXdHOEFiMEJ2Z0cvQWNBQndRSENBY01CeEFIRkFjWUJ4d0hJQWNrQnlnSExBY3dCelFIT0FjOEIwQUhSQWRJQjB3SFVBZFVCMWdIWEFkZ0IyUUhhQWRzQjNBSGRBZDRCM3dIZ0FlRUI0Z0hqQWVRQjVRSG1BZWNCNkFIcEFlb0I2d0hzQWUwQjdnSHZBZkFCOFFIeUFmTUI5QUgxQWZZQjl3SDRBZmtCK2dIN0Fmd0IvUUgrQWY4QmdBS0JBb0lDZ3dLRUFvVUNoZ0tIQW9nQ2lRS0tBb3NDakFLTkFvNENqd0tRQXBFQ2tnS1RBcFFDbFFLV0FwY0NtQUtaQXBvQ213S2NBcDBDbmdLZkFxQUNvUUtpQXFNQ3BBS2xBcVlDcHdLb0Fxa0NxZ0tyQXF3Q3JRS3VBcThDc0FLeEFySUNzd0swQXJVQ3RnSzNBcmdDdVFLNkFyc0N2QUs5QXI0Q3Z3TEFBc0VDd2dMREFzUUN4UUxHQXNjQ3lBTEpBc29DeXdMTUFzMEN6Z0xQQXRBQzBRTFNBdE1DMUFMVkF0WUMxd0xZQXRrQzJnTGJBdHdDM1FMZUF0OEM0QUxoQXVJQzR3TGtBdVVDNWdMbkF1Z0M2UUxxQXVzQzdBTHRBdTRDN3dMd0F2RUM4Z0x6QXZRQzlRTDJBdmNDK0FMNUF2b0Mrd0w4QXYwQy9nTC9Bb0FEZ1FPQ0E0TURoQU9GQTRZRGh3T0lBNGtEaWdPTEE0d0RqUU9PQTQ4RGtBT1JBNUlEa3dPVUE1VURsZ09YQTVnRG1RT2FBNXNEbkFPZEE1NERud09nQTZFRG9nT2pBNlFEcFFPbUE2Y0RxQU9wQTZvRHF3T3NBNjBEcmdPdkE3QURzUU95QTdNRHRBTzFBN1lEdHdPNEE3a0R1Z083QTd3RHZRTytBNzhEd0FQQkE4SUR3d1BFQThVRHhnUEhBOGdEeVFQS0E4c0R6QVBOQTg0RHp3UFFBOUVEMGdQVEE5UUQxUVBXQTljRDJBUFpBOW9EMndQY0E5MEQzZ1BmQStBRDRRUGlBK01ENUFQbEErWUQ1d1BvQStrRDZnUHJBK3dEN1FQSUJNY0V4Z1RGQk1RRXd3VENCTUVFd0FTL0JMNEV2UVM4QkxzRXVnUzVCTGdFdHdTMkJMVUV0QVN6QkxJRXNRU3dCSzhFcmdTdEJLd0Vxd1NxQktrRXFBU25CS1lFcFFTa0JLTUVvZ1NoQktBRW53U2VCSjBFbkFTYkJKb0VtUVNZQkpjRWxnU1ZCSlFFa3dTU0JKRUVrQVNQQkk0RWpRU01CSXNFaWdTSkJJZ0Vod1NHQklVRWhBU0RCSUlFZ1FTQUJQOEQvZ1A5QS93RCt3UDZBL2tEK0FQM0EvWUQ5UVAwQXdBTElBSWdBQ0FCSUFFb0FoZ2dBU2dDRUJEMUR6WUNoQVVNeUFRTElBSWdBU2dDRkRZQ2hBVU14d1FMSUFJZ0FVSEVmbW9vQWdBaUJEWUNoQVVnQkNBRUtBSUFLQUlVRVFBQVJRM0dCQ0FDS0FLRUJTSUVJQVFvQWdBb0FoUVJBQUFRdVFrTXhnUUxJQUlnQUNnQ0tDQUJLd01RUVFFZ0FVRUJFTndGTmdLRUJRekZCQXNnQWlBQUtBSW9JQUVvQWhBZ0FVRUJFUFVFTmdLRUJRekVCQXNnQUNBQlFhZVhEaUFBS0FJQUtBSTRFUVlBSUFJZ0FDZ0NLQ0FCS0FJUUlBRkJBUkNmQ0RZQ2hBVU13d1FMSUFJZ0FDZ0NLQ0FCTFFBUUlBRkJBUkNmQXpZQ2hBVU13Z1FMSUFBZ0FVRzRsdzVCQUNBQUtBSUFLQUo4RVFRQUlBSWdBQ2dDS0NBQktBSVFJQUZCQVJEMUJEWUNoQVVNd1FRTElBQWdBVUc0bHc1QkFDQUFLQUlBS0FKOEVRUUFJQUlnQUNnQ0tDQUJLQUlRSUFGQkFSQ2ZDRFlDaEFVTXdBUUxJQUFnQVVIT2x3NUJBQ0FBS0FJQUtBSndFUVFBSUFJZ0FDZ0NLQ0FCS1FNUUlBRVF4UTAyQW9RRkRMOEVDeUFBSUFGQjVaY09RUUFnQUNnQ0FDZ0NjQkVFQUNBQ0lBQW9BaWdnQVNrREVDQUJFUEVJTmdLRUJReStCQXNnQUNBQlFZV1lEa0VBSUFBb0FnQW9BbmdSQkFBZ0FpQUFLQUlvSUFFdUFSQWdBUkR6RkRZQ2hBVU12UVFMSUFBZ0FVR2NtQTVCQUNBQUtBSUFLQUo0RVFRQUlBSWdBQ2dDS0NBQkx3RVFJQUVRNnhRMkFvUUZETHdFQ3lBQUlBRkJCa0c4bUE0UVNpQUFLQUpNRUNSRkJFQWdBQ0FCUWJ5WURpQUFLQUlBS0FKQUVRWUFDeUFDSUFBb0FpZ2dBU3NERUVFQ0lBRkJBUkRjQlRZQ2hBVU11d1FMSUFBZ0FVSExtQTVCQUNBQUtBSUFLQUpFRVFRQUlBSWdBQ2dDS0NBQkt3TVFRUU1nQVVFQkVOd0ZOZ0tFQlF5NkJBc2dBaUFCS0FJVU5nS0VCUXk1QkFzZ0FpQUFJQUZCNEh4cUlBRkJwSHRxS0FJQUlBRkJ4SDVxS0FJQUVQTVBOZ0tFQlF5NEJBc2dBaUFCS0FJVU5nS0VCUXkzQkFzZ0FpQUFJQUVnQVVIMGZHb29BZ0FnQVNnQ0VCRHNEellDaEFVTXRnUUxJQUFnQVVIRWZtb2lCQkMrQlNBQUlBRkIzcGdPSUFRb0FnQWdBQ2dDQUNnQzdBRVJDUUFhSUFJZ0FDQUJRZDZZRGtFS0lBUW9BZ0FRdkFVMkFvUUZETFVFQ3lBQUlBRkJ4SDVxSWdRUXZnVWdBQ0FCUWVHWURpQUVLQUlBSUFBb0FnQW9BdXdCRVFrQUdpQUNJQUFnQVVIaG1BNUJDeUFFS0FJQUVMd0ZOZ0tFQlF5MEJBc2dBQ0FCS0FJVVFlU1lEaEMvQnlBQ0lBRW9BaFEyQW9RRkRMTUVDeUFDSUFBZ0FTQUJLQUljSUFFb0FoUVE2UTgyQW9RRklBRW9BaHdpQkVVTnNnUWdCQ0FFS0FJQUtBSUlFUVVBRExJRUN5QUNRZkFFYWlBQlFkQUJFRDBhRExFRUN5QUNRZkFFYWlBQlFiQitha0hRQVJBOUdpQUNJQUVwQXdnM0EvZ0VJQUlnQVNrREFEY0Q4QVFNc0FRTElBSkI4QVJxSUFGQnNINXFRZEFCRUQwYUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQXl2QkFzZ0FrSHdCR29nQVVHd2ZtcEIwQUVRUFJvTXJnUUxJQUpCOEFScUlBRkIwQUVRUFJvTXJRUUxJQUpCQURZQ2tBTkIxQUFRUmlJRVFRQkJBRUVCUVFCQkFFRUFFRVVoQlNBQ1FRQTJBcGdESUFJZ0JEWUNsQU1nQlNBQktBSVVJZ1FnQkNnQ0FDZ0NlQkVBQUJDUEFTQUJRY3grYWlJRUtBSUFJZ1VnQWtHUUEyb2dCU2dDQUNnQ1dCRUJBQ0FDSUFRb0FnQTJBb3dGSUFJZ0FTZ0NGRFlDaEFVTXJBUUxJQUpCQURZQ2tBTkIxQUFRUmlJRVFRQkJBRUVCUVFCQkFFRUFFRVVoQlNBQ1FRQTJBcGdESUFJZ0JEWUNsQU1nQlNBQktBSVVJZ1FnQkNnQ0FDZ0NlQkVBQUJDUEFTQUJRZng4YWlJRUtBSUFJZ1VnQWtHUUEyb2dCU2dDQUNnQ1dCRUJBQ0FDSUFRb0FnQTJBb3dGSUFJZ0FDZ0NLQ0FCUWZSOGFpZ0NBQ0FCS0FJVUlBRkJzSDVxRU40Q05nS0VCUXlyQkFzZ0FrSHdCR29nQVVHd2ZtcEIwQUVRUFJvTXFnUUxJQUpCQURZQ2hBVWdBaUFBSUFGQnVBRnFJQUZCSEdvUTZRazJBb3dGREtrRUN5QUNRUUEyQW9RRklBSkJBRFlDakFVQ1FBSkFJQUVvQWhRaUJDQUVLQUlBS0FJc0VRQUFJZ1FFUUVHWUFSQkdJZ1VnQkNBRUtBSUFLQUs0QVJFQUFDQUNRWkFEYWtFSVFRQkJBVUVBUVFCQkFCQkZJZ2RCeFFRUXJnVWFJQUlnQlRZQ2pBVWdCeEExR2lBQ0lBUWdCQ2dDQUNnQ3ZBRVJBQUEyQW9RRkRBRUxJQUVvQWhRaUJDQUVLQUlBS0FJd0VRQUFJZ1FFUUNBQUlBUWdCQ2dDQUNnQ0FCRUFBQ0FFSUFRb0FnQW9Bc0FCRVFBQUVKZ0VRWmdCRUVZaUJTQUVJQVFvQWdBb0FzQUJFUUFBSUFKQmtBTnFRUUJCQUVFQlFRQkJBRUVBRUVVaUIwRUFFSzRGSVFRZ0J4QTFHaUFDSUFVMkFvd0ZEQUlMSUFBZ0FTZ0NGQ0lFSUFRb0FnQW9BZ0FSQUFCQjU1Z09RWnFaRGtHYW1RNUJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpZ0NqQVVoQkFzZ0JBMm9CRUdhbVE0UXdnRWhCRUdZQVJCR0lnVWdCQ0FDUVpBRGFrRUFRUUJCQVVFQVFRQkJBQkJGSWdSQkFCQ3VCUm9nQWlBRk5nS01CU0FFRURVYURLZ0VDeUFDUVFBMkFvUUZJQUlnQUNBQlFiZ0JhaUFCUVJ4cUVPa0pOZ0tNQlF5bkJBc2dBQ0FCSWdSQkZHb1F2Z1VnQWlBQktBSVVOZ0tFQlNBQktBSVVJZ1VnQlNnQ0FDZ0NMQkVBQUNJRlJRMm1CQ0FBSUFRb0FoUWlCQ0FFS0FJQUtBSUFFUUFBUVp1WkRpQUZJQVVvQWdBb0FyZ0JFUUFBRUJOQm1wa09RUUFnQUNnQ0FDZ0NvQUVSQWdBTXBnUUxJQUFnQVVHd2Ztb2lCRUhlbUE0Z0FTZ0NGQ0FBS0FJQUtBTHNBUkVKQUJvZ0FpQUFJQVJCM3BnT1FRd2dBU2dDRkJDOEJUWUNoQVVNcFFRTElBQWdBVUd3Zm1vaUJFSGhtQTRnQVNnQ0ZDQUFLQUlBS0FMc0FSRUpBQm9nQWlBQUlBUkI0WmdPUVEwZ0FTZ0NGQkM4QlRZQ2hBVU1wQVFMSUFGQndINXFLQUlBSWdRRVFDQUNRUUE3QVpBREFrQWdCRUY2YWlJRlFRTkxEUUFDUUFKQUFrQWdCVUVCYXc0REFRTUNBQXNnQWtFdE9nQ1FBd3dDQ3lBQ1FTRTZBSkFEREFFTElBSkIvZ0E2QUpBREN5QUNJQUFnQVVHd2Ztb2dBa0dRQTJvZ0JDQUJLQUlVRUx3Rk5nS0VCUXlrQkFzZ0FpQUJLQUlVSWdRMkFvUUZJQVFnQkNnQ0FDZ0NGQkVBQUVVTm93UWdBaWdDaEFVaUJDQUVLQUlBS0FJVUVRQUFFTGtKREtNRUN5QUNJQUVwQXdnM0EvZ0VJQUlnQVNrREFEY0Q4QVFnQWtFQU5nS0FCUXlpQkFzZ0FpQUJLUU1JTndQNEJDQUNJQUVwQXdBM0EvQUVJQUpCQmpZQ2dBVU1vUVFMSUFJZ0FTa0RDRGNEK0FRZ0FpQUJLUU1BTndQd0JDQUNRUWMyQW9BRkRLQUVDeUFDSUFFcEF3ZzNBL2dFSUFJZ0FTa0RBRGNEOEFRZ0FrRUpOZ0tBQlNBQUlBRkJ0SmtPSUFBb0FnQW9BamdSQmdBTW53UUxJQUlnQVNnQ0ZEWUNoQVVNbmdRTElBSWdBQ0FCUWJCK2FrSEFtUTVCbVFFZ0FVSDBmR29vQWdBZ0FTZ0NGQkRnQVNJRU5nS0VCU0FFRFowRUlBSWdBVUhnZkdvb0FoUTJBb1FGREowRUN5QUNJQUFnQVVHd2ZtcEJ3cGtPUVpvQklBRkI5SHhxS0FJQUlBRW9BaFFRNEFFaUJEWUNoQVVnQkEyY0JDQUNJQUZCNEh4cUtBSVVOZ0tFQlF5Y0JBc2dBQ0FCUWJCK2FpSUVRY1NaRGlBQUtBSUFLQUk0RVFZQUlBSWdBQ0FFUWNTWkRrR2JBU0FCUWZSOGFpZ0NBQ0FCS0FJVUVPQUJJZ1EyQW9RRklBUU5td1FnQWlBQlFlQjhhaWdDRkRZQ2hBVU1td1FMSUFJZ0FTZ0NGRFlDaEFVTW1nUUxJQUlnQUNBQlFiQitha0hHbVE1Qmx3RWdBVUgwZkdvb0FnQWdBU2dDRkJEZ0FTSUVOZ0tFQlNBRURaa0VJQUlnQVVIZ2ZHb29BaFEyQW9RRkRKa0VDeUFDSUFBZ0FVR3dmbXBCeUprT1FaZ0JJQUZCOUh4cUtBSUFJQUVvQWhRUTRBRWlCRFlDaEFVZ0JBMllCQ0FDSUFGQjRIeHFLQUlVTmdLRUJReVlCQXNnQWlBQktBSVVOZ0tFQlF5WEJBc2dBQ0FCUWJCK2FpSUVRY3FaRGlBQUtBSUFLQUk0RVFZQUlBSWdBQ0FFUWRtWkRrR2RBU0FCUWZSOGFpZ0NBQ0FCS0FJVUVPQUJJZ1EyQW9RRklBUU5sZ1FnQWlBQlFlQjhhaWdDRkRZQ2hBVU1sZ1FMSUFBZ0FVR3dmbW9pQkVIY21RNGdBQ2dDQUNnQ09CRUdBQ0FDSUFBZ0JFSHNtUTVCbkFFZ0FVSDBmR29vQWdBZ0FTZ0NGQkRnQVNJRU5nS0VCU0FFRFpVRUlBSWdBVUhnZkdvb0FoUTJBb1FGREpVRUN5QUNJQUVvQWhRMkFvUUZESlFFQ3lBQ0lBQWdBVUd3Zm1vaUJFSHZtUTVCcFFFZ0FVSDBmR29vQWdBZ0FTZ0NGQkRnQVNJRk5nS0VCU0FGRFpNRUlBSWdBQ2dDS0VFQUlBUkJBQkNmQXpZQ2hBVU1rd1FMSUFJZ0FDQUJRYkIrYWlJRVFmR1pEa0dtQVNBQlFmUjhhaWdDQUNBQktBSVVFT0FCSWdVMkFvUUZJQVVOa2dRZ0FpQUFLQUlvUVFBZ0JFRUFFSjhETmdLRUJReVNCQXNnQWlBQUlBRkJzSDVxSWdSQjg1a09RYWNCSUFGQjlIeHFLQUlBSUFFb0FoUVE0QUVpQlRZQ2hBVWdCUTJSQkNBQ0lBQW9BaWhCQUNBRVFRQVFud00yQW9RRkRKRUVDeUFDSUFBZ0FVR3dmbW9pQkVIMm1RNUJxQUVnQVVIMGZHb29BZ0FnQVNnQ0ZCRGdBU0lGTmdLRUJTQUZEWkFFSUFJZ0FDZ0NLRUVBSUFSQkFCQ2ZBellDaEFVTWtBUUxJQUlnQVNnQ0ZEWUNoQVVNandRTElBQWdBVUd3Zm1vaUJDQUJRZlI4YWlJRktBSUFJZ2NnQnlnQ0FDZ0NlQkVBQUVINW1RNFF1d1VnQUNBRUlBVW9BZ0FpQnlBSEtBSUFLQUo0RVFBQVFZcWFEaEMyQnlBQUlBUWdCU2dDQUNJSElBY29BZ0FvQW5nUkFBQkJpcG9PRUl3R0lBQWdCQ0FGS0FJQUlnY2dCeWdDQUNnQ2VCRUFBRUdLbWc0UTJBa2dBaUFBSUFSQmlwb09RYUVCSUFVb0FnQWdBU2dDRkJEZ0FTSUZOZ0tFQlNBRkRZNEVJQUlnQUNnQ0tFRUFJQVJCQUJDZkF6WUNoQVVNamdRTElBQWdBVUd3Zm1vaUJDQUJRZlI4YWlJRktBSUFJZ2NnQnlnQ0FDZ0NlQkVBQUVINW1RNFF1d1VnQUNBRUlBVW9BZ0FpQnlBSEtBSUFLQUo0RVFBQVFZMmFEaEMyQnlBQUlBUWdCU2dDQUNJSElBY29BZ0FvQW5nUkFBQkJqWm9PRUl3R0lBQWdCQ0FGS0FJQUlnY2dCeWdDQUNnQ2VCRUFBRUdObWc0UTJBa2dBaUFBSUFSQmpab09RYUlCSUFVb0FnQWdBU2dDRkJEZ0FTSUZOZ0tFQlNBRkRZMEVJQUlnQUNnQ0tFRUFJQVJCQUJDZkF6WUNoQVVNalFRTElBSWdBU2dDRkRZQ2hBVU1qQVFMSUFBZ0FVR3dmbW9pQkVHUW1nNGdBQ2dDQUNnQ09CRUdBQ0FDSUFBZ0JFR2NtZzVCbmdFZ0FVSDBmR29vQWdBZ0FTZ0NGQkRnQVNJRU5nS0VCU0FFRFlzRUlBSWdBVUhnZkdvb0FoUTJBb1FGRElzRUN5QUNJQUVvQWhRMkFvUUZESW9FQ3lBQUlBRkJzSDVxSWdSQm5wb09JQUFvQWdBb0FqZ1JCZ0FnQWlBQUlBUkJzNW9PUWFBQklBRkI5SHhxS0FJQUlBRW9BaFFRNEFFaUJEWUNoQVVnQkEySkJDQUNJQUZCNEh4cUtBSVVOZ0tFQlF5SkJBc2dBaUFCS0FJVU5nS0VCUXlJQkFzZ0FDQUJRYkIrYWlJRVFiV2FEaUFBS0FJQUtBSTRFUVlBSUFJZ0FDQUVRY3FhRGtHZkFTQUJRZlI4YWlnQ0FDQUJLQUlVRU9BQklnUTJBb1FGSUFRTmh3UWdBaUFCUWVCOGFpZ0NGRFlDaEFVTWh3UUxJQUlnQVNnQ0ZEWUNoQVVNaGdRTElBSWdBQ0FCUWJCK2FpSUVRY3lhRGtHd0FTQUJRZlI4YWlnQ0FDQUJLQUlVRU9BQklnVTJBb1FGSUFVTmhRUWdBaUFBS0FJb1FRQWdCRUVBRUo4RE5nS0VCUXlGQkFzZ0FpQUJLQUlVTmdLRUJReUVCQXNnQWlBQUlBRkJzSDVxSWdSQno1b09RYThCSUFGQjlIeHFLQUlBSUFFb0FoUVE0QUVpQlRZQ2hBVWdCUTJEQkNBQ0lBQW9BaWhCQUNBRVFRQVFud00yQW9RRkRJTUVDeUFDSUFFb0FoUTJBb1FGRElJRUN5QUNJQUFnQVVHd2Ztb2lCRUhTbWc1QnJnRWdBVUgwZkdvb0FnQWdBU2dDRkJEZ0FTSUZOZ0tFQlNBRkRZRUVJQUlnQUNnQ0tFRUFJQVJCQUJDZkF6WUNoQVVNZ1FRTElBSWdBU2dDRkRZQ2hBVU1nQVFMSUFBZ0FDZ0NYRUVCYWpZQ1hBei9Bd3NnQUNBQUtBSmNRWDlxTmdKY0lBQWdBVUhBZVdvaUJDQUJRWVI0YWlJRktBSUFFSklHSUFBZ0JFSFZtZzRnQlNnQ0FDQUFLQUlBS0FMd0FSRUVBQ0FBSUFGQnNINXFJZ2RCMTVvT0lBRkI5SHhxSWdrb0FnQWdBQ2dDQUNnQzhBRVJCQUFnQUNBSFFkZWFEaUFCS0FJVUlBQW9BZ0FvQXZBQkVRUUFJQUlnQUNnQ0tDQUZLQUlBSUFrb0FnQWdBU2dDRkNBRUVKVVZJZ1UyQW9RRklBVU4vZ01nQWtHQUEyb2dBVUhnZkdvb0FoUVFxZ0lnQWtId0Ftb2dBU2dDRkJDcUFpQUFJQVJCMTVvT0lBSkJnQU5xSUFKQjhBSnFFTVlISUFKQjhBSnFFQmthSUFKQmdBTnFFQmthSUFJZ0FTZ0NGRFlDaEFVTS9nTUxJQUlnQVNnQ0ZEWUNoQVVNL1FNTElBQWdBVUd3Zm1vaUJDQUJRZlI4YWlJRktBSUFJZ2NnQnlnQ0FDZ0NlQkVBQUVIWm1nNFF1d1VnQUNBRUlBVW9BZ0FpQnlBSEtBSUFLQUo0RVFBQVFlcWFEaEMyQnlBQUlBUWdCU2dDQUNJSElBY29BZ0FvQW5nUkFBQkI2cG9PRU9zSklBQWdCQ0FGS0FJQUlnY2dCeWdDQUNnQ2VCRUFBRUhxbWc0UWpBWWdBQ0FFUWV5YURpQUZLQUlBSUFBb0FnQW9BdXdCRVFrQUdpQUFJQVJCN0pvT0lBRW9BaFFnQUNnQ0FDZ0M4QUVSQkFBZ0JTZ0NBQ0VGSUFRb0FoQWhCeUFCS0FJVUlRa2dBQ2dDS0NFS0lBSWdCQ2tDQ0RjREtDQUNJQVFwQWdBM0F5QWdBaUFLSUFjZ0JTQUpJQUpCSUdvUTdBVWlCVFlDaEFVZ0JRMzhBeUFDUWVBQ2FpQUJRZUI4YWlJRktBSVVFS29DSUFKQjBBSnFJQUVvQWhRUXFnSWdBQ0FFUWV5YURpQUNRZUFDYWlBQ1FkQUNhaERuQ1NBQ1FkQUNhaEFaR2lBQ1FlQUNhaEFaR2lBQ0lBVW9BaFEyQW9RRkRQd0RDeUFDSUFFcEF3ZzNBL2dFSUFJZ0FTa0RBRGNEOEFRZ0FrRzJCRFlDZ0FVTSt3TUxJQUlnQVNrRENEY0QrQVFnQWlBQktRTUFOd1B3QkNBQ1Fia0VOZ0tBQlF6NkF3c2dBaUFCS1FNSU53UDRCQ0FDSUFFcEF3QTNBL0FFSUFKQnZnUTJBb0FGRFBrREN5QUFJQUZCODVvT0lBQW9BZ0FvQWpnUkJnQWdBaUFCS1FNSU53UDRCQ0FDSUFFcEF3QTNBL0FFSUFKQnZ3UTJBb0FGRFBnREN5QUNJQUVwQXdnM0EvZ0VJQUlnQVNrREFEY0Q4QVFnQWtHM0JEWUNnQVVNOXdNTElBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWJnRU5nS0FCUXoyQXdzZ0FDQUJRZmFhRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNNRU5nS0FCUXoxQXdzZ0FDQUJRWXliRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNRRU5nS0FCUXowQXdzZ0FDQUJRYU9iRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNBRU5nS0FCUXp6QXdzZ0FDQUJRYmFiRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNJRU5nS0FCUXp5QXdzZ0FDQUJRY21iRGlBQUtBSUFLQUk0RVFZQUlBSWdBU2tEQ0RjRCtBUWdBaUFCS1FNQU53UHdCQ0FDUWNFRU5nS0FCUXp4QXdzZ0FpQUJLQUlVTmdLRUJRendBd3NnQUNBQlFiQithaUlFUWR1YkRpQUJLQUlVRU84SklBSWdBQ2dDS0NBQlFmUjhhaWdDQUNBQktBSVVJQVFRbkJVaUJUWUNoQVVnQlEzdkF5QUNRY0FDYWlBQlFlQjhhaWdDRkJDcUFpQUNRYkFDYWlBQktBSVVFS29DSUFBZ0JFSGJtdzRnQWtIQUFtb2dBa0d3QW1vUXhnY2dBa0d3QW1vUUdSb2dBa0hBQW1vUUdSb2dBaUFCS0FJVU5nS0VCUXp2QXdzZ0FDQUJLQUlVUVpxWkRoRG1DU0FDSUFFb0FoUTJBb1FGRE80REN5QUFJQUZCc0g1cUlBRkJ6SDVxS0FJQVFRRVE4Z2thSUFKQkFEWUNoQVVNN1FNTElBRkJzSDVxSVFRQ1FDQUJRY1IrYWlnQ0FDSUZSUTBBSUFVZ0JTZ0NBQ2dDR0JFQUFFVU5BQ0FFS0FJVUlnVWdCU2dDQUNnQ0dCRUFBQ0lGUVFFZ0JTZ0NBQ2dDdUFFUkFRQUxJQUlnQkNnQ0ZEWUNoQVVNN0FNTElBQWdBVUdRZTJvaUJVRUJRWUlCUVFCQjNac09FQ2dnRWlFRUlBQW9Ba3dpQnlBSEVNRUNFQkVvQWdBaUJ5Z0NFRVVFUUNBSFFkQUFFQ1lpQnpZQ0VDQUhJQVJCMEFBUVBSb0xJQUFnQlNBQlFjeCthaUFCUVl0OWFpMEFBRUVIY1JER0R5QUNRUUEyQW9RRkRPc0RDeUFBSUFGQnNINXFJQUZCekg1cUtBSUFRUUJCQUJDekJ5QUNRUUEyQW9RRkRPb0RDeUFBSUFGQjRIeHFJQUZCL0h4cUtBSUFJQUZCd0g1cUtBSUFRUUFRc3djZ0FrRUFOZ0tFQlF6cEF3c2dBQ0FCUVpCN2FpQUJRYXg3YWlnQ0FDQUJRZkI4YWlnQ0FDQUJRY3grYWlnQ0FCQ3pCeUFDUVFBMkFvUUZET2dEQ3lBQUlBRkJhR29pQkNBQlFkUithaEMyQlNBQUlBUWdBVUhNZm1vUW9nOGdBa0VBTmdLRUJRem5Bd3NnQUNBQlFaaCthaUlFSUFGQnVIMXFFSmNFSUFGQndINXFLQUlBSVFVZ0FrRXdhaUFCUVlSOWFrRTBFRDBhSUFBZ0JDQUNRVEJxSUFVUXl3a2dBa0VBTmdLRUJRem1Bd3NnQUNBQlFjaDhhaUlFSUFGQjZIdHFFSmNFSUFGQnpINXFJZ1VvQWdBZ0FVSHdmR29RM0FFZ0JTZ0NBQ0VGSUFKQjVBQnFJQUZCdEh0cVFUUVFQUm9nQUNBRUlBSkI1QUJxSUFVUW93OGdBa0VBTmdLRUJRemxBd3NnQUNBQlFaaCthaEM3RHd6a0F3c2dBQ0FBS0FKWVFYOXFOZ0pZSUFBZ0FVSFFlV29vQWdBMkFyUUZJQUFnQVVHb2VXb2lCQ0FCUVpSNGFpSUZFTFlGSUFBZ0JDQUJRY2g0YWhDWEJDQWFJQVZCTkJBOUdpQUNJQUZCc0hscUtRSUFOd1A0QkNBQ0lBUXBBZ0EzQS9BRUlBSWdBVUhNZm1vb0FnQTJBb3dGRE9NREMwRVFFRVlpQkJDVEFSb2dBaUFFTmdLTUJTQUVJQUZCRUdvUTNBRU00Z01MSUFJZ0FVSDhmR29vQWdBaUJEWUNqQVVnQkNBQlFSQnFFTndCRE9FREN5QUNJQUZCekg1cUtBSUFOZ0tNQlNBQ0lBRXBBd2czQS9nRUlBSWdBU2tEQURjRDhBUU00QU1MSUFJZ0FTZ0NIRFlDakFVTTN3TUxJQUlnQVNnQ0hEWUNqQVVNM2dNTElBSWdBVUhNZm1vb0FnQTJBb3dGSUFFb0FpQWlCQ0FFS0FJQUtBSWNFUUFBQkVBZ0FVR3dmbW9vQWh3aUJDQUJRUnhxSUFRb0FnQW9BbGdSQVFBTTNnTUxJQUVvQWlBaUJFVU4zUU1nQkNBRUtBSUFLQUlFRVFVQUROMERDeUFCS0FJZ0lnUWdCQ2dDQUNnQ0hCRUFBRVVFUUNBQUlBRkJzSDVxUWZHYkRrR2duQTVCbXBrT1FRQWdBQ2dDQUNnQ29BRVJBZ0FnQVNnQ0lDSUVSUTNkQXlBRUlBUW9BZ0FvQWdRUkJRQU0zUU1MSUFJZ0FVSDhmR29pQkNnQ0FEWUNqQVVnQkNnQ0FDSUVJQUZCSEdvZ0JDZ0NBQ2dDV0JFQkFBemNBd3NnQVVHSWZXb29BZ0JCUDNFaUJFRUNUd1JBSUFBZ0FVR3dmbXBCcFp3T0lBUVEwd0pCbXBrT1FRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFGQmtINXFLQUlBSWdRRVFDQUFJQUZCbUg1cUlBUVF0Z01MSUFKQmtBTnFJQUZCL0h4cUVMUURJUVFnQUNBQlFjQithaUlGRU9nT1FaZ0JFRVlpQnlBRktBSUFJQVJCQUJDdUJSb2dBaUFITmdLTUJTQUVFRFVhRE5zREN5QUJRV0JxSWdVb0FnQUVRQ0FBSUFGQmFHb2lCRUVCUWZnQVFjK2NEa0hrbkE0UUtDQUFJQVJCQ0VHc0FrRUFRZVNjRGhBb0lBQWdCQ0FGS0FJQUVMWURDeUFCUWN4K2FpSUVLQUlBUlFSQUlBQWdBVUh4bkE0Z0FTZ0NFQkFUUVpxWkRrRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUlBRWdBU2dDRUJDWUJDQUJLQUlRSVFWQjFBQVFSaUlISUFRUXRBTWFJQUlnQVNrRENEY0QrQVFnQWlBQktRTUFOd1B3QkNBQ1FRQTJBcFFGSUFJZ0J6WUNrQVVnQWlBRk5nS01CUXphQXdzZ0FVR1FmbW9pQkNnQ0FBUkFJQUFnQVVHWWZtb2lCVUVCUWZnQVFjK2NEa0hrbkE0UUtDQUFJQVZCQ0VHc0FrRUFRZVNjRGhBb0lBQWdCU0FFS0FJQUVMWURDMEhVQUJCR0lnVWdBVUg4ZkdvUXRBTWlCeUFCS0FJY0VKQUVJQWNnQkNnQ0FCQ0hCaUFBSUFGQnNINXFJZ1FnQnlBRktBSUFLQUpRRVFBQUVKUUVJQUFnQVNBQktBSWNFTFlESUFBZ0JDQUVLQUlRRUpnRUlBUW9BaEFoQnlBQ0lBUXBBd2czQS9nRUlBSWdCQ2tEQURjRDhBUWdBa0VBTmdLVUJTQUNJQVUyQXBBRklBSWdCellDakFVTTJRTUxJQUpCOEFScUlBRkIwQUVRUFJvZ0FVSFlmbW9pQkNrQ0FFS0FnSUE0Z3lJY1VFVUVRQ0FDS0FLUUJTSUZJQVVvQWdBb0FpZ1JBQUFpQlNBRktRSUVRdi8vLzBlRElCeUVOd0lFQ3lBQUlBSkI4QVJxSUFJb0FwQUZJZ1VnQlNnQ0FDZ0NIQkVBQUNBQ0tBS1FCU0lGSUFVb0FnQW9BaWdSQUFBUTNRTWdBQ0FCUVdocUlnVWdBVUdJZjJvUWx3UWdBQ0FCSUFRb0FnQkJQM0VnQWlnQ2tBVVFqd1lnQUNBRklBRkIxSDVxSUFJb0FwQUZFTm9KRE5nREN5QUNRZkFFYWlBQlFkQUJFRDBhSUFBZ0FVRU5JQUVvQWlBUWp3WWdBa0VBTmdLUUF5QUFJQUVnQWtHUUEyb2dBaWdDa0FVUXR3Y2dBQ0FDUWZBRWFpQUNLQUtRQlNJRUlBUW9BZ0FvQWh3UkFBQWdBaWdDa0FVaUJDQUVLQUlBS0FJb0VRQUFFTjBERE5jREN5QUNRZkFFYWlBQlFkQUJFRDBhSUFGQjJINXFJZ1VwQWdCQ2dJQ0FPSU1pSEZCRkJFQWdBaWdDa0FVaUJDQUVLQUlBS0FJb0VRQUFJZ1FnQkNrQ0JFTC8vLzlIZ3lBY2hEY0NCQXNnQUNBQlFXaHFJZ1FnQWlnQ2tBVWlCeUFIS0FJQUtBSWNFUUFBSUFJb0FwQUZJZ2NnQnlnQ0FDZ0NLQkVBQUJEZEF5QUFJQVFnQVVHSWYyb1Fsd1FnQUNBQklBVW9BZ0JCUDNFZ0FpZ0NrQVVRandZZ0FDQUVJQUZCMUg1cUlBSW9BcEFGRU5vSkROWURDeUFDUWZBRWFpQUJRZEFCRUQwYUlBQWdBVUVOSUFFb0FpQVFqd1lnQWtFQU5nS1FBeUFBSUFFZ0FrR1FBMm9nQWlnQ2tBVVF0d2NnQUNBQ1FmQUVhaUFDS0FLUUJTSUVJQVFvQWdBb0Fod1JBQUFnQWlnQ2tBVWlCQ0FFS0FJQUtBSW9FUUFBRU4wREROVURDMEhVQUJCR0lnUWdBVUVjYWhDMEF4b2dBa0VBTmdLVUJTQUNJQVEyQXBBRklBSkJBRFlDakFVZ0FTZ0NzQUVpQkVVTjFBTWdBQ0FCUWJnQmFpQUVFTFlERE5RREN5QUNRZkFFYWlBQlFkQUJFRDBhRE5NREN5QUNRZkFFYWlBQlFlQjhha0hRQVJBOUdpQUFJQUVnQVNnQ0VDQUJRZng4YWtFQVFRQVF0UU1hRE5JREN5QUNRZkFFYWlBQlFaQjdha0hRQVJBOUdpQUFJQUZCc0g1cUlBRkJ3SDVxS0FJQUlBRkJySHRxSUFFb0FoeEJBQkMxQXhvTTBRTUxJQU1nQVVHTWVHb2lCRUd3QVJBOUdpQUFJQUZCa0h0cUlBRkJvSHRxS0FJQUlBUWdBVUg4Zkdvb0FnQWdBU2dDRkJDMUF5RUVJQUlnQUNnQ0tDQUJRWVI0YWlnQ0FDQUVJQUZCc0g1cUVONENOZ0tFQlF6UUF3c2dBeUFCUWR4NWFpSUVRYkFCRUQwYUlBQWdBVUhnZkdvZ0FVSHdmR29vQWdBZ0JFRUFJQUVvQWhRUXRRTWhCQ0FDSUFBb0FpZ2dBVUhVZVdvb0FnQWdCQ0FCUWJCK2FoRGVBallDaEFVTXp3TUxJQU1nQVVFY2FrR3dBUkE5SVFRZ0FrRUFOZ0tFQlNBQUlBSkI4QVJxSUFRUXJBOE16Z01MSUFNZ0FVSE1mbW9pQkVHd0FSQTlHaUFDUVFBMkFvUUZJQUFnQVNBQktBSVFJQVJCQUVFQUVMVURHZ3pOQXdzZ0F5QUJRZng4YWlJRVFiQUJFRDBhSUFKQkFEWUNoQVVnQUNBQlFiQithaUFCUWNCK2FpZ0NBQ0FFSUFFb0FoeEJBQkMxQXhvTXpBTUxJQU1nQVVIY2VXb2lCRUd3QVJBOUdpQUFJQUZCa0h0cUlBRkJvSHRxS0FJQUlBUWdBVUg4Zkdvb0FnQWdBU2dDRkJDMUF5RUVJQUlnQUNnQ0tFRUFJQVFnQVVHd2Ztb1EzZ0kyQW9RRkRNc0RDeUFESUFGQnJIdHFJZ1JCc0FFUVBSb2dBQ0FCUWVCOGFpQUJRZkI4YWlnQ0FDQUVRUUFnQVNnQ0ZCQzFBeUVFSUFJZ0FDZ0NLRUVBSUFRZ0FVR3dmbW9RM2dJMkFvUUZETW9EQ3lBQUlBRkJ1QUZxSWdRZ0FVRWthaUFESUFGQkhHcEJzQUVRUFJEakNTQUJLQUt3QVFSQUlBQWdCRUVCUWZnQVFjK2NEa0hrbkE0UUtDQUFJQVJCQ0VHc0FrRUFRZVNjRGhBb0N5QUFJQmNnQWlnQ2pBVWdFeERkQXd6SkF3c2dBQ0FCUVdocUlnVWdBVUhVZm1vaUJCQzJCU0FBSUFVZ0JDQUJRUnhxSWdjUTR3a0NRQ0FCS0FLd0FVVU5BQ0FBSUFGQnVBRnFJZ1ZCQVVINEFFSFBuQTVCNUp3T0VDZ2dBQ0FGUVFoQnJBSkJBRUhrbkE0UUtDQUJLQUt3QVVVTkFDQUFJQVVnQkJEaENVVU5BQ0FCUVFBMkFyQUJDeUFBSUFGQnVBRnFJZ1VnQVVHSWYyb2lDUkNYQkNBQlFkZ0FhaUFKRUtvSElBQWdCU0FCUVNScUlna2dCRUVCRUpFR0lBQWdCU0FCS0FJY0lBa1EzUU1nQXlBSFFiQUJFRDBhSUJNUW1RSU55QU1nQUNnQ0ZDSUVRUVJMRGNnREFrQUNRQUpBSUFSQkFXc09CTXNEeXdQTEF3RUFDeUFDS1FPWUJTSWNRaitEUWdSU0Rjb0REQUVMSUFJcEE1Z0ZJaHhDUDROQ0ExSU55UU1MSUFJZ0hFS0FnSUNBQW9RM0E1Z0ZETWdEQ3lBQUlBRkJqSjBPRUtNQklBQWdGMEVCUWZnQVFRQkJqSjBPRUNnZ0F5QUJRUUFRRnlBQ0lBSXBBNWdGUW9DQWdNQUFoRGNEbUFVTXh3TUxJQUFnQVVHV25RNFFvd0VnQUNBQlFRRkJnZ0ZCQUVHV25RNFFLQ0FBSUFGQkNFR3NBa0VBUVphZERoQW9JQU1nQVVFQUVCY2dBaUFDS1FPWUJVS0FnSUNBQW9RM0E1Z0ZETVlEQ3lBQUlBRkJuWjBPRUtNQklBQWdBVUVCUVlJQlFRQkJuWjBPRUNnZ0FDQUJRUWhCckFKQkFFR2RuUTRRS0NBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDZ0lDQWdBU0VOd09ZQlF6RkF3c2dBQ0FCUWFLZERoQ2pBU0FBSUFGQkNFRUFRYkNkRGtHaW5RNFFLQ0FBSUFGQkFVR0NBVUVBUWFLZERoQW9JQU1nQVVFQUVCY2dBaUFDS1FPWUJVS0FnSUNBd0FDRU53T1lCUXpFQXdzZ0FDQUJRZG1kRGhDakFTQUFJQUZCQWtIQ0EwSHRuUTVCbFo0T0VDZ2dBQ0FCUVFSQndnTkI3WjBPUVpXZURoQW9JQU1nQVVFQUVCY2dBaUFDS1FPWUJVS0FnSUNBZ0FHRU53T1lCUXpEQXdzZ0FDQUJRYXllRGhDakFTQUFJQUZCQWtFQVFiaWVEa0hhbmc0UUtDQUFJQUZCQkVFQVFiaWVEa0hhbmc0UUtDQUFJQUZCQ0VFQVFiaWVEa0hhbmc0UUtDQURJQUZCQUJBWElBSWdBaWtEbUFWQ2dJQ0FnSUFDaERjRG1BVU13Z01MSUFBZ0FVSDJuZzRRb3dFZ0FDQUJRWkRBQUVIMm5nNFEwZ0VnQUNnQ0ZFRUVSZ1JBSUFBZ0FVRUJRWWlmRGtIMm5nNGdBQ2dDQUNnQ0ZCRUlBQXNnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRb0NBZ0lDQUJJUTNBNWdGRE1FREN5QUFJQUZCako4T0VLTUJJQUFnQVVFTlFZeWZEaEMvQWlBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDZ0lDQWdJQUloRGNEbUFVTXdBTUxJQUFnQVVHV253NFFvd0VnQUNBQlFZRGdBRUdXbnc0UTBnRWdBeUFCUVFBUUZ5QUNJQUlwQTVnRlFvQ0FnSUNBRUlRM0E1Z0ZETDhEQ3lBRElBRkJ6SDVxUWJBQkVEMGFETDREQ3lBRElBRkJIR3BCc0FFUVBSb012UU1MSUFNZ0FVSDhmR3BCc0FFUVBSb2dHU0FCUWRnQWFoQ3FCeUFUSUFGQkpHcEJBQkNRQmd5OEF3c2dBeUFCUVFBUUZ5QUFJQUVnQXlBQktBSVFFTllKRExzREN5QURJQUZCNEh4cUlnUkJBQkFYSUFBZ0JDQURJQUZCOEh4cUtBSUFJQUVvQWhRUXRnOE11Z01MSUFNZ0FVRUFFQmNnQUNBQklBTWdBa0dRQTJwQm5aOE9FQ0lpQkJEV0NTQUVFQmthRExrREN5QUFJQmRCQmtHUUEwR2tudzVCdDU4T0VDZ2dBQ0FCUVFoQndBSkJBa0hBbnc1QnQ1OE9FTkVCSUFNZ0FVRUFFQmNnQWlBQ0tRT1lCVUtBZ0lDQUlJUTNBNWdGRExnREN5QURJQUZCSEdwQnNBRVFQUm9NdHdNTElBTWdBVUhNZm1wQnNBRVFQUm9nQWlnQ2pBVkZCRUFnQWlBQktBSWNOZ0tNQlFzZ0dTQUJRZGdBYWhDcUJ5QUFJQmNnRXlBQlFTUnFRUUFRa1FZTXRnTUxJQU1nQVVFY2FrR3dBUkE5R2d5MUF3c2dBeUFCUVJ4cVFiQUJFRDBhRExRREN5QUFJQUZCdUFGcUlBRXRBQ3RCQjNFUTB3OGdBeUFCUVJ4cVFiQUJFRDBhRExNREN5QURJQUZCSEdwQnNBRVFQUm9Nc2dNTElBTWdBVUVjYWtHd0FSQTlHZ3l4QXdzZ0F5QUJRUnhxUWJBQkVEMGFETEFEQ3lBRElBRkJIR3BCc0FFUVBSb01yd01MSUFNZ0FVRUFFQmNnQWlBQ0tRT1lCVUpBZzBJQ2hEY0RtQVVNcmdNTElBQWdBVUhJbnc0UW93RWdBeUFCUVFBUUZ5QUNJQUlwQTVnRlFrQ0RRZytFTndPWUJReXRBd3NnQUNBQlFjNmZEaENqQVNBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDUUlOQ0RZUTNBNWdGREt3REN5QUFJQUZCMFo4T0VLTUJJQU1nQVVFQUVCY2dBaUFDS1FPWUJVSkFnMElPaERjRG1BVU1xd01MSUFBZ0FVRUJRZmdBUVFCQjFaOE9FQ2dnQUNBQlFRaEJyQUpCQUVIVm53NFFLQ0FBSUFGQjFaOE9FS01CSUFNZ0FVRUFFQmNnQWlBQ0tRT1lCVUtBZ0lDQUFZUTNBNWdGREtvREN5QUFJQUZCM3A4T0VLTUJJQU1nQVVFQUVCY2dBaUFDS1FPWUJVSkFnMElGaERjRG1BVU1xUU1MSUFBZ0FVR2RudzRRb3dFZ0FDQUJRUVpCcmdOQjVwOE9RWjJmRGhBb0lBQWdBVUVJUWJZQ1FRQkJuWjhPRUNnZ0FDQUJRYURnQUVHZG53NFEwZ0VnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRa0NEUWdlRU53T1lCUXlvQXdzZ0FDQUJRZnlmRGhDakFTQURJQUZCQUJBWElBSWdBaWtEbUFWQ1FJTkNCb1EzQTVnRkRLY0RDeUFBSUFGQkFFR0RvQTRRdndJZ0FDQUJRUUpCZ2dGQmc2QU9JQUFvQWdBb0Fnd1JDQUFnQUNBQlFRRkJnZ0ZCZzZBT0lBQW9BZ0FvQWd3UkNBQWdBQ0FCUVFKQnBBTkJnNkFPSUFBb0FnQW9BaEFSQ0FBZ0FDQUJRUWhCckFKQmc2QU9JQUFvQWdBb0FoQVJDQUFnQUNBQlFZT2dEaENqQVNBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDUUlOQ0E0UTNBNWdGREtZREN5QUFJQUZCQVVHQ0FVR05vQTRnQUNnQ0FDZ0NEQkVJQUNBQUlBRkJBa0dDQVVHTm9BNGdBQ2dDQUNnQ0RCRUlBQ0FBSUFGQkFrR2tBMEdOb0E0Z0FDZ0NBQ2dDRUJFSUFDQUFJQUZCQ0VHc0FrR05vQTRnQUNnQ0FDZ0NFQkVJQUNBQUlBRkJqYUFPRUtNQklBTWdBVUVBRUJjZ0Fpa0RtQVZDUUlNaEhDQUFLQUlVUlFSQUlBSWdIRUlFaERjRG1BVU1wZ01MSUFJZ0hFSURoRGNEbUFVTXBRTUxJQUFnQVVHVm9BNFFvd0VnQUNBQlFRWkJsYUFPRU5JQklBTWdBVUVBRUJjZ0FpQUNLUU9ZQlVLQWdJQ0FnQ0NFTndPWUJReWtBd3NnQUNBQlFadWdEaENqQVNBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDZ0lDQWdJREFBSVEzQTVnRkRLTURDeUFBSUFGQm9xQU9FS01CSUFBZ0FVR0FCMEdpb0E0UTBnRWdBQ0FCUVFKQnpBTkJzYUFPUWFLZ0RoQW9JQU1nQVVFQUVCY2dBaUFDS1FPWUJVSkFnMElLaERjRG1BVU1vZ01MSUFBZ0FVSERvQTRRb3dFZ0FDQUJRY0FPUWNPZ0RoRFNBU0FBSUFGQkFrSE1BMEd4b0E1Qnc2QU9FQ2dnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRa0NEUWdpRU53T1lCUXloQXdzZ0FDQUJRZENnRGhDakFTQUFJQUZCZ0E1QjBLQU9FTklCSUFBZ0FVRUNRY3dEUWJHZ0RrSFFvQTRRS0NBRElBRkJBQkFYSUFJZ0Fpa0RtQVZDUUlOQ0NZUTNBNWdGREtBREN5QUFJQUZCMzZBT0VLTUJJQUFnQVVIQUhFSGZvQTRRMGdFZ0FDQUJRUUpCekFOQnNhQU9RZCtnRGhBb0lBTWdBVUVBRUJjZ0FpQUNLUU9ZQlVKQWcwSUxoRGNEbUFVTW53TUxJQUFnQVVIdW9BNFFvd0VnQUNBQlFZQVFRZTZnRGhEU0FTQUFJQUZCQWtITUEwR3hvQTVCN3FBT0VDZ2dBeUFCUVFBUUZ5QUNJQUlwQTVnRlFrQ0RRZ3lFTndPWUJReWVBd3NnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRb0NBZ0lDQWdBaUVOd09ZQlF5ZEF3c2dBeUFCUVFBUUZ5QUFJQUZCQVVHQW9RNUJoS0VPSUFBb0FnQW9BaFFSQ0FBZ0FpQUNLUU9ZQlVLQWdJQ0FnSUFnaERjRG1BVU1uQU1MSUFNZ0FVRUFFQmNnQUNBQlFRRkJnS0VPUVpPaERpQUFLQUlBS0FJVUVRZ0FJQUlnQWlrRG1BVkNnSUNBZ0lDQXdBQ0VOd09ZQlF5YkF3c2dBeUFCUVFBUUZ5QUFJQUZCQVVHQW9RNUJwNkVPSUFBb0FnQW9BaFFSQ0FBZ0FpQUNLUU9ZQlVLQWdJQ0FnSUNBQVlRM0E1Z0ZESm9EQ3lBRElBRkJBQkFYSUFBZ0FVRUJRWUNoRGtHNW9RNGdBQ2dDQUNnQ0ZCRUlBQ0FDSUFJcEE1Z0ZRb0NBZ0lDQWdJQUNoRGNEbUFVTW1RTUxJQU1nQVVFQUVCY2dBQ0FCUVFGQmdLRU9RY3FoRGlBQUtBSUFLQUlVRVFnQUlBSWdBaWtEbUFWQ2dJQ0FnSUNBZ0FTRU53T1lCUXlZQXdzZ0F5QUJRUUFRRnlBQ0lBSXBBNWdGUW9DQWdJQ0FnQkNFTndPWUJReVhBd3NnQXlBQlFRQVFGeUFDSUFJcEE1Z0ZRb0NBZ0lDQWdBR0VOd09ZQlF5V0F3c2dBeUFCUVFBUUZ5QUNJQUlwQTVnRlFvQ0FnSUNBZ0FLRU53T1lCUXlWQXdzZ0F5QUJRUUFRRnlBQ0lBSXBBNWdGUW9DQWdJQ0FnQVNFTndPWUJReVVBd3NnQUNBQlFkV2hEaUFBS0FJQUtBS1FBUkVHQUNBQUlBRkIxYUVPRUtNQklBQWdBVUhWb1E0Z0FDZ0NBQ2dDUEJFR0FDQURJQUZCQUJBWERKTURDeUFBSUFGQmtIdHFJZ1JCMWFFT0lBQW9BZ0FvQXBBQkVRWUFJQUFnQkVIVm9RNFFvd0VnQUNBRVFkV2hEaUFBS0FJQUtBSThFUVlBSUFNZ0JFRUFFQmNNa2dNTElBTWdBVUVBRUJjZ0FpQUNLUU9ZQlVLQWdJQ0FFSVEzQTVnRkRKRURDeUFDSUFBZ0F5QUJRY3grYWtHd0FSQTlFT0lKUVJoMFFZQ0FnRGh4clNBQ0tRT1lCVUwvLy85SGc0UTNBNWdGSUFJZ0FTZ0N6QUUyQXJnR0RKQURDeUFBSUFFZ0FTZ0NIQkNVQkNBQ0lBQWdBeUFCUWZ4OGFrR3dBUkE5RU9JSlFSaDBRWUNBZ0RoeHJTQUNLUU9ZQlVMLy8vOUhnNFEzQTVnRklBSWdBVUY4YWlnQ0FEWUN1QVlnQWlBQktBSWNOZ0tnQmd5UEF3c2dBaUFCUWJCK2FpSUVLUU1JTndQNEJDQUNJQVFwQXdBM0EvQUVRUkFRUmlJRUVMTURJUVVnQWlBRU5nS01CU0FGRUxnSkRJNERDeUFDSUFGQjRIeHFJZ1FwQXdnM0EvZ0VJQUlnQkNrREFEY0Q4QVJCRUJCR0lnUVFzd01hSUFJZ0JEWUNqQVVnQUNBQlFjUithaUlFS0FJQUlnVWdCU2dDQUNnQ0FCRUFBQ0FFS0FJQUlBSkJrQU5xUWVDaERoQ09CaUFDSUFJcEE1QURJaHczQTZnQ0lBSWdIRGNEbUFFZ0FpZ0NqQVVnQWtHWUFXb1FoZ1lNalFNTElBSkI4QVJxSUFGQjRIeHFRZEFCRUQwYUlBSW9Bb3dGRUxnSkRJd0RDeUFDUWZBRWFpQUJRWkI3YWtIUUFSQTlHaUFBSUFGQnhINXFJZ1FvQWdBaUJTQUZLQUlBS0FJQUVRQUFJQVFvQWdBZ0FrR1FBMnBCNEtFT0VJNEdJQUlnQWlrRGtBTWlIRGNEb0FJZ0FpQWNOd09nQVNBQ0tBS01CU0FDUWFBQmFoQ0dCZ3lMQXdzZ0FpQUJLQUxNQVRZQ3ZBWU1pZ01MSUFKQkFEWUN2QVlNaVFNTElBSWdBVUY4YWlnQ0FEWUN2QVlNaUFNTFFSQVFSaUlFRUxNREdpQUNJQVEyQXJ3R0lBQWdBU2dDRkNJRUlBUW9BZ0FvQWdBUkFBQWdBU2dDRkNBQ1FaQURha0hyb1E0UWpnWWdBaUFDS1FPUUF5SWNOd09ZQWlBQ0lCdzNBNmdCSUFJb0Fyd0dJQUpCcUFGcUVJWUdESWNEQ3lBQ0lBRkJySDVxS0FJQU5nSzhCaUFBSUFFb0FoUWlCQ0FFS0FJQUtBSUFFUUFBSUFFb0FoUWdBa0dRQTJwQjY2RU9FSTRHSUFJZ0Fpa0RrQU1pSERjRGtBSWdBaUFjTndPd0FTQUNLQUs4QmlBQ1FiQUJhaENHQmd5R0F3c2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFEWUNqQVVNaFFNTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVFFMkFvd0ZESVFEQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VJTmdLTUJReURBd3NnQUNBQlFmcWhEaUFBS0FJQUtBSTRFUVlBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUWsyQW93RkRJSURDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU1OZ0tNQlF5QkF3c2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFQ0VHTU1nQU1MSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUUUyQW93RklBTkJBeEJqRFA4Q0N5QURJQUVnQUNnQ1RCQVlFQmNnQWtFQk5nS01CU0FEUVFRUVl3eitBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJERFlDakFVZ0EwRUNFR01NL1FJTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVF3MkFvd0ZJQU5CQXhCakRQd0NDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU1OZ0tNQlNBRFFRUVFZd3o3QWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQ0RZQ2pBVWdBMEVDRUdNTStnSUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRZzJBb3dGSUFOQkF4QmpEUGtDQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VJTmdLTUJTQURRUVFRWXd6NEFnc2dBQ0FCUVl1aURpQUFLQUlBS0FJNEVRWUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRazJBb3dGSUFOQkFoQmpEUGNDQ3lBQUlBRkJpNklPSUFBb0FnQW9BamdSQmdBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQ1RZQ2pBVWdBMEVERUdNTTlnSUxJQUFnQVVHTG9nNGdBQ2dDQUNnQ09CRUdBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUpOZ0tNQlNBRFFRUVFZd3oxQWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVDUVFJUVZBejBBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRURRUU1RVkF6ekFnc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRVFRUVFWQXp5QWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVDUVFJUVZBenhBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUNRUU1RVkF6d0Fnc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFQ1FRUVFWQXp2QWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVEUVFJUVZBenVBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRURRUU1RVkF6dEFnc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRFFRUVFWQXpzQWdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVFUVFJUVZBenJBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUVRUU1RVkF6cUFnc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRVFRUVFWQXpwQWdzZ0FDQUJRUVpCbzZJT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHam9nNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVTTZBSUxJQUFnQVVHcW9nNGdBQ2dDVEJBa0lBQW9BZ0FvQWtnUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkF6WUNqQVVNNXdJTElBQWdBVUcwb2c0Z0FDZ0NUQkFrSUFBb0FnQW9Bb0FCRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVFFMkFvd0ZET1lDQ3lBQUlBRkJ2cUlPSUFBb0Frd1FKQ0FBS0FJQUtBS0VBUkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VDTmdLTUJRemxBZ3NnQUNBQlFjaWlEaUFBS0FKTUVDUWdBQ2dDQUNnQ1lCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUVOZ0tNQlF6a0Fnc2dBQ0FCUWQyaURpQUFLQUpNRUNRZ0FDZ0NBQ2dDWUJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRk5nS01CUXpqQWdzZ0FDQUJRZlNpRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NWQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VHTmdLTUJRemlBZ3NnQUNBQlFZcWpEaUFBS0FKTUVDUWdBQ2dDQUNnQ1ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUhOZ0tNQlF6aEFnc2dBQ0FCUWFLakRpQUFLQUpNRUNRZ0FDZ0NBQ2dDZkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFSU5nS01CUXpnQWdzZ0FDQUJRYmlqRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NmQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VKTmdLTUJRemZBZ3NnQUNBQlFkQ2pEaUFBS0FKTUVDUWdBQ2dDQUNnQ2NCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUtOZ0tNQlF6ZUFnc2dBQ0FCUWQrakRpQUFLQUpNRUNRZ0FDZ0NBQ2dDY0JFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFTE5nS01CUXpkQWdzZ0FDQUJRUVpCOTZNT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVIM293NGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNFR01NM0FJTElBQWdBVUVHUWZlakRoQktJQUFvQWt3UUpFVUVRQ0FBSUFGQjk2TU9JQUFvQWdBb0FrQVJCZ0FMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUUkyQW93RklBTkJBeEJqRE5zQ0N5QUFJQUZCQmtIM293NFFTaUFBS0FKTUVDUkZCRUFnQUNBQlFmZWpEaUFBS0FJQUtBSkFFUVlBQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VDTmdLTUJTQURRUVFRWXd6YUFnc2dBQ0FCUVlXa0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDU0JFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRE5nS01CU0FEUVFJUVl3elpBZ3NnQUNBQlFZV2tEaUFBS0FKTUVDUWdBQ2dDQUNnQ1NCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUROZ0tNQlNBRFFRTVFZd3pZQWdzZ0FDQUJRWVdrRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NTQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VETmdLTUJTQURRUVFRWXd6WEFnc2dBQ0FCUVpla0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFQ0VHTU0xZ0lMSUFBZ0FVR1hwQTRnQUNnQ1RCQWtJQUFvQWdBb0FvQUJFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUUUyQW93RklBTkJBeEJqRE5VQ0N5QUFJQUZCbDZRT0lBQW9Ba3dRSkNBQUtBSUFLQUtBQVJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFQk5nS01CU0FEUVFRUVl3elVBZ3NnQUNBQlFhaWtEaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNFR01NMHdJTElBQWdBVUdvcEE0Z0FDZ0NUQkFrSUFBb0FnQW9Bb1FCRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVFJMkFvd0ZJQU5CQXhCakROSUNDeUFBSUFGQnFLUU9JQUFvQWt3UUpDQUFLQUlBS0FLRUFSRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUNOZ0tNQlNBRFFRUVFZd3pSQWdzZ0FDQUJRYm1rRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NZQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VFTmdLTUJTQURRUUlRWXd6UUFnc2dBQ0FCUWJta0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDWUJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRU5nS01CU0FEUVFNUVl3elBBZ3NnQUNBQlFibWtEaUFBS0FKTUVDUWdBQ2dDQUNnQ1lCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUVOZ0tNQlNBRFFRUVFZd3pPQWdzZ0FDQUJRZFdrRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NWQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VHTmdLTUJTQURRUUlRWXd6TkFnc2dBQ0FCUWRXa0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDVkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFR05nS01CU0FEUVFNUVl3ek1BZ3NnQUNBQlFkV2tEaUFBS0FKTUVDUWdBQ2dDQUNnQ1ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUdOZ0tNQlNBRFFRUVFZd3pMQWdzZ0FDQUJRZktrRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NmQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VJTmdLTUJTQURRUUlRWXd6S0Fnc2dBQ0FCUWZLa0RpQUFLQUpNRUNRZ0FDZ0NBQ2dDZkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFSU5nS01CU0FEUVFNUVl3ekpBZ3NnQUNBQlFmS2tEaUFBS0FKTUVDUWdBQ2dDQUNnQ2ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUlOZ0tNQlNBRFFRUVFZd3pJQWdzZ0FDQUJRWStsRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NjQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VLTmdLTUJTQURRUUlRWXd6SEFnc2dBQ0FCUVkrbERpQUFLQUpNRUNRZ0FDZ0NBQ2dDY0JFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFS05nS01CU0FEUVFNUVl3ekdBZ3NnQUNBQlFZK2xEaUFBS0FKTUVDUWdBQ2dDQUNnQ2NCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUtOZ0tNQlNBRFFRUVFZd3pGQWdzZ0FDQUJRYVdsRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NZQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VGTmdLTUJTQURRUUlRWXd6RUFnc2dBQ0FCUWFXbERpQUFLQUpNRUNRZ0FDZ0NBQ2dDWUJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRk5nS01CU0FEUVFNUVl3ekRBZ3NnQUNBQlFhV2xEaUFBS0FKTUVDUWdBQ2dDQUNnQ1lCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUZOZ0tNQlNBRFFRUVFZd3pDQWdzZ0FDQUJRY09sRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NWQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VITmdLTUJTQURRUUlRWXd6QkFnc2dBQ0FCUWNPbERpQUFLQUpNRUNRZ0FDZ0NBQ2dDVkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFSE5nS01CU0FEUVFNUVl3ekFBZ3NnQUNBQlFjT2xEaUFBS0FKTUVDUWdBQ2dDQUNnQ1ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUhOZ0tNQlNBRFFRUVFZd3kvQWdzZ0FDQUJRZUtsRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NmQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VKTmdLTUJTQURRUUlRWXd5K0Fnc2dBQ0FCUWVLbERpQUFLQUpNRUNRZ0FDZ0NBQ2dDZkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFSk5nS01CU0FEUVFNUVl3eTlBZ3NnQUNBQlFlS2xEaUFBS0FKTUVDUWdBQ2dDQUNnQ2ZCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUpOZ0tNQlNBRFFRUVFZd3k4QWdzZ0FDQUJRWUdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NjQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VMTmdLTUJTQURRUUlRWXd5N0Fnc2dBQ0FCUVlHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDY0JFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFTE5nS01CU0FEUVFNUVl3eTZBZ3NnQUNBQlFZR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2NCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUxOZ0tNQlNBRFFRUVFZd3k1QWdzZ0FDQUJRUVpCb0tZT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHZ3BnNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNRUUlRVkF5NEFnc2dBQ0FCUVFaQm9LWU9FRW9nQUNnQ1RCQWtSUVJBSUFBZ0FVR2dwZzRnQUNnQ0FDZ0NRQkVHQUFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVEUVFNUVZBeTNBZ3NnQUNBQlFRWkJvS1lPRUVvZ0FDZ0NUQkFrUlFSQUlBQWdBVUdncGc0Z0FDZ0NBQ2dDUUJFR0FBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRVFRUVFWQXkyQWdzZ0FDQUJRUVpCb0tZT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHZ3BnNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNRUUlRVkF5MUFnc2dBQ0FCUVFaQm9LWU9FRW9nQUNnQ1RCQWtSUVJBSUFBZ0FVR2dwZzRnQUNnQ0FDZ0NRQkVHQUFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVDUVFNUVZBeTBBZ3NnQUNBQlFRWkJvS1lPRUVvZ0FDZ0NUQkFrUlFSQUlBQWdBVUdncGc0Z0FDZ0NBQ2dDUUJFR0FBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFQ1FRUVFWQXl6QWdzZ0FDQUJRUVpCb0tZT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHZ3BnNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRURRUUlRVkF5eUFnc2dBQ0FCUVFaQm9LWU9FRW9nQUNnQ1RCQWtSUVJBSUFBZ0FVR2dwZzRnQUNnQ0FDZ0NRQkVHQUFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVEUVFNUVZBeXhBZ3NnQUNBQlFRWkJvS1lPRUVvZ0FDZ0NUQkFrUlFSQUlBQWdBVUdncGc0Z0FDZ0NBQ2dDUUJFR0FBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRFFRUVFWQXl3QWdzZ0FDQUJRUVpCb0tZT0VFb2dBQ2dDVEJBa1JRUkFJQUFnQVVHZ3BnNGdBQ2dDQUNnQ1FCRUdBQXNnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUVRUUlRVkF5dkFnc2dBQ0FCUVFaQm9LWU9FRW9nQUNnQ1RCQWtSUVJBSUFBZ0FVR2dwZzRnQUNnQ0FDZ0NRQkVHQUFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVFUVFNUVZBeXVBZ3NnQUNBQlFRWkJvS1lPRUVvZ0FDZ0NUQkFrUlFSQUlBQWdBVUdncGc0Z0FDZ0NBQ2dDUUJFR0FBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRVFRUVFWQXl0QWdzZ0FDQUJRYTZtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NSQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VETmdLTUJTQURRUUpCQWhCVURLd0NDeUFBSUFGQnJxWU9JQUFvQWt3UUpDQUFLQUlBS0FKRUVRUUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRTTJBb3dGSUFOQkEwRURFRlFNcXdJTElBQWdBVUd1cGc0Z0FDZ0NUQkFrSUFBb0FnQW9Ba1FSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQXpZQ2pBVWdBMEVFUVFRUVZBeXFBZ3NnQUNBQlFhNm1EaUFBS0FKTUVDUWdBQ2dDQUNnQ1JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRUROZ0tNQlNBRFFRSkJBaEJVREtrQ0N5QUFJQUZCcnFZT0lBQW9Ba3dRSkNBQUtBSUFLQUpFRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVFNMkFvd0ZJQU5CQWtFREVGUU1xQUlMSUFBZ0FVR3VwZzRnQUNnQ1RCQWtJQUFvQWdBb0FrUVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBellDakFVZ0EwRUNRUVFRVkF5bkFnc2dBQ0FCUWE2bURpQUFLQUpNRUNRZ0FDZ0NBQ2dDUkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFRE5nS01CU0FEUVFOQkFoQlVES1lDQ3lBQUlBRkJycVlPSUFBb0Frd1FKQ0FBS0FJQUtBSkVFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUU0yQW93RklBTkJBMEVERUZRTXBRSUxJQUFnQVVHdXBnNGdBQ2dDVEJBa0lBQW9BZ0FvQWtRUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkF6WUNqQVVnQTBFRFFRUVFWQXlrQWdzZ0FDQUJRYTZtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NSQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VETmdLTUJTQURRUVJCQWhCVURLTUNDeUFBSUFGQnJxWU9JQUFvQWt3UUpDQUFLQUlBS0FKRUVRUUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRTTJBb3dGSUFOQkJFRURFRlFNb2dJTElBQWdBVUd1cGc0Z0FDZ0NUQkFrSUFBb0FnQW9Ba1FSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQXpZQ2pBVWdBMEVFUVFRUVZBeWhBZ3NnQUNBQlFjQ21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2dBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUNRUUlRVkF5Z0Fnc2dBQ0FCUWNDbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRFFRTVFWQXlmQWdzZ0FDQUJRY0NtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NnQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVFUVFRUVZBeWVBZ3NnQUNBQlFjQ21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2dBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUNRUUlRVkF5ZEFnc2dBQ0FCUWNDbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFQ1FRTVFWQXljQWdzZ0FDQUJRY0NtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NnQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVDUVFRUVZBeWJBZ3NnQUNBQlFjQ21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2dBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRURRUUlRVkF5YUFnc2dBQ0FCUWNDbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRFFRTVFWQXlaQWdzZ0FDQUJRY0NtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NnQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVEUVFRUVZBeVlBZ3NnQUNBQlFjQ21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2dBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBVFlDakFVZ0EwRUVRUUlRVkF5WEFnc2dBQ0FCUWNDbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDZ0FFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFUWUNqQVVnQTBFRVFRTVFWQXlXQWdzZ0FDQUJRY0NtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NnQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQVRZQ2pBVWdBMEVFUVFRUVZBeVZBZ3NnQUNBQlFkR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNRUUlRVkF5VUFnc2dBQ0FCUWRHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDaEFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRFFRTVFWQXlUQWdzZ0FDQUJRZEdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NoQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVFUVFRUVZBeVNBZ3NnQUNBQlFkR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUNRUUlRVkF5UkFnc2dBQ0FCUWRHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDaEFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFQ1FRTVFWQXlRQWdzZ0FDQUJRZEdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NoQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVDUVFRUVZBeVBBZ3NnQUNBQlFkR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRURRUUlRVkF5T0Fnc2dBQ0FCUWRHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDaEFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRFFRTVFWQXlOQWdzZ0FDQUJRZEdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NoQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVEUVFRUVZBeU1BZ3NnQUNBQlFkR21EaUFBS0FKTUVDUWdBQ2dDQUNnQ2hBRVJCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJBallDakFVZ0EwRUVRUUlRVkF5TEFnc2dBQ0FCUWRHbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDaEFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkFqWUNqQVVnQTBFRVFRTVFWQXlLQWdzZ0FDQUJRZEdtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NoQUVSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCQWpZQ2pBVWdBMEVFUVFRUVZBeUpBZ3NnQXlBQklBQW9Ba3dRR0JBWElBSkJFVFlDakFVTWlBSUxJQUFnQVVIaXBnNGdBQ2dDQUNnQ2xBRVJCZ0FnQXlBQklBQW9Ba3dRR0JBWElBSkJEVFlDakFVTWh3SUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUJRUUJCQUVFQUVFOE1oZ0lMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFCQkFFRUFFRThNaFFJTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFRFFRQkJBRUVBRUU4TWhBSUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUVRUUJCQUVFQUVFOE1nd0lMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFCQkFVRUFFRThNZ2dJTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFRVFRQkJBVUVBRUU4TWdRSUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUNRUUZCQUVFQUVFOE1nQUlMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFGQkFVRUFFRThNL3dFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFQlFRQkJBVUVBRUU4TS9nRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUJRUUZCQUVFQUVFOE0vUUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVCUVFGQkFVRUFFRThNL0FFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFRVFRRkJBRUVBRUU4TSt3RUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUVRUUZCQVVFQUVFOE0rZ0VMSUFBZ0FVSDNwZzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUUZCQUVFQVFRQVFUd3o1QVFzZ0FDQUJRZmVtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQWtFQVFRQkJBQkJQRFBnQkN5QUFJQUZCOTZZT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFRFFRQkJBRUVBRUU4TTl3RUxJQUFnQVVIM3BnNGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRUkJBRUVBUVFBUVR3ejJBUXNnQUNBQlFmZW1EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBVUVBUVFGQkFCQlBEUFVCQ3lBQUlBRkI5NllPSUFBb0Frd1FKQ0FBS0FJQUtBSnNFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBMEVDUVFCQkFVRUFFRThNOUFFTElBQWdBVUgzcGc0Z0FDZ0NUQkFrSUFBb0FnQW9BbXdSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VEUVFSQkFFRUJRUUFRVHd6ekFRc2dBQ0FCUWZlbURpQUFLQUpNRUNRZ0FDZ0NBQ2dDYkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFOQkFVRUJRUUJCQUJCUERQSUJDeUFBSUFGQjk2WU9JQUFvQWt3UUpDQUFLQUlBS0FKc0VRUUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkEwRUNRUUZCQUVFQUVFOE04UUVMSUFBZ0FVSDNwZzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUUZCQVVFQlFRQVFUd3p3QVFzZ0FDQUJRZmVtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQWtFQlFRRkJBQkJQRE84QkN5QUFJQUZCOTZZT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFRVFRRkJBRUVBRUU4TTdnRUxJQUFnQVVIM3BnNGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRUkJBVUVCUVFBUVR3enRBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUUZCQUVFQVFRQVFUd3pzQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFKQkFFRUFRUUFRVHd6ckFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRTkJBRUVBUVFBUVR3enFBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUVJCQUVFQVFRQVFUd3pwQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFKQkFVRUFRUUFRVHd6b0FRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRSkJBRUVBUVFBUVR3em5BUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUpRUU5CQUVFQVFRQVFUd3ptQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFSQkFFRUFRUUFRVHd6bEFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRRkJBVUVBUVFBUVR3emtBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUVJCQVVFQVFRQVFUd3pqQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFGQkFFRUFRUUFRVHd6aUFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRRkJBVUVBUVFBUVR3emhBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUpRUVJCQVVFQVFRQVFUd3pnQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VCUVFSQkFVRUFFSEFNM3dFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ0VFRVFRRkJBQkJ3RE40QkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFsQkJFRUJRUUFRY0F6ZEFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRSkJBVUVBUVFBUVR3emNBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUJRUUpCQUVFQUVIQU0yd0VMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVEUVFCQkFCQndETm9CQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQWtFQlFRQVFjQXpaQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VCUVFSQkFFRUFFSEFNMkFFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ0VFQ1FRQkJBQkJ3RE5jQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFoQkEwRUFRUUFRY0F6V0FRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRUkJBRUVBRUhBTTFRRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNFRUNRUUZCQUJCd0ROUUJDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRbEJBa0VBUVFBUWNBelRBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUpRUU5CQUVFQUVIQU0wZ0VMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVFUVFCQkFCQndETkVCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWxCQWtFQlFRQVFjQXpRQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VBRU9jT0RNOEJDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRVE1dzRNemdFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFRlFRQkJBRUVBRUU4TXpRRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUZRUUJCQVVFQUVFOE16QUVMSUFBZ0FVSDNwZzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUVZCQUVFQVFRQVFUd3pMQVFzZ0FDQUJRZmVtRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQlVFQVFRRkJBQkJQRE1vQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFoQkJVRUFRUUJCQUJCUERNa0JDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRbEJCVUVBUVFCQkFCQlBETWdCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQmtFQVFRQkJBQkJQRE1jQkN5QUFJQUZCOTZZT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFR1FRQkJBRUVBRUU4TXhnRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNFRUdRUUJCQUVFQUVFOE14UUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVHUVFCQkFFRUFFRThNeEFFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFQ1FRQkJBRUVCRUU4TXd3RUxJQUFnQVVIM3BnNGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRSkJBRUVBUVFFUVR3ekNBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUUpCQUVFQVFRRVFUd3pCQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFKQkFFRUFRUUVRVHd6QUFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFQlFRSkJBVUVBUVFFUVR3eS9BUXNnQUNBQlFmZW1EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBa0VCUVFCQkFSQlBETDRCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWhCQWtFQlFRQkJBUkJQREwwQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFsQkFrRUJRUUJCQVJCUERMd0JDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRkJBVUVBUVFBUWNBeTdBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBVUVBUVFBUWNBeTZBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBa0VBUVFBUWNBeTVBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJBMEVBUVFBUWNBeTRBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJCRUVBUVFBUWNBeTNBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUJRUUZCQVVFQUVIQU10Z0VMSUFBZ0FVR0twdzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUUZCQVVFQUVIQU10UUVMSUFBZ0FVR0twdzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUUpCQVVFQUVIQU10QUVMSUFBZ0FVR0twdzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUVJCQVVFQUVIQU1zd0VMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDRUVCUVFCQkFCQndETElCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWhCQVVFQlFRQVFjQXl4QVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFGQkFFRUFFSEFNc0FFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ1VFQlFRRkJBQkJ3REs4QkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFGQkJVRUFRUUFRY0F5dUFRc2dBQ0FCUVlxbkRpQUFLQUpNRUNRZ0FDZ0NBQ2dDYkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFOQkJVRUFRUUFRY0F5dEFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRVkJBRUVBRUhBTXJBRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNVRUZRUUJCQUJCd0RLc0JDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRkJCa0VBUVFBUWNBeXFBUXNnQUNBQlFZcW5EaUFBS0FKTUVDUWdBQ2dDQUNnQ2JCRUVBQ0FESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRTkJCa0VBUVFBUWNBeXBBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUVpCQUVFQUVIQU1xQUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVHUVFCQkFCQndES2NCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQWtFQVFRRVFjQXltQVFzZ0FDQUJRWXFuRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQWtFQVFRRVFjQXlsQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFKQkFFRUJFSEFNcEFFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ1VFQ1FRQkJBUkJ3REtNQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFGQkFrRUJRUUVRY0F5aUFRc2dBQ0FCUVlxbkRpQUFLQUpNRUNRZ0FDZ0NBQ2dDYkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFOQkFrRUJRUUVRY0F5aEFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRSkJBVUVCRUhBTW9BRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNVRUNRUUZCQVJCd0RKOEJDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRkJBVUVBUVFCQkFCQnZESjRCQ3lBQUlBRkJuYWNPSUFBb0Frd1FKQ0FBS0FJQUtBSnNFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBMEVCUVFCQkFFRUFFRzhNblFFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ0VFQlFRQkJBRUVBRUc4TW5BRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNVRUJRUUJCQUVFQUVHOE1td0VMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFCQkFFRUFFRzhNbWdFTElBQWdBVUdkcHc0Z0FDZ0NUQkFrSUFBb0FnQW9BbXdSQkFBZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VEUVFKQkFFRUFRUUFRYnd5WkFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRSkJBRUVBUVFBUWJ3eVlBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUpRUUpCQUVFQVFRQVFid3lYQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VCUVFOQkFFRUFRUUFRYnd5V0FRc2dBQ0FCUVoybkRpQUFLQUpNRUNRZ0FDZ0NBQ2dDYkJFRUFDQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFOQkEwRUFRUUJCQUJCdkRKVUJDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRaEJBMEVBUVFCQkFCQnZESlFCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWxCQTBFQVFRQkJBQkJ2REpNQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFGQkJVRUFRUUJCQUJCdkRKSUJDeUFBSUFGQm5hY09JQUFvQWt3UUpDQUFLQUlBS0FKc0VRUUFJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkEwRUZRUUJCQUVFQUVHOE1rUUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDRUVGUVFCQkFFRUFFRzhNa0FFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ1VFRlFRQkJBRUVBRUc4TWp3RUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkFVRUVRUUJCQUVFQUVHOE1qZ0VMSUFBZ0FVR2RwdzRnQUNnQ1RCQWtJQUFvQWdBb0Ftd1JCQUFnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRURRUVJCQUVFQVFRQVFid3lOQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFSQkFFRUFRUUFRYnd5TUFRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRUkJBRUVBUVFBUWJ3eUxBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUJRUVpCQUVFQVFRQVFid3lLQVFzZ0FDQUJRWjJuRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQmtFQVFRQkJBQkJ2RElrQkN5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFoQkJrRUFRUUJCQUJCdkRJZ0JDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRbEJCa0VBUVFCQkFCQnZESWNCQ3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQVVFQlFRQkJBQkJ2RElZQkN5QUFJQUZCbmFjT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFQlFRRkJBRUVBRUc4TWhRRUxJQU1nQVNBQUtBSk1FQmdRRnlBQ1FRNDJBb3dGSUFaQkNFRUJRUUZCQUVFQUVHOE1oQUVMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVCUVFGQkFFRUFFRzhNZ3dFTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQVVFQ1FRRkJBRUVBRUc4TWdnRUxJQUFnQVVHZHB3NGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRSkJBVUVBUVFBUWJ3eUJBUXNnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUlRUUpCQVVFQVFRQVFid3lBQVFzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VKUVFKQkFVRUFRUUFRYnd4L0N5QURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFGQkJFRUJRUUJCQUJCdkRINExJQUFnQVVHZHB3NGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFRFFRUkJBVUVBUVFBUWJ3eDlDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRaEJCRUVCUVFCQkFCQnZESHdMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJDVUVFUVFGQkFFRUFFRzhNZXdzZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VCUVFKQkFFRUFRUUVRYnd4NkN5QUFJQUZCbmFjT0lBQW9Ba3dRSkNBQUtBSUFLQUpzRVFRQUlBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQTBFQ1FRQkJBRUVCRUc4TWVRc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSVFRSkJBRUVBUVFFUWJ3eDRDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRbEJBa0VBUVFCQkFSQnZESGNMSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVDUVFGQkFFRUJFRzhNZGdzZ0FDQUJRWjJuRGlBQUtBSk1FQ1FnQUNnQ0FDZ0NiQkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUU5CQWtFQlFRQkJBUkJ2REhVTElBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ0VFQ1FRRkJBRUVCRUc4TWRBc2dBeUFCSUFBb0Frd1FHQkFYSUFKQkRqWUNqQVVnQmtFSlFRSkJBVUVBUVFFUWJ3eHpDeUFESUFFZ0FDZ0NUQkFZRUJjZ0FrRU9OZ0tNQlNBR1FRRkJBa0VBUVFCQkFCQlBJQUlnQWlnQ2tBVkJnSUNBZ0FKeU5nS1FCUXh5Q3lBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUUZCQWtFQVFRQkJBQkJQSUFJZ0FpZ0NrQVZCZ0lDQWdBUnlOZ0tRQlF4eEN5QUFJQUZCQkVHdXB3NFF2d0lnQXlBQklBQW9Ba3dRR0JBWElBSkJEallDakFVZ0JrRUJRUUFRMmdNTWNBc2dBQ0FCUVFSQnJxY09FTDhDSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBVUVCRU5vRERHOExJQUFnQVVHOHB3NGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBQ0FCUVFSQnJxY09FTDhDSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBMEVBRU5vRERHNExJQUFnQVVHOHB3NGdBQ2dDVEJBa0lBQW9BZ0FvQW13UkJBQWdBQ0FCUVFSQnJxY09FTDhDSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUTQyQW93RklBWkJBMEVCRU5vRERHMExJQUFnQVVFRVFhNm5EaEMvQWlBRElBRWdBQ2dDVEJBWUVCY2dBa0VPTmdLTUJTQUdRUWhCQUJEYUF3eHNDeUFBSUFGQkJFR3VwdzRRdndJZ0F5QUJJQUFvQWt3UUdCQVhJQUpCRGpZQ2pBVWdCa0VJUVFFUTJnTU1hd3NnQUNBQlFRUkJycWNPRUw4Q0lBTWdBU0FBS0FKTUVCZ1FGeUFDUVE0MkFvd0ZJQVpCQ1VFQUVOb0RER29MSUFBZ0FVRUVRYTZuRGhDL0FpQURJQUVnQUNnQ1RCQVlFQmNnQWtFT05nS01CU0FHUVFsQkFSRGFBd3hwQ3lBQUlBRkIxYWNPSUFBb0Frd1FKQ0FBS0FJQUtBS0lBUkVFQUNBRElBRWdBQ2dDVEJBWUVCY2dBa0VCTmdLTUJTQUNJQUl2QVp3R1FZQWdjanNCbkFZTWFBc2dBQ0FCUWVDbkRpQUFLQUpNRUNRZ0FDZ0NBQ2dDakFFUkJBQWdBeUFCSUFBb0Frd1FHQkFYSUFKQkNEWUNqQVVnQWlBQ0x3R2NCa0dBSUhJN0Fad0dER2NMSUFBZ0FVSHJwdzRnQUNnQ1RCQWtJQUFvQWdBb0Fvd0JFUVFBSUFNZ0FTQUFLQUpNRUJnUUZ5QUNRUWsyQW93RklBSWdBaThCbkFaQmdDQnlPd0djQmd4bUN5QURJQUZCSEdwQnNBRVFQU0VFSUFJZ0FDZ0NUQkFZclNBQ0tRT1lCVUpBZzRRM0E1Z0ZJQUFnQkJDNkR3eGxDeUFCS0FJWUlnUWdCQ2dDQUNnQ0pCRUFBQ0lFQkVBZ0JDQUVLQUlBS0FJd0VRQUFJUVFnQXlBQklBQW9Ba3dRR0JBWElBSWdCRFlDcEFZZ0FrRVBOZ0tNQlF4bEN5QUFJQUZCOXFjT0lBRW9BaEFRRTBHYW1RNUJBQ0FBS0FJQUtBS2dBUkVDQUF4a0N5QUFJQUZCQVVHQ0FVRUFRWW1vRGhBb0lBTWdBU0FBS0FKTUVCZ1FGeUFBSUJOQkF4REFCd3hqQ3lBQUlBRkJBVUdDQVVFQVFhT29EaEFvSUFNZ0FTQUFLQUpNRUJnUUZ5QUFJQk5CQWhEQUJ3eGlDeUFBSUFGQkFVR0NBVUVBUWIrb0RoQW9JQU1nQVNBQUtBSk1FQmdRRnlBQUlCTkJBUkRBQnd4aEN5QUFJQUZCNEh4cUVOa0pER0FMSUFBZ0FVSEFlV29pQlVIVUFCQkdJZ2NnQVVITWZtb29BZ0FnQVVIUWVXb2lCQ2dDQUJEbURpSUpFTVFQUVlBQkVFWWlDaUFFS0FJQUlBbEJBUkR0QWhvZ0FDZ0NUQ0FLRU93Q1JRUkFJQUFnQlVIWXFBNGdCQ2dDQUJBVFFlV29Ea0VBSUFBb0FnQW9BcUFCRVFJQUN5QURJQUZCOEhkcVFRQVFGeUFDSUFjMkFxUUdJQUpCRHpZQ2pBVWdBQ0FBS0FKWVFYOXFOZ0pZREY4TElBQWdBVUd3Zm1vUTJRa01YZ3RCMUFBUVJpSUVJQUZCekg1cUtBSUFJQUpCa0FOcVFacVpEaEFpSWdVUTVnNGFJQVVRR1JvZ0F5QUJRY0I1YWtFQUVCY2dBaUFFTmdLa0JpQUNRUTgyQW93RklBQWdBQ2dDV0VGL2FqWUNXQXhkQ3lBQ0lBRW9BaHcyQW93RkRGd0xJQUlnQVVITWZtb29BZ0EyQW93RlFRQWhCU0FCS0FJY0VEZEZEVnNEUUNBQ0tBS01CUkEzSVFrZ0FpZ0NqQVVoQjBFQUlRUWdDUVJBQTBBZ0J5QUVFRGdvQWdBaUJ5QUhLQUlBS0FJWUVRQUFJQUVvQWh3Z0JSQTRLQUlBSWdjZ0J5Z0NBQ2dDR0JFQUFCQ1lBZ1JBSUFBZ0FTZ0NIQ0FGRURoQkJHcEI3S2dPUVpxWkRpQUJLQUljSUFVUU9DZ0NBQ0lISUFjb0FnQW9BaGdSQUFBUUUwRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQ0tBS01CUkEzSVFrZ0FpZ0NqQVVoQnlBRVFRRnFJZ1FnQ1VrTkFBc0xJQWNnQVNnQ0hDQUZFRGdRcVFjZ0JVRUJhaUlGSUFFb0Fod1FOMGtOQUFzTVd3c0NmMEYrSUExQmZrWU5BQnBCQWlBTlFaa0ZTdzBBR2lBTlFRRjBRZURYQzJvdkFRQUxJUTRDUUNBUVFRTkxEUUFDUUFKQUlCQkJBV3NPQXdJQ0FRQUxBa0FnQWtIb0Eyb2dBa0hzQTJvZ0NDQU9FT1FPSWdWQkFVc0VRRUdPdVE0aEVBd0JDeUFGUVFGckJFQWdBQ0FDS0FMc0F4Q1hCZ3dEQ3lBQ0tBTHNBeUlGSUFKQjhBTnFSd1JBSUFVUUtnc2dBaUFDS0FMb0F4Q2JBU0lRTmdMc0F5QVFSUVJBSUFKQmdBRTJBdWdESUFJZ0FrSHdBMm8yQXV3RElBQkJqcmtPRUpjR0RBUUxJQUpCNkFOcUlBSkI3QU5xSUFnZ0RoRGtEaUVGQ3lBQUlCQVFsd1lnQlVFQ1JnMENEQUVMSUExQkFFd0VRQ0FORFFGQkFDRU5EQVFMUVp1NURpQU9FS2dIUVg0aERRc0RRQUpBQWtBZ0JFSC8vd054UWJ2OEEwWU5BQ0FFUVJCMFFSQjFJZ1JCZjBnTkFDQUVRUUZxUVFGMElnUkJzT0lMYWk4QkFFRUJSdzBBSUFSQjhQUU1haTRCQUNJRVFRQktEUUVMSUFnZ0RFWUVRQ0FNSVFnTUJBdEJyYmtPSUFkQkFYUkJ3TGtPYWk4QkFCQ29CeUFJUVg1cUlnZ3VBUUFoQjBHTTlCSW9BZ0FFUUNBTUlBZ1F0d2tMSUFGQnNINXFJUUVnQjBFQmRFR0F6QXRxTHdFQUlRUU1BUXNMSUFSQi8vOERjU0VISUFGQjBBRnFJZ0VnQWtIUXpnSnFRZEFCRUQwYVFRTWhFRUdNOUJJb0FnQkZEVnNnQWtHa2h3NDJBZ0FnQzBHVTRnc2dBaERNQWlBTElBZEJBWFJCd0xrT2FpOEJBQkRTQkVFS0lBc1F3QU1NV3dzZ0FFSHV4QTRRbHdZTElBMUJma1lOQWtFQ0lBMUJtUVZMRFFFYUN5QU5RUUYwUWVEWEMyb3ZBUUFMRUtnSEMwR005QklvQWdBRVFDQU1JQWdRdHdrTElBZ2dERWNFUUFOQVFaM0ZEaUFJTGdFQVFRRjBRY0M1RG1vdkFRQVFxQWNnQVVHd2Ztb2hBU0FJUVg1cUlnZ2dERWNOQUFzTElBSkJ3TXNDYWlBTVJ3UkFJQXdRS2dzZ0FpZ0M3QU1pQUNBQ1FmQURha2NFUUNBQUVDb0xJQUpCb05BQ2FpUUFEd3NnQWlBQUlBRkJvSHRxS0FJQUlBRkJ4SDVxS0FJQUVQd1FOZ0tFQlF4VUN5QUNJQUVvQWhBUS9oQTJBb1FGREZNTElBSWdBVUgwZkdvb0FnQWdBU2dDRkJEN0VEWUNoQVVNVWdzZ0FpQUJLQUlVTmdLRUJReFJDeUFDSUFGQjlIeHFLQUlBTmdLRUJTQUFJQUZCd0hscVFRRkJyS3dPUVlPZ0RpQUFLQUlBS0FJVUVRZ0FERkFMQWtBZ0FDZ0NZQ0lFSUFRb0FnQW9BaHdSQUFCRkRRQWdBQzBBWkEwQUlBQWdBVUhnZkdwQmg2d09RWnFaRGlBQlFmeDhhaWdDQUNJRUlBUW9BZ0FvQWd3UkFBQVFFMEVBSUFBb0FnQW9BcUFCRVFJQUN5QUFLQUpNSUJJUXd3UWdBaUFBS0FJb0lBRkI0SHhxSWdRb0FoUWdBU2dDRkJDakF5SUZOZ0tFQlNBQUtBSW9HaUFFS0FJY0lnY2dCeWdDQUNnQ01CRUFBQ0VISUFJZ0JDa0NDRGNEeUFFZ0FpQUVLUUlBTndQQUFTQUZRUVFnQnlBQ1FjQUJhaENrQWhvZ0FpZ0NoQVVpQlNBRktBSUFLQUlZRVFBQUlnVWdBa0dRQTJvZ0JDZ0NIQ0lFSUFRb0FnQW9BaGdSQUFBUUV4QWlJZ1FnQlNnQ0FDZ0N4QUVSQVFBZ0JCQVpHaUFDS0FLRUJTSUVJQVFvQWdBb0FoZ1JBQUFnQUMwQWlBRTZBS0VCSUFJb0FvUUZJZ1FnQkNnQ0FDZ0NHQkVBQUNBQUxRQ0pBVG9Bb2dFZ0FpZ0NoQVVpQkNBRUtBSUFLQUlZRVFBQUlRUkJFQkJHSWdVUTNRc2hCeUFFSUFVMkFxUUJJQWNnR3hDekVneFBDeUFCSUFBZ0FTQUJLQUljUVFBUThna2lCRFlDSENBQklBQWdBU0FFRU9vUE5nSVVERTRMSUFBZ0FVRjNRZktyRGhCS0lBQWdBVUYzUWN3RFFRQkI4cXNPRUNnZ0FrRUFOZ0tFQlF4TkN5QUNJQUVvQWhRMkFvUUZERXdMSUFJZ0FTZ0NGRFlDaEFVTVN3c2dBU2dDRkNJRVJRMUtJQUlnQUNnQ0tDQUJRY1IrYWlnQ0FDQUVFS01ESWdRMkFvUUZJQUFvQWlnZ0JCRGpEZ3hLQ3lBQ0lBRW9BaFFpQkRZQ2hBVWdBQ2dDS0NBRUVPTU9ERWtMSUFBZ0FVR3dmbW9pQkVFRVFlcXJEaEMvQWlBQ0lBQW9BaWhCd2dNZ0JCRDJBellDaEFVTVNBc2dBaUFBSUFGQjRIeHFJQUZCeEg1cUtBSUFFTlFQTmdLRUJReEhDeUFDSUFBb0FpaEJ3d01nQVVHd2Ztb2lCQkQyQXpZQ2hBVWdBQ2dDWUNJRklBVW9BZ0FvQWh3UkFBQUVRQ0FBSUFSQnZhc09RZU9yRGtHYW1RNUJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FDMEFzQVZGRFVZZ0FFRUJPZ0JsREVZTElBQW9BbFJCQUNBV0VORUVhMFlFUUNBQUlBRkJzSDVxUVl5ckRrR2FtUTVCbXBrT1FRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJZ0FDZ0NLRUhFQXlBQlFiQithaEQyQXpZQ2hBVU1SUXNnQUNnQ1ZFRUFUQVJBSUFBZ0FVR3dmbXBCNDZvT1FacVpEa0dhbVE1QkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlBQUtBSW9RY1VESUFGQnNINXFFUFlETmdLRUJReEVDeUFDSUFGQjlIeHFLQUlBTmdLRUJTQUNJQUVvQWhRMkFvZ0ZERU1MSUFGQnhINXFLQUlBSVFRZ0FrRUFOZ0tJQlNBQ0lBUTJBb1FGREVJTElBSkJBRFlDaEFVTVFRc2dBaUFCS0FJVU5nS0VCUXhBQ3lBQ0lBRW9BaFEyQW9RRkREOExJQUlnQVNnQ0ZEWUNoQVVNUGdzZ0FDZ0NUQ0FTRU1NRUlBSWdBQ2dDS0NBQlFhUjdhaWdDQUNBQlFmQjNhaEMyRlRZQ2hBVWdBQ2dDS0NBQktBSVVJQUZCOUh4cUtBSUFJQUZCK0h4cUtBSUFRUUVnQVVHZ2Rtb2lCQkNZQ0NFRklBQW9BcmdKTFFBQVJRUkFJQUFnQkNBQlFaQjdhaWdDRkNBRkVMa1BDeUFDSUFBb0FpZ2dBaWdDaEFVZ0JTQUVFTjRDSWdRMkFvUUZJQVFnQkNnQ0FDZ0NHQkVBQUNJRVFRRWdCQ2dDQUNnQ3VBRVJBUUFnQUNBQUtBSlVRWDlxTmdKVUlBQWdBQ2dDVUVGL2FqWUNVQ0FBSUFBb0FseEJmMm8yQWx3TVBRc2dBQ2dDVEJDTUJDQUFJQUFvQWxSQkFXbzJBbFFnQUNBQUtBSlFRUUZxTmdKUUlBQWdBQ2dDWEVFQmFqWUNYQXc4Q3lBQUtBSzRDUzBBQVVVRVFDQUFJQUZCMEhScVFjYXFEa0c3cWc1Qm1wa09RUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQWdBU0FCUWZSOGFpSUVLQUlBRUpJR0lBSWdBQ2dDS0NBQlFZUjRhaWdDQUNBRUtBSUFRUUJCQUNBQlFjQjVhaENZQ0RZQ2hBVWdBQ0FBS0FKVVFYOXFOZ0pVSUFBZ0FDZ0NVRUYvYWpZQ1VDQUFJQUFvQWx4QmYybzJBbHdNT3dzZ0FDQUFLQUpVUVFGcU5nSlVJQUFnQUNnQ1VFRUJhallDVUNBQUlBQW9BbHhCQVdvMkFsd01PZ3NnQUNnQ1RDQVNFTU1FSUFJZ0FDZ0NLQ0FCS0FJVUlBRkI5SHhxS0FJQVFRQkJBU0FCUWZCM2FoQ1lDRFlDaEFVZ0FDQUFLQUpVUVg5cU5nSlVJQUFnQUNnQ1VFRi9hallDVUNBQUlBQW9BbHhCZjJvMkFsd01PUXNnQUNnQ3VBa3RBQUZGQkVBZ0FDQUJRYkIrYWtHaHFnNUJ1Nm9PUVpxWkRrRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSk1FSXdFSUFBZ0FDZ0NWRUVCYWpZQ1ZDQUFJQUFvQWxCQkFXbzJBbEFnQUNBQUtBSmNRUUZxTmdKY0REZ0xJQUFnQVVIRWZtb29BZ0FnQVNnQ0ZCRDJFQ0FDSUFFb0FoUTJBb1FGRERjTElBSWdBU2dDRkRZQ2hBVU1OZ3NnQWtFQU5nS0VCU0FVRU5FRVJRUkFJQUFnQVVHd2ZtcEJ5S2tPUVptcURrR2FtUTVCQUNBQUtBSUFLQUtnQVJFQ0FBdzJDeUFVRUVRb0FnQWdFU2dDQUVjRVFDQUFJQUZCc0g1cVFmU3BEa0dacWc1Qm1wa09RUUFnQUNnQ0FDZ0NvQUVSQWdBTU5nc2dBaUFBS0FJb1FjY0RJQUZCc0g1cUVQWUROZ0tFQlF3MUN5QUNRUUEyQW9RRklCUVEwUVJGQkVBZ0FDQUJRZUI4YWtISXFRNUI3NmtPUVpxWkRrRUFJQUFvQWdBb0FxQUJFUUlBRERVTElCUVFSQ2dDQUNBUktBSUFSd1JBSUFBZ0FVSGdmR3BCOUtrT1FlK3BEa0dhbVE1QkFDQUFLQUlBS0FLZ0FSRUNBQXcxQ3lBQUlBRkJ4SDVxSWdRb0FnQkI3NmtPRU9ZSklBQWdCQ2dDQUVIdnFRNFF2d2NnQWlBQUtBSW9RY1lESUFRb0FnQWdBVUhnZkdvUTFnWTJBb1FGRERRTElBSWdBU2dDRkRZQ2hBVU1Nd3NnQWtFQU5nS0VCUXd5Q3lBQ0lBQWdBVUhRZEdvZ0FVR0VlR29vQWdBQ2YwRUFJQUZCeEg1cUtBSUFJZ1JGRFFBYUlBUWdCQ2dDQUNnQ0dCRUFBQXNRbnc4MkFvUUZJQllRUkNnQ0FDSUVCRUFnQkJEYkFRc2dGaERpRGlBVUVPSU9JQUFvQWt3Z0VoRERCQ0FBSUFBb0FsQkJmMm8yQWxBZ0FDQUFLQUpjUVg5cU5nSmNEREVMSUFBZ0FDZ0NYRUVCYWpZQ1hDQUFJQUFvQWxCQkFXbzJBbEJCRUJCR0lnUVFrd0VhSUFJZ0JEWUNrQU1nRmlBQ1FaQURhaERoRGlBVUlCRVE0UTRnQUNnQ1RCQ01CQXd3Q3lBQUlBRkJ4SDVxS0FJQUlBRW9BaFFROXhBZ0FpQUJLQUlVTmdLRUJRd3ZDeUFDSUFFb0FoUTJBb1FGREM0TElBQWdBVUhnZkdvaUJTQUJRYXg3YWlJRUVNNFBJQUpCa0FOcUlBUVF0QU1oQnlBQ0lBQWdCU0FCUWZCOGFpZ0NBQ0FFUVFBZ0FTZ0NGQkMxQXlJRUJIOGdCQ0FFS0FJQUtBSU1FUUFBQlVFQUN6WUNoQVVnQnhBMUdnd3RDeUFDSUFFb0FoUTJBb1FGSUFBZ0FTZ0NGQ0lFSUFRb0FnQW9BZ0FSQUFBZ0FTZ0NGQkNTQmd3c0N5QUJLQUlVSVFRZ0FrRUFOZ0tJQlNBQ0lBUTJBb1FGRENzTElBSWdBVUgwZkdvb0FnQTJBb1FGSUFJZ0FTZ0NGRFlDaUFVTUtnc2dBQ0FCUWNCNWFpSUVJQUZCOUh4cUlnVW9BZ0FRa2dZZ0JTZ0NBQ0VGSUFBb0FpZ2FJQUlnQVNrQ0ZDSWNOd080QVNBQ0lCdzNBNGdDSUFJZ0JTQUNRYmdCYWlBRUVMc01OZ0tFQlF3cEN5QUFJQUZCeEg1cUtBSUFJQUVvQWhRUStCQWdBaUFCS0FJVU5nS0VCUXdvQ3lBQ0lBRW9BaFEyQW9RRkRDY0xJQUlnQVVIRWZtb29BZ0EyQW9RRkRDWUxJQUpCQURZQ2hBVU1KUXNDUUNBQktBSVVJZ1JGRFFBZ0JDQUVLQUlBS0FJMEVRQUFSUTBBSUFFb0FoUWlCQ0FFS0FJQUtBSTBFUUFBS0FJVVFjWURSd1JBSUFFb0FoUWlCQ0FFS0FJQUtBSTBFUUFBS0FJVVFjY0RSdzBCQ3lBQUlBRkJ4SDVxS0FJQUlnUUVmeUFFSUFRb0FnQW9BaGdSQUFBRlFRQUxJQUVvQWhRUXNRY2dBa0VBTmdLRUJRd2xDeUFDSUFBb0FpZ2dBVUhFZm1vb0FnQWdBU2dDRkJDakF6WUNoQVVNSkFzZ0FpQUFLQUlvSUFFb0FoUVE0Z1kyQW9RRklBRW9BaFFpQkVVTkl5QUVJQVFvQWdBb0FqUVJBQUJGRFNNZ0FTZ0NGQ0lFSUFRb0FnQW9BalFSQUFBb0FoUkJ4Z05IQkVBZ0FTZ0NGQ0lFSUFRb0FnQW9BalFSQUFBb0FoUkJ4d05IRFNRTElBQkJBQ0FCS0FJVUVMRUhJQUpCQURZQ2hBVU1Jd3NnQVVHd2Ztb2hCQUpBSUFGQnhINXFLQUlBSWdWRkRRQWdCU0FGS0FJQUtBSVlFUUFBUlEwQUlBUW9BaFFpQlNBRktBSUFLQUlZRVFBQUlnVkJBU0FGS0FJQUtBSzRBUkVCQUFzZ0FpQUVLQUlVTmdLRUJRd2lDeUFDUVFBMkFvUUZEQ0VMSUFBb0Frd2dFaEREQkNBQUlBQW9BbEJCZjJvMkFsQWdBQ0FBS0FKY1FYOXFOZ0pjSUFJZ0FTZ0NGRFlDaEFVTUlBc2dBQ2dDVEJDTUJDQUFJQUFvQWxCQkFXbzJBbEFnQUNBQUtBSmNRUUZxTmdKY0RCOExJQUFnQUNnQ1hFRi9hallDWENBQ0lBRW9BaFEyQW9RRkRCNExJQUFnQUNnQ1hFRUJhallDWEF3ZEN5QUNJQUVvQWhRMkFvUUZEQndMSUFJZ0FTZ0NGRFlDaEFVTUd3c2dBVUhnZkdvaEJBSkFJQUZCOUh4cUtBSUFJZ1ZGRFFBZ0JTQUZLQUlBS0FJWUVRQUFSUTBBSUFRb0FoUWlCU0FGS0FJQUtBSVlFUUFBSWdWQkFTQUZLQUlBS0FLNEFSRUJBQXNnQWlBRUtBSVVOZ0tFQlF3YUN5QUFLQUpNSUJJUXd3UWdFU0FSS0FJQVFYOXFOZ0lBREJrTElBQW9Ba3dRakFRZ0VTQVJLQUlBUVFGcU5nSUFEQmdMSUFKQkFEWUNoQVVNRndzZ0FDQUJRYkIrYWlJRVFRUkJ1cWtPRUw4Q0lBQWdCRUVCUWNTcERrRzZxUTRnQUNnQ0FDZ0NGQkVJQUNBQ0lBQW9BaWhCeUFNZ0JCRDJBellDaEFVTUZnc2dBaUFCS0FJVU5nS0VCUXdWQ3lBQ0lBRW9BaFEyQW9RRkRCUUxJQUlnQVNnQ0ZEWUNoQVVNRXdzZ0FpQUJLQUlVTmdLRUJRd1NDeUFDSUFFb0FoUTJBb1FGREJFTElBSWdBU2dDRkRZQ2hBVU1FQXNnQWlBQktBSVVOZ0tFQlF3UEN5QUNJQUVvQWhRMkFvUUZEQTRMSUFJZ0FTZ0NGRFlDaEFVTURRc2dBaUFCS0FJVU5nS0VCUXdNQ3lBQ0lBRW9BaFEyQW9RRkRBc0xJQUlnQUNnQ0tDQUJRZlI4YWlnQ0FDQUJLQUlVRUtNRE5nS0VCUXdLQ3lBQ0lBQW9BaWhCQUNBQktBSVVJZ1FnQkNBRUtBSUFLQUlBRVFBQUVONENOZ0tFQlF3SkN5QUFJQUZCa0h0cUlnUkJkMEdEcVE0UVNpQUFJQVJCZDBHa0EwR2FxUTVCZzZrT0VDZ2dBaUFCUWZSOGFpZ0NBRFlDaEFVTUNBc2dBQ0FCUWVCOGFpSUVRWGRCZzZrT0VFb2dBQ0FFUVhkQnBBTkJtcWtPUVlPcERoQW9JQUlnQVVIRWZtb29BZ0EyQW9RRkRBY0xJQUlnQVNnQ0ZEWUNoQVVNQmdzZ0FDQUJRYkIrYWlJRUlBRW9BaHdRbEFSQjFBQVFSaUlGUVFCQkFFRUJRUUJCQUVFQUVFVWhCeUFDSUFVMkFvd0ZJQVlnQkNrRENEY0RDQ0FHSUFRcEF3QTNBd0FnQnlBRUtBSVFJQVVvQWdBb0FoQVJBUUFnQWlnQ2pBVWdBU2dDSEJDUUJBd0ZDMEhVQUJCR0lnUkJBRUVBUVFGQkFFRUFRUUFRUlNFRklBSWdCRFlDakFVZ0JpQUJLUU1JTndNSUlBWWdBU2tEQURjREFDQUZJQUVvQWhBZ0JDZ0NBQ2dDRUJFQkFBd0VDeUFDS0FLTUJTQUJRUnhxRUtrSERBTUxRUkFRUmlJRUVKTUJHaUFDSUFRMkFvd0ZJQVFnQVVFY2FoQ3BCd3dDQ3lBQlFmeDhhaUVIQWtBZ0FVR1FmbW9pQ1NnQ0FFVU5BQ0FBSUFGQm1INXFJZ1JCQVVINEFFSFBuQTVCNUp3T0VDZ2dBQ0FFUVFoQnJBSkJBRUhrbkE0UUtDQUFFRE5GRFFBZ0FDQUVJQWtvQWdBUXRnTUxJQUlnQVVITWZtb2lDaWdDQURZQ2pBVWdBQ0FCUWF4N2FoREpEMEVBSVFRZ0FDQUJRWmgrYWlJRklBb29BZ0JCQUJBNEtBSUFJZ29nQ2lnQ0FDZ0NHQkVBQUNBSEtBSUFFTDRIR2lBQUlBVWdBVUdFZldvaUNpQUJRYlI3YWtFQkVKRUdJQUFnQlNBSEtBSUFJQW9RM1FNZ0FpZ0NqQVVRTjBVTkFRTkFJQUpCa0FOcUlBY1F0QU1pQlNBQ0tBS01CU0FFRURnb0FnQWlDaUFLS0FJQUtBSVlFUUFBRUxZSklBVWdBaWdDakFVZ0JCQTRLQUlBSWdvZ0NpZ0NBQ2dDVUJFQUFCQ1FCQ0FGSUFrb0FnQVFod1lnQUNBQ0tBS01CU0FFRURoQkJHb2dCU2dDUEJDVUJDQUNLQUtNQlNBRUVEZ29BZ0FnQlJDUEFTQUZFRFVhSUFSQkFXb2lCQ0FDS0FLTUJSQTNTUTBBQ3d3QkN5QUJRZng4YWlFSEFrQWdBVUdRZm1vaUNTZ0NBRVVOQUNBQUlBRkJtSDVxSWdSQkFVSDRBRUhQbkE1QjVKd09FQ2dnQUNBRVFRaEJyQUpCQUVIa25BNFFLQ0FBRURORkRRQWdBQ0FFSUFrb0FnQVF0Z01MSUFJZ0FVSE1mbW9pQlNnQ0FEWUNqQVZCQUNFRUlBQWdBVUdZZm1vaUNpQUZLQUlBUVFBUU9DZ0NBQ0lGSUFVb0FnQW9BaGdSQUFBZ0J5Z0NBQkMrQnhvZ0FDQUtJQWNvQWdBZ0FVR0VmV29RM1FNZ0FpZ0NqQVVRTjBVTkFBTkFJQUpCa0FOcUlBY1F0QU1pQlNBQ0tBS01CU0FFRURnb0FnQWlDaUFLS0FJQUtBSVlFUUFBRUxZSklBVWdBaWdDakFVZ0JCQTRLQUlBSWdvZ0NpZ0NBQ2dDVUJFQUFCQ1FCQ0FGSUFrb0FnQVFod1lnQUNBQ0tBS01CU0FFRURoQkJHb2dCU2dDUEJDVUJDQUNLQUtNQlNBRUVEZ29BZ0FnQlJDUEFTQUZFRFVhSUFSQkFXb2lCQ0FDS0FLTUJSQTNTUTBBQ3dzQ1FFR005QklvQWdCRkJFQkJBQ0FQYXlFRUlBZ2dEMEVCZEdzaENDQU9RUUYwUWNDc0Rtb3ZBUUFoRGd3QkN5QUNRYkNzRGpZQ0VDQUxRWlRpQ3lBQ1FSQnFFTXdDSUFzZ0RrRUJkRUhBckE1cUx3RUFJZzRRMGdSQkNpQUxFTUFEUVFBZ0Qyc2hCQ0FJSUE5QkFYUnJJUWhCalBRU0tBSUFSUTBBSUF3Z0NCQzNDUXNnQVNBRVFkQUJiR3BCMEFGcUlnRWdBa0h3QkdwQjBBRVFQUm9DZndKQUlBZ3VBUUFpQkNBT1FlVjhha0VCZENJRlFkQzFEbW91QVFCcUlnZEJtY2tBU3cwQUlBZEJBWFFpQjBHdzRndHFMd0VBSUFSQi8vOERjVWNOQUNBSFFmRDBER29NQVFzZ0JVR3d0dzVxQ3k0QkFDRUhDeUFJUVFKcUlRZ01BQUFMQUF1T0FnRUNmeUFBS0FJQUlRQWdBU0FERUtNQ0JFQWdBU0FDRU1BQkR3c0NRQ0FCSUFJUW93SU5BQ0FCSUFFb0FnQW9BaHdSQUFBaEFTQUNJQUlvQWdBb0Fod1JBQUFoQWlBRElBTW9BZ0FvQWh3UkFBQWhBMEVCSVFVZ0FDZ0NLQ0FCSUFJUXZ3aEZCRUFnQUNnQ0tDQUJJQUlRdmdnaEJRc0NRQ0FBS0FJb0lBRWdBeEMvQ0VVRVFDQUFLQUlvSUFFZ0F4QytDRVVOQVFzZ0JVRUJjdzhMSUFVTkFBSkFJQUFvQWlnZ0FTQUNFTHNJRFFBZ0FDZ0NLQ0FCSUFJUXVBZ05BQ0FBS0FJb0lBRWdBaEMyQ0VFQmN5RUVDMEVCSVFJQ1FDQUFLQUlvSUFFZ0F4QzdDQTBBSUFBb0FpZ2dBU0FERUxnSURRQWdBQ2dDS0NBQklBTVF0Z2doQWdzZ0FpQUVjU0VFQ3lBRUN3MEFJQUFnQVNBQ0lBTVE2dzRMSlFFQ2Z5TUFRUkJySWdBa0FDQUFRUWhxUWVRQkVERW9BZ0FoQVNBQVFSQnFKQUFnQVFzbEFRSi9Jd0JCRUdzaUFDUUFJQUJCQ0dwQjR3RVFNU2dDQUNFQklBQkJFR29rQUNBQkN6QUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUlJQUFnQWlnQ0NDZ0NBRFlDQUNBQVFRUnFFREFhSUFKQkVHb2tBQXVFQVFBZ0FDQUNFS01DQkVBZ0FDQUJFTUFCRHdzQ2YwRUFJQUFnQVJDakFnMEFHZ0pBSUFBZ0FDZ0NBQ2dDSEJFQUFFRUJSdzBBSUFJZ0FpZ0NBQ2dDSEJFQUFFRUNSdzBBUVFFZ0FTQUJLQUlBS0FJY0VRQUFRUUpIRFFFYUMwRUFJQUlnQWlnQ0FDZ0NIQkVBQUVFQlJ3MEFHaUFCSUFFb0FnQW9BaHdSQUFCQkFrWUxDd3NBSUFFZ0FpQURFUEFPQ3dZQUVJSUJBQXNsQVFKL0l3QkJFR3NpQUNRQUlBQkJDR3BCNGdFUU1TZ0NBQ0VCSUFCQkVHb2tBQ0FCQ3lnQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJSUlBQWdBaWdDQ0NrQ0FEY0NBQ0FDUVJCcUpBQUw5QUVCQVg5QkFTRUNBa0FDUUNBQUlBQW9BZ0FvQWh3UkFBQkJBVWNFUUNBQUlBQW9BZ0FvQWh3UkFBQkJBMGNOQVFzZ0FTQUJLQUlBS0FJY0VRQUFRUUZHRFFFZ0FTQUJLQUlBS0FJY0VRQUFRUU5HRHdzQ1FDQUFJQUFvQWdBb0Fod1JBQUJCQ1VjRVFDQUFJQUFvQWdBb0Fod1JBQUJCQlVjTkFRc2dBU0FCS0FJQUtBSWNFUUFBUVFsR0RRRWdBU0FCS0FJQUtBSWNFUUFBUVFWR0R3c2dBQ0FBS0FJQUtBSWNFUUFBUVFoSEJFQkJBQ0VDSUFBZ0FDZ0NBQ2dDSEJFQUFFRUVSdzBCQzBFQklRSWdBU0FCS0FJQUtBSWNFUUFBUVFoR0RRQWdBU0FCS0FJQUtBSWNFUUFBUVFSR0lRSUxJQUlMUndFQmZ3SkFJQUFRaFFGRkRRQWdBUkNGQVVVTkFDQUFJQUFvQWdBb0Fod1JBQUFnQVNBQktBSUFLQUljRVFBQVJ3MEFJQUFvQWxBTkFDQUJLQUpRUVFCSElRSUxJQUlMaEFJQkJYOGpBRUd3QVdzaUJDUUFJQUFvQWdBaEJVRUJJUU1DUUNBQklBSVFvd0lOQUNBQklBSVE5ZzROQUFKQUlBQXRBQVJGRFFBZ0FTQUJLQUlBS0FKd0VRQUFSUTBBSUFJZ0FpZ0NBQ2dDZUJFQUFFVU5BQ0FFUWRnQWFpQUJRUUJCQUJETkFTSUFJQVFnQWtFQVFRQVF6UUVpQmhDakFpRUhJQVlRTlJvZ0FCQTFHaUFIRFFFTFFRQWhBeUFCSUFFb0FnQW9BbkFSQUFBTkFDQUNJQUlvQWdBb0FuQVJBQUFOQUNBQklBSVErd2RGRFFBQ1FDQUJFSVVCUlEwQUlBSVFoUUZGRFFBZ0FTQUNFUFVPSVFNTUFRc2dCU2dDS0NBQklBRW9BZ0FvQWh3UkFBQWdBaUFDS0FJQUtBSWNFUUFBUVFBUTRRSWhBd3NnQkVHd0FXb2tBQ0FEQ3dZQUVJSUJBQXNsQVFKL0l3QkJFR3NpQUNRQUlBQkJDR3BCNEFFUU1TZ0NBQ0VCSUFCQkVHb2tBQ0FCQzVJQkFRTi9JQUFRUENFRElBQVFKU0VGQWtBZ0F3UkFBa0FEUUFKQUFuOGdBQkFiSUFJZ0EwRVFhaUlFRUtBRUJFQWdBeWdDQUVVTkJpQUREQUVMSUFBUUd5QUVJQUlRb0FSRkRRTWdBMEVFYWlFRUlBTW9BZ1JGRFFFZ0JDSURDeUVGSUFNb0FnQWhBd3dCQ3dzZ0FTQUROZ0lBSUFRUEN5QUJJQU0yQWdBZ0JROExJQUFRSlNFREN5QUJJQU0yQWdBZ0F3dDhBUUovSXdCQklHc2lCQ1FBSUFFZ0JFRWNhaUFDRVBvT0lnVW9BZ0FoQWlBRVFRQTZBQnNnQWtVRVFDQUVRUWhxSUFFZ0F4REFDU0FCSUFRb0Fod2dCU0FFS0FJSUVPNENJQVJCQ0dvUVh5RUNJQVJCQVRvQUd5QUVRUWhxRUxNQ0N5QUFJQVJCQ0dvZ0FoQXhJQVJCRzJvUW9nRWdCRUVnYWlRQUN5WUJBWDhnQVNBQWF5SUJRUlJ0SVFNZ0FRUkFJQUlnQUNBQkVPUURDeUFDSUFOQkZHeHFDeXNBSUFBb0FnQWFJQUFvQWdBZ0FCREVCRUVVYkdvYUlBQW9BZ0FhSUFBb0FnQWdBQkEzUVJSc2Fob0xnZ0VCQTM4akFFRVFheUlFSkFBQ1FDQURJQUpySWdORkJFQWdBQ0VCREFFTElBRWdBR3NpQlNBRFNBMEFJQVFnQWkwQUFEb0FEMEVCSUFOcklRWURRQ0FBSUFVZ0Jtb2dCRUVQYWhDbERpSUFSUTBCSUFBZ0FpQURFSXNIUlFSQUlBQWhBUXdDQ3lBQklBQkJBV29pQUdzaUJTQURUZzBBQ3dzZ0JFRVFhaVFBSUFFTE5RRUJmeU1BUVJCcklnSWtBQ0FDSUFBcEFnQTNBd2dnQUNBQktRSUFOd0lBSUFFZ0FrRUlhaWtDQURjQ0FDQUNRUkJxSkFBTE5RRUJmeU1BUVJCcklnSWtBQ0FDSUFBb0FnQTJBZ2dnQUNBQktBSUFOZ0lBSUFFZ0FrRUlhaWdDQURZQ0FDQUNRUkJxSkFBTElnQWdBRUVJYWlBQlFRaHFFSUFQSUFCQkRHb2dBVUVNYWhBdUlBQWdBUkQvRGdzOUFRRi9JQUFnQVNrQ0FEY0NBQ0FBSUFFb0FnZzJBZ2dnQUNBQktBSU1JZ0kyQWd3Z0FpZ0NBQ0lDQkVBZ0FDQUJLQUlBSUFJUkFBQTJBZ0FMQ3lZQkFYOGdBU0FBYXlJQlFRSjFJUU1nQVFSQUlBSWdBQ0FCRU9RREN5QUNJQU5CQW5ScUM2RUJBUUovSXdCQkVHc2lBeVFBQWtBZ0FTQUNFSzhGSWdRZ0FCQzNBazBFUUNBRElBSTJBZ3dnQkNBQUVCWkxCRUFnQXlBQk5nSU1JQU5CREdvZ0FCQVdFTWNGSUFFZ0F5Z0NEQ0FBS0FJQUVKRUVHaUFBSUFNb0Fnd2dBaUFFSUFBUUZtc1E4Z2NNQWdzZ0FDQUJJQUlnQUNnQ0FCQ1JCQkRNQlF3QkN5QUFFSUFSSUFBZ0FDQUVFTWtGRUp3TElBQWdBU0FDSUFRUThnY0xJQU5CRUdva0FBc01BQ0FCSUFNb0FnQVE3dzRMVUFFQmZ5TUFRUkJySWdVa0FDQUJFTmNDSWdFZ0FDQUJLQUlBUVJnUWxBSWdCVUVJYWlBQlFRQVF3d0VRa1FFaUFDZ0NBRUVRYWlBQ0lBTWdCQkNJQ2lBQUVDVkJBVG9BQkNBRlFSQnFKQUFMa2dFQkEzOGdBQkE4SVFNZ0FCQWxJUVVDUUNBREJFQUNRQU5BQWtBQ2Z5QUFFQ01nQWlBRFFSQnFJZ1FRMndNRVFDQURLQUlBUlEwR0lBTU1BUXNnQUJBaklBUWdBaERiQTBVTkF5QURRUVJxSVFRZ0F5Z0NCRVVOQVNBRUlnTUxJUVVnQXlnQ0FDRUREQUVMQ3lBQklBTTJBZ0FnQkE4TElBRWdBellDQUNBRkR3c2dBQkFsSVFNTElBRWdBellDQUNBREMxUUJBbjhqQUVFUWF5SUVKQUFnQWdSQUEwQWdBeUFDSUFBUUl5QUNRUkJxSUFFUTJ3TWlCUnNoQXlBQ1FRUkJBQ0FGRzJvb0FnQWlBZzBBQ3dzZ0JFRUlhaUFERURFb0FnQWhBQ0FFUVJCcUpBQWdBQXV2QVFFQ2Z5TUFRU0JySWdVa0FDQUJJQVZCSEdvZ0FoQ0hEeUlHS0FJQUlRSWdCVUVBT2dBYklBSkZCRUFnQlVFSWFpQUJRZjdIQ3lBRElBUVFoZzhnQVNBRktBSWNJQVlnQlNnQ0NCQ2tCQ0FGUVFocUVGOGhBaUFGUVFFNkFCc2dCVUVJYWlJREtBSUFJUUVnQTBFQU5nSUFJQUVFUUNBREVDVWlBeTBBQkFSQUlBTW9BZ0FhQ3lBQkJFQWdBeWdDQUJvTEN3c2dBQ0FGUVFocUlBSVFNU0FGUVJ0cUVLSUJJQVZCSUdva0FBdG1BUUYvSXdCQkVHc2lBaVFBSUFJZ0FDQUJJQUFRUENBQUVDVVFpQTgyQWdnZ0FpQUFFSUVCTmdJQUFuOENRQ0FDUVFocUlBSVFIa1VOQUNBQUVDTWdBU0FDUVFocUVGY1Eyd01OQUNBQ0tBSUlEQUVMSUFBUWdRRUxJUUFnQWtFUWFpUUFJQUFMUlFFQmZ5TUFRU0JySWdJa0FDQUNJQUVRa2dNMkFoQVE1d0VnQWtFWWFpQUFJQUVnQWtFUWFpQUNRUWhxRUlrUElBSkJHR29RVnlFQUlBSkJJR29rQUNBQVFRUnFDeWtCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFUWlnOFFNU2dDQUNFQUlBSkJFR29rQUNBQUMyRUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUFJQUlnQURZQ0NFRUFJUUFDUUNBQ1FRaHFJQUlRSGtVTkFBTkFJQUlvQWdnb0FnQVF0QWNFUUVFQklRQU1BZ3NnQWtFSWFoQzBBaUFDUVFocUlBSVFIZzBBQ3dzZ0FrRVFhaVFBSUFBTFZBRUNmeU1BUVJCcklnUWtBQ0FDQkVBRFFDQUNJQU1nQUJBaklBRWdBa0VRYWhDUEJDSUZHeUVESUFKQkFFRUVJQVViYWlnQ0FDSUNEUUFMQ3lBRVFRaHFJQU1RTVNnQ0FDRUFJQVJCRUdva0FDQUFDekVCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFZ0FCQThJQUFRSlJDT0R4QXhLQUlBSVFBZ0FrRVFhaVFBSUFBTFdBRUJmeU1BUVJCcklnUWtBQ0FFSUFJMkFnd2dBQ0FERUswSkdpQUJFQjhpQWtFQVNRUkFFRzRBQ3lBQkVCTWhBU0FFSUFJMkFnZ2dBQ0FCSUFSQkRHb2dCRUVJYWhDa0FTZ0NBQkNOQ1NBRVFSQnFKQUFnQUFzbkFDQUFMUUFFQkVBZ0FDZ0NBQm9nQVVFUWFoQ3lBZ3NnQVFSQUlBQW9BZ0FhSUFFUUtnc0xmQUVDZnlNQVFTQnJJZ1FrQUNBQklBUkJIR29nQWhDdEJ5SUZLQUlBSVFJZ0JFRUFPZ0FiSUFKRkJFQWdCRUVJYWlBQklBTVF4UWtnQVNBRUtBSWNJQVVnQkNnQ0NCRHVBaUFFUVFocUVGOGhBaUFFUVFFNkFCc2dCRUVJYWhERUNRc2dBQ0FFUVFocUlBSVFNU0FFUVJ0cUVLSUJJQVJCSUdva0FBc0dBRUhqMWdrTEd3QWdBRUdBQldvaUFCQy9CUVJBSUFBZ0FTQUNJQU1Rc0FjTEMxb0JBWDhqQUVFZ2F5SUdKQUFnQmlBQ05nSVlJQVlnQVRZQ0hDQUdJQU02QUJjZ0JpQUVOZ0lRSUFZZ0JUWUNEQ0FBSUFZb0Fod2dCaWdDR0NBR0xRQVhJQVlvQWhBZ0JpZ0NEQ0FBS0FJSUVRSUFJQVpCSUdva0FBc2ZBQ0FBUWRBRWFpSUFFTDhGQkVBZ0FDQUJJQUlnQXlBRUlBVVFsUThMQ3p3QkFYOGpBRUVRYXlJREpBQWdBeUFDTmdJSUlBTWdBVFlDRENBQUlBTkJER29vQWdBZ0EwRUlhaWdDQUNBQUtBSUlFUVlBSUFOQkVHb2tBQXNaQUNBQVFaQUZhaUlBRUw4RkJFQWdBQ0FCSUFJUWx3OExDeHNBSUFCQjhBUnFJZ0FRdndVRVFDQUFJQUVnQWlBREVMQUhDd3NOQUNBQVFaQUZhaUFCRUxFRkN3MEFJQUJCNEFScUlBRVFzUVVMRFFBZ0FFSHdCR29nQVJDeEJRc05BQ0FBUVlBRmFpQUJFTEVGQ3cwQUlBQkIwQVJxSUFFUXNRVUxpd1FCQTM4akFFRVFheUlGSkFBZ0FDQUJRUWhCckFKQkFFR291QXNRS0NBQUlBRkJBVUdDQVVFQVFhaTRDeEFvSUFBZ0EwRUFFTEVIQWtBQ1FDQUNSUTBBSUFJZ0FpZ0NBQ2dDZ0FFUkFBQkJDRWNFUUNBQ0lBSW9BZ0FvQW9BQkVRQUFRUWxIRFFFTElBSWdBaWdDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BbkFSQUFBTkFDQUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUpzRVFBQURRQWdBaUFDS0FJQUtBSjRFUUFBSWdRZ0JDZ0NBQ2dDYUJFQUFFVU5BUXNnQUNBQlFicTRDMEh6dHd0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTEFrQWdBRUhvQUdvaUJoQkVLQUlBSWdRUUZrVUVRQ0FDSVFBTUFRc2dBMFVFUUFKQUFrQWdBQkF6UlEwQUlBQW9BaEJCckFKS0RRQWdBQkNRQXcwQUlBQWdBVUhvdUF0Qjg3Y0xRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFBZ0FVSG91QXRCODdjTFFlUFdDVUVBSUFBb0FnQW9BcVFCRVFJQUN5QUFLQUlvSWdBZ0FFSEVBeUFCRVBZREVPSUdJZ0JCQVNBQUtBSUFLQUs0QVJFQkFDQUZJQUEyQWd3Z0JDQUZRUXhxRUxJRUMwR29BUkJHSWdBUTB3c2hCQ0FHRUVRb0FnQWhBeUFFSUFBb0FnQW9BcndCRVFBQUlBTVF5QWtnQUNBQklBQW9BZ0FvQWdRUkFRQkJJQkJHSWdBaUF4REZCU0FEUVFBN0FSd2dBeUFFTmdJWUlBTWdBallDRkNBRFFaQ2JDVFlDQUNBQUlBRWdBQ2dDQUNnQ0JCRUJBQXNnQlVFUWFpUUFJQUFMS3dBZ0FDQUJRUUowYWlJQVFmQURhaWdDQUNJQlFYOUhCRUFnQVNBQ1JnOExJQUFnQWpZQzhBTkJBUXM5QVFGL0lBQWdBV29pQTBIc0Eyb3RBQUFFUUNBQUlBRkJBblJxS0FMZ0F5QUNSZzhMSUFOQkFUb0E3QU1nQUNBQlFRSjBhaUFDTmdMZ0EwRUJDOFViQVE1L0l3QkJFR3NpQnlRQUFrQWdBaWdDU0NJRVFYOUdEUUJCOGVBSlFabmhDU0FBS0FJVVFRRkdHeUVESUFJcEFneENQNE5DQkZJRVFDQUFJQUZCNEt3TElBTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdBaWdDU0NFRUN5QUFLQUlvSUFRUWlnWkZCRUFnQUNBQlFmaXNDeUFEUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSVVRUUZIRFFBZ0FDQUJRUUFRbVFRTEFrQWdBaWdDakFFaUJFRi9SZzBBSUFJcEFneENQNE5DQkZJRVFDQUFJQUZCNEt3TFFZcmhDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQ0FDS0FLTUFTRUVDd0ovSUFBb0FpZ2lBeWdDMkFRaUJVRi9Sd1JBSUFRZ0JVWU1BUXNnQXlBRU5nTFlCRUVCQ3cwQUlBQWdBVUg0ckF0Qml1RUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFDUVR4cUlRWUNRQ0FDS0FKRUlnUkJmMFlOQUNBQ0tRSU1RaitEUWdOU0JFQWdBQ0FCUWFLdEMwR284UXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FnQWlnQ1JDRUVDd0ovSUFBb0FpZ2lBeWdDakFRaUJVRi9Sd1JBSUFRZ0JVWU1BUXNnQXlBRU5nS01CRUVCQ3cwQUlBQWdBVUg0ckF0QnFQRUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFZb0FnQWlBMFVOQUNBQ0tBSU1RVDl4UVgxcUlnUkJBVTBFUUNBRVFRRnJCRUJCQVNBRGRFSHVCbkZGSUFOQkNVdHlSUVJBSUFBb0FoUkJEVVlFUUNBQUlBRkJ1YTBMSUFNUXF3RkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1CQXNDZnlBQUtBSW9JZ1FvQXBRRUlnVUVRQ0FESUFWR0RBRUxJQVFnQXpZQ2xBUkJBUXNFUUNBQUtBSVVRUU5IRFFRZ0FDQUJRUUFRbVFRTUJBc2dBQ0FCUWMrdEN5QUdLQUlBRUtzQlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBTUxJQUFnQVVHNXJRc2dBeENyQVVIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3Q0N3SkFJQU5CQjBzTkFBSkFRUUVnQTNRaUJFR1NBWEVOQUNBRVFTUnhSUTBCSUFBb0FoUkJEVVlOQUNBQUlBRkIvSzBMSUFNUXF3RkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1Bd3NnQUNnQ0tDQURFSXNHRFFJZ0FDQUJRWkt1Q3lBR0tBSUFFS3NCUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFJTElBQWdBVUg4clFzZ0F4Q3JBVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBQUlBRkJ3SzRMSUFNUXF3RWdBaWdDREVFL2NSRFRBa0VBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUlvQWt3aUEwVU5BQ0FDS1FJTVFqK0RRZ05SQkVBQ2Z5QUFLQUlvSWdRb0FxQUVJZ1VFUUNBRElBVkdEQUVMSUFRZ0F6WUNvQVJCQVFzTkFTQUFJQUZCMGE0TElBSW9Ba3dRM2dOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUWFLdEN5QURFTjREUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBSW9BbEFpQTBVTkFDQUNLUUlNUWorRFFnTlJCRUFDZnlBQUtBSW9JZ1FvQXFRRUlnVUVRQ0FESUFWR0RBRUxJQVFnQXpZQ3BBUkJBUXNOQVNBQUlBRkIvYTRMSUFJb0FsQVFsZ1JCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0FDQUJRYUt0Q3lBREVKWUVRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFJdEFGUkZEUUFnQWlrQ0RFSS9nMElEVVFSQUlBQW9BaWhCQVRvQXJBUU1BUXNnQUNBQlFhS3RDMEhzNVFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQkJtQWRxSVFVZ0FFR2NCMm9oQ0NBQVFhQUhhaUVKSUFCQmtBbHFJUW9nQUVHVUNXb2hDeUFBUVpnSmFpRU1JQUJCbkFscUlRMGdBRUdnQ1dvaERpQUFRYVFKYWlFUFFRQWhCQU5BQWtBZ0FpQUVhaTBBWkVVTkFBSkFBa0FnQWlrQ0RFSS9nMElEVVFSQUlBQW9BaWdnQkNBQ0lBUkJBblJxS0FKWUVLRVBSUVJBSUFBZ0FVR25yd3RCaXZRS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBUUxJQUFvQWhRaUEwRjBhaUlRUVFGTkRRRWdBMEVGUncwQ0lBUkJBa3NFZjBFQUJTQUZJUU1DUUFKQUFrQWdCRUVCYXc0Q0FBRUNDeUFJSVFNTUFRc2dDU0VEQ3lBREtBSUFDeUVESUFBb0FpZ2dCQkNEQWlBRFRRMENJQUFnQVVISnJ3dEJpdlFLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFJTElBQWdBVUdpclF0Qml2UUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUlMSUJCQkFXc0VRQ0FFUVFKTEJIOUJBQVVnRFNFREFrQUNRQUpBSUFSQkFXc09BZ0FCQWdzZ0RpRUREQUVMSUE4aEF3c2dBeWdDQUFzaEF5QUFLQUlvSUFRUWd3SWdBMDBOQVNBQUlBRkJuTEFMUVlyMENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFFUVFKTEJIOUJBQVVnQ2lFREFrQUNRQUpBSUFSQkFXc09BZ0FCQWdzZ0N5RUREQUVMSUF3aEF3c2dBeWdDQUFzaEF5QUFLQUlvSUFRUWd3SWdBMDBOQUNBQUlBRkI4NjhMUVlyMENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBRUhqOHdvZ0FDZ0NBQ2dDa0FJUkF3QWlBMFVOQUNBRElBTW9BZ0FvQW1BUkFBQWdCQkFQSUFBb0FpZ2dCQkNEQWhCdEN3SkFJQUlnQkVFQ2RHb29BbWdpQTBGL1JnMEFBa0FnQWlrQ0RFSS9nMElEVVFSQUlBQW9BaWdnQkNBREVLQVBEUUVnQUNBQlFhZXZDMEdLOUFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUWFLdEMwR0pqUXRCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFCQjQvTUtJQUFvQWdBb0FwQUNFUU1BSWdORkRRQWdBeUFES0FJQUtBSTBFUUFBSWdNZ0F5Z0NBQ2dDS0JFQUFDSURJQU1wQWdSQ2dJQ0FnQWlFTndJRUN5QUVRUUZxSWdSQkEwY05BQXNDUUNBQ0xRQjBSUTBBSUFJcEFneENQNE5DQTFFRVFDQUFLQUlvUVFFNkFLMEVEQUVMSUFBZ0FVR2lyUXRCbnVZS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUl0QUhWRkRRQWdBaWtDREVJL2cwSURVUVJBSUFBb0FpaEJBVG9BcmdRTUFRc2dBQ0FCUWFLdEMwSEZzQXRCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0JpMEFRRVVOQUNBQ0tRSU1RaitEUWdSUkRRQWdBQ0FCUWVDc0MwSGhxd3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FpZ0NoQUVpQTBVTkFDQUNLUUlNUWorRFFnTlJCRUFnQUNnQ0tDQURFTzBKRFFFZ0FDQUJRZHl3Q3lBQ0tBS0VBUkNWQkVIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN5QUFJQUZCb3EwTElBTVFsUVJCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0FpMEFpUUZGRFFBZ0FpMEFpZ0VFUUNBQUlBRkJuTEVMUWJXeEMwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FDQUNMUUNKQVVVTkFRc2dBaWtDREVJL2cwSURVUVJBQWtBZ0FDZ0NLRUVBRUlNQ1FRRnhSUVJBSUFBb0FpaEJBUkNEQWtFQmNVVU5BUXNnQUNBQlFleXhDMEdwc2d0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFnc2dBQ2dDS0VFQkVNa0pEQUVMSUFBZ0FVR2lyUXRCcWJJTFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUl0QUlvQlJRMEFJQUlwQWd4Q1A0TkNBMUVFUUNBQUtBSW9RUUFRZ3dJZ0FDZ0NLRUVCRUlNQ2JDQUFLQUlvUVFJUWd3SnNRUU54QkVBZ0FDQUJRY0t5QzBIenNndEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BZ3NnQUNnQ0tFRUNFTWtKREFFTElBQWdBVUdpclF0Qjg3SUxRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFBb0FoUkJEVWNOQUNBQUtBSW9LQUtRQkVGL1JnMEFJQUFvQWlnb0F0Z0VRWDlHRFFBZ0FDZ0NLQ2dDbUFSRkRRQWdBQ0FCUVFBUW1RUUxBa0FDUUNBQ1FRaHFJZ01RNndFTkFDQURFTVVDRFFBZ0F4Q1pBZzBBSUFJdEFBOUJCM0ZGRFFFTElBQWdBVUdOc3d0Qm9wVUxRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFNUWxnSkZCRUFnQXhEWkEwVU5BUXNnQUNBQlFZKzBDMEd3bGd0QjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQWdBU0FERU53SkFrQWdBaWdDREVFL2NVRjlhaUlFUVFOTkJFQUNRQUpBQWtBQ1FDQUVRUUZyRGdNQ0FBRURDeUFERU0wRUJFQWdBRUg4cVFGcUlnUWdCQ2tDQUVMLy8vLy8vLy8vUjRNZ0Fpa0NERUtBZ0lDQWdJQ0FPSU9FTndJQUN5QURFSVlEUlEwQ0lBQkIvS2tCYWlJRUlBUXBBZ0JDLy8vLy8vLy8vNzk0Z3lBQ0tRSU1Rb0NBZ0lDQWdJREFCNE9FTndJQURBSUxJQU1RelFRRVFDQUFRY2lwQVdvaUJDQUVLUUlBUXYvLy8vLy8vLzlIZ3lBQ0tRSU1Rb0NBZ0lDQWdJQTRnNFEzQWdBTElBTVFoZ05GRFFFZ0FFSElxUUZxSWdRZ0JDa0NBRUwvLy8vLy8vLy92M2lESUFJcEFneENnSUNBZ0lDQWdNQUhnNFEzQWdBTUFRc2dBeEN4QXdSQUlBQkIrNm9CYWlBQ0tRSWdRaGlJUEFBQUN5QURFSlVDQkVBZ0FFSDRxZ0ZxSWdRZ0JDa0NBRUwvLy8vL2ozNkRJQUlwQWlCQ2dJQ0FnUEFCZzRRM0FnQUxJQUJCNEtvQmFoQ1ZBa1VOQUNBREVJSUdSUTBBSUFBb0FpZ2dBRUg4cWdGcUtBSUFRUTl4SUFJcEFpQkNKSWluUWYvL0FIRVEyd2tOQUNBQUtBSUFLQUtnQVNFRUlBY2dBaWdDSkVFUGNUWUNBQ0FBSUFGQmdmNEtRWlB2Q2tITTV3a2dCeUFFRVFJQUN5QURFT2tDQkVBZ0FDQUJRY2kxQzBIcTdBcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQU1RamdRRVFDQUFJQUZCaGJZTFFiYTJDMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQXhDRkF3UkFJQUFnQVVHRnRndEI4KzRLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRExRQWxCRUFnQUNBQlFjKzJDMEdjNVFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBTXRBQ1lFUUNBQUlBRkJ6N1lMUWFybENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBeENwQlFSQUlBQWdBVUdGdHd0QmgrMEtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFETFFBd1JRMEJJQUFnQVVIUHRndEI3dmNLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBQWdBVUh6dEF0QjQ5WUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFIUVJCcUpBQUxVUUVEZnlNQVFVQnFJZ1FrQUNBREVCWUVRQU5BSUFNZ0JSQVJLQUlBSVFZZ0JFRU1haUFDUVRRUVBSb2dBQ0FCSUFSQkRHb2dCaERMQ1NBRlFRRnFJZ1VnQXhBV1NRMEFDd3NnQkVGQWF5UUFDeVVBSUFBb0FnQUVRQ0FBSUFBb0FnQVF3d2tnQUJBN0dpQUFLQUlBR2lBQUVNUUVHZ3NMOUFNQ0JuOENmaU1BUVJCcklnTWtBQUpBSUFFUXNRSkZCRUFnQVJDdUFrVU5BUXNnQVNrQ0JFSTNpS2RCRDNFaUJVRUZTMEVCSUFWMFFTeHhSWElOQUNBRFFRQTJBZ3dnQWhBM1JRMEFRUUFoQlFOQUlBSWdCUkE0S0FJQUlnUWdCQ2dDQUNnQ0tCRUFBQ0VFSUFJZ0JSQTRJUVlnQWlBRkVEZ29BZ0FpQnlBSEtBSUFLQUlvRVFBQUtRSUVJUWtnQXlBQ0lBVVFPQ2dDQUNBRFFRaHFJQU5CQkdvZ0FTa0NCQ0lLUWplSXAwRVBjU0FKUWpTSXAwRUhjU0lIUVFGR0lBcENnSUNBZ0lDQWdEaURRb0NBZ0lDQWdJQUlVU0FIR3hDWUJUWUNBQUpBSUFRUWxnSkZEUUFnQmtFRWFpRUdJQVFvQWd3Z0F5Z0NBQkNUQkVVRVFDQUFJQVpCeGFrTFFkdURDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkVFTWFpSUlLQUlBSVFjZ0FDZ0NHRVVFUUNBSElBTW9BZ3hJQkVBZ0FDQUdRZktwQzBIYmd3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQU1nQTBFTWFpQUlFS1lCS0FJQU5nSU1EQUVMSUFNZ0J6WUNEQXNDUUNBRUVOa0RSUVJBSUFNb0FnQWhCQXdCQ3lBRElBTWdCRUVRYWhDbUFTZ0NBQ0lFTmdJQUN5QURRUXhxSUFRUWhBSWdBeWdDRENFRUlBSWdCUkE0S0FJQUlnWWdCaWdDQUNnQ0tCRUFBQ0FFTmdJTUlBTWdBeWdDRENBREtBSUlhallDRENBRlFRRnFJZ1VnQWhBM1NRMEFDd3NnQTBFUWFpUUFDOTRDQUNBRlJTQUNFSUFDSUFSRmNuSkZCRUFnQUNBQlFjeW9DMEdIN0FwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBUEN3SkFJQVJGRFFCQkFDRUZBa0FnQWhDT0JFVU5BQ0FDSUFJb0FoUWlCRUgvSDNJMkFoUWdBaEN5QXdSQUlBQWdBVUd0cVF0QjQrMEtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFFUWY4ZmNTRUZJQUlRemdSRkRRQWdBQ0FCUWEycEMwR2c4Z3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFNUU4wVU5BRUVBSVFJRFFDQURJQUlRT0NnQ0FDSUJJQUVvQWdBb0FpZ1JBQUFoQVNBRElBSVFPQ0VFQWtBZ0FSQ0FBZ1JBSUFFb0FoUWhCUXdCQ3lBRlFmOGZUZ1JBSUFBZ0JFRUVha0d3N0FwQmgrd0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFCSUFWQi94OXhJQUVvQWhSQmdJQitjWEpCZ0lBQmNpSUZOZ0lVQ3lBRElBSVFPQ2dDQUNBQUtBSVVFSWNFSUFWQi94OXhhaUVGSUFKQkFXb2lBaUFERURkSkRRQUxDd3YwQVFBZ0FoQ1pBZ1JBSUFBZ0FVSGRwZ3RCejdJS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUNMUUFIUVJCeEJFQWdBQ0FCUVplbkMwSExwd3RCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFJUXNnY0VRQ0FBSUFGQjFLY0xRWWFvQzBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FpMEFCMEVJY1FSQUlBQWdBVUdOcUF0QndxZ0xRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFDTFFBbEJFQWdBQ2dDS0NJQklBRW9BdFFEUVFGcU5nTFVBd3NnQWkwQU1BUkFJQUFvQWlnaUFTQUJLQUxRQkVFQmFqWUMwQVFMSUFJUXJnSUVRQ0FBS0FJb0lnQWdBQ2dDM0FSQkFXbzJBdHdFQ3d2TUJRRUJmd0pBQWtBQ1FDQUNLQUlFUVQ5eFFYMXFJZ05CQ1VzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQURRUUZyRGdrREFBRUpCQVVHQndnQ0N5QUFJQUZCQ0VHc0FrRUFRZjZpQ3hBb0lBQWdBVUVCUVl3QlFZeWpDMEgrb2dzUUtDQUFLUUs4QlVLQWdJQ0FnSUNBd0FlRFFvQ0FnSUNBZ0lEQUFWSU5DU0FBTFFEZEJRMEpJQUFnQVVFQlFiemtDa0dwb3dzZ0FDZ0NBQ2dDRkJFSUFBOExJQUFnQVVFT1FkYWpDeEJLSUFBZ0FVRUdRYTREUVFCQjFxTUxFQ2dnQUNBQlFRaEJ0Z0pCQUVIV293c1FLQThMSUFBZ0FVRjNRWllCUWZURUNrSGpvd3NRS0NBQUlBRkJuc0FBUWVPakN4RFNBU0FBS0FJVUlnTkJEVWNFUUNBRFFRUkhEUWdnQUNBQlFRaEJ3QUpCQWtIc3hBcEI3Nk1MRU5FQkR3c2dBaEN1QWcwSElBQWdBVUdFcEF0QnErd0pRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQUNBQlFYZEJsZ0ZCOU1RS1FiR2tDeEFvSUFBZ0FVR1A0QUJCc2FRTEVOSUJBa0FnQUNnQ0ZDSURRUTFIQkVBZ0F3MEJJQUF0QUtRQkRRZ2dBQ0FCUVFoQndBSkJBa0hzeEFwQnZxUUxFTkVCRHdzZ0FoQ3VBZzBJSUFBb0FoUWhBd3NnQTBFTVJ3MEdJQUlRcmdJTkJpQUFJQUZCL3FRTFFhdnNDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQThMSUFBZ0FVRjNRY3dEUWF5bEMwRytwUXNRS0NBQUlBRkJ3QTVCdnFVTEVOSUJEd3NnQUNBQlFYZEJ6QU5CcktVTFFkR2xDeEFvSUFBZ0FVR0FEa0hScFFzUTBnRVBDeUFBSUFGQmQwSE1BMEdzcFF0QjVxVUxFQ2dnQUNBQlFZQUhRZWFsQ3hEU0FROExJQUFnQVVGM1Fjd0RRYXlsQzBIN3BRc1FLQ0FBSUFGQndCeEIrNlVMRU5JQkR3c2dBQ0FCUVhkQnpBTkJyS1VMUVpDbUN4QW9JQUFnQVVHQUVFR1FwZ3NRMGdFUEN5QUFJQUZCcDZZTElBQW9BclFGRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTER3c2dBQ0FCUWRLa0MwR1NyUXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMOFF3QkJYOGpBRUd3QVdzaUJTUUFBa0FDUUNBRElBTW9BZ0FvQWpBUkFBQWlCQ0FFS0FJQUtBSXNFUUFBS0FJRVFUOXhJZ2RCQTBrTkFBSkFJQWRCQlVjTkFDQUFFRE1OQUNBQUtBSVFRZmNBU2cwQkMwRUFJUVFnQUNBQlFiV1hDeUFESUFNb0FnQW9BakFSQUFBUXlRUkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQUNBQklBTWdBeWdDQUNnQ01CRUFBRUhnbHdzUXV3VkJBQ0VFSUFWQjJBQnFRUUJCQUVFQlFRQkJBRUVBRUVVaUNDQURJQU1vQWdBb0FqQVJBQUFRandFZ0NCQWJFTU1DQWtBZ0FDQUJJQWdnQWhDSkJpSUNSUVJBSUFkQkFrY05BU0FESUFNb0FnQW9BalFSQUFBaUFDQUFLQUlBS0FJb0VRQUFFTU1DREFFTEFrQWdBaUFDS0FJQUtBSjRFUUFBSWdRZ0JDZ0NBQ2dDZEJFQUFFVU5BQ0FESUFNb0FnQW9BakFSQUFBaUJDQUVLQUlBS0FKNEVRQUFSUTBBSUFNZ0F5Z0NBQ2dDTkJFQUFDQUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUk4RVFBQUVJMERDd0pBSUFJZ0FpZ0NBQ2dDZUJFQUFCQ01BMFVOQUNBRElBTW9BZ0FvQWpBUkFBQVFqQU5GRFFBZ0FpQUNLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NUQkVBQUJCZ0lBTWdBeWdDQUNnQ01CRUFBQ0lFSUFRb0FnQW9Ba3dSQUFBUVlFY05BQ0FESUFNb0FnQW9BakFSQUFBaUJDQUVLQUlBS0FKTUVRQUFFR0JCQWtnTkFFRUJJUVFEUUNBRElBTW9BZ0FvQWpBUkFBQWlCaUFHS0FJQUtBSk1FUUFBSUFRUTFnRkZCRUFnQXlBREtBSUFLQUkwRVFBQUlnWWdCaWdDQUNnQ1VCRUFBQ0FFSUFJZ0FpZ0NBQ2dDZUJFQUFDSUdJQVlvQWdBb0Frd1JBQUFnQkJEV0FSQ2JCQXNnQkVFQmFpSUVJQU1nQXlnQ0FDZ0NNQkVBQUNJR0lBWW9BZ0FvQWt3UkFBQVFZRWdOQUFzTEFrQUNRQUpBSUFkQkJVY05BQ0FDSUFJb0FnQW9BbmdSQUFBaUJDQUVLQUlBS0FJc0VRQUFFS0VERFFBZ0JVSElBR29nQXlBREtBSUFLQUl3RVFBQUVNb0JJQVZCeUFCcUVCTWhBaUFBS0FJQUtBS2dBU0VFSUFVZ0FqWUNJQ0FBSUFGQjhwY0xRWmlZQzBHYW1Bc2dCVUVnYWlBRUVRSUFJQVZCeUFCcUVCa2FJQU1nQXlnQ0FDZ0NOQkVBQUNJQUlBQW9BZ0FvQWlnUkFBQVF3d0lNQVFzZ0FDZ0NUQkFZSVFRQ1FDQUhRUUpHQkVBQ1FDQUVSUTBBSUFJZ0FpZ0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0Fpd1JBQUFRandJTkFDQUZRY2dBYWlBRElBTW9BZ0FvQWpBUkFBQVF5Z0VnQlVISUFHb1FFeUVDSUFBb0FnQW9BcUFCSVFRZ0JTQUNOZ0lRSUFBZ0FVR2ZtQXRCbUpnTFFacVlDeUFGUVJCcUlBUVJBZ0FnQlVISUFHb1FHUm9nQXlBREtBSUFLQUkwRVFBQUlnQWdBQ2dDQUNnQ0tCRUFBQkREQWd3REN5QUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUlzRVFBQUVJOENEUUVnQUNBQlFYZEJ5cGdMRUVvZ0FDQUJRWGRCcEFOQm9PTUpRY3FZQ3hBb0lBTWdBeWdDQUNnQ05CRUFBQ0lFSUFRb0FnQW9BaWdSQUFBaUJDQUVLUUlFUWtDRFFoQ0VOd0lFREFNTEFrQWdCRVVOQUNBQ0lBSW9BZ0FvQW5nUkFBQWlCQ0FFS0FJQUtBSXNFUUFBRUk4Q0RRQWdBQkF6UlEwQUFrQWdBQkNRQTBVTkFDQUFRYnFaQ3lBQUtBSUFLQUlnRVFNQURRQWdBQ0FCUWFlYUNrSGptQXRCNDlZSlFRQWdBQ2dDQUNnQ3BBRVJBZ0FNQVFzZ0FDQUJRUWhCQUVHNm1RdEI0NWdMRUNnTElBZEJCVWNOQWdzQ1FBSkFJQUFvQWloQnRnUWdBeUFES0FJQUtBSXdFUUFBSUFJUXR3UWlBa1VOQUNBQ0lBSW9BZ0FvQW5nUkFBQWlCQ0FFS0FJQUtBSXNFUUFBRUk4Q1JRMEFJQU1nQXlnQ0FDZ0NNQkVBQUNBQ0lBSW9BZ0FvQW5nUkFBQVF3QUZGRFFFTFFRQWhCQ0FBSUFGQjZaa0xJQU1nQXlnQ0FDZ0NNQkVBQUJESkJFSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FDQURJQU1vQWdBb0FqUVJBQUFpQUNBQUtBSUFLQUlvRVFBQUVNTUNEQU1MSUFJZ0FpZ0NBQ2dDRkJFQUFBUkFJQU1nQWlBQ0tBSUFLQUlVRVFBQUVFc2dBeWdDQUNnQ1pCRUJBQXdCQ3lBRElBTW9BZ0FvQWpRUkFBQWlBQ0FBS0FJQUtBSW9FUUFBRUtrRElBTWdBaUFES0FJQUtBSm9FUUVBQzBFQUlRUU1BUXNnQUNBQklBSWdBaWdDQUNnQ2VCRUFBRUhibEFzUWpBWWdBQ2dDS0NBRElBRVFxZ01oQXlBQUtBSW9JUVFnQlNBQktRSUlOd01JSUFVZ0FTa0NBRGNEQUNBRVFiWUVJQU1nQWlBRkVPd0ZJZ1FOQUNBRlFUaHFJQU1RcWdJZ0JVRW9haUFDRUtvQ0lBQWdBVUdZbUFzZ0JVRTRhaUFGUVNocUVPY0pJQVZCS0dvUUdSb2dCVUU0YWhBWkdnc2dDQkExR2dzZ0JVR3dBV29rQUNBRUMzMEJBbjlCZ0FFUVJpSUVJQUlnQTBFQUVPMENJUVVnQUNBQklBTWdBaEQwQ1FKQUlBQW9Ba3dnQkJEc0FnUkFJQUFvQWt3UUdFVU5BU0FBSUFRZ0FDZ0NBQ2dDaUFJUkFRQWdCUThMSUFBZ0FVSHA2UWtnQkNBRUtBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQkJBQ0VGQ3lBRkMyUUFBa0FnQVNrQ0JFSS9nMElFVWcwQUFrQWdBUkN4QXcwQUlBQW9BaFJCQTBjTkFDQUJJQUJCK0tvQmFpa0NBRUlZaUR3QUd3c2dBUkNWQWcwQUlBRWdBU2tDR0VMLy8vLy9qMzZESUFCQitLb0JhaWtDQUVLQWdJQ0E4QUdEaERjQ0dBc0xwUUVCQVg4Q1FBSkFJQUlvQWdCQkRVY05BQ0FDUVFocUlnTVE2UUpGRFFBZ0FpOEJJQ0FBUWRRSWFpZ0NBRThFUUNBQUlBRkI5WklMUWVyc0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBOExJQU1RbGdKRkRRRWdBQ2dDcEtzQklBSXZBU0JCQW5ScUlBSW9BaFEyQWdBUEN5QUNRUWhxSWdJUTZ3SkZEUUFnQWkwQUpnMEFJQUFnQVVHV2t3dEJ4dllLUWVQV0NVRUFJQUFvQWdBb0FxUUJFUUlBQ3d0UkFRSi9Jd0JCRUdzaUFpUUFJQUJCQ0dvUXV3a2dBRUhFeXc4MkFnd1E3UTRoQXlBQVFiRElDellDRENBQUlBTTJBZ2dnQVJETUFTRUJJQUpCQ0dvUXpBRWFJQUFnQVJDNkNTQUNRUkJxSkFBTFJnRUNmeU1BUVJCcklnSWtBQ0FBUVFocUVMOEpJQUJCeE1zUE5nSU1FTzRPSVFNZ0FFR2d5QXMyQWd3Z0FDQUROZ0lJSUFBZ0FTQUNRUWhxRUw0SklBSkJFR29rQUF0SkFRSi9Jd0JCRUdzaUFpUUFJQUJCQ0dvUXV3a2dBRUhFeXc4MkFnd1E4dzRoQXlBQVFaRElDellDRENBQUlBTTJBZ2dnQVJETUFSb2dBa0VJYWhETUFSb2dBa0VRYWlRQUMwWUJBbjhqQUVFUWF5SUNKQUFnQUVFSWFoQy9DU0FBUWNUTER6WUNEQkQ1RGlFRElBQkJnTWdMTmdJTUlBQWdBellDQ0NBQUlBRWdBa0VJYWhDK0NTQUNRUkJxSkFBTEp3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnZ2dBQ0FDUVFocUVLMFBJQUpCRUdva0FDQUFDeUFCQVg4akFFRVFheUlCSkFBZ0FDQUJRUWhxRUs4UElBRkJFR29rQUNBQUM0QUJBUU4vSXdCQkVHc2lBeVFBSUFNZ0FDQUJFTEFGTmdJSUlBTWdBQkIrTmdJQVFRQWhBQUpBSUFOQkNHb2dBeENJQVVVTkFDQURRUWhxRUZjaUJCRDlCU0lGUVg5R0JFQWdCQ0FCRUpnQ1JRMEJRUUVoQUNBQ1FRRTZBQUFNQVFzZ0JDQUZJQUVRcHc0TkFDQUNRUUE2QUFCQkFTRUFDeUFEUVJCcUpBQWdBQXZSQXdFRmZ5TUFRU0JySWdZa0FDQUNJQUlvQWdBb0FqQVJBQUFpQXlBREtBSUFLQUlzRVFBQUlRTUNRQ0FDSUFJb0FnQW9BakFSQUFBUTJnUkZEUUFnQXhEcEFrVU5BQ0FETHdFWUlBQkIxQWhxS0FJQVRnMEFBbjhnQTBFTWFpQURFSllDRFFBYUlBQW9BcVNyQVNBREx3RVlRUUowYWdzb0FnQWlCMEVEY1FSQUlBQW9BZ0FvQXFBQklRUWdCaUFITmdJUUlBQWdBVUdYalF0QjI0TUtRY3puQ1NBR1FSQnFJQVFSQWdBTElBSWdBaWdDQUNnQ05CRUFBQ0lFSUFRb0FnQW9BaWdSQUFBZ0J6WUNERUVFSVFRQ1FDQUNJQUlvQWdBb0FqQVJBQUFpQlNBRktBSUFLQUp3RVFBQVJRMEFBa0FnQWlBQ0tBSUFLQUl3RVFBQUlnVWdCU2dDQUNnQ2RCRUFBRVVOQUNBQ0lBSW9BZ0FvQWpBUkFBQWlCU0FGS0FJQUtBSk1FUUFBRUxrRkRRQWdBaUFDS0FJQUtBSXdFUUFBSWdJZ0FpZ0NBQ2dDUkJFQUFFRUNkQ0VFREFFTElBQWdBVUhIalF0Qmw3c0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFBS0FJb0lBTXZBUmdnQnlBRUVQa1hJZ0pCQUU0RVFDQUFLQUlBS0FLZ0FTRUZJQVlnQWpZQ0FDQUFJQUZCNW8wTFFkdURDa0hNNXdrZ0JpQUZFUUlBQ3lBQUtBS2txd0VnQXk4QkdFRUNkR29nQkNBSGFqWUNBQXNnQmtFZ2FpUUFDMEVBQWtBZ0EwVWdBa1Z5RFFBZ0F4QmdJQUJCdUFWcUlBQW9BaFFRMXdkTURRQWdBQ0FCUWYzM0NrR0g3QXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQytFYkFnUi9BWHdqQUVIUUFHc2lCaVFBSUFBZ0JFRzM2Z29RdndjQ1FBSkFJQVFnQkNnQ0FDZ0NSQkVBQUNJSFJRUkFRUUVoQlVFQUlRUU1BUXNnQnhCTFFRQVFEeWdDQUNFRUlBY3RBSEJGQkVBZ0FDQUJRUVpCeCtvS0VFb2dBQ0FCUVFaQnVBTkI0K29LUWNmcUNoQW9DeUFFUVg5S0RRQWdBQ0FCUWZ2cUNrRzM2Z3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0F4RHNBU0FERUpNRElBTVE3QUVRekFvZ0EwSGJnd29RS3dSQUlBQW9BaGhGQkVBZ0FDQUJRUTVCMjRNS0VFb2dCa0d3NndvcEF3QTNBMGdnQUNBQlFRWkJwQU5CQWlBR1FjZ0Fha0hiZ3dvUTBRRWdBQ0FCUVFoQnRnSkJBRUhiZ3dvUUtBc2dBaUFFTmdJVUlBVkZEUUVnQUNBQlFianJDa0hiZ3dwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBMEhRNndvUUt3UkFJQUFvQWhoRkJFQWdBQ0FCUVFaQjF1c0tFRW9nQUNBQlFRWkJ1QU5CNCtvS1FkYnJDaEFvQ3dKQUlBUVF3Z2RGQkVBZ0FDQUJRZkxyQ2tIUTZ3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQWlBRU5nSVlDeUFGUlEwQklBQWdBVUc0NndwQjBPc0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFOQmgrd0tFQ3NFUUNBQUlBRkJDRUdzQWtFQVFZZnNDaEFvSUFaQm9JZ0xLUU1BTndOSUlBQWdBVUYzUWNvQ1FRSWdCa0hJQUdwQmgrd0tFTkVCQWtBZ0JFSC9IMDhFUUNBQUlBRkJzT3dLSUFNUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFDSUFJb0FoeEJnR0J4SUFSeU5nSWNDeUFGUlEwQklBQWdBVUc0NndwQmgrd0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFOQnh1d0tFQ3NFUUFKQUFrQWdCRUUvVHdSQUlBQWdBVUhLN0FvZ0F4QVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFJZ0FpZ0NIRUgvLzRGK2NTQUVRUTkwUVlDQS9nRnhjallDSENBRVJRMEJDeUFBSUFGQjIrd0tJQUFvQWdBb0FwZ0JFUVlBQ3lBRlJRMEJJQUFnQVVHNDZ3cEJ4dXdLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBTkI2dXdLRUNzRVFDQUFJQUZCZDBHa0EwR2c0d2xCNnV3S0VDZ2dBQ0FCUVFoQnRnSkJBRUhxN0FvUUtBSkFJQVJCLy84RFR3UkFJQUFnQVVIeTdBb2dBeEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBSWdCSzBnQWlrQ0lFS0FnSHlEaERjQ0lBc2dCVVVOQVNBQUlBRkJ1T3NLUWVyc0NrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFEUVlmdENoQXJCRUFnQUNBQlFZZnRDaUFBS0FJQUtBS2NBUkVHQUFKQUlBUkIvdzlPQkVBZ0FDQUJRWlB0Q2lBREVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQWlBQ0tRSU1Rb0NBZ0lBSWhEY0NEQ0FDSUFJb0FpaEIvNEZnY1NBRVFRaDBRWUQrSDNGeU5nSW9JQUFvQWlnZ0JCRDJGdzBBSUFBZ0FVRzc3UW9nQXhBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUZSUTBCSUFBZ0FVRzQ2d3BCaCswS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBRUxJQU5CNCswS0VDc0VRQ0FBSUFGQkJrSGo3UW9RU2lBQUlBRkJCa0c0QTBIajZncEI0KzBLRUNnQ1FDQUVRUVJQQkVBZ0FDQUJRZTN0Q2lBREVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQWlBQ0tBSWNRZitmZm5FZ0JFRU1kRUdBNEFGeGNqWUNIQXNnQlVVTkFTQUFJQUZCdU9zS1FlUHRDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3dKQUlBTkJCRUdFN2dvUWhRSU5BQ0FBS0FJb1FRRTZBTHdFSUFBZ0FVRVBRWW51Q2hEU0FTQUFJQUZCQmtHSjdnb1FTaUFBSUFGQkJrRzRBMEhqNmdwQmllNEtFQ2dnQTBHYzB3b1FLd1JBSUFRZ0FFSDBDR29vQWdCT0JFQWdBeEFUSVFjZ0FDZ0NBQ2dDb0FFaENDQUdJQUFvQXZRSU5nSVFJQUFnQVVHbTdnb2dCMEc3N2dvZ0JrRVFhaUFJRVFJQUN3SkFJQVJCRDA0RVFDQURFQk1oQWlBQUtBSUFLQUtnQVNFRElBWkJEallDQUNBQUlBRkJwdTRLSUFKQjRPNEtJQVlnQXhFQ0FBd0JDeUFDSUFJcEFpQkMvLy8vLzQ5K2d5QUVyVUlnaG9RM0FpQUxJQVZGRFFJZ0FDQUJRYmpyQ2tHYzB3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BZ3NnQTBIejdnb1FLd1JBQWtBZ0JFSC9QMDRFUUNBREVCTWhBaUFBS0FJQUtBS2dBU0VESUFaQi9qODJBaUFnQUNBQlFmN3VDaUFDUWVEdUNpQUdRU0JxSUFNUkFnQU1BUXNnQWlBQ0tRSWdRdi8vLy8vLy8vK0JnSCtESUFTdFFqS0doRGNDSUFzZ0JVVU5BaUFBSUFGQnVPc0tRZlB1Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3Q0N5QURRWlB2Q2hBclJRMEFJQVFnQUVINENHb29BZ0JCQW5SS0JFQWdBeEFUSVFjZ0FDZ0NBQ2dDb0FFaENDQUdJQUFvQXZnSU5nSkFJQUFnQVVHZTd3b2dCMEczN3dvZ0JrRkFheUFJRVFJQUN3SkFJQVJCLy84QVRnUkFJQU1RRXlFQ0lBQW9BZ0FvQXFBQklRTWdCa0grL3dBMkFqQWdBQ0FCUWVydkNpQUNRZUR1Q2lBR1FUQnFJQU1SQWdBTUFRc2dBaUFDS1FJZ1F2Ly8vLy8vZ1lCK2d5QUVyVUlraG9RM0FpQUxJQVZGRFFFZ0FDQUJRYmpyQ2tHVDd3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQTBILzd3b1FLd1JBSUFBZ0FVSC83d29nQUNnQ0FDZ0NtQUVSQmdBQ1FDQUVRZjhCVGdSQUlBQWdBVUdXOEFvZ0F4QVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFJZ0FpZ0NLRUdBZm5FZ0JISTJBaWdMSUFWRkRRRWdBQ0FCUWJqckNrSC83d3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0EwRzA4QW9RS3dSQUlBQWdBVUVDUWNEd0NrRzA4QW9nQUNnQ0FDZ0NGQkVJQUNBQ0lBUTJBb0FCSUFWRkRRRWdBQ0FCUWJqckNrRzA4QXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FDQUFLQUlVUVFOTERRQWdBMEhJOEFvUUswVU5BQ0FBSUFGQkFVSGc4QXBCNVBBS0lBQW9BZ0FvQWhRUkNBQWdBaUFFTmdJMElBVkZEUUVnQUNBQlFianJDa0hJOEFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBMEg2OEFvUUt3UkFJQUFnQVVFQlFiemxDa0g2OEFvZ0FDZ0NBQ2dDRkJFSUFBSkFJQVFRd2dkRkJFQWdBQ0FCUWZMckNrSDY4QXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0JMY1FpQkVoQ1NBQ0lBSW9BaWhCLy8rZmNIRUNmeUFKUkFBQUFBQUFBUEJCWXlBSlJBQUFBQUFBQUFBQVpuRUVRQ0FKcXd3QkMwRUFDMEVUZEVHQWdPQVBjWEkyQWlnTElBVkZEUUVnQUNBQlFianJDa0g2OEFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc0NRQ0FBS0FJVVFYOXFJZ2RCREVzTkFBSkFBa0FDUUFKQUFrQWdCMEVCYXc0TUJRRUNCQVVGQlFVRkJRUURBQXNnQTBIeDRBa1FLMFVOQkFKQUlBUkZCRUFnQUNBQlFaSHhDa0h4NEFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBaUFFTmdKSUN5QUZSUTBGSUFBZ0FVRzQ2d3BCOGVBSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBVUxJQU5CcVBFS0VDc0VRQ0FBSUFGQkJrR1FBMEVBUWFqeENoQW9Ba0FnQkVVRVFDQUFJQUZCdFBFS1FhanhDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBQ0lBUTJBa1FMSUFWRkRRVWdBQ0FCUWJqckNrR284UXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQlFzZ0EwR1o0UWtRS3dSQUlBSWdCRFlDU0NBRUlBQW9BdmdIU2dSQUlBQWdBVUhIOFFwQm1lRUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFGUlEwRklBQWdBVUc0NndwQm1lRUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQVVMSUFOQmdmSUtFQ3RGRFFNZ0FDQUJRWGRCaVBJS0VFb2dBaUFFclR3QUl5QUVRUUZPQkVBZ0FDZ0NLQkRzQ1FzZ0JVVU5CQ0FBSUFGQnVPc0tRWUh5Q2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3RUN5QURRYUR5Q2hBclJRMENJQUFnQVVFR1FhYnlDaEJLSUFaQm9JZ0xLUU1BTndOSUlBQWdBVUVHUWNvQ1FRSWdCa0hJQUdwQnB2SUtFTkVCSUFJZ0JFRUNUZ1IvSUFBZ0FVSFE4Z3BCb1BJS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQVFRQUZJQVFMclR3QUlpQUZSUTBESUFBZ0FVRzQ2d3BCb1BJS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBTUxJQU5CbWVFSkVDc0VRQ0FBSUFGQkFVSGc0d3BCbWVFSklBQW9BZ0FvQWhRUkNBQWdBaUFFTmdKSUlBUWdBRUdJQ1dvb0FnQktCRUFnQUNBQlFlWHlDa0daNFFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBVkZEUU1nQUNBQlFianJDa0daNFFsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUF3c2dBMEdLNFFrUUswVU5BQ0FBSUFGQkFVSGc0d3BCaXVFSklBQW9BZ0FvQWhRUkNBQWdBaUFFTmdLTUFTQUVJQUJCakFscUtBSUFTZ1JBSUFBZ0FVR2Q4d3BCaXVFSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUZSUTBDSUFBZ0FVRzQ2d3BCaXVFSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxJQU5CQzBIWDh3b1FoUUlOQUFKQUlBQW9BaFJCZm5GQkRFWUVRQ0FBSUFGQkFVSGc0d3BCNC9NS0lBQW9BZ0FvQWhRUkNBQU1BUXNnQUNBQlFRaEJ0Z0pCQUVIajh3b1FLQ0FBSUFGQmQwR3VBMEgwOHdwQjQvTUtFQ2dMSUFVRVFDQUFJQUZCdU9zS1FZcjBDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkNBREVCOUJERWR5UlFSQUlBQWdBVUcwOFFvZ0F4QVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUlMSUFOQmxmUUtFQ3NFUUNBQ1FRRTZBR1FnQWlBRU5nSllEQUlMSUFOQm92UUtFQ3NFUUNBQ1FRRTZBR1VnQWlBRU5nSmNEQUlMSUFOQnIvUUtFQ3NFUUNBQ1FRRTZBR1lnQWlBRU5nSmdEQUlMSUFBb0FoaEZEUUFnQTBHODlBb1FLd1JBSUFJZ0JEWUNhQXdDQ3lBRFFjejBDaEFyQkVBZ0FpQUVOZ0pzREFJTElBTkIzUFFLRUN0RkRRQWdBaUFFTmdKd0RBRUxJQUFnQVVIczlBb2dBeEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBR1FkQUFhaVFBQzhzRUFRSi9JQUFRL3drQ1FDQUFMUUNrQVEwQUlBQkJ1S3NCYWlJQ0VCWUVRQU5BSUFBZ0FpQUJFQkVvQWdBUW5oZ2dBVUVCYWlJQklBSVFGa2tOQUFzTEFrQWdBQ2dDRkNJQlFYOXFJZ0pCREVzTkFBSkFBa0FDUUFKQUFrQUNRQ0FDUVFKckRnc0FCZ0lHQmdZR0JnWURCQUVMSUFBUU0wVU5CQ0FBS0FJUVFiWUNSdzBFSUFBZ0FCRFhBVUVDUWFEQUNrR2Y0d29nQUNnQ0FDZ0NGQkVJQUF3RUN3SkFJQUFRTTBVTkFDQUFLQUlRUWJZQ1J3MEFJQUFnQUJEWEFVRUNRYWpBQ2tHdzR3b2dBQ2dDQUNnQ0ZCRUlBQXdFQ3lBQUVETU5BeUFBS0FJUVFZOERTZzBESUFBZ0FCRFhBVUVCUWNqakNrR3c0d29nQUNnQ0FDZ0NGQkVJQUF3REN5QUFFRE1OQWlBQUtBSVFRYTBEU2cwQ0lBQWdBQkRYQVVFQlFjempDa0hRNHdvZ0FDZ0NBQ2dDRkJFSUFBd0NDeUFBSUFBUTF3RkJBVUhnNHdwQjVPTUtJQUFvQWdBb0FoUVJDQUFNQVFzZ0FDQUFFTmNCUVFGQjRPTUtRZkhqQ2lBQUtBSUFLQUlVRVFnQUN5QUFLQUlVSVFFTElBRkJBMGNOQUNBQVFmN2pDaUFBS0FJQUtBSWdFUU1BUlEwQUFrQWdBQ2dDS0NnQ21BUU5BQ0FBS0FJb0tBS1VCRUYvYWlJQlFRUkxEUUFDUUFKQUFrQWdBVUVCYXc0RUFRTURBZ0FMSUFBb0FpaEJBUkNMQmhvTUFnc2dBQ2dDS0VFRUVJc0dHZ3dCQ3lBQUtBSW9RUWNRaXdZYUN5QUFLQUlvS0FLUUJFRi9SdzBBSUFBb0FpZ29BcFFFUVg5cUlnRkJCRXNOQUFKQUFrQUNRQ0FCUVFGckRnUUJBd01DQUFzZ0FDZ0NLRUVCRUlvR0dnOExJQUFvQWloQkFoQ0tCaG9QQ3lBQUtBSW9RUU1RaWdZYUN3c0hBQ0FBS0FJY0M0NElBUVIvSXdCQkVHc2lCaVFBQWtBQ1FBSkFJQUpGRFFBZ0FpQUNLQUlBS0FJWUVRQUFSUTBBSUFJZ0FpZ0NBQ2dDR0JFQUFDSUVJQVFvQWdBb0Fyd0JFUUFBRUJaQkFVY05BQ0FDSUFJb0FnQW9BaGdSQUFBaUFpQUNLQUlBS0FLOEFSRUFBRUVBRUJFb0FnQWlBaUFDS0FJQUtBSWdFUUFBSWdJTkFRc2dBQ0FCUWRyZENrRyszZ3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FDQUNJQUlvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUpnRVFBQUJFQWdBaUFDS0FJQUtBS0FBUkVBQUVFSVJnMEJJQUlnQWlnQ0FDZ0NnQUVSQUFCQkFVWU5BUXNnQUNBQlFjcmVDa0crM2dwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc0NRQUpBSUFJb0FtaEJ0Z1JIRFFBZ0FpQUNLQUlBS0FMQUFSRUFBQ0lFSUFRb0FnQW9BakFSQUFCRkRRQWdBaUFDS0FJQUtBTEVBUkVBQUNJRUlBUW9BZ0FvQWhRUkFBQU5BUXNnQUNBQlFkcmRDa0crM2dwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dCaUFDSUFJb0FnQW9Bc0FCRVFBQUlnSWdBaWdDQUNnQ01CRUFBQ0lDSUFJb0FnQW9BcmdCRVFBQU5nSU1JQVlnQUVHc3F3RnFJQVpCREdvUTF3a0NRQUpBSUFNb0FoaEZEUUFnQXlnQ0dDSUNJQUlvQWdBb0FpQVJBQUFpQWtVTkFDQUNLQUpvSVFRZ0FpQUNLQUlBS0FMQUFSRUFBQ0lGSUFVb0FnQW9BakFSQUFCRkRRQWdBaUFDS0FJQUtBTEFBUkVBQUNJRklBVW9BZ0FvQWpBUkFBQWlCU0FGS0FJQUtBSzRBUkVBQUNBR0tBSU1SdzBBUVF3Z0JFSGZmbW9pQkVIL0FYRjJRUUZ4SUFSQkIwdHlRWDl6SUFJZ0FpZ0NBQ2dDeEFFUkFBQWlBaUFDS0FJQUtBSVVFUUFBUVFCSGNRMEJDeUFBSUFGQmg5OEtRYjdlQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN3SkFBa0FnQXlnQ0hFVU5BQUovUVFGQkFDQURLQUljSWdJZ0FpZ0NBQ2dDSEJFQUFDSUVSU0FES0FJY0lnSWdBaWdDQUNnQ0lCRUFBQ0lDR3cwQUdrRUFJQU1vQWh3aUJTQUZLQUlBS0FJUUVRQUFLQUpvSWdWQmRtcEJBa2tnQlVISmUycEJBa2x5RFFBYVFRRUxJUVVDUUNBQ1JRMEFBa0FnQWlBQ0tBSUFLQUxBQVJFQUFDSUhJQWNvQWdBb0FqQVJBQUJGRFFBZ0FpQUNLQUlBS0FMQUFSRUFBQ0lISUFjb0FnQW9BakFSQUFBaUJ5QUhLQUlBS0FLNEFSRUFBQ0FHS0FJTVJ3MEFJQUlnQWlnQ0FDZ0N4QUVSQUFBaUFpQUNLQUlBS0FJVUVRQUFEUUVMUVFFaEJRc2dCQVJBSUFRZ0JDZ0NBQ2dDdkFFUkFBQWlBaUFDS0FJQUtBSXdFUUFBUlEwQklBVWdCQ0FFS0FJQUtBSzhBUkVBQUNJQ0lBSW9BZ0FvQWpBUkFBQWlBaUFDS0FJQUtBSzRBUkVBQUNBR0tBSU1SM0lOQVF3Q0N5QUZSUTBCQ3lBQUlBRkI0OThLUWI3ZUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFBSUFNb0FoUWdCaWdDRENBQUtBSk1FS01ZQ3lBR1FSQnFKQUFMMHdJQkJIOGdBU2dDbUFFb0FrQWlBeEEzQkVCQkFDRUJBMEFnQXlBQkVEZ29BZ0FpQWlBQ0tBSUFLQUlvRVFBQUlRSWdBeUFCRURoQkJHb2hCUUpBQWtBZ0FoRHJBUTBBSUFJUW1RSU5BQ0FDTFFBRVFUNXhSUTBCQ3lBQUlBVkIvdHNLSUFNZ0FSQTRLQUlBSWdRZ0JDZ0NBQ2dDR0JFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFDRU1VQ0JFQWdBQ0FGUWNMY0NpQURJQUVRT0NnQ0FDSUVJQVFvQWdBb0FoZ1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FoRHJBZ1JBSUFBZ0JVSDAzQW9nQXlBQkVEZ29BZ0FpQkNBRUtBSUFLQUlZRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdBaERERGdzZ0FpMEFCMEVJY1FSQUlBQWdCVUdtM1FvZ0F5QUJFRGdvQWdBaUFpQUNLQUlBS0FJWUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFGQkFXb2lBU0FERURkSkRRQUxDd3MvQVFGL0lBQWdBQ2dDV0NJQ1FRRk9CSDhnQUNBQlFkUFdDa0hqMWdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0FDZ0NXQVVnQWd0QkFXbzJBbGdMYUFFRGZ5TUFRUkJySWdJa0FDQUNJQUUyQWdnZ0FpQUFFRUEyQWdBZ0FDZ0NBQ0FDS0FJSUlBSW9BZ0JyUVJSdFFSUnNhaUlCUVJScUlBQW9BZ1FnQVJEOERpRURJQUFRTnlFRUlBQWdBeEREQ1NBQUlBUVEvUTRnQVJCaElRQWdBa0VRYWlRQUlBQUxzeDBDQjM4QmZpTUFRVUJxSWdja0FDQUFJQUZCQ0VIQUFrRUNRZXpFQ2tIc3l3b1EwUUVnQUNBQlFYZEJtZ05COU1RS1FlekxDaEFvQWtBQ1FDQURRWW5NQ2hDY0JFVU5BQ0FEUVpiTUNoQ2NCRVVOQUNBRFFhWE1DaENjQkVVTkFDQURRYmpNQ2hDY0JFVU5BQ0FBSUFGQnpzd0tRZWZNQ2lBREVCTkJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN3SkFJQVJGRFFBZ0JCQzNCUTBBSUFBZ0FVSDV6QW9nQkJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBRUxJQUFvQWt3aEJnSi9JQVFFUUNBSElBWWdCQ0FIUVQ5cVFRQVFyQUUyQWpnZ0JBd0JDeUFISUFZZ0FpZ0NBQ2dDQUNJR0lBWW9BZ0FvQWhnUkFBQWdCMEUvYWtFQUVLd0JOZ0k0SUFJb0FnQW9BZ0FpQmlBR0tBSUFLQUlZRVFBQUN4QVRJUVlnQnlnQ09DSUlSUVJBSUFBZ0FVR3N6UW9nQmtIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN5QUhMUUEvUlFSQUlBQWdBVUhUelFvZ0F4QVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFjZ0FDZ0NUQ0FJRU40SklnZzJBamdnQ0NBSUtBSUFLQUl3RVFBQUlnZ2dDQ2dDQUNnQ0hCRUFBRUVRUndSQUlBQWdBVUdRemdvZ0JrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDd0pBSUFBcEFyd0ZRaitEUWdSU0RRQWdBRUhncWdGcUVKVUNSUTBBSUFCQnVBVnFJZ1lRbFFKRkJFQWdBQ0FBS1FMUUJVTC8vLy8vajM2RElBQkIrS29CYWlrQ0FFS0FnSUNBOEFHRGhEY0MwQVVMSUFZUXNRTkZCRUFnQUNBQVFmaXFBV29wQWdCQ0dJZzhBTk1GQ3lBQUlBWWdBaERkQ1FzZ0J5Z0NPQ0lHSUFZb0FnQW9BalFSQUFBaENpQUFMUURmQlFSQUlBb2dDaWdDQUNnQ0tCRUFBRUVCT2dBbklBQXBBcndGSVEwZ0NpQUtLQUlBS0FJb0VRQUFJZ1lnQmlrQ0JFSkFneUFOUWorRGhEY0NCQ0FBS1FMUUJTRU5JQW9nQ2lnQ0FDZ0NLQkVBQUNBTlFoaUlQQUFiSUFBcEF0QUZJUTBnQ2lBS0tBSUFLQUlvRVFBQUlnWWdCaWtDR0VMLy8vLy9qMzZESUExQ2dJQ0FnUEFCZzRRM0FoZ0xJQWNnQ2lnQ1FCQkFOZ0l3SUFjZ0NpZ0NRQkF5TmdJWUlBZEJNR29nQjBFWWFoQWVCRUFEUUNBSFFSaHFFS1FGSUFjZ0FoQkFOZ0lJSUFkQkVHb2dCMEVJYWhCbkdpQUhJQWNvQWhBMkFpZ2dCeUFDRURJMkFoQUNRQ0FIUVNocUlnWWdCMEVRYWhBZUJFQURRQ0FIS0FJd0tBSUFJZ2dnQ0NnQ0FDZ0NHQkVBQUNBR0tBSUFLQUlBSWdnZ0NDZ0NBQ2dDR0JFQUFCQ1lBZ1JBSUFjZ0JpZ0NBQ0lJS1FJTU53TWdJQWNnQ0NrQ0JEY0RHQ0FHS0FJQUtBSUFJZ1lnQnlnQ01DZ0NBQ0lJRU9VR1JRUkFJQUFnQjBFWWFrRzR6Z29nQnlnQ01DZ0NBQ0lKSUFrb0FnQW9BaGdSQUFBUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FJSUFnb0FnQW9BbkFSQUFBZ0JpQUdLQUlBS0FKd0VRQUFjMEVCUmdSQUlBQWdCMEVZYWtIc3pnb2dCeWdDTUNnQ0FDSUpJQWtvQWdBb0FoZ1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN3SkFJQWdnQ0NnQ0FDZ0NLQkVBQUJEVUFnMEFJQWdnQmhEZURBMEFJQWdnQ0NnQ0FDZ0NkQkVBQUVVTkFDQUFJQWRCR0dwQm44OEtJQWNvQWpBb0FnQWlDU0FKS0FJQUtBSVlFUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dDQ0FJS0FJQUtBSW9FUUFBRU5RQ0RRQWdCaUFHS0FJQUtBSndFUUFBUlEwQUlBQWdBU0FIS0FJd0tBSUFJZ2tnQ1NnQ0FDZ0NHQkVBQUNBR0lBWW9BZ0FvQWp3UkFBQVF1d2NMQWtBQ1FDQUlJQWdvQWdBb0FpZ1JBQUFRMUFKRkRRQWdCaUFHS0FJQUtBSXNFUUFBRU5RQ0RRQWdBQ0FIUVJocVFkUFBDaUFIS0FJd0tBSUFJZ2tnQ1NnQ0FDZ0NHQkVBQUJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBRUxBa0FnQ0NBSUtBSUFLQUlvRVFBQUVOUUNEUUFnQmlBR0tBSUFLQUlzRVFBQUVOUUNSUTBBSUFBZ0IwRVlha0dLMEFvZ0J5Z0NNQ2dDQUNJSklBa29BZ0FvQWhnUkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBR0lBWW9BZ0FvQWl3UkFBQVExQUpGRFFBZ0NDQUlLQUlBS0FKUUVRQUFFR0FnQmlBR0tBSUFLQUpNRVFBQUVHQkhCRUFnQUNBSFFSaHFRZXpPQ2lBSEtBSXdLQUlBSWdrZ0NTZ0NBQ2dDR0JFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMQWtBZ0JpQUdLQUlBS0FKNEVRQUFEUUFnQmlBR0tBSUFLQUk4RVFBQUlBQW9BcWdKUmcwQUlBQWdBVUd4d3dwQnorQUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFZZ0JpZ0NBQ2dDVEJFQUFCQmdRUUpIRFFBZ0JpQUdLQUlBS0FKTUVRQUFRUUVRMWdFaENTQUFJQWRCR0dvZ0J5Z0NNQ2dDQUNJTUlBd29BZ0FvQWhnUkFBQWdDUkM3QnlBSUlBZ29BZ0FvQWxBUkFBQkJBU0FKRUpzRUN3SkFBa0FnQ0NBSUtBSUFLQUlvRVFBQUVMMEZSUTBBSUFZZ0JpZ0NBQ2dDTEJFQUFCQzlCUTBBSUFBZ0IwRVlha0hFMEFvZ0J5Z0NNQ2dDQUNJSklBa29BZ0FvQWhnUkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBSUlBZ29BZ0FvQWlnUkFBQVF2UVVOQUNBR0lBWW9BZ0FvQWl3UkFBQVF2UVZGRFFBZ0FDQUhRUmhxUVlEUkNpQUhLQUl3S0FJQUlna2dDU2dDQUNnQ0dCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBR0lBWW9BZ0FvQWl3UkFBQVF4UUlFUUNBQUlBZEJHR3BCdjlFS0lBY29BakFvQWdBaUNTQUpLQUlBS0FJWUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFZZ0JpZ0NBQ2dDTEJFQUFCQzlEZ1JBSUFBZ0IwRVlha0gyMFFvZ0J5Z0NNQ2dDQUNJSklBa29BZ0FvQWhnUkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQmlBR0tBSUFLQUlzRVFBQUxRQUpRUUZ4QkVBZ0FDQUhRUmhxUWF2U0NpQUhLQUl3S0FJQUlna2dDU2dDQUNnQ0dCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBWWdCaWdDQUNnQ0xCRUFBQkNWQWtVTkFDQUdJQVlvQWdBb0Fpd1JBQUFoQ1NBQUtRTFFCU0FKS1FJWWhVS0FnSUNBOEFHRFVBMEFJQUFnQjBFWWFrSFgwZ3BCbk5NS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQVlnQmlnQ0FDZ0NMQkVBQUJDeEEwVU5BQ0FHSUFZb0FnQW9BaXdSQUFBaENTQUFLUUxRQlNBSktRSVloVUtBZ0lENEQ0TlFEUUFnQUNBSFFSaHFRZGZTQ2tHbjB3cEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQVlnQmlnQ0FDZ0NMQkVBQUNrQ0JDRU5JQWdnQ0NnQ0FDZ0NLQkVBQUNJSklBa3BBZ1JDLy8vLy8zNkRJQTFDZ0lDQWdBR0RoRGNDQkNBR0lBWW9BZ0FvQWl3UkFBQXBBZ1FoRFNBSUlBZ29BZ0FvQWlnUkFBQWlDU0FKS1FJRVF2Ly8vLy8vdjMrRElBMUNnSUNBZ0lEQUFJT0VOd0lFSUFZZ0JpZ0NBQ2dDTEJFQUFDa0NCQ0VOSUFnZ0NDZ0NBQ2dDS0JFQUFDSUpJQWtwQWdSQy8vLy92MytESUExQ2dJQ0F3QUNEaERjQ0JDQUdJQVlvQWdBb0Fpd1JBQUFwQWdRaERTQUlJQWdvQWdBb0FpZ1JBQUFpQ1NBSktRSUVRdi8vLy85Zmd5QU5Rb0NBZ0lBZ2c0UTNBZ1FnQmlBR0tBSUFLQUlzRVFBQUtRSUVJUTBnQ0NBSUtBSUFLQUlvRVFBQUlna2dDU2tDQkVMLy8vLy9mWU1nRFVLQWdJQ0FBb09FTndJRUlBWWdCaWdDQUNnQ0xCRUFBQ2tDQkNFTklBZ2dDQ2dDQUNnQ0tCRUFBQ0lKSUFrcEFnUkMvLy8vLzN1RElBMUNnSUNBZ0FTRGhEY0NCQ0FHSUFZb0FnQW9BaXdSQUFBcEFnUWhEU0FJSUFnb0FnQW9BaWdSQUFBaUNTQUpLUUlFUXYvLy8vKy9mNE1nRFVLQWdJQ0F3QUNEaERjQ0JDQUdJQVlvQWdBb0Fpd1JBQUFwQWhnaERTQUlJQWdvQWdBb0FpZ1JBQUFpQ1NBSktRSVlRdi8vLy8vLy8vK0JnSCtESUExQ2dJQ0FnSUNBZ1A3L0FJT0VOd0lZSUFZZ0JpZ0NBQ2dDTEJFQUFDa0NHQ0VOSUFnZ0NDZ0NBQ2dDS0JFQUFDSUpJQWtwQWhoQy8vLy8vNDkrZ3lBTlFvQ0FnSUR3QVlPRU53SVlJQVlnQmlnQ0FDZ0NMQkVBQUNrQ0dDRU5JQWdnQ0NnQ0FDZ0NLQkVBQUNJSklBa3BBaGhDLy8vLy8vK0JnSDZESUExQ2dJQ0FnSUQrL3dHRGhEY0NHQ0FJSUFnb0FnQW9BaWdSQUFBcEFoaENnSUNBZ0lDQWdQNy9BSU5DZ0lDQWdJQ0FnQjVTQkVBZ0FDa0MwQVVoRFNBS0lBb29BZ0FvQWlnUkFBQWlDU0FKS1FJWVF2Ly8vLytQZm9NZ0RVS0FnSUNBOEFHRGhEY0NHQ0FBS1FMUUJTRU5JQWdnQ0NnQ0FDZ0NLQkVBQUNJSklBa3BBaGhDLy8vLy80OStneUFOUW9DQWdJRHdBWU9FTndJWUN3SkFJQWdnQ0NnQ0FDZ0NlQkVBQUVVTkFDQUdJQVlvQWdBb0FuUVJBQUJGRFFBZ0NDQUdJQVlvQWdBb0Fqd1JBQUFRalFNTElBdEJBV29oQ3lBQUlBRWdDQkM1QnlBSFFUQnFFTFFDREFNTElBWVF0QUlnQnlBQ0VESTJBaEFnQmlBSFFSQnFFQjROQUFzTElBUUVRQ0FLS0FKQUlRWWdCeUFIUVRCcUVHY2FJQWNnQmlBSEtBSUFFTHdQTmdJd0RBRUxJQWNvQWpBb0FnQWlCaUFHS0FJQUtBSUlFUVVBSUFkQk1Hb1F0QUlMSUFjZ0NpZ0NRQkF5TmdJWUlBZEJNR29nQjBFWWFoQWVEUUFMQ3lBQUtBSWdRUUZPQkVBZ0FDa0MwQVVoRFNBS0lBb29BZ0FvQWlnUkFBQWdEVUlZaUR3QUd3c2dDeUFDRURkSkJFQWdBQ0FCUWJMVENpQURFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBQ1FDQUtJQW9vQWdBb0FuQVJBQUFnQlVFQVIzTkZCRUFnQlVVZ0NpQUtLQUlBS0FKd0VRQUFSWElOQVNBS0lBb29BZ0FvQWxBUkFBQVFZQ0FGRUdCR0RRRUxJQUFnQVVIWTB3b2dBeEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBb2dDaWdDQUNnQ2NCRUFBRVVOQUFKQUlBVVFwUWNOQUNBS0lBb29BZ0FvQW5RUkFBQkZEUUFnQlNBS0lBb29BZ0FvQWp3UkFBQVE5UWtMQWtBZ0NpQUtLQUlBS0FKMEVRQUFEUUFnQlJDbEIwVU5BQ0FLSUFVUW9nY1FqUU1MSUFvZ0NpZ0NBQ2dDZEJFQUFFVU5BQ0FLSUFvb0FnQW9BbEFSQUFBZ0JSRHZDMFVOQUNBQUlBRkJoTlFLSUFNUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBQ2dDVENBSEtBSTRJZ0lRN0FJYUlBQWdBU0FDRUxnSEFrQWdBQ0FDSUFJb0FnQW9BakFSQUFBUWpnTUVRQ0FBUWNpckFXb2dCMEU0YWhEY0FTQUFJQUZCQVJDWkJBd0JDeUFDSUFJb0FnQW9BakFSQUFBaUFpQUNLQUlBS0FKd0VRQUFSUTBBSUFBZ0FTQUhLQUk0SWdFZ0FTZ0NBQ2dDTkJFQUFCREhCd3NnQUNBSEtBSTRJQUFvQWdBb0FvZ0NFUUVBQ3lBSFFVQnJKQUFMdXhJQ0JYOEJmaU1BUVNCcklnVWtBQUpBSUFJUXR3VkZEUUFnQUNnQ1RCQWtEUUFnQUNnQ1RCQVlSUTBBQW45QkFDQUFFRE1OQUJwQkFTQUFLQUlRUVlFQlNnMEFHaUFDUWQ3RUNoQXJDeUVJQWtBZ0FCQXpCRUJCQVNFR0lBQW9BaEJCdndKS0RRRWdBRUVDUWV6RUNpQUFLQUlBS0FJa0VRY0FJUVlMSUFZZ0NISkJBVWNOQVFzQ1FBSkFJQUFRTXcwQUlBQW9BaEJCakFGS0RRQWdBRUgweEFvZ0FDZ0NBQ2dDSUJFREFFVU5BRUVCSVFjZ0FrR1R4UW9RS3cwQklBSkJuOFVLRUNzTkFTQUNRYXpGQ2hBckRRRWdBa0c2eFFvUUt3MEJDd0pBSUFKQnlzVUtFQ3RGQkVBZ0JpRUpEQUVMSUFnRVFFRUFJUWNnQmlBQUtBSVFRYU1EU25KRkRRRU1BZ3RCQUNFSElBWU5BUXNDUUNBQ1FkZkZDaEFyUlEwQUlBZ0VRRUVBSVFjZ0NTQUFLQUlRUVpVQlNuSkZEUUVNQWd0QkFDRUhJQWtOQVF0QkFDRUhJQUpCNU1VS0VDc05BQ0FDUWZURkNoQXJEUUFnQWtHRXhnb1FLdzBBSUFKQmtzWUtFQ3NOQUNBQ1FaL0dDaEFyRFFBZ0FrRzJ4Z29RS3cwQUlBSkJ6TVlLRUNzTkFDQUNRZDdHQ2hBckJFQWdBQ2dDRkVFRVJnMEJDd0pBSUFKQjU4WUtFQ3NnQ0hGQkFVY05BQ0FBS0FJUVFZd0JTQTBBSUFBb0FoUkJCRVlOQVFzZ0FrSDh4Z29RS3cwQUlBSkJpc2NLRUNzTkFDQUNRWlBIQ2hBckRRQWdBa0hleEFvUUswVU5BUXNnQlNBQUtBSk1JQUlnQlVFZmFrRUFFS3dCSWdZMkFoZ2dCZ1IvQW44Z0JTMEFId1JBSUFBZ0JVRVlhaUFBS0FJQUtBS01BaEVCQUNBRktBSVlJUVlMSUFZTElBWW9BZ0FvQWpRUkFBQWlCaUFHS0FJQUtBSW9FUUFBSVFZQ1FDQUhCRUFnQUNnQ0tDQUNFTFFCQkVBZ0FDQUJRYW5IQ2lBQ0VCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQU1RNndJRVFDQUFJQUZCeE1jS1FlWEhDaUFGS0FJWUlnSWdBaWdDQUNnQ0RCRUFBQkFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FDUUNBREVNVUNEUUFnQXhEckFRMEFJQUFvQWhRaUFrRUVTdzBCQWtBQ1FDQUNRUUZyRGdRREF3TUJBQXNnQXlrQ0JFSS9nMElFVWcwQkRBSUxJQU1wQWdSQ1A0TkNBMUVOQVFzZ0FDQUJRZlBIQ2tIbHh3b2dCU2dDR0NJQ0lBSW9BZ0FvQWd3UkFBQVFFMEVBSUFBb0FnQW9BcUFCRVFJQUN5QURMUUFIUVNCeERRRWdBQ0FCUWJESUNrSGx4d29nQlNnQ0dDSUJJQUVvQWdBb0Fnd1JBQUFRRTBFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMQWtBQ1FDQUNRWVRHQ2hBckRRQWdBa0dTeGdvUUt3MEFJQUpCbjhZS0VDc05BQ0FDUWJiR0NoQXJEUUFnQWtITXhnb1FLdzBBSUFKQjNzWUtFQ3RGRFFFTElBWWdCaWtDQkVMLy8vLy9lNE1nQXlrQ0JFS0FnSUNBQklPRUlnbzNBZ1FnQmlBS1F2Ly8vLzk5Z3lBREtRSUVRb0NBZ0lBQ2c0UWlDamNDQkNBR0lBcEMvLy8vLzc5L2d5QURLUUlFUW9DQWdJREFBSU9FTndJRUlBTVE2d0lFUUNBQUlBRkJ4TWNLUWVYSENpQUZLQUlZSWdJZ0FpZ0NBQ2dDREJFQUFCQVRRUUFnQUNnQ0FDZ0NvQUVSQWdBTEFrQWdBeERGQWcwQUlBTVE2d0VOQUNBRktBSVlJZ0lnQWlnQ0FDZ0NNQkVBQUNJQ0lBSW9BZ0FvQWl3UkFBQWhBaUFES1FJRUlBSXBBZ1NGUWorRFVBMENDeUFBSUFGQjg4Y0tRZVhIQ2lBRktBSVlJZ0VnQVNnQ0FDZ0NEQkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FBSkFJQUpCM3NRS0VDc05BQ0FDUWVURkNoQXJEUUFnQWtIMHhRb1FLMFVOQVFzQ1FDQURFT3NDRFFBZ0F4REZBZzBBSUFNUTZ3RU5BQ0FHS1FJRUlBTXBBZ1NGUXIrQWdJREVBSU5RRFFJTElBQWdBVUhkeUFwQjVjY0tJQVVvQWhnaUFTQUJLQUlBS0FJTUVRQUFFQk5CQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFDUWRmRkNoQXJCRUFnQUNnQ0tDQUZRUWhxUWRmRkNoQWlJZ0lRdEFFaENTQUNFQmthSUFrRVFDQUFJQUZCcWNjS1FkZkZDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUFKQUlBWXBBZ1FnQXlrQ0JJVkNnSUNBZ01RQWcwSUFVZzBBSUFNUXhRSU5BQ0FERU9zQlJRMEJDeUFBSUFGQi9NZ0tRZVhIQ2lBRktBSVlJZ0lnQWlnQ0FDZ0NEQkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFNcEFnUkNQNE5DQTFJRVFDQUFJQUZCcE1rS1FlWEhDaUFGS0FJWUlnSWdBaWdDQUNnQ0RCRUFBQkFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxBa0FnQlMwQUh3MEFJQUFvQWlndEFKd0VJQVF0QUFSR0JFQWdBQ2dDS0MwQW5RUWdCQzBBQlVZTkFRc2dBQ0FCUWRISkNrSGx4d29nQlNnQ0dDSUJJQUVvQWdBb0Fnd1JBQUFRRTBFQUlBQW9BZ0FvQXFBQkVRSUFDeUFFTFFBRUJFQWdBQ2dDS0VFQk9nQ2NCQXNnQkMwQUJVVU5BU0FBS0FJb0VKSUpEQUVMSUFKQnlzVUtFQ3NFUUFKQUFrQWdCaWtDQkNBREtRSUVoVUtBZ0lDQXhBQ0RRZ0JTRFFBZ0F4REZBZzBBSUFNUTZ3RkZEUUVMSUFBZ0FVSDh5QXBCNWNjS0lBVW9BaGdpQWlBQ0tBSUFLQUlNRVFBQUVCTkJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0F5a0NCRUkvZzBJRVVnUkFJQUFnQVVHQXlncEI1Y2NLSUFVb0FoZ2lBaUFDS0FJQUtBSU1FUUFBRUJOQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkNnQ1BFVU5BU0FBS0FJb0lBVkJDR3BCeXNVS0VDSWlBaEMwQVNFRElBSVFHUm9nQXdSQUlBQWdBVUdweHdwQnlzVUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0ovSUFRb0Fqd2hBaUFBS0FJb0lnTW9BckFFSWdRRVFDQUNJQVJHREFFTElBTWdBallDc0FSQkFRc05BU0FBSUFGQnJzb0tRZVhIQ2lBRktBSVlJZ0VnQVNnQ0FDZ0NEQkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FDQUNRWlBIQ2hBclJRUkFJQUpCNThZS0VDdEZEUUVMSUFNUTZ3SUVRQ0FBSUFGQnhNY0tRZVhIQ2lBRktBSVlJZ0lnQWlnQ0FDZ0NEQkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFNcEFnUkNQNE5DQkZFTkFTQUFJQUZCZ01vS1FlWEhDaUFGS0FJWUlnRWdBU2dDQUNnQ0RCRUFBQkFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQWtIOHhnb1FLd1JBSUFRdEFFeEZCRUFnQUNBQlFlUEtDa0hseHdvZ0JTZ0NHQ0lCSUFFb0FnQW9BZ3dSQUFBUUUwRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSW9RUUU2QU0wRURBRUxJQUpCaXNjS0VDdEZEUUFnQmdKL1FRRWdBeTBBS0EwQUdrRUFJQU1vQWl4QmdIQkhEUUFhSUFBZ0FVR2J5d3BCNWNjS0lBVW9BaGdpQVNBQktBSUFLQUlNRVFBQUVCTkJBQ0FBS0FJQUtBS2dBUkVDQUNBRExRQW9Dem9BS0NBR0lBTW9BaXcyQWl3TElBVW9BaGdGUVFBTElRY0xJQVZCSUdva0FDQUhDMlFBQWtBZ0F5QURLQUlBS0FJb0VRQUFLUUlFUWorRFFnSlNCRUFnQXlBREtBSUFLQUlvRVFBQUtRSUVRaitEUWhCU0RRRUxJQU1nQXlnQ0FDZ0NLQkVBQUJEREFpQUFJQUZCcWNRS0lBSVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNMR3dFQmYwRUJJUUVnQUJBekJIOGdBUVVnQUNnQ0VFSEpBa29MQzFrQkFuOENRQ0FBRUdBZ0FSQmdSdzBBUVFFaEFpQUFFR0JCQVVvRVFBTkFJQUFnQWhDc0JTQUJJQUlRckFWSERRSWdBQ0FDRUlNR0lBRWdBaENEQmtjTkFpQUNRUUZxSWdJZ0FCQmdTQTBBQ3d0QkFTRURDeUFEQy8wRUFRSi9Jd0JCRUdzaUJpUUFBa0FDUUNBRUtBSUFJZ1VOQUNBRUlBQW9Ba3dnQWtFQUlBWkJEMm9RckFFaUJUWUNBQUpBSUFWRkRRQWdBaEMzQlVVTkFDQUFLQUpNRUNRTkFDQUVRUUEyQWdBTUFnc0NRQ0FFS0FJQUlnVUVRQ0FHTFFBUERRRUxRWUFCRUVZaUJTQUNJQU5CQUJEdEFob2dCQ0FGTmdJQUlBQW9Ba3dnQlJEc0Fob2dBQ2dDVEJBWUJFQWdBQ0FFS0FJQUlBQW9BZ0FvQW9nQ0VRRUFDeUFBS0FKTUVDUU5BaUFBSUFNUWpnTUVRQ0FBUWNpckFXb2dCQkRjQVNBQUlBRkJBUkNaQkF3REN5QUFJQUVnQkNnQ0FDSUFJQUFvQWdBb0FqUVJBQUFReHdjTUFnc2dCU0FGS0FJQUtBSXNFUUFBQkVBZ0FDQUJRZFBBQ2lBQ0VCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCRUVBTmdJQURBSUxJQVFvQWdBaUJRMEFJQUFnQVVIK3dBb2dBaEFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBVWdCU2dDQUNnQ05CRUFBQ0lFSUFRb0FnQW9BbkFSQUFCRkJFQWdBQ0FCUVp2QkNpQUNFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0JDQURFT1VHUlFSQUlBQWdBVUc2d1FvZ0FoQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFRb0Fqd2dBeWdDUEJEQkQwVUVRQ0FBSUFGQjc4RUtJQUlRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3QkN5QUVJQVFvQWdBb0FuUVJBQUFFUUNBQUlBTVFqZ01FUUNBRUlBUW9BZ0FvQWp3UkFBQWdBeUFES0FJQUtBSThFUUFBUmcwQ0N5QUFJQUZCc2NJS0lBSVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBQUlBRWdBaUFESUFNb0FnQW9BandSQUFBUXV3Y2dCQ2dDUENBREtBSThFUDhGSUFBZ0F4Q09BMFVOQUNBQUlBRkJBQkNaQkFzZ0JrRVFhaVFBQ3pnQkFuOUJBU0VCQWtBZ0FCQmdRUUZNRFFBRFFDQUFJQUVRZ3daRkJFQWdBVUVCYWlJQklBQVFZRWdOQVF3Q0N3dEJBU0VDQ3lBQ0Mxd0JBWDlCQUNFQklBSW9Ba0FpQWhBM1FRQktCRUFEUUNBQ0lBRVFPQ2dDQUNJRElBTW9BZ0FvQW5BUkFBQUVRQ0FBSUFJZ0FSQTRRUVJxSUFNZ0F5Z0NBQ2dDVEJFQUFCQzJBd3NnQVVFQmFpSUJJQUlRTjBnTkFBc0xDK2dCQUFKQUlBSWdBaWdDQUNnQ0xCRUFBQ2tDQkVJL2cwSUVVZzBBSUFBb0FoUU5BQ0FDRUl3REJFQWdBQ0FCUVhkQm03MEtFRW9NQVFzZ0FpQUNLQUlBS0FLSUFSRUFBRVVOQUNBQUlBRkJkMEcvdlFvUVNnc0NRQ0FDSUFJb0FnQW9BaXdSQUFBcEFnUkNQNE5DQTFJTkFDQUFLQUlVUVFSSERRQWdBaENNQXdSQUlBQWdBVUYzUWVTOUNoQktEQUVMSUFJZ0FpZ0NBQ2dDaUFFUkFBQkZEUUFnQUNBQlFYZEJpYjRLRUVvTEFrQWdBaUFDS0FJQUtBSXNFUUFBS1FJRVFqK0RRZ1JTRFFBZ0FDZ0NGRUVFUncwQUlBSVFqQU5GRFFBZ0FDQUJRWGRCcjc0S0VFb0xDNHNDQVFKL0lBSW9BZ0FpQkVFT1JnUkFJQUFnQWtFRWFoREFCVUVDZEdwQnZBbHFJQU0yQWdBUEN3SkFBa0FDUUNBRVFRRkhCRUFnQkVFTlJnMEJJQVJCQ0VjTkFnc0NRQ0FDTFFDUUFVRUJSdzBBSUFJb0FwUUJEUUFnQWlnQ21BRkZJUVVMSUFWRkRRRWdBQ0FFUVFKMGFpQUROZ0xzQlNBRVFRaEdCRUFnQUNBRE5nS1FCaUFBUWJ5cEFXb2lBRUVCT2dBR0lBQXRBQWNFUUNBQVFRQTZBQVVMRHdzZ0FFRzhxUUZxSWdCQkFUb0FCeUFBTFFBR0JFQWdBRUVBT2dBRkN3OExJQU5CQTBZTkFTQUFJQUZCODdrS1FaZTZDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQThMSUFBZ0FVR2h1Z29nQkJESEJFSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0xMZ0VCZjBFQklRRWdBRUVLSUFBb0FnQW9BckFCRVFNQUJIOGdBUVVnQUVFTElBQW9BZ0FvQXJBQkVRTUFDd3N0QVFGL0l3QkJFR3NpQVNRQUlBRkJBRFlDRENBQUlBRkJER29RWnhvZ0FFRUVhaEM2QnlBQlFSQnFKQUFMV3dFQ2Z5QUFJQUZCbkFGcUlnSWdBVUVJYWlJREVMWUZJQUFnQWlBQlFUeHFFSmNFSUFNUTRnSUVRQ0FBSUFKQmxLa0tRYjZwQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUNBQklBRXBBZ3hDLy8vLy8yK0ROd0lNQ3d1YUFRQUNRQ0FBTFFDa0FRMEFJQUlnQWlnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElGVWcwQUlBSWdBaWdDQUNnQ3lBRVJBQUJGRFFBZ0FDZ0NJRUVCVGdSQUlBQWdBVUc1cUFvZ0FDZ0NBQ2dDbEFFUkJnQUxJQUFvQWlSQkFVZ05BQ0FDSUFJb0FnQW9BaXdSQUFBUWdBSU5BQ0FBS0FJb0xRRE5CUTBBSUFBZ0FVSGRxQW9nQXhBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3dlFBUUVCZnlNQVFSQnJJZ1FrQUFKQUlBSWdBaWdDQUNnQ0xCRUFBQ2tDQkVJL2cwSUZVUTBBQWtBZ0FpQUNLQUlBS0FJY0VRQUFRUTlIRFFBZ0FDQUNRUkVRN3dKRkRRQWdCQ0FDRUtrQ0lBQWdBVUdycHdvZ0JCQVRJQU1RRTBFQUlBQW9BZ0FvQXFBQkVRSUFJQVFRR1JvTUFRc2dBaUFDS0FJQUtBSWNFUUFBUVJGSERRQWdBaUFDS0FJQUtBSXNFUUFBS1FJRVFqK0RRZ1ZSRFFBZ0JDQUNFS2tDSUFBZ0FVSGpwd29nQkJBVElBTVFFMEVBSUFBb0FnQW9BcUFCRVFJQUlBUVFHUm9MSUFSQkVHb2tBQXZRQVFFQmZ5TUFRUkJySWdRa0FBSkFJQUlnQWlnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElGVVEwQUFrQWdBaUFDS0FJQUtBSWNFUUFBUVE5SERRQWdBQ0FDUVEwUTd3SkZEUUFnQkNBQ0VLa0NJQUFnQVVHMHBnb2dCQkFUSUFNUUUwRUFJQUFvQWdBb0FxQUJFUUlBSUFRUUdSb01BUXNnQWlBQ0tBSUFLQUljRVFBQVFRMUhEUUFnQWlBQ0tBSUFLQUlzRVFBQUtRSUVRaitEUWdWUkRRQWdCQ0FDRUtrQ0lBQWdBVUhncGdvZ0JCQVRJQU1RRTBFQUlBQW9BZ0FvQXFBQkVRSUFJQVFRR1JvTElBUkJFR29rQUF2aUFnRUNmeU1BUVJCcklnUWtBQUpBSUFJZ0FpZ0NBQ2dDSEJFQUFFRU9SdzBBSUFJZ0FpZ0NBQ2dDSUJFQUFCQ25CVVVOQUNBQUtBSUFLQUlVSVFVZ0FDZ0NFRUdyQWt3RVFDQUFJQUZCQVVINHBBcEIvS1FLSUFVUkNBQU1BUXNnQUNBQlFRRkJrS1VLUWZ5a0NpQUZFUWdBQ3lBQ0lBSW9BZ0FvQWlBUkFBQVFnQVlFUUNBQUlBRkJBVUdVcFFwQm1LVUtJQUFvQWdBb0FoUVJDQUFMQWtBZ0FpQUNLQUlBS0FJc0VRQUFLUUlFUWorRFFnVlJEUUFDUUNBQ0lBSW9BZ0FvQWh3UkFBQkJEMGNOQUNBQUlBSkJEaER2QWtVTkFDQUVJQUlRcVFJZ0FDQUJRYktsQ2lBRUVCTWdBeEFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCQkFaR2d3QkN5QUNJQUlvQWdBb0Fod1JBQUJCRGtjTkFDQUNJQUlvQWdBb0Fpd1JBQUFwQWdSQ1A0TkNCVkVOQUNBRUlBSVFxUUlnQUNBQlFlS2xDaUFFRUJNZ0F4QVRRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0JCQVpHZ3NnQkVFUWFpUUFDMW9BQWtBQ1FDQUNLQUlBUVF4SERRQWdBaWdDbEFFTkFDQUNMd0dRQVNJQ1FSaDBRUkIxUWY4L1NnMEFJQUpCSEhSQkVIVkJnU0JJRFFFTElBQWdBVUhicEFwQjQ5WUpRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd3ZvQVFFQmZ3Si9JQUFRTXdSQVFRRWdBQ2dDRUVHckFrb05BUm9MUVFBZ0FCQXpEUUFhUVFFZ0FDZ0NFRUdqQTBvTkFCb2dBRUdnNHdrZ0FDZ0NBQ2dDSUJFREFBc2hBeUFDQkVBZ0FDZ0NBQ2dDcEFFaEFpQURCRUFnQUNBQlFaT1pDa0dCbVFwQjQ5WUpRUUFnQWhFQ0FFRUJEd3NnQUNBQlFkdVpDa0dCbVFwQjQ5WUpRUUFnQWhFQ0FFRUFEd3NDZnlBQUVKQURCRUJCQVNBRERRRWFJQUFnQVVHbm1ncEJnWmtLUWVQV0NVRUFJQUFvQWdBb0FxUUJFUUlBUVFFUEN5QUFJQUZCQ0VHc0FrRUFRWUdaQ2hBb0lBQWdBVUYzUWFRRFFhRGpDVUdCbVFvUUtDQURDd3YvQVFBZ0FrSFNsZ3BCQXhEVUJVVUVRQ0FBSUFGQjFwWUtJQU1nQWtFQUlBQW9BZ0FvQXFnQkVRSUFEd3NnQWtHSGx3cEJDQkRVQlVVRVFDQUFJQUZCajVjS0lBTWdBa0VBSUFBb0FnQW9BcWdCRVFJQUR3c2dBa0dxbFFvUTB3TUVRQUpBSUFBUU0wVU5BQ0FBS0FJUVFhd0NTQTBBQWtBZ0FrR3Zsd29RZWtVTkFDQUNRYmlYQ2hCNlJRMEFJQUpCd1pjS0VIb05BUXNnQUNBQlFjMlhDaUFESUFKQkFDQUFLQUlBS0FLb0FSRUNBQThMQWtBZ0FCQXpSUTBBSUFBb0FoQkJxd0pLRFFBZ0FDQUJRZlNYQ2lBRElBSkJBQ0FBS0FJQUtBS29BUkVDQUE4TElBQWdBVUhLbUFvZ0F5QUNRUUFnQUNnQ0FDZ0NyQUVSQWdBTEMzRUFJQUFnQVNBQ0lBTVFnd29DUUNBRElBTW9BZ0FvQWpBUkFBQWlBMFVOQUNBRElBTW9BZ0FvQW9RQkVRQUFFSm9FRFFBZ0F5QURLQUlBS0FLRUFSRUFBQkNUQmtVTkFDQUFJQUZCOEpNS0lBSWdBeUFES0FJQUtBTEFBUkVBQUJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FMQy9FSEFRZC9Jd0JCNEFCcklnVWtBQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBeUFES0FJQUtBSWdFUUFBSWdaRkRRQUNRQ0FHS0FKb1FjOSthaUlFUVFOTERRQUNRQ0FFUVFKckRnSUJBd0FMSUFBb0FoUkJBVWNOQUNBR0lBWW9BZ0FvQXNBQkVRQUFJZ1FnQkNnQ0FDZ0NlQkVBQUNJRUlBUW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0JGSU5BQ0FFSUFRb0FnQW9BaXdSQUFBdEFBbEJBWEVOQUNBR0lBWW9BZ0FvQXNBQkVRQUFJZ1FnQkNnQ0FDZ0NNQkVBQUVVTkFDQUdJQVlvQWdBb0FzUUJFUUFBSWdRZ0JDZ0NBQ2dDTUJFQUFDSUVCRUFnQkNBRUtBSUFLQUtJQVJFQUFDa0NCRUxBL3dHRFFzQVpVUTBCQ3lBQUlBRkI4WkFLUWMvZ0NVSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc2dCaWdDYUVHekFVY05BQ0FHSUFZb0FnQW9Bc0FCRVFBQUVQSUJEUWNMUVFFaENDQUFJQUVnQWlBREVJUUtEUVpCQUNFRUlBTWdBeWdDQUNnQ01CRUFBQ0lIQkVBZ0J5QUhLQUlBS0FMQUFSRUFBQkFUSVFrTElBTWdBeWdDQUNnQ2hBRVJBQUFvQWdSQlAzRWlDa0Z2YWlJRFFRbE5EUUZCakpJS0lRTWdDa0VEUncwQ0RBUUxRUUVoQ0NBQUlBRWdBaUFHSUFZb0FnQW9Bc0FCRVFBQUlBQW9BZ0FvQXV3QkVRa0FEUVVnQlVJQU53TllJQVZDQURjRFVDQUZJQVlnQmlnQ0FDZ0N4QUVSQUFBaUF5QURLQUlBS0FJWUVRQUFJZ01nQXlnQ0FDZ0N2QUVSQUFBUVFEWUNTQ0FGSUFNZ0F5Z0NBQ2dDdkFFUkFBQVFNallDUUNBRlFjZ0FhaUFGUVVCckVCNUZEUVFEUUFKQUlBVkIwQUJxSUFVb0FrZ29BZ0FpQkNBRUtBSUFLQUlNRVFBQUlnUWdCQ2dDQUNnQ0ZCRUFBQkJMUVFBUUR5Z0NBRUVDZEdvaUJDQUVLQUlBSWdSQkFXbzJBZ0FnQkVFQVNnMEFJQVZCeUFCcUVNNEJHaUFGSUFNZ0F5Z0NBQ2dDdkFFUkFBQVFNallDUUNBRlFjZ0FhaUFGUVVCckVCNE5BUXdHQ3dzZ0FDZ0NBQ2dDb0FFaEF5QUZRZVBXQ1RZQ01DQUFJQUZCeFpFS0lBSkI0OVlKSUFWQk1Hb2dBeEVDQUF3RkN3SkFBa0FDUUFKQUFrQWdBMEVCYXc0SkJnVUZCUUVDQXdVRUFBdEJ3WklLSVFNTUJndEIycElLSVFNTUJRdEI5SklLSVFNTUJBdEJqcE1LSVFNTUF3c2dBQ2dDS0VFQk9nRGNBeUFBRURORkRRQkJxWk1LUVFBZ0FDZ0NLQzBBclFRYklRUUxJQVFnQmlBSGNuSkZCRUFnQUNnQ0FDZ0NvQUVoQXlBRlFlUFdDVFlDQUNBQUlBRkIrcEVLSUFKQjQ5WUpJQVVnQXhFQ0FBd0VDeUFFSWdORkRRSU1BUXRCcHBJS0lRTUxJQUFvQWdBb0FxQUJJUVFnQndSQUlBVWdBellDRkNBRklBazJBaEFnQUNBQlFmcVJDaUFDUWVHVENpQUZRUkJxSUFRUkFnQU1BZ3NnQlNBRE5nSWdJQUFnQVVINmtRb2dBa0hya3dvZ0JVRWdhaUFFRVFJQURBRUxRUUFoQ0FzZ0JVSGdBR29rQUNBSUN6WUFJQUJCdktrQmFpSUNMUUFGQkVBZ0FDQUJRY0tNQ2tIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDcEFFUkFnQWdBa0VBT2dBRkN3dStBZ0VDZnlBQUlBRWdBaUFDS0FJQUtBSjRFUUFBUWYzdUNSRHJDU0FBUVFFNkFHUWdBQ2dDWUNJRElBTW9BZ0FvQWh3UkFBQkZCRUFnQUNBQlFZVHZDVUg5N2dsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0FDZ0NLRUhEQXlBQkVQWUREd3NnQUNnQ1lDQUNJQUlvQWdBb0FuZ1JBQUFRd0FFaEJDQUFLQUlvSVFNZ0JBUkFBa0FnQTBIREF5QUFLQUpnSUFJUXR3UWlBd1JBSUFBb0FtQWdBeUFES0FJQUtBSjRFUUFBRU1BQkJFQWdBQ0FCUWFqdkNVSDk3Z2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBb0FoQkJvd05LRFFFZ0FDQUJRZHp2Q1VIOTdnbEI0OVlKUVFBZ0FDZ0NBQ2dDcEFFUkFnQU1BUXNnQUNBQlFhcndDVUg5N2dsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0FpRURDeUFBS0FJb1FjTURJQU1nQVJEV0JnOExJQU5Cd3dNZ0FpQUJFTllHQzdNT0FRVi9JQU1nQXlnQ0FDZ0NTQkVBQUNJRUlBUW9BZ0FvQXNBQkVRQUFJUVFDUUFKQUFuOGdBeWdDYUNJRlFkeDhhaUlHUVFsTEJFQUNRQUpBQWtBQ1FBSkFBa0FnQlVHemUyb2lCa0VKU3dSQUlBVkIwWDFxSWdWQkFVME5BVUVBSVFaQkFDRUZEQW9MSUFaQkIyc09BZ01DQVFzZ0JVRUJhdzBEREFRTFFRQWhCaUFFUVFRUUVTZ0NBQ0lGSUFVb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBaEJ5QUVRUVVRRVNnQ0FDSUVJQVFvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FNQlF0QkFDRUdJQVJCQXhBUktBSUFJZ1VnQlNnQ0FDZ0NGQkVBQUJCTFFRQVFEeWdDQUNFSElBUkJCQkFSS0FJQUlnUWdCQ2dDQUNnQ0ZCRUFBQkJMUVFBUUR5Z0NBQXdFQ3lBRVFRVVFFU2dDQUNJRklBVW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhCeUFFUVFZUUVTZ0NBQ0lGSUFVb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBaEJTQUVRUWNRRVNnQ0FDSUdJQVlvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FoQ0NBRVFRZ1FFU2dDQUNJRUlBUW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhCZ3dFQzBFQUlRWWdCRUVDRUJFb0FnQWlCU0FGS0FJQUtBSVVFUUFBRUV0QkFCQVBLQUlBSVFjZ0JFRURFQkVvQWdBaUJDQUVLQUlBS0FJVUVRQUFFRXRCQUJBUEtBSUFEQUlMUVFBaEJpQUVRUUVRRVNnQ0FDSUZJQVVvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FoQnlBRVFRSVFFU2dDQUNJRUlBUW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQU1BUXNDUUFKQUFrQWdCa0VIYXc0Q0FBRUNDeUFFUVFRUUVTZ0NBQ0lGSUFVb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBaEJ5QUVRUVVRRVNnQ0FDSUZJQVVvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0FoQlNBRVFRWVFFU2dDQUNJR0lBWW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhDQ0FFUVFjUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBaEJnd0RDMEVBSVFZZ0JFRUNFQkVvQWdBaUJTQUZLQUlBS0FJVUVRQUFFRXRCQUJBUEtBSUFJUWNnQkVFREVCRW9BZ0FpQkNBRUtBSUFLQUlVRVFBQUVFdEJBQkFQS0FJQURBRUxRUUFoQmlBRVFRTVFFU2dDQUNJRklBVW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhCeUFFUVFRUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBTElRVUxBa0FnQlVFQ2NVVU5BQ0FES0FKb1FhMERSd1JBSUFNb0FtaEIxZ1JIRFFFTElBQWdBVUhtK1FrZ0FpQUNLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQWtBZ0JVRUVjVVVOQUNBREtBSm9RYXdEUndSQUlBTW9BbWhCMVFSSERRRUxJQUFnQVVHbCtna2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBVkJDSEZGRFFBQ1FDQURLQUpvUWEwRFJnMEFJQU1vQW1oQjFnUkdEUUFnQXlnQ2FFR3NBMFlOQUNBREtBSm9RZFVFUncwQkN5QUFJQUZCNC9vSklBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRklBWnlRZkcvZkhFRVFDQUFJQUZCcnZzSklBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBSElBaHlRYjlOY1FSQUlBQWdBVUhHK3drZ0FpQUNLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFWQkRuRWhCQUpBSUFNb0FtaEJzQUpHQkVBZ0JCREJCdzBCSUFBZ0FVSHMrd2tnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNDUUNBRVJRMEFJQVFRd1FjTkFDQUFJQUZCMnZ3SklBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBR1FRNXhJZ1JGRFFBZ0JCREJCdzBBSUFBZ0FVSEovUWtnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQWNnQXlnQ2FFR3dBa2R5UlFSQUlBQWdBVUc1L2drZ0FpQUNLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFjZ0JVVnlJQU1vQW1oQnJ3Skhja1VFUUNBQUlBRkJ1ZjRKSUFJZ0FpZ0NBQ2dDREJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFNb0FtaEJxd05IQkVBZ0F5Z0NhRUhVQkVjTkFRc2dCa0VNY1VVTkFDQUFJQUZCNHY0SklBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRlFZekFBSEZCZ01BQVJnUkFJQUFnQVVHci93a2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBVkJpb0FCY1VHQWdBRkdCRUFnQUNBQlFZQ0FDaUFDSUFJb0FnQW9BZ3dSQUFBUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBc0NRQ0FGUVlDQUFuRkZEUUFnQXlnQ2FFR3dBa2NFUUNBREtBSm9RYThDUncwQkN5QUFJQUZCMDRBS0lBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBTW9BbWhCcXdOSEJFQWdBeWdDYUVIVUJFY05BUXNnQlNBR2MwR0FnQUp4UlEwQUlBQWdBVUdlZ1FvZ0FpQUNLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMQzFVQkEzOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQkVMRUpJQUFnQWtFSWFoQ3dDU0VBSUFFUUh5RURRZStCQ2hDZ0FTRUVJQUFnQVJBVElBTWdBeUFFYWhDdkNTQUFRZStCQ2lBRUVLQUhHaUFDUVJCcUpBQUxwU0FCQ0g4akFFRWdheUlKSkFBQ1FDQURJQU1vQWdBb0FoZ1JBQUFFUUNBRElBTW9BZ0FvQWhnUkFBQWlCU0FGS0FJQUtBSzhBUkVBQUNJRkVCWkZEUUVnQlVFQUVCRW9BZ0FpQnlBSEtBSUFLQUlNRVFBQUlRY01BUXNnQXlBREtBSUFLQUljRVFBQUlnVWdCU2dDQUNnQ3ZBRVJBQUFoQjBFQUlRVUxJQWxCRUdvUTFRRWhDZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU1vQW1naUJFSEhCRXdFUUNBRVFad0RUQVJBSUFSQnhRSk1CRUFnQkVIZ2ZXcEJCRWtOQ0NBRVFkTjlha0VDU1EwSklBUkIwWDFxUVFKUERROGdCUkFXUlEwUERBNExJQVJCbDMxcUlnWkJCMHNFUUNBRVFjWUNSdzBQREEwTElBWkJCMnNOQ1F3TUN5QUVRZU44YWlJRVFSQkxEUTBnQkVFQmF3NFFBZzBORFEwTkJRVUZCUVVGQlFVRkJRRUxJQVJCczN0cUlnWkJ3Z0JORFFnZ0JFSFVlbW9pQmtFRVN3UkFJQVJCeUFSSERRME1DZ3NnQmtFQmF3NEVEQXdNQXdJTElBVkJBUkFSS0FJQUlnUWdCQ2dDQUNnQ0ZCRUFBRVVFUUNBQUlBRkJ0SU1LUWR1RENrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd01DeUFGUVFFUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVMwRUFFQThvQWdBZ0JVRUJFQkVvQWdBaUJDQUVLQUlBS0FJVUVRQUFFRXRCQVJBUEtBSUFjaUFGUVFFUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVMwRUNFQThvQWdCeUlBVkJBUkFSS0FJQUlnVWdCU2dDQUNnQ0ZCRUFBQkJMUVFNUUR5Z0NBSEpCQkVrTkN5QUFJQUZCNG9NS1FkdURDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdMQ3lBRlFRRVFFU2dDQUNJRUlBUW9BZ0FvQWhRUkFBQkZCRUFnQUNBQlFiU0RDa0dKaEFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUN3c2dCVUVCRUJFb0FnQWlCQ0FFS0FJQUtBSVVFUUFBRUV0QkFCQVBLQUlBSUFWQkFSQVJLQUlBSWdRZ0JDZ0NBQ2dDRkJFQUFCQkxRUUVRRHlnQ0FISWdCVUVCRUJFb0FnQWlCU0FGS0FJQUtBSVVFUUFBRUV0QkFoQVBLQUlBY2tFZ1NRMEtJQUFnQVVHT2hBcEJpWVFLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFvTElBVkJDaEFSS0FJQUlnVWdCU2dDQUNnQ0ZCRUFBQTBKSUFBZ0FVRzBnd3BCajRVS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBa0xJQVZCQVJBUktBSUFJZ1VnQlNnQ0FDZ0NGQkVBQUEwSUlBQWdBVUcwZ3dwQm5vVUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQWdMSUFVUUZrRUVUdzBHSUFjZ0J5Z0NBQ2dDZUJFQUFDSUZJQVVvQWdBb0Fod1JBQUJCQ2tjRVFDQUhJQWNvQWdBb0FuZ1JBQUFpQlNBRktBSUFLQUljRVFBQVFRdEhEUWdMSUFsQnlJY0tLUU1BTndNQUlBQWdBVUVDSUFrZ0FpQUNLQUlBS0FJTUVRQUFFQk1nQUNnQ0FDZ0NGQkVJQUF3SEN3SkFJQWNnQnlnQ0FDZ0NlQkVBQUNJRUlBUW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0ExRU5BQ0FISUFBUU13Ui9RUUFGSUFBb0FoQkJ0d05LQ3hETkZDSUVCRUFnQkNBRUtBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ0xCRUFBQ2tDQkVJL2cwSURVUTBCQ3lBQUlBRkIwSWNLSUFJZ0FpZ0NBQ2dDREJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFES0FKb1FhTUNSdzBHSUFjZ0J5Z0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0Fpd1JBQUFRa3daRkJFQWdBQ0FCUVpTSUNrSEppQXBCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQndzZ0JVRUJFQkVvQWdBaUJDQUVLQUlBS0FJVUVRQUFSUVJBSUFBZ0FVRzBnd3BCMVlnS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBY0xJQVZCQVJBUktBSUFJZ1VnQlNnQ0FDZ0NGQkVBQUJCTFFRQVFEeWdDQUVFRFNRMEdJQUFnQVVIaWlBcEIxWWdLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFZTElBQW9BaWdRN0FrTUJRc2dCVUVCRUJFb0FnQWlCQ0FFS0FJQUtBSVVFUUFBUlFSQUlBQWdBVUcwZ3dwQi9vZ0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQVVMSUFWQkFSQVJLQUlBSWdVZ0JTZ0NBQ2dDRkJFQUFCQkxRUUFRRHlnQ0FDSUZRUUJNQkVBZ0FDQUJRWXVKQ2tIK2lBcEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1CUXNnQlJEQ0J3MEVJQUFnQVVHbmlRcEIvb2dLUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFRTEFrQUNRQUpBQWtBQ1FDQUdRUXByRGprSUNBZ0lDQWdJQ0FnRkNBZ0lDQUVJQVFFQkNBRUlBUWdCQkFRRUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUF3TURDQWdJQ0FnQ0FnSUFDd0pBQWtBZ0J5QUhLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NJQkVBQUMwQUFFRUlSd1JBSUFRZ0JDZ0NBQ2dDSUJFQUFDMEFBRUVKUncwQkN5QUVJQVFvQWdBb0Fpd1JBQUF0QUNSQkdrWU5BU0FFSUFRb0FnQW9BaXdSQUFBdEFDUkJKVVlOQVNBQUlBRkI5NFVLSUFJZ0FpZ0NBQ2dDREJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFJZ0FpZ0NBQ2dDREJFQUFFRVRRYW1HQ2hDRkFnUkFJQUFnQVVHOWhnb2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dCQ0FFS0FJQUtBSXNFUUFBTFFBa1FRTkdEUUFnQUJBelJRMEFJQUFnQVVIZWhnb2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBUWdCQ2dDQUNnQ0lCRUFBQkNLQVNFRUlBVVFGa0VGUVFRZ0JCdE5EUWNNQmdzZ0F5Z0NhRUdiZTJvaUJFRUtTdzBHUVFJaEJnSkFBa0FDUUFKQUlBUkJBV3NPQ2dvQUF3RUtBUW9DQ2dJREMwRUNRUU1nQnlBSEtBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ0lCRUFBQkQyQlJzaEJnd0NDMEVESVFZTUFRdEJCQ0VHQ3lBRkFuOGdCVUVCRUJFb0FnQWlCQ0FFS0FJQUtBSU1FUUFBSWdRZ0JDZ0NBQ2dDZ0FFUkFBQkJBMFlFUUNBSElBY29BZ0FvQW5nUkFBQWlCQ0FFS0FJQUtBSWdFUUFBS0FJQVFSRjJRUUZ4SUFacUlRWUxJQVlMRUJFb0FnQWlCQ0FFS0FJQUtBSVVFUUFBUlFSQUlBQWdBVUcwZ3dwQnRvUUtRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQWNMSUFVZ0JoQVJLQUlBSWdRZ0JDZ0NBQ2dDREJFQUFDSUVJQVFvQWdBb0FuZ1JBQUFpQ0NBSUtBSUFLQUl3RVFBQVFRRklEUVpCQUNFRUEwQUNRQ0FGSUFZUUVTZ0NBQ0lMSUFzb0FnQW9BaFFSQUFBUVN5QUVFQThvQWdBaUN5QUFLQUtFQjB3RVFDQUxJQUFvQW9BSFRnMEJDeUFBSUFGQnc0UUtRYmFFQ2tIYWhBcEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0JFRUJhaUlFSUFnZ0NDZ0NBQ2dDTUJFQUFFZ05BQXNNQmdzZ0FDQUJRUUZCc0lNS0lBSWdBaWdDQUNnQ0RCRUFBQkFUSUFBb0FnQW9BaFFSQ0FBTUJRc0NRQ0FES0FKb1FZVUZSZ1JBSUFJZ0FpZ0NBQ2dDa0FFUkFBQkJCRW9OQVF3R0N5QURLQUpvUVlZRlJ3UkFJQU1vQW1oQmh3VkhEUVlMSUFJZ0FpZ0NBQ2dDa0FFUkFBQkJCa2dOQlFzZ0NpQUNJQUlvQWdBb0Fnd1JBQUFRNkFJZ0NrR1hnd29Ra2dFZ0FDQUJRWGRCd2dOQkFDQUtFQk1pQlJBb0lBQWdBVUVCUWF5RENpQUZJQUFvQWdBb0FoUVJDQUFNQkFzZ0NpQUNJQUlvQWdBb0Fnd1JBQUFRNkFJZ0NrSHZnUW9Ra2dFZ0FDQUJRUWhCdGdKQkFDQUtFQk1pQmhBb0FrQWdBeWdDYUVHUWUyb2lCRUVDU3cwQUFrQUNRQUpBQWtBZ0JFRUJhdzRDQVFJQUMwRUNJUVFDUUFKQUlBSWdBaWdDQUNnQ2tBRVJBQUJCQWtvTkFDQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlDQ0FJS0FJQUtBSWtFUUFBTFFBQlFRaDBRWUFLUmcwQUlBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUlJQWdvQWdBb0FpUVJBQUF0QUFKQkFuRkZEUUVMSUFBZ0FVRjNRWkFEUWZXQkNpQUdFQ2dnQWtFQUlBSW9BZ0FvQXFBQkVRTUFLQUlFSWdnZ0NDZ0NBQ2dDSkJFQUFDMEFBa0VDY1VVTkF3d0VDeUFBSUFGQmQwR1FBMEdJZ2dvZ0JoQW9EQU1MSUFBZ0FVRjNRWkFEQW44Q1FDQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlCQ0FFS0FJQUtBSWtFUUFBTFFBQlFRaDBRWUFFUncwQUlBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUVJQVFvQWdBb0FpUVJBQUF0QUFKQkFuRU5BRUdJZ2dvZ0FpQUNLQUlBS0FLUUFSRUFBRUVEUmcwQkdndEI5WUVLQ3lBR0VDaEJBeUVFSUFWQkEwRUNJQUpCQUNBQ0tBSUFLQUtnQVJFREFDZ0NCQ0lJSUFnb0FnQW9BaVFSQUFBb0FnQkJnSUFJY1JzUUVTZ0NBQ0lJSUFnb0FnQW9BaFFSQUFCRkJFQWdBQ0FCUVFoQndBSkJBa0dFM3dsQm5vSUtFTkVCQ3lBQ1FRQWdBaWdDQUNnQ29BRVJBd0FvQWdRaUNDQUlLQUlBS0FJa0VRQUFMUUFDUVFKeFJRMEJEQUlMSUFBZ0FVRjNRWkFEUWZXQkNpQUdFQ2hCQXlFRUlBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUlJQWdvQWdBb0FpUVJBQUFvQWdCQmdJQUljU0VJSUFWQkEwRUNJQUpCQUNBQ0tBSUFLQUtnQVJFREFDZ0NCQ0lMSUFzb0FnQW9BaVFSQUFBb0FnQkJnSUFJY1JzUUVTZ0NBQ0lMSUFzb0FnQW9BaFFSQUFCRkJFQWdBQ0FCUWJ1Q0NpQUdRZHlDQ2tFQUlBQW9BZ0FvQXFBQkVRSUFDeUFJRFFFTElBUWdBaUFDS0FJQUtBS1FBUkVBQUU0TkFDQUZJQVFRRVNnQ0FDSUlJQWdvQWdBb0FoUVJBQUFFUUNBRklBUVFFU2dDQUNJRklBVW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQkJCRWtOQVNBQUlBRkI3WUlLSUFaQmhJTUtRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUWJ1Q0NpQUdRWVNEQ2tFQUlBQW9BZ0FvQXFBQkVRSUFDd0pBSUFNb0FtaEI4QVJHQkVBZ0FpQUNLQUlBS0FLUUFSRUFBRUVEU2cwQkRBVUxJQU1vQW1oQjhRUkhCRUFnQXlnQ2FFSHlCRWNOQlFzZ0FpQUNLQUlBS0FLUUFSRUFBRUVGU0EwRUN5QUtJQUlnQWlnQ0FDZ0NEQkVBQUJEb0FpQUtRWmVEQ2hDU0FTQUFJQUZCZDBIQ0EwRUFJQW9RRXlJRkVDZ2dBQ0FCUVFGQnJJTUtJQVVnQUNnQ0FDZ0NGQkVJQUF3REN5QUFJQUZCZDBIQ0EwR3poUXBCMTRVS0VDZ01BZ3NnQUNnQ0dFSC9pUVJMRFFFZ0JVRUJFQkVvQWdBaUJTQUZLQUlBS0FJVUVRQUFEUUVnQUNBQlFiU0RDa0hGaVFwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBQ0FCUVFGQmlJY0tJQUlnQWlnQ0FDZ0NEQkVBQUJBVElBQW9BZ0FvQWhRUkNBQWdBQ0FCSUFJZ0F4RFZEd3NDUUNBREtBSm9RYU43YWlJRlFRcExRUUVnQlhSQmpReHhSWElOQUVFQUlRVWdBa0VBSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ1FnQkNnQ0FDZ0NKQkVBQUNJRUVLTUhCRUFnQkJDb0FrRUJjeUVGQ3lBRklBUVEvUUZCQVhNZ0F5Z0NhRUhtQkVjRWZ5QURLQUpvUWVjRVJ3VkJBQXR5Y1VFQlJ3MEFJQUFnQVVFQlFjaUpDaUFDSUFJb0FnQW9BZ3dSQUFBUUV5QUFLQUlBS0FJVUVRZ0FDd0pBSUFNb0FtaEJ3MzFxUWMwQVR3MEFJQUFvQWhoQmYycEIvb1VFVFFSQUlBQWdBVUd0MmdsQnpJa0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFIUlEwQUlBY2dCeWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaHdSQUFCQmZXb2lBMEVJU3cwQUFrQUNRQUpBQWtBZ0EwRUJhdzRJQUFBQkFRUUVBZ0lEQ3lBSklBSVF5Z0VnQUNBQlFRRkIySWtLSUFrUUV5QUFLQUlBS0FJVUVRZ0FJQWtRR1JvTUF3c2dDU0FDRU1vQklBQWdBVUVCUWR5SkNpQUpFQk1nQUNnQ0FDZ0NGQkVJQUNBSkVCa2FEQUlMSUFrZ0FoREtBU0FBSUFGQkFVSGdpUW9nQ1JBVElBQW9BZ0FvQWhRUkNBQWdDUkFaR2d3QkN5QUpJQUlReWdFZ0FDQUJRUUZCNUlrS0lBa1FFeUFBS0FJQUtBSVVFUWdBSUFrUUdSb0xJQW9RR1JvZ0NVRWdhaVFBQzk4R0FRZC9Jd0JCRUdzaUFpUUFJQUpCQURZQ0RDQUFJQUFvQWdBb0FoQVJBQUFpQlFSQUFrQUNRQ0FBSUFBb0FnQW9BaHdSQUFBaUJnUkFJQUlnQVVFQUlBRW9BZ0FvQXFBQkVRTUFLQUlFSWdBZ0FDZ0NBQ2dDS0JFQUFDMEFCMEVIY1RZQ0NDQUNJQVlnQmlnQ0FDZ0N2QUVSQUFBaUFDQUFLQUlBS0FKNEVRQUFJZ0FnQUNnQ0FDZ0NMQkVBQUMwQUIwRUhjVFlDQkNBQ0lBSkJDR29nQWtFRWFoQ21BU2dDQURZQ0RDQUJJQUVvQWdBb0FqQVJBQUFpQUNBQUtBSUFLQUljRVFBQVFReEdEUUlnQVNBQktBSUFLQUl3RVFBQUlnQWdBQ2dDQUNnQ0xCRUFBQzBBQjBFSGNVVU5BU0FCSUFFb0FnQW9BakFSQUFBaUFDQUFLQUlBS0FJc0VRQUFMUUFIUVFkeElRY01BZ3NnQUNBQUtBSUFLQUlZRVFBQUlnUkZEUUVnQkNBRUtBSUFLQUs4QVJFQUFDSUlFQlloQUVFQklRWUNRQUpBSUFRb0FtZ2lBMEhnZldwQkEwa05BQ0FEUWVKNmFpSURRUUZOQkVBZ0EwRUJhdzBCUVFJaEJnd0JDeUFBSWdaRkRRRUxRUUFoQUFOQUlBSWdDQ0FBRUJFb0FnQWlBeUFES0FJQUtBSU1FUUFBSWdNZ0F5Z0NBQ2dDaEFFUkFBQXRBQWRCQjNFMkFnZ2dBaUFDUVF4cUlBSkJDR29RcGdFb0FnQTJBZ3dnQWlBQklBQWdBU2dDQUNnQ29BRVJBd0FvQWdRaUF5QURLQUlBS0FJb0VRQUFMUUFIUVFkeE5nSUlJQUlnQWtFTWFpQUNRUWhxRUtZQktBSUFOZ0lNSUFCQkFXb2lBQ0FHUncwQUN3c0NRQUpBSUFRb0FtaEJubnRxUVRaSkRRQWdCQ2dDYUVISkJFWU5BQ0FFS0FKb1Fjb0VSZzBBSUFRb0FtaEJ5d1JHRFFBZ0JDZ0NhRUhNQkVjTkFRc2dDRUVBRUJFb0FnQWlBQ0FBS0FJQUtBSU1FUUFBSWdBZ0FDZ0NBQ2dDaEFFUkFBQXRBQWRCQjNFaEJ3d0NDeUFCSUFFb0FnQW9BakFSQUFBaUFDQUFLQUlBS0FJY0VRQUFRUXhHRFFFZ0FTQUJLQUlBS0FJd0VRQUFJZ0FnQUNnQ0FDZ0NMQkVBQUMwQUIwRUhjVVVOQUNBQklBRW9BZ0FvQWpBUkFBQWlBQ0FBS0FJQUtBSXNFUUFBTFFBSFFRZHhJUWNNQVFzZ0FpZ0NEQ0VIQ3lBRklBVW9BZ0FvQW9RQkVRQUFJZ0FnQUNrQ0JFTC8vLzlIZ3pjQ0JDQUNLQUlNSWdBRVFDQUZJQUFnQlNnQ0FDZ0NqQUVSQVFBZ0JTQUNLQUlNTmdKc0N5QUZJQVVvQWdBb0FvUUJFUUFBSWdBZ0IwRVlkRUdBZ0lBNGNhMGdBQ2tDQkVMLy8vOUhnNFEzQWdRTElBSkJFR29rQUF2UEJRRUJmd0pBSUFKQndYeHFJZ05CQVVzRVFDQUNRYThDUncwQklBQW9BaFJCQVVjTkFTQUFLQUpjUVFGT0JFQWdBQ0FCUWZUd0NVSGoxZ2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBdEFMQUZSUVJBSUFBZ0FVRzQ4UWxCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUR3c2dBQzBBWlVVTkFTQUFJQUZCNmZFSlFlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQThMSUFOQkFXdEZCRUFnQUNnQ0ZFRUVSd1JBSUFBZ0FVR3o5UWxCNDlZSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN3SkFJQUF0QUxBRlJRUkFJQUFnQVVIczlRbEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBQXRBR1ZGRFFBZ0FDQUJRWnIyQ1VIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQUFvQWx4QkFVNEVRQ0FBSUFGQjR2WUpRZVBXQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0FDZ0NvQUZCQVU0RVFDQUFJQUZCby9jSlFlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQUNnQ25BRkZCRUFnQUNBQlFlUDBDVUhqMWdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQWdBQ2dDb0FGQkFXbzJBcUFCREFFTElBQW9BaFJCQkVjRVFDQUFJQUZCdFBJSlFlUFdDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBQUxRQ3dCVVVFUUNBQUlBRkI3L0lKUWVQV0NVSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFBTFFCbFJRMEFJQUFnQVVHZjh3bEI0OVlKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSmNRUUZPQkVBZ0FDQUJRZW56Q1VIajFnbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQUxJQUFvQXB3QlFRRk9CRUFnQUNBQlFhejBDVUhqMWdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQW9BcUFCUVFGT0JFQWdBQ0FCUWVQMENVSGoxZ2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FMSUFBZ0FDZ0NuQUZCQVdvMkFwd0JJQUFvQWlnb0FxZ0VEUUFnQUNnQ0tFRUJFTzBKR2dzTEtBQWdBQkFiR2lBQkJFQURRQ0FCS0FJQUlRQWdBVUVJYWhEb0NTQUJFQ29nQUNJQkRRQUxDd3ZHQWdFRmZ5TUFRZUFBYXlJRUpBQUNRQ0FBS0FKTUlBSWdBaWdDQUNnQ0dCRUFBQ0FEUVFBUXJBRWlCUVJBSUFVZ0JTZ0NBQ2dDSEJFQUFDRUREQUVMSUFSQjBBQnFFSk1CSVFVZ0FDZ0NUQ0FDSUFJb0FnQW9BaGdSQUFBZ0JTQURFTFVISUFNdEFBQWhBeUFFUVFBNkFFOGdCRUU0YWlBRkVNNEdJUVlnQkNBRE9nQWtJQVFnQURZQ0lDQUVJQVFwQXlBM0F3Z2dCaUFDQW44Z0JFRW9haUlISUFSQkNHb1FzQThnQndzZ0JFRVFhaEN5RHlJSUlBUkJ6d0JxRUlFS0lRTWdDQkNzQWlBSEVLd0NJQVlRMndFQ1FDQURSUVJBSUFBZ0FVRzdrUXNnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQkMwQVQwVU5BQ0FBSUFGQnZwSUxJQUlnQWlnQ0FDZ0NEQkVBQUJBVFFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUZFTnNCQ3lBRVFlQUFhaVFBSUFNTHlBSUJCWDhqQUVIZ0FHc2lCQ1FBQWtBZ0FDZ0NUQ0FDSUFJb0FnQW9BaGdSQUFBZ0EwRUFFS3dCSWdVRVFDQUZJQVVvQWdBb0Fod1JBQUFoQXd3QkN5QUVRZEFBYWhDVEFTRUZJQUFvQWt3Z0FpQUNLQUlBS0FJWUVRQUFJQVVnQXhDMUJ5QURMUUFBSVFNZ0JFRUFPZ0JQSUFSQk9Hb2dCUkRPQmlFR0lBUWdBem9BSkNBRUlBQTJBaUFnQkNBRUtRTWdOd01JSUFZZ0FnSi9JQVJCS0dvaUJ5QUVRUWhxRUs0UElBY0xJQVJCRUdvZ0FCQ3hEeUlJSUFSQnp3QnFFSUVLSVFNZ0NCQ3NBaUFIRUt3Q0lBWVEyd0VDUUNBRFJRUkFJQUFnQVVHN2tRc2dBaUFDS0FJQUtBSU1FUUFBRUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dCQzBBVDBVTkFDQUFJQUZCdnBJTElBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBRkVOc0JDeUFFUWVBQWFpUUFJQU1MalFZQkJuOGpBRUVnYXlJR0pBQUNRQ0FBS0FKTUlBSWdBaWdDQUNnQ0dCRUFBQ0FEUVFBUXJBRWlDQVJBSUFnZ0NDZ0NBQ2dDSEJFQUFDRUREQUVMSUFaQkVHb1Frd0VoQ1NBQUtBSk1JQUlnQWlnQ0FDZ0NHQkVBQUNBSklBTVF0UWNnQmlBSkVFQTJBZ2dnQmlBSkVESTJBZ0FDUUNBR1FRaHFJQVlRSGdSQVFRQWhBd05BSUFNaENDQUdLQUlJS0FJQUlRTUNRQUpBSUFJZ0FpZ0NBQ2dDa0FFUkFBQWdBeUFES0FJQUtBS1FBUkVBQUVjTkFDQURJQU1vQWdBb0FwQUJFUUFBUVFGT0JFQkJBQ0VFQTBBQ1FDQURJQVFnQXlnQ0FDZ0NvQUVSQXdBb0FnUWdBaUFFSUFJb0FnQW9BcUFCRVFNQUtBSUVFS01DRFFBZ0F5QUVJQU1vQWdBb0FxQUJFUU1BS0FJRUlnVWdCU2dDQUNnQ2NCRUFBQTBESUFJZ0JDQUNLQUlBS0FLZ0FSRURBQ2dDQkNJRklBVW9BZ0FvQW5BUkFBQU5BeUFESUFRZ0F5Z0NBQ2dDb0FFUkF3QW9BZ1FnQWlBRUlBSW9BZ0FvQXFBQkVRTUFLQUlFRVBzSFJRMERRUUVoQlNBRElBUWdBeWdDQUNnQ29BRVJBd0FvQWdRaUJ5QUhLQUlBS0FJb0VRQUFFTU1IQkVBZ0FDZ0NLQ0FDSUFRZ0FpZ0NBQ2dDb0FFUkF3QW9BZ1FpQlNBRktBSUFLQUljRVFBQUlBTWdCQ0FES0FJQUtBS2dBUkVEQUNnQ0JDSUZJQVVvQWdBb0Fod1JBQUJCQUJEaEFpRUZDeUFESUFRZ0F5Z0NBQ2dDb0FFUkF3QW9BZ1FpQnlBSEtBSUFLQUlvRVFBQUVOVUVCRUFnQUNnQ0tDQURJQVFnQXlnQ0FDZ0NvQUVSQXdBb0FnUWlCeUFIS0FJQUtBSWNFUUFBSUFJZ0JDQUNLQUlBS0FLZ0FSRURBQ2dDQkNJSElBY29BZ0FvQWh3UkFBQkJBQkRoQWlBRmNRMEJEQVFMSUFWRkRRTUxJQVJCQVdvaUJDQURJQU1vQWdBb0FwQUJFUUFBU0EwQUN3c2dDRVVOQVNBQUlBRkI0WkVMSUFJZ0FpZ0NBQ2dDREJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFJSVFNTElBWkJDR29RWmhvZ0JpQUpFREkyQWdBZ0JrRUlhaUFHRUI0TkFBc2dBdzBCQzBFQUlRTWdBQ0FCUWJ1UkN5QUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0NSRGJBUXNnQmtFZ2FpUUFJQU1MV2dBZ0FDZ0NUQ0FDSUFJb0FnQW9BaGdSQUFBZ0EwRUFFS3dCSWdORkJFQWdBQ0FCUWJ1UkN5QUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUVFQUR3c2dBeUFES0FJQUtBSWNFUUFBQzE0QkJIOGpBRUVRYXlJQ0pBQUNRQ0FBTFFBUkRRQWdBQkRCQWlFREEwQWdBQ0FERUJFb0FnQWdBU0FDUVE5cUVMTVBJZ1ZGQkVBZ0F5QUZRUUZ6YXlJRFFYOUtEUUVNQWdzTElBSXRBQTlCQUVjaEJBc2dBa0VRYWlRQUlBUUwzQVFCQTM4akFFRWdheUlFSkFBZ0JFRVFhaUFDSUFJb0FnQW9BakFSQUFBUXFRSWdCRUVRYWhBVElRVUNmd0pBSUFJZ0FpZ0NBQ2dDa0FFUkFBQkJBa2NFUUNBQUlBRkIvcUVLSUFWQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dBaUFDS0FJQUtBSXdFUUFBSWdNZ0F5Z0NBQ2dDY0JFQUFBUkFJQUFnQVVHcG9nb2dCVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3dKQUFrQWdBa0VBSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ01nQXlnQ0FDZ0NIQkVBQUVFT1J3MEFJQUpCQUNBQ0tBSUFLQUtnQVJFREFDZ0NCQ0lESUFNb0FnQW9BaVFSQUFBUW93ZEZEUUFnQWtFQUlBSW9BZ0FvQXFBQkVRTUFLQUlFSWdNZ0F5Z0NBQ2dDY0JFQUFFVU5BUXNnQUNBQlFkNmlDaUFGUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBUWdBaUFDS0FJQUtBSXdFUUFBSWdNZ0F5Z0NBQ2dDSUJFQUFDZ0NBRFlDQ0NBRVFRaHFRUUFRNUFvZ0JDQUVLQUlJUWYvL2QzRTJBZ2dnQkVFSWFpQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlBeUFES0FJQUtBSWtFUUFBRUxBTFFRRnpCRUFnQUNBQlFhS2pDaUFGUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTEFrQWdBa0VCSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ01nQXlnQ0FDZ0NIQkVBQUVFT1J3MEFJQUpCQVNBQ0tBSUFLQUtnQVJFREFDZ0NCQ0lESUFNb0FnQW9BaVFSQUFBUXlBUkZEUUJCQUNBQ1FRRWdBaWdDQUNnQ29BRVJBd0FvQWdRaUFpQUNLQUlBS0FKd0VRQUFSUTBDR2dzZ0FDQUJRZnlqQ2lBRlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUMwRUJDeUVBSUFSQkVHb1FHUm9nQkVFZ2FpUUFJQUFMckFnQkMzOGpBRUdRQVdzaUJ5UUFJQUlnQWlnQ0FDZ0N2QUVSQUFBaENBSkFJQUVnQVNnQ0FDZ0NrQUVSQUFCQkFVZ05BQU5BQWtBZ0FTQUVJQUVvQWdBb0FxQUJFUU1BS0FJRUlBZ2dCQkFSS0FJQUlnVWdCU2dDQUNnQ0RCRUFBQ0lGSUFVb0FnQW9BbmdSQUFBUXdBRUVRQ0FCSUFRZ0FTZ0NBQ2dDb0FFUkF3QW9BZ1FpQlNBRktBSUFLQUlvRVFBQUVOVUVEUUVMSUFSQkFXb2lCQ0FCSUFFb0FnQW9BcEFCRVFBQVNBMEJEQUlMQ3dKL0lBSWdBaUFDS0FJQUtBS0FBUkVBQUVVTkFCb2dBRUhUK1FrZ0FpQUNLQUlBS0FKNEVRQUFFTzRKSVFvZ0FDZ0NLQ0FLSUFJZ0FpZ0NBQ2dDQUJFQUFCQ3FBeUVFSUFBb0FpZ2hCU0FISUFJZ0FpZ0NBQ2dDQUJFQUFDSUdLUUlJTndNd0lBY2dCaWtDQURjREtDQUZRYllFSUFRZ0FpQUhRU2hxRU93RkN5RUVJQUFvQWlnZ0JCRGlCaUVGSUFFZ0FTZ0NBQ2dDa0FFUkFBQkJBVTRFUUVFQUlRUURRQUpBSUFFZ0JDQUJLQUlBS0FLZ0FSRURBQ2dDQkNBSUlBUVFFU2dDQUNJR0lBWW9BZ0FvQWd3UkFBQWlCaUFHS0FJQUtBSjRFUUFBRU1BQlJRMEFJQUVnQkNBQktBSUFLQUtnQVJFREFDZ0NCQ0lHSUFZb0FnQW9BaWdSQUFBUTFRUkZEUUFnQjBFNGFrRUFRUUJCQVVFQVFRQkJBQkJGSWdZZ0FTQUVJQUVvQWdBb0FxQUJFUU1BS0FJRUVJOEJBa0FnQ0NBRUVCRW9BZ0FpQXlBREtBSUFLQUlNRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9BcXdCRVFBQVJRMEFJQVlRekE0TkFDQUdJQWdnQkJBUktBSUFJZ01nQXlnQ0FDZ0NEQkVBQUNJRElBTW9BZ0FvQW5nUkFBQVFqd0VnQ0NBRUVCRW9BZ0FpQXlBREtBSUFLQUlNRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9BbGdSQUFBaEEwRVFFRVlpQ1JDekF5RUxJQVlnQ1RZQ1VDQUxJQU1RL3dVTElBQkIzdmtKSUFZUTdna2lBeUFES0FJQUtBSTBFUUFBSWdrZ0NTZ0NBQ2dDS0JFQUFCRERBaUFBS0FJb0lBTWdBaUFDS0FJQUtBSUFFUUFBRUtvRElRa2dBQ2dDS0NFTElBZ2dCQkFSS0FJQUlnd2dEQ2dDQUNnQ0RCRUFBQ0VNSUFjZ0NDQUVFQkVvQWdBaURTQU5LQUlBS0FJQUVRQUFJZzBwQWdnM0F5QWdCeUFOS1FJQU53TVlJQXRCdGdRZ0RDQUpJQWRCR0dvUTdBVWhDU0FBS0FJb0lBVWdDU0FJSUFRUUVTZ0NBQ0lGSUFVb0FnQW9BZ0FSQUFBUTNnSWhCU0FBS0FJb0lBTWdBaUFDS0FJQUtBSUFFUUFBRUtvRElRTWdDQ0FFRUJFZ0F6WUNBQ0FHRURVYUN5QUVRUUZxSWdRZ0FTQUJLQUlBS0FLUUFSRUFBRWdOQUFzTElBb0VRQ0FBS0FJb0lBb2dBaUFDS0FJQUtBSUFFUUFBRUtvRElRRWdBQ2dDS0NBRklBRWdBaUFDS0FJQUtBSUFFUUFBRU40Q0lRVUxJQUFvQWlnYUlBSWdBaWdDQUNnQ2VCRUFBQ0VBSUFjZ0FpQUNLQUlBS0FJQUVRQUFJZ0VwQWdnM0F4QWdCeUFCS1FJQU53TUlJQVZCcVFFZ0FDQUhRUWhxRUtRQ0lRSUxJQWRCa0FGcUpBQWdBZ3RCQVFGL0lBSWdBaWdDQUNnQ3ZBRVJBQUFpQWhBV1FRQktCRUFEUUNBQUlBRkIxWXNLSUFJZ0F4QVJLQUlBRU84SklBTkJBV29pQXlBQ0VCWklEUUFMQ3d1a0VBSUZmd0YrSXdCQkVHc2lDQ1FBQWtBZ0FpQUNLQUlBS0FJd0VRQUFJZ1FnQkNnQ0FDZ0NMQkVBQUMwQUIwRUhjUTBBSUFJZ0FpZ0NBQ2dDa0FFUkFBQkJBVWdOQUNBQ1FRQWdBaWdDQUNnQ29BRVJBd0FvQWdRaUJDQUVLQUlBS0FJY0VRQUFRUTVIRFFBZ0F5QURLQUlBS0FLOEFSRUFBRUVBRUJFb0FnQWlCQ0FFS0FJQUtBSU1FUUFBSWdRZ0JDZ0NBQ2dDaEFFUkFBQXBBZ1FoQ1NBRElBTW9BZ0FvQW9RQkVRQUFJZ1FnQkNrQ0JFTC8vLzlIZ3lBSlFvQ0FnRGlEaERjQ0JBc0NRQ0FDSUFJb0FnQW9BZ3dSQUFCQkIwSG9pUW9RaFFJTkFBSkFBa0FDUUFKQUlBSWdBaWdDQUNnQ0RCRUFBRUVOUWZDSkNoQ0ZBa1VFUUNBSUlBSWdBaWdDQUNnQ0RCRUFBQkRXRHlBQUlBRkJDRUcyQWtFQUlBZ1FFeUlHRUNnQ1FDQUNJQUlvQWdBb0Fnd1JBQUJCL29rS0VJY0JSUVJBSUFBZ0FVRjNRWkFEQW44Q1FDQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlCQ0FFS0FJQUtBSWtFUUFBTFFBQlFRaDBRWUFFUncwQUlBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUVJQVFvQWdBb0FpUVJBQUF0QUFKQkFuRU5BRUdJZ2dvZ0FpQUNLQUlBS0FLUUFSRUFBRUVEUmcwQkdndEI5WUVLQ3lBR0VDZ2dBa0VBSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ1FnQkNnQ0FDZ0NKQkVBQUNnQ0FDRUZRUU1oQkNBRElBTW9BZ0FvQXJ3QkVRQUFRUU5CQWlBRlFZQ0FDSEViRUJFb0FnQWlCU0FGS0FJQUtBSVVFUUFBUlFSQUlBQWdBVUVJUWNBQ1FRSkJoTjhKUVo2Q0NoRFJBUXNnQWtFQUlBSW9BZ0FvQXFBQkVRTUFLQUlFSWdVZ0JTZ0NBQ2dDSkJFQUFDMEFBa0VDY1VVTkFRd0dDeUFDSUFJb0FnQW9BZ3dSQUFCQmtvb0tFSWNCUlFSQUlBQWdBVUYzUVpBRFFmV0JDaUFHRUNnZ0FrRUFJQUlvQWdBb0FxQUJFUU1BS0FJRUlnUWdCQ2dDQUNnQ0pCRUFBQ2dDQUNFRklBSkJBQ0FDS0FJQUtBS2dBUkVEQUNnQ0JDSUVJQVFvQWdBb0FpUVJBQUFvQWdBaEIwRURJUVFnQXlBREtBSUFLQUs4QVJFQUFFRURRUUlnQjBHQWdBaHhHeEFSS0FJQUlnY2dCeWdDQUNnQ0ZCRUFBRVVFUUNBQUlBRkJ1NElLSUFaQjNJSUtRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBVkJnSUFJY1VVTkFRd0dDeUFDSUFJb0FnQW9BZ3dSQUFCQjhJa0tFSWNCRFFWQkFpRUVBa0FnQWlBQ0tBSUFLQUtRQVJFQUFFRUNTZzBBSUFKQkFDQUNLQUlBS0FLZ0FSRURBQ2dDQkNJRklBVW9BZ0FvQWlRUkFBQXRBQUZCQ0hSQmdBcEdEUUFnQWtFQUlBSW9BZ0FvQXFBQkVRTUFLQUlFSWdVZ0JTZ0NBQ2dDSkJFQUFDMEFBa0VDY1VVTkF3c2dBQ0FCUVhkQmtBTkI5WUVLSUFZUUtDQUNRUUFnQWlnQ0FDZ0NvQUVSQXdBb0FnUWlCU0FGS0FJQUtBSWtFUUFBTFFBQ1FRSnhEUVVMSUFRZ0FpQUNLQUlBS0FLUUFSRUFBRTROQkNBRElBTW9BZ0FvQXJ3QkVRQUFJQVFRRVNnQ0FDSUZJQVVvQWdBb0FoUVJBQUFFUUNBRElBTW9BZ0FvQXJ3QkVRQUFJQVFRRVNnQ0FDSUVJQVFvQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0JCQkVrTkJTQUFJQUZCN1lJS0lBWkJoSU1LUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1CUXNnQUNBQlFidUNDaUFHUVlTRENrRUFJQUFvQWdBb0FxQUJFUUlBREFRTElBSWdBaWdDQUNnQ0RCRUFBRUduaWdvUThBbEJmMFlOQkVFQ0lRUWdBaUFDS0FJQUtBSU1FUUFBUWE2S0NoQ0hBVVVOQWlBQ0lBSW9BZ0FvQWd3UkFBQkJ2SW9LRUljQlJRMEJJQUlnQWlnQ0FDZ0NEQkVBQUVITmlnb1Fod0ZGRFFJZ0FpQUNLQUlBS0FJTUVRQUFRZCtLQ2hDSEFVVU5BVUVESVFRZ0FpQUNLQUlBS0FJTUVRQUFRZkNLQ2hDSEFVVU5Ba0VFSVFRZ0FpQUNLQUlBS0FJTUVRQUFRWVdMQ2hDSEFVVU5BaUFDSUFJb0FnQW9BZ3dSQUFCQmw0c0tFSWNCRFFRTUFnc2dBQ0FCUVhkQmtBTkJpSUlLSUFZUUtBd0NDMEVESVFRTElBTWdBeWdDQUNnQ3ZBRVJBQUFnQkJBUktBSUFJZ1lnQmlnQ0FDZ0NGQkVBQUVVRVFDQUFJQUZCdElNS1FiYUVDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdDQ3lBRElBTW9BZ0FvQXJ3QkVRQUFJQVFRRVNnQ0FDSUdJQVlvQWdBb0Fnd1JBQUFpQmlBR0tBSUFLQUo0RVFBQUlnWWdCaWdDQUNnQ01CRUFBRUVCU0EwQkEwQUNRQ0FESUFNb0FnQW9BcndCRVFBQUlBUVFFU2dDQUNJSElBY29BZ0FvQWhRUkFBQVFTeUFGRUE4b0FnQWlCeUFBS0FLRUIwd0VRQ0FISUFBb0FvQUhUZzBCQ3lBQUlBRkJ3NFFLUWJhRUNrSGFoQXBCQUNBQUtBSUFLQUtnQVJFQ0FBc2dCVUVCYWlJRklBWWdCaWdDQUNnQ01CRUFBRWdOQUFzTUFRc2dDQkFaR2dzQ1FDQUNJQUlvQWdBb0Fnd1JBQUJCRGtHdGl3b1FoUUlFUUNBQ0lBSW9BZ0FvQWd3UkFBQkJERUc4aXdvUWhRSU5BUXNnQUNBQlFYZEJ3Z05CczRVS1FkZUZDaEFvQ3dKQUlBSWdBaWdDQUNnQ0RCRUFBRUVMUWNtTENoQ0ZBZzBBQWtBZ0F5QURLQUlBS0FLOEFSRUFBRUVBRUJFb0FnQWlBeUFES0FJQUtBSU1FUUFBSWdNZ0F5Z0NBQ2dDZUJFQUFDSURJQU1vQWdBb0FpQVJBQUF0QUFCQkNFY0VRQ0FESUFNb0FnQW9BaUFSQUFBdEFBQkJDVWNOQVFzZ0F5QURLQUlBS0FJc0VRQUFMUUFrUVJwR0RRRWdBeUFES0FJQUtBSXNFUUFBTFFBa1FTVkdEUUVnQUNBQlFmZUZDaUFDSUFJb0FnQW9BZ3dSQUFBUUUwSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDeUFDSUFJb0FnQW9BZ3dSQUFCQkUwR3BoZ29RaFFJRVFDQUFJQUZCdllZS0lBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBTWdBeWdDQUNnQ0xCRUFBQzBBSkVFRFJnMEFJQUFRTTBVTkFDQUFJQUZCM29ZS0lBSWdBaWdDQUNnQ0RCRUFBQkFUUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBSVFSQnFKQUFMckFJQkFuOGpBRUV3YXlJRUpBQWdBQ0FCSUFNZ0F5Z0NBQ2dDYkJFQUFCRFpEeUFBS0FJb0lBRWdBeUFES0FJQUtBSnNFUUFBSUFNZ0F5Z0NBQ2dDa0FFUkFBQkJBVVlnQWlBRElBTW9BZ0FvQWpBUkFBQVEvQUVoQlNBQUVKZ0dCRUFnQlNBREVOZ1BDd0pBSUFWRkJFQWdBa1VFUUNBQUtBSUFLQUtnQVNFQ0lBUkI0OVlKTmdJQUlBQWdBVUd1N2dsQnd1NEpRZEh1Q1NBRUlBSVJBZ0FNQWdzZ0FpQUNLQUlBS0FJQUVRQUFJUUVnQkVFZ2FpQUNFS29DSUFSQklHb1FFeUVDSUFBb0FnQW9BcUFCSVFNZ0JDQUNOZ0lRSUFBZ0FVR3U3Z2xCd3U0SlFkSHVDU0FFUVJCcUlBTVJBZ0FnQkVFZ2FoQVpHZ3dCQ3lBRklBVW9BZ0FvQWhBUkFBQkZEUUFnQUNBQklBTWdCU0FGS0FJQUtBSVFFUUFBRU5jUEN5QUVRVEJxSkFBZ0JRdjNBZ0VFZnlBQ0tBSUFJZ1FnQkNnQ0FDZ0NHQkVBQUNFRklBRWdBU2dDQUNnQ2tBRVJBQUJCQVU0RVFFRUFJUVFEUUFKL0lBRWdBU2dDQUNnQ2tBRVJBQUJCQVVZRVFDQUNLQUlBSWdNZ0F5Z0NBQ2dDREJFQUFBd0JDeUFGQkVBZ0JTQUZLQUlBS0FLOEFSRUFBQ0FFRUJFb0FnQWlBeUFES0FJQUtBSU1FUUFBREFFTElBSW9BZ0FpQXlBREtBSUFLQUlNRVFBQUN5RURBa0FnQVNBRUlBRW9BZ0FvQXFBQkVRTUFLQUlFSUFNZ0F5Z0NBQ2dDZUJFQUFCREFBVVVOQUNBQklBUWdBU2dDQUNnQ29BRVJBd0FvQWdRaUJpQUdLQUlBS0FJb0VRQUFFTU1IUlEwQUlBRWdCQ0FCS0FJQUtBS2dBUkVEQUNnQ0JCQ0ZBUTBBSUFBb0FpaEJBeUFCSUFRZ0FTZ0NBQ2dDb0FFUkF3QW9BZ1FnQXhDM0JDSURSUTBBSUFWRklBRWdBU2dDQUNnQ2tBRVJBQUJCQVVaeVJRUkFJQVVnQlNnQ0FDZ0N2QUVSQUFBZ0JCQVJJQU0yQWdBTUFRc2dBaUFETmdJQUN5QUVRUUZxSWdRZ0FTQUJLQUlBS0FLUUFSRUFBRWdOQUFzTEM5SUNBUUovSUFBb0Frd2dBaUFDS0FJQUtBSU1FUUFBRU44UEJFQWdBQ0FCUVkrT0N5QUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUVFQUR3dEJBU0VFQWtBZ0FFRzFqZ3NnQUNnQ0FDZ0NJQkVEQUEwQUlBQkIzWTRMSUFBb0FnQW9BaUFSQXdBTkFDQUFRWXFQQ3lBQUtBSUFLQUlnRVFNQURRQWdBRUc0andzZ0FDZ0NBQ2dDSUJFREFBMEFJQUJCNW84TElBQW9BZ0FvQWlBUkF3QU5BQ0FBUVpTUUN5QUFLQUlBS0FJZ0VRTUFEUUFnQUVIRWtBc2dBQ2dDQUNnQ0lCRURBQTBBSUFCQjlKQUxJQUFvQWdBb0FpQVJBd0FoQkFzQ1FDQUFFRE5GQkVBZ0FDZ0NFQ0lGUWZjQVNnMEJDeUFBSUFFZ0FpQURFTjRQRHdzQ1FDQUZRWThEVEFSQUlBQkJwSkVMSUFBb0FnQW9BaUFSQXdBTkFTQUFJQUVnQWlBREVOMFBEd3NnQkVVTkFDQUFJQUVnQWlBREVOd1BEd3NnQUNBQklBSWdBeERiRHd1SUV3RVBmd0pBSUFSQnNnUkdCRUFnQWtVTkFTQUNJQUlvQWdBb0Fnd1JBQUJGRFFFZ0JTQUNJQUlvQWdBb0Fnd1JBQUFpQmlBR0tBSUFLQUo0RVFBQUVJOEJJQVVnQlNnQ0FDZ0NLQkVBQUJEREFpQUZJQVVvQWdBb0FpZ1JBQUFpQmlBR0tRSUVRb0NBZ0lBUWhEY0NCQXdCQ3lBRklBTWdBeWdDQUNnQ01CRUFBQkNQQVFKQUlBUkIyWHRxSWdaQkNrc0VRQ0FFUWFoOGFrRUpTUTBCSUFSQmdYeHFRUWxQRFFJTUFRc0NRQ0FHUVFsckRnSUNBQUVMSUFBZ0FTQURFT0FQRHd0QkFTRVNDMEVCSVFvQ2Z3SkFJQU1nQXlnQ0FDZ0NrQUVSQUFCQkFVNEVRQ0FFUWJBRVJpRVRBMEFnQnlFR0FrQWdBeUFJSUFNb0FnQW9BcHdCRVFNQUtBSUVJZ2NnQnlnQ0FDZ0NjQkVBQUVVTkFFRUJJUlFnQXlBSUlBTW9BZ0FvQXB3QkVRTUFLQUlFSWdjZ0J5Z0NBQ2dDZUJFQUFFVU5BQ0FBSUFGQng1b0tRZVNhQ2tIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3REN5QVNCRUFnQXlBSUlBTW9BZ0FvQXB3QkVRTUFLQUlFSWdjZ0J5Z0NBQ2dDYkJFQUFDQUxjaUVMQ3lBRElBZ2dBeWdDQUNnQ25BRVJBd0FvQWdRUXhRRWdDV29oQ1FKL0lBWWdFdzBBR2lBR0lBVWdCU2dDQUNnQ2NCRUFBQTBBR2lBR0lBa2dCUkRGQVU1eUN5RUhJQU1nQ0NBREtBSUFLQUtjQVJFREFDZ0NCQ0lNSUF3b0FnQW9BaWdSQUFBUWp3SWhEQ0FESUFnZ0F5Z0NBQ2dDbkFFUkF3QW9BZ1FpRFNBTktBSUFLQUlvRVFBQUVPWUJJUTBnQXlBSUlBTW9BZ0FvQXB3QkVRTUFLQUlFSWc0Z0RpZ0NBQ2dDakFFUkFBQWhEZ0pBSUFVZ0JTZ0NBQ2dDaUFFUkFBQkZEUUFnQXlBSUlBTW9BZ0FvQXB3QkVRTUFLQUlFRUxBQ0JFQWdBQ0FCUWVTYUNrSHdtZ29nQUNnQ0FDZ0NVQkVFQUFzZ0F5QUlJQU1vQWdBb0Fwd0JFUU1BS0FJRUVLOENCRUFnQUNBQlFlU2FDa0h3bWdvZ0FDZ0NBQ2dDWEJFRUFBc2dBeUFJSUFNb0FnQW9BcHdCRVFNQUtBSUVFTVlDUlEwQUlBQWdBVUhrbWdwQm9ac0tJQUFvQWdBb0FtZ1JCQUFMSUFZZ0VISWhFQ0FLSUF4eElRb2dEU0FQY2lFUElBNGdFWEloRVNBSVFRRnFJZ2dnQXlBREtBSUFLQUtRQVJFQUFFZ05BQXNMSUFvZ0JFR3lCRWR4SVFZQ1FDQUVRYlI4YWlJSFFTWkxCRUFnQkVIZGUycEJCRThOQVNBRklBVW9BZ0FvQW5BUkFBQUVRQ0FBSUFGQjVKb0tRZEdiQ2lBQUtBSUFLQUpRRVFRQUN5QUZJQVVvQWdBb0FtZ1JBQUJGRFFFZ0F5QURLQUlBS0FLUUFSRUFBRUVCUmcwQklBQWdBVUhrbWdwQjdac0tJQUFvQWdBb0FsQVJCQUFNQVFzQ1FBSkFJQWRCQW1zT0pRRUJBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQUFBQUFBQUFCQVFFQkFRRUFDeUFGSUFVb0FnQW9BbkFSQUFBRVFDQUFJQUZCNUpvS1FaT2NDaUFBS0FJQUtBSm9FUVFBQ3lBRklBVW9BZ0FvQW1nUkFBQkZEUUVnQXlBREtBSUFLQUtRQVJFQUFFRUJSZzBCSUFBZ0FVSGttZ3BCcnB3S0lBQW9BZ0FvQW1nUkJBQU1BUXNnQlNBRktBSUFLQUp3RVFBQUJFQWdBQ0FCUWVTYUNrSFJtd29nQUNnQ0FDZ0NYQkVFQUFzZ0JTQUZLQUlBS0FKb0VRQUFSUTBBSUFNZ0F5Z0NBQ2dDa0FFUkFBQkJBVVlOQUNBQUlBRkI1Sm9LUWUyYkNpQUFLQUlBS0FKY0VRUUFDd0pBSUFaRkRRQkJBQ0VISUJGQkFYRWdEMEVCY1VVZ0JFR2NmR3BCRzA5QkFDQUVRYlo4YWtFSVN4dHlja1VFUUNBRklBVW9BZ0FvQW5BUkFBQkJBWE1oQndzZ0JTQUZLQUlBS0FJb0VRQUFJUVlnQndSQUlBWVFxUU1NQVFzZ0QwRUJjUVJBSUFZUXd3SU1BUXNnQmlBR0tRSUVRa0NEUWdLRU53SUVDd0pBSUFVZ0JTZ0NBQ2dDY0JFQUFFVU5BQ0FESUFNb0FnQW9BcEFCRVFBQVJRUkFJQUFnQVVIVG5BcEI1Sm9LUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBREFJTEFrQWdCU0FGS0FJQUtBSjRFUUFBQkVBZ0JTQURJQU1vQWdBb0FwQUJFUUFBRUkwRERBRUxJQVVnQlNnQ0FDZ0NQQkVBQUNBRElBTW9BZ0FvQXBBQkVRQUFSZzBBSUFBZ0FVR0ZuUXBCNUpvS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxJQVVRakFORkRRQWdCU0FGS0FJQUtBSlFFUUFBSVFZQ1FDQURRUUFnQXlnQ0FDZ0NuQUVSQXdBb0FnUWlCeUFIS0FJQUtBSndFUUFBQkVBZ0JoQmdJQU5CQUNBREtBSUFLQUtjQVJFREFDZ0NCQ0lISUFjb0FnQW9BbEFSQUFBUVlFRUJha1lOQVFzZ0FDQUJRYnlkQ2tIa21ncEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BZ3NnQmhDNUJVVU5BQ0FHRUdCQkFrZ05BRUVCSVFnRFFDQUdJQWdRMWdGRkJFQWdCaUFJSUFOQkFDQURLQUlBS0FLY0FSRURBQ2dDQkNJSElBY29BZ0FvQWxBUkFBQWdDRUYvYWhEV0FSQ2JCQXNnQ0VFQmFpSUlJQVlRWUVnTkFBc0xBa0FnRkVGL2N5QUVRYkFFUm5KQkFYRU5BQ0FGRUl3RERRQWdBQ0FCUVlPZUNrSGttZ3BCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzQ1FDQUxRUUZ4UlEwQUlBVWdCU2dDQUNnQ2NCRUFBQTBBSUFBZ0FVRUJRZmdBUVFCQnVwNEtFQ2hCQUNBRElBTW9BZ0FvQXBBQkVRQUFRUUZHRFFJYUlBQWdBVUhhbmdwQjVKb0tRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFRUUFQQ3lBUVFRRnhCRUFnQUNBQlFaU2ZDa0hrbWdwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdCQkFROExBa0FnQkVHd0JFY05BQ0FGSUFVb0FnQW9BbkFSQUFBTkFDQUZLQUpBRURjZ0F5QURLQUlBS0FLUUFSRUFBRVlOQUNBQUlBRkJwNThLUWVTYUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDd0pBQWtBZ0JFR3dCRVlnQ1VFQlJuSkZCRUFnQ1NBRkVNVUJTQTBCQ3lBRVFiQUVSdzBCSUFrZ0JSREZBVTROQVFzZ0FDQUJRZmFmQ2tIa21ncEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNDUUNBRkVJVUJSUTBBSUFNZ0F5Z0NBQ2dDa0FFUkFBQkJBVVlOQUNBQUlBRkJvS0FLUWVTYUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FFRUJEd3NDUUNBRkVJVUJSUTBBSUFOQkFDQURLQUlBS0FLY0FSRURBQ2dDQkNJRklBVW9BZ0FvQW1BUkFBQU5BQ0FEUVFBZ0F5Z0NBQ2dDbkFFUkF3QW9BZ1FRaFFFTkFDQUFJQUZCdXFBS1FlU2FDa0hqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdCQ3lBQ0lBSW9BZ0FvQWd3UkFBQWlBa1VFUUNBQUlBRkJoNkVLUWVTYUNrSGoxZ2xCQUNBQUtBSUFLQUtnQVJFQ0FBd0JDd0pBSUFSQnNBUkdEUUFnQWlBQ0tBSUFLQUtBQVJFQUFFRU9SZ1JBSUFBZ0FVR3hvUXBCNUpvS1FlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQURBSUxJQUpCRkdvUTJnUkZEUUFnQUNBQlFjcWhDa0hrbWdwQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRdEJBQ0FDSUFJb0FnQW9Bb0FCRVFBQURRRWFJQUFnQVVIb29RcEI1Sm9LUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQzBFQkN3dXhCUUVFZnlNQVFlQUFheUlHSkFBQ1FBSkFBa0FnQWlBQ0tBSUFLQUtRQVJFQUFFRUJUZ1JBSUFBZ0FVSFk5d2tnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQXlBREtBSUFLQUlNRVFBQUlnUWdCQ2dDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BbkFSQUFBaEJ5QUVLQUlBSVFVQ2Z3SkFJQWNFUUNBRUlBVW9BbmdSQUFBRVFBSkFJQU1nQXlnQ0FDZ0NNQkVBQUVVTkFDQUFJQVFRamdORkRRQUNRQ0FESUFNb0FnQW9BakFSQUFBaUJTQUZLQUlBS0FMQUFSRUFBQ0lGUWYzM0NSQXJEUUFnQlVHRCtBa1FLdzBBSUFWQml2Z0pFQ3NOQUNBRlFaejRDUkFyUlEwQkN5QUFJQVFnQkNnQ0FDZ0NMQkVBQUVFQUVNZ0hJZ1VOQmdzQ1FDQURJQU1vQWdBb0FqQVJBQUJGRFFBZ0FDQUVFSTREUlEwQUlBQWdBVUhqMWdrZ0FpQUNLQUlBS0FJTUVRQUFFQk5Cc1BnSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQlFzZ0F5QURLQUlBS0FJTUVRQUFFUFlKQkVBZ0FDZ0NLQ0FCUWNVRVFRRWdBeUFHUVFocVFRaEJBRUVCUVFCQkFFRUFFRVVpQUJEOEFTRUNJQUFRTlJvTUJ3c2dBQ0FCUWVQV0NTQUNJQUlvQWdBb0Fnd1JBQUFRRTBIeCtBbEJBQ0FBS0FJQUtBS2dBUkVDQUF3RUN5QUVJQVFvQWdBb0FrQVJBQUJGRFFFZ0JDQUVLQUlBS0FKQUVRQUFJUUlNQlFzZ0JDQUZLQUpzRVFBQUJFQWdCQ0FFS0FJQUtBSTBFUUFBREFJTElBUWdCQ2dDQUNnQ2FCRUFBQVJBSUFRZ0JDZ0NBQ2dDTUJFQUFBd0NDeUFFRUlVQkJFQWdBQ2dDS0NBQlFjVUVRUUVnQXlBR1FRaHFRUWhCQUVFQlFRQkJBRUVBRUVVaUFCRDhBU0VDSUFBUU5Sb01CUXNnQUNBQlFhMzVDVUczK1FsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFnc2dCQ0FFS0FJQUtBSThFUUFBQ3lJRkRRRUxRUUVoQlFzZ0FDZ0NLQ0FGSUFGQkFCRDFCQ0VDQ3lBR1FlQUFhaVFBSUFJTDVCTUNCbjhCZmlNQVFaQUJheUlFSkFBZ0JDQUROZ0tNQVFKQUlBSWdBaWdDQUNnQ2JCRUFBRUhGQkVZRVFDQUFJQUVnQWlBREVPZ1BJUU1NQVFzZ0FpQUNLQUlBS0FKc0VRQUFCRUJCQUNFRElBUkJPR3BCQUVFQVFRRkJBRUVBUVFBUVJTRUZBa0FnQUNBQklBUW9Bb3dCSUFJZ0FpQUNLQUlBS0FKc0VRQUFJQVVRNXc4TkFDQUFJQUVnQkNnQ2pBRWdCUkNWQmlJRERRQWdCRUVvYWlBRkVNb0JRUUFoQXlBQUlBRkI5dWtKSUFSQktHb1FFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQ0FFUVNocUVCa2FDeUFGRURVYURBRUxJQUFnQVNBQ0lBUkJLR29RNWc4aUFrVUVRRUVBSVFNTUFRc0NRQ0FFTFFBb1JRMEFJQUlnQWlnQ0FDZ0NSQkVBQUFSQUlBQWdBU0FDSUFJb0FnQW9Ba1FSQUFBZ0FpQUNLQUlBS0FKSUVRQUFJQUlnQWlnQ0FDZ0NEQkVBQUJBVElBQW9BZ0FvQWhRUkNBQUxJQVF0QUNoRkRRQWdBaUFDS0FJQUtBSXdFUUFBRUxBQ0JFQWdBQ0FCUVp6cUNVR3U2Z2tnQUNnQ0FDZ0NVQkVFQUFzZ0JDMEFLRVVOQUNBQ0lBSW9BZ0FvQWpBUkFBQVFyd0lFUUNBQUlBRkJuT29KUWV2cUNTQUFLQUlBS0FKY0VRUUFDeUFFTFFBb1JRMEFJQUlnQWlnQ0FDZ0NNQkVBQUJER0FrVU5BQ0FBSUFGQm5Pb0pRYW5yQ1NBQUtBSUFLQUpvRVFRQUN5QUVLQUtNQVNJREJFQWdBeUFES0FJQUtBSVlFUUFBSVFrZ0FpQUNLQUlBS0FLUUFSRUFBRUVCVGdSQUEwQWdCRUdNQVdvaEF5QUpSU0FDSUFJb0FnQW9BcEFCRVFBQVFRRkdjZ1IvSUFNRklBa2dDU2dDQUNnQ3ZBRVJBQUFnQ0JBUkN5Z0NBQ0VGQWtBZ0FpQUlJQUlvQWdBb0FxQUJFUU1BS0FJRUlnTWdBeWdDQUNnQ0tCRUFBQ0lERU5VRVJRMEFJQUFnQkNnQ2pBRWlCaUFHS0FJQUtBSUFFUUFBUWVickNTQUZJQVVvQWdBb0Fnd1JBQUFnQUNnQ0FDZ0M3QUVSQ1FCRkRRQWdBQ0FFS0FLTUFTSUdJQVlvQWdBb0FnQVJBQUJCN2VzSlFhdnNDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNDUUNBRklBVW9BZ0FvQWd3UkFBQWlCaUFHS0FJQUtBSjRFUUFBSWdjZ0J5Z0NBQ2dDTEJFQUFDSUdFTVVDUlEwQUlBY2dCeWdDQUNnQ3dBRVJBQUJGQkVBZ0J4RDBBVVVOQVFzQ1FDQUdLUUlFSWdwQ2dJQ0FnSUNBRUlOUURRQWdBeTBBQ1VIQUFIRU5BQ0FBSUFRb0Fvd0JJZ2NnQnlnQ0FDZ0NBQkVBQUVHdjdBbEI5ZXdKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBSUFZcEFnUWhDZ3NDUUNBS1FvQ0FnSUNBZ0FpRFVBMEFJQU10QUFsQm9BRnhEUUFnQUNBRUtBS01BU0lISUFjb0FnQW9BZ0FSQUFCQnIrd0pRZjdzQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUNBR0tRSUVJUW9MQWtBZ0NrS0FnSUNBZ0lBZ2cxQU5BQ0FETFFBSlFhQUJjUTBBSUFBZ0JDZ0NqQUVpQnlBSEtBSUFLQUlBRVFBQVFhL3NDVUdIN1FsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0Jpa0NCQ0VLQ3dKQUlBcENnSUNBZ0lDQXdBQ0RVQTBBSUFNb0FnaEJnTUFHY1EwQUlBQWdCQ2dDakFFaUJ5QUhLQUlBS0FJQUVRQUFRYS9zQ1VHVzdRbEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCaWtDQkNFS0N3SkFJQXBDZ0lDQWdJQ0FnQUdEVUEwQUlBTW9BZ2hCZ01BT2NRMEFJQUFnQkNnQ2pBRWlCeUFIS0FJQUtBSUFFUUFBUWEvc0NVR3E3UWxCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FnQmlrQ0JDRUtDd0pBSUFwQ2dJQ0FnSUNBZ0FLRFVBMEFJQU1vQWdoQmdNQWVjUTBBSUFBZ0JDZ0NqQUVpQnlBSEtBSUFLQUlBRVFBQVFhL3NDVUc4N1FsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0Jpa0NCQ0VLQ3dKQUlBcENnSUNBZ0lDQUFvTlFEUUFnQXkwQUNVRUljUTBBSUFBZ0JDZ0NqQUVpQnlBSEtBSUFLQUlBRVFBQVFhL3NDVUhON1FsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0Jpa0NCQ0VLQ3lBS1FvQ0FnSUNBZ0FTRFVBMEFJQU10QUFsQkVIRU5BQ0FBSUFRb0Fvd0JJZ2NnQnlnQ0FDZ0NBQkVBQUVHdjdBbEIxdTBKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3dKQUlBUXRBQ2hGQkVBQ1FDQUdMUUFrSUFNdEFDUkdEUUFnQXhDYUJBUkFJQU10QUNSRkRRRWdCaTBBSkVVTkFRc2dBQ0FFS0FLTUFTSURJQU1vQWdBb0FnQVJBQUJCNE8wSlFmbnRDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQkMwQUtFVU5BUXNnQlNBRktBSUFLQUlNRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQkN3QWdSQUlBQWdCQ2dDakFFaUF5QURLQUlBS0FJQUVRQUFRWnpxQ1VHdTZna2dBQ2dDQUNnQ1VCRUVBQXNnQkMwQUtFVU5BQ0FGSUFVb0FnQW9BZ3dSQUFBaUF5QURLQUlBS0FKNEVRQUFFSzhDQkVBZ0FDQUVLQUtNQVNJRElBTW9BZ0FvQWdBUkFBQkJuT29KUWV2cUNTQUFLQUlBS0FKY0VRUUFDeUFFTFFBb1JRMEFJQVVnQlNnQ0FDZ0NEQkVBQUNJRElBTW9BZ0FvQW5nUkFBQVF4Z0pGRFFBZ0FDQUVLQUtNQVNJRElBTW9BZ0FvQWdBUkFBQkJuT29KUWFuckNTQUFLQUlBS0FKb0VRUUFDeUFJUVFGcUlnZ2dBaUFDS0FJQUtBS1FBUkVBQUVnTkFBc0xJQUFnQWlBRVFZd0JhaERsRHdzQ1FBSkFJQVF0QUNoRkRRQWdBaUFDS0FJQUtBSnNFUUFBUlEwQUlBUWdBU2tDQ0RjRElDQUVJQUVwQWdBM0F4Z2dBQ0FFUVJocUlBUW9Bb3dCSUFJUTVBOGhBd3dCQ3lBQUtBSW9HaUFFS0FLTUFTRURJQUlnQWlnQ0FDZ0NNQkVBQUNFRklBUWdBU2tDQ0RjREVDQUVJQUVwQWdBM0F3Z2dBMEVESUFVZ0JFRUlhaENrQWlJRElBTW9BZ0FvQWhnUkFBQWlCU0FDSUFJb0FnQW9BaGdSQUFBZ0JTZ0NBQ2dDeEFFUkFRQUNRQ0FFTFFBb1JRUkFJQVVnQlNnQ0FDZ0N6QUVSQlFBQ1FDQUFLQUpNRUJnRVFDQUFJQUZCZDBHQTdna1FTaUFBS0FJb0lBQW9BZ3dnQkVFNGFrR283Z2tRSWlJR0lBSWdBaWdDQUNnQ0dCRUFBQkNIRENBR0VCa2FEQUVMSUFBb0FpZ2dBQ2dDRENBQVFaU3JBV29nQWlBQ0tBSUFLQUlZRVFBQUVJY01DeUFFTFFBb1JRMEJDeUFBSUFFZ0FpQUZFT01QREFFTElBQWdBU0FGRU9JUEN3Si9JQU1nQXlnQ0FDZ0NHQkVBQUFSQUlBTWdBeWdDQUNnQ0dCRUFBQ0lGSUFVb0FnQW9BdFFCRVFBQUlRVWdBaUFDS0FJQUtBS1FBUkVBQUVFQlRnUkFRUUFoQ0FOQUlBUWdBaUFJSUFJb0FnQW9BcUFCRVFNQUtBSUVJZ1lnQmlnQ0FDZ0NLQkVBQUNnQ0JFRS9jVFlDT0NBRklBUkJPR29RM0FFZ0NFRUJhaUlJSUFJZ0FpZ0NBQ2dDa0FFUkFBQklEUUFMQ3lBQUlBSWdBeUFES0FJQUtBSVlFUUFBRU9FUElRTUxJQU1MSUFNb0FnQW9BZ3dSQUFBaUFpQUNLQUlBS0FKNEVRQUFFSVVCUlEwQUlBTWdBeWdDQUNnQ0RCRUFBQ0lDSUFJb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FLc0FSRUFBQTBBSUFNZ0F5QURLQUlBS0FJWUVRQUFJZ0lnQWlnQ0FDZ0N2QUVSQUFCQkFoQVJLQUlBSWdJZ0FpZ0NBQ2dDREJFQUFDSUNJQUlvQWdBb0FuZ1JBQUFnQXlnQ0FDZ0NkQkVCQUFzZ0EwVUVRQ0FBS0FJb1JBQUFBQUFBQUFBQVFRRWdBVUVBRU53RklRTUxJQVJCa0FGcUpBQWdBd3ZVQmdFR2Z5TUFRZkFBYXlJRUpBQWdBRUdVcXdGcUlBSWdBaWdDQUNnQ0dCRUFBQkRvQWdKQUFrQUNRQ0FBS0FKTUlBSWdBaWdDQUNnQ0dCRUFBRUVBUVFBUXJBRWlBd1JBSUFNZ0F5Z0NBQ2dDSEJFQUFDSUREUUVMSUFBZ0FVSHg2QWtnQWlBQ0tBSUFLQUlNRVFBQUVCTkI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BUXNnQXlBREtBSUFLQUowRVFBQUJFQWdBQ0FCUVlYcENTQUNJQUlvQWdBb0Fnd1JBQUFRRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUFzZ0F5QURLQUlBS0FKMEVRQUFEUUFnQXlBREtBSUFLQUp3RVFVQUlBQWdBeUFES0FJQUtBSXdFUUFBTmdKZ0RBRUxRZFFBRUVZaUEwRUFRUUJCQVVFQVFRQkJBQkJGR2lBQUlBTTJBbUFMSUFCQkFEb0FaQUpBSUFJZ0FpZ0NBQ2dDREJFQUFDQUFLQUlvRUNVUUV4Q0hBUVJBSUFCQkFEb0FzQVVNQVFzZ0FDZ0NLRUVRYWlBQ0lBSW9BZ0FvQWhnUkFBQVFFeEJvSUFBb0FpZ2lBeUFES0FMTUEwRUJhallDekFNZ0FFRUJPZ0N3QlNBQ0lBSW9BZ0FvQXBBQkVRQUFRUUZPQkVBZ0FDQUJRYUhwQ1NBQ0lBSW9BZ0FvQWd3UkFBQVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQWlBQ0tBSUFLQUl3RVFBQUlnTWdBeWdDQUNnQ0hCRUFBRVVOQUNBRVFSaHFJQUlnQWlnQ0FDZ0NNQkVBQUJDcEFpQUFJQUZCNDlZSklBUkJHR29RRTBISDZRbEJBQ0FBS0FJQUtBS2dBUkVDQUNBRVFSaHFFQmthQ3lBQUtBSk1FSXdFUWFnQkVFWVEvUU1oQXlBQ0lBSW9BZ0FvQXBBQkVRQUFRUUZPQkVBRFFBSkFJQUlnQnlBQ0tBSUFLQUtjQVJFREFDSUZLQUlBQkVCQmdBRVFSaUlHSUFVb0FnQWdCU2dDQkVFQUVPMENJUWdnQUNnQ1RDQUdFT3dDUlFSQUlBQWdBVUhwNlFrZ0JpQUdLQUlBS0FJTUVRQUFFQk5CNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQWdzZ0JVRUFOZ0lBSUFBb0FpZ2lCU0FESUFVZ0NDQUJFS29ESUFFUTNnSWhBd3dCQ3lBQUtBSW9JQU1nQlNnQ0JDQUJFSndZSUFFUTNnSWhBd3NnQjBFQmFpSUhJQUlnQWlnQ0FDZ0NrQUVSQUFCSURRQUxDeUFBS0FJb0dpQUVRUmhxUVFCQkFFRUJRUUJCQUVFQUVFVWhBaUFFSUFFcEFnZzNBeEFnQkNBQktRSUFOd01JSUFOQkJTQUNJQVJCQ0dvUXBBSWFJQUlRTlJvZ0FFRUFPZ0JsSUFCQkFEWUNYQ0FBUWdBM0FsQWdCRUh3QUdva0FDQURDOTRCQUFKQUFuOGdBaUFDS0FJQUtBSlFFUUFBUlFSQUlBSWdBaWdDQUNnQ1lCRUFBQXdCQ3lBQ0lBSW9BZ0FvQWxBUkFBQWlBaUFDS0FJQUtBTEFBUkVBQUNJQ0lBSW9BZ0FvQWpBUkFBQUxJZ0pGRFFBZ0FDZ0NUQ0FDSUFJb0FnQW9Bc0FCRVFBQVFRQkJBQkNzQVNJQ1JRMEFJQUlnQWlnQ0FDZ0NLQkVBQUNJQ1JRMEFJQUlnQWlnQ0FDZ0NmQkVBQUVVTkFDQUNJQU1nQWlnQ0FDZ0NnQUVSQXdCQkFVZ05BQ0FBSUFFZ0FpQURJQUlvQWdBb0FvQUJFUU1BSUFJZ0F5QUNLQUlBS0FLRUFSRURBQ0FFRUJNZ0FDZ0NBQ2dDRkJFSUFBc0xwUkFCQkg4akFFR2dBV3NpQkNRQUlBUWdBallDbkFFZ0FDQUVRWndCYWhDK0JTQURRZHJpQ1JBcklRWWdCQ2dDbkFFaUFpQUNLQUlBS0FLZ0FSRUFBQ0VGQWtBQ1FDQUdCRUFnQlFSQUlBQWdBVUVCUWZnQVFlSGlDVUgyNGdrUUtDQUFJQUZCQ0VHc0FrRUFRZmJpQ1JBb0RBSUxBa0FnQWlBQ0tBSUFLQUtrQVJFQUFFVUVRQ0FDSUFJb0FnQW9BcHdCRVFBQVJRMEJDeUFBSUFGQmQwSCs0Z2tRU2lBQUlBRkJkMEdrQTBHZzR3bEIvdUlKRUNnTUFnc2dBaUFDS0FJQUtBSjRFUUFBRUlVQkRRRWdBeEFUSVFNZ0JFSElBR29nQWlBQ0tBSUFLQUo0RVFBQUVNb0JJQUFnQVVIQTR3a2dBeUFFUWNnQWFoQVRRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0JFSElBR29RR1JvZ0JDZ0NuQUVoQWd3Q0N5QUZCRUFnQUNBQlFkL2pDVUg1NHdrZ0F4QVRRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFnc2dBaUFDS0FJQUtBSjRFUUFBRUlVQkJFQWdBQ0FCUWZ2akNVSDU0d2tnQXhBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FNQWdzQ1FBSkFJQUlnQWlnQ0FDZ0NwQUVSQUFCRkJFQWdBaUFDS0FJQUtBS29BUkVBQUVVTkFRc0NRQ0FDSUFJb0FnQW9BckFCRVFBQURRQWdBaUFDS0FJQUtBSzBBUkVBQUEwQUlBSWdBaWdDQUNnQ2dBRVJBQUJCREVjTkFRc2dBaUFDS0FJQUtBS29BUkVBQUFSQUlBQWdBVUYzUWFia0NSQktJQUFnQVVGM1FhUURRYURqQ1VHbTVBa1FLQXNnQkVFd2FoQ3lCU0VGSUFBZ0FTQURJQVFvQXB3QklnTWdBeWdDQUNnQ2tBRVJBQUFnQlNBQUtBSUFLQUwwQVJFSUFBSkFJQVFvQXB3QklnTWdBeWdDQUNnQ3BBRVJBQUJGRFFBZ0JTZ0NBRUVCUmcwQUlBUW9BcHdCSWdNZ0F5Z0NBQ2dDZUJFQUFCQ3dBa1VOQUNBQUlBRkIrZU1KUWJYa0NTQUFLQUlBS0FKUUVRUUFDd0pBSUFRb0Fwd0JJZ01nQXlnQ0FDZ0NwQUVSQUFCRkRRQWdCU2dDQUVFQlJnMEFJQVFvQXB3QklnTWdBeWdDQUNnQ2VCRUFBQkN2QWtVTkFDQUFJQUZCK2VNSlFkemtDU0FBS0FJQUtBSmNFUVFBQ3dKQUlBUW9BcHdCSWdNZ0F5Z0NBQ2dDcEFFUkFBQkZEUUFnQlNnQ0FFRUJSZzBBSUFRb0Fwd0JJZ01nQXlnQ0FDZ0NlQkVBQUJER0FrVU5BQ0FBSUFGQitlTUpRWVRsQ1NBQUtBSUFLQUpvRVFRQUN5QUVLQUtjQVNJRElBTW9BZ0FvQXFnQkVRQUFCRUFnQlNnQ0FFRUJSZzBFSUFSQnlBQnFJQVFvQXB3QklnSWdBaWdDQUNnQ2dBRVJBQUJCQUNBRktBSUFRUUJCQUVFQUVFVWhBeUFFS0FLY0FTSUNJQUlvQWdBb0FvUUJFUUFBRU9ZQkJFQWdBeEFiRUtrREN5QUFJQUVnQkNnQ25BRWdBeENWQmlFQ0lBTVFOUm9NQkFzZ0JDZ0NuQUVpQWlBQ0tBSUFLQUo0RVFBQUlnSWdBaWdDQUNnQ0xCRUFBQkNoQXdSQUlBQW9BaWdnQkNnQ25BRWdCU0FCRUs0UUlRSU1BZ3NnQUNnQ0tDRUNBa0FnQlNnQ0FFRUJSZ1JBSUFJZ0JVRUFFS0FHSUFGQkFCRDFCQ0VDSUFBb0FpZ2FJQVFnQVNrQ0NEY0RDQ0FFSUFFcEFnQTNBd0JCc1FFZ0JDZ0NuQUVnQWlBRUVJb0ZJZ0lnQkVISUFHb2dCQ2dDbkFFaUFDQUFLQUlBS0FLQUFSRUFBRUVBSUFRb0Fwd0JJZ0FnQUNnQ0FDZ0NlQkVBQUNJQUlBQW9BZ0FvQWl3UkFBQXRBQWRCQjNGQkFSRDhDQ0lBSUFJb0FnQW9BblFSQVFBTUFRc2dCU0FCRU1FVElRSWdBQ2dDS0JvZ0JDQUJLUUlJTndNWUlBUWdBU2tDQURjREVFRzBBU0FFS0FLY0FTQUNJQVJCRUdvUWlnVWlBaUFFUWNnQWFpQUVLQUtjQVNJQUlBQW9BZ0FvQW9BQkVRQUFRUUFnQkNnQ25BRWlBQ0FBS0FJQUtBSjRFUUFBSWdBZ0FDZ0NBQ2dDTEJFQUFDMEFCMEVIY1NBRktBSUFFUHdJSWdBZ0FpZ0NBQ2dDZEJFQkFBc2dBQkExR2lBRUtBS2NBU0lBSUFBb0FnQW9BbmdSQUFBaUFDQUFLQUlBS0FJc0VRQUFFT1lCUlEwQklBSWdBaWdDQUNnQ2ZCRUFBQ0lBSUFBb0FnQW9BaWdSQUFBUXFRTU1BUXNDUUNBQ0lBSW9BZ0FvQXF3QkVRQUFSUVJBSUFJUThnRkZEUUVMSUFJUThnRWhCaUFDSUFJb0FnQW9BbmdSQUFBaEJRSkFBbjhnQmdSQUlBVWdCU2dDQUNnQ1ZCRUFBQ2dDUUF3QkN5QUZLQUpBQ3lJR0VEZEJBVTRFUUVFQUlRVURRQ0FHSUFVUU9DZ0NBQ0lISUFjb0FnQW9BaGdSQUFBZ0F4Q1lBZzBDSUFWQkFXb2lCU0FHRURkSURRQUxDeUFBSUFGQnErVUpJQU1RRTBIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUF3Q0N3SkFJQUlnQWlnQ0FDZ0NlQkVBQUNJSElBY29BZ0FvQWl3UkFBQVFvUU1FUUNBQUtBSW9JQUlnQlNBQkVKMEtJUUlNQVFzZ0FDQUJJQUlnQlNBREVPc1BJQUFvQWlnZ0JTQUJRUUFROVFRaEJ5QUFLQUlvR2lBRUlBRXBBZ2czQXlnZ0JDQUJLUUlBTndNZ1FiTUJJQUlnQnlBRVFTQnFFSW9GSWdJZ0JpQUZFRGdvQWdBZ0FpZ0NBQ2dDZEJFQkFDQUdJQVVRT0NnQ0FDSUJJQUVvQWdBb0FpZ1JBQUFRK1FsRkRRQWdBQ2dDS0NBREVQZ0pDeUFFS0FLY0FTSUFJQUFvQWdBb0FvUUJFUUFBSUFJZ0FpZ0NBQ2dDZkJFQUFDSUFJQUFvQWdBb0FpZ1JBQUFReWdjTUFRc2dBeEFUSVFNZ0JFSElBR29nQWlBQ0tBSUFLQUo0RVFBQUVNb0JJQUFnQVVIRzVRa2dBeUFFUWNnQWFoQVRRUUFnQUNnQ0FDZ0NvQUVSQWdBZ0JFSElBR29RR1JvTElBUW9BcHdCSWdBZ0FDZ0NBQ2dDaEFFUkFBQVF0d01FUUNBQ0lBSW9BZ0FvQW53UkFBQWlBQ0FBS0FJQUtBSW9FUUFBRU1VSEN5QUVLQUtjQVNJQUlBQW9BZ0FvQW9RQkVRQUFFT0lDUlEwQklBSWdBaWdDQUNnQ2ZCRUFBQ0lBSUFBb0FnQW9BaWdSQUFBaUFDQUFLUUlFUW9DQWdJQVFoRGNDQkF3QkN5QUFLQUlvR2lBRVFjZ0Fha0VJUVFCQkFVRUFRUUJCQUJCRklnVWhCa0g4QUJCR0lnQWdBaUFHSUFNUW1CVWdBQ0FCSUFBb0FnQW9BZ1FSQVFBZ0FDRUNJQVVRTlJvTElBUkJvQUZxSkFBZ0FndElBUUovSXdCQkVHc2lCQ1FBSUFNUUV5RURJQUFvQWdBb0FxQUJJUVVnQkNBRE5nSUVJQVFnQWpZQ0FDQUFJQUZCcnU0SklBSkI3NDBLSUFRZ0JSRUNBQ0FFUVJCcUpBQUw0d0VCQW44Z0JDQUVLQUlBS0FKNEVRQUFCRUFnQkNBQ0VJMEREd3NDUUNBRUlBUW9BZ0FvQWp3UkFBQWdBa1lOQUNBQUtBSVVJZ1pCZjJvaUIwRURTd1JBSUFaQkRVY05BU0FBSUFGQnVPSUpJQU1nQlJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3dKQUFrQUNRQ0FIUVFGckRnTURBQUlCQ3lBQUlBRkJwdUVKSUFNZ0JSQVRRUUFnQUNnQ0FDZ0NvQUVSQWdBUEN5QUFJQUZCMWVFSklBTWdCUkFUUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDeUFFSUFRb0FnQW9BandSQUFBZ0Frd05BQ0FBSUFGQmp1SUpJQU1nQlJBVFFRQWdBQ2dDQUNnQ29BRVJBZ0FMQ3pFQkFYOGdBQ0FCRUlJS0lBQWdBU2dDQUNJQ0lBSW9BZ0FvQWpBUkFBQVFqZ01FUUNBQVFjaXJBV29nQVJEY0FRc0wwd01CQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lNQWtBQ1FBSkFJQUFvQXJnSklnSXRBQVlFZnlBQ0JTQUJJQUVvQWdBb0FvQUJFUUFBUVE1R0RRSWdBQ2dDdUFrTExRQUREUUFnQVNBQktBSUFLQUtFQVJFQUFCQ3hBa1VOQUNBQUtBSVVEUUVMQWtBZ0FDZ0N1QWt0QUFRTkFDQUJJQUVvQWdBb0FvUUJFUUFBRVBFQ1JRMEFJQUFvQWhRTkFDQUJJQUVvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUpzRVFBQURRRWdBU0FCS0FJQUtBSjRFUUFBSWdJZ0FpZ0NBQ2dDYUJFQUFBMEJDd0pBSUFBb0FyZ0pJZ0l0QUFnRWZ5QUNCU0FCSUFFb0FnQW9BaFFSQUFBTkFpQUFLQUs0Q1FzdEFBY05BQ0FCSUFFb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FJc0VRQUFFTEVDRFFBZ0FTQUJLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NMQkVBQUJEeEFnMEFJQUVnQVNnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWl3UkFBQVE4QUlOQUNBQklBRW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXNFUUFBRUk4Q1JRMEJDeUFBS0FLNENTMEFCUTBCSUFFZ0FTZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0Fpd1JBQUFROFFJTkFDQUJJQUVvQWdBb0FuZ1JBQUFpQVNBQktBSUFLQUlzRVFBQUVQQUNSUTBCQ3lBQVFiaXJBV29nQTBFTWFoRGNBUXNnQTBFUWFpUUFDOVVDQVFKL0FrQWdBaEQyQ1EwQUFrQWdBaUFDS0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDTEJFQUFDa0NCRUkvZzBJR1VnMEFJQUlnQWlnQ0FDZ0NVQkVBQUNJRFJRMEFJQU1vQW1oQnN3RkhEUUFnQXlBREtBSUFLQUxBQVJFQUFCRHlBVVVOQUNBRElBTW9BZ0FvQXNRQkVRQUFJZ1FnQkNnQ0FDZ0NGQkVBQUJCTFFRQVFEeWdDQUNBRElBTW9BZ0FvQXNBQkVRQUFJZ01nQXlnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQWxRUkFBQW9Ba0FRTjBGL2FrWU5BUXNDUUFKQUlBSWdBaWdDQUNnQ2dBRVJBQUJCRGtZTkFDQUNJQUlvQWdBb0FvQUJFUUFBUVJGR0RRQWdBaUFDS0FJQUtBS0FBUkVBQUVFUVJ3MEJJQUlnQWlnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWl3UkFBQVFzUUpGRFFFTElBQWdBVUVCUWRUQ0NrSFl3Z29nQUNnQ0FDZ0NGQkVJQUE4TElBQWdBVUhqMWdsQjFOd0pRZWZDQ2tFQUlBQW9BZ0FvQXFBQkVRSUFDd3R3QVFGL0FrQWdBU0FCS0FJQUtBSXdFUUFBSWdGRkRRQWdBU0FCS0FJQUtBSjRFUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFFVU5BQ0FBSUFFZ0FTZ0NBQ2dDZUJFQUFDSUFJQUFvQWdBb0Fpd1JBQUJCQUJESUJ5SUFRUUZJRFFBZ0FTQUJLQUlBS0FKOEVRQUFJQUFRalFNTEM5Y1FBUUovSXdCQmtBRnJJZ1FrQUNBRUlBSTJBb3dCSUFSQkFEWUNpQUVnQXlBREtBSUFLQUtFQVJFQUFCQ2hBd1JBSUFRZ0F5QURLQUlBS0FJVUVRQUFFRXRCQUJBUEtBSUFOZ0tJQVFzZ0FDQUVRWXdCYWhDK0JRSkFBa0FnQkNnQ2pBRWlBaUFDS0FJQUtBS2dBUkVBQUEwQUlBSWdBaWdDQUNnQ25BRVJBQUFOQUNBQ0lBSW9BZ0FvQXFRQkVRQUFEUUFnQWlBQ0tBSUFLQUo0RVFBQUVJVUJEUUFnQWhEeUFRMEFBa0FnQWlBQ0tBSUFLQUl3RVFBQUJFQWdBQ0FCUVpQY0NTQUNJQUlvQWdBb0FqQVJBQUFpQWlBQ0tBSUFLQUxBQVJFQUFCQVRRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEQUVMSUFBZ0FVR1QzQWxCeWR3SlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUFLQUlvUkFBQUFBQUFBQUFBUVFFZ0FVRUFFTndGSVFJTUFRc0NRQ0FDSUFJb0FnQW9BcUFCRVFBQURRQWdBaUFDS0FJQUtBS2tBUkVBQUVVTkFDQUNJQUlvQWdBb0FuZ1JBQUFRc0FJRVFDQUFJQUZCMU53SlFkYmNDU0FBS0FJQUtBSlFFUVFBQ3lBQ0lBSW9BZ0FvQW5nUkFBQVFyd0lFUUNBQUlBRkIxTndKUVlQZENTQUFLQUlBS0FKY0VRUUFDeUFDSUFJb0FnQW9BbmdSQUFBUXhnSkZEUUFnQUNBQlFkVGNDVUd4M1FrZ0FDZ0NBQ2dDYUJFRUFBc0NRQ0FDSUFJb0FnQW9BbmdSQUFBaUJTQUZLQUlBS0FJc0VRQUFFS0VEUlEwQUlBTWdBeWdDQUNnQ2hBRVJBQUFRb1FORkRRQWdBQ0FCSUFJZ0FpZ0NBQ2dDZUJFQUFDQUVRWWdCYWhET0J5QUFLQUlvSUFRb0Fvd0JJQVFvQW9nQklBRVFuUW9oQWd3QkN3SkFJQUlROGdGRkRRQWdBaUFDS0FJQUtBS2dBUkVBQUEwQUlBQWdBVUVCUWVEZENVSGszUWtnQUNnQ0FDZ0NGQkVJQUNBQUtBSW9JUUFnQkNBQktRSUlOd01vSUFRZ0FTa0NBRGNESUNBQVFaY0JJQUlnQXlBRVFTQnFFTThESWdJZ0JDZ0NqQUVpQUNBQUtBSUFLQUo0RVFBQUlBSW9BZ0FvQW5RUkFRQU1BUXNDUUNBQ0lBSW9BZ0FvQWpBUkFBQkZEUUFnQUNBQ0lBSW9BZ0FvQW5nUkFBQVFqZ05GRFFBZ0FDQUNFUElQQ3lBRElBTW9BZ0FvQW9RQkVRQUFFS0VEQkVBZ0FDQUJJQUlnQWlnQ0FDZ0NlQkVBQUNBRVFZZ0JhaERPQndzZ0F5QURLQUlBS0FLRUFSRUFBQkNoQXlFRklBUW9Bb3dCSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0FuZ1JBQUFoQWdKL0lBVUVRQUpBSUFJRVFDQUVLQUtNQVNJQ0lBSW9BZ0FvQW53UkFBQWlBaUFFS0FLSUFVRUJhaUFDS0FJQUtBS0VBUkVCQUNBRUtBS01BU0lDSUFJb0FnQW9Bb1FCRVFBQUVOUUNSUTBCSUFRb0Fvd0JJZ0lnQWlnQ0FDZ0NoQUVSQUFBdkFRUkJ3UDhCY1VVTkFTQUVLQUtNQVNJQ0lBSW9BZ0FvQWlBUkFBQWlBa1VOQVNBRUlBSWdBaWdDQUNnQ3dBRVJBQUFpQWlBQ0tBSUFLQUo4RVFBQUlnSWdBaWdDQUNnQ1VCRUFBQ0lDUVFFUTFnRTJBakFnQkNBRUtBS0lBVUVCYWpZQ2hBRWdBa0VCSUFSQk1Hb2dCRUdFQVdvUXBnRW9BZ0FRbXdRTUFRc2dBQ0FCSUFRb0Fvd0JJZ0lnQWlnQ0FDZ0NlQkVBQUNBRVFZZ0JhaERPQndzZ0FDZ0NLQm9nQkNBQktRSUlOd01JSUFRZ0FTa0NBRGNEQUVHeEFTQUVLQUtNQVNBRElBUVFpZ1VNQVFzZ0FnUkFBa0FDUUNBRUtBS01BU0lDSUFJb0FnQW9BakFSQUFCRkRRQWdBQ0FFS0FLTUFTSUNJQUlvQWdBb0FuZ1JBQUFRamdORkRRQWdBQ0FCUWVQV0NVSFUzQWxCL3QwSlFRQWdBQ2dDQUNnQ29BRVJBZ0FNQVFzZ0FDQUJJQVFvQW93QkVQRVBDeUFFS0FLTUFTSUNJQUlvQWdBb0Fud1JBQUFpQWlBQ0tBSUFLQUtBQVJFRkFBc0NRQ0FFS0FLTUFTSUNJQUlvQWdBb0FvQUJFUUFBUVJCR0JFQWdCQ2dDakFFaUFpQUNLQUlBS0FLRUFSRUFBQ2tDQkVJL2cwSUdVUVJBSUFBZ0JDZ0NqQUVpQWlBQ0tBSUFLQUlBRVFBQVFYZEIzdDRKRUVvTUFnc2dCQ2dDakFFaUFpQUNLQUlBS0FLRUFSRUFBQ2tDQkVJL2cwSUZVZzBCSUFBZ0JDZ0NqQUVpQWlBQ0tBSUFLQUlBRVFBQVFRaEJ3QUpCQWtHRTN3bEJqTjhKRU5FQkRBRUxBa0FnQUNnQ0ZFRUVSdzBBSUFRb0Fvd0JJZ0lnQWlnQ0FDZ0NoQUVSQUFBUThBSkZEUUFnQUNBRUtBS01BU0lDSUFJb0FnQW9BZ0FSQUFCQmQwR3kzd2tRU2d3QkN5QUVLQUtNQVNJQ0lBSW9BZ0FvQW9BQkVRQUFRUTVIRFFBZ0FDZ0NFRUdDQVVnTkFDQUFJQVFvQW93QklnSWdBaWdDQUNnQ0FCRUFBRUVPUWVIZkNSQktJQUFnQkNnQ2pBRWlBaUFDS0FJQUtBSUFFUUFBUVFoQndBSkJBa0dFM3dsQjRkOEpFTkVCSUFBZ0JDZ0NqQUVpQWlBQ0tBSUFLQUlBRVFBQVFRWkJrQU5CQUVIaDN3a1FLQXNnQUNnQ0tCb2dCQ0FCS1FJSU53TVlJQVFnQVNrQ0FEY0RFRUd5QVNBRUtBS01BU0FESUFSQkVHb1FpZ1VMSVFJZ0JFRXdhaUFFS0FLTUFTSUJJQUVvQWdBb0FuZ1JBQUJCQUVFQUVNMEJJUUVDUUFKQUlBUW9Bb3dCSWdVZ0JTZ0NBQ2dDZUJFQUFDSUZJQVVvQWdBb0Fpd1JBQUFRandKRkRRQWdBeUFES0FJQUtBS0VBUkVBQUJDUEFrVU5BQ0FCRUJzaUJTQUZLUUlFUWtDRFFnS0VOd0lFSUFRb0Fvd0JJZ1VnQlNnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQWl3UkFBQVE1Z0ZGQkVBZ0F5QURLQUlBS0FLRUFSRUFBQkRtQVVVTkFnc2dBUkFiRUtrRERBRUxJQUVRR3lJRklBVXBBZ1JDUUlNM0FnUWdBUkFiSWdVZ0JTa0NCRUwvLy8vL2Q0TTNBZ1FMSUFJZ0FTQUNLQUlBS0FKMEVRRUFJQVFvQW93QklnVWdCU2dDQUNnQ2hBRVJBQUFnQWlBQ0tBSUFLQUo4RVFBQUlnVWdCU2dDQUNnQ0tCRUFBQkRLQndKQUlBUW9Bb3dCSWdVZ0JTZ0NBQ2dDaEFFUkFBQVE0Z0pGQkVBZ0F5QURLQUlBS0FLRUFSRUFBQkRpQWtVTkFRc2dBaUFDS0FJQUtBSjhFUUFBSWdVZ0JTZ0NBQ2dDS0JFQUFDSUZJQVVwQWdSQ2dJQ0FnQkNFTndJRUN5QUFMUUNvcXdFRVFDQUFJQVFvQW93QklBTVE4QThMSUFFUU5Sb0xJQVJCa0FGcUpBQWdBZ3NzQVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVNBQ0lBSVFrZzhnQUNBRFFRaHFFTlFFSUFOQkVHb2tBQXVWQndFRWZ5TUFRZkFBYXlJR0pBQWdCaUFDTmdKc0FrQUNRQUpBQWtBZ0FrVU5BQ0FDSUFJb0FnQW9Ba1FSQUFBRVFDQUFJQUVnQWlBQ0tBSUFLQUpFRVFBQUlBSWdBaWdDQUNnQ1NCRUFBQ0FDSUFJb0FnQW9BZ3dSQUFBUUV5QUFLQUlBS0FJVUVRZ0FDd0pBSUFJZ0FpZ0NBQ2dDVUJFQUFFVU5BQ0FDSUFJb0FnQW9BakFSQUFBaUJDQUVLQUlBS0FLb0FSRUFBQTBBSUFJZ0FpZ0NBQ2dDTUJFQUFDSUVJQVFvQWdBb0Fyd0JFUUFBUlFSQUlBSWdBaWdDQUNnQ0xCRUFBRVVOQVNBQ0lBSW9BZ0FvQWl3UkFBQWlCQ0FFS0FJQUtBSllFUUFBSWdRZ0JDZ0NBQ2dDTUJFQUFDSUVJQVFvQWdBb0Fyd0JFUUFBUlEwQkN5QUFJQVpCN0FCcUlBQW9BZ0FvQW93Q0VRRUFJQVlvQW13aUFrVU5BUXNnQWlBQ0tBSUFLQUlzRVFBQUlnUUVRQ0FFSUFRb0FnQW9BbGdSQUFBaUFpQUNLQUlBS0FJb0VRQUFJUUlnQUNnQ0tDQUNJQUVRcWdNaEJTQUFLQUlvSUFRZ0JDZ0NBQ2dDWEJFQUFDQUJRUUFRbndnaEJ5QUFLQUlvR2lBR0lBRXBBZ2czQXhBZ0JpQUJLUUlBTndNSVFiTUJJQVVnQnlBR1FRaHFFSW9GSWdVZ0FpQUNLQUlBS0FJd0VRQUFLQUpBSUFRZ0JDZ0NBQ2dDWEJFQUFCQTRLQUlBSUFVb0FnQW9BblFSQVFBZ0JTQUZLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NEQkVBQUVVTkF5QUFJQUZCbnRzSklBTVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXdEQ3lBR0tBSnNJZ0pGRFFBZ0FpQUNLQUlBS0FJa0VRQUFJZ0lFUUNBQ0lRUWdBaUFDS0FJQUtBSXdFUUFBSWdVZ0JTZ0NBQ2dDcUFFUkFBQkZEUUlnQUNBQlFjcmJDU0FERUJOQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTUFRc2dCaWdDYkVVTkFDQUFJQUZCL05zSklBTVFFMEhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXRCZ0FFUVJpSUNJQU1nQmtFWWFrRUFRUUJCQVVFQVFRQkJBQkJGSWdWQkFCRHRBaUVFSUFVUU5Sb0xJQVFnQWlnQ0FDZ0NNQkVBQUNJRklBVW9BZ0FvQWl3UkFBQVFvUU1oQlNBQUtBSW9JUWNnQlFSQUlBUWdCQ2dDQUNnQ1hCRUFBQ0FFSUFJb0FnQW9BakFSQUFBZ0FVRUFFTkFDSVFVTUFnc2dCeUFFSUFFUXFnTWhCUXdCQ3lBQ0lRUUxJQVFnQWlnQ0FDZ0NNQkVBQUNJQklBRW9BZ0FvQWl3UkFBQVErUWtFUUNBQUtBSW9JQU1RK0FrTEFrQWdCQ0FDS0FJQUtBSXdFUUFBRVBRQlJRMEFJQVFnQWlnQ0FDZ0NNQkVBQUNJQklBRW9BZ0FvQWl3UkFBQW9BZ2hCZ01BK2NVVU5BQ0FBS0FJb0VNc0hDeUFHUWZBQWFpUUFJQVVMTHdFQmZ5TUFRUkJySWdNa0FDQURJQUUyQWd3Z0FDQURRUXhxS0FJQUlBSWdBQ2dDQ0JFR0FDQURRUkJxSkFBTDZ3WUJBWDhnQUVIZ0JHb2lBeEMvQlFSQUlBTWdBU2dDQ0NBQ0VQWVBDd0pBQWtBQ1FDQUNFS2dCUlEwQUlBSkJBQkRFQVVINzFna1Fod0ZGQkVBZ0FoQ29BVUVFUndSQUlBQWdBVUdFMXdsQnFOY0pRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQWtFQkVNUUJRYkRYQ1JDSEFRUkFJQUFnQVVHeTF3bEJxTmNKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBRHdzZ0FDQUNRUUlReEFGQjJOY0pFSWNCQkg4Z0FrRUNFTVFCUWR2WENSQ0hBUTBEUVFBRlFRRUxPZ0NJQVNBQ1FRTVF4QUZCbHRnSkVJY0JSUTBCSUFBZ0FVR1kyQWxCcU5jSlFlUFdDVUVBSUFBb0FnQW9BcUFCRVFJQUR3c2dBa0VBRU1RQlFiN1lDUkNIQVVVRVFDQUNFS2dCUVFSSEJFQWdBQ0FCUWNUWUNVR28xd2xCNDlZSlFRQWdBQ2dDQUNnQ29BRVJBZ0FQQ3lBQ1FRRVF4QUZCc05jSkVJY0JCRUFnQUNBQlFlWFlDVUdvMXdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBUEN5QUFJQUpCQWhERUFVSFkxd2tRaHdFRWZ5QUNRUUlReEFGQjI5Y0pFSWNCRFFSQkFBVkJBUXM2QUlrQklBSkJBeERFQVVHVzJBa1Fod0ZGRFFFZ0FDQUJRYnpaQ1VHbzF3bEI0OVlKUVFBZ0FDZ0NBQ2dDb0FFUkFnQVBDd0pBSUFBb0FoaEZEUUFnQWtFQUVNUUJRZC9aQ1JDSEFVVUVRQ0FDRUtnQlFRRkhCRUFnQUNBQlFmTFpDVUdvMXdsQjQ5WUpRUUFnQUNnQ0FDZ0NvQUVSQWdBTElBQW9BaWdRbVFZUEN5QUFLQUlZUlEwQUlBSkJBQkRFQVVILzJRa1Fod0ZGQkVBZ0FoQ29BVUVCUndSQUlBQWdBVUh5MlFsQnFOY0pRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDeUFBS0FJb0VNc0hEd3NnQUNnQ0dFVU5BQ0FDUVFBUXhBRkJsOW9KRUljQkRRQWdBaENvQVVFQlJ3UkFJQUFnQVVIeTJRbEJxTmNKUWVQV0NVRUFJQUFvQWdBb0FxQUJFUUlBQ3lBQUtBSVlRZitGQkUwRVFDQUFJQUZCcmRvSlFjSGFDVUhqMWdsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQUNnQ0tDSUFRUUU2QU5JRklBQkJnQWRxUVorNkN4Q1RBZzhMSUFKQkFCREVBVUhmMmdrUWh3RkZCRUFnQUNBQlFlVGFDVUgwMmdsQjQ5WUpRUUFnQUNnQ0FDZ0NwQUVSQWdBUEN5QUNRUUFReEFGQmdkc0pFSWNCRFFBZ0FDZ0NLRUVCT2dEbEJRc1BDeUFBSUFGQjM5Y0pRYWpYQ1VIajFnbEJBQ0FBS0FJQUtBS2dBUkVDQUE4TElBQWdBVUdJMlFsQnFOY0pRZVBXQ1VFQUlBQW9BZ0FvQXFBQkVRSUFDd2NBSUFBb0FrUUxLd0FnQUNBQ05nSkVJQUVnQWlBREVORVdJQUFRNmc0Z0FDQUFLQUlBS0FLVUFoRUZBQ0FBS0FKQVJRdTdBUUVCZnlBQVFid0dhaUFCUWZ3Q0VEMGFJQUFvQWloQjBBQnFJQUZCL0FJUVBScEJBU0VDQWtBZ0FDZ0N1QWtpQVMwQUJFVU5BQ0FCTFFBSVJRMEFJQUV0QUFaRkRRQWdBUzBBQTBVTkFDQUJMUUFIUlEwQUlBRXRBQVZCQVhNaEFnc2dBQ0FDT2dDb3F3RWdBRUYvSUFCQjFBaHFLQUlBSWdGQkFuUWdBVUgvLy8vL0EzRWdBVWNiRUNZaUFqWUNwS3NCUVFBaEFDQUJRUUJLQkVBRFFDQUNJQUJCQW5ScVFRQTJBZ0FnQUVFQmFpSUFJQUZJRFFBTEN3c0pBQ0FBRVAwSkVDb0xZQUFnQUNBRk5nSVVJQUFnQWpZQ0VDQUFJQVkyQWd3Z0FDQUROZ0lJSUFCQkFUb0FCQ0FBUWVTbUVEWUNBQ0FBSUFRcEFnQTNBaGdnQUNBRUtRSUlOd0lnSUFBZ0FUWUNLQ0FBUVN4cUVORUZHaUFBUWdBM0FrQWdBQ0FITmdJOEM4Y0NBUUovSXdCQkVHc2lBU1FBSUFCQjdBVnFRUUJCMEFBUTNRRWFJQUJCdkFscVFRQkJnS0FCRU4wQkdpQUFFSmdHQkVBZ0FCQXpCRUFnQVVFSWFrRUJRUUpCQUVFQVFRQVFUeUFBUWJ3SmFpSUNJQUZCQ0dvUXdBVkJBblJxUVFFMkFnQWdBVUVJYWtFQlFRUkJBRUVBUVFBUVR5QUNJQUZCQ0dvUXdBVkJBblJxUVFFMkFnQWdBVUVJYWtFQlFRSkJBRUVBUVFBUVR5QUJJQUVvQWdoQi8vLy8vMzF4UVlDQWdJQUNjallDQ0NBQ0lBRkJDR29Rd0FWQkFuUnFRUUUyQWdBTEFrQWdBQzBBcEFFTkFBSkFBa0FnQUJBelJRMEFJQUFvQWhSQkJFY05BQ0FBUW9LQWdJQWdOd0tNQmd3QkN5QUFRb09BZ0lBd053S01CaUFBUVFNMkF2QUZDeUFBRURNTkFFRUFJUUlEUUNBQUlBSkJBblJxUWJ3SmFrRUROZ0lBSUFKQkFXb2lBa0dBS0VjTkFBc0xJQUJDZzRDQWdCQTNBcUFHQ3lBQlFSQnFKQUFMcmdJQUlBQWdBaUFFSUFVZ0JpQUhJQWdnQ1JEOER5QUFRUUE2QUdVZ0FDQUJOZ0pNSUFCQm03a0xOZ0pJSUFCQmhOSUpOZ0lBSUFCQ0FEY0NVQ0FBUWdBM0FsZ2dBRUhvQUdvUTRRY2FJQUJCK0FCcUVPRUhHaUFBUVlnQmFpSUJRUUE2QUFFZ0FVRUJPZ0FBSUFGQkJHb1EzUXNhSUFBZ0F6b0FwQUVnQUVJQU53S2NBU0FBUWFnQmFoQ1RBUm9nQUNBQVFiQUVhallDdkFRZ0FFSUFOd0s0QVNBQVFjQUVhaERWQVNFQklBQkJ2Z0kyQXRnRUlBQkJ4TXNQTmdMY0JDQUFRY0FDTmdMb0JDQUFRY1RMRHpZQzdBUWdBRUcvQWpZQytBUWdBRUhFeXc4MkF2d0VJQUJCdlFJMkFvZ0ZJQUJCeE1zUE5nS01CU0FBUWNFQ05nS1lCU0FBUWNUTER6WUNuQVVnQUVFL05nS29CU0FBUW9DQWdJRHcvejgzQXFBRklBb0VRQ0FCSUFvUTZBSUxDNlFFQVFGK0lBQWdBU0FDSUFNZ0JDQUZJQVlnQnlBSUlBa2dDaEQrRHlBQUlBQkJyQWxxTmdLNENTQUFRUUEyQXJRRklBQkJBRG9Bc0FVZ0FFR2sxQWsyQWdBZ0FFRzhxUUZxSWdGQkFEWUNCQ0FCUWFpNUN6WUNBQ0FBUVpTckFXb1ExUUVhSUFCQkFEb0FxS3NCSUFCQkFEWUNwS3NCSUFCQnJLc0JhaENkQkNBQVFiaXJBV29Ra3dFYUlBQkJ5S3NCYWhDVEFSb0NRQ0FBRURORkJFQWdCaWdDQ0VFQlNBMEJDeUFCUVFFNkFBUWdCMEVFUnlBRGNnMEFJQUFRTXcwQUlBWW9BZ2hCQVVnTkFDQUJRUUU2QUFVTElBQVEvUThnQUVINHFRRnFFSWtESUFCQi9La0JhaUlCSUFFcEFnQkMvLy8vLy8vLy8wZURRb0NBZ0lDQWdJQVFoQ0lMTndJQUlBRWdDMEwvLy8vLy8vLy9sM2lEUW9DQWdJQ0FnSUNBQVVLQWdJQ0FnSUNBd0FBZ0JpZ0NBQnVFTndJQUlBQkJ4S2tCYWhDSkF5QUFRY2lwQVdvaUFTQUJLUUlBUXYvLy8vLy8vLzlIZzBLQWdJQ0FnSUNBRUlRaUN6Y0NBQ0FCSUF0Qy8vLy8vLy8vLzVkNGcwS0FnSUNBZ0lDQXdBRkNnSUNBZ0lDQWdNQUFJQVlvQWdBYmhEY0NBQ0FHS0FJQVFZQ0dCRThFUUNBQUtBSW9FSmtHQ3lBQVFheXFBV29RaVFNZ0FFSGdxZ0ZxRUlrRElBZEJBMDBFUUNBQVFmaXFBV29pQVNBQktRSUFRdi8vLy8rUGZvTTNBZ0FMSUFkQkEwWUVRQ0FBUWZpcUFXb2lBQ0FBS1FJQVF2Ly8vNGR3Z3pjQ0FBc0NRQ0FLUlEwQUlBb1FIMFVOQUNBS1FieldDUkNjQkVVTkFDQUlRUUpCd2RZSkVMc0JDd3ViQlFFRWZ5TUFRUkJySWdZa0FDQUNFQjlCQlU4RVFDQUFJQUZCNzlBSklBSVFFMEczelFsQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQmlBQ0VCODJBZ0JCaU5FSklBWVEvZ0VvQWdBaUIwRUJUZ1JBQTBBQ1FBSkFJQUlnQlJCUUxBQUFRWjkvYWlJSVFSbExEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDRUVCYXc0WkJ3d01EQXdFREF3TURBd01EQXdJQ3dFQ0JRd01DUUFEQmdvTElBUkJBQkRIQWlBR0lBVkJBblJxUVFBMkFnQU1EQXNnQkVFQUVNY0NJQVlnQlVFQ2RHcEJBVFlDQUF3TEN5QUVRUUFReHdJZ0JpQUZRUUowYWtFQ05nSUFEQW9MSUFSQkFSREhBaUFHSUFWQkFuUnFRUUEyQWdBTUNRc2dCRUVCRU1jQ0lBWWdCVUVDZEdwQkFUWUNBQXdJQ3lBRVFRRVF4d0lnQmlBRlFRSjBha0VDTmdJQURBY0xJQVJCQWhESEFpQUdJQVZCQW5ScVFRQTJBZ0FNQmdzZ0JFRUNFTWNDSUFZZ0JVRUNkR3BCQVRZQ0FBd0ZDeUFFUVFJUXh3SWdCaUFGUVFKMGFrRUNOZ0lBREFRTElBUkJBeERIQWlBR0lBVkJBblJxUVFBMkFnQU1Bd3NnQkVFREVNY0NJQVlnQlVFQ2RHcEJBVFlDQUF3Q0N5QUVRUU1ReHdJZ0JpQUZRUUowYWtFQ05nSUFEQUVMSUFBZ0FVR00wUWtnQWhBVFFiZk5DVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUZRUUZxSWdVZ0IwY05BQXNMUVFBaEJRSkFJQVFvQWdCQkFFd05BQU5BSUFRZ0JSQ2dCaUFEVGdSQUlBQWdBVUdtMFFrZ0FoQVRRYmZOQ1VFQUlBQW9BZ0FvQXFBQkVRSUFJQVFnQlJEaEFRd0NDd0pBSUFWRkRRQWdCaUFGUVFKMGFpSUhLQUlBSUFkQmZHb29BZ0JHRFFBZ0FDQUJRY3pSQ1NBQ0VCTkJ0ODBKUVFBZ0FDZ0NBQ2dDb0FFUkFnQWdCQ0FGRU9FQkRBSUxJQVZCQVdvaUJTQUVLQUlBU0EwQUN3c2dCQ2dDQUVVRVFDQUVRUUFReHdJTElBWkJFR29rQUF2aEFRRURmMEVCSVFVQ1FDQUFLQUlBSWdNZ0F5Z0NBQ2dDa0FFUkFBQkJBVWdOQUVFQUlRVkJBQ0VEQTBBZ0FDZ0NCQ0FBS0FJQUlnUWdBeUFFS0FJQUtBS2dBUkVEQUNnQ0JDQUJJQU1nQVNnQ0FDZ0NvQUVSQXdBb0FnUWdBaUFESUFJb0FnQW9BcUFCRVFNQUtBSUVFTXdIRFFFZ0FDZ0NCQ0FBS0FJQUlnUWdBeUFFS0FJQUtBS2dBUkVEQUNnQ0JDQUNJQU1nQWlnQ0FDZ0NvQUVSQXdBb0FnUWdBU0FESUFFb0FnQW9BcUFCRVFNQUtBSUVFTXdIRFFFZ0EwRUJhaUlESUFBb0FnQWlCQ0FFS0FJQUtBS1FBUkVBQUVnTkFBdEJBU0VGQ3lBRkMzY0JBMzhqQUVFZ2F5SUNKQUFnQUNnQ1RDQUNRUWhxSUFFUUlpSUVJQUpCSDJwQkFCQ3NBU0VCSUFRUUdSb2dBaUFCTmdJWUlBRUVRQUovSUFJdEFCOEVRQ0FBSUFKQkdHb2dBQ2dDQUNnQ2pBSVJBUUFnQWlnQ0dDRUJDeUFCQ3lBQktBSUFLQUlrRVFBQUlRTUxJQUpCSUdva0FDQURDMXdCQW44Q1FDQUFLQUlBSWdFZ0FTZ0NBQ2dDekFFUkFBQkZEUUFnQUNnQ0FDSUJJQUVvQWdBb0Frd1JBQUFRd2dKRkRRQWdBQ2dDQUNJQUlBQW9BZ0FvQWt3UkFBQVF3Z0lpQUNBQUtBSUFLQUl3RVFBQVJTRUNDeUFDQ3pNQkFYOGpBRUVRYXlJQ0pBQWdBQzBBcEFGRkJFQWdBaUFCTmdJTUlBQkJxQUZxSUFKQkRHb1FzZ1FMSUFKQkVHb2tBQXMxQVFGL0l3QkJFR3NpQmlRQUlBWWdCVFlDRENBQUlBRWdBaUFESUFSQkFTQUZJQUFvQWdBb0FvUUNFUThBSUFaQkVHb2tBQXRLQVFGL0l3QkJFR3NpQmlRQUlBWWdCVFlDRENBQUlBRWdBaUFESUFSQkFpQUZJQUFvQWdBb0FvUUNFUThBSUFBdEFEeEJnQUZ4UlFSQUlBQW9Ba1FRaGdvTElBWkJFR29rQUFzK0FRRi9Jd0JCRUdzaUJpUUFJQUFRaFFwRkJFQWdCaUFGTmdJTUlBQWdBU0FDSUFNZ0JFRUJJQVVnQUNnQ0FDZ0NoQUlSRHdBTElBWkJFR29rQUF0VkFRRi9Jd0JCRUdzaUJpUUFBa0FnQUMwQVBFRWdjUTBBSUFZZ0JUWUNEQ0FBSUFFZ0FpQURJQVJCQWlBRklBQW9BZ0FvQW9RQ0VROEFJQUF0QUR4QmdBRnhEUUFnQUNnQ1JCQ0dDZ3NnQmtFUWFpUUFDM1lCQVg4akFFSFFDV3NpQnlRQUlBZEJ5QWtnQkNBR0VOVUZHaUFBS0FJTUlBVVFyUU1nQUNnQ0RDQUJFSTBLSUFBb0FneEJtczBKRUJBZ0F4QVFRWnpOQ1JBUUlBSVFFRUdoelFrUUVDQUhFQkJCbzgwSkVCQWFJQVZCQWtZRVFDQUFJQUFvQWtCQkFXbzJBa0FMSUFkQjBBbHFKQUFMMWdFQ0EzOEJmU01BUVJCcklnSWtBQ0FDSUFFMkFnd0NRQ0FDSUFGQkFVWUVmMEVDQlNBQklBRkJmMnB4UlEwQklBRVFpZ0lMSWdFMkFnd0xBa0FnQVNBQUVEd2lBMHNFUUNBQUlBRVFod29NQVFzZ0FTQURUdzBBSUFNUXVnRWhCQUovSUFBUUl5Z0NBTE1nQUJCREtnSUFsWTBpQlVNQUFJQlBYU0FGUXdBQUFBQmdjUVJBSUFXcERBRUxRUUFMSVFFZ0FnSi9JQVFFUUNBQkVJb0VEQUVMSUFFUWlnSUxOZ0lJSUFJZ0FrRU1haUFDUVFocUVGSW9BZ0FpQVRZQ0RDQUJJQU5QRFFBZ0FDQUJFSWNLQ3lBQ1FSQnFKQUFMNEFNQ0JYOEJmU01BUVNCcklnUWtBQ0FDS0FJQUVOQUhJUWNnQVJBOElRVWdCRUVBT2dBZkFrQUNRQ0FGUlEwQUlBRWdCeUFGRURRaUNCQVJLQUlBSWdaRkRRQURRQ0FHS0FJQUlnWkZEUUVnQnlBR0tBSUVSd1JBSUFZb0FnUWdCUkEwSUFoSERRSUxJQVlvQWdnZ0FpZ0NBQkREQlVVTkFBc01BUXNnQkVFUWFpQUJJQWNnQXhEQ0JTQUJFQ01vQWdBaEFpQUJFRU1oQXdKQUlBVUVRQ0FES2dJQUlBV3psQ0FDUVFGcXMxMUJBWE1OQVFzZ0JDQUZFTG9CUVFGeklBVkJBWFJ5TmdJTUlBUUNmeUFCRUNNb0FnQkJBV3F6SUFFUVF5b0NBSldOSWdsREFBQ0FUMTBnQ1VNQUFBQUFZSEVFUUNBSnFRd0JDMEVBQ3pZQ0NDQUJJQVJCREdvZ0JFRUlhaEJTS0FJQUVJb1FJQWNnQVJBOElnVVFOQ0VJQ3dKQUlBRWdDQkFSS0FJQUlnSkZCRUFnQkNnQ0VDQUJRUWhxSWdJb0FnQTJBZ0FnQWlBRUtBSVFOZ0lBSUFFZ0NCQVJJQUkyQWdBZ0JDZ0NFQ2dDQUVVTkFTQUVLQUlRSVFJZ0FTQUVLQUlRS0FJQUtBSUVJQVVRTkJBUklBSTJBZ0FNQVFzZ0JDZ0NFQ0FDS0FJQU5nSUFJQUlnQkNnQ0VEWUNBQXNnQkVFUWFoQmZJUVlnQVJBaklnRWdBU2dDQUVFQmFqWUNBQ0FFUVFFNkFCOGdCRUVRYWhDekFnc2dBQ0FFUVJCcUlBWVFNU0FFUVI5cUVLSUJJQVJCSUdva0FBc3pBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNDQ0FDS0FJSUtBSUFJUUVnQUVFQU5nSUVJQUFnQVRZQ0FDQUNRUkJxSkFBTDFnRUNBMzhCZlNNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dDUUNBQ0lBRkJBVVlFZjBFQ0JTQUJJQUZCZjJweFJRMEJJQUVRaWdJTElnRTJBZ3dMQWtBZ0FTQUFFRHdpQTBzRVFDQUFJQUVRaVFvTUFRc2dBU0FEVHcwQUlBTVF1Z0VoQkFKL0lBQVFJeWdDQUxNZ0FCQkRLZ0lBbFkwaUJVTUFBSUJQWFNBRlF3QUFBQUJnY1FSQUlBV3BEQUVMUVFBTElRRWdBZ0ovSUFRRVFDQUJFSW9FREFFTElBRVFpZ0lMTmdJSUlBSWdBa0VNYWlBQ1FRaHFFRklvQWdBaUFUWUNEQ0FCSUFOUERRQWdBQ0FCRUlrS0N5QUNRUkJxSkFBTE1RRUJmeU1BUVJCcklnRWtBQ0FCSUFBb0FnQTJBZ2dnQVVFSWFrRUJFS3NPSUFFb0FnZ2hBQ0FCUVJCcUpBQWdBQXRtQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ0FCSUFBUVBDQUFFQ1VRcGc0MkFnZ2dBaUFBRUlFQk5nSUFBbjhDUUNBQ1FRaHFJQUlRSGtVTkFDQUFFQ01nQVNBQ1FRaHFFRmNRandRTkFDQUNLQUlJREFFTElBQVFnUUVMSVFBZ0FrRVFhaVFBSUFBTEJ3QWdBQzBBQkF1ckFRRUZmeU1BUVJCcklnTWtBQ0FBRUNNZ0FSQ0xDaUVFQWtBQ1FDQUFFRHdpQlVVTkFDQUFJQVFnQlJBMElnWVFFU2dDQUNJQ1JRMEFJQUlvQWdBaUFrVU5BQU5BSUFRZ0FpZ0NCRWNFUUNBQ0tBSUVJQVVRTkNBR1J3MENDd0pBSUFRZ0FpZ0NCRWNOQUNBQUVFTWdBa0VJYWlBQkVKc0dSUTBBSUFOQkNHb2dBaEF4S0FJQUlRSU1Bd3NnQWlnQ0FDSUNEUUFMQ3lBREVNc0JJZ0kyQWdnTElBTkJFR29rQUNBQ0Myd0JBMzhqQUVFZ2F5SUNKQUFnQVJCZ1FRSk9CRUFnQUJDZEJ5QUNJQUFvQWdRaUFCQkFOZ0lRSUFKQkdHb2dBa0VRYWhCbklRTWdBaUFCS0FJRUVFQTJBZ2dnQWtFSWFoQ09FQ0VFSUFFb0FnUVFNaUVCSUFBZ0F5Z0NBQ0FFSUFFUXN3NExJQUpCSUdva0FBdXBBUUVFZnlNQVFSQnJJZ0lrQUNBQktBSUFFTkFISVFNQ1FBSkFJQUFRUENJRVJRMEFJQUFnQXlBRUVEUWlCUkFSS0FJQUlnQkZEUUFnQUNnQ0FDSUFSUTBBQTBBZ0F5QUFLQUlFUndSQUlBQW9BZ1FnQkJBMElBVkhEUUlMQWtBZ0F5QUFLQUlFUncwQUlBQW9BZ2dnQVNnQ0FCRERCVVVOQUNBQ1FRaHFJQUFRTVNnQ0FDRUFEQU1MSUFBb0FnQWlBQTBBQ3dzZ0FoRExBU0lBTmdJSUN5QUNRUkJxSkFBZ0FBdXBBUUVCZndKQUFrQWdBQ2dDQkJBelJRUkFJQUFvQWdRaEFRd0JDeUFBS0FJRUlnRW9BaEJCdGdKSURRQWdBQkRaQVF3QkN5QUJLQUpNRUNRTkFDQUFLQUlFRURORkJFQWdBQ2dDQkNJQktBSVFRYU1EU2cwQklBRkJyYjhKSUFFb0FnQW9BaUFSQXdBTkFRc2dBQ2dDQkMwQUJBUkFJQUFvQWdRaUFTQUFRUXhxUWYzSkNTQUFLQUlrUVpXK0NVRUFJQUVvQWdBb0FxUUJFUUlBQ3lBQUVOZ0JEd3NnQUNnQ0tBdDZBUUovSUFBb0FnUVFNeUVDSUFBb0FnUWhBUUpBQWtBZ0FnUkFJQUVvQWhCQnJBSklEUUVMSUFFUU13MEJJQUFvQWdRaUFTZ0NFRUdDQVU0TkFRc2dBUzBBQkFSQUlBQW9BZ1FpQVNBQVFReHFRWmZKQ1NBQUtBSWtRWlcrQ1VFQUlBRW9BZ0FvQXFRQkVRSUFDeUFBRU5nQkR3c2dBQ2dDS0F1N0FRRUNmeUFBUVFFNkFBZ2dBQ2dDQkJBeklRSWdBQ2dDQkNFQkFrQUNRQUpBSUFKRkRRQWdBU2dDRUVHc0FrZ05BQ0FBRU5rQkRBRUxJQUVRTXcwQklBQW9BZ1FpQVNnQ0VFR1BBMG9OQUNBQktBSk1FQ1FOQUNBQUtBSUVJZ0VvQWhCQmxnRklEUUVnQVVIUXdBa2dBU2dDQUNnQ0lCRURBRVVOQVFzZ0FDZ0NLQThMSUFBb0FnUXRBQVFFUUNBQUtBSUVJZ0VnQUVFTWFrSDl5UWtnQUNnQ0pFR1Z2Z2xCQUNBQktBSUFLQUtrQVJFQ0FBc2dBQkRZQVF0V0FRRi9JQUJCQVRvQUNDQUFLQUlFSWdFb0FoQkI3d0JPQkVBZ0FDZ0NLQThMSUFFdEFBUUVRQ0FBS0FJRUlnRWdBRUVNYWtIUnlRa2dBQ2dDSkVHVnZnbEJBQ0FCS0FJQUtBS2tBUkVDQUFzZ0FCRFlBUXRjQVFGL0FrQWdBQ2dDQkJBelJRUkFJQUFvQWdRaUFTZ0NFRUdDQVVnTkFRc2dBQ2dDS0E4TElBRXRBQVFFUUNBQUtBSUVJZ0VnQUVFTWFrR3N5UWtnQUNnQ0pFR1Z2Z2xCQUNBQktBSUFLQUtrQVJFQ0FBc2dBQkRZQVFzbEFRRi9Jd0JCRUdzaUFTUUFJQUFnQVVFSWFoQ1lEaERwR1NFQUlBRkJFR29rQUNBQUN5VUJBWDhqQUVFUWF5SUFKQUFnQUVFSWFoRExBUkF4S0FJQUlRRWdBRUVRYWlRQUlBRUxLUUVCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVJDUkVCQXhLQUlBSVFBZ0FrRVFhaVFBSUFBTExBRUJmeU1BUVJCcklnQWtBQ0FBRU1zQk5nSUFJQUJCQ0dvZ0FCQm5LQUlBSVFFZ0FFRVFhaVFBSUFFTE1BRUJmeU1BUVJCcklnSWtBQ0FDSUFBZ0FSQ1RFRFlDQUNBQ1FRaHFJQUlRWnlnQ0FDRUFJQUpCRUdva0FDQUFDK2dEQWdWL0FYMGpBRUVnYXlJRkpBQWdBUkFqSUFJUWl3b2hDQ0FCRUR3aEJpQUZRUUE2QUI4Q1FBSkFJQVpGRFFBZ0FTQUlJQVlRTkNJSkVCRW9BZ0FpQjBVTkFBTkFJQWNvQWdBaUIwVU5BU0FJSUFjb0FnUkhCRUFnQnlnQ0JDQUdFRFFnQ1VjTkFnc2dBUkJESUFkQkNHb2dBaENiQmtVTkFBc01BUXNnQlVFUWFpQUJJQWhCbWMwSklBTWdCQkNhQmlBQkVDTW9BZ0FoQWlBQkVFTWhBd0pBSUFZRVFDQURLZ0lBSUFhemxDQUNRUUZxczExQkFYTU5BUXNnQlNBR0VMb0JRUUZ6SUFaQkFYUnlOZ0lNSUFVQ2Z5QUJFQ01vQWdCQkFXcXpJQUVRUXlvQ0FKV05JZ3BEQUFDQVQxMGdDa01BQUFBQVlIRUVRQ0FLcVF3QkMwRUFDellDQ0NBQklBVkJER29nQlVFSWFoQlNLQUlBRUkwUUlBZ2dBUkE4SWdZUU5DRUpDd0pBSUFFZ0NSQVJLQUlBSWdKRkJFQWdCU2dDRUNBQlFRaHFJZ0lvQWdBMkFnQWdBaUFGS0FJUU5nSUFJQUVnQ1JBUklBSTJBZ0FnQlNnQ0VDZ0NBRVVOQVNBRktBSVFJUUlnQVNBRktBSVFLQUlBS0FJRUlBWVFOQkFSSUFJMkFnQU1BUXNnQlNnQ0VDQUNLQUlBTmdJQUlBSWdCU2dDRURZQ0FBc2dCVUVRYWhCZklRY2dBUkFqSWdFZ0FTZ0NBRUVCYWpZQ0FDQUZRUUU2QUI4Z0JVRVFhaEN6QWdzZ0FDQUZRUkJxSUFjUU1TQUZRUjlxRUtJQklBVkJJR29rQUF1dFd3RURmeU1BUVJCcklnQWtBRUdFOUJJb0FnQkZCRUJCRkJBbUlnRVFsZ0VoQWtHRTlCSWdBVFlDQUNBQVFaYWRDVFlDQUNBQ0lBQVFGRUdDQWpZQ0FFR0U5QklvQWdBaEFTQUFRWnlkQ1RZQ0FDQUJJQUFRRkVIeEJEWUNBRUdFOUJJb0FnQWhBU0FBUWFTZENUWUNBQ0FCSUFBUUZFSHpCRFlDQUVHRTlCSW9BZ0FoQVNBQVFhdWRDVFlDQUNBQklBQVFGRUhnQkRZQ0FFR0U5QklvQWdBaEFTQUFRYTZkQ1RZQ0FDQUJJQUFRRkVIaEJEWUNBRUdFOUJJb0FnQWhBU0FBUWJLZENUWUNBQ0FCSUFBUUZFSDFCRFlDQUVHRTlCSW9BZ0FoQVNBQVFibWRDVFlDQUNBQklBQVFGRUgwQkRZQ0FFR0U5QklvQWdBaEFTQUFRYjZkQ1RZQ0FDQUJJQUFRRkVIZkJEWUNBRUdFOUJJb0FnQWhBU0FBUWNlZENUWUNBQ0FCSUFBUUZFSFJCRFlDQUVHRTlCSW9BZ0FoQVNBQVFkR2RDVFlDQUNBQklBQVFGRUhXQkRZQ0FFR0U5QklvQWdBaEFTQUFRZGlkQ1RZQ0FDQUJJQUFRRkVIWEJEWUNBRUdFOUJJb0FnQWhBU0FBUWVHZENUWUNBQ0FCSUFBUUZFSGlCRFlDQUVHRTlCSW9BZ0FoQVNBQVFlZWRDVFlDQUNBQklBQVFGRUhqQkRZQ0FFR0U5QklvQWdBaEFTQUFRZTZkQ1RZQ0FDQUJJQUFRRkVIbUJEWUNBRUdFOUJJb0FnQWhBU0FBUWZTZENUWUNBQ0FCSUFBUUZFSG5CRFlDQUVHRTlCSW9BZ0FoQVNBQVFmMmRDVFlDQUNBQklBQVFGRUhvQkRZQ0FFR0U5QklvQWdBaEFTQUFRWUNlQ1RZQ0FDQUJJQUFRRkVIcUJEWUNBRUdFOUJJb0FnQWhBU0FBUVlTZUNUWUNBQ0FCSUFBUUZFSGxCRFlDQUVHRTlCSW9BZ0FoQVNBQVFZcWVDVFlDQUNBQklBQVFGRUh1QkRZQ0FFR0U5QklvQWdBaEFTQUFRWkdlQ1RZQ0FDQUJJQUFRRkVIdkJEWUNBRUdFOUJJb0FnQWhBU0FBUVphZUNUWUNBQ0FCSUFBUUZFSHdCRFlDQUVHRTlCSW9BZ0FoQVNBQVFaNmVDVFlDQUNBQklBQVFGRUhyQkRZQ0FFR0U5QklvQWdBaEFTQUFRYUdlQ1RZQ0FDQUJJQUFRRkVIcEJEWUNBRUdFOUJJb0FnQWhBU0FBUWFhZUNUWUNBQ0FCSUFBUUZFSHNCRFlDQUVHRTlCSW9BZ0FoQVNBQVFhNmVDVFlDQUNBQklBQVFGRUh0QkRZQ0FFR0U5QklvQWdBaEFTQUFRYldlQ1RZQ0FDQUJJQUFRRkVIa0JEWUNBRUdFOUJJb0FnQWhBU0FBUWJxZUNUWUNBQ0FCSUFBUUZFR0RBallDQUVHRTlCSW9BZ0FoQVNBQVFiK2VDVFlDQUNBQklBQVFGRUdHQWpZQ0FFR0U5QklvQWdBaEFTQUFRY1dlQ1RZQ0FDQUJJQUFRRkVHRUFqWUNBRUdFOUJJb0FnQWhBU0FBUWNtZUNUWUNBQ0FCSUFBUUZFR0hBallDQUVHRTlCSW9BZ0FoQVNBQVFjK2VDVFlDQUNBQklBQVFGRUdJQWpZQ0FFR0U5QklvQWdBaEFTQUFRZFdlQ1RZQ0FDQUJJQUFRRkVHSkFqWUNBRUdFOUJJb0FnQWhBU0FBUWR1ZUNUWUNBQ0FCSUFBUUZFR1FBallDQUVHRTlCSW9BZ0FoQVNBQVFlQ2VDVFlDQUNBQklBQVFGRUdSQWpZQ0FFR0U5QklvQWdBaEFTQUFRZVdlQ1RZQ0FDQUJJQUFRRkVHU0FqWUNBRUdFOUJJb0FnQWhBU0FBUWVxZUNUWUNBQ0FCSUFBUUZFR0tBallDQUVHRTlCSW9BZ0FoQVNBQVFmQ2VDVFlDQUNBQklBQVFGRUdMQWpZQ0FFR0U5QklvQWdBaEFTQUFRZmFlQ1RZQ0FDQUJJQUFRRkVHTUFqWUNBRUdFOUJJb0FnQWhBU0FBUWZ5ZUNUWUNBQ0FCSUFBUUZFR1RBallDQUVHRTlCSW9BZ0FoQVNBQVFZR2ZDVFlDQUNBQklBQVFGRUdVQWpZQ0FFR0U5QklvQWdBaEFTQUFRWWFmQ1RZQ0FDQUJJQUFRRkVHVkFqWUNBRUdFOUJJb0FnQWhBU0FBUVl1ZkNUWUNBQ0FCSUFBUUZFSGNCRFlDQUVHRTlCSW9BZ0FoQVNBQVFaQ2ZDVFlDQUNBQklBQVFGRUhjQkRZQ0FFR0U5QklvQWdBaEFTQUFRWmFmQ1RZQ0FDQUJJQUFRRkVIMkJEWUNBRUdFOUJJb0FnQWhBU0FBUVoyZkNUWUNBQ0FCSUFBUUZFSHlCRFlDQUVHRTlCSW9BZ0FoQVNBQVFhU2ZDVFlDQUNBQklBQVFGRUhTQkRZQ0FFR0U5QklvQWdBaEFTQUFRYXFmQ1RZQ0FDQUJJQUFRRkVIVEJEWUNBRUdFOUJJb0FnQWhBU0FBUWJLZkNUWUNBQ0FCSUFBUUZFSFVCRFlDQUVHRTlCSW9BZ0FoQVNBQVFiZWZDVFlDQUNBQklBQVFGRUhZQkRZQ0FFR0U5QklvQWdBaEFTQUFRYjZmQ1RZQ0FDQUJJQUFRRkVIVkJEWUNBRUdFOUJJb0FnQWhBU0FBUWNpZkNUWUNBQ0FCSUFBUUZFR1dBallDQUVHRTlCSW9BZ0FoQVNBQVFjK2ZDVFlDQUNBQklBQVFGRUdYQWpZQ0FFR0U5QklvQWdBaEFTQUFRZGFmQ1RZQ0FDQUJJQUFRRkVHWUFqWUNBRUdFOUJJb0FnQWhBU0FBUWQyZkNUWUNBQ0FCSUFBUUZFR1pBallDQUVHRTlCSW9BZ0FoQVNBQVFlU2ZDVFlDQUNBQklBQVFGRUdhQWpZQ0FFR0U5QklvQWdBaEFTQUFRZXVmQ1RZQ0FDQUJJQUFRRkVHYkFqWUNBRUdFOUJJb0FnQWhBU0FBUWZLZkNUWUNBQ0FCSUFBUUZFR2NBallDQUVHRTlCSW9BZ0FoQVNBQVFmbWZDVFlDQUNBQklBQVFGRUdkQWpZQ0FFR0U5QklvQWdBaEFTQUFRWUNnQ1RZQ0FDQUJJQUFRRkVHZUFqWUNBRUdFOUJJb0FnQWhBU0FBUVllZ0NUWUNBQ0FCSUFBUUZFR0ZBallDQUVHRTlCSW9BZ0FoQVNBQVFZeWdDVFlDQUNBQklBQVFGRUdOQWpZQ0FFR0U5QklvQWdBaEFTQUFRWktnQ1RZQ0FDQUJJQUFRRkVHT0FqWUNBRUdFOUJJb0FnQWhBU0FBUVppZ0NUWUNBQ0FCSUFBUUZFR1BBallDQUVHRTlCSW9BZ0FoQVNBQVFaNmdDVFlDQUNBQklBQVFGRUdJQlRZQ0FFR0U5QklvQWdBaEFTQUFRYXlnQ1RZQ0FDQUJJQUFRRkVHQUJUWUNBRUdFOUJJb0FnQWhBU0FBUWJPZ0NUWUNBQ0FCSUFBUUZFRzhBallDQUVHRTlCSW9BZ0FoQVNBQVFiMmdDVFlDQUNBQklBQVFGRUc5QWpZQ0FFR0U5QklvQWdBaEFTQUFRY1dnQ1RZQ0FDQUJJQUFRRkVHVEJUWUNBRUdFOUJJb0FnQWhBU0FBUWRPZ0NUWUNBQ0FCSUFBUUZFR0pCVFlDQUVHRTlCSW9BZ0FoQVNBQVFkeWdDVFlDQUNBQklBQVFGRUdPQlRZQ0FFR0U5QklvQWdBaEFTQUFRZXVnQ1RZQ0FDQUJJQUFRRkVHUEJUWUNBRUdFOUJJb0FnQWhBU0FBUWYrZ0NUWUNBQ0FCSUFBUUZFR1FCVFlDQUVHRTlCSW9BZ0FoQVNBQVFaR2hDVFlDQUNBQklBQVFGRUdSQlRZQ0FFR0U5QklvQWdBaEFTQUFRYUtoQ1RZQ0FDQUJJQUFRRkVHU0JUWUNBRUdFOUJJb0FnQWhBU0FBUWEyaENUWUNBQ0FCSUFBUUZFR0xCVFlDQUVHRTlCSW9BZ0FoQVNBQVFiYWhDVFlDQUNBQklBQVFGRUdNQlRZQ0FFR0U5QklvQWdBaEFTQUFRYitoQ1RZQ0FDQUJJQUFRRkVHTkJUWUNBRUdFOUJJb0FnQWhBU0FBUWNtaENUWUNBQ0FCSUFBUUZFR2VBellDQUVHRTlCSW9BZ0FoQVNBQVFkV2hDVFlDQUNBQklBQVFGRUdLQlRZQ0FFR0U5QklvQWdBaEFTQUFRZDZoQ1RZQ0FDQUJJQUFRRkVHR0JUWUNBRUdFOUJJb0FnQWhBU0FBUWVTaENUWUNBQ0FCSUFBUUZFR0hCVFlDQUVHRTlCSW9BZ0FoQVNBQVFldWhDVFlDQUNBQklBQVFGRUgvQkRZQ0FFR0U5QklvQWdBaEFTQUFRZmFoQ1RZQ0FDQUJJQUFRRkVIbEFqWUNBRUdFOUJJb0FnQWhBU0FBUWZ5aENUWUNBQ0FCSUFBUUZFSG1BallDQUVHRTlCSW9BZ0FoQVNBQVFZS2lDVFlDQUNBQklBQVFGRUhuQWpZQ0FFR0U5QklvQWdBaEFTQUFRWWlpQ1RZQ0FDQUJJQUFRRkVINkFqWUNBRUdFOUJJb0FnQWhBU0FBUVpDaUNUWUNBQ0FCSUFBUUZFSDdBallDQUVHRTlCSW9BZ0FoQVNBQVFaaWlDVFlDQUNBQklBQVFGRUg4QWpZQ0FFR0U5QklvQWdBaEFTQUFRYUNpQ1RZQ0FDQUJJQUFRRkVIOUFqWUNBRUdFOUJJb0FnQWhBU0FBUWFpaUNUWUNBQ0FCSUFBUUZFSCtBallDQUVHRTlCSW9BZ0FoQVNBQVFiQ2lDVFlDQUNBQklBQVFGRUgvQWpZQ0FFR0U5QklvQWdBaEFTQUFRYmlpQ1RZQ0FDQUJJQUFRRkVHQUF6WUNBRUdFOUJJb0FnQWhBU0FBUWNDaUNUWUNBQ0FCSUFBUUZFR0JBellDQUVHRTlCSW9BZ0FoQVNBQVFjaWlDVFlDQUNBQklBQVFGRUdDQXpZQ0FFR0U5QklvQWdBaEFTQUFRZENpQ1RZQ0FDQUJJQUFRRkVIUUF6WUNBRUdFOUJJb0FnQWhBU0FBUWRpaUNUWUNBQ0FCSUFBUUZFSFJBellDQUVHRTlCSW9BZ0FoQVNBQVFlR2lDVFlDQUNBQklBQVFGRUhTQXpZQ0FFR0U5QklvQWdBaEFTQUFRZXFpQ1RZQ0FDQUJJQUFRRkVIVEF6WUNBRUdFOUJJb0FnQWhBU0FBUWZLaUNUWUNBQ0FCSUFBUUZFSFVBellDQUVHRTlCSW9BZ0FoQVNBQVFmdWlDVFlDQUNBQklBQVFGRUhWQXpZQ0FFR0U5QklvQWdBaEFTQUFRWVNqQ1RZQ0FDQUJJQUFRRkVIV0F6WUNBRUdFOUJJb0FnQWhBU0FBUVl5akNUWUNBQ0FCSUFBUUZFSFhBellDQUVHRTlCSW9BZ0FoQVNBQVFaV2pDVFlDQUNBQklBQVFGRUhZQXpZQ0FFR0U5QklvQWdBaEFTQUFRWjZqQ1RZQ0FDQUJJQUFRRkVIWkF6WUNBRUdFOUJJb0FnQWhBU0FBUWFxakNUWUNBQ0FCSUFBUUZFSGFBellDQUVHRTlCSW9BZ0FoQVNBQVFiZWpDVFlDQUNBQklBQVFGRUhiQXpZQ0FFR0U5QklvQWdBaEFTQUFRY1NqQ1RZQ0FDQUJJQUFRRkVIY0F6WUNBRUdFOUJJb0FnQWhBU0FBUWM2akNUWUNBQ0FCSUFBUUZFSGRBellDQUVHRTlCSW9BZ0FoQVNBQVFkbWpDVFlDQUNBQklBQVFGRUhlQXpZQ0FFR0U5QklvQWdBaEFTQUFRZVNqQ1RZQ0FDQUJJQUFRRkVIZkF6WUNBRUdFOUJJb0FnQWhBU0FBUWZDakNUWUNBQ0FCSUFBUUZFSGdBellDQUVHRTlCSW9BZ0FoQVNBQVFmMmpDVFlDQUNBQklBQVFGRUhoQXpZQ0FFR0U5QklvQWdBaEFTQUFRWXFrQ1RZQ0FDQUJJQUFRRkVIaUF6WUNBRUdFOUJJb0FnQWhBU0FBUVpla0NUWUNBQ0FCSUFBUUZFSGpBellDQUVHRTlCSW9BZ0FoQVNBQVFhV2tDVFlDQUNBQklBQVFGRUhrQXpZQ0FFR0U5QklvQWdBaEFTQUFRYk9rQ1RZQ0FDQUJJQUFRRkVIbEF6WUNBRUdFOUJJb0FnQWhBU0FBUWNDa0NUWUNBQ0FCSUFBUUZFSG1BellDQUVHRTlCSW9BZ0FoQVNBQVFjNmtDVFlDQUNBQklBQVFGRUhuQXpZQ0FFR0U5QklvQWdBaEFTQUFRZHlrQ1RZQ0FDQUJJQUFRRkVIb0F6WUNBRUdFOUJJb0FnQWhBU0FBUWV1a0NUWUNBQ0FCSUFBUUZFSHBBellDQUVHRTlCSW9BZ0FoQVNBQVFmdWtDVFlDQUNBQklBQVFGRUhxQXpZQ0FFR0U5QklvQWdBaEFTQUFRWXVsQ1RZQ0FDQUJJQUFRRkVIckF6WUNBRUdFOUJJb0FnQWhBU0FBUVpXbENUWUNBQ0FCSUFBUUZFSHNBellDQUVHRTlCSW9BZ0FoQVNBQVFhQ2xDVFlDQUNBQklBQVFGRUh0QXpZQ0FFR0U5QklvQWdBaEFTQUFRYXVsQ1RZQ0FDQUJJQUFRRkVIdUF6WUNBRUdFOUJJb0FnQWhBU0FBUWJxbENUWUNBQ0FCSUFBUUZFSHZBellDQUVHRTlCSW9BZ0FoQVNBQVFjcWxDVFlDQUNBQklBQVFGRUh3QXpZQ0FFR0U5QklvQWdBaEFTQUFRZHFsQ1RZQ0FDQUJJQUFRRkVIQUFqWUNBRUdFOUJJb0FnQWhBU0FBUWVHbENUWUNBQ0FCSUFBUUZFSGlBallDQUVHRTlCSW9BZ0FoQVNBQVFlZWxDVFlDQUNBQklBQVFGRUhqQWpZQ0FFR0U5QklvQWdBaEFTQUFRZTJsQ1RZQ0FDQUJJQUFRRkVIa0FqWUNBRUdFOUJJb0FnQWhBU0FBUWZPbENUWUNBQ0FCSUFBUUZFSENBallDQUVHRTlCSW9BZ0FoQVNBQVFmdWxDVFlDQUNBQklBQVFGRUhEQWpZQ0FFR0U5QklvQWdBaEFTQUFRWVNtQ1RZQ0FDQUJJQUFRRkVIS0FqWUNBRUdFOUJJb0FnQWhBU0FBUVl5bUNUWUNBQ0FCSUFBUUZFSExBallDQUVHRTlCSW9BZ0FoQVNBQVFaU21DVFlDQUNBQklBQVFGRUhNQWpZQ0FFR0U5QklvQWdBaEFTQUFRWnltQ1RZQ0FDQUJJQUFRRkVITkFqWUNBRUdFOUJJb0FnQWhBU0FBUWFTbUNUWUNBQ0FCSUFBUUZFSE9BallDQUVHRTlCSW9BZ0FoQVNBQVFheW1DVFlDQUNBQklBQVFGRUhQQWpZQ0FFR0U5QklvQWdBaEFTQUFRYlNtQ1RZQ0FDQUJJQUFRRkVISUFqWUNBRUdFOUJJb0FnQWhBU0FBUWJ1bUNUWUNBQ0FCSUFBUUZFSGNBallDQUVHRTlCSW9BZ0FoQVNBQVFjS21DVFlDQUNBQklBQVFGRUhkQWpZQ0FFR0U5QklvQWdBaEFTQUFRY21tQ1RZQ0FDQUJJQUFRRkVIZUFqWUNBRUdFOUJJb0FnQWhBU0FBUWRDbUNUWUNBQ0FCSUFBUUZFSEpBallDQUVHRTlCSW9BZ0FoQVNBQVFkaW1DVFlDQUNBQklBQVFGRUhmQWpZQ0FFR0U5QklvQWdBaEFTQUFRZCttQ1RZQ0FDQUJJQUFRRkVIZ0FqWUNBRUdFOUJJb0FnQWhBU0FBUWVhbUNUWUNBQ0FCSUFBUUZFSGhBallDQUVHRTlCSW9BZ0FoQVNBQVFlMm1DVFlDQUNBQklBQVFGRUhHQWpZQ0FFR0U5QklvQWdBaEFTQUFRZldtQ1RZQ0FDQUJJQUFRRkVIV0FqWUNBRUdFOUJJb0FnQWhBU0FBUWYybUNUWUNBQ0FCSUFBUUZFSFhBallDQUVHRTlCSW9BZ0FoQVNBQVFZV25DVFlDQUNBQklBQVFGRUhZQWpZQ0FFR0U5QklvQWdBaEFTQUFRWTJuQ1RZQ0FDQUJJQUFRRkVISEFqWUNBRUdFOUJJb0FnQWhBU0FBUVphbkNUWUNBQ0FCSUFBUUZFSFpBallDQUVHRTlCSW9BZ0FoQVNBQVFaNm5DVFlDQUNBQklBQVFGRUhhQWpZQ0FFR0U5QklvQWdBaEFTQUFRYWFuQ1RZQ0FDQUJJQUFRRkVIYkFqWUNBRUdFOUJJb0FnQWhBU0FBUWE2bkNUWUNBQ0FCSUFBUUZFSEVBallDQUVHRTlCSW9BZ0FoQVNBQVFiYW5DVFlDQUNBQklBQVFGRUhRQWpZQ0FFR0U5QklvQWdBaEFTQUFRYjZuQ1RZQ0FDQUJJQUFRRkVIUkFqWUNBRUdFOUJJb0FnQWhBU0FBUWNhbkNUWUNBQ0FCSUFBUUZFSFNBallDQUVHRTlCSW9BZ0FoQVNBQVFjNm5DVFlDQUNBQklBQVFGRUhGQWpZQ0FFR0U5QklvQWdBaEFTQUFRZGVuQ1RZQ0FDQUJJQUFRRkVIVEFqWUNBRUdFOUJJb0FnQWhBU0FBUWQrbkNUWUNBQ0FCSUFBUUZFSFVBallDQUVHRTlCSW9BZ0FoQVNBQVFlZW5DVFlDQUNBQklBQVFGRUhWQWpZQ0FFR0U5QklvQWdBaEFTQUFRZStuQ1RZQ0FDQUJJQUFRRkVHK0FqWUNBRUdFOUJJb0FnQWhBU0FBUWZtbkNUWUNBQ0FCSUFBUUZFSG9BallDQUVHRTlCSW9BZ0FoQVNBQVFZR29DVFlDQUNBQklBQVFGRUhwQWpZQ0FFR0U5QklvQWdBaEFTQUFRWW1vQ1RZQ0FDQUJJQUFRRkVIcUFqWUNBRUdFOUJJb0FnQWhBU0FBUVpHb0NUWUNBQ0FCSUFBUUZFSHJBallDQUVHRTlCSW9BZ0FoQVNBQVFabW9DVFlDQUNBQklBQVFGRUhzQWpZQ0FFR0U5QklvQWdBaEFTQUFRYUdvQ1RZQ0FDQUJJQUFRRkVIdEFqWUNBRUdFOUJJb0FnQWhBU0FBUWFtb0NUWUNBQ0FCSUFBUUZFR0RBellDQUVHRTlCSW9BZ0FoQVNBQVFiT29DVFlDQUNBQklBQVFGRUdFQXpZQ0FFR0U5QklvQWdBaEFTQUFRYjJvQ1RZQ0FDQUJJQUFRRkVHRkF6WUNBRUdFOUJJb0FnQWhBU0FBUWNlb0NUWUNBQ0FCSUFBUUZFR0dBellDQUVHRTlCSW9BZ0FoQVNBQVFkR29DVFlDQUNBQklBQVFGRUdIQXpZQ0FFR0U5QklvQWdBaEFTQUFRZHVvQ1RZQ0FDQUJJQUFRRkVHSUF6WUNBRUdFOUJJb0FnQWhBU0FBUWVXb0NUWUNBQ0FCSUFBUUZFR0pBellDQUVHRTlCSW9BZ0FoQVNBQVFlK29DVFlDQUNBQklBQVFGRUdLQXpZQ0FFR0U5QklvQWdBaEFTQUFRZm1vQ1RZQ0FDQUJJQUFRRkVHTEF6WUNBRUdFOUJJb0FnQWhBU0FBUVlPcENUWUNBQ0FCSUFBUUZFRy9BallDQUVHRTlCSW9BZ0FoQVNBQVFZMnBDVFlDQUNBQklBQVFGRUh1QWpZQ0FFR0U5QklvQWdBaEFTQUFRWldwQ1RZQ0FDQUJJQUFRRkVIdkFqWUNBRUdFOUJJb0FnQWhBU0FBUVoycENUWUNBQ0FCSUFBUUZFSHdBallDQUVHRTlCSW9BZ0FoQVNBQVFhV3BDVFlDQUNBQklBQVFGRUh4QWpZQ0FFR0U5QklvQWdBaEFTQUFRYTJwQ1RZQ0FDQUJJQUFRRkVIeUFqWUNBRUdFOUJJb0FnQWhBU0FBUWJXcENUWUNBQ0FCSUFBUUZFSHpBallDQUVHRTlCSW9BZ0FoQVNBQVFiMnBDVFlDQUNBQklBQVFGRUdNQXpZQ0FFR0U5QklvQWdBaEFTQUFRY2VwQ1RZQ0FDQUJJQUFRRkVHTkF6WUNBRUdFOUJJb0FnQWhBU0FBUWRHcENUWUNBQ0FCSUFBUUZFR09BellDQUVHRTlCSW9BZ0FoQVNBQVFkdXBDVFlDQUNBQklBQVFGRUdQQXpZQ0FFR0U5QklvQWdBaEFTQUFRZVdwQ1RZQ0FDQUJJQUFRRkVHUUF6WUNBRUdFOUJJb0FnQWhBU0FBUWUrcENUWUNBQ0FCSUFBUUZFR1JBellDQUVHRTlCSW9BZ0FoQVNBQVFmbXBDVFlDQUNBQklBQVFGRUdTQXpZQ0FFR0U5QklvQWdBaEFTQUFRWU9xQ1RZQ0FDQUJJQUFRRkVHVEF6WUNBRUdFOUJJb0FnQWhBU0FBUVkycUNUWUNBQ0FCSUFBUUZFR1VBellDQUVHRTlCSW9BZ0FoQVNBQVFaZXFDVFlDQUNBQklBQVFGRUhCQWpZQ0FFR0U5QklvQWdBaEFTQUFRYUdxQ1RZQ0FDQUJJQUFRRkVIMEFqWUNBRUdFOUJJb0FnQWhBU0FBUWFtcUNUWUNBQ0FCSUFBUUZFSDFBallDQUVHRTlCSW9BZ0FoQVNBQVFiR3FDVFlDQUNBQklBQVFGRUgyQWpZQ0FFR0U5QklvQWdBaEFTQUFRYm1xQ1RZQ0FDQUJJQUFRRkVIM0FqWUNBRUdFOUJJb0FnQWhBU0FBUWNHcUNUWUNBQ0FCSUFBUUZFSDRBallDQUVHRTlCSW9BZ0FoQVNBQVFjbXFDVFlDQUNBQklBQVFGRUg1QWpZQ0FFR0U5QklvQWdBaEFTQUFRZEdxQ1RZQ0FDQUJJQUFRRkVHVkF6WUNBRUdFOUJJb0FnQWhBU0FBUWR1cUNUWUNBQ0FCSUFBUUZFR1dBellDQUVHRTlCSW9BZ0FoQVNBQVFlV3FDVFlDQUNBQklBQVFGRUdYQXpZQ0FFR0U5QklvQWdBaEFTQUFRZStxQ1RZQ0FDQUJJQUFRRkVHWUF6WUNBRUdFOUJJb0FnQWhBU0FBUWZtcUNUWUNBQ0FCSUFBUUZFR1pBellDQUVHRTlCSW9BZ0FoQVNBQVFZT3JDVFlDQUNBQklBQVFGRUdhQXpZQ0FFR0U5QklvQWdBaEFTQUFRWTJyQ1RZQ0FDQUJJQUFRRkVHYkF6WUNBRUdFOUJJb0FnQWhBU0FBUVplckNUWUNBQ0FCSUFBUUZFR2NBellDQUVHRTlCSW9BZ0FoQVNBQVFhR3JDVFlDQUNBQklBQVFGRUdkQXpZQ0FFR0U5QklvQWdBaEFTQUFRYXVyQ1RZQ0FDQUJJQUFRRkVHZkFqWUNBRUdFOUJJb0FnQWhBU0FBUWJXckNUWUNBQ0FCSUFBUUZFR2hBallDQUVHRTlCSW9BZ0FoQVNBQVFjR3JDVFlDQUNBQklBQVFGRUdqQWpZQ0FFR0U5QklvQWdBaEFTQUFRZE9yQ1RZQ0FDQUJJQUFRRkVHa0FqWUNBRUdFOUJJb0FnQWhBU0FBUWVLckNUWUNBQ0FCSUFBUUZFR2xBallDQUVHRTlCSW9BZ0FoQVNBQVFmZXJDVFlDQUNBQklBQVFGRUdtQWpZQ0FFR0U5QklvQWdBaEFTQUFRWUtzQ1RZQ0FDQUJJQUFRRkVHbkFqWUNBRUdFOUJJb0FnQWhBU0FBUVkyc0NUWUNBQ0FCSUFBUUZFR29BallDQUVHRTlCSW9BZ0FoQVNBQVFacXNDVFlDQUNBQklBQVFGRUdwQWpZQ0FFR0U5QklvQWdBaEFTQUFRYXFzQ1RZQ0FDQUJJQUFRRkVHcUFqWUNBRUdFOUJJb0FnQWhBU0FBUWJXc0NUWUNBQ0FCSUFBUUZFR3JBallDQUVHRTlCSW9BZ0FoQVNBQVFjQ3NDVFlDQUNBQklBQVFGRUdzQWpZQ0FFR0U5QklvQWdBaEFTQUFRYzJzQ1RZQ0FDQUJJQUFRRkVHdEFqWUNBRUdFOUJJb0FnQWhBU0FBUWQyc0NUWUNBQ0FCSUFBUUZFR2dBallDQUVHRTlCSW9BZ0FoQVNBQVFlZXNDVFlDQUNBQklBQVFGRUdpQWpZQ0FFR0U5QklvQWdBaEFTQUFRZmVzQ1RZQ0FDQUJJQUFRRkVHd0FqWUNBRUdFOUJJb0FnQWhBU0FBUVlHdENUWUNBQ0FCSUFBUUZFR3lBallDQUVHRTlCSW9BZ0FoQVNBQVFZMnRDVFlDQUNBQklBQVFGRUd6QWpZQ0FFR0U5QklvQWdBaEFTQUFRWnl0Q1RZQ0FDQUJJQUFRRkVHMEFqWUNBRUdFOUJJb0FnQWhBU0FBUWFldENUWUNBQ0FCSUFBUUZFRzFBallDQUVHRTlCSW9BZ0FoQVNBQVFiS3RDVFlDQUNBQklBQVFGRUcyQWpZQ0FFR0U5QklvQWdBaEFTQUFRYit0Q1RZQ0FDQUJJQUFRRkVHM0FqWUNBRUdFOUJJb0FnQWhBU0FBUWMrdENUWUNBQ0FCSUFBUUZFRzRBallDQUVHRTlCSW9BZ0FoQVNBQVFkcXRDVFlDQUNBQklBQVFGRUc1QWpZQ0FFR0U5QklvQWdBaEFTQUFRZVd0Q1RZQ0FDQUJJQUFRRkVHNkFqWUNBRUdFOUJJb0FnQWhBU0FBUWZLdENUWUNBQ0FCSUFBUUZFRzdBallDQUVHRTlCSW9BZ0FoQVNBQVFZS3VDVFlDQUNBQklBQVFGRUd4QWpZQ0FFR0U5QklvQWdBaEFTQUFRWXl1Q1RZQ0FDQUJJQUFRRkVHdUFqWUNBRUdFOUJJb0FnQWhBU0FBUVpTdUNUWUNBQ0FCSUFBUUZFR3ZBallDQUVHRTlCSW9BZ0FoQVNBQVFhS3VDVFlDQUNBQklBQVFGRUg4QXpZQ0FFR0U5QklvQWdBaEFTQUFRYk91Q1RZQ0FDQUJJQUFRRkVIOUF6WUNBRUdFOUJJb0FnQWhBU0FBUWNXdUNUWUNBQ0FCSUFBUUZFSCtBellDQUVHRTlCSW9BZ0FoQVNBQVFkZXVDVFlDQUNBQklBQVFGRUdqQXpZQ0FFR0U5QklvQWdBaEFTQUFRZWl1Q1RZQ0FDQUJJQUFRRkVHa0F6WUNBRUdFOUJJb0FnQWhBU0FBUWYrdUNUWUNBQ0FCSUFBUUZFR2xBellDQUVHRTlCSW9BZ0FoQVNBQVFaR3ZDVFlDQUNBQklBQVFGRUdtQXpZQ0FFR0U5QklvQWdBaEFTQUFRYU92Q1RZQ0FDQUJJQUFRRkVHcEF6WUNBRUdFOUJJb0FnQWhBU0FBUWJpdkNUWUNBQ0FCSUFBUUZFRzdBellDQUVHRTlCSW9BZ0FoQVNBQVFjaXZDVFlDQUNBQklBQVFGRUc4QXpZQ0FFR0U5QklvQWdBaEFTQUFRZE92Q1RZQ0FDQUJJQUFRRkVHcUF6WUNBRUdFOUJJb0FnQWhBU0FBUWQ2dkNUWUNBQ0FCSUFBUUZFRzlBellDQUVHRTlCSW9BZ0FoQVNBQVFlNnZDVFlDQUNBQklBQVFGRUd3QXpZQ0FFR0U5QklvQWdBaEFTQUFRZnl2Q1RZQ0FDQUJJQUFRRkVHdUF6WUNBRUdFOUJJb0FnQWhBU0FBUVl1d0NUWUNBQ0FCSUFBUUZFR3ZBellDQUVHRTlCSW9BZ0FoQVNBQVFacXdDVFlDQUNBQklBQVFGRUd4QXpZQ0FFR0U5QklvQWdBaEFTQUFRYW13Q1RZQ0FDQUJJQUFRRkVHeUF6WUNBRUdFOUJJb0FnQWhBU0FBUWJpd0NUWUNBQ0FCSUFBUUZFR3pBellDQUVHRTlCSW9BZ0FoQVNBQVFjU3dDVFlDQUNBQklBQVFGRUcwQXpZQ0FFR0U5QklvQWdBaEFTQUFRZEd3Q1RZQ0FDQUJJQUFRRkVHMUF6WUNBRUdFOUJJb0FnQWhBU0FBUWQ2d0NUWUNBQ0FCSUFBUUZFRzJBellDQUVHRTlCSW9BZ0FoQVNBQVFlK3dDVFlDQUNBQklBQVFGRUczQXpZQ0FFR0U5QklvQWdBaEFTQUFRWUd4Q1RZQ0FDQUJJQUFRRkVHNEF6WUNBRUdFOUJJb0FnQWhBU0FBUVpPeENUWUNBQ0FCSUFBUUZFR25BellDQUVHRTlCSW9BZ0FoQVNBQVFaMnhDVFlDQUNBQklBQVFGRUdyQXpZQ0FFR0U5QklvQWdBaEFTQUFRYTJ4Q1RZQ0FDQUJJQUFRRkVHc0F6WUNBRUdFOUJJb0FnQWhBU0FBUWJ1eENUWUNBQ0FCSUFBUUZFR3RBellDQUVHRTlCSW9BZ0FoQVNBQVFjK3hDVFlDQUNBQklBQVFGRUdvQXpZQ0FFR0U5QklvQWdBaEFTQUFRZDZ4Q1RZQ0FDQUJJQUFRRkVHNUF6WUNBRUdFOUJJb0FnQWhBU0FBUWZHeENUWUNBQ0FCSUFBUUZFRzZBellDQUVHRTlCSW9BZ0FoQVNBQVFZdXlDVFlDQUNBQklBQVFGRUdEQkRZQ0FFR0U5QklvQWdBaEFTQUFRWnV5Q1RZQ0FDQUJJQUFRRkVHQkJEWUNBRUdFOUJJb0FnQWhBU0FBUWFheUNUWUNBQ0FCSUFBUUZFR0FCRFlDQUVHRTlCSW9BZ0FoQVNBQVFiR3lDVFlDQUNBQklBQVFGRUdFQkRZQ0FFR0U5QklvQWdBaEFTQUFRY0d5Q1RZQ0FDQUJJQUFRRkVHSUJEWUNBRUdFOUJJb0FnQWhBU0FBUWMreUNUWUNBQ0FCSUFBUUZFR0dCRFlDQUVHRTlCSW9BZ0FoQVNBQVFkNnlDVFlDQUNBQklBQVFGRUdIQkRZQ0FFR0U5QklvQWdBaEFTQUFRZTJ5Q1RZQ0FDQUJJQUFRRkVHSkJEWUNBRUdFOUJJb0FnQWhBU0FBUWZ5eUNUWUNBQ0FCSUFBUUZFR0tCRFlDQUVHRTlCSW9BZ0FoQVNBQVFZdXpDVFlDQUNBQklBQVFGRUdMQkRZQ0FFR0U5QklvQWdBaEFTQUFRWmV6Q1RZQ0FDQUJJQUFRRkVHTUJEWUNBRUdFOUJJb0FnQWhBU0FBUWFTekNUWUNBQ0FCSUFBUUZFR05CRFlDQUVHRTlCSW9BZ0FoQVNBQVFiR3pDVFlDQUNBQklBQVFGRUdPQkRZQ0FFR0U5QklvQWdBaEFTQUFRY0t6Q1RZQ0FDQUJJQUFRRkVHUEJEWUNBRUdFOUJJb0FnQWhBU0FBUWRTekNUWUNBQ0FCSUFBUUZFR1FCRFlDQUVHRTlCSW9BZ0FoQVNBQVFlYXpDVFlDQUNBQklBQVFGRUgvQXpZQ0FFR0U5QklvQWdBaEFTQUFRZkN6Q1RZQ0FDQUJJQUFRRkVHRkJEWUNBRUdFOUJJb0FnQWhBU0FBUWY2ekNUWUNBQ0FCSUFBUUZFR0NCRFlDQUVHRTlCSW9BZ0FoQVNBQVFZMjBDVFlDQUNBQklBQVFGRUdjQkRZQ0FFR0U5QklvQWdBaEFTQUFRWnEwQ1RZQ0FDQUJJQUFRRkVHZEJEWUNBRUdFOUJJb0FnQWhBU0FBUWFtMENUWUNBQ0FCSUFBUUZFR2VCRFlDQUVHRTlCSW9BZ0FoQVNBQVFiZTBDVFlDQUNBQklBQVFGRUdmQkRZQ0FFR0U5QklvQWdBaEFTQUFRY2UwQ1RZQ0FDQUJJQUFRRkVHZ0JEWUNBRUdFOUJJb0FnQWhBU0FBUWRXMENUWUNBQ0FCSUFBUUZFR2hCRFlDQUVHRTlCSW9BZ0FoQVNBQVFlVzBDVFlDQUNBQklBQVFGRUcrQXpZQ0FFR0U5QklvQWdBaEFTQUFRZkswQ1RZQ0FDQUJJQUFRRkVHL0F6WUNBRUdFOUJJb0FnQWhBU0FBUWYrMENUWUNBQ0FCSUFBUUZFSEFBellDQUVHRTlCSW9BZ0FoQVNBQVFZeTFDVFlDQUNBQklBQVFGRUhCQXpZQ0FFR0U5QklvQWdBaEFTQUFRWjIxQ1RZQ0FDQUJJQUFRRkVIQ0F6WUNBRUdFOUJJb0FnQWhBU0FBUWF5MUNUWUNBQ0FCSUFBUUZFSERBellDQUVHRTlCSW9BZ0FoQVNBQVFiNjFDVFlDQUNBQklBQVFGRUhFQXpZQ0FFR0U5QklvQWdBaEFTQUFRZEMxQ1RZQ0FDQUJJQUFRRkVIRkF6WUNBRUdFOUJJb0FnQWhBU0FBUWVTMUNUWUNBQ0FCSUFBUUZFSEdBellDQUVHRTlCSW9BZ0FoQVNBQVFmVzFDVFlDQUNBQklBQVFGRUhIQXpZQ0FFR0U5QklvQWdBaEFTQUFRWVMyQ1RZQ0FDQUJJQUFRRkVISUF6WUNBRUdFOUJJb0FnQWhBU0FBUVppMkNUWUNBQ0FCSUFBUUZFSEpBellDQUVHRTlCSW9BZ0FoQVNBQVFhdTJDVFlDQUNBQklBQVFGRUhLQXpZQ0FFR0U5QklvQWdBaEFTQUFRYjYyQ1RZQ0FDQUJJQUFRRkVITkF6WUNBRUdFOUJJb0FnQWhBU0FBUWRXMkNUWUNBQ0FCSUFBUUZFSE9BellDQUVHRTlCSW9BZ0FoQVNBQVFlcTJDVFlDQUNBQklBQVFGRUhMQXpZQ0FFR0U5QklvQWdBaEFTQUFRWUszQ1RZQ0FDQUJJQUFRRkVITUF6WUNBRUdFOUJJb0FnQWhBU0FBUVpxM0NUWUNBQ0FCSUFBUUZFSFBBellDQUVHRTlCSW9BZ0FoQVNBQVFiUzNDVFlDQUNBQklBQVFGRUh4QXpZQ0FFR0U5QklvQWdBaEFTQUFRYiszQ1RZQ0FDQUJJQUFRRkVIeUF6WUNBRUdFOUJJb0FnQWhBU0FBUWNxM0NUWUNBQ0FCSUFBUUZFSHpBellDQUVHRTlCSW9BZ0FoQVNBQVFkVzNDVFlDQUNBQklBQVFGRUgwQXpZQ0FFR0U5QklvQWdBaEFTQUFRZVMzQ1RZQ0FDQUJJQUFRRkVIMUF6WUNBRUdFOUJJb0FnQWhBU0FBUWZHM0NUWUNBQ0FCSUFBUUZFSDJBellDQUVHRTlCSW9BZ0FoQVNBQVFZRzRDVFlDQUNBQklBQVFGRUgzQXpZQ0FFR0U5QklvQWdBaEFTQUFRWkc0Q1RZQ0FDQUJJQUFRRkVINEF6WUNBRUdFOUJJb0FnQWhBU0FBUWFPNENUWUNBQ0FCSUFBUUZFSDVBellDQUVHRTlCSW9BZ0FoQVNBQVFiSzRDVFlDQUNBQklBQVFGRUg2QXpZQ0FFR0U5QklvQWdBaEFTQUFRYis0Q1RZQ0FDQUJJQUFRRkVIN0F6WUNBRUdFOUJJb0FnQWhBU0FBUWRHNENUWUNBQ0FCSUFBUUZFR1JCRFlDQUVHRTlCSW9BZ0FoQVNBQVFkNjRDVFlDQUNBQklBQVFGRUdTQkRZQ0FFR0U5QklvQWdBaEFTQUFRZXU0Q1RZQ0FDQUJJQUFRRkVHVEJEWUNBRUdFOUJJb0FnQWhBU0FBUWZpNENUWUNBQ0FCSUFBUUZFR1VCRFlDQUVHRTlCSW9BZ0FoQVNBQVFZbTVDVFlDQUNBQklBQVFGRUdWQkRZQ0FFR0U5QklvQWdBaEFTQUFRWmk1Q1RZQ0FDQUJJQUFRRkVHV0JEWUNBRUdFOUJJb0FnQWhBU0FBUWFxNUNUWUNBQ0FCSUFBUUZFR1hCRFlDQUVHRTlCSW9BZ0FoQVNBQVFieTVDVFlDQUNBQklBQVFGRUdZQkRZQ0FFR0U5QklvQWdBaEFTQUFRZEM1Q1RZQ0FDQUJJQUFRRkVHWkJEWUNBRUdFOUJJb0FnQWhBU0FBUWVHNUNUWUNBQ0FCSUFBUUZFR2FCRFlDQUVHRTlCSW9BZ0FoQVNBQVFmQzVDVFlDQUNBQklBQVFGRUdiQkRZQ0FFR0U5QklvQWdBaEFTQUFRWVM2Q1RZQ0FDQUJJQUFRRkVHaUJEWUNBRUdFOUJJb0FnQWhBU0FBUVpTNkNUWUNBQ0FCSUFBUUZFR2pCRFlDQUVHRTlCSW9BZ0FoQVNBQVFhYTZDVFlDQUNBQklBQVFGRUdVQlRZQ0FFR0U5QklvQWdBaEFTQUFRYnE2Q1RZQ0FDQUJJQUFRRkVHVkJUWUNBRUdFOUJJb0FnQWhBU0FBUWNhNkNUWUNBQ0FCSUFBUUZFR1pCVFlDQUVHRTlCSW9BZ0FoQVNBQVFjNjZDVFlDQUNBQklBQVFGRUdCQlRZQ0FFR0U5QklvQWdBaEFTQUFRZHU2Q1RZQ0FDQUJJQUFRRkVHQ0JUWUNBRUdFOUJJb0FnQWhBU0FBUWVxNkNUWUNBQ0FCSUFBUUZFR0RCVFlDQUVHRTlCSW9BZ0FoQVNBQVFmbTZDVFlDQUNBQklBQVFGRUdFQlRZQ0FFR0U5QklvQWdBaEFTQUFRWWk3Q1RZQ0FDQUJJQUFRRkVHRkJUWUNBRUdFOUJJb0FnQWhBU0FBUVptN0NUWUNBQ0FCSUFBUUZFR2ZBellDQUVHRTlCSW9BZ0FoQVNBQVFiRzdDVFlDQUNBQklBQVFGRUdXQlRZQ0FFR0U5QklvQWdBaEFTQUFRY0M3Q1RZQ0FDQUJJQUFRRkVHWEJUWUNBRUdFOUJJb0FnQWhBU0FBUWNxN0NUWUNBQ0FCSUFBUUZFR1lCVFlDQUVHRTlCSW9BZ0FoQVNBQVFkRzdDVFlDQUNBQklBQVFGRUdnQXpZQ0FFR0U5QklvQWdBaEFTQUFRZHk3Q1RZQ0FDQUJJQUFRRkVHaEF6WUNBRUdFOUJJb0FnQWhBU0FBUWVlN0NUWUNBQ0FCSUFBUUZFR2lBellDQUVFVUVDWWlBUkNXQVNFQ1FZajBFaUFCTmdJQUlBQkI4cnNKTmdJTUlBQWdBaUFBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCK2JzSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQmc3d0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJpcndKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCanJ3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQmxMd0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJtcndKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCbjd3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQnA3d0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJzTHdKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCdGJ3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQnVyd0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJ3YndKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCeXJ3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQjBid0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkIyTHdKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCMzd3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQjZMd0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkI4cndKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCOTd3Sk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQi9id0pOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJncjBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCaUwwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQmtiMEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJsNzBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCbnIwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQnBMMEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJxcjBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCc0wwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQnRyMEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkJ2TDBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCd3IwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQjBMMEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkIxNzBKTmdJTUlBQWdBU0FBUVF4cUVJQUJRWWowRWlnQ0FDRUJJQUJCM3IwSk5nSU1JQUFnQVNBQVFReHFFSUFCUVlqMEVpZ0NBQ0VCSUFCQjQ3MEpOZ0lNSUFBZ0FTQUFRUXhxRUlBQlFZajBFaWdDQUNFQklBQkI3YjBKTmdJTUlBQWdBU0FBUVF4cUVJQUJDeUFBUVJCcUpBQUwxeVFCQTM4akFFRVFheUlESkFBZ0EwR0k5QklvQWdBZ0FFRWthaUlDRUowUU5nSUFJQU5CaVBRU0tBSUFFSndRTmdJSUFrQWdBeUFEUVFocUVCNEVRQ0FBRU5rQkRBRUxJQU5CaFBRU0tBSUFJQUlRbXhBMkFnZ2dBMEdFOUJJb0FnQVFtaEEyQWdBQ1FDQURRUWhxSUFNUXVBTU5BQ0FBSUFOQkNHb1FSQ2dDQkNJQk5nSW9Ba0FDUUFKQUFrQWdBVUgrZldvaUFrR1hBMHNOQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FrRUJhdzZYQXdNREt3TURBd01EQXdNckt5c0RBd01EQXdNWkdSa1pHUmtaR1JrRExBTXRLeXNyS3lzckt5c3JLeXN1TGk0dUxpNHVMaTR1TGk0dUxnNE9KeVVnSmlFaEpDUWpJeUlpSVNFaElTRWhKQ1FrSkNRa0l5TWpJeU1qSWlJaUlpSWlJQ0FnR2hvYUp5Y25LQ2dvSlNVbEpTVWxKaVltSmlZbUdob2FHaG9hR2hvYUtDZ29LQ2dvS0Nnb0pTVWxKU1VsSlNVbEppWW1KaVltSmlZbUVBOUJRa0lwS1NrcE5UY3ZMelUyTmpBd01USXlNek16TkRRME9Ea3ZMeTg4UER3OFBEdzhQRHc4UER3OFBEdzhQRHdiR3hzZEhSMGRIUjBiR3hzZEhSMGNIQndiR3hzZEhSMGVIaDRmSHg4Zkh4ODhQRHc4UER3OFBEdzhQQ29xS2pvNk9qbzZPam82T2pvNk9qbzZPam82T2p3OFBEdzhQRHc4UER3OE96czdPenM3UER4RVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVRSUdCZ1lHQWtLQzBSRVJBUkVSQWRKU1VrQkEwbEpTVWxKU1VsSlNRSkpBa2tXQUFZRkYwUkVSRVJFUkVSRUZVTVBEdzhQRHhNVURSRVNFUkVSRVJFUkVSRU1QVDVBUUVBL1NRc2dBRUVCT2dBTElBQW9BZ1FRTXlFQ0lBQW9BZ1FoQVNBQ0JFQWdBU2dDRUVHMkFrZ05TQXNnQVJBekRVWWdBQ2dDQkNnQ0VFR3RBMHdOUnd4R0N5QUFRUUU2QUFsQjR3UWhBUXhIQ3lBQUtBSUVFRE1oQWlBQUtBSUVJUUVDUUNBQ0JFQWdBU2dDRUVHc0FrZ05BUXNnQVJBekRVVWdBQ2dDQkNnQ0VFR0JBVW9OUlFzZ0FCRFpBUXhFQ3lBQVFRRTZBQWdNUlFzZ0FDZ0NIQ2dDQUVHTG53a2dBQ2dDSkJCNlJUb0FFQ0FBS0FJb0lRRU1SQXNnQUNnQ0JCQXpJUUlnQUNnQ0JDRUJJQUlFUUNBQktBSVFRYXdDU0ExREN5QUJFRE1OUVNBQUtBSUVLQUlRUVlFQlRBMUNERUVMSUFBb0FnUVFNeUVDSUFBb0FnUWhBUUpBSUFKRkRRQWdBU2dDRUVHckFrb05BQ0FBRU5rQkRFRUxJQUVRTXcxQUlBQW9BZ1FvQWhCQmdRRk1EVUVNUUF0QjN3UWhBU0FBS0FJRUtBSVFRZmNBVEExQURFRUxJQUFvQWdRUU13MCtJQUFvQWdRb0FoQkI5d0JNRFQ4TVBnc2dBQ2dDQkJBeklRSWdBQ2dDQkNFQkFrQWdBZ1JBSUFFb0FoQkJyQUpJRFFFTElBRVFNdzAvSUFBb0FnUW9BaEJCeVFKS0RUOExJQUFRMlFFTU93c2dBQ2dDQkJBeklRSWdBQ2dDQkNFQklBQUNmeUFDQkVCQkFTQUJLQUlRUWFzQ1NnMEJHZ3RCQUNBQkVETU5BQm9nQUNnQ0JDZ0NFRUdqQTBvTEVJNEtJUUVNUGdzZ0FDQUFLQUlFRURNRWYwRUJCU0FBS0FJRUtBSVFRWUVCU2dzUWpnb2hBUXc5Q3lBQUtBSUVJZ0ZCdUw0SklBRW9BZ0FvQWlBUkF3QU5PaUFBUVlJQkVOVUNJUUVNUEFzZ0FDZ0NCQ0lCUWVHK0NTQUJLQUlBS0FJZ0VRTUFSUTA2RERrTElBQW9BZ1FRTTBVTk9DQUFLQUlFS0FJUVFhd0NTQTA0SUFBUTJRRU1PQXNnQUNnQ0JDZ0NUQkFrRFRjZ0FDZ0NCQ0lCUWYyK0NTQUJLQUlBS0FJZ0VRTUFSUTA0RERjTElBQW9BZ1FRTXlFQ0lBQW9BZ1FoQVNBQ0JFQWdBU2dDRUVHMUFrb05Od3NnQVVHUHZ3a2dBU2dDQUNnQ0lCRURBQTAySUFCQnBBTVExUUloQVF3NEN5QUFLQUlFRURNaEFpQUFLQUlFSVFFZ0FnUkFJQUVvQWhCQnRnSk9EVFlMSUFCQmdnRkJwQU1nQVVHdHZ3a2dBU2dDQUNnQ0lCRURBQnNRMVFJaEFRdzNDd0pBSUFBb0FnUVFNMFVFUUNBQUtBSUVJUUVNQVFzZ0FDZ0NCQ0lCS0FJUVFiWUNUZzAxQ3lBQktBSk1FQ1FOTkNBQUtBSUVFRE5GQkVBZ0FDZ0NCQ0lCS0FJUVFhTURTZzAxSUFGQnJiOEpJQUVvQWdBb0FpQVJBd0FOTlFzZ0FCRFpBUXcwQ3lBQUtBSUVLQUpNRUNRTk15QUFLQUlFRURNRVFDQUFLQUlFSWdFb0FoQkJ2d0pLRFRRZ0FVRUNRY3kvQ1NBQktBSUFLQUlrRVFjQURUUUxJQUFvQWdRUU0wVUVRQ0FBS0FJRUlnRkIxTDhKSUFFb0FnQW9BaUFSQXdBTk5Bc2dBRUdRQXhEVkFpRUJERFVMSUFBb0FnUVFNeUVDSUFBb0FnUWhBU0FDQkVBZ0FTZ0NFRUcvQWtvTk13c2dBVUVCUWZDL0NTQUJLQUlBS0FJa0VRY0FEVElnQUVHUUF4RFZBaUVCRERRTElBQkJrQU1RMVFJaEFRd3pDeUFBS0FJRUVETWhBaUFBS0FJRUlRRWdBZ1JBSUFFb0FoQkJyQUpJRFRJTElBRVFNdzB3SUFBb0FnUW9BaEJCaXdGTURURU1NQXNnQTBHNHdBa3BBd0EzQXdBZ0FDZ0NCQkF6SVFJZ0FDZ0NCQ0VCSUFJRVFDQUJLQUlRUWF3Q1NBMHhDeUFCRURNTkx5QUFLQUlFSWdFb0FoQkJpd0ZLRFM4Z0FVRUNJQU1nQVNnQ0FDZ0NKQkVIQUVVTk1Bd3ZDeUFBRUpnUUlRRU1NQXNnQUJDWEVDRUJEQzhMSUFBUWxoQWhBUXd1Q3lBQVFRRTZBQWdnQUVFQUVOSUhJUUVNTFFzZ0FFRUJPZ0FJSUFBb0FnUVFNeUVDSUFBb0FnUWhBU0FDQkVBZ0FTZ0NFRUcvQWtvTkt3c2dBVUVDUWNEQUNTQUJLQUlBS0FJa0VRY0FEU29nQUVFQUVOSUhJUUVNTEFzZ0FFRUJPZ0FJSUFCQkFSRFNCeUVCRENzTElBQkJBVG9BQ0NBQUtBSUVFRE1oQWlBQUtBSUVJUUVnQWdSQUlBRW9BaEJCdndKS0RTa0xJQUZCQWtISXdBa2dBU2dDQUNnQ0pCRUhBQTBvRENjTElBQkJBVG9BQ0F3bUN5QUFRUUU2QUFnQ1FDQUFLQUlFRURNTkFDQUFLQUlFSWdFb0FoQkJsZ0ZJRFFBZ0FTZ0NUQkFrRFNjZ0FDZ0NCQ0lCS0FJUVFZOERTZzBuSUFGQjBNQUpJQUVvQWdBb0FpQVJBd0FOSndzZ0FCRFpBUXdtQ3lBQVFRRTZBQWdnQUNnQ0JDZ0NUQkFrRFNVZ0FDZ0NCQ0lCUWVmQUNTQUJLQUlBS0FJZ0VRTUFEU1VnQUNnQ0JDSUJRZi9BQ1NBQktBSUFLQUlnRVFNQURTVWdBQ2dDQkNJQlFhZkJDU0FCS0FJQUtBSWdFUU1BUlEwbURDVUxJQUJCQVRvQUNDQUFLQUlFS0FKTUVDUU5KQ0FBS0FJRUlnRkIvOEFKSUFFb0FnQW9BaUFSQXdBTkpDQUFLQUlFSWdGQjFjRUpJQUVvQWdBb0FpQVJBd0FOSkNBQUtBSUVJZ0ZCOE1FSklBRW9BZ0FvQWlBUkF3QkZEU1VNSkFzZ0FFRUJPZ0FJSUFBb0FnUW9Ba3dRSkEwaklBQW9BZ1FpQVVHZHdna2dBU2dDQUNnQ0lCRURBQTBqSUFBb0FnUWlBVUcxd2drZ0FTZ0NBQ2dDSUJFREFBMGpJQUFvQWdRaUFVSC93QWtnQVNnQ0FDZ0NJQkVEQUEwaklBQW9BZ1FpQVVIUndna2dBU2dDQUNnQ0lCRURBRVVOSkF3akN5QUFRUUU2QUFnZ0FDZ0NCQ2dDVEJBa0RTSWdBQ2dDQkNJQlFmL0FDU0FCS0FJQUtBSWdFUU1BRFNJZ0FDZ0NCQ0lCUWYvQ0NTQUJLQUlBS0FJZ0VRTUFSUTBqRENJTElBQkJBVG9BQ0NBQUtBSUVLQUpNRUNRTklTQUFLQUlFSWdGQi84QUpJQUVvQWdBb0FpQVJBd0FOSVNBQUtBSUVJZ0ZCcmNNSklBRW9BZ0FvQWlBUkF3QkZEU0lNSVFzZ0FFRUJPZ0FJSUFBb0FnUW9Ba3dRSkEwZ0lBQW9BZ1FpQVVIL3dBa2dBU2dDQUNnQ0lCRURBQTBnSUFBb0FnUWlBVUhkd3drZ0FTZ0NBQ2dDSUJFREFFVU5JUXdnQ3lBQVFRRTZBQWdnQUNnQ0JDZ0NUQkFrRFI4Z0FDZ0NCQ0lCUVkzRUNTQUJLQUlBS0FJZ0VRTUFEUjhnQUNnQ0JDSUJRYlhDQ1NBQktBSUFLQUlnRVFNQURSOGdBQ2dDQkNJQlFmL0FDU0FCS0FJQUtBSWdFUU1BRFI4Z0FDZ0NCQ0lCUWFyRUNTQUJLQUlBS0FJZ0VRTUFSUTBnREI4TElBQkJBVG9BQ0NBQUtBSUVLQUpNRUNRTkhpQUFLQUlFSWdGQmpjUUpJQUVvQWdBb0FpQVJBd0FOSGlBQUtBSUVJZ0ZCLzhBSklBRW9BZ0FvQWlBUkF3QU5IaUFBS0FJRUlnRkJxc1FKSUFFb0FnQW9BaUFSQXdCRkRSOE1IZ3NnQUVFQk9nQUlJQUFvQWdRUU15RUNJQUFvQWdRaEFTQUNCRUFnQVNnQ0VFRy9Ba29OSGdzZ0FVRUNRY2pBQ1NBQktBSUFLQUlrRVFjQURSMGdBQ2dDQkJBelJRUkFJQUFvQWdRaUFTZ0NFRUdQQTBvTkhpQUJRZHJFQ1NBQktBSUFLQUlnRVFNQURSNExJQUFRMlFFTUhRc2dBQ2dDQkNnQ0lFRUFUQTBkREI0TElBQkJBVG9BQ0NBQUVKVVFJUUVNSFFzZ0FFRUJPZ0FJSUFBb0FnUVFNMFVOR2lBQUtBSUVJZ0VvQWhCQnF3SktEUm9nQVVINHhBa2dBU2dDQUNnQ0lCRURBQTBhSUFBUTJRRU1HZ3NnQUVFQk9nQUlJQUFvQWdRUU0wVU5HU0FBS0FJRUlnRW9BaEJCcXdKS0RSa2dBVUdLeFFrZ0FTZ0NBQ2dDSUJFREFBMFpJQUFRMlFFTUdRc2dBQ2dDQkNnQ0lFRUFUQTBaREJvTElBQkJBVG9BQ0NBQVFZSUJFTlVDSVFFTUdRc2dBRUVCT2dBSUlBQkJqQUVRMVFJaEFRd1lDeUFBUVFFNkFBZ2dBQ2dDQkJBeklRSWdBQ2dDQkNFQklBSUVRQ0FCS0FJUVFiOENTZzBXQ3lBQlFRSkJ3TUFKSUFFb0FnQW9BaVFSQndBTkZTQUFRWUlCRU5VQ0lRRU1Gd3NnQUVFQk9nQUlJQUFvQWdRUU15RUNJQUFvQWdRaEFTQUNCRUFnQVNnQ0VFRy9Ba29ORlFzZ0FVRUNRY0RBQ1NBQktBSUFLQUlrRVFjQURSUWdBRUdNQVJEVkFpRUJEQllMSUFCQkFUb0FDQ0FBS0FJRUVETWhBaUFBS0FJRUlRRUNRQ0FDUlEwQUlBRW9BaEJCdGdKSURRQWdBQ2dDS0NFQkRCWUxBa0FnQVJBekRRQWdBQ2dDQkNJQktBSVFJZ0pCakFGS0RSUWdBa0dNQVVjTkFDQUJRUUZCcE1VSklBRW9BZ0FvQWlRUkJ3QU5GQXNnQUVHV0FSRFZBaUVCREJVTElBQkJBVG9BQ0NBQUtBSUVFRE1oQWlBQUtBSUVJUUVnQWdSQUlBRW9BaEJCdndKS0RSTUxJQUZCQVVHb3hRa2dBU2dDQUNnQ0pCRUhBQTBTQWtBZ0FDZ0NCQkF6RFFBZ0FDZ0NCQ0lCS0FJUUlnSkJqQUZLRFJNZ0FrR01BVWNOQUNBQlFRRkJwTVVKSUFFb0FnQW9BaVFSQndBTkV3c2dBRUdXQVJEVkFpRUJEQlFMSUFCQkFUb0FDQ0FBS0FJRUVETkZEUkVnQUJEWkFRd1JDeUFBUVFFNkFBZ2dBQ2dDQkJBekJFQWdBQkRaQVF3UkN5QUFLQUlFSWdFb0FoQkJpd0ZLRFJBZ0FTZ0NUQkFrRFJBZ0FDZ0NCQ0lCUWF6RkNTQUJLQUlBS0FJZ0VRTUFEUkFnQUNnQ0JCQ1FBd1JBSUFBb0FnUWlBU0FBUVF4cVFRRkJ5TVVKUWN6RkNTQUJLQUlBS0FJVUVRZ0FEQkVMSUFBUTJRRU1FQXNnQUVFQk9nQUlJQUFvQWdRUU15RUNJQUFvQWdRaEFRSkFJQUpGRFFBZ0FTZ0NFRUdzQWtjTkFDQUFFTmtCREJBTElBRVFNeUVDSUFBb0FnUWhBU0FDQkVBZ0FTZ0NFRUdzQWtnTkVRc2dBUkF6RFE4Z0FDZ0NCQ2dDRUVHQkFVd05FQXdQQ3lBQVFRRTZBQWdnQUNnQ0JDZ0NUQkFrRFE0Z0FDZ0NCQ0lCUWU3RkNTQUJLQUlBS0FJZ0VRTUFEUTRnQUNnQ0JDSUJRWWpHQ1NBQktBSUFLQUlnRVFNQURRNGdBQkRZQVNFQkRCQUxJQUJCQVRvQUNDQUFLQUlFS0FKTUVDUU5EU0FBS0FJRUlnRkJxTVlKSUFFb0FnQW9BaUFSQXdBTkRTQUFFTmdCSVFFTUR3c2dBQ2dDQkNnQ0lFRUFTZzBPSUFBUTJBRWhBUXdPQ3lBQUtBSUVLQUlnUVFCS0RRMGdBQkRZQVNFQkRBMExJQUJCQVRvQUNDQUFLQUlFS0FKTUVDUU5DaUFBS0FJRUlnRkJ1c1lKSUFFb0FnQW9BaUFSQXdBTkNpQUFFTmdCSVFFTURBc2dBQ2dDQkNJQlFkM0dDU0FCS0FJQUtBSWdFUU1BQkVBZ0FDZ0NLQ0VCREF3TElBQVEyQUVoQVF3TEN5QUFLQUlFRURNaEFpQUFLQUlFSVFFZ0FrVUVRQ0FCS0FJUVFjRURTZzBKQ3lBQlFZWEhDU0FCS0FJQUtBSWdFUU1BRFFnZ0FCRFlBU0VCREFvTElBQW9BZ1FRTXdSQUlBQW9BZ1FpQVNnQ0VFRy9Ba29OQ0NBQlFRSkJxTWNKSUFFb0FnQW9BaVFSQndBTkNBc2dBQ2dDQkJBeklRSWdBQ2dDQkNFQklBSkZCRUFnQVNnQ0VFR1FBMDROQ0FzZ0FSQXpSUTBJSUFBb0FnUW9BaEJCdGdKSERRZ2dBQkRaQVNBQUtBSW9JUUVNQ1FzZ0FDZ0NCQkF6SVFJZ0FDZ0NCQ0VCSUFKRkJFQWdBU2dDRUVIQkEwb05Cd3NnQVJBeklRSWdBQ2dDQkNFQklBSUVRQ0FCS0FJUVFiOENTZzBIQ3lBQlFiREhDU0FCS0FJQUtBSWdFUU1BRFFZZ0FCRFlBU0VCREFnTElBQkJBVG9BQ0NBQUtBSUVLQUpNRUNRTkJTQUFLQUlFSWdGQndzY0pJQUVvQWdBb0FpQVJBd0FOQlNBQUVOZ0JJUUVNQndzZ0FFRUJPZ0FJSUFBb0FnUW9Ba3dRSkEwRUlBQW9BZ1FpQVVIYnh3a2dBU2dDQUNnQ0lCRURBQTBFSUFBUTJBRWhBUXdHQ3lBQUtBSUVJZ0ZCL01jSklBRW9BZ0FvQWlBUkF3QUVRQ0FBS0FJb0lRRU1CZ3NnQUJEWUFTRUJEQVVMSUFBb0FnUW9BZ3hCQTBHZnlBa2dBRUVNYWhEV0JBdEJBQ0VCREFNTElBQVFsQkFoQVF3Q0N5QUFLQUlvSVFFTUFRc2dBQkRZQVNFQkN5QURRUkJxSkFBZ0FRdTNDUUlJZndKK0l3QkJzQWhySWdZa0FDQUFJQUkyQWh3Q1FBSkFBa0FDUUFKQUFrQWdBU0FHUVFocUVKNEZJZ1FRZ1EwaUNFRi9Sd1JBSUFCQkRHb2hCeUFFUVNCcUlRa0RRQ0FBSUFrMkFpUWdCeUFHS1FNUUlnczNBZ2dnQnlBR0tRTUlJZ3czQWdBZ0FDZ0NIQ2dDQUNJRklBdzNBZ0FnQlNBTE53SUlBa0FDUUNBSVFWOXFJZ3BCZ1FGTERRQkJ5QVFoQTBIQkJDRUZBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFwQkFXc09nUUV6TXpNSERETURCRHc3QVRrRkJqTXpNek16TXpNek16TTNBQWdDQ1Ewek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNT0VnOExNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNeEFLRVRvek14TVVGUllYR0JrYUd4d2RIaDhnSVNJa0l5VW1KeWd6S1NvdUx5d3RLekF4TXpJNEN5QUFRUUE2QUFzZ0FFRUFPZ0FJUWNNRUlRTU1Pd3NnQUVFQU9nQUlRY0FFSVFNTU9nc2dBRUVBT2dBSVFjSUVJUU1NT1FzZ0FFRUFPZ0FJUWJrRUlRTU1PQXNnQUVFQU9nQUlRYm9FSVFNTU53c2dBRUVCT2dBS1FiOEVJUU1NTmd0QnlRUWhBd3cxQzBIS0JDRURERFFMUWNzRUlRTU1Nd3RCekFRaEF3d3lDMEhOQkNFRERERUxRYzRFSVFNTU1BdEJ6d1FoQXd3dkMwSFFCQ0VEREM0TFFic0VJUU1NTFF0QnZBUWhBd3dzQ3lBQVFRQTZBQXNnQUVFQU9nQUpRYjBFSVFNTUt3dEJ2Z1FoQXd3cUN5QUFLQUlFSWdVZ0IwSHp2UWxCazc0SlFaVytDVUVBSUFVb0FnQW9BcUFCRVFJQURDRUxRYkVFSVFNTUtBdEJ1QVFoQXd3bkMwR3ZCQ0VERENZTFFiQUVJUU1NSlF0QnNnUWhBd3drQzBHbEJDRUREQ01MUWFRRUlRTU1JZ3RCdEFRaEF3d2hDMEd6QkNFRERDQUxRYlVFSVFNTUh3dEJ0d1FoQXd3ZUMwRzJCQ0VEREIwTFFhd0VJUU1NSEF0QnJRUWhBd3diQzBHdUJDRUREQm9MUWFvRUlRTU1HUXRCcVFRaEF3d1lDMEdyQkNFRERCY0xRYWdFSVFNTUZndEJwd1FoQXd3VkMwR21CQ0VEREJRTElBQW9BZ1FpQlNBSFFaYStDVUdrdmdsQmxiNEpRUUFnQlNnQ0FDZ0NvQUVSQWdBTUN3c2dBQ2dDSENnQ0FDQUVLQUlZTmdJUVFkb0VJUU1NRWdzZ0FDZ0NIQ2dDQUNBRUtBSVlOZ0lRUWRzRUlRTU1FUXNnQUNnQ0hDZ0NBQ0FFS1FNWU53TVFRZGtFSVFNTUVBc2dBQ2dDSENnQ0FDQUVLQUlZTmdJUVFmZ0VJUU1NRHdzZ0FDZ0NIQ2dDQUNBRUtBSVlOZ0lRUWZrRUlRTU1EZ3NnQUNnQ0hDZ0NBQ0FFS1FNWU53TVFRZjBFSVFNTURRc2dBQ2dDSENnQ0FDQUVLUU1ZTndNUVFmNEVJUU1NREFzZ0FDZ0NIQ2dDQUNBRUtRTVlOd01RUWZjRUlRTU1Dd3NnQUNnQ0hDZ0NBQ0FFS1FNWU53TVFRZm9FSVFNTUNnc2dBQkNnRUNFRElBQkJBRG9BQ2d3SkN5QUdRUUE2QUFjZ0JpQUlPZ0FHSUFBb0FnUWlCU0FIUWFlK0NTQUdRUVpxUVpXK0NVRUFJQVVvQWdBb0FxQUJFUUlBQ3lBQUlBSTJBaHdnQVNBRUVKNEZFSUVOSWdoQmYwY05BQXNMUVFBaEJRc2dCU0VEREFRTFFjUUVJUU1NQXd0QnhRUWhBd3dDQzBIR0JDRUREQUVMUWNjRUlRTUxJQVpCc0FocUpBQWdBd3MwQVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUJBeElRQWdBU2dDdUFFZ0FTZ0N2QUVnQUJDaEVDRUFJQUpCRUdva0FDQUFDOHNGQVFkL0l3QkJFR3NpQmlRQUlBTkJBRG9BQUNBQlFRQTJBZ0FnQWtFQk5nSUFJQVpCQURvQUR3SkFBa0FEUUFKQUlBY2lDVVVOQUNBRFFRRTZBQUFDUUFKQUlBQVEyZ0ZCQ2tjRVFDQUFFTm9CUVExSERRRUxBMEFnQUJEYUFVRUtSd1JBSUFBUTJnRkJEVWNOQXdzZ0FCQ09BUm9NQUFBTEFBc0RRQ0FBRUk0QklnZEJkbW9pQkVFRFN3UkFJQWRCZjBjTkFRd0NDeUFFUVFGckRnSUFBQUVBQ3dBTEEwQUNRQ0FBRU5vQlFRcEhCRUFnQUJEYUFVRU5SdzBCQ3lBQUVJNEJHZ3dCQ3dzZ0FCRGFBVUYvUncwQVFRRWhBQXdEQ3lBQUlBWkJEMm9RcEJBZ0JpMEFEeUVLUVFFaEJ5QUFFSTRCUVNOSERRQURRQ0FBRUk0QklnUkJDVVlnQkVFZ1JuSU5BQXNnQkVIMkFFY05BQ0FBRUk0QlFlVUFSdzBBSUFBUWpnRkI4Z0JIRFFBZ0FCQ09BVUh6QUVjTkFDQUFFSTRCUWVrQVJ3MEFJQUFRamdGQjd3QkhEUUFnQUJDT0FVSHVBRWNOQUFOQUlBQVFqZ0VpQkVFSlJpQUVRU0JHY2cwQUN5QUJLQUlBSVFVZ0JFRlFhaUlJUVFsTkJFQURRQ0FCSUFWQkNtd2dDR28yQWdBZ0FCQ09BU0VFSUFFb0FnQWhCU0FFUVZCcUlnaEJDa2tOQUFzTElBVkZEUUFEUUNBRVFTQkhRUUFnQkVFSlJ4dEZCRUFnQUJDT0FTRUVEQUVMQzBFQUlRVUNRQUpBQWtBRFFDQUVRWDlHSUFSQmQyb2lDRUVYVFVFQVFRRWdDSFJCazRDQUJIRWJjZzBCSUFaQkFtb2dCV29nQkRvQUFDQUFFSTRCSVFRZ0JVRUJhaUlGUVExSERRQUxJQVJCZDJvaUJVRVhTMEVCSUFWMFFaT0FnQVJ4UlhJTkFRd0NDeUFKSUFwQkFFZHlJUUFnQlVGK2FpSUJRUUpMQkVBZ0JVRU5SdzBGREFRTEFrQUNRQ0FCUVFGckRnSUdBUUFMSUFZdkFBSkI1ZVlCUncwRklBSkJDRFlDQUF3RkN5QUdLQUFDUWVQZXlhc0dSdzBFSUFKQkFqWUNBQXdFQ3lBRVFYOUhEUUVMQ3lBSklBcEJBRWR5SVFBTElBWkJBbXBCaUowSlFRMFFoQWdOQUNBQ1FRUTJBZ0FMSUFaQkVHb2tBQ0FBUVFGeEN5Y0FBMEFDUUNBQUlBRVFweEFnQUJEYUFVRXZSdzBBSUFGQkFUb0FBQ0FBRUtVUURRRUxDd3Y5QVFFRGZ3SkFBa0FnQUJEYUFVRXZSdzBBSUFBUWpnRWFBa0FnQUJEYUFTSUJRU3BIQkVBZ0FVRXZSdzBESUFBUWpnRWFBMEFDUUNBQUVJNEJJZ0ZCM0FCSEJFQWdBVUYyYWlJQ1FRTk5EUUVnQVVGL1J3MENEQVFMSUFBUWpnRkJEVWNOQVNBQUVOb0JRUXBIRFFFZ0FCQ09BUm9NQVFzZ0FrRUJhdzRDQUFBQ0FBc0FDeUFBRUk0QkdnTkFJQUFRamdFaEFRTkFRUUVoQWlBQlFTcEhCRUFnQVVGL1J3MENEQVFMSUFBUWpnRWlBVUV2UncwQUN3c01BUXRCQVNFQ0EwQWdBVUYyYWlJRFFRTkxCRUFnQVVGL1JnMENEQU1MQWtBZ0EwRUJhdzRDQXdNQUN5QUFFSTRCSVFFTUFBQUxBQXNnQWc4TElBQVFuUVlnQWd2YUFRRUdmeUFBSUFBb0FoUkJBV29pQVRZQ0ZDQUJJQUFvQWd3aUJDQUFLQUlRSWdOQkFuUnFLQUlBVHdSQUlBQWdBMEVCYWlJQ05nSVFBa0FnQWlBQUtBSUVJZ1ZPRFFBZ0FDZ0NHQ0lCSUFOQkJIUnFLQUlFSVFNZ0FTQUNRUVIwYWlJQlFnRTNBZ2dnQVNBRFFRRnFOZ0lFSUFRZ0FrRUNkR29vQWdBTkFBTkFJQUpCQVdvaUFTQUZTQVJBSUFBb0FoZ2lCaUFDUVFSMGFpZ0NCQ0VESUFZZ0FVRUVkR29pQWtJQk53SUlJQUlnQTBFQmFqWUNCQ0FFSUFFaUFrRUNkR29vQWdCRkRRRUxDeUFBSUFFMkFoQUxJQUJCQURZQ0ZBc0xSZ0VDZndOQUFrQUNRQ0FBRU5vQklnSkJkMm9pQTBFRVN3UkFJQUpCSUVZTkFRd0NDd0pBSUFOQkFXc09CQUFDQWdBQkN5QUJRUUU2QUFBTElBQVFqZ0VhREFFTEN3czlBUUYvSUFFZ0FrY0VRQ0FES0FJQUlRUURRQ0FBSUFSQmVHb2dBa0Y0YWlJQ0VOZ0hJQU1nQXlnQ0FFRjRhaUlFTmdJQUlBRWdBa2NOQUFzTEMxRUJBWDhnQUJEZkF5QUFFRHNnQUNnQ0FDQUFLQUlFSUFGQkJHb2lBaENvRUNBQUlBSVFMaUFBUVFScUlBRkJDR29RTGlBQUVCc2dBUkFqRUM0Z0FTQUJLQUlFTmdJQUlBQWdBQkNhQVJEWkJBc1dBQ0FBSUFFcEFnQTNBZ1FnQUNBQktRSUlOd0lNQzNrQkFYOGpBRUVnYXlJREpBQWdBeUFCTmdJUUlBTWdBRFlDR0NBRElBSTJBZ2hCQVNFQ0FrQWdBMEVZYWlBRFFSQnFFQjVGRFFBRFFDQURLQUlZSUFNb0FnZ1FxQVpGQkVCQkFDRUNEQUlMSUFOQkdHb1FtUW9nQTBFSWFoQ1pDaUFEUVJocUlBTkJFR29RSGcwQUN3c2dBMEVnYWlRQUlBSUxPd0VCZnlNQVFSQnJJZ0lrQUNBQUVEc2FBMEFnQUNnQ0JCREpBaG9nQUNBQUtBSUVRUkJxTmdJRUlBRkJmMm9pQVEwQUN5QUNRUkJxSkFBTFN3RUNmeU1BUVJCcklnTWtBQ0FBRURzYUEwQWdBQ2dDQkNJRUlBSXBBd2czQXdnZ0JDQUNLUU1BTndNQUlBQWdBQ2dDQkVFUWFqWUNCQ0FCUVg5cUlnRU5BQXNnQTBFUWFpUUFDOVVCQVFWL0l3QkI0QUJySWdVa0FDQUJJQUVvQWdBb0FoUVJBQUFRU3lFSElBVkIyQUJxSUFJb0FnQVE5UUVoQUNBQ0tBSUFRUUJLQkVBRFFDQUhJQUlnQkJDZ0JoQVBJUVlnQUNBRUVBOGlDQ0FHS0FJSU5nSUlJQWdnQmlrREFEY0RBQ0FFUVFGcUlnUWdBaWdDQUVnTkFBc0xBa0FnQUNBQklBRW9BZ0FvQW5nUkFBQWdBMEVBRU5BQ0lnUkZCRUFnQVNFRURBRUxJQVFnQlNBQklBRW9BZ0FvQW9BQkVRQUFRUUlnQWlnQ0FFRUFRUUJCQUJCRklnQWdCQ2dDQUNnQ2RCRUJBQ0FBRURVYUN5QUZRZUFBYWlRQUlBUUxKUUFnQUNnQ0FBUkFJQUFnQUNnQ0FCRFdCeUFBRURzYUlBQW9BZ0FhSUFBUTFnSWFDd3NrQVFKL0l3QkJFR3NpQWlRQUlBQWdBUkNQQ2lFRElBSkJFR29rQUNBQklBQWdBeHNMSkFFQ2Z5TUFRUkJySWdJa0FDQUFJQUVRa0FvaEF5QUNRUkJxSkFBZ0FTQUFJQU1iQ3lRQkFuOGpBRUVRYXlJQ0pBQWdBQ0FCRUpFS0lRTWdBa0VRYWlRQUlBRWdBQ0FER3dza0FRSi9Jd0JCRUdzaUFpUUFJQUFnQVJDU0NpRURJQUpCRUdva0FDQUJJQUFnQXhzTEpBRUNmeU1BUVJCcklnSWtBQ0FBSUFFUWt3b2hBeUFDUVJCcUpBQWdBU0FBSUFNYkN5UUJBbjhqQUVFUWF5SUNKQUFnQUNBQkVKUUtJUU1nQWtFUWFpUUFJQUVnQUNBREd3c3BBUUovSXdCQkVHc2lBaVFBSUFKQkNHb2dBQ0FCRU5nRUlRTWdBa0VRYWlRQUlBRWdBQ0FER3dza0FRSi9Jd0JCRUdzaUFpUUFJQUFnQVJDVkNpRURJQUpCRUdva0FDQUJJQUFnQXhzTEpBRUNmeU1BUVJCcklnSWtBQ0FCSUFBUWp3b2hBeUFDUVJCcUpBQWdBU0FBSUFNYkN5UUJBbjhqQUVFUWF5SUNKQUFnQVNBQUVKQUtJUU1nQWtFUWFpUUFJQUVnQUNBREd3c2tBUUovSXdCQkVHc2lBaVFBSUFFZ0FCQ1JDaUVESUFKQkVHb2tBQ0FCSUFBZ0F4c0xKQUVDZnlNQVFSQnJJZ0lrQUNBQklBQVFrZ29oQXlBQ1FSQnFKQUFnQVNBQUlBTWJDeVFCQW44akFFRVFheUlDSkFBZ0FTQUFFSk1LSVFNZ0FrRVFhaVFBSUFFZ0FDQURHd3NrQVFKL0l3QkJFR3NpQWlRQUlBRWdBQkNVQ2lFRElBSkJFR29rQUNBQklBQWdBeHNMS1FFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFFZ0FCRFlCQ0VESUFKQkVHb2tBQ0FCSUFBZ0F4c0xKQUVDZnlNQVFSQnJJZ0lrQUNBQklBQVFsUW9oQXlBQ1FSQnFKQUFnQVNBQUlBTWJDM2dCQW44akFFRWdheUlESkFBZ0FCQTdJZ0lnQTBFSWFpQUFJQUFRbWdGQkFXb1FuZ1lnQUJDYUFTQUNFTlVISWdJb0FnZ2dBUkRZQnlBQ0lBSW9BZ2hCQ0dvMkFnZ2dBQ0FDRUtrUUlBSWdBaWdDQkJDV0NpQUNLQUlBQkVBZ0FpZ0NFQm9nQWlnQ0FCb2dBaERVQnhvTElBTkJJR29rQUF0TEFRRi9Jd0JCRUdzaUFpUUFBa0FnQUNnQ0JDQUFFQnNvQWdCSEJFQWdBQkE3SUFBb0FnUWdBUkRZQnlBQUlBQW9BZ1JCQ0dvMkFnUU1BUXNnQUNBQkVNQVFDeUFDUVJCcUpBQUx2QUVCQW44akFFRWdheUlCSkFBZ0FVRVlhaUFBSUFBb0FnQW9BbmdSQUFBUXhRRVE5UUVoQWdKQUFrQWdBQ0FBS0FJQUtBSzhBUkVBQUJBV1FRRkdCRUFnQUNBQlFSQnFJQUlRNFFNZ0FDZ0NhQ0FBSUFBb0FnQW9BbmdSQUFCQkFSQytEVVVOQVF3Q0N5QUFJQUZCQ0dvZ0FoRGhBeUFBS0FKb0lBQWdBQ2dDQUNnQ2VCRUFBRUVBRUw0TkRRRUxJQUlnQUNBQUtBSUFLQUo0RVFBQUlBQWdBQ2dDQUNnQ0FCRUFBRUVBRU5BQ0lRQUxJQUZCSUdva0FDQUFDNWtCQVFOL0l3QkJFR3NpQVNRQVFRRWhBd0pBSUFCRkRRQWdBU0FBSUFBb0FnQW9BcndCRVFBQUlnQVFRRFlDQ0NBQklBQVFNallDQUNBQlFRaHFJQUVRSGtVTkFBTkFJQUVvQWdnb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDRkJFQUFBUkFJQUZCQ0dvUXpnRWFJQUVnQUJBeU5nSUFJQUZCQ0dvZ0FSQWVEUUVNQWdzTFFRQWhBd3NnQVVFUWFpUUFJQU1MclNvQ0NuOEVmQ01BUWRBQWF5SUJKQUFDUUNBQVJRMEFBa0FnQUJEREVFVU5BQ0FBRVBJTEJFQWdBQkRDRUNFQ0RBSUxJQUFnQUNnQ0FDZ0N2QUVSQUFBaENBSi9Ba0FDUUFKQUFrQUNRQUpBSUFBb0FtZ2lBa0hVQVV3RVFDQUNRZDErYWlJRFFSdE5EUUVNQlFzZ0FrSHpmV29pQTBFWVN3MERRUUVnQTNRaUJrSDBBSEVOQWlBR1FRTnhSUTBCUVFFaENVRUFEQVlMUVFFZ0EzUkJ2NENBd0FCeFJRMEREQVFMSUFOQkdFY05BU0FJUVFBUUVTZ0NBQ0lDSUFJb0FnQW9BZ3dSQUFBaUFpQUNLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NNQkVBQUNBSVFRRVFFU2dDQUNJQ0lBSW9BZ0FvQWd3UkFBQWlBaUFDS0FJQUtBSjRFUUFBSWdJZ0FpZ0NBQ2dDTUJFQUFHd2hDVUVBREFRTElBaEJBQkFSS0FJQUlnSWdBaWdDQUNnQ0ZCRUFBQ0lDSUFJb0FnQW9BbmdSQUFBUXhRRWhDVUVBREFNTElBSkJxMzVxSWdKQkJVc05Bd0pBQWtBZ0FrRUVhdzRDQUFFREN5QUJJQWhCQUJBUktBSUFJZ0lnQWlnQ0FDZ0NEQkVBQUNJQ0lBSW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXdFUUFBTmdJNElBRWdDRUVCRUJFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0FqQVJBQUEyQWlBZ0FVRTRhaUFCUVNCcUVLWUJLQUlBSVFsQkFRd0RDeUFCSUFoQkFCQVJLQUlBSWdJZ0FpZ0NBQ2dDREJFQUFDSUNJQUlvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUl3RVFBQU5nSTRJQUVnQ0VFQ0VCRW9BZ0FpQWlBQ0tBSUFLQUlNRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BakFSQUFBMkFpQWdBVUU0YWlBQlFTQnFFS1lCS0FJQUlRbEJBUXdDQ3lBQ1FjVUJSdzBDQ3lBSVFRQVFFU2dDQUNJQ0lBSW9BZ0FvQWhRUkFBQWlBaUFDS0FJQUtBSjRFUUFBRU1VQklRbEJBUXNoQWlBQlFjZ0FhaUFKRVBVQklRWWdBVUU0YWhDVEFTRURJQWdRRmdSQUEwQWdBeUFJSUFVUUVTZ0NBQ0lFSUFRb0FnQW9BaFFSQUFBUVN4REJFQ0FGUVFGcUlnVWdDQkFXU1EwQUN3c0NRQUpBQWtBQ1FBSkFJQUlFUUNBQlFRQTJBalFnQ1VFQlNBMEVBMEJCQUNFRUlBRWdDRUVBRUJFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0FqQVJBQUJCZjJvMkFpQWdBVUUwYWlBQlFTQnFFUDRCS0FJQUlRSkJBQ0VGSUFnUUZrRUNUd1JBSUFFZ0NFRUJFQkVvQWdBaUJTQUZLQUlBS0FJTUVRQUFJZ1VnQlNnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQWpBUkFBQkJmMm8yQWlBZ0FVRTBhaUFCUVNCcUVQNEJLQUlBSVFVTElBZ1FGa0VEVHdSQUlBRWdDRUVDRUJFb0FnQWlCQ0FFS0FJQUtBSU1FUUFBSWdRZ0JDZ0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0FqQVJBQUJCZjJvMkFpQWdBVUUwYWlBQlFTQnFFUDRCS0FJQUlRUUxBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUNnQ2FDSUhRY1FCVEFSQUlBZEIzWDVxSWdSQkJVc0VRQ0FIUWI0QlJ3ME9JQVlnQVNnQ05CQVBJQU5CQUJBc0lBSVFEeXNEQUNBRFFRRVFMQ0FGRUE4ckF3QVF6Uk1RTFF3TEN5QUVRUUZyRGdVR0FRSURCQVVMSUFkQnEzNXFJZ3BCQlVzRVFDQUhRY1VCUncwTklBWWdBU2dDTkJBUElBTkJBQkFzSUFJUUR5c0RBQ0FEUVFFUUxDQUZFQThyQXdBUXpCTVFMUXdLQ3dKQUFrQUNRQ0FLUVFGckRnVUJBZ2tLQ3dBTElBaEJBQkFSS0FJQUlnUWdCQ2dDQUNnQ0RCRUFBQ0lFSUFRb0FnQW9Bb0FCRVFBQVFYOXFJZ1JCQ2tzTkN3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUU5yRGdnREJBVUdBUUlIQ0FBTElBWWdBU2dDTkJBUElRUWdBU0FEUVFBUUxDQUNFQThyQXdBNUF5QWdBU0FEUVFFUUxDQUZFQThyQXdBNUF4QWdCQ0FCUVNCcUlBRkJFR29RcXdvckF3QVFMUXdUQ3lBR0lBRW9BalFRRHlFRUlBRWdBMEVBRUN3Z0FoQVBLQUlBTmdJZ0lBRWdBMEVCRUN3Z0JSQVBLQUlBTmdJUUlBUWdBVUVnYWlBQlFSQnFFUDRCS0FJQUVHVU1FZ3NnQmlBQktBSTBFQThoQkNBQklBTkJBQkFzSUFJUUR5Z0NBRFlDSUNBQklBTkJBUkFzSUFVUUR5Z0NBRFlDRUNBRUlBRkJJR29nQVVFUWFoQ2tBU2dDQUJCdERCRUxJQVlnQVNnQ05CQVBJUVFnQVNBRFFRQVFMQ0FDRUE4c0FBQTZBQ0FnQVNBRFFRRVFMQ0FGRUE4c0FBQTZBQkFnQkNBQlFTQnFJQUZCRUdvUXFnb3NBQUFRYkF3UUN5QUdJQUVvQWpRUUR5RUVJQUVnQTBFQUVDd2dBaEFQTFFBQU9nQWdJQUVnQTBFQkVDd2dCUkFQTFFBQU9nQVFJQVFnQVVFZ2FpQUJRUkJxRUtrS0xRQUFFSFlNRHdzZ0JpQUJLQUkwRUE4aEJDQUJJQU5CQUJBc0lBSVFEeTRCQURzQklDQUJJQU5CQVJBc0lBVVFEeTRCQURzQkVDQUVJQUZCSUdvZ0FVRVFhaENvQ2k0QkFCQnlEQTRMSUFZZ0FTZ0NOQkFQSVFRZ0FTQURRUUFRTENBQ0VBOHZBUUE3QVNBZ0FTQURRUUVRTENBRkVBOHZBUUE3QVJBZ0JDQUJRU0JxSUFGQkVHb1Fwd292QVFBUWNRd05DeUFHSUFFb0FqUVFEeUVFSUFFZ0EwRUFFQ3dnQWhBUEtRTUFOd01nSUFFZ0EwRUJFQ3dnQlJBUEtRTUFOd01RSUFRZ0FVRWdhaUFCUVJCcUVLWUtLUU1BRUZzTURBc2dCaUFCS0FJMEVBOGhCQ0FCSUFOQkFCQXNJQUlRRHlrREFEY0RJQ0FCSUFOQkFSQXNJQVVRRHlrREFEY0RFQ0FFSUFGQklHb2dBVUVRYWhDbENpa0RBQkJhREFzTElBaEJBQkFSS0FJQUlnUWdCQ2dDQUNnQ0RCRUFBQ0lFSUFRb0FnQW9Bb0FCRVFBQVFYOXFJZ1JCQ2tzTkNnSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUU5yRGdnREJBVUdBUUlIQ0FBTElBWWdBU2dDTkJBUElRUWdBU0FEUVFBUUxDQUNFQThyQXdBNUF5QWdBU0FEUVFFUUxDQUZFQThyQXdBNUF4QWdCQ0FCUVNCcUlBRkJFR29RcEFvckF3QVFMUXdTQ3lBR0lBRW9BalFRRHlFRUlBRWdBMEVBRUN3Z0FoQVBLQUlBTmdJZ0lBRWdBMEVCRUN3Z0JSQVBLQUlBTmdJUUlBUWdBVUVnYWlBQlFSQnFFS1lCS0FJQUVHVU1FUXNnQmlBQktBSTBFQThoQkNBQklBTkJBQkFzSUFJUUR5Z0NBRFlDSUNBQklBTkJBUkFzSUFVUUR5Z0NBRFlDRUNBRUlBRkJJR29nQVVFUWFoQlNLQUlBRUcwTUVBc2dCaUFCS0FJMEVBOGhCQ0FCSUFOQkFCQXNJQUlRRHl3QUFEb0FJQ0FCSUFOQkFSQXNJQVVRRHl3QUFEb0FFQ0FFSUFGQklHb2dBVUVRYWhDakNpd0FBQkJzREE4TElBWWdBU2dDTkJBUElRUWdBU0FEUVFBUUxDQUNFQTh0QUFBNkFDQWdBU0FEUVFFUUxDQUZFQTh0QUFBNkFCQWdCQ0FCUVNCcUlBRkJFR29Rb2dvdEFBQVFkZ3dPQ3lBR0lBRW9BalFRRHlFRUlBRWdBMEVBRUN3Z0FoQVBMZ0VBT3dFZ0lBRWdBMEVCRUN3Z0JSQVBMZ0VBT3dFUUlBUWdBVUVnYWlBQlFSQnFFS0VLTGdFQUVISU1EUXNnQmlBQktBSTBFQThoQkNBQklBTkJBQkFzSUFJUUR5OEJBRHNCSUNBQklBTkJBUkFzSUFVUUR5OEJBRHNCRUNBRUlBRkJJR29nQVVFUWFoQ2dDaThCQUJCeERBd0xJQVlnQVNnQ05CQVBJUVFnQVNBRFFRQVFMQ0FDRUE4cEF3QTNBeUFnQVNBRFFRRVFMQ0FGRUE4cEF3QTNBeEFnQkNBQlFTQnFJQUZCRUdvUW53b3BBd0FRV3d3TEN5QUdJQUVvQWpRUUR5RUVJQUVnQTBFQUVDd2dBaEFQS1FNQU53TWdJQUVnQTBFQkVDd2dCUkFQS1FNQU53TVFJQVFnQVVFZ2FpQUJRUkJxRUo0S0tRTUFFRm9NQ2dzZ0NFRUFFQkVvQWdBaUJ5QUhLQUlBS0FJTUVRQUFJZ2NnQnlnQ0FDZ0NnQUVSQUFCQmYyb2lCMEVLU3cwSkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBZEJBMnNPQ0FJREJBVUdBUWNJQUFzZ0JpQUJLQUkwRUE4aEJ5QUJJQU5CQUJBc0lBSVFEeXNEQURrRElDQUJJQU5CQVJBc0lBVVFEeXNEQURrREVDQUJRU0JxSUFGQkVHb1FwQW9oQWlBQklBTkJBaEFzSUFRUUR5c0RBRGtEQUNBSElBSWdBUkNyQ2lzREFCQXREQkVMSUFZZ0FTZ0NOQkFQSVFjZ0FTQURRUUFRTENBQ0VBOG9BZ0EyQWlBZ0FTQURRUUVRTENBRkVBOG9BZ0EyQWhBZ0FVRWdhaUFCUVJCcUVGSWhBaUFCSUFOQkFoQXNJQVFRRHlnQ0FEWUNBQ0FISUFJZ0FSQ2tBU2dDQUJCdERCQUxJQVlnQVNnQ05CQVBJUWNnQVNBRFFRQVFMQ0FDRUE4c0FBQTZBQ0FnQVNBRFFRRVFMQ0FGRUE4c0FBQTZBQkFnQVVFZ2FpQUJRUkJxRUtNS0lRSWdBU0FEUVFJUUxDQUVFQThzQUFBNkFBQWdCeUFDSUFFUXFnb3NBQUFRYkF3UEN5QUdJQUVvQWpRUUR5RUhJQUVnQTBFQUVDd2dBaEFQTFFBQU9nQWdJQUVnQTBFQkVDd2dCUkFQTFFBQU9nQVFJQUZCSUdvZ0FVRVFhaENpQ2lFQ0lBRWdBMEVDRUN3Z0JCQVBMUUFBT2dBQUlBY2dBaUFCRUtrS0xRQUFFSFlNRGdzZ0JpQUJLQUkwRUE4aEJ5QUJJQU5CQUJBc0lBSVFEeTRCQURzQklDQUJJQU5CQVJBc0lBVVFEeTRCQURzQkVDQUJRU0JxSUFGQkVHb1FvUW9oQWlBQklBTkJBaEFzSUFRUUR5NEJBRHNCQUNBSElBSWdBUkNvQ2k0QkFCQnlEQTBMSUFZZ0FTZ0NOQkFQSVFjZ0FTQURRUUFRTENBQ0VBOHZBUUE3QVNBZ0FTQURRUUVRTENBRkVBOHZBUUE3QVJBZ0FVRWdhaUFCUVJCcUVLQUtJUUlnQVNBRFFRSVFMQ0FFRUE4dkFRQTdBUUFnQnlBQ0lBRVFwd292QVFBUWNRd01DeUFHSUFFb0FqUVFEeUVISUFFZ0EwRUFFQ3dnQWhBUEtBSUFOZ0lnSUFFZ0EwRUJFQ3dnQlJBUEtBSUFOZ0lRSUFGQklHb2dBVUVRYWhDbUFTRUNJQUVnQTBFQ0VDd2dCQkFQS0FJQU5nSUFJQWNnQWlBQkVQNEJLQUlBRUdVTUN3c2dCaUFCS0FJMEVBOGhCeUFCSUFOQkFCQXNJQUlRRHlrREFEY0RJQ0FCSUFOQkFSQXNJQVVRRHlrREFEY0RFQ0FCUVNCcUlBRkJFR29RbndvaEFpQUJJQU5CQWhBc0lBUVFEeWtEQURjREFDQUhJQUlnQVJDbUNpa0RBQkJiREFvTElBWWdBU2dDTkJBUElRY2dBU0FEUVFBUUxDQUNFQThwQXdBM0F5QWdBU0FEUVFFUUxDQUZFQThwQXdBM0F4QWdBVUVnYWlBQlFSQnFFSjRLSVFJZ0FTQURRUUlRTENBRUVBOHBBd0EzQXdBZ0J5QUNJQUVRcFFvcEF3QVFXZ3dKQ3lBR0lBRW9BalFRRHlBRFFRQVFMQ0FDRUE4Z0EwRUJFQ3dnQlJBUEVLWUdFSGNNQ0FzZ0JpQUJLQUkwRUE4Z0EwRUFFQ3dnQWhBUElBTkJBUkFzSUFVUUR4Q2xCaEIzREFjTElBWWdBU2dDTkJBUElBTkJBQkFzSUFJUUR5QURRUUVRTENBRkVBOFFwUVpCQVhNUWR3d0dDeUFHSUFFb0FqUVFEeUFEUVFBUUxDQUNFQThnQTBFQkVDd2dCUkFQRUtZR1FRRnpFSGNNQlFzZ0JpQUJLQUkwRUE4Z0EwRUFFQ3dnQWhBUElBTkJBUkFzSUFVUUR4Q29CaEIzREFRTElBWWdBU2dDTkJBUElBTkJBQkFzSUFJUUR5QURRUUVRTENBRkVBOFFxQVpCQVhNUWR3d0RDeUFJUVFBUUVTZ0NBQ0lISUFjb0FnQW9BZ3dSQUFBaUJ5QUhLQUlBS0FLd0FSRUFBRVVOQlNBSVFRSVFFU2dDQUNJSElBY29BZ0FvQWd3UkFBQWlCeUFIS0FJQUtBS0FBUkVBQUNFS0lBWWdBU2dDTkJBUElRY2dDa0VNUmdSQUlBY2dBeUFEUVFJUUxDQUVFQTh0QUFBaUJCQXNJQVVnQWlBRUd4QVBLd01BRUMwTUF3c2dCeUFEUVFBUUxDQUNFQThyQXdCRUFBQUFBQUFBOEQ4Z0EwRUNFQ3dnQkJBUEt3TUFvYUlnQTBFQkVDd2dCUkFQS3dNQUlBTkJBaEFzSUFRUUR5c0RBS0tnRUMwTUFnc2dCaUFCS0FJMEVBOUVBQUFBQUFBQUFBQkVBQUFBQUFBQThEOGdBMEVCRUN3Z0JSQVBLd01BSUFOQkFCQXNJQUlRRHlzREFHTWJFQzBNQVFzZ0EwRUNFQ3dnQkJBUEt3TUFJUXNnQTBFQUVDd2dBaEFQS3dNQUlRd2dBMEVCRUN3Z0JSQVBLd01BSVEwZ0EwRUFFQ3dnQWhBUEt3TUFJUTRnQmlBQktBSTBFQThnQ3lBTW9TQU5JQTZobzBRQUFBQUFBQUFBQUtWRUFBQUFBQUFBOEQra0lnc2dDNkpFQUFBQUFBQUFDRUFnQ3lBTG9LR2lFQzBMSUFFZ0FTZ0NORUVCYWlJQ05nSTBJQUlnQ1VnTkFBc01CQXNnQ0VFQUVCRW9BZ0FpQWlBQ0tBSUFLQUlVRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQkRGQVNFRUlBQW9BbWdpQWtIemZXb2lCVUVHU3dSQUlBSkJwUUpIRFFFZ0NFRUJFQkVvQWdBaUFpQUNLQUlBS0FJVUVRQUFJZ0lnQWlnQ0FDZ0NlQkVBQUJERkFTRUlJQVJCQVVnTkJFRUFJUVVEUUVFQUlRSWdDRUVBU2dSQUEwQWdBVUVnYWlBRFFRQVFMQ0FGRUE4Z0EwRUJFQ3dnQWhBUEVPQURJQVlnQWlBRWJDQUZhaEFQSWdrZ0FTZ0NLRFlDQ0NBSklBRXBBeUEzQXdBZ0FrRUJhaUlDSUFoSERRQUxDeUFGUVFGcUlnVWdCRWNOQUFzTUJBc0NRQUpBQWtBQ1FBSkFJQVZCQVdzT0JnWUJCUUlEQkFBTElBUkJBVWdOQmtFQUlRSURRQ0FMSUFOQkFSQXNJQUlRRHlzREFDQURRUUFRTENBQ0VBOHJBd0NoSWdzZ0M2S2dJUXNnQWtFQmFpSUNJQVJIRFFBTERBWUxJQUZCRUdvZ0EwRUFFQ3hCQVJBUElBTkJBUkFzUVFJUUR4RGdBeUFCSUFOQkFCQXNRUUlRRHlBRFFRRVFMRUVCRUE4UTRBTWdBVUVnYWlBQlFSQnFJQUVRcEFZZ0JrRUFFQThpQWlBQktBSW9OZ0lJSUFJZ0FTa0RJRGNEQUNBQlFSQnFJQU5CQUJBc1FRSVFEeUFEUVFFUUxFRUFFQThRNEFNZ0FTQURRUUFRTEVFQUVBOGdBMEVCRUN4QkFoQVBFT0FESUFGQklHb2dBVUVRYWlBQkVLUUdJQVpCQVJBUElnSWdBU2dDS0RZQ0NDQUNJQUVwQXlBM0F3QWdBVUVRYWlBRFFRQVFMRUVBRUE4Z0EwRUJFQ3hCQVJBUEVPQURJQUVnQTBFQUVDeEJBUkFQSUFOQkFSQXNRUUFRRHhEZ0F5QUJRU0JxSUFGQkVHb2dBUkNrQmlBR1FRSVFEeUlDSUFFb0FpZzJBZ2dnQWlBQktRTWdOd01BREFZTElBTkJBUkFzSUFOQkFoQXNFS0VHSVFzZ0JFRUJTQTBGUVFBaEFnTkFBa0FnQzBRQUFBQUFBQUFBQUdOQkFYTkZCRUFnQTBFQUVDd2dBaEFQSVFVZ0JpQUNFQThpQ0NBRktBSUlOZ0lJSUFnZ0JTa0RBRGNEQUF3QkN5QUdJQUlRRHlBRFFRQVFMQ0FDRUE4ckF3Q2FFQzBMSUFKQkFXb2lBaUFFUncwQUN3d0ZDMEVBSVFJZ0EwRUFFQ3dnQTBFQkVDd1FvUVloQ3lBRVFRRklEUVFnQ3lBTG9DRUxBMEFnQmlBQ0VBOGdBMEVBRUN3Z0FoQVBLd01BSUFzZ0EwRUJFQ3dnQWhBUEt3TUFvcUVRTFNBQ1FRRnFJZ0lnQkVjTkFBc01CQXRCQUNFQ1JBQUFBQUFBQVBBL1JBQUFBQUFBQVBBL0lBTkJBQkFzSUFOQkFSQXNFS0VHSWd3Z0RLS2hJQU5CQWhBc1FRQVFEeXNEQUNJTElBdWlvcUVpRFVRQUFBQUFBQUFBQUdORkJFQWdCRUVCU0EwRUlBd2dDNklnRForZ0lRd0RRQ0FHSUFJUUR5QUxJQU5CQUJBc0lBSVFEeXNEQUtJZ0RDQURRUUVRTENBQ0VBOHJBd0Npb1JBdElBSkJBV29pQWlBRVJ3MEFDd3dFQ3lBRVFRRklEUU1EUUNBR0lBSVFEMFFBQUFBQUFBQUFBQkF0SUFKQkFXb2lBaUFFUncwQUN3d0RDeUFBSVFJTUF3c2dCa0VBRUE4Z0EwRUFFQ3dnQTBFQkVDd1FvUVlRTFF3QkN5QUdRUUFRRHlBTG54QXRDMEgwQUJCR0lnSWdCaUFBSUFBb0FnQW9BbmdSQUFBUW93WWFJQUlnQWlnQ0FDZ0NmQkVBQUNJR0lBWW9BZ0FvQWlnUkFBQWlCaUFHS1FJRVFrQ0RRZ0tFTndJRUlBSWdBQ0FBS0FJQUtBSUFFUUFBSUFJb0FnQW9BZ1FSQVFBTElBTVEzd01nQXhDdkVBd0JDeUFBSVFJTElBRkIwQUJxSkFBZ0Fnc3VBZ0YvQVg0Z0FMMGlBa0lnaUtjaUFVR0FnT0QvQjNGQmdJRGcvd2RHSUFLbklBRkIvLzgvY1hKQkFFZHhDNndCQVFGL0lBQVF5UUloQUNBQktBSUlRWHhxSWdKQkIwMEVRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBa0VCYXc0SEF3UUZBQUVHQndJTElBQWdBU2dDQUVGL2N4QmxEd3NnQUNBQktBSUFRWDl6RUcwUEN5QUFJQUVzQUFCQmYzTVFiQThMSUFBZ0FTMEFBRUgvQVhNUWRnOExJQUFnQVM0QkFFRi9jeEJ5RHdzZ0FDQUJMd0VBUWYvL0EzTVFjUThMSUFBZ0FTa0RBRUovaFJCYkR3c2dBQ0FCS1FNQVFuK0ZFRm9MQzZneEFncC9BbndqQUVFZ2F5SUpKQUFnQUNBQUtBSUFLQUo0RVFBQUVNVUJJUWRCQVNFREFrQUNRQUovQWtBQ1FDQUJRYVVDVEFSQUlBRkIrbjFxSWdoQkNrME5BU0FCUVpSK2FpSUlRUWxMRFFKQkFTQUlkQ0lJUVlVQ2NRMEVJQWhCaWdSeFJRMENRUUloQXd3RUN5QUJRZE45YWtFQ1NRMEVJQUZCcGdKR0lBRkJ4bnhxUVFKSmNnMEREQUVMQWtBZ0NFRUdhdzRFQXdFQkFRQUxRUUFNQVF0QkFRc2hDaUFISVFNTElBbEJHR29nQXhEMUFTRUZJQUFRU3lFRUFrQUNRQ0FCUVlVQ1RBUkFJQUZCbEg1cUlnTkJDVXRCQVNBRGRFR1BCbkZGY2cwQkRBSUxJQUZCK24xcUlnTkJDa3NFUUNBQlFkcDlha0VEU1EwQ0lBRkJ4bnhxSWdOQkFVc05BU0FEUVFGclJRUkFRUUFoQTBFQklRWWdCMEVBU2dSQUEwQWdCaUFFSUFNUUR5MEFBSEVoQmlBRFFRRnFJZ01nQjBjTkFBc0xJQVZCQUJBUElBWVFkd3dDQ3lBSFFRQktCRUJCQUNFREEwQWdCaUFFSUFNUUR5MEFBSEloQmlBRFFRRnFJZ01nQjBjTkFBc0xJQVZCQUJBUElBWkJBWEVRZHd3QkN3SkFJQU5CQm1zT0JRQUJBUUVBQWd0QkFDRURJQWRCQUVvRVFBTkFJQTBnQkNBREVBOHJBd0FnQkNBREVBOHJBd0Npb0NFTklBTkJBV29pQXlBSFJ3MEFDd3NnRFo4aERTQUJRWXdDUndSQVFRQWhBeUFIUVFCTURRRURRQ0FGSUFNUUR5QUVJQU1RRHlzREFDQU5veEF0SUFOQkFXb2lBeUFIUncwQUN3d0JDeUFGUVFBUUR5QU5FQzBMUVFBaEF5QUhRUUFnQ2hzaURFRUJUZ1JBSUFGQmVtb2lDRUdaQWtzaENpQUJRYk1FUmlFSEEwQkJBQ0VHQWtBQ1FDQUtCRUFnQjBVTkJRd0JDd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FJUVFGckRwa0NBUUVDblFHZEFaMEJuUUdkQVNrcUt5d2NIUzB1THlJaU1ERXlNeDRmTkRVMkl5TTNPRGs2T3p3OVBqOUFRVUpEUkVWR1IwaEpTa3RNVFU1UFVGRlNVMVJWVmxkWVdWcGJYRjFlWDJCaFltTWdaR1ZtSVdkb2FXcHJKQ1JzSlNWdGJtOXdjWEp6ZEhWMmQzaDVlbnQ4Zlg1L2dBR0JBWUlCZ3dHRUFZVUJoZ0dIQVlnQmlRR0tBWXNCakFFb2pRR09BWThCSjVBQmtRRW1rZ0dUQVNpVUFaVUJsZ0VubHdHWUFTYVpBWmtCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RRURCQVVHQndnSkNwMEJuUUdkQVowQm5RR2RBWjBCREEwT0R4QVJFaE1VRlJZWEdCbWRBWjBCblFHZEFaMEJuUUdkQVJvYm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFFTEN3c0xDd3NMQ3dzQUN5QUFJQUFvQWdBb0FuZ1JBQUFpQVNBQktBSUFLQUljRVFBQVFYOXFJZ0ZCQ2tzTm5BRUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBVUVEYXc0SUF3UUZCZ0VDQndnQUN5QUZJQU1RRHlBRUlBTVFEeXNEQUpvUUxReWhBUXNnQlNBREVBOUJBQ0FFSUFNUUR5Z0NBR3NRWlF5Z0FRc2dCU0FERUE5QkFDQUVJQU1RRHlnQ0FHc1FiUXlmQVFzZ0JTQURFQTlCQUNBRUlBTVFEeXdBQUd0QkdIUkJHSFVRYkF5ZUFRc2dCU0FERUE5QkFDQUVJQU1RRHkwQUFHdEIvd0Z4RUhZTW5RRUxJQVVnQXhBUFFRQWdCQ0FERUE4dUFRQnJRUkIwUVJCMUVISU1uQUVMSUFVZ0F4QVBRUUFnQkNBREVBOHZBUUJyUWYvL0EzRVFjUXliQVFzZ0JTQURFQTlDQUNBRUlBTVFEeWtEQUgwUVd3eWFBUXNnQlNBREVBOUNBQ0FFSUFNUUR5a0RBSDBRV2d5WkFRc2dBQ0FBS0FJQUtBSjRFUUFBSWdFZ0FTZ0NBQ2dDSEJFQUFFRU1SdzJiQVNBRklBTVFEeUFFSUFNUUR5MEFBRUVCY3hCM0RKZ0JDeUFKUVFocUlBUWdBeEFQRU1ZUUlBVWdBeEFQSWdFZ0NTZ0NFRFlDQ0NBQklBa3BBd2czQXdBTWx3RUxJQVVnQXhBUElBUWdBeEFQS3dNQVJCZ3RSRlQ3SVFsQW9rUUFBQUFBQUlCbVFLTVFMUXlXQVFzZ0JTQURFQThnQkNBREVBOHJBd0JFQUFBQUFBQ0Faa0NpUkJndFJGVDdJUWxBb3hBdERKVUJDeUFGSUFNUUR5QUVJQU1RRHlzREFCRFJFeEF0REpRQkN5QUZJQU1RRHlBRUlBTVFEeXNEQUJEU0V4QXRESk1CQ3lBRklBTVFEeUFFSUFNUUR5c0RBQkRRRXhBdERKSUJDeUFGSUFNUUR5QUVJQU1RRHlzREFCRE9FeEF0REpFQkN5QUZJQU1RRHlBRUlBTVFEeXNEQUJEUEV4QXRESkFCQ3lBRklBTVFEeUFFSUFNUUR5c0RBQkNDQ0JBdERJOEJDeUFGSUFNUUQwUUFBQUFBQUFBQUFCQXRESTRCQ3lBRklBTVFEeUFFSUFNUUR5c0RBQkRiQ3hBdERJMEJDeUFGSUFNUUR5QUVJQU1RRHlzREFCRGFDeEF0REl3QkN5QUZJQU1RRHlBRUlBTVFEeXNEQUVUdk9mcitRaTdtUDZJUTJ3c1FMUXlMQVFzZ0JTQURFQThnQkNBREVBOHJBd0FRMmd0RS9vSXJaVWNWOXoraUVDME1pZ0VMSUFVZ0F4QVBJQVFnQXhBUEt3TUFueEF0RElrQkN5QUZJQU1RRDBRQUFBQUFBQUR3UHlBRUlBTVFEeXNEQUorakVDME1pQUVMSUFRZ0F4QVBLQUlJUVFKR0JFQWdCU0FERUE4Z0JDQURFQThyQXdDWkVDME1pQUVMSUFRZ0F4QVBLQUlJUVFoR0JFQWdCU0FERUE4Z0JDQURFQThvQWdBaUFTQUJRUjkxSWdGcUlBRnpFR1VNaUFFTElBUWdBeEFQSVFZZ0JTQURFQThpQVNBR0tBSUlOZ0lJSUFFZ0Jpa0RBRGNEQUF5SEFRc2dCQ0FERUE4b0FnZ2hBU0FGSUFNUUR5RUxJQVFnQXhBUElRWWdBVUVDUmdSQUlBc2dCaXNEQUVRQUFBQUFBQUFBQUdJRWYwRi9RUUVnQkNBREVBOHJBd0JFQUFBQUFBQUFBQUJqR3dWQkFBdTNFQzBNaHdFTElBc0NmMEVBSUFZb0FnQkZEUUFhUVFGQmZ5QUVJQU1RRHlnQ0FFRi9TaHNMRUdVTWhnRUxJQVVnQXhBUElBUWdBeEFQS3dNQW5CQXRESVVCQ3lBRUlBTVFEeXNEQUNFTklBVWdBeEFQSVFFZ0JDQURFQThyQXdBaERpQU5SQUFBQUFBQUFBQUFaRUVCYzBVRVFDQUJJQTZjRUMwTWhRRUxJQUVnRHBzUUxReUVBUXNnQlNBREVBOGdCQ0FERUE4ckF3QkVBQUFBQUFBQTREK2duQkF0RElNQkN5QUVJQU1RRHlzREFDRU5JQVFnQXhBUEt3TUFJUTRnQlNBREVBOGdEa1FBQUFBQUFBRGd2NkNiSUE1RUFBQUFBQUFBNEQrZ25DQU5uRVFBQUFBQUFBRGdQNklpRFNBTm5HRWJFQzBNZ2dFTElBVWdBeEFQSUFRZ0F4QVBLd01BbXhBdERJRUJDeUFFSUFNUUR5c0RBQ0VOSUFVZ0F4QVBJQTBnRFp5aEVDME1nQUVMSUFVZ0F4QVBJQVFnQXhBUEt3TUFFTVVRRUhjTWZ3c2dCU0FERUE4Z0JDQURFQThyQXdDOVF2Ly8vLy8vLy8vLy93Q0RRb0NBZ0lDQWdJRDQvd0JSRUhjTWZnc2dCU0FERUE4Z0JDQURFQThvQWdCQkFFY1Fkd3g5Q3lBRklBTVFEeUFFSUFNUUR5Z0NBRUVBUnhCM0RId0xJQVVnQXhBUElBUWdBeEFQTFFBQUVHVU1ld3NnQlNBREVBOGdCQ0FERUE4dEFBQVFiUXg2Q3lBRklBTVFEeUFFSUFNUUR5Z0NBQkJ0REhrTElBVWdBeEFQSUFRZ0F4QVBLQUlBRUdVTWVBc2dCU0FERUE4Z0JDQURFQThyQXdCRUFBQUFBQUFBQUFCaUVIY01kd3NnQlNBREVBOGdCQ0FERUE4dEFBQzRFQzBNZGdzZ0JTQURFQThnQkNBREVBOG9BZ0MzRUMwTWRRc2dCU0FERUE4Z0JDQURFQThvQWdDNEVDME1kQXNnQlNBREVBOGdCQ0FERUE4ckF3QVFMUXh6Q3lBRklBTVFEd0ovSUFRZ0F4QVBLd01BSWcxRUFBQUFBQUFBOEVGaklBMUVBQUFBQUFBQUFBQm1jUVJBSUEyckRBRUxRUUFMRUcwTWNnc2dCU0FERUE4Q2Z5QUVJQU1RRHlzREFDSU5tVVFBQUFBQUFBRGdRV01FUUNBTnFnd0JDMEdBZ0lDQWVBc1FaUXh4Q3lBRklBTVFEeUFFSUFNUUR5d0FBRUVBUnhCM0RIQUxJQVVnQXhBUElBUWdBeEFQTFFBQVFRQkhFSGNNYndzZ0JTQURFQThnQkNBREVBOHVBUUJCQUVjUWR3eHVDeUFGSUFNUUR5QUVJQU1RRHk4QkFFRUFSeEIzREcwTElBVWdBeEFQSUFRZ0F4QVBLUU1BUWdCU0VIY01iQXNnQlNBREVBOGdCQ0FERUE4cEF3QkNBRklRZHd4ckN5QUZJQU1RRHlBRUlBTVFEeXNEQUVRQUFBQUFBQUFBQUdJUWR3eHFDeUFGSUFNUUR5QUVJQU1RRHkwQUFCQnNER2tMSUFVZ0F4QVBJQVFnQXhBUExRQUFFSFlNYUFzZ0JTQURFQThnQkNBREVBOHRBQUFRY2d4bkN5QUZJQU1RRHlBRUlBTVFEeTBBQUJCeERHWUxJQVVnQXhBUElBUWdBeEFQTFFBQXJSQmJER1VMSUFVZ0F4QVBJQVFnQXhBUExRQUFyUkJhREdRTElBVWdBeEFQSUFRZ0F4QVBMUUFBdUJBdERHTUxJQVVnQXhBUElBUWdBeEFQTEFBQUVISU1ZZ3NnQlNBREVBOGdCQ0FERUE4c0FBQVFaUXhoQ3lBRklBTVFEeUFFSUFNUUR5d0FBS3dRV3d4Z0N5QUZJQU1RRHlBRUlBTVFEeTBBQUJCMkRGOExJQVVnQXhBUElBUWdBeEFQTEFBQVFmLy9BM0VRY1F4ZUN5QUZJQU1RRHlBRUlBTVFEeXdBQUJCdERGMExJQVVnQXhBUElBUWdBeEFQTEFBQXJCQmFERndMSUFVZ0F4QVBJQVFnQXhBUExBQUFFR3dNV3dzZ0JTQURFQThnQkNBREVBOHRBQUFRY2d4YUN5QUZJQU1RRHlBRUlBTVFEeTBBQUJCbERGa0xJQVVnQXhBUElBUWdBeEFQTFFBQXJSQmJERmdMSUFVZ0F4QVBJQVFnQXhBUExRQUFFSEVNVndzZ0JTQURFQThnQkNBREVBOHRBQUFRYlF4V0N5QUZJQU1RRHlBRUlBTVFEeTBBQUswUVdneFZDeUFGSUFNUUR5QUVJQU1RRHl3QUFMY1FMUXhVQ3lBRklBTVFEeUFFSUFNUUR5d0FBTGNRTFF4VEN5QUZJQU1RRHlBRUlBTVFEeXdBQUxjUUxReFNDeUFGSUFNUUR5QUVJQU1RRHkwQUFMZ1FMUXhSQ3lBRklBTVFEeUFFSUFNUUR5MEFBTGdRTFF4UUN5QUZJQU1RRHlBRUlBTVFEeTBBQUxnUUxReFBDeUFGSUFNUUR5QUVJQU1RRHk0QkFFRVlkRUVZZFJCc0RFNExJQVVnQXhBUElBUWdBeEFQTGdFQUVHVU1UUXNnQlNBREVBOGdCQ0FERUE4dUFRQ3NFRnNNVEFzZ0JTQURFQThnQkNBREVBOHVBUUJCL3dGeEVIWU1Td3NnQlNBREVBOGdCQ0FERUE4dkFRQVFjUXhLQ3lBRklBTVFEeUFFSUFNUUR5NEJBQkJ0REVrTElBVWdBeEFQSUFRZ0F4QVBMZ0VBckJCYURFZ0xJQVVnQXhBUElBUWdBeEFQTHdFQVFSaDBRUmgxRUd3TVJ3c2dCU0FERUE4Z0JDQURFQTh1QVFBUWNneEdDeUFGSUFNUUR5QUVJQU1RRHk4QkFCQmxERVVMSUFVZ0F4QVBJQVFnQXhBUEx3RUFyUkJiREVRTElBVWdBeEFQSUFRZ0F4QVBMd0VBUWY4QmNSQjJERU1MSUFVZ0F4QVBJQVFnQXhBUEx3RUFFRzBNUWdzZ0JTQURFQThnQkNBREVBOHZBUUN0RUZvTVFRc2dCU0FERUE4Z0JDQURFQTh1QVFDM0VDME1RQXNnQlNBREVBOGdCQ0FERUE4dUFRQzNFQzBNUHdzZ0JTQURFQThnQkNBREVBOHVBUUMzRUMwTVBnc2dCU0FERUE4Z0JDQURFQTh2QVFDNEVDME1QUXNnQlNBREVBOGdCQ0FERUE4dkFRQzRFQzBNUEFzZ0JTQURFQThnQkNBREVBOHZBUUM0RUMwTU93c2dCU0FERUE4Z0JDQURFQThvQWdCQkdIUkJHSFVRYkF3NkN5QUZJQU1RRHlBRUlBTVFEeWdDQUVFUWRFRVFkUkJ5RERrTElBVWdBeEFQSUFRZ0F4QVBLQUlBckJCYkREZ0xJQVVnQXhBUElBUWdBeEFQS0FJQVFmOEJjUkIyRERjTElBVWdBeEFQSUFRZ0F4QVBLQUlBUWY4QmNSQnhERFlMSUFVZ0F4QVBJQVFnQXhBUEtBSUFyQkJhRERVTElBVWdBeEFQSUFRZ0F4QVBLQUlBUVJoMFFSaDFFR3dNTkFzZ0JTQURFQThnQkNBREVBOG9BZ0JCRUhSQkVIVVFjZ3d6Q3lBRklBTVFEeUFFSUFNUUR5Z0NBSzBRV3d3eUN5QUZJQU1RRHlBRUlBTVFEeWdDQUVIL0FYRVFkZ3d4Q3lBRklBTVFEeUFFSUFNUUR5Z0NBRUgvL3dOeEVIRU1NQXNnQlNBREVBOGdCQ0FERUE4b0FnQ3RFRm9NTHdzZ0JTQURFQThnQkNBREVBOG9BZ0MzRUMwTUxnc2dCU0FERUE4Z0JDQURFQThvQWdDNEVDME1MUXNnQlNBREVBOGdCQ0FERUE4cEF3Q25RUmgwUVJoMUVHd01MQXNnQlNBREVBOGdCQ0FERUE4cEF3Q25RUkIwUVJCMUVISU1Ld3NnQlNBREVBOGdCQ0FERUE4cEF3Q25FR1VNS2dzZ0JTQURFQThnQkNBREVBOHBBd0NuUWY4QmNSQjJEQ2tMSUFVZ0F4QVBJQVFnQXhBUEtRTUFwMEgvL3dOeEVIRU1LQXNnQlNBREVBOGdCQ0FERUE4cEF3Q25FRzBNSndzZ0JTQURFQThnQkNBREVBOHBBd0FRV2d3bUN5QUZJQU1RRHlBRUlBTVFEeWtEQUtkQkdIUkJHSFVRYkF3bEN5QUZJQU1RRHlBRUlBTVFEeWtEQUtkQkVIUkJFSFVRY2d3a0N5QUZJQU1RRHlBRUlBTVFEeWtEQUtjUVpRd2pDeUFGSUFNUUR5QUVJQU1RRHlrREFCQmJEQ0lMSUFVZ0F4QVBJQVFnQXhBUEtRTUFwMEgvQVhFUWRnd2hDeUFGSUFNUUR5QUVJQU1RRHlrREFLZEIvLzhEY1JCeERDQUxJQVVnQXhBUElBUWdBeEFQS1FNQXB4QnREQjhMSUFVZ0F4QVBJQVFnQXhBUEtRTUF1UkF0REI0TElBVWdBeEFQSUFRZ0F4QVBLUU1BdVJBdERCMExJQVVnQXhBUElBUWdBeEFQS1FNQXVSQXREQndMSUFVZ0F4QVBJQVFnQXhBUEtRTUF1aEF0REJzTElBVWdBeEFQSUFRZ0F4QVBLUU1BdWhBdERCb0xJQVVnQXhBUElBUWdBeEFQS1FNQXVoQXREQmtMSUFVZ0F4QVBBbjhnQkNBREVBOHJBd0FpRFpsRUFBQUFBQUFBNEVGakJFQWdEYW9NQVF0QmdJQ0FnSGdMRUd3TUdBc2dCU0FERUE4Q2Z5QUVJQU1RRHlzREFDSU5tVVFBQUFBQUFBRGdRV01FUUNBTnFnd0JDMEdBZ0lDQWVBc1FjZ3dYQ3lBRklBTVFEd0ovSUFRZ0F4QVBLd01BSWcyWlJBQUFBQUFBQU9CQll3UkFJQTJxREFFTFFZQ0FnSUI0Q3hCbERCWUxJQVVnQXhBUEFuNGdCQ0FERUE4ckF3QWlEWmxFQUFBQUFBQUE0RU5qQkVBZ0RiQU1BUXRDZ0lDQWdJQ0FnSUNBZndzUVd3d1ZDeUFGSUFNUUR3Si9JQVFnQXhBUEt3TUFJZzFFQUFBQUFBQUE4RUZqSUExRUFBQUFBQUFBQUFCbWNRUkFJQTJyREFFTFFRQUxFSFlNRkFzZ0JTQURFQThDZnlBRUlBTVFEeXNEQUNJTlJBQUFBQUFBQVBCQll5QU5SQUFBQUFBQUFBQUFabkVFUUNBTnF3d0JDMEVBQ3hCeERCTUxJQVVnQXhBUEFuOGdCQ0FERUE4ckF3QWlEVVFBQUFBQUFBRHdRV01nRFVRQUFBQUFBQUFBQUdaeEJFQWdEYXNNQVF0QkFBc1FiUXdTQ3lBRklBTVFEd0orSUFRZ0F4QVBLd01BSWcxRUFBQUFBQUFBOEVOaklBMUVBQUFBQUFBQUFBQm1jUVJBSUEyeERBRUxRZ0FMRUZvTUVRc2dCU0FERUE4Z0JDQURFQThyQXdBUUxRd1FDeUFGSUFNUUR5QUVJQU1RRHlzREFCQXREQThMSUFVZ0F4QVBBbjhnQkNBREVBOHJBd0FpRFpsRUFBQUFBQUFBNEVGakJFQWdEYW9NQVF0QmdJQ0FnSGdMRUd3TURnc2dCU0FERUE4Q2Z5QUVJQU1RRHlzREFDSU5tVVFBQUFBQUFBRGdRV01FUUNBTnFnd0JDMEdBZ0lDQWVBc1FjZ3dOQ3lBRklBTVFEd0orSUFRZ0F4QVBLd01BSWcyWlJBQUFBQUFBQU9CRFl3UkFJQTJ3REFFTFFvQ0FnSUNBZ0lDQWdIOExFRnNNREFzZ0JTQURFQThDZnlBRUlBTVFEeXNEQUNJTlJBQUFBQUFBQVBCQll5QU5SQUFBQUFBQUFBQUFabkVFUUNBTnF3d0JDMEVBQ3hCMkRBc0xJQVVnQXhBUEFuOGdCQ0FERUE4ckF3QWlEVVFBQUFBQUFBRHdRV01nRFVRQUFBQUFBQUFBQUdaeEJFQWdEYXNNQVF0QkFBc1FjUXdLQ3lBRklBTVFEd0orSUFRZ0F4QVBLd01BSWcxRUFBQUFBQUFBOEVOaklBMUVBQUFBQUFBQUFBQm1jUVJBSUEyeERBRUxRZ0FMRUZvTUNRc2dCU0FERUE4Z0JDQURFQThyQXdBUUxRd0lDeUFGSUFNUUR3Si9JQVFnQXhBUEt3TUFJZzJaUkFBQUFBQUFBT0JCWXdSQUlBMnFEQUVMUVlDQWdJQjRDeEJzREFjTElBVWdBeEFQQW44Z0JDQURFQThyQXdBaURabEVBQUFBQUFBQTRFRmpCRUFnRGFvTUFRdEJnSUNBZ0hnTEVISU1CZ3NnQlNBREVBOENmaUFFSUFNUUR5c0RBQ0lObVVRQUFBQUFBQURnUTJNRVFDQU5zQXdCQzBLQWdJQ0FnSUNBZ0lCL0N4QmJEQVVMSUFVZ0F4QVBBbjhnQkNBREVBOHJBd0FpRFVRQUFBQUFBQUR3UVdNZ0RVUUFBQUFBQUFBQUFHWnhCRUFnRGFzTUFRdEJBQXNRZGd3RUN5QUZJQU1RRHdKL0lBUWdBeEFQS3dNQUlnMUVBQUFBQUFBQThFRmpJQTFFQUFBQUFBQUFBQUJtY1FSQUlBMnJEQUVMUVFBTEVIRU1Bd3NnQlNBREVBOENmaUFFSUFNUUR5c0RBQ0lOUkFBQUFBQUFBUEJEWXlBTlJBQUFBQUFBQUFBQVpuRUVRQ0FOc1F3QkMwSUFDeEJhREFJTElBVWdBeEFQSUFRZ0F4QVBLd01BRUMwTUFRc2dCU0FERUE4Z0JDQURFQThwQXdBUVdnc2dBMEVCYWlJRElBeEhEUUFMQzBIMEFCQkdJZ1lnQlNBQ0VLTUdHaUFHSUFZb0FnQW9BbndSQUFBaUFTQUJLQUlBS0FJb0VRQUFJZ0VnQVNrQ0JFSkFnMElDaERjQ0JDQUdJQUFnQUNnQ0FDZ0NBQkVBQUNBR0tBSUFLQUlFRVFFQUN3c2dDVUVnYWlRQUlBWUw3UUVCQVg4Z0FCREpBaUVBQWtBZ0FTZ0NDRUYrYWlJRFFRbExEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQTBFQmF3NEpDUU1HQkFjQUFRVUlBZ3NnQUNBQ0tBSUFJQUVvQWdCcUVHVVBDeUFBSUFJb0FnQWdBU2dDQUdvUWJROExJQUFnQVNzREFDQUNLd01Bb0JBdER3c2dBQ0FDTFFBQUlBRXRBQUJxUVJoMFFSaDFFR3dQQ3lBQUlBSXZBUUFnQVM4QkFHcEJFSFJCRUhVUWNnOExJQUFnQWlrREFDQUJLUU1BZkJCYkR3c2dBQ0FDTFFBQUlBRXRBQUJxUWY4QmNSQjJEd3NnQUNBQ0x3RUFJQUV2QVFCcVFmLy9BM0VRY1E4TElBQWdBaWtEQUNBQktRTUFmQkJhQ3d2TkFRRUJmeUFBRU1rQ0lRQWdBU2dDQ0VGOGFpSURRUWROQkVBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFOQkFXc09Cd1VEQmdBQkJBY0NDeUFBSUFFb0FnQWdBaWdDQUc4UVpROExJQUFnQVNnQ0FDQUNLQUlBY0JCdER3c2dBQ0FCTEFBQUlBSXNBQUJ2UVJoMFFSaDFFR3dQQ3lBQUlBRXNBQUFnQWk0QkFHOUJHSFJCR0hVUWJBOExJQUFnQVNrREFDQUNLUU1BZ1JCYkR3c2dBQ0FCTFFBQUlBSXRBQUJ3RUhZUEN5QUFJQUV2QVFBZ0FpOEJBSEFRY1E4TElBQWdBU2tEQUNBQ0tRTUFnaEJhQ3d2TEJ3RUJmeUFBRU1rQ0lRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJLQUlJUVh4cUlnTkJCMHNOQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQTBFQmF3NEhBUUlEQkFVR0J3QUxJQUlvQWdoQmZHb2lBMEVIU3cwSEFrQWdBMEVCYXc0SENRb0tDd3NMQUFrTERBb0xJQUlvQWdoQmZHb2lBMEVIU3cwR0FrQWdBMEVCYXc0SEN3d01EUTBOQUFzTERBd0xJQUlvQWdoQmZHb2lBMEVIU3cwRkFrQWdBMEVCYXc0SERRNE9EdzhQQUEwTERBNExJQUlvQWdoQmZHb2lBMEVIU3cwRUFrQWdBMEVCYXc0SER4QVFFUkVSQUE4TERCQUxJQUlvQWdoQmZHb2lBMEVIU3cwREFrQWdBMEVCYXc0SEVoTVRFUkVSQUJJTERCQUxJQUlvQWdoQmZHb2lBMEVIU3cwQ0FrQWdBMEVCYXc0SEZCVVZFeE1UQUJRTERCSUxJQUlvQWdoQmZHb2lBMEVIU3cwQkFrQUNRQUpBQWtBQ1FBSkFJQU5CQVdzT0J3RUNBeG9hR3dVQUN5QUFJQUVwQXdBZ0FqQUFBRUwvLy8vL0Q0T0hFRnNQQ3lBQUlBRXBBd0FnQWpFQUFJY1FXdzhMSUFBZ0FTa0RBQ0FDTWdFQVF2Ly8vLzhQZzRjUVd3OExJQUFnQVNrREFDQUNNd0VBaHhCYkR3QUxBQUFMREJVTElBSW9BZ2hCZkdvaUEwRUhTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBMEVCYXc0SEFRSURIQndGQmdBTElBQWdBU2tEQUNBQ01BQUFRdi8vLy84UGc0Z1FXZzhMSUFBZ0FTa0RBQ0FDTVFBQWlCQmFEd3NnQUNBQktRTUFJQUl5QVFCQy8vLy8vdytEaUJCYUR3c2dBQ0FCS1FNQUlBSXpBUUNJRUZvUEFBc0FBQXNnQUNBQktRTUFJQUlwQXdDSUVGb1BDeUFBSUFFcEF3QWdBaWtEQUlnUVdnc1BDeUFBSUFFc0FBQWdBaTBBQUhVUWJBOExJQUFnQVN3QUFDQUNMd0VBZFJCc0R3c2dBQ0FCTEFBQUlBSW9BZ0IxRUd3UEN5QUFJQUV0QUFBZ0FpMEFBSFlRZGc4TElBQWdBUzBBQUNBQ0x3RUFkaEIyRHdzZ0FDQUJMUUFBSUFJb0FnQjJFSFlQQ3lBQUlBRXVBUUFnQWkwQUFIVVFjZzhMSUFBZ0FTNEJBQ0FDTHdFQWRSQnlEd3NnQUNBQkxnRUFJQUlvQWdCMUVISVBDeUFBSUFFdkFRQWdBaTBBQUhZUWNROExJQUFnQVM4QkFDQUNMd0VBZGhCeER3c2dBQ0FCTHdFQUlBSW9BZ0IyRUhFUEN5QUFJQUVvQWdBZ0FpZ0NBSFVRWlE4TElBQWdBU2dDQUNBQ0xRQUFkUkJsRHdzZ0FDQUJLQUlBSUFJdkFRQjFFR1VQQ3lBQUlBRW9BZ0FnQWlnQ0FIWVFiUThMSUFBZ0FTZ0NBQ0FDTFFBQWRoQnREd3NnQUNBQktBSUFJQUl2QVFCMkVHMFBDeUFBSUFFcEF3QWdBalVDQUljUVd3OExJQUFnQVNrREFDQUNLUU1BaHhCYkR3c2dBQ0FCS1FNQUlBSTFBZ0NJRUZvTGlnZ0JBWDhnQUJESkFpRUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCS0FJSVFYeHFJZ05CQjBzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRIQVFJREJnY0VCUUFMSUFJb0FnaEJmR29pQTBFSFN3MEhBa0FnQTBFQmF3NEhDUW9LQ3dzTEFBa0xEQW9MSUFJb0FnaEJmR29pQTBFSFN3MEdBa0FnQTBFQmF3NEhDd3dNRFEwTkFBc0xEQXdMSUFJb0FnaEJmR29pQTBFSFN3MEZBa0FnQTBFQmF3NEhEUTRPRHc4UEFBMExEQTRMSUFJb0FnaEJmR29pQTBFSFN3MEVBa0FnQTBFQmF3NEhEeEFRRVJFUkFBOExEQkFMSUFJb0FnaEJmR29pQTBFSFN3MERBa0FDUUFKQUFrQUNRQUpBSUFOQkFXc09Cd0VDQXhZV0Z3VUFDeUFBSUFFcEF3QWdBakFBQUVMLy8vLy9ENE9HRUZzUEN5QUFJQUVwQXdBZ0FqRUFBSVlRV3c4TElBQWdBU2tEQUNBQ01nRUFRdi8vLy84UGc0WVFXdzhMSUFBZ0FTa0RBQ0FDTXdFQWhoQmJEd0FMQUFBTERCRUxJQUlvQWdoQmZHb2lBMEVIU3cwQ0FrQUNRQUpBQWtBQ1FBSkFJQU5CQVdzT0J3RUNBeGNYR0FVQUN5QUFJQUVwQXdBZ0FqQUFBRUwvLy8vL0Q0T0dFRm9QQ3lBQUlBRXBBd0FnQWpFQUFJWVFXZzhMSUFBZ0FTa0RBQ0FDTWdFQVF2Ly8vLzhQZzRZUVdnOExJQUFnQVNrREFDQUNNd0VBaGhCYUR3QUxBQUFMREJJTElBSW9BZ2hCZkdvaUEwRUhTdzBCQWtBZ0EwRUJhdzRIRkJVVkV4TVRBQlFMREJJTElBSW9BZ2hCZkdvaUEwRUhTdzBBQWtBZ0EwRUJhdzRIRmhjWEZSVVZBQllMSUFBZ0FTZ0NBQ0FDS0FJQWRCQnRDdzhMSUFBZ0FTd0FBQ0FDTFFBQWRFRVlkRUVZZFJCc0R3c2dBQ0FCTEFBQUlBSXZBUUIwUVJoMFFSaDFFR3dQQ3lBQUlBRXNBQUFnQWlnQ0FIUkJHSFJCR0hVUWJBOExJQUFnQVMwQUFDQUNMUUFBZEVIL0FYRVFkZzhMSUFBZ0FTMEFBQ0FDTHdFQWRFSC9BWEVRZGc4TElBQWdBUzBBQUNBQ0tBSUFkRUgvQVhFUWRnOExJQUFnQVM0QkFDQUNMUUFBZEVFUWRFRVFkUkJ5RHdzZ0FDQUJMZ0VBSUFJdkFRQjBRUkIwUVJCMUVISVBDeUFBSUFFdUFRQWdBaWdDQUhSQkVIUkJFSFVRY2c4TElBQWdBUzhCQUNBQ0xRQUFkRUgvL3dOeEVIRVBDeUFBSUFFdkFRQWdBaThCQUhSQi8vOERjUkJ4RHdzZ0FDQUJMd0VBSUFJb0FnQjBRZi8vQTNFUWNROExJQUFnQVNrREFDQUNOUUlBaGhCYkR3c2dBQ0FCS1FNQUlBSXBBd0NHRUZzUEN5QUFJQUVwQXdBZ0FqVUNBSVlRV2c4TElBQWdBU2tEQUNBQ0tRTUFoaEJhRHdzZ0FDQUJLQUlBSUFJb0FnQjBFR1VQQ3lBQUlBRW9BZ0FnQWkwQUFIUVFaUThMSUFBZ0FTZ0NBQ0FDTHdFQWRCQmxEd3NnQUNBQktBSUFJQUlvQWdCMEVHMFBDeUFBSUFFb0FnQWdBaTBBQUhRUWJROExJQUFnQVNnQ0FDQUNMd0VBZEJCdEM4MEJBUUYvSUFBUXlRSWhBQ0FCS0FJSVFYeHFJZ05CQjAwRVFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRIQXdRRkFBRUdCd0lMSUFBZ0FpZ0NBQ0FCS0FJQWNSQmxEd3NnQUNBQ0tBSUFJQUVvQWdCeEVHMFBDeUFBSUFJdEFBQWdBUzBBQUhGQkdIUkJHSFVRYkE4TElBQWdBaTBBQUNBQkxRQUFjUkIyRHdzZ0FDQUNMd0VBSUFFdkFRQnhRUkIwUVJCMUVISVBDeUFBSUFJdkFRQWdBUzhCQUhFUWNROExJQUFnQWlrREFDQUJLUU1BZ3hCYkR3c2dBQ0FDS1FNQUlBRXBBd0NERUZvTEM4MEJBUUYvSUFBUXlRSWhBQ0FCS0FJSVFYeHFJZ05CQjAwRVFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRIQXdRRkFBRUdCd0lMSUFBZ0FpZ0NBQ0FCS0FJQWNoQmxEd3NnQUNBQ0tBSUFJQUVvQWdCeUVHMFBDeUFBSUFJdEFBQWdBUzBBQUhKQkdIUkJHSFVRYkE4TElBQWdBaTBBQUNBQkxRQUFjaEIyRHdzZ0FDQUNMd0VBSUFFdkFRQnlRUkIwUVJCMUVISVBDeUFBSUFJdkFRQWdBUzhCQUhJUWNROExJQUFnQWlrREFDQUJLUU1BaEJCYkR3c2dBQ0FDS1FNQUlBRXBBd0NFRUZvTEM4MEJBUUYvSUFBUXlRSWhBQ0FCS0FJSVFYeHFJZ05CQjAwRVFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0EwRUJhdzRIQXdRRkFBRUdCd0lMSUFBZ0FpZ0NBQ0FCS0FJQWN4QmxEd3NnQUNBQ0tBSUFJQUVvQWdCekVHMFBDeUFBSUFJdEFBQWdBUzBBQUhOQkdIUkJHSFVRYkE4TElBQWdBaTBBQUNBQkxRQUFjeEIyRHdzZ0FDQUNMd0VBSUFFdkFRQnpRUkIwUVJCMUVISVBDeUFBSUFJdkFRQWdBUzhCQUhNUWNROExJQUFnQWlrREFDQUJLUU1BaFJCYkR3c2dBQ0FDS1FNQUlBRXBBd0NGRUZvTEN5NEFJQUFReVFJaEFDQUJLQUlJUVF4R0JFQWdBQUovUVFBZ0FTMEFBRVVOQUJvZ0FpMEFBRUVBUndzUWR3c0xNUUVCZnlBQUVNa0NJUU1nQVNnQ0NFRU1SZ1JBUVFFaEFDQURJQUV0QUFBRWZ5QUFCU0FDTFFBQVFRQkhDeEIzQ3d2ZUhBSUpmd0Y4SXdCQm9BSnJJZ1FrQUNBRVFjZ0Jha0VBUVFCQkFVRUFRUUJCQUJCRklnb2dBQ0FBS0FJQUtBSjRFUUFBRUk4QklBSWdBaWdDQUNnQ1JCRUFBQ0VESUFSQndBRnFJQUFRU3hEaEF5RUlJQVJCdUFGcUlBTVFTeERoQXlFR0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRkIxWDVxSWdWQkFVc0VRQ0FCUWFRQ1JnUkFJQVJCc0FGcUlBTWdBeWdDQUNnQ2xBRVJBQUFnQUNBQUtBSUFLQUtZQVJFQUFHd1E5UUVhSUFSQjJBQnFRUXhCQWtFQlFRQkJBRUVBRUVVYURBZ0xJQUFnQUNnQ0FDZ0NlQkVBQUJERkFTRUZBa0FnQWlBQ0tBSUFLQUo0RVFBQUVNVUJJZ0pCQVVjZ0JVRUNTSEpGQkVBZ0JpQUVRZGdBYWlBRklBTVFTMEVBRUE4UXNBb1EzQVFNQVFzZ0JVRUJSeUFDUVFKSWNnMEFJQVlnQXhCTEVOd0VJQWdnQkVIWUFHb2dBaUFBRUV0QkFCQVBFTEFLRU53RUlBb2dBeUFES0FJQUtBSjRFUUFBRUk4QklBSWhCUXNnQkVHd0FXb2dCUkQxQVNFSFFRQWhBaUFFUWRnQWFrRU1RUUpCQVVFQVFRQkJBQkJGSVFrZ0FVSHBmbW9pQzBFWlN3UkFJQUZCcEFKR0RRZ01DZ3NDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUxRUUZyRGhrVEVSUUlCd1lGQkFNTkRoa1pDUW9MREJrUkdSa1JBUUFDRWd0QkFDRUJJQVZCQUV3TkZ3TkFJQUFnQUNnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWh3UkFBQkJERVlFUUNBSElBRVFEeUFJSUFFUUR5QUdJQUVRRHhDb0JrRUJjeEIzQ3lBQlFRRnFJZ0VnQlVjTkFBc01Gd3NnQlVFQlNBMFdRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRMEJBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01GZ3NnQlVFQlNBMFZRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRenhBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01GUXNnQlVFQlNBMFVRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRemhBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01GQXNnQlVFQlNBMFRRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRelJBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01Fd3NnQlVFQlNBMFNRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThRekJBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01FZ3NnQlVFQlNBMFJRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThReXhBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01FUXNnQlVFQlNBMFFRUUFoQVFOQUlBUWdDQ0FCRUE4Z0JpQUJFQThReWhBZ0J5QUJFQThpQWlBRUtBSUlOZ0lJSUFJZ0JDa0RBRGNEQUNBQlFRRnFJZ0VnQlVjTkFBc01FQXNnQlVFQlNBMFBRUUFoQVFOQUFrQWdCaUFCRUE5QkFCQ25CZ1JBSUFnZ0FSQVBJUUlnQnlBQkVBOGlBeUFDS0FJSU5nSUlJQU1nQWlrREFEY0RBQXdCQ3dKQUlBQWdBQ2dDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaHdSQUFCQmVtb2lBa0VFU3cwQUFrQUNRQUpBSUFKQkFXc09CQU1BQXdFQ0N5QUdJQUVRRHlnQ0FFRi9SdzBDSUFnZ0FSQVBLQUlBUVlDQWdJQjRSdzBDSUFjZ0FSQVBRUUFRWlF3REN5QUdJQUVRRHlrREFFSi9VZzBCSUFnZ0FSQVBLUU1BUW9DQWdJQ0FnSUNBZ0g5U0RRRWdCeUFCRUE5Q0FCQmJEQUlMSUFZZ0FSQVBLQUlBUVg5SERRQWdDQ0FCRUE4b0FnQkJnSUIrUncwQUlBY2dBUkFQUVFBUVpRd0JDeUFFSUFnZ0FSQVBJQVlnQVJBUEVNa1FJQWNnQVJBUElnSWdCQ2dDQ0RZQ0NDQUNJQVFwQXdBM0F3QUxJQUZCQVdvaUFTQUZSdzBBQ3d3UEN5QUhRUUFRRHlBSVFRQVFEeUFHUVFBUUR4Q21CaEIzREFVTElBZEJBQkFQSUFoQkFCQVBJQVpCQUJBUEVLVUdFSGNNQkFzZ0IwRUFFQThnQ0VFQUVBOGdCa0VBRUE4UXBRWkJBWE1RZHd3REN5QUhRUUFRRHlBSVFRQVFEeUFHUVFBUUR4Q21Ca0VCY3hCM0RBSUxJQWRCQUJBUElBTVFTeUFJRUs4S0VIY01BUXNnQjBFQUVBOGdBeEJMSUFnUXJnb1Fkd3NnQ2lBSkVJOEJEQWdMSUFWQkFXc05CUXdFQ3lBRlFRRklEUVpCQUNFQkEwQWdCQ0FJSUFFUUR5QUdJQUVRRHhEZ0F5QUhJQUVRRHlJQ0lBUW9BZ2cyQWdnZ0FpQUVLUU1BTndNQUlBRkJBV29pQVNBRlJ3MEFDd3dHQ3lBRlFRRklEUVZCQUNFQkEwQWdCQ0FJSUFFUUR5QUdJQUVRRHhESUVDQUhJQUVRRHlJQ0lBUW9BZ2cyQWdnZ0FpQUVLUU1BTndNQUlBRkJBV29pQVNBRlJ3MEFDd3dGQ3lBRlFRRklEUVJCQUNFQkEwQWdCQ0FJSUFFUUR5QUdJQUVRRHhDa0JpQUhJQUVRRHlJQ0lBUW9BZ2cyQWdnZ0FpQUVLUU1BTndNQUlBRkJBV29pQVNBRlJ3MEFDd3dFQzBFQUlRRWdCVUVBVEEwREEwQWdBQ0FBS0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDSEJFQUFFRi9haUlEUVFwTERRVUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FEUVFOckRnZ0RCQVVHQVFJSENBQUxJQVlnQVJBUEt3TUFSQUFBQUFBQUFBQUFZZ1JBSUFjZ0FSQVBJQWdnQVJBUEt3TUFJQVlnQVJBUEt3TUFveEF0REFrTElBZ2dBUkFQS3dNQVJBQUFBQUFBQUFBQVpFRUJjMFVFUUNBSElBRVFEMFFBQUFBQUFBRHdmeEF0REFrTElBZ2dBUkFQS3dNQUlRd2dCeUFCRUE4aEF5QU1SQUFBQUFBQUFBQUFZMEVCYzBVRVFDQURSQUFBQUFBQUFQRC9FQzBNQ1FzZ0EwUUFBQUFBQUFENGZ4QXREQWdMSUFZZ0FSQVBRUUFRcHdZRVFDQUhJQUVRRDBILy8vLy9CeEJsREFnTEFrQWdCaUFCRUE4b0FnQkJmMGNOQUNBSUlBRVFEeWdDQUVHQWdJQ0FlRWNOQUNBSElBRVFEMEdBZ0lDQWVCQmxEQWdMSUFjZ0FSQVBJQWdnQVJBUEtBSUFJQVlnQVJBUEtBSUFiUkJsREFjTElBWWdBUkFQUVFBUXB3WWhDU0FISUFFUUR5RURJQWtFUUNBRFFYOFFiUXdIQ3lBRElBZ2dBUkFQS0FJQUlBWWdBUkFQS0FJQWJoQnREQVlMSUFZZ0FSQVBMUUFBUlFSQUlBY2dBUkFQUWY4QUVHd01CZ3NDUUNBR0lBRVFEeXdBQUVGL1J3MEFJQWdnQVJBUExBQUFRWUIvUncwQUlBY2dBUkFQUVlCL0VHd01CZ3NnQnlBQkVBOGdDQ0FCRUE4c0FBQWdCaUFCRUE4c0FBQnRRUmgwUVJoMUVHd01CUXNnQmlBQkVBOHRBQUJGSVFrZ0J5QUJFQThoQXlBSkJFQWdBMEgvQVJCMkRBVUxJQU1nQ0NBQkVBOHRBQUFnQmlBQkVBOHRBQUJ1RUhZTUJBc2dCaUFCRUE4dkFRQkZCRUFnQnlBQkVBOUIvLzhCRUhJTUJBc0NRQ0FHSUFFUUR5NEJBRUYvUncwQUlBZ2dBUkFQTGdFQVFZQ0Fma2NOQUNBSElBRVFEMEdBZ0g0UWNnd0VDeUFISUFFUUR5QUlJQUVRRHk0QkFDQUdJQUVRRHk0QkFHMUJFSFJCRUhVUWNnd0RDeUFHSUFFUUR5OEJBRVVoQ1NBSElBRVFEeUVESUFrRVFDQURRZi8vQXhCeERBTUxJQU1nQ0NBQkVBOHZBUUFnQmlBQkVBOHZBUUJ1RUhFTUFnc2dCaUFCRUE4UXJRb0VRQ0FISUFFUUQwTC8vLy8vLy8vLy8vOEFFRnNNQWdzQ1FDQUdJQUVRRHlrREFFSi9VZzBBSUFnZ0FSQVBLUU1BUW9DQWdJQ0FnSUNBZ0g5U0RRQWdCeUFCRUE5Q2dJQ0FnSUNBZ0lDQWZ4QmJEQUlMSUFjZ0FSQVBJQWdnQVJBUEtRTUFJQVlnQVJBUEtRTUFmeEJiREFFTElBWWdBUkFQRUswS0lRa2dCeUFCRUE4aEF5QUpCRUFnQTBKL0VGb01BUXNnQXlBSUlBRVFEeWtEQUNBR0lBRVFEeWtEQUlBUVdnc2dBVUVCYWlJQklBVkhEUUFMREFNTElBUkJzQUZxSUFBZ0FDZ0NBQ2dDbUFFUkFBQVE5UUVoQVNBRVFkZ0Fha0VNUVFKQkFVRUFRUUJCQUJCRkdpQUFJQUFvQWdBb0FwZ0JFUUFBUVFCS0JFQkJBQ0VDQTBCQkFDRUZSQUFBQUFBQUFBQUFJUXdnQXlBREtBSUFLQUtRQVJFQUFFRUFTZ1JBQTBBZ0RDQUlJQUFnQUNnQ0FDZ0NtQUVSQUFBZ0JXd2dBbW9RRHlzREFDQUdJQVVRRHlzREFLS2dJUXdnQlVFQmFpSUZJQU1nQXlnQ0FDZ0NrQUVSQUFCSURRQUxDeUFCSUFJUUR5QU1FQzBnQWtFQmFpSUNJQUFnQUNnQ0FDZ0NtQUVSQUFCSURRQUxDeUFLSUFRZ0FDQUFLQUlBS0FLQUFSRUFBRUVDSUFBZ0FDZ0NBQ2dDbUFFUkFBQkJBRUVBUVFBUVJTSUJFSThCSUFFUU5Sb01BZ3NnQkVHd0FXb2dBeUFES0FJQUtBS1VBUkVBQUJEMUFTRUJRUUFoQWlBRVFkZ0Fha0VNUVFKQkFVRUFRUUJCQUJCRkdpQURJQU1vQWdBb0FwUUJFUUFBUVFCS0JFQURRRUVBSVFWRUFBQUFBQUFBQUFBaERDQUFJQUFvQWdBb0FwQUJFUUFBUVFCS0JFQURRQ0FNSUFnZ0JSQVBLd01BSUFZZ0F5QURLQUlBS0FLWUFSRUFBQ0FDYkNBRmFoQVBLd01Bb3FBaERDQUZRUUZxSWdVZ0FDQUFLQUlBS0FLUUFSRUFBRWdOQUFzTElBRWdBaEFQSUF3UUxTQUNRUUZxSWdJZ0F5QURLQUlBS0FLVUFSRUFBRWdOQUFzTElBb2dCQ0FBSUFBb0FnQW9Bb0FCRVFBQVFRSWdBeUFES0FJQUtBS1VBUkVBQUVFQVFRQkJBQkJGSWdFUWp3RWdBUkExR2d3QkN5QUFJQUFvQWdBb0FwZ0JFUUFBUVFCS0JFQkJBQ0VIQTBCQkFDRUJJQU1nQXlnQ0FDZ0NsQUVSQUFCQkFFb0VRQU5BSUFNZ0F5Z0NBQ2dDbUFFUkFBQWhDU0FBSUFBb0FnQW9BcGdCRVFBQUlRSkVBQUFBQUFBQUFBQWhERUVBSVFVZ0NVRUFTZ1JBQTBBZ0RDQUlJQUlnQld3Z0Iyb1FEeXNEQUNBR0lBTWdBeWdDQUNnQ21BRVJBQUFnQVd3Z0JXb1FEeXNEQUtLZ0lRd2dBeUFES0FJQUtBS1lBUkVBQUNFSklBQWdBQ2dDQUNnQ21BRVJBQUFoQWlBRlFRRnFJZ1VnQ1VnTkFBc0xJQVJCc0FGcUlBRWdBbXdnQjJvUUR5QU1FQzBnQVVFQmFpSUJJQU1nQXlnQ0FDZ0NsQUVSQUFCSURRQUxDeUFIUVFGcUlnY2dBQ0FBS0FJQUtBS1lBUkVBQUVnTkFBc0xJQW9nQkNBQUlBQW9BZ0FvQW5nUkFBQWlBU0FCS0FJQUtBSWNFUUFBUVFKQkFDQURJQU1vQWdBb0FwUUJFUUFBSUFBZ0FDZ0NBQ2dDbUFFUkFBQkJBQkJGSWdFUWp3RWdBUkExR2d0QjlBQVFSaUlDSUFSQnNBRnFJQW9Rb3dZYUlBSWdBQ0FBS0FJQUtBSUFFUUFBSUFJb0FnQW9BZ1FSQVFBTElBUkIyQUJxRURVYUlBb1FOUm9nQkVHZ0Ftb2tBQ0FDQ3dRQUlBQUxCd0FnQUNnQ2JBc0lBQ0FBTFFDZ0FRc0tBQ0FBUVFFNkFLQUJDd2dBSUFCQmtBRnFDdzBBSUFCQmtBRnFJQUVRNkFJTENBQWdBQkMyQ2hvTENBQWdBQkM2Q2hvTDZBTUNCWDhCZlNNQVFTQnJJZ1VrQUNBQkVDTWFJQUlvQWdBaENDQUJFRHdoQmlBRlFRQTZBQjhDUUFKQUlBWkZEUUFnQVNBSUlBWVFOQ0lKRUJFb0FnQWlCMFVOQUFOQUlBY29BZ0FpQjBVTkFTQUlJQWNvQWdSSEJFQWdCeWdDQkNBR0VEUWdDVWNOQWdzZ0FSQkRJQWRCQ0dvZ0FoQ0xBMFVOQUFzTUFRc2dCVUVRYWlBQklBaEIrQTBnQXlBRUVOQUpJQUVRSXlnQ0FDRUNJQUVRUXlFREFrQWdCZ1JBSUFNcUFnQWdCck9VSUFKQkFXcXpYVUVCY3cwQkN5QUZJQVlRdWdGQkFYTWdCa0VCZEhJMkFnd2dCUUovSUFFUUl5Z0NBRUVCYXJNZ0FSQkRLZ0lBbFkwaUNrTUFBSUJQWFNBS1F3QUFBQUJnY1FSQUlBcXBEQUVMUVFBTE5nSUlJQUVnQlVFTWFpQUZRUWhxRUZJb0FnQVEwd1FnQ0NBQkVEd2lCaEEwSVFrTEFrQWdBU0FKRUJFb0FnQWlBa1VFUUNBRktBSVFJQUZCQ0dvaUFpZ0NBRFlDQUNBQ0lBVW9BaEEyQWdBZ0FTQUpFQkVnQWpZQ0FDQUZLQUlRS0FJQVJRMEJJQVVvQWhBaEFpQUJJQVVvQWhBb0FnQW9BZ1FnQmhBMEVCRWdBallDQUF3QkN5QUZLQUlRSUFJb0FnQTJBZ0FnQWlBRktBSVFOZ0lBQ3lBRlFSQnFFRjhoQnlBQkVDTWlBU0FCS0FJQVFRRnFOZ0lBSUFWQkFUb0FIeUFGUVJCcUVMMEpDeUFBSUFWQkVHb2dCeEF4SUFWQkgyb1FvZ0VnQlVFZ2FpUUFDd2dBSUFBUXV3b2FDd29BSUFCQkZHb1F6UTRMQ2dBZ0FFRVVhaERPRGdzS0FDQUFRUlJxRU04T0N3b0FJQUJCRkdvUTB3NExDZ0FnQUVFVWFoRFNEZ3NLQUNBQVFSUnFFSVFHQ3dvQUlBQkJGR29RMEE0TENnQWdBRUVVYWhEV0Rnc0tBQ0FBUVJScUVOY09Dd29BSUFCQkZHb1EyQTRMQndBZ0FDMEFHQXNNQUNBQVFSUnFJQUVRandFTENBQWdBQkM5Q2hvTHBnRUJBWDhDUUNBQkxRQUVCRUFnQVVFQUlBQWdBU2dDQUNnQ0tCRUhBRVVOQVFzZ0FTQUFFT0lEQWtBZ0FTMEFCd1JBSUFBb0FoZ2lBaUFCSUFJb0FnQW9BZ2dSQVFBZ0FDZ0NGQ0lDSUFFZ0FpZ0NBQ2dDQ0JFQkFBd0JDeUFBS0FJVUlnSWdBU0FDS0FJQUtBSUlFUUVBSUFBb0FoZ2lBaUFCSUFJb0FnQW9BZ2dSQVFBTElBRVE4d0lnQVMwQUJrVU5BQ0FCUVFJZ0FDQUJLQUlBS0FJb0VRY0FHZ3NMWlFFQmZ3SkFJQUV0QUFRRVFDQUJRUUFnQUNBQktBSUFLQUlrRVFjQVJRMEJDeUFBS0FJWUJFQWdBU0FBRU9JRElBQW9BaGdpQWlBQklBSW9BZ0FvQWdnUkFRQWdBUkR6QWdzZ0FTMEFCa1VOQUNBQlFRSWdBQ0FCS0FJQUtBSWtFUWNBR2dzTDdBRUJBWDhDUUNBQkxRQUVCRUFnQVVFQUlBQWdBU2dDQUNnQ0lCRUhBRVVOQVFzZ0FTQUFFT0lEQWtBZ0FTMEFCd1JBSUFBb0Fod2lBZ1JBSUFJZ0FTQUNLQUlBS0FJSUVRRUFDeUFBS0FJVUlnSUVRQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBQ2dDR0NJQ1JRMEJJQUlnQVNBQ0tBSUFLQUlJRVFFQURBRUxJQUFvQWhnaUFnUkFJQUlnQVNBQ0tBSUFLQUlJRVFFQUN5QUFLQUlVSWdJRVFDQUNJQUVnQWlnQ0FDZ0NDQkVCQUFzZ0FDZ0NIQ0lDUlEwQUlBSWdBU0FDS0FJQUtBSUlFUUVBQ3lBQkVQTUNJQUV0QUFaRkRRQWdBVUVDSUFBZ0FTZ0NBQ2dDSUJFSEFCb0xDK0lCQVFGL0FrQWdBUzBBQkFSQUlBRkJBQ0FBSUFFb0FnQW9BaGdSQndCRkRRRUxJQUVnQUJEaUF3SkFJQUV0QUFjRVFDQUFLQUp3SWdJRVFDQUNJQUVnQWlnQ0FDZ0NDQkVCQUFzZ0FDZ0NiQ0lDQkVBZ0FpQUJJQUlvQWdBb0FnZ1JBUUFMSUFBb0FtZ2lBaUFCSUFJb0FnQW9BZ2dSQVFBTUFRc2dBQ2dDYUNJQ0lBRWdBaWdDQUNnQ0NCRUJBQ0FBS0FKc0lnSUVRQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBQ2dDY0NJQ1JRMEFJQUlnQVNBQ0tBSUFLQUlJRVFFQUN5QUJFUE1DSUFFdEFBWkZEUUFnQVVFQ0lBQWdBU2dDQUNnQ0dCRUhBQm9MQzAwQkFYOGpBRUVRYXlJQkpBQWdBQkRJRHlBQVFRaHFFTDBISUFGQkFEWUNEQ0FBUVF4cUlBRkJER29RclFJZ0FVR0FnSUQ4QXpZQ0NDQUFRUkJxSUFGQkNHb1FyUUlnQVVFUWFpUUFDNkFFQVFSL0l3QkJFR3NpQWlRQUFrQWdBUzBBQkFSQUlBRkJBQ0FBSUFFb0FnQW9BaHdSQndCRkRRRUxJQUVnQUJEaUF3SkFBa0FnQVMwQUJ3UkFJQUpCQ0dvZ0FFSHdBR29pQlJBeUVMOEtJQUlnQlJEQkNpQUNRUWhxSUFJUXdBcEZEUUVnQWtFSWFoRGRCeWdDQUNJRElBRWdBeWdDQUNnQ0NCRUJBQU5BQW45QkFTQUJMUUFGUlEwQUdrRUJJQUpCQ0dvUTNRY29BZ0FnQlNnQ0FDZ0NBRVlOQUJvZ0FVRUJJQUFnQVNnQ0FDZ0NIQkVIQUFzaEF3TkFBa0FnQWlBQ1FRaHFJZ1FwQWdBM0FnQWdCRUVFYWhDK0Nob2dBaUFGRU1FS0lBSkJDR29nQWhEQUNrVU5BQ0FDUVFocUVOMEhLQUlBSWdRZ0FTQUVLQUlBS0FJSUVRRUFJQU5CQVhFaEJFRUFJUU1nQkVVTkFRd0NDd3NMSUFFUTh3SWdBMEVCY1EwQ0RBTUxJQUlnQUVId0FHb2lCUkJBTmdJSUlBSWdCUkF5TmdJQUlBSkJDR29nQWhBZVJRMEFJQUlvQWdnb0FnQWlBeUFCSUFNb0FnQW9BZ2dSQVFBRFFBSi9RUUVnQVMwQUJVVU5BQnBCQVNBQ0tBSUlLQUlBSUFVUWtBRW9BZ0JHRFFBYUlBRkJBU0FBSUFFb0FnQW9BaHdSQndBTElRTURRQUpBSUFKQkNHb1F6Z0VhSUFJZ0JSQXlOZ0lBSUFKQkNHb2dBaEFlUlEwQUlBSW9BZ2dvQWdBaUJDQUJJQVFvQWdBb0FnZ1JBUUFnQTBFQmNTRUVRUUFoQXlBRVJRMEJEQUlMQ3dzZ0FSRHpBaUFEUVFGeERRRU1BZ3NnQVJEekFnc2dBUzBBQmtVTkFDQUJRUUlnQUNBQktBSUFLQUljRVFjQUdnc2dBa0VRYWlRQUMxMEJBWDhDUUNBQkxRQUVCRUFnQVVFQUlBQWdBU2dDQUNnQ0ZCRUhBRVVOQVFzZ0FTQUFFT0lESUFBb0FuQWlBaUFCSUFJb0FnQW9BZ2dSQVFBZ0FSRHpBaUFCTFFBR1JRMEFJQUZCQWlBQUlBRW9BZ0FvQWhRUkJ3QWFDd3Y3QVFFQmZ3SkFBa0FnQVMwQUJBUkFJQUZCQUNBQUlBRW9BZ0FvQWhBUkJ3QkZEUUVMSUFFZ0FCRGlBd0pBSUFFdEFBY0VRQ0FBS0FKMElnSUVRQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBUzBBQlFSQUlBRkJBU0FBSUFFb0FnQW9BaEFSQndCRkRRUUxJQUFvQW5BaUFrVU5BU0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBd0JDeUFBS0FKd0lnSUVRQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBUzBBQlFSQUlBRkJBU0FBSUFFb0FnQW9BaEFSQndCRkRRTUxJQUFvQW5RaUFrVU5BQ0FDSUFFZ0FpZ0NBQ2dDQ0JFQkFBc2dBUkR6QWlBQkxRQUdSUTBBSUFGQkFpQUFJQUVvQWdBb0FoQVJCd0FhQ3c4TElBRVE4d0lMRVFBZ0FTQUFJQUVvQWdBb0Fnd1JBUUFMRVFBZ0FTQUFJQUVvQWdBb0FnZ1JBUUFMTFFFQmZ5TUFRUkJySWdFa0FDQUFFTVFLSUFGQkFEWUNEQ0FBUVFocUlBRkJER29Rd3dvZ0FVRVFhaVFBQzhVQkFRTi9Jd0JCRUdzaUF5UUFJQUFvQWdRaEFnSi9Ba0FDUUNBQUtBSUFFRVFRNFFSQkFVY05BQ0FBS0FJQUVFUWdBMEVNYWhEakIwVU5BQ0FES0FJTUlnUU5BU0FDSUFBb0FnZ29BZ0FpQUNBQUtBSUFLQUlBRVFBQVFiaU5DVUgwaWdsQjBvc0pRUUFnQWlnQ0FDZ0NvQUVSQWdCQkFBd0NDeUFDSUFBb0FnZ29BZ0FpQUNBQUtBSUFLQUlBRVFBQVFlcU1DVUgwaWdsQjBvc0pRUUFnQWlnQ0FDZ0NwQUVSQWdCQkFBd0JDeUFCSUFRMkFnQkJBUXNoQVNBRFFSQnFKQUFnQVF1akFRRUJmeUFBS0FJRUlRSUNmd0pBSUFBb0FnQVFSQkRoQkVFQlJ3MEFJQUFvQWdBUVJDQUJFT01IUlEwQVFRRWdBU2dDQUVFQVNnMEJHaUFDSUFBb0FnZ29BZ0FpQUNBQUtBSUFLQUlBRVFBQVFkbU1DVUhFaWdsQjBvc0pRUUFnQWlnQ0FDZ0NvQUVSQWdCQkFBOExJQUlnQUNnQ0NDZ0NBQ0lBSUFBb0FnQW9BZ0FSQUFCQjZvd0pRY1NLQ1VIU2l3bEJBQ0FDS0FJQUtBS2tBUkVDQUVFQUN3di9CZ0VDZnlNQVFlQUFheUlESkFBZ0F5QUNOZ0pjQWtBQ1FDQUNJQUlvQWdBb0FqZ1JBQUFpQkEwQUlBSWdBaWdDQUNnQ0dCRUFBQ0lDUlEwQklBTWdBaUFDS0FJQUtBSzhBUkVBQUJCQU5nSklJQU1nQWlBQ0tBSUFLQUs4QVJFQUFCQXlOZ0k0SUFOQnlBQnFJQU5CT0dvUUhrVU5BUU5BSUFNb0FrZ29BZ0FpQkNBRUtBSUFLQUk0RVFBQUlnUU5BU0FEUWNnQWFoQm1HaUFESUFJZ0FpZ0NBQ2dDdkFFUkFBQVFNallDT0NBRFFjZ0FhaUFEUVRocUVCNE5BQXNNQVFzZ0F5QUJFSXdDTmdKWUlBTWdBUkJoTmdKSUlBTkIyQUJxSUFOQnlBQnFFQjVGRFFBRFFDQURJQUEyQWt3Z0F5QURRZHdBYWpZQ1VDQURJQU5CMkFCcU5nSklJQU1nQURZQ1BDQURJQU5CM0FCcU5nSkFJQU1nQTBIWUFHbzJBamdnQXlBQU5nSXNJQU1nQTBIY0FHbzJBakFnQXlBRFFkZ0FhallDS0NBRElBQTJBaHdnQXlBRFFkd0FhallDSUNBRElBTkIyQUJxTmdJWUlBTWdBRFlDRUNBRElBTkIzQUJxTmdJVUlBTkJBRFlDRENBRFFRQTJBZ2dDUUFKQUlBTkIyQUJxRUVRb0FnQkJibW9pQWtFUFN3MEFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUpCQVdzT0R3RUpDUWtKQ1FrSkFnTUVCUVlIQ0FBTElBTkJ5QUJxUVppS0NSRGdCMFVOQ1NBRVFRRTZBQ0VNQ1FzZ0EwSElBR3BCcElvSkVPQUhSUTBJSUFSQ0FEY0NOQ0FFUVFFNkFDSU1DQXNnQTBISUFHcEJzSW9KRU9BSFJRMEhJQVJCZnhEZkJ3d0hDeUFEUVRocUlBTkJER29ROVJCRkRRWWdCQ0FES0FJTUVOOEhEQVlMSUFOQkVHcEIxb29KRU1ZRklBTkJLR3BCMW9vSklBTkJDR29RclFaRkRRVWdCQ0FES0FJSUVLd0dEQVVMSUFOQkVHcEI1WW9KRU1ZRklBTkJLR3BCNVlvSklBTkJDR29RclFaRkRRUWdCQ0FES0FJSUVNVUtEQVFMSUFOQkVHcEI5SW9KRU1ZRklBTkJHR29nQTBFSWFoRDBFRVVOQXlBRUlBTW9BZ2cyQWpBTUF3c2dBMEVRYWtHSGl3a1F4Z1VnQTBFb2FrR0hpd2tnQTBFSWFoQ3RCa1VOQWlBREtBSUlJUUlnQkVFQU9nQWlJQVFnQWpZQ05Bd0NDeUFEUVJCcVFaS0xDUkRHQlNBRFFTaHFRWktMQ1NBRFFRaHFFSzBHUlEwQklBTW9BZ2doQWlBRVFRQTZBQ0lnQkNBQ05nSTREQUVMSUFBZ0F5Z0NYQ0lDSUFJb0FnQW9BZ0FSQUFCQm9Jd0pRZEtMQ1VIU2l3bEJBQ0FBS0FJQUtBS2tBUkVDQUFzZ0EwSFlBR29ROFFFZ0F5QUJFR0UyQWtnZ0EwSFlBR29nQTBISUFHb1FIZzBBQ3dzZ0EwSGdBR29rQUF2OEFRRURmeU1BUVJCcklnTWtBQUpBSUFJZ0FpZ0NBQ2dDS0JFQUFDSUVSUTBBSUFNZ0FSQ01BallDQ0NBRElBRVFZVFlDQUNBRFFRaHFJQU1RSGtVTkFBTkFBa0FnQTBFSWFoQkVFT0VFUVFGT0JFQWdBQ0FDSUFJb0FnQW9BZ0FSQUFCQm9Jc0pRZEtMQ1VIU2l3bEJBQ0FBS0FJQUtBS2tBUkVDQUF3QkN3SkFJQU5CQ0dvUVJDZ0NBQ0lGUVFKSEJFQWdCVUVIUncwQklBUkJBVG9BSEF3Q0N5QUVRUUU2QUIwTUFRc2dBQ0FDSUFJb0FnQW9BZ0FSQUFCQis0c0pRZEtMQ1VIU2l3bEJBQ0FBS0FJQUtBS2tBUkVDQUFzZ0EwRUlhaER4QVNBRElBRVFZVFlDQUNBRFFRaHFJQU1RSGcwQUN3c2dBMEVRYWlRQUMvd0JBUU4vSXdCQkVHc2lBeVFBQWtBZ0FpQUNLQUlBS0FJa0VRQUFJZ1JGRFFBZ0F5QUJFSXdDTmdJSUlBTWdBUkJoTmdJQUlBTkJDR29nQXhBZVJRMEFBMEFDUUNBRFFRaHFFRVFRNFFSQkFVNEVRQ0FBSUFJZ0FpZ0NBQ2dDQUJFQUFFR2dpd2xCMG9zSlFkS0xDVUVBSUFBb0FnQW9BcVFCRVFJQURBRUxBa0FnQTBFSWFoQkVLQUlBSWdWQkFrY0VRQ0FGUVFkSERRRWdCRUVCT2dCMURBSUxJQVJCQVRvQWRnd0JDeUFBSUFJZ0FpZ0NBQ2dDQUJFQUFFSFRpd2xCMG9zSlFkS0xDVUVBSUFBb0FnQW9BcVFCRVFJQUN5QURRUWhxRVBFQklBTWdBUkJoTmdJQUlBTkJDR29nQXhBZURRQUxDeUFEUVJCcUpBQUxTZ0VDZnlBQ0VOOEVSUVJBSUFJb0FnUWlBeUFDS0FJQUlnUVE0QVFnQVNBRElBUVF4d29nQWhBYktBSUFJUUVnQUJBYklnQWdBU0FBS0FJQWFqWUNBQ0FDRUJ0QkFEWUNBQXNMUGdFQmZ5QUFLQUlNSWdKQkJIRUVmeUFBSUFFUUh4RGlCeUFBSUFFUXdRUWdBQ2dDREFVZ0FndEJBbkVFUUNBQkVCTkJxUFVSS0FJQUVNOEdHZ3NMTWdFQmZ5TUFRUkJySWdJa0FDQUNJQUFRWVRZQ0FDQUFJQUpCQ0dvZ0FoQm5LQUlBSUFFUStSQWdBa0VRYWlRQUlBQUxSZ0VDZnlNQVFSQnJJZ01rQUJES0NpRUVJQUFvQWlnZ0FoRGlCaUVBSUFFUXl3b2hBU0FESUFBMkFnd2dBeUFCTmdJSUlBUWdBMEVJYWhESkNpQURRUkJxSkFBZ0JBczJBUUovSXdCQkVHc2lBaVFBSUFGQkFSRGVCeUlEUVFBMkFnQWdBQ0FESUFKQkNHb2dBVUVCRUprQkVKRUJHaUFDUVJCcUpBQUxPZ0VDZnlNQVFSQnJJZ0VrQUJES0NpRUNJQUFReXdvaEFDQUJRUUEyQWd3Z0FTQUFOZ0lJSUFJZ0FVRUlhaERKQ2lBQlFSQnFKQUFnQWd1T0FRRUNmd0pBSUFBb0FnUWlBVVVOQUNBQklBRW9BZ0FvQXNBQkVRQUFFQlpCQUV3TkFDQUFLQUlFSWdFZ0FTZ0NBQ2dDd0FFUkFBQkJBQkFSS0FJQUlnRWdBU2dDQUNnQ0ZCRUFBRVVOQUNBQUtBSUVJZ0FnQUNnQ0FDZ0N3QUVSQUFCQkFCQVJLQUlBSWdBZ0FDZ0NBQ2dDRkJFQUFCQkxRUUFRRHlJQVFRQWdBQ2dDQ0VFSVJoc2hBZ3NnQWdzL0FRRi9JQUFvQWdBRVFDQUFFQlloQVNBQUVMSUtJQUFnQVJESUJTQUFFRHNhSUFBb0FnQWFJQUFRdHdJYUlBQVFHMEVBTmdJQUlBQkNBRGNDQUFzTFB3RUNmeU1BUVJCcklnTWtBQ0FBRURzaEJBTkFJQVFnQUNnQ0JDQUNFSmNESUFBZ0FDZ0NCRUVFYWpZQ0JDQUJRWDlxSWdFTkFBc2dBMEVRYWlRQUN3Y0FJQUFSREFBTENRQWdBU0FBRVFVQUN3WUFJQUFrQUFzUUFDTUFJQUJyUVhCeElnQWtBQ0FBQ3dRQUl3QUxSQUlCZndGK0lBRkMvLy8vLy8vL1A0TWhBd0ovSUFGQ01JaW5RZi8vQVhFaUFrSC8vd0ZIQkVCQkJDQUNEUUVhUVFKQkF5QUFJQU9FVUJzUEN5QUFJQU9FVUFzTHpRTURBMzhCZmdWOEFrQUNRQUpBQWtBZ0FMMGlCRUlBV1FSQUlBUkNJSWluSWdGQi8vOC9TdzBCQ3lBRVF2Ly8vLy8vLy8vLy93Q0RVQVJBUkFBQUFBQUFBUEMvSUFBZ0FLS2pEd3NnQkVKL1ZRMEJJQUFnQUtGRUFBQUFBQUFBQUFDakR3c2dBVUgvLzcvL0Iwc05Ba0dBZ01EL0F5RUNRWUY0SVFNZ0FVR0FnTUQvQTBjRVFDQUJJUUlNQWdzZ0JLY05BVVFBQUFBQUFBQUFBQThMSUFCRUFBQUFBQUFBVUVPaXZTSUVRaUNJcHlFQ1FjdDNJUU1MSUFSQy8vLy8vdytESUFKQjRyNGxhaUlCUWYvL1AzRkJuc0dhL3dOcXJVSWdob1MvUkFBQUFBQUFBUEMvb0NJQUlBQWdBRVFBQUFBQUFBRGdQNktpSWdXaHZVS0FnSUNBY0lPL0lnWkVBQUFnWlVjVjl6K2lJZ2NnQXlBQlFSUjJhcmNpQ0tBaUNTQUhJQWdnQ2FHZ0lBQWdCcUVnQmFFZ0FDQUFSQUFBQUFBQUFBQkFvS01pQUNBRklBQWdBS0lpQlNBRm9pSUFJQUFnQUVTZnhualFDWnJEUDZKRXIzaU9IY1Z4ekQrZ29rUUUrcGVabVpuWlA2Q2lJQVVnQUNBQUlBQkVSRkkrM3hMeHdqK2lSTjREeTVaa1JzYy9vS0pFV1pNaWxDUkowaitnb2tTVFZWVlZWVlhsUDZDaW9LQ2lvQ0lBUkFBQUlHVkhGZmMvb2lBQUlBYWdSQUNpN3k3OEJlYzlvcUNnb0NFQUN5QUFDN1lIQVFsL0lBQWdBQ2dDQkNJR1FYaHhJZ05xSVFRZ0JrRURjU0lDUVFGR1FlRFpGQ2dDQUNJSklBQkxjaG9DUUNBQ1JRUkFRUUFoQWlBQlFZQUNTUTBCSUFNZ0FVRUVhazhFUUNBQUlRSWdBeUFCYTBHdzNSUW9BZ0JCQVhSTkRRSUxRUUFQQ3dKQUlBTWdBVThFUUNBRElBRnJJZ0pCRUVrTkFTQUFJQVpCQVhFZ0FYSkJBbkkyQWdRZ0FDQUJhaUlCSUFKQkEzSTJBZ1FnQkNBRUtBSUVRUUZ5TmdJRUlBRWdBaERUQ2d3QkMwRUFJUUlnQkVIbzJSUW9BZ0JHQkVCQjNOa1VLQUlBSUFOcUlnTWdBVTBOQWlBQUlBWkJBWEVnQVhKQkFuSTJBZ1FnQUNBQmFpSUNJQU1nQVdzaUFVRUJjallDQkVIYzJSUWdBVFlDQUVIbzJSUWdBallDQUF3QkN5QUVRZVRaRkNnQ0FFWUVRRUhZMlJRb0FnQWdBMm9pQXlBQlNRMENBa0FnQXlBQmF5SUZRUkJQQkVBZ0FDQUdRUUZ4SUFGeVFRSnlOZ0lFSUFBZ0FXb2lBU0FGUVFGeU5nSUVJQUFnQTJvaUFpQUZOZ0lBSUFJZ0FpZ0NCRUYrY1RZQ0JBd0JDeUFBSUFaQkFYRWdBM0pCQW5JMkFnUWdBQ0FEYWlJQklBRW9BZ1JCQVhJMkFnUkJBQ0VGUVFBaEFRdEI1TmtVSUFFMkFnQkIyTmtVSUFVMkFnQU1BUXNnQkNnQ0JDSUZRUUp4RFFFZ0JVRjRjU0FEYWlJSElBRkpEUUVnQnlBQmF5RUtBa0FnQlVIL0FVMEVRQ0FFS0FJSUlnTWdCVUVEZGlJRlFRTjBRZmpaRkdwSEdpQURJQVFvQWd3aUFrWUVRRUhRMlJSQjBOa1VLQUlBUVg0Z0JYZHhOZ0lBREFJTElBTWdBallDRENBQ0lBTTJBZ2dNQVFzZ0JDZ0NHQ0VJQWtBZ0JDQUVLQUlNSWdOSEJFQWdDU0FFS0FJSUlnSk5CRUFnQWlnQ0RCb0xJQUlnQXpZQ0RDQURJQUkyQWdnTUFRc0NRQ0FFUVJScUlnVW9BZ0FpQWcwQUlBUkJFR29pQlNnQ0FDSUNEUUJCQUNFRERBRUxBMEFnQlNFSklBSWlBMEVVYWlJRktBSUFJZ0lOQUNBRFFSQnFJUVVnQXlnQ0VDSUNEUUFMSUFsQkFEWUNBQXNnQ0VVTkFBSkFJQVFnQkNnQ0hDSUNRUUowUVlEY0ZHb2lCU2dDQUVZRVFDQUZJQU0yQWdBZ0F3MEJRZFRaRkVIVTJSUW9BZ0JCZmlBQ2QzRTJBZ0FNQWdzZ0NFRVFRUlFnQ0NnQ0VDQUVSaHRxSUFNMkFnQWdBMFVOQVFzZ0F5QUlOZ0lZSUFRb0FoQWlBZ1JBSUFNZ0FqWUNFQ0FDSUFNMkFoZ0xJQVFvQWhRaUFrVU5BQ0FESUFJMkFoUWdBaUFETmdJWUN5QUtRUTlOQkVBZ0FDQUdRUUZ4SUFkeVFRSnlOZ0lFSUFBZ0Iyb2lBU0FCS0FJRVFRRnlOZ0lFREFFTElBQWdCa0VCY1NBQmNrRUNjallDQkNBQUlBRnFJZ0VnQ2tFRGNqWUNCQ0FBSUFkcUlnSWdBaWdDQkVFQmNqWUNCQ0FCSUFvUTB3b0xJQUFoQWdzZ0Fnc2NBQ0FBSUFFb0FnZ2dCUkMxQWdSQUlBRWdBaUFESUFRUTZBY0xDemtBSUFBZ0FTZ0NDQ0FGRUxVQ0JFQWdBU0FDSUFNZ0JCRG9CdzhMSUFBb0FnZ2lBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVDQUF1WEFnRUdmeUFBSUFFb0FnZ2dCUkMxQWdSQUlBRWdBaUFESUFRUTZBY1BDeUFCTFFBMUlRY2dBQ2dDRENFR0lBRkJBRG9BTlNBQkxRQTBJUWdnQVVFQU9nQTBJQUJCRUdvaUNTQUJJQUlnQXlBRUlBVVE1Z2NnQnlBQkxRQTFJZ3B5SVFjZ0NDQUJMUUEwSWd0eUlRZ0NRQ0FHUVFKSURRQWdDU0FHUVFOMGFpRUpJQUJCR0dvaEJnTkFJQUV0QURZTkFRSkFJQXNFUUNBQktBSVlRUUZHRFFNZ0FDMEFDRUVDY1EwQkRBTUxJQXBGRFFBZ0FDMEFDRUVCY1VVTkFnc2dBVUVBT3dFMElBWWdBU0FDSUFNZ0JDQUZFT1lISUFFdEFEVWlDaUFIY2lFSElBRXRBRFFpQ3lBSWNpRUlJQVpCQ0dvaUJpQUpTUTBBQ3dzZ0FTQUhRZjhCY1VFQVJ6b0FOU0FCSUFoQi93RnhRUUJIT2dBMEM1UUJBQ0FBSUFFb0FnZ2dCQkMxQWdSQUlBRWdBaUFERU9jSER3c0NRQ0FBSUFFb0FnQWdCQkMxQWtVTkFBSkFJQUlnQVNnQ0VFY0VRQ0FCS0FJVUlBSkhEUUVMSUFOQkFVY05BU0FCUVFFMkFpQVBDeUFCSUFJMkFoUWdBU0FETmdJZ0lBRWdBU2dDS0VFQmFqWUNLQUpBSUFFb0FpUkJBVWNOQUNBQktBSVlRUUpIRFFBZ0FVRUJPZ0EyQ3lBQlFRUTJBaXdMQy9VQkFDQUFJQUVvQWdnZ0JCQzFBZ1JBSUFFZ0FpQURFT2NIRHdzQ1FDQUFJQUVvQWdBZ0JCQzFBZ1JBQWtBZ0FpQUJLQUlRUndSQUlBRW9BaFFnQWtjTkFRc2dBMEVCUncwQ0lBRkJBVFlDSUE4TElBRWdBellDSUFKQUlBRW9BaXhCQkVZTkFDQUJRUUE3QVRRZ0FDZ0NDQ0lBSUFFZ0FpQUNRUUVnQkNBQUtBSUFLQUlVRVFJQUlBRXRBRFVFUUNBQlFRTTJBaXdnQVMwQU5FVU5BUXdEQ3lBQlFRUTJBaXdMSUFFZ0FqWUNGQ0FCSUFFb0FpaEJBV28yQWlnZ0FTZ0NKRUVCUncwQklBRW9BaGhCQWtjTkFTQUJRUUU2QURZUEN5QUFLQUlJSWdBZ0FTQUNJQU1nQkNBQUtBSUFLQUlZRVFnQUN3dW9CQUVFZnlBQUlBRW9BZ2dnQkJDMUFnUkFJQUVnQWlBREVPY0hEd3NDUUNBQUlBRW9BZ0FnQkJDMUFnUkFBa0FnQWlBQktBSVFSd1JBSUFFb0FoUWdBa2NOQVFzZ0EwRUJSdzBDSUFGQkFUWUNJQThMSUFFZ0F6WUNJQ0FCS0FJc1FRUkhCRUFnQUVFUWFpSUZJQUFvQWd4QkEzUnFJUWdnQVFKL0FrQURRQUpBSUFVZ0NFOE5BQ0FCUVFBN0FUUWdCU0FCSUFJZ0FrRUJJQVFRNWdjZ0FTMEFOZzBBQWtBZ0FTMEFOVVVOQUNBQkxRQTBCRUJCQVNFRElBRW9BaGhCQVVZTkJFRUJJUWRCQVNFR0lBQXRBQWhCQW5FTkFRd0VDMEVCSVFjZ0JpRURJQUF0QUFoQkFYRkZEUU1MSUFWQkNHb2hCUXdCQ3dzZ0JpRURRUVFnQjBVTkFSb0xRUU1MTmdJc0lBTkJBWEVOQWdzZ0FTQUNOZ0lVSUFFZ0FTZ0NLRUVCYWpZQ0tDQUJLQUlrUVFGSERRRWdBU2dDR0VFQ1J3MEJJQUZCQVRvQU5nOExJQUFvQWd3aEJpQUFRUkJxSWdVZ0FTQUNJQU1nQkJDeUJpQUdRUUpJRFFBZ0JTQUdRUU4wYWlFR0lBQkJHR29oQlFKQUlBQW9BZ2dpQUVFQ2NVVUVRQ0FCS0FJa1FRRkhEUUVMQTBBZ0FTMEFOZzBDSUFVZ0FTQUNJQU1nQkJDeUJpQUZRUWhxSWdVZ0Jra05BQXNNQVFzZ0FFRUJjVVVFUUFOQUlBRXRBRFlOQWlBQktBSWtRUUZHRFFJZ0JTQUJJQUlnQXlBRUVMSUdJQVZCQ0dvaUJTQUdTUTBBREFJQUN3QUxBMEFnQVMwQU5nMEJJQUVvQWlSQkFVWUVRQ0FCS0FJWVFRRkdEUUlMSUFVZ0FTQUNJQU1nQkJDeUJpQUZRUWhxSWdVZ0Jra05BQXNMQzNBQkFuOGdBQ0FCS0FJSVFRQVF0UUlFUUNBQklBSWdBeERwQnc4TElBQW9BZ3doQkNBQVFSQnFJZ1VnQVNBQ0lBTVExQW9DUUNBRVFRSklEUUFnQlNBRVFRTjBhaUVFSUFCQkdHb2hBQU5BSUFBZ0FTQUNJQU1RMUFvZ0FTMEFOZzBCSUFCQkNHb2lBQ0FFU1EwQUN3c0xNd0FnQUNBQktBSUlRUUFRdFFJRVFDQUJJQUlnQXhEcEJ3OExJQUFvQWdnaUFDQUJJQUlnQXlBQUtBSUFLQUljRVFRQUN4b0FJQUFnQVNnQ0NFRUFFTFVDQkVBZ0FTQUNJQU1RNlFjTEM2a0NBUVIvSXdCQlFHb2lBU1FBSUFBb0FnQWlBa0Y0YWlnQ0FDRUVJQUpCZkdvb0FnQWhBaUFCUVFBMkFoUWdBVUc4NnhJMkFoQWdBU0FBTmdJTUlBRkI3T3NTTmdJSUlBRkJHR3BCQUVFbkVOMEJHaUFBSUFScUlRQUNRQ0FDUWV6ckVrRUFFTFVDQkVBZ0FVRUJOZ0k0SUFJZ0FVRUlhaUFBSUFCQkFVRUFJQUlvQWdBb0FoUVJBZ0FnQUVFQUlBRW9BaUJCQVVZYklRTU1BUXNnQWlBQlFRaHFJQUJCQVVFQUlBSW9BZ0FvQWhnUkNBQWdBU2dDTENJQVFRRkxEUUFnQUVFQmF3UkFJQUVvQWh4QkFDQUJLQUlvUVFGR0cwRUFJQUVvQWlSQkFVWWJRUUFnQVNnQ01FRUJSaHNoQXd3QkN5QUJLQUlnUVFGSEJFQWdBU2dDTUEwQklBRW9BaVJCQVVjTkFTQUJLQUlvUVFGSERRRUxJQUVvQWhnaEF3c2dBVUZBYXlRQUlBTUxvQUVCQVg4akFFRkFhaUlESkFBQ2YwRUJJQUFnQVVFQUVMVUNEUUFhUVFBZ0FVVU5BQnBCQUNBQkVKTVJJZ0ZGRFFBYUlBTkJmellDRkNBRElBQTJBaEFnQTBFQU5nSU1JQU1nQVRZQ0NDQURRUmhxUVFCQkp4RGRBUm9nQTBFQk5nSTRJQUVnQTBFSWFpQUNLQUlBUVFFZ0FTZ0NBQ2dDSEJFRUFFRUFJQU1vQWlCQkFVY05BQm9nQWlBREtBSVlOZ0lBUVFFTElRQWdBMEZBYXlRQUlBQUxCZ0FRbGhFQUN6RUJBWDhqQUVFUWF5SUFKQUFnQUVFQU5nSU1RWWp4RVNnQ0FDSUFRZVBxRWtFQUVPVUxHa0VLSUFBUXdBTVFBUUFMY1FFRGZ5TUFRUkJySWdVa0FDQUJFQjhoQkFOQUFrQWdBVUVBRUZBaEF5QUZJQUkzQXdBZ0FRSi9JQU1nQkVFQmFrSFg2aElnQlJBbklnTkJBRTRFUUNBRElBUk5EUUlnQXd3QkN5QUVRUUYwUVFGeUN5SUVFRTBNQVFzTElBRWdBeEJOSUFBZ0FSRFNBeUFGUVJCcUpBQUxKd0VCZnlNQVFSQnJJZ0lrQUNBQ0VPb0hJQUFnQWlBQkVKY1JJQUlRSUJvZ0FrRVFhaVFBQzNFQkEzOGpBRUVRYXlJRkpBQWdBUkFmSVFRRFFBSkFJQUZCQUJCUUlRTWdCU0FDTmdJQUlBRUNmeUFESUFSQkFXcEIxT29TSUFVUUp5SURRUUJPQkVBZ0F5QUVUUTBDSUFNTUFRc2dCRUVCZEVFQmNnc2lCQkJOREFFTEN5QUJJQU1RVFNBQUlBRVEwZ01nQlVFUWFpUUFDM0VCQTM4akFFRVFheUlGSkFBZ0FSQWZJUVFEUUFKQUlBRkJBQkJRSVFNZ0JTQUNOZ0lBSUFFQ2Z5QURJQVJCQVdwQjBlb1NJQVVRSnlJRFFRQk9CRUFnQXlBRVRRMENJQU1NQVFzZ0JFRUJkRUVCY2dzaUJCQk5EQUVMQ3lBQklBTVFUU0FBSUFFUTBnTWdCVUVRYWlRQUM0MEJBUU4vSXdCQkVHc2lCQ1FBUWUvLy8vOERJQUZQQkVBQ1FDQUJRUUZOQkVBZ0FDQUJFTlFCSUFBaEJRd0JDeUFBSUFFUXl3VkJBV29pQXhDQ0FpSUZFT0VCSUFBZ0F4RHBBU0FBSUFFUXZBRUxJQVVoQXlBQklnQUVmeUFESUFJZ0FCQ29FUVVnQXdzYUlBUkJBRFlDRENBRklBRkJBblJxSUFSQkRHb1Fud0lnQkVFUWFpUUFEd3NRYmdBTGdRRUJBMzhqQUVFUWF5SUZKQUFDUUNBQUVMWUdJZ1FnQUJBZklnTnJJQUpQQkVBZ0FrVU5BU0FBRUJNaUJDQURRUUowYWlBQklBSVFwd1FnQUNBQ0lBTnFJZ0FRaHdNZ0JVRUFOZ0lNSUFRZ0FFRUNkR29nQlVFTWFoQ2ZBZ3dCQ3lBQUlBUWdBaUFEYWlBRWF5QURJQU5CQUNBQ0lBRVEyQW9MSUFWQkVHb2tBQXQ2QVFSL0l3QkJFR3NpQkNRQUFrQWdBQkMyQmlJRElBSlBCRUFnQUJBVElnWWhCU0FDSWdNRWZ5QUZJQUVnQXhDbkVRVWdCUXNhSUFSQkFEWUNEQ0FHSUFKQkFuUnFJQVJCREdvUW53SWdBQ0FDRUljRERBRUxJQUFnQXlBQ0lBTnJJQUFRSHlJQVFRQWdBQ0FDSUFFUTJBb0xJQVJCRUdva0FBdCtBUU4vSXdCQkVHc2lBeVFBUWUvLy8vOERJQUpQQkVBQ1FDQUNRUUZOQkVBZ0FDQUNFTlFCSUFBaEJBd0JDeUFBSUFJUXl3VkJBV29pQlJDQ0FpSUVFT0VCSUFBZ0JSRHBBU0FBSUFJUXZBRUxJQVFnQVNBQ0VLY0VJQU5CQURZQ0RDQUVJQUpCQW5ScUlBTkJER29RbndJZ0EwRVFhaVFBRHdzUWJnQUxlUUVEZnlNQVFSQnJJZ01rQUVGdklBRlBCRUFDUUNBQlFRcE5CRUFnQUNBQkVOUUJJQUFoQkF3QkN5QUFJQUFnQVJEa0FrRUJhaUlGRUlFRUlnUVE0UUVnQUNBRkVPa0JJQUFnQVJDOEFRc2dCQ0FCSUFJUTJRb2dBMEVBT2dBUElBRWdCR29nQTBFUGFoQ1VBU0FEUVJCcUpBQVBDeEJ1QUF0NUFRSi9Jd0JCRUdzaUF5UUFRVzhnQWs4RVFBSkFJQUpCQ2swRVFDQUFRUUVRMUFFZ0FDRUNEQUVMSUFBZ0FDQUNFT1FDUVFGcUlnUVFnUVFpQWhEaEFTQUFJQVFRNlFFZ0FFRUJFTHdCQ3lBQ0lBRkJBUkRvQVNBRFFRQTZBQThnQWtFQmFpQURRUTlxRUpRQklBTkJFR29rQUE4TEVHNEFDKzhCQVFSL0l3QkJFR3NpQWlRQUlBSWdBVFlDREVGdklBRlBCRUFnQUJCZElRTWdBaUFBRUI4MkFnZ2dBaUFDUVF4cUlBSkJDR29RVWlnQ0FDSUJOZ0lNSUFJZ0FSRGtBaUlCTmdJTUFrQWdBU0FEUmcwQUFuOGdBVUVLUmdSQUlBQWhBVUVCSVFNZ0FDZ0NBQXdCQzBFQklRVkJBQ0FCSUFOTklBQWdBaWdDREVFQmFoQ0JCQ0lCR3cwQklBQVF3UUVoQXlBQUVCTUxJUVFnQVNBRUlBQVFIMEVCYWhEb0FTQURCRUFnQkJBcUN3SkFJQVVFUUNBQUlBSW9BZ3hCQVdvUTZRRWdBQ0FDS0FJSUVMd0JJQUFnQVJEaEFRd0JDeUFBSUFJb0FnZ1ExQUVMQ3lBQ1FSQnFKQUFQQ3hCdUFBdGVBUUovSXdCQkVHc2lBaVFBQWtBZ0FCREJBUVJBSUFBb0FnQWhBeUFDUVFBNkFBOGdBU0FEYWlBQ1FROXFFSlFCSUFBZ0FSQzhBUXdCQ3lBQ1FRQTZBQTRnQUNBQmFpQUNRUTVxRUpRQklBQWdBUkRVQVFzZ0FrRVFhaVFBQzNBQkJIOGpBRUVRYXlJRUpBQWdBUVJBSUFBUVhTRUNJQUFRSHlJRElBRnFJUVVnQWlBRGF5QUJTUVJBSUFBZ0FpQUZJQUpySUFNZ0F4RHNCd3NnQXlBQUVCTWlBbW9nQVVFQUVOa0tJQUFnQlJDSEF5QUVRUUE2QUE4Z0FpQUZhaUFFUVE5cUVKUUJDeUFFUVJCcUpBQUxJZ0VCZnlBQUVCOGlBaUFCU1FSQUlBQWdBU0FDYXhDakVROExJQUFnQVJDaUVRdGNBUUYvSXdCQkVHc2lCU1FBSUFVZ0F6WUNEQ0FBSUFRUTdRVWFJQUVRSHlJRElBSkpCRUFRYmdBTElBRVFFeUVCSUFVZ0F5QUNhellDQ0NBQUlBRWdBbW9nQlVFTWFpQUZRUWhxRUtRQktBSUFFTFVHSUFWQkVHb2tBQXM2QVFGL0l3QkJFR3NpQWlRQUlBQVFPeG9EUUNBQUtBSUVFTE1HSUFBZ0FDZ0NCRUVFYWpZQ0JDQUJRWDlxSWdFTkFBc2dBa0VRYWlRQUMya0JBWDhDUUNBQUlBRnJRUUoxSUFKSkJFQURRQ0FBSUFKQmYyb2lBa0VDZENJRGFpQUJJQU5xS0FJQU5nSUFJQUlOQUF3Q0FBc0FDeUFDUlEwQUlBQWhBd05BSUFNZ0FTZ0NBRFlDQUNBRFFRUnFJUU1nQVVFRWFpRUJJQUpCZjJvaUFnMEFDd3NnQUFzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFMkFnQWdBMEVFYWlFRElBSkJmMm9pQWcwQUN3c2dBQXN1QUFOQUlBQW9BZ0JCQVVZTkFBc2dBQ2dDQUVVRVFDQUFRUUUyQWdBZ0FVSFhCQkVGQUNBQVFYODJBZ0FMQ3prQ0FYOEJmaU1BUVJCcklnTWtBQ0FESUFFZ0FoQi9FS0VUSUFNcEF3QWhCQ0FBSUFNcEF3ZzNBd2dnQUNBRU53TUFJQU5CRUdva0FBc3dBUUYvSUFBUWd3c2dBQkRCQVFSQUlBQW9BZ0FoQVNBQUVMWUdHaUFCRUNvZ0FFRUFFT2tCSUFCQkFCRFVBUXNMT0FFQ2Z5QUFLQUlBSUFBb0FnZ2lBa0VCZFdvaEFTQUFLQUlFSVFBZ0FTQUNRUUZ4Qkg4Z0FTZ0NBQ0FBYWlnQ0FBVWdBQXNSQlFBTEpRQURRQ0FCSUFBb0FnaEhCRUFnQUNnQ0VCb2dBQ0FBS0FJSVFYeHFOZ0lJREFFTEN3dGNBUUYvUWREWEZCRHdDa0hRMXhRUW93UkIwTmNVS0FJQVFkVFhGQ2dDQUNBQVFRUnFJZ0VRaFFaQjBOY1VJQUVRTGtIVTF4UWdBRUVJYWhBdVFkRFhGQkJESUFBUUl4QXVJQUFnQUNnQ0JEWUNBRUhRMXhRUUZoRGdDZ3RwQVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBQVFReHFJQVJCREdvZ0F4Q0JBaUFCQkVBZ0FDZ0NFQ0FCRU9FS0lRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFQ2RHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUVDZEdvMkFnQWdCRUVRYWlRQUlBQUxXUUVDZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dRNGdvaUFpQUFUd1JBUWREWEZCQ2lCQ0lBSUFKQkFYWkpCRUFnQVNBQVFRRjBOZ0lJSUFGQkNHb2dBVUVNYWhCU0tBSUFJUUlMSUFGQkVHb2tBQ0FDRHdzUWJnQUxKQUFDUUNBQlFSeExEUUFnQUMwQWNBMEFJQUJCQVRvQWNDQUFEd3NnQVVFQ2RCQW1DMmtCQW44akFFRWdheUlESkFBQ1FDQUFFQnNvQWdBZ0FDZ0NCR3RCQW5VZ0FVOEVRQ0FBSUFFUXBoRU1BUXNnQUJBN0lRSWdBMEVJYWlBQUlBQVFGaUFCYWhESkJTQUFFQllnQWhDeEJpSUNJQUVRMmdvZ0FDQUNFT1VISUFJUXJ3WUxJQU5CSUdva0FBc0pBRUhrekJRUUlCb0xNUUFDUUVId3pCUXRBQUJCQVhFTkFFSHd6QlFRcmdGRkRRQkI1TXdVUWJTL0VoRGpCRUh3ekJRUXJRRUxRZVRNRkFzSkFFSFV6QlFRSUJvTE1RQUNRRUhnekJRdEFBQkJBWEVOQUVIZ3pCUVFyZ0ZGRFFCQjFNd1VRYWkvRWhCcEdrSGd6QlFRclFFTFFkVE1GQXNKQUVIRXpCUVFJQm9MTVFBQ1FFSFF6QlF0QUFCQkFYRU5BRUhRekJRUXJnRkZEUUJCeE13VVFkUytFaERqQkVIUXpCUVFyUUVMUWNUTUZBc0pBRUcwekJRUUlCb0xNUUFDUUVIQXpCUXRBQUJCQVhFTkFFSEF6QlFRcmdGRkRRQkJ0TXdVUWJ5K0VoQnBHa0hBekJRUXJRRUxRYlRNRkFzSkFFR2t6QlFRSUJvTE1RQUNRRUd3ekJRdEFBQkJBWEVOQUVHd3pCUVFyZ0ZGRFFCQnBNd1VRWmkrRWhEakJFR3d6QlFRclFFTFFhVE1GQXNKQUVHVXpCUVFJQm9MTVFBQ1FFR2d6QlF0QUFCQkFYRU5BRUdnekJRUXJnRkZEUUJCbE13VVFZeStFaEJwR2tHZ3pCUVFyUUVMUVpUTUZBc0pBRUdFekJRUUlCb0xNUUFDUUVHUXpCUXRBQUJCQVhFTkFFR1F6QlFRcmdGRkRRQkJoTXdVUWVpOUVoRGpCRUdRekJRUXJRRUxRWVRNRkFzSkFFSDB5eFFRSUJvTE1RQUNRRUdBekJRdEFBQkJBWEVOQUVHQXpCUVFyZ0ZGRFFCQjlNc1VRZHk5RWhCcEdrR0F6QlFRclFFTFFmVExGQXNiQUVINDFCUWhBQU5BSUFCQmRHb1FJQ0lBUWVEVUZFY05BQXNMVWdFQmZ3SkFRZmpVRkMwQUFFRUJjUTBBUWZqVUZCQ3VBVVVOQUVIZzFCUWhBQU5BSUFBUXlnSkJER29pQUVINDFCUkhEUUFMUWZqVUZCQ3RBUXRCNE5RVVFlam9FaEI1UWV6VUZFSDA2QklRZVFzM0FBSkFRZkRMRkMwQUFFRUJjUTBBUWZETEZCQ3VBVVVOQUJERUVVSHN5eFJCNE5RVU5nSUFRZkRMRkJDdEFRdEI3TXNVS0FJQUN4c0FRZGpVRkNFQUEwQWdBRUYwYWhBZ0lnQkJ3TlFVUncwQUN3dFJBUUYvQWtCQjJOUVVMUUFBUVFGeERRQkIyTlFVRUs0QlJRMEFRY0RVRkNFQUEwQWdBQkJPUVF4cUlnQkIyTlFVUncwQUMwSFkxQlFRclFFTFFjRFVGRUhnNkJJUWFFSE0xQlJCNCtnU0VHZ0xOd0FDUUVIb3l4UXRBQUJCQVhFTkFFSG95eFFRcmdGRkRRQVF4eEZCNU1zVVFjRFVGRFlDQUVIb3l4UVFyUUVMUWVUTEZDZ0NBQXNiQUVHdzFCUWhBQU5BSUFCQmRHb1FJQ0lBUVpEU0ZFY05BQXNMeVFJQkEzOGdBaUFDS0FJQUtBSzhBUkVBQUNFQUlBSWdBaWdDQUNnQzFBRVJBQUFoQkFKQUlBQVFGa1VFUUVFQUlRRU1BUXRCQUNFQlFRQWhBZ05BQWtBQ1FDQUFJQUlRRVNnQ0FDSURJQU1vQWdBb0FqQVJBQUFpQTBVTkFDQURJQU1vQWdBb0FvQUJFUUFBUVE1SERRQWdBeUFES0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDSUJFQUFCRElCQTBCQ3lBQUlBSVFFU2dDQUNFRkFrQWdBQ0FDRUJFb0FnQWlBeUFES0FJQUtBSVlFUUFBSWdORkRRQWdBeWdDYUVHeEJFY05BQ0FESUFNb0FnQW9BcndCRVFBQUVMZ0NEUUFnQXlBREtBSUFLQUs4QVJFQUFFRUFFQkVvQWdBaEJRc2dBQ0FCRUJFZ0JUWUNBQ0FFRUxnQ1JRUkFJQVFnQWhBUktBSUFJUU1nQkNBQkVCRWdBellDQUFzZ0FVRUJhaUVCQ3lBQ1FRRnFJZ0lnQUJBV1NRMEFDd3NnQUNBQkVMY0dJQVFRdUFKRkJFQWdCQ0FCRUxjR0MwRUJDNjRDQVFGL0FrQkJzTlFVTFFBQVFRRnhEUUJCc05RVUVLNEJSUTBBUVpEU0ZDRUFBMEFnQUJES0FrRU1haUlBUWJEVUZFY05BQXRCc05RVUVLMEJDMEdRMGhSQjJPUVNFSGxCbk5JVVFmamtFaEI1UWFqU0ZFR2M1UklRZVVHMDBoUkJ0T1VTRUhsQndOSVVRY3psRWhCNVFjelNGRUhjNVJJUWVVSFkwaFJCOE9VU0VIbEI1TklVUVlUbUVoQjVRZkRTRkVHZzVoSVFlVUg4MGhSQnlPWVNFSGxCaU5NVVFlam1FaEI1UVpUVEZFR001eElRZVVHZzB4UkJzT2NTRUhsQnJOTVVRY0RuRWhCNVFialRGRUhRNXhJUWVVSEUweFJCNE9jU0VIbEIwTk1VUWN6bEVoQjVRZHpURkVIdzV4SVFlVUhvMHhSQmdPZ1NFSGxCOU5NVVFaRG9FaEI1UVlEVUZFR2c2QklRZVVHTTFCUkJzT2dTRUhsQm1OUVVRY0RvRWhCNVFhVFVGRUhRNkJJUWVRczNBQUpBUWVETEZDMEFBRUVCY1EwQVFlRExGQkN1QVVVTkFCRExFVUhjeXhSQmtOSVVOZ0lBUWVETEZCQ3RBUXRCM01zVUtBSUFDeHNBUVlEU0ZDRUFBMEFnQUVGMGFoQWdJZ0JCNE04VVJ3MEFDd3V0QWdFQmZ3SkFRWURTRkMwQUFFRUJjUTBBUVlEU0ZCQ3VBVVVOQUVIZ3p4UWhBQU5BSUFBUVRrRU1haUlBUVlEU0ZFY05BQXRCZ05JVUVLMEJDMEhnenhSQjFPTVNFR2hCN004VVFkempFaEJvUWZqUEZFSGw0eElRYUVHRTBCUkI2K01TRUdoQmtOQVVRZkhqRWhCb1FaelFGRUgxNHhJUWFFR28wQlJCK3VNU0VHaEJ0TkFVUWYvakVoQm9RY0RRRkVHRzVCSVFhRUhNMEJSQmtPUVNFR2hCMk5BVVFaamtFaEJvUWVUUUZFR2g1QklRYUVIdzBCUkJxdVFTRUdoQi9OQVVRYTdrRWhCb1FZalJGRUd5NUJJUWFFR1UwUlJCdHVRU0VHaEJvTkVVUWZIakVoQm9RYXpSRkVHNjVCSVFhRUc0MFJSQnZ1UVNFR2hCeE5FVVFjTGtFaEJvUWREUkZFSEc1QklRYUVIYzBSUkJ5dVFTRUdoQjZORVVRYzdrRWhCb1FmVFJGRUhTNUJJUWFBczNBQUpBUWRqTEZDMEFBRUVCY1EwQVFkakxGQkN1QVVVTkFCRE9FVUhVeXhSQjRNOFVOZ0lBUWRqTEZCQ3RBUXRCMU1zVUtBSUFDeHNBUWRqUEZDRUFBMEFnQUVGMGFoQWdJZ0JCc000VVJ3MEFDd3ZLQVFFQmZ3SkFRZGpQRkMwQUFFRUJjUTBBUWRqUEZCQ3VBVVVOQUVHd3poUWhBQU5BSUFBUXlnSkJER29pQUVIWXp4UkhEUUFMUWRqUEZCQ3RBUXRCc000VVFZRGhFaEI1UWJ6T0ZFR2M0UklRZVVISXpoUkJ1T0VTRUhsQjFNNFVRZGpoRWhCNVFlRE9GRUdBNGhJUWVVSHN6aFJCcE9JU0VIbEIrTTRVUWNEaUVoQjVRWVRQRkVIazRoSVFlVUdRenhSQjlPSVNFSGxCbk04VVFZVGpFaEI1UWFqUEZFR1U0eElRZVVHMHp4UkJwT01TRUhsQndNOFVRYlRqRWhCNVFjelBGRUhFNHhJUWVRczNBQUpBUWRETEZDMEFBRUVCY1EwQVFkRExGQkN1QVVVTkFCRFJFVUhNeXhSQnNNNFVOZ0lBUWRETEZCQ3RBUXRCek1zVUtBSUFDeHNBUWFqT0ZDRUFBMEFnQUVGMGFoQWdJZ0JCZ00wVVJ3MEFDd3ZKQVFFQmZ3SkFRYWpPRkMwQUFFRUJjUTBBUWFqT0ZCQ3VBVVVOQUVHQXpSUWhBQU5BSUFBUVRrRU1haUlBUWFqT0ZFY05BQXRCcU00VUVLMEJDMEdBelJSQnFPQVNFR2hCak0wVVFhL2dFaEJvUVpqTkZFRzI0QklRYUVHa3pSUkJ2dUFTRUdoQnNNMFVRY2pnRWhCb1Fiek5GRUhSNEJJUWFFSEl6UlJCMk9BU0VHaEIxTTBVUWVIZ0VoQm9RZURORkVIbDRCSVFhRUhzelJSQjZlQVNFR2hCK00wVVFlM2dFaEJvUVlUT0ZFSHg0QklRYUVHUXpoUkI5ZUFTRUdoQm5NNFVRZm5nRWhCb0N6Y0FBa0JCeU1zVUxRQUFRUUZ4RFFCQnlNc1VFSzRCUlEwQUVOUVJRY1RMRkVHQXpSUTJBZ0JCeU1zVUVLMEJDMEhFeXhRb0FnQUxDd0FnQUVIRXZSSVE0d1FMQ3dBZ0FFRzh2UklRYVJvTEN3QWdBRUdvdlJJUTR3UUxDd0FnQUVHZ3ZSSVFhUm9MRFFBZ0FDQUJRUkJxRU8wQkdnc05BQ0FBSUFGQkRHb1E3UUVhQ3djQUlBQXNBQWtMVndBQ1FDQUJJQUVvQWdBb0FvQUJFUUFBUVE1SERRQWdBU0FCS0FJQUtBSjRFUUFBSWdBZ0FDZ0NBQ2dDSUJFQUFCQ2pCMFVOQUNBQklBRW9BZ0FvQW53UkFBQWlBQ0FBS0FJQUtBSWtFUUFBUVFFUTVBb0xDd2NBSUFBc0FBZ0xDUUFnQUJEbENoQXFDd2tBSUFBUTVnb1FLZ3Z0QXdFSGZ5QUFJUU1EUUFKQUlBY2dBazhnQXlBQlQzSU5BQ0FETEFBQUlnUkIvd0Z4SVFVQ2Z5QUVRUUJPQkVBZ0JVSC8vOE1BU3cwQ0lBTkJBV29NQVFzZ0JVSENBVWtOQVNBRlFkOEJUUVJBSUFFZ0EydEJBa2dOQWlBRExRQUJJZ1JCd0FGeFFZQUJSeUFFUVQ5eElBVkJCblJCd0E5eGNrSC8vOE1BUzNJTkFpQURRUUpxREFFTEFrQUNRQ0FGUWU4QlRRUkFJQUVnQTJ0QkEwZ05CQ0FETFFBQ0lRWWdBeTBBQVNFRUlBVkI3UUZHRFFFZ0JVSGdBVVlFUUNBRVFlQUJjVUdnQVVZTkF3d0ZDeUFFUWNBQmNVR0FBVWNOQkF3Q0N5QUJJQU5yUVFSSUlBVkI5QUZMY2cwRElBTXRBQU1oQmlBRExRQUNJUWdnQXkwQUFTRUVBa0FDUUNBRlFaQithaUlKUVFSTERRQUNRQUpBSUFsQkFXc09CQUlDQWdFQUN5QUVRZkFBYWtIL0FYRkJNRWtOQWd3R0N5QUVRZkFCY1VHQUFVWU5BUXdGQ3lBRVFjQUJjVUdBQVVjTkJBc2dDRUhBQVhGQmdBRkhJQVpCd0FGeFFZQUJSM0lnQmtFL2NTQUlRUVowUWNBZmNTQUZRUkowUVlDQThBQnhJQVJCUDNGQkRIUnljbkpCLy8vREFFdHlEUU1nQTBFRWFnd0NDeUFFUWVBQmNVR0FBVWNOQWdzZ0JrSEFBWEZCZ0FGSElBWkJQM0VnQlVFTWRFR0E0QU54SUFSQlAzRkJCblJ5Y2tILy84TUFTM0lOQVNBRFFRTnFDeUVESUFkQkFXb2hCd3dCQ3dzZ0F5QUFhd3NMQUNBQ0lBTWdCQkRoRVF1NUJBRUdmeUFDSUFBMkFnQWdCU0FETmdJQUEwQWdBaWdDQUNJR0lBRlBCRUJCQUE4TFFRRWhDUUpBQWtBQ1FDQUZLQUlBSWdzZ0JFOE5BQ0FHTEFBQUlnQkIvd0Z4SVFNZ0FFRUFUZ1JBSUFOQi8vL0RBRXNOQTBFQklRQU1BZ3NnQTBIQ0FVa05BaUFEUWQ4QlRRUkFJQUVnQm10QkFrZ05BVUVDSVFrZ0JpMEFBU0lIUWNBQmNVR0FBVWNOQVVFQ0lRQWdCMEUvY1NBRFFRWjBRY0FQY1hJaUEwSC8vOE1BVFEwQ0RBRUxBa0FnQTBIdkFVMEVRQ0FCSUFaclFRTklEUUlnQmkwQUFpRUlJQVl0QUFFaEJ3SkFBa0FnQTBIdEFVY0VRQ0FEUWVBQlJ3MEJJQWRCNEFGeFFhQUJSZzBDREFjTElBZEI0QUZ4UVlBQlJnMEJEQVlMSUFkQndBRnhRWUFCUncwRkN5QUlRY0FCY1VHQUFVWU5BUXdFQ3lBRFFmUUJTdzBESUFFZ0JtdEJCRWdOQVNBR0xRQURJUWdnQmkwQUFpRUtJQVl0QUFFaEJ3SkFBa0FnQTBHUWZtb2lBRUVFU3cwQUFrQUNRQ0FBUVFGckRnUUNBZ0lCQUFzZ0IwSHdBR3BCL3dGeFFUQlBEUVlNQWdzZ0IwSHdBWEZCZ0FGSERRVU1BUXNnQjBIQUFYRkJnQUZIRFFRTElBcEJ3QUZ4UVlBQlJ5QUlRY0FCY1VHQUFVZHlEUU5CQkNFQVFRSWhDU0FJUVQ5eElBcEJCblJCd0I5eElBTkJFblJCZ0lEd0FIRWdCMEUvY1VFTWRISnljaUlEUWYvL3d3QkxEUUVNQWd0QkF5RUFRUUloQ1NBSVFUOXhJQU5CREhSQmdPQURjU0FIUVQ5eFFRWjBjbklpQTBILy84TUFUUTBCQ3lBSkR3c2dDeUFETmdJQUlBSWdBQ0FHYWpZQ0FDQUZJQVVvQWdCQkJHbzJBZ0FNQVFzTFFRSUxUUUFqQUVFUWF5SUFKQUFnQUNBQ05nSU1JQUFnQlRZQ0NDQUNJQU1nQUVFTWFpQUZJQVlnQUVFSWFoRGpFU0VCSUFRZ0FDZ0NERFlDQUNBSElBQW9BZ2cyQWdBZ0FFRVFhaVFBSUFFTDFnTUJBWDhnQWlBQU5nSUFJQVVnQXpZQ0FDQUNLQUlBSVFNQ1FBTkFJQU1nQVU4RVFFRUFJUVlNQWd0QkFpRUdJQU1vQWdBaUFFSC8vOE1BU3lBQVFZQndjVUdBc0FOR2NnMEJBa0FDUUNBQVFmOEFUUVJBUVFFaEJpQUVJQVVvQWdBaUEydEJBVWdOQkNBRklBTkJBV28yQWdBZ0F5QUFPZ0FBREFFTElBQkIvdzlOQkVBZ0JDQUZLQUlBSWdOclFRSklEUUlnQlNBRFFRRnFOZ0lBSUFNZ0FFRUdka0hBQVhJNkFBQWdCU0FGS0FJQUlnTkJBV28yQWdBZ0F5QUFRVDl4UVlBQmNqb0FBQXdCQ3lBRUlBVW9BZ0FpQTJzaEJpQUFRZi8vQTAwRVFDQUdRUU5JRFFJZ0JTQURRUUZxTmdJQUlBTWdBRUVNZGtIZ0FYSTZBQUFnQlNBRktBSUFJZ05CQVdvMkFnQWdBeUFBUVFaMlFUOXhRWUFCY2pvQUFDQUZJQVVvQWdBaUEwRUJhallDQUNBRElBQkJQM0ZCZ0FGeU9nQUFEQUVMSUFaQkJFZ05BU0FGSUFOQkFXbzJBZ0FnQXlBQVFSSjJRZkFCY2pvQUFDQUZJQVVvQWdBaUEwRUJhallDQUNBRElBQkJESFpCUDNGQmdBRnlPZ0FBSUFVZ0JTZ0NBQ0lEUVFGcU5nSUFJQU1nQUVFR2RrRS9jVUdBQVhJNkFBQWdCU0FGS0FJQUlnTkJBV28yQWdBZ0F5QUFRVDl4UVlBQmNqb0FBQXNnQWlBQ0tBSUFRUVJxSWdNMkFnQU1BUXNMUVFFUEN5QUdDeU1BSUFBdEFBUUVRQ0FBS0FJQUdpQUJRUkJxRUtrR0N5QUJCRUFnQUNnQ0FCb0xDMDBBSXdCQkVHc2lBQ1FBSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBaUFESUFCQkRHb2dCU0FHSUFCQkNHb1E1UkVoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkMva0RBUWQvSUFBaEF3TkFBa0FnQmlBQ1R5QURJQUZQY2cwQUlBTXRBQUFpQkVILy84TUFTdzBBQW44Z0EwRUJhaUFFUVJoMFFSaDFRUUJPRFFBYUlBUkJ3Z0ZKRFFFZ0JFSGZBVTBFUUNBQklBTnJRUUpJRFFJZ0F5MEFBU0lGUWNBQmNVR0FBVWNnQlVFL2NTQUVRUVowUWNBUGNYSkIvLy9EQUV0eURRSWdBMEVDYWd3QkN3SkFBa0FnQkVIdkFVMEVRQ0FCSUFOclFRTklEUVFnQXkwQUFpRUhJQU10QUFFaEJTQUVRZTBCUmcwQklBUkI0QUZHQkVBZ0JVSGdBWEZCb0FGR0RRTU1CUXNnQlVIQUFYRkJnQUZIRFFRTUFnc2dBaUFHYTBFQ1NTQUVRZlFCUzNJZ0FTQURhMEVFU0hJTkF5QURMUUFESVFjZ0F5MEFBaUVJSUFNdEFBRWhCUUpBQWtBZ0JFR1FmbW9pQ1VFRVN3MEFBa0FDUUNBSlFRRnJEZ1FDQWdJQkFBc2dCVUh3QUdwQi93RnhRVEJKRFFJTUJnc2dCVUh3QVhGQmdBRkdEUUVNQlFzZ0JVSEFBWEZCZ0FGSERRUUxJQWhCd0FGeFFZQUJSeUFIUWNBQmNVR0FBVWR5SUFkQlAzRWdDRUVHZEVIQUgzRWdCRUVTZEVHQWdQQUFjU0FGUVQ5eFFReDBjbkp5UWYvL3d3QkxjZzBESUFaQkFXb2hCaUFEUVFScURBSUxJQVZCNEFGeFFZQUJSdzBDQ3lBSFFjQUJjVUdBQVVjZ0IwRS9jU0FFUVF4MFFZRGdBM0VnQlVFL2NVRUdkSEp5UWYvL3d3QkxjZzBCSUFOQkEyb0xJUU1nQmtFQmFpRUdEQUVMQ3lBRElBQnJDd3NBSUFJZ0F5QUVFT2dSQzU0RkFRVi9JQUlnQURZQ0FDQUZJQU0yQWdBQ1FBTkFJQUlvQWdBaUFDQUJUd1JBUVFBaENRd0NDMEVCSVFrZ0JTZ0NBQ0lISUFSUERRRUNRQ0FBTFFBQUlnTkIvLy9EQUVzTkFDQUNBbjhnQTBFWWRFRVlkVUVBVGdSQUlBY2dBenNCQUNBQVFRRnFEQUVMSUFOQndnRkpEUUVnQTBIZkFVMEVRQ0FCSUFCclFRSklEUVFnQUMwQUFTSUdRY0FCY1VHQUFVY05Ba0VDSVFrZ0JrRS9jU0FEUVFaMFFjQVBjWElpQTBILy84TUFTdzBFSUFjZ0F6c0JBQ0FBUVFKcURBRUxJQU5CN3dGTkJFQWdBU0FBYTBFRFNBMEVJQUF0QUFJaENDQUFMUUFCSVFZQ1FBSkFJQU5CN1FGSEJFQWdBMEhnQVVjTkFTQUdRZUFCY1VHZ0FVY05CUXdDQ3lBR1FlQUJjVUdBQVVjTkJBd0JDeUFHUWNBQmNVR0FBVWNOQXdzZ0NFSEFBWEZCZ0FGSERRSkJBaUVKSUFoQlAzRWdCa0UvY1VFR2RDQURRUXgwY25JaUEwSC8vd054UWYvL3d3QkxEUVFnQnlBRE93RUFJQUJCQTJvTUFRc2dBMEgwQVVzTkFTQUJJQUJyUVFSSURRTWdBQzBBQXlFSUlBQXRBQUloQmlBQUxRQUJJUUFDUUFKQUlBTkJrSDVxSWdwQkJFc05BQUpBQWtBZ0NrRUJhdzRFQWdJQ0FRQUxJQUJCOEFCcVFmOEJjVUV3VHcwRURBSUxJQUJCOEFGeFFZQUJSdzBEREFFTElBQkJ3QUZ4UVlBQlJ3MENDeUFHUWNBQmNVR0FBVWNnQ0VIQUFYRkJnQUZIY2cwQklBUWdCMnRCQkVnTkEwRUNJUWtnQ0VFL2NTSUlJQVpCQm5RaUNrSEFIM0VnQUVFTWRFR0E0QTl4SUFOQkIzRWlBMEVTZEhKeWNrSC8vOE1BU3cwRElBY2dBRUVDZENJQVFjQUJjU0FEUVFoMGNpQUdRUVIyUVFOeElBQkJQSEZ5Y2tIQS93QnFRWUN3QTNJN0FRQWdCU0FIUVFKcU5nSUFJQWNnQ2tIQUIzRWdDSEpCZ0xnRGNqc0JBaUFDS0FJQVFRUnFDellDQUNBRklBVW9BZ0JCQW1vMkFnQU1BUXNMUVFJUEN5QUpDMDBBSXdCQkVHc2lBQ1FBSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBaUFESUFCQkRHb2dCU0FHSUFCQkNHb1E2aEVoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkM3OEZBUUovSUFJZ0FEWUNBQ0FGSUFNMkFnQWdBaWdDQUNFR0FrQUNRQU5BSUFZZ0FVOEVRRUVBSVFBTUF3dEJBaUVBSUFZdkFRQWlBMEgvLzhNQVN3MENBa0FDUUNBRFFmOEFUUVJBUVFFaEFDQUVJQVVvQWdBaUJtdEJBVWdOQlNBRklBWkJBV28yQWdBZ0JpQURPZ0FBREFFTElBTkIvdzlOQkVBZ0JDQUZLQUlBSWdCclFRSklEUVFnQlNBQVFRRnFOZ0lBSUFBZ0EwRUdka0hBQVhJNkFBQWdCU0FGS0FJQUlnQkJBV28yQWdBZ0FDQURRVDl4UVlBQmNqb0FBQXdCQ3lBRFFmK3ZBMDBFUUNBRUlBVW9BZ0FpQUd0QkEwZ05CQ0FGSUFCQkFXbzJBZ0FnQUNBRFFReDJRZUFCY2pvQUFDQUZJQVVvQWdBaUFFRUJhallDQUNBQUlBTkJCblpCUDNGQmdBRnlPZ0FBSUFVZ0JTZ0NBQ0lBUVFGcU5nSUFJQUFnQTBFL2NVR0FBWEk2QUFBTUFRc2dBMEgvdHdOTkJFQkJBU0VBSUFFZ0JtdEJCRWdOQlNBR0x3RUNJZ2RCZ1BnRGNVR0F1QU5IRFFJZ0JDQUZLQUlBYTBFRVNBMEZJQWRCL3dkeElBTkJDblJCZ1BnRGNTQURRY0FIY1NJQVFRcDBjbkpCZ0lBRWFrSC8vOE1BU3cwQ0lBSWdCa0VDYWpZQ0FDQUZJQVVvQWdBaUJrRUJhallDQUNBR0lBQkJCblpCQVdvaUFFRUNka0h3QVhJNkFBQWdCU0FGS0FJQUlnWkJBV28yQWdBZ0JpQUFRUVIwUVRCeElBTkJBblpCRDNGeVFZQUJjam9BQUNBRklBVW9BZ0FpQUVFQmFqWUNBQ0FBSUFkQkJuWkJEM0VnQTBFRWRFRXdjWEpCZ0FGeU9nQUFJQVVnQlNnQ0FDSUFRUUZxTmdJQUlBQWdCMEUvY1VHQUFYSTZBQUFNQVFzZ0EwR0F3QU5KRFFRZ0JDQUZLQUlBSWdCclFRTklEUU1nQlNBQVFRRnFOZ0lBSUFBZ0EwRU1ka0hnQVhJNkFBQWdCU0FGS0FJQUlnQkJBV28yQWdBZ0FDQURRUVoyUVQ5eFFZQUJjam9BQUNBRklBVW9BZ0FpQUVFQmFqWUNBQ0FBSUFOQlAzRkJnQUZ5T2dBQUN5QUNJQUlvQWdCQkFtb2lCallDQUF3QkN3dEJBZzhMUVFFUEN5QUFDMDBBSXdCQkVHc2lBQ1FBSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBaUFESUFCQkRHb2dCU0FHSUFCQkNHb1E3QkVoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkN4VUFJQUFvQWdnaUFFVUVRRUVCRHdzZ0FCRG9DZ3RGQVFGL0l3QkJFR3NpQkNRQUlBUWdBellDRENBRVFRaHFJQVJCREdvUTlRSWhBMEVBSUFBZ0FTQUNRYnpKRkNBQ0d4RElCaUVBSUFNUTlBSWdCRUVRYWlRQUlBQUxXd0VCZnlNQVFSQnJJZ01rQUNBQUlBRVExd0lpQUNnQ0FFRXdFSlFDSUFOQkNHb2dBRUVBRU1NQkVKRUJJZ0FvQWdCQkVHb2lBU0FDRVA4QkdpQUJRUkJxSUFKQkVHb1Evd0VhSUFBUUpVRUJPZ0FFSUFOQkVHb2tBQXRaQVFSL0EwQUNRQ0FDSUFOR0lBWWdCRTl5RFFBZ0FpQURJQUpySUFFZ0FDZ0NDQkR2RVNJSFFRSnFJZ2hCQWswRVFFRUJJUWNnQ0VFQ2F3MEJDeUFHUVFGcUlRWWdCU0FIYWlFRklBSWdCMm9oQWd3QkN3c2dCUXRGQVFKL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQlFRaHFJQUZCREdvUTlRSWhBQ01BUVJCcklnSWtBQ0FDUVJCcUpBQkJBQ0VDSUFBUTlBSWdBVUVRYWlRQUlBSUxMUUVCZjBGL0lRRUNRQ0FBS0FJSUVQSVJCSDhnQVFVZ0FDZ0NDQ0lBRFFGQkFRc1BDeUFBRU9nS1FRRkdDNUlCQVFGL0l3QkJFR3NpQlNRQUlBUWdBallDQUFKL1FRSWdCVUVNYWtFQUlBQW9BZ2dRN3djaUFFRUJha0VDU1EwQUdrRUJJQUJCZjJvaUFTQURJQVFvQWdCclN3MEFHaUFGUVF4cUlRSURmeUFCQkg4Z0FpMEFBQ0VBSUFRZ0JDZ0NBQ0lEUVFGcU5nSUFJQU1nQURvQUFDQUJRWDlxSVFFZ0FrRUJhaUVDREFFRlFRQUxDd3NoQWlBRlFSQnFKQUFnQWd0QUFRRi9Jd0JCRUdzaUJpUUFJQVlnQlRZQ0RDQUdRUWhxSUFaQkRHb1E5UUloQlNBQUlBRWdBaUFESUFRUXBSTWhBQ0FGRVBRQ0lBWkJFR29rQUNBQUM3OERBUU4vSXdCQkVHc2lDU1FBSUFJaENBTkFBa0FnQXlBSVJnUkFJQU1oQ0F3QkN5QUlMUUFBUlEwQUlBaEJBV29oQ0F3QkN3c2dCeUFGTmdJQUlBUWdBallDQUFOQUFrQUNmd0pBSUFVZ0JrWWdBaUFEUm5JTkFDQUpJQUVwQWdBM0F3Z0NRQUpBQWtBQ1FDQUZJQVFnQ0NBQ2F5QUdJQVZyUVFKMUlBRWdBQ2dDQ0JEMUVTSUtRWDlHQkVBRFFBSkFJQWNnQlRZQ0FDQUNJQVFvQWdCR0RRQUNRQ0FGSUFJZ0NDQUNheUFKUVFocUlBQW9BZ2dRNlFvaUJVRUNhaUlCUVFKTERRQkJBU0VGQWtBZ0FVRUJhdzRDQUFFSEN5QUVJQUkyQWdBTUJBc2dBaUFGYWlFQ0lBY29BZ0JCQkdvaEJRd0JDd3NnQkNBQ05nSUFEQVVMSUFjZ0J5Z0NBQ0FLUVFKMGFpSUZOZ0lBSUFVZ0JrWU5BeUFFS0FJQUlRSWdBeUFJUmdSQUlBTWhDQXdJQ3lBRklBSkJBU0FCSUFBb0FnZ1E2UXBGRFFFTFFRSU1CQXNnQnlBSEtBSUFRUVJxTmdJQUlBUWdCQ2dDQUVFQmFpSUNOZ0lBSUFJaENBTkFJQU1nQ0VZRVFDQURJUWdNQmdzZ0NDMEFBRVVOQlNBSVFRRnFJUWdNQUFBTEFBc2dCQ0FDTmdJQVFRRU1BZ3NnQkNnQ0FDRUNDeUFDSUFOSEN5RUlJQWxCRUdva0FDQUlEd3NnQnlnQ0FDRUZEQUFBQ3dBTFBnRUJmeU1BUVJCcklnVWtBQ0FGSUFRMkFnd2dCVUVJYWlBRlFReHFFUFVDSVFRZ0FDQUJJQUlnQXhDbUV5RUFJQVFROUFJZ0JVRVFhaVFBSUFBTGZBRUNmeU1BUVNCcklnSWtBQ0FDUVFocUlBQWdBUkR3RVNBQUlBSkJCR29nQWlnQ0NFRVFhaERzQ2lFQklBQWdBaWdDQkNBQklBSW9BZ2dRcEFRZ0FrRVlhaUFDUVFocUVGOFFNU0VESUFKQkNHb2lBQ2dDQUNFQklBQkJBRFlDQUNBQkJFQWdBQkFsSUFFUTVoRUxJQU1vQWdBYUlBSkJJR29rQUF2YUF3RUZmeU1BUVJCcklna2tBQ0FDSVFnRFFBSkFJQU1nQ0VZRVFDQURJUWdNQVFzZ0NDZ0NBRVVOQUNBSVFRUnFJUWdNQVFzTElBY2dCVFlDQUNBRUlBSTJBZ0JCQVNFS0EwQUNRQUpBSUFVZ0JrWWdBaUFEUm5JRWZ5QUNCU0FKSUFFcEFnQTNBd2dDUUFKQUFrQWdCU0FFSUFnZ0FtdEJBblVnQmlBRmF5QUFLQUlJRVBjUklndEJBV29pREVFQlRRUkFJQXhCQVd0RkRRVWdCeUFGTmdJQUEwQUNRQ0FDSUFRb0FnQkdEUUFnQlNBQ0tBSUFJQUFvQWdnUTd3Y2lBVUYvUmcwQUlBY2dCeWdDQUNBQmFpSUZOZ0lBSUFKQkJHb2hBZ3dCQ3dzZ0JDQUNOZ0lBREFFTElBY2dCeWdDQUNBTGFpSUZOZ0lBSUFVZ0JrWU5BaUFESUFoR0JFQWdCQ2dDQUNFQ0lBTWhDQXdIQ3lBSlFRUnFRUUFnQUNnQ0NCRHZCeUlJUVg5SERRRUxRUUloQ2d3REN5QUpRUVJxSVFVZ0NDQUdJQWNvQWdCclN3UkFEQU1MQTBBZ0NBUkFJQVV0QUFBaEFpQUhJQWNvQWdBaUMwRUJhallDQUNBTElBSTZBQUFnQ0VGL2FpRUlJQVZCQVdvaEJRd0JDd3NnQkNBRUtBSUFRUVJxSWdJMkFnQWdBaUVJQTBBZ0F5QUlSZ1JBSUFNaENBd0ZDeUFJS0FJQVJRMEVJQWhCQkdvaENBd0FBQXNBQ3lBRUtBSUFDeUFEUnlFS0N5QUpRUkJxSkFBZ0NnOExJQWNvQWdBaEJRd0FBQXNBQ3drQUlBQVE5d29RS2dzM0FDTUFRUkJySWdBa0FDQUFJQVEyQWd3Z0FDQURJQUpyTmdJSUlBQkJER29nQUVFSWFoQ2tBU2dDQUNFQklBQkJFR29rQUNBQkN6UUFBMEFnQVNBQ1JrVUVRQ0FFSUFFc0FBQWlBQ0FESUFCQmYwb2JPZ0FBSUFSQkFXb2hCQ0FCUVFGcUlRRU1BUXNMSUFJTERBQWdBU0FDSUFGQmYwb2JDeW9BQTBBZ0FTQUNSa1VFUUNBRElBRXRBQUE2QUFBZ0EwRUJhaUVESUFGQkFXb2hBUXdCQ3dzZ0FndEFBQU5BSUFFZ0FrY0VRQ0FCSUFFc0FBQWlBRUVBVGdSL1FiQ3RFaWdDQUNBQkxBQUFRUUowYWlnQ0FBVWdBQXM2QUFBZ0FVRUJhaUVCREFFTEN5QUNDeWNBSUFGQkFFNEVmMEd3clJJb0FnQWdBVUgvQVhGQkFuUnFLQUlBQlNBQkMwRVlkRUVZZFF0QUFBTkFJQUVnQWtjRVFDQUJJQUVzQUFBaUFFRUFUZ1IvUWFDaEVpZ0NBQ0FCTEFBQVFRSjBhaWdDQUFVZ0FBczZBQUFnQVVFQmFpRUJEQUVMQ3lBQ0N5Y0FJQUZCQUU0RWYwR2dvUklvQWdBZ0FVSC9BWEZCQW5ScUtBSUFCU0FCQzBFWWRFRVlkUXNKQUNBQUVPc0tFQ29MTlFBRFFDQUJJQUpHUlFSQUlBUWdBU2dDQUNJQUlBTWdBRUdBQVVrYk9nQUFJQVJCQVdvaEJDQUJRUVJxSVFFTUFRc0xJQUlMRXdBZ0FTQUNJQUZCZ0FGSkcwRVlkRUVZZFFzcUFBTkFJQUVnQWtaRkJFQWdBeUFCTEFBQU5nSUFJQU5CQkdvaEF5QUJRUUZxSVFFTUFRc0xJQUlMUVFBRFFDQUJJQUpIQkVBZ0FTQUJLQUlBSWdCQi93Qk5CSDlCc0swU0tBSUFJQUVvQWdCQkFuUnFLQUlBQlNBQUN6WUNBQ0FCUVFScUlRRU1BUXNMSUFJTEhnQWdBVUgvQUUwRWYwR3dyUklvQWdBZ0FVRUNkR29vQWdBRklBRUxDMEVBQTBBZ0FTQUNSd1JBSUFFZ0FTZ0NBQ0lBUWY4QVRRUi9RYUNoRWlnQ0FDQUJLQUlBUVFKMGFpZ0NBQVVnQUFzMkFnQWdBVUVFYWlFQkRBRUxDeUFDQ3g0QUlBRkIvd0JOQkg5Qm9LRVNLQUlBSUFGQkFuUnFLQUlBQlNBQkN3dEZBQUpBQTBBZ0FpQURSZzBCQWtBZ0FpZ0NBRUgvQUVzTkFFR2NteElvQWdBZ0FpZ0NBRUVCZEdvdkFRQWdBWEZGRFFBZ0FrRUVhaUVDREFFTEN5QUNJUU1MSUFNTFJRQURRQUpBSUFJZ0EwY0VmeUFDS0FJQVFmOEFTdzBCUVp5YkVpZ0NBQ0FDS0FJQVFRRjBhaThCQUNBQmNVVU5BU0FDQlNBREN3OExJQUpCQkdvaEFnd0FBQXNBQzBZQUEwQWdBU0FDUndSQUlBTWdBU2dDQUVIL0FFMEVmMEdjbXhJb0FnQWdBU2dDQUVFQmRHb3ZBUUFGUVFBTE93RUFJQU5CQW1vaEF5QUJRUVJxSVFFTUFRc0xJQUlMSkFBZ0FrSC9BRTBFZjBHY214SW9BZ0FnQWtFQmRHb3ZBUUFnQVhGQkFFY0ZRUUFMQ3cwQUlBQW9BZ0FvQWdBUXJCRUxGQUFnQUFSQUlBQWdBQ2dDQUNnQ0JCRUZBQXNMTlFFQmZ5TUFRUkJySWdJa0FDQUFLQUlBUVg5SEJFQWdBaUFDUVFocUlBRVFpZ29RTVJvZ0FDQUNFS2tSQ3lBQ1FSQnFKQUFMSHdBZ0FBSi9RWURMRkVHQXl4UW9BZ0JCQVdvaUFEWUNBQ0FBQ3pZQ0JBcytBQUpBUWZ6S0ZDMEFBRUVCY1EwQVFmektGQkN1QVVVTkFFSDB5aFFROGdvUXVBWkIrTW9VUWZUS0ZEWUNBRUg4eWhRUXJRRUxRZmpLRkNnQ0FBdU5BUUVDZnlNQVFTQnJJZ0lrQUFKQVFkRFhGQkJES0FJQVFkVFhGQ2dDQUd0QkFuVWdBRThFUUNBQUVQVUtEQUVMUWREWEZCQ2pCQ0VCSUFKQkNHcEIwTmNVRUJZZ0FHb1FzQkZCME5jVUVCWWdBUkN2RVNJQklBQVEyZ29nQVJDdUVTQUJJQUVvQWdRUXJSRWdBU2dDQUFSQUlBRW9BaEFnQVNnQ0FDQUJFSWdERU44S0N3c2dBa0VnYWlRQUN3a0FJQUFROFFvUUtndE1BUUYvUWREWEZCQVdJZ0VnQUVrRVFDQUFJQUZyRUpRU0R3c2dBU0FBU3dSQVFkRFhGQ2dDQUNBQVFRSjBhaUVBUWREWEZCQVdJUUZCME5jVUlBQVEzZ3BCME5jVUlBRVE4d29MQzBBQkFuOGpBRUVRYXlJQ0pBQWdBQ0FDUVFScUlBRkJFR29RN0FvaEF5QUFJQUlvQWdRZ0F5QUJFS1FFSUFKQkNHb2dBUkF4S0FJQUdpQUNRUkJxSkFBTE5BQkJrTlVVRUpnQlFaelZGRUVBT2dBQVFaalZGRUVBTmdJQVFaRFZGRUgwdXhJMkFnQkJtTlVVUVp5YkVpZ0NBRFlDQUF0Q0FRRi9FT0lLUVJ4SkJFQVFiZ0FMUWREWEZFSFExeFFRb3dSQkhCRGhDaUlBTmdJQVFkVFhGQ0FBTmdJQVFkRFhGQkJESUFCQjhBQnFOZ0lBUVFBUTRBb0xPUUVCZnlNQVFSQnJJZ0FrQUVIUTF4UkNBRGNEQUNBQVFRQTJBZ3hCNE5jVUlBQkJER29RbFFOQjROZ1VRUUE2QUFBZ0FFRVFhaVFBQzVRSUFRRi9RY0RYRkJDWUFVSEExeFJCNExzU05nSUFFSm9TRUprU1FSd1E5UXBCOE5nVVFkVzdFaEJwR2tIUTF4UVFGaUVBUWREWEZCRDBDa0hRMXhRZ0FCRHpDa0dBMVJRUW1BRkJnTlVVUVpqSUVqWUNBRUdBMVJSQndNa1VFSmNCRUp3QlFZalZGQkNZQVVHSTFSUkJ1TWdTTmdJQVFZalZGRUhJeVJRUWx3RVFuQUVRbUJKQmtOVVVRWXpMRkJDWEFSQ2NBVUdnMVJRUW1BRkJvTlVVUWFUQUVqWUNBRUdnMVJSQmhNc1VFSmNCRUp3QlFhalZGQkNZQVVHbzFSUkJ1TUVTTmdJQVFhalZGRUdVeXhRUWx3RVFuQUZCc05VVUVKZ0JRYkRWRkVHb3ZCSTJBZ0JCdU5VVUVIODJBZ0JCc05VVVFaekxGQkNYQVJDY0FVSEExUlFRbUFGQndOVVVRY3pDRWpZQ0FFSEExUlJCcE1zVUVKY0JFSndCUWNqVkZCRHhCMEhJMVJSQnJNc1VFSmNCRUp3QlFkRFZGQkNZQVVIWTFSUkJydGdBT3dFQVFkRFZGRUhZdkJJMkFnQkIzTlVVRUU0YVFkRFZGRUcweXhRUWx3RVFuQUZCOE5VVUVKZ0JRZmpWRkVLdWdJQ0F3QVUzQWdCQjhOVVVRWUM5RWpZQ0FFR0ExaFFRVGhwQjhOVVVRYnpMRkJDWEFSQ2NBVUdRMWhRUW1BRkJrTllVUWRqSUVqWUNBRUdRMWhSQjBNa1VFSmNCRUp3QlFaaldGQkNZQVVHWTFoUkJ6TW9TTmdJQVFaaldGRUhZeVJRUWx3RVFuQUZCb05ZVUVKZ0JRYURXRkVHZ3pCSTJBZ0JCb05ZVVFlREpGQkNYQVJDY0FVR28xaFFRbUFGQnFOWVVRWWpPRWpZQ0FFR28xaFJCNk1rVUVKY0JFSndCUWJEV0ZCQ1lBVUd3MWhSQjROVVNOZ0lBUWJEV0ZFR1F5aFFRbHdFUW5BRkJ1TllVRUpnQlFialdGRUgwMWhJMkFnQkJ1TllVUVpqS0ZCQ1hBUkNjQVVIQTFoUVFtQUZCd05ZVVFlalhFallDQUVIQTFoUkJvTW9VRUpjQkVKd0JRY2pXRkJDWUFVSEkxaFJCM05nU05nSUFRY2pXRkVHb3loUVFsd0VRbkFGQjBOWVVFSmdCUWREV0ZFSFEyUkkyQWdCQjBOWVVRYkRLRkJDWEFSQ2NBVUhZMWhRUW1BRkIyTllVUWZUYUVqWUNBRUhZMWhSQnVNb1VFSmNCRUp3QlFlRFdGQkNZQVVIZzFoUkJtTndTTmdJQVFlRFdGRUhBeWhRUWx3RVFuQUZCNk5ZVUVKZ0JRZWpXRkVHODNSSTJBZ0JCNk5ZVVFjaktGQkNYQVJDY0FVSHcxaFFRbUFGQitOWVVRY3pwRWpZQ0FFSHcxaFJCME04U05nSUFRZmpXRkVHQTBCSTJBZ0JCOE5ZVVFmREpGQkNYQVJDY0FVR0ExeFFRbUFGQmlOY1VRZkRwRWpZQ0FFR0ExeFJCMk5FU05nSUFRWWpYRkVHSTBoSTJBZ0JCZ05jVVFmakpGQkNYQVJDY0FVR1ExeFFRbUFGQm1OY1VFTjBLUVpEWEZFSEUweEkyQWdCQmtOY1VRWURLRkJDWEFSQ2NBVUdnMXhRUW1BRkJxTmNVRU4wS1FhRFhGRUhnMUJJMkFnQkJvTmNVUVlqS0ZCQ1hBUkNjQVVHdzF4UVFtQUZCc05jVVFlRGVFallDQUVHdzF4UkIwTW9VRUpjQkVKd0JRYmpYRkJDWUFVRzQxeFJCMk44U05nSUFRYmpYRkVIWXloUVFsd0VRbkFFTDJ3RUJBMzhqQUVHZ0FXc2lCQ1FBSUFRZ0FUWUNtQUVnQkVHUUFXb2hCUUpBQTBBZ0JrRUNSaUFDSUFOUGNrVUVRQ0FFSUFJMkFnZ2dBQ0FFUVpBQmFpQUNJQUpCSUdvZ0F5QURJQUpyUVNCS0d5QUVRUWhxSUFSQkVHb2dCU0FFUVF4cUlBQW9BZ0FvQWhBUkRnQWlCa0VDUmcwQ0lBUkJFR29oQVNBRUtBSUlJQUpHRFFJRFFDQUJJQVFvQWd4UEJFQWdCQ2dDQ0NFQ0RBTUZJQVFnQVNnQ0FEWUNCQ0FFS0FLWUFTQUVRUVJxS0FJQUVMUUdJQUZCQkdvaEFRd0JDd0FBQ3dBTEN5QUVLQUtZQVJvZ0JFR2dBV29rQUE4TEVJSUJBQXUyQVFFRGZ5TUFRVUJxSWdRa0FDQUVJQUUyQWpnZ0JFRXdhaUVGQWtBRFFDQUdRUUpHSUFJZ0EwOXlSUVJBSUFRZ0FqWUNDQ0FBSUFSQk1Hb2dBaUFESUFSQkNHb2dCRUVRYWlBRklBUkJER29nQUNnQ0FDZ0NEQkVPQUNJR1FRSkdEUUlnQkVFUWFpRUJJQVFvQWdnZ0FrWU5BZ05BSUFFZ0JDZ0NERThFUUNBRUtBSUlJUUlNQXdVZ0JFRTRhaUFCRVBnS0lBRkJBV29oQVF3QkN3QUFDd0FMQ3lBRUtBSTRHaUFFUVVCckpBQVBDeENDQVFBTGhRRUFJd0JCSUdzaUFTUUFJQUZCRUdvUVRpRUVBbjhnQVVFSWFpSUNFUEVISUFKQnRNUVNOZ0lBSUFJTElBUVFZU0FGRUJNZ0JSQVRJQVVRSDBFQ2RHb1FuUklnQkJBVElRSWdBQkRLQWlFREFuOGdBVUVJYWlJQUVQRUhJQUJCbE1VU05nSUFJQUFMSUFNUVlTQUNJQUlRb0FFZ0Ftb1FuQklnQkJBZ0dpQUJRU0JxSkFBTFN3QWpBRUVnYXlJQkpBQWdBVUVRYWhCT0lnTVFZU0FGRUJNZ0JSQVRJQVVRSDJvUStRb2dBeEFUSVFJZ0FCQk9FR0VnQWlBQ0VLQUJJQUpxRVBrS0lBTVFJQm9nQVVFZ2FpUUFDejRCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFCQkVHb1FtUUVhSUFJb0FnZ2dBUkRvQWlBQkVFTWhBQ0FDS0FJTUlBQVE2QUlnQWtFUWFpUUFDMUVCQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lBSUFNZ0FEWUNDQU5BSUFOQkNHb2dBeEFlQkVBZ0FpQURLQUlJS0FJQU5nSUFJQUpCQkdvaEFpQURRUWhxRUdZYURBRUxDeUFEUVJCcUpBQWdBZ3RSQVFGL0l3QkJFR3NpQXlRQUlBTWdBVFlDQUNBRElBQTJBZ2dEUUNBRFFRaHFJQU1RSGdSQUlBSWdBeWdDQ0MwQUFEb0FBQ0FDUVFGcUlRSWdBMEVJYWhEakF3d0JDd3NnQTBFUWFpUUFJQUlMa3dNQkIzOGpBRUh3QTJzaUFDUUFJQUJCNkFOcUlBTVFYQ0FBUWVnRGFoQ0pBaUVLSUFJQ2Z5QUZFQjhFUUNBRlFRQVF3Z1lvQWdBZ0NrRXRFSjBDUmlFTEN5QUxDeUFBUWVnRGFpQUFRZUFEYWlBQVFkd0RhaUFBUWRnRGFpQUFRY2dEYWhCT0lnd2dBRUc0QTJvUXlnSWlDQ0FBUWFnRGFoREtBaUlISUFCQnBBTnFFUDBLSUFCQjFBUTJBaEFnQUVFSWFrRUFJQUJCRUdvUW5nRWhDUUovSUFVUUh5QUFLQUtrQTBvRVFDQUZFQjhoQWlBQUtBS2tBeUVHSUFjUUh5QUNJQVpyUVFGMGFrRUJhZ3dCQ3lBSEVCOUJBbW9MSVFZZ0FFRVFhaUVDQWtBZ0NCQWZJQVpxSUFBb0FxUURhaUlHUWVVQVNRMEFJQWtnQmtFQ2RCQ2JBUkRHQVNBSktBSUFJZ0lOQUJDQ0FRQUxJQUlnQUVFRWFpQUFJQU1vQWdRZ0JSQVRJQVVRRXlBRkVCOUJBblJxSUFvZ0N5QUFRZUFEYWlBQUtBTGNBeUFBS0FMWUF5QU1JQWdnQnlBQUtBS2tBeEQ4Q2lBQklBSWdBQ2dDQkNBQUtBSUFJQU1nQkJDK0F5RUJJQWtRblFFZ0J4QWdHaUFJRUNBYUlBd1FJQm9nQUVIb0Eyb1FXU0FBUWZBRGFpUUFJQUVMNUFRQkMzOGpBRUd3Q0dzaUFDUUFJQUFnQlRjREVDQUFJQVkzQXhnZ0FDQUFRY0FIYWpZQ3ZBY2dBRUhBQjJwQjVBQkJ6N3NTSUFCQkVHb1FKeUVISUFCQjFBUTJBcUFFSUFCQm1BUnFRUUFnQUVHZ0JHb1FuZ0VoRGlBQVFkUUVOZ0tnQkNBQVFaQUVha0VBSUFCQm9BUnFFSjRCSVFvZ0FFR2dCR29oQ0FKQUlBZEI1QUJQQkVBUWZ5RUhJQUFnQlRjREFDQUFJQVkzQXdnZ0FFRzhCMm9nQjBIUHV4SWdBQkNaQXlFSElBQW9BcndISWdoRkRRRWdEaUFJRU1ZQklBb2dCMEVDZEJDYkFSREdBU0FLRUpFSERRRWdDaWdDQUNFSUN5QUFRWWdFYWlBREVGd2dBRUdJQkdvUWlRSWlFU0FBS0FLOEJ5SUpJQWNnQ1dvZ0NCQy9BeUFDQW44Z0J3UkFJQUFvQXJ3SExRQUFRUzFHSVE4TElBOExJQUJCaUFScUlBQkJnQVJxSUFCQi9BTnFJQUJCK0FOcUlBQkI2QU5xRUU0aUVDQUFRZGdEYWhES0FpSUxJQUJCeUFOcUVNb0NJZ2tnQUVIRUEyb1EvUW9nQUVIVUJEWUNNQ0FBUVNocVFRQWdBRUV3YWhDZUFTRU1BbjhnQnlBQUtBTEVBeUlDU2dSQUlBa1FIeUFISUFKclFRRjBRUUZ5YWd3QkN5QUpFQjlCQW1vTElRMGdBRUV3YWlFQ0lBc1FIeUFOYWlBQUtBTEVBMm9pRFVIbEFFOEVRQ0FNSUExQkFuUVFtd0VReGdFZ0RDZ0NBQ0lDUlEwQkN5QUNJQUJCSkdvZ0FFRWdhaUFES0FJRUlBZ2dDQ0FIUVFKMGFpQVJJQThnQUVHQUJHb2dBQ2dDL0FNZ0FDZ0MrQU1nRUNBTElBa2dBQ2dDeEFNUS9Bb2dBU0FDSUFBb0FpUWdBQ2dDSUNBRElBUVF2Z01oQVNBTUVKMEJJQWtRSUJvZ0N4QWdHaUFRRUNBYUlBQkJpQVJxRUZrZ0NoQ2RBU0FPRUowQklBQkJzQWhxSkFBZ0FROExFSUlCQUF1S0F3RUhmeU1BUWNBQmF5SUFKQUFnQUVHNEFXb2dBeEJjSUFCQnVBRnFFUG9CSVFvZ0FnSi9JQVVRSHdSQUlBVkJBQkJRTFFBQUlBcEJMUkRlQVVIL0FYRkdJUXNMSUFzTElBQkJ1QUZxSUFCQnNBRnFJQUJCcndGcUlBQkJyZ0ZxSUFCQm9BRnFFRTRpRENBQVFaQUJhaEJPSWdnZ0FFR0FBV29RVGlJSElBQkIvQUJxRUlBTElBQkIxQVEyQWhBZ0FFRUlha0VBSUFCQkVHb1FuZ0VoQ1FKL0lBVVFIeUFBS0FKOFNnUkFJQVVRSHlFQ0lBQW9BbndoQmlBSEVCOGdBaUFHYTBFQmRHcEJBV29NQVFzZ0J4QWZRUUpxQ3lFR0lBQkJFR29oQWdKQUlBZ1FIeUFHYWlBQUtBSjhhaUlHUWVVQVNRMEFJQWtnQmhDYkFSREdBU0FKS0FJQUlnSU5BQkNDQVFBTElBSWdBRUVFYWlBQUlBTW9BZ1FnQlJBVElBVVFFeUFGRUI5cUlBb2dDeUFBUWJBQmFpQUFMQUN2QVNBQUxBQ3VBU0FNSUFnZ0J5QUFLQUo4RVA4S0lBRWdBaUFBS0FJRUlBQW9BZ0FnQXlBRUVLY0RJUUVnQ1JDZEFTQUhFQ0FhSUFnUUlCb2dEQkFnR2lBQVFiZ0JhaEJaSUFCQndBRnFKQUFnQVFzK0FRRi9JQUFvQWdBaEFTQUFJQUFRSlRZQ0FDQUFFQ1VvQWdCQkFEWUNDQ0FBRUNWQkFEWUNBQ0FBRUNOQkFEWUNBQ0FCS0FJRUlnQWdBU0FBR3d2WkJBRUxmeU1BUWRBRGF5SUFKQUFnQUNBRk53TVFJQUFnQmpjREdDQUFJQUJCNEFKcU5nTGNBaUFBUWVBQ2FrSGtBRUhQdXhJZ0FFRVFhaEFuSVFjZ0FFSFVCRFlDOEFFZ0FFSG9BV3BCQUNBQVFmQUJhaENlQVNFT0lBQkIxQVEyQXZBQklBQkI0QUZxUVFBZ0FFSHdBV29RbmdFaENpQUFRZkFCYWlFSUFrQWdCMEhrQUU4RVFCQi9JUWNnQUNBRk53TUFJQUFnQmpjRENDQUFRZHdDYWlBSFFjKzdFaUFBRUprRElRY2dBQ2dDM0FJaUNFVU5BU0FPSUFnUXhnRWdDaUFIRUpzQkVNWUJJQW9Ra1FjTkFTQUtLQUlBSVFnTElBQkIyQUZxSUFNUVhDQUFRZGdCYWhENkFTSVJJQUFvQXR3Q0lna2dCeUFKYWlBSUVPNERJQUlDZnlBSEJFQWdBQ2dDM0FJdEFBQkJMVVloRHdzZ0R3c2dBRUhZQVdvZ0FFSFFBV29nQUVIUEFXb2dBRUhPQVdvZ0FFSEFBV29RVGlJUUlBQkJzQUZxRUU0aUN5QUFRYUFCYWhCT0lna2dBRUdjQVdvUWdBc2dBRUhVQkRZQ01DQUFRU2hxUVFBZ0FFRXdhaENlQVNFTUFuOGdCeUFBS0FLY0FTSUNTZ1JBSUFrUUh5QUhJQUpyUVFGMFFRRnlhZ3dCQ3lBSkVCOUJBbW9MSVEwZ0FFRXdhaUVDSUFzUUh5QU5haUFBS0FLY0FXb2lEVUhsQUU4RVFDQU1JQTBRbXdFUXhnRWdEQ2dDQUNJQ1JRMEJDeUFDSUFCQkpHb2dBRUVnYWlBREtBSUVJQWdnQnlBSWFpQVJJQThnQUVIUUFXb2dBQ3dBendFZ0FDd0F6Z0VnRUNBTElBa2dBQ2dDbkFFUS93b2dBU0FDSUFBb0FpUWdBQ2dDSUNBRElBUVFwd01oQVNBTUVKMEJJQWtRSUJvZ0N4QWdHaUFRRUNBYUlBQkIyQUZxRUZrZ0NoQ2RBU0FPRUowQklBQkIwQU5xSkFBZ0FROExFSUlCQUF0d0FRRi9Jd0JCSUdzaUF5UUFJQU1nQVRZQ0VDQURJQUEyQWhnZ0F5QUNOZ0lJQTBBQ1FBSi9RUUVnQTBFWWFpQURRUkJxRUI1RkRRQWFJQU1nQXlnQ0dDQURLQUlJRU1RQ0RRRkJBQXNoQUNBRFFTQnFKQUFnQUE4TElBTkJHR29RWmhvZ0EwRUlhaEJtR2d3QUFBc0FDOVFCQVFSL0l3QkJFR3NpQXlRQUlBQVFIeUVGSUFBUXRnWWhCQUpBSUFFZ0FoQ3ZCU0lHUlEwQUlBRWdBQkFUSUFBUUV5QUFFQjlCQW5ScUVOd0tCRUFnQUFKL0lBTWdBQkR0QlJvZ0F5QUJJQUlRcndzZ0F3c1FFeUFERUI4UW5CRWdBeEFnR2d3QkN5QUVJQVZySUFaSkJFQWdBQ0FFSUFVZ0Jtb2dCR3NnQlNBRkVOWUtDeUFBRUJNZ0JVRUNkR29oQkFOQUlBRWdBa2NFUUNBRUlBRVFud0lnQVVFRWFpRUJJQVJCQkdvaEJBd0JDd3NnQTBFQU5nSUFJQVFnQXhDZkFpQUFJQVVnQm1vUWh3TUxJQU5CRUdva0FBdWZBZ0VCZnlNQVFjQURheUlBSkFBZ0FDQUJOZ0s0QXlBQUlBSTJBckFESUFCQjFRUTJBaFFnQUVFWWFpQUFRU0JxSUFCQkZHb1FuZ0VoQVNBQVFSQnFJQVFRWENBQVFSQnFFSWtDSVFjZ0FFRUFPZ0FQSUFCQnVBTnFJQUlnQXlBQVFSQnFJQVFvQWdRZ0JTQUFRUTlxSUFjZ0FTQUFRUlJxSUFCQnNBTnFFSVVMQkVBZ0JoQ0RDeUFBTFFBUEJFQWdCaUFIUVMwUW5RSVF0QVlMSUFkQk1CQ2RBaUVDSUFFb0FnQWhCQ0FBS0FJVUlnTkJmR29oQndOQUFrQWdCQ0FIVHcwQUlBUW9BZ0FnQWtjTkFDQUVRUVJxSVFRTUFRc0xJQVlnQkNBREVLa1NDeUFBUWJnRGFpQUFRYkFEYWhESEFRUkFJQVVnQlNnQ0FFRUNjallDQUFzZ0FDZ0N1QU1oQWlBQVFSQnFFRmtnQVJDZEFTQUFRY0FEYWlRQUlBSUx2UUVCQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lBSUFNZ0FUWUNDQUpBSUFBUUl5Z0NBRVVOQUNBQUVLWVNJZ0ZGRFFBRFFDQURRUWhxSUFNUUhnUkFJQUZCRUdvZ0EwRUlhaEJYRUtBU0lBRVE5Z29oQWlBQUlBRVFseElnQTBFSWFoQ3BBU0FDSWdFTkFRd0NDd3NEUUNBQktBSUlJZ0lFUUNBQ0lRRU1BUXNMSUFBZ0FSQ3FCZ3NnQTBFSWFpQURFQjRFUUFOQUlBQWdBMEVJYWhCWEVQZ1JJQU5CQ0dvUXFRRWdBMEVJYWlBREVCNE5BQXNMSUFOQkVHb2tBQXVaQWdFQmZ5TUFRUkJySWdva0FDQUpBbjhnQUFSQUlBb2dBUkNDQ3lJQUVPZ0RJQUlnQ2lnQ0FEWUFBQ0FLSUFBUTVnTWdDQ0FLRUpRRElBb1FJQm9nQ2lBQUVOZ0NJQWNnQ2hDVUF5QUtFQ0FhSUFNZ0FCRFNBallDQUNBRUlBQVFpQUkyQWdBZ0NpQUFFSWNDSUFVZ0NoRFRBU0FLRUNBYUlBb2dBQkRaQWlBR0lBb1FsQU1nQ2hBZ0dpQUFFT1VEREFFTElBb2dBUkNCQ3lJQUVPZ0RJQUlnQ2lnQ0FEWUFBQ0FLSUFBUTVnTWdDQ0FLRUpRRElBb1FJQm9nQ2lBQUVOZ0NJQWNnQ2hDVUF5QUtFQ0FhSUFNZ0FCRFNBallDQUNBRUlBQVFpQUkyQWdBZ0NpQUFFSWNDSUFVZ0NoRFRBU0FLRUNBYUlBb2dBQkRaQWlBR0lBb1FsQU1nQ2hBZ0dpQUFFT1VEQ3pZQ0FDQUtRUkJxSkFBTDl3TUJBWDhqQUVId0JHc2lBQ1FBSUFBZ0FUWUM2QVFnQUNBQ05nTGdCQ0FBUWRVRU5nSVFJQUJCeUFGcUlBQkIwQUZxSUFCQkVHb1FuZ0VoQVNBQVFjQUJhaUFFRUZ3Z0FFSEFBV29RaVFJaEJ5QUFRUUE2QUw4QkFrQWdBRUhvQkdvZ0FpQURJQUJCd0FGcUlBUW9BZ1FnQlNBQVFiOEJhaUFISUFFZ0FFSEVBV29nQUVIZ0JHb1FoUXRGRFFBZ0FFSEx1eElvQUFBMkFMY0JJQUJCeExzU0tRQUFOd093QVNBSElBQkJzQUZxSUFCQnVnRnFJQUJCZ0FGcUVMOERJQUJCMUFRMkFoQWdBRUVJYWtFQUlBQkJFR29RbmdFaEF5QUFRUkJxSVFJQ1FDQUFLQUxFQVNBQktBSUFhMEdKQTA0RVFDQURJQUFvQXNRQklBRW9BZ0JyUVFKMVFRSnFFSnNCRU1ZQklBTW9BZ0JGRFFFZ0F5Z0NBQ0VDQ3lBQUxRQy9BUVJBSUFKQkxUb0FBQ0FDUVFGcUlRSUxJQUVvQWdBaEJBTkFJQVFnQUNnQ3hBRlBCRUFDUUNBQ1FRQTZBQUFnQUNBR05nSUFJQUJCRUdvZ0FCQzNDMEVCUncwQUlBTVFuUUVNQkFzRklBSWdBRUd3QVdvZ0FFR0FBV29nQUVHQUFXb1FqUVVnQkJEekJ5QUFRWUFCYW10QkFuVnFMUUFBT2dBQUlBSkJBV29oQWlBRVFRUnFJUVFNQVFzTEVJSUJBQXNRZ2dFQUN5QUFRZWdFYWlBQVFlQUVhaERIQVFSQUlBVWdCU2dDQUVFQ2NqWUNBQXNnQUNnQzZBUWhBaUFBUWNBQmFoQlpJQUVRblFFZ0FFSHdCR29rQUNBQ0MzSUJBWDhqQUVFZ2F5SURKQUFnQXlBQk5nSVFJQU1nQURZQ0dDQURJQUkyQWdnRFFBSkFBbjlCQVNBRFFSaHFJQU5CRUdvUUhrVU5BQm9nQXlnQ0dDMEFBQ0FES0FJSUxRQUFSZzBCUVFBTElRQWdBMEVnYWlRQUlBQVBDeUFEUVJocUVPTURJQU5CQ0dvUTR3TU1BQUFMQUF2TEFRRUVmeU1BUVNCcklnVWtBQ0FBRUI4aEJDQUFFRjBoQXdKQUlBRWdBaERXQ0NJR1JRMEFJQUVnQUJBVElBQVFFeUFBRUI5cUVOd0tCRUFnQUNBRlFSQnFJQUVnQWlBQUVOY0lJZ0FRRXlBQUVCOFF5Z1VhSUFBUUlCb01BUXNnQXlBRWF5QUdTUVJBSUFBZ0F5QUVJQVpxSUFOcklBUWdCQkRzQndzZ0FCQVRJQVJxSVFNRFFDQUJJQUpIQkVBZ0F5QUJFSlFCSUFGQkFXb2hBU0FEUVFGcUlRTU1BUXNMSUFWQkFEb0FEeUFESUFWQkQyb1FsQUVnQUNBRUlBWnFFSWNEQ3lBRlFTQnFKQUFMcHdJQkFYOGpBRUdnQVdzaUFDUUFJQUFnQVRZQ21BRWdBQ0FDTmdLUUFTQUFRZFVFTmdJVUlBQkJHR29nQUVFZ2FpQUFRUlJxRUo0QklRRWdBRUVRYWlBRUVGd2dBRUVRYWhENkFTRUhJQUJCQURvQUR5QUFRWmdCYWlBQ0lBTWdBRUVRYWlBRUtBSUVJQVVnQUVFUGFpQUhJQUVnQUVFVWFpQUFRWVFCYWhDTUN3UkFJQVlRaVFRZ0FDMEFEd1JBSUFZZ0IwRXRFTjRCRU9JRUN5QUhRVEFRM2dFaEFpQUJLQUlBSVFRZ0FDZ0NGQ0lEUVg5cUlRY2dBa0gvQVhFaEFnTkFBa0FnQkNBSFR3MEFJQVF0QUFBZ0FrY05BQ0FFUVFGcUlRUU1BUXNMSUFZZ0JDQURFSzhTQ3lBQVFaZ0JhaUFBUVpBQmFoQytBUVJBSUFVZ0JTZ0NBRUVDY2pZQ0FBc2dBQ2dDbUFFaEFpQUFRUkJxRUZrZ0FSQ2RBU0FBUWFBQmFpUUFJQUlMbVFJQkFYOGpBRUVRYXlJS0pBQWdDUUovSUFBRVFDQUtJQUVRaVFzaUFCRG9BeUFDSUFvb0FnQTJBQUFnQ2lBQUVPWURJQWdnQ2hEVEFTQUtFQ0FhSUFvZ0FCRFlBaUFISUFvUTB3RWdDaEFnR2lBRElBQVEwZ0k2QUFBZ0JDQUFFSWdDT2dBQUlBb2dBQkNIQWlBRklBb1Ewd0VnQ2hBZ0dpQUtJQUFRMlFJZ0JpQUtFTk1CSUFvUUlCb2dBQkRsQXd3QkN5QUtJQUVRaUFzaUFCRG9BeUFDSUFvb0FnQTJBQUFnQ2lBQUVPWURJQWdnQ2hEVEFTQUtFQ0FhSUFvZ0FCRFlBaUFISUFvUTB3RWdDaEFnR2lBRElBQVEwZ0k2QUFBZ0JDQUFFSWdDT2dBQUlBb2dBQkNIQWlBRklBb1Ewd0VnQ2hBZ0dpQUtJQUFRMlFJZ0JpQUtFTk1CSUFvUUlCb2dBQkRsQXdzMkFnQWdDa0VRYWlRQUMrWURBUUYvSXdCQm9BSnJJZ0FrQUNBQUlBRTJBcGdDSUFBZ0FqWUNrQUlnQUVIVkJEWUNFQ0FBUVpnQmFpQUFRYUFCYWlBQVFSQnFFSjRCSVFFZ0FFR1FBV29nQkJCY0lBQkJrQUZxRVBvQklRY2dBRUVBT2dDUEFRSkFJQUJCbUFKcUlBSWdBeUFBUVpBQmFpQUVLQUlFSUFVZ0FFR1BBV29nQnlBQklBQkJsQUZxSUFCQmhBSnFFSXdMUlEwQUlBQkJ5N3NTS0FBQU5nQ0hBU0FBUWNTN0Vpa0FBRGNEZ0FFZ0J5QUFRWUFCYWlBQVFZb0JhaUFBUWZZQWFoRHVBeUFBUWRRRU5nSVFJQUJCQ0dwQkFDQUFRUkJxRUo0QklRTWdBRUVRYWlFQ0FrQWdBQ2dDbEFFZ0FTZ0NBR3RCNHdCT0JFQWdBeUFBS0FLVUFTQUJLQUlBYTBFQ2FoQ2JBUkRHQVNBREtBSUFSUTBCSUFNb0FnQWhBZ3NnQUMwQWp3RUVRQ0FDUVMwNkFBQWdBa0VCYWlFQ0N5QUJLQUlBSVFRRFFDQUVJQUFvQXBRQlR3UkFBa0FnQWtFQU9nQUFJQUFnQmpZQ0FDQUFRUkJxSUFBUXR3dEJBVWNOQUNBREVKMEJEQVFMQlNBQ0lBQkI5Z0JxSUFCQmdBRnFJQVFROWdjZ0FHc2dBR290QUFvNkFBQWdBa0VCYWlFQ0lBUkJBV29oQkF3QkN3c1FnZ0VBQ3hDQ0FRQUxJQUJCbUFKcUlBQkJrQUpxRUw0QkJFQWdCU0FGS0FJQVFRSnlOZ0lBQ3lBQUtBS1lBaUVDSUFCQmtBRnFFRmtnQVJDZEFTQUFRYUFDYWlRQUlBSUxJd0FnQUNBQlJ3UkFJQUVRSXhvZ0FCQWpHaUFBSUFFUTV3TWdBUkNCQVJDckVnc0xSUUVCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ2dEUUNBQUlBRkhCRUFnQTBFSWFpQUFLQUlBRU1ZTElBQkJCR29oQUF3QkN3c2dBeWdDQ0NFQUlBTkJFR29rQUNBQUN6NEJBWDhqQUVFUWF5SUZKQUFnQlNBRU5nSU1JQVZCQ0dvZ0JVRU1haEQxQWlFRUlBQWdBU0FDSUFNUXRBc2hBQ0FFRVBRQ0lBVkJFR29rQUNBQUMzNEJBWDhqQUVHUUFXc2lCaVFBSUFZZ0JrR0VBV28yQWh3Z0FDQUdRU0JxSUFaQkhHb2dBeUFFSUFVUWtnc2dCa0lBTndNUUlBWWdCa0VnYWpZQ0RDQUJJQVpCREdvZ0FTQUNLQUlBRU1JSklBWkJFR29nQUNnQ0FCQzFFaUlBUVg5R0JFQVFnZ0VBQ3lBQ0lBRWdBRUVDZEdvMkFnQWdCa0dRQVdva0FBdEtBQ01BUWFBRGF5SUNKQUFnQWlBQ1FhQURhallDRENBQVFRaHFJQUpCRUdvZ0FrRU1haUFFSUFVZ0JoQzJFaUFDUVJCcUlBSW9BZ3dnQVJDMEVpRUFJQUpCb0FOcUpBQWdBQXRGQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDQ0FOQUlBQWdBVWNFUUNBRFFRaHFJQUFzQUFBUXh3c2dBRUVCYWlFQURBRUxDeUFES0FJSUlRQWdBMEVRYWlRQUlBQUxTZ0FqQUVHQUFXc2lBaVFBSUFJZ0FrSDBBR28yQWd3Z0FFRUlhaUFDUVJCcUlBSkJER29nQkNBRklBWVFrZ3NnQWtFUWFpQUNLQUlNSUFFUXVCSWhBQ0FDUVlBQmFpUUFJQUFMS0FBZ0FTQUNJQU1nQkVFRUVKWURJUUVnQXkwQUFFRUVjVVVFUUNBQUlBRkJsSEZxTmdJQUN3czNBQ0FCSUFJZ0F5QUVRUUVRbGdNaEFTQURLQUlBSWdKQkJIRWdBVUVHU25KRkJFQWdBQ0FCTmdJQUR3c2dBeUFDUVFSeU5nSUFDemNBSUFFZ0FpQURJQVJCQWhDV0F5RUJJQU1vQWdBaUFrRUVjU0FCUVR4S2NrVUVRQ0FBSUFFMkFnQVBDeUFESUFKQkJISTJBZ0FMT3dFQmZ5TUFRUkJySWdJa0FDQUFRUVJxRUpBTElBSkJBRFlDRENBQVFReHFJQUpCREdvZ0FSQ2hCeUFBSUFBUUpUWUNBQ0FDUVJCcUpBQUxld0FnQUVFSWFpQUFLQUlJS0FJSUVRQUFJZ0FRSDBFQUlBQkJER29RSDJ0R0JFQWdCQ0FFS0FJQVFRUnlOZ0lBRHdzZ0FpQURJQUFnQUVFWWFpQUZJQVJCQUJEREJpQUFheUlDSUFFb0FnQWlBRUVNUjNKRkJFQWdBVUVBTmdJQUR3c2dBa0VNUnlBQVFRdEtja1VFUUNBQklBQkJER28yQWdBTEMyRUJBWDhqQUVFUWF5SUVKQUFnQkNBQk5nSUlBMEFDUUNBQUlBUkJDR29ROWdGRkRRQWdBMEdBd0FBZ0FCQ2xBUkRhQWtVTkFDQUFFTDBCR2d3QkN3c2dBQ0FFUVFocUVNY0JCRUFnQWlBQ0tBSUFRUUp5TmdJQUN5QUVRUkJxSkFBTE53QWdBU0FDSUFNZ0JFRUNFSllESVFFZ0F5Z0NBQ0lDUVFSeElBRkJPMHB5UlFSQUlBQWdBVFlDQUE4TElBTWdBa0VFY2pZQ0FBczZBQ0FCSUFJZ0F5QUVRUUlRbGdNaEFTQURLQUlBSWdKQkJIRWdBVUVNU25KRkJFQWdBQ0FCUVg5cU5nSUFEd3NnQXlBQ1FRUnlOZ0lBQ3pnQUlBRWdBaUFESUFSQkF4Q1dBeUVCSUFNb0FnQWlBa0VFY1NBQlFlMENTbkpGQkVBZ0FDQUJOZ0lBRHdzZ0F5QUNRUVJ5TmdJQUN6b0FJQUVnQWlBRElBUkJBaENXQXlFQklBTW9BZ0FpQWtFRWNTQUJRWDlxUVF0TGNrVUVRQ0FBSUFFMkFnQVBDeUFESUFKQkJISTJBZ0FMTndBZ0FTQUNJQU1nQkVFQ0VKWURJUUVnQXlnQ0FDSUNRUVJ4SUFGQkYwcHlSUVJBSUFBZ0FUWUNBQThMSUFNZ0FrRUVjallDQUFzNkFDQUJJQUlnQXlBRVFRSVFsZ01oQVNBREtBSUFJZ0pCQkhFZ0FVRi9ha0VlUzNKRkJFQWdBQ0FCTmdJQUR3c2dBeUFDUVFSeU5nSUFDMlVCQVg4akFFRVFheUlFSkFBZ0JDQUJOZ0lJUVFZaEFRSkFBa0FnQUNBRVFRaHFFTWNCRFFCQkJDRUJJQU1nQUJDbEFSRGxCRUVsUncwQVFRSWhBU0FBRUwwQklBUkJDR29ReHdGRkRRRUxJQUlnQWlnQ0FDQUJjallDQUFzZ0JFRVFhaVFBQy9zSEFRSi9Jd0JCUUdvaUJ5UUFJQWNnQVRZQ09DQUVRUUEyQWdBZ0J5QURFRndnQnhDSkFpRUlJQWNRV1FKL0FrQUNRQ0FHUWI5L2FpSUpRVGhMQkVBZ0JrRWxSdzBCSUFkQk9Hb2dBaUFFSUFnUXhoSU1BZ3NDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FKUVFGckRqZ0JGZ1FXQlJZR0J4WVdGZ29XRmhZV0RnOFFGaFlXRXhVV0ZoWVdGaFlXQUFFQ0F3TVdGZ0VXQ0JZV0NRc1dEQllORmdzV0ZoRVNGQUFMSUFBZ0JVRVlhaUFIUVRocUlBSWdCQ0FJRUpZTERCWUxJQUFnQlVFUWFpQUhRVGhxSUFJZ0JDQUlFSlVMREJVTElBQkJDR29nQUNnQ0NDZ0NEQkVBQUNFQklBY2dBQ0FIS0FJNElBSWdBeUFFSUFVZ0FSQVRJQUVRRXlBQkVCOUJBblJxRUx3RE5nSTREQlFMSUFWQkRHb2dCMEU0YWlBQ0lBUWdDQkRGRWd3VEN5QUhRYWk2RWlrREFEY0RHQ0FIUWFDNkVpa0RBRGNERUNBSFFaaTZFaWtEQURjRENDQUhRWkM2RWlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVnYWhDOEF6WUNPQXdTQ3lBSFFjaTZFaWtEQURjREdDQUhRY0M2RWlrREFEY0RFQ0FIUWJpNkVpa0RBRGNEQ0NBSFFiQzZFaWtEQURjREFDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFjZ0IwRWdhaEM4QXpZQ09Bd1JDeUFGUVFocUlBZEJPR29nQWlBRUlBZ1F4QklNRUFzZ0JVRUlhaUFIUVRocUlBSWdCQ0FJRU1NU0RBOExJQVZCSEdvZ0IwRTRhaUFDSUFRZ0NCRENFZ3dPQ3lBRlFSQnFJQWRCT0dvZ0FpQUVJQWdRd1JJTURRc2dCVUVFYWlBSFFUaHFJQUlnQkNBSUVNQVNEQXdMSUFkQk9Hb2dBaUFFSUFnUXZ4SU1Dd3NnQUNBRlFRaHFJQWRCT0dvZ0FpQUVJQWdRdmhJTUNnc2dCMEhRdWhKQkxCQTlJZ1lnQUNBQklBSWdBeUFFSUFVZ0JpQUdRU3hxRUx3RE5nSTREQWtMSUFkQmtMc1NLQUlBTmdJUUlBZEJpTHNTS1FNQU53TUlJQWRCZ0xzU0tRTUFOd01BSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVJScUVMd0ROZ0k0REFnTElBVWdCMEU0YWlBQ0lBUWdDQkM4RWd3SEN5QUhRYmk3RWlrREFEY0RHQ0FIUWJDN0Vpa0RBRGNERUNBSFFhaTdFaWtEQURjRENDQUhRYUM3RWlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVnYWhDOEF6WUNPQXdHQ3lBRlFSaHFJQWRCT0dvZ0FpQUVJQWdRdXhJTUJRc2dBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVMQUF3RkN5QUFRUWhxSUFBb0FnZ29BaGdSQUFBaEFTQUhJQUFnQnlnQ09DQUNJQU1nQkNBRklBRVFFeUFCRUJNZ0FSQWZRUUowYWhDOEF6WUNPQXdEQ3lBRlFSUnFJQWRCT0dvZ0FpQUVJQWdRbEFzTUFnc2dCVUVVYWlBSFFUaHFJQUlnQkNBSUVMb1NEQUVMSUFRZ0JDZ0NBRUVFY2pZQ0FBc2dCeWdDT0FzaEFDQUhRVUJySkFBZ0FBdElBUUYvSXdCQkVHc2lCaVFBSUFZZ0FUWUNDQ0FHSUFNUVhDQUdFSWtDSVFFZ0JoQlpJQVZCRkdvZ0JrRUlhaUFDSUFRZ0FSQ1VDeUFHS0FJSUlRQWdCa0VRYWlRQUlBQUxTZ0VCZnlNQVFSQnJJZ1lrQUNBR0lBRTJBZ2dnQmlBREVGd2dCaENKQWlFQklBWVFXU0FBSUFWQkVHb2dCa0VJYWlBQ0lBUWdBUkNWQ3lBR0tBSUlJUUFnQmtFUWFpUUFJQUFMU2dFQmZ5TUFRUkJySWdZa0FDQUdJQUUyQWdnZ0JpQURFRndnQmhDSkFpRUJJQVlRV1NBQUlBVkJHR29nQmtFSWFpQUNJQVFnQVJDV0N5QUdLQUlJSVFBZ0JrRVFhaVFBSUFBTE1RQWdBQ0FCSUFJZ0F5QUVJQVVnQUVFSWFpQUFLQUlJS0FJVUVRQUFJZ0FRRXlBQUVCTWdBQkFmUVFKMGFoQzhBd3RlQVFGL0l3QkJJR3NpQmlRQUlBWkJ1THNTS1FNQU53TVlJQVpCc0xzU0tRTUFOd01RSUFaQnFMc1NLUU1BTndNSUlBWkJvTHNTS1FNQU53TUFJQUFnQVNBQ0lBTWdCQ0FGSUFZZ0JrRWdhaEM4QXlFQUlBWkJJR29rQUNBQUN5Z0FJQUVnQWlBRElBUkJCQkNZQXlFQklBTXRBQUJCQkhGRkJFQWdBQ0FCUVpSeGFqWUNBQXNMTndBZ0FTQUNJQU1nQkVFQkVKZ0RJUUVnQXlnQ0FDSUNRUVJ4SUFGQkJrcHlSUVJBSUFBZ0FUWUNBQThMSUFNZ0FrRUVjallDQUFzM0FDQUJJQUlnQXlBRVFRSVFtQU1oQVNBREtBSUFJZ0pCQkhFZ0FVRThTbkpGQkVBZ0FDQUJOZ0lBRHdzZ0F5QUNRUVJ5TmdJQUMzc0FJQUJCQ0dvZ0FDZ0NDQ2dDQ0JFQUFDSUFFQjlCQUNBQVFReHFFQjlyUmdSQUlBUWdCQ2dDQUVFRWNqWUNBQThMSUFJZ0F5QUFJQUJCR0dvZ0JTQUVRUUFReFFZZ0FHc2lBaUFCS0FJQUlnQkJERWR5UlFSQUlBRkJBRFlDQUE4TElBSkJERWNnQUVFTFNuSkZCRUFnQVNBQVFReHFOZ0lBQ3d0aEFRRi9Jd0JCRUdzaUJDUUFJQVFnQVRZQ0NBTkFBa0FnQUNBRVFRaHFFUEFCUlEwQUlBTkJnTUFBSUFBUW53RVF5d0pGRFFBZ0FCQzFBUm9NQVFzTElBQWdCRUVJYWhDK0FRUkFJQUlnQWlnQ0FFRUNjallDQUFzZ0JFRVFhaVFBQ3pjQUlBRWdBaUFESUFSQkFoQ1lBeUVCSUFNb0FnQWlBa0VFY1NBQlFUdEtja1VFUUNBQUlBRTJBZ0FQQ3lBRElBSkJCSEkyQWdBTE9nQWdBU0FDSUFNZ0JFRUNFSmdESVFFZ0F5Z0NBQ0lDUVFSeElBRkJERXB5UlFSQUlBQWdBVUYvYWpZQ0FBOExJQU1nQWtFRWNqWUNBQXM0QUNBQklBSWdBeUFFUVFNUW1BTWhBU0FES0FJQUlnSkJCSEVnQVVIdEFrcHlSUVJBSUFBZ0FUWUNBQThMSUFNZ0FrRUVjallDQUFzNkFDQUJJQUlnQXlBRVFRSVFtQU1oQVNBREtBSUFJZ0pCQkhFZ0FVRi9ha0VMUzNKRkJFQWdBQ0FCTmdJQUR3c2dBeUFDUVFSeU5nSUFDemNBSUFFZ0FpQURJQVJCQWhDWUF5RUJJQU1vQWdBaUFrRUVjU0FCUVJkS2NrVUVRQ0FBSUFFMkFnQVBDeUFESUFKQkJISTJBZ0FMT2dBZ0FTQUNJQU1nQkVFQ0VKZ0RJUUVnQXlnQ0FDSUNRUVJ4SUFGQmYycEJIa3R5UlFSQUlBQWdBVFlDQUE4TElBTWdBa0VFY2pZQ0FBdGxBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FUWUNDRUVHSVFFQ1FBSkFJQUFnQkVFSWFoQytBUTBBUVFRaEFTQURJQUFRbndFUTVnUkJKVWNOQUVFQ0lRRWdBQkMxQVNBRVFRaHFFTDRCUlEwQkN5QUNJQUlvQWdBZ0FYSTJBZ0FMSUFSQkVHb2tBQXV2QndFQ2Z5TUFRU0JySWdja0FDQUhJQUUyQWhnZ0JFRUFOZ0lBSUFkQkNHb2dBeEJjSUFkQkNHb1ErZ0VoQ0NBSFFRaHFFRmtDZndKQUFrQWdCa0cvZjJvaUNVRTRTd1JBSUFaQkpVY05BU0FIUVJocUlBSWdCQ0FJRU5nU0RBSUxBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDVUVCYXc0NEFSWUVGZ1VXQmdjV0ZoWUtGaFlXRmc0UEVCWVdGaE1WRmhZV0ZoWVdGZ0FCQWdNREZoWUJGZ2dXRmdrTEZnd1dEUllMRmhZUkVoUUFDeUFBSUFWQkdHb2dCMEVZYWlBQ0lBUWdDQkNhQ3d3V0N5QUFJQVZCRUdvZ0IwRVlhaUFDSUFRZ0NCQ1pDd3dWQ3lBQVFRaHFJQUFvQWdnb0Fnd1JBQUFoQVNBSElBQWdCeWdDR0NBQ0lBTWdCQ0FGSUFFUUV5QUJFQk1nQVJBZmFoQzlBellDR0F3VUN5QUZRUXhxSUFkQkdHb2dBaUFFSUFnUTF4SU1Fd3NnQjBLbDJyMnB3dXpMa3ZrQU53TUlJQWNnQUNBQklBSWdBeUFFSUFVZ0IwRUlhaUFIUVJCcUVMMEROZ0lZREJJTElBZENwYksxcWRLdHk1TGtBRGNEQ0NBSElBQWdBU0FDSUFNZ0JDQUZJQWRCQ0dvZ0IwRVFhaEM5QXpZQ0dBd1JDeUFGUVFocUlBZEJHR29nQWlBRUlBZ1ExaElNRUFzZ0JVRUlhaUFIUVJocUlBSWdCQ0FJRU5VU0RBOExJQVZCSEdvZ0IwRVlhaUFDSUFRZ0NCRFVFZ3dPQ3lBRlFSQnFJQWRCR0dvZ0FpQUVJQWdRMHhJTURRc2dCVUVFYWlBSFFSaHFJQUlnQkNBSUVOSVNEQXdMSUFkQkdHb2dBaUFFSUFnUTBSSU1Dd3NnQUNBRlFRaHFJQWRCR0dvZ0FpQUVJQWdRMEJJTUNnc2dCMEgvdVJJb0FBQTJBQThnQjBINHVSSXBBQUEzQXdnZ0J5QUFJQUVnQWlBRElBUWdCU0FIUVFocUlBZEJFMm9RdlFNMkFoZ01DUXNnQjBHSHVoSXRBQUE2QUF3Z0IwR0R1aElvQUFBMkFnZ2dCeUFBSUFFZ0FpQURJQVFnQlNBSFFRaHFJQWRCRFdvUXZRTTJBaGdNQ0FzZ0JTQUhRUmhxSUFJZ0JDQUlFTThTREFjTElBZENwWkRwcWRMSnpwTFRBRGNEQ0NBSElBQWdBU0FDSUFNZ0JDQUZJQWRCQ0dvZ0IwRVFhaEM5QXpZQ0dBd0dDeUFGUVJocUlBZEJHR29nQWlBRUlBZ1F6aElNQlFzZ0FDQUJJQUlnQXlBRUlBVWdBQ2dDQUNnQ0ZCRUxBQXdGQ3lBQVFRaHFJQUFvQWdnb0FoZ1JBQUFoQVNBSElBQWdCeWdDR0NBQ0lBTWdCQ0FGSUFFUUV5QUJFQk1nQVJBZmFoQzlBellDR0F3REN5QUZRUlJxSUFkQkdHb2dBaUFFSUFnUW1Bc01BZ3NnQlVFVWFpQUhRUmhxSUFJZ0JDQUlFTTBTREFFTElBUWdCQ2dDQUVFRWNqWUNBQXNnQnlnQ0dBc2hBQ0FIUVNCcUpBQWdBQXRJQVFGL0l3QkJFR3NpQmlRQUlBWWdBVFlDQ0NBR0lBTVFYQ0FHRVBvQklRRWdCaEJaSUFWQkZHb2dCa0VJYWlBQ0lBUWdBUkNZQ3lBR0tBSUlJUUFnQmtFUWFpUUFJQUFMU2dFQmZ5TUFRUkJySWdZa0FDQUdJQUUyQWdnZ0JpQURFRndnQmhENkFTRUJJQVlRV1NBQUlBVkJFR29nQmtFSWFpQUNJQVFnQVJDWkN5QUdLQUlJSVFBZ0JrRVFhaVFBSUFBTFNnRUJmeU1BUVJCcklnWWtBQ0FHSUFFMkFnZ2dCaUFERUZ3Z0JoRDZBU0VCSUFZUVdTQUFJQVZCR0dvZ0JrRUlhaUFDSUFRZ0FSQ2FDeUFHS0FJSUlRQWdCa0VRYWlRQUlBQUxMZ0FnQUNBQklBSWdBeUFFSUFVZ0FFRUlhaUFBS0FJSUtBSVVFUUFBSWdBUUV5QUFFQk1nQUJBZmFoQzlBd3RCQVFGL0l3QkJFR3NpQmlRQUlBWkNwWkRwcWRMSnpwTFRBRGNEQ0NBQUlBRWdBaUFESUFRZ0JTQUdRUWhxSUFaQkVHb1F2UU1oQUNBR1FSQnFKQUFnQUFzc0FBSkFJQUFnQVVZTkFBTkFJQUFnQVVGOGFpSUJUdzBCSUFBZ0FSQXVJQUJCQkdvaEFBd0FBQXNBQ3dzdEFBSkFJQUFnQVVZTkFBTkFJQUFnQVVGL2FpSUJUdzBCSUFBZ0FSQ1JDeUFBUVFGcUlRQU1BQUFMQUFzTHlnRUJBMzhqQUVIUUFXc2lBQ1FBSUFCQjlya1NMd0FBT3dITUFTQUFRZks1RWlnQUFEWUN5QUVRZnlFRklBQWdCRFlDQUNBQVFiQUJhaUFBUWJBQmFrRVVJQVVnQUVISUFXb2dBQkR1QVNJR0lBQkJzQUZxYWlJRUlBSVF1UUloQlNBQVFSQnFJQUlRWENBQVFSQnFFSWtDSVFjZ0FFRVFhaEJaSUFjZ0FFR3dBV29nQkNBQVFSQnFFTDhESUFFZ0FFRVFhaUFBUVJCcUlBWkJBblJxSWdFZ0JTQUFhMEVDZENBQWFrSFFlbW9nQkNBRlJoc2dBU0FDSUFNUXZnTWhBU0FBUWRBQmFpUUFJQUVMa3dRQkJuOGpBRUd3QTJzaUFDUUFJQUJDSlRjRHFBTWdBRUdvQTJwQkFYSkI2cmtTSUFJb0FnUVF3QVloQnlBQUlBQkJnQU5xTmdMOEFoQi9JUVlDZnlBSEJFQWdBaWdDQ0NFSUlBQWdCVGNEU0NBQVFVQnJJQVEzQXdBZ0FDQUlOZ0l3SUFCQmdBTnFRUjRnQmlBQVFhZ0RhaUFBUVRCcUVPNEJEQUVMSUFBZ0JEY0RVQ0FBSUFVM0ExZ2dBRUdBQTJwQkhpQUdJQUJCcUFOcUlBQkIwQUJxRU80QkN5RUdJQUJCMUFRMkFvQUJJQUJCOEFKcVFRQWdBRUdBQVdvUW5nRWhDQUpBSUFaQkhrNEVRQkIvSVFZQ2Z5QUhCRUFnQWlnQ0NDRUhJQUFnQlRjREdDQUFJQVEzQXhBZ0FDQUhOZ0lBSUFCQi9BSnFJQVlnQUVHb0Eyb2dBQkNaQXd3QkN5QUFJQVEzQXlBZ0FDQUZOd01vSUFCQi9BSnFJQVlnQUVHb0Eyb2dBRUVnYWhDWkF3c2hCaUFBS0FMOEFpSUhSUTBCSUFnZ0J4REdBUXNnQUNnQy9BSWlCeUFHSUFkcUlna2dBaEM1QWlFS0lBQkIxQVEyQW9BQklBQkIrQUJxUVFBZ0FFR0FBV29RbmdFaEJ3Si9JQUFvQXZ3Q0lBQkJnQU5xUmdSQUlBQkJnQUZxSVFZZ0FFR0FBMm9NQVFzZ0JrRURkQkNiQVNJR1JRMEJJQWNnQmhER0FTQUFLQUw4QWdzaEN5QUFRZWdBYWlBQ0VGd2dDeUFLSUFrZ0JpQUFRZlFBYWlBQVFmQUFhaUFBUWVnQWFoQ2RDeUFBUWVnQWFoQlpJQUVnQmlBQUtBSjBJQUFvQW5BZ0FpQURFTDRESVFFZ0J4Q2RBU0FJRUowQklBQkJzQU5xSkFBZ0FROExFSUlCQUF2dEF3RUdmeU1BUVlBRGF5SUFKQUFnQUVJbE53UDRBaUFBUWZnQ2FrRUJja0hwdVJJZ0FpZ0NCQkRBQmlFR0lBQWdBRUhRQW1vMkFzd0NFSDhoQlFKL0lBWUVRQ0FDS0FJSUlRY2dBQ0FFT1FNb0lBQWdCellDSUNBQVFkQUNha0VlSUFVZ0FFSDRBbW9nQUVFZ2FoRHVBUXdCQ3lBQUlBUTVBekFnQUVIUUFtcEJIaUFGSUFCQitBSnFJQUJCTUdvUTdnRUxJUVVnQUVIVUJEWUNVQ0FBUWNBQ2FrRUFJQUJCMEFCcUVKNEJJUWNDUUNBRlFSNU9CRUFRZnlFRkFuOGdCZ1JBSUFJb0FnZ2hCaUFBSUFRNUF3Z2dBQ0FHTmdJQUlBQkJ6QUpxSUFVZ0FFSDRBbW9nQUJDWkF3d0JDeUFBSUFRNUF4QWdBRUhNQW1vZ0JTQUFRZmdDYWlBQVFSQnFFSmtEQ3lFRklBQW9Bc3dDSWdaRkRRRWdCeUFHRU1ZQkN5QUFLQUxNQWlJR0lBVWdCbW9pQ0NBQ0VMa0NJUWtnQUVIVUJEWUNVQ0FBUWNnQWFrRUFJQUJCMEFCcUVKNEJJUVlDZnlBQUtBTE1BaUFBUWRBQ2FrWUVRQ0FBUWRBQWFpRUZJQUJCMEFKcURBRUxJQVZCQTNRUW13RWlCVVVOQVNBR0lBVVF4Z0VnQUNnQ3pBSUxJUW9nQUVFNGFpQUNFRndnQ2lBSklBZ2dCU0FBUWNRQWFpQUFRVUJySUFCQk9Hb1FuUXNnQUVFNGFoQlpJQUVnQlNBQUtBSkVJQUFvQWtBZ0FpQURFTDRESVFFZ0JoQ2RBU0FIRUowQklBQkJnQU5xSkFBZ0FROExFSUlCQUF2UUFRRUZmeU1BUVNCcklnQWtBQ0FBUWlVM0F4Z2dBRUVZYWtFQmNrSG11UkpCQUNBQ0tBSUVFT3dESUFJb0FnUWhCU0FBUVdCcUlnWWlDQ1FBRUg4aEJ5QUFJQVEzQXdBZ0JpQUdJQVZCQ1haQkFYRkJGbklpQlVFQmFpQUhJQUJCR0dvZ0FCRHVBU0FHYWlJSElBSVF1UUloQ1NBSUlBVkJBM1JCQzJwQjhBRnhheUlGSkFBZ0FFRUlhaUFDRUZ3Z0JpQUpJQWNnQlNBQVFSUnFJQUJCRUdvZ0FFRUlhaEMvQmlBQVFRaHFFRmtnQVNBRklBQW9BaFFnQUNnQ0VDQUNJQU1RdmdNaEFTQUFRU0JxSkFBZ0FRdlRBUUVFZnlNQVFTQnJJZ0FrQUNBQVFmQzVFaThBQURzQkhDQUFRZXk1RWlnQUFEWUNHQ0FBUVJocVFRRnlRZVM1RWtFQUlBSW9BZ1FRN0FNZ0FpZ0NCQ0VHSUFCQmNHb2lCU0lJSkFBUWZ5RUhJQUFnQkRZQ0FDQUZJQVVnQmtFSmRrRUJjVUVNY2lBSElBQkJHR29nQUJEdUFTQUZhaUlHSUFJUXVRSWhCeUFJUWFCL2FpSUVKQUFnQUVFSWFpQUNFRndnQlNBSElBWWdCQ0FBUVJScUlBQkJFR29nQUVFSWFoQy9CaUFBUVFocUVGa2dBU0FFSUFBb0FoUWdBQ2dDRUNBQ0lBTVF2Z01oQVNBQVFTQnFKQUFnQVF2UkFRRUZmeU1BUVNCcklnQWtBQ0FBUWlVM0F4Z2dBRUVZYWtFQmNrSG11UkpCQVNBQ0tBSUVFT3dESUFJb0FnUWhCU0FBUVdCcUlnWWlDQ1FBRUg4aEJ5QUFJQVEzQXdBZ0JpQUdJQVZCQ1haQkFYRWlCVUVYYWlBSElBQkJHR29nQUJEdUFTQUdhaUlISUFJUXVRSWhDU0FJSUFWQkEzUkJzQUZ5UVF0cVFmQUJjV3NpQlNRQUlBQkJDR29nQWhCY0lBWWdDU0FISUFVZ0FFRVVhaUFBUVJCcUlBQkJDR29RdndZZ0FFRUlhaEJaSUFFZ0JTQUFLQUlVSUFBb0FoQWdBaUFERUw0RElRRWdBRUVnYWlRQUlBRUw0Z0VCQkg4akFFRWdheUlBSkFBZ0FFSHd1Ukl2QUFBN0FSd2dBRUhzdVJJb0FBQTJBaGdnQUVFWWFrRUJja0hrdVJKQkFTQUNLQUlFRU93RElBSW9BZ1FoQmlBQVFYQnFJZ1VpQ0NRQUVIOGhCeUFBSUFRMkFnQWdCU0FGSUFaQkNYWkJBWEVpQkVFTmFpQUhJQUJCR0dvZ0FCRHVBU0FGYWlJR0lBSVF1UUloQnlBSUlBUkJBM1JCNEFCeVFRdHFRZkFBY1dzaUJDUUFJQUJCQ0dvZ0FoQmNJQVVnQnlBR0lBUWdBRUVVYWlBQVFSQnFJQUJCQ0dvUXZ3WWdBRUVJYWhCWklBRWdCQ0FBS0FJVUlBQW9BaEFnQWlBREVMNERJUUVnQUVFZ2FpUUFJQUVMUFFFQ2Z5TUFRUkJySWdJa0FDQUFRZ0EzQWdBZ0FrRUFOZ0lNSUFCQkNHb2lBeUFDUVF4cUVKVURJQU5CQkdvZ0FSQ3RBaUFDUVJCcUpBQWdBQXZUQVFFQmZ5TUFRVEJySWdVa0FDQUZJQUUyQWlnQ1FDQUNLQUlFUVFGeFJRUkFJQUFnQVNBQ0lBTWdCQ0FBS0FJQUtBSVlFUW9BSVFJTUFRc2dCVUVZYWlBQ0VGd2dCVUVZYWhEb0JDRUFJQVZCR0dvUVdRSkFJQVFFUUNBRlFSaHFJQUFRMlFJTUFRc2dCVUVZYWlBQUVOZ0NDeUFGSUFWQkdHb1E3QUUyQWhBRFFDQUZJQVZCR0dvUTZ3TTJBZ2dnQlVFUWFpQUZRUWhxRUI0RVFDQUZRU2hxSUFVb0FoQW9BZ0FReGdzZ0JVRVFhaEJtR2d3QkJTQUZLQUlvSVFJZ0JVRVlhaEFnR2dzTEN5QUZRVEJxSkFBZ0FndTlBUUVEZnlNQVFlQUFheUlBSkFBZ0FFSDJ1Ukl2QUFBN0FWd2dBRUh5dVJJb0FBQTJBbGdRZnlFRklBQWdCRFlDQUNBQVFVQnJJQUJCUUd0QkZDQUZJQUJCMkFCcUlBQVE3Z0VpQmlBQVFVQnJhaUlFSUFJUXVRSWhCU0FBUVJCcUlBSVFYQ0FBUVJCcUVQb0JJUWNnQUVFUWFoQlpJQWNnQUVGQWF5QUVJQUJCRUdvUTdnTWdBU0FBUVJCcUlBWWdBRUVRYW1vaUFTQUZJQUJySUFCcVFWQnFJQVFnQlVZYklBRWdBaUFERUtjRElRRWdBRUhnQUdva0FDQUJDNU1FQVFaL0l3QkJnQUpySWdBa0FDQUFRaVUzQS9nQklBQkIrQUZxUVFGeVFlcTVFaUFDS0FJRUVNQUdJUWNnQUNBQVFkQUJhallDekFFUWZ5RUdBbjhnQndSQUlBSW9BZ2doQ0NBQUlBVTNBMGdnQUVGQWF5QUVOd01BSUFBZ0NEWUNNQ0FBUWRBQmFrRWVJQVlnQUVINEFXb2dBRUV3YWhEdUFRd0JDeUFBSUFRM0ExQWdBQ0FGTndOWUlBQkIwQUZxUVI0Z0JpQUFRZmdCYWlBQVFkQUFhaER1QVFzaEJpQUFRZFFFTmdLQUFTQUFRY0FCYWtFQUlBQkJnQUZxRUo0QklRZ0NRQ0FHUVI1T0JFQVFmeUVHQW44Z0J3UkFJQUlvQWdnaEJ5QUFJQVUzQXhnZ0FDQUVOd01RSUFBZ0J6WUNBQ0FBUWN3QmFpQUdJQUJCK0FGcUlBQVFtUU1NQVFzZ0FDQUVOd01nSUFBZ0JUY0RLQ0FBUWN3QmFpQUdJQUJCK0FGcUlBQkJJR29RbVFNTElRWWdBQ2dDekFFaUIwVU5BU0FJSUFjUXhnRUxJQUFvQXN3QklnY2dCaUFIYWlJSklBSVF1UUloQ2lBQVFkUUVOZ0tBQVNBQVFmZ0Fha0VBSUFCQmdBRnFFSjRCSVFjQ2Z5QUFLQUxNQVNBQVFkQUJha1lFUUNBQVFZQUJhaUVHSUFCQjBBRnFEQUVMSUFaQkFYUVFtd0VpQmtVTkFTQUhJQVlReGdFZ0FDZ0N6QUVMSVFzZ0FFSG9BR29nQWhCY0lBc2dDaUFKSUFZZ0FFSDBBR29nQUVId0FHb2dBRUhvQUdvUW53c2dBRUhvQUdvUVdTQUJJQVlnQUNnQ2RDQUFLQUp3SUFJZ0F4Q25BeUVCSUFjUW5RRWdDQkNkQVNBQVFZQUNhaVFBSUFFUEN4Q0NBUUFMN1FNQkJuOGpBRUhRQVdzaUFDUUFJQUJDSlRjRHlBRWdBRUhJQVdwQkFYSkI2YmtTSUFJb0FnUVF3QVloQmlBQUlBQkJvQUZxTmdLY0FSQi9JUVVDZnlBR0JFQWdBaWdDQ0NFSElBQWdCRGtES0NBQUlBYzJBaUFnQUVHZ0FXcEJIaUFGSUFCQnlBRnFJQUJCSUdvUTdnRU1BUXNnQUNBRU9RTXdJQUJCb0FGcVFSNGdCU0FBUWNnQmFpQUFRVEJxRU80QkN5RUZJQUJCMUFRMkFsQWdBRUdRQVdwQkFDQUFRZEFBYWhDZUFTRUhBa0FnQlVFZVRnUkFFSDhoQlFKL0lBWUVRQ0FDS0FJSUlRWWdBQ0FFT1FNSUlBQWdCallDQUNBQVFad0JhaUFGSUFCQnlBRnFJQUFRbVFNTUFRc2dBQ0FFT1FNUUlBQkJuQUZxSUFVZ0FFSElBV29nQUVFUWFoQ1pBd3NoQlNBQUtBS2NBU0lHUlEwQklBY2dCaERHQVFzZ0FDZ0NuQUVpQmlBRklBWnFJZ2dnQWhDNUFpRUpJQUJCMUFRMkFsQWdBRUhJQUdwQkFDQUFRZEFBYWhDZUFTRUdBbjhnQUNnQ25BRWdBRUdnQVdwR0JFQWdBRUhRQUdvaEJTQUFRYUFCYWd3QkN5QUZRUUYwRUpzQklnVkZEUUVnQmlBRkVNWUJJQUFvQXB3QkN5RUtJQUJCT0dvZ0FoQmNJQW9nQ1NBSUlBVWdBRUhFQUdvZ0FFRkFheUFBUVRocUVKOExJQUJCT0dvUVdTQUJJQVVnQUNnQ1JDQUFLQUpBSUFJZ0F4Q25BeUVCSUFZUW5RRWdCeENkQVNBQVFkQUJhaVFBSUFFUEN4Q0NBUUFMeEFFQkJIOGpBRUVnYXlJQUpBQWdBRUlsTndNWUlBQkJHR3BCQVhKQjVya1NRUUFnQWlnQ0JCRHNBeUFDS0FJRUlRY2dBRUZnYWlJRklnWWtBQkIvSVFnZ0FDQUVOd01BSUFVZ0JTQUhRUWwyUVFGeFFSWnlRUUZxSUFnZ0FFRVlhaUFBRU80QklBVnFJZ2NnQWhDNUFpRUlJQVpCVUdvaUJpUUFJQUJCQ0dvZ0FoQmNJQVVnQ0NBSElBWWdBRUVVYWlBQVFSQnFJQUJCQ0dvUXdRWWdBRUVJYWhCWklBRWdCaUFBS0FJVUlBQW9BaEFnQWlBREVLY0RJUUVnQUVFZ2FpUUFJQUVMMGdFQkJIOGpBRUVnYXlJQUpBQWdBRUh3dVJJdkFBQTdBUndnQUVIc3VSSW9BQUEyQWhnZ0FFRVlha0VCY2tIa3VSSkJBQ0FDS0FJRUVPd0RJQUlvQWdRaEJpQUFRWEJxSWdVaUNDUUFFSDhoQnlBQUlBUTJBZ0FnQlNBRklBWkJDWFpCQVhGQkRISWdCeUFBUVJocUlBQVE3Z0VnQldvaUJpQUNFTGtDSVFjZ0NFRmdhaUlFSkFBZ0FFRUlhaUFDRUZ3Z0JTQUhJQVlnQkNBQVFSUnFJQUJCRUdvZ0FFRUlhaERCQmlBQVFRaHFFRmtnQVNBRUlBQW9BaFFnQUNnQ0VDQUNJQU1RcHdNaEFTQUFRU0JxSkFBZ0FRdGlBUUYvQWtBZ0FDQUFLQUlBS0FJd0VRQUFSUTBBSUFFZ0FTZ0NBQ2dDTUJFQUFFVU5BQ0FBSUFBb0FnQW9BakFSQUFBaUFDQUFLQUlBS0FLNEFSRUFBQ0FCSUFFb0FnQW9BakFSQUFBaUFDQUFLQUlBS0FLNEFSRUFBRVloQWdzZ0FndkJBUUVFZnlNQVFTQnJJZ0FrQUNBQVFpVTNBeGdnQUVFWWFrRUJja0htdVJKQkFTQUNLQUlFRU93RElBSW9BZ1FoQnlBQVFXQnFJZ1VpQmlRQUVIOGhDQ0FBSUFRM0F3QWdCU0FGSUFkQkNYWkJBWEZCRjJvZ0NDQUFRUmhxSUFBUTdnRWdCV29pQnlBQ0VMa0NJUWdnQmtGUWFpSUdKQUFnQUVFSWFpQUNFRndnQlNBSUlBY2dCaUFBUVJScUlBQkJFR29nQUVFSWFoREJCaUFBUVFocUVGa2dBU0FHSUFBb0FoUWdBQ2dDRUNBQ0lBTVFwd01oQVNBQVFTQnFKQUFnQVF2U0FRRUVmeU1BUVNCcklnQWtBQ0FBUWZDNUVpOEFBRHNCSENBQVFleTVFaWdBQURZQ0dDQUFRUmhxUVFGeVFlUzVFa0VCSUFJb0FnUVE3QU1nQWlnQ0JDRUdJQUJCY0dvaUJTSUlKQUFRZnlFSElBQWdCRFlDQUNBRklBVWdCa0VKZGtFQmNVRU5haUFISUFCQkdHb2dBQkR1QVNBRmFpSUdJQUlRdVFJaEJ5QUlRV0JxSWdRa0FDQUFRUWhxSUFJUVhDQUZJQWNnQmlBRUlBQkJGR29nQUVFUWFpQUFRUWhxRU1FR0lBQkJDR29RV1NBQklBUWdBQ2dDRkNBQUtBSVFJQUlnQXhDbkF5RUJJQUJCSUdva0FDQUJDOU1CQVFGL0l3QkJNR3NpQlNRQUlBVWdBVFlDS0FKQUlBSW9BZ1JCQVhGRkJFQWdBQ0FCSUFJZ0F5QUVJQUFvQWdBb0FoZ1JDZ0FoQWd3QkN5QUZRUmhxSUFJUVhDQUZRUmhxRU9vRUlRQWdCVUVZYWhCWkFrQWdCQVJBSUFWQkdHb2dBQkRaQWd3QkN5QUZRUmhxSUFBUTJBSUxJQVVnQlVFWWFoRHNBVFlDRUFOQUlBVWdCVUVZYWhDVEF6WUNDQ0FGUVJCcUlBVkJDR29RSGdSQUlBVkJLR29nQlNnQ0VDd0FBQkRIQ3lBRlFSQnFFT01EREFFRklBVW9BaWdoQWlBRlFSaHFFQ0FhQ3dzTElBVkJNR29rQUNBQ0N6c0JBWDhqQUVFUWF5SUNKQUFnQWtFSWFpQUFFRndnQWtFSWFoQ0pBa0hBdVJKQjJya1NJQUVRdndNZ0FrRUlhaEJaSUFKQkVHb2tBQ0FCQ3owQkFYOGdBQ2dDQUNBQktBSUFSZ1IvSUFFb0FnUWhBUUpBSUFBb0FnUWlBQVIvSUFFTkFVRUFCU0FCQ3lBQVJnOExJQUFnQVJEdkVnVWdBZ3NML3dJQkFYOGpBRUhnQW1zaUFDUUFJQUFnQWpZQzBBSWdBQ0FCTmdMWUFpQUFRZEFCYWhCT0lRWWdBRUVRYWlBREVGd2dBRUVRYWhDSkFrSEF1UkpCMnJrU0lBQkI0QUZxRUw4RElBQkJFR29RV1NBQVFjQUJhaEJPSWdJZ0FoQmRFRTBnQUNBQ1FRQVFVQ0lCTmdLOEFTQUFJQUJCRUdvMkFnd2dBRUVBTmdJSUEwQUNRQ0FBUWRnQ2FpQUFRZEFDYWhEMkFVVU5BQ0FBS0FLOEFTQUNFQjhnQVdwR0JFQWdBaEFmSVFNZ0FpQUNFQjlCQVhRUVRTQUNJQUlRWFJCTklBQWdBeUFDUVFBUVVDSUJhallDdkFFTElBQkIyQUpxRUtVQlFSQWdBU0FBUWJ3QmFpQUFRUWhxUVFBZ0JpQUFRUkJxSUFCQkRHb2dBRUhnQVdvUTV3UU5BQ0FBUWRnQ2FoQzlBUm9NQVFzTElBSWdBQ2dDdkFFZ0FXc1FUU0FDRUJNaEFSQi9JUU1nQUNBRk5nSUFJQUVnQXlBQUVLTUxRUUZIQkVBZ0JFRUVOZ0lBQ3lBQVFkZ0NhaUFBUWRBQ2FoREhBUVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDMkFJaEFTQUNFQ0FhSUFZUUlCb2dBRUhnQW1va0FDQUJDOWtEQWdGL0FYNGpBRUdBQTJzaUJTUUFJQVVnQVRZQzhBSWdCU0FBTmdMNEFpQUZRZGdCYWlBQ0lBVkI4QUZxSUFWQjdBRnFJQVZCNkFGcUVQVUhJQVZCeUFGcUVFNGlBU0FCRUYwUVRTQUZJQUZCQUJCUUlnQTJBc1FCSUFVZ0JVRWdhallDSENBRlFRQTJBaGdnQlVFQk9nQVhJQVZCeFFBNkFCWURRQUpBSUFWQitBSnFJQVZCOEFKcUVQWUJSUTBBSUFVb0FzUUJJQUVRSHlBQWFrWUVRQ0FCRUI4aEFpQUJJQUVRSDBFQmRCQk5JQUVnQVJCZEVFMGdCU0FDSUFGQkFCQlFJZ0JxTmdMRUFRc2dCVUg0QW1vUXBRRWdCVUVYYWlBRlFSWnFJQUFnQlVIRUFXb2dCU2dDN0FFZ0JTZ0M2QUVnQlVIWUFXb2dCVUVnYWlBRlFSeHFJQVZCR0dvZ0JVSHdBV29ROUFjTkFDQUZRZmdDYWhDOUFSb01BUXNMQWtBZ0JVSFlBV29RSDBVTkFDQUZMUUFYUlEwQUlBVW9BaHdpQWlBRlFTQnFhMEdmQVVvTkFDQUZJQUpCQkdvMkFod2dBaUFGS0FJWU5nSUFDeUFGSUFBZ0JTZ0N4QUVnQXhDa0N5QUZLUU1BSVFZZ0JDQUZLUU1JTndNSUlBUWdCamNEQUNBRlFkZ0JhaUFGUVNCcUlBVW9BaHdnQXhEdkFTQUZRZmdDYWlBRlFmQUNhaERIQVFSQUlBTWdBeWdDQUVFQ2NqWUNBQXNnQlNnQytBSWhBQ0FCRUNBYUlBVkIyQUZxRUNBYUlBVkJnQU5xSkFBZ0FBc1BBQ0FCSUFJZ0F5QUVJQVVROWhJTHdnTUJBWDhqQUVId0Ftc2lCU1FBSUFVZ0FUWUM0QUlnQlNBQU5nTG9BaUFGUWNnQmFpQUNJQVZCNEFGcUlBVkIzQUZxSUFWQjJBRnFFUFVISUFWQnVBRnFFRTRpQVNBQkVGMFFUU0FGSUFGQkFCQlFJZ0EyQXJRQklBVWdCVUVRYWpZQ0RDQUZRUUEyQWdnZ0JVRUJPZ0FISUFWQnhRQTZBQVlEUUFKQUlBVkI2QUpxSUFWQjRBSnFFUFlCUlEwQUlBVW9BclFCSUFFUUh5QUFha1lFUUNBQkVCOGhBaUFCSUFFUUgwRUJkQkJOSUFFZ0FSQmRFRTBnQlNBQ0lBRkJBQkJRSWdCcU5nSzBBUXNnQlVIb0Ftb1FwUUVnQlVFSGFpQUZRUVpxSUFBZ0JVRzBBV29nQlNnQzNBRWdCU2dDMkFFZ0JVSElBV29nQlVFUWFpQUZRUXhxSUFWQkNHb2dCVUhnQVdvUTlBY05BQ0FGUWVnQ2FoQzlBUm9NQVFzTEFrQWdCVUhJQVdvUUgwVU5BQ0FGTFFBSFJRMEFJQVVvQWd3aUFpQUZRUkJxYTBHZkFVb05BQ0FGSUFKQkJHbzJBZ3dnQWlBRktBSUlOZ0lBQ3lBRUlBQWdCU2dDdEFFZ0F4Q2xDemtEQUNBRlFjZ0JhaUFGUVJCcUlBVW9BZ3dnQXhEdkFTQUZRZWdDYWlBRlFlQUNhaERIQVFSQUlBTWdBeWdDQUVFQ2NqWUNBQXNnQlNnQzZBSWhBQ0FCRUNBYUlBVkJ5QUZxRUNBYUlBVkI4QUpxSkFBZ0FBc1BBQ0FCSUFJZ0F5QUVJQVVRK0JJTHdnTUJBWDhqQUVId0Ftc2lCU1FBSUFVZ0FUWUM0QUlnQlNBQU5nTG9BaUFGUWNnQmFpQUNJQVZCNEFGcUlBVkIzQUZxSUFWQjJBRnFFUFVISUFWQnVBRnFFRTRpQVNBQkVGMFFUU0FGSUFGQkFCQlFJZ0EyQXJRQklBVWdCVUVRYWpZQ0RDQUZRUUEyQWdnZ0JVRUJPZ0FISUFWQnhRQTZBQVlEUUFKQUlBVkI2QUpxSUFWQjRBSnFFUFlCUlEwQUlBVW9BclFCSUFFUUh5QUFha1lFUUNBQkVCOGhBaUFCSUFFUUgwRUJkQkJOSUFFZ0FSQmRFRTBnQlNBQ0lBRkJBQkJRSWdCcU5nSzBBUXNnQlVIb0Ftb1FwUUVnQlVFSGFpQUZRUVpxSUFBZ0JVRzBBV29nQlNnQzNBRWdCU2dDMkFFZ0JVSElBV29nQlVFUWFpQUZRUXhxSUFWQkNHb2dCVUhnQVdvUTlBY05BQ0FGUWVnQ2FoQzlBUm9NQVFzTEFrQWdCVUhJQVdvUUgwVU5BQ0FGTFFBSFJRMEFJQVVvQWd3aUFpQUZRUkJxYTBHZkFVb05BQ0FGSUFKQkJHbzJBZ3dnQWlBRktBSUlOZ0lBQ3lBRUlBQWdCU2dDdEFFZ0F4Q21DemdDQUNBRlFjZ0JhaUFGUVJCcUlBVW9BZ3dnQXhEdkFTQUZRZWdDYWlBRlFlQUNhaERIQVFSQUlBTWdBeWdDQUVFQ2NqWUNBQXNnQlNnQzZBSWhBQ0FCRUNBYUlBVkJ5QUZxRUNBYUlBVkI4QUpxSkFBZ0FBc1BBQ0FCSUFJZ0F5QUVJQVVRK2hJTG93TUJBMzhqQUVIZ0Ftc2lCU1FBSUFVZ0FUWUMwQUlnQlNBQU5nTFlBaUFDRUpvRElRWWdBaUFGUWVBQmFoRFBCU0VISUFWQjBBRnFJQUlnQlVITUFtb1F6Z1VnQlVIQUFXb1FUaUlBSUFBUVhSQk5JQVVnQUVFQUVGQWlBVFlDdkFFZ0JTQUZRUkJxTmdJTUlBVkJBRFlDQ0FOQUFrQWdCVUhZQW1vZ0JVSFFBbW9ROWdGRkRRQWdCU2dDdkFFZ0FCQWZJQUZxUmdSQUlBQVFIeUVDSUFBZ0FCQWZRUUYwRUUwZ0FDQUFFRjBRVFNBRklBSWdBRUVBRUZBaUFXbzJBcndCQ3lBRlFkZ0NhaENsQVNBR0lBRWdCVUc4QVdvZ0JVRUlhaUFGS0FMTUFpQUZRZEFCYWlBRlFSQnFJQVZCREdvZ0J4RG5CQTBBSUFWQjJBSnFFTDBCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVb0Fnd2lBaUFGUVJCcWEwR2ZBVW9OQUNBRklBSkJCR28yQWd3Z0FpQUZLQUlJTmdJQUN5QUVJQUVnQlNnQ3ZBRWdBeUFHRUtjTE53TUFJQVZCMEFGcUlBVkJFR29nQlNnQ0RDQURFTzhCSUFWQjJBSnFJQVZCMEFKcUVNY0JCRUFnQXlBREtBSUFRUUp5TmdJQUN5QUZLQUxZQWlFQklBQVFJQm9nQlVIUUFXb1FJQm9nQlVIZ0Ftb2tBQ0FCQ3c4QUlBRWdBaUFESUFRZ0JSRDhFZ3VqQXdFRGZ5TUFRZUFDYXlJRkpBQWdCU0FCTmdMUUFpQUZJQUEyQXRnQ0lBSVFtZ01oQmlBQ0lBVkI0QUZxRU04RklRY2dCVUhRQVdvZ0FpQUZRY3dDYWhET0JTQUZRY0FCYWhCT0lnQWdBQkJkRUUwZ0JTQUFRUUFRVUNJQk5nSzhBU0FGSUFWQkVHbzJBZ3dnQlVFQU5nSUlBMEFDUUNBRlFkZ0NhaUFGUWRBQ2FoRDJBVVVOQUNBRktBSzhBU0FBRUI4Z0FXcEdCRUFnQUJBZklRSWdBQ0FBRUI5QkFYUVFUU0FBSUFBUVhSQk5JQVVnQWlBQVFRQVFVQ0lCYWpZQ3ZBRUxJQVZCMkFKcUVLVUJJQVlnQVNBRlFid0JhaUFGUVFocUlBVW9Bc3dDSUFWQjBBRnFJQVZCRUdvZ0JVRU1haUFIRU9jRURRQWdCVUhZQW1vUXZRRWFEQUVMQ3dKQUlBVkIwQUZxRUI5RkRRQWdCU2dDRENJQ0lBVkJFR3ByUVo4QlNnMEFJQVVnQWtFRWFqWUNEQ0FDSUFVb0FnZzJBZ0FMSUFRZ0FTQUZLQUs4QVNBRElBWVFxUXMyQWdBZ0JVSFFBV29nQlVFUWFpQUZLQUlNSUFNUTd3RWdCVUhZQW1vZ0JVSFFBbW9ReHdFRVFDQURJQU1vQWdCQkFuSTJBZ0FMSUFVb0F0Z0NJUUVnQUJBZ0dpQUZRZEFCYWhBZ0dpQUZRZUFDYWlRQUlBRUxvd01CQTM4akFFSGdBbXNpQlNRQUlBVWdBVFlDMEFJZ0JTQUFOZ0xZQWlBQ0VKb0RJUVlnQWlBRlFlQUJhaERQQlNFSElBVkIwQUZxSUFJZ0JVSE1BbW9RemdVZ0JVSEFBV29RVGlJQUlBQVFYUkJOSUFVZ0FFRUFFRkFpQVRZQ3ZBRWdCU0FGUVJCcU5nSU1JQVZCQURZQ0NBTkFBa0FnQlVIWUFtb2dCVUhRQW1vUTlnRkZEUUFnQlNnQ3ZBRWdBQkFmSUFGcVJnUkFJQUFRSHlFQ0lBQWdBQkFmUVFGMEVFMGdBQ0FBRUYwUVRTQUZJQUlnQUVFQUVGQWlBV28yQXJ3QkN5QUZRZGdDYWhDbEFTQUdJQUVnQlVHOEFXb2dCVUVJYWlBRktBTE1BaUFGUWRBQmFpQUZRUkJxSUFWQkRHb2dCeERuQkEwQUlBVkIyQUpxRUwwQkdnd0JDd3NDUUNBRlFkQUJhaEFmUlEwQUlBVW9BZ3dpQWlBRlFSQnFhMEdmQVVvTkFDQUZJQUpCQkdvMkFnd2dBaUFGS0FJSU5nSUFDeUFFSUFFZ0JTZ0N2QUVnQXlBR0VLc0xPd0VBSUFWQjBBRnFJQVZCRUdvZ0JTZ0NEQ0FERU84QklBVkIyQUpxSUFWQjBBSnFFTWNCQkVBZ0F5QURLQUlBUVFKeU5nSUFDeUFGS0FMWUFpRUJJQUFRSUJvZ0JVSFFBV29RSUJvZ0JVSGdBbW9rQUNBQkN3OEFJQUVnQWlBRElBUWdCUkQvRWd1akF3RURmeU1BUWVBQ2F5SUZKQUFnQlNBQk5nTFFBaUFGSUFBMkF0Z0NJQUlRbWdNaEJpQUNJQVZCNEFGcUVNOEZJUWNnQlVIUUFXb2dBaUFGUWN3Q2FoRE9CU0FGUWNBQmFoQk9JZ0FnQUJCZEVFMGdCU0FBUVFBUVVDSUJOZ0s4QVNBRklBVkJFR28yQWd3Z0JVRUFOZ0lJQTBBQ1FDQUZRZGdDYWlBRlFkQUNhaEQyQVVVTkFDQUZLQUs4QVNBQUVCOGdBV3BHQkVBZ0FCQWZJUUlnQUNBQUVCOUJBWFFRVFNBQUlBQVFYUkJOSUFVZ0FpQUFRUUFRVUNJQmFqWUN2QUVMSUFWQjJBSnFFS1VCSUFZZ0FTQUZRYndCYWlBRlFRaHFJQVVvQXN3Q0lBVkIwQUZxSUFWQkVHb2dCVUVNYWlBSEVPY0VEUUFnQlVIWUFtb1F2UUVhREFFTEN3SkFJQVZCMEFGcUVCOUZEUUFnQlNnQ0RDSUNJQVZCRUdwclFaOEJTZzBBSUFVZ0FrRUVhallDRENBQ0lBVW9BZ2cyQWdBTElBUWdBU0FGS0FLOEFTQURJQVlRckFzM0F3QWdCVUhRQVdvZ0JVRVFhaUFGS0FJTUlBTVE3d0VnQlVIWUFtb2dCVUhRQW1vUXh3RUVRQ0FESUFNb0FnQkJBbkkyQWdBTElBVW9BdGdDSVFFZ0FCQWdHaUFGUWRBQmFoQWdHaUFGUWVBQ2FpUUFJQUVMRHdBZ0FTQUNJQU1nQkNBRkVJRVRDM2tCQVg4akFFRWdheUlESkFBZ0F5QUJOZ0lRSUFNZ0FEWUNHQ0FESUFJMkFnaEJBU0VDQWtBZ0EwRVlhaUFEUVJCcUVCNUZEUUFEUUNBREtBSVlJQU1vQWdnUTlCSkZCRUJCQUNFQ0RBSUxJQU5CR0dvUTdRTWdBMEVJYWhEdEF5QURRUmhxSUFOQkVHb1FIZzBBQ3dzZ0EwRWdhaVFBSUFJTG93TUJBMzhqQUVIZ0Ftc2lCU1FBSUFVZ0FUWUMwQUlnQlNBQU5nTFlBaUFDRUpvRElRWWdBaUFGUWVBQmFoRFBCU0VISUFWQjBBRnFJQUlnQlVITUFtb1F6Z1VnQlVIQUFXb1FUaUlBSUFBUVhSQk5JQVVnQUVFQUVGQWlBVFlDdkFFZ0JTQUZRUkJxTmdJTUlBVkJBRFlDQ0FOQUFrQWdCVUhZQW1vZ0JVSFFBbW9ROWdGRkRRQWdCU2dDdkFFZ0FCQWZJQUZxUmdSQUlBQVFIeUVDSUFBZ0FCQWZRUUYwRUUwZ0FDQUFFRjBRVFNBRklBSWdBRUVBRUZBaUFXbzJBcndCQ3lBRlFkZ0NhaENsQVNBR0lBRWdCVUc4QVdvZ0JVRUlhaUFGS0FMTUFpQUZRZEFCYWlBRlFSQnFJQVZCREdvZ0J4RG5CQTBBSUFWQjJBSnFFTDBCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVb0Fnd2lBaUFGUVJCcWEwR2ZBVW9OQUNBRklBSkJCR28yQWd3Z0FpQUZLQUlJTmdJQUN5QUVJQUVnQlNnQ3ZBRWdBeUFHRUswTE5nSUFJQVZCMEFGcUlBVkJFR29nQlNnQ0RDQURFTzhCSUFWQjJBSnFJQVZCMEFKcUVNY0JCRUFnQXlBREtBSUFRUUp5TmdJQUN5QUZLQUxZQWlFQklBQVFJQm9nQlVIUUFXb1FJQm9nQlVIZ0Ftb2tBQ0FCQ3c4QUlBRWdBaUFESUFRZ0JSQ0VFd3YwQVFFQmZ5TUFRU0JySWdZa0FDQUdJQUUyQWhnQ1FDQURLQUlFUVFGeFJRUkFJQVpCZnpZQ0FDQUdJQUFnQVNBQ0lBTWdCQ0FHSUFBb0FnQW9BaEFSQ3dBaUFUWUNHQ0FHS0FJQUlnQkJBVTBFUUNBQVFRRnJCRUFnQlVFQU9nQUFEQU1MSUFWQkFUb0FBQXdDQ3lBRlFRRTZBQUFnQkVFRU5nSUFEQUVMSUFZZ0F4QmNJQVlRaVFJaEFTQUdFRmtnQmlBREVGd2dCaERvQkNFQUlBWVFXU0FHSUFBUTJRSWdCa0VNY2lBQUVOZ0NJQVVnQmtFWWFpQUNJQVlnQmtFWWFpSURJQUVnQkVFQkVNTUdJQVpHT2dBQUlBWW9BaGdoQVFOQUlBTkJkR29RSUNJRElBWkhEUUFMQ3lBR1FTQnFKQUFnQVF2L0FnRUJmeU1BUVpBQ2F5SUFKQUFnQUNBQ05nS0FBaUFBSUFFMkFvZ0NJQUJCMEFGcUVFNGhCaUFBUVJCcUlBTVFYQ0FBUVJCcUVQb0JRY0M1RWtIYXVSSWdBRUhnQVdvUTdnTWdBRUVRYWhCWklBQkJ3QUZxRUU0aUFpQUNFRjBRVFNBQUlBSkJBQkJRSWdFMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ0RRQUpBSUFCQmlBSnFJQUJCZ0FKcUVQQUJSUTBBSUFBb0Fyd0JJQUlRSHlBQmFrWUVRQ0FDRUI4aEF5QUNJQUlRSDBFQmRCQk5JQUlnQWhCZEVFMGdBQ0FESUFKQkFCQlFJZ0ZxTmdLOEFRc2dBRUdJQW1vUW53RkJFQ0FCSUFCQnZBRnFJQUJCQ0dwQkFDQUdJQUJCRUdvZ0FFRU1haUFBUWVBQmFoRHBCQTBBSUFCQmlBSnFFTFVCR2d3QkN3c2dBaUFBS0FLOEFTQUJheEJOSUFJUUV5RUJFSDhoQXlBQUlBVTJBZ0FnQVNBRElBQVFvd3RCQVVjRVFDQUVRUVEyQWdBTElBQkJpQUpxSUFCQmdBSnFFTDRCQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FLSUFpRUJJQUlRSUJvZ0JoQWdHaUFBUVpBQ2FpUUFJQUVMMlFNQ0FYOEJmaU1BUWFBQ2F5SUZKQUFnQlNBQk5nS1FBaUFGSUFBMkFwZ0NJQVZCNEFGcUlBSWdCVUh3QVdvZ0JVSHZBV29nQlVIdUFXb1ErQWNnQlVIUUFXb1FUaUlCSUFFUVhSQk5JQVVnQVVFQUVGQWlBRFlDekFFZ0JTQUZRU0JxTmdJY0lBVkJBRFlDR0NBRlFRRTZBQmNnQlVIRkFEb0FGZ05BQWtBZ0JVR1lBbW9nQlVHUUFtb1E4QUZGRFFBZ0JTZ0N6QUVnQVJBZklBQnFSZ1JBSUFFUUh5RUNJQUVnQVJBZlFRRjBFRTBnQVNBQkVGMFFUU0FGSUFJZ0FVRUFFRkFpQUdvMkFzd0JDeUFGUVpnQ2FoQ2ZBU0FGUVJkcUlBVkJGbW9nQUNBRlFjd0JhaUFGTEFEdkFTQUZMQUR1QVNBRlFlQUJhaUFGUVNCcUlBVkJIR29nQlVFWWFpQUZRZkFCYWhEM0J3MEFJQVZCbUFKcUVMVUJHZ3dCQ3dzQ1FDQUZRZUFCYWhBZlJRMEFJQVV0QUJkRkRRQWdCU2dDSENJQ0lBVkJJR3ByUVo4QlNnMEFJQVVnQWtFRWFqWUNIQ0FDSUFVb0FoZzJBZ0FMSUFVZ0FDQUZLQUxNQVNBREVLUUxJQVVwQXdBaEJpQUVJQVVwQXdnM0F3Z2dCQ0FHTndNQUlBVkI0QUZxSUFWQklHb2dCU2dDSENBREVPOEJJQVZCbUFKcUlBVkJrQUpxRUw0QkJFQWdBeUFES0FJQVFRSnlOZ0lBQ3lBRktBS1lBaUVBSUFFUUlCb2dCVUhnQVdvUUlCb2dCVUdnQW1va0FDQUFDdzhBSUFFZ0FpQURJQVFnQlJDSUV3dkNBd0VCZnlNQVFaQUNheUlGSkFBZ0JTQUJOZ0tBQWlBRklBQTJBb2dDSUFWQjBBRnFJQUlnQlVIZ0FXb2dCVUhmQVdvZ0JVSGVBV29RK0FjZ0JVSEFBV29RVGlJQklBRVFYUkJOSUFVZ0FVRUFFRkFpQURZQ3ZBRWdCU0FGUVJCcU5nSU1JQVZCQURZQ0NDQUZRUUU2QUFjZ0JVSEZBRG9BQmdOQUFrQWdCVUdJQW1vZ0JVR0FBbW9ROEFGRkRRQWdCU2dDdkFFZ0FSQWZJQUJxUmdSQUlBRVFIeUVDSUFFZ0FSQWZRUUYwRUUwZ0FTQUJFRjBRVFNBRklBSWdBVUVBRUZBaUFHbzJBcndCQ3lBRlFZZ0NhaENmQVNBRlFRZHFJQVZCQm1vZ0FDQUZRYndCYWlBRkxBRGZBU0FGTEFEZUFTQUZRZEFCYWlBRlFSQnFJQVZCREdvZ0JVRUlhaUFGUWVBQmFoRDNCdzBBSUFWQmlBSnFFTFVCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVdEFBZEZEUUFnQlNnQ0RDSUNJQVZCRUdwclFaOEJTZzBBSUFVZ0FrRUVhallDRENBQ0lBVW9BZ2cyQWdBTElBUWdBQ0FGS0FLOEFTQURFS1VMT1FNQUlBVkIwQUZxSUFWQkVHb2dCU2dDRENBREVPOEJJQVZCaUFKcUlBVkJnQUpxRUw0QkJFQWdBeUFES0FJQVFRSnlOZ0lBQ3lBRktBS0lBaUVBSUFFUUlCb2dCVUhRQVdvUUlCb2dCVUdRQW1va0FDQUFDdzhBSUFFZ0FpQURJQVFnQlJDS0V3dkNBd0VCZnlNQVFaQUNheUlGSkFBZ0JTQUJOZ0tBQWlBRklBQTJBb2dDSUFWQjBBRnFJQUlnQlVIZ0FXb2dCVUhmQVdvZ0JVSGVBV29RK0FjZ0JVSEFBV29RVGlJQklBRVFYUkJOSUFVZ0FVRUFFRkFpQURZQ3ZBRWdCU0FGUVJCcU5nSU1JQVZCQURZQ0NDQUZRUUU2QUFjZ0JVSEZBRG9BQmdOQUFrQWdCVUdJQW1vZ0JVR0FBbW9ROEFGRkRRQWdCU2dDdkFFZ0FSQWZJQUJxUmdSQUlBRVFIeUVDSUFFZ0FSQWZRUUYwRUUwZ0FTQUJFRjBRVFNBRklBSWdBVUVBRUZBaUFHbzJBcndCQ3lBRlFZZ0NhaENmQVNBRlFRZHFJQVZCQm1vZ0FDQUZRYndCYWlBRkxBRGZBU0FGTEFEZUFTQUZRZEFCYWlBRlFSQnFJQVZCREdvZ0JVRUlhaUFGUWVBQmFoRDNCdzBBSUFWQmlBSnFFTFVCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVdEFBZEZEUUFnQlNnQ0RDSUNJQVZCRUdwclFaOEJTZzBBSUFVZ0FrRUVhallDRENBQ0lBVW9BZ2cyQWdBTElBUWdBQ0FGS0FLOEFTQURFS1lMT0FJQUlBVkIwQUZxSUFWQkVHb2dCU2dDRENBREVPOEJJQVZCaUFKcUlBVkJnQUpxRUw0QkJFQWdBeUFES0FJQVFRSnlOZ0lBQ3lBRktBS0lBaUVBSUFFUUlCb2dCVUhRQVdvUUlCb2dCVUdRQW1va0FDQUFDdzhBSUFFZ0FpQURJQVFnQlJDTUV3dVlBd0VDZnlNQVFaQUNheUlGSkFBZ0JTQUJOZ0tBQWlBRklBQTJBb2dDSUFJUW1nTWhCaUFGUWRBQmFpQUNJQVZCL3dGcUVOQUZJQVZCd0FGcUVFNGlBQ0FBRUYwUVRTQUZJQUJCQUJCUUlnRTJBcndCSUFVZ0JVRVFhallDRENBRlFRQTJBZ2dEUUFKQUlBVkJpQUpxSUFWQmdBSnFFUEFCUlEwQUlBVW9BcndCSUFBUUh5QUJha1lFUUNBQUVCOGhBaUFBSUFBUUgwRUJkQkJOSUFBZ0FCQmRFRTBnQlNBQ0lBQkJBQkJRSWdGcU5nSzhBUXNnQlVHSUFtb1Fud0VnQmlBQklBVkJ2QUZxSUFWQkNHb2dCU3dBL3dFZ0JVSFFBV29nQlVFUWFpQUZRUXhxUWNDNUVoRHBCQTBBSUFWQmlBSnFFTFVCR2d3QkN3c0NRQ0FGUWRBQmFoQWZSUTBBSUFVb0Fnd2lBaUFGUVJCcWEwR2ZBVW9OQUNBRklBSkJCR28yQWd3Z0FpQUZLQUlJTmdJQUN5QUVJQUVnQlNnQ3ZBRWdBeUFHRUtjTE53TUFJQVZCMEFGcUlBVkJFR29nQlNnQ0RDQURFTzhCSUFWQmlBSnFJQVZCZ0FKcUVMNEJCRUFnQXlBREtBSUFRUUp5TmdJQUN5QUZLQUtJQWlFQklBQVFJQm9nQlVIUUFXb1FJQm9nQlVHUUFtb2tBQ0FCQ3c4QUlBRWdBaUFESUFRZ0JSQ09Fd3VZQXdFQ2Z5TUFRWkFDYXlJRkpBQWdCU0FCTmdLQUFpQUZJQUEyQW9nQ0lBSVFtZ01oQmlBRlFkQUJhaUFDSUFWQi93RnFFTkFGSUFWQndBRnFFRTRpQUNBQUVGMFFUU0FGSUFCQkFCQlFJZ0UyQXJ3QklBVWdCVUVRYWpZQ0RDQUZRUUEyQWdnRFFBSkFJQVZCaUFKcUlBVkJnQUpxRVBBQlJRMEFJQVVvQXJ3QklBQVFIeUFCYWtZRVFDQUFFQjhoQWlBQUlBQVFIMEVCZEJCTklBQWdBQkJkRUUwZ0JTQUNJQUJCQUJCUUlnRnFOZ0s4QVFzZ0JVR0lBbW9RbndFZ0JpQUJJQVZCdkFGcUlBVkJDR29nQlN3QS93RWdCVUhRQVdvZ0JVRVFhaUFGUVF4cVFjQzVFaERwQkEwQUlBVkJpQUpxRUxVQkdnd0JDd3NDUUNBRlFkQUJhaEFmUlEwQUlBVW9BZ3dpQWlBRlFSQnFhMEdmQVVvTkFDQUZJQUpCQkdvMkFnd2dBaUFGS0FJSU5nSUFDeUFFSUFFZ0JTZ0N2QUVnQXlBR0VLa0xOZ0lBSUFWQjBBRnFJQVZCRUdvZ0JTZ0NEQ0FERU84QklBVkJpQUpxSUFWQmdBSnFFTDRCQkVBZ0F5QURLQUlBUVFKeU5nSUFDeUFGS0FLSUFpRUJJQUFRSUJvZ0JVSFFBV29RSUJvZ0JVR1FBbW9rQUNBQkM1Z0RBUUovSXdCQmtBSnJJZ1VrQUNBRklBRTJBb0FDSUFVZ0FEWUNpQUlnQWhDYUF5RUdJQVZCMEFGcUlBSWdCVUgvQVdvUTBBVWdCVUhBQVdvUVRpSUFJQUFRWFJCTklBVWdBRUVBRUZBaUFUWUN2QUVnQlNBRlFSQnFOZ0lNSUFWQkFEWUNDQU5BQWtBZ0JVR0lBbW9nQlVHQUFtb1E4QUZGRFFBZ0JTZ0N2QUVnQUJBZklBRnFSZ1JBSUFBUUh5RUNJQUFnQUJBZlFRRjBFRTBnQUNBQUVGMFFUU0FGSUFJZ0FFRUFFRkFpQVdvMkFyd0JDeUFGUVlnQ2FoQ2ZBU0FHSUFFZ0JVRzhBV29nQlVFSWFpQUZMQUQvQVNBRlFkQUJhaUFGUVJCcUlBVkJER3BCd0xrU0VPa0VEUUFnQlVHSUFtb1F0UUVhREFFTEN3SkFJQVZCMEFGcUVCOUZEUUFnQlNnQ0RDSUNJQVZCRUdwclFaOEJTZzBBSUFVZ0FrRUVhallDRENBQ0lBVW9BZ2cyQWdBTElBUWdBU0FGS0FLOEFTQURJQVlRcXdzN0FRQWdCVUhRQVdvZ0JVRVFhaUFGS0FJTUlBTVE3d0VnQlVHSUFtb2dCVUdBQW1vUXZnRUVRQ0FESUFNb0FnQkJBbkkyQWdBTElBVW9Bb2dDSVFFZ0FCQWdHaUFGUWRBQmFoQWdHaUFGUVpBQ2FpUUFJQUVMRHdBZ0FTQUNJQU1nQkNBRkVKRVRDNWdEQVFKL0l3QkJrQUpySWdVa0FDQUZJQUUyQW9BQ0lBVWdBRFlDaUFJZ0FoQ2FBeUVHSUFWQjBBRnFJQUlnQlVIL0FXb1EwQVVnQlVIQUFXb1FUaUlBSUFBUVhSQk5JQVVnQUVFQUVGQWlBVFlDdkFFZ0JTQUZRUkJxTmdJTUlBVkJBRFlDQ0FOQUFrQWdCVUdJQW1vZ0JVR0FBbW9ROEFGRkRRQWdCU2dDdkFFZ0FCQWZJQUZxUmdSQUlBQVFIeUVDSUFBZ0FCQWZRUUYwRUUwZ0FDQUFFRjBRVFNBRklBSWdBRUVBRUZBaUFXbzJBcndCQ3lBRlFZZ0NhaENmQVNBR0lBRWdCVUc4QVdvZ0JVRUlhaUFGTEFEL0FTQUZRZEFCYWlBRlFSQnFJQVZCREdwQndMa1NFT2tFRFFBZ0JVR0lBbW9RdFFFYURBRUxDd0pBSUFWQjBBRnFFQjlGRFFBZ0JTZ0NEQ0lDSUFWQkVHcHJRWjhCU2cwQUlBVWdBa0VFYWpZQ0RDQUNJQVVvQWdnMkFnQUxJQVFnQVNBRktBSzhBU0FESUFZUXJBczNBd0FnQlVIUUFXb2dCVUVRYWlBRktBSU1JQU1RN3dFZ0JVR0lBbW9nQlVHQUFtb1F2Z0VFUUNBRElBTW9BZ0JCQW5JMkFnQUxJQVVvQW9nQ0lRRWdBQkFnR2lBRlFkQUJhaEFnR2lBRlFaQUNhaVFBSUFFTER3QWdBU0FDSUFNZ0JDQUZFSk1UQzBVQUFuOUJBQ0FBRVBRQklBRVE5QUZIRFFBYUlBQVE5QUZGQkVCQkFTQUJFUFFCUlEwQkdnc2dBQ2dDUUNJQUlBRW9Ba0FpQVVZRVFFRUJEd3NnQUNBQkVLTUNDd3VZQXdFQ2Z5TUFRWkFDYXlJRkpBQWdCU0FCTmdLQUFpQUZJQUEyQW9nQ0lBSVFtZ01oQmlBRlFkQUJhaUFDSUFWQi93RnFFTkFGSUFWQndBRnFFRTRpQUNBQUVGMFFUU0FGSUFCQkFCQlFJZ0UyQXJ3QklBVWdCVUVRYWpZQ0RDQUZRUUEyQWdnRFFBSkFJQVZCaUFKcUlBVkJnQUpxRVBBQlJRMEFJQVVvQXJ3QklBQVFIeUFCYWtZRVFDQUFFQjhoQWlBQUlBQVFIMEVCZEJCTklBQWdBQkJkRUUwZ0JTQUNJQUJCQUJCUUlnRnFOZ0s4QVFzZ0JVR0lBbW9RbndFZ0JpQUJJQVZCdkFGcUlBVkJDR29nQlN3QS93RWdCVUhRQVdvZ0JVRVFhaUFGUVF4cVFjQzVFaERwQkEwQUlBVkJpQUpxRUxVQkdnd0JDd3NDUUNBRlFkQUJhaEFmUlEwQUlBVW9BZ3dpQWlBRlFSQnFhMEdmQVVvTkFDQUZJQUpCQkdvMkFnd2dBaUFGS0FJSU5nSUFDeUFFSUFFZ0JTZ0N2QUVnQXlBR0VLMExOZ0lBSUFWQjBBRnFJQVZCRUdvZ0JTZ0NEQ0FERU84QklBVkJpQUpxSUFWQmdBSnFFTDRCQkVBZ0F5QURLQUlBUVFKeU5nSUFDeUFGS0FLSUFpRUJJQUFRSUJvZ0JVSFFBV29RSUJvZ0JVR1FBbW9rQUNBQkN3OEFJQUVnQWlBRElBUWdCUkNXRXd1b0FnRURmd0pBQWtBZ0FDQUFLQUlBS0FLSUFSRUFBRVVFUUVFQklRTWdBU0FCS0FJQUtBS0lBUkVBQUVVTkFRc0NRQ0FBSUFBb0FnQW9Bb2dCRVFBQVJRMEFJQUVnQVNnQ0FDZ0NpQUVSQUFCRkRRQWdBQ2dDUUNBQktBSkFSZzBDQzBFQUlRTWdBQ0FBS0FJQUtBS0lBUkVBQUVVTkFDQUJJQUVvQWdBb0FvZ0JFUUFBUlEwQUlBQW9Ba0FRTnlBQktBSkFFRGRIRFFBZ0FDZ0NTQ0FCS0FKSUVLTUpEUUFnQUNnQ1FCQTNSUTBCQTBCQkFDRURJQUFvQWtBZ0FoQTRLQUlBSWdRZ0JDZ0NBQ2dDR0JFQUFDQUJLQUpBSUFJUU9DZ0NBQ0lFSUFRb0FnQW9BaGdSQUFBUW93a05BU0FBS0FKQUlBSVFPQ2dDQUNBQktBSkFJQUlRT0NnQ0FCREFBUTBCUVFFaEF5QUNRUUZxSWdJZ0FDZ0NRQkEzU1EwQUN3c2dBdzhMUVFFTDlBRUJBWDhqQUVFZ2F5SUdKQUFnQmlBQk5nSVlBa0FnQXlnQ0JFRUJjVVVFUUNBR1FYODJBZ0FnQmlBQUlBRWdBaUFESUFRZ0JpQUFLQUlBS0FJUUVRc0FJZ0UyQWhnZ0JpZ0NBQ0lBUVFGTkJFQWdBRUVCYXdSQUlBVkJBRG9BQUF3REN5QUZRUUU2QUFBTUFnc2dCVUVCT2dBQUlBUkJCRFlDQUF3QkN5QUdJQU1RWENBR0VQb0JJUUVnQmhCWklBWWdBeEJjSUFZUTZnUWhBQ0FHRUZrZ0JpQUFFTmtDSUFaQkRISWdBQkRZQWlBRklBWkJHR29nQWlBR0lBWkJHR29pQXlBQklBUkJBUkRGQmlBR1Jqb0FBQ0FHS0FJWUlRRURRQ0FEUVhScUVDQWlBeUFHUncwQUN3c2dCa0VnYWlRQUlBRUxRQUVCZjBFQUlRQURmeUFCSUFKR0JIOGdBQVVnQVNnQ0FDQUFRUVIwYWlJQVFZQ0FnSUIvY1NJRFFSaDJJQU55SUFCeklRQWdBVUVFYWlFQkRBRUxDd3NRQUNBQUVPb0JJQUFnQWlBREVLOExDMVFCQW44Q1FBTkFJQU1nQkVjRVFFRi9JUUFnQVNBQ1JnMENJQUVvQWdBaUJTQURLQUlBSWdaSURRSWdCaUFGU0FSQVFRRVBCU0FEUVFScUlRTWdBVUVFYWlFQkRBSUxBQXNMSUFFZ0FrY2hBQXNnQUF0QUFRRi9RUUFoQUFOL0lBRWdBa1lFZnlBQUJTQUJMQUFBSUFCQkJIUnFJZ0JCZ0lDQWdIOXhJZ05CR0hZZ0EzSWdBSE1oQUNBQlFRRnFJUUVNQVFzTEM1WUJBUVIvSXdCQkVHc2lCU1FBSUFFZ0FoRFdDQ0lFUVc5TkJFQUNRQ0FFUVFwTkJFQWdBQ0FFRU5RQklBQWhBd3dCQ3lBQUlBQWdCQkRrQWtFQmFpSUdFSUVFSWdNUTRRRWdBQ0FHRU9rQklBQWdCQkM4QVFzRFFDQUJJQUpIQkVBZ0F5QUJFSlFCSUFOQkFXb2hBeUFCUVFGcUlRRU1BUXNMSUFWQkFEb0FEeUFESUFWQkQyb1FsQUVnQlVFUWFpUUFEd3NRYmdBTEVBQWdBQkRxQVNBQUlBSWdBeENlRXd0VUFRSi9Ba0FEUUNBRElBUkhCRUJCZnlFQUlBRWdBa1lOQWlBQkxBQUFJZ1VnQXl3QUFDSUdTQTBDSUFZZ0JVZ0VRRUVCRHdVZ0EwRUJhaUVESUFGQkFXb2hBUXdDQ3dBTEN5QUJJQUpISVFBTElBQUxOUUVCZmlNQVFSQnJJZ01rQUNBRElBRWdBaENpRXlBREtRTUFJUVFnQUNBREtRTUlOd01JSUFBZ0JEY0RBQ0FEUVJCcUpBQUxPUUlCZndGK0l3QkJFR3NpQXlRQUlBTWdBU0FDUVFJUStRY2dBeWtEQUNFRUlBQWdBeWtEQ0RjRENDQUFJQVEzQXdBZ0EwRVFhaVFBQ3pJQ0FYOEJmQ01BUVJCcklnSWtBQ0FDSUFBZ0FVRUJFUGtISUFJcEF3QWdBaWtEQ0JETUJpRURJQUpCRUdva0FDQURDeklDQVg4QmZTTUFRUkJySWdJa0FDQUNJQUFnQVVFQUVQa0hJQUlwQXdBZ0Fpa0RDQkMrQ3lFRElBSkJFR29rQUNBREM0VURBUVovSXdCQmtBaHJJZ1lrQUNBR0lBRW9BZ0FpQnpZQ0RDQUFJQVpCRUdvZ0FCc2hDQUpBSUFOQmdBSWdBQnNpQTBVZ0IwVnlEUUFnQWtFQ2RpSUZJQU5QSVFvZ0FrR0RBVTFCQUNBRklBTkpHdzBBQTBBZ0FpQURJQVVnQ2hzaUJXc2hBaUFJSUFaQkRHb2dCU0FFRUxRTElnVkJmMFlFUUVFQUlRTWdCaWdDRENFSFFYOGhDUXdDQ3lBSUlBZ2dCVUVDZEdvZ0NDQUdRUkJxUmlJSEd5RUlJQVVnQ1dvaENTQURRUUFnQlNBSEcyc2lBMFVnQmlnQ0RDSUhSWElOQVNBQ1FRSjJJZ1VnQTA4aENpQUNRWU1CU3lBRklBTlBjZzBBQ3dzQ1FBSkFJQUpGSUFkRklBTkZjbklOQUFOQUlBZ2dCeUFDSUFRUXlBWWlCVUVDYWtFQ1RRUkFJQVZCQVdvaUFrRUJUUVJBSUFKQkFXc05CQ0FHUVFBMkFnd01Bd3NnQkVFQU5nSUFEQUlMSUFZZ0JpZ0NEQ0FGYWlJSE5nSU1JQWxCQVdvaENTQURRWDlxSWdORkRRRWdDRUVFYWlFSUlBSWdCV3NoQWlBSklRVWdBZzBBQ3d3QkN5QUpJUVVMSUFBRVFDQUJJQVlvQWd3MkFnQUxJQVpCa0FocUpBQWdCUXZSQWdFR2Z5TUFRWkFDYXlJRkpBQWdCU0FCS0FJQUlnWTJBZ3dnQUNBRlFSQnFJQUFiSVFjQ1FDQURRWUFDSUFBYklnTkZJQVpGY2cwQUlBTWdBazBpQkNBQ1FTQkxja1VOQUFOQUlBSWdBeUFDSUFRYklnUnJJUUlnQnlBRlFReHFJQVFRcHhNaUJFRi9SZ1JBUVFBaEF5QUZLQUlNSVFaQmZ5RUlEQUlMSUFjZ0JDQUhhaUFISUFWQkVHcEdJZ1liSVFjZ0JDQUlhaUVJSUFOQkFDQUVJQVliYXlJRFJTQUZLQUlNSWdaRmNnMEJJQUlnQTA4aUJDQUNRU0ZQY2cwQUN3c0NRQUpBSUFKRklBWkZJQU5GY25JTkFBTkFJQWNnQmlnQ0FCQ29CQ0lKUVFGcVFRRk5CRUJCZnlFRUlBa05BeUFGUVFBMkFnd01BZ3NnQlNBRktBSU1RUVJxSWdZMkFnd2dDQ0FKYWlFSUlBTWdDV3NpQTBVTkFTQUhJQWxxSVFjZ0NDRUVJQUpCZjJvaUFnMEFDd3dCQ3lBSUlRUUxJQUFFUUNBQklBVW9BZ3cyQWdBTElBVkJrQUpxSkFBZ0JBdTNBd0VGZnlNQVFSQnJJZ2NrQUFKQUFrQUNRQUpBSUFBRVFDQUNRUVJQRFFFZ0FpRUREQUlMUVFBaEFpQUJLQUlBSWdBb0FnQWlBMFVOQXdOQVFRRWhCU0FEUVlBQlR3UkFRWDhoQmlBSFFReHFJQU1RcUFRaUJVRi9SZzBGQ3lBQUtBSUVJUU1nQUVFRWFpRUFJQUlnQldvaUFpRUdJQU1OQUFzTUF3c2dBU2dDQUNFRklBSWhBd05BQW44Z0JTZ0NBQ0lFUVg5cVFmOEFUd1JBSUFSRkJFQWdBRUVBT2dBQUlBRkJBRFlDQUF3RkMwRi9JUVlnQUNBRUVLZ0VJZ1JCZjBZTkJTQURJQVJySVFNZ0FDQUVhZ3dCQ3lBQUlBUTZBQUFnQTBGL2FpRURJQUVvQWdBaEJTQUFRUUZxQ3lFQUlBRWdCVUVFYWlJRk5nSUFJQU5CQTBzTkFBc0xJQU1FUUNBQktBSUFJUVVEUUFKL0lBVW9BZ0FpQkVGL2FrSC9BRThFUUNBRVJRUkFJQUJCQURvQUFDQUJRUUEyQWdBTUJRdEJmeUVHSUFkQkRHb2dCQkNvQkNJRVFYOUdEUVVnQXlBRVNRMEVJQUFnQlNnQ0FCQ29CQm9nQXlBRWF5RURJQUFnQkdvTUFRc2dBQ0FFT2dBQUlBTkJmMm9oQXlBQktBSUFJUVVnQUVFQmFnc2hBQ0FCSUFWQkJHb2lCVFlDQUNBRERRQUxDeUFDSVFZTUFRc2dBaUFEYXlFR0N5QUhRUkJxSkFBZ0JndGpBUUovSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FESUFJMkFnaEJmeUVFQWtCQkFFRUFJQUVnQWhEVkJTSUNRUUJJRFFBZ0FDQUNRUUZxSWdJUW13RWlBRFlDQUNBQVJRMEFJQUFnQWlBQklBTW9BZ3dRMVFVaEJBc2dBMEVRYWlRQUlBUUwyUUVCQkg4akFFRWdheUlCSkFBQ2Z3SkFRUUFRdVFzRVFBTkFRZi8vLy84SElBQjJRUUZ4QkVBZ0FFRUNkQ0FBUWRXN0VoQzZDellDQUFzZ0FFRUJhaUlBUVFaSERRQUxEQUVMQTBBZ0FVRUlhaUFBUVFKMGFnSi9RUUVnQUhSQi8vLy8vd2R4SWdKQkFYSkZCRUFnQUVFQ2RDZ0NBQXdCQ3lBQVFkVzdFa0dZbXhJZ0Foc1F1Z3NMSWdJMkFnQWdBeUFDUVFCSGFpRURJQUJCQVdvaUFFRUdSdzBBQ3lBRFFRRkxEUUJCOEprU0lBTkJBV3NOQVJvZ0FTZ0NDRUhVbVJKSERRQkJpSm9TREFFTFFRQUxJUUFnQVVFZ2FpUUFJQUFMUkFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWdRZ0FpQUFOZ0lBUWRzQUlBSVFEU0lBUVlGZ1R3Ui9RZGpBRkVFQUlBQnJOZ0lBUVFBRklBQUxHaUFDUVJCcUpBQUxqZ0VCQTM4akFFRVFheUlBSkFBQ1FDQUFRUXhxSUFCQkNHb1FCQTBBUWF6SkZDQUFLQUlNUVFKMFFRUnFFSnNCSWdFMkFnQWdBVVVOQUFKQUlBQW9BZ2dRbXdFaUFRUkFRYXpKRkNnQ0FDSUNEUUVMUWF6SkZFRUFOZ0lBREFFTElBSWdBQ2dDREVFQ2RHcEJBRFlDQUVHc3lSUW9BZ0FnQVJBRFJRMEFRYXpKRkVFQU5nSUFDeUFBUVJCcUpBQUxDd0FnQUNBQklBSVFyUk1MVkFFQ2Z5QUJJQUFvQWxRaUFTQUJRUUFnQWtHQUFtb2lBeEROQmlJRUlBRnJJQU1nQkJzaUF5QUNJQU1nQWtrYklnSVFQUm9nQUNBQklBTnFJZ00yQWxRZ0FDQUROZ0lJSUFBZ0FTQUNhallDQkNBQ0N6QUJBWDhqQUVFUWF5SUNJQUEyQWd3Z0FpQUFJQUZCQW5RZ0FVRUFSMEVDZEd0cUlnQkJCR28yQWdnZ0FDZ0NBQXVvRXdJTmZ3TitJd0JCc0FKcklnWWtBQ0FBS0FKTVFRQk9CSDlCQVFVZ0F3c2FBa0FnQVMwQUFDSUVSUTBBQWtBRFFBSkFBa0FnQkVIL0FYRVFxUVFFUUFOQUlBRWlCRUVCYWlFQklBUXRBQUVRcVFRTkFBc2dBRUlBRU5zQ0EwQUNmeUFBS0FJRUlnRWdBQ2dDYUVrRVFDQUFJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QUFFSHNMRUtrRURRQUxBa0FnQUNnQ2FFVUVRQ0FBS0FJRUlRRU1BUXNnQUNBQUtBSUVRWDlxSWdFMkFnUUxJQUVnQUNnQ0NHdXNJQUFwQTNnZ0VIeDhJUkFNQVFzQ2Z3SkFBa0FnQVMwQUFDSUVRU1ZHQkVBZ0FTMEFBU0lEUVNwR0RRRWdBMEVsUncwQ0N5QUFRZ0FRMndJZ0FTQUVRU1ZHYWlFRUFuOGdBQ2dDQkNJQklBQW9BbWhKQkVBZ0FDQUJRUUZxTmdJRUlBRXRBQUFNQVFzZ0FCQjdDeUlCSUFRdEFBQkhCRUFnQUNnQ2FBUkFJQUFnQUNnQ0JFRi9hallDQkF0QkFDRU1JQUZCQUU0TkNBd0ZDeUFRUWdGOElSQU1Bd3RCQUNFSElBRkJBbW9NQVFzQ1FDQURFTTBDUlEwQUlBRXRBQUpCSkVjTkFDQUNJQUV0QUFGQlVHb1FyaE1oQnlBQlFRTnFEQUVMSUFJb0FnQWhCeUFDUVFScUlRSWdBVUVCYWdzaEJFRUFJUXhCQUNFQklBUXRBQUFRelFJRVFBTkFJQVF0QUFBZ0FVRUtiR3BCVUdvaEFTQUVMUUFCSVFNZ0JFRUJhaUVFSUFNUXpRSU5BQXNMQW44Z0JDQUVMUUFBSWdWQjdRQkhEUUFhUVFBaENTQUhRUUJISVF3Z0JDMEFBU0VGUVFBaENpQUVRUUZxQ3lFRElBVkIvd0Z4UWI5L2FpSUlRVGxMRFFFZ0EwRUJhaUVFUVFNaEJRSkFBa0FDUUFKQUFrQUNRQ0FJUVFGckRqa0hCQWNFQkFRSEJ3Y0hBd2NIQndjSEJ3UUhCd2NIQkFjSEJBY0hCd2NIQkFjRUJBUUVCQUFFQlFjQkJ3UUVCQWNIQkFJRUJ3Y0VCd0lFQ3lBRFFRSnFJQVFnQXkwQUFVSG9BRVlpQXhzaEJFRitRWDhnQXhzaEJRd0VDeUFEUVFKcUlBUWdBeTBBQVVIc0FFWWlBeHNoQkVFRFFRRWdBeHNoQlF3REMwRUJJUVVNQWd0QkFpRUZEQUVMUVFBaEJTQURJUVFMUVFFZ0JTQUVMUUFBSWdOQkwzRkJBMFlpQ0JzaERnSkFJQU5CSUhJZ0F5QUlHeUlMUWRzQVJnMEFBa0FnQzBIdUFFY0VRQ0FMUWVNQVJ3MEJJQUZCQVNBQlFRRktHeUVCREFJTElBY2dEaUFRRUwwTERBSUxJQUJDQUJEYkFnTkFBbjhnQUNnQ0JDSURJQUFvQW1oSkJFQWdBQ0FEUVFGcU5nSUVJQU10QUFBTUFRc2dBQkI3Q3hDcEJBMEFDd0pBSUFBb0FtaEZCRUFnQUNnQ0JDRUREQUVMSUFBZ0FDZ0NCRUYvYWlJRE5nSUVDeUFESUFBb0FnaHJyQ0FBS1FONElCQjhmQ0VRQ3lBQUlBR3NJaEVRMndJQ1FDQUFLQUlFSWdnZ0FDZ0NhQ0lEU1FSQUlBQWdDRUVCYWpZQ0JBd0JDeUFBRUh0QkFFZ05BaUFBS0FKb0lRTUxJQU1FUUNBQUlBQW9BZ1JCZjJvMkFnUUxBa0FDUUNBTFFhaC9haUlEUVNCTEJFQWdDMEcvZjJvaUFVRUdTMEVCSUFGMFFmRUFjVVZ5RFFJTUFRdEJFQ0VGQWtBQ1FBSkFBa0FDUUNBRFFRRnJEaDhHQmdRR0JnWUdCZ1VHQkFFRkJRVUdBQVlHQmdZR0FnTUdCZ1FHQVFZR0F3dEJBQ0VGREFJTFFRb2hCUXdCQzBFSUlRVUxJQUFnQlVFQVFuOFE0Z3NoRVNBQUtRTjRRZ0FnQUNnQ0JDQUFLQUlJYTZ4OVVRMEdJQWRGSUF0QjhBQkhja1VFUUNBSElCRStBZ0FNQXdzZ0J5QU9JQkVRdlFzTUFnc0NRQ0FMUVJCeVFmTUFSZ1JBSUFaQklHcEJmMEdCQWhEZEFSb2dCa0VBT2dBZ0lBdEI4d0JIRFFFZ0JrRUFPZ0JCSUFaQkFEb0FMaUFHUVFBMkFTb01BUXNnQmtFZ2FpQUVMUUFCSWdOQjNnQkdJZ2hCZ1FJUTNRRWFJQVpCQURvQUlDQUVRUUpxSUFSQkFXb2dDQnNoRFFKL0FrQUNRQ0FFUVFKQkFTQUlHMm90QUFBaUJFRXRSd1JBSUFSQjNRQkdEUUVnQTBIZUFFY2hCU0FOREFNTElBWWdBMEhlQUVjaUJUb0FUZ3dCQ3lBR0lBTkIzZ0JISWdVNkFINExJQTFCQVdvTElRUURRQUpBSUFRdEFBQWlBMEV0UndSQUlBTkZEUWNnQTBIZEFFY05BUXdEQzBFdElRTWdCQzBBQVNJSVJTQUlRZDBBUm5JTkFDQUVRUUZxSVEwQ1FDQUVRWDlxTFFBQUlnUWdDRThFUUNBSUlRTU1BUXNEUUNBRVFRRnFJZ1FnQmtFZ2Ftb2dCVG9BQUNBRUlBMHRBQUFpQTBrTkFBc0xJQTBoQkFzZ0F5QUdhaUFGT2dBaElBUkJBV29oQkF3QUFBc0FDeUFCUVFGcVFSOGdDMEhqQUVZaUNCc2hCUUpBQWtBQ1FDQU9RUUZISWcxRkJFQWdCeUVESUF3RVFDQUZRUUowRUpzQklnTkZEUVFMSUFaQ0FEY0RxQUpCQUNFQkEwQWdBeUVLQWtBRFFBSi9JQUFvQWdRaUF5QUFLQUpvU1FSQUlBQWdBMEVCYWpZQ0JDQURMUUFBREFFTElBQVFld3NpQXlBR2FpMEFJVVVOQVNBR0lBTTZBQnNnQmtFY2FpQUdRUnRxUVFFZ0JrR29BbW9ReUFZaUEwRitSZzBBSUFOQmYwWU5CU0FLQkVBZ0NpQUJRUUowYWlBR0tBSWNOZ0lBSUFGQkFXb2hBUXNnREVVZ0FTQUZSM0lOQUFzZ0NpQUZRUUYwUVFGeUlnVkJBblFRc0FZaUF3MEJEQVFMQ3dKL1FRRWdCa0dvQW1vaUEwVU5BQm9nQXlnQ0FFVUxSUTBDUVFBaENRd0JDeUFNQkVCQkFDRUJJQVVRbXdFaUEwVU5Bd05BSUFNaENRTkFBbjhnQUNnQ0JDSURJQUFvQW1oSkJFQWdBQ0FEUVFGcU5nSUVJQU10QUFBTUFRc2dBQkI3Q3lJRElBWnFMUUFoUlFSQVFRQWhDZ3dFQ3lBQklBbHFJQU02QUFBZ0FVRUJhaUlCSUFWSERRQUxRUUFoQ2lBSklBVkJBWFJCQVhJaUJSQ3dCaUlERFFBTERBY0xRUUFoQVNBSEJFQURRQUovSUFBb0FnUWlBeUFBS0FKb1NRUkFJQUFnQTBFQmFqWUNCQ0FETFFBQURBRUxJQUFRZXdzaUF5QUdhaTBBSVFSQUlBRWdCMm9nQXpvQUFDQUJRUUZxSVFFTUFRVkJBQ0VLSUFjaENRd0RDd0FBQ3dBTEEwQUNmeUFBS0FJRUlnRWdBQ2dDYUVrRVFDQUFJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QUFFSHNMSUFacUxRQWhEUUFMUVFBaENVRUFJUXBCQUNFQkN3SkFJQUFvQW1oRkJFQWdBQ2dDQkNFRERBRUxJQUFnQUNnQ0JFRi9haUlETmdJRUN5QUFLUU40SUFNZ0FDZ0NDR3VzZkNJU1VDQVJJQkpTUVFBZ0NCdHlEUWNDUUNBTVJRMEFJQTFGQkVBZ0J5QUtOZ0lBREFFTElBY2dDVFlDQUFzZ0NBMERJQW9FUUNBS0lBRkJBblJxUVFBMkFnQUxJQWxGQkVCQkFDRUpEQVFMSUFFZ0NXcEJBRG9BQUF3REMwRUFJUWtNQkF0QkFDRUpRUUFoQ2d3REN5QUdJQUFnRGtFQUVNQUxJQUFwQTNoQ0FDQUFLQUlFSUFBb0FnaHJySDFSRFFRZ0IwVWdEa0VDUzNJTkFDQUdLUU1JSVJFZ0Jpa0RBQ0VTQWtBQ1FBSkFJQTVCQVdzT0FnRUNBQXNnQnlBU0lCRVF2Z3M0QWdBTUFnc2dCeUFTSUJFUXpBWTVBd0FNQVFzZ0J5QVNOd01BSUFjZ0VUY0RDQXNnQUNnQ0JDQUFLQUlJYTZ3Z0FDa0RlQ0FRZkh3aEVDQVBJQWRCQUVkcUlROExJQVJCQVdvaEFTQUVMUUFCSWdRTkFRd0RDd3NnRDBGL0lBOGJJUThMSUF4RkRRQWdDUkFxSUFvUUtnc2dCa0d3QW1va0FDQVBDOWtiQXd4L0JuNEJmQ01BUVlER0FHc2lCeVFBUVFBZ0F5QUVhaUlSYXlFU0FrQUNmd05BQWtBZ0FrRXdSd1JBSUFKQkxrY05CQ0FCS0FJRUlnSWdBU2dDYUU4TkFTQUJJQUpCQVdvMkFnUWdBaTBBQUF3REN5QUJLQUlFSWdJZ0FTZ0NhRWtFUUVFQklRb2dBU0FDUVFGcU5nSUVJQUl0QUFBaEFnVWdBUkI3SVFKQkFTRUtDd3dCQ3dzZ0FSQjdDeUVDUVFFaEN5QUNRVEJIRFFBRFFDQVRRbjk4SVJNQ2Z5QUJLQUlFSWdJZ0FTZ0NhRWtFUUNBQklBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQkVIc0xJZ0pCTUVZTkFBdEJBU0VLQ3lBSFFRQTJBb0FHSUFBQ2ZnSkFBa0FDUUFKQUlBSkJMa1lpQ1NBQ1FWQnFJZzVCQ1UxeUJFQURRQUpBSUFsQkFYRUVRQ0FMUlFSQUlCUWhFMEVCSVFzTUFnc2dDa0VBUnlFS0RBUUxJQlJDQVh3aEZDQUlRZndQVEFSQUlCU25JQTBnQWtFd1J4c2hEU0FIUVlBR2FpQUlRUUowYWlJSklBd0VmeUFDSUFrb0FnQkJDbXhxUVZCcUJTQU9DellDQUVFQklRcEJBQ0FNUVFGcUlnSWdBa0VKUmlJQ0d5RU1JQUlnQ0dvaENBd0JDeUFDUVRCR0RRQWdCeUFIS0FMd1JVRUJjallDOEVVTEFuOGdBU2dDQkNJQ0lBRW9BbWhKQkVBZ0FTQUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0FSQjdDeUlDUVM1R0lna2dBa0ZRYWlJT1FRcEpjZzBBQ3dzZ0V5QVVJQXNiSVJNZ0NrVWdBa0VnY2tIbEFFZHlSUVJBQWtBZ0FTQUdFTDhMSWhWQ2dJQ0FnSUNBZ0lDQWYxSU5BQ0FHUlEwRVFnQWhGU0FCS0FKb1JRMEFJQUVnQVNnQ0JFRi9hallDQkFzZ0V5QVZmQ0VUREFRTElBcEJBRWNoQ2lBQ1FRQklEUUVMSUFFb0FtaEZEUUFnQVNBQktBSUVRWDlxTmdJRUN5QUtEUUZCMk1BVVFSdzJBZ0FMSUFGQ0FCRGJBa0lBSVJOQ0FBd0JDeUFIS0FLQUJpSUJSUVJBSUFjZ0JiZEVBQUFBQUFBQUFBQ2lFSndESUFjcEF3Z2hFeUFIS1FNQURBRUxJQk1nRkZJZ0ZFSUpWWElnQTBFZVRFRUFJQUVnQTNZYmNrVUVRQ0FIUVNCcUlBRVE2d1FnQjBFd2FpQUZFTG9DSUFkQkVHb2dCeWtETUNBSEtRTTRJQWNwQXlBZ0J5a0RLQkNMQVNBSEtRTVlJUk1nQnlrREVBd0JDeUFUSUFSQmZtMnNWUVJBSUFkQjRBQnFJQVVRdWdJZ0IwSFFBR29nQnlrRFlDQUhLUU5vUW45Qy8vLy8vLy8vdi8vL0FCQ0xBU0FIUVVCcklBY3BBMUFnQnlrRFdFSi9Rdi8vLy8vLy83Ly8vd0FRaXdGQjJNQVVRY1FBTmdJQUlBY3BBMGdoRXlBSEtRTkFEQUVMSUJNZ0JFR2VmbXFzVXdSQUlBZEJrQUZxSUFVUXVnSWdCMEdBQVdvZ0J5a0RrQUVnQnlrRG1BRkNBRUtBZ0lDQWdJREFBQkNMQVNBSFFmQUFhaUFIS1FPQUFTQUhLUU9JQVVJQVFvQ0FnSUNBZ01BQUVJc0JRZGpBRkVIRUFEWUNBQ0FIS1FONElSTWdCeWtEY0F3QkN5QU1CRUFnREVFSVRBUkFJQWRCZ0FacUlBaEJBblJxSWdJb0FnQWhBUU5BSUFGQkNtd2hBU0FNUVFoSUlRWWdERUVCYWlFTUlBWU5BQXNnQWlBQk5nSUFDeUFJUVFGcUlRZ0xBa0FnRFVFSVNpQU5JQk9uSWd0S2NpQUxRUkZLY2cwQUlBdEJDVVlFUUNBSFFiQUJhaUFIS0FLQUJoRHJCQ0FIUWNBQmFpQUZFTG9DSUFkQm9BRnFJQWNwQThBQklBY3BBOGdCSUFjcEE3QUJJQWNwQTdnQkVJc0JJQWNwQTZnQklSTWdCeWtEb0FFTUFnc2dDMEVJVEFSQUlBZEJnQUpxSUFjb0FvQUdFT3NFSUFkQmtBSnFJQVVRdWdJZ0IwSHdBV29nQnlrRGtBSWdCeWtEbUFJZ0J5a0RnQUlnQnlrRGlBSVFpd0VnQjBIZ0FXcEJBQ0FMYTBFQ2RFR2dtUkpxS0FJQUVMb0NJQWRCMEFGcUlBY3BBL0FCSUFjcEEvZ0JJQWNwQStBQklBY3BBK2dCRU1FTElBY3BBOWdCSVJNZ0J5a0QwQUVNQWdzZ0F5QUxRWDFzYWtFYmFpSUJRUjVNUVFBZ0J5Z0NnQVlpQWlBQmRoc05BQ0FIUWRBQ2FpQUNFT3NFSUFkQjRBSnFJQVVRdWdJZ0IwSEFBbW9nQnlrRDRBSWdCeWtENkFJZ0J5a0QwQUlnQnlrRDJBSVFpd0VnQjBHd0Ftb2dDMEVDZEVIWW1CSnFLQUlBRUxvQ0lBZEJvQUpxSUFjcEE4QUNJQWNwQThnQ0lBY3BBN0FDSUFjcEE3Z0NFSXNCSUFjcEE2Z0NJUk1nQnlrRG9BSU1BUXRCQUNFTUFrQWdDMEVKYnlJQlJRUkFRUUFoQWd3QkN5QUJJQUZCQ1dvZ0MwRi9TaHNoQmdKQUlBaEZCRUJCQUNFQ1FRQWhDQXdCQzBHQWxPdmNBMEVBSUFaclFRSjBRYUNaRW1vb0FnQWlDVzBoRGtFQUlRcEJBQ0VCUVFBaEFnTkFJQWRCZ0FacUlBRkJBblJxSWcwZ0NpQU5LQUlBSWdvZ0NXNGlEV29pRHpZQ0FDQUNRUUZxUWY4UGNTQUNJQTlGSUFFZ0FrWnhJZzhiSVFJZ0MwRjNhaUFMSUE4YklRc2dEaUFLSUFrZ0RXeHJiQ0VLSUFGQkFXb2lBU0FJUncwQUN5QUtSUTBBSUFkQmdBWnFJQWhCQW5ScUlBbzJBZ0FnQ0VFQmFpRUlDeUFMSUFaclFRbHFJUXNMQTBBZ0IwR0FCbW9nQWtFQ2RHb2hCZ0pBQTBBZ0MwRWtUZ1JBSUF0QkpFY05BaUFHS0FJQVFkSHArUVJQRFFJTElBaEIvdzlxSVE1QkFDRUtJQWdoQ1FOQUlBa2hDQUovUVFBZ0NxMGdCMEdBQm1vZ0RrSC9EM0VpQVVFQ2RHb2lDVFVDQUVJZGhud2lFMEtCbE92Y0ExUU5BQm9nRXlBVFFvQ1U2OXdEZ0NJVVFvQ1U2OXdEZm4waEV5QVVwd3NoQ2lBSklCT25JZ2syQWdBZ0NDQUlJQWdnQVNBSkd5QUJJQUpHR3lBQklBaEJmMnBCL3c5eFJ4c2hDU0FCUVg5cUlRNGdBU0FDUncwQUN5QU1RV05xSVF3Z0NrVU5BQXNnQ1NBQ1FYOXFRZjhQY1NJQ1JnUkFJQWRCZ0FacUlBbEIvZzlxUWY4UGNVRUNkR29pQVNBQktBSUFJQWRCZ0FacUlBbEJmMnBCL3c5eElnaEJBblJxS0FJQWNqWUNBQXNnQzBFSmFpRUxJQWRCZ0FacUlBSkJBblJxSUFvMkFnQU1BUXNMQWtBRFFDQUlRUUZxUWY4UGNTRUdJQWRCZ0FacUlBaEJmMnBCL3c5eFFRSjBhaUVPQTBCQkNVRUJJQXRCTFVvYklRb0NRQU5BSUFJaENVRUFJUUVDUUFOQUFrQWdBU0FKYWtIL0QzRWlBaUFJUmcwQUlBZEJnQVpxSUFKQkFuUnFLQUlBSWdJZ0FVRUNkRUh3bUJKcUtBSUFJZzFKRFFBZ0FpQU5TdzBDSUFGQkFXb2lBVUVFUncwQkN3c2dDMEVrUncwQVFnQWhFMEVBSVFGQ0FDRVVBMEFnQ0NBQklBbHFRZjhQY1NJQ1JnUkFJQWhCQVdwQi93OXhJZ2hCQW5RZ0IycEJBRFlDL0FVTElBZEI4QVZxSUJNZ0ZFSUFRb0NBZ0lEbG1yZU93QUFRaXdFZ0IwSGdCV29nQjBHQUJtb2dBa0VDZEdvb0FnQVE2d1FnQjBIUUJXb2dCeWtEOEFVZ0J5a0QrQVVnQnlrRDRBVWdCeWtENkFVUW5BSWdCeWtEMkFVaEZDQUhLUVBRQlNFVElBRkJBV29pQVVFRVJ3MEFDeUFIUWNBRmFpQUZFTG9DSUFkQnNBVnFJQk1nRkNBSEtRUEFCU0FIS1FQSUJSQ0xBU0FIS1FPNEJTRVVRZ0FoRXlBSEtRT3dCU0VWSUF4QjhRQnFJZ1lnQkdzaUFrRUFJQUpCQUVvYklBTWdBaUFEU0NJRUd5SUJRZkFBVEEwQ0RBVUxJQW9nREdvaERDQUpJQWdpQWtZTkFBdEJnSlRyM0FNZ0NuWWhEVUYvSUFwMFFYOXpJUTlCQUNFQklBa2hBZ05BSUFkQmdBWnFJQWxCQW5ScUloQWdBU0FRS0FJQUlnRWdDblpxSWhBMkFnQWdBa0VCYWtIL0QzRWdBaUFRUlNBQ0lBbEdjU0lRR3lFQ0lBdEJkMm9nQ3lBUUd5RUxJQUVnRDNFZ0RXd2hBU0FKUVFGcVFmOFBjU0lKSUFoSERRQUxJQUZGRFFFZ0FpQUdSd1JBSUFkQmdBWnFJQWhCQW5ScUlBRTJBZ0FnQmlFSURBTUxJQTRnRGlnQ0FFRUJjallDQUNBR0lRSU1BUXNMQ3lBSFFZQUZha1FBQUFBQUFBRHdQMEhoQVNBQmF4QzdBeENjQXlBSFFhQUZhaUFIS1FPQUJTQUhLUU9JQlNBVklCUVF3d3NnQnlrRHFBVWhGeUFIS1FPZ0JTRVlJQWRCOEFScVJBQUFBQUFBQVBBL1FmRUFJQUZyRUxzREVKd0RJQWRCa0FWcUlCVWdGQ0FIS1FQd0JDQUhLUVA0QkJEU0NpQUhRZUFFYWlBVklCUWdCeWtEa0FVaUV5QUhLUU9ZQlNJV0VQd0hJQWRCMEFScUlCZ2dGeUFIS1FQZ0JDQUhLUVBvQkJDY0FpQUhLUVBZQkNFVUlBY3BBOUFFSVJVTEFrQWdDVUVFYWtIL0QzRWlBeUFJUmcwQUFrQWdCMEdBQm1vZ0EwRUNkR29vQWdBaUEwSC95Ylh1QVUwRVFDQURSVUVBSUFsQkJXcEIvdzl4SUFoR0d3MEJJQWRCNEFOcUlBVzNSQUFBQUFBQUFOQS9vaENjQXlBSFFkQURhaUFUSUJZZ0J5a0Q0QU1nQnlrRDZBTVFuQUlnQnlrRDJBTWhGaUFIS1FQUUF5RVREQUVMSUFOQmdNcTE3Z0ZIQkVBZ0IwSEFCR29nQmJkRUFBQUFBQUFBNkQraUVKd0RJQWRCc0FScUlCTWdGaUFIS1FQQUJDQUhLUVBJQkJDY0FpQUhLUU80QkNFV0lBY3BBN0FFSVJNTUFRc2dCYmNoR1NBSUlBbEJCV3BCL3c5eFJnUkFJQWRCZ0FScUlCbEVBQUFBQUFBQTREK2lFSndESUFkQjhBTnFJQk1nRmlBSEtRT0FCQ0FIS1FPSUJCQ2NBaUFIS1FQNEF5RVdJQWNwQS9BRElSTU1BUXNnQjBHZ0JHb2dHVVFBQUFBQUFBRG9QNklRbkFNZ0IwR1FCR29nRXlBV0lBY3BBNkFFSUFjcEE2Z0VFSndDSUFjcEE1Z0VJUllnQnlrRGtBUWhFd3NnQVVIdkFFb05BQ0FIUWNBRGFpQVRJQlpDQUVLQWdJQ0FnSURBL3o4UTBnb2dCeWtEd0FNZ0J5a0R5QU5DQUVJQUVLWUVEUUFnQjBHd0Eyb2dFeUFXUWdCQ2dJQ0FnSUNBd1A4L0VKd0NJQWNwQTdnRElSWWdCeWtEc0FNaEV3c2dCMEdnQTJvZ0ZTQVVJQk1nRmhDY0FpQUhRWkFEYWlBSEtRT2dBeUFIS1FPb0F5QVlJQmNRL0FjZ0J5a0RtQU1oRkNBSEtRT1FBeUVWQWtBZ0JrSC8vLy8vQjNGQmZpQVJhMHdOQUNBSFFZQURhaUFWSUJSQ0FFS0FnSUNBZ0lDQS96OFFpd0VnRXlBV1FnQkNBQkNtQkNFRklCVWdGQkRNQnBraEdTQUhLUU9JQXlBVUlCbEVBQUFBQUFBQUFFZG1JZ01iSVJRZ0J5a0RnQU1nRlNBREd5RVZJQVFnQTBFQmN5QUJJQUpIY25FZ0JVRUFSM0ZGUVFBZ0F5QU1haUlNUWU0QWFpQVNUQnNOQUVIWXdCUkJ4QUEyQWdBTElBZEI4QUpxSUJVZ0ZDQU1FTUlMSUFjcEEvZ0NJUk1nQnlrRDhBSUxOd01BSUFBZ0V6Y0RDQ0FIUVlER0FHb2tBQXU5RFFJSWZ3ZCtJd0JCc0FOcklnWWtBQUovSUFFb0FnUWlCeUFCS0FKb1NRUkFJQUVnQjBFQmFqWUNCQ0FITFFBQURBRUxJQUVRZXdzaEJ3SkFBbjhEUUFKQUlBZEJNRWNFUUNBSFFTNUhEUVFnQVNnQ0JDSUhJQUVvQW1oUERRRWdBU0FIUVFGcU5nSUVJQWN0QUFBTUF3c2dBU2dDQkNJSElBRW9BbWhKQkVCQkFTRUpJQUVnQjBFQmFqWUNCQ0FITFFBQUlRY0ZJQUVRZXlFSFFRRWhDUXNNQVFzTElBRVFld3NoQjBFQklRb2dCMEV3UncwQUEwQWdFa0ovZkNFU0FuOGdBU2dDQkNJSElBRW9BbWhKQkVBZ0FTQUhRUUZxTmdJRUlBY3RBQUFNQVFzZ0FSQjdDeUlIUVRCR0RRQUxRUUVoQ1F0Q2dJQ0FnSUNBd1A4L0lRNERRQUpBSUFkQklISWhDd0pBQWtBZ0IwRlFhaUlNUVFwSkRRQWdCMEV1UjBFQUlBdEJuMzlxUVFWTEd3MENJQWRCTGtjTkFDQUtEUUpCQVNFS0lCQWhFZ3dCQ3lBTFFhbC9haUFNSUFkQk9Vb2JJUWNDUUNBUVFnZFhCRUFnQnlBSVFRUjBhaUVJREFFTElCQkNIRmNFUUNBR1FTQnFJQk1nRGtJQVFvQ0FnSUNBZ01EOVB4Q0xBU0FHUVRCcUlBY1F1Z0lnQmtFUWFpQUdLUU1nSWhNZ0Jpa0RLQ0lPSUFZcEF6QWdCaWtET0JDTEFTQUdJQThnRVNBR0tRTVFJQVlwQXhnUW5BSWdCaWtEQ0NFUklBWXBBd0FoRHd3QkN5QU5JQWRGY2cwQUlBWkIwQUJxSUJNZ0RrSUFRb0NBZ0lDQWdJRC9QeENMQVNBR1FVQnJJQThnRVNBR0tRTlFJQVlwQTFnUW5BSWdCaWtEU0NFUlFRRWhEU0FHS1FOQUlROExJQkJDQVh3aEVFRUJJUWtMSUFFb0FnUWlCeUFCS0FKb1NRUkFJQUVnQjBFQmFqWUNCQ0FITFFBQUlRY0ZJQUVRZXlFSEN3d0JDd3NDZmlBSlJRUkFJQUVvQW1naUFnUkFJQUVnQVNnQ0JFRi9hallDQkFzQ1FDQUZCRUFnQWtVTkFTQUJJQUVvQWdSQmYybzJBZ1FnQ2tVZ0FrVnlEUUVnQVNBQktBSUVRWDlxTmdJRURBRUxJQUZDQUJEYkFnc2dCa0hnQUdvZ0JMZEVBQUFBQUFBQUFBQ2lFSndESUFZcEEyQWhEeUFHS1FOb0RBRUxJQkJDQjFjRVFDQVFJUTREUUNBSVFRUjBJUWdnRGtJSFV5RUpJQTVDQVh3aERpQUpEUUFMQ3dKQUlBZEJJSEpCOEFCR0JFQWdBU0FGRUw4TElnNUNnSUNBZ0lDQWdJQ0FmMUlOQVNBRkJFQkNBQ0VPSUFFb0FtaEZEUUlnQVNBQktBSUVRWDlxTmdJRURBSUxRZ0FoRHlBQlFnQVEyd0pDQUF3Q0MwSUFJUTRnQVNnQ2FFVU5BQ0FCSUFFb0FnUkJmMm8yQWdRTElBaEZCRUFnQmtId0FHb2dCTGRFQUFBQUFBQUFBQUNpRUp3RElBWXBBM0FoRHlBR0tRTjREQUVMSUJJZ0VDQUtHMElDaGlBT2ZFSmdmQ0lRUVFBZ0EydXNWUVJBSUFaQm9BRnFJQVFRdWdJZ0JrR1FBV29nQmlrRG9BRWdCaWtEcUFGQ2YwTC8vLy8vLy8rLy8vOEFFSXNCSUFaQmdBRnFJQVlwQTVBQklBWXBBNWdCUW45Qy8vLy8vLy8vdi8vL0FCQ0xBVUhZd0JSQnhBQTJBZ0FnQmlrRGdBRWhEeUFHS1FPSUFRd0JDeUFRSUFOQm5uNXFyRmtFUUNBSVFYOUtCRUFEUUNBR1FhQURhaUFQSUJGQ0FFS0FnSUNBZ0lEQS83OS9FSndDSUE4Z0VSQ3lFeUVCSUFaQmtBTnFJQThnRVNBUElBWXBBNkFESUFGQkFFZ2lCUnNnRVNBR0tRT29BeUFGR3hDY0FpQVFRbjk4SVJBZ0Jpa0RtQU1oRVNBR0tRT1FBeUVQSUFoQkFYUWdBVUYvU25JaUNFRi9TZzBBQ3dzQ2ZpQVFJQU9zZlVJZ2ZDSU9weUlCUVFBZ0FVRUFTaHNnQWlBT0lBS3NVeHNpQVVIeEFFNEVRQ0FHUVlBRGFpQUVFTG9DSUFZcEE0Z0RJUTRnQmlrRGdBTWhFMElBREFFTElBWkIwQUpxSUFRUXVnSWdCa0hnQW1wRUFBQUFBQUFBOEQ5QmtBRWdBV3NRdXdNUW5BTWdCa0h3QW1vZ0Jpa0Q0QUlnQmlrRDZBSWdCaWtEMEFJaUV5QUdLUVBZQWlJT0VNTUxJQVlwQS9nQ0lSUWdCaWtEOEFJTElSSWdCa0hBQW1vZ0NDQUlRUUZ4UlNBUElCRkNBRUlBRUtZRVFRQkhJQUZCSUVoeGNTSUJhaERyQkNBR1FiQUNhaUFUSUE0Z0Jpa0R3QUlnQmlrRHlBSVFpd0VnQmtHZ0FtcENBQ0FQSUFFYlFnQWdFU0FCR3lBVElBNFFpd0VnQmtHUUFtb2dCaWtEc0FJZ0Jpa0R1QUlnRWlBVUVKd0NJQVpCZ0FKcUlBWXBBNkFDSUFZcEE2Z0NJQVlwQTVBQ0lBWXBBNWdDRUp3Q0lBWkI4QUZxSUFZcEE0QUNJQVlwQTRnQ0lCSWdGQkQ4QnlBR0tRUHdBU0lPSUFZcEEvZ0JJaEpDQUVJQUVLWUVSUVJBUWRqQUZFSEVBRFlDQUFzZ0JrSGdBV29nRGlBU0lCQ25FTUlMSUFZcEErQUJJUThnQmlrRDZBRU1BUXNnQmtIUUFXb2dCQkM2QWlBR1FjQUJhaUFHS1FQUUFTQUdLUVBZQVVJQVFvQ0FnSUNBZ01BQUVJc0JJQVpCc0FGcUlBWXBBOEFCSUFZcEE4Z0JRZ0JDZ0lDQWdJQ0F3QUFRaXdGQjJNQVVRY1FBTmdJQUlBWXBBN0FCSVE4Z0Jpa0R1QUVMSVJBZ0FDQVBOd01BSUFBZ0VEY0RDQ0FHUWJBRGFpUUFDOWdCQWdGL0FYNUJmeUVDQWtBZ0FFSUFVaUFCUXYvLy8vLy8vLy8vL3dDRElnTkNnSUNBZ0lDQXdQLy9BRllnQTBLQWdJQ0FnSURBLy84QVVSc05BQ0FBSUFOQ2dJQ0FnSUNBZ1A4L2hJUlFCRUJCQUE4TElBRkNnSUNBZ0lDQWdQOC9nMElBV1FSQUlBQkNBRlFnQVVLQWdJQ0FnSUNBL3o5VElBRkNnSUNBZ0lDQWdQOC9VUnNOQVNBQUlBRkNnSUNBZ0lDQWdQOC9oWVJDQUZJUEN5QUFRZ0JXSUFGQ2dJQ0FnSUNBZ1A4L1ZTQUJRb0NBZ0lDQWdJRC9QMUViRFFBZ0FDQUJRb0NBZ0lDQWdJRC9QNFdFUWdCU0lRSUxJQUlMeXdFQ0JIOENmaU1BUVJCcklnTWtBQ0FCdkNJRVFZQ0FnSUI0Y1NFRkFuNGdCRUgvLy8vL0IzRWlBa0dBZ0lCOGFrSC8vLy8zQjAwRVFDQUNyVUlaaGtLQWdJQ0FnSUNBd0Q5OERBRUxJQUpCZ0lDQS9BZFBCRUFnQksxQ0dZWkNnSUNBZ0lDQXdQLy9BSVFNQVFzZ0FrVUVRRUlBREFFTElBTWdBcTFDQUNBQ1p5SUNRZEVBYWhEM0FTQURLUU1BSVFZZ0F5a0RDRUtBZ0lDQWdJREFBSVZCaWY4QUlBSnJyVUl3aG9RTElRY2dBQ0FHTndNQUlBQWdCeUFGclVJZ2hvUTNBd2dnQTBFUWFpUUFDMEFBSUFCQkFEWUNGQ0FBSUFFMkFoZ2dBRUVBTmdJTUlBQkNncUNBZ09BQU53SUVJQUFnQVVVMkFoQWdBRUVnYWtFQVFTZ1EzUUVhSUFCQkhHb1E3d29MQ1FBZ0FCQ0JDQkFxQzFRQkFuOGpBRUVRYXlJRUpBQWdBZ1JBQTBBZ0F5QUNJQUFRR3lBQ1FSQnFJQUVRcndNaUJSc2hBeUFDUVFSQkFDQUZHMm9vQWdBaUFnMEFDd3NnQkVFSWFpQURFREVvQWdBaEFDQUVRUkJxSkFBZ0FBdkVBUUVHZnlNQVFTQnJJZ0lrQUFKQUlBSkJHR29nQUJES0JpSUVMUUFBUlEwQUlBQWdBQ2dDQUVGMGFpZ0NBR29vQWdRYUlBSkJFR29nQUNBQUtBSUFRWFJxS0FJQWFoQmNJQUpCRUdvUXlBc2hBeUFDUVJCcUVGa2dBa0VJYWlBQUVPNEZJUVVnQUNBQUtBSUFRWFJxS0FJQWFpSUdFTm9JSVFjZ0FpQURJQVVvQWdBZ0JpQUhJQUVnQXlnQ0FDZ0NFQkVLQURZQ0VDQUNRUkJxRU5rSVJRMEFJQUFnQUNnQ0FFRjBhaWdDQUdwQkJSQ0FCQXNnQkJESkJpQUNRU0JxSkFBZ0FBdXlBUUVHZnlNQVFTQnJJZ0lrQUFKQUlBSkJHR29nQUJES0JpSUVMUUFBUlEwQUlBSkJFR29nQUNBQUtBSUFRWFJxS0FJQWFoQmNJQUpCRUdvUXlBc2hBeUFDUVJCcUVGa2dBa0VJYWlBQUVPNEZJUVVnQUNBQUtBSUFRWFJxS0FJQWFpSUdFTm9JSVFjZ0FpQURJQVVvQWdBZ0JpQUhJQUVnQXlnQ0FDZ0NEQkVLQURZQ0VDQUNRUkJxRU5rSVJRMEFJQUFnQUNnQ0FFRjBhaWdDQUdwQkJSQ0FCQXNnQkJESkJpQUNRU0JxSkFBZ0FBc1RBQ0FBSUFBb0FnQkJkR29vQWdCcUVNa0xDeE1BSUFBZ0FDZ0NBRUYwYWlnQ0FHb1EvZ2NMTndFQmZ5QUFLQUlZSWdJZ0FDZ0NIRVlFUUNBQUlBRWdBQ2dDQUNnQ05CRURBQThMSUFBZ0FrRUVhallDR0NBQ0lBRTJBZ0FnQVF1ckFRRUVmeU1BUVNCcklnSWtBQ0FDUVJocUlBQVF2Uk10QUFBRVFDQUNRUUEyQWhRZ0FrRVFhaUFBSUFBb0FnQkJkR29vQWdCcUVGd2dBa0VRYWtIUXlSUVFtd01oQXlBQ1FRaHFJQUFRN2dVaEJDQUNFTElGSVFVZ0F5QUVLQUlBSUFVb0FnQWdBQ0FBS0FJQVFYUnFLQUlBYWlBQ1FSUnFJQUVnQXlnQ0FDZ0NMQkVMQUJvZ0FrRVFhaEJaSUFBZ0FDZ0NBRUYwYWlnQ0FHb2dBaWdDRkJDQUJBc2dBa0VnYWlRQUM2QUNBUVIvSXdCQklHc2lBeVFBSUFCQkFEb0FBQ0FCSUFFb0FnQkJkR29vQWdCcUVNc0dJUVFnQVNBQktBSUFRWFJxS0FJQWFpRUNBa0FnQkFSQUlBSW9Ba2dFUUNBQklBRW9BZ0JCZEdvb0FnQnFLQUpJRU5RTEN3SkFJQUVnQVNnQ0FFRjBhaWdDQUdvb0FnUkJnQ0J4UlEwQUlBTkJHR29nQVNBQktBSUFRWFJxS0FJQWFoQmNJQU5CR0dvUStnRWhCU0FEUVJocUVGa2dBMEVRYWlBQkVPNEZJUUlnQTBFSWFoQ3lCU0VFQTBBQ1FDQUNJQVFROEFGRkRRQWdCVUdBd0FBZ0FoQ2ZBUkRMQWtVTkFDQUNFTFVCR2d3QkN3c2dBaUFFRUw0QlJRMEFJQUVnQVNnQ0FFRjBhaWdDQUdwQkJoQ0FCQXNnQUNBQklBRW9BZ0JCZEdvb0FnQnFFTXNHT2dBQURBRUxJQUpCQkJDQUJBc2dBMEVnYWlRQUlBQUxFd0FnQUNBQUtBSUFRWFJxS0FJQWFoRFZDd3NUQUNBQUlBQW9BZ0JCZEdvb0FnQnFFUDhIQzY4QkFRUi9Jd0JCRUdzaUJTUUFBMEFDUUNBRUlBSk9EUUFnQUNnQ0dDSURJQUFvQWh3aUJrOEVRQ0FBSUFFc0FBQVExZ01nQUNnQ0FDZ0NOQkVEQUVGL1JnMEJJQVJCQVdvaEJDQUJRUUZxSVFFRklBVWdCaUFEYXpZQ0RDQUZJQUlnQkdzMkFnZ2dCVUVNYWlBRlFRaHFFUDRCSVFNZ0FDZ0NHQ0FCSUFNb0FnQWlBeERvQVNBQUlBTWdBQ2dDR0dvMkFoZ2dBeUFFYWlFRUlBRWdBMm9oQVFzTUFRc0xJQVZCRUdva0FDQUVDM29CQkg4akFFRVFheUlFSkFCQnFBRVFSaUlERU5NTElRSWdBeUFCSUFNb0FnQW9BZ1FSQVFBZ0FpQURLQUlBS0FLOEFSRUFBQ0VGSUFBb0FnQkJBVTRFUUVFQUlRSURRQ0FFSUFBZ0FoQ2dCallDRENBRklBUkJER29nQVJEVkZDQUNRUUZxSWdJZ0FDZ0NBRWdOQUFzTElBUkJFR29rQUNBREN5OEFJQUFnQUNnQ0FDZ0NKQkVBQUVGL1JnUkFRWDhQQ3lBQUlBQW9BZ3dpQUVFQmFqWUNEQ0FBTEFBQUVOWURDOEFCQVFSL0l3QkJFR3NpQkNRQUEwQUNRQ0FGSUFKT0RRQUNRQ0FBS0FJTUlnTWdBQ2dDRUNJR1NRUkFJQVJCLy8vLy93YzJBZ3dnQkNBR0lBTnJOZ0lJSUFRZ0FpQUZhellDQkNBRVFReHFJQVJCQ0dvZ0JFRUVhaEQrQVJEK0FTRURJQUVnQUNnQ0RDQURLQUlBSWdNUTZBRWdBQ0FBS0FJTUlBTnFOZ0lNREFFTElBQWdBQ2dDQUNnQ0tCRUFBQ0lEUVg5R0RRRWdBU0FERU5JSU9nQUFRUUVoQXdzZ0FTQURhaUVCSUFNZ0JXb2hCUXdCQ3dzZ0JFRVFhaVFBSUFVTENRQWdBRUovRU5NSUN3a0FJQUJDZnhEVENBc29BQ0FBUWJpVEVqWUNBQ0FBUVFScUVPOEtJQUJDQURjQ0dDQUFRZ0EzQWhBZ0FFSUFOd0lJQ3drQUlBQVFnQWdRS2dzSkFDQUFFT3dFRUNvTE13RUJmeUFDQkVBZ0FDRURBMEFnQXlBQktBSUFOZ0lBSUFOQkJHb2hBeUFCUVFScUlRRWdBa0YvYWlJQ0RRQUxDeUFBQzJ3QkFuOGpBRUVRYXlJRUpBQWdBQ0FCRUs4RklRRURRQ0FCQkVBZ0JDQUFOZ0lNSUFSQkRHb2dBVUVCZGlJRkVNY0ZJQU1nQkNnQ0RDQUNFTmdFQkVBZ0JDQUVLQUlNUVFScUlnQTJBZ3dnQVNBRlFYOXphaUVCQlNBRklRRUxEQUVMQ3lBRVFSQnFKQUFnQUFzbUFRRi9Jd0JCRUdzaUF5UUFJQUFnQVNBQ0lBTkJDR29ReWhNaEFDQURRUkJxSkFBZ0FBdlZEd01JZndKK0NIeEVBQUFBQUFBQThEOGhEQUpBQWtBQ1FDQUJ2U0lLUWlDSXB5SUVRZi8vLy84SGNTSUNJQXFuSWdaeVJRMEFJQUM5SWd0Q0lJaW5JUWNnQzZjaUNVVkJBQ0FIUVlDQXdQOERSaHNOQUNBSFFmLy8vLzhIY1NJRFFZQ0F3UDhIU3lBRFFZQ0F3UDhIUmlBSlFRQkhjWElnQWtHQWdNRC9CMHR5UlVFQUlBWkZJQUpCZ0lEQS93ZEhjaHRGQkVBZ0FDQUJvQThMQWtBQ2Z3SkFBbjlCQUNBSFFYOUtEUUFhUVFJZ0FrSC8vLytaQkVzTkFCcEJBQ0FDUVlDQXdQOERTUTBBR2lBQ1FSUjJJUWdnQWtHQWdJQ0tCRWtOQVVFQUlBWkJzd2dnQ0dzaUJYWWlDQ0FGZENBR1J3MEFHa0VDSUFoQkFYRnJDeUlGSUFaRkRRRWFEQUlMSUFZTkFVRUFJQUpCa3dnZ0NHc2lCWFlpQmlBRmRDQUNSdzBBR2tFQ0lBWkJBWEZyQ3lFRklBSkJnSURBL3dkR0JFQWdBMEdBZ01DQWZHb2dDWEpGRFFJZ0EwR0FnTUQvQTA4RVFDQUJSQUFBQUFBQUFBQUFJQVJCZjBvYkR3dEVBQUFBQUFBQUFBQWdBWm9nQkVGL1Noc1BDeUFDUVlDQXdQOERSZ1JBSUFSQmYwb0VRQ0FBRHd0RUFBQUFBQUFBOEQ4Z0FLTVBDeUFFUVlDQWdJQUVSZ1JBSUFBZ0FLSVBDeUFFUVlDQWdQOERSeUFIUVFCSWNnMEFJQUNmRHdzZ0FKa2hEQ0FEUVFBZ0EwR0FnSUNBQkhKQmdJREEvd2RIR3lBSmNrVUVRRVFBQUFBQUFBRHdQeUFNb3lBTUlBUkJBRWdiSVF3Z0IwRi9TZzBCSUFVZ0EwR0FnTUNBZkdweVJRUkFJQXdnREtFaUFDQUFvdzhMSUF5YUlBd2dCVUVCUmhzUEMwUUFBQUFBQUFEd1B5RU5JQWRCZjBvZ0JVRUJTM0pGQkVBZ0JVRUJhd1JBSUFBZ0FLRWlBQ0FBb3c4TFJBQUFBQUFBQVBDL0lRMExBbndnQWtHQmdJQ1BCRThFUUNBQ1FZR0F3SjhFVHdSQUlBTkIvLysvL3dOTkJFQkVBQUFBQUFBQThIOUVBQUFBQUFBQUFBQWdCRUVBU0JzUEMwUUFBQUFBQUFEd2YwUUFBQUFBQUFBQUFDQUVRUUJLR3c4TElBTkIvdisvL3dOTkJFQWdEVVNjZFFDSVBPUTNmcUpFbkhVQWlEemtOMzZpSUExRVdmUDR3aDl1cFFHaVJGbnorTUlmYnFVQm9pQUVRUUJJR3c4TElBTkJnWURBL3dOUEJFQWdEVVNjZFFDSVBPUTNmcUpFbkhVQWlEemtOMzZpSUExRVdmUDR3aDl1cFFHaVJGbnorTUlmYnFVQm9pQUVRUUJLR3c4TElBeEVBQUFBQUFBQThMK2dJZ0JFQUFBQVlFY1Y5eitpSWd3Z0FFUkUzMTM0QzY1VVBxSWdBQ0FBb2tRQUFBQUFBQURnUHlBQUlBQkVBQUFBQUFBQTBMK2lSRlZWVlZWVlZkVS9vS0tob2tUK2dpdGxSeFgzdjZLZ0lnK2d2VUtBZ0lDQWNJTy9JZ0FnREtFTUFRc2dERVFBQUFBQUFBQkFRNklpQUNBTUlBTkJnSURBQUVraUFoc2hEQ0FBdlVJZ2lLY2dBeUFDR3lJRlFmLy9QM0VpQkVHQWdNRC9BM0loQXlBRlFSUjFRY3gzUVlGNElBSWJhaUVGUVFBaEFnSkFJQVJCajdFT1NRMEFJQVJCK3V3dVNRUkFRUUVoQWd3QkN5QURRWUNBUUdvaEF5QUZRUUZxSVFVTElBSkJBM1FpQkVHZ2tCSnFLd01BSWhFZ0RMMUMvLy8vL3crRElBT3RRaUNHaEw4aUR5QUVRWUNRRW1vckF3QWlEcUVpRUVRQUFBQUFBQUR3UHlBT0lBK2dveUlTb2lJTXZVS0FnSUNBY0lPL0lnQWdBQ0FBb2lJVFJBQUFBQUFBQUFoQW9DQU1JQUNnSUJJZ0VDQUFJQU5CQVhWQmdJQ0FnQUp5SUFKQkVuUnFRWUNBSUdxdFFpQ0d2eUlRb3FFZ0FDQVBJQkFnRHFHaG9xR2lJZytpSUF3Z0RLSWlBQ0FBb2lBQUlBQWdBQ0FBSUFCRTcwNUZTaWgreWoraVJHWGJ5Wk5LaHMwL29LSkVBVUVkcVdCMDBUK2dva1JOSm85UlZWWFZQNkNpUlArcmI5dTJiZHMvb0tKRUF6TXpNek16NHorZ29xQWlEcUM5UW9DQWdJQndnNzhpQUtJaUVDQVBJQUNpSUF3Z0RpQUFSQUFBQUFBQUFBakFvQ0FUb2FHaW9DSU1vTDFDZ0lDQWdIQ0R2eUlBUkFBQUFPQUp4KzQvb2lJT0lBUkJrSkFTYWlzREFDQU1JQUFnRUtHaFJQMERPdHdKeCs0L29pQUFSUFVCV3hUZ0x6NitvcUNnSWcrZ29DQUZ0eUlNb0wxQ2dJQ0FnSENEdnlJQUlBeWhJQkdoSUE2aEN5RU9JQUFnQ2tLQWdJQ0FjSU8vSWhHaUlnd2dEeUFPb1NBQm9pQUJJQkdoSUFDaW9DSUFvQ0lCdlNJS3B5RUNBa0FnQ2tJZ2lLY2lBMEdBZ01DRUJFNEVRQ0FEUVlDQXdQdDdhaUFDY2cwRElBQkUvb0lyWlVjVmx6eWdJQUVnREtGa1FRRnpEUUVNQXdzZ0EwR0ErUC8vQjNGQmdKakRoQVJKRFFBZ0EwR0E2THo3QTJvZ0FuSU5BeUFBSUFFZ0RLRmxRUUZ6RFFBTUF3dEJBQ0VDSUEwQ2ZDQURRZi8vLy84SGNTSUVRWUdBZ1A4RFR3UitRUUJCZ0lEQUFDQUVRUlIyUVlKNGFuWWdBMm9pQkVILy96OXhRWUNBd0FCeVFaTUlJQVJCRkhaQi93OXhJZ1ZyZGlJQ2F5QUNJQU5CQUVnYklRSWdBQ0FNUVlDQVFDQUZRWUY0YW5VZ0JIR3RRaUNHdjZFaURLQzlCU0FLQzBLQWdJQ0FjSU8vSWdGRUFBQUFBRU11NWoraUlnMGdBQ0FCSUF5aG9VVHZPZnIrUWk3bVA2SWdBVVE1YktnTVlWd2d2cUtnSWd5Z0lnQWdBQ0FBSUFBZ0FLSWlBU0FCSUFFZ0FTQUJSTkNrdm5KcE4yWStva1R4YTlMRlFiMjd2cUNpUkN6ZUphOXFWaEUvb0tKRWs3MitGbXpCWnIrZ29rUStWVlZWVlZYRlA2Q2lvU0lCb2lBQlJBQUFBQUFBQUFEQW9LTWdEQ0FBSUEyaG9TSUJJQUFnQWFLZ29hRkVBQUFBQUFBQThEK2dJZ0M5SWdwQ0lJaW5JQUpCRkhScUlnTkIvLzgvVEFSQUlBQWdBaEM3QXd3QkN5QUtRdi8vLy84UGd5QURyVUlnaG9TL0M2SWhEQXNnREE4TElBMUVuSFVBaUR6a04zNmlSSngxQUlnODVEZCtvZzhMSUExRVdmUDR3aDl1cFFHaVJGbnorTUlmYnFVQm9ndTNBd0lGZndKK0FrQWdBYjBpQ0VMLy8vLy8vLy8vLy84QWcwS0FnSUNBZ0lDQStQOEFXQVJBSUFDOUlnZEMvLy8vLy8vLy8vLy9BSU5DZ1lDQWdJQ0FnUGovQUZRTkFRc2dBQ0FCb0E4TElBaW5JZ1VnQ0VJZ2lLY2lBa0dBZ01DQWZHcHlSUVJBSUFBUWdnZ1BDeUFJUWo2SXAwRUNjU0lHSUFkQ1A0aW5jaUVEQWtBQ1FBSkFJQWRDSUlpblFmLy8vLzhIY1NJRUlBZW5ja1VFUUFKQUlBTkJBbXNPQWdJQUF3dEVHQzFFVlBzaENjQVBDeUFGSUFKQi8vLy8vd2R4SWdKeVJRMENBa0FnQWtHQWdNRC9CMFlFUUNBRVFZQ0F3UDhIUncwQklBTkJBM1JCc0k4U2Fpc0RBQThMSUFSQmdJREEvd2RIUVFBZ0FrR0FnSUFnYWlBRVR4dEZEUU1DZkNBR0JFQkVBQUFBQUFBQUFBQWdCRUdBZ0lBZ2FpQUNTUTBCR2dzZ0FDQUJvNWtRZ2dnTElRRWdBMEVDVFFSQUlBRWhBQUpBQWtBZ0EwRUJhdzRDQUFFRkN5QUJtZzhMUkJndFJGVDdJUWxBSUFGRUIxd1VNeWFtb2J5Z29ROExJQUZFQjF3VU15YW1vYnlnUkJndFJGVDdJUW5Bb0E4TElBTkJBM1JCMEk4U2Fpc0RBQThMUkJndFJGVDdJUWxBSVFBTElBQVBDMFFZTFVSVSt5SDV2MFFZTFVSVSt5SDVQeUFIUWdCVEd3dklCQU1CZndGK0Ezd0NRQUpBSUFDOUlnSkNJSWluUWYvLy8vOEhjU0lCUVlDQXdQOERUd1JBSUFLbklBRkJnSURBZ0h4cWNnMEJJQUJFR0MxRVZQc2grVCtpUkFBQUFBQUFBSEE0b0E4TElBRkIvLy8vL2dOTkJFQWdBVUdBZ0VCcVFZQ0FnUElEU1EwQ0lBQWdBS0lpQXlBRElBTWdBeUFESUFORUNmZjlEZUU5QWoraVJJaXlBWFhnNzBrL29LSkVPNDlvdFNpQ3BMK2dva1JWUklnT1ZjSEpQNkNpUkgxdjZ3TVMxdFMvb0tKRVZWVlZWVlZWeFQrZ29pQURJQU1nQXlBRFJJS1NMckhGdUxNL29rUlpBWTBiYkFibXY2Q2lSTWlLV1p6bEtnQkFvS0pFU3kyS0hDYzZBOENnb2tRQUFBQUFBQUR3UDZDaklBQ2lJQUNnRHd0RUFBQUFBQUFBOEQ4Z0FKbWhSQUFBQUFBQUFPQS9vaUlBSUFBZ0FDQUFJQUFnQUVRSjkvME40VDBDUDZKRWlMSUJkZUR2U1QrZ29rUTdqMmkxS0lLa3Y2Q2lSRlZFaUE1Vndjay9vS0pFZlcvckF4TFcxTCtnb2tSVlZWVlZWVlhGUDZDaUlBQWdBQ0FBSUFCRWdwSXVzY1c0c3oraVJGa0JqUnRzQnVhL29LSkV5SXBabk9VcUFFQ2dva1JMTFlvY0p6b0R3S0NpUkFBQUFBQUFBUEEvb0tNaEJTQUFueUVEQW53Z0FVR3o1cnovQTA4RVFFUVlMVVJVK3lINVB5QURJQU1nQmFLZ0lnQWdBS0JFQjF3VU15YW1rYnlnb1F3QkMwUVlMVVJVK3lIcFB5QUR2VUtBZ0lDQWNJTy9JZ1FnQktDaElBTWdBNkFnQmFKRUIxd1VNeWFta1R3Z0FDQUVJQVNpb1NBRElBU2dveUlBSUFDZ29hR2hSQmd0UkZUN0llay9vQXNpQUpvZ0FDQUNRZ0JUR3c4TFJBQUFBQUFBQUFBQUlBQWdBS0dqSVFBTElBQUx3Z1VEQVg4QmZnRjhJQUM5SWdKQ0lJaW5RZi8vLy84SGNTSUJRWUNBd1A4RFR3UkFJQUtuSUFGQmdJREFnSHhxY2tVRVFFUVlMVVJVK3lFSlFFUUFBQUFBQUFBQUFDQUNRZ0JUR3c4TFJBQUFBQUFBQUFBQUlBQWdBS0dqRHdzQ2ZDQUJRZi8vLy80RFRRUkFSQmd0UkZUN0lmay9JQUZCZ1lDQTR3TkpEUUVhUkFkY0ZETW1wcEU4SUFBZ0FLSWlBeUFESUFNZ0F5QURJQU5FQ2ZmOURlRTlBaitpUklpeUFYWGc3MGsvb0tKRU80OW90U2lDcEwrZ29rUlZSSWdPVmNISlA2Q2lSSDF2NndNUzF0Uy9vS0pFVlZWVlZWVlZ4VCtnb2lBRElBTWdBeUFEUklLU0xySEZ1TE0vb2tSWkFZMGJiQWJtdjZDaVJNaUtXWnpsS2dCQW9LSkVTeTJLSENjNkE4Q2dva1FBQUFBQUFBRHdQNkNqSUFDaW9TQUFvVVFZTFVSVSt5SDVQNkFQQ3lBQ1FuOVhCRUJFR0MxRVZQc2grVDhnQUVRQUFBQUFBQUR3UDZCRUFBQUFBQUFBNEQraUlnQ2ZJZ01nQXlBQUlBQWdBQ0FBSUFBZ0FFUUo5LzBONFQwQ1A2SkVpTElCZGVEdlNUK2dva1E3ajJpMUtJS2t2NkNpUkZWRWlBNVZ3Y2svb0tKRWZXL3JBeExXMUwrZ29rUlZWVlZWVlZYRlA2Q2lJQUFnQUNBQUlBQkVncEl1c2NXNHN6K2lSRmtCalJ0c0J1YS9vS0pFeUlwWm5PVXFBRUNnb2tSTExZb2NKem9Ed0tDaVJBQUFBQUFBQVBBL29LT2lSQWRjRkRNbXBwRzhvS0NoSWdBZ0FLQVBDMFFBQUFBQUFBRHdQeUFBb1VRQUFBQUFBQURnUDZJaUFDQUFJQUFnQUNBQUlBQkVDZmY5RGVFOUFqK2lSSWl5QVhYZzcway9vS0pFTzQ5b3RTaUNwTCtnb2tSVlJJZ09WY0hKUDZDaVJIMXY2d01TMXRTL29LSkVWVlZWVlZWVnhUK2dvaUFBSUFBZ0FDQUFSSUtTTHJIRnVMTS9va1JaQVkwYmJBYm12NkNpUk1pS1daemxLZ0JBb0tKRVN5MktIQ2M2QThDZ29rUUFBQUFBQUFEd1A2Q2pJQUNmSWdPaUlBQWdBNzFDZ0lDQWdIQ0R2eUlBSUFDaW9TQURJQUNnbzZBZ0FLQWlBQ0FBb0FzTGhBRUJBbjhqQUVFUWF5SUJKQUFDUUNBQXZVSWdpS2RCLy8vLy93ZHhJZ0pCKzhPay93Tk5CRUFnQWtHQWdJRHlBMGtOQVNBQVJBQUFBQUFBQUFBQVFRQVEzQXNoQUF3QkN5QUNRWUNBd1A4SFR3UkFJQUFnQUtFaEFBd0JDeUFBSUFFUWd3Z2hBaUFCS3dNQUlBRXJBd2dnQWtFQmNSRGNDeUVBQ3lBQlFSQnFKQUFnQUF2VUFRRUNmeU1BUVJCcklnRWtBQUpBSUFDOVFpQ0lwMEgvLy8vL0IzRWlBa0g3dzZUL0EwMEVRQ0FDUVlDQXdQSURTUTBCSUFCRUFBQUFBQUFBQUFCQkFCRFNCU0VBREFFTElBSkJnSURBL3dkUEJFQWdBQ0FBb1NFQURBRUxJQUFnQVJDRENFRURjU0lDUVFKTkJFQUNRQUpBQWtBZ0FrRUJhdzRDQVFJQUN5QUJLd01BSUFFckF3aEJBUkRTQlNFQURBTUxJQUVyQXdBZ0FTc0RDQkRUQlNFQURBSUxJQUVyQXdBZ0FTc0RDRUVCRU5JRm1pRUFEQUVMSUFFckF3QWdBU3NEQ0JEVEJab2hBQXNnQVVFUWFpUUFJQUFMMEFFQkFuOGpBRUVRYXlJQkpBQUNmQ0FBdlVJZ2lLZEIvLy8vL3dkeElnSkIrOE9rL3dOTkJFQkVBQUFBQUFBQThEOGdBa0dld1pyeUEwa05BUm9nQUVRQUFBQUFBQUFBQUJEVEJRd0JDeUFBSUFDaElBSkJnSURBL3dkUERRQWFJQUFnQVJDRENFRURjU0lDUVFKTkJFQUNRQUpBQWtBZ0FrRUJhdzRDQVFJQUN5QUJLd01BSUFFckF3Z1Ewd1VNQXdzZ0FTc0RBQ0FCS3dNSVFRRVEwZ1dhREFJTElBRXJBd0FnQVNzRENCRFRCWm9NQVFzZ0FTc0RBQ0FCS3dNSVFRRVEwZ1VMSVFBZ0FVRVFhaVFBSUFBTG93NENEMzhDZkNNQVFiQUVheUlHSkFBZ0FpQUNRWDFxUVJodElnUkJBQ0FFUVFCS0d5SU5RV2hzYWlFTFFkVDRFU2dDQUNJS0lBTkJmMm9pQjJwQkFFNEVRQ0FESUFwcUlRUWdEU0FIYXlFQ0EwQWdCa0hBQW1vZ0JVRURkR29nQWtFQVNBUjhSQUFBQUFBQUFBQUFCU0FDUVFKMFFlRDRFV29vQWdDM0N6a0RBQ0FDUVFGcUlRSWdCVUVCYWlJRklBUkhEUUFMQ3lBTFFXaHFJUWhCQUNFRUlBTkJBVWdoQlFOQUFrQWdCUVJBUkFBQUFBQUFBQUFBSVJNTUFRc2dCQ0FIYWlFSlFRQWhBa1FBQUFBQUFBQUFBQ0VUQTBBZ0V5QUFJQUpCQTNScUt3TUFJQVpCd0FKcUlBa2dBbXRCQTNScUt3TUFvcUFoRXlBQ1FRRnFJZ0lnQTBjTkFBc0xJQVlnQkVFRGRHb2dFemtEQUNBRUlBcElJUUlnQkVFQmFpRUVJQUlOQUF0QkZ5QUlheUVRUVJnZ0NHc2hEaUFLSVFRQ1FBTkFJQVlnQkVFRGRHb3JBd0FoRTBFQUlRSWdCQ0VGSUFSQkFVZ2lERVVFUUFOQUlBWkI0QU5xSUFKQkFuUnFBbjhnRXdKL0lCTkVBQUFBQUFBQWNENmlJaE9aUkFBQUFBQUFBT0JCWXdSQUlCT3FEQUVMUVlDQWdJQjRDN2NpRTBRQUFBQUFBQUJ3d2FLZ0loU1pSQUFBQUFBQUFPQkJZd1JBSUJTcURBRUxRWUNBZ0lCNEN6WUNBQ0FHSUFWQmYyb2lCMEVEZEdvckF3QWdFNkFoRXlBQ1FRRnFJUUlnQlVFQlNpRUpJQWNoQlNBSkRRQUxDd0ovSUJNZ0NCQzdBeUlUSUJORUFBQUFBQUFBd0QraW5FUUFBQUFBQUFBZ3dLS2dJaE9aUkFBQUFBQUFBT0JCWXdSQUlCT3FEQUVMUVlDQWdJQjRDeUVISUJNZ0I3ZWhJUk1DUUFKQUFrQUNmeUFJUVFGSUloRkZCRUFnQkVFQ2RDQUdhaUlDSUFJb0F0d0RJZ0lnQWlBT2RTSUNJQTUwYXlJRk5nTGNBeUFDSUFkcUlRY2dCU0FRZFF3QkN5QUlEUUVnQkVFQ2RDQUdhaWdDM0FOQkYzVUxJZ2xCQVVnTkFnd0JDMEVDSVFrZ0UwUUFBQUFBQUFEZ1AyWkJBWE5GRFFCQkFDRUpEQUVMUVFBaEFrRUFJUVVnREVVRVFBTkFJQVpCNEFOcUlBSkJBblJxSWhJb0FnQWhERUgvLy84SElROENRQUpBSUFWRkJFQWdERVVOQVVHQWdJQUlJUTlCQVNFRkN5QVNJQThnREdzMkFnQU1BUXRCQUNFRkN5QUNRUUZxSWdJZ0JFY05BQXNMQWtBZ0VRMEFJQWhCZjJvaUFrRUJTdzBBSUFKQkFXc0VRQ0FFUVFKMElBWnFJZ0lnQWlnQzNBTkIvLy8vQTNFMkF0d0REQUVMSUFSQkFuUWdCbW9pQWlBQ0tBTGNBMEgvLy84QmNUWUMzQU1MSUFkQkFXb2hCeUFKUVFKSERRQkVBQUFBQUFBQThEOGdFNkVoRTBFQ0lRa2dCVVVOQUNBVFJBQUFBQUFBQVBBL0lBZ1F1d09oSVJNTElCTkVBQUFBQUFBQUFBQmhCRUJCQUNFRkFrQWdCQ0lDSUFwTURRQURRQ0FHUWVBRGFpQUNRWDlxSWdKQkFuUnFLQUlBSUFWeUlRVWdBaUFLU2cwQUN5QUZSUTBBSUFnaEN3TkFJQXRCYUdvaEN5QUdRZUFEYWlBRVFYOXFJZ1JCQW5ScUtBSUFSUTBBQ3d3REMwRUJJUUlEUUNBQ0lnVkJBV29oQWlBR1FlQURhaUFLSUFWclFRSjBhaWdDQUVVTkFBc2dCQ0FGYWlFRkEwQWdCa0hBQW1vZ0F5QUVhaUlIUVFOMGFpQUVRUUZxSWdRZ0RXcEJBblJCNFBnUmFpZ0NBTGM1QXdCQkFDRUNSQUFBQUFBQUFBQUFJUk1nQTBFQlRnUkFBMEFnRXlBQUlBSkJBM1JxS3dNQUlBWkJ3QUpxSUFjZ0FtdEJBM1JxS3dNQW9xQWhFeUFDUVFGcUlnSWdBMGNOQUFzTElBWWdCRUVEZEdvZ0V6a0RBQ0FFSUFWSURRQUxJQVVoQkF3QkN3c0NRQ0FUUVFBZ0NHc1F1d01pRTBRQUFBQUFBQUJ3UVdaQkFYTkZCRUFnQmtIZ0Eyb2dCRUVDZEdvQ2Z5QVRBbjhnRTBRQUFBQUFBQUJ3UHFJaUU1bEVBQUFBQUFBQTRFRmpCRUFnRTZvTUFRdEJnSUNBZ0hnTElnSzNSQUFBQUFBQUFIREJvcUFpRTVsRUFBQUFBQUFBNEVGakJFQWdFNm9NQVF0QmdJQ0FnSGdMTmdJQUlBUkJBV29oQkF3QkN3Si9JQk9aUkFBQUFBQUFBT0JCWXdSQUlCT3FEQUVMUVlDQWdJQjRDeUVDSUFnaEN3c2dCa0hnQTJvZ0JFRUNkR29nQWpZQ0FBdEVBQUFBQUFBQThEOGdDeEM3QXlFVEFrQWdCRUYvVEEwQUlBUWhBZ05BSUFZZ0FrRURkR29nRXlBR1FlQURhaUFDUVFKMGFpZ0NBTGVpT1FNQUlCTkVBQUFBQUFBQWNENmlJUk1nQWtFQVNpRUFJQUpCZjJvaEFpQUFEUUFMSUFSQmYwd05BQ0FFSVFJRFFDQUVJQUlpQUdzaEEwUUFBQUFBQUFBQUFDRVRRUUFoQWdOQUFrQWdFeUFDUVFOMFFiQ09FbW9yQXdBZ0JpQUFJQUpxUVFOMGFpc0RBS0tnSVJNZ0FpQUtUZzBBSUFJZ0Ewa2hCU0FDUVFGcUlRSWdCUTBCQ3dzZ0JrR2dBV29nQTBFRGRHb2dFemtEQUNBQVFYOXFJUUlnQUVFQVNnMEFDd3RFQUFBQUFBQUFBQUFoRXlBRVFRQk9CRUFnQkNFQ0EwQWdFeUFHUWFBQmFpQUNRUU4wYWlzREFLQWhFeUFDUVFCS0lRQWdBa0YvYWlFQ0lBQU5BQXNMSUFFZ0U1b2dFeUFKR3prREFDQUdLd09nQVNBVG9TRVRRUUVoQWlBRVFRRk9CRUFEUUNBVElBWkJvQUZxSUFKQkEzUnFLd01Bb0NFVElBSWdCRWNoQUNBQ1FRRnFJUUlnQUEwQUN3c2dBU0FUbWlBVElBa2JPUU1JSUFaQnNBUnFKQUFnQjBFSGNRdmVCZ0VPZnlNQVFhQUlheUlJSkFBZ0NFR1lDR3BDQURjREFDQUlRWkFJYWtJQU53TUFJQWhDQURjRGlBZ2dDRUlBTndPQUNBSkFBa0FDUUFKQUFrQWdBUzBBQUNJRVJRUkFRWDhoQ1VFQklRSU1BUXNEUUNBQUlBVnFMUUFBUlEwRUlBZ2dCRUgvQVhFaUFrRUNkR29nQlVFQmFpSUZOZ0lBSUFoQmdBaHFJQUpCQTNaQkhIRnFJZ0lnQWlnQ0FFRUJJQVJCSDNGMGNqWUNBQ0FCSUFWcUxRQUFJZ1FOQUF0QkFTRUNRWDhoQ1NBRlFRRkxEUUVMUVg4aEJrRUJJUU1NQVF0QkFTRUtRUUVoQkFOQUFuOGdBU0FFSUFscWFpMEFBQ0lHSUFFZ0Ftb3RBQUFpQjBZRVFDQUVJQXBHQkVBZ0F5QUthaUVEUVFFTUFnc2dCRUVCYWd3QkN5QUdJQWRMQkVBZ0FpQUpheUVLSUFJaEEwRUJEQUVMSUFNaENTQURRUUZxSVFOQkFTRUtRUUVMSWdRZ0Eyb2lBaUFGU1EwQUMwRUJJUU5CZnlFR0lBVkJBVTBFUUNBS0lRSU1BUXRCQUNFQ1FRRWhCMEVCSVFRRFFBSi9JQUVnQkNBR2Ftb3RBQUFpRFNBQklBTnFMUUFBSWd0R0JFQWdCQ0FIUmdSQUlBSWdCMm9oQWtFQkRBSUxJQVJCQVdvTUFRc2dEU0FMU1FSQUlBTWdCbXNoQnlBRElRSkJBUXdCQ3lBQ0lRWWdBa0VCYWlFQ1FRRWhCMEVCQ3lJRUlBSnFJZ01nQlVrTkFBc2dDaUVDSUFjaEF3c0NmeUFCSUFFZ0F5QUNJQVpCQVdvZ0NVRUJha3NpQWhzaUIyb2dCaUFKSUFJYklneEJBV29pQ2hDRUNBUkFJQVVnRENBRklBeEJmM05xSWdJZ0RDQUNTeHRCQVdvaUIyc2hEa0VBREFFTElBVWdCMnNpRGdzaEN5QUZRWDlxSVEwZ0JVRS9jaUVQUVFBaEJpQUFJUUlEUUFKQUlBQWdBbXNnQlU4TkFDQUFRUUFnRHhETkJpSURCRUFnQXlJQUlBSnJJQVZKRFFNTUFRc2dBQ0FQYWlFQUN3Si9BbjhnQlNBSVFZQUlhaUFDSUExcUxRQUFJZ05CQTNaQkhIRnFLQUlBSUFOQkgzRjJRUUZ4UlEwQUdpQUZJQWdnQTBFQ2RHb29BZ0JySWdNRVFDQU9JQU1nQXlBSFNSc2dBeUFHR3lBRElBc2JEQUVMQWtBZ0FTQUtJZ1FnQmlBRUlBWkxHeUlEYWkwQUFDSUpCRUFEUUNBQ0lBTnFMUUFBSUFsQi93RnhSdzBDSUFFZ0EwRUJhaUlEYWkwQUFDSUpEUUFMQ3dOQUlBUWdCazBOQmlBQklBUkJmMm9pQkdvdEFBQWdBaUFFYWkwQUFFWU5BQXNnQnlFRUlBc01BZ3NnQXlBTWF3c2hCRUVBQ3lFR0lBSWdCR29oQWd3QUFBc0FDMEVBSVFJTElBaEJvQWhxSkFBZ0FndXFBUUVFZnlBQVFRTnFJUU1nQUMwQUF5SUNRUUJISVFRQ1FDQUNSU0FBTFFBQlFSQjBJQUF0QUFCQkdIUnlJQUF0QUFKQkNIUnlJQUp5SWdJZ0FTZ0FBQ0lBUVJoMElBQkJDSFJCZ0lEOEIzRnlJQUJCQ0haQmdQNERjU0FBUVJoMmNuSWlCVVp5UlFSQUEwQWdBMEVCYWlFQUlBTXRBQUVpQVVFQVJ5RUVJQUpCQ0hRZ0FYSWlBaUFGUmcwQ0lBQWhBeUFCRFFBTUFnQUxBQXNnQXlFQUN5QUFRWDFxUVFBZ0JCc0xsd0VCQkg4Z0FFRUNhaUVESUFBdEFBSWlBa0VBUnlFRUFrQWdBa1VnQUMwQUFVRVFkQ0FBTFFBQVFSaDBjaUFDUVFoMGNpSUFJQUV0QUFGQkVIUWdBUzBBQUVFWWRISWdBUzBBQWtFSWRISWlCVVp5UlFSQUEwQWdBMEVCYWlFQklBTXRBQUVpQWtFQVJ5RUVJQUFnQW5KQkNIUWlBQ0FGUmcwQ0lBRWhBeUFDRFFBTUFnQUxBQXNnQXlFQkN5QUJRWDVxUVFBZ0JCc0xkd0VFZnlBQUxRQUJJZ0pCQUVjaEF3SkFJQUpGRFFBZ0FDMEFBRUVJZENBQ2NpSUNJQUV0QUFFZ0FTMEFBRUVJZEhJaUJVWU5BQ0FBUVFGcUlRRURRQ0FCSWdBdEFBRWlCRUVBUnlFRElBUkZEUUVnQUVFQmFpRUJJQUpCQ0hSQmdQNERjU0FFY2lJQ0lBVkhEUUFMQ3lBQVFRQWdBeHNMaFFFQkFYOENRQ0FCTEFBQUlnSkZEUUFnQUNBQ0VPQUxJUUpCQUNFQUlBSkZEUUFnQVMwQUFVVUVRQ0FDRHdzZ0FpMEFBVVVOQUNBQkxRQUNSUVJBSUFJZ0FSRFhFdzhMSUFJdEFBSkZEUUFnQVMwQUEwVUVRQ0FDSUFFUTFoTVBDeUFDTFFBRFJRMEFJQUV0QUFSRkJFQWdBaUFCRU5VVER3c2dBaUFCRU5RVElRQUxJQUFMVEFFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFFUU94Q3RBaUFBSUFKQkNHb1E2QklhSUFFUUZpSURCRUFnQUNBREVKd0xJQUFnQVNnQ0FDQUJLQUlFSUFNUThnY0xJQUpCRUdva0FBdEJBUUovSXdCQkVHc2lBU1FBUVg4aEFnSkFJQUFRM1JNTkFDQUFJQUZCRDJwQkFTQUFLQUlnRVFjQVFRRkhEUUFnQVMwQUR5RUNDeUFCUVJCcUpBQWdBZ3VPQVFFR2Z3TkFJQUFpQVVFQmFpRUFJQUVzQUFBUXFRUU5BQXNDUUNBQkxBQUFJZ1JCVldvaUJrRUNTd1JBREFFTEFrQUNRQ0FHUVFGckRnSUNBQUVMUVFFaEJRc2dBQ3dBQUNFRUlBQWhBU0FGSVFNTElBUVF6UUlFUUFOQUlBSkJDbXdnQVN3QUFHdEJNR29oQWlBQkxBQUJJUUFnQVVFQmFpRUJJQUFRelFJTkFBc0xJQUpCQUNBQ2F5QURHd3N6QVFGL0lBQW9BaFFpQXlBQklBSWdBQ2dDRUNBRGF5SUJJQUVnQWtzYklnRVFQUm9nQUNBQUtBSVVJQUZxTmdJVUlBSUxmQUVDZnlBQUlBQXRBRW9pQVVGL2FpQUJjam9BU2lBQUtBSVVJQUFvQWh4TEJFQWdBRUVBUVFBZ0FDZ0NKQkVIQUJvTElBQkJBRFlDSENBQVFnQTNBeEFnQUNnQ0FDSUJRUVJ4QkVBZ0FDQUJRU0J5TmdJQVFYOFBDeUFBSUFBb0Fpd2dBQ2dDTUdvaUFqWUNDQ0FBSUFJMkFnUWdBVUViZEVFZmRRdGhBUUovUWFqMUVTZ0NBQ0lCS0FKTVFRQk9CSDlCQVFVZ0Fnc2FBa0FnQUNBQkVNOEdRUUJJRFFBQ1FDQUJMUUJMUVFwR0RRQWdBU2dDRkNJQUlBRW9BaEJQRFFBZ0FTQUFRUUZxTmdJVUlBQkJDam9BQUF3QkN5QUJRUW9RaHdnTEN3UUFRZ0FMa1FRQkEzOGpBRUVRYXlJRUpBQUNRQ0FBSUFBb0FnQW9Bb1FCRVFBQUxRQUhRUWR4RFFBQ1FDQUFJQUFvQWdBb0FvQUJFUUFBUVFoR0RRQWdBQ0FBS0FJQUtBS0FBUkVBQUVFSlJnMEFJQUFnQUNnQ0FDZ0NnQUVSQUFCQkFVWU5BQ0FBSUFBb0FnQW9Bb0FCRVFBQVFRTkhEUUVMSUFBZ0FDZ0NBQ2dDaEFFUkFBQWlBaUFCUVJoMFFZQ0FnRGh4clNBQ0tRSUVRdi8vLzBlRGhEY0NCQ0FBSUFBb0FnQW9BaUFSQUFBaUFnUkFJQUlnQWlnQ0FDZ0N3QUVSQUFBaUFDQUJJQUFvQWdBb0Fvd0JFUUVBSUFJZ0FpZ0NBQ2dDeEFFUkFBQWlBQ0FCSUFBb0FnQW9Bb3dCRVFFQURBRUxJQUFnQUNnQ0FDZ0NIQkVBQUNJQ0JFQWdBaUFDS0FJQUtBSzhBUkVBQUNJQUlBRWdBQ2dDQUNnQ2pBRVJBUUFNQVFzZ0FDQUFLQUlBS0FJWUVRQUFJZ0lFUUFKQUlBUWdBaUFDS0FJQUtBSzhBUkVBQUJET0JpSUNFQlpGRFFCQkFDRUFBMEFnQWlBQUVCRW9BZ0FpQXlBREtBSUFLQUlNRVFBQUlnTkZEUUVnQXlBQklBTW9BZ0FvQW93QkVRRUFJQUJCQVdvaUFDQUNFQlpKRFFBTEN5QUNFTnNCREFFTElBQWdBQ2dDQUNnQ0pCRUFBQ0lBUlEwQUlBQWdBQ2dDQUNnQ3ZBRVJBQUFpQWlBQ0tBSUFLQUlNRVFBQUlnSkZEUUFnQWlBQklBSW9BZ0FvQW93QkVRRUFJQUFnQUNnQ0FDZ0N3QUVSQUFBaUFDQUFLQUlBS0FJTUVRQUFJZ0JGRFFBZ0FDQUJJQUFvQWdBb0Fvd0JFUUVBQ3lBRVFSQnFKQUFMS1FBZ0FTQUJLQUlBUVE5cVFYQnhJZ0ZCRUdvMkFnQWdBQ0FCS1FNQUlBRXBBd2dRekFZNUF3QUw3QllERVg4Q2ZnRjhJd0JCc0FScklna2tBQ0FKUVFBMkFpd0NmeUFCdlNJWFFuOVhCRUFnQVpvaUFiMGhGMEVCSVJSQmdQVVJEQUVMSUFSQmdCQnhCRUJCQVNFVVFZUDFFUXdCQzBHRzlSRkJnZlVSSUFSQkFYRWlGQnNMSVJZQ1FDQVhRb0NBZ0lDQWdJRDQvd0NEUW9DQWdJQ0FnSUQ0L3dCUkJFQWdBRUVnSUFJZ0ZFRURhaUlQSUFSQi8vOTdjUkNMQWlBQUlCWWdGQkRpQVNBQVFadjFFVUdmOVJFZ0JVRUZka0VCY1NJREcwR1Q5UkZCbC9VUklBTWJJQUVnQVdJYlFRTVE0Z0VNQVFzZ0FTQUpRU3hxRU9rTElnRWdBYUFpQVVRQUFBQUFBQUFBQUdJRVFDQUpJQWtvQWl4QmYybzJBaXdMSUFsQkVHb2hFU0FGUVNCeUloSkI0UUJHQkVBZ0ZrRUphaUFXSUFWQklIRWlEUnNoREFKQUlBTkJDMHNOQUVFTUlBTnJJZ1pGRFFCRUFBQUFBQUFBSUVBaEdRTkFJQmxFQUFBQUFBQUFNRUNpSVJrZ0JrRi9haUlHRFFBTElBd3RBQUJCTFVZRVFDQVpJQUdhSUJtaG9Kb2hBUXdCQ3lBQklCbWdJQm1oSVFFTElCRWdDU2dDTENJR0lBWkJIM1VpQm1vZ0JuT3RJQkVRN2dRaUJrWUVRQ0FKUVRBNkFBOGdDVUVQYWlFR0N5QVVRUUp5SVFvZ0NTZ0NMQ0VJSUFaQmZtb2lEaUFGUVE5cU9nQUFJQVpCZjJwQkxVRXJJQWhCQUVnYk9nQUFJQVJCQ0hFaENDQUpRUkJxSVFjRFFDQUhJZ1VDZnlBQm1VUUFBQUFBQUFEZ1FXTUVRQ0FCcWd3QkMwR0FnSUNBZUFzaUJrSHc5QkZxTFFBQUlBMXlPZ0FBSUFWQkFXb2lCeUFKUVJCcWEwRUJSeUFJSUFOQkFFcHlSVUVBSUFFZ0JyZWhSQUFBQUFBQUFEQkFvaUlCUkFBQUFBQUFBQUFBWVJ0eVJRUkFJQVZCTGpvQUFTQUZRUUpxSVFjTElBRkVBQUFBQUFBQUFBQmlEUUFMSUFCQklDQUNJQW9nRVNBSlFSQnFheUFPYXlBSGFpQURJQkZxSUE1clFRSnFJQU5GSUFjZ0NXdEJibW9nQTA1eUd5SURhaUlQSUFRUWl3SWdBQ0FNSUFvUTRnRWdBRUV3SUFJZ0R5QUVRWUNBQkhNUWl3SWdBQ0FKUVJCcUlBY2dDVUVRYW1zaUJSRGlBU0FBUVRBZ0F5QUZJQkVnRG1zaUEycHJRUUJCQUJDTEFpQUFJQTRnQXhEaUFRd0JDeUFEUVFCSUlRWUNRQ0FCUkFBQUFBQUFBQUFBWVFSQUlBa29BaXdoQ3d3QkN5QUpJQWtvQWl4QlpHb2lDellDTENBQlJBQUFBQUFBQUxCQm9pRUJDMEVHSUFNZ0Joc2hDaUFKUVRCcUlBbEIwQUpxSUF0QkFFZ2JJZzBoQ0FOQUlBZ0NmeUFCUkFBQUFBQUFBUEJCWXlBQlJBQUFBQUFBQUFBQVpuRUVRQ0FCcXd3QkMwRUFDeUlETmdJQUlBaEJCR29oQ0NBQklBTzRvVVFBQUFBQVpjM05RYUlpQVVRQUFBQUFBQUFBQUdJTkFBc0NRQ0FMUVFGSUJFQWdDQ0VHSUEwaEJ3d0JDeUFOSVFjRFFDQUxRUjBnQzBFZFNCc2hEQUpBSUFoQmZHb2lCaUFIU1EwQUlBeXRJUmhDQUNFWEEwQWdCaUFYUXYvLy8vOFBneUFHTlFJQUlCaUdmQ0lYSUJkQ2dKVHIzQU9BSWhkQ2dKVHIzQU4rZlQ0Q0FDQUdRWHhxSWdZZ0IwOE5BQXNnRjZjaUEwVU5BQ0FIUVh4cUlnY2dBellDQUFzRFFDQUlJZ1lnQjBzRVFDQUdRWHhxSWdnb0FnQkZEUUVMQ3lBSklBa29BaXdnREdzaUN6WUNMQ0FHSVFnZ0MwRUFTZzBBQ3dzZ0MwRi9UQVJBSUFwQkdXcEJDVzFCQVdvaEZTQVNRZVlBUmlFUEEwQkJDVUVBSUF0cklBdEJkMGdiSVJNQ1FDQUhJQVpQQkVBZ0J5QUhRUVJxSUFjb0FnQWJJUWNNQVF0QmdKVHIzQU1nRTNZaERrRi9JQk4wUVg5eklReEJBQ0VMSUFjaENBTkFJQWdnQ0NnQ0FDSURJQk4ySUF0cU5nSUFJQU1nREhFZ0Rtd2hDeUFJUVFScUlnZ2dCa2tOQUFzZ0J5QUhRUVJxSUFjb0FnQWJJUWNnQzBVTkFDQUdJQXMyQWdBZ0JrRUVhaUVHQ3lBSklBa29BaXdnRTJvaUN6WUNMQ0FOSUFjZ0R4c2lBeUFWUVFKMGFpQUdJQVlnQTJ0QkFuVWdGVW9iSVFZZ0MwRUFTQTBBQ3d0QkFDRUlBa0FnQnlBR1R3MEFJQTBnQjJ0QkFuVkJDV3doQ0VFS0lRc2dCeWdDQUNJRFFRcEpEUUFEUUNBSVFRRnFJUWdnQXlBTFFRcHNJZ3RQRFFBTEN5QUtRUUFnQ0NBU1FlWUFSaHRySUJKQjV3QkdJQXBCQUVkeGF5SURJQVlnRFd0QkFuVkJDV3hCZDJwSUJFQWdBMEdBeUFCcUlnNUJDVzBpREVFQ2RDQU5ha0dFWUdvaEVFRUtJUU1nRGlBTVFRbHNheUlMUVFkTUJFQURRQ0FEUVFwc0lRTWdDMEVIU0NFTUlBdEJBV29oQ3lBTURRQUxDd0pBUVFBZ0JpQVFRUVJxSWhWR0lCQW9BZ0FpRHlBUElBTnVJZzRnQTJ4ckloTWJEUUJFQUFBQUFBQUE0RDlFQUFBQUFBQUE4RDlFQUFBQUFBQUErRDhnRXlBRFFRRjJJZ3hHRzBRQUFBQUFBQUQ0UHlBR0lCVkdHeUFUSUF4Skd5RVpSQUVBQUFBQUFFQkRSQUFBQUFBQUFFQkRJQTVCQVhFYklRRUNRQ0FVUlEwQUlCWXRBQUJCTFVjTkFDQVptaUVaSUFHYUlRRUxJQkFnRHlBVGF5SU1OZ0lBSUFFZ0dhQWdBV0VOQUNBUUlBTWdER29pQXpZQ0FDQURRWUNVNjl3RFR3UkFBMEFnRUVFQU5nSUFJQkJCZkdvaUVDQUhTUVJBSUFkQmZHb2lCMEVBTmdJQUN5QVFJQkFvQWdCQkFXb2lBellDQUNBRFFmK1Q2OXdEU3cwQUN3c2dEU0FIYTBFQ2RVRUpiQ0VJUVFvaEN5QUhLQUlBSWdOQkNra05BQU5BSUFoQkFXb2hDQ0FESUF0QkNtd2lDMDhOQUFzTElCQkJCR29pQXlBR0lBWWdBMHNiSVFZTEFuOERRRUVBSUFZaURDQUhUUTBCR2lBTVFYeHFJZ1lvQWdCRkRRQUxRUUVMSVJBQ1FDQVNRZWNBUndSQUlBUkJDSEVoRWd3QkN5QUlRWDl6UVg4Z0NrRUJJQW9iSWdZZ0NFb2dDRUY3U25FaUF4c2dCbW9oQ2tGL1FYNGdBeHNnQldvaEJTQUVRUWh4SWhJTkFFRUpJUVlDUUNBUVJRMEFJQXhCZkdvb0FnQWlEa1VOQUVFS0lRTkJBQ0VHSUE1QkNuQU5BQU5BSUFaQkFXb2hCaUFPSUFOQkNtd2lBM0JGRFFBTEN5QU1JQTFyUVFKMVFRbHNRWGRxSVFNZ0JVRWdja0htQUVZRVFFRUFJUklnQ2lBRElBWnJJZ05CQUNBRFFRQktHeUlESUFvZ0EwZ2JJUW9NQVF0QkFDRVNJQW9nQXlBSWFpQUdheUlEUVFBZ0EwRUFTaHNpQXlBS0lBTklHeUVLQ3lBS0lCSnlJaE5CQUVjaER5QUFRU0FnQWdKL0lBaEJBQ0FJUVFCS0d5QUZRU0J5SWc1QjVnQkdEUUFhSUJFZ0NDQUlRUjkxSWdOcUlBTnpyU0FSRU80RUlnWnJRUUZNQkVBRFFDQUdRWDlxSWdaQk1Eb0FBQ0FSSUFaclFRSklEUUFMQ3lBR1FYNXFJaFVnQlRvQUFDQUdRWDlxUVMxQkt5QUlRUUJJR3pvQUFDQVJJQlZyQ3lBS0lCUnFJQTlxYWtFQmFpSVBJQVFRaXdJZ0FDQVdJQlFRNGdFZ0FFRXdJQUlnRHlBRVFZQ0FCSE1RaXdJQ1FBSkFBa0FnRGtIbUFFWUVRQ0FKUVJCcVFRaHlJUU1nQ1VFUWFrRUpjaUVJSUEwZ0J5QUhJQTFMR3lJRklRY0RRQ0FITlFJQUlBZ1E3Z1FoQmdKQUlBVWdCMGNFUUNBR0lBbEJFR3BORFFFRFFDQUdRWDlxSWdaQk1Eb0FBQ0FHSUFsQkVHcExEUUFMREFFTElBWWdDRWNOQUNBSlFUQTZBQmdnQXlFR0N5QUFJQVlnQ0NBR2F4RGlBU0FIUVFScUlnY2dEVTBOQUFzZ0V3UkFJQUJCby9VUlFRRVE0Z0VMSUFwQkFVZ2dCeUFNVDNJTkFRTkFJQWMxQWdBZ0NCRHVCQ0lHSUFsQkVHcExCRUFEUUNBR1FYOXFJZ1pCTURvQUFDQUdJQWxCRUdwTERRQUxDeUFBSUFZZ0NrRUpJQXBCQ1VnYkVPSUJJQXBCZDJvaEJpQUhRUVJxSWdjZ0RFOE5BeUFLUVFsS0lRTWdCaUVLSUFNTkFBc01BZ3NDUUNBS1FRQklEUUFnRENBSFFRUnFJQkFiSVFVZ0NVRVFha0VJY2lFRElBbEJFR3BCQ1hJaERTQUhJUWdEUUNBTklBZzFBZ0FnRFJEdUJDSUdSZ1JBSUFsQk1Eb0FHQ0FESVFZTEFrQWdCeUFJUndSQUlBWWdDVUVRYWswTkFRTkFJQVpCZjJvaUJrRXdPZ0FBSUFZZ0NVRVFha3NOQUFzTUFRc2dBQ0FHUVFFUTRnRWdCa0VCYWlFR0lCSkZRUUFnQ2tFQlNCc05BQ0FBUWFQMUVVRUJFT0lCQ3lBQUlBWWdEU0FHYXlJR0lBb2dDaUFHU2hzUTRnRWdDaUFHYXlFS0lBaEJCR29pQ0NBRlR3MEJJQXBCZjBvTkFBc0xJQUJCTUNBS1FSSnFRUkpCQUJDTEFpQUFJQlVnRVNBVmF4RGlBUXdDQ3lBS0lRWUxJQUJCTUNBR1FRbHFRUWxCQUJDTEFnc0xJQUJCSUNBQ0lBOGdCRUdBd0FCekVJc0NJQWxCc0FScUpBQWdBaUFQSUE4Z0FrZ2JDelVBSUFCUVJRUkFBMEFnQVVGL2FpSUJJQUNuUVE5eFFmRDBFV290QUFBZ0FuSTZBQUFnQUVJRWlDSUFRZ0JTRFFBTEN5QUJDeTBBSUFCUVJRUkFBMEFnQVVGL2FpSUJJQUNuUVFkeFFUQnlPZ0FBSUFCQ0E0Z2lBRUlBVWcwQUN3c2dBUXZGQWdJQ2Z3RitJd0JCRUdzaUFpUUFBa0FDUUNBQUlBQW9BZ0FvQW9BQkVRQUFRUWhHRFFBZ0FDQUFLQUlBS0FLQUFSRUFBRUVKUmcwQUlBQWdBQ2dDQUNnQ2dBRVJBQUJCQVVZTkFDQUFJQUFvQWdBb0FvQUJFUUFBUVFOSERRRUxJQUlnQUNnQ2RDSUJJQUVvQWdBb0FvUUJFUUFBTFFBSFFRZHhOZ0lNSUFJZ0FDZ0NjQ0lCSUFFb0FnQW9Bb1FCRVFBQUxRQUhRUWR4TmdJSUlBSkJER29nQWtFSWFoQ21BVFVDQUNFRElBQWdBQ2dDQUNnQ2hBRVJBQUFpQVNBQktRSUVRdi8vLzBlRElBTkNHSVpDZ0lDQU9JT0VOd0lFSUFBZ0FDZ0NBQ2dDaEFFUkFBQXRBQWRCQjNGRkRRQWdBQ2dDY0NJQklBQWdBQ2dDQUNnQ2hBRVJBQUF0QUFkQkIzRWdBU2dDQUNnQ2pBRVJBUUFnQUNnQ2RDSUJJQUFnQUNnQ0FDZ0NoQUVSQUFBdEFBZEJCM0VnQVNnQ0FDZ0NqQUVSQVFBTElBSkJFR29rQUF1MEFnRUdmeU1BUVNCcklnTWtBQ0FESUFBb0Fod2lCRFlDRUNBQUtBSVVJUVVnQXlBQ05nSWNJQU1nQVRZQ0dDQURJQVVnQkdzaUFUWUNGQ0FCSUFKcUlRWkJBaUVGSUFOQkVHb2hBUU5BQWtBQ2Z5QUdBbjhnQUNnQ1BDQUJJQVVnQTBFTWFoQUdFTjRMQkVBZ0EwRi9OZ0lNUVg4TUFRc2dBeWdDREFzaUJFWUVRQ0FBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQUNBQklBQW9BakJxTmdJUUlBSU1BUXNnQkVGL1NnMEJJQUJCQURZQ0hDQUFRZ0EzQXhBZ0FDQUFLQUlBUVNCeU5nSUFRUUFnQlVFQ1JnMEFHaUFDSUFFb0FnUnJDeUVFSUFOQklHb2tBQ0FFRHdzZ0FVRUlhaUFCSUFRZ0FTZ0NCQ0lIU3lJSUd5SUJJQVFnQjBFQUlBZ2JheUlISUFFb0FnQnFOZ0lBSUFFZ0FTZ0NCQ0FIYXpZQ0JDQUdJQVJySVFZZ0JTQUlheUVGREFBQUN3QUxDUUFnQUNnQ1BCQUhDMDBCQVg4akFFRVFheUlESkFBQ2ZpQUFLQUk4SUFHbklBRkNJSWluSUFKQi93RnhJQU5CQ0dvUUNSRGVDMFVFUUNBREtRTUlEQUVMSUFOQ2Z6Y0RDRUovQ3lFQklBTkJFR29rQUNBQkN5c0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1RYWoxRVNnQ0FFRy95QThnQUJEa0N5QUJRUkJxSkFBTHh3RUNBWDhCZmdKQUFrQWdBQ0FBS0FJQUtBS0FBUkVBQUVFSVJnMEFJQUFnQUNnQ0FDZ0NnQUVSQUFCQkNVWU5BQ0FBSUFBb0FnQW9Bb0FCRVFBQVFRRkdEUUFnQUNBQUtBSUFLQUtBQVJFQUFFRURSdzBCQ3lBQUtBSndJZ0VnQVNnQ0FDZ0NoQUVSQUFBdEFBZEJCM0VnQUNBQUtBSUFLQUtFQVJFQUFDMEFCMEVIY1UwTkFDQUFLQUp3SWdFZ0FTZ0NBQ2dDaEFFUkFBQXBBZ1FoQWlBQUlBQW9BZ0FvQW9RQkVRQUFJZ0FnQUNrQ0JFTC8vLzlIZ3lBQ1FvQ0FnRGlEaERjQ0JBc0xFd0FnQUVFZ2NpQUFJQUJCdjM5cVFScEpHd3NtQVFGL0l3QkJFR3NpQUNRQUlBQkJDR29RRGhvZ0FFRUlha0VCRUFnYUlBQkJFR29rQUFzK0FRRi9BbjlCQVVHd3dCUW9BZ0FOQUJwQnNNQVVFTzBMSWdBMkFnQkJBQ0FBUlEwQUdrR1E5QklRN1FzaUFEWUNBRUVBSUFCRkRRQWFFTzRMQ3dzcEFDQUFJQUZIQkVBRFFDQUNJQUFROUFzZ0FrRUVhaUVDSUFCQkJHb2lBQ0FCUncwQUN3c2dBZ3MxQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ0FCRU1nTk5nSUlJQUlReXdFMkFnQWdBa0VJYWlBQ0VCNGhBQ0FDUVJCcUpBQWdBQXZqQXdJRmZ3RjlJd0JCSUdzaUJDUUFJQUVRSXhvZ0FpZ0NBQ0VISUFFUVBDRUZJQVJCQURvQUh3SkFBa0FnQlVVTkFDQUJJQWNnQlJBMElnZ1FFU2dDQUNJR1JRMEFBMEFnQmlnQ0FDSUdSUTBCSUFjZ0JpZ0NCRWNFUUNBR0tBSUVJQVVRTkNBSVJ3MENDeUFCRUVNZ0JrRUlhaUFDRU1RQ1JRMEFDd3dCQ3lBRVFSQnFJQUVnQnlBREVNSUZJQUVRSXlnQ0FDRUNJQUVRUXlFREFrQWdCUVJBSUFNcUFnQWdCYk9VSUFKQkFXcXpYVUVCY3cwQkN5QUVJQVVRdWdGQkFYTWdCVUVCZEhJMkFnd2dCQUovSUFFUUl5Z0NBRUVCYXJNZ0FSQkRLZ0lBbFkwaUNVTUFBSUJQWFNBSlF3QUFBQUJnY1FSQUlBbXBEQUVMUVFBTE5nSUlJQUVnQkVFTWFpQUVRUWhxRUZJb0FnQVE3Z3dnQnlBQkVEd2lCUkEwSVFnTEFrQWdBU0FJRUJFb0FnQWlBa1VFUUNBRUtBSVFJQUZCQ0dvaUFpZ0NBRFlDQUNBQ0lBUW9BaEEyQWdBZ0FTQUlFQkVnQWpZQ0FDQUVLQUlRS0FJQVJRMEJJQVFvQWhBaEFpQUJJQVFvQWhBb0FnQW9BZ1FnQlJBMEVCRWdBallDQUF3QkN5QUVLQUlRSUFJb0FnQTJBZ0FnQWlBRUtBSVFOZ0lBQ3lBRVFSQnFFRjhoQmlBQkVDTWlBU0FCS0FJQVFRRnFOZ0lBSUFSQkFUb0FIeUFFUVJCcUVMTUNDeUFBSUFSQkVHb2dCaEF4SUFSQkgyb1FvZ0VnQkVFZ2FpUUFDelFCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lJSUFBZ0FpZ0NDQ0lCS1FJQU53SUFJQUFnQVNnQ0NEWUNDQ0FDUVJCcUpBQUxTUUVDZnlNQVFTQnJJZ0VrQUNBQlFRaHFRUXdRSmlBQklBRkJHR29ROHdzUWtRRWlBaWdDQUNBQUVKSURJQUVRekFFUThRc2dBaEJmSVFBZ0FoRHdDeUFCUVNCcUpBQWdBQXNIQUNBQUVQSVRDK2dEQWdWL0FYMGpBRUVnYXlJRkpBQWdBUkFqSUFJUTZnWWhDQ0FCRUR3aEJpQUZRUUE2QUI4Q1FBSkFJQVpGRFFBZ0FTQUlJQVlRTkNJSkVCRW9BZ0FpQjBVTkFBTkFJQWNvQWdBaUIwVU5BU0FJSUFjb0FnUkhCRUFnQnlnQ0JDQUdFRFFnQ1VjTkFnc2dBUkJESUFkQkNHb2dBaENMQTBVTkFBc01BUXNnQlVFUWFpQUJJQWhCOWZBUklBTWdCQkNhQmlBQkVDTW9BZ0FoQWlBQkVFTWhBd0pBSUFZRVFDQURLZ0lBSUFhemxDQUNRUUZxczExQkFYTU5BUXNnQlNBR0VMb0JRUUZ6SUFaQkFYUnlOZ0lNSUFVQ2Z5QUJFQ01vQWdCQkFXcXpJQUVRUXlvQ0FKV05JZ3BEQUFDQVQxMGdDa01BQUFBQVlIRUVRQ0FLcVF3QkMwRUFDellDQ0NBQklBVkJER29nQlVFSWFoQlNLQUlBRU5NRUlBZ2dBUkE4SWdZUU5DRUpDd0pBSUFFZ0NSQVJLQUlBSWdKRkJFQWdCU2dDRUNBQlFRaHFJZ0lvQWdBMkFnQWdBaUFGS0FJUU5nSUFJQUVnQ1JBUklBSTJBZ0FnQlNnQ0VDZ0NBRVVOQVNBRktBSVFJUUlnQVNBRktBSVFLQUlBS0FJRUlBWVFOQkFSSUFJMkFnQU1BUXNnQlNnQ0VDQUNLQUlBTmdJQUlBSWdCU2dDRURZQ0FBc2dCVUVRYWhCZklRY2dBUkFqSWdFZ0FTZ0NBRUVCYWpZQ0FDQUZRUUU2QUI4Z0JVRVFhaEN6QWdzZ0FDQUZRUkJxSUFjUU1TQUZRUjlxRUtJQklBVkJJR29rQUF0RkFRRi9Jd0JCSUdzaUFpUUFJQUlnQVJDU0F6WUNFQkRuQVNBQ1FSaHFJQUFnQVNBQ1FSQnFJQUpCQ0dvUTlCTWdBa0VZYWhCRUlRQWdBa0VnYWlRQUlBQkJCR29MWkFFQmZ5TUFRUkJySWdRa0FDQUVJQUUyQWd3Z0JDQUFLQUlBSUFSQkRHb1E4d3dDUUNBQ1FYOXFJZ0ZCQVVzTkFDQUJRUUZyQkVBZ0FDZ0NDQ0FFUVF4cUVQVVRJQU0yQWdBTUFRc2dCQ0FBS0FJRUlBUkJER29RM1FVTElBUkJFR29rQUF0SkFRRi9Jd0JCRUdzaUJDUUFJQVFnQWpZQ0NDQUVJQUUyQWd3Z0JDQUROZ0lFSUFBb0FnQWdCRUVNYWlnQ0FDQUVRUWhxS0FJQUlBUkJCR29vQWdBUTloTWdCRUVRYWlRQUN5VUJBbjhqQUVFUWF5SUFKQUFnQUVFSWFrRzlCQkF4S0FJQUlRRWdBRUVRYWlRQUlBRUxNUUVCZnlBQUtBSVFHaUFBS0FJSUlRSURRQ0FDRUxvSElBQWdBQ2dDQ0VFRWFpSUNOZ0lJSUFGQmYyb2lBUTBBQ3dzNkFRRi9Jd0JCRUdzaUFpUUFJQUFRR3hvRFFDQUFLQUlFRUxvSElBQWdBQ2dDQkVFRWFqWUNCQ0FCUVg5cUlnRU5BQXNnQWtFUWFpUUFDMmtCQW44akFFRWdheUlESkFBQ1FDQUFFQnNvQWdBZ0FDZ0NCR3RCQW5VZ0FVOEVRQ0FBSUFFUStoTU1BUXNnQUJBYklRSWdBMEVJYWlBQUlBQVFGaUFCYWhEYkJDQUFFQllnQWhEeUFpSUNJQUVRK1JNZ0FDQUNFTk1NSUFJUTBnd0xJQU5CSUdva0FBdFFBQUpBSUFFb0FnQkJBQkF2SUFBb0FnQW9BZ0JIRFFBZ0FTZ0NBQ2dDREVISEFFY05BQ0FCS0FJQVFRRVFMMEhzS1VjRVFDQUJLQUlBUVFFUUwwSHJLVWNOQVFzZ0FDZ0NCRUVCT2dBQUN3dFlBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNBQ0FFSUFFMkFnZ2dCRUVJYWlBRUVCNEVRQU5BSUFNZ0JDZ0NDQkQ4RXlBRVFRaHFFR1lhSUFSQkNHb2dCQkFlRFFBTEN5QUFJQU1wQWdBM0FnQWdCRUVRYWlRQUM2b0ZBUWQvSXdCQlFHb2lBU1FBSUFGQklEWUNFQ0FBUWR3Q2FpSURJQUZCRUdvUVB4QVdRUUZPQkVBRFFDQUJRU0EyQWhBQ1FDQURJQUZCRUdvUVB5QUVFQkVvQWdBaUFrRUFFQzlCNVNsSERRQWdBQ0FDUVFFUUwwRVZRUWdRalFJRVFDQUFRWWJ3RVVHQWlnUVFzZ0VnQUVIZ0loQWhDeUFBSUFKQkFSQXZRUlZCRUJDTkFrVUVRQ0FBSUFKQkFSQXZRUlpCRUJDTkFrVU5BUXNnQUVHYjhCRkJnSVlFRUxJQklBQkIwU0lRSVFzZ0FVRWdOZ0lRSUFSQkFXb2lCQ0FESUFGQkVHb1FQeEFXU0EwQUN3c2dBU0FBUWVnQWFpSURFQ1VRUURZQ09DQUJJQU1RSlJBeU5nSVFJQUZCT0dvZ0FVRVFhaEFlQkVBZ0FFR0VBbW9oQkFOQUlBRWdBU2dDT0NnQ0FDSUdFTzhFRUVBMkFqQWdBU0FHRU84RUVESTJBaEFnQVVFd2FpQUJRUkJxRUI0RVFBTkFJQUVnQVNnQ01DZ0NBQ0lDRUNVUVFEWUNFQ0FCSUFJUUpSQXlOZ0lvSUFGQkVHb2dBVUVvYWhBZUJFQURRQ0FBSUFFb0FoQW9BZ0FRakJRZ0FVRVFhaERPQVJvZ0FTQUNFQ1VRTWpZQ0tDQUJRUkJxSUFGQktHb1FIZzBBQ3dzZ0FTQUNFSTBGRUVBMkFpZ2dBU0FDRUkwRkVESTJBaEFnQVVFb2FpQUJRUkJxRUI0RVFBTkFJQUVnQVNnQ0tDZ0NBQ2dDQkNJRk5nSWtBa0FnQUNBQUlBVVEyZ1lRekJSRkRRQWdBVUVBT2dBaklBUVFRQ0VGSUFRUU1pRUhJQUVnQVVFamFqWUNIQ0FCSUFGQkpHbzJBaGdnQVNBQktRTVlOd01JSUFGQkVHb2dCU0FISUFGQkNHb1EvUk1nQVMwQUl3MEFJQUFnQVNnQ0pFSHNLVUYvRUhnTElBRkJLR29RemdFYUlBRWdBaENOQlJBeU5nSVFJQUZCS0dvZ0FVRVFhaEFlRFFBTEN5QUJRVEJxRU00QkdpQUJJQVlRN3dRUU1qWUNFQ0FCUVRCcUlBRkJFR29RSGcwQUN3c2dBVUU0YWhET0FSb2dBU0FERUNVUU1qWUNFQ0FCUVRocUlBRkJFR29RSGcwQUN3c2dBVUZBYXlRQUMxd0JBWDhqQUVFUWF5SURKQUFnQXlBQk5nSUFJQU1nQURZQ0NBSkFJQU5CQ0dvZ0F4QWVSUTBBQTBBZ0FpQURLQUlJRVBVTERRRWdBMEVJYWhCbUdpQURRUWhxSUFNUUhnMEFDd3NnQXlnQ0NDRUFJQU5CRUdva0FDQUFDM0FCQW44akFFRWdheUlDSkFBZ0FFRUlhaEQvQ3lBQVFjVExEellDREJENEV5RURJQUJCK1BBUk5nSU1JQUFnQXpZQ0NDQUNRUWhxUVF3UUppQUNJQUpCR0dvUTh3c1FrUUVpQXlnQ0FDQUJFTXdCSUFJUXpBRVE4UXNnQUNBREVGODJBZ0FnQXhEd0N5QUNRU0JxSkFBTGZRRUJmeU1BUVNCcklnTWtBQ0FESUFJMkFoQWdBeUFCTmdJWUlBQW9BZ0FoQVNBRElBQVFRRFlDQ0NBQklBTkJHR29nQTBFSWFoQ2ZCRUVDZEdvaEFTQURRUmhxSUFOQkVHb1FIZ1JBSUFBZ0FTQURRUkJxSUFOQkdHb1Fud1JCQW5ScUlBQW9BZ1FnQVJEdUV4RDNDd3NnQVJCaEdpQURRU0JxSkFBTG5BRUJBWDhqQUVFZ2F5SURKQUFnQXlBQ05nSUlJQU1nQVRZQ0VDQURJQUFnQVNBRFFRaHFFUDhUTmdJWUFrQWdBMEVZYWlBRFFSQnFFQjVGRFFBZ0F5QURLQUlZTmdJQUlBTVFaaUFEUVJCcUVCNUZEUUFEUUNBRFFRaHFJQU1vQWdBUTlRdEZCRUFnQXlnQ0dDQURLQUlBRVBRTElBTkJHR29RWmhvTElBTVFaaUFEUVJCcUVCNE5BQXNMSUFNb0FoZ2hBQ0FEUVNCcUpBQWdBQXRjQVFOL0l3QkJFR3NpQWlRQUlBSWdBVFlDRENBQVFRUnFFUGdMSUFCQkhHb2lBeEQ0QTBFc0VDWkIrUUVRdHdFaUJDQUJFTUlDRURrZ0FDQUNRUWhxSUFRUU9pSUFFSHdnQUJBK0lBTWdBa0VNYWhCSElBSkJFR29rQUFzbkFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCRDdEQkF4S0FJQUlRQWdBVUVRYWlRQUlBQUxQd0VCZnlNQVFSQnJJZ0VrQUNBQVFRUnFFUGdMSUFCQkhHb1ErQU1nQUNBQlFRaHFRU3dRSmtIL0FSQzNBUkE2SWdBUWZDQUFFRDRnQVVFUWFpUUFDKzhHQVFoL0l3QkIwQUZySWdFa0FDQUJRYmdCYWhDV0FTRUlJQUZCb0FGcUVKWUJJUUlnQVVHSUFXb1FsZ0VoQkNBQlFmQUFhaENXQVNFRklBRWdBRUhvQUdvaUJoQWxFRUEyQW1nZ0FTQUdFQ1VRTWpZQ0tDQUJRZWdBYWlBQlFTaHFFQjRFUUFOQUlBRW9BbWdvQWdBaUF4Q29EQ0VISUFFZ0FqWUNFQ0FCSUFRMkFrd2dBU0FJTmdKSUlBRWdBallDVUNBQklBRXBBMGczQXdnZ0J3Si9JQUZCMkFCcUlnY2dBVUVJYWhDQUZDQUhDeENnRENBSEVLd0NJQUVnQXhEdkJCQkFOZ0pBSUFFZ0F4RHZCQkF5TmdJb0lBRkJRR3NnQVVFb2FoQWVCRUFEUUNBQklBRkJRR3NvQWdBb0FnQTJBandDUUFKQUlBUWdBVUU4YWhEMEJFVUVRQ0FDSUFGQlBHb1E3QXhGRFFFTElBRWdBU2dDUEJBbEVFQTJBamdnQVVFNGFoQm1HaUFCSUFFb0Fqd1FKUkF5TmdJb0lBRkJPR29nQVVFb2FoQWVSUTBCQTBBZ0FTQUJLQUk0S0FJQUtBSUVOZ0kwSUFGQktHb2dCU0FCUVRScUVQa0xJQUZCT0dvUVpob2dBU0FCS0FJOEVDVVFNallDS0NBQlFUaHFJQUZCS0dvUUhnMEFDd3dCQ3lBSUlBRkJQR29ROUFRTkFDQUJJQUVvQWp3UUpSQkFOZ0k0SUFFZ0FTZ0NQQkFsRURJMkFpZ2dBVUU0YWlBQlFTaHFFQjVGRFFBRFFDQUJJQUVvQWpnb0FnQW9BZ1EyQWpRZ0FVRW9haUFGSUFGQk5Hb1ErUXNnQVVFNGFoQm1HaUFCSUFFb0Fqd1FKUkF5TmdJb0lBRkJPR29nQVVFb2FoQWVEUUFMQ3lBQlFVQnJFTTRCR2lBQklBTVE3d1FRTWpZQ0tDQUJRVUJySUFGQktHb1FIZzBBQ3dzZ0FVSG9BR29RemdFYUlBRWdCaEFsRURJMkFpZ2dBVUhvQUdvZ0FVRW9haEFlRFFBTEN5QUJJQVFReXdnMkFpZ2dBUkNGQnpZQ2FDQUJRU2hxSUFGQjZBQnFFQjRFUUFOQUlBRkJLR29RUkNnQ0FCQ0ZGQ0FCUVNocUVJZ0ZJQUVRaFFjMkFtZ2dBVUVvYWlBQlFlZ0FhaEFlRFFBTEN5QUJJQUlRaEJRMkFpZ2dBUkNGQkRZQ2FDQUJRU2hxSUFGQjZBQnFFSWdCQkVBRFFDQUJRU2hxRUVRb0FnQWdBVUVvYWhCRUtBSUVFSU1VSUFGQktHb1FpQVVnQVJDRkJEWUNhQ0FCUVNocUlBRkI2QUJxRUlnQkRRQUxDeUFCSUFCQmhBSnFJZ0FRUUNBQUVESWdCUkNDRkRZQ0tDQUJRU0JxSUFGQktHb1FaeUVESUFFZ0FCQXlOZ0pvSUFGQkdHb2dBVUhvQUdvUVp5RUdJQUFnQXlnQ0FDQUdLQUlBRUlFVUlBVVF3QVFnQkJEQUJDQUNFSVVGR2lBSUVNQUVJQUZCMEFGcUpBQUxVZ0FDUUNBQktBSUFLQUlNUWNjQVJ3MEFJQUVvQWdCQkFCQXZJQUFvQWdBb0FnQkhEUUFnQVNnQ0FFRUJFQzlCQmtjTkFDQUJLQUlBUVFJUUx5RUJJQUFvQWdRaUFDQUJJQUFvQWdCeU5nSUFDd3QxQUFKQUlBRW9BZ0FvQWd4QnlBQkhEUUFnQVNnQ0FFRUFFQzhnQUNnQ0FDZ0NBRWNOQUNBQktBSUFRUUVRTHlBQUtBSUVLQUlBUncwQUlBRW9BZ0JCQWhBdlFTTkhCRUFnQVNnQ0FFRUNFQzlCQjBjTkFRc2dBU2dDQUVFREVDOGhBU0FBS0FJSUlnQWdBU0FBS0FJQWNqWUNBQXNMTHdFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFCQkhHb2dBUkNhQlNBQ1FRaHFFSUVKSVFBZ0FrRVFhaVFBSUFBTFdBRUJmeU1BUVJCcklnUWtBQ0FFSUFJMkFnQWdCQ0FCTmdJSUlBUkJDR29nQkJBZUJFQURRQ0FESUFRb0FnZ1FoeFFnQkVFSWFoQm1HaUFFUVFocUlBUVFIZzBBQ3dzZ0FDQURLUUlBTndJQUlBUkJFR29rQUF0aUFRRi9Jd0JCRUdzaUJDUUFJQVFnQWpZQ0FDQUVJQUUyQWdnZ0JFRUlhaUFFRUI0RVFBTkFJQU1nQkNnQ0NCQ0lGQ0FFUVFocUVHWWFJQVJCQ0dvZ0JCQWVEUUFMQ3lBQUlBTXBBZ0EzQWdBZ0FDQURLQUlJTmdJSUlBUkJFR29rQUF1OEJRRUlmeU1BUWRBQWF5SUNKQUFDUUFKQUFrQWdBU2dDRENJRFFkRUJUQVJBSUFOQm1YOXFRUVZKRFFFZ0EwRkRha0VDU1EwQ0lBTkJERWNOQXlBQlFRRVFMMEcwZjJwQkFrc05BeUFBUVRRUUlRd0RDeUFEUWE1K2FrRUdUd1JBSUFOQnNDbEhEUU1nQUVIajd4RVFRaUFBUWJFcEVDRU1Bd3NnQUVFekVDRU1BZ3NnQUVFeUVDRU1BUXNnQUVIb0FHb2lCQ0FCUVFBUUx4QXZJZ1lvQWd4QndRQkhEUUFnQWlBRUlBWkJBQkF2RUM4b0FnZ2lBellDVENBRUlBTVFMeUlEUVFBUUwwSGxLVWNOQUNBQ0lBTkJBUkF2SWdNMkFrd2dCQ0FERUM4aEF5QUNRUUEyQWtnQ1FDQUdFTHdDUVFKSURRQWdBRUdFQW1vaEIwRUJJUWdEUUNBRUlBWWdDQkF2RUM4aEJRSi9JQU1vQWd4QkhrWUVRQ0FDSUFWQkFCQXZOZ0pFSUFjUVFDRUZJQWNRTWlFSklBSWdBa0hJQUdvMkFoQWdBaUFDUWNRQWFqWUNQQ0FDSUFKQnpBQnFOZ0k0SUFJZ0Fpa0RPRGNEQ0NBQ0lBSkJ5QUJxTmdKQUlBSkJLR29nQlNBSklBSkJDR29RaXhRZ0FpQURJQUlvQWtRUUx5SUROZ0pNSUFRZ0F4QXZEQUVMSUFNb0FneEJIRWNFUUNBREtBSU1RUjFIRFFNTElBY1FRQ0VGSUFjUU1pRUpJQUlnQWtISUFHbzJBaVFnQWlBQ1Fjd0FhallDSUNBQ0lBSXBBeUEzQXhnZ0FrRW9haUFGSUFrZ0FrRVlhaENLRkNBQ0lBTkJBQkF2SWdNMkFrd2dCQ0FERUM4TElRTWdDRUVCYWlJSUlBWVF2QUpJRFFBTEN5QUJRUUpCQVNBQktBSU1RVDVHR3hBdkdpQUNJQUZCQTBFQ0lBRW9BZ3hCUGtZYklnTVFMeUFDS0FKSWNpSUVRUUFnQkd0eElnUTJBa2dnQVVFUWFpQURFQkVnQkRZQ0FBc2dBU2dDQ0FSQUlBQWdBU0FCS0FJSUVQc0xDMEVBSVFNZ0FSQzhBa0VBU2dSQUEwQUNRQ0FCSUFNUWlSUkZEUUFnQUNBQklBTVFMeEJpUlEwQUlBQWdBU0FBSUFFZ0F4QXZFR0lRK3dzTElBTkJBV29pQXlBQkVMd0NTQTBBQ3dzZ0FrSFFBR29rQUF2eEFnRUVmeU1BUVRCcklnRWtBQ0FBRUY0aEF3SkFJQUFvQWhCQmdBSlBCRUFnQUNBQUtBSVFRWUIrYWpZQ0VDQUJJQUFvQWdRb0FnQTJBaGdnQUJETUF5QUFJQUZCR0dvUXpRTU1BUXNDUUNBQUVOQUJJQUFRaUFOSkJFQWdBQkRoQ0VVTkFTQUJRWUFnRUNZMkFoZ2dBQ0FCUVJocUVNMEREQUlMSUFFZ0FCQ0lBMEVCZERZQ0NDQUJRUUUyQWdBZ0FVRVlhaUFCUVFocUlBRVFVaWdDQUNBQUVOQUJJQUFRSXhEeUFpRUNJQUVnQVVFSWFrR0FJQkFtSUFFZ0EwR0FBaENaQVJDUkFTSUVLQUlBTmdJQUlBSWdBUkRnQ0NBRUVGOGFJQUFvQWdnaUF5QUFLQUlFUndSQUEwQWdBaUFEUVh4cUlnTVEzd2dnQXlBQUtBSUVSdzBBQ3dzZ0FDQUNFQzRnQUVFRWFpQUNRUVJxRUM0Z0FFRUlhaUFDUVFocUVDNGdBQkFqSUFJUUl4QXVJQVFRMXdZZ0FoQ1JBd3dCQ3lBQlFZQWdFQ1kyQWhnZ0FDQUJRUmhxRU4wSUlBRWdBQ2dDQkNnQ0FEWUNHQ0FBRU13RElBQWdBVUVZYWhETkF3c2dBVUV3YWlRQUMyQUJBbjhnQUNnQ0FFSC8vLy8vQjNGRkJFQkJBQThMSUFBUWx3d2lBVUdCZjBZRVFDQUFFSllJSWdCQmdJQ0FBbkVFUUVHQmZ3OExRWUYvSVFFRFFDQUJRWDlxSVFFZ0FFR0FnSUFCY1NFQ0lBQkJBWFFoQUNBQ1JRMEFDd3NnQVFzdkFDQUNRUUE2QUFBZ0FDQUJhaUlCUVlDQWdBUnhCSDhnQWtFQk9nQUFJQUZCQVhaQi8vLy8vUWR4QlNBQkN3dEFBUUovSUFBUWpoUWhBU0FBRUpZSUlRQWdBVUdDZjBnRVFBTkFJQUJCQVhRaEFDQUJRWUYvU0NFQ0lBRkJBV29oQVNBQ0RRQUxDeUFBUWYvLy93TnhDeUVCQVg4akFFRVFheUlCSkFBZ0FTQUFOZ0lJSUFFb0FnZ2FJQUZCRUdva0FBdHlBUUovSUFCQkJHb2lBMEVBRUJFb0FnQWdBUkNlQWlBQVFTaHFJZ0FRRmtFQVNnUkFBMEFnQUNBQ0VCRW9BZ0FnQVJDZUFpQUNRUUZxSWdJZ0FCQVdTQTBBQ3d0QkFTRUNJQU1RRmtFQlNnUkFBMEFnQXlBQ0VCRW9BZ0FnQVJDZUFpQUNRUUZxSWdJZ0F4QVdTQTBBQ3dzTE53RUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnQWdBeUFCTmdJSUlBQWdBMEVJYWlnQ0FCQzZDU0FES0FJQUVKRVVJQU5CRUdva0FBdExBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNDQ0FFSUFFMkFnd2dCQ0FETmdJRUlBUkJDR29vQWdBYUlBUkJCR29vQWdBYUlBUkJER29vQWdBZ0FDZ0NBQkNTRkNBRVFSQnFKQUFMSlFFQ2Z5TUFRUkJySWdBa0FDQUFRUWhxUWJRRUVERW9BZ0FoQVNBQVFSQnFKQUFnQVF0REFDTUFRUkJySWdJa0FDQUFRUWhxRVA4TElBQkJ4TXNQTmdJTUlBQVFsUlEyQWdnZ0FFSFk3aEUyQWd3Z0FDQUJFTXdCSUFJUXpBRVFreFFnQWtFUWFpUUFDeWtCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lJSUFBZ0FrRUlhaUFDRUpZVUlBSkJFR29rQUNBQUN3a0FJQUFRZ0F3UUtnc0pBQ0FBRUlFTUVDb0xPd0VCZnlBQUlBQW9BZ1JCRUdvaUFUWUNCQ0FCSUFBb0FnQWlBU2dDQUd0QmdDQkdCRUFnQUNBQlFRUnFOZ0lBSUFBZ0FTZ0NCRFlDQkFzTE53QWdBQ0FCS0FJRUlBRW9BaEJCQm5aQi9QLy9IM0ZxSWdBZ0FSQ1BCUVIvUVFBRklBQW9BZ0FnQVMwQUVFRUVkR29MRUprQkdndWxBUUVDZnlNQVFSQnJJZ0VrQUNBQUVGNGFJQUZCQ0dvZ0FCQ2JGQ0FCSUFBUWdnd2dBVUVJYWlBQkVKQUZCRUFEUUNBQktBSU1HaUFCUVFocUVKb1VJQUZCQ0dvZ0FSQ1FCUTBBQ3dzZ0FCQmVRUUEyQWdBZ0FCRFFBVUVDU3dSQUEwQWdBQ2dDQkNnQ0FCQXFJQUFRekFNZ0FCRFFBVUVDU3cwQUN3c2dBQkRRQVVGL2FpSUNRUUZOQkVBZ0FFR0FBVUdBQWlBQ1FRRnJHellDRUFzZ0FVRVFhaVFBQ3drQUlBQVFuUWdRS2d0NUFRSi9Jd0JCRUdzaUJpUUFRU3dRSmtIMkFSQzNBU0lGSUFFUXdnSVFPU0FGSUFJUXdnSVFPU0FGSUFNUVRFRUFJUU1nQkJBV1FRQktCRUFEUUNBRklBUWdBeEFSS0FJQUVFd2dBMEVCYWlJRElBUVFGa2dOQUFzTElBQW9Bb1FCSUFaQkNHb2dCUkE2SWdBUWZDQUFFRDRnQmtFUWFpUUFDNE1CQVFOL0l3QkJRR29pQWlRQUlBQkJDR29nQVJDZUFpQUFRVFJxSWdNUUZrRUFTZ1JBQTBBZ0F5QUVFQkVvQWdBZ0FSQ2VBaUFFUVFGcUlnUWdBeEFXU0EwQUN3c2dBRUZBYTBFQUVCRW9BZ0FnQWtFd2FpQUJFSmNVSWdBUW9Bd2dBQkNzQWlBQ1FRQkJBRUU0RUZFaUFDQUJFSjRDSUFBUS9RSWFJQUpCUUdza0FBc3lBUUYvSUFCQkJHb2lBQkFXUVFCS0JFQURRQ0FBSUFJUUVTZ0NBQ0FCRUo4VUlBSkJBV29pQWlBQUVCWklEUUFMQ3d0Y0FRTi9Jd0JCTUdzaUFpUUFJQUJCeEFCcUlnTVFGa0VCVGdSQVFRQWhBQU5BSUFKQnlnSVF0d0VpQkNBRElBQVFFU2dDQUJEK0FpQUVJQUVRbmdJZ0JCRDlBaG9nQUVFQmFpSUFJQU1RRmtnTkFBc0xJQUpCTUdva0FBdUdBUUVDZnlNQVFSQnJJZ0lrQUNBQUlBQW9BaEFnQUVFVWFpQUJFSU1NSUFJZ0FFRzBBMm9pQXhEUkFqWUNDQ0FDSUFNUWZqWUNBQ0FDUVFocUlBSVFpQUVFUUFOQUlBQWdBa0VJYWhCWEtBSUFJQUpCQ0dvUVZ5Z0NCQ0FCRUlNTUlBSkJDR29RcVFFZ0FpQURFSDQyQWdBZ0FrRUlhaUFDRUlnQkRRQUxDeUFDUVJCcUpBQUxpd0VCQTM4akFFRVFheUlDSkFBZ0FpQUFFQnNRL0FzZ0FpZ0NBRUVJYWlJRElBRVFzQU1nQTBFUWFpQUJRUkJxRUxBRElBTWdBU2tDSURjQ0lDQUNLQUlBSVFFZ0FpZ0NBQ0lESUFBMkFnQWdBU0FBS0FJRUlnUTJBZ1FnQkNBQk5nSUFJQUFnQXpZQ0JDQUFFQnNpQUNBQUtBSUFRUUZxTmdJQUlBSVFYeG9nQWhENkN5QUNRUkJxSkFBTGxnUUJCWDhqQUVIZ0FHc2lBaVFBSUFGQjNPMFJFRWNnQVNBQVFRUnFFRWNnQWlBQUtBSmtOZ0l3SUFFZ0FrRXdhaEJCSUFJZ0FDZ0NpQUZCQVdvMkFqQWdBU0FDUVRCcUVFRWdBa0VBTmdJd0lBRWdBa0V3YWhCQklBSWdBRUhZQUdvaUF4RG5BellDQUNBQ0lBTVFnUUUyQWpBZ0FpQUNRVEJxRUI0RVFBTkFJQUpCTUdwQkFFRUFRUkVRVVNJRUlBSVFWeWdDQUJCTUlBUWdBUkNlQWlBRUVQMENHaUFDRUtrQklBSWdBeENCQVRZQ01DQUNJQUpCTUdvUUhnMEFDd3NnQWlBQVFTeHFJZ01RNXdNMkFnQWdBaUFERUlFQk5nSXdJQUlnQWtFd2FoQWVCRUFEUUNBQ1FUQnFRUUJCQUVFS0VGRWlCQ0FDRUZjUUV4RCtBaUFFSUFFUW5nSWdCQkQ5QWhvZ0FoQ3BBU0FDSUFNUWdRRTJBakFnQWlBQ1FUQnFFQjROQUFzTElBRWdBRUhVQVdvUTd3TWdBa0V3YWtFQVFRQkJEaEJSSWdNZ0FDZ0NVQkJNSUFNZ0FDZ0NWQkJNSUFNZ0FSQ2VBaUFCSUFCQjRBRnFFTzhESUFFZ0FFSHNBV29RN3dNZ0FTQUFRY2dCYWhEdkF5QUFJQUVRb2hRZ0FFRTRhaUlGRUJaQkFVNEVRRUVBSVFRRFFDQUNRUUJCQUVFRUVGRWlCaUFGSUFRUUVTZ0NBQkQrQWlBR0lBRVFuZ0lnQmhEOUFob2dCRUVCYWlJRUlBVVFGa2dOQUFzTElBRWdBRUg0QVdvUTd3TWdBQ0FCRUtFVUlBRWdBRUdFQW1vUTd3TWdBU0FBUVpBQ2FoRHZBeUFCSUFCQm5BSnFFTzhESUFCQjZBQnFJQUVRb0JRZ0F4RDlBaG9nQWtIZ0FHb2tBQXVxQVFFRWZ5TUFRU0JySWdJa0FBSkFJQUFvQXJRQlJRMEFJQUJCcUFGcUlnRVFGa0VDU1EwQUlBSkJFR29RTUNFRElBRVFGa0VCVGdSQUEwQWdBaUFBSUFFZ0JCQVJLQUlBUVFBUWREWUNEQ0FESUFKQkRHb1FRU0FFUVFGcUlnUWdBUkFXU0EwQUN3c2dBQ0FBSUFBZ0FDQUFRU0FReVFFZ0FSQVdFTEVCSUFOQkFCRDFBeUFBUVNBUXlRRWdBQ2dDdEFFUWtRdzJBclFCSUFFUStBTWdBeEEyQ3lBQ1FTQnFKQUFMV2dFQ2Z3SkFJQUFnQUNnQ3VBRVF5QU1nQUVHb0FXb2lBUkFXU2cwQUlBRVFGZ1JBQTBBZ0FpQUJJQUlRRVNnQ0FFY05BaUFDUVFGcUlnSWdBUkFXU1EwQUN3c2dBUkQ0QXlBQUtBSzBBUTBBSUFCQkFEWUN1QUVMQ3kwQkFYOGdBQkFXSWdGQkFFa0VRQ0FBUVFBZ0FXc1F2Z3dQQ3lBQlFRQkxCRUFnQUNBQUtBSUFFSllIQ3d0Y0FRRi9JQUFRWGhvZ0FCQmVJUUVnQUNnQ0JDQUFLQUlRSUFFb0FnQnFRWDlxUVFaMlFmei8veDl4YWlnQ0FCb2dBQkJlSWdFZ0FTZ0NBRUYvYWpZQ0FDQUFFUDBMUVlBRVR3UkFJQUFRM0Fnb0FnQVFLaUFBRU5zSUN3dFBBUUovSXdCQkVHc2lBaVFBSUFBUVhpRURJQUFRL1F0RkJFQWdBQkNORkFzZ0FrRUlhaUFBRUlJTUlBTWdBaWdDRENBQkVQSUlJQUFRWGlJQUlBQW9BZ0JCQVdvMkFnQWdBa0VRYWlRQUMyRUJCWDhqQUVFUWF5SUJKQUFnQUVHSUEyb2lBZ0ovSUFBUTFnVWhBeUFBRU5ZRklRUWdBQkRXQlNFRklBRWdBQkRXQlRZQ0RDQUJJQVUyQWdnZ0FTQUVOZ0lFSUFFZ0F6WUNBQ0FCQ3hDcEZDQUNFSXdJSVFBZ0FVRVFhaVFBSUFBTFJBRUJmeUFBS0FLRUFSQ1VDRVVFUUNBQUVJMElDeUFBUWZBQ2FpSUJFSlVGS0FJQUtBSTBJQUVRbFFVb0FnQVE4d01nQUNBQkVKVUZLQUlBRU9VQklBRVFudzBMUHdBQ1FDQUNRUUZJRFFBZ0FDZ0NoQUVRbEFnTkFDQUFJQUVnQWhBUktBSUFFTndDQ3lBQklBSVFFU2dDQUNJQktBSTBJQUVROHdNZ0FDQUJFT1VCQzdJQ0FRUi9Jd0JCRUdzaUNTUUFJQUFvQW9RQktBSTBJUW9nQTBFQlRnUkFBMEJCUEJBbUlnc2dBQkJWSUFvUTlBTWFJQWtnQ3pZQ0RDQUhJQWxCREdvUVFTQUlRUUZxSWdnZ0EwY05BQXNMUVR3UUppSUlJQUFRVlNBS0VQUURJUU1nQ1NBSU5nSUlJQUFnQXlBQ0VJZ01RUUFoQ0VFc0VDWkJBRUVBUWZzQkVGRWlBaUFCRURrZ0FnSi9JQVpCZjBvRVFDQUhJQVlRRVNnQ0FDRURDeUFEQ3hEQ0FoQTVJQU1nQUNnQ2hBRVExd1VnQkJBV1FRQktCRUFEUUNBQ0lBUWdDQkFSS0FJQUVFd2dBaUFISUFVZ0NCQVJLQUlBRUJFb0FnQVF3Z0lRT1NBSElBVWdDQkFSS0FJQUVCRW9BZ0FnQUNnQ2hBRVExd1VnQ0VFQmFpSUlJQVFRRmtnTkFBc0xJQUFvQW9RQklBa2dBaEE2SWdFUWZDQUJFRDRnQUVId0Ftb2dDVUVJYWhDaERTQUpRUkJxSkFBTDNBa0JDWDhqQUVId0FHc2lCQ1FBSUFBZ0F4QzdBaUVMSUFRZ0FDQURFTWdESWdVMkFtd2dCQ0FBSUFNUXN3d2lDVFlDYUNBQVFlZ0FhaUFMRUM5QkFCQXZJUVlDUUFKQUlBQWdBa0VBRUJFb0FnQVFvZ05GRFFBZ0FDQUNRUUFRRVNnQ0FCRElBU0FGU0EwQUlBQWdBa0VBRUJFb0FnQVFyZ1FnQ1VnTkFDQUNRUUFRRVNnQ0FDRUdJQUFnQXhDd0FTRUxJQUFnQUNBR0VHSVFzQUVoQ1NBRUVEQWhDQ0FFS0FKb1FRRk9CRUJCQUNFRkEwQWdCQ0FGTmdKWUlBZ2dCRUhZQUdvUVFTQUZRUUZxSWdVZ0JDZ0NhRWdOQUFzTElBUkIyQUJxRURBaEFpQUVLQUpzUVFGT0JFQURRQ0FFUWNnQWFoQXdJUVVnQkNBSE5nSkVJQVVnQkVIRUFHb1FRU0FFSUFBZ0JpQUpJQVVRK0FJaUNqWUNSQ0FBSUFvZ0FSQ0dBUm9DUUNBRUtBSm9JQUFnQmhDdUJFY0VRQ0FFSUFBZ0FTQUxJQVFvQWtRZ0NCRFRCallDUUNBQ0lBUkJRR3NRUVF3QkN5QUNJQVJCeEFCcUVFY0xJQVVRTmlBSFFRRnFJZ2NnQkNnQ2JFZ05BQXNMSUFBZ0FDQURJQUlRblFNZ0FSQ0dBU0VGSUFJUU5pQUlFRFlNQVFzQ2Z5QUdRY0FBUmdSQUlBQkVBQUFBQUFBQThEOUJBQkREQXlFR0lBQkVBQUFBQUFBQUFBQkJBQkREQXd3QkN5QUFRd0FBZ0Q5QkFCRDVBaUVHSUFCREFBQUFBRUVBRVBrQ0N5RUlBMEJCQUNFRkEwQWdCQ0FIUVFSMGFpQUZRUUowYWlBR0lBZ2dCU0FIUmhzMkFnQWdCVUVCYWlJRlFRUkhEUUFMSUFkQkFXb2lCMEVFUncwQUN3SkFBa0FnQWhBV1FRRkhEUUJCQUNFRklBQWdBa0VBRUJFb0FnQVErQVJGRFFBRFFDQUVJQVZCQkhScUlBVkJBblJxSUFKQkFCQVJLQUlBTmdJQUlBVkJBV29pQlVFRVJ3MEFDd3dCQzBFQUlRWWdBQ0FDUVFBUUVTZ0NBQkNpQTBVRVFDQUNFQlpCQUV3TkFVRUFJUVZCQUNFSEEwQWdBaUFHRUJFb0FnQWhDa0VBSVFnZ0FDQUNJQVlRRVNnQ0FCRElBVUVBU2dSQUEwQWdBQ0FDSUFZUUVTZ0NBQkRJQVVFQ1RnUkFJQUFnQUNBQ0lBWVFFU2dDQUNBTElBZ1Fyd0VpQ2lBQkVJWUJHZ3NnQkNBRlFRUjBhaUFIUVFKMGFpQUtOZ0lBUVFBZ0IwRUJhaUlISUFjZ0NVWWlEQnNoQnlBRklBeHFJUVVnQ0VFQmFpSUlJQUFnQWlBR0VCRW9BZ0FReUFGSURRQUxDeUFHUVFGcUlnWWdBaEFXU0EwQUN3d0JDMEVBSVFnZ0JDQUFJQUpCQUJBUktBSUFJZ1lReUFFMkFsZ2dCRUhzQUdvZ0JFSFlBR29RL2dFb0FnQWhCeUFFSUFBZ0JoQ3VCRFlDV0NBRVFlZ0FhaUFFUWRnQWFoRCtBU0VDSUFkQkFVZ05BQ0FDS0FJQUlRa0RRQ0FFUWRnQWFoQXdJUUlnQkNBSU5nSklJQUlnQkVISUFHb1FRVUVBSVFVZ0NVRUFTZ1JBQTBBZ0JDQUZOZ0pJSUFJZ0JFSElBR29RUVNBRUlBaEJCSFJxSUFWQkFuUnFJZ29nQUNBR0lBc2dBaEQ0QWpZQ0FDQUNFSkVKSUFBZ0NpZ0NBQ0FCRUlZQkdpQUZRUUZxSWdVZ0NVY05BQXNMSUFJUU5pQUlRUUZxSWdnZ0IwY05BQXNMSUFBZ0F4Q3dBU0VJSUFSQjJBQnFFREFoQWlBRUtBSnNRUUZPQkVCQkFDRUdBMEFnQkVISUFHb1FNQ0VIUVFBaEJTQUVLQUpvUVFCS0JFQURRQ0FISUFRZ0JrRUVkR29nQlVFQ2RHb1FSeUFGUVFGcUlnVWdCQ2dDYUVnTkFBc0xJQVFnQUNBSUlBY1FuUU1pQlRZQ1JDQUFJQVVnQVJDR0FSb2dBaUFFUWNRQWFoQkhJQWNRTmlBR1FRRnFJZ1lnQkNnQ2JFZ05BQXNMSUFBZ0FDQURJQUlRblFNZ0FSQ0dBU0VGSUFJUU5nc2dCRUh3QUdva0FDQUZDOWdCQVFoL0l3QkJJR3NpQXlRQUlBQW9BZ0FpQnlBQkVNZ0JJUUlnQnlBQkVLNEVJUVFnQUNnQ0NDZ0NBQ0lGSUFBb0FnUW9BZ0FpQm1zZ0FpQUViQ0lDSUFJZ0Jtb2dCVXNiSWdrRVFFRUFJUVZCQUNFQ1FRQWhCZ05BSUFjZ0FSQ3VCQ0VJSUFOQkVHb1FNQ0VFSUFNZ0JpQUNJQWhPYWlJR05nSU1JQVFnQTBFTWFoQkJJQU1nQWtFQUlBSWdDRWdiSWdJMkFnd2dCQ0FEUVF4cUVFRWdBQ2dDRENBSElBRWdBQ2dDRUNnQ0FDQUVFUGdDRUpBSUlBUVFOaUFDUVFGcUlRSWdCVUVCYWlJRklBbEpEUUFMQ3lBRFFTQnFKQUFMblFFQkJYOGpBRUVRYXlJREpBQWdBQ2dDQUNJR0lBRVF5QUVoQWlBQUtBSUlLQUlBSVFRZ0FDZ0NCQ2dDQUNFRklBTkJBRFlDRENBRUlBVnJJQUlnQWlBRmFpQUVTeHNpQkFSQUEwQWdBeEF3SWdJZ0EwRU1haEJISUFBb0Fnd2dCaUFBS0FJUUtBSUFJQUFvQWhRb0FnQWdBU0FDRU5NR0VKQUlJQUlRTmlBRElBTW9BZ3hCQVdvaUFqWUNEQ0FDSUFSSkRRQUxDeUFEUVJCcUpBQUxjd0VCZnlNQVFTQnJJZ01rQUNBRElBRTJBaEFnQXlBQU5nSVlJQU1nQWpZQ0NFRUFJUUlDUUNBRFFSaHFJQU5CRUdvUUhrVU5BQU5BSUFNb0FnZ2dBeWdDR0NnQ0FCQ09EQVJBUVFFaEFnd0NDeUFEUVJocUVHWWFJQU5CR0dvZ0EwRVFhaEFlRFFBTEN5QURRU0JxSkFBZ0FndVhBZ0VCZnlNQVFTQnJJZ1VrQUFKL0FrQWdCQkFXUVFGSERRQWdBQ0FERU1nQlFRRkhEUUFnQUNBRElBSWdBU0FFS0FJQUtBSUFFSklNREFFTFFTd1FKaUFBRUZVZ0FVSFBBQkJSSWdFZ0FoQTVJQUVnQXhBNVFRQWhBeUFBSUFJUXlBRWlBa0VBU2dSQUEwQWdCVUVRYWlBRFFRSjBhaUFETmdJQUlBTkJBV29pQXlBQ1J3MEFDd3RCQUNFRElBUVFGa0VBU2dSQUEwQWdCVUVRYWlBRUlBTVFFU2dDQUVFQ2RHb2dBaUFEYWpZQ0FDQURRUUZxSWdNZ0JCQVdTQTBBQ3d0QkFDRURJQUpCQUVvRVFBTkFJQUVnQlVFUWFpQURRUUowYWlnQ0FCQk1JQU5CQVdvaUF5QUNSdzBBQ3dzZ0FDZ0NoQUVnQlVFSWFpQUJFRG9pQUJCOElBQVFQaUFCS0FJRUN5RUFJQVZCSUdva0FDQUFDM29CQW44akFFRVFheUlFSkFCQkxCQW1JQUFRVlNBQktBSVFRVGtRVVNJRElBRW9BZ3dRT1VFQUlRRWdBaEFXUVFCS0JFQURRQ0FESUFJZ0FSQVJLQUlBRURrZ0FVRUJhaUlCSUFJUUZrZ05BQXNMSUFBb0FvUUJJQVJCQ0dvZ0F4QTZJZ0FRZkNBQUVENGdBeWdDQkNFQUlBUkJFR29rQUNBQUMzTUJBWDhqQUVFUWF5SUVKQUFnQWtVRVFDQUFJQUVnQXlBRVFlNkNDUkFpSWdJUWpRd2dBaEFaR2lBQUlBRWdBeUFFUWZxQ0NSQWlJZ0lRalF3Z0FoQVpHZ3NnQVNnQ0FDSUNRUUlnQWlnQ0FDZ0N1QUVSQVFBZ0FDQUFJQUFvQWtBZ0FTZ0NBQkNqQXpZQ1FDQUVRUkJxSkFBTFBnRUNmeU1BUVNCcklnRWtBQ0FBQW44Z0FVRUFFTWdDSUFGQnpJY0pOZ0lBSUFFaUFnc2dBQ2dDQUNnQ0NCRUJBQ0FDRUpvQ0dpQUJRU0JxSkFBTGxRRUJBbjhqQUVFd2F5SURKQUFnQXlBQk5nSXNJQUJCSUJESkFTRUNBa0FnQUMwQWtBRUVRQ0FBUWZJcElBSWdBMEVnYWtFQklBTkJMR29ReFFNaUFTQURRUkJxRURBaUFoQ3JCQ0VBSUFJUU5pQUJFRFlNQVF0QkxCQW1JQUFRVlNBQ1FmSXBFRkVpQWlBQkVEa2dBQ2dDaEFFZ0EwRUlhaUFDRURvaUFCQjhJQUFRUGlBQ0tBSUVJUUFMSUFOQk1Hb2tBQ0FBQzFnQkFuOGpBRUVRYXlJRUpBQWdBRUVnRU1rQklRTkJMQkFtSUFBUVZTQURRY1FBRUZFaUF5QUJFRGtnQXlBQ0VFd2dBQ2dDaEFFZ0JFRUlhaUFERURvaUFCQjhJQUFRUGlBREtBSUVJUUFnQkVFUWFpUUFJQUFMMUFFQkJYOGpBRUVRYXlJRkpBQWdBQ0FBSUFJUVloQ3dBU0VFSUFNUUZrRUFTZ1JBQTBBZ0FDQUVFTjRHSVFnZ0F5QUdFQkVvQWdBaEJ5QUFJQVFnQ0FSL0lBQWdCeERQQVFVZ0J3c1FuZ01oQkNBR1FRRnFJZ1lnQXhBV1NBMEFDd3NnQUNBQklBUVEyd1VoQVVFc0VDWWdBQkJWSUFGQndRQVFVU0lCSUFJUU9VRUFJUVFnQXhBV1FRQktCRUFEUUNBQklBTWdCQkFSS0FJQUVEa2dCRUVCYWlJRUlBTVFGa2dOQUFzTElBQW9Bb1FCSUFWQkNHb2dBUkE2SWdBUWZDQUFFRDRnQVNnQ0JDRUFJQVZCRUdva0FDQUFDMFlCQW44akFFRVFheUlDSkFBZ0FTZ0NBQ0VESUFCQlFHdEJBQkFSS0FJQVFTaHFJQUpCQ0dvZ0FSRFJEQ0lCRUgwZ0FSQStJQUFvQWdRZ0F4Q01BU0FDUVJCcUpBQUxUUUFDUUNBQlJRMEFBa0FnQVNBQktBSUFLQUlZRVFBQUlnSkZEUUFnQWlnQ2FBMEFJQUpCQVNBQ0tBSUFLQUs0QVJFQkFBc2dBQkNxRmlBQUtBTGdCVUVCUncwQUlBRVF0UlFMUVFFTE9BRUNmeU1BUVJCcklnRWtBQ0FBS0FLRUFTQUJRUWhxUVN3UUprSDhBUkMzQVJBNklnSVFmQ0FDRUQ0Z0FCRFpCU0FCUVJCcUpBQUxSQUVCZnlNQVFSQnJJZ0lrQUVFc0VDWWdBQkJWSUFGQkFSQlJJUUVnQUNnQ2hBRWdBa0VJYWlBQkVEb2lBQkI4SUFBUVBpQUJLQUlFSVFBZ0FrRVFhaVFBSUFBTEp3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUVFYWlBQ1FReHFFRWNnQWtFUWFpUUFDOElCQVFSL0l3QkJFR3NpQmlRQUlBQWdCVFlDQkNBQVFjRHVFVFlDQUNBQVFRaHFJQUVnQWtFMkVGRWhBaUFBUVRScUVEQWhCeUFBUVVCckVEQWFRUUFoQVNBQVFRQTZBRXdnQWtFQUVFd2dBaUFERURrZ0JTQUNFSXdCSUFVZ0FCQzlGQ0FGSUFNUUx5SUNFTHdDSWdOQkFrNEVRQ0FEUVg5cUlRTURRRUVzRUNZaUNDQUJJQVJxSUFJZ0FVRUJhaUlCRUM5Qk54QlJJUWtnQmlBSU5nSU1JQVVnQ1JDTUFTQUhJQVpCREdvUVJ5QUJJQU5IRFFBTEN5QUdRUkJxSkFBZ0FBdFJBUU4vSXdCQklHc2lBaVFBSUFKQkVHb1FNQ0VESUFJUU1DRUVJQUFnQUVILy8vLy9CeUFBRUp3SUlBRWdBeUFFSUFKQkhHb1FsZ3dpQURZQ2pBRWdCQkNwRENBREVEWWdBa0VnYWlRQUlBQUxUd0VDZnlNQVFSQnJJZ1VrQUVFc0VDWkJnU3dRdHdFaUJDQUJFRGtnQkNBQ0VFd2dCRUdETEJCTUlBUWdBeEQrQWlBQVFZUUNhaUFGUVFocUlBUVFPaUlBRUgwZ0FCQStJQVZCRUdva0FBdEhBUUovSXdCQkVHc2lCU1FBUVN3UUprRUdFTGNCSWdRZ0FSQTVJQVFnQWhCTUlBUWdBeEQrQWlBQVFmZ0JhaUFGUVFocUlBUVFPaUlBRUgwZ0FCQStJQVZCRUdva0FBdE1BUUovSXdCQkVHc2lCU1FBUVN3UUprRVBFTGNCSWdRZ0FSQk1JQVFnQWlnQ0RCQTVJQVFnQXhEK0FpQUFRZUFCYWlBRlFRaHFJQVFRT2lJQUVIMGdBQkErSUFWQkVHb2tBQ0FFQzZrQkFRTi9Jd0JCRUdzaUF5UUFJQU1nQVRZQ0RBSi9RUUFpQVNBQVFjZ0NhaUlGSUFOQkRHb1EyQVlRRmtFQlNBMEFHZ0pBQTBCQkFDRUFJQVVnQTBFTWFoRFlCaUFCRUJFb0FnQWlCQkM4QWtFQVRBMEJBMEFnQkNBQUVDOGdBaUFBRUJFb0FnQkdCRUFnQUVFQmFpSUFJQVFRdkFKSURRRU1Bd3NMSUFGQkFXb2lBU0FGSUFOQkRHb1EyQVlRRmtnTkFBdEJBQXdCQ3lBRUtBSUVDeUVBSUFOQkVHb2tBQ0FBQzhBQkFRUi9Jd0JCRUdzaUJDUUFJQVFnQVRZQ0RBSi9Ba0FnQUVHMEFtb2lCaUFFUVF4cUVEOFFGa0VCU0EwQUEwQUNRQ0FFSUFFMkFnZ0NRQ0FDSUFZZ0JFRUlhaEEvSUFjUUVTZ0NBQ0lGS0FJSVJ3MEFRUUFoQUNBRkVMd0NRUUJNRFFFRFFDQUZJQUFRTHlBRElBQVFFU2dDQUVjTkFTQUFRUUZxSWdBZ0JSQzhBa2dOQUFzTUFRc2dCQ0FCTmdJTUlBZEJBV29pQnlBR0lBUkJER29RUHhBV1NBMEJEQUlMQ3lBRktBSUVEQUVMUVFBTElRQWdCRUVRYWlRQUlBQUxVUUFDZnlBQUlBRVE0Z1VpQVVIQUFFY0VRQ0FCUVNCSEJFQkJBQ0FCUVJCSERRSWFJQUJEQUFDQVAwRUFFSzBFRHdzZ0FFTUFBSUEvUVFBUStRSVBDeUFBUkFBQUFBQUFBUEEvUVFBUXd3TUxDN2NCQVFOL0lBTkJBWFpCZ0FSeUlBTWdBa0Z5U0JzaEJTQURSU0FDUVhGS2NTRUdBa0FnQWtGd1NnUkFJQUloQXd3QkN3TkFJQVZCL3Y4RGNVRUJkaUVGSUFKQkVIUWhCeUFDUVFGcUlnTWhBaUFIUVJCMVFYQklEUUFMQ3lBQUFuOGpBRUVRYXlJQUpBQWdBRUVRYWlRQUlBVWdCU0FGUVFFZ0JTQUVHeUFEUWYvL0EzRkI4ZjhEUnhzZ0JSc2dCaHRCL3dkeElBTkJDblJCZ1BnQWFrR0ErQUZ4UVlDQWZrRUFJQUViY25KQi8vOERjUXM3QVFBTHZ3RUJBbjhDUUVHa3dCUXRBQUJCQVhFTkFFR2t3QlFRcmdGRkRRQkJvTUFVUVExQkFSQ1ZDRFlDQUVHa3dCUVFyUUVMQWtCQnJNQVVMUUFBUVFGeERRQkJyTUFVRUs0QlJRMEFRYWpBRkVFTVFRRVFsUWcyQWdCQnJNQVVFSzBCQ3lBQlFRQTZBQUFDUUNBQUVKQVVJZ0JCL3o5eElnSkZRUUZ5RFFCQnFNQVVLQUlBSWdNZ0FIRkZEUUFnQWlBRFFYOXpjVVVFUUVHZ3dCUW9BZ0FnQUhGRkRRRUxJQUJCb01BVUtBSUFJQUVRanhRaEFBc2dBRUVOZGtILy93TnhDMDRBSUFBUXhRVWdBRUlBTndJMElBQkMvLy8vL3g4M0Fpd2dBRUlBTndJa0lBQkJBRHNBSVNBQUlBUTZBQ0FnQUNBRE5nSWNJQUFnQWpZQ0dDQUFJQUUyQWhRZ0FFSGtqUWsyQWdBZ0FBc3RBUUYvSXdCQkVHc2lBU1FBSUFGQkNHb2dBQzhCQUVHQWdBSnpFS3dFTHdFQUlRQWdBVUVRYWlRQUlBQUw3Z0lCQm44akFFRXdheUlDSkFBZ0FTQUNRU2hxSUFKQklHcEJBQkNzQkM4QkFCQ3NCQzhCQURzQkFDQUFFSmdNSVFRQ1FDQUFLQUlBUWYvLy8vOEhjVVVFUUNBRVJRMEJJQUlnQVM4QkFEc0JHQ0FCSUFKQkdHb1F5UlFRbHdnTUFRc2dBQkNXQ0NFRklBSkJBRG9BRnlBQUlBSkJGMm9ReHhRaEJ3SkFJQUFRbHd3aUEwR0JmMGNOQUVHQWdJQUNJUVpCZ244aEF3TkFJQU5CZjJvaEF5QUZJQVp4RFFFZ0JrRUJkaUlHRFFBTEN3SkFJQVZCQUNBQUtBSUFRWUNBZ1B3SGNVR0FnSUQ4QjBZYlJRUkFJQU1nQWkwQUYycEJEMHdFUUNBRkRRSWdBQ2dDQUVHQWdJRDhCM0ZCZ0lDQS9BZEhEUUlMSUFFZ0FrRVFha0dBK0FOQmdQZ0JJQVFiRUt3RUx3RUFFSmNJREFJTElBRWdBa0VJYWtGeklBVVFsUWdpQUVFQklBQkIvLzhEY1J0QmdQZ0RRWUQ0QVNBRUczSkIvLzhEY1JDc0JDOEJBQkNYQ0F3QkN5QUJJQVFnQTBFUWRFRVFkU0FIQW44Z0FCQ1lEQnBCQUFzUXhoUUxJQUpCTUdva0FBc2pBQ0FBUVg5cUlnQkJNMDBFUUVLQmdJQ0FnT0R2QnlBQXJZaW5RUUZ4RHd0QkFBdENBUUovSUFCQjZBQnFJUUlEZnlBQ0lBRVFMeWdDRENJRFFSeEhCSDhnQTBFZ1JnUi9JQUFnQVJESURFSGxLVVlGUVFBTEJTQUFJQUVRc0FFaEFRd0JDd3NMa0FJQkJIOENRQ0FBSUFBb0FnQW9BbEFSQUFBaUFrVU5BQ0FBSVFRRFFFRUFJUUFnQWlnQ2FDSURRYzkrYWlJRlFRUlBRUUFnQTBId0JVY2JEUUVDUUNBQkRRQWdBMEcwQVVZZ0EwSHdCVVp5RFFJZ0JVRUJTdzBBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBeUFES0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDYUJFQUFFVUVRQ0FDSUFJb0FnQW9Bc0FCRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9BbUFSQUFCRkRRRUxJQUlnQWlnQ0FDZ0N3QUVSQUFBaUFpQUNLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NjQkVBQUVVTkFnc2dCQ0FFS0FJQUtBSlFFUUFBSWdBZ0FDZ0NBQ2dDd0FFUkFBQWlCQ0FFS0FJQUtBSlFFUUFBSWdJTkFBc2dCQ0VBQ3lBQUM3MEJBUU4vSXdCQkVHc2lBU1FBSUFGQjNTazJBZ3dDUUNBQVFkd0NhaUlDSUFGQkRHb1FQeEFXUlFSQVFTd1FKaUlESUFBUVZVRUFRZDBwRUZFYUlBRWdBellDRENBQlFkMHBOZ0lJSUFJZ0FVRUlhaEEvSUFGQkRHb1FSeUFBUVpBQ2FpQUJRUWhxSUFFb0Fnd1FPaUlDRUgwZ0FoQStJQUJCNkFCcUlBRW9BZ3dRakFFZ0FTZ0NEQ0VBREFFTElBRkIzU2syQWdnZ0FTQUNJQUZCQ0dvUVB4Q1FBU2dDQUNJQU5nSU1DeUFBS0FJRUlRQWdBVUVRYWlRQUlBQUw1d0VCQkg4akFFRVFheUlDSkFBZ0FrRWJOZ0lJQWtBZ0FFSGNBbW9pQkNBQ1FRaHFFRDhRRmtFQlRnUkFBMEFnQWtFYk5nSUlJQUlnQkNBQ1FRaHFFRDhnQXhBUktBSUFJZ1UyQWd3Z0JVRUFFQzhnQVVZTkFpQUNRUnMyQWdnZ0EwRUJhaUlESUFRZ0FrRUlhaEEvRUJaSURRQUxDMEVzRUNZaUF5QUFFRlZCQUVFYkVGRWhCU0FDSUFNMkFnd2dCU0FCRURrZ0FrRWJOZ0lJSUFRZ0FrRUlhaEEvSUFKQkRHb1FSeUFBUVpBQ2FpQUNRUWhxSUFJb0Fnd1FPaUlCRUgwZ0FSQStJQUJCNkFCcUlBSW9BZ3dRakFFTElBSW9BZ3dvQWdRaEFDQUNRUkJxSkFBZ0FBdVlCQUVFZnlNQVFSQnJJZ2drQUNBSVFSazJBZ2dDUUNBQVFkd0NhaUlLSUFoQkNHb1FQeEFXUVFCS0JFQURRQ0FJUVJrMkFnZ2dDQ0FLSUFoQkNHb1FQeUFKRUJFb0FnQWlDellDREFKQUlBdEJBQkF2SUFGSERRQWdDQ2dDREVFQkVDOGdBa2NOQUNBSUtBSU1RUUlRTHlBRFJ3MEFJQWdvQWd4QkF4QXZJQVJIRFFBZ0NDZ0NERUVFRUM4Z0JVY05BQ0FJS0FJTVFRVVFMeUFHUncwQUlBZ29BZ3hCQmhBdklBZEdEUU1MSUFoQkdUWUNDQ0FKUVFGcUlna2dDaUFJUVFocUVEOFFGa2dOQUFzTFFTd1FKaUlMSUFBUVZVRUFRUmtRVVNFSklBZ2dDellDRENBSklBRVFPU0FKSUFJUVRDQUpJQU1RVENBSklBUVFUQ0FKSUFVUVRDQUpJQVlRVENBSklBY1FUQ0FJUVJrMkFnZ2dDaUFJUVFocUVEOGdDRUVNYWhCSElBQkJrQUpxSUFoQkNHb2dDQ2dDREJBNklnRVFmU0FCRUQ0Z0FFSG9BR29nQ0NnQ0RCQ01BUUpBSUFKQkJrc05BQUpBQWtBQ1FBSkFBa0FnQWtFQmF3NEdCUVVDQXdBRUFRc2dCa0VCUmdSQUlBQkJMaEFoREFZTElBQkJMeEFoREFRTElBWkJBVVlFUUNBQVFTc1FJUXdGQ3lBQVFTd1FJUXdEQ3lBRVJRMENJQVpCQVVZRVFDQUFRUzBRSVF3RUN5QUFRU0lRSVF3Q0N5QUdRUUZHQkVBZ0FFRWxFQ0VNQXdzZ0FFRWtFQ0VNQVFzZ0FFRW9FQ0VMSUFWRklBWkJBa2R5RFFBZ0FrRUdSd1JBSUFCQkd4QWhDeUFFUlEwQUlBQkJNQkFoQ3lBSUtBSU1LQUlFSVFBZ0NFRVFhaVFBSUFBTDdRSUJCSDhqQUVFUWF5SURKQUFnQTBFaE5nSUlBa0FnQUVIY0Ftb2lCaUFEUVFocUVEOFFGa0VCVGdSQUEwQWdBMEVoTmdJSUlBTWdCaUFEUVFocUVEOGdCUkFSS0FJQUlnUTJBZ3dDUUNBRVFRQVFMeUFCUncwQVFRQWhCQ0FDRUJZZ0F5Z0NEQkM4QWtGL2FrY05BQU5BSUFRZ0FoQVdUZzBFSUFJZ0JCQVJLQUlBSUFNb0Fnd2dCRUVCYWlJRUVDOUdEUUFMQ3lBRFFTRTJBZ2dnQlVFQmFpSUZJQVlnQTBFSWFoQS9FQlpJRFFBTEMwRXNFQ1lpQlNBQUVGVkJBRUVoRUZFaEJDQURJQVUyQWd3Z0JDQUJFRGtDUUNBQ0VCWkJBVWdOQUNBRUlBSkJBQkFSS0FJQUVEbEJBU0VFSUFJUUZrRUJUQTBBQTBBZ0F5Z0NEQ0FDSUFRUUVTZ0NBQkE1SUFSQkFXb2lCQ0FDRUJaSURRQUxDeUFEUVNFMkFnZ2dCaUFEUVFocUVEOGdBMEVNYWhCSElBQkJrQUpxSUFOQkNHb2dBeWdDREJBNklnRVFmU0FCRUQ0Z0FFSG9BR29nQXlnQ0RCQ01BUXNnQXlnQ0RDZ0NCQ0VBSUFOQkVHb2tBQ0FBQzFNQkFuOGpBRUVRYXlJREpBQkJMQkFtSUFBUVZVRUFRUjBRVVNJQ0lBRVFPU0FBUVpBQ2FpQURRUWhxSUFJUU9pSUJFSDBnQVJBK0lBQkI2QUJxSUFJUWpBRWdBaWdDQkNFQUlBTkJFR29rQUNBQUM2c0NBUVIvSXdCQkVHc2lCU1FBSUFWQjdpazJBZ2dDUUNBQVFkd0NhaUlISUFWQkNHb1FQeEFXUVFGT0JFQURRQ0FGUWU0cE5nSUlJQVVnQnlBRlFRaHFFRDhnQmhBUktBSUFJZ2cyQWd3Q1FDQUlRUUFRTHlBQlJ3MEFJQVVvQWd4QkFSQXZJQUpIRFFBZ0JTZ0NERUVDRUM4Z0EwY05BQ0FGS0FJTVFRTVFMeUFFUmcwREN5QUZRZTRwTmdJSUlBWkJBV29pQmlBSElBVkJDR29RUHhBV1NBMEFDd3RCTEJBbUlnZ2dBQkJWUVFCQjdpa1FVU0VHSUFVZ0NEWUNEQ0FHSUFFUU9TQUdJQUlRT1NBR0lBTVFPU0FHSUFRUU9TQUZRZTRwTmdJSUlBY2dCVUVJYWhBL0lBVkJER29RUnlBQVFaQUNhaUFGUVFocUlBVW9BZ3dRT2lJQkVIMGdBUkErSUFCQjZBQnFJQVVvQWd3UWpBRUxJQVVvQWd3b0FnUWhBQ0FGUVJCcUpBQWdBQXVMQWdFRGZ5TUFRUkJySWdRa0FDQUFJQUVnQXhDeEFTRUdJQVJCR0RZQ0NBSkFJQUJCM0FKcUlnTWdCRUVJYWhBL0VCWkJBVTRFUUVFQUlRRURRQ0FFUVJnMkFnZ2dCQ0FESUFSQkNHb1FQeUFCRUJFb0FnQWlCVFlDRENBRlFRQVFMeUFHUmdSQUlBUW9BZ3hCQVJBdklBSkdEUU1MSUFSQkdEWUNDQ0FCUVFGcUlnRWdBeUFFUVFocUVEOFFGa2dOQUFzTFFTd1FKaUlGSUFBUVZVRUFRUmdRVVNFQklBUWdCVFlDRENBQklBWVFPU0FCSUFJUVRDQUVRUmcyQWdnZ0F5QUVRUWhxRUQ4Z0JFRU1haEJISUFCQmtBSnFJQVJCQ0dvZ0JDZ0NEQkE2SWdFUWZTQUJFRDRnQUVIb0FHb2dCQ2dDREJDTUFRc2dCQ2dDRENnQ0JDRUFJQVJCRUdva0FDQUFDekVCQVg4akFFRVFheUlESkFBZ0F5QURJQUVvQWdBZ0FrRUFFUFVFTmdJTUlBQWdBMEVNYWhDeUJDQURRUkJxSkFBTCtRRUJCSDhqQUVFUWF5SURKQUFnQTBFZ05nSUlBa0FnQUVIY0Ftb2lCU0FEUVFocUVEOFFGa0VCVGdSQUEwQWdBMEVnTmdJSUlBTWdCU0FEUVFocUVEOGdCQkFSS0FJQUlnWTJBZ3dnQmtFQUVDOUI1U2xHQkVBZ0F5Z0NERUVCRUM4Z0FrWU5Bd3NnQTBFZ05nSUlJQVJCQVdvaUJDQUZJQU5CQ0dvUVB4QVdTQTBBQ3d0QkxCQW1JZ1FnQVVFQVFTQVFVU0VCSUFNZ0JEWUNEQ0FCUWVVcEVFd2dBU0FDRURrZ0EwRWdOZ0lJSUFVZ0EwRUlhaEEvSUFOQkRHb1FSeUFBUVpBQ2FpQURRUWhxSUFNb0Fnd1FPaUlCRUgwZ0FSQStJQUJCNkFCcUlBTW9BZ3dRakFFTElBTW9BZ3dvQWdRYUlBTkJFR29rQUF0VUFRTi9Jd0JCRUdzaUFpUUFRU3dRSmlBQUVGVkJBRUVuRUZFaUFVSGxLUkJNSUFCQmtBSnFJQUpCQ0dvZ0FSQTZJZ01RZlNBREVENGdBRUhvQUdvZ0FSQ01BU0FCS0FJRUlRQWdBa0VRYWlRQUlBQUx1UUVCQTM4akFFRVFheUlCSkFBZ0FVRWFOZ0lNQWtBZ0FFSGNBbW9pQWlBQlFReHFFRDhRRmtVRVFFRXNFQ1lpQXlBQUVGVkJBRUVhRUZFYUlBRWdBellDRENBQlFSbzJBZ2dnQWlBQlFRaHFFRDhnQVVFTWFoQkhJQUJCa0FKcUlBRkJDR29nQVNnQ0RCQTZJZ0lRZlNBQ0VENGdBRUhvQUdvZ0FTZ0NEQkNNQVNBQktBSU1JUUFNQVFzZ0FVRWFOZ0lJSUFFZ0FpQUJRUWhxRUQ4UWtBRW9BZ0FpQURZQ0RBc2dBQ2dDQkNFQUlBRkJFR29rQUNBQUN5OEFBa0FnQVVVTkFDQUFLQUlnSUFGR0RRQWdBQ0FCTmdJZ0lBQXRBQ2hGRFFBZ0FDQUFLQUlRSUFFUW5nd0xDd2tBSUFBUW5nZ1FLZ3M3QVFKL0lBQVFuQlFnQUNnQ0JDSUJJQUFvQWdnaUFrY0VRQU5BSUFBUVhob2dBU2dDQUJBcUlBRkJCR29pQVNBQ1J3MEFDd3NnQUJEUkNBc2JBQ0FBUVFScUVEQWFJQUJCRkdvUU1Cb2dBRUV3YWhDQkJSb0x4UUlBSUFCQkFEWUNFQ0FBUWdBM0FnZ2dBQ0FCTmdJRUlBQkJ3TzBSTmdJQUlBQkJGR29RVGhvZ0FFRUFPZ0FvSUFCQ0FEY0NJQ0FBUVN4cUVKMEVJQUJCT0dvUU1Cb2dBRUhFQUdvUU1Cb2dBRUtBZ0lDQUVEY0NVQ0FBUWRnQWFoQ2RCQ0FBSUFJMkFtUWdBRUhvQUdvaUFVSG83UkUyQWdBZ0FVRUVhaEF3R2lBQlFSQnFFREFhSUFCQ0FEY0FpUUVnQUVJQU53S0VBU0FBUVpRQmFoRGNGQ0FBUWNnQmFoQXdHaUFBUWRRQmFoQXdHaUFBUWVBQmFoQXdHaUFBUWV3QmFoQXdHaUFBUWZnQmFoQXdHaUFBUVlRQ2FoQXdHaUFBUVpBQ2FoQXdHaUFBUVp3Q2FoQXdHaUFBUWFnQ2FoQXdHaUFBUWJRQ2FoQ1dBUm9nQUVISUFtb1FsZ0VhSUFCQjNBSnFFSllCR2lBQVFmQUNhaEQwQmlBQVFZZ0RhaEQwQmlBQVFhQURhaENXQVJvZ0FFRzBBMm9RbVFjYUlBQWdBellDd0FNZ0FCQnpJQUFMNVFNQ0JYOEJmU01BUVNCcklnUWtBQ0FCRUNNZ0FpZ0NBQkRwQmlFSElBRVFQQ0VGSUFSQkFEb0FId0pBQWtBZ0JVVU5BQ0FCSUFjZ0JSQTBJZ2dRRVNnQ0FDSUdSUTBBQTBBZ0JpZ0NBQ0lHUlEwQklBY2dCaWdDQkVjRVFDQUdLQUlFSUFVUU5DQUlSdzBDQ3lBQkVFTWdCa0VJYWlBQ0VNUUNSUTBBQ3d3QkN5QUVRUkJxSUFFZ0J5QURFTUlGSUFFUUl5Z0NBQ0VDSUFFUVF5RURBa0FnQlFSQUlBTXFBZ0FnQmJPVUlBSkJBV3F6WFVFQmN3MEJDeUFFSUFVUXVnRkJBWE1nQlVFQmRISTJBZ3dnQkFKL0lBRVFJeWdDQUVFQmFyTWdBUkJES2dJQWxZMGlDVU1BQUlCUFhTQUpRd0FBQUFCZ2NRUkFJQW1wREFFTFFRQUxOZ0lJSUFFZ0JFRU1haUFFUVFocUVGSW9BZ0FRd0EwZ0J5QUJFRHdpQlJBMElRZ0xBa0FnQVNBSUVCRW9BZ0FpQWtVRVFDQUVLQUlRSUFGQkNHb2lBaWdDQURZQ0FDQUNJQVFvQWhBMkFnQWdBU0FJRUJFZ0FqWUNBQ0FFS0FJUUtBSUFSUTBCSUFRb0FoQWhBaUFCSUFRb0FoQW9BZ0FvQWdRZ0JSQTBFQkVnQWpZQ0FBd0JDeUFFS0FJUUlBSW9BZ0EyQWdBZ0FpQUVLQUlRTmdJQUN5QUVRUkJxRUY4aEJpQUJFQ01pQVNBQktBSUFRUUZxTmdJQUlBUkJBVG9BSHlBRVFSQnFFTE1DQ3lBQUlBUkJFR29nQmhBeElBUkJIMm9Rb2dFZ0JFRWdhaVFBQ3pVQkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFFUTVndzJBZ2dnQWhETEFUWUNBQ0FDUVFocUlBSVFIaUVBSUFKQkVHb2tBQ0FBQzFVQkFuOGpBRUVRYXlJQkpBQWdBRUVFYWlJQUVCWkJBazhFUUNBQklBQVFNallDQUNBQklBRkJBaENHQnpZQ0NDQUJLQUlJS0FJQUlnQkJBQ0FBS0FJTVFYNXhRZllCUmhzaEFnc2dBVUVRYWlRQUlBSUxKd0FnQUNBQkVLc0hHaUFBUVJCcUVKWUJHaUFBUVNScUVKWUJHaUFBUVRocUVKWUJHaUFBQzF3QkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJQUlBTWdBRFlDQ0FKQUlBTkJDR29nQXhBZVJRMEFBMEFnQXlnQ0NDQUNFSmdDRFFFZ0EwRUlhaENjQlNBRFFRaHFJQU1RSGcwQUN3c2dBeWdDQ0NFQUlBTkJFR29rQUNBQUN6c0JBWDhnQUNBQUtBSUVRUUZxSWdFMkFnUWdBU0FBS0FJQUlnRW9BZ0JyUVlBZ1JnUkFJQUFnQVVFRWFqWUNBQ0FBSUFFb0FnUTJBZ1FMQ3pnQUlBQWdBU2dDQkNBQktBSVFRUXAyUWZ6Ly93RnhhaUlBSUFFUWp3VUVmMEVBQlNBQUtBSUFJQUVvQWhCQi94OXhhZ3NRbVFFYUM2VUJBUUovSXdCQkVHc2lBU1FBSUFBUVhob2dBVUVJYWlBQUVPUVVJQUVnQUJDaERDQUJRUWhxSUFFUWtBVUVRQU5BSUFFb0Fnd2FJQUZCQ0dvUTR4UWdBVUVJYWlBQkVKQUZEUUFMQ3lBQUVGNUJBRFlDQUNBQUVOQUJRUUpMQkVBRFFDQUFLQUlFS0FJQUVDb2dBQkRNQXlBQUVOQUJRUUpMRFFBTEN5QUFFTkFCUVg5cUlnSkJBVTBFUUNBQVFZQVFRWUFnSUFKQkFXc2JOZ0lRQ3lBQlFSQnFKQUFMT3dFQ2Z5QUFFT1VVSUFBb0FnUWlBU0FBS0FJSUlnSkhCRUFEUUNBQUVGNGFJQUVvQWdBUUtpQUJRUVJxSWdFZ0FrY05BQXNMSUFBUTBRZ0xNd0VCZnlBQUVGNGhBU0FBS0FJRUlBQW9BaEFnQVNnQ0FHcEJmMm9pQUVFS2RrSDgvLzhCY1dvb0FnQWdBRUgvSDNGcUMvRUNBUVIvSXdCQk1Hc2lBU1FBSUFBUVhpRURBa0FnQUNnQ0VFR0FJRThFUUNBQUlBQW9BaEJCZ0dCcU5nSVFJQUVnQUNnQ0JDZ0NBRFlDR0NBQUVNd0RJQUFnQVVFWWFoRE5Bd3dCQ3dKQUlBQVEwQUVnQUJDSUEwa0VRQ0FBRU9FSVJRMEJJQUZCZ0NBUUpqWUNHQ0FBSUFGQkdHb1F6UU1NQWdzZ0FTQUFFSWdEUVFGME5nSUlJQUZCQVRZQ0FDQUJRUmhxSUFGQkNHb2dBUkJTS0FJQUlBQVEwQUVnQUJBakVQSUNJUUlnQVNBQlFRaHFRWUFnRUNZZ0FTQURRWUFnRUprQkVKRUJJZ1FvQWdBMkFnQWdBaUFCRU9BSUlBUVFYeG9nQUNnQ0NDSURJQUFvQWdSSEJFQURRQ0FDSUFOQmZHb2lBeERmQ0NBRElBQW9BZ1JIRFFBTEN5QUFJQUlRTGlBQVFRUnFJQUpCQkdvUUxpQUFRUWhxSUFKQkNHb1FMaUFBRUNNZ0FoQWpFQzRnQkJEWEJpQUNFSkVEREFFTElBRkJnQ0FRSmpZQ0dDQUFJQUZCR0dvUTNRZ2dBU0FBS0FJRUtBSUFOZ0lZSUFBUXpBTWdBQ0FCUVJocUVNMERDeUFCUVRCcUpBQUxUd0VCZnlNQVFSQnJJZ0lrQUNBQUVGNGFJQUFRb2d4RkJFQWdBQkRvRkFzZ0FrRUlhaUFBRUtFTUlBSW9BZ3dnQVMwQUFEb0FBQ0FBRUY0aUFDQUFLQUlBUVFGcU5nSUFJQUpCRUdva0FBdGdBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNBQ0FFSUFFMkFnZ2dCRUVJYWlBRUVCNEVRQU5BSUFBZ0F5Z0NBQ0FFS0FJSUVQa0JJQVJCQ0dvUVpob2dBeUFES0FJQVFRUnFOZ0lBSUFSQkNHb2dCQkFlRFFBTEN5QUVRUkJxSkFBTFR3RUJmeU1BUWVBQWF5SUFKQUFnQUVIWUFHcEJBUkQxQVNJRFFRQVFEeUFCRUhFZ0F5QUFRUWRCQWtFQlFRQkJBRUVBRUVVaUFTQUNRUUVRMEFJaEFpQUJFRFVhSUFCQjRBQnFKQUFnQWdzaUFDTUFRUkJySWdNa0FDQUFFQnNnQVNBQ0lBQkJCR29RNmhRZ0EwRVFhaVFBQzJBQkFYOGpBRUVRYXlJRUpBQWdCQ0FDTmdJQUlBUWdBVFlDQ0NBRVFRaHFJQVFRSGdSQUEwQWdBQ0FES0FJQUlBUW9BZ2dRcFFVZ0JFRUlhaER0QXlBRElBTW9BZ0JCQ0dvMkFnQWdCRUVJYWlBRUVCNE5BQXNMSUFSQkVHb2tBQXN4QVFGL0lBRWdBQ2dDQkNJQ1J3UkFBMEFnQUJBYkdpQUNRVXhxSWdJUXVBRWdBU0FDUncwQUN3c2dBQ0FCTmdJRUN6WUJBWDhnQVNBQUtBSUlSd1JBQTBBZ0FDZ0NFQm9nQUNBQUtBSUlRVXhxSWdJMkFnZ2dBaEM0QVNBQUtBSUlJQUZIRFFBTEN3c3NBQ0FBS0FJQUdpQUFLQUlBSUFBUTlnUkJOR3hxR2lBQUtBSUFJQUFROWdSQk5HeHFHaUFBS0FJQUdnczlBUUYvSUFFZ0FrY0VRQ0FES0FJQUlRUURRQ0FBSUFSQlRHb2dBa0ZNYWlJQ0VLTUlJQU1nQXlnQ0FFRk1haUlFTmdJQUlBRWdBa2NOQUFzTEMwSUJBWDhqQUVFUWF5SUJKQUFnQUJBYkdpQUJRY1Nkc1NjMkFnd2dBVUgvLy8vL0J6WUNDQ0FCUVF4cUlBRkJDR29RcEFFb0FnQWhBQ0FCUVJCcUpBQWdBQXRQQVFGL0l3QkI0QUJySWdBa0FDQUFRZGdBYWtFQkVQVUJJZ05CQUJBUElBRVFjaUFESUFCQkJrRUNRUUZCQUVFQVFRQVFSU0lCSUFKQkFSRFFBaUVDSUFFUU5Sb2dBRUhnQUdva0FDQUNDMDRBSUFBZ0FTZ0NBRFlDQUNBQVFRUnFJQUZCQkdvUWxBY2dBQ0FCS0FJUU5nSVFJQUJCRkdvZ0FVRVVhaENVQnlBQUlBRXRBREE2QURBZ0FDQUJLUUlvTndJb0lBQWdBU2tDSURjQ0lBdFJBUUYvSUFBUXBBd2dBQkFiSUFBb0FnQWdBQ2dDQkNBQlFRUnFJZ0lROFJRZ0FDQUNFQzRnQUVFRWFpQUJRUWhxRUM0Z0FCQWJJQUVRSXhBdUlBRWdBU2dDQkRZQ0FDQUFJQUFRM1FZUThCUUxmUUVDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWFRY1Nkc1NjZ0FTSURTUVJBRUlJQkFBc2dBMEUwYkJBbUlRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFMGJHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUUwYkdvMkFnQWdCRUVRYWlRQUlBQUxXUUVDZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQUJEeUZDSURJQUZQQkVBZ0FCRDJCQ0lBSUFOQkFYWkpCRUFnQWlBQVFRRjBOZ0lJSUFKQkNHb2dBa0VNYWhCU0tBSUFJUU1MSUFKQkVHb2tBQ0FERHdzUWJnQUxMQUVCZnlBQUtBSUFCRUFnQUNBQUtBSUFFTzRVSUFBUUd4b2dBQ2dDQUNFQklBQVE5Z1FhSUFFUUtnc0xpQUVCQW44akFFRWdheUlESkFBZ0FCQWJJZ0lnQTBFSWFpQUFJQUFRM1FaQkFXb1E5eFFnQUJEZEJpQUNFUFlVSWdJb0FnZ2dBUkNqQ0NBQ0lBSW9BZ2hCTkdvMkFnZ2dBQ0FDRVBVVUlBSWdBaWdDQkJEdkZDQUNLQUlBQkVBZ0FpZ0NFQm9nQWlnQ0FDRUFJQUlRSXlnQ0FDQUNLQUlBYTBFMGJSb2dBQkFxQ3lBRFFTQnFKQUFMTlFFQmZ5QUJJQUFvQWdoSEJFQURRQ0FBS0FJUUdpQUFJQUFvQWdoQmRHb2lBallDQ0NBQ0VEWWdBQ2dDQ0NBQlJ3MEFDd3NMT1FBZ0FTQUNSd1JBSUFNb0FnQWhBQU5BSUFCQmRHb2dBa0YwYWlJQ0VKUUhJQU1nQXlnQ0FFRjBhaUlBTmdJQUlBRWdBa2NOQUFzTEN5d0FJQUFvQWdBYUlBQW9BZ0FnQUJDckEwRU1iR29hSUFBb0FnQWFJQUFvQWdBZ0FCQ25BVUVNYkdvYUMxRUJBWDhnQUJDTEJDQUFFQnNnQUNnQ0FDQUFLQUlFSUFGQkJHb2lBaEQ3RkNBQUlBSVFMaUFBUVFScUlBRkJDR29RTGlBQUVCc2dBUkFqRUM0Z0FTQUJLQUlFTmdJQUlBQWdBQkNuQVJENUJRc3hBUUYvSUFBb0FoQWFJQUFvQWdnaEFnTkFJQUlRcFF3Z0FDQUFLQUlJUVF4cUlnSTJBZ2dnQVVGL2FpSUJEUUFMQ3pvQkFYOGpBRUVRYXlJQ0pBQWdBQkFiR2dOQUlBQW9BZ1FRcFF3Z0FDQUFLQUlFUVF4cU5nSUVJQUZCZjJvaUFRMEFDeUFDUVJCcUpBQUxqd0VCQW44akFFRWdheUlESkFBQ1FDQUFFQnNvQWdBZ0FDZ0NCR3RCREcwZ0FVOEVRQ0FBSUFFUS94UU1BUXNnQUJBYklRSWdBMEVJYWlBQUlBQVFwd0VnQVdvUWpnY2dBQkNuQVNBQ0VJMEhJZ0lnQVJEK0ZDQUFJQUlRL1JRZ0FpQUNLQUlFRVBvVUlBSW9BZ0FFUUNBQ0tBSVFHaUFDS0FJQUlRQWdBaENMQ1JvZ0FCQXFDd3NnQTBFZ2FpUUFDeWtCQVg4Z0FCQzBCU0FCSUFJUXpBMGlBd1JBSUFBZ0F4RDhCQ0FBSUFFZ0FpQURFT3dVQ3lBQUMxVUJBWDhqQUVFUWF5SUNKQUFnQWtFVU5nSU1BbjlCQUNBQVFkd0NhaUlBSUFKQkRHb1FQeEFXUlEwQUdpQUNRUlEyQWdnZ0FTQUFJQUpCQ0dvUVB4Q1FBU2dDQUNnQ0JFWUxJUUFnQWtFUWFpUUFJQUFMS1FFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFBZ0FSQ2dCQ0VESUFKQkVHb2tBQ0FCSUFBZ0F4c0xhUUVDZnlBQUVOOERJQUVvQWdRaEF5QUFFQnNnQUNnQ0FDQUNJQUZCQkdvaUJCQ0ZCaUFBRUJzZ0FpQUFLQUlFSUFGQkNHb2lBaERERENBQUlBUVFMaUFBUVFScUlBSVFMaUFBRUJzZ0FSQWpFQzRnQVNBQktBSUVOZ0lBSUFBZ0FCQ2FBUkRaQkNBREMyY0JBWDhqQUVFUWF5SURKQUFnQXlBQ05nSUFJQU1nQVRZQ0NDQUFLQUlRSVFFZ0EwRUlhaUFERUI0RVFBTkFJQUVnQUNnQ0NDQURLQUlJRUtVRklBQWdBQ2dDQ0VFSWFqWUNDQ0FEUVFocUVPMERJQU5CQ0dvZ0F4QWVEUUFMQ3lBRFFSQnFKQUFMVVFFQ2Z5QUJJQUFvQWdRaUJTQURhMm9pQkNBQ1NRUkFJQVFoQXdOQUlBQVFHeUFBS0FJRUlBTVFwUVVnQUNBQUtBSUVRUWhxTmdJRUlBTkJDR29pQXlBQ1NRMEFDd3NnQVNBRUlBVVEvZ1VhQ3lJQUl3QkJFR3NpQXlRQUlBQVFHeUFCSUFJZ0FFRUVhaER0RkNBRFFSQnFKQUFMU3dFQmZ5TUFRUkJySWdJa0FBSkFJQUFvQWdRZ0FCQWJLQUlBU1FSQUlBQVFHeUFBS0FJRUlBRVFvd2dnQUNBQUtBSUVRVFJxTmdJRURBRUxJQUFnQVJENUZBc2dBa0VRYWlRQUMrQUJBUUovSXdCQkVHc2lCQ1FBSUFBb0FnQWhBQ0FFSUFJUS9nUWlCVFlDRENBRlFmLy8vLzhIUndSQUlBRWdCRUVNYWhCSEN5QUNJQUlvQWdBb0Fpd1JBQUFnQVNBREVMRUlBa0FnQWhEMEFVVU5BQUpBSUFBZ0FpQUNLQUlBS0FJc0VRQUFLQUlFUVQ5eElBSkJBQkRmQlVVRVFDQUNJQUlvQWdBb0Fpd1JBQUFvQWdSQlAzRVEzZ1VOQVFzZ0JFRVRRUlFnQWlBQ0tBSUFLQUlzRVFBQUVMQUlHellDQ0NBQklBUkJDR29RUVF3QkN5QUVRZXNwUWV3cElBSWdBaWdDQUNnQ0xCRUFBQkN3Q0JzMkFnUWdBU0FFUVFScUVFRUxJQVJCRUdva0FBdEdBUUYvSUFBUXB3RWlBaUFCU1FSQUlBQWdBU0FDYXhDQUZROExJQUlnQVVzRVFDQUFLQUlBSUFGQkRHeHFJUUVnQUJDbkFTRUNJQUFnQVJDbURDQUFJQUlRL0JRTEN5d0JBWDhnQUNnQ0JDSUJCRUFnQVJDNURnOExBMEFnQUJDbkFpRUJJQUFvQWdnaEFDQUJSUTBBQ3lBQUM5QUdBUVYvQW44Q1FBSkFJQUVvQWdBaUJFVUVRQ0FCSVFNTUFRc2dBU2dDQkVVRVFDQUJJUU1NQWdzZ0FSQ0xGU0lES0FJQUlnUU5BUXNnQXlnQ0JDSUVEUUJCQUNFRVFRQU1BUXNnQkNBREtBSUlOZ0lJUVFFTElRWUNmd0ovSUFNUXB3SUVRQ0FES0FJSUlBUTJBZ0FnQUNBRFJnUkFJQVFoQUVFQURBTUxJQU1vQWdoQkJHb01BUXNnQXlnQ0NDQUVOZ0lFSUFNb0FnZ0xLQUlBQ3lFQ0lBTXRBQXhGQW44Z0FTQURSd1JBSUFNZ0FTZ0NDRFlDQ0FKL0lBRVFwd0lFUUNBREtBSUlEQUVMSUFNb0FnaEJCR29MSUFNMkFnQWdBeUFCS0FJQUlnVTJBZ0FnQlNBREVNOEVJQU1nQVNnQ0JDSUZOZ0lFSUFVRVFDQUZJQU1RendRTElBTWdBUzBBRERvQURDQURJQUFnQUNBQlJoc2hBQXNnQUVVTGNrVUVRQ0FHUlFSQUEwQWdBaENuQWlFRElBSXRBQXdoQVFKL0FrQWdBMFVFUUFKQUFrQUNRQUpBQW44Z0FVVUVRQ0FDUVFFNkFBd2dBaWdDQ0VFQU9nQU1JQUlvQWdnUTlRVWdBaUFBSUFBZ0FpZ0NBQ0lCUmhzaEFDQUJLQUlFSVFJTElBSW9BZ0FpQXdzRVFDQURMUUFNUlEwQkN5QUNLQUlFSWdFRVFDQUJMUUFNUlEwQ0N5QUNRUUE2QUF3Q1FDQUFJQUlvQWdnaUFVY0VmeUFCTFFBTURRRWdBUVVnQUF0QkFUb0FEQThMSUFFUXB3SkZEUVVnQVNnQ0NFRUVhZ3dHQ3lBQ0tBSUVJZ0ZGRFFFTElBRXRBQXhGRFFFTElBTkJBVG9BRENBQ1FRQTZBQXdnQWhEMEJTQUNLQUlJSVFJTElBSWdBaWdDQ0MwQUREb0FEQ0FDS0FJSVFRRTZBQXdnQWlnQ0JFRUJPZ0FNSUFJb0FnZ1E5UVVQQ3dKQUFuOGdBVVVFUUNBQ1FRRTZBQXdnQWlnQ0NFRUFPZ0FNSUFJb0FnZ1E5QVVnQWlBQUlBQWdBaWdDQkNJQlJoc2hBQ0FCS0FJQUlRSUxJQUlvQWdBaUFRc0VRQ0FCTFFBTVJRMEJDd0pBSUFJb0FnUWlBd1JBSUFNdEFBeEZEUUVMSUFKQkFEb0FEQUpBSUFBZ0FpZ0NDQ0lCUndSQUlBRXRBQXdOQVFzZ0FVRUJPZ0FNRHdzZ0FSQ25BZ1JBSUFFb0FnaEJCR29NQkFzZ0FTZ0NDQXdEQ3lBQkJIOGdBUzBBREVVTkFTQUNLQUlFQlNBREMwRUJPZ0FNSUFKQkFEb0FEQ0FDRVBVRklBSW9BZ2doQWdzZ0FpQUNLQUlJTFFBTU9nQU1JQUlvQWdoQkFUb0FEQ0FDS0FJQVFRRTZBQXdnQWlnQ0NCRDBCUThMSUFFb0FnZ0xLQUlBSVFJTUFBQUxBQXNnQkVFQk9nQU1Dd3MzQUNBQUlBUVFvZ1lnQUVFQU9nQjJJQUJCQVRzQmRDQUFJQU0yQW5BZ0FDQUNOZ0pzSUFBZ0FUWUNhQ0FBUWNTWkNUWUNBQ0FBQzFvQkEzOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQkVERWlBeENwQVNBQklBQW9BZ0JHQkVBZ0FDQURLQUlBTmdJQUN5QUFFQnNpQkNBRUtBSUFRWDlxTmdJQUlBQVFKU2dDQUNBQkVJd1ZJQU1vQWdBYUlBSkJFR29rQUFzNkFRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0NDQUFJQUlvQWdnaUFSQ09GU0FBRUNVYUlBSkJDR29RVnhEbUFpQUJFQ29nQWtFUWFpUUFDMDhCQVg4akFFRWdheUlDSkFBZ0FpQUFJQUVRendzMkFoZ2dBaUFBRUlFQk5nSVFJQUpCR0dvZ0FrRVFhaENYQWtVRVFDQUFJQUpCQ0dvZ0FpZ0NHQkF4S0FJQUVJOFZDeUFDUVNCcUpBQUxLd0VCZnlNQVFSQnJJZ0VrQUNBQVFTeHFJQUZCeXRrUkVHa2lBQkNRRlNBQUVDQWFJQUZCRUdva0FBcy9BUUovSXdCQkVHc2lBeVFBSUFBUUd5RUVBMEFnQkNBQUtBSUVJQUlRK1FFZ0FDQUFLQUlFUVFScU5nSUVJQUZCZjJvaUFRMEFDeUFEUVJCcUpBQUx3QUlCQW45QklDRUZBa0FDUUFKQUFrQUNRQUpBSUFGQjBBQk1CRUFnQVVGWGFpSUVRUVpORFFFZ0FVRkVhaUlFUVFkTEJFQWdBVUhRQUVZTkJnd0hDeUFFUVFGckRnY0dCZ1FGQmdZRUJRc2dBVUhVQUV3RVFDQUJRZEVBUmcwRElBRkIwd0JHRFFRZ0FVSFVBRWNOQmd3RkN5QUJRWngvYWlJRVFRVk5EUUVnQVVIVkFFWU5BaUFCUWRjQVJ3MEZEQU1MSUFSQkFXc09CZ1FDQkFFRUFnRUxJQVJCQVdzT0JRQURBd0lBQWd0QkVDRUZEQUlMUWNBQUlRVU1BUXRCQ0NFRkN5QUFRVGhxQW44Q1FDQUJRVmRxSWdSQkZrMUJBRUVCSUFSMFFZZUFvQU54RzBVRVFDQUJRYkIvYWlJQlFSWkxRUUVnQVhSQmk0REFBM0ZGY2cwQkN5QUFRVGhxSUFVUW9nSWhBVUh5QUF3QkN5QUFRVGhxSUFVUXlRRWhBVUh4QUFzZ0EwRUJUZ1IvSUFCQk9Hb2dBU0FERUxFQkJTQUJDeUFDRVBnQkM5NEVBQ0FDUWdBM0FBQWdBa0VBTmdBSEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQUtBSm9RYmw3YWlJQVFjOEFTdzBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQVFRSnJEazRYRnhnWUZ4Y1hGeGNYRnhjWEZ4WVdGeGdYRndBQUFBQVhGd0VZR1FNRUJRWUhDQnNhQ2dzZER4QWNEQTBPRVJJVEhoNFhGeGdaQXdRR0d4b2REeEFBSEF3TkRoRVNFeGNYRnh3WUd4VUFDeUFDUVFFNkFBQVBDeUFDUVFFNkFBRVBBQXNBQUFzZ0FrRUJPZ0FEQWtBZ0FSRHpCUTBBSUFFdEFBRkJDSFFpQUVHQUJFWUVmeUFCRUlvQlJRMEJJQUV0QUFGQkNIUUZJQUFMUVlBR1J3MFVDd3dVQ3lBQ1FZRUNPd0FEQWtBZ0FSRHpCUTBBSUFFdEFBRkJDSFFpQUVHQUJFWUVmeUFCRUlvQlJRMEJJQUV0QUFGQkNIUUZJQUFMUVlBR1J3MFRDd3dUQ3lBQ1FRRTZBQUVNRXdzZ0FrRUJPZ0FDREJJTElBSkJnUUk3QUFFUEN5QUNRUUU2QUFRZ0FrR0JBanNBQVE4QUN3QUFDeUFDUVFFNkFBRU1FQXNnQWtFQk9nQUVJQUpCQVRvQUJ5QUNRUUU2QUFFUEN5QUNRUUU2QUFrTURBc2dBa0VCT2dBSkRBMExJQUpCQVRvQUNRd0xDeUFDUVFFNkFBUU1EUXNnQWtHQkFqc0FCUThMSUFKQkFUb0FBZ3dMQ3lBQ1FRRTZBQVFnQWtFQk9nQUdEQVVMSUFKQmdRSTdBQVVNQkFBTEFBQUxJQUpCQVRvQUJ3d0dDeUFDUVFFNkFBZ0xEd3NnQWtFQk9nQUNEd3NnQWtFQk9nQUVEd3NnQWtFQk9nQUVDeUFDUVFFNkFBY1BDeUFDUVFFNkFBa1BDeUFDUVFFNkFBWVBDeUFCTFFBQklRQWdBa0VCT2dBS0lBSWdBRUVJZEVHQURrWTZBQWdMdEFZQ0EzOEJmaU1BUVlBQmF5SUZKQUFnQlNBRE5nSjRJQVVnQWpZQ2ZBSkFBa0FnQWlBQ0tBSUFLQUtBQVJFQUFBMEFJQU1nQXlnQ0FDZ0NnQUVSQUFBTkFDQUZJQU0yQW5RZ0JTQUNOZ0p3SUFVZ0JTa0RjRGNEQUNBQklBVWdCQkM3RENFQ0RBRUxJQVZCNkFCcUlBQkJBU0FDSUFNUXdRMGdCU0FGUWVnQWFpZ0NBQ0lETmdKOElBVWdCVUhvQUdvUUpTZ0NBQ0lBTmdKNFFRQWhBaUFEUlNBQVJYSU5BQ0FCSUFFb0FnQW9BbmdSQUFBaUJpQUdLQUlBS0FKa0VRQUFSUVJBSUFWQkVHb2dBeUFES0FJQUtBSjRFUUFBSWdZZ0JpZ0NBQ2dDSEJFQUFFRUFJQUVnQVNnQ0FDZ0NlQkVBQUNJR0lBWW9BZ0FvQWpBUkFBQkJBRUVBUVFBUVJTRUdJQVVnQXpZQ2ZDQUZJQUEyQW5nZ0FDQUFLQUlBS0FKNEVRQUFJQU1nQXlnQ0FDZ0NlQkVBQUJEQUFVVUVRQ0FGSUFVZ0JRSi9RYWdCRUVZaUFoRDlBeUVISUFJZ0JDQUNLQUlBS0FJRUVRRUFJQWNMSUFBUW93TWdBeENqQXlBQkVLTURJZ0lnQmlBQ0tBSUFLQUowRVFFQUlBSkIyQUVRb0FJTElBWVFOUm9NQVFzZ0JTZ0NlQ0lESUFNb0FnQW9BbmdSQUFBZ0JTZ0NmQ0lBSUFBb0FnQW9BbmdSQUFBUXdBRU5BQUpBSUFFZ0FTZ0NBQ2dDRkJFQUFFVU5BQ0FBSUFBb0FnQW9BaFFSQUFCRkRRQWdBeUFES0FJQUtBSVVFUUFBUlEwQUlBQWdBeUFCSUFFb0FnQW9BaFFSQUFBUVMwRUFFQTh0QUFBYklRSU1BUXRCK0FBUVJpSUNJQUVnQUNBRElBQWdBQ2dDQUNnQ2VCRUFBQkNORlJvZ0FpQUVJQUlvQWdBb0FnUVJBUUFnQlNBQUlBQW9BZ0FvQW9RQkVRQUFMUUFIUVFkeE5nSVFJQVVnQXlBREtBSUFLQUtFQVJFQUFDMEFCMEVIY1RZQ0RDQUZRUkJxSUFWQkRHb1FwZ0UxQWdBaENDQUNJQUlvQWdBb0FvUUJFUUFBSWdRZ0JDa0NCRUwvLy85SGd5QUlRaGlHUW9DQWdEaURoRGNDQkFKQUFrQUNRQ0FCSUFFb0FnQW9Bb1FCRVFBQUVJOENCRUFnQUNBREVMd05EUUVMSUFFZ0FTZ0NBQ2dDaEFFUkFBQVE1Z0ZGRFFFZ0FDQUFLQUlBS0FLRUFSRUFBQkNQQWtVTkFTQURJQU1vQWdBb0FvUUJFUUFBRUk4Q1JRMEJDeUFDSUFJb0FnQW9Bb1FCRVFBQUVLa0REQUVMSUFJZ0FpZ0NBQ2dDaEFFUkFBQVF3d0lMQ3lBRlFZQUJhaVFBSUFJTFpnRUNmeU1BUVJCcklnTWtBQ0FBUVRocUVITWdBU0FCS0FJQUtBSzhBUkVBQUNJRUlBQWdCQ2dDQUNnQ0NCRUJBQ0FESUFBZ0FTQUJLQUlBS0FLOEFSRUFBQ0lBSUFBb0FnQW9BbmdSQUFBUW9RRTJBZ3dnQWlBRFFReHFFRUVnQTBFUWFpUUFDeXNCQVg5QkFTRUNBa0FnQUNBQkVOOENRUnhHRFFBZ0FDQUJFTjRHRFFBZ0FDQUJFTFFNSVFJTElBSUxKUUFnQUNBQ0VLSUdJQUFnQVRZQ2FDQUFRZHlQQ1RZQ0FDQUFRZXdBYWlBREVQOEJHZ3MzQVFGL0lBQW9BZ0FFUUNBQUVQZ0RJQUFRR3hvZ0FDZ0NBQ0VCSUFBUXR3SWFJQUVRS2lBQUVCdEJBRFlDQUNBQVFnQTNBZ0FMQzZFQkFRSi9Jd0JCRUdzaUF5UUFBa0FnQVNBQ0VLOEZJZ1FnQUJDM0FrMEVRQ0FESUFJMkFnd2dCQ0FBRUJaTEJFQWdBeUFCTmdJTUlBTkJER29nQUJBV0VNY0ZJQUVnQXlnQ0RDQUFLQUlBRUpFRUdpQUFJQU1vQWd3Z0FpQUVJQUFRRm1zUXJ3Z01BZ3NnQUNBQklBSWdBQ2dDQUJDUkJCQ1dCd3dCQ3lBQUVKa1ZJQUFnQUNBRUVOc0VFUHdFSUFBZ0FTQUNJQVFRcndnTElBTkJFR29rQUF1NUJRRUlmeU1BUVRCcklnY2tBQ0FISUFVMkFpZ2dCeUFFTmdJc0FrQUNRQ0FCUWZoK2FpSUdRUXBMRFFCQkFTRUlBa0FDUUNBR1FRRnJEZ29DQWdJQ0FnSUJBd01EQUF0QmlBRWhBU0FBUVRocUlnWWdCQkNpQTBVTkFTQUdJQVVRK0FSRkRRRWdCeUFHUVlnQklBWWdCUkJpSWdFZ0JpQUJFTVVVSUFVUXFnRTJBaWhCandFaEFRd0NDeUFBUVRocUlnWWdCUkNpQTBVRVFFR1BBU0VCSUFZZ0JSRGdCVVVOQWdzZ0IwRXNhaUFIUVNocUVDNUJqd0VoQVNBSEtBSXNJUVFNQVF0QkFDRUlDd0pBQWtBZ0FFRTRhaUlHSUFRUTRBVkZCRUFnQmlBSEtBSW9FT0FGSUFoeVFRRkhEUUVMSUFJZ0JpQUdJQUVnQXlBSEtBSXNJQWNvQWlnUXFnRWlBQkQ1QkNBQ0lBWWdBQkQvQWlBR0lBQWdBaWdDQUJDR0FTRUVEQUVMUVFBaEJDQUJRZjkrYWlJQVFReExRUUVnQUhSQmxTRnhSWElOQUNBR0lBY29BaXdRb2dNaERDQUdJQWNvQWlnUW9nTWhEU0FHQW44Z0RBUkFJQVlnQnlnQ0xCRElBU0VKSUFkQkxHb01BUXNnQmlBSEtBSW9FTWdCSVFrZ0IwRW9hZ3NvQWdBUXJnUWhBQ0FHSUFZZ0F4QzdBaUFBRUxFQklRZ2dCMEVZYWhBd0lRb0NmeUFHSUFjb0Fpd1ErQVFFUUNBR0lBSW9BZ0FnQnlnQ0xDQUlFUEVFREFFTFFRQWdCaUFIS0FJb0VQZ0VSUTBBR2lBR0lBSW9BZ0FnQnlnQ0tDQUlFUEVFQ3lFRUlBZEJBRFlDRkNBSkJFQURRQ0FIUVFocUVEQWlDeUFIUVJScUVFY2dCQ0lBSVFVZ0FpQUdJQVlnQVNBSUlBd0VmeUFHSUFjb0Fpd2dDQ0FMRVBnQ0JTQUFDeUFOQkg4Z0JpQUhLQUlvSUFnZ0N4RDRBZ1VnQlFzUXFnRWlBQkQ1QkNBQ0lBWWdBQkQvQWlBSElBWWdBQ0FDS0FJQUVJWUJOZ0lFSUFvZ0IwRUVhaEJCSUFzUU5pQUhJQWNvQWhSQkFXb2lBRFlDRkNBQUlBbEpEUUFMQ3lBQ0lBWWdCaUFHSUFNZ0NoQ2RBeUFDS0FJQUVJWUJJZ1FRL3dJZ0NoQTJDeUFIUVRCcUpBQWdCQXRrQUNBQklBRWdBaUFERU40Q0lnQWdBQ2dDQUNnQ0dCRUFBQ0lCUWFrQklBRW9BZ0FvQXJnQkVRRUFJQUFnQWlBQ0tBSUFLQUo0RVFBQUlBQW9BZ0FvQW5RUkFRQWdBQ0FBS0FJQUtBSjhFUUFBSWdFZ0FTZ0NBQ2dDS0JFQUFCRERBaUFBQzA0QUlBQWdBU2dDQURZQ0FDQUFRUVJxSUFGQkJHb1Fxd2dnQUNBQktBSVFOZ0lRSUFCQkZHb2dBVUVVYWhDckNDQUFJQUV0QURBNkFEQWdBQ0FCS1FJb053SW9JQUFnQVNrQ0lEY0NJQXVTQVFFRGZ5QUFFRHdoQXlBQUVDVWhCUUpBSUFNRVFBSkFBMEFDUUFKL0lBQVFHeUFDSUFOQkVHb2lCQkRZQkFSQUlBTW9BZ0JGRFFZZ0F3d0JDeUFBRUJzZ0JDQUNFTmdFUlEwRElBTkJCR29oQkNBREtBSUVSUTBCSUFRaUF3c2hCU0FES0FJQUlRTU1BUXNMSUFFZ0F6WUNBQ0FFRHdzZ0FTQUROZ0lBSUFVUEN5QUFFQ1VoQXdzZ0FTQUROZ0lBSUFNTGZBRUNmeU1BUVNCcklnUWtBQ0FCSUFSQkhHb2dBaENlRlNJRktBSUFJUUlnQkVFQU9nQWJJQUpGQkVBZ0JFRUlhaUFCSUFNUXdBa2dBU0FFS0FJY0lBVWdCQ2dDQ0JEdUFpQUVRUWhxRUY4aEFpQUVRUUU2QUJzZ0JFRUlhaEN6QWdzZ0FDQUVRUWhxSUFJUU1TQUVRUnRxRUtJQklBUkJJR29rQUF0VUFRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0NDQUNJQUFRUURZQ0FDQUNRUWhxSUFJUW5BY2hBU0FBSUFBb0FnQWdBVUVEZEdvaUFVRUlhaUFBS0FJRUlBRVFwd2tRdHc0Z0FSQmhHaUFDUVJCcUpBQUxMQUVCZnlBQklBQW9BZ1FpQWtjRVFBTkFJQUFRR3hvZ0FrRklhaUlDSUFGSERRQUxDeUFBSUFFMkFnUUxMUUFnQVNBQUtBSUlSd1JBQTBBZ0FDZ0NFQm9nQUNBQUtBSUlRVWhxTmdJSUlBQW9BZ2dnQVVjTkFBc0xDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCRDZCRUU0YkdvYUlBQW9BZ0FnQUJENkJFRTRiR29hSUFBb0FnQWFDeTBBSUFNZ0F5Z0NBQ0FDSUFGcklnQkJTRzFCT0d4cUlnSTJBZ0FnQUVFQlRnUkFJQUlnQVNBQUVEMGFDd3RDQVFGL0l3QkJFR3NpQVNRQUlBQVFHeG9nQVVHa2tza2tOZ0lNSUFGQi8vLy8vd2MyQWdnZ0FVRU1haUFCUVFocUVLUUJLQUlBSVFBZ0FVRVFhaVFBSUFBTFVRRUJmeUFBRUxnTUlBQVFHeUFBS0FJQUlBQW9BZ1FnQVVFRWFpSUNFS1FWSUFBZ0FoQXVJQUJCQkdvZ0FVRUlhaEF1SUFBUUd5QUJFQ01RTGlBQklBRW9BZ1EyQWdBZ0FDQUFFUHNFRUtNVkMzMEJBbjhqQUVFUWF5SUVKQUFnQkVFQU5nSU1JQUJCREdvZ0JFRU1haUFERUlFQ0lBRUVRQ0FBS0FJUUdrR2trc2trSUFFaUEwa0VRQkNDQVFBTElBTkJPR3dRSmlFRkN5QUFJQVUyQWdBZ0FDQUZJQUpCT0d4cUlnSTJBZ2dnQUNBQ05nSUVJQUFRSXlBRklBRkJPR3hxTmdJQUlBUkJFR29rQUNBQUMxa0JBbjhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUFRcFJVaUF5QUJUd1JBSUFBUStnUWlBQ0FEUVFGMlNRUkFJQUlnQUVFQmREWUNDQ0FDUVFocUlBSkJER29RVWlnQ0FDRURDeUFDUVJCcUpBQWdBdzhMRUc0QUN5d0JBWDhnQUNnQ0FBUkFJQUFnQUNnQ0FCQ2hGU0FBRUJzYUlBQW9BZ0FoQVNBQUVQb0VHaUFCRUNvTEMxY0FBbjhDUUNBQUlBQW9BZ0FvQWh3UkFBQkJFRWNOQUNBQUlBQW9BZ0FvQWl3UkFBQW9BZ1JCUDNFaUFFRU1TdzBBUVFKQkFTQUFkRUc0UG5FTkFSb2dBRUVHUncwQVFRSkJBeUFCR3c4TFFmLy8vLzhIQ3dzM0FDQUFRUUFRdHd3Z0FFRUFPZ0IySUFCQkFUc0JkQ0FBSUFNMkFuQWdBQ0FDTmdKc0lBQWdBVFlDYUNBQVFjU1pDVFlDQUNBQUMxa0JBbjhqQUVIZ0FHc2lBeVFBSUFOQkNHcEJBRUVBUVFGQkFFRUFRUUFRUlNJRUlBQVFqd0VnQkVFQU5nSThJQVFnQTBFRWFpQURJQUVnQWtFQlJoQ1lCUm9nQXlnQ0FDRUFJQVFRTlJvZ0EwSGdBR29rQUNBQUM5SUJBUUYvSXdCQkVHc2lCeVFBSUFSQmZ6WUNBQ0FDSUFJb0FnQW9BaXdSQUFBUWxnSUVRQ0FESUFJZ0FpZ0NBQ2dDTEJFQUFDZ0NERFlDQUFzQ1FDQUZSUVJBSUFJZ0FpZ0NBQ2dDTEJFQUFCQ1dBZzBCSUFOQmZ6WUNBQXdCQ3lBREtBSUFRWDlNQkVBZ0EwRUFOZ0lBQ3lBQ0lBZEJER29nQjBFSWFpQUZJQVpCQVVZUW1BVWhCaUFBS0FLTUJCb2dBeUFHRUlRQ0FrQWdCVUVGUmcwQUlBSWdCeWdDRENBREtBSUFFUFFYUlEwQUlBTkJFQkNFQWdzZ0JDQUhLQUlNSUFNb0FnQnFOZ0lBQ3lBSFFSQnFKQUFMaUFFQkFuOGpBRUVnYXlJREpBQWdBQkFiSWdJZ0EwRUlhaUFBSUFBUSt3UkJBV29RcUJVZ0FCRDdCQ0FDRUtjVklnSW9BZ2dnQVJDNkRDQUNJQUlvQWdoQk9HbzJBZ2dnQUNBQ0VLWVZJQUlnQWlnQ0JCQ2lGU0FDS0FJQUJFQWdBaWdDRUJvZ0FpZ0NBQ0VBSUFJUUl5Z0NBQ0FDS0FJQWEwRTRiUm9nQUJBcUN5QURRU0JxSkFBTE1RRUJmeUFBS0FJUUdpQUFLQUlJSVFJRFFDQUNFTmNLSUFBZ0FDZ0NDRUVFYWlJQ05nSUlJQUZCZjJvaUFRMEFDd3RVQVFKL0l3QkJFR3NpQkNRQUlBSUVRQU5BSUFNZ0FpQUFFQnNnQWtFUWFpQUJFTnNESWdVYklRTWdBa0VFUVFBZ0JSdHFLQUlBSWdJTkFBc0xJQVJCQ0dvZ0F4QXhLQUlBSVFBZ0JFRVFhaVFBSUFBTFN3RUJmeU1BUVJCcklnRWtBQUpBSUFBb0FnUVFtZ0ZCQVVZRVFDQUFFS2tPREFFTElBRWdBQ2dDQkNJQUVFQTJBZ0FnQUNBQlFRaHFJQUVRWnlnQ0FCQ2dGUXNnQVVFUWFpUUFDN1lKQVFoL0l3QkIwQUJySWdja0FDQUhJQUkyQWt3Z0IwRi9OZ0pJQWtBZ0FoQTNRUUZJRFFBZ0FFRTRhaUVJSUFCQjVBZHFJUXdnQUVIUUIyb2hEUU5BSUFJZ0NoQTRLQUlBSVFZZ0NpRUNBa0FnQVNBQktBSUFLQUljRVFBQVFSQkdCRUFnRFNBTUlBZEJ6QUJxRU1jREVOMEVJQW9RRVNnQ0FDRUNJQUFnQmhDOURBMEJDeUFIUVJCcUlBWWdCaWdDQUNnQ0tCRUFBRUUwRUQwYUlBZEJFR29nQkJDOERDQUNRUUJJRFFBZ0NDQUZJQUlnQmlBR0tBSUFLQUlZRVFBQUVCTVF3UlFnQ0NBRklBSWdCaUFIS1FJVVFqU0lwMEVIY1JDNURFRi9FT01CSUFnZ0JTQUNJQVlRL2dSQmZ4RGpBUUpBSUFFZ0FTZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJRFVnUkFJQUVnQVNnQ0FDZ0NMQkVBQUNrQ0JFSS9nMElFVWcwQkN5QUJJQUVvQWdBb0Fod1JBQUJCRUVjRVFDQUFLQUtNQkJvTUFRc2dDQ0FGSUFJZ0FDQUhRUkJxRU0wTVFYOFE0d0VnQ0NBRklBSWdBQ0FIUVJCcUVNd01RWDhRNHdFZ0FDQUZJQUlnQjBFUWFoRExEQXNnQ0NBRklBSWdCMEVRYWhES0RFRi9FT01CQWtBZ0FTQUJLQUlBS0FJY0VRQUFRUkJIRFFBZ0JDa0NCRUkvZzBJR1VnMEFJQWRCRUdvZ0J4QXdJZ2tnQUNnQ2pBUXRBSWdFRUxFSVFRQWhDeUFKRUJZRVFBTkFJQWdnQlNBQ0lBa2dDeEFSS0FJQVFYOFE0d0VnQzBFQmFpSUxJQWtRRmtrTkFBc0xJQWtRTmdzQ1FDQUJJQUVvQWdBb0FuQVJBQUFOQUNBSFFSQnFFSUFDUlEwQUlBZ2dCU0FDUVI0Z0J5Z0NKRUgvSDNFUTR3RUxJQVFRZ0FJRVFDQUdJQUFvQW93RUtBSUFFSWNFR2dzZ0JpQUdLQUlBS0FJb0VRQUFFTElEQkVBZ0NDQUZJQUpCSHlBR0lBWW9BZ0FvQWlnUkFBQW9BaFJCREhaQkIzRVE0d0VMQWtBZ0JpQUdLQUlBS0FJb0VRQUFFSVVEQkVBZ0NDQUZJQUpCSXlBR0lBWW9BZ0FvQWlnUkFBQXBBaGhDTW9pblFmOC9jUkRqQVF3QkN5QURSUTBBSUFBZ0FTQUdJQWRCeUFCcUlBY2dBeUFIS1FJVVFqU0lwMEVIY1JDdEZTQUhLQUpJSWdsQkFFNEVRQ0FJSUFVZ0FrRWpJQWtRNHdFTElBY2dCeWdDQURZQ1NBc2dBMFVnQmlBR0tBSUFLQUpzRVFBQVJYSkZCRUFnQ0NBRklBSkJCeUFHSUFNZ0J5a0NGRUkwaUtkQkIzRVFyQlVRNHdFTElBQWdCaUFHS0FJQUtBSW9FUUFBS0FJRVFRWjJRZjhEY1VFQkVMSUlJZ2xCLy8vLy93ZEhCRUFnQ0NBRklBSkJDeUFKRU9NQkN5QUlJQVVnQWlBQUlBWWdCaWdDQUNnQ0tCRUFBQkQ3QTBGL0VPTUJBbjhnQUNnQ2pBUWFJQWNvQWhCRlFRRnlSUXNFUUNBSVFZRGRFUkJDSUFnZ0JTQUNJQWNvQWhBUXdCUUxBa0FnQ1VFSlJ3MEFJQVlnQmlnQ0FDZ0NLQkVBQUMwQUtBUkFJQWdnQlNBQ1FZUXBRWDhRNHdFZ0NFR0hLUkFoSUFoQmh0d1JFRUlMSUFZZ0JpZ0NBQ2dDS0JFQUFDZ0NMRUdBY0VZTkFDQUlJQVVnQWtHSUtTQUdJQVlvQWdBb0FpZ1JBQUFvQWl3UTR3RWdDRUdMS1JBaElBaEJuZHdSRUVJTElBWWdCaWdDQUNnQ0tCRUFBQzBBSjBVTkFDQUlJQVVnQWtHQ0tVRi9FT01CSUFoQmd5a1FJU0FJUWJyY0VSQkNDeUFLUVFGcUlnb2dCeWdDVEJBM1RnMEJJQWNvQWt3aEFnd0FBQXNBQ3lBQVFUaHFJZ0lnQlNBQklBUXBBZ1JDTklpblFRZHhFTGtNUVg4UWVDQUNJQVVnQVNBQUtBS01CQzBBMmdNUXFoVkJmeEI0SUFkQjBBQnFKQUFMU3dFQmZ5TUFRUkJySWdJa0FBSkFJQUFvQWdRZ0FCQWJLQUlBU1FSQUlBQVFHeUFBS0FJRUlBRVF1Z3dnQUNBQUtBSUVRVGhxTmdJRURBRUxJQUFnQVJDdUZRc2dBa0VRYWlRQUMyWUJBWDhqQUVFUWF5SUNKQUFnQWlBQUlBRWdBQkE4SUFBUUpSQ3dGVFlDQ0NBQ0lBQVFnUUUyQWdBQ2Z3SkFJQUpCQ0dvZ0FoQWVSUTBBSUFBUUd5QUJJQUpCQ0dvUVZ4RGJBdzBBSUFJb0FnZ01BUXNnQUJDQkFRc2hBQ0FDUVJCcUpBQWdBQXVXQmdFS2Z5TUFRYUFCYXlJRkpBQWdCU0FDTmdLY0FTQUZRWkFCYWhBd0lRZ2dCVUdBQVdvUU1DRUhBa0FnQWhBM1FRRklEUUFnQUVHa0NHb2hEU0FBUWVRSGFpRUxJQUJCMEFkcUlRd0RRQUpBSUFJZ0JoQTRLQUlBSWdJZ0FpZ0NBQ2dDREJFQUFBUkFJQWxCQVdvaENTQUJJQUVvQWdBb0Fod1JBQUJCRUVjTkFTQU1JQXNnQlVHY0FXb1F4d01RM1FRZ0JoQVJRWDgyQWdBTUFRc2dBU0FCS0FJQUtBSWNFUUFBUVJCR0JFQWdBQ0FDRUwwTUJFQWdEQ0FMSUFWQm5BRnFFTWNERU4wRUlBWVFFVUYvTmdJQUlBbEJBV29oQ1F3Q0N5QU1JQXNnQlVHY0FXb1F4d01RM1FRZ0JoQVJJQVlnQ1dzMkFnQUxJQVZCeUFCcUlBSWdBaWdDQUNnQ0tCRUFBRUUwRUQwYUlBVkJ5QUJxSUFRUXZBd0NRQ0FGUWNnQWFoQ0FBZzBBSUFRUWdBSkZEUUFnQlNBRktBSmNRWUJnY1NBRUtBSVVRZjhmY1hJMkFsd0xRUUFoQ2lBRUtRSUVRaitEUWdaUkJFQWdCaUFGS0FLY0FSQTNRWDlxUmlFS0N5QUNFUFFCQkVBZ0JTQUNJQUlvQWdBb0FsUVJBQUEyQWtRZ0JTQU5JQVZCeEFCcUVNSU1OZ0lJSUFVZ0RSQitOZ0pBSUFWQkNHb2dCVUZBYXhDNEF3UkFJQVVnQWpZQ1JDQUZRUWhxSWc0Z0JVSEVBR29vQWdBMkFnQWdEa0VFYWlBRlFjZ0Fha0UwRUQwYUlBY2dCVUVJYWhDekZRc2dCU0FBSUFJZ0F5QUZRY2dBYWlBS1FRRVE0UVkyQWdnZ0NDQUZRUWhxRUVFTUFRc2dCU0FBSUFJZ0F5QUZRY2dBYWlBS1FRQVE0UVkyQWdnZ0NDQUZRUWhxRUVFTElBWkJBV29pQmlBRktBS2NBUkEzVGcwQklBVW9BcHdCSVFJTUFBQUxBQXNnQUVFNGFpQUlJQUVnQVNnQ0FDZ0NGQkVBQUJBVEVKb0lJUVlnQVNBRUVNRU1SUVJBSUFBZ0EwRThiR29nQkNrQ0JFSTBpS2RCQjNGQkZHeHFRZWdFYWlBRlFad0JhaERIQXlBR05nSUFDeUFBSUFFZ0JTZ0NuQUVnQXlBRUlBWVFzaFVnQnhEN0JFRUJUZ1JBSUFWQkNHcEJCSEloQVVFQUlRSURRQ0FGUVFocUlBY29BZ0FnQWtFNGJHcEJPQkE5R2lBQUlBVW9BZ2dnQXlBQlFRQkJBQkRoQmhvZ0FrRUJhaUlDSUFjUSt3UklEUUFMQ3lBSEVMZ01JQWNRcVJVZ0NCQTJJQVZCb0FGcUpBQWdCZ3RYQVFGL0l3QkJFR3NpQUNRQUlBQWdBVFlDREFKQUlBRkZCRUFNQVF0QnFBRVFSaUlCRVAwRElnTWdBU2dDQUNnQ3ZBRVJBQUFnQUVFTWFoRGNBU0FCSUFJZ0FTZ0NBQ2dDQkJFQkFBc2dBRUVRYWlRQUlBTUxjZ0VCZndKQUlBRWdBU2dDQUNnQ0xCRUFBQzBBSkVGNWFpSUNRU1ZMRFFBQ1FDQUNRUTlyRGhFQkFRRUJBUUVBQUFBQUFBRUJBUUVCQVFBTElBQkJPR3BCTVJBaEN5QUJJQUVvQWdBb0Fpd1JBQUF0QUNRaUFFRXNUUVJBSUFCQkFuUkJoT3NSYWlnQ0FBOExRZi8vLy84SEMzY0FBa0FnQVMwQUFFRi9haUlCUVFoTERRQUNRQUpBQWtBQ1FDQUJRUUZyRGdnRUF3UUVCQVFBQVFJTElBQkJPR3BCSUJDaUFnOExJQUJCT0dwQklCREpBUThMSUFCQk9HcEJJQkRFQXc4TElBQkJPR29pQUVHOTRSRVFRaUFBUVpBbkVDRWdBRUVRRU1RRER3c2dBRUU0YWtFZ0VNUURDNklCQVFKL0FrQWdBQ0FBS0FJQUtBSWNFUUFBUVJCSERRQUNRQ0FBSUFBb0FnQW9BaXdSQUFBcEFnUkNQNE5DQlZFTkFDQUFJQUFvQWdBb0Fpd1JBQUFwQWdSQ1A0TkNCbEVOQUNBQUlBQW9BZ0FvQWl3UkFBQVFyZ0pGRFFFTElBQWdBQ2dDQUNnQ0xCRUFBQ2tDQkVJM2lLZEJEM0VpQWtFRlMwRUJJQUowUVN4eFJYSU5BQ0FBSUFBb0FnQW9BaXdSQUFBcEFnUkNONGluUVE5eElRRUxJQUVMNlFNQkJIOGpBRUVnYXlJREpBQUNRQ0FCSUFFb0FnQW9Bb2dCRVFBQUtBSUVRUUJPQkVBZ0EwRUFOZ0lRSUFBZ0FTQUJLQUlBS0FKNEVRQUFBbjhnQVNBQktBSUFLQUpFRVFBQUJFQWdBU0FCS0FJQUtBSkVFUUFBRUVzTUFRc2dBU0FCS0FJQUtBSmdFUUFBRUpBQ0N5QURRUkJxUVFBUXRRUWhBUXdCQ3lBQklBRW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXNFUUFBS1FJRVFzRC9BWU5DZ0FGUkJFQWdBRUU0YWlFQ1FRQWhBU0FEUVJCcUVEQWhCQU5BSUFBb0Fvd0VJQUVReEF3aEJTQURJQUlnQUNnQ2pBUWdBUkNEQWlBRlFYOUhFSFEyQWd3Z0JDQURRUXhxRUVFZ0JVRi9Sd1JBSUFJZ0JCQ1FBU2dDQUVFQklBQW9Bb3dFSUFFUXhBd1FlQXNnQVVFQmFpSUJRUU5IRFFBTElBSWdBaUFDUVNBUXlRRkJBeEN4QVNBRVFRRVE5UU1oQVNBRUVEWU1BUXNnQVNBQktBSUFLQUpnRVFBQUlnSUVRQ0FBUVRocUFuOGdBaWdDaUFFaUFRUkFJQUVnQUNBQktBSUFLQUlJRVFFQUlBQWdBU0FCS0FJQUtBSjRFUUFBRUtFQkRBRUxJQUlRa0FJaEFTQURRUUEyQWhBZ0FDQUNJQUlvQWdBb0FuZ1JBQUFnQVNBRFFSQnFRUUVRdFFRTElnRWdBaUFDS0FJQUtBTEFBUkVBQUJBVEVOb0ZEQUVMSUFBb0FqUWdBMEVRYWtHdzRCRVFhU0lBRUtBRElBQVFJQnBCQUNFQkN5QURRU0JxSkFBZ0FRdXNBUUVGZnlNQVFSQnJJZ01rQUNBQUVDTWFJQUVvQWdBaEJBSkFBa0FnQUJBOElnVkZEUUFnQUNBRUlBVVFOQ0lHRUJFb0FnQWlBa1VOQUNBQ0tBSUFJZ0pGRFFBRFFDQUVJQUlvQWdSSEJFQWdBaWdDQkNBRkVEUWdCa2NOQWdzQ1FDQUVJQUlvQWdSSERRQWdBQkJESUFKQkNHb2dBUkNMQTBVTkFDQURRUWhxSUFJUU1TZ0NBQ0VDREFNTElBSW9BZ0FpQWcwQUN3c2dBeERMQVNJQ05nSUlDeUFEUVJCcUpBQWdBZ3NqQUNBQVFSQnFJZ0FnQVJBUktBSUFSUVJBUVFBUEN5QUFJQUVRRVNnQ0FDZ0NDQXRGQVFGL0l3QkJJR3NpQWlRQUlBSWdBUkNTQXpZQ0VCRG5BU0FDUVJocUlBQWdBU0FDUVJCcUlBSkJDR29ReFF3Z0FrRVlhaEJFSVFBZ0FrRWdhaVFBSUFCQkJHb0w1d1FCQkg4akFFRVFheUlHSkFBQ1FDQUJJQUVvQWdBb0FvZ0JFUUFBRUk4Q0JFQWdBQ0FCRUxvVklnUU5BUXNnQUNBQklBRW9BZ0FvQW5nUkFBQVF4Z3doQkNBQ1JRUkFJQUFnQVNBQktBSUFLQUo0RVFBQUVMOEJJUUlMQWtBZ0FTQUJLQUlBS0FKNEVRQUFFTEFDUlFSQUlBRWdBU2dDQUNnQ2VCRUFBQkN2QWtVTkFRc0NRQUpBSUFSQmYyb2lBMEVMU3dSQUlBUkI1U2xIRFFFTUFnc0NRQUpBQWtBZ0EwRUJhdzRMQVFBREF3TURBd0lEQXdRQUN5QUFRVGhxSWdOQmhPQVJRWUNHQkJDeUFTQURRZFFpRUNFTUJBc2dBRUU0YWlJRFFZVGdFVUdBaGdRUXNnRWdBU0FCS0FJQUtBSjRFUUFBSWdVZ0JTZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJR1VRUkFJQU5CMFNJUUlRd0VDeUFEUWRJaUVDRU1Bd3NnQUVFNGFpSURRWVRnRVVHQWhnUVFzZ0VnQTBIVEloQWhEQUlMSUFFZ0FTZ0NBQ2dDZUJFQUFCQ3dBZ1JBSUFCQk9HcEJDUkFoQ3lBQklBRW9BZ0FvQW5nUkFBQVFyd0pGRFFFZ0FFRTRha0VXRUNFTUFRc2dBRUU0YWlJRFFZVGdFVUdBaGdRUXNnRWdBMEhSSWhBaEN3SkFJQUVnQVNnQ0FDZ0NlQkVBQUJER0FrVU5BQUpBSUFSQkFrY0VRQ0FFUVFsSERRRWdBRUU0YWlJRFFacmdFVUdBaWdRUXNnRWdBMEhpSWhBaERBSUxJQUJCT0dvaUEwR2E0QkZCZ0lvRUVMSUJJQU5CNFNJUUlRd0JDeUFBUVRocUlRTWdCRUVNUmdSQUlBTkJtdUFSUVlDS0JCQ3lBU0FEUWVBaUVDRU1BUXNnQTBFbkVDRUxJQVlnQVNBQktBSUFLQUxBQVJFQUFCQVRJZ0VRSWlJRFFRVkJuTE1SRUlVQ1JTRUZJQU1RR1JvZ0FFRTRhaUFFSUFKQnIrQVJJQUVnQlJ0QkFCRHlBeUVFQ3lBR1FSQnFKQUFnQkF1SkFRRUJmeU1BUVJCcklnUWtBQUpBQWtBZ0FrSEFYV3BCQkVzTkFDQURJQU1vQWdBb0FtZ1JBQUFOQUNBRUlBRkJPR29pQVNBQlFTQVF5UUZCQkJDeEFUWUNBQ0FFSUFGQndBQVF5UUUyQWd3Z0FDQUVJQVJCREdvUTR3d01BUXNnQkVHQTRCRW9BZ0EyQWdBZ0JFR0E0QkVvQWdBMkFnUWdBQ0FFS1FNQU53SUFDeUFFUVJCcUpBQUxTUUVCZnlNQVFSQnJJZ1VrQUNBQkVDVWlBU0FBUVJnUUppQUZRUWhxSUFGQkFCRERBUkNSQVNJQUtBSUFRUkJxSUFJZ0F5QUVFTThISUFBUUpVRUJPZ0FFSUFWQkVHb2tBQXVTQVFFRGZ5QUFFRHdoQXlBQUVDVWhCUUpBSUFNRVFBSkFBMEFDUUFKL0lBQVFHeUFDSUFOQkVHb2lCQkRiQXdSQUlBTW9BZ0JGRFFZZ0F3d0JDeUFBRUJzZ0JDQUNFTnNEUlEwRElBTkJCR29oQkNBREtBSUVSUTBCSUFRaUF3c2hCU0FES0FJQUlRTU1BUXNMSUFFZ0F6WUNBQ0FFRHdzZ0FTQUROZ0lBSUFVUEN5QUFFQ1VoQXdzZ0FTQUROZ0lBSUFNTExBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnZ2dBQ0FDS0FJSUVOSURJQUJCQURZQ0RDQUNRUkJxSkFBTFdnQWpBRUVRYXlJREpBQWdBUkFiSVFFZ0FFRVlFQ1lnQTBFSWFpQUJRUUFRd3dFUWtRRWlBQ2dDQUVFSWFpQUVLQUlBRU1JVklBQVFKVUVCT2dBRUlBQW9BZ0FnQWpZQ0JDQUFLQUlBUVFBMkFnQWdBMEVRYWlRQUN6VUJBWDhnQVNBQUtBSUlSd1JBQTBBZ0FDZ0NFQm9nQUNBQUtBSUlRWHhxSWdJMkFnZ2dBaEErSUFBb0FnZ2dBVWNOQUFzTEN6MEJBWDhnQVNBQ1J3UkFJQU1vQWdBaEJBTkFJQUFnQkVGOGFpQUNRWHhxSWdJUXR3Z2dBeUFES0FJQVFYeHFJZ1EyQWdBZ0FTQUNSdzBBQ3dzTHlRVUJDSDhqQUVFUWF5SUZKQUFnQlNBQ0lBRVFzd2dpQkRZQ0RBSkFJQVJCQVVnTkFBSkFJQUVvQWdRaUFrVUVRQ0FES0FJRUlRSU1BUXNnQlVFZ0lBSnJJZ0kyQWdnZ0JVRUlhaUFGUVF4cUVQNEJJUVFnQlNBRktBSU1JQVFvQWdBaUJHczJBZ3dnQXlnQ0JDRUdJQUVvQWdBb0FnQWhDQ0FCS0FJRUlRa2dCU0FFTmdJSUlBVkJJQ0FHYXlJS05nSUVJQVZCQ0dvZ0JVRUVhaENrQVNFTElBTW9BZ0FpQnlBSVFYOGdDWFJCZnlBQ0lBUnJkbkZ4SWdnZ0F5Z0NCQ0lDSUFFb0FnUWlCbXQwSUFnZ0JpQUNhM1lnQWlBR1N4c2dCeWdDQUVGL0lBSjBRWDhnQ2lBTEtBSUFJZ1pyZG5GQmYzTnhjallDQUNBRElBSWdCbW9pQ1VFZmNTSUNOZ0lFSUFNZ0J5QUpRUU4yUWZ6Ly8vOEJjV29pQnpZQ0FDQUVJQVpySWdSQkFVNEVRQ0FISUFjb0FnQkJmMEVnSUFScmRrRi9jM0VnQ0NBQktBSUVJQVpxZG5JMkFnQWdBeUFFTmdJRUlBUWhBZ3NnQVNBQktBSUFRUVJxTmdJQUlBVW9BZ3doQkF0QklDQUNheUVHSUFSQklFNEVRRUYvSUFKMElnaEJmM01oQ1NBQktBSUFJUWNEUUNBREtBSUFJZ1FnQkNnQ0FDQUpjU0FIS0FJQUlnY2dBblJ5TmdJQUlBTWdCRUVFYWpZQ0FDQUVJQVFvQWdRZ0NIRWdCeUFHZG5JMkFnUWdCU0FGS0FJTUlncEJZR29pQkRZQ0RDQUJJQUVvQWdCQkJHb2lCellDQUNBS1FUOUtEUUFMQ3lBRVFRRklEUUFnQVNnQ0FDZ0NBQ0VJSUFVZ0JqWUNDQ0FGUVF4cUlBVkJDR29RL2dFaEFTQURLQUlBSWdJZ0FpZ0NBRUYvSUFNb0FnUWlCM1JCZnlBR0lBRW9BZ0FpQVd0MmNVRi9jM0VnQ0VGL1FTQWdCR3QyY1NJR0lBZDBjallDQUNBRElBRWdCMm9pQkVFZmNUWUNCQ0FESUFJZ0JFRURka0g4Ly8vL0FYRnFJZ0kyQWdBZ0JTQUZLQUlNSUFGcklnUTJBZ3dnQkVFQlNBMEFJQUlnQWlnQ0FFRi9RU0FnQkd0MlFYOXpjU0FHSUFGMmNqWUNBQ0FESUFVb0FndzJBZ1FMSUFBZ0F4Q1JBaG9nQlVFUWFpUUFDOVVDQVFOL0l3QkJFR3NpQkNRQUlBUWdBaUFCRUxNSUlnSTJBZ3dDUUNBQ1FRRklEUUFnQVNnQ0JDSUZCRUFnQkVFZ0lBVnJJZ1kyQWdnZ0JFRUlhaUFFUVF4cUVQNEJJUUlnQkNBRUtBSU1JQUlvQWdBaUFtczJBZ3dnQXlnQ0FDSUZJQVVvQWdCQmZ5QUJLQUlFZEVGL0lBWWdBbXQyY1NJR1FYOXpjU0FCS0FJQUtBSUFJQVp4Y2pZQ0FDQURJQUlnQXlnQ0JHb2lBa0VmY1RZQ0JDQURJQVVnQWtFRGRrSDgvLy8vQVhGcU5nSUFJQUVnQVNnQ0FFRUVhallDQUNBRUtBSU1JUUlMSUFNb0FnQWdBU2dDQUNBQ1FTQnRJZ1ZCQW5RaUFoRGtBeUFFSUFRb0Fnd2dCVUVGZEdzaUJUWUNEQ0FESUFNb0FnQWdBbW8yQWdBZ0JVRUJTQTBBSUFFZ0FTZ0NBQ0FDYWlJQk5nSUFJQU1vQWdBaUFpQUNLQUlBUVg5QklDQUZhM1lpQWtGL2MzRWdBU2dDQUNBQ2NYSTJBZ0FnQXlBRUtBSU1OZ0lFQ3lBQUlBTVFrUUlhSUFSQkVHb2tBQXRxQVFGL0l3QkJNR3NpQkNRQUFrQWdBU2dDQkNBREtBSUVSZ1JBSUFBZ0JFRW9haUFCRUpFQ0lBUkJJR29nQWhDUkFpQUVRUmhxSUFNUWtRSVF4eFVNQVFzZ0FDQUVRUkJxSUFFUWtRSWdCRUVJYWlBQ0VKRUNJQVFnQXhDUkFoREdGUXNnQkVFd2FpUUFDekFCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBRUpFQ0lRQWdBaUFCRUpFQ0lBQVFzd2doQUNBQ1FSQnFKQUFnQUFzb0FDQUFJQUVRTGlBQVFRUnFJQUZCQkdvUUxpQUFFQnNnQVJBYkVDNGdBQkFiR2lBQkVCc2FDNndCQVFSL0l3QkJNR3NpQXlRQUlBQW9BZ1FoQkNBQUlBTkJLR29nQVJDUkFpQURRU0JxSUFJUWtRSVF5UlVnQUNnQ0JHb2lCVFlDQkNBRVFRQWdCVUYvYWlBRVFYOXFjMEVnU1J0RkJFQWdBQ2dDQUNJR0lBWWdCVUYvYWtFRGRrSDgvLy8vQVhGcUlBVkJJVWtiUVFBMkFnQUxJQU5CR0dvZ0FSQ1JBaUVCSUFOQkVHb2dBaENSQWlFQ0lBTkJDR29nQUNBRUVJY0hJQU1nQVNBQ0lBTkJDR29ReUJVZ0EwRXdhaVFBQ3pRQUl3QkJFR3NpQVNRQUlBQkNBRGNDQUNBQlFRQTJBZ3dnQUVFSWFpQUJRUXhxSUFGQkNHb1FvUWNnQVVFUWFpUUFJQUFMY1FFQ2Z5TUFRVEJySWdJa0FDQUFFTFVJSUFGSkJFQWdBa0VnYWdKL0lBQVFHeG9nQWtFWWFnc1F6QlVpQXlBQkVPSU5JQUpCRUdvZ0FFRUFFSWNISUFKQkNHb2dBQ0FBS0FJRUVJY0hJQU1nQWtFUWFpQUNRUWhxRU1zVklBQWdBeERLRlNBREVJZ0hDeUFDUVRCcUpBQUxYd0VDZnlNQVFSQnJJZ0lrQUNBQUVOVU5JZ01nQVU4RVFDQUFFTFVJSWdBZ0EwRUJka2tFUUNBQ0lBQkJBWFEyQWd3Z0FpQUJRUjlxUVdCeE5nSUlJQUpCREdvZ0FrRUlhaEJTS0FJQUlRTUxJQUpCRUdva0FDQUREd3NRYmdBTENRQWdBQkQ5QWhBcUMrZ0RBZ1YvQVgwakFFRWdheUlGSkFBZ0FSQWpJQUlRNXdZaENDQUJFRHdoQmlBRlFRQTZBQjhDUUFKQUlBWkZEUUFnQVNBSUlBWVFOQ0lKRUJFb0FnQWlCMFVOQUFOQUlBY29BZ0FpQjBVTkFTQUlJQWNvQWdSSEJFQWdCeWdDQkNBR0VEUWdDVWNOQWdzZ0FSQkRJQWRCQ0dvZ0FoQ21BMFVOQUFzTUFRc2dCVUVRYWlBQklBaEI0TnNSSUFNZ0JCRERGU0FCRUNNb0FnQWhBaUFCRUVNaEF3SkFJQVlFUUNBREtnSUFJQWF6bENBQ1FRRnFzMTFCQVhNTkFRc2dCU0FHRUxvQlFRRnpJQVpCQVhSeU5nSU1JQVVDZnlBQkVDTW9BZ0JCQVdxeklBRVFReW9DQUpXTklncERBQUNBVDEwZ0NrTUFBQUFBWUhFRVFDQUtxUXdCQzBFQUN6WUNDQ0FCSUFWQkRHb2dCVUVJYWhCU0tBSUFFUEFNSUFnZ0FSQThJZ1lRTkNFSkN3SkFJQUVnQ1JBUktBSUFJZ0pGQkVBZ0JTZ0NFQ0FCUVFocUlnSW9BZ0EyQWdBZ0FpQUZLQUlRTmdJQUlBRWdDUkFSSUFJMkFnQWdCU2dDRUNnQ0FFVU5BU0FGS0FJUUlRSWdBU0FGS0FJUUtBSUFLQUlFSUFZUU5CQVJJQUkyQWdBTUFRc2dCU2dDRUNBQ0tBSUFOZ0lBSUFJZ0JTZ0NFRFlDQUFzZ0JVRVFhaEJmSVFjZ0FSQWpJZ0VnQVNnQ0FFRUJhallDQUNBRlFRRTZBQjhnQlVFUWFoRG9CZ3NnQUNBRlFSQnFJQWNRTVNBRlFSOXFFS0lCSUFWQklHb2tBQXRYQVFKL0l3QkJJR3NpQXlRQUlBQVFHeUlDSUFOQkNHb2dBQ0FBRUJaQkFXb1Eyd1FnQUJBV0lBSVE4Z0lpQWlnQ0NDQUJFTGNJSUFJZ0FpZ0NDRUVFYWpZQ0NDQUFJQUlRMHd3Z0FoRFNEQ0FEUVNCcUpBQUxLUUVCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVJEa0RCQXhLQUlBSVFBZ0FrRVFhaVFBSUFBTHlBVUJDSDhqQUVIUUFHc2lBU1FBSUFJZ0FpZ0NBQ2dDZEJFQUFDSUVJQUFnQkNnQ0FDZ0NDQkVCQUNBQUlBSWdBaWdDQUNnQ2RCRUFBQ0lFSUFRb0FnQW9BZ3dSQUFBaUJDQUVLQUlBS0FKNEVRQUFFS0VCSVFnZ0FpSUVMUUFjQkg5QkFRVkJBa0VBSUFRdEFCMGJDeUVLSUFGQlFHc1FNQ0VGSUFJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0Fyd0JFUUFBSVFJZ0FVRXdhaEF3SVFjZ0FoQVdJUVlnQVVFZ2FpSUVFTFFGSUFZRVFDQUVJQVlRL0FRZ0JDQUdFS3dJQ3lBQklBSVFRRFlDQ0NBQklBSVFNallDR0VGL0lRWWdBVUVJYWlBQlFSaHFFQjRFUUFOQUlBRWdBU2dDQ0NnQ0FDSUROZ0lZQWtBQ1FDQURJQU1vQWdBb0FqUVJBQUJGRFFBZ0FTZ0NHQ0lESUFNb0FnQW9BalFSQUFBb0FoUkJ4d05IRFFBZ0JSQVdJUVlNQVFzQ1FDQUJLQUlZSWdNZ0F5Z0NBQ2dDTkJFQUFFVU5BQ0FCS0FJWUlnTWdBeWdDQUNnQ05CRUFBQ2dDRkVIR0EwY05BQ0FGRUJZaEF5QUVJQWNRRmhBUklBTTJBZ0FnQVNBQktBSVlJZ01nQXlnQ0FDZ0NOQkVBQUNnQ0dDSURJQU1vQWdBb0FoUVJBQUFRUzBFQUVBOG9BZ0EyQWhRZ0J5QUJRUlJxRUVFTUFRc2dCU0FCUVJocUVFY0xJQUZCQ0dvUVpob2dBU0FDRURJMkFoZ2dBVUVJYWlBQlFSaHFFQjROQUFzTEFrQUNRQ0FIRUJZRVFDQUZFQllnQkNBSEVCWkJmMm9RRVNnQ0FFWU5BUXNnQlJBV0lBWkhEUUVMSUFGQkFEWUNDQ0FGSUFGQkNHb1FRUXNnQVVFSWFoQXdJUU1nQUVFNGFpSUpJQWdnQ2lBRkVCWWdCeUFFSUFZZ0F4Q3RGRUVBSVFJZ0FVRUFPZ0FZSUFCQitBZHFJZ1lnQVVFWWFoQzVDQ0FGRUJZRVFBTkFJQWtnQXlBQ0VLd1VBa0FnQlNBQ0VCRW9BZ0FFUUNBRklBSVFFU2dDQUNJSUlBQWdDQ2dDQUNnQ0NCRUJBQXdCQ3lBSkVJMElDeUFDUVFGcUlnSWdCUkFXU1EwQUN3c2dCaENpQ0NBSkVLc1VJQU1RTmlBRUVEWWdCeEEySUFVUU5pQUJRZEFBYWlRQVFRQUw0Z0lCQW44Z0FpZ0NHQVJBSUFJb0FoZ2lBU0FBSUFFb0FnQW9BZ2dSQVFBTElBQkJPR29pQVNBQ0lBSW9BZ0FvQWdBUkFBQW9BZ2dnQWlBQ0tBSUFLQUlBRVFBQUVPQUNFTjBDQWtBZ0FpZ0NGRUcrZkdvaUEwRUdTdzBBQWtBQ1FBSkFBa0FDUUNBRFFRRnJEZ1lEQVFJRkJRUUFDeUFCRUxzVURBUUxJQUJCK0FkcUVPY1VMUUFBQkVBZ0FTQUJRWWdEYWhDTUNDZ0NDQkRjQWlBQkVOa0ZEQVFMSUFFUWpRZ01Bd3NnQVNBQlFZZ0RhaENNQ0NnQ0RCRGNBaUFCRU5rRkRBSUxRUUFoQXdKQUlBSW9BaGhGRFFBZ0FTQUFJQUlvQWhnaUFpQUNLQUlBS0FKNEVRQUFJZ0lRb1FFaUF4QmlJQUFvQWlnb0FoQkdEUUFnQVJCeklBRWdBVUVISUFBb0FpZ29BaEJCQUVFQUVQSURJZ1FRZ0FNZ0FDQUNJQU1Rc3dRZ0FTQUVRUUJCLy8vLy93ZEJBQkR5QkNFREN5QUJRUUFnQXhDVkRDQUJFSE1NQVFzZ0FVR0VLaENxQkNBQlFiem9FUkJDSUFGQmd5b1FJUXRCQUF2QkFnRUNmeU1BUVJCcklnUWtBQ0FCTFFBaUJFQkJBRUVDRUVnaEF3c2dBUzBBSVFSQUlBTkJBUkJJSVFNTEFrQWdBU2dDSkVGL1JnUkFJQU5CQkJCSUlRTU1BUXNnQVNnQ0pFRUJTQTBBSUFOQkNCQklJUU1nQkNBQktBSWtOZ0lNSUFJZ0JFRU1haEJCQ3dKQUlBQW9Bb3dFRUt3REtBSUFRWUNJQkVrTkFDQUJLQUlvQkVBZ0EwRVFFRWdoQXlBRUlBRW9BaWcyQWd3Z0FpQUVRUXhxRUVFTElBRW9BaXhCZjBjRVFDQURRU0FRU0NFRElBUWdBU2dDTERZQ0RDQUNJQVJCREdvUVFRc2dBU2dDTUVFQ1R3UkFJQU5Cd0FBUVNDRURJQVFnQVNnQ01EWUNEQ0FDSUFSQkRHb1FRUXNnQVNnQ05BUkFJQU5CZ0FFUVNDRURJQVFnQVNnQ05EWUNEQ0FDSUFSQkRHb1FRUXNnQVNnQ09FVU5BQ0FEUVlBQ0VFZ2hBeUFFSUFFb0FqZzJBZ3dnQWlBRVFReHFFRUVMSUFSQkVHb2tBQ0FEQzhVRUFRZC9Jd0JCSUdzaUJ5UUFJQUJCT0dvaUFSQ3FGQ0lHS0FJRUlRVWdCaWdDRENFRUlBWW9BZ2doQ0NBQklBWW9BZ0FpQmhEY0FpQUFJQUlnQjBFUWFoQXdJZ2tRMVJVaEF5QUJJQUlnQWlnQ0FDZ0NBQkVBQUNnQ0NDQUNJQUlvQWdBb0FnQVJBQUFRNEFJUTNRSWdBU0FHRU9VQklBRWdDQ0FFSUFNZ0NSQ2VGQUpBQWtBQ1FDQUNMUUFnUlEwQUlBSW9BaGhGRFFBZ0FTQUJFTllGSWdNUTNBSWdBU0FERU9VQklBSW9BaGdpQXlBQUlBTW9BZ0FvQWdnUkFRQWdBU0FBSUFJb0FoZ2lBeUFES0FJQUtBSjRFUUFBRUtFQklBVWdDQkRTQmlBQklBVVE1UUVnQjBFQk9nQVBJQUJCK0FkcUlnVWdCMEVQYWhDNUNDQUNLQUlVQkVBZ0FpZ0NGQ0lESUFBZ0F5Z0NBQ2dDQ0JFQkFBc2dBU0FFRU53Q0lBVVFvZ2dnQVNBRUVPVUJJQUlvQWh4RkRRRWdBaWdDSENJQ0lBQWdBaWdDQUNnQ0NCRUJBQXdCQ3lBQklBSWdBaWdDQUNnQ0FCRUFBQ2dDQ0NBQ0lBSW9BZ0FvQWdBUkFBQVE0QUlRM1FJZ0FTQUZFTndDSUFkQkFUb0FEaUFBUWZnSGFpSURJQWRCRG1vUXVRZ2dBU0FGRU9VQklBSW9BaFFFUUNBQ0tBSVVJZ1VnQUNBRktBSUFLQUlJRVFFQUN5QUJJQVFRM0FJZ0F4Q2lDQ0FCSUFRUTVRRWdBaWdDSEFSQUlBSW9BaHdpQkNBQUlBUW9BZ0FvQWdnUkFRQUxJQUlvQWhoRkRRQWdBaWdDR0NJRUlBQWdCQ2dDQUNnQ0NCRUJBQ0FCSUFBZ0FpZ0NHQ0lBSUFBb0FnQW9BbmdSQUFBUW9RRWdCaUFJRU5JR0RBRUxJQUVnQmhEY0Fnc2dBU0FJRU9VQklBRkJpQU5xRUtnVUlBa1FOaUFIUVNCcUpBQkJBQXZRRVFFSmZ5TUFRU0JySWcwa0FDQUZFSU1ESVFnZ0JSQ1NCQ0VKQW45QkFDQUVFQllpREVVTkFCb2dBRUU0YWlJSElBUkJBQkFSS0FJQUVHSWhDa0VBSUF4QkFVWU5BQm9nQnlBRVFRRVFFU2dDQUJCaUN5RU9Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCbkFOTUJFQkJmeUVISUFGQjgzMXFJZ1pCL0FCTkRRNGdBVUc3Zm1vaUJVRWFTd1JBSUFGQnZnRkhEUzVCR1NFR0RDc0xRU01oQmlBRlFRRnJEaG90TFMwdExTMHRMUzB0TFMwdExTb0JBZ1FGQmdjdExRZ0pDZ01MSUFGQjVucHFJZ1pCRjAwTkRpQUJRZU44YWlJRlFRSkxCRUFnQVVHK0EwY05MVUh4S1NFRkRCVUxJQVZCQVdzT0Fnc01DZ3NDZnlBSkJFQkJ6d0JCSlNBQUxRQ1FCQnNNQVF0QkprRW5JQWdiQ3lFR0lBQkJPR29nQWlBRUtBSUFJQVFRa0FFUXdRTU1LQXNDZnlBSkJFQkIwQUJCS0NBQUxRQ1FCQnNNQVF0QktVRXFJQWdiQ3lFR0lBQkJPR29nQWlBRUtBSUFJQVFRa0FFUXdRTU1Kd3RCR2lFR0RDWUxBbjhnQ1FSQVFkRUFRU3NnQUMwQWtBUWJEQUVMUVN4QkxTQUlHd3NoQmlBQVFUaHFJZ1VnQWlBRUtBSUFJQVJCQVJBUkVNRURJQVVnQWlBRUtBSUFJQVJCQWhBUkVNRUREQ1VMUVM0aEJrRUFJUVVnQUVFNGFpSUlJQWdnQ0NBRUVKQUJLQUlBRUdJUXV3SVFnaFVFUUNBRUtBSUFJQVFRa0FFUUxrRi9JUVpCcVFFaEJRc2dDQ0FDSUFRb0FnQWdCQkNRQVJEQkF5QUdRUUJJRFE4TUpBc2dBRUU0YWlBQ0lBUW9BZ0FnQkJDUUFSREJBMEV3SVFZTUl3c2dBRUU0YWlJRklBSWdCRUVBRUJFZ0JFRUNFQkVRd1FNZ0JTQUNJQVJCQVJBUklBUkJBaEFSRU1FRFFURWhCZ3dpQzBFeUlRWU1JUXNnQUVFNGFpSURJQU1nRGhDd0FTSU9FT0lGSWdWQkVFWUVRQ0FEUVpucEVSQkNDeUFESUFSQkFCQVJLQUlBRU1nQklRWkJBU0VNSUFNZ0JVRUJFSnNJSVFzZ0F5QUtBbjhnQmtFQlJ3UkFJQU1nQ3lBRElBUkJBQkFSS0FJQUVNZ0JFTEVCSVFzTElBc0xFTnNHSVFOQk5DRUdEQ0FMUVRVaEJnd2ZDeUFBUWMzbUVSRDhBZ3dMQ3lBQVFjM21FUkQ4QWlFSFFRSWhCZ3dkQ3lBQVFjM21FUkQ4QWlFSFFRTWhCZ3djQ3lBR1FRRnJEbndCR1I0WUZ4WUxDZ2tlSGg0ZUhoNGVIaDRlRXhJSEhoNGVIaDRlSGg0ZUhoNFZGQjRlSGg0ZUhnMGVIaDRlSGg0ZUhoNGVIaDRlSGd3ZUhoNE1IaDRlSGg0TURBd01IaDRlSGg0ZUhoNGVIaDRlSGg0ZUhoNGVIaDRlREF3TURBd01EQXdlSGg0ZURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01HZ3RCeVFFaEJVR1ZBU0VIQWtBQ1FDQUdRUUZyRGhjQUVBOEJCeDhmSHg4Zkh4OGZIeDhmSHdVR0h4OEVBeEVMUVpZQklRY01FQXRCeXdGQnlnRWdDQnNoQlF3RkMwR1VBU0VGSUFrTkJDQUFRVGhxSWdZZ0JFRUFFQkVvQWdBUXlBRWhDRUVCSVFjZ0JpQUdRWVFCSUFZZ0JFRUFFQkVvQWdBUVlpQUVRUUFRRVNnQ0FDQUVRUUVRRVNnQ0FCQ3FBU0lKSUFJUWhnRWFJQVlnQ1NBRFFRQVFyd0VoQlNBSVFRSklEUnNEUUNBR0lBVWdBaENHQVJvZ0JrR0FBU0FESUFVZ0JpQUpJQU1nQnhDdkFSQ3FBU0VGSUFkQkFXb2lCeUFJUncwQUN3d2FDeUFBUVRocVFiTXBJQVFRMVFZTUd3c2dBRUU0YWtIZ0tTQUVFTlVHREJvTElBQkJPR3BCMlNrZ0JCRFZCZ3daQ3lBQVFUaHFFUG9DSVFOQjFpa2hCUXNnREVFQ1RRUkFJQVVoQnlBTVFRSnJEUmdNQ3dzZ0FFRTRhaUFGSUFNZ0JCRHdBeUVGREJVTElBVkJBMFlFUUNBQVFUaHFRWXZtRVJCQ0N5QUFRWmJlRVJEOEFnc2hCMEVCSVFZTUVndEJCMEVJUVFrZ0NCc2dDUnNoQmlBQVFiTHBFUkQ4QWlFSERCRUxRUVJCQlVFR0lBZ2JJQWtiSVFZZ0FFR3k2UkVRL0FJaEJ3d1FDMEVCUVFKQkF5QUlHeUFKR3lFR0lBQkJzdWtSRVB3Q0lRY01Ed3NnQUNBQklBTWdCQ0FGRUtVSUlRc01FUXNnQUVHM0FpQURJQVFnQlJDd0RDRUxEQkFMUVpnQklRY01BUXRCbHdFaEJ3c2dBRUU0YWlBS0lBb1Eyd1loQXdzZ0FFRTRhaUFISUFNZ0JFRUFFQkVvQWdBZ0JFRUJFQkVvQWdBUXFnRWhCUXdLQzBIT0FDRUdJQVZCQTBjTkNDQUFRVGhxUVl2bUVSQkNEQWdMUWMwQUlRWWdCVUVEUncwSElBQkJPR3BCaStZUkVFSU1Cd3NnQUVFNGFpSUJJQUVnQkVFQUVCRW9BZ0FRendFaUFpQUJJQVJCQVJBUktBSUFFTThCSUFFZ0JFRUNFQkVvQWdBUXp3RnlJZ01RemdKQmdNQUFRWUNBQVJCSVFZQWdFRWhCZ0lBQ0VFZ2dBM0VFUUNBQlFlRXBFQ0VMSUFBb0Fvd0VMUUNJQkVVZ0FrRUJSM0lOQ1NBQlFlSXBFQ0VNQ1FzZ0FFRTRhaUlCSUFFZ0JFRUFFQkVvQWdBUXp3RWlBaUFCSUFSQkFSQVJLQUlBRU04QklnTWdBU0FFUVFJUUVTZ0NBQkRQQVNBQklBUkJBeEFSS0FJQUVNOEJjaUlFRVBFRFFZREFBRUdBZ0FFUVNFR0FJQkJJUVlDQUFoQklJQVJ4QkVBZ0FVSGhLUkFoQ3lBQUtBS01CQzBBaUFSRklBSkJBVWRCQUNBRFFRRkhHM0lOQ0NBQlFlSXBFQ0VNQ0F0QnlBQWhCZ3dFQzBISEFDRUdEQU1MUWNZQUlRWU1BZ3RCeEFBaEJnd0JDMEhEQUNFR0N5QUVFRUFoQlNBTklBUVFRRFlDQ0NBTlFSQnFJQVVnRFVFSWFpQU1FTUVGRUlFVklRZ2dBRUU0YWlBRElBZEJmMHdFZnlBQUtBS1VCQVVnQndzZ0JpQUlFSklJSVFVZ0NCQTJDeUFCUWVaNmFpSURRUU5MQkVBZ0FVSGVBVWNOQVNBQVFUaHFJZ0VnQVNBT0VMc0NFTjhDUVJaR0lRY2dBU0FGSUF0QkFSQ3ZBU0VESUFFZ0J3Ui9JQUZCN3dBZ0RpQURFUGdCQlNBREN5QUVRUUVRRVNnQ0FFRUFRZi8vLy84SFFRQVF6d0lnQVNBRklBcEJBQkN2QVNFRkRBRUxBa0FDUUNBRFFRSnJEZ0lCQVFBTElBQkJPR29pQVNBQklBVWdDa0VCRUs4QklBUkJBaEFSS0FJQVFRQkIvLy8vL3dkQkFCRFBBaUFCSUFVZ0NrRUFFSzhCSVFVTUFRc2dBRUU0YWlJQklBRWdCU0FLUVFBUXJ3RWdCRUVERUJFb0FnQkJBRUgvLy8vL0IwRUFFTThDSUFFZ0FTQUZJQXBCQVJDdkFTQUVRUUlRRVNnQ0FFRUFRZi8vLy84SFFRQVF6d0lMSUFCQk9Hb2dCU0FDRUlZQklRc0xJQTFCSUdva0FDQUxDOFVJQVFOL0l3QkJJR3NpQkNRQUlBQW9Bb3dFTFFDSUJDRUZBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFGQnJRVk1CRUFnQVVIVmZXb2lCa0VYVFEwR0lBRkJ3WHhxSWdWQkFrc0VRQ0FCUWFNRFJ3MEtJQVJCRUdvUU1DRUZJQUJCT0dvaUFTQUJJQU1nQUVIajVoRVEvQUpCQXlBRkVKSUlJQUlRaGdFaEFTQUZFRFlNSWdzZ0JVRUJhdzRDQWdNQkN5QUJRYjE2YWlJQ1FRUk5EUVlnQVVIU2Vtb2lBa0VCVFEwSElBRkJpM3BxSWdGQkFVc05DQ0FCUVFGckRRTU1CQXNnQUVFNGFrSDBLUkNxQkF3ZUN5QUFRVGhxUWZVcEVLb0VEQjBMSUFSQkVHb1FNQ0VDSUFCQk9Hb2lBRUc4NkJFUVFpQUFRWU1xRUNFZ0FFR0ZLaUFESUFJUThBTWhBU0FDRURZTUhRc2dCRUVRYWhBd0lRSWdCQ0FBUVRocUlnQkJBMEVBRUhRMkFnd2dBaUFFUVF4cUVFRWdBRUhnNkJFUVFpQUFRYjhuRUNFZ0FFSEFKeUFESUFJUThBTWhBU0FDRURZTUhBc2dCRUVRYWhBd0lRSWdCQ0FBUVRocUlnQkJBVUVBRUhRMkFnd2dBaUFFUVF4cUVFRWdBRUhnNkJFUVFpQUFRYjhuRUNFZ0FFSEFKeUFESUFJUThBTWhBU0FDRURZTUd3dEJCVUVCSUFVYklRRWdCa0VCYXc0WEJnSUNHQmNURmhJVkZBSUNBZ0lDQWdJTUN3b0pDQVVIQ3lBQ1FRRnJEZ1FQRGcwTUVBc2dBa0VCYXcwQ0RBRUxJQUFvQWpRZ0JFRVFha0gxNkJFUWFTSUFFS0FESUFBUUlCb01GZ3NnQUVFNGFrSFlLUkNxQkF3VkN5QUFRVGhxUWRjcEVLb0VEQlFMSUFCQndnSWdBeUFFUVJCcUVEQWlBRUVBRUtVSUlRRWdBQkEyREJRTElBQkJPR3BCMndFUXFnUU1FZ3NnQUVFNGFrSGFBUkNxQkF3UkN5QUFRVGhxUVFOQmdBSkJDQkJJRU00Q0RCQUxJQUJCT0dwQkEwR0FFRUVJRUVnUXpnSU1Ed3NnQUVFNGFrRURRY0FBUVFnUVNCRE9BZ3dPQ3lBQVFUaHFRUU5Cd0JwQkNCQklFTTRDREEwTElBQkJPR3BCQTBFRFFjQWFRUWdRU0JEeEF3d01DeUFBUVRocVFRSkJBa0dBQWtFSUVFZ1E4UU1NQ3dzZ0FFRTRha0VDUVlBQ1FRZ1FTQkRPQWd3S0N5QUFRVGhxUVFKQkFVSEFBRUdBRUJCSVFRZ1FTQkR4QXd3SkN5QUFRVGhxUVFGQndBQkJnQkFRU0VFSUVFZ1F6Z0lNQ0FzZ0FFRTRha0VDUVFGQndCcEJDQkJJRVBFRERBY0xJQUJCT0dvZ0FVR0FFRUVJRUVnUXpnSU1CZ3NnQUVFNGFpQUJRWUFJUVFnUVNCRE9BZ3dGQ3lBQVFUaHFRUUpCd0JwQkNCQklFTTRDREFRTElBQkJPR29nQVVHQUFrRUlFRWdRemdJTUF3c2dBRUU0YWlBQlFjQUFRUWdRU0JET0Fnd0NDeUFBUVRocUlBRkJ3QnBCQ0JCSUVNNENEQUVMSUFBb0Fvd0VLQUlBUVFGR0JFQWdBRUU0YWlFQ0lBQW9Bb3dFTFFDSUJBUkFJQUpCQWtFQ1FZQWdRUWdRU0JEeEF5QUNRZUVwRUNFTUFndEJBQ0VCSUFKQkFrRUVRUUFROFFNTUFnc2dBRUU0YWtFQ1FRSkJnQUpCQ0JCSUVQRURDMEVBSVFFTElBUkJJR29rQUNBQkM2RUlBUTUvSXdCQmtBSnJJZ01rQUNBQVFkUUVhaUFEUWFnQmFpQUJJQUVvQWdBb0FzZ0JFUUFBRUJNUWFTSUNFT01HS0FJQUlRb2dBaEFnR2lBS0JFQWdBU0FCS0FJQUtBTEFBUkVBQUNFSklBRWdBU2dDQUNnQzJBRVJBQUFoQ0NBRFFZQUNhaEF3SVFzZ0EwSHdBV29RTUNFTklBTkI0QUZxRURBaEJ5QUpFQlpCQVU0RVFDQUFRVGhxSVFSQkFDRUNBMEFnQXlBSklBSVFFU2dDQUNJR0lBWW9BZ0FvQWd3UkFBQWlCaUFHS0FJQUtBSjRFUUFBTmdLb0FTQUhJQU5CcUFGcUVFRWdCQkJ6SUFrZ0FoQVJLQUlBSWdZZ0FDQUdLQUlBS0FJSUVRRUFBa0FDUUNBQUlBZ2dBaEFSS0FJQUlBY2dBaEFSS0FJQUlBb3RBRXdnQWtWeEVOOEZSUVJBSUFnZ0FoQVJLQUlBRU40RlJRMEJDeUFEUWFnQmFpQUVFTDRDSUFzZ0EwR29BV29RaUJVZ0EwR29BV29RdUFFTUFRc2dBeUFBSUFjUWtBRW9BZ0FRb1FFMkFxZ0JJQTBnQTBHb0FXb1FRUXNnQWtFQmFpSUNJQWtRRmtnTkFBc0xJQU5CcUFGcUVEQWhEaUFKRUJaQkFVNEVRQ0FBUVRocUlRUkJBQ0VDUVFBaEJnTkFBa0FDUUFKQUlBQWdDQ0FDRUJFb0FnQWdCeUFDRUJFb0FnQWdDaTBBVENBQ1JYRVEzd1VFUUNBRUlBTkI4QUJxSUFzZ0RCQ2tDQkQ4QXlJRkVMUUVJQVVRdUFFZ0F5QUVFUEFFTmdLa0FRd0JDeUFJSUFJUUVTZ0NBQkRlQlNFUElBb2dBaENuRENFRklBOUZEUUVnQXlBRVFRY2dCQ0FGRUxBQlFiTG9FVUVBRVBJRE5nS2tBU0FJSUFJUUVTZ0NBRUVOUndSQUlBZ2dBaEFSS0FJQVFROUhEUUVMSUFRZ0EwRTRhaUFMSUF3UXBBZ1EvQU1pQlJDMEJDQUZFTGdCSUFBZ0J5QUNFQkVvQWdBUW9RRWhCU0FFRUhNZ0JDQURLQUtrQVJDQUF5QUFJQWNnQWhBUktBSUFJQVVRc3dRTElBeEJBV29oREF3QkN5QURBbjhnQUNBSElBSVFFU2dDQUJDL0FTQUZSd1JBSUFSQkJ5QUtJQUlRcHd4QnVPZ1JRUUFROGdNaEJTQUVFSE1nQkNBRkVJQURJQUFnQnlBQ0VCRW9BZ0FnRFNBR0VCRW9BZ0FRc3dRZ0JDQUZRUUJCLy8vLy93ZEJBQkR5QkF3QkN5QU5JQVlRRVNnQ0FBczJBcVFCSUFaQkFXb2hCZ3NnRGlBRFFhUUJhaEJISUFKQkFXb2lBaUFKRUJaSURRQUxDeUFBUVRocUlnUWdCQ0FLSUE0UXN4UWlCaUFCSUFFb0FnQW9BbmdSQUFBUS9nUVFoZ0VhSUFrUUZrRUJUZ1JBUVFBaEFrRUFJUUVEUUFKQUFrQWdBQ0FJSUFJUUVTZ0NBQ0FISUFJUUVTZ0NBQ0FLTFFCTUlBSkZjUkRmQlEwQUlBZ2dBaEFSS0FJQUVONEZSUTBCSUFnZ0FoQVJLQUlBUVE1SEJFQWdDQ0FDRUJFb0FnQkJEMGNOQVFzZ0JDQU9JQUlRRVNnQ0FFRUFRZi8vLy84SFFRQVE4Z1FoRENBRUlBTWdDeUFCRUtRSUVQd0RJZ1VRdEFRZ0JSQzRBU0FBSUFjZ0FoQVJLQUlBSUF3UXN3UUxJQUZCQVdvaEFRc2dBa0VCYWlJQ0lBa1FGa2dOQUFzTElBNFFOaUFIRURZZ0RSQTJJQXNRcEF3Z0N4RDRGQXNnQTBHUUFtb2tBQ0FHQzFBQkFYOGpBRUVRYXlJQ0pBQWdBQ0FBUWRRRWFpQUNJQUVnQVNnQ0FDZ0N5QUVSQUFBUUV4QnBJZ0VRNHdZb0FnQTJBaWdnQVJBZ0dpQUFRVGhxSUFBb0FpZ1FxQXdRNVFFZ0FrRVFhaVFBQzJFQkFuOGdBUkFXUVFGT0JFQURRQUpBSUFFZ0F4QVJLQUlBSWdJZ0FpZ0NBQ2dDR0JFQUFDSUNSUTBBSUFJb0FtaEJCRWNFUUNBQ0tBSm9RUUpIRFFFTElBSWdBQ0FDS0FJQUtBSUlFUUVBQ3lBRFFRRnFJZ01nQVJBV1NBMEFDd3NMY0FFQ2Z5QUFRVGhxSUFBb0FpUVF3Z2dRNVFFZ0FSQVdRUUZPQkVBRFFBSkFJQUVnQXhBUktBSUFJZ0lnQWlnQ0FDZ0NHQkVBQUNJQ1JRMEFJQUlvQW1oQkJFWU5BQ0FDS0FKb1FRSkdEUUFnQWlBQUlBSW9BZ0FvQWdnUkFRQUxJQU5CQVdvaUF5QUJFQlpJRFFBTEN3dW9CZ0VOZnlNQVFVQnFJZ01rQUNBRElBQTJBamdnQVJBV1FRRk9CRUFnQUVHc0JHb2hEQ0FBUWRRRWFpRU5JQUJCT0dvaEJ5QUFRY0FFYWlFT0EwQUNRQ0FCSUFzUUVTZ0NBQ0lDSUFJb0FnQW9BaGdSQUFBaUFrVU5BQ0FDS0FKb1FRUkhEUUFnQUNBQ0VOa01EUUFnQTBFb2FoQXdJUWxCQUNFRUlBTkJHR29RTUNJS0lBSWdBaWdDQUNnQ3ZBRVJBQUJCQUJBUktBSUFJZ1lnQmlnQ0FDZ0NHQkVBQUNJR0lBWW9BZ0FvQXJ3QkVRQUFJZ1lRRmhDS0ZTQUdFQlpCQUVvRVFBTkFJQU1nQUNBR0lBUVFFU2dDQUNJRklBVW9BZ0FvQWd3UkFBQWlCU0FGS0FJQUtBSjRFUUFBSWdVUXZ3RTJBaFFDUUNBQUlBVWdCU2dDQUNnQ0xCRUFBQ2dDQkVFL2NTQUZRUUFRM3dVRVFDQURJQWNnQUNBRkVNWU1JQU1vQWhRUTJ3VTJBaFFNQVFzZ0JTQUZLQUlBS0FJc0VRQUFLQUlFUVQ5eEVONEZCRUFnQXlBSFFRY2dBeWdDRkJEYkJUWUNGQXdCQ3lBRElBWWdCQkFSS0FJQUlnZ2dDQ2dDQUNnQ01CRUFBQ0lJSUFnb0FnQW9BcmdCRVFBQU5nSVFJQU1nRGlBRFFSQnFFTWtOQ3lBRFFUaHFJQW9nQkJEVUF5QUZJQUFvQW93RUxRQ0lCQkNKRlNBSklBTkJGR29RUnlBRVFRRnFJZ1FnQmhBV1NBMEFDd3NnQnlBQ0lBSW9BZ0FvQW5nUkFBQVEvZ1FnQUNBQ0lBSW9BZ0FvQW5nUkFBQVF2d0VnQWlBQ0tBSUFLQUxJQVJFQUFCQVRJQWtnQ2lBRFFSUnFFSllNSVFVZ0RTQURJQUlnQWlnQ0FDZ0N5QUVSQUFBUUV4QnBJZ0lRNHdZZ0JUWUNBQ0FDRUNBYVFRQWhBaUFHRUJaQkFFb0VRQU5BSUFVZ0FoQ3FEQ0VFSUFNZ0JpQUNFQkVvQWdBaUNDQUlLQUlBS0FJd0VRQUFJZ2dnQ0NnQ0FDZ0N1QUVSQUFBMkFnQWdEQ0FERU00TUlBUTJBZ0FnQnlBRklBSVFxZ3dnQmlBQ0VCRW9BZ0FpQkNBRUtBSUFLQUl3RVFBQUlnUWdCQ2dDQUNnQ3dBRVJBQUFRRXhEYUJTQUdJQUlRRVNnQ0FDSUVJQVFvQWdBb0Fnd1JBQUFpQkNBRUtBSUFLQUo0RVFBQUlnUVF4Z0lFUUNBSFFTY1FJUXNnQkJDdkFnUkFJQWRCRmhBaEN5QUVFTEFDQkVBZ0IwRUpFQ0VMSUFKQkFXb2lBaUFHRUJaSURRQUxDeUFLRUtrTUlBa1FOZ3NnQzBFQmFpSUxJQUVRRmtnTkFBc0xJQU5CUUdza0FBdXdJUUVQZnlNQVFhQUNheUlESkFBZ0F5QUNOZ0tjQWlBRFFaQUNhaUFBUVRocUlnWVE2UVVoRGlBREtBS2NBaUlDSUFJb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FJc0VRQUFFT1lCQkVBZ0RoQ0VCUXNnQTBFQU5nS01BaUFESUFOQm5BSnFOZ0tFQWlBRElBTkJqQUpxTmdLQUFpQURJQUEyQW9nQ0FrQWdBQ0FES0FLY0FoRGNEQ0lDQkVBZ0JoQnpJQVlnQWhDT0Fnd0JDeUFES0FLY0FpZ0NhRUhLQkVZTkFDQURLQUtjQWlnQ2FFSE1CRVlOQUNBREtBS2NBaWdDYUVIV0JFWU5BQ0FEUWZnQmFoQ0JCU0VOSUFNb0Fwd0NFTDhFRUlNRklReEJBQ0VDUVFFaENRSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBbjhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBTW9BcHdDS0FKb0lnUkJwUVZNQkVBZ0JFSHlmV29pQjBHbUFrME5DQUpBSUFSQjUzNXFJZ2RCRUVzRVFDQUVRWDlxSWdSQkJFME5BUXdYQzBFQUlRRWdCMEVCYXc0UUZ4QVhGeGNYRnhjWEJ3Y0hCd2NIQkJBTElBUkJBV3NPQkFJRkJCY0JDeUFFUWRwNmFpSUVRU0ZMRFJSQkFDRUJJQVJCQm1zT0hBZ1ZDQWdJQ0JVVkZSVVZGUlVWRlJVVkZSVVZGUlVWQ0FnSUNBZ0dDMEVCSVFnZ0FDQUFLQUl3UVFGQmZ5QUFMUUFFRzJvaUFUWUNNQ0FCUVFGSERSVWdBQ0FES0FLY0FpSUJJQUVvQWdBb0FoZ1JBQUFpQVNBQktBSUFLQUs4QVJFQUFCRGRGU0FBSUFNb0Fwd0NJZ0VnQVNnQ0FDZ0NHQkVBQUNJQklBRW9BZ0FvQXJ3QkVRQUFFTndWSUFBZ0F5Z0NuQUlpQUNBQUtBSUFLQUlZRVFBQUlnQWdBQ2dDQUNnQ3ZBRVJBQUFRMnhVTUVnc2dBQ0FCUlRvQS9nTkJBU0VJREJRTElBTW9BcHdDSWdFZ0FTZ0NBQ2dDdkFFUkFBQWlBUkFXUVFGSURSQURRQ0FCSUFJUUVTZ0NBQ0lFSUFBZ0JDZ0NBQ2dDQ0JFQkFDQUNRUUZxSWdJZ0FSQVdTQTBBQ3d3VEN5QUJSUVJBSUFBZ0F5Z0NuQUlRMlF3RVFFRUJJUWdnQUVFQk9nRDhBeUFHSUFBb0FpUVF3Z2dRNVFFZ0FDQUFLQUlrTmdJb0RCUUxJQUFnQXlnQ25BSVEyaFZCQVNFSURCTUxJQUF0QVB3REJFQWdBRUVCT2dEOUF3c2dCaENVRENBQVFRQTZBUHdEUVFFaENBd1NDeUFHSUFNb0Fwd0NJZ0VnQVNnQ0FDZ0NBQkVBQUNnQ0NDQURLQUtjQWlJQklBRW9BZ0FvQWdBUkFBQVE0QUlRM1FJQ1FDQURLQUtjQWlJQklBRW9BZ0FvQXRBQkVRQUFSUTBBSUFBZ0F5Z0NuQUlRMlJVaUFVVU5BQ0FHRUhNZ0JpQUJFSTRDREE4TElBQW9BalFnQTBHUUFXcEJ4T2NSRUdraUFCQ2dBeUFBRUNBYURBNExJQU1vQXB3Q0tBSm9HaUFES0FLY0FpZ0NhQ0lDUWQxK2FpSUVRUUZOQkVCQkFDRUpJQVJCQVdzTkVFR2tBU0VDREFzTElBTW9BcHdDS0FKb0lRSU1DZ3NnQmtIUUt4QWhJQVpCcWVZUkVFSWdBeWdDbkFJb0FtZ2hBZ3dOQzBFQUlRRUNRQ0FIUVFGckRxWUNEZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGdjT0RnNE9EZ0VCRGc0QkFRRUJBUUVCRGc0T0RnNE9EZ0VCQVFFQkRnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0REF3TURBd01EQXdZRkRnNE9BZ0lDQWdJQ0FnSUNEZzRCQVE0QUFBNE9EZzRPRGc0T0Rnc0xDd3NMQ3dzTEN3c0xDd3NMQ2dvS0Nnb0tDZ29LQ3dzTEN3c0xDd3NMQ3dzTEN3c0xDd3NMQ3dzTEN3c0xDd3NMQ3dzTENnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0N3c0xDd29LQ2dvS0Nnb0tDZ3NMRGdzTENBc2dCa0dpMmhFUVFndEJBUXdDQ3lBR1FmYm5FUkJDSUFaQjNTSVFJUXRCQVNFSVFRQUxJUUVNQ1F0QkFTRUlDeUFJSVFGQkFTRUlEQWNMSUFRaEFnd0dDMEdaQVVFQUlBTW9BcHdDSWdFZ0FTZ0NBQ2dDdkFFUkFBQkJBQkFSS0FJQUlnRWdBU2dDQUNnQ0RCRUFBQ0lCSUFFb0FnQW9BcEFCRVFBQVFRRkdHeUVDREFRTFFRQWhDUXdFQzBFQklRZ0xJQVlnQXlnQ25BSWlBU0FCS0FJQUtBSUFFUUFBS0FJSUlBTW9BcHdDSWdFZ0FTZ0NBQ2dDQUJFQUFCRGdBaERkQWlBRFFaQUJhaEF3SVFFZ0FDQURLQUtjQWlBQklBMFEyQXdDUUNBREtBS2NBaWdDYUVHeEJFWUVRQ0FHUWRZQUlBTkJnQUpxRUtVRElBRVE4QU1oQUF3QkN3SkFBa0FnQXlnQ25BSW9BbWhCc0FSR0RRQWdBeWdDbkFJb0FtaEJ0QVJHRFFBZ0F5Z0NuQUlpQWlBQ0tBSUFLQUo0RVFBQUlnSWdBaWdDQUNnQ2NCRUFBRVVOQVFzZ0EwRVlhaEF3SVFKQkFDRUlJQUVRRmtFQVNnUkFBMEFnQWlBQklBZ1FFUkJISUFoQkFXb2lDQ0FCRUJaSURRQUxDeUFBSUFOQmdBSnFFS1VESUFOQjZBRnFJQUlRZ0FVaUNCQzlDQ0VBSUFnUU5pQUNFRFlNQVFzZ0EwR0FBbW9RcFFNaEFDQUlCRUFnQmlBTUlBRWdBQkN1RkNFQURBRUxJQVlnRENBQklBQVFrUWdoQUFzZ0JoQnpJQVlnQUJDT0FpQUJFRFlMUVFBaENBd0NDMEVBSVFFTElBTW9BcHdDSWdRZ0JDZ0NBQ2dDdkFFUkFBQWhCeUFDQkVCQkFDRUlJQWRCQUJBUktBSUFJZ0VnQVNnQ0FDZ0NEQkVBQUNFQklBTW9BcHdDSWdRZ0JDZ0NBQ2dDdkFFUkFBQkJBUkFSS0FJQUlnUWdCQ2dDQUNnQ0RCRUFBQ0VFSUFZUWN5QUJJQUFnQVNnQ0FDZ0NDQkVCQUNBQUlBRWdBU2dDQUNnQ2VCRUFBQkNoQVNFSElBWVFjeUFFSUFBZ0JDZ0NBQ2dDQ0JFQkFDQUFJQVFnQkNnQ0FDZ0NlQkVBQUJDaEFTRUVJQVlnQXlnQ25BSWlDeUFMS0FJQUtBSUFFUUFBS0FJSUlBTW9BcHdDSWdzZ0N5Z0NBQ2dDQUJFQUFCRGdBaERkQWlBQUlBSWdBMEdRQVdvZ0RDQURLQUtjQWlJQ0lBSW9BZ0FvQW5nUkFBQWlBaUFDS0FJQUtBSXNFUUFBRU9jRklBQWdBeWdDbkFJaUFDQUFLQUlBS0FKNEVRQUFJZ0FnQUNnQ0FDZ0NMQkVBQUJEN0F4RG1CU0FEUVlBQ2FoQ2xBeUFISUFRZ0FTQUJLQUlBS0FKNEVRQUFJZ0FnQUNnQ0FDZ0NIQkVBQUNBSkVPUUdJUUFnQmhCeklBWWdBQkNPQWd3QkN5QURRZGdCYWhBd0lRa2dBMEhJQVdvUU1DRUxJQWNRRmtFQVNnUkFRUUFoQkFOQVFRQWhBZ0pBQWtBQ1FBSkFBa0FDUUNBREtBS2NBaWdDYUNJRlFhTURUQVJBSUFWQjMzMXFRUU5KRFFFZ0JVSFVBVVlOQlNBRlFkNEJSdzBHREFVTElBVkIzSHhxSWdwQkdVME5BeUFGUWVaNmFpSUZRUU5MRFFVZ0JVRUNhdzRDQWdJQkN5QUVEUVJCQVNFQ0lBZEJBQkFSS0FJQUlnVWdCU2dDQUNnQ0VCRUFBRVVOQkNBSFFRQVFFU2dDQUNJRklBVW9BZ0FvQWhBUkFBQW9BbWhCdEFGSERRUWdBeUFBSUFkQkFCQVJLQUlBSWdVZ0JTZ0NBQ2dDSUJFQUFDSUZJQVVvQWdBb0FzQUJFUUFBSWdVZ0JTZ0NBQ2dDZUJFQUFCQy9BVFlDakFJTUJBc2dCRUVDUmlFQ0RBTUxJQVJCQVVzaEFnd0NDd0pBQWtBZ0NrRUthdzRRQXdNREFRRUJBUUVCQVFFQkF3TUFBZ0VMSUFSQkFra2hBZ3dDQ3lBRVJTRUNEQUVMSUFSQkFVWWhBZ3NnQmhCekFrQUNRQ0FFRFFBZ0F5Z0NqQUpGRFFBZ0IwRUFFQkVvQWdBaUJTQUZLQUlBS0FJZ0VRQUFJZ1VnQlNnQ0FDZ0N3QUVSQUFBaUJTQUFJQVVvQWdBb0FnZ1JBUUFNQVFzZ0J5QUVFQkVvQWdBaUJTQUFJQVVvQWdBb0FnZ1JBUUFMQWtBQ1FDQURLQUtjQWlnQ2FFRzhBMGNFUUNBREtBS2NBaWdDYUVHOUEwY05BUXNnQkVGL2FpSUZRUUZMRFFBZ0JVRUJhMFVOQVNBRFFaQUJhaUFHRUw0Q0lBWVFjeUFIUVFJUUVTZ0NBQ0lGSUFBZ0JTZ0NBQ2dDQ0JFQkFDQUFJQWRCQWhBUktBSUFJZ1VnQlNnQ0FDZ0NEQkVBQUNJRklBVW9BZ0FvQW5nUkFBQVFvUUVoQlNBR0lBTkIyQUJxSUFOQmtBRnFFUHdESWdvUXRBUWdDaEM0QVNBRFFkQUFhaUFIUVFFUUVTZ0NBQ0lLSUFvb0FnQW9BZ3dSQUFBaUNpQUtLQUlBS0FKNEVRQUFFT1FCSUFkQkFSQVJLQUlBSWdvZ0NpZ0NBQ2dDREJFQUFDSUtJQW9vQWdBb0FuZ1JBQUFRaGdRaENpQURJQU1vQWxBMkFnUWdCaUFGSUFOQkJHb2dDaENDQlNBRFFSaHFJQVlRdmdJZ0F5QURLQUpJTmdKTUlBTkJHR29RdUFFZ0EwRVlhaUFHRUw0Q0lBTW9Ba1FoQ2lBRFFSaHFFTGdCSUFBZ0EwSE1BR29RdkFnaEJTQURLQUtjQWlnQ2FDRVBJQU1vQXB3Q0tBSm9JUkFnQTBFWWFpQUdFTDRDSUFZZ0F5Z0NHQkMyQkNFUklBTkJHR29RdUFFZ0N5QURRUmhxUVFBZ0JVRjNjU0FGSUE5QnZBTkdHeUlGUVc5eElBVWdFRUc5QTBZYklnVkJBbklnQlNBUlFlVXBSaHNpQlJCMUVLUURJQVZCQW5FRVFDQUxJQU5CR0dwQkFDQUtFSFVRcEFNTFFRaEJFQkJJSUFWeEJFQWdDeUFEUVJocVFRRWdCaUFBSUFOQnpBQnFFUDhFUVFBUWRCQjFFS1FEQ3lBRFFaQUJhaEM0QVFzZ0FnUkFJQU1nQmhEd0JEWUNrQUVnQ1NBRFFaQUJhaEJCSUFOQmtBRnFJQVlRdmdJZ0F5QURMUURBQVRvQStBRWdBMEdRQVdvUXVBRWdBMEdRQVdvZ0J5QUVFQkVvQWdBaUFpQUNLQUlBS0FJTUVRQUFJZ0lnQWlnQ0FDZ0NlQkVBQUJEa0FTQURRUmhxSUEwZ0EwR1FBV29RK2dNTUFRc2dCaUFES0FLY0FpSUNJQUlvQWdBb0FnQVJBQUFvQWdnZ0F5Z0NuQUlpQWlBQ0tBSUFLQUlBRVFBQUVPQUNFTjBDSUFNZ0FDQUhJQVFRRVNnQ0FDSUNJQUlvQWdBb0Fnd1JBQUFpQWlBQ0tBSUFLQUo0RVFBQUVLRUJOZ0tRQVNBSklBTkJrQUZxRUVFTElBUkJBV29pQkNBSEVCWklEUUFMQ3lBR0lBTW9BcHdDSWdJZ0FpZ0NBQ2dDQUJFQUFDZ0NDQ0FES0FLY0FpSUNJQUlvQWdBb0FnQVJBQUFRNEFJUTNRSUNRQ0FES0FLY0FpZ0NhRUc4QTBZRVFDQURRWkFCYWhBd0lnSWdBMEVZYWtFQklBbEJBUkFSS0FJQUVIVVFwQU1nQWlBRFFSaHFRUUVnQ1VFQ0VCRW9BZ0FRZFJDa0F5QUNJQU5CR0dwQkFTQUpRUU1RRVNnQ0FCQjFFS1FESUFNZ0FoQXlOZ0lZUVFBaEJDQURRUkJxSUFOQkdHb1FaeUVJSUFzUVFDRUhJQXNRTWlFTUlBSWdDQ2dDQUNBSElBd1Exd3dnQmlBR1FlOHBJQVlnQmlBSlFRQVFFU2dDQUJCaUVMQUJJQUlRd2dNZ0NVRUFFQkVvQWdCQkFFSC8vLy8vQjBFQUVNOENJQUlRcmdNTUFRc2dBeWdDbkFJb0FtaEJ2UU5HQkVBZ0EwR1FBV29RTUNJQ0lBTkJHR3BCQVNBSlFRRVFFU2dDQUJCMUVLUURRUUFoQkNBQ0lBTkJHR3BCQVNBSlFRQVFFU2dDQUJCMUVLUURJQUlnQTBFWWFrRUJJQWxCQWhBUktBSUFFSFVRcEFNZ0FpQURRUmhxUVFFZ0NVRURFQkVvQWdBUWRSQ2tBeUFESUFJUU1qWUNHQ0FEUVFocUlBTkJHR29RWnlFSUlBc1FRQ0VISUFzUU1pRU1JQUlnQ0NnQ0FDQUhJQXdRMXd3Z0JrSHdLU0FDRUk4TUlBSVFyZ01NQVFzZ0NBUkFJQUFnQXlnQ25BSW9BbWdnQTBHQUFtb1FwUU1nQ1NBREtBS2NBaUlDSUFJb0FnQW9Bb0FCRVFBQUlBMFF1Z2doQkF3QkN3Si9JQWNRRmlJQ1FRRk5CRUFnQWtFQmF3UkFJQUFnQXlnQ25BSW9BbWdnRENBRFFZQUNhaENsQXhEWUZRd0NDeUFEUVpBQmFpQU1JQU1vQXB3Q0lnSWdBaWdDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaXdSQUFBUTV3VWdBQ0FES0FLY0FpSUNJQUlvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUlzRVFBQUVQc0RFT1lGSVFJZ0FDQURLQUtjQWlnQ2FDQUNJQU5CZ0FKcUVLVURJQWtvQWdBb0FnQWdCMEVBRUJFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDZ0FFUkFBQWdEUkRiREF3QkN5QUFJQU1vQXB3Q0tBSm9JQXdnQTBHQUFtb1FwUU1nQ1NBREtBS2NBaUlDSUFJb0FnQW9Bb0FCRVFBQUVOY1ZDeUVFSUFNb0Fvd0NSUTBBSUFBZ0RDQUhRUUFRRVNnQ0FDSUNJQUlvQWdBb0FpQVJBQUFnQkJEYURDRUVDMEVBSVFnQ1FDQUJEUUFnQkVVRVFDQUFLQUkwSUFOQmtBRnFRWmpvRVJCcElnQVFvQU1nQUJBZ0drRUJJUWdNQVFzZ0JoQnpJQVlnQkJDT0Fnc2dDeEN1QXlBSkVEWUxJQTRRNkFVZ0EwR2dBbW9rQUNBSUMrTURBUVYvSXdCQklHc2lCQ1FBSUFBb0FnZ2hBaUFBS0FJQUtBSUFJZ01nQXlnQ0FDZ0NnQUVSQUFBRVFDQUNRVGhxUVFjZ0FpQUFLQUlBS0FJQUlnTWdBeWdDQUNnQ2VCRUFBQkMvQVVFQVFRQVE4Z01oQXlBQUtBSUVJQU0yQWdBTElBQW9BZ0FvQWdBUXF3d2hBeUFFSUFBb0Fnd29BZ0FnQXlBQ1FUaHFJZ01RandnaEJRSkFJQUFvQWdBb0FnQWlBU0FCS0FJQUtBSzhBUkVBQUVVTkFDQUFLQUlBS0FJQUlnRWdBU2dDQUNnQ3ZBRVJBQUFpQVNBQ0lBRW9BZ0FvQWdnUkFRQWdBQ2dDQkNnQ0FFVU5BQ0FESUFJZ0FDZ0NBQ2dDQUNJQklBRW9BZ0FvQXJ3QkVRQUFJZ0VnQVNnQ0FDZ0NEQkVBQUNJQklBRW9BZ0FvQW5nUkFBQVFvUUVnQUNnQ0JDZ0NBRUVBUWYvLy8vOEhRUUFRendJTEFrQWdBQ2dDQUNnQ0FDSUJJQUVvQWdBb0FzQUJFUUFBUlEwQUlBVVFpUXdnQUNnQ0FDZ0NBQ0lCSUFFb0FnQW9Bc0FCRVFBQUlnRWdBaUFCS0FJQUtBSUlFUUVBSUFBb0FnUW9BZ0JGRFFBZ0F5QUNJQUFvQWdBb0FnQWlBaUFDS0FJQUtBTEFBUkVBQUNJQ0lBSW9BZ0FvQWd3UkFBQWlBaUFDS0FJQUtBSjRFUUFBRUtFQklBQW9BZ1FvQWdCQkFFSC8vLy8vQjBFQUVNOENDeUFGRUk0SUlBQW9BZ1FvQWdBRVFDQURFSE1nQXlBQUtBSUVLQUlBRUlBREN5QUVRU0JxSkFBTDdBUUJCbjhqQUVFZ2F5SUZKQUFnQUNnQ0JDRUNJQUFvQWdBb0FnQWlBU0FCS0FJQUtBSzhBUkVBQUNJQklBSWdBU2dDQUNnQ0NCRUJBQ0FDSUFBb0FnQW9BZ0FpQVNBQktBSUFLQUs4QVJFQUFDSUJJQUVvQWdBb0Fnd1JBQUFpQVNBQktBSUFLQUo0RVFBQUVLRUJJUVFnQUNnQ0FDZ0NBQ0lCSUFFb0FnQW9Bc0FCRVFBQUlnRWdBaUFCS0FJQUtBSUlFUUVBSUFJZ0FDZ0NBQ2dDQUNJQklBRW9BZ0FvQXJ3QkVRQUFJZ0VnQVNnQ0FDZ0NEQkVBQUNJQklBRW9BZ0FvQW5nUkFBQVFvUUVoQmlBQ1FUaHFJZ0VnQUNnQ0FDZ0NBQ0lESUFNb0FnQW9BZ0FSQUFBb0FnZ2dBQ2dDQUNnQ0FDSURJQU1vQWdBb0FnQVJBQUFRNEFJUTNRSUNRQ0FBS0FJQUtBSUFJZ01nQXlnQ0FDZ0NnQUVSQUFCRkRRQWdBQ2dDQ0JDdERBUkFBa0FnQWlnQ2pBUVFyQU1vQWdCQi80Y0VTdzBBSUFFZ0JCQ3ZCRVVOQUNBQlFmLy8vLzhISUFBb0Fnd29BZ0FnQVNBQkVQb0NJQUVnQkJESUFSQ3hBUkR4QkNFRElBQW9BZ3dnQXpZQ0FBc2dBU0FDSUFBb0FnQW9BZ0FpQWlBQ0tBSUFLQUo0RVFBQUVMOEJJQUFvQWd3b0FnQWdCQ0FHRU5RR0lRSWdBQ2dDRUNBQ05nSUFJQUVRY3lBQklBQW9BaEFvQWdBUWpnSU1BUXNnQVVFSElBSWdBQ2dDQUNnQ0FDSUNJQUlvQWdBb0FuZ1JBQUFRdndGQkFFRUFFUElESVFJZ0FDZ0NFQ0FDTmdJQUlBQW9BZ0FvQWdBUXF3d2hBaUFGSUFBb0Fnd29BZ0FnQWlBQkVJOElJUUlnQVNBRUlBQW9BaEFvQWdCQkFFSC8vLy8vQjBFQUVNOENJQUlRaVF3Z0FTQUdJQUFvQWhBb0FnQkJBRUgvLy8vL0IwRUFFTThDSUFJUWpnZ2dBUkJ6SUFFZ0FDZ0NFQ2dDQUJDQUF3c2dCVUVnYWlRQUM2MEJBUUYvQWtBZ0FDZ0NBQ2dDQUNJQklBRW9BZ0FvQXJ3QkVRQUFSUTBBSUFBb0FnQW9BZ0FpQVNBQktBSUFLQUxBQVJFQUFFVU5BQUovUVFFZ0FDZ0NBQ2dDQUMwQWRFVU5BQm9nQUNnQ0JCQ3RERVVOQVVFQUlBQW9BZ0FvQWdBaUFTQUJLQUlBS0FLOEFSRUFBQ0lCSUFFb0FnQW9BZ3dSQUFBUXJBeEZEUUFhSUFBb0FnQW9BZ0FpQUNBQUtBSUFLQUxBQVJFQUFDSUFJQUFvQWdBb0Fnd1JBQUFRckF3TER3dEJBQXZEQWdBakFFSFFBR3NpQVNRQUlBRWdBallDVENBQklBQTJBa1FnQVNBQlFjd0FhallDUUNBQklBRkJRR3MyQWp3Z0FTQUJRY3dBYWpZQ09DQUJRUUEyQWpRZ0FpQUNLQUlBS0FLNEFSRUFBQ0lDSUFBZ0FpZ0NBQ2dDQ0JFQkFDQUJJQUFnQVNnQ1RDSUNJQUlvQWdBb0FyZ0JFUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFCQ2hBVFlDTUNBQklBQTJBaHdnQVNBQlFUUnFOZ0lvSUFFZ0FVRXdhallDSkNBQklBRkJRR3MyQWlBZ0FTQUJRY3dBYWpZQ0dDQUJJQUEyQWhBZ0FTQUJRVEJxTmdJVUlBRWdBVUUwYWpZQ0RDQUJJQUZCekFCcU5nSUlBa0FnQVVFNGFoRGhGUVJBSUFFZ0FFRTRhaERwQlNFQUlBRW9Ba3dpQWlBQ0tBSUFLQUo0RVFBQUlnSWdBaWdDQUNnQ0xCRUFBQkRtQVFSQUlBQVFoQVVMSUFGQkdHb1E0QlVnQUJEb0JRd0JDeUFCUVFocUVOOFZDeUFCUWRBQWFpUUFRUUFMcXdvQkJIOGdBRUU0YWlJRklBTVF5UU1FUUNBRklBTVF5QU1oQndzQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRWEZxSWdoQmh3Rk5CRUJCN3dBaEJnSi9Ba0FDUUFKL0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSVFRSnJEb1lCQ0FnQUFBa0pDd0VLRGc4UUVRSURBZ01OR1F3VEV4TUZGUlVWQlJVVkZSUVVGQndjSEJzYkd4TVRFeFVGRlJVVkJSVVZGQlFVSEJ3Y0d4c2JFeE1URlJVRkZSVVZCUlVVRkJRY0hCd2JHeHNURXhNVkZSVUZGUlVWQlJRVUZCd2NIQnNiR3dRRUJBUUdCZ1lHRWhJRUJBUUVCZ1lHQmhJU0JBUUVCQVlHQmdZU0VoWVhHQmdIQ3lBRlFhc0JJQU1nQkNBQUlBVkJBRUVBRUhRZ0J4Q2hBaENxQVE4TElBVkJ0Z0VnQXlBRUlBQWdCVU1BQUFBQVFRQVErUUlnQnhDaEFoQ3FBUThMSUFGQklFWUVRQ0FGUWdCQkFCRGpCU0VHSUFWQ0FVRUFFT01GREJnTElBVkJBRUVBRUwwQ0lRWWdCVUVCUVFBUXZRSU1Gd3NnQVVFaFJnUkFJQVZDQUVFQUVQa0RJUVlnQlVJQlFRQVErUU1NRndzZ0JVRUFRUUFRZENFR0lBVkJBVUVBRUhRTUZndEI3Z0FoQmd3WEMwSDhBQ0VHSUFVdEFKQUJSUTBXSUFGQkJISkJMRVlFUUNBRlFRQkJBQkN4QkF3akN5QUJRVU5xSWdKQkJFME5HU0FCUVpsL2FpSUJRUVJMRFNBQ1FDQUJRUUZyRGdNaElTRUFDeUFGUWdCQkFCRDVBd3dpQzBIdEFDRUdEQlVMSUFWQnF3RWdBeUFFSUFBZ0JVRUFRUUFRc1FRZ0J4Q2hBaENxQVE4TElBVkJxd0VnQXlBRUlBQWdCVUVBUVFBUXNBUWdCeENoQWhDcUFROExJQVZCcXdFZ0F5QUVJQUFnQlVJQVFRQVErUU1nQnhDaEFoQ3FBUThMSUFWQnRnRWdBeUFFSUFBZ0JVUUFBQUFBQUFBQUFFRUFFTU1ESUFjUW9RSVFxZ0VQQ3lBRlFiWUJJQU1nQkNBQUlBVkRBQUFBQUVFQUVLMEVJQWNRb1FJUXFnRVBDeUFGUkFBQUFBQUFBQUFBUVFBUXd3TWhCaUFGUkFBQUFBQUFBUEEvUVFBUXd3TU1EUXNnQlVNQUFBQUFRUUFRclFRaEJpQUZRd0FBZ0Q5QkFCQ3RCQXdNQ3lBRlFRQkJBQkRsQlNFR0lBVkJBVUVBRU9VRkRBc0xJQVZCQUVFQUVMRUVJUVlnQlVFQlFRQVFzUVFNQ2dzZ0JVRUFRUUFRNUFVaEJpQUZRUUZCQUJEa0JRd0pDeUFGUVFCQkFCQ3dCQ0VHSUFWQkFVRUFFTEFFREFnTFFmTUFJUVlnQlNBREVLb0lSUTBKSUFCQjh3QWdBaUFESUFRUXNRd1BDMEh5QUNFR0RBZ0xRZkVBSVFZTUJ3c2dBQ0FCSUFRZ0J4Q1RGU0VFUWZ3QUlRWWdCUzBBa0FGRkRRWkJBQ0VDSUFGQlYyb2lCa0VhVFEwS0lBRkJzSDlxSWdGQkdrc05EeUFCUVFGckRob05Ed3NPRFE4TER3OFBEdzhQRHc4UER3OFBEZzBNRHc0TkRBNExRZmdBSVFZTUJRdEI5UUFoQmd3RUMwSDhBQ0VHSUFVZ0JCQ3ZCRVVOQXlBRkVKRVZJQVZCNitVUlFZQ0tCQkN5QVF3REN5QUZRd0FBQUFCQkFCRDVBaUVHSUFWREFBQ0FQMEVBRVBrQ0N5RUJJQUFnQmlBSEVLRUNJUVlnQlNBRElBUWdBQ0FCSUFjUW9RSWdCaERVQmd3Q0MwSHdBQ0VHQ3lBRklBWWdBeUFFRVBnQkN5RUFJQUlnQlNBRklBQWdBaWdDQUJDR0FTSUdFUDhDQ3lBR0R3c2dBa0VCYXc0REJnWUdCd3NnQmtFQmF3NGFBUUFFQWdFQUJBUUVCQVFFQkFRRUJBUUVBd1FCQUFNRUFRQUNDeUFGUWdCQkFCRDVBeUVDREFNTElBVkJBRUVBRUhRaEFnd0NDeUFGUVFCQkFCQ3dCQ0VDREFFTElBVkJBRUVBRUxFRUlRSUxJQVZCZ0FFZ0F5QUVJQUFnQWlBSEVLRUNFS29CRHdzZ0JVRUFRUUFRZEF3QkN5QUZRUUJCQUJDd0JBc2hBU0FGUVlBQklBTWdCQ0FBSUFFZ0J4Q2hBaENxQVF0ZUFRRi9Ba0FnQVNBQktBSUFLQUpBRVFBQVJRMEFJQUVnQVNnQ0FDZ0NRQkVBQUNnQ2FFRzBBVWNOQUNBQUlBRWdBU2dDQUNnQ1VCRUFBQ0lBSUFBb0FnQW9Bc0FCRVFBQUlnQWdBQ2dDQUNnQ2VCRUFBQkMvQVNFQ0N5QUNDeW9CQVg4Z0FDZ0NVQ0lBSUFFb0FsQWlBbkpGSVFFZ0FFVWdBa1Z5Qkg4Z0FRVWdBQ0FDRUxFTEN3dnVEUUVIZnlNQVFmQUFheUlCSkFBZ0FTQUNOZ0pzSUFCQk9Hb2lBeUFDSUFJb0FnQW9BZ0FSQUFBb0FnZ2dBaUFDS0FJQUtBSUFFUUFBRU9BQ0VOMENJQUZCNEFCcUlBTVE2UVVoQndKQUlBQWdBaUFDS0FJQUtBSjRFUUFBSWdRZ0JDZ0NBQ2dDTEJFQUFCRG1BUVIvSUFjUWhBVWdBU2dDYkFVZ0Fnc1EzQXdpQWdSQUlBTVFjeUFESUFJUWpnSkJBQ0VDREFFTElBRW9BbXdvQW1oQnhRUkdCRUFDZnlBQktBSnNJZ0lnQWlnQ0FDZ0N2QUVSQUFBaUFpQUNLQUlBS0FKNEVRQUFFSVVCQkVBZ0J4Q0VCU0FESUFBZ0FTZ0NiQ0lDSUFJb0FnQW9BcndCRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQkMvQVJDMkZBd0JDeUFCS0FKc0lnSWdBaWdDQUNnQ3ZBRVJBQUFpQWlBQ0tBSUFLQUlnRVFBQUlnSWdBaWdDQUNnQ3dBRVJBQUFpQWlBQUlBSW9BZ0FvQWdnUkFRQWdBU2dDYkNJQ0lBSW9BZ0FvQXJ3QkVRQUFJZ0lnQWlnQ0FDZ0NJQkVBQUNJQ0lBSW9BZ0FvQXNRQkVRQUFJZ0lnQWlnQ0FDZ0NGQkVBQUJCTFFRQVFEeWdDQUNFQ0lBTWdBeER3QkNBQ0VMY1VDeUVDSUFBb0Fvd0VHZ0pBSUFNdEFKQUJJUVFnQTBFZ0VLSUNJUUFnQkFSQUlBTkJnQUVnQUNBQ0lBTkJBRUVBRUwwQ0VLb0JJUUlNQVFzZ0EwSDhBQ0FBSUFJUStBRWhBZ3NnQXhCeklBTWdBaENPQWtFQUlRSU1BUXNnQVVFQU5nSmNJQUVnQURZQ1dDQUJJQUZCN0FCcU5nSlVJQUVnQVVIY0FHbzJBbEFnQVNnQ2JDZ0NhRUdnQWtZRVFDQUJJQUFnQVNnQ2JDSUNJQUlvQWdBb0Fyd0JFUUFBRU9RVk5nSmNDeUFERUhNZ0FTZ0NYQ0VFSUFFb0Ftd2lBaUFDS0FJQUtBSzhBUkVBQUNFQ0FuOGdCQVJBSUFJZ0FpZ0NBQ2dDSUJFQUFDSUNJQUlvQWdBb0FzQUJFUUFBSVFJTElBSUxJQUFnQWlnQ0FDZ0NDQkVCQUNBQlFjZ0FhaENCQlNFR0FrQUNRQUpBSUFFb0Ftd29BbWhCcmdOR0RRQWdBU2dDYkNnQ2FFR3ZBMFlOQUNBQktBSnNLQUpvUWJBRFJnMEFJQUVvQW13b0FtaEJvQUpIRFFFTElBTVE4QVFoQkNBQlFSQnFJQU1RdmdJZ0FTQUJMUUJBT2dCSUlBRkJFR29RdUFFZ0FVRVFhaUFDSUFJb0FnQW9BZ3dSQUFBaUFpQUNLQUlBS0FKNEVRQUFFT1FCSUFFZ0JpQUJRUkJxRVBvRERBRUxJQUFnQVNnQ2JDSUNJQUlvQWdBb0Fyd0JFUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFCQ2hBU0VFQ3lBQlFSQnFJQUVvQW13UXZ3UVFnd1VnQVNnQ2JDSUNJQUlvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUlzRVFBQUVPY0ZJQUFnQVNnQ2JDSUNJQUlvQWdBb0FuZ1JBQUFpQWlBQ0tBSUFLQUlzRVFBQUVQc0RFT1lGSVFVZ0FTZ0NiQ2dDYUNFQ0lBRkIwQUJxRUtVRElRa2dBU2dDYkNJSUlBZ29BZ0FvQXJ3QkVRQUFJZ2dnQ0NnQ0FDZ0NnQUVSQUFBYUFrQWdBQ0FDSUFVZ0NTQUVFT01WSWdKRkJFQWdBQ0FCS0FKc0tBSm9JQVVnQVVIUUFHb1FwUU1nQkNBQktBSnNJZ0lnQWlnQ0FDZ0N2QUVSQUFBaUFpQUNLQUlBS0FLQUFSRUFBQ0FHRU5zTUlnSkZEUUVMSUFFb0Fsd0VRQ0FGSUFNZ0FDQUZLQUlBSUFFb0Ftd2lBQ0FBS0FJQUtBSzhBUkVBQUNBQ0VOb01JZ0lRL3dJTElBTVFjeUFESUFJUWpnSkJBQ0VDREFFTEFrQUNRQUpBSUFFb0Ftd29BbWdpQmtGMmFrRUVUd1JBUVFFaEFpQUdRZE45YWlJRlFRRkxEUU1nQlVFQmF3MEJEQUlMQW44Z0FTZ0NiQ0lDSUFJb0FnQW9Bb0FCRVFBQVFRRkdCRUFnQTBNQUFJQS9RUUFRK1FJTUFRc2dBU2dDYkNJQ0lBSW9BZ0FvQW9BQkVRQUFRUUpHQkVBZ0EwUUFBQUFBQUFEd1AwRUFFTU1EREFFTElBRW9BbXdpQWlBQ0tBSUFLQUtBQVJFQUFFRURSZ1JBSUFOREFBQ0FQMEVBRUswRURBRUxBa0FnQVNnQ2JDSUNJQUlvQWdBb0FvQUJFUUFBUVFSSEJFQWdBU2dDYkNJQ0lBSW9BZ0FvQW9BQkVRQUFRUVZIRFFFTElBTkJBVUVBRU9VRkRBRUxBa0FnQVNnQ2JDSUNJQUlvQWdBb0FvQUJFUUFBUVFaSEJFQWdBU2dDYkNJQ0lBSW9BZ0FvQW9BQkVRQUFRUWRIRFFFTElBTkJBVUVBRU9RRkRBRUxBa0FnQVNnQ2JDSUNJQUlvQWdBb0FvQUJFUUFBUVFwSEJFQWdBU2dDYkNJQ0lBSW9BZ0FvQW9BQkVRQUFRUXRIRFFFTElBTkNBVUVBRU9NRkRBRUxJQU5CQVVFQUVMMENDeUVHUVFBaEFpQURJQUFnQVNnQ2JDZ0NhRUVNUndSL1FaY0JRWmdCSUFFb0Ftd29BbWhCQ2tZYkJVR1hBUXNnQlNBQUlBRW9BbXdpQUNBQUtBSUFLQUo0RVFBQUVMOEJJQVFnQmlBQktBSnNJZ0FnQUNnQ0FDZ0NlQkVBQUNJQUlBQW9BZ0FvQWh3UkFBQkJBUkRrQmlJQVFRQkIvLy8vL3dkQkFCQ0xDQ0FERUhNQ1FDQUJLQUpzS0FKb1FReEhCRUFnQVNnQ2JDZ0NhRUVOUncwQkN5QURJQUFRamdJTUJBc2dBeUFFRUk0Q0RBTUxJQU5CM0FFZ0JCQ1FERUVBSVFJTUFnc2dBMEhkQVNBRUVKQU1RUUFoQWd3QkN5QUFLQUkwSUFGQnIrUVJFR2tpQUJDZ0F5QUFFQ0FhQ3lBSEVPZ0ZJQUZCOEFCcUpBQWdBZ3VIQWdFRWZ5TUFRVUJxSWdRa0FDQUFRVGhxSWdVUStnSWhCeUFGRUhNZ0FpQUFJQUlvQWdBb0FnZ1JBUUFnQkNBQUlBSWdBaWdDQUNnQ2VCRUFBQkNoQVRZQ1BDQUVRVEJxRURBaUFpQUVRVHhxRUVjZ0JDQUZLQUtFQVJEQ0FqWUNFQ0FDSUFSQkVHb1FRU0FFS0FJOElRWWdBVUd1QVVZRVFDQUVJQVZCcUFFZ0J5QUdFUGdCSWdZMkFqd0xJQVJCRUdvZ0JrRUFJQVVRandnaEFTQUZFSE1nQXlBQUlBTW9BZ0FvQWdnUkFRQWdCQ0FBSUFNZ0F5Z0NBQ2dDZUJFQUFCQ2hBVFlDRENBQ0lBUkJER29RUnlBRUlBVW9Bb1FCRU1JQ05nSUlJQUlnQkVFSWFoQkJJQUVRamdnZ0JVSDFBU0FISUFJUThBTWhBQ0FDRURZZ0JFRkFheVFBSUFBTDhRRUJBWDhDUUFKQUlBRkZEUUFnQVNBQktBSUFLQUo0RVFBQUlnSWdBaWdDQUNnQ1pCRUFBRVVOQVNBQUtBS01CQm9nQVJEZkJnMEJRUUFnQVNBQktBSUFLQUpRRVFBQUlnQkZJQUVnQVNnQ0FDZ0NUQkVBQUNJQ0d3MEFJQUFFUUNBQUlBQW9BZ0FvQXNBQkVRQUFFTjhHUlEwQklBQWdBQ2dDQUNnQ3hBRVJBQUFRM3daRkRRRUxJQUlFUUNBQ0lBSW9BZ0FvQXNBQkVRQUFFTjhHUlEwQkN5QUJJQUVvQWdBb0FrQVJBQUFvQW1naUFFSGZmbW9pQVVFU1RVRUFRUUVnQVhSQjg0RVZjUnNnQUVFWlRVRUFRUUVnQUhSQmdJSGdHSEViY2lBQVFjWjhha0VDU1hJTkFRdEJBQThMUVFFTFd3RUJmeU1BUVJCcklnVWtBQUpBSUFCQnFBRnFFQlpCQVVZTkFDQUFJQUUyQXJRQklBQW9BcmdCRFFBZ0FDQUNOZ0s0QVFzZ0JVRUlhaUFBUWNRQmFpQURFUG9ESUFBZ0FDZ0N3QUVnQkhJMkFzQUJJQVZCRUdva0FBdjZBd0VCZnlBQ0lBSW9BZ0FvQWl3UkFBQVE0Z0loQXlBQklBRW9BZ0FvQWh3UkFBQWhBZ0pBSUFNRVFDQUNRUTVHQkVBZ0FTQUJLQUlBS0FJc0VRQUFFTW9FQkVBZ0FFRTRha0crS1JBaER3c0NRQ0FCSUFFb0FnQW9BcHdCRVFBQVJRMEFJQUVnQVNnQ0FDZ0NJQkVBQUJEOUFVVU5BQ0FBUVRocVFjQXBFQ0VQQ3dKQUlBRWdBU2dDQUNnQ3BBRVJBQUJGRFFBZ0FTQUJLQUlBS0FJZ0VRQUFFUDBCUlEwQUlBQkJPR3BCdnlrUUlROExJQUVnQVNnQ0FDZ0NuQUVSQUFBRVFDQUFRVGhxUWIwcEVDRVBDeUFCSUFFb0FnQW9BcVFCRVFBQVJRMENJQUJCT0dwQnV5a1FJUThMSUFFZ0FTZ0NBQ2dDSEJFQUFFRVFSdzBCSUFFZ0FTZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJR1VRUkFJQUJCT0dwQnZDa1FJUThMSUFFZ0FTZ0NBQ2dDTEJFQUFDa0NCRUkvZzBJRlVnMEJJQUJCT0dwQnVpa1FJUThMSUFKQkRrY05BQ0FCSUFFb0FnQW9BaXdSQUFBUXlnUUVRQ0FBUVRocUlnQkJvZUVSUVlDS0JCQ3lBU0FBUWJjcEVDRVBDd0pBSUFFZ0FTZ0NBQ2dDbkFFUkFBQkZEUUFnQVNBQktBSUFLQUlnRVFBQUVQMEJSUTBBSUFCQk9Hb2lBRUdoNFJGQmdJb0VFTElCSUFCQnVTa1FJUThMSUFFZ0FTZ0NBQ2dDcEFFUkFBQkZEUUFnQVNBQktBSUFLQUlnRVFBQUVQMEJSUTBBSUFCQk9Hb2lBRUdoNFJGQmdJb0VFTElCSUFCQnVDa1FJUXNMWGdBQ1FDQUJJQUlRT0NnQ0FDSUJJQUVvQWdBb0FpZ1JBQUFvQWdSQkJuWkIvd054SWdGQnJIOXFJZ0pCSDAxQkFFRUJJQUowUVorQWdIaHhHMFVFUUNBQlFXRnFJZ0pCQTBzZ0FrRUJSbklOQVFzZ0FDQUJRUUFRc2dnYUN3dm1Gd0VHZnlNQVFjQUNheUlCSkFBZ0FFRTRhaUlGSUFJZ0FpZ0NBQ2dDQUJFQUFDZ0NDQ0FDSUFJb0FnQW9BZ0FSQUFBUTRBSVEzUUlDUUNBQ0lBSW9BZ0FvQXNBQkVRQUFJZ01nQXlnQ0FDZ0NNQkVBQUVVTkFDQUNJQUlvQWdBb0FzQUJFUUFBSWdNZ0F5Z0NBQ2dDZUJFQUFDSURJQU1vQWdBb0FvZ0JFUUFBUlEwQUlBSWdBaWdDQUNnQ3dBRVJBQUFpQXlBREtBSUFLQUl3RVFBQUlnTWdBeWdDQUNnQ3VBRVJBQUFoQXlBQklBSWdBaWdDQUNnQ3dBRVJBQUFpQkNBRUtBSUFLQUo0RVFBQUtBSkFOZ0tBQWlBQVFlUUhhaUFCUVlBQ2FoRG1CaUFETmdJQUN3SkFJQUlnQWlnQ0FDZ0N4QUVSQUFBaUF5QURLQUlBS0FJd0VRQUFSUTBBSUFJZ0FpZ0NBQ2dDeEFFUkFBQWlBeUFES0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDaUFFUkFBQkZEUUFnQWlBQ0tBSUFLQUxFQVJFQUFDSURJQU1vQWdBb0FqQVJBQUFpQXlBREtBSUFLQUs0QVJFQUFDRURJQUVnQWlBQ0tBSUFLQUxFQVJFQUFDSUVJQVFvQWdBb0FuZ1JBQUFvQWtBMkFvQUNJQUJCNUFkcUlBRkJnQUpxRU9ZR0lBTTJBZ0FMSUFGQnVBSnFJQVVRNlFVaENDQUNJQUlvQWdBb0FuZ1JBQUFpQXlBREtBSUFLQUlzRVFBQUVPWUJCRUFnQ0JDRUJRc0NRQUpBQWtBQ1FBSkFBa0FDUUNBQ0tBSm9JZ05CeW50cVFROVBCRUFnQTBIU2Ztb2lCRUVHU3dSQUlBTkI4QVZIRFFZZ0FDZ0NOQ0FCUVlBQ2FrSC80eEVRYVNJQUVLQURJQUFRSUJwQkFTRUREQWdMSUFSQkFXc09CZ1VFQVFJQkF3UUxJQVVRY3lBQ0lBSW9BZ0FvQXNBQkVRQUFJZ01nQUNBREtBSUFLQUlJRVFFQUlBRkJnQUpxSUFVUXZnSWdCUkJ6SUFJZ0FpZ0NBQ2dDeEFFUkFBQWlBeUFBSUFNb0FnQW9BZ2dSQVFBZ0FDQUNJQUlvQWdBb0FzUUJFUUFBSWdNZ0F5Z0NBQ2dDZUJFQUFCQ2hBU0VESUFJb0FtaEJ0Z1JIQkVBZ0JTQUJRY2dCYWlBQlFZQUNhaEQ4QXlJRUVMUUVJQVFRdUFFZ0FDQUNJQUlvQWdBb0FzQUJFUUFBSWdRZ0JDZ0NBQ2dDZUJFQUFCQ2hBU0VFSUFGQnVBRnFJQUlRdndRUWd3VWdBaUFDS0FJQUtBSjRFUUFBSWdZZ0JpZ0NBQ2dDTEJFQUFCRG5CU0FBSUFJZ0FpZ0NBQ2dDZUJFQUFDSUdJQVlvQWdBb0Fpd1JBQUFRK3dNUTVnVWhCaUFBSUFJb0FtZ2dCaUFBSUFJZ0FpZ0NBQ2dDZUJFQUFCQy9BU0FFSUFNZ0FpQUNLQUlBS0FKNEVRQUFJZ01nQXlnQ0FDZ0NIQkVBQUVFQkVPUUdJUU1MSUFVZ0FVR0FBV29nQVVHQUFtb1EvQU1pQkJDMEJDQUVFTGdCSUFBZ0FpQUNLQUlBS0FMQUFSRUFBQ0lBSUFBb0FnQW9BbmdSQUFBZ0F4Q3pCQ0FGRUhNZ0JTQURFSTRDSUFGQmdBSnFFTGdCREFVTElBSWdBaWdDQUNnQ3dBRVJBQUFpQXlBQUlBTW9BZ0FvQWdnUkFRQWdBaUFDS0FJQUtBTEVBUkVBQUNJRElBTW9BZ0FvQWhRUkFBQVFTMEVBRUE4b0FnQWhCQUpBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBeUFES0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDY0JFQUFBMEFJQUlnQWlnQ0FDZ0N3QUVSQUFBaUF5QURLQUlBS0FKNEVRQUFJZ01nQXlnQ0FDZ0NhQkVBQUVVTkFDQUNLQUpvUWJFQlJ3MEFJQUZCZ0FKcUVEQWhBeUFCSUFRMkFyZ0JJQU1nQVVHNEFXb1FRU0FBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBQ0FBS0FJQUtBSjRFUUFBRUw4QklRQWdBVUg0QUdvZ0FpQUNLQUlBS0FMQUFSRUFBQ0lFSUFRb0FnQW9BbmdSQUFBUTVBRWdBaUFDS0FJQUtBTEFBUkVBQUNJQ0lBSW9BZ0FvQW5nUkFBQWdBVUc0QVdvUXZnUWhBaUFCSUFFb0FuZzJBZ2dnQlNBRElBQWdBVUVJYWlBQ0VJWU1JQU1RTmd3RkN3SkFJQUlnQWlnQ0FDZ0N3QUVSQUFBUThnRkZEUUFnQWlBQ0tBSUFLQUxBQVJFQUFDSURJQU1vQWdBb0FuZ1JBQUFpQXlBREtBSUFLQUp3RVFBQURRQWdBaWdDYUVHekFVY05BQ0FBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBeUFES0FJQUtBSjRFUUFBRUtFQklRTWdCUkJ6SUFVZ0F4Q0FBd3RCQUNFRElBVUNmeUFFSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlCaUFHS0FJQUtBS0FBUkVBQUVFUVJ3MEFHaUFFSUFJb0FtaEJzd0ZIRFFBYUlBRWdBaUFDS0FJQUtBTEFBUkVBQUNJR0lBWW9BZ0FvQW5nUkFBQW9Ba0EyQXJnQklBRWdBRUhrQjJvZ0FVRzRBV29RNWdZb0FnQTJBb0FDSUFFZ0FFSFFCMm9pQmlBQlFZQUNhaERBQ0RZQ3VBRWdBUkNGQkRZQ2NDQUVJQUZCdUFGcUlBRkI4QUJxRUlnQlJRMEFHaUFHSUFGQmdBSnFFTjBFSUFRUUVTZ0NBQXRCQUJDOUFpRUdJQUZCNkFCcUlBSWdBaWdDQUNnQ3dBRVJBQUFpQnlBSEtBSUFLQUo0RVFBQUVPUUJJQUlnQWlnQ0FDZ0N3QUVSQUFBaUJ5QUhLQUlBS0FKNEVRQUFFSVlFSVFjZ0FTQUJLQUpvTmdJRUlBVWdCaUFCUVFScUlBY1FnZ1VnQWlBQ0tBSUFLQUxBQVJFQUFDSUZJQVVvQWdBb0FuZ1JBQUFpQlNBRktBSUFLQUtJQVJFQUFFVU5CU0FDSUFJb0FnQW9Bc0FCRVFBQUlnVWdCU2dDQUNnQ2VCRUFBQ0lGSUFVb0FnQW9BbkFSQUFBTkJTQUFJQUlnQWlnQ0FDZ0N3QUVSQUFBaUFDQUFLQUlBS0FKNEVRQUFLQUpBSUFRUTZ4VU1CUXNnQWlBQ0tBSUFLQUxBQVJFQUFDSURJQUFnQXlnQ0FDZ0NDQkVCQUNBQlFZQUNhaUFGRUw0Q0lBVVFjeUFDSUFJb0FnQW9Bc1FCRVFBQUlnTWdBQ0FES0FJQUtBSUlFUUVBSUFBZ0FpQUNLQUlBS0FMRUFSRUFBQ0lESUFNb0FnQW9BbmdSQUFBUW9RRWhBeUFBSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlCQ0FFS0FJQUtBSjRFUUFBSUFJZ0FpZ0NBQ2dDeEFFUkFBQWlCQ0FFS0FJQUtBSjRFUUFBRU9vVklBVWdBVUV3YWlBQlFZQUNhaEQ4QXlJRUVMUUVJQVFRdUFFQ1FBSkFJQUlnQWlnQ0FDZ0N3QUVSQUFBaUJDQUVLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NjQkVBQUEwQUlBSWdBaWdDQUNnQ3dBRVJBQUFpQkNBRUtBSUFLQUo0RVFBQUlnUWdCQ2dDQUNnQ2FCRUFBRVVOQUNBQUlBSWdBaWdDQUNnQ3dBRVJBQUFpQUNBQUtBSUFLQUo0RVFBQUVMOEJJUUFnQVVFb2FpQUNJQUlvQWdBb0FzQUJFUUFBSWdRZ0JDZ0NBQ2dDZUJFQUFCRGtBU0FDSUFJb0FnQW9Bc0FCRVFBQUlnSWdBaWdDQUNnQ2VCRUFBQ0FCUWJnQmFoQytCQ0VDSUFFZ0FTZ0NLRFlDRUNBRklBTWdBQ0FCUVJCcUlBSVE2UlVNQVFzZ0FVRWdhaUFDSUFJb0FnQW9Bc0FCRVFBQUlnQWdBQ2dDQUNnQ2VCRUFBQkRrQVNBQ0lBSW9BZ0FvQXNBQkVRQUFJZ0FnQUNnQ0FDZ0NlQkVBQUJDR0JDRUFJQUVnQVNnQ0lEWUNEQ0FGSUFNZ0FVRU1haUFBRUlJRkN5QUJRWUFDYWhDNEFRd0RDeUFDSUFJb0FnQW9Bc0FCRVFBQUlnTWdBQ0FES0FJQUtBSUlFUUVBSUFGQmdBSnFFREFoQXlBQ0lBSW9BZ0FvQXNRQkVRQUFJZ1FnQkNnQ0FDZ0NHQkVBQUNBREVOME1JQUFnQWlBQ0tBSUFLQUxBQVJFQUFDSUFJQUFvQWdBb0FuZ1JBQUFRdndFaEFDQUJRUmhxSUFJZ0FpZ0NBQ2dDd0FFUkFBQWlCQ0FFS0FJQUtBSjRFUUFBRU9RQklBSWdBaWdDQUNnQ3dBRVJBQUFpQWlBQ0tBSUFLQUo0RVFBQUlBRkJ1QUZxRUw0RUlRSWdBU0FCS0FJWU5nSVVJQVVnQXlBQUlBRkJGR29nQWhDR0RDQURFRFlNQWdzZ0FDQUNJQUlvQWdBb0FzUUJFUUFBSWdNZ0F5Z0NBQ2dDREJFQUFCRG9GUTBBSUFBZ0FpZ0NhQ0FDSUFJb0FnQW9Bc0FCRVFBQUlnQWdBQ2dDQUNnQ0RCRUFBQ0FDSUFJb0FnQW9Bc1FCRVFBQUlnQWdBQ2dDQUNnQ0RCRUFBQkRuRlNFQUlBVVFjeUFGSUFBUWpnSU1BUXNnQlJCeklBSWdBaWdDQUNnQ3dBRVJBQUFpQXlBQUlBTW9BZ0FvQWdnUkFRQWdBQ0FDSUFJb0FnQW9Bc0FCRVFBQUlnTWdBeWdDQUNnQ2VCRUFBQkNoQVNFRUlBVVFjeUFDSUFJb0FnQW9Bc1FCRVFBQUlnTWdBQ0FES0FJQUtBSUlFUUVBSUFBZ0FpQUNLQUlBS0FMRUFSRUFBQ0lESUFNb0FnQW9BbmdSQUFBUW9RRWhCaUFCUVlBQ2FpQUNFTDhFRUlNRklBSWdBaWdDQUNnQ2VCRUFBQ0lESUFNb0FnQW9BaXdSQUFBUTV3VWdBQ0FDSUFJb0FnQW9BbmdSQUFBaUF5QURLQUlBS0FJc0VRQUFFUHNERU9ZRklRZEJBU0VESUFBZ0FpZ0NhQ0FISUFBZ0FpQUNLQUlBS0FKNEVRQUFFTDhCSUFRZ0JpQUNJQUlvQWdBb0FzQUJFUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0Fod1JBQUJCQVJEa0JpRUNJQVVRY3lBQ1JRUkFJQUFvQWpRZ0FVRzRBV3BCanVRUkVHa2lBQkNnQXlBQUVDQWFEQUlMSUFVZ0FoQ09BZ3RCQUNFREN5QUlFT2dGSUFGQndBSnFKQUFnQXd0S0FRRi9Jd0JCRUdzaUFpUUFJQUpCQURZQ0RDQUFJQUVnQVNnQ0FDZ0NlQkVBQUNBQkVFc2dBa0VNYWtFQUVMVUVJUUVnQUVFNGFpSUFFSE1nQUNBQkVJNENJQUpCRUdva0FBdjNBZ0VFZnlNQVFTQnJJZ0lrQUNBQ0lBRTJBaHdnQWlBQVFiQUlhaUFDUVJ4cUVNQUlOZ0lZSUFJUWhRUTJBZ2dDUUFKQUlBSkJHR29nQWtFSWFoQzRBdzBBSUFKQkdHb1FSQ2dDQkNFRkFrQWdBRUU0YWlJQklBRWdBU0FDS0FJY0VHSVFzQUVpQXhESkEwVU5BQ0FCSUFFZ0F4Q3dBUkRpQlVFZ1J3MEFJQUVnQlJEaUJVSEFBRVlFUUNBQkVITWdBU0FDS0FJY0VJQURJQUlnQVVILy8vLy9CMEgvLy8vL0J5QURRUUJCLy8vLy93ZEJBQkNGRERZQ0hDQUNRUWhxRURBaEJDQUNJQUVnQWlnQ0hDQUJJQU1Rc0FGQkFCQ3ZBVFlDQkNBRUlBSkJCR29RUVNBQ0lBRWdBaWdDSENBQklBTVFzQUZCQVJDdkFUWUNCQ0FFSUFKQkJHb1FRU0FCUWZ3QUlBVWdBU0FCSUFFZ0F4Q3dBVUVDRUxFQklBUVFuUU1RK0FFaEFDQUVFRFlNQXdzZ0FDZ0NOQ0FDUVFocVFiRGpFUkJwSWdBUW9BTWdBQkFnR2d3QkN5QUFLQUkwSUFKQkNHcEI0T01SRUdraUFCQ2dBeUFBRUNBYUN5QUNLQUljSVFBTElBSkJJR29rQUNBQUN5d0JBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJJQUlnQWhDZkZTQUFJQU5CQ0dvUTFBUWdBMEVRYWlRQUM0c09BUVYvSXdCQk1Hc2lBaVFBSUFJZ0FTQUJLQUlBS0FLNEFSRUFBRFlDQ0NBQ0lBQkJyQVJxSWdNZ0FrRUlhaERBQ0RZQ0tDQUNFSVVFTmdJSUFrQWdBa0VJYWlBQ1FTaHFFSWdCQkVBZ0FpQUNRU2hxRUVRb0FnUWlBVFlDSkF3QkN5QUNRUmhxSUFBZ0FDQUJJQUVvQWdBb0FvZ0JFUUFBS0FJRVFRWjJRZjhEY1VFQUVMSUlJZ1lnQVNBQktBSUFLQUo0RVFBQUVMOFZJQUlnQUNBQklBSW9BaGdRdmhVaUJEWUNKQ0FDSUFFZ0FTZ0NBQ2dDdUFFUkFBQTJBZ2dnQXlBQ1FRaHFFTTRNSUFRMkFnQWdBaWdDSENJREJFQWdBRUd3Q0dvZ0FrRWthaEM5RlNBRE5nSUFDd0pBSUFFZ0FTZ0NBQ2dDZ0FFUkFBQkJFRVlOQUNBQVFUaHFJZ01nQWlnQ0pDQUJJQUVvQWdBb0FuZ1JBQUFRL2dSQmZ4QjRJQU1nQWlnQ0pDQUFJQUVnQVNnQ0FDZ0NlQkVBQUNJRUlBUW9BZ0FvQWl3UkFBQVF6UXhCZnhCNElBTWdBaWdDSkNBQUlBRWdBU2dDQUNnQ2VCRUFBQ0lFSUFRb0FnQW9BaXdSQUFBUXpBeEJmeEI0SUFBZ0FpZ0NKRUYvSUFFZ0FTZ0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0Fpd1JBQUFReXd3Z0FTQUJLQUlBS0FLSUFSRUFBQkN5QXdSQUlBTWdBaWdDSkVFZklBRWdBU2dDQUNnQ2lBRVJBQUFvQWhSQkRIWkJCM0VRZUFzZ0FTQUJLQUlBS0FLSUFSRUFBQkRPQkFSQUlBTWdBaWdDSkVFZ0lBRWdBU2dDQUNnQ2lBRVJBQUF0QUJvUWVBc2dBU0FCS0FJQUtBSjRFUUFBSWdRZ0JDZ0NBQ2dDTEJFQUFCQ3BCUVJBSUFNZ0FpZ0NKRUVCSUFFZ0FTZ0NBQ2dDZUJFQUFDSUVJQVFvQWdBb0Fpd1JBQUFvQWlCQkNIWkIvdzl4RUhnTElBRWdBU2dDQUNnQ2lBRVJBQUFRbGdKRkRRQWdBeUFDS0FJa1FTTWdBU0FCS0FJQUtBS0lBUkVBQUNnQ0RCQjRDeUFCSUFFb0FnQW9Bb2dCRVFBQUVJQUNCRUFnQUVFNGFpQUNLQUlrUVI0Z0FTQUJLQUlBS0FLSUFSRUFBQ2dDRkVIL0gzRVFlQXNnQUVFNGFpSURJQUlvQWlRZ0FTQUJLQUlBS0FKNEVRQUFJZ1FnQkNnQ0FDZ0NMQkVBQUJES0RFRi9FSGdDUUNBQklBRW9BZ0FvQW9nQkVRQUFFTEVEUlEwQUlBQW9Bb3dFTFFETUJFVU5BQ0FEUVRZUUlTQURJQUlvQWlSQkhTQUJJQUVvQWdBb0FvZ0JFUUFBTFFBYkVIZ0xBa0FnQVNBQktBSUFLQUtJQVJFQUFCQ3JCUVJBSUFNZ0FpZ0NKRUVpSUFFZ0FTZ0NBQ2dDaUFFUkFBQW9BaFJCRDNaQi93QnhFSGdNQVFzZ0FTQUJLQUlBS0FKNEVRQUFFTWtNUlEwQUlBTWdBaWdDSkVFaVFRQVFlQXNDUUNBQklBRW9BZ0FvQW9nQkVRQUFFT2tDQkVBZ0F5QUNLQUlrUVNFZ0FTQUJLQUlBS0FLSUFSRUFBQzhCR0JCNERBRUxJQUVnQVNnQ0FDZ0NlQkVBQUJESkRFVU5BQ0FESUFJb0FpUkJJVUVBRUhnTElBRWdBU2dDQUNnQ2lBRVJBQUFReWdRRVFDQURJQUlvQWlSQkt5QUJJQUVvQWdBb0FvZ0JFUUFBTFFBZ0VIZ0xBa0FnQUNnQ2pBUXRBTHdFUlEwQUlBTkJOUkFoQWtBZ0FTQUJLQUlBS0FLSUFSRUFBQkNWQWtVTkFDQURJQUlvQWlSQkpDQUJJQUVvQWdBb0FvZ0JFUUFBS0FJY1FROXhFSGdnQUNnQ2pBUkJ3QVJxSUFFZ0FTZ0NBQ2dDaUFFUkFBQW9BaHhCRDNFUWF5Z0NEQ0lFUWYvL0FFWU5BQ0FESUFJb0FpUkJKU0FFRUhnTElBRWdBU2dDQUNnQ2lBRVJBQUFRaFFORkRRQWdBeUFDS0FJa1FTTWdBU0FCS0FJQUtBS0lBUkVBQUNrQ0dFSXlpS2RCL3o5eEVIZ0xJQVpCLy8vLy93ZEhCRUFnQXlBQ0tBSWtRUXNnQmhCNEN5QUJJQUVvQWdBb0FuZ1JBQUFpQkNBRUtBSUFLQUtjQVJFQUFBUkFJQUpCQ0dvUU1DRUVJQUVnQVNnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQWl3UkFBQWdCQ0FBS0FLTUJDMEFpQVFRc1FnZ0JCQVdCRUJCQUNFRkEwQWdBeUFDS0FJa0lBUWdCUkFSS0FJQVFYOFFlQ0FGUVFGcUlnVWdCQkFXU1EwQUN3c2dCQkEyQ3lBRElBSW9BaVFnQUNBQklBRW9BZ0FvQW5nUkFBQWlCQ0FFS0FJQUtBSXNFUUFBRVBzRFFYOFFlQUpBSUFaQkNVY0VRQ0FHUVJSSERRRWdBeUFDS0FJa1FZQXBRZi8vLy84SElBQW9Bb3dFTFFETkJDSUVHMEYvRUhnZ0JFVU5BU0FEUVlFcEVDRWdBMEhoMnhFUVFnd0JDeUFCSUFFb0FnQW9Bb2dCRVFBQUxRQW9CRUFnQXlBQ0tBSWtRWVFwUVg4UWVDQURRWWNwRUNFZ0EwR0czQkVRUWdzZ0FTQUJLQUlBS0FLSUFSRUFBQ2dDTEVHQWNFWU5BQ0FESUFJb0FpUkJpQ2tnQVNBQktBSUFLQUtJQVJFQUFDZ0NMQkI0SUFOQml5a1FJU0FEUVozY0VSQkNDeUFCSUFFb0FnQW9Bb2dCRVFBQUxRQW5CRUFnQXlBQ0tBSWtRWUlwUVg4UWVDQURRWU1wRUNFZ0EwRzYzQkVRUWdzZ0FTQUJLQUlBS0FLSUFSRUFBQzBBQ0VFUWNRUkFJQU1nQWlnQ0pFR2xLVUYvRUhnZ0EwR2tLUkFoSUFOQjNkd1JFRUlMSUFBb0Fvd0VHaUFCRVBJQkJFQWdBeUFDS0FJa1Fld3BRZXNwSUFFZ0FTZ0NBQ2dDZUJFQUFDSUFJQUFvQWdBb0Fpd1JBQUFwQWdSQ2dJQ0FnSUNBQVlOUUcwRi9FSGdMSUFJb0FpUWhBUXNnQWtFd2FpUUFJQUVMcmdRQkJYOGpBRUhRQUdzaUFpUUFJQUpCeUFCcUlBQkJPR29pQkJEcEJTRUdJQUVnQVNnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQW9nQkVRQUFCRUFnQVNBQktBSUFLQUs0QVJFQUFDRURJQUlnQVNBQktBSUFLQUo0RVFBQUtBSkFOZ0lRSUFCQjVBZHFJQUpCRUdvUTVnWWdBellDQUFzZ0FTQUJLQUlBS0FKNEVRQUFJZ01nQXlnQ0FDZ0NMQkVBQUJEbUFRUkFJQVlRaEFVTElBSWdBQ0FCRVBBVklnTTJBa1FDUUNBRUlBTVE0UXhGRFFBQ1FDQUVJQUVnQVNnQ0FDZ0NlQkVBQUNJRklBVW9BZ0FvQW9nQkVRQUFCSDhnQVNBQktBSUFLQUo0RVFBQUtBSkFFRGRGRFFFZ0FpZ0NSQVVnQXdzUXRnUWhBeUFBS0FLTUJCQ3NBeUVGSUFOQkFuSkJBMGNFUUNBRFFRZEhJQVVvQWdCQi80Y0VTM0ZGRFFFTElBSkJFR29nQUVHQUJHb2dBa0hFQUdvUTd4VUxJQUVnQVNnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0ExSU5BQ0FDSUFBZ0FpZ0NSQkR1RlRZQ1JBc0NRQ0FBTFFEK0F3UkFJQUVnQVNnQ0FDZ0NoQUVSQUFBUTVnRkZEUUVMSUFRUWN5QUNRUkJxSUFFZ0FTZ0NBQ2dDaEFFUkFBQkJOQkE5R2tFQklRTUNRQ0FDUVJCcUVPWUJEUUFnQWlBQklBRW9BZ0FvQXJnQkVRQUFOZ0lFSUFJZ0FFSEFCR29nQWtFRWFoREtEVFlDQ0NBQ0VJVUhOZ0lBSUFKQkNHb2dBaEFlRFFBZ0JDQUVJQUlvQWtRUVloRGdERUVCY3lFREN5QUNLQUpFSVFBZ0F3UkFJQVFnQUJDT0Fnd0JDeUFFSUFBUWdBTUxJQVlRNkFVZ0FrSFFBR29rQUFzSUFDQUFFTVFJR2d0RkFRRi9Jd0JCSUdzaUFpUUFJQUlnQVJDU0F6WUNFQkRuQVNBQ1FSaHFJQUFnQVNBQ1FSQnFJQUpCQ0dvUTBBd2dBa0VZYWhCWElRQWdBa0VnYWlRQUlBQkJCR29MSndFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFRTRhaUFDUVF4cUVFY2dBa0VRYWlRQUN6TUJBWDhqQUVFUWF5SURKQUFnQXlBQUlBRVF3UWcyQWd3Z0FFRzBBMm9nQTBFTWFoRHpGU0FDTmdJQUlBTkJFR29rQUFzcUFRRi9Jd0JCRUdzaUFpUUFJQUlnQVJBVE5nSU1JQUJCeEFCcUlBSkJER29RUVNBQ1FSQnFKQUFMUEFBQ2Z5QUFRWDlxSWdCQkFVMEVRRUVGSUFCQkFXdEZEUUVhUVFBZ0FVRi9haUlCUVFoUERRRWFJQUZCQW5SQm9Pb1JhaWdDQUE4TFFRQUxDNXNCQVFKL0l3QkJFR3NpQVNRQUlBQXRBUDBEUlFSQUlBQkJPR29pQWlBQUtBSWtFTUlJRU9VQklBSVFsQXdMSUFFZ0FFR0FCR29pQWhEbkF6WUNDQ0FCSUFJUWdRRTJBZ0FnQVVFSWFpQUJFQjRFUUFOQUlBQW9BaXdnQVVFSWFoQlhLQUlBRURrZ0FVRUlhaENwQVNBQklBSVFnUUUyQWdBZ0FVRUlhaUFCRUI0TkFBc0xJQUJCT0dvaUFCQ0dGQ0FBRVA0VElBRkJFR29rQUF2SEVBRUdmeU1BUVNCcklnVWtBQ0FBUVFFUXlBSWdBRUVBTmdJMElBQkJBRFlDTUNBQVFnQTNBaVFnQUNBRE5nSWdJQUJCOE5nUk5nSUFJQUJCT0dvZ0FVR0lnQ0FnQUNnQ05CRGRGQ0VFSUFCQkFEb0EvZ01nQUVFQU93SDhBeUFBUVlBRWFoQ2RCQ0FBSUFJMkFvd0VJQUFnQWkwQTJ3TTZBSkFFSUFCQm1BUnFFSllCR2lBQVFhd0VhaENXQVJvZ0FFSEFCR29RbGdFYUlBQkIxQVJxRUpZQkdpQUFRZEFIYWlFR0lBQkI2QVJxSVFFRFFDQUJFSllCUVJScUlnRWdCa2NOQUFzZ0FFSFFCMm9RbGdFYUlBQkI1QWRxRUpZQkdpQUFRZmdIYWhEMEJpQUFRWkFJYWhDV0FSb2dBRUdrQ0dvUW1RY2FJQUJCc0FocUVKWUJHZ0ovSUFJb0FnQWlBVUVOVFFSQUlBRkJBblJCNk9rUmFpZ0NBQXdCQzBFRUN5RUpJQVFRYzBFQklBSW9BaWdROXhVaEFTQUVJQUlvQWl3MkFnd2dCQ0FCTmdJSUlBTXRBQUFFUUNBRVFRRTZBQ2dnQkNBRUlBSkIzQVpxRU1FSU5nSVFJQVZCRUdvUVRpRUdJQUpCZ0FkcUlnY1Fwd0VoQ0NBQ0VLd0RLQUlBUVlDQ0JFa2hBMEVBSVFFZ0NFRUFTZ1JBQTBBQ1FDQURRUUZ4QkVBZ0JrR2MyUkVRdGdJYUlBWWdCeUFCRU5RREVNRUVJQVpCc3RrUkVMWUNHZ3dCQ3lBRUlBY2dBUkRVQXhEMkZRc2dCeENuQVNFSUlBSVFyQU1vQWdCQmdJSUVTU0VESUFGQkFXb2lBU0FJU0EwQUN3c0NRQ0FEUlEwQUlBY1Fwd0ZCQVVnTkFDQUdRYlRaRVJDMkFob0xJQVlnQWtIb0Jtb1F3UVFnQkVFVWFpQUdFSVlDSUFVZ0FrSDBCbW9pQVJEUkFqWUNDQ0FGSUFFUWZqWUNBQ0FGUVFocUlBVVFpQUVFUUFOQUlBUWdCVUVJYWhCWElBVkJDR29RVjBFTWFoRDFGU0FGUVFocUVLa0JJQVVnQVJCK05nSUFJQVZCQ0dvZ0JSQ0lBUTBBQ3dzZ0JoQWdHZ3NnQUNBRVFiM1pFUkNmRERZQ2xBUWdCQ0VCSUFJdEFPWUZCSDhnQkVISzJSRkJnSW9FRUxJQklBUkI0eWtRSVVIa0tRVkJBQXNoQXlBQklBSXRBSWdFQkg4Z0JFSGhLUkFoSUFSQjZ0a1JRWUNLQkJDeUFVRURCVUVCQ3pZQ1ZDQUJJQU0yQWxBZ0FpMEEwZ1VFUUNBRVFkb2lFQ0VMSUFBZ0JDQUNFQ1VRRXhDL0ZDSUJOZ0lrSUFBZ0JDQUpJQUVnQWhBbEVCTVF3aFEyQWl3Z0JTQUNFTU1JSWdFUTV3TTJBaEFnQlNBQkVJRUJOZ0lJSUFWQkVHb2dCVUVJYWhBZUJFQURRQ0FFSUFWQkVHb1FWeEFURVBRVklBVkJFR29RcVFFZ0JTQUJFSUVCTmdJSUlBVkJFR29nQlVFSWFoQWVEUUFMQ3lBQ0xRQzhCQVJBSUFSQk5SQWhJQVFnQUNnQ0pFRUxRWDlCZjBGL0VMWUJDd0pBSUFJb0FnQWlBVUVOU3cwQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVFQmF3NE5Bd01FQVFJRkJRVUZCUVVHQmdBTElBUkJBUkFoREFZTElBUkJBUkFoSUFJdEFKd0VCRUFnQkNBQUtBSWtRUVpCZjBGL1FYOFF0Z0VMSUFRZ0FDZ0NKRUVIUVFnZ0FpMEFuUVFiUVg5QmYwRi9FTFlCSUFJdEFLMEVCRUFnQkNBQUtBSWtRUWxCZjBGL1FYOFF0Z0VMSUFJdEFLNEVCRUFnQkVIZkloQWhJQVFnQUNnQ0pFSGVJa0YvUVg5QmZ4QzJBU0FFUVliYUVSQkNDd0pBSUFJb0FyQUVRUVJHRFFBZ0FpMEEzQU5GRFFBZ0JDQUFLQUlrUVF4QmYwRi9RWDhRdGdFTFFRNUJEMEgvLy8vL0J5QUNLQUt3QkNJQlFRTkdHeUFCUVFKR0d5SUJRZi8vLy84SFJ3UkFJQVFnQUNnQ0pDQUJRWDlCZjBGL0VMWUJDeUFDS0FLb0JFRi9haUlIUVFWTERRVkIvQ2toQWtINktTRUJRZmdwSVFOQjlpa2hCZ0pBQWtBQ1FBSkFBa0FDUUNBSFFRRnJEZ1VCQkFNRkFBSUxRZnNwSVFFTUJBdEI5eWtoQmd0Qmdpb2hBaUFHSVFFTUFndEIrU2toQXd0Qjh5a2hBaUFESVFFTElBUWdBQ2dDSkNBQlFYOUJmMEYvRUxZQklBUWdBaEFoSUFSQm90b1JFRUlNQlFzZ0JFRUJFQ0VnQkNBQUtBSWtRUkVnQWtFQUVJTUNJQUpCQVJDREFpQUNRUUlRZ3dJUXRnRWdBaWdDMUFSQkFVWUVRQ0FFUWFncEVDRWdCQ0FBS0FJa1Fha3BRWDlCZjBGL0VMWUJJQVJCeE5vUkVFSU1CUXNnQWlnQzFBUkJBa2NOQkNBRVFlWXBFQ0VnQkNBQUtBSWtRYW9wUVg5QmYwRi9FTFlCSUFSQnhOb1JFRUlNQkFzZ0JFRURFQ0VDUUFKL0lBSW9BZ0JCQVVZRVFDQUVJQUFvQWlSQkdpQUNLQUtRQkVGL1FYOFF0Z0VnQWlnQ21BUU1BUXNnQWlnQ2xBUUxRWHRxSWdOQkJFc05BRUVXSVFFQ1FBSkFBa0FnQTBFQmF3NEVBd01BQVFJTFFSZ2hBUXdCQzBFWklRRUxJQVFnQUNnQ0pDQUJRWDlCZjBGL0VMWUJDeUFDS0FLZ0JDSUJRWDlxUVFKTkJFQWdCQ0FBS0FJa0lBRkJmMEYvUVg4UXRnRUxRUVJCQlVILy8vLy9CeUFDS0FLa0JDSUJRUUpHR3lBQlFRRkdHeUlCUWYvLy8vOEhSd1JBSUFRZ0FDZ0NKQ0FCUVg5QmYwRi9FTFlCQ3lBQ0xRQ3NCRVVOQXlBRUlBQW9BaVJCQ2tGL1FYOUJmeEMyQVF3REN5QUVRUUlRSVNBQ0tBS1VCRUYvYWlJQlFRVkxRVGNnQVVIL0FYRjJRUUZ4UlhKRkJFQWdCQ0FBS0FJa0lBRkJBblJCME9rUmFpZ0NBRUYvUVg5QmZ4QzJBUXNnQkNBQUtBSWtRUUFnQWlnQ2pBUkJmMEYvRUxZQkFrQWdBaWdDbUFSQmYyb2lBMEVHU3cwQVFSc2hBUUpBQWtBQ1FDQURRUUZyRGdZREF3QURBd0VDQzBFY0lRRU1BUXRCSFNFQkN5QUVJQUFvQWlRZ0FVRi9RWDlCZnhDMkFRc2dCQ0FBS0FJa1FSb2dBaWdDa0FSQmYwRi9FTFlCREFJTElBUkIzQ2tRSVNBRVFlYmFFUkJDREFFTElBUkJraWtRSVNBRVFmbmFFUkJDSUFRZ0FDZ0NKRUVSSUFKQkFCQ0RBaUFDUVFFUWd3SWdBa0VDRUlNQ0VMWUJJQUlvQWdCQkRVY05BQ0FFSUFBb0FpUkJHaUFDS0FLUUJFRi9RWDhRdGdFZ0JDQUFLQUlrUVpZcElBSW9BdGdFUVg5QmZ4QzJBU0FDS0FLWUJFRi9haUlDUVFSTERRQkJHeUVCQWtBQ1FBSkFJQUpCQVdzT0JBQURBd0VDQzBHVktTRUJEQUVMUWJJcElRRUxJQVFnQUNnQ0pDQUJRWDlCZjBGL0VMWUJDeUFGUVNCcUpBQWdBQXR4QVFOL0l3QkIwQWhySWdNa0FDQUFLQUpBSWdRRVFDQURRY2dJYWhDaUN5RUZFTlVERUowSklBUWdBeUFBRUt3REtBSUFJQUFnQWlBRklBSWJFUGtWSWdBZ0JDZ0NBQ2dDQ0JFQkFDQUFFUGdWSUFCQk9Hb2dBUkNrRkJEVkF4RDdHU0FBRU1RSUdnc2dBMEhRQ0dva0FBczhBUUovSXdCQklHc2lBaVFBSUFKQkdHb2dBUkF4SWdNUWlBVWdBa0VJYWlBQUlBRVE1UXdnQWtFSWFoRG9CaUFES0FJQUdpQUNRU0JxSkFBTFBBRUNmeU1BUVNCcklnSWtBQ0FDUVJocUlBRVFNU0lERUlnRklBSkJDR29nQUNBQkVPVU1JQUpCQ0dvUXN3SWdBeWdDQUJvZ0FrRWdhaVFBQ3pVQkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFFUTV3dzJBZ2dnQWhETEFUWUNBQ0FDUVFocUlBSVFIaUVBSUFKQkVHb2tBQ0FBQ3lzQkFYOGdBVUV2RUtJSklnSkJmMFlFUUNBQVFlVFlFUkJwR2c4TElBQWdBU0FDUVFGcVFYOFE3UVlMNndFQkJYOGpBRUZBYWlJQkpBQkJBU0VGQWtBZ0FFRTRhaUlERVBzQkRRQWdBaWdDYUVHd0JFY05BQ0FCUVRCcUlBTVE3Z1pCQUNFRklBRkJNR29RRTBFQVFRcEMvLy8vL3c4UWhRaW5JUVFnQWlBQ0tBSUFLQUs4QVJFQUFDQUVFQkVvQWdBaUFpQUNLQUlBS0FJTUVRQUFJUVFnQVVFZ2FpQURFUDRWSUFFZ0FVRWdhaER0QVNJR0lRY2dBVUVRYWlJQ0lBTTJBZ0FnQWtFRWFpQURFTzBCR2lBRElBY1FoZ0lnQmhBZ0dpQUVJQUFnQkNnQ0FDZ0NDQkVCQUNBQ0tBSUFJQUpCQkdvaUFCQ0dBaUFBRUNBYUlBRkJJR29RSUJvZ0FVRXdhaEFnR2dzZ0FVRkFheVFBSUFVTE9nQWdBaWdDYUJEc0JnUkFJQUlnQWlnQ0FDZ0NmQkVBQUNJQUlBQW9BZ0FvQWlnUkFBQWlBQ0FBS1FJRVFvQ0FnSUFnaERjQ0JBdEJBUXVRQWdFQ2Z5TUFRU0JySWdFa0FBSkFJQUlvQW1nUTlBd0VRQ0FBS0FKRUlRTWdBU0FDTmdJQUlBRkJFR29nQXlBQkVJd0ZFTzBCSVFNQ1FDQUFRVGhxSWdRUSt3RUVRQ0FDSUFJb0FnQW9BbndSQUFBaUFpQUNLQUlBS0FJb0VRQUFJZ0lnQWlrQ0JFS0FnSUNBSUlRM0FnUU1BUXNnQVNBRUVPa01JQU1nQVJEckRTQUJFQ0FhQ3lBQVFTUnFJZ0lnQXhEb0RFVUVRQ0FCSUFBb0FpQWdBeENMQlNBQklBSWdBeENMQlFzZ0F4QWdHa0VBSVFBTUFRdEJBU0VBSUFJb0FtZ1E3QVpGRFFBZ0FpQUNLQUlBS0FLQUFSRUFBRUVJUmcwQUlBSWdBaWdDQUNnQ2ZCRUFBQ0lDSUFJb0FnQW9BaWdSQUFBaUFpQUNLUUlFUW9DQWdJQWdoRGNDQkFzZ0FVRWdhaVFBSUFBTHJRRUJBMzhqQUVFZ2F5SUNKQUFnQUNnQ1JDRURJQUlnQVRZQ0FDQUNRUkJxSUFNZ0FoQ01CUkR0QVNFREFrQWdBRUU0YWlJRUVQc0JCRUFnQVNBQktBSUFLQUo4RVFBQUlnRWdBU2dDQUNnQ0tCRUFBQ0lCSUFFcEFnUkNnSUNBZ0NDRU53SUVEQUVMSUFJZ0JCRHBEQ0FESUFJUTZ3MGdBaEFnR2dzZ0FFRWthaUlCSUFNUTZBeEZCRUFnQWlBQUtBSWdJQU1RaXdVZ0FpQUJJQU1RaXdVTElBTVFJQm9nQWtFZ2FpUUFDd2dBSUFBUXlBZ2FDelVCQVg4akFFRVFheUlDSkFBZ0FpQUFJQUVRNmd3MkFnZ2dBaERMQVRZQ0FDQUNRUWhxSUFJUUhpRUFJQUpCRUdva0FDQUFDK0FCQVFGL0l3QkJFR3NpQVNRQUlBSWdBaWdDQUNnQ3dBRVJBQUFpQXlBQUlBTW9BZ0FvQWdnUkFRQWdBQ2dDSUNFRElBRWdBallDREFKQUlBTWdBVUVNYWhEc0RFVU5BQ0FDSUFJb0FnQW9Bc0FCRVFBQUVPc0ZCRUFnQWlBQ0tBSUFLQUo4RVFBQUlnQWdBQ2dDQUNnQ0tCRUFBQ0lBSUFBcEFnUkNnSUNBZ0NDRU53SUVEQUVMSUFBb0FpQWhBeUFCSUFJMkFnZ2dBeUFCUVFocUVJd0ZJQUFvQWlRUW1BSkZEUUFnQWlBQ0tBSUFLQUo4RVFBQUlnQWdBQ2dDQUNnQ0tCRUFBQ0lBSUFBcEFnUkNnSUNBZ0NDRU53SUVDeUFCUVJCcUpBQkJBQXRpQVFKL0l3QkJFR3NpQWlRQUlBQW9BaUFoQXlBQ0lBRTJBZ3dnQXlBQ1FReHFFSXdGSUFBb0FpUVFtQUlFUUNBQklBRW9BZ0FvQW53UkFBQWlBQ0FBS0FJQUtBSW9FUUFBSWdBZ0FDa0NCRUtBZ0lDQUlJUTNBZ1FMSUFKQkVHb2tBQXZsQXdJRmZ3RjlJd0JCSUdzaUJDUUFJQUVRSXlBQ0tBSUFFT2tHSVFjZ0FSQThJUVVnQkVFQU9nQWZBa0FDUUNBRlJRMEFJQUVnQnlBRkVEUWlDQkFSS0FJQUlnWkZEUUFEUUNBR0tBSUFJZ1pGRFFFZ0J5QUdLQUlFUndSQUlBWW9BZ1FnQlJBMElBaEhEUUlMSUFFUVF5QUdRUWhxSUFJUXhBSkZEUUFMREFFTElBUkJFR29nQVNBSElBTVF3Z1VnQVJBaktBSUFJUUlnQVJCRElRTUNRQ0FGQkVBZ0F5b0NBQ0FGczVRZ0FrRUJhck5kUVFGekRRRUxJQVFnQlJDNkFVRUJjeUFGUVFGMGNqWUNEQ0FFQW44Z0FSQWpLQUlBUVFGcXN5QUJFRU1xQWdDVmpTSUpRd0FBZ0U5ZElBbERBQUFBQUdCeEJFQWdDYWtNQVF0QkFBczJBZ2dnQVNBRVFReHFJQVJCQ0dvUVVpZ0NBQkR1RENBSElBRVFQQ0lGRURRaENBc0NRQ0FCSUFnUUVTZ0NBQ0lDUlFSQUlBUW9BaEFnQVVFSWFpSUNLQUlBTmdJQUlBSWdCQ2dDRURZQ0FDQUJJQWdRRVNBQ05nSUFJQVFvQWhBb0FnQkZEUUVnQkNnQ0VDRUNJQUVnQkNnQ0VDZ0NBQ2dDQkNBRkVEUVFFU0FDTmdJQURBRUxJQVFvQWhBZ0FpZ0NBRFlDQUNBQ0lBUW9BaEEyQWdBTElBUkJFR29RWHlFR0lBRVFJeUlCSUFFb0FnQkJBV28yQWdBZ0JFRUJPZ0FmSUFSQkVHb1Fzd0lMSUFBZ0JFRVFhaUFHRURFZ0JFRWZhaENpQVNBRVFTQnFKQUFMcFFFQkFuOGdBQkE4SVFNZ0FTZ0NCQ0FERURRaEJBSkFJQUpGQkVBZ0FTQUFRUWhxSWdJb0FnQTJBZ0FnQWlBQk5nSUFJQUFnQkJBUklBSTJBZ0FnQVNnQ0FFVU5BU0FBSUFFb0FnQW9BZ1FnQXhBMEVCRWdBVFlDQUF3QkN5QUJJQUlvQWdBMkFnQWdBaUFCTmdJQUlBRW9BZ0FpQWtVTkFDQUNLQUlFSUFNUU5DSUNJQVJHRFFBZ0FDQUNFQkVnQVRZQ0FBc2dBQkFqSWdBZ0FDZ0NBRUVCYWpZQ0FBdkhBZ0lIZndGOUl3QkJFR3NpQmlRQUlBQVFQQ0VFSUFBUUl5Z0NBQ0VESUFBUVF5RUZBa0FnQkFSQUlBVXFBZ0FnQkxPVUlBTkJBV3F6WFVFQmN3MEJDeUFHSUFRUXVnRkJBWE1nQkVFQmRISTJBZ3dnQmdKL0lBQVFJeWdDQUVFQmFyTWdBQkJES2dJQWxZMGlDa01BQUlCUFhTQUtRd0FBQUFCZ2NRUkFJQXFwREFFTFFRQUxOZ0lJSUFBZ0JrRU1haUFHUVFocUVGSW9BZ0FROEF3Z0FCQThJUVFMQWtBZ0FDQUJJQVFRTkNJSUVCRW9BZ0FpQTBVRVFFRUFJUU1NQVFzZ0F5Z0NBQ0lGUlEwQUlBVW9BZ1FnQkJBMElBaEhEUUJCQUNFRkEwQkJBQ0VIUVFBQ2Z5QUJJQU1vQWdBb0FnUkdCRUFnQUJCRElBTW9BZ0JCQ0dvZ0FoQ21BeUVIQ3lBSFJRc2dCVUVCYzBFQmNSc05BU0FES0FJQUlnTW9BZ0FpQ1VVTkFTQUZJQWR5SVFVZ0NTZ0NCQ0FFRURRZ0NFWU5BQXNMSUFaQkVHb2tBQ0FEQzBvQkFuOGpBRUVRYXlJQ0pBQWdBU0FBRUNNZ0FVRUlhaUlERU9jR05nSUVJQUFnQVNBQUlBRW9BZ1FnQXhDSkZoQ0lGaUFDUVFocUlBRVFNU2dDQUNFQUlBSkJFR29rQUNBQUMzWUJBbjhqQUVFUWF5SUVKQUFnQVJBYklRTWdBRUVZRUNZZ0JFRUlhaUFEUVFBUXd3RVFrUUVpQUNnQ0FFRUlhaUlESUFJUTBnTWdBeUFDS0FJTU5nSU1JQUFRSlVFQk9nQUVJQUVRSXlBQUtBSUFRUWhxRU9jR0lRRWdBQ2dDQUNBQk5nSUVJQUFvQWdCQkFEWUNBQ0FFUVJCcUpBQUxOUUVCZnlNQVFSQnJJZ0lrQUNBQ0lBQWdBUkNMRmlBQUlBSW9BZ0FRaWhZaEFDQUNFRjhhSUFJUTZBWWdBa0VRYWlRQUlBQUxKd0FnQUMwQUJBUkFJQUFvQWdBYUlBRkJDR29RNWdJTElBRUVRQ0FBS0FJQUdpQUJFQ29MQzlZQkFnTi9BWDBqQUVFUWF5SUNKQUFnQWlBQk5nSU1Ba0FnQWlBQlFRRkdCSDlCQWdVZ0FTQUJRWDlxY1VVTkFTQUJFSW9DQ3lJQk5nSU1Dd0pBSUFFZ0FCQThJZ05MQkVBZ0FDQUJFUElNREFFTElBRWdBMDhOQUNBREVMb0JJUVFDZnlBQUVDTW9BZ0N6SUFBUVF5b0NBSldOSWdWREFBQ0FUMTBnQlVNQUFBQUFZSEVFUUNBRnFRd0JDMEVBQ3lFQklBSUNmeUFFQkVBZ0FSQ0tCQXdCQ3lBQkVJb0NDellDQ0NBQ0lBSkJER29nQWtFSWFoQlNLQUlBSWdFMkFnd2dBU0FEVHcwQUlBQWdBUkR5REFzZ0FrRVFhaVFBQzFrQkFYOGpBRUVRYXlJRUpBQWdBUkFiSWdFZ0FFRVVFQ1lnQkVFSWFpQUJRUUFRd3dFUWtRRWlBQ2dDQUVFSWFpQURFS0VGSUFBUUpVRUJPZ0FFSUFBb0FnQWdBallDQkNBQUtBSUFRUUEyQWdBZ0JFRVFhaVFBQytJREFnVi9BWDBqQUVFZ2F5SUVKQUFnQVJBaklBSVFoUWtoQnlBQkVEd2hCU0FFUVFBNkFCOENRQUpBSUFWRkRRQWdBU0FISUFVUU5DSUlFQkVvQWdBaUJrVU5BQU5BSUFZb0FnQWlCa1VOQVNBSElBWW9BZ1JIQkVBZ0JpZ0NCQ0FGRURRZ0NFY05BZ3NnQVJCRElBWkJDR29nQWhDNkJVVU5BQXNNQVFzZ0JFRVFhaUFCSUFjZ0F4Q1BGaUFCRUNNb0FnQWhBaUFCRUVNaEF3SkFJQVVFUUNBREtnSUFJQVd6bENBQ1FRRnFzMTFCQVhNTkFRc2dCQ0FGRUxvQlFRRnpJQVZCQVhSeU5nSU1JQVFDZnlBQkVDTW9BZ0JCQVdxeklBRVFReW9DQUpXTklnbERBQUNBVDEwZ0NVTUFBQUFBWUhFRVFDQUpxUXdCQzBFQUN6WUNDQ0FCSUFSQkRHb2dCRUVJYWhCU0tBSUFFSTRXSUFjZ0FSQThJZ1VRTkNFSUN3SkFJQUVnQ0JBUktBSUFJZ0pGQkVBZ0JDZ0NFQ0FCUVFocUlnSW9BZ0EyQWdBZ0FpQUVLQUlRTmdJQUlBRWdDQkFSSUFJMkFnQWdCQ2dDRUNnQ0FFVU5BU0FFS0FJUUlRSWdBU0FFS0FJUUtBSUFLQUlFSUFVUU5CQVJJQUkyQWdBTUFRc2dCQ2dDRUNBQ0tBSUFOZ0lBSUFJZ0JDZ0NFRFlDQUFzZ0JFRVFhaEJmSVFZZ0FSQWpJZ0VnQVNnQ0FFRUJhallDQUNBRVFRRTZBQjhnQkVFUWFoRG9CZ3NnQUNBRVFSQnFJQVlRTVNBRVFSOXFFS0lCSUFSQklHb2tBQXNuQUNBQUxRQUVCRUFnQUNnQ0FCb2dBVUVJYWhENURBc2dBUVJBSUFBb0FnQWFJQUVRS2dzTE1BRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnZ2dBQ0FDS0FJSUtBSUFOZ0lBSUFCQkJHb1FUaG9nQWtFUWFpUUFDMW9BSXdCQkVHc2lBeVFBSUFFUUd5RUJJQUJCR0JBbUlBTkJDR29nQVVFQUVNTUJFSkVCSWdBb0FnQkJDR29nQkNnQ0FCQ1NGaUFBRUNWQkFUb0FCQ0FBS0FJQUlBSTJBZ1FnQUNnQ0FFRUFOZ0lBSUFOQkVHb2tBQXVCQkFJRmZ3RjlJd0JCSUdzaUJTUUFJQUVRSXlBQ0VPb0dJUWdnQVJBOElRWWdCVUVBT2dBZkFrQUNRQ0FHUlEwQUlBRWdDQ0FHRURRaUNSQVJLQUlBSWdkRkRRQURRQ0FIS0FJQUlnZEZEUUVnQ0NBSEtBSUVSd1JBSUFjb0FnUWdCaEEwSUFsSERRSUxJQUVRUXlBSFFRaHFJQUlRaXdORkRRQUxEQUVMSUFWQkVHb2dBU0FJUWJUWEVTQURJQVFRa3hZZ0FSQWpLQUlBSVFJZ0FSQkRJUU1DUUNBR0JFQWdBeW9DQUNBR3M1UWdBa0VCYXJOZFFRRnpEUUVMSUFVZ0JoQzZBVUVCY3lBR1FRRjBjallDRENBRkFuOGdBUkFqS0FJQVFRRnFzeUFCRUVNcUFnQ1ZqU0lLUXdBQWdFOWRJQXBEQUFBQUFHQnhCRUFnQ3FrTUFRdEJBQXMyQWdnZ0FTQUZRUXhxSUFWQkNHb1FVaWdDQUJEVEJDQUlJQUVRUENJR0VEUWhDUXNDUUNBQklBa1FFU2dDQUNJQ1JRUkFJQVVvQWhBZ0FVRUlhaUlDS0FJQU5nSUFJQUlnQlNnQ0VEWUNBQ0FCSUFrUUVTQUNOZ0lBSUFVb0FoQW9BZ0JGRFFFZ0JTZ0NFQ0VDSUFFZ0JTZ0NFQ2dDQUNnQ0JDQUdFRFFRRVNBQ05nSUFEQUVMSUFVb0FoQWdBaWdDQURZQ0FDQUNJQVVvQWhBMkFnQUxJQVZCRUdvUVh5RUhJQUVRSXlJQklBRW9BZ0JCQVdvMkFnQWdCVUVCT2dBZklBVkJFR29pQVNnQ0FDRUNJQUZCQURZQ0FDQUNCRUFnQVJBbElBSVFrUllMQ3lBQUlBVkJFR29nQnhBeElBVkJIMm9Rb2dFZ0JVRWdhaVFBQzRRQkFDTUFRUkJySWdFa0FDQUJJQUkyQWd3Q1FDQUNLQUlVUWNNRFJ3MEFJQUlvQWhoRkRRQWdBQ2dDUENJQ1JRMEFJQUlnQWlnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWl3UkFBQXRBQWhCQW5GRkRRQWdBU0FBS0FJb0lBRkJER29ROHd3Z0FTZ0NEQ2dDR0NJQ0lBQWdBaWdDQUNnQ0NCRUJBQXNnQVVFUWFpUUFRUUFMb2dFQkJIOGpBRUVRYXlJQkpBQWdBVUVJYWlJRElBQkJQR28yQWdBZ0F5QUFLQUk4TmdJRUlBSW9BbWhCQkVZRVFDQURLQUlBSUFJMkFnQUxJQUlnQWlnQ0FDZ0N2QUVSQUFBaUJCQVdRUUZPQkVBZ0FFRXNhaUVGUVFBaEFnTkFJQVVRaVFRZ0JDQUNFQkVvQWdBaUJpQUFJQVlvQWdBb0FnZ1JBUUFnQWtFQmFpSUNJQVFRRmtnTkFBc0xJQU1vQWdBZ0F5Z0NCRFlDQUNBQlFSQnFKQUJCQUF1b0FRRUNmeU1BUVNCcklnRWtBQ0FCSUFJMkFod2dBRUVzYWlJREVJa0VJQUlnQWlnQ0FDZ0N2QUVSQUFBaUJDQUFJQVFvQWdBb0FnZ1JBUUFnQWlnQ2FCRDNEQVJBSUFJZ0FpZ0NBQ2dDdkFFUkFBQVE2d1VFUUNBQklBQW9BaVFnQXhDTEJRc2dBVUVRYWlBREVPNEdJQUFvQWlBaEFDQUJJQUZCRUdvZ0FVRWNhaEQyRENBQUlBRVE5UXdnQVJEbUFpQUJRUkJxRUNBYUN5QURFSWtFSUFGQklHb2tBRUVBQytzQ0FRSi9Jd0JCSUdzaUFTUUFJQUVnQWpZQ0hDQUFRU3hxSWdNUWlRUWdBaUFDS0FJQUtBTEFBUkVBQUNJRUlBQWdCQ2dDQUNnQ0NCRUJBQUpBSUFJb0FtZ1E5d3dFUUNBQ0lBSW9BZ0FvQXNBQkVRQUFFT3NGQkVBZ0FTQUFLQUlrSUFNUWl3VUxJQUZCRUdvZ0F4RHVCaUFBS0FJZ0lRSWdBU0FCUVJCcUlBRkJIR29ROWd3Z0FpQUJFUFVNSUFFUTVnSWdBeENKQkNBQktBSWNJZ0lnQWlnQ0FDZ0N4QUVSQUFBaUFpQUFJQUlvQWdBb0FnZ1JBUUFnQVVFUWFoQWdHZ3dCQ3lBQ0tBSm9FUFFNQkVBZ0FpZ0NhRUd6QVVZRVFDQUNJQUlvQWdBb0FzUUJFUUFBSWdJZ0FpZ0NBQ2dDRkJFQUFCQkxRUUFRRHlnQ0FDRUNJQU5CTHhEaUJDQUJJQUlRMVFvZ0F5QUJFTUVFSUFFUUlCb2dBU2dDSENFQ0N5QUFLQUk0SVFBZ0FTQUNOZ0lBSUFBZ0FSRDREQ0FERUlZQ0RBRUxJQU1RaVFRZ0FpQUNLQUlBS0FMRUFSRUFBQ0lDSUFBZ0FpZ0NBQ2dDQ0JFQkFBc2dBVUVnYWlRQVFRQUxkUUVCZnlNQVFUQnJJZ0lrQUNBQ0lBRWdBU2dDQUNnQ3VBRVJBQUFRNndjZ0FrRVFhaUFDUWJEWEVSREZDQ0FDUVNCcUlBSkJFR29nQVNBQktBSUFLQUxBQVJFQUFCQVRFTVVJSUFBZ0FrRWdha0d5MXhFUXhRZ2dBa0VnYWhBZ0dpQUNRUkJxRUNBYUlBSVFJQm9nQWtFd2FpUUFDMFlCQW44akFFRVFheUlDSkFBZ0FpQUJFSmtXSUFCQkxHb2lBeUFDRU5NQklBSVFJQm9nQUNnQ09DRUFJQUlnQVRZQ0FDQUFJQUlRK0F3Z0F4Q0dBaUFDUVJCcUpBQUxDQUFnQUJESENCb0xLQUFnQUJBYkdpQUJCRUFEUUNBQktBSUFJUUFnQVVFSWFoRDVEQ0FCRUNvZ0FDSUJEUUFMQ3d0QUFRRi9Jd0JCRUdzaUFpUUFJQUlnQVJCZk5nSU1JQUVRSlNFQklBQWdBa0VNYWhCbkdpQUFJQUVvQWdBMkFnUWdBVUVBTmdJQUlBSkJFR29rQUNBQUMxOEJBWDhnQUNBQkVKMFdJUUlnQUNBQktBSUlOZ0lJSUFBZ0FTZ0NERFlDRENBQUlBRW9BaEEyQWhBZ0FCQWpLQUlBQkVBZ0FpQUFLQUlJS0FJRUlBQVFQQkEwRUJFZ0FFRUlhallDQUNBQlFRQTJBZ2dnQVJBalFRQTJBZ0FMQ3ljQUlBQWdBUkRyQmlBQVFSUnFJQUlRNndZZ0FFRW9haUFERU9zR0lBQkJQR29nQkJEckJndE5BUUYvSXdCQklHc2lBaVFBSUFJZ0FDQUJFT2NNTmdJWUlBSVF5d0UyQWhBZ0FrRVlhaUFDUVJCcUVKY0NSUVJBSUFBZ0FrRUlhaUFDUVJocUVHY29BZ0FRK3hVTElBSkJJR29rQUFzbEFDQUJJQUlReGdnRVFDQUFJQUVRN1FFYUR3c2dBQ0FCSUFJUUgwRUJha0YvRU8wR0M0WUJBUUovSXdCQklHc2lBeVFBSUFNZ0FTQUNFT1FNSWdRMkFoZ2dBeUFFTmdJUUlBTVF5d0UyQWdnQ1FDQURRUmhxSUFOQkNHb1FIa1VOQUNBREVNc0JOZ0lJQTBBZ0EwRVFhaENJQlNBRFFSQnFJQU5CQ0dvUUhrVU5BU0FCRUVNZ0EwRVFhaEJFSUFJUXBnTU5BQXNMSUFBZ0EwRVlhaUFEUVJCcUVPTU1JQU5CSUdva0FBdE5BUUYvSXdCQklHc2lBaVFBSUFJZ0FDQUJFT1lNTmdJWUlBSVF5d0UyQWhBZ0FrRVlhaUFDUVJCcUVKY0NSUVJBSUFBZ0FrRUlhaUFDUVJocUVHY29BZ0FRL0JVTElBSkJJR29rQUFzL0FDQUFRUUFReUFJZ0FDQUVOZ0lvSUFBZ0F6WUNKQ0FBSUFFMkFpQWdBRUdFMXhFMkFnQWdBRUVzYWhCT0dpQUFRUUEyQWp3Z0FDQUNOZ0k0SUFBTDJnRUFJQUJCT0dvZ0FoQ0dBZ0pBSUFFZ0FTZ0NBQ2dDSUJFQUFDSUNCRUFnQWlBQ0tBSUFLQUxFQVJFQUFDSUJJQUFnQVNnQ0FDZ0NDQkVCQUNBQ0tBSm9FT3dHUlEwQklBSWdBaWdDQUNnQ2ZCRUFBQ0lBSUFBb0FnQW9BaWdSQUFBaUFDQUFLUUlFUW9DQWdJQWdoRGNDQkE4TElBRWdBU2dDQUNnQ0hCRUFBQ0lCUlEwQUlBRWdBU2dDQUNnQ3ZBRVJBQUFpQWlBQUlBSW9BZ0FvQWdnUkFRQWdBU2dDYUJEc0JrVU5BQ0FCSUFFb0FnQW9BbndSQUFBaUFDQUFLQUlBS0FJb0VRQUFJZ0FnQUNrQ0JFS0FnSUNBSUlRM0FnUUxDN1lEQVFOL0l3QkJJR3NpQkNRQUlBRWdBellDSkNBRVFSQnFFRTRoQmdKQUFrQUNRQ0FDSUFJb0FnQW9BaUFSQUFBaUJRUkFJQVVnQlNnQ0FDZ0N3QUVSQUFBaUFpQUJJQUlvQWdBb0FnZ1JBUUFnQlNBRktBSUFLQUxBQVJFQUFCRHJCVVVOQVNBRVFRRTZBQThnQUNBRVFROXFJQVFRVGlJQUVPb0ZJQUFRSUJvTUF3c2dBaUFDS0FJQUtBSWNFUUFBSWdKRkRRRWdBaUFDS0FJQUtBSzhBUkVBQUNJRklBRWdCU2dDQUNnQ0NCRUJBQ0FDSUFJb0FnQW9BcndCRVFBQUVPc0ZSUVJBSUFFb0FpQWhBU0FFSUFJZ0FpZ0NBQ2dDdkFFUkFBQTJBZ0FnQmlBQklBUVFqQVVRaGdJTUFnc2dCRUVCT2dBUElBQWdCRUVQYWlBRUVFNGlBQkRxQlNBQUVDQWFEQUlMSUFFb0FpQWhBU0FFSUFVZ0JTZ0NBQ2dDd0FFUkFBQTJBZ0FnQmlBQklBUVFqQVVRaGdJTElBWWdBeERHQ0VVRVFDQUVRUUU2QUE4Z0FDQUVRUTlxSUFRUVRpSUFFT29GSUFBUUlCb01BUXNnQXlBR0VNWUlSUVJBSUFSQkFUb0FEeUFFSUFNZ0JoQ2hGaUFBSUFSQkQyb2dCQkRxQlNBRUVDQWFEQUVMSUFSQkFEb0FEeUFBSUFSQkQyb2dCQkJPSWdBUTZnVWdBQkFnR2dzZ0JoQWdHaUFFUVNCcUpBQUxQQUVCZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUVnQWhDaUZpQUFJQU5CQ0dvaUFTZ0NBQkF4R2lBQVFRUnFJQUVvQWdRUU1Sb2dBMEVRYWlRQUN6TUFJQUJCQUJESUFpQUFJQUUyQWlBZ0FFRzQyQkUyQWdBZ0FFRWthaENXQVJvZ0FFRTRhaEJPR2lBQUlBSTJBa1FnQUF1UkFRRUZmeU1BUVpBQmF5SUNKQUFnQUNBQ1FRaHFFSllCSWdNZ0FrSDRBR29RbGdFaUJDQUNRZUFBYWhDV0FTSUZJQUpCeUFCcUVKWUJJZ1lRbnhZZ0JoREFCQ0FGRU5FRElBUVErZ3dnQXhEUkF5QUJLQUpBSWdFRVFDQUJJQUpCQ0dvZ0FDQUFFRjRnQUJDTkJTQUFFUDBNRUtRV0lnQWdBU2dDQUNnQ0NCRUJBQ0FBRU1jSUdnc2dBa0dRQVdva0FBdktBd0VJZnlNQVFZQUNheUlCSkFBZ0FVR3dBV29nQUJDcEZpQUJRYkFCYWhCZUlRTWdBVUd3QVdvUWpRVWhBQ0FCUWJBQmFoRDlEQ0VDSUFGQmlBRnFJZ1ZCQUJESUFpQUZRUUEyQWlRZ0JTQUROZ0lnSUFWQmhOZ1JOZ0lBSUFGQlFHc2dBQ0FERUtnV0lRTWdBaER2QmtVRVFBTkFJQUVnQWhETENEWUNNQ0FCSUFGQk1Hb1FSQ2dDQUNJRU5nSUFJQU5CT0dwQjVOZ1JFR2dnQkNnQ0dDSUVJQU1nQkNnQ0FDZ0NDQkVCQUNBQ0lBRVF5Z2dnQWhEdkJrVU5BQXNMSUFGQnNBRnFJUWNnQUJEdkJrVUVRQ0FCUVJocVFRUnlJUVFEUUNBQklBQVF5d2cyQWdBZ0FVRWdhaUFCUVRCcUlBRVFSQkR0QVNJQ0VPNEdJQUZCR0dvZ0J5QUJRU0JxRUtjV0lBRWdBU2dDR0RZQ0VDQUJRUkJxSUFRUWlBRUVRQU5BSUFFZ0JTQUJRUkJxRUVRb0Fnd2lCaUFDRUtZV0lBRVFKU0VJSUFFdEFBQUVRQ0FESUFZZ0NCQ2xGZ3NnQVVFRWFoRG1BaUFCUVJCcUlnWW9BZ0FhSUFZUWlBVWdBVUVRYWlBRUVJZ0JEUUFMQ3lBQUlBSVFvQllnQVVFZ2FoQWdHaUFDRUNBYUlBQVE3d1pGRFFBTEN5QURFTWdJR2lBRkVKb0NHaUFCUWJBQmFpSUFRVHhxRUpnSElBQkJLR29RMFFNZ0FFRVVhaEQ2RENBQUVORURJQUZCZ0FKcUpBQUxOZ0VCZnlBQklBQW9BZ2hIQkVBRFFDQUFLQUlRR2lBQUlBQW9BZ2hCWUdvaUFqWUNDQ0FDRU00SUlBQW9BZ2dnQVVjTkFBc0xDejBCQVg4Z0FTQUNSd1JBSUFNb0FnQWhCQU5BSUFBZ0JFRmdhaUFDUVdCcUlnSVEvd1lnQXlBREtBSUFRV0JxSWdRMkFnQWdBU0FDUncwQUN3c0xVUUVCZnlBQUVJZ05JQUFRT3lBQUtBSUFJQUFvQWdRZ0FVRUVhaUlDRUt3V0lBQWdBaEF1SUFCQkJHb2dBVUVJYWhBdUlBQVFHeUFCRUNNUUxpQUJJQUVvQWdRMkFnQWdBQ0FBRUlJREVLVU5DMmtCQW44akFFRVFheUlFSkFBZ0JFRUFOZ0lNSUFCQkRHb2dCRUVNYWlBREVJRUNJQUVFUUNBQUtBSVFJQUVRcGcwaEJRc2dBQ0FGTmdJQUlBQWdCU0FDUVFWMGFpSUNOZ0lJSUFBZ0FqWUNCQ0FBRUNNZ0JTQUJRUVYwYWpZQ0FDQUVRUkJxSkFBZ0FBc01BQ0FBS0FJTUlBRVFyQTBMRHdBZ0FDZ0NEQ0FBTFFBUUVMVVdDeFFBSUFBb0Fnd2dBQ2dDQ0NnQ2NDQUJFUElHQ3lZQUlBQWdBUkM0QkNBQUlBSTJBZ3dnQUVHWTFoRTJBZ0FnQUVFUWFpQURRYWdJRUQwYUN5NEJBWDlCZnlFQ0lBQXRBQVJGQkVBZ0FDZ0NEQ0VDSUFFZ0FFRVFha0doQ0JBOUdpQUFRUUU2QUFRTElBSUxWd0VDZnlBQUtBSVFJUUlnQUVFZ0VNb0RCRUFEUUNBQUlBQW9BaEJCQVdvMkFoQWdBRUVnRU1vRERRQUxDeUFBUVNNUXlnTUVRQ0FBSUFBb0FoQkJBV28yQWhBZ0FFRWpFTW9ESVFFTElBQWdBallDRUNBQkM1WUJBUUovSUFBb0FoQWhBeUFBUVNBUXlnTUVRQU5BSUFBZ0FDZ0NFRUVCYWpZQ0VDQUFRU0FReWdNTkFBc0xRUUVoQWdKQUFrQWdBRUdYQVJES0F3MEFRUUFoQWlBQlJRMEJJQUFvQWhBaEF5QUFFSllGQkVCQkFTRUNEQUVMQTBBZ0FFRWdFTW9EUlFSQVFRQWhBZ3dDQzBFQklRSWdBQ0FBS0FJUVFRRnFOZ0lRSUFBUWxnVkZEUUFMQ3lBQUlBTTJBaEFMSUFJTFV3RUJmeU1BUVJCcklnSWtBQ0FCRU9vTklBRWdBQzBBQkRvQUVDQUJJQUFwQXdnM0F4Z2dBaUFBUVJCcUVCTTJBZ0FnQVVFZ2FrR0JDRUhFMWhFZ0FoQW5HaUFBS0FJQUlRQWdBa0VRYWlRQUlBQUxnQUVCQW44akFFRWdheUlESkFBZ0FCQTdJZ0lnQTBFSWFpQUFJQUFRZ2dOQkFXb1FxUTBnQUJDQ0F5QUNFSzRXSWdJb0FnZ2dBUkQvQmlBQ0lBSW9BZ2hCSUdvMkFnZ2dBQ0FDRUswV0lBSWdBaWdDQkJDckZpQUNLQUlBQkVBZ0FpZ0NFQm9nQWlnQ0FCb2dBaEFqS0FJQUlBSW9BZ0JyR2dzZ0EwRWdhaVFBQzBzQkFYOGpBRUVRYXlJQ0pBQUNRQ0FBS0FJRUlBQVFHeWdDQUVjRVFDQUFFRHNnQUNnQ0JDQUJFUDhHSUFBZ0FDZ0NCRUVnYWpZQ0JBd0JDeUFBSUFFUXR4WUxJQUpCRUdva0FBc3NBQ0FBSUFFMkFnQWdBQ0FDTFFBUU9nQUVJQUFnQWlrREdEY0RDQ0FBUVJCcUlBSkJJR29RSWhvZ0FBc3NBUUYvSUFCQndBRnFJZ0FRdUFJRWZ5QUNCU0FBRUpBQktBSUFJZ0FnQVNBQUtBSUFLQUlZRVFNQUN3c3VBUUYvUVFFaEFTQUFRY0FCYWlJQUVMZ0NCSDhnQVFVZ0FCQ1FBU2dDQUNJQUlBQW9BZ0FvQWh3UkFBQUxDelVCQjM4akFFRWdheUlGSkFBZ0FTZ0NhQ0VESUFFZ0FTZ0NBQ2dDdkFFUkFBQWlCeEFXSVFaQkFTRUJJQVZCSUdva0FDQUJDek1BSUFBb0FuUkJBVTRFUUNBQUtBSndJZ0FnQUJEWEFVRzMxUkZCdk13UlFiek1FVUVBSUFBb0FnQW9BcWdCRVFJQUN3dkxBUUVCZnlBQVFTQnFJZ0lnQVJDR0FpQUFRUUEyQWl3Q1FDQUFLQUl3SWdGQkNIRUVmeUFBSUFJUUV5QUNFQjlxTmdJc0lBQWdBaEFUSUFJUUV5QUFLQUlzRUpFRklBQW9BakFGSUFFTFFSQnhSUTBBSUFBZ0FoQWZJZ0VnQWhBVGFqWUNMQ0FDSUFJUVhSQk5JQUFnQWhBVElBSVFFeUFDRUI5cUVOUUlJQUF0QURCQkEzRkZEUUFDUUNBQlFYOU1CRUFnQVVHQmdJQ0FlR29oQWdOQUlBSWhBU0FBUWYvLy8vOEhFUFlHUVFFaEFpQUJRUUJJRFFBTERBRUxJQUZGRFFFTElBQWdBUkQyQmdzTGxob0JCbjhqQUVIZ0FHc2lCaVFBSUFFb0FtZ2hCU0FCSUFFb0FnQW9Bc0FCRVFBQUlRSWdBU0FCS0FJQUtBTEVBUkVBQUNFREFrQUNRQUpBSUFJZ0FpZ0NBQ2dDb0FFUkFBQU5BQ0FESUFNb0FnQW9BcUFCRVFBQURRQWdBaUFDS0FJQUtBS0FBUkVBQUVFUFJnMEFJQU1nQXlnQ0FDZ0NnQUVSQUFCQkQwY05BUXNnQWlBQ0tBSUFLQUo0RVFBQUlBTWdBeWdDQUNnQ2VCRUFBQkRBQVEwQkN5QUJJQUlnQWlnQ0FDZ0NlQkVBQUNBQktBSUFLQUowRVFFQUlBRWdBU2dDQUNnQ2ZCRUFBQ0lFSUFRb0FnQW9BaWdSQUFBUWlRTUNRQUpBSUFJZ0FpZ0NBQ2dDb0FFUkFBQU5BQ0FDSUFJb0FnQW9Bb0FCRVFBQVFROUdEUUFnQWlBQ0tBSUFLQUtBQVJFQUFFRU9SdzBCQ3lBRlFkOStha0VDVHdSQVFRRWhCQ0FGUWJZRVJnMENRUUFoQkF3Q0MwRUFJUVFnQWlBQ0tBSUFLQUtBQVJFQUFFRU9SZzBCUVFFaEJDQUJJQVpCQ0dwQkRFRUFRUUZCQUVFQVFRQVFSU0lBSUFFb0FnQW9BblFSQVFBZ0FCQTFHZ3dCQ3dKQUFrQUNRQUpBQWtBQ1FDQUZRZWwrYWlJQVFSbExCRUFnQlVISmUyb2lBRUVOU3cwR1FRRWdBSFFpQUVHQS9nQnhEUUVnQUVHSEFYRkZEUVlNQlFzZ0FFRUVhdzRXQUFBQUFBQUFBZ0lGQlFNREF3TUZCUVVGQlFFQkFRUUxJQUlnQWlnQ0FDZ0NnQUVSQUFBUXBnSkZCRUJCQUNFRUlBTWdBeWdDQUNnQ2dBRVJBQUFRcGdKRkRRWUxRUUFoQkNBQ0lBSW9BZ0FvQXB3QkVRQUFEUVVnQXlBREtBSUFLQUtjQVJFQUFBMEZEQVFMUVFBaEJDQUNJQUlvQWdBb0FvQUJFUUFBUVF4SERRUWdBaUFDS0FJQUtBS2NBUkVBQUEwRUlBSWdBaWdDQUNnQ3BBRVJBQUFOQkNBQklBWkJDR3BCREVFQUlBSWdBaWdDQUNnQ2tBRVJBQUJCQUVFQVFRQVFSU0lBSUFFb0FnQW9BblFSQVFBZ0FCQTFHZ3dEQ3lBQklBWkJDR3BCREVFQVFRRkJBRUVBUVFBUVJTSUFJQUVvQWdBb0FuUVJBUUFnQUJBMUdnd0NDMEVBSVFRZ0FpQUNLQUlBS0FLQUFSRUFBRUVNUmcwQ0lBRWdCa0VJYWtFTVFRQWdBaUFDS0FJQUtBS1FBUkVBQUVFQVFRQkJBQkJGSWdBZ0FTZ0NBQ2dDZEJFQkFDQUFFRFVhREFFTFFRQWhCQ0FDSUFJb0FnQW9Bb0FCRVFBQVFReEdEUUVnQXlBREtBSUFLQUtBQVJFQUFFRU1SZzBCQ3dKQUFrQUNRQUpBSUFWQjZYNXFJZ0JCR1VzTkFFRUJJQUIwSWdSQmdQaVBISEZGQkVBZ0JFR2JCM0VOQWlBQVFRSkhEUUVNQXdzZ0FpQUNLQUlBS0FKNEVRQUFJQU1nQXlnQ0FDZ0NlQkVBQUJDakFpRUVEQVFMSUFWQnlYdHFJZ0JCQzBzTkFrRUJJQUIwUVlNZmNRMEFJQUJCQWtZTkFRd0NDMEVCSVFRZ0FpQUNLQUlBS0FKNEVRQUFJQU1nQXlnQ0FDZ0NlQkVBQUJDakFnMENDMEVBSVFRZ0FpQUNLQUlBS0FLQUFSRUFBQ0FESUFNb0FnQW9Bb0FCRVFBQVJ3MEJDd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FpQUNLQUlBS0FKNEVRQUFFSVVCUlFSQUlBTWdBeWdDQUNnQ2VCRUFBQkNGQVVVTkFRc0NRQ0FDSUFJb0FnQW9BbmdSQUFBUWhRRkZEUUFnQXlBREtBSUFLQUo0RVFBQUVJVUJSUTBBUVFBaEJDQUNJQUlvQWdBb0FuZ1JBQUFpQUNBQUtBSUFLQUpZRVFBQUlBTWdBeWdDQUNnQ2VCRUFBQ0lBSUFBb0FnQW9BbGdSQUFBUTd3c05EQXRCQUNFRUlBVkI2WDVxSWdCQkEwME5BU0FGUWNwN2FpSUFRUU5MRFFzZ0FFRUJhdzREQ3dzS0NRc2dBaUFDS0FJQUtBS29BUkVBQUFSQVFRRWhCQ0FESUFNb0FnQW9BcWdCRVFBQURRc0xBa0FnQWlBQ0tBSUFLQUtrQVJFQUFFVU5BQ0FESUFNb0FnQW9BcVFCRVFBQVJRMEFJQUlnQWlnQ0FDZ0NrQUVSQUFBZ0F5QURLQUlBS0FLUUFSRUFBRVlOQUVFQUlRUWdBeUFES0FJQUtBS1FBUkVBQUVFQlNnMExDeUFDSUFJb0FnQW9Bb0FCRVFBQUlRQkJBQ0VFSUFWQnludHFJZ2RCRGswTkFTQUZRZWwrYWlJSFFRbExEUXBCQVNBSGRDSUhRWnNIY1EwQ0lBZEI0QUJ4RFFNQ1FDQUNJQUlvQWdBb0Fwd0JFUUFBRFFBZ0F5QURLQUlBS0FLY0FSRUFBRVVOQUNBQ0lBSW9BZ0FvQXFRQkVRQUFCRUFnQWlBQ0tBSUFLQUtRQVJFQUFDQURJQU1vQWdBb0FwZ0JFUUFBUncwTUlBRkJxd0VRb0FJZ0FTQUdRUWhxSUFCQkFDQURJQU1vQWdBb0FwUUJFUUFBUVFCQkFFRUFFRVVpQUNBQktBSUFLQUowRVFFQUlBQVFOUm9NQ1FzZ0FVR3RBUkNnQWlBQklBWkJDR29nQUVFQVFRQWdBeUFES0FJQUtBS1VBUkVBQUNBRElBTW9BZ0FvQXBnQkVRQUFRUUFRUlNJQUlBRW9BZ0FvQW5RUkFRQWdBQkExR2d3SUN3SkFJQUlnQWlnQ0FDZ0NuQUVSQUFCRkRRQWdBeUFES0FJQUtBS2NBUkVBQUEwQUlBTWdBeWdDQUNnQ3BBRVJBQUFFUUNBQ0lBSW9BZ0FvQXBRQkVRQUFJQU1nQXlnQ0FDZ0NrQUVSQUFCSERRd2dBVUdzQVJDZ0FpQUJJQVpCQ0dvZ0FFRUFJQUlnQWlnQ0FDZ0NtQUVSQUFCQkFFRUFRUUFRUlNJQUlBRW9BZ0FvQW5RUkFRQWdBQkExR2d3SkN5QUJRYTBCRUtBQ0RBZ0xBa0FnQWlBQ0tBSUFLQUtjQVJFQUFFVU5BQ0FESUFNb0FnQW9BcHdCRVFBQVJRMEFJQUlnQWlnQ0FDZ0NsQUVSQUFBZ0F5QURLQUlBS0FLWUFSRUFBRWNOQ3lBQlFhUUNFS0FDSUFFZ0JrRUlhaUFBUVFCQkFDQURJQU1vQWdBb0FwUUJFUUFBSUFJZ0FpZ0NBQ2dDbUFFUkFBQkJBQkJGSWdBZ0FTZ0NBQ2dDZEJFQkFDQUFFRFVhREFnTElBSWdBaWdDQUNnQ25BRVJBQUFOQ2lBRElBTW9BZ0FvQXB3QkVRQUFEUW9nQWlBQ0tBSUFLQUtrQVJFQUFBUkFJQU1nQXlnQ0FDZ0NwQUVSQUFBTkNBc2dBaUFDS0FJQUtBS2tBUkVBQUVVRVFDQURJQU1vQWdBb0FxUUJFUUFBUlEwSUN5QUJRYW9CRUtBQ0lBTWdBeWdDQUNnQ3BBRVJBQUJGRFFjZ0FTQUdRUWhxSUFCQkFDQURJQU1vQWdBb0FwQUJFUUFBUVFCQkFFRUFFRVVpQUNBQktBSUFLQUowRVFFQUlBQVFOUm9NQndzZ0FFRUNhdzBIREFnTEFrQWdCMEVCYXc0T0FRRUVDUWtKQ1FFQkFRRUJBZ0lBQ3lBQ0lBSW9BZ0FvQXBBQkVRQUFJQU1nQXlnQ0FDZ0NrQUVSQUFCSERRZ2dBaUFDS0FJQUtBS1VBUkVBQUNBRElBTW9BZ0FvQXBRQkVRQUFSdzBJSUFJZ0FpZ0NBQ2dDbUFFUkFBQWdBeUFES0FJQUtBS1lBUkVBQUVjTkNBc2dBaUFDS0FJQUtBS2NBUkVBQUFSQUlBTWdBeWdDQUNnQ3BBRVJBQUFOQ0FzZ0FpQUNLQUlBS0FLa0FSRUFBQVJBSUFNZ0F5Z0NBQ2dDbkFFUkFBQU5DQXNnQWlBQ0tBSUFLQUtBQVJFQUFDQURJQU1vQWdBb0FvQUJFUUFBUncwSEFrQWdBaUFDS0FJQUtBS2NBUkVBQUVVTkFDQURJQU1vQWdBb0Fwd0JFUUFBUlEwQUlBSWdBaWdDQUNnQ2xBRVJBQUFnQXlBREtBSUFLQUtVQVJFQUFFY05DQ0FDSUFJb0FnQW9BcGdCRVFBQUlBTWdBeWdDQUNnQ21BRVJBQUJIRFFnTEFrQWdBaUFDS0FJQUtBS2tBUkVBQUVVTkFDQURJQU1vQWdBb0FxUUJFUUFBUlEwQUlBSWdBaWdDQUNnQ2tBRVJBQUFnQXlBREtBSUFLQUtRQVJFQUFFY05DQXNnQXlBREtBSUFLQUtrQVJFQUFFVUVRQ0FESUFNb0FnQW9BcHdCRVFBQVJRMENDeUFCSUFFb0FnQW9BbndSQUFBZ0F5QURLQUlBS0FKNEVRQUFFSThCSUFFZ0FTZ0NBQ2dDZkJFQUFDSUFJQUFvQWdBb0FpZ1JBQUFRd3dJTUFRc2dBeUFES0FJQUtBS2tBUkVBQUVVTkFDQUNJQUlvQWdBb0FxUUJFUUFBUlEwR0lBTWdBeWdDQUNnQ2tBRVJBQUFnQWlBQ0tBSUFLQUtRQVJFQUFFY05CZ3NnQlVIS2Uyb2lBRUVPUzBFQklBQjBRWS8rQVhGRmNnMENEQUVMQWtBZ0FpQUNLQUlBS0FLY0FSRUFBQTBBSUFNZ0F5Z0NBQ2dDbkFFUkFBQkZEUUFnQWlBQ0tBSUFLQUtrQVJFQUFFVU5CU0FDSUFJb0FnQW9BcEFCRVFBQUlBTWdBeWdDQUNnQ21BRVJBQUJIRFFVZ0FpQUNLQUlBS0FLUUFSRUFBQ0FESUFNb0FnQW9BcFFCRVFBQVJ3MEZJQUZCdWdRUW9BSU1BZ3NDUUNBQ0lBSW9BZ0FvQXB3QkVRQUFSUTBBSUFNZ0F5Z0NBQ2dDbkFFUkFBQU5BQ0FESUFNb0FnQW9BcVFCRVFBQURRVWdBVUc4QkJDZ0Fnd0NDd0pBSUFJZ0FpZ0NBQ2dDbkFFUkFBQkZEUUFnQXlBREtBSUFLQUtjQVJFQUFFVU5BQ0FDSUFJb0FnQW9BcFFCRVFBQUlBTWdBeWdDQUNnQ2xBRVJBQUJIRFFVZ0FpQUNLQUlBS0FLVUFSRUFBQ0FESUFNb0FnQW9BcGdCRVFBQVJ3MEZJQUZCdlFRUW9BSU1BZ3NnQWlBQ0tBSUFLQUtjQVJFQUFBMEVJQU1nQXlnQ0FDZ0NuQUVSQUFBTkJDQUNJQUlvQWdBb0FxUUJFUUFBQkVBZ0F5QURLQUlBS0FLa0FSRUFBQTBCQ3lBQ0lBSW9BZ0FvQXFRQkVRQUFSUVJBSUFNZ0F5Z0NBQ2dDcEFFUkFBQkZEUUVMSUFJZ0FpZ0NBQ2dDcEFFUkFBQkZEUVFnQVVHN0JCQ2dBZ3dCQ3lBQklBRW9BZ0FvQW5nUkFBQWdBaUFDS0FJQUtBSjRFUUFBRU1BQkRRTUxRUUVoQkF3Q0N5QUNJQUlvQWdBb0FuZ1JBQUFRaFFGRkRRRWdBeUFES0FJQUtBSjRFUUFBRUlVQklRQWdCa0hnQUdva0FDQUFEd3NnQWlBQ0tBSUFLQUo0RVFBQUVJVUJCRUFnQXlBREtBSUFLQUo0RVFBQUVJVUJEUUVMSUFWQnVRUkdCRUFnQXlBREtBSUFLQUo0RVFBQUVJVUJEUUVMSUFGQnZBUkJyUUVnQlVHNUJFWWJFS0FDUVFFaEJDQURJQU1vQWdBb0FuZ1JBQUFRaFFGRkRRQWdBU0FESUFNb0FnQW9BbmdSQUFBZ0FTZ0NBQ2dDZEJFQkFBc2dCa0hnQUdva0FDQUVDellCQVg4akFFRVFheUlCSkFBZ0FFRUFOZ0lJSUFCQ0FEY0NBQ0FCUVFBMkFnd2dBRUVNYWlBQlFReHFFS0VMSUFGQkVHb2tBQXNFQUVFQUMrZ0NBUU4vSXdCQjRBQnJJZ1FrQUNBQktBSm9JUU1nQVNBQktBSUFLQUs4QVJFQUFDRUNBa0FDUUFKQUlBTkJlbW9pQTBFSFN3MEFBa0FDUUFKQUlBTkJBV3NPQXdBREFRSUxJQUlnQWlnQ0FDZ0NnQUVSQUFCQkRFWU5BMEVBSVFNZ0FFRUhJQVJCQ0dwQkRFRUFRUUZCQUVFQVFRQVFSU0lBSUFJUXR3UWhBaUFBRURVYUlBSkZEUVFnQVNBQ0lBRW9BZ0FvQXJnQkVRRUFEQU1MUVFBaEF5QUNJQUlvQWdBb0FvQUJFUUFBRUtZQ0RRSU1Bd3NnQWlBQ0tBSUFLQUtBQVJFQUFCQ21BZzBCSUFJZ0FpZ0NBQ2dDZ0FFUkFBQkJBVVlOQVNBQ0lBSW9BZ0FvQW9BQkVRQUFRUU5HRFFGQkFDRURJQUlnQWlnQ0FDZ0NnQUVSQUFCQkFrWU5BUXdDQzBFQUlRTWdBaUFDS0FJQUtBS0FBUkVBQUVFQlJ3MEJDeUFCSUFJZ0FpZ0NBQ2dDZUJFQUFDQUJLQUlBS0FKMEVRRUFJQUVnQVNnQ0FDZ0NmQkVBQUNJQUlBQW9BZ0FvQWlnUkFBQVF3d0pCQVNFREN5QUVRZUFBYWlRQUlBTUxKUUFnQUJDTURSb2dBUVJBQTBBZ0FTZ0NBQ0VBSUFGQkNHb1FzZ0lnQUNJQkRRQUxDd3NzQUNBQklBQW9BZ2hIQkVBRFFDQUFFQ01hSUFBZ0FDZ0NDRUY4YWpZQ0NDQUFLQUlJSUFGSERRQUxDd3M3QVFGL0lBQWdBQ2dDQkVFRWFpSUJOZ0lFSUFFZ0FDZ0NBQ0lCS0FJQWEwR0FJRVlFUUNBQUlBRkJCR28yQWdBZ0FDQUJLQUlFTmdJRUN3czdBQ0FBSUFFb0FnUWdBU2dDRUVFSWRrSDgvLzhIY1dvaUFDQUJFSThGQkg5QkFBVWdBQ2dDQUNBQktBSVFRZjhIY1VFQ2RHb0xFSmtCR2d1bEFRRUNmeU1BUVJCcklnRWtBQ0FBRUY0YUlBRkJDR29nQUJER0ZpQUJJQUFRamcwZ0FVRUlhaUFCRUpBRkJFQURRQ0FCS0FJTUdpQUJRUWhxRU1VV0lBRkJDR29nQVJDUUJRMEFDd3NnQUJCZVFRQTJBZ0FnQUJEUUFVRUNTd1JBQTBBZ0FDZ0NCQ2dDQUJBcUlBQVF6QU1nQUJEUUFVRUNTdzBBQ3dzZ0FCRFFBVUYvYWlJQ1FRRk5CRUFnQUVHQUJFR0FDQ0FDUVFGckd6WUNFQXNnQVVFUWFpUUFDNGNDQVFsL0l3QkJFR3NpQXlRQUFuOGdBVUYvRUtnRFJRUkFJQUFvQWd3aEJDQUFLQUlJSVFVZ0FDZ0NHQ0FBS0FJY1JnUkFRWDhnQUMwQU1FRVFjVVVOQWhvZ0FDZ0NHQ0VHSUFBb0FoUWhCeUFBS0FJc0lRZ2dBQ2dDRkNFSklBQkJJR29pQWtFQUVPSUVJQUlnQWhCZEVFMGdBQ0FDRUJNaUNpQUNFQjhnQ21vUTFBZ2dBQ0FHSUFkckVQWUdJQUFnQUNnQ0ZDQUlJQWxyYWpZQ0xBc2dBeUFBS0FJWVFRRnFOZ0lNSUFBZ0EwRU1haUFBUVN4cUVGSW9BZ0EyQWl3Z0FDMEFNRUVJY1FSQUlBQWdBRUVnYWhBVElnSWdBaUFFSUFWcmFpQUFLQUlzRUpFRkN5QUFJQUZCR0hSQkdIVVFqdzBNQVFzZ0FSQ1FEUXNoQUNBRFFSQnFKQUFnQUF1aUFRRUJmeUFBS0FJc0lBQW9BaGhKQkVBZ0FDQUFLQUlZTmdJc0N3SkFJQUFvQWdnZ0FDZ0NERThOQUNBQlFYOFFxQU1FUUNBQUlBQW9BZ2dnQUNnQ0RFRi9haUFBS0FJc0VKRUZJQUVRa0EwUEN5QUFMUUF3UVJCeFJRUkFJQUVRMGdnZ0FDZ0NERUYvYWl3QUFCQ29BMFVOQVFzZ0FDQUFLQUlJSUFBb0FneEJmMm9nQUNnQ0xCQ1JCU0FCRU5JSUlRSWdBQ2dDRENBQ09nQUFJQUVQQzBGL0MyVUFJQUFvQWl3Z0FDZ0NHRWtFUUNBQUlBQW9BaGcyQWl3TEFrQWdBQzBBTUVFSWNVVU5BQ0FBS0FJUUlBQW9BaXhKQkVBZ0FDQUFLQUlJSUFBb0Fnd2dBQ2dDTEJDUkJRc2dBQ2dDRENBQUtBSVFUdzBBSUFBb0Fnd3NBQUFRMWdNUEMwRi9DeG9BSUFBZ0FTQUNLUU1JUVFBZ0F5QUJLQUlBS0FJUUVSb0FDNEVFQVFGL0l3QkJFR3NpQlNRQUlBVkJGRFlDRENBRlFSUTJBZ2dDUUNBQkVJY0ZEUUFnQVNnQ0xFSHVBRVlOQUFKQUFrQUNRQUpBSUFKQkFrWUVRQ0FCSUFOQkFpQUVFT0VDRFFFTElBTkJBa2NOQVNBQklBSkJBaUFFRU9FQ1JRMEJDeUFGUVFJMkFnZ2dCVUVDTmdJTURBTUxBa0FDUUNBQ1FRRkdCRUFnQVNBRFFRRWdCQkRoQWcwQkN5QURRUUZIRFFFZ0FTQUNRUUVnQkJEaEFrVU5BUXNnQlVFQk5nSUlJQVZCQVRZQ0RBd0RDd0pBQWtBZ0FrRURSZ1JBSUFFZ0EwRURJQVFRNFFJTkFRc2dBMEVEUncwQklBRWdBa0VESUFRUTRRSkZEUUVMSUFWQkF6WUNDQ0FGUVFNMkFnd01Bd3NnQWhDbUFrVU5BaUFERUtZQ1JRMENJQUVnQWlBRElBUVE0UUpGQkVBZ0FTQURJQUlnQkJEaEFrVU5Bd3NDUUFKQUlBSVE3d1VFUUNBREVPOEZEUUVMSUFJUWd3TkZEUUVnQXhDREEwVU5BUXNnQWhDR0JTQURFSVlGVGcwQ0RBRUxJQUlRZ3dNRVFDQUNFSVlGSUFNUWhnVktEUUlMSUFNUWd3TUVRQ0FERUlZRklBSVFoZ1ZLRFFFTElBSVE3d1VFUUNBQ0lBTVE0Z3dOQWlBRklBSVEzd3dpQVRZQ0NDQUZJQUUyQWd3TUF3c2dBeER2QlVVTkFpQURJQUlRNGd3TkFDQUZJQU1RM3d3aUFUWUNDQ0FGSUFFMkFnd01BZ3NnQlNBRE5nSUlJQVVnQXpZQ0RBd0JDeUFGSUFJMkFnZ2dCU0FDTmdJTUN5QUFJQVZCREdvZ0JVRUlhaEQvQXlBRlFSQnFKQUFMbndJQ0FYOERmaUFCS0FJc0lBRW9BaGhKQkVBZ0FTQUJLQUlZTmdJc0MwSi9JUWdDUUNBRVFSaHhJZ1ZGSUFOQkFVWkJBQ0FGUVJoR0czSU5BQ0FCS0FJc0lnVUVRQ0FGSUFGQklHb1FFMnVzSVFZTElBTkJBa3NOQUFKQUFrQUNRQ0FEUVFGckRnSUFBUUlMSUFSQkNIRUVRQ0FCS0FJTUlBRW9BZ2hyckNFSERBSUxJQUVvQWhnZ0FTZ0NGR3VzSVFjTUFRc2dCaUVIQ3lBQ0lBZDhJZ0pDQUZNZ0JpQUNVM0lOQUNBRVFRaHhJUU1DUUNBQ1VBMEFJQU1FUUNBQktBSU1SUTBDQ3lBRVFSQnhSUTBBSUFFb0FoaEZEUUVMSUFNRVFDQUJJQUVvQWdnZ0FTZ0NDQ0FDcDJvZ0FTZ0NMQkNSQlFzZ0JFRVFjUVJBSUFFZ0FTZ0NGQ0FCS0FJY0VOUUlJQUVnQXFjUTlnWUxJQUloQ0FzZ0FDQUlFTk1JQ3drQUlBQVE5d1lRS2dzVEFDQUFJQUFvQWdCQmRHb29BZ0JxRUpFTkN4TUFJQUFnQUNnQ0FFRjBhaWdDQUdvUStRWUxLQUVCZjBFUUVDWWlBeUFBSUFFUWtnMGdBQ0FERUxrRUlBQkJBRG9BelFFZ0FDQUNPZ0RNQVFzSkFDQUFFUG9HRUNvTE1nRUJmeUFBUWF6S0VTZ0NBQ0lCTmdJQUlBQWdBVUYwYWlnQ0FHcEJ1TW9SS0FJQU5nSUFJQUJCQ0dvUTl3WWFJQUFMSkFBZ0FTQUNJQUVvQWdBb0FnZ1JBUUFnQUNBQlFRUnFJZ0FRdUFZZ0FDQUNFTzBLQ3pFQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQWdBU2dDQ0VFTWJHcEJDR29nQWtFTWFoREpCeUFDUVJCcUpBQUxRUUVCZnlBQVFiREtFU2dDQUNJQ05nSUFJQUFnQWtGMGFpZ0NBR3BCdE1vUktBSUFOZ0lBSUFCQkFEWUNCQ0FBSUFBb0FnQkJkR29vQWdCcUlBRVFoUTBMVmdFQmZ5TUFRUkJySWdNa0FDQUFJQUVRWENBRFFRaHFJQUZCSEdvaUFCQzRCaUFBSUFJUTdRb2dBVUVCRU5jTElBTkJDR29RV1NBQktBSVlCRUFnQXlBQktBSVlJQUlRMUJZZ0F4QlpDeUFEUVJCcUpBQUxSd0VDZnlBQVFUeHFFSllOSVFFZ0FFR1F5aEUyQWdBZ0FVR2t5aEUyQWdBZ0FDQUFRUWhxSWdJUTFoWWdBRUdReWhFMkFnQWdBVUdreWhFMkFnQWdBa0VJRUpVTklBQUxOZ0VDZnlBQUtBSVFJUVFnQUNnQ0NDRURBMEFnQkNBRElBSVFsd01nQUNBQUtBSUlRUVJxSWdNMkFnZ2dBVUYvYWlJQkRRQUxDeU1BSUFBdEFBUUVRQ0FBS0FJQUdpQUJRUWhxRUxJQ0N5QUJCRUFnQUNnQ0FCb0xDOWNCQWdOL0FYMGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUFrQWdBaUFCUVFGR0JIOUJBZ1VnQVNBQlFYOXFjVVVOQVNBQkVJb0NDeUlCTmdJTUN3SkFJQUVnQUJBOElnTkxCRUFnQUNBQkVKa05EQUVMSUFFZ0EwOE5BQ0FERUxvQklRUUNmeUFBRUY0b0FnQ3pJQUFRdXdRcUFnQ1ZqU0lGUXdBQWdFOWRJQVZEQUFBQUFHQnhCRUFnQmFrTUFRdEJBQXNoQVNBQ0FuOGdCQVJBSUFFUWlnUU1BUXNnQVJDS0FnczJBZ2dnQWlBQ1FReHFJQUpCQ0dvUVVpZ0NBQ0lCTmdJTUlBRWdBMDhOQUNBQUlBRVFtUTBMSUFKQkVHb2tBQXR0QVFGL0l3QkJFR3NpQkNRQUlBQWdBUkNNRFNJQUtBSUFRUndRbEFJZ0JFRUlhaUFBUVFBUXd3RVFrUUVpQUNnQ0FDSUJRUWhxSUFNUXNBTWdBU0FEUVJCcUtBSUFOZ0lZSUFBUUpVRUJPZ0FFSUFBb0FnQWdBallDQkNBQUtBSUFRUUEyQWdBZ0JFRVFhaVFBQy84REFnVi9BWDBqQUVFZ2F5SUVKQUFnQVJCZUdpQUNFUEVKSVFjZ0FSQThJUVVnQkVFQU9nQWZBa0FDUUNBRlJRMEFJQUVnQnlBRkVEUWlDQkFSS0FJQUlnWkZEUUFEUUNBR0tBSUFJZ1pGRFFFZ0J5QUdLQUlFUndSQUlBWW9BZ1FnQlJBMElBaEhEUUlMSUFFUXV3UWdCa0VJYWlBQ0VLWURSUTBBQ3d3QkN5QUVRUkJxSUFFZ0J5QURFTndXSUFFUVhpZ0NBQ0VDSUFFUXV3UWhBd0pBSUFVRVFDQURLZ0lBSUFXemxDQUNRUUZxczExQkFYTU5BUXNnQkNBRkVMb0JRUUZ6SUFWQkFYUnlOZ0lNSUFRQ2Z5QUJFRjRvQWdCQkFXcXpJQUVRdXdRcUFnQ1ZqU0lKUXdBQWdFOWRJQWxEQUFBQUFHQnhCRUFnQ2FrTUFRdEJBQXMyQWdnZ0FTQUVRUXhxSUFSQkNHb1FVaWdDQUJEYkZpQUhJQUVRUENJRkVEUWhDQXNDUUNBQklBZ1FFU2dDQUNJQ1JRUkFJQVFvQWhBZ0FVRU1haUlDS0FJQU5nSUFJQUlnQkNnQ0VEWUNBQ0FCSUFnUUVTQUNOZ0lBSUFRb0FoQW9BZ0JGRFFFZ0JDZ0NFQ0VDSUFFZ0JDZ0NFQ2dDQUNnQ0JDQUZFRFFRRVNBQ05nSUFEQUVMSUFRb0FoQWdBaWdDQURZQ0FDQUNJQVFvQWhBMkFnQUxJQVJCRUdvUVh5RUdJQUVRWGlJQklBRW9BZ0JCQVdvMkFnQWdCRUVCT2dBZklBUkJFR29pQVNnQ0FDRUNJQUZCQURZQ0FDQUNCRUFnQVJBbElBSVEyaFlMQ3lBQUlBUkJFR29nQmhBeElBUkJIMm9Rb2dFZ0JFRWdhaVFBQzIwQkFuOGpBRUVnYXlJRUpBQUNRQ0FBRUJzb0FnQWdBQ2dDQkd0QkFuVWdBVThFUUNBQUlBRWdBaENCRVF3QkN5QUFFRHNoQXlBRVFRaHFJQUFnQUJBV0lBRnFFTWtGSUFBUUZpQURFTEVHSWdNZ0FTQUNFTmtXSUFBZ0F4RGxCeUFERUs4R0N5QUVRU0JxSkFBTEpRRUJmeU1BUVJCcklnRWtBQ0FCUVFBMkFnd2dBQ0FCUVF4cUVNTUtJQUZCRUdva0FBc3RBUUYvSXdCQkVHc2lBU1FBSUFGQkFEWUNEQ0FBSUFGQkRHb1FaeG9nQUVFRWFoRGZGaUFCUVJCcUpBQUxUUUVCZnlNQVFSQnJJZ0VrQUNBQUVPQVdJQUJCREdvUWtBc2dBVUVBTmdJTUlBQkJGR29nQVVFTWFoQ3RBaUFCUVlDQWdQd0ROZ0lJSUFCQkdHb2dBVUVJYWhDdEFpQUJRUkJxSkFBTE5RRUJmeUFBRUJZaUF5QUJTUVJBSUFBZ0FTQURheUFDRU40V0R3c2dBeUFCU3dSQUlBQWdBQ2dDQUNBQlFRSjBhaERNQlFzTExBRUJmeU1BUVJCcklnTWtBQ0FEUVFocUlBRWdBaUFDRU4wV0lBQWdBMEVJYWhEVUJDQURRUkJxSkFBTHJRRUJCWDhqQUVFUWF5SUNKQUFnQUJEaEZpQUFRUnhxRUpNQkdpQUFRVEJxRU5VQlFhakZFUkNvRGlBQ1FRQTZBQTlCdE1VUklRRkIvZ0FoQXdOQUlBSWdBem9BRGlBQUlBSkJEbW9nQTBFWWRFRVlkUkRWQ0NBQkxRQUJJUU1nQVVFQmFpSUZJUUVnQlVIT3hSRkhEUUFMQTBBZ0FDQUVRUU4wSWdGQjFNVVJhaWdDQUNBQlFkREZFV29vQWdBUTFRZ2dCRUVCYWlJRVFTcEhEUUFMSUFCQnR3RTJBaXdnQWtFUWFpUUFDeVlBSUFBb0FnQWFJQUFvQWdBZ0FCQzZCR29hSUFBb0FnQWFJQUFvQWdBZ0FCQ0VCR29hQ3kwQUlBRWdBQ2dDQ0VjRVFBTkFJQUFvQWhBYUlBQWdBQ2dDQ0VGL2FqWUNDQ0FBS0FJSUlBRkhEUUFMQ3dzbUFDQUFLQUlBR2lBQUtBSUFJQUFRdWdScUdpQUFLQUlBSUFBUXVnUnFHaUFBS0FJQUdnczlBUUYvSUFFZ0FrY0VRQ0FES0FJQUlRUURRQ0FBSUFSQmYyb2dBa0YvYWlJQ0VPTUlJQU1nQXlnQ0FFRi9haUlFTmdJQUlBRWdBa2NOQUFzTEN6OEJBWDhqQUVFUWF5SUJKQUFnQUJBN0dpQUJRWDgyQWd3Z0FVSC8vLy8vQnpZQ0NDQUJRUXhxSUFGQkNHb1FwQUVvQWdBaEFDQUJRUkJxSkFBZ0FBdFJBUUYvSUFBUXJnMGdBQkE3SUFBb0FnQWdBQ2dDQkNBQlFRUnFJZ0lRNkJZZ0FDQUNFQzRnQUVFRWFpQUJRUWhxRUM0Z0FCQWJJQUVRSXhBdUlBRWdBU2dDQkRZQ0FDQUFJQUFRaEFRUTV4WUxZd0VDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWdBUkQ2QlNFRkN5QUFJQVUyQWdBZ0FDQUNJQVZxSWdJMkFnZ2dBQ0FDTmdJRUlBQVFJeUFCSUFWcU5nSUFJQVJCRUdva0FDQUFDMWtCQW44akFFRVFheUlDSkFBZ0FpQUJOZ0lNSUFBUTZSWWlBeUFCVHdSQUlBQVF1Z1FpQUNBRFFRRjJTUVJBSUFJZ0FFRUJkRFlDQ0NBQ1FRaHFJQUpCREdvUVVpZ0NBQ0VEQ3lBQ1FSQnFKQUFnQXc4TEVHNEFDellCQVg4Z0FTQUFLQUlJUndSQUEwQWdBQ2dDRUJvZ0FDQUFLQUlJUVhCcUlnSTJBZ2dnQWhDeUFpQUFLQUlJSUFGSERRQUxDd3M5QVFGL0lBRWdBa2NFUUNBREtBSUFJUVFEUUNBQUlBUkJjR29nQWtGd2FpSUNFT1FJSUFNZ0F5Z0NBRUZ3YWlJRU5nSUFJQUVnQWtjTkFBc0xDMUVCQVg4Z0FCRDNCU0FBRURzZ0FDZ0NBQ0FBS0FJRUlBRkJCR29pQWhEdUZpQUFJQUlRTGlBQVFRUnFJQUZCQ0dvUUxpQUFFQnNnQVJBakVDNGdBU0FCS0FJRU5nSUFJQUFnQUJDb0FSQ2ZCZ3VaQVFFRWZ5TUFRUkJySWdVa0FDQUJJQUlRMWdnaUJFRnZUUVJBQWtBZ0JFRUtUUVJBSUFBZ0JCRFVBU0FBSVFNTUFRc2dBQ0FBSUFRUTVBSkJBV29pQmhDQkJDSURFT0VCSUFBZ0JoRHBBU0FBSUFRUXZBRUxJQUVnQWtjRVFBTkFJQU1nQVJDVUFTQURRUUZxSVFNZ0FVRUJhaUlCSUFKSERRQUxDeUFGUVFBNkFBOGdBeUFGUVE5cUVKUUJJQVZCRUdva0FBOExFRzRBQ3pVQkFYOGpBRUVRYXlJQkpBQWdBVUVJYWlBQUVGd2dBVUVJYWhENkFVRWdFTjRCSVFBZ0FVRUlhaEJaSUFGQkVHb2tBQ0FBQzNzQkFYOGpBRUVnYXlJREpBQWdBeUFCTmdJUUlBTWdBRFlDR0NBRElBSTJBZ2hCQVNFQ0FrQWdBMEVZYWlBRFFSQnFFQjVGRFFBRFFDQURJQU1vQWhnZ0F5Z0NDQkRFQWtVRVFFRUFJUUlNQWdzZ0EwRVlhaEJtR2lBRFFRaHFFR1lhSUFOQkdHb2dBMEVRYWhBZURRQUxDeUFEUVNCcUpBQWdBZ3NhQUVGL0lRRWdBQzBBQkFSL0lBRUZJQUJCQVRvQUJFRjlDd3N4QVFGL0lBRWdBQ2dDQkNJQ1J3UkFBMEFnQUJBN0dpQUNRWEJxSWdJUXNnSWdBU0FDUncwQUN3c2dBQ0FCTmdJRUN4TUFJQUFnQUNnQ0FFRjBhaWdDQUdvUW5nMExFd0FnQUNBQUtBSUFRWFJxS0FJQWFoRHdCUXNuQUNBQUxRQUVCRUFnQUNnQ0FCb2dBVUVRYWhEeERRc2dBUVJBSUFBb0FnQWFJQUVRS2dzTHhoQUJBWDhDUUNBQVFYOXFJZ0JCQzBzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkJBV3NPQ3dBQ0JBVUdCd2dKQ2dzREFRc2dBVUYvYWlJQVFRdExEUXdDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkJBV3NPQ3hjSUJBVUdCd01BQ1FvQkFnc2dBa0hnQURZQ0FBd1ZDeUFDUVNRMkFnQU1GQXNnQWtHSUFUWUNBQXdUQ3lBQ1FkMEFOZ0lBREJJTElBSkJOVFlDQUF3UkN5QUNRVGcyQWdBTUVBc2dBa0hKQURZQ0FBd1BDeUFDUWN3QU5nSUFEQTRMSUFKQi9nQTJBZ0FNRFFzZ0FrSHhBRFlDQUF3TUN5QUNRZlFBTmdJQURBc0xJQUZCZm1vaUFFRUtTdzBMQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUFRUUZyRGdvSUJBVUdCd0FCQ1FvQ0F3c2dBa0hjQURZQ0FBd1VDeUFDUWQ4QU5nSUFEQk1MSUFKQkl6WUNBQXdTQ3lBQ1FaSUJOZ0lBREJFTElBSkJORFlDQUF3UUN5QUNRVGMyQWdBTUR3c2dBa0hJQURZQ0FBd09DeUFDUWNzQU5nSUFEQTBMSUFKQi9RQTJBZ0FNREFzZ0FrSHdBRFlDQUF3TEN5QUNRZk1BTmdJQURBb0xJQUZCZjJvaUFFRUxTdzBLQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUFRUUZyRGdzSUZRQUJBZ01FQlFrS0JnY0xJQUpCTXpZQ0FBd1RDeUFDUVRZMkFnQU1FZ3NnQWtISEFEWUNBQXdSQ3lBQ1Fjb0FOZ0lBREJBTElBSkIyd0EyQWdBTUR3c2dBa0hlQURZQ0FBd09DeUFDUVNJMkFnQU1EUXNnQWtHSEFUWUNBQXdNQ3lBQ1FaRUJOZ0lBREFzTElBSkI3d0EyQWdBTUNnc2dBa0h5QURZQ0FBd0pDeUFCUVg5cUlnQkJDa3NOQ1FKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBRUVCYXc0S0F3Z0VCUVlIQUFFSkNnSUxJQUpCRXpZQ0FBd1NDeUFDUVJRMkFnQU1FUXNnQWtFWU5nSUFEQkFMSUFKQkdUWUNBQXdQQ3lBQ1FRODJBZ0FNRGdzZ0FrRVFOZ0lBREEwTElBSkJFVFlDQUF3TUN5QUNRUkkyQWdBTUN3c2dBa0VYTmdJQURBb0xJQUpCRlRZQ0FBd0pDeUFDUVJZMkFnQU1DQXNnQVVGL2FpSUFRUXRMRFFnQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCQVdzT0N3a0tFd0FCQWdNRUJRWUhDQXNnQWtFc05nSUFEQkVMSUFKQk9UWUNBQXdRQ3lBQ1FjQUFOZ0lBREE4TElBSkJ6UUEyQWdBTURnc2dBa0hVQURZQ0FBd05DeUFDUWVFQU5nSUFEQXdMSUFKQjZBQTJBZ0FNQ3dzZ0FrRWFOZ0lBREFvTElBSkIvd0EyQWdBTUNRc2dBa0dKQVRZQ0FBd0lDeUFDUWZVQU5nSUFEQWNMSUFGQmYyb2lBRUVMU3cwSEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBUVFGckRnc0pDZ0FTQVFJREJBVUdCd2dMSUFKQktEWUNBQXdRQ3lBQ1FUdzJBZ0FNRHdzZ0FrSEVBRFlDQUF3T0N5QUNRZEFBTmdJQURBMExJQUpCMkFBMkFnQU1EQXNnQWtIa0FEWUNBQXdMQ3lBQ1Fld0FOZ0lBREFvTElBSkJHellDQUF3SkN5QUNRWU1CTmdJQURBZ0xJQUpCalFFMkFnQU1Cd3NnQWtINUFEWUNBQXdHQ3lBQlFYOXFJZ0JCQzBzTkJnSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVFQmF3NExDUW9CQUJFQ0F3UUZCZ2NJQ3lBQ1FTMDJBZ0FNRHdzZ0FrRWxOZ0lBREE0TElBSkJ3UUEyQWdBTURRc2dBa0hPQURZQ0FBd01DeUFDUWRVQU5nSUFEQXNMSUFKQjRnQTJBZ0FNQ2dzZ0FrSHBBRFlDQUF3SkN5QUNRUncyQWdBTUNBc2dBa0dBQVRZQ0FBd0hDeUFDUVlvQk5nSUFEQVlMSUFKQjlnQTJBZ0FNQlFzZ0FVRi9haUlBUVF0TERRVUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2tLQUFFQ0VBTUVCUVlIQ0FzZ0FrRXBOZ0lBREE0TElBSkJNRFlDQUF3TkN5QUNRVDAyQWdBTURBc2dBa0hSQURZQ0FBd0xDeUFDUWRrQU5nSUFEQW9MSUFKQjVRQTJBZ0FNQ1FzZ0FrSHRBRFlDQUF3SUN5QUNRUjAyQWdBTUJ3c2dBa0dFQVRZQ0FBd0dDeUFDUVk0Qk5nSUFEQVVMSUFKQitnQTJBZ0FNQkFzZ0FVRi9haUlBUVF0TERRUUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2NJQXdRRkJnOEFDUW9CQWdzZ0FrSFdBRFlDQUF3TkN5QUNRUjQyQWdBTURBc2dBa0dCQVRZQ0FBd0xDeUFDUVNZMkFnQU1DZ3NnQWtFdU5nSUFEQWtMSUFKQk9qWUNBQXdJQ3lBQ1FjSUFOZ0lBREFjTElBSkJpd0UyQWdBTUJnc2dBa0gzQURZQ0FBd0ZDeUFDUWVNQU5nSUFEQVFMSUFKQjZnQTJBZ0FNQXdzZ0FVRi9haUlBUVF0TERRTUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2NJQXdRRkJnQU9DUW9CQWdzZ0FrSFNBRFlDQUF3TUN5QUNRUjgyQWdBTUN3c2dBa0dGQVRZQ0FBd0tDeUFDUVNvMkFnQU1DUXNnQWtFeE5nSUFEQWdMSUFKQlBqWUNBQXdIQ3lBQ1FjVUFOZ0lBREFZTElBSkJqd0UyQWdBTUJRc2dBa0g3QURZQ0FBd0VDeUFDUWVZQU5nSUFEQU1MSUFKQjdnQTJBZ0FNQWdzZ0FVRi9haUlBUVF0TERRSUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2dKQUFFQ0F3UUZEUW9HQndzZ0FrRW5OZ0lBREFzTElBSkJMellDQUF3S0N5QUNRVHMyQWdBTUNRc2dBa0hEQURZQ0FBd0lDeUFDUWM4QU5nSUFEQWNMSUFKQjF3QTJBZ0FNQmdzZ0FrRWdOZ0lBREFVTElBSkJnZ0UyQWdBTUJBc2dBa0dNQVRZQ0FBd0RDeUFDUWZnQU5nSUFEQUlMSUFKQjZ3QTJBZ0FNQVFzZ0FVRi9haUlBUVF0TERRRUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09Dd2dKQUFFQ0F3UUZDZ3dHQndzZ0FrRXJOZ0lBREFvTElBSkJNallDQUF3SkN5QUNRVDgyQWdBTUNBc2dBa0hHQURZQ0FBd0hDeUFDUWRNQU5nSUFEQVlMSUFKQjJnQTJBZ0FNQlFzZ0FrRWhOZ0lBREFRTElBSkJoZ0UyQWdBTUF3c2dBa0dRQVRZQ0FBd0NDeUFDUWZ3QU5nSUFEQUVMSUFKQjV3QTJBZ0FMUVFFaEF3c2dBd3N0QVFGL0l3QkJFR3NpQWlRQUlBSWdBVFlDQ0NBQUlBSW9BZ2dRMGdNZ0FFRU1haEJPR2lBQ1FSQnFKQUFMUmdBakFFRVFheUlDSkFBZ0FSQWxJUUVnQUVFb0VDWWdBa0VJYWlBQlFRQVF3d0VRa1FFaUFDZ0NBRUVRYWlBREtBSUFFUGtXSUFBUUpVRUJPZ0FFSUFKQkVHb2tBQXVTQVFFRGZ5QUFFRHdoQXlBQUVDVWhCUUpBSUFNRVFBSkFBMEFDUUFKL0lBQVFHeUFDSUFOQkVHb2lCQkNQQkFSQUlBTW9BZ0JGRFFZZ0F3d0JDeUFBRUJzZ0JDQUNFSThFUlEwRElBTkJCR29oQkNBREtBSUVSUTBCSUFRaUF3c2hCU0FES0FJQUlRTU1BUXNMSUFFZ0F6WUNBQ0FFRHdzZ0FTQUROZ0lBSUFVUEN5QUFFQ1VoQXdzZ0FTQUROZ0lBSUFNTG13RUJBbjhqQUVFZ2F5SUZKQUFnQVNBRlFSeHFJQUlRK3hZaUJpZ0NBQ0VDSUFWQkFEb0FHeUFDUlFSQUlBVkJDR29nQVVHOHdoRWdBeUFFRVBvV0lBRWdCU2dDSENBR0lBVW9BZ2dRN2dJZ0JVRUlhaEJmSVFJZ0JVRUJPZ0FiSUFWQkNHb2lBU2dDQUNFRElBRkJBRFlDQUNBREJFQWdBUkFsSUFNUTl4WUxDeUFBSUFWQkNHb2dBaEF4SUFWQkcyb1FvZ0VnQlVFZ2FpUUFDL1FDQVFSL0l3QkJNR3NpQVNRQUlBQVFYaUVEQWtBZ0FDZ0NFRUdBQ0U4RVFDQUFJQUFvQWhCQmdIaHFOZ0lRSUFFZ0FDZ0NCQ2dDQURZQ0dDQUFFTXdESUFBZ0FVRVlhaEROQXd3QkN3SkFJQUFRMEFFZ0FCQ0lBMGtFUUNBQUVPRUlSUTBCSUFGQmdBZ1FnZ0kyQWhnZ0FDQUJRUmhxRU0wRERBSUxJQUVnQUJDSUEwRUJkRFlDQ0NBQlFRRTJBZ0FnQVVFWWFpQUJRUWhxSUFFUVVpZ0NBQ0FBRU5BQklBQVFJeER5QWlFQ0lBRWdBVUVJYWtHQUNCQ0NBaUFCSUFOQmdBZ1FtUUVRa1FFaUJDZ0NBRFlDQUNBQ0lBRVE0QWdnQkJCZkdpQUFLQUlJSWdNZ0FDZ0NCRWNFUUFOQUlBSWdBMEY4YWlJREVOOElJQU1nQUNnQ0JFY05BQXNMSUFBZ0FoQXVJQUJCQkdvZ0FrRUVhaEF1SUFCQkNHb2dBa0VJYWhBdUlBQVFJeUFDRUNNUUxpQUVFTmNHSUFJUWtRTU1BUXNnQVVHQUNCQ0NBallDR0NBQUlBRkJHR29RM1FnZ0FTQUFLQUlFS0FJQU5nSVlJQUFRekFNZ0FDQUJRUmhxRU0wREN5QUJRVEJxSkFBTFdnRURmeUFBUWVRQmFpSUJFSlVGS0FJQUlRSWdBUkNmRFNBQUtBTFFBU0lESUFJZ0F5Z0NBQ2dDQ0JFQkFDQUJFRjRvQWdCRkJFQWdBRUg4QVdvZ0FFSFlBV29RaGdJUEN5QUFRZndCYWlBQkVKVUZLQUlBRUlZQ0N4b0FJQUFvQWdnb0FuQWdBQ2dDZUJEdERTQUFLQUlJRVA0V0N6UUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUJCL0FGcUlBRVFoZ0lnQUVIa0FXb2dBa0VNYWhDaERTQUNRUkJxSkFBTEx3QWdBQ0FBS0FJSUtBSndLQUpFTmdKNElBQW9BZ2dvQW5BZ0FFRkFheER0RFNBQUtBSUlJQUFvQWlRUWdCY0xDd0FnQUVIOEFHb1FvZzBMQ3dBZ0FFSDhBR29Rb3cwTERRQWdBRUg4QUdvZ0FSQ0REUXNKQUNBQUVLUU5FQ29MclFFQkJYOGpBRUVRYXlJREpBQWdBQkJlR2lBQkVQRUpJUVFDUUFKQUlBQVFQQ0lGUlEwQUlBQWdCQ0FGRURRaUJoQVJLQUlBSWdKRkRRQWdBaWdDQUNJQ1JRMEFBMEFnQkNBQ0tBSUVSd1JBSUFJb0FnUWdCUkEwSUFaSERRSUxBa0FnQkNBQ0tBSUVSdzBBSUFBUXV3UWdBa0VJYWlBQkVLWURSUTBBSUFOQkNHb2dBaEF4S0FJQUlRSU1Bd3NnQWlnQ0FDSUNEUUFMQ3lBREVNc0JJZ0kyQWdnTElBTkJFR29rQUNBQ0N5TUFJQUF0QUFRRVFDQUFLQUlBR2lBQlFSQnFFSW9OQ3lBQkJFQWdBQ2dDQUJvTEN6RUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUlJQUFnQWlnQ0NDZ0NBRFlDQUNBQVFRUnFFTDBOR2lBQ1FSQnFKQUFMU3dBakFFRVFheUlDSkFBZ0FDQUJFTmNDSWdBb0FnQkJQQkNVQWlBQ1FRaHFJQUJCQUJEREFSQ1JBU0lBS0FJQVFSQnFJQU1vQWdBUWlCY2dBQkFsUVFFNkFBUWdBa0VRYWlRQUM1SUJBUU4vSUFBUVBDRURJQUFRSlNFRkFrQWdBd1JBQWtBRFFBSkFBbjhnQUJBaklBSWdBMEVRYWlJRUVKOEZCRUFnQXlnQ0FFVU5CaUFEREFFTElBQVFJeUFFSUFJUW53VkZEUU1nQTBFRWFpRUVJQU1vQWdSRkRRRWdCQ0lEQ3lFRklBTW9BZ0FoQXd3QkN3c2dBU0FETmdJQUlBUVBDeUFCSUFNMkFnQWdCUThMSUFBUUpTRURDeUFCSUFNMkFnQWdBd3ViQVFFQ2Z5TUFRU0JySWdVa0FDQUJJQVZCSEdvZ0FoQ0tGeUlHS0FJQUlRSWdCVUVBT2dBYklBSkZCRUFnQlVFSWFpQUJRYnpDRVNBRElBUVFpUmNnQVNBRktBSWNJQVlnQlNnQ0NCQ2tCQ0FGUVFocUVGOGhBaUFGUVFFNkFCc2dCVUVJYWlJQktBSUFJUU1nQVVFQU5nSUFJQU1FUUNBQkVDVWdBeENIRndzTElBQWdCVUVJYWlBQ0VERWdCVUViYWhDaUFTQUZRU0JxSkFBTEpBQWdBQ0FCS1FNQU53TUFJQUFnQVNrRENEY0RDQ0FBUVJCcUlBRkJFR29RL3dFYUN5TUFJQUFnQVNrREFEY0RBQ0FBSUFFcEF3ZzNBd2dnQUVFUWFpQUJRUkJxRU9nQ0N6TUJBbjhqQUVFUWF5SUNKQUJCREJBbUlnTkJBRFlDQUNBQUlBTWdBa0VJYWlBQlFRRVFtUUVRa1FFYUlBSkJFR29rQUFzNkFRRi9JQUVnQWtjRVFDQURLQUlBSVFRRFFDQUFJQVFnQVJEL0JpQURJQU1vQWdCQklHb2lCRFlDQUNBQlFTQnFJZ0VnQWtjTkFBc0xDeWtBSUFBZ0FVY0VRQU5BSUFJZ0FCQ05GeUFDUVNCcUlRSWdBRUVnYWlJQUlBRkhEUUFMQ3lBQ0N6OEJBWDhnQUJDbkRTQUJTUVJBRUc0QUN5QUFJQUFRT3lBQkVLWU5JZ0kyQWdBZ0FDQUNOZ0lFSUFBUUd5QUNJQUZCQlhScU5nSUFJQUJCQUJDbERRdEFBUUYvSUFBb0FnQUVRQ0FBRUlJRElRRWdBQkNIRFNBQUlBRVFxQTBnQUJBN0dpQUFLQUlBR2lBQUVNc0RHaUFBRUJ0QkFEWUNBQ0FBUWdBM0FnQUxDOEVCQVFOL0l3QkJFR3NpQXlRQUFrQWdBaUFCYTBFRmRTSUVJQUFReXdOTkJFQWdBeUFDTmdJTUlBUWdBQkNDQTBzRVFDQURJQUUyQWd3Z0FCQ0NBeUVGSUFNZ0F5Z0NEQ0FGUVFWMGFqWUNEQ0FCSUFNb0Fnd2dBQ2dDQUJDckRSb2dBQ0FES0FJTUlBSWdCQ0FBRUlJRGF4Q3FEUXdDQ3lBQklBSWdBQ2dDQUJDckRTRUJJQUFRZ2dNaEFpQUFJQUVRaGcwZ0FDQUNFS2dOREFFTElBQVFraGNnQUNBQUlBUVFxUTBRa1JjZ0FDQUJJQUlnQkJDcURRc2dBMEVRYWlRQUMxUUJBbjhqQUVFUWF5SUVKQUFnQWdSQUEwQWdBeUFDSUFBUUl5QUNRUkJxSUFFUW53VWlCUnNoQXlBQ1FRUkJBQ0FGRzJvb0FnQWlBZzBBQ3dzZ0JFRUlhaUFERURFb0FnQWhBQ0FFUVJCcUpBQWdBQXRtQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ0FCSUFBUVBDQUFFQ1VRbEJjMkFnZ2dBaUFBRUlFQk5nSUFBbjhDUUNBQ1FRaHFJQUlRSGtVTkFDQUFFQ01nQVNBQ1FRaHFFRmNRbndVTkFDQUNLQUlJREFFTElBQVFnUUVMSVFBZ0FrRVFhaVFBSUFBTERRQWdBQ2dDREVFUWFoQ1dCUXNQQUNBQUtBSU1RUkJxSUFFUXJBMExDUUFnQUJDdERSQXFDNEFCQVFKL0l3QkJJR3NpQXlRQUlBQVFPeUlDSUFOQkNHb2dBQ0FBRUlRRVFRRnFFT3dXSUFBUWhBUWdBaERyRmlJQ0tBSUlJQUVRNHdnZ0FpQUNLQUlJUVFGcU5nSUlJQUFnQWhEcUZpQUNJQUlvQWdRUTVoWWdBaWdDQUFSQUlBSW9BaEFhSUFJb0FnQWFJQUlRSXlnQ0FDQUNLQUlBYXhvTElBTkJJR29rQUFzeUFRRi9RWDhoQWlBQUxRQUVCSDhnQWdVZ0FVRXdPd0VnSUFGQkFEWUNHQ0FCUVFBNkFCQWdBRUVCT2dBRVFaZ0JDd3V0QWdFRGZ3TkFJQUFvQWd4QkVHb2dBQ2dDQ0NnQ2NDQUJFUElHSWdKQklFWU5BQXNDZjBFQUlBQXRBREZGRFFBYUlBQkJBRG9BTVVFQkN5RURJQUF0QURBRVFDQUFRWUFDT3dFd0N3Si9Ba0FnQUNnQ0RFRVFhaEMwRmdSQUlBQkJBVG9BTUF3QkMwRUFJQU5GRFFFYUN5QUFLQUlJS0FKd0drRUJDeUVEQWtBZ0FrRi9Sd1JBSUFKQm9nRkhEUUVnQVVFZ2FpRUVJQUFvQWd3UUZpRUNBMEFnQWtFQlNBUkFRYUlCRHdzZ0FDZ0NDRUVVYWlBQUtBSU1JQUpCZjJvaUFoQVJLQUlBRUtVQ0lBUVFlZzBBQ3lBRFFYOXpJQUJCSUdvZ0FoQVJLQUlBSWdOQkFFZHhSUVJBSUFCQkVHb2dBaEFSS0FJQUlRTUxJQUFvQWdnZ0F5QUFMUUF3RVA0TUlBQW9BZ2dnQVJCVER3c2dBQ2dDRENJQUlBQXRBQ1JCL1FGeE9nQWtRWDhoQWdzZ0FndWpCZ0VDZndKQUlBQWdBUkJUSWdKQmYwWWdBa0VLUm5JTkFDQUNRYUlCUmdSQUFrQWdBRUVVYWlBQlFTQnFJZ0lRemdOQjNYNXFJZ05CRTBzTkFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBMEVCYXc0VENnUUZCZ0VDQXdjSkN3d09EZzRORGc0T0NBQUxJQUFnQVJESkZ5RUNEQThMSUFBZ0FDZ0N2QUVpQW1vdEFIZ0VmeUFBS0FKd0lnSWdBVUhadGhGQjY3WVJRY216RVVFQUlBSW9BZ0FvQXFnQkVRSUFJQUFvQXJ3QkJTQUNDeUFBYWtFQk9nQjRJQUFvQW5SRkJFQWdBQ2dDY0NJQ0lBRkIyNzhSUWV1MkVVSEpzeEZCQUNBQ0tBSUFLQUtvQVJFQ0FBc2dBRUdvQVNBQklBQWdBUkJURUwwRUdpQUFRUUFnQVJDQUJ5RUNEQTRMSUFBb0FuUkZCRUFnQUNnQ2NDSUNJQUZCMjc4UlFkTzJFVUhKc3hGQkFDQUNLQUlBS0FLb0FSRUNBQXNnQUNBQUtBSzhBV290QUhnRVFDQUFLQUp3SWdJZ0FVSEJ0aEZCMDdZUlFjbXpFVUVBSUFJb0FnQW9BcWdCRVFJQUN5QUFJQUVRVXlFQ0EwQWdBa0YvUmlBQ1FRcEdja1VFUUNBQUlBRVFVeUVDREFFTEN5QUFRUUFnQVJDQUJ5RUNEQTBMQWtBZ0FDZ0NkQ0lDUlFSQUlBQW9BbkFpQWlBQlFkdS9FVUdYdHhGQnliTVJRUUFnQWlnQ0FDZ0NxQUVSQWdBTUFRc2dBQ0FBS0FLOEFTSURha0VBT2dCNElBQWdBa0YvYWpZQ2RDQUFJQU5CZjJvMkFyd0JDeUFBUWFvQklBRWdBQ0FCRUZNUXZRUWhBZ3dNQ3lBQUlBRVF1ZzBoQWd3TEN5QUFRUUVnQVJDM0RTRUNEQW9MSUFCQkFDQUJFTGNOSVFJTUNRc2dBQ0FCRUtNWElRSU1DQXNDZnlBQUtBSndHa0VCQ3dSQUlBQW9BbkFpQWlBQlFRRkI5TDhSUWVLNkVTQUNLQUlBS0FJWUVRZ0FDeUFBSUFFUXF4Y2hBZ3dIQ3lBQUlBRVFvUmNoQWd3R0N5QUFJQUVReEJjaEFnd0ZDeUFBSUFFUW9oZEJDaUVDREFRTElBQWdBUkNlRnlFQ0RBTUxJQUFnQVJDZEZ5RUNEQUlMSUFBb0FuQWlBeUFCUWZpL0VVR0x3QkVnQWtFQUlBTW9BZ0FvQXFnQkVRSUFRYUlCSVFJTUFRc2dBQ2dDY0NJRElBRkJqY0FSUVl2QUVVSEpzeEZCQUNBREtBSUFLQUtvQVJFQ0FBc0RRQ0FDUVg5R0lBSkJDa1p5UlFSQUlBQWdBUkJUSVFJTUFRc0xJQUlMOXdJQkJYOGpBRUdnQ0dzaUJDUUFJQUVvQWdnaEJRSkFJQUFnQVJCVElnTkJvZ0ZIQkVCQkNpRUNJQU5CQ2tZRVFDQUFLQUp3SWdBZ0FVRzB2aEZCMGI0UlFjbXpFVUVBSUFBb0FnQW9BcWdCRVFJQURBSUxJQUFvQW5BaUFpQUJRZHkrRVVIUnZoRkJ5Yk1SUVFBZ0FpZ0NBQ2dDcUFFUkFnQUxJQVFnQVVFZ2FpSUdOZ0lBSUFSQkVHcEJnUWhCajdzUklBUVFKeG9nQUNBQkVGTWlBa0U2UndSQUlBQW9BbkFpQUNBQlFmUytFVUhSdmhGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBTUFRc2dBQ0FCRUZNaEFpQUFLQUp3SVFNZ0FrR2lBVWNFUUNBRElBRkJsYjhSUWRHK0VVSEpzeEZCQUNBREtBSUFLQUtvQVJFQ0FBd0JDeUFESUFVZ0JFRVFhaUFHSUFNb0FnQW9BaWdSQkFBZ0FDZ0NjQ0lDSUFVZ0JFRVFhaUFHSUFJb0FnQW9BdWdCRVFRQVFRb2hBaUFBSUFFUVV5SURRUXBHRFFBZ0FDZ0NjQ0lBSUFGQnVyOFJRZEcrRVVISnN4RkJBQ0FBS0FJQUtBS29BUkVDQUNBRElRSUxJQVJCb0FocUpBQWdBZ3Y5QWdFRWZ5QUFJQUVRVXlFQ0FrQWdBQzBBekFGRkJFQWdBQzBBelFGRkRRRUxJQUFvQW5BaUF5QUJRZTY4RVVHVXZSRUNmeUFBS0FKd0drRUFDeHRCaTcwUlFjbXpFVUVBSUFNb0FnQW9BcWdCRVFJQUN5QUFRUUU2QU0wQklBSkJtQUZIQkVBZ0FrRUtSZ1JBSUFBb0FuQWlBQ0FCUWErOUVVR0x2UkZCeWJNUlFRQWdBQ2dDQUNnQ3FBRVJBZ0JCQ2c4TElBQW9BbkFpQWlBQlFhKzlFVUdMdlJGQnliTVJRUUFnQWlnQ0FDZ0NxQUVSQWdBTElBRWdBVUVnYWlJQ0VOc1RJZ00yQWhnZ0FTZ0NDQ0VGSUFBZ0FSQlRRUXBHQkVBZ0FDZ0NjQ0lBSUFVZ0EwRUFJQUFvQWdBb0F0d0JFUVFBUVFvUEN5QUFRUlJxSUFJUXpnTkIwWDVxUVFOUEJFQWdBQ2dDY0NJRUlBRkIwcjBSUVl1OUVVSEpzeEZCQUNBRUtBSUFLQUtvQVJFQ0FBc2dBQ2dDY0NJRUlBVWdBeUFDSUFRb0FnQW9BdHdCRVFRQUlBQWdBUkJUSWdKQkNrY0VmeUFBS0FKd0lnQWdBVUdEdmhGQmk3MFJRY216RVVFQUlBQW9BZ0FvQXFnQkVRSUFJQUlGUVFvTEN5VUFJQUFvQWdBRVFDQUFJQUFvQWdBUTlCWWdBQkE3R2lBQUtBSUFHaUFBRUxrREdnc0xlQUVDZnlNQVFTQnJJZ01rQUNBQUVEc2lBaUFEUVFocUlBQWdBQkNvQVVFQmFoRGFEU0FBRUtnQklBSVEyUTBpQWlnQ0NDQUJFT1FJSUFJZ0FpZ0NDRUVRYWpZQ0NDQUFJQUlRN3hZZ0FpQUNLQUlFRU8wV0lBSW9BZ0FFUUNBQ0tBSVFHaUFDS0FJQUdpQUNFUDRJR2dzZ0EwRWdhaVFBQzRVQ0FRUi9Jd0JCUUdvaUFpUUFJQUpCS0dvUWt3RWhCQ0FDSUFFcEFnZzNBeUFnQWlBQktRSUFOd01ZSUFGQklHb2hCU0FBSUFFUVV5RURBMEFDUUNBRFFhSUJSaUFEUWVoK2FrRUpTWEpGQkVBZ0EwRi9SaUFEUVFwR2NrVUVRQ0FDUVFBNkFEOGdBaUFET2dBK0lBUWdBa0VJYWlBQ1FUNXFFQ0lpQXhDdkRRd0NDeUFBS0FKd0lRQUNRQ0FEUVg5R0JFQWdBQ0FDUVJocVFjUzhFVUhtdkJGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBTUFRc2dBQ0FDUVJocUlBUWdBQ2dDQUNnQzFBRVJCZ0FMSUFRUTl3VWdCQkNmRnlBQ1FVQnJKQUFnQXc4TElBUWdBa0VJYWlBRkVDSWlBeEN2RFFzZ0F4QVpHaUFBSUFFUVV5RUREQUFBQ3dBTDhBRUJCWDhqQUVFZ2F5SURKQUFnQUNBQkVGTWhCQ0FEUVJCcUVFNGhBaUFESUFFcEFnZzNBd2dnQXlBQktRSUFOd01BSUFCQkZHb2hCaUFCUVNCcUlRVURRQUpBSUFSQjZINXFRUWxQQkVBZ0JFRi9SaUFFUVFwR2NrVUVRQ0FFUWQ5K2FrRUJUUVJBSUFJZ0JSQzJBaG9NQXdzZ0FpQUdJQVFRcFFJUXRnSWFEQUlMSUFBb0FuQWlBU0FES0FJSUlBSVFFeUFCS0FJQUtBTGdBUkVHQUNBQUtBSndJZ0FnQXlBQ0VCTkJ2YndSUWNtekVVRUFJQUFvQWdBb0FxZ0JFUUlBSUFJUUlCb2dBMEVnYWlRQUR3c2dBaUFGRUxZQ0dnc2dBa0c2dXhFUXRnSWFJQUFnQVJCVElRUU1BQUFMQUF2OEF3RUdmeU1BUVNCcklnSWtBQ0FBSUFFUVV5RURJQUlnQVNrQ0NEY0RHQ0FDSUFFcEFnQTNBeEJCQ2lFRkFrQWdBMEVLUmdSQUlBQW9BbkFpQUNBQlFmdTdFVUdpdHhGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBTUFRdEJBQ0VGSUFKQkFEWUNEQ0FDUVFBMkFnZ2dBa0VBT2dBSElBSkJBRG9BQmlBQUlBTkJBRUVBSUFKQkRHb2dBa0VIYWlBQkVMd0VJUVFDZndKQUlBSXRBQWNOQUNBQ0tBSU1JUVVnQkVFS1JnUkFJQUlnQlVFQmFqWUNEQXNnQUNnQ2NDSURJQU1vQWdBb0F0QUJFUUFBSVFZZ0FpZ0NEQ0VESUFZRVFDQUNJQU5CZjJvaUF6WUNEQXNnQUNnQ2NDZ0NSQ0FERUxFTklBUkJDa1lOQUNBRVFhRUJSZ1JBSUFBb0FuQWlBeUFDUVJCcVFRRkJwTHdSUWFpOEVTQURLQUlBS0FJWUVRZ0FJQUJCRkdvaUF5QURJQUZCSUdvUTZ3Z1FwUUloQXlBQUtBSndLQUpFSWdRZ0F4RENBU0lHTmdJa0lBUW9BaGdnQkJDZEJVRUVkR29nQmpZQ0FDQUFJQUVRVXlFRVFRRU1BZ3RCQUNFRElBQWdCRUVBUVFBZ0FrRUlhaUFDUVFacUlBRVF2QVFoQkVFQUlBSXRBQVlOQVJvZ0FDZ0NjQ2dDUkNBQ0tBSUlFTEFOUVFFTUFRdEJBQ0VEUVFBTElRWWdBaTBBQnlBQ0xRQUdja1VFUUNBQUtBSndJZ2NnQWlnQ0dDQUZJQVlnQWlnQ0NDQURJQWNvQWdBb0F1UUJFUUlBQ3lBQVFhc0JJQUVnQkJDOUJDRUZDeUFDUVNCcUpBQWdCUXN5QVFGL0lBQkI0TU1SS0FJQUlnRTJBZ0FnQUNBQlFYUnFLQUlBYWtIc3d4RW9BZ0EyQWdBZ0FFRUVhaEQzQmhvZ0FBdEZBUUYvSXdCQklHc2lBaVFBSUFJZ0FSRE1BVFlDRUJEbkFTQUNRUmhxSUFBZ0FTQUNRUkJxSUFKQkNHb1EvQllnQWtFWWFoQlhJUUFnQWtFZ2FpUUFJQUJCREdvTGZRRUNmeU1BUVNCcklnSWtBQUpBSUFFb0FqQWlBMEVRY1FSQUlBRW9BaXdnQVNnQ0dFa0VRQ0FCSUFFb0FoZzJBaXdMSUFBZ0FTZ0NGQ0FCS0FJc0lBSkJHR29RMXdnYURBRUxJQU5CQ0hFRVFDQUFJQUVvQWdnZ0FTZ0NFQ0FDUVJCcUVOY0lHZ3dCQ3lBQUlBSkJDR29RbXcwYUN5QUNRU0JxSkFBTE9nRUJmeUFBUWVUREVTZ0NBQ0lDTmdJQUlBQWdBa0YwYWlnQ0FHcEI2TU1SS0FJQU5nSUFJQUFnQUNnQ0FFRjBhaWdDQUdvZ0FSQ0ZEUXN4QVFGL0l3QkJFR3NpQkNRQUlBQkI5QVpxSUFRZ0FSQnBJZ0FRcFJjZ0FpQURFTzBISUFBUUlCb2dCRUVRYWlRQUM5c0JBUUYvSUFBZ0JSQzRCQ0FBUVl6REVUWUNBQ0FBUVF4cUlBSVE3UUVoQmlBQVFSaHFJQVFRN1FFaEJDQUFJQU0yQWlRZ0FFRkFhMEVESUFCQktHb2dBRUUwYWtFQVFRQkJBRUVCRUpNSElRSWdBRUVBTmdKNElBQkIvQUJxSUFVZ0FoQ1NEU0FBSUFZUUV6WUNLQ0FBSUFBb0FpUW9BZ3cyQWl3Z0FDQUVFQk0yQWpBZ0FDQUdFQjgyQWpRZ0FDQUFLQUlrS0FJUU5nSTRJQUFnQkJBZk5nSThJQUlnQVNnQ0NCQ3hEU0FDSUFFb0FnUVFzQTBnQWlBQkVPWUlRUUFRNVFnZ0FpQUJFT1lJUVFFUTVRZ2dBaUFCRU9ZSVFRSVE1UWdMMlFFQkJYOUJmeUVDQWtBZ0FFSEFBV29pQlJDNEFnMEFJQUZCQURvQUlBSkFJQVVRa0FFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdSQlBrY0VRQU5BUVg4aEFpQUVRWDlHRFFNQ1FDQURRZjhIU2dSQVFRRWhCZ3dCQ3lBQklBTnFJQVE2QUNBZ0EwRUJhaUVEQ3lBRkVKQUJLQUlBSWdJZ0FpZ0NBQ2dDREJFQUFDSUVRVDVIRFFBTERBRUxJQUZCQURvQUlFR2hBU0VDREFFTElBRWdBMnBCQURvQUlFR2hBU0VDSUFaRkRRQWdBQ2dDY0NJQUlBRkJuOEFSUWNtekVVSEpzeEZCQUNBQUtBSUFLQUtvQVJFQ0FFR2hBUThMSUFJTHRnY0JCMzhqQUVHQUEyc2lBaVFBSUFJZ0FTa0NDRGNEK0FJZ0FpQUJLUUlBTndQd0FrRUJJUVFDUUFKL0lBQWdBUkJUSWdaQlBFWUVRRUVBSVFRZ0FDQUJFS29YSVFZTElBWkJvUUZIQ3dSQUlBQW9BbkFpQUNBQ1FmQUNha0hBdWhGQjRyb1JRY216RVVFQUlBQW9BZ0FvQXFnQkVRSUFEQUVMSUFKQjRBSnFJQUZCSUdvUWFTRUhBa0FnQUNBQkVGTWlCa0VLUndSQUlBQW9BbkFoQUNBSEVCTWhBeUFBS0FJQUtBS29BU0VFSUFaQmYwWUVRQ0FDSUFNMkFoQWdBQ0FCUWV1NkVVSGl1aEZCajdzUklBSkJFR29nQkJFQ0FBd0NDeUFDSUFNMkFpQWdBQ0FCUVpLN0VVSGl1aEZCajdzUklBSkJJR29nQkJFQ0FBd0JDd0pBQWtBQ1FDQUVSUTBBSUFBb0F0QUJJZ0VnQnhBVElBQkIvQUZxRUJNZ0FFSGtBV29Rc3cxQkFXb2dBU2dDQUNnQ0JCRUpBQ0lCUlEwQUlBRWhBeUFCRVBzQlJRMEJDeUFBS0FMUUFTSUJJQU1nQVNnQ0FDZ0NDQkVCQUNBQUtBTFFBU0lCSUFjUUV5QUFRZndCYWhBVElBQkI1QUZxRUxNTlFRRnFJQUVvQWdBb0FnQVJDUUFpQVEwQUlBSkIyQUZxUWNPN0VSQnBHa0VBSVFFTUFRc2dBUkQ3QVVVRVFBSkFJQUVvQWd4RkRRQWdBU2dDRUVVTkFDQUFLQUp3SWdNZ0F5Z0NBQ2dDMEFFUkFBQWhCU0FDUWRnQmFoQzJEU0VESUFKQjBBQnFFTFlOSVFRZ0EwR3p1eEVRZ2dRZ0JSQzRFMEc2dXhFUWdnUkJ2THNSRUlJRUlBRVF0UTFCdnJzUkVJSUVHaUFFUWNtekVVSEJ1eEVnQVNnQ0VDQUJLQUlNYWtGL2FpMEFBRUVLUmhzUWdnUkJzN3NSRUlJRUlBVWdBaWdDK0FKcUVMY1RRYnE3RVJDQ0JDRUZJQUpCUUdzZ0FrSHdBbXBCQVJEUkJ5QUZJQUpCUUdzUXRRMUJ3YnNSRUlJRUdpQUNRVUJyRUNBYVFZd0JFQ1loQlNBQ1FVQnJJQU1RdEEwZ0FrRXdhaUFFRUxRTklBVWdBa0h3QW1vZ0FrRkFheUFCSUFKQk1Hb2dBQkNwRnlBQUlBVVF1UVFnQWtFd2FoQWdHaUFDUVVCckVDQWFJQUFvQW5Bb0FpZ2dBUkFUSUFFb0Fnd2dBU2dDRUJDb0Z5QUFLQUp3S0FKRUlnQkJBRFlDTUNBQUtBSVlJQUFRblFWQkJIUnFRUUEyQWd3Z0JCRHdCUm9nQXhEd0JSb01Bd3NnQUNnQzBBRWlBQ0FCSUFBb0FnQW9BZ2dSQVFBTUFnc2dBU2dDRENFRElBRW9BaEFoQkNBQ1FkZ0JhaUlGRU9vQklBVWdBeUFFRUxVR0N5QUFLQUp3SVFNZ0FrSFlBV29RRXlFRUlBY1FFeUVGSUFNb0FnQW9BcWdCSVFnZ0FpQUZOZ0lBSUFNZ0FrSHdBbW9nQkVIaXVoRkI1N3NSSUFJZ0NCRUNBQ0FBS0FMUUFTSUFJQUVnQUNnQ0FDZ0NDQkVCQUNBQ1FkZ0JhaEFnR2dzZ0J4QWdHZ3NnQWtHQUEyb2tBQ0FHQzlRQkFRUi9RUlFRSmlJR0VPb0lJUVJCREJBbUlnVWlCeUFBRUxnRUlBZEI0TVFSTmdJQUlBQWdCUkM1QkNBQUlBRkJBQkQrREFKQUlBQWdBaEJUSWdGQmZYRkJmVVlOQUFOQUFrQUNRQUpBSUFBZ0FTQUNFSUFOSWdGQm9nRkdCRUFnQUNBQ1FRQWdBeERvQ0VGL2FpSUZRUUpMRFFFZ0JVRUJhdzRDQWdJREN5QUJRWDF4UVgxR0RRUUxJQVFnQVNBQ0VQTUdDeUFBSUFJUVV5SUJRWDF4UVgxSERRRU1BZ3NMQTBBZ0FDQUNFRk1pQVVGOWNVRjlSdzBBQ3dzZ0FVRjlSd1IvSUFRUTlRWWFJQVlRS2tFQUJTQUVDd3RMQVFGL0l3QkJFR3NpQWlRQUFrQWdBQ2dDQkNBQUVCc29BZ0JKQkVBZ0FCQTdJQUFvQWdRZ0FSRGpDQ0FBSUFBb0FnUkJBV28yQWdRTUFRc2dBQ0FCRUprWEN5QUNRUkJxSkFBTExRQWdBQ0FCRUxnRUlBQkIzTUVSTmdJQUlBQkJFR29Ra3dFYUlBQkJJR29Ra3dFYUlBQkJBRHNCTUNBQUN5Z0FJQUJCd0FGcUlnQVFGa1VFUUVFQUR3c2dBQkNRQVNnQ0FDSUFJQUFvQWdBb0FpQVJBQUFMQlFBZ0FFVUxCd0FnQUVGL2N3c0hBRUVBSUFCckN5QUFBbjhnQUVHQWdJQ0FlRVlFUUVFQUlBRkJmMFlOQVJvTElBQWdBVzhMQ3lBQUFuOGdBRUdBZ0lDQWVFWUVRRUVBSUFGQmYwWU5BUm9MSUFBZ0FXMExDd2NBSUFBZ0FXd0xCd0FnQUNBQmF3c0hBQ0FBSUFGcUN3Y0FJQUFnQVhVTEJ3QWdBQ0FCZEFzSEFDQUFJQUZNQ3djQUlBQWdBVWdMQndBZ0FDQUJUZ3NIQUNBQUlBRktDd2NBSUFBZ0FVY0xCd0FnQUNBQmNRc0hBQ0FBSUFGekN3MEFJQUJCQUVjZ0FVRUFSM0VMQ2dBZ0FDQUJja0VBUndzcEFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJFSVlYRURFb0FnQWhBQ0FDUVJCcUpBQWdBQXV6QVFFQ2Z5QUFJQUVRVXlFRElBQW9BbkFoQWlBRFFhSUJSd1JBSUFJZ0FVR2lzeEZCM0xVUlFjbXpFVUVBSUFJb0FnQW9BcWdCRVFJQUlBTVBDeUFDSUFFZ0FVRWdhaUlEUWR5MUVTQUNLQUlBS0FMSUFSRUVBQ0FBSUFCQkZHb2dBeERPQXhEeEJTSUNCRUFnQWlBQ0xRQWtRUVJ5T2dBa0MwRUtJUUlnQUNBQkVGTWlBMEVLUndSL0lBQW9BbkFpQUNBQlFlTzFFVUhjdFJGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBZ0F3VWdBZ3NMUlFFQmZ5TUFRU0JySWdJa0FDQUNJQUVRa2dNMkFoQVE1d0VnQWtFWWFpQUFJQUVnQWtFUWFpQUNRUWhxRUlzWElBSkJHR29RVnlFQUlBSkJJR29rQUNBQVFRUnFDMUVDQVg4Q2ZBSkFJQUF0QUJBZ0FTMEFFRWNOQUNBQUtBSVlJQUVvQWhoSERRQWdBQ3NER0NJRElBRXJBeGdpQkdJZ0E3MGdCTDFTY2cwQUlBQkJJR29nQVVFZ2FrR0FDQkRVQlVVaEFnc2dBZ3NwQVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUNBQkVKVVhFREVvQWdBaEFDQUNRUkJxSkFBZ0FBc3RBUUYvSXdCQkVHc2lBeVFBSUFNZ0FUWUNEQ0FBUVFScUlBTkJER29ReFJjZ0FoQzdEU0FEUVJCcUpBQUwvQWNCQzM4akFFR1FFV3NpQXlRQUlBTkI2QkJxRUwwTklRVUNRQ0FBSUFFUVV5SUVRYUlCUndSQUlBQW9BbkFpQUNBQlFhS3pFVUhCc3hGQnliTVJRUUFnQUNnQ0FDZ0NxQUVSQWdBTUFRc2dBU2dDQkVFQVRnUkFJQUFvQW5BaUFpQUJJQUZCSUdwQndiTVJJQUlvQWdBb0FzZ0JFUVFBQ3lBQVFSUnFJZ2dnQVVFZ2FpSUdFT3NJSVFjZ0EwSGdFR29nQVNrQ0NEY0RBQ0FESUFFcEFnQTNBOWdRQWtBQ1FDQUFJQUVRVXlJRVFYOUdJQVJCQ2taeURRQkJLQ0VDSUFSQktFWUVRQ0FCTFFBUURRSWdCU0FGTFFBa1FRRnlPZ0FrQWtBRFFFRUFJQUFnQVJCVElnUkJLVVlnQlJBV0d3MEJJQVJCb2dGSEJFQWdBQ2dDY0NJQUlBRkJ5ck1SUWNHekVVSEpzeEZCQUNBQUtBSUFLQUtvQVJFQ0FBd0dDeUFESUFnZ0JoRHJDRFlDc0FoQkFDRUNBa0FDUUNBRkVCWkZEUUFEUUNBRklBSVFFU2dDQUNBREtBS3dDRWNFUUNBQ1FRRnFJZ0lnQlJBV1NRMEJEQUlMQ3lBQUtBSndJZ0lnQVVIWHN4RkJ3Yk1SUWNtekVVRUFJQUlvQWdBb0FxZ0JFUUlBREFFTElBVWdBMEd3Q0dvUTNBRUxJQUFnQVJCVElnUkJMRVlOQUFzZ0JFRXBSZzBBSUFBb0FuQWlBQ0FCUWZHekVVSEJzeEZCeWJNUlFRQWdBQ2dDQUNnQ3FBRVJBZ0FNQkFzZ0FDQUJFRk1oQWd3Q0N5QUJMUUFRRFFBZ0FDZ0NjQ0lBSUFGQmhiUVJRY0d6RVVISnN4RkJBQ0FBS0FJQUtBS3NBUkVDQUF3Q0N5QUVJUUlMSUFWQkVHb2hCZ05BSUFKQmYwWWdBa0VLUm5KRkJFQWdCaUFDSUFFUTh3WWdBQ0FCRUZNaUFrRUtSZzBCSUFFdEFCQkZEUUVnQmtFZ0lBRVE4d1lNQVFzTEFrQWdBQ0FIRVBFRklnRUVRQUpBSUFFdEFDUWlBa0VFY1EwQUlBVXRBQ1FnQW5OQkFYRUVRQ0FBS0FKd0lnQWdBMEhZRUdwQnBMUVJRY0d6RVNBSUlBY1FwUUpCQUNBQUtBSUFLQUtvQVJFQ0FBd0JDeUFCRUJZZ0JSQVdSd1JBSUFBb0FuQWlBQ0FEUWRnUWFrSFh0QkZCd2JNUklBZ2dCeENsQWtFQUlBQW9BZ0FvQXFnQkVRSUFEQUVMSUFFaUFoQVdJQVVpQkJBV1JnUi9JQUlRUUNBQ0VESWdCQkJBRVBJV0JVRUFDMEVCY3dSQUlBQW9BbkFpQWlBRFFkZ1Fha0dIdFJGQndiTVJJQWdnQnhDbEFrRUFJQUlvQWdBb0FxZ0JFUUlBQ3lBQlFSQnFJZ3NRZ1FjZ0JoQ0JCMEVCSVFJRFFDQURRYkFJYWhDZUJTRUVJQU5CQ0dvUW5nVWhDU0FMSUFBb0FuQWdCQkR5QmlFS0lBWWdBQ2dDY0NBSkVQSUdJUXdnQWdSQUlBTWdBeTBBd0FnNkFCZ0xBa0FnQ2lBTVJnUkFJQVFnQ1JER0YwRUJjMFVOQVFzZ0FDZ0NjQ0lBSUFOQjJCQnFRYksxRVVIQnN4RWdDQ0FIRUtVQ1FRQWdBQ2dDQUNnQ3FBRVJBZ0FNQWd0QkFDRUNJQXBCZjBjTkFBc0xJQUVnQlJDN0RRd0JDeUFBSUFjZ0JSRElGd3RCQ2lFRUN5QUZFSWtOSUFOQmtCRnFKQUFnQkFzSUFDQUFFT3dJR2d0WEFDQUFRUUFReUFJZ0FFSHdzaEUyQWdBZ0FFRWthaUFCRU9FREdpQUFRZ0EzQWtRZ0FFRUFPZ0JBSUFCQkFEb0FPU0FBSUFJNkFEZ2dBQ0FETmdJMElBQWdCRFlDTUNBQVFRQTJBaXdnQUVFQU5nSWdJQUFMbVFZQkNuOGpBRUVRYXlJTEpBQWdDMEVJYWlBQVFTUnFFT0VESVFjZ0FDZ0NNQkRGQVNFSUFrQWdBQ2dDSUNJQ0lBaE9EUUFnQUMwQU9FVUVRQ0FCSUFFb0FnQW9BbmdSQUFBUXhRRWhCQ0FCRUVzaEFpQUVRUUZJRFFFZ0FDZ0NJQ0VCQTBBZ0FTQUlUZzBDSUFJZ0F4QVBJUVVnQnlBQUtBSWdFQThpQVNBRktBSUlOZ0lJSUFFZ0JTa0RBRGNEQUNBQUlBQW9BaUJCQVdvaUFUWUNJQ0FEUVFGcUlnTWdCRWNOQUFzTUFRc2dBQ2dDUENBQ2FpRUpJQUVRU3lFS0lBQXRBRUJGQkVBZ0FTQUJLQUlBS0FKNEVRQUFFTVVCSVFFZ0FDZ0NJQ0lESUFsT0lBTWdDRTV5RFFFZ0FVRUJTaUVDQTBBZ0NpQUVFQThoQlNBSElBTVFEeUlCSUFVb0FnZzJBZ2dnQVNBRktRTUFOd01BSUFBZ0FDZ0NJRUVCYWpZQ0lDQURRUUZxSWdNZ0NVNE5BaUFDSUFScUlRUWdBeUFJU0EwQUN3d0JDeUFCSUFFb0FnQW9BcHdCRVFBQUJFQWdBQ2dDUkNJQ1FRRklEUUVnQUNnQ1NDRUVBMEJCQUNFRElBUkJBRW9FUUFOQUlBQW9BaUFnQkNBR2JDQURhbW9oQkFKQUFrQWdBeUFCSUFFb0FnQW9BbmdSQUFBaUFpQUNLQUlBS0FJNEVRQUFUZzBBSUFZZ0FTQUJLQUlBS0FKNEVRQUFJZ0lnQWlnQ0FDZ0NOQkVBQUU0TkFDQUtJQUVnQVNnQ0FDZ0NlQkVBQUNJQ0lBSW9BZ0FvQWpnUkFBQWdCbXdnQTJvUUR5RUZJQWNnQkJBUElnSWdCU2dDQ0RZQ0NDQUNJQVVwQXdBM0F3QU1BUXNnQnlBRUVBOGhBaUFESUFaR0JFQWdBa1FBQUFBQUFBRHdQeEF0REFFTElBSkVBQUFBQUFBQUFBQVFMUXNnQTBFQmFpSURJQUFvQWtnaUJFZ05BQXNnQUNnQ1JDRUNDeUFHUVFGcUlnWWdBa2dOQUFzTUFRc2dBQ2dDSUNFQ0lBRWdBU2dDQUNnQ2VCRUFBQkRGQVNFQklBSWdDVTRnQWlBSVRuSU5BQ0FCUVFGS0lRUkJBQ0VCSUFJaEF3TkFBa0FDUUNBQ0lBTkhCRUFnQXlBQ2F5QUFLQUpJUVFGcWJ3MEJDeUFLSUFFUUR5RUdJQWNnQXhBUElnVWdCaWdDQ0RZQ0NDQUZJQVlwQXdBM0F3QU1BUXNnQnlBREVBOUVBQUFBQUFBQUFBQVFMUXNnQUNBQUtBSWdRUUZxTmdJZ0lBTkJBV29pQXlBSlRnMEJJQUVnQkdvaEFTQURJQWhJRFFBTEN5QUxRUkJxSkFBTHlnTUJBbjhqQUVFUWF5SUJKQUFDUUFKQUlBSVE4Z3NOQUNBQ0tBSm9RYWtCUmcwQUlBQkJBVG9BT1F3QkN3Si9RUUFnQWlBQ0tBSUFLQUs4QVJFQUFCQVdRUUZIRFFBYVFRQWdBaUFDS0FJQUtBSzhBUkVBQUVFQUVCRW9BZ0FpQXlBREtBSUFLQUlNRVFBQUlnTWdBeWdDQUNnQ0ZCRUFBRVVOQUJvZ0FFRUJPZ0E0SUFBZ0FpZ0NhRFlDTkNBQUlBSWdBaWdDQUNnQ2VCRUFBQkRGQVRZQ1BFRUJJQUlnQWlnQ0FDZ0NlQkVBQUNJRElBTW9BZ0FvQW13UkFBQkZEUUFhSUFCQkFUb0FRQ0FBSUFJZ0FpZ0NBQ2dDZUJFQUFDSURJQU1vQWdBb0FqUVJBQUEyQWtRZ0FDQUNJQUlvQWdBb0FuZ1JBQUFpQXlBREtBSUFLQUk0RVFBQU5nSklRUUVMSVFNZ0FTQUNJQUlvQWdBb0Fyd0JFUUFBRUVBMkFnZ2dBU0FDSUFJb0FnQW9BcndCRVFBQUVESTJBZ0FnQVVFSWFpQUJFQjRFUUFOQUlBSW9BbWhCcVFGR0JFQWdBRUVBTmdJZ0N5QUJLQUlJS0FJQUlnUWdBQ0FFS0FJQUtBSUlFUUVBSUFGQkNHb1F6Z0VhSUFFZ0FpQUNLQUlBS0FLOEFSRUFBQkF5TmdJQUlBRkJDR29nQVJBZURRQUxDeUFEUlEwQUlBQkNBRGNDUkNBQVFRQTZBRUFnQUVFQU5nSThJQUJCQURZQ05DQUFRUUE2QURnTElBRkJFR29rQUVFQUMrTURBZ1YvQVgwakFFRWdheUlFSkFBZ0FSQWpHaUFDS0FJQUlRY2dBUkE4SVFVZ0JFRUFPZ0FmQWtBQ1FDQUZSUTBBSUFFZ0J5QUZFRFFpQ0JBUktBSUFJZ1pGRFFBRFFDQUdLQUlBSWdaRkRRRWdCeUFHS0FJRVJ3UkFJQVlvQWdRZ0JSQTBJQWhIRFFJTElBRVFReUFHUVFocUlBSVF4QUpGRFFBTERBRUxJQVJCRUdvZ0FTQUhJQU1Rd2dVZ0FSQWpLQUlBSVFJZ0FSQkRJUU1DUUNBRkJFQWdBeW9DQUNBRnM1UWdBa0VCYXJOZFFRRnpEUUVMSUFRZ0JSQzZBVUVCY3lBRlFRRjBjallDRENBRUFuOGdBUkFqS0FJQVFRRnFzeUFCRUVNcUFnQ1ZqU0lKUXdBQWdFOWRJQWxEQUFBQUFHQnhCRUFnQ2FrTUFRdEJBQXMyQWdnZ0FTQUVRUXhxSUFSQkNHb1FVaWdDQUJEQURTQUhJQUVRUENJRkVEUWhDQXNDUUNBQklBZ1FFU2dDQUNJQ1JRUkFJQVFvQWhBZ0FVRUlhaUlDS0FJQU5nSUFJQUlnQkNnQ0VEWUNBQ0FCSUFnUUVTQUNOZ0lBSUFRb0FoQW9BZ0JGRFFFZ0JDZ0NFQ0VDSUFFZ0JDZ0NFQ2dDQUNnQ0JDQUZFRFFRRVNBQ05nSUFEQUVMSUFRb0FoQWdBaWdDQURZQ0FDQUNJQVFvQWhBMkFnQUxJQVJCRUdvUVh5RUdJQUVRSXlJQklBRW9BZ0JCQVdvMkFnQWdCRUVCT2dBZklBUkJFR29Rc3dJTElBQWdCRUVRYWlBR0VERWdCRUVmYWhDaUFTQUVRU0JxSkFBTExRQWdBU0FBS0FJSVJ3UkFBMEFnQUNnQ0VCb2dBQ0FBS0FJSVFYQnFOZ0lJSUFBb0FnZ2dBVWNOQUFzTEMwTUJBWDhqQUVFUWF5SUJKQUFnQUJBYkdpQUJRZi8vLy84QU5nSU1JQUZCLy8vLy93YzJBZ2dnQVVFTWFpQUJRUWhxRUtRQktBSUFJUUFnQVVFUWFpUUFJQUFMVVFFQmZ5QUFFUGNGSUFBUUd5QUFLQUlBSUFBb0FnUWdBVUVFYWlJQ0VJVUdJQUFnQWhBdUlBQkJCR29nQVVFSWFoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVLZ0JFSjhHQzM0QkFuOGpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBQkJER29nQkVFTWFpQURFSUVDSUFFRVFDQUFLQUlRR2tILy8vLy9BQ0FCSWdOSkJFQVFnZ0VBQ3lBRFFRUjBFQ1loQlFzZ0FDQUZOZ0lBSUFBZ0JTQUNRUVIwYWlJQ05nSUlJQUFnQWpZQ0JDQUFFQ01nQlNBQlFRUjBhallDQUNBRVFSQnFKQUFnQUF0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFFTkFYSWdNZ0FVOEVRQ0FBRUxrRElnQWdBMEVCZGtrRVFDQUNJQUJCQVhRMkFnZ2dBa0VJYWlBQ1FReHFFRklvQWdBaEF3c2dBa0VRYWlRQUlBTVBDeEJ1QUFzdEFDQUJJQUFvQWdoSEJFQURRQ0FBS0FJUUdpQUFJQUFvQWdoQmFHbzJBZ2dnQUNnQ0NDQUJSdzBBQ3dzTExRQWdBeUFES0FJQUlBSWdBV3NpQUVGb2JVRVliR29pQWpZQ0FDQUFRUUZPQkVBZ0FpQUJJQUFRUFJvTEMxRUJBWDhnQUJDVkJ5QUFFQnNnQUNnQ0FDQUFLQUlFSUFGQkJHb2lBaERWRnlBQUlBSVFMaUFBUVFScUlBRkJDR29RTGlBQUVCc2dBUkFqRUM0Z0FTQUJLQUlFTmdJQUlBQWdBQkNTQWhDUkRndCtBUUovSXdCQkVHc2lCQ1FBSUFSQkFEWUNEQ0FBUVF4cUlBUkJER29nQXhDQkFpQUJCRUFnQUNnQ0VCcEJxdFdxMVFBZ0FTSURTUVJBRUlJQkFBc2dBMEVZYkJBbUlRVUxJQUFnQlRZQ0FDQUFJQVVnQWtFWWJHb2lBallDQ0NBQUlBSTJBZ1FnQUJBaklBVWdBVUVZYkdvMkFnQWdCRUVRYWlRQUlBQUxXQUVCZnlNQVFSQnJJZ01rQUNBRElBRTJBZ0FnQXlBQU5nSUlJQU5CQ0dvZ0F4QWVCRUFEUUNBQ0lBTW9BZ2dvQWdBMkFnQWdBa0VFYWlFQ0lBTkJDR29RWmhvZ0EwRUlhaUFERUI0TkFBc0xJQU5CRUdva0FBdGdBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNBQ0FFSUFFMkFnZ2dCRUVJYWlBRUVCNEVRQU5BSUFBZ0F5Z0NBQ0FFS0FJSUVKY0RJQVJCQ0dvUVpob2dBeUFES0FJQVFRUnFOZ0lBSUFSQkNHb2dCQkFlRFFBTEN5QUVRUkJxSkFBTE1BRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnQWdBaUFBTmdJSUlBSWdBa0VJYWhDZkJDRUFJQUpCRUdva0FDQUFDMlFCQVg4akFFRWdheUlFSkFBZ0FDQUJJQVJCRkdvZ0JFRVFhaUFDRU1JTklnSW9BZ0FpQVVVRVFDQUVJQUFnQXhERkNTQUFJQVFvQWhRZ0FpQUVLQUlBRU80Q0lBUVFYeUVCSUFRUXhBa0xJQVJCR0dvZ0FSQXhLQUlBR2lBRVFTQnFKQUFMSlFBZ0FDQUJSd1JBQTBBZ0FrRjBhaUlDSUFGQmRHb2lBUkRUQVNBQUlBRkhEUUFMQ3dzNkFRRi9JQUVnQWtjRVFDQURLQUlBSVFRRFFDQUFJQVFnQVJDZ0JTQURJQU1vQWdCQkRHb2lCRFlDQUNBQlFReHFJZ0VnQWtjTkFBc0xDMVVCQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lBSUFNZ0FEWUNDQ0FEUVFocUlBTVFIZ1JBQTBBZ0FpQURLQUlJRUlZQ0lBSkJER29oQWlBRFFRaHFFSndGSUFOQkNHb2dBeEFlRFFBTEN5QURRUkJxSkFBTFlBRUJmeU1BUVJCcklnUWtBQ0FFSUFJMkFnQWdCQ0FCTmdJSUlBUkJDR29nQkJBZUJFQURRQ0FBSUFNb0FnQWdCQ2dDQ0JDaEJTQUVRUWhxRUp3RklBTWdBeWdDQUVFTWFqWUNBQ0FFUVFocUlBUVFIZzBBQ3dzZ0JFRVFhaVFBQ3pBQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJQUlBSWdBRFlDQ0NBQ0lBSkJDR29RL1FnaEFDQUNRUkJxSkFBZ0FBc2lBUUovUVFFaEFRTkFJQUFRcVFFZ0FVRUJTaUVDSUFGQmYyb2hBU0FDRFFBTEN6b0JBWDhnQUNnQ0FDSUJCRUFnQVNFQUEwQWdBQ0lCS0FJRUlnQU5BQXNnQVE4TEEwQWdBQkNuQWlFQklBQW9BZ2doQUNBQkRRQUxJQUFMTEFFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWdnZ0FVRUlhaERoRnlBQktBSUlJUUFnQVVFUWFpUUFJQUFMWkFFQmZ5TUFRU0JySWdRa0FDQUFJQUVnQkVFVWFpQUVRUkJxSUFJUXdnMGlBaWdDQUNJQlJRUkFJQVFnQUNBREVNTU5JQUFnQkNnQ0ZDQUNJQVFvQWdBUTdnSWdCQkJmSVFFZ0JCRDRDQXNnQkVFWWFpQUJFREVvQWdBYUlBUkJJR29rQUF0akFRRi9Jd0JCSUdzaUFpUUFJQUpCQ0dvZ0FDQUJFTU1OSUFBZ0FrRUVhaUFDS0FJSVFSQnFFTVFOSVFFZ0FDQUNLQUlFSUFFZ0FpZ0NDQkR1QWlBQ1FSaHFJQUpCQ0dvUVh4QXhJUUFnQWtFSWFoRDRDQ0FBS0FJQUdpQUNRU0JxSkFBTFFBRUNmeU1BUVJCcklnSWtBQ0FBSUFKQkJHb2dBVUVRYWhERURTRURJQUFnQWlnQ0JDQURJQUVRN2dJZ0FrRUlhaUFCRURFb0FnQWFJQUpCRUdva0FBcytBUUYvSUFBb0FnQWhBU0FBSUFBUUpUWUNBQ0FBRUNVb0FnQkJBRFlDQ0NBQUVDVkJBRFlDQUNBQUVCdEJBRFlDQUNBQktBSUVJZ0FnQVNBQUd3dTlBUUVCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ0FnQXlBQk5nSUlBa0FnQUJBYktBSUFSUTBBSUFBUTV4Y2lBVVVOQUFOQUlBTkJDR29nQXhBZUJFQWdBVUVRYWlBRFFRaHFFRmNRaGdJZ0FSRDJDaUVDSUFBZ0FSRG1GeUFEUVFocUVLa0JJQUlpQVEwQkRBSUxDd05BSUFFb0FnZ2lBZ1JBSUFJaEFRd0JDd3NnQUNBQkVJd0hDeUFEUVFocUlBTVFIZ1JBQTBBZ0FDQURRUWhxRUZjUTVSY2dBMEVJYWhDcEFTQURRUWhxSUFNUUhnMEFDd3NnQTBFUWFpUUFDeUlBSUFBZ0FSRC9BUm9nQUVFUWFpQUJRUkJxRVA4QkdpQUFJQUVwQWlBM0FpQUxFZ0FnQVNBQktBSUFLQUo4RVFBQUVNWU5DeVVBSUFBb0FnUkJQM0ZCZjJvaUFFRUdUUVJBUWYwQUlBQkIvd0J4ZGtFQmNROExRUUFMdWdFQkFuOGpBRUVRYXlJQ0pBQUNRQUpBSUFFZ0FTZ0NBQ2dDZUJFQUFDSURJQU1vQWdBb0Fpd1JBQUFpQXhEckYwVUVRQ0FETHdFRVFjRC9BWEZGRFFFTElBSWdBQ2dDSUNBQklBRW9BZ0FvQXNBQkVRQUFFTVFGTmdJSUlBSWdBQ2dDSUJCK05nSUFJQUpCQ0dvZ0FoQ0lBVVVOQUNBQklBSkJDR29RVnlnQ0VDQUJLQUlBS0FLOEFSRUJBQXdCQ3lBQklBRWdBU2dDQUNnQ3VBRVJBQUFnQUNnQ0pHb2dBU2dDQUNnQ3ZBRVJBUUFMSUFKQkVHb2tBQXRWQVFGL0lBRWdBU2dDQUNnQ2VCRUFBQ0lDSUFJb0FnQW9BaXdSQUFBdkFRUkJ3UDhCY1VVRVFDQUJJQUVvQWdBb0FyZ0JFUUFBSVFJZ0FDZ0NJQ0FCSUFFb0FnQW9Bc0FCRVFBQUVNY05JQUkyQWdBTEMwWUFJd0JCRUdzaUFpUUFJQUFnQVJEWEFpSUFFSjhKSUFKQkNHb2dBRUVBRU1NQkVKRUJJZ0FvQWdCQkVHb2dBeWdDQUJDdkdpQUFFQ1ZCQVRvQUJDQUNRUkJxSkFBTGdnRUJBbjhqQUVFZ2F5SUZKQUFnQVNBRlFSeHFJQUlRb1FraUJpZ0NBQ0VDSUFWQkFEb0FHeUFDUlFSQUlBVkJDR29nQVVIUXNCRWdBeUFFRU80WElBRWdCU2dDSENBR0lBVW9BZ2dRcEFRZ0JVRUlhaEJmSVFJZ0JVRUJPZ0FiSUFWQkNHb1FvQWtMSUFBZ0JVRUlhaUFDRURFZ0JVRWJhaENpQVNBRlFTQnFKQUFMakFFQkFuOGpBRUVRYXlJQ0pBQWdBU0FCS0FJQUtBSjRFUUFBSWdNZ0F5Z0NBQ2dDTEJFQUFDOEJCRUhBL3dGeEJFQWdBU0FCS0FJQUtBSzRBUkVBQUNFRElBQW9BaUFnQVNBQktBSUFLQUxBQVJFQUFCREhEU0FETmdJQUN5QUNJQUVnQVNnQ0FDZ0N1QUVSQUFBMkFnd2dBQ0FBUVNScUlBSkJER29RcGdFb0FnQTJBaVFnQWtFUWFpUUFDNGNCQVFSL0l3QkJFR3NpQVNRQUlBQWdBQ2dDUUNJQ0VEZEJmMm9pQXhEeUZ5RUVJQUlnQXhBNEtBSUFJQUZCREdvZ0FVRUlhaUFBSUFBb0FnQW9BaXdSQUFBcEFnUkNONGluUVE5eElBQWdBQ2dDQUNnQ0xCRUFBQ2tDQkVLQWdJQ0FnSUNBT0lOQ2dJQ0FnSUNBZ0FoUkVKZ0ZHaUFCS0FJTUlRQWdBVUVRYWlRQUlBQWdCR29MdkFFQkJIOGpBRUVRYXlJQ0pBQUNmeUFBS0FKQUlnUWdBUkE0S0FJQUlnTWdBeWdDQUNnQ0tCRUFBQkNXQWdSQUlBUWdBUkE0S0FJQUlnQWdBQ2dDQUNnQ0tCRUFBQ2dDREF3QkN5QUNRUUEyQWd3Z0FrRUFOZ0lJUVFBaUF5QUJRUUJJRFFBYUEwQWdBQ0FFSUFNUU9DZ0NBQ0FDUVFocUlBSkJER29ROHhjZ0F5QUJTQVJBSUFJZ0FpZ0NDQ0FDS0FJTWFqWUNDQXNnQVNBRFJpRUZJQU5CQVdvaEF5QUZSUTBBQ3lBQ0tBSUlDeUVBSUFKQkVHb2tBQ0FBQzR3QkFnRi9BWDRqQUVFUWF5SUVKQUFnQVNBQktBSUFLQUlzRVFBQUtRSUVJUVVnQWlBQklBTWdCRUVNYWlBQUlBQW9BZ0FvQWl3UkFBQXBBZ1JDTjRpblFROXhBbjhnQlVJMGlLZEJCM0VpQVFSQUlBRkJBVVlNQVFzZ0FDQUFLQUlBS0FJc0VRQUFLUUlFUW9DQWdJQ0FnSUE0ZzBLQWdJQ0FnSUNBQ0ZFTEVKZ0ZFSVFDSUFSQkVHb2tBQXRNQVFGL0FrQWdBQ0FBS0FJQUtBSm9FUUFBUlEwQUlBQWdBQ2dDQUNnQ2NCRUFBQTBBSUFGQkVFd0VRQ0FDUVJCdElBRWdBbXBCZjJwQkVHMUhEd3NnQWtFUGNVRUFSeUVEQ3lBREM5NEJBUU4vSXdCQkVHc2lBeVFBSUFNZ0FDQUJJQUJCd0FScUlBRWdBU2dDQUNnQ0xCRUFBQ0lCS0FJY1FROXhFR3NpQUVFVWFpQUFRUlZxSUFCQkZtb1FoQWNpQWlBQktRSVlRaktJcDBIL1AzRnFOZ0lNSUFBZ0FFRVFhaUFEUVF4cUVGSW9BZ0EyQWhCQmZ5RUVJQU1nQVNrQ0dFSXlpS2RCL3o5eElnRWdBU0FDYWtGL2FoQ1pBU0VDQWtBQ1FDQUFFSm9CQkVCQkFDRUJBMEFnQWlBQUlBRVFMQkNaQlEwQ0lBRkJBV29pQVNBQUVKb0JTUTBBQ3dzZ0FDQUNFSVFCREFFTElBSWdBQ0FCRUN3UXBnRW9BZ0FoQkFzZ0EwRVFhaVFBSUFRTFd3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBaUFBUVlBR2FpSUFJQUpCREdvUXlnMDJBZ0FnQWhDRkJ6WUNDRUVBSVFFZ0FpQUNRUWhxRUI1RkJFQWdBaUFBSUFKQkRHb1F5UTFCQVNFQkN5QUNRUkJxSkFBZ0FRdDlBUUovSXdCQklHc2lBeVFBSUFBUUd5SUNJQU5CQ0dvZ0FDQUFFS2dCUVFGcUVOTVhJQUFRcUFFZ0FoRFNGeUlDS0FJSUlBRVE4Z2dnQWlBQ0tBSUlRUkJxTmdJSUlBQWdBaERSRnlBQ0lBSW9BZ1FRenhjZ0FpZ0NBQVJBSUFJb0FoQWFJQUlvQWdBaEFDQUNFUDRJR2lBQUVDb0xJQU5CSUdva0FBdExBUUYvSXdCQkVHc2lBaVFBQWtBZ0FDZ0NCQ0FBRUJzb0FnQkhCRUFnQUJBYklBQW9BZ1FnQVJEeUNDQUFJQUFvQWdSQkVHbzJBZ1FNQVFzZ0FDQUJFUGNYQ3lBQ1FSQnFKQUFMN0FFQ0EzOEJmaU1BUVVCcUlnUWtBQ0FFSUFJMkFqd2dCRUV3YWlBQklBRVFtUUVhUVg4aEFTQUVRUkJxSUFJZ0FpQURha0YvYWhDWkFSb2dCQ0FFS1FNd0lnYzNBeGdnQkNBSE53TUlJQVFnQkNrREVEY0RBQ0FFUVNCcUlnSWdCQ2tDQ0RjQ0FDQUNJQVFwQWdBM0FnZ2dBaUVEQWtBQ1FDQUFRWlFHYWlJRkVLZ0JCRUJCQUNFQ0EwQWdBeUlBSUFVZ0FoREVBU0lHRUprRkJIOGdBRUVJYWlBR1FRaHFFSmtGQlVFQUN3MENJQUpCQVdvaUFpQUZFS2dCU1EwQUN3c2dCU0FERVBnWERBRUxJQVJCUEdvZ0JTQUNFTVFCUVFocUVLWUJLQUlBSVFFTElBUkJRR3NrQUNBQkMzMEJBbjhqQUVFZ2F5SURKQUFnQUJBYklnSWdBMEVJYWlBQUlBQVFrZ0pCQVdvUWt3NGdBQkNTQWlBQ0VOY1hJZ0lvQWdnZ0FSRExEU0FDSUFJb0FnaEJHR28yQWdnZ0FDQUNFTllYSUFJZ0FpZ0NCQkRVRnlBQ0tBSUFCRUFnQWlnQ0VCb2dBaWdDQUNFQUlBSVFrQTRhSUFBUUtnc2dBMEVnYWlRQUN6QUJBWDhDUUNBQUlBRVFtUVZGRFFBZ0FFRUlhaUFCUVFocUVKa0ZSUTBBSUFBb0FoUWdBU2dDRkVZaEFnc2dBZ3VrQndFRmZ5TUFRZUFCYXlJRUpBQWdBMEVBT2dBQUFrQUNmMEVBSUFFUThRSU5BQnBCQVNBQkVQQUNEUUFhSUFFb0FnUkJQM0ZCZTJvaUJVRUJTd1JBUVg4aEJRd0NDMEVDSUFWQkFXc05BQnBCQXdzaEJ3SkFBa0FDUUNBQkVMRUNSUVJBSUFFUXJnSkZEUUVMUVFFaEJTQUNJQUlvQWdBb0FuUVJBQUJGRFFJZ0FpQUNLQUlBS0FKRUVRQUFJUVVNQVFzQ1FDQUNJQUlvQWdBb0FuQVJBQUJGRFFBZ0FTQUFLQUlBRU5jSFJRMEFJQVJCaUFGcUlBSkJBRUVBRU0wQklnWWdBQ2dDQUJDSEJDRUZJQVlRTlJvTUFRc2dBaUFBS0FJQUVJY0VJUVVMSUFWQkFrY05BQUpBSUFJZ0FpZ0NBQ2dDSEJFQUFFRUNSdzBBSUFJZ0FpZ0NBQ2dDTUJFQUFFRURSdzBBSUFFUThRSkZCRUJCQWlFRklBRVE4QUpGRFFJTElBUkJnQUZxSUFFb0FoUkIveDl4SWdVZ0JSQ1pBUm9nQkVId0FHcEJBRUVERUprQkdpQUVJQVFwQTRBQk53TjRJQUlnQWlnQ0FDZ0NIQkVBQUNFRklBUWdCQ2tEZURjREdDQUVJQVFwQTNBM0F4QWdBQ0FISUFSQmlBRnFJQVJCR0dvZ0JFRVFhaUFGUVFBUTlRZ2lCaUFDSUFNUTlBZ2lCVUYvU2cwQ0lBQWdCMEVNYkdwQm9BWnFJZ2dnQmhEekNDQUVRZWdBYWlBQktBSVVRZjhmY1VFQmFpSUJJQUVRbVFFYUlBUkJRR3RCQUVFQkVKa0JHaUFFSUFRcEEyZzNBMGdnQWlBQ0tBSUFLQUljRVFBQUlRRWdCQ0FFS1FOSU53TUlJQVFnQkNrRFFEY0RBQ0FBSUFjZ0JFSFFBR29nQkVFSWFpQUVJQUZCQUJEMUNDSUFJQUlnQXhEMENDSUZRWDlLRFFJZ0NDQUFFUE1JREFJTFFRSWhCUXNnQkVIUUFHb2dBU2dDRkVIL0gzRWlCaUFGSUFacVFYOXFFSmtCR2lBRVFZQUJha0VBUVFNUW1RRWhCZ0pBSUFFUXNnTkZCRUFnQWlBQ0tBSUFLQUl3RVFBQVFRRklEUUVMSUFJZ0FpZ0NBQ2dDTUJFQUFFRUNRUUVnQWlBQ0tBSUFLQUljRVFBQVFRSkdHMndoQ0FKQUlBRVFzZ05GQkVBZ0JDZ0NnQUVoQlF3QkN5QUVJQUVvQWhSQkRIWkJCM0VpQlRZQ2dBRUxJQVlnQlNBSWFrRi9hallDQkFzZ0JDQUVLUU5RTndNNElBUWdCQ2tEZ0FFM0F6QWdBaUFDS0FJQUtBSWNFUUFBSVFaQkFDRUZJQUVRemdRRVFDQUJMUUFhSVFVTElBUWdCQ2tET0RjREtDQUVJQVFwQXpBM0F5QWdCRUdJQVdvZ0JFRW9haUFFUVNCcUlBWWdCUkQxQ0NFR0FrQUNRQ0FBRUljRkRRQWdBQ2dDQUEwQUlBRVE4UUpGRFFBZ0FDZ0NPRUVCVGcwQVFYOGhCUXdCQ3lBQUlBY2dCaUFDSUFNUTlBZ2lCVUYvU2cwQkN5QUFJQWRCREd4cVFhQUdhaUFHRVBNSUN5QUVRZUFCYWlRQUlBVUxXd0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ0FnQWlBQU5nSUlBa0FnQWtFSWFpQUNFQjVGRFFBRFFDQUNLQUlJS0FJQVJRMEJJQUpCQ0dvUVpob2dBa0VJYWlBQ0VCNE5BQXNMSUFJb0FnZ2hBQ0FDUVJCcUpBQWdBQXQ5QVFGL0l3QkJJR3NpQXlRQUlBTWdBallDRUNBRElBRTJBaGdnQUNnQ0FDRUJJQU1nQUJCQU5nSUlJQUVnQTBFWWFpQURRUWhxRUo4RVFRSjBhaUVCSUFOQkdHb2dBMEVRYWhBZUJFQWdBQ0FCSUFOQkVHb2dBMEVZYWhDZkJFRUNkR29nQUNnQ0JDQUJFSkVFRU13RkN5QUJFR0VhSUFOQklHb2tBQXVUQVFFQmZ5TUFRU0JySWdJa0FDQUNJQUUyQWhBZ0FpQUFJQUVRL1JjMkFoZ0NRQ0FDUVJocUlBSkJFR29RSGtVTkFDQUNJQUlvQWhnMkFnZ2dBa0VJYWhCbUlBSkJFR29RSGtVTkFBTkFJQUlvQWdnb0FnQUVRQ0FDS0FJWUlBSW9BZ2dvQWdBMkFnQWdBa0VZYWhCbUdnc2dBa0VJYWhCbUlBSkJFR29RSGcwQUN3c2dBaWdDR0NFQUlBSkJJR29rQUNBQUN5b0JBWDhnQUJBYkdpQUFLQUlBSWdFZ0FSRGdCQ0FBRUJzaUFDQUFLQUlBUVg5cU5nSUFJQUVRS2d1WkFRRURmeUFBRVBJRklnRWdBU2dDQUNnQ3ZBRVJBQUFpQXhBV0JIOERRQUpBSUFNZ0FoQVJLQUlBSWdFZ0FTZ0NBQ2dDTUJFQUFDSUJJQUVvQWdBb0FvZ0JFUUFBS1FJRVFqK0RRZ1JTRFFBZ0FTQUJLQUlBS0FMQUFSRUFBRUVEUVlLd0VSQ0ZBa1VOQUNBQUlBRWdBU2dDQUNnQ3dBRVJBQUFRdEFGRkRRQkJBUThMSUFKQkFXb2lBaUFERUJaSkRRQUxRUUFGSUFJTEM4QUJBUVYvQWtBZ0FCRHlCU0lESUFNb0FnQW9BcndCRVFBQUlnWVFGa1VFUUVFQUlRTU1BUXRCQUNFREEwQWdCaUFGRUJFb0FnQWlBaUFDS0FJQUtBSU1FUUFBSWdJZ0FpZ0NBQ2dDZUJFQUFDSUNJQUlvQWdBb0Fpd1JBQUFoQWdKQUlBQW9BZ0JCQkVjTkFDQUNLUUlFUXYvL0FZTkNCRklOQUNBRFFRRnFJUU1nQkNBQ0VJNEVRUUZ6Y2lFRUN5QUZRUUZxSWdVZ0JoQVdTUTBBQ3dzZ0FCQ0hCVVVnQkVFQmNVVWdBMEVDU0hKeVJRUkFJQUFnQVVHMXJ4RVFXQXNMbkFnQkJuOGpBRUZBYWlJQ0pBQWdBaUFBUVJ4cUlnTVFqQUkyQWpBZ0FpQURFR0UyQWlnZ0FrRXdhaUFDUVNocUVCNEVRQU5BSUFKQk1Hb1FSRUVBT2dBZ0lBSkJNR29RUkVGL05nSWtJQUpCTUdvUThRRWdBaUFERUdFMkFpZ2dBa0V3YWlBQ1FTaHFFQjROQUFzTElBQW9Ba0FpQkNBRUtBSUFLQUlZRVFBQUlnUWdCQ2dDQUNnQ3ZBRVJBQUFpQkJBV0lRVWdBa0VCT2dBb0lBSkJNR29nQlNBQ1FTaHFFT01OSVFjZ0JCQVdRUUZPQkVCQkFDRUZBMEFDUUNBRUlBVVFFU2dDQUNJR0lBWW9BZ0FvQWhnUkFBQWlCa1VOQUNBR0tBSm9RUVJIRFFBZ0JpQUdLQUlBS0FMSUFSRUFBQ0FBRUVNUUV4Q0hBUVJBSUFKQktHb2dCeUFGRUpvRklBSkJLR3BCQUJDSkJ3c2dBaUFERUl3Q05nSW9JQUlnQXhCaE5nSWdJQUpCS0dvZ0FrRWdhaEFlUlEwQUEwQWdBa0VvYWhCRVFSQnFJQVlnQmlnQ0FDZ0N5QUVSQUFBUW1BSUVRQ0FDUVNocUVFUWdCVFlDSkFzZ0FrRW9haER4QVNBQ0lBTVFZVFlDSUNBQ1FTaHFJQUpCSUdvUUhnMEFDd3NnQlVFQmFpSUZJQVFRRmtnTkFBc0xJQUlnQXhDTUFqWUNLQ0FDSUFNUVlUWUNJQ0FDUVNocUlBSkJJR29RSGdSQUEwQWdBa0VvYWhCRUlBQVFReEFURUljQlJRUkFJQUpCS0dvUVJFRUJPZ0FnQ3lBQ1FTaHFFUEVCSUFJZ0F4QmhOZ0lnSUFKQktHb2dBa0VnYWhBZURRQUxDd05BQWtBZ0FpQURFSXdDTmdJb0lBSWdBeEJoTmdJZ1FRQWhCU0FDUVNocUlBSkJJR29RSGtVTkFBTkFBa0FnQWtFb2FoQkVMUUFnUlEwQUlBSWdBeENNQWpZQ0lDQUNJQU1RWVRZQ0dDQUNRU0JxSUFKQkdHb1FIa1VOQUFOQUFrQWdBa0VnYWhCRUxRQWdEUUFnQWtFb2FoQkVRUkJxSUFKQklHb1FSQkNZQWtVTkFFRUJJUVVnQWtFZ2FoQkVRUUU2QUNBTElBSkJJR29ROFFFZ0FpQURFR0UyQWhnZ0FrRWdhaUFDUVJocUVCNE5BQXNMSUFKQktHb1E4UUVnQWlBREVHRTJBaUFnQWtFb2FpQUNRU0JxRUI0TkFBc2dCUTBCQ3dzZ0FpQURFSXdDTmdJZ0lBSWdBeEJoTmdJb0lBSkJJR29nQWtFb2FoQWVCRUFEUUFKQUlBSkJJR29RUkMwQUlFVU5BQ0FDUVNCcUVFUW9BaVJCZjBZRVFDQUFJQUZCajY4UkVGZ2dBVUhzblJFUUVDQUNRU0JxRUVSQkVHb1F1UUZCenBjUkVCQWFEQUVMSUFKQktHb2dCeUFDUVNCcUVFUW9BaVFRbWdVZ0FrRW9ha0VCRUlrSEN5QUNRU0JxRVBFQklBSWdBeEJoTmdJb0lBSkJJR29nQWtFb2FoQWVEUUFMQ3lBRUVCWkJBVTRFUUVFQUlRQURRQ0FDUVNocUlBY2dBQkNhQlNBQ1FTaHFFSUVKUlFSQUlBUWdBQkFSUVFBMkFnQUxJQUJCQVdvaUFDQUVFQlpJRFFBTEN5QUVFRUFoQUNBRUVESWhBU0FDUVFBMkFpQWdBaUFBSUFFUS94YzJBaWdnQWtFUWFpQUNRU2hxRUdjaEFDQUNJQVFRTWpZQ0dDQUNRUWhxSUFKQkdHb1FaeUVCSUFRZ0FDZ0NBQ0FCS0FJQUVQNFhJQWNRaUFjZ0FrRkFheVFBQyswRUFRWi9Jd0JCTUdzaUFpUUFJQUlnQUVFY2FpSURFSXdDTmdJUUlBSWdBeEJoTmdJb0lBSkJFR29nQWtFb2FoQWVCRUFEUUNBQ1FSQnFFRVJCQURvQUlDQUNRUkJxRUVSQkFEb0FJU0FDUVJCcUVFUkJBRG9BSWlBQ1FSQnFFUEVCSUFJZ0F4QmhOZ0lvSUFKQkVHb2dBa0VvYWhBZURRQUxDd05BQWtBZ0FrRUFOZ0lvSUFJZ0F4Q01BallDRUNBQ0lBTVFZVFlDSUFKQUlBSkJFR29nQWtFZ2FoQWVCRUFEUUNBQ1FSQnFFRVF0QUNCRkJFQWdBaUFDUVJCcUVFUTJBaWdNQXdzZ0FrRVFhaER4QVNBQ0lBTVFZVFlDSUNBQ1FSQnFJQUpCSUdvUUhnMEFDd3NnQWlnQ0tFVU5BUXNnQWtFUWFoQ1pDU0VFSUFJb0FpaEJBVG9BSVNBRUlBSkJLR29ReVFjZ0JCRGZCRVVFUUFOQUlBUVFSQ2dDQUNFRklBSWdBeENNQWpZQ0lDQUNJQU1RWVRZQ0NBSkFJQUpCSUdvZ0FrRUlhaEFlUlEwQUlBVkJFR29oQlFOQUFrQUNRQ0FDUVNCcUVFUXRBQ0FOQUNBRklBSkJJR29RUkJDWUFrVU5BQ0FDUVNCcUVFUXRBQ0VoQnlBQ1FTQnFFRVFoQmlBSFJRMEJJQVl0QUNJTkFDQUFJQUZCOGE0UkVGZ2dBVUhzblJFUUVDQUZFTGtCUVlXdkVSQVFJQUpCSUdvUVJFRVFhaEM1QVVIT2x4RVFFQm9nQWtFZ2FoQkVRUUU2QUNJZ0FFRUJPZ0RZQXdzZ0FrRWdhaER4QVNBQ0lBTVFZVFlDQ0NBQ1FTQnFJQUpCQ0dvUUhnMEJEQUlMQ3lBR1FRRTZBQ0VnQWlBQ1FTQnFFRVEyQWdnZ0JDQUNRUWhxRU1rSEN5QUNJQU1RWVRZQ0NDQUNRU0JxSUFKQkNHb1Fsd0lFUUNBRUVFUW9BZ0JCQURvQUlTQUVFRVFvQWdCQkFUb0FJQ0FFRUlBWUN5QUVFTjhFUlEwQUN3c2dBa0VRYWhDV0RpQUNLQUlvRFFFTEN5QUNRVEJxSkFBTG5RNEJCWDhqQUVFd2F5SUZKQUFnQUNnQ1FBUkFBa0FnQUNnQ3pBTkJBRW9OQUFKQUlBQWdBVUcrb0JFUVdBd0JBQXNBQ3lBQUlBRVFoQmdnQUNBQkVJTVlJQUFnQVJDQ0dDQUFLQUxVQTBFQ1RnUkFJQUFnQVVHTm9SRVFXQXNnQUNnQ2pBUkJmMFlFUUNBQVFRRTJBb3dFQ3dKQUlBQWdCVUcvb1JFUUlpSUNFTFFCUlFSQUlBSVFHUm9NQVFzZ0FDQUZRU0JxUWMraEVSQWlJZ01RdEFFaEJDQURFQmthSUFJUUdSb2dCRVVOQUNBQUlBRkIzYUVSRUZnTEFrQWdBQ0FGUWJHaUVSQWlJZ0lRdEFGRkJFQWdBaEFaR2d3QkN5QUFJQVZCSUdwQno2RVJFQ0lpQXhDMEFTRUVJQU1RR1JvZ0FoQVpHaUFFUlEwQUlBQWdBVUhCb2hFUVdBc0NRQ0FBRUlFWVJRMEFBa0FnQUNBRlFaV2pFUkFpSWdJUXRBRUVRQ0FDRUJrYURBRUxJQUFnQlVFZ2FrR2lveEVRSWlJREVMUUJJUVFnQXhBWkdpQUNFQmthSUFSRkRRRUxJQUFnQVVHdW94RVFXQXNDUUNBQUlBVkJsYU1SRUNJaUFoQzBBVVVFUUNBQ0VCa2FEQUVMSUFBZ0JVRWdha0dpb3hFUUlpSURFTFFCSVFRZ0F4QVpHaUFDRUJrYUlBUkZEUUFnQUNBQlFmV2pFUkJZQ3lBQVFjQUVhaUlERUpJQ0JFQkJBQ0VDQTBBZ0F5QUNFR3N0QUJRaEJpQURJQUlRYXlFRUFrQUNmMEVJSUFZTkFCb2dCQzBBRlNFR0lBTWdBaEJySVFSQkJDQUdEUUFhSUFRdEFCWkZEUUVnQXlBQ0VHc2hCRUVDQ3lFR0lBUkJFR29nQmhDRUFnc0NRQ0FESUFJUWF5Z0NERUgvL3dCR0RRQWdBeUFDRUdzb0FoQWdBeUFDRUdzb0FneE5EUUFnQUNBQlFhS2tFUkJZSUFGQkFoQ3RBeUFCUWRha0VSQVFJQUlRbFFGQjVxUVJFQkFnQXlBQ0VHc29BZ3dRbFFGQjlLUVJFQkFnQXlBQ0VHc29BaEFRbFFGQnpwY1JFQkFhQ3lBRElBSVFheWdDREVILy93QkdCRUFnQXlBQ0VHc29BaEFoQkNBRElBSVFheUFFTmdJTUN3SkFBa0FnQXlBQ0VHc3RBQlJGRFFBZ0F5QUNFR3NvQWd4QkNCQ1RCQTBBSUFBZ0FVR09wUkVRV0NBQlFRSVFyUU1nQVVIV3BCRVFFQ0FDRUpVQlFlYWtFUkFRSUFNZ0FoQnJLQUlNRUpVQlFjNlhFUkFRR2d3QkN3SkFJQU1nQWhCckxRQVZSUTBBSUFNZ0FoQnJLQUlNUVFRUWt3UU5BQ0FBSUFGQjNxVVJFRmdnQVVFQ0VLMERJQUZCMXFRUkVCQWdBaENWQVVIbXBCRVFFQ0FESUFJUWF5Z0NEQkNWQVVIT2x4RVFFQm9NQVFzZ0F5QUNFR3N0QUJaRkRRQWdBeUFDRUdzb0FneEJBaENUQkEwQUlBQWdBVUdBcGhFUVdDQUJRUUlRclFNZ0FVSFdwQkVRRUNBQ0VKVUJRZWFrRVJBUUlBTWdBaEJyS0FJTUVKVUJRYzZYRVJBUUdnc2dBeUFDRUdzb0Fnd2dBQ2dDakFOQkFuUkxCRUFnQUNBQlFkU21FUkJZSUFGQkFoQ3RBeUFCUWRha0VSQVFJQUlRbFFGQjdhWVJFQkFnQXlBQ0VHc29BZ3hCQW5ZUWxRRkJrNmNSRUJBZ0FDZ0NqQU1RbFFGQnpwY1JFQkFhQ3lBQ1FRRnFJZ0lnQXhDU0Fra05BQXNMQWtBZ0FDZ0NBQ0lDUVExTkJFQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ1FRRnJEZzBBQVFJRENBUUVCQVFFQkFZRkNBc2dBQ2dDa0FSQmYwY05CeUFBSUFGQnhxY1JFRmdNQndzZ0FDZ0NsQVJGQkVBZ0FDQUJRWWFvRVJCWUN5QUFLQUtnQkVVRVFDQUFRUUUyQXFBRUN5QUFLQUtrQkEwR0lBQkJBallDcEFRTUJnc2dBQ2dDbEFSRkJFQWdBQ0FCUVlhb0VSQllDeUFBS0FLWUJFVUVRQ0FBSUFGQndhZ1JFRmdMSUFBb0FwQUVRWDlIRFFVZ0FDQUJRZjJvRVJCWURBVUxJQUF0QUs0RVJRMEVJQUF0QUswRURRUWdBQ0FCUWIycEVSQllEQVFMSUFBb0F0QUVRUUpJRFFNZ0FDQUJRZStwRVJCWURBTUxBa0FnQUNBRlFhbXFFUkFpSWdJUXRBRkZCRUFnQWhBWkdnd0JDeUFBSUFWQklHcEJ0YW9SRUNJaUF4QzBBU0VFSUFNUUdSb2dBaEFaR2lBRVJRMEFJQUFnQVVIS3FoRVFXQXNDUUNBQUlBVkJ2NkVSRUNJaUFoQzBBVVVFUUNBQ0VCa2FEQUVMSUFBZ0JVRWdha0dDcXhFUUlpSURFTFFCSVFRZ0F4QVpHaUFDRUJrYUlBUkZEUUFnQUNBQlFadXJFUkJZQ3dKQUlBQWdCVUd4b2hFUUlpSUNFTFFCUlFSQUlBSVFHUm9NQVFzZ0FDQUZRU0JxUWR1ckVSQWlJZ01RdEFFaEJDQURFQmthSUFJUUdSb2dCRVVOQUNBQUlBRkI5S3NSRUZnTEFrQWdBQ0FGUWJTc0VSQWlJZ0lRdEFGRkJFQWdBaEFaR2d3QkN5QUFJQVZCSUdwQnZhd1JFQ0lpQXhDMEFTRUVJQU1RR1JvZ0FoQVpHaUFFUlEwQUlBQWdBVUhQckJFUVdBc0NRQ0FBSUFWQmdhMFJFQ0lpQWhDMEFVVUVRQ0FDRUJrYURBRUxJQUFnQlVFZ2FrR1JyUkVRSWlJREVMUUJJUVFnQXhBWkdpQUNFQmthSUFSRkRRQWdBQ0FCUWFxdEVSQllDeUFBS0FLWUJFVUVRQ0FBSUFGQndhZ1JFRmdMSUFBb0FwQUVRWDlHQkVBZ0FDQUJRZjJvRVJCWUN5QUFLQUxZQkVGL1J3MEFJQUFnQVVIcXJSRVFXQXNnQUNnQzNBUkJBa2dOQVNBQUlBRkJySzRSRUZnTUFRc2dBQ0FCUWVLdUVSQllDeUFGUVFBUXlBSWdCVUg0c1JFMkFnQWdCU0VCSUFBb0FrQWlBQ0FCSUFBb0FnQW9BZ2dSQVFBZ0FSQ2FBaG9MSUFWQk1Hb2tBQXRvQVFKL0lBQVF4UVFnQVNnQ0JDRURJQUFRT3lBQUtBSUFJQUlnQVVFRWFpSUVFTThLSUFBUU95QUNJQUFvQWdRZ0FVRUlhaUlDRUpjTElBQWdCQkF1SUFCQkJHb2dBaEF1SUFBUUd5QUJFQ01RTGlBQklBRW9BZ1EyQWdBZ0FDQUFFQllRclFVZ0F3dG5BUUYvSXdCQkVHc2lBeVFBSUFNZ0FqWUNBQ0FESUFFMkFnZ2dBQ2dDRUNFQklBTkJDR29nQXhBZUJFQURRQ0FCSUFBb0FnZ2dBeWdDQ0JDWEF5QUFJQUFvQWdoQkJHbzJBZ2dnQTBFSWFoQm1HaUFEUVFocUlBTVFIZzBBQ3dzZ0EwRVFhaVFBQzFFQkFuOGdBU0FBS0FJRUlnVWdBMnRxSWdRZ0Fra0VRQ0FFSVFNRFFDQUFFRHNnQUNnQ0JDQURFSmNESUFBZ0FDZ0NCRUVFYWpZQ0JDQURRUVJxSWdNZ0Fra05BQXNMSUFFZ0JDQUZFUDRGR2dzaUFDTUFRUkJySWdNa0FDQUFFRHNnQVNBQ0lBQkJCR29RMlJjZ0EwRVFhaVFBQy80TkFRTi9Jd0JCSUdzaUJTUUFBa0FnQWlBQ0tBSUFLQUo0RVFBQUlBTWdBeWdDQUNnQ2VCRUFBQkRBQVVVTkFBSkFJQUlnQWlnQ0FDZ0NlQkVBQUNJR0lBWW9BZ0FvQW5BUkFBQkZEUUFnQXlBREtBSUFLQUo0RVFBQUlnWWdCaWdDQUNnQ2NCRUFBRVVOQUNBQ0lBSW9BZ0FvQW5nUkFBQWdBeUFES0FJQUtBSjRFUUFBRU9VR1JRMEFJQUlnQWlnQ0FDZ0NlQkVBQUNJR0lBWW9BZ0FvQW5nUkFBQU5BU0FESUFNb0FnQW9BbmdSQUFBaUJpQUdLQUlBS0FKNEVRQUFEUUVMSUFBZ0FVSHhuUkVRV0VFQklRUUxJQUlnQWlnQ0FDZ0NpQUVSQUFBcEFnUWdBeUFES0FJQUtBS0lBUkVBQUNrQ0JJVkNQNE5RUlFSQUlBQWdBVUdEbmhFUVdFRUJJUVFMSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQU9JTlFSUVJBSUFBZ0FVR2luaEVRV0VFQklRUUxJQUlnQWlnQ0FDZ0NpQUVSQUFBcEFnUWdBeUFES0FJQUtBS0lBUkVBQUNrQ0JJVkNnSUNBd0FDRFVFVUVRQ0FBSUFGQnc1NFJFRmhCQVNFRUN5QUNJQUlvQWdBb0FvZ0JFUUFBRUxjRElBTWdBeWdDQUNnQ2lBRVJBQUFRdHdOelFRRkdCRUFnQUNBQlFlK2VFUkJZUVFFaEJBc0NRQUpBSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQWdBR0RRZ0JTRFFBZ0FpQUNLQUlBS0FLSUFSRUFBQ2tDQkNBRElBTW9BZ0FvQW9nQkVRQUFLUUlFaFVLQWdJQ0FBb05DQUZJTkFDQUNJQUlvQWdBb0FvZ0JFUUFBS1FJRUlBTWdBeWdDQUNnQ2lBRVJBQUFwQWdTRlFvQ0FnSUFFZzBJQVVnMEFJQUlnQWlnQ0FDZ0NpQUVSQUFBUXNnY2dBeUFES0FJQUtBS0lBUkVBQUJDeUIwY05BQ0FDSUFJb0FnQW9Bb2dCRVFBQUVMVUZJQU1nQXlnQ0FDZ0NpQUVSQUFBUXRRVkhEUUFnQWlBQ0tBSUFLQUtJQVJFQUFCRDJDQ0FESUFNb0FnQW9Bb2dCRVFBQUVQWUljMEVCUncwQkN5QUFJQUZCbVo4UkVGaEJBU0VFQ3dKQUFrQWdBaUFDS0FJQUtBS0lBUkVBQUNrQ0JDQURJQU1vQWdBb0FvZ0JFUUFBS1FJRWhVS0FnSUNBZ0lBSWcwSUFVZzBBSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQWdJQ0FJSU5DQUZJTkFDQUNJQUlvQWdBb0FvZ0JFUUFBS1FJRUlBTWdBeWdDQUNnQ2lBRVJBQUFwQWdTRlFvQ0FnSUNBZ01BQWcwSUFVZzBBSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQWdJQ0FnQUdEUWdCU0RRQWdBaUFDS0FJQUtBS0lBUkVBQUNrQ0JDQURJQU1vQWdBb0FvZ0JFUUFBS1FJRWhVS0FnSUNBZ0lDQUFvTkNBRklOQUNBQ0lBSW9BZ0FvQW9nQkVRQUFLUUlFSUFNZ0F5Z0NBQ2dDaUFFUkFBQXBBZ1NGUW9DQWdJQ0FnSUFFZzBJQVVnMEFJQUlnQWlnQ0FDZ0NpQUVSQUFBcEFnUWdBeUFES0FJQUtBS0lBUkVBQUNrQ0JJVkNnSUNBZ0lDQUVJTkNBRklOQUNBQ0lBSW9BZ0FvQW9nQkVRQUFLUUlFSUFNZ0F5Z0NBQ2dDaUFFUkFBQXBBZ1NGUW9DQWdJQ0FnQUdEUWdCU0RRQWdBaUFDS0FJQUtBS0lBUkVBQUNrQ0JDQURJQU1vQWdBb0FvZ0JFUUFBS1FJRWhVS0FnSUNBZ0lBQ2cwSUFVZzBBSUFJZ0FpZ0NBQ2dDaUFFUkFBQXBBZ1FnQXlBREtBSUFLQUtJQVJFQUFDa0NCSVZDZ0lDQWdJQ0FCSU5RRFFFTElBQWdBVUhVbnhFUVdFRUJJUVFMQWtBQ1FBSkFBa0FnQWlBQ0tBSUFLQUtJQVJFQUFDa0NCQ0FESUFNb0FnQW9Bb2dCRVFBQUtRSUVoVUtBZ0lDQWdJQ0FPSU5DQUZJTkFDQUNJQUlvQWdBb0FvZ0JFUUFBS1FJRUlBTWdBeWdDQUNnQ2lBRVJBQUFwQWdTRlFvQ0FnSUNBZ0lEQUI0TkNBRklOQUNBQ0lBSW9BZ0FvQW9nQkVRQUFLQUlVSUFNZ0F5Z0NBQ2dDaUFFUkFBQW9BaFJ6UWY4ZmNRMEFJQUlnQWlnQ0FDZ0NpQUVSQUFBb0FoUWdBeUFES0FJQUtBS0lBUkVBQUNnQ0ZITkJnT0FCY1EwQUlBSWdBaWdDQUNnQ2lBRVJBQUFwQWhnZ0F5QURLQUlBS0FLSUFSRUFBQ2tDR0lWQ2dJRDhCNE5DQUZJTkFDQUNJQUlvQWdBb0FvZ0JFUUFBTXdFWUlBTWdBeWdDQUNnQ2lBRVJBQUF6QVJpRlFnQlNEUUFnQWlBQ0tBSUFLQUtJQVJFQUFCRHBBa1VOQVNBQ0lBSW9BZ0FvQW9nQkVRQUFLQUlNSUFNZ0F5Z0NBQ2dDaUFFUkFBQW9BZ3hHRFFFTElBQWdBVUh5bnhFUVdBd0JDeUFFRFFBZ0FoQ1FBaENiQlEwQklBTVFrQUlRbXdVTkFTQUNFSkFDSUFNUWtBSVFyZ3BGRFFFZ0FDQUJRWk9nRVJCWUlBRkI3SjBSRUJBZ0FpQUNLQUlBS0FMQUFSRUFBQkM1QVVIT2x4RVFFQm9NQVFzZ0FVSHNuUkVRRUNBQ0lBSW9BZ0FvQXNBQkVRQUFFTGtCUWF5Z0VSQVFJUUFnQlVFUWFpQUNJQUlvQWdBb0FuZ1JBQUFReWdFZ0FDQUZRUkJxRUxrQlFiQ2dFUkFRSVFBZ0JTQURJQU1vQWdBb0FuZ1JBQUFReWdFZ0FDQUZFTGtCUWJ1Z0VSQVFHaUFGRUJrYUlBVkJFR29RR1JvTElBVkJJR29rQUF1UEFnRUZmeU1BUVRCcklnUWtBQ0FFSUFFMkFpZ2dBQ2dDQUNFQklBUWdBQkJBTmdJSUlBRWdCRUVvYWlBRVFRaHFFSjhFUVFKMGFpRUJBa0FnQWlBREVNd05JZ1ZCQVVnTkFDQUZJQUFRR3lnQ0FDQUFLQUlFSWdaclFRSjFUQVJBSUFRZ0F6WUNDQ0FGSUFZZ0FXc2lDRUVDZFNJSFNnUkFJQVFnQWpZQ0NDQUVRUWhxSUFjUXh3VWdBQ0FFS0FJSUlBTWdCU0FIYXhDSkdDQUlRUUZJRFFJTElBQWdBU0FHSUFFZ0JVRUNkR29RaUJnZ0FpQUVLQUlJSUFFUTJCY01BUXNnQUJBN0lRWWdCRUVJYWlBQUlBQVFGaUFGYWhESkJTQUJJQUFvQWdCclFRSjFJQVlRc1FZaUJTQUNJQU1RaHhnZ0FDQUZJQUVRaGhnaEFTQUZFSzhHQ3lBQkVHRWFJQVJCTUdva0FBdHBBUUovSUFBUWl3UWdBU2dDQkNFRElBQVFHeUFBS0FJQUlBSWdBVUVFYWlJRUVQWU5JQUFRR3lBQ0lBQW9BZ1FnQVVFSWFpSUNFTjBYSUFBZ0JCQXVJQUJCQkdvZ0FoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVLY0JFUGtGSUFNTFp3RUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnQWdBeUFCTmdJSUlBQW9BaEFoQVNBRFFRaHFJQU1RSGdSQUEwQWdBU0FBS0FJSUlBTW9BZ2dRb1FVZ0FDQUFLQUlJUVF4cU5nSUlJQU5CQ0dvUW5BVWdBMEVJYWlBREVCNE5BQXNMSUFOQkVHb2tBQXRXQVFKL0lBRWdBQ2dDQkNJRklBTnJRUXh0UVF4c2FpSUVJQUpKQkVBZ0JDRURBMEFnQUJBYklBQW9BZ1FnQXhDZ0JTQUFJQUFvQWdSQkRHbzJBZ1FnQTBFTWFpSURJQUpKRFFBTEN5QUJJQVFnQlJEY0Z3c2lBQ01BUVJCcklnTWtBQ0FBRUJzZ0FTQUNJQUJCQkdvUTN4Y2dBMEVRYWlRQUN5TUFJQUFnQVVjRVFDQUJFQnNhSUFBUUd4b2dBQ0FCRU9jRElBRVFnUUVRNkJjTEMxMEJBWDhqQUVFUWF5SURKQUFnQXlBQ05nSUFJQU1nQVRZQ0NDQUFFSUVCSVFFZ0EwRUlhaUFERUI0RVFBTkFJQUFnQVNBRFFRaHFFRmNpQWlBQ0VOc1hJQU5CQ0dvUXFRRWdBMEVJYWlBREVCNE5BQXNMSUFOQkVHb2tBQXZGQWdJR2Z3RitJQUlRRmlFSklBTVFGZ1JBQTBCQkFDRUhRUUVoQ0FKQUlBa0VRQU5BSUFJZ0J4QVJLQUlBSWdRZ0JDZ0NBQ2dDTUJFQUFDRUVJQU1nQmhBUktBSUFJZ1VnQlNnQ0FDZ0NNQkVBQUNFRklBUWdCQ2dDQUNnQ3dBRVJBQUFnQlNBRktBSUFLQUxBQVJFQUFCQ1lBZ1JBQWtBZ0JCQ1FBaENiQlVVTkFDQUZFSkFDRUpzRkRRQWdCQ0FGRUpBQ0VOQU5Dd0pBSUFRZ0JDZ0NBQ2dDaEFFUkFBQVE2UUlOQUNBRklBVW9BZ0FvQW9RQkVRQUFFT2tDUlEwQUlBVWdCU2dDQUNnQ2hBRVJBQUFwQWhnaENpQUVJQVFvQWdBb0FvUUJFUUFBSUFvOUFSZ0xJQUFnQkNBRUtBSUFLQUo4RVFBQUlBVWdCU2dDQUNnQ2VCRUFBQkRORFNBQUlBRWdCQ0FGRUlvWVFRQWhDQXNnQjBFQmFpSUhJQWxIRFFBTElBaEZEUUVMSUFJZ0F5QUdFQkVRM0FFTElBWkJBV29pQmlBREVCWkpEUUFMQ3d2T0FnRUZmeU1BUVNCcklnVWtBQ0FDRUJaQkFVY0VRQU5BUVFBaEJ5QURFQlpCQVVjRVFBTkFBa0FnQWlBSUVCRW9BZ0FpQkNBRUtBSUFLQUlZRVFBQUlnUkZJQU1nQnhBUktBSUFJZ1lnQmlnQ0FDZ0NHQkVBQUNJR1JYSU5BQ0FFS0FKb1FRUkhEUUFnQmlnQ2FFRUVSdzBBSUFRZ0JDZ0NBQ2dDeUFFUkFBQWdCaUFHS0FJQUtBTElBUkVBQUJDWUFrVU5BQ0FBSUFGQmk1MFJFRmdnQVVIc25SRVFFQ0FDSUFnUUVTZ0NBQ0lFSUFRb0FnQW9BaGdSQUFBaUJDQUVLQUlBS0FMSUFSRUFBQkM1QVVIT2x4RVFFQm9MSUFkQkFXb2lCeUFERUJaQmYycEpEUUFMQ3lBSVFRRnFJZ2dnQWhBV1FYOXFTUTBBQ3dzZ0JTQUNFREkyQWdnZ0JTQUZRUWhxUVFFUWhnYzJBaEFnQlVFWWFpQUZRUkJxRUdjaEFDQURFRUFoQVNBRklBTVFNallDQUNBRlFRRVFoZ2NoQXlBQ0lBQW9BZ0FnQVNBREVJc1lJQVZCSUdva0FBdFZBUUovSXdCQk1Hc2lCQ1FBSUFSQkNHb2lBMEVBRU1nQ0lBTWdBVFlDSkNBRElBQTJBaUFnQTBIRXNSRTJBZ0FnQXlFQUlBSW9Ba0FpQVNBQUlBRW9BZ0FvQWdnUkFRQWdBQkNhQWhvZ0JFRXdhaVFBQzVJQkFRTi9Jd0JCMEFCcklnUWtBQ0FFUVNocUlnTkJBQkRJQWlBRFFRQTJBaVFnQXlBQk5nSWdJQU5CM0xBUk5nSUFJQUFvQWtBaUJTQURJQVVvQWdBb0FnZ1JBUUFnQWlBREtBSWtOZ0lBSUFSQkFCRElBaUFFSUFFMkFpQWdCRUdRc1JFMkFnQWdCQ0VCSUFBUThnVWlBQ0FCSUFBb0FnQW9BZ2dSQVFBZ0FSQ2FBaG9nQXhDYUFob2dCRUhRQUdva0FBdVdBZ0VGZnlNQVFUQnJJZ1FrQUNBRUlBRTJBaWdnQUNnQ0FDRUJJQVFnQUJCQU5nSUlJQUVnQkVFb2FpQUVRUWhxRVAwSVFReHNhaUVCQWtBZ0FpQURFT0FYSWdWQkFVZ05BQ0FGSUFBUUd5Z0NBQ0FBS0FJRUlnWnJRUXh0VEFSQUlBUWdBellDQ0NBRklBWWdBV3NpQ0VFTWJTSUhTZ1JBSUFRZ0FqWUNDQ0FFSUFRb0FnZ2dCMEVNYkdvMkFnZ2dBQ0FFS0FJSUlBTWdCU0FIYXhDUEdDQUlRUUZJRFFJTElBQWdBU0FHSUFFZ0JVRU1iR29RamhnZ0FpQUVLQUlJSUFFUTNoY01BUXNnQUJBYklRWWdCRUVJYWlBQUlBQVFwd0VnQldvUWpnY2dBU0FBS0FJQWEwRU1iU0FHRUkwSElnVWdBaUFERUkwWUlBQWdCU0FCRUl3WUlRRWdCUkNNQ1FzZ0FSQmhHaUFFUVRCcUpBQUxYUUVCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ0FnQXlBQk5nSUlJQUFRZ1FFaEFTQURRUWhxSUFNUUhnUkFBMEFnQUNBQklBTkJDR29RVnlJQ0lBSVE1QmNnQTBFSWFoQ3BBU0FEUVFocUlBTVFIZzBBQ3dzZ0EwRVFhaVFBQzdBQ0FRSi9Jd0JCTUdzaUJDUUFJQVFnQXpZQ0dDQUVJQUkyQWlBZ0JFRW9haUFCRURFaEF5QUVRU0JxSUFSQkdHb1FIZ1JBSUFSQkNHb2dBQkFiRVB3TElBUW9BZ2hCQ0dvZ0JFRWdhaEJFRU00TklBTWdCQ0FFS0FJSUVERW9BZ0EyQWdBZ0JFRUlhaEJmR2lBRUlBTW9BZ0FpQlRZQ0FDQUVRU0JxRVBFQlFRRWhBaUFFUVNCcUlBUkJHR29RSGdSQUEwQWdCRUVJYWtFd0VDWVF6UW9nQkNnQ0NFRUlhaUFFUVNCcUVFUVF6ZzBnQkNnQ0FDSUZJQVFvQWdnMkFnUWdCQ2dDQ0NBRk5nSUFJQUpCQVdvaEFpQUVRUWhxRUY4YUlBUkJJR29ROFFFZ0JCRHhBU0FFUVNCcUlBUkJHR29RSGcwQUN5QUVLQUlBSVFVTElBRWdBeWdDQUNBRkVNY0tJQUFRR3lJQUlBQW9BZ0FnQW1vMkFnQWdCRUVJYWhENkN3c2dBeWdDQUJvZ0JFRXdhaVFBQzU0Q0FRWi9Jd0JCSUdzaUJDUUFBa0FnQWlnQ1FDSUZSUTBBSUFBb0FrQWlBMFVFUUNBQUlBVTJBa0FNQVFzZ0FDQUFLQUxRQkNBQ0tBTFFCR28yQXRBRUlBQWdBQ2dDM0FRZ0FpZ0MzQVJxTmdMY0JDQURJQU1vQWdBb0FoZ1JBQUFpQXlBREtBSUFLQUs4QVJFQUFDRUZJQUlvQWtBaUF5QURLQUlBS0FJWUVRQUFJZ01nQXlnQ0FDZ0N2QUVSQUFBaEJpQUFFUElGSWdNZ0F5Z0NBQ2dDdkFFUkFBQWhCeUFDRVBJRklnTWdBeWdDQUNnQ3ZBRVJBQUFoQ0NBQUlBUkJFR29RMFFVaUF5QUVRUXhxRUpVWUlBTWdCQ2dDREVFQmFpQUNFSlFZSUFBZ0FTQUZJQVlRa3hnZ0FDQUJJQWNnQ0JDU0dDQUFRZEFHYWlBQ1FkQUdhaUlBRU5FQ0lBQVFmaENSR0NBRElBTVFQQkR2Q0FzZ0JFRWdhaVFBQzlJT0FRVi9Jd0JCSUdzaUJTUUFJQUFvQWdBZ0FpZ0NBRWNFUUNBQUlBRkIvWmNSRUZnTEFrQWdBQ2dDUUVVRVFDQUFJQUlvQWlnMkFpZ2dBQ0FDS0FJc05nSXNJQUJCeEFCcUlBSkJ4QUJxRUpBWURBRUxBa0FnQUJDSEJTQUNFSWNGYzBFQlJnUkFJQUFnQVVIdG1CRVFXQXdCQ3lBQ0tBSW9RUVJIRFFBZ0FFRUVOZ0lvQ3lBQUlBQkJMR29nQWtFc2FoQ21BU2dDQURZQ0xDQUFRY1FBYWlBQ1FjUUFhaUlERU5FQ0lBTVFmaENYR0FzZ0FDQUFRVEJxSUFKQk1Hb1FVaWdDQURZQ01DQUFRVFJxSWdNZ0F5QUNRVFJxRUtZQktBSUFOZ0lBSUFCQk9Hb2lBeUFESUFKQk9Hb1FwZ0VvQWdBMkFnQWdBRUU4YWlJRElBTWdBa0U4YWhDbUFTZ0NBRFlDQUNBQUlBSW9BdEFESUFBb0F0QURhallDMEFNZ0FDQUFLQUxVQXlBQ0tBTFVBMm8yQXRRREFrQWdBaWdDakFRaUEwRi9SZzBBSUFBb0Fvd0VJZ1JCZjBZRVFDQUFJQU0yQW93RURBRUxJQU1nQkVZTkFDQUFJQUZCbDVrUkVGZ0xJQUlvQXBBRUlRTUNRQ0FBS0FLUUJDSUVRWDlHQkVBZ0FDQUROZ0tRQkF3QkN5QURJQVJHRFFBQ1FDQUFLQUlBSWdOQmYyb2lCRUVDU3dSQUlBTkJEVWNOQWd3QkN3SkFJQVJCQVdzT0FnSUJBQXNnQUNBQlFmdVpFUkJZREFFTElBQWdBVUhTbVJFUVdBc2dBaWdDMkFRaEF3SkFJQUFvQXRnRUlnUkJmMFlFUUNBQUlBTTJBdGdFREFFTElBTWdCRVlOQUNBQUtBSUFRUTFIRFFBZ0FDQUJRYUNhRVJCWUN5QUNLQUtVQkNFREFrQWdBQ2dDbEFRaUJFVUVRQ0FBSUFNMkFwUUVEQUVMSUFNZ0JFWU5BQ0FBSUFGQnk1b1JFRmdMSUFJb0FwZ0VJUU1DUUNBQUtBS1lCQ0lFUlFSQUlBQWdBellDbUFRTUFRc2dBeUFFUmcwQUlBQWdBVUh4bWhFUVdBc0NRQ0FBTFFDZEJDQUNMUUNkQkVZRVFDQUFMUUNjQkNBQ0xRQ2NCRVlOQVFzZ0FDQUJRWmliRVJCWUN5QUNLQUtnQkNFREFrQWdBQ2dDb0FRaUJFVUVRQ0FBSUFNMkFxQUVEQUVMSUFNZ0JFWU5BQ0FBSUFGQnpwc1JFRmdMSUFJb0FxUUVJUU1DUUNBQUtBS2tCQ0lFUlFSQUlBQWdBellDcEFRTUFRc2dBeUFFUmcwQUlBQWdBVUh4bXhFUVdBc2dBaTBBckFRRVFDQUFRUUU2QUt3RUMwRUFJUU1EUUFKQUFrQWdBQ0FEYWlJRUxRRHNBdzBBSUFJZ0Eyb3RBT3dEUlEwQUlBQWdBMEVDZENJR2FpQUNJQVpxS0FMZ0F6WUM0QU1nQkVFQk9nRHNBd3dCQ3lBQUlBTkJBblFpQkdvb0F1QURJQUlnQkdvb0F1QURSZzBBSUFBZ0FVR1JuQkVRV0FzZ0FpQURRUUowSWdacUtBTHdBeUVFQWtBZ0FDQUdhaUlHS0FMd0F5SUhRWDlHQkVBZ0JpQUVOZ0x3QXd3QkN5QUVJQWRHRFFBZ0FDQUJRYXFjRVJCWUN5QURRUUZxSWdOQkEwY05BQXNnQWkwQXJRUUVRQ0FBUVFFNkFLMEVDeUFDTFFDdUJBUkFJQUJCQVRvQXJnUUxJQUlvQXJBRUlRTUNRQ0FBS0FLd0JDSUVSUVJBSUFBZ0F6WUNzQVFNQVFzZ0F5QUVSZzBBSUFBZ0FVSFduQkVRV0FzZ0FpMEEzQU1FUUNBQVFRRTZBTndEQ3lBQ0xRQzBCQVJBSUFCQkFUb0F0QVFMSUFBZ0FDZ0N1QVFnQWlnQ3VBUnlOZ0s0QkNBQ0xRQzhCQVJBSUFCQkFUb0F2QVFMSUFCQndBUnFJZ1FRa2dJRVFDQUNRY0FFYWlFR1FRQWhBd05BQWtBZ0JDQURFR3NvQWd4Qi8vOEFSZ1JBSUFZZ0F4QnJLQUlNSVFjZ0JDQURFR3NnQnpZQ0RBd0JDeUFFSUFNUWF5Z0NEQ0FHSUFNUWF5Z0NERVlOQUNBQUlBRkI4cHdSRUZnTElBUWdBeEJyUVJCcUlBWWdBeEJyUVJCcUVGSW9BZ0FoQnlBRUlBTVFheUFITmdJUUlBWWdBeEJyTFFBVUJFQWdCQ0FERUd0QkFUb0FGQXNnQmlBREVHc3RBQlVFUUNBRUlBTVFhMEVCT2dBVkN5QUdJQU1RYXkwQUZnUkFJQVFnQXhCclFRRTZBQllMSUFOQkFXb2lBeUFFRUpJQ1NRMEFDd3NnQWkwQXpBUUVRQ0FBUVFFNkFNd0VDeUFDTFFETkJBUkFJQUJCQVRvQXpRUUxJQUl0QU00RUJFQWdBRUVCT2dET0JBc0NmeUFDUWVBRWFpRUJRUVlMQkVCQkFDRURBMEFnQVNBREVKVUpLQUlBQkVBZ0FDQURJQUVnQXhDVkNTZ0NBQkRzR1FzZ0EwRUJhaUlEUVFaSkRRQUxDd0ovSUFKQitBUnFJUUZCQmdzRVFFRUFJUU1EUUNBRklBRWdBeENYQnhEUkFqWUNHQ0FGSUFFZ0F4Q1hCeEIrTmdJUUlBVkJHR29nQlVFUWFoQ0lBUVJBQTBBZ0FDQURJQVZCR0dvUVZ5Z0NCQ0FGUVJocUVGY29BZ0FRNnhrZ0JVRVlhaENwQVNBRklBRWdBeENYQnhCK05nSVFJQVZCR0dvZ0JVRVFhaENJQVEwQUN3c2dBMEVCYWlJRFFRWkpEUUFMQ3lBRklBQkJ3QVZxSWdFUU1qWUNHQ0FGUVFocUlBVkJHR29RWnlFRElBSkJ3QVZxSWdRUVFDRUdJQVFRTWlFRUlBRWdBeWdDQUNBR0lBUVFsaGdnQWkwQXpBVUVRQ0FBUVFFNkFNd0ZDeUFDTFFETkJRUkFJQUJCQVRvQXpRVUxJQUl0QU5rREJFQWdBRUVCT2dEWkF3c2dBaTBBemdVRVFDQUFRUUU2QU00RkN5QUNMUURQQlFSQUlBQkJBVG9BendVTElBSXRBTkFGQkVBZ0FFRUJPZ0RRQlFzZ0FpMEEyZ01FUUNBQVFRRTZBTm9EQ3lBQ0xRRFJCUVJBSUFCQkFUb0EwUVVMSUFJdEFPUUZCRUFnQUVFQk9nRGtCUXNnQWkwQTVRVUVRQ0FBUVFFNkFPVUZDeUFDTFFEbUJRUkFJQUJCQVRvQTVnVUxJQVZCSUdva0FBdWVBUUVDZnlNQVFSQnJJZ01rQUFKQUlBSW9Bc3dEUVFGSURRQWdBQ2dDekFOQkFVNEVRQ0FBSUFGQjBKY1JFRmdNQVFzZ0FFRUVhaUFDRUNVUWhnSWdBRUVRYWlBQ0VFTVFoZ0lMSUFBZ0FpZ0N6QU1nQUNnQ3pBTnFOZ0xNQXlBRElBQkJIR29pQUJCaE5nSUFJQU5CQ0dvZ0F4Qm5JUUVnQWtFY2FpSUNFSXdDSVFRZ0FoQmhJUUlnQUNBQktBSUFJQVFnQWhDWUdDQURRUkJxSkFBTFFRRURmeU1BUVNCcklnSWtBQ0FDUVJocUVLY0hJUU5CQUNBQ1FRaHFRYkQvQ0JBaUlnUWdBQ0FEUVFBZ0FSRDVDQ0VBSUFRUUdSb2dBa0VnYWlRQUlBQUxWQUVDZnlNQVFSQnJJZ1FrQUNBQ0JFQURRQ0FESUFJZ0FCQWJJQUpCRUdvZ0FSQ2dCQ0lGR3lFRElBSkJCRUVBSUFVYmFpZ0NBQ0lDRFFBTEN5QUVRUWhxSUFNUU1TZ0NBQ0VBSUFSQkVHb2tBQ0FBQzMwQkFuOGpBRUZBYWlJREpBQWdBUUovSUFOQkNHb2lBa0VBRU1nQ0lBSkJBRG9BSkNBQ0lBQkJyS3NCYWpZQ0lDQUNRWkNYRVRZQ0FDQUNDeUFCS0FJQUtBSUlFUUVBSUFJdEFDUUVRQ0FBSUFKQktHcEJzNVlSUWFhV0VVR3lsaEZCQUNBQUtBSUFLQUtnQVJFQ0FBc2dBaENhQWhvZ0EwRkFheVFBQ3pjQUlBSW9BbWhCQTBZRVFDQUFRUUU2QUNRZ0FDQUNJQUlvQWdBb0FnQVJBQUFpQVNrQ0FEY0NLQ0FBSUFFcEFnZzNBakFMUVFFTFpnRUJmeU1BUVJCcklnSWtBQ0FDSUFBZ0FTQUFFRHdnQUJBbEVKMFlOZ0lJSUFJZ0FCQ0JBVFlDQUFKL0FrQWdBa0VJYWlBQ0VCNUZEUUFnQUJBYklBRWdBa0VJYWhCWEVLQUVEUUFnQWlnQ0NBd0JDeUFBRUlFQkN5RUFJQUpCRUdva0FDQUFDMzhCQW44akFFRVFheUlDSkFBZ0FDZ0NJQ0VESUFJZ0FTQUJLQUlBS0FLNEFSRUFBRFlDQkNBQ0lBTWdBa0VFYWhDZ0dEWUNDQ0FDSUFBb0FpQVFnUUUyQWdBZ0FrRUlhaUFDRUpjQ0JFQWdBRUVCT2dBa0lBQWdBU0FCS0FJQUtBSUFFUUFBSWdFcEFnQTNBaWdnQUNBQktRSUlOd0l3Q3lBQ1FSQnFKQUFMS1FBZ0FFRUFFTWdDSUFCQkFEb0FLQ0FBSUFJMkFpUWdBQ0FCTmdJZ0lBQkIzSllSTmdJQUlBQUxaUUVCZnlNQVFVQnFJZ1FrQUNBRUlBSWdBeENpR0NFQ0FrQWdBVVVOQUNBQklBSWdBU2dDQUNnQ0NCRUJBQ0FDTFFBb1JRMEFJQUFnQWtFc2FrR0lsaEZCcHBZUlFiS1dFVUVBSUFBb0FnQW9BcUFCRVFJQUN5QUNFSm9DR2lBRVFVQnJKQUFMbWdJQkFuOENRQ0FDS0FKb1FRTkhEUUFnQWlBQ0tBSUFLQUs4QVJFQUFDSUVFQlpCQVVnTkFFRUFJUUVEUUFKQUlBUWdBUkFSS0FJQUlnTWdBeWdDQUNnQ01CRUFBRVVOQUNBRUlBRVFFU2dDQUNJRElBTW9BZ0FvQWpBUkFBQWlBeUFES0FJQUtBSzRBUkVBQUNBQUtBSWdSdzBBSUFBb0FpUWdBaUFDS0FJQUtBTElBUkVBQUVFQVFRQVFyQUVpQXlBREtBSUFLQUljRVFBQUlnTWdBU0FES0FJQUtBS2NBUkVEQUNnQ0JDSURJQU1vQWdBb0Fpd1JBQUFwQWdSQ1A0TkNEbElFUUNBRElBTW9BZ0FvQWl3UkFBQXBBZ1JDUDROQ0QxSU5BUXNnQUVFQk9nQW9JQUFnQWlBQ0tBSUFLQUlBRVFBQUlnTXBBZ0EzQWl3Z0FDQURLUUlJTndJMEN5QUJRUUZxSWdFZ0JCQVdTQTBBQ3d0QkFRdUdBUUFDUUNBQ0VQWUxSUTBBSUFJZ0FpZ0NBQ2dDdkFFUkFBQWlBU0FCS0FJQUtBSXdFUUFBUlEwQUlBSWdBaWdDQUNnQ3ZBRVJBQUFpQVNBQktBSUFLQUl3RVFBQUlnRWdBU2dDQUNnQ3VBRVJBQUFnQUNnQ0lFY05BQ0FBUVFFNkFDZ2dBQ0FDSUFJb0FnQW9BZ0FSQUFBaUFTa0NBRGNDTENBQUlBRXBBZ2czQWpRTFFRRUxoZ0VBQWtBZ0FoRDJDMFVOQUNBQ0lBSW9BZ0FvQXNBQkVRQUFJZ0VnQVNnQ0FDZ0NNQkVBQUVVTkFDQUNJQUlvQWdBb0FzQUJFUUFBSWdFZ0FTZ0NBQ2dDTUJFQUFDSUJJQUVvQWdBb0FyZ0JFUUFBSUFBb0FpQkhEUUFnQUVFQk9nQW9JQUFnQWlBQ0tBSUFLQUlBRVFBQUlnRXBBZ0EzQWl3Z0FDQUJLUUlJTndJMEMwRUJDN2tJQVFSL0l3QkJNR3NpQXlRQUlBRkJFR29pQWtHeGtCRVFFQ0FBS0FJc0VKVUJRZHl4RUJBUUdnSkFJQUJCeEFCcUlnUVEwUVJGRFFBZ0F5QUVFTkVDTmdJQUlBTWdCQkIrTmdJb0lBTWdBMEVvYWhBZVJRMEFBMEFDZnlBQ1FjS1FFUkFRSWdVZ0F4QlhFUG9RSUFVTFFkeXhFQkFRR2lBREVLa0JJQU1nQkJCK05nSW9JQU1nQTBFb2FoQWVEUUFMQ3lBQUxRQzhCQVJBSUFKQnpaQVJFQkFhQ3dKQUlBQW9BZ0JCZjJvaUJFRU1TdzBBQWtBQ1FBSkFBa0FDUUFKQUlBUkJBV3NPREFFQ0F3VUdCZ1lHQmdZRkJBQUxJQUpCMnBBUkVCQWdBQ2dDa0FRUWxRRkIzTEVRRUJBYUlBQW9BcFFFQkVBZ0FrSG1rQkVRRUNBQUtBS1VCQkNyQVJBUVFkeXhFQkFRR2dzZ0FDZ0NvQVFFUUNBQ1FmbVFFUkFRSUFBb0FxQUVFTjRERUJCQjNMRVFFQkFhQ3lBQUtBS2tCRVVOQlNBQ1FZdVJFUkFRSUFBb0FxUUVFSllFRUJCQjNMRVFFQkFhREFVTElBSkI1cEFSRUJBZ0FDZ0NsQVFRcXdFUUVFSGNzUkFRRUJvZ0FrSDVrQkVRRUNBQUtBS2dCQkRlQXhBUVFkeXhFQkFRR2lBQ1FZdVJFUkFRSUFBb0FxUUVFSllFRUJCQjNMRVFFQkFhSUFBdEFLd0VSUTBFSUFKQm5aRVJFQkFhREFRTElBSkJyNUVSRUJBZ0FDZ0NqQVFRbFFGQjNMRVFFQkFhSUFKQnZwRVJFQkFnQUNnQ2tBUVFsUUZCM0xFUUVCQWFJQUpCNXBBUkVCQWdBQ2dDbEFRUXF3RVFFRUhjc1JBUUVCb2dBa0hPa1JFUUVDQUFLQUtZQkJDckFSQVFRZHl4RUJBUUdnd0RDeUFBTFFDY0JBUkFJQUpCNHBFUkVCQWFDeUFBTFFDZEJBUkFJQUpCaUpJUkVCQWFDeUFBTFFDdEJBUkFJQUpCcTVJUkVCQWFDeUFBTFFDdUJBUkFJQUpCeDVJUkVCQWFDeUFBS0FLd0JBUkFJQUpCNHBJUkVCQWdBQ2dDc0FRUTFRa1FFRUhjc1JBUUVCb0xJQUFvQXJnRUJFQWdBa0hwa2hFUUVCcEJBQ0VFQTBBZ0FDZ0N1QVFnQkhaQkFYRUVRQ0FDUWUrU0VSQVFJQVFRMUFrUUVCb0xJQVJCQVdvaUJFRVFSdzBBQ3lBQ1FkeXhFQkFRR2dzZ0FDZ0NxQVJGRFFJZ0FrSHhraEVRRUNBQUtBS29CQkNWQkJBUVFkeXhFQkFRR2d3Q0N5QUNRYjZSRVJBUUlBQW9BcEFFRUpVQlFkeXhFQkFRR2lBQ1FZZVRFUkFRSUFBb0F0Z0VFSlVCUWR5eEVCQVFHaUFDUWM2UkVSQVFJQUFvQXBnRUVLc0JFQkJCM0xFUUVCQWFDeUFDUVptVEVSQVFJQUFvQXVBREVKVUJRYWlURVJBUUlBQW9BdVFERUpVQlFhaVRFUkFRSUFBb0F1Z0RFSlVCUWZtTkVSQVFHZ0pBSUFBb0F2QURRWDlIRFFBZ0FDZ0M5QU5CZjBjTkFDQUFLQUw0QTBGL1JnMEJDeUFDUWF1VEVSQVFJQUFvQXZBREVKVUJRYWlURVJBUUlBQW9BdlFERUpVQlFhaVRFUkFRSUFBb0F2Z0RFSlVCUWZtTkVSQVFHZ3NnQUNnQ1FBUkFJQU5CQUJESUFpQURRUUEyQWlRZ0F5QUJOZ0lnSUFOQnlKTVJOZ0lBSUFNaEFTQUFMUURsQlFSQUlBRkJBUkRmQndzZ0FDZ0NRQ0lBSUFFZ0FDZ0NBQ2dDQ0JFQkFDQUJFSm9DR2dzZ0EwRXdhaVFBQytVQkFRSi9JQUFvQWlBaUF5QUNJQUFvQWdnUTh3RWdBMEVRYWlJQlFabVFFUkFRR2lBQ0xRQWNCRUFnQVVHYmpSRVFFQm9MSUFJdEFCMEVRQ0FCUWFXTkVSQVFHZ3NnQVVIY3NSQVFFQm9nQXlBQ0lBQW9BZ2dROHdFZ0FVR2drQkVRRUJvZ0FDQUFLQUlJUVFGcU5nSUlJQUlnQWlnQ0FDZ0NkQkVBQUNJRUlBQWdCQ2dDQUNnQ0NCRUJBQ0FBSUFBb0FnaEJmMm9pQkRZQ0NDQURJQUlnQkJEekFTQUJRYXVRRVJBUUdpQUFJQUFvQWdoQkFXbzJBZ2dnQWlBQ0tBSUFLQUo0RVFBQUlnRWdBQ0FCS0FJQUtBSUlFUUVBSUFBZ0FDZ0NDRUYvYWpZQ0NFRUFDNUVCQVFGL0lBQW9BaUFpQVNBQ0lBQW9BZ2dROHdFZ0FVRVFhaUlCSUFJb0FoUkJ2bnhxSWdOQkJrMEVmeUFEUVFKMFFleVZFV29vQWdBRlFmQ1BFUXNRRUJvQ1FDQUNLQUlZQkVBZ0FVR0hrQkVRRUJvZ0FDQUFLQUlJUVFGcU5nSUlJQUlvQWhnaUFTQUFJQUVvQWdBb0FnZ1JBUUFnQUNBQUtBSUlRWDlxTmdJSURBRUxJQUZCM0xFUUVCQWFDMEVBQzlnQ0FRRi9JQUFvQWlBaUFTQUNJQUFvQWdnUTh3RWdBVUVRYWlJQlFmeU5FUkFRR2lBQ0xRQWdSUVJBSUFGQmtZNFJFQkFhQ3lBQlFaYU9FUkFRR2lBQ0xRQWhCRUFnQVVHampoRVFFQm9MSUFJdEFDSUVRQ0FCUWF5T0VSQVFHZ3NnQWlnQ0pBUkFJQUZCdVk0UkVCQWFJQUVnQWlnQ0pCQ1ZBUm9MSUFGQjNMRVFFQkFhSUFBZ0FDZ0NDRUVCYWlJRE5nSUlJQUFvQWlBZ0FpQURFUE1CQWtBZ0FpZ0NHQVJBSUFGQng0NFJFQkFhSUFJb0FoZ2lBeUFBSUFNb0FnQW9BZ2dSQVFBTUFRc2dBVUhYamhFUUVCb0xJQUFvQWlBZ0FpQUFLQUlJRVBNQkFrQWdBaWdDRkFSQUlBRkI2bzRSRUJBYUlBSW9BaFFpQXlBQUlBTW9BZ0FvQWdnUkFRQU1BUXNnQVVIMWpoRVFFQm9MSUFJb0Fod0VRQ0FBS0FJZ0lBSWdBQ2dDQ0JEekFTQUJRWU9QRVJBUUdpQUNLQUljSWdFZ0FDQUJLQUlBS0FJSUVRRUFDeUFBSUFBb0FnaEJmMm8yQWdoQkFBdTdBUUVDZnlNQVFSQnJJZ0lrQUNBQUtBSWdJQUVnQUNnQ0NCRHpBU0FBS0FJZ1FSQnFRZk9ORVJBUUlBRWdBU2dDQUNnQ3dBRVJBQUFRdVFGQjlZMFJFQkFoQXlBQ0lBRVFxZ0lnQXlBQ0VMa0JRZm1ORVJBUUdpQUNFQmthQWtBZ0FSQ1FBaENiQlVVRVFDQUFLQUlnSUFFZ0FSQ1FBaUFBS0FJa0lBQW9BZ2hCQVdvUXp3ME1BUXNnQVNnQ2lBRkZEUUFnQUNBQkVPSURJQUVvQW9nQklnRWdBQ0FCS0FJQUtBSUlFUUVBSUFBUTh3SUxJQUpCRUdva0FBdXdBd01FZndGK0FYd2pBRUh3QW1zaUJDUUFBa0FnQWIxQy8vLy8vLy8vLy8vL0FJTkNnSUNBZ0lDQWdQai9BRkVFUUNBQVFSQnFJUUFnQVVRQUFBQUFBQUFBQUdOQkFYTkZCRUFnQUVIQmxSRVFFQm9NQWdzZ0FFSEpsUkVRRUJvTUFRc2dBYjFDLy8vLy8vLy8vLy8vQUlOQ2dJQ0FnSUNBZ1BqL0FGWUVRQ0FBUVJCcVFkR1ZFUkFRR2d3QkN5QUVJQUU1QXdBQ1FDQUVRUkJxUWRRQ1FkaVZFVUhibFJGQjI1VVJRZGlWRVNBQm1TSUlSQUFBQUtLVUdtMUNaQnNnQ0VUeGFPT0l0ZmprUG1NYklBRkVBQUFBQUFBQUFBQmhJQUVnQVdKeUd5QUVFQ2NpQTBFR1NBMEFJQU1nQkVFUWFtb2lBMEY3YWkwQUFFSGxBRWNOQUNBRFFYeHFMUUFBUVZWcUlnVkJBa3NnQlVFQmEwVnlEUUFnQTBGOWFpSUZMUUFBUVRCSERRQWdCU0FEUVg1cUlnVXRBQUE2QUFBZ0EwRi9haUlETFFBQUlRWWdBMEVBT2dBQUlBVWdCam9BQUFzZ0FFRVFhaUlESUFSQkVHb1FFQm9nQWtFQlJ3MEFJQUc5SVFjZ0EwSGlsUkVRRUJwQkFDRUFBMEFnQTBIbWxSRkI2SlVSSUFkQ0FGTWJFQkFhSUFkQ0FZWkNBWVFoQnlBQVFRRnFJZ0JCd0FCSERRQUxDeUFFUWZBQ2FpUUFDenNBSUFBb0FpQWdBU0FBS0FJSUVQTUJJQUFvQWlCQkVHcEI2STBSRUJBYUlBQW9BaUFnQVNBQkVFc2dBQ2dDSkNBQUtBSUlRUUZxRU04TkMvVUNBUU4vSXdCQkVHc2lCQ1FBSUFBb0FpQWlCU0FDSUFBb0FnZ1E4d0VnQlVFUWFpSUJRZStNRVJBUUdpQUJRZGV4RUJBUUlRTWdCQ0FDRUtvQ0lBTWdCQkM1QVVIYXNSQVFFQm9nQkJBWkdpQUNMUUIwUlFSQUlBRkJpWTBSRUJBYUN5QUNMUUIxQkVBZ0FVR2JqUkVRRUJvTElBSXRBSFlFUUNBQlFhV05FUkFRR2dzZ0FVSGNzUkFRRUJvZ0FDQUFLQUlJUVFGcUlnTTJBZ2dnQlNBQ0lBTVE4d0VnQVVHempSRVFFQm9nQWlBQ0tBSUFLQUs0QVJFQUFDSURJQUFnQXlnQ0FDZ0NDQkVCQUNBRklBSWdBQ2dDQ0JEekFRSkFJQUlnQWlnQ0FDZ0N2QUVSQUFBRVFDQUJRYjZORVJBUUdpQUNJQUlvQWdBb0Fyd0JFUUFBSWdNZ0FDQURLQUlBS0FJSUVRRUFEQUVMSUFGQnlZMFJFQkFhQ3lBQ0lBSW9BZ0FvQXNBQkVRQUFCRUFnQlNBQ0lBQW9BZ2dROHdFZ0FVSGNqUkVRRUJvZ0FpQUNLQUlBS0FMQUFSRUFBQ0lCSUFBZ0FTZ0NBQ2dDQ0JFQkFBc2dBQ0FBS0FJSVFYOXFOZ0lJSUFSQkVHb2tBRUVBQ3lZQkFYOGpBRUVRYXlJQkpBQWdBUkNrQlNBQklBQWdBUkNxQXlFQUlBRkJFR29rQUNBQUMvWTdBUUYvSXdCQkVHc2lBeVFBSUFBb0FpQWhBUUpBSUFJb0FtaEZCRUFnQVVFUWFrRUNRWUxxRUJDN0FRd0JDeUFCSUFJZ0FDZ0NDQkR6QVFKQUFrQWdBaWdDYUVGL2FpSUFRY1lGU3cwQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVFQmF3N0dCUUVFQXdYZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUtHQWQwQ2R0MEMzUUxkQXQwQzNRTGRBdDBDZEhWd2NYSnpBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FKNTNRTGRBdDBDM1FMZEF0MENlTjBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUozZW50OGZYNS8zUUxkQXZjQitBSDVBZDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBb0FCZ1FHQ0FkMENnd0dFQVlVQmxRR1dBWmNCM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMNkFmc0IvQUhkQW9jQjNRTGRBdDBDM1FMZEFvZ0JpUUhkQXQwQ2lnR0xBWXdCalFHT0FZOEJrQUhkQXBFQjNRTGRBdDBDM1FMZEFvUUNoUUtHQW9jQ2lBS0pBb29DaXdLTUFvMENqZ0tQQXBBQ2tRS1NBcE1DbEFLVkFwWUNsd0tZQXBrQ21nS2JBcHdDblFLZUFwOENvQUtoQXFJQ293S2tBcVVDcGdLbkFxZ0NxUUtxQXFzQ3JBS3RBcTRDcndLd0FyRUNzZ0t6QXJRQ3RRSzJBcmNDdUFLNUFyb0N1d0s4QXIwQ3ZnSy9Bc0FDd1FMQ0FzTUN4QUxGQXNZQ3h3TElBc2tDeWdMTEFzd0N6UUxPQXM4QzBBTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBcElCa3dHVUFkMEMzUUxkQXBnQm1RR2FBWnNCbkFHZEFaNEJud0dnQWFFQm9nSGRBdDBDM1FLakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdIZEF0MEMyUUxhQXRzQzNRTGRBdHdDM1FMZEF0MEMzUUxkQXQwQzNRTGRBaFllRWhvcUxpSW1EZ1lIQ0FrS01qTTBOVFkzT0RrNkN3d05EeEFSRXhRVkd4d2RLeXd0THpBeEZ4Z1pIeUFoSXlRbEp5Z3BPenc5UGo5QVFVSkRSRVZHUjBoSlNrdE1UVTVQVUZGU1UxUlZWbGRZV1ZwYlhGMWVYMkJoWW1Oa1pXWm5hR2xxYTJ4dDNRSnViOTBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBcXdCclFHdUFhOEJ1Z0c3QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0c0QWJrQjBRTFNBdU1CNndIZEF0MEN2QUc5QWI0QnZ3SGRBc0FCd1FIQ0FjTUJ4QUhGQWNZQnh3SElBY2tCeWdITEFjd0J6UUhPQWM4QjBBSFJBZElCMHdIVUFkVUIxZ0hYQWQwQzNRTGRBdGdCMmdIWkFkd0IzUUhiQWQ0QjN3SGdBZUVCNGdIZEF1UUI1UUhtQWVjQjZBSHBBZW9CM1FMZEF1d0I3UUh1QWU4QjhBSGRBdDBDM1FMeEFmSUI4d0gwQWZVQjlnSGRBdDBDM1FMZEF0MEMzUUxkQXQwQzNRTGRBdDBDM1FMVEF0UUMxUUxXQXRjQzJBTGRBdDBDM1FMZEF0MEMvUUgrQWQwQzNRTGRBdDBDM1FMZEF0MEMzUUxkQXQwQy93R0FBb0VDZ2dLREFnQUxJQUZCRUdwQm1lb1FFQkFhRE40Q0N5QUJRUkJxUWFQcUVCQVFHZ3pkQWdzZ0FVRVFha0d6NmhBUUVCb00yd0lMSUFGQkVHcEJ1ZW9RRUJBZ0FpQUNLQUlBS0FMSUFSRUFBQkM1QVJvTTJnSUxJQUZCRUdwQnorb1FFQkFnQWlBQ0tBSUFLQUxJQVJFQUFCQzVBUm9NMlFJTElBRkJFR3BCMytvUUVCQWFETmdDQ3lBQlFSQnFRZlhxRUJBUUdnelhBZ3NnQVVFUWFrR0Y2eEFRRUJvTTFnSUxJQUZCRUdwQmx1c1FFQkFhRE5VQ0N5QUJRUkJxUWFYckVCQVFHZ3pVQWdzZ0FVRVFha0cwNnhBUUVCb00wd0lMSUFGQkVHcEJ3K3NRRUJBYUROSUNDeUFCUVJCcVFkUHJFQkFRR2d6UkFnc2dBVUVRYWtIajZ4QVFFQm9NMEFJTElBRkJFR3BCOCtzUUVCQWFETThDQ3lBQlFSQnFRWUxzRUJBUUdnek9BZ3NnQVVFUWFrR1M3QkFRRUJvTXpRSUxJQUZCRUdwQm91d1FFQkFhRE13Q0N5QUJRUkJxUWJMc0VCQVFHZ3pMQWdzZ0FVRVFha0hEN0JBUUVCb015Z0lMSUFGQkVHcEIxT3dRRUJBYURNa0NDeUFCUVJCcVFlWHNFQkFRR2d6SUFnc2dBVUVRYWtIMjdCQVFFQm9NeHdJTElBRkJFR3BCaE8wUUVCQWFETVlDQ3lBQlFSQnFRWlR0RUJBUUdnekZBZ3NnQVVFUWFrR2s3UkFRRUJvTXhBSUxJQUZCRUdwQnRPMFFFQkFhRE1NQ0N5QUJRUkJxUWNidEVCQVFHZ3pDQWdzZ0FVRVFha0hYN1JBUUVCb013UUlMSUFGQkVHcEI2TzBRRUJBYURNQUNDeUFCUVJCcVFmbnRFQkFRR2d5L0Fnc2dBVUVRYWtHSTdoQVFFQm9NdmdJTElBRkJFR3BCbU80UUVCQWFETDBDQ3lBQlFSQnFRYWp1RUJBUUdneThBZ3NnQVVFUWFrRzQ3aEFRRUJvTXV3SUxJQUZCRUdwQnlPNFFFQkFhRExvQ0N5QUJRUkJxUWRydUVCQVFHZ3k1QWdzZ0FVRVFha0hzN2hBUUVCb011QUlMSUFGQkVHcEIvdTRRRUJBYURMY0NDeUFCUVJCcVFZL3ZFQkFRR2d5MkFnc2dBVUVRYWtHaDd4QVFFQm9NdFFJTElBRkJFR3BCcys4UUVCQWFETFFDQ3lBQlFSQnFRY1h2RUJBUUdneXpBZ3NnQVVFUWFrSFg3eEFRRUJvTXNnSUxJQUZCRUdwQjZlOFFFQkFhRExFQ0N5QUJRUkJxUWZ2dkVCQVFHZ3l3QWdzZ0FVRVFha0dOOEJBUUVCb01yd0lMSUFGQkVHcEJvUEFRRUJBYURLNENDeUFCUVJCcVFiTHdFQkFRR2d5dEFnc2dBVUVRYWtIRThCQVFFQm9NckFJTElBRkJFR3BCMXZBUUVCQWFES3NDQ3lBQlFSQnFRZVh3RUJBUUdneXFBZ3NnQVVFUWFrSDI4QkFRRUJvTXFRSUxJQUZCRUdwQmgvRVFFQkFhREtnQ0N5QUJRUkJxUVpqeEVCQVFHZ3luQWdzZ0FVRVFha0duOFJBUUVCb01wZ0lMSUFGQkVHcEJ1UEVRRUJBYURLVUNDeUFCUVJCcVFjbnhFQkFRR2d5a0Fnc2dBVUVRYWtIYThSQVFFQm9Nb3dJTElBRkJFR3BCNmZFUUVCQWFES0lDQ3lBQlFSQnFRZm54RUJBUUdneWhBZ3NnQVVFUWFrR0w4aEFRRUJvTW9BSUxJQUZCRUdwQm5mSVFFQkFhREo4Q0N5QUJRUkJxUWEveUVCQVFHZ3llQWdzZ0FVRVFha0cvOGhBUUVCb01uUUlMSUFGQkVHcEIwZklRRUJBYURKd0NDeUFCUVJCcVFlUHlFQkFRR2d5YkFnc2dBVUVRYWtIMThoQVFFQm9NbWdJTElBRkJFR3BCaGZNUUVCQWFESmtDQ3lBQlFSQnFRWlh6RUJBUUdneVlBZ3NnQVVFUWFrR244eEFRRUJvTWx3SUxJQUZCRUdwQnVmTVFFQkFhREpZQ0N5QUJRUkJxUWN2ekVCQVFHZ3lWQWdzZ0FVRVFha0hiOHhBUUVCb01sQUlMSUFGQkVHcEI3Zk1RRUJBYURKTUNDeUFCUVJCcVFmL3pFQkFRR2d5U0Fnc2dBVUVRYWtHUjlCQVFFQm9Na1FJTElBRkJFR3BCb2ZRUUVCQWFESkFDQ3lBQlFSQnFRYkgwRUJBUUdneVBBZ3NnQVVFUWFrSEQ5QkFRRUJvTWpnSUxJQUZCRUdwQjFmUVFFQkFhREkwQ0N5QUJRUkJxUWVmMEVCQVFHZ3lNQWdzZ0FVRVFha0gzOUJBUUVCb01pd0lMSUFGQkVHcEJpZlVRRUJBYURJb0NDeUFCUVJCcVFadjFFQkFRR2d5SkFnc2dBVUVRYWtHdDlSQVFFQm9NaUFJTElBRkJFR3BCdmZVUUVCQWFESWNDQ3lBQlFSQnFRYzMxRUJBUUdneUdBZ3NnQVVFUWFrSGY5UkFRRUJvTWhRSUxJQUZCRUdwQjhmVVFFQkFhRElRQ0N5QUJRUkJxUVlQMkVCQVFHZ3lEQWdzZ0FVRVFha0dUOWhBUUVCb01nZ0lMSUFGQkVHcEJwZllRRUJBYURJRUNDeUFCUVJCcVFiZjJFQkFRR2d5QUFnc2dBVUVRYWtISjloQVFFQm9NL3dFTElBRkJFR3BCMmZZUUVCQWFEUDRCQ3lBQlFSQnFRZTMyRUJBUUdnejlBUXNnQVVFUWFrSC85aEFRRUJvTS9BRUxJQUZCRUdwQmtmY1FFQkFhRFBzQkN5QUJRUkJxUWFQM0VCQVFHZ3o2QVFzZ0FVRVFha0cxOXhBUUVCb00rUUVMSUFGQkVHcEJ5ZmNRRUJBYURQZ0JDeUFCUVJCcVFkMzNFQkFRR2d6M0FRc2dBVUVRYWtIeDl4QVFFQm9NOWdFTElBRkJFR3BCZy9nUUVCQWFEUFVCQ3lBQlFSQnFRWmY0RUJBUUdnejBBUXNnQVVFUWFrR3IrQkFRRUJvTTh3RUxJQUZCRUdwQnYvZ1FFQkFhRFBJQkN5QUJRUkJxUWRINEVCQVFHZ3p4QVFzZ0FVRVFha0hsK0JBUUVCb004QUVMSUFGQkVHcEJpUGtRRUJBYURPOEJDeUFCUVJCcVFaejVFQkFRR2d6dUFRc2dBVUVRYWtHUnJ4QVFFQm9NN1FFTElBRkJFR3BCbzY4UUVCQWFET3dCQ3lBQlFSQnFRYml2RUJBUUdnenJBUXNnQVVFUWFrSFRyeEFRRUJvTTZnRUxJQUZCRUdwQjhhOFFFQkFhRE9rQkN5QUJRUkJxUWZldkVCQVFHZ3pvQVFzZ0FVRVFha0d3cmhBUUVCb001d0VMSUFGQkVHcEJ1ZmtRRUJBYURPWUJDeUFCUVJCcVFiNzVFQkFRR2d6bEFRc2dBVUVRYWtIMnpCQVFFQm9NNUFFTElBRkJFR3BCd3ZrUUVCQWFET01CQ3lBQlFSQnFRY2I1RUJBUUdnemlBUXNnQVVFUWFrSEsrUkFRRUJvTTRRRUxJQUZCRUdwQjBQa1FFQkFhRE9BQkN5QUJRUkJxUWRUNUVCQVFHZ3pmQVFzZ0FVRVFha0haK1JBUUVCb00zZ0VMSUFGQkVHcEI1UGtRRUJBYUROMEJDeUFCUVJCcVFlMzVFQkFRR2d6Y0FRc2dBVUVRYWtINStSQVFFQm9NMndFTElBRkJFR3BCaC9vUUVCQWFETm9CQ3lBQlFSQnFRWlQ2RUJBUUdnelpBUXNnQVVFUWFrR2MraEFRRUJvTTJBRUxJQUZCRUdwQmthNFFFQkFhRE5jQkN5QUJRUkJxUWFUNkVCQVFHZ3pXQVFzZ0FVRVFha0d5K2hBUUVCb00xUUVMSUFGQkVHcEJ2Zm9RRUJBYUROUUJDeUFCUVJCcVFjcjZFQkFRR2d6VEFRc2dBVUVRYWtIUytoQVFFQm9NMGdFTElBRkJFR3BCNFBvUUVCQWFETkVCQ3lBQlFSQnFRZnY2RUJBUUdnelFBUXNnQVVFUWFrR1AreEFRRUJvTXp3RUxJQUZCRUdwQm92c1FFQkFhRE00QkN5QUJRUkJxUWJiN0VCQVFHZ3pOQVFzZ0FVRVFha0hKK3hBUUVCb016QUVMSUFGQkVHcEIyUHNRRUJBYURNc0JDeUFCUVJCcVFldjdFQkFRR2d6S0FRc2dBVUVRYWtHRS9CQVFFQm9NeVFFTElBRkJFR3BCbFB3UUVCQWFETWdCQ3lBQlFSQnFRWm44RUJBUUdnekhBUXNnQVVFUWFrR2UvQkFRRUJvTXhnRUxJQUZCRUdwQm8vd1FFQkFhRE1VQkN5QUJRUkJxUWFqOEVCQVFHZ3pFQVFzZ0FVRVFha0d5L0JBUUVCb013d0VMSUFGQkVHcEJ2UHdRRUJBYURNSUJDeUFCUVJCcVFjYjhFQkFRR2d6QkFRc2dBVUVRYWtIUS9CQVFFQm9Nd0FFTElBRkJFR3BCMmZ3UUVCQWFETDhCQ3lBQlFSQnFRZVA4RUJBUUdneStBUXNnQVVFUWFrSHkvQkFRRUJvTXZRRUxJQUZCRUdwQmdmMFFFQkFhREx3QkN5QUJRUkJxUVl6OUVCQVFHZ3k3QVFzZ0FVRVFha0dZL1JBUUVCb011Z0VMSUFGQkVHcEJxZjBRRUJBYURMa0JDeUFCUVJCcVFiLzlFQkFRR2d5NEFRc2dBVUVRYWtIUS9SQVFFQm9NdHdFTElBRkJFR3BCNGYwUUVCQWFETFlCQ3lBQlFSQnFRZkw5RUJBUUdneTFBUXNnQVVFUWFrR0MvaEFRRUJvTXRBRUxJQUZCRUdwQmsvNFFFQkFhRExNQkN5QUJRUkJxUWFuK0VCQVFHZ3l5QVFzZ0FVRVFha0dEMWhBUUVCb01zUUVMSUFGQkVHcEJrdFlRRUJBYURMQUJDeUFCUVJCcVFhVFdFQkFRR2d5dkFRc2dBVUVRYWtHLy9oQVFFQm9NcmdFTElBRkJFR3BCeXY0UUVCQWFESzBCQ3lBQlFSQnFRZG4rRUJBUUdneXNBUXNnQVVFUWFrSG8vaEFRRUJvTXF3RUxJQUZCRUdwQjkvNFFFQkFhREtvQkN5QUJRUkJxUVliL0VCQVFHZ3lwQVFzZ0FVRVFha0dVL3hBUUVCb01xQUVMSUFGQkVHcEJvLzhRRUJBYURLY0JDeUFCUVJCcVFiZi9FQkFRR2d5bUFRc2dBVUVRYWtITC94QVFFQm9NcFFFTElBRkJFR3BCMi84UUVCQWFES1FCQ3lBQlFSQnFRZXovRUJBUUdneWpBUXNnQVVFUWFrSDUveEFRRUJvTW9nRUxJQUZCRUdwQnhkVVFFQkFhREtFQkN5QUJRUkJxUWRIVkVCQVFHZ3lnQVFzZ0FVRVFha0hoMVJBUUVCb01ud0VMSUFGQkVHcEI5TlVRRUJBYURKNEJDeUFCUVJCcVFZZUFFUkFRR2d5ZEFRc2dBVUVRYWtHUGdCRVFFQm9NbkFFTElBRkJFR3BCbTRBUkVCQWFESnNCQ3lBQlFSQnFRYWFBRVJBUUdneWFBUXNnQVVFUWFrRzBnQkVRRUJvTW1RRUxJQUZCRUdwQndZQVJFQkFhREpnQkN5QUJRUkJxUWRTQUVSQVFHZ3lYQVFzZ0FVRVFha0htZ0JFUUVCb01sZ0VMSUFGQkVHcEI5NEFSRUJBYURKVUJDeUFCUVJCcVFZYUJFUkFRR2d5VUFRc2dBVUVRYWtHYmdSRVFFQm9Na3dFTElBRkJFR3BCcDRFUkVCQWFESklCQ3lBQlFSQnFRYm1CRVJBUUdneVJBUXNnQVVFUWFrSEpnUkVRRUJvTWtBRUxJQUZCRUdwQjM0RVJFQkFhREk4QkN5QUJRUkJxUWUyQkVSQVFHZ3lPQVFzZ0FVRVFha0dCZ2hFUUVCb01qUUVMSUFGQkVHcEJsb0lSRUJBYURJd0JDeUFCUVJCcVFhT0NFUkFRR2d5TEFRc2dBVUVRYWtHMmdoRVFFQm9NaWdFTElBRkJFR3BCeDRJUkVCQWFESWtCQ3lBQlFSQnFRZDZDRVJBUUdneUlBUXNnQVVFUWFrSHZnaEVRRUJvTWh3RUxJQUZCRUdwQmhvTVJFQkFhRElZQkN5QUJRUkJxUVo2REVSQVFHZ3lGQVFzZ0FVRVFha0dzZ3hFUUVCb01oQUVMSUFGQkVHcEJ3SU1SRUJBYURJTUJDeUFCUVJCcVFkR0RFUkFRR2d5Q0FRc2dBVUVRYWtIb2d4RVFFQm9NZ1FFTElBRkJFR3BCK1lNUkVCQWFESUFCQ3lBQlFSQnFRWkNFRVJBUUdneC9DeUFCUVJCcVFhS0VFUkFRR2d4K0N5QUJRUkJxUWJxRUVSQVFHZ3g5Q3lBQlFSQnFRYzZFRVJBUUdneDhDeUFCUVJCcVFlaUVFUkFRR2d4N0N5QUJRUkJxUVlPRkVSQVFHZ3g2Q3lBQlFSQnFRWk9GRVJBUUdneDVDeUFCUVJCcVFhYUZFUkFRR2d4NEN5QUJRUkJxUWIrRkVSQVFHZ3gzQ3lBQlFSQnFRZGFGRVJBUUdneDJDeUFCUVJCcVFmS0ZFUkFRR2d4MUN5QUJRUkJxUVltR0VSQVFHZ3gwQ3lBQlFSQnFRYWFHRVJBUUdneHpDeUFCUVJCcVFjU0dFUkFRR2d4eUN5QUJRUkJxUWRlR0VSQVFHZ3h4Q3lBQlFSQnFRZTZHRVJBUUdneHdDeUFCUVJCcVFZcUhFUkFRR2d4dkN5QUJRUkJxUWFTSEVSQVFHZ3h1Q3lBQlFSQnFRYitIRVJBUUdneHRDeUFCUVJCcVFkNkhFUkFRR2d4c0N5QUJRUkJxUWVlSEVSQVFHZ3hyQ3lBQlFSQnFRZkdIRVJBUUdneHFDeUFCUVJCcVFmNkhFUkFRR2d4cEN5QUJRUkJxUVl1SUVSQVFHZ3hvQ3lBQlFSQnFRWnVJRVJBUUdneG5DeUFCUVJCcVFhcUlFUkFRR2d4bUN5QUJRUkJxUWE2SUVSQVFHZ3hsQ3lBQlFSQnFRYlNJRVJBUUdneGtDeUFCUVJCcVFicUlFUkFRR2d4akN5QUJRUkJxUWM2SUVSQVFHZ3hpQ3lBQlFSQnFRZUtJRVJBUUdneGhDeUFCUVJCcVFmYUlFUkFRR2d4Z0N5QUJRUkJxUWYySUVSQVFHZ3hmQ3lBQlFSQnFRWUdKRVJBUUdneGVDeUFCUVJCcVFaK0pFUkFRR2d4ZEN5QUJRUkJxUWJPSkVSQVFHZ3hjQ3lBQlFSQnFRZFNKRVJBUUdneGJDeUFCUVJCcVFldUpFUkFRR2d4YUN5QUJRUkJxUVkrS0VSQVFHZ3haQ3lBQlFSQnFRWitLRVJBUUdneFlDeUFCUVJCcVFiV0tFUkFRR2d4WEN5QUJRUkJxUWRHS0VSQVFHZ3hXQ3lBQlFSQnFRZXlLRVJBUUdneFZDeUFCUVJCcVFjN1hFQkFRR2d4VUN5QUJRUkJxUWR6WEVCQVFHZ3hUQ3lBQlFSQnFRZWpYRUJBUUdneFNDeUFCUVJCcVFmVFhFQkFRR2d4UkN5QUJRUkJxUVlYWUVCQVFHZ3hRQ3lBQlFSQnFRWmZZRUJBUUdneFBDeUFCUVJCcVFhN1lFQkFRR2d4T0N5QUJRUkJxUWIzWUVCQVFHZ3hOQ3lBQlFSQnFRZFBZRUJBUUdneE1DeUFCUVJCcVFlellFQkFRR2d4TEN5QUJRUkJxUVlQWkVCQVFHZ3hLQ3lBQlFSQnFRYVBaRUJBUUdneEpDeUFCUVJCcVFjUFpFQkFRR2d4SUN5QUJRUkJxUWRuWkVCQVFHZ3hIQ3lBQlFSQnFRZS9aRUJBUUdneEdDeUFCUVJCcVFmL1pFQkFRR2d4RkN5QUJRUkJxUVpMYUVCQVFHZ3hFQ3lBQlFSQnFRYVRhRUJBUUdneERDeUFCUVJCcVFiamFFQkFRR2d4Q0N5QUJRUkJxUWNUYUVCQVFHZ3hCQ3lBQlFSQnFRZERhRUJBUUdneEFDeUFCUVJCcVFkemFFQkFRR2d3L0N5QUJRUkJxUWVqYUVCQVFHZ3crQ3lBQlFSQnFRZlRhRUJBUUdndzlDeUFCUVJCcVFmL2FFQkFRR2d3OEN5QUJRUkJxUVl2YkVCQVFHZ3c3Q3lBQlFSQnFRYURiRUJBUUdndzZDeUFCUVJCcVFiWGJFQkFRR2d3NUN5QUJRUkJxUWNyYkVCQVFHZ3c0Q3lBQlFSQnFRZC9iRUJBUUdndzNDeUFCUVJCcVFmVGJFQkFRR2d3MkN5QUJRUkJxUVlqY0VCQVFHZ3cxQ3lBQlFSQnFRWjNjRUJBUUdndzBDeUFCUVJCcVFiTGNFQkFRR2d3ekN5QUJRUkJxUWNmY0VCQVFHZ3d5Q3lBQlFSQnFRZHpjRUJBUUdnd3hDeUFCUVJCcVFmSGNFQkFRR2d3d0N5QUJRUkJxUVliZEVCQVFHZ3d2Q3lBQlFSQnFRWnJkRUJBUUdnd3VDeUFCUVJCcVFhL2RFQkFRR2d3dEN5QUJRUkJxUWNUZEVCQVFHZ3dzQ3lBQlFSQnFRZG5kRUJBUUdnd3JDeUFCUVJCcVFlN2RFQkFRR2d3cUN5QUJRUkJxUVlQZUVCQVFHZ3dwQ3lBQlFSQnFRWmplRUJBUUdnd29DeUFCUVJCcVFhemVFQkFRR2d3bkN5QUJRUkJxUWNIZUVCQVFHZ3dtQ3lBQlFSQnFRZGZlRUJBUUdnd2xDeUFCUVJCcVFmTGVFQkFRR2d3a0N5QUJRUkJxUVl2ZkVCQVFHZ3dqQ3lBQlFSQnFRYVRmRUJBUUdnd2lDeUFCUVJCcVFiamZFQkFRR2d3aEN5QUJRUkJxUWRIZkVCQVFHZ3dnQ3lBQlFSQnFRZXJmRUJBUUdnd2ZDeUFCUVJCcVFZUGdFQkFRR2d3ZUN5QUJRUkJxUVp6Z0VCQVFHZ3dkQ3lBQlFSQnFRYlhnRUJBUUdnd2NDeUFCUVJCcVFjM2dFQkFRR2d3YkN5QUJRUkJxUWViZ0VCQVFHZ3dhQ3lBQlFSQnFRWWpoRUJBUUdnd1pDeUFCUVJCcVFhcmhFQkFRR2d3WUN5QUJRUkJxUWN6aEVCQVFHZ3dYQ3lBQlFSQnFRZTdoRUJBUUdnd1dDeUFCUVJCcVFaRGlFQkFRR2d3VkN5QUJRUkJxUWJIaUVCQVFHZ3dVQ3lBQlFSQnFRZFBpRUJBUUdnd1RDeUFCUVJCcVFmWGlFQkFRR2d3U0N5QUJRUkJxUVpmakVCQVFHZ3dSQ3lBQlFSQnFRYm5qRUJBUUdnd1FDeUFCUVJCcVFkdmpFQkFRR2d3UEN5QUJRUkJxUWYzakVCQVFHZ3dPQ3lBQlFSQnFRWjdrRUJBUUdnd05DeUFCUVJCcVFjTHBFQkFRR2d3TUN5QUJRUkJxUWM3cEVCQVFHZ3dMQ3lBQlFSQnFRWWlMRVJBUUdnd0tDeUFCUVJCcVFaQ0xFUkFRR2d3SkN5QUJRUkJxUWFXTEVSQVFHZ3dJQ3lBQlFSQnFRYnFMRVJBUUdnd0hDeUFCUVJCcVFjbUxFUkFRR2d3R0N5QUJRUkJxUWR1TEVSQVFHZ3dGQ3lBQlFSQnFRZnlMRVJBUUdnd0VDeUFCUVJCcVFaU01FUkFRR2d3REN5QUJRUkJxUWEyTUVSQVFHZ3dDQ3lBQlFSQnFRY21NRVJBUUdnd0JDeUFCUVJCcVFRSkIzSXdSRUxzQkN3SkFJQUlvQW1oQkFVWU5BQ0FDS0FKb1FRVkdEUUFnQVVFUWFrSFhzUkFRRUNFQUlBTWdBaEQzQ0NBQUlBTVF1UUZCMnJFUUVCQWFJQU1RR1JvTElBRkJFR3BCM0xFUUVCQWFDeUFEUVJCcUpBQkJBUXZiUEFFQmZ5TUFRUkJySWdNa0FDQUFLQUlnSWdFZ0FpQUFLQUlJRVBNQkFrQUNRQ0FDS0FKb1FYcHFJZ0JCc0FWTERRQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQkFXc09zQVVCQVFJREJBVUdCd2dKQ2dzTURRNFBFQkVTRXhRVkZoY1lHUm9iSEIwZUh5QWhJaU1rSlNZbktDa3FLeXd0TGk4d01USXpORFUyTnpnOFBUNC9RRUZDT1RvN1EwUkZSa2RJU1VwTFRGQlJVbE5VVlZaTlRrOVhXRmxhVzF4ZFhsOWdaR1ZtWjJocGFtRmlZMnRzYlc1dmNIRnljM1IxZG5kNmUzeDlmbitBQVlFQmVIbUVBWVVCaGdHSEFZZ0JpUUdLQVlzQmdnR0RBWXdCalFIcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBbzRCandHUUFaRUJrZ0dUQVpRQmxRR1dBWmNCbUFHWkFab0Jtd0hxQXB3Qm5RR2VBWjhCb0FHaEFhSUJvd0drQWFVQnBnR25BYWdCcVFIcUF1b0M2Z0xxQXVvQzZnTHFBcW9CcXdIcUF1b0M2Z0tzQWEwQnJnR3ZBYkFCc1FHeUFiTUJ0QUcxQWJZQnR3RzRBYmtCdWdHN0FjUUJ4UUhHQWNjQnZBRzlBY2dCeVFIS0Fjc0J6QUhOQWRZQjF3SE9BYzhCMEFIUkFkSUIwd0hVQWRVQnZnRy9BY0FCd1FIQ0FjTUIyQUhxQXVvQzZnTFpBZW9DNmdMcUF1b0M2Z0xxQXRvQjJ3SGNBZDBCM2dIZkFlQUI0UUhpQWVNQjZnTHFBdW9DNmdMcUF1UUI1UUhtQWVvQy9BSHFBdW9DNmdIckFlb0M2Z0xxQXVvQzZnTHFBdW9DL1FIcUF2NEIvd0dBQW9FQzZnTHFBdW9DNmdMcUF1b0NnZ0tEQW9RQ2hRS0dBb2NDaUFLSkFvb0Npd0tNQW8wQ2pnS1BBcEFDa1FLU0FwTUNsQUtWQXBZQ2x3S1lBcGtDbWdLYkFwd0NuUUtlQXA4Q29BS2hBcUlDb3dLa0FxVUNwZ0tuQXFnQ3FRS3FBcXNDckFLdEFxNENyd0t3QXJFQ3NnS3pBclFDdFFLMkFyY0N1QUs1QXJvQ3V3SzhBcjBDdmdLL0FzQUN3UUxDQXNNQ3hBTEZBc1lDeHdMSUFza0M2Z0xRQXRFQzBnTFRBdFFDMVFMV0F0Y0MyQUxaQXRvQzJ3TGNBdDBDM2dMZkF1QUM0UUxxQXVvQzZnTGlBdVVDNWdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M3QUh0QWU0QjZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzV3SG9BZW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcEF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcEFlb0M4d0gwQWZVQjZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMbkF1Z0M2Z0xxQXVvQzZnTHZBZkFCOFFIeUFlb0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNHdMa0F1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXM4QzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUF2WUI5d0g0QWZrQitnSDdBZW9DNmdMcUF1b0M2Z0xxQXVvQzZnTHFBdW9DNmdMcUFzb0N5d0xNQXMwQ3pnSUFDeUFCUVJCcVFkNnhFQkFRR2d6cUFnc2dBVUVRYWtIcnNSQVFFQm9NNlFJTElBRkJFR3BCL3JFUUVCQWFET2dDQ3lBQlFSQnFRWXF5RUJBUUdnem5BZ3NnQVVFUWFrR1pzaEFRRUJvTTVnSUxJQUZCRUdwQnFMSVFFQkFhRE9VQ0N5QUJRUkJxUWJheUVCQVFHZ3prQWdzZ0FVRVFha0hFc2hBUUVCb000d0lMSUFGQkVHcEIwTElRRUJBYURPSUNDeUFCUVJCcVFlZXlFQkFRR2d6aEFnc2dBVUVRYWtIL3NoQVFFQm9NNEFJTElBRkJFR3BCbDdNUUVCQWFETjhDQ3lBQlFSQnFRYkN6RUJBUUdnemVBZ3NnQVVFUWFrSEVzeEFRRUJvTTNRSUxJQUZCRUdwQjJiTVFFQkFhRE53Q0N5QUJRUkJxUWUrekVCQVFHZ3piQWdzZ0FVRVFha0dHdEJBUUVCb00yZ0lMSUFGQkVHcEJvTFFRRUJBYUROa0NDeUFCUVJCcVFiYTBFQkFRR2d6WUFnc2dBVUVRYWtITnRCQVFFQm9NMXdJTElBRkJFR3BCNUxRUUVCQWFETllDQ3lBQlFSQnFRZnkwRUJBUUdnelZBZ3NnQVVFUWFrR1V0UkFRRUJvTTFBSUxJQUZCRUdwQnJiVVFFQkFhRE5NQ0N5QUJRUkJxUWNHMUVCQVFHZ3pTQWdzZ0FVRVFha0hXdFJBUUVCb00wUUlMSUFGQkVHcEI3TFVRRUJBYUROQUNDeUFCUVJCcVFZTzJFQkFRR2d6UEFnc2dBVUVRYWtHZHRoQVFFQm9NemdJTElBRkJFR3BCczdZUUVCQWFETTBDQ3lBQlFSQnFRY3EyRUJBUUdnek1BZ3NnQVVFUWFrSGt0aEFRRUJvTXl3SUxJQUZCRUdwQityWVFFQkFhRE1vQ0N5QUJRUkJxUVpLM0VCQVFHZ3pKQWdzZ0FVRVFha0dzdHhBUUVCb015QUlMSUFGQkVHcEJ4N2NRRUJBYURNY0NDeUFCUVJCcVFkNjNFQkFRR2d6R0Fnc2dBVUVRYWtIM3R4QVFFQm9NeFFJTElBRkJFR3BCa2JnUUVCQWFETVFDQ3lBQlFSQnFRYXk0RUJBUUdnekRBZ3NnQVVFUWFrSER1QkFRRUJvTXdnSUxJQUZCRUdwQjNMZ1FFQkFhRE1FQ0N5QUJRUkJxUWZpNEVCQVFHZ3pBQWdzZ0FVRVFha0dRdVJBUUVCb012d0lMSUFGQkVHcEJxcmtRRUJBYURMNENDeUFCUVJCcVFjYTVFQkFRR2d5OUFnc2dBVUVRYWtIZXVSQVFFQm9NdkFJTElBRkJFR3BCOTdrUUVCQWFETHNDQ3lBQlFSQnFRWlM2RUJBUUdneTZBZ3NnQVVFUWFrR3R1aEFRRUJvTXVRSUxJQUZCRUdwQng3b1FFQkFhRExnQ0N5QUJRUkJxUWVHNkVCQVFHZ3kzQWdzZ0FVRVFha0g0dWhBUUVCb010Z0lMSUFGQkVHcEJrYnNRRUJBYURMVUNDeUFCUVJCcVFheTdFQkFRR2d5MEFnc2dBVUVRYWtISXV4QVFFQm9Nc3dJTElBRkJFR3BCNExzUUVCQWFETElDQ3lBQlFSQnFRZnE3RUJBUUdneXhBZ3NnQVVFUWFrR1h2QkFRRUJvTXNBSUxJQUZCRUdwQnNMd1FFQkFhREs4Q0N5QUJRUkJxUWNxOEVCQVFHZ3l1QWdzZ0FVRVFha0hsdkJBUUVCb01yUUlMSUFGQkVHcEJnYjBRRUJBYURLd0NDeUFCUVJCcVFabTlFQkFRR2d5ckFnc2dBVUVRYWtHenZSQVFFQm9NcWdJTElBRkJFR3BCejcwUUVCQWFES2tDQ3lBQlFSQnFRZWk5RUJBUUdneW9BZ3NnQVVFUWFrR0R2aEFRRUJvTXB3SUxJQUZCRUdwQm9iNFFFQkFhREtZQ0N5QUJRUkJxUWJ1K0VCQVFHZ3lsQWdzZ0FVRVFha0hXdmhBUUVCb01wQUlMSUFGQkVHcEI3TDRRRUJBYURLTUNDeUFCUVJCcVFZTy9FQkFRR2d5aUFnc2dBVUVRYWtHWXZ4QVFFQm9Nb1FJTElBRkJFR3BCcjc4UUVCQWFES0FDQ3lBQlFSQnFRY2UvRUJBUUdneWZBZ3NnQVVFUWFrSGJ2eEFRRUJvTW5nSUxJQUZCRUdwQjhiOFFFQkFhREowQ0N5QUJRUkJxUVlyQUVCQVFHZ3ljQWdzZ0FVRVFha0dmd0JBUUVCb01td0lMSUFGQkVHcEJ0Y0FRRUJBYURKb0NDeUFCUVJCcVFjekFFQkFRR2d5WkFnc2dBVUVRYWtIa3dCQVFFQm9NbUFJTElBRkJFR3BCK01BUUVCQWFESmNDQ3lBQlFSQnFRWTdCRUJBUUdneVdBZ3NnQVVFUWFrR213UkFRRUJvTWxRSUxJQUZCRUdwQnY4RVFFQkFhREpRQ0N5QUJRUkJxUWRiQkVCQVFHZ3lUQWdzZ0FVRVFha0h3d1JBUUVCb01rZ0lMSUFGQkVHcEJoc0lRRUJBYURKRUNDeUFCUVJCcVFaM0NFQkFRR2d5UUFnc2dBVUVRYWtHMXdoQVFFQm9NandJTElBRkJFR3BCenNJUUVCQWFESTRDQ3lBQlFSQnFRZVBDRUJBUUdneU5BZ3NnQVVFUWFrSDh3aEFRRUJvTWpBSUxJQUZCRUdwQmxzTVFFQkFhRElzQ0N5QUJRUkJxUWF6REVCQVFHZ3lLQWdzZ0FVRVFha0hFd3hBUUVCb01pUUlMSUFGQkVHcEIzOE1RRUJBYURJZ0NDeUFCUVJCcVFmYkRFQkFRR2d5SEFnc2dBVUVRYWtHT3hCQVFFQm9NaGdJTElBRkJFR3BCcDhRUUVCQWFESVVDQ3lBQlFSQnFRY0hFRUJBUUdneUVBZ3NnQVVFUWFrSFh4QkFRRUJvTWd3SUxJQUZCRUdwQjc4UVFFQkFhRElJQ0N5QUJRUkJxUVluRkVCQVFHZ3lCQWdzZ0FVRVFha0dpeFJBUUVCb01nQUlMSUFGQkVHcEJ1Y1VRRUJBYURQOEJDeUFCUVJCcVFkWEZFQkFRR2d6K0FRc2dBVUVRYWtIdHhSQVFFQm9NL1FFTElBRkJFR3BCaHNZUUVCQWFEUHdCQ3lBQlFSQnFRYUxHRUJBUUdnejdBUXNnQVVFUWFrRy94aEFRRUJvTStnRUxJQUZCRUdwQjJNWVFFQkFhRFBrQkN5QUJRUkJxUWZQR0VCQVFHZ3o0QVFzZ0FVRVFha0dReHhBUUVCb005d0VMSUFGQkVHcEJyc2NRRUJBYURQWUJDeUFCUVJCcVFjakhFQkFRR2d6MUFRc2dBVUVRYWtIa3h4QVFFQm9NOUFFTElBRkJFR3BCLzhjUUVCQWFEUE1CQ3lBQlFSQnFRWnZJRUJBUUdnenlBUXNnQVVFUWFrRzJ5QkFRRUJvTThRRUxJQUZCRUdwQnpzZ1FFQkFhRFBBQkN5QUJRUkJxUWViSUVCQVFHZ3p2QVFzZ0FVRVFha0gveUJBUUVCb003Z0VMSUFGQkVHcEJsTWtRRUJBYURPMEJDeUFCUVJCcVFhdkpFQkFRR2d6c0FRc2dBVUVRYWtIRXlSQVFFQm9NNndFTElBRkJFR3BCM3NrUUVCQWFET29CQ3lBQlFSQnFRZlRKRUJBUUdnenBBUXNnQVVFUWFrR015aEFRRUJvTTZBRUxJQUZCRUdwQnFNb1FFQkFhRE9jQkN5QUJRUkJxUWNES0VCQVFHZ3ptQVFzZ0FVRVFha0haeWhBUUVCb001UUVMSUFGQkVHcEI4OG9RRUJBYURPUUJDeUFCUVJCcVFZbkxFQkFRR2d6akFRc2dBVUVRYWtHaHl4QVFFQm9NNGdFTElBRkJFR3BCdThzUUVCQWFET0VCQ3lBQlFSQnFRZGJMRUJBUUdnemdBUXNnQVVFUWFrSHR5eEFRRUJvTTN3RUxJQUZCRUdwQmhzd1FFQkFhRE40QkN5QUJRUkJxUWFMTUVCQVFHZ3pkQVFzZ0FVRVFha0crekJBUUVCb00zQUVMSUFGQkVHcEJ4c3dRRUJBYUROc0JDeUFCUVJCcVFjN01FQkFRR2d6YUFRc2dBVUVRYWtIVHpCQVFFQm9NMlFFTElBRkJFR3BCMnN3UUVCQWFETmdCQ3lBQlFSQnFRZUxNRUJBUUdnelhBUXNnQVVFUWFrSHJ6QkFRRUJvTTFnRUxJQUZCRUdwQjlzd1FFQkFhRE5VQkN5QUJRUkJxUVlMTkVCQVFHZ3pVQVFzZ0FVRVFha0dNelJBUUVCb00wd0VMSUFGQkVHcEJtTTBRRUJBYUROSUJDeUFCUVJCcVFhWE5FQkFRR2d6UkFRc2dBVUVRYWtHenpSQVFFQm9NMEFFTElBRkJFR3BCdzgwUUVCQWFETThCQ3lBQlFSQnFRZFRORUJBUUdnek9BUXNnQVVFUWFrSFl6UkFRRUJvTXpRRUxJQUZCRUdwQjNNMFFFQkFhRE13QkN5QUJRUkJxUWVITkVCQVFHZ3pMQVFzZ0FVRVFha0htelJBUUVCb015Z0VMSUFGQkVHcEI2ODBRRUJBYURNa0JDeUFCUVJCcVFmak5FQkFRR2d6SUFRc2dBVUVRYWtHSHpoQVFFQm9NeHdFTElBRkJFR3BCak00UUVCQWFETVlCQ3lBQlFSQnFRWkxPRUJBUUdnekZBUXNnQVVFUWFrR1l6aEFRRUJvTXhBRUxJQUZCRUdwQm5zNFFFQkFhRE1NQkN5QUJRUkJxUWFqT0VCQVFHZ3pDQVFzZ0FVRVFha0d3emhBUUVCb013UUVMSUFGQkVHcEJ1YzRRRUJBYURNQUJDeUFCUVJCcVFiL09FQkFRR2d5L0FRc2dBVUVRYWtIRnpoQVFFQm9NdmdFTElBRkJFR3BCMU00UUVCQWFETDBCQ3lBQlFSQnFRZVRPRUJBUUdneThBUXNnQVVFUWFrSHp6aEFRRUJvTXV3RUxJQUZCRUdwQmc4OFFFQkFhRExvQkN5QUJRUkJxUVpYUEVCQVFHZ3k1QVFzZ0FVRVFha0dvenhBUUVCb011QUVMSUFGQkVHcEJ1czhRRUJBYURMY0JDeUFCUVJCcVFjM1BFQkFRR2d5MkFRc2dBVUVRYWtIZ3p4QVFFQm9NdFFFTElBRkJFR3BCOU04UUVCQWFETFFCQ3lBQlFSQnFRWWZRRUJBUUdneXpBUXNnQVVFUWFrR2IwQkFRRUJvTXNnRUxJQUZCRUdwQnFkQVFFQkFhRExFQkN5QUJRUkJxUWJuUUVCQVFHZ3l3QVFzZ0FVRVFha0hIMEJBUUVCb01yd0VMSUFGQkVHcEIxOUFRRUJBYURLNEJDeUFCUVJCcVFlVFFFQkFRR2d5dEFRc2dBVUVRYWtIejBCQVFFQm9NckFFTElBRkJFR3BCK3RBUUVCQWFES3NCQ3lBQlFSQnFRWUhSRUJBUUdneXFBUXNnQVVFUWFrR0kwUkFRRUJvTXFRRUxJQUZCRUdwQmtkRVFFQkFhREtnQkN5QUJRUkJxUVpyUkVCQVFHZ3luQVFzZ0FVRVFha0dpMFJBUUVCb01wZ0VMSUFGQkVHcEJyOUVRRUJBYURLVUJDeUFCUVJCcVFiN1JFQkFRR2d5a0FRc2dBVUVRYWtITDBSQVFFQm9Nb3dFTElBRkJFR3BCMnRFUUVCQWFES0lCQ3lBQlFSQnFRZW5SRUJBUUdneWhBUXNnQVVFUWFrSDYwUkFRRUJvTW9BRUxJQUZCRUdwQmh0SVFFQkFhREo4QkN5QUJRUkJxUVpUU0VCQVFHZ3llQVFzZ0FVRVFha0doMGhBUUVCb01uUUVMSUFGQkVHcEJzTklRRUJBYURKd0JDeUFCUVJCcVFielNFQkFRR2d5YkFRc2dBVUVRYWtISzBoQVFFQm9NbWdFTElBRkJFR3BCMTlJUUVCQWFESmtCQ3lBQlFSQnFRZWJTRUJBUUdneVlBUXNnQVVFUWFrSHkwaEFRRUJvTWx3RUxJQUZCRUdwQmdOTVFFQkFhREpZQkN5QUJRUkJxUVkzVEVCQVFHZ3lWQVFzZ0FVRVFha0djMHhBUUVCb01sQUVMSUFGQkVHcEJxdE1RRUJBYURKTUJDeUFCUVJCcVFiclRFQkFRR2d5U0FRc2dBVUVRYWtIQjB4QVFFQm9Na1FFTElBRkJFR3BCeTlNUUVCQWFESkFCQ3lBQlFSQnFRZERURUJBUUdneVBBUXNnQVVFUWFrSFYweEFRRUJvTWpnRUxJQUZCRUdwQjNOTVFFQkFhREkwQkN5QUJRUkJxUWVYVEVCQVFHZ3lNQVFzZ0FVRVFha0h1MHhBUUVCb01pd0VMSUFGQkVHcEIrZE1RRUJBYURJb0JDeUFCUVJCcVFZVFVFQkFRR2d5SkFRc2dBVUVRYWtHUDFCQVFFQm9NaUFFTElBRkJFR3BCbk5RUUVCQWFESWNCQ3lBQlFSQnFRYkxVRUJBUUdneUdBUXNnQVVFUWFrRysxQkFRRUJvTWhRRUxJQUZCRUdwQnh0UVFFQkFhRElRQkN5QUJRUkJxUWREVUVCQVFHZ3lEQVFzZ0FVRVFha0hVMUJBUUVCb01nZ0VMSUFGQkVHcEIyTlFRRUJBYURJRUJDeUFCUVJCcVFlWFVFQkFRR2d5QUFRc2dBVUVRYWtIMjFCQVFFQm9NZndzZ0FVRVFha0dKMVJBUUVCb01mZ3NnQVVFUWFrR2cxUkFRRUJvTWZRc2dBVUVRYWtHMzFSQVFFQm9NZkFzZ0FVRVFha0hGMVJBUUVCb01ld3NnQVVFUWFrSFIxUkFRRUJvTWVnc2dBVUVRYWtIaDFSQVFFQm9NZVFzZ0FVRVFha0gwMVJBUUVCb01lQXNnQVVFUWFrR0QxaEFRRUJvTWR3c2dBVUVRYWtHUzFoQVFFQm9NZGdzZ0FVRVFha0drMWhBUUVCb01kUXNnQVVFUWFrR3UxaEFRRUJvTWRBc2dBVUVRYWtHKzFoQVFFQm9NY3dzZ0FVRVFha0hIMWhBUUVCb01jZ3NnQVVFUWFrSFAxaEFRRUJvTWNRc2dBVUVRYWtIWDFoQVFFQm9NY0FzZ0FVRVFha0hwMWhBUUVCb01id3NnQVVFUWFrSDgxaEFRRUJvTWJnc2dBVUVRYWtHQzF4QVFFQm9NYlFzZ0FVRVFha0dKMXhBUUVCb01iQXNnQVVFUWFrR2QxeEFRRUJvTWF3c2dBVUVRYWtHcjF4QVFFQm9NYWdzZ0FVRVFha0c2MXhBUUVCb01hUXNnQVVFUWFrSE8xeEFRRUJvTWFBc2dBVUVRYWtIYzF4QVFFQm9NWndzZ0FVRVFha0hvMXhBUUVCb01aZ3NnQVVFUWFrSDAxeEFRRUJvTVpRc2dBVUVRYWtHRjJCQVFFQm9NWkFzZ0FVRVFha0dYMkJBUUVCb01Zd3NnQVVFUWFrR3UyQkFRRUJvTVlnc2dBVUVRYWtHOTJCQVFFQm9NWVFzZ0FVRVFha0hUMkJBUUVCb01ZQXNnQVVFUWFrSHMyQkFRRUJvTVh3c2dBVUVRYWtHRDJSQVFFQm9NWGdzZ0FVRVFha0dqMlJBUUVCb01YUXNnQVVFUWFrSEQyUkFRRUJvTVhBc2dBVUVRYWtIWjJSQVFFQm9NV3dzZ0FVRVFha0h2MlJBUUVCb01XZ3NnQVVFUWFrSC8yUkFRRUJvTVdRc2dBVUVRYWtHUzJoQVFFQm9NV0FzZ0FVRVFha0drMmhBUUVCb01Wd3NnQVVFUWFrRzQyaEFRRUJvTVZnc2dBVUVRYWtIRTJoQVFFQm9NVlFzZ0FVRVFha0hRMmhBUUVCb01WQXNnQVVFUWFrSGMyaEFRRUJvTVV3c2dBVUVRYWtIbzJoQVFFQm9NVWdzZ0FVRVFha0gwMmhBUUVCb01VUXNnQVVFUWFrSC8yaEFRRUJvTVVBc2dBVUVRYWtHTDJ4QVFFQm9NVHdzZ0FVRVFha0dnMnhBUUVCb01UZ3NnQVVFUWFrRzEyeEFRRUJvTVRRc2dBVUVRYWtISzJ4QVFFQm9NVEFzZ0FVRVFha0hmMnhBUUVCb01Td3NnQVVFUWFrSDAyeEFRRUJvTVNnc2dBVUVRYWtHSTNCQVFFQm9NU1FzZ0FVRVFha0dkM0JBUUVCb01TQXNnQVVFUWFrR3kzQkFRRUJvTVJ3c2dBVUVRYWtISDNCQVFFQm9NUmdzZ0FVRVFha0hjM0JBUUVCb01SUXNnQVVFUWFrSHgzQkFRRUJvTVJBc2dBVUVRYWtHRzNSQVFFQm9NUXdzZ0FVRVFha0dhM1JBUUVCb01RZ3NnQVVFUWFrR3YzUkFRRUJvTVFRc2dBVUVRYWtIRTNSQVFFQm9NUUFzZ0FVRVFha0haM1JBUUVCb01Qd3NnQVVFUWFrSHUzUkFRRUJvTVBnc2dBVUVRYWtHRDNoQVFFQm9NUFFzZ0FVRVFha0dZM2hBUUVCb01QQXNnQVVFUWFrR3MzaEFRRUJvTU93c2dBVUVRYWtIQjNoQVFFQm9NT2dzZ0FVRVFha0hYM2hBUUVCb01PUXNnQVVFUWFrSHkzaEFRRUJvTU9Bc2dBVUVRYWtHTDN4QVFFQm9NTndzZ0FVRVFha0drM3hBUUVCb01OZ3NnQVVFUWFrRzQzeEFRRUJvTU5Rc2dBVUVRYWtIUjN4QVFFQm9NTkFzZ0FVRVFha0hxM3hBUUVCb01Nd3NnQVVFUWFrR0Q0QkFRRUJvTU1nc2dBVUVRYWtHYzRCQVFFQm9NTVFzZ0FVRVFha0cxNEJBUUVCb01NQXNnQVVFUWFrSE40QkFRRUJvTUx3c2dBVUVRYWtIbTRCQVFFQm9NTGdzZ0FVRVFha0dJNFJBUUVCb01MUXNnQVVFUWFrR3E0UkFRRUJvTUxBc2dBVUVRYWtITTRSQVFFQm9NS3dzZ0FVRVFha0h1NFJBUUVCb01LZ3NnQVVFUWFrR1E0aEFRRUJvTUtRc2dBVUVRYWtHeDRoQVFFQm9NS0FzZ0FVRVFha0hUNGhBUUVCb01Kd3NnQVVFUWFrSDE0aEFRRUJvTUpnc2dBVUVRYWtHWDR4QVFFQm9NSlFzZ0FVRVFha0c1NHhBUUVCb01KQXNnQVVFUWFrSGI0eEFRRUJvTUl3c2dBVUVRYWtIOTR4QVFFQm9NSWdzZ0FVRVFha0dlNUJBUUVCb01JUXNnQVVFUWFrSEE1QkFRRUJvTUlBc2dBVUVRYWtIRjVCQVFFQm9NSHdzZ0FVRVFha0hPNUJBUUVCb01IZ3NnQVVFUWFrSFU1QkFRRUJvTUhRc2dBVUVRYWtIWTVCQVFFQm9NSEFzZ0FVRVFha0hoNUJBUUVCb01Hd3NnQVVFUWFrSDI1QkFRRUJvTUdnc2dBVUVRYWtHRjVSQVFFQm9NR1FzZ0FVRVFha0dVNVJBUUVCb01HQXNnQVVFUWFrR2o1UkFRRUJvTUZ3c2dBVUVRYWtHODVSQVFFQm9NRmdzZ0FVRVFha0hWNVJBUUVCb01GUXNnQVVFUWFrSHU1UkFRRUJvTUZBc2dBVUVRYWtHSzVoQVFFQm9NRXdzZ0FVRVFha0dtNWhBUUVCb01FZ3NnQVVFUWFrSEM1aEFRRUJvTUVRc2dBVUVRYWtIbzVoQVFFQm9NRUFzZ0FVRVFha0dPNXhBUUVCb01Ed3NnQVVFUWFrRzA1eEFRRUJvTURnc2dBVUVRYWtIUTV4QVFFQm9NRFFzZ0FVRVFha0hzNXhBUUVCb01EQXNnQVVFUWFrR0k2QkFRRUJvTUN3c2dBVUVRYWtHdTZCQVFFQm9NQ2dzZ0FVRVFha0hVNkJBUUVCb01DUXNnQVVFUWFrSDY2QkFRRUJvTUNBc2dBVUVRYWtHQTZSQVFFQm9NQndzZ0FVRVFha0dWNlJBUUVCb01CZ3NnQVVFUWFrR202UkFRRUJvTUJRc2dBVUVRYWtHMDZSQVFFQm9NQkFzZ0FVRVFha0hDNlJBUUVCb01Bd3NnQVVFUWFrSE82UkFRRUJvTUFnc2dBVUVRYWtIYzZSQVFFQm9NQVFzZ0FVRVFha0VDUWZYcEVCQzdBUXNnQVVFUWFpSUFRZGV4RUJBUUlRRWdBeUFDRVBjSUlBRWdBeEM1QVVIYXNSQVFFQm9nQXhBWkdpQUFRZHl4RUJBUUdpQURRUkJxSkFCQkFRdUZDZ0VEZnlNQVFSQnJJZ1FrQUNBQUtBSWdJZ0VnQWlBQUtBSUlFUE1CQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUNLQUpvSWdCQnRRUk1CRUFnQUVIcGZtb2lBMEVkU3dSQUlBQkJwQUpIRFNVZ0FVRVFha0hDc0JBUUVCb01Kd3NnQTBFQmF3NGRCZ2NJQ1FvTERBME9EeEFWRmhFU0V4UWtGeGdaR2hzY0hRRUNBd1FGQ3lBQVFjcDdhaUlEUVE1TkRTUWdBRUhhZW1vaUEwRUZTd1JBSUFCQjhBVkhEU1FnQVVFUWFrSDFyUkFRRUJvTUpnc2dBMEVCYXc0RkhoOGdJU0lkQ3lBQlFSQnFRYTJ0RUJBUUdnd2tDeUFCUVJCcVFicXRFQkFRR2d3akN5QUNJQUlvQWdBb0FzQUJFUUFBSWdBZ0FDZ0NBQ2dDZUJFQUFCRDBBU0VESUFJZ0FpZ0NBQ2dDd0FFUkFBQWlBQ0FBS0FJQUtBSjRFUUFBSVFBZ0FVRVFhaUlGQW44Z0F3UkFJQUFnQUNnQ0FDZ0NWQkVBQUNnQ1FBd0JDeUFBS0FKQUN5QUNJQUlvQWdBb0FzUUJFUUFBSWdBZ0FDZ0NBQ2dDRkJFQUFCQkxRUUFRRHlnQ0FCQTRLQUlBSWdBZ0FDZ0NBQ2dDR0JFQUFCQzVBUm9nQlVISnJSQVFFQm9NSWdzZ0FVRVFha0htclJBUUVCb01JUXNnQVVFUWFrR0VyaEFRRUJvTUlBc2dBVUVRYWtHSXJoQVFFQm9NSHdzZ0FVRVFha0dScmhBUUVCb01IZ3NnQVVFUWFrR3ByaEFRRUJvTUhRc2dBVUVRYWtHd3JoQVFFQm9NSEFzZ0FVRVFha0cwcmhBUUVCb01Hd3NnQVVFUWFrSEFyaEFRRUJvTUdnc2dBVUVRYWtITHJoQVFFQm9NR1FzZ0FVRVFha0hYcmhBUUVCb01HQXNnQVVFUWFrSGtyaEFRRUJvTUZ3c2dBVUVRYWtIeHJoQVFFQm9NRmdzZ0FVRVFha0gvcmhBUUVCb01GUXNnQVVFUWFrR1JyeEFRRUJvTUZBc2dBVUVRYWtHanJ4QVFFQm9NRXdzZ0FVRVFha0c0cnhBUUVCb01FZ3NnQVVFUWFrSFRyeEFRRUJvTUVRc2dBVUVRYWtIeHJ4QVFFQm9NRUFzZ0FVRVFha0gzcnhBUUVCb01Ed3NnQVVFUWFrR0FzQkFRRUJvTURnc2dBVUVRYWtHTnNCQVFFQm9NRFFzZ0FVRVFha0doc0JBUUVCb01EQXNnQVVFUWFrRzFzQkFRRUJvTUN3c2dBVUVRYWtIU3NCQVFFQm9NQ2dzZ0FVRVFha0hkc0JBUUVCb01DUXNnQVVFUWFrSHBzQkFRRUJvTUNBc2dBVUVRYWtIMXNCQVFFQm9NQndzZ0FVRVFha0dJc1JBUUVCb01CZ3NnQVVFUWFrR1VzUkFRRUJvTUJRc2dBVUVRYWtHbHNSQVFFQm9NQkFzZ0FVRVFha0d0c1JBUUVCb01Bd3NnQVVFUWFrRzhzUkFRRUJvTUFnc2dBVUVRYWtIS3NSQVFFQm9NQVFzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBMEVCYXc0T0RRd0xDZ2tJQndZRkJBTUNBUUFPQ3lBQlFSQnFRWU90RUJBUUdnd09DeUFCUVJCcVFkcXNFQkFRR2d3TkN5QUJRUkJxUWErc0VCQVFHZ3dNQ3lBQlFSQnFRWTZzRUJBUUdnd0xDeUFCUVJCcVFleXJFQkFRR2d3S0N5QUJRUkJxUWNxckVCQVFHZ3dKQ3lBQlFSQnFRYVdyRUJBUUdnd0lDeUFCUVJCcVFhV3FFQkFRR2d3SEN5QUJRUkJxUWZxcUVCQVFHZ3dHQ3lBQlFSQnFRYytxRUJBUUdnd0ZDeUFCUVJCcVFhV3FFQkFRR2d3RUN5QUJRUkJxUWY2cEVCQVFHZ3dEQ3lBQlFSQnFRZGVwRUJBUUdnd0NDeUFCUVJCcVFiV3BFQkFRR2d3QkN5QUJRUkJxUVpTcEVCQVFHZ3NnQVVFUWFpSUFRZGV4RUJBUUlRRWdCQ0FDRVBjSUlBRWdCQkM1QVVIYXNSQVFFQm9nQkJBWkdpQUFRZHl4RUJBUUdpQUVRUkJxSkFCQkFRc3NBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNDQ0FBSUFJb0FnZ1FzQU1nQUVFQU5nSVFJQUpCRUdva0FBdEdBQ01BUVJCcklnSWtBQ0FBSUFFUTF3SWlBQkNmQ1NBQ1FRaHFJQUJCQUJEREFSQ1JBU0lBS0FJQVFSQnFJQU1vQWdBUXN4Z2dBQkFsUVFFNkFBUWdBa0VRYWlRQUN5Y0FJQUF0QUFRRVFDQUFLQUlBR2lBQlFSQnFFT1lDQ3lBQkJFQWdBQ2dDQUJvZ0FSQXFDd3RGQVFGL0l3QkJFR3NpQXlRQUlBRVFKU0lCSUFCQkhCQW1JQU5CQ0dvZ0FVRUFFTU1CRUpFQklnQW9BZ0JCRUdvZ0FoQ2dCU0FBRUNWQkFUb0FCQ0FEUVJCcUpBQUxmQUVDZnlNQVFTQnJJZ1FrQUNBQklBUkJIR29nQWhDdEJ5SUZLQUlBSVFJZ0JFRUFPZ0FiSUFKRkJFQWdCRUVJYWlBQklBTVF0aGdnQVNBRUtBSWNJQVVnQkNnQ0NCRHVBaUFFUVFocUVGOGhBaUFFUVFFNkFCc2dCRUVJYWhENENBc2dBQ0FFUVFocUlBSVFNU0FFUVJ0cUVLSUJJQVJCSUdva0FBc25BQ0FBS0FJWVJRUkFJQUFnQVVHMnBoQWdBa0dpb0JCQkFDQUFLQUlBS0FLZ0FSRUNBQXNMSndBZ0FDZ0NJRVVFUUNBQUlBRkJqcVlRSUFKQm9xQVFRUUFnQUNnQ0FDZ0NvQUVSQWdBTEN5a0FJQUFvQWlCQkFVNEVRQ0FBSUFGQjU2VVFJQUpCb3FBUVFRQWdBQ2dDQUNnQ29BRVJBZ0FMQ3lZQUlBQW9BaGdFUUNBQUlBRkJ4S1VRSUFKQm9xQVFRUUFnQUNnQ0FDZ0NvQUVSQWdBTEN6c0JBWDhqQUVFUWF5SUVKQUFnQTBVRVFDQUVRZG5vRHpZQ0RDQUFJQUZCQVNBRVFReHFJQUlnQUNnQ0FDZ0NGQkVJQUFzZ0JFRVFhaVFBQ3pzQkFYOGpBRUVRYXlJRUpBQWdBMFVFUUNBRVFhZm9EellDRENBQUlBRkJBU0FFUVF4cUlBSWdBQ2dDQUNnQ0ZCRUlBQXNnQkVFUWFpUUFDMkFCQVg4akFFRVFheUlFSkFBZ0EwVUVRQ0FFUWNDbEVDZ0NBRFlDQ0NBRVFiaWxFQ2tDQURjREFDQUFJQUZCQXlBRUlBSWdBQ2dDQUNnQ0ZCRUlBQ0FBSUFGQkJpQUNFRW9nQUNBQlFRWkJrQU5CQUNBQ0VDZ0xJQVJCRUdva0FBcytBUUYvSXdCQkVHc2lCQ1FBSUFORkJFQWdCRUd3cFJBcEF3QTNBd2dnQUNBQlFRSWdCRUVJYWlBQ0lBQW9BZ0FvQWhRUkNBQUxJQVJCRUdva0FBdEdBQ0FBSUFBb0FnQW9BcmdCRVFBQUlBQWdBQ2dDQUNnQ3dBRVJBQUFnQUNBQUtBSUFLQUo0RVFBQUlBQVFrQUlnQUNnQ2lBRWdBQ0FBS0FJQUtBSUFFUUFBRVBrSUMwY0JBWDhqQUVFUWF5SUVKQUFnQTBVRVFDQUVRYWlsRUNnQ0FEWUNDQ0FFUWFDbEVDa0NBRGNEQUNBQUlBRkJBeUFFSUFJZ0FDZ0NBQ2dDRkJFSUFBc2dCRUVRYWlRQUMwY0JBWDhqQUVFUWF5SUVKQUFnQTBVRVFDQUVRWmlsRUNrREFEY0RDQ0FFUVpDbEVDa0RBRGNEQUNBQUlBRkJCQ0FFSUFJZ0FDZ0NBQ2dDRkJFSUFBc2dCRUVRYWlRQUMwY0JBWDhqQUVFUWF5SUVKQUFnQTBVRVFDQUVRWVNsRUNnQ0FEWUNDQ0FFUWZ5a0VDa0NBRGNEQUNBQUlBRkJBeUFFSUFJZ0FDZ0NBQ2dDRkJFSUFBc2dCRUVRYWlRQUN6Z0FJQU5GQkVBZ0FDQUJRUUZCK0tRUUlBSWdBQ2dDQUNnQ0ZCRUlBQ0FBSUFGQkJpQUNFRW9nQUNBQlFRWkJrQU5CQUNBQ0VDZ0xDejRCQVg4akFFRVFheUlFSkFBZ0EwVUVRQ0FFUWZDa0VDa0RBRGNEQ0NBQUlBRkJBaUFFUVFocUlBSWdBQ2dDQUNnQ0ZCRUlBQXNnQkVFUWFpUUFDMWNCQVg4akFFRVFheUlFSkFBZ0EwVUVRQ0FFUWVpa0VDa0RBRGNEQ0NBQUlBRkJBaUFFUVFocUlBSWdBQ2dDQUNnQ0ZCRUlBQ0FBSUFGQkJpQUNFRW9nQUNBQlFRWkJrQU5CQUNBQ0VDZ0xJQVJCRUdva0FBcytBUUYvSXdCQkVHc2lCQ1FBSUFORkJFQWdCRUhncEJBcEF3QTNBd2dnQUNBQlFRSWdCRUVJYWlBQ0lBQW9BZ0FvQWhRUkNBQUxJQVJCRUdva0FBdEhBUUYvSXdCQkVHc2lCQ1FBSUFORkJFQWdCRUhZcEJBcEF3QTNBd2dnQkVIUXBCQXBBd0EzQXdBZ0FDQUJRUVFnQkNBQ0lBQW9BZ0FvQWhRUkNBQUxJQVJCRUdva0FBdGVBUUovSXdCQklHc2lCQ1FBSUFSQkVHb1ExUUVpQlNBQ0VOY0RJQVZCdDZRUUVKSUJJQVVnQXhDU0FTQUVRZkNrRUNrREFEY0RDQ0FBSUFGQkFpQUVRUWhxSUFVUUV5QUFLQUlBS0FJVUVRZ0FJQVVRR1JvZ0JFRWdhaVFBQzJjQkFuOGpBRUVnYXlJRUpBQWdCRUVRYWhEVkFTSUZJQUlRMXdNZ0JVRzNwQkFRa2dFZ0JTQURFSklCSUFSQmhLVVFLQUlBTmdJSUlBUkIvS1FRS1FJQU53TUFJQUFnQVVFRElBUWdCUkFUSUFBb0FnQW9BaFFSQ0FBZ0JSQVpHaUFFUVNCcUpBQUxad0VDZnlNQVFTQnJJZ1FrQUNBRVFSQnFFTlVCSWdVZ0FoRFhBeUFGUWJla0VCQ1NBU0FGSUFNUWtnRWdCRUhFcEJBb0FnQTJBZ2dnQkVHOHBCQXBBZ0EzQXdBZ0FDQUJRUU1nQkNBRkVCTWdBQ2dDQUNnQ0ZCRUlBQ0FGRUJrYUlBUkJJR29rQUFzNEFRRi9Jd0JCRUdzaUFTUUFJQUZCOEtRUUtRTUFOd01JSUFCQkFpQUJRUWhxSUFBb0FnQW9BaVFSQndBaEFDQUJRUkJxSkFBZ0FBdEJBUUYvSXdCQkVHc2lBU1FBSUFGQmhLVVFLQUlBTmdJSUlBRkIvS1FRS1FJQU53TUFJQUJCQXlBQklBQW9BZ0FvQWlRUkJ3QWhBQ0FCUVJCcUpBQWdBQXRCQVFGL0l3QkJFR3NpQVNRQUlBRkJ4S1FRS0FJQU5nSUlJQUZCdktRUUtRSUFOd01BSUFCQkF5QUJJQUFvQWdBb0FpUVJCd0FoQUNBQlFSQnFKQUFnQUF0SEFRRi9Jd0JCRUdzaUJDUUFJQU5GQkVBZ0JFSEVwQkFvQWdBMkFnZ2dCRUc4cEJBcEFnQTNBd0FnQUNBQlFRTWdCQ0FDSUFBb0FnQW9BaFFSQ0FBTElBUkJFR29rQUFzVEFDQUFJQUZCQmtHUUEwSE0yUThnQWhBb0N5QUFJQUFnQVVFQlFZSUJRUUFnQWhBb0lBQWdBVUVJUWF3Q1FRQWdBaEFvQ3o4QUlBSkJsZWdQRUhwRkJFQWdBQ0FCUVpEZ0FFR2FwQkFRMGdFZ0FDQUJRUUpCd2dOQkFFR2FwQkFRS0NBQUlBRkJDRUhBQWtFQVFacWtFQkFvQ3dzeUFRRi9Jd0JCSUdzaUFpUUFJQUpCQ0dvZ0FFSEVBR29nQWtFUWFpQUJFR2tpQUJEUkRTQUFFQ0FhSUFKQklHb2tBQXRHQUNBQUlBTVFvZ1lnQUVGL05nSnNJQUFnQVRZQ2FDQUFRYVNSQ1RZQ0FDQUFRZkFBYWhEVkFTRUJJQUJCZ0FGcUVLY0hHaUFBUVFBMkFvZ0JJQUVnQWhEb0FpQUFDNXdEQVFOL0l3QkJJR3NpQXlRQUFrQWdBVUdib3hBUWVrVUVRQ0FDUVg5cVFRRk5CRUFnQUNBQUVOY0JRWitqRUVHUW94QkJvcUFRUVFBZ0FDZ0NBQ2dDb0FFUkFnQU1BZ3NnQXlBQVFTeHFJZ0FRMFFJMkFnZ2dBeUFBRUg0MkFoZ2dBMEVJYWlBRFFSaHFFSWdCUlEwQkEwQWdBMEVJYWhCWElBSTJBaEFnQTBFSWFoQ3BBU0FESUFBUWZqWUNHQ0FEUVFocUlBTkJHR29RaUFFTkFBc01BUXNnQXlBQVFTeHFJZ1FnQTBFSWFpQUJFQ0lpQlJERUJUWUNHQ0FGRUJrYUlBTWdCQkIrTmdJSUFrQWdBMEVZYWlBRFFRaHFFTGdEQkVBZ0FrRi9haUlDUVFOTERRRUNRQUpBSUFKQkFXc09Bd0VCQVFBTElBQWdBQkRYQVVIYW94QkJrS01RSUFGQkFDQUFLQUlBS0FLZ0FSRUNBQXdDQ3lBQUlBQVExd0ZCMnFNUVFaQ2pFQ0FCUVFBZ0FDZ0NBQ2dDcEFFUkFnQU1BUXNnQTBFWWFoQlhLQUlRUVFWR0JFQWdBQ0FBRU5jQlFmT2pFRUdRb3hBZ0FVRUFJQUFvQWdBb0FxUUJFUUlBQ3lBQ1FYOXFRUUZOQkVBZ0FDZ0NLQ0FCRU5NWUN5QURRUmhxRUZjZ0FqWUNFQXNnQTBFZ2FpUUFEd3NnQTBFZ2FpUUFDL3dHQVFGL0FrQUNRQUpBQWtBQ2YwRUJRZHlpRUNBREVIcEZEUUFhUVFKQjVLSVFJQU1RZWtVTkFCcEJCRUhyb2hBZ0F4QjZSUTBBR2tIem9oQWdBeEI2RFFGQkF3c2hCQ0FBSUFBUTF3RWdBaUFBS0FJQUtBSTBFUVlBSUFBZ0FpQUVJQUFvQWdBb0Fpd1JCZ0FnQWtINjZBOFFla1VFUUNBQUlBRkJtdWtQSUFNZ0FDZ0NBQ2dDS0JFRUFDQUFJQUZCdWVrUElBTWdBQ2dDQUNnQ0tCRUVBQ0FBSUFGQjBla1BJQU1nQUNnQ0FDZ0NLQkVFQUNBQUlBRkI3T2tQSUFNZ0FDZ0NBQ2dDS0JFRUFDQUFJQUZCbE9vUElBTWdBQ2dDQUNnQ0tCRUVBQ0FBSUFGQndPb1BJQU1nQUNnQ0FDZ0NLQkVFQUNBQUlBRkI4dW9QSUFNZ0FDZ0NBQ2dDS0JFRUFDQUFJQUZCaGVzUElBTWdBQ2dDQUNnQ0tCRUVBQ0FBSUFGQm8rc1BJQU1nQUNnQ0FDZ0NLQkVFQUNBQUlBRkJ1K3NQSUFNZ0FDZ0NBQ2dDS0JFRUFDQUFJQUZCOWVzUElBTWdBQ2dDQUNnQ0tCRUVBQ0FBSUFGQmkrd1BJQU1nQUNnQ0FDZ0NLQkVFQUE4TElBSkJ3T29QRUhwRkJFQU1BZ3NnQWtHcDdBOFFla1VFUUF3REN5QUNRYnZyRHhCNlJRUkFEQUlMSUFKQnBPMFBFSHBGQkVBTUF3c2dBa0g3NFE4UWVrVUVRQ0FBSUFGQjJPRVBJQU1nQUNnQ0FDZ0NLQkVFQUE4TElBSkJpOXdQRUhwRkJFQU1CQXNnQWtHbjNBOFFla1VFUUF3RUN5QUNRY25jRHhCNlJRUkFEQVFMSUFKQjU5d1BFSHBGQkVBTUJBc2dBa0dHM1E4UWVrVUVRQXdFQ3lBQ1FhN2REeEI2UlFSQURBUUxJQUpCejkwUEVIcEZCRUFNQkFzZ0FrSG01ZzhRZWtVRVFBd0VDd0pBSUFKQngrQVBFSG9FUUNBQ1FlRGdEeEI2RFFFTElBQWdBVUd2NEE4Z0F5QUFLQUlBS0FJb0VRUUFEd3NnQWtIWjZBOFFla1VFUUNBQUlBRkJwK2dQSUFNZ0FDZ0NBQ2dDS0JFRUFBOExJQUpCNXZFUEVIcEZCRUFnQUNBQlFaL3ZEeUFESUFBb0FnQW9BaWdSQkFBUEN5QUNRWkh5RHhCNlJRUkFJQUFnQVVITTd3OGdBeUFBS0FJQUtBSW9FUVFBRHdzZ0FrRzk4ZzhRZWtVRVFDQUFJQUZCcVBBUElBTWdBQ2dDQUNnQ0tCRUVBQThMSUFKQjZmSVBFSHBGQkVBZ0FDQUJRZGJ3RHlBRElBQW9BZ0FvQWlnUkJBQUxEd3NnQUNBQUVOY0JRZmlpRUVHUW94QWdBMEVBSUFBb0FnQW9BcUFCRVFJQUR3c2dBQ0FCUWFQckR5QURJQUFvQWdBb0FpZ1JCQUFQQ3lBQUlBRkJqTzBQSUFNZ0FDZ0NBQ2dDS0JFRUFBOExJQUFnQVVIdTJ3OGdBeUFBS0FJQUtBSW9FUVFBQzBBQkFYOENRQ0FCUVFGSURRQURRQ0FBSUFJZ0EwRUNkR29vQWdBZ0FDZ0NBQ2dDSUJFREFFVUVRQ0FCSUFOQkFXb2lBMGNOQVF3Q0N3dEJBUThMUVFBTEZ3QWdBQ0FCSUFBb0FnQW9BaHdSQXdCQmYycEJBMGtMWHdFQmZ5TUFRU0JySWdJa0FDQUNJQUJCTEdvaUFDQUNRUWhxSUFFUUlpSUJFTVFGTmdJWUlBRVFHUm9nQWlBQUVINDJBZ2hCQUNFQklBSkJHR29nQWtFSWFoQzRBMFVFUUNBQ1FSaHFFRmNvQWhBaEFRc2dBa0VnYWlRQUlBRUxqUUVBQWtBZ0FDQUJJQUlnQXlBRUlBQW9BZ0FvQWpBUkNnQU5BQ0FDUVFGR0JFQWdBQ0FCUVoyaUVDQUVJQU1vQWdCQkFDQUFLQUlBS0FLb0FSRUNBQThMSUFBZ0FVR2RvaEFnQkVHL29oQkJBQ0FBS0FJQUtBS29BUkVDQUNBQ1FRRklEUUJCQUNFQkEwQWdBQ2dDREVFQUlBTWdBVUVDZEdvb0FnQVF1d0VnQVVFQmFpSUJJQUpIRFFBTEN3dU5BUUFDUUNBQUlBRWdBaUFESUFRZ0FDZ0NBQ2dDTUJFS0FBMEFJQUpCQVVZRVFDQUFJQUZCbmFJUUlBUWdBeWdDQUVFQUlBQW9BZ0FvQXFBQkVRSUFEd3NnQUNBQlFaMmlFQ0FFUWIraUVFRUFJQUFvQWdBb0FxQUJFUUlBSUFKQkFVZ05BRUVBSVFFRFFDQUFLQUlNUVFBZ0F5QUJRUUowYWlnQ0FCQzdBU0FCUVFGcUlnRWdBa2NOQUFzTEM2MENBUVYvSXdCQlFHb2lCU1FBQWtBQ1FDQUNRUUZJRFFBRFFFRUJJUWNnQUNBRElBWkJBblJxS0FJQUlBQW9BZ0FvQWh3UkF3QkJmMnBCQVUwTkFpQUdRUUZxSWdZZ0FrY05BQXNnQWtFQlNBMEFRUUFoQmtFQUlRY0RRQUpBSUFBZ0F5QUdRUUowYWlJSUtBSUFJQUFvQWdBb0Fod1JBd0JCZldvaUNVRUJTdzBBSUFsQkFXdEZCRUFnQUJDUUEwVU5BU0FBS0FJTVFRRkI0S0VRSUFFUTFnUUxJQUFvQWd3aENTQUZRUkJxSUFVZ0NDZ0NBQkFpSWdnUTBnMGdCVUVnYWlBRlFSQnFRZFdmRUJEWUF5QUZRVEJxSUFWQklHb2dCQkRZQTBFQklRY2dDVUVCSUFWQk1Hb1FFeUFCRU5ZRUlBVkJNR29RR1JvZ0JVRWdhaEFaR2lBRlFSQnFFQmthSUFnUUdSb0xJQVpCQVdvaUJpQUNSdzBBQ3d3QkMwRUFJUWNMSUFWQlFHc2tBQ0FIQzNJQkFYOGpBRUhRQUdzaUJTUUFBa0FnQWlBQUtBSUlJZ0p4UlEwQUlBQW9BaEFnQTBnTkFDQUNFSXdPSVFJZ0JTQUROZ0lFSUFVZ0FqWUNBQ0FGUVJCcVFUeEJwNkVRSUFVUUp4b2dBQ0FCUWNtaEVDQUVJQVZCRUdwQkFDQUFLQUlBS0FLZ0FSRUNBQXNnQlVIUUFHb2tBQXZWQVFFQmZ5TUFRZEFBYXlJRkpBQUNRQ0FBS0FJSUlBSnhSUTBBSUFBb0FoQWdBMGdOQUNBQUxRQUVCRUFnQUNBQlFiK2dFQ0FFUWFLZ0VFRUFJQUFvQWdBb0FxQUJFUUlBREFFTElBQVFoUW9OQUNBQUtBSU1JUUFnQlVFZ2FpQUZRUkJxSUFRUUlpSUNRZXlnRUJEWUF5QUZJQU1RaEE0Z0JVRXdhaUFGUVNCcUlBVVFpUUVRc0FNZ0JVRkFheUFGUVRCcVFZU2hFQkRZQXlBQVFRRWdCVUZBYXhBVElBRVExZ1FnQlVGQWF4QVpHaUFGUVRCcUVCa2FJQVVRR1JvZ0JVRWdhaEFaR2lBQ0VCa2FDeUFGUWRBQWFpUUFDeDRBSUFBZ0FVR2pvQkFnQWtHaW9CQkJBQ0FBS0FJQUtBS2dBUkVDQUF2SkFnRUJmeU1BUVNCcklnSWtBQUpBSUFBUU13UkFJQUZCbC9NUEVHZ2dBQkF6UlEwQklBQW9BaEJCckFKSURRRWdBVUh5L0E4UTR3SU1BUXNnQVVHbS9ROFFhQ0FBS0FJUVFaWUJTQTBBSUFGQjhKb1FFT01DSUFBb0FnaEJCRWNOQUNBQlFZdWJFQkRqQWdzQ1FBSkFJQUFRTTBVRVFDQUFLQUlRUVlzQlNnMEJDeUFBRURORkRRRWdBQ2dDRUVHMkFrZ05BUXNnQVVHdm14QVE0d0lMSUFBb0FoQkJyQUpPQkVBZ0FVR01uQkFRNHdJTElBRkJ4SndRRU9NQ0lBQW9BaHhCQVU0RVFDQUJRY0dkRUJEakFpQUNJQUFvQWh3MkFoQWdBa0VVYWtFTVFkR2RFQ0FDUVJCcUVDY2FJQUVnQWtFVWFoRGpBaUFCUWRTZEVCRGpBZ3NnQUNnQ0pFRUJUZ1JBSUFGQjFwMFFFT01DSUFJZ0FDZ0NKRFlDQUNBQ1FSUnFRUXhCMFowUUlBSVFKeG9nQVNBQ1FSUnFFT01DSUFGQjFKMFFFT01DQ3lBQ1FTQnFKQUFMZ2dFQkFuOGpBRUVnYXlJRkpBQWdBU0FGUVJ4cUlBSVFvUWtpQmlnQ0FDRUNJQVZCQURvQUd5QUNSUVJBSUFWQkNHb2dBVUhZcUJBZ0F5QUVFTFFZSUFFZ0JTZ0NIQ0FHSUFVb0FnZ1FwQVFnQlVFSWFoQmZJUUlnQlVFQk9nQWJJQVZCQ0dvUW9Ba0xJQUFnQlVFSWFpQUNFREVnQlVFYmFoQ2lBU0FGUVNCcUpBQUw4UmtCQW44akFFRVFheUlDSkFBZ0FFRXNhaUlBSUFKQnZOTVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCenRNUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI2dE1QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQi9OTVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbHRRUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ0dFFQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnlOUVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNHRRUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIrZFFQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmt0VVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCcDlVUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ4OVVQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjNkVVBFQ0lpQVJBcFFRVTJBZ0FnQVJBWkdpQUFJQUpCOE5VUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJqOVlQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnBkWVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCd05ZUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIyTllQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjl0WVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCa2RjUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJxOWNQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnk5Y1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCN05jUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJpOWdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnFkZ1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCeDlnUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI0TmdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQit0Z1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbnRrUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ0TmtQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnpOa1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNDlrUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIrTmtQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmo5b1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCcTlvUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ5Tm9QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjQ5b1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCaHRzUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJwOXNQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnU5c1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMk5zUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI3dHNQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmk5d1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCcDl3UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ5ZHdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjU5d1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCaHQwUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJydDBQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQno5MFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNjkwUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJpZDRQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnBONFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMDk0UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI5dDRQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmtkOFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCc044UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ6TjhQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjhkOFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCak9BUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJyK0FQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQngrQVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNE9BUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIvdUFQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQm9lRVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCdmVFUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIyT0VQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQisrRVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbCtJUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJyT0lQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnllSVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCOGVJUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJnK01QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQm9PTVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCditNUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIxK01QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQit1TVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbHVRUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ1ZVFQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjNPUVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCZ09VUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJvdVVQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnVPVVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMU9VUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIrZVVQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmsrWVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCdmVZUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI1dVlQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmlPY1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCb2VjUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJzK2NQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjFlY1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCOXVjUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJsZWdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnArZ1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCd09nUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIyZWdQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQit1Z1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbXVrUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ1ZWtQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjBla1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCN09rUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJsT29QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQndPb1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMStvUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI4dW9QRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmhlc1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCbytzUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ1K3NQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjF1c1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCOWVzUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJpK3dQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnFld1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCd093UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIyK3dQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjd1d1BFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCak8wUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJwTzBQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnYrMFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCM3UwUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI5TzBQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQmt1NFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCcHU0UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJ0KzRQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQjFPNFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNWU0UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkI5KzRQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQm4rOFBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCek84UEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkIrdThQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnFQQVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCMXZBUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJodkVQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnR2RVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNXZFUEVDSWlBUkFwUVFRMkFnQWdBUkFaR2lBQUlBSkJrZklQRUNJaUFSQXBRUVEyQWdBZ0FSQVpHaUFBSUFKQnZmSVBFQ0lpQVJBcFFRUTJBZ0FnQVJBWkdpQUFJQUpCNmZJUEVDSWlBQkFwUVFRMkFnQWdBQkFaR2lBQ1FSQnFKQUFMNEFFQkFuOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUFrQWdBQ2dDQkNJRFJRUkFJQUFvQWdBaEF3d0JDeUFDUVNBZ0EyczJBZ2dnQWtFSWFpQUNRUXhxRUtRQklRRWdBQ2dDQUNJRElBTW9BZ0JCZnlBQUtBSUVkRUYvSUFJb0FnZ2dBU2dDQUNJQmEzWnhRWDl6Y1RZQ0FDQUNJQUlvQWd3Z0FXc2lBVFlDRENBQUlBTkJCR29pQXpZQ0FBc2dBMEVBSUFGQkJYWkJBblFpQXhEZEFSb2dBaUFDS0FJTUlBRkJZSEZySWdFMkFnd2dBUVJBSUFBZ0FDZ0NBQ0FEYWlJQU5nSUFJQUFnQUNnQ0FFRi9RU0FnQVd0MlFYOXpjVFlDQUFzZ0FrRVFhaVFBQzlzQkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RBSkFJQUFvQWdRaUEwVUVRQ0FBS0FJQUlRTU1BUXNnQWtFZ0lBTnJOZ0lJSUFKQkNHb2dBa0VNYWhDa0FTRUJJQUFvQWdBaUF5QURLQUlBUVg4Z0FDZ0NCSFJCZnlBQ0tBSUlJQUVvQWdBaUFXdDJjWEkyQWdBZ0FpQUNLQUlNSUFGcklnRTJBZ3dnQUNBRFFRUnFJZ00yQWdBTElBTkIvd0VnQVVFRmRrRUNkQ0lERU4wQkdpQUNJQUlvQWd3Z0FVRmdjV3NpQVRZQ0RDQUJCRUFnQUNBQUtBSUFJQU5xSWdBMkFnQWdBQ0FBS0FJQVFYOUJJQ0FCYTNaeU5nSUFDeUFDUVJCcUpBQUxQZ0VCZnlNQVFSQnJJZ01rQUFKQUlBRkZEUUFnQWdSQUlBTkJDR29nQUJDUkFpQUJFT1FZREFFTElBTWdBQkNSQWlBQkVPTVlDeUFEUVJCcUpBQUxVUUVCZnlBQUVJc0VJQUFRT3lBQUtBSUFJQUFvQWdRZ0FVRUVhaUlDRU5ZTklBQWdBaEF1SUFCQkJHb2dBVUVJYWhBdUlBQVFHeUFCRUNNUUxpQUJJQUVvQWdRMkFnQWdBQ0FBRUtjQkVQa0ZDeTBBSUFFZ0FDZ0NDRWNFUUFOQUlBQW9BaEFhSUFBZ0FDZ0NDRUYwYWpZQ0NDQUFLQUlJSUFGSERRQUxDd3NOQUNBQUlBRkJCSFJxUVJScUN5WUJBWDhnQVNBQWF5SUJRUXh0SVFNZ0FRUkFJQUlnQUNBQkVPUURDeUFDSUFOQkRHeHFDem9CQVg4Z0FTQUNSd1JBSUFNb0FnQWhCQU5BSUFBZ0JDQUJFSWdFSUFNZ0F5Z0NBRUVNYWlJRU5nSUFJQUZCREdvaUFTQUNSdzBBQ3dzTGFRRUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnQWdBeUFCTmdJSUlBQW9BaEFoQVNBRFFRaHFJQU1RcmdZRVFBTkFJQUVnQUNnQ0NDQURLQUlJRUlnRUlBQWdBQ2dDQ0VFTWFqWUNDQ0FEUVFocUVKd0ZJQU5CQ0dvZ0F4Q3VCZzBBQ3dzZ0EwRVFhaVFBQzBNQkFYOGpBRUVRYXlJQkpBQWdBQkE3R2lBQlFkV3ExYW9CTmdJTUlBRkIvLy8vL3djMkFnZ2dBVUVNYWlBQlFRaHFFS1FCS0FJQUlRQWdBVUVRYWlRQUlBQUxhUUVDZnlBQUVJc0VJQUVvQWdRaEF5QUFFRHNnQUNnQ0FDQUNJQUZCQkdvaUJCRFdEU0FBRURzZ0FpQUFLQUlFSUFGQkNHb2lBaERxR0NBQUlBUVFMaUFBUVFScUlBSVFMaUFBRUJzZ0FSQWpFQzRnQVNBQktBSUVOZ0lBSUFBZ0FCQ25BUkQ1QlNBREM2d0NBUVovSXdCQk1Hc2lBeVFBQWtBZ0FDZ0NDQ0FBRUNNb0FnQkhEUUFnQUVFSWFpRUVJQUJCQkdvaEJTQUFLQUlFSWdJZ0FDZ0NBQ0lHU3dSQUlBUWdBaUFFS0FJQUlBSWdBaUFHYTBFTWJVRUJha0YrYlVFTWJDSUVhaERwR0RZQ0FDQUZJQVVvQWdBZ0JHbzJBZ0FNQVFzZ0F5QUFFQ01vQWdBZ0FDZ0NBR3RCREcxQkFYUTJBaGdnQTBFQk5nSXNJQU5CR0dvZ0EwRVlhaUFEUVN4cUVGSW9BZ0FpQWlBQ1FRSjJJQUFvQWhBUSt3Z2hBaUFEUVJCcUlBQW9BZ1FRTVNFR0lBTkJDR29nQUNnQ0NCQXhJUWNnQWlBR0tBSUFJQWNvQWdBUTZ4Z2dBQ0FDRUM0Z0JTQUNRUVJxRUM0Z0JDQUNRUWhxRUM0Z0FCQWpJQUlRSXhBdUlBSVErZ2dMSUFBb0FoQWdBQ2dDQ0NBQkVJZ0VJQUFnQUNnQ0NFRU1hallDQ0NBRFFUQnFKQUFMYVFFQ2Z5QUJJQUFvQWdRaUJTQURhMEVNYlVFTWJHb2lCQ0FDU1FSQUlBUWhBd05BSUFBUU95QUFLQUlFSUFNUWlBUWdBQ0FBS0FJRVFReHFOZ0lFSUFOQkRHb2lBeUFDU1EwQUN3c2dCQ0FCYXlJQUJFQWdCU0FBUVhSdFFReHNhaUFCSUFBUTVBTUxDN0VCQVFSL0l3QkJFR3NpQmlRQUlBQVFIeUlEUVFCUEJFQUNRQ0FBRUYwaUJTQURheUFDVHdSQUlBSkZEUUVnQUJBVElnUWdBeUlGQkg4Z0FpQUVhaUFFSUFVUWdRWWdBU0FDYWlBQklBTWdCR29nQVVzYklBRWdCQ0FCVFJzRklBRUxJQUlRZ1FZZ0FDQUNJQU5xSWdFUWh3TWdCa0VBT2dBUElBRWdCR29nQmtFUGFoQ1VBUXdCQ3lBQUlBVWdBaUFEYWlBRmF5QURRUUJCQUNBQ0lBRVFyZ2tMSUFaQkVHb2tBQ0FBRHdzUWJnQUxOZ0VCZnlBQklBQW9BZ2hIQkVBRFFDQUFLQUlRR2lBQUlBQW9BZ2hCY0dvaUFqWUNDQ0FDRU5zQklBQW9BZ2dnQVVjTkFBc0xDem9BSUFFZ0FrY0VRQ0FES0FJQUlRQURRQ0FBUVhCcUlBSkJjR29pQWhET0Job2dBeUFES0FJQVFYQnFJZ0EyQWdBZ0FTQUNSdzBBQ3dzTExBQWdBQ2dDQUJvZ0FDZ0NBQ0FBRUxrRFFRUjBhaG9nQUNnQ0FCb2dBQ2dDQUNBQUVLZ0JRUVIwYWhvTE1RRUJmeUFCSUFBb0FnUWlBa2NFUUFOQUlBQVFPeG9nQWtGd2FpSUNFTnNCSUFFZ0FrY05BQXNMSUFBZ0FUWUNCQXRSQVFGL0lBQVE5d1VnQUJBN0lBQW9BZ0FnQUNnQ0JDQUJRUVJxSWdJUThoZ2dBQ0FDRUM0Z0FFRUVhaUFCUVFocUVDNGdBQkFiSUFFUUl4QXVJQUVnQVNnQ0JEWUNBQ0FBSUFBUXFBRVFud1lMeFFRQkFYOGpBRUhnQUdzaUJ5UUFBa0FnQWtFSVJpQUJRZEo4YWtFSlMzSkZCRUFnQlVHMDVRaEJBVUhVNVFnUUhTQUZRZGpsQ0VFQlFkVGxDQkFkUVFBaEFBd0JDeUFDUVFoR0lBRkIvbjVxUWFFQ1MzSkZCRUFnQlVHRjVnaEJBVUdnNWdnUUhTQUZRYVRtQ0VFQlFhRG1DQkFkQ3lBQlFhUURTQ0VBSUFKQkNFWWdBVUhxZm1wQmd3SkxjZzBBSUFWQnZlWUlRUUZCL0tvSUVCMExBa0FnQkVGL2FpSUVRUU5MRFFBQ1FBSkFJQVJCQW1zT0FnSUFBUXNDUUNBQlFlUUFSZzBBSUFFZ0FpQURFT1VDSVFFZ0FrRUlSeUFBY1EwQUlBRkZEUUlMSUFkQkNHcEJBVUVaSUFKQkNFWkJBWFJCQkJEOENDRUFRUkFRUmhDekF5SUJJQVlvQWl3UTNnNGdBQ0FCRUpBRVFZQUJFRVlpQVVITjVnZ1F3Z0VnQUVFQUVPMENHaUFGSUFFUTdBSWFRYzNtQ0VFWlFjSUFJQVVRM3dFZ0FCQTFHZ3dCQzBHb3FBaEJqNmdJUVI0Z0JSQldRYWlvQ0VHYnFBaEJIeUFGRUZaQnFLZ0lRY09vQ0VFaElBVVFWa0dvcUFoQjA2Z0lRU0lnQlJCV1FhaW9DRUcxcUFoQklDQUZFRlpCcUtnSVFZQ3JDRUV0SUFVUVZrR29xQWhCanFzSVFTNGdCUkJXUWFpb0NFR2Jxd2hCTHlBRkVGWkJxS2dJUWJLckNFRXdJQVVRVmtHb3FBaEJ5S3NJUVRFZ0JSQldRYWlvQ0VIVXF3aEJNaUFGRUZZZ0JVR29xQWhCektrSVFRRkI1S2tJRUxNQklBVkJxS2dJUVlPcUNFRUJRWmlxQ0JDekFVR29xQWhCektrSVFkVUFJQVVRVmtHb3FBaEJnNm9JUWRjQUlBVVFWaUFDUVFoSERRQWdCVUdvcUFoQm02Z0lRUUpCN0tzSUVMTUJDeUFIUWVBQWFpUUFDekVCQVg4Z0FDZ0NFQm9nQUNnQ0NDRUNBMEFnQWhEWURTQUFJQUFvQWdoQkVHb2lBallDQ0NBQlFYOXFJZ0VOQUFzTE9nRUJmeU1BUVJCcklnSWtBQ0FBRURzYUEwQWdBQ2dDQkJEWURTQUFJQUFvQWdSQkVHbzJBZ1FnQVVGL2FpSUJEUUFMSUFKQkVHb2tBQXVLQVFFQ2Z5TUFRU0JySWdNa0FBSkFJQUFRR3lnQ0FDQUFLQUlFYTBFRWRTQUJUd1JBSUFBZ0FSRDRHQXdCQ3lBQUVEc2hBaUFEUVFocUlBQWdBQkNvQVNBQmFoRGFEU0FBRUtnQklBSVEyUTBpQWlBQkVQY1lJQUFnQWhEMUdDQUNJQUlvQWdRUThSZ2dBaWdDQUFSQUlBSW9BaEFhSUFJb0FnQWFJQUlRL2dnYUN3c2dBMEVnYWlRQUN5d0JBWDhnQVNBQUtBSUVJZ0pIQkVBRFFDQUFFRHNhSUFKQmRHb2lBaUFCUncwQUN3c2dBQ0FCTmdJRUN4d0JBWDhnQUNnQ0ZDSUJJQUFvQWhnZ0FTZ0NBQ2dDaEFFUkF3QUxIQUVCZnlBQUtBSVVJZ0VnQUNnQ0dDQUJLQUlBS0FLQUFSRURBQXNmQVFGL0lBQW9BaFFpQXlBQUtBSVlJQUVnQWlBREtBSUFLQUo0RVFRQUN4OEFJQUFnQUNnQ0FDZ0NrQUVSQUFBZ0FDQUFLQUlBS0FLVUFSRUFBR3NMQ0FBZ0FDZ0NsQUVMQ2dBZ0FFRVVhaENuQVFzSUFDQUFMUUNUQVFzS0FDQUFRUUU2QUpNQkN3Z0FJQUF0QUpJQkN3b0FJQUJCQVRvQWtnRUxDQUFnQUMwQWtRRUxDZ0FnQUVFQk9nQ1JBUXNJQUNBQUxRQ1FBUXNJQUNBQUtBS01BUXNLQUNBQUlBRTJBb3dCQ3djQUlBQW9BbmdMa0FFQkEzOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQVFIeUlEUVFCUEJFQWdBUVJBSUFBUUV5RUJJQUlnQXpZQ0NDQUNJQUpCREdvZ0FrRUlhaENrQVNnQ0FDSUVOZ0lNSUFBZ0F5QURJQVJySWdBRWZ5QUJJQUVnQkdvZ0FCQ0JCaUFDS0FJTUJTQUVDMnNpQUJDSEF5QUNRUUE2QUFjZ0FDQUJhaUFDUVFkcUVKUUJDeUFDUVJCcUpBQVBDeEJ1QUFzUEFDQUFRZndBYWlBQkVCOFFpeGtMK1FFQkFuOGpBRUVnYXlJREpBQWdBeUFCTmdJWUlBQW9BZ0FoQVNBRElBQVFRRFlDQUNBQklBTkJHR29nQXhEOUNFRU1iR29oQVFKQUlBQW9BZ1FnQUJBYktBSUFTUVJBSUFBb0FnUWlCQ0FCUmdSQUlBQVFPeUFBS0FJRUlBSVFpQVFnQUNBQUtBSUVRUXhxTmdJRURBSUxJQUFnQVNBRUlBRkJER29RN3hnZ0FTQUNUUVJBSUFKQkRHb2dBaUFDSUFBb0FnUkpHeUVDQ3lBQklBSXBBZ0EzQWdBZ0FTQUNLQUlJTmdJSURBRUxJQUFRT3lFRUlBTWdBQ0FBRUtjQlFRRnFFTmNOSUFFZ0FDZ0NBR3RCREcwZ0JCRDdDQ0lFSUFJUTdoZ2dBQ0FFSUFFUTdSZ2hBU0FFRVBvSUN5QUJFR0VhSUFOQklHb2tBQXR1QVFKL0l3QkJJR3NpQXlRQUlBTWdBaERDQVRZQ0VFSFVBQkJHSWdKQkFFRUFRUUZCQUVFQVFRQVFSU0VFSUFOQkFEWUNHQ0FESUFJMkFoUWdCQ0FCRUk4QklBTWdBRUVVYWlJQUVFQTJBZ0FnQUNBRFFRaHFJQU1RWnlnQ0FDQURRUkJxRUkwWklBTkJJR29rQUFzOEFRRi9JQUJCRkdvZ0FSRGtEU0FCS0FJRUlBQkIvQUJxSWdJUTZBMGdBa0U3RU9jQ0lBRW9BZ2dFUUNBQUlBQW9BcFFCUVFGcU5nS1VBUXNMQ0FBZ0FFSDhBR29MRlFBZ0FDQUJFTUVPSUFCQi9BQnFJQUVRM2cwYUN3OEFJQUFvQW5nZ0FSREVBU2dDQUFzWkFDQUFLQUo0SWdCRkJFQkJBQThMSUFBZ0FSREVBUkFXQ3dvQUlBQW9BbmhCQUVjTFJnRUJmeUFBRUtnQklnSWdBVWtFUUNBQUlBRWdBbXNRK1JnUEN5QUNJQUZMQkVBZ0FDZ0NBQ0FCUVFSMGFpRUJJQUFRcUFFaEFpQUFJQUVROUJnZ0FDQUNFUE1ZQ3d0VkFRRi9JQUFvQW5oRkJFQWdBRUVBRU1BT0lnUTJBbmdnQkNBQUtBSlVFRGNRbFJrTElBSkJBVTRFUUVFQUlRUURRQ0FBS0FKNElBRVF4QUVnQXlBRVFRSjBhaERjQVNBRVFRRnFJZ1FnQWtjTkFBc0xDd2NBSUFBb0Fud0xDUUFnQUNBQk5nSjhDdzBBSUFCQjdBQnFJQUVRM0FRTEJ3QWdBQzBBYUFzSUFDQUFFTjhOR2d0NEFRUi9Jd0JCRUdzaUF5UUFJQUFnQUNnQ0JDSUVJQUZxSWdVMkFnUWdCRUVBSUFWQmYyb2dCRUYvYW5OQklFa2JSUVJBSUFBb0FnQWlCaUFHSUFWQmYycEJBM1pCL1AvLy93RnhhaUFGUVNGSkcwRUFOZ0lBQ3lBRFFRaHFJQUFnQkJDSEJ5QURRUWhxSUFFZ0FoRGxHQ0FEUVJCcUpBQUx1Z0lCQm44akFFRWdheUlDSkFCQkhCQkdJZ0VRL2cwaEJTQUJJQUFvQWhRMkFoUWdBU0FBTFFBWU9nQVlJQUFvQWhRaEFTQUNRUUE2QUFBZ0FrRVFhaUFCSUFJUTR3MGhCaUFDUVFocUlnTWdBQkRSQWpZQ0FDQUNJQUFRZmpZQ0FDQURJQUlRaUFFRVFBTkFBa0FnQXhCWEtBSVFJZ0VnQVNnQ0FDZ0NMQkVBQUNJQkJFQWdBaUFHSUFFZ0FTZ0NBQ2dDWUJFQUFCQ2FCU0FDRUlFSkRRRWdBU0FCS0FJQUtBSllFUUFBSWdRZ0JDZ0NBQ2dDQUJFQUFDSUVRWkhQRHhEQ0FTQUVLQUlBS0FJUUVRRUFJQVVnQkVFQUVLWUhHaUFDSUFZZ0FTQUJLQUlBS0FKZ0VRQUFFSm9GSUFKQkFSQ0pCd3dCQ3lBRklBTVFWeWdDRUNJQklBRW9BZ0FvQWdBUkFBQkJBQkNtQnhvTElBTVFxUUVnQWlBQUVINDJBZ0FnQXlBQ0VJZ0JEUUFMQ3lBR0VJZ0hJQUpCSUdva0FDQUZDd3dBUVpnQkVFWWdBQkNoR1F0WkFRSi9Jd0JCSUdzaUF5UUFJQUFRT3lJQ0lBTkJDR29nQUNBQUVLY0JRUUZxRU5jTklBQVFwd0VnQWhEN0NDSUNLQUlJSUFFUWlBUWdBaUFDS0FJSVFReHFOZ0lJSUFBZ0FoRG1HQ0FDRVBvSUlBTkJJR29rQUFzM0FRRi9JQUFDZjBFQUlBRW9BZ0FpQWtVTkFCb2dBaEFURU1JQkN6WUNBQ0FBSUFFb0FnUVF6UWsyQWdRZ0FDQUJLQUlJTmdJSUM2VUNBUWQvSXdCQkVHc2lBeVFBSUFBZ0FSRGxEU0VHSUFCQnZNOFBOZ0lBSUFCQkZHb1Frd0VoQkNBQVFTUnFRUUJCQUVFQlFRQkJBRUVBRUVVaEJ5QUFRZndBYWhEVkFTRUlJQUZCRkdvaUJSQ25BUVJBQTBBZ0JDQURFT1FOSUFRUStBVWdCU0FDRU5RREVLQVpJQUpCQVdvaUFpQUZFS2NCU1EwQUN3c2dBRUVBTmdJTUlBRWdBU2dDQUNnQ1JCRUFBRUVBU2dSQUlBWWdBU0FCS0FJQUtBSkVFUUFBSUFFZ0FTZ0NBQ2dDU0JFQUFDQUFLQUlBS0FKQUVRWUFDeUFISUFGQkpHb1FpQVlnQ0NBQlFmd0FhaERvQWlBQUlBRW9Bb3dCTmdLTUFTQUFJQUV0QUpBQk9nQ1FBU0FBSUFFdEFKRUJPZ0NSQVNBQUlBRXRBSklCT2dDU0FTQUFJQUV0QUpNQk9nQ1RBU0FBSUFFb0FwUUJOZ0tVQVNBRFFSQnFKQUFnQUFzTUFFR0FBUkJHSUFBUW94a0x4d0lCQkg4akFFRVFheUlFSkFBZ0FDQUJFT1VOSVFJZ0FFSG8wQTgyQWdBZ0FFRVVha0VBUVFCQkFVRUFRUUJCQUJCRklRTWdBRUhzQUdvUXB3Y2hCU0FESUFGQkZHb2lBeENJQmlBQUlBRXRBR2c2QUdnZ0FFSUFOd0owSUFCQkFEWUNEQ0FCSUFFb0FnQW9Ba1FSQUFCQkFVNEVRQ0FDSUFFZ0FTZ0NBQ2dDUkJFQUFDQUJJQUVvQWdBb0FrZ1JBQUFnQUNnQ0FDZ0NRQkVHQUFzQ1FDQUJJQUVvQWdBb0Fud1JBQUJGRFFBZ0F5Z0NRQkEzUVFGSURRQkJBQ0VDQTBBZ0FTQUNJQUVvQWdBb0FvQUJFUU1BUVFGT0JFQWdBQ0FDSUFFZ0FpQUJLQUlBS0FLQUFSRURBQ0FCSUFJZ0FTZ0NBQ2dDaEFFUkF3QWdBQ2dDQUNnQ2VCRUVBQXNnQWtFQmFpSUNJQU1vQWtBUU4wZ05BQXNMSUFGQjdBQnFJZ0VRbXdWRkJFQWdCU0FFUVFocUlBRkJBQ0FCRUkwR0VKd0tFTndFQ3lBRVFSQnFKQUFnQUF0ckFRSi9Jd0JCRUdzaUFTUUFJQUVnQUJEUkFqWUNDQ0FCSUFBUWZqWUNBQ0FCUVFocUlBRVFpQUVFUUFOQUlBRkJDR29RVnlnQ0VDSUNJQUlvQWdBb0FsUVJCUUFnQVVFSWFoQ3BBU0FCSUFBUWZqWUNBQ0FCUVFocUlBRVFpQUVOQUFzTElBRkJFR29rQUF1WEFRRUZmeU1BUVNCcklnVWtBQ0FGUVJocUlBQWdCVUVJYWlBQkVDSWlCaEN3QlJEY0F5RUVJQVlRR1JvQ1FDQUVJQVZCQ0dvZ0FCQitFTndESWdZUWlBRkZEUUFEUUNBRUVGY2lCeEQ5QlNJSVFYOUdEUUVnQnlBSUlBRVFoUUlOQVNBRUVGY29BaEFpQnlBQ0lBTWdCeWdDQUNnQ1FCRUdBQ0FFRUtrQklBUWdCaUFBRUg0UTNBTVFpQUVOQUFzTElBVkJJR29rQUF1aUFRRUZmeU1BUVNCcklnVWtBQ0FGUVJocUlBQWdCVUVJYWlBQkVDSWlCaEN3QlJEY0F5RURJQVlRR1JvQ1FDQURJQVZCQ0dvZ0FCQitFTndESWdZUWlBRkZEUUFEUUNBREVGY2lCQkQ5QlNJSFFYOUdEUUVnQkNBSElBRVFoUUlOQVNBREVGY29BaEFpQkNBRUtBSUFLQUljRVFBQUlnUWdBaUFFS0FJQUtBSm9FUUVBSUFNUXFRRWdBeUFHSUFBUWZoRGNBeENJQVEwQUN3c2dCVUVnYWlRQUM0a0JBUUovSXdCQkVHc2lBU1FBSUFFZ0FCRFJBallDQ0NBQklBQVFmallDQUNBQlFRaHFJQUVRaUFFRVFBTkFJQUZCQ0dvUVZ5Z0NFQ0lDQkVBZ0FpQUNLQUlBS0FJSUVRVUFDeUFCUVFocUVLa0JJQUVnQUJCK05nSUFJQUZCQ0dvZ0FSQ0lBUTBBQ3dzZ0FDZ0NFQ0lDQkVBZ0FoQXFDeUFBSUFBUVBCRC9DQ0FCUVJCcUpBQWdBQXNJQUNBQUVPWU5HZ3NsQUNBQUtBSUFCRUFnQUNBQUtBSUFFUG9ZSUFBUU94b2dBQ2dDQUJvZ0FCQ3JBeG9MQzA4QkEzOGdBQkRCQWlJQ1FRQk9CRUFnQVVFUWFpRURBMEFnQTBHdHp3OFFFQ0FDRUpVQlFZblBEeEFRR2lBQUlBSVFFU2dDQUNBQkVLc1pJQUpCQUVvaEJDQUNRWDlxSVFJZ0JBMEFDd3NMYUFFRGZ5TUFRUkJySWdJa0FDQUNRUWhxSWdNZ0FCRFJBallDQUNBQ0lBQVFmallDQUNBRElBSVFpQUVFUUFOQUlBTVFWeWdDRUNJRUlBRkJBU0FFS0FJQUtBSk1FUVlBSUFNUXFRRWdBaUFBRUg0MkFnQWdBeUFDRUlnQkRRQUxDeUFDUVJCcUpBQUxTQUFnQVVFUWFrR1d6dzhRRUNBQUlBQW9BZ0FvQWx3UkFBQVFsUUZCcU04UEVCQWdBQ0FBS0FJQUtBSllFUUFBSWdBZ0FDZ0NBQ2dDREJFQUFCQVRFQkJCaWM4UEVCQWFDL0FEQVFoL0l3QkJRR29pQXlRQUlBRkJFR29pQmlBQUlBQW9BZ0FvQWd3UkFBQVFFeEFRUVlEUER4QVFJUVFDUUNBQ0JFQWdBMEV3YWlBQVFTUnFFTW9CSUFRZ0EwRXdhaEM1QVVHRHp3OFFFQ0FBSUFBb0FnQW9BZ3dSQUFBUUV4QVFRWXZQRHhBUUdpQURRVEJxRUJrYUlBQWdBQ2dDQUNnQ2tBRVJBQUFpQ0VFQlRnUkFJQWhCZjJvaENTQUFRUlJxSVFwQkFDRUNBMEFnQTBFd2FpQUtJQUlRMUFNaUJDZ0NCQkRLQVNBR0lBTkJNR29RdVFGQmc4OFBFQkFoQndKL0lBUW9BZ1FpQlNBRktBSUFLQUtJQVJFQUFBUkFJQU5CRUdwQmpjOFBJQVFvQWdRaUJTQUZLQUlBS0FJVUVRQUFFS2dKSUFOQklHb2dBMEVRYWtHRHp3OFEyQU5CQVF3QkN5QURRU0JxUVpIUER4QWlHa0VBQ3lFRklBY2dBMEVnYWhDNUFTRUhBa0FnQkNnQ0FDSUVCRUFnQXlBRUVQOEJHZ3dCQ3lBRFFaSFBEeEFpR2dzZ0J5QURFTGtCUWZ6T0QwR1J6dzhnQWlBSlNCc1FFQm9nQXhBWkdpQURRU0JxRUJrYUlBVUVRQ0FEUVJCcUVCa2FDeUFEUVRCcUVCa2FJQUpCQVdvaUFpQUlSdzBBQ3dzZ0JrR1N6dzhRRUJvZ0FDQUJFT2NOREFFTElBTkJNR29nQUVFa2FoQ3BBaUFFSUFOQk1Hb1F1UUZCZzg4UEVCQWdBQ0FBS0FJQUtBSVlFUUFBRUJNUUVFR1V6dzhRRUJvZ0EwRXdhaEFaR2dzZ0JrR0p6dzhRRUJvZ0EwRkFheVFBQzZWL0FRTi9Jd0JCRUdzaUFDUUFBa0FnQkVFTlN3MEFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUUZyRGcwQkFnSURCQVVGQlFVRkJRY0dBQXNnQXlnQ0NDSUdRUUZPQkg5QnRaZ0lRUmtnQlJBY1FjU1lDRUVhSUFVUUhDQURLQUlJQlNBR0MwVUVRRUhWbUFoQkVVRVhJQVVRM3dGQjRaZ0lRUkpCR0NBRkVOOEJDeUFDUVFoSEJFQUNRQ0FCUWJnRFNBMEFJQVZCNzVnSVFRRkJnSmtJRUIwZ0JVR0VtUWhCQVVHQW1RZ1FIU0FGUVplWkNFRUJRWUNaQ0JBZFFlK1lDRUViSUFVUUhFR0VtUWhCSENBRkVCeEJsNWtJUVIwZ0JSQWNJQUZCekFOSURRQkJwSmtJUVJzZ0JSQWNRYktaQ0VFY0lBVVFIRUhDbVFoQkhTQUZFQndMSUFWQnpKa0lRUUZCNEprSUVCMGdCVUhrbVFoQkFVSGdtUWdRSFNBRlFmMlpDRUVCUWVDWkNCQWRJQVZCa3BvSVFRRkI0SmtJRUIwZ0JVR25tZ2hCQVVIZ21RZ1FIU0FGUWJ5YUNFRUJRZUNaQ0JBZElBVkIwWm9JUVFGQjRKa0lFQjBnQlVIbW1naEJBVUhnbVFnUUdpQUZRZkNhQ0VFQlFlQ1pDQkFhSUFWQmdwc0lRUUZCNEprSUVCb2dBVUd1QTA0RVFDQUZRWm1iQ0VFQlFheWJDQkFhSUFWQnNKc0lRUUZCckpzSUVCb2dCVUhDbXdoQkFVR3Ntd2dRR2dzZ0JVSFptd2hCQVVIc213Z1FHaUFGUWZDYkNFRUJRZXliQ0JBYUlBVkJncHdJUVFGQjdKc0lFQm9nQlVHVW5BaEJBVUhzbXdnUUdpQUZRYkNjQ0VFQlFleWJDQkFhSUFWQnpKd0lRUUZCN0pzSUVCb2dCVUhvbkFoQkFVSHNtd2dRR2lBRlFmNmNDRUVCUWV5YkNCQWFJQVZCbjUwSVFRRkI3SnNJRUJvZ0JVR3luUWhCQVVIc213Z1FHaUFGUWJ1ZENFRUJRZXliQ0JBYUlBVkIycDBJUVFGQjdKc0lFQm9nQlVINW5RaEJBVUhzbXdnUUdpQUZRWmllQ0VFQlFleWJDQkFhSUFWQndaNElRUUZCN0pzSUVCb2dCVUhxbmdoQkFVSHNtd2dRR2lBRlFaT2ZDRUVCUWV5YkNCQWFJQVZCc3A4SVFRRkI3SnNJRUJvZ0JVSFJud2hCQVVIc213Z1FHaUFGUWZDZkNFRUJRZXliQ0JBYUlBVkJtYUFJUVFGQjdKc0lFQm9nQlVIQ29BaEJBVUhzbXdnUUdpQUZRZXVnQ0VFQlFmQ2dDQkFhSUFWQjlLQUlRUUZCOEtBSUVCb2dCVUg1b0FoQkFVSHdvQWdRR2lBRlFmNmdDRUVCUVpTaENCQWRRZjZnQ0VFRFFRa2dCUkRmQVNBRlFaaWhDRUVCUVpTaENCQWFJQVZCcWFFSVFRRkJsS0VJRUJvZ0JVRzZvUWhCQVVHVW9RZ1FHaUFGUWNLaENFRUJRZGloQ0JBYUlBVkIzS0VJUVFGQjJLRUlFQm9MSUFWQjdhRUlRUUZCZ0tJSUVCb2dCVUdFb2doQkFVR0FvZ2dRR2lBRlFaZWlDRUVCUVlDaUNCQWFJQVZCcXFJSVFRRkJnS0lJRUJvZ0JVRzJvZ2hCQVVHQW9nZ1FHaUFGUWNlaUNFRUJRWUNpQ0JBYUlBVkJ6NklJUVFGQmdLSUlFQm9nQlVIZW9naEJBVUdBb2dnUUdpQUZRZXlpQ0VFQlFZQ2pDQkFhSUFWQmhLTUlRUUZCZ0tNSUVCb2dCVUdjb3doQkFVR0Fvd2dRR2lBRlFiS2pDRUVCUVlDakNCQWFJQVZCeWFNSVFRRkJnS01JRUJvZ0F5Z0NBRVVFUUVIbG93aEJQQ0FGRUJ4QjdxTUlRVDBnQlJBY1FZQ2tDRUVqSUFVUUhFR0twQWhCSkNBRkVCeEJsS1FJUVNVZ0JSQWNRYWFrQ0VFbUlBVVFIRUc0cEFoQkp5QUZFQnhCeXFRSVFTZ2dCUkFjUWR5a0NFRXBJQVVRSEVIdXBBaEJLaUFGRUJ4QmdLVUlRU3NnQlJBY1FaS2xDRUVzSUFVUUhFR2twUWhCTWlBRkVCd0xBa0FDUUNBQ1FRaEdCRUFDUUFKQUFrQWdBeWdDQUVVRVFDQUZRYkNsQ0VFQlFjU2xDQkFhSUFWQnlLVUlRUUZCeEtVSUVCb2dCVUhkcFFoQkFVSEVwUWdRR2lBQlFiWUNSdzBDSUFWQjhLVUlRUUpCaUtZSUVCb01BUXNnQVVHMkFrY05BUXNnQlVHUXBnaEJBa0dJcGdnUUdnd0JDeUFCUWI4Q1NnMENDeUFGUVpTbUNFRUJRYVNtQ0JBYUlBVkJxS1lJUVFGQnBLWUlFQm9nQlVHM3BnaEJBVUdrcGdnUUdpQUZRY2FtQ0VFQlFhU21DQkFhSUFWQjFhWUlRUUZCcEtZSUVCb2dCVUhqcGdoQkFVR2twZ2dRR2lBRlFmS21DRUVCUWFTbUNCQWFJQVZCaHFjSVFRRkJwS1lJRUJvTElBRkJyQUpJRFFFTElBVkJtcWNJUVFKQnFLY0lFQjFCbXFjSVFkQUFJQVVRSEFzZ0FrRUlSdzBCSUFWQnNLY0lRUUZCdktjSUVCb2dCVUhBcHdoQkFVRzhwd2dRR2dzZ0FrRUlSeUFCUWJZQ1NISU5BRUhRcHdoQk9pQUZFQndnQlVIUXB3aEJBVUhrcHdnUUhVSG9wd2hCT2lBRkVCd2dCVUhvcHdoQkFVSDhwd2dRSFNBQlFjQUNTQTBBUVlDb0NFRTZJQVVRSEF0Qmo2Z0lRUk5CSGlBRkVOOEJRWnVvQ0VFVVFSOGdCUkRmQVVHb3FBaEJqNmdJUVI0Z0JSQldRYWlvQ0VHYnFBaEJIeUFGRUZaQnJxZ0lRWStvQ0VFZUlBVVFWa0d1cUFoQm02Z0lRUjhnQlJCV1FiV29DRUVWUVNBZ0JSRGZBVUdvcUFoQnc2Z0lRU0VnQlJCV1FhaW9DRUhUcUFoQklpQUZFRlpCcnFnSVFjT29DRUVoSUFVUVZrR3VxQWhCMDZnSVFTSWdCUkJXUWNPb0NFRWhJQVVRSEVIVHFBaEJJaUFGRUJ4QjQ2Z0lRVFFnQlJBY1FmU29DRUUwSUFVUUhFR0RxUWhCTXlBRkVCeEJrNmtJUVRVZ0JSQWNRWnlwQ0VFMklBVVFIQ0FFUVFOSEJFQWdCVUdUcVFoQkFrR3dxUWdRSFNBRlFaeXBDRUVDUWJDcENCQWRDeUFGUWJpcENFRUJRY2lwQ0JBZElBVkJ6S2tJUVFGQjVLa0lFQjBnQlVIb3FRaEJBVUhrcVFnUUhTQUZRWU9xQ0VFQlFaaXFDQkFkSUFWQm5Lb0lRUUZCbUtvSUVCMUJ1S2tJUWRRQUlBVVFIRUhNcVFoQjFRQWdCUkFjUWVpcENFSFdBQ0FGRUJ4Qmc2b0lRZGNBSUFVUUhFR2NxZ2hCMkFBZ0JSQWNBa0FnQkVFRFN3MEFBa0FnQkVFQmF3NENBUUVBQ3lBRlFhaW9DRUhNcVFoQkFVSGtxUWdRc3dFZ0JVR29xQWhCZzZvSVFRRkJtS29JRUxNQlFhaW9DRUhNcVFoQjFRQWdCUkJXUWFpb0NFR0RxZ2hCMXdBZ0JSQldDeUFGUWE2b0NFRzRxUWhCQVVISXFRZ1Fzd0VnQlVHdXFBaEJ6S2tJUVFGQjVLa0lFTE1CSUFWQnJxZ0lRZWlwQ0VFQlFlU3BDQkN6QVNBRlFhNm9DRUdEcWdoQkFVR1lxZ2dRc3dFZ0JVR3VxQWhCbktvSVFRRkJtS29JRUxNQlFhNm9DRUc0cVFoQjFBQWdCUkJXUWE2b0NFSE1xUWhCMVFBZ0JSQldRYTZvQ0VIb3FRaEIxZ0FnQlJCV1FhNm9DRUdEcWdoQjF3QWdCUkJXUWE2b0NFR2NxZ2hCMkFBZ0JSQldRYldxQ0VFM0lBVVFIRUhJcWdoQk9DQUZFQnhCMnFvSVFUa2dCUkFjUWV5cUNFRTdJQVVRSENBQlFaa0RUQVJBSUFWQm5La0lRUUZCL0tvSUVCMExRYWlvQ0VHMXFBaEJJQ0FGRUZaQnFLZ0lRWUNyQ0VFdElBVVFWa0dvcUFoQmpxc0lRUzRnQlJCV1FhaW9DRUdicXdoQkx5QUZFRlpCcUtnSVFiS3JDRUV3SUFVUVZrR29xQWhCeUtzSVFURWdCUkJXUWFpb0NFSFVxd2hCTWlBRkVGWkJycWdJUWJXb0NFRWdJQVVRVmtHdXFBaEJnS3NJUVMwZ0JSQldRYTZvQ0VHT3F3aEJMaUFGRUZaQnJxZ0lRWnVyQ0VFdklBVVFWa0d1cUFoQnNxc0lRVEFnQlJCV1FhNm9DRUhJcXdoQk1TQUZFRlpCcnFnSVFkU3JDRUV5SUFVUVZrRzFxQWhCSUNBRkVCeEJnS3NJUVMwZ0JSQWNRWTZyQ0VFdUlBVVFIRUdicXdoQkx5QUZFQnhCc3FzSVFUQWdCUkFjUWNpckNFRXhJQVVRSEVIVXF3aEJNaUFGRUJ3Q1FDQUNRUWhISWdZTkFDQUVRUU5HQkVBZ0JVR2JxQWhCQWtIa3F3Z1FIU0FGUWFpb0NFR2JxQWhCQWtIa3F3Z1Fzd0VNQVFzZ0JFRi9ha0VCU3cwQUlBVkJtNmdJUVFKQjdLc0lFQjBnQlVHdXFBaEJtNmdJUVFKQjdLc0lFTE1CQ3lBQlFZc0JTaUFHY1NBQ1FRaEdJQUZCdFFKS2NYSWlCa0VCUmdSQUlBVkI5S3NJUVFGQmhLd0lFQjFCOUtzSVFkRUFJQVVRSENBRlFZaXNDRUVCUVppc0NCQWRRWWlzQ0VIUUFDQUZFQndMQWtBZ0FrRUlSZzBBUWVTWkNFRUtJQVVRSEVIOW1RaEJDeUFGRUJ4Qmtwb0lRUXdnQlJBY1FhZWFDRUVOSUFVUUhFRzhtZ2hCRGlBRkVCeEIwWm9JUVE4Z0JSQWNJQU1vQWdoQkFVNEVRRUhNbVFoQkEwRUpJQVVRM3dFTUFRdEJ6SmtJUVFrZ0JSQWNDeUFHUlEwRklBVkJuS3dJUVFGQnJLd0lFQjBnQlVHd3JBaEJBVUdzckFnUUhTQUZRY2lzQ0VFQlFkeXNDQkFkSUFWQjRLd0lRUUZCM0t3SUVCMGdCVUh5ckFoQkFVSGNyQWdRSFNBRlFZU3RDRUVCUWR5c0NCQWRJQVZCbHEwSVFRRkIzS3dJRUIxQm5Ld0lRUkFnQlJBY1FiQ3NDRUVSSUFVUUhFSElyQWhCRWlBRkVCeEI0S3dJUVJNZ0JSQWNRZktzQ0VFVUlBVVFIRUdFclFoQkZTQUZFQnhCbHEwSVFSWWdCUkFjSUFWQnFLMElRUUZCdUswSUVCMGdCVUc4clFoQkFVRzRyUWdRSFNBRlFjbXRDRUVCUWJpdENCQWRJQVZCMWEwSVFRRkJ1SzBJRUIxQnFLMElRZlFBSUFVUUhFRzhyUWhCOVFBZ0JSQWNRY210Q0VIMkFDQUZFQnhCMWEwSVFmY0FJQVVRSEF3RkMwSGZyUWhCRmtFK0lBVVEzd0ZCN3EwSVFSZEJQeUFGRU44QlFmdXRDRUVZUWNBQUlBVVEzd0VDUUNBREtBSUFSUVJBUVltdUNFRVpRY0VBSUFVUTN3RU1BUXNnQlNBQVFZbXVDQkFpSWdkQkFFRUFFS3dCSVFZZ0J4QVpHaUFHUlEwQUlBWWdCaWdDQUNnQ05CRUFBQ0lISUFjb0FnQW9BaWdSQUFBaUJ5QUhLUUlFUWtDRFFnU0VOd0lFSUFZZ0JpZ0NBQ2dDTkJFQUFDSUdJQVlvQWdBb0FpZ1JBQUFpQmlBR0tBSVVRWUJnY1RZQ0ZBdEJscTRJUVJwQnd3QWdCUkRmQVVHanJnaEJHa0hEQUNBRkVOOEJRYk91Q0VFRFFjZ0FJQVVRM3dGQnc2Z0lRU0VnQlJBY1FkT29DRUVpSUFVUUhFSDBxQWhCTkNBRkVCd2dBa0VJUnlBQlFZc0JTbkVpQmtFQlJnUkFJQVZCeDY0SVFRRkIzSzRJRUIxQng2NElRY1FBSUFVUUhBc0NRQ0FCUVlJQlRrRUFJQUpCQ0VjYlJVRUFJQUpCQ0VjZ0FVRzJBa2h5R3cwQVFlQ3VDRUhGQUNBRkVCeEI3SzRJUWNZQUlBVVFIRUgrcmdoQnh3QWdCUkFjSUFKQkNFWWdBVUdQQTBweVJRUkFRWXl2Q0VISEFDQUZFQndnQlVIK3JnaEJBVUdjcndnUUhTQUZRZUN1Q0VFQlFaeXZDQkFkSUFWQjdLNElRUUZCbks4SUVCMGdCVUdNcndoQkFVR2Nyd2dRSFF3QkMwR2dyd2hCeHdBZ0JSQWNJQUpCQ0VjZ0FVRy9Ba3B5RFFBZ0JVSGdyZ2hCQVVHd3J3Z1FIU0FGUWV5dUNFRUJRYkN2Q0JBZElBVkJvSzhJUVFGQnNLOElFQjBnQlVIK3JnaEJBVUd3cndnUUhTQUZRWXl2Q0VFQlFiQ3ZDQkFkQzBHVHFRaEJOU0FGRUJ4Qm5La0lRVFlnQlJBY1FhaW9DRUhVcXdoQk1pQUZFRlpCcUtnSVFjaXJDRUV4SUFVUVZrR29xQWhCNWFNSVFUd2dCUkJXUWFpb0NFSHVvd2hCUFNBRkVGWkIxS3NJUVRJZ0JSQWNRY2lyQ0VFeElBVVFIRUhsb3doQlBDQUZFQnhCN3FNSVFUMGdCUkFjQWtBZ0FrRUlSZ1JBQWtBZ0F5Z0NBQTBBSUFWQnRLOElRUUZCeEtVSUVCb2dCVUhFcndoQkFVSEVwUWdRR2lBRlFkaXZDRUVCUWNTbENCQWFJQVZCc0tVSVFRRkJ4S1VJRUJvZ0JVSElwUWhCQVVIRXBRZ1FHaUFGUWQybENFRUJRY1NsQ0JBYUlBRkJ2d0pLRFFBZ0JVSHdwUWhCQWtHSXBnZ1FHZ3NnQVVHMkFrY0VRQ0FCUWVRQVJ3MENJQVZCNnE4SVFRRkI4SzhJRUJvZ0JVSDByd2hCQVVId3J3Z1FHaUFGUWZtdkNFRUJRZkN2Q0JBYURBSUxJQVZCa0tZSVFRSkJpS1lJRUJvZ0JVR0FzQWhCQVVHWXNBZ1FHaUFGUVp5d0NFRUJRWml3Q0JBYUlBVkJzTEFJUVFGQm1MQUlFQm9NQVFzZ0FVR0JBVW9OQUNBREtBSUFEUUFnQlVIRXNBaEJBVUhVc0FnUUdpQUZRZGl3Q0VFQlFkU3dDQkFhSUFWQjViQUlRUUZCMUxBSUVCb2dCVUh5c0FoQkFVSFVzQWdRR2lBRlFZR3hDRUVCUWRTd0NCQWFJQVZCa3JFSVFRRkIxTEFJRUJvZ0JVR2pzUWhCQVVIVXNBZ1FHaUFGUWJTeENFRUJRZFN3Q0JBYUlBVkJ3TEVJUVFGQjFMQUlFQm9nQlVITXNRaEJBVUhVc0FnUUdpQUZRZHl4Q0VFQlFkU3dDQkFhQ3dKQUlBSkJDRVlOQUNBREtBSUFEUUFnQlVIc3NRaEJBVUhVc0FnUUdpQUZRZjJ4Q0VFQlFkU3dDQkFhSUFWQmtySUlRUUZCMUxBSUVCb2dCVUdqc2doQkFVSFVzQWdRR2lBRlFiaXlDRUVCUWRTd0NCQWFJQVZCeWJJSVFRRkIxTEFJRUJvZ0JVSGVzZ2hCQVVIVXNBZ1FHaUFGUWZHeUNFRUJRZFN3Q0JBYUlBVkJnYk1JUVFGQjFMQUlFQm9nQlVHVnN3aEJBVUhVc0FnUUdpQUZRYVd6Q0VFQlFkU3dDQkFhSUFWQnViTUlRUUZCMUxBSUVCb2dCVUhPc3doQkFVSFVzQWdRR2lBRlFlZXpDRUVCUWRTd0NCQWFJQVZCKzdNSVFRRkIxTEFJRUJvTElBSkJDRVlnQVVHakEwcHlSUVJBSUFWQms3UUlRUUZCcExRSUVCb2dCVUdvdEFoQkFVSEF0QWdRR2lBRlFjUzBDRUVCUWNDMENCQWFJQVZCMjdRSVFRRkJ3TFFJRUJvTElBSkJDRVlnQVVIQkEwcHlSUVJBSUFWQjZiUUlRUUZCOUxRSUVCb2dCVUg0dEFoQkFVSDB0QWdRR2lBRlFZRzFDRUVCUWZTMENCQWFJQVZCakxVSVFRRkI5TFFJRUJvZ0JVR1h0UWhCQVVIMHRBZ1FHaUFGUWFLMUNFRUJRZlMwQ0JBYUN3SkFJQUpCQ0VZaUJ3MEFJQVZCcjdVSVFRRkJ3TFVJRUJvZ0JVSEV0UWhCQVVIQXRRZ1FHaUFGUWRpMUNFRUJRY0MxQ0JBYUlBVkI3N1VJUVFGQndMVUlFQm9nQlVHRHRnaEJBVUhBdFFnUUdpQUZRWjIyQ0VFQlFjQzFDQkFhSUFWQnQ3WUlRUUZCd0xVSUVCb2dCVUhNdGdoQkFVSEF0UWdRR2lBRlFlZTJDRUVCUWNDMUNCQWFJQVZCL3JZSVFRRkJ3TFVJRUJvZ0JVR2J0d2hCQVVIQXRRZ1FHaUFGUWJtM0NFRUJRY0MxQ0JBYUlBVkJ6TGNJUVFGQndMVUlFQm9nQlVIaHR3aEJBVUg0dHdnUUdpQUZRZnkzQ0VFQlFmaTNDQkFhSUFWQm1MZ0lRUUZCK0xjSUVCb2dCVUd5dUFoQkFVSDR0d2dRR2lBRlFkSzRDRUVCUWZpM0NCQWFJQVZCNHJnSVFRRkIrTGNJRUJvZ0JVSDR1QWhCQVVINHR3Z1FHaUFGUVl5NUNFRUJRZmkzQ0JBYUlBVkJwcmtJUVFGQndMa0lFQjBnQlVIRXVRaEJBVUhBdVFnUUhTQUZRZU81Q0VFQlFjQzVDQkFkSUFWQmdMb0lRUUZCd0xrSUVCMGdCVUdXdWdoQkFVSEF1UWdRSFNBRlFiUzZDRUVCUWNDNUNCQWRJQVZCMExvSVFRRkJ3TGtJRUIwZ0JVSHB1Z2hCQVVIQXVRZ1FHa0dtdVFoQnlRQWdCUkFjUWNTNUNFSEtBQ0FGRUJ4QjQ3a0lRY3NBSUFVUUhFR0F1Z2hCekFBZ0JSQWNRWmE2Q0VITkFDQUZFQnhCdExvSVFjNEFJQVVRSEVIUXVnaEJ6d0FnQlJBY0lBVkJnTHNJUVFGQmxMc0lFQm9nQlVHWXV3aEJBVUdVdXdnUUdpQUZRYks3Q0VFQlFaUzdDQkFhSUFWQnpic0lRUUZCbExzSUVCb2dCVUhudXdoQkFVR1V1d2dRR2lBRlFZZThDRUVCUVpTN0NCQWFJQVZCcUx3SVFRRkJ1THdJRUJvZ0JVRzh2QWhCQVVHNHZBZ1FHaUFGUWMyOENFRUJRYmk4Q0JBYUlBRkJyZ05JRFFBZ0JVSGp2QWhCQVVIOHZBZ1FIVUhqdkFoQjJRQWdCUkFjQzBFQUlBSkJDRWNnQVVIQkEwcHhJZ2hGSUFGQnZ3SktJQWR4RzBVRVFDQUZRWUM5Q0VFQlFaUzlDQkFkSUFWQm1MMElRUUZCbEwwSUVCMUJnTDBJUWRvQUlBVVFIRUdZdlFoQjJ3QWdCUkFjSUFWQnNiMElRUUZCd0wwSUVCMGdCVUhFdlFoQkFVSEF2UWdRSFVHeHZRaEI2Z0FnQlJBY1FjUzlDRUhyQUNBRkVCd0xJQWdnQWtFSVJpQUJRYlVDU25FaUIzSkJBVVlFUUNBRlFkcTlDRUVCUWV5OUNCQWRJQVZCOEwwSVFRRkI3TDBJRUIxQjJyMElRZElBSUFVUUhFSHd2UWhCMHdBZ0JSQWNDeUFGUWFPdUNFRUJRWXkrQ0JBZElBVkJrTDRJUVFGQm5MNElFQm9nQlVHZ3ZnaEJBVUdjdmdnUUdpQUZRYTIrQ0VFQlFjQytDQkFhSUFWQnhMNElRUUZCd0w0SUVCb2dBa0VJUnlBQlFiOENTbkpGQkVBZ0JVSDBxQWhCQWtIY3ZnZ1FIU0FGUVpPcENFRUNRZHkrQ0JBZElBVkJsS1lJUVFGQnBLWUlFQm9nQlVHb3BnaEJBVUdrcGdnUUdpQUZRYmVtQ0VFQlFhU21DQkFhSUFWQnhxWUlRUUZCcEtZSUVCb2dCVUhWcGdoQkFVR2twZ2dRR2lBRlFlT21DRUVCUWFTbUNCQWFJQVZCOHFZSVFRRkJwS1lJRUJvZ0JVR0dwd2hCQVVHa3BnZ1FHZ3NnQlVIMHF3aEJBVUdFckFnUUhVSDBxd2hCMFFBZ0JSQWNJQVZCaUt3SVFRRkJtS3dJRUIxQmlLd0lRZEFBSUFVUUhDQUJRYXdDVGdSQUlBVkJtcWNJUVFKQnFLY0lFQjFCbXFjSVFkQUFJQVVRSEFzQ1FDQUNRUWhHRFFBZ0JVSE1tUWhCQVVIZ21RZ1FIU0FGUWVTWkNFRUJRZUNaQ0JBZElBVkIvWmtJUVFGQjRKa0lFQjBnQlVHU21naEJBVUhnbVFnUUhTQUZRYWVhQ0VFQlFlQ1pDQkFkSUFWQnZKb0lRUUZCNEprSUVCMGdCVUhSbWdoQkFVSGdtUWdRSFVIa21RaEJDaUFGRUJ4Qi9aa0lRUXNnQlJBY1FaS2FDRUVNSUFVUUhFR25tZ2hCRFNBRkVCeEJ2Sm9JUVE0Z0JSQWNRZEdhQ0VFUElBVVFIQ0FES0FJSVFRRk9CRUJCekprSVFRTkJDU0FGRU44QkRBRUxRY3laQ0VFSklBVVFIQXNnQmlBSGNrRUJSZ1JBSUFWQm5Ld0lRUUZCckt3SUVCMGdCVUd3ckFoQkFVR3NyQWdRSFNBRlFjaXNDRUVCUWR5c0NCQWRJQVZCNEt3SVFRRkIzS3dJRUIwZ0JVSHlyQWhCQVVIY3JBZ1FIU0FGUVlTdENFRUJRZHlzQ0JBZElBVkJscTBJUVFGQjNLd0lFQjFCbkt3SVFSQWdCUkFjUWJDc0NFRVJJQVVRSEVISXJBaEJFaUFGRUJ4QjRLd0lRUk1nQlJBY1FmS3NDRUVVSUFVUUhFR0VyUWhCRlNBRkVCeEJscTBJUVJZZ0JSQWNJQVZCNUw0SVFRRkJyS3dJRUJvZ0JVSDB2Z2hCQVVHc3JBZ1FHaUFGUVlxL0NFRUJRYXlzQ0JBYUlBVkJwcjhJUVFGQnJLd0lFQm9nQlVIQnZ3aEJBVUdzckFnUUdpQUZRYysvQ0VFQlFkeS9DQkFhSUFWQjRMOElRUUZCM0w4SUVCb2dCVUhzdndoQkFVSGN2d2dRR2lBRlFmMi9DRUVCUWR5c0NCQWFJQVZCajhBSVFRRkIzS3dJRUJvZ0JVR213QWhCQVVIY3JBZ1FHaUFGUWJYQUNFRUJRZHlzQ0JBYUlBVkJ5OEFJUVFGQjNLd0lFQm9nQlVIa3dBaEJBVUhjckFnUUdpQUZRZnZBQ0VFQlFkeXNDQkFhSUFWQm04RUlRUUZCM0t3SUVCb2dCVUc3d1FoQkFVSGNyQWdRR2lBRlFkSEJDRUVCUWR5c0NCQWFJQVZCNThFSVFRRkIrTUVJRUJvZ0JVSDh3UWhCQVVINHdRZ1FHaUFGUVkvQ0NFRUJRYVRDQ0JBYUlBVkJxTUlJUVFGQnBNSUlFQm9nQlVHOHdnaEJBVUhJd2dnUUdpQUZRY3pDQ0VFQlFjakNDQkFhSUFWQjJNSUlRUUZCeU1JSUVCb2dCVUhrd2doQkFVSEl3Z2dRR2lBRlFmRENDRUVCUWNqQ0NCQWFJQVZCL01JSVFRRkJ5TUlJRUJvZ0JVR0h3d2hCQVVISXdnZ1FHaUFGUVpQRENFRUJRY2pDQ0JBYUlBVkJxTU1JUVFGQnlNSUlFQm9nQlVHOXd3aEJBVUhJd2dnUUdpQUZRZExEQ0VFQlFjakNDQkFhSUFWQjU4TUlRUUZCeU1JSUVCb2dCVUg4d3doQkFVSEl3Z2dRR2lBRlFaREVDRUVCUWNqQ0NCQWFJQVZCcGNRSVFRRkJ5TUlJRUJvZ0JVRzZ4QWhCQVVISXdnZ1FHaUFGUWMvRUNFRUJRY2pDQ0JBYUlBVkI1TVFJUVFGQnlNSUlFQm9nQlVINXhBaEJBVUhJd2dnUUdpQUZRWTdGQ0VFQlFjakNDQkFhSUFWQm9zVUlRUUZCeU1JSUVCb2dCVUczeFFoQkFVSE14UWdRR2lBRlFkREZDRUVCUWN6RkNCQWFJQVZCNWNVSVFRRkJ6TVVJRUJvZ0JVSDZ4UWhCQVVITXhRZ1FHaUFGUVkvR0NFRUJRY3pGQ0JBYUlBVkJwTVlJUVFGQnpNVUlFQm9nQlVHNHhnaEJBVUhNeFFnUUdpQUZRYzNHQ0VFQlFlVEdDQkFhSUFWQjZNWUlRUUZCNU1ZSUVCb2dCVUdEeHdoQkFVSGt4Z2dRR2lBRlFaekhDRUVCUWVUR0NCQWFJQVZCdGNjSVFRRkJ6TWNJRUJvZ0JVSFF4d2hCQVVITXh3Z1FHaUFGUWVuSENFRUJRY3pIQ0JBYUlBVkJnc2dJUVFGQnpNY0lFQm9nQlVHYnlBaEJBVUhNeHdnUUdpQUZRYlRJQ0VFQlFjekhDQkFhSUFWQnpjZ0lRUUZCek1jSUVCb2dCVUhseUFoQkFVSE14d2dRR2lBRlFmN0lDRUVCUWN6SENCQWFJQVZCb01rSVFRRkJ6TWNJRUJvZ0JVSEN5UWhCQVVITXh3Z1FHaUFGUWVUSkNFRUJRY3pIQ0JBYUlBVkJoc29JUVFGQnpNY0lFQm9nQlVHb3lnaEJBVUhNeHdnUUdpQUZRY25LQ0VFQlFjekhDQkFhSUFWQjY4b0lRUUZCek1jSUVCb2dCVUdOeXdoQkFVSE14d2dRR2lBRlFhL0xDRUVCUWN6SENCQWFJQVZCMGNzSVFRRkJ6TWNJRUJvZ0JVSHp5d2hCQVVITXh3Z1FHaUFGUVpYTUNFRUJRY3pIQ0JBYUlBVkJ0c3dJUVFGQnpNY0lFQm9nQlVHb3JRaEJBVUc0clFnUUhTQUZRYnl0Q0VFQlFiaXRDQkFkSUFWQnlhMElRUUZCdUswSUVCMGdCVUhWclFoQkFVRzRyUWdRSFVHb3JRaEI5QUFnQlJBY1FieXRDRUgxQUNBRkVCeEJ5YTBJUWZZQUlBVVFIRUhWclFoQjl3QWdCUkFjQ3lBQ1FRaEdCRUFnQlVHd3B3aEJBVUc4cHdnUUdpQUZRY0NuQ0VFQlFieW5DQkFhQ3lBREtBSUlRUUZPQkVBZ0JVSFl6QWhCQVVIb3pBZ1FIU0FGUWV6TUNFRUJRZWpNQ0JBZElBVkIvc3dJUVFGQjZNd0lFQjBnQlVHUHpRaEJBVUhvekFnUUhTQUZRYUxOQ0VFQlFlak1DQkFkSUFWQnRzMElRUUZCNk13SUVCMGdCVUhLelFoQkFVSG96QWdRSFNBRlFkN05DRUVCUWVqTUNCQWRJQVZCK2MwSVFRRkI2TXdJRUIwZ0JVR1R6Z2hCQVVIb3pBZ1FIU0FGUWF2T0NFRUJRZWpNQ0JBZElBVkJ3TTRJUVFGQjZNd0lFQjBnQlVIWXpnaEJBVUhvekFnUUhTQUZRZkxPQ0VFQlFlak1DQkFkSUFWQmpNOElRUUZCNk13SUVCMGdCVUdsendoQkFVSG96QWdRSFFzZ0JVRy96d2hCQVVIVXp3Z1FHZ3dFQzBIWXp3aEJBU0FGRUJ4QjZjOElRUUlnQlJBY1FmclBDRUVESUFVUUhFR0owQWhCQkNBRkVCeEJudEFJUVFVZ0JSQWNRYlRRQ0VFR0lBVVFIRUgwcXdoQjBRQWdCUkFjUVlpc0NFSFFBQ0FGRUJ3Z0FrRUlSeUFCUVlzQlNuRWlCa1ZCQUNBQ1FRaEhJQUZCdGdKSWNodEZCRUFnQlVIMHF3aEJBVUdFckFnUUhTQUZRWWlzQ0VFQlFaaXNDQkFkQ3lBQ1FRaEdJQUZCclFOS2NrVUVRQ0FGUWRqUENFRUJRY3pRQ0JBZElBVkI2YzhJUVFGQnpOQUlFQjBnQlVINnp3aEJBVUhNMEFnUUhTQUZRWW5RQ0VFQlFjelFDQkFkSUFWQm50QUlRUUZCek5BSUVCMGdCVUcwMEFoQkFVSE0wQWdRSFNBRlFkRFFDRUVCUWN6UUNCQWRJQVZCN05BSVFRRkJ6TkFJRUIwZ0JVR0gwUWhCQVVITTBBZ1FIU0FGUWFiUkNFRUJRY3pRQ0JBZElBVkJ4ZEVJUVFGQnpOQUlFQjBnQlVIZzBRaEJBVUhNMEFnUUhTQUZRZnpSQ0VFQlFjelFDQkFkSUFWQm50SUlRUUZCek5BSUVCb2dCVUdtMGdoQkFVSE0wQWdRR2lBRlFjSFNDRUVCUWN6UUNCQWFJQVZCMWRJSVFRRkJ6TkFJRUJvZ0JVSG8wZ2hCQVVITTBBZ1FHaUFGUWZ6U0NFRUJRY3pRQ0JBYUN5QUZRWS9UQ0VFQlFlak1DQkFhQWtBZ0FrRUlSaUlIRFFBZ0JVSE1tUWhCQVVIZ21RZ1FIU0FGUWVTWkNFRUJRZUNaQ0JBZElBVkIvWmtJUVFGQjRKa0lFQjBnQlVHU21naEJBVUhnbVFnUUhTQUZRYWVhQ0VFQlFlQ1pDQkFkSUFWQnZKb0lRUUZCNEprSUVCMGdCVUhSbWdoQkFVSGdtUWdRSFVIa21RaEJDaUFGRUJ4Qi9aa0lRUXNnQlJBY1FaS2FDRUVNSUFVUUhFR25tZ2hCRFNBRkVCeEJ2Sm9JUVE0Z0JSQWNRZEdhQ0VFUElBVVFIQ0FES0FJSVFRRk9CRUJCekprSVFRTkJDU0FGRU44QkRBRUxRY3laQ0VFSklBVVFIQXNnQVVHMUFrb2dCM0VnQm5KQkFVWUVRQ0FGUVp5c0NFRUJRYXlzQ0JBZElBVkJzS3dJUVFGQnJLd0lFQjBnQlVISXJBaEJBVUhjckFnUUhTQUZRZUNzQ0VFQlFkeXNDQkFkSUFWQjhxd0lRUUZCM0t3SUVCMGdCVUdFclFoQkFVSGNyQWdRSFNBRlFaYXRDRUVCUWR5c0NCQWRRWnlzQ0VFUUlBVVFIRUd3ckFoQkVTQUZFQnhCeUt3SVFSSWdCUkFjUWVDc0NFRVRJQVVRSEVIeXJBaEJGQ0FGRUJ4QmhLMElRUlVnQlJBY1FaYXRDRUVXSUFVUUhDQUZRYWl0Q0VFQlFiaXRDQkFkSUFWQnZLMElRUUZCdUswSUVCMGdCVUhKclFoQkFVRzRyUWdRSFNBRlFkV3RDRUVCUWJpdENCQWRRYWl0Q0VIMEFDQUZFQnhCdkswSVFmVUFJQVVRSEVISnJRaEI5Z0FnQlJBY1FkV3RDRUgzQUNBRkVCd2dCVUdlMHdoQkFVR3NyQWdRSFNBRlFhN1RDRUVCUWF5c0NCQWRRWjdUQ0VFSElBVVFIRUd1MHdoQkNDQUZFQndnQlVHODB3aEJBVUdzckFnUUdnc2dBRUdZMUFncEF3QTNBd0FnQlVHZzFBaEJBaUFBRUJvZ0JVR3UxQWhCQWlBQUVCb2dCVUc5MUFoQkFpQUFFQnBCQUNBQ1FRaEhJQUZCd1FOS2NVVWdBa0VJUmlBQlFiOENTbkViRFFNZ0JVSHFyd2hCQVVIUTFBZ1FHaUFGUWZTdkNFRUJRZERVQ0JBYUlBVkIrYThJUVFGQjBOUUlFQm9nQlVIcHRBaEJBVUhRMUFnUUdpQUZRZmkwQ0VFQlFkRFVDQkFhSUFWQmdiVUlRUUZCME5RSUVCb2dCVUdNdFFoQkFVSFExQWdRR2lBRlFaZTFDRUVCUWREVUNCQWFJQVZCb3JVSVFRRkIwTlFJRUJvTUF3c2dBa0VJUmlBQlFjd0RTSElOQWlBRlFkVFVDRUVCUWVUVUNCQWRJQVZCNk5RSVFRRkI1TlFJRUIwZ0JVSDBxQWhCQVVIazFBZ1FIU0FGUWVHWUNFRUJRZVRVQ0JBZElBVkIrTlFJUVFGQjVOUUlFQjBnQlVHUjFRaEJBVUhrMUFnUUhTQUZRYVhWQ0VFQlFlVFVDQkFkSUFWQnZOVUlRUUZCNU5RSUVCMGdCVUhSMVFoQkFVSGsxQWdRSFNBRlFlblZDRUVCUWVUVUNCQWRJQVZCOXRVSVFRRkI1TlFJRUIwZ0JVR0QxZ2hCQVVIazFBZ1FIU0FGUVkzV0NFRUJRZVRVQ0JBZElBVkJtdFlJUVFGQjVOUUlFQjBnQlVHdDFnaEJBVUhrMUFnUUhTQUZRY0RXQ0VFQlFlVFVDQkFkSUFWQjlLc0lRUUZCaEt3SUVCMUIxTlFJUWR3QUlBVVFIRUhvMUFoQjNRQWdCUkFjUWZTb0NFRTBJQVVRSEVIaG1BaEJHQ0FGRUJ4QitOUUlRZDRBSUFVUUhFR1IxUWhCM3dBZ0JSQWNRYVhWQ0VIZ0FDQUZFQnhCdk5VSVFlRUFJQVVRSEVIUjFRaEI0Z0FnQlJBY1FlblZDRUhqQUNBRkVCeEI5dFVJUWVRQUlBVVFIRUdEMWdoQjVRQWdCUkFjUVkzV0NFSG1BQ0FGRUJ4Qm10WUlRZWNBSUFVUUhFR3QxZ2hCNkFBZ0JSQWNRY0RXQ0VIcEFDQUZFQnhCOUtzSVFkRUFJQVVRSENBRlFjeVpDRUVCUWVDWkNCQWRJQVZCNUprSVFRRkI0SmtJRUIwZ0JVSDltUWhCQVVIZ21RZ1FIU0FGUVpLYUNFRUJRZUNaQ0JBZElBVkJwNW9JUVFGQjRKa0lFQjBnQlVHOG1naEJBVUhnbVFnUUhTQUZRZEdhQ0VFQlFlQ1pDQkFkUWVTWkNFRUtJQVVRSEVIOW1RaEJDeUFGRUJ4Qmtwb0lRUXdnQlJBY1FhZWFDRUVOSUFVUUhFRzhtZ2hCRGlBRkVCeEIwWm9JUVE4Z0JSQWNBa0FnQXlnQ0NFRUJUZ1JBUWN5WkNFRURRUWtnQlJEZkFRd0JDMEhNbVFoQkNTQUZFQndMSUFWQm50TUlRUUZCckt3SUVCMGdCVUd1MHdoQkFVR3NyQWdRSFNBRlFaeXNDRUVCUWF5c0NCQWRJQVZCc0t3SVFRRkJyS3dJRUIwZ0JVSElyQWhCQVVIY3JBZ1FIU0FGUWVDc0NFRUJRZHlzQ0JBZElBVkI4cXdJUVFGQjNLd0lFQjBnQlVHRXJRaEJBVUhjckFnUUhTQUZRWmF0Q0VFQlFkeXNDQkFkUVo3VENFRUhJQVVRSEVHdTB3aEJDQ0FGRUJ4Qm5Ld0lRUkFnQlJBY1FiQ3NDRUVSSUFVUUhFSElyQWhCRWlBRkVCeEI0S3dJUVJNZ0JSQWNRZktzQ0VFVUlBVVFIRUdFclFoQkZTQUZFQnhCbHEwSVFSWWdCUkFjSUFWQnFLMElRUUZCdUswSUVCMGdCVUc4clFoQkFVRzRyUWdRSFNBRlFjbXRDRUVCUWJpdENCQWRJQVZCMWEwSVFRRkJ1SzBJRUIxQnFLMElRZlFBSUFVUUhFRzhyUWhCOVFBZ0JSQWNRY210Q0VIMkFDQUZFQnhCMWEwSVFmY0FJQVVRSEF3Q0N3SkFJQUpCQ0VjZ0FVSEJBMHB4SWdaRlFRQWdBa0VJUnlBQlFjQUNTSEliRFFBZ0JVSFcxZ2hCajZnSVFRRkI2TllJRUxNQklBVkIxdFlJUVp1b0NFRUJRZWpXQ0JDekFTQUZRZGJXQ0VIRHFBaEJBVUhvMWdnUXN3RWdCVUhXMWdoQjA2Z0lRUUZCNk5ZSUVMTUJRZGJXQ0VHUHFBaEJIaUFGRUZaQjF0WUlRWnVvQ0VFZklBVVFWa0hXMWdoQnc2Z0lRU0VnQlJCV1FkYldDRUhUcUFoQklpQUZFRllnQlVIVzFnaEJnNm9JUVFGQjZOWUlFTE1CSUFWQjF0WUlRZXpXQ0VFQlFlaldDQkN6QVNBRlFkYldDRUdGMXdoQkFVSG8xZ2dRc3dGQjF0WUlRWU9xQ0VIWEFDQUZFRlpCMXRZSVFleldDRUh2QUNBRkVGWkIxdFlJUVlYWENFSHdBQ0FGRUZZZ0JVR2Uxd2hCOUtnSVFRRkI2TllJRUxNQklBVkJudGNJUVpPcENFRUJRZWpXQ0JDekFTQUZRWjdYQ0VHY3FRaEJBVUhvMWdnUXN3RWdCVUdlMXdoQnVLa0lRUUZCNk5ZSUVMTUJRWjdYQ0VIMHFBaEJOQ0FGRUZaQm50Y0lRWk9wQ0VFMUlBVVFWa0dlMXdoQm5La0lRVFlnQlJCV1FaN1hDRUc0cVFoQjFBQWdCUkJXSUFWQm50Y0lRYkxYQ0VFQlFlaldDQkN6QVNBRlFaN1hDRUdjcWdoQkFVSG8xZ2dRc3dGQm50Y0lRYkxYQ0VIeEFDQUZFRlpCbnRjSVFaeXFDRUhZQUNBRkVGWWdCVUhFMXdoQkFVSG8xZ2dRSFNBRlFkalhDRUVCUWVqV0NCQWRJQVZCN3RjSVFRRkI2TllJRUIwZ0JVR0IyQWhCQVVIbzFnZ1FIU0FGUWVuUENFRUJRZWpXQ0JBZElBVkIrczhJUVFGQjZOWUlFQjBnQlVHSjBBaEJBVUhvMWdnUUhTQUZRWjdRQ0VFQlFlaldDQkFkSUFWQnROQUlRUUZCNk5ZSUVCMUJ4TmNJUWUwQUlBVVFIRUhZMXdoQjdnQWdCUkFjUWU3WENFSHlBQ0FGRUJ4QmdkZ0lRZk1BSUFVUUhFSHB6d2hCQWlBRkVCeEIrczhJUVFNZ0JSQWNRWW5RQ0VFRUlBVVFIRUdlMEFoQkJTQUZFQnhCdE5BSVFRWWdCUkFjSUFWQmx0Z0lRUUZCNk5ZSUVCMGdCVUd4MkFoQkFVSG8xZ2dRSFNBRlFjN1lDRUVCUWVqV0NCQWRJQVZCNk5nSVFRRkI2TllJRUIwZ0JVR2UwZ2hCQVVIbzFnZ1FHaUFGUWVqU0NFRUJRZWpXQ0JBYUlBVkIvTklJUVFGQjZOWUlFQm9nQmtVTkFDQUZRZlNyQ0VFQlFZU3NDQkFkUWZTckNFSFJBQ0FGRUJ3Z0JVR1htUWhCQVVHQW1RZ1FIVUdYbVFoQkhTQUZFQndnQVVITUEwNEVRRUhDbVFoQkhTQUZFQndMSUFWQnpKa0lRUUZCNEprSUVCMGdCVUhrbVFoQkFVSGdtUWdRSFNBRlFmMlpDRUVCUWVDWkNCQWRJQVZCa3BvSVFRRkI0SmtJRUIwZ0JVR25tZ2hCQVVIZ21RZ1FIU0FGUWJ5YUNFRUJRZUNaQ0JBZElBVkIwWm9JUVFGQjRKa0lFQjFCNUprSVFRb2dCUkFjUWYyWkNFRUxJQVVRSEVHU21naEJEQ0FGRUJ4QnA1b0lRUTBnQlJBY1FieWFDRUVPSUFVUUhFSFJtZ2hCRHlBRkVCd2dBeWdDQ0VFQlRnUkFRY3laQ0VFRFFRa2dCUkRmQVF3QkMwSE1tUWhCQ1NBRkVCd0xRUUFnQWtFSVJpQUJRYlVDU25GRklBSkJDRWNnQVVHTEFVcHhHdzBCSUFWQm50TUlRUUZCckt3SUVCMGdCVUd1MHdoQkFVR3NyQWdRSFNBRlFaeXNDRUVCUWF5c0NCQWRJQVZCc0t3SVFRRkJyS3dJRUIwZ0JVSElyQWhCQVVIY3JBZ1FIU0FGUWVDc0NFRUJRZHlzQ0JBZElBVkI4cXdJUVFGQjNLd0lFQjBnQlVHRXJRaEJBVUhjckFnUUhTQUZRWmF0Q0VFQlFkeXNDQkFkUVo3VENFRUhJQVVRSEVHdTB3aEJDQ0FGRUJ4Qm5Ld0lRUkFnQlJBY1FiQ3NDRUVSSUFVUUhFSElyQWhCRWlBRkVCeEI0S3dJUVJNZ0JSQWNRZktzQ0VFVUlBVVFIRUdFclFoQkZTQUZFQnhCbHEwSVFSWWdCUkFjSUFWQnZOTUlRUUZCckt3SUVCb2dCVUdvclFoQkFVRzRyUWdRSFNBRlFieXRDRUVCUWJpdENCQWRJQVZCeWEwSVFRRkJ1SzBJRUIwZ0JVSFZyUWhCQVVHNHJRZ1FIVUdvclFoQjlBQWdCUkFjUWJ5dENFSDFBQ0FGRUJ4QnlhMElRZllBSUFVUUhFSFZyUWhCOXdBZ0JSQWNEQUVMQWtBZ0FrRUlSeUFCUWNFRFNuRWlCa1ZCQUNBQ1FRaEhJQUZCd0FKSWNoc05BQ0FGUWY3WUNFRUJRZWpXQ0JBZElBVkI2YzhJUVFGQjZOWUlFQjBnQlVINnp3aEJBVUhvMWdnUUhTQUZRWW5RQ0VFQlFlaldDQkFkSUFWQm50QUlRUUZCNk5ZSUVCMGdCVUcwMEFoQkFVSG8xZ2dRSFNBRlFlN1hDRUVCUWVqV0NCQWRJQVZCZ2RnSVFRRkI2TllJRUIxQi90Z0lRZXdBSUFVUUhFSHB6d2hCQWlBRkVCeEIrczhJUVFNZ0JSQWNRWW5RQ0VFRUlBVVFIRUdlMEFoQkJTQUZFQnhCdE5BSVFRWWdCUkFjUWU3WENFSHlBQ0FGRUJ4QmdkZ0lRZk1BSUFVUUhDQUZRWTNaQ0VFQlFlaldDQkFkSUFWQjZOZ0lRUUZCNk5ZSUVCMGdCVUdlMGdoQkFVSG8xZ2dRR2lBRlFlalNDRUVCUWVqV0NCQWFJQVZCL05JSVFRRkI2TllJRUJvZ0JrVU5BQ0FGUWZTckNFRUJRWVNzQ0JBZFFmU3JDRUhSQUNBRkVCd2dCVUdYbVFoQkFVR0FtUWdRSFVHWG1RaEJIU0FGRUJ3Z0FVSE1BMDRFUUVIQ21RaEJIU0FGRUJ3TElBVkJ6SmtJUVFGQjRKa0lFQjBnQlVIa21RaEJBVUhnbVFnUUhTQUZRZjJaQ0VFQlFlQ1pDQkFkSUFWQmtwb0lRUUZCNEprSUVCMGdCVUdubWdoQkFVSGdtUWdRSFNBRlFieWFDRUVCUWVDWkNCQWRJQVZCMFpvSVFRRkI0SmtJRUIxQjVKa0lRUW9nQlJBY1FmMlpDRUVMSUFVUUhFR1NtZ2hCRENBRkVCeEJwNW9JUVEwZ0JSQWNRYnlhQ0VFT0lBVVFIRUhSbWdoQkR5QUZFQndnQXlnQ0NFRUJUZ1JBUWN5WkNFRURRUWtnQlJEZkFRd0JDMEhNbVFoQkNTQUZFQndMUVFBZ0FrRUlSaUFCUWJVQ1NuRkZJQUpCQ0VjZ0FVR0xBVXB4R3cwQUlBVkJudE1JUVFGQnJLd0lFQjBnQlVHdTB3aEJBVUdzckFnUUhTQUZRWnlzQ0VFQlFheXNDQkFkSUFWQnNLd0lRUUZCckt3SUVCMGdCVUhJckFoQkFVSGNyQWdRSFNBRlFlQ3NDRUVCUWR5c0NCQWRJQVZCOHF3SVFRRkIzS3dJRUIwZ0JVR0VyUWhCQVVIY3JBZ1FIU0FGUVphdENFRUJRZHlzQ0JBZFFaN1RDRUVISUFVUUhFR3Uwd2hCQ0NBRkVCeEJuS3dJUVJBZ0JSQWNRYkNzQ0VFUklBVVFIRUhJckFoQkVpQUZFQnhCNEt3SVFSTWdCUkFjUWZLc0NFRVVJQVVRSEVHRXJRaEJGU0FGRUJ4QmxxMElRUllnQlJBY0lBVkJ2Tk1JUVFGQnJLd0lFQm9nQlVHb3JRaEJBVUc0clFnUUhTQUZRYnl0Q0VFQlFiaXRDQkFkSUFWQnlhMElRUUZCdUswSUVCMGdCVUhWclFoQkFVRzRyUWdRSFVHb3JRaEI5QUFnQlJBY1FieXRDRUgxQUNBRkVCeEJ5YTBJUWZZQUlBVVFIRUhWclFoQjl3QWdCUkFjQzBHQURpQUZFSnNPUVlBZElBVVFtdzRnQlJEdkdTQUZRYWZaQ0VIa0FSQVZJQVZCdWRrSVFlVUJFQlVnQlVITTJRaEI1Z0VRRlNBRlFkN1pDRUhuQVJBVklBVkI4ZGtJUWVnQkVCVWdCVUdCMmdoQjZRRVFGU0FGUVpMYUNFSG9BUkFWSUFWQnBkb0lRZWtCRUJVZ0JVRzUyZ2hCNmdFUUZTQUZRY3phQ0VIckFSQVZJQVZCNE5vSVFlb0JFQlVnQlVIdzJnaEI2d0VRRlNBRlFZSGJDRUh3QVJBVklBVkJqdHNJUWZFQkVCVWdCVUdkMndoQjhnRVFGU0FGUWFyYkNFSHpBUkFWSUFWQnVkc0lRZllCRUJVZ0JVSEkyd2hCOXdFUUZTQUZRZG5iQ0VINEFSQVZJQVZCNWRzSVFma0JFQlVnQlVIejJ3aEIrZ0VRRlNBRlFZRGNDRUg3QVJBVklBVkJqOXdJUWY0QkVCVWdCVUdiM0FoQi93RVFGU0FGUWFuY0NFR0FBaEFWSUFWQnR0d0lRWUVDRUJVZ0JVSEYzQWhCZ2dJUUZTQUZRZEhjQ0VHREFoQVZJQVZCMzl3SVFZUUNFQlVnQlVIczNBaEJoUUlRRlNBRlFmdmNDRUg4QVJBVklBVkJpZDBJUWYwQkVCVWdCVUdaM1FoQmhnSVFGU0FGUWFEZENFR0hBaEFWSUFWQnA5MElRWWdDRUJVZ0JVR3UzUWhCaVFJUUZTQUZRYmZkQ0VHS0FoQVZJQVZCd04wSVFZc0NFQlVnQlVHUDB3aEJyd0lRRlNBRlFhYlNDRUd4QWhBVklBVkIxZElJUWJNQ0VCVWdCVUhJM1FoQnJBTVFGU0FGUWRQZENFR3RBeEFWSUFWQnFMUUlRYTRERUJVZ0JVSEV0QWhCcndNUUZTQUZRZHUwQ0VHd0F4QVZJQVZCa0w0SVFmVUZFQlVnQlVHZ3ZnaEI5UVVRRlNBRlFhMitDRUgyQlJBVklBVkJ4TDRJUWZZRkVCVWdBa0VJUnlBQlFjc0RTbkVpQmtFQlJnUkFJQVZCMzkwSVFiRURFQlVnQlVIdzNRaEJzZ01RRlNBRlFZYmVDRUd6QXhBVklBVkJsOTRJUWJRREVCVWdCVUdvM2doQnRRTVFGU0FGUWJuZUNFRzJBeEFWSUFWQnlkNElRYmNERUJVZ0JVSGEzZ2hCdUFNUUZTQUZRZkRlQ0VHNUF4QVZDeUFGUVpDbUNFSGRBUkFWSUFWQmh0OElRZDRCRUJVZ0JVR00zd2hCM3dFUUZTQUZRWkxmQ0VHYUJSQVZJQVZCbk44SVFac0ZFQlVnQlVHbjN3aEJuQVVRRlNBRlFiVGZDRUdkQlJBVklBVkJ3ZDhJUVo0RkVCVWdCVUhSM3doQm53VVFGU0FGUWVEZkNFR2dCUkFWSUFWQjhOOElRYUVGRUJVZ0JVSDUzd2hCb2dVUUZTQUZRWUhnQ0VHakJSQVZJQVZCdjg4SVFjRURFQlVnQlVIdG9RaEJwQVVRRlNBRlFZU2lDRUdsQlJBVklBVkJsNklJUWFZRkVCVWdCVUdxb2doQnB3VVFGU0FGUWJhaUNFR29CUkFWSUFWQng2SUlRYWtGRUJVZ0JVSFBvZ2hCcWdVUUZTQUZRZDZpQ0VHckJSQVZBa0JCNE8wU0xRQUFSUTBBSUFWQmllQUlRY2NFRUJVZ0JVR1Q0QWhCeUFRUUZTQUZRYURnQ0VISkJCQVZJQVZCcXVBSVFjb0VFQlVnQlVHVXBnaEJ6UVFRRlNBRlFhaW1DRUhPQkJBVklBVkJ0NllJUWM4RUVCVWdCVUhHcGdoQjBBUVFGU0FGUWRXbUNFSFJCQkFWSUFWQjQ2WUlRZElFRUJVZ0JVSHlwZ2hCMHdRUUZTQUZRWWFuQ0VIVUJCQVZJQVZCdGVBSVFkVUVFQlVnQlVIRjRBaEIxZ1FRRlNBRlFkYmdDRUhYQkJBVklBVkI0dUFJUWRnRUVCVWdCVUdzN2dkQjhBUVFGU0FGUWZEZ0NFSHhCQkFWSUFWQjhLVUlRZklFRUJVZ0JVR0U0UWhCcWdJUUZTQUZRWXZoQ0VHcUFoQVZJQVZCa3VFSVFhb0NFQlVnQlVHWjRRaEJxZ0lRRlNBRlFleWlDRUdTQlJBVklBVkJoS01JUVpNRkVCVWdCVUdjb3doQmxBVVFGU0FGUWJLakNFR1ZCUkFWSUFWQnlhTUlRWllGRUJVQ1FDQURLQUlBRFFBZ0FTQUNJQU1RNVFJRVFDQUZRYURoQ0VHcEFoQVZDeUFES0FJQURRQWdBU0FDSUFNUTVRSkZRUUFnQVVIa0FFY2dBa0VJUjNJYkRRQWdCVUdyNFFoQjRnUVFGU0FGUWV5eENFSHNCQkFWSUFWQnRlRUlRZU1FRUJVZ0JVSDlzUWhCN2dRUUZTQUZRY1N3Q0VIa0JCQVZJQVZCZ2JFSVFlb0VFQlVnQlVIRDRRaEI0Z1FRRlNBRlFkSGhDRUhqQkJBVklBVkJ1Yk1JUWV3RUVCVWdCVUhPc3doQjdnUVFGU0FGUWVQaENFSGlCQkFWSUFWQjhPRUlRZU1FRUJVZ0JVSG5zd2hCN0FRUUZTQUZRZnV6Q0VIdUJCQVZJQVZCZ2VJSVFlSUVFQlVnQlVHTDRnaEI0d1FRRlNBRlFiQ2xDRUhzQkJBVklBVkJrcklJUWV3RUVCVWdCVUhJcFFoQjdnUVFGU0FGUWFPeUNFSHVCQkFWSUFWQjJMQUlRZVFFRUJVZ0JVRzByd2hCNUFRUUZTQUZRWkt4Q0VIcUJCQVZJQVZCeEs4SVFlb0VFQlVnQlVHWjRnaEI0Z1FRRlNBRlFiaXlDRUhzQkJBVklBVkJvK0lJUWVNRUVCVWdCVUhKc2doQjdnUVFGU0FGUWVXd0NFSGtCQkFWSUFWQm83RUlRZW9FRUJVZ0JVR3g0Z2hCNGdRUUZTQUZRZDJsQ0VIc0JCQVZJQVZCM3JJSVFld0VFQlVnQlVIeXNBaEI1QVFRRlNBRlFkaXZDRUhrQkJBVklBVkJ2ZUlJUWVJRUVCVWdCVUh4c2doQjdBUVFGU0FGUWNiaUNFSGlCQkFWSUFWQmxiTUlRZXdFRUJVZ0JVSFA0Z2hCNHdRUUZTQUZRZHppQ0VIakJCQVZJQVZCZ2JNSVFlNEVFQlVnQlVHbHN3aEI3Z1FRRlNBRlFiU3hDRUhrQkJBVklBVkJ3TEVJUWVRRUVCVWdCVUhNc1FoQjZnUVFGU0FGUWR5eENFSHFCQkFWQ3lBQ1FRaEdJZ05GQkVBZ0JVR3Z0UWhCL1FRUUZTQUZRY1MxQ0VIK0JCQVZJQVZCMkxVSVFmOEVFQlVnQlVIdnRRaEJnQVVRRlNBRlFZTzJDRUdCQlJBVklBVkJuYllJUVlJRkVCVWdCVUczdGdoQmd3VVFGU0FGUWN5MkNFR0VCUkFWSUFWQjU3WUlRWVVGRUJVZ0JVSCt0Z2hCaGdVUUZTQUZRWnUzQ0VHSEJSQVZJQVZCdWJjSVFka0VFQlVnQlVIcDRnaEJpQVVRRlNBRlFlRzNDRUdKQlJBVklBVkIvTGNJUVlvRkVCVWdCVUdZdUFoQml3VVFGU0FGUWJLNENFR01CUkFWSUFWQjByZ0lRZk1FRUJVZ0JVSGl1QWhCOUFRUUZTQUZRZmk0Q0VIMUJCQVZJQVZCakxrSVFmWUVFQlVnQlVIbW1naEJ0Z0lRRlNBRlFmQ2FDRUczQWhBVklBVkJncHNJUWJnQ0VCVWdBVUd1QTA0RVFDQUZRWm1iQ0VHNUFoQVZJQVZCc0pzSVFib0NFQlVnQlVIQ213aEJ1d0lRRlFzZ0FVSE1BMDRFUUNBRlFZSGpDRUc1QWhBVklBVkJqK01JUWJvQ0VCVWdCVUdlNHdoQnV3SVFGUXNnQlVIWm13aEJpd01RRlNBRlFmQ2JDRUdNQXhBVklBVkJncHdJUVkwREVCVWdCVUdVbkFoQmpnTVFGU0FGUWJDY0NFR1BBeEFWSUFWQnpKd0lRWkFERUJVZ0JVRzduUWhCa1FNUUZTQUZRZHFkQ0VHU0F4QVZJQVZCK1owSVFaTURFQlVnQlVHWW5naEJsQU1RRlNBRlFjR2VDRUdWQXhBVklBVkI2cDRJUVpZREVCVWdCVUdUbndoQmx3TVFGU0FGUWJLZkNFR1lBeEFWSUFWQjBaOElRWmtERUJVZ0JVSHdud2hCbWdNUUZTQUZRWm1nQ0VHYkF4QVZJQVZCd3FBSVFad0RFQlVnQlVIb25BaEJuUU1RRlNBRlFiTGpDRUdlQXhBVklBVkJuNTBJUVo4REVCVWdCVUd5blFoQm9BTVFGU0FGUWV1Z0NFR1VBaEFWSUFWQjlLQUlRWlVDRUJVZ0JVSDVvQWhCbGdJUUZTQUZRWmloQ0VHaEF4QVZJQVZCcWFFSVFhSURFQlVnQlVHNm9RaEJvd01RRlNBRlFZQzdDRUgzQkJBVklBVkJtTHNJUWZnRUVCVWdCVUd5dXdoQitRUVFGU0FGUWMyN0NFR05CUkFWSUFWQjU3c0lRWTRGRUJVZ0JVR0h2QWhCandVUUZTQUZRYWk4Q0VITEJCQVZJQVZCdkx3SVFjd0VFQlVnQlVITnZBaEIyZ1FRRlNBRlFjS2hDRUg2QkJBVklBVkIzS0VJUWZzRUVCVUxRUUFnQVVHMUFrb2dBM0ZGSUFKQkNFY2dBVUdMQVVweEcwVUVRQ0FGUWVTK0NFRzlBaEFWSUFWQjlMNElRYjRDRUJVZ0JVR0t2d2hCdndJUUZTQUZRYWEvQ0VIQUFoQVZJQVZCd2I4SVFjSUNFQlVnQlVIUHZ3aEJ3d0lRRlNBRlFlQy9DRUhFQWhBVklBVkI3TDhJUWNVQ0VCVWdCVUg5dndoQnhnSVFGU0FGUVkvQUNFSEhBaEFWSUFWQnBzQUlRY2dDRUJVZ0JVRzF3QWhCeVFJUUZTQUZRY3ZBQ0VIS0FoQVZJQVZCNU1BSVFjc0NFQlVnQlVIN3dBaEJ6QUlRRlNBRlFadkJDRUhOQWhBVklBVkJ1OEVJUWM0Q0VCVWdCVUhSd1FoQnp3SVFGU0FGUWVmQkNFSFFBaEFWSUFWQi9NRUlRZEVDRUJVZ0JVR1B3Z2hCMGdJUUZTQUZRYWpDQ0VIVEFoQVZJQVZCdk1JSVFkUUNFQlVnQlVITXdnaEIxUUlRRlNBRlFkakNDRUhXQWhBVklBVkI1TUlJUWRjQ0VCVWdCVUh3d2doQjJBSVFGU0FGUWZ6Q0NFSFpBaEFWSUFWQmg4TUlRZG9DRUJVZ0JVR1R3d2hCMndJUUZTQUZRYWpEQ0VIY0FoQVZJQVZCdmNNSVFkMENFQlVnQlVIU3d3aEIzZ0lRRlNBRlFlZkRDRUhmQWhBVklBVkIvTU1JUWVBQ0VCVWdCVUdReEFoQjRRSVFGU0FGUWFYRUNFSGlBaEFWSUFWQnVzUUlRZU1DRUJVZ0JVSFB4QWhCNUFJUUZTQUZRZVRFQ0VIbEFoQVZJQVZCK2NRSVFlWUNFQlVnQlVHT3hRaEI1d0lRRlNBRlFhTEZDRUhvQWhBVklBVkJ0OFVJUWVrQ0VCVWdCVUhReFFoQjZnSVFGU0FGUWVYRkNFSHJBaEFWSUFWQitzVUlRZXdDRUJVZ0JVR1B4Z2hCN1FJUUZTQUZRYVRHQ0VIdUFoQVZJQVZCdU1ZSVFlOENFQlVnQlVITnhnaEI4QUlRRlNBRlFlakdDRUh4QWhBVklBVkJnOGNJUWZJQ0VCVWdCVUdjeHdoQjh3SVFGU0FGUWJYSENFSDBBaEFWSUFWQjBNY0lRZlVDRUJVZ0JVSHB4d2hCOWdJUUZTQUZRWUxJQ0VIM0FoQVZJQVZCbThnSVFmZ0NFQlVnQlVHMHlBaEIrUUlRRlNBRlFjM0lDRUg2QWhBVklBVkI1Y2dJUWZzQ0VCVWdCVUgreUFoQi9BSVFGU0FGUWFESkNFSDlBaEFWSUFWQndza0lRZjRDRUJVZ0JVSGt5UWhCL3dJUUZTQUZRWWJLQ0VHQUF4QVZJQVZCcU1vSVFZRURFQlVnQlVISnlnaEJnZ01RRlNBRlFldktDRUdEQXhBVklBVkJqY3NJUVlRREVCVWdCVUd2eXdoQmhRTVFGU0FGUWRITENFR0dBeEFWSUFWQjg4c0lRWWNERUJVZ0JVR1Z6QWhCaUFNUUZTQUZRYmJNQ0VHSkF4QVZDeUFDUVFoSERRQWdCVUd3cHdoQjRnUVFGU0FGUWNDbkNFSGpCQkFWQ3dKQUlBUkJmV29pQTBFS1N3MEFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU5CQVdzT0NnRUNBd1FGQXdNR0NBY0FDeUFGUWM3akNFR3RBaEFWSUFWQjMrTUlRYTRDRUJVZ0JVSHk0d2hCcXdJUUZTQUZRZjNqQ0VHc0FoQVZEQWdMSUFKQkNFWWdBVUdRQTBoeVJRUkFJQVZCNmJRSVFab0NFQlVnQlVINHRBaEJtd0lRRlNBRlFZRzFDRUdjQWhBVklBVkJqTFVJUVowQ0VCVWdCVUdYdFFoQm5nSVFGU0FGUWFLMUNFR2ZBaEFWQ3lBRlFZQ3dDRUdnQWhBVklBVkJuTEFJUWFFQ0VCVWdCVUd3c0FoQm9nSVFGU0FDUVFoSEJFQWdCVUhwdWdoQm93SVFGUXNnQlVHSzVBaEJ2d01RRlNBRlFhYmtDRUhBQXhBVkRBY0xJQVZCdk5NSVFjRUNFQlVnQVVIQ0EwNUJBQ0FDUVFoSEcwVkJBQ0FDUVFoSElBRkJ3QUpJY2h0RkJFQWdCVUhxcndoQmx3SVFGU0FGUWZTdkNFR1lBaEFWSUFWQithOElRWmtDRUJVZ0JVSHB0QWhCbWdJUUZTQUZRZmkwQ0VHYkFoQVZJQVZCZ2JVSVFad0NFQlVnQlVHTXRRaEJuUUlRRlNBRlFaZTFDRUdlQWhBVklBVkJvclVJUVo4Q0VCVUxJQVZCb05RSVFid0RFQlVnQlVHdTFBaEJ2UU1RRlNBRlFiM1VDRUcrQXhBVkRBWUxJQVpGRFFVZ0JVSEE1QWhCckFVUUZTQUZRY2prQ0VHd0JSQVZEQVVMSUFaRkRRUWdCVUhhNUFoQnJRVVFGUXdFQ3lBR1JRMERJQVZCNytRSVFhNEZFQlVnQlVHRTVRaEJyd1VRRlF3REN5QUdSUTBDSUFWQnlPUUlRYkFGRUJVTUFnc2dBVUhDQTA1QkFDQUNRUWhIRzBWQkFDQUNRUWhISUFGQndBSkljaHNOQUNBRlFaUGxDRUd4QlJBVkN5QUJRY0lEVGtFQUlBSkJDRWNiUlVFQUlBSkJDRWNnQVVIQUFraHlHdzBBSUFWQjZOSUlRYlFDRUJVZ0JVSDgwZ2hCdFFJUUZTQUZRYnpUQ0VIQkFoQVZDeUFBUVJCcUpBQUxvQUVCQTM4akFFRVFheUlESkFBZ0FVRVFhaUlFSUFBZ0FDZ0NBQ2dDREJFQUFCQVRFQkJCZ004UEVCQWhCUUpBSUFJRVFDQURJQUJCRkdvUXlnRWdCU0FERUxrQkdpQURFQmthSUFBZ0FSRG5EUXdCQ3lBRklBQkJGR29pQUJESkJCQVFRWVBQRHhBUUlRRWdBeUFBRUtrQ0lBRWdBeEM1QVJvZ0F4QVpHaUFBRUlRR1JRMEFJQVJCaGM4UEVCQWFDeUFFUVluUER4QVFHaUFEUVJCcUpBQUxMd0VCZnlBQUVJa0VJQUFRd1FFRVFDQUFLQUlBSVFFZ0FCQmRHaUFCRUNvZ0FFRUFFT2tCSUFCQkFCRFVBUXNMQmdBUWdnRUFDL0l0QWdKL0FYNGpBRUhRRUdzaUJpUUFJQUJCQkdvaEFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQURRUWhHQkVBZ0JpQUJLQUlRTmdLQUNTQUdRWUFQYWtISUFVSFI3Z2NnQmtHQUNXb1FKeG9nQUNBR1FZQVBhaEFTR2lBR0lBRW9BakEyQXZBSUlBWkJnQTlxUWNnQlFmN3VCeUFHUWZBSWFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NIRFlDNEFnZ0JrR0FEMnBCeUFGQnN1OEhJQVpCNEFocUVDY2FJQUFnQmtHQUQyb1FFaG9nQmlBQktBSWdOZ0xRQ0NBR1FZQVBha0hJQVVIcDd3Y2dCa0hRQ0dvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FpUTJBc0FJSUFaQmdBOXFRY2dCUWFMd0J5QUdRY0FJYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQVlnQVNnQ09EWUNzQWdnQmtHQUQycEJ5QUZCMC9BSElBWkJzQWhxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FJc05nS2dDQ0FHUVlBUGFrSElBVUdKOFFjZ0JrR2dDR29RSnhvZ0FDQUdRWUFQYWhBU0dpQUNRZVFBUmdSQUlBWWdBU2dDTkRZQ1VDQUdRWUFQYWtISUFVRzA4UWNnQmtIUUFHb1FKeG9nQUNBR1FZQVBhaEFTR2tFQUlRUU1DZ3NnQmlBQktBSThOZ0tRQ0NBR1FZQVBha0hJQVVIaThRY2dCa0dRQ0dvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FrQTJBb0FJSUFaQmdBOXFRY2dCUVpYeUJ5QUdRWUFJYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQVlnQVNnQ1JEWUM4QWNnQmtHQUQycEJ5QUZCeWZJSElBWkI4QWRxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FKSU5nTGdCeUFHUVlBUGFrSElBVUg3OGdjZ0JrSGdCMm9RSnhvZ0FDQUdRWUFQYWhBU0drRUFJUVFnQWtHMkFrZ05DU0FHSUFFb0FvUUJOZ0xRQnlBR1FZQVBha0hJQVVHdDh3Y2dCa0hRQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FvZ0JOZ0xBQnlBR1FZQVBha0hJQVVIYjh3Y2dCa0hBQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0Fxd0JOZ0t3QnlBR1FZQVBha0hJQVVHSzlBY2dCa0d3QjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FyZ0JOZ0tnQnlBR1FZQVBha0hJQVVHMjlBY2dCa0dnQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0Fyd0JOZ0tRQnlBR1FZQVBha0hJQVVIbTlBY2dCa0dRQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FzQUJOZ0tBQnlBR1FZQVBha0hJQVVHVDlRY2dCa0dBQjJvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FzUUJOZ0x3QmlBR1FZQVBha0hJQVVISDlRY2dCa0h3Qm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0Fvd0NOZ0xnQmlBR1FZQVBha0hJQVVIMzlRY2dCa0hnQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FxZ0NOZ0xRQmlBR1FZQVBha0hJQVVHazlnY2dCa0hRQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0Fzd0JOZ0xBQmlBR1FZQVBha0hJQVVIWDlnY2dCa0hBQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F0QUJOZ0t3QmlBR1FZQVBha0hJQVVHSTl3Y2dCa0d3Qm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F0UUJOZ0tnQmlBR1FZQVBha0hJQVVHNjl3Y2dCa0dnQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F0Z0JOZ0tRQmlBR1FZQVBha0hJQVVIdDl3Y2dCa0dRQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F0d0JOZ0tBQmlBR1FZQVBha0hJQVVHZytBY2dCa0dBQm1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F1QUJOZ0x3QlNBR1FZQVBha0hJQVVIWCtBY2dCa0h3QldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F1UUJOZ0xnQlNBR1FZQVBha0hJQVVHTCtRY2dCa0hnQldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F1Z0JOZ0xRQlNBR1FZQVBha0hJQVVIQStRY2dCa0hRQldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F1d0JOZ0xBQlNBR1FZQVBha0hJQVVIMitRY2dCa0hBQldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F2QUJOZ0t3QlNBR1FZQVBha0hJQVVHcytnY2dCa0d3QldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F2UUJOZ0tnQlNBR1FZQVBha0hJQVVIVytnY2dCa0dnQldvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0F2Z0JOZ0tRQlNBR1FZQVBha0hJQVVINitnY2dCa0dRQldvUUp4b2dBQ0FHUVlBUGFoQVNHa0VCSVFjZ0JVRi9ha0VCVFFSQUlBQkJuZnNIRUJJYUN5QUNRY0FDU0EwQklBWWdBU2dDcEFFMkFvQUZJQVpCZ0E5cVFjZ0JRY0g4QnlBR1FZQUZhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDcUFFMkF2QUVJQVpCZ0E5cVFjZ0JRZkQ4QnlBR1FmQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDaEFJMkF1QUVJQVpCZ0E5cVFjZ0JRYUw5QnlBR1FlQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDaUFJMkF0QUVJQVpCZ0E5cVFjZ0JRZEw5QnlBR1FkQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDb0FJMkFzQUVJQVpCZ0E5cVFjZ0JRWVgrQnlBR1FjQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDcEFJMkFyQUVJQVpCZ0E5cVFjZ0JRYnYrQnlBR1FiQUVhaEFuR2lBQUlBWkJnQTlxRUJJYURBRUxJQUpCa1FOT0JFQWdCaUFCS0FJd05nTHdEaUFHUVlBUGFrSElBVUgwL2djZ0JrSHdEbW9RSnhvZ0FDQUdRWUFQYWhBU0dpQUdJQUVvQWpnMkF1QU9JQVpCZ0E5cVFjZ0JRYUQvQnlBR1FlQU9haEFuR2lBQUlBWkJnQTlxRUJJYUN5QUdJQUVvQWhBMkF0QU9JQVpCZ0E5cVFjZ0JRYzcvQnlBR1FkQU9haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDSERZQ3dBNGdCa0dBRDJwQnlBRkI4LzhISUFaQndBNXFFQ2NhSUFBZ0JrR0FEMm9RRWhvZ0JpQUJLQUlnTmdLd0RpQUdRWUFQYWtISUFVR2lnQWdnQmtHd0Rtb1FKeG9nQUNBR1FZQVBhaEFTR2lBR0lBRW9BaVEyQXFBT0lBWkJnQTlxUWNnQlFkT0FDQ0FHUWFBT2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NMRFlDa0E0Z0JrR0FEMnBCeUFGQi9JQUlJQVpCa0E1cUVDY2FJQUFnQmtHQUQyb1FFaG9nQmlBQktBSUFOZ0tBRGlBR1FZQVBha0hJQVVHZmdRZ2dCa0dBRG1vUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FnUTJBdkFOSUFaQmdBOXFRY2dCUWIyQkNDQUdRZkFOYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQVlnQVNnQ0NEWUM0QTBnQmtHQUQycEJ5QUZCMzRFSUlBWkI0QTFxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FJTU5nTFFEU0FHUVlBUGFrSElBVUdEZ2dnZ0JrSFFEV29RSnhvZ0FDQUdRWUFQYWhBU0dpQUdJQUVvQWhRMkFzQU5JQVpCZ0E5cVFjZ0JRYWlDQ0NBR1FjQU5haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDR0RZQ3NBMGdCa0dBRDJwQnlBRkIxNElJSUFaQnNBMXFFQ2NhSUFBZ0JrR0FEMm9RRWhvZ0JpQUJLQUlvTmdLZ0RTQUdRWUFQYWtISUFVSDhnZ2dnQmtHZ0RXb1FKeG9nQUNBR1FZQVBhaEFTR2dKQUlBUW9BZ0FOQUNBQ0lBTWdCQkRsQWtVTkFDQUFRYTJEQ0JBU0dndEJBQ0VFSUFKQmdnRklEUWdnQmlBQktBSk1OZ0tRRFNBR1FZQVBha0hJQVVISGlnZ2dCa0dRRFdvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FudzJBb0FOSUFaQmdBOXFRY2dCUWV1S0NDQUdRWUFOYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQVlnQVNnQ1JEWUM4QXdnQmtHQUQycEJ5QUZCeWZJSElBWkI4QXhxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FKSU5nTGdEQ0FHUVlBUGFrSElBVUg3OGdjZ0JrSGdER29RSnhvZ0FDQUdRWUFQYWhBU0dpQUNRWllCVGdSQUlBWWdBU2dDaEFFMkF0QU1JQVpCZ0E5cVFjZ0JRYTN6QnlBR1FkQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDaUFFMkFzQU1JQVpCZ0E5cVFjZ0JRZHZ6QnlBR1FjQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDdUFFMkFyQU1JQVpCZ0E5cVFjZ0JRYmIwQnlBR1FiQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDdkFFMkFxQU1JQVpCZ0E5cVFjZ0JRZWIwQnlBR1FhQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDd0FFMkFwQU1JQVpCZ0E5cVFjZ0JRWlAxQnlBR1FaQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDeEFFMkFvQU1JQVpCZ0E5cVFjZ0JRY2YxQnlBR1FZQU1haEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDeUFFMkF2QUxJQVpCZ0E5cVFjZ0JRWk9MQ0NBR1FmQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDZ0FFMkF1QUxJQVpCZ0E5cVFjZ0JRY09MQ0NBR1FlQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDakFFMkF0QUxJQVpCZ0E5cVFjZ0JRZkNMQ0NBR1FkQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDekFFMkFzQUxJQVpCZ0E5cVFjZ0JRZGYyQnlBR1FjQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDMEFFMkFyQUxJQVpCZ0E5cVFjZ0JRWWozQnlBR1FiQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDMUFFMkFxQUxJQVpCZ0E5cVFjZ0JRYnIzQnlBR1FhQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDMkFFMkFwQUxJQVpCZ0E5cVFjZ0JRZTMzQnlBR1FaQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDM0FFMkFvQUxJQVpCZ0E5cVFjZ0JRYUQ0QnlBR1FZQUxhaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDNEFFMkF2QUtJQVpCZ0E5cVFjZ0JRZGY0QnlBR1FmQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDNUFFMkF1QUtJQVpCZ0E5cVFjZ0JRWXY1QnlBR1FlQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDNkFFMkF0QUtJQVpCZ0E5cVFjZ0JRY0Q1QnlBR1FkQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDN0FFMkFzQUtJQVpCZ0E5cVFjZ0JRZmI1QnlBR1FjQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDOEFFMkFyQUtJQVpCZ0E5cVFjZ0JRYXo2QnlBR1FiQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDK0FFMkFxQUtJQVpCZ0E5cVFjZ0JRZnI2QnlBR1FhQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBWWdBU2dDOUFFMkFwQUtJQVpCZ0E5cVFjZ0JRZGI2QnlBR1FaQUthaEFuR2lBQUlBWkJnQTlxRUJJYUlBVkJmMnBCQVUwRVFDQUFRZU9sQnhBU0dpQURRUVJHQkVBZ0FFR1NuZ2NRRWhvTElBSkJ3Z05PQkVBZ0FFR3hwZ2NRRWhvTElBQkJub3dJRUJJYUN5QUdJQUVvQXZ3Qk5nS0FDaUFHUVlBUGFrSElBVUc5akFnZ0JrR0FDbW9RSnhvZ0FDQUdRWUFQYWhBU0dnc2dCaUFCS0FLVUFUWUM4QWtnQmtHQUQycEJ5QUZCM1l3SUlBWkI4QWxxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FLY0FUWUM0QWtnQmtHQUQycEJ5QUZCbUkwSUlBWkI0QWxxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FLa0FUWUMwQWtnQmtHQUQycEJ5QUZCd2Z3SElBWkIwQWxxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FLb0FUWUN3QWtnQmtHQUQycEJ5QUZCOFB3SElBWkJ3QWxxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FLc0FUWUNzQWtnQmtHQUQycEJ5QUZCaXZRSElBWkJzQWxxRUNjYUlBQWdCa0dBRDJvUUVob2dBa0d1QTA0RVFDQUdJQUVvQXJnQ05nS2dDU0FHUVlBUGFrSElBVUc3alFnZ0JrR2dDV29RSnhvZ0FDQUdRWUFQYWhBU0dpQUdJQUVvQXJ3Q05nS1FDU0FHUVlBUGFrSElBVUhxalFnZ0JrR1FDV29RSnhvZ0FDQUdRWUFQYWhBU0dnd0JDeUFDUWFRRFNBMEJDeUFCS1FKUUlRZ2dCaUFCS0FKWU5nS29CQ0FHSUFnM0E2QUVJQVpCZ0E5cVFjZ0JRYWVPQ0NBR1FhQUVhaEFuR2lBQUlBWkJnQTlxRUJJYUlBRXBBbHdoQ0NBR0lBRW9BbVEyQXBnRUlBWWdDRGNEa0FRZ0JrR0FEMnBCeUFGQjRvNElJQVpCa0FScUVDY2FJQUFnQmtHQUQyb1FFaG9nQmlBQktBSm9OZ0tBQkNBR1FZQVBha0hJQVVHY2p3Z2dCa0dBQkdvUUp4b2dBQ0FHUVlBUGFoQVNHaUFHSUFFb0FtdzJBdkFESUFaQmdBOXFRY2dCUWN1UENDQUdRZkFEYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQUJCOStZR0VCSWFRUUVoQkNBSERRRUxRUUFoQkNBRFFRaEdEUUVMSUFZZ0FTZ0NrQUUyQXVBRElBWkJnQTlxUWNnQlFmcVBDQ0FHUWVBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NtQUUyQXRBRElBWkJnQTlxUWNnQlFadVFDQ0FHUWRBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NvQUUyQXNBRElBWkJnQTlxUWNnQlFjK1FDQ0FHUWNBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NzQUUyQXJBRElBWkJnQTlxUWNnQlFmbVFDQ0FHUWJBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0N0QUUyQXFBRElBWkJnQTlxUWNnQlFhV1JDQ0FHUWFBRGFoQW5HaUFBSUFaQmdBOXFFQklhUVFFaEJTQUVEUUVMSUFKQnBBTklEUUZCQUNFRklBTkJDRVlOQVFzZ0JpQUJLQUp3TmdLUUF5QUdRWUFQYWtISUFVSFJrUWdnQmtHUUEyb1FKeG9nQUNBR1FZQVBhaEFTR2lBR0lBRW9BblEyQW9BRElBWkJnQTlxUWNnQlFmeVJDQ0FHUVlBRGFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NlRFlDOEFJZ0JrR0FEMnBCeUFGQnFKSUlJQVpCOEFKcUVDY2FJQUFnQmtHQUQyb1FFaG9nQUVIMzVnWVFFaHBCQVNFSElBVU5BUXRCQUNFSElBTkJDRVlnQWtHa0EwaHlEUUVMSUFZZ0FTZ0NnQUkyQXVBQ0lBWkJnQTlxUWNnQlFkcVNDQ0FHUWVBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NrQUkyQXRBQ0lBWkJnQTlxUWNnQlFZV1RDQ0FHUWRBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NsQUkyQXNBQ0lBWkJnQTlxUWNnQlFiS1RDQ0FHUWNBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NtQUkyQXJBQ0lBWkJnQTlxUWNnQlFkK1RDQ0FHUWJBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NuQUkyQXFBQ0lBWkJnQTlxUWNnQlFZdVVDQ0FHUWFBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NyQUkyQXBBQ0lBWkJnQTlxUWNnQlFieVVDQ0FHUVpBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NzQUkyQW9BQ0lBWkJnQTlxUWNnQlFlK1VDQ0FHUVlBQ2FoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0N0QUkyQXZBQklBWkJnQTlxUWNnQlFhS1ZDQ0FHUWZBQmFoQW5HaUFBSUFaQmdBOXFFQklhQ3lBRFFRaEhJUVFDUUNBRFFRaEdJQUpCcEFOSWNnUi9JQVFGSUFZZ0FTZ0NoQUkyQXVBQklBWkJnQTlxUWNnQlFhTDlCeUFHUWVBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NpQUkyQXRBQklBWkJnQTlxUWNnQlFkTDlCeUFHUWRBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NqQUkyQXNBQklBWkJnQTlxUWNnQlFmZjFCeUFHUWNBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NvQUkyQXJBQklBWkJnQTlxUWNnQlFZWCtCeUFHUWJBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NwQUkyQXFBQklBWkJnQTlxUWNnQlFiditCeUFHUWFBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFZZ0FTZ0NxQUkyQXBBQklBWkJnQTlxUWNnQlFhVDJCeUFHUVpBQmFoQW5HaUFBSUFaQmdBOXFFQklhSUFCQjkrWUdFQklhUVFFTFJTQUNRY0lEU0hKRkJFQWdCaUFCS0FMQUFqWUNnQUVnQmtHQUQycEJ5QUZCMEpVSUlBWkJnQUZxRUNjYUlBQWdCa0dBRDJvUUVob2dCaUFCS0FMRUFqWUNjQ0FHUVlBUGFrSElBVUgwbFFnZ0JrSHdBR29RSnhvZ0FDQUdRWUFQYWhBU0drRUJJUVFNQVF0QkFDRUVJQWRGRFFFTElBWWdBU2dDeUFJMkFtQWdCa0dBRDJwQnlBRkJwNVlJSUFaQjRBQnFFQ2NhSUFBZ0JrR0FEMm9RRWhvTFFRQWdBMEVJUmlBQ1FiOENTbkZGSUFRYlJRUkFJQVlnQVNnQ3pBSTJBa0FnQmtHQUQycEJ5QUZCeFpZSUlBWkJRR3NRSnhvZ0FDQUdRWUFQYWhBU0dpQUdJQUVvQXRBQ05nSXdJQVpCZ0E5cVFjZ0JRZkNXQ0NBR1FUQnFFQ2NhSUFBZ0JrR0FEMm9RRWhvZ0FTa0MxQUloQ0NBR0lBRW9BdHdDTmdJb0lBWWdDRGNESUNBR1FZQVBha0hJQVVHZGx3Z2dCa0VnYWhBbkdpQUFJQVpCZ0E5cUVCSWFJQUVwQXVBQ0lRZ2dCaUFCS0FMb0FqWUNHQ0FHSUFnM0F4QWdCa0dBRDJwQnlBRkIxcGNJSUFaQkVHb1FKeG9nQUNBR1FZQVBhaEFTR2lBR0lBRW9BdXdDTmdJQUlBWkJnQTlxUWNnQlFZK1lDQ0FHRUNjYUlBQWdCa0dBRDJvUUVob2dBRUgzNWdZUUVob0xJQUJCOStZR0VCSWFJQVpCMEJCcUpBQUxJZ0VCZnlNQVFSQnJJZ0lrQUNBQUlBRWdBR3NRN2cwaEFDQUNRUkJxSkFBZ0FBdEtBUUYvSXdCQkVHc2lCU1FBSUFFUUpTSUJJQUJCQVJDT0RpQUZRUWhxSUFGQkFCRERBUkNSQVNJQUtBSUFRUkJxSUFJZ0F5QUVFTThISUFBUUpVRUJPZ0FFSUFWQkVHb2tBQXVTQVFFRGZ5QUFFRHdoQXlBQUVDVWhCUUpBSUFNRVFBSkFBMEFDUUFKL0lBQVFHeUFDSUFOQkVHb2lCQkNmQlFSQUlBTW9BZ0JGRFFZZ0F3d0JDeUFBRUJzZ0JDQUNFSjhGUlEwRElBTkJCR29oQkNBREtBSUVSUTBCSUFRaUF3c2hCU0FES0FJQUlRTU1BUXNMSUFFZ0F6WUNBQ0FFRHdzZ0FTQUROZ0lBSUFVUEN5QUFFQ1VoQXdzZ0FTQUROZ0lBSUFNTGdnRUJBbjhqQUVFZ2F5SUZKQUFnQVNBRlFSeHFJQUlRdFJraUJpZ0NBQ0VDSUFWQkFEb0FHeUFDUlFSQUlBVkJDR29nQVVIQXl3OGdBeUFFRUxRWklBRWdCU2dDSENBR0lBVW9BZ2dRN2dJZ0JVRUlhaEJmSVFJZ0JVRUJPZ0FiSUFWQkNHb1Fzd0lMSUFBZ0JVRUlhaUFDRURFZ0JVRWJhaENpQVNBRlFTQnFKQUFMV1FFQ2Z5TUFRU0JySWdNa0FDQUFFQnNpQWlBRFFRaHFJQUFnQUJDbkFVRUJhaENPQnlBQUVLY0JJQUlRalFjaUFpZ0NDQ0FCRUtBRklBSWdBaWdDQ0VFTWFqWUNDQ0FBSUFJUTl3MGdBaENNQ1NBRFFTQnFKQUFMU3dFQmZ5TUFRUkJySWdJa0FBSkFJQUFvQWdRZ0FCQWJLQUlBU1FSQUlBQVFHeUFBS0FJRUlBRVFvQVVnQUNBQUtBSUVRUXhxTmdJRURBRUxJQUFnQVJDM0dRc2dBa0VRYWlRQUN3a0FJQUFRaGdrUUtnc0hBQ0FBTFFBUUN3UUFRUUVMREFBZ0FCQ0dDUm9nQUJBcUN6RUJBWDhnQVNBQUtBSUVJZ0pIQkVBRFFDQUFFQnNhSUFKQmRHb2lBaERtQWlBQklBSkhEUUFMQ3lBQUlBRTJBZ1FMS0FBZ0FCQWJHaUFCQkVBRFFDQUJLQUlBSVFBZ0FVRUlhaERtQWlBQkVDb2dBQ0lCRFFBTEN3c3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkFiR2lBQ1FYQnFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBc3NBUUYvSUFFZ0FDZ0NCQ0lDUndSQUEwQWdBQkFiR2lBQ1FXaHFJZ0lnQVVjTkFBc0xJQUFnQVRZQ0JBdXVDUUVOZnlNQVFSQnJJZ1VrQUFKQUlBRXRBQUVpQjBFRlMwRUJJQWQwUVRSeFJYSU5BQ0FCRUlvQkRRQUNRQ0FEUVlzQlNnMEFJQUVvQWdBaUIwR0EvZ054UVlBS1J3MEFJQWRCL3dGeFFRRkhEUUVMSUFSQkNFWWdBMEhDQTBoeUlRb2dBRUVFYWlFT1FRQWhCQU5BQWtBZ0JDSUpCRUFnQVMwQUFFRURSdzBCQzBILzdRZEJoKzRISUFrYklRMUJBQ0VEQTBCQkFDRUVBMEFDUUNBRUlndEJBVVlFUUNBQkxRQUNRUUp4RFFFTEFrQWdBd1JBSUFFdEFBRkJDSFJCZ0FoR0RRRUxRUUFoQkFOQUFuOGdCQ0lIQkVBZ0NnMERJQVVRMVFFYVFjRGtCeUVJUVpqdUJ3d0JDeUFGRU5VQklBQWdBUzBBQUVFQ2RHb29Bb2dDRUJJYVFkN3NCeUVJUWF6dUJ3c2hCQ0FGSUFnUUVob2dCU0FFRUJJYUlBTkJmMm9pQkVFQlRRUkFRYUR0QnlFSUlBVWdDRUc2N2djZ0JFRUJheHNRRWhvTElBY0VRQ0FGUWEzdEJ4QVNHZ3NnQlVISzdBY1FFaG9nQlNBQ0VJa0JHaUFGSUEwUUVob2dCU0FBSUFFb0FnQWlCRUVRZGtFQmNTQUFJQVJCQm5aQi9BZHhhaWdDMkFKcVFRSjBhaWdDOUFFUUVob2dBUzBBQWtFQ2NRUkFJQVZCeHUwSEVCSWFDd0pBSUFORkRRQWdCVUhDN2djUUVob2dBMEVDUncwQUlBVkJ5ZTRIRUJJYUN5QUhCRUFnQlVHUzdnY1FFaG9nQlNBQUlBRXRBQUJCQW5ScUtBS0lBaEFTR2lBRlFkN3NCeEFTR2dzZ0N3UkFJQVZCemUwSEVCSWFDeUFGUWJ6a0J4QVNHaUFPSUFVUWlRRWFJQVVRR1JwQkFTRUVJQWRGRFFBTEMwRUJJUVFnQzBVTkFRc0xJQU5CQVdvaUEwRURSdzBBQzBFQklRUWdDVVVOQVFzTElBRW9BZ0FpQTBHQWdBaHhRUkYySUFOQmdQNERjVUdBQ2taeUlBcHlEUUFnQUVIVUFHb2hEVUVBSVFRRFFDQUVJUWxCQUNFRUEwQUNRQ0FFSUFseVJTQUpRUUJISUFRaUIwRUFSM0Z5RFFCQnplNEhRYTN0QnlBSEd5RVFRUUFoQkFOQUlBUWlDd1JBSUFFdEFBQkJBMGNOQWd0QjB1MEhRY2J0QnlBTEd5RVBRZi90QjBHSDdnY2dDeHNoRVVFQUlRZ0RRRUVCSVFRRFFBSkFJQWxCQUNBRUd3MEFJQWdFUUNBQkxRQUJRUWgwUVlBSVJnMEJDMEVBSVFNRFFDQUZFTlVCSVFZQ2Z5QURJZ29FUUVIQTVBY2hERUdZN2djTUFRc2dCaUFBSUFFdEFBQkJBblJxS0FLSUFoQVNHa0hlN0FjaERFR3M3Z2NMSVFNZ0JpQU1FQklhSUFZZ0F4QVNHaUFIQkVBZ0JrR1I3UWNRRWhvTElBaEJmMm9pQTBFQlRRUkFRYUR0QnlFTUlBWWdERUc2N2djZ0EwRUJheHNRRWhvTElBY2dDbklFUUNBR0lCQVFFaG9MSUFaQnl1d0hFQklhSUFZZ0FoQ0pBUm9nQmlBUkVCSWFJQVlnQUNBQktBSUFJZ05CRUhaQkFYRWdBQ0FEUVFaMlFmd0hjV29vQXRnQ2FrRUNkR29vQXZRQkVCSWFJQWNFUUNBR0lBOFFFaG9MQWtBZ0NFVU5BQ0FHUWNMdUJ4QVNHaUFJUVFKSERRQWdCa0hKN2djUUVob0xJQW9FUUNBR1FaTHVCeEFTR2lBR0lBQWdBUzBBQUVFQ2RHb29Bb2dDRUJJYUlBWkIzdXdIRUJJYUN5QUVSUVJBSUFaQnplMEhFQklhQ3lBT0lRTWdDUVJBSUFZZ0R4QVNHaUFOSVFNTElBWkJ2T1FIRUJJYUlBTWdCaENKQVJvZ0JoQVpHa0VCSVFNZ0NrVU5BQXNMSUFRaEEwRUFJUVFnQXcwQUN5QUlRUUZxSWdoQkEwY05BQXRCQVNFRUlBdEZEUUFMQzBFQklRUWdCMFVOQUFzZ0NVVU5BQXNMSUFWQkVHb2tBQXRUQVFKL0lBQVEzd1JGQkVBZ0FCQWJHaUFBS0FJRUlnRWdBQ0lDS0FJQUVPQUVJQUFRRzBFQU5nSUFJQUFnQVVjRVFBTkFJQUVpQUNnQ0JDRUJJQUJCQ0dvUXFRWWdBQkFxSUFFZ0FrY05BQXNMQ3dzc0FRRi9JQUFvQWdBRVFDQUFJQUFvQWdBUWtnNGdBQkFiR2lBQUtBSUFJUUVnQUJDTkJCb2dBUkFxQ3dzc0FRRi9JQUFvQWdBRVFDQUFJQUFvQWdBUXdCa2dBQkFiR2lBQUtBSUFJUUVnQUJDTkJCb2dBUkFxQ3d0K0FRSi9Jd0JCRUdzaUJDUUFJQVJCQURZQ0RDQUFRUXhxSUFSQkRHb2dBeENCQWlBQkJFQWdBQ2dDRUJwQi8vLy8vd01nQVNJRFNRUkFFSUlCQUFzZ0EwRUNkQkFtSVFVTElBQWdCVFlDQUNBQUlBVWdBa0VDZEdvaUFqWUNDQ0FBSUFJMkFnUWdBQkFqSUFVZ0FVRUNkR28yQWdBZ0JFRVFhaVFBSUFBTE5nRUJmeUFCSUFBb0FnaEhCRUFEUUNBQUtBSVFHaUFBSUFBb0FnaEJkR29pQWpZQ0NDQUNFT1lDSUFBb0FnZ2dBVWNOQUFzTEM3QUlBUWgvSXdCQklHc2lDaVFBSUFBZ0FTZ0NBQ0lKUVFoMlFmOEJjU0lGUVFKMGFpZ0MyQUloQjBIWjVRY2hCaUFLUVJCcUlBSVEvd0VpQ0NBSElBbEJFSFlnQlVFRVIzRnFJZ3RCQVVjRWZ5QUlRZC9sQnhBU0dpQUFJQXRCQW5ScUtBTDBBUVVnQmdzUUVob2dBUkNLQVFSQUlBaEIyZVVIRUJJYUN5QUVRUWhHQkVBZ0FFRUVha0hwNHdjUUVob0xJQUJCQkdvaUJTQUFRWWdDYWlJR0lBRXRBQUJCQW5ScUtBSUFFQklhSUFWQjV1VUhFQklhSUFVZ0NCQ0pBUm9nQlVHODVBY1FFaG9nQlVHUjVnY1FFaG9nQlNBSUVJa0JHaUFGUWI3bUJ4QVNHaUFGSUFZZ0FTMEFBRUVDZEdvb0FnQVFFaG9nQlVIQjVnY1FFaG9DUUFKQUFrQWdBUkR6QlEwQUlBRVEvUUVnQkVFSVJpQURRY0lEU0hKeURRQWdCVUhKNWdjUUVob2dCU0FJRUlrQkdpQUZRZnptQnhBU0dpQUZJQUFnQVMwQUFFRUNkR29vQW9nQ0VCSWFJQVZCNEtJQ0VCSWFJQVZCdk9RSEVCSWFRUUVoQmtFQUlRa01BUXNnQTBHMUFrb2lCeUFFUVFoR0lneHhJUWtnQkVFSVJ5RUdJQWNOQUNBTURRRUxJQUVvQWdBaUIwSCtBWEZCQ0VZRVFFR0Q1d2RCamVjSElBZEIvd0Z4UVFoR0d5RUhRUUFoQmdOQUlBWWhDU0FGSUFjUUVocEJBQ0VHQTBBZ0JTQUdRUUowUWFEbkIyb29BZ0FRRWhvZ0JTQUlFSWtCR2lBRlFiN21CeEFTR2lBRklBY1FFaG9nQ1VFQlJnUkFJQVZCdGVrSEVCSWFDeUFGUWJ6a0J4QVNHaUFGSUFjUUVob2dCa0VCYWlJR1FRZEhEUUFMSUFWQnhla0hFQklhSUFVZ0NCQ0pBUm9nQlVHKzVnY1FFaG9nQlNBSEVCSWFJQVZCdnVZSEVCSWFJQVVnQnhBU0dnSkFJQWxCQVVZRVFDQUZRZTNwQnhBU0dpQUZRYnprQnhBU0dnd0JDeUFGUWJ6a0J4QVNHa0VCSVFZZ0NVVU5BUXNMSUFVZ0J4QVNHaUFGUVlmcUJ4QVNHaUFGSUFnUWlRRWFJQVZCcStvSEVCSWFJQVZCdnVvSEVCSWFJQVVnQ0JDSkFSb2dCVUcrNWdjUUVob2dCU0FIRUJJYUlBVkJxK29IRUJJYURBRUxJQWtnQTBIQkEwb2dCbkZ5UVFGSERRQWdCVUhuNmdjUUVob2dCU0FJRUlrQkdpQUZRWlRyQnhBU0dnc0NRQ0FCS0FJQUlnWkJnSUFJY1NBR1FRaDJRZjhCY1VGN2FrRUNTWElOQUNBQkVJb0JJQVJCQ0VZZ0EwSENBMGh5Y2cwQVFkbmxCeUVHSUFvZ0FoRC9BU0lDSUF0QkFVY0VmeUFDUWQvbEJ4QVNHaUFBSUF0QkFuUnFLQUwwQVFVZ0Jnc1FFaG9nQWtIWjVRY1FFaG9nQlNBQVFZZ0NhaUlESUFFdEFBQkJBblJxS0FJQUVCSWFJQVZCbitzSEVCSWFJQVVnQWhDSkFSb2dCVUc4NUFjUUVob2dCVUhRNndjUUVob2dCU0FDRUlrQkdpQUZRYjdtQnhBU0dpQUZJQU1nQVMwQUFFRUNkR29vQWdBUUVob2dCVUhCNWdjUUVob2dBUkR6QlVVRVFDQUZRWVBzQnhBU0dpQUZJQUlRaVFFYUlBVkIvT1lIRUJJYUlBVWdBQ0FCTFFBQVFRSjBhaWdDaUFJUUVob2dCVUhnb2dJUUVob2dCVUc4NUFjUUVob0xJQUlRR1JvTElBZ1FHUm9nQ2tFZ2FpUUFDME1CQVg4akFFRVFheUlCSkFBZ0FCQWJHaUFCUWRXcTFhb0JOZ0lNSUFGQi8vLy8vd2MyQWdnZ0FVRU1haUFCUVFocUVLUUJLQUlBSVFBZ0FVRVFhaVFBSUFBTFdRRUNmeU1BUVNCcklnTWtBQ0FBRUJzaUFpQURRUWhxSUFBZ0FCQ25BVUVCYWhDT0J5QUFFS2NCSUFJUWpRY2lBaWdDQ0NBQkVLRUZJQUlnQWlnQ0NFRU1hallDQ0NBQUlBSVE5dzBnQWhDTUNTQURRU0JxSkFBTFV3RUJmeUFBUWRRQWFpSURJQUFnQVMwQUFFRUNkR29vQW9nQ0VCSWFJQU5CdWV3SEVCSWFJQU5CeXV3SEVCSWFJQU1nQWhBVEVCSWFJQUVRaWdFRVFDQURRZG5sQnhBU0dnc2dBMEc4NUFjUUVob0xDUUFnQUJDakJSQXFDL3NIQVJkL0l3QkJnQUZySWdRa0FBSi9JQUZCdFFKTUJFQkJBU0VQUVFFZ0FrRUlSZzBCR2dzZ0FrRUlSeUlGSUFGQmpBRkljU0VQSUFGQmdnRklJQVZ4Q3lFU0lBSkJDRVlpRFNBQlFjSURTSEloRXlBQlFaWUJTQ0VVSUFGQnRnSklJUkFnQVVHTUFVZ2hGVUVBSVFVRFFDQUZJUWxCQUNFRkEwQWdCU0VJUVFBaEJRTkFBa0FnQ0VFQUlBVWlDaUFKY2hzTkFFRUFJUVVnRUNBTklBcEJBRWNpQzNGeERRQWdGQ0FDUVFoSEloWWdDM0Z4SUEwZ0NVRUFSeUFMY1hGeURRQURRQ0FRSUEwZ0NrRUFSeUlPSUFVaUMwRUFSeUlNY1hGeElSY2dCU0FJY2lJRklBbHlJUmdnQlNBS2NpRVpRUUVoQndOQUFrQUNRQUpBSUFkQkIwY2lFVVVFUUNBWURRTkJBQ0VGSUFNb0FnZ05BUXdEQ3lBSFFRVkdJUVVnRmcwQUlBZEJCSEpCQlVZTkFRc2dDa1VnQjBFSFJuSkZRUUFnQjBFQ1J4c05BQ0FIUVFaR0lnWWdEM0VnQmlBWlFRQkhjU0FYY25JZ0NFRUFJQWRCQTBZYmNpQVNJQXdnQjBFRVJuRnhJQXdnQjBFRFJpQUZjbkZ5Y2cwQUlBVWdGWEVoR2tFQUlRVURRQ0FUSUFWQkEwWnhJQm9nQlVFQVIzRnlJQWhCQUNBRlFYOXFRUUpKRzNKRkJFQWdCVUVDZEVHdzR3ZHFLQUlBSVFZQ1FDQVJSUVJBSUFSQitBQnFJQVlnRGhEYUF3d0JDeUFKQkVBZ0JFSDRBR29nQmlBSElBd2dDRUVBUnlBT0VHOE1BUXNnQkVINEFHb2dCaUFISUF3Z0NFRUFSeUFPRUU4TElBUkI2QUJxSUFSQitBQnFFS29KSUFRb0FuZ2hCZ0pBSUJGRkJFQWdCQ0FHTmdJRUlBUWdCallDWUNBQUlBUkJCR29nQkVIb0FHb1F5aGtNQVFzZ0JDQUdOZ0ljSUFRZ0JqWUNXQ0FBSUFSQkhHb2dCRUhvQUdvZ0FTQUNFUGdOSUFRb0FuZ2hCaUFKQkVBZ0JDQUdOZ0lJSUFRZ0JqWUNVQ0FBSUFSQkNHb2dCRUhvQUdvZ0FTQUNFTWNaREFFTElBUWdCallDR0NBRUlBWTJBa2dnQUNBRVFSaHFJQVJCNkFCcUlBRWdBaEQwRFNBRUlBUW9BbmdpQmpZQ1FDQUVJQVkyQWhRZ0FDQUVRUlJxSUFSQjZBQnFJQUVnQWhEQkdTQURLQUlJUVFGSURRQWdCRUg0QUdvUXFBSkZEUUFnQkNnQ2VDSUdRWUNBQ0hFTkFDQUVRZmdBYWlBR1FmOEJjU0FHUVFoMlFmOEJjU0FHUVlDQUJIRkJFSFlnQmtHQWdCQnhRUkoyRUhBZ0JFRXdhaUFFUWZnQWFoQ3FDU0FFSUFRb0FuZ2lCallDS0NBRUlBWTJBaEFnQUNBRVFSQnFJQVJCTUdvZ0FTQUNFUFFOSUFRZ0JDZ0NlQ0lHTmdJZ0lBUWdCallDRENBQUlBUkJER29nQkVFd2FpQUJJQUlRK0EwZ0JFRXdhaEFaR2dzZ0JFSG9BR29RR1JvTElBVkJBV29pQlVFRVJ3MEFDd3NnQjBFQmFpSUhRUWhIRFFFTEMwRUJJUVVnQzBVTkFBc0xRUUVoQlNBS1JRMEFDeUFJUlEwQUN5QUpSUTBBQ3lBQ1FRaEdJQUZCd2dOSWNrVUVRQ0FBUVFScVFjRGpCeEFTR2dzZ0JFR0FBV29rQUF1OEJBRUVmeU1BUVJCcklna2tBQUpBSUFsQkNHb1EvdzBRT2lJR0VKRUhEUUFnQmlnQ0FDSUhJQU1nQkNBRklBY29BZ0FvQWdnUkJBQWdCaWdDQUNJSElBY29BZ0FvQWhBUkFBQWdBeUFFSUFWQkFDQUFJQUVvQWdBUWtBY2dCRUVJUnlJSFJRUkFJQVlvQWdBaUNDQUlLQUlBS0FJUUVRQUFJQU5CQ0NBRlFRUWdBQ0FCS0FJRUVKQUhDeUFHS0FJQUlBTWdCQ0FGUVFBZ0FDQUJJQUlRd0FJZ0JpZ0NBQ0FESUFRZ0JVRUVJQUFnQVNBQ0VNQUNRUUFnQTBHVkFVb2dCM0ZGSUFSQkNFWWdBMEcxQWtweElnY2JSUVJBSUFZb0FnQWdBeUFFSUFWQkFTQUFJQUVnQWhEQUFpQUdLQUlBSUFNZ0JDQUZRUUlnQUNBQklBSVF3QUlnQmlnQ0FDQURJQVFnQlVFRElBQWdBU0FDRU1BQ0N5QUhJQVJCQ0VjaUNDQURRYU1EU25GeVFRRkdCRUFnQmlnQ0FDQURJQVFnQlVFRklBQWdBU0FDRU1BQ0N3SkFBa0FnQTBIQkEwb2dDSEVpQjBFQlJnUkFJQVlvQWdBZ0F5QUVJQVZCQmlBQUlBRWdBaERBQWlBR0tBSUFJQU1nQkNBRlFRY2dBQ0FCSUFJUXdBSWdCaWdDQUNBRElBUWdCVUVJSUFBZ0FTQUNFTUFDSUFZb0FnQWdBeUFFSUFWQkNTQUFJQUVnQWhEQUFpQUdLQUlBSUFNZ0JDQUZRUW9nQUNBQklBSVF3QUlnQmlnQ0FDQURJQVFnQlVFTElBQWdBU0FDRU1BQ0RBRUxJQVJCQ0VjZ0EwSEFBa2h5RFFFTElBWW9BZ0FnQXlBRUlBVkJEU0FBSUFFZ0FoREFBZ3NnQnlBRVFRaEdJQU5CdndKS2NYSkJBVWNOQUNBR0tBSUFJQU1nQkNBRlFRd2dBQ0FCSUFJUXdBSUxJQVlRUGlBSlFSQnFKQUFMYmdBQ2Z5QUFJQUVnQWlBRElBQW9BZ0FvQXRnQkVRa0FCRUJCQVNBRUtBSkFSUTBCR2lBRUlBUW9Ba0FnQUNnQ0ZCQzZGQXdCQ3lBQUtBSU1RUUlRclFNZ0FDZ0NEQ0FBS0FKQUVKVUJRY1hKRHhBUUdrRUFDeUVCSUFWQkJIRUVRQ0FFSUFBb0Fnd1FweGdMSUFFTGpnRUJBMzhqQUVFUWF5SUlKQUFnQ0VFSWFoRC9EUkE2SWdjUWtRZEZCRUFnQnlnQ0FDSUdRZUFJSUFJZ0F5QUVJQVVnQmlnQ0FDZ0NEQkVDQUNBSEtBSUFJZ1lnQmlnQ0FDZ0NFQkVBQUNBQ0lBTWdCQ0FGSUFBZ0FSQ1FCeUFIS0FJQUlnQWdBaUFESUFRZ0JTQUJRZUFJSUFBb0FnQW9BaHdSRHdCQkFTRUdDeUFIRUQ0Z0NFRVFhaVFBSUFZTHVnUUJESDhqQUVIZ0FHc2lCQ1FBSUFSQlFHc1FtQWtoQ3lBQUVJc09JZ1pCd0FGc0lBSVFpZzRpQjBFR2RHb2dBUkNKRGlJSlFRUjBha0hncGhScUtBSUFSUVJBRU5VRElReEJNQkFtSWcwUS9BVWlEaENtQlFOQVFSZ1FKaUlLRVBzRkdpQUVRVGhxSUFVaUNFRUNkR29nQ2pZQ0FFRUJJUVVnQ0VVTkFBc0RRRUVZRUNZaUJSRDdCUm9nQkNBRFFRSjBhaUFGTmdJQUlBTkJBV29pQTBFT1J3MEFDeUFMSUFSQk9Hb2dCQ0FBSUFFZ0FoRE5HVUVBSVFOQm1QUVNLQUlBRUtZRklBWkJ3QUZzSUFkQkJuUnFJQWxCQkhScUlRSURRQ0FESWdCQkFuUWlBeUFFUVRocWFpZ0NBQ0lGRUlNT1JRUkFRUmdRSmlJSUVQc0ZJUW9nQWlBRGFrSGdwaFJxSWdNZ0NEWUNBQ0FLSUFVUTRBMGdBeWdDQUJDQ0RndEJBU0VESUFCRkRRQUxRUUFoQXlBR1FjQUtiQ0FIUWNBRGJHb2dDVUh3QUd4cUlRSWdCa0hBQVd3Z0IwRUdkR29nQ1VFRWRHb2hCUU5BSUFRZ0EwRUNkQ0lBYWlnQ0FDSUlFSU1PUlFSQVFSZ1FKaUlHRVBzRklRY2dBQ0FDYWtHZzlCSnFJZ0FnQmpZQ0FDQUhJQVVnQVNBREVJRU9RUUowYWtIZ3BoUnFLQUlBRUpBSklBQW9BZ0FnQ0JEZ0RTQUFLQUlBRUlJT0N5QURRUUZxSWdOQkRrY05BQXRCQUNFREEwQWdCRUU0YWlBRElnQkJBblJxS0FJQUlnRUVRQ0FCRUp3SkVDb0xRUUVoQXlBQVJRMEFDMEVBSVFNRFFDQUVJQU5CQW5ScUtBSUFJZ0FFUUNBQUVKd0pFQ29MSUFOQkFXb2lBMEVPUncwQUN5QU9FSm9IR2lBTkVDb2dEQkNtQlFzZ0N4Q1dDUm9nQkVIZ0FHb2tBQXVjSndFWmZ5TUFRZkFDYXlJSUpBQWdBQ0FCSUFJZ0F4Q0JHaUFJUWVBQ2FrR2hJaEFpSVJNZ0NFSFFBbXBCaWljUUlpRVVJQWhCd0FKcVFZMHZFQ0loRlNBQ1FRaEhJZ1FnQVVHVkFVcHhJaEJCQVVZRVFDQUFRUVJxUVpBM0VCSWFDeUFCUWNFRFNpQUVjU0lNUVFGR0JFQWdBRUVFYWtHbzRBQVFFaG9MUVFFaEJBSi9Ba0FnQWtFSVJ5QUJRYTBEU25FaUJrRUJSZ1JBSUFCQkJHcEJyb0lCRUJJYVFRQWhCQXdCQ3lBQlFiVUNTaUVXSUFKQkNFWWhCMEVBSUFKQkNFY2dBVUcyQWtoeURRRWFDeUFBUVFScVFaK1lBUkFTR2tFQklSWWdCQ0VISUFRTElRa2dBa0VJUnlJRUlBRkJ0d05LY1NJWVFRRkdCRUFnQUVFRWFrSHRvZ0VRRWhvTFFRQWdBVUhKQWtvZ0JIRkZJQUZCcXdKS0lBZHhJZzBiUlFSQUlBQkJCR3BCdTdjQkVCSWFDeUFDUVFoSElBRkJqd05LY1NJTElBbHlJaEZCQVVZRVFDQUFRUVJxUWNXOEFSQVNHZ3NnRUFSQUlBQkJCR3BCMDcwQkVCSWFDeUFSQkVBZ0FFRUVha0hodmdFUUVob0xJQkFFUUNBQVFRUnFRWi9CQVJBU0dnc2dDeUFOY2tFQlJnUkFJQUJCQkdwQnljTUJFQklhQ3lBQ1FRaEhJQUZCb3dOS2NTSVpJQTF5SWdSQkFVWUVRQ0FBUVFScVFZdkVBUkFTR2dzZ0JFRUJSZ1JBSUFCQkJHcEI4Y1FCUVp2RkFTQU5HeEFTR2dzZ0VRUkFJQUJCQkdwQnhjVUJFQklhQ3dKQUFrQUNRQ0FKQkVBZ0FFRUVha0dEeGdFUUVob01BUXNnQzBVTkFDQUFRUVJxSWdWQjFjWUJFQklhSUFWQmw4Y0JFQklhREFFTElBQkJCR29pQlVHWHh3RVFFaG9nQVVINEFFZ05BUXNnQlVHRnlBRVFFaHBCQVNFWElBRkJsZ0ZJRFFBZ0JVR2l6Z0VRRWhvTEFrQkJBQ0FCUWVRQVJpQUhjU0FDUVFSR2NpSWFJQUpCQVVaeVJTQUNRUUpHSUFGQnBBTkljUnNOQUNBREtBSUFEUUFnQlVHeHp3RVFFaG9MQWtCQkFDQUNRUVJHSUFKQkFVWnlSU0FDUVFKR0lBRkJwQU5JY1JzTkFDQURLQUlBRFFBZ0JVR0QwUUVRRWhvTEFrQWdCMFVOQUNBREtBSUFEUUFnQlVIbzFBRkI4OVVCSUFGQnJBSklHeEFTR2lBRlFmellBUkFTR2lBRlFjWGNBUkFTR2dzQ1FDQUNRUWhHRFFBZ0F5Z0NBQTBBSUFWQjlkNEJFQklhQ3dKQUlBTW9BZ2dOQUNBQ1FRaEhJQUZCcXdKS2NTQUpja0VCUmdSQUlBVkJ5K0VCRUJJYUN5QUNRUWhHSUFGQnpBTkljZzBBSUFWQnYrSUJFQklhQ3lBUkJFQWdCVUhHNVFFUUVob0xBa0FDUUNBTFJRUkFJQWtFUUNBRlFicnNBUkFTR2lBRlFaYnhBUkFTR2d3Q0N5QVJSUTBDSUFWQmx2RUJFQklhREFJTElBVkJrT3NCRUJJYUlBVkJqTzRCRUJJYUlBVkJsdkVCRUJJYUlBbEZEUUVMSUFWQnlQd0JFQklhQ3lBTUJFQWdCVUdpZ0FJUUVob0xJQVlFUUNBRlFhT0hBaEFTR2dzZ0FrRUlSeUliSUFGQml3RktjU0ljSUFseUlnNUJBVVlFUUNBRlFZQ0lBaEFTR2dOQVFRRWhFZ0ovUVFFZ0QwRUNkRUdRakFKcUtBSUFJZ3BCMTZZQ0VOTUREUUFhUVFFZ0NrSGFwZ0lRMHdNTkFCcEJBQ0FLUWQ2bUFoRFRBMFVOQUJvZ0NrSGlwZ0lRMHdORkN5RUdBa0FnQ2tIdHBnSVEwd01OQUNBS1FmR21BaERUQXcwQUlBcEI5YVlDRU5NRERRQWdDa0g1cGdJUTB3TkJBRWNoRWd0QkFDRUVBa0FnQmcwQUEwQWdDQ0FFUVFKMFFiQ2lBbW9vQWdBaUJqWUNOQ0FJSUFZMkFqQWdDRUZBYTBHQUFpQUtJQWhCTUdvUUp4b2dCU0FJUVVCckVCSWFJQVJCQVdvaUJFRUlSdzBBQzBFQUlRUWdDMFVOQUFOQUlBZ2dCRUVDZEVHUW93SnFLQUlBSWdZMkFpUWdDQ0FHTmdJZ0lBaEJRR3RCZ0FJZ0NpQUlRU0JxRUNjYUlBVWdDRUZBYXhBU0dpQUVRUUZxSWdSQkJFY05BQXNMUVFBaEJDQVNSUVJBQTBBZ0NDQUVRUUowUWJDbUFtb29BZ0FpQmpZQ0ZDQUlJQVkyQWhBZ0NFRkFhMEdBQWlBS0lBaEJFR29RSnhvZ0JTQUlRVUJyRUJJYUlBUkJBV29pQkVFRVJ3MEFDd3RCQUNFRUEwQWdDQ0FFUVFKMFFjQ2pBbW9vQWdBaUJqWUNCQ0FJSUFZMkFnQWdDRUZBYTBHQUFpQUtJQWdRSnhvZ0JTQUlRVUJyRUJJYUlBUkJBV29pQkVFZ1J3MEFDeUFQUVFGcUlnOUJQVWNOQUFzZ0FFSGtBR3BCL2FZQ0VCSWFJQUJCNUFGcVFmMm1BaEFTR2lBQVFkUUJha0g5cGdJUUVob0xJQUZCeXdOS0lCdHhJZzlCQVVZRVFDQUZRYUtuQWhBU0dnc2dEQVJBSUFWQjlxY0NFQklhQ3lBWUJFQWdCVUgycEFRUUVob0xJQXdFUUNBRlFlQ2xCQkFTR2dzZ0FrRUlSeUFCUVlFQlNuRWlFaUFOY2tFQlJnUkFJQVZCNUtvRUVCSWFDeUFNSUFGQnZ3SktJQWR4SWcxeUlnWkJBVVlFUUNBRlFjSFNCQkFTR2dzZ0RBUkFJQVZCM2R3RUVCSWFJQVZCanFRRkVCSWFJQUJCMUFCcUlnUWdGUkNKQVJvZ0JFR1Brd1lRRWhvTEFrQWdBeWdDQ0EwQUlBRWdBaUFERU9VQ1JRMEFJQUJCRkdwQnQ1Y0dFQklhQ3lBQVFSUnFJQVVnQVVIa0FFWWJJUVFDUUVFQUlCb2dBa0VCUm5KRklBSkJBa1lnQVVHa0EwaHhHdzBBSUFNb0FnQU5BQ0FFUWNxWEJoQVNHZ3NDUUVFQUlBSkJCRVlnQWtFQlJuSkZJQUpCQWtZZ0FVR2tBMGh4R3cwQUlBTW9BZ0FOQUNBRVFkaVpCaEFTR2dzZ0NTQVFja0VCUmdSQUlBc0VRQ0FBUWNRQWFrRzlwQVlRRWhvTElBQkJ4QUJxUWZha0JoQVNHaUFBUVNScVFaNmxCaEFTR2dzZ0NTQVpjaUlLUVFGR0JFQWdBRUhrQUdwQm5xVUdFQklhQ3lBR0JFQWdBRUhrQVdwQm5xVUdFQklhSUFCQjFBRnFRWjZsQmhBU0dnc2dDU0FTY2tFQlJnUkFJQVZCcnFVR0VCSWFDeUFLQkVBZ0JVSEVwUVlRRWhvZ0FFSGtBR3BCNEtVR0VCSWFJQVZCbHFZR0VCSWFDeUFHQkVBZ0FFSGtBV3BCNEtVR0VCSWFJQUJCMUFGcVFlQ2xCaEFTR2dzZ0JVSFRwZ1lRRWhvZ0RBUkFJQUJCNUFCcVFhQ25CaEFTR2dzZ0IwRUJjd0ovSUFNb0FnQWlCQ0FDUVFoR0lBRkI1QUJIY1hKRkJFQWdBRUhVQUdwQmdlRUdFQklhSUFNb0FnQWhCQXNnQkNBQ1FRaEdJQUZCNVFCSWNuSkZDd1IvSUFCQjFBQnFRZjNpQmhBU0dpQURLQUlBQlNBRUMwRUFSM0pGQkVBZ0FFSFVBR3BCdGVVR0VCSWFDd0pBQWtBZ0N3UkFJQUJCMUFCcUlnUWdFeENKQVJvZ0JFSDM1Z1lRRWhvTUFRc2dFVVVOQVFzZ0FFSFVBR3BCK2VZR0VCSWFDeUFBUWRRQWFpSUVRYmpxQmhBU0dpQUVRWVhyQmhBU0dnSkFJQXhGRFFBZ0JFR2k2d1lRRWhvZ0JDQVVFSWtCR2lBRVFmZm1CaEFTR2lBRVFlVHdCaEFTR2lBRlFZejFCaEFTR2lBREtBSUlRUUZJRFFBZ0JFSHc5UVlRRWhvTElBOEVRQ0FBUWZRQWFrSDg5d1lRRWhvZ0FFR0VBV3BCK2ZnR0VCSWFJQUJCbEFGcVFhTDVCaEFTR2lBQVFhUUJha0g4OXdZUUVob2dBRUcwQVdwQi9QY0dFQklhSUFCQnhBRnFRZGI1QmhBU0dnc2dCZ1JBSUFCQjVBQnFJZ3NnRXhDSkFSb2dDMEgzNWdZUUVob0xBa0FDUUNBTUJFQWdBRUhrQUdvaUN5QVVFSWtCR2lBTElCVVFpUUVhSUF0QjkrWUdFQklhREFFTElBMUZEUUVMSUFCQjVBRnFRZnI1QmhBU0dnc0NRQ0FES0FJQURRQWdCVUd1K2dZUUVob2dCVUhQK2daQmd2c0dJQWNiRUJJYUlBVkJvL3NHRUJJYUlBTW9BZ0FOQUNBQklBSWdBeERsQWtVTkFDQUZRZFg3QmhBU0dnc2dDZ1JBSUFCQjVBQnFRWnVKQnhBU0dnc2dEZ1JBSUFCQjVBQnFRZitLQnhBU0dnc2dCZ1JBSUFCQjVBRnFJZ2RCbllzSEVCSWFJQWRCb0kwSEVCSWFJQWRCKzQ0SEVCSWFJQUJCMUFGcVFiV1JCeEFTR2dzQ1FDQU1SUTBBSUFCQjVBRnFJZ2RCeVpNSEVCSWFJQUJCMUFGcUlnWkJ5Wk1IRUJJYUlBRkJ6QU5JRFFBZ0IwSDdrd2NRRWhvZ0JrSDdrd2NRRWhvTElBQkJGR29oQndKQUFrQUNRQUpBSUFKQkNFY0VRQ0FCUVlJQlNBMEJJQUVnQWlBREVPVUNCRUFnQjBHcmx3Y1FFaG9MSUFGQmxnRklCRUFnQVNBQ0lBTVE1UUpGRFFNZ0IwSEZtd2NRRWhvTUF3c2dCMEhEblFjUUVob2dBU0FDSUFNUTVRSUVRQ0FIUVpLZUJ4QVNHZ3NnQVVIQ0EwNEVRQ0FIUWF1ZkJ4QVNHZ3NnQjBIRW53Y1FFaG9NQXdzZ0FVSGtBRVlFUUNBSFFlK2lCeEFTR2d3RUN5QURLQUlJSWdZRWZ5QUdCU0FIUWFXakJ4QVNHaUFES0FJSUMwRUJUZ1JBSUFkQjJxTUhFQklhQ3lBQlFiVUNUQVJBSUFkQmxhUUhFQklhREFRTElBZEJ4NlFIRUJJYURBTUxJQWRCanBRSEVCSWFJQWRCN1prSEVCSWFDeUFIUVlHZEJ4QVNHaUFCUVl3QlIwRUFJQUZCZ2dGSEd3MEFJQWRCcHAwSEVCSWFDd0ovSUFNb0FnZ2lCaUFCUVlJQlNISkZCRUFnQjBISW53Y1FFaG9nQXlnQ0NDRUdDeUFCUVl3QlNDSUxJQVp5UlFzRWZ5QUhRZG1mQnhBU0dpQURLQUlJQlNBR0MwRUJTQ0FMY2tVRVFDQUhRZXlmQnhBU0dnc0NRQUpBSUFGQnVBTk9CRUFnQjBHYm9BY1FFaG9NQVFzZ0FVR2FBMGdOQVFzZ0IwSGlvQWNRRWhvTElBRkJ6QU5PQkVBZ0IwR05vUWNRRWhvTElBRkJ3Z05JRFFBZ0IwSExvUWNRRWhvTElBNEVRQ0FIUVkybEJ4QVNHZ3NnQVVHc0FrNEVRQ0FIUWNXbEJ4QVNHZ3NDUUFKQUFrQWdBa0YrYWlJR1FRSkxJQVpCQVd0RmNrVUVRQ0FBUWNRQWFpSUdRZU9sQnhBU0dpQUNRUVJHQkVBZ0JrR1NuZ2NRRWhvTElBRkJ3Z05PQkVBZ0JrR3hwZ2NRRWhvTElBWkJncWNIRUJJYUlBSkJCRWNnQVVHUUEwaHlSUVJBSUFaQmtwNEhFQklhQ3lBQlFjSURUZ1JBSUFaQnE1OEhFQklhQ3lBR1FmU25CeEFTR2lBQlFaWUJUZ1JBSUFaQm42Z0hFQklhQ3lBQ1FRUkhJQUZCandOS2NrVUVRQ0FHUWJtb0J4QVNHZ3NnQVVHUUEwNEVRQ0FHUWRHb0J4QVNHZ3NnQVVIQ0EwNEVRQ0FHUWN1aEJ4QVNHZ3NnQmtIMzVnWVFFaG9NQVFzZ0NVVU5BQ0FBUWNRQWFrSHBxQWNRRWhvTUFRc2dEa1VOQVFzZ0FFSEVBR3BCamFVSEVCSWFDeUFBUVNScUlRWUNRQ0FRQkVBZ0JrSHNxZ2NRRWhvZ0FrRUVSZ1JBSUFaQmtwNEhFQklhQ3dKQUlBRkJ3Z05PQkVBZ0JrR0NyQWNRRWhvZ0JrR3NyUWNRRWhvTUFRc2dCa0dzclFjUUVob2dBVUdhQTBnTkFnc2dCa0dEcmdjUUVob01BUXNnQmtHdnJnY1FFaG9nQmtITHJ3Y1FFaG9nRFVVTkFDQUdRWUt4QnhBU0dnc2dEZ1JBSUFaQmphVUhFQklhQ3dKQUFrQUNRQUpBSUJBRVFDQUFRVFJxSWdsQnE3RUhFQklhSUFKQkJFY2dBVUdRQTBoeVJRUkFJQWxCa3A0SEVCSWFDeUFCUWNFRFNnMEJJQWxCeEo4SEVCSWFJQUZCbWdOSURRSWdDVUdEcmdjUUVob01BZ3NnQ1VVTkFTQUFRVFJxSWdsQnJiUUhFQklhSUFsQnhKOEhFQklhREFJTElBbEJxNThIRUJJYUlBbEJ4SjhIRUJJYUlBbEJnNjRIRUJJYUlBbEJoN01IRUJJYUN5QU9SUTBCQ3lBQVFUUnFRWTJsQnhBU0dnc0NRQ0FDUVFoSEJFQWdCRUdidGdjUUVob2dGd1JBSUFSQjE3WUhFQklhQ3dKQUlBUUNmd0pBSUFGQmpBRk9CRUFnQkVIcnRnY1FFaHBCQUNBQlFhUURUaUFCSUFJZ0F4RGxBaHNOQVNBRVFZbTNCeEFTR2d3QkN5QUJJQUlnQXhEbEFob2dCRUdKdHdjUUVocEJuTGNISUFGQmdnRklEUUVhQ3lBRVFZNjRCeEFTR2lBQklBSWdBeERsQWtVTkFVR3F1QWRCaUxrSElBRkJsZ0ZJR3dzUUVob0xJQUZCbGdGT0JFQWdCRUg3dVFjUUVob0xBa0FnQVVHQ0FVZ05BQ0FFUVplNkJ4QVNHaUFES0FJQURRQWdCRUh3dWdjUUVob0xJQUZCa0FOT0JFQWdCRUdMdXdjUUVob0xJQUZCcmdOT0JFQWdCRUdzdXdjUUVob0xJQUZCd2dOT0JFQWdCRUhmdXdjUUVob2dCRUdVdkFjUUVob2dCRUhhdkFjUUVob0xJQUZCcmdOT0JFQWdCRUhQdmdjUUVob0xJQUZCd2dOSURRRWdCRUh1dmdjUUVob01BUXNnQVVIa0FFWUVRQ0FFUWV1L0J4QVNHZ3NnQVVHc0FrNEVRQ0FFUWRmQUJ4QVNHZ3RCMXNNSElRa2dCQ0FXQkg4Z0JFSEh3UWNRRWhvZ0JFR2R3Z2NRRWhvZ0F5Z0NBRVVFUUNBRVFiYkRCeEFTR2dzZ0JFSFd3d2NRRWhwQmxMd0hCU0FKQ3hBU0dpQUJRY0FDU0EwQUlBUkI4OE1IRUJJYUlBUkJ1OFFIRUJJYUN5QUVRZmZtQmhBU0dpQUJRWUlCVGdSQUlBQWdBU0FDSUFNUXpCa0xJQXdFUUNBSFFmSEVCeEFTR2lBR1FmSEVCeEFTR2lBQVFUUnFRZkhFQnhBU0dpQUFRY1FBYWtIeHhBY1FFaG9nQUVIa0FHcEI4Y1FIRUJJYUlBUkIzY1lIRUJJYUlBQkI1QUZxUWZIRUJ4QVNHaUFBUWRRQmFrSHh4QWNRRWhvTElBNEVRQ0FFUWVmSUJ4QVNHaUFIUWFuSkJ4QVNHaUFHUWFuSkJ4QVNHaUFBUVRScVFhbkpCeEFTR2lBQVFjUUFha0dweVFjUUVob2dBRUhrQUdvaUFrR3B5UWNRRWhvZ0FrSEV6d2NRRWhvZ0JFR2J6QWNRRWhvZ0FFSGtBV29pQWtHcHlRY1FFaG9nQWtIRXp3Y1FFaG9nQUVIVUFXb2lBa0dweVFjUUVob2dBa0hFendjUUVob2dBRUgwQUdwQnFja0hFQklhSUFCQmhBRnFRYW5KQnhBU0dpQUFRWlFCYWtHcHlRY1FFaG9nQUVHa0FXcEJxY2tIRUJJYUlBQkJ0QUZxUWFuSkJ4QVNHaUFBUWNRQmFrR3B5UWNRRWhvTElBOEVRQ0FBUWZRQWFpSUNRWm5UQnhBU0dpQUNRWWJRQnhBU0dpQUFRWVFCYWlJQ1FkUFRCeEFTR2lBQ1FZYlFCeEFTR2lBQVFaUUJhaUlDUVkzWEJ4QVNHaUFDUVliUUJ4QVNHaUFBUWFRQmFpSUNRWTNYQnhBU0dpQUNRWWJRQnhBU0dpQUFRYlFCYWlJQ1FmamFCeEFTR2lBQ1FZYlFCeEFTR2lBQVFjUUJhaUlDUVpuVEJ4QVNHaUFDUVliUUJ4QVNHZ3NnSEFSQUlBQkI5QUJxUWYrS0J4QVNHaUFBUVlRQmFrSC9pZ2NRRWhvZ0FFR1VBV3BCLzRvSEVCSWFJQUJCcEFGcVFmK0tCeEFTR2lBQVFiUUJha0gvaWdjUUVob0xJQUZCckFKT0JFQWdCRUdWM1FjUUVob0xJQW9FUUNBRlFiamRCeEFTR2lBRlFkemRCeEFTR2lBRlFZRGVCeEFTR2lBRlFhVGVCeEFTR2lBRlFjamVCeEFTR2lBRlFlemVCeEFTR2lBRlFacmZCeEFTR2lBRlFjamZCeEFTR2lBRlFmYmZCeEFTR2lBRlFhVGdCeEFTR2lBRlFkWGdCeEFTR2lBRlFZYmhCeEFTR2lBRlFiZmhCeEFTR2lBRlFlWGhCeEFTR2lBRlFaVGlCeEFTR2lBRlFjVGlCeEFTR2lBRlFmVGlCeEFTR2dzZ0ZSQVpHaUFVRUJrYUlCTVFHUm9nQ0VId0Ftb2tBQXVQQVFFQ2Z5TUFRUkJySWdNa0FDQUJRUUZ4QkVBZ0FDQURRZUxIRHhCcElnUVFrZ2NnQkJBZ0dnc2dBVUVDY1FSQUlBQWdBMEh4eHc4UWFTSUVFSklISUFRUUlCb0xJQUZCZ0FKeEJFQWdBQ0FEUVlQSUR4QnBJZ0VRa2djZ0FSQWdHZ3NnQWhBZkJFQWdBQ0FEUVpISUR4QnBJZ0VRa2djZ0FSQWdHaUFBUVlBSGFpQUNFSmNPQ3lBRFFSQnFKQUFMaEFrQkJIOGdBeWdDQUNJSFJRUkFJQU5CNUFBMkFnQkI1QUFoQnd0QkFTRUlBa0FDUUFKQUFrQUNRQ0FFS0FJQUlnWkJBVVlFUUVFSUlRWWdCMEhVZldvaUNVRVVTMEVCSUFsMFFZR0l3QUJ4UlhJTkF5QUFRUUpCdnI0UEVMc0JEQUVMSUFkQmxRRk1CRUFnQUVFQ1FZZS9EeEM3QVVFSVFRRWdBeWdDQUVIa0FFWWJJUVlNQVFzZ0IwSFVmV29pQjBFVVMwRUJJQWQwUVlHSXdBQnhSWEpGQkVBZ0JrRUlSZzBDSUFCQkFrSEN2dzhRdXdGQkFDRUlEQUlMSUFaQkNFY05CQ0FBUVFKQmc4QVBFTHNCUVFKQkFTQURLQUlBUVpVQlNoc2hCZ3RCQUNFSURBSUxRUWdoQmd3QkN5QUhRZVFBUmcwQVFRSkJBU0FIUVpVQlNoc2hCZ3NnQkNBR05nSUFDd0pBQWtBQ1FDQURLQUlBSWdkQnF3Sk1CRUFnQjBHY2Yyb2lDVUVlUzBFQklBbDBRWUdJd0lBRWNVVnlEUUVNQXdzZ0IwSFVmV29pQ1VFZVRVRUFRUUVnQ1hSQmdZakFnQVJ4R3cwQ0lBZEI4SHhxSWdsQkhrMUJBRUVCSUFsMFFZR0l3SUFFY1JzTkFpQUhRY2g4YWlJSFFSUkxEUUZCQVNBSGRFR0JpTUFBY1EwQ0RBRUxJQWRCakFGR0lBZEJsZ0ZHY2cwQkN5QUFRUUpCdzhBUEVMc0JRUWdoQmlBRUtBSUFRUWhHQkVBZ0EwRzJBallDQUVFQUlRZ01BUXNnQTBIQ0F6WUNBQ0FFUVFJMkFnQkJBQ0VJUVFJaEJnc0NRQUpBQWtBZ0FVRi9haUlCUVF4TERRQUNRQUpBQWtBQ1FBSkFBa0FnQVVFQ2F3NExBQVlDQXdNREF3TURCQVFCQ3lBR1FRaEdRUUFnQXlnQ0FDSUJRYllDU0J0RlFRQWdCa0VJUmlBQlFaVUJTbkliRFFVZ0FFRUNRZG5BRHhDN0FTQURRYllDUVpZQklBUW9BZ0FpQmtFSVJpSUJHellDQUNBQlJRUkFRUUFoQ0NBR1FRRkhEUVlMSUFSQkFqWUNBQXdHQ3lBR1FRaEdRUUFnQXlnQ0FDSUJRYllDU0J0RlFRQWdCa0VJUmlBQlFaVUJTbkliRFFRZ0FFRUNRY1RCRHhDN0FTQURRYllDUVpBRElBUW9BZ0FpQmtFSVJpSUJHellDQUNBQlJRUkFRUUFoQ0NBR1FRRkhEUVVMSUFSQkFqWUNBQXdGQ3lBR1FRaEdRUUFnQXlnQ0FDSUJRYllDU0J0RlFRQWdCa0VJUmlBQlFhTURTbkliRFFNZ0FFRUNRYlBDRHhDN0FTQURRYllDUWFRRElBUW9BZ0FpQmtFSVJoczJBZ0FNQWdzZ0JrRUlSd1JBSUFNb0FnQkJ5d05LRFFVTElBQkJBa0dud3c4UXV3RWdBMEhNQXpZQ0FDQUVLQUlBSVFZTUFRc2dCa0VJUmtFQUlBTW9BZ0FpQVVIQUFrZ2JSVUVBSUFaQkNFWWdBVUhCQTBweUd3MEJJQUJCQWtIMnd3OFF1d0VnQTBIQUFrSENBeUFFS0FJQUlnWkJDRVliTmdJQUMwRUFJUWdMSUFaQkNFY05BU0FDUlNBREtBSUFRYXdDU0hJTkFTQUFRUUpCN01RUEVMc0JDMEVBSVFnTEFrQWdCU2dDQUVVTkFBSkFBa0FnQkNnQ0FFRjhhaUlCUVFSTERRQUNRQUpBSUFGQkFXc09CQUlDQWdBQkN5QURLQUlBUWJVQ1NnMERJQUJCQWtIRXhROFF1d0VnQTBHMkFqWUNBQXdDQ3lBQVFRSkJnc1lQRUxzQklBZ1BDeUFGS0FJSVFRRklJQU1vQWdBaUJrR0xBVXB5UlFSQUlBQkJBa0hPeGc4UXV3RWdBMEdNQVRZQ0FFRUFJUWhCakFFaEJnc2dCU2dDREVIa0FFZ2dCa0hKQWtweURRRWdBRUVDUVpqSER4QzdBU0FEUWNvQ05nSUFDMEVBSVFnTElBZ0wvZ0VCQW44Z0FTZ0NBQ0lGUVFoeEJFQWdCRUdBZ0FRMkFnQUxBa0FDZnlBRlFSQnhCRUFnQkVHQWdJQUNOZ0lJSUFSQkJHb01BUXNnQkNnQ0FFVU5BU0FFUVF4cUMwSGtBRFlDQUFzQ1FDQUFSUTBBQWtBZ0FDZ0NBQ0lHUlEwQUlBTWdBQ2dDQkRZQ0FBSkFJQUFvQWdoQmYyb2lBMEVCU3cwQUlBTkJBV3NFUUNBRUlBQW9BZ3cyQWdRTUFRc2dCQ0FBS0FJTU5nSU1DeUFHUVg5cUlnTkJBVXNOQUNBRFFRRnJCRUFnQWtFQk5nSUFJQUVnQlVHL2YzRTJBZ0FNQVFzZ0FrRUNOZ0lBSUFFZ0JVSEFBSEkyQWdBTElBQW9BaEJCQVVZRVFDQUVJQUFvQWhRMkFnZ0xJQUFvQWhoQkFVY05BQ0FFSUFBb0FodzJBZ0FMQ3lRQUlBRUVRQU5BSUFBZ0FpZ0NBRFlDQUNBQVFRUnFJUUFnQVVGL2FpSUJEUUFMQ3dzMkFRRi9JQUVnQUNnQ0NFY0VRQU5BSUFBb0FoQWFJQUFnQUNnQ0NFRm9haUlDTmdJSUlBSVFyZ01nQUNnQ0NDQUJSdzBBQ3dzTENBQWdBQkNVRGhvTFV3RUJmeUFCSUFKSEJFQWdBeWdDQUNFQUEwQWdBRUZvYWlJQUlBSkJhR29pQWlJRUVKUUhJQUFnQkNnQUV6WUFFeUFBSUFRcEFndzNBZ3dnQXlBREtBSUFRV2hxSWdBMkFnQWdBU0FDUncwQUN3c0xRd0VCZnlNQVFSQnJJZ0VrQUNBQUVCc2FJQUZCcXRXcTFRQTJBZ3dnQVVILy8vLy9CellDQ0NBQlFReHFJQUZCQ0dvUXBBRW9BZ0FoQUNBQlFSQnFKQUFnQUFzc0FDQUFLQUlBR2lBQUtBSUFJQUFRalFSQkdHeHFHaUFBS0FJQUdpQUFLQUlBSUFBUWtnSkJHR3hxR2d1ZUFRQWdBQkRtR1NBQVFZY2lOZ0tzQWlBQVFZVWlOZ0tvQWlBQVFZUWlOZ0tNQWlBQVFlUWhOZ0lBSUFCQmx5STJBcVFDSUFCQmt5STJBcUFDSUFCQmtDSTJBcHdDSUFCQmpTSTJBcGdDSUFCQmlTSTJBcFFDSUFCQ2c0Q0FnREEzQXVRQ0lBQkJueUkyQW9RQ0lBQkJuU0kyQW9BQ0lBQkJteUkyQXZ3QklBQkJBallDOUFJZ0FFS0NnSUNBRURjQzdBSWdBRUtCZ0lDQUlEY0MzQUlMVVFFQmZ5QUFFSlVISUFBUUd5QUFLQUlBSUFBb0FnUWdBVUVFYWlJQ0VOZ1pJQUFnQWhBdUlBQkJCR29nQVVFSWFoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVKSUNFSkVPQ3pFQkFYOGdBQ2dDRUJvZ0FDZ0NDQ0VDQTBBZ0FoQ1BEaUFBSUFBb0FnaEJHR29pQWpZQ0NDQUJRWDlxSWdFTkFBc0xhZ0VDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUVFTWFpQUVRUXhxSUFNUWdRSWdBUVJBSUFBb0FoQWFJQUVRamc0aEJRc2dBQ0FGTmdJQUlBQWdCU0FDUVJoc2FpSUNOZ0lJSUFBZ0FqWUNCQ0FBRUNNZ0JTQUJRUmhzYWpZQ0FDQUVRUkJxSkFBZ0FBczZBUUYvSXdCQkVHc2lBaVFBSUFBUUd4b0RRQ0FBS0FJRUVJOE9JQUFnQUNnQ0JFRVlhallDQkNBQlFYOXFJZ0VOQUFzZ0FrRVFhaVFBQzQ4QkFRSi9Jd0JCSUdzaUF5UUFBa0FnQUJBYktBSUFJQUFvQWdSclFSaHRJQUZQQkVBZ0FDQUJFTjhaREFFTElBQVFHeUVDSUFOQkNHb2dBQ0FBRUpJQ0lBRnFFSk1PSUFBUWtnSWdBaERlR1NJQ0lBRVEzUmtnQUNBQ0VOd1pJQUlnQWlnQ0JCRFdHU0FDS0FJQUJFQWdBaWdDRUJvZ0FpZ0NBQ0VBSUFJUWtBNGFJQUFRS2dzTElBTkJJR29rQUFzK0FRSi9Ba0FnQVVVTkFDQUFLQUlRSWdKRkRRQkJBQ0VBQTBBZ0FTQUFRUUowSWdOcUlBSWdBMm9vQWdBMkFnQWdBRUVCYWlJQVFSUkhEUUFMQ3dzcEFRSi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FTQUFFS0FFSVFNZ0FrRVFhaVFBSUFFZ0FDQURHd3VqQkFFSWZ5TUFRU0JySWdJa0FBSi9RUUVnQUNBQlFReHNha0VJYWlJRUVORUVSUTBBR2lBQ0lBUVFqQUkyQWhnZ0FpQUVFR0UyQWhBQ1FDQUNRUmhxSUFKQkVHb1FIa1VOQUFOQUlBSkJHR29RUkNnQ0FDZ0NFQ2dDS0NFRklBSkJHR29ROFFFZ0FpQUVFR0UyQWhBZ0JpQUZRUWhIYWlFR0lBTWdCVUVJUm1vaEF5QUNRUmhxSUFKQkVHb1FIZzBBQ3lBRFJTQUdSWEpGQkVBZ0FDZ0MrQUZCQWtIOHVnOFF1d0ZCQUF3Q0N5QURRUUpKRFFBZ0FDZ0MrQUZCQWtHdXV3OFF1d0ZCQUF3QkN5QUVLQUlFS0FJSUtBSVFJUU1DUUNBRUVORUVRUUZHQkVBZ0FDQUJRUUowYWlBRE5nS3dBUXdCQzBHTUJ4QW1JZ1lnQVNBREtBSXNJQU1vQWlnUW13a2FJQUFnQVVFQ2RHb2lCU0FHTmdLd0FTQURMUUNkQkFSQUlBVW9BckFCRUpJSkN5QUZLQUt3QVNBREVLd0RFSlVPSUFBZ0FXcEJBVG9BNkFFTEFrQWdCQkRSQkVFQ1NRMEFJQUpCR0dvUXNnVWhBeUFDSUFRUWpBSTJBZ2dnQXlBQ1FSQnFJQUpCQ0dvUVp5Z0NBRFlDQUNBQ0lBUVFZVFlDQ0NBRElBSkJFR29nQWtFSWFoQm5JZ2dRSGtVTkFDQUFJQUZCQW5ScUlRa0RRQ0FKS0FLd0FTSUZJQUFvQXZnQklnWWdBeEJFS0FJQUtBSVFJZ2NRbXhnZ0JTQUdJQWNRbWhnZ0JTQUdJQWNRbVJnZ0F4RHhBU0FDSUFRUVlUWUNDQ0FESUFnZ0FrRUlhaEJuRUI0TkFBc0xJQUFnQVVFQ2RHb2lBU2dDc0FFZ0FDZ0MrQUVRaFJnZ0FTZ0NzQUVvQXRBRFJRc2hBQ0FDUVNCcUpBQWdBQXRHQVFKL0lBQXRBSUFDQkg5QkFBVWdBRUVCT2dDQUFpQUFLQUlFRUtZRkEwQWdBaUFBSUFFUTR4bEJBWE55SVFJZ0FVRUJhaUlCUVE1SERRQUxJQUpCQVhNTFFRRnhDd2tBSUFBUWt3a1FLZ3MyQVFGL0lBQkJ2Q0UyQWdBZ0FFRUVhaERWQVJvZ0FFSDBBV29oQVNBQVFSUnFJUUFEUUNBQUVOVUJRUkJxSWdBZ0FVY05BQXNMTFFFQmZ5TUFRUkJySWdFa0FDQUFFTVFLSUFGQkFEWUNEQ0FBUVFocUlBRkJER29RclFJZ0FVRVFhaVFBQzNJQkFuOGdBRUgwdWc4MkFnQWdBRUd3QVdvaEFpQUFRUWhxSVFFRFFDQUJFSmtKUVF4cUlnRWdBa2NOQUFzZ0FFRUFPZ0NBQWlBQVFRQTJBdndCUVRBUUppSUJFUHdGR2lBQUlBRTJBZ1JCSUJBbUlnRVFtQWthSUFBZ0FUWUMrQUVnQUVHd0FXcEJBRUhHQUJEZEFSb2dBQXQ3QVFKL0l3QkJFR3NpQXlRQUVPNExCRUFnQUNnQ0JCQ21CU0FBS0FJa0lnSkZCRUFnQUVIWXVnODJBaVJCMkxvUElRSUxJQUFvQWd3Z0FDZ0NHQ0FBS0FJb0lBQW9BaHdnQUNnQ0lDQUNJQUFvQWhBZ0FTQURJQUJCTEdvUTdRRWlBU0FBUVRocUVQUVpJUUlnQVJBZ0dnc2dBMEVRYWlRQUlBSUxSUUVCZnlNQVFTQnJJZ0lrQUNBQ0lBRVF6QUUyQWhBUTV3RWdBa0VZYWlBQUlBRWdBa0VRYWlBQ1FRaHFFTFlaSUFKQkdHb1FWeUVBSUFKQklHb2tBQ0FBUVFScUMyUUJBbjhqQUVFUWF5SUVKQUFDUUNBQ1JRMEFJQUJCK0FScUlBRVFsd2NoQlNBRUlBTTJBZ3dnQlNBRVFReHFFT29aSUFJMkFnQWdBUkRZQ3lJQlJRMEFJQUJCZ0FkcUlnQWdBUkNUQWlBQUlBSVFsQWtnQUNBREVKUUpDeUFFUVJCcUpBQUxOd0FnQUVIZ0JHb2dBUkNWQ1NBQ05nSUFJQUVRMkFzaUFRUkFJQUJCZ0FkcUlRQWdBZ1JBSUFBZ0FSQ1RBaUFBSUFJUWxBa0xDd3NuQVFGL0lBQkJCR29pQVVIMnlBOFFhQ0FBUVlBSGFpSUFRYlRMRHhDVEFpQUFJQUVRbHc0TENRQWdBQkNYQ1JBcUN5NEJBbjlCNEIwaEFVR3ZBaUVDQTBBZ0FDQUJLQUlFSUFJUUZTQUJLQUlNSVFJZ0FVRU1haUVCSUFJTkFBc0xQQUVCZnlBQVFaekxEellDQUVFd0VDWWlBeEQ4QlJvZ0FDQUROZ0lFSUFCQkFEb0FFQ0FBSUFFMkFnd2dBQ0FDTmdJSUlBQkI4TW9QTmdJQUM3RUJBUU4vSUFCQjJMb1BOZ0lrSUFCQ0FEY0NIQ0FBSUFFMkFnZ2dBRUhrdWc4MkFnQWdBRUVzYWhCT0drRXdFQ1lpQWhEOEJSb2dBQ0FDTmdJRVFTQVFKaUlDRUpnSklRTWdBQ0FDTmdJVVFSUVFKaUlDSWdRZ0FDZ0NDQ0FERVBBWklBUkJ4TW9QTmdJQUlBQWdBallDREVHTUJ4QW1JZ0lnQVVFQVFRRVFtd2thSUFCQkFEb0FXQ0FBUVFBMkFsQWdBRUVBTmdKSUlBQkJRR3RCQURZQ0FDQUFRUUEyQWpnZ0FDQUNOZ0lRSUFBTHFBd0JESDhqQUVIUUJXc2lDaVFBSUFwQkFEWUN6QVVRMVFNUW5Ra0NRQ0FDUlFSQVFRRWhBd3dCQ3lBS1FjZ0Zha0YvSUFKQkEyb2lFMEVDZENBVFFmLy8vLzhEY1NBVFJ4c2lDeEFtRURvaER5QUtRY0FGYWlBTEVDWVFPaUVOSUFwQnVBVnFJQXNRSmhBNklRNGdBa0VCVGdSQVFRQWhDd05BSUFFZ0MwRUNkQ0lNYWlJUUtBSUFJUkVnRFNBTFFRSnFJaElRRVNBUk5nSUFBa0FnQXdSQUlBTWdER29vQWdBaURFRi9TZzBCQ3lBUUtBSUFFS0FCSVF3TElBOGdFaEFSSUF3MkFnQWdDMEVCYWlJTElBSkhEUUFMQ3dKQUlBUUVRRUVBSVFzZ0FrRUFUQTBCQTBBZ0JDQUxRUUowYWlnQ0FDRUJJQTRnQzBFQ2FoQVJJQUUyQWdBZ0MwRUJhaUlMSUFKSERRQUxEQUVMUVFBaEN5QUNRUUJNRFFBRFFDQU9JQXRCQW1vUUVVRUFOZ0lBSUF0QkFXb2lDeUFDUncwQUN3dEJBU0VFSUFwQkFUWUN0QVVnQ2tHZ0JXb1FuQTRoRENBS0lBQW9BZ3cyQXB3RklBa2dDa0hNQldvZ0NrRzBCV29nQ2tHY0JXb2dEQkRVR1VFQUlSRWdDa0hnQkdvZ0FpQU5RUUlRRVNBUFFRSVFFVUVBUVFCQkFFRUFFSk1ISVJJZ0NrRUFOZ0xjQkNBS1FRRTJBdGdFSUFwQkFEb0Exd1FnRWlBS1Fkd0VhaUFLUWRnRWFpQUtRZGNFYWhDakVDRUJJQW9vQXR3RVJTRURJQUFvQWdnZ0NpZ0NuQVVpRUNBQklBcEIzQVJxSUFwQjJBUnFJQXdRMHhraEZBSkFJQU1OQUNBQklBb29BdGdFUVFoR0lBb29BdHdFUWFzQ1NuRnhJZ1FnQ2kwQTF3UkZjZzBBSUFvb0Fzd0ZRUUZ4SWhGRklRUUxJQVlnQ2lnQzNBUVF4UW9nQmlBS0tBTFlCQkNzQmlBR0lBd1FsUTRnQmlBS0tBTE1CU0lKSUFnUTBoa2dEQ2dDQ0VFQlRnUkFJQVlRa2drTEFrQWdDVUdBQ0hGRkRRQWdCaUVCSUE1QkFoQVJLQUlBSWdNRVFDQUJRZHdHYWlBREVHZ0xJQUpCQVVnTkFFRUFJUXNEUUNBR1FlZ0dhaUFOSUF0QkFtb2lBUkFSS0FJQUlBOGdBUkFSS0FJQUVNb0ZHaUFMUVFGcUlnc2dBa2NOQUFzTElBb29BdHdFSUFvb0F0Z0VJQXdRMEJrZ0NpZ0MzQVFRaXc1QndBcHNJQXdRaWc1QndBTnNhaUFLS0FMWUJCQ0pEa0h3QUd4cUlCQkJBblJxUWFEMEVtb29BZ0FoQXlBS1FkQUVha0VZRUNZUSt3VVFPaUVCSUFNRVFDQUJLQUlBSUFNUWtBa0xRUUFoQXlBQUtBSUlJQUVvQWdBZ0NpZ0MzQVFnQ2lnQzJBUWdEQ0FRRU04WkJFQWdDVUdBZ0FGeEJFQWdBU2dDQUNFRElBQW9BZ2dpQzBFUWFpSU1RZDNJRHhBUUdpQURJQXNRcWhrZ0RFSHp5QThRRUJvTElBRW9BZ0FoQ3lBQUtBSUlJUUFnQ2lBS0tRT29CVGNEd0FRZ0NpQUtLUU9nQlRjRHVBUWdDaWdDMkFRaERDQUtLQUxjQkNFVklBcEJxQVJxSUFnUTdRRWhBeUFLSUFvcEE4QUVOd01RSUFvZ0Npa0R1QVEzQXdnZ0NrSElCR29nQ3lBR0lCVWdEQ0FRSUFBZ0NrRUlhaUFKUVFBZ0F4Q0lEaEE2SVFBZ0F4QWdHaUFLUVpBQmFpQUFLQUlBSUFwQkdHb0NmMEhZdWc4Z0RrRUNFQkVvQWdCRkRRQWFJQTVCQWhBUktBSUFDeEJwSWdNZ0J4Q1hEU0VISUFNUUlCb2dDa0hnQUdvZ0FDZ0NBQkNIRGlFRElBQW9BZ0FnQXhDR0RpQUFLQUlBSUFjUWhRNGdBQ2dDQUNJRFFlQUlJQU1vQWdBb0FyQUJFUUVBSUJSRkJFQWdBQ2dDQUNJRElBTW9Ba0JCQVdvMkFrQUxJQkVFUUNBS1FSaHFFS1FGSUFBb0FnQWlBeUFLUVJocVFhcTlEMEh0dlE5QjJMb1BRUUFnQXlnQ0FDZ0NwQUVSQWdBTElBQW9BZ0FpQXlBREtBSUFLQUlJRVFVQUlBcEIwQUJxRUU0aENDQUFLQUlBSUFnUTRCZ2dDQkFUSVFNZ0RVRUFFQkVnQXpZQ0FDQU5RUUFRRVNnQ0FCQ2dBU0VESUE5QkFCQVJJQU0yQWdBZ0RrRUFFQkZCQURZQ0FDQU5RUUVRRVNBRk5nSUFJQTFCQVJBUktBSUFFS0FCSVFNZ0QwRUJFQkVnQXpZQ0FDQU9RUUVRRVVFQU5nSUFJQTBnQWtFQ2FpSUNFQkZCOXIwUE5nSUFJQTBnQWhBUktBSUFFS0FCSVFNZ0R5QUNFQkVnQXpZQ0FDQU9JQUlRRVVFQU5nSUFJQXBCR0dvZ0V5QU5LQUlBSUE4b0FnQWdEaWdDQUVFQ1FRRkJBQkNUQnlFQ0lBRW9BZ0FRakFRZ0FTZ0NBQm9nQUNnQ0FDQUhJQUlnQkNBR0lBa1F6aGtoQXlBQ0VLTUZHaUFJRUNBYUlBY1ErZ1lhSUFBUVBnc2dBU2dDQUNFQUlBRkJBRFlDQUNBQUJFQWdBQVJBSUFBUW5Ba1FLZ3NMSUJJUW93VWFJQTRRamdrZ0RSQ09DU0FQRUk0SkN5QUtRZEFGYWlRQUlBTUxSQUVDZnlBQUVKSUNJZ0ZCRDBrRVFDQUFRUThnQVdzUTRCa1BDeUFCUVE5TEJFQWdBQ2dDQUVIb0Ftb2hBU0FBRUpJQ0lRSWdBQ0FCRUpJT0lBQWdBaERhR1FzTE93RUJmeU1BUVJCcklnb2tBQ0FBSUFFZ0FpQURJQVFnQlNBR0lBY2dDaUFJRU8wQklnQWdDUkR5R1NFQklBQVFJQm9nQ2tFUWFpUUFJQUVMZ1FVQkNYOGdBU2dDRUNFREEwQWdCa1ZCQUNBRFFRSnhHMFVFUUVFQUlRUURRQUpBSUFFb0Fnd2dCRUVDZG5aQkFYRkZEUUFnQVNnQ0VDSUNRWUFDY1FSQUlBUVExQTFGRFFFTElBUkJBM0VpQjBFQ1IwRUFJQUpCZ0lBQmNSc05BRUVBSUFaQkFVY2dCRUg4Ly8vL0IzRWlCU0FFUjNKRklBSkJBbkViRFFBZ0FrR0FFSEVFUUNBRUVOUU5EUUVMSUFBQ2Z5QUhRUUowUWVEbUNHb2dBa0hBQUhFTkFCb2dCVUVDZEVIZzVnaHFJQUpCZ0FoeERRQWFJQVJCQW5SQjRPWUlhZ3NvQWdBUUVob2dBRUdnNXdnUUVob2dBQ0FCS0FJRUVCSWFJQUJCeXV3SEVCSWFJQUVvQWdnaUFrRUJUZ1JBSUFSQkFuUkI0T1lJYWlFS0lBVkJBblJCNE9ZSWFpRUZJQWRCQW5SQjRPWUlhaUVIUVFBaEF3TkFBa0FnQXlBQ1FYOXFSdzBBSUFFdEFCQkJJSEZGRFFBZ0FFR2k1d2dRRWhvTEFrQWdBdzBBQW44Z0FTZ0NFQ0lDUVlBZ2NRUkFJQUJCcCtjSUVCSWFJQUVvQWhBaEFnc2dBa0dBQkhFTEJIOGdBRUc2NXdnUUVob2dBU2dDRUFVZ0FndEJnTUFBY1VVTkFDQUFRYUxuQ0JBU0dnc0NRQ0FCS0FJUUlnaEJnQUZ4QkVBZ0J5RUNJQU1nQVNnQ0NFRi9ha1lOQVFzQ1FDQUdSUTBBSUFFb0FnZ2hDU0FJUVFkeEJFQWdCU0VDSUFNZ0NVRi9ha1lOQWdzZ0NFRUVjUVJBSUFVaEFpQURJQWxCZm1wR0RRSUxJQU5GQkVBZ0JTRUNJQWhCR0hGRkRRRU1BZ3NnQTBFQlJ3MEFJQVVoQWlBSVFSQnhEUUVMSUFvaEFnc2dBQ0FDS0FJQUVCSWFJQU1nQVNnQ0NDSUNRWDlxU0FSQUlBQkJ3TzBIRUJJYUlBRW9BZ2doQWdzZ0EwRUJhaUlESUFKSURRQUxDeUFBUWJ6a0J4QVNHZ3NnQkVFQmFpSUVRUkJIRFFBTEN5QUdRUUZxSWdaQkFrRUJJQUVvQWhBaUEwRWZjUnRKRFFBTEN3Y0FJQUFvQWd3TFB3RUJmeERzRXhEdEV3UkFRWlQwRWtHVTlCSW9BZ0JCQVdvMkFnQkJtUFFTS0FJQVJRUkFRVEFRSmlJQUVQd0ZHa0dZOUJJZ0FEWUNBQXNRbnhBTEMwTUJBWDhqQUVFUWF5SUJKQUFnQUJBYkdpQUJRZi8vLy84Qk5nSU1JQUZCLy8vLy93YzJBZ2dnQVVFTWFpQUJRUWhxRUtRQktBSUFJUUFnQVVFUWFpUUFJQUFMVVFFQmZ5QUFFTjhESUFBUUd5QUFLQUlBSUFBb0FnUWdBVUVFYWlJQ0VJVUdJQUFnQWhBdUlBQkJCR29nQVVFSWFoQXVJQUFRR3lBQkVDTVFMaUFCSUFFb0FnUTJBZ0FnQUNBQUVKb0JFTmtFQzJrQkFuOGdBQ2dDRkNJQVJRUkFRUUVQQ3dKQUlBQW9BZ0FpQkFSQUEwQWdBQ0VEQWtBZ0FpQUVjVVVOQUVFQklRQWdBeWdDQ0NBQlRBMERJQU1vQWd4QkFVZ05BQ0FES0FJRUlBRk1EUU1MSUFOQkZHb2hBQ0FES0FJVUlnUU5BQXNMUVFBaEFBc2dBQXVpQVFFRWZ5QUFRUnhxSWdFUW1nRUVRQ0FCRUtFT0tBSUVJUVFnQUNBQkVLRU9LQUlBTmdJUUlBQW9BaGdpQWlBRVJ3UkFBMEFnQWlJREtBSUFJUUlDUUNBREtBSUVRUUpQQkVBZ0FDZ0NHQ0lEUlEwQklBTVFLZ3dCQ3lBQUtBSVlJZ01nQUNnQ0ZEWUNBQ0FBSUFNMkFoUUxJQUFnQWpZQ0dDQUNJQVJIRFFBTEN5QUJLQUlFUVhocUlRQWdBUkNhQVNFQ0lBRWdBQkNnRGlBQklBSVFwZ2tMQ3kwQUlBRWdBQ2dDQ0VjRVFBTkFJQUFvQWhBYUlBQWdBQ2dDQ0VGc2FqWUNDQ0FBS0FJSUlBRkhEUUFMQ3dzc0FDQUFLQUlBR2lBQUtBSUFJQUFReEFSQkZHeHFHaUFBS0FJQUlBQVF4QVJCRkd4cUdpQUFLQUlBR2dzOUFRRi9JQUVnQWtjRVFDQURLQUlBSVFRRFFDQUFJQVJCYkdvZ0FrRnNhaUlDRUxNSklBTWdBeWdDQUVGc2FpSUVOZ0lBSUFFZ0FrY05BQXNMQzBNQkFYOGpBRUVRYXlJQkpBQWdBQkE3R2lBQlFjeVpzK1lBTmdJTUlBRkIvLy8vL3djMkFnZ2dBVUVNYWlBQlFRaHFFS1FCS0FJQUlRQWdBVUVRYWlRQUlBQUxVQUVCZnlBQUVLUU9JQUFRT3lBQUtBSUFJQUFvQWdRZ0FVRUVhaUlDRVA0WklBQWdBaEF1SUFCQkJHb2dBVUVJYWhBdUlBQVFHeUFCRUNNUUxpQUJJQUVvQWdRMkFnQWdBQ0FBRURjUS9Sa0xtd0VCQVg4akFFRWdheUlFSkFBZ0JDQUNOZ0lZSUFRZ0FUWUNIQ0FFSUFNMkFoQWdCQ0FFUVJocU5nSU1JQVFnQkVFY2FqWUNDQ0FFUVFocUlBQkJCR3BCZ0E0UW5na2dCRUVJYWlBQVFkUUFha0dBSFJDZUNTQUVLQUlZSWdKQkNFWkJBQ0FFS0FJY0lnRkJ2d0pLRzBWQkFDQUNRUWhHSUFGQndnTkljaHRGQkVBZ0JFRUlhaUFBUWVRQWFrR0FIUkNlQ1FzZ0JFRWdhaVFBQzI4QkFuOGpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBQkJER29nQkVFTWFpQURFSUVDSUFFRVFDQUFLQUlRS0FJQUlBRkJGR3dRbEFJaEJRc2dBQ0FGTmdJQUlBQWdCU0FDUVJSc2FpSUNOZ0lJSUFBZ0FqWUNCQ0FBRUNNZ0JTQUJRUlJzYWpZQ0FDQUVRUkJxSkFBZ0FBdFpBUUovSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBRVA4WklnTWdBVThFUUNBQUVNUUVJZ0FnQTBFQmRra0VRQ0FDSUFCQkFYUTJBZ2dnQWtFSWFpQUNRUXhxRUZJb0FnQWhBd3NnQWtFUWFpUUFJQU1QQ3hCdUFBc3BBUUovQTBBZ0FDSUNJQUV0QUFBaUF6b0FBQ0FDUVFGcUlRQWdBVUVCYWlFQklBTU5BQXNnQWdzakFDQUFMUUFFQkVBZ0FDZ0NBQm9nQVVFUWFoQ3lBZ3NnQVFSQUlBQW9BZ0FhQ3d0U0FRRi9Jd0JCRUdzaUF5UUFJQUFnQVJEWEFpSUFFSjhKSUFOQkNHb2dBRUVBRU1NQkVKRUJJZ0FvQWdBaUFVRVFhaUFDRVA4QkdpQUJJQUlvQWhBMkFpQWdBQkFsUVFFNkFBUWdBMEVRYWlRQUMzd0JBbjhqQUVFZ2F5SUVKQUFnQVNBRVFSeHFJQUlRb1FraUJTZ0NBQ0VDSUFSQkFEb0FHeUFDUlFSQUlBUkJDR29nQVNBREVJWWFJQUVnQkNnQ0hDQUZJQVFvQWdnUXBBUWdCRUVJYWhCZklRSWdCRUVCT2dBYklBUkJDR29Rb0FrTElBQWdCRUVJYWlBQ0VERWdCRUViYWhDaUFTQUVRU0JxSkFBTEp3QWdBQ0FCRUxVSklBQWdCRFlDSENBQUlBSTJBaGdnQUNBRE5nSVVJQUJCK05FUE5nSUFDMEVCQVg4akFFRVFheUlESkFBZ0F5QUNPZ0FQUVg4aEFpQUJRUUJMQkVBZ0FDQUJJQU5CRDJvUXBRNGlBU0FBYTBGL0lBRWJJUUlMSUFOQkVHb2tBQ0FDQzI4QkFuOGpBRUVRYXlJQ0pBQWdBaUFCS1FJQU53TUlJQUlnQUJBZk5nSUVJQUlnQWlnQ0REWUNBQUpBSUFBUUV5QUNLQUlJSUFKQkJHb2dBaENrQVNnQ0FCQ0xCeUlBRFFCQmZ5RUFJQUlvQWdRaUFTQUNLQUlBSWdOSkRRQWdBU0FEU3lFQUN5QUNRUkJxSkFBZ0FBc3pBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBUkFUSUFFUUh4Q1pBUm9nQUNBQ1FRaHFFSW9hSVFBZ0FrRVFhaVFBSUFBTDVnRUJCWDhqQUVFd2F5SURKQUFDZjBFQklBRWdBU2dDQUNnQ0pCRUFBQ0lDSUFJb0FnQW9BakFSQUFBb0FrQWlCaEEzUVFCTkRRQWFBa0FEUUVFZ0VFWWlBaUFHSUFVUU9DZ0NBQ0lFSUFRb0FnQW9BaGdSQUFBZ0JTQUJJQUVvQWdBb0FpUVJBQUFnQVNBQktBSUFLQUlrRVFBQUlnUWdCQ2dDQUNnQ2RCRUFBQkNJR2lBRElBSTJBaXdnQTBFZ2FpQUFJQU5CQ0dvZ0FpQUNLQUlBS0FJWUVRQUFJQU5CTEdvUXBRa2lBaENrQ1NBRExRQWtJUVFnQWhDeUFpQUVRUUZIRFFFZ0JVRUJhaUlGSUFZUU4wa05BQXRCQVF3QkMwRUFDeUVBSUFOQk1Hb2tBQ0FBQzFFQkFYOGdBQkRmQXlBQUVEc2dBQ2dDQUNBQUtBSUVJQUZCQkdvaUFoQ3REaUFBSUFJUUxpQUFRUVJxSUFGQkNHb1FMaUFBRUJzZ0FSQWpFQzRnQVNBQktBSUVOZ0lBSUFBZ0FCQ2FBUkRaQkF0WkFRSi9Jd0JCSUdzaUF5UUFJQUFRT3lJQ0lBTkJDR29nQUNBQUVKb0JRUUZxRUo0R0lBQVFtZ0VnQWhEVkJ5SUNLQUlJSUFFUXhnUWdBaUFDS0FJSVFRaHFOZ0lJSUFBZ0FoQ05HaUFDRUs4T0lBTkJJR29rQUF0TEFRRi9Jd0JCRUdzaUFpUUFBa0FnQUNnQ0JDQUFFQnNvQWdCSEJFQWdBQkE3SUFBb0FnUWdBUkRHQkNBQUlBQW9BZ1JCQ0dvMkFnUU1BUXNnQUNBQkVJNGFDeUFDUVJCcUpBQUxDQUFnQUJDcURob0xZQUVCZnlNQVFSQnJJZ1FrQUNBRUlBSTJBZ0FnQkNBQk5nSUlJQVJCQ0dvZ0JCQWVCRUFEUUNBQUlBTW9BZ0FnQkNnQ0NCREdCQ0FFUVFocUVPMERJQU1nQXlnQ0FFRUlhallDQUNBRVFRaHFJQVFRSGcwQUN3c2dCRUVRYWlRQUN6QUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUFJQUlnQURZQ0NDQUNJQUpCQ0dvUW5BY2hBQ0FDUVJCcUpBQWdBQXRwQVFKL0lBQVEzd01nQVNnQ0JDRURJQUFRT3lBQUtBSUFJQUlnQVVFRWFpSUVFSzBPSUFBUU95QUNJQUFvQWdRZ0FVRUlhaUlDRUxVT0lBQWdCQkF1SUFCQkJHb2dBaEF1SUFBUUd5QUJFQ01RTGlBQklBRW9BZ1EyQWdBZ0FDQUFFSm9CRU5rRUlBTUxad0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ0FnQXlBQk5nSUlJQUFvQWhBaEFTQURRUWhxSUFNUUhnUkFBMEFnQVNBQUtBSUlJQU1vQWdnUXhnUWdBQ0FBS0FJSVFRaHFOZ0lJSUFOQkNHb1E3UU1nQTBFSWFpQURFQjROQUFzTElBTkJFR29rQUF0UkFRSi9JQUVnQUNnQ0JDSUZJQU5yYWlJRUlBSkpCRUFnQkNFREEwQWdBQkE3SUFBb0FnUWdBeERHQkNBQUlBQW9BZ1JCQ0dvMkFnUWdBMEVJYWlJRElBSkpEUUFMQ3lBQklBUWdCUkQrQlJvTElnQWpBRUVRYXlJREpBQWdBQkE3SUFFZ0FpQUFRUVJxRUpFYUlBTkJFR29rQUFzL0FRRi9JQUFRbUFvZ0FVa0VRQkJ1QUFzZ0FDQUFFRHNnQVJDWENpSUNOZ0lBSUFBZ0FqWUNCQ0FBRUJzZ0FpQUJRUU4wYWpZQ0FDQUFRUUFRMlFRTFFBRUJmeUFBS0FJQUJFQWdBQkNhQVNFQklBQVF0QTRnQUNBQkVLWUpJQUFRT3hvZ0FDZ0NBQm9nQUJEV0Fob2dBQkFiUVFBMkFnQWdBRUlBTndJQUN3dXZBUUVEZnlNQVFSQnJJZ01rQUFKQUlBSWdBV3RCQTNVaUJDQUFFTllDVFFSQUlBTWdBallDRENBRUlBQVFtZ0ZMQkVBZ0F5QUJOZ0lNSUFBUW1nRWhCU0FESUFNb0Fnd2dCVUVEZEdvMkFnd2dBU0FES0FJTUlBQW9BZ0FRcHdrYUlBQWdBeWdDRENBQ0lBUWdBQkNhQVdzUXVBNE1BZ3NnQUNBQklBSWdBQ2dDQUJDbkNSQzNEZ3dCQ3lBQUVKZ2FJQUFnQUNBRUVKNEdFSmNhSUFBZ0FTQUNJQVFRdUE0TElBTkJFR29rQUFzNUFDQUJLQUlFUlFSQUlBQkJBRFlDQkE4TElBQVFuUWNnQUNnQ0JDSUFJQUVvQWdRaUFVY0VRQ0FBSUFFb0FnQWdBU2dDQkJDWkdnc0xVZ0VEZnlNQVFSQnJJZ0lrQUNBQUVKMEhJQUlnQUNnQ0JDSUFFREkyQWdBZ0FrRUlhaUFDRUdjaEF5QUJLQUlFRUVBaEJDQUJLQUlFRURJaEFTQUFJQU1vQWdBZ0JDQUJFTE1PSUFKQkVHb2tBQXNqQUNBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlJTmdJSUlBQkJER29nQVVFTWFoQm5HZ3NIQUNBQUxRQXdDek1CQVg4Z0FDZ0NCQ0lCUlFSQUlBQVFwd0pGQkVBRFFDQUFLQUlJSWdBUXB3SkZEUUFMQ3lBQUtBSUlEd3NnQVJDNURndkFBUUVFZnlNQVFSQnJJZ1VrQUNBQUVJOEhJZ1FnQVd0QkFVOEVRQ0FBRUJNaEJnSi9JQVJCQVhaQmNHb2dBVXNFUUNBRklBRkJBWFEyQWdnZ0JTQUJRUUZxTmdJTUlBVkJER29nQlVFSWFoQlNLQUlBRU9RQ0RBRUxJQVJCZjJvTElRUWdBQkFqSUFSQkFXb2lCeEQ2QlNFRUlBTUVRQ0FFSUFZZ0F4RG9BUXNnQWlBRGF5SUNCRUFnQXlBRWFpQURJQVpxSUFJUTZBRUxJQUZCQ2tjRVFDQUFFQ01hQ3lBQUlBUVE0UUVnQUNBSEVPa0JJQVZCRUdva0FBOExFRzRBQ3drQUlBQkJBRG9BRUFzSUFDQUFMUUFRUlFzS0FDQUFLQUlNS0FJQUN4UUFJQUFvQWd3aUFFVUVRRUVBRHdzZ0FCQVdDMDRCQW44Z0FDQUFLQUlNRU1BT0lnUTJBZ3hCQVNFREFrQWdBVUVCU0EwQUlBUWdBaERjQVNBQlFRRkdEUUFEUUNBQUtBSU1JQUlnQTBFQ2RHb1EzQUVnQTBFQmFpSURJQUZIRFFBTEN3dGhBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNBQ0FDSUFBMkFnaEJBQ0VBQWtBZ0FrRUlhaUFDRUI1RkRRQURRQ0FDS0FJSUtBSUFFTVFPQkVCQkFTRUFEQUlMSUFKQkNHb1F0QUlnQWtFSWFpQUNFQjROQUFzTElBSkJFR29rQUNBQUMyRUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSUFJQUlnQURZQ0NFRUFJUUFDUUNBQ1FRaHFJQUlRSGtVTkFBTkFJQUlvQWdnb0FnQVF4UTRFUUVFQklRQU1BZ3NnQWtFSWFoQzBBaUFDUVFocUlBSVFIZzBBQ3dzZ0FrRVFhaVFBSUFBTElBQWdBQ2dDQkVIL0FYRWlBRUVTVFFSQVFmKy9FQ0FBZGtFQmNROExRUUFMWVFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWdBZ0FpQUFOZ0lJUVFBaEFBSkFJQUpCQ0dvZ0FoQWVSUTBBQTBBZ0FpZ0NDQ2dDQUJER0RnUkFRUUVoQUF3Q0N5QUNRUWhxRUxRQ0lBSkJDR29nQWhBZURRQUxDeUFDUVJCcUpBQWdBQXRoQVFGL0l3QkJFR3NpQWlRQUlBSWdBVFlDQUNBQ0lBQTJBZ2hCQUNFQUFrQWdBa0VJYWlBQ0VCNUZEUUFEUUNBQ0tBSUlLQUlBRU1jT0JFQkJBU0VBREFJTElBSkJDR29RdEFJZ0FrRUlhaUFDRUI0TkFBc0xJQUpCRUdva0FDQUFDMkVCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lBSUFJZ0FEWUNDRUVBSVFBQ1FDQUNRUWhxSUFJUUhrVU5BQU5BSUFJb0FnZ29BZ0FReUE0RVFFRUJJUUFNQWdzZ0FrRUlhaEMwQWlBQ1FRaHFJQUlRSGcwQUN3c2dBa0VRYWlRQUlBQUxjd0VCZnlNQVFTQnJJZ01rQUNBRElBRTJBaEFnQXlBQU5nSVlJQU1nQWpZQ0NFRUFJUUlDUUNBRFFSaHFJQU5CRUdvUUhrVU5BQU5BSUFNb0FoZ29BZ0FnQXlnQ0NCREpEZ1JBUVFFaEFnd0NDeUFEUVJocUVMUUNJQU5CR0dvZ0EwRVFhaEFlRFFBTEN5QURRU0JxSkFBZ0FndGhBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNBQ0FDSUFBMkFnaEJBQ0VBQWtBZ0FrRUlhaUFDRUI1RkRRQURRQ0FDS0FJSUtBSUFFTW9PQkVCQkFTRUFEQUlMSUFKQkNHb1F0QUlnQWtFSWFpQUNFQjROQUFzTElBSkJFR29rQUNBQUMzTUJBWDhqQUVFZ2F5SURKQUFnQXlBQk5nSVFJQU1nQURZQ0dDQURJQUkyQWdoQkFDRUNBa0FnQTBFWWFpQURRUkJxRUI1RkRRQURRQ0FES0FJWUtBSUFJQU1vQWdnUXl3NEVRRUVCSVFJTUFnc2dBMEVZYWhDMEFpQURRUmhxSUFOQkVHb1FIZzBBQ3dzZ0EwRWdhaVFBSUFJTFRRQWdBQ0FBS1FJWVFvQ0EvQWVFTndJWUlBQWdBQ2dDRkVHQWdINXhRZitmQVhJMkFoUWdBQ0FBS1FJWVFvQ0FnUGdQaERjQ0dDQUFJQUFwQWhoQ2dJQ0FnUEQvLy8vL0FJUTNBaGdMTFFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWdnZ0FDQUNLQUlJRVA4QkdpQUFRUUEyQWhBZ0FrRVFhaVFBQzFFQUlBQkNmemNDRENBQUlBQXBBZ1JDLy8vLy8vLy8vNGQ0Z3pjQ0JDQUFJQUFwQWhoQy8vOERoRGNDR0NBQUlBQW9BaUJCL3dGeU5nSWdJQUFnQUNnQ0ZFSC8vNEYrY1VHQWdQNEFjallDRkFzSEFDQUFFTVFPQ3djQUlBQVF4UTRMQndBZ0FCREdEZ3NIQUNBQUVNY09Dd2NBSUFBUXlBNExDUUFnQUNBQUVNa09Dd2NBSUFBUXlnNExDUUFnQUNBQkVNc09DeDRCQVg4Z0FDQUFLQUlBS0FLSUFSRUFBQVIvSUFBb0FrQkZCU0FCQ3dzdEFDQUJJQUFvQWdoSEJFQURRQ0FBS0FJUUdpQUFJQUFvQWdoQmZHbzJBZ2dnQUNnQ0NDQUJSdzBBQ3dzTElnRUJmeUFBTFFBRVFRNUdCSDhnQUNBQUtBSUFLQUlnRVFBQUVLTUhCU0FCQ3dzaUFRRi9JQUF0QUFSQkRrWUVmeUFBSUFBb0FnQW9BaUFSQUFBUXBBY0ZJQUVMQ3lJQkFYOGdBQzBBQkVFT1JnUi9JQUFnQUNnQ0FDZ0NJQkVBQUJEUUJBVWdBUXNMR2dBZ0FDQUFLQUlBS0FJc0VRQUFMd0VFUWNEL0FYRkJBRWNMSkFBZ0FDMEFCRUZ6YWlJQVFmOEJjVUVFVFFSQVFSTWdBRUVmY1haQkFYRVBDMEVBQ3pBQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQWdBRUVJYWlBQ1FReHFFS1lCS0FJQU5nSUlJQUpCRUdva0FBc01BQ0FBS0FJOElBRVF3Qm9MREFBZ0FDZ0NQRUVCT2dBTUN3b0FJQUFvQWp3dEFBd0xJZ0VCZnlBQUlBQW9BZ0FvQW5BUkFBQUVmeUFBS0FJOEVLVUhRUUZ6QlNBQkN3c2ZBUUYvSUFBZ0FDZ0NBQ2dDY0JFQUFBUi9JQUFvQWp3UXBRY0ZJQUVMQ3lZQkFYOUJBU0VCSUFBZ0FDZ0NBQ2dDWUJFQUFBUi9JQUVGSUFBdEFBWkJFSEZCQkhZTEN3b0FJQUFvQWp3b0FnZ0xDZ0FnQUNnQ1BCRFZEZ3NLQUNBQUtBSThFTUlDQ3dvQUlBQW9BandRb2djTEJ3QWdBQ2dDU0FzVUFDQUFJQUFvQWdSQmdHQnhRWUFDY2pZQ0JBc0hBQ0FBRURVYUN6WUJBbjhqQUVFUWF5SUNKQUFnQVVFQkVLTU9JZ05CQURZQ0FDQUFJQU1nQWtFSWFpQUJRUUVRbVFFUWtRRWFJQUpCRUdva0FBdUJBUUVDZnlNQVFTQnJJZ01rQUNBQUVEc2lBaUFEUVFocUlBQWdBQkEzUVFGcUVJTWFJQUFRTnlBQ0VJSWFJZ0lvQWdnZ0FSQ3pDU0FDSUFJb0FnaEJGR28yQWdnZ0FDQUNFSUFhSUFJZ0FpZ0NCQkQ4R1NBQ0tBSUFCRUFnQWlnQ0VCb2dBaWdDQUJvZ0FoQWpLQUlBSUFJb0FnQnJRUlJ0R2dzZ0EwRWdhaVFBQzRzQkFDQUFRUUEyQWdBZ0FFSUFOd0lRSUFCQ2Z6Y0NDQ0FBUVFBN0FRUWdBRUYvTmdKUUlBQkJBRG9BVGlBQVFRQTdBVXdnQUVGL05nSkVJQUJCQURvQVFDQUFRUUEyQWp3Z0FFRUFPd0U0SUFCQ2Z6Y0NMQ0FBUVFBN0FTZ2dBRUtCZ0lDQUVEY0NIQ0FBUVFBNkFCZ2dBRUYvTmdJMElBQkJBRG9BS2lBQVFRRTJBaVFnQUVFQU5nSklDMU1CQVg4Z0FFRUFOZ0lBSUFCQ0FEY0NsQUVnQUNBQUx3R1FBVUdBWUhGQkFYSWlBanNCa0FFZ0FDQUJLUUlBTndLY0FTQUFJQUVwQWdnM0FxUUJJQUJCQURZQ3JBRWdBQ0FDUVlIQUEzRTdBWkFCQ3djQUlBQW9Ba0FMUndFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFFUXNRa2dBQ0FDUVFocUVMQUpJUUFnQVJBZklRTWdBQ0FCRUJNZ0F5QURRUUZxRUs4SklBQkJLQkRDRGlBQ1FSQnFKQUFMSndBZ0FDMEFCQVJBSUFBb0FnQWFJQUZCQ0dvUTZBa0xJQUVFUUNBQUtBSUFHaUFCRUNvTEN3OEFJQUFFUUNBQUVEWWdBQkFxQ3d1Y0JBRURmeU1BUVpBRGF5SUhKQUFnQnlBQU5nS01Bd0pBSUFCRkJFQkJBQ0VBUVlBSVFSTkJBVUdJOFJFb0FnQVE5d0lhREFFTElBUkJBQ0FGRzBVRVFFRUFJUUJCbEFoQkZFRUJRWWp4RVNnQ0FCRDNBaG9NQVF0QkFDRUFJQVJCQURZQ0FDQUZRUUEyQWdBZ0FVRUZUVUVBUVFFZ0FYUkJNWEViUlFSQVFha0lRUlZCQVVHSThSRW9BZ0FROXdJYURBRUxJQU5CZ0lCOGFrRVlkMEVHVHdSQVFiOElRUjVCQVVHSThSRW9BZ0FROXdJYURBRUxRWUQwRWkwQUFFVUVRQkQzR1VHQTlCSkJBVG9BQUFzZ0IwR3dBbW9nQVJEeEdTSUdJZ2hCQVRZQ0tDQUlJQWRCakFOcU5nSVlJQWhCQURZQ0hDQUdRUUUyQWpnZ0JrSGtBRFlDUkNBR1FVQnJRUUUyQWdBZ0JpQUJOZ0k4SUFaQmdJQ0FBallDVENBR1FRRTJBa2dnQmlBRE5nSlVJQVpCQVRZQ1VBSkFJQVlRbVJCRkJFQkIzQXRCRFVFQlFZanhFU2dDQUNJQkVQY0NHaUFISUFZb0FoUVFFellDRUNBQlFlb0xJQWRCRUdvUXpBSU1BUXNnQjBFb2FoRG9HU0lESUFZUTFSWUNRQ0FERU9RWlJRUkFRZTRMUVF4QkFVR0k4UkVvQWdBaUFSRDNBaG9nQnlBREtBTDRBUkFUTmdJQUlBRkI2Z3NnQnhETUFnd0JDeUFIUVNCcUVLSUxJUWdnQnlBQ09nQWdJQWhCQURvQUJDQUlRUUE3QUFKQkRCQW1JZ0FRTUNFQ0lBTWdBVUVDZEdvb0FyQUJJQUlnQ0JENkZTQUZJQUlRRmpZQ0FDQUVJQUlvQWdBMkFnQUxJQU1Ra3drYUN5QUdFSmNKR2dzZ0IwR1FBMm9rQUNBQUN3VUFFS3NUQ3d1NHVoTEJBZ0JCZ0FnTCtRRkpibkIxZENCd2IybHVkR1Z5SUc1MWJHd0tBRTkxZEhCMWRDQndiMmx1ZEdWeUlHNTFiR3dLQUVsdWRtRnNhV1FnYzJoaFpHVnlJSE4wWVdkbENnQkpiblpoYkdsa0lGTlFTVkl0VmlCMlpYSnphVzl1SUc1MWJXSmxjZ29BQUFBZ0FBQUFCZ0FBQUNBQUFBQWdBQUFBUUFBQUFBQVFBQUJBQUFBQUlBQUFBRkFBQUFBZ0FBQUFBQkFBQUNBQUFBQ0FBQUFBQ0FBQUFCQUFBQUFRQUFBQUR3QUFBUGovLy84SEFBQUFDQUFBQVAvL0FBRC8vd0FBLy84QUFBQUVBQUFBQkFBQVFBQUFBQUFFQUFBUUFBQUFDQUFBQUFnQUFBQUJBQUFBUEFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFBSUFBQUFDQUFBQUFnQVFaQUtDMDBJQUFBQUNBQUFBQkFBQUFBQUFRQUFBQVFBQUFBRUFBQkFBQUFBZ0FBQUFJQUFBQUFRQUFBQUFBUUFBQUFRQUFDQUFBQUFnQUFBQUJBQUFBQUFCQUFBZUFBQUFDQUFBQUJBQUFBQUVBQkI4QW9MQ1FnQUFBQUlBQUFBQVFCQmpBc0xiZ0VBQUFBQkFBQUFBRUFBQUFRQUFBQkFBQUFBQ0FBQUFBZ0FBQUFFQUFBQUFBRUFBQUFDQUFBZ0FBQUFBUUFBQUFFQUFBQWdBQUFBQVFBQUFBRUFBQUFFQUFBQUFRRUJBUUVCQVFFQkFBQUFVR0Z5YzJVZ1ptRnBiR1ZrQ2dBbGN3b0FUR2x1YXlCbVlXbHNaV1FLQUVHRURBc1JBUUFBQUFJQUFBQURBQUFBQkFBQUFBVUFRYUFNQzZJQkFRQUFBQUlBQUFBR0FBQUFCQUFBQUFjQUFBQmhiR3h2WTJGMGIzSThWRDQ2T21Gc2JHOWpZWFJsS0hOcGVtVmZkQ0J1S1NBbmJpY2daWGhqWldWa2N5QnRZWGhwYlhWdElITjFjSEJ2Y25SbFpDQnphWHBsQUNodWRXeHNLUUJoYkd4dlkyRjBiM0k4VkQ0Nk9tRnNiRzlqWVhSbEtITnBlbVZmZENCdUtTQW5iaWNnWlhoalpXVmtjeUJ0WVhocGJYVnRJSE4xY0hCdmNuUmxaQ0J6YVhwbEFFSE1EUXNwQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBQUFBRVFBQUFCSUFRWUFPQ3cyM0FBQUF3VE1DQUFFQUFBQUNBRUdZRGdzTnVBQUFBTWt6QWdBQkFBQUFBZ0JCc0E0TERia0FBQURSTXdJQUFRQUFBQUlBUWNnT0N3MjZBQUFBMVRNQ0FBRUFBQUFDQUVIZ0Rnc051d0FBQU5rekFnQUJBQUFBQWdCQitBNExEYndBQUFEZE13SUFBUUFBQUFJQVFaQVBDdzI5QUFBQTRqTUNBQUVBQUFBQ0FFR29Ed3NOdmdBQUFPY3pBZ0FDQUFBQUFnQkJ3QThMRGI0QUFBRG5Nd0lBQVFBQUFBSUFRZGdQQ3czRkFBQUE3RE1DQUFJQUFBQUNBRUh3RHdzTnhnQUFBUEF6QWdBQkFBQUFBZ0JCaUJBTERjY0FBQUQwTXdJQUFRQUFBQUlBUWFBUUN3M0lBQUFBK0RNQ0FBRUFBQUFDQUVHNEVBc055UUFBQVAwekFnQUJBQUFBQWdCQjBCQUxEY29BQUFBQ05BSUFBUUFBQUFJQVFlZ1FDdzNMQUFBQUJ6UUNBQUVBQUFBQ0FFR0FFUXNOekFBQUFCTTBBZ0FCQUFBQUFnQkJtQkVMRGMwQUFBQVhOQUlBQVFBQUFBSUFRYkFSQ3czT0FBQUFIRFFDQUFFQUFBQUNBRUhJRVFzTjBnQUFBQ0kwQWdBQkFBQUFBZ0JCNEJFTERkTUFBQUFuTkFJQUFRQUFBQUlBUWZnUkM3VUJtd0FBQUMwMEFnQUNBQUFBQWdBQUFBRUFBQUFBQUFBQTFRQUFBREUwQWdBQ0FBQUFBZ0FBQUFFQUFBQUFBQUFBMWdBQUFEVTBBZ0FDQUFBQUFnQUFBQUVBQUFBQUFBQUExd0FBQURrMEFnQURBQUFBQWdBQUFBUUFBQUFBQUFBQTJBQUFBRDgwQWdBREFBQUFBZ0FBQUFFQUFBQUFBQUFBMlFBQUFFTTBBZ0FDQUFBQUFnQUFBQWdBQUFBQUFBQUEyZ0FBQUVnMEFnQURBQUFBQWdBQUFCQUFBQUFBQUFBQUVBRUFBRk0wQWdBQkFBQUFBZ0JCdUJNTERSRUJBQUJkTkFJQUF3QUFBQUlBUWRBVEN3MFNBUUFBYVRRQ0FBSUFBQUFDQUVIb0V3di9DQk1CQUFCeE5BSUFBd0FBQUFJQUFBQUNBQUFBQUFBQUFBd0JBQUI1TkFJQUFRQUFBQUlBQUFBQUJBQUFBQUFBQUEwQkFBQ0FOQUlBQWdBQUFBSUFBQUFBQkFBQUFBQUFBQTRCQUFDSk5BSUFBZ0FBQUFJQUFBQUFCQUFBQUFBQUFBOEJBQUNOTkFJQUFnQUFBQUlBQUFBQVFBQUFBQUFBQUtVQUFBQ1ROQUlBQWdBQUFBWUFBQUJBQ0FBQUFBQUFBS2NBQUFDY05BSUFBZ0FBQUFZQUFBQkFDQUFBQUFBQUFLWUFBQUNxTkFJQUFnQUFBQVlBQUFCQUNBQUFBQUFBQUtnQUFBQzJOQUlBQWdBQUFBWUFBQUJBQ0FBQUFBQUFBS01BQUFESE5BSUFBZ0FBQUFjQUFBQkFDQUFBQUFBQUFLUUFBQUROTkFJQUFnQUFBQWNBQUFCQUNBQUFBQUFBQUxvQkFBRFdOQUlBQVFBQUFBRUFBQUFBREFBQUFBQUFBTHNCQUFEYU5BSUFBUUFBQUFFQUFBQUFEQUFBQUFBQUFBZ0FBQURlTkFJQUFRQUFBQUVBQUFBQUNBQUFBQUFBQUw4QUFBRGlOQUlBQVFBQUFBSUFBQUFBQUFBQWtEVUNBTUFBQUFEbk5BSUFBUUFBQUFJQUFBQUFBQUFBa0RVQ0FNRUFBQURzTkFJQUFRQUFBQUlBQUFBQUFBQUFrRFVDQU1JQUFBRHhOQUlBQVFBQUFBSUFBQUFBQUFBQWtEVUNBTU1BQUFEM05BSUFBUUFBQUFJQUFBQUFBQUFBa0RVQ0FNUUFBQUQ5TkFJQUFRQUFBQUlBQUFBQUFBQUFrRFVDQU13QUFBQVROQUlBQVFBQUFBUUFBQUFBQUFBQWtEVUNBTTBBQUFBWE5BSUFBUUFBQUFRQUFBQUFBQUFBa0RVQ0FNOEFBQUFETlFJQUFRQUFBQUlBQUFBQUFBQUFrRFVDQU5BQUFBQUpOUUlBQVFBQUFBSUFBQUFBQUFBQWtEVUNBTkVBQUFBUE5RSUFBUUFBQUFJQUFBQUFBQUFBa0RVQ0FOUUFBQUFaTlFJQUFnQUFBQUlBQUFBZ0FBQUFrRFVDQU5VQUFBQXhOQUlBQWdBQUFBd0FBQUFCQUFBQWtEVUNBTllBQUFBMU5BSUFBZ0FBQUF3QUFBQUJBQUFBa0RVQ0FOY0FBQUE1TkFJQUF3QUFBQXdBQUFBRUFBQUFrRFVDQU5nQUFBQS9OQUlBQXdBQUFBSUFBQUNBQUFBQWtEVUNBTndBQUFBZU5RSUFBUUFBQUFJQUFBQkFBQUFBa0RVQ0FOc0FBQUFrTlFJQUFRQUFBQUlBQUFCQUFBQUFrRFVDQUtVQUFBQ1ROQUlBQWdBQUFBZ0FBQUJBQ0FBQWtEVUNBS2NBQUFDY05BSUFBZ0FBQUFnQUFBQkFDQUFBa0RVQ0FLWUFBQUNxTkFJQUFnQUFBQWdBQUFCQUNBQUFrRFVDQUtnQUFBQzJOQUlBQWdBQUFBZ0FBQUJBQ0FBQWtEVUNBS01BQUFESE5BSUFBZ0FBQUFnQUFBQkFDQUFBa0RVQ0FLUUFBQUROTkFJQUFnQUFBQWdBQUFCQUNBQUFrRFVDQUtRQkFBQXFOUUlBQWdBQUFBd0FBQUFBRXdBQTBEVUNBS1VCQUFBME5RSUFBZ0FBQUF3QUFBQUFFd0FBMERVQ0FLWUJBQUErTlFJQUFnQUFBQXdBQUFBQUV3QUEwRFVDQUtjQkFBQklOUUlBQWdBQUFBd0FBQUFBRXdBQTBEVUNBS2dCQUFCU05RSUFBZ0FBQUF3QUFBQUFFd0FBMERVQ0FLa0JBQUJiTlFJQUFnQUFBQXdBQUFBQUV3QUEwRFVDQUtvQkFBQmxOUUlBQWdBQUFBd0FBQUFBRXdBQTBEVUNBS3NCQUFCME5RSUFBd0FBQUF3QUFBQUFFd0FBMERVQ0FOZ0FBQUEvTkFJQUF3QUFBQUVBQUFBQUFBQUFFRFlDQU5nQUFBQS9OQUlBQXdBQUFBd0FBQUNBQUFBQUVEWUNBRUdBSFFzTkZ3RUFBT29YQWdBQkFBQUFBZ0JCbUIwTERSZ0JBQUQwRndJQUFRQUFBQUlBUWJBZEN3MFpBUUFBK1JjQ0FBRUFBQUFDQUVIZ0hRdkRBeThCQUFBZUtRSUFBQUFBQURRQkFBQm9LUUlBQUFBQUFEVUJBQUI4S1FJQUFBQUFBREFCQUFBVEdnSUFBQUFBQURJQkFBQkJLUUlBQUFBQUFPd0FBQUJNTmdJQUFBQUFBTzBBQUFCYU5nSUFBQUFBQU80QUFBQnFOZ0lBQUFBQUFPOEFBQUI0TmdJQUFBQUFBUFFBQUFDSU5nSUFBQUFBQVBVQUFBQ1ZOZ0lBQUFBQUFKa0FBQUNrTmdJQUFBQUFBQ1VCQUFDek5nSUFBQUFBQUNnQkFBREFOZ0lBQUFBQUFDWUJBQURLTmdJQUFBQUFBQ2NCQUFEV05nSUFBQUFBQU9BQUFBRGVOZ0lBQUFBQUFPRUFBQUR0TmdJQUFBQUFBT0lBQUFEOU5nSUFBQUFBQU9NQUFBQU1Od0lBQUFBQUFGMENBQUFjTndJQUFBQUFBRjRDQUFBb053SUFBQUFBQUY4Q0FBQTROd0lBQUFBQUFHQUNBQUJMTndJQUFBQUFBR0lDQUFDRTlnRUFBQUFBQUdNQ0FBQmFOd0lBQUFBQUFHUUNBQUJtTndJQUFBQUFBR1VDQUFCeE53SUFBQUFBQUdZQ0FBQi9Od0lBQUFBQUFHY0NBQUNLTndJQUFBQUFBR2dDQUFDYk53SUFBQUFBQUdrQ0FBQ3ROd0lBQUFBQUFHb0NBQUMrTndJQUFBQUFBR3NDQUFETk53SUFBQUFBQUd3Q0FBRGlOd0lBQUFBQUFHMENBQUR1TndJQUFBQUFBRzRDQUFBQU9BSUFBQUFBQUc4Q0FBQVFPQUlBUWJ3aEN4MFRBQUFBRkFBQUFBWUFBQUFHQUFBQUZRQUFBQllBQUFBR0FBQUFCZ0JCNUNFTG5Pb0JFd0FBQUJjQUFBQVlBQUFBR1FBQUFCVUFBQUFXQUFBQUdnQUFBQnNBQUFBQWFRQjFBR1l4TmdCcE9BQjFPQUJwTVRZQWRURTJBRElBTXdBMEFHWnNiMkYwSUdSR1pIaEdhVzVsS0dac2IyRjBJSEFwTzNabFl6SWdJR1JHWkhoR2FXNWxLSFpsWXpJZ0lIQXBPM1psWXpNZ0lHUkdaSGhHYVc1bEtIWmxZek1nSUhBcE8zWmxZelFnSUdSR1pIaEdhVzVsS0habFl6UWdJSEFwTzJac2IyRjBJR1JHWkhsR2FXNWxLR1pzYjJGMElIQXBPM1psWXpJZ0lHUkdaSGxHYVc1bEtIWmxZeklnSUhBcE8zWmxZek1nSUdSR1pIbEdhVzVsS0habFl6TWdJSEFwTzNabFl6UWdJR1JHWkhsR2FXNWxLSFpsWXpRZ0lIQXBPMlpzYjJGMElHWjNhV1IwYUVacGJtVW9abXh2WVhRZ2NDazdkbVZqTWlBZ1puZHBaSFJvUm1sdVpTaDJaV015SUNCd0tUdDJaV016SUNCbWQybGtkR2hHYVc1bEtIWmxZek1nSUhBcE8zWmxZelFnSUdaM2FXUjBhRVpwYm1Vb2RtVmpOQ0FnY0NrN1pteHZZWFFnWkVaa2VFTnZZWEp6WlNobWJHOWhkQ0J3S1R0MlpXTXlJQ0JrUm1SNFEyOWhjbk5sS0habFl6SWdJSEFwTzNabFl6TWdJR1JHWkhoRGIyRnljMlVvZG1Wak15QWdjQ2s3ZG1Wak5DQWdaRVprZUVOdllYSnpaU2gyWldNMElDQndLVHRtYkc5aGRDQmtSbVI1UTI5aGNuTmxLR1pzYjJGMElIQXBPM1psWXpJZ0lHUkdaSGxEYjJGeWMyVW9kbVZqTWlBZ2NDazdkbVZqTXlBZ1pFWmtlVU52WVhKelpTaDJaV016SUNCd0tUdDJaV00wSUNCa1JtUjVRMjloY25ObEtIWmxZelFnSUhBcE8yWnNiMkYwSUdaM2FXUjBhRU52WVhKelpTaG1iRzloZENCd0tUdDJaV015SUNCbWQybGtkR2hEYjJGeWMyVW9kbVZqTWlBZ2NDazdkbVZqTXlBZ1puZHBaSFJvUTI5aGNuTmxLSFpsWXpNZ0lIQXBPM1psWXpRZ0lHWjNhV1IwYUVOdllYSnpaU2gyWldNMElDQndLVHNBWm14dllYUXhObDkwSUdSR1pIZ29abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWkVaa2VDaG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdaRVprZUNobU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ1pFWmtlQ2htTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnWkVaa2VTaG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JrUm1SNUtHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQmtSbVI1S0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCa1JtUjVLR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0JrUm1SNFJtbHVaU2htYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCa1JtUjRSbWx1WlNobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1pFWmtlRVpwYm1Vb1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHUkdaSGhHYVc1bEtHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQmtSbVI1Um1sdVpTaG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JrUm1SNVJtbHVaU2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWkVaa2VVWnBibVVvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdSR1pIbEdhVzVsS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCa1JtUjRRMjloY25ObEtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJR1JHWkhoRGIyRnljMlVvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdSR1pIaERiMkZ5YzJVb1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHUkdaSGhEYjJGeWMyVW9aakUyZG1Wak5DazdabXh2WVhReE5sOTBJR1JHWkhsRGIyRnljMlVvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ1pFWmtlVU52WVhKelpTaG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdaRVprZVVOdllYSnpaU2htTVRaMlpXTXpLVHRtTVRaMlpXTTBJQ0FnWkVaa2VVTnZZWEp6WlNobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ1puZHBaSFJvS0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHWjNhV1IwYUNobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1puZHBaSFJvS0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCbWQybGtkR2dvWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUdaM2FXUjBhRVpwYm1Vb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdabmRwWkhSb1JtbHVaU2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWm5kcFpIUm9SbWx1WlNobU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ1puZHBaSFJvUm1sdVpTaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdabmRwWkhSb1EyOWhjbk5sS0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHWjNhV1IwYUVOdllYSnpaU2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWm5kcFpIUm9RMjloY25ObEtHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQm1kMmxrZEdoRGIyRnljMlVvWmpFMmRtVmpOQ2s3QUdac2IyRjBOalJmZENCa1JtUjRLR1pzYjJGME5qUmZkQ2s3WmpZMGRtVmpNaUFnSUdSR1pIZ29aalkwZG1Wak1pazdaalkwZG1Wak15QWdJR1JHWkhnb1pqWTBkbVZqTXlrN1pqWTBkbVZqTkNBZ0lHUkdaSGdvWmpZMGRtVmpOQ2s3Wm14dllYUTJORjkwSUdSR1pIa29abXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWkVaa2VTaG1OalIyWldNeUtUdG1OalIyWldNeklDQWdaRVprZVNobU5qUjJaV016S1R0bU5qUjJaV00wSUNBZ1pFWmtlU2htTmpSMlpXTTBLVHRtYkc5aGREWTBYM1FnWkVaa2VFWnBibVVvWm14dllYUTJORjkwS1R0bU5qUjJaV015SUNBZ1pFWmtlRVpwYm1Vb1pqWTBkbVZqTWlrN1pqWTBkbVZqTXlBZ0lHUkdaSGhHYVc1bEtHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQmtSbVI0Um1sdVpTaG1OalIyWldNMEtUdG1iRzloZERZMFgzUWdaRVprZVVacGJtVW9abXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWkVaa2VVWnBibVVvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUdSR1pIbEdhVzVsS0dZMk5IWmxZek1wTzJZMk5IWmxZelFnSUNCa1JtUjVSbWx1WlNobU5qUjJaV00wS1R0bWJHOWhkRFkwWDNRZ1pFWmtlRU52WVhKelpTaG1iRzloZERZMFgzUXBPMlkyTkhabFl6SWdJQ0JrUm1SNFEyOWhjbk5sS0dZMk5IWmxZeklwTzJZMk5IWmxZek1nSUNCa1JtUjRRMjloY25ObEtHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQmtSbVI0UTI5aGNuTmxLR1kyTkhabFl6UXBPMlpzYjJGME5qUmZkQ0JrUm1SNVEyOWhjbk5sS0dac2IyRjBOalJmZENrN1pqWTBkbVZqTWlBZ0lHUkdaSGxEYjJGeWMyVW9aalkwZG1Wak1pazdaalkwZG1Wak15QWdJR1JHWkhsRGIyRnljMlVvWmpZMGRtVmpNeWs3WmpZMGRtVmpOQ0FnSUdSR1pIbERiMkZ5YzJVb1pqWTBkbVZqTkNrN1pteHZZWFEyTkY5MElHWjNhV1IwYUNobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQm1kMmxrZEdnb1pqWTBkbVZqTWlrN1pqWTBkbVZqTXlBZ0lHWjNhV1IwYUNobU5qUjJaV016S1R0bU5qUjJaV00wSUNBZ1puZHBaSFJvS0dZMk5IWmxZelFwTzJac2IyRjBOalJmZENCbWQybGtkR2hHYVc1bEtHWnNiMkYwTmpSZmRDazdaalkwZG1Wak1pQWdJR1ozYVdSMGFFWnBibVVvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUdaM2FXUjBhRVpwYm1Vb1pqWTBkbVZqTXlrN1pqWTBkbVZqTkNBZ0lHWjNhV1IwYUVacGJtVW9aalkwZG1Wak5DazdabXh2WVhRMk5GOTBJR1ozYVdSMGFFTnZZWEp6WlNobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQm1kMmxrZEdoRGIyRnljMlVvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUdaM2FXUjBhRU52WVhKelpTaG1OalIyWldNektUdG1OalIyWldNMElDQWdabmRwWkhSb1EyOWhjbk5sS0dZMk5IWmxZelFwT3dCa2IzVmliR1VnYzNGeWRDaGtiM1ZpYkdVcE8yUjJaV015SUNCemNYSjBLR1IyWldNeUtUdGtkbVZqTXlBZ2MzRnlkQ2hrZG1Wak15azdaSFpsWXpRZ0lITnhjblFvWkhabFl6UXBPMlJ2ZFdKc1pTQnBiblpsY25ObGMzRnlkQ2hrYjNWaWJHVXBPMlIyWldNeUlDQnBiblpsY25ObGMzRnlkQ2hrZG1Wak1pazdaSFpsWXpNZ0lHbHVkbVZ5YzJWemNYSjBLR1IyWldNektUdGtkbVZqTkNBZ2FXNTJaWEp6WlhOeGNuUW9aSFpsWXpRcE8yUnZkV0pzWlNCaFluTW9aRzkxWW14bEtUdGtkbVZqTWlBZ1lXSnpLR1IyWldNeUtUdGtkbVZqTXlBZ1lXSnpLR1IyWldNektUdGtkbVZqTkNBZ1lXSnpLR1IyWldNMEtUdGtiM1ZpYkdVZ2MybG5iaWhrYjNWaWJHVXBPMlIyWldNeUlDQnphV2R1S0dSMlpXTXlLVHRrZG1Wak15QWdjMmxuYmloa2RtVmpNeWs3WkhabFl6UWdJSE5wWjI0b1pIWmxZelFwTzJSdmRXSnNaU0JtYkc5dmNpaGtiM1ZpYkdVcE8yUjJaV015SUNCbWJHOXZjaWhrZG1Wak1pazdaSFpsWXpNZ0lHWnNiMjl5S0dSMlpXTXpLVHRrZG1Wak5DQWdabXh2YjNJb1pIWmxZelFwTzJSdmRXSnNaU0IwY25WdVl5aGtiM1ZpYkdVcE8yUjJaV015SUNCMGNuVnVZeWhrZG1Wak1pazdaSFpsWXpNZ0lIUnlkVzVqS0dSMlpXTXpLVHRrZG1Wak5DQWdkSEoxYm1Nb1pIWmxZelFwTzJSdmRXSnNaU0J5YjNWdVpDaGtiM1ZpYkdVcE8yUjJaV015SUNCeWIzVnVaQ2hrZG1Wak1pazdaSFpsWXpNZ0lISnZkVzVrS0dSMlpXTXpLVHRrZG1Wak5DQWdjbTkxYm1Rb1pIWmxZelFwTzJSdmRXSnNaU0J5YjNWdVpFVjJaVzRvWkc5MVlteGxLVHRrZG1Wak1pQWdjbTkxYm1SRmRtVnVLR1IyWldNeUtUdGtkbVZqTXlBZ2NtOTFibVJGZG1WdUtHUjJaV016S1R0a2RtVmpOQ0FnY205MWJtUkZkbVZ1S0dSMlpXTTBLVHRrYjNWaWJHVWdZMlZwYkNoa2IzVmliR1VwTzJSMlpXTXlJQ0JqWldsc0tHUjJaV015S1R0a2RtVmpNeUFnWTJWcGJDaGtkbVZqTXlrN1pIWmxZelFnSUdObGFXd29aSFpsWXpRcE8yUnZkV0pzWlNCbWNtRmpkQ2hrYjNWaWJHVXBPMlIyWldNeUlDQm1jbUZqZENoa2RtVmpNaWs3WkhabFl6TWdJR1p5WVdOMEtHUjJaV016S1R0a2RtVmpOQ0FnWm5KaFkzUW9aSFpsWXpRcE8yUnZkV0pzWlNCdGIyUW9aRzkxWW14bExDQmtiM1ZpYkdVcE8yUjJaV015SUNCdGIyUW9aSFpsWXpJZ0xDQmtiM1ZpYkdVcE8yUjJaV016SUNCdGIyUW9aSFpsWXpNZ0xDQmtiM1ZpYkdVcE8yUjJaV00wSUNCdGIyUW9aSFpsWXpRZ0xDQmtiM1ZpYkdVcE8yUjJaV015SUNCdGIyUW9aSFpsWXpJZ0xDQmtkbVZqTWlrN1pIWmxZek1nSUcxdlpDaGtkbVZqTXlBc0lHUjJaV016S1R0a2RtVmpOQ0FnYlc5a0tHUjJaV00wSUN3Z1pIWmxZelFwTzJSdmRXSnNaU0J0YjJSbUtHUnZkV0pzWlN3Z2IzVjBJR1J2ZFdKc1pTazdaSFpsWXpJZ0lHMXZaR1lvWkhabFl6SXNJQ0J2ZFhRZ1pIWmxZeklwTzJSMlpXTXpJQ0J0YjJSbUtHUjJaV016TENBZ2IzVjBJR1IyWldNektUdGtkbVZqTkNBZ2JXOWtaaWhrZG1Wak5Dd2dJRzkxZENCa2RtVmpOQ2s3Wkc5MVlteGxJRzFwYmloa2IzVmliR1VzSUdSdmRXSnNaU2s3WkhabFl6SWdJRzFwYmloa2RtVmpNaXdnSUdSdmRXSnNaU2s3WkhabFl6TWdJRzFwYmloa2RtVmpNeXdnSUdSdmRXSnNaU2s3WkhabFl6UWdJRzFwYmloa2RtVmpOQ3dnSUdSdmRXSnNaU2s3WkhabFl6SWdJRzFwYmloa2RtVmpNaXdnSUdSMlpXTXlLVHRrZG1Wak15QWdiV2x1S0dSMlpXTXpMQ0FnWkhabFl6TXBPMlIyWldNMElDQnRhVzRvWkhabFl6UXNJQ0JrZG1Wak5DazdaRzkxWW14bElHMWhlQ2hrYjNWaWJHVXNJR1J2ZFdKc1pTazdaSFpsWXpJZ0lHMWhlQ2hrZG1Wak1pQXNJR1J2ZFdKc1pTazdaSFpsWXpNZ0lHMWhlQ2hrZG1Wak15QXNJR1J2ZFdKc1pTazdaSFpsWXpRZ0lHMWhlQ2hrZG1Wak5DQXNJR1J2ZFdKc1pTazdaSFpsWXpJZ0lHMWhlQ2hrZG1Wak1pQXNJR1IyWldNeUtUdGtkbVZqTXlBZ2JXRjRLR1IyWldNeklDd2daSFpsWXpNcE8yUjJaV00wSUNCdFlYZ29aSFpsWXpRZ0xDQmtkbVZqTkNrN1pHOTFZbXhsSUdOc1lXMXdLR1J2ZFdKc1pTd2daRzkxWW14bExDQmtiM1ZpYkdVcE8yUjJaV015SUNCamJHRnRjQ2hrZG1Wak1pQXNJR1J2ZFdKc1pTd2daRzkxWW14bEtUdGtkbVZqTXlBZ1kyeGhiWEFvWkhabFl6TWdMQ0JrYjNWaWJHVXNJR1J2ZFdKc1pTazdaSFpsWXpRZ0lHTnNZVzF3S0dSMlpXTTBJQ3dnWkc5MVlteGxMQ0JrYjNWaWJHVXBPMlIyWldNeUlDQmpiR0Z0Y0Noa2RtVmpNaUFzSUdSMlpXTXlJQ3dnWkhabFl6SXBPMlIyWldNeklDQmpiR0Z0Y0Noa2RtVmpNeUFzSUdSMlpXTXpJQ3dnWkhabFl6TXBPMlIyWldNMElDQmpiR0Z0Y0Noa2RtVmpOQ0FzSUdSMlpXTTBJQ3dnWkhabFl6UXBPMlJ2ZFdKc1pTQnRhWGdvWkc5MVlteGxMQ0JrYjNWaWJHVXNJR1J2ZFdKc1pTazdaSFpsWXpJZ0lHMXBlQ2hrZG1Wak1pd2dJR1IyWldNeUxDQWdaRzkxWW14bEtUdGtkbVZqTXlBZ2JXbDRLR1IyWldNekxDQWdaSFpsWXpNc0lDQmtiM1ZpYkdVcE8yUjJaV00wSUNCdGFYZ29aSFpsWXpRc0lDQmtkbVZqTkN3Z0lHUnZkV0pzWlNrN1pIWmxZeklnSUcxcGVDaGtkbVZqTWl3Z0lHUjJaV015TENBZ1pIWmxZeklwTzJSMlpXTXpJQ0J0YVhnb1pIWmxZek1zSUNCa2RtVmpNeXdnSUdSMlpXTXpLVHRrZG1Wak5DQWdiV2w0S0dSMlpXTTBMQ0FnWkhabFl6UXNJQ0JrZG1Wak5DazdaRzkxWW14bElHMXBlQ2hrYjNWaWJHVXNJR1J2ZFdKc1pTd2dZbTl2YkNrN1pIWmxZeklnSUcxcGVDaGtkbVZqTWl3Z0lHUjJaV015TENBZ1luWmxZeklwTzJSMlpXTXpJQ0J0YVhnb1pIWmxZek1zSUNCa2RtVmpNeXdnSUdKMlpXTXpLVHRrZG1Wak5DQWdiV2w0S0dSMlpXTTBMQ0FnWkhabFl6UXNJQ0JpZG1Wak5DazdaRzkxWW14bElITjBaWEFvWkc5MVlteGxMQ0JrYjNWaWJHVXBPMlIyWldNeUlDQnpkR1Z3S0dSMlpXTXlJQ3dnWkhabFl6SXBPMlIyWldNeklDQnpkR1Z3S0dSMlpXTXpJQ3dnWkhabFl6TXBPMlIyWldNMElDQnpkR1Z3S0dSMlpXTTBJQ3dnWkhabFl6UXBPMlIyWldNeUlDQnpkR1Z3S0dSdmRXSnNaU3dnWkhabFl6SXBPMlIyWldNeklDQnpkR1Z3S0dSdmRXSnNaU3dnWkhabFl6TXBPMlIyWldNMElDQnpkR1Z3S0dSdmRXSnNaU3dnWkhabFl6UXBPMlJ2ZFdKc1pTQnpiVzl2ZEdoemRHVndLR1J2ZFdKc1pTd2daRzkxWW14bExDQmtiM1ZpYkdVcE8yUjJaV015SUNCemJXOXZkR2h6ZEdWd0tHUjJaV015SUN3Z1pIWmxZeklnTENCa2RtVmpNaWs3WkhabFl6TWdJSE50YjI5MGFITjBaWEFvWkhabFl6TWdMQ0JrZG1Wak15QXNJR1IyWldNektUdGtkbVZqTkNBZ2MyMXZiM1JvYzNSbGNDaGtkbVZqTkNBc0lHUjJaV00wSUN3Z1pIWmxZelFwTzJSMlpXTXlJQ0J6Ylc5dmRHaHpkR1Z3S0dSdmRXSnNaU3dnWkc5MVlteGxMQ0JrZG1Wak1pazdaSFpsWXpNZ0lITnRiMjkwYUhOMFpYQW9aRzkxWW14bExDQmtiM1ZpYkdVc0lHUjJaV016S1R0a2RtVmpOQ0FnYzIxdmIzUm9jM1JsY0Noa2IzVmliR1VzSUdSdmRXSnNaU3dnWkhabFl6UXBPMkp2YjJ3Z0lHbHpibUZ1S0dSdmRXSnNaU2s3WW5abFl6SWdhWE51WVc0b1pIWmxZeklwTzJKMlpXTXpJR2x6Ym1GdUtHUjJaV016S1R0aWRtVmpOQ0JwYzI1aGJpaGtkbVZqTkNrN1ltOXZiQ0FnYVhOcGJtWW9aRzkxWW14bEtUdGlkbVZqTWlCcGMybHVaaWhrZG1Wak1pazdZblpsWXpNZ2FYTnBibVlvWkhabFl6TXBPMkoyWldNMElHbHphVzVtS0dSMlpXTTBLVHRrYjNWaWJHVWdiR1Z1WjNSb0tHUnZkV0pzWlNrN1pHOTFZbXhsSUd4bGJtZDBhQ2hrZG1Wak1pazdaRzkxWW14bElHeGxibWQwYUNoa2RtVmpNeWs3Wkc5MVlteGxJR3hsYm1kMGFDaGtkbVZqTkNrN1pHOTFZbXhsSUdScGMzUmhibU5sS0dSdmRXSnNaU3dnWkc5MVlteGxLVHRrYjNWaWJHVWdaR2x6ZEdGdVkyVW9aSFpsWXpJZ0xDQmtkbVZqTWlrN1pHOTFZbXhsSUdScGMzUmhibU5sS0dSMlpXTXpJQ3dnWkhabFl6TXBPMlJ2ZFdKc1pTQmthWE4wWVc1alpTaGtkbVZqTkNBc0lHUjJaV00wS1R0a2IzVmliR1VnWkc5MEtHUnZkV0pzWlN3Z1pHOTFZbXhsS1R0a2IzVmliR1VnWkc5MEtHUjJaV015SUN3Z1pIWmxZeklwTzJSdmRXSnNaU0JrYjNRb1pIWmxZek1nTENCa2RtVmpNeWs3Wkc5MVlteGxJR1J2ZENoa2RtVmpOQ0FzSUdSMlpXTTBLVHRrZG1Wak15QmpjbTl6Y3loa2RtVmpNeXdnWkhabFl6TXBPMlJ2ZFdKc1pTQnViM0p0WVd4cGVtVW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JtOXliV0ZzYVhwbEtHUjJaV015S1R0a2RtVmpNeUFnYm05eWJXRnNhWHBsS0dSMlpXTXpLVHRrZG1Wak5DQWdibTl5YldGc2FYcGxLR1IyWldNMEtUdGtiM1ZpYkdVZ1ptRmpaV1p2Y25kaGNtUW9aRzkxWW14bExDQmtiM1ZpYkdVc0lHUnZkV0pzWlNrN1pIWmxZeklnSUdaaFkyVm1iM0ozWVhKa0tHUjJaV015TENBZ1pIWmxZeklzSUNCa2RtVmpNaWs3WkhabFl6TWdJR1poWTJWbWIzSjNZWEprS0dSMlpXTXpMQ0FnWkhabFl6TXNJQ0JrZG1Wak15azdaSFpsWXpRZ0lHWmhZMlZtYjNKM1lYSmtLR1IyWldNMExDQWdaSFpsWXpRc0lDQmtkbVZqTkNrN1pHOTFZbXhsSUhKbFpteGxZM1FvWkc5MVlteGxMQ0JrYjNWaWJHVXBPMlIyWldNeUlDQnlaV1pzWldOMEtHUjJaV015SUN3Z1pIWmxZeklnS1R0a2RtVmpNeUFnY21WbWJHVmpkQ2hrZG1Wak15QXNJR1IyWldNeklDazdaSFpsWXpRZ0lISmxabXhsWTNRb1pIWmxZelFnTENCa2RtVmpOQ0FwTzJSdmRXSnNaU0J5WldaeVlXTjBLR1J2ZFdKc1pTd2daRzkxWW14bExDQmtiM1ZpYkdVcE8yUjJaV015SUNCeVpXWnlZV04wS0dSMlpXTXlJQ3dnWkhabFl6SWdMQ0JrYjNWaWJHVXBPMlIyWldNeklDQnlaV1p5WVdOMEtHUjJaV016SUN3Z1pIWmxZek1nTENCa2IzVmliR1VwTzJSMlpXTTBJQ0J5WldaeVlXTjBLR1IyWldNMElDd2daSFpsWXpRZ0xDQmtiM1ZpYkdVcE8yUnRZWFF5SUcxaGRISnBlRU52YlhCTmRXeDBLR1J0WVhReUxDQmtiV0YwTWlrN1pHMWhkRE1nYldGMGNtbDRRMjl0Y0UxMWJIUW9aRzFoZERNc0lHUnRZWFF6S1R0a2JXRjBOQ0J0WVhSeWFYaERiMjF3VFhWc2RDaGtiV0YwTkN3Z1pHMWhkRFFwTzJSdFlYUXllRE1nYldGMGNtbDRRMjl0Y0UxMWJIUW9aRzFoZERKNE15d2daRzFoZERKNE15azdaRzFoZERKNE5DQnRZWFJ5YVhoRGIyMXdUWFZzZENoa2JXRjBNbmcwTENCa2JXRjBNbmcwS1R0a2JXRjBNM2d5SUcxaGRISnBlRU52YlhCTmRXeDBLR1J0WVhRemVESXNJR1J0WVhRemVESXBPMlJ0WVhRemVEUWdiV0YwY21sNFEyOXRjRTExYkhRb1pHMWhkRE40TkN3Z1pHMWhkRE40TkNrN1pHMWhkRFI0TWlCdFlYUnlhWGhEYjIxd1RYVnNkQ2hrYldGME5IZ3lMQ0JrYldGME5IZ3lLVHRrYldGME5IZ3pJRzFoZEhKcGVFTnZiWEJOZFd4MEtHUnRZWFEwZURNc0lHUnRZWFEwZURNcE8yUnRZWFF5SUNBZ2IzVjBaWEpRY205a2RXTjBLR1IyWldNeUxDQmtkbVZqTWlrN1pHMWhkRE1nSUNCdmRYUmxjbEJ5YjJSMVkzUW9aSFpsWXpNc0lHUjJaV016S1R0a2JXRjBOQ0FnSUc5MWRHVnlVSEp2WkhWamRDaGtkbVZqTkN3Z1pIWmxZelFwTzJSdFlYUXllRE1nYjNWMFpYSlFjbTlrZFdOMEtHUjJaV016TENCa2RtVmpNaWs3WkcxaGRETjRNaUJ2ZFhSbGNsQnliMlIxWTNRb1pIWmxZeklzSUdSMlpXTXpLVHRrYldGME1uZzBJRzkxZEdWeVVISnZaSFZqZENoa2RtVmpOQ3dnWkhabFl6SXBPMlJ0WVhRMGVESWdiM1YwWlhKUWNtOWtkV04wS0dSMlpXTXlMQ0JrZG1Wak5DazdaRzFoZERONE5DQnZkWFJsY2xCeWIyUjFZM1FvWkhabFl6UXNJR1IyWldNektUdGtiV0YwTkhneklHOTFkR1Z5VUhKdlpIVmpkQ2hrZG1Wak15d2daSFpsWXpRcE8yUnRZWFF5SUNBZ2RISmhibk53YjNObEtHUnRZWFF5S1R0a2JXRjBNeUFnSUhSeVlXNXpjRzl6WlNoa2JXRjBNeWs3WkcxaGREUWdJQ0IwY21GdWMzQnZjMlVvWkcxaGREUXBPMlJ0WVhReWVETWdkSEpoYm5Od2IzTmxLR1J0WVhRemVESXBPMlJ0WVhRemVESWdkSEpoYm5Od2IzTmxLR1J0WVhReWVETXBPMlJ0WVhReWVEUWdkSEpoYm5Od2IzTmxLR1J0WVhRMGVESXBPMlJ0WVhRMGVESWdkSEpoYm5Od2IzTmxLR1J0WVhReWVEUXBPMlJ0WVhRemVEUWdkSEpoYm5Od2IzTmxLR1J0WVhRMGVETXBPMlJ0WVhRMGVETWdkSEpoYm5Od2IzTmxLR1J0WVhRemVEUXBPMlJ2ZFdKc1pTQmtaWFJsY20xcGJtRnVkQ2hrYldGME1pazdaRzkxWW14bElHUmxkR1Z5YldsdVlXNTBLR1J0WVhRektUdGtiM1ZpYkdVZ1pHVjBaWEp0YVc1aGJuUW9aRzFoZERRcE8yUnRZWFF5SUdsdWRtVnljMlVvWkcxaGRESXBPMlJ0WVhReklHbHVkbVZ5YzJVb1pHMWhkRE1wTzJSdFlYUTBJR2x1ZG1WeWMyVW9aRzFoZERRcE8ySjJaV015SUd4bGMzTlVhR0Z1S0dSMlpXTXlMQ0JrZG1Wak1pazdZblpsWXpNZ2JHVnpjMVJvWVc0b1pIWmxZek1zSUdSMlpXTXpLVHRpZG1Wak5DQnNaWE56VkdoaGJpaGtkbVZqTkN3Z1pIWmxZelFwTzJKMlpXTXlJR3hsYzNOVWFHRnVSWEYxWVd3b1pIWmxZeklzSUdSMlpXTXlLVHRpZG1Wak15QnNaWE56VkdoaGJrVnhkV0ZzS0dSMlpXTXpMQ0JrZG1Wak15azdZblpsWXpRZ2JHVnpjMVJvWVc1RmNYVmhiQ2hrZG1Wak5Dd2daSFpsWXpRcE8ySjJaV015SUdkeVpXRjBaWEpVYUdGdUtHUjJaV015TENCa2RtVmpNaWs3WW5abFl6TWdaM0psWVhSbGNsUm9ZVzRvWkhabFl6TXNJR1IyWldNektUdGlkbVZqTkNCbmNtVmhkR1Z5VkdoaGJpaGtkbVZqTkN3Z1pIWmxZelFwTzJKMlpXTXlJR2R5WldGMFpYSlVhR0Z1UlhGMVlXd29aSFpsWXpJc0lHUjJaV015S1R0aWRtVmpNeUJuY21WaGRHVnlWR2hoYmtWeGRXRnNLR1IyWldNekxDQmtkbVZqTXlrN1luWmxZelFnWjNKbFlYUmxjbFJvWVc1RmNYVmhiQ2hrZG1Wak5Dd2daSFpsWXpRcE8ySjJaV015SUdWeGRXRnNLR1IyWldNeUxDQmtkbVZqTWlrN1luWmxZek1nWlhGMVlXd29aSFpsWXpNc0lHUjJaV016S1R0aWRtVmpOQ0JsY1hWaGJDaGtkbVZqTkN3Z1pIWmxZelFwTzJKMlpXTXlJRzV2ZEVWeGRXRnNLR1IyWldNeUxDQmtkbVZqTWlrN1luWmxZek1nYm05MFJYRjFZV3dvWkhabFl6TXNJR1IyWldNektUdGlkbVZqTkNCdWIzUkZjWFZoYkNoa2RtVmpOQ3dnWkhabFl6UXBPd29BYVc1ME5qUmZkQ0JoWW5Nb2FXNTBOalJmZENrN2FUWTBkbVZqTWlCaFluTW9hVFkwZG1Wak1pazdhVFkwZG1Wak15QmhZbk1vYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0JoWW5Nb2FUWTBkbVZqTkNrN2FXNTBOalJmZENCemFXZHVLR2x1ZERZMFgzUXBPMmsyTkhabFl6SWdjMmxuYmlocE5qUjJaV015S1R0cE5qUjJaV016SUhOcFoyNG9hVFkwZG1Wak15azdhVFkwZG1Wak5DQnphV2R1S0drMk5IWmxZelFwTzJsdWREWTBYM1FnSUcxcGJpaHBiblEyTkY5MExDQWdhVzUwTmpSZmRDazdhVFkwZG1Wak1pQWdiV2x1S0drMk5IWmxZeklzSUNCcGJuUTJORjkwS1R0cE5qUjJaV016SUNCdGFXNG9hVFkwZG1Wak15d2dJR2x1ZERZMFgzUXBPMmsyTkhabFl6UWdJRzFwYmlocE5qUjJaV00wTENBZ2FXNTBOalJmZENrN2FUWTBkbVZqTWlBZ2JXbHVLR2syTkhabFl6SXNJQ0JwTmpSMlpXTXlLVHRwTmpSMlpXTXpJQ0J0YVc0b2FUWTBkbVZqTXl3Z0lHazJOSFpsWXpNcE8yazJOSFpsWXpRZ0lHMXBiaWhwTmpSMlpXTTBMQ0FnYVRZMGRtVmpOQ2s3ZFdsdWREWTBYM1FnYldsdUtIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDazdkVFkwZG1Wak1pQWdiV2x1S0hVMk5IWmxZeklzSUNCMWFXNTBOalJmZENrN2RUWTBkbVZqTXlBZ2JXbHVLSFUyTkhabFl6TXNJQ0IxYVc1ME5qUmZkQ2s3ZFRZMGRtVmpOQ0FnYldsdUtIVTJOSFpsWXpRc0lDQjFhVzUwTmpSZmRDazdkVFkwZG1Wak1pQWdiV2x1S0hVMk5IWmxZeklzSUNCMU5qUjJaV015S1R0MU5qUjJaV016SUNCdGFXNG9kVFkwZG1Wak15d2dJSFUyTkhabFl6TXBPM1UyTkhabFl6UWdJRzFwYmloMU5qUjJaV00wTENBZ2RUWTBkbVZqTkNrN2FXNTBOalJmZENBZ2JXRjRLR2x1ZERZMFgzUXNJQ0JwYm5RMk5GOTBLVHRwTmpSMlpXTXlJQ0J0WVhnb2FUWTBkbVZqTWl3Z0lHbHVkRFkwWDNRcE8yazJOSFpsWXpNZ0lHMWhlQ2hwTmpSMlpXTXpMQ0FnYVc1ME5qUmZkQ2s3YVRZMGRtVmpOQ0FnYldGNEtHazJOSFpsWXpRc0lDQnBiblEyTkY5MEtUdHBOalIyWldNeUlDQnRZWGdvYVRZMGRtVmpNaXdnSUdrMk5IWmxZeklwTzJrMk5IWmxZek1nSUcxaGVDaHBOalIyWldNekxDQWdhVFkwZG1Wak15azdhVFkwZG1Wak5DQWdiV0Y0S0drMk5IWmxZelFzSUNCcE5qUjJaV00wS1R0MWFXNTBOalJmZENCdFlYZ29kV2x1ZERZMFgzUXNJSFZwYm5RMk5GOTBLVHQxTmpSMlpXTXlJQ0J0WVhnb2RUWTBkbVZqTWl3Z0lIVnBiblEyTkY5MEtUdDFOalIyWldNeklDQnRZWGdvZFRZMGRtVmpNeXdnSUhWcGJuUTJORjkwS1R0MU5qUjJaV00wSUNCdFlYZ29kVFkwZG1Wak5Dd2dJSFZwYm5RMk5GOTBLVHQxTmpSMlpXTXlJQ0J0WVhnb2RUWTBkbVZqTWl3Z0lIVTJOSFpsWXpJcE8zVTJOSFpsWXpNZ0lHMWhlQ2gxTmpSMlpXTXpMQ0FnZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0FnYldGNEtIVTJOSFpsWXpRc0lDQjFOalIyWldNMEtUdHBiblEyTkY5MElDQmpiR0Z0Y0NocGJuUTJORjkwTENBZ2FXNTBOalJmZEN3Z0lHbHVkRFkwWDNRcE8yazJOSFpsWXpJZ0lHTnNZVzF3S0drMk5IWmxZeklzSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZENrN2FUWTBkbVZqTXlBZ1kyeGhiWEFvYVRZMGRtVmpNeXdnSUdsdWREWTBYM1FzSUNCcGJuUTJORjkwS1R0cE5qUjJaV00wSUNCamJHRnRjQ2hwTmpSMlpXTTBMQ0FnYVc1ME5qUmZkQ3dnSUdsdWREWTBYM1FwTzJrMk5IWmxZeklnSUdOc1lXMXdLR2syTkhabFl6SXNJQ0JwTmpSMlpXTXlMQ0FnYVRZMGRtVmpNaWs3YVRZMGRtVmpNeUFnWTJ4aGJYQW9hVFkwZG1Wak15d2dJR2syTkhabFl6TXNJQ0JwTmpSMlpXTXpLVHRwTmpSMlpXTTBJQ0JqYkdGdGNDaHBOalIyWldNMExDQWdhVFkwZG1Wak5Dd2dJR2syTkhabFl6UXBPM1ZwYm5RMk5GOTBJR05zWVcxd0tIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJR05zWVcxd0tIVTJOSFpsWXpJc0lDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXBPM1UyTkhabFl6TWdJR05zWVcxd0tIVTJOSFpsWXpNc0lDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXBPM1UyTkhabFl6UWdJR05zWVcxd0tIVTJOSFpsWXpRc0lDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJR05zWVcxd0tIVTJOSFpsWXpJc0lDQjFOalIyWldNeUxDQWdkVFkwZG1Wak1pazdkVFkwZG1Wak15QWdZMnhoYlhBb2RUWTBkbVZqTXl3Z0lIVTJOSFpsWXpNc0lDQjFOalIyWldNektUdDFOalIyWldNMElDQmpiR0Z0Y0NoMU5qUjJaV00wTENBZ2RUWTBkbVZqTkN3Z0lIVTJOSFpsWXpRcE8ybHVkRFkwWDNRZ0lHMXBlQ2hwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ3dnSUdKdmIyd3BPMmsyTkhabFl6SWdJRzFwZUNocE5qUjJaV015TENBZ2FUWTBkbVZqTWl3Z0lHSjJaV015S1R0cE5qUjJaV016SUNCdGFYZ29hVFkwZG1Wak15d2dJR2syTkhabFl6TXNJQ0JpZG1Wak15azdhVFkwZG1Wak5DQWdiV2w0S0drMk5IWmxZelFzSUNCcE5qUjJaV00wTENBZ1luWmxZelFwTzNWcGJuUTJORjkwSUcxcGVDaDFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXNJR0p2YjJ3cE8zVTJOSFpsWXpJZ0lHMXBlQ2gxTmpSMlpXTXlMQ0FnZFRZMGRtVmpNaXdnSUdKMlpXTXlLVHQxTmpSMlpXTXpJQ0J0YVhnb2RUWTBkbVZqTXl3Z0lIVTJOSFpsWXpNc0lDQmlkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXbDRLSFUyTkhabFl6UXNJQ0IxTmpSMlpXTTBMQ0FnWW5abFl6UXBPMmx1ZERZMFgzUWdaRzkxWW14bFFtbDBjMVJ2U1c1ME5qUW9aRzkxWW14bEtUdHBOalIyWldNeUlHUnZkV0pzWlVKcGRITlViMGx1ZERZMEtHUjJaV015S1R0cE5qUjJaV016SUdSdmRXSnNaVUpwZEhOVWIwbHVkRFkwS0dSMlpXTXpLVHRwTmpSMlpXTTBJR1J2ZFdKc1pVSnBkSE5VYjBsdWREWTBLR1IyWldNMEtUdDFhVzUwTmpSZmRDQmtiM1ZpYkdWQ2FYUnpWRzlWYVc1ME5qUW9aRzkxWW14bEtUdDFOalIyWldNeUlDQmtiM1ZpYkdWQ2FYUnpWRzlWYVc1ME5qUW9aSFpsWXpJcE8zVTJOSFpsWXpNZ0lHUnZkV0pzWlVKcGRITlViMVZwYm5RMk5DaGtkbVZqTXlrN2RUWTBkbVZqTkNBZ1pHOTFZbXhsUW1sMGMxUnZWV2x1ZERZMEtHUjJaV00wS1R0a2IzVmliR1VnYVc1ME5qUkNhWFJ6Vkc5RWIzVmliR1VvYVc1ME5qUmZkQ2s3WkhabFl6SWdJR2x1ZERZMFFtbDBjMVJ2Ukc5MVlteGxLR2syTkhabFl6SXBPMlIyWldNeklDQnBiblEyTkVKcGRITlViMFJ2ZFdKc1pTaHBOalIyWldNektUdGtkbVZqTkNBZ2FXNTBOalJDYVhSelZHOUViM1ZpYkdVb2FUWTBkbVZqTkNrN1pHOTFZbXhsSUhWcGJuUTJORUpwZEhOVWIwUnZkV0pzWlNoMWFXNTBOalJmZENrN1pIWmxZeklnSUhWcGJuUTJORUpwZEhOVWIwUnZkV0pzWlNoMU5qUjJaV015S1R0a2RtVmpNeUFnZFdsdWREWTBRbWwwYzFSdlJHOTFZbXhsS0hVMk5IWmxZek1wTzJSMlpXTTBJQ0IxYVc1ME5qUkNhWFJ6Vkc5RWIzVmliR1VvZFRZMGRtVmpOQ2s3YVc1ME5qUmZkQ0FnY0dGamEwbHVkREo0TXpJb2FYWmxZeklwTzNWcGJuUTJORjkwSUhCaFkydFZhVzUwTW5nek1paDFkbVZqTWlrN2FYWmxZeklnSUNBZ2RXNXdZV05yU1c1ME1uZ3pNaWhwYm5RMk5GOTBLVHQxZG1Wak1pQWdJQ0IxYm5CaFkydFZhVzUwTW5nek1paDFhVzUwTmpSZmRDazdZblpsWXpJZ2JHVnpjMVJvWVc0b2FUWTBkbVZqTWl3Z2FUWTBkbVZqTWlrN1luWmxZek1nYkdWemMxUm9ZVzRvYVRZMGRtVmpNeXdnYVRZMGRtVmpNeWs3WW5abFl6UWdiR1Z6YzFSb1lXNG9hVFkwZG1Wak5Dd2dhVFkwZG1Wak5DazdZblpsWXpJZ2JHVnpjMVJvWVc0b2RUWTBkbVZqTWl3Z2RUWTBkbVZqTWlrN1luWmxZek1nYkdWemMxUm9ZVzRvZFRZMGRtVmpNeXdnZFRZMGRtVmpNeWs3WW5abFl6UWdiR1Z6YzFSb1lXNG9kVFkwZG1Wak5Dd2dkVFkwZG1Wak5DazdZblpsWXpJZ2JHVnpjMVJvWVc1RmNYVmhiQ2hwTmpSMlpXTXlMQ0JwTmpSMlpXTXlLVHRpZG1Wak15QnNaWE56VkdoaGJrVnhkV0ZzS0drMk5IWmxZek1zSUdrMk5IWmxZek1wTzJKMlpXTTBJR3hsYzNOVWFHRnVSWEYxWVd3b2FUWTBkbVZqTkN3Z2FUWTBkbVZqTkNrN1luWmxZeklnYkdWemMxUm9ZVzVGY1hWaGJDaDFOalIyWldNeUxDQjFOalIyWldNeUtUdGlkbVZqTXlCc1pYTnpWR2hoYmtWeGRXRnNLSFUyTkhabFl6TXNJSFUyTkhabFl6TXBPMkoyWldNMElHeGxjM05VYUdGdVJYRjFZV3dvZFRZMGRtVmpOQ3dnZFRZMGRtVmpOQ2s3WW5abFl6SWdaM0psWVhSbGNsUm9ZVzRvYVRZMGRtVmpNaXdnYVRZMGRtVmpNaWs3WW5abFl6TWdaM0psWVhSbGNsUm9ZVzRvYVRZMGRtVmpNeXdnYVRZMGRtVmpNeWs3WW5abFl6UWdaM0psWVhSbGNsUm9ZVzRvYVRZMGRtVmpOQ3dnYVRZMGRtVmpOQ2s3WW5abFl6SWdaM0psWVhSbGNsUm9ZVzRvZFRZMGRtVmpNaXdnZFRZMGRtVmpNaWs3WW5abFl6TWdaM0psWVhSbGNsUm9ZVzRvZFRZMGRtVmpNeXdnZFRZMGRtVmpNeWs3WW5abFl6UWdaM0psWVhSbGNsUm9ZVzRvZFRZMGRtVmpOQ3dnZFRZMGRtVmpOQ2s3WW5abFl6SWdaM0psWVhSbGNsUm9ZVzVGY1hWaGJDaHBOalIyWldNeUxDQnBOalIyWldNeUtUdGlkbVZqTXlCbmNtVmhkR1Z5VkdoaGJrVnhkV0ZzS0drMk5IWmxZek1zSUdrMk5IWmxZek1wTzJKMlpXTTBJR2R5WldGMFpYSlVhR0Z1UlhGMVlXd29hVFkwZG1Wak5Dd2dhVFkwZG1Wak5DazdZblpsWXpJZ1ozSmxZWFJsY2xSb1lXNUZjWFZoYkNoMU5qUjJaV015TENCMU5qUjJaV015S1R0aWRtVmpNeUJuY21WaGRHVnlWR2hoYmtWeGRXRnNLSFUyTkhabFl6TXNJSFUyTkhabFl6TXBPMkoyWldNMElHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b2RUWTBkbVZqTkN3Z2RUWTBkbVZqTkNrN1luWmxZeklnWlhGMVlXd29hVFkwZG1Wak1pd2dhVFkwZG1Wak1pazdZblpsWXpNZ1pYRjFZV3dvYVRZMGRtVmpNeXdnYVRZMGRtVmpNeWs3WW5abFl6UWdaWEYxWVd3b2FUWTBkbVZqTkN3Z2FUWTBkbVZqTkNrN1luWmxZeklnWlhGMVlXd29kVFkwZG1Wak1pd2dkVFkwZG1Wak1pazdZblpsWXpNZ1pYRjFZV3dvZFRZMGRtVmpNeXdnZFRZMGRtVmpNeWs3WW5abFl6UWdaWEYxWVd3b2RUWTBkbVZqTkN3Z2RUWTBkbVZqTkNrN1luWmxZeklnYm05MFJYRjFZV3dvYVRZMGRtVmpNaXdnYVRZMGRtVmpNaWs3WW5abFl6TWdibTkwUlhGMVlXd29hVFkwZG1Wak15d2dhVFkwZG1Wak15azdZblpsWXpRZ2JtOTBSWEYxWVd3b2FUWTBkbVZqTkN3Z2FUWTBkbVZqTkNrN1luWmxZeklnYm05MFJYRjFZV3dvZFRZMGRtVmpNaXdnZFRZMGRtVmpNaWs3WW5abFl6TWdibTkwUlhGMVlXd29kVFkwZG1Wak15d2dkVFkwZG1Wak15azdZblpsWXpRZ2JtOTBSWEYxWVd3b2RUWTBkbVZqTkN3Z2RUWTBkbVZqTkNrN2FXNTBOalJmZENCbWFXNWtURk5DS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnWm1sdVpFeFRRaWhwTmpSMlpXTXlLVHRwTmpSMlpXTXpJR1pwYm1STVUwSW9hVFkwZG1Wak15azdhVFkwZG1Wak5DQm1hVzVrVEZOQ0tHazJOSFpsWXpRcE8ybHVkRFkwWDNRZ1ptbHVaRXhUUWloMWFXNTBOalJmZENrN2FUWTBkbVZqTWlCbWFXNWtURk5DS0hVMk5IWmxZeklwTzJrMk5IWmxZek1nWm1sdVpFeFRRaWgxTmpSMlpXTXpLVHRwTmpSMlpXTTBJR1pwYm1STVUwSW9kVFkwZG1Wak5DazdhVzUwTmpSZmRDQm1hVzVrVFZOQ0tHbHVkRFkwWDNRcE8yazJOSFpsWXpJZ1ptbHVaRTFUUWlocE5qUjJaV015S1R0cE5qUjJaV016SUdacGJtUk5VMElvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0JtYVc1a1RWTkNLR2syTkhabFl6UXBPMmx1ZERZMFgzUWdabWx1WkUxVFFpaDFhVzUwTmpSZmRDazdhVFkwZG1Wak1pQm1hVzVrVFZOQ0tIVTJOSFpsWXpJcE8yazJOSFpsWXpNZ1ptbHVaRTFUUWloMU5qUjJaV016S1R0cE5qUjJaV00wSUdacGJtUk5VMElvZFRZMGRtVmpOQ2s3Q2dCbWJHOWhkQ0J0YVc0ektHWnNiMkYwTENCbWJHOWhkQ3dnWm14dllYUXBPM1psWXpJZ0lHMXBiak1vZG1Wak1pd2dJSFpsWXpJc0lDQjJaV015S1R0MlpXTXpJQ0J0YVc0ektIWmxZek1zSUNCMlpXTXpMQ0FnZG1Wak15azdkbVZqTkNBZ2JXbHVNeWgyWldNMExDQWdkbVZqTkN3Z0lIWmxZelFwTzJsdWRDQWdJRzFwYmpNb2FXNTBMQ0FnSUdsdWRDd2dJQ0JwYm5RcE8ybDJaV015SUcxcGJqTW9hWFpsWXpJc0lHbDJaV015TENCcGRtVmpNaWs3YVhabFl6TWdiV2x1TXlocGRtVmpNeXdnYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCdGFXNHpLR2wyWldNMExDQnBkbVZqTkN3Z2FYWmxZelFwTzNWcGJuUWdJRzFwYmpNb2RXbHVkQ3dnSUhWcGJuUXNJQ0IxYVc1MEtUdDFkbVZqTWlCdGFXNHpLSFYyWldNeUxDQjFkbVZqTWl3Z2RYWmxZeklwTzNWMlpXTXpJRzFwYmpNb2RYWmxZek1zSUhWMlpXTXpMQ0IxZG1Wak15azdkWFpsWXpRZ2JXbHVNeWgxZG1Wak5Dd2dkWFpsWXpRc0lIVjJaV00wS1R0bWJHOWhkQ0J0WVhnektHWnNiMkYwTENCbWJHOWhkQ3dnWm14dllYUXBPM1psWXpJZ0lHMWhlRE1vZG1Wak1pd2dJSFpsWXpJc0lDQjJaV015S1R0MlpXTXpJQ0J0WVhnektIWmxZek1zSUNCMlpXTXpMQ0FnZG1Wak15azdkbVZqTkNBZ2JXRjRNeWgyWldNMExDQWdkbVZqTkN3Z0lIWmxZelFwTzJsdWRDQWdJRzFoZURNb2FXNTBMQ0FnSUdsdWRDd2dJQ0JwYm5RcE8ybDJaV015SUcxaGVETW9hWFpsWXpJc0lHbDJaV015TENCcGRtVmpNaWs3YVhabFl6TWdiV0Y0TXlocGRtVmpNeXdnYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCdFlYZ3pLR2wyWldNMExDQnBkbVZqTkN3Z2FYWmxZelFwTzNWcGJuUWdJRzFoZURNb2RXbHVkQ3dnSUhWcGJuUXNJQ0IxYVc1MEtUdDFkbVZqTWlCdFlYZ3pLSFYyWldNeUxDQjFkbVZqTWl3Z2RYWmxZeklwTzNWMlpXTXpJRzFoZURNb2RYWmxZek1zSUhWMlpXTXpMQ0IxZG1Wak15azdkWFpsWXpRZ2JXRjRNeWgxZG1Wak5Dd2dkWFpsWXpRc0lIVjJaV00wS1R0bWJHOWhkQ0J0YVdRektHWnNiMkYwTENCbWJHOWhkQ3dnWm14dllYUXBPM1psWXpJZ0lHMXBaRE1vZG1Wak1pd2dJSFpsWXpJc0lDQjJaV015S1R0MlpXTXpJQ0J0YVdRektIWmxZek1zSUNCMlpXTXpMQ0FnZG1Wak15azdkbVZqTkNBZ2JXbGtNeWgyWldNMExDQWdkbVZqTkN3Z0lIWmxZelFwTzJsdWRDQWdJRzFwWkRNb2FXNTBMQ0FnSUdsdWRDd2dJQ0JwYm5RcE8ybDJaV015SUcxcFpETW9hWFpsWXpJc0lHbDJaV015TENCcGRtVmpNaWs3YVhabFl6TWdiV2xrTXlocGRtVmpNeXdnYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCdGFXUXpLR2wyWldNMExDQnBkbVZqTkN3Z2FYWmxZelFwTzNWcGJuUWdJRzFwWkRNb2RXbHVkQ3dnSUhWcGJuUXNJQ0IxYVc1MEtUdDFkbVZqTWlCdGFXUXpLSFYyWldNeUxDQjFkbVZqTWl3Z2RYWmxZeklwTzNWMlpXTXpJRzFwWkRNb2RYWmxZek1zSUhWMlpXTXpMQ0IxZG1Wak15azdkWFpsWXpRZ2JXbGtNeWgxZG1Wak5Dd2dkWFpsWXpRc0lIVjJaV00wS1R0bWJHOWhkREUyWDNRZ2JXbHVNeWhtYkc5aGRERTJYM1FzSUdac2IyRjBNVFpmZEN3Z1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV2x1TXlobU1UWjJaV015TENBZ0lHWXhOblpsWXpJc0lDQWdaakUyZG1Wak1pazdaakUyZG1Wak15QWdJRzFwYmpNb1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J0YVc0ektHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5Dd2dJQ0JtTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnYldGNE15aG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2JXRjRNeWhtTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklzSUNBZ1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMWhlRE1vWmpFMmRtVmpNeXdnSUNCbU1UWjJaV016TENBZ0lHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQnRZWGd6S0dZeE5uWmxZelFzSUNBZ1pqRTJkbVZqTkN3Z0lDQm1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdiV2xrTXlobWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDd2dabXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnYldsa015aG1NVFoyWldNeUxDQWdJR1l4Tm5abFl6SXNJQ0FnWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUcxcFpETW9aakUyZG1Wak15d2dJQ0JtTVRaMlpXTXpMQ0FnSUdZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCdGFXUXpLR1l4Tm5abFl6UXNJQ0FnWmpFMmRtVmpOQ3dnSUNCbU1UWjJaV00wS1R0cGJuUXhObDkwSUNBZ2JXbHVNeWhwYm5ReE5sOTBMQ0FnSUdsdWRERTJYM1FzSUNBZ2FXNTBNVFpmZENrN2FURTJkbVZqTWlBZ0lHMXBiak1vYVRFMmRtVmpNaXdnSUNCcE1UWjJaV015TENBZ0lHa3hOblpsWXpJcE8ya3hOblpsWXpNZ0lDQnRhVzR6S0dreE5uWmxZek1zSUNBZ2FURTJkbVZqTXl3Z0lDQnBNVFoyWldNektUdHBNVFoyWldNMElDQWdiV2x1TXlocE1UWjJaV00wTENBZ0lHa3hOblpsWXpRc0lDQWdhVEUyZG1Wak5DazdhVzUwTVRaZmRDQWdJRzFoZURNb2FXNTBNVFpmZEN3Z0lDQnBiblF4Tmw5MExDQWdJR2x1ZERFMlgzUXBPMmt4Tm5abFl6SWdJQ0J0WVhnektHa3hOblpsWXpJc0lDQWdhVEUyZG1Wak1pd2dJQ0JwTVRaMlpXTXlLVHRwTVRaMlpXTXpJQ0FnYldGNE15aHBNVFoyWldNekxDQWdJR2t4Tm5abFl6TXNJQ0FnYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0FnSUcxaGVETW9hVEUyZG1Wak5Dd2dJQ0JwTVRaMlpXTTBMQ0FnSUdreE5uWmxZelFwTzJsdWRERTJYM1FnSUNCdGFXUXpLR2x1ZERFMlgzUXNJQ0FnYVc1ME1UWmZkQ3dnSUNCcGJuUXhObDkwS1R0cE1UWjJaV015SUNBZ2JXbGtNeWhwTVRaMlpXTXlMQ0FnSUdreE5uWmxZeklzSUNBZ2FURTJkbVZqTWlrN2FURTJkbVZqTXlBZ0lHMXBaRE1vYVRFMmRtVmpNeXdnSUNCcE1UWjJaV016TENBZ0lHa3hOblpsWXpNcE8ya3hOblpsWXpRZ0lDQnRhV1F6S0dreE5uWmxZelFzSUNBZ2FURTJkbVZqTkN3Z0lDQnBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQWdiV2x1TXloMWFXNTBNVFpmZEN3Z0lIVnBiblF4Tmw5MExDQWdkV2x1ZERFMlgzUXBPM1V4Tm5abFl6SWdJQ0J0YVc0ektIVXhOblpsWXpJc0lDQWdkVEUyZG1Wak1pd2dJQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJQ0FnYldsdU15aDFNVFoyWldNekxDQWdJSFV4Tm5abFl6TXNJQ0FnZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnSUcxcGJqTW9kVEUyZG1Wak5Dd2dJQ0IxTVRaMlpXTTBMQ0FnSUhVeE5uWmxZelFwTzNWcGJuUXhObDkwSUNCdFlYZ3pLSFZwYm5ReE5sOTBMQ0FnZFdsdWRERTJYM1FzSUNCMWFXNTBNVFpmZENrN2RURTJkbVZqTWlBZ0lHMWhlRE1vZFRFMmRtVmpNaXdnSUNCMU1UWjJaV015TENBZ0lIVXhOblpsWXpJcE8zVXhOblpsWXpNZ0lDQnRZWGd6S0hVeE5uWmxZek1zSUNBZ2RURTJkbVZqTXl3Z0lDQjFNVFoyWldNektUdDFNVFoyWldNMElDQWdiV0Y0TXloMU1UWjJaV00wTENBZ0lIVXhOblpsWXpRc0lDQWdkVEUyZG1Wak5DazdkV2x1ZERFMlgzUWdJRzFwWkRNb2RXbHVkREUyWDNRc0lDQjFhVzUwTVRaZmRDd2dJSFZwYm5ReE5sOTBLVHQxTVRaMlpXTXlJQ0FnYldsa015aDFNVFoyWldNeUxDQWdJSFV4Tm5abFl6SXNJQ0FnZFRFMmRtVmpNaWs3ZFRFMmRtVmpNeUFnSUcxcFpETW9kVEUyZG1Wak15d2dJQ0IxTVRaMlpXTXpMQ0FnSUhVeE5uWmxZek1wTzNVeE5uWmxZelFnSUNCdGFXUXpLSFV4Tm5abFl6UXNJQ0FnZFRFMmRtVmpOQ3dnSUNCMU1UWjJaV00wS1RzS0FIVnBiblFnWVhSdmJXbGpRV1JrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5Rc0lIVnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPeUJwYm5RZ1lYUnZiV2xqUVdSa0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUXNJQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwTzNWcGJuUWdZWFJ2YldsalRXbHVLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblFzSUhWcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE95QnBiblFnWVhSdmJXbGpUV2x1S0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5Rc0lDQnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPM1ZwYm5RZ1lYUnZiV2xqVFdGNEtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUXNJSFZwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwT3lCcGJuUWdZWFJ2YldsalRXRjRLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblFzSUNCcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE8zVnBiblFnWVhSdmJXbGpRVzVrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5Rc0lIVnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPeUJwYm5RZ1lYUnZiV2xqUVc1a0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUXNJQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwTzNWcGJuUWdZWFJ2YldsalQzSWdLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblFzSUhWcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE95QnBiblFnWVhSdmJXbGpUM0lnS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5Rc0lDQnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPM1ZwYm5RZ1lYUnZiV2xqV0c5eUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUXNJSFZwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwT3lCcGJuUWdZWFJ2YldsaldHOXlLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblFzSUNCcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE8zVnBiblFnWVhSdmJXbGpSWGhqYUdGdVoyVW9ZMjlvWlhKbGJuUWdkbTlzWVhScGJHVWdhVzV2ZFhRZ2RXbHVkQ3dnZFdsdWRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN0lHbHVkQ0JoZEc5dGFXTkZlR05vWVc1blpTaGpiMmhsY21WdWRDQjJiMnhoZEdsc1pTQnBibTkxZENBZ2FXNTBMQ0FnYVc1MExDQnBiblFzSUdsdWRDd2dhVzUwS1R0MWFXNTBJR0YwYjIxcFkwTnZiWEJUZDJGd0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUXNJSFZwYm5Rc0lIVnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXNJR2x1ZEN3Z2FXNTBLVHNnYVc1MElHRjBiMjFwWTBOdmJYQlRkMkZ3S0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5Rc0lDQnBiblFzSUNCcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ3dnYVc1MEtUdDFhVzUwSUdGMGIyMXBZMHh2WVdRb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2FXNGdkV2x1ZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3SUdsdWRDQmhkRzl0YVdOTWIyRmtLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1SUNCcGJuUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE8zWnZhV1FnWVhSdmJXbGpVM1J2Y21Vb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2IzVjBJSFZwYm5Rc0lIVnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUXBPM1p2YVdRZ1lYUnZiV2xqVTNSdmNtVW9ZMjlvWlhKbGJuUWdkbTlzWVhScGJHVWdiM1YwSUNCcGJuUXNJQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwT3dvQWRXbHVkRFkwWDNRZ1lYUnZiV2xqVFdsdUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZENrN0lHbHVkRFkwWDNRZ1lYUnZiV2xqVFdsdUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZENrN2RXbHVkRFkwWDNRZ1lYUnZiV2xqVFdsdUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3SUdsdWREWTBYM1FnWVhSdmJXbGpUV2x1S0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdkV2x1ZERZMFgzUWdZWFJ2YldsalRXRjRLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalRXRjRLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblEyTkY5MExDQWdhVzUwTmpSZmRDazdkV2x1ZERZMFgzUWdZWFJ2YldsalRXRjRLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN0lHbHVkRFkwWDNRZ1lYUnZiV2xqVFdGNEtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3ZFdsdWREWTBYM1FnWVhSdmJXbGpRVzVrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ2s3SUdsdWREWTBYM1FnWVhSdmJXbGpRVzVrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ2s3ZFdsdWREWTBYM1FnWVhSdmJXbGpRVzVrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalFXNWtLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblEyTkY5MExDQWdhVzUwTmpSZmRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN2RXbHVkRFkwWDNRZ1lYUnZiV2xqVDNJZ0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZENrN0lHbHVkRFkwWDNRZ1lYUnZiV2xqVDNJZ0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZENrN2RXbHVkRFkwWDNRZ1lYUnZiV2xqVDNJZ0tHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3SUdsdWREWTBYM1FnWVhSdmJXbGpUM0lnS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdkV2x1ZERZMFgzUWdZWFJ2YldsaldHOXlLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDazdJR2x1ZERZMFgzUWdZWFJ2YldsaldHOXlLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblEyTkY5MExDQWdhVzUwTmpSZmRDazdkV2x1ZERZMFgzUWdZWFJ2YldsaldHOXlLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElIVnBiblEyTkY5MExDQjFhVzUwTmpSZmRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN0lHbHVkRFkwWDNRZ1lYUnZiV2xqV0c5eUtHTnZhR1Z5Wlc1MElIWnZiR0YwYVd4bElHbHViM1YwSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3ZFdsdWREWTBYM1FnWVhSdmJXbGpRV1JrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ2s3SUdsdWREWTBYM1FnWVhSdmJXbGpRV1JrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJQ0JwYm5RMk5GOTBMQ0FnYVc1ME5qUmZkQ2s3ZFdsdWREWTBYM1FnWVhSdmJXbGpRV1JrS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalFXUmtLR052YUdWeVpXNTBJSFp2YkdGMGFXeGxJR2x1YjNWMElDQnBiblEyTkY5MExDQWdhVzUwTmpSZmRDd2dhVzUwTENCcGJuUXNJR2x1ZENrN2RXbHVkRFkwWDNRZ1lYUnZiV2xqUlhoamFHRnVaMlVvWTI5b1pYSmxiblFnZG05c1lYUnBiR1VnYVc1dmRYUWdkV2x1ZERZMFgzUXNJSFZwYm5RMk5GOTBLVHNnYVc1ME5qUmZkQ0JoZEc5dGFXTkZlR05vWVc1blpTaGpiMmhsY21WdWRDQjJiMnhoZEdsc1pTQnBibTkxZENBZ2FXNTBOalJmZEN3Z0lHbHVkRFkwWDNRcE8zVnBiblEyTkY5MElHRjBiMjFwWTBWNFkyaGhibWRsS0dOdmFHVnlaVzUwSUhadmJHRjBhV3hsSUdsdWIzVjBJSFZwYm5RMk5GOTBMQ0IxYVc1ME5qUmZkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalJYaGphR0Z1WjJVb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2FXNXZkWFFnSUdsdWREWTBYM1FzSUNCcGJuUTJORjkwTENCcGJuUXNJR2x1ZEN3Z2FXNTBLVHQxYVc1ME5qUmZkQ0JoZEc5dGFXTkRiMjF3VTNkaGNDaGpiMmhsY21WdWRDQjJiMnhoZEdsc1pTQnBibTkxZENCMWFXNTBOalJmZEN3Z2RXbHVkRFkwWDNRc0lIVnBiblEyTkY5MEtUc2dhVzUwTmpSZmRDQmhkRzl0YVdORGIyMXdVM2RoY0NoamIyaGxjbVZ1ZENCMmIyeGhkR2xzWlNCcGJtOTFkQ0FnYVc1ME5qUmZkQ3dnSUdsdWREWTBYM1FzSUNCcGJuUTJORjkwS1R0MWFXNTBOalJmZENCaGRHOXRhV05EYjIxd1UzZGhjQ2hqYjJobGNtVnVkQ0IyYjJ4aGRHbHNaU0JwYm05MWRDQjFhVzUwTmpSZmRDd2dkV2x1ZERZMFgzUXNJSFZwYm5RMk5GOTBMQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFzSUdsdWRDazdJR2x1ZERZMFgzUWdZWFJ2YldsalEyOXRjRk4zWVhBb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2FXNXZkWFFnSUdsdWREWTBYM1FzSUNCcGJuUTJORjkwTENBZ2FXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ3dnYVc1MExDQnBiblFwTzNWcGJuUTJORjkwSUdGMGIyMXBZMHh2WVdRb1kyOW9aWEpsYm5RZ2RtOXNZWFJwYkdVZ2FXNGdkV2x1ZERZMFgzUXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RcE95QnBiblEyTkY5MElHRjBiMjFwWTB4dllXUW9ZMjlvWlhKbGJuUWdkbTlzWVhScGJHVWdhVzRnSUdsdWREWTBYM1FzSUdsdWRDd2dhVzUwTENCcGJuUXBPM1p2YVdRZ1lYUnZiV2xqVTNSdmNtVW9ZMjlvWlhKbGJuUWdkbTlzWVhScGJHVWdiM1YwSUhWcGJuUTJORjkwTENCMWFXNTBOalJmZEN3Z2FXNTBMQ0JwYm5Rc0lHbHVkQ2s3ZG05cFpDQmhkRzl0YVdOVGRHOXlaU2hqYjJobGNtVnVkQ0IyYjJ4aGRHbHNaU0J2ZFhRZ0lHbHVkRFkwWDNRc0lDQnBiblEyTkY5MExDQnBiblFzSUdsdWRDd2dhVzUwS1RzS0FHbHVkQ0FnSUdac2IyRjBRbWwwYzFSdlNXNTBLR2hwWjJod0lHWnNiMkYwSUhaaGJIVmxLVHRwZG1Wak1pQm1iRzloZEVKcGRITlViMGx1ZENob2FXZG9jQ0IyWldNeUlDQjJZV3gxWlNrN2FYWmxZek1nWm14dllYUkNhWFJ6Vkc5SmJuUW9hR2xuYUhBZ2RtVmpNeUFnZG1Gc2RXVXBPMmwyWldNMElHWnNiMkYwUW1sMGMxUnZTVzUwS0docFoyaHdJSFpsWXpRZ0lIWmhiSFZsS1R0MWFXNTBJQ0JtYkc5aGRFSnBkSE5VYjFWcGJuUW9hR2xuYUhBZ1pteHZZWFFnZG1Gc2RXVXBPM1YyWldNeUlHWnNiMkYwUW1sMGMxUnZWV2x1ZENob2FXZG9jQ0IyWldNeUlDQjJZV3gxWlNrN2RYWmxZek1nWm14dllYUkNhWFJ6Vkc5VmFXNTBLR2hwWjJod0lIWmxZek1nSUhaaGJIVmxLVHQxZG1Wak5DQm1iRzloZEVKcGRITlViMVZwYm5Rb2FHbG5hSEFnZG1Wak5DQWdkbUZzZFdVcE8yWnNiMkYwSUdsdWRFSnBkSE5VYjBac2IyRjBLR2hwWjJod0lHbHVkQ0FnSUhaaGJIVmxLVHQyWldNeUlDQnBiblJDYVhSelZHOUdiRzloZENob2FXZG9jQ0JwZG1Wak1pQjJZV3gxWlNrN2RtVmpNeUFnYVc1MFFtbDBjMVJ2Um14dllYUW9hR2xuYUhBZ2FYWmxZek1nZG1Gc2RXVXBPM1psWXpRZ0lHbHVkRUpwZEhOVWIwWnNiMkYwS0docFoyaHdJR2wyWldNMElIWmhiSFZsS1R0bWJHOWhkQ0IxYVc1MFFtbDBjMVJ2Um14dllYUW9hR2xuYUhBZ2RXbHVkQ0FnZG1Gc2RXVXBPM1psWXpJZ0lIVnBiblJDYVhSelZHOUdiRzloZENob2FXZG9jQ0IxZG1Wak1pQjJZV3gxWlNrN2RtVmpNeUFnZFdsdWRFSnBkSE5VYjBac2IyRjBLR2hwWjJod0lIVjJaV016SUhaaGJIVmxLVHQyWldNMElDQjFhVzUwUW1sMGMxUnZSbXh2WVhRb2FHbG5hSEFnZFhabFl6UWdkbUZzZFdVcE93b0FabXh2WVhRZ0lHWnRZU2htYkc5aGRDd2dJR1pzYjJGMExDQWdabXh2WVhRZ0tUdDJaV015SUNBZ1ptMWhLSFpsWXpJc0lDQWdkbVZqTWl3Z0lDQjJaV015SUNBcE8zWmxZek1nSUNCbWJXRW9kbVZqTXl3Z0lDQjJaV016TENBZ0lIWmxZek1nSUNrN2RtVmpOQ0FnSUdadFlTaDJaV00wTENBZ0lIWmxZelFzSUNBZ2RtVmpOQ0FnS1RzS0FHUnZkV0pzWlNCbWJXRW9aRzkxWW14bExDQmtiM1ZpYkdVc0lHUnZkV0pzWlNrN1pIWmxZeklnSUdadFlTaGtkbVZqTWl3Z0lHUjJaV015TENBZ1pIWmxZeklnS1R0a2RtVmpNeUFnWm0xaEtHUjJaV016TENBZ1pIWmxZek1zSUNCa2RtVmpNeUFwTzJSMlpXTTBJQ0JtYldFb1pIWmxZelFzSUNCa2RtVmpOQ3dnSUdSMlpXTTBJQ2s3Q2dCbWJHOWhkQ0JtY21WNGNDaG9hV2RvY0NCbWJHOWhkQ3dnYjNWMElHaHBaMmh3SUdsdWRDazdkbVZqTWlBZ1puSmxlSEFvYUdsbmFIQWdkbVZqTWl3Z0lHOTFkQ0JvYVdkb2NDQnBkbVZqTWlrN2RtVmpNeUFnWm5KbGVIQW9hR2xuYUhBZ2RtVmpNeXdnSUc5MWRDQm9hV2RvY0NCcGRtVmpNeWs3ZG1Wak5DQWdabkpsZUhBb2FHbG5hSEFnZG1Wak5Dd2dJRzkxZENCb2FXZG9jQ0JwZG1Wak5DazdabXh2WVhRZ2JHUmxlSEFvYUdsbmFIQWdabXh2WVhRc0lHaHBaMmh3SUdsdWRDazdkbVZqTWlBZ2JHUmxlSEFvYUdsbmFIQWdkbVZqTWl3Z0lHaHBaMmh3SUdsMlpXTXlLVHQyWldNeklDQnNaR1Y0Y0Nob2FXZG9jQ0IyWldNekxDQWdhR2xuYUhBZ2FYWmxZek1wTzNabFl6UWdJR3hrWlhod0tHaHBaMmh3SUhabFl6UXNJQ0JvYVdkb2NDQnBkbVZqTkNrN0NnQmtiM1ZpYkdVZ1puSmxlSEFvWkc5MVlteGxMQ0J2ZFhRZ2FXNTBLVHRrZG1Wak1pQWdabkpsZUhBb0lHUjJaV015TENCdmRYUWdhWFpsWXpJcE8yUjJaV016SUNCbWNtVjRjQ2dnWkhabFl6TXNJRzkxZENCcGRtVmpNeWs3WkhabFl6UWdJR1p5Wlhod0tDQmtkbVZqTkN3Z2IzVjBJR2wyWldNMEtUdGtiM1ZpYkdVZ2JHUmxlSEFvWkc5MVlteGxMQ0JwYm5RcE8yUjJaV015SUNCc1pHVjRjQ2dnWkhabFl6SXNJR2wyWldNeUtUdGtkbVZqTXlBZ2JHUmxlSEFvSUdSMlpXTXpMQ0JwZG1Wak15azdaSFpsWXpRZ0lHeGtaWGh3S0NCa2RtVmpOQ3dnYVhabFl6UXBPMlJ2ZFdKc1pTQndZV05yUkc5MVlteGxNbmd6TWloMWRtVmpNaWs3ZFhabFl6SWdkVzV3WVdOclJHOTFZbXhsTW5nek1paGtiM1ZpYkdVcE93b0FhR2xuYUhBZ2RXbHVkQ0J3WVdOclZXNXZjbTB5ZURFMktIWmxZeklwTzNabFl6SWdkVzV3WVdOclZXNXZjbTB5ZURFMktHaHBaMmh3SUhWcGJuUXBPd29BYUdsbmFIQWdkV2x1ZENCd1lXTnJVMjV2Y20weWVERTJLSFpsWXpJcE95QWdJQ0FnSUhabFl6SWdkVzV3WVdOclUyNXZjbTB5ZURFMktHaHBaMmh3SUhWcGJuUXBPMmhwWjJod0lIVnBiblFnY0dGamEwaGhiR1l5ZURFMktIWmxZeklwT3dvQWJXVmthWFZ0Y0NCMlpXTXlJSFZ1Y0dGamEwaGhiR1l5ZURFMktHaHBaMmh3SUhWcGJuUXBPd29BSUNBZ0lDQWdJQ0IyWldNeUlIVnVjR0ZqYTBoaGJHWXllREUyS0docFoyaHdJSFZwYm5RcE93b0FhR2xuYUhBZ2RXbHVkQ0J3WVdOclUyNXZjbTAwZURnb2RtVmpOQ2s3YUdsbmFIQWdkV2x1ZENCd1lXTnJWVzV2Y20wMGVEZ29kbVZqTkNrN0NnQnRaV1JwZFcxd0lIWmxZelFnZFc1d1lXTnJVMjV2Y20wMGVEZ29hR2xuYUhBZ2RXbHVkQ2s3YldWa2FYVnRjQ0IyWldNMElIVnVjR0ZqYTFWdWIzSnROSGc0S0docFoyaHdJSFZwYm5RcE93b0FkbVZqTkNCMWJuQmhZMnRUYm05eWJUUjRPQ2hvYVdkb2NDQjFhVzUwS1R0MlpXTTBJSFZ1Y0dGamExVnViM0p0TkhnNEtHaHBaMmh3SUhWcGJuUXBPd29BYldGME1pQnRZWFJ5YVhoRGIyMXdUWFZzZENodFlYUXlJSGdzSUcxaGRESWdlU2s3YldGME15QnRZWFJ5YVhoRGIyMXdUWFZzZENodFlYUXpJSGdzSUcxaGRETWdlU2s3YldGME5DQnRZWFJ5YVhoRGIyMXdUWFZzZENodFlYUTBJSGdzSUcxaGREUWdlU2s3Q2dCdFlYUXlJQ0FnYjNWMFpYSlFjbTlrZFdOMEtIWmxZeklnWXl3Z2RtVmpNaUJ5S1R0dFlYUXpJQ0FnYjNWMFpYSlFjbTlrZFdOMEtIWmxZek1nWXl3Z2RtVmpNeUJ5S1R0dFlYUTBJQ0FnYjNWMFpYSlFjbTlrZFdOMEtIWmxZelFnWXl3Z2RtVmpOQ0J5S1R0dFlYUXllRE1nYjNWMFpYSlFjbTlrZFdOMEtIWmxZek1nWXl3Z2RtVmpNaUJ5S1R0dFlYUXplRElnYjNWMFpYSlFjbTlrZFdOMEtIWmxZeklnWXl3Z2RtVmpNeUJ5S1R0dFlYUXllRFFnYjNWMFpYSlFjbTlrZFdOMEtIWmxZelFnWXl3Z2RtVmpNaUJ5S1R0dFlYUTBlRElnYjNWMFpYSlFjbTlrZFdOMEtIWmxZeklnWXl3Z2RtVmpOQ0J5S1R0dFlYUXplRFFnYjNWMFpYSlFjbTlrZFdOMEtIWmxZelFnWXl3Z2RtVmpNeUJ5S1R0dFlYUTBlRE1nYjNWMFpYSlFjbTlrZFdOMEtIWmxZek1nWXl3Z2RtVmpOQ0J5S1R0dFlYUXlJQ0FnZEhKaGJuTndiM05sS0cxaGRESWdJQ0J0S1R0dFlYUXpJQ0FnZEhKaGJuTndiM05sS0cxaGRETWdJQ0J0S1R0dFlYUTBJQ0FnZEhKaGJuTndiM05sS0cxaGREUWdJQ0J0S1R0dFlYUXllRE1nZEhKaGJuTndiM05sS0cxaGRETjRNaUJ0S1R0dFlYUXplRElnZEhKaGJuTndiM05sS0cxaGRESjRNeUJ0S1R0dFlYUXllRFFnZEhKaGJuTndiM05sS0cxaGREUjRNaUJ0S1R0dFlYUTBlRElnZEhKaGJuTndiM05sS0cxaGRESjROQ0J0S1R0dFlYUXplRFFnZEhKaGJuTndiM05sS0cxaGREUjRNeUJ0S1R0dFlYUTBlRE1nZEhKaGJuTndiM05sS0cxaGRETjROQ0J0S1R0dFlYUXllRE1nYldGMGNtbDRRMjl0Y0UxMWJIUW9iV0YwTW5nekxDQnRZWFF5ZURNcE8yMWhkREo0TkNCdFlYUnlhWGhEYjIxd1RYVnNkQ2h0WVhReWVEUXNJRzFoZERKNE5DazdiV0YwTTNneUlHMWhkSEpwZUVOdmJYQk5kV3gwS0cxaGRETjRNaXdnYldGME0zZ3lLVHR0WVhRemVEUWdiV0YwY21sNFEyOXRjRTExYkhRb2JXRjBNM2cwTENCdFlYUXplRFFwTzIxaGREUjRNaUJ0WVhSeWFYaERiMjF3VFhWc2RDaHRZWFEwZURJc0lHMWhkRFI0TWlrN2JXRjBOSGd6SUcxaGRISnBlRU52YlhCTmRXeDBLRzFoZERSNE15d2diV0YwTkhnektUc0tBR1pzYjJGMElHUmxkR1Z5YldsdVlXNTBLRzFoZERJZ2JTazdabXh2WVhRZ1pHVjBaWEp0YVc1aGJuUW9iV0YwTXlCdEtUdG1iRzloZENCa1pYUmxjbTFwYm1GdWRDaHRZWFEwSUcwcE8yMWhkRElnYVc1MlpYSnpaU2h0WVhReUlHMHBPMjFoZERNZ2FXNTJaWEp6WlNodFlYUXpJRzBwTzIxaGREUWdhVzUyWlhKelpTaHRZWFEwSUcwcE93b0FkbVZqTkNCMFpYaDBkWEpsTWtRb2MyRnRjR3hsY2pKRUxDQjJaV015S1R0MlpXTTBJSFJsZUhSMWNtVXlSRkJ5YjJvb2MyRnRjR3hsY2pKRUxDQjJaV016S1R0MlpXTTBJSFJsZUhSMWNtVXlSRkJ5YjJvb2MyRnRjR3hsY2pKRUxDQjJaV00wS1R0MlpXTTBJSFJsZUhSMWNtVXpSQ2h6WVcxd2JHVnlNMFFzSUhabFl6TXBPM1psWXpRZ2RHVjRkSFZ5WlRORVVISnZhaWh6WVcxd2JHVnlNMFFzSUhabFl6UXBPM1psWXpRZ2RHVjRkSFZ5WlVOMVltVW9jMkZ0Y0d4bGNrTjFZbVVzSUhabFl6TXBPd29BZG1Wak5DQjBaWGgwZFhKbE1VUW9jMkZ0Y0d4bGNqRkVMQ0JtYkc5aGRDazdkbVZqTkNCMFpYaDBkWEpsTVVSUWNtOXFLSE5oYlhCc1pYSXhSQ3dnZG1Wak1pazdkbVZqTkNCMFpYaDBkWEpsTVVSUWNtOXFLSE5oYlhCc1pYSXhSQ3dnZG1Wak5DazdkbVZqTkNCemFHRmtiM2N4UkNoellXMXdiR1Z5TVVSVGFHRmtiM2NzSUhabFl6TXBPM1psWXpRZ2MyaGhaRzkzTWtRb2MyRnRjR3hsY2pKRVUyaGhaRzkzTENCMlpXTXpLVHQyWldNMElITm9ZV1J2ZHpGRVVISnZhaWh6WVcxd2JHVnlNVVJUYUdGa2IzY3NJSFpsWXpRcE8zWmxZelFnYzJoaFpHOTNNa1JRY205cUtITmhiWEJzWlhJeVJGTm9ZV1J2ZHl3Z2RtVmpOQ2s3ZG1Wak5DQjBaWGgwZFhKbE1rUlNaV04wS0hOaGJYQnNaWEl5UkZKbFkzUXNJSFpsWXpJcE8zWmxZelFnZEdWNGRIVnlaVEpFVW1WamRGQnliMm9vYzJGdGNHeGxjakpFVW1WamRDd2dkbVZqTXlrN2RtVmpOQ0IwWlhoMGRYSmxNa1JTWldOMFVISnZhaWh6WVcxd2JHVnlNa1JTWldOMExDQjJaV00wS1R0MlpXTTBJSE5vWVdSdmR6SkVVbVZqZENoellXMXdiR1Z5TWtSU1pXTjBVMmhoWkc5M0xDQjJaV016S1R0MlpXTTBJSE5vWVdSdmR6SkVVbVZqZEZCeWIyb29jMkZ0Y0d4bGNqSkVVbVZqZEZOb1lXUnZkeXdnZG1Wak5DazdDZ0IyWldNMElIUmxlSFIxY21VeVJDaHpZVzF3YkdWeVJYaDBaWEp1WVd4UFJWTXNJSFpsWXpJZ1kyOXZjbVFwTzNabFl6UWdkR1Y0ZEhWeVpUSkVVSEp2YWloellXMXdiR1Z5UlhoMFpYSnVZV3hQUlZNc0lIWmxZek1wTzNabFl6UWdkR1Y0ZEhWeVpUSkVVSEp2YWloellXMXdiR1Z5UlhoMFpYSnVZV3hQUlZNc0lIWmxZelFwT3dvQWFHbG5hSEFnYVhabFl6SWdkR1Y0ZEhWeVpWTnBlbVVvYzJGdGNHeGxja1Y0ZEdWeWJtRnNUMFZUTENCcGJuUWdiRzlrS1R0MlpXTTBJSFJsZUhSMWNtVW9jMkZ0Y0d4bGNrVjRkR1Z5Ym1Gc1QwVlRMQ0IyWldNeUtUdDJaV00wSUhSbGVIUjFjbVVvYzJGdGNHeGxja1Y0ZEdWeWJtRnNUMFZUTENCMlpXTXlMQ0JtYkc5aGRDQmlhV0Z6S1R0MlpXTTBJSFJsZUhSMWNtVlFjbTlxS0hOaGJYQnNaWEpGZUhSbGNtNWhiRTlGVXl3Z2RtVmpNeWs3ZG1Wak5DQjBaWGgwZFhKbFVISnZhaWh6WVcxd2JHVnlSWGgwWlhKdVlXeFBSVk1zSUhabFl6TXNJR1pzYjJGMElHSnBZWE1wTzNabFl6UWdkR1Y0ZEhWeVpWQnliMm9vYzJGdGNHeGxja1Y0ZEdWeWJtRnNUMFZUTENCMlpXTTBLVHQyWldNMElIUmxlSFIxY21WUWNtOXFLSE5oYlhCc1pYSkZlSFJsY201aGJFOUZVeXdnZG1Wak5Dd2dabXh2WVhRZ1ltbGhjeWs3ZG1Wak5DQjBaWGhsYkVabGRHTm9LSE5oYlhCc1pYSkZlSFJsY201aGJFOUZVeXdnYVhabFl6SXNJR2x1ZENCc2IyUXBPd29BYUdsbmFIQWdhWFpsWXpJZ2RHVjRkSFZ5WlZOcGVtVW9YMTl6WVcxd2JHVnlSWGgwWlhKdVlXd3lSRmt5V1VWWVZDd2dhVzUwSUd4dlpDazdkbVZqTkNCMFpYaDBkWEpsS0Y5ZmMyRnRjR3hsY2tWNGRHVnlibUZzTWtSWk1sbEZXRlFzSUhabFl6SXBPM1psWXpRZ2RHVjRkSFZ5WlNoZlgzTmhiWEJzWlhKRmVIUmxjbTVoYkRKRVdUSlpSVmhVTENCMlpXTXlMQ0JtYkc5aGRDQmlhV0Z6S1R0MlpXTTBJSFJsZUhSMWNtVlFjbTlxS0Y5ZmMyRnRjR3hsY2tWNGRHVnlibUZzTWtSWk1sbEZXRlFzSUhabFl6TXBPM1psWXpRZ2RHVjRkSFZ5WlZCeWIyb29YMTl6WVcxd2JHVnlSWGgwWlhKdVlXd3lSRmt5V1VWWVZDd2dkbVZqTXl3Z1pteHZZWFFnWW1saGN5azdkbVZqTkNCMFpYaDBkWEpsVUhKdmFpaGZYM05oYlhCc1pYSkZlSFJsY201aGJESkVXVEpaUlZoVUxDQjJaV00wS1R0MlpXTTBJSFJsZUhSMWNtVlFjbTlxS0Y5ZmMyRnRjR3hsY2tWNGRHVnlibUZzTWtSWk1sbEZXRlFzSUhabFl6UXNJR1pzYjJGMElHSnBZWE1wTzNabFl6UWdkR1Y0Wld4R1pYUmphQ2hmWDNOaGJYQnNaWEpGZUhSbGNtNWhiREpFV1RKWlJWaFVJSE5oYlhCc1pYSXNJR2wyWldNeUxDQnBiblFnYkc5a0tUc0tBSFpsWXpRZ2RHVjRkSFZ5WlRKRVIzSmhaRVZZVkNoellXMXdiR1Z5TWtRc0lIWmxZeklzSUhabFl6SXNJSFpsWXpJcE8zWmxZelFnZEdWNGRIVnlaVEpFVUhKdmFrZHlZV1JGV0ZRb2MyRnRjR3hsY2pKRUxDQjJaV016TENCMlpXTXlMQ0IyWldNeUtUdDJaV00wSUhSbGVIUjFjbVV5UkZCeWIycEhjbUZrUlZoVUtITmhiWEJzWlhJeVJDd2dkbVZqTkN3Z2RtVmpNaXdnZG1Wak1pazdkbVZqTkNCMFpYaDBkWEpsUTNWaVpVZHlZV1JGV0ZRb2MyRnRjR3hsY2tOMVltVXNJSFpsWXpNc0lIWmxZek1zSUhabFl6TXBPMlpzYjJGMElITm9ZV1J2ZHpKRVJWaFVLSE5oYlhCc1pYSXlSRk5vWVdSdmR5d2dkbVZqTXlrN1pteHZZWFFnYzJoaFpHOTNNa1JRY205cVJWaFVLSE5oYlhCc1pYSXlSRk5vWVdSdmR5d2dkbVZqTkNrN0NnQm1iRzloZENCdWIybHpaVEVvWm14dllYUWdlQ2s3Wm14dllYUWdibTlwYzJVeEtIWmxZeklnSUhncE8yWnNiMkYwSUc1dmFYTmxNU2gyWldNeklDQjRLVHRtYkc5aGRDQnViMmx6WlRFb2RtVmpOQ0FnZUNrN2RtVmpNaUJ1YjJselpUSW9abXh2WVhRZ2VDazdkbVZqTWlCdWIybHpaVElvZG1Wak1pQWdlQ2s3ZG1Wak1pQnViMmx6WlRJb2RtVmpNeUFnZUNrN2RtVmpNaUJ1YjJselpUSW9kbVZqTkNBZ2VDazdkbVZqTXlCdWIybHpaVE1vWm14dllYUWdlQ2s3ZG1Wak15QnViMmx6WlRNb2RtVmpNaUFnZUNrN2RtVmpNeUJ1YjJselpUTW9kbVZqTXlBZ2VDazdkbVZqTXlCdWIybHpaVE1vZG1Wak5DQWdlQ2s3ZG1Wak5DQnViMmx6WlRRb1pteHZZWFFnZUNrN2RtVmpOQ0J1YjJselpUUW9kbVZqTWlBZ2VDazdkbVZqTkNCdWIybHpaVFFvZG1Wak15QWdlQ2s3ZG1Wak5DQnViMmx6WlRRb2RtVmpOQ0FnZUNrN0NnQjFhVzUwSUdGMGIyMXBZME52ZFc1MFpYSkpibU55WlcxbGJuUW9ZWFJ2YldsalgzVnBiblFwTzNWcGJuUWdZWFJ2YldsalEyOTFiblJsY2tSbFkzSmxiV1Z1ZENoaGRHOXRhV05mZFdsdWRDazdkV2x1ZENCaGRHOXRhV05EYjNWdWRHVnlLR0YwYjIxcFkxOTFhVzUwS1RzS0FIVnBiblFnWVhSdmJXbGpRMjkxYm5SbGNrRmtaQ2hoZEc5dGFXTmZkV2x1ZEN3Z2RXbHVkQ2s3ZFdsdWRDQmhkRzl0YVdORGIzVnVkR1Z5VTNWaWRISmhZM1FvWVhSdmJXbGpYM1ZwYm5Rc0lIVnBiblFwTzNWcGJuUWdZWFJ2YldsalEyOTFiblJsY2sxcGJpaGhkRzl0YVdOZmRXbHVkQ3dnZFdsdWRDazdkV2x1ZENCaGRHOXRhV05EYjNWdWRHVnlUV0Y0S0dGMGIyMXBZMTkxYVc1MExDQjFhVzUwS1R0MWFXNTBJR0YwYjIxcFkwTnZkVzUwWlhKQmJtUW9ZWFJ2YldsalgzVnBiblFzSUhWcGJuUXBPM1ZwYm5RZ1lYUnZiV2xqUTI5MWJuUmxjazl5S0dGMGIyMXBZMTkxYVc1MExDQjFhVzUwS1R0MWFXNTBJR0YwYjIxcFkwTnZkVzUwWlhKWWIzSW9ZWFJ2YldsalgzVnBiblFzSUhWcGJuUXBPM1ZwYm5RZ1lYUnZiV2xqUTI5MWJuUmxja1Y0WTJoaGJtZGxLR0YwYjIxcFkxOTFhVzUwTENCMWFXNTBLVHQxYVc1MElHRjBiMjFwWTBOdmRXNTBaWEpEYjIxd1UzZGhjQ2hoZEc5dGFXTmZkV2x1ZEN3Z2RXbHVkQ3dnZFdsdWRDazdDZ0FnSUdsdWRDQmlhWFJtYVdWc1pFVjRkSEpoWTNRb0lDQnBiblFzSUdsdWRDd2dhVzUwS1R0cGRtVmpNaUJpYVhSbWFXVnNaRVY0ZEhKaFkzUW9hWFpsWXpJc0lHbHVkQ3dnYVc1MEtUdHBkbVZqTXlCaWFYUm1hV1ZzWkVWNGRISmhZM1FvYVhabFl6TXNJR2x1ZEN3Z2FXNTBLVHRwZG1Wak5DQmlhWFJtYVdWc1pFVjRkSEpoWTNRb2FYWmxZelFzSUdsdWRDd2dhVzUwS1RzZ2RXbHVkQ0JpYVhSbWFXVnNaRVY0ZEhKaFkzUW9JSFZwYm5Rc0lHbHVkQ3dnYVc1MEtUdDFkbVZqTWlCaWFYUm1hV1ZzWkVWNGRISmhZM1FvZFhabFl6SXNJR2x1ZEN3Z2FXNTBLVHQxZG1Wak15QmlhWFJtYVdWc1pFVjRkSEpoWTNRb2RYWmxZek1zSUdsdWRDd2dhVzUwS1R0MWRtVmpOQ0JpYVhSbWFXVnNaRVY0ZEhKaFkzUW9kWFpsWXpRc0lHbHVkQ3dnYVc1MEtUc2dJR2x1ZENCaWFYUm1hV1ZzWkVsdWMyVnlkQ2dnSUdsdWRDQmlZWE5sTENBZ0lHbHVkQ3dnYVc1MExDQnBiblFwTzJsMlpXTXlJR0pwZEdacFpXeGtTVzV6WlhKMEtHbDJaV015SUdKaGMyVXNJR2wyWldNeUxDQnBiblFzSUdsdWRDazdhWFpsWXpNZ1ltbDBabWxsYkdSSmJuTmxjblFvYVhabFl6TWdZbUZ6WlN3Z2FYWmxZek1zSUdsdWRDd2dhVzUwS1R0cGRtVmpOQ0JpYVhSbWFXVnNaRWx1YzJWeWRDaHBkbVZqTkNCaVlYTmxMQ0JwZG1Wak5Dd2dhVzUwTENCcGJuUXBPeUIxYVc1MElHSnBkR1pwWld4a1NXNXpaWEowS0NCMWFXNTBJR0poYzJVc0lDQjFhVzUwTENCcGJuUXNJR2x1ZENrN2RYWmxZeklnWW1sMFptbGxiR1JKYm5ObGNuUW9kWFpsWXpJZ1ltRnpaU3dnZFhabFl6SXNJR2x1ZEN3Z2FXNTBLVHQxZG1Wak15QmlhWFJtYVdWc1pFbHVjMlZ5ZENoMWRtVmpNeUJpWVhObExDQjFkbVZqTXl3Z2FXNTBMQ0JwYm5RcE8zVjJaV00wSUdKcGRHWnBaV3hrU1c1elpYSjBLSFYyWldNMElHSmhjMlVzSUhWMlpXTTBMQ0JwYm5Rc0lHbHVkQ2s3Q2dBZ0lHbHVkQ0JtYVc1a1RGTkNLQ0FnYVc1MEtUdHBkbVZqTWlCbWFXNWtURk5DS0dsMlpXTXlLVHRwZG1Wak15Qm1hVzVrVEZOQ0tHbDJaV016S1R0cGRtVmpOQ0JtYVc1a1RGTkNLR2wyWldNMEtUc2dJR2x1ZENCbWFXNWtURk5DS0NCMWFXNTBLVHRwZG1Wak1pQm1hVzVrVEZOQ0tIVjJaV015S1R0cGRtVmpNeUJtYVc1a1RGTkNLSFYyWldNektUdHBkbVZqTkNCbWFXNWtURk5DS0hWMlpXTTBLVHNLQUd4dmQzQWdJQ0JwYm5RZ1ptbHVaRXhUUWlnZ0lHbHVkQ2s3Ykc5M2NDQnBkbVZqTWlCbWFXNWtURk5DS0dsMlpXTXlLVHRzYjNkd0lHbDJaV016SUdacGJtUk1VMElvYVhabFl6TXBPMnh2ZDNBZ2FYWmxZelFnWm1sdVpFeFRRaWhwZG1Wak5DazdiRzkzY0NBZ0lHbHVkQ0JtYVc1a1RGTkNLQ0IxYVc1MEtUdHNiM2R3SUdsMlpXTXlJR1pwYm1STVUwSW9kWFpsWXpJcE8yeHZkM0FnYVhabFl6TWdabWx1WkV4VFFpaDFkbVZqTXlrN2JHOTNjQ0JwZG1Wak5DQm1hVzVrVEZOQ0tIVjJaV00wS1RzS0FDQWdhVzUwSUdKcGRFTnZkVzUwS0NBZ2FXNTBLVHRwZG1Wak1pQmlhWFJEYjNWdWRDaHBkbVZqTWlrN2FYWmxZek1nWW1sMFEyOTFiblFvYVhabFl6TXBPMmwyWldNMElHSnBkRU52ZFc1MEtHbDJaV00wS1RzZ0lHbHVkQ0JpYVhSRGIzVnVkQ2dnZFdsdWRDazdhWFpsWXpJZ1ltbDBRMjkxYm5Rb2RYWmxZeklwTzJsMlpXTXpJR0pwZEVOdmRXNTBLSFYyWldNektUdHBkbVZqTkNCaWFYUkRiM1Z1ZENoMWRtVmpOQ2s3SUNCcGJuUWdabWx1WkUxVFFpaG9hV2RvY0NBZ0lHbHVkQ2s3YVhabFl6SWdabWx1WkUxVFFpaG9hV2RvY0NCcGRtVmpNaWs3YVhabFl6TWdabWx1WkUxVFFpaG9hV2RvY0NCcGRtVmpNeWs3YVhabFl6UWdabWx1WkUxVFFpaG9hV2RvY0NCcGRtVmpOQ2s3SUNCcGJuUWdabWx1WkUxVFFpaG9hV2RvY0NBZ2RXbHVkQ2s3YVhabFl6SWdabWx1WkUxVFFpaG9hV2RvY0NCMWRtVmpNaWs3YVhabFl6TWdabWx1WkUxVFFpaG9hV2RvY0NCMWRtVmpNeWs3YVhabFl6UWdabWx1WkUxVFFpaG9hV2RvY0NCMWRtVmpOQ2s3Q2dBZ2RXbHVkQ0IxWVdSa1EyRnljbmtvYUdsbmFIQWdJSFZwYm5Rc0lHaHBaMmh3SUNCMWFXNTBMQ0J2ZFhRZ2JHOTNjQ0FnZFdsdWRDQmpZWEp5ZVNrN2RYWmxZeklnZFdGa1pFTmhjbko1S0docFoyaHdJSFYyWldNeUxDQm9hV2RvY0NCMWRtVmpNaXdnYjNWMElHeHZkM0FnZFhabFl6SWdZMkZ5Y25rcE8zVjJaV016SUhWaFpHUkRZWEp5ZVNob2FXZG9jQ0IxZG1Wak15d2dhR2xuYUhBZ2RYWmxZek1zSUc5MWRDQnNiM2R3SUhWMlpXTXpJR05oY25KNUtUdDFkbVZqTkNCMVlXUmtRMkZ5Y25rb2FHbG5hSEFnZFhabFl6UXNJR2hwWjJod0lIVjJaV00wTENCdmRYUWdiRzkzY0NCMWRtVmpOQ0JqWVhKeWVTazdJSFZwYm5RZ2RYTjFZa0p2Y25KdmR5aG9hV2RvY0NBZ2RXbHVkQ3dnYUdsbmFIQWdJSFZwYm5Rc0lHOTFkQ0JzYjNkd0lDQjFhVzUwSUdKdmNuSnZkeWs3ZFhabFl6SWdkWE4xWWtKdmNuSnZkeWhvYVdkb2NDQjFkbVZqTWl3Z2FHbG5hSEFnZFhabFl6SXNJRzkxZENCc2IzZHdJSFYyWldNeUlHSnZjbkp2ZHlrN2RYWmxZek1nZFhOMVlrSnZjbkp2ZHlob2FXZG9jQ0IxZG1Wak15d2dhR2xuYUhBZ2RYWmxZek1zSUc5MWRDQnNiM2R3SUhWMlpXTXpJR0p2Y25KdmR5azdkWFpsWXpRZ2RYTjFZa0p2Y25KdmR5aG9hV2RvY0NCMWRtVmpOQ3dnYUdsbmFIQWdkWFpsWXpRc0lHOTFkQ0JzYjNkd0lIVjJaV00wSUdKdmNuSnZkeWs3ZG05cFpDQjFiWFZzUlhoMFpXNWtaV1FvYUdsbmFIQWdJSFZwYm5Rc0lHaHBaMmh3SUNCMWFXNTBMQ0J2ZFhRZ2FHbG5hSEFnSUhWcGJuUXNJRzkxZENCb2FXZG9jQ0FnZFdsdWRDQnNjMklwTzNadmFXUWdkVzExYkVWNGRHVnVaR1ZrS0docFoyaHdJSFYyWldNeUxDQm9hV2RvY0NCMWRtVmpNaXdnYjNWMElHaHBaMmh3SUhWMlpXTXlMQ0J2ZFhRZ2FHbG5hSEFnZFhabFl6SWdiSE5pS1R0MmIybGtJSFZ0ZFd4RmVIUmxibVJsWkNob2FXZG9jQ0IxZG1Wak15d2dhR2xuYUhBZ2RYWmxZek1zSUc5MWRDQm9hV2RvY0NCMWRtVmpNeXdnYjNWMElHaHBaMmh3SUhWMlpXTXpJR3h6WWlrN2RtOXBaQ0IxYlhWc1JYaDBaVzVrWldRb2FHbG5hSEFnZFhabFl6UXNJR2hwWjJod0lIVjJaV00wTENCdmRYUWdhR2xuYUhBZ2RYWmxZelFzSUc5MWRDQm9hV2RvY0NCMWRtVmpOQ0JzYzJJcE8zWnZhV1FnYVcxMWJFVjRkR1Z1WkdWa0tHaHBaMmh3SUNBZ2FXNTBMQ0JvYVdkb2NDQWdJR2x1ZEN3Z2IzVjBJR2hwWjJod0lDQWdhVzUwTENCdmRYUWdhR2xuYUhBZ0lDQnBiblFnYkhOaUtUdDJiMmxrSUdsdGRXeEZlSFJsYm1SbFpDaG9hV2RvY0NCcGRtVmpNaXdnYUdsbmFIQWdhWFpsWXpJc0lHOTFkQ0JvYVdkb2NDQnBkbVZqTWl3Z2IzVjBJR2hwWjJod0lHbDJaV015SUd4ellpazdkbTlwWkNCcGJYVnNSWGgwWlc1a1pXUW9hR2xuYUhBZ2FYWmxZek1zSUdocFoyaHdJR2wyWldNekxDQnZkWFFnYUdsbmFIQWdhWFpsWXpNc0lHOTFkQ0JvYVdkb2NDQnBkbVZqTXlCc2MySXBPM1p2YVdRZ2FXMTFiRVY0ZEdWdVpHVmtLR2hwWjJod0lHbDJaV00wTENCb2FXZG9jQ0JwZG1Wak5Dd2diM1YwSUdocFoyaHdJR2wyWldNMExDQnZkWFFnYUdsbmFIQWdhWFpsWXpRZ2JITmlLVHNnSUdsdWRDQmlhWFJtYVdWc1pGSmxkbVZ5YzJVb2FHbG5hSEFnSUNCcGJuUXBPMmwyWldNeUlHSnBkR1pwWld4a1VtVjJaWEp6WlNob2FXZG9jQ0JwZG1Wak1pazdhWFpsWXpNZ1ltbDBabWxsYkdSU1pYWmxjbk5sS0docFoyaHdJR2wyWldNektUdHBkbVZqTkNCaWFYUm1hV1ZzWkZKbGRtVnljMlVvYUdsbmFIQWdhWFpsWXpRcE95QjFhVzUwSUdKcGRHWnBaV3hrVW1WMlpYSnpaU2hvYVdkb2NDQWdkV2x1ZENrN2RYWmxZeklnWW1sMFptbGxiR1JTWlhabGNuTmxLR2hwWjJod0lIVjJaV015S1R0MWRtVmpNeUJpYVhSbWFXVnNaRkpsZG1WeWMyVW9hR2xuYUhBZ2RYWmxZek1wTzNWMlpXTTBJR0pwZEdacFpXeGtVbVYyWlhKelpTaG9hV2RvY0NCMWRtVmpOQ2s3Q2dCc2IzZHdJQ0FnYVc1MElHSnBkRU52ZFc1MEtDQWdhVzUwS1R0c2IzZHdJR2wyWldNeUlHSnBkRU52ZFc1MEtHbDJaV015S1R0c2IzZHdJR2wyWldNeklHSnBkRU52ZFc1MEtHbDJaV016S1R0c2IzZHdJR2wyWldNMElHSnBkRU52ZFc1MEtHbDJaV00wS1R0c2IzZHdJQ0FnYVc1MElHSnBkRU52ZFc1MEtDQjFhVzUwS1R0c2IzZHdJR2wyWldNeUlHSnBkRU52ZFc1MEtIVjJaV015S1R0c2IzZHdJR2wyWldNeklHSnBkRU52ZFc1MEtIVjJaV016S1R0c2IzZHdJR2wyWldNMElHSnBkRU52ZFc1MEtIVjJaV00wS1R0c2IzZHdJQ0FnYVc1MElHWnBibVJOVTBJb2FHbG5hSEFnSUNCcGJuUXBPMnh2ZDNBZ2FYWmxZeklnWm1sdVpFMVRRaWhvYVdkb2NDQnBkbVZqTWlrN2JHOTNjQ0JwZG1Wak15Qm1hVzVrVFZOQ0tHaHBaMmh3SUdsMlpXTXpLVHRzYjNkd0lHbDJaV00wSUdacGJtUk5VMElvYUdsbmFIQWdhWFpsWXpRcE8yeHZkM0FnSUNCcGJuUWdabWx1WkUxVFFpaG9hV2RvY0NBZ2RXbHVkQ2s3Ykc5M2NDQnBkbVZqTWlCbWFXNWtUVk5DS0docFoyaHdJSFYyWldNeUtUdHNiM2R3SUdsMlpXTXpJR1pwYm1STlUwSW9hR2xuYUhBZ2RYWmxZek1wTzJ4dmQzQWdhWFpsWXpRZ1ptbHVaRTFUUWlob2FXZG9jQ0IxZG1Wak5DazdDZ0IxYVc1ME5qUmZkQ0JpWVd4c2IzUkJVa0lvWW05dmJDazdabXh2WVhRZ2NtVmhaRWx1ZG05allYUnBiMjVCVWtJb1pteHZZWFFzSUhWcGJuUXBPM1psWXpJZ0lISmxZV1JKYm5adlkyRjBhVzl1UVZKQ0tIWmxZeklzSUNCMWFXNTBLVHQyWldNeklDQnlaV0ZrU1c1MmIyTmhkR2x2YmtGU1FpaDJaV016TENBZ2RXbHVkQ2s3ZG1Wak5DQWdjbVZoWkVsdWRtOWpZWFJwYjI1QlVrSW9kbVZqTkN3Z0lIVnBiblFwTzJsdWRDQWdJSEpsWVdSSmJuWnZZMkYwYVc5dVFWSkNLR2x1ZEN3Z0lDQjFhVzUwS1R0cGRtVmpNaUJ5WldGa1NXNTJiMk5oZEdsdmJrRlNRaWhwZG1Wak1pd2dkV2x1ZENrN2FYWmxZek1nY21WaFpFbHVkbTlqWVhScGIyNUJVa0lvYVhabFl6TXNJSFZwYm5RcE8ybDJaV00wSUhKbFlXUkpiblp2WTJGMGFXOXVRVkpDS0dsMlpXTTBMQ0IxYVc1MEtUdDFhVzUwSUNCeVpXRmtTVzUyYjJOaGRHbHZia0ZTUWloMWFXNTBMQ0FnZFdsdWRDazdkWFpsWXpJZ2NtVmhaRWx1ZG05allYUnBiMjVCVWtJb2RYWmxZeklzSUhWcGJuUXBPM1YyWldNeklISmxZV1JKYm5adlkyRjBhVzl1UVZKQ0tIVjJaV016TENCMWFXNTBLVHQxZG1Wak5DQnlaV0ZrU1c1MmIyTmhkR2x2YmtGU1FpaDFkbVZqTkN3Z2RXbHVkQ2s3Wm14dllYUWdjbVZoWkVacGNuTjBTVzUyYjJOaGRHbHZia0ZTUWlobWJHOWhkQ2s3ZG1Wak1pQWdjbVZoWkVacGNuTjBTVzUyYjJOaGRHbHZia0ZTUWloMlpXTXlLVHQyWldNeklDQnlaV0ZrUm1seWMzUkpiblp2WTJGMGFXOXVRVkpDS0habFl6TXBPM1psWXpRZ0lISmxZV1JHYVhKemRFbHVkbTlqWVhScGIyNUJVa0lvZG1Wak5DazdhVzUwSUNBZ2NtVmhaRVpwY25OMFNXNTJiMk5oZEdsdmJrRlNRaWhwYm5RcE8ybDJaV015SUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI1QlVrSW9hWFpsWXpJcE8ybDJaV016SUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI1QlVrSW9hWFpsWXpNcE8ybDJaV00wSUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI1QlVrSW9hWFpsWXpRcE8zVnBiblFnSUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI1QlVrSW9kV2x1ZENrN2RYWmxZeklnY21WaFpFWnBjbk4wU1c1MmIyTmhkR2x2YmtGU1FpaDFkbVZqTWlrN2RYWmxZek1nY21WaFpFWnBjbk4wU1c1MmIyTmhkR2x2YmtGU1FpaDFkbVZqTXlrN2RYWmxZelFnY21WaFpFWnBjbk4wU1c1MmIyTmhkR2x2YmtGU1FpaDFkbVZqTkNrN0NnQmliMjlzSUdGdWVVbHVkbTlqWVhScGIyNUJVa0lvWW05dmJDazdZbTl2YkNCaGJHeEpiblp2WTJGMGFXOXVjMEZTUWloaWIyOXNLVHRpYjI5c0lHRnNiRWx1ZG05allYUnBiMjV6UlhGMVlXeEJVa0lvWW05dmJDazdDZ0IyYjJsa0lITjFZbWR5YjNWd1FtRnljbWxsY2lncE8zWnZhV1FnYzNWaVozSnZkWEJOWlcxdmNubENZWEp5YVdWeUtDazdkbTlwWkNCemRXSm5jbTkxY0UxbGJXOXllVUpoY25KcFpYSkNkV1ptWlhJb0tUdDJiMmxrSUhOMVltZHliM1Z3VFdWdGIzSjVRbUZ5Y21sbGNrbHRZV2RsS0NrN1ltOXZiQ0J6ZFdKbmNtOTFjRVZzWldOMEtDazdZbTl2YkNBZ0lITjFZbWR5YjNWd1FXeHNLR0p2YjJ3cE93cGliMjlzSUNBZ2MzVmlaM0p2ZFhCQmJua29ZbTl2YkNrN0NuVjJaV00wSUNCemRXSm5jbTkxY0VKaGJHeHZkQ2hpYjI5c0tUc0tZbTl2YkNBZ0lITjFZbWR5YjNWd1NXNTJaWEp6WlVKaGJHeHZkQ2gxZG1Wak5DazdDbUp2YjJ3Z0lDQnpkV0puY205MWNFSmhiR3h2ZEVKcGRFVjRkSEpoWTNRb2RYWmxZelFzSUhWcGJuUXBPd3AxYVc1MElDQWdjM1ZpWjNKdmRYQkNZV3hzYjNSQ2FYUkRiM1Z1ZENoMWRtVmpOQ2s3Q25WcGJuUWdJQ0J6ZFdKbmNtOTFjRUpoYkd4dmRFbHVZMngxYzJsMlpVSnBkRU52ZFc1MEtIVjJaV00wS1RzS2RXbHVkQ0FnSUhOMVltZHliM1Z3UW1Gc2JHOTBSWGhqYkhWemFYWmxRbWwwUTI5MWJuUW9kWFpsWXpRcE93cDFhVzUwSUNBZ2MzVmlaM0p2ZFhCQ1lXeHNiM1JHYVc1a1RGTkNLSFYyWldNMEtUc0tkV2x1ZENBZ0lITjFZbWR5YjNWd1FtRnNiRzkwUm1sdVpFMVRRaWgxZG1Wak5DazdDZ0JCa0l3Q0M1Y1dCSWNBQUNLSEFBQkhod0FBYTRjQUFJNkhBQUMwaHdBQTM0Y0FBQXlJQUFBbGlBQUFQb2dBQUZlSUFBQndpQUFBaVlnQUFLR0lBQUM2aUFBQTNJZ0FBUDZJQUFBZ2lRQUFRb2tBQUdTSkFBQ0ZpUUFBcDRrQUFNbUpBQURyaVFBQURZb0FBQytLQUFCUmlnQUFjb29BQUpTS0FBQzhpZ0FBNUlvQUFBeUxBQUEwaXdBQVhJc0FBSU9MQUFDcml3QUExSXNBQVB5TEFBQWlqQUFBU0l3QUFHbU1BQUNkakFBQTBZd0FBQVdOQUFBNWpRQUFiWTBBQUtDTkFBRFVqUUFBRVk0QUFFNk9BQUNMamdBQXlJNEFBQVdQQUFCQmp3QUFmbzhBQUx1UEFBRDRqd0FBTlpBQUFIS1FBQUN2a0FBQTY1QUFBR0p2YjJ3Z0lDQnpkV0puY205MWNFRnNiRVZ4ZFdGc0tDVnpLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRUp5YjJGa1kyRnpkQ2dsY3l3Z2RXbHVkQ2s3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJDY205aFpHTmhjM1JHYVhKemRDZ2xjeWs3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJUYUhWbVpteGxLQ1Z6TENCMWFXNTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRk5vZFdabWJHVlliM0lvSlhNc0lIVnBiblFwT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3VTJoMVptWnNaVlZ3S0NWekxDQjFhVzUwSUdSbGJIUmhLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRk5vZFdabWJHVkViM2R1S0NWekxDQjFhVzUwSUdSbGJIUmhLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRUZrWkNnbGN5azdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQk5kV3dvSlhNcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1RXbHVLQ1Z6S1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0UxaGVDZ2xjeWs3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJCYm1Rb0pYTXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndUM0lvSlhNcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1dHOXlLQ1Z6S1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0VsdVkyeDFjMmwyWlVGa1pDZ2xjeWs3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJKYm1Oc2RYTnBkbVZOZFd3b0pYTXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndTVzVqYkhWemFYWmxUV2x1S0NWektUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNFbHVZMngxYzJsMlpVMWhlQ2dsY3lrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCSmJtTnNkWE5wZG1WQmJtUW9KWE1wT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3U1c1amJIVnphWFpsVDNJb0pYTXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndTVzVqYkhWemFYWmxXRzl5S0NWektUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNFVjRZMngxYzJsMlpVRmtaQ2dsY3lrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCRmVHTnNkWE5wZG1WTmRXd29KWE1wT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3UlhoamJIVnphWFpsVFdsdUtDVnpLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRVY0WTJ4MWMybDJaVTFoZUNnbGN5azdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQkZlR05zZFhOcGRtVkJibVFvSlhNcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1JYaGpiSFZ6YVhabFQzSW9KWE1wT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3UlhoamJIVnphWFpsV0c5eUtDVnpLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRU5zZFhOMFpYSmxaRUZrWkNnbGN5d2dkV2x1ZENrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSTmRXd29KWE1zSUhWcGJuUXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndRMngxYzNSbGNtVmtUV2x1S0NWekxDQjFhVzUwS1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0VOc2RYTjBaWEpsWkUxaGVDZ2xjeXdnZFdsdWRDazdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQkRiSFZ6ZEdWeVpXUkJibVFvSlhNc0lIVnBiblFwT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3UTJ4MWMzUmxjbVZrVDNJb0pYTXNJSFZwYm5RcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1EyeDFjM1JsY21Wa1dHOXlLQ1Z6TENCMWFXNTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkYxWVdSQ2NtOWhaR05oYzNRb0pYTXNJSFZwYm5RcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1VYVmhaRk4zWVhCSWIzSnBlbTl1ZEdGc0tDVnpLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkYxWVdSVGQyRndWbVZ5ZEdsallXd29KWE1wT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3VVhWaFpGTjNZWEJFYVdGbmIyNWhiQ2dsY3lrN0NnQjFkbVZqTkNBZ2MzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1T1ZpZ2xjeWs3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVGa1pFNVdLQ1Z6TENCMWRtVmpOQ0JpWVd4c2IzUXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JOZFd4T1ZpZ2xjeXdnZFhabFl6UWdZbUZzYkc5MEtUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtUV2x1VGxZb0pYTXNJSFYyWldNMElHSmhiR3h2ZENrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFMWhlRTVXS0NWekxDQjFkbVZqTkNCaVlXeHNiM1FwT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSQmJtUk9WaWdsY3l3Z2RYWmxZelFnWW1Gc2JHOTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrVDNKT1ZpZ2xjeXdnZFhabFl6UWdZbUZzYkc5MEtUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtXRzl5VGxZb0pYTXNJSFYyWldNMElHSmhiR3h2ZENrN0NnQWxjeUFnSUNBZ2MzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFbHVZMngxYzJsMlpVRmtaRTVXS0NWekxDQjFkbVZqTkNCaVlXeHNiM1FwT3dvQUpYTWdJQ0FnSUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSSmJtTnNkWE5wZG1WTmRXeE9WaWdsY3l3Z2RYWmxZelFnWW1Gc2JHOTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrU1c1amJIVnphWFpsVFdsdVRsWW9KWE1zSUhWMlpXTTBJR0poYkd4dmRDazdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRWx1WTJ4MWMybDJaVTFoZUU1V0tDVnpMQ0IxZG1Wak5DQmlZV3hzYjNRcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkpibU5zZFhOcGRtVkJibVJPVmlnbGN5d2dkWFpsWXpRZ1ltRnNiRzkwS1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1NXNWpiSFZ6YVhabFQzSk9WaWdsY3l3Z2RYWmxZelFnWW1Gc2JHOTBLVHNLQUNWeklDQWdJQ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrU1c1amJIVnphWFpsV0c5eVRsWW9KWE1zSUhWMlpXTTBJR0poYkd4dmRDazdDZ0FsY3lBZ0lDQWdjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRVY0WTJ4MWMybDJaVUZrWkU1V0tDVnpMQ0IxZG1Wak5DQmlZV3hzYjNRcE93b0FKWE1nSUNBZ0lITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkZlR05zZFhOcGRtVk5kV3hPVmlnbGN5d2dkWFpsWXpRZ1ltRnNiRzkwS1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1JYaGpiSFZ6YVhabFRXbHVUbFlvSlhNc0lIVjJaV00wSUdKaGJHeHZkQ2s3Q2dBbGN5QWdJQ0FnYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVWNFkyeDFjMmwyWlUxaGVFNVdLQ1Z6TENCMWRtVmpOQ0JpWVd4c2IzUXBPd29BSlhNZ0lDQWdJSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JGZUdOc2RYTnBkbVZCYm1ST1ZpZ2xjeXdnZFhabFl6UWdZbUZzYkc5MEtUc0tBQ1Z6SUNBZ0lDQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtSWGhqYkhWemFYWmxUM0pPVmlnbGN5d2dkWFpsWXpRZ1ltRnNiRzkwS1RzS0FDVnpJQ0FnSUNCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1JYaGpiSFZ6YVhabFdHOXlUbFlvSlhNc0lIVjJaV00wSUdKaGJHeHZkQ2s3Q2dCQnNLSUNDMVpRa1FBQVZwRUFBRnVSQUFCZ2tRQUFaWkVBQUcrUkFBQjNrUUFBZjVFQUFHWnNiMkYwQUhabFl6SUFkbVZqTXdCMlpXTTBBR1pzYjJGME1UWmZkQUJtTVRaMlpXTXlBR1l4Tm5abFl6TUFaakUyZG1Wak5BQkJrS01DQ3lpZ2tRQUFwNUVBQUsyUkFBQ3prUUFBWkc5MVlteGxBR1IyWldNeUFHUjJaV016QUdSMlpXTTBBRUhBb3dJTDV3SkFrZ0FBUjVJQUFFNlNBQUJWa2dBQVhKSUFBR1NTQUFCc2tnQUFkSklBQUh5U0FBQ0FrZ0FBaHBJQUFJeVNBQUNTa2dBQW1wSUFBS0tTQUFDcWtnQUFzcElBQUxxU0FBREJrZ0FBeUpJQUFNK1NBQURZa2dBQTRKSUFBT2lTQUFEd2tnQUE5WklBQVB1U0FBQUJrd0FBQjVNQUFCQ1RBQUFZa3dBQUlKTUFBR2x1ZERoZmRBQnBPSFpsWXpJQWFUaDJaV016QUdrNGRtVmpOQUJwYm5ReE5sOTBBR2t4Tm5abFl6SUFhVEUyZG1Wak13QnBNVFoyWldNMEFHbHVkQUJwZG1Wak1nQnBkbVZqTXdCcGRtVmpOQUJwYm5RMk5GOTBBR2syTkhabFl6SUFhVFkwZG1Wak13QnBOalIyWldNMEFIVnBiblE0WDNRQWRUaDJaV015QUhVNGRtVmpNd0IxT0habFl6UUFkV2x1ZERFMlgzUUFkVEUyZG1Wak1nQjFNVFoyWldNekFIVXhOblpsWXpRQWRXbHVkQUIxZG1Wak1nQjFkbVZqTXdCMWRtVmpOQUIxYVc1ME5qUmZkQUIxTmpSMlpXTXlBSFUyTkhabFl6TUFkVFkwZG1Wak5BQkJzS1lDQy9TOEJVQ1RBQUJGa3dBQVM1TUFBRkdUQUFCaWIyOXNBR0oyWldNeUFHSjJaV016QUdKMlpXTTBBRTl5QUVGdVpBQlliM0lBVTJoMVptWnNaVmh2Y2dCQlpHUUFUWFZzQUUxcGJnQk5ZWGdBZG05cFpDQnpkV0puY205MWNFMWxiVzl5ZVVKaGNuSnBaWEpUYUdGeVpXUW9LVHNLQUdKdmIyd2dZVzU1U1c1MmIyTmhkR2x2YmloaWIyOXNLVHRpYjI5c0lHRnNiRWx1ZG05allYUnBiMjV6S0dKdmIyd3BPMkp2YjJ3Z1lXeHNTVzUyYjJOaGRHbHZibk5GY1hWaGJDaGliMjlzS1RzS0FHWnNiMkYwSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0dac2IyRjBLVHQyWldNeUlDQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaDJaV015S1R0MlpXTXpJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwRk5SQ2gyWldNektUdDJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMEZOUkNoMlpXTTBLVHRwYm5RZ0lDQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaHBiblFwTzJsMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elFVMUVLR2wyWldNeUtUdHBkbVZqTXlCdGFXNUpiblp2WTJGMGFXOXVjMEZOUkNocGRtVmpNeWs3YVhabFl6UWdiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUW9hWFpsWXpRcE8zVnBiblFnSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0hWcGJuUXBPM1YyWldNeUlHMXBia2x1ZG05allYUnBiMjV6UVUxRUtIVjJaV015S1R0MWRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwRk5SQ2gxZG1Wak15azdkWFpsWXpRZ2JXbHVTVzUyYjJOaGRHbHZibk5CVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0YVc1SmJuWnZZMkYwYVc5dWMwRk5SQ2hrYjNWaWJHVXBPMlIyWldNeUlDQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaGtkbVZqTWlrN1pIWmxZek1nSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUW9aSFpsWXpRcE8ybHVkRFkwWDNRZ2JXbHVTVzUyYjJOaGRHbHZibk5CVFVRb2FXNTBOalJmZENrN2FUWTBkbVZqTWlCdGFXNUpiblp2WTJGMGFXOXVjMEZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0drMk5IWmxZek1wTzJrMk5IWmxZelFnYldsdVNXNTJiMk5oZEdsdmJuTkJUVVFvYVRZMGRtVmpOQ2s3ZFdsdWREWTBYM1FnYldsdVNXNTJiMk5oZEdsdmJuTkJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZeklwTzNVMk5IWmxZek1nSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZek1wTzNVMk5IWmxZelFnSUcxcGJrbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCdGFXNUpiblp2WTJGMGFXOXVjMEZOUkNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFwYmtsdWRtOWpZWFJwYjI1elFVMUVLR1l4Tm5abFl6UXBPMmx1ZERFMlgzUWdiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUW9hVzUwTVRaZmRDazdhVEUyZG1Wak1pQnRhVzVKYm5adlkyRjBhVzl1YzBGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMXBia2x1ZG05allYUnBiMjV6UVUxRUtHa3hOblpsWXpNcE8ya3hOblpsWXpRZ2JXbHVTVzUyYjJOaGRHbHZibk5CVFVRb2FURTJkbVZqTkNrN2RXbHVkREUyWDNRZ2JXbHVTVzUyYjJOaGRHbHZibk5CVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpJcE8zVXhOblpsWXpNZ0lHMXBia2x1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpNcE8zVXhOblpsWXpRZ0lHMXBia2x1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaG1iRzloZENrN2RtVmpNaUFnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZeklwTzNabFl6TWdJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMlpXTXpLVHQyWldNMElDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZENrN2FYWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpOQ2s3ZFdsdWRDQWdiV2x1U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0hWcGJuUXBPM1YyWldNeUlHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNektUdDFkbVZqTkNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpRcE8yUnZkV0pzWlNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwYm5RMk5GOTBLVHRwTmpSMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTTBLVHQxYVc1ME5qUmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkRFkwWDNRcE8zVTJOSFpsWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RUWTBkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV2x1U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBiblF4Tmw5MEtUdHBNVFoyWldNeUlHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTXlLVHRwTVRaMlpXTXpJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaG1iRzloZENrN2RtVmpNaUFnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZeklwTzNabFl6TWdJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNoMlpXTXpLVHQyWldNMElDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZENrN2FYWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpOQ2s3ZFdsdWRDQWdiV2x1U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0hWcGJuUXBPM1YyWldNeUlHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNektUdDFkbVZqTkNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpRcE8yUnZkV0pzWlNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwYm5RMk5GOTBLVHRwTmpSMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTTBLVHQxYVc1ME5qUmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkRFkwWDNRcE8zVTJOSFpsWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RUWTBkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV2x1U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBiblF4Tmw5MEtUdHBNVFoyWldNeUlHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTXlLVHRwTVRaMlpXTXpJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0dac2IyRjBLVHQyWldNeUlDQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaDJaV015S1R0MlpXTXpJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwRk5SQ2gyWldNektUdDJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkNoMlpXTTBLVHRwYm5RZ0lDQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaHBiblFwTzJsMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elFVMUVLR2wyWldNeUtUdHBkbVZqTXlCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkNocGRtVmpNeWs3YVhabFl6UWdiV0Y0U1c1MmIyTmhkR2x2Ym5OQlRVUW9hWFpsWXpRcE8zVnBiblFnSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0hWcGJuUXBPM1YyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtIVjJaV015S1R0MWRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwRk5SQ2gxZG1Wak15azdkWFpsWXpRZ2JXRjRTVzUyYjJOaGRHbHZibk5CVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0WVhoSmJuWnZZMkYwYVc5dWMwRk5SQ2hrYjNWaWJHVXBPMlIyWldNeUlDQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaGtkbVZqTWlrN1pIWmxZek1nSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OQlRVUW9aSFpsWXpRcE8ybHVkRFkwWDNRZ2JXRjRTVzUyYjJOaGRHbHZibk5CVFVRb2FXNTBOalJmZENrN2FUWTBkbVZqTWlCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0drMk5IWmxZek1wTzJrMk5IWmxZelFnYldGNFNXNTJiMk5oZEdsdmJuTkJUVVFvYVRZMGRtVmpOQ2s3ZFdsdWREWTBYM1FnYldGNFNXNTJiMk5oZEdsdmJuTkJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZeklwTzNVMk5IWmxZek1nSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZek1wTzNVMk5IWmxZelFnSUcxaGVFbHVkbTlqWVhScGIyNXpRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OQlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFoZUVsdWRtOWpZWFJwYjI1elFVMUVLR1l4Tm5abFl6UXBPMmx1ZERFMlgzUWdiV0Y0U1c1MmIyTmhkR2x2Ym5OQlRVUW9hVzUwTVRaZmRDazdhVEUyZG1Wak1pQnRZWGhKYm5adlkyRjBhVzl1YzBGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtHa3hOblpsWXpNcE8ya3hOblpsWXpRZ2JXRjRTVzUyYjJOaGRHbHZibk5CVFVRb2FURTJkbVZqTkNrN2RXbHVkREUyWDNRZ2JXRjRTVzUyYjJOaGRHbHZibk5CVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpJcE8zVXhOblpsWXpNZ0lHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpNcE8zVXhOblpsWXpRZ0lHMWhlRWx1ZG05allYUnBiMjV6UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaG1iRzloZENrN2RtVmpNaUFnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZeklwTzNabFl6TWdJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMlpXTXpLVHQyWldNMElDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZENrN2FYWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpOQ2s3ZFdsdWRDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0hWcGJuUXBPM1YyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNektUdDFkbVZqTkNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpRcE8yUnZkV0pzWlNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwYm5RMk5GOTBLVHRwTmpSMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTTBLVHQxYVc1ME5qUmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkRFkwWDNRcE8zVTJOSFpsWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RUWTBkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBiblF4Tmw5MEtUdHBNVFoyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTXlLVHRwTVRaMlpXTXpJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaG1iRzloZENrN2RtVmpNaUFnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZeklwTzNabFl6TWdJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNoMlpXTXpLVHQyWldNMElDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZENrN2FYWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpOQ2s3ZFdsdWRDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0hWcGJuUXBPM1YyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNektUdDFkbVZqTkNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpRcE8yUnZkV0pzWlNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwYm5RMk5GOTBLVHRwTmpSMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV015S1R0cE5qUjJaV016SUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTTBLVHQxYVc1ME5qUmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkRFkwWDNRcE8zVTJOSFpsWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RUWTBkbVZqTXlrN2RUWTBkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBiblF4Tmw5MEtUdHBNVFoyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTXlLVHRwTVRaMlpXTXpJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNMEtUdDFhVzUwTVRaZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFRFMmRtVmpNeWs3ZFRFMmRtVmpOQ0FnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpRcE8yWnNiMkYwSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0dac2IyRjBLVHQyWldNeUlDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaDJaV015S1R0MlpXTXpJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gyWldNektUdDJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMEZOUkNoMlpXTTBLVHRwYm5RZ0lDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaHBiblFwTzJsMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLR2wyWldNeUtUdHBkbVZqTXlCaFpHUkpiblp2WTJGMGFXOXVjMEZOUkNocGRtVmpNeWs3YVhabFl6UWdZV1JrU1c1MmIyTmhkR2x2Ym5OQlRVUW9hWFpsWXpRcE8zVnBiblFnSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0hWcGJuUXBPM1YyWldNeUlHRmtaRWx1ZG05allYUnBiMjV6UVUxRUtIVjJaV015S1R0MWRtVmpNeUJoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gxZG1Wak15azdkWFpsWXpRZ1lXUmtTVzUyYjJOaGRHbHZibk5CVFVRb2RYWmxZelFwTzJSdmRXSnNaU0FnWVdSa1NXNTJiMk5oZEdsdmJuTkJUVVFvWkc5MVlteGxLVHRrZG1Wak1pQWdJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLR1IyWldNeUtUdGtkbVZqTXlBZ0lHRmtaRWx1ZG05allYUnBiMjV6UVUxRUtHUjJaV016S1R0a2RtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0dSMlpXTTBLVHRwYm5RMk5GOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLR2x1ZERZMFgzUXBPMmsyTkhabFl6SWdZV1JrU1c1MmIyTmhkR2x2Ym5OQlRVUW9hVFkwZG1Wak1pazdhVFkwZG1Wak15QmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHRmtaRWx1ZG05allYUnBiMjV6UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHRmtaRWx1ZG05allYUnBiMjV6UVUxRUtIVnBiblEyTkY5MEtUdDFOalIyWldNeUlDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaDFOalIyWldNeUtUdDFOalIyWldNeklDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaDFOalIyWldNektUdDFOalIyWldNMElDQmhaR1JKYm5adlkyRjBhVzl1YzBGTlJDaDFOalIyWldNMEtUdG1iRzloZERFMlgzUWdZV1JrU1c1MmIyTmhkR2x2Ym5OQlRVUW9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTkJUVVFvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCaFpHUkpiblp2WTJGMGFXOXVjMEZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUdGa1pFbHVkbTlqWVhScGIyNXpRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkJUVVFvYVRFMmRtVmpNaWs3YVRFMmRtVmpNeUJoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2hwTVRaMlpXTXpLVHRwTVRaMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLR2t4Tm5abFl6UXBPM1ZwYm5ReE5sOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elFVMUVLSFZwYm5ReE5sOTBLVHQxTVRaMlpXTXlJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gxTVRaMlpXTXlLVHQxTVRaMlpXTXpJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gxTVRaMlpXTXpLVHQxTVRaMlpXTTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwRk5SQ2gxTVRaMlpXTTBLVHRtYkc5aGRDQmhaR1JKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvWm14dllYUXBPM1psWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gyWldNeUtUdDJaV016SUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9kbVZqTXlrN2RtVmpOQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIWmxZelFwTzJsdWRDQWdJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNocGJuUXBPMmwyWldNeUlHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2hwZG1Wak1pazdhWFpsWXpNZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2wyWldNektUdHBkbVZqTkNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9hWFpsWXpRcE8zVnBiblFnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaDFhVzUwS1R0MWRtVmpNaUJoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RYWmxZeklwTzNWMlpXTXpJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMWRtVmpNeWs3ZFhabFl6UWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0hWMlpXTTBLVHRrYjNWaWJHVWdJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoa2IzVmliR1VwTzJSMlpXTXlJQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHUjJaV015S1R0a2RtVmpNeUFnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaGtkbVZqTXlrN1pIWmxZelFnSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9aSFpsWXpRcE8ybHVkRFkwWDNRZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2x1ZERZMFgzUXBPMmsyTkhabFl6SWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0drMk5IWmxZeklwTzJrMk5IWmxZek1nWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHazJOSFpsWXpNcE8yazJOSFpsWXpRZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2syTkhabFl6UXBPM1ZwYm5RMk5GOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMWFXNTBOalJmZENrN2RUWTBkbVZqTWlBZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLSFUyTkhabFl6SXBPM1UyTkhabFl6TWdJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUW9kVFkwZG1Wak5DazdabXh2WVhReE5sOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQmhaR1JKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNUJUVVFvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYmtGTlJDaG1NVFoyWldNektUdG1NVFoyWldNMElDQWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0dZeE5uWmxZelFwTzJsdWRERTJYM1FnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHbHVkREUyWDNRcE8ya3hOblpsWXpJZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVFVMUVLR2t4Tm5abFl6SXBPMmt4Tm5abFl6TWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFS0dreE5uWmxZek1wTzJreE5uWmxZelFnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxYVc1ME1UWmZkQ2s3ZFRFMmRtVmpNaUFnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1UVUxRUtIVXhOblpsWXpJcE8zVXhOblpsWXpNZ0lHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrRk5SQ2gxTVRaMlpXTXpLVHQxTVRaMlpXTTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVCVFVRb2RURTJkbVZqTkNrN1pteHZZWFFnWVdSa1NXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtHWnNiMkYwS1R0MlpXTXlJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RtVmpNaWs3ZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0habFl6TXBPM1psWXpRZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gyWldNMEtUdHBiblFnSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9hVzUwS1R0cGRtVmpNaUJoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2FYWmxZeklwTzJsMlpXTXpJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocGRtVmpNeWs3YVhabFl6UWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0dsMlpXTTBLVHQxYVc1MElDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvZFdsdWRDazdkWFpsWXpJZ1lXUmtTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFYyWldNeUtUdDFkbVZqTXlCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kWFpsWXpNcE8zVjJaV00wSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaDFkbVZqTkNrN1pHOTFZbXhsSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hrZG1Wak1pazdaSFpsWXpNZ0lDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvWkhabFl6TXBPMlIyWldNMElDQWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0dSMlpXTTBLVHRwYm5RMk5GOTBJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocGJuUTJORjkwS1R0cE5qUjJaV015SUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTmpSMlpXTXpLVHRwTmpSMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE5qUjJaV00wS1R0MWFXNTBOalJmZENCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNoMU5qUjJaV015S1R0MU5qUjJaV016SUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9kVFkwZG1Wak15azdkVFkwZG1Wak5DQWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUW9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1UVUxRUtHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaG1NVFoyWldNMEtUdHBiblF4Tmw5MElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwYm5ReE5sOTBLVHRwTVRaMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkNocE1UWjJaV015S1R0cE1UWjJaV016SUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYmtGTlJDaHBNVFoyWldNektUdHBNVFoyWldNMElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2hwTVRaMlpXTTBLVHQxYVc1ME1UWmZkQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrRk5SQ2gxTVRaMlpXTXlLVHQxTVRaMlpXTXpJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVCVFVRb2RURTJkbVZqTXlrN2RURTJkbVZqTkNBZ1lXUmtTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaG1iRzloZENrN2RtVmpNaUFnYldsdVNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0habFl6SXBPM1psWXpNZ0lHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDJaV016S1R0MlpXTTBJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXbHVTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHbHVkQ2s3YVhabFl6SWdiV2x1U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR2wyWldNeUtUdHBkbVZqTXlCdGFXNUpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2hwZG1Wak5DazdkV2x1ZENBZ2JXbHVTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXbHVTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVjJaV016S1R0MWRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFhabFl6UXBPMlJ2ZFdKc1pTQnRhVzVKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXbHVTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHUjJaV015S1R0a2RtVmpNeUFnYldsdVNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdiV2x1U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBiblEyTkY5MEtUdHBOalIyWldNeUlHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNMEtUdDFhVzUwTmpSZmRDQnRhVzVKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJRzFwYmtsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0FnYldsdVNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCdGFXNUpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV2x1U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocGJuUXhObDkwS1R0cE1UWjJaV015SUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV015S1R0cE1UWjJaV016SUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV00wS1R0MWFXNTBNVFpmZENCdGFXNUpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRhVzVKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak15azdkVEUyZG1Wak5DQWdiV2x1U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJ0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdiV2x1U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdiV2x1U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJ0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXbHVTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdiV2x1U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQnRhVzVKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnYldsdVNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J0YVc1SmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdiV2x1U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCdGFXNUpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaG1iRzloZENrN2RtVmpNaUFnYldGNFNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0habFl6SXBPM1psWXpNZ0lHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDJaV016S1R0MlpXTTBJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZG1Wak5DazdhVzUwSUNBZ2JXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHbHVkQ2s3YVhabFl6SWdiV0Y0U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR2wyWldNeUtUdHBkbVZqTXlCdFlYaEpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2FYWmxZek1wTzJsMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2hwZG1Wak5DazdkV2x1ZENBZ2JXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ2JXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVjJaV016S1R0MWRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFhabFl6UXBPMlJ2ZFdKc1pTQnRZWGhKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ2JXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHUjJaV015S1R0a2RtVmpNeUFnYldGNFNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBiblEyTkY5MEtUdHBOalIyWldNeUlHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNMEtUdDFhVzUwTmpSZmRDQnRZWGhKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJRzFoZUVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0FnYldGNFNXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCdFlYaEpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocGJuUXhObDkwS1R0cE1UWjJaV015SUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV015S1R0cE1UWjJaV016SUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUcxaGVFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV00wS1R0MWFXNTBNVFpmZENCdFlYaEpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQnRZWGhKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak15azdkVEUyZG1Wak5DQWdiV0Y0U1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJ0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFoZUVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHMWhlRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJ0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJ0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ2JXRjRTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFoZUVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J0WVhoSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHMWhlRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUcxaGVFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaG1iRzloZENrN2RtVmpNaUFnWVdSa1NXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0habFl6SXBPM1psWXpNZ0lHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDJaV016S1R0MlpXTTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZG1Wak5DazdhVzUwSUNBZ1lXUmtTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHbHVkQ2s3YVhabFl6SWdZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR2wyWldNeUtUdHBkbVZqTXlCaFpHUkpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2FYWmxZek1wTzJsMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2hwZG1Wak5DazdkV2x1ZENBZ1lXUmtTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxZG1Wak1pazdkWFpsWXpNZ1lXUmtTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtIVjJaV016S1R0MWRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFhabFl6UXBPMlJ2ZFdKc1pTQmhaR1JKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9aRzkxWW14bEtUdGtkbVZqTWlBZ1lXUmtTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUtHUjJaV015S1R0a2RtVmpNeUFnWVdSa1NXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0dSMlpXTXpLVHRrZG1Wak5DQWdZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1IyWldNMEtUdHBiblEyTkY5MElHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBiblEyTkY5MEtUdHBOalIyWldNeUlHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNektUdHBOalIyWldNMElHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNMEtUdDFhVzUwTmpSZmRDQmhaR1JKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kV2x1ZERZMFgzUXBPM1UyTkhabFl6SWdJR0ZrWkVsdWRtOWpZWFJwYjI1elRtOXVWVzVwWm05eWJVRk5SQ2gxTmpSMlpXTXlLVHQxTmpSMlpXTXpJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0FnWVdSa1NXNTJiMk5oZEdsdmJuTk9iMjVWYm1sbWIzSnRRVTFFS0hVMk5IWmxZelFwTzJac2IyRjBNVFpmZENCaFpHUkpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNobU1UWjJaV00wS1R0cGJuUXhObDkwSUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocGJuUXhObDkwS1R0cE1UWjJaV015SUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV015S1R0cE1UWjJaV016SUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV016S1R0cE1UWjJaV00wSUdGa1pFbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliVUZOUkNocE1UWjJaV00wS1R0MWFXNTBNVFpmZENCaFpHUkpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRb2RXbHVkREUyWDNRcE8zVXhOblpsWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJDaDFNVFoyWldNeUtUdDFNVFoyWldNeklDQmhaR1JKYm5adlkyRjBhVzl1YzA1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak15azdkVEUyZG1Wak5DQWdZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ1lXUmtTVzUyYjJOaGRHbHZibk5KYm1Oc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQmhaR1JKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJR0ZrWkVsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQmhaR1JKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwbHVZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHRmtaRWx1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWm14dllYUXBPM1psWXpJZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZG1Wak1pazdkbVZqTXlBZ1lXUmtTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2gyWldNektUdDJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFpsWXpRcE8ybHVkQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9hVzUwS1R0cGRtVmpNaUJoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV015S1R0cGRtVmpNeUJoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV016S1R0cGRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHbDJaV00wS1R0MWFXNTBJQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtIVnBiblFwTzNWMlpXTXlJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZeklwTzNWMlpXTXpJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZek1wTzNWMlpXTTBJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb2RYWmxZelFwTzJSdmRXSnNaU0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHUnZkV0pzWlNrN1pIWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aSFpsWXpJcE8yUjJaV016SUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLR1IyWldNektUdGtkbVZqTkNBZ1lXUmtTVzUyYjJOaGRHbHZibk5GZUdOc2RYTnBkbVZUWTJGdVRtOXVWVzVwWm05eWJVRk5SQ2hrZG1Wak5DazdhVzUwTmpSZmRDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWREWTBYM1FwTzJrMk5IWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBOalIyWldNeUtUdHBOalIyWldNeklHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRZMGRtVmpNeWs3YVRZMGRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHazJOSFpsWXpRcE8zVnBiblEyTkY5MElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWREWTBYM1FwTzNVMk5IWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVFkwZG1Wak1pazdkVFkwZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU5qUjJaV016S1R0MU5qUjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFUyTkhabFl6UXBPMlpzYjJGME1UWmZkQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJR0ZrWkVsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTFCVFVRb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9aakUyZG1Wak5DazdhVzUwTVRaZmRDQmhaR1JKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNU9iMjVWYm1sbWIzSnRRVTFFS0dsdWRERTJYM1FwTzJreE5uWmxZeklnWVdSa1NXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlVGTlJDaHBNVFoyWldNeUtUdHBNVFoyWldNeklHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0JoWkdSSmJuWnZZMkYwYVc5dWMwVjRZMngxYzJsMlpWTmpZVzVPYjI1VmJtbG1iM0p0UVUxRUtHa3hOblpsWXpRcE8zVnBiblF4Tmw5MElHRmtaRWx1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJrNXZibFZ1YVdadmNtMUJUVVFvZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnSUdGa1pFbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUW9kVEUyZG1Wak1pazdkVEUyZG1Wak15QWdZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkNoMU1UWjJaV016S1R0MU1UWjJaV00wSUNCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVLSFV4Tm5abFl6UXBPMlpzYjJGMElITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwRk5SQ2htYkc5aGRDd2dkWFpsWXpRcE8zWmxZeklnSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzBGTlJDaDJaV015TENBZ2RYWmxZelFwTzNabFl6TWdJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkNoMlpXTXpMQ0FnZFhabFl6UXBPM1psWXpRZ0lITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwRk5SQ2gyWldNMExDQWdkWFpsWXpRcE8ybHVkQ0FnSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzBGTlJDaHBiblFzSUNBZ2RYWmxZelFwTzJsMlpXTXlJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkNocGRtVmpNaXdnZFhabFl6UXBPMmwyWldNeklITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwRk5SQ2hwZG1Wak15d2dkWFpsWXpRcE8ybDJaV00wSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzBGTlJDaHBkbVZqTkN3Z2RYWmxZelFwTzNWcGJuUWdJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkNoMWFXNTBMQ0FnZFhabFl6UXBPM1YyWldNeUlITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwRk5SQ2gxZG1Wak1pd2dkWFpsWXpRcE8zVjJaV016SUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzBGTlJDaDFkbVZqTXl3Z2RYWmxZelFwTzNWMlpXTTBJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkNoMWRtVmpOQ3dnZFhabFl6UXBPMlpzYjJGMElITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwMWhjMnRsWkVGTlJDaG1iRzloZEN3Z2RYWmxZek1wTzNabFl6SWdJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMDFoYzJ0bFpFRk5SQ2gyWldNeUxDQWdkWFpsWXpNcE8zWmxZek1nSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzAxaGMydGxaRUZOUkNoMlpXTXpMQ0FnZFhabFl6TXBPM1psWXpRZ0lITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwMWhjMnRsWkVGTlJDaDJaV00wTENBZ2RYWmxZek1wTzJsdWRDQWdJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMDFoYzJ0bFpFRk5SQ2hwYm5Rc0lDQWdkWFpsWXpNcE8ybDJaV015SUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzAxaGMydGxaRUZOUkNocGRtVmpNaXdnZFhabFl6TXBPMmwyWldNeklITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwMWhjMnRsWkVGTlJDaHBkbVZqTXl3Z2RYWmxZek1wTzJsMlpXTTBJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMDFoYzJ0bFpFRk5SQ2hwZG1Wak5Dd2dkWFpsWXpNcE8zVnBiblFnSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzAxaGMydGxaRUZOUkNoMWFXNTBMQ0FnZFhabFl6TXBPM1YyWldNeUlITjNhWHA2YkdWSmJuWnZZMkYwYVc5dWMwMWhjMnRsWkVGTlJDaDFkbVZqTWl3Z2RYWmxZek1wTzNWMlpXTXpJSE4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMDFoYzJ0bFpFRk5SQ2gxZG1Wak15d2dkWFpsWXpNcE8zVjJaV00wSUhOM2FYcDZiR1ZKYm5adlkyRjBhVzl1YzAxaGMydGxaRUZOUkNoMWRtVmpOQ3dnZFhabFl6TXBPMlpzYjJGMElIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaG1iRzloZEN3Z1pteHZZWFFzSUhWcGJuUXBPM1psWXpJZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDJaV015TENBZ2RtVmpNaXdnSUhWcGJuUXBPM1psWXpNZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDJaV016TENBZ2RtVmpNeXdnSUhWcGJuUXBPM1psWXpRZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDJaV00wTENBZ2RtVmpOQ3dnSUhWcGJuUXBPMmx1ZENBZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaHBiblFzSUNBZ2FXNTBMQ0FnSUhWcGJuUXBPMmwyWldNeUlIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaHBkbVZqTWl3Z2FYWmxZeklzSUhWcGJuUXBPMmwyWldNeklIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaHBkbVZqTXl3Z2FYWmxZek1zSUhWcGJuUXBPMmwyWldNMElIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaHBkbVZqTkN3Z2FYWmxZelFzSUhWcGJuUXBPM1ZwYm5RZ0lIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDFhVzUwTENBZ2RXbHVkQ3dnSUhWcGJuUXBPM1YyWldNeUlIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDFkbVZqTWl3Z2RYWmxZeklzSUhWcGJuUXBPM1YyWldNeklIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDFkbVZqTXl3Z2RYWmxZek1zSUhWcGJuUXBPM1YyWldNMElIZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJDaDFkbVZqTkN3Z2RYWmxZelFzSUhWcGJuUXBPM1ZwYm5RZ2JXSmpiblJCVFVRb2RXbHVkRFkwWDNRcE93b0FabXh2WVhRZ1kzVmlaVVpoWTJWSmJtUmxlRUZOUkNoMlpXTXpLVHQyWldNeUlDQmpkV0psUm1GalpVTnZiM0prUVUxRUtIWmxZek1wTzNWcGJuUTJORjkwSUhScGJXVkJUVVFvS1R0cGJpQnBiblFnWjJ4ZlUwbE5SRWR5YjNWd1UybDZaVUZOUkRzS0FIVnBiblFnWm5KaFoyMWxiblJOWVhOclJtVjBZMmhCVFVRb2MyRnRjR3hsY2pKRVRWTXNJQ0FnSUNBZ0lHbDJaV015S1R0MWFXNTBJR1p5WVdkdFpXNTBUV0Z6YTBabGRHTm9RVTFFS0dsellXMXdiR1Z5TWtSTlV5d2dJQ0FnSUNCcGRtVmpNaWs3ZFdsdWRDQm1jbUZuYldWdWRFMWhjMnRHWlhSamFFRk5SQ2gxYzJGdGNHeGxjakpFVFZNc0lDQWdJQ0FnYVhabFl6SXBPM1ZwYm5RZ1puSmhaMjFsYm5STllYTnJSbVYwWTJoQlRVUW9jMkZ0Y0d4bGNqSkVUVk5CY25KaGVTd2dJR2wyWldNektUdDFhVzUwSUdaeVlXZHRaVzUwVFdGemEwWmxkR05vUVUxRUtHbHpZVzF3YkdWeU1rUk5VMEZ5Y21GNUxDQnBkbVZqTXlrN2RXbHVkQ0JtY21GbmJXVnVkRTFoYzJ0R1pYUmphRUZOUkNoMWMyRnRjR3hsY2pKRVRWTkJjbkpoZVN3Z2FYWmxZek1wTzNabFl6UWdJR1p5WVdkdFpXNTBSbVYwWTJoQlRVUW9jMkZ0Y0d4bGNqSkVUVk1zSUNBZ0lDQWdJR2wyWldNeUxDQjFhVzUwS1R0cGRtVmpOQ0JtY21GbmJXVnVkRVpsZEdOb1FVMUVLR2x6WVcxd2JHVnlNa1JOVXl3Z0lDQWdJQ0JwZG1Wak1pd2dkV2x1ZENrN2RYWmxZelFnWm5KaFoyMWxiblJHWlhSamFFRk5SQ2gxYzJGdGNHeGxjakpFVFZNc0lDQWdJQ0FnYVhabFl6SXNJSFZwYm5RcE8zWmxZelFnSUdaeVlXZHRaVzUwUm1WMFkyaEJUVVFvYzJGdGNHeGxjakpFVFZOQmNuSmhlU3dnSUdsMlpXTXpMQ0IxYVc1MEtUdHBkbVZqTkNCbWNtRm5iV1Z1ZEVabGRHTm9RVTFFS0dsellXMXdiR1Z5TWtSTlUwRnljbUY1TENCcGRtVmpNeXdnZFdsdWRDazdkWFpsWXpRZ1puSmhaMjFsYm5SR1pYUmphRUZOUkNoMWMyRnRjR3hsY2pKRVRWTkJjbkpoZVN3Z2FYWmxZek1zSUhWcGJuUXBPd29BZFdsdWRDQmpiM1Z1ZEV4bFlXUnBibWRhWlhKdmN5aDFhVzUwS1R0MWRtVmpNaUJqYjNWdWRFeGxZV1JwYm1kYVpYSnZjeWgxZG1Wak1pazdkWFpsWXpNZ1kyOTFiblJNWldGa2FXNW5XbVZ5YjNNb2RYWmxZek1wTzNWMlpXTTBJR052ZFc1MFRHVmhaR2x1WjFwbGNtOXpLSFYyWldNMEtUdDFhVzUwSUdOdmRXNTBWSEpoYVd4cGJtZGFaWEp2Y3loMWFXNTBLVHQxZG1Wak1pQmpiM1Z1ZEZSeVlXbHNhVzVuV21WeWIzTW9kWFpsWXpJcE8zVjJaV016SUdOdmRXNTBWSEpoYVd4cGJtZGFaWEp2Y3loMWRtVmpNeWs3ZFhabFl6UWdZMjkxYm5SVWNtRnBiR2x1WjFwbGNtOXpLSFYyWldNMEtUdDFhVzUwSUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNocGJuUXNJR2x1ZENrN2RYWmxZeklnWVdKemIyeDFkR1ZFYVdabVpYSmxibU5sS0dsMlpXTXlMQ0JwZG1Wak1pazdkWFpsWXpNZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHbDJaV016TENCcGRtVmpNeWs3ZFhabFl6UWdZV0p6YjJ4MWRHVkVhV1ptWlhKbGJtTmxLR2wyWldNMExDQnBkbVZqTkNrN2RXbHVkREUyWDNRZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHbHVkREUyWDNRc0lHbHVkREUyWDNRcE8zVXhOblpsWXpJZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHa3hOblpsWXpJc0lHa3hOblpsWXpJcE8zVXhOblpsWXpNZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHa3hOblpsWXpNc0lHa3hOblpsWXpNcE8zVXhOblpsWXpRZ1lXSnpiMngxZEdWRWFXWm1aWEpsYm1ObEtHa3hOblpsWXpRc0lHa3hOblpsWXpRcE8zVnBiblEyTkY5MElHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpTaHBiblEyTkY5MExDQnBiblEyTkY5MEtUdDFOalIyWldNeUlHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpTaHBOalIyWldNeUxDQnBOalIyWldNeUtUdDFOalIyWldNeklHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpTaHBOalIyWldNekxDQnBOalIyWldNektUdDFOalIyWldNMElHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpTaHBOalIyWldNMExDQnBOalIyWldNMEtUdDFhVzUwSUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNoMWFXNTBMQ0IxYVc1MEtUdDFkbVZqTWlCaFluTnZiSFYwWlVScFptWmxjbVZ1WTJVb2RYWmxZeklzSUhWMlpXTXlLVHQxZG1Wak15QmhZbk52YkhWMFpVUnBabVpsY21WdVkyVW9kWFpsWXpNc0lIVjJaV016S1R0MWRtVmpOQ0JoWW5OdmJIVjBaVVJwWm1abGNtVnVZMlVvZFhabFl6UXNJSFYyWldNMEtUdDFhVzUwTVRaZmRDQmhZbk52YkhWMFpVUnBabVpsY21WdVkyVW9kV2x1ZERFMlgzUXNJSFZwYm5ReE5sOTBLVHQxTVRaMlpXTXlJR0ZpYzI5c2RYUmxSR2xtWm1WeVpXNWpaU2gxTVRaMlpXTXlMQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJR0ZpYzI5c2RYUmxSR2xtWm1WeVpXNWpaU2gxTVRaMlpXTXpMQ0IxTVRaMlpXTXpLVHQxTVRaMlpXTTBJR0ZpYzI5c2RYUmxSR2xtWm1WeVpXNWpaU2gxTVRaMlpXTTBMQ0IxTVRaMlpXTTBLVHQxYVc1ME5qUmZkQ0JoWW5OdmJIVjBaVVJwWm1abGNtVnVZMlVvZFdsdWREWTBYM1FzSUhWcGJuUTJORjkwS1R0MU5qUjJaV015SUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNoMU5qUjJaV015TENCMU5qUjJaV015S1R0MU5qUjJaV016SUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNoMU5qUjJaV016TENCMU5qUjJaV016S1R0MU5qUjJaV00wSUdGaWMyOXNkWFJsUkdsbVptVnlaVzVqWlNoMU5qUjJaV00wTENCMU5qUjJaV00wS1R0cGJuUWdZV1JrVTJGMGRYSmhkR1VvYVc1MExDQnBiblFwTzJsMlpXTXlJR0ZrWkZOaGRIVnlZWFJsS0dsMlpXTXlMQ0JwZG1Wak1pazdhWFpsWXpNZ1lXUmtVMkYwZFhKaGRHVW9hWFpsWXpNc0lHbDJaV016S1R0cGRtVmpOQ0JoWkdSVFlYUjFjbUYwWlNocGRtVmpOQ3dnYVhabFl6UXBPMmx1ZERFMlgzUWdZV1JrVTJGMGRYSmhkR1VvYVc1ME1UWmZkQ3dnYVc1ME1UWmZkQ2s3YVRFMmRtVmpNaUJoWkdSVFlYUjFjbUYwWlNocE1UWjJaV015TENCcE1UWjJaV015S1R0cE1UWjJaV016SUdGa1pGTmhkSFZ5WVhSbEtHa3hOblpsWXpNc0lHa3hOblpsWXpNcE8ya3hOblpsWXpRZ1lXUmtVMkYwZFhKaGRHVW9hVEUyZG1Wak5Dd2dhVEUyZG1Wak5DazdhVzUwTmpSZmRDQmhaR1JUWVhSMWNtRjBaU2hwYm5RMk5GOTBMQ0JwYm5RMk5GOTBLVHRwTmpSMlpXTXlJR0ZrWkZOaGRIVnlZWFJsS0drMk5IWmxZeklzSUdrMk5IWmxZeklwTzJrMk5IWmxZek1nWVdSa1UyRjBkWEpoZEdVb2FUWTBkbVZqTXl3Z2FUWTBkbVZqTXlrN2FUWTBkbVZqTkNCaFpHUlRZWFIxY21GMFpTaHBOalIyWldNMExDQnBOalIyWldNMEtUdDFhVzUwSUdGa1pGTmhkSFZ5WVhSbEtIVnBiblFzSUhWcGJuUXBPM1YyWldNeUlHRmtaRk5oZEhWeVlYUmxLSFYyWldNeUxDQjFkbVZqTWlrN2RYWmxZek1nWVdSa1UyRjBkWEpoZEdVb2RYWmxZek1zSUhWMlpXTXpLVHQxZG1Wak5DQmhaR1JUWVhSMWNtRjBaU2gxZG1Wak5Dd2dkWFpsWXpRcE8zVnBiblF4Tmw5MElHRmtaRk5oZEhWeVlYUmxLSFZwYm5ReE5sOTBMQ0IxYVc1ME1UWmZkQ2s3ZFRFMmRtVmpNaUJoWkdSVFlYUjFjbUYwWlNoMU1UWjJaV015TENCMU1UWjJaV015S1R0MU1UWjJaV016SUdGa1pGTmhkSFZ5WVhSbEtIVXhOblpsWXpNc0lIVXhOblpsWXpNcE8zVXhOblpsWXpRZ1lXUmtVMkYwZFhKaGRHVW9kVEUyZG1Wak5Dd2dkVEUyZG1Wak5DazdkV2x1ZERZMFgzUWdZV1JrVTJGMGRYSmhkR1VvZFdsdWREWTBYM1FzSUhWcGJuUTJORjkwS1R0MU5qUjJaV015SUdGa1pGTmhkSFZ5WVhSbEtIVTJOSFpsWXpJc0lIVTJOSFpsWXpJcE8zVTJOSFpsWXpNZ1lXUmtVMkYwZFhKaGRHVW9kVFkwZG1Wak15d2dkVFkwZG1Wak15azdkVFkwZG1Wak5DQmhaR1JUWVhSMWNtRjBaU2gxTmpSMlpXTTBMQ0IxTmpSMlpXTTBLVHRwYm5RZ2MzVmlkSEpoWTNSVFlYUjFjbUYwWlNocGJuUXNJR2x1ZENrN2FYWmxZeklnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2hwZG1Wak1pd2dhWFpsWXpJcE8ybDJaV016SUhOMVluUnlZV04wVTJGMGRYSmhkR1VvYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCemRXSjBjbUZqZEZOaGRIVnlZWFJsS0dsMlpXTTBMQ0JwZG1Wak5DazdhVzUwTVRaZmRDQnpkV0owY21GamRGTmhkSFZ5WVhSbEtHbHVkREUyWDNRc0lHbHVkREUyWDNRcE8ya3hOblpsWXpJZ2MzVmlkSEpoWTNSVFlYUjFjbUYwWlNocE1UWjJaV015TENCcE1UWjJaV015S1R0cE1UWjJaV016SUhOMVluUnlZV04wVTJGMGRYSmhkR1VvYVRFMmRtVmpNeXdnYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0J6ZFdKMGNtRmpkRk5oZEhWeVlYUmxLR2t4Tm5abFl6UXNJR2t4Tm5abFl6UXBPMmx1ZERZMFgzUWdjM1ZpZEhKaFkzUlRZWFIxY21GMFpTaHBiblEyTkY5MExDQnBiblEyTkY5MEtUdHBOalIyWldNeUlITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2FUWTBkbVZqTWl3Z2FUWTBkbVZqTWlrN2FUWTBkbVZqTXlCemRXSjBjbUZqZEZOaGRIVnlZWFJsS0drMk5IWmxZek1zSUdrMk5IWmxZek1wTzJrMk5IWmxZelFnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2hwTmpSMlpXTTBMQ0JwTmpSMlpXTTBLVHQxYVc1MElITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2RXbHVkQ3dnZFdsdWRDazdkWFpsWXpJZ2MzVmlkSEpoWTNSVFlYUjFjbUYwWlNoMWRtVmpNaXdnZFhabFl6SXBPM1YyWldNeklITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2RYWmxZek1zSUhWMlpXTXpLVHQxZG1Wak5DQnpkV0owY21GamRGTmhkSFZ5WVhSbEtIVjJaV00wTENCMWRtVmpOQ2s3ZFdsdWRERTJYM1FnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2gxYVc1ME1UWmZkQ3dnZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2gxTVRaMlpXTXlMQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJSE4xWW5SeVlXTjBVMkYwZFhKaGRHVW9kVEUyZG1Wak15d2dkVEUyZG1Wak15azdkVEUyZG1Wak5DQnpkV0owY21GamRGTmhkSFZ5WVhSbEtIVXhOblpsWXpRc0lIVXhOblpsWXpRcE8zVnBiblEyTkY5MElITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2RXbHVkRFkwWDNRc0lIVnBiblEyTkY5MEtUdDFOalIyWldNeUlITjFZblJ5WVdOMFUyRjBkWEpoZEdVb2RUWTBkbVZqTWl3Z2RUWTBkbVZqTWlrN2RUWTBkbVZqTXlCemRXSjBjbUZqZEZOaGRIVnlZWFJsS0hVMk5IWmxZek1zSUhVMk5IWmxZek1wTzNVMk5IWmxZelFnYzNWaWRISmhZM1JUWVhSMWNtRjBaU2gxTmpSMlpXTTBMQ0IxTmpSMlpXTTBLVHRwYm5RZ1lYWmxjbUZuWlNocGJuUXNJR2x1ZENrN2FYWmxZeklnWVhabGNtRm5aU2hwZG1Wak1pd2dhWFpsWXpJcE8ybDJaV016SUdGMlpYSmhaMlVvYVhabFl6TXNJR2wyWldNektUdHBkbVZqTkNCaGRtVnlZV2RsS0dsMlpXTTBMQ0JwZG1Wak5DazdhVzUwTVRaZmRDQmhkbVZ5WVdkbEtHbHVkREUyWDNRc0lHbHVkREUyWDNRcE8ya3hOblpsWXpJZ1lYWmxjbUZuWlNocE1UWjJaV015TENCcE1UWjJaV015S1R0cE1UWjJaV016SUdGMlpYSmhaMlVvYVRFMmRtVmpNeXdnYVRFMmRtVmpNeWs3YVRFMmRtVmpOQ0JoZG1WeVlXZGxLR2t4Tm5abFl6UXNJR2t4Tm5abFl6UXBPMmx1ZERZMFgzUWdZWFpsY21GblpTaHBiblEyTkY5MExDQnBiblEyTkY5MEtUdHBOalIyWldNeUlHRjJaWEpoWjJVb2FUWTBkbVZqTWl3Z2FUWTBkbVZqTWlrN2FUWTBkbVZqTXlCaGRtVnlZV2RsS0drMk5IWmxZek1zSUdrMk5IWmxZek1wTzJrMk5IWmxZelFnWVhabGNtRm5aU2hwTmpSMlpXTTBMQ0JwTmpSMlpXTTBLVHQxYVc1MElHRjJaWEpoWjJVb2RXbHVkQ3dnZFdsdWRDazdkWFpsWXpJZ1lYWmxjbUZuWlNoMWRtVmpNaXdnZFhabFl6SXBPM1YyWldNeklHRjJaWEpoWjJVb2RYWmxZek1zSUhWMlpXTXpLVHQxZG1Wak5DQmhkbVZ5WVdkbEtIVjJaV00wTENCMWRtVmpOQ2s3ZFdsdWRERTJYM1FnWVhabGNtRm5aU2gxYVc1ME1UWmZkQ3dnZFdsdWRERTJYM1FwTzNVeE5uWmxZeklnWVhabGNtRm5aU2gxTVRaMlpXTXlMQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJR0YyWlhKaFoyVW9kVEUyZG1Wak15d2dkVEUyZG1Wak15azdkVEUyZG1Wak5DQmhkbVZ5WVdkbEtIVXhOblpsWXpRc0lIVXhOblpsWXpRcE8zVnBiblEyTkY5MElHRjJaWEpoWjJVb2RXbHVkRFkwWDNRc0lIVnBiblEyTkY5MEtUdDFOalIyWldNeUlHRjJaWEpoWjJVb2RUWTBkbVZqTWl3Z2RUWTBkbVZqTWlrN2RUWTBkbVZqTXlCaGRtVnlZV2RsS0hVMk5IWmxZek1zSUhVMk5IWmxZek1wTzNVMk5IWmxZelFnWVhabGNtRm5aU2gxTmpSMlpXTTBMQ0IxTmpSMlpXTTBLVHRwYm5RZ1lYWmxjbUZuWlZKdmRXNWtaV1FvYVc1MExDQnBiblFwTzJsMlpXTXlJR0YyWlhKaFoyVlNiM1Z1WkdWa0tHbDJaV015TENCcGRtVmpNaWs3YVhabFl6TWdZWFpsY21GblpWSnZkVzVrWldRb2FYWmxZek1zSUdsMlpXTXpLVHRwZG1Wak5DQmhkbVZ5WVdkbFVtOTFibVJsWkNocGRtVmpOQ3dnYVhabFl6UXBPMmx1ZERFMlgzUWdZWFpsY21GblpWSnZkVzVrWldRb2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN2FURTJkbVZqTWlCaGRtVnlZV2RsVW05MWJtUmxaQ2hwTVRaMlpXTXlMQ0JwTVRaMlpXTXlLVHRwTVRaMlpXTXpJR0YyWlhKaFoyVlNiM1Z1WkdWa0tHa3hOblpsWXpNc0lHa3hOblpsWXpNcE8ya3hOblpsWXpRZ1lYWmxjbUZuWlZKdmRXNWtaV1FvYVRFMmRtVmpOQ3dnYVRFMmRtVmpOQ2s3YVc1ME5qUmZkQ0JoZG1WeVlXZGxVbTkxYm1SbFpDaHBiblEyTkY5MExDQnBiblEyTkY5MEtUdHBOalIyWldNeUlHRjJaWEpoWjJWU2IzVnVaR1ZrS0drMk5IWmxZeklzSUdrMk5IWmxZeklwTzJrMk5IWmxZek1nWVhabGNtRm5aVkp2ZFc1a1pXUW9hVFkwZG1Wak15d2dhVFkwZG1Wak15azdhVFkwZG1Wak5DQmhkbVZ5WVdkbFVtOTFibVJsWkNocE5qUjJaV00wTENCcE5qUjJaV00wS1R0MWFXNTBJR0YyWlhKaFoyVlNiM1Z1WkdWa0tIVnBiblFzSUhWcGJuUXBPM1YyWldNeUlHRjJaWEpoWjJWU2IzVnVaR1ZrS0hWMlpXTXlMQ0IxZG1Wak1pazdkWFpsWXpNZ1lYWmxjbUZuWlZKdmRXNWtaV1FvZFhabFl6TXNJSFYyWldNektUdDFkbVZqTkNCaGRtVnlZV2RsVW05MWJtUmxaQ2gxZG1Wak5Dd2dkWFpsWXpRcE8zVnBiblF4Tmw5MElHRjJaWEpoWjJWU2IzVnVaR1ZrS0hWcGJuUXhObDkwTENCMWFXNTBNVFpmZENrN2RURTJkbVZqTWlCaGRtVnlZV2RsVW05MWJtUmxaQ2gxTVRaMlpXTXlMQ0IxTVRaMlpXTXlLVHQxTVRaMlpXTXpJR0YyWlhKaFoyVlNiM1Z1WkdWa0tIVXhOblpsWXpNc0lIVXhOblpsWXpNcE8zVXhOblpsWXpRZ1lYWmxjbUZuWlZKdmRXNWtaV1FvZFRFMmRtVmpOQ3dnZFRFMmRtVmpOQ2s3ZFdsdWREWTBYM1FnWVhabGNtRm5aVkp2ZFc1a1pXUW9kV2x1ZERZMFgzUXNJSFZwYm5RMk5GOTBLVHQxTmpSMlpXTXlJR0YyWlhKaFoyVlNiM1Z1WkdWa0tIVTJOSFpsWXpJc0lIVTJOSFpsWXpJcE8zVTJOSFpsWXpNZ1lYWmxjbUZuWlZKdmRXNWtaV1FvZFRZMGRtVmpNeXdnZFRZMGRtVmpNeWs3ZFRZMGRtVmpOQ0JoZG1WeVlXZGxVbTkxYm1SbFpDaDFOalIyWldNMExDQjFOalIyWldNMEtUdHBiblFnYlhWc2RHbHdiSGt6TW5neE5paHBiblFzSUdsdWRDazdhWFpsWXpJZ2JYVnNkR2x3Ykhrek1uZ3hOaWhwZG1Wak1pd2dhWFpsWXpJcE8ybDJaV016SUcxMWJIUnBjR3g1TXpKNE1UWW9hWFpsWXpNc0lHbDJaV016S1R0cGRtVmpOQ0J0ZFd4MGFYQnNlVE15ZURFMktHbDJaV00wTENCcGRtVmpOQ2s3ZFdsdWRDQnRkV3gwYVhCc2VUTXllREUyS0hWcGJuUXNJSFZwYm5RcE8zVjJaV015SUcxMWJIUnBjR3g1TXpKNE1UWW9kWFpsWXpJc0lIVjJaV015S1R0MWRtVmpNeUJ0ZFd4MGFYQnNlVE15ZURFMktIVjJaV016TENCMWRtVmpNeWs3ZFhabFl6UWdiWFZzZEdsd2JIa3pNbmd4TmloMWRtVmpOQ3dnZFhabFl6UXBPd29BYzNSeWRXTjBJR2RzWDFSbGVIUjFjbVZHYjI5MGNISnBiblF5UkU1V0lIdDFkbVZqTWlCaGJtTm9iM0k3ZFhabFl6SWdiMlptYzJWME8zVjJaV015SUcxaGMyczdkV2x1ZENCc2IyUTdkV2x1ZENCbmNtRnVkV3hoY21sMGVUdDlPM04wY25WamRDQm5iRjlVWlhoMGRYSmxSbTl2ZEhCeWFXNTBNMFJPVmlCN2RYWmxZek1nWVc1amFHOXlPM1YyWldNeklHOW1abk5sZER0MWRtVmpNaUJ0WVhOck8zVnBiblFnYkc5a08zVnBiblFnWjNKaGJuVnNZWEpwZEhrN2ZUdGliMjlzSUhSbGVIUjFjbVZHYjI5MGNISnBiblJPVmloellXMXdiR1Z5TWtRc0lIWmxZeklzSUdsdWRDd2dZbTl2YkN3Z2IzVjBJR2RzWDFSbGVIUjFjbVZHYjI5MGNISnBiblF5UkU1V0tUdGliMjlzSUhSbGVIUjFjbVZHYjI5MGNISnBiblJPVmloellXMXdiR1Z5TTBRc0lIWmxZek1zSUdsdWRDd2dZbTl2YkN3Z2IzVjBJR2RzWDFSbGVIUjFjbVZHYjI5MGNISnBiblF6UkU1V0tUdGliMjlzSUhSbGVIUjFjbVZHYjI5MGNISnBiblJPVmloellXMXdiR1Z5TWtRc0lIWmxZeklzSUdsdWRDd2dZbTl2YkN3Z2IzVjBJR2RzWDFSbGVIUjFjbVZHYjI5MGNISnBiblF5UkU1V0xDQm1iRzloZENrN1ltOXZiQ0IwWlhoMGRYSmxSbTl2ZEhCeWFXNTBUbFlvYzJGdGNHeGxjak5FTENCMlpXTXpMQ0JwYm5Rc0lHSnZiMndzSUc5MWRDQm5iRjlVWlhoMGRYSmxSbTl2ZEhCeWFXNTBNMFJPVml3Z1pteHZZWFFwTzJKdmIyd2dkR1Y0ZEhWeVpVWnZiM1J3Y21sdWRFTnNZVzF3VGxZb2MyRnRjR3hsY2pKRUxDQjJaV015TENCbWJHOWhkQ3dnYVc1MExDQmliMjlzTENCdmRYUWdaMnhmVkdWNGRIVnlaVVp2YjNSd2NtbHVkREpFVGxZcE8ySnZiMndnZEdWNGRIVnlaVVp2YjNSd2NtbHVkRU5zWVcxd1RsWW9jMkZ0Y0d4bGNqTkVMQ0IyWldNekxDQm1iRzloZEN3Z2FXNTBMQ0JpYjI5c0xDQnZkWFFnWjJ4ZlZHVjRkSFZ5WlVadmIzUndjbWx1ZERORVRsWXBPMkp2YjJ3Z2RHVjRkSFZ5WlVadmIzUndjbWx1ZEVOc1lXMXdUbFlvYzJGdGNHeGxjakpFTENCMlpXTXlMQ0JtYkc5aGRDd2dhVzUwTENCaWIyOXNMQ0J2ZFhRZ1oyeGZWR1Y0ZEhWeVpVWnZiM1J3Y21sdWRESkVUbFlzSUdac2IyRjBLVHRpYjI5c0lIUmxlSFIxY21WR2IyOTBjSEpwYm5SRGJHRnRjRTVXS0hOaGJYQnNaWEl6UkN3Z2RtVmpNeXdnWm14dllYUXNJR2x1ZEN3Z1ltOXZiQ3dnYjNWMElHZHNYMVJsZUhSMWNtVkdiMjkwY0hKcGJuUXpSRTVXTENCbWJHOWhkQ2s3WW05dmJDQjBaWGgwZFhKbFJtOXZkSEJ5YVc1MFRHOWtUbFlvYzJGdGNHeGxjakpFTENCMlpXTXlMQ0JtYkc5aGRDd2dhVzUwTENCaWIyOXNMQ0J2ZFhRZ1oyeGZWR1Y0ZEhWeVpVWnZiM1J3Y21sdWRESkVUbFlwTzJKdmIyd2dkR1Y0ZEhWeVpVWnZiM1J3Y21sdWRFeHZaRTVXS0hOaGJYQnNaWEl6UkN3Z2RtVmpNeXdnWm14dllYUXNJR2x1ZEN3Z1ltOXZiQ3dnYjNWMElHZHNYMVJsZUhSMWNtVkdiMjkwY0hKcGJuUXpSRTVXS1R0aWIyOXNJSFJsZUhSMWNtVkdiMjkwY0hKcGJuUkhjbUZrVGxZb2MyRnRjR3hsY2pKRUxDQjJaV015TENCMlpXTXlMQ0IyWldNeUxDQnBiblFzSUdKdmIyd3NJRzkxZENCbmJGOVVaWGgwZFhKbFJtOXZkSEJ5YVc1ME1rUk9WaWs3WW05dmJDQjBaWGgwZFhKbFJtOXZkSEJ5YVc1MFIzSmhaRU5zWVcxd1RsWW9jMkZ0Y0d4bGNqSkVMQ0IyWldNeUxDQjJaV015TENCMlpXTXlMQ0JtYkc5aGRDd2dhVzUwTENCaWIyOXNMQ0J2ZFhRZ1oyeGZWR1Y0ZEhWeVpVWnZiM1J3Y21sdWRESkVUbFlwT3dvQVpteHZZWFF4Tmw5MElISmhaR2xoYm5Nb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdjbUZrYVdGdWN5aG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdjbUZrYVdGdWN5aG1NVFoyWldNektUdG1NVFoyWldNMElDQWdjbUZrYVdGdWN5aG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdaR1ZuY21WbGN5aG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JrWldkeVpXVnpLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0JrWldkeVpXVnpLR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JrWldkeVpXVnpLR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0J6YVc0b1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdjMmx1S0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCemFXNG9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJSE5wYmlobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ1kyOXpLR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUdOdmN5aG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdZMjl6S0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCamIzTW9aakUyZG1Wak5DazdabXh2WVhReE5sOTBJSFJoYmlobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQjBZVzRvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUhSaGJpaG1NVFoyWldNektUdG1NVFoyWldNMElDQWdkR0Z1S0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCaGMybHVLR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUdGemFXNG9aakUyZG1Wak1pazdaakUyZG1Wak15QWdJR0Z6YVc0b1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHRnphVzRvWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUdGamIzTW9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVdOdmN5aG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdZV052Y3lobU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ1lXTnZjeWhtTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnWVhSaGJpaG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUdGMFlXNG9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWVhSaGJpaG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JoZEdGdUtHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5DazdabXh2WVhReE5sOTBJR0YwWVc0b1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdZWFJoYmlobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1lYUmhiaWhtTVRaMlpXTXpLVHRtTVRaMlpXTTBJQ0FnWVhSaGJpaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdjMmx1YUNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnphVzVvS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCemFXNW9LR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J6YVc1b0tHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQmpiM05vS0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHTnZjMmdvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdOdmMyZ29aakUyZG1Wak15azdaakUyZG1Wak5DQWdJR052YzJnb1pqRTJkbVZqTkNrN1pteHZZWFF4Tmw5MElIUmhibWdvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2RHRnVhQ2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnZEdGdWFDaG1NVFoyWldNektUdG1NVFoyWldNMElDQWdkR0Z1YUNobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ1lYTnBibWdvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ1lYTnBibWdvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdGemFXNW9LR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JoYzJsdWFDaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdZV052YzJnb1pteHZZWFF4Tmw5MEtUdG1NVFoyWldNeUlDQWdZV052YzJnb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHRmpiM05vS0dZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCaFkyOXphQ2htTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnWVhSaGJtZ29abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVhSaGJtZ29aakUyZG1Wak1pazdaakUyZG1Wak15QWdJR0YwWVc1b0tHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQmhkR0Z1YUNobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ2NHOTNLR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2NHOTNLR1l4Tm5abFl6SXNJQ0FnWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUhCdmR5aG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J3YjNjb1pqRTJkbVZqTkN3Z0lDQm1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdaWGh3S0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHVjRjQ2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnWlhod0tHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQmxlSEFvWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUd4dlp5aG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JzYjJjb1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHeHZaeWhtTVRaMlpXTXpLVHRtTVRaMlpXTTBJQ0FnYkc5bktHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQmxlSEF5S0dac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHVjRjRElvWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUdWNGNESW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJR1Y0Y0RJb1pqRTJkbVZqTkNrN1pteHZZWFF4Tmw5MElHeHZaeklvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2JHOW5NaWhtTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnYkc5bk1paG1NVFoyWldNektUdG1NVFoyWldNMElDQWdiRzluTWlobU1UWjJaV00wS1R0bWJHOWhkREUyWDNRZ2MzRnlkQ2htYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCemNYSjBLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0J6Y1hKMEtHWXhOblpsWXpNcE8yWXhOblpsWXpRZ0lDQnpjWEowS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCcGJuWmxjbk5sYzNGeWRDaG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JwYm5abGNuTmxjM0Z5ZENobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ2FXNTJaWEp6WlhOeGNuUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJR2x1ZG1WeWMyVnpjWEowS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCaFluTW9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnWVdKektHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQmhZbk1vWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdGaWN5aG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdjMmxuYmlobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnphV2R1S0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCemFXZHVLR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J6YVdkdUtHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQm1iRzl2Y2lobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQm1iRzl2Y2lobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1pteHZiM0lvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdac2IyOXlLR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0IwY25WdVl5aG1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0IwY25WdVl5aG1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdkSEoxYm1Nb1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lIUnlkVzVqS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCeWIzVnVaQ2htYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCeWIzVnVaQ2htTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnY205MWJtUW9aakUyZG1Wak15azdaakUyZG1Wak5DQWdJSEp2ZFc1a0tHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQnliM1Z1WkVWMlpXNG9abXh2WVhReE5sOTBLVHRtTVRaMlpXTXlJQ0FnY205MWJtUkZkbVZ1S0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCeWIzVnVaRVYyWlc0b1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lISnZkVzVrUlhabGJpaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdZMlZwYkNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQmpaV2xzS0dZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCalpXbHNLR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JqWldsc0tHWXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQm1jbUZqZENobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQm1jbUZqZENobU1UWjJaV015S1R0bU1UWjJaV016SUNBZ1puSmhZM1FvWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdaeVlXTjBLR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0J0YjJRb1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0J0YjJRb1pqRTJkbVZqTWl3Z0lDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6TWdJQ0J0YjJRb1pqRTJkbVZqTXl3Z0lDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6UWdJQ0J0YjJRb1pqRTJkbVZqTkN3Z0lDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0J0YjJRb1pqRTJkbVZqTWl3Z0lDQm1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdiVzlrS0dZeE5uWmxZek1zSUNBZ1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHMXZaQ2htTVRaMlpXTTBMQ0FnSUdZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCdGIyUm1LR1pzYjJGME1UWmZkQ3dnYjNWMElHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzF2WkdZb1pqRTJkbVZqTWl3Z0lDQnZkWFFnWmpFMmRtVmpNaWs3WmpFMmRtVmpNeUFnSUcxdlpHWW9aakUyZG1Wak15d2dJQ0J2ZFhRZ1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHMXZaR1lvWmpFMmRtVmpOQ3dnSUNCdmRYUWdaakUyZG1Wak5DazdabXh2WVhReE5sOTBJRzFwYmlobWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwYmlobU1UWjJaV015TENBZ0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak15QWdJRzFwYmlobU1UWjJaV016TENBZ0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak5DQWdJRzFwYmlobU1UWjJaV00wTENBZ0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwYmlobU1UWjJaV015TENBZ0lHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQnRhVzRvWmpFMmRtVmpNeXdnSUNCbU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ2JXbHVLR1l4Tm5abFl6UXNJQ0FnWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUcxaGVDaG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUcxaGVDaG1NVFoyWldNeUxDQWdJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNeUFnSUcxaGVDaG1NVFoyWldNekxDQWdJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpOQ0FnSUcxaGVDaG1NVFoyWldNMExDQWdJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUcxaGVDaG1NVFoyWldNeUxDQWdJR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0J0WVhnb1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNektUdG1NVFoyWldNMElDQWdiV0Y0S0dZeE5uWmxZelFzSUNBZ1pqRTJkbVZqTkNrN1pteHZZWFF4Tmw5MElHTnNZVzF3S0dac2IyRjBNVFpmZEN3Z1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JqYkdGdGNDaG1NVFoyWldNeUxDQWdJR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwS1R0bU1UWjJaV016SUNBZ1kyeGhiWEFvWmpFMmRtVmpNeXdnSUNCbWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak5DQWdJR05zWVcxd0tHWXhOblpsWXpRc0lDQWdabXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCamJHRnRjQ2htTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklzSUNBZ1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHTnNZVzF3S0dZeE5uWmxZek1zSUNBZ1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNektUdG1NVFoyWldNMElDQWdZMnhoYlhBb1pqRTJkbVZqTkN3Z0lDQm1NVFoyWldNMExDQWdJR1l4Tm5abFl6UXBPMlpzYjJGME1UWmZkQ0J0YVhnb1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpNaUFnSUcxcGVDaG1NVFoyWldNeUxDQWdJR1l4Tm5abFl6SXNJQ0FnWm14dllYUXhObDkwS1R0bU1UWjJaV016SUNBZ2JXbDRLR1l4Tm5abFl6TXNJQ0FnWmpFMmRtVmpNeXdnSUNCbWJHOWhkREUyWDNRcE8yWXhOblpsWXpRZ0lDQnRhWGdvWmpFMmRtVmpOQ3dnSUNCbU1UWjJaV00wTENBZ0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJRzFwZUNobU1UWjJaV015TENBZ0lHWXhOblpsWXpJc0lDQWdaakUyZG1Wak1pazdaakUyZG1Wak15QWdJRzFwZUNobU1UWjJaV016TENBZ0lHWXhOblpsWXpNc0lDQWdaakUyZG1Wak15azdaakUyZG1Wak5DQWdJRzFwZUNobU1UWjJaV00wTENBZ0lHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5DazdabXh2WVhReE5sOTBJRzFwZUNobWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDd2dZbTl2YkNrN1pqRTJkbVZqTWlBZ0lHMXBlQ2htTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklzSUNBZ1luWmxZeklwTzJZeE5uWmxZek1nSUNCdGFYZ29aakUyZG1Wak15d2dJQ0JtTVRaMlpXTXpMQ0FnSUdKMlpXTXpLVHRtTVRaMlpXTTBJQ0FnYldsNEtHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5Dd2dJQ0JpZG1Wak5DazdabXh2WVhReE5sOTBJSE4wWlhBb1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXBPMll4Tm5abFl6SWdJQ0J6ZEdWd0tHWXhOblpsWXpJc0lDQWdaakUyZG1Wak1pazdaakUyZG1Wak15QWdJSE4wWlhBb1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNektUdG1NVFoyWldNMElDQWdjM1JsY0NobU1UWjJaV00wTENBZ0lHWXhOblpsWXpRcE8yWXhOblpsWXpJZ0lDQnpkR1Z3S0dac2IyRjBNVFpmZEN3Z1pqRTJkbVZqTWlrN1pqRTJkbVZqTXlBZ0lITjBaWEFvWm14dllYUXhObDkwTENCbU1UWjJaV016S1R0bU1UWjJaV00wSUNBZ2MzUmxjQ2htYkc5aGRERTJYM1FzSUdZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCemJXOXZkR2h6ZEdWd0tHWnNiMkYwTVRaZmRDd2dabXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCemJXOXZkR2h6ZEdWd0tHWXhOblpsWXpJc0lDQWdaakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlLVHRtTVRaMlpXTXpJQ0FnYzIxdmIzUm9jM1JsY0NobU1UWjJaV016TENBZ0lHWXhOblpsWXpNc0lDQWdaakUyZG1Wak15azdaakUyZG1Wak5DQWdJSE50YjI5MGFITjBaWEFvWmpFMmRtVmpOQ3dnSUNCbU1UWjJaV00wTENBZ0lHWXhOblpsWXpRcE8yWXhOblpsWXpJZ0lDQnpiVzl2ZEdoemRHVndLR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwTENCbU1UWjJaV015S1R0bU1UWjJaV016SUNBZ2MyMXZiM1JvYzNSbGNDaG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ3dnWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUhOdGIyOTBhSE4wWlhBb1pteHZZWFF4Tmw5MExDQm1iRzloZERFMlgzUXNJR1l4Tm5abFl6UXBPMkp2YjJ3Z0lHbHpibUZ1S0dac2IyRjBNVFpmZENrN1luWmxZeklnYVhOdVlXNG9aakUyZG1Wak1pazdZblpsWXpNZ2FYTnVZVzRvWmpFMmRtVmpNeWs3WW5abFl6UWdhWE51WVc0b1pqRTJkbVZqTkNrN1ltOXZiQ0FnYVhOcGJtWW9abXh2WVhReE5sOTBLVHRpZG1Wak1pQnBjMmx1WmlobU1UWjJaV015S1R0aWRtVmpNeUJwYzJsdVppaG1NVFoyWldNektUdGlkbVZqTkNCcGMybHVaaWhtTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnWm0xaEtHWnNiMkYwTVRaZmRDd2dabXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJZeE5uWmxZeklnSUNCbWJXRW9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCbWJXRW9aakUyZG1Wak15d2dJQ0JtTVRaMlpXTXpMQ0FnSUdZeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCbWJXRW9aakUyZG1Wak5Dd2dJQ0JtTVRaMlpXTTBMQ0FnSUdZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCbWNtVjRjQ2htYkc5aGRERTJYM1FzSUc5MWRDQnBiblFwTzJZeE5uWmxZeklnSUNCbWNtVjRjQ2htTVRaMlpXTXlMQ0FnSUc5MWRDQnBkbVZqTWlrN1pqRTJkbVZqTXlBZ0lHWnlaWGh3S0dZeE5uWmxZek1zSUNBZ2IzVjBJR2wyWldNektUdG1NVFoyWldNMElDQWdabkpsZUhBb1pqRTJkbVZqTkN3Z0lDQnZkWFFnYVhabFl6UXBPMlpzYjJGME1UWmZkQ0JzWkdWNGNDaG1iRzloZERFMlgzUXNJR2x1SUdsdWRDazdaakUyZG1Wak1pQWdJR3hrWlhod0tHWXhOblpsWXpJc0lDQWdhVzRnYVhabFl6SXBPMll4Tm5abFl6TWdJQ0JzWkdWNGNDaG1NVFoyWldNekxDQWdJR2x1SUdsMlpXTXpLVHRtTVRaMlpXTTBJQ0FnYkdSbGVIQW9aakUyZG1Wak5Dd2dJQ0JwYmlCcGRtVmpOQ2s3ZFdsdWRDQWdJQ0J3WVdOclJteHZZWFF5ZURFMktHWXhOblpsWXpJcE8yWXhOblpsWXpJZ2RXNXdZV05yUm14dllYUXllREUyS0hWcGJuUXBPMlpzYjJGME1UWmZkQ0JzWlc1bmRHZ29abXh2WVhReE5sOTBLVHRtYkc5aGRERTJYM1FnYkdWdVozUm9LR1l4Tm5abFl6SXBPMlpzYjJGME1UWmZkQ0JzWlc1bmRHZ29aakUyZG1Wak15azdabXh2WVhReE5sOTBJR3hsYm1kMGFDaG1NVFoyWldNMEtUdG1iRzloZERFMlgzUWdaR2x6ZEdGdVkyVW9abXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJac2IyRjBNVFpmZENCa2FYTjBZVzVqWlNobU1UWjJaV015TENBZ0lHWXhOblpsWXpJcE8yWnNiMkYwTVRaZmRDQmthWE4wWVc1alpTaG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMlpzYjJGME1UWmZkQ0JrYVhOMFlXNWpaU2htTVRaMlpXTTBMQ0FnSUdZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCa2IzUW9abXh2WVhReE5sOTBMQ0JtYkc5aGRERTJYM1FwTzJac2IyRjBNVFpmZENCa2IzUW9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlLVHRtYkc5aGRERTJYM1FnWkc5MEtHWXhOblpsWXpNc0lDQWdaakUyZG1Wak15azdabXh2WVhReE5sOTBJR1J2ZENobU1UWjJaV00wTENBZ0lHWXhOblpsWXpRcE8yWXhOblpsWXpNZ1kzSnZjM01vWmpFMmRtVmpNeXdnWmpFMmRtVmpNeWs3Wm14dllYUXhObDkwSUc1dmNtMWhiR2w2WlNobWJHOWhkREUyWDNRcE8yWXhOblpsWXpJZ0lDQnViM0p0WVd4cGVtVW9aakUyZG1Wak1pazdaakUyZG1Wak15QWdJRzV2Y20xaGJHbDZaU2htTVRaMlpXTXpLVHRtTVRaMlpXTTBJQ0FnYm05eWJXRnNhWHBsS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCbVlXTmxabTl5ZDJGeVpDaG1iRzloZERFMlgzUXNJR1pzYjJGME1UWmZkQ3dnWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ1ptRmpaV1p2Y25kaGNtUW9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlMQ0FnSUdZeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCbVlXTmxabTl5ZDJGeVpDaG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXNJQ0FnWmpFMmRtVmpNeWs3WmpFMmRtVmpOQ0FnSUdaaFkyVm1iM0ozWVhKa0tHWXhOblpsWXpRc0lDQWdaakUyZG1Wak5Dd2dJQ0JtTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnY21WbWJHVmpkQ2htYkc5aGRERTJYM1FzSUdac2IyRjBNVFpmZENrN1pqRTJkbVZqTWlBZ0lISmxabXhsWTNRb1pqRTJkbVZqTWl3Z0lDQm1NVFoyWldNeUtUdG1NVFoyWldNeklDQWdjbVZtYkdWamRDaG1NVFoyWldNekxDQWdJR1l4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0J5Wldac1pXTjBLR1l4Tm5abFl6UXNJQ0FnWmpFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUhKbFpuSmhZM1FvWm14dllYUXhObDkwTENCbWJHOWhkREUyWDNRc0lHWnNiMkYwTVRaZmRDazdaakUyZG1Wak1pQWdJSEpsWm5KaFkzUW9aakUyZG1Wak1pd2dJQ0JtTVRaMlpXTXlMQ0FnSUdac2IyRjBNVFpmZENrN1pqRTJkbVZqTXlBZ0lISmxabkpoWTNRb1pqRTJkbVZqTXl3Z0lDQm1NVFoyWldNekxDQWdJR1pzYjJGME1UWmZkQ2s3WmpFMmRtVmpOQ0FnSUhKbFpuSmhZM1FvWmpFMmRtVmpOQ3dnSUNCbU1UWjJaV00wTENBZ0lHWnNiMkYwTVRaZmRDazdaakUyYldGME1pQWdJRzFoZEhKcGVFTnZiWEJOZFd4MEtHWXhObTFoZERJc0lDQWdaakUyYldGME1pazdaakUyYldGME15QWdJRzFoZEhKcGVFTnZiWEJOZFd4MEtHWXhObTFoZERNc0lDQWdaakUyYldGME15azdaakUyYldGME5DQWdJRzFoZEhKcGVFTnZiWEJOZFd4MEtHWXhObTFoZERRc0lDQWdaakUyYldGME5DazdaakUyYldGME1uZ3pJRzFoZEhKcGVFTnZiWEJOZFd4MEtHWXhObTFoZERKNE15d2daakUyYldGME1uZ3pLVHRtTVRadFlYUXllRFFnYldGMGNtbDRRMjl0Y0UxMWJIUW9aakUyYldGME1uZzBMQ0JtTVRadFlYUXllRFFwTzJZeE5tMWhkRE40TWlCdFlYUnlhWGhEYjIxd1RYVnNkQ2htTVRadFlYUXplRElzSUdZeE5tMWhkRE40TWlrN1pqRTJiV0YwTTNnMElHMWhkSEpwZUVOdmJYQk5kV3gwS0dZeE5tMWhkRE40TkN3Z1pqRTJiV0YwTTNnMEtUdG1NVFp0WVhRMGVESWdiV0YwY21sNFEyOXRjRTExYkhRb1pqRTJiV0YwTkhneUxDQm1NVFp0WVhRMGVESXBPMll4Tm0xaGREUjRNeUJ0WVhSeWFYaERiMjF3VFhWc2RDaG1NVFp0WVhRMGVETXNJR1l4Tm0xaGREUjRNeWs3WmpFMmJXRjBNaUFnSUc5MWRHVnlVSEp2WkhWamRDaG1NVFoyWldNeUxDQm1NVFoyWldNeUtUdG1NVFp0WVhReklDQWdiM1YwWlhKUWNtOWtkV04wS0dZeE5uWmxZek1zSUdZeE5uWmxZek1wTzJZeE5tMWhkRFFnSUNCdmRYUmxjbEJ5YjJSMVkzUW9aakUyZG1Wak5Dd2daakUyZG1Wak5DazdaakUyYldGME1uZ3pJRzkxZEdWeVVISnZaSFZqZENobU1UWjJaV016TENCbU1UWjJaV015S1R0bU1UWnRZWFF6ZURJZ2IzVjBaWEpRY205a2RXTjBLR1l4Tm5abFl6SXNJR1l4Tm5abFl6TXBPMll4Tm0xaGRESjROQ0J2ZFhSbGNsQnliMlIxWTNRb1pqRTJkbVZqTkN3Z1pqRTJkbVZqTWlrN1pqRTJiV0YwTkhneUlHOTFkR1Z5VUhKdlpIVmpkQ2htTVRaMlpXTXlMQ0JtTVRaMlpXTTBLVHRtTVRadFlYUXplRFFnYjNWMFpYSlFjbTlrZFdOMEtHWXhOblpsWXpRc0lHWXhOblpsWXpNcE8yWXhObTFoZERSNE15QnZkWFJsY2xCeWIyUjFZM1FvWmpFMmRtVmpNeXdnWmpFMmRtVmpOQ2s3WmpFMmJXRjBNaUFnSUhSeVlXNXpjRzl6WlNobU1UWnRZWFF5S1R0bU1UWnRZWFF6SUNBZ2RISmhibk53YjNObEtHWXhObTFoZERNcE8yWXhObTFoZERRZ0lDQjBjbUZ1YzNCdmMyVW9aakUyYldGME5DazdaakUyYldGME1uZ3pJSFJ5WVc1emNHOXpaU2htTVRadFlYUXplRElwTzJZeE5tMWhkRE40TWlCMGNtRnVjM0J2YzJVb1pqRTJiV0YwTW5nektUdG1NVFp0WVhReWVEUWdkSEpoYm5Od2IzTmxLR1l4Tm0xaGREUjRNaWs3WmpFMmJXRjBOSGd5SUhSeVlXNXpjRzl6WlNobU1UWnRZWFF5ZURRcE8yWXhObTFoZERONE5DQjBjbUZ1YzNCdmMyVW9aakUyYldGME5IZ3pLVHRtTVRadFlYUTBlRE1nZEhKaGJuTndiM05sS0dZeE5tMWhkRE40TkNrN1pteHZZWFF4Tmw5MElHUmxkR1Z5YldsdVlXNTBLR1l4Tm0xaGRESXBPMlpzYjJGME1UWmZkQ0JrWlhSbGNtMXBibUZ1ZENobU1UWnRZWFF6S1R0bWJHOWhkREUyWDNRZ1pHVjBaWEp0YVc1aGJuUW9aakUyYldGME5DazdaakUyYldGME1pQnBiblpsY25ObEtHWXhObTFoZERJcE8yWXhObTFoZERNZ2FXNTJaWEp6WlNobU1UWnRZWFF6S1R0bU1UWnRZWFEwSUdsdWRtVnljMlVvWmpFMmJXRjBOQ2s3WW5abFl6SWdiR1Z6YzFSb1lXNG9aakUyZG1Wak1pd2daakUyZG1Wak1pazdZblpsWXpNZ2JHVnpjMVJvWVc0b1pqRTJkbVZqTXl3Z1pqRTJkbVZqTXlrN1luWmxZelFnYkdWemMxUm9ZVzRvWmpFMmRtVmpOQ3dnWmpFMmRtVmpOQ2s3WW5abFl6SWdiR1Z6YzFSb1lXNUZjWFZoYkNobU1UWjJaV015TENCbU1UWjJaV015S1R0aWRtVmpNeUJzWlhOelZHaGhia1Z4ZFdGc0tHWXhOblpsWXpNc0lHWXhOblpsWXpNcE8ySjJaV00wSUd4bGMzTlVhR0Z1UlhGMVlXd29aakUyZG1Wak5Dd2daakUyZG1Wak5DazdZblpsWXpJZ1ozSmxZWFJsY2xSb1lXNG9aakUyZG1Wak1pd2daakUyZG1Wak1pazdZblpsWXpNZ1ozSmxZWFJsY2xSb1lXNG9aakUyZG1Wak15d2daakUyZG1Wak15azdZblpsWXpRZ1ozSmxZWFJsY2xSb1lXNG9aakUyZG1Wak5Dd2daakUyZG1Wak5DazdZblpsWXpJZ1ozSmxZWFJsY2xSb1lXNUZjWFZoYkNobU1UWjJaV015TENCbU1UWjJaV015S1R0aWRtVmpNeUJuY21WaGRHVnlWR2hoYmtWeGRXRnNLR1l4Tm5abFl6TXNJR1l4Tm5abFl6TXBPMkoyWldNMElHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b1pqRTJkbVZqTkN3Z1pqRTJkbVZqTkNrN1luWmxZeklnWlhGMVlXd29aakUyZG1Wak1pd2daakUyZG1Wak1pazdZblpsWXpNZ1pYRjFZV3dvWmpFMmRtVmpNeXdnWmpFMmRtVmpNeWs3WW5abFl6UWdaWEYxWVd3b1pqRTJkbVZqTkN3Z1pqRTJkbVZqTkNrN1luWmxZeklnYm05MFJYRjFZV3dvWmpFMmRtVmpNaXdnWmpFMmRtVmpNaWs3WW5abFl6TWdibTkwUlhGMVlXd29aakUyZG1Wak15d2daakUyZG1Wak15azdZblpsWXpRZ2JtOTBSWEYxWVd3b1pqRTJkbVZqTkN3Z1pqRTJkbVZqTkNrN0NnQnBiblE0WDNRZ1lXSnpLR2x1ZERoZmRDazdhVGgyWldNeUlHRmljeWhwT0habFl6SXBPMms0ZG1Wak15QmhZbk1vYVRoMlpXTXpLVHRwT0habFl6UWdZV0p6S0drNGRtVmpOQ2s3YVc1ME9GOTBJSE5wWjI0b2FXNTBPRjkwS1R0cE9IWmxZeklnYzJsbmJpaHBPSFpsWXpJcE8yazRkbVZqTXlCemFXZHVLR2s0ZG1Wak15azdhVGgyWldNMElITnBaMjRvYVRoMlpXTTBLVHRwYm5RNFgzUWdiV2x1S0dsdWREaGZkQ0I0TENCcGJuUTRYM1FnZVNrN2FUaDJaV015SUcxcGJpaHBPSFpsWXpJZ2VDd2dhVzUwT0Y5MElIa3BPMms0ZG1Wak15QnRhVzRvYVRoMlpXTXpJSGdzSUdsdWREaGZkQ0I1S1R0cE9IWmxZelFnYldsdUtHazRkbVZqTkNCNExDQnBiblE0WDNRZ2VTazdhVGgyWldNeUlHMXBiaWhwT0habFl6SWdlQ3dnYVRoMlpXTXlJSGtwTzJrNGRtVmpNeUJ0YVc0b2FUaDJaV016SUhnc0lHazRkbVZqTXlCNUtUdHBPSFpsWXpRZ2JXbHVLR2s0ZG1Wak5DQjRMQ0JwT0habFl6UWdlU2s3ZFdsdWREaGZkQ0J0YVc0b2RXbHVkRGhmZENCNExDQjFhVzUwT0Y5MElIa3BPM1U0ZG1Wak1pQnRhVzRvZFRoMlpXTXlJSGdzSUhWcGJuUTRYM1FnZVNrN2RUaDJaV016SUcxcGJpaDFPSFpsWXpNZ2VDd2dkV2x1ZERoZmRDQjVLVHQxT0habFl6UWdiV2x1S0hVNGRtVmpOQ0I0TENCMWFXNTBPRjkwSUhrcE8zVTRkbVZqTWlCdGFXNG9kVGgyWldNeUlIZ3NJSFU0ZG1Wak1pQjVLVHQxT0habFl6TWdiV2x1S0hVNGRtVmpNeUI0TENCMU9IWmxZek1nZVNrN2RUaDJaV00wSUcxcGJpaDFPSFpsWXpRZ2VDd2dkVGgyWldNMElIa3BPMmx1ZERoZmRDQnRZWGdvYVc1ME9GOTBJSGdzSUdsdWREaGZkQ0I1S1R0cE9IWmxZeklnYldGNEtHazRkbVZqTWlCNExDQnBiblE0WDNRZ2VTazdhVGgyWldNeklHMWhlQ2hwT0habFl6TWdlQ3dnYVc1ME9GOTBJSGtwTzJrNGRtVmpOQ0J0WVhnb2FUaDJaV00wSUhnc0lHbHVkRGhmZENCNUtUdHBPSFpsWXpJZ2JXRjRLR2s0ZG1Wak1pQjRMQ0JwT0habFl6SWdlU2s3YVRoMlpXTXpJRzFoZUNocE9IWmxZek1nZUN3Z2FUaDJaV016SUhrcE8yazRkbVZqTkNCdFlYZ29hVGgyWldNMElIZ3NJR2s0ZG1Wak5DQjVLVHQxYVc1ME9GOTBJRzFoZUNoMWFXNTBPRjkwSUhnc0lIVnBiblE0WDNRZ2VTazdkVGgyWldNeUlHMWhlQ2gxT0habFl6SWdlQ3dnZFdsdWREaGZkQ0I1S1R0MU9IWmxZek1nYldGNEtIVTRkbVZqTXlCNExDQjFhVzUwT0Y5MElIa3BPM1U0ZG1Wak5DQnRZWGdvZFRoMlpXTTBJSGdzSUhWcGJuUTRYM1FnZVNrN2RUaDJaV015SUcxaGVDaDFPSFpsWXpJZ2VDd2dkVGgyWldNeUlIa3BPM1U0ZG1Wak15QnRZWGdvZFRoMlpXTXpJSGdzSUhVNGRtVmpNeUI1S1R0MU9IWmxZelFnYldGNEtIVTRkbVZqTkNCNExDQjFPSFpsWXpRZ2VTazdhVzUwT0Y5MElDQWdJR05zWVcxd0tHbHVkRGhmZENCNExDQnBiblE0WDNRZ2JXbHVWbUZzTENCcGJuUTRYM1FnYldGNFZtRnNLVHRwT0habFl6SWdJR05zWVcxd0tHazRkbVZqTWlBZ2VDd2dhVzUwT0Y5MElHMXBibFpoYkN3Z2FXNTBPRjkwSUcxaGVGWmhiQ2s3YVRoMlpXTXpJQ0JqYkdGdGNDaHBPSFpsWXpNZ0lIZ3NJR2x1ZERoZmRDQnRhVzVXWVd3c0lHbHVkRGhmZENCdFlYaFdZV3dwTzJrNGRtVmpOQ0FnWTJ4aGJYQW9hVGgyWldNMElDQjRMQ0JwYm5RNFgzUWdiV2x1Vm1Gc0xDQnBiblE0WDNRZ2JXRjRWbUZzS1R0cE9IWmxZeklnSUdOc1lXMXdLR2s0ZG1Wak1pQWdlQ3dnYVRoMlpXTXlJQ0J0YVc1V1lXd3NJR2s0ZG1Wak1pQWdiV0Y0Vm1Gc0tUdHBPSFpsWXpNZ0lHTnNZVzF3S0drNGRtVmpNeUFnZUN3Z2FUaDJaV016SUNCdGFXNVdZV3dzSUdrNGRtVmpNeUFnYldGNFZtRnNLVHRwT0habFl6UWdJR05zWVcxd0tHazRkbVZqTkNBZ2VDd2dhVGgyWldNMElDQnRhVzVXWVd3c0lHazRkbVZqTkNBZ2JXRjRWbUZzS1R0MWFXNTBPRjkwSUNBZ1kyeGhiWEFvZFdsdWREaGZkQ0I0TENCMWFXNTBPRjkwSUcxcGJsWmhiQ3dnZFdsdWREaGZkQ0J0WVhoV1lXd3BPM1U0ZG1Wak1pQWdZMnhoYlhBb2RUaDJaV015SUNCNExDQjFhVzUwT0Y5MElHMXBibFpoYkN3Z2RXbHVkRGhmZENCdFlYaFdZV3dwTzNVNGRtVmpNeUFnWTJ4aGJYQW9kVGgyWldNeklDQjRMQ0IxYVc1ME9GOTBJRzFwYmxaaGJDd2dkV2x1ZERoZmRDQnRZWGhXWVd3cE8zVTRkbVZqTkNBZ1kyeGhiWEFvZFRoMlpXTTBJQ0I0TENCMWFXNTBPRjkwSUcxcGJsWmhiQ3dnZFdsdWREaGZkQ0J0WVhoV1lXd3BPM1U0ZG1Wak1pQWdZMnhoYlhBb2RUaDJaV015SUNCNExDQjFPSFpsWXpJZ0lHMXBibFpoYkN3Z2RUaDJaV015SUNCdFlYaFdZV3dwTzNVNGRtVmpNeUFnWTJ4aGJYQW9kVGgyWldNeklDQjRMQ0IxT0habFl6TWdJRzFwYmxaaGJDd2dkVGgyWldNeklDQnRZWGhXWVd3cE8zVTRkbVZqTkNBZ1kyeGhiWEFvZFRoMlpXTTBJQ0I0TENCMU9IWmxZelFnSUcxcGJsWmhiQ3dnZFRoMlpXTTBJQ0J0WVhoV1lXd3BPMmx1ZERoZmRDQWdiV2w0S0dsdWREaGZkQ3dnSUdsdWREaGZkQ3dnSUdKdmIyd3BPMms0ZG1Wak1pQWdiV2w0S0drNGRtVmpNaXdnSUdrNGRtVmpNaXdnSUdKMlpXTXlLVHRwT0habFl6TWdJRzFwZUNocE9IWmxZek1zSUNCcE9IWmxZek1zSUNCaWRtVmpNeWs3YVRoMlpXTTBJQ0J0YVhnb2FUaDJaV00wTENBZ2FUaDJaV00wTENBZ1luWmxZelFwTzNWcGJuUTRYM1FnYldsNEtIVnBiblE0WDNRc0lIVnBiblE0WDNRc0lHSnZiMndwTzNVNGRtVmpNaUFnYldsNEtIVTRkbVZqTWl3Z0lIVTRkbVZqTWl3Z0lHSjJaV015S1R0MU9IWmxZek1nSUcxcGVDaDFPSFpsWXpNc0lDQjFPSFpsWXpNc0lDQmlkbVZqTXlrN2RUaDJaV00wSUNCdGFYZ29kVGgyWldNMExDQWdkVGgyWldNMExDQWdZblpsWXpRcE8ySjJaV015SUd4bGMzTlVhR0Z1S0drNGRtVmpNaXdnYVRoMlpXTXlLVHRpZG1Wak15QnNaWE56VkdoaGJpaHBPSFpsWXpNc0lHazRkbVZqTXlrN1luWmxZelFnYkdWemMxUm9ZVzRvYVRoMlpXTTBMQ0JwT0habFl6UXBPMkoyWldNeUlHeGxjM05VYUdGdUtIVTRkbVZqTWl3Z2RUaDJaV015S1R0aWRtVmpNeUJzWlhOelZHaGhiaWgxT0habFl6TXNJSFU0ZG1Wak15azdZblpsWXpRZ2JHVnpjMVJvWVc0b2RUaDJaV00wTENCMU9IWmxZelFwTzJKMlpXTXlJR3hsYzNOVWFHRnVSWEYxWVd3b2FUaDJaV015TENCcE9IWmxZeklwTzJKMlpXTXpJR3hsYzNOVWFHRnVSWEYxWVd3b2FUaDJaV016TENCcE9IWmxZek1wTzJKMlpXTTBJR3hsYzNOVWFHRnVSWEYxWVd3b2FUaDJaV00wTENCcE9IWmxZelFwTzJKMlpXTXlJR3hsYzNOVWFHRnVSWEYxWVd3b2RUaDJaV015TENCMU9IWmxZeklwTzJKMlpXTXpJR3hsYzNOVWFHRnVSWEYxWVd3b2RUaDJaV016TENCMU9IWmxZek1wTzJKMlpXTTBJR3hsYzNOVWFHRnVSWEYxWVd3b2RUaDJaV00wTENCMU9IWmxZelFwTzJKMlpXTXlJR2R5WldGMFpYSlVhR0Z1S0drNGRtVmpNaXdnYVRoMlpXTXlLVHRpZG1Wak15Qm5jbVZoZEdWeVZHaGhiaWhwT0habFl6TXNJR2s0ZG1Wak15azdZblpsWXpRZ1ozSmxZWFJsY2xSb1lXNG9hVGgyWldNMExDQnBPSFpsWXpRcE8ySjJaV015SUdkeVpXRjBaWEpVYUdGdUtIVTRkbVZqTWl3Z2RUaDJaV015S1R0aWRtVmpNeUJuY21WaGRHVnlWR2hoYmloMU9IWmxZek1zSUhVNGRtVmpNeWs3WW5abFl6UWdaM0psWVhSbGNsUm9ZVzRvZFRoMlpXTTBMQ0IxT0habFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b2FUaDJaV015TENCcE9IWmxZeklwTzJKMlpXTXpJR2R5WldGMFpYSlVhR0Z1UlhGMVlXd29hVGgyWldNekxDQnBPSFpsWXpNcE8ySjJaV00wSUdkeVpXRjBaWEpVYUdGdVJYRjFZV3dvYVRoMlpXTTBMQ0JwT0habFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b2RUaDJaV015TENCMU9IWmxZeklwTzJKMlpXTXpJR2R5WldGMFpYSlVhR0Z1UlhGMVlXd29kVGgyWldNekxDQjFPSFpsWXpNcE8ySjJaV00wSUdkeVpXRjBaWEpVYUdGdVJYRjFZV3dvZFRoMlpXTTBMQ0IxT0habFl6UXBPMkoyWldNeUlHVnhkV0ZzS0drNGRtVmpNaXdnYVRoMlpXTXlLVHRpZG1Wak15QmxjWFZoYkNocE9IWmxZek1zSUdrNGRtVmpNeWs3WW5abFl6UWdaWEYxWVd3b2FUaDJaV00wTENCcE9IWmxZelFwTzJKMlpXTXlJR1Z4ZFdGc0tIVTRkbVZqTWl3Z2RUaDJaV015S1R0aWRtVmpNeUJsY1hWaGJDaDFPSFpsWXpNc0lIVTRkbVZqTXlrN1luWmxZelFnWlhGMVlXd29kVGgyWldNMExDQjFPSFpsWXpRcE8ySjJaV015SUc1dmRFVnhkV0ZzS0drNGRtVmpNaXdnYVRoMlpXTXlLVHRpZG1Wak15QnViM1JGY1hWaGJDaHBPSFpsWXpNc0lHazRkbVZqTXlrN1luWmxZelFnYm05MFJYRjFZV3dvYVRoMlpXTTBMQ0JwT0habFl6UXBPMkoyWldNeUlHNXZkRVZ4ZFdGc0tIVTRkbVZqTWl3Z2RUaDJaV015S1R0aWRtVmpNeUJ1YjNSRmNYVmhiQ2gxT0habFl6TXNJSFU0ZG1Wak15azdZblpsWXpRZ2JtOTBSWEYxWVd3b2RUaDJaV00wTENCMU9IWmxZelFwT3lBZ2FXNTBPRjkwSUdKcGRHWnBaV3hrUlhoMGNtRmpkQ2dnSUdsdWREaGZkQ3dnYVc1ME9GOTBMQ0JwYm5RNFgzUXBPMms0ZG1Wak1pQmlhWFJtYVdWc1pFVjRkSEpoWTNRb2FUaDJaV015TENCcGJuUTRYM1FzSUdsdWREaGZkQ2s3YVRoMlpXTXpJR0pwZEdacFpXeGtSWGgwY21GamRDaHBPSFpsWXpNc0lHbHVkRGhmZEN3Z2FXNTBPRjkwS1R0cE9IWmxZelFnWW1sMFptbGxiR1JGZUhSeVlXTjBLR2s0ZG1Wak5Dd2dhVzUwT0Y5MExDQnBiblE0WDNRcE95QjFhVzUwT0Y5MElHSnBkR1pwWld4a1JYaDBjbUZqZENnZ2RXbHVkRGhmZEN3Z2FXNTBPRjkwTENCcGJuUTRYM1FwTzNVNGRtVmpNaUJpYVhSbWFXVnNaRVY0ZEhKaFkzUW9kVGgyWldNeUxDQnBiblE0WDNRc0lHbHVkRGhmZENrN2RUaDJaV016SUdKcGRHWnBaV3hrUlhoMGNtRmpkQ2gxT0habFl6TXNJR2x1ZERoZmRDd2dhVzUwT0Y5MEtUdDFPSFpsWXpRZ1ltbDBabWxsYkdSRmVIUnlZV04wS0hVNGRtVmpOQ3dnYVc1ME9GOTBMQ0JwYm5RNFgzUXBPeUFnYVc1ME9GOTBJR0pwZEdacFpXeGtTVzV6WlhKMEtDQWdhVzUwT0Y5MElHSmhjMlVzSUNBZ2FXNTBPRjkwTENCcGJuUTRYM1FzSUdsdWREaGZkQ2s3YVRoMlpXTXlJR0pwZEdacFpXeGtTVzV6WlhKMEtHazRkbVZqTWlCaVlYTmxMQ0JwT0habFl6SXNJR2x1ZERoZmRDd2dhVzUwT0Y5MEtUdHBPSFpsWXpNZ1ltbDBabWxsYkdSSmJuTmxjblFvYVRoMlpXTXpJR0poYzJVc0lHazRkbVZqTXl3Z2FXNTBPRjkwTENCcGJuUTRYM1FwTzJrNGRtVmpOQ0JpYVhSbWFXVnNaRWx1YzJWeWRDaHBPSFpsWXpRZ1ltRnpaU3dnYVRoMlpXTTBMQ0JwYm5RNFgzUXNJR2x1ZERoZmRDazdJSFZwYm5RNFgzUWdZbWwwWm1sbGJHUkpibk5sY25Rb0lIVnBiblE0WDNRZ1ltRnpaU3dnSUhWcGJuUTRYM1FzSUdsdWREaGZkQ3dnYVc1ME9GOTBLVHQxT0habFl6SWdZbWwwWm1sbGJHUkpibk5sY25Rb2RUaDJaV015SUdKaGMyVXNJSFU0ZG1Wak1pd2dhVzUwT0Y5MExDQnBiblE0WDNRcE8zVTRkbVZqTXlCaWFYUm1hV1ZzWkVsdWMyVnlkQ2gxT0habFl6TWdZbUZ6WlN3Z2RUaDJaV016TENCcGJuUTRYM1FzSUdsdWREaGZkQ2s3ZFRoMlpXTTBJR0pwZEdacFpXeGtTVzV6WlhKMEtIVTRkbVZqTkNCaVlYTmxMQ0IxT0habFl6UXNJR2x1ZERoZmRDd2dhVzUwT0Y5MEtUc2dJR2x1ZERoZmRDQmlhWFJEYjNWdWRDZ2dJR2x1ZERoZmRDazdhVGgyWldNeUlHSnBkRU52ZFc1MEtHazRkbVZqTWlrN2FUaDJaV016SUdKcGRFTnZkVzUwS0drNGRtVmpNeWs3YVRoMlpXTTBJR0pwZEVOdmRXNTBLR2s0ZG1Wak5DazdJQ0JwYm5RNFgzUWdZbWwwUTI5MWJuUW9JSFZwYm5RNFgzUXBPMms0ZG1Wak1pQmlhWFJEYjNWdWRDaDFPSFpsWXpJcE8yazRkbVZqTXlCaWFYUkRiM1Z1ZENoMU9IWmxZek1wTzJrNGRtVmpOQ0JpYVhSRGIzVnVkQ2gxT0habFl6UXBPeUFnYVc1ME9GOTBJR1pwYm1STVUwSW9JQ0JwYm5RNFgzUXBPMms0ZG1Wak1pQm1hVzVrVEZOQ0tHazRkbVZqTWlrN2FUaDJaV016SUdacGJtUk1VMElvYVRoMlpXTXpLVHRwT0habFl6UWdabWx1WkV4VFFpaHBPSFpsWXpRcE95QWdhVzUwT0Y5MElHWnBibVJNVTBJb0lIVnBiblE0WDNRcE8yazRkbVZqTWlCbWFXNWtURk5DS0hVNGRtVmpNaWs3YVRoMlpXTXpJR1pwYm1STVUwSW9kVGgyWldNektUdHBPSFpsWXpRZ1ptbHVaRXhUUWloMU9IWmxZelFwT3lBZ2FXNTBPRjkwSUdacGJtUk5VMElvSUNCcGJuUTRYM1FwTzJrNGRtVmpNaUJtYVc1a1RWTkNLR2s0ZG1Wak1pazdhVGgyWldNeklHWnBibVJOVTBJb2FUaDJaV016S1R0cE9IWmxZelFnWm1sdVpFMVRRaWhwT0habFl6UXBPeUFnYVc1ME9GOTBJR1pwYm1STlUwSW9JSFZwYm5RNFgzUXBPMms0ZG1Wak1pQm1hVzVrVFZOQ0tIVTRkbVZqTWlrN2FUaDJaV016SUdacGJtUk5VMElvZFRoMlpXTXpLVHRwT0habFl6UWdabWx1WkUxVFFpaDFPSFpsWXpRcE8ybHVkREUyWDNRZ1lXSnpLR2x1ZERFMlgzUXBPMmt4Tm5abFl6SWdZV0p6S0dreE5uWmxZeklwTzJreE5uWmxZek1nWVdKektHa3hOblpsWXpNcE8ya3hOblpsWXpRZ1lXSnpLR2t4Tm5abFl6UXBPMmx1ZERFMlgzUWdjMmxuYmlocGJuUXhObDkwS1R0cE1UWjJaV015SUhOcFoyNG9hVEUyZG1Wak1pazdhVEUyZG1Wak15QnphV2R1S0dreE5uWmxZek1wTzJreE5uWmxZelFnYzJsbmJpaHBNVFoyWldNMEtUdHBiblF4Tmw5MElHMXBiaWhwYm5ReE5sOTBJSGdzSUdsdWRERTJYM1FnZVNrN2FURTJkbVZqTWlCdGFXNG9hVEUyZG1Wak1pQjRMQ0JwYm5ReE5sOTBJSGtwTzJreE5uWmxZek1nYldsdUtHa3hOblpsWXpNZ2VDd2dhVzUwTVRaZmRDQjVLVHRwTVRaMlpXTTBJRzFwYmlocE1UWjJaV00wSUhnc0lHbHVkREUyWDNRZ2VTazdhVEUyZG1Wak1pQnRhVzRvYVRFMmRtVmpNaUI0TENCcE1UWjJaV015SUhrcE8ya3hOblpsWXpNZ2JXbHVLR2t4Tm5abFl6TWdlQ3dnYVRFMmRtVmpNeUI1S1R0cE1UWjJaV00wSUcxcGJpaHBNVFoyWldNMElIZ3NJR2t4Tm5abFl6UWdlU2s3ZFdsdWRERTJYM1FnYldsdUtIVnBiblF4Tmw5MElIZ3NJSFZwYm5ReE5sOTBJSGtwTzNVeE5uWmxZeklnYldsdUtIVXhOblpsWXpJZ2VDd2dkV2x1ZERFMlgzUWdlU2s3ZFRFMmRtVmpNeUJ0YVc0b2RURTJkbVZqTXlCNExDQjFhVzUwTVRaZmRDQjVLVHQxTVRaMlpXTTBJRzFwYmloMU1UWjJaV00wSUhnc0lIVnBiblF4Tmw5MElIa3BPM1V4Tm5abFl6SWdiV2x1S0hVeE5uWmxZeklnZUN3Z2RURTJkbVZqTWlCNUtUdDFNVFoyWldNeklHMXBiaWgxTVRaMlpXTXpJSGdzSUhVeE5uWmxZek1nZVNrN2RURTJkbVZqTkNCdGFXNG9kVEUyZG1Wak5DQjRMQ0IxTVRaMlpXTTBJSGtwTzJsdWRERTJYM1FnYldGNEtHbHVkREUyWDNRZ2VDd2dhVzUwTVRaZmRDQjVLVHRwTVRaMlpXTXlJRzFoZUNocE1UWjJaV015SUhnc0lHbHVkREUyWDNRZ2VTazdhVEUyZG1Wak15QnRZWGdvYVRFMmRtVmpNeUI0TENCcGJuUXhObDkwSUhrcE8ya3hOblpsWXpRZ2JXRjRLR2t4Tm5abFl6UWdlQ3dnYVc1ME1UWmZkQ0I1S1R0cE1UWjJaV015SUcxaGVDaHBNVFoyWldNeUlIZ3NJR2t4Tm5abFl6SWdlU2s3YVRFMmRtVmpNeUJ0WVhnb2FURTJkbVZqTXlCNExDQnBNVFoyWldNeklIa3BPMmt4Tm5abFl6UWdiV0Y0S0dreE5uWmxZelFnZUN3Z2FURTJkbVZqTkNCNUtUdDFhVzUwTVRaZmRDQnRZWGdvZFdsdWRERTJYM1FnZUN3Z2RXbHVkREUyWDNRZ2VTazdkVEUyZG1Wak1pQnRZWGdvZFRFMmRtVmpNaUI0TENCMWFXNTBNVFpmZENCNUtUdDFNVFoyWldNeklHMWhlQ2gxTVRaMlpXTXpJSGdzSUhWcGJuUXhObDkwSUhrcE8zVXhOblpsWXpRZ2JXRjRLSFV4Tm5abFl6UWdlQ3dnZFdsdWRERTJYM1FnZVNrN2RURTJkbVZqTWlCdFlYZ29kVEUyZG1Wak1pQjRMQ0IxTVRaMlpXTXlJSGtwTzNVeE5uWmxZek1nYldGNEtIVXhOblpsWXpNZ2VDd2dkVEUyZG1Wak15QjVLVHQxTVRaMlpXTTBJRzFoZUNoMU1UWjJaV00wSUhnc0lIVXhOblpsWXpRZ2VTazdhVzUwTVRaZmRDQWdJQ0JqYkdGdGNDaHBiblF4Tmw5MElIZ3NJR2x1ZERFMlgzUWdiV2x1Vm1Gc0xDQnBiblF4Tmw5MElHMWhlRlpoYkNrN2FURTJkbVZqTWlBZ1kyeGhiWEFvYVRFMmRtVmpNaUFnZUN3Z2FXNTBNVFpmZENCdGFXNVdZV3dzSUdsdWRERTJYM1FnYldGNFZtRnNLVHRwTVRaMlpXTXpJQ0JqYkdGdGNDaHBNVFoyWldNeklDQjRMQ0JwYm5ReE5sOTBJRzFwYmxaaGJDd2dhVzUwTVRaZmRDQnRZWGhXWVd3cE8ya3hOblpsWXpRZ0lHTnNZVzF3S0dreE5uWmxZelFnSUhnc0lHbHVkREUyWDNRZ2JXbHVWbUZzTENCcGJuUXhObDkwSUcxaGVGWmhiQ2s3YVRFMmRtVmpNaUFnWTJ4aGJYQW9hVEUyZG1Wak1pQWdlQ3dnYVRFMmRtVmpNaUFnYldsdVZtRnNMQ0JwTVRaMlpXTXlJQ0J0WVhoV1lXd3BPMmt4Tm5abFl6TWdJR05zWVcxd0tHa3hOblpsWXpNZ0lIZ3NJR2t4Tm5abFl6TWdJRzFwYmxaaGJDd2dhVEUyZG1Wak15QWdiV0Y0Vm1Gc0tUdHBNVFoyWldNMElDQmpiR0Z0Y0NocE1UWjJaV00wSUNCNExDQnBNVFoyWldNMElDQnRhVzVXWVd3c0lHa3hOblpsWXpRZ0lHMWhlRlpoYkNrN2RXbHVkREUyWDNRZ0lDQmpiR0Z0Y0NoMWFXNTBNVFpmZENCNExDQjFhVzUwTVRaZmRDQnRhVzVXWVd3c0lIVnBiblF4Tmw5MElHMWhlRlpoYkNrN2RURTJkbVZqTWlBZ1kyeGhiWEFvZFRFMmRtVmpNaUFnZUN3Z2RXbHVkREUyWDNRZ2JXbHVWbUZzTENCMWFXNTBNVFpmZENCdFlYaFdZV3dwTzNVeE5uWmxZek1nSUdOc1lXMXdLSFV4Tm5abFl6TWdJSGdzSUhWcGJuUXhObDkwSUcxcGJsWmhiQ3dnZFdsdWRERTJYM1FnYldGNFZtRnNLVHQxTVRaMlpXTTBJQ0JqYkdGdGNDaDFNVFoyWldNMElDQjRMQ0IxYVc1ME1UWmZkQ0J0YVc1V1lXd3NJSFZwYm5ReE5sOTBJRzFoZUZaaGJDazdkVEUyZG1Wak1pQWdZMnhoYlhBb2RURTJkbVZqTWlBZ2VDd2dkVEUyZG1Wak1pQWdiV2x1Vm1Gc0xDQjFNVFoyWldNeUlDQnRZWGhXWVd3cE8zVXhOblpsWXpNZ0lHTnNZVzF3S0hVeE5uWmxZek1nSUhnc0lIVXhOblpsWXpNZ0lHMXBibFpoYkN3Z2RURTJkbVZqTXlBZ2JXRjRWbUZzS1R0MU1UWjJaV00wSUNCamJHRnRjQ2gxTVRaMlpXTTBJQ0I0TENCMU1UWjJaV00wSUNCdGFXNVdZV3dzSUhVeE5uWmxZelFnSUcxaGVGWmhiQ2s3YVc1ME1UWmZkQ0FnYldsNEtHbHVkREUyWDNRc0lDQnBiblF4Tmw5MExDQWdZbTl2YkNrN2FURTJkbVZqTWlBZ2JXbDRLR2t4Tm5abFl6SXNJQ0JwTVRaMlpXTXlMQ0FnWW5abFl6SXBPMmt4Tm5abFl6TWdJRzFwZUNocE1UWjJaV016TENBZ2FURTJkbVZqTXl3Z0lHSjJaV016S1R0cE1UWjJaV00wSUNCdGFYZ29hVEUyZG1Wak5Dd2dJR2t4Tm5abFl6UXNJQ0JpZG1Wak5DazdkV2x1ZERFMlgzUWdiV2w0S0hWcGJuUXhObDkwTENCMWFXNTBNVFpmZEN3Z1ltOXZiQ2s3ZFRFMmRtVmpNaUFnYldsNEtIVXhOblpsWXpJc0lDQjFNVFoyWldNeUxDQWdZblpsWXpJcE8zVXhOblpsWXpNZ0lHMXBlQ2gxTVRaMlpXTXpMQ0FnZFRFMmRtVmpNeXdnSUdKMlpXTXpLVHQxTVRaMlpXTTBJQ0J0YVhnb2RURTJkbVZqTkN3Z0lIVXhOblpsWXpRc0lDQmlkbVZqTkNrN1pteHZZWFF4Tmw5MElHWnlaWGh3S0dac2IyRjBNVFpmZEN3Z2IzVjBJR2x1ZERFMlgzUXBPMll4Tm5abFl6SWdJQ0JtY21WNGNDaG1NVFoyWldNeUxDQWdJRzkxZENCcE1UWjJaV015S1R0bU1UWjJaV016SUNBZ1puSmxlSEFvWmpFMmRtVmpNeXdnSUNCdmRYUWdhVEUyZG1Wak15azdaakUyZG1Wak5DQWdJR1p5Wlhod0tHWXhOblpsWXpRc0lDQWdiM1YwSUdreE5uWmxZelFwTzJac2IyRjBNVFpmZENCc1pHVjRjQ2htYkc5aGRERTJYM1FzSUdsdWRERTJYM1FwTzJZeE5uWmxZeklnSUNCc1pHVjRjQ2htTVRaMlpXTXlMQ0FnSUdreE5uWmxZeklwTzJZeE5uWmxZek1nSUNCc1pHVjRjQ2htTVRaMlpXTXpMQ0FnSUdreE5uWmxZek1wTzJZeE5uWmxZelFnSUNCc1pHVjRjQ2htTVRaMlpXTTBMQ0FnSUdreE5uWmxZelFwTzJsdWRERTJYM1FnYUdGc1prSnBkSE5VYjBsdWRERTJLR1pzYjJGME1UWmZkQ2s3YVRFMmRtVmpNaUJvWVd4bVFtbDBjMVJ2U1c1ME1UWW9aakUyZG1Wak1pazdhVEUyZG1Wak15Qm9ZV3hvUW1sMGMxUnZTVzUwTVRZb1pqRTJkbVZqTXlrN2FURTJkbVZqTkNCb1lXeG1RbWwwYzFSdlNXNTBNVFlvWmpFMmRtVmpOQ2s3ZFdsdWRERTJYM1FnYUdGc1prSnBkSE5VYjFWcGJuUXhOaWhtYkc5aGRERTJYM1FwTzNVeE5uWmxZeklnSUdoaGJHWkNhWFJ6Vkc5VmFXNTBNVFlvWmpFMmRtVmpNaWs3ZFRFMmRtVmpNeUFnYUdGc1prSnBkSE5VYjFWcGJuUXhOaWhtTVRaMlpXTXpLVHQxTVRaMlpXTTBJQ0JvWVd4bVFtbDBjMVJ2VldsdWRERTJLR1l4Tm5abFl6UXBPMmx1ZERFMlgzUWdabXh2WVhReE5rSnBkSE5VYjBsdWRERTJLR1pzYjJGME1UWmZkQ2s3YVRFMmRtVmpNaUJtYkc5aGRERTJRbWwwYzFSdlNXNTBNVFlvWmpFMmRtVmpNaWs3YVRFMmRtVmpNeUJtYkc5aGRERTJRbWwwYzFSdlNXNTBNVFlvWmpFMmRtVmpNeWs3YVRFMmRtVmpOQ0JtYkc5aGRERTJRbWwwYzFSdlNXNTBNVFlvWmpFMmRtVmpOQ2s3ZFdsdWRERTJYM1FnWm14dllYUXhOa0pwZEhOVWIxVnBiblF4TmlobWJHOWhkREUyWDNRcE8zVXhOblpsWXpJZ0lHWnNiMkYwTVRaQ2FYUnpWRzlWYVc1ME1UWW9aakUyZG1Wak1pazdkVEUyZG1Wak15QWdabXh2WVhReE5rSnBkSE5VYjFWcGJuUXhOaWhtTVRaMlpXTXpLVHQxTVRaMlpXTTBJQ0JtYkc5aGRERTJRbWwwYzFSdlZXbHVkREUyS0dZeE5uWmxZelFwTzJac2IyRjBNVFpmZENCcGJuUXhOa0pwZEhOVWIwWnNiMkYwTVRZb2FXNTBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHbHVkREUyUW1sMGMxUnZSbXh2WVhReE5paHBNVFoyWldNeUtUdG1NVFoyWldNeklDQWdhVzUwTVRaQ2FYUnpWRzlHYkc5aGRERTJLR2t4Tm5abFl6TXBPMll4Tm5abFl6UWdJQ0JwYm5ReE5rSnBkSE5VYjBac2IyRjBNVFlvYVRFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUhWcGJuUXhOa0pwZEhOVWIwWnNiMkYwTVRZb2RXbHVkREUyWDNRcE8yWXhOblpsWXpJZ0lDQjFhVzUwTVRaQ2FYUnpWRzlHYkc5aGRERTJLSFV4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0IxYVc1ME1UWkNhWFJ6Vkc5R2JHOWhkREUyS0hVeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCMWFXNTBNVFpDYVhSelZHOUdiRzloZERFMktIVXhOblpsWXpRcE8yWnNiMkYwTVRaZmRDQnBiblF4TmtKcGRITlViMGhoYkdZb2FXNTBNVFpmZENrN1pqRTJkbVZqTWlBZ0lHbHVkREUyUW1sMGMxUnZTR0ZzWmlocE1UWjJaV015S1R0bU1UWjJaV016SUNBZ2FXNTBNVFpDYVhSelZHOUlZV3htS0dreE5uWmxZek1wTzJZeE5uWmxZelFnSUNCcGJuUXhOa0pwZEhOVWIwaGhiR1lvYVRFMmRtVmpOQ2s3Wm14dllYUXhObDkwSUhWcGJuUXhOa0pwZEhOVWIwaGhiR1lvZFdsdWRERTJYM1FwTzJZeE5uWmxZeklnSUNCMWFXNTBNVFpDYVhSelZHOUlZV3htS0hVeE5uWmxZeklwTzJZeE5uWmxZek1nSUNCMWFXNTBNVFpDYVhSelZHOUlZV3htS0hVeE5uWmxZek1wTzJZeE5uWmxZelFnSUNCMWFXNTBNVFpDYVhSelZHOUlZV3htS0hVeE5uWmxZelFwTzJsdWRDQWdJQ0FnSUhCaFkydEpiblF5ZURFMktHa3hOblpsWXpJcE8zVnBiblFnSUNBZ0lIQmhZMnRWYVc1ME1uZ3hOaWgxTVRaMlpXTXlLVHRwYm5RMk5GOTBJQ0J3WVdOclNXNTBOSGd4TmlocE1UWjJaV00wS1R0MWFXNTBOalJmZENCd1lXTnJWV2x1ZERSNE1UWW9kVEUyZG1Wak5DazdhVEUyZG1Wak1pQWdkVzV3WVdOclNXNTBNbmd4TmlocGJuUXBPM1V4Tm5abFl6SWdJSFZ1Y0dGamExVnBiblF5ZURFMktIVnBiblFwTzJreE5uWmxZelFnSUhWdWNHRmphMGx1ZERSNE1UWW9hVzUwTmpSZmRDazdkVEUyZG1Wak5DQWdkVzV3WVdOclZXbHVkRFI0TVRZb2RXbHVkRFkwWDNRcE8ySjJaV015SUd4bGMzTlVhR0Z1S0dreE5uWmxZeklzSUdreE5uWmxZeklwTzJKMlpXTXpJR3hsYzNOVWFHRnVLR2t4Tm5abFl6TXNJR2t4Tm5abFl6TXBPMkoyWldNMElHeGxjM05VYUdGdUtHa3hOblpsWXpRc0lHa3hOblpsWXpRcE8ySjJaV015SUd4bGMzTlVhR0Z1S0hVeE5uWmxZeklzSUhVeE5uWmxZeklwTzJKMlpXTXpJR3hsYzNOVWFHRnVLSFV4Tm5abFl6TXNJSFV4Tm5abFl6TXBPMkoyWldNMElHeGxjM05VYUdGdUtIVXhOblpsWXpRc0lIVXhOblpsWXpRcE8ySjJaV015SUd4bGMzTlVhR0Z1UlhGMVlXd29hVEUyZG1Wak1pd2dhVEUyZG1Wak1pazdZblpsWXpNZ2JHVnpjMVJvWVc1RmNYVmhiQ2hwTVRaMlpXTXpMQ0JwTVRaMlpXTXpLVHRpZG1Wak5DQnNaWE56VkdoaGJrVnhkV0ZzS0dreE5uWmxZelFzSUdreE5uWmxZelFwTzJKMlpXTXlJR3hsYzNOVWFHRnVSWEYxWVd3b2RURTJkbVZqTWl3Z2RURTJkbVZqTWlrN1luWmxZek1nYkdWemMxUm9ZVzVGY1hWaGJDaDFNVFoyWldNekxDQjFNVFoyWldNektUdGlkbVZqTkNCc1pYTnpWR2hoYmtWeGRXRnNLSFV4Tm5abFl6UXNJSFV4Tm5abFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVLR2t4Tm5abFl6SXNJR2t4Tm5abFl6SXBPMkoyWldNeklHZHlaV0YwWlhKVWFHRnVLR2t4Tm5abFl6TXNJR2t4Tm5abFl6TXBPMkoyWldNMElHZHlaV0YwWlhKVWFHRnVLR2t4Tm5abFl6UXNJR2t4Tm5abFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVLSFV4Tm5abFl6SXNJSFV4Tm5abFl6SXBPMkoyWldNeklHZHlaV0YwWlhKVWFHRnVLSFV4Tm5abFl6TXNJSFV4Tm5abFl6TXBPMkoyWldNMElHZHlaV0YwWlhKVWFHRnVLSFV4Tm5abFl6UXNJSFV4Tm5abFl6UXBPMkoyWldNeUlHZHlaV0YwWlhKVWFHRnVSWEYxWVd3b2FURTJkbVZqTWl3Z2FURTJkbVZqTWlrN1luWmxZek1nWjNKbFlYUmxjbFJvWVc1RmNYVmhiQ2hwTVRaMlpXTXpMQ0JwTVRaMlpXTXpLVHRpZG1Wak5DQm5jbVZoZEdWeVZHaGhia1Z4ZFdGc0tHa3hOblpsWXpRc0lHa3hOblpsWXpRcE8ySjJaV015SUdkeVpXRjBaWEpVYUdGdVJYRjFZV3dvZFRFMmRtVmpNaXdnZFRFMmRtVmpNaWs3WW5abFl6TWdaM0psWVhSbGNsUm9ZVzVGY1hWaGJDaDFNVFoyWldNekxDQjFNVFoyWldNektUdGlkbVZqTkNCbmNtVmhkR1Z5VkdoaGJrVnhkV0ZzS0hVeE5uWmxZelFzSUhVeE5uWmxZelFwTzJKMlpXTXlJR1Z4ZFdGc0tHa3hOblpsWXpJc0lHa3hOblpsWXpJcE8ySjJaV016SUdWeGRXRnNLR2t4Tm5abFl6TXNJR2t4Tm5abFl6TXBPMkoyWldNMElHVnhkV0ZzS0dreE5uWmxZelFzSUdreE5uWmxZelFwTzJKMlpXTXlJR1Z4ZFdGc0tIVXhOblpsWXpJc0lIVXhOblpsWXpJcE8ySjJaV016SUdWeGRXRnNLSFV4Tm5abFl6TXNJSFV4Tm5abFl6TXBPMkoyWldNMElHVnhkV0ZzS0hVeE5uWmxZelFzSUhVeE5uWmxZelFwTzJKMlpXTXlJRzV2ZEVWeGRXRnNLR2t4Tm5abFl6SXNJR2t4Tm5abFl6SXBPMkoyWldNeklHNXZkRVZ4ZFdGc0tHa3hOblpsWXpNc0lHa3hOblpsWXpNcE8ySjJaV00wSUc1dmRFVnhkV0ZzS0dreE5uWmxZelFzSUdreE5uWmxZelFwTzJKMlpXTXlJRzV2ZEVWeGRXRnNLSFV4Tm5abFl6SXNJSFV4Tm5abFl6SXBPMkoyWldNeklHNXZkRVZ4ZFdGc0tIVXhOblpsWXpNc0lIVXhOblpsWXpNcE8ySjJaV00wSUc1dmRFVnhkV0ZzS0hVeE5uWmxZelFzSUhVeE5uWmxZelFwT3lBZ2FXNTBNVFpmZENCaWFYUm1hV1ZzWkVWNGRISmhZM1FvSUNCcGJuUXhObDkwTENCcGJuUXhObDkwTENCcGJuUXhObDkwS1R0cE1UWjJaV015SUdKcGRHWnBaV3hrUlhoMGNtRmpkQ2hwTVRaMlpXTXlMQ0JwYm5ReE5sOTBMQ0JwYm5ReE5sOTBLVHRwTVRaMlpXTXpJR0pwZEdacFpXeGtSWGgwY21GamRDaHBNVFoyWldNekxDQnBiblF4Tmw5MExDQnBiblF4Tmw5MEtUdHBNVFoyWldNMElHSnBkR1pwWld4a1JYaDBjbUZqZENocE1UWjJaV00wTENCcGJuUXhObDkwTENCcGJuUXhObDkwS1RzZ2RXbHVkREUyWDNRZ1ltbDBabWxsYkdSRmVIUnlZV04wS0NCMWFXNTBNVFpmZEN3Z2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN2RURTJkbVZqTWlCaWFYUm1hV1ZzWkVWNGRISmhZM1FvZFRFMmRtVmpNaXdnYVc1ME1UWmZkQ3dnYVc1ME1UWmZkQ2s3ZFRFMmRtVmpNeUJpYVhSbWFXVnNaRVY0ZEhKaFkzUW9kVEUyZG1Wak15d2dhVzUwTVRaZmRDd2dhVzUwTVRaZmRDazdkVEUyZG1Wak5DQmlhWFJtYVdWc1pFVjRkSEpoWTNRb2RURTJkbVZqTkN3Z2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN0lDQnBiblF4Tmw5MElHSnBkR1pwWld4a1NXNXpaWEowS0NBZ2FXNTBNVFpmZENCaVlYTmxMQ0FnSUdsdWRERTJYM1FzSUdsdWRERTJYM1FzSUdsdWRERTJYM1FwTzJreE5uWmxZeklnWW1sMFptbGxiR1JKYm5ObGNuUW9hVEUyZG1Wak1pQmlZWE5sTENCcE1UWjJaV015TENCcGJuUXhObDkwTENCcGJuUXhObDkwS1R0cE1UWjJaV016SUdKcGRHWnBaV3hrU1c1elpYSjBLR2t4Tm5abFl6TWdZbUZ6WlN3Z2FURTJkbVZqTXl3Z2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN2FURTJkbVZqTkNCaWFYUm1hV1ZzWkVsdWMyVnlkQ2hwTVRaMlpXTTBJR0poYzJVc0lHa3hOblpsWXpRc0lHbHVkREUyWDNRc0lHbHVkREUyWDNRcE95QjFhVzUwTVRaZmRDQmlhWFJtYVdWc1pFbHVjMlZ5ZENnZ2RXbHVkREUyWDNRZ1ltRnpaU3dnSUhWcGJuUXhObDkwTENCcGJuUXhObDkwTENCcGJuUXhObDkwS1R0MU1UWjJaV015SUdKcGRHWnBaV3hrU1c1elpYSjBLSFV4Tm5abFl6SWdZbUZ6WlN3Z2RURTJkbVZqTWl3Z2FXNTBNVFpmZEN3Z2FXNTBNVFpmZENrN2RURTJkbVZqTXlCaWFYUm1hV1ZzWkVsdWMyVnlkQ2gxTVRaMlpXTXpJR0poYzJVc0lIVXhOblpsWXpNc0lHbHVkREUyWDNRc0lHbHVkREUyWDNRcE8zVXhOblpsWXpRZ1ltbDBabWxsYkdSSmJuTmxjblFvZFRFMmRtVmpOQ0JpWVhObExDQjFNVFoyWldNMExDQnBiblF4Tmw5MExDQnBiblF4Tmw5MEtUc2dJR2x1ZERFMlgzUWdZbWwwUTI5MWJuUW9JQ0JwYm5ReE5sOTBLVHRwTVRaMlpXTXlJR0pwZEVOdmRXNTBLR2t4Tm5abFl6SXBPMmt4Tm5abFl6TWdZbWwwUTI5MWJuUW9hVEUyZG1Wak15azdhVEUyZG1Wak5DQmlhWFJEYjNWdWRDaHBNVFoyWldNMEtUc2dJR2x1ZERFMlgzUWdZbWwwUTI5MWJuUW9JSFZwYm5ReE5sOTBLVHRwTVRaMlpXTXlJR0pwZEVOdmRXNTBLSFV4Tm5abFl6SXBPMmt4Tm5abFl6TWdZbWwwUTI5MWJuUW9kVEUyZG1Wak15azdhVEUyZG1Wak5DQmlhWFJEYjNWdWRDaDFNVFoyWldNMEtUc2dJR2x1ZERFMlgzUWdabWx1WkV4VFFpZ2dJR2x1ZERFMlgzUXBPMmt4Tm5abFl6SWdabWx1WkV4VFFpaHBNVFoyWldNeUtUdHBNVFoyWldNeklHWnBibVJNVTBJb2FURTJkbVZqTXlrN2FURTJkbVZqTkNCbWFXNWtURk5DS0dreE5uWmxZelFwT3lBZ2FXNTBNVFpmZENCbWFXNWtURk5DS0NCMWFXNTBNVFpmZENrN2FURTJkbVZqTWlCbWFXNWtURk5DS0hVeE5uWmxZeklwTzJreE5uWmxZek1nWm1sdVpFeFRRaWgxTVRaMlpXTXpLVHRwTVRaMlpXTTBJR1pwYm1STVUwSW9kVEUyZG1Wak5DazdJQ0JwYm5ReE5sOTBJR1pwYm1STlUwSW9JQ0JwYm5ReE5sOTBLVHRwTVRaMlpXTXlJR1pwYm1STlUwSW9hVEUyZG1Wak1pazdhVEUyZG1Wak15Qm1hVzVrVFZOQ0tHa3hOblpsWXpNcE8ya3hOblpsWXpRZ1ptbHVaRTFUUWlocE1UWjJaV00wS1RzZ0lHbHVkREUyWDNRZ1ptbHVaRTFUUWlnZ2RXbHVkREUyWDNRcE8ya3hOblpsWXpJZ1ptbHVaRTFUUWloMU1UWjJaV015S1R0cE1UWjJaV016SUdacGJtUk5VMElvZFRFMmRtVmpNeWs3YVRFMmRtVmpOQ0JtYVc1a1RWTkNLSFV4Tm5abFl6UXBPMmx1ZERFMlgzUWdJSEJoWTJzeE5paHBPSFpsWXpJcE8zVnBiblF4Tmw5MElIQmhZMnN4TmloMU9IWmxZeklwTzJsdWRETXlYM1FnSUhCaFkyc3pNaWhwT0habFl6UXBPM1ZwYm5Rek1sOTBJSEJoWTJzek1paDFPSFpsWXpRcE8ybHVkRE15WDNRZ0lIQmhZMnN6TWlocE1UWjJaV015S1R0MWFXNTBNekpmZENCd1lXTnJNeklvZFRFMmRtVmpNaWs3YVc1ME5qUmZkQ0FnY0dGamF6WTBLR2t4Tm5abFl6UXBPM1ZwYm5RMk5GOTBJSEJoWTJzMk5DaDFNVFoyWldNMEtUdHBiblEyTkY5MElDQndZV05yTmpRb2FUTXlkbVZqTWlrN2RXbHVkRFkwWDNRZ2NHRmphelkwS0hVek1uWmxZeklwTzJrNGRtVmpNaUFnSUhWdWNHRmphemdvYVc1ME1UWmZkQ2s3ZFRoMlpXTXlJQ0FnZFc1d1lXTnJPQ2gxYVc1ME1UWmZkQ2s3YVRoMlpXTTBJQ0FnZFc1d1lXTnJPQ2hwYm5Rek1sOTBLVHQxT0habFl6UWdJQ0IxYm5CaFkyczRLSFZwYm5Rek1sOTBLVHRwTVRaMlpXTXlJQ0IxYm5CaFkyc3hOaWhwYm5Rek1sOTBLVHQxTVRaMlpXTXlJQ0IxYm5CaFkyc3hOaWgxYVc1ME16SmZkQ2s3YVRFMmRtVmpOQ0FnZFc1d1lXTnJNVFlvYVc1ME5qUmZkQ2s3ZFRFMmRtVmpOQ0FnZFc1d1lXTnJNVFlvZFdsdWREWTBYM1FwTzJrek1uWmxZeklnSUhWdWNHRmphek15S0dsdWREWTBYM1FwTzNVek1uWmxZeklnSUhWdWNHRmphek15S0hWcGJuUTJORjkwS1R0bWJHOWhkRFkwWDNRZ2NtRmthV0Z1Y3lobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQnlZV1JwWVc1ektHWTJOSFpsWXpJcE8yWTJOSFpsWXpNZ0lDQnlZV1JwWVc1ektHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQnlZV1JwWVc1ektHWTJOSFpsWXpRcE8yWnNiMkYwTmpSZmRDQmtaV2R5WldWektHWnNiMkYwTmpSZmRDazdaalkwZG1Wak1pQWdJR1JsWjNKbFpYTW9aalkwZG1Wak1pazdaalkwZG1Wak15QWdJR1JsWjNKbFpYTW9aalkwZG1Wak15azdaalkwZG1Wak5DQWdJR1JsWjNKbFpYTW9aalkwZG1Wak5DazdabXh2WVhRMk5GOTBJSE5wYmlobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQnphVzRvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUhOcGJpaG1OalIyWldNektUdG1OalIyWldNMElDQWdjMmx1S0dZMk5IWmxZelFwTzJac2IyRjBOalJmZENCamIzTW9abXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWTI5ektHWTJOSFpsWXpJcE8yWTJOSFpsWXpNZ0lDQmpiM01vWmpZMGRtVmpNeWs3WmpZMGRtVmpOQ0FnSUdOdmN5aG1OalIyWldNMEtUdG1iRzloZERZMFgzUWdkR0Z1S0dac2IyRjBOalJmZENrN1pqWTBkbVZqTWlBZ0lIUmhiaWhtTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnZEdGdUtHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQjBZVzRvWmpZMGRtVmpOQ2s3Wm14dllYUTJORjkwSUdGemFXNG9abXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWVhOcGJpaG1OalIyWldNeUtUdG1OalIyWldNeklDQWdZWE5wYmlobU5qUjJaV016S1R0bU5qUjJaV00wSUNBZ1lYTnBiaWhtTmpSMlpXTTBLVHRtYkc5aGREWTBYM1FnWVdOdmN5aG1iRzloZERZMFgzUXBPMlkyTkhabFl6SWdJQ0JoWTI5ektHWTJOSFpsWXpJcE8yWTJOSFpsWXpNZ0lDQmhZMjl6S0dZMk5IWmxZek1wTzJZMk5IWmxZelFnSUNCaFkyOXpLR1kyTkhabFl6UXBPMlpzYjJGME5qUmZkQ0JoZEdGdUtHWnNiMkYwTmpSZmRDd2dabXh2WVhRMk5GOTBLVHRtTmpSMlpXTXlJQ0FnWVhSaGJpaG1OalIyWldNeUxDQWdJR1kyTkhabFl6SXBPMlkyTkhabFl6TWdJQ0JoZEdGdUtHWTJOSFpsWXpNc0lDQWdaalkwZG1Wak15azdaalkwZG1Wak5DQWdJR0YwWVc0b1pqWTBkbVZqTkN3Z0lDQm1OalIyWldNMEtUdG1iRzloZERZMFgzUWdZWFJoYmlobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQmhkR0Z1S0dZMk5IWmxZeklwTzJZMk5IWmxZek1nSUNCaGRHRnVLR1kyTkhabFl6TXBPMlkyTkhabFl6UWdJQ0JoZEdGdUtHWTJOSFpsWXpRcE8yWnNiMkYwTmpSZmRDQnphVzVvS0dac2IyRjBOalJmZENrN1pqWTBkbVZqTWlBZ0lITnBibWdvWmpZMGRtVmpNaWs3WmpZMGRtVmpNeUFnSUhOcGJtZ29aalkwZG1Wak15azdaalkwZG1Wak5DQWdJSE5wYm1nb1pqWTBkbVZqTkNrN1pteHZZWFEyTkY5MElHTnZjMmdvWm14dllYUTJORjkwS1R0bU5qUjJaV015SUNBZ1kyOXphQ2htTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnWTI5emFDaG1OalIyWldNektUdG1OalIyWldNMElDQWdZMjl6YUNobU5qUjJaV00wS1R0bWJHOWhkRFkwWDNRZ2RHRnVhQ2htYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCMFlXNW9LR1kyTkhabFl6SXBPMlkyTkhabFl6TWdJQ0IwWVc1b0tHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQjBZVzVvS0dZMk5IWmxZelFwTzJac2IyRjBOalJmZENCaGMybHVhQ2htYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCaGMybHVhQ2htTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnWVhOcGJtZ29aalkwZG1Wak15azdaalkwZG1Wak5DQWdJR0Z6YVc1b0tHWTJOSFpsWXpRcE8yWnNiMkYwTmpSZmRDQmhZMjl6YUNobWJHOWhkRFkwWDNRcE8yWTJOSFpsWXpJZ0lDQmhZMjl6YUNobU5qUjJaV015S1R0bU5qUjJaV016SUNBZ1lXTnZjMmdvWmpZMGRtVmpNeWs3WmpZMGRtVmpOQ0FnSUdGamIzTm9LR1kyTkhabFl6UXBPMlpzYjJGME5qUmZkQ0JoZEdGdWFDaG1iRzloZERZMFgzUXBPMlkyTkhabFl6SWdJQ0JoZEdGdWFDaG1OalIyWldNeUtUdG1OalIyWldNeklDQWdZWFJoYm1nb1pqWTBkbVZqTXlrN1pqWTBkbVZqTkNBZ0lHRjBZVzVvS0dZMk5IWmxZelFwTzJac2IyRjBOalJmZENCd2IzY29abXh2WVhRMk5GOTBMQ0JtYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCd2IzY29aalkwZG1Wak1pd2dJQ0JtTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnY0c5M0tHWTJOSFpsWXpNc0lDQWdaalkwZG1Wak15azdaalkwZG1Wak5DQWdJSEJ2ZHlobU5qUjJaV00wTENBZ0lHWTJOSFpsWXpRcE8yWnNiMkYwTmpSZmRDQmxlSEFvWm14dllYUTJORjkwS1R0bU5qUjJaV015SUNBZ1pYaHdLR1kyTkhabFl6SXBPMlkyTkhabFl6TWdJQ0JsZUhBb1pqWTBkbVZqTXlrN1pqWTBkbVZqTkNBZ0lHVjRjQ2htTmpSMlpXTTBLVHRtYkc5aGREWTBYM1FnYkc5bktHWnNiMkYwTmpSZmRDazdaalkwZG1Wak1pQWdJR3h2WnlobU5qUjJaV015S1R0bU5qUjJaV016SUNBZ2JHOW5LR1kyTkhabFl6TXBPMlkyTkhabFl6UWdJQ0JzYjJjb1pqWTBkbVZqTkNrN1pteHZZWFEyTkY5MElHVjRjRElvWm14dllYUTJORjkwS1R0bU5qUjJaV015SUNBZ1pYaHdNaWhtTmpSMlpXTXlLVHRtTmpSMlpXTXpJQ0FnWlhod01paG1OalIyWldNektUdG1OalIyWldNMElDQWdaWGh3TWlobU5qUjJaV00wS1R0bWJHOWhkRFkwWDNRZ2JHOW5NaWhtYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCc2IyY3lLR1kyTkhabFl6SXBPMlkyTkhabFl6TWdJQ0JzYjJjeUtHWTJOSFpsWXpNcE8yWTJOSFpsWXpRZ0lDQnNiMmN5S0dZMk5IWmxZelFwT3dvQVpteHZZWFEyTkY5MElHbHVkR1Z5Y0c5c1lYUmxRWFJEWlc1MGNtOXBaQ2htYkc5aGREWTBYM1FwTzJZMk5IWmxZeklnSUNCcGJuUmxjbkJ2YkdGMFpVRjBRMlZ1ZEhKdmFXUW9aalkwZG1Wak1pazdaalkwZG1Wak15QWdJR2x1ZEdWeWNHOXNZWFJsUVhSRFpXNTBjbTlwWkNobU5qUjJaV016S1R0bU5qUjJaV00wSUNBZ2FXNTBaWEp3YjJ4aGRHVkJkRU5sYm5SeWIybGtLR1kyTkhabFl6UXBPMlpzYjJGME5qUmZkQ0JwYm5SbGNuQnZiR0YwWlVGMFUyRnRjR3hsS0dac2IyRjBOalJmZEN3Z2FXNTBLVHRtTmpSMlpXTXlJQ0FnYVc1MFpYSndiMnhoZEdWQmRGTmhiWEJzWlNobU5qUjJaV015TENBZ0lHbHVkQ2s3WmpZMGRtVmpNeUFnSUdsdWRHVnljRzlzWVhSbFFYUlRZVzF3YkdVb1pqWTBkbVZqTXl3Z0lDQnBiblFwTzJZMk5IWmxZelFnSUNCcGJuUmxjbkJ2YkdGMFpVRjBVMkZ0Y0d4bEtHWTJOSFpsWXpRc0lDQWdhVzUwS1R0bWJHOWhkRFkwWDNRZ2FXNTBaWEp3YjJ4aGRHVkJkRTltWm5ObGRDaG1iRzloZERZMFgzUXNJR1kyTkhabFl6SXBPMlkyTkhabFl6SWdJQ0JwYm5SbGNuQnZiR0YwWlVGMFQyWm1jMlYwS0dZMk5IWmxZeklzSUNBZ1pqWTBkbVZqTWlrN1pqWTBkbVZqTXlBZ0lHbHVkR1Z5Y0c5c1lYUmxRWFJQWm1aelpYUW9aalkwZG1Wak15d2dJQ0JtTmpSMlpXTXlLVHRtTmpSMlpXTTBJQ0FnYVc1MFpYSndiMnhoZEdWQmRFOW1abk5sZENobU5qUjJaV00wTENBZ0lHWTJOSFpsWXpJcE93b0FkbVZqTkNCbWRISmhibk5tYjNKdEtDazdBSFpsWXpRZ2RHVjRkSFZ5WlRKRVRHOWtLSE5oYlhCc1pYSXlSQ3dnZG1Wak1pd2dabXh2WVhRcE8zWmxZelFnZEdWNGRIVnlaVEpFVUhKdmFreHZaQ2h6WVcxd2JHVnlNa1FzSUhabFl6TXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV5UkZCeWIycE1iMlFvYzJGdGNHeGxjakpFTENCMlpXTTBMQ0JtYkc5aGRDazdkbVZqTkNCMFpYaDBkWEpsTTBSTWIyUW9jMkZ0Y0d4bGNqTkVMQ0IyWldNekxDQm1iRzloZENrN2RtVmpOQ0IwWlhoMGRYSmxNMFJRY205cVRHOWtLSE5oYlhCc1pYSXpSQ3dnZG1Wak5Dd2dabXh2WVhRcE8zWmxZelFnZEdWNGRIVnlaVU4xWW1WTWIyUW9jMkZ0Y0d4bGNrTjFZbVVzSUhabFl6TXNJR1pzYjJGMEtUc0tBSFpsWXpRZ2RHVjRkSFZ5WlRGRVRHOWtLSE5oYlhCc1pYSXhSQ3dnWm14dllYUXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV4UkZCeWIycE1iMlFvYzJGdGNHeGxjakZFTENCMlpXTXlMQ0JtYkc5aGRDazdkbVZqTkNCMFpYaDBkWEpsTVVSUWNtOXFURzlrS0hOaGJYQnNaWEl4UkN3Z2RtVmpOQ3dnWm14dllYUXBPM1psWXpRZ2MyaGhaRzkzTVVSTWIyUW9jMkZ0Y0d4bGNqRkVVMmhoWkc5M0xDQjJaV016TENCbWJHOWhkQ2s3ZG1Wak5DQnphR0ZrYjNjeVJFeHZaQ2h6WVcxd2JHVnlNa1JUYUdGa2IzY3NJSFpsWXpNc0lHWnNiMkYwS1R0MlpXTTBJSE5vWVdSdmR6RkVVSEp2YWt4dlpDaHpZVzF3YkdWeU1VUlRhR0ZrYjNjc0lIWmxZelFzSUdac2IyRjBLVHQyWldNMElITm9ZV1J2ZHpKRVVISnZha3h2WkNoellXMXdiR1Z5TWtSVGFHRmtiM2NzSUhabFl6UXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV4UkVkeVlXUkJVa0lvYzJGdGNHeGxjakZFTENCbWJHOWhkQ3dnWm14dllYUXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV4UkZCeWIycEhjbUZrUVZKQ0tITmhiWEJzWlhJeFJDd2dkbVZqTWl3Z1pteHZZWFFzSUdac2IyRjBLVHQyWldNMElIUmxlSFIxY21VeFJGQnliMnBIY21Ga1FWSkNLSE5oYlhCc1pYSXhSQ3dnZG1Wak5Dd2dabXh2WVhRc0lHWnNiMkYwS1R0MlpXTTBJSFJsZUhSMWNtVXlSRWR5WVdSQlVrSW9jMkZ0Y0d4bGNqSkVMQ0IyWldNeUxDQjJaV015TENCMlpXTXlLVHQyWldNMElIUmxlSFIxY21VeVJGQnliMnBIY21Ga1FWSkNLSE5oYlhCc1pYSXlSQ3dnZG1Wak15d2dkbVZqTWl3Z2RtVmpNaWs3ZG1Wak5DQjBaWGgwZFhKbE1rUlFjbTlxUjNKaFpFRlNRaWh6WVcxd2JHVnlNa1FzSUhabFl6UXNJSFpsWXpJc0lIWmxZeklwTzNabFl6UWdkR1Y0ZEhWeVpUTkVSM0poWkVGU1FpaHpZVzF3YkdWeU0wUXNJSFpsWXpNc0lIWmxZek1zSUhabFl6TXBPM1psWXpRZ2RHVjRkSFZ5WlRORVVISnZha2R5WVdSQlVrSW9jMkZ0Y0d4bGNqTkVMQ0IyWldNMExDQjJaV016TENCMlpXTXpLVHQyWldNMElIUmxlSFIxY21WRGRXSmxSM0poWkVGU1FpaHpZVzF3YkdWeVEzVmlaU3dnZG1Wak15d2dkbVZqTXl3Z2RtVmpNeWs3ZG1Wak5DQnphR0ZrYjNjeFJFZHlZV1JCVWtJb2MyRnRjR3hsY2pGRVUyaGhaRzkzTENCMlpXTXpMQ0JtYkc5aGRDd2dabXh2WVhRcE8zWmxZelFnYzJoaFpHOTNNVVJRY205cVIzSmhaRUZTUWlnZ2MyRnRjR3hsY2pGRVUyaGhaRzkzTENCMlpXTTBMQ0JtYkc5aGRDd2dabXh2WVhRcE8zWmxZelFnYzJoaFpHOTNNa1JIY21Ga1FWSkNLSE5oYlhCc1pYSXlSRk5vWVdSdmR5d2dkbVZqTXl3Z2RtVmpNaXdnZG1Wak1pazdkbVZqTkNCemFHRmtiM2N5UkZCeWIycEhjbUZrUVZKQ0tDQnpZVzF3YkdWeU1rUlRhR0ZrYjNjc0lIWmxZelFzSUhabFl6SXNJSFpsWXpJcE8zWmxZelFnZEdWNGRIVnlaVEpFVW1WamRFZHlZV1JCVWtJb2MyRnRjR3hsY2pKRVVtVmpkQ3dnZG1Wak1pd2dkbVZqTWl3Z2RtVmpNaWs3ZG1Wak5DQjBaWGgwZFhKbE1rUlNaV04wVUhKdmFrZHlZV1JCVWtJb0lITmhiWEJzWlhJeVJGSmxZM1FzSUhabFl6TXNJSFpsWXpJc0lIWmxZeklwTzNabFl6UWdkR1Y0ZEhWeVpUSkVVbVZqZEZCeWIycEhjbUZrUVZKQ0tDQnpZVzF3YkdWeU1rUlNaV04wTENCMlpXTTBMQ0IyWldNeUxDQjJaV015S1R0MlpXTTBJSE5vWVdSdmR6SkVVbVZqZEVkeVlXUkJVa0lvSUhOaGJYQnNaWEl5UkZKbFkzUlRhR0ZrYjNjc0lIWmxZek1zSUhabFl6SXNJSFpsWXpJcE8zWmxZelFnYzJoaFpHOTNNa1JTWldOMFVISnZha2R5WVdSQlVrSW9jMkZ0Y0d4bGNqSkVVbVZqZEZOb1lXUnZkeXdnZG1Wak5Dd2dkbVZqTWl3Z2RtVmpNaWs3Q2dCMmIybGtJRVZ0YVhSVGRISmxZVzFXWlhKMFpYZ29hVzUwS1R0MmIybGtJRVZ1WkZOMGNtVmhiVkJ5YVcxcGRHbDJaU2hwYm5RcE93QjJiMmxrSUVWdGFYUldaWEowWlhnb0tUdDJiMmxrSUVWdVpGQnlhVzFwZEdsMlpTZ3BPd29BZG05cFpDQmlZWEp5YVdWeUtDazdBSFp2YVdRZ2JXVnRiM0o1UW1GeWNtbGxjaWdwT3dCMmIybGtJRzFsYlc5eWVVSmhjbkpwWlhKQ2RXWm1aWElvS1RzQWRtOXBaQ0J0WlcxdmNubENZWEp5YVdWeVUyaGhjbVZrS0NrN2RtOXBaQ0JuY205MWNFMWxiVzl5ZVVKaGNuSnBaWElvS1RzQWRtOXBaQ0J0WlcxdmNubENZWEp5YVdWeVFYUnZiV2xqUTI5MWJuUmxjaWdwTzNadmFXUWdiV1Z0YjNKNVFtRnljbWxsY2tsdFlXZGxLQ2s3QUhadmFXUWdZMjl1ZEhKdmJFSmhjbkpwWlhJb2FXNTBMQ0JwYm5Rc0lHbHVkQ3dnYVc1MEtUc0tkbTlwWkNCdFpXMXZjbmxDWVhKeWFXVnlLR2x1ZEN3Z2FXNTBMQ0JwYm5RcE93b0FkbTlwWkNCamIyOXdUV0YwVEc5aFpFNVdLRzkxZENCbVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJR1pzYjJGME1UWmZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRXh2WVdST1ZpaHZkWFFnWm1OdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQm1iRzloZEZ0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEV4dllXUk9WaWh2ZFhRZ1ptTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxYVc1ME9GOTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBURzloWkU1V0tHOTFkQ0JtWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElIVnBiblF4Tmw5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQm1ZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUhWcGJuUmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUk1iMkZrVGxZb2IzVjBJR1pqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2RXbHVkRFkwWDNSYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSTWIyRmtUbFlvYjNWMElHWmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFhabFl6SmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUk1iMkZrVGxZb2IzVjBJR1pqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2RYWmxZelJiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR1pqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ1pteHZZWFF4Tmw5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFUzUnZjbVZPVmlobVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJR1pzYjJGMFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFUzUnZjbVZPVmlobVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJR1pzYjJGME5qUmZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9abU52YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCMWFXNTBPRjkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWhtWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElIVnBiblF4Tmw5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFUzUnZjbVZPVmlobVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJSFZwYm5SYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSVGRHOXlaVTVXS0daamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdkV2x1ZERZMFgzUmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUlRkRzl5WlU1V0tHWmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFhabFl6SmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUlRkRzl5WlU1V0tHWmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFhabFl6UmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwbVkyOXZjRzFoZEU1V0lHTnZiM0JOWVhSTmRXeEJaR1JPVmlobVkyOXZjRzFoZEU1V0lFRXNJR1pqYjI5d2JXRjBUbFlnUWl3Z1ptTnZiM0J0WVhST1ZpQkRLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQnBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWREaGZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRXh2WVdST1ZpaHZkWFFnYVdOdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQnBiblF4Tmw5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQnBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWRGdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRFeHZZV1JPVmlodmRYUWdhV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUTJORjkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVEc5aFpFNVdLRzkxZENCcFkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJR2wyWldNeVcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQnBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsMlpXTTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBURzloWkU1V0tHOTFkQ0JwWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElIVnBiblE0WDNSYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSTWIyRmtUbFlvYjNWMElHbGpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFdsdWRERTJYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJNYjJGa1RsWW9iM1YwSUdsamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdkV2x1ZEZ0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEV4dllXUk9WaWh2ZFhRZ2FXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxYVc1ME5qUmZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRXh2WVdST1ZpaHZkWFFnYVdOdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQjFkbVZqTWx0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEV4dllXUk9WaWh2ZFhRZ2FXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxZG1Wak5GdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRFeHZZV1JPVmlodmRYUWdkV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUTRYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJNYjJGa1RsWW9iM1YwSUhWamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdhVzUwTVRaZmRGdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRFeHZZV1JPVmlodmRYUWdkV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUk1iMkZrVGxZb2IzVjBJSFZqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2FXNTBOalJmZEZ0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEV4dllXUk9WaWh2ZFhRZ2RXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0JwZG1Wak1sdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRFeHZZV1JPVmlodmRYUWdkV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGRtVmpORnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRXh2WVdST1ZpaHZkWFFnZFdOdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQjFhVzUwT0Y5MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFRHOWhaRTVXS0c5MWRDQjFZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUhWcGJuUXhObDkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVEc5aFpFNVdLRzkxZENCMVkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJSFZwYm5SYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSTWIyRmtUbFlvYjNWMElIVmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFdsdWREWTBYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJNYjJGa1RsWW9iM1YwSUhWamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdkWFpsWXpKYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSTWIyRmtUbFlvYjNWMElIVmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFhabFl6UmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUlRkRzl5WlU1V0tHbGpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnYVc1ME9GOTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaHBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWRERTJYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR2xqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2FXNTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaHBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWREWTBYM1JiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR2xqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2FYWmxZekpiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR2xqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2FYWmxZelJiWFNCaWRXWXNJSFZwYm5RZ1pXeGxiV1Z1ZEN3Z2RXbHVkQ0J6ZEhKcFpHVXNJR0p2YjJ3Z1kyOXNUV0ZxYjNJcE93cDJiMmxrSUdOdmIzQk5ZWFJUZEc5eVpVNVdLR2xqYjI5d2JXRjBUbFlnYlN3Z2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ2RXbHVkRGhmZEZ0ZElHSjFaaXdnZFdsdWRDQmxiR1Z0Wlc1MExDQjFhVzUwSUhOMGNtbGtaU3dnWW05dmJDQmpiMnhOWVdwdmNpazdDblp2YVdRZ1kyOXZjRTFoZEZOMGIzSmxUbFlvYVdOdmIzQnRZWFJPVmlCdExDQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQjFhVzUwTVRaZmRGdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRGTjBiM0psVGxZb2FXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxYVc1MFcxMGdZblZtTENCMWFXNTBJR1ZzWlcxbGJuUXNJSFZwYm5RZ2MzUnlhV1JsTENCaWIyOXNJR052YkUxaGFtOXlLVHNLZG05cFpDQmpiMjl3VFdGMFUzUnZjbVZPVmlocFkyOXZjRzFoZEU1V0lHMHNJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJSFZwYm5RMk5GOTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaHBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUhWMlpXTXlXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaHBZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUhWMlpXTTBXMTBnWW5WbUxDQjFhVzUwSUdWc1pXMWxiblFzSUhWcGJuUWdjM1J5YVdSbExDQmliMjlzSUdOdmJFMWhhbTl5S1RzS2RtOXBaQ0JqYjI5d1RXRjBVM1J2Y21WT1ZpaDFZMjl2Y0cxaGRFNVdJRzBzSUhadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUdsdWREaGZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9kV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUXhObDkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWgxWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElHbHVkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9kV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCcGJuUTJORjkwVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWgxWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElHbDJaV015VzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWgxWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElHbDJaV00wVzEwZ1luVm1MQ0IxYVc1MElHVnNaVzFsYm5Rc0lIVnBiblFnYzNSeWFXUmxMQ0JpYjI5c0lHTnZiRTFoYW05eUtUc0tkbTlwWkNCamIyOXdUV0YwVTNSdmNtVk9WaWgxWTI5dmNHMWhkRTVXSUcwc0lIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElIVnBiblE0WDNSYlhTQmlkV1lzSUhWcGJuUWdaV3hsYldWdWRDd2dkV2x1ZENCemRISnBaR1VzSUdKdmIyd2dZMjlzVFdGcWIzSXBPd3AyYjJsa0lHTnZiM0JOWVhSVGRHOXlaVTVXS0hWamIyOXdiV0YwVGxZZ2JTd2dkbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdkV2x1ZERFMlgzUmJYU0JpZFdZc0lIVnBiblFnWld4bGJXVnVkQ3dnZFdsdWRDQnpkSEpwWkdVc0lHSnZiMndnWTI5c1RXRnFiM0lwT3dwMmIybGtJR052YjNCTllYUlRkRzl5WlU1V0tIVmpiMjl3YldGMFRsWWdiU3dnZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnZFdsdWRGdGRJR0oxWml3Z2RXbHVkQ0JsYkdWdFpXNTBMQ0IxYVc1MElITjBjbWxrWlN3Z1ltOXZiQ0JqYjJ4TllXcHZjaWs3Q25admFXUWdZMjl2Y0UxaGRGTjBiM0psVGxZb2RXTnZiM0J0WVhST1ZpQnRMQ0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0IxYVc1ME5qUmZkRnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9kV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCMWRtVmpNbHRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NuWnZhV1FnWTI5dmNFMWhkRk4wYjNKbFRsWW9kV052YjNCdFlYUk9WaUJ0TENCMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENCMWRtVmpORnRkSUdKMVppd2dkV2x1ZENCbGJHVnRaVzUwTENCMWFXNTBJSE4wY21sa1pTd2dZbTl2YkNCamIyeE5ZV3B2Y2lrN0NtbGpiMjl3YldGMFRsWWdZMjl2Y0UxaGRFMTFiRUZrWkU1V0tHbGpiMjl3YldGMFRsWWdRU3dnYVdOdmIzQnRZWFJPVmlCQ0xDQnBZMjl2Y0cxaGRFNVdJRU1wT3dwMVkyOXZjRzFoZEU1V0lHTnZiM0JOWVhSTmRXeEJaR1JPVmloMVkyOXZjRzFoZEU1V0lFRXNJSFZqYjI5d2JXRjBUbFlnUWl3Z2RXTnZiM0J0WVhST1ZpQkRLVHNLQUhabFl6UWdkR1Y0ZEhWeVpUSkVLSE5oYlhCc1pYSXlSQ3dnZG1Wak1pd2dabXh2WVhRcE8zWmxZelFnZEdWNGRIVnlaVEpFVUhKdmFpaHpZVzF3YkdWeU1rUXNJSFpsWXpNc0lHWnNiMkYwS1R0MlpXTTBJSFJsZUhSMWNtVXlSRkJ5YjJvb2MyRnRjR3hsY2pKRUxDQjJaV00wTENCbWJHOWhkQ2s3ZG1Wak5DQjBaWGgwZFhKbE0wUW9jMkZ0Y0d4bGNqTkVMQ0IyWldNekxDQm1iRzloZENrN2RtVmpOQ0IwWlhoMGRYSmxNMFJRY205cUtITmhiWEJzWlhJelJDd2dkbVZqTkN3Z1pteHZZWFFwTzNabFl6UWdkR1Y0ZEhWeVpVTjFZbVVvYzJGdGNHeGxja04xWW1Vc0lIWmxZek1zSUdac2IyRjBLVHNLQUhabFl6UWdkR1Y0ZEhWeVpURkVLSE5oYlhCc1pYSXhSQ3dnWm14dllYUXNJR1pzYjJGMEtUdDJaV00wSUhSbGVIUjFjbVV4UkZCeWIyb29jMkZ0Y0d4bGNqRkVMQ0IyWldNeUxDQm1iRzloZENrN2RtVmpOQ0IwWlhoMGRYSmxNVVJRY205cUtITmhiWEJzWlhJeFJDd2dkbVZqTkN3Z1pteHZZWFFwTzNabFl6UWdjMmhoWkc5M01VUW9jMkZ0Y0d4bGNqRkVVMmhoWkc5M0xDQjJaV016TENCbWJHOWhkQ2s3ZG1Wak5DQnphR0ZrYjNjeVJDaHpZVzF3YkdWeU1rUlRhR0ZrYjNjc0lIWmxZek1zSUdac2IyRjBLVHQyWldNMElITm9ZV1J2ZHpGRVVISnZhaWh6WVcxd2JHVnlNVVJUYUdGa2IzY3NJSFpsWXpRc0lHWnNiMkYwS1R0MlpXTTBJSE5vWVdSdmR6SkVVSEp2YWloellXMXdiR1Z5TWtSVGFHRmtiM2NzSUhabFl6UXNJR1pzYjJGMEtUc0tBSFpsWXpRZ2RHVjRkSFZ5WlRKRVRHOWtSVmhVS0hOaGJYQnNaWEl5UkN3Z2RtVmpNaXdnWm14dllYUXBPM1psWXpRZ2RHVjRkSFZ5WlRKRVVISnZha3h2WkVWWVZDaHpZVzF3YkdWeU1rUXNJSFpsWXpNc0lHWnNiMkYwS1R0MlpXTTBJSFJsZUhSMWNtVXlSRkJ5YjJwTWIyUkZXRlFvYzJGdGNHeGxjakpFTENCMlpXTTBMQ0JtYkc5aGRDazdkbVZqTkNCMFpYaDBkWEpsUTNWaVpVeHZaRVZZVkNoellXMXdiR1Z5UTNWaVpTd2dkbVZqTXl3Z1pteHZZWFFwT3dvQUNnQm1iRzloZENCcGJuUmxjbkJ2YkdGMFpVRjBRMlZ1ZEhKdmFXUW9abXh2WVhRcE8zWmxZeklnSUdsdWRHVnljRzlzWVhSbFFYUkRaVzUwY205cFpDaDJaV015S1R0MlpXTXpJQ0JwYm5SbGNuQnZiR0YwWlVGMFEyVnVkSEp2YVdRb2RtVmpNeWs3ZG1Wak5DQWdhVzUwWlhKd2IyeGhkR1ZCZEVObGJuUnliMmxrS0habFl6UXBPMlpzYjJGMElHbHVkR1Z5Y0c5c1lYUmxRWFJUWVcxd2JHVW9abXh2WVhRc0lHbHVkQ2s3ZG1Wak1pQWdhVzUwWlhKd2IyeGhkR1ZCZEZOaGJYQnNaU2gyWldNeUxDQWdhVzUwS1R0MlpXTXpJQ0JwYm5SbGNuQnZiR0YwWlVGMFUyRnRjR3hsS0habFl6TXNJQ0JwYm5RcE8zWmxZelFnSUdsdWRHVnljRzlzWVhSbFFYUlRZVzF3YkdVb2RtVmpOQ3dnSUdsdWRDazdabXh2WVhRZ2FXNTBaWEp3YjJ4aGRHVkJkRTltWm5ObGRDaG1iRzloZEN3Z2RtVmpNaWs3ZG1Wak1pQWdhVzUwWlhKd2IyeGhkR1ZCZEU5bVpuTmxkQ2gyWldNeUxDQWdkbVZqTWlrN2RtVmpNeUFnYVc1MFpYSndiMnhoZEdWQmRFOW1abk5sZENoMlpXTXpMQ0FnZG1Wak1pazdkbVZqTkNBZ2FXNTBaWEp3YjJ4aGRHVkJkRTltWm5ObGRDaDJaV00wTENBZ2RtVmpNaWs3Q2dCMmIybGtJR0psWjJsdVNXNTJiMk5oZEdsdmJrbHVkR1Z5Ykc5amEwRlNRaWgyYjJsa0tUdDJiMmxrSUdWdVpFbHVkbTlqWVhScGIyNUpiblJsY214dlkydEJVa0lvZG05cFpDazdBR0p2YjJ3Z2FHVnNjR1Z5U1c1MmIyTmhkR2x2YmtWWVZDZ3BPd29BWm14dllYUWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNobWJHOWhkQ3dnZFdsdWRDazdkbVZqTWlBZ2FXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQ2gyWldNeUxDQWdkV2x1ZENrN2RtVmpNeUFnYVc1MFpYSndiMnhoZEdWQmRGWmxjblJsZUVGTlJDaDJaV016TENBZ2RXbHVkQ2s3ZG1Wak5DQWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNoMlpXTTBMQ0FnZFdsdWRDazdhVzUwSUNBZ2FXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQ2hwYm5Rc0lDQWdkV2x1ZENrN2FYWmxZeklnYVc1MFpYSndiMnhoZEdWQmRGWmxjblJsZUVGTlJDaHBkbVZqTWl3Z2RXbHVkQ2s3YVhabFl6TWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNocGRtVmpNeXdnZFdsdWRDazdhWFpsWXpRZ2FXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQ2hwZG1Wak5Dd2dkV2x1ZENrN2RXbHVkQ0FnYVc1MFpYSndiMnhoZEdWQmRGWmxjblJsZUVGTlJDaDFhVzUwTENBZ2RXbHVkQ2s3ZFhabFl6SWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNoMWRtVmpNaXdnZFdsdWRDazdkWFpsWXpNZ2FXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQ2gxZG1Wak15d2dkV2x1ZENrN2RYWmxZelFnYVc1MFpYSndiMnhoZEdWQmRGWmxjblJsZUVGTlJDaDFkbVZqTkN3Z2RXbHVkQ2s3Wm14dllYUXhObDkwSUdsdWRHVnljRzlzWVhSbFFYUldaWEowWlhoQlRVUW9abXh2WVhReE5sOTBMQ0IxYVc1MEtUdG1NVFoyWldNeUlDQWdhVzUwWlhKd2IyeGhkR1ZCZEZabGNuUmxlRUZOUkNobU1UWjJaV015TENBZ0lIVnBiblFwTzJZeE5uWmxZek1nSUNCcGJuUmxjbkJ2YkdGMFpVRjBWbVZ5ZEdWNFFVMUVLR1l4Tm5abFl6TXNJQ0FnZFdsdWRDazdaakUyZG1Wak5DQWdJR2x1ZEdWeWNHOXNZWFJsUVhSV1pYSjBaWGhCVFVRb1pqRTJkbVZqTkN3Z0lDQjFhVzUwS1RzS0FHWnNiMkYwTVRaZmRDQnBiblJsY25CdmJHRjBaVUYwUTJWdWRISnZhV1FvWm14dllYUXhObDkwS1R0bU1UWjJaV015SUNBZ2FXNTBaWEp3YjJ4aGRHVkJkRU5sYm5SeWIybGtLR1l4Tm5abFl6SXBPMll4Tm5abFl6TWdJQ0JwYm5SbGNuQnZiR0YwWlVGMFEyVnVkSEp2YVdRb1pqRTJkbVZqTXlrN1pqRTJkbVZqTkNBZ0lHbHVkR1Z5Y0c5c1lYUmxRWFJEWlc1MGNtOXBaQ2htTVRaMlpXTTBLVHRtYkc5aGRERTJYM1FnYVc1MFpYSndiMnhoZEdWQmRGTmhiWEJzWlNobWJHOWhkREUyWDNRc0lHbHVkQ2s3WmpFMmRtVmpNaUFnSUdsdWRHVnljRzlzWVhSbFFYUlRZVzF3YkdVb1pqRTJkbVZqTWl3Z0lDQnBiblFwTzJZeE5uWmxZek1nSUNCcGJuUmxjbkJ2YkdGMFpVRjBVMkZ0Y0d4bEtHWXhOblpsWXpNc0lDQWdhVzUwS1R0bU1UWjJaV00wSUNBZ2FXNTBaWEp3YjJ4aGRHVkJkRk5oYlhCc1pTaG1NVFoyWldNMExDQWdJR2x1ZENrN1pteHZZWFF4Tmw5MElHbHVkR1Z5Y0c5c1lYUmxRWFJQWm1aelpYUW9abXh2WVhReE5sOTBMQ0JtTVRaMlpXTXlLVHRtTVRaMlpXTXlJQ0FnYVc1MFpYSndiMnhoZEdWQmRFOW1abk5sZENobU1UWjJaV015TENBZ0lHWXhOblpsWXpJcE8yWXhOblpsWXpNZ0lDQnBiblJsY25CdmJHRjBaVUYwVDJabWMyVjBLR1l4Tm5abFl6TXNJQ0FnWmpFMmRtVmpNaWs3WmpFMmRtVmpOQ0FnSUdsdWRHVnljRzlzWVhSbFFYUlBabVp6WlhRb1pqRTJkbVZqTkN3Z0lDQm1NVFoyWldNeUtUc0tBSFYyWldNeUlHTnNiMk5yTW5nek1rRlNRaWdwTzNWcGJuUTJORjkwSUdOc2IyTnJRVkpDS0NrN2RYWmxZeklnWTJ4dlkydFNaV0ZzZEdsdFpUSjRNekpGV0ZRb0tUdDFhVzUwTmpSZmRDQmpiRzlqYTFKbFlXeDBhVzFsUlZoVUtDazdDZ0IxYVc1MElHWnlZV2R0Wlc1MFRXRnphMFpsZEdOb1FVMUVLSE4xWW5CaGMzTkpibkIxZEUxVEtUdDFhVzUwSUdaeVlXZHRaVzUwVFdGemEwWmxkR05vUVUxRUtHbHpkV0p3WVhOelNXNXdkWFJOVXlrN2RXbHVkQ0JtY21GbmJXVnVkRTFoYzJ0R1pYUmphRUZOUkNoMWMzVmljR0Z6YzBsdWNIVjBUVk1wTzNabFl6UWdJR1p5WVdkdFpXNTBSbVYwWTJoQlRVUW9jM1ZpY0dGemMwbHVjSFYwVFZNc0lDQjFhVzUwS1R0cGRtVmpOQ0JtY21GbmJXVnVkRVpsZEdOb1FVMUVLR2x6ZFdKd1lYTnpTVzV3ZFhSTlV5d2dkV2x1ZENrN2RYWmxZelFnWm5KaFoyMWxiblJHWlhSamFFRk5SQ2gxYzNWaWNHRnpjMGx1Y0hWMFRWTXNJSFZwYm5RcE93b0FkbTlwWkNCMGNtRmpaVTVXS0dGalkyVnNaWEpoZEdsdmJsTjBjblZqZEhWeVpVNVdMSFZwYm5Rc2RXbHVkQ3gxYVc1MExIVnBiblFzZFdsdWRDeDJaV016TEdac2IyRjBMSFpsWXpNc1pteHZZWFFzYVc1MEtUdDJiMmxrSUdWNFpXTjFkR1ZEWVd4c1lXSnNaVTVXS0hWcGJuUXNJR2x1ZENrN0NnQmliMjlzSUhKbGNHOXlkRWx1ZEdWeWMyVmpkR2x2Yms1V0tHWnNiMkYwTENCMWFXNTBLVHNLQUhadmFXUWdhV2R1YjNKbFNXNTBaWEp6WldOMGFXOXVUbFlvS1R0MmIybGtJSFJsY20xcGJtRjBaVkpoZVU1V0tDazdDZ0IyYjJsa0lHVjRaV04xZEdWRFlXeHNZV0pzWlU1V0tIVnBiblFzSUdsdWRDazdDZ0IyYjJsa0lIZHlhWFJsVUdGamEyVmtVSEpwYldsMGFYWmxTVzVrYVdObGN6UjRPRTVXS0hWcGJuUXNJSFZwYm5RcE93b0FjM1J5ZFdOMElHZHNYMFJsY0hSb1VtRnVaMlZRWVhKaGJXVjBaWEp6SUhzQWFHbG5hSEFnWm14dllYUWdibVZoY2p0b2FXZG9jQ0JtYkc5aGRDQm1ZWEk3YUdsbmFIQWdabXh2WVhRZ1pHbG1aanNBWm14dllYUWdibVZoY2p0bWJHOWhkQ0JtWVhJN1pteHZZWFFnWkdsbVpqc0FmVHQxYm1sbWIzSnRJR2RzWDBSbGNIUm9VbUZ1WjJWUVlYSmhiV1YwWlhKeklHZHNYMFJsY0hSb1VtRnVaMlU3Q2dCMWJtbG1iM0p0SUcxaGREUWdJR2RzWDAxdlpHVnNWbWxsZDAxaGRISnBlRHQxYm1sbWIzSnRJRzFoZERRZ0lHZHNYMUJ5YjJwbFkzUnBiMjVOWVhSeWFYZzdkVzVwWm05eWJTQnRZWFEwSUNCbmJGOU5iMlJsYkZacFpYZFFjbTlxWldOMGFXOXVUV0YwY21sNE8zVnVhV1p2Y20wZ2JXRjBNeUFnWjJ4ZlRtOXliV0ZzVFdGMGNtbDRPM1Z1YVdadmNtMGdiV0YwTkNBZ1oyeGZUVzlrWld4V2FXVjNUV0YwY21sNFNXNTJaWEp6WlR0MWJtbG1iM0p0SUcxaGREUWdJR2RzWDFCeWIycGxZM1JwYjI1TllYUnlhWGhKYm5abGNuTmxPM1Z1YVdadmNtMGdiV0YwTkNBZ1oyeGZUVzlrWld4V2FXVjNVSEp2YW1WamRHbHZiazFoZEhKcGVFbHVkbVZ5YzJVN2RXNXBabTl5YlNCdFlYUTBJQ0JuYkY5TmIyUmxiRlpwWlhkTllYUnlhWGhVY21GdWMzQnZjMlU3ZFc1cFptOXliU0J0WVhRMElDQm5iRjlRY205cVpXTjBhVzl1VFdGMGNtbDRWSEpoYm5Od2IzTmxPM1Z1YVdadmNtMGdiV0YwTkNBZ1oyeGZUVzlrWld4V2FXVjNVSEp2YW1WamRHbHZiazFoZEhKcGVGUnlZVzV6Y0c5elpUdDFibWxtYjNKdElHMWhkRFFnSUdkc1gwMXZaR1ZzVm1sbGQwMWhkSEpwZUVsdWRtVnljMlZVY21GdWMzQnZjMlU3ZFc1cFptOXliU0J0WVhRMElDQm5iRjlRY205cVpXTjBhVzl1VFdGMGNtbDRTVzUyWlhKelpWUnlZVzV6Y0c5elpUdDFibWxtYjNKdElHMWhkRFFnSUdkc1gwMXZaR1ZzVm1sbGQxQnliMnBsWTNScGIyNU5ZWFJ5YVhoSmJuWmxjbk5sVkhKaGJuTndiM05sTzNWdWFXWnZjbTBnWm14dllYUWdaMnhmVG05eWJXRnNVMk5oYkdVN2MzUnlkV04wSUdkc1gxQnZhVzUwVUdGeVlXMWxkR1Z5Y3lCN1pteHZZWFFnYzJsNlpUdG1iRzloZENCemFYcGxUV2x1TzJac2IyRjBJSE5wZW1WTllYZzdabXh2WVhRZ1ptRmtaVlJvY21WemFHOXNaRk5wZW1VN1pteHZZWFFnWkdsemRHRnVZMlZEYjI1emRHRnVkRUYwZEdWdWRXRjBhVzl1TzJac2IyRjBJR1JwYzNSaGJtTmxUR2x1WldGeVFYUjBaVzUxWVhScGIyNDdabXh2WVhRZ1pHbHpkR0Z1WTJWUmRXRmtjbUYwYVdOQmRIUmxiblZoZEdsdmJqdDlPM1Z1YVdadmNtMGdaMnhmVUc5cGJuUlFZWEpoYldWMFpYSnpJR2RzWDFCdmFXNTBPM04wY25WamRDQm5iRjlOWVhSbGNtbGhiRkJoY21GdFpYUmxjbk1nZTNabFl6UWdJR1Z0YVhOemFXOXVPM1psWXpRZ0lHRnRZbWxsYm5RN2RtVmpOQ0FnWkdsbVpuVnpaVHQyWldNMElDQnpjR1ZqZFd4aGNqdG1iRzloZENCemFHbHVhVzVsYzNNN2ZUdDFibWxtYjNKdElHZHNYMDFoZEdWeWFXRnNVR0Z5WVcxbGRHVnljeUFnWjJ4ZlJuSnZiblJOWVhSbGNtbGhiRHQxYm1sbWIzSnRJR2RzWDAxaGRHVnlhV0ZzVUdGeVlXMWxkR1Z5Y3lBZ1oyeGZRbUZqYTAxaGRHVnlhV0ZzTzNOMGNuVmpkQ0JuYkY5TWFXZG9kRk52ZFhKalpWQmhjbUZ0WlhSbGNuTWdlM1psWXpRZ0lHRnRZbWxsYm5RN2RtVmpOQ0FnWkdsbVpuVnpaVHQyWldNMElDQnpjR1ZqZFd4aGNqdDJaV00wSUNCd2IzTnBkR2x2Ymp0MlpXTTBJQ0JvWVd4bVZtVmpkRzl5TzNabFl6TWdJSE53YjNSRWFYSmxZM1JwYjI0N1pteHZZWFFnYzNCdmRFVjRjRzl1Wlc1ME8yWnNiMkYwSUhOd2IzUkRkWFJ2Wm1ZN1pteHZZWFFnYzNCdmRFTnZjME4xZEc5bVpqdG1iRzloZENCamIyNXpkR0Z1ZEVGMGRHVnVkV0YwYVc5dU8yWnNiMkYwSUd4cGJtVmhja0YwZEdWdWRXRjBhVzl1TzJac2IyRjBJSEYxWVdSeVlYUnBZMEYwZEdWdWRXRjBhVzl1TzMwN2MzUnlkV04wSUdkc1gweHBaMmgwVFc5a1pXeFFZWEpoYldWMFpYSnpJSHQyWldNMElDQmhiV0pwWlc1ME8zMDdkVzVwWm05eWJTQm5iRjlNYVdkb2RFMXZaR1ZzVUdGeVlXMWxkR1Z5Y3lBZ1oyeGZUR2xuYUhSTmIyUmxiRHR6ZEhKMVkzUWdaMnhmVEdsbmFIUk5iMlJsYkZCeWIyUjFZM1J6SUh0MlpXTTBJQ0J6WTJWdVpVTnZiRzl5TzMwN2RXNXBabTl5YlNCbmJGOU1hV2RvZEUxdlpHVnNVSEp2WkhWamRITWdaMnhmUm5KdmJuUk1hV2RvZEUxdlpHVnNVSEp2WkhWamREdDFibWxtYjNKdElHZHNYMHhwWjJoMFRXOWtaV3hRY205a2RXTjBjeUJuYkY5Q1lXTnJUR2xuYUhSTmIyUmxiRkJ5YjJSMVkzUTdjM1J5ZFdOMElHZHNYMHhwWjJoMFVISnZaSFZqZEhNZ2UzWmxZelFnSUdGdFltbGxiblE3ZG1Wak5DQWdaR2xtWm5WelpUdDJaV00wSUNCemNHVmpkV3hoY2p0OU8zTjBjblZqZENCbmJGOUdiMmRRWVhKaGJXVjBaWEp6SUh0MlpXTTBJQ0JqYjJ4dmNqdG1iRzloZENCa1pXNXphWFI1TzJac2IyRjBJSE4wWVhKME8yWnNiMkYwSUdWdVpEdG1iRzloZENCelkyRnNaVHQ5TzNWdWFXWnZjbTBnWjJ4ZlJtOW5VR0Z5WVcxbGRHVnljeUJuYkY5R2IyYzdDZ0JwYmlBZ0lDQm9hV2RvY0NCMWRtVmpNeUJuYkY5T2RXMVhiM0pyUjNKdmRYQnpPMk52Ym5OMElHaHBaMmh3SUhWMlpXTXpJR2RzWDFkdmNtdEhjbTkxY0ZOcGVtVWdQU0IxZG1Wak15Z3hMREVzTVNrN2FXNGdhR2xuYUhBZ2RYWmxZek1nWjJ4ZlYyOXlhMGR5YjNWd1NVUTdhVzRnYUdsbmFIQWdkWFpsWXpNZ1oyeGZURzlqWVd4SmJuWnZZMkYwYVc5dVNVUTdhVzRnYUdsbmFIQWdkWFpsWXpNZ1oyeGZSMnh2WW1Gc1NXNTJiMk5oZEdsdmJrbEVPMmx1SUdocFoyaHdJSFZwYm5RZ1oyeGZURzlqWVd4SmJuWnZZMkYwYVc5dVNXNWtaWGc3Q2dCcGJpQm9hV2RvY0NCcGJuUWdaMnhmUkdWMmFXTmxTVzVrWlhnN0NnQnZkWFFnWjJ4ZlRXVnphRkJsY2xabGNuUmxlRTVXSUh0MlpXTTBJR2RzWDFCdmMybDBhVzl1TzJac2IyRjBJR2RzWDFCdmFXNTBVMmw2WlR0bWJHOWhkQ0JuYkY5RGJHbHdSR2x6ZEdGdVkyVmJYVHRtYkc5aGRDQm5iRjlEZFd4c1JHbHpkR0Z1WTJWYlhUdHdaWEoyYVdWM1RsWWdkbVZqTkNCbmJGOVFiM05wZEdsdmJsQmxjbFpwWlhkT1ZsdGRPM0JsY25acFpYZE9WaUJtYkc5aGRDQm5iRjlEYkdsd1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxaYlhWdGRPM0JsY25acFpYZE9WaUJtYkc5aGRDQm5iRjlEZFd4c1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxaYlhWdGRPMzBnWjJ4ZlRXVnphRlpsY25ScFkyVnpUbFpiWFRzQWNHVnljSEpwYldsMGFYWmxUbFlnYjNWMElHZHNYMDFsYzJoUVpYSlFjbWx0YVhScGRtVk9WaUI3YVc1MElHZHNYMUJ5YVcxcGRHbDJaVWxFTzJsdWRDQm5iRjlNWVhsbGNqdHBiblFnWjJ4ZlZtbGxkM0J2Y25SSmJtUmxlRHRwYm5RZ1oyeGZWbWxsZDNCdmNuUk5ZWE5yVzEwN2NHVnlkbWxsZDA1V0lHbHVkQ0JuYkY5TVlYbGxjbEJsY2xacFpYZE9WbHRkTzNCbGNuWnBaWGRPVmlCcGJuUWdaMnhmVm1sbGQzQnZjblJOWVhOclVHVnlWbWxsZDA1V1cxMWJYVHQ5SUdkc1gwMWxjMmhRY21sdGFYUnBkbVZ6VGxaYlhUc0FiM1YwSUhWcGJuUWdaMnhmVUhKcGJXbDBhWFpsUTI5MWJuUk9WanR2ZFhRZ2RXbHVkQ0JuYkY5UWNtbHRhWFJwZG1WSmJtUnBZMlZ6VGxaYlhUdHBiaUIxYVc1MElHZHNYMDFsYzJoV2FXVjNRMjkxYm5ST1ZqdHBiaUIxYVc1MElHZHNYMDFsYzJoV2FXVjNTVzVrYVdObGMwNVdXelJkTzJOdmJuTjBJR2hwWjJod0lIVjJaV016SUdkc1gxZHZjbXRIY205MWNGTnBlbVVnUFNCMWRtVmpNeWd4TERFc01TazdhVzRnYUdsbmFIQWdkWFpsWXpNZ1oyeGZWMjl5YTBkeWIzVndTVVE3YVc0Z2FHbG5hSEFnZFhabFl6TWdaMnhmVEc5allXeEpiblp2WTJGMGFXOXVTVVE3YVc0Z2FHbG5hSEFnZFhabFl6TWdaMnhmUjJ4dlltRnNTVzUyYjJOaGRHbHZia2xFTzJsdUlHaHBaMmh3SUhWcGJuUWdaMnhmVEc5allXeEpiblp2WTJGMGFXOXVTVzVrWlhnN0NnQnZkWFFnZFdsdWRDQm5iRjlVWVhOclEyOTFiblJPVmp0amIyNXpkQ0JvYVdkb2NDQjFkbVZqTXlCbmJGOVhiM0pyUjNKdmRYQlRhWHBsSUQwZ2RYWmxZek1vTVN3eExERXBPMmx1SUdocFoyaHdJSFYyWldNeklHZHNYMWR2Y210SGNtOTFjRWxFTzJsdUlHaHBaMmh3SUhWMlpXTXpJR2RzWDB4dlkyRnNTVzUyYjJOaGRHbHZia2xFTzJsdUlHaHBaMmh3SUhWMlpXTXpJR2RzWDBkc2IySmhiRWx1ZG05allYUnBiMjVKUkR0cGJpQm9hV2RvY0NCMWFXNTBJR2RzWDB4dlkyRnNTVzUyYjJOaGRHbHZia2x1WkdWNE8ybHVJSFZwYm5RZ1oyeGZUV1Z6YUZacFpYZERiM1Z1ZEU1V08ybHVJSFZwYm5RZ1oyeGZUV1Z6YUZacFpYZEpibVJwWTJWelRsWmJORjA3Q2dCcGJpQm9hV2RvY0NCcGJuUWdaMnhmUkdWMmFXTmxTVzVrWlhnN2FXNGdhVzUwSUdkc1gwUnlZWGRKUkVGU1Fqc0tBR2x1SUdsdWRDQm5iRjlFY21GM1NVUTdDZ0JoZEhSeWFXSjFkR1VnZG1Wak5DQWdaMnhmUTI5c2IzSTdZWFIwY21saWRYUmxJSFpsWXpRZ0lHZHNYMU5sWTI5dVpHRnllVU52Ykc5eU8yRjBkSEpwWW5WMFpTQjJaV016SUNCbmJGOU9iM0p0WVd3N1lYUjBjbWxpZFhSbElIWmxZelFnSUdkc1gxWmxjblJsZUR0aGRIUnlhV0oxZEdVZ2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREE3WVhSMGNtbGlkWFJsSUhabFl6UWdJR2RzWDAxMWJIUnBWR1Y0UTI5dmNtUXhPMkYwZEhKcFluVjBaU0IyWldNMElDQm5iRjlOZFd4MGFWUmxlRU52YjNKa01qdGhkSFJ5YVdKMWRHVWdkbVZqTkNBZ1oyeGZUWFZzZEdsVVpYaERiMjl5WkRNN1lYUjBjbWxpZFhSbElIWmxZelFnSUdkc1gwMTFiSFJwVkdWNFEyOXZjbVEwTzJGMGRISnBZblYwWlNCMlpXTTBJQ0JuYkY5TmRXeDBhVlJsZUVOdmIzSmtOVHRoZEhSeWFXSjFkR1VnZG1Wak5DQWdaMnhmVFhWc2RHbFVaWGhEYjI5eVpEWTdZWFIwY21saWRYUmxJSFpsWXpRZ0lHZHNYMDExYkhScFZHVjRRMjl2Y21RM08yRjBkSEpwWW5WMFpTQm1iRzloZENCbmJGOUdiMmREYjI5eVpEc0tBR2x1SUhabFl6UWdJR2RzWDBOdmJHOXlPMmx1SUhabFl6UWdJR2RzWDFObFkyOXVaR0Z5ZVVOdmJHOXlPMmx1SUhabFl6TWdJR2RzWDA1dmNtMWhiRHRwYmlCMlpXTTBJQ0JuYkY5V1pYSjBaWGc3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREE3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREU3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREk3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRE03YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFE3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFU3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFk3YVc0Z2RtVmpOQ0FnWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRGM3YVc0Z1pteHZZWFFnWjJ4ZlJtOW5RMjl2Y21RN0NnQWdJQ0FnSUNBZ0lIWmxZelFnSUdkc1gwTnNhWEJXWlhKMFpYZzdkbUZ5ZVdsdVp5QjJaV00wSUNCbmJGOUdjbTl1ZEVOdmJHOXlPM1poY25scGJtY2dkbVZqTkNBZ1oyeGZRbUZqYTBOdmJHOXlPM1poY25scGJtY2dkbVZqTkNBZ1oyeGZSbkp2Ym5SVFpXTnZibVJoY25sRGIyeHZjanQyWVhKNWFXNW5JSFpsWXpRZ0lHZHNYMEpoWTJ0VFpXTnZibVJoY25sRGIyeHZjanQyWVhKNWFXNW5JSFpsWXpRZ0lHZHNYMVJsZUVOdmIzSmtXMTA3ZG1GeWVXbHVaeUJtYkc5aGRDQm5iRjlHYjJkR2NtRm5RMjl2Y21RN0NnQWdJQ0FnZG1Wak5DQWdaMnhmUTJ4cGNGWmxjblJsZUR0dmRYUWdkbVZqTkNBZ1oyeGZSbkp2Ym5SRGIyeHZjanR2ZFhRZ2RtVmpOQ0FnWjJ4ZlFtRmphME52Ykc5eU8yOTFkQ0IyWldNMElDQm5iRjlHY205dWRGTmxZMjl1WkdGeWVVTnZiRzl5TzI5MWRDQjJaV00wSUNCbmJGOUNZV05yVTJWamIyNWtZWEo1UTI5c2IzSTdiM1YwSUhabFl6UWdJR2RzWDFSbGVFTnZiM0prVzEwN2IzVjBJR1pzYjJGMElHZHNYMFp2WjBaeVlXZERiMjl5WkRzS0FIWmxZelFnWjJ4ZlVHOXphWFJwYjI0N1pteHZZWFFnWjJ4ZlVHOXBiblJUYVhwbE93QnZkWFFnWm14dllYUWdaMnhmUTJ4cGNFUnBjM1JoYm1ObFcxMDdBRzkxZENCbmJGOVFaWEpXWlhKMFpYZ2dlM1psWXpRZ1oyeGZVRzl6YVhScGIyNDdabXh2WVhRZ1oyeGZVRzlwYm5SVGFYcGxPMlpzYjJGMElHZHNYME5zYVhCRWFYTjBZVzVqWlZ0ZE93QjJaV00wSUdkc1gwTnNhWEJXWlhKMFpYZzdkbVZqTkNCbmJGOUdjbTl1ZEVOdmJHOXlPM1psWXpRZ1oyeGZRbUZqYTBOdmJHOXlPM1psWXpRZ1oyeGZSbkp2Ym5SVFpXTnZibVJoY25sRGIyeHZjanQyWldNMElHZHNYMEpoWTJ0VFpXTnZibVJoY25sRGIyeHZjanQyWldNMElHZHNYMVJsZUVOdmIzSmtXMTA3Wm14dllYUWdaMnhmUm05blJuSmhaME52YjNKa093Qm1iRzloZENCbmJGOURkV3hzUkdsemRHRnVZMlZiWFRzQWZUc0tBR2x1ZENCbmJGOVdaWEowWlhoSlJEc0FhVzUwSUdkc1gwbHVjM1JoYm1ObFNVUTdBR2x1SUdsdWRDQm5iRjlXWlhKMFpYaEpibVJsZUR0cGJpQnBiblFnWjJ4ZlNXNXpkR0Z1WTJWSmJtUmxlRHNBYVc0Z2FXNTBJR2RzWDBKaGMyVldaWEowWlhoQlVrSTdhVzRnYVc1MElHZHNYMEpoYzJWSmJuTjBZVzVqWlVGU1FqdHBiaUJwYm5RZ1oyeGZSSEpoZDBsRVFWSkNPd0J2ZFhRZ2FXNTBJR2RzWDFacFpYZHdiM0owU1c1a1pYZzdiM1YwSUdsdWRDQm5iRjlNWVhsbGNqc0FhVzRnYVc1MElHZHNYMEpoYzJWV1pYSjBaWGc3YVc0Z2FXNTBJR2RzWDBKaGMyVkpibk4wWVc1alpUdHBiaUJwYm5RZ1oyeGZSSEpoZDBsRU93QnZkWFFnYVc1MElHZHNYMVpwWlhkd2IzSjBUV0Z6YTF0ZE8yOTFkQ0JwYm5RZ1oyeGZVMlZqYjI1a1lYSjVWbWxsZDNCdmNuUk5ZWE5yVGxaYlhUdHZkWFFnZG1Wak5DQm5iRjlUWldOdmJtUmhjbmxRYjNOcGRHbHZiazVXTzI5MWRDQjJaV00wSUdkc1gxQnZjMmwwYVc5dVVHVnlWbWxsZDA1V1cxMDdiM1YwSUdsdWRDQWdaMnhmVm1sbGQzQnZjblJOWVhOclVHVnlWbWxsZDA1V1cxMDdBR2hwWjJod0lDQWdkbVZqTkNBZ1oyeGZVRzl6YVhScGIyNDdiV1ZrYVhWdGNDQm1iRzloZENCbmJGOVFiMmx1ZEZOcGVtVTdBR2x1SUdocFoyaHdJR2x1ZENCbmJGOVdaWEowWlhoSlJEdHBiaUJvYVdkb2NDQnBiblFnWjJ4ZlNXNXpkR0Z1WTJWSlJEc0FhVzRnYUdsbmFIQWdhVzUwSUdkc1gxWmxjblJsZUVsdVpHVjRPMmx1SUdocFoyaHdJR2x1ZENCbmJGOUpibk4wWVc1alpVbHVaR1Y0T3dCb2FXZG9jQ0IyWldNMElDQm5iRjlRYjNOcGRHbHZianRvYVdkb2NDQm1iRzloZENCbmJGOVFiMmx1ZEZOcGVtVTdBRzkxZENCbmJGOVFaWEpXWlhKMFpYZ2dlMmhwWjJod0lIWmxZelFnSUdkc1gxQnZjMmwwYVc5dU8yaHBaMmh3SUdac2IyRjBJR2RzWDFCdmFXNTBVMmw2WlR0OU93QnBiaUJvYVdkb2NDQnBiblFnWjJ4ZlJHVjJhV05sU1c1a1pYZzdhVzRnYUdsbmFIQWdhVzUwSUdkc1gxWnBaWGRKYm1SbGVEc0tBR2x1SUdocFoyaHdJSFZwYm5RZ1oyeGZWbWxsZDBsRVgwOVdVanNLQUdsdUlHZHNYMUJsY2xabGNuUmxlQ0I3ZG1Wak5DQm5iRjlRYjNOcGRHbHZianRtYkc5aGRDQm5iRjlRYjJsdWRGTnBlbVU3Wm14dllYUWdaMnhmUTJ4cGNFUnBjM1JoYm1ObFcxMDdBR1pzYjJGMElHZHNYME4xYkd4RWFYTjBZVzVqWlZ0ZE8zWmxZelFnWjJ4ZlUyVmpiMjVrWVhKNVVHOXphWFJwYjI1T1ZqdDJaV00wSUdkc1gxQnZjMmwwYVc5dVVHVnlWbWxsZDA1V1cxMDdBSDBnWjJ4ZmFXNWJYVHRwYmlCcGJuUWdaMnhmVUhKcGJXbDBhWFpsU1VSSmJqdHZkWFFnWjJ4ZlVHVnlWbVZ5ZEdWNElIdDJaV00wSUdkc1gxQnZjMmwwYVc5dU8yWnNiMkYwSUdkc1gxQnZhVzUwVTJsNlpUdG1iRzloZENCbmJGOURiR2x3UkdsemRHRnVZMlZiWFRzS0FIMDdiM1YwSUdsdWRDQm5iRjlRY21sdGFYUnBkbVZKUkR0dmRYUWdhVzUwSUdkc1gweGhlV1Z5T3dCdmRYUWdhVzUwSUdkc1gxWnBaWGR3YjNKMFNXNWtaWGc3QUc5MWRDQjJaV00wSUdkc1gwTnNhWEJXWlhKMFpYZzdBR2x1SUdsdWRDQm5iRjlKYm5adlkyRjBhVzl1U1VRN0FHbHVJR2RzWDFCbGNsWmxjblJsZUNCN2FHbG5hSEFnZG1Wak5DQm5iRjlRYjNOcGRHbHZianRvYVdkb2NDQm1iRzloZENCbmJGOVFiMmx1ZEZOcGVtVTdmU0JuYkY5cGJsdGRPd3BwYmlCb2FXZG9jQ0JwYm5RZ1oyeGZVSEpwYldsMGFYWmxTVVJKYmp0cGJpQm9hV2RvY0NCcGJuUWdaMnhmU1c1MmIyTmhkR2x2YmtsRU93cHZkWFFnWjJ4ZlVHVnlWbVZ5ZEdWNElIdG9hV2RvY0NCMlpXTTBJR2RzWDFCdmMybDBhVzl1TzJocFoyaHdJR1pzYjJGMElHZHNYMUJ2YVc1MFUybDZaVHQ5T3dwdmRYUWdhR2xuYUhBZ2FXNTBJR2RzWDFCeWFXMXBkR2wyWlVsRU8yOTFkQ0JvYVdkb2NDQnBiblFnWjJ4ZlRHRjVaWEk3Q2dCcGJpQnBiblFnWjJ4ZlVHRjBZMmhXWlhKMGFXTmxjMGx1TzJsdUlHbHVkQ0JuYkY5UWNtbHRhWFJwZG1WSlJEdHBiaUJwYm5RZ1oyeGZTVzUyYjJOaGRHbHZia2xFTzI5MWRDQm5iRjlRWlhKV1pYSjBaWGdnZTNabFl6UWdaMnhmVUc5emFYUnBiMjQ3Wm14dllYUWdaMnhmVUc5cGJuUlRhWHBsTzJac2IyRjBJR2RzWDBOc2FYQkVhWE4wWVc1alpWdGRPd0JtYkc5aGRDQm5iRjlEZFd4c1JHbHpkR0Z1WTJWYlhUdHBiblFnSUdkc1gxWnBaWGR3YjNKMFRXRnphMXRkTzNabFl6UWdaMnhmVTJWamIyNWtZWEo1VUc5emFYUnBiMjVPVmp0cGJuUWdJR2RzWDFObFkyOXVaR0Z5ZVZacFpYZHdiM0owVFdGemEwNVdXMTA3ZG1Wak5DQm5iRjlRYjNOcGRHbHZibEJsY2xacFpYZE9WbHRkTzJsdWRDQWdaMnhmVm1sbGQzQnZjblJOWVhOclVHVnlWbWxsZDA1V1cxMDdBSDBnWjJ4ZmIzVjBXMTA3Y0dGMFkyZ2diM1YwSUdac2IyRjBJR2RzWDFSbGMzTk1aWFpsYkU5MWRHVnlXelJkTzNCaGRHTm9JRzkxZENCbWJHOWhkQ0JuYkY5VVpYTnpUR1YyWld4SmJtNWxjbHN5WFRzS0FHOTFkQ0JwYm5RZ1oyeGZWbWxsZDNCdmNuUkpibVJsZUR0dmRYUWdhVzUwSUdkc1gweGhlV1Z5T3dvQWFXNGdhR2xuYUhBZ2FXNTBJR2RzWDFCaGRHTm9WbVZ5ZEdsalpYTkpianRwYmlCb2FXZG9jQ0JwYm5RZ1oyeGZVSEpwYldsMGFYWmxTVVE3YVc0Z2FHbG5hSEFnYVc1MElHZHNYMGx1ZG05allYUnBiMjVKUkR0dmRYUWdaMnhmVUdWeVZtVnlkR1Y0SUh0b2FXZG9jQ0IyWldNMElHZHNYMUJ2YzJsMGFXOXVPMmhwWjJod0lHWnNiMkYwSUdkc1gxQnZhVzUwVTJsNlpUc0FmU0JuYkY5dmRYUmJYVHR3WVhSamFDQnZkWFFnYUdsbmFIQWdabXh2WVhRZ1oyeGZWR1Z6YzB4bGRtVnNUM1YwWlhKYk5GMDdjR0YwWTJnZ2IzVjBJR2hwWjJod0lHWnNiMkYwSUdkc1gxUmxjM05NWlhabGJFbHVibVZ5V3pKZE8zQmhkR05vSUc5MWRDQm9hV2RvY0NCMlpXTTBJR2RzWDBKdmRXNWthVzVuUW05NFQwVlRXekpkTzNCaGRHTm9JRzkxZENCb2FXZG9jQ0IyWldNMElHZHNYMEp2ZFc1a2FXNW5RbTk0UlZoVVd6SmRPd29BY0dGMFkyZ2diM1YwSUdocFoyaHdJSFpsWXpRZ1oyeGZRbTkxYm1ScGJtZENiM2hiTWwwN0NnQnBiaUJwYm5RZ1oyeGZVR0YwWTJoV1pYSjBhV05sYzBsdU8ybHVJR2x1ZENCbmJGOVFjbWx0YVhScGRtVkpSRHRwYmlCMlpXTXpJR2RzWDFSbGMzTkRiMjl5WkR0d1lYUmphQ0JwYmlCbWJHOWhkQ0JuYkY5VVpYTnpUR1YyWld4UGRYUmxjbHMwWFR0d1lYUmphQ0JwYmlCbWJHOWhkQ0JuYkY5VVpYTnpUR1YyWld4SmJtNWxjbHN5WFR0dmRYUWdaMnhmVUdWeVZtVnlkR1Y0SUh0MlpXTTBJR2RzWDFCdmMybDBhVzl1TzJac2IyRjBJR2RzWDFCdmFXNTBVMmw2WlR0bWJHOWhkQ0JuYkY5RGJHbHdSR2x6ZEdGdVkyVmJYVHNBYjNWMElHbHVkQ0FnWjJ4ZlZtbGxkM0J2Y25STllYTnJXMTA3YjNWMElIWmxZelFnWjJ4ZlUyVmpiMjVrWVhKNVVHOXphWFJwYjI1T1ZqdHZkWFFnYVc1MElDQm5iRjlUWldOdmJtUmhjbmxXYVdWM2NHOXlkRTFoYzJ0T1ZsdGRPMjkxZENCMlpXTTBJR2RzWDFCdmMybDBhVzl1VUdWeVZtbGxkMDVXVzEwN2IzVjBJR2x1ZENBZ1oyeGZWbWxsZDNCdmNuUk5ZWE5yVUdWeVZtbGxkMDVXVzEwN0FHbHVJR2hwWjJod0lHbHVkQ0JuYkY5UVlYUmphRlpsY25ScFkyVnpTVzQ3YVc0Z2FHbG5hSEFnYVc1MElHZHNYMUJ5YVcxcGRHbDJaVWxFTzJsdUlHaHBaMmh3SUhabFl6TWdaMnhmVkdWemMwTnZiM0prTzNCaGRHTm9JR2x1SUdocFoyaHdJR1pzYjJGMElHZHNYMVJsYzNOTVpYWmxiRTkxZEdWeVd6UmRPM0JoZEdOb0lHbHVJR2hwWjJod0lHWnNiMkYwSUdkc1gxUmxjM05NWlhabGJFbHVibVZ5V3pKZE8yOTFkQ0JuYkY5UVpYSldaWEowWlhnZ2UyaHBaMmh3SUhabFl6UWdaMnhmVUc5emFYUnBiMjQ3YUdsbmFIQWdabXh2WVhRZ1oyeGZVRzlwYm5SVGFYcGxPd0IyWldNMElDQm5iRjlHY21GblEyOXZjbVE3WW05dmJDQWdaMnhmUm5KdmJuUkdZV05wYm1jN1pteHZZWFFnWjJ4ZlJuSmhaMFJsY0hSb093QjJaV015SUdkc1gxQnZhVzUwUTI5dmNtUTdBRzkxZENCcGJuUWdaMnhmUm5KaFoxTjBaVzVqYVd4U1pXWkJVa0k3QUhabFl6UWdaMnhmUm5KaFowTnZiRzl5T3dCMllYSjVhVzVuSUhabFl6UWdJR2RzWDBOdmJHOXlPM1poY25scGJtY2dkbVZqTkNBZ1oyeGZVMlZqYjI1a1lYSjVRMjlzYjNJN2RtRnllV2x1WnlCMlpXTTBJQ0JuYkY5VVpYaERiMjl5WkZ0ZE8zWmhjbmxwYm1jZ1pteHZZWFFnWjJ4ZlJtOW5SbkpoWjBOdmIzSmtPd0JwYmlCbWJHOWhkQ0JuYkY5RGJHbHdSR2x6ZEdGdVkyVmJYVHNBYVc0Z1pteHZZWFFnWjJ4ZlJtOW5SbkpoWjBOdmIzSmtPMmx1SUhabFl6UWdJR2RzWDFSbGVFTnZiM0prVzEwN2FXNGdkbVZqTkNBZ1oyeGZRMjlzYjNJN2FXNGdkbVZqTkNBZ1oyeGZVMlZqYjI1a1lYSjVRMjlzYjNJN0FHbHVJR2RzWDFCbGNrWnlZV2R0Wlc1MElIdHBiaUJtYkc5aGRDQm5iRjlHYjJkR2NtRm5RMjl2Y21RN2FXNGdkbVZqTkNBZ1oyeGZWR1Y0UTI5dmNtUmJYVHRwYmlCMlpXTTBJQ0JuYkY5RGIyeHZjanRwYmlCMlpXTTBJQ0JuYkY5VFpXTnZibVJoY25sRGIyeHZjanQ5T3dCbWJHRjBJR2x1SUdsdWRDQm5iRjlRY21sdGFYUnBkbVZKUkRzQVpteGhkQ0JwYmlBZ2FXNTBJQ0JuYkY5VFlXMXdiR1ZKUkRzZ0lDQWdJR2x1SUNCMlpXTXlJR2RzWDFOaGJYQnNaVkJ2YzJsMGFXOXVPeUFnSUNBZ2IzVjBJR2x1ZENBZ1oyeGZVMkZ0Y0d4bFRXRnphMXRkT3dCMWJtbG1iM0p0SUdsdWRDQm5iRjlPZFcxVFlXMXdiR1Z6T3dCbWJHRjBJR2x1SUNCcGJuUWdJR2RzWDFOaGJYQnNaVTFoYzJ0SmJsdGRPd0JtYkdGMElHbHVJR2x1ZENCbmJGOU1ZWGxsY2p0bWJHRjBJR2x1SUdsdWRDQm5iRjlXYVdWM2NHOXlkRWx1WkdWNE93QnBiaUJtYkc5aGRDQm5iRjlEZFd4c1JHbHpkR0Z1WTJWYlhUdGliMjlzSUdkc1gwaGxiSEJsY2tsdWRtOWpZWFJwYjI0N0FHWnNZWFFnYVc0Z2FYWmxZeklnWjJ4ZlJuSmhaMU5wZW1WRldGUTdabXhoZENCcGJpQnBiblFnSUNCbmJGOUdjbUZuU1c1MmIyTmhkR2x2YmtOdmRXNTBSVmhVT3dCcGJpQjJaV015SUdkc1gwSmhjbmxEYjI5eVpFNXZVR1Z5YzNCQlRVUTdhVzRnZG1Wak1pQm5iRjlDWVhKNVEyOXZjbVJPYjFCbGNuTndRMlZ1ZEhKdmFXUkJUVVE3YVc0Z2RtVmpNaUJuYkY5Q1lYSjVRMjl2Y21ST2IxQmxjbk53VTJGdGNHeGxRVTFFTzJsdUlIWmxZeklnWjJ4ZlFtRnllVU52YjNKa1UyMXZiM1JvUVUxRU8ybHVJSFpsWXpJZ1oyeGZRbUZ5ZVVOdmIzSmtVMjF2YjNSb1EyVnVkSEp2YVdSQlRVUTdhVzRnZG1Wak1pQm5iRjlDWVhKNVEyOXZjbVJUYlc5dmRHaFRZVzF3YkdWQlRVUTdhVzRnZG1Wak15Qm5iRjlDWVhKNVEyOXZjbVJRZFd4c1RXOWtaV3hCVFVRN0FHbHVJR0p2YjJ3Z1oyeGZSbkpoWjBaMWJHeDVRMjkyWlhKbFpFNVdPd0JtYkdGMElHbHVJR2wyWldNeUlHZHNYMFp5WVdkdFpXNTBVMmw2WlU1V08yWnNZWFFnYVc0Z2FXNTBJQ0FnWjJ4ZlNXNTJiMk5oZEdsdmJuTlFaWEpRYVhobGJFNVdPMmx1SUhabFl6TWdaMnhmUW1GeWVVTnZiM0prVGxZN2FXNGdkbVZqTXlCbmJGOUNZWEo1UTI5dmNtUk9iMUJsY25Od1RsWTdBRzFsWkdsMWJYQWdkbVZqTkNCbmJGOUdjbUZuUTI5dmNtUTdJQ0FnSUNBZ0lDQmliMjlzSUdkc1gwWnliMjUwUm1GamFXNW5PMjFsWkdsMWJYQWdkbVZqTkNCbmJGOUdjbUZuUTI5c2IzSTdiV1ZrYVhWdGNDQjJaV015SUdkc1gxQnZhVzUwUTI5dmNtUTdBR2hwWjJod0lDQWdkbVZqTkNBZ1oyeGZSbkpoWjBOdmIzSmtPeUFnSUNBZ0lDQWdZbTl2YkNBZ1oyeGZSbkp2Ym5SR1lXTnBibWM3YldWa2FYVnRjQ0IyWldNeUlDQm5iRjlRYjJsdWRFTnZiM0prTzJocFoyaHdJQ0FnWm14dllYUWdaMnhmUm5KaFowUmxjSFJvT3dCaWIyOXNJR2RzWDBobGJIQmxja2x1ZG05allYUnBiMjQ3Wm14aGRDQnBiaUJvYVdkb2NDQnBiblFnWjJ4ZlVISnBiV2wwYVhabFNVUTdabXhoZENCcGJpQm9hV2RvY0NCcGJuUWdaMnhmVEdGNVpYSTdBR1pzWVhRZ0lHbHVJR3h2ZDNBZ0lDQWdJR2x1ZENCbmJGOVRZVzF3YkdWSlJEc2dJQ0FnSUNCcGJpQnRaV1JwZFcxd0lIWmxZeklnWjJ4ZlUyRnRjR3hsVUc5emFYUnBiMjQ3Wm14aGRDQWdhVzRnYUdsbmFIQWdJQ0FnYVc1MElHZHNYMU5oYlhCc1pVMWhjMnRKYmx0ZE95QWdJQ0FnYjNWMElHaHBaMmh3SUNBZ0lHbHVkQ0JuYkY5VFlXMXdiR1ZOWVhOclcxMDdBSFZ1YVdadmNtMGdiRzkzY0NCcGJuUWdaMnhmVG5WdFUyRnRjR3hsY3pzQWFHbG5hSEFnWm14dllYUWdaMnhmUm5KaFowUmxjSFJvUlZoVU93Qm1iR0YwSUdsdUlHbDJaV015SUdkc1gwWnlZV2R0Wlc1MFUybDZaVTVXTzJac1lYUWdhVzRnYVc1MElDQWdaMnhmU1c1MmIyTmhkR2x2Ym5OUVpYSlFhWGhsYkU1V093QnBiaUIyWldNeklHZHNYMEpoY25sRGIyOXlaRTVXTzJsdUlIWmxZek1nWjJ4ZlFtRnllVU52YjNKa1RtOVFaWEp6Y0U1V093QjFibWxtYjNKdElIVnBiblFnWjJ4ZlUzVmlSM0p2ZFhCVGFYcGxRVkpDTzJsdUlIVnBiblFnSUNBZ0lHZHNYMU4xWWtkeWIzVndTVzUyYjJOaGRHbHZia0ZTUWp0cGJpQjFhVzUwTmpSZmRDQm5iRjlUZFdKSGNtOTFjRVZ4VFdGemEwRlNRanRwYmlCMWFXNTBOalJmZENCbmJGOVRkV0pIY205MWNFZGxUV0Z6YTBGU1FqdHBiaUIxYVc1ME5qUmZkQ0JuYkY5VGRXSkhjbTkxY0VkMFRXRnphMEZTUWp0cGJpQjFhVzUwTmpSZmRDQm5iRjlUZFdKSGNtOTFjRXhsVFdGemEwRlNRanRwYmlCMWFXNTBOalJmZENCbmJGOVRkV0pIY205MWNFeDBUV0Z6YTBGU1Fqc0tBSFZ1YVdadmNtMGdkV2x1ZENCbmJGOVRkV0pIY205MWNGTnBlbVZCVWtJN1pteGhkQ0JwYmlCMWFXNTBJQ0FnSUNCbmJGOVRkV0pIY205MWNFbHVkbTlqWVhScGIyNUJVa0k3Wm14aGRDQnBiaUIxYVc1ME5qUmZkQ0JuYkY5VGRXSkhjbTkxY0VWeFRXRnphMEZTUWp0bWJHRjBJR2x1SUhWcGJuUTJORjkwSUdkc1gxTjFZa2R5YjNWd1IyVk5ZWE5yUVZKQ08yWnNZWFFnYVc0Z2RXbHVkRFkwWDNRZ1oyeGZVM1ZpUjNKdmRYQkhkRTFoYzJ0QlVrSTdabXhoZENCcGJpQjFhVzUwTmpSZmRDQm5iRjlUZFdKSGNtOTFjRXhsVFdGemEwRlNRanRtYkdGMElHbHVJSFZwYm5RMk5GOTBJR2RzWDFOMVlrZHliM1Z3VEhSTllYTnJRVkpDT3dvQVpteGhkQ0JwYmlCb2FXZG9jQ0JwYm5RZ1oyeGZSR1YyYVdObFNXNWtaWGc3Wm14aGRDQnBiaUJvYVdkb2NDQnBiblFnWjJ4ZlZtbGxkMGx1WkdWNE93b0FhVzRnYldWa2FYVnRjQ0IxYVc1MElDQm5iRjlUZFdKbmNtOTFjRk5wZW1VN2FXNGdiV1ZrYVhWdGNDQjFhVzUwSUNCbmJGOVRkV0puY205MWNFbHVkbTlqWVhScGIyNUpSRHRwYmlCb2FXZG9jQ0FnSUhWMlpXTTBJR2RzWDFOMVltZHliM1Z3UlhGTllYTnJPMmx1SUdocFoyaHdJQ0FnZFhabFl6UWdaMnhmVTNWaVozSnZkWEJIWlUxaGMyczdhVzRnYUdsbmFIQWdJQ0IxZG1Wak5DQm5iRjlUZFdKbmNtOTFjRWQwVFdGemF6dHBiaUJvYVdkb2NDQWdJSFYyWldNMElHZHNYMU4xWW1keWIzVndUR1ZOWVhOck8ybHVJR2hwWjJod0lDQWdkWFpsWXpRZ1oyeGZVM1ZpWjNKdmRYQk1kRTFoYzJzN2FXNGdhR2xuYUhBZ0lDQjFhVzUwSUNCbmJGOVhZWEp3YzFCbGNsTk5UbFk3YVc0Z2FHbG5hSEFnSUNCMWFXNTBJQ0JuYkY5VFRVTnZkVzUwVGxZN2FXNGdhR2xuYUhBZ0lDQjFhVzUwSUNCbmJGOVhZWEp3U1VST1ZqdHBiaUJvYVdkb2NDQWdJSFZwYm5RZ0lHZHNYMU5OU1VST1Zqc0tBR1pzWVhRZ2FXNGdiV1ZrYVhWdGNDQjFhVzUwSUNCbmJGOVRkV0puY205MWNGTnBlbVU3Wm14aGRDQnBiaUJ0WldScGRXMXdJSFZwYm5RZ0lHZHNYMU4xWW1keWIzVndTVzUyYjJOaGRHbHZia2xFTzJac1lYUWdhVzRnYUdsbmFIQWdJQ0IxZG1Wak5DQm5iRjlUZFdKbmNtOTFjRVZ4VFdGemF6dG1iR0YwSUdsdUlHaHBaMmh3SUNBZ2RYWmxZelFnWjJ4ZlUzVmlaM0p2ZFhCSFpVMWhjMnM3Wm14aGRDQnBiaUJvYVdkb2NDQWdJSFYyWldNMElHZHNYMU4xWW1keWIzVndSM1JOWVhOck8yWnNZWFFnYVc0Z2FHbG5hSEFnSUNCMWRtVmpOQ0JuYkY5VGRXSm5jbTkxY0V4bFRXRnphenRtYkdGMElHbHVJR2hwWjJod0lDQWdkWFpsWXpRZ1oyeGZVM1ZpWjNKdmRYQk1kRTFoYzJzN1pteGhkQ0JwYmlCb2FXZG9jQ0FnSUhWcGJuUWdJR2RzWDFkaGNuQnpVR1Z5VTAxT1ZqdG1iR0YwSUdsdUlHaHBaMmh3SUNBZ2RXbHVkQ0FnWjJ4ZlUwMURiM1Z1ZEU1V08yWnNZWFFnYVc0Z2FHbG5hSEFnSUNCMWFXNTBJQ0JuYkY5WFlYSndTVVJPVmp0bWJHRjBJR2x1SUdocFoyaHdJQ0FnZFdsdWRDQWdaMnhmVTAxSlJFNVdPd29BYVc0Z2FHbG5hSEFnSUNCMWFXNTBJQ0JuYkY5T2RXMVRkV0puY205MWNITTdhVzRnYUdsbmFIQWdJQ0IxYVc1MElDQm5iRjlUZFdKbmNtOTFjRWxFT3dvQVkyOXVjM1FnZFdsdWRDQm5iRjlTWVhsR2JHRm5jMDV2Ym1WT1ZpQTlJREJWTzJOdmJuTjBJSFZwYm5RZ1oyeGZVbUY1Um14aFozTlBjR0Z4ZFdWT1ZpQTlJREZWTzJOdmJuTjBJSFZwYm5RZ1oyeGZVbUY1Um14aFozTk9iMDl3WVhGMVpVNVdJRDBnTWxVN1kyOXVjM1FnZFdsdWRDQm5iRjlTWVhsR2JHRm5jMVJsY20xcGJtRjBaVTl1Um1seWMzUklhWFJPVmlBOUlEUlZPMk52Ym5OMElIVnBiblFnWjJ4ZlVtRjVSbXhoWjNOVGEybHdRMnh2YzJWemRFaHBkRk5vWVdSbGNrNVdJRDBnT0ZVN1kyOXVjM1FnZFdsdWRDQm5iRjlTWVhsR2JHRm5jME4xYkd4Q1lXTnJSbUZqYVc1blZISnBZVzVuYkdWelRsWWdQU0F4TmxVN1kyOXVjM1FnZFdsdWRDQm5iRjlTWVhsR2JHRm5jME4xYkd4R2NtOXVkRVpoWTJsdVoxUnlhV0Z1WjJ4bGMwNVdJRDBnTXpKVk8yTnZibk4wSUhWcGJuUWdaMnhmVW1GNVJteGhaM05EZFd4c1QzQmhjWFZsVGxZZ1BTQTJORlU3WTI5dWMzUWdkV2x1ZENCbmJGOVNZWGxHYkdGbmMwTjFiR3hPYjA5d1lYRjFaVTVXSUQwZ01USTRWVHNLQUdsdUlDQWdJSFYyWldNeklDQm5iRjlNWVhWdVkyaEpSRTVXTzJsdUlDQWdJSFYyWldNeklDQm5iRjlNWVhWdVkyaFRhWHBsVGxZN0NnQnBiaUFnSUNCMWRtVmpNeUFnWjJ4ZlRHRjFibU5vU1VST1ZqdHBiaUFnSUNCMWRtVmpNeUFnWjJ4ZlRHRjFibU5vVTJsNlpVNVdPMmx1SUNBZ0lDQnBiblFnSUNCbmJGOVFjbWx0YVhScGRtVkpSRHRwYmlBZ0lDQWdhVzUwSUNBZ1oyeGZTVzV6ZEdGdVkyVkpSRHRwYmlBZ0lDQWdhVzUwSUNBZ1oyeGZTVzV6ZEdGdVkyVkRkWE4wYjIxSmJtUmxlRTVXTzJsdUlDQWdJSFpsWXpNZ0lDQm5iRjlYYjNKc1pGSmhlVTl5YVdkcGJrNVdPMmx1SUNBZ0lIWmxZek1nSUNCbmJGOVhiM0pzWkZKaGVVUnBjbVZqZEdsdmJrNVdPMmx1SUNBZ0lIWmxZek1nSUNCbmJGOVBZbXBsWTNSU1lYbFBjbWxuYVc1T1ZqdHBiaUFnSUNCMlpXTXpJQ0FnWjJ4ZlQySnFaV04wVW1GNVJHbHlaV04wYVc5dVRsWTdhVzRnSUNBZ1pteHZZWFFnSUdkc1gxSmhlVlJ0YVc1T1ZqdHBiaUFnSUNCbWJHOWhkQ0FnWjJ4ZlVtRjVWRzFoZUU1V08ybHVJQ0FnSUcxaGREUjRNeUJuYkY5UFltcGxZM1JVYjFkdmNteGtUbFk3YVc0Z0lDQWdiV0YwTkhneklHZHNYMWR2Y214a1ZHOVBZbXBsWTNST1ZqdHBiaUFnSUNCMWFXNTBJQ0FnWjJ4ZlNXNWpiMjFwYm1kU1lYbEdiR0ZuYzA1V093b0FhVzRnSUNBZ2RYWmxZek1nSUdkc1gweGhkVzVqYUVsRVRsWTdhVzRnSUNBZ2RYWmxZek1nSUdkc1gweGhkVzVqYUZOcGVtVk9WanRwYmlBZ0lDQWdhVzUwSUNBZ1oyeGZVSEpwYldsMGFYWmxTVVE3YVc0Z0lDQWdJR2x1ZENBZ0lHZHNYMGx1YzNSaGJtTmxTVVE3YVc0Z0lDQWdJR2x1ZENBZ0lHZHNYMGx1YzNSaGJtTmxRM1Z6ZEc5dFNXNWtaWGhPVmp0cGJpQWdJQ0IyWldNeklDQWdaMnhmVjI5eWJHUlNZWGxQY21sbmFXNU9WanRwYmlBZ0lDQjJaV016SUNBZ1oyeGZWMjl5YkdSU1lYbEVhWEpsWTNScGIyNU9WanRwYmlBZ0lDQjJaV016SUNBZ1oyeGZUMkpxWldOMFVtRjVUM0pwWjJsdVRsWTdhVzRnSUNBZ2RtVmpNeUFnSUdkc1gwOWlhbVZqZEZKaGVVUnBjbVZqZEdsdmJrNVdPMmx1SUNBZ0lHWnNiMkYwSUNCbmJGOVNZWGxVYldsdVRsWTdhVzRnSUNBZ1pteHZZWFFnSUdkc1gxSmhlVlJ0WVhoT1ZqdHBiaUFnSUNCbWJHOWhkQ0FnWjJ4ZlNHbDBWRTVXTzJsdUlDQWdJSFZwYm5RZ0lDQm5iRjlJYVhSTGFXNWtUbFk3YVc0Z0lDQWdiV0YwTkhneklHZHNYMDlpYW1WamRGUnZWMjl5YkdST1ZqdHBiaUFnSUNCdFlYUTBlRE1nWjJ4ZlYyOXliR1JVYjA5aWFtVmpkRTVXTzJsdUlDQWdJSFZwYm5RZ0lDQm5iRjlKYm1OdmJXbHVaMUpoZVVac1lXZHpUbFk3Q2dCcGJpQWdJQ0IxZG1Wak15QWdaMnhmVEdGMWJtTm9TVVJPVmp0cGJpQWdJQ0IxZG1Wak15QWdaMnhmVEdGMWJtTm9VMmw2WlU1V08ybHVJQ0FnSUhabFl6TWdJQ0JuYkY5WGIzSnNaRkpoZVU5eWFXZHBiazVXTzJsdUlDQWdJSFpsWXpNZ0lDQm5iRjlYYjNKc1pGSmhlVVJwY21WamRHbHZiazVXTzJsdUlDQWdJSFpsWXpNZ0lDQm5iRjlQWW1wbFkzUlNZWGxQY21sbmFXNU9WanRwYmlBZ0lDQjJaV016SUNBZ1oyeGZUMkpxWldOMFVtRjVSR2x5WldOMGFXOXVUbFk3YVc0Z0lDQWdabXh2WVhRZ0lHZHNYMUpoZVZSdGFXNU9WanRwYmlBZ0lDQm1iRzloZENBZ1oyeGZVbUY1VkcxaGVFNVdPMmx1SUNBZ0lIVnBiblFnSUNCbmJGOUpibU52YldsdVoxSmhlVVpzWVdkelRsWTdDZ0JtYkdGMElHbHVJR2hwWjJod0lIVnBiblFnWjJ4ZlZtbGxkMGxFWDA5V1Vqc0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVVJsZG1salpTQWdJQ0FnSUQwZ01Uc0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVmR2Y210bmNtOTFjQ0FnSUQwZ01qc0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVk4xWW1keWIzVndJQ0FnSUQwZ016c0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVWx1ZG05allYUnBiMjRnSUQwZ05Ec0tBR052Ym5OMElHbHVkQ0JuYkY5VFkyOXdaVkYxWlhWbFJtRnRhV3g1SUQwZ05Uc0tBR052Ym5OMElHbHVkQ0JuYkY5VFpXMWhiblJwWTNOU1pXeGhlR1ZrSUNBZ0lDQWdJQ0FnUFNBd2VEQTdDZ0JqYjI1emRDQnBiblFnWjJ4ZlUyVnRZVzUwYVdOelFXTnhkV2x5WlNBZ0lDQWdJQ0FnSUQwZ01IZ3lPd29BWTI5dWMzUWdhVzUwSUdkc1gxTmxiV0Z1ZEdsamMxSmxiR1ZoYzJVZ0lDQWdJQ0FnSUNBOUlEQjRORHNLQUdOdmJuTjBJR2x1ZENCbmJGOVRaVzFoYm5ScFkzTkJZM0YxYVhKbFVtVnNaV0Z6WlNBZ1BTQXdlRGc3Q2dCamIyNXpkQ0JwYm5RZ1oyeGZVMlZ0WVc1MGFXTnpUV0ZyWlVGMllXbHNZV0pzWlNBZ0lEMGdNSGd5TURBd093b0FZMjl1YzNRZ2FXNTBJR2RzWDFObGJXRnVkR2xqYzAxaGEyVldhWE5wWW14bElDQWdJQ0E5SURCNE5EQXdNRHNLQUdOdmJuTjBJR2x1ZENCbmJGOVRaVzFoYm5ScFkzTldiMnhoZEdsc1pTQWdJQ0FnSUNBZ1BTQXdlRGd3TURBN0NnQmpiMjV6ZENCcGJuUWdaMnhmVTNSdmNtRm5aVk5sYldGdWRHbGpjMDV2Ym1VZ0lDQWdJRDBnTUhnd093b0FZMjl1YzNRZ2FXNTBJR2RzWDFOMGIzSmhaMlZUWlcxaGJuUnBZM05DZFdabVpYSWdJQ0E5SURCNE5EQTdDZ0JqYjI1emRDQnBiblFnWjJ4ZlUzUnZjbUZuWlZObGJXRnVkR2xqYzFOb1lYSmxaQ0FnSUQwZ01IZ3hNREE3Q2dCamIyNXpkQ0JwYm5RZ1oyeGZVM1J2Y21GblpWTmxiV0Z1ZEdsamMwbHRZV2RsSUNBZ0lEMGdNSGc0TURBN0NnQmpiMjV6ZENCcGJuUWdaMnhmVTNSdmNtRm5aVk5sYldGdWRHbGpjMDkxZEhCMWRDQWdJRDBnTUhneE1EQXdPd29BUWJEakJ3dm5Bd0VBQUFBSUFBQUFDUUFBQUFNQUFBQmliMjlzSUhOd1lYSnpaVlJsZUdWc2MxSmxjMmxrWlc1MFFWSkNLR2x1ZENCamIyUmxLVHNLQUdocFoyaHdJQUJwZG1WakFDQnBiV0ZuWlZOcGVtVW9jbVZoWkc5dWJIa2dkM0pwZEdWdmJteDVJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJQUFnZEdWNGRIVnlaVk5wZW1Vb0FDeHBiblFwT3dvQUtUc0tBR2x1ZENBQWFXMWhaMlZUWVcxd2JHVnpLSEpsWVdSdmJteDVJSGR5YVhSbGIyNXNlU0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0FBZEdWNGRIVnlaVk5oYlhCc1pYTW9BSFpsWXpJZ2RHVjRkSFZ5WlZGMVpYSjVURzlrS0FBc0lHWnNiMkYwTVRaZmRBQXNJR1pzYjJGMEFDd2daakUyZG1WakFDd2dkbVZqQUdsdWRDQjBaWGgwZFhKbFVYVmxjbmxNWlhabGJITW9BQ3dnYVc1MEFDd2dhWFpsWXdCMlpXTTBJR2x0WVdkbFRHOWhaQ2h5WldGa2IyNXNlU0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0FBZG05cFpDQnBiV0ZuWlZOMGIzSmxLSGR5YVhSbGIyNXNlU0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0FBTENBQWRtVmpOQ2s3Q2dCcGJuUWdjM0JoY25ObFNXMWhaMlZNYjJGa1FWSkNLSEpsWVdSdmJteDVJSFp2YkdGMGFXeGxJR052YUdWeVpXNTBJQUFzSUc5MWRDQUFhR2xuYUhBZ2FXNTBBR2hwWjJod0lIVnBiblFBUWFEbkJ3dTRmN3p6QVFEZjh3RUFBdlFCQUNYMEFRQkk5QUVBYXZRQkFJMzBBUUFnYVcxaFoyVkJkRzl0YVdOQlpHUW9kbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdBQ0JwYldGblpVRjBiMjFwWTAxcGJpaDJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQUFJR2x0WVdkbFFYUnZiV2xqVFdGNEtIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElBQWdhVzFoWjJWQmRHOXRhV05CYm1Rb2RtOXNZWFJwYkdVZ1kyOW9aWEpsYm5RZ0FDQnBiV0ZuWlVGMGIyMXBZMDl5S0hadmJHRjBhV3hsSUdOdmFHVnlaVzUwSUFBZ2FXMWhaMlZCZEc5dGFXTlliM0lvZG05c1lYUnBiR1VnWTI5b1pYSmxiblFnQUNCcGJXRm5aVUYwYjIxcFkwVjRZMmhoYm1kbEtIWnZiR0YwYVd4bElHTnZhR1Z5Wlc1MElBQXNJR2x1ZEN3Z2FXNTBMQ0JwYm5RQUlHbHRZV2RsUVhSdmJXbGpRMjl0Y0ZOM1lYQW9kbTlzWVhScGJHVWdZMjlvWlhKbGJuUWdBQ3dnYVc1MExDQnBiblFzSUdsdWRDd2dhVzUwTENCcGJuUUFJR2x0WVdkbFFYUnZiV2xqVEc5aFpDaDJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQUFMQ0JwYm5Rc0lHbHVkQ3dnYVc1MEtUc0tBSFp2YVdRZ2FXMWhaMlZCZEc5dGFXTlRkRzl5WlNoMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENBQVpteHZZWFFnYVcxaFoyVkJkRzl0YVdORmVHTm9ZVzVuWlNoMmIyeGhkR2xzWlNCamIyaGxjbVZ1ZENBQUxDQm1iRzloZENrN0NnQjJaV00wSUdsdFlXZGxURzloWkV4dlpFRk5SQ2h5WldGa2IyNXNlU0IyYjJ4aGRHbHNaU0JqYjJobGNtVnVkQ0FBZG05cFpDQnBiV0ZuWlZOMGIzSmxURzlrUVUxRUtIZHlhWFJsYjI1c2VTQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQUFhVzUwSUhOd1lYSnpaVWx0WVdkbFRHOWhaRXh2WkVGTlJDaHlaV0ZrYjI1c2VTQjJiMnhoZEdsc1pTQmpiMmhsY21WdWRDQUFkbVZqTkNCemRXSndZWE56VEc5aFpBQW9BR1pzYjJGME1UWmZkQ0FBWm14dllYUWdBSFpsWXpRZ0FITndZWEp6WlZSbGVHVnNBSE53WVhKelpWUmxlSFIxY21VQWRHVjRaV3dBZEdWNGRIVnlaUUJRY205cUFFeHZaQUJIY21Ga0FFWmxkR05vQUU5bVpuTmxkQUJEYkdGdGNBQkJVa0lBTEdZeE5uWmxZelFBTEhabFl6UUFMQUIyWldNQUxHWnNiMkYwQUN4cGJuUUFMR1pzYjJGME1UWmZkQUFzWm14dllYUXhObDkwTEdac2IyRjBNVFpmZEFBc1pteHZZWFFzWm14dllYUUFMR1l4Tm5abFl3QXNkbVZqQUN4cGRtVmpBQ3h2ZFhRZ0FITndZWEp6WlZSbGVIUjFjbVZIWVhSb1pYSUFkR1Y0ZEhWeVpVZGhkR2hsY2dCUFptWnpaWFJ6QUN4cGRtVmpNZ0JiTkYwQVFVMUVBR052Ym5OMElHMWxaR2wxYlhBZ2FXNTBJQ0JuYkY5TllYaFdaWEowWlhoQmRIUnlhV0p6SUQwZ0pXUTdBR052Ym5OMElHMWxaR2wxYlhBZ2FXNTBJQ0JuYkY5TllYaFdaWEowWlhoVmJtbG1iM0p0Vm1WamRHOXljeUE5SUNWa093QmpiMjV6ZENCdFpXUnBkVzF3SUdsdWRDQWdaMnhmVFdGNFZtVnlkR1Y0VkdWNGRIVnlaVWx0WVdkbFZXNXBkSE1nUFNBbFpEc0FZMjl1YzNRZ2JXVmthWFZ0Y0NCcGJuUWdJR2RzWDAxaGVFTnZiV0pwYm1Wa1ZHVjRkSFZ5WlVsdFlXZGxWVzVwZEhNZ1BTQWxaRHNBWTI5dWMzUWdiV1ZrYVhWdGNDQnBiblFnSUdkc1gwMWhlRlJsZUhSMWNtVkpiV0ZuWlZWdWFYUnpJRDBnSldRN0FHTnZibk4wSUcxbFpHbDFiWEFnYVc1MElDQm5iRjlOWVhoR2NtRm5iV1Z1ZEZWdWFXWnZjbTFXWldOMGIzSnpJRDBnSldRN0FHTnZibk4wSUcxbFpHbDFiWEFnYVc1MElDQm5iRjlOWVhoRWNtRjNRblZtWm1WeWN5QTlJQ1ZrT3dCamIyNXpkQ0J0WldScGRXMXdJR2x1ZENBZ1oyeGZUV0Y0Vm1GeWVXbHVaMVpsWTNSdmNuTWdQU0FsWkRzQVkyOXVjM1FnYldWa2FYVnRjQ0JwYm5RZ0lHZHNYMDFoZUZabGNuUmxlRTkxZEhCMWRGWmxZM1J2Y25NZ1BTQWxaRHNBWTI5dWMzUWdiV1ZrYVhWdGNDQnBiblFnSUdkc1gwMWhlRVp5WVdkdFpXNTBTVzV3ZFhSV1pXTjBiM0p6SUQwZ0pXUTdBR052Ym5OMElHMWxaR2wxYlhBZ2FXNTBJQ0JuYkY5TmFXNVFjbTluY21GdFZHVjRaV3hQWm1aelpYUWdQU0FsWkRzQVkyOXVjM1FnYldWa2FYVnRjQ0JwYm5RZ0lHZHNYMDFoZUZCeWIyZHlZVzFVWlhobGJFOW1abk5sZENBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRSMlZ2YldWMGNubEpibkIxZEVOdmJYQnZibVZ1ZEhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUdkc1gwMWhlRWRsYjIxbGRISjVUM1YwY0hWMFEyOXRjRzl1Wlc1MGN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UjJWdmJXVjBjbmxKYldGblpWVnVhV1p2Y20xeklEMGdKV1E3QUdOdmJuTjBJR2x1ZENCbmJGOU5ZWGhIWlc5dFpYUnllVlJsZUhSMWNtVkpiV0ZuWlZWdWFYUnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoSFpXOXRaWFJ5ZVU5MWRIQjFkRlpsY25ScFkyVnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoSFpXOXRaWFJ5ZVZSdmRHRnNUM1YwY0hWMFEyOXRjRzl1Wlc1MGN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UjJWdmJXVjBjbmxWYm1sbWIzSnRRMjl0Y0c5dVpXNTBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFIyVnZiV1YwY25sQmRHOXRhV05EYjNWdWRHVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFIyVnZiV1YwY25sQmRHOXRhV05EYjNWdWRHVnlRblZtWm1WeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0VkdWemMwTnZiblJ5YjJ4SmJuQjFkRU52YlhCdmJtVnVkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVGUmxjM05EYjI1MGNtOXNUM1YwY0hWMFEyOXRjRzl1Wlc1MGN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0VkdWemMwTnZiblJ5YjJ4VVpYaDBkWEpsU1cxaFoyVlZibWwwY3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWR1Z6YzBOdmJuUnliMnhWYm1sbWIzSnRRMjl0Y0c5dVpXNTBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFZHVnpjME52Ym5SeWIyeFViM1JoYkU5MWRIQjFkRU52YlhCdmJtVnVkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVGUmxjM05GZG1Gc2RXRjBhVzl1U1c1d2RYUkRiMjF3YjI1bGJuUnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoVVpYTnpSWFpoYkhWaGRHbHZiazkxZEhCMWRFTnZiWEJ2Ym1WdWRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUZSbGMzTkZkbUZzZFdGMGFXOXVWR1Y0ZEhWeVpVbHRZV2RsVlc1cGRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUZSbGMzTkZkbUZzZFdGMGFXOXVWVzVwWm05eWJVTnZiWEJ2Ym1WdWRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUZSbGMzTlFZWFJqYUVOdmJYQnZibVZ1ZEhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUdkc1gwMWhlRkJoZEdOb1ZtVnlkR2xqWlhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUdkc1gwMWhlRlJsYzNOSFpXNU1aWFpsYkNBOUlDVmtPd0JwYmlCbmJGOVFaWEpXWlhKMFpYZ2dlMmhwWjJod0lIWmxZelFnWjJ4ZlVHOXphWFJwYjI0N2FHbG5hSEFnWm14dllYUWdaMnhmVUc5cGJuUlRhWHBsTzJocFoyaHdJSFpsWXpRZ1oyeGZVMlZqYjI1a1lYSjVVRzl6YVhScGIyNU9WanRvYVdkb2NDQjJaV00wSUdkc1gxQnZjMmwwYVc5dVVHVnlWbWxsZDA1V1cxMDdmU0JuYkY5cGJsdG5iRjlOWVhoUVlYUmphRlpsY25ScFkyVnpYVHNLQUdOdmJuTjBJR2x1ZENCbmJGOU5ZWGhVWlhOelEyOXVkSEp2YkVsdFlXZGxWVzVwWm05eWJYTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUZSbGMzTkZkbUZzZFdGMGFXOXVTVzFoWjJWVmJtbG1iM0p0Y3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWR1Z6YzBOdmJuUnliMnhCZEc5dGFXTkRiM1Z1ZEdWeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0VkdWemMwVjJZV3gxWVhScGIyNUJkRzl0YVdORGIzVnVkR1Z5Y3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWR1Z6YzBOdmJuUnliMnhCZEc5dGFXTkRiM1Z1ZEdWeVFuVm1abVZ5Y3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWR1Z6YzBWMllXeDFZWFJwYjI1QmRHOXRhV05EYjNWdWRHVnlRblZtWm1WeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ0lHZHNYMDFoZUZabGNuUmxlRlZ1YVdadmNtMVdaV04wYjNKeklEMGdKV1E3QUdOdmJuTjBJR2x1ZENBZ1oyeGZUV0Y0Um5KaFoyMWxiblJWYm1sbWIzSnRWbVZqZEc5eWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ0lHZHNYMDFoZUZabGNuUmxlRUYwZEhKcFluTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElDQm5iRjlOWVhoV1pYSjBaWGhVWlhoMGRYSmxTVzFoWjJWVmJtbDBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdJR2RzWDAxaGVFTnZiV0pwYm1Wa1ZHVjRkSFZ5WlVsdFlXZGxWVzVwZEhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUNCbmJGOU5ZWGhVWlhoMGRYSmxTVzFoWjJWVmJtbDBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdJR2RzWDAxaGVFUnlZWGRDZFdabVpYSnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQWdaMnhmVFdGNFRHbG5hSFJ6SUQwZ0pXUTdBR052Ym5OMElHbHVkQ0FnWjJ4ZlRXRjRRMnhwY0ZCc1lXNWxjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdJR2RzWDAxaGVGUmxlSFIxY21WVmJtbDBjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdJR2RzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJQ0JuYkY5TllYaFdaWEowWlhoVmJtbG1iM0p0UTI5dGNHOXVaVzUwY3lBOUlDVmtPd0JqYjI1emRDQnBiblFnSUdkc1gwMWhlRlpoY25scGJtZEdiRzloZEhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUNCbmJGOU5ZWGhHY21GbmJXVnVkRlZ1YVdadmNtMURiMjF3YjI1bGJuUnpJRDBnSldRN0FIVnVhV1p2Y20wZ2JXRjBOQ0FnWjJ4ZlZHVjRkSFZ5WlUxaGRISnBlRnRuYkY5TllYaFVaWGgwZFhKbFEyOXZjbVJ6WFR0MWJtbG1iM0p0SUcxaGREUWdJR2RzWDFSbGVIUjFjbVZOWVhSeWFYaEpiblpsY25ObFcyZHNYMDFoZUZSbGVIUjFjbVZEYjI5eVpITmRPM1Z1YVdadmNtMGdiV0YwTkNBZ1oyeGZWR1Y0ZEhWeVpVMWhkSEpwZUZSeVlXNXpjRzl6WlZ0bmJGOU5ZWGhVWlhoMGRYSmxRMjl2Y21SelhUdDFibWxtYjNKdElHMWhkRFFnSUdkc1gxUmxlSFIxY21WTllYUnlhWGhKYm5abGNuTmxWSEpoYm5Od2IzTmxXMmRzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE5kTzNWdWFXWnZjbTBnZG1Wak5DQWdaMnhmUTJ4cGNGQnNZVzVsVzJkc1gwMWhlRU5zYVhCUWJHRnVaWE5kTzNWdWFXWnZjbTBnWjJ4ZlRHbG5hSFJUYjNWeVkyVlFZWEpoYldWMFpYSnpJQ0JuYkY5TWFXZG9kRk52ZFhKalpWdG5iRjlOWVhoTWFXZG9kSE5kTzNWdWFXWnZjbTBnWjJ4ZlRHbG5hSFJRY205a2RXTjBjeUJuYkY5R2NtOXVkRXhwWjJoMFVISnZaSFZqZEZ0bmJGOU5ZWGhNYVdkb2RITmRPM1Z1YVdadmNtMGdaMnhmVEdsbmFIUlFjbTlrZFdOMGN5Qm5iRjlDWVdOclRHbG5hSFJRY205a2RXTjBXMmRzWDAxaGVFeHBaMmgwYzEwN2RXNXBabTl5YlNCMlpXTTBJQ0JuYkY5VVpYaDBkWEpsUlc1MlEyOXNiM0piWjJ4ZlRXRjRWR1Y0ZEhWeVpVbHRZV2RsVlc1cGRITmRPM1Z1YVdadmNtMGdkbVZqTkNBZ1oyeGZSWGxsVUd4aGJtVlRXMmRzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE5kTzNWdWFXWnZjbTBnZG1Wak5DQWdaMnhmUlhsbFVHeGhibVZVVzJkc1gwMWhlRlJsZUhSMWNtVkRiMjl5WkhOZE8zVnVhV1p2Y20wZ2RtVmpOQ0FnWjJ4ZlJYbGxVR3hoYm1WU1cyZHNYMDFoZUZSbGVIUjFjbVZEYjI5eVpITmRPM1Z1YVdadmNtMGdkbVZqTkNBZ1oyeGZSWGxsVUd4aGJtVlJXMmRzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE5kTzNWdWFXWnZjbTBnZG1Wak5DQWdaMnhmVDJKcVpXTjBVR3hoYm1WVFcyZHNYMDFoZUZSbGVIUjFjbVZEYjI5eVpITmRPM1Z1YVdadmNtMGdkbVZqTkNBZ1oyeGZUMkpxWldOMFVHeGhibVZVVzJkc1gwMWhlRlJsZUhSMWNtVkRiMjl5WkhOZE8zVnVhV1p2Y20wZ2RtVmpOQ0FnWjJ4ZlQySnFaV04wVUd4aGJtVlNXMmRzWDAxaGVGUmxlSFIxY21WRGIyOXlaSE5kTzNWdWFXWnZjbTBnZG1Wak5DQWdaMnhmVDJKcVpXTjBVR3hoYm1WUlcyZHNYMDFoZUZSbGVIUjFjbVZEYjI5eVpITmRPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRRMnhwY0VScGMzUmhibU5sY3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRWbUZ5ZVdsdVowTnZiWEJ2Ym1WdWRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVkbGIyMWxkSEo1Vm1GeWVXbHVaME52YlhCdmJtVnVkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVGWmxjblJsZUU5MWRIQjFkRU52YlhCdmJtVnVkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVFWnlZV2R0Wlc1MFNXNXdkWFJEYjIxd2IyNWxiblJ6SUQwZ0pXUTdBSDBnWjJ4ZmFXNWJaMnhmVFdGNFVHRjBZMmhXWlhKMGFXTmxjMTA3Q2dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0Vm1sbGQzQnZjblJ6SUQwZ0pXUTdBR052Ym5OMElHbHVkQ0JuYkY5TllYaERiMjFpYVc1bFpFbHRZV2RsVlc1cGRITkJibVJHY21GbmJXVnVkRTkxZEhCMWRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVsdFlXZGxVMkZ0Y0d4bGN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0VkhKaGJuTm1iM0p0Um1WbFpHSmhZMnRDZFdabVpYSnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoVWNtRnVjMlp2Y20xR1pXVmtZbUZqYTBsdWRHVnliR1ZoZG1Wa1EyOXRjRzl1Wlc1MGN5QTlJQ1ZrT3dCamIyNXpkQ0JwZG1Wak15Qm5iRjlOWVhoRGIyMXdkWFJsVjI5eWEwZHliM1Z3UTI5MWJuUWdQU0JwZG1Wak15Z2xaQ3dsWkN3bFpDazdBR052Ym5OMElHbDJaV016SUdkc1gwMWhlRU52YlhCMWRHVlhiM0pyUjNKdmRYQlRhWHBsSUQwZ2FYWmxZek1vSldRc0pXUXNKV1FwT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UTI5dGNIVjBaVlZ1YVdadmNtMURiMjF3YjI1bGJuUnpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoRGIyMXdkWFJsVkdWNGRIVnlaVWx0WVdkbFZXNXBkSE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVFbHRZV2RsVlc1cGRITWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVOdmJXSnBibVZrVTJoaFpHVnlUM1YwY0hWMFVtVnpiM1Z5WTJWeklEMGdKV1E3QUdOdmJuTjBJR2x1ZENCbmJGOU5ZWGhXWlhKMFpYaEpiV0ZuWlZWdWFXWnZjbTF6SUQwZ0pXUTdBR052Ym5OMElHbHVkQ0JuYkY5TllYaEdjbUZuYldWdWRFbHRZV2RsVlc1cFptOXliWE1nUFNBbFpEc0FZMjl1YzNRZ2FXNTBJR2RzWDAxaGVFTnZiV0pwYm1Wa1NXMWhaMlZWYm1sbWIzSnRjeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFEyOXRjSFYwWlVsdFlXZGxWVzVwWm05eWJYTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVOdmJYQjFkR1ZCZEc5dGFXTkRiM1Z1ZEdWeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UTI5dGNIVjBaVUYwYjIxcFkwTnZkVzUwWlhKQ2RXWm1aWEp6SUQwZ0pXUTdBR052Ym5OMElHbHVkQ0JuYkY5TllYaFdaWEowWlhoQmRHOXRhV05EYjNWdWRHVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFJuSmhaMjFsYm5SQmRHOXRhV05EYjNWdWRHVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFEyOXRZbWx1WldSQmRHOXRhV05EYjNWdWRHVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFFYUnZiV2xqUTI5MWJuUmxja0pwYm1ScGJtZHpJRDBnSldRN0FHTnZibk4wSUdsdWRDQm5iRjlOWVhoV1pYSjBaWGhCZEc5dGFXTkRiM1Z1ZEdWeVFuVm1abVZ5Y3lBOUlDVmtPd0JqYjI1emRDQnBiblFnWjJ4ZlRXRjRSbkpoWjIxbGJuUkJkRzl0YVdORGIzVnVkR1Z5UW5WbVptVnljeUE5SUNWa093QmpiMjV6ZENCcGJuUWdaMnhmVFdGNFEyOXRZbWx1WldSQmRHOXRhV05EYjNWdWRHVnlRblZtWm1WeWN5QTlJQ1ZrT3dCamIyNXpkQ0JwYm5RZ1oyeGZUV0Y0UVhSdmJXbGpRMjkxYm5SbGNrSjFabVpsY2xOcGVtVWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVOMWJHeEVhWE4wWVc1alpYTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUVOdmJXSnBibVZrUTJ4cGNFRnVaRU4xYkd4RWFYTjBZVzVqWlhNZ1BTQWxaRHNBWTI5dWMzUWdhVzUwSUdkc1gwMWhlRk5oYlhCc1pYTWdQU0FsWkRzQVkyOXVjM1FnYVc1MElHZHNYMDFoZUUxbGMyaFBkWFJ3ZFhSV1pYSjBhV05sYzA1V0lEMGdKV1E3QUdOdmJuTjBJR2x1ZENCbmJGOU5ZWGhOWlhOb1QzVjBjSFYwVUhKcGJXbDBhWFpsYzA1V0lEMGdKV1E3QUdOdmJuTjBJR2wyWldNeklHZHNYMDFoZUUxbGMyaFhiM0pyUjNKdmRYQlRhWHBsVGxZZ1BTQnBkbVZqTXlnbFpDd2xaQ3dsWkNrN0FHTnZibk4wSUdsMlpXTXpJR2RzWDAxaGVGUmhjMnRYYjNKclIzSnZkWEJUYVhwbFRsWWdQU0JwZG1Wak15Z2xaQ3dsWkN3bFpDazdBR052Ym5OMElHbHVkQ0JuYkY5TllYaE5aWE5vVm1sbGQwTnZkVzUwVGxZZ1BTQWxaRHNBWjJ4ZlZtVnlkR1Y0U1c1a1pYZ0FaMnhmU1c1emRHRnVZMlZKYm1SbGVBQm5iRjlXWlhKMFpYaEpSQUJuYkY5SmJuTjBZVzVqWlVsRUFHZHNYMEpoYzJWV1pYSjBaWGhCVWtJQUpqZ0NBR2RzWDBKaGMyVkpibk4wWVc1alpVRlNRZ0JuYkY5RWNtRjNTVVJCVWtJQVoyeGZRbUZ6WlZabGNuUmxlQUJuYkY5Q1lYTmxTVzV6ZEdGdVkyVUFaMnhmUkhKaGQwbEVBR2RzWDFOMVlrZHliM1Z3VTJsNlpVRlNRZ0FBUkRnQ0FHZHNYMU4xWWtkeWIzVndTVzUyYjJOaGRHbHZia0ZTUWdCbmJGOVRkV0pIY205MWNFVnhUV0Z6YTBGU1FnQm5iRjlUZFdKSGNtOTFjRWRsVFdGemEwRlNRZ0JuYkY5VGRXSkhjbTkxY0VkMFRXRnphMEZTUWdCbmJGOVRkV0pIY205MWNFeGxUV0Z6YTBGU1FnQm5iRjlUZFdKSGNtOTFjRXgwVFdGemEwRlNRZ0JpWVd4c2IzUkJVa0lBY21WaFpFbHVkbTlqWVhScGIyNUJVa0lBY21WaFpFWnBjbk4wU1c1MmIyTmhkR2x2YmtGU1FnQmhibmxKYm5adlkyRjBhVzl1UVZKQ0FBQUFXVGdDQUdGc2JFbHVkbTlqWVhScGIyNXpRVkpDQUdGc2JFbHVkbTlqWVhScGIyNXpSWEYxWVd4QlVrSUFiV2x1U1c1MmIyTmhkR2x2Ym5OQlRVUUFBSEk0QWdCdFlYaEpiblp2WTJGMGFXOXVjMEZOUkFCaFpHUkpiblp2WTJGMGFXOXVjMEZOUkFCdGFXNUpiblp2WTJGMGFXOXVjMDV2YmxWdWFXWnZjbTFCVFVRQWJXRjRTVzUyYjJOaGRHbHZibk5PYjI1VmJtbG1iM0p0UVUxRUFHRmtaRWx1ZG05allYUnBiMjV6VG05dVZXNXBabTl5YlVGTlJBQnpkMmw2ZW14bFNXNTJiMk5oZEdsdmJuTkJUVVFBYzNkcGVucHNaVWx1ZG05allYUnBiMjV6VjJsMGFGQmhkSFJsY201QlRVUUFkM0pwZEdWSmJuWnZZMkYwYVc5dVFVMUVBRzFpWTI1MFFVMUVBRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhia0ZOUkFCdFlYaEpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1QlRVUUFZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVRVTFFQUcxcGJrbHVkbTlqWVhScGIyNXpTVzVqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUUFiV0Y0U1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkFCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVBRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhia0ZOUkFCdFlYaEpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1QlRVUUFZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVRVTFFQUcxcGJrbHVkbTlqWVhScGIyNXpSWGhqYkhWemFYWmxVMk5oYms1dmJsVnVhV1p2Y20xQlRVUUFiV0Y0U1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVUbTl1Vlc1cFptOXliVUZOUkFCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdFFVMUVBRzFwYmpNQWh6Z0NBRzFoZURNQWJXbGtNd0JuYkY5VFNVMUVSM0p2ZFhCVGFYcGxRVTFFQUFBQXBEZ0NBR04xWW1WR1lXTmxTVzVrWlhoQlRVUUFZM1ZpWlVaaFkyVkRiMjl5WkVGTlJBQjBhVzFsUVUxRUFHWnlZV2R0Wlc1MFRXRnphMFpsZEdOb1FVMUVBQUMyT0FJQVpuSmhaMjFsYm5SR1pYUmphRUZOUkFCamIzVnVkRXhsWVdScGJtZGFaWEp2Y3dBQTBqZ0NBR052ZFc1MFZISmhhV3hwYm1kYVpYSnZjd0JoWW5OdmJIVjBaVVJwWm1abGNtVnVZMlVBWVdSa1UyRjBkWEpoZEdVQWMzVmlkSEpoWTNSVFlYUjFjbUYwWlFCaGRtVnlZV2RsQUdGMlpYSmhaMlZTYjNWdVpHVmtBRzExYkhScGNHeDVNeko0TVRZQWRHVjRkSFZ5WlVadmIzUndjbWx1ZEU1V0FBRDFPQUlBZEdWNGRIVnlaVVp2YjNSd2NtbHVkRU5zWVcxd1RsWUFkR1Y0ZEhWeVpVWnZiM1J3Y21sdWRFeHZaRTVXQUhSbGVIUjFjbVZHYjI5MGNISnBiblJIY21Ga1RsWUFkR1Y0ZEhWeVpVWnZiM1J3Y21sdWRFZHlZV1JEYkdGdGNFNVdBR2RzWDBOdmJHOXlBR2RzWDFObFkyOXVaR0Z5ZVVOdmJHOXlBR2RzWDA1dmNtMWhiQUJuYkY5V1pYSjBaWGdBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREFBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaREVBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRElBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRE1BWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFFBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFVBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRFlBWjJ4ZlRYVnNkR2xVWlhoRGIyOXlaRGNBWjJ4ZlJtOW5RMjl2Y21RQWRHVjRkSFZ5WlRKRVIzSmhaRVZZVkFBQUFBQVVPUUlBZEdWNGRIVnlaVEpFVUhKdmFrZHlZV1JGV0ZRQWRHVjRkSFZ5WlVOMVltVkhjbUZrUlZoVUFIUmxlSFIxY21WSFlYUm9aWEpQWm1aelpYUnpBQUFBQUM0NUFnQkJPUUlBWm0xaEFHbHRZV2RsUVhSdmJXbGpRV1JrQUFCVU9RSUFhVzFoWjJWQmRHOXRhV05OYVc0QWFXMWhaMlZCZEc5dGFXTk5ZWGdBYVcxaFoyVkJkRzl0YVdOQmJtUUFhVzFoWjJWQmRHOXRhV05QY2dCcGJXRm5aVUYwYjIxcFkxaHZjZ0JwYldGblpVRjBiMjFwWTBWNFkyaGhibWRsQUdsdFlXZGxRWFJ2YldsalEyOXRjRk4zWVhBQVoyeGZWbWxsZDBsRVgwOVdVZ0J2T1FJQWdEa0NBSE5vWVdSdmR6SkVSVmhVQUpJNUFnQnphR0ZrYjNjeVJGQnliMnBGV0ZRQVoyeGZRbTkxYm1ScGJtZENiM2hGV0ZRQUFBQ3BPUUlBWjJ4ZlFtOTFibVJwYm1kQ2IzaFBSVk1BQUFESE9RSUFaMnhmUW05MWJtUnBibWRDYjNnQVoyeGZVRzl6YVhScGIyNEFaMnhmVUc5cGJuUlRhWHBsQUdkc1gybHVBR2RzWDI5MWRBQm5iRjlEYkdsd1ZtVnlkR1Y0QUdkc1gwTnNhWEJFYVhOMFlXNWpaUUJuYkY5RGRXeHNSR2x6ZEdGdVkyVUFaMnhmVUhKcGJXbDBhWFpsU1VSSmJnQm5iRjlRY21sdGFYUnBkbVZKUkFCbmJGOUpiblp2WTJGMGFXOXVTVVFBWjJ4ZlRHRjVaWElBWjJ4ZlZtbGxkM0J2Y25SSmJtUmxlQUFBQUFEbE9RSUFDRG9DQUdkc1gxWnBaWGR3YjNKMFRXRnphd0FJT2dJQVoyeGZVMlZqYjI1a1lYSjVVRzl6YVhScGIyNU9WZ0FBSGpvQ0FHZHNYMU5sWTI5dVpHRnllVlpwWlhkd2IzSjBUV0Z6YTA1V0FHZHNYMUJ2YzJsMGFXOXVVR1Z5Vm1sbGQwNVdBRG82QWdCbmJGOVdhV1YzY0c5eWRFMWhjMnRRWlhKV2FXVjNUbFlBWjJ4ZlVHRjBZMmhXWlhKMGFXTmxjMGx1QUdkc1gxUmxjM05NWlhabGJFOTFkR1Z5QUdkc1gxUmxjM05NWlhabGJFbHVibVZ5QUdkc1gxUmxjM05EYjI5eVpBQUFBQUJmT2dJQVoyeGZSbkp2Ym5SRGIyeHZjZ0JuYkY5Q1lXTnJRMjlzYjNJQVoyeGZSbkp2Ym5SVFpXTnZibVJoY25sRGIyeHZjZ0JuYkY5Q1lXTnJVMlZqYjI1a1lYSjVRMjlzYjNJQVoyeGZWR1Y0UTI5dmNtUUFaMnhmUm05blJuSmhaME52YjNKa0FIVTZBZ0NRT2dJQXF6b0NBTW82QWdCbmJGOUVaWFpwWTJWSmJtUmxlQUFBNlRvQ0FHZHNYMVpwWlhkSmJtUmxlQUFBQUFEOU9nSUFaMnhmVTNWaVozSnZkWEJUYVhwbEFBNDdBZ0JuYkY5VGRXSm5jbTkxY0VsdWRtOWpZWFJwYjI1SlJBQm5iRjlUZFdKbmNtOTFjRVZ4VFdGemF3QUFBQ3M3QWdCbmJGOVRkV0puY205MWNFZGxUV0Z6YXdCbmJGOVRkV0puY205MWNFZDBUV0Z6YXdCbmJGOVRkV0puY205MWNFeGxUV0Z6YXdCbmJGOVRkV0puY205MWNFeDBUV0Z6YXdCbmJGOVhZWEp3YzFCbGNsTk5UbFlBU1RzQ0FHZHNYMU5OUTI5MWJuUk9WZ0JuYkY5WFlYSndTVVJPVmdCbmJGOVRUVWxFVGxZQVoyeGZSbkp2Ym5SR1lXTnBibWNBWjJ4ZlJuSmhaME52YjNKa0FHZHNYMUJ2YVc1MFEyOXZjbVFBWjJ4ZlJuSmhaME52Ykc5eUFHZHNYMFp5WVdkRVpYQjBhQUJuYkY5R2NtRm5SR1Z3ZEdoRldGUUFaMnhmU0dWc2NHVnlTVzUyYjJOaGRHbHZiZ0JuYkY5R2NtRm5VM1JsYm1OcGJGSmxaa0ZTUWdCaU93SUFaMnhmVTJGdGNHeGxTVVFBWjJ4ZlUyRnRjR3hsVUc5emFYUnBiMjRBWjJ4ZlUyRnRjR3hsVFdGemF3Qm5iRjlPZFcxVFlXMXdiR1Z6QUFBQWZ6c0NBR2RzWDFOaGJYQnNaVTFoYzJ0SmJnQ1ZPd0lBZEdWNGRIVnlaVEpFVEc5a1JWaFVBSFJsZUhSMWNtVXlSRkJ5YjJwTWIyUkZXRlFBZEdWNGRIVnlaVU4xWW1WTWIyUkZXRlFBWkVaa2VBQUFyVHNDQUdSR1pIa0FabmRwWkhSb0FHbHVkR1Z5Y0c5c1lYUmxRWFJEWlc1MGNtOXBaQUFBQU1rN0FnQnBiblJsY25CdmJHRjBaVUYwVTJGdGNHeGxBR2x1ZEdWeWNHOXNZWFJsUVhSUFptWnpaWFFBZEdWNGRIVnlaVEZFVEc5a0FBQUFBUEU3QWdCMFpYaDBkWEpsTWtSTWIyUUFkR1Y0ZEhWeVpUTkVURzlrQUhSbGVIUjFjbVZEZFdKbFRHOWtBSFJsZUhSMWNtVXhSRkJ5YjJwTWIyUUFkR1Y0ZEhWeVpUSkVVSEp2YWt4dlpBQjBaWGgwZFhKbE0wUlFjbTlxVEc5a0FITm9ZV1J2ZHpGRVRHOWtBSE5vWVdSdmR6SkVURzlrQUhOb1lXUnZkekZFVUhKdmFreHZaQUJ6YUdGa2IzY3lSRkJ5YjJwTWIyUUFkR1Y0ZEhWeVpURkVSM0poWkVGU1FnQjBaWGgwZFhKbE1VUlFjbTlxUjNKaFpFRlNRZ0IwWlhoMGRYSmxNa1JIY21Ga1FWSkNBSFJsZUhSMWNtVXlSRkJ5YjJwSGNtRmtRVkpDQUhSbGVIUjFjbVV6UkVkeVlXUkJVa0lBZEdWNGRIVnlaVE5FVUhKdmFrZHlZV1JCVWtJQWRHVjRkSFZ5WlVOMVltVkhjbUZrUVZKQ0FITm9ZV1J2ZHpGRVIzSmhaRUZTUWdCemFHRmtiM2N4UkZCeWIycEhjbUZrUVZKQ0FITm9ZV1J2ZHpKRVIzSmhaRUZTUWdCemFHRmtiM2N5UkZCeWIycEhjbUZrUVZKQ0FIUmxlSFIxY21VeVJGSmxZM1JIY21Ga1FWSkNBSFJsZUhSMWNtVXlSRkpsWTNSUWNtOXFSM0poWkVGU1FnQnphR0ZrYjNjeVJGSmxZM1JIY21Ga1FWSkNBSE5vWVdSdmR6SkVVbVZqZEZCeWIycEhjbUZrUVZKQ0FHMWxiVzl5ZVVKaGNuSnBaWElBQUFBQUN6d0NBR0YwYjIxcFkwTnZkVzUwWlhKSmJtTnlaVzFsYm5RQUFDbzhBZ0JoZEc5dGFXTkRiM1Z1ZEdWeVJHVmpjbVZ0Wlc1MEFHRjBiMjFwWTBOdmRXNTBaWElBWkVaa2VFWnBibVVBQUFCSVBBSUFaRVprZVVacGJtVUFabmRwWkhSb1JtbHVaUUJrUm1SNFEyOWhjbk5sQUdSR1pIbERiMkZ5YzJVQVpuZHBaSFJvUTI5aGNuTmxBSE53WVhKelpWUmxlSFIxY21WQlVrSUFZandDQUhOd1lYSnpaVlJsZUhSMWNtVk1iMlJCVWtJQWMzQmhjbk5sVkdWNGRIVnlaVTltWm5ObGRFRlNRZ0J6Y0dGeWMyVlVaWGhsYkVabGRHTm9RVkpDQUhOd1lYSnpaVlJsZUdWc1JtVjBZMmhQWm1aelpYUkJVa0lBYzNCaGNuTmxWR1Y0ZEhWeVpVeHZaRTltWm5ObGRFRlNRZ0J6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaRUZTUWdCemNHRnljMlZVWlhoMGRYSmxSM0poWkU5bVpuTmxkRUZTUWdCemNHRnljMlZVWlhoMGRYSmxSMkYwYUdWeVFWSkNBSE53WVhKelpWUmxlSFIxY21WSFlYUm9aWEpQWm1aelpYUkJVa0lBYzNCaGNuTmxWR1Y0ZEhWeVpVZGhkR2hsY2s5bVpuTmxkSE5CVWtJQWMzQmhjbk5sU1cxaFoyVk1iMkZrUVZKQ0FITndZWEp6WlZSbGVHVnNjMUpsYzJsa1pXNTBBSE53WVhKelpWUmxlSFIxY21WRGJHRnRjRUZTUWdBQWVUd0NBSE53WVhKelpWUmxlSFIxY21WUFptWnpaWFJEYkdGdGNFRlNRZ0J6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaRU5zWVcxd1FWSkNBSE53WVhKelpWUmxlSFIxY21WSGNtRmtUMlptYzJWMFEyeGhiWEJCVWtJQWRHVjRkSFZ5WlVOc1lXMXdRVkpDQUhSbGVIUjFjbVZQWm1aelpYUkRiR0Z0Y0VGU1FnQjBaWGgwZFhKbFIzSmhaRU5zWVcxd1FWSkNBSFJsZUhSMWNtVkhjbUZrVDJabWMyVjBRMnhoYlhCQlVrSUFaMnhmUW1GeWVVTnZiM0prVG05UVpYSnpjRUZOUkFBQUFBQ1ZQQUlBWjJ4ZlFtRnllVU52YjNKa1RtOVFaWEp6Y0VObGJuUnliMmxrUVUxRUFHZHNYMEpoY25sRGIyOXlaRTV2VUdWeWMzQlRZVzF3YkdWQlRVUUFaMnhmUW1GeWVVTnZiM0prVTIxdmIzUm9RVTFFQUdkc1gwSmhjbmxEYjI5eVpGTnRiMjkwYUVObGJuUnliMmxrUVUxRUFHZHNYMEpoY25sRGIyOXlaRk50YjI5MGFGTmhiWEJzWlVGTlJBQm5iRjlDWVhKNVEyOXZjbVJRZFd4c1RXOWtaV3hCVFVRQWFXNTBaWEp3YjJ4aGRHVkJkRlpsY25SbGVFRk5SQUIwWlhoMGRYSmxSMkYwYUdWeVRHOWtRVTFFQUwwOEFnQjBaWGgwZFhKbFIyRjBhR1Z5VEc5a1QyWm1jMlYwUVUxRUFIUmxlSFIxY21WSFlYUm9aWEpNYjJSUFptWnpaWFJ6UVUxRUFITndZWEp6WlZSbGVIUjFjbVZIWVhSb1pYSk1iMlJCVFVRQWMzQmhjbk5sVkdWNGRIVnlaVWRoZEdobGNreHZaRTltWm5ObGRFRk5SQUJ6Y0dGeWMyVlVaWGgwZFhKbFIyRjBhR1Z5VEc5a1QyWm1jMlYwYzBGTlJBQnBiV0ZuWlV4dllXUk1iMlJCVFVRQTNEd0NBR2x0WVdkbFUzUnZjbVZNYjJSQlRVUUFjM0JoY25ObFNXMWhaMlZNYjJGa1RHOWtRVTFFQUdkc1gwWnlZV2RHZFd4c2VVTnZkbVZ5WldST1ZnQUFBQUQvUEFJQVoyeGZSbkpoWjIxbGJuUlRhWHBsVGxZQUFBQXBQUUlBWjJ4ZlNXNTJiMk5oZEdsdmJuTlFaWEpRYVhobGJFNVdBR2RzWDBKaGNubERiMjl5WkU1V0FFSTlBZ0JuYkY5Q1lYSjVRMjl2Y21ST2IxQmxjbk53VGxZQVoyeGZSbkpoWjFOcGVtVkZXRlFBQUFBQVpEMENBR2RzWDBaeVlXZEpiblp2WTJGMGFXOXVRMjkxYm5SRldGUUFBQUNIUFFJQVkyeHZZMnRCVWtJQUFBQUFtVDBDQUdOc2IyTnJNbmd6TWtGU1FnQmpiRzlqYTFKbFlXeDBhVzFsUlZoVUFBQUFyVDBDQUdOc2IyTnJVbVZoYkhScGJXVXllRE15UlZoVUFBQUFBTW85QWdEaFBRSUFjM1ZpWjNKdmRYQkNZWEp5YVdWeUFITjFZbWR5YjNWd1RXVnRiM0o1UW1GeWNtbGxjZ0J6ZFdKbmNtOTFjRTFsYlc5eWVVSmhjbkpwWlhKQ2RXWm1aWElBYzNWaVozSnZkWEJOWlcxdmNubENZWEp5YVdWeVNXMWhaMlVBYzNWaVozSnZkWEJGYkdWamRBQnpkV0puY205MWNFRnNiQUFBK0QwQ0FITjFZbWR5YjNWd1FXNTVBSE4xWW1keWIzVndRV3hzUlhGMVlXd0FjM1ZpWjNKdmRYQkNjbTloWkdOaGMzUUFjM1ZpWjNKdmRYQkNjbTloWkdOaGMzUkdhWEp6ZEFCemRXSm5jbTkxY0VKaGJHeHZkQUJ6ZFdKbmNtOTFjRWx1ZG1WeWMyVkNZV3hzYjNRQWMzVmlaM0p2ZFhCQ1lXeHNiM1JDYVhSRmVIUnlZV04wQUhOMVltZHliM1Z3UW1Gc2JHOTBRbWwwUTI5MWJuUUFjM1ZpWjNKdmRYQkNZV3hzYjNSSmJtTnNkWE5wZG1WQ2FYUkRiM1Z1ZEFCemRXSm5jbTkxY0VKaGJHeHZkRVY0WTJ4MWMybDJaVUpwZEVOdmRXNTBBSE4xWW1keWIzVndRbUZzYkc5MFJtbHVaRXhUUWdCemRXSm5jbTkxY0VKaGJHeHZkRVpwYm1STlUwSUFjM1ZpWjNKdmRYQlRhSFZtWm14bEFBQVVQZ0lBYzNWaVozSnZkWEJUYUhWbVpteGxXRzl5QUhOMVltZHliM1Z3VTJoMVptWnNaVlZ3QUFBQUFETStBZ0J6ZFdKbmNtOTFjRk5vZFdabWJHVkViM2R1QUhOMVltZHliM1Z3UVdSa0FGcytBZ0J6ZFdKbmNtOTFjRTExYkFCemRXSm5jbTkxY0UxcGJnQnpkV0puY205MWNFMWhlQUJ6ZFdKbmNtOTFjRUZ1WkFCemRXSm5jbTkxY0U5eUFITjFZbWR5YjNWd1dHOXlBSE4xWW1keWIzVndTVzVqYkhWemFYWmxRV1JrQUhOMVltZHliM1Z3U1c1amJIVnphWFpsVFhWc0FITjFZbWR5YjNWd1NXNWpiSFZ6YVhabFRXbHVBSE4xWW1keWIzVndTVzVqYkhWemFYWmxUV0Y0QUhOMVltZHliM1Z3U1c1amJIVnphWFpsUVc1a0FITjFZbWR5YjNWd1NXNWpiSFZ6YVhabFQzSUFjM1ZpWjNKdmRYQkpibU5zZFhOcGRtVlliM0lBYzNWaVozSnZkWEJGZUdOc2RYTnBkbVZCWkdRQWMzVmlaM0p2ZFhCRmVHTnNkWE5wZG1WTmRXd0FjM1ZpWjNKdmRYQkZlR05zZFhOcGRtVk5hVzRBYzNWaVozSnZkWEJGZUdOc2RYTnBkbVZOWVhnQWMzVmlaM0p2ZFhCRmVHTnNkWE5wZG1WQmJtUUFjM1ZpWjNKdmRYQkZlR05zZFhOcGRtVlBjZ0J6ZFdKbmNtOTFjRVY0WTJ4MWMybDJaVmh2Y2dCemRXSm5jbTkxY0VOc2RYTjBaWEpsWkVGa1pBQjlQZ0lBYzNWaVozSnZkWEJEYkhWemRHVnlaV1JOZFd3QWMzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSTmFXNEFjM1ZpWjNKdmRYQkRiSFZ6ZEdWeVpXUk5ZWGdBYzNWaVozSnZkWEJEYkhWemRHVnlaV1JCYm1RQWMzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSUGNnQnpkV0puY205MWNFTnNkWE4wWlhKbFpGaHZjZ0J6ZFdKbmNtOTFjRkYxWVdSQ2NtOWhaR05oYzNRQUFKNCtBZ0J6ZFdKbmNtOTFjRkYxWVdSVGQyRndTRzl5YVhwdmJuUmhiQUJ6ZFdKbmNtOTFjRkYxWVdSVGQyRndWbVZ5ZEdsallXd0FjM1ZpWjNKdmRYQlJkV0ZrVTNkaGNFUnBZV2R2Ym1Gc0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVRsWUFBQUFBdWo0Q0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkJaR1JPVmdCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1RYVnNUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkUxcGJrNVdBSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JOWVhoT1ZnQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtRVzVrVGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFOXlUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkZodmNrNVdBSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JKYm1Oc2RYTnBkbVZCWkdST1ZnQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtTVzVqYkhWemFYWmxUWFZzVGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFbHVZMngxYzJsMlpVMXBiazVXQUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSSmJtTnNkWE5wZG1WTllYaE9WZ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrU1c1amJIVnphWFpsUVc1a1RsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRWx1WTJ4MWMybDJaVTl5VGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFbHVZMngxYzJsMlpWaHZjazVXQUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSRmVHTnNkWE5wZG1WQlpHUk9WZ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrUlhoamJIVnphWFpsVFhWc1RsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRVY0WTJ4MWMybDJaVTFwYms1V0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkZlR05zZFhOcGRtVk5ZWGhPVmdCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1JYaGpiSFZ6YVhabFFXNWtUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVWNFkyeDFjMmwyWlU5eVRsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRVY0WTJ4MWMybDJaVmh2Y2s1V0FHZHNYMU5qYjNCbFJHVjJhV05sQUFEY1BnSUFaMnhmVTJOdmNHVlhiM0pyWjNKdmRYQUFaMnhmVTJOdmNHVlRkV0puY205MWNBQm5iRjlUWTI5d1pVbHVkbTlqWVhScGIyNEFaMnhmVTJWdFlXNTBhV056VW1Wc1lYaGxaQUJuYkY5VFpXMWhiblJwWTNOQlkzRjFhWEpsQUdkc1gxTmxiV0Z1ZEdsamMxSmxiR1ZoYzJVQVoyeGZVMlZ0WVc1MGFXTnpRV054ZFdseVpWSmxiR1ZoYzJVQVoyeGZVMlZ0WVc1MGFXTnpUV0ZyWlVGMllXbHNZV0pzWlFCbmJGOVRaVzFoYm5ScFkzTk5ZV3RsVm1semFXSnNaUUJuYkY5VFpXMWhiblJwWTNOV2IyeGhkR2xzWlFCbmJGOVRkRzl5WVdkbFUyVnRZVzUwYVdOelRtOXVaUUJuYkY5VGRHOXlZV2RsVTJWdFlXNTBhV056UW5WbVptVnlBR2RzWDFOMGIzSmhaMlZUWlcxaGJuUnBZM05UYUdGeVpXUUFaMnhmVTNSdmNtRm5aVk5sYldGdWRHbGpjMGx0WVdkbEFHZHNYMU4wYjNKaFoyVlRaVzFoYm5ScFkzTlBkWFJ3ZFhRQWFHVnNjR1Z5U1c1MmIyTmhkR2x2YmtWWVZBQUErajRDQUdkc1gwNTFiVmR2Y210SGNtOTFjSE1BWjJ4ZlYyOXlhMGR5YjNWd1UybDZaUUJuYkY5WGIzSnJSM0p2ZFhCSlJBQm5iRjlNYjJOaGJFbHVkbTlqWVhScGIyNUpSQUJuYkY5SGJHOWlZV3hKYm5adlkyRjBhVzl1U1VRQVoyeGZURzlqWVd4SmJuWnZZMkYwYVc5dVNXNWtaWGdBSFQ4Q0FHZHNYMDFoZUVOdmJYQjFkR1ZYYjNKclIzSnZkWEJEYjNWdWRBQm5iRjlOWVhoRGIyMXdkWFJsVjI5eWEwZHliM1Z3VTJsNlpRQm5iRjlOWVhoRGIyMXdkWFJsVlc1cFptOXliVU52YlhCdmJtVnVkSE1BWjJ4ZlRXRjRRMjl0Y0hWMFpWUmxlSFIxY21WSmJXRm5aVlZ1YVhSekFHZHNYMDFoZUVOdmJYQjFkR1ZKYldGblpWVnVhV1p2Y20xekFHZHNYMDFoZUVOdmJYQjFkR1ZCZEc5dGFXTkRiM1Z1ZEdWeWN3Qm5iRjlOWVhoRGIyMXdkWFJsUVhSdmJXbGpRMjkxYm5SbGNrSjFabVpsY25NQVltRnljbWxsY2dCdFpXMXZjbmxDWVhKeWFXVnlRWFJ2YldsalEyOTFiblJsY2dCdFpXMXZjbmxDWVhKeWFXVnlRblZtWm1WeUFHMWxiVzl5ZVVKaGNuSnBaWEpKYldGblpRQnRaVzF2Y25sQ1lYSnlhV1Z5VTJoaGNtVmtBR2R5YjNWd1RXVnRiM0o1UW1GeWNtbGxjZ0JqYjI1MGNtOXNRbUZ5Y21sbGNnQm5iRjlPZFcxVGRXSm5jbTkxY0hNQVoyeGZVM1ZpWjNKdmRYQkpSQUJ6ZFdKbmNtOTFjRTFsYlc5eWVVSmhjbkpwWlhKVGFHRnlaV1FBUjB4ZlRsWmZZMjl2Y0dWeVlYUnBkbVZmYldGMGNtbDRBRWRNWDA1V1gybHVkR1ZuWlhKZlkyOXZjR1Z5WVhScGRtVmZiV0YwY21sNEFBQUFBQUFBQU5ncEFnRHhLUUlBWTI5dmNFMWhkRXh2WVdST1ZnQmpiMjl3VFdGMFUzUnZjbVZPVmdCamIyOXdUV0YwVFhWc1FXUmtUbFlBQUFBQU16OENBR2RzWDB4aGRXNWphRWxFVGxZQUFBQlVQd0lBWjJ4ZlRHRjFibU5vVTJsNlpVNVdBR2RzWDBsdWMzUmhibU5sUTNWemRHOXRTVzVrWlhoT1ZnQm5iRjlYYjNKc1pGSmhlVTl5YVdkcGJrNVdBR2RzWDFkdmNteGtVbUY1UkdseVpXTjBhVzl1VGxZQVoyeGZUMkpxWldOMFVtRjVUM0pwWjJsdVRsWUFaMnhmVDJKcVpXTjBVbUY1UkdseVpXTjBhVzl1VGxZQVoyeGZVbUY1VkcxcGJrNVdBR2RzWDFKaGVWUnRZWGhPVmdCbmJGOUlhWFJVVGxZQVoyeGZTR2wwUzJsdVpFNVdBR2RzWDA5aWFtVmpkRlJ2VjI5eWJHUk9WZ0JuYkY5WGIzSnNaRlJ2VDJKcVpXTjBUbFlBWjJ4ZlNXNWpiMjFwYm1kU1lYbEdiR0ZuYzA1V0FHZHNYMDFsYzJoV1pYSjBhV05sYzA1V0FHWS9BZ0JuYkY5RGJHbHdSR2x6ZEdGdVkyVlFaWEpXYVdWM1RsWUFaMnhmUTNWc2JFUnBjM1JoYm1ObFVHVnlWbWxsZDA1V0FHZHNYMDFsYzJoUWNtbHRhWFJwZG1WelRsWUFaMnhmVEdGNVpYSlFaWEpXYVdWM1RsWUFaMnhmVUhKcGJXbDBhWFpsUTI5MWJuUk9WZ0JuYkY5UWNtbHRhWFJwZG1WSmJtUnBZMlZ6VGxZQVoyeGZUV1Z6YUZacFpYZERiM1Z1ZEU1V0FHZHNYMDFsYzJoV2FXVjNTVzVrYVdObGMwNVdBR2RzWDAxaGVFMWxjMmhQZFhSd2RYUldaWEowYVdObGMwNVdBR2RzWDAxaGVFMWxjMmhQZFhSd2RYUlFjbWx0YVhScGRtVnpUbFlBWjJ4ZlRXRjRUV1Z6YUZkdmNtdEhjbTkxY0ZOcGVtVk9WZ0JuYkY5TllYaE5aWE5vVm1sbGQwTnZkVzUwVGxZQVoyeGZWR0Z6YTBOdmRXNTBUbFlBWjJ4ZlRXRjRWR0Z6YTFkdmNtdEhjbTkxY0ZOcGVtVk9WZ0JrYjNWaWJHVkNhWFJ6Vkc5SmJuUTJOQUJrYjNWaWJHVkNhWFJ6Vkc5VmFXNTBOalFBYVc1ME5qUkNhWFJ6Vkc5RWIzVmliR1VBZFdsdWREWTBRbWwwYzFSdlJHOTFZbXhsQUdoaGJHWkNhWFJ6Vkc5SmJuUXhOZ0JvWVd4bVFtbDBjMVJ2VldsdWRERTJBR1pzYjJGME1UWkNhWFJ6Vkc5SmJuUXhOZ0JtYkc5aGRERTJRbWwwYzFSdlZXbHVkREUyQUdsdWRERTJRbWwwYzFSdlJteHZZWFF4TmdCMWFXNTBNVFpDYVhSelZHOUdiRzloZERFMkFHbHVkREUyUW1sMGMxUnZTR0ZzWmdCMWFXNTBNVFpDYVhSelZHOUlZV3htQUhCaFkydFRibTl5YlRSNE9BQjFibkJoWTJ0VGJtOXliVFI0T0FCd1lXTnJWVzV2Y20wMGVEZ0FkVzV3WVdOclZXNXZjbTAwZURnQWNHRmphMFJ2ZFdKc1pUSjRNeklBZFc1d1lXTnJSRzkxWW14bE1uZ3pNZ0J3WVdOclNXNTBNbmd6TWdCMWJuQmhZMnRKYm5ReWVETXlBSEJoWTJ0VmFXNTBNbmd6TWdCMWJuQmhZMnRWYVc1ME1uZ3pNZ0J3WVdOclNXNTBNbmd4TmdCMWJuQmhZMnRKYm5ReWVERTJBSEJoWTJ0VmFXNTBNbmd4TmdCMWJuQmhZMnRWYVc1ME1uZ3hOZ0J3WVdOclNXNTBOSGd4TmdCMWJuQmhZMnRKYm5RMGVERTJBSEJoWTJ0VmFXNTBOSGd4TmdCMWJuQmhZMnRWYVc1ME5IZ3hOZ0J3WVdOclJteHZZWFF5ZURFMkFIVnVjR0ZqYTBac2IyRjBNbmd4TmdCd1lXTnJNVFlBY0dGamF6TXlBSEJoWTJzMk5BQjFibkJoWTJzek1nQjFibkJoWTJzeE5nQjFibkJoWTJzNEFHRjBiMjFwWTB4dllXUUFZWFJ2YldsalUzUnZjbVVBWVhSdmJXbGpRMjkxYm5SbGNrRmtaQUJoZEc5dGFXTkRiM1Z1ZEdWeVUzVmlkSEpoWTNRQVlYUnZiV2xqUTI5MWJuUmxjazFwYmdCaGRHOXRhV05EYjNWdWRHVnlUV0Y0QUdGMGIyMXBZME52ZFc1MFpYSkJibVFBWVhSdmJXbGpRMjkxYm5SbGNrOXlBR0YwYjIxcFkwTnZkVzUwWlhKWWIzSUFZWFJ2YldsalEyOTFiblJsY2tWNFkyaGhibWRsQUdGMGIyMXBZME52ZFc1MFpYSkRiMjF3VTNkaGNBQm1jbVY0Y0FCc1pHVjRjQUIxWVdSa1EyRnljbmtBZFhOMVlrSnZjbkp2ZHdCMWJYVnNSWGgwWlc1a1pXUUFhVzExYkVWNGRHVnVaR1ZrQUdKcGRHWnBaV3hrUlhoMGNtRmpkQUJpYVhSbWFXVnNaRWx1YzJWeWRBQmlhWFJtYVdWc1pGSmxkbVZ5YzJVQVltbDBRMjkxYm5RQVptbHVaRXhUUWdCbWFXNWtUVk5DQUdsdFlXZGxVMmw2WlFCcGJXRm5aVk5oYlhCc1pYTUFhVzFoWjJWTWIyRmtBR2x0WVdkbFUzUnZjbVVBYVcxaFoyVkJkRzl0YVdOTWIyRmtBR2x0WVdkbFFYUnZiV2xqVTNSdmNtVUFjM1ZpY0dGemMweHZZV1FBYzNWaWNHRnpjMHh2WVdSTlV3QjBaWGgwZFhKbFIyRjBhR1Z5VDJabWMyVjBBRzV2YVhObE1RQnViMmx6WlRJQWJtOXBjMlV6QUc1dmFYTmxOQUJtZEhKaGJuTm1iM0p0QUhSbGVIUjFjbVV4UkFCMFpYaDBkWEpsTVVSUWNtOXFBSFJsZUhSMWNtVXlSRkpsWTNRQWRHVjRkSFZ5WlRKRVVtVmpkRkJ5YjJvQWMyaGhaRzkzTWtSU1pXTjBBSE5vWVdSdmR6SkVVbVZqZEZCeWIyb0FkR1Y0ZEhWeVpUSkVBSFJsZUhSMWNtVXlSRkJ5YjJvQWRHVjRkSFZ5WlRORUFIUmxlSFIxY21VelJGQnliMm9BZEdWNGRIVnlaVU4xWW1VQWMyaGhaRzkzTVVRQWMyaGhaRzkzTWtRQWMyaGhaRzkzTVVSUWNtOXFBSE5vWVdSdmR6SkVVSEp2YWdCemNHRnljMlZVWlhobGJITlNaWE5wWkdWdWRFRlNRZ0JoYm5sSmJuWnZZMkYwYVc5dUFHRnNiRWx1ZG05allYUnBiMjV6QUdGc2JFbHVkbTlqWVhScGIyNXpSWEYxWVd3QWMzZHBlbnBzWlVsdWRtOWpZWFJwYjI1elRXRnphMlZrUVUxRUFFVnRhWFJUZEhKbFlXMVdaWEowWlhnQVJXNWtVM1J5WldGdFVISnBiV2wwYVhabEFFVnRhWFJXWlhKMFpYZ0FSVzVrVUhKcGJXbDBhWFpsQUdKbFoybHVTVzUyYjJOaGRHbHZia2x1ZEdWeWJHOWphMEZTUWdCbGJtUkpiblp2WTJGMGFXOXVTVzUwWlhKc2IyTnJRVkpDQUhSeVlXTmxUbFlBWlhobFkzVjBaVU5oYkd4aFlteGxUbFlBY21Wd2IzSjBTVzUwWlhKelpXTjBhVzl1VGxZQWFXZHViM0psU1c1MFpYSnpaV04wYVc5dVRsWUFkR1Z5YldsdVlYUmxVbUY1VGxZQWQzSnBkR1ZRWVdOclpXUlFjbWx0YVhScGRtVkpibVJwWTJWek5IZzRUbFlBWjJ4ZlRXRjRWSEpoYm5ObWIzSnRSbVZsWkdKaFkydENkV1ptWlhKekFBQjRQd0lBWjJ4ZlRXRjRWSEpoYm5ObWIzSnRSbVZsWkdKaFkydEpiblJsY214bFlYWmxaRU52YlhCdmJtVnVkSE1BWjJ4ZlRXbHVVSEp2WjNKaGJWUmxlR1ZzVDJabWMyVjBBQUFBa0Q4Q0FHZHNYMDFoZUZCeWIyZHlZVzFVWlhobGJFOW1abk5sZEFCbmJGOU5ZWGhXYVdWM2NHOXlkSE1BWjJ4ZlJuSmhaMFJoZEdFQVFlRG1DQXVpQkVDVEFBQkZrd0FBUzVNQUFGR1RBQUJRa1FBQVZwRUFBRnVSQUFCZ2tRQUFmSklBQUlDU0FBQ0drZ0FBakpJQUFQQ1NBQUQxa2dBQSs1SUFBQUdUQUFBZ0FHOTFkQ0FBWTI5b1pYSmxiblFnZG05c1lYUnBiR1VnQUdsdWIzVjBJQUJ5WVdScFlXNXpBR1JsWjNKbFpYTUFjMmx1QUdOdmN3QjBZVzRBWVhOcGJnQmhZMjl6QUdGMFlXNEFjRzkzQUdWNGNBQnNiMmNBWlhod01nQnNiMmN5QUhOeGNuUUFhVzUyWlhKelpYTnhjblFBWVdKekFITnBaMjRBWm14dmIzSUFZMlZwYkFCbWNtRmpkQUJ0YjJRQWJXbHVBRzFoZUFCamJHRnRjQUJ0YVhnQWMzUmxjQUJ6Ylc5dmRHaHpkR1Z3QUc1dmNtMWhiR2w2WlFCbVlXTmxabTl5ZDJGeVpBQnlaV1pzWldOMEFISmxabkpoWTNRQWJHVnVaM1JvQUdScGMzUmhibU5sQUdSdmRBQmpjbTl6Y3dCc1pYTnpWR2hoYmdCc1pYTnpWR2hoYmtWeGRXRnNBR2R5WldGMFpYSlVhR0Z1QUdkeVpXRjBaWEpVYUdGdVJYRjFZV3dBWlhGMVlXd0FibTkwUlhGMVlXd0FZVzU1QUdGc2JBQnViM1FBYzJsdWFBQmpiM05vQUhSaGJtZ0FZWE5wYm1nQVlXTnZjMmdBWVhSaGJtZ0FkSEoxYm1NQWNtOTFibVFBY205MWJtUkZkbVZ1QUcxdlpHWUFhWE5wYm1ZQWFYTnVZVzRBWVhSdmJXbGpRV1JrQUdGMGIyMXBZMDFwYmdCaGRHOXRhV05OWVhnQVlYUnZiV2xqUVc1a0FHRjBiMjFwWTA5eUFHRjBiMjFwWTFodmNnQmhkRzl0YVdORmVHTm9ZVzVuWlFCaGRHOXRhV05EYjIxd1UzZGhjQUJCa09zSUN3b0lBQUFBQUFBQUFDd0JBRUdrNndnTENRY0FBQUFBQUFBQWdnQkIwT3NJQ3dvSUFBQUFBQUFBQURZQkFFSGs2d2dMQ2djQUFBQUFBQUFBcmdFQVFaRHNDQXNLQ0FBQUFBQUFBQUEyQVFCQnBPd0lDd29IQUFBQUFBQUFBTUlCQUVITTdBZ0xzaGR3WVdOclUyNXZjbTB5ZURFMkFIVnVjR0ZqYTFOdWIzSnRNbmd4TmdCd1lXTnJWVzV2Y20weWVERTJBSFZ1Y0dGamExVnViM0p0TW5neE5nQndZV05yU0dGc1pqSjRNVFlBZFc1d1lXTnJTR0ZzWmpKNE1UWUFiV0YwY21sNFEyOXRjRTExYkhRQWIzVjBaWEpRY205a2RXTjBBSFJ5WVc1emNHOXpaUUJrWlhSbGNtMXBibUZ1ZEFCcGJuWmxjbk5sQUdac2IyRjBRbWwwYzFSdlNXNTBBR1pzYjJGMFFtbDBjMVJ2VldsdWRBQnBiblJDYVhSelZHOUdiRzloZEFCMWFXNTBRbWwwYzFSdlJteHZZWFFBZEdWNGRIVnlaVk5wZW1VQWRHVjRkSFZ5WlZGMVpYSjVURzlrQUhSbGVIUjFjbVZSZFdWeWVVeGxkbVZzY3dCMFpYaDBkWEpsVTJGdGNHeGxjd0IwWlhoMGRYSmxVSEp2YWdCMFpYaDBkWEpsVEc5a0FIUmxlSFIxY21WUFptWnpaWFFBZEdWNFpXeEdaWFJqYUFCMFpYaGxiRVpsZEdOb1QyWm1jMlYwQUhSbGVIUjFjbVZRY205cVQyWm1jMlYwQUhSbGVIUjFjbVZNYjJSUFptWnpaWFFBZEdWNGRIVnlaVkJ5YjJwTWIyUUFkR1Y0ZEhWeVpWQnliMnBNYjJSUFptWnpaWFFBZEdWNGRIVnlaVWR5WVdRQWRHVjRkSFZ5WlVkeVlXUlBabVp6WlhRQWRHVjRkSFZ5WlZCeWIycEhjbUZrQUhSbGVIUjFjbVZRY205cVIzSmhaRTltWm5ObGRBQkhURjlCVWtKZmMyaGhaR1Z5WDJSeVlYZGZjR0Z5WVcxbGRHVnljd0JIVEY5QlVrSmZjMmhoWkdWeVgySmhiR3h2ZEFCSFRGOUJVa0pmYzJoaFpHVnlYMmR5YjNWd1gzWnZkR1VBUjB4ZlFVMUVYM05vWVdSbGNsOWlZV3hzYjNRQVIweGZRVTFFWDNOb1lXUmxjbDkwY21sdVlYSjVYMjFwYm0xaGVBQkhURjlCVFVSZloyTnVYM05vWVdSbGNnQkhURjlCVFVSZmMyaGhaR1Z5WDJaeVlXZHRaVzUwWDIxaGMyc0FSMHhmU1U1VVJVeGZjMmhoWkdWeVgybHVkR1ZuWlhKZlpuVnVZM1JwYjI1ek1nQkhURjlPVmw5emFHRmtaWEpmZEdWNGRIVnlaVjltYjI5MGNISnBiblFBUjB4ZlJWaFVYM05vWVdSbGNsOTBaWGgwZFhKbFgyeHZaQUJIVEY5RldGUmZaM0IxWDNOb1lXUmxjalVBUjB4ZlQwVlRYMmR3ZFY5emFHRmtaWEkxQUVkTVgwOUZVMTl6YUdGa1pYSmZhVzFoWjJWZllYUnZiV2xqQUVkTVgwOVdVbDl0ZFd4MGFYWnBaWGNBUjB4ZlQxWlNYMjExYkhScGRtbGxkeklBUjB4ZlJWaFVYM05vWVdSdmQxOXpZVzF3YkdWeWN3QkhURjlGV0ZSZmNISnBiV2wwYVhabFgySnZkVzVrYVc1blgySnZlQUJIVEY5UFJWTmZjSEpwYldsMGFYWmxYMkp2ZFc1a2FXNW5YMkp2ZUFCSFRGOUJVa0pmYzJoaFpHVnlYM1pwWlhkd2IzSjBYMnhoZVdWeVgyRnljbUY1QUVkTVgwNVdYM1pwWlhkd2IzSjBYMkZ5Y21GNU1nQkhURjlPVmw5emRHVnlaVzlmZG1sbGQxOXlaVzVrWlhKcGJtY0FSMHhmVGxaWVgyMTFiSFJwZG1sbGQxOXdaWEpmZG1sbGQxOWhkSFJ5YVdKMWRHVnpBRWRNWDBGU1FsOTJhV1YzY0c5eWRGOWhjbkpoZVFCSFRGOUZXRlJmWjJWdmJXVjBjbmxmY0c5cGJuUmZjMmw2WlFCSFRGOVBSVk5mWjJWdmJXVjBjbmxmY0c5cGJuUmZjMmw2WlFCSFRGOUZXRlJmZEdWemMyVnNiR0YwYVc5dVgzQnZhVzUwWDNOcGVtVUFSMHhmVDBWVFgzUmxjM05sYkd4aGRHbHZibDl3YjJsdWRGOXphWHBsQUVkTVgwVllWRjlrWlhacFkyVmZaM0p2ZFhBQVIweGZSVmhVWDIxMWJIUnBkbWxsZHdCSFRGOUxTRkpmYzJoaFpHVnlYM04xWW1keWIzVndYMkpoYzJsakFFZE1YMHRJVWw5emFHRmtaWEpmYzNWaVozSnZkWEJmWW1Gc2JHOTBBRWRNWDA1V1gzTm9ZV1JsY2w5emJWOWlkV2xzZEdsdWN3QkhURjlCVWtKZmMyaGhaR1Z5WDNOMFpXNWphV3hmWlhod2IzSjBBRWRNWDBGU1FsOXpZVzF3YkdWZmMyaGhaR2x1WndCSFRGOVBSVk5mYzJGdGNHeGxYM1poY21saFlteGxjd0JIVEY5UFJWTmZjM1JoYm1SaGNtUmZaR1Z5YVhaaGRHbDJaWE1BUjB4ZlQwVlRYM05vWVdSbGNsOXRkV3gwYVhOaGJYQnNaVjlwYm5SbGNuQnZiR0YwYVc5dUFFZE1YMEZTUWw5emFHRmtaWEpmZEdWNGRIVnlaVjlzYjJRQVIweGZRVkpDWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxBRWRNWDBGU1FsOXphR0ZrWlhKZllYUnZiV2xqWDJOdmRXNTBaWEp6QUVkTVgwRlNRbDlrWlhKcGRtRjBhWFpsWDJOdmJuUnliMndBUjB4ZlFWSkNYM053WVhKelpWOTBaWGgwZFhKbE1nQkhURjlCVWtKZmMzQmhjbk5sWDNSbGVIUjFjbVZmWTJ4aGJYQUFSMHhmUVUxRVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5MlpYSjBaWGhmY0dGeVlXMWxkR1Z5QUVkTVgwRk5SRjkwWlhoMGRYSmxYMmRoZEdobGNsOWlhV0Z6WDJ4dlpBQkhURjlCVFVSZmMyaGhaR1Z5WDJsdFlXZGxYMnh2WVdSZmMzUnZjbVZmYkc5a0FFZE1YMDVXWDJOdmJuTmxjblpoZEdsMlpWOXlZWE4wWlhKZmRXNWtaWEpsYzNScGJXRjBhVzl1QUVkTVgwNVdYM05vWVdScGJtZGZjbUYwWlY5cGJXRm5aUUJIVEY5T1ZsOW1jbUZuYldWdWRGOXphR0ZrWlhKZlltRnllV05sYm5SeWFXTUFSMHhmUlZoVVgyWnlZV2R0Wlc1MFgybHVkbTlqWVhScGIyNWZaR1Z1YzJsMGVRQkhURjlGV0ZSZlpuSmhaMTlrWlhCMGFBQkhURjlCVWtKZmMyaGhaR1Z5WDJOc2IyTnJBRWRNWDBWWVZGOXphR0ZrWlhKZmNtVmhiSFJwYldWZlkyeHZZMnNBUjB4ZlJWaFVYMmRsYjIxbGRISjVYM05vWVdSbGNnQkhURjlQUlZOZloyVnZiV1YwY25sZmMyaGhaR1Z5QUVkTVgwdElVbDl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZkbTkwWlFCSFRGOUxTRkpmYzJoaFpHVnlYM04xWW1keWIzVndYM05vZFdabWJHVUFSMHhmUzBoU1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5emFIVm1abXhsWDNKbGJHRjBhWFpsQUVkTVgwdElVbDl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZZWEpwZEdodFpYUnBZd0JIVEY5TFNGSmZjMmhoWkdWeVgzTjFZbWR5YjNWd1gyTnNkWE4wWlhKbFpBQkhURjlMU0ZKZmMyaGhaR1Z5WDNOMVltZHliM1Z3WDNGMVlXUUFSMHhmVGxaZmMyaGhaR1Z5WDNOMVltZHliM1Z3WDNCaGNuUnBkR2x2Ym1Wa0FFZE1YMHRJVWw5dFpXMXZjbmxmYzJOdmNHVmZjMlZ0WVc1MGFXTnpBRWRNWDBWWVZGOWtaVzF2ZEdWZmRHOWZhR1ZzY0dWeVgybHVkbTlqWVhScGIyNEFSMHhmUVZKQ1gyTnZiWEIxZEdWZmMyaGhaR1Z5QUVkTVgwNVdYMk52YlhCMWRHVmZjMmhoWkdWeVgyUmxjbWwyWVhScGRtVnpBRWRNWDA1V1gzSmhlVjkwY21GamFXNW5BRWRNWDA1V1gyMWxjMmhmYzJoaFpHVnlBRWRNWDBGU1FsOWxibWhoYm1ObFpGOXNZWGx2ZFhSekFFZE1YMEZTUWw5emFHRmthVzVuWDJ4aGJtZDFZV2RsWHpReU1IQmhZMnNBQUVkTVgwVllWRjlpZFdabVpYSmZjbVZtWlhKbGJtTmxNZ0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhNQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMlpzYjJGME1UWUFSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6WDJsdWREZ0FSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6WDJsdWRERTJBRWRNWDBWWVZGOXphR0ZrWlhKZlpYaHdiR2xqYVhSZllYSnBkR2h0WlhScFkxOTBlWEJsYzE5cGJuUXpNZ0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZmFXNTBOalFBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgyWnNiMkYwTXpJQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMlpzYjJGME5qUUFSMHhmUVUxRVgyZHdkVjl6YUdGa1pYSmZhVzUwTVRZQVIweGZRVTFFWDJkd2RWOXphR0ZrWlhKZmFHRnNabDltYkc5aGRBQm5iRjlXWlhKMFpYaEpSQUJuYkY5SmJuTjBZVzVqWlVsRUFITm9hV1owTFhOaGJYQnNaWEl0WW1sdVpHbHVad0J6YUdsbWRDMTBaWGgwZFhKbExXSnBibVJwYm1jQWMyaHBablF0YVcxaFoyVXRZbWx1WkdsdVp3QnphR2xtZEMxVlFrOHRZbWx1WkdsdVp3QnphR2xtZEMxemMySnZMV0pwYm1ScGJtY0FjMmhwWm5RdGRXRjJMV0pwYm1ScGJtY0FRWWlFQ1F2N0FSd0FBQUFkQUFBQUJnQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFEWUFBQUEzQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVFRQUFBRUlBQUFCREFBQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJoYkd4dlkyRjBiM0k4VkQ0Nk9tRnNiRzlqWVhSbEtITnBlbVZmZENCdUtTQW5iaWNnWlhoalpXVmtjeUJ0WVhocGJYVnRJSE4xY0hCdmNuUmxaQ0J6YVhwbEFFR01oZ2tMdFFFY0FBQUFIUUFBQUFZQUFBQWVBQUFBU1FBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBa0FBQUFKUUFBQUNZQUFBQW5BQUFBS0FBQUFDa0FBQUFxQUFBQVNnQUFBQ3dBQUFBdEFBQUFMZ0FBQUM4QUFBQXdBQUFBTVFBQUFESUFBQUF6QUFBQU5BQUFBRFVBQUFBMkFBQUFTd0FBQURnQUFBQTVBQUFBT2dBQUFEc0FBQUE4QUFBQVBRQUFBRDRBQUFBL0FBQUFRQUFBQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFFSE1od2tMMmdFSUFBQUFUQUFBQUUwQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQVRnQUFBQkFBQUFBUkFBQUFFZ0FBQU5NQkFBRFZBUUFBMWdFQUFOY0JBQURLQVFBQTh3RUFBUFFCQUFEMUFRQUF5d0VBQVBZQkFBRDNBUUFBK0FFQUFOSUJBQURrQVFBQTVRRUFBT1lCQUFEVUFRQUE0UUVBQU9JQkFBRGpBUUFBekFFQUFPY0JBQURvQVFBQTZRRUFBTTBCQUFEcUFRQUE2d0VBQU93QkFBRE9BUUFBN1FFQUFPNEJBQUR2QVFBQXp3RUFBUEFCQUFEeEFRQUE4Z0VBQU5BQkFBRDVBUUFBK2dFQUFQc0JBQURSQVFBQS9BRUFBUDBCQUFEK0FRQkJzSWtKQzZvRUFRQUFBQUVBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQlFBQUFCUUFBQUFIQUFBQUZBQUFBQWtBQUFBVUFBQUFDd0FBQUloQkFnQ2VRUUlBdEVFQ0FNaEJBZ0RhUVFJQTdVRUNBR0p5WVc1amFBQmtiMjUwWDJac1lYUjBaVzRBWm14aGRIUmxiZ0IxYm5KdmJHd0FiRzl2Y0FCa2IyNTBYM1Z1Y205c2JBQmtaWEJsYm1SbGJtTjVYMmx1Wm1sdWFYUmxBR1JsY0dWdVpHVnVZM2xmYkdWdVozUm9BRzFwYmw5cGRHVnlZWFJwYjI1ekFHMWhlRjlwZEdWeVlYUnBiMjV6QUdsMFpYSmhkR2x2Ymw5dGRXeDBhWEJzWlFCd1pXVnNYMk52ZFc1MEFIQmhjblJwWVd4ZlkyOTFiblFBWVhSMGNtbGlkWFJsSUhkcGRHZ2dZWEpuZFcxbGJuUnpJRzV2ZENCeVpXTnZaMjVwZW1Wa0xDQnphMmx3Y0dsdVp3QUFZWFIwY21saWRYUmxJR1J2WlhNZ2JtOTBJR0Z3Y0d4NUlIUnZJR0VnYzJWc1pXTjBhVzl1QUdGMGRISnBZblYwWlNCa2IyVnpJRzV2ZENCaGNIQnNlU0IwYnlCaElITjNhWFJqYUFCaGRIUnlhV0oxZEdVZ1pHOWxjeUJ1YjNRZ1lYQndiSGtnZEc4Z1lTQnNiMjl3QUdWNGNHVmpkR1ZrSUc1dklHRnlaM1Z0Wlc1MGN3QnRkWE4wSUdKbElIQnZjMmwwYVhabEFHVjRjR1ZqZEdWa0lHRWdjMmx1WjJ4bElHbHVkR1ZuWlhJZ1lYSm5kVzFsYm5RQVlYUjBjbWxpZFhSbElISmxjWFZwY21WeklHRWdVMUJKVWkxV0lERXVOQ0IwWVhKblpYUXRaVzUyQUcxMWMzUWdZbVVnWjNKbFlYUmxjaUIwYUdGdUlHOXlJR1Z4ZFdGc0lIUnZJREVBUWVTTkNRdHhIQUFBQUIwQUFBQlBBQUFBVUFBQUFCOEFBQUFnQUFBQUlRQUFBQ0lBQUFBakFBQUFKQUFBQUNVQUFBQW1BQUFBSndBQUFDZ0FBQUJSQUFBQVVnQUFBQ3NBQUFBc0FBQUFMUUFBQUM0QUFBQXZBQUFBTUFBQUFERUFBQUF5QUFBQU13QUFBRFFBQUFCVEFBQUFWQUFBQUZVQVFlQ09DUXR4SEFBQUFCMEFBQUJXQUFBQVVBQUFBQjhBQUFBZ0FBQUFJUUFBQUNJQUFBQWpBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBRmNBQUFBcEFBQUFVZ0FBQUNzQUFBQXNBQUFBTFFBQUFDNEFBQUF2QUFBQU1BQUFBREVBQUFBeUFBQUFNd0FBQUZnQUFBQTFBQUFBVkFBQUFGa0FRZHlQQ1F1OUFSd0FBQUFkQUFBQVdnQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQVd3QUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFYQUFBQURNQUFBQTBBQUFBTlFBQUFGMEFBQUJlQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVFRQUFBRUlBQUFCREFBQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJmQUFBQVlBQkJwSkVKQzhVQkhBQUFBQjBBQUFCaEFBQUFIZ0FBQUI4QUFBQWdBQUFBSVFBQUFDSUFBQUFqQUFBQUpBQUFBQ1VBQUFBbUFBQUFZZ0FBQUNnQUFBQXBBQUFBS2dBQUFDc0FBQUFzQUFBQUxRQUFBQzRBQUFBdkFBQUFNQUFBQURFQUFBQXlBQUFBWXdBQUFEUUFBQUExQUFBQVpBQUFBR1VBQUFBNEFBQUFPUUFBQURvQUFBQTdBQUFBUEFBQUFEMEFBQUErQUFBQVB3QUFBRUFBQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIQUFBQVNBQUFBR1lBQUFCbkFBQUFhQUFBQUdrQVFmU1NDUXU5QVJ3QUFBQWRBQUFBYWdBQUFCNEFBQUFmQUFBQWF3QUFBQ0VBQUFBaUFBQUFJd0FBQUNRQUFBQWxBQUFBSmdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFiQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQUcwQUFBQnVBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBUVFBQUFFSUFBQUJEQUFBQVJBQUFBRVVBQUFCR0FBQUFSd0FBQUVnQUFBQnZBQUFBY0FCQnZKUUpDOGtCSEFBQUFCMEFBQUJ4QUFBQUhnQUFBRWtBQUFBZ0FBQUFJUUFBQUNJQUFBQnlBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBcEFBQUFLZ0FBQUVvQUFBQXNBQUFBTFFBQUFDNEFBQUJ6QUFBQU1BQUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBTmdBQUFIUUFBQUE0QUFBQU9RQUFBRG9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFFQUFBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFFR1FsZ2tMeFFFY0FBQUFIUUFBQUhvQUFBQWVBQUFBU1FBQUFDQUFBQUFoQUFBQWV3QUFBQ01BQUFBa0FBQUFKUUFBQUNZQUFBQW5BQUFBS0FBQUFDa0FBQUFxQUFBQVNnQUFBQ3dBQUFBdEFBQUFmQUFBQUM4QUFBQXdBQUFBTVFBQUFESUFBQUF6QUFBQU5BQUFBRFVBQUFBMkFBQUFmUUFBQURnQUFBQTVBQUFBT2dBQUFEc0FBQUE4QUFBQVBRQUFBRDRBQUFBL0FBQUFRQUFBQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFBQUFmZ0FBQUg4QUFBQ0FBQUFBZ1FCQjRKY0pDOWtCSEFBQUFCMEFBQUNDQUFBQUhnQUFBRWtBQUFBZ0FBQUFnd0FBQUNJQUFBQWpBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBcEFBQUFLZ0FBQUVvQUFBQXNBQUFBaEFBQUFDNEFBQUF2QUFBQU1BQUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBaFFBQUFJWUFBQUE0QUFBQU9RQUFBRG9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFFQUFBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFJY0FBQUNJQUFBQWlRQUFBSW9BQUFDTEFBQUFqQUFBQUkwQUFBQ09BQUFBandCQnhKa0pDOEVCSEFBQUFCMEFBQUNRQUFBQUhnQUFBQjhBQUFBZ0FBQUFJUUFBQUNJQUFBQWpBQUFBa1FBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBcEFBQUFLZ0FBQUNzQUFBQXNBQUFBTFFBQUFDNEFBQUF2QUFBQWtnQUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBTmdBQUFKTUFBQUE0QUFBQU9RQUFBRG9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFFQUFBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFKUUFBQUNWQUFBQWxnQkJrSnNKQzNrY0FBQUFIUUFBQUpjQUFBQlFBQUFBSHdBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBa0FBQUFtQUFBQUNZQUFBQW5BQUFBS0FBQUFDa0FBQUJTQUFBQUt3QUFBQ3dBQUFBdEFBQUFMZ0FBQUM4QUFBQXdBQUFBbVFBQUFESUFBQUF6QUFBQU5BQUFBRFVBQUFCVUFBQUFtZ0FBQUpzQUFBQ2NBRUdVbkFrTDVqVWNBQUFBSFFBQUFBWUFBQUJRQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWtBQUFBSlFBQUFDWUFBQUFuQUFBQUtBQUFBQ2tBQUFCU0FBQUFLd0FBQUN3QUFBQXRBQUFBTGdBQUFDOEFBQUF3QUFBQU1RQUFBRElBQUFBekFBQUFOQUFBQURVQUFBQlVBQUFBblFBQUFHTnZiWEJoZEdsaWFXeHBkSGtBWTI5dWMzUUFkVzVwWm05eWJRQmlkV1ptWlhJQWFXNEFiM1YwQUhOdGIyOTBhQUJtYkdGMEFHTmxiblJ5YjJsa0FHbHVkbUZ5YVdGdWRBQndZV05yWldRQWNtVnpiM1Z5WTJVQWFXNXZkWFFBYzNSeWRXTjBBR0p5WldGckFHTnZiblJwYm5WbEFHUnZBR1p2Y2dCM2FHbHNaUUJ6ZDJsMFkyZ0FZMkZ6WlFCa1pXWmhkV3gwQUdsbUFHVnNjMlVBWkdselkyRnlaQUJ5WlhSMWNtNEFkbTlwWkFCaWIyOXNBR1pzYjJGMEFHbHVkQUJpZG1Wak1nQmlkbVZqTXdCaWRtVmpOQUIyWldNeUFIWmxZek1BZG1Wak5BQnBkbVZqTWdCcGRtVmpNd0JwZG1Wak5BQnRZWFF5QUcxaGRETUFiV0YwTkFCMGNuVmxBR1poYkhObEFHeGhlVzkxZEFCemFHRnlaV1FBYUdsbmFIQUFiV1ZrYVhWdGNBQnNiM2R3QUhOMWNHVnljQUJ3Y21WamFYTnBiMjRBYldGME1uZ3lBRzFoZERKNE13QnRZWFF5ZURRQWJXRjBNM2d5QUcxaGRETjRNd0J0WVhRemVEUUFiV0YwTkhneUFHMWhkRFI0TXdCdFlYUTBlRFFBZFdsdWRBQjFkbVZqTWdCMWRtVmpNd0IxZG1Wak5BQnViMjUxYm1sbWIzSnRSVmhVQUdSbGJXOTBaUUJoZEhSeWFXSjFkR1VBZG1GeWVXbHVad0J1YjNCbGNuTndaV04wYVhabEFHTnZhR1Z5Wlc1MEFHUmxkbWxqWldOdmFHVnlaVzUwQUhGMVpYVmxabUZ0YVd4NVkyOW9aWEpsYm5RQWQyOXlhMmR5YjNWd1kyOW9aWEpsYm5RQWMzVmlaM0p2ZFhCamIyaGxjbVZ1ZEFCdWIyNXdjbWwyWVhSbEFISmxjM1J5YVdOMEFISmxZV1J2Ym14NUFIZHlhWFJsYjI1c2VRQmhkRzl0YVdOZmRXbHVkQUIyYjJ4aGRHbHNaUUJ3WVhSamFBQnpZVzF3YkdVQWMzVmljbTkxZEdsdVpRQmtiV0YwTWdCa2JXRjBNd0JrYldGME5BQmtiV0YwTW5neUFHUnRZWFF5ZURNQVpHMWhkREo0TkFCa2JXRjBNM2d5QUdSdFlYUXplRE1BWkcxaGRETjROQUJrYldGME5IZ3lBR1J0WVhRMGVETUFaRzFoZERSNE5BQnBiV0ZuWlRGRUFHbHBiV0ZuWlRGRUFIVnBiV0ZuWlRGRUFHbHRZV2RsTWtRQWFXbHRZV2RsTWtRQWRXbHRZV2RsTWtRQWFXMWhaMlV6UkFCcGFXMWhaMlV6UkFCMWFXMWhaMlV6UkFCcGJXRm5aVEpFVW1WamRBQnBhVzFoWjJVeVJGSmxZM1FBZFdsdFlXZGxNa1JTWldOMEFHbHRZV2RsUTNWaVpRQnBhVzFoWjJWRGRXSmxBSFZwYldGblpVTjFZbVVBYVcxaFoyVkNkV1ptWlhJQWFXbHRZV2RsUW5WbVptVnlBSFZwYldGblpVSjFabVpsY2dCcGJXRm5aVEZFUVhKeVlYa0FhV2x0WVdkbE1VUkJjbkpoZVFCMWFXMWhaMlV4UkVGeWNtRjVBR2x0WVdkbE1rUkJjbkpoZVFCcGFXMWhaMlV5UkVGeWNtRjVBSFZwYldGblpUSkVRWEp5WVhrQWFXMWhaMlZEZFdKbFFYSnlZWGtBYVdsdFlXZGxRM1ZpWlVGeWNtRjVBSFZwYldGblpVTjFZbVZCY25KaGVRQnBiV0ZuWlRKRVRWTUFhV2x0WVdkbE1rUk5Vd0IxYVcxaFoyVXlSRTFUQUdsdFlXZGxNa1JOVTBGeWNtRjVBR2xwYldGblpUSkVUVk5CY25KaGVRQjFhVzFoWjJVeVJFMVRRWEp5WVhrQVpHOTFZbXhsQUdSMlpXTXlBR1IyWldNekFHUjJaV00wQUdsdWREWTBYM1FBZFdsdWREWTBYM1FBYVRZMGRtVmpNZ0JwTmpSMlpXTXpBR2syTkhabFl6UUFkVFkwZG1Wak1nQjFOalIyWldNekFIVTJOSFpsWXpRQWFXNTBPRjkwQUdrNGRtVmpNZ0JwT0habFl6TUFhVGgyWldNMEFIVnBiblE0WDNRQWRUaDJaV015QUhVNGRtVmpNd0IxT0habFl6UUFhVzUwTVRaZmRBQnBNVFoyWldNeUFHa3hOblpsWXpNQWFURTJkbVZqTkFCMWFXNTBNVFpmZEFCMU1UWjJaV015QUhVeE5uWmxZek1BZFRFMmRtVmpOQUJwYm5Rek1sOTBBR2t6TW5abFl6SUFhVE15ZG1Wak13QnBNekoyWldNMEFIVnBiblF6TWw5MEFIVXpNblpsWXpJQWRUTXlkbVZqTXdCMU16SjJaV00wQUdac2IyRjBNVFpmZEFCbU1UWjJaV015QUdZeE5uWmxZek1BWmpFMmRtVmpOQUJtTVRadFlYUXlBR1l4Tm0xaGRETUFaakUyYldGME5BQm1NVFp0WVhReWVESUFaakUyYldGME1uZ3pBR1l4Tm0xaGRESjROQUJtTVRadFlYUXplRElBWmpFMmJXRjBNM2d6QUdZeE5tMWhkRE40TkFCbU1UWnRZWFEwZURJQVpqRTJiV0YwTkhnekFHWXhObTFoZERSNE5BQm1iRzloZERNeVgzUUFaak15ZG1Wak1nQm1NekoyWldNekFHWXpNblpsWXpRQVpqTXliV0YwTWdCbU16SnRZWFF6QUdZek1tMWhkRFFBWmpNeWJXRjBNbmd5QUdZek1tMWhkREo0TXdCbU16SnRZWFF5ZURRQVpqTXliV0YwTTNneUFHWXpNbTFoZERONE13Qm1Nekp0WVhRemVEUUFaak15YldGME5IZ3lBR1l6TW0xaGREUjRNd0JtTXpKdFlYUTBlRFFBWm14dllYUTJORjkwQUdZMk5IWmxZeklBWmpZMGRtVmpNd0JtTmpSMlpXTTBBR1kyTkcxaGRESUFaalkwYldGME13Qm1OalJ0WVhRMEFHWTJORzFoZERKNE1nQm1OalJ0WVhReWVETUFaalkwYldGME1uZzBBR1kyTkcxaGRETjRNZ0JtTmpSdFlYUXplRE1BWmpZMGJXRjBNM2cwQUdZMk5HMWhkRFI0TWdCbU5qUnRZWFEwZURNQVpqWTBiV0YwTkhnMEFITmhiWEJzWlhJeVJBQnpZVzF3YkdWeVEzVmlaUUJ6WVcxd2JHVnlRM1ZpWlZOb1lXUnZkd0J6WVcxd2JHVnlNa1JCY25KaGVRQnpZVzF3YkdWeU1rUkJjbkpoZVZOb1lXUnZkd0JwYzJGdGNHeGxjakpFQUdsellXMXdiR1Z5TTBRQWFYTmhiWEJzWlhKRGRXSmxBR2x6WVcxd2JHVnlNa1JCY25KaGVRQjFjMkZ0Y0d4bGNqSkVBSFZ6WVcxd2JHVnlNMFFBZFhOaGJYQnNaWEpEZFdKbEFIVnpZVzF3YkdWeU1rUkJjbkpoZVFCellXMXdiR1Z5TTBRQWMyRnRjR3hsY2pKRVUyaGhaRzkzQUhSbGVIUjFjbVV5UkFCMFpYaDBkWEpsUTNWaVpRQjBaWGgwZFhKbE1rUkJjbkpoZVFCcGRHVjRkSFZ5WlRKRUFHbDBaWGgwZFhKbE0wUUFhWFJsZUhSMWNtVkRkV0psQUdsMFpYaDBkWEpsTWtSQmNuSmhlUUIxZEdWNGRIVnlaVEpFQUhWMFpYaDBkWEpsTTBRQWRYUmxlSFIxY21WRGRXSmxBSFYwWlhoMGRYSmxNa1JCY25KaGVRQjBaWGgwZFhKbE0wUUFjMkZ0Y0d4bGNnQnpZVzF3YkdWeVUyaGhaRzkzQUhSbGVIUjFjbVZEZFdKbFFYSnlZWGtBYVhSbGVIUjFjbVZEZFdKbFFYSnlZWGtBZFhSbGVIUjFjbVZEZFdKbFFYSnlZWGtBYzJGdGNHeGxja04xWW1WQmNuSmhlUUJ6WVcxd2JHVnlRM1ZpWlVGeWNtRjVVMmhoWkc5M0FHbHpZVzF3YkdWeVEzVmlaVUZ5Y21GNUFIVnpZVzF3YkdWeVEzVmlaVUZ5Y21GNUFITmhiWEJzWlhJeFJFRnljbUY1VTJoaFpHOTNBR2x6WVcxd2JHVnlNVVJCY25KaGVRQjFjMkZ0Y0d4bGNqRkVBR2x6WVcxd2JHVnlNVVFBZFhOaGJYQnNaWEl4UkVGeWNtRjVBSE5oYlhCc1pYSkNkV1ptWlhJQWFYTmhiWEJzWlhJeVJGSmxZM1FBZFhOaGJYQnNaWEl5UkZKbFkzUUFhWE5oYlhCc1pYSkNkV1ptWlhJQWRYTmhiWEJzWlhKQ2RXWm1aWElBYzJGdGNHeGxjakpFVFZNQWFYTmhiWEJzWlhJeVJFMVRBSFZ6WVcxd2JHVnlNa1JOVXdCellXMXdiR1Z5TWtSTlUwRnljbUY1QUdsellXMXdiR1Z5TWtSTlUwRnljbUY1QUhWellXMXdiR1Z5TWtSTlUwRnljbUY1QUhOaGJYQnNaWEl4UkFCellXMXdiR1Z5TVVSVGFHRmtiM2NBYzJGdGNHeGxjakpFVW1WamRBQnpZVzF3YkdWeU1rUlNaV04wVTJoaFpHOTNBSE5oYlhCc1pYSXhSRUZ5Y21GNUFITmhiWEJzWlhKRmVIUmxjbTVoYkU5RlV3QmZYM05oYlhCc1pYSkZlSFJsY201aGJESkVXVEpaUlZoVUFHbDBaWGgwZFhKbE1VUkJjbkpoZVFCMWRHVjRkSFZ5WlRGRUFHbDBaWGgwZFhKbE1VUUFkWFJsZUhSMWNtVXhSRUZ5Y21GNUFIUmxlSFIxY21WQ2RXWm1aWElBYVhSbGVIUjFjbVV5UkZKbFkzUUFkWFJsZUhSMWNtVXlSRkpsWTNRQWFYUmxlSFIxY21WQ2RXWm1aWElBZFhSbGVIUjFjbVZDZFdabVpYSUFkR1Y0ZEhWeVpUSkVUVk1BYVhSbGVIUjFjbVV5UkUxVEFIVjBaWGgwZFhKbE1rUk5Vd0IwWlhoMGRYSmxNa1JOVTBGeWNtRjVBR2wwWlhoMGRYSmxNa1JOVTBGeWNtRjVBSFYwWlhoMGRYSmxNa1JOVTBGeWNtRjVBSFJsZUhSMWNtVXhSQUIwWlhoMGRYSmxNa1JTWldOMEFIUmxlSFIxY21VeFJFRnljbUY1QUhOMVluQmhjM05KYm5CMWRBQnpkV0p3WVhOelNXNXdkWFJOVXdCcGMzVmljR0Z6YzBsdWNIVjBBR2x6ZFdKd1lYTnpTVzV3ZFhSTlV3QjFjM1ZpY0dGemMwbHVjSFYwQUhWemRXSndZWE56U1c1d2RYUk5Vd0JtTVRaellXMXdiR1Z5TVVRQVpqRTJjMkZ0Y0d4bGNqSkVBR1l4Tm5OaGJYQnNaWEl6UkFCbU1UWnpZVzF3YkdWeU1rUlNaV04wQUdZeE5uTmhiWEJzWlhKRGRXSmxBR1l4Tm5OaGJYQnNaWEl4UkVGeWNtRjVBR1l4Tm5OaGJYQnNaWEl5UkVGeWNtRjVBR1l4Tm5OaGJYQnNaWEpEZFdKbFFYSnlZWGtBWmpFMmMyRnRjR3hsY2tKMVptWmxjZ0JtTVRaellXMXdiR1Z5TWtSTlV3Qm1NVFp6WVcxd2JHVnlNa1JOVTBGeWNtRjVBR1l4Tm5OaGJYQnNaWEl4UkZOb1lXUnZkd0JtTVRaellXMXdiR1Z5TWtSVGFHRmtiM2NBWmpFMmMyRnRjR3hsY2pKRVVtVmpkRk5vWVdSdmR3Qm1NVFp6WVcxd2JHVnlRM1ZpWlZOb1lXUnZkd0JtTVRaellXMXdiR1Z5TVVSQmNuSmhlVk5vWVdSdmR3Qm1NVFp6WVcxd2JHVnlNa1JCY25KaGVWTm9ZV1J2ZHdCbU1UWnpZVzF3YkdWeVEzVmlaVUZ5Y21GNVUyaGhaRzkzQUdZeE5tbHRZV2RsTVVRQVpqRTJhVzFoWjJVeVJBQm1NVFpwYldGblpUTkVBR1l4Tm1sdFlXZGxNa1JTWldOMEFHWXhObWx0WVdkbFEzVmlaUUJtTVRacGJXRm5aVEZFUVhKeVlYa0FaakUyYVcxaFoyVXlSRUZ5Y21GNUFHWXhObWx0WVdkbFEzVmlaVUZ5Y21GNUFHWXhObWx0WVdkbFFuVm1abVZ5QUdZeE5tbHRZV2RsTWtSTlV3Qm1NVFpwYldGblpUSkVUVk5CY25KaGVRQm1NVFowWlhoMGRYSmxNVVFBWmpFMmRHVjRkSFZ5WlRKRUFHWXhOblJsZUhSMWNtVXpSQUJtTVRaMFpYaDBkWEpsTWtSU1pXTjBBR1l4Tm5SbGVIUjFjbVZEZFdKbEFHWXhOblJsZUhSMWNtVXhSRUZ5Y21GNUFHWXhOblJsZUhSMWNtVXlSRUZ5Y21GNUFHWXhOblJsZUhSMWNtVkRkV0psUVhKeVlYa0FaakUyZEdWNGRIVnlaVUoxWm1abGNnQm1NVFowWlhoMGRYSmxNa1JOVXdCbU1UWjBaWGgwZFhKbE1rUk5VMEZ5Y21GNUFHWXhObk4xWW5CaGMzTkpibkIxZEFCbU1UWnpkV0p3WVhOelNXNXdkWFJOVXdCZlgyVjRjR3hwWTJsMFNXNTBaWEp3UVUxRUFIQmxjblpsY25SbGVFNVdBSEJ5WldOcGMyVUFjbUY1VUdGNWJHOWhaRTVXQUhKaGVWQmhlV3h2WVdSSmJrNVdBR2hwZEVGMGRISnBZblYwWlU1V0FHTmhiR3hoWW14bFJHRjBZVTVXQUdOaGJHeGhZbXhsUkdGMFlVbHVUbFlBWVdOalpXeGxjbUYwYVc5dVUzUnlkV04wZFhKbFRsWUFjR1Z5Y0hKcGJXbDBhWFpsVGxZQWNHVnlkbWxsZDA1V0FIUmhjMnRPVmdCbVkyOXZjRzFoZEU1V0FHbGpiMjl3YldGMFRsWUFkV052YjNCdFlYUk9WZ0JqYjIxdGIyNEFjR0Z5ZEdsMGFXOXVBR0ZqZEdsMlpRQmhjMjBBWTJ4aGMzTUFkVzVwYjI0QVpXNTFiUUIwZVhCbFpHVm1BSFJsYlhCc1lYUmxBSFJvYVhNQVoyOTBid0JwYm14cGJtVUFibTlwYm14cGJtVUFjSFZpYkdsakFITjBZWFJwWXdCbGVIUmxjbTRBWlhoMFpYSnVZV3dBYVc1MFpYSm1ZV05sQUd4dmJtY0FjMmh2Y25RQWFHRnNaZ0JtYVhobFpBQjFibk5wWjI1bFpBQnBibkIxZEFCdmRYUndkWFFBYUhabFl6SUFhSFpsWXpNQWFIWmxZelFBWm5abFl6SUFablpsWXpNQVpuWmxZelFBYzJGdGNHeGxjak5FVW1WamRBQm1hV3gwWlhJQWMybDZaVzltQUdOaGMzUUFibUZ0WlhOd1lXTmxBSFZ6YVc1bkFHbHNiR1ZuWVd3Z2RYTmxJRzltSUdWelkyRndaU0JqYUdGeVlXTjBaWElBWEFBQWJtOTBJSE4xY0hCdmNuUmxaQUE2T2dCMWJtVjRjR1ZqZEdWa0lIUnZhMlZ1QUVkTVgwNVdYM05vWVdSbGNsOXViM0JsY25Od1pXTjBhWFpsWDJsdWRHVnljRzlzWVhScGIyNEFSMHhmUlZoVVgyNXZiblZ1YVdadmNtMWZjWFZoYkdsbWFXVnlBRWRNWDA1V1gzSmhlVjkwY21GamFXNW5BRWRNWDBGU1FsOXphR0ZrWlhKZllYUnZiV2xqWDJOdmRXNTBaWEp6QUVkTVgwRlNRbDl6YUdGa1pYSmZhVzFoWjJWZmJHOWhaRjl6ZEc5eVpRQVhaUUlBTW1VQ0FFZE1YMEZTUWw5MFpYTnpaV3hzWVhScGIyNWZjMmhoWkdWeUFBQk5aUUlBUjB4ZlFWSkNYM05vWVdScGJtZGZiR0Z1WjNWaFoyVmZOREl3Y0dGamF3QkhURjlCVWtKZlpYaHdiR2xqYVhSZllYUjBjbWxpWDJ4dlkyRjBhVzl1QUFBQUFBRDBYd0lBRkdBQ0FIVmxBZ0NMWlFJQW9XVUNBTDlsQWdCSFRGOUJVa0pmWjNCMVgzTm9ZV1JsY2w5bWNEWTBBRWRNWDBGU1FsOW5jSFZmYzJoaFpHVnlYMmx1ZERZMEFFZE1YMFZZVkY5emFHRmtaWEpmWlhod2JHbGphWFJmWVhKcGRHaHRaWFJwWTE5MGVYQmxjd0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZmFXNTBOalFBUjB4ZlJWaFVYM05vWVdSbGNsODRZbWwwWDNOMGIzSmhaMlVBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgybHVkRGdBUjB4ZlFVMUVYMmR3ZFY5emFHRmtaWEpmYVc1ME1UWUFSMHhmUlZoVVgzTm9ZV1JsY2w4eE5tSnBkRjl6ZEc5eVlXZGxBRWRNWDBWWVZGOXphR0ZrWlhKZlpYaHdiR2xqYVhSZllYSnBkR2h0WlhScFkxOTBlWEJsYzE5cGJuUXhOZ0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZmFXNTBNeklBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgyWnNiMkYwTXpJQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMlpzYjJGME5qUUFSMHhmUVUxRVgyZHdkVjl6YUdGa1pYSmZhR0ZzWmw5bWJHOWhkQUJIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZlpteHZZWFF4TmdCSFRGOUJVa0pmZEdWNGRIVnlaVjlqZFdKbFgyMWhjRjloY25KaGVRQkhURjlQUlZOZmRHVjRkSFZ5WlY4elJBQkhURjlGV0ZSZmMyaGhaRzkzWDNOaGJYQnNaWEp6QUFBQUFOMWxBZ0Q0WlFJQVIweGZRVkpDWDNSbGVIUjFjbVZmY21WamRHRnVaMnhsQUFBQUFLeGlBZ0IwWlhoMGRYSmxMWEpsWTNSaGJtZHNaU0J6WVcxd2JHVnlJR3RsZVhkdmNtUUFSMHhmVDBWVFgwVkhURjlwYldGblpWOWxlSFJsY201aGJBQkhURjlQUlZOZlJVZE1YMmx0WVdkbFgyVjRkR1Z5Ym1Gc1gyVnpjMnd6QUVkTVgwVllWRjlaVlZaZmRHRnlaMlYwQUVkTVgwRk5SRjluY0hWZmMyaGhaR1Z5WDJoaGJHWmZabXh2WVhSZlptVjBZMmdBUjB4ZlFVMUVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOTJaWEowWlhoZmNHRnlZVzFsZEdWeUFFZE1YMDVXWDJaeVlXZHRaVzUwWDNOb1lXUmxjbDlpWVhKNVkyVnVkSEpwWXdBQUpHWUNBRGRtQWdCSFRGOU9WbDl0WlhOb1gzTm9ZV1JsY2dCSFRGOU9WbDlqYjI5d1pYSmhkR2wyWlY5dFlYUnlhWGdBUjB4ZlRsWmZhVzUwWldkbGNsOWpiMjl3WlhKaGRHbDJaVjl0WVhSeWFYZ0FSMHhmUlZoVVgyUmxiVzkwWlY5MGIxOW9aV3h3WlhKZmFXNTJiMk5oZEdsdmJnQlZibXR1YjNkdUlHZHNjMnhoYm1jZ2EyVjVkMjl5WkFCU1pYTmxjblpsWkNCM2IzSmtMZ0IxYzJsdVp5Qm1kWFIxY21VZ2NtVnpaWEoyWldRZ2EyVjVkMjl5WkFCbWRYUjFjbVVnY21WelpYSjJaV1FnZDI5eVpDQnBiaUJGVXlBek1EQWdZVzVrSUd0bGVYZHZjbVFnYVc0Z1IweFRUQUIxYzJsdVp5Qm1kWFIxY21VZ2EyVjVkMjl5WkFCMWMybHVaeUJGVXlCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeUlHdGxlWGR2Y21RQWRYTnBibWNnWm5WMGRYSmxJRzV2YmkxemNYVmhjbVVnYldGMGNtbDRJSFI1Y0dVZ2EyVjVkMjl5WkFCMWMybHVaeUJtZFhSMWNtVWdkSGx3WlNCclpYbDNiM0prQUVkTVgwVllWRjkwWlhOelpXeHNZWFJwYjI1ZmMyaGhaR1Z5QUVkTVgwOUZVMTkwWlhOelpXeHNZWFJwYjI1ZmMyaGhaR1Z5QUVkTVgwOUZVMTl6YUdGa1pYSmZiWFZzZEdsellXMXdiR1ZmYVc1MFpYSndiMnhoZEdsdmJnQkhURjlGV0ZSZmRHVjRkSFZ5WlY5aWRXWm1aWElBUjB4ZlQwVlRYM1JsZUhSMWNtVmZZblZtWm1WeUFFZE1YMFZZVkY5MFpYaDBkWEpsWDJOMVltVmZiV0Z3WDJGeWNtRjVBRWRNWDA5RlUxOTBaWGgwZFhKbFgyTjFZbVZmYldGd1gyRnljbUY1QUVkTVgwRlNRbDkwWlhoMGRYSmxYMjExYkhScGMyRnRjR3hsQUVkTVgwOUZVMTkwWlhoMGRYSmxYM04wYjNKaFoyVmZiWFZzZEdsellXMXdiR1ZmTW1SZllYSnlZWGtBUjB4ZlJWaFVYMmR3ZFY5emFHRmtaWEkxQUVkTVgwOUZVMTluY0hWZmMyaGhaR1Z5TlFBS0FEb2xaQUE2SUFBaUFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBQUNjQUp5QTZJQUFnQUFvQUlHd3RkbUZzZFdVZ2NtVnhkV2x5WldRQUFHTmhiaWQwSUcxdlpHbG1lU0JoSUdOdmJuTjBBR05oYmlkMElHMXZaR2xtZVNCaElIVnVhV1p2Y20wQVkyRnVKM1FnYlc5a2FXWjVJR0VnY21WaFpHOXViSGtnWW5WbVptVnlBR05oYmlkMElHMXZaR2xtZVNCaElITm9ZV1JsY25KbFkyOXlaRzUySUhGMVlXeHBabWxsWkNCaWRXWm1aWElBWTJGdWJtOTBJRzF2WkdsbWVTQm9hWFJCZEhSeWFXSjFkR1ZPVmlCcGJpQjBhR2x6SUhOMFlXZGxBR05oYmlkMElHMXZaR2xtZVNCaElITmhiWEJzWlhJQVkyRnVKM1FnYlc5a2FXWjVJSFp2YVdRQVkyRnVKM1FnYlc5a2FXWjVJR0Z1SUdGMGIyMXBZMTkxYVc1MEFHTmhiaWQwSUcxdlpHbG1lU0JoWTJObGJHVnlZWFJwYjI1VGRISjFZM1IxY21WT1ZnQWlKWE1pSUNnbGN5a0FLQ1Z6S1FCallXNG5kQ0J5WldGa0lHWnliMjBnZDNKcGRHVnZibXg1SUc5aWFtVmpkRG9nQUZzQWFXNWtaWGdnYjNWMElHOW1JSEpoYm1kbElDY2xaQ2NBWVhKeVlYa2dhVzVrWlhnZ2IzVjBJRzltSUhKaGJtZGxJQ2NsWkNjQWRtVmpkRzl5SUdsdVpHVjRJRzkxZENCdlppQnlZVzVuWlNBbkpXUW5BRzFoZEhKcGVDQnBibVJsZUNCdmRYUWdiMllnY21GdVoyVWdKeVZrSndCMlpXTjBiM0lnYzNkcGVucHNaU0IwYjI4Z2JHOXVad0FBQkFBQUFIVnVhMjV2ZDI0Z2MzZHBlbnBzWlNCelpXeGxZM1JwYjI0QWRtVmpkRzl5SUhOM2FYcDZiR1VnYzJWc1pXTjBhVzl1SUc5MWRDQnZaaUJ5WVc1blpRQjJaV04wYjNJZ2MzZHBlbnBzWlNCelpXeGxZM1J2Y25NZ2JtOTBJR1p5YjIwZ2RHaGxJSE5oYldVZ2MyVjBBRUdFMGdrTGxRS2VBQUFBbndBQUFLQUFBQUNoQUFBQW9nQUFBS01BQUFDa0FBQUFwUUFBQUtZQUFBQ25BQUFBcUFBQUFLa0FBQUNxQUFBQXF3QUFBS3dBQUFDdEFBQUFyZ0FBQUs4QUFBQ3dBQUFBc1FBQUFMSUFBQUN6QUFBQXRBQUFBTFVBQUFDMkFBQUF0d0FBQUxnQUFBQzVBQUFBdWdBQUFMc0FBQUM4QUFBQXZRQUFBTDRBQUFDL0FBQUF3QUFBQU1FQUFBRENBQUFBd3dBQUFNUUFBQURGQUFBQXhnQUFBTWNBQUFESUFBQUF5UUFBQUFZQUFBREtBQUFBeXdBQUFNd0FBQUROQUFBQXpnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBendBQUFOQUFBQURSQUFBQTBnQUFBTk1BQUFEVUFBQUExUUFBQU5ZQUFBRFhBQUFBMkFBQUFOa0FBQURhQUFBQTJ3QUFBTndBQUFEZEFFR2sxQWtMbkRQbEFBQUE1Z0FBQUtBQUFBQ2hBQUFBb2dBQUFLTUFBQUNrQUFBQXBRQUFBS1lBQUFDbkFBQUFxQUFBQUtrQUFBQ3FBQUFBcXdBQUFLd0FBQUN0QUFBQXJnQUFBSzhBQUFDd0FBQUFzUUFBQUxJQUFBQ3pBQUFBdEFBQUFMVUFBQUMyQUFBQXR3QUFBTGdBQUFDNUFBQUF1Z0FBQUxzQUFBQzhBQUFBdlFBQUFMNEFBQUMvQUFBQXdBQUFBTUVBQUFEQ0FBQUF3d0FBQU1RQUFBREZBQUFBeGdBQUFNY0FBQURJQUFBQXlRQUFBT2NBQUFES0FBQUF5d0FBQU13QUFBRE5BQUFBemdBQUFPZ0FBQURwQUFBQTZnQUFBT3NBQUFEc0FBQUF6d0FBQU5BQUFBRFJBQUFBMGdBQUFPMEFBQUR1QUFBQTFRQUFBTllBQUFEWEFBQUEyQUFBQU5rQUFBRGFBQUFBN3dBQUFOd0FBQUR3QUFBQWJXRnBiZ0JUYjNWeVkyVWdaVzUwY25rZ2NHOXBiblFnYlhWemRDQmlaU0FpYldGcGJpSUFBR052YlhCcGJHRjBhVzl1SUhSbGNtMXBibUYwWldRQWIzQjBhVzFwZW1VQWIzQjBhVzFwZW1VZ2NISmhaMjFoSUhONWJuUmhlQ0JwY3lCcGJtTnZjbkpsWTNRQUkzQnlZV2R0WVFBb0FDSW9JaUJsZUhCbFkzUmxaQ0JoWm5SbGNpQW5iM0IwYVcxcGVtVW5JR3RsZVhkdmNtUUFiMjRBYjJabUFDSnZiaUlnYjNJZ0ltOW1aaUlnWlhod1pXTjBaV1FnWVdaMFpYSWdKeWduSUdadmNpQW5iM0IwYVcxcGVtVW5JSEJ5WVdkdFlRQXBBQ0lwSWlCbGVIQmxZM1JsWkNCMGJ5QmxibVFnSjI5d2RHbHRhWHBsSnlCd2NtRm5iV0VBWkdWaWRXY0FaR1ZpZFdjZ2NISmhaMjFoSUhONWJuUmhlQ0JwY3lCcGJtTnZjbkpsWTNRQUlpZ2lJR1Y0Y0dWamRHVmtJR0ZtZEdWeUlDZGtaV0oxWnljZ2EyVjVkMjl5WkFBaWIyNGlJRzl5SUNKdlptWWlJR1Y0Y0dWamRHVmtJR0ZtZEdWeUlDY29KeUJtYjNJZ0oyUmxZblZuSnlCd2NtRm5iV0VBSWlraUlHVjRjR1ZqZEdWa0lIUnZJR1Z1WkNBblpHVmlkV2NuSUhCeVlXZHRZUUIxYzJWZmMzUnZjbUZuWlY5aWRXWm1aWElBWlhoMGNtRWdkRzlyWlc1ekFIVnpaVjkyZFd4cllXNWZiV1Z0YjNKNVgyMXZaR1ZzQUhWelpWOTJZWEpwWVdKc1pWOXdiMmx1ZEdWeWN3QnlaWEYxYVhKbGN5QlRVRWxTTFZZZ01TNHpBQ053Y21GbmJXRWdkWE5sWDNaaGNtbGhZbXhsWDNCdmFXNTBaWEp6QUc5dVkyVUFibTkwSUdsdGNHeGxiV1Z1ZEdWa0FDTndjbUZuYldFZ2IyNWpaUUJuYkhOc1lXNW5YMkpwYm1GeWVWOWtiM1ZpYkdWZmIzVjBjSFYwQUcxbGJXSmxjaUJ2WmlCdVlXMWxiR1Z6Y3lCaWJHOWpheUIzWVhNZ2JtOTBJSEpsWkdWamJHRnlaV1FBWTJGdWJtOTBJR0psSUhWelpXUWdLRzFoZVdKbElHRnVJR2x1YzNSaGJtTmxJRzVoYldVZ2FYTWdibVZsWkdWa0tRQjJZWEpwWVdKc1pTQnVZVzFsSUdWNGNHVmpkR1ZrQUNCc1pXWjBJRzltSUNkYkp5QnBjeUJ1YjNRZ2IyWWdkSGx3WlNCaGNuSmhlU3dnYldGMGNtbDRMQ0J2Y2lCMlpXTjBiM0lnQUdWNGNISmxjM05wYjI0QVd3QmtiMlZ6SUc1dmRDQnZjR1Z5WVhSbElHOXVJSFI1Y0dWeklHTnZiblJoYVc1cGJtY2dabXh2WVhReE5nQmtiMlZ6SUc1dmRDQnZjR1Z5WVhSbElHOXVJSFI1Y0dWeklHTnZiblJoYVc1cGJtY2dLSFVwYVc1ME1UWUFaRzlsY3lCdWIzUWdiM0JsY21GMFpTQnZiaUIwZVhCbGN5QmpiMjUwWVdsdWFXNW5JQ2gxS1dsdWREZ0FBQUExM1FJQVluVm1abVZ5SUhKbFptVnlaVzVqWlNCcGJtUmxlR2x1WndCaGNuSmhlU0J0ZFhOMElHSmxJSE5wZW1Wa0lHSjVJR0VnY21Wa1pXTnNZWEpoZEdsdmJpQnZjaUJzWVhsdmRYUWdjWFZoYkdsbWFXVnlJR0psWm05eVpTQmlaV2x1WnlCcGJtUmxlR1ZrSUhkcGRHZ2dZU0IyWVhKcFlXSnNaUUIyWVhKcFlXSnNaU0JwYm1SbGVHbHVaeUJpZFdabVpYSWdZbXh2WTJzZ1lYSnlZWGtBQUU3ZEFnQmgzUUlBZG1GeWFXRmliR1VnYVc1a1pYaHBibWNnZFc1cFptOXliU0JpYkc5amF5QmhjbkpoZVFCMllYSnBZV0pzWlNCcGJtUmxlR2x1WnlCbWNtRm5iV1Z1ZENCemFHRmtaWElnYjNWMGNIVjBJR0Z5Y21GNUFIWmhjbWxoWW14bElHbHVaR1Y0YVc1bklITmhiWEJzWlhJZ1lYSnlZWGtBZEdWemMyVnNiR0YwYVc5dUlHbHVjSFYwSUdGeWNtRjVJSE5wZW1VZ2JYVnpkQ0JpWlNCbmJGOU5ZWGhRWVhSamFGWmxjblJwWTJWeklHOXlJR2x0Y0d4cFkybDBiSGtnYzJsNlpXUUFXMTBBZEhsd1pTQnRkWE4wSUdKbElHRnVJR0Z5Y21GNU9nQjFibXR1YjNkdUFIWmxjblJwWTJWekFHMWhlRjl3Y21sdGFYUnBkbVZ6S2dCdFlYaGZjSEpwYldsMGFYWmxjd0J0WVhoZmRtVnlkR2xqWlhNQWFXNWpiMjV6YVhOMFpXNTBJR2x1Y0hWMElIQnlhVzFwZEdsMlpTQm1iM0lnWVhKeVlYa2djMmw2WlNCdlpnQnBibU52Ym5OcGMzUmxiblFnYjNWMGNIVjBJRzUxYldKbGNpQnZaaUIyWlhKMGFXTmxjeUJtYjNJZ1lYSnlZWGtnYzJsNlpTQnZaZ0FnWTJGdWJtOTBJR0psSUdkeVpXRjBaWElnZEdoaGJpQXpJR1p2Y2lCd1pYSjJaWEowWlhoT1ZnQnBibU52Ym5OcGMzUmxiblFnYjNWMGNIVjBJR0Z5Y21GNUlITnBlbVVnYjJZQWJHVnVaM1JvQUVkTVh6TkVURjloY25KaGVWOXZZbXBsWTNSekFDNXNaVzVuZEdnQUxteGxibWQwYUNncElHOXVJSFpsWTNSdmNuTWdZVzVrSUcxaGRISnBZMlZ6QUVkTVgwRlNRbDl6YUdGa2FXNW5YMnhoYm1kMVlXZGxYelF5TUhCaFkyc0FaRzlsY3lCdWIzUWdiM0JsY21GMFpTQnZiaUIwYUdseklIUjVjR1U2QUdOaGJtNXZkQ0JoY0hCc2VTQjBieUJoYmlCaGNuSmhlVG9BTGdCallXNXViM1FnWVhCd2JIa2dkRzhnWVNCamIyOXdaWEpoZEdsMlpTQnRZWFJ5YVhnZ2RIbHdaVG9BYzJOaGJHRnlJSE4zYVhwNmJHVUFZMkZ1SjNRZ2MzZHBlbnBzWlNCMGVYQmxjeUJqYjI1MFlXbHVhVzVuSUdac2IyRjBNVFlBWTJGdUozUWdjM2RwZW5wc1pTQjBlWEJsY3lCamIyNTBZV2x1YVc1bklDaDFLV2x1ZERFMkFHTmhiaWQwSUhOM2FYcDZiR1VnZEhsd1pYTWdZMjl1ZEdGcGJtbHVaeUFvZFNscGJuUTRBRzV2SUhOMVkyZ2dabWxsYkdRZ2FXNGdjM1J5ZFdOMGRYSmxBR1J2WlhNZ2JtOTBJR0Z3Y0d4NUlIUnZJSFJvYVhNZ2RIbHdaVG9BYkc5allXd2dablZ1WTNScGIyNGdaR1ZqYkdGeVlYUnBiMjRBY21Wa1pXWnBibWwwYVc5dUlHOW1JR0oxYVd4MExXbHVJR1oxYm1OMGFXOXVBRzExYkhScGNHeGxJSEJ5YjNSdmRIbHdaWE1nWm05eUlITmhiV1VnWm5WdVkzUnBiMjRBYjNabGNteHZZV1JsWkNCbWRXNWpkR2x2Ym5NZ2JYVnpkQ0JvWVhabElIUm9aU0J6WVcxbElISmxkSFZ5YmlCMGVYQmxBRzkyWlhKc2IyRmtaV1FnWm5WdVkzUnBiMjV6SUcxMWMzUWdhR0YyWlNCMGFHVWdjMkZ0WlNCd1lYSmhiV1YwWlhJZ2MzUnZjbUZuWlNCeGRXRnNhV1pwWlhKeklHWnZjaUJoY21kMWJXVnVkQUFsWkFCdmRtVnliRzloWkdWa0lHWjFibU4wYVc5dWN5QnRkWE4wSUdoaGRtVWdkR2hsSUhOaGJXVWdjR0Z5WVcxbGRHVnlJSEJ5WldOcGMybHZiaUJ4ZFdGc2FXWnBaWEp6SUdadmNpQmhjbWQxYldWdWRBQmhjbkpoZVNCcGJpQm1kVzVqZEdsdmJpQnlaWFIxY200Z2RIbHdaUUJtZFc1amRHbHZiaUJ1WVcxbElHbHpJSEpsWkdWamJHRnlZWFJwYjI0Z2IyWWdaWGhwYzNScGJtY2dibUZ0WlFCallXNG5kQ0JtYVc1a0lHWjFibU4wYVc5dUFHWjFibU4wYVc5dUlHRnNjbVZoWkhrZ2FHRnpJR0VnWW05a2VRQm1kVzVqZEdsdmJpQmpZVzV1YjNRZ2RHRnJaU0JoYm5rZ2NHRnlZVzFsZEdWeUtITXBBR1Z1ZEhKNUlIQnZhVzUwSUdOaGJtNXZkQ0J5WlhSMWNtNGdZU0IyWVd4MVpRQnlaV1JsWm1sdWFYUnBiMjRBWTJGdWJtOTBJR052Ym5OMGNuVmpkQ0IzYVhSb0lIUm9aWE5sSUdGeVozVnRaVzUwY3dCaWRXbHNkQzFwYmlCbWRXNWpkR2x2YmdCbWJHOWhkREUySUhSNWNHVnpJR05oYmlCdmJteDVJR0psSUdsdUlIVnVhV1p2Y20wZ1lteHZZMnNnYjNJZ1luVm1abVZ5SUhOMGIzSmhaMlVBS0hVcGFXNTBNVFlnZEhsd1pYTWdZMkZ1SUc5dWJIa2dZbVVnYVc0Z2RXNXBabTl5YlNCaWJHOWpheUJ2Y2lCaWRXWm1aWElnYzNSdmNtRm5aUUFvZFNscGJuUTRJSFI1Y0dWeklHTmhiaUJ2Ym14NUlHSmxJR2x1SUhWdWFXWnZjbTBnWW14dlkyc2diM0lnWW5WbVptVnlJSE4wYjNKaFoyVUFZWE56YVdkdUFFNXZiaTFNTFhaaGJIVmxJR05oYm01dmRDQmlaU0J3WVhOelpXUWdabTl5SUNkdmRYUW5JRzl5SUNkcGJtOTFkQ2NnY0dGeVlXMWxkR1Z5Y3k0QWIzVjBBR0Z5WjNWdFpXNTBJR05oYm01dmRDQmtjbTl3SUcxbGJXOXllU0J4ZFdGc2FXWnBaWElnZDJobGJpQndZWE56WldRZ2RHOGdabTl5YldGc0lIQmhjbUZ0WlhSbGNnQjJiMnhoZEdsc1pRQmpiMmhsY21WdWRBQmtaWFpwWTJWamIyaGxjbVZ1ZEFCeGRXVjFaV1poYldsc2VXTnZhR1Z5Wlc1MEFIZHZjbXRuY205MWNHTnZhR1Z5Wlc1MEFITjFZbWR5YjNWd1kyOW9aWEpsYm5RQWNtVmhaRzl1YkhrQWQzSnBkR1Z2Ym14NUFHbHRZV2RsSUdadmNtMWhkSE1nYlhWemRDQnRZWFJqYUFCbWIzSnRZWFFBWTJGc2JHbHVaeUIxYzJWeUlHWjFibU4wYVc5dUlHWnliMjBnWjJ4dlltRnNJSE5qYjNCbEFHMWhhVzRvQUNCM2NtOXVaeUJ2Y0dWeVlXNWtJSFI1Y0dVQVNXNTBaWEp1WVd3Z1JYSnliM0lBWW5WcGJIUWdhVzRnZFc1aGNua2diM0JsY21GMGIzSWdablZ1WTNScGIyNHVJQ0JVZVhCbE9pQWxjd0J5WlhSMWNtNEFkbTlwWkNCbWRXNWpkR2x2YmlCallXNXViM1FnY21WMGRYSnVJR0VnZG1Gc2RXVUFZMkZ1Ym05MElHTnZiblpsY25RZ2NtVjBkWEp1SUhaaGJIVmxJSFJ2SUdaMWJtTjBhVzl1SUhKbGRIVnliaUIwZVhCbEFIUjVjR1VnWTI5dWRtVnljMmx2YmlCdmJpQnlaWFIxY200Z2RtRnNkV1Z6SUhkaGN5QnViM1FnWlhod2JHbGphWFJzZVNCaGJHeHZkMlZrSUhWdWRHbHNJSFpsY25OcGIyNGdOREl3QUhSNWNHVWdaRzlsY3lCdWIzUWdiV0YwWTJnc0lHOXlJR2x6SUc1dmRDQmpiMjUyWlhKMGFXSnNaU0IwYnl3Z2RHaGxJR1oxYm1OMGFXOXVKM01nY21WMGRYSnVJSFI1Y0dVQWRHVnpjMlZzYkdGMGFXOXVJR052Ym5SeWIyd2dZbUZ5Y21sbGNpZ3BJR05oYm01dmRDQmlaU0J3YkdGalpXUWdkMmwwYUdsdUlHWnNiM2NnWTI5dWRISnZiQUIwWlhOelpXeHNZWFJwYjI0Z1kyOXVkSEp2YkNCaVlYSnlhV1Z5S0NrZ2JYVnpkQ0JpWlNCcGJpQnRZV2x1S0NrQWRHVnpjMlZzYkdGMGFXOXVJR052Ym5SeWIyd2dZbUZ5Y21sbGNpZ3BJR05oYm01dmRDQmlaU0J3YkdGalpXUWdZV1owWlhJZ1lTQnlaWFIxY200Z1puSnZiU0J0WVdsdUtDa0FZbVZuYVc1SmJuWnZZMkYwYVc5dVNXNTBaWEpzYjJOclFWSkNLQ2tnYlhWemRDQmlaU0JwYmlCaElHWnlZV2R0Wlc1MElITm9ZV1JsY2dCaVpXZHBia2x1ZG05allYUnBiMjVKYm5SbGNteHZZMnRCVWtJb0tTQnRkWE4wSUdKbElHbHVJRzFoYVc0b0tRQmlaV2RwYmtsdWRtOWpZWFJwYjI1SmJuUmxjbXh2WTJ0QlVrSW9LU0JqWVc1dWIzUWdZbVVnY0d4aFkyVmtJR0ZtZEdWeUlHRWdjbVYwZFhKdUlHWnliMjBnYldGcGJpZ3BBR0psWjJsdVNXNTJiMk5oZEdsdmJrbHVkR1Z5Ykc5amEwRlNRaWdwSUdOaGJtNXZkQ0JpWlNCd2JHRmpaV1FnZDJsMGFHbHVJR1pzYjNjZ1kyOXVkSEp2YkFCaVpXZHBia2x1ZG05allYUnBiMjVKYm5SbGNteHZZMnRCVWtJb0tTQnRkWE4wSUc5dWJIa2dZbVVnWTJGc2JHVmtJRzl1WTJVQVltVm5hVzVKYm5adlkyRjBhVzl1U1c1MFpYSnNiMk5yUVZKQ0tDa2diWFZ6ZENCaVpTQmpZV3hzWldRZ1ltVm1iM0psSUdWdVpFbHVkbTlqWVhScGIyNUpiblJsY214dlkydEJVa0lvS1FCbGJtUkpiblp2WTJGMGFXOXVTVzUwWlhKc2IyTnJRVkpDS0NrZ2JYVnpkQ0JpWlNCcGJpQmhJR1p5WVdkdFpXNTBJSE5vWVdSbGNnQmxibVJKYm5adlkyRjBhVzl1U1c1MFpYSnNiMk5yUVZKQ0tDa2diWFZ6ZENCaVpTQnBiaUJ0WVdsdUtDa0FaVzVrU1c1MmIyTmhkR2x2YmtsdWRHVnliRzlqYTBGU1FpZ3BJR05oYm01dmRDQmlaU0J3YkdGalpXUWdZV1owWlhJZ1lTQnlaWFIxY200Z1puSnZiU0J0WVdsdUtDa0FaVzVrU1c1MmIyTmhkR2x2YmtsdWRHVnliRzlqYTBGU1FpZ3BJR05oYm01dmRDQmlaU0J3YkdGalpXUWdkMmwwYUdsdUlHWnNiM2NnWTI5dWRISnZiQUJsYm1SSmJuWnZZMkYwYVc5dVNXNTBaWEpzYjJOclFWSkNLQ2tnYlhWemRDQnZibXg1SUdKbElHTmhiR3hsWkNCdmJtTmxBRzFsZEdodlpDQmtiMlZ6SUc1dmRDQmhZMk5sY0hRZ1lXNTVJR0Z5WjNWdFpXNTBjd0JuYkY5cGJnQm5iRjl2ZFhRQVoyeGZUV1Z6YUZabGNuUnBZMlZ6VGxZQVoyeGZUV1Z6YUZCeWFXMXBkR2wyWlhOT1ZnQmhjbkpoZVNCdGRYTjBJR1pwY25OMElHSmxJSE5wZW1Wa0lHSjVJR0VnY21Wa1pXTnNZWEpoZEdsdmJpQnZjaUJzWVhsdmRYUWdjWFZoYkdsbWFXVnlBR0Z5Y21GNUlHMTFjM1FnWW1VZ1pHVmpiR0Z5WldRZ2QybDBhQ0JoSUhOcGVtVWdZbVZtYjNKbElIVnphVzVuSUhSb2FYTWdiV1YwYUc5a0FDNXNaVzVuZEdnb0tRQjFibVY0Y0dWamRHVmtJSFZ6WlNCdlppQXViR1Z1WjNSb0tDa0FkR1Z0Y0ZKbGRIVnliZ0IwWlcxd1FYSm5BR2RzWDFObGJXRnVkR2xqYzBGamNYVnBjbVVnYlhWemRDQnViM1FnWW1VZ2RYTmxaQ0IzYVhSb0lDaHBiV0ZuWlNrZ1lYUnZiV2xqSUhOMGIzSmxBR2RzWDFObGJXRnVkR2xqYzFKbGJHVmhjMlVnYlhWemRDQnViM1FnWW1VZ2RYTmxaQ0IzYVhSb0lDaHBiV0ZuWlNrZ1lYUnZiV2xqSUd4dllXUUFaMnhmVTJWdFlXNTBhV056UVdOeGRXbHlaVkpsYkdWaGMyVWdiWFZ6ZENCdWIzUWdZbVVnZFhObFpDQjNhWFJvSUNocGJXRm5aU2tnWVhSdmJXbGpJR3h2WVdRdmMzUnZjbVVBU1c1MllXeHBaQ0J6WlcxaGJuUnBZM01nZG1Gc2RXVUFTVzUyWVd4cFpDQnpkRzl5WVdkbElHTnNZWE56SUhObGJXRnVkR2xqY3lCMllXeDFaUUJUWlcxaGJuUnBZM01nYlhWemRDQnBibU5zZFdSbElHVjRZV04wYkhrZ2IyNWxJRzltSUdkc1gxTmxiV0Z1ZEdsamMxSmxiR1ZoYzJVc0lHZHNYMU5sYldGdWRHbGpjMEZqY1hWcGNtVXNJRzl5SUdkc1gxTmxiV0Z1ZEdsamMwRmpjWFZwY21WU1pXeGxZWE5sQUZObGJXRnVkR2xqY3lCdGRYTjBJRzV2ZENCcGJtTnNkV1JsSUcxMWJIUnBjR3hsSUc5bUlHZHNYMU5sYldGdWRHbGpjMUpsYkdWaGMyVXNJR2RzWDFObGJXRnVkR2xqYzBGamNYVnBjbVVzSUc5eUlHZHNYMU5sYldGdWRHbGpjMEZqY1hWcGNtVlNaV3hsWVhObEFITmxiVlZ1WlhGMVlXd2diWFZ6ZENCdWIzUWdhVzVqYkhWa1pTQnRkV3gwYVhCc1pTQnZaaUJuYkY5VFpXMWhiblJwWTNOU1pXeGxZWE5sTENCbmJGOVRaVzFoYm5ScFkzTkJZM0YxYVhKbExDQnZjaUJuYkY5VFpXMWhiblJwWTNOQlkzRjFhWEpsVW1Wc1pXRnpaUUJUZEc5eVlXZGxJR05zWVhOeklITmxiV0Z1ZEdsamN5QnRkWE4wSUc1dmRDQmlaU0I2WlhKdkFITmxiVlZ1WlhGMVlXd2diWFZ6ZENCdWIzUWdZbVVnWjJ4ZlUyVnRZVzUwYVdOelVtVnNaV0Z6WlNCdmNpQm5iRjlUWlcxaGJuUnBZM05CWTNGMWFYSmxVbVZzWldGelpRQm5iRjlUWlcxaGJuUnBZM05OWVd0bFFYWmhhV3hoWW14bElISmxjWFZwY21WeklHZHNYMU5sYldGdWRHbGpjMUpsYkdWaGMyVWdiM0lnWjJ4ZlUyVnRZVzUwYVdOelFXTnhkV2x5WlZKbGJHVmhjMlVBWjJ4ZlUyVnRZVzUwYVdOelRXRnJaVlpwYzJsaWJHVWdjbVZ4ZFdseVpYTWdaMnhmVTJWdFlXNTBhV056UVdOeGRXbHlaU0J2Y2lCbmJGOVRaVzFoYm5ScFkzTkJZM0YxYVhKbFVtVnNaV0Z6WlFCbmJGOVRaVzFoYm5ScFkzTldiMnhoZEdsc1pTQnRkWE4wSUc1dmRDQmlaU0IxYzJWa0lIZHBkR2dnYldWdGIzSjVRbUZ5Y21sbGNpQnZjaUJqYjI1MGNtOXNRbUZ5Y21sbGNnQnpaVzFGY1hWaGJDQmhibVFnYzJWdFZXNWxjWFZoYkNCdGRYTjBJR1ZwZEdobGNpQmliM1JvSUdsdVkyeDFaR1VnWjJ4ZlUyVnRZVzUwYVdOelZtOXNZWFJwYkdVZ2IzSWdibVZwZEdobGNnQW9MaTR1S1FCSFRGOUJVa0pmWjNCMVgzTm9ZV1JsY2pVQVIweGZRVkpDWDNSbGVIUjFjbVZmWjJGMGFHVnlBRzV2YmkxamIyNXpkR0Z1ZENCdlptWnpaWFFnWVhKbmRXMWxiblFBYlhWemRDQmlaU0JoSUdOdmJYQnBiR1V0ZEdsdFpTQmpiMjV6ZEdGdWREb0FiMlptYzJWMGN5QmhjbWQxYldWdWRBQnRkWE4wSUdKbElEQXNJREVzSURJc0lHOXlJRE02QUdOdmJYQnZibVZ1ZENCaGNtZDFiV1Z1ZEFCM2FYUm9JR0pwWVhNZ1lYSm5kVzFsYm5RQUFBRGQzUUlBL04wQ0FHRnlaM1Z0Wlc1MElHMTFjM1FnWW1VZ1kyOXRjR2xzWlMxMGFXMWxJR052Ym5OMFlXNTBBRzltWm5ObGRBQmpiMjF3YjI1bGJuUnpJRzExYzNRZ1ltVWdhVzRnZEdobElISmhibWRsSUZzd0xDQXpYUUJ0WVhOckFHTnZiWEJ2Ym1WdWRITWdiWFZ6ZENCaVpTQnBiaUIwYUdVZ2NtRnVaMlVnV3pBc0lETXhYUUIwWlhobGJDQnZabVp6WlhRQWRtRnNkV1VnYVhNZ2IzVjBJRzltSUhKaGJtZGxPZ0JiWjJ4ZlRXbHVVSEp2WjNKaGJWUmxlR1ZzVDJabWMyVjBMQ0JuYkY5TllYaFFjbTluY21GdFZHVjRaV3hQWm1aelpYUmRBSEJoZVd4dllXUWdiblZ0WW1WeUFHTmhiR3hoWW14bElHUmhkR0VnYm5WdFltVnlBRWRNWDBGU1FsOXphR0ZrWlhKZmRHVjRkSFZ5WlY5cGJXRm5aVjl6WVcxd2JHVnpBSFJsZUhSMWNtVlRZVzF3YkdWeklHRnVaQ0JwYldGblpWTmhiWEJzWlhNQWIyNXNlU0J6ZFhCd2IzSjBaV1FnYjI0Z2FXMWhaMlVnZDJsMGFDQm1iM0p0WVhRZ2NqTXlhU0J2Y2lCeU16SjFhUUJwYldGblpVRjBiMjFwWTBWNFkyaGhibWRsQUc5dWJIa2djM1Z3Y0c5eWRHVmtJRzl1SUdsdWRHVm5aWElnYVcxaFoyVnpBRzl1YkhrZ2MzVndjRzl5ZEdWa0lHOXVJR2x0WVdkbElIZHBkR2dnWm05eWJXRjBJSEl6TW1ZQUFCUGVBZ0JIVEY5T1ZsOXphR0ZrWlhKZllYUnZiV2xqWDJsdWREWTBBRWRNWDBWWVZGOXphR0ZrWlhKZllYUnZiV2xqWDJsdWREWTBBRUhJaHdvTDFiRUJqSU1DQUthREFnQm1hWEp6ZENCaGNtZDFiV1Z1ZENCdGRYTjBJR0psSUdGdUlHbHVkR1Z5Y0c5c1lXNTBMQ0J2Y2lCcGJuUmxjbkJ2YkdGdWRDMWhjbkpoZVNCbGJHVnRaVzUwQUdGeVozVnRaVzUwSUcxMWMzUWdZbVVnY1hWaGJHbG1hV1ZrSUdGeklGOWZaWGh3YkdsamFYUkpiblJsY25CQlRVUWdhVzRBYVc1MFpYSndiMnhoYm5RQWRtVnlkR1Y0SUdsdVpHVjRBRzExYzNRZ1ltVWdhVzRnZEdobElISmhibWRsSUZzd0xDQXlYUUJqYkhWemRHVnlJSE5wZW1VQVlYSm5kVzFsYm5RZ2JYVnpkQ0JpWlNCaGRDQnNaV0Z6ZENBeEFHRnlaM1Z0Wlc1MElHMTFjM1FnWW1VZ1lTQndiM2RsY2lCdlppQXlBR2xrQURIZUFnQnpkV0puY205MWNDQnZjQUJXM2dJQWdkNENBSzNlQWdEWjNnSUFkR1Y0ZEhWeVpRQjBaWGgwZFhKbFIyRjBhR1Z5QUhSbGVIUjFjbVZIWVhSb1pYSlBabVp6WlhRQWRHVjRkSFZ5WlVkaGRHaGxjazltWm5ObGRITUFUMlptYzJWMEFIUmxlSFIxY21WUFptWnpaWFFBZEdWNFpXeEdaWFJqYUU5bVpuTmxkQUIwWlhoMGRYSmxVSEp2YWs5bVpuTmxkQUIwWlhoMGRYSmxURzlrVDJabWMyVjBBSFJsZUhSMWNtVlFjbTlxVEc5a1QyWm1jMlYwQUhSbGVIUjFjbVZIY21Ga1QyWm1jMlYwQUhSbGVIUjFjbVZRY205cVIzSmhaRTltWm5ObGRBQjBaWGgwZFhKbFUyRnRjR3hsY3dCcGJXRm5aVk5oYlhCc1pYTUFhVzFoWjJWQmRHOXRhV01BWTJGc2JDQmhjbWQxYldWdWRBQnpZVzF3YkdWeUlHTnZibk4wY25WamRHOXlJRzExYzNRZ1lYQndaV0Z5SUdGMElIQnZhVzUwSUc5bUlIVnpaUUJoY25KaGVXVmtJR052Ym5OMGNuVmpkRzl5QUdOaGJtNXZkQ0JqYjI1emRISjFZM1FnZEdocGN5QjBlWEJsQUdGc2JDQmtaV1poZFd4MElIQnlaV05wYzJsdmJuTWdZWEpsSUdocFoyaHdPeUIxYzJVZ2NISmxZMmx6YVc5dUlITjBZWFJsYldWdWRITWdkRzhnY1hWcFpYUWdkMkZ5Ym1sdVp5d2daUzVuTGpvS0lDQWdJQ0FnSUNBZ0luQnlaV05wYzJsdmJpQnRaV1JwZFcxd0lHbHVkRHNnY0hKbFkybHphVzl1SUdocFoyaHdJR1pzYjJGME95SUFZMkZ1Ym05MElHTnZiblpsY25RZ1puSnZiU0FuSlhNbklIUnZJQ2NsY3ljQWJtOGdiM0JsY21GMGFXOXVJQ2NsY3ljZ1pYaHBjM1J6SUhSb1lYUWdkR0ZyWlhNZ1lXNGdiM0JsY21GdVpDQnZaaUIwZVhCbElDVnpJQ2h2Y2lCMGFHVnlaU0JwY3lCdWJ5QmhZMk5sY0hSaFlteGxJR052Ym5abGNuTnBiMjRwQUNCM2NtOXVaeUJ2Y0dWeVlXNWtJSFI1Y0dWek9nQnVieUJ2Y0dWeVlYUnBiMjRnSnlWekp5QmxlR2x6ZEhNZ2RHaGhkQ0IwWVd0bGN5QmhJR3hsWm5RdGFHRnVaQ0J2Y0dWeVlXNWtJRzltSUhSNWNHVWdKeVZ6SnlCaGJtUWdZU0J5YVdkb2RDQnZjR1Z5WVc1a0lHOW1JSFI1Y0dVZ0p5VnpKeUFvYjNJZ2RHaGxjbVVnYVhNZ2JtOGdZV05qWlhCMFlXSnNaU0JqYjI1MlpYSnphVzl1S1FCbmJGOVdaWEowWlhoSlJBQW9SR2xrSUhsdmRTQnRaV0Z1SUdkc1gxWmxjblJsZUVsdVpHVjRQeWtBWjJ4ZlNXNXpkR0Z1WTJWSlJBQW9SR2xrSUhsdmRTQnRaV0Z1SUdkc1gwbHVjM1JoYm1ObFNXNWtaWGcvS1FCMWJtUmxZMnhoY21Wa0lHbGtaVzUwYVdacFpYSUFaMnhmVUc5cGJuUkRiMjl5WkFCMFpYTnpaV3hzWVhScGIyNHRZMjl1ZEhKdmJDQndaWEl0ZG1WeWRHVjRJRzkxZEhCMWRDQnNMWFpoYkhWbElHMTFjM1FnWW1VZ2FXNWtaWGhsWkNCM2FYUm9JR2RzWDBsdWRtOWpZWFJwYjI1SlJBQWdiQzEyWVd4MVpTQnZaaUJ6ZDJsNmVteGxJR05oYm01dmRDQm9ZWFpsSUdSMWNHeHBZMkYwWlNCamIyMXdiMjVsYm5SekFDQnNMWFpoYkhWbElISmxjWFZwY21Wa0FHTmhiaWQwSUcxdlpHbG1lU0J6YUdGa1pYSWdhVzV3ZFhRQVkyRnVKM1FnYlc5a2FXWjVJR2RzWDBsdWMzUmhibU5sU1VRQVkyRnVKM1FnYlc5a2FXWjVJR2RzWDFabGNuUmxlRWxFQUdOaGJpZDBJRzF2WkdsbWVTQm5iRjlHY205dWRFWmhZMlVBWTJGdUozUWdiVzlrYVdaNUlHZHNYMFp5WVdkRGIyOXlaQUJqWVc0bmRDQnRiMlJwWm5rZ1oyeGZVRzlwYm5SRGIyOXlaQUJqWVc0bmRDQnRiMlJwWm5rZ1oyeGZSbkpoWjBSbGNIUm9JR2xtSUhWemFXNW5JR1ZoY214NVgyWnlZV2R0Wlc1MFgzUmxjM1J6QUNJbGN5SWdLQ1Z6S1FBb0pYTXBBR05oYmlkMElISmxZV1FnWm5KdmJTQmxlSEJzYVdOcGRHeDVMV2x1ZEdWeWNHOXNZWFJsWkNCdlltcGxZM1E2SUFCamIyNXpkR0Z1ZENCbGVIQnlaWE56YVc5dUlISmxjWFZwY21Wa0FITmpZV3hoY2lCcGJuUmxaMlZ5SUdWNGNISmxjM05wYjI0Z2NtVnhkV2x5WldRQWJtOTBJR0ZzYkc5M1pXUWdhVzRnYm1WemRHVmtJSE5qYjNCbEFHbGtaVzUwYVdacFpYSnpJSE4wWVhKMGFXNW5JSGRwZEdnZ0ltZHNYeUlnWVhKbElISmxjMlZ5ZG1Wa0FGOWZBR2xrWlc1MGFXWnBaWEp6SUdOdmJuUmhhVzVwYm1jZ1kyOXVjMlZqZFhScGRtVWdkVzVrWlhKelkyOXlaWE1nS0NKZlh5SXBJR0Z5WlNCeVpYTmxjblpsWkN3Z1lXNWtJR0Z1SUdWeWNtOXlJR2xtSUhabGNuTnBiMjRnUENBek1EQUFhV1JsYm5ScFptbGxjbk1nWTI5dWRHRnBibWx1WnlCamIyNXpaV04xZEdsMlpTQjFibVJsY25OamIzSmxjeUFvSWw5Zklpa2dZWEpsSUhKbGMyVnlkbVZrQUVkTVh3QnVZVzFsY3lCaVpXZHBibTVwYm1jZ2QybDBhQ0FpUjB4ZklpQmpZVzRuZENCaVpTQW9kVzRwWkdWbWFXNWxaRG9BWkdWbWFXNWxaQUFpWkdWbWFXNWxaQ0lnWTJGdUozUWdZbVVnS0hWdUtXUmxabWx1WldRNkFGOWZURWxPUlY5ZkFGOWZSa2xNUlY5ZkFGOWZWa1ZTVTBsUFRsOWZBSEJ5WldSbFptbHVaV1FnYm1GdFpYTWdZMkZ1SjNRZ1ltVWdLSFZ1S1dSbFptbHVaV1E2QUc1aGJXVnpJR052Ym5SaGFXNXBibWNnWTI5dWMyVmpkWFJwZG1VZ2RXNWtaWEp6WTI5eVpYTWdZWEpsSUhKbGMyVnlkbVZrTENCaGJtUWdZVzRnWlhKeWIzSWdhV1lnZG1WeWMybHZiaUE4SURNd01Eb0FibUZ0WlhNZ1kyOXVkR0ZwYm1sdVp5QmpiMjV6WldOMWRHbDJaU0IxYm1SbGNuTmpiM0psY3lCaGNtVWdjbVZ6WlhKMlpXUTZBR3hwYm1VZ1kyOXVkR2x1ZFdGMGFXOXVBSFZ6WldRZ1lYUWdaVzVrSUc5bUlHTnZiVzFsYm5RN0lIUm9aU0JtYjJ4c2IzZHBibWNnYkdsdVpTQnBjeUJ6ZEdsc2JDQndZWEowSUc5bUlIUm9aU0JqYjIxdFpXNTBBSFZ6WldRZ1lYUWdaVzVrSUc5bUlHTnZiVzFsYm5Rc0lHSjFkQ0IwYUdseklIWmxjbk5wYjI0Z1pHOWxjeUJ1YjNRZ2NISnZkbWxrWlNCc2FXNWxJR052Ym5ScGJuVmhkR2x2YmdCdWIzUWdZV3hzYjNkbFpDQnBiaUIwYUdseklIWmxjbk5wYjI0QVoyeGZBR0Z5Y21GNUlHRnlaM1Z0Wlc1MElHMTFjM1FnWW1VZ2MybDZaV1FBWTI5dWMzUnlkV04wYjNJQVkyRnVKM1FnWTI5dWMzUnlkV04wSUhOMGNuVmpkSFZ5WlNCamIyNTBZV2x1YVc1bklERTJMV0pwZENCMGVYQmxBR05oYmlkMElHTnZibk4wY25WamRDQnpkSEoxWTNSMWNtVWdZMjl1ZEdGcGJtbHVaeUE0TFdKcGRDQjBlWEJsQURFMkxXSnBkQ0JoY25KaGVYTWdibTkwSUhOMWNIQnZjblJsWkFBeE5pMWlhWFFnZG1WamRHOXljeUJ2Ym14NUlIUmhhMlVnZG1WamRHOXlJSFI1Y0dWekFEZ3RZbWwwSUdGeWNtRjVjeUJ1YjNRZ2MzVndjRzl5ZEdWa0FEZ3RZbWwwSUhabFkzUnZjbk1nYjI1c2VTQjBZV3RsSUhabFkzUnZjaUIwZVhCbGN3QmhjbkpoZVNCamIyNXpkSEoxWTNSdmNpQnRkWE4wSUdoaGRtVWdZWFFnYkdWaGMzUWdiMjVsSUdGeVozVnRaVzUwQUdGeWNtRjVJR052Ym5OMGNuVmpkRzl5SUc1bFpXUnpJRzl1WlNCaGNtZDFiV1Z1ZENCd1pYSWdZWEp5WVhrZ1pXeGxiV1Z1ZEFCaGNuSmhlU0JqYjI1emRISjFZM1J2Y2lCaGNtZDFiV1Z1ZENCdWIzUWdZMjl5Y21WamRDQjBlWEJsSUhSdklHTnZibk4wY25WamRDQmhjbkpoZVNCbGJHVnRaVzUwQUdOdmJuTjBjblZqZEdsdVp5QnViMjR0WVhKeVlYa2dZMjl1YzNScGRIVmxiblFnWm5KdmJTQmhjbkpoZVNCaGNtZDFiV1Z1ZEFCamIyNXpkSEoxWTNScGJtY2diV0YwY21sNElHWnliMjBnYldGMGNtbDRBRzFoZEhKcGVDQmpiMjV6ZEhKMVkzUmxaQ0JtY205dElHMWhkSEpwZUNCallXNGdiMjVzZVNCb1lYWmxJRzl1WlNCaGNtZDFiV1Z1ZEFCMGIyOGdiV0Z1ZVNCaGNtZDFiV1Z1ZEhNQVRuVnRZbVZ5SUc5bUlHTnZibk4wY25WamRHOXlJSEJoY21GdFpYUmxjbk1nWkc5bGN5QnViM1FnYldGMFkyZ2dkR2hsSUc1MWJXSmxjaUJ2WmlCemRISjFZM1IxY21VZ1ptbGxiR1J6QUc1dmRDQmxibTkxWjJnZ1pHRjBZU0J3Y205MmFXUmxaQ0JtYjNJZ1kyOXVjM1J5ZFdOMGFXOXVBSGR5YjI1bklHNTFiV0psY2lCdlppQmhjbWQxYldWdWRITUFRMjl2Y0dWeVlYUnBkbVVnYldGMGNtbDRJR052Ym5OMGNuVmpkRzl5SUdGeVozVnRaVzUwSUcxMWMzUWdZbVVnYzJOaGJHRnlJRzl5SUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUFCamIyNXpkSEoxWTNSdmNpQmhjbWQxYldWdWRDQmtiMlZ6SUc1dmRDQm9ZWFpsSUdFZ2RIbHdaUUJqWVc1dWIzUWdZMjl1ZG1WeWRDQmhJSE5oYlhCc1pYSUFZMkZ1Ym05MElHTnZiblpsY25RZ1lXNGdZWFJ2YldsalgzVnBiblFBWTJGdWJtOTBJR052Ym5abGNuUWdZU0IyYjJsa0FITmhiWEJzWlhJdFkyOXVjM1J5ZFdOMGIzSWdjbVZ4ZFdseVpYTWdkSGR2SUdGeVozVnRaVzUwY3dCellXMXdiR1Z5TFdOdmJuTjBjblZqZEc5eUlHTmhibTV2ZENCdFlXdGxJR0Z1SUdGeWNtRjVJRzltSUhOaGJYQnNaWEp6QUhOaGJYQnNaWEl0WTI5dWMzUnlkV04wYjNJZ1ptbHljM1FnWVhKbmRXMWxiblFnYlhWemRDQmlaU0JoSUhOallXeGhjaUIwWlhoMGRYSmxXRmhZSUhSNWNHVUFjMkZ0Y0d4bGNpMWpiMjV6ZEhKMVkzUnZjaUJtYVhKemRDQmhjbWQxYldWdWRDQnRkWE4wSUcxaGRHTm9JSFI1Y0dVZ1lXNWtJR1JwYldWdWMybHZibUZzYVhSNUlHOW1JR052Ym5OMGNuVmpkRzl5SUhSNWNHVUFjMkZ0Y0d4bGNpMWpiMjV6ZEhKMVkzUnZjaUJ6WldOdmJtUWdZWEpuZFcxbGJuUWdiWFZ6ZENCaVpTQmhJSE5qWVd4aGNpQjBlWEJsSUNkellXMXdiR1Z5SndCcGJHeGxaMkZzSUhWelpTQnZaaUIwZVhCbElDZDJiMmxrSndCaWIyOXNaV0Z1SUdWNGNISmxjM05wYjI0Z1pYaHdaV04wWldRQUFBZmZBZ0J6WVcxd2JHVnlSWGgwWlhKdVlXeFBSVk1BQUNIZkFnQkIzd0lBWDE5ellXMXdiR1Z5UlhoMFpYSnVZV3d5UkZreVdVVllWQUJ1YjI0dGRXNXBabTl5YlNCemRISjFZM1FnWTI5dWRHRnBibk1nWVNCellXMXdiR1Z5SUc5eUlHbHRZV2RsT2dCellXMXdiR1Z5TDJsdFlXZGxJSFI1Y0dWeklHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2FXNGdkVzVwWm05eWJTQjJZWEpwWVdKc1pYTWdiM0lnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5Y3pvQWJtOXVMWFZ1YVdadmNtMGdjM1J5ZFdOMElHTnZiblJoYVc1eklHRnVJR0YwYjIxcFkxOTFhVzUwT2dCaGRHOXRhV05mZFdsdWRITWdZMkZ1SUc5dWJIa2dZbVVnZFhObFpDQnBiaUIxYm1sbWIzSnRJSFpoY21saFlteGxjeUJ2Y2lCbWRXNWpkR2x2YmlCd1lYSmhiV1YwWlhKek9nQnViMjR0ZFc1cFptOXliU0J6ZEhKMVkzUWdZMjl1ZEdGcGJuTWdZVzRnWVdOalpXeGxjbUYwYVc5dVUzUnlkV04wZFhKbFRsWTZBR0ZqWTJWc1pYSmhkR2x2YmxOMGNuVmpkSFZ5WlU1V0lHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2FXNGdkVzVwWm05eWJTQjJZWEpwWVdKc1pYTWdiM0lnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5Y3pvQWJtOXVMVzl3WVhGMVpTQjFibWxtYjNKdGN5QnZkWFJ6YVdSbElHRWdZbXh2WTJzQWJtOXVMVzl3WVhGMVpTQjFibWxtYjNKdElIWmhjbWxoWW14bGN5QnVaV1ZrSUdFZ2JHRjViM1YwS0d4dlkyRjBhVzl1UFV3cEFHNXZkQ0JoYkd4dmQyVmtJRzl1SUdKc2IyTnJJRzl5SUhOMGNuVmpkSFZ5WlNCdFpXMWlaWEp6QUc1dmJuVnVhV1p2Y20xRldGUUFhVzRnWm05eUlITjBZV2RsSUdsdWNIVjBjd0J2ZFhRZ1ptOXlJSE4wWVdkbElHOTFkSEIxZEhNQVkyRnVibTkwSUhWelpTQW5hVzV2ZFhRbklHRjBJR2RzYjJKaGJDQnpZMjl3WlFCbWIzSWdibTl1TFhCaGNtRnRaWFJsY2l3Z1kyRnVJRzl1YkhrZ1lYQndiSGtnZEc4Z0oybHVKeUJ2Y2lCdWJ5QnpkRzl5WVdkbElIRjFZV3hwWm1sbGNnQnRaVzF2Y25rZ2NYVmhiR2xtYVdWeWN5QmpZVzV1YjNRZ1ltVWdkWE5sWkNCdmJpQjBhR2x6SUhSNWNHVUFZblZtWm1WeWN5QmpZVzRnWW1VZ1pHVmpiR0Z5WldRZ2IyNXNlU0JoY3lCaWJHOWphM01BWW5WbVptVnlBR05oYmlCdmJteDVJR0psSUdGd2NHeHBaV1FnZEc4Z1lTQnpkR0Z1WkdGc2IyNWxJQ2R2ZFhRbkFHSnNaVzVrSUdWeGRXRjBhVzl1QUdOaGJtNXZkQ0JpWlNCaWIyOXNBSE5vWVdSbGNpQnBibkIxZEM5dmRYUndkWFFBYlhWemRDQmlaU0J4ZFdGc2FXWnBaV1FnWVhNZ1pteGhkQUJqWVc1dWIzUWdkWE5sSUdsdWRHVnljRzlzWVhScGIyNGdjWFZoYkdsbWFXVnljeUIzYVhSb0lIQmhkR05vQUhCaGRHTm9BSFJoYzJ0T1ZpQjJZWEpwWVdKc1pYTWdZMkZ1SUdKbElHUmxZMnhoY21Wa0lHOXViSGtnWVhNZ1lteHZZMnR6QUhSaGMydE9WZ0JqWVc1dWIzUWdZbVVnWVNCemRISjFZM1IxY21VZ2IzSWdZWEp5WVhrQWRtVnlkR1Y0SUdsdWNIVjBJR0Z5Y21GNWN3QjJaWEowWlhndGMyaGhaR1Z5SUdCa2IzVmliR1ZnSUhSNWNHVWdhVzV3ZFhRQWRtVnlkR1Y0SUdsdWNIVjBJR05oYm01dmRDQmlaU0JtZFhKMGFHVnlJSEYxWVd4cFptbGxaQUJtY21GbmJXVnVkQzF6YUdGa1pYSWdjM1J5ZFdOMElHbHVjSFYwQUdaeVlXZHRaVzUwTFhOb1lXUmxjaUJ6ZEhKMVkzUWdhVzV3ZFhRZ1kyOXVkR0ZwYm1sdVp5QnpkSEoxWTNSMWNtVUFabkpoWjIxbGJuUXRjMmhoWkdWeUlITjBjblZqZENCcGJuQjFkQ0JqYjI1MFlXbHVhVzVuSUdGdUlHRnljbUY1QUdkc2IySmhiQ0J6ZEc5eVlXZGxJR2x1Y0hWMElIRjFZV3hwWm1sbGNpQmpZVzV1YjNRZ1ltVWdkWE5sWkNCcGJpQmhJR052YlhCMWRHVWdjMmhoWkdWeUFHbHVBR05oYmlCdmJteDVJSFZ6WlNCdmJpQnZkWFJ3ZFhRZ2FXNGdkR1Z6YzJWc2JHRjBhVzl1TFdOdmJuUnliMndnYzJoaFpHVnlBSFpsY25SbGVDMXphR0ZrWlhJZ2MzUnlkV04wSUc5MWRIQjFkQUIyWlhKMFpYZ3RjMmhoWkdWeUlITjBjblZqZENCdmRYUndkWFFnWTI5dWRHRnBibWx1WnlCemRISjFZM1IxY21VQWRtVnlkR1Y0TFhOb1lXUmxjaUJ6ZEhKMVkzUWdiM1YwY0hWMElHTnZiblJoYVc1cGJtY2dZVzRnWVhKeVlYa0FabkpoWjIxbGJuUWdjMmhoWkdWeUlHOTFkSEIxZEFCallXNXViM1FnWW1VZ1lTQnpkSEoxWTNSMWNtVUFZMkZ1Ym05MElHSmxJR0VnYldGMGNtbDRBR05oYmlkMElIVnpaU0JoZFhocGJHbGhjbmtnY1hWaGJHbG1hV1Z5SUc5dUlHRWdabkpoWjIxbGJuUWdiM1YwY0hWMEFHTmxiblJ5YjJsa0wzTmhiWEJzWlM5d1lYUmphQUJqWVc0bmRDQjFjMlVnYVc1MFpYSndiMnhoZEdsdmJpQnhkV0ZzYVdacFpYSWdiMjRnWVNCbWNtRm5iV1Z1ZENCdmRYUndkWFFBWm14aGRDOXpiVzl2ZEdndmJtOXdaWEp6Y0dWamRHbDJaUUJqWVc1dWIzUWdZMjl1ZEdGcGJpQmhJR1J2ZFdKc1pTd2dhVzUwTmpRc0lHOXlJSFZwYm5RMk5BQm5iRzlpWVd3Z2MzUnZjbUZuWlNCdmRYUndkWFFnY1hWaGJHbG1hV1Z5SUdOaGJtNXZkQ0JpWlNCMWMyVmtJR2x1SUdFZ1kyOXRjSFYwWlNCemFHRmtaWElBWTJGdUlHOXViSGtnZFhObElHOXVJR2x1Y0hWMElHbHVJSFJsYzNObGJHeGhkR2x2YmkxbGRtRnNkV0YwYVc5dUlITm9ZV1JsY2dCallXNGdiMjVzZVNCb1lYWmxJRzl1WlNCaGRYaHBiR2xoY25rZ2NYVmhiR2xtYVdWeUlDaGpaVzUwY205cFpDd2djR0YwWTJnc0lHRnVaQ0J6WVcxd2JHVXBBR05oYmlCdmJteDVJR2hoZG1VZ2IyNWxJR2x1ZEdWeWNHOXNZWFJwYjI0Z2NYVmhiR2xtYVdWeUlDaG1iR0YwTENCemJXOXZkR2dzSUc1dmNHVnljM0JsWTNScGRtVXNJRjlmWlhod2JHbGphWFJKYm5SbGNuQkJUVVFwQUhCeVpXTnBjMlVnY1hWaGJHbG1hV1Z5SUcxMWMzUWdZWEJ3WldGeUlHWnBjbk4wQUdsdWRtRnlhV0Z1ZENCeGRXRnNhV1pwWlhJZ2JYVnpkQ0JoY0hCbFlYSWdZbVZtYjNKbElHbHVkR1Z5Y0c5c1lYUnBiMjRzSUhOMGIzSmhaMlVzSUdGdVpDQndjbVZqYVhOcGIyNGdjWFZoYkdsbWFXVnljeUFBYVc1MFpYSndiMnhoZEdsdmJpQnhkV0ZzYVdacFpYSnpJRzExYzNRZ1lYQndaV0Z5SUdKbFptOXlaU0J6ZEc5eVlXZGxJR0Z1WkNCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeWN3QkJkWGhwYkdsaGNua2djWFZoYkdsbWFXVnljeUFvWTJWdWRISnZhV1FzSUhCaGRHTm9MQ0JoYm1RZ2MyRnRjR3hsS1NCdGRYTjBJR0Z3Y0dWaGNpQmlaV1p2Y21VZ2MzUnZjbUZuWlNCaGJtUWdjSEpsWTJsemFXOXVJSEYxWVd4cFptbGxjbk1BY0hKbFkybHphVzl1SUhGMVlXeHBabWxsY2lCdGRYTjBJR0Z3Y0dWaGNpQmhjeUJzWVhOMElIRjFZV3hwWm1sbGNnQnBiaTl2ZFhRZ2JYVnpkQ0JoY0hCbFlYSWdZbVZtYjNKbElHTnZibk4wQUhSdmJ5QnRZVzU1SUhOMGIzSmhaMlVnY1hWaGJHbG1hV1Z5Y3dCdmJteDVJRzl1WlNCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeUlHRnNiRzkzWldRQWIyNXNlU0J2Ym1VZ1kyOW9aWEpsYm5RdlpHVjJhV05sWTI5b1pYSmxiblF2Y1hWbGRXVm1ZVzFwYkhsamIyaGxjbVZ1ZEM5M2IzSnJaM0p2ZFhCamIyaGxjbVZ1ZEM5emRXSm5jbTkxY0dOdmFHVnlaVzUwSUhGMVlXeHBabWxsY2lCaGJHeHZkMlZrQUhKbGNHeHBZMkYwWldRZ2NYVmhiR2xtYVdWeWN3QmpZVzRnYjI1c2VTQmhjSEJzZVNCb2FXZG9jQ0IwYnlCaGRHOXRhV05mZFdsdWRBQndjbVZqYVhOcGIyNEFZMkZ1Ym05MElHRndjR3g1SUhCeVpXTnBjMmx2YmlCemRHRjBaVzFsYm5RZ2RHOGdkR2hwY3lCMGVYQmxPeUIxYzJVZ0oyWnNiMkYwSnl3Z0oybHVkQ2NnYjNJZ1lTQnpZVzF3YkdWeUlIUjVjR1VBWVhSdmJXbGpJR052ZFc1MFpYSnpJR05oYmlCdmJteDVJR0psSUdocFoyaHdBR0YwYjIxcFkxOTFhVzUwQUhSNWNHVWdjbVZ4ZFdseVpYTWdaR1ZqYkdGeVlYUnBiMjRnYjJZZ1pHVm1ZWFZzZENCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeUFITjFZbk4wYVhSMWRHbHVaeUFuYldWa2FYVnRjQ2NBZEhsd1pTQmpZVzV1YjNRZ2FHRjJaU0J3Y21WamFYTnBiMjRnY1hWaGJHbG1hV1Z5QUhOaGJYQnNaWEp6SUdGdVpDQmhkRzl0YVdOZmRXbHVkSE1nWTJGdWJtOTBJR0psSUc5MWRIQjFkQ0J3WVhKaGJXVjBaWEp6QUcxMWMzUWdZbVVnWVNCamIyNXpkR0Z1ZENCcGJuUmxaMlZ5SUdWNGNISmxjM05wYjI0QWJYVnpkQ0JpWlNCaElIQnZjMmwwYVhabElHbHVkR1ZuWlhJQVkyOXVjM1FnWVhKeVlYa0FkbVZ5ZEdWNExYTm9ZV1JsY2lCaGNuSmhlUzF2WmkxaGNuSmhlU0J2ZFhSd2RYUUFkbVZ5ZEdWNExYTm9ZV1JsY2lCaGNuSmhlUzF2WmkxemRISjFZM1FnYjNWMGNIVjBBR1p5WVdkdFpXNTBMWE5vWVdSbGNpQmhjbkpoZVMxdlppMWhjbkpoZVNCcGJuQjFkQUJtY21GbmJXVnVkQzF6YUdGa1pYSWdZWEp5WVhrdGIyWXRjM1J5ZFdOMElHbHVjSFYwQUdaeVlXZHRaVzUwTFhOb1lXUmxjaUJoY25KaGVTMXZaaTFoY25KaGVTQnZkWFJ3ZFhRQVlYSnlZWGtnYzJsNlpTQnlaWEYxYVhKbFpBQmhjbkpoZVNCcGJtbDBhV0ZzYVhwbGNpQnRkWE4wSUdKbElITnBlbVZrQUc5dWJIa2diM1YwWlhKdGIzTjBJR1JwYldWdWMybHZiaUJ2WmlCaGJpQmhjbkpoZVNCdlppQmhjbkpoZVhNZ1kyRnVJR0psSUdsdGNHeHBZMmwwYkhrZ2MybDZaV1FBYjI1c2VTQnZkWFJsY20xdmMzUWdaR2x0Wlc1emFXOXVJRzltSUdGdUlHRnljbUY1SUc5bUlHRnljbUY1Y3lCallXNGdZbVVnWVNCemNHVmphV0ZzYVhwaGRHbHZiaUJqYjI1emRHRnVkQUJUM3dJQWF0OENBSUhmQWdDYzN3SUFSMHhmVGxaZmJXVnphRjl6YUdGa1pYSUFZWEp5WVhseklHOW1JR0Z5Y21GNWN3QmpZVzV1YjNRZ2NtVmtaV05zWVhKbElHRWdkWE5sY2kxaWJHOWpheUJ0WlcxaVpYSWdZWEp5WVhrQVlYSnlZWGtnZG1GeWFXRmliR1VnYm1GdFpTQmxlSEJsWTNSbFpBQnlaV1JsWTJ4aGNtbHVaeUJ1YjI0dFlYSnlZWGtnWVhNZ1lYSnlZWGtBY21Wa1pXTnNZWEpoZEdsdmJpQnZaaUJoY25KaGVTQjNhWFJvSUdFZ1pHbG1abVZ5Wlc1MElHVnNaVzFsYm5RZ2RIbHdaUUJ5WldSbFkyeGhjbUYwYVc5dUlHOW1JR0Z5Y21GNUlIZHBkR2dnWVNCa2FXWm1aWEpsYm5RZ1lYSnlZWGtnWkdsdFpXNXphVzl1Y3lCdmNpQnphWHBsY3dCeVpXUmxZMnhoY21GMGFXOXVJRzltSUdGeWNtRjVJSGRwZEdnZ2MybDZaUUFBQUxmZkFnQjJZWEpwWVdKc1pTQnBibVJsZUFCaGNuSmhlU0J0ZFhOMElHSmxJSEpsWkdWamJHRnlaV1FnZDJsMGFDQmhJSE5wZW1VZ1ltVm1iM0psSUdKbGFXNW5JR2x1WkdWNFpXUWdkMmwwYUNCaElIWmhjbWxoWW14bEFHMWxjMmdnZG1sbGR5QnZkWFJ3ZFhRZ1lYSnlZWGtnYzJsNlpTQnRkWE4wSUdKbElHZHNYMDFoZUUxbGMyaFdhV1YzUTI5MWJuUk9WaUJ2Y2lCcGJYQnNhV05wZEd4NUlITnBlbVZrQUhKbGNYVnBjbVZ6SUdFZ2RtbGxkeUJoY25KaGVTQmthVzFsYm5OcGIyNEFjR1Z5ZG1sbGQwNVdBSFpoY21saFlteGxjeUIzYVhSb0lIRjFZV3hwWm1sbGNpQW5ZMjl1YzNRbklHMTFjM1FnWW1VZ2FXNXBkR2xoYkdsNlpXUUFaMnhmVkdWNFEyOXZjbVFBQUFEVDN3SUE2OThDQUVkTVgwRlNRbDl6WlhCaGNtRjBaVjl6YUdGa1pYSmZiMkpxWldOMGN3Qm5iRjlRYjNOcGRHbHZiZ0JuYkY5UWIybHVkRk5wZW1VQVoyeGZRMnhwY0ZabGNuUmxlQUJuYkY5R2IyZEdjbUZuUTI5dmNtUUFaMnhmUm5KaFowUmxjSFJvQUdkc1gwWnlZV2REYjI5eVpBQm5iRjlEYkdsd1JHbHpkR0Z1WTJVQVoyeGZRM1ZzYkVScGMzUmhibU5sQUdkc1gwWnliMjUwUTI5c2IzSUFaMnhmUW1GamEwTnZiRzl5QUdkc1gwWnliMjUwVTJWamIyNWtZWEo1UTI5c2IzSUFaMnhmUW1GamExTmxZMjl1WkdGeWVVTnZiRzl5QUdkc1gxTmxZMjl1WkdGeWVVTnZiRzl5QUdkc1gwTnZiRzl5QUdkc1gwWnlZV2RUZEdWdVkybHNVbVZtUVZKQ0FHZHNYMU5oYlhCc1pVMWhjMnNBWjJ4ZlRHRjVaWElBWjJ4ZlVISnBiV2wwYVhabFNXNWthV05sYzA1V0FHTmhibTV2ZENCeVpXUmxZMnhoY21VZ1lXWjBaWElnZFhObEFHTmhibTV2ZENCaGNIQnNlU0JzWVhsdmRYUWdjWFZoYkdsbWFXVnlJSFJ2QUhKbFpHVmpiR0Z5WVhScGIyNEFZMkZ1Ym05MElHTm9ZVzVuWlNCemRHOXlZV2RsTENCdFpXMXZjbmtzSUc5eUlHRjFlR2xzYVdGeWVTQnhkV0ZzYVdacFkyRjBhVzl1SUc5bUFHTmhibTV2ZENCamFHRnVaMlVnYVc1MFpYSndiMnhoZEdsdmJpQnhkV0ZzYVdacFkyRjBhVzl1SUc5bUFHTmhibTV2ZENCamFHRnVaMlVnY1hWaGJHbG1hV05oZEdsdmJpQnZaZ0JqWVc0Z2IyNXNlU0JqYUdGdVoyVWdiR0Y1YjNWMElIRjFZV3hwWm1sallYUnBiMjRnYjJZQVkyRnVibTkwSUdOb1lXNW5aU0JwYm5CMWRDQnpkRzl5WVdkbElIRjFZV3hwWm1sallYUnBiMjRnYjJZQVkyRnVibTkwSUhKbFpHVmpiR0Z5WlNCM2FYUm9JR1JwWm1abGNtVnVkQ0J4ZFdGc2FXWnBZMkYwYVc5dU9nQmpZVzV1YjNRZ1kyaGhibWRsSUc5MWRIQjFkQ0J6ZEc5eVlXZGxJSEYxWVd4cFptbGpZWFJwYjI0Z2IyWUFZV3hzSUhKbFpHVmpiR0Z5WVhScGIyNXpJRzExYzNRZ2RYTmxJSFJvWlNCellXMWxJR1JsY0hSb0lHeGhlVzkxZENCdmJnQnlaV1JsWTJ4aGNtRjBhVzl1SUc5dWJIa2dZV3hzYjNkbFpDQm1iM0lnYjNabGNuSnBaR1ZmWTI5MlpYSmhaMlVnYkdGNWIzVjBBSEpsWkdWamJHRnlZWFJwYjI0Z2IyNXNlU0JoYkd4dmQyVmtJR1p2Y2lCMmFXVjNjRzl5ZEY5eVpXeGhkR2wyWlNCdmNpQnpaV052Ym1SaGNubGZkbWxsZDE5dlptWnpaWFFnYkdGNWIzVjBBR0oxYVd4MExXbHVJR0pzYjJOcklISmxaR1ZqYkdGeVlYUnBiMjRBWjJ4ZlVHVnlWbVZ5ZEdWNEFHZHNYMUJsY2taeVlXZHRaVzUwQUdkc1gwMWxjMmhRWlhKV1pYSjBaWGhPVmdCbmJGOU5aWE5vVUdWeVVISnBiV2wwYVhabFRsWUFZMkZ1Ym05MElISmxaR1ZqYkdGeVpTQmliRzlqYXpvZ0FHSnNiMk5ySUdSbFkyeGhjbUYwYVc5dUFHTmhibTV2ZENCeVpXUmxZMnhoY21VZ1lTQmlkV2xzZEMxcGJpQmliRzlqYXlCM2FYUm9JR0VnZFhObGNpQnVZVzFsQUc1dklHUmxZMnhoY21GMGFXOXVJR1p2ZFc1a0lHWnZjaUJ5WldSbFkyeGhjbUYwYVc5dUFHTmhiaUJ2Ym14NUlISmxaR1ZqYkdGeVpTQmhJR0oxYVd4MExXbHVJR0pzYjJOcklHOXVZMlVzSUdGdVpDQmlaV1p2Y21VZ1lXNTVJSFZ6WlFCallXNXViM1FnY21Wa1pXTnNZWEpsSUdFZ2JtOXVJR0pzYjJOcklHRnpJR0VnWW14dlkyc0FZMkZ1Ym05MElISmxaR1ZqYkdGeVpTQmliRzlqYXlCdFpXMWlaWElnZDJsMGFDQmhJR1JwWm1abGNtVnVkQ0IwZVhCbEFHTmhibTV2ZENCamFHRnVaMlVnWVhKeVlYbHVaWE56SUc5bUlISmxaR1ZqYkdGeVpXUWdZbXh2WTJzZ2JXVnRZbVZ5QUdOaGJtNXZkQ0JqYUdGdVoyVWdZWEp5WVhrZ2MybDZaU0J2WmlCeVpXUmxZMnhoY21Wa0lHSnNiMk5ySUcxbGJXSmxjZ0J0YVhOemFXNW5JSEJsY25acFpYZE9WaUJ4ZFdGc2FXWnBaWElnZEc4Z2NtVmtaV05zWVhKbFpDQmliRzlqYXlCdFpXMWlaWElBWTJGdWJtOTBJR0ZrWkNCd1pYSjJhV1YzVGxZZ2NYVmhiR2xtYVdWeUlIUnZJSEpsWkdWamJHRnlaV1FnWW14dlkyc2diV1Z0WW1WeUFHMXBjM05wYm1jZ2NHVnljSEpwYldsMGFYWmxUbFlnY1hWaGJHbG1hV1Z5SUhSdklISmxaR1ZqYkdGeVpXUWdZbXh2WTJzZ2JXVnRZbVZ5QUdOaGJtNXZkQ0JoWkdRZ2NHVnljSEpwYldsMGFYWmxUbFlnY1hWaGJHbG1hV1Z5SUhSdklISmxaR1ZqYkdGeVpXUWdZbXh2WTJzZ2JXVnRZbVZ5QUdOaGJtNXZkQ0JoWkdRZ2JXVnRiM0o1SUhGMVlXeHBabWxsY2lCMGJ5QnlaV1JsWTJ4aGNtVmtJR0pzYjJOcklHMWxiV0psY2dCallXNXViM1FnWVdSa0lHNXZiaTFZUmtJZ2JHRjViM1YwSUhSdklISmxaR1ZqYkdGeVpXUWdZbXh2WTJzZ2JXVnRZbVZ5QUdOaGJtNXZkQ0JoWkdRZ2NHRjBZMmdnZEc4Z2NtVmtaV05zWVhKbFpDQmliRzlqYXlCdFpXMWlaWElBYldWdFltVnlJR05oYm01dmRDQmpiMjUwY21Ga2FXTjBJR0pzYjJOcklDaHZjaUIzYUdGMElHSnNiMk5ySUdsdWFHVnlhWFJsWkNCbWNtOXRJR2RzYjJKaGJDa0FlR1ppWDJKMVptWmxjZ0I0Wm1KZmMzUnlaV0Z0QUdKc2IyTnJJSEpsWkdWamJHRnlZWFJwYjI0Z2FHRnpJR1Y0ZEhKaElHMWxiV0psY25NQVkyRnVibTkwSUdOb1lXNW5aU0JoY25KaGVXNWxjM01nYjJZZ2NtVmtaV05zWVhKbFpDQmliRzlqYXdCallXNXViM1FnWTJoaGJtZGxJR0Z5Y21GNUlITnBlbVVnYjJZZ2NtVmtaV05zWVhKbFpDQmliRzlqYXdCemRHOXlZV2RsSUhGMVlXeHBabWxsY2lCdWIzUWdZV3hzYjNkbFpDQnZiaUJtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElBWTJGdWJtOTBJSFZ6WlNCaGRYaHBiR2xoY25rZ2IzSWdhVzUwWlhKd2IyeGhkR2x2YmlCeGRXRnNhV1pwWlhKeklHOXVJR0VnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5QUdOaGJtNXZkQ0IxYzJVZ2JHRjViM1YwSUhGMVlXeHBabWxsY25NZ2IyNGdZU0JtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElBWTJGdWJtOTBJSFZ6WlNCcGJuWmhjbWxoYm5RZ2NYVmhiR2xtYVdWeUlHOXVJR0VnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5QUhGMVlXeHBabWxsY2lCb1lYTWdibThnWldabVpXTjBJRzl1SUc1dmJpMXZkWFJ3ZFhRZ2NHRnlZVzFsZEdWeWN3QndjbVZqYVhObEFHTmhibTV2ZENCdVpYTjBJR0VnWW14dlkyc2daR1ZtYVc1cGRHbHZiaUJwYm5OcFpHVWdZU0J6ZEhKMVkzUjFjbVVnYjNJZ1lteHZZMnNBWTJGdWJtOTBJRzVsYzNRZ1lTQnpkSEoxWTNSMWNtVWdaR1ZtYVc1cGRHbHZiaUJwYm5OcFpHVWdZU0J6ZEhKMVkzUjFjbVVnYjNJZ1lteHZZMnNBWTJGdUozUWdkWE5sSUhkcGRHZ2djMkZ0Y0d4bGNuTWdiM0lnYzNSeWRXTjBjeUJqYjI1MFlXbHVhVzVuSUhOaGJYQnNaWEp6QUdOaGJpZDBJSFZ6WlNCM2FYUm9JSEpsWm1WeVpXNWpaU0IwZVhCbGN3QmpZVzRuZENCMWMyVWdkMmwwYUNCemRISjFZM1J6SUdOdmJuUmhhVzVwYm1jZ1pteHZZWFF4TmdCallXNG5kQ0IxYzJVZ2QybDBhQ0JoY25KaGVYTWdZMjl1ZEdGcGJtbHVaeUJtYkc5aGRERTJBR05oYmlkMElIVnpaU0IzYVhSb0lITjBjblZqZEhNZ1kyOXVkR0ZwYm1sdVp5QnBiblF4TmdCallXNG5kQ0IxYzJVZ2QybDBhQ0JoY25KaGVYTWdZMjl1ZEdGcGJtbHVaeUJwYm5ReE5nQmpZVzRuZENCMWMyVWdkMmwwYUNCemRISjFZM1J6SUdOdmJuUmhhVzVwYm1jZ2RXbHVkREUyQUdOaGJpZDBJSFZ6WlNCM2FYUm9JR0Z5Y21GNWN5QmpiMjUwWVdsdWFXNW5JSFZwYm5ReE5nQmpZVzRuZENCMWMyVWdkMmwwYUNCemRISjFZM1J6SUdOdmJuUmhhVzVwYm1jZ2FXNTBPQUJqWVc0bmRDQjFjMlVnZDJsMGFDQmhjbkpoZVhNZ1kyOXVkR0ZwYm1sdVp5QnBiblE0QUdOaGJpZDBJSFZ6WlNCM2FYUm9JSE4wY25WamRITWdZMjl1ZEdGcGJtbHVaeUIxYVc1ME9BQmpZVzRuZENCMWMyVWdkMmwwYUNCaGNuSmhlWE1nWTI5dWRHRnBibWx1WnlCMWFXNTBPQUJqWVc0bmRDQjFjMlVnZDJsMGFDQjBlWEJsY3lCamIyNTBZV2x1YVc1bklHRnljbUY1Y3lCemFYcGxaQ0IzYVhSb0lHRWdjM0JsWTJsaGJHbDZZWFJwYjI0Z1kyOXVjM1JoYm5RQVkyRnVibTkwSUhWelpTQnpkRzl5WVdkbElHOXlJR2x1ZEdWeWNHOXNZWFJwYjI0Z2NYVmhiR2xtYVdWeWN5QnZiaUJ6ZEhKMVkzUjFjbVVnYldWdFltVnljd0JqWVc1dWIzUWdkWE5sSUcxbGJXOXllU0J4ZFdGc2FXWnBaWEp6SUc5dUlITjBjblZqZEhWeVpTQnRaVzFpWlhKekFHTmhibTV2ZENCMWMyVWdiR0Y1YjNWMElIRjFZV3hwWm1sbGNuTWdiMjRnYzNSeWRXTjBkWEpsSUcxbGJXSmxjbk1BWTJGdWJtOTBJSFZ6WlNCcGJuWmhjbWxoYm5RZ2NYVmhiR2xtYVdWeUlHOXVJSE4wY25WamRIVnlaU0J0WlcxaVpYSnpBR2x1WkhWamRHbDJaUzFzYjI5d0lHbHVhWFF0WkdWamJHRnlZWFJwYjI0Z2NtVnhkV2x5WlhNZ2RHaGxJR1p2Y20wZ0luUjVjR1V0YzNCbFkybG1hV1Z5SUd4dmIzQXRhVzVrWlhnZ1BTQmpiMjV6ZEdGdWRDMWxlSEJ5WlhOemFXOXVJZ0JzYVcxcGRHRjBhVzl1Y3dCcGJtUjFZM1JwZG1VZ2JHOXZjQ0J5WlhGMWFYSmxjeUJoSUhOallXeGhjaUFuYVc1MEp5QnZjaUFuWm14dllYUW5JR3h2YjNBZ2FXNWtaWGdBYVc1a2RXTjBhWFpsTFd4dmIzQWdZMjl1WkdsMGFXOXVJSEpsY1hWcGNtVnpJSFJvWlNCbWIzSnRJQ0pzYjI5d0xXbHVaR1Y0SUR4amIyMXdZWEpwYzI5dUxXOXdQaUJqYjI1emRHRnVkQzFsZUhCeVpYTnphVzl1SWdCcGJtUjFZM1JwZG1VdGJHOXZjQ0IwWlhKdGFXNWhkR2x2YmlCeVpYRjFhWEpsY3lCMGFHVWdabTl5YlNBaWJHOXZjQzFwYm1SbGVDc3JMQ0JzYjI5d0xXbHVaR1Y0TFMwc0lHeHZiM0F0YVc1a1pYZ2dLejBnWTI5dWMzUmhiblF0Wlhod2NtVnpjMmx2Yml3Z2IzSWdiRzl2Y0MxcGJtUmxlQ0F0UFNCamIyNXpkR0Z1ZEMxbGVIQnlaWE56YVc5dUlnQm5iRjlOWVhoVVpYaDBkWEpsUTI5dmNtUnpBR2RzWDFSbGVFTnZiM0prSUdGeWNtRjVJSE5wZW1VQVoyeGZUV0Y0UTJ4cGNFUnBjM1JoYm1ObGN3Qm5iRjlEYkdsd1JHbHpkR0Z1WTJVZ1lYSnlZWGtnYzJsNlpRQm5iRjlOWVhoRGRXeHNSR2x6ZEdGdVkyVnpBR2RzWDBOMWJHeEVhWE4wWVc1alpTQmhjbkpoZVNCemFYcGxBR2RzWDBOc2FYQkVhWE4wWVc1alpWQmxjbFpwWlhkT1ZnQm5iRjlEYkdsd1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxZZ1lYSnlZWGtnYzJsNlpRQm5iRjlEZFd4c1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxZQVoyeGZRM1ZzYkVScGMzUmhibU5sVUdWeVZtbGxkMDVXSUdGeWNtRjVJSE5wZW1VQWJYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z2IzSWdaWEYxWVd3Z2RHOEFKWE1nS0NWa0tRQm5aVzl0WlhSeWVTQnphR0ZrWlhKekFIUmxjM05sYkd4aGRHbHZiaUJ6YUdGa1pYSnpBQUFBQUFQZ0FnRDB1UUlBWTI5dGNIVjBaU0J6YUdGa1pYSnpBRENnQWdCMFlYTnJJSE5vWVdSbGNuTUFiV1Z6YUNCemFHRmtaWEp6QUVkTVgwNVdYMmRsYjIxbGRISjVYM05vWVdSbGNsOXdZWE56ZEdoeWIzVm5hQUJ3WVdOclpXUUFjMmhoY21Wa0FITjBaRFF6TUFCelkyRnNZWElBSHVBQ0FITmpZV3hoY2lCaWJHOWpheUJzWVhsdmRYUUFhVzFoWjJVZ2JHOWhaQzF6ZEc5eVpTQm1iM0p0WVhRQVIweGZRVkpDWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxBR2x0WVdkbElHeHZZV1FnYzNSdmNtVUFjSFZ6YUY5amIyNXpkR0Z1ZEFCaWRXWm1aWEpmY21WbVpYSmxibU5sQUFBNTRBSUFjR0Z6YzNSb2NtOTFaMmdBL3JFQ0FHZGxiMjFsZEhKNUlITm9ZV1JsY2lCd1lYTnpkR2h5YjNWbmFBQndiMmx1ZEY5dGIyUmxBRzl5YVdkcGJsOTFjSEJsY2w5c1pXWjBBSEJwZUdWc1gyTmxiblJsY2w5cGJuUmxaMlZ5QUdWaGNteDVYMlp5WVdkdFpXNTBYM1JsYzNSekFIQnZjM1JmWkdWd2RHaGZZMjkyWlhKaFoyVUFBR1N6QWdDVjRBSUFjRzl6ZENCa1pYQjBhQ0JqYjNabGNtRm5aUUJIVEY5QlVrSmZjRzl6ZEY5a1pYQjBhRjlqYjNabGNtRm5aUUJrWlhCMGFDQnNZWGx2ZFhRZ2NYVmhiR2xtYVdWeUFHWnlZV2R0Wlc1MElITm9ZV1JsY2lCcGJuUmxjbXh2WTJzZ2JHRjViM1YwSUhGMVlXeHBabWxsY2dBQUFBQ0o0UUlBcXVFQ0FHSnNaVzVrWDNOMWNIQnZjblFBUjB4ZlMwaFNYMkpzWlc1a1gyVnhkV0YwYVc5dVgyRmtkbUZ1WTJWa0FIVnVhMjV2ZDI0Z1lteGxibVFnWlhGMVlYUnBiMjRBYjNabGNuSnBaR1ZmWTI5MlpYSmhaMlVBQUFCRzR3SUFjMkZ0Y0d4bElHMWhjMnNnYjNabGNuSnBaR1VnWTI5MlpYSmhaMlVBZG1sbGQzQnZjblJmY21Wc1lYUnBkbVVBYXVNQ0FIWnBaWGNnY0c5eWRDQmhjbkpoZVRJQWMyaGhaR1Z5Y21WamIzSmtibllBWkdWeWFYWmhkR2wyWlY5bmNtOTFjRjhBQUFDQTR3SUFZMjl0Y0hWMFpTQnphR0ZrWlhJZ1pHVnlhWFpoZEdsMlpYTUFaR1Z5YVhaaGRHbDJaVjluY205MWNGOXhkV0ZrYzI1MkFHUmxjbWwyWVhScGRtVmZaM0p2ZFhCZmJHbHVaV0Z5Ym5ZQWRXNXlaV052WjI1cGVtVmtJR3hoZVc5MWRDQnBaR1Z1ZEdsbWFXVnlMQ0J2Y2lCeGRXRnNhV1pwWlhJZ2NtVnhkV2x5WlhNZ1lYTnphV2R1YldWdWRDQW9aUzVuTGl3Z1ltbHVaR2x1WnlBOUlEUXBBR3hoZVc5MWRDMXBaQ0IyWVd4MVpRQnViMjR0YkdsMFpYSmhiQ0JzWVhsdmRYUXRhV1FnZG1Gc2RXVUFSMHhmUVZKQ1gyVnVhR0Z1WTJWa1gyeGhlVzkxZEhNQVkyRnVibTkwSUdKbElHNWxaMkYwYVhabEFFZE1YMEZTUWw5emFHRmtaWEpmWVhSdmJXbGpYMk52ZFc1MFpYSnpBQUFBQUFCanRRSUFqclVDQUc1bFpXUnpJR0VnYkdsMFpYSmhiQ0JwYm5SbFoyVnlBR0ZzYVdkdUFIVnVhV1p2Y20wZ1luVm1abVZ5TFcxbGJXSmxjaUJoYkdsbmJnQnRkWE4wSUdKbElHRWdjRzkzWlhJZ2IyWWdNZ0JzYjJOaGRHbHZiZ0JIVEY5QlVrSmZaWGh3YkdsamFYUmZZWFIwY21saVgyeHZZMkYwYVc5dUFHeHZZMkYwYVc5dUlHbHpJSFJ2YnlCc1lYSm5aUUJ6WlhRQWMyVjBJR2x6SUhSdmJ5QnNZWEpuWlFCa1pYTmpjbWx3ZEc5eUlITmxkQUJpYVc1a2FXNW5BR0pwYm1ScGJtY2dhWE1nZEc5dklHeGhjbWRsQUdOdmJuTjBZVzUwWDJsa0FITndaV05wWVd4cGVtRjBhVzl1TFdOdmJuTjBZVzUwSUdsa0lHbHpJSFJ2YnlCc1lYSm5aUUJ6Y0dWamFXRnNhWHBoZEdsdmJpMWpiMjV6ZEdGdWRDQnBaQ0JoYkhKbFlXUjVJSFZ6WldRQVkyOXRjRzl1Wlc1MEFHTnZiWEJ2Ym1WdWRDQnBjeUIwYjI4Z2JHRnlaMlVBZUdaaVh3QjBjbUZ1YzJadmNtMGdabVZsWkdKaFkyc2djWFZoYkdsbWFXVnlBR0oxWm1abGNpQnBjeUIwYjI4Z2JHRnlaMlU2QUdkc1gwMWhlRlJ5WVc1elptOXliVVpsWldSaVlXTnJRblZtWm1WeWN5QnBjeUFsWkFCcGJuUmxjbTVoYkNCdFlYZ2dhWE1nSldRQWVHWmlYMjltWm5ObGRBQnZabVp6WlhRZ2FYTWdkRzl2SUd4aGNtZGxPZ0I0Wm1KZmMzUnlhV1JsQURFdk5DQnpkSEpwWkdVZ2FYTWdkRzl2SUd4aGNtZGxPZ0JuYkY5TllYaFVjbUZ1YzJadmNtMUdaV1ZrWW1GamEwbHVkR1Z5YkdWaGRtVmtRMjl0Y0c5dVpXNTBjeUJwY3lBbFpBQnpkSEpwWkdVZ2FYTWdkRzl2SUd4aGNtZGxPZ0JwYm5CMWRGOWhkSFJoWTJodFpXNTBYMmx1WkdWNEFHRjBkR0ZqYUcxbGJuUWdhVzVrWlhnZ2FYTWdkRzl2SUd4aGNtZGxBRzUxYlY5MmFXVjNjd0FBQUtIakFnQ3k0d0lBYzJWamIyNWtZWEo1WDNacFpYZGZiMlptYzJWMEFBQUF4T01DQUhOMFpYSmxieUIyYVdWM0lISmxibVJsY21sdVp3QmlkV1ptWlhKZmNtVm1aWEpsYm1ObFgyRnNhV2R1QUcxMWMzUWdZbVVnWjNKbFlYUmxjaUIwYUdGdUlEQUFhVzUyYjJOaGRHbHZibk1BYlhWemRDQmlaU0JoZENCc1pXRnpkQ0F4QUhSdmJ5QnNZWEpuWlN3Z2JYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z1oyeGZUV0Y0UjJWdmJXVjBjbmxQZFhSd2RYUldaWEowYVdObGN3QnpkSEpsWVcwQWMyVnNaV04wYVc1bklHOTFkSEIxZENCemRISmxZVzBBYVc1a1pYZ0FhVzVrWlhnZ2JHRjViM1YwSUhGMVlXeHBabWxsY2lCdmJpQm1jbUZuYldWdWRDQnZkWFJ3ZFhRQWRtRnNkV1VnYlhWemRDQmlaU0F3SUc5eUlERUFkRzl2SUd4aGNtZGxMQ0J0ZFhOMElHSmxJR3hsYzNNZ2RHaGhiaUJuYkY5TllYaE5aWE5vVDNWMGNIVjBWbVZ5ZEdsalpYTk9WZ0IwYjI4Z2JHRnlaMlVzSUcxMWMzUWdZbVVnYkdWemN5QjBhR0Z1SUdkc1gwMWhlRTFsYzJoUGRYUndkWFJRY21sdGFYUnBkbVZ6VGxZQWJHOWpZV3hmYzJsNlpWOEFaMnhmVjI5eWEwZHliM1Z3VTJsNlpRQkhURjlCVWtKZlkyOXRjSFYwWlY5emFHRmtaWElBYkc5allXeGZjMmw2WlFCc2IyTmhiRjl6YVhwbFgzZ0FiRzlqWVd4ZmMybDZaVjk1QUd4dlkyRnNYM05wZW1WZmVnQnNiMk5oYkY5emFYcGxYM2hmYVdRQWJHOWpZV3hmYzJsNlpWOTVYMmxrQUd4dlkyRnNYM05wZW1WZmVsOXBaQUIwYUdWeVpTQnBjeUJ1YnlCemRXTm9JR3hoZVc5MWRDQnBaR1Z1ZEdsbWFXVnlJR1p2Y2lCMGFHbHpJSE4wWVdkbElIUmhhMmx1WnlCaGJpQmhjM05wWjI1bFpDQjJZV3gxWlFCallXNGdiMjVzZVNCaVpTQjFjMlZrSUc5dUlIWmhjbWxoWW14bElHUmxZMnhoY21GMGFXOXVBRk5RU1ZJdFZpQnlaWEYxYVhKbGN5QnNiMk5oZEdsdmJpQm1iM0lnZFhObGNpQnBibkIxZEM5dmRYUndkWFFBWTJGdWJtOTBJSE53WldOcFpua2diV0YwY21sNElHeGhlVzkxZENCdmJpQmhJSFpoY21saFlteGxJR1JsWTJ4aGNtRjBhVzl1QUd4aGVXOTFkQUJqWVc1dWIzUWdjM0JsWTJsbWVTQndZV05yYVc1bklHOXVJR0VnZG1GeWFXRmliR1VnWkdWamJHRnlZWFJwYjI0QVkyRnVibTkwSUhOd1pXTnBabmtnYjI0Z1lTQjJZWEpwWVdKc1pTQmtaV05zWVhKaGRHbHZiZ0JqWVc0Z2IyNXNlU0J6Y0dWamFXWjVJRzl1SUdFZ2RXNXBabTl5YlNCaWJHOWphd0JqWVc0Z2IyNXNlU0J6Y0dWamFXWjVJRzl1SUdFZ1luVm1abVZ5SUdKc2IyTnJBSE5vWVdSbGNsSmxZMjl5WkU1V0FHTmhibTV2ZENCMWMyVWdhVzRnWVNCaWJHOWpheUJoY25KaGVTQjNhR1Z5WlNCdVpYY2diRzlqWVhScGIyNXpJR0Z5WlNCdVpXVmtaV1FnWm05eUlHVmhZMmdnWW14dlkyc2daV3hsYldWdWRBQjBiMjhnYkdGeVoyVWdabTl5SUdaeVlXZHRaVzUwSUc5MWRIQjFkQUIwZVhCbElHOTJaWEptYkc5M2N5QjBhR1VnWVhaaGFXeGhZbXhsSURRZ1kyOXRjRzl1Wlc1MGN3QmpZVzV1YjNRZ1lYQndiSGtnZEc4Z1lTQnRZWFJ5YVhnc0lITjBjblZqZEhWeVpTd2diM0lnWW14dlkyc0FaRzkxWW14bGN5QmpZVzV1YjNRZ2MzUmhjblFnYjI0Z1lXNGdiMlJrTFc1MWJXSmxjbVZrSUdOdmJYQnZibVZ1ZEFCc2IyTmhkR2x2YmlCeGRXRnNhV1pwWlhJZ2IyNGdhVzR2YjNWMElHSnNiMk5yQUdOaGJtNXZkQ0JoY0hCc2VTQjBieUIwWVhOclRsWWdhVzR2YjNWMElHSnNiMk5yY3dCallXNXViM1FnWVhCd2JIa2dkRzhnZFc1cFptOXliU0J2Y2lCaWRXWm1aWElnWW14dlkyc0FZMkZ1SUc5dWJIa2dZWEJ3YkhrZ2RHOGdkVzVwWm05eWJTd2dZblZtWm1WeUxDQnBiaXdnYjNJZ2IzVjBJSE4wYjNKaFoyVWdjWFZoYkdsbWFXVnljd0J2ZG1WeWJHRndjR2x1WnlCMWMyVWdiMllnYkc5allYUnBiMjRBWm5KaFoyMWxiblFnYjNWMGNIVjBjeUJ6YUdGeWFXNW5JSFJvWlNCellXMWxJR3h2WTJGMGFXOXVJRzExYzNRZ1ltVWdkR2hsSUhOaGJXVWdZbUZ6YVdNZ2RIbHdaUUJ2ZG1WeWJHRndjR2x1WnlCdlptWnpaWFJ6SUdGMEFHOW1abk5sZENBbFpDQnBiaUJpZFdabVpYSWdKV1FBZEhsd1pTQmpiMjUwWVdsdWN5QmtiM1ZpYkdVZ2IzSWdOalF0WW1sMElHbHVkR1ZuWlhJN0lIaG1ZbDl2Wm1aelpYUWdiWFZ6ZENCaVpTQmhJRzExYkhScGNHeGxJRzltSURnQWJYVnpkQ0JpWlNCaElHMTFiSFJwY0d4bElHOW1JSE5wZW1VZ2IyWWdabWx5YzNRZ1kyOXRjRzl1Wlc1MEFIUjVjR1VnWTI5dWRHRnBibk1nYUdGc1ppQm1iRzloZENCdmNpQXhOaTFpYVhRZ2FXNTBaV2RsY2pzZ2VHWmlYMjltWm5ObGRDQnRkWE4wSUdKbElHRWdiWFZzZEdsd2JHVWdiMllnTWdCaGJHd2djM1J5YVdSbElITmxkSFJwYm1keklHMTFjM1FnYldGMFkyZ2dabTl5SUhobVlpQmlkV1ptWlhJQWNtVnhkV2x5WlhNZ1lteHZZMnNzSUc5eUlITmhiWEJzWlhJdmFXMWhaMlVzSUc5eUlHRjBiMjFwWXkxamIzVnVkR1Z5SUhSNWNHVUFZWE56ZFcxcGJtY2dZbWx1WkdsdVp5QmpiM1Z1ZENCdlppQnZibVVnWm05eUlHTnZiWEJwYkdVdGRHbHRaU0JqYUdWamEybHVaeUJ2WmlCaWFXNWthVzVuSUc1MWJXSmxjbk1nWm05eUlIVnVjMmw2WldRZ1lYSnlZWGtBYzJGdGNHeGxjaUJpYVc1a2FXNW5JRzV2ZENCc1pYTnpJSFJvWVc0Z1oyeGZUV0Y0UTI5dFltbHVaV1JVWlhoMGRYSmxTVzFoWjJWVmJtbDBjd0FvZFhOcGJtY2dZWEp5WVhrcEFHRjBiMjFwWTE5MWFXNTBJR0pwYm1ScGJtY2dhWE1nZEc5dklHeGhjbWRsT3lCelpXVWdaMnhmVFdGNFFYUnZiV2xqUTI5MWJuUmxja0pwYm1ScGJtZHpBR3hoZVc5MWRDaGlhVzVrYVc1blBWZ3BJR2x6SUhKbGNYVnBjbVZrQUhWdWFXWnZjbTB2WW5WbVptVnlJR0pzYjJOcmN5QnlaWEYxYVhKbElHeGhlVzkxZENoaWFXNWthVzVuUFZncEFITmhiWEJzWlhJdmRHVjRkSFZ5WlM5cGJXRm5aU0J5WlhGMWFYSmxjeUJzWVhsdmRYUW9ZbWx1WkdsdVp6MVlLUUJIWlc1bGNtRjBhVzVuSUZOUVNWSXRWaUJoY25KaGVTMXZaaTFoY25KaGVYTXNJR0oxZENCV2RXeHJZVzRnYjI1c2VTQnpkWEJ3YjNKMGN5QnphVzVuYkdVZ1lYSnlZWGtnYkdWMlpXd2dabTl5SUhSb2FYTWdjbVZ6YjNWeVkyVUFXMTFiWFFCdmJteDVJR0Z3Y0d4cFpYTWdkRzhnWW14dlkyc2diV1Z0WW1WeWN5d2dibTkwSUdKc2IyTnJjd0J2Ym14NUlHRndjR3g1SUhSdklHbHRZV2RsY3dCa2IyVnpJRzV2ZENCaGNIQnNlU0IwYnlCbWJHOWhkR2x1WnlCd2IybHVkQ0JwYldGblpYTUFaRzlsY3lCdWIzUWdZWEJ3YkhrZ2RHOGdjMmxuYm1Wa0lHbHVkR1ZuWlhJZ2FXMWhaMlZ6QUdSdlpYTWdibTkwSUdGd2NHeDVJSFJ2SUhWdWMybG5ibVZrSUdsdWRHVm5aWElnYVcxaFoyVnpBR1p2Y20xaGRDQnlaWEYxYVhKbGN5QnlaV0ZrYjI1c2VTQnZjaUIzY21sMFpXOXViSGtnYldWdGIzSjVJSEYxWVd4cFptbGxjZ0JwYldGblpTQjJZWEpwWVdKc1pYTWdibTkwSUdSbFkyeGhjbVZrSUNkM2NtbDBaVzl1YkhrbklHRnVaQ0IzYVhSb2IzVjBJR0VnWm05eWJXRjBJR3hoZVc5MWRDQnhkV0ZzYVdacFpYSUFSMHhmUlZoVVgzTm9ZV1JsY2w5cGJXRm5aVjlzYjJGa1gyWnZjbTFoZEhSbFpBQmpZVzRnYjI1c2VTQmlaU0IxYzJWa0lIZHBkR2dnWVNCaWJHOWphd0J5WlhGMWFYSmxjeUJoYmlCcGJuQjFkRjloZEhSaFkyaHRaVzUwWDJsdVpHVjRJR3hoZVc5MWRDQnhkV0ZzYVdacFpYSUFjM1ZpY0dGemN3QmpZVzRnYjI1c2VTQmlaU0IxYzJWa0lIZHBkR2dnWVNCemRXSndZWE56QUdOaGJpQnZibXg1SUdKbElHRndjR3hwWldRZ2RHOGdKMk52Ym5OMEp5MXhkV0ZzYVdacFpXUWdjMk5oYkdGeUFHTmhiaUJ2Ym14NUlHSmxJR0Z3Y0d4cFpXUWdkRzhnWVNCelkyRnNZWElBWTJGdWJtOTBJR0psSUdGd2NHeHBaV1FnZEc4Z2RHaHBjeUIwZVhCbEFHTmhibTV2ZENCaGNIQnNlU0JzWVhsdmRYUWdjWFZoYkdsbWFXVnljeUIwYnlCaElITm9ZWEpsWkNCMllYSnBZV0pzWlFCdGRYTjBJSE53WldOcFpua2dKMnh2WTJGMGFXOXVKeUIwYnlCMWMyVWdKMk52YlhCdmJtVnVkQ2NBYkc5allYUnBiMjRnY1hWaGJHbG1hV1Z5SUc5dUlHbHVjSFYwQUd4dlkyRjBhVzl1SUhGMVlXeHBabWxsY2lCdmJpQnZkWFJ3ZFhRQUFBQUFBQUIwb2dJQUVMWUNBR3h2WTJGMGFXOXVJSEYxWVd4cFptbGxjaUJ2YmlCMWJtbG1iM0p0SUc5eUlHSjFabVpsY2dCSFRGOUJVa0pmWlhod2JHbGphWFJmZFc1cFptOXliVjlzYjJOaGRHbHZiZ0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJRzl1SUdGdUlHOTFkSEIxZEFCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dZVzRnWlhod2JHbGphWFFnYkc5allYUnBiMjRBY21WeGRXbHlaWE1nZFc1cFptOXliU0J2Y2lCaWRXWm1aWElnYzNSdmNtRm5aU0J4ZFdGc2FXWnBaWElBZUdaaUlHeGhlVzkxZENCeGRXRnNhV1pwWlhJQWJXRjBjbWw0SUc5eUlIQmhZMnRwYm1jZ2NYVmhiR2xtYVdWeWN5QmpZVzRnYjI1c2VTQmlaU0IxYzJWa0lHOXVJR0VnZFc1cFptOXliU0J2Y2lCaWRXWm1aWElBYjJabWMyVjBMMkZzYVdkdUlHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2IyNGdZU0IxYm1sbWIzSnRJRzl5SUdKMVptWmxjZ0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJSGRwZEdnZ1lTQjFibWxtYjNKdEFHTmhibTV2ZENCaVpTQjFjMlZrSUhkcGRHZ2djSFZ6YUY5amIyNXpkR0Z1ZEFCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dZblZtWm1WeUFHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2QybDBhQ0JoSUdKMVptWmxjZ0JqWVc1dWIzUWdZbVVnZFhObFpDQjNhWFJvSUhOb1lXUmxjbEpsWTI5eVpFNVdBR05oYm01dmRDQmhjSEJzZVNCc1lYbHZkWFFnY1hWaGJHbG1hV1Z5Y3lCMGJ5Qm9hWFJCZEhSeWFXSjFkR1ZPVmlCMllYSnBZV0pzWlFCb2FYUkJkSFJ5YVdKMWRHVk9WZ0JqWVc0Z2IyNXNlU0JoY0hCc2VTQjBieUJoSUhOMFlXNWtZV3h2Ym1VZ2NYVmhiR2xtYVdWeUFHeHZZMkZzWDNOcGVtVWdhV1FBWVhSdmJXbGpJR052ZFc1MFpYSnpJRzltWm5ObGRDQnphRzkxYkdRZ1lXeHBaMjRnWW1GelpXUWdiMjRnTkRvQVlYSnlZWGtnYlhWemRDQmlaU0JsZUhCc2FXTnBkR3g1SUhOcGVtVmtBR0YwYjIxcFl5QmpiM1Z1ZEdWeWN5QnphR0Z5YVc1bklIUm9aU0J6WVcxbElHOW1abk5sZERvQVkyRnVKM1FnZFhObElHWjFibU4wYVc5dUlITjViblJoZUNCdmJpQjJZWEpwWVdKc1pRQkhURjlGV0ZSZmMyaGhaR1Z5WDJWNGNHeHBZMmwwWDJGeWFYUm9iV1YwYVdOZmRIbHdaWE1BUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgybHVkRGdBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgybHVkREUyQUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOXBiblF6TWdCSFRGOUZXRlJmYzJoaFpHVnlYMlY0Y0d4cFkybDBYMkZ5YVhSb2JXVjBhV05mZEhsd1pYTmZhVzUwTmpRQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMlpzYjJGME1UWUFSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6WDJac2IyRjBNeklBUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgyWnNiMkYwTmpRQVIweGZRVkpDWDJkd2RWOXphR0ZrWlhKZlpuQTJOQUJ1YnlCdFlYUmphR2x1WnlCdmRtVnliRzloWkdWa0lHWjFibU4wYVc5dUlHWnZkVzVrQUdGdFltbG5kVzkxY3lCbWRXNWpkR2x2YmlCemFXZHVZWFIxY21VZ2JXRjBZMmc2SUcxMWJIUnBjR3hsSUhOcFoyNWhkSFZ5WlhNZ2JXRjBZMmdnZFc1a1pYSWdhVzF3YkdsamFYUWdkSGx3WlNCamIyNTJaWEp6YVc5dUFHRnRZbWxuZFc5MWN5QmlaWE4wSUdaMWJtTjBhVzl1SUhWdVpHVnlJR2x0Y0d4cFkybDBJSFI1Y0dVZ1kyOXVkbVZ5YzJsdmJnQmhkRzl0YVdOZmRXbHVkQ0JpYVc1a2FXNW5JR2x6SUhSdmJ5QnNZWEpuWlFCMWMyVnNaWE56SUdGd2NHeHBZMkYwYVc5dUlHOW1JR3hoZVc5MWRDQnhkV0ZzYVdacFpYSUFaWGh3WldOMFpXUWdabTkxY2lCMGVYQmxJSEJoY21GdFpYUmxjbk1BWlhod1pXTjBaV1FnTVRZc0lETXlMQ0J2Y2lBMk5DQmlhWFJ6SUdadmNpQm1hWEp6ZENCMGVYQmxJSEJoY21GdFpYUmxjZ0JsZUhCbFkzUmxaQ0E0SUc5eUlETXlJR0pwZEhNZ1ptOXlJR1pwY25OMElIUjVjR1VnY0dGeVlXMWxkR1Z5QUhWdVpYaHdaV04wWldRZ2RIbHdaU0J3WVhKaGJXVjBaWEp6QUdsdWFYUnBZV3hwZW1WeUFIWmhjbWxoWW14bGN5QjNhWFJvSUhKbFptVnlaVzVqWlNCMGVYQmxJR05oYmlkMElHaGhkbVVnY1hWaGJHbG1hV1Z5SUNkamIyNXpkQ2NBY1hWaGJHbG1hV1Z5QUVOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxjeUJ0ZFhOMElHNXZkQ0JpWlNCMWMyVmtJR2x1SUhOb1lYSmxaQ0J0WlcxdmNua0FZMkZ1SUc5dWJIa2dZWEJ3YkhrZ2IzSnBaMmx1WDNWd2NHVnlYMnhsWm5RZ1lXNWtJSEJwZUdWc1gyTmxiblJsY2w5dmNtbG5hVzRnZEc4Z1oyeGZSbkpoWjBOdmIzSmtBR3hoZVc5MWRDQnhkV0ZzYVdacFpYSUFZMkZ1SUc5dWJIa2dZWEJ3YkhrZ1pHVndkR2dnYkdGNWIzVjBJSFJ2SUdkc1gwWnlZV2RFWlhCMGFBQmpZVzV1YjNRZ1kyaGhibWRsSUhSb1pTQjBlWEJsSUc5bUFHbHVhWFJwWVd4cGVtVnlJSEpsY1hWcGNtVnpJR0VnZG1GeWFXRmliR1VzSUc1dmRDQmhJRzFsYldKbGNnQWdZMkZ1Ym05MElHbHVhWFJwWVd4cGVtVWdkR2hwY3lCMGVYQmxJRzltSUhGMVlXeHBabWxsY2lBQVlYSnlZWGtnYVc1cGRHbGhiR2w2WlhJQWRXNXBabTl5YlNCcGJtbDBhV0ZzYVhwbGNuTWdiWFZ6ZENCaVpTQmpiMjV6ZEdGdWRBQTlBQ2NsY3ljQVoyeHZZbUZzSUdOdmJuTjBJR2x1YVhScFlXeHBlbVZ5Y3lCdGRYTjBJR0psSUdOdmJuTjBZVzUwQUc1dmJpMWpiMjV6ZEdGdWRDQnBibWwwYVdGc2FYcGxjZ0J1YjI0dFkyOXVjM1JoYm5RZ1oyeHZZbUZzSUdsdWFYUnBZV3hwZW1WeUlDaHVaV1ZrY3lCSFRGOUZXRlJmYzJoaFpHVnlYMjV2Ymw5amIyNXpkR0Z1ZEY5bmJHOWlZV3hmYVc1cGRHbGhiR2w2WlhKektRQkhURjlGV0ZSZmMyaGhaR1Z5WDI1dmJsOWpiMjV6ZEdGdWRGOW5iRzlpWVd4ZmFXNXBkR2xoYkdsNlpYSnpBRzV2YmkxdFlYUmphR2x1WnlCdmNpQnViMjR0WTI5dWRtVnlkR2xpYkdVZ1kyOXVjM1JoYm5RZ2RIbHdaU0JtYjNJZ1kyOXVjM1FnYVc1cGRHbGhiR2w2WlhJQWQzSnZibWNnYm5WdFltVnlJRzltSUhOMGNuVmpkSFZ5WlNCdFpXMWlaWEp6QUdsdWFYUnBZV3hwZW1WeUlHeHBjM1FBZDNKdmJtY2diblZ0WW1WeUlHOW1JRzFoZEhKcGVDQmpiMngxYlc1ek9nQjNjbTl1WnlCMlpXTjBiM0lnYzJsNlpTQW9iM0lnY205M2N5QnBiaUJoSUcxaGRISnBlQ0JqYjJ4MWJXNHBPZ0IxYm1WNGNHVmpkR1ZrSUdsdWFYUnBZV3hwZW1WeUxXeHBjM1FnZEhsd1pUb0FBQURnNHdJQWNtVm1aWEpsYm1ObElHTnZiblpsY25OcGIyNGdkRzhnZFhabFl6SUFkWFpsWXpJZ1kyOXVkbVZ5YzJsdmJpQjBieUJ5WldabGNtVnVZMlVBZFc1emRYQndiM0owWldRZ1kyOXVjM1J5ZFdOMGFXOXVBR05oYmlkMElHTnZiblpsY25RQVkyRnVibTkwSUdOdmJuWmxjblFnY0dGeVlXMWxkR1Z5SUNWa0lHWnliMjBnSnlWekp5QjBieUFuSlhNbkFHRnljbUY1TFc5bUxXRnljbUY1SUc5bUlHSnNiMk5yQUcxbGJXSmxjaUJ6ZEc5eVlXZGxJSEYxWVd4cFptbGxjaUJqWVc1dWIzUWdZMjl1ZEhKaFpHbGpkQ0JpYkc5amF5QnpkRzl5WVdkbElIRjFZV3hwWm1sbGNnQnRaVzFpWlhJZ2IyWWdkVzVwWm05eWJTQnZjaUJpZFdabVpYSWdZbXh2WTJzZ1kyRnVibTkwSUdoaGRtVWdZVzRnWVhWNGFXeHBZWEo1SUc5eUlHbHVkR1Z5Y0c5c1lYUnBiMjRnY1hWaGJHbG1hV1Z5QUc5bVpuTmxkQ0J2YmlCaWJHOWpheUJ0WlcxaVpYSUFiV1Z0WW1WeUlHOW1JR0pzYjJOcklHTmhibTV2ZENCaVpTQnZjaUJqYjI1MFlXbHVJR0VnYzJGdGNHeGxjaXdnYVcxaFoyVXNJRzl5SUdGMGIyMXBZMTkxYVc1MElIUjVjR1VBYldWdFltVnlJRzltSUdKc2IyTnJJR05oYm01dmRDQmlaU0J2Y2lCamIyNTBZV2x1SUdFZ1kyOXZjR1Z5WVhScGRtVWdiV0YwY21sNElIUjVjR1VBWTJGdUlHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lITjBaREUwTUN3Z2MzUmtORE13TENCdmNpQnpZMkZzWVhJZ2JHRjViM1YwSUhCaFkydHBibWNBYldWdFltVnlJR05oYm01dmRDQmpiMjUwY21Ga2FXTjBJR0pzYjJOckFHMWxiV0psY2lCdlppQmliRzlqYXlCallXNXViM1FnYUdGMlpTQmhJSEJoWTJ0cGJtY2diR0Y1YjNWMElIRjFZV3hwWm1sbGNnQnNiMk5oZEdsdmJpQnZiaUJpYkc5amF5QnRaVzFpWlhJQVkyRnVJRzl1YkhrZ2RYTmxJR2x1SUdGdUlHbHVMMjkxZENCaWJHOWphd0J2Wm1aelpYUXZZV3hwWjI0QVlteHZZMnNnYm1GdFpTQmpZVzV1YjNRZ1ltVWdjbVZrWldacGJtVmtBRU5oYm01dmRDQnlaWFZ6WlNCaWJHOWpheUJ1WVcxbElIZHBkR2hwYmlCMGFHVWdjMkZ0WlNCcGJuUmxjbVpoWTJVNkFHSnNiMk5ySUc1aGJXVWdZMkZ1Ym05MElISmxaR1ZtYVc1bElHRWdibTl1TFdKc2IyTnJJRzVoYldVQWJtRnRaV3hsYzNNZ1lteHZZMnNnWTI5dWRHRnBibk1nWVNCdFpXMWlaWElnZEdoaGRDQmhiSEpsWVdSNUlHaGhjeUJoSUc1aGJXVWdZWFFnWjJ4dlltRnNJSE5qYjNCbEFHSnNiMk5ySUdsdWMzUmhibU5sSUc1aGJXVWdjbVZrWldacGJtbDBhVzl1QUhWdWFXWnZjbTBnWW14dlkyc0FSMHhmUVZKQ1gzVnVhV1p2Y20xZlluVm1abVZ5WDI5aWFtVmpkQUJ6ZEdRME16QWdjbVZ4ZFdseVpYTWdkR2hsSUdKMVptWmxjaUJ6ZEc5eVlXZGxJSEYxWVd4cFptbGxjZ0JpZFdabVpYSWdZbXh2WTJzQWFXNXdkWFFnWW14dlkyc0FabkpoWjIxbGJuUWdhVzV3ZFhRZ1lteHZZMnNBYVc1d2RYUWdZbXh2WTJ0eklHTmhibTV2ZENCaVpTQjFjMlZrSUdsdUlHRWdiV1Z6YUNCemFHRmtaWElBYjNWMGNIVjBJR0pzYjJOckFIWmxjblJsZUNCdmRYUndkWFFnWW14dlkyc0FZMkZ1SUc5dWJIa2dkWE5sSUc5dUlHbHVjSFYwSUdKc2IyTnJjeUJwYmlCdFpYTm9JSE5vWVdSbGNnQnZkWFJ3ZFhRZ1lteHZZMnR6SUdOaGJtNXZkQ0JpWlNCMWMyVmtJR2x1SUdFZ2RHRnpheUJ6YUdGa1pYSUFSMHhmVGxaZmNtRjVYM1J5WVdOcGJtY0FjbUY1VUdGNWJHOWhaRTVXSUdKc2IyTnJBSEpoZVZCaGVXeHZZV1JKYms1V0lHSnNiMk5yQUdocGRFRjBkSEpwWW5WMFpVNVdJR0pzYjJOckFHTmhiR3hoWW14bFJHRjBZVTVXSUdKc2IyTnJBR05oYkd4aFlteGxSR0YwWVVsdVRsWWdZbXh2WTJzQWIyNXNlU0IxYm1sbWIzSnRMQ0JpZFdabVpYSXNJR2x1TENCdmNpQnZkWFFnWW14dlkydHpJR0Z5WlNCemRYQndiM0owWldRQVkyRnVibTkwSUhWelpTQnBiblJsY25CdmJHRjBhVzl1SUhGMVlXeHBabWxsY25NZ2IyNGdZVzRnYVc1MFpYSm1ZV05sSUdKc2IyTnJBR05oYm01dmRDQjFjMlVnWTJWdWRISnZhV1FnY1hWaGJHbG1hV1Z5SUc5dUlHRnVJR2x1ZEdWeVptRmpaU0JpYkc5amF3QmpaVzUwY205cFpBQmpZVzV1YjNRZ2RYTmxJSE5oYlhCc1pTQnhkV0ZzYVdacFpYSWdiMjRnWVc0Z2FXNTBaWEptWVdObElHSnNiMk5yQUhOaGJYQnNaUUJqWVc1dWIzUWdkWE5sSUdsdWRtRnlhV0Z1ZENCeGRXRnNhV1pwWlhJZ2IyNGdZVzRnYVc1MFpYSm1ZV05sSUdKc2IyTnJBR2x1ZG1GeWFXRnVkQUJsYVhSb1pYSWdkR2hsSUdKc2IyTnJJRzVsWldSeklHRWdiRzlqWVhScGIyNHNJRzl5SUdGc2JDQnRaVzFpWlhKeklHNWxaV1FnWVNCc2IyTmhkR2x2Yml3Z2IzSWdibThnYldWdFltVnljeUJvWVhabElHRWdiRzlqWVhScGIyNEFZMkZ1Ym05MElHRndjR3g1SUhSdklHRWdZbXh2WTJzQWJYVnpkQ0JpWlNCaElHMTFiSFJwY0d4bElHOW1JSFJvWlNCdFpXMWlaWEluY3lCaGJHbG5ibTFsYm5RQVkyRnVibTkwSUd4cFpTQnBiaUJ3Y21WMmFXOTFjeUJ0WlcxaVpYSnpBR2xrWlc1MGFXWnBaWElnYm05MElIQnlaWFpwYjNWemJIa2daR1ZqYkdGeVpXUUFZMkZ1Ym05MElISmxMWEYxWVd4cFpua2dZU0JtZFc1amRHbHZiaUJ1WVcxbEFHTmhibTV2ZENCaFpHUWdjM1J2Y21GblpTd2dZWFY0YVd4cFlYSjVMQ0J0WlcxdmNua3NJR2x1ZEdWeWNHOXNZWFJwYjI0c0lHeGhlVzkxZEN3Z2IzSWdjSEpsWTJsemFXOXVJSEYxWVd4cFptbGxjaUIwYnlCaGJpQmxlR2x6ZEdsdVp5QjJZWEpwWVdKc1pRQmpZVzV1YjNRZ1kyaGhibWRsSUhGMVlXeHBabWxqWVhScGIyNGdZV1owWlhJZ2RYTmxBSFZ1YTI1dmQyNGdjbVZ4ZFdGc2FXWnBZMkYwYVc5dUFHTmhiaUJ2Ym14NUlHRndjR3g1SUhSdklHRnVJRzkxZEhCMWRBQmpZVzRnYjI1c2VTQmhjSEJzZVNCMGJ5QmhiaUJ2ZFhSd2RYUXNJRzl5SUhSdklHRnVJR2x1Y0hWMElHbHVJR0VnYm05dUxYWmxjblJsZUNCemRHRm5aUW9BWTJGdUlHOXViSGtnWVhCd2JIa2dkRzhnSjI5MWRDY0FZMkZ1Ym05MElHTm9ZVzVuWlNCd2NtVjJhVzkxYzJ4NUlITmxkQ0JzWVhsdmRYUWdkbUZzZFdVQVkyRnVJRzl1YkhrZ1lYQndiSGtnZEc4Z0oybHVKd0JqWVc1dWIzUWdZWEJ3YkhrZ2RHOGdhVzV3ZFhRQVkyRnVibTkwSUdOb1lXNW5aU0J3Y21WMmFXOTFjMng1SUhObGRDQnBibkIxZENCd2NtbHRhWFJwZG1VQVkyRnVibTkwSUdGd2NHeDVJSFJ2SUNkdmRYUW5BR05oYm01dmRDQmphR0Z1WjJVZ2NISmxkbWx2ZFhOc2VTQnpaWFFnYjNWMGNIVjBJSEJ5YVcxcGRHbDJaUUJqWVc1dWIzUWdZWEJ3YkhrZ2RHODZBR05oYm01dmRDQmphR0Z1WjJVZ2NISmxkbWx2ZFhOc2VTQnpaWFFnZG1WeWRHVjRJSE53WVdOcGJtY0FZMkZ1Ym05MElHTm9ZVzVuWlNCd2NtVjJhVzkxYzJ4NUlITmxkQ0IyWlhKMFpYZ2diM0prWlhJQVkyRnVibTkwSUdOb1lXNW5aU0J3Y21WMmFXOTFjMng1SUhObGRDQnphWHBsQUhSdmJ5QnNZWEpuWlRzZ2MyVmxJR2RzWDAxaGVFTnZiWEIxZEdWWGIzSnJSM0p2ZFhCVGFYcGxBSFJ2YnlCc1lYSm5aVHNnYzJWbElHZHNYMDFoZUUxbGMyaFhiM0pyUjNKdmRYQlRhWHBsVGxZQWRHOXZJR3hoY21kbE95QnpaV1VnWjJ4ZlRXRjRWR0Z6YTFkdmNtdEhjbTkxY0ZOcGVtVk9WZ0J3YjNOMFgyTnZkbVZ5WVdkbFgyTnZkbVZ5WVdkbEFHTmhibTV2ZENCamFHRnVaMlVnY0hKbGRtbHZkWE5zZVNCelpYUWdabkpoWjIxbGJuUWdjMmhoWkdWeUlHbHVkR1Z5Ykc5amF5QnZjbVJsY21sdVp3QmpZVzV1YjNRZ1ltVWdZbTkwYUNCemNHVmphV1pwWldRQVpHVnlhWFpoZEdsMlpWOW5jbTkxY0Y5eGRXRmtjMDVXSUdGdVpDQmtaWEpwZG1GMGFYWmxYMmR5YjNWd1gyeHBibVZoY2s1V0FISmxjWFZwY21WeklHeHZZMkZzWDNOcGVtVmZlQ0JoYm1RZ2JHOWpZV3hmYzJsNlpWOTVJSFJ2SUdKbElHMTFiSFJwY0d4bElHOW1JSFIzYndCa1pYSnBkbUYwYVhabFgyZHliM1Z3WDNGMVlXUnpUbFlBY21WeGRXbHlaWE1nZEc5MFlXd2daM0p2ZFhBZ2MybDZaU0IwYnlCaVpTQnRkV3gwYVhCc1pTQnZaaUJtYjNWeUFHUmxjbWwyWVhScGRtVmZaM0p2ZFhCZmJHbHVaV0Z5VGxZQVkyRnVibTkwSUhWelpTQmhkWGhwYkdsaGNua3NJRzFsYlc5eWVTd2dhVzUwWlhKd2IyeGhkR2x2Yml3Z2IzSWdjSEpsWTJsemFXOXVJSEYxWVd4cFptbGxjaUJwYmlCaElHUmxabUYxYkhRZ2NYVmhiR2xtYVdWeUlHUmxZMnhoY21GMGFXOXVJQ2hrWldOc1lYSmhkR2x2YmlCM2FYUm9JRzV2SUhSNWNHVXBBR05oYm01dmRDQjFjMlVnYjJabWMyVjBJRzl5SUdGc2FXZHVJSEYxWVd4cFptbGxjbk1nYVc0Z1lTQmtaV1poZFd4MElIRjFZV3hwWm1sbGNpQmtaV05zWVhKaGRHbHZiaUFvWkdWamJHRnlZWFJwYjI0Z2QybDBhQ0J1YnlCMGVYQmxLUUJrWldaaGRXeDBJSEYxWVd4cFptbGxjaUJ5WlhGMWFYSmxjeUFuZFc1cFptOXliU2NzSUNkaWRXWm1aWEluTENBbmFXNG5MQ0J2Y2lBbmIzVjBKeUJ6ZEc5eVlXZGxJSEYxWVd4cFptbGpZWFJwYjI0QVkyRnVibTkwSUdSbFkyeGhjbVVnWVNCa1pXWmhkV3gwTENCcGJtTnNkV1JsSUdFZ2RIbHdaU0J2Y2lCbWRXeHNJR1JsWTJ4aGNtRjBhVzl1QUdOaGJtNXZkQ0JrWldOc1lYSmxJR0VnWkdWbVlYVnNkQ3dnZFhObElHRWdablZzYkNCa1pXTnNZWEpoZEdsdmJnQnNiMk5oZEdsdmJpOWpiMjF3YjI1bGJuUXZhVzVrWlhnQVkyRnVibTkwSUdSbFkyeGhjbVVnWVNCa1pXWmhkV3gwTENCallXNGdiMjVzZVNCaVpTQjFjMlZrSUc5dUlHRWdZbXh2WTJzQVkyRnVibTkwSUdSbFkyeGhjbVVnWVNCa1pXWmhkV3gwTENCallXNGdiMjVzZVNCaVpTQjFjMlZrSUc5dUlHRWdjMk5oYkdGeUFHTmhibTV2ZENCb1lYWmxJSE4wWVhSbGJXVnVkSE1nWW1WbWIzSmxJR1pwY25OMElHTmhjMlV2WkdWbVlYVnNkQ0JzWVdKbGJBQnpkMmwwWTJnQVpIVndiR2xqWVhSbElHeGhZbVZzQUdSbFptRjFiSFFBWkhWd2JHbGpZWFJsWkNCMllXeDFaUUJqWVhObEFITjNhWFJqYUNCemRHRjBaVzFsYm5SekFHTnZibVJwZEdsdmJpQnRkWE4wSUdKbElHRWdjMk5oYkdGeUlHbHVkR1ZuWlhJZ1pYaHdjbVZ6YzJsdmJnQnNZWE4wSUdOaGMyVXZaR1ZtWVhWc2RDQnNZV0psYkNCdWIzUWdabTlzYkc5M1pXUWdZbmtnYzNSaGRHVnRaVzUwY3dBNk9nQkJxTGtMQzlVTzhRQUFBUElBQUFCMWMyVXRjM1J2Y21GblpTMWlkV1ptWlhJQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUIxYzJVdGRuVnNhMkZ1TFcxbGJXOXllUzF0YjJSbGJBQjFjMlV0ZG1GeWFXRmliR1V0Y0c5cGJuUmxjbk1BUjB4ZlJWaFVYMkoxWm1abGNsOXlaV1psY21WdVkyVXlBRWRNWDBWWVZGOW5jSFZmYzJoaFpHVnlOUUJIVEY5UFJWTmZaM0IxWDNOb1lXUmxjalVBY0c5cGJuUnpBR3hwYm1WekFHeHBibVZ6WDJGa2FtRmpaVzVqZVFCc2FXNWxYM04wY21sd0FIUnlhV0Z1WjJ4bGN3QjBjbWxoYm1kc1pYTmZZV1JxWVdObGJtTjVBSFJ5YVdGdVoyeGxYM04wY21sd0FIRjFZV1J6QUdsemIyeHBibVZ6QUc1dmJtVUFSMHhmUVUxRVgzUmxlSFIxY21WZloyRjBhR1Z5WDJKcFlYTmZiRzlrQUVkTVgwRlNRbDl6Y0dGeWMyVmZkR1Y0ZEhWeVpUSUFSMHhmUzBoU1gyMWxiVzl5ZVY5elkyOXdaVjl6WlcxaGJuUnBZM01BUjB4ZlJWaFVYM05oYlhCc1pYSnNaWE56WDNSbGVIUjFjbVZmWm5WdVkzUnBiMjV6QUVkTVgwVllWRjl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZaWGgwWlc1a1pXUmZkSGx3WlhOZmFXNTBPQUJIVEY5RldGUmZjMmhoWkdWeVgzTjFZbWR5YjNWd1gyVjRkR1Z1WkdWa1gzUjVjR1Z6WDJsdWRERTJBRWRNWDBWWVZGOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZlpYaDBaVzVrWldSZmRIbHdaWE5mYVc1ME5qUUFSMHhmUlZoVVgzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5bGVIUmxibVJsWkY5MGVYQmxjMTltYkc5aGRERTJBRWRNWDA5RlUxOUZSMHhmYVcxaFoyVmZaWGgwWlhKdVlXd0FSMHhmVDBWVFgwVkhURjlwYldGblpWOWxlSFJsY201aGJGOWxjM05zTXdCSFRGOUZXRlJmV1ZWV1gzUmhjbWRsZEFCSFRGOUZXRlJmWjJWdmJXVjBjbmxmYzJoaFpHVnlBRWRNWDA5RlUxOW5aVzl0WlhSeWVWOXphR0ZrWlhJQVIweGZSVmhVWDNSbGMzTmxiR3hoZEdsdmJsOXphR0ZrWlhJQVIweGZUMFZUWDNSbGMzTmxiR3hoZEdsdmJsOXphR0ZrWlhJQVIweGZSVmhVWDI1dmJuVnVhV1p2Y20xZmNYVmhiR2xtYVdWeUFFZE1YMFZZVkY5emFHRmtaWEpmYVc5ZllteHZZMnR6QUVkTVgwOUZVMTl6YUdGa1pYSmZhVzlmWW14dlkydHpBRWRNWDBGU1FsOTBaWE56Wld4c1lYUnBiMjVmYzJoaFpHVnlBRWRNWDBWWVZGOXpZMkZzWVhKZllteHZZMnRmYkdGNWIzVjBBRWRNWDBWWVZGOWlkV1ptWlhKZmNtVm1aWEpsYm1ObEFHVnhkV0ZzWDNOd1lXTnBibWNBWm5KaFkzUnBiMjVoYkY5bGRtVnVYM053WVdOcGJtY0FabkpoWTNScGIyNWhiRjl2WkdSZmMzQmhZMmx1WndCamR3QmpZM2NBUjB4ZlJWaFVYM0J2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVBWkdWd2RHaGZZVzU1QUdSbGNIUm9YMmR5WldGMFpYSUFaR1Z3ZEdoZmJHVnpjd0JrWlhCMGFGOTFibU5vWVc1blpXUUFjR2w0Wld4ZmFXNTBaWEpzYjJOclgyOXlaR1Z5WldRQWNHbDRaV3hmYVc1MFpYSnNiMk5yWDNWdWIzSmtaWEpsWkFCellXMXdiR1ZmYVc1MFpYSnNiMk5yWDI5eVpHVnlaV1FBYzJGdGNHeGxYMmx1ZEdWeWJHOWphMTkxYm05eVpHVnlaV1FBYzJoaFpHbHVaMTl5WVhSbFgybHVkR1Z5Ykc5amExOXZjbVJsY21Wa0FITm9ZV1JwYm1kZmNtRjBaVjlwYm5SbGNteHZZMnRmZFc1dmNtUmxjbVZrQUVkTVgwRlNRbDltY21GbmJXVnVkRjl6YUdGa1pYSmZhVzUwWlhKc2IyTnJBRWRNWDA1V1gzTm9ZV1JwYm1kZmNtRjBaVjlwYldGblpRQmliR1Z1WkY5emRYQndiM0owWDIxMWJIUnBjR3g1QUdKc1pXNWtYM04xY0hCdmNuUmZjMk55WldWdUFHSnNaVzVrWDNOMWNIQnZjblJmYjNabGNteGhlUUJpYkdWdVpGOXpkWEJ3YjNKMFgyUmhjbXRsYmdCaWJHVnVaRjl6ZFhCd2IzSjBYMnhwWjJoMFpXNEFZbXhsYm1SZmMzVndjRzl5ZEY5amIyeHZjbVJ2WkdkbEFHSnNaVzVrWDNOMWNIQnZjblJmWTI5c2IzSmlkWEp1QUdKc1pXNWtYM04xY0hCdmNuUmZhR0Z5Wkd4cFoyaDBBR0pzWlc1a1gzTjFjSEJ2Y25SZmMyOW1kR3hwWjJoMEFHSnNaVzVrWDNOMWNIQnZjblJmWkdsbVptVnlaVzVqWlFCaWJHVnVaRjl6ZFhCd2IzSjBYMlY0WTJ4MWMybHZiZ0JpYkdWdVpGOXpkWEJ3YjNKMFgyaHpiRjlvZFdVQVlteGxibVJmYzNWd2NHOXlkRjlvYzJ4ZmMyRjBkWEpoZEdsdmJnQmliR1Z1WkY5emRYQndiM0owWDJoemJGOWpiMnh2Y2dCaWJHVnVaRjl6ZFhCd2IzSjBYMmh6YkY5c2RXMXBibTl6YVhSNUFHSnNaVzVrWDNOMWNIQnZjblJmWVd4c1gyVnhkV0YwYVc5dWN3QkhURjlPVmw5ellXMXdiR1ZmYldGemExOXZkbVZ5Y21sa1pWOWpiM1psY21GblpRQkhURjlPVmw5MmFXVjNjRzl5ZEY5aGNuSmhlVElBUjB4ZlRsWmZZMjl0Y0hWMFpWOXphR0ZrWlhKZlpHVnlhWFpoZEdsMlpYTUFSMHhmVDFaU1gyMTFiSFJwZG1sbGR3QkhURjlQVmxKZmJYVnNkR2wyYVdWM01nQkhURjlPVmw5emRHVnlaVzlmZG1sbGQxOXlaVzVrWlhKcGJtY0FSMHhmUlZoVVgySjFabVpsY2w5eVpXWmxjbVZ1WTJWZmRYWmxZeklBUWNESUN3dkJBUUVBQUFBQ0FBQUFCQUFBQUFBQUFBQURBQUFBQmdBQUFIVGRBZ0I3M1FJQWdkMENBSkhkQWdDYzNRSUFwdDBDQUxyZEFnREozUUlBejkwQ0FGSGdBZ0JmNEFJQWQrQUNBTERnQWdDNjRBSUF5T0FDQU5QZ0FnRGo0QUlBKytBQ0FCWGhBZ0F1NFFJQVNlRUNBR2poQWdERDRRSUEydUVDQU8vaEFnQUY0Z0lBR3VJQ0FERGlBZ0JKNGdJQVllSUNBSG5pQWdDUjRnSUFxdUlDQU1MaUFnRFk0Z0lBOWVJQ0FBM2pBZ0FxNHdJQWdRQUFBQUFBQUFCM0FBQUFKZ0FBQUM0QVFaREtDd3NWVmdBQUFJVUFBQUFBQUFBQWV3QUFBQ29BQUFBeEFFR3d5Z3NMR1ZJQUFBQlVBQUFBZndBQUFBQUFBQUIxQUFBQUFBQUFBQ3dBUWRUS0N3c1ZUUUFBQUZRQUFBQ0RBQUFBQUFBQUFIa0FBQUFvQUVINHlnc0xFVkFBQUFCWUFBQUFmUUFBQURRQUFBQTNBRUdVeXdzTENWd0FBQUJmQUFBQWh3QkJxTXNMQ3dVekFBQUFOZ0JCdU1zTEM1ME1Xd0FBQUY0QUFBQlRkR0Z5ZEdsdVp5QndZWEp6WlFvQVJXNTBaWEpwYm1jZ2MzUmhkR1VnSldRS0FGTjBZV05ySUhOcGVtVWdhVzVqY21WaGMyVmtJSFJ2SUNWc2RRb0FtZzg3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9tRUFPLzQ3L2p2K08vNDcvZ1lBTy80Ny9qditPLzQ3L2p2K3pmNFAvenYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNzkvMThBSkFCOUFKSVhVZ0E3L3VyL08vNDcvanYrTy80eUVUditPLzQ3L2p2K2d3QTcvanYrMmdJNy9qditDd0E3L3BrQTVQOS9BRHYrQndBNy9wMEFPLzZTRnp2K08vNDcvcElYZ1FDR0FEditEUUE3L2trQU8vNDcvc2Nnb2dBNy9qditPLzZoQUpJWE8vNmpBRHYreS80Ny9qditHd0N2R2p2K0VBQnlCRHYrTy80Ny9qditvZ0FYQUR2K05Sd3hBRHYraWdBNy9sY0F4eURISU1jZ08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNUVBRHYrTy80Ny9xNEFQQUJOSXJBQU8vN0hJRHYrTy83QS9xOEFPLzZTRjQ0QXloSTcvcElYeHlBNy91VC9PLzZQQUR2K08vNTNBSUFBSUFBVkFDWUFuZ0NnQUtVQXd3RENBQklBdHdDN0hUdit1UUM0QUR2K08vNjhBTFFBdFFBNy9zUUF4UUMrQUVFZnhnREhJTHNBd1FCNkFEditPLzViQUR2K1h3RE1BTTBBTy80Ny9qditPLzQ3L2dvR08vNDcvanYrTy80Ny9qditPLzQ3L2p2K24vNnZBRFVjUlFBMUhEditPLzQxSEpJWE8vNnFBRHYrTy80Ny9rNEFPLzQ3L3NjZ3F3QTcvanYreHlEUEFEditPLzQ3L3NjZ08vNk9BS0lBWFFBNy9qditPLzVpRkR2K08vNDcvanYreHlESElNY2d4eURISU1jZ3h5REhJTWNneHlESElNY2d4eURISU1jZ3h5REhJTWNneHlBNy9qditPLzdPQUxFQU8vNmlCenYrTy80Ny9xSUhPLzdISUR2K08vNWtBTWNna0FBNy9qditPLzQ3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L3NjZ3h5QTcvanYrTy80Ny9qditPLzQ3L2pVY08vNk1BRHYrK2hVNy9qdiswUURRQUR2K08vNDcvbnNBcndDT0FEditPLzQ3L2p2K08vNTNBSGNBZ0FDQUFDQUFJQUFnQUNBQUZRQVZBQ1lBbmdDZ0FLVUF3d0RDQU1jZ08vN1dBRGdBTy82aUJ3SU9yQUJxREZBQU8vNVJBRHYrTy80Ny9qditPLzRwR1R2K08vNDcvanYra2dESElOY0FzUURVQU5BQXVnQ1NGOXNBM1FBNy9qditBZzdjQUR2K08vNDcvc2NnM2dBNy9qditPLzdZQURvSnh5QTcvdGtBNHdDMkFPRUEwZ283L3VVQU8vNDcvalVjTy80Ny9qditXUURISURvSjNBQTcvanYrb2djNy91QUEwQUE3L2p2K29nZmlBRHYrTy81U1pXRmthVzVuSUdFZ2RHOXJaVzQ2SUFCT2IzY2dZWFFnWlc1a0lHOW1JR2x1Y0hWMExnb0FRZUxYQ3d2RENnSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFFQUFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFEMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRWpBU1FCSlFFbUFTY0JLQUVwQVNvQkt3RXNBUzBCTGdFdkFUQUJNUUV5QVRNQk5BRTFBVFlCTndFNEFUa0JPZ0U3QVR3QlBRRStBVDhCUUFGQkFVSUJRd0ZFQVVVQlJnRkhBVWdCU1FGS0FVc0JUQUZOQVU0QlR3RlFBVkVCVWdGVEFWUUJWUUZXQVZjQldBRlpBVm9CV3dGY0FWMEJYZ0ZmQVdBQllRRmlBV01CWkFGbEFXWUJad0ZvQVdrQmFnRnJBV3dCYlFGdUFXOEJjQUZ4QVhJQmN3RjBBWFVCZGdGM0FYZ0JlUUY2QVhzQmZBRjlBWDRCZndHQUFZRUJnZ0dEQVlRQmhRR0dBWWNCaUFHSkFZb0Jpd0dNQVkwQmpnR1BBWkFCa1FHU0FaTUJsQUdWQVpZQmx3R1lBWmtCbWdFbGN5QUFUbVY0ZENCMGIydGxiaUJwY3dCQnN1SUxDN0tTQVVFQkFBREhBUUFBWmdFN0FUb0JhUUVBQUdzQmJBRkJBVTBCYndFRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFEc0FQQUFNQWpvQlB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUdJQVl3QmtBR1VBWmdCbkFHZ0FhUUJxQUdzQWJBQnRBRzRBYndCd0FIRUFjZ0J6QUhRQWRRQjJBSGNBZUFCNUFIb0Fld0I4QUgwQWZnQi9BSUFBZ1FDQ0FJTUFoQUNGQUlZQWh3Q0lBSWtBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2FBSnNBbkFDZEFKNEFud0NnQUtFQW9nQ2pBS1FBcFFDbUFLY0FxQUNwQUtvQXF3Q3NBSzBBcmdDdkFMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0F1Z0M3QUx3QXZRQytBTDhBd0FEQkFNSUF3d0RFQU1VQXhnREhBTWdBeVFES0FNc0F6QUROQU00QXp3RFFBTkVBMGdEVEFOUUExUURXQU5jQTJBRFpBTm9BMndEY0FOMEEzZ0RmQU9BQTRRRGlBT01BNUFEbEFPWUE1d0RvQU9rQTZnRHJBT3dBN1FEdUFPOEE4QUR4QVBJQTh3RDBBUFVBOWdEM0FQZ0ErUUQ2QVBzQS9BRDlBUDRBL3dBQUFRRUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTUJGQUVWQVJZQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4QklBRWhBU0lCSXdFa0FWVUJYUUdnQVhvQitnRUdBcGdCQ0FLTkFZQUJDd0pFQXNVQmtBSXBBU29CTGdGRUFWNEJQQUUrQVNVQkpnRTZBVjRCUEFGMkFVUUJQQUZ5QVpVQmxnRkRBU3NCTEFFOEFVUUJWUUU3QVhNQnVnR3NBa01CWGdGQkFWMEJWUUU3QVlVQlRBRk5BVkVCWGdGbEFWMEJaUUZvQVdVQlh3RW5BU2dCUEFGbEFXUUJaUUczQW5JQnlBRkRBVDBCZGdFN0FiNENRUUhvQVhJQjZnRkJBVG9CZGdFOEFUd0JTQUxKQWtBQmhRSGJBVDRCUXdFN0FVRUJPd0U3QVVRQmhRRkJBWkFCUVFGQkFVRUJPd0ZtQWtRQnd3RkJBWkFCUVFGRUFVRUJKZ0pCQVVRQnhRRkVBY2NCUkFFR0FrRUJDQUlWQWtRQkN3SXdBVEVCTWdFekFUUUJOUUUyQVRjQk9BRTVBVk1CVkFGVkFSa0NNZ0l6QWpRQ05RSkJBVU1CUVFGRUFVa0JTZ0ZMQWNNQnpRTEZBVVlCeHdGSUFZOENtd0kvQWNNQlFRSEZBVXdCeHdGQkFVSUJRUUZDQVM0Q0x3SStBVEFDTVFJaEFqNEJTZ0plQVR3QlhnRk9BbW9DTmdJM0FsNEJSQUZEQVF3Q1hnRTdBVG9CUEFGZUFWNEJVQUZQQVMwQkx3SERBazRCUFFFOEFUb0JQd0ZFQVVRQitnRmRBbDRDUWdFNkFUb0JPZ0VtQWtRQitnRm1Ba1FCT2dFNkFWNEJYZ0U3QVQwQkRBTFRBajBCWGdFNkFVRUJaZ0UvQVQwQkRBSTdBVG9CWGdFN0FUNEJRd0dLQWtRQk93RStBV29CUHdHUUFqNEJSQUU0QWlZQ09RSThBam9Db1FJN0Fzb0JLQUU5QWlZQ2RBSnlBWklDZGdFZ0FyMENkZ0hKQW5BQm13TEtBcElDckFJRUFxd0NCQUtqQWdRQy8vLy8vMFFDYWdMLy8vLy9TQUpsQWJnQy8vK2hBa1FDLy8reEF2Ly9TQUwvLy8vLy8vLy8vLy8vLy8vLy8vLy95QUwvLy8vLy8vLy8vLy8vLy8vREF2Ly8vLy8vLy8vLy8vLy8vLy8vLy85cUFwQUMvLy8vLy8vLy8vLy8vLy8vLy85cUF2Ly8vLy8vLy8vLy8vLy8vLy8vcHdMLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9yQUwvLy8vLy8vLy8vLy8vLy8vLy80OENrQUwvLzVJQy8vLy8vLy8vLy8vLy80OENrQUwvLzVJQy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vNmNDLy8vLy8vLy8vLytzQXYvLy8vLy8vNmNDLy8vLy8vLy8vLytzQXYvL3R3TC8vLy8vLy8vLy8vLy8vLysrQXYvL3R3TC8vLy8vLy8vLy8vLy8vLysrQXYvL3lRTC8vLy8vLy8vTkF2Ly8vLy8vLy8vL3lRTFRBdi8vLy8vTkF2Ly8vLy8vL3dBQS8vL1RBZ01BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzBRQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQVZZQi8vLy8vLy8vLy8vLy8vLy8vLy8vLzE4QllBRmhBV0lCWXdGa0FXVUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2NnRnpBWFFCZFFGMkFYY0IvLy8vLy8vLy8vLy8vLy8vLy8vLy80QUIvLytDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vL0p3RW9BZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vODZBZi8vUEFILy96NEJQd0gvLy8vLy8vLy8vMFFCUlFGR0FVY0JTQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBVllCLy8vLy8vLy9XZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQlpnRm5BV2dCYVFILy8yc0JiQUZ0QVc0QmJ3RndBWEVCY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQmdRR0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVNNQkpBSC8vLy8vSndFb0FmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84NkFmLy9QQUgvL3o0QlB3SC8vLy8vLy8vLy8wUUJSUUZHQVVjQlNBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOVNBVk1CVkFGVkFWWUIvLy8vLy8vL1dnRmJBVndCWFFGZUFWOEJZQUZoQVdJQll3RmtBV1VCWmdGbkFXZ0JhUUgvLzJzQmJBRnRBVzRCYndGd0FYRUJjZ0Z6QVhRQmRRRjJBWGNCZUFGNUFYb0Jld0Y4QVgwQmZnRi9BWUFCZ1FHQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBUU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy9Kd0VvQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzg2QWYvL1BBSC8vejRCLy8vLy8vLy8vLy8vLzBRQlJRRkdBVWNCU0FILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQVZZQi8vLy8vLy8vV2dGYkFWd0JYUUZlQVY4QllBRmhBV0lCWXdGa0FXVUJaZ0ZuQVdnQmFRSC8vMnNCYkFGdEFXNEJid0Z3QVhFQmNnRnpBWFFCZFFGMkFYY0JlQUY1QVhvQmV3RjhBWDBCZmdGL0FZQUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vL0p3RW9BZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vODZBZi8vUEFILy96NEIvLy8vLy8vLy8vLy8vMFFCUlFGR0FVY0JTQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBVllCLy8vLy8vLy9XZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQlpnRm5BV2dCYVFILy8yc0JiQUZ0QVc0QmJ3RndBWEVCY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQmdRR0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVNNQkpBSC8vLy8vSndFb0FmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84NkFmLy9QQUgvLy8vLy8vLy8vLy8vLy8vLy8wUUJSUUZHQVVjQlNBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOVNBVk1CVkFGVkFWWUIvLy8vLy8vL1dnRmJBVndCWFFGZUFWOEJZQUZoQVdJQll3RmtBV1VCWmdGbkFXZ0JhUUgvLzJzQmJBRnRBVzRCYndGd0FYRUJjZ0Z6QVhRQmRRRjJBWGNCZUFGNUFYb0Jld0Y4QVgwQmZnRi9BWUFCZ1FHQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBUU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy9Kd0VvQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzg2QWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzBRQlJRRkdBVWNCU0FILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQVZZQi8vLy8vLy8vV2dGYkFWd0JYUUZlQVY4QllBRmhBV0lCWXdGa0FXVUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2NnRnpBWFFCZFFGMkFYY0JlQUY1QVhvQmV3RjhBWDBCZmdGL0FZQUIvLytDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vL0p3RW9BZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vODZBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vUlFGR0FVY0JTQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBZi8vLy8vLy8vLy9XZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQi8vK0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVNNQkpBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8wUUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOVNBVk1CVkFGVkFWWUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8xOEJZQUZoQVdJQll3RmtBV1VCLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9jZ0Z6QVhRQmRRRjJBWGNCLy8vLy8vLy8vLy8vLy8vLy8vLy8vNEFCLy8rQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBUU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzBRQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQWYvLy8vLy8vLy8vLy8vLy8vLy8vLzllQVY4QllBRmhBV0lCWXdGa0FXVUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2NnRnpBWFFCZFFGMkFYY0IvLy8vLy8vLy8vLy8vLy8vLy8vLy80QUIvLytDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9Qd0gvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMThCWUFGaEFXSUJZd0ZrQVdVQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vY2dGekFYUUJkUUYyQVhjQi8vLy8vLy8vLy8vLy8vLy8vLy8vLzRBQi8vK0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVNNQkpBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1B3SC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOVNBVk1CVkFGVkFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8xOEJZQUZoQVdJQll3RmtBV1VCLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9jZ0Z6QVhRQmRRRjJBWGNCLy8vLy8vLy8vLy8vLy8vLy8vLy8vNEFCLy8rQ0FZTUJoQUdGQVlZQmh3R0lBWWtCaWdHTEFZd0JqUUdPQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBUU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vUHdILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85U0FWTUJWQUZWQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzE4QllBRmhBV0lCWXdGa0FXVUIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL2NnRnpBWFFCZFFGMkFYY0IvLy8vLy8vLy8vLy8vLy8vLy8vLy80QUIvLytDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFRTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlTQVZNQlZBRlZBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMThCWUFGaEFXSUJZd0ZrQVdVQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vY2dGekFYUUJkUUYyQVhjQi8vLy8vLy8vLy8vLy8vLy8vLy8vLzRBQi8vK0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVFRQUJRQUdBQWNBQ0FBSkFBb0FDd0FNQUEwQURnQVBBQkFBRVFBU0FCTUFGQUFWQUJZQUZ3QVlBQmtBR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBUC8vLy84L0FFQUFRUUJDQUVNQVJBQkZBRVlBUndCSUFFa0FTZ0JMQUV3QVRRQk9BRThBVUFCUkFGSUFVd0JVQUZVQVZnQlhBRmdBV1FCYUFGc0FYQUJkQUY0QVh3QmdBR0VBWWdCakFHUUFaUUJtQUdjQWFBQnBBR29BYXdCc0FHMEFiZ0J2QUhBQWNRQnlBSE1BZEFCMUFIWUFkd0I0QUhrQWVnQjdBSHdBZlFCK0FIOEFnQUNCQUlJQWd3Q0VBSVVBaGdDSEFJZ0FpUUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKb0Ftd0NjQUowQW5nQ2ZBS0FBb1FDaUFLTUFwQUNsQUtZQXB3Q29BS2tBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzZBTHNBdkFDOUFMNEF2d0RBQU1FQXdnRERBTVFBeFFER0FNY0F5QURKQU1vQXl3RE1BTTBBemdEUEFOQUEwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dBNlFEcUFPc0E3QUR0QU80QTd3RHdBUEVBOGdEekFQUUE5UUQyQVBjQStBRDVBUG9BK3dEOEFQMEEvZ0QvQUFBQkFRRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV3RVVBUlVCRmdFWEFSZ0JHUUVhQVJzQkhBRWRBUjRCSHdFZ0FTRUJJZ0VqQVNRQi8vLy8veWNCS0FILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vT2dILy8vLy8vLzgrQVQ4Qi8vLy8vLy8vLy8vLy8wVUJSZ0ZIQVVnQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzFvQld3RmNBVjBCWGdGZkFmLy8vLy8vLy8vL1pBRmxBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vM2dCZVFGNkFYc0JmQUY5QVg0QmZ3SC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vK0pBUVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFQLy8vLzgvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRWpBU1FCLy8vLy95Y0JLQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9PZ0gvLy8vL1BRSC8vLy8vLy8vLy8vLy8vLy8vLzBVQlJnRkhBVWdCLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMW9CV3dGY0FWMEJYZ0ZmQWYvLy8vLy8vLy8vWkFGbEFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8zZ0JlUUY2QVhzQmZBRjlBWDRCZndILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rSkFRUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QVAvLy8vOC9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFakFTUUIvLy8vL3ljQktBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL09nSC8vLy8vLy84K0FmLy8vLy8vLy8vLy8vLy8vMFVCUmdGSEFVZ0IvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8xb0JXd0ZjQVYwQlhnRmZBZi8vLy8vLy8vLy9aQUZsQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzNnQmVRRjZBWHNCZkFGOUFYNEJmd0gvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLytKQVFRQUJRQUdBQWNBQ0FBSkFBb0FDd0FNQUEwQURnQVBBQkFBRVFBU0FCTUFGQUFWQUJZQUZ3QVlBQmtBR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBUC8vLy84L0FFQUFRUUJDQUVNQVJBQkZBRVlBUndCSUFFa0FTZ0JMQUV3QVRRQk9BRThBVUFCUkFGSUFVd0JVQUZVQVZnQlhBRmdBV1FCYUFGc0FYQUJkQUY0QVh3QmdBR0VBWWdCakFHUUFaUUJtQUdjQWFBQnBBR29BYXdCc0FHMEFiZ0J2QUhBQWNRQnlBSE1BZEFCMUFIWUFkd0I0QUhrQWVnQjdBSHdBZlFCK0FIOEFnQUNCQUlJQWd3Q0VBSVVBaGdDSEFJZ0FpUUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKb0Ftd0NjQUowQW5nQ2ZBS0FBb1FDaUFLTUFwQUNsQUtZQXB3Q29BS2tBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzZBTHNBdkFDOUFMNEF2d0RBQU1FQXdnRERBTVFBeFFER0FNY0F5QURKQU1vQXl3RE1BTTBBemdEUEFOQUEwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dBNlFEcUFPc0E3QUR0QU80QTd3RHdBUEVBOGdEekFQUUE5UUQyQVBjQStBRDVBUG9BK3dEOEFQMEEvZ0QvQUFBQkFRRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV3RVVBUlVCRmdFWEFSZ0JHUUVhQVJzQkhBRWRBUjRCSHdFZ0FTRUJJZ0VqQVNRQi8vLy8veWNCS0FILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vT2dILy8vLy9QUUgvLy8vLy8vLy8vLy8vLy8vLy8wVUJSZ0ZIQVVnQi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzFvQld3RmNBVjBCWGdGZkFmLy8vLy8vLy8vL1pBRmxBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vM2dCZVFGNkFYc0JmQUY5QVg0QmZ3SC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vK0pBUVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFQLy8vLzgvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRWpBU1FCLy8vLy95Y0JLQUgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9PZ0gvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlFQVVVQlJnRkhBVWdCLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMW9CV3dGY0FWMEJYZ0ZmQWYvLy8vLy8vLy8vWkFGbEFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8zZ0JlUUY2QVhzQmZBRjlBWDRCZndILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rSkFRUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QVAvLy8vOC9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFakFTUUIvLy8vL3ljQktBSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL09nSC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMFVCUmdGSEFVZ0IvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8xb0JXd0ZjQVYwQlhnRmZBZi8vLy8vLy8vLy9aQUZsQWYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzNnQmVRRjZBWHNCZkFGOUFYNEJmd0gvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLytKQVFRQUJRQUdBQWNBQ0FBSkFBb0FDd0FNQUEwQURnQVBBQkFBRVFBU0FCTUFGQUFWQUJZQUZ3QVlBQmtBR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBUC8vLy84L0FFQUFRUUJDQUVNQVJBQkZBRVlBUndCSUFFa0FTZ0JMQUV3QVRRQk9BRThBVUFCUkFGSUFVd0JVQUZVQVZnQlhBRmdBV1FCYUFGc0FYQUJkQUY0QVh3QmdBR0VBWWdCakFHUUFaUUJtQUdjQWFBQnBBR29BYXdCc0FHMEFiZ0J2QUhBQWNRQnlBSE1BZEFCMUFIWUFkd0I0QUhrQWVnQjdBSHdBZlFCK0FIOEFnQUNCQUlJQWd3Q0VBSVVBaGdDSEFJZ0FpUUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKb0Ftd0NjQUowQW5nQ2ZBS0FBb1FDaUFLTUFwQUNsQUtZQXB3Q29BS2tBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzZBTHNBdkFDOUFMNEF2d0RBQU1FQXdnRERBTVFBeFFER0FNY0F5QURKQU1vQXl3RE1BTTBBemdEUEFOQUEwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dBNlFEcUFPc0E3QUR0QU80QTd3RHdBUEVBOGdEekFQUUE5UUQyQVBjQStBRDVBUG9BK3dEOEFQMEEvZ0QvQUFBQkFRRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV3RVVBUlVCRmdFWEFSZ0JHUUVhQVJzQkhBRWRBUjRCSHdFZ0FTRUJJZ0VqQVNRQi8vLy8veWNCS0FILy8zOEIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vK05BZi8vT2dILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8wVUJSZ0ZIQVVnQm5nR2ZBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzFvQld3RmNBVjBCWGdGZkFmLy8vLy8vLy8vL1pBRmxBZi8vLy8rOUFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy95QUgvLy8vLy8vLy8vM2dCZVFGNkFYc0JmQUY5QVg0QmZ3SC8vLy8vLy8vLy8vLy8vLy9iQWYvLy8vK0pBZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veDRDLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9Ld0lzQWkwQ0xnSXZBakFDTVFJeUFqTUNOQUkxQWpZQ053STRBamtDT2dJN0Fqd0NQUUwvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLytoQWdCQjhQUU1DNlFKWVFFZUFsQUJKZ0pTQWVFQnlRRnJBZVFCWUFIbEFlWUJ5Z0VmQXVrQkFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BYWdKc0FUMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRjJBWDBCRWdLWkFXRUNaUUlKQW1jQzJnSEJBV2tDandJbEFxWUNNZ0l6QWowQ2JRR0hBWTBCYVFFd0FqRUNsd0Y2QVkwQmZRR09BZHNCZGdFRkFnY0NtQUUyQWpjQ2pRSGNBWGNCeXdHSUFSc0NwZ0lHQW00QnpBRitBV0FCY1FIREFUUUNOUUkrQW1vQllRRmdBVkFCaEFGU0FTa0JFd0lVQXRzQllBRXVBUzhCeEFKM0FTY0NDd0tpQW5jQkdBTE1BcU1DVFFKZ0FVOENHUUxlLzJBQkZRTGJBWkVDeEFJV0FzUUJRUUthQVdZQ2JBS2JBYTBDcmdLY0FXQUJYZ0wwQVY0Q1hnSjRBYzhDbVFKNUFYMEJEZ0x6QVY0Q0R3SmVBaVVDZEFKZkFzTUJkUUxEQVc4QkNRSmVBZ2tDYmdLVUFna0NVZ0pUQWxRQ1ZRSldBbGNDV0FKWkFsb0NXd0lsQVNZQkp3RndBbjRDZndLQUFvRUNkQUpjQW5JQm5nSXJBaXdDTFFJZ0F0TUN4QUV1QXNRQkx3SmhBckFDbWdKZ0Fac0NZQUYvQVdBQlhnS1dBbDRDc1FKNkFuc0NoZ0Y4QW4wQ2N3S1FBWk1DaXdHTkFaVUJsUUlsQW9JQ2d3S1dBY0lCeUFIREFRMENGd0ljQXRzQklRSXFBamdDT1FJN0Fqd0N6Z0k2QWo4Q1FnSkZBa01DUmdKSEF2UUJsd0tZQWxBQ1NRSktBazRDd3dGTEF2TUJDUUpSQXQzLzMvOXJBbThDNVArTEFzUUJZUUtkQW93Q29RSmVBcWtDdFFLekFtQUJ0d0s0QXJZQ3dnTHgvY01Db0FMSUFza0MzZ0hLQXRZQ3BRTE5BdFVDaEFMRUFZVUNpQUtHQXJJQ2h3SXBBbWdCaVFKZ0FaOENrZ0dxQXBNQmNnTExBcFFCMFFLUkFRa0MwZ0tyQXJrQ1lnS2xBbU1DdEFKa0FnQUFBQUQwQWNNQkFBQUFBUFFCZ3dISEFnQUFKd0x6QVFBQXdRSUFBUE1CQUVHay9nd0xBdEFDQUVHeS9nd0xBZ2tDQUVIRS9nd0xCTVFCcHdJQVFkYitEQXNDWUFFQVFlYitEQXNDZlFFQVFmNytEQXNDcHdJQVFZNy9EQXNJOUFIMEFRQUE5QUVBUWFEL0RBc0k4d0h6QVFBQTh3RUFRYjcvREFzQ2ZnRUFRY2ovREFzSzlBRUFBQUFBQUFCZ0FRQkIydjhNQ3diekFRQUE5QUVBUWV6L0RBc0c5QUVBQVBNQkFFSCsvd3dMRHZNQkFBRDBBUUFBQUFBQUFQUUJBRUdVZ0EwTDJnVHpBZlFCQUFBQUFQTUJBQUFBQUFBQWdnRUFBUE1CQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFRQkJySVVOQ3dJakFRQkJ5SVVOQ3dva0FTVUJKZ0VuQVNnQkFFSGloUTBMRGlrQktnRXJBU3dCTFFFdUFTOEJBRUdJaGcwTEREQUJNUUV5QVRNQk5BRTFBUUJCcElZTkM0SUZOZ0VBQURjQk9BRTVBVG9CT3dFOEFUMEJQZ0UvQVVBQlFRRkNBVU1CUkFGRkFVWUJSd0ZJQVVrQlNnRkxBVXdCVFFGT0FVOEJBUUFDQUFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVFBQUFBQ2VBWjhCQUVISWl3MExES0FCQUFEZEFRQUEzZ0hmQVFCQjNJc05Dd3JnQWFFQm9nR2pBYVFCQUVINGl3MEwzZ1VrQVNVQkpnRW5BU2dCQUFBQUFBQUFwUUdtQWFjQnFBR3BBU2tCS2dFckFTd0JMUUV1QVM4QjRRSGlBZU1CNUFFQUFPVUI1Z0huQWVnQjZRSHFBZXNCTUFFeEFUSUJNd0UwQVRVQnFnR3JBYXdCclFHdUFhOEJzQUd4QVRZQjdBRTNBVGdCT1FFNkFUc0JQQUU5QVQ0QlB3RkFBVUVCUWdGREFVUUJSUUZHQVVjQlNBRkpBVW9CU3dGTUFVMEJUZ0ZQQVFFQUFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFEMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRUFBQUFBbmdHZkFRQkIrSkVOQ3d5Z0FRQUEzUUVBQU40QllBSUFRWXlTRFFzSzRBR2hBYUlCb3dHa0FRQkJxSklOQzk0RkpBRWxBU1lCSndFb0FRQUFBQUFBQUtVQnBnR25BYWdCcVFFcEFTb0JLd0VzQVMwQkxnRXZBZUVCNGdIakFlUUJBQURsQWVZQjV3SG9BZWtCNmdIckFUQUJNUUV5QVRNQk5BRTFBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRRTJBZXdCTndFNEFUa0JPZ0U3QVR3QlBRRStBVDhCUUFGQkFVSUJRd0ZFQVVVQlJnRkhBVWdCU1FGS0FVc0JUQUZOQVU0QlR3RUJBQUlBQXdBRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFEc0FQQUE5QUQ0QVB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUdJQVl3QmtBR1VBWmdCbkFHZ0FhUUJxQUdzQWJBQnRBRzRBYndCd0FIRUFjZ0J6QUhRQWRRQjJBSGNBZUFCNUFIb0Fld0I4QUgwQWZnQi9BSUFBZ1FDQ0FJTUFoQUNGQUlZQWh3Q0lBSWtBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2FBSnNBbkFDZEFKNEFud0NnQUtFQW9nQ2pBS1FBcFFDbUFLY0FxQUNwQUtvQXF3Q3NBSzBBcmdDdkFMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0F1Z0M3QUx3QXZRQytBTDhBd0FEQkFNSUF3d0RFQU1VQXhnREhBTWdBeVFES0FNc0F6QUROQU00QXp3RFFBTkVBMGdEVEFOUUExUURXQU5jQTJBRFpBTm9BMndEY0FOMEEzZ0RmQU9BQTRRRGlBT01BNUFEbEFPWUE1d0RvQU9rQTZnRHJBT3dBN1FEdUFPOEE4QUR4QVBJQTh3RDBBUFVBOWdEM0FQZ0ErUUQ2QVBzQS9BRDlBUDRBL3dBQUFRRUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTUJGQUVWQVJZQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4QklBRWhBU0lCQUFBQUFKNEJud0VBUWFpWURRc0tvQUVBQU4wQkFBRGVBUUJCdkpnTkN3cmdBYUVCb2dHakFhUUJBRUhZbUEwTDNnVWtBU1VCSmdFbkFTZ0JBQUFBQUFBQXBRR21BYWNCcUFHcEFTa0JLZ0VyQVN3QkxRRXVBUzhCNFFIaUFlTUI1QUVBQU9VQjVnSG5BZWdCNlFIcUFlc0JNQUV4QVRJQk13RTBBVFVCcWdHckFhd0JyUUd1QWE4QnNBR3hBVFlCN0FFM0FUZ0JPUUU2QVRzQlBBRTlBVDRCUHdGQUFVRUJRZ0ZEQVVRQlJRRkdBVWNCU0FGSkFVb0JTd0ZNQVUwQlRnRlBBUUVBQWdBREFBUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQS9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFQUFBQUFuZ0dmQVFCQjJKNE5Dd3FnQVFBQTNRRUFBSkFCQUVIc25nMExDdUFCb1FHaUFhTUJwQUVBUVlpZkRRdmVCU1FCSlFFbUFTY0JLQUVBQUFBQUFBQ2xBYVlCcHdHb0Fha0JLUUVxQVNzQkxBRXRBUzRCTHdIaEFlSUI0d0hrQVFBQTVRSG1BZWNCNkFIcEFlb0I2d0V3QVRFQk1nRXpBVFFCTlFHcUFhc0JyQUd0QWE0QnJ3R3dBYkVCTmdIc0FUY0JPQUU1QVRvQk93RThBVDBCUGdFL0FVQUJRUUZDQVVNQlJBRkZBVVlCUndGSUFVa0JTZ0ZMQVV3QlRRRk9BVThCQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFRQUFBQUNlQVo4QkFFR0lwUTBMQnFBQkFBRGRBUUJCbktVTkN3cmdBYUVCb2dHakFhUUJBRUc0cFEwTDNnVWtBU1VCSmdFbkFTZ0JBQUFBQUFBQXBRR21BYWNCcUFHcEFTa0JLZ0VyQVN3QkxRRXVBUzhCNFFIaUFlTUI1QUVBQU9VQjVnSG5BZWdCNlFIcUFlc0JNQUV4QVRJQk13RTBBVFVCcWdHckFhd0JyUUd1QWE4QnNBR3hBVFlCN0FFM0FUZ0JPUUU2QVRzQlBBRTlBVDRCUHdGQUFVRUJRZ0ZEQVVRQlJRRkdBVWNCU0FGSkFVb0JTd0ZNQVUwQlRnRlBBUUVBQWdBREFBUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQS9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFQUFBQUFuZ0dmQVFCQnVLc05Dd0tnQVFCQnpLc05Dd3JnQWFFQm9nR2pBYVFCQUVIb3F3MExLQ1FCSlFFbUFTY0JLQUVBQUFBQUFBQ2xBYVlCcHdHb0Fha0JLUUVxQVNzQkxBRXRBUzRCTHdFQVFhaXNEUXVlQlRBQk1RRXlBVE1CTkFFMUFhb0Jxd0dzQWEwQnJnR3ZBYkFCc1FFMkFRQUFOd0U0QVRrQk9nRTdBVHdCUFFFK0FUOEJRQUZCQVVJQlF3RkVBVVVCUmdGSEFVZ0JTUUZLQVVzQlRBRk5BVTRCVHdFQkFBSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBRWdBVEFCUUFGUUFXQUJjQUdBQVpBQm9BR3dBY0FCMEFIZ0FmQUNBQUlRQWlBQ01BSkFBbEFDWUFKd0FvQUNrQUtnQXJBQ3dBTFFBdUFDOEFNQUF4QURJQU13QTBBRFVBTmdBM0FEZ0FPUUE2QURzQVBBQTlBRDRBUHdCQUFFRUFRZ0JEQUVRQVJRQkdBRWNBU0FCSkFFb0FTd0JNQUUwQVRnQlBBRkFBVVFCU0FGTUFWQUJWQUZZQVZ3QllBRmtBV2dCYkFGd0FYUUJlQUY4QVlBQmhBR0lBWXdCa0FHVUFaZ0JuQUdnQWFRQnFBR3NBYkFCdEFHNEFid0J3QUhFQWNnQnpBSFFBZFFCMkFIY0FlQUI1QUhvQWV3QjhBSDBBZmdCL0FJQUFnUUNDQUlNQWhBQ0ZBSVlBaHdDSUFJa0FpZ0NMQUl3QWpRQ09BSThBa0FDUkFKSUFrd0NVQUpVQWxnQ1hBSmdBbVFDYUFKc0FuQUNkQUo0QW53Q2dBS0VBb2dDakFLUUFwUUNtQUtjQXFBQ3BBS29BcXdDc0FLMEFyZ0N2QUxBQXNRQ3lBTE1BdEFDMUFMWUF0d0M0QUxrQXVnQzdBTHdBdlFDK0FMOEF3QURCQU1JQXd3REVBTVVBeGdESEFNZ0F5UURLQU1zQXpBRE5BTTRBendEUUFORUEwZ0RUQU5RQTFRRFdBTmNBMkFEWkFOb0Eyd0RjQU4wQTNnRGZBT0FBNFFEaUFPTUE1QURsQU9ZQTV3RG9BT2tBNmdEckFPd0E3UUR1QU84QThBRHhBUElBOHdEMEFQVUE5Z0QzQVBnQStRRDZBUHNBL0FEOUFQNEEvd0FBQVFFQkFnRURBUVFCQlFFR0FRY0JDQUVKQVFvQkN3RU1BUTBCRGdFUEFSQUJFUUVTQVJNQkZBRVZBUllCRndFWUFSa0JHZ0ViQVJ3QkhRRWVBUjhCSUFFaEFTSUJBQUFBQUo0Qm53RUFRZWl4RFFzQ29BRUFRZjZ4RFFzSW9RR2lBYU1CcEFFQVFaaXlEUXNJSkFFbEFTWUJKd0VBUWFpeURRc1lwUUdtQWFjQnFBR3BBU2tCS2dFckFTd0JMUUV1QVM4QkFFSFlzZzBMbGdVd0FURUJNZ0V6QVRRQk5RR3FBYXNCckFHdEFhNEJyd0d3QWJFQk5nRUFBRGNCT0FFNUFUb0JPd0U4QVQwQlBnRS9BVUFCUVFGQ0FVTUJSQUZGQVVZQlJ3RklBVWtCU2dGTEFVd0JUUUZPQVU4QkFRQUNBQU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBUUJCckxnTkN3SWpBUUJCeUxnTkN3b2tBU1VCSmdFbkFTZ0JBRUhpdUEwTERpa0JLZ0VyQVN3QkxRRXVBUzhCQUVHSXVRMExEREFCTVFFeUFUTUJOQUUxQVFCQnBMa05DL29FTmdFQUFEY0JPQUU1QVRvQk93RThBVDBCUGdFL0FVQUJRUUZDQVVNQlJBRkZBVVlCUndGSUFVa0JTZ0ZMQVV3QlRRRk9BVThCQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFRQkIzTDROQ3dKN0FRQkIrTDROQ3dna0FTVUJKZ0VuQVFCQmtMOE5DeEI4QVNrQktnRXJBU3dCTFFFdUFTOEJBRUc0dncwTEREQUJNUUV5QVRNQk5BRTFBUUJCMUw4TkMvb0VOZ0VBQURjQk9BRTVBVG9CT3dFOEFUMEJQZ0UvQVVBQlFRRkNBVU1CUkFGRkFVWUJSd0ZJQVVrQlNnRkxBVXdCVFFGT0FVOEJBUUFDQUFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQTdBRHdBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVFCQmdzVU5Dd0lrQWdCQnFNVU5Dd2drQVNVQkpnRW5BUUJCd3NVTkN3NHBBU29CS3dFc0FTMEJMZ0V2QVFCQjZNVU5Dd3d3QVRFQk1nRXpBVFFCTlFFQVFZVEdEUXY2QkRZQkFBQTNBVGdCT1FFNkFUc0JQQUU5QVQ0QlB3RkFBVUVCUWdGREFVUUJSUUZHQVVjQlNBRkpBVW9CU3dGTUFVMEJUZ0ZQQVFFQUFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFEMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRUFRYkxMRFFzQ2RnSUFRZGpMRFFzSUpBRWxBU1lCSndFQVFmTExEUXNPS1FFcUFTc0JMQUV0QVM0Qkx3RUFRWmpNRFFzTU1BRXhBVElCTXdFMEFUVUJBRUcwekEwTCtnUTJBUUFBTndFNEFUa0JPZ0U3QVR3QlBRRStBVDhCUUFGQkFVSUJRd0ZFQVVVQlJnRkhBVWdCU1FGS0FVc0JUQUZOQVU0QlR3RUJBQUlBQXdBRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFEc0FQQUE5QUQ0QVB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUdJQVl3QmtBR1VBWmdCbkFHZ0FhUUJxQUdzQWJBQnRBRzRBYndCd0FIRUFjZ0J6QUhRQWRRQjJBSGNBZUFCNUFIb0Fld0I4QUgwQWZnQi9BSUFBZ1FDQ0FJTUFoQUNGQUlZQWh3Q0lBSWtBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2FBSnNBbkFDZEFKNEFud0NnQUtFQW9nQ2pBS1FBcFFDbUFLY0FxQUNwQUtvQXF3Q3NBSzBBcmdDdkFMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0F1Z0M3QUx3QXZRQytBTDhBd0FEQkFNSUF3d0RFQU1VQXhnREhBTWdBeVFES0FNc0F6QUROQU00QXp3RFFBTkVBMGdEVEFOUUExUURXQU5jQTJBRFpBTm9BMndEY0FOMEEzZ0RmQU9BQTRRRGlBT01BNUFEbEFPWUE1d0RvQU9rQTZnRHJBT3dBN1FEdUFPOEE4QUR4QVBJQTh3RDBBUFVBOWdEM0FQZ0ErUUQ2QVBzQS9BRDlBUDRBL3dBQUFRRUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTUJGQUVWQVJZQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4QklBRWhBU0lCQUVIaTBRMExBcHdDQUVHSTBnMExDQ1FCSlFFbUFTY0JBRUdpMGcwTERpa0JLZ0VyQVN3QkxRRXVBUzhCQUVISTBnMExEREFCTVFFeUFUTUJOQUUxQVFCQjVOSU5DL29FTmdFQUFEY0JPQUU1QVRvQk93RThBVDBCUGdFL0FVQUJRUUZDQVVNQlJBRkZBVVlCUndGSUFVa0JTZ0ZMQVV3QlRRRk9BVThCQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFRQkJ1TmdOQ3dna0FTVUJKZ0VuQVFCQjB0Z05DdzRwQVNvQkt3RXNBUzBCTGdFdkFRQkIrTmdOQ3d3d0FURUJNZ0V6QVRRQk5RRUFRWlRaRFF1QUJUWUJBQUEzQVRnQk9RRTZBVHNCUEFFOUFUNEJQd0ZBQVVFQlFnRkRBVVFCUlFGR0FVY0JTQUZKQVVvQlN3Rk1BVTBCVGdGUEFRSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBRWdBVEFCUUFGUUFXQUJjQUdBQVpBQm9BR3dBY0FCMEFIZ0FmQUNBQUlRQWlBQ01BSkFBbEFDWUFKd0FvQUNrQUtnQXJBQ3dBTFFBdUFDOEFNQUF4QURJQU13QTBBRFVBTmdBM0FEZ0FPUUE2QUFBQUFBQTlBRDRBUHdCQUFFRUFRZ0JEQUVRQVJRQkdBRWNBU0FCSkFFb0FTd0JNQUUwQVRnQlBBRkFBVVFCU0FGTUFWQUJWQUZZQVZ3QllBRmtBV2dCYkFGd0FYUUJlQUY4QVlBQmhBR0lBWXdCa0FHVUFaZ0JuQUdnQWFRQnFBR3NBYkFCdEFHNEFid0J3QUhFQWNnQnpBSFFBZFFCMkFIY0FlQUI1QUhvQWV3QjhBSDBBZmdCL0FJQUFnUUNDQUlNQWhBQ0ZBSVlBaHdDSUFJa0FpZ0NMQUl3QWpRQ09BSThBa0FDUkFKSUFrd0NVQUpVQWxnQ1hBSmdBbVFDYUFKc0FuQUNkQUo0QW53Q2dBS0VBb2dDakFLUUFwUUNtQUtjQXFBQ3BBS29BcXdDc0FLMEFyZ0N2QUxBQXNRQ3lBTE1BdEFDMUFMWUF0d0M0QUxrQXVnQzdBTHdBdlFDK0FMOEF3QURCQU1JQXd3REVBTVVBeGdESEFNZ0F5UURLQU1zQXpBRE5BTTRBendEUUFORUEwZ0RUQU5RQTFRRFdBTmNBMkFEWkFOb0Eyd0RjQU4wQTNnRGZBT0FBNFFEaUFPTUE1QURsQU9ZQTV3RG9BT2tBNmdEckFPd0E3UUR1QU84QThBRHhBUElBOHdEMEFQVUE5Z0QzQVBnQStRRDZBUHNBL0FEOUFQNEEvd0FBQVFFQkFnRURBUVFCQlFFR0FRY0JDQUVKQVFvQkN3RU1BUTBCRGdFUEFSQUJFUUVTQVJNQkZBRVZBUllCRndFWUFSa0JHZ0ViQVJ3QkhRRWVBUjhCSUFFaEFTSUJBQUFBQUo0Qm53RUFRYmJlRFFzTW9BRUFBQUFBQUFBSUFxOENBRUhNM2cwTENLRUJvZ0dqQWFRQkFFSDIzZzBMREtVQnBnR25BYWdCcVFFcEFRQkJpdDhOQ3dRdUFTOEJBRUd5M3cwTEVLb0Jxd0dzQWEwQnJnR3ZBYkFCc1FFQVFkVGZEUXZNQkQ0QkFnQURBQVFBQlFBR0FBY0FDQUFKQUFvQUN3QU1BQTBBRGdBUEFCQUFFUUFTQUJNQUZBQVZBQllBRndBWUFCa0FHZ0FiQUJ3QUhRQWVBQjhBSUFBaEFDSUFJd0FrQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BQUFBQUFEMEFQZ0EvQUVBQVFRQkNBRU1BUkFCRkFFWUFSd0JJQUVrQVNnQkxBRXdBVFFCT0FFOEFVQUJSQUZJQVV3QlVBRlVBVmdCWEFGZ0FXUUJhQUZzQVhBQmRBRjRBWHdCZ0FHRUFZZ0JqQUdRQVpRQm1BR2NBYUFCcEFHb0Fhd0JzQUcwQWJnQnZBSEFBY1FCeUFITUFkQUIxQUhZQWR3QjRBSGtBZWdCN0FId0FmUUIrQUg4QWdBQ0JBSUlBZ3dDRUFJVUFoZ0NIQUlnQWlRQ0tBSXNBakFDTkFJNEFqd0NRQUpFQWtnQ1RBSlFBbFFDV0FKY0FtQUNaQUpvQW13Q2NBSjBBbmdDZkFLQUFvUUNpQUtNQXBBQ2xBS1lBcHdDb0FLa0FxZ0NyQUt3QXJRQ3VBSzhBc0FDeEFMSUFzd0MwQUxVQXRnQzNBTGdBdVFDNkFMc0F2QUM5QUw0QXZ3REFBTUVBd2dEREFNUUF4UURHQU1jQXlBREpBTW9BeXdETUFNMEF6Z0RQQU5BQTBRRFNBTk1BMUFEVkFOWUExd0RZQU5rQTJnRGJBTndBM1FEZUFOOEE0QURoQU9JQTR3RGtBT1VBNWdEbkFPZ0E2UURxQU9zQTdBRHRBTzRBN3dEd0FQRUE4Z0R6QVBRQTlRRDJBUGNBK0FENUFQb0Erd0Q4QVAwQS9nRC9BQUFCQVFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXdFVUFSVUJGZ0VYQVJnQkdRRWFBUnNCSEFFZEFSNEJId0VnQVNFQklnRUFBQUFBbmdHZkFRQkJ3dVFOQ3dpZ0FRQUFBQUROQVFCQjJPUU5Dd2loQWFJQm93R2tBUUJCZ3VVTkN3eWxBYVlCcHdHb0Fha0JLUUVBUVpibERRc0VMZ0V2QVFCQnZ1VU5DeENxQWFzQnJBR3RBYTRCcndHd0FiRUJBRUhnNVEwTHpBUStBUUlBQXdBRUFBVUFCZ0FIQUFnQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJvQUd3QWNBQjBBSGdBZkFDQUFJUUFpQUNNQUpBQWxBQ1lBSndBb0FDa0FLZ0FyQUN3QUxRQXVBQzhBTUFBeEFESUFNd0EwQURVQU5nQTNBRGdBT1FBNkFBQUFBQUE5QUQ0QVB3QkFBRUVBUWdCREFFUUFSUUJHQUVjQVNBQkpBRW9BU3dCTUFFMEFUZ0JQQUZBQVVRQlNBRk1BVkFCVkFGWUFWd0JZQUZrQVdnQmJBRndBWFFCZUFGOEFZQUJoQUdJQVl3QmtBR1VBWmdCbkFHZ0FhUUJxQUdzQWJBQnRBRzRBYndCd0FIRUFjZ0J6QUhRQWRRQjJBSGNBZUFCNUFIb0Fld0I4QUgwQWZnQi9BSUFBZ1FDQ0FJTUFoQUNGQUlZQWh3Q0lBSWtBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2FBSnNBbkFDZEFKNEFud0NnQUtFQW9nQ2pBS1FBcFFDbUFLY0FxQUNwQUtvQXF3Q3NBSzBBcmdDdkFMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0F1Z0M3QUx3QXZRQytBTDhBd0FEQkFNSUF3d0RFQU1VQXhnREhBTWdBeVFES0FNc0F6QUROQU00QXp3RFFBTkVBMGdEVEFOUUExUURXQU5jQTJBRFpBTm9BMndEY0FOMEEzZ0RmQU9BQTRRRGlBT01BNUFEbEFPWUE1d0RvQU9rQTZnRHJBT3dBN1FEdUFPOEE4QUR4QVBJQTh3RDBBUFVBOWdEM0FQZ0ErUUQ2QVBzQS9BRDlBUDRBL3dBQUFRRUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTUJGQUVWQVJZQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4QklBRWhBU0lCQUFBQUFKNEJud0VBUWM3cURRc0tvQUVBQUFBQUFBQUlBZ0JCNU9vTkN3aWhBYUlCb3dHa0FRQkJqdXNOQ3d5bEFhWUJwd0dvQWFrQktRRUFRYUxyRFFzRUxnRXZBUUJCeXVzTkN4Q3FBYXNCckFHdEFhNEJyd0d3QWJFQkFFSHM2dzBMekFRK0FRSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBRWdBVEFCUUFGUUFXQUJjQUdBQVpBQm9BR3dBY0FCMEFIZ0FmQUNBQUlRQWlBQ01BSkFBbEFDWUFKd0FvQUNrQUtnQXJBQ3dBTFFBdUFDOEFNQUF4QURJQU13QTBBRFVBTmdBM0FEZ0FPUUE2QUFBQUFBQTlBRDRBUHdCQUFFRUFRZ0JEQUVRQVJRQkdBRWNBU0FCSkFFb0FTd0JNQUUwQVRnQlBBRkFBVVFCU0FGTUFWQUJWQUZZQVZ3QllBRmtBV2dCYkFGd0FYUUJlQUY4QVlBQmhBR0lBWXdCa0FHVUFaZ0JuQUdnQWFRQnFBR3NBYkFCdEFHNEFid0J3QUhFQWNnQnpBSFFBZFFCMkFIY0FlQUI1QUhvQWV3QjhBSDBBZmdCL0FJQUFnUUNDQUlNQWhBQ0ZBSVlBaHdDSUFJa0FpZ0NMQUl3QWpRQ09BSThBa0FDUkFKSUFrd0NVQUpVQWxnQ1hBSmdBbVFDYUFKc0FuQUNkQUo0QW53Q2dBS0VBb2dDakFLUUFwUUNtQUtjQXFBQ3BBS29BcXdDc0FLMEFyZ0N2QUxBQXNRQ3lBTE1BdEFDMUFMWUF0d0M0QUxrQXVnQzdBTHdBdlFDK0FMOEF3QURCQU1JQXd3REVBTVVBeGdESEFNZ0F5UURLQU1zQXpBRE5BTTRBendEUUFORUEwZ0RUQU5RQTFRRFdBTmNBMkFEWkFOb0Eyd0RjQU4wQTNnRGZBT0FBNFFEaUFPTUE1QURsQU9ZQTV3RG9BT2tBNmdEckFPd0E3UUR1QU84QThBRHhBUElBOHdEMEFQVUE5Z0QzQVBnQStRRDZBUHNBL0FEOUFQNEEvd0FBQVFFQkFnRURBUVFCQlFFR0FRY0JDQUVKQVFvQkN3RU1BUTBCRGdFUEFSQUJFUUVTQVJNQkZBRVZBUllCRndFWUFSa0JHZ0ViQVJ3QkhRRWVBUjhCSUFFaEFTSUJBQUFBQUo0Qm53RUFRZHJ3RFFzSW9BRUFBQUFBUUFJQVFmRHdEUXNJb1FHaUFhTUJwQUVBUVpyeERRc01wUUdtQWFjQnFBR3BBU2tCQUVHdThRMExCQzRCTHdFQVFkYnhEUXNRcWdHckFhd0JyUUd1QWE4QnNBR3hBUUJCK1BFTkM4d0VQZ0VDQUFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQUFBQUFBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVFBQUFBQ2VBWjhCQUVIbTlnMExBcUFCQUVINjlnMExDa3dDb1FHaUFhTUJwQUVBUWFiM0RRc01wUUdtQWFjQnFBR3BBU2tCQUVHNjl3MExCQzRCTHdFQVFlTDNEUXNRcWdHckFhd0JyUUd1QWE4QnNBR3hBUUJCaFBnTkM4d0VQZ0VDQUFNQUJBQUZBQVlBQndBSUFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUI0QUh3QWdBQ0VBSWdBakFDUUFKUUFtQUNjQUtBQXBBQ29BS3dBc0FDMEFMZ0F2QURBQU1RQXlBRE1BTkFBMUFEWUFOd0E0QURrQU9nQUFBQUFBUFFBK0FEOEFRQUJCQUVJQVF3QkVBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQmZBR0FBWVFCaUFHTUFaQUJsQUdZQVp3Qm9BR2tBYWdCckFHd0FiUUJ1QUc4QWNBQnhBSElBY3dCMEFIVUFkZ0IzQUhnQWVRQjZBSHNBZkFCOUFINEFmd0NBQUlFQWdnQ0RBSVFBaFFDR0FJY0FpQUNKQUlvQWl3Q01BSTBBamdDUEFKQUFrUUNTQUpNQWxBQ1ZBSllBbHdDWUFKa0FtZ0NiQUp3QW5RQ2VBSjhBb0FDaEFLSUFvd0NrQUtVQXBnQ25BS2dBcVFDcUFLc0FyQUN0QUs0QXJ3Q3dBTEVBc2dDekFMUUF0UUMyQUxjQXVBQzVBTG9BdXdDOEFMMEF2Z0MvQU1BQXdRRENBTU1BeEFERkFNWUF4d0RJQU1rQXlnRExBTXdBelFET0FNOEEwQURSQU5JQTB3RFVBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQU9RQTVRRG1BT2NBNkFEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QUFBRUJBUUlCQXdFRUFRVUJCZ0VIQVFnQkNRRUtBUXNCREFFTkFRNEJEd0VRQVJFQkVnRVRBUlFCRlFFV0FSY0JHQUVaQVJvQkd3RWNBUjBCSGdFZkFTQUJJUUVpQVFBQUFBQ2VBWjhCQUVIeS9BMExBcUFCQUVHSS9RMExDS0VCb2dHakFhUUJBRUd5L1EwTERLVUJwZ0duQWFnQnFRRXBBUUJCeHYwTkN3UXVBUzhCQUVIdS9RMExFS29CcXdHc0FhMEJyZ0d2QWJBQnNRRUFRWkQrRFF2UUJENEJBZ0FEQUFRQUJRQUdBQWNBQ0FBSkFBb0FDd0FNQUEwQURnQVBBQkFBRVFBU0FCTUFGQUFWQUJZQUZ3QVlBQmtBR2dBYkFCd0FIUUFlQUI4QUlBQWhBQ0lBSXdBa0FDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQUFBQUFBRDBBUGdBL0FFQUFRUUJDQUVNQVJBQkZBRVlBUndCSUFFa0FTZ0JMQUV3QVRRQk9BRThBVUFCUkFGSUFVd0JVQUZVQVZnQlhBRmdBV1FCYUFGc0FYQUJkQUY0QVh3QmdBR0VBWWdCakFHUUFaUUJtQUdjQWFBQnBBR29BYXdCc0FHMEFiZ0J2QUhBQWNRQnlBSE1BZEFCMUFIWUFkd0I0QUhrQWVnQjdBSHdBZlFCK0FIOEFnQUNCQUlJQWd3Q0VBSVVBaGdDSEFJZ0FpUUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKb0Ftd0NjQUowQW5nQ2ZBS0FBb1FDaUFLTUFwQUNsQUtZQXB3Q29BS2tBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzZBTHNBdkFDOUFMNEF2d0RBQU1FQXdnRERBTVFBeFFER0FNY0F5QURKQU1vQXl3RE1BTTBBemdEUEFOQUEwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dBNlFEcUFPc0E3QUR0QU80QTd3RHdBUEVBOGdEekFQUUE5UUQyQVBjQStBRDVBUG9BK3dEOEFQMEEvZ0QvQUFBQkFRRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV3RVVBUlVCRmdFWEFSZ0JHUUVhQVJzQkhBRWRBUjRCSHdFZ0FTRUJJZ0VBQUFBQW5nR2ZBUUFBdkFFQVFmcUNEZ3NHemdFQUFLQUJBRUdVZ3c0TERLRUJvZ0dqQWFRQkVBSVJBZ0JCdm9NT0N3eWxBYVlCcHdHb0Fha0JLUUVBUWRLRERnc0tMZ0VhQWdBQUFBQWRBZ0JCOElNT0N3TE9BUUJCK29NT0N4Q3FBYXNCckFHdEFhNEJyd0d3QWJFQkFFR1doQTRMQ000QkFBQUFBRDRCQUVHY2hRNExBbkVDQUVHMmhRNExKbmNDZUFKNUFzNEJ6Z0hPQWM0QnpnSE9BYzRCemdIT0FjNEJ6Z0hPQWM0QnpnSE9BYzRCQUVHaWh3NEx4d2JPQVZOb2FXWjBhVzVuQUFBQUFBQUFuQURMQU1rQXlnRElBTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTXdBelFET0FOZ0EyUURhQU5zQTNBRGRBTjRBM3dEZ0FPRUE0Z0RqQUVjQlNBRkpBVW9CU3dGTUFVMEJZUUZpQVdNQlpBRmxBV1lCWndGd0FYMEJmZ0Z4QVhJQmRBRnpBWFVCZGdGM0FYZ0JlUUY2QVhzQmZBR2tBS1VBNVFEbUFPUUE1d0R1QU84QTdBRHRBT29BNndEb0FPa0FCUUVHQVFjQkVRRVNBUk1CQWdFREFRUUJEZ0VQQVJBQi93QUFBUUVCQ3dFTUFRMEIvQUQ5QVA0QUNBRUpBUW9COEFEeEFQSUFGQUVWQVJZQjh3RDBBUFVBSUFFaEFTSUI5Z0QzQVBnQUxBRXRBUzRCK1FENkFQc0FPQUU1QVRvQkZ3RVlBUmtCR2dFYkFSd0JIUUVlQVI4Qkl3RWtBU1VCSmdFbkFTZ0JLUUVxQVNzQkx3RXdBVEVCTWdFekFUUUJOUUUyQVRjQk93RThBVDBCUGdFL0FVQUJRUUZDQVVNQlJRRkVBZVFCNVFIbUFWRUJVZ0ZwQVd3QlJnRlBBVkFCWUFGT0FYOEJnQUdEQVlRQmhRR0hBWWdCaVFHTEFZd0JqUUdQQVpBQjJnSGJBV2dCYWdGckFWTUJWQUZWQVlFQlZnRmFBVnNCWGdHR0FZb0JqZ0ZYQVZnQlhBRmRBWUlCV1FGZkFhNEJzQUd4QWJJQnRBRzFBYllCdUFHNUFib0J2QUc5QWI0QndBSEJBY0lCeEFIRkFjWUJ5QUhKQWNvQnpBSE5BYzRCMEFIUkFkSUIxQUhWQWRZQjJBSFpBYThCc3dHM0Fic0J2d0hIQWNzQnp3SERBZE1CMXdGdEFXNEJid0dSQVpvQm5BR1dBWnNCblFHZUFhQUJvUUdpQWFRQnBRR21BYWdCcVFHcUFhd0JyUUdTQVpNQmxBR2ZBWlVCbHdHWUFaa0Jvd0duQWFzQjNBSGRBZUFCNFFIaUFlTUIzZ0hmQVQ4Q2d3RHBBZW9CNndFQUFPZ0JvQUNlQUo4QW5RQUFBTWNBb1FDaUFLTUFoUUNFQUFBQXR3Q3BBS29BcUFDckFLd0FwZ0NuQUxrQXJRQ3pBTFFBdFFDMkFLNEFyd0N3QUxFQXNnQ0dBSWNBaUFDSkFJb0Fpd0NTQUQ0Q0FBQkFBZ0FBYkFCckFBQUFkd0I4QUprQW1BQ1dBSm9BQUFDVEFKVUFtd0NCQU1NQWx3RG5BUUFBT3dJOUFnQUE3Z0VBQUFBQUFBQmdBQUFBWFFBQUFHb0FBQUJ6QUcwQWRRQUFBSFlBQUFCZUFIMEFZd0FBQUpRQWdnQUFBTHdBd2dBQkFEd0NBQUFBQU93Qmp3Q1JBQUFBalFDNkFBQUFBQUJoQUFBQUFBQkJBbTRBY2dCMEFIQUFlQUJ2QUFBQWZnQm1BQUFBWkFCQjhvME9DNGdCS2dBcEFDc0FLQUFGQUFZQUJ3QUlBQUlBRHdBTkFBNEFFQUFKQUFvQUN3QU1BQU1BRVFBa0FCTUFHQUFaQUFBQUFBQWRBQUFBeFFBQUFDTUFJUUFBQUwwQVh3QUFBQUFBQUFEd0FRQUFBQUNNQUFBQXVBQUFBTDRBTEFBd0FETUFOZ0E3QUQ0QVFBQkNBRVFBUmdCSUFFb0FBQUFBQUdJQUFBQUtBaE1DRndJQUFBQUFBQUFzQWdCQmlvOE9DM3NzQUUwQVdnQUFBUDBCQUFDYkFJRUFBQUlWQXY4QkJ3TCtBUUFBQVFJQ0Foa0NBd0lnQWdRQ0JRSW9BZ1lDQUFCeEFBQUFlUUFBQVBnQmdBQUFBQUFBYUFBQUFHVUFKUUFtQUFBQUZRQVdBQUFBQUFBYkFCb0FBQURIQUI0QUlBQW5BQUFBeEFBQUFQWUJBQUQwQWU4QjhRRUFBRndBa0FDT0FMc0FRYXlRRGd1a0FVc0F2d0RBQUFBQUFBQUpBZ0FBS2dJM0FqWUNBQUF1QWdBQU9nSTRBZ0FBQUFBQUFDY0NDQUpRQUZFQVV3QlNBRlVBVmdCWEFGZ0FXUUJVQUU4QUFBQUFBQmdDRkFJV0Fob0NJUUlwQW5zQUFBRDdBUUFBZndBQUFHa0FCQUFBQUJjQUZBQWZBTVlBQUFEM0FRQUE4Z0h0QVMwQUxnQXZBRElBTVFBMEFEVUFPUUE2QURjQU9BQThBRDBBUHdCQkFFTUFSUUJIQUVrQUFBREJBRVVDQUFCREFnc0NBRUhZa1E0TEdEa0NBQUFtQWs0QVd3QjZBUGtCQUFCbkFCSUE4d0gxQVFCQitwRU9Dd0llQWdCQmhKSU9DN01hTVFJd0FqTUNFUUlpQXZvQi9BRUFBQUFBUWdKRUFnd0NBQUFBQUFBQU1nSUFBQUFBSFFJQUFBQUFHd0lBQUV3QVJnSUFBQTRDS3dJTkFnQUFOQUlBQUJFQ0VBSVNBaVFDSHdJQUFEVUNMd0ljQWlVQ0FBQXRBaU1DQUFBQUFnRUJBd0VCQVFFQkFRRUJBUUVCQVFFRUFRTUNBZ0VCQVFJQ0FnRUNBd0lCQVFFQkFnSUNBUUVCQVFFREF3TUJBd01CQXdNQkF3TURBd0VEQXdFREFRTUJBd0VEQVFNQkF3RUFCZ0VEQVFFQkFRRUJBUUVCQVFFQkF3RUNBZ1FDQXdRQ0F3UUFCZ0lEQWdFQkFnTURBZ01DQVFJQkFRRURCQVlGQVFJREJRUUJBZ0VCQVFFQkFRRUJBUVFCQXdFREFRRUJBZ0VCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJCQUVCQXdJREFnTURCQUVBQXdFREFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQmdBRkFRSURCQUVEQVFJQkF3UUJBd0VCQVFFQkFRRUJBUUVCQWdJQUFBVUJBUUFDQUFJQ0F3RUNBUUlCQWdVREFRRUVBUUlBQ0FBQkF3SUJBZ0FHQUFnQUJ3RUJBUUFDQXdJQ0FnTUNBUUlCQVFFQUF3VUJBd0VFZFc1emFXZHVaV1FnYkdsMFpYSmhiQUF6TWkxaWFYUWdjMmxuYm1Wa0lHeHBkR1Z5WVd3QU5qUXRZbWwwSUdsdWRHVm5aWElnYkdsMFpYSmhiQUEyTkMxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNpQnNhWFJsY21Gc0FERTJMV0pwZENCcGJuUmxaMlZ5SUd4cGRHVnlZV3dBTVRZdFltbDBJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSWdiR2wwWlhKaGJBQmtiM1ZpYkdVZ2JHbDBaWEpoYkFCb1lXeG1JR1pzYjJGMElHeHBkR1Z5WVd3QUt5c0FMUzBBVzEwQVpuVnVZM1JwYjI0Z1kyRnNiQ3dnYldWMGFHOWtMQ0J2Y2lCemRXSnliM1YwYVc1bElHTmhiR3dnWlhod1pXTjBaV1FBQUdsdVkyOXRjR3hsZEdVZ2JXVjBhRzlrSUhONWJuUmhlQUJpYVhSM2FYTmxJRzV2ZEFBcUFDOEFKUUFyQUMwQVltbDBJSE5vYVdaMElHeGxablFBUER3QVltbDBJSE5vYVdaMElISnBaMmgwQUQ0K0FEd0FQZ0E4UFFBK1BRQmhjbkpoZVNCamIyMXdZWEpwYzI5dUFEMDlBQ0U5QUdKcGRIZHBjMlVnWVc1a0FDWUFZbWwwZDJselpTQmxlR05zZFhOcGRtVWdiM0lBWGdCaWFYUjNhWE5sSUdsdVkyeDFjMmwyWlNCdmNnQjhBQ1ltQUY1ZUFIeDhBRDhBT2dCaGNuSmhlU0JoYzNOcFoyNXRaVzUwQUQwQVlYTnphV2R1QUNVOUFHSnBkQzF6YUdsbWRDQnNaV1owSUdGemMybG5iZ0JpYVhRdGMyaHBablFnY21sbmFIUWdZWE56YVdkdUFHSnBkSGRwYzJVdFlXNWtJR0Z6YzJsbmJnQmlhWFIzYVhObExYaHZjaUJoYzNOcFoyNEFZbWwwZDJselpTMXZjaUJoYzNOcFoyNEFMQUJ3Y21WamFYTnBiMjRnYzNSaGRHVnRaVzUwQUdOaGJtNXZkQ0JpWlNCaGJpQmhjbWQxYldWdWRDQjBlWEJsSUdWNFkyVndkQ0JtYjNJZ0p5aDJiMmxrS1NjQWRtOXBaQUJ1YnlCeGRXRnNhV1pwWlhKeklHRnNiRzkzWldRZ1ptOXlJR1oxYm1OMGFXOXVJSEpsZEhWeWJnQkhURjh6UkV4ZllYSnlZWGxmYjJKcVpXTjBjd0JoY25KaGVXVmtJSFI1Y0dVQWFXeHNaV2RoYkNCMWMyVWdiMllnZEhsd1pTQW5kbTlwWkNjQWFXNTJZWEpwWVc1MEFITnRiMjkwYUFCbWJHRjBBRzV2Y0dWeWMzQmxZM1JwZG1VQVIweGZUbFpmYzJoaFpHVnlYMjV2Y0dWeWMzQmxZM1JwZG1WZmFXNTBaWEp3YjJ4aGRHbHZiZ0JmWDJWNGNHeHBZMmwwU1c1MFpYSndRVTFFQUVkTVgwRk5SRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZkbVZ5ZEdWNFgzQmhjbUZ0WlhSbGNnQmxlSEJzYVdOcGRDQnBiblJsY25CdmJHRjBhVzl1QUhCbGNuWmxjblJsZUU1V0FFZE1YMDVXWDJaeVlXZHRaVzUwWDNOb1lXUmxjbDlpWVhKNVkyVnVkSEpwWXdCbWNtRm5iV1Z1ZENCemFHRmtaWElnWW1GeWVXTmxiblJ5YVdNQWNHVnljSEpwYldsMGFYWmxUbFlBQUFBQXB0Y0RBSEJsY25acFpYZE9WZ0IwWVhOclRsWUFjMmhoY21Wa0FFZE1YMEZTUWw5bmNIVmZjMmhoWkdWeU5RQndjbVZqYVhObEFBQzQxd01BeTljREFHbHViM1YwQUdsdUFHOTFkQUJqWlc1MGNtOXBaQUIxYm1sbWIzSnRBRWRNWDBGU1FsOWpiMjF3ZFhSbFgzTm9ZV1JsY2dCaWRXWm1aWElBWVhSMGNtbGlkWFJsQUhaaGNubHBibWNBY0dGMFkyZ0FjMkZ0Y0d4bEFHaHBkRUYwZEhKcFluVjBaVTVXQUVkTVgwNVdYM0poZVY5MGNtRmphVzVuQUhKaGVWQmhlV3h2WVdST1ZnQnlZWGxRWVhsc2IyRmtTVzVPVmdCallXeHNZV0pzWlVSaGRHRk9WZ0JqWVd4c1lXSnNaVVJoZEdGSmJrNVdBQURlMXdNQVpHVjJhV05sWTI5b1pYSmxiblFBY1hWbGRXVm1ZVzFwYkhsamIyaGxjbVZ1ZEFCM2IzSnJaM0p2ZFhCamIyaGxjbVZ1ZEFCemRXSm5jbTkxY0dOdmFHVnlaVzUwQUc1dmJuQnlhWFpoZEdVQWMzVmljbTkxZEdsdVpRQmhjbkpoZVNCemFYcGxBSFI1Y0dVZ2NHRnlZVzFsZEdWeUFIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJQWRXNXphV2R1WldRZ2FXNTBaV2RsY2lCMlpXTjBiM0lBWkc5MVlteGxBR1pzYjJGME1UWmZkQUJtYkc5aGRETXlYM1FBWm14dllYUTJORjkwQURndFltbDBJSE5wWjI1bFpDQnBiblJsWjJWeUFEZ3RZbWwwSUhWdWMybG5ibVZrSUdsdWRHVm5aWElBTVRZdFltbDBJSE5wWjI1bFpDQnBiblJsWjJWeUFERTJMV0pwZENCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5QURNeUxXSnBkQ0J6YVdkdVpXUWdhVzUwWldkbGNnQXpNaTFpYVhRZ2RXNXphV2R1WldRZ2FXNTBaV2RsY2dBMk5DMWlhWFFnYVc1MFpXZGxjZ0EyTkMxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNnQmtiM1ZpYkdVZ2RtVmpkRzl5QUdoaGJHWWdabXh2WVhRZ2RtVmpkRzl5QUdac2IyRjBNekpmZENCMlpXTjBiM0lBWm14dllYUTJORjkwSUhabFkzUnZjZ0E0TFdKcGRDQnphV2R1WldRZ2FXNTBaV2RsY2lCMlpXTjBiM0lBTVRZdFltbDBJSE5wWjI1bFpDQnBiblJsWjJWeUlIWmxZM1J2Y2dBek1pMWlhWFFnYzJsbmJtVmtJR2x1ZEdWblpYSWdkbVZqZEc5eUFEWTBMV0pwZENCcGJuUmxaMlZ5SUhabFkzUnZjZ0E0TFdKcGRDQjFibk5wWjI1bFpDQnBiblJsWjJWeUlIWmxZM1J2Y2dBeE5pMWlhWFFnZFc1emFXZHVaV1FnYVc1MFpXZGxjaUIyWldOMGIzSUFNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ2RtVmpkRzl5QURZMExXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJSFpsWTNSdmNnQmtiM1ZpYkdVZ2JXRjBjbWw0QUdoaGJHWWdabXh2WVhRZ2JXRjBjbWw0QUdac2IyRjBNekpmZENCdFlYUnlhWGdBWm14dllYUTJORjkwSUcxaGRISnBlQUJoZEc5dGFXTWdZMjkxYm5SbGNpQjBlWEJsY3dCb1lXeG1JR1pzYjJGMElITmhiWEJzWlhJQWFHRnNaaUJtYkc5aGRDQjBaWGgwZFhKbEFHaGhiR1lnWm14dllYUWdhVzFoWjJVQWMzVmljR0Z6Y3lCcGJuQjFkQUJvWVd4bUlHWnNiMkYwSUhOMVluQmhjM01nYVc1d2RYUUFabU52YjNCdFlYUk9WZ0JwWTI5dmNHMWhkRTVXQUhWamIyOXdiV0YwVGxZQVpYaHdaV04wWldRZ2RIbHdaU0J1WVcxbEFHaHBaMmh3SUhCeVpXTnBjMmx2YmlCeGRXRnNhV1pwWlhJQWJXVmthWFZ0Y0NCd2NtVmphWE5wYjI0Z2NYVmhiR2xtYVdWeUFHeHZkM0FnY0hKbFkybHphVzl1SUhGMVlXeHBabWxsY2dCeVpXUmxabWx1YVhScGIyNEFjM1J5ZFdOMEFHUjFjR3hwWTJGMFpTQnRaVzFpWlhJZ2JtRnRaVG9BZXlCOUlITjBlV3hsSUdsdWFYUnBZV3hwZW1WeWN3QkhURjlCVWtKZmMyaGhaR2x1WjE5c1lXNW5kV0ZuWlY4ME1qQndZV05yQUdSbGJXOTBaUUFBQUFBbjJBTUFZMkZ1Ym05MElHRndjR1ZoY2lCdmRYUnphV1JsSUhOM2FYUmphQ0J6ZEdGMFpXMWxiblFBWTJGelpRQmpZVzV1YjNRZ1ltVWdibVZ6ZEdWa0lHbHVjMmxrWlNCamIyNTBjbTlzSUdac2IzY0FaR1ZtWVhWc2RBQjNhR2xzWlNCc2IyOXdjeUJ1YjNRZ1lYWmhhV3hoWW14bEFHeHBiV2wwWVhScGIyNEFaRzh0ZDJocGJHVWdiRzl2Y0hNZ2JtOTBJR0YyWVdsc1lXSnNaUUJqYjI1MGFXNTFaU0J6ZEdGMFpXMWxiblFnYjI1c2VTQmhiR3h2ZDJWa0lHbHVJR3h2YjNCekFHSnlaV0ZySUhOMFlYUmxiV1Z1ZENCdmJteDVJR0ZzYkc5M1pXUWdhVzRnYzNkcGRHTm9JR0Z1WkNCc2IyOXdjd0J1YjI0dGRtOXBaQ0JtZFc1amRHbHZiaUJ0ZFhOMElISmxkSFZ5YmlCaElIWmhiSFZsQUhKbGRIVnliZ0JrYVhOallYSmtBR1Y0ZEhKaGJtVnZkWE1nYzJWdGFXTnZiRzl1QUdaMWJtTjBhVzl1SUdSdlpYTWdibTkwSUhKbGRIVnliaUJoSUhaaGJIVmxPZ0FBQUFCSzJBTUFMVDRnSkNRZ1BRQkJ3cXdPQy84WW13R2NBWjBCblFHZEFaMEJuUUdkQVowQm5RR2RBWjBCblFHZEFaMEJuUUdlQVo0Qm5nR2VBWjRCbmdHZkFhQUJvUUdpQWFJQm93R2pBYVFCcEFHbEFhWUJwZ0dtQWFjQnB3R25BYWNCcUFHb0FhZ0JxQUdwQWFrQnFRR3BBYW9CcWdHcUFhc0Jxd0dyQWF3QnJBR3NBYXdCckFHdEFhMEJyUUd1QWE0QnJ3R3ZBYkFCc0FHeEFiRUJzZ0d5QWJNQnN3RzBBYlVCdEFHMkFiWUJ0d0czQWJjQnR3RzNBYmNCdHdHM0FiY0J0d0czQWJnQnVBRzVBYm9CdWdHNkFib0J1Z0c2QWJvQnVnRzZBYndCdXdHOUFiMEJ2Z0cvQWI4QndBSEFBY0VCd2dIQ0FjTUJ3d0hEQWNNQnhBSEZBY1VCeFFIRkFjVUJ4Z0hHQWNZQnhnSEdBY2NCeHdISUFja0J5UUhKQWNrQnlRSEpBY2tCeVFIS0Fjc0J5d0hNQWN3QnpBSE5BYzRCemdIUEFjOEJ6d0hQQWM4Qnp3SFBBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUkFkSUIwZ0hUQWRNQjFBSFVBZFFCMUFIVkFkVUIxZ0hYQWRjQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGdCMkFIWUFkZ0IyQUhZQWRnQjJBSFlBZGtCMlFIWkFkc0IyZ0hjQWRvQjNRSGRBZDRCM2dIZkFkOEI0QUhnQWVFQjRRSGhBZUlCNGdIakFlUUI1QUhsQWVVQjVRSGxBZVVCNVFIbEFlVUI1Z0huQWVnQjZRSG5BZW9CNmdIc0Flc0I3UUhyQWU0QjdnSHZBZThCOEFId0FmRUI4UUh5QWZNQjh3SDBBZlFCOVFIMUFmY0I5Z0g0QWZnQitRSDVBZm9CK2dIOEFmc0IvUUg3QWY0Qit3SC9BZjhCQUFJQUFnRUNBUUlDQWdJQ0FnSUNBZ0lDQXdJREFnUUNCQUlFQWdZQ0JRSUhBZ2dDQ0FJSkFna0NBQUE3L2p2K08vNDcvanYrTy80Ny9qditPLzQ3L2p2K08vNzRJVHYrcC8rby80Yi9yUC90Lys3LzcvL3cvK3ovOGY4Ny9xdi9PLzZlL3p2K2t2K0ovd0lBTy80Ny9qditCQUE3L2p2K08vNjlBTDhBd0FBNy9qdityZjQ3L2p2K08vNDcvbUlBTy83Yi85VC9PLzRKQUR2K0FBQzUvenYrTy80Ny9qditCUUU3L2p2K08vNDgvbmYvRkFDOC95Ly9PLzZnL3pyL3V2NDcvbmovTy80Ny9tNy9jUDg3L2p2K3lBRDMvcW4vTy80NUFEditrUDg3L2pzQU8vNDcvanYrTy80OUFEditPLzQ3L2p2K08vNDcvanYrTy83a0FEditPLzQ3L2p2K25mOEFBUC8vc2dHekFiUUJiUUsxQWJZQnR3RzRBYmtCdWdHN0FlMEJ2UUhQQWRBQjBRSFNBZE1CMUFIVkFkWUIxd0hZQWRrQjdnR0tBdThCWFFMd0FTZ0M4UUZSQVF3Q25RSHlBVk1CVkFGVkFYTUJkQUYxQVZZQlZ3RllBVmtCV2dGYkFZa0JpZ0ZjQVYwQlhnRmZBYjRCakFHL0FZOEJnQUdCQWNBQllnRmpBV1FCeHdHRkFjVUJ4Z0VpQWlNQ0NnSm9BdlVCOWdIM0FmZ0IrUUZFQXFRQ3hRSzhBcjBDdmdMR0F2b0Ird0g4QWYwQnZ3S29BdjRCL3dIQUF0UUNBQUlCQWdJQ2tBSklBcElDckFLNkFyc0NBd0psQVdZQlp3RndBUVFDalFLT0FuTjViblJoZUNCbGNuSnZjZ0JGY25KdmNqb2daR2x6WTJGeVpHbHVad0JGY25KdmNqb2djRzl3Y0dsdVp3QUFBQUFBQUFBREFBUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QWtBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQS9BRUFBUVFCQ0FFTUFSQUJGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFYd0JnQUdFQVlnQmpBR1FBWlFCbUFHY0FhQUJwQUdvQWF3QnNBRzBBYmdCdkFIQUFjUUJ5QUhNQWRBQjFBSFlBZHdCNEFIa0FlZ0I3QUh3QWZRQitBSDhBZ0FDQkFJSUFnd0NFQUlVQWhnQ0hBSWdBaVFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSm9BbXdDY0FKMEFuZ0NmQUtBQW9RQ2lBS01BcEFDbEFLWUFwd0NvQUtrQXFnQ3JBS3dBclFDdUFLOEFzQUN4QUxJQXN3QzBBTFVBdGdDM0FMZ0F1UUM2QUxzQXZBQzlBTDRBdndEQUFNRUF3Z0REQU1RQXhRREdBTWNBeUFESkFNb0F5d0RNQU0wQXpnRFBBTkFBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRRHFBT3NBN0FEdEFPNEE3d0R3QVBFQThnRHpBUFFBOVFEMkFQY0ErQUQ1QVBvQSt3RDhBUDBBL2dEL0FBQUJBUUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFd0VVQVJVQkZnRVhBUmdCR1FFYUFSc0JIQUVkQVI0Qkh3RWdBU0VCSWdFakFTUUJSQUZTQVZNQlZBRlZBVllCWHdGZ0FXRUJZZ0ZqQVdRQlpRRnlBWE1CZEFGMUFYWUJkd0dBQVlJQmd3R0VBWVVCaGdHSEFZZ0JpUUdLQVlzQmpBR05BWTRCandHUUFaRUJrZ0dUQVpRQmxRR1dBWmNCbUFHWkFab0J1Z0c3QWI0QnZ3SEFBY0VCeFFIR0FjY0J5QUhKQWNvQnpRSE9BYzhCMEFIUkFkTUIyQUhaQWRvQkF3SUVBZ1VDMlFFK0FWNEJPZ0U2QVVRQlhnRkVBUVlDT3dGQkFjSUJ3d0hFQWM0QjB3RkJBVVFCWGdGRUFWNEJ6d0hUQVV3QjFRSFdBUUFBQkFMVEFkd0JQZ0ZlQVhNQnl3SE1BVjRCMGdFOEFVUUIxQUUrQWU0Qnd3SENBY1FCWGdGZUFUb0JRd0hVQVQ0QlFRRkVBYjBCSndFb0FUb0JSUUZHQVVjQlNBRmFBVnNCWEFGZEFWNEJlQUY1QVhvQmV3RjhBWDBCZmdGL0Fad0JuUUdlQWFBQm9RR2lBYU1CcEFHbEFhWUJwd0dvQWRFQjB3SFhBZFFCUkFIT0FkTUIzUUhlQWRzQlF3RTdBVUVCT3dGQkFUMEJwd0dwQWFvQnF3R3NBYTBCcmdHdkFiQUJzUUd5QWJNQnRBRThBVVFCUEFFK0FUOEJSQUZtQVdjQmFBRnBBV3NCYkFGdEFXNEJid0Z3QVhFQmdRR25BYlFCdGdHNEFib0J2Z0hSQWRNQjR3SGtBZVVCNWdIbkFlOEI4QUh4QWZJQjlRSDJBZmtCK2dIN0FRSUNCd0xVQVVNQjFBRStBYllCNFFGREFid0JYZ0ZCQVVRQnB3R25BYmdCSndFb0FUd0JRQUU3QVRzQlFRRmxBYllCT2dHbkFVRUJUUUhUQVY0QjN3SGdBVDhCM2dIZEFiUUJ1UUhNQVY0QlNRRktBVXNCUmdGSUFTVUJKZ0VwQVNvQlRBRk5BU3NCTEFGUUFVOEJUZ0V0QVM4QkxnRlJBVDBCUFFHMEFUd0JQd0hvQVRvQlJBRkVBZjBCT2dFNkFVUUJSQUc0QVRvQnVBRkNBVVFCTUFFeEFUSUJNd0UwQVRVQk5nRTNBVGdCT1FGREFiY0JRUUZFQVQ4QjVBSHlBZllCK3dIaEFVTUI0UUhpQWVFQjNRRmVBVHNCbndHNEFWNEJ0Z0duQWQ4QjFBRkJBVVFCUHdHbkFhY0Jwd0dwQWFrQnFnR3FBYXNCcXdHckFhc0JyQUdzQWEwQnJnR3ZBYkFCc1FHeUFiVUJQUUZlQVFnQ0NRTHZBZndCNUFIK0FiZ0JSQUc0QVVJQnRnRzJBZUVCUHdGQkFUOEJQUUZFQWVBQnVBRTZBVDBCUVFIcEFiZ0J4d0hPQWZRQlpnSGpBZkFCL3dFN0FUc0JQd0hoQVVJQnVRRTlBUWtDUHdGZUFUc0JPZ0gwQVFBQ0FRTHJBZXdCN1FIekFmY0J0Z0U3QVVNQjVRSHFBZTRCdUFGRUFUc0JhZ0huQWVVQlBnSGhBVHNCdUFIcUFlc0I3d0g0QVVRQlB3RnRaVzF2Y25rZ1pYaG9ZWFZ6ZEdWa0FFTnNaV0Z1ZFhBNklHUnBjMk5oY21ScGJtY2diRzl2YTJGb1pXRmtBRU5zWldGdWRYQTZJSEJ2Y0hCcGJtY0FKWE1nSlhNZ0tBQjBiMnRsYmdCdWRHVnliUUJCME1VT0M3UkQvcW9EQUFPckF3QUpxd01BRktzREFCcXJBd0FmcXdNQUk2c0RBQ2lyQXdBdXF3TUFOS3NEQURxckF3QkFxd01BUnFzREFFeXJBd0JTcXdNQVdLc0RBRjZyQXdCa3F3TUFhYXNEQUc2ckF3Qnpxd01BZUtzREFIMnJBd0NDcXdNQWlhc0RBSkNyQXdDWHF3TUFucXNEQUtXckF3Q3Nxd01BczZzREFMcXJBd0RCcXdNQXk2c0RBTldyQXdEaHF3TUE4YXNEQUFPc0F3QVNyQU1BSjZ3REFES3NBd0E5ckFNQVNxd0RBRnFzQXdCbHJBTUFjS3dEQUgyc0F3Q05yQU1BbGF3REFLT3NBd0N0ckFNQXQ2d0RBTU9zQXdEU3JBTUEzYXdEQU9pc0F3RDFyQU1BQmEwREFCQ3RBd0FiclFNQUtLMERBRGl0QXdCQ3JRTUFTcTBEQUZTdEF3QmVyUU1BWmEwREFHK3RBd0IzclFNQWdLMERBSWl0QXdDUnJRTUFtYTBEQUtLdEF3Q3ByUU1Bc2EwREFMbXRBd0RCclFNQXlhMERBTkd0QXdEWnJRTUE0YTBEQU9tdEF3RHhyUU1BK2EwREFBR3VBd0FKcmdNQUVhNERBQm11QXdBaHJnTUFLYTREQURHdUF3QTVyZ01BUWE0REFFaXVBd0JQcmdNQVZxNERBRjJ1QXdCa3JnTUFhNjREQUhHdUF3QjNyZ01BZmE0REFJT3VBd0NKcmdNQWo2NERBSmV1QXdDZnJnTUFwNjREQUsrdUF3QzNyZ01BdjY0REFNZXVBd0RQcmdNQTE2NERBTit1QXdEbnJnTUE3NjREQVBldUF3RC9yZ01BQjY4REFBK3ZBd0FYcndNQUg2OERBQ2V2QXdBdnJ3TUFONjhEQUQrdkF3Qkhyd01BVDY4REFGZXZBd0JmcndNQVo2OERBSEd2QXdCN3J3TUFoYThEQUkrdkF3Q1pyd01BbzY4REFLMnZBd0MzcndNQXdhOERBTXV2QXdEVnJ3TUEzNjhEQU9tdkF3RHpyd01BL2E4REFBZXdBd0FSc0FNQUc3QURBQ1d3QXdBdnNBTUFPYkFEQUVPd0F3Qk5zQU1BVjdBREFHR3dBd0Jyc0FNQWRiQURBSUd3QXdDTnNBTUFtTEFEQUtPd0F3Q3VzQU1BdjdBREFOYXdBd0Rvc0FNQStyQURBQVN4QXdBVHNRTUFLTEVEQURPeEF3QkRzUU1BVWJFREFHV3hBd0Iwc1FNQWc3RURBSkd4QXdDZ3NRTUFyN0VEQUx1eEF3RElzUU1BMWJFREFPYXhBd0Q0c1FNQUNySURBQjJ5QXdBMXNnTUFSYklEQUZDeUF3QmdzZ01BYmJJREFIcXlBd0NIc2dNQW1MSURBS2V5QXdDNXNnTUF5N0lEQU4reUF3RHdzZ01BLzdJREFCT3pBd0Ftc3dNQU9iTURBRkd6QXdCcHN3TUFnTE1EQUpXekF3Q3Zzd01BdDdNREFNQ3pBd0RKc3dNQTBiTURBTnF6QXdEanN3TUE2N01EQVBTekF3RDlzd01BQ2JRREFCYTBBd0FqdEFNQUxiUURBRGkwQXdCRHRBTUFUN1FEQUZ5MEF3QnB0QU1BZHJRREFJUzBBd0NTdEFNQW43UURBSzIwQXdDN3RBTUF5clFEQU5xMEF3RHF0QU1BOUxRREFQKzBBd0FLdFFNQUdiVURBQ20xQXdBNXRRTUFSTFVEQUUrMUF3QmF0UU1BYWJVREFIYTFBd0NHdFFNQWxyVURBS2kxQXdDM3RRTUF4TFVEQU5hMUF3RG50UU1BK2JVREFBdTJBd0FWdGdNQUlMWURBQ3UyQXdBNnRnTUFTcllEQUZxMkF3Qm90Z01BZDdZREFJYTJBd0NVdGdNQW83WURBTEsyQXdDK3RnTUF5N1lEQU5pMkF3RHB0Z01BKzdZREFBMjNBd0FhdHdNQUo3Y0RBRFMzQXdCRnR3TUFWTGNEQUdhM0F3QjR0d01BakxjREFKMjNBd0NzdHdNQXdMY0RBTTIzQXdEY3R3TUE2cmNEQVBxM0F3QUl1QU1BR0xnREFDaTRBd0E2dUFNQVFyZ0RBRXU0QXdCU3VBTUFXYmdEQUYrNEF3Qmx1QU1BYTdnREFIRzRBd0I0dUFNQWZyZ0RBSVc0QXdDUXVBTUFtN2dEQUthNEF3Q3h1QU1BdmJnREFNcTRBd0RWdUFNQTRMZ0RBT3E0QXdEMXVBTUFBTGtEQUF5NUF3QVp1UU1BSjdrREFESzVBd0ErdVFNQVFya0RBRWk1QXdCT3VRTUFWTGtEQUY2NUF3Qmp1UU1BYUxrREFHNjVBd0J6dVFNQWVMa0RBSDY1QXdDR3VRTUFrYmtEQUoyNUF3Q3F1UU1Bc0xrREFMcTVBd0REdVFNQXpia0RBTnk1QXdEdHVRTUErN2tEQUFXNkF3QU11Z01BRmJvREFCeTZBd0FxdWdNQU5yb0RBRU82QXdCUXVnTUFXN29EQUdXNkF3QnV1Z01BY2JvREFIVzZBd0I3dWdNQWdyb0RBSWU2QXdDTnVnTUFrN29EQUp5NkF3Q2Z1Z01BcExvREFLaTZBd0NydWdNQXM3b0RBTHE2QXdEQnVnTUF4cm9EQU02NkF3RFd1Z01BM2JvREFPUzZBd0RwdWdNQThMb0RBUGU2QXdBR3V3TUFGTHNEQUNPN0F3QXp1d01BUWJzREFGQzdBd0JldXdNQWJic0RBSGk3QXdCL3V3TUFpYnNEQUpXN0F3Q2Z1d01BcXJzREFMZTdBd0M5dXdNQXhMc0RBTSs3QXdEWXV3TUE0YnNEQU9xN0F3RHp1d01BL2JzREFBeThBd0FndkFNQU1yd0RBRU84QXdCT3ZBTUFYTHdEQUc2OEF3QjZ2QU1BaWJ3REFKTzhBd0NkdkFNQXBid0RBSzI4QXdEQnZBTUExTHdEQU9lOEF3RDZ2QU1BQ0wwREFDQzlBd0EydlFNQVdiMERBSDY5QXdDVHZRTUFwNzBEQUxpOUF3REh2UU1BNGIwREFQVzlBd0FHdmdNQUhMNERBREMrQXdBL3ZnTUFWNzREQUcrK0F3Q0d2Z01BbmI0REFMTytBd0RLdmdNQXpyNERBT1MrQXdENHZnTUFBNzhEQUJlL0F3QWp2d01BTTc4REFEZS9Bd0JIdndNQVdyOERBRzYvQXdDT3Z3TUFucjhEQUxPL0F3REp2d01BNHI4REFQZS9Bd0FLd0FNQUg4QURBRFBBQXdCTHdBTUFYTUFEQUhYQUF3Q0p3QU1BbThBREFLckFBd0RBd0FNQTBzQURBT2pBQXdEM3dBTUFCc0VEQUJiQkF3QXp3UU1BVE1FREFHckJBd0NDd1FNQWxzRURBS2ZCQXdDcndRTUFyOEVEQU1mQkF3RGF3UU1BOGNFREFBUENBd0FQd2dNQUlNSURBRGJDQXdCQXdnTUFVY0lEQUdMQ0F3QjF3Z01BZWNJREFIM0NBd0NVd2dNQXBjSURBS25DQXdDdHdnTUF6Y0lEQU56Q0F3RHh3Z01BQmNNREFDZkRBd0JBd3dNQVNzTURBRnZEQXdCNnd3TUFmc01EQUpUREF3Q2Z3d01BczhNREFOWERBd0Rhd3dNQTM4TURBT1REQXdEM3d3TUFCTVFEQUJmRUF3QW14QU1BTjhRREFFekVBd0JneEFNQUE1QURBR1hFQXdCMHhBTUFBQUFBQUNrQUpHVnVaQUJsY25KdmNnQWtkVzVrWldacGJtVmtBRU5QVGxOVUFFSlBUMHdBU1U1VUFGVkpUbFFBUmt4UFFWUUFRbFpGUXpJQVFsWkZRek1BUWxaRlF6UUFTVlpGUXpJQVNWWkZRek1BU1ZaRlF6UUFWVlpGUXpJQVZWWkZRek1BVlZaRlF6UUFWa1ZETWdCV1JVTXpBRlpGUXpRQVRVRlVNZ0JOUVZRekFFMUJWRFFBVFVGVU1sZ3lBRTFCVkRKWU13Qk5RVlF5V0RRQVRVRlVNMWd5QUUxQlZETllNd0JOUVZReldEUUFUVUZVTkZneUFFMUJWRFJZTXdCTlFWUTBXRFFBVTBGTlVFeEZVakpFQUZOQlRWQk1SVkl6UkFCVFFVMVFURVZTUTFWQ1JRQlRRVTFRVEVWU01rUlRTRUZFVDFjQVUwRk5VRXhGVWtOVlFrVlRTRUZFVDFjQVUwRk5VRXhGVWpKRVFWSlNRVmtBVTBGTlVFeEZVakpFUVZKU1FWbFRTRUZFVDFjQVNWTkJUVkJNUlZJeVJBQkpVMEZOVUV4RlVqTkVBRWxUUVUxUVRFVlNRMVZDUlFCSlUwRk5VRXhGVWpKRVFWSlNRVmtBVlZOQlRWQk1SVkl5UkFCVlUwRk5VRXhGVWpORUFGVlRRVTFRVEVWU1ExVkNSUUJWVTBGTlVFeEZVakpFUVZKU1FWa0FVMEZOVUV4RlVnQlRRVTFRVEVWU1UwaEJSRTlYQUZSRldGUlZVa1V5UkFCVVJWaFVWVkpGTTBRQVZFVllWRlZTUlVOVlFrVUFWRVZZVkZWU1JUSkVRVkpTUVZrQVNWUkZXRlJWVWtVeVJBQkpWRVZZVkZWU1JUTkVBRWxVUlZoVVZWSkZRMVZDUlFCSlZFVllWRlZTUlRKRVFWSlNRVmtBVlZSRldGUlZVa1V5UkFCVlZFVllWRlZTUlRORUFGVlVSVmhVVlZKRlExVkNSUUJWVkVWWVZGVlNSVEpFUVZKU1FWa0FRVlJVVWtsQ1ZWUkZBRlpCVWxsSlRrY0FSa3hQUVZReE5sOVVBRVpNVDBGVU16SmZWQUJFVDFWQ1RFVUFSa3hQUVZRMk5GOVVBRWxPVkRZMFgxUUFWVWxPVkRZMFgxUUFTVTVVTXpKZlZBQlZTVTVVTXpKZlZBQkpUbFF4Tmw5VUFGVkpUbFF4Tmw5VUFFbE9WRGhmVkFCVlNVNVVPRjlVQUVrMk5GWkZReklBU1RZMFZrVkRNd0JKTmpSV1JVTTBBRlUyTkZaRlF6SUFWVFkwVmtWRE13QlZOalJXUlVNMEFFa3pNbFpGUXpJQVNUTXlWa1ZETXdCSk16SldSVU0wQUZVek1sWkZReklBVlRNeVZrVkRNd0JWTXpKV1JVTTBBRWt4TmxaRlF6SUFTVEUyVmtWRE13QkpNVFpXUlVNMEFGVXhObFpGUXpJQVZURTJWa1ZETXdCVk1UWldSVU0wQUVrNFZrVkRNZ0JKT0ZaRlF6TUFTVGhXUlVNMEFGVTRWa1ZETWdCVk9GWkZRek1BVlRoV1JVTTBBRVJXUlVNeUFFUldSVU16QUVSV1JVTTBBRVJOUVZReUFFUk5RVlF6QUVSTlFWUTBBRVl4TmxaRlF6SUFSakUyVmtWRE13QkdNVFpXUlVNMEFFWXhOazFCVkRJQVJqRTJUVUZVTXdCR01UWk5RVlEwQUVZek1sWkZReklBUmpNeVZrVkRNd0JHTXpKV1JVTTBBRVl6TWsxQlZESUFSak15VFVGVU13QkdNekpOUVZRMEFFWTJORlpGUXpJQVJqWTBWa1ZETXdCR05qUldSVU0wQUVZMk5FMUJWRElBUmpZMFRVRlVNd0JHTmpSTlFWUTBBRVJOUVZReVdESUFSRTFCVkRKWU13QkVUVUZVTWxnMEFFUk5RVlF6V0RJQVJFMUJWRE5ZTXdCRVRVRlVNMWcwQUVSTlFWUTBXRElBUkUxQlZEUllNd0JFVFVGVU5GZzBBRVl4TmsxQlZESllNZ0JHTVRaTlFWUXlXRE1BUmpFMlRVRlVNbGcwQUVZeE5rMUJWRE5ZTWdCR01UWk5RVlF6V0RNQVJqRTJUVUZVTTFnMEFFWXhOazFCVkRSWU1nQkdNVFpOUVZRMFdETUFSakUyVFVGVU5GZzBBRVl6TWsxQlZESllNZ0JHTXpKTlFWUXlXRE1BUmpNeVRVRlVNbGcwQUVZek1rMUJWRE5ZTWdCR016Sk5RVlF6V0RNQVJqTXlUVUZVTTFnMEFFWXpNazFCVkRSWU1nQkdNekpOUVZRMFdETUFSak15VFVGVU5GZzBBRVkyTkUxQlZESllNZ0JHTmpSTlFWUXlXRE1BUmpZMFRVRlVNbGcwQUVZMk5FMUJWRE5ZTWdCR05qUk5RVlF6V0RNQVJqWTBUVUZVTTFnMEFFWTJORTFCVkRSWU1nQkdOalJOUVZRMFdETUFSalkwVFVGVU5GZzBBRUZVVDAxSlExOVZTVTVVQUVGRFExTlVVbFZEVkU1V0FFWkRUMDlRVFVGVVRsWUFTVU5QVDFCTlFWUk9WZ0JWUTA5UFVFMUJWRTVXQUZOQlRWQk1SVkpEVlVKRlFWSlNRVmtBVTBGTlVFeEZVa05WUWtWQlVsSkJXVk5JUVVSUFZ3QkpVMEZOVUV4RlVrTlZRa1ZCVWxKQldRQlZVMEZOVUV4RlVrTlZRa1ZCVWxKQldRQlRRVTFRVEVWU01VUUFVMEZOVUV4RlVqRkVRVkpTUVZrQVUwRk5VRXhGVWpGRVFWSlNRVmxUU0VGRVQxY0FTVk5CVFZCTVJWSXhSQUJUUVUxUVRFVlNNVVJUU0VGRVQxY0FVMEZOVUV4RlVqSkVVa1ZEVkFCVFFVMVFURVZTTWtSU1JVTlVVMGhCUkU5WEFFbFRRVTFRVEVWU01rUlNSVU5VQUZWVFFVMVFURVZTTWtSU1JVTlVBRk5CVFZCTVJWSkNWVVpHUlZJQVNWTkJUVkJNUlZKQ1ZVWkdSVklBVlZOQlRWQk1SVkpDVlVaR1JWSUFVMEZOVUV4RlVqSkVUVk1BU1ZOQlRWQk1SVkl5UkUxVEFGVlRRVTFRVEVWU01rUk5Vd0JUUVUxUVRFVlNNa1JOVTBGU1VrRlpBRWxUUVUxUVRFVlNNa1JOVTBGU1VrRlpBRlZUUVUxUVRFVlNNa1JOVTBGU1VrRlpBRk5CVFZCTVJWSkZXRlJGVWs1QlRFOUZVd0JUUVUxUVRFVlNSVmhVUlZKT1FVd3lSRmt5V1VWWVZBQkpVMEZOVUV4RlVqRkVRVkpTUVZrQVZWTkJUVkJNUlZJeFJBQlZVMEZOVUV4RlVqRkVRVkpTUVZrQVJqRTJVMEZOVUV4RlVqRkVBRVl4TmxOQlRWQk1SVkl5UkFCR01UWlRRVTFRVEVWU00wUUFSakUyVTBGTlVFeEZVakpFVWtWRFZBQkdNVFpUUVUxUVRFVlNRMVZDUlFCR01UWlRRVTFRVEVWU01VUkJVbEpCV1FCR01UWlRRVTFRVEVWU01rUkJVbEpCV1FCR01UWlRRVTFRVEVWU1ExVkNSVUZTVWtGWkFFWXhObE5CVFZCTVJWSkNWVVpHUlZJQVJqRTJVMEZOVUV4RlVqSkVUVk1BUmpFMlUwRk5VRXhGVWpKRVRWTkJVbEpCV1FCR01UWlRRVTFRVEVWU01VUlRTRUZFVDFjQVJqRTJVMEZOVUV4RlVqSkVVMGhCUkU5WEFFWXhObE5CVFZCTVJWSXhSRUZTVWtGWlUwaEJSRTlYQUVZeE5sTkJUVkJNUlZJeVJFRlNVa0ZaVTBoQlJFOVhBRVl4TmxOQlRWQk1SVkl5UkZKRlExUlRTRUZFVDFjQVJqRTJVMEZOVUV4RlVrTlZRa1ZUU0VGRVQxY0FSakUyVTBGTlVFeEZVa05WUWtWQlVsSkJXVk5JUVVSUFZ3QkpUVUZIUlRGRUFFbEpUVUZIUlRGRUFGVkpUVUZIUlRGRUFFbE5RVWRGTWtRQVNVbE5RVWRGTWtRQVZVbE5RVWRGTWtRQVNVMUJSMFV6UkFCSlNVMUJSMFV6UkFCVlNVMUJSMFV6UkFCSlRVRkhSVEpFVWtWRFZBQkpTVTFCUjBVeVJGSkZRMVFBVlVsTlFVZEZNa1JTUlVOVUFFbE5RVWRGUTFWQ1JRQkpTVTFCUjBWRFZVSkZBRlZKVFVGSFJVTlZRa1VBU1UxQlIwVkNWVVpHUlZJQVNVbE5RVWRGUWxWR1JrVlNBRlZKVFVGSFJVSlZSa1pGVWdCSlRVRkhSVEZFUVZKU1FWa0FTVWxOUVVkRk1VUkJVbEpCV1FCVlNVMUJSMFV4UkVGU1VrRlpBRWxOUVVkRk1rUkJVbEpCV1FCSlNVMUJSMFV5UkVGU1VrRlpBRlZKVFVGSFJUSkVRVkpTUVZrQVNVMUJSMFZEVlVKRlFWSlNRVmtBU1VsTlFVZEZRMVZDUlVGU1VrRlpBRlZKVFVGSFJVTlZRa1ZCVWxKQldRQkpUVUZIUlRKRVRWTUFTVWxOUVVkRk1rUk5Vd0JWU1UxQlIwVXlSRTFUQUVsTlFVZEZNa1JOVTBGU1VrRlpBRWxKVFVGSFJUSkVUVk5CVWxKQldRQlZTVTFCUjBVeVJFMVRRVkpTUVZrQVJqRTJTVTFCUjBVeFJBQkdNVFpKVFVGSFJUSkVBRVl4TmtsTlFVZEZNMFFBUmpFMlNVMUJSMFV5UkZKRlExUUFSakUyU1UxQlIwVkRWVUpGQUVZeE5rbE5RVWRGTVVSQlVsSkJXUUJHTVRaSlRVRkhSVEpFUVZKU1FWa0FSakUyU1UxQlIwVkRWVUpGUVZKU1FWa0FSakUyU1UxQlIwVkNWVVpHUlZJQVJqRTJTVTFCUjBVeVJFMVRBRVl4TmtsTlFVZEZNa1JOVTBGU1VrRlpBRlJGV0ZSVlVrVkRWVUpGUVZKU1FWa0FTVlJGV0ZSVlVrVkRWVUpGUVZKU1FWa0FWVlJGV0ZSVlVrVkRWVUpGUVZKU1FWa0FWRVZZVkZWU1JURkVBRWxVUlZoVVZWSkZNVVFBVlZSRldGUlZVa1V4UkFCVVJWaFVWVkpGTVVSQlVsSkJXUUJKVkVWWVZGVlNSVEZFUVZKU1FWa0FWVlJGV0ZSVlVrVXhSRUZTVWtGWkFGUkZXRlJWVWtVeVJGSkZRMVFBU1ZSRldGUlZVa1V5UkZKRlExUUFWVlJGV0ZSVlVrVXlSRkpGUTFRQVZFVllWRlZTUlVKVlJrWkZVZ0JKVkVWWVZGVlNSVUpWUmtaRlVnQlZWRVZZVkZWU1JVSlZSa1pGVWdCVVJWaFVWVkpGTWtSTlV3QkpWRVZZVkZWU1JUSkVUVk1BVlZSRldGUlZVa1V5UkUxVEFGUkZXRlJWVWtVeVJFMVRRVkpTUVZrQVNWUkZXRlJWVWtVeVJFMVRRVkpTUVZrQVZWUkZXRlJWVWtVeVJFMVRRVkpTUVZrQVJqRTJWRVZZVkZWU1JURkVBRVl4TmxSRldGUlZVa1V5UkFCR01UWlVSVmhVVlZKRk0wUUFSakUyVkVWWVZGVlNSVEpFVWtWRFZBQkdNVFpVUlZoVVZWSkZRMVZDUlFCR01UWlVSVmhVVlZKRk1VUkJVbEpCV1FCR01UWlVSVmhVVlZKRk1rUkJVbEpCV1FCR01UWlVSVmhVVlZKRlExVkNSVUZTVWtGWkFFWXhObFJGV0ZSVlVrVkNWVVpHUlZJQVJqRTJWRVZZVkZWU1JUSkVUVk1BUmpFMlZFVllWRlZTUlRKRVRWTkJVbEpCV1FCVFZVSlFRVk5UU1U1UVZWUUFVMVZDVUVGVFUwbE9VRlZVVFZNQVNWTlZRbEJCVTFOSlRsQlZWQUJKVTFWQ1VFRlRVMGxPVUZWVVRWTUFWVk5WUWxCQlUxTkpUbEJWVkFCVlUxVkNVRUZUVTBsT1VGVlVUVk1BUmpFMlUxVkNVRUZUVTBsT1VGVlVBRVl4TmxOVlFsQkJVMU5KVGxCVlZFMVRBRXhGUmxSZlQxQUFVa2xIU0ZSZlQxQUFTVTVEWDA5UUFFUkZRMTlQVUFCTVJWOVBVQUJIUlY5UFVBQkZVVjlQVUFCT1JWOVBVQUJCVGtSZlQxQUFUMUpmVDFBQVdFOVNYMDlRQUUxVlRGOUJVMU5KUjA0QVJFbFdYMEZUVTBsSFRnQkJSRVJmUVZOVFNVZE9BRTFQUkY5QlUxTkpSMDRBVEVWR1ZGOUJVMU5KUjA0QVVrbEhTRlJmUVZOVFNVZE9BRUZPUkY5QlUxTkpSMDRBV0U5U1gwRlRVMGxIVGdCUFVsOUJVMU5KUjA0QVUxVkNYMEZUVTBsSFRnQk1SVVpVWDFCQlVrVk9BRkpKUjBoVVgxQkJVa1ZPQUV4RlJsUmZRbEpCUTB0RlZBQlNTVWRJVkY5Q1VrRkRTMFZVQUV4RlJsUmZRbEpCUTBVQVVrbEhTRlJmUWxKQlEwVUFSRTlVQUVOUFRVMUJBRU5QVEU5T0FFVlJWVUZNQUZORlRVbERUMHhQVGdCQ1FVNUhBRVJCVTBnQVZFbE1SRVVBVUV4VlV3QlRWRUZTQUZOTVFWTklBRkJGVWtORlRsUUFURVZHVkY5QlRrZE1SUUJTU1VkSVZGOUJUa2RNUlFCV1JWSlVTVU5CVEY5Q1FWSUFRMEZTUlZRQVFVMVFSVkpUUVU1RUFGRlZSVk5VU1U5T0FFbE9Wa0ZTU1VGT1ZBQklTVWRJWDFCU1JVTkpVMGxQVGdCTlJVUkpWVTFmVUZKRlEwbFRTVTlPQUV4UFYxOVFVa1ZEU1ZOSlQwNEFVRkpGUTBsVFNVOU9BRkJCUTB0RlJBQlNSVk5QVlZKRFJRQlRWVkJGVWxBQVJreFBRVlJEVDA1VFZFRk9WQUJKVGxSRFQwNVRWRUZPVkFCVlNVNVVRMDlPVTFSQlRsUUFRazlQVEVOUFRsTlVRVTVVQUVsRVJVNVVTVVpKUlZJQVZGbFFSVjlPUVUxRkFFTkZUbFJTVDBsRUFFbE9BRTlWVkFCSlRrOVZWQUJUVkZKVlExUUFWazlKUkFCWFNFbE1SUUJDVWtWQlN3QkRUMDVVU1U1VlJRQkVUd0JGVEZORkFFWlBVZ0JKUmdCRVNWTkRRVkpFQUZKRlZGVlNUZ0JUVjBsVVEwZ0FRMEZUUlFCRVJVWkJWVXhVQUZWT1NVWlBVazBBVTBoQlVrVkVBRUpWUmtaRlVnQkdURUZVQUZOTlQwOVVTQUJNUVZsUFZWUUFSRTlWUWt4RlEwOU9VMVJCVGxRQVNVNVVNVFpEVDA1VFZFRk9WQUJWU1U1VU1UWkRUMDVUVkVGT1ZBQkdURTlCVkRFMlEwOU9VMVJCVGxRQVNVNVVNekpEVDA1VFZFRk9WQUJWU1U1VU16SkRUMDVUVkVGT1ZBQkpUbFEyTkVOUFRsTlVRVTVVQUZWSlRsUTJORU5QVGxOVVFVNVVBRk5WUWxKUFZWUkpUa1VBUkVWTlQxUkZBRkJCV1V4UFFVUk9WZ0JRUVZsTVQwRkVTVTVPVmdCSVNWUkJWRlJTVGxZQVEwRk1URVJCVkVGT1ZnQkRRVXhNUkVGVVFVbE9UbFlBVUVGVVEwZ0FVMEZOVUV4RkFFNVBUbFZPU1VaUFVrMEFRMDlJUlZKRlRsUUFWazlNUVZSSlRFVUFVa1ZUVkZKSlExUUFVa1ZCUkU5T1RGa0FWMUpKVkVWUFRreFpBRVJGVmtsRFJVTlBTRVZTUlU1VUFGRlZSVlZGUmtGTlNVeFpRMDlJUlZKRlRsUUFWMDlTUzBkU1QxVlFRMDlJUlZKRlRsUUFVMVZDUjFKUFZWQkRUMGhGVWtWT1ZBQk9UMDVRVWtsV1FWUkZBRTVQVUVWU1UxQkZRMVJKVmtVQVJWaFFURWxEU1ZSSlRsUkZVbEJCVFVRQVVFVlNWa1ZTVkVWWVRsWUFVRVZTVUZKSlRVbFVTVlpGVGxZQVVFVlNWa2xGVjA1V0FGQkZVbFJCVTB0T1ZnQlFVa1ZEU1ZORkFDUmhZMk5sY0hRQWRtRnlhV0ZpYkdWZmFXUmxiblJwWm1sbGNnQndjbWx0WVhKNVgyVjRjSEpsYzNOcGIyNEFjRzl6ZEdacGVGOWxlSEJ5WlhOemFXOXVBR2x1ZEdWblpYSmZaWGh3Y21WemMybHZiZ0JtZFc1amRHbHZibDlqWVd4c0FHWjFibU4wYVc5dVgyTmhiR3hmYjNKZmJXVjBhRzlrQUdaMWJtTjBhVzl1WDJOaGJHeGZaMlZ1WlhKcFl3Qm1kVzVqZEdsdmJsOWpZV3hzWDJobFlXUmxjbDl1YjE5d1lYSmhiV1YwWlhKekFHWjFibU4wYVc5dVgyTmhiR3hmYUdWaFpHVnlYM2RwZEdoZmNHRnlZVzFsZEdWeWN3Qm1kVzVqZEdsdmJsOWpZV3hzWDJobFlXUmxjZ0JtZFc1amRHbHZibDlwWkdWdWRHbG1hV1Z5QUhWdVlYSjVYMlY0Y0hKbGMzTnBiMjRBZFc1aGNubGZiM0JsY21GMGIzSUFiWFZzZEdsd2JHbGpZWFJwZG1WZlpYaHdjbVZ6YzJsdmJnQmhaR1JwZEdsMlpWOWxlSEJ5WlhOemFXOXVBSE5vYVdaMFgyVjRjSEpsYzNOcGIyNEFjbVZzWVhScGIyNWhiRjlsZUhCeVpYTnphVzl1QUdWeGRXRnNhWFI1WDJWNGNISmxjM05wYjI0QVlXNWtYMlY0Y0hKbGMzTnBiMjRBWlhoamJIVnphWFpsWDI5eVgyVjRjSEpsYzNOcGIyNEFhVzVqYkhWemFYWmxYMjl5WDJWNGNISmxjM05wYjI0QWJHOW5hV05oYkY5aGJtUmZaWGh3Y21WemMybHZiZ0JzYjJkcFkyRnNYM2h2Y2w5bGVIQnlaWE56YVc5dUFHeHZaMmxqWVd4ZmIzSmZaWGh3Y21WemMybHZiZ0JqYjI1a2FYUnBiMjVoYkY5bGVIQnlaWE56YVc5dUFDUkFNUUJoYzNOcFoyNXRaVzUwWDJWNGNISmxjM05wYjI0QVlYTnphV2R1YldWdWRGOXZjR1Z5WVhSdmNnQmxlSEJ5WlhOemFXOXVBR052Ym5OMFlXNTBYMlY0Y0hKbGMzTnBiMjRBWkdWamJHRnlZWFJwYjI0QVlteHZZMnRmYzNSeWRXTjBkWEpsQUNSQU1nQnBaR1Z1ZEdsbWFXVnlYMnhwYzNRQVpuVnVZM1JwYjI1ZmNISnZkRzkwZVhCbEFHWjFibU4wYVc5dVgyUmxZMnhoY21GMGIzSUFablZ1WTNScGIyNWZhR1ZoWkdWeVgzZHBkR2hmY0dGeVlXMWxkR1Z5Y3dCbWRXNWpkR2x2Ymw5b1pXRmtaWElBY0dGeVlXMWxkR1Z5WDJSbFkyeGhjbUYwYjNJQWNHRnlZVzFsZEdWeVgyUmxZMnhoY21GMGFXOXVBSEJoY21GdFpYUmxjbDkwZVhCbFgzTndaV05wWm1sbGNnQnBibWwwWDJSbFkyeGhjbUYwYjNKZmJHbHpkQUJ6YVc1bmJHVmZaR1ZqYkdGeVlYUnBiMjRBWm5Wc2JIbGZjM0JsWTJsbWFXVmtYM1I1Y0dVQWFXNTJZWEpwWVc1MFgzRjFZV3hwWm1sbGNnQnBiblJsY25CdmJHRjBhVzl1WDNGMVlXeHBabWxsY2dCc1lYbHZkWFJmY1hWaGJHbG1hV1Z5QUd4aGVXOTFkRjl4ZFdGc2FXWnBaWEpmYVdSZmJHbHpkQUJzWVhsdmRYUmZjWFZoYkdsbWFXVnlYMmxrQUhCeVpXTnBjMlZmY1hWaGJHbG1hV1Z5QUhSNWNHVmZjWFZoYkdsbWFXVnlBSE5wYm1kc1pWOTBlWEJsWDNGMVlXeHBabWxsY2dCemRHOXlZV2RsWDNGMVlXeHBabWxsY2dCdWIyNWZkVzVwWm05eWJWOXhkV0ZzYVdacFpYSUFkSGx3WlY5dVlXMWxYMnhwYzNRQWRIbHdaVjl6Y0dWamFXWnBaWElBWVhKeVlYbGZjM0JsWTJsbWFXVnlBSFI1Y0dWZmNHRnlZVzFsZEdWeVgzTndaV05wWm1sbGNsOXZjSFFBZEhsd1pWOXdZWEpoYldWMFpYSmZjM0JsWTJsbWFXVnlBSFI1Y0dWZmNHRnlZVzFsZEdWeVgzTndaV05wWm1sbGNsOXNhWE4wQUhSNWNHVmZjM0JsWTJsbWFXVnlYMjV2Ym1GeWNtRjVBSEJ5WldOcGMybHZibDl4ZFdGc2FXWnBaWElBYzNSeWRXTjBYM053WldOcFptbGxjZ0FrUURNQUpFQTBBSE4wY25WamRGOWtaV05zWVhKaGRHbHZibDlzYVhOMEFITjBjblZqZEY5a1pXTnNZWEpoZEdsdmJnQnpkSEoxWTNSZlpHVmpiR0Z5WVhSdmNsOXNhWE4wQUhOMGNuVmpkRjlrWldOc1lYSmhkRzl5QUdsdWFYUnBZV3hwZW1WeUFHbHVhWFJwWVd4cGVtVnlYMnhwYzNRQVpHVmpiR0Z5WVhScGIyNWZjM1JoZEdWdFpXNTBBSE4wWVhSbGJXVnVkQUJ6YVcxd2JHVmZjM1JoZEdWdFpXNTBBR1JsYlc5MFpWOXpkR0YwWlcxbGJuUUFZMjl0Y0c5MWJtUmZjM1JoZEdWdFpXNTBBQ1JBTlFBa1FEWUFjM1JoZEdWdFpXNTBYMjV2WDI1bGQxOXpZMjl3WlFCemRHRjBaVzFsYm5SZmMyTnZjR1ZrQUNSQU53QWtRRGdBWTI5dGNHOTFibVJmYzNSaGRHVnRaVzUwWDI1dlgyNWxkMTl6WTI5d1pRQnpkR0YwWlcxbGJuUmZiR2x6ZEFCbGVIQnlaWE56YVc5dVgzTjBZWFJsYldWdWRBQnpaV3hsWTNScGIyNWZjM1JoZEdWdFpXNTBBSE5sYkdWamRHbHZibDl6ZEdGMFpXMWxiblJmYm05dVlYUjBjbWxpZFhSbFpBQnpaV3hsWTNScGIyNWZjbVZ6ZEY5emRHRjBaVzFsYm5RQVkyOXVaR2wwYVc5dUFITjNhWFJqYUY5emRHRjBaVzFsYm5RQWMzZHBkR05vWDNOMFlYUmxiV1Z1ZEY5dWIyNWhkSFJ5YVdKMWRHVmtBQ1JBT1FCemQybDBZMmhmYzNSaGRHVnRaVzUwWDJ4cGMzUUFZMkZ6WlY5c1lXSmxiQUJwZEdWeVlYUnBiMjVmYzNSaGRHVnRaVzUwQUdsMFpYSmhkR2x2Ymw5emRHRjBaVzFsYm5SZmJtOXVZWFIwY21saWRYUmxaQUFrUURFd0FDUkFNVEVBSkVBeE1nQm1iM0pmYVc1cGRGOXpkR0YwWlcxbGJuUUFZMjl1WkdsMGFXOXViM0IwQUdadmNsOXlaWE4wWDNOMFlYUmxiV1Z1ZEFCcWRXMXdYM04wWVhSbGJXVnVkQUIwY21GdWMyeGhkR2x2Ymw5MWJtbDBBR1Y0ZEdWeWJtRnNYMlJsWTJ4aGNtRjBhVzl1QUdaMWJtTjBhVzl1WDJSbFptbHVhWFJwYjI0QUpFQXhNd0JoZEhSeWFXSjFkR1ZmYkdsemRBQnphVzVuYkdWZllYUjBjbWxpZFhSbEFFR1NpUThMdkFsZ0FXQUJaZ0ZwQVc0QmNRRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR2FBYUlCcFFHb0Fhc0JyZ0d6QWJzQndnSEpBYzhCMHdIYUFkMEI0d0hxQWZRQi9BRUJBaDBDSmdJc0FqQUNOQUpJQWtrQ1NnSkxBbEVDVWdKWEFsd0NaUUptQW1zQ2N3SjBBbm9DZ3dLRUFva0NqZ0tUQXBzQ25BS2xBckVDc2dLN0Fyd0N4UUxHQXM4QzBBTFlBdGtDNFFMaUF1b0M2d0xyQXYwQy9nSU9BeElERmdNYUF4OERJd01uQXlzREx3TXpBemNEUGdOQkEwd0RVd05ZQTEwRFpBTm9BMndEY0FOMUEzb0Rnd09EQTQ0RGtnT1pBNkFEb3dPcUE3SUR4Z1BkQSt3REJRUVFCQm9FSkFRdUJEY0VPZ1ErQkVJRVJ3UlBCRllFV3dSZ0JHVUViZ1I0QkpNRW5BU2pCS3NFc2dTNUJNRUV5d1RTQk4wRTR3VG1CTzBFOFFUMUJQNEVDQVVMQlJZRkdRVWNCU0FGSkFVcEJTMEZOQVU0QlQwRlF3VkpCVkFGVlFWZEJXTUZid1Y5QllNRmlBV1FCWmdGb0FXb0JhOEZzd1c0QmIwRndnWEhCY3dGMEFYVUJkZ0YzQVhpQmUwRjlBWDNCUUFHQlFZUEJoUUdIQVlnQmlvR0xRWXpCamtHUUFaS0JrNEdVZ1pXQmxzR1h3WmtCbWtHYmdaekJuZ0dmUWFDQm9jR2pBYVNCcGdHbmdhakJxZ0dyUWF5QnJjR3ZBYkJCc1lHeXdiUUJ0VUcyd2JpQnVjRzdBYnhCdllHK3dZQUJ3VUhDZ2NQQnhRSEdRY2hCeWtITVFjM0J6MEhRd2RKQjA4SFZRZGJCMkVIWndkdEIzTUhlUWQvQjRVSGl3ZVJCNWNIblFlakI2a0hyd2UxQjdzSHdRZkhCODBIMHdmWkI5OEg1UWZyQi9FSDl3Zi9Cd2NJRHdnWENCOElKd2d2Q0RjSVB3aEhDRThJVndoZENHTUlhUWh2Q0hVSWV3aUJDSWNJalFpVENKa0lud2lsQ0tzSXNRaTNDTDBJd3dqSkNNOEkxUWpiQ09FSTV3anRDUE1JK1FqL0NBVUpDd2tSQ1JjSkhRa2pDU2tKTHdrekNUZ0pQZ2xEQ1VnSlRRbFNDVmNKWEFsaUNXY0piQWx4Q1hZSmV3bUJDWWNKalFtVENaa0pud21sQ2FzSnNRbTNDYjBKd3duSkNjOEoxQW5aQ2Q0SjR3bm9DZTBKOHduNENmMEpBZ29IQ2d3S0VRb1dDaHdLSVFvbUNpc0tNQW8xQ2pvS1B3cEVDa2tLVGdwVENsZ0tYUXBpQ21nS2JRcHlDbmdLZmdxRENvZ0tqUXFUQ3BnS25RcWlDcWdLclFxeUNyY0t2UXJDQ3NjS3pBclNDdGdLM2dya0N1a0s3d3IxQ3ZzS0FBc0ZDd29MRHdzVUN4b0xId3NrQ3lrTEx3czBDemtMUGd0RUMwa0xUZ3RUQzFrTFhndGpDMmdMYmd0ekMzZ0xmUXVEQzRnTGpRdVNDNWdMblF1aUM2Y0xyUXV5QzdjTHZBdkNDOGNMekF2UkM5Y0wzQXZoQytZTDdBdnhDL1lMK3dzQkRBWU1Dd3dRREJZTUd3d2dEQ1VNS3d3d0REVU1PZ3hBREVVTVNneFFERllNWEF4aURHa01jQXgyREh3TWdneUlESTRNbEF5YkRLQU1zQXkxRExvTXdnekNETTBNelF6WEROb001d3o5REJnTkhBMGlEU2NOTWcwMkRUd05SdzFLRFZFTlZRMVdEVndOWFExZURWOE5ZQTFoRFdJTlpBMXFEWE1OZEExNERYUU5oQTJGRFlrTmlRMlFEWkFObmcyaERha05zUTI4RGIwTndRM0ZEY3dOMHczWERkOE40dzN3RGZRTit3MzdEUThPRWc0WURpUU9NQTQwRGpzT093NUtEa29PV2c1YURtOE9jZzU0RG5zT2dRNkZEb3dPa1E2V0RwME9vQTZwRHEwT3RnNjVEcjBPeGc3R0R0ME80dzdtRHVzTzdnNVNaV1IxWTJsdVp5QnpkR0ZqYXlCaWVTQnlkV3hsSUNWa0lDaHNhVzVsSUNWc2RTazZDZ0FnSUNBa0pXUWdQU0FBUWRpU0R3dk9BZk1BQUFEMEFBQUE5UUFBQVBZQUFBRDNBQUFBK0FBQUFQa0FBQUQ2QUFBQSt3QUFBUHdBQUFEOUFBQUEvZ0FBQVA4QUFBQUFBUUFBQVFFQUFBSUJBQUFEQVFBQUJBRUFBQVVCQUFBR0FRQUFCd0VBQUFnQkFBQUpBUUFBQ2dFQUFBc0JBQUFNQVFBQURRRUFBQTRCQUFBUEFRQUFFQUVBQUJFQkFBQVNBUUFBRXdFQUFCUUJBQUFWQVFBQUZnRUFBQmNCQUFBWUFRQUFHUUVBQUJvQkFBQWJBUUFBSEFFQUFCMEJBQUFlQVFBQUh3RUFBQ0FCQUFBaEFRQUFJZ0VBQUNNQkFBQWtBUUFBSlFFQUFDWUJBRUd3bEE4THl4c0dBQUFBSndFQUFDZ0JBQUFwQVFBQUtnRUFBQ3NCQUFBc0FRQUFMUUVBQUM0QkFBQXZBUUFBTUFFQUFERUJBQUFHQUFBQUJnQUFBRElCQUFBekFRQUFOQUVBQURVQkFBQTJBUUFBQmdBQUFEY0JBQUE0QVFBQWJHRjViM1YwS0FBZ2JHOWpZWFJwYjI0OUFDQmpiMjF3YjI1bGJuUTlBQ0JwYm1SbGVEMEFJSE5sZEQwQUlHSnBibVJwYm1jOUFDQnpkSEpsWVcwOUFDQUFJRzltWm5ObGREMEFJR0ZzYVdkdVBRQWdlR1ppWDJKMVptWmxjajBBSUhobVlsOXZabVp6WlhROUFDQjRabUpmYzNSeWFXUmxQUUFnYVc1d2RYUmZZWFIwWVdOb2JXVnVkRjlwYm1SbGVEMEFJR052Ym5OMFlXNTBYMmxrUFFBZ2NIVnphRjlqYjI1emRHRnVkQUFnWW5WbVptVnlYM0psWm1WeVpXNWpaUUFnWW5WbVptVnlYM0psWm1WeVpXNWpaVjloYkdsbmJqMEFJSEJoYzNOMGFISnZkV2RvQUNCc1lYbHZkWFJXYVdWM2NHOXlkRkpsYkdGMGFYWmxBQ0JzWVhsdmRYUlRaV052Ym1SaGNubFdhV1YzY0c5eWRGSmxiR0YwYVhabFQyWm1jMlYwUFFBZ2MyaGhaR1Z5VW1WamIzSmtUbFlBSUdsdWRtRnlhV0Z1ZEFBZ2JtOURiMjUwY21GamRHbHZiZ0FnWTJWdWRISnZhV1FBSUhOdGIyOTBhQUFnWm14aGRBQWdibTl3WlhKemNHVmpkR2wyWlFBZ1gxOWxlSEJzYVdOcGRFbHVkR1Z5Y0VGTlJBQWdjR1Z5ZG1WeWRHVjRUbFlBSUhCbGNuQnlhVzFwZEdsMlpVNVdBQ0J3WlhKMmFXVjNUbFlBSUhSaGMydE9WZ0FnY0dGMFkyZ0FJSE5oYlhCc1pRQWdZMjlvWlhKbGJuUUFJR1JsZG1salpXTnZhR1Z5Wlc1MEFDQnhkV1YxWldaaGJXbHNlV052YUdWeVpXNTBBQ0IzYjNKclozSnZkWEJqYjJobGNtVnVkQUFnYzNWaVozSnZkWEJqYjJobGNtVnVkQUFnYm05dWNISnBkbUYwWlFBZ2RtOXNZWFJwYkdVQUlISmxjM1J5YVdOMEFDQnlaV0ZrYjI1c2VRQWdkM0pwZEdWdmJteDVBQ0J6Y0dWamFXRnNhWHBoZEdsdmJpMWpiMjV6ZEdGdWRBQWdibTl1ZFc1cFptOXliUUFnY25WdWRHbHRaUzF6YVhwbFpDQmhjbkpoZVNCdlpnQWdkVzV6YVhwbFpBQXRaV3hsYldWdWRDQmhjbkpoZVNCdlpnQXNJQUJZQUNCdFlYUnlhWGdnYjJZQUxXTnZiWEJ2Ym1WdWRDQjJaV04wYjNJZ2IyWUFld0I5QUdOdmJIVnRibDl0WVdwdmNnQnliM2RmYldGcWIzSUFibTl1WlFCemRHUXhOREFBY0dGamEyVmtBSE4wWkRRek1BQnpZMkZzWVhJQWNtZGlZVE15WmdCeVoySmhNVFptQUhKbk16Sm1BSEpuTVRabUFISXhNV1pmWnpFeFpsOWlNVEJtQUhJek1tWUFjakUyWmdCeVoySmhNVFlBY21kaU1UQmZZVElBY21kaVlUZ0FjbWN4TmdCeVp6Z0FjakUyQUhJNEFISm5ZbUV4Tmw5emJtOXliUUJ5WjJKaE9GOXpibTl5YlFCeVp6RTJYM051YjNKdEFISm5PRjl6Ym05eWJRQnlNVFpmYzI1dmNtMEFjamhmYzI1dmNtMEFjbWRpWVRNeWFRQnlaMkpoTVRacEFISm5ZbUU0YVFCeVp6TXlhUUJ5WnpFMmFRQnlaemhwQUhJek1ta0FjakUyYVFCeU9Ha0FjbWRpWVRNeWRXa0FjbWRpWVRFMmRXa0FjbWRpWVRoMWFRQnlaek15ZFdrQWNtY3hOblZwQUhKbllqRXdYMkV5ZFdrQWNtYzRkV2tBY2pNeWRXa0FjakUyZFdrQWNqaDFhUUJzYjNkd0FHMWxaR2wxYlhBQWFHbG5hSEFBZFc1cmJtOTNiaUJ3Y21WamFYTnBiMjRnY1hWaGJHbG1hV1Z5QUhOaGJYQnNaWElBYVFCMUFHWXhOZ0JwT0FCMU9BQnBNVFlBZFRFMkFHazJOQUIxTmpRQWMzVmljR0Z6Y3dCcGJXRm5aUUIwWlhoMGRYSmxBRVY0ZEdWeWJtRnNUMFZUQUY5ZkFFVjRkR1Z5Ym1Gc01rUlpNbGxGV0ZRQU1rUUFNMFFBUTNWaVpRQXhSQUF5UkZKbFkzUUFRblZtWm1WeUFFbHVjSFYwQUUxVEFFRnljbUY1QUZOb1lXUnZkd0JtYkc5aGRBQnBiblFBZFdsdWRBQnpZVzF3YkdWeUwybHRZV2RsQUdsdWREaGZkQUIxYVc1ME9GOTBBR2x1ZERFMlgzUUFkV2x1ZERFMlgzUUFhVzUwTmpSZmRBQjFhVzUwTmpSZmRBQmliMjlzQUdGMGIyMXBZMTkxYVc1MEFITjBjblZqZEhWeVpRQmliRzlqYXdCaFkyTmxiR1Z5WVhScGIyNVRkSEoxWTNSMWNtVk9WZ0J5WldabGNtVnVZMlVBZFc1cmJtOTNiaUIwZVhCbEFFNTFiVmR2Y210SGNtOTFjSE1BVjI5eWEwZHliM1Z3VTJsNlpRQlhiM0pyUjNKdmRYQkpSQUJNYjJOaGJFbHVkbTlqWVhScGIyNUpSQUJIYkc5aVlXeEpiblp2WTJGMGFXOXVTVVFBVEc5allXeEpiblp2WTJGMGFXOXVTVzVrWlhnQVRuVnRVM1ZpWjNKdmRYQnpBRk4xWW1keWIzVndTVVFBVTNWaVIzSnZkWEJUYVhwbEFGTjFZa2R5YjNWd1NXNTJiMk5oZEdsdmJnQlRkV0pIY205MWNFVnhUV0Z6YXdCVGRXSkhjbTkxY0VkbFRXRnphd0JUZFdKSGNtOTFjRWQwVFdGemF3QlRkV0pIY205MWNFeGxUV0Z6YXdCVGRXSkhjbTkxY0V4MFRXRnphd0JUZFdKbmNtOTFjRk5wZW1VQVUzVmlaM0p2ZFhCSmJuWnZZMkYwYVc5dVNVUUFVM1ZpWjNKdmRYQkZjVTFoYzJzQVUzVmlaM0p2ZFhCSFpVMWhjMnNBVTNWaVozSnZkWEJIZEUxaGMyc0FVM1ZpWjNKdmRYQk1aVTFoYzJzQVUzVmlaM0p2ZFhCTWRFMWhjMnNBVm1WeWRHVjRTV1FBU1c1emRHRnVZMlZKWkFCV1pYSjBaWGhKYm1SbGVBQkpibk4wWVc1alpVbHVaR1Y0QUVKaGMyVldaWEowWlhnQVFtRnpaVWx1YzNSaGJtTmxBRVJ5WVhkSlpBQlFiM05wZEdsdmJnQlFiMmx1ZEZOcGVtVUFRMnhwY0ZabGNuUmxlQUJEYkdsd1JHbHpkR0Z1WTJVQVEzVnNiRVJwYzNSaGJtTmxBRTV2Y20xaGJBQldaWEowWlhnQVRYVnNkR2xVWlhoRGIyOXlaREFBVFhWc2RHbFVaWGhEYjI5eVpERUFUWFZzZEdsVVpYaERiMjl5WkRJQVRYVnNkR2xVWlhoRGIyOXlaRE1BVFhWc2RHbFVaWGhEYjI5eVpEUUFUWFZzZEdsVVpYaERiMjl5WkRVQVRYVnNkR2xVWlhoRGIyOXlaRFlBVFhWc2RHbFVaWGhEYjI5eVpEY0FSbkp2Ym5SRGIyeHZjZ0JDWVdOclEyOXNiM0lBUm5KdmJuUlRaV052Ym1SaGNubERiMnh2Y2dCQ1lXTnJVMlZqYjI1a1lYSjVRMjlzYjNJQVZHVjRRMjl2Y21RQVJtOW5SbkpoWjBOdmIzSmtBRWx1ZG05allYUnBiMjVKUkFCUWNtbHRhWFJwZG1WSlJBQk1ZWGxsY2dCV2FXVjNjRzl5ZEVsdVpHVjRBRkJoZEdOb1ZtVnlkR2xqWlhNQVZHVnpjMHhsZG1Wc1QzVjBaWElBVkdWemMweGxkbVZzU1c1dVpYSUFRbTkxYm1ScGJtZENiM2dBVkdWemMwTnZiM0prQUVOdmJHOXlBRk5sWTI5dVpHRnllVU52Ykc5eUFFWmhZMlVBUm5KaFowTnZiM0prQUZCdmFXNTBRMjl2Y21RQVJuSmhaME52Ykc5eUFFWnlZV2RFWVhSaEFFWnlZV2RFWlhCMGFBQkdjbUZuVTNSbGJtTnBiRkpsWmdCVFlXMXdiR1ZKWkFCVFlXMXdiR1ZRYjNOcGRHbHZiZ0JUWVcxd2JHVk5ZWE5yU1c0QVNHVnNjR1Z5U1c1MmIyTmhkR2x2YmdCQ1lYSjVRMjl2Y21ST2IxQmxjbk53QUVKaGNubERiMjl5WkU1dlVHVnljM0JEWlc1MGNtOXBaQUJDWVhKNVEyOXZjbVJPYjFCbGNuTndVMkZ0Y0d4bEFFSmhjbmxEYjI5eVpGTnRiMjkwYUFCQ1lYSjVRMjl2Y21SVGJXOXZkR2hEWlc1MGNtOXBaQUJDWVhKNVEyOXZjbVJUYlc5dmRHaFRZVzF3YkdVQVFtRnllVU52YjNKa1VIVnNiRTF2WkdWc0FGWnBaWGRKYm1SbGVBQkVaWFpwWTJWSmJtUmxlQUJHY21GblUybDZaVVZZVkFCR2NtRm5TVzUyYjJOaGRHbHZia052ZFc1MFJWaFVBRlpwWlhkd2IzSjBUV0Z6YTA1V0FGTmxZMjl1WkdGeWVWQnZjMmwwYVc5dVRsWUFVMlZqYjI1a1lYSjVWbWxsZDNCdmNuUk5ZWE5yVGxZQVVHOXphWFJwYjI1UVpYSldhV1YzVGxZQVZtbGxkM0J2Y25STllYTnJVR1Z5Vm1sbGQwNVdBRVp5WVdkR2RXeHNlVU52ZG1WeVpXUk9WZ0JHY21GbmJXVnVkRk5wZW1WT1ZnQkpiblp2WTJGMGFXOXVjMUJsY2xCcGVHVnNUbFlBVEdGMWJtTm9TV1JPVmdCTVlYVnVZMmhUYVhwbFRsWUFTVzV6ZEdGdVkyVkRkWE4wYjIxSmJtUmxlRTVXQUZkdmNteGtVbUY1VDNKcFoybHVUbFlBVjI5eWJHUlNZWGxFYVhKbFkzUnBiMjVPVmdCUFltcGxZM1JTWVhsUGNtbG5hVzVPVmdCUFltcGxZM1JTWVhsRWFYSmxZM1JwYjI1T1ZnQlBZbXBsWTNSU1lYbFViV2x1VGxZQVQySnFaV04wVW1GNVZHMWhlRTVXQUVocGRGUk9WZ0JJYVhSTGFXNWtUbFlBU1c1amIyMXBibWRTWVhsR2JHRm5jMDVXQUU5aWFtVmpkRlJ2VjI5eWJHUk9WZ0JYYjNKc1pGUnZUMkpxWldOMFRsWUFRbUZ5ZVVOdmIzSmtUbFlBUW1GeWVVTnZiM0prVG05UVpYSnpjRTVXQUZSaGMydERiM1Z1ZEU1V0FGQnlhVzFwZEdsMlpVTnZkVzUwVGxZQVVISnBiV2wwYVhabFNXNWthV05sYzA1V0FFTnNhWEJFYVhOMFlXNWpaVkJsY2xacFpYZE9WZ0JEZFd4c1JHbHpkR0Z1WTJWUVpYSldhV1YzVGxZQVRHRjVaWEpRWlhKV2FXVjNUbFlBVFdWemFGWnBaWGREYjNWdWRFNVdBRTFsYzJoV2FXVjNTVzVrYVdObGMwNVdBRmRoY25CelVHVnlVMDFPVmdCVFRVTnZkVzUwVGxZQVYyRnljRWxFVGxZQVUwMUpSRTVXQUhWdWEyNXZkMjRnWW5WcGJIUXRhVzRnZG1GeWFXRmliR1VBZEdWdGNBQm5iRzlpWVd3QVkyOXVjM1FBWTI5dWMzUWdLSEpsWVdRZ2IyNXNlU2tBWjJ4ZlZtVnlkR1Y0U1dRQVoyeGZTVzV6ZEdGdVkyVkpaQUJuYkY5UWIzTnBkR2x2YmdCbmJGOVFiMmx1ZEZOcGVtVUFaMnhmUTJ4cGNGWmxjblJsZUFCbmJGOUdjbTl1ZEVaaFkybHVad0JuYkY5R2NtRm5RMjl2Y21RQVoyeGZVRzlwYm5SRGIyOXlaQUJtY21GblEyOXNiM0lBWjJ4ZlJuSmhaMFJsY0hSb0FIVnVhMjV2ZDI0Z2NYVmhiR2xtYVdWeUFFZE1YMDVXWDIxbGMyaGZjMmhoWkdWeUFFZE1YMFZZVkY5bmNIVmZjMmhoWkdWeU5RQkhURjlQUlZOZlozQjFYM05vWVdSbGNqVUFSMHhmUzBoU1gyMWxiVzl5ZVY5elkyOXdaVjl6WlcxaGJuUnBZM01BUVlTd0R3c0dPUUVBQURvQkFFR1VzQThMd3dvN0FRQUFQQUVBQUNWekpXUUFZVzV2YmtBQVIweGZSVmhVWDJSbGJXOTBaVjkwYjE5b1pXeHdaWEpmYVc1MmIyTmhkR2x2YmdCSFRGOUZXRlJmWTI5dWRISnZiRjltYkc5M1gyRjBkSEpwWW5WMFpYTUFVM1JoWTJzZ2JtOTNBQ0FsWkFCemVXNTBZWGdnWlhKeWIzSXNJSFZ1Wlhod1pXTjBaV1FnSlhNQWMzbHVkR0Y0SUdWeWNtOXlMQ0IxYm1WNGNHVmpkR1ZrSUNWekxDQmxlSEJsWTNScGJtY2dKWE1BYzNsdWRHRjRJR1Z5Y205eUxDQjFibVY0Y0dWamRHVmtJQ1Z6TENCbGVIQmxZM1JwYm1jZ0pYTWdiM0lnSlhNQWMzbHVkR0Y0SUdWeWNtOXlMQ0IxYm1WNGNHVmpkR1ZrSUNWekxDQmxlSEJsWTNScGJtY2dKWE1nYjNJZ0pYTWdiM0lnSlhNQWMzbHVkR0Y0SUdWeWNtOXlMQ0IxYm1WNGNHVmpkR1ZrSUNWekxDQmxlSEJsWTNScGJtY2dKWE1nYjNJZ0pYTWdiM0lnSlhNZ2IzSWdKWE1BUkdWc1pYUnBibWNBN3RZREFQUFdBd0Q2MWdNQXpvOERBTkdQQXdEZWp3TUEvSThEQUoyUEF3QkRrQU1BVUpBREFDS1FBd0Jma0FNQWJwQURBTTZQQXdEUmp3TUF5SThEQUFEWEF3QVMxd01BSHRjREFDelhBd0E0MXdNQVJkY0RBRlBYQXdCaTF3TUFiOWNEQUgzWEF3Q0gxd01Bblk4REFIdk5Bd0NKelFNQWdzMERBSkROQXdDWHpRTUFuODBEQU1MTkF3RGN6UU1BLzgwREFIYk5Bd0NuelFNQXJjMERBTFBOQXdESHpRTUF6TTBEQU5QTkF3RGl6UU1BNTgwREFPdk5Bd0R2elFNQThzMERBQXZPQXdBV3pnTUFJTTREQUNyT0F3QjJ6UU1BTTg0REFEdk9Bd0JEemdNQVc4NERBSGJOQXdCS3pnTUFVTTREQUZiT0F3Qmd6Z01BWmM0REFIYk5Bd0JwemdNQWNzNERBSHZPQXdDaXpnTUFkczBEQUlQT0F3Q0t6Z01Ba2M0REFKek9Bd0NvemdNQXJzNERBSnFNQXdDenpnTUF1TTREQU1ET0F3RHV6Z01BOHM0REFQek9Bd0Q0emdNQTljNERBT3JPQXdEc3pnTUFBTThEQUFUUEF3Qkp6d01BUHM4REFFSFBBd0JFendNQVRNOERBRlBQQXdCYXp3TUFJSTREQUhEUEF3QWprUU1BS3BFREFJM1BBd0NVendNQW5NOERBS1RQQXdCMnp3TUFlczhEQUszUEF3QzF6d01BdnM4REFNUFBBd0IvendNQXo4OERBTm5QQXdEZnp3TUE5ODhEQUpxTUF3QU8wQU1BSE5BREFDclFBd0EyMEFNQVNOQURBRnZRQXdCdzBBTUFmZEFEQUlqUUF3Q1YwQU1BcU5BREFMZlFBd0RHMEFNQTFkQURBT1RRQXdEejBBTUFBTkVEQUJYUkF3QWswUU1BTTlFREFFTFJBd0JSMFFNQVlORURBR25SQXdCMDBRTUFnTkVEQUk3UkF3Q1owUU1BcHRFREFLM1JBd0MyMFFNQXdORURBTXZSQXdEWTBRTUE1ZEVEQU96UkF3RHowUU1BQXRJREFCSFNBd0FnMGdNQUw5SURBRDdTQXdCTjBnTUFYTklEQUd2U0F3QjIwZ01BZ05JREFKVFNBd0NuMGdNQXNOSURBTDNTQXdESzBnTUExdElEQU56U0F3RHEwZ01BK05JREFBZlRBd0FXMHdNQUl0TURBQ3pUQXdBeTB3TUFRZE1EQUViVEF3QlEwd01BVzlNREFHWFRBd0J1MHdNQWVOTURBSWZUQXdDUTB3TUFuOU1EQUt6VEF3Qzkwd01BenRNREFPZlRBd0QrMHdNQUR0UURBQ2JVQXdBODFBTUFUOVFEQUZuVUF3QmwxQU1BY2RRREFJalVBd0NYMUFNQXE5UURBTVBVQXdEVjFBTUE2OVFEQVA3VUF3QU4xUU1BSTlVREFDN1ZBd0E3MVFNQVVkVURBR0xWQXdCMjFRTUFpTlVEQUozVkF3Q3QxUU1BdmRVREFNVFZBd0RoMVFNQThkVURBTTdWQXdBQjFnTUFEZFlEQUNEV0F3QXMxZ01BUGRZREFGRFdBd0JtMWdNQWZOWURBSXZXQXdDYjFnTUFyZFlEQUxyV0F3REUxZ01BemRZREFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBUWVTNkR3c0dRZ0VBQUVNQkFFSDB1ZzhMaUFORUFRQUFSUUVBQUVOaGJtNXZkQ0J0YVhnZ1JWTWdjSEp2Wm1sc1pTQjNhWFJvSUc1dmJpMUZVeUJ3Y205bWFXeGxJSE5vWVdSbGNuTUFRMkZ1Ym05MElHRjBkR0ZqYUNCdGRXeDBhWEJzWlNCRlV5QnphR0ZrWlhKeklHOW1JSFJvWlNCellXMWxJSFI1Y0dVZ2RHOGdZU0J6YVc1bmJHVWdjSEp2WjNKaGJRQUtUR2x1YTJWa0lBQWdjM1JoWjJVNkNnb0FRSFJvYVhNQVFHTnZkVzUwQUdGc2JHOWpZWFJ2Y2p4VVBqbzZZV3hzYjJOaGRHVW9jMmw2WlY5MElHNHBJQ2R1SnlCbGVHTmxaV1J6SUcxaGVHbHRkVzBnYzNWd2NHOXlkR1ZrSUhOcGVtVUFWMkZ5Ym1sdVp5d2dLSFpsY25OcGIyNHNJSEJ5YjJacGJHVXBJR1p2Y21ObFpDQjBieUJpWlNBb0FDd2dBQ2tzSUhkb2FXeGxJR2x1SUhOdmRYSmpaU0JqYjJSbElHbDBJR2x6SUNnQUtRb0FTV3hzWldkaGJDQjBieUJvWVhabElHNXZiaTFqYjIxdFpXNTBMQ0J1YjI0dGQyaHBkR1Z6Y0dGalpTQjBiMnRsYm5NZ1ltVm1iM0psSUNOMlpYSnphVzl1QUNOMlpYSnphVzl1QUFvZ2FXNTBPd0JCaUw0UEMvSUtSZ0VBQUVjQkFBQWxaQUJ1YjI1bEFHTnZjbVVBWTI5dGNHRjBhV0pwYkdsMGVRQmxjd0IxYm10dWIzZHVJSEJ5YjJacGJHVUFJM1psY25OcGIyNDZJSFpsY25OcGIyNXpJRE13TUN3Z016RXdMQ0JoYm1RZ016SXdJSEpsY1hWcGNtVWdjM0JsWTJsbWVXbHVaeUIwYUdVZ0oyVnpKeUJ3Y205bWFXeGxBQ04yWlhKemFXOXVPaUIyWlhKemFXOXVjeUJpWldadmNtVWdNVFV3SUdSdklHNXZkQ0JoYkd4dmR5QmhJSEJ5YjJacGJHVWdkRzlyWlc0QUkzWmxjbk5wYjI0NklIWmxjbk5wYjI1eklETXdNQ3dnTXpFd0xDQmhibVFnTXpJd0lITjFjSEJ2Y25RZ2IyNXNlU0IwYUdVZ1pYTWdjSEp2Wm1sc1pRQWpkbVZ5YzJsdmJqb2diMjVzZVNCMlpYSnphVzl1SURNd01Dd2dNekV3TENCaGJtUWdNekl3SUhOMWNIQnZjblFnZEdobElHVnpJSEJ5YjJacGJHVUFkbVZ5YzJsdmJpQnViM1FnYzNWd2NHOXlkR1ZrQUNOMlpYSnphVzl1T2lCblpXOXRaWFJ5ZVNCemFHRmtaWEp6SUhKbGNYVnBjbVVnWlhNZ2NISnZabWxzWlNCM2FYUm9JSFpsY25OcGIyNGdNekV3SUc5eUlHNXZiaTFsY3lCd2NtOW1hV3hsSUhkcGRHZ2dkbVZ5YzJsdmJpQXhOVEFnYjNJZ1lXSnZkbVVBSTNabGNuTnBiMjQ2SUhSbGMzTmxiR3hoZEdsdmJpQnphR0ZrWlhKeklISmxjWFZwY21VZ1pYTWdjSEp2Wm1sc1pTQjNhWFJvSUhabGNuTnBiMjRnTXpFd0lHOXlJRzV2YmkxbGN5QndjbTltYVd4bElIZHBkR2dnZG1WeWMybHZiaUF4TlRBZ2IzSWdZV0p2ZG1VQUkzWmxjbk5wYjI0NklHTnZiWEIxZEdVZ2MyaGhaR1Z5Y3lCeVpYRjFhWEpsSUdWeklIQnliMlpwYkdVZ2QybDBhQ0IyWlhKemFXOXVJRE14TUNCdmNpQmhZbTkyWlN3Z2IzSWdibTl1TFdWeklIQnliMlpwYkdVZ2QybDBhQ0IyWlhKemFXOXVJRFF5TUNCdmNpQmhZbTkyWlFBamRtVnljMmx2YmpvZ2NtRjVJSFJ5WVdOcGJtY2djMmhoWkdWeWN5QnlaWEYxYVhKbElHNXZiaTFsY3lCd2NtOW1hV3hsSUhkcGRHZ2dkbVZ5YzJsdmJpQTBOakFnYjNJZ1lXSnZkbVVBSTNabGNuTnBiMjQ2SUcxbGMyZ3ZkR0Z6YXlCemFHRmtaWEp6SUhKbGNYVnBjbVVnWlhNZ2NISnZabWxzWlNCM2FYUm9JSFpsY25OcGIyNGdNekl3SUc5eUlHRmliM1psTENCdmNpQnViMjR0WlhNZ2NISnZabWxzWlNCM2FYUm9JSFpsY25OcGIyNGdORFV3SUc5eUlHRmliM1psQUNOMlpYSnphVzl1T2lCemRHRjBaVzFsYm5RZ2JYVnpkQ0JoY0hCbFlYSWdabWx5YzNRZ2FXNGdaWE10Y0hKdlptbHNaU0J6YUdGa1pYSTdJR0psWm05eVpTQmpiMjF0Wlc1MGN5QnZjaUJ1Wlhkc2FXNWxjd0FqZG1WeWMybHZiam9nUlZNZ2MyaGhaR1Z5Y3lCbWIzSWdVMUJKVWkxV0lISmxjWFZwY21VZ2RtVnljMmx2YmlBek1UQWdiM0lnYUdsbmFHVnlBQ04yWlhKemFXOXVPaUJqYjIxd2FXeGhkR2x2YmlCbWIzSWdVMUJKVWkxV0lHUnZaWE1nYm05MElITjFjSEJ2Y25RZ2RHaGxJR052YlhCaGRHbGlhV3hwZEhrZ2NISnZabWxzWlFBamRtVnljMmx2YmpvZ1JHVnphM1J2Y0NCemFHRmtaWEp6SUdadmNpQldkV3hyWVc0Z1UxQkpVaTFXSUhKbGNYVnBjbVVnZG1WeWMybHZiaUF4TkRBZ2IzSWdhR2xuYUdWeUFDTjJaWEp6YVc5dU9pQkVaWE5yZEc5d0lITm9ZV1JsY25NZ1ptOXlJRTl3Wlc1SFRDQlRVRWxTTFZZZ2NtVnhkV2x5WlNCMlpYSnphVzl1SURNek1DQnZjaUJvYVdkb1pYSUFjbVZzWVhobFpDMWxjbkp2Y25NQWMzVndjSEpsYzNNdGQyRnlibWx1WjNNQWEyVmxjQzExYm1OaGJHeGxaQUJ6YjNWeVkyVXRaVzUwY25sd2IybHVkQUFnQUZWdVlXSnNaU0IwYnlCd1lYSnpaU0JpZFdsc2RDMXBibk1BVlc1aFlteGxJSFJ2SUhCaGNuTmxJR0oxYVd4MExXbHVjd29sY3dvQVFuVnBiSFJwYmxONWJXSnZiRlJoWW14bElIc0tBSDBLQUcxaGFXNEFRWVRKRHd1M0FVZ0JBQUJKQVFBQVRtOGdaWEp5YjNKekxpQWdUbThnWTI5a1pTQm5aVzVsY21GMGFXOXVJRzl5SUd4cGJtdHBibWNnZDJGeklISmxjWFZsYzNSbFpDNEFJR052YlhCcGJHRjBhVzl1SUdWeWNtOXljeTRnSUU1dklHTnZaR1VnWjJWdVpYSmhkR1ZrTGdvS0FGZEJVazVKVGtjNklBQkZVbEpQVWpvZ0FFbE9WRVZTVGtGTUlFVlNVazlTT2lBQVZVNUpUVkJNUlUxRlRsUkZSRG9nQUU1UFZFVTZJQUJWVGt0T1QxZE9JRVZTVWs5U09pQUFDZ0JCeE1vUEN5SktBUUFBU3dFQUFFd0JBQUJOQVFBQVRnRUFBRThCQUFCUUFRQUFVUUVBQUZJQkFFSHd5ZzhMSWtvQkFBQlRBUUFBVEFFQUFFMEJBQUJPQVFBQVR3RUFBRkFCQUFBR0FBQUFVZ0VBUVp6TER3c2pTZ0VBQUZRQkFBQlZBUUFBVFFFQUFFNEJBQUJQQVFBQVpXNTBjbmt0Y0c5cGJuUUFRY3pMRHd1NUFnRUFBQUFBQUFBQVkyeHBaVzUwSUhaMWJHdGhiakV3TUFCamJHbGxiblFnYjNCbGJtZHNNVEF3QUhSaGNtZGxkQzFsYm5ZZ2MzQnBjbll4TGpFQWRHRnlaMlYwTFdWdWRpQnpjR2x5ZGpFdU1nQjBZWEpuWlhRdFpXNTJJSE53YVhKMk1TNHpBSFJoY21kbGRDMWxibllnYzNCcGNuWXhMalFBZEdGeVoyVjBMV1Z1ZGlCemNHbHlkakV1TlFCMFlYSm5aWFF0Wlc1MklITndhWEoyVlc1cmJtOTNiZ0IwWVhKblpYUXRaVzUySUhaMWJHdGhiakV1TUFCMFlYSm5aWFF0Wlc1MklIWjFiR3RoYmpFdU1RQjBZWEpuWlhRdFpXNTJJSFoxYkd0aGJqRXVNZ0IwWVhKblpYUXRaVzUySUhaMWJHdGhibFZ1YTI1dmQyNEFkR0Z5WjJWMExXVnVkaUJ2Y0dWdVoyd0FFOThEQUJqZkF3QXUzd01BSGQ4REFDN2ZBd0F1M3dNQUx0OERBQ3ZmQXdBQkFBQUFBQUFBQUFJQVFaVE9Ed3VmQVFNQUFBQm1NVFlBYVRnQWRUZ0FhVEUyQUhVeE5nQnBOalFBZFRZMEFHRjFBR0Z6Ym5ZQWFRQjFBRWtBY0FCMEFITUFRUUJUQUVVQVdRQXlBRE1BUXdBeEFGSXlBRUlBVUFCTkFITjBjblZqZEMwQVlteHZZMnN0QUhNbFpBQnpKWEFBSldRQUlEd0FMQUErQURvZ0FDQUFXekJkQUFvQUtBQnZaaUFBQUNrQWJnQmhibTl1ZVcxdmRYTWdiV1Z0WW1WeUlBQWdiMllnQUV4RlZrVk1JQUJCdk04UEM2SUJWZ0VBQUZjQkFBQllBUUFBS1FFQUFDb0JBQUJaQVFBQVdnRUFBRnNCQUFCY0FRQUFMd0VBQURBQkFBQXhBUUFBWFFFQUFGNEJBQUF5QVFBQU13RUFBRFFCQUFBMUFRQUFOZ0VBQUY4QkFBQTNBUUFBT0FFQUFHQUJBQUJoQVFBQVlnRUFBR01CQUFCa0FRQUFaUUVBQUdZQkFBQm5BUUFBYUFFQUFHa0JBQUJxQVFBQWF3RUFBR3dCQUFCdEFRQUFiZ0VBQUc4QkFBQndBUUFBY1FFQUFISUJBRUhvMEE4TGhnRnpBUUFBZEFFQUFIVUJBQUFwQVFBQUtnRUFBQ3NCQUFBc0FRQUFMUUVBQUM0QkFBQjJBUUFBZHdFQUFERUJBQUI0QVFBQWVRRUFBRElCQUFBekFRQUFOQUVBQURVQkFBQTJBUUFBZWdFQUFEY0JBQUE0QVFBQWV3RUFBSHdCQUFCOUFRQUFmZ0VBQUg4QkFBQ0FBUUFBZ1FFQUFJSUJBQUNEQVFBQWhBRUFBSVVCQUFDR0FRQkIrTkVQQzg5U2h3RUFBQ2NCQUFDSUFRQUFLUUVBQUNvQkFBQXJBUUFBTEFFQUFDMEJBQUF1QVFBQUx3RUFBREFCQUFDSkFRQUFpZ0VBQUlzQkFBQXlBUUFBTXdFQUFJd0JBQUNOQVFBQWpnRUFBSThCQUFBM0FRQUFPQUVBQUpBQkFBQ1JBUUFBa2dFQUFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBVk9jREFFN25Bd0JRNXdNQVV1Y0RBRmJuQXdCWjV3TUFXK2NEQUVkTVgwOUZVMTkwWlhoMGRYSmxYek5FQUVkTVgwOUZVMTl6ZEdGdVpHRnlaRjlrWlhKcGRtRjBhWFpsY3dCSFRGOUZXRlJmWm5KaFoxOWtaWEIwYUFCSFRGOVBSVk5mUlVkTVgybHRZV2RsWDJWNGRHVnlibUZzQUVkTVgwOUZVMTlGUjB4ZmFXMWhaMlZmWlhoMFpYSnVZV3hmWlhOemJETUFSMHhmUlZoVVgxbFZWbDkwWVhKblpYUUFSMHhmUlZoVVgzTm9ZV1JsY2w5MFpYaDBkWEpsWDJ4dlpBQkhURjlGV0ZSZmMyaGhaRzkzWDNOaGJYQnNaWEp6QUVkTVgwRlNRbDkwWlhoMGRYSmxYM0psWTNSaGJtZHNaUUJIVEY4elJFeGZZWEp5WVhsZmIySnFaV04wY3dCSFRGOUJVa0pmYzJoaFpHbHVaMTlzWVc1bmRXRm5aVjgwTWpCd1lXTnJBRWRNWDBGU1FsOTBaWGgwZFhKbFgyZGhkR2hsY2dCSFRGOUJVa0pmWjNCMVgzTm9ZV1JsY2pVQVIweGZRVkpDWDNObGNHRnlZWFJsWDNOb1lXUmxjbDl2WW1wbFkzUnpBRWRNWDBGU1FsOWpiMjF3ZFhSbFgzTm9ZV1JsY2dCSFRGOUJVa0pmZEdWemMyVnNiR0YwYVc5dVgzTm9ZV1JsY2dCSFRGOUJVa0pmWlc1b1lXNWpaV1JmYkdGNWIzVjBjd0JIVEY5QlVrSmZkR1Y0ZEhWeVpWOWpkV0psWDIxaGNGOWhjbkpoZVFCSFRGOUJVa0pmZEdWNGRIVnlaVjl0ZFd4MGFYTmhiWEJzWlFCSFRGOUJVa0pmYzJoaFpHVnlYM1JsZUhSMWNtVmZiRzlrQUVkTVgwRlNRbDlsZUhCc2FXTnBkRjloZEhSeWFXSmZiRzlqWVhScGIyNEFSMHhmUVZKQ1gyVjRjR3hwWTJsMFgzVnVhV1p2Y20xZmJHOWpZWFJwYjI0QVIweGZRVkpDWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxBRWRNWDBGU1FsOXphR0ZrWlhKZllYUnZiV2xqWDJOdmRXNTBaWEp6QUVkTVgwRlNRbDl6YUdGa1pYSmZaSEpoZDE5d1lYSmhiV1YwWlhKekFFZE1YMEZTUWw5emFHRmtaWEpmWjNKdmRYQmZkbTkwWlFCSFRGOUJVa0pmWkdWeWFYWmhkR2wyWlY5amIyNTBjbTlzQUVkTVgwRlNRbDl6YUdGa1pYSmZkR1Y0ZEhWeVpWOXBiV0ZuWlY5ellXMXdiR1Z6QUVkTVgwRlNRbDkyYVdWM2NHOXlkRjloY25KaGVRQkhURjlCVWtKZlozQjFYM05vWVdSbGNsOXBiblEyTkFCSFRGOUJVa0pmWjNCMVgzTm9ZV1JsY2w5bWNEWTBBRWRNWDBGU1FsOXphR0ZrWlhKZlltRnNiRzkwQUVkTVgwRlNRbDl6Y0dGeWMyVmZkR1Y0ZEhWeVpUSUFSMHhmUVZKQ1gzTndZWEp6WlY5MFpYaDBkWEpsWDJOc1lXMXdBRWRNWDBGU1FsOXphR0ZrWlhKZmMzUmxibU5wYkY5bGVIQnZjblFBUjB4ZlFWSkNYM0J2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVBUjB4ZlFWSkNYM05vWVdSbGNsOTJhV1YzY0c5eWRGOXNZWGxsY2w5aGNuSmhlUUJIVEY5QlVrSmZabkpoWjIxbGJuUmZjMmhoWkdWeVgybHVkR1Z5Ykc5amF3QkhURjlCVWtKZmMyaGhaR1Z5WDJOc2IyTnJBRWRNWDBGU1FsOTFibWxtYjNKdFgySjFabVpsY2w5dlltcGxZM1FBUjB4ZlFWSkNYM05oYlhCc1pWOXphR0ZrYVc1bkFFZE1YMHRJVWw5emFHRmtaWEpmYzNWaVozSnZkWEJmWW1GemFXTUFSMHhmUzBoU1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5MmIzUmxBRWRNWDB0SVVsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZllYSnBkR2h0WlhScFl3QkhURjlMU0ZKZmMyaGhaR1Z5WDNOMVltZHliM1Z3WDJKaGJHeHZkQUJIVEY5TFNGSmZjMmhoWkdWeVgzTjFZbWR5YjNWd1gzTm9kV1ptYkdVQVIweGZTMGhTWDNOb1lXUmxjbDl6ZFdKbmNtOTFjRjl6YUhWbVpteGxYM0psYkdGMGFYWmxBRWRNWDB0SVVsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZlkyeDFjM1JsY21Wa0FFZE1YMHRJVWw5emFHRmtaWEpmYzNWaVozSnZkWEJmY1hWaFpBQkhURjlMU0ZKZmJXVnRiM0o1WDNOamIzQmxYM05sYldGdWRHbGpjd0JIVEY5RldGUmZjMmhoWkdWeVgyRjBiMjFwWTE5cGJuUTJOQUJIVEY5RldGUmZjMmhoWkdWeVgyNXZibDlqYjI1emRHRnVkRjluYkc5aVlXeGZhVzVwZEdsaGJHbDZaWEp6QUVkTVgwVllWRjl6YUdGa1pYSmZhVzFoWjJWZmJHOWhaRjltYjNKdFlYUjBaV1FBUjB4ZlJWaFVYM0J2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVBUjB4ZlJWaFVYMk52Ym5SeWIyeGZabXh2ZDE5aGRIUnlhV0oxZEdWekFFZE1YMFZZVkY5dWIyNTFibWxtYjNKdFgzRjFZV3hwWm1sbGNnQkhURjlGV0ZSZmMyRnRjR3hsY214bGMzTmZkR1Y0ZEhWeVpWOW1kVzVqZEdsdmJuTUFSMHhmUlZoVVgzTmpZV3hoY2w5aWJHOWphMTlzWVhsdmRYUUFSMHhmUlZoVVgyWnlZV2R0Wlc1MFgybHVkbTlqWVhScGIyNWZaR1Z1YzJsMGVRQkhURjlGV0ZSZlluVm1abVZ5WDNKbFptVnlaVzVqWlFCSFRGOUZXRlJmWW5WbVptVnlYM0psWm1WeVpXNWpaVElBUjB4ZlJWaFVYMkoxWm1abGNsOXlaV1psY21WdVkyVmZkWFpsWXpJQVIweGZSVmhVWDJSbGJXOTBaVjkwYjE5b1pXeHdaWEpmYVc1MmIyTmhkR2x2YmdCSFRGOUZXRlJmYzJoaFpHVnlYekUyWW1sMFgzTjBiM0poWjJVQVIweGZSVmhVWDNOb1lXUmxjbDg0WW1sMFgzTjBiM0poWjJVQVIweGZSMDlQUjB4RlgyTndjRjl6ZEhsc1pWOXNhVzVsWDJScGNtVmpkR2wyWlFCSFRGOUhUMDlIVEVWZmFXNWpiSFZrWlY5a2FYSmxZM1JwZG1VQVIweGZRVTFFWDNOb1lXUmxjbDlpWVd4c2IzUUFSMHhmUVUxRVgzTm9ZV1JsY2w5MGNtbHVZWEo1WDIxcGJtMWhlQUJIVEY5QlRVUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgzWmxjblJsZUY5d1lYSmhiV1YwWlhJQVIweGZRVTFFWDJkamJsOXphR0ZrWlhJQVIweGZRVTFFWDJkd2RWOXphR0ZrWlhKZmFHRnNabDltYkc5aGRBQkhURjlCVFVSZmRHVjRkSFZ5WlY5bllYUm9aWEpmWW1saGMxOXNiMlFBUjB4ZlFVMUVYMmR3ZFY5emFHRmtaWEpmYVc1ME1UWUFSMHhmUVUxRVgzTm9ZV1JsY2w5cGJXRm5aVjlzYjJGa1gzTjBiM0psWDJ4dlpBQkhURjlCVFVSZmMyaGhaR1Z5WDJaeVlXZHRaVzUwWDIxaGMyc0FSMHhmUVUxRVgyZHdkVjl6YUdGa1pYSmZhR0ZzWmw5bWJHOWhkRjltWlhSamFBQkhURjlKVGxSRlRGOXphR0ZrWlhKZmFXNTBaV2RsY2w5bWRXNWpkR2x2Ym5NeUFFZE1YMDVXWDNOaGJYQnNaVjl0WVhOclgyOTJaWEp5YVdSbFgyTnZkbVZ5WVdkbEFFZE1YMDVXWDJkbGIyMWxkSEo1WDNOb1lXUmxjbDl3WVhOemRHaHliM1ZuYUFCSFRGOU9WbDkyYVdWM2NHOXlkRjloY25KaGVUSUFSMHhmVGxaZmMzUmxjbVZ2WDNacFpYZGZjbVZ1WkdWeWFXNW5BRWRNWDA1V1dGOXRkV3gwYVhacFpYZGZjR1Z5WDNacFpYZGZZWFIwY21saWRYUmxjd0JIVEY5T1ZsOXphR0ZrWlhKZllYUnZiV2xqWDJsdWREWTBBRWRNWDA1V1gyTnZibk5sY25aaGRHbDJaVjl5WVhOMFpYSmZkVzVrWlhKbGMzUnBiV0YwYVc5dUFFZE1YMDVXWDNOb1lXUmxjbDl1YjNCbGNuTndaV04wYVhabFgybHVkR1Z5Y0c5c1lYUnBiMjRBUjB4ZlRsWmZjMmhoWkdWeVgzTjFZbWR5YjNWd1gzQmhjblJwZEdsdmJtVmtBRWRNWDA1V1gzTm9ZV1JwYm1kZmNtRjBaVjlwYldGblpRQkhURjlPVmw5eVlYbGZkSEpoWTJsdVp3QkhURjlPVmw5bWNtRm5iV1Z1ZEY5emFHRmtaWEpmWW1GeWVXTmxiblJ5YVdNQVIweGZUbFpmWTI5dGNIVjBaVjl6YUdGa1pYSmZaR1Z5YVhaaGRHbDJaWE1BUjB4ZlRsWmZjMmhoWkdWeVgzUmxlSFIxY21WZlptOXZkSEJ5YVc1MEFFZE1YMDVXWDIxbGMyaGZjMmhoWkdWeUFFZE1YMDVXWDJOdmIzQmxjbUYwYVhabFgyMWhkSEpwZUFCSFRGOU9WbDl6YUdGa1pYSmZjMjFmWW5WcGJIUnBibk1BUjB4ZlRsWmZhVzUwWldkbGNsOWpiMjl3WlhKaGRHbDJaVjl0WVhSeWFYZ0FSMHhmUVU1RVVrOUpSRjlsZUhSbGJuTnBiMjVmY0dGamExOWxjek14WVFCSFRGOUxTRkpmWW14bGJtUmZaWEYxWVhScGIyNWZZV1IyWVc1alpXUUFSMHhmVDBWVFgzTmhiWEJzWlY5MllYSnBZV0pzWlhNQVIweGZUMFZUWDNOb1lXUmxjbDlwYldGblpWOWhkRzl0YVdNQVIweGZUMFZUWDNOb1lXUmxjbDl0ZFd4MGFYTmhiWEJzWlY5cGJuUmxjbkJ2YkdGMGFXOXVBRWRNWDA5RlUxOTBaWGgwZFhKbFgzTjBiM0poWjJWZmJYVnNkR2x6WVcxd2JHVmZNbVJmWVhKeVlYa0FSMHhmUlZoVVgyZGxiMjFsZEhKNVgzTm9ZV1JsY2dCSFRGOUZXRlJmWjJWdmJXVjBjbmxmY0c5cGJuUmZjMmw2WlFCSFRGOUZXRlJmWjNCMVgzTm9ZV1JsY2pVQVIweGZSVmhVWDNCeWFXMXBkR2wyWlY5aWIzVnVaR2x1WjE5aWIzZ0FSMHhmUlZoVVgzTm9ZV1JsY2w5cGIxOWliRzlqYTNNQVIweGZSVmhVWDNSbGMzTmxiR3hoZEdsdmJsOXphR0ZrWlhJQVIweGZSVmhVWDNSbGMzTmxiR3hoZEdsdmJsOXdiMmx1ZEY5emFYcGxBRWRNWDBWWVZGOTBaWGgwZFhKbFgySjFabVpsY2dCSFRGOUZXRlJmZEdWNGRIVnlaVjlqZFdKbFgyMWhjRjloY25KaGVRQkhURjlQUlZOZloyVnZiV1YwY25sZmMyaGhaR1Z5QUVkTVgwOUZVMTluWlc5dFpYUnllVjl3YjJsdWRGOXphWHBsQUVkTVgwOUZVMTluY0hWZmMyaGhaR1Z5TlFCSFRGOVBSVk5mY0hKcGJXbDBhWFpsWDJKdmRXNWthVzVuWDJKdmVBQkhURjlQUlZOZmMyaGhaR1Z5WDJsdlgySnNiMk5yY3dCSFRGOVBSVk5mZEdWemMyVnNiR0YwYVc5dVgzTm9ZV1JsY2dCSFRGOVBSVk5mZEdWemMyVnNiR0YwYVc5dVgzQnZhVzUwWDNOcGVtVUFSMHhmVDBWVFgzUmxlSFIxY21WZlluVm1abVZ5QUVkTVgwOUZVMTkwWlhoMGRYSmxYMk4xWW1WZmJXRndYMkZ5Y21GNUFFZE1YMFZZVkY5a1pYWnBZMlZmWjNKdmRYQUFSMHhmUlZoVVgyMTFiSFJwZG1sbGR3QkhURjlGV0ZSZmMyaGhaR1Z5WDNKbFlXeDBhVzFsWDJOc2IyTnJBRWRNWDA5V1VsOXRkV3gwYVhacFpYY0FSMHhmVDFaU1gyMTFiSFJwZG1sbGR6SUFSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6QUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOXBiblE0QUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOXBiblF4TmdCSFRGOUZXRlJmYzJoaFpHVnlYMlY0Y0d4cFkybDBYMkZ5YVhSb2JXVjBhV05mZEhsd1pYTmZhVzUwTXpJQVIweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMmx1ZERZMEFFZE1YMFZZVkY5emFHRmtaWEpmWlhod2JHbGphWFJmWVhKcGRHaHRaWFJwWTE5MGVYQmxjMTltYkc5aGRERTJBRWRNWDBWWVZGOXphR0ZrWlhKZlpYaHdiR2xqYVhSZllYSnBkR2h0WlhScFkxOTBlWEJsYzE5bWJHOWhkRE15QUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOW1iRzloZERZMEFFZE1YMFZZVkY5emFHRmtaWEpmYzNWaVozSnZkWEJmWlhoMFpXNWtaV1JmZEhsd1pYTmZhVzUwT0FCSFRGOUZXRlJmYzJoaFpHVnlYM04xWW1keWIzVndYMlY0ZEdWdVpHVmtYM1I1Y0dWelgybHVkREUyQUVkTVgwVllWRjl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZaWGgwWlc1a1pXUmZkSGx3WlhOZmFXNTBOalFBUjB4ZlJWaFVYM05vWVdSbGNsOXpkV0puY205MWNGOWxlSFJsYm1SbFpGOTBlWEJsYzE5bWJHOWhkREUyQUNOa1pXWnBibVVnUjB4ZlJWTWdNUW9qWkdWbWFXNWxJRWRNWDBaU1FVZE5SVTVVWDFCU1JVTkpVMGxQVGw5SVNVZElJREVLSTJSbFptbHVaU0JIVEY5UFJWTmZkR1Y0ZEhWeVpWOHpSQ0F4Q2lOa1pXWnBibVVnUjB4ZlQwVlRYM04wWVc1a1lYSmtYMlJsY21sMllYUnBkbVZ6SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmWm5KaFoxOWtaWEIwYUNBeENpTmtaV1pwYm1VZ1IweGZUMFZUWDBWSFRGOXBiV0ZuWlY5bGVIUmxjbTVoYkNBeENpTmtaV1pwYm1VZ1IweGZUMFZUWDBWSFRGOXBiV0ZuWlY5bGVIUmxjbTVoYkY5bGMzTnNNeUF4Q2lOa1pXWnBibVVnUjB4ZlJWaFVYMWxWVmw5MFlYSm5aWFFnTVFvalpHVm1hVzVsSUVkTVgwVllWRjl6YUdGa1pYSmZkR1Y0ZEhWeVpWOXNiMlFnTVFvalpHVm1hVzVsSUVkTVgwVllWRjl6YUdGa2IzZGZjMkZ0Y0d4bGNuTWdNUW9qWkdWbWFXNWxJRWRNWDBGT1JGSlBTVVJmWlhoMFpXNXphVzl1WDNCaFkydGZaWE16TVdFZ01Rb2paR1ZtYVc1bElFZE1YMDlGVTE5ellXMXdiR1ZmZG1GeWFXRmliR1Z6SURFS0kyUmxabWx1WlNCSFRGOVBSVk5mYzJoaFpHVnlYMmx0WVdkbFgyRjBiMjFwWXlBeENpTmtaV1pwYm1VZ1IweGZUMFZUWDNOb1lXUmxjbDl0ZFd4MGFYTmhiWEJzWlY5cGJuUmxjbkJ2YkdGMGFXOXVJREVLSTJSbFptbHVaU0JIVEY5UFJWTmZkR1Y0ZEhWeVpWOXpkRzl5WVdkbFgyMTFiSFJwYzJGdGNHeGxYekprWDJGeWNtRjVJREVLSTJSbFptbHVaU0JIVEY5RldGUmZaMlZ2YldWMGNubGZjMmhoWkdWeUlERUtJMlJsWm1sdVpTQkhURjlGV0ZSZloyVnZiV1YwY25sZmNHOXBiblJmYzJsNlpTQXhDaU5rWldacGJtVWdSMHhmUlZoVVgyZHdkVjl6YUdGa1pYSTFJREVLSTJSbFptbHVaU0JIVEY5RldGUmZjSEpwYldsMGFYWmxYMkp2ZFc1a2FXNW5YMkp2ZUNBeENpTmtaV1pwYm1VZ1IweGZSVmhVWDNOb1lXUmxjbDlwYjE5aWJHOWphM01nTVFvalpHVm1hVzVsSUVkTVgwVllWRjkwWlhOelpXeHNZWFJwYjI1ZmMyaGhaR1Z5SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmZEdWemMyVnNiR0YwYVc5dVgzQnZhVzUwWDNOcGVtVWdNUW9qWkdWbWFXNWxJRWRNWDBWWVZGOTBaWGgwZFhKbFgySjFabVpsY2lBeENpTmtaV1pwYm1VZ1IweGZSVmhVWDNSbGVIUjFjbVZmWTNWaVpWOXRZWEJmWVhKeVlYa2dNUW9qWkdWbWFXNWxJRWRNWDA5RlUxOW5aVzl0WlhSeWVWOXphR0ZrWlhJZ01Rb2paR1ZtYVc1bElFZE1YMDlGVTE5blpXOXRaWFJ5ZVY5d2IybHVkRjl6YVhwbElERUtJMlJsWm1sdVpTQkhURjlQUlZOZlozQjFYM05vWVdSbGNqVWdNUW9qWkdWbWFXNWxJRWRNWDA5RlUxOXdjbWx0YVhScGRtVmZZbTkxYm1ScGJtZGZZbTk0SURFS0kyUmxabWx1WlNCSFRGOVBSVk5mYzJoaFpHVnlYMmx2WDJKc2IyTnJjeUF4Q2lOa1pXWnBibVVnUjB4ZlQwVlRYM1JsYzNObGJHeGhkR2x2Ymw5emFHRmtaWElnTVFvalpHVm1hVzVsSUVkTVgwOUZVMTkwWlhOelpXeHNZWFJwYjI1ZmNHOXBiblJmYzJsNlpTQXhDaU5rWldacGJtVWdSMHhmVDBWVFgzUmxlSFIxY21WZlluVm1abVZ5SURFS0kyUmxabWx1WlNCSFRGOVBSVk5mZEdWNGRIVnlaVjlqZFdKbFgyMWhjRjloY25KaGVTQXhDaU5rWldacGJtVWdSMHhmUlZoVVgzTm9ZV1JsY2w5dWIyNWZZMjl1YzNSaGJuUmZaMnh2WW1Gc1gybHVhWFJwWVd4cGVtVnljeUF4Q2dBalpHVm1hVzVsSUVkTVgwNVdYM05vWVdSbGNsOXViM0JsY25Od1pXTjBhWFpsWDJsdWRHVnljRzlzWVhScGIyNGdNUW9BSTJSbFptbHVaU0JIVEY5R1VrRkhUVVZPVkY5UVVrVkRTVk5KVDA1ZlNFbEhTQ0F4Q2lOa1pXWnBibVVnUjB4ZlFWSkNYM1JsZUhSMWNtVmZjbVZqZEdGdVoyeGxJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZjMmhoWkdsdVoxOXNZVzVuZFdGblpWODBNakJ3WVdOcklERUtJMlJsWm1sdVpTQkhURjlCVWtKZmRHVjRkSFZ5WlY5bllYUm9aWElnTVFvalpHVm1hVzVsSUVkTVgwRlNRbDluY0hWZmMyaGhaR1Z5TlNBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDNObGNHRnlZWFJsWDNOb1lXUmxjbDl2WW1wbFkzUnpJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZZMjl0Y0hWMFpWOXphR0ZrWlhJZ01Rb2paR1ZtYVc1bElFZE1YMEZTUWw5MFpYTnpaV3hzWVhScGIyNWZjMmhoWkdWeUlERUtJMlJsWm1sdVpTQkhURjlCVWtKZlpXNW9ZVzVqWldSZmJHRjViM1YwY3lBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDNSbGVIUjFjbVZmWTNWaVpWOXRZWEJmWVhKeVlYa2dNUW9qWkdWbWFXNWxJRWRNWDBGU1FsOTBaWGgwZFhKbFgyMTFiSFJwYzJGdGNHeGxJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZjMmhoWkdWeVgzUmxlSFIxY21WZmJHOWtJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZaWGh3YkdsamFYUmZZWFIwY21saVgyeHZZMkYwYVc5dUlERUtJMlJsWm1sdVpTQkhURjlCVWtKZlpYaHdiR2xqYVhSZmRXNXBabTl5YlY5c2IyTmhkR2x2YmlBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZjMmhoWkdWeVgyRjBiMjFwWTE5amIzVnVkR1Z5Y3lBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDNOb1lXUmxjbDlrY21GM1gzQmhjbUZ0WlhSbGNuTWdNUW9qWkdWbWFXNWxJRWRNWDBGU1FsOXphR0ZrWlhKZlozSnZkWEJmZG05MFpTQXhDaU5rWldacGJtVWdSMHhmUVZKQ1gyUmxjbWwyWVhScGRtVmZZMjl1ZEhKdmJDQXhDaU5rWldacGJtVWdSMHhmUVZKQ1gzTm9ZV1JsY2w5MFpYaDBkWEpsWDJsdFlXZGxYM05oYlhCc1pYTWdNUW9qWkdWbWFXNWxJRWRNWDBGU1FsOTJhV1YzY0c5eWRGOWhjbkpoZVNBeENpTmtaV1pwYm1VZ1IweGZRVkpDWDJkd2RWOXphR0ZrWlhKZmFXNTBOalFnTVFvalpHVm1hVzVsSUVkTVgwRlNRbDluY0hWZmMyaGhaR1Z5WDJad05qUWdNUW9qWkdWbWFXNWxJRWRNWDBGU1FsOXphR0ZrWlhKZlltRnNiRzkwSURFS0kyUmxabWx1WlNCSFRGOUJVa0pmYzNCaGNuTmxYM1JsZUhSMWNtVXlJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZjM0JoY25ObFgzUmxlSFIxY21WZlkyeGhiWEFnTVFvalpHVm1hVzVsSUVkTVgwRlNRbDl6YUdGa1pYSmZjM1JsYm1OcGJGOWxlSEJ2Y25RZ01Rb2paR1ZtYVc1bElFZE1YMEZTUWw5ellXMXdiR1ZmYzJoaFpHbHVaeUF4Q2lOa1pXWnBibVVnUjB4ZlFWSkNYM0J2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVnTVFvalpHVm1hVzVsSUVkTVgwRlNRbDltY21GbmJXVnVkRjl6YUdGa1pYSmZhVzUwWlhKc2IyTnJJREVLSTJSbFptbHVaU0JIVEY5QlVrSmZkVzVwWm05eWJWOWlkV1ptWlhKZmIySnFaV04wSURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYMjV2Ymw5amIyNXpkR0Z1ZEY5bmJHOWlZV3hmYVc1cGRHbGhiR2w2WlhKeklERUtJMlJsWm1sdVpTQkhURjlGV0ZSZmMyaGhaR1Z5WDJsdFlXZGxYMnh2WVdSZlptOXliV0YwZEdWa0lERUtJMlJsWm1sdVpTQkhURjlGV0ZSZmNHOXpkRjlrWlhCMGFGOWpiM1psY21GblpTQXhDaU5rWldacGJtVWdSMHhmUlZoVVgyTnZiblJ5YjJ4ZlpteHZkMTloZEhSeWFXSjFkR1Z6SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYm05dWRXNXBabTl5YlY5eGRXRnNhV1pwWlhJZ01Rb2paR1ZtYVc1bElFZE1YMFZZVkY5emFHRmtaWEpmTVRaaWFYUmZjM1J2Y21GblpTQXhDaU5rWldacGJtVWdSMHhmUlZoVVgzTm9ZV1JsY2w4NFltbDBYM04wYjNKaFoyVWdNUW9qWkdWbWFXNWxJRWRNWDBWWVZGOXpZVzF3YkdWeWJHVnpjMTkwWlhoMGRYSmxYMloxYm1OMGFXOXVjeUF4Q2lOa1pXWnBibVVnUjB4ZlJWaFVYM05qWVd4aGNsOWliRzlqYTE5c1lYbHZkWFFnTVFvalpHVm1hVzVsSUVkTVgwVllWRjltY21GbmJXVnVkRjlwYm5adlkyRjBhVzl1WDJSbGJuTnBkSGtnTVFvalpHVm1hVzVsSUVkTVgwVllWRjlpZFdabVpYSmZjbVZtWlhKbGJtTmxJREVLSTJSbFptbHVaU0JIVEY5RldGUmZZblZtWm1WeVgzSmxabVZ5Wlc1alpUSWdNUW9qWkdWbWFXNWxJRWRNWDBWWVZGOWlkV1ptWlhKZmNtVm1aWEpsYm1ObFgzVjJaV015SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmWkdWdGIzUmxYM1J2WDJobGJIQmxjbDlwYm5adlkyRjBhVzl1SURFS0kyUmxabWx1WlNCSFRGOUxTRkpmYzJoaFpHVnlYM04xWW1keWIzVndYMkpoYzJsaklERUtJMlJsWm1sdVpTQkhURjlMU0ZKZmMyaGhaR1Z5WDNOMVltZHliM1Z3WDNadmRHVWdNUW9qWkdWbWFXNWxJRWRNWDB0SVVsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZllYSnBkR2h0WlhScFl5QXhDaU5rWldacGJtVWdSMHhmUzBoU1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5aVlXeHNiM1FnTVFvalpHVm1hVzVsSUVkTVgwdElVbDl6YUdGa1pYSmZjM1ZpWjNKdmRYQmZjMmgxWm1ac1pTQXhDaU5rWldacGJtVWdSMHhmUzBoU1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5emFIVm1abXhsWDNKbGJHRjBhWFpsSURFS0kyUmxabWx1WlNCSFRGOUxTRkpmYzJoaFpHVnlYM04xWW1keWIzVndYMk5zZFhOMFpYSmxaQ0F4Q2lOa1pXWnBibVVnUjB4ZlMwaFNYM05vWVdSbGNsOXpkV0puY205MWNGOXhkV0ZrSURFS0kyUmxabWx1WlNCRlgwZE1YMFZZVkY5emFHRmtaWEpmWVhSdmJXbGpYMmx1ZERZMElERUtJMlJsWm1sdVpTQkZYMGRNWDBWWVZGOXphR0ZrWlhKZmNtVmhiSFJwYldWZlkyeHZZMnNnTVFvalpHVm1hVzVsSUVkTVgwRk5SRjl6YUdGa1pYSmZZbUZzYkc5MElERUtJMlJsWm1sdVpTQkhURjlCVFVSZmMyaGhaR1Z5WDNSeWFXNWhjbmxmYldsdWJXRjRJREVLSTJSbFptbHVaU0JIVEY5QlRVUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgzWmxjblJsZUY5d1lYSmhiV1YwWlhJZ01Rb2paR1ZtYVc1bElFZE1YMEZOUkY5blkyNWZjMmhoWkdWeUlERUtJMlJsWm1sdVpTQkhURjlCVFVSZlozQjFYM05vWVdSbGNsOW9ZV3htWDJac2IyRjBJREVLSTJSbFptbHVaU0JIVEY5QlRVUmZkR1Y0ZEhWeVpWOW5ZWFJvWlhKZlltbGhjMTlzYjJRZ01Rb2paR1ZtYVc1bElFZE1YMEZOUkY5bmNIVmZjMmhoWkdWeVgybHVkREUySURFS0kyUmxabWx1WlNCSFRGOUJUVVJmYzJoaFpHVnlYMmx0WVdkbFgyeHZZV1JmYzNSdmNtVmZiRzlrSURFS0kyUmxabWx1WlNCSFRGOUJUVVJmYzJoaFpHVnlYMlp5WVdkdFpXNTBYMjFoYzJzZ01Rb2paR1ZtYVc1bElFZE1YMEZOUkY5bmNIVmZjMmhoWkdWeVgyaGhiR1pmWm14dllYUmZabVYwWTJnZ01Rb2paR1ZtYVc1bElFZE1YMGxPVkVWTVgzTm9ZV1JsY2w5cGJuUmxaMlZ5WDJaMWJtTjBhVzl1Y3pJZ01Rb2paR1ZtYVc1bElFZE1YMDVXWDNOaGJYQnNaVjl0WVhOclgyOTJaWEp5YVdSbFgyTnZkbVZ5WVdkbElERUtJMlJsWm1sdVpTQkhURjlPVmw5blpXOXRaWFJ5ZVY5emFHRmtaWEpmY0dGemMzUm9jbTkxWjJnZ01Rb2paR1ZtYVc1bElFZE1YMDVXWDNacFpYZHdiM0owWDJGeWNtRjVNaUF4Q2lOa1pXWnBibVVnUjB4ZlRsWmZjMmhoWkdWeVgyRjBiMjFwWTE5cGJuUTJOQ0F4Q2lOa1pXWnBibVVnUjB4ZlRsWmZZMjl1YzJWeWRtRjBhWFpsWDNKaGMzUmxjbDkxYm1SbGNtVnpkR2x0WVhScGIyNGdNUW9qWkdWbWFXNWxJRWRNWDA1V1gzTm9ZV1JsY2w5emRXSm5jbTkxY0Y5d1lYSjBhWFJwYjI1bFpDQXhDaU5rWldacGJtVWdSMHhmVGxaZmMyaGhaR2x1WjE5eVlYUmxYMmx0WVdkbElERUtJMlJsWm1sdVpTQkhURjlPVmw5eVlYbGZkSEpoWTJsdVp5QXhDaU5rWldacGJtVWdSMHhmVGxaZlpuSmhaMjFsYm5SZmMyaGhaR1Z5WDJKaGNubGpaVzUwY21saklERUtJMlJsWm1sdVpTQkhURjlPVmw5amIyMXdkWFJsWDNOb1lXUmxjbDlrWlhKcGRtRjBhWFpsY3lBeENpTmtaV1pwYm1VZ1IweGZUbFpmYzJoaFpHVnlYM1JsZUhSMWNtVmZabTl2ZEhCeWFXNTBJREVLSTJSbFptbHVaU0JIVEY5T1ZsOXRaWE5vWDNOb1lXUmxjaUF4Q2lOa1pXWnBibVVnUjB4ZlRsWmZZMjl2Y0dWeVlYUnBkbVZmYldGMGNtbDRJREVLSTJSbFptbHVaU0JIVEY5T1ZsOXBiblJsWjJWeVgyTnZiM0JsY21GMGFYWmxYMjFoZEhKcGVDQXhDaU5rWldacGJtVWdSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYMlY0Y0d4cFkybDBYMkZ5YVhSb2JXVjBhV05mZEhsd1pYTmZhVzUwT0NBeENpTmtaV1pwYm1VZ1IweGZSVmhVWDNOb1lXUmxjbDlsZUhCc2FXTnBkRjloY21sMGFHMWxkR2xqWDNSNWNHVnpYMmx1ZERFMklERUtJMlJsWm1sdVpTQkhURjlGV0ZSZmMyaGhaR1Z5WDJWNGNHeHBZMmwwWDJGeWFYUm9iV1YwYVdOZmRIbHdaWE5mYVc1ME16SWdNUW9qWkdWbWFXNWxJRWRNWDBWWVZGOXphR0ZrWlhKZlpYaHdiR2xqYVhSZllYSnBkR2h0WlhScFkxOTBlWEJsYzE5cGJuUTJOQ0F4Q2lOa1pXWnBibVVnUjB4ZlJWaFVYM05vWVdSbGNsOWxlSEJzYVdOcGRGOWhjbWwwYUcxbGRHbGpYM1I1Y0dWelgyWnNiMkYwTVRZZ01Rb2paR1ZtYVc1bElFZE1YMFZZVkY5emFHRmtaWEpmWlhod2JHbGphWFJmWVhKcGRHaHRaWFJwWTE5MGVYQmxjMTltYkc5aGRETXlJREVLSTJSbFptbHVaU0JIVEY5RldGUmZjMmhoWkdWeVgyVjRjR3hwWTJsMFgyRnlhWFJvYldWMGFXTmZkSGx3WlhOZlpteHZZWFEyTkNBeENpTmtaV1pwYm1VZ1IweGZSVmhVWDNOb1lXUmxjbDl6ZFdKbmNtOTFjRjlsZUhSbGJtUmxaRjkwZVhCbGMxOXBiblE0SURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYM04xWW1keWIzVndYMlY0ZEdWdVpHVmtYM1I1Y0dWelgybHVkREUySURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYM04xWW1keWIzVndYMlY0ZEdWdVpHVmtYM1I1Y0dWelgybHVkRFkwSURFS0kyUmxabWx1WlNCSFRGOUZXRlJmYzJoaFpHVnlYM04xWW1keWIzVndYMlY0ZEdWdVpHVmtYM1I1Y0dWelgyWnNiMkYwTVRZZ01Rb0FJMlJsWm1sdVpTQkhURjlqYjNKbFgzQnliMlpwYkdVZ01Rb0FJMlJsWm1sdVpTQkhURjlqYjIxd1lYUnBZbWxzYVhSNVgzQnliMlpwYkdVZ01Rb0FJMlJsWm1sdVpTQkhURjlGV0ZSZlpHVjJhV05sWDJkeWIzVndJREVLSTJSbFptbHVaU0JIVEY5RldGUmZiWFZzZEdsMmFXVjNJREVLSTJSbFptbHVaU0JIVEY5T1ZsOXphR0ZrWlhKZmMyMWZZblZwYkhScGJuTWdNUW9BSTJSbFptbHVaU0JIVEY5UFZsSmZiWFZzZEdsMmFXVjNJREVLSTJSbFptbHVaU0JIVEY5UFZsSmZiWFZzZEdsMmFXVjNNaUF4Q2dBalpHVm1hVzVsSUVkTVgwZFBUMGRNUlY5amNIQmZjM1I1YkdWZmJHbHVaVjlrYVhKbFkzUnBkbVVnTVFvalpHVm1hVzVsSUVkTVgwZFBUMGRNUlY5cGJtTnNkV1JsWDJScGNtVmpkR2wyWlNBeENpTmtaV1pwYm1VZ1IweGZTMGhTWDJKc1pXNWtYMlZ4ZFdGMGFXOXVYMkZrZG1GdVkyVmtJREVLQUNOa1pXWnBibVVnVmxWTVMwRk9JQUFsWkFBS0FDTmtaV1pwYm1VZ1IweGZVMUJKVWxZZ0FIWmxjblJsZUFCbWNtRm5iV1Z1ZEFCamIyMXdkWFJsQUhSbGMzTmxiR3hoZEdsdmJpQmpiMjUwY205c0FIUmxjM05sYkd4aGRHbHZiaUJsZG1Gc2RXRjBhVzl1QUdkbGIyMWxkSEo1QUhKaGVTMW5aVzVsY21GMGFXOXVBR2x1ZEdWeWMyVmpkR2x2YmdCaGJua3RhR2wwQUdOc2IzTmxjM1F0YUdsMEFHMXBjM01BWTJGc2JHRmliR1VBYldWemFBQjBZWE5yQUhWdWEyNXZkMjRnYzNSaFoyVUFibTkwSUhOMWNIQnZjblJsWkNCcGJpQjBhR2x6SUhOMFlXZGxPZ0J1YjNRZ2MzVndjRzl5ZEdWa0lIZHBkR2dnZEdocGN5QndjbTltYVd4bE9nQmxlSFJsYm5OcGIyNGdBQ0JwY3lCaVpXbHVaeUIxYzJWa0lHWnZjaUFBYm05MElITjFjSEJ2Y25SbFpDQm1iM0lnZEdocGN5QjJaWEp6YVc5dUlHOXlJSFJvWlNCbGJtRmliR1ZrSUdWNGRHVnVjMmx2Ym5NQUFHWmxZWFIxY21VZ2JtOTBJSGxsZENCcGJYQnNaVzFsYm5SbFpBQmtaWEJ5WldOaGRHVmtMQ0J0WVhrZ1ltVWdjbVZ0YjNabFpDQnBiaUJtZFhSMWNtVWdjbVZzWldGelpRQWdaR1Z3Y21WallYUmxaQ0JwYmlCMlpYSnphVzl1SUFBN0lHMWhlU0JpWlNCeVpXMXZkbVZrSUdsdUlHWjFkSFZ5WlNCeVpXeGxZWE5sQUNWeklIQnliMlpwYkdVN0lISmxiVzkyWldRZ2FXNGdkbVZ5YzJsdmJpQWxaQUJ1YnlCc2IyNW5aWElnYzNWd2NHOXlkR1ZrSUdsdUFGUm9aU0JtYjJ4c2IzZHBibWNnWlhoMFpXNXphVzl1SUcxMWMzUWdZbVVnWlc1aFlteGxaQ0IwYnlCMWMyVWdkR2hwY3lCbVpXRjBkWEpsT2dCeVpYRjFhWEpsWkNCbGVIUmxibk5wYjI0Z2JtOTBJSEpsY1hWbGMzUmxaRG9BVUc5emMybGliR1VnWlhoMFpXNXphVzl1Y3lCcGJtTnNkV1JsT2dCeVpYRjFhWEpsQUdWdVlXSnNaUUJrYVhOaFlteGxBSGRoY200QVltVm9ZWFpwYjNJZ2JtOTBJSE4xY0hCdmNuUmxaRG9BSTJWNGRHVnVjMmx2YmdCaGJHd0FaWGgwWlc1emFXOXVJQ2RoYkd3bklHTmhibTV2ZENCb1lYWmxJQ2R5WlhGMWFYSmxKeUJ2Y2lBblpXNWhZbXhsSnlCaVpXaGhkbWx2Y2dCbGVIUmxibk5wYjI0Z2JtOTBJSE4xY0hCdmNuUmxaRG9BWlhoMFpXNXphVzl1SUdseklHOXViSGtnY0dGeWRHbGhiR3g1SUhOMWNIQnZjblJsWkRvQUkyVjRkR1Z1YzJsdmJpQkhURjlPVmw5dFpYTm9YM05vWVdSbGNnQTZJQUFBQUlQeEF3QjM5d01BVnZnREFFSFFwQkFMTjRQeEF3Q2g4QU1BZC9jREFGYjRBd0IzOXdNQWh2Z0RBSGYzQXdDMitBTUFkL2NEQUovM0F3QVc4Z01Bdi9FREFIZjNBd0RNOXdNQVFaQ2xFQXZKQWIveEF3Q2g4QU1BZC9jREFNejNBd0M5OEFNQWQvY0RBSi8zQXdBQUFBQUFkL2NEQVByM0F3QzA3QU1BZC9jREFDajRBd0J1YjNRZ1lXeHNiM2RsWkNCM2FHVnVJR2RsYm1WeVlYUnBibWNnVTFCSlVpMVdBRzV2ZENCaGJHeHZkMlZrSUhkb1pXNGdkWE5wYm1jZ1IweFRUQ0JtYjNJZ1ZuVnNhMkZ1QUc5dWJIa2dZV3hzYjNkbFpDQjNhR1Z1SUhWemFXNW5JRWRNVTB3Z1ptOXlJRloxYkd0aGJnQnZibXg1SUdGc2JHOTNaV1FnZDJobGJpQm5aVzVsY21GMGFXNW5JRk5RU1ZJdFZnQkI1S1lRQzlsc2t3RUFBSlFCQUFDZ0FBQUFvUUFBQUtJQUFBQ2pBQUFBcEFBQUFLVUFBQUNtQUFBQXB3QUFBS2dBQUFDcEFBQUFxZ0FBQUtzQUFBQ3NBQUFBclFBQUFLNEFBQUN2QUFBQXNBQUFBTEVBQUFDeUFBQUFzd0FBQUxRQUFBQzFBQUFBdGdBQUFMY0FBQUM0QUFBQXVRQUFBTG9BQUFDN0FBQUF2QUFBQUwwQUFBQytBQUFBdndBQUFNQUFBQURCQUFBQXdnQUFBTU1BQUFERUFBQUF4UUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUJoYkd4dlkyRjBiM0k4VkQ0Nk9tRnNiRzlqWVhSbEtITnBlbVZmZENCdUtTQW5iaWNnWlhoalpXVmtjeUJ0WVhocGJYVnRJSE4xY0hCdmNuUmxaQ0J6YVhwbEFBQUFBQURvRGdRQUFBOEVBQlVQQkFBdER3UUE3dzRFQVBnT0JBQTJEd1FBUlE4RUFGSVBCQUJhRHdRQVpnOEVBR3NQQkFCNUR3UUFkQThFQUcxdmRtVWdjMlZqYjI1a0lHTm9hV3hrSUhSdklHWnBjbk4wSUdOb2FXeGtBR0ZrWkNCelpXTnZibVFnWTJocGJHUWdhVzUwYnlCbWFYSnpkQ0JqYUdsc1pBQnpkV0owY21GamRDQnpaV052Ym1RZ1kyaHBiR1FnYVc1MGJ5Qm1hWEp6ZENCamFHbHNaQUJ0ZFd4MGFYQnNlU0J6WldOdmJtUWdZMmhwYkdRZ2FXNTBieUJtYVhKemRDQmphR2xzWkFCdFlYUnlhWGdnYlhWc2RDQnpaV052Ym1RZ1kyaHBiR1FnYVc1MGJ5Qm1hWEp6ZENCamFHbHNaQUIyWldOMGIzSWdjMk5oYkdVZ2MyVmpiMjVrSUdOb2FXeGtJR2x1ZEc4Z1ptbHljM1FnWTJocGJHUUFiV0YwY21sNElITmpZV3hsSUhObFkyOXVaQ0JqYUdsc1pDQnBiblJ2SUdacGNuTjBJR05vYVd4a0FHUnBkbWxrWlNCelpXTnZibVFnWTJocGJHUWdhVzUwYnlCbWFYSnpkQ0JqYUdsc1pBQnRiMlFnYzJWamIyNWtJR05vYVd4a0lHbHVkRzhnWm1seWMzUWdZMmhwYkdRQVlXNWtJSE5sWTI5dVpDQmphR2xzWkNCcGJuUnZJR1pwY25OMElHTm9hV3hrQUc5eUlITmxZMjl1WkNCamFHbHNaQ0JwYm5SdklHWnBjbk4wSUdOb2FXeGtBR1Y0WTJ4MWMybDJaU0J2Y2lCelpXTnZibVFnWTJocGJHUWdhVzUwYnlCbWFYSnpkQ0JqYUdsc1pBQnNaV1owSUhOb2FXWjBJSE5sWTI5dVpDQmphR2xzWkNCcGJuUnZJR1pwY25OMElHTm9hV3hrQUhKcFoyaDBJSE5vYVdaMElITmxZMjl1WkNCamFHbHNaQ0JwYm5SdklHWnBjbk4wSUdOb2FXeGtBR1JwY21WamRDQnBibVJsZUFCcGJtUnBjbVZqZENCcGJtUmxlQUE2SUdScGNtVmpkQ0JwYm1SbGVDQm1iM0lnYzNSeWRXTjBkWEpsQUhabFkzUnZjaUJ6ZDJsNmVteGxBRzFoZEhKcGVDQnpkMmw2ZW14bEFHRmtaQUJ6ZFdKMGNtRmpkQUJqYjIxd2IyNWxiblF0ZDJselpTQnRkV3gwYVhCc2VRQmthWFpwWkdVQWJXOWtBSEpwWjJoMExYTm9hV1owQUd4bFpuUXRjMmhwWm5RQVltbDBkMmx6WlNCaGJtUUFhVzVqYkhWemFYWmxMVzl5QUdWNFkyeDFjMmwyWlMxdmNnQkRiMjF3WVhKbElFVnhkV0ZzQUVOdmJYQmhjbVVnVG05MElFVnhkV0ZzQUVOdmJYQmhjbVVnVEdWemN5QlVhR0Z1QUVOdmJYQmhjbVVnUjNKbFlYUmxjaUJVYUdGdUFFTnZiWEJoY21VZ1RHVnpjeUJVYUdGdUlHOXlJRVZ4ZFdGc0FFTnZiWEJoY21VZ1IzSmxZWFJsY2lCVWFHRnVJRzl5SUVWeGRXRnNBRVZ4ZFdGc0FFNXZkRVZ4ZFdGc0FIWmxZM1J2Y2kxelkyRnNaUUIyWldOMGIzSXRkR2x0WlhNdGJXRjBjbWw0QUcxaGRISnBlQzEwYVcxbGN5MTJaV04wYjNJQWJXRjBjbWw0TFhOallXeGxBRzFoZEhKcGVDMXRkV3gwYVhCc2VRQnNiMmRwWTJGc0xXOXlBR3h2WjJsallXd3RlRzl5QUd4dloybGpZV3d0WVc1a0FHRmljMjlzZFhSbFJHbG1abVZ5Wlc1alpRQmhaR1JUWVhSMWNtRjBaUUJ6ZFdKMGNtRmpkRk5oZEhWeVlYUmxBR0YyWlhKaFoyVUFZWFpsY21GblpWSnZkVzVrWldRQWJYVnNkR2x3Ykhrek1uZ3hOZ0E4ZFc1cmJtOTNiaUJ2Y0Q0QUlDZ0FLUUFLQUU1bFoyRjBaU0IyWVd4MVpRQk9aV2RoZEdVZ1kyOXVaR2wwYVc5dVlXd0FRbWwwZDJselpTQnViM1FBVUc5emRDMUpibU55WlcxbGJuUUFVRzl6ZEMxRVpXTnlaVzFsYm5RQVVISmxMVWx1WTNKbGJXVnVkQUJRY21VdFJHVmpjbVZ0Wlc1MEFHTnZjSGtnYjJKcVpXTjBBRU52Ym5abGNuUWdhVzUwT0Y5MElIUnZJR0p2YjJ3QVEyOXVkbVZ5ZENCMWFXNTBPRjkwSUhSdklHSnZiMndBUTI5dWRtVnlkQ0JwYm5ReE5sOTBJSFJ2SUdKdmIyd0FRMjl1ZG1WeWRDQjFhVzUwTVRaZmRDQjBieUJpYjI5c0FFTnZiblpsY25RZ2FXNTBJSFJ2SUdKdmIyd0FRMjl1ZG1WeWRDQjFhVzUwSUhSdklHSnZiMndBUTI5dWRtVnlkQ0JwYm5RMk5DQjBieUJpYjI5c0FFTnZiblpsY25RZ2RXbHVkRFkwSUhSdklHSnZiMndBUTI5dWRtVnlkQ0JtYkc5aGRERTJYM1FnZEc4Z1ltOXZiQUJEYjI1MlpYSjBJR1pzYjJGMElIUnZJR0p2YjJ3QVEyOXVkbVZ5ZENCa2IzVmliR1VnZEc4Z1ltOXZiQUJEYjI1MlpYSjBJR0p2YjJ3Z2RHOGdhVzUwT0Y5MEFFTnZiblpsY25RZ1ltOXZiQ0IwYnlCMWFXNTBPRjkwQUVOdmJuWmxjblFnWW05dmJDQjBieUJwYmpFMmRGOTBBRU52Ym5abGNuUWdZbTl2YkNCMGJ5QjFhVzUwTVRaZmRBQkRiMjUyWlhKMElHSnZiMndnZEc4Z2FXNTBBRU52Ym5abGNuUWdZbTl2YkNCMGJ5QjFhVzUwQUVOdmJuWmxjblFnWW05dmJDQjBieUJwYm5RMk5BQkRiMjUyWlhKMElHSnZiMndnZEc4Z2RXbHVkRFkwQUVOdmJuWmxjblFnWW05dmJDQjBieUJtYkc5aGRERTJYM1FBUTI5dWRtVnlkQ0JpYjI5c0lIUnZJR1pzYjJGMEFFTnZiblpsY25RZ1ltOXZiQ0IwYnlCa2IzVmliR1VBUTI5dWRtVnlkQ0JwYm5RNFgzUWdkRzhnYVc1ME1UWmZkQUJEYjI1MlpYSjBJR2x1ZERoZmRDQjBieUJwYm5RQVEyOXVkbVZ5ZENCcGJuUTRYM1FnZEc4Z2FXNTBOalFBUTI5dWRtVnlkQ0JwYm5RNFgzUWdkRzhnZFdsdWREaGZkQUJEYjI1MlpYSjBJR2x1ZERoZmRDQjBieUIxYVc1ME1UWmZkQUJEYjI1MlpYSjBJR2x1ZERoZmRDQjBieUIxYVc1MEFFTnZiblpsY25RZ2FXNTBPRjkwSUhSdklIVnBiblEyTkFCRGIyNTJaWEowSUhWcGJuUTRYM1FnZEc4Z2FXNTBPRjkwQUVOdmJuWmxjblFnZFdsdWREaGZkQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnZFdsdWREaGZkQ0IwYnlCcGJuUUFRMjl1ZG1WeWRDQjFhVzUwT0Y5MElIUnZJR2x1ZERZMEFFTnZiblpsY25RZ2RXbHVkRGhmZENCMGJ5QjFhVzUwTVRaZmRBQkRiMjUyWlhKMElIVnBiblE0WDNRZ2RHOGdkV2x1ZEFCRGIyNTJaWEowSUhWcGJuUTRYM1FnZEc4Z2RXbHVkRFkwQUVOdmJuWmxjblFnYVc1ME9GOTBJSFJ2SUdac2IyRjBNVFpmZEFCRGIyNTJaWEowSUdsdWREaGZkQ0IwYnlCbWJHOWhkQUJEYjI1MlpYSjBJR2x1ZERoZmRDQjBieUJrYjNWaWJHVUFRMjl1ZG1WeWRDQjFhVzUwT0Y5MElIUnZJR1pzYjJGME1UWmZkQUJEYjI1MlpYSjBJSFZwYm5RNFgzUWdkRzhnWm14dllYUUFRMjl1ZG1WeWRDQjFhVzUwT0Y5MElIUnZJR1J2ZFdKc1pRQkRiMjUyWlhKMElHbHVkREUyWDNRZ2RHOGdhVzUwT0Y5MEFFTnZiblpsY25RZ2FXNTBNVFpmZENCMGJ5QnBiblFBUTI5dWRtVnlkQ0JwYm5ReE5sOTBJSFJ2SUdsdWREWTBBRU52Ym5abGNuUWdhVzUwTVRaZmRDQjBieUIxYVc1ME9GOTBBRU52Ym5abGNuUWdhVzUwTVRaZmRDQjBieUIxYVc1ME1UWmZkQUJEYjI1MlpYSjBJR2x1ZERFMlgzUWdkRzhnZFdsdWRBQkRiMjUyWlhKMElHbHVkREUyWDNRZ2RHOGdkV2x1ZERZMEFFTnZiblpsY25RZ2FXNTBNVFpmZENCMGJ5Qm1iRzloZERFMlgzUUFRMjl1ZG1WeWRDQnBiblF4Tmw5MElIUnZJR1pzYjJGMEFFTnZiblpsY25RZ2FXNTBNVFpmZENCMGJ5QmtiM1ZpYkdVQVEyOXVkbVZ5ZENCMWFXNTBNVFpmZENCMGJ5QnBiblE0WDNRQVEyOXVkbVZ5ZENCMWFXNTBNVFpmZENCMGJ5QnBiblF4Tmw5MEFFTnZiblpsY25RZ2RXbHVkREUyWDNRZ2RHOGdhVzUwQUVOdmJuWmxjblFnZFdsdWRERTJYM1FnZEc4Z2FXNTBOalFBUTI5dWRtVnlkQ0IxYVc1ME1UWmZkQ0IwYnlCMWFXNTBPRjkwQUVOdmJuWmxjblFnZFdsdWRERTJYM1FnZEc4Z2RXbHVkQUJEYjI1MlpYSjBJSFZwYm5ReE5sOTBJSFJ2SUhWcGJuUTJOQUJEYjI1MlpYSjBJSFZwYm5ReE5sOTBJSFJ2SUdac2IyRjBNVFpmZEFCRGIyNTJaWEowSUhWcGJuUXhObDkwSUhSdklHWnNiMkYwQUVOdmJuWmxjblFnZFdsdWRERTJYM1FnZEc4Z1pHOTFZbXhsQUVOdmJuWmxjblFnYVc1MElIUnZJR2x1ZERoZmRBQkRiMjUyWlhKMElHbHVkQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnYVc1MElIUnZJR2x1ZERZMEFFTnZiblpsY25RZ2FXNTBJSFJ2SUhWcGJuUTRYM1FBUTI5dWRtVnlkQ0JwYm5RZ2RHOGdkV2x1ZERFMlgzUUFRMjl1ZG1WeWRDQnBiblFnZEc4Z2RXbHVkQUJEYjI1MlpYSjBJR2x1ZENCMGJ5QjFhVzUwTmpRQVEyOXVkbVZ5ZENCcGJuUWdkRzhnWm14dllYUXhObDkwQUVOdmJuWmxjblFnYVc1MElIUnZJR1pzYjJGMEFFTnZiblpsY25RZ2FXNTBJSFJ2SUdSdmRXSnNaUUJEYjI1MlpYSjBJSFZwYm5RZ2RHOGdhVzUwT0Y5MEFFTnZiblpsY25RZ2RXbHVkQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnZFdsdWRDQjBieUJwYm5RQVEyOXVkbVZ5ZENCMWFXNTBJSFJ2SUdsdWREWTBBRU52Ym5abGNuUWdkV2x1ZENCMGJ5QjFhVzUwT0Y5MEFFTnZiblpsY25RZ2RXbHVkQ0IwYnlCMWFXNTBNVFpmZEFCRGIyNTJaWEowSUhWcGJuUWdkRzhnZFdsdWREWTBBRU52Ym5abGNuUWdkV2x1ZENCMGJ5Qm1iRzloZERFMlgzUUFRMjl1ZG1WeWRDQjFhVzUwSUhSdklHWnNiMkYwQUVOdmJuWmxjblFnZFdsdWRDQjBieUJrYjNWaWJHVUFRMjl1ZG1WeWRDQnBiblEyTkNCMGJ5QnBiblE0WDNRQVEyOXVkbVZ5ZENCcGJuUTJOQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnYVc1ME5qUWdkRzhnYVc1MEFFTnZiblpsY25RZ2FXNTBOalFnZEc4Z2RXbHVkRGhmZEFCRGIyNTJaWEowSUdsdWREWTBJSFJ2SUhWcGJuUXhObDkwQUVOdmJuWmxjblFnYVc1ME5qUWdkRzhnZFdsdWRBQkRiMjUyWlhKMElHbHVkRFkwSUhSdklIVnBiblEyTkFCRGIyNTJaWEowSUdsdWREWTBJSFJ2SUdac2IyRjBNVFpmZEFCRGIyNTJaWEowSUdsdWREWTBJSFJ2SUdac2IyRjBBRU52Ym5abGNuUWdhVzUwTmpRZ2RHOGdaRzkxWW14bEFFTnZiblpsY25RZ2RXbHVkRFkwSUhSdklHbHVkRGhmZEFCRGIyNTJaWEowSUhWcGJuUTJOQ0IwYnlCcGJuUXhObDkwQUVOdmJuWmxjblFnZFdsdWREWTBJSFJ2SUdsdWRBQkRiMjUyWlhKMElIVnBiblEyTkNCMGJ5QnBiblEyTkFCRGIyNTJaWEowSUhWcGJuUTJOQ0IwYnlCMWFXNTBPRjkwQUVOdmJuWmxjblFnZFdsdWREWTBJSFJ2SUhWcGJuUXhOZ0JEYjI1MlpYSjBJSFZwYm5RMk5DQjBieUIxYVc1MEFFTnZiblpsY25RZ2RXbHVkRFkwSUhSdklHWnNiMkYwTVRaZmRBQkRiMjUyWlhKMElIVnBiblEyTkNCMGJ5Qm1iRzloZEFCRGIyNTJaWEowSUhWcGJuUTJOQ0IwYnlCa2IzVmliR1VBUTI5dWRtVnlkQ0JtYkc5aGRERTJYM1FnZEc4Z2FXNTBPRjkwQUVOdmJuWmxjblFnWm14dllYUXhObDkwSUhSdklHbHVkREUyWDNRQVEyOXVkbVZ5ZENCbWJHOWhkREUyWDNRZ2RHOGdhVzUwQUVOdmJuWmxjblFnWm14dllYUXhObDkwSUhSdklHbHVkRFkwQUVOdmJuWmxjblFnWm14dllYUXhObDkwSUhSdklIVnBiblE0WDNRQVEyOXVkbVZ5ZENCbWJHOWhkREUyWDNRZ2RHOGdkV2x1ZERFMlgzUUFRMjl1ZG1WeWRDQm1iRzloZERFMlgzUWdkRzhnZFdsdWRBQkRiMjUyWlhKMElHWnNiMkYwTVRaZmRDQjBieUIxYVc1ME5qUUFRMjl1ZG1WeWRDQm1iRzloZERFMlgzUWdkRzhnWm14dllYUUFRMjl1ZG1WeWRDQm1iRzloZERFMlgzUWdkRzhnWkc5MVlteGxBRU52Ym5abGNuUWdabXh2WVhRZ2RHOGdabXh2WVhReE5sOTBBRU52Ym5abGNuUWdabXh2WVhRZ2RHOGdaRzkxWW14bEFFTnZiblpsY25RZ1pteHZZWFFnZEc4Z2FXNTBPRjkwQUVOdmJuWmxjblFnWm14dllYUWdkRzhnYVc1ME1UWmZkQUJEYjI1MlpYSjBJR1pzYjJGMElIUnZJR2x1ZEFCRGIyNTJaWEowSUdac2IyRjBJSFJ2SUdsdWREWTBBRU52Ym5abGNuUWdabXh2WVhRZ2RHOGdkV2x1ZERoZmRBQkRiMjUyWlhKMElHWnNiMkYwSUhSdklIVnBiblF4Tmw5MEFFTnZiblpsY25RZ1pteHZZWFFnZEc4Z2RXbHVkQUJEYjI1MlpYSjBJR1pzYjJGMElIUnZJSFZwYm5RMk5BQkRiMjUyWlhKMElHUnZkV0pzWlNCMGJ5Qm1iRzloZERFMlgzUUFRMjl1ZG1WeWRDQmtiM1ZpYkdVZ2RHOGdabXh2WVhRQVEyOXVkbVZ5ZENCa2IzVmliR1VnZEc4Z2FXNTBPRjkwQUVOdmJuWmxjblFnWkc5MVlteGxJSFJ2SUdsdWRERTJYM1FBUTI5dWRtVnlkQ0JrYjNWaWJHVWdkRzhnYVc1MEFFTnZiblpsY25RZ1pHOTFZbXhsSUhSdklHbHVkRFkwQUVOdmJuWmxjblFnWkc5MVlteGxJSFJ2SUhWcGJuUTRYM1FBUTI5dWRtVnlkQ0JrYjNWaWJHVWdkRzhnZFdsdWRERTJYM1FBUTI5dWRtVnlkQ0JrYjNWaWJHVWdkRzhnZFdsdWRBQkRiMjUyWlhKMElHUnZkV0pzWlNCMGJ5QjFhVzUwTmpRQVEyOXVkbVZ5ZENCMWFXNTBOalJmZENCMGJ5QndiMmx1ZEdWeUFFTnZiblpsY25RZ2NHOXBiblJsY2lCMGJ5QjFhVzUwTmpSZmRBQnlZV1JwWVc1ekFHUmxaM0psWlhNQWMybHVaUUJqYjNOcGJtVUFkR0Z1WjJWdWRBQmhjbU1nYzJsdVpRQmhjbU1nWTI5emFXNWxBR0Z5WXlCMFlXNW5aVzUwQUdoNWNDNGdjMmx1WlFCb2VYQXVJR052YzJsdVpRQm9lWEF1SUhSaGJtZGxiblFBWVhKaklHaDVjQzRnYzJsdVpRQmhjbU1nYUhsd0xpQmpiM05wYm1VQVlYSmpJR2g1Y0M0Z2RHRnVaMlZ1ZEFCbGVIQUFiRzluQUdWNGNESUFiRzluTWdCemNYSjBBR2x1ZG1WeWMyVWdjM0Z5ZEFCQlluTnZiSFYwWlNCMllXeDFaUUJUYVdkdUFFWnNiMjl5QUhSeWRXNWpBSEp2ZFc1a0FISnZkVzVrUlhabGJnQkRaV2xzYVc1bkFFWnlZV04wYVc5dUFHbHpibUZ1QUdsemFXNW1BR1pzYjJGMFFtbDBjMVJ2U1c1MEFHWnNiMkYwUW1sMGMxUnZWV2x1ZEFCcGJuUkNhWFJ6Vkc5R2JHOWhkQUIxYVc1MFFtbDBjMVJ2Um14dllYUUFaRzkxWW14bFFtbDBjMVJ2U1c1ME5qUUFaRzkxWW14bFFtbDBjMVJ2VldsdWREWTBBR2x1ZERZMFFtbDBjMVJ2Ukc5MVlteGxBSFZwYm5RMk5FSnBkSE5VYjBSdmRXSnNaUUJtYkc5aGRERTJRbWwwYzFSdlNXNTBNVFlBWm14dllYUXhOa0pwZEhOVWIxVnBiblF4TmdCcGJuUXhOa0pwZEhOVWIwWnNiMkYwTVRZQWRXbHVkREUyUW1sMGMxUnZSbXh2WVhReE5nQndZV05yVTI1dmNtMHllREUyQUhWdWNHRmphMU51YjNKdE1uZ3hOZ0J3WVdOclZXNXZjbTB5ZURFMkFIVnVjR0ZqYTFWdWIzSnRNbmd4TmdCd1lXTnJTR0ZzWmpKNE1UWUFkVzV3WVdOclNHRnNaako0TVRZQWNHRmphekUyQUhCaFkyc3pNZ0J3WVdOck5qUUFkVzV3WVdOck16SUFkVzV3WVdOck1UWUFkVzV3WVdOck9BQlFZV05yVTI1dmNtMDBlRGdBVlc1d1lXTnJVMjV2Y20wMGVEZ0FVR0ZqYTFWdWIzSnROSGc0QUZWdWNHRmphMVZ1YjNKdE5IZzRBRkJoWTJ0RWIzVmliR1V5ZURNeUFGVnVjR0ZqYTBSdmRXSnNaVEo0TXpJQWNHRmphMGx1ZERKNE16SUFkVzV3WVdOclNXNTBNbmd6TWdCd1lXTnJWV2x1ZERKNE16SUFkVzV3WVdOclZXbHVkREo0TXpJQWNHRmphMGx1ZERKNE1UWUFkVzV3WVdOclNXNTBNbmd4TmdCd1lXTnJWV2x1ZERKNE1UWUFkVzV3WVdOclZXbHVkREo0TVRZQWNHRmphMGx1ZERSNE1UWUFkVzV3WVdOclNXNTBOSGd4TmdCd1lXTnJWV2x1ZERSNE1UWUFkVzV3WVdOclZXbHVkRFI0TVRZQWNHRmphMFpzYjJGME1uZ3hOZ0IxYm5CaFkydEdiRzloZERKNE1UWUFiR1Z1WjNSb0FHNXZjbTFoYkdsNlpRQmtVR1I0QUdSUVpIa0FabmRwWkhSb0FHUlFaSGhHYVc1bEFHUlFaSGxHYVc1bEFHWjNhV1IwYUVacGJtVUFaRkJrZUVOdllYSnpaUUJrVUdSNVEyOWhjbk5sQUdaM2FXUjBhRU52WVhKelpRQnBiblJsY25CdmJHRjBaVUYwUTJWdWRISnZhV1FBWkdWMFpYSnRhVzVoYm5RQWFXNTJaWEp6WlFCMGNtRnVjM0J2YzJVQVlXNTVBR0ZzYkFCaGNuSmhlU0JzWlc1bmRHZ0FSVzFwZEZOMGNtVmhiVlpsY25SbGVBQkZibVJUZEhKbFlXMVFjbWx0YVhScGRtVUFRWFJ2YldsalEyOTFiblJsY2tsdVkzSmxiV1Z1ZEFCQmRHOXRhV05EYjNWdWRHVnlSR1ZqY21WdFpXNTBBRUYwYjIxcFkwTnZkVzUwWlhJQWRHVjRkSFZ5WlZOcGVtVUFkR1Y0ZEhWeVpWRjFaWEo1VEc5a0FIUmxlSFIxY21WUmRXVnllVXhsZG1Wc2N3QjBaWGgwZFhKbFUyRnRjR3hsY3dCcGJXRm5aVkYxWlhKNVUybDZaUUJwYldGblpWRjFaWEo1VTJGdGNHeGxjd0JwYldGblpVeHZZV1FBWW1sMFJtbGxiR1JTWlhabGNuTmxBR0pwZEVOdmRXNTBBR1pwYm1STVUwSUFabWx1WkUxVFFnQmpiM1Z1ZEV4bFlXUnBibWRhWlhKdmN3QmpiM1Z1ZEZSeVlXbHNhVzVuV21WeWIzTUFibTlwYzJVQVltRnNiRzkwQUhKbFlXUkdhWEp6ZEVsdWRtOWpZWFJwYjI0QVlXNTVTVzUyYjJOaGRHbHZiZ0JoYkd4SmJuWnZZMkYwYVc5dWN3QmhiR3hKYm5adlkyRjBhVzl1YzBWeGRXRnNBSE4xWW1keWIzVndSV3hsWTNRQWMzVmlaM0p2ZFhCQmJHd0FjM1ZpWjNKdmRYQkJibmtBYzNWaVozSnZkWEJCYkd4RmNYVmhiQUJ6ZFdKbmNtOTFjRUp5YjJGa1kyRnpkQUJ6ZFdKbmNtOTFjRUp5YjJGa1kyRnpkRVpwY25OMEFITjFZbWR5YjNWd1FtRnNiRzkwQUhOMVltZHliM1Z3U1c1MlpYSnpaVUpoYkd4dmRBQnpkV0puY205MWNFSmhiR3h2ZEVKcGRFVjRkSEpoWTNRQWMzVmlaM0p2ZFhCQ1lXeHNiM1JDYVhSRGIzVnVkQUJ6ZFdKbmNtOTFjRUpoYkd4dmRFbHVZMngxYzJsMlpVSnBkRU52ZFc1MEFITjFZbWR5YjNWd1FtRnNiRzkwUlhoamJIVnphWFpsUW1sMFEyOTFiblFBYzNWaVozSnZkWEJDWVd4c2IzUkdhVzVrVEZOQ0FITjFZbWR5YjNWd1FtRnNiRzkwUm1sdVpFMVRRZ0J6ZFdKbmNtOTFjRk5vZFdabWJHVUFjM1ZpWjNKdmRYQlRhSFZtWm14bFdHOXlBSE4xWW1keWIzVndVMmgxWm1ac1pWVndBSE4xWW1keWIzVndVMmgxWm1ac1pVUnZkMjRBYzNWaVozSnZkWEJCWkdRQWMzVmlaM0p2ZFhCTmRXd0FjM1ZpWjNKdmRYQk5hVzRBYzNWaVozSnZkWEJOWVhnQWMzVmlaM0p2ZFhCQmJtUUFjM1ZpWjNKdmRYQlBjZ0J6ZFdKbmNtOTFjRmh2Y2dCemRXSm5jbTkxY0VsdVkyeDFjMmwyWlVGa1pBQnpkV0puY205MWNFbHVZMngxYzJsMlpVMTFiQUJ6ZFdKbmNtOTFjRWx1WTJ4MWMybDJaVTFwYmdCemRXSm5jbTkxY0VsdVkyeDFjMmwyWlUxaGVBQnpkV0puY205MWNFbHVZMngxYzJsMlpVRnVaQUJ6ZFdKbmNtOTFjRWx1WTJ4MWMybDJaVTl5QUhOMVltZHliM1Z3U1c1amJIVnphWFpsV0c5eUFITjFZbWR5YjNWd1JYaGpiSFZ6YVhabFFXUmtBSE4xWW1keWIzVndSWGhqYkhWemFYWmxUWFZzQUhOMVltZHliM1Z3UlhoamJIVnphWFpsVFdsdUFITjFZbWR5YjNWd1JYaGpiSFZ6YVhabFRXRjRBSE4xWW1keWIzVndSWGhqYkhWemFYWmxRVzVrQUhOMVltZHliM1Z3UlhoamJIVnphWFpsVDNJQWMzVmlaM0p2ZFhCRmVHTnNkWE5wZG1WWWIzSUFjM1ZpWjNKdmRYQkRiSFZ6ZEdWeVpXUkJaR1FBYzNWaVozSnZkWEJEYkhWemRHVnlaV1JOZFd3QWMzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSTmFXNEFjM1ZpWjNKdmRYQkRiSFZ6ZEdWeVpXUk5ZWGdBYzNWaVozSnZkWEJEYkhWemRHVnlaV1JCYm1RQWMzVmlaM0p2ZFhCRGJIVnpkR1Z5WldSUGNnQnpkV0puY205MWNFTnNkWE4wWlhKbFpGaHZjZ0J6ZFdKbmNtOTFjRkYxWVdSQ2NtOWhaR05oYzNRQWMzVmlaM0p2ZFhCUmRXRmtVM2RoY0VodmNtbDZiMjUwWVd3QWMzVmlaM0p2ZFhCUmRXRmtVM2RoY0ZabGNuUnBZMkZzQUhOMVltZHliM1Z3VVhWaFpGTjNZWEJFYVdGbmIyNWhiQUJ6ZFdKbmNtOTFjRkJoY25ScGRHbHZiazVXQUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSQlpHUk9WZ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrVFhWc1RsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRTFwYms1V0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUk5ZWGhPVmdCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1FXNWtUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkU5eVRsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRmh2Y2s1V0FITjFZbWR5YjNWd1VHRnlkR2wwYVc5dVpXUkpibU5zZFhOcGRtVkJaR1JPVmdCemRXSm5jbTkxY0ZCaGNuUnBkR2x2Ym1Wa1NXNWpiSFZ6YVhabFRYVnNUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVsdVkyeDFjMmwyWlUxcGJrNVdBSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JKYm1Oc2RYTnBkbVZOWVhoT1ZnQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtTVzVqYkhWemFYWmxRVzVrVGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFbHVZMngxYzJsMlpVOXlUbFlBYzNWaVozSnZkWEJRWVhKMGFYUnBiMjVsWkVsdVkyeDFjMmwyWlZodmNrNVdBSE4xWW1keWIzVndVR0Z5ZEdsMGFXOXVaV1JGZUdOc2RYTnBkbVZCWkdST1ZnQnpkV0puY205MWNGQmhjblJwZEdsdmJtVmtSWGhqYkhWemFYWmxUWFZzVGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFVjRZMngxYzJsMlpVMXBiazVXQUhOMVltZHliM1Z3VUdGeWRHbDBhVzl1WldSRmVHTnNkWE5wZG1WTllYaE9WZ0J6ZFdKbmNtOTFjRkJoY25ScGRHbHZibVZrUlhoamJIVnphWFpsUVc1a1RsWUFjM1ZpWjNKdmRYQlFZWEowYVhScGIyNWxaRVY0WTJ4MWMybDJaVTl5VGxZQWMzVmlaM0p2ZFhCUVlYSjBhWFJwYjI1bFpFVjRZMngxYzJsMlpWaHZjazVXQUdOc2FYQUFhWE5tYVc1cGRHVUFiRzluTVRBQWNtTndBSE5oZEhWeVlYUmxBSE53WVhKelpWUmxlR1ZzYzFKbGMybGtaVzUwQUcxcGJrbHVkbTlqWVhScGIyNXpBRzFoZUVsdWRtOWpZWFJwYjI1ekFHRmtaRWx1ZG05allYUnBiMjV6QUcxcGJrbHVkbTlqWVhScGIyNXpUbTl1Vlc1cFptOXliUUJ0WVhoSmJuWnZZMkYwYVc5dWMwNXZibFZ1YVdadmNtMEFZV1JrU1c1MmIyTmhkR2x2Ym5OT2IyNVZibWxtYjNKdEFHMXBia2x1ZG05allYUnBiMjV6U1c1amJIVnphWFpsVTJOaGJnQnRZWGhKYm5adlkyRjBhVzl1YzBsdVkyeDFjMmwyWlZOallXNEFZV1JrU1c1MmIyTmhkR2x2Ym5OSmJtTnNkWE5wZG1WVFkyRnVBRzFwYmtsdWRtOWpZWFJwYjI1elNXNWpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTBBYldGNFNXNTJiMk5oZEdsdmJuTkpibU5zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlFCaFpHUkpiblp2WTJGMGFXOXVjMGx1WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdEFHMXBia2x1ZG05allYUnBiMjV6UlhoamJIVnphWFpsVTJOaGJnQnRZWGhKYm5adlkyRjBhVzl1YzBWNFkyeDFjMmwyWlZOallXNEFZV1JrU1c1MmIyTmhkR2x2Ym5ORmVHTnNkWE5wZG1WVFkyRnVBRzFwYmtsdWRtOWpZWFJwYjI1elJYaGpiSFZ6YVhabFUyTmhiazV2YmxWdWFXWnZjbTBBYldGNFNXNTJiMk5oZEdsdmJuTkZlR05zZFhOcGRtVlRZMkZ1VG05dVZXNXBabTl5YlFCaFpHUkpiblp2WTJGMGFXOXVjMFY0WTJ4MWMybDJaVk5qWVc1T2IyNVZibWxtYjNKdEFHMWlZMjUwQUdaeVlXZHRaVzUwVFdGemEwWmxkR05vUVUxRUFHWnlZV2R0Wlc1MFJtVjBZMmhCVFVRQVkzVmlaVVpoWTJWSmJtUmxlQUJqZFdKbFJtRmpaVU52YjNKa0FITjFZbkJoYzNOTWIyRmtBSE4xWW5CaGMzTk1iMkZrVFZNQVEyOXVjM1J5ZFdOMElISmxabVZ5Wlc1alpTQjBlWEJsQUVKaFpDQjFibUZ5ZVNCdmNBQnViMlJsSUdseklITjBhV3hzSUVWUGNFNTFiR3doQUZObGNYVmxibU5sQ2dCTWFXNXJaWElnVDJKcVpXTjBjd29BUTI5dGJXRUFSblZ1WTNScGIyNGdSR1ZtYVc1cGRHbHZiam9nQUVaMWJtTjBhVzl1SUVOaGJHdzZJQUJHZFc1amRHbHZiaUJRWVhKaGJXVjBaWEp6T2lBQVEyOXVjM1J5ZFdOMElHWnNiMkYwQUVOdmJuTjBjblZqZENCa2IzVmliR1VBUTI5dWMzUnlkV04wSUhabFl6SUFRMjl1YzNSeWRXTjBJSFpsWXpNQVEyOXVjM1J5ZFdOMElIWmxZelFBUTI5dWMzUnlkV04wSUdSMlpXTXlBRU52Ym5OMGNuVmpkQ0JrZG1Wak13QkRiMjV6ZEhKMVkzUWdaSFpsWXpRQVEyOXVjM1J5ZFdOMElHSnZiMndBUTI5dWMzUnlkV04wSUdKMlpXTXlBRU52Ym5OMGNuVmpkQ0JpZG1Wak13QkRiMjV6ZEhKMVkzUWdZblpsWXpRQVEyOXVjM1J5ZFdOMElHbHVkRGhmZEFCRGIyNXpkSEoxWTNRZ2FUaDJaV015QUVOdmJuTjBjblZqZENCcE9IWmxZek1BUTI5dWMzUnlkV04wSUdrNGRtVmpOQUJEYjI1emRISjFZM1FnYVc1MEFFTnZibk4wY25WamRDQnBkbVZqTWdCRGIyNXpkSEoxWTNRZ2FYWmxZek1BUTI5dWMzUnlkV04wSUdsMlpXTTBBRU52Ym5OMGNuVmpkQ0IxYVc1ME9GOTBBRU52Ym5OMGNuVmpkQ0IxT0habFl6SUFRMjl1YzNSeWRXTjBJSFU0ZG1Wak13QkRiMjV6ZEhKMVkzUWdkVGgyWldNMEFFTnZibk4wY25WamRDQjFhVzUwQUVOdmJuTjBjblZqZENCMWRtVmpNZ0JEYjI1emRISjFZM1FnZFhabFl6TUFRMjl1YzNSeWRXTjBJSFYyWldNMEFFTnZibk4wY25WamRDQnBiblEyTkFCRGIyNXpkSEoxWTNRZ2FUWTBkbVZqTWdCRGIyNXpkSEoxWTNRZ2FUWTBkbVZqTXdCRGIyNXpkSEoxWTNRZ2FUWTBkbVZqTkFCRGIyNXpkSEoxWTNRZ2RXbHVkRFkwQUVOdmJuTjBjblZqZENCMU5qUjJaV015QUVOdmJuTjBjblZqZENCMU5qUjJaV016QUVOdmJuTjBjblZqZENCMU5qUjJaV00wQUVOdmJuTjBjblZqZENCcGJuUXhObDkwQUVOdmJuTjBjblZqZENCcE1UWjJaV015QUVOdmJuTjBjblZqZENCcE1UWjJaV016QUVOdmJuTjBjblZqZENCcE1UWjJaV00wQUVOdmJuTjBjblZqZENCMWFXNTBNVFpmZEFCRGIyNXpkSEoxWTNRZ2RURTJkbVZqTWdCRGIyNXpkSEoxWTNRZ2RURTJkbVZqTXdCRGIyNXpkSEoxWTNRZ2RURTJkbVZqTkFCRGIyNXpkSEoxWTNRZ2JXRjBNZ0JEYjI1emRISjFZM1FnYldGME1uZ3pBRU52Ym5OMGNuVmpkQ0J0WVhReWVEUUFRMjl1YzNSeWRXTjBJRzFoZERONE1nQkRiMjV6ZEhKMVkzUWdiV0YwTXdCRGIyNXpkSEoxWTNRZ2JXRjBNM2cwQUVOdmJuTjBjblZqZENCdFlYUTBlRElBUTI5dWMzUnlkV04wSUcxaGREUjRNd0JEYjI1emRISjFZM1FnYldGME5BQkRiMjV6ZEhKMVkzUWdaRzFoZERJQVEyOXVjM1J5ZFdOMElHUnRZWFF5ZURNQVEyOXVjM1J5ZFdOMElHUnRZWFF5ZURRQVEyOXVjM1J5ZFdOMElHUnRZWFF6ZURJQVEyOXVjM1J5ZFdOMElHUnRZWFF6QUVOdmJuTjBjblZqZENCa2JXRjBNM2cwQUVOdmJuTjBjblZqZENCa2JXRjBOSGd5QUVOdmJuTjBjblZqZENCa2JXRjBOSGd6QUVOdmJuTjBjblZqZENCa2JXRjBOQUJEYjI1emRISjFZM1FnYVcxaGRESUFRMjl1YzNSeWRXTjBJR2x0WVhReWVETUFRMjl1YzNSeWRXTjBJR2x0WVhReWVEUUFRMjl1YzNSeWRXTjBJR2x0WVhRemVESUFRMjl1YzNSeWRXTjBJR2x0WVhRekFFTnZibk4wY25WamRDQnBiV0YwTTNnMEFFTnZibk4wY25WamRDQnBiV0YwTkhneUFFTnZibk4wY25WamRDQnBiV0YwTkhnekFFTnZibk4wY25WamRDQnBiV0YwTkFCRGIyNXpkSEoxWTNRZ2RXMWhkRElBUTI5dWMzUnlkV04wSUhWdFlYUXllRE1BUTI5dWMzUnlkV04wSUhWdFlYUXllRFFBUTI5dWMzUnlkV04wSUhWdFlYUXplRElBUTI5dWMzUnlkV04wSUhWdFlYUXpBRU52Ym5OMGNuVmpkQ0IxYldGME0zZzBBRU52Ym5OMGNuVmpkQ0IxYldGME5IZ3lBRU52Ym5OMGNuVmpkQ0IxYldGME5IZ3pBRU52Ym5OMGNuVmpkQ0IxYldGME5BQkRiMjV6ZEhKMVkzUWdZbTFoZERJQVEyOXVjM1J5ZFdOMElHSnRZWFF5ZURNQVEyOXVjM1J5ZFdOMElHSnRZWFF5ZURRQVEyOXVjM1J5ZFdOMElHSnRZWFF6ZURJQVEyOXVjM1J5ZFdOMElHSnRZWFF6QUVOdmJuTjBjblZqZENCaWJXRjBNM2cwQUVOdmJuTjBjblZqZENCaWJXRjBOSGd5QUVOdmJuTjBjblZqZENCaWJXRjBOSGd6QUVOdmJuTjBjblZqZENCaWJXRjBOQUJEYjI1emRISjFZM1FnWm14dllYUXhObDkwQUVOdmJuTjBjblZqZENCbU1UWjJaV015QUVOdmJuTjBjblZqZENCbU1UWjJaV016QUVOdmJuTjBjblZqZENCbU1UWjJaV00wQUVOdmJuTjBjblZqZENCbU1UWnRZWFF5QUVOdmJuTjBjblZqZENCbU1UWnRZWFF5ZURNQVEyOXVjM1J5ZFdOMElHWXhObTFoZERKNE5BQkRiMjV6ZEhKMVkzUWdaakUyYldGME0zZ3lBRU52Ym5OMGNuVmpkQ0JtTVRadFlYUXpBRU52Ym5OMGNuVmpkQ0JtTVRadFlYUXplRFFBUTI5dWMzUnlkV04wSUdZeE5tMWhkRFI0TWdCRGIyNXpkSEoxWTNRZ1pqRTJiV0YwTkhnekFFTnZibk4wY25WamRDQm1NVFp0WVhRMEFFTnZibk4wY25WamRDQnpkSEoxWTNSMWNtVUFRMjl1YzNSeWRXTjBJR052YldKcGJtVmtJSFJsZUhSMWNtVXRjMkZ0Y0d4bGNnQkRiMjV6ZEhKMVkzUWdjbVZtWlhKbGJtTmxBRU52Ym5OMGNuVmpkQ0JqYjI5d1pYSmhkR2wyWlNCdFlYUnlhWGdBYlc5a1pnQndiM2NBYldsdUFHMWhlQUJqYkdGdGNBQnRhWGdBYzNSbGNBQnpiVzl2ZEdoemRHVndBR1JwYzNSaGJtTmxBR1J2ZEMxd2NtOWtkV04wQUdOeWIzTnpMWEJ5YjJSMVkzUUFabUZqWlMxbWIzSjNZWEprQUhKbFpteGxZM1FBY21WbWNtRmpkQUJ2ZFhSbGNpQndjbTlrZFdOMEFFVnRhWFJXWlhKMFpYZ0FSVzVrVUhKcGJXbDBhWFpsQUVKaGNuSnBaWElBVFdWdGIzSjVRbUZ5Y21sbGNnQk5aVzF2Y25sQ1lYSnlhV1Z5UVhSdmJXbGpRMjkxYm5SbGNnQk5aVzF2Y25sQ1lYSnlhV1Z5UW5WbVptVnlBRTFsYlc5eWVVSmhjbkpwWlhKSmJXRm5aUUJOWlcxdmNubENZWEp5YVdWeVUyaGhjbVZrQUVkeWIzVndUV1Z0YjNKNVFtRnljbWxsY2dCeVpXRmtTVzUyYjJOaGRHbHZiZ0J6ZDJsNmVteGxTVzUyYjJOaGRHbHZibk1BYzNkcGVucHNaVWx1ZG05allYUnBiMjV6VFdGemEyVmtBSGR5YVhSbFNXNTJiMk5oZEdsdmJnQnRhVzR6QUcxaGVETUFiV2xrTXdCMGFXMWxBRUYwYjIxcFkwRmtaQUJCZEc5dGFXTk5hVzRBUVhSdmJXbGpUV0Y0QUVGMGIyMXBZMEZ1WkFCQmRHOXRhV05QY2dCQmRHOXRhV05ZYjNJQVFYUnZiV2xqUlhoamFHRnVaMlVBUVhSdmJXbGpRMjl0Y0ZOM1lYQUFRWFJ2YldsalRHOWhaQUJCZEc5dGFXTlRkRzl5WlFCQmRHOXRhV05EYjNWdWRHVnlRV1JrQUVGMGIyMXBZME52ZFc1MFpYSlRkV0owY21GamRBQkJkRzl0YVdORGIzVnVkR1Z5VFdsdUFFRjBiMjFwWTBOdmRXNTBaWEpOWVhnQVFYUnZiV2xqUTI5MWJuUmxja0Z1WkFCQmRHOXRhV05EYjNWdWRHVnlUM0lBUVhSdmJXbGpRMjkxYm5SbGNsaHZjZ0JCZEc5dGFXTkRiM1Z1ZEdWeVJYaGphR0Z1WjJVQVFYUnZiV2xqUTI5MWJuUmxja052YlhCVGQyRndBR2x0WVdkbFUzUnZjbVVBYVcxaFoyVkJkRzl0YVdOQlpHUUFhVzFoWjJWQmRHOXRhV05OYVc0QWFXMWhaMlZCZEc5dGFXTk5ZWGdBYVcxaFoyVkJkRzl0YVdOQmJtUUFhVzFoWjJWQmRHOXRhV05QY2dCcGJXRm5aVUYwYjIxcFkxaHZjZ0JwYldGblpVRjBiMjFwWTBWNFkyaGhibWRsQUdsdFlXZGxRWFJ2YldsalEyOXRjRk4zWVhBQWFXMWhaMlZCZEc5dGFXTk1iMkZrQUdsdFlXZGxRWFJ2YldsalUzUnZjbVVBYVcxaFoyVk1iMkZrVEc5a0FHbHRZV2RsVTNSdmNtVk1iMlFBZEdWNGRIVnlaUUIwWlhoMGRYSmxVSEp2YWdCMFpYaDBkWEpsVEc5a0FIUmxlSFIxY21WUFptWnpaWFFBZEdWNGRIVnlaVVpsZEdOb0FIUmxlSFIxY21WR1pYUmphRTltWm5ObGRBQjBaWGgwZFhKbFVISnZhazltWm5ObGRBQjBaWGgwZFhKbFRHOWtUMlptYzJWMEFIUmxlSFIxY21WUWNtOXFURzlrQUhSbGVIUjFjbVZRY205cVRHOWtUMlptYzJWMEFIUmxlSFIxY21WSGNtRmtBSFJsZUhSMWNtVkhjbUZrVDJabWMyVjBBSFJsZUhSMWNtVlFjbTlxUjNKaFpBQjBaWGgwZFhKbFVISnZha2R5WVdSUFptWnpaWFFBZEdWNGRIVnlaVWRoZEdobGNnQjBaWGgwZFhKbFIyRjBhR1Z5VDJabWMyVjBBSFJsZUhSMWNtVkhZWFJvWlhKUFptWnpaWFJ6QUhSbGVIUjFjbVZEYkdGdGNBQjBaWGgwZFhKbFQyWm1jMlYwUTJ4aGJYQUFkR1Y0ZEhWeVpVZHlZV1JEYkdGdGNBQjBaWGgwZFhKbFIzSmhaRTltWm5ObGRFTnNZVzF3QUhSbGVIUjFjbVZIWVhSb1pYSk1iMlFBZEdWNGRIVnlaVWRoZEdobGNreHZaRTltWm5ObGRBQjBaWGgwZFhKbFIyRjBhR1Z5VEc5a1QyWm1jMlYwY3dCemNHRnljMlZVWlhoMGRYSmxBSE53WVhKelpWUmxlSFIxY21WUFptWnpaWFFBYzNCaGNuTmxWR1Y0ZEhWeVpVeHZaQUJ6Y0dGeWMyVlVaWGgwZFhKbFRHOWtUMlptYzJWMEFITndZWEp6WlZSbGVHVnNSbVYwWTJnQWMzQmhjbk5sVkdWNFpXeEdaWFJqYUU5bVpuTmxkQUJ6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaQUJ6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaRTltWm5ObGRBQnpjR0Z5YzJWVVpYaDBkWEpsUjJGMGFHVnlBSE53WVhKelpWUmxlSFIxY21WSFlYUm9aWEpQWm1aelpYUUFjM0JoY25ObFZHVjRkSFZ5WlVkaGRHaGxjazltWm5ObGRITUFjM0JoY25ObFNXMWhaMlZNYjJGa0FITndZWEp6WlZSbGVIUjFjbVZEYkdGdGNBQnpjR0Z5YzJWVVpYaDBkWEpsVDJabWMyVjBRMnhoYlhBQWMzQmhjbk5sVkdWNGRIVnlaVWR5WVdSRGJHRnRjQUJ6Y0dGeWMyVlVaWGgwZFhKbFIzSmhaRTltWm5ObGRFTnNZVzBBYzNCaGNuTmxWR1Y0ZEhWeVpVZGhkR2hsY2t4dlpBQnpjR0Z5YzJWVVpYaDBkWEpsUjJGMGFHVnlURzlrVDJabWMyVjBBSE53WVhKelpWUmxlSFIxY21WSFlYUm9aWEpNYjJSUFptWnpaWFJ6QUhOd1lYSnpaVWx0WVdkbFRHOWhaRXh2WkFCcGJXRm5aVk5oYlhCc1pVWnZiM1J3Y21sdWRFNVdBR2x0WVdkbFUyRnRjR3hsUm05dmRIQnlhVzUwUTJ4aGJYQk9WZ0JwYldGblpWTmhiWEJzWlVadmIzUndjbWx1ZEV4dlpFNVdBR2x0WVdkbFUyRnRjR3hsUm05dmRIQnlhVzUwUjNKaFpFNVdBRzFoWjJWVFlXMXdiR1ZHYjI5MGNISnBiblJIY21Ga1EyeGhiWEJPVmdCaFpHUkRZWEp5ZVFCemRXSkNiM0p5YjNjQWRVMTFiRVY0ZEdWdVpHVmtBR2xOZFd4RmVIUmxibVJsWkFCaWFYUm1hV1ZzWkVWNGRISmhZM1FBWW1sMFptbGxiR1JKYm5ObGNuUUFabTFoQUdaeVpYaHdBR3hrWlhod0FHbHVkR1Z5Y0c5c1lYUmxRWFJUWVcxd2JHVUFhVzUwWlhKd2IyeGhkR1ZCZEU5bVpuTmxkQUJwYm5SbGNuQnZiR0YwWlVGMFZtVnlkR1Y0QUhOcGJtTnZjd0J0ZFd3QVFXeHNUV1Z0YjNKNVFtRnljbWxsY2xkcGRHaEhjbTkxY0ZONWJtTUFSR1YyYVdObFRXVnRiM0o1UW1GeWNtbGxjZ0JFWlhacFkyVk5aVzF2Y25sQ1lYSnlhV1Z5VjJsMGFFZHliM1Z3VTNsdVl3QlhiM0pyWjNKdmRYQk5aVzF2Y25sQ1lYSnlhV1Z5QUZkdmNtdG5jbTkxY0UxbGJXOXllVUpoY25KcFpYSlhhWFJvUjNKdmRYQlRlVzVqQUhOMVltZHliM1Z3UW1GeWNtbGxjZ0J6ZFdKbmNtOTFjRTFsYlc5eWVVSmhjbkpwWlhJQWMzVmlaM0p2ZFhCTlpXMXZjbmxDWVhKeWFXVnlRblZtWm1WeUFITjFZbWR5YjNWd1RXVnRiM0o1UW1GeWNtbGxja2x0WVdkbEFITjFZbWR5YjNWd1RXVnRiM0o1UW1GeWNtbGxjbE5vWVhKbFpBQjBjbUZqWlU1V0FISmxjRzl5ZEVsdWRHVnljMlZqZEdsdmJrNVdBR2xuYm05eVpVbHVkR1Z5YzJWamRHbHZiazVXQUhSbGNtMXBibUYwWlZKaGVVNVdBR1Y0WldOMWRHVkRZV3hzWVdKc1pVNVdBSGR5YVhSbFVHRmphMlZrVUhKcGJXbDBhWFpsU1c1a2FXTmxjelI0T0U1V0FFeHZZV1FnWTI5dmNHVnlZWFJwZG1VZ2JXRjBjbWw0QUZOMGIzSmxJR052YjNCbGNtRjBhWFpsSUcxaGRISnBlQUJOZFd4QlpHUWdZMjl2Y0dWeVlYUnBkbVVnYldGMGNtbGpaWE1BU1hOSVpXeHdaWEpKYm5adlkyRjBhVzl1QUVKaFpDQmhaMmR5WldkaGRHbHZiaUJ2Y0FCVVpYTjBJR052Ym1ScGRHbHZiaUJoYm1RZ2MyVnNaV04wQURvZ2JtOGdjMmh2Y25SamFYSmpkV2wwQURvZ1JteGhkSFJsYmdBNklFUnZiblJHYkdGMGRHVnVBRU52Ym1ScGRHbHZiZ29BZEhKMVpTQmpZWE5sQ2dCMGNuVmxJR05oYzJVZ2FYTWdiblZzYkFvQVptRnNjMlVnWTJGelpRb0FRMjl1YzNSaGJuUTZDZ0FuQUNjZ0tBQXBDZ0JNYjI5d0lIZHBkR2dnWTI5dVpHbDBhVzl1SUFCdWIzUWdBSFJsYzNSbFpDQm1hWEp6ZEFBNklGVnVjbTlzYkFBNklFUnZiblJWYm5KdmJHd0FPaUJFWlhCbGJtUmxibU41SUFCTWIyOXdJRU52Ym1ScGRHbHZiZ29BVG04Z2JHOXZjQ0JqYjI1a2FYUnBiMjRLQUV4dmIzQWdRbTlrZVFvQVRtOGdiRzl2Y0NCaWIyUjVDZ0JNYjI5d0lGUmxjbTFwYm1Gc0lFVjRjSEpsYzNOcGIyNEtBRUp5WVc1amFEb2dTMmxzYkFCQ2NtRnVZMmc2SUVKeVpXRnJBRUp5WVc1amFEb2dRMjl1ZEdsdWRXVUFRbkpoYm1Ob09pQlNaWFIxY200QVkyRnpaVG9nQUVSbGJXOTBaUUJrWldaaGRXeDBPaUFBUW5KaGJtTm9PaUJWYm10dWIzZHVJRUp5WVc1amFBQWdkMmwwYUNCbGVIQnlaWE56YVc5dUNnQnpkMmwwWTJnQVkyOXVaR2wwYVc5dUNnQmliMlI1Q2dCVGFHRmtaWElnZG1WeWMybHZiam9nQUZKbGNYVmxjM1JsWkNBQWFXNGdlR1ppSUcxdlpHVUtBSFpsY25ScFkyVnpJRDBnQUdsdWNIVjBJSEJ5YVcxcGRHbDJaU0E5SUFCMlpYSjBaWGdnYzNCaFkybHVaeUE5SUFCMGNtbGhibWRzWlNCdmNtUmxjaUE5SUFCMWMybHVaeUJ3YjJsdWRDQnRiMlJsQ2dCcGJuWnZZMkYwYVc5dWN5QTlJQUJ0WVhoZmRtVnlkR2xqWlhNZ1BTQUFiM1YwY0hWMElIQnlhVzFwZEdsMlpTQTlJQUJuYkY5R2NtRm5RMjl2Y21RZ2NHbDRaV3dnWTJWdWRHVnlJR2x6SUdsdWRHVm5aWElLQUdkc1gwWnlZV2REYjI5eVpDQnZjbWxuYVc0Z2FYTWdkWEJ3WlhJZ2JHVm1kQW9BZFhOcGJtY2daV0Z5YkhsZlpuSmhaMjFsYm5SZmRHVnpkSE1LQUhWemFXNW5JSEJ2YzNSZlpHVndkR2hmWTI5MlpYSmhaMlVLQUhWemFXNW5JQUIxYzJsdVp3QWdBR2x1ZEdWeWJHOWpheUJ2Y21SbGNtbHVaeUE5SUFCdFlYaGZjSEpwYldsMGFYWmxjeUE5SUFCc2IyTmhiRjl6YVhwbElEMGdLQUFzSUFCc2IyTmhiRjl6YVhwbElHbGtjeUE5SUNnQVFjaVRFUXVJQXdnQUFBQ1ZBUUFBbGdFQUFKY0JBQUNZQVFBQW1RRUFBSm9CQUFDYkFRQUFuQUVBQUowQkFBQ2VBUUFBT2dBL0lBQWdJQUFzSUc5d1pYSmhkR2x2YmlCaGRDQUFkSEoxWlFCbVlXeHpaUUJqYjI1emRDQmliMjlzQUNWa0lDZ2xjeWtBWTI5dWMzUWdhVzUwT0Y5MEFDVjFJQ2dsY3lrQVkyOXVjM1FnZFdsdWREaGZkQUJqYjI1emRDQnBiblF4Tmw5MEFHTnZibk4wSUhWcGJuUXhObDkwQUdOdmJuTjBJR2x1ZEFCamIyNXpkQ0IxYVc1MEFDVnNiR1FnS0NWektRQmpiMjV6ZENCcGJuUTJORjkwQUNWc2JIVWdLQ1Z6S1FCamIyNXpkQ0IxYVc1ME5qUmZkQUJWYm10dWIzZHVJR052Ym5OMFlXNTBBQzB4TGlOSlRrWUFLekV1STBsT1JnQXhMaU5KVGtRQUpXWUFKUzB1TVRObEFDQTZJQUF4QURBQUFBQ2RSd1FBeVVjRUFLcEhCQUM0UndRQTJFY0VBT1pIQkFEZlJ3UUFhVzVrZFdOMGFYWmxJR3h2YjNBZ2FXNWtaWGdnYlc5a2FXWnBaV1FBYkdsdGFYUmhkR2x2Ym5NQUFFNXZiaTFqYjI1emRHRnVkQzFwYm1SbGVDMWxlSEJ5WlhOemFXOXVBRUhjbGhFTEtRZ0FBQUNmQVFBQUNnQUFBQXNBQUFDZ0FRQUFvUUVBQUE0QUFBQ2lBUUFBRUFBQUFCRUFBQUFTQUVHUWx4RUx2eGtJQUFBQW93RUFBS1FCQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBcFFFQUFCQUFBQUFSQUFBQUVnQUFBRXhwYm10cGJtY2dBQ0J6ZEdGblpUb2dBQW9BWTJGdUozUWdhR0Z1Wkd4bElHMTFiSFJwY0d4bElHVnVkSEo1SUhCdmFXNTBjeUJ3WlhJZ2MzUmhaMlVBYzNSaFoyVnpJRzExYzNRZ2JXRjBZMmdnZDJobGJpQnNhVzVyYVc1bklHbHVkRzhnWVNCemFXNW5iR1VnYzNSaFoyVUFZMkZ1SjNRZ2JHbHVheUJqYjIxd2FXeGhkR2x2YmlCMWJtbDBjeUJtY205dElHUnBabVpsY21WdWRDQnpiM1Z5WTJVZ2JHRnVaM1ZoWjJWekFFTmhibTV2ZENCamNtOXpjeUJzYVc1cklFVlRJR0Z1WkNCa1pYTnJkRzl3SUhCeWIyWnBiR1Z6QUc1MWJXSmxjaUJ2WmlCcGJuWnZZMkYwYVc5dWN5QnRkWE4wSUcxaGRHTm9JR0psZEhkbFpXNGdZMjl0Y0dsc1lYUnBiMjRnZFc1cGRITUFRMjl1ZEhKaFpHbGpkRzl5ZVNCc1lYbHZkWFFnYldGNFgzWmxjblJwWTJWeklIWmhiSFZsY3dCRGIyNTBjbUZrYVdOMGIzSjVJR3hoZVc5MWRDQjJaWEowYVdObGN5QjJZV3gxWlhNQVEyOXVkSEpoWkdsamRHOXllU0JzWVhsdmRYUWdiV0Y0WDNCeWFXMXBkR2wyWlhNZ2RtRnNkV1Z6QUVOdmJuUnlZV1JwWTNSdmNua2dhVzV3ZFhRZ2JHRjViM1YwSUhCeWFXMXBkR2wyWlhNQVEyOXVkSEpoWkdsamRHOXllU0J2ZFhSd2RYUWdiR0Y1YjNWMElIQnlhVzFwZEdsMlpYTUFaMnhmUm5KaFowTnZiM0prSUhKbFpHVmpiR0Z5WVhScGIyNXpJRzExYzNRZ2JXRjBZMmdnWVdOeWIzTnpJSE5vWVdSbGNuTUFRMjl1ZEhKaFpHbGpkRzl5ZVNCcGJuQjFkQ0IyWlhKMFpYZ2djM0JoWTJsdVp3QkRiMjUwY21Ga2FXTjBiM0o1SUhSeWFXRnVaMnhsSUc5eVpHVnlhVzVuQUVOdmJuUnlZV1JwWTNSdmNua2diRzlqWVd3Z2MybDZaUUJEYjI1MGNtRmthV04wYjNKNUlHeHZZMkZzSUhOcGVtVWdjM0JsWTJsaGJHbDZZWFJwYjI0Z2FXUnpBRU52Ym5SeVlXUnBZM1J2Y25rZ1pHVndkR2dnYkdGNWIzVjBjd0JEYjI1MGNtRmthV04wYjNKNUlIaG1ZbDl6ZEhKcFpHVUFUWFZzZEdsd2JHVWdablZ1WTNScGIyNGdZbTlrYVdWeklHbHVJRzExYkhScGNHeGxJR052YlhCcGJHRjBhVzl1SUhWdWFYUnpJR1p2Y2lCMGFHVWdjMkZ0WlNCemFXZHVZWFIxY21VZ2FXNGdkR2hsSUhOaGJXVWdjM1JoWjJVNkFDQWdJQ0FBVkhsd1pYTWdiWFZ6ZENCdFlYUmphRG9BVTNSdmNtRm5aU0J4ZFdGc2FXWnBaWEp6SUcxMWMzUWdiV0YwWTJnNkFGQnlaV05wYzJsdmJpQnhkV0ZzYVdacFpYSnpJRzExYzNRZ2JXRjBZMmc2QUZCeVpYTmxibU5sSUc5bUlHbHVkbUZ5YVdGdWRDQnhkV0ZzYVdacFpYSWdiWFZ6ZENCdFlYUmphRG9BVUhKbGMyVnVZMlVnYjJZZ2NISmxZMmx6WlNCeGRXRnNhV1pwWlhJZ2JYVnpkQ0J0WVhSamFEb0FTVzUwWlhKd2IyeGhkR2x2YmlCaGJtUWdZWFY0YVd4cFlYSjVJSE4wYjNKaFoyVWdjWFZoYkdsbWFXVnljeUJ0ZFhOMElHMWhkR05vT2dCTlpXMXZjbmtnY1hWaGJHbG1hV1Z5Y3lCdGRYTjBJRzFoZEdOb09nQk1ZWGx2ZFhRZ2NYVmhiR2xtYVdOaGRHbHZiaUJ0ZFhOMElHMWhkR05vT2dCSmJtbDBhV0ZzYVhwbGNuTWdiWFZ6ZENCdFlYUmphRG9BT2lBaUFDSWdkbVZ5YzNWeklDSUFJZ29BVFdsemMybHVaeUJsYm5SeWVTQndiMmx1ZERvZ1JXRmphQ0J6ZEdGblpTQnlaWEYxYVhKbGN5QnZibVVnWlc1MGNua2djRzlwYm5RQVJXNTBjbmtnY0c5cGJuUWdibTkwSUdadmRXNWtBRTl1YkhrZ2IyNWxJSEIxYzJoZlkyOXVjM1JoYm5RZ1lteHZZMnNnYVhNZ1lXeHNiM2RsWkNCd1pYSWdjM1JoWjJVQVoyeGZRMnhwY0VScGMzUmhibU5sQUdkc1gwTnNhWEJXWlhKMFpYZ0FRMkZ1SUc5dWJIa2dkWE5sSUc5dVpTQnZaaUJuYkY5RGJHbHdSR2x6ZEdGdVkyVWdiM0lnWjJ4ZlEyeHBjRlpsY25SbGVDQW9aMnhmUTJ4cGNFUnBjM1JoYm1ObElHbHpJSEJ5WldabGNuSmxaQ2tBWjJ4ZlEzVnNiRVJwYzNSaGJtTmxBRU5oYmlCdmJteDVJSFZ6WlNCdmJtVWdiMllnWjJ4ZlEzVnNiRVJwYzNSaGJtTmxJRzl5SUdkc1gwTnNhWEJXWlhKMFpYZ2dLR2RzWDBOc2FYQkVhWE4wWVc1alpTQnBjeUJ3Y21WbVpYSnlaV1FwQUdkc1gwWnlZV2REYjJ4dmNnQm5iRjlHY21GblJHRjBZUUJEWVc1dWIzUWdkWE5sSUdkc1gwWnlZV2REYjJ4dmNpQnZjaUJuYkY5R2NtRm5SR0YwWVNCM2FHVnVJSFZ6YVc1bklIVnpaWEl0WkdWbWFXNWxaQ0J2ZFhSd2RYUnpBRU5oYm01dmRDQjFjMlVnWW05MGFDQm5iRjlHY21GblEyOXNiM0lnWVc1a0lHZHNYMFp5WVdkRVlYUmhBSGhtWWw5emRISnBaR1VnYVhNZ2RHOXZJSE50WVd4c0lIUnZJR2h2YkdRZ1lXeHNJR0oxWm1abGNpQmxiblJ5YVdWek9nQWdJQ0FnZUdaaVgySjFabVpsY2lBQUxDQjRabUpmYzNSeWFXUmxJQUFzSUcxcGJtbHRkVzBnYzNSeWFXUmxJRzVsWldSbFpEb2dBSGhtWWw5emRISnBaR1VnYlhWemRDQmlaU0J0ZFd4MGFYQnNaU0J2WmlBNElHWnZjaUJpZFdabVpYSWdhRzlzWkdsdVp5QmhJR1J2ZFdKc1pTQnZjaUEyTkMxaWFYUWdhVzUwWldkbGNqb0FlR1ppWDNOMGNtbGtaU0J0ZFhOMElHSmxJRzExYkhScGNHeGxJRzltSURRNkFIaG1ZbDl6ZEhKcFpHVWdiWFZ6ZENCaVpTQnRkV3gwYVhCc1pTQnZaaUF5SUdadmNpQmlkV1ptWlhJZ2FHOXNaR2x1WnlCaElHaGhiR1lnWm14dllYUWdiM0lnTVRZdFltbDBJR2x1ZEdWblpYSTZBSGhtWWw5emRISnBaR1VnYVhNZ2RHOXZJR3hoY21kbE9nQXNJR052YlhCdmJtVnVkSE1nS0RFdk5DQnpkSEpwWkdVcElHNWxaV1JsWkNCaGNtVWdBQ3dnWjJ4ZlRXRjRWSEpoYm5ObWIzSnRSbVZsWkdKaFkydEpiblJsY214bFlYWmxaRU52YlhCdmJtVnVkSE1nYVhNZ0FFRjBJR3hsWVhOMElHOXVaU0J6YUdGa1pYSWdiWFZ6ZENCemNHVmphV1o1SUdGdUlHOTFkSEIxZENCc1lYbHZkWFFvZG1WeWRHbGpaWE05TGk0dUtRQkJkQ0JzWldGemRDQnZibVVnYzJoaFpHVnlJRzExYzNRZ2MzQmxZMmxtZVNCaGJpQnBibkIxZENCc1lYbHZkWFFnY0hKcGJXbDBhWFpsQUVGMElHeGxZWE4wSUc5dVpTQnphR0ZrWlhJZ2JYVnpkQ0J6Y0dWamFXWjVJR0Z1SUc5MWRIQjFkQ0JzWVhsdmRYUWdjSEpwYldsMGFYWmxBRUYwSUd4bFlYTjBJRzl1WlNCemFHRmtaWElnYlhWemRDQnpjR1ZqYVdaNUlHRWdiR0Y1YjNWMEtHMWhlRjkyWlhKMGFXTmxjeUE5SUhaaGJIVmxLUUJ3YjNOMFgyUmxjSFJvWDJOdmRtVnlZV2RsSUhKbGNYVnBjbVZ6SUdWaGNteDVYMlp5WVdkdFpXNTBYM1JsYzNSekFFOXViSGtnYjI1bElITm9ZV1JsY2xKbFkyOXlaRTVXSUdKMVptWmxjaUJpYkc5amF5QnBjeUJoYkd4dmQyVmtJSEJsY2lCemRHRm5aUUJuYkY5UWIzTnBkR2x2YmdCbmJGOVFiM05wZEdsdmJsQmxjbFpwWlhkT1ZnQkRZVzRnYjI1c2VTQjFjMlVnYjI1bElHOW1JR2RzWDFCdmMybDBhVzl1SUc5eUlHZHNYMUJ2YzJsMGFXOXVVR1Z5Vm1sbGQwNVdBR2RzWDBOc2FYQkVhWE4wWVc1alpWQmxjbFpwWlhkT1ZnQkRZVzRnYjI1c2VTQjFjMlVnYjI1bElHOW1JR2RzWDBOc2FYQkVhWE4wWVc1alpTQnZjaUJuYkY5RGJHbHdSR2x6ZEdGdVkyVlFaWEpXYVdWM1RsWUFaMnhmUTNWc2JFUnBjM1JoYm1ObFVHVnlWbWxsZDA1V0FFTmhiaUJ2Ym14NUlIVnpaU0J2Ym1VZ2IyWWdaMnhmUTNWc2JFUnBjM1JoYm1ObElHOXlJR2RzWDBOMWJHeEVhWE4wWVc1alpWQmxjbFpwWlhkT1ZnQm5iRjlNWVhsbGNnQm5iRjlNWVhsbGNsQmxjbFpwWlhkT1ZnQkRZVzRnYjI1c2VTQjFjMlVnYjI1bElHOW1JR2RzWDB4aGVXVnlJRzl5SUdkc1gweGhlV1Z5VUdWeVZtbGxkMDVXQUdkc1gxWnBaWGR3YjNKMFRXRnphd0JuYkY5V2FXVjNjRzl5ZEUxaGMydFFaWEpXYVdWM1RsWUFRMkZ1SUc5dWJIa2dkWE5sSUc5dVpTQnZaaUJuYkY5V2FXVjNjRzl5ZEUxaGMyc2diM0lnWjJ4ZlZtbGxkM0J2Y25STllYTnJVR1Z5Vm1sbGQwNVdBRUYwSUd4bFlYTjBJRzl1WlNCemFHRmtaWElnYlhWemRDQnpjR1ZqYVdaNUlHRWdiR0Y1YjNWMEtHMWhlRjl3Y21sdGFYUnBkbVZ6SUQwZ2RtRnNkV1VwQUU5dWJIa2diMjVsSUhSaGMydE9WaUJwYm5SbGNtWmhZMlVnWW14dlkyc2dhWE1nWVd4c2IzZGxaQ0J3WlhJZ2MyaGhaR1Z5QUZWdWEyNXZkMjRnVTNSaFoyVXVBRkpsWTNWeWMybHZiaUJrWlhSbFkzUmxaRG9BSUdOaGJHeHBibWNnQUU1dklHWjFibU4wYVc5dUlHUmxabWx1YVhScGIyNGdLR0p2WkhrcElHWnZkVzVrT2lBQWQyaGxiaUJ0YjNKbElIUm9ZVzRnYjI1bElHWnlZV2R0Wlc1MElITm9ZV1JsY2lCdmRYUndkWFFzSUdGc2JDQnRkWE4wSUdoaGRtVWdiRzlqWVhScGIyNGdjWFZoYkdsbWFXVnljd0JuYkY4QUFBQVFBQUFBWVd4c2IyTmhkRzl5UEZRK09qcGhiR3h2WTJGMFpTaHphWHBsWDNRZ2Jpa2dKMjRuSUdWNFkyVmxaSE1nYldGNGFXMTFiU0J6ZFhCd2IzSjBaV1FnYzJsNlpRQkIzTEFSQ3lrSUFBQUFwZ0VBQUtjQkFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0JCa0xFUkN5a0lBQUFBcUFFQUFLa0JBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdCQnhMRVJDeWtJQUFBQXFnRUFBS3NCQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQkIrTEVSQzIwSUFBQUFyQUVBQUswQkFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUFnQUFBQUNBQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFFSHdzaEVMNHc2dUFRQUFyd0VBQUFvQUFBQ3dBUUFBREFBQUFBMEFBQUFPQUFBQXNRRUFBQkFBQUFBUkFBQUFFZ0FBQUdGdWIyNUFBRzExYzNRZ1ltVWdabTlzYkc5M1pXUWdZbmtnYldGamNtOGdibUZ0WlFBalpHVm1hVzVsQUFCaVlXUWdZWEpuZFcxbGJuUUFaSFZ3YkdsallYUmxJRzFoWTNKdklIQmhjbUZ0WlhSbGNnQnRhWE56YVc1bklIQmhjbVZ1ZEdobGMybHpBRzFwYzNOcGJtY2djM0JoWTJVZ1lXWjBaWElnYldGamNtOGdibUZ0WlFCTllXTnlieUJ5WldSbFptbHVaV1E3SUdaMWJtTjBhVzl1TFd4cGEyVWdkbVZ5YzNWeklHOWlhbVZqZEMxc2FXdGxPZ0JOWVdOeWJ5QnlaV1JsWm1sdVpXUTdJR1JwWm1abGNtVnVkQ0J1ZFcxaVpYSWdiMllnWVhKbmRXMWxiblJ6T2dCTllXTnlieUJ5WldSbFptbHVaV1E3SUdScFptWmxjbVZ1ZENCaGNtZDFiV1Z1ZENCdVlXMWxjem9BVFdGamNtOGdjbVZrWldacGJtVmtPeUJrYVdabVpYSmxiblFnYzNWaWMzUnBkSFYwYVc5dWN6b0FJM1Z1WkdWbUFHTmhiaUJ2Ym14NUlHSmxJR1p2Ykd4dmQyVmtJR0o1SUdFZ2MybHVaMnhsSUcxaFkzSnZJRzVoYldVQWJXRjRhVzExYlNCdVpYTjBhVzVuSUdSbGNIUm9JR1Y0WTJWbFpHVmtBQ05wWmk4amFXWmtaV1l2STJsbWJtUmxaZ0FqWld4cFppQmhablJsY2lBalpXeHpaUUFqWld4cFpnQWpaV3h6WlNCaFpuUmxjaUFqWld4elpRQWpaV3h6WlFCMWJtVjRjR1ZqZEdWa0lIUnZhMlZ1Y3lCbWIyeHNiM2RwYm1jZ1pHbHlaV04wYVhabEFDTmxibVJwWmdBamFXWUFJMnhwYm1VQVpHVm1hVzVsWkFCdWIyNXdiM0owWVdKc1pTQjNhR1Z1SUdWNGNHRnVaR1ZrSUdaeWIyMGdiV0ZqY205eklHWnZjaUJ3Y21Wd2NtOWpaWE56YjNJZ1pYaHdjbVZ6YzJsdmJnQmpZVzV1YjNRZ2RYTmxJR2x1SUhCeVpYQnliMk5sYzNOdmNpQmxlSEJ5WlhOemFXOXVJSGRvWlc0Z1pYaHdZVzVrWldRZ1puSnZiU0J0WVdOeWIzTUFhVzVqYjNKeVpXTjBJR1JwY21WamRHbDJaU3dnWlhod1pXTjBaV1FnYVdSbGJuUnBabWxsY2dCd2NtVndjbTlqWlhOemIzSWdaWFpoYkhWaGRHbHZiZ0JsZUhCbFkzUmxaQ0FuS1NjQVltRmtJR1Y0Y0hKbGMzTnBiMjRBWkdsMmFYTnBiMjRnWW5rZ01BQmpZVzRuZENCbGRtRnNkV0YwWlNCbGVIQnlaWE56YVc5dUFIVnVaR1ZtYVc1bFpDQnRZV055YnlCcGJpQmxlSEJ5WlhOemFXOXVJRzV2ZENCaGJHeHZkMlZrSUdsdUlHVnpJSEJ5YjJacGJHVUFJMmxtWkdWbUFDTnBabTVrWldZQWRXNWxlSEJsWTNSbFpDQjBiMnRsYm5NZ1ptOXNiRzkzYVc1bklDTnBabVJsWmlCa2FYSmxZM1JwZG1VZ0xTQmxlSEJsWTNSbFpDQmhJRzVsZDJ4cGJtVUFiWFZ6ZENCaVpTQm1iMnhzYjNkbFpDQmllU0JoSUdobFlXUmxjaUJ1WVcxbEFDTnBibU5zZFdSbEFHVjRjR1ZqZEdWa0lHNWxkMnhwYm1VZ1lXWjBaWElnYUdWaFpHVnlJRzVoYldVNkFDVnpBR1Y0ZEhKaElHTnZiblJsYm5RZ1lXWjBaWElnYUdWaFpHVnlJRzVoYldVNkFDTnNhVzVsSUFBZ0FDSUFJZ29BQ2dCRGIzVnNaQ0J1YjNRZ2NISnZZMlZ6Y3lCcGJtTnNkV1JsSUdScGNtVmpkR2wyWlFCbWIzSWdhR1ZoWkdWeUlHNWhiV1U2SUNWekFHMTFjM1FnWW5rZ1ptOXNiRzkzWldRZ1lua2dZVzRnYVc1MFpXZHlZV3dnYkdsMFpYSmhiQUFBR0dJRUFHWnBiR1Z1WVcxbExXSmhjMlZrSUNOc2FXNWxBQ05sY25KdmNnQmthWEpsWTNScGRtVWdiWFZ6ZENCbGJtUWdkMmwwYUNCaElHNWxkMnhwYm1VQUkzQnlZV2R0WVFCcGJuWmhiR2xrSUhCeVpYQnliMk5sYzNOdmNpQmpiMjF0WVc1a0FDTjJaWEp6YVc5dUFHMTFjM1FnYjJOamRYSWdabWx5YzNRZ2FXNGdjMmhoWkdWeUFHMTFjM1FnWW1VZ1ptOXNiRzkzWldRZ1lua2dkbVZ5YzJsdmJpQnVkVzFpWlhJQVltRmtJSEJ5YjJacGJHVWdibUZ0WlRzZ2RYTmxJR1Z6TENCamIzSmxMQ0J2Y2lCamIyMXdZWFJwWW1sc2FYUjVBR0poWkNCMGIydGxibk1nWm05c2JHOTNhVzVuSUhCeWIyWnBiR1VnTFMwZ1pYaHdaV04wWldRZ2JtVjNiR2x1WlFCbGVIUmxibk5wYjI0Z2JtRnRaU0J1YjNRZ2MzQmxZMmxtYVdWa0FDTmxlSFJsYm5OcGIyNEFaWGgwWlc1emFXOXVJRzVoYldVZ1pYaHdaV04wWldRQUp6b25JRzFwYzNOcGJtY2dZV1owWlhJZ1pYaDBaVzV6YVc5dUlHNWhiV1VBWW1Wb1lYWnBiM0lnWm05eUlHVjRkR1Z1YzJsdmJpQnViM1FnYzNCbFkybG1hV1ZrQUdWNGRISmhJSFJ2YTJWdWN5QXRMU0JsZUhCbFkzUmxaQ0J1Wlhkc2FXNWxBRzFwYzIxaGRHTm9aV1FnYzNSaGRHVnRaVzUwY3dBQUFBQTdZZ1FBYVc1MllXeHBaQ0JrYVhKbFkzUnBkbVU2QUNNQWFXNTJZV3hwWkNCa2FYSmxZM1JwZG1VQWFHVmhaR1Z5SUc1aGJXVWdkRzl2SUd4dmJtY0FKV1FBWm1sc1pXNWhiV1V0WW1GelpXUWdYMTlHU1V4RlgxOEFSVzVrSUc5bUlHbHVjSFYwSUdsdUlHMWhZM0p2QUcxaFkzSnZJR1Y0Y0dGdWMybHZiZ0JGYm1RZ2IyWWdiR2x1WlNCcGJpQnRZV055YnlCemRXSnpkR2wwZFhScGIyNDZBSFZ1Wlhod1pXTjBaV1FnSnlNbkFGUnZieUJtWlhjZ1lYSm5jeUJwYmlCTllXTnlid0JVYjI4Z2JXRnVlU0JoY21keklHbHVJRzFoWTNKdkFFSGN3UkVMS3NnQkFBREpBUUFBeWdFQUFNc0JBQURNQVFBQXpRRUFBTTRCQUFEUEFRQUEwQUVBQU5FQkFBRFNBUUJCa01JUkMzRFRBUUFBMUFFQUFOVUJBQURXQVFBQTF3RUFBTmdCQUFEWkFRQUEyZ0VBQU5zQkFBRFJBUUFBMGdFQUFBQmhiR3h2WTJGMGIzSThWRDQ2T21Gc2JHOWpZWFJsS0hOcGVtVmZkQ0J1S1NBbmJpY2daWGhqWldWa2N5QnRZWGhwYlhWdElITjFjSEJ2Y25SbFpDQnphWHBsQUVHTXd4RUxMZHdCQUFEZEFRQUEzZ0VBQU44QkFBRGdBUUFBMkFFQUFOa0JBQURhQVFBQTJ3RUFBT0VCQUFEaUFRQUFPQUJCeE1NUkN5M2pBUUFBNUFFQUFNai8vLy9JLy8vL0FBQUFBT1VCQUFEbUFRQUF4R0VFQVB4aEJBQVFZZ1FBMkdFRUFEZ0FRZnpERVF0YTV3RUFBT2dCQUFESS8vLy95UC8vL3dBQUFBRHBBUUFBNmdFQUFFZE1YMGRQVDBkTVJWOWpjSEJmYzNSNWJHVmZiR2x1WlY5a2FYSmxZM1JwZG1VQVIweGZSMDlQUjB4RlgybHVZMngxWkdWZlpHbHlaV04wYVhabEFFSGd4QkVMa0FYVEFRQUE2d0VBQU93QkFBRHRBUUFBN2dFQUFOZ0JBQURaQVFBQTJnRUFBTnNCQUFEUkFRQUEwZ0VBQUo1YkJBREpXUVFBeVZrRUFHdGJCQUJUV3dRQWwxc0VBS0piQkFBOFltRmtJSFJ2YTJWdVBnQitJU1ZlSmlvb0tTMHJQWHdzTGp3K0x6ODdPbHRkZTMwalhBQUFnUUFBQUNCa0JBQ0NBQUFBSTJRRUFJTUFBQUFtWkFRQWhBQUFBQ2xrQkFDRkFBQUFMR1FFQUlZQUFBQXZaQVFBaHdBQUFESmtCQUNOQUFBQU5XUUVBSTRBQUFBNFpBUUFqd0FBQUR0a0JBQ0lBQUFBUG1RRUFJa0FBQUJDWkFRQWlnQUFBRVprQkFDTEFBQUFTV1FFQUl3QUFBQk1aQVFBa0FBQUFFOWtCQUNSQUFBQVVtUUVBSklBQUFCVlpBUUFrd0FBQUZoa0JBQ1VBQUFBVzJRRUFKVUFBQUJlWkFRQWxnQUFBR0ZrQkFDakFBQUFaR1FFQUtRQUFBQnJaQVFBcFFBQUFIRmtCQUNwQUFBQWRHUUVBS2dBQUFCNVpBUUFxZ0FBQUg1a0JBQ21BQUFBaEdRRUFLY0FBQUNLWkFRQXF3QUFBSkZrQkFDc0FBQUFsbVFFQUswQUFBQ2RaQVFBcmdBQUFLTmtCQUN2QUFBQXEyUUVBTEFBQUFDd1pBUUFzUUFBQUw1a0JBQ3lBQUFBd1dRRUFMTUFBQURMWkFRQXRBQUFBTlJrQkFDMUFBQUEzV1FFQUxZQUFBRHBaQVFBS3owQUxUMEFLajBBTHowQUpUMEFQajRBUER3QUppWUFmSHdBWGw0QVBqNDlBRHc4UFFBbVBRQjhQUUJlUFFBOVBRQWhQUUErUFFBOFBRQXRMUUFyS3dBNk9nQmtaV1pwYm1VQWRXNWtaV1lBYVdZQVpXeHBaZ0JsYkhObEFHVnVaR2xtQUdsbVpHVm1BR2xtYm1SbFpnQnNhVzVsQUhCeVlXZHRZUUJsY25KdmNnQjJaWEp6YVc5dUFHTnZjbVVBWTI5dGNHRjBhV0pwYkdsMGVRQmxjd0JsZUhSbGJuTnBiMjRBWDE5TVNVNUZYMThBWDE5R1NVeEZYMThBWDE5V1JWSlRTVTlPWDE4QWFXNWpiSFZrWlFCQi9Na1JDd252QVFBQThBRUFBRHdBUVpES0VRc3Q4UUVBQVBJQkFBREUvLy8veFAvLy93QUFBQUR6QVFBQTlBRUFBQkJsQkFCSVpRUUFYR1VFQUNSbEJBQThBRUhJeWhFTEd2VUJBQUQyQVFBQXhQLy8vOFQvLy84QUFBQUE5d0VBQVBnQkFFSHN5aEVMZS9rQkFBRDZBUUFBK3dFQUFQd0JBQUQ5QVFBQS9nRUFBUDhCQUFBQUFnQUFBUUlBQUFJQ0FBQURBZ0FBQkFJQUFBVUNBQUFHQWdBQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUJCOE1zUkM5VUowd0VBQUFjQ0FBQUdBQUFBQmdBQUFBWUFBQURZQVFBQTJRRUFBTm9CQUFEYkFRQUEwUUVBQU5JQkFBQmlZV1FnWTJoaGNtRmpkR1Z5SUdsdUlHWnNiMkYwSUdWNGNHOXVaVzUwQUFCa2IzVmliR1VnWm14dllYUnBibWN0Y0c5cGJuUWdjM1ZtWm1sNEFHWnNiMkYwSUd4cGRHVnlZV3dnYm1WbFpITWdZU0JrWldOcGJXRnNJSEJ2YVc1MElHOXlJR1Y0Y0c5dVpXNTBBR2hoYkdZZ1pteHZZWFJwYm1jdGNHOXBiblFnYzNWbVptbDRBR1pzYjJGMGFXNW5MWEJ2YVc1MElITjFabVpwZUFCbWJHOWhkQ0JzYVhSbGNtRnNJSFJ2YnlCc2IyNW5BSFZ1Wlhod1pXTjBaV1FBSndCdlkzUmhiQ0JoYm1RZ2FHVjRJSE5sY1hWbGJtTmxjeUJ1YjNRZ2MzVndjRzl5ZEdWa0FGd0FaWGh3WldOMFpXUUFIR2NFQURSbkJBQmNad1FBUjB4ZlFWSkNYMmR3ZFY5emFHRmtaWEpmYVc1ME5qUUFSMHhmUlZoVVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5aGNtbDBhRzFsZEdsalgzUjVjR1Z6QUVkTVgwVllWRjl6YUdGa1pYSmZaWGh3YkdsamFYUmZZWEpwZEdodFpYUnBZMTkwZVhCbGMxOXBiblEyTkFBQUFKaG5CQUEwWndRQXNHY0VBRWRNWDBGTlJGOW5jSFZmYzJoaFpHVnlYMmx1ZERFMkFFZE1YMFZZVkY5emFHRmtaWEpmWlhod2JHbGphWFJmWVhKcGRHaHRaWFJwWTE5MGVYQmxjMTlwYm5ReE5nQnVZVzFsSUhSdmJ5QnNiMjVuQUdKaFpDQmthV2RwZENCcGJpQm9aWGhoWkdWamFXMWhiQ0JzYVhSbGNtRnNBR2hsZUdGa1pXTnBiV0ZzSUd4cGRHVnlZV3dnZEc5dklHSnBad0JvWlhoaFpHVmphVzFoYkNCc2FYUmxjbUZzSUhSdmJ5QnNiMjVuQURZMExXSnBkQ0JvWlhoaFpHVmphVzFoYkNCc2FYUmxjbUZzQURFMkxXSnBkQ0JvWlhoaFpHVmphVzFoYkNCc2FYUmxjbUZzQUc1MWJXVnlhV01nYkdsMFpYSmhiQ0IwYjI4Z2JHOXVad0J2WTNSaGJDQnNhWFJsY21Gc0lHUnBaMmwwSUhSdmJ5QnNZWEpuWlFCdlkzUmhiQ0JzYVhSbGNtRnNJSFJ2YnlCaWFXY0FOalF0WW1sMElHOWpkR0ZzSUd4cGRHVnlZV3dBTVRZdFltbDBJRzlqZEdGc0lHeHBkR1Z5WVd3QWJuVnRaWEpwWXlCc2FYUmxjbUZzSUhSdmJ5QmlhV2NBTmpRdFltbDBJR3hwZEdWeVlXd0FNVFl0WW1sMElDQnNhWFJsY21Gc0FERTJMV0pwZENCc2FYUmxjbUZzQUVWdVpDQnZaaUJwYm5CMWRDQnBiaUJqYjIxdFpXNTBBR052YlcxbGJuUUFSVzVrSUc5bUlHeHBibVVnYVc0Z2MzUnlhVzVuQUhOMGNtbHVad0J3Y21Wd2NtOWpaWE56YjNJZ1pHbHlaV04wYVhabElHTmhibTV2ZENCaVpTQndjbVZqWldSbFpDQmllU0JoYm05MGFHVnlJSFJ2YTJWdUFDTUFjM1J5YVc1bklHeHBkR1Z5WVd4eklHNXZkQ0J6ZFhCd2IzSjBaV1FBSWlJQVkyaGhjbUZqZEdWeUlHeHBkR1Z5WVd4eklHNXZkQ0J6ZFhCd2IzSjBaV1FBSlhNQWRXNWxlSEJsWTNSbFpDQnNiMk5oZEdsdmJnQWpJd0IxYm1WNGNHVmpkR1ZrSUd4dlkyRjBhVzl1T3lCbGJtUWdiMllnY21Wd2JHRmpaVzFsYm5RZ2JHbHpkQUIxYm1WNGNHVmpkR1ZrSUd4dlkyRjBhVzl1T3lCbGJtUWdiMllnWVhKbmRXMWxiblFBYm05MElITjFjSEJ2Y25SbFpDQm1iM0lnZEdobGMyVWdkRzlyWlc1ekFHTnZiV0pwYm1Wa0lIUnZhMlZ1Y3lCaGNtVWdkRzl2SUd4dmJtY0FZMjl0WW1sdVpXUWdkRzlyWlc0Z2FYTWdhVzUyWVd4cFpBQnRhWE56YVc1bklDTmxibVJwWmdCQjBOVVJDejdUQVFBQUNBSUFBQWtDQUFBS0FnQUFDd0lBQU5nQkFBRFpBUUFBMmdFQUFOc0JBQURSQVFBQTBnRUFBSFJ2YTJWdUlIQmhjM1JwYm1jZ0tDTWpLUUJCbU5ZUkN5N1RBUUFBREFJQUFBMENBQUFPQWdBQUR3SUFBTmdCQUFEWkFRQUEyZ0VBQU5zQkFBRFJBUUFBMGdFQUFDVnpBRUhRMWhFTEt0TUJBQUFRQWdBQUVRSUFBQklDQUFBVEFnQUFGQUlBQUJVQ0FBRGFBUUFBMndFQUFORUJBQURTQVFCQmhOY1JDM1FXQWdBQUZ3SUFBQmdDQUFBTEFBQUFHUUlBQUJvQ0FBQU9BQUFBR3dJQUFCQUFBQUFjQWdBQUVnQUFBQ2dBS1FBQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUJCaE5nUkN5a0lBQUFBSFFJQUFCNENBQUFMQUFBQUh3SUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdCQnVOZ1JDeWtnQWdBQUlRSUFBQ0lDQUFBTEFBQUFJd0lBQUNRQ0FBQU9BQUFBSlFJQUFCQUFBQUFSQUFBQUVnQkI4TmdSQzVzQ0pnSUFBQ2NDQUFBb0FnQUFLUUlBQUNvQ0FBQXJBZ0FBTEFJQUFDMENBQUF1QWdBQUx3SUFBREFDQUFBdkx5QlBjRTF2WkhWc1pWQnliMk5sYzNObFpDQUFDZ0FqYkdsdVpTQXhDZ0JIVEZOTUxuTjBaQzQwTlRBQVUxQldYMFZZVkY5d2FIbHphV05oYkY5emRHOXlZV2RsWDJKMVptWmxjZ0JUVUZaZlMwaFNYM1oxYkd0aGJsOXRaVzF2Y25sZmJXOWtaV3dBVTFCV1gwdElVbDl3YjNOMFgyUmxjSFJvWDJOdmRtVnlZV2RsQUZOUVZsOUZXRlJmWm5KaFoyMWxiblJmYzJoaFpHVnlYMmx1ZEdWeWJHOWphd0JUVUZaZlRsWmZZMjl0Y0hWMFpWOXphR0ZrWlhKZlpHVnlhWFpoZEdsMlpYTUFVMUJXWDA1V1gzSmhlVjkwY21GamFXNW5BRk5RVmw5T1ZsOXRaWE5vWDNOb1lXUmxjZ0JCbE5zUkMrZ0VNUUlBQURJQ0FBQmhiR3h2WTJGMGIzSThWRDQ2T21Gc2JHOWpZWFJsS0hOcGVtVmZkQ0J1S1NBbmJpY2daWGhqWldWa2N5QnRZWGhwYlhWdElITjFjSEJ2Y25SbFpDQnphWHBsQUFCVFVGWmZUbFpmYzJGdGNHeGxYMjFoYzJ0ZmIzWmxjbkpwWkdWZlkyOTJaWEpoWjJVQVUxQldYMDVXWDNacFpYZHdiM0owWDJGeWNtRjVNZ0JUVUZaZlRsWmZjM1JsY21WdlgzWnBaWGRmY21WdVpHVnlhVzVuQUZOUVZsOU9WbDluWlc5dFpYUnllVjl6YUdGa1pYSmZjR0Z6YzNSb2NtOTFaMmdBVTFCV1gwNVdYMlp5WVdkdFpXNTBYM05vWVdSbGNsOWlZWEo1WTJWdWRISnBZd0JUVUZaZlIwOVBSMHhGWDJoc2MyeGZablZ1WTNScGIyNWhiR2wwZVRFQVUxQldYMFZZVkY5emFHRmtaWEpmZG1sbGQzQnZjblJmYVc1a1pYaGZiR0Y1WlhJQVUxQldYMHRJVWw5emFHRmtaWEpmWkhKaGQxOXdZWEpoYldWMFpYSnpBRk5RVmw5RldGUmZjMmhoWkdWeVgzTjBaVzVqYVd4ZlpYaHdiM0owQUZOUVZsOUxTRkpmYzJoaFpHVnlYMkpoYkd4dmRBQlRVRlpmUVUxRVgzTm9ZV1JsY2w5bGVIQnNhV05wZEY5MlpYSjBaWGhmY0dGeVlXMWxkR1Z5QUZOUVZsOUxTRkpmWkdWMmFXTmxYMmR5YjNWd0FGTlFWbDlMU0ZKZmJYVnNkR2wyYVdWM0FGTlFWbDlGV0ZSZlpuSmhaMjFsYm5SZmFXNTJiMk5oZEdsdmJsOWtaVzV6YVhSNUFGTlFWbDlPVmxoZmJYVnNkR2wyYVdWM1gzQmxjbDkyYVdWM1gyRjBkSEpwWW5WMFpYTUFVMUJXWDBWWVZGOW1jbUZuYldWdWRGOW1kV3hzZVY5amIzWmxjbVZrQUZOUVZsOU9WbDl6YUdGa2FXNW5YM0poZEdVQVUxQldYMDVXWDNOb1lXUmxjbDl6YlY5aWRXbHNkR2x1Y3dCQmhPQVJDNmtLVTFCV1gwdElVbDh4Tm1KcGRGOXpkRzl5WVdkbEFGTlFWbDlMU0ZKZk9HSnBkRjl6ZEc5eVlXZGxBQUJPWldsMGFHVnlJR0VnWm5KdmJuUXRaVzVrSUdOdmJuTjBZVzUwSUc1dmNpQmhJSE53WldNZ1kyOXVjM1JoYm5RdUFGTlFWbDlMU0ZKZmMzUnZjbUZuWlY5aWRXWm1aWEpmYzNSdmNtRm5aVjlqYkdGemN3QlRVRlpmVGxaZlkyOXZjR1Z5WVhScGRtVmZiV0YwY21sNEFGTlFWbDlGV0ZSZlpHVnpZM0pwY0hSdmNsOXBibVJsZUdsdVp3QlRVRlpmUVUxRVgyZHdkVjl6YUdGa1pYSmZhR0ZzWmw5bWJHOWhkRjltWlhSamFBQm5iRjlUWldOdmJtUmhjbmxXYVdWM2NHOXlkRTFoYzJ0T1ZnQkhURjlPVmw5emRHVnlaVzlmZG1sbGQxOXlaVzVrWlhKcGJtY0FaMnhmVTJWamIyNWtZWEo1VUc5emFYUnBiMjVPVmdCbmJGOVdhV1YzY0c5eWRFMWhjMnNBUjB4ZlRsWmZkbWxsZDNCdmNuUmZZWEp5WVhreUFHZHNYMUJ2YzJsMGFXOXVVR1Z5Vm1sbGQwNVdBRWRNWDA1V1dGOXRkV3gwYVhacFpYZGZjR1Z5WDNacFpYZGZZWFIwY21saWRYUmxjd0JuYkY5V2FXVjNjRzl5ZEUxaGMydFFaWEpXYVdWM1RsWUFKRWRzYjJKaGJBQm1iM0pqYVc1bklETXlMV0pwZENCMlpXTjBiM0lnZEhsd1pTQjBieUJ1YjI0Z05qUXRZbWwwSUhOallXeGhjZ0JtYjNKamFXNW5JRzV2YmlBek1pMWlhWFFnZG1WamRHOXlJSFI1Y0dVQWJXRjBjbWw0SUhOM2FYcDZiR1VBZFc1cmJtOTNiaUJuYkhOc1lXNW5JR0pwYm1GeWVTQnZjR1Z5WVhScGIyNEFkVzVyYm05M2JpQm5iSE5zWVc1bklIVnVZWEo1QUZOUVZsOUJUVVJmYzJoaFpHVnlYMmx0WVdkbFgyeHZZV1JmYzNSdmNtVmZiRzlrQUZOUVZsOUJUVVJmYzJoaFpHVnlYMlp5WVdkdFpXNTBYMjFoYzJzQVIweGZRVTFFWDNSbGVIUjFjbVZmWjJGMGFHVnlYMkpwWVhOZmJHOWtBRk5RVmw5QlRVUmZkR1Y0ZEhWeVpWOW5ZWFJvWlhKZlltbGhjMTlzYjJRQVUxQldYMDVXWDNOb1lXUmxjbDlwYldGblpWOW1iMjkwY0hKcGJuUUFVbVZ6Vkhsd1pRQlRVRlpmUzBoU1gzQm9lWE5wWTJGc1gzTjBiM0poWjJWZlluVm1abVZ5QUZOUVZsOUJUVVJmWjNCMVgzTm9ZV1JsY2w5b1lXeG1YMlpzYjJGMEFGTlFWbDlKVGxSRlRGOXphR0ZrWlhKZmFXNTBaV2RsY2w5bWRXNWpkR2x2Ym5NeUFGTlFWbDlCVFVSZmMyaGhaR1Z5WDJKaGJHeHZkQUJUVUZaZlFVMUVYMmRqYmw5emFHRmtaWElBVTFCV1gwdElVbDl6ZFdKbmNtOTFjRjkyYjNSbEFHbHVkbTlqWVhScGIyNGdiM0JsY21GMGFXOXVBRk5RVmw5T1ZsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZmNHRnlkR2wwYVc5dVpXUUFiV2x6YzJsdVp5QjFjMlZ5SUdaMWJtTjBhVzl1T3lCc2FXNXJaWElnYm1WbFpITWdkRzhnWTJGMFkyZ2dkR2hoZEFCVFVGWmZTMGhTWDNOb1lXUmxjbDloZEc5dGFXTmZZMjkxYm5SbGNsOXZjSE1BZFc1cmJtOTNiaUJuYkhOc1lXNW5JR0ZuWjNKbFoyRjBaUUJ3WVhKaGJRQmhjbWNBVTFCV1gwVllWRjlrWlcxdmRHVmZkRzlmYUdWc2NHVnlYMmx1ZG05allYUnBiMjRBVTFCV1gwdElVbDl6YUdGa1pYSmZZMnh2WTJzQWRXNXJibTkzYmlCdmNHVnlZWFJwYjI0Z2QybDBhQ0J1YnlCaGNtZDFiV1Z1ZEhNQVUxQldYMEZOUkY5bmNIVmZjMmhoWkdWeVgybHVkREUyQUZOUVZsOUJUVVJmYzJoaFpHVnlYM1J5YVc1aGNubGZiV2x1YldGNEFCTUFBQUFVQUFBQUZRQUFBQk1BQUFBV0FBQUFGd0FBQUFBQUFBQUJBQUFBQWdBQUFBTUFBQUFFQUFBQUJRQUFBTUVVQUFEQ0ZBQUF3eFFBQU1RVUFBREZGQUFBeGhRQUFKTVVBQUNVRkFBQUFnQUFBQUlBQUFBQUFBQUFBZ0JCdk9vUkMva0JBUUFBQUFjQUFBQUdBQUFBQndBQUFBY0FBQUFIQUFBQUJ3QUFBQWNBQUFBRUFBQUEyaFFBQU40VUFBRGJGQUFBMEJRQUFORVVBQUFIQUFBQUJ3QUFBQWNBQUFBSEFBQUFBQUFBQUFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQS8vLy9md1lBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBRkFBQUFQLy8vMzhWQUFBQUZnQUFBQmNBQUFBWUFBQUEvLy8vZnhrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQS8vLy9meDRBQUFBZkFBQUFJQUFBQUNFQUFBRC8vLzkvSXdBQUFDUUFBQUFpQUFBQUpRQUFBQ1lBQUFBbkFFSEU3QkVMY3dFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBUWNEdEVRc2dOUUlBQURZQ0FBQlNaWE5VZVhCbEFHbHVaR1Y0WVdKc1pRQUFBQU1DSXdjQVFlanRFUXRMTndJQUFEZ0NBQUJoYkd4dlkyRjBiM0k4VkQ0Nk9tRnNiRzlqWVhSbEtITnBlbVZmZENCdUtTQW5iaWNnWlhoalpXVmtjeUJ0WVhocGJYVnRJSE4xY0hCdmNuUmxaQ0J6YVhwbEFFSEE3aEVMQmprQ0FBQTZBZ0JCME80UkN3WTdBZ0FBUEFJQVFZenZFUXZ5QVFFQUFBQUJBQUFBQWdBQUFBTUFBQUFDQUFBQUFnQUFBQUVBQUFBQ0FBQUFVMUJXWDBGTlJGOW5jSFZmYzJoaFpHVnlYMmx1ZERFMkFGTlFWbDlCVFVSZlozQjFYM05vWVdSbGNsOW9ZV3htWDJac2IyRjBBRk5RVmw5T1ZsOXphR0ZrWlhKZmMzVmlaM0p2ZFhCZmNHRnlkR2wwYVc5dVpXUUFVMUJXWDB0SVVsODRZbWwwWDNOMGIzSmhaMlVBVTFCV1gwdElVbDh4Tm1KcGRGOXpkRzl5WVdkbEFHRnNiRzlqWVhSdmNqeFVQam82WVd4c2IyTmhkR1VvYzJsNlpWOTBJRzRwSUNkdUp5QmxlR05sWldSeklHMWhlR2x0ZFcwZ2MzVndjRzl5ZEdWa0lITnBlbVVBQUFBQVBnSUFBRDhDQUVHSThSRUxNUEMzQkFBdEt5QWdJREJZTUhnQUtHNTFiR3dwQUFBQUFCRUFDZ0FSRVJFQUFBQUFCUUFBQUFBQUFBa0FBQUFBQ3dCQndQRVJDeUVSQUE4S0VSRVJBd29IQUFFVENRc0xBQUFKQmdzQUFBc0FCaEVBQUFBUkVSRUFRZkh4RVFzQkN3QkIrdkVSQ3hnUkFBb0tFUkVSQUFvQUFBSUFDUXNBQUFBSkFBc0FBQXNBUWF2eUVRc0JEQUJCdC9JUkN4VU1BQUFBQUF3QUFBQUFDUXdBQUFBQUFBd0FBQXdBUWVYeUVRc0JEZ0JCOGZJUkN4VU5BQUFBQkEwQUFBQUFDUTRBQUFBQUFBNEFBQTRBUVovekVRc0JFQUJCcS9NUkN4NFBBQUFBQUE4QUFBQUFDUkFBQUFBQUFCQUFBQkFBQUJJQUFBQVNFaElBUWVMekVRc09FZ0FBQUJJU0VnQUFBQUFBQUFrQVFaUDBFUXNCQ3dCQm4vUVJDeFVLQUFBQUFBb0FBQUFBQ1FzQUFBQUFBQXNBQUFzQVFjMzBFUXNCREFCQjJmUVJDMUlNQUFBQUFBd0FBQUFBQ1F3QUFBQUFBQXdBQUF3QUFEQXhNak0wTlRZM09EbEJRa05FUlVZdE1GZ3JNRmdnTUZndE1IZ3JNSGdnTUhnQWFXNW1BRWxPUmdCdVlXNEFUa0ZPQUM0QUFBQUFnTGdFQUVIVTlSRUxBa2NDQUVINzlSRUxCZi8vLy8vL0FFSEE5aEVMNXhmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BQUVDQXdRRkJnY0lDZi8vLy8vLy8vOEtDd3dORGc4UUVSSVRGQlVXRnhnWkdoc2NIUjRmSUNFaUkvLy8vLy8vL3dvTERBME9EeEFSRWhNVUZSWVhHQmthR3h3ZEhoOGdJU0lqLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0FCQWdRSEF3WUZBQUFBQUFBQUFBTUFBQUFFQUFBQUJBQUFBQVlBQUFDRCthSUFSRTV1QVB3cEZRRFJWeWNBM1RUMUFHTGJ3QUE4bVpVQVFaQkRBR05SL2dDNzNxc0F0MkhGQURwdUpBRFNUVUlBU1FiZ0FBbnFMZ0Fja3RFQTZ4MytBQ214SEFEb1BxY0E5VFdDQUVTN0xnQ2M2WVFBdENad0FFRitYd0RXa1RrQVU0TTVBSnowT1FDTFg0UUFLUG05QVBnZk93RGUvNWNBRDVnRkFCRXY3d0FLV29zQWJSOXRBTTkrTmdBSnl5Y0FSayszQUo1bVB3QXQ2bDhBdWlkMUFPWHJ4d0E5ZS9FQTl6a0hBSkpTaWdEN2Erb0FIN0ZmQUFoZGpRQXdBMVlBZS94R0FQQ3Jhd0Fndk04QU52U2FBT09wSFFCZVlaRUFDQnZtQUlXWlpRQ2dGRjhBalVCb0FJRFkvd0FuYzAwQUJnWXhBTXBXRlFESnFITUFlK0pnQUd1TXdBQVp4RWNBeldmREFBbm8zQUJaZ3lvQWkzYkVBS1ljbGdCRXI5MEFHVmZSQUtVK0JRQUZCLzhBTTM0L0FNSXk2QUNZVDk0QXUzMHlBQ1k5d3dBZWErOEFuL2hlQURVZk9nQi84c29BOFljZEFIeVFJUUJxSkh3QTFXNzZBREF0ZHdBVk8wTUF0UlRHQU1NWm5RQ3R4TUlBTEUxQkFBd0FYUUNHZlVZQTQzRXRBSnZHbWdBellnQUF0Tko4QUxTbmx3QTNWZFVBMXo3MkFLTVFHQUJOZHZ3QVpKMHFBSERYcXdCamZQZ0FlckJYQUJjVjV3REFTVllBTzliWkFLZUVPQUFrSThzQTFvcDNBRnBVSXdBQUg3a0E4UW9iQUJuTzN3Q2ZNZjhBWmg1cUFKbFhZUUNzKzBjQWZuL1lBQ0psdHdBeTZJa0E1cjlnQU8vRXpRQnNOZ2tBWFQvVUFCYmUxd0JZTzk0QTNwdVNBTklpS0FBb2h1Z0E0bGhOQU1iS01nQUk0eFlBNEgzTEFCZkFVQUR6SGFjQUdPQmJBQzRUTkFDREVtSUFnMGdCQVBXT1d3Q3RzSDhBSHVueUFFaEtRd0FRWjlNQXF0M1lBSzVmUWdCcVljNEFDaWlrQU5PWnRBQUdwdklBWEhkL0FLUENnd0JoUElnQWluTjRBSytNV2dCdjE3MEFMYVpqQVBTL3l3Q05nZThBSnNGbkFGWEtSUURLMlRZQUtLalNBTUpoalFBU3lYY0FCQ1lVQUJKR213REVXY1FBeU1WRUFFMnlrUUFBRi9NQTFFT3RBQ2xKNVFEOTFSQUFBTDc4QUI2VXpBQnd6dTRBRXo3MUFPenhnQUN6NThNQXgvZ29BSk1GbEFEQmNUNEFMZ216QUF0Rjh3Q0lFcHdBcXlCN0FDNjFud0JIa3NJQWV6SXZBQXhWYlFCeXA1QUFhK2NmQURITGxnQjVGa29BUVhuaUFQVGZpUURvbEpjQTR1YUVBSmt4bHdDSTdXc0FYMTgyQUx2OURnQkltclFBWjZSc0FIRnlRZ0NOWFRJQW54VzRBTHpsQ1FDTk1TVUE5M1E1QURBRkhBQU5EQUVBU3dob0FDenVXQUJIcXBBQWRPY0NBTDNXSkFEM2ZhWUFia2h5QUo4Vzd3Q09sS1lBdEpIMkFORlRVUURQQ3ZJQUlKZ3pBUFZMZmdDeVkyZ0EzVDVmQUVCZEF3Q0ZpWDhBVlZJcEFEZGt3QUJ0MkJBQU1rZ3lBRnRNZFFCT2NkUUFSVlJ1QUFzSndRQXE5V2tBRkdiVkFDY0huUUJkQkZBQXREdmJBT3AyeFFDSCtSY0FTV3Q5QUIwbnVnQ1dhU2tBeHN5c0FLMFVWQUNRNG1vQWlObUpBQ3h5VUFBRXBMNEFkd2VVQVBNd2NBQUEvQ2NBNm5Hb0FHYkNTUUJrNEQwQWw5MkRBS00vbHdCRGxQMEFEWWFNQURGQjNnQ1NPWjBBM1hDTUFCZTM1d0FJM3pzQUZUY3JBRnlBb0FCYWdKTUFFQkdTQUEvbzJBQnNnSzhBMi85TEFEaVFEd0JaR0hZQVlxVVZBR0hMdXdESGlia0FFRUM5QU5MeUJBQkpkU2NBNjdiMkFOc2l1d0FLRktvQWlTWXZBR1NEZGdBSk96TUFEcFFhQUZFNnFnQWRvOElBcisydUFGd21FZ0J0d2swQUxYcWNBTUJXbHdBRFA0TUFDZkQyQUN0QWpBQnRNWmtBT2JRSEFBd2dGUURZdzFzQTlaTEVBTWF0U3dCT3lxVUFwemZOQU9hcE5nQ3JrcFFBM1VKb0FCbGozZ0Iyak84QWFJdFNBUHpiTndDdW9hc0EzeFV4QUFDdW9RQU0rOW9BWkUxbUFPMEZ0d0FwWlRBQVYxYS9BRWYvT2dCcStia0FkYjd6QUNpVDN3Q3JnREFBWm96MkFBVExGUUQ2SWdZQTJlUWRBRDJ6cEFCWEc0OEFOczBKQUU1QzZRQVR2cVFBTXlPMUFQQ3FHZ0JQWmFnQTBzR2xBQXMvRHdCYmVNMEFJL2wyQUh1TEJBQ0pGM0lBeHFaVEFHOXU0Z0R2NndBQW0wcFlBTVRhdHdDcVpyb0Fkcy9QQU5FQ0hRQ3g4UzBBakpuQkFNT3Rkd0NHU05vQTkxMmdBTWFBOUFDczhDOEEzZXlhQUQ5Y3ZBRFEzbTBBa01jZkFDcmJ0Z0NqSlRvQUFLK2FBSzFUa3dDMlZ3UUFLUzIwQUV1QWZnRGFCNmNBZHFvT0FIdFpvUUFXRWlvQTNMY3RBUHJsL1FDSjIvNEFpYjc5QU9SMmJBQUdxZndBUG9Cd0FJVnVGUUQ5aC84QUtENEhBR0ZuTXdBcUdJWUFUYjNxQUxQbnJ3Q1BiVzRBbFdjNUFERy9Xd0NFMTBnQU1OOFdBTWN0UXdBbFlUVUF5WERPQURETHVBQy9iUDBBcEFDaUFBVnM1QUJhM2FBQUlXOUhBR0lTMGdDNVhJUUFjR0ZKQUd0VzRBQ1pVZ0VBVUZVM0FCN1Z0d0F6OGNRQUUyNWZBRjB3NUFDRkxxa0FIYkxEQUtFeU5nQUl0NlFBNnJIVUFCYjNJUUNQYWVRQUovOTNBQXdEZ0FDTlFDMEFUODJnQUNDbG1RQ3pvdE1BTDEwS0FMVDVRZ0FSMnNzQWZiN1FBSnZid1FDckY3MEF5cUtCQUFocVhBQXVWUmNBSndCVkFIOFU4QURoQjRZQUZBdGtBSlpCalFDSHZ0NEEydjBxQUdzbHRnQjdpVFFBQmZQK0FMbS9uZ0JvYWs4QVNpcW9BRS9FV2dBdCtMd0ExMXFZQVBUSGxRQU5UWTBBSURxbUFLUlhYd0FVUDdFQWdEaVZBTXdnQVFCeDNZWUF5ZDYyQUw5ZzlRQk5aUkVBQVFkckFJeXdyQUN5d05BQVVWVklBQjc3RGdDVmNzTUFvd1k3QU1CQU5RQUczSHNBNEVYTUFFNHArZ0RXeXNnQTZQTkJBSHhrM2dDYlpOZ0EyYjR4QUtTWHd3QjNXTlFBYWVQRkFQRGFFd0M2T2p3QVJoaEdBRlYxWHdEU3ZmVUFicExHQUt3dVhRQU9STzBBSEQ1Q0FHSEVod0FwL2VrQTU5YnpBQ0o4eWdCdmtUVUFDT0RGQVAvWGpRQnVhdUlBc1AzR0FKTUl3UUI4WFhRQWE2MnlBTTF1blFBK2Nuc0F4aEZxQVBmUHFRQXBjOThBdGNtNkFMY0FVUURpc2cwQWRMb2tBT1Y5WUFCMDJJb0FEUlVzQUlFWURBQitacFFBQVNrV0FKOTZkZ0Q5L2I0QVZrWHZBTmwrTmdEczJSTUFpN3E1QU1TWC9BQXhxQ2NBOFc3REFKVEZOZ0RZcUZZQXRLaTFBTS9NRGdBU2lTMEFiMWMwQUN4V2lRQ1p6dU1BMWlDNUFHdGVxZ0ErS3B3QUVWL01BUDBMU2dEaDlQc0FqanR0QU9LR0xBRHAxSVFBL0xTcEFPL3UwUUF1TmNrQUx6bGhBRGdoUkFBYjJjZ0FnZndLQVB0S2FnQXZITmdBVTdTRUFFNlpqQUJVSXN3QUtsWGNBTURHMWdBTEdaWUFHbkM0QUdtVlpBQW1XbUFBUDFMdUFIOFJEd0QwdFJFQS9NdjFBRFM4TFFBMHZPNEE2RjNNQU4xZVlBQm5qcHNBa2pQdkFNa1h1QUJoV0pzQTRWZThBRkdEeGdEWVBoQUEzWEZJQUMwYzNRQ3ZHS0VBSVN4R0FGbnoxd0RaZXBnQW5sVEFBRStHK2dCV0J2d0E1WG11QUlraU5nQTRyU0lBWjVQY0FGWG9xZ0NDSmpnQXl1ZWJBRkVOcEFDWk03RUFxZGNPQUdrRlNBQmxzdkFBZjRpbkFJaE1sd0Q1MFRZQUlaS3pBSHVDU2dDWXp5RUFRSi9jQU54SFZRRGhkRG9BWit0Q0FQNmQzd0JlMUY4QWUyZWtBTHFzZWdCVjlxSUFLNGdqQUVHNlZRQlpiZ2dBSVNxR0FEbEhnd0NKNCtZQTVaN1VBRW43UUFEL1Z1a0FIQS9LQU1WWmlnQ1UraXNBMDhIRkFBL0Z6d0RiV3E0QVI4V0dBSVZEWWdBaGhqc0FMSG1VQUJCaGh3QXFUSHNBZ0N3YUFFTy9FZ0NJSnBBQWVEeUpBS2pFNUFEbDIzc0F4RHJDQUNiMDZnRDNaNG9BRFpLL0FHV2pLd0E5azdFQXZYd0xBS1JSM0FBbjNXTUFhZUhkQUpxVUdRQ29LWlVBYU00b0FBbnR0QUJFbnlBQVRwaktBSENDWXdCK2ZDTUFEN2t5QUtmMWpnQVVWdWNBSWZFSUFMV2RLZ0J2ZmswQXBSbFJBTFg1cXdDQzM5WUFsdDFoQUJZMkFnREVPcDhBZzZLaEFITHRiUUE1alhvQWdyaXBBR3N5WEFCR0oxc0FBRFR0QU5JQWR3RDg5RlVBQVZsTkFPQnhnQUJCczQ0U0M1MEJRUHNoK1Q4QUFBQUFMVVIwUGdBQUFJQ1lSdmc4QUFBQVlGSE1lRHNBQUFDQWd4dndPUUFBQUVBZ0pYbzRBQUFBZ0NLQzR6WUFBQUFBSGZOcE5VKzdZUVZuck4wL0dDMUVWUHNoNlQrYjlvSFNDM1B2UHhndFJGVDdJZmsvNG1VdkluOHJlandIWEJRekpxYUJQTDNMOEhxSUIzQThCMXdVTXlhbWtUd1lMVVJVK3lIcFB4Z3RSRlQ3SWVtLzBpRXpmM3paQWtEU0lUTi9mTmtDd0FCQjM0OFNDekdBR0MxRVZQc2hDVUFZTFVSVSt5RUp3QUFBQUFBQUFPQS9BQUFBQUFBQTRMOEFBQUFBQUFEd1B3QUFBQUFBQVBnL0FFR1lrQklMQ0FiUXowUHIvVXcrQUVHcmtCSUx2UWhBQTdqaVB3QUFBQUFDQUFBQUF3QUFBQVVBQUFBSEFBQUFDd0FBQUEwQUFBQVJBQUFBRXdBQUFCY0FBQUFkQUFBQUh3QUFBQ1VBQUFBcEFBQUFLd0FBQUM4QUFBQTFBQUFBT3dBQUFEMEFBQUJEQUFBQVJ3QUFBRWtBQUFCUEFBQUFVd0FBQUZrQUFBQmhBQUFBWlFBQUFHY0FBQUJyQUFBQWJRQUFBSEVBQUFCL0FBQUFnd0FBQUlrQUFBQ0xBQUFBbFFBQUFKY0FBQUNkQUFBQW93QUFBS2NBQUFDdEFBQUFzd0FBQUxVQUFBQy9BQUFBd1FBQUFNVUFBQURIQUFBQTB3QUFBQUVBQUFBTEFBQUFEUUFBQUJFQUFBQVRBQUFBRndBQUFCMEFBQUFmQUFBQUpRQUFBQ2tBQUFBckFBQUFMd0FBQURVQUFBQTdBQUFBUFFBQUFFTUFBQUJIQUFBQVNRQUFBRThBQUFCVEFBQUFXUUFBQUdFQUFBQmxBQUFBWndBQUFHc0FBQUJ0QUFBQWNRQUFBSGtBQUFCL0FBQUFnd0FBQUlrQUFBQ0xBQUFBandBQUFKVUFBQUNYQUFBQW5RQUFBS01BQUFDbkFBQUFxUUFBQUswQUFBQ3pBQUFBdFFBQUFMc0FBQUMvQUFBQXdRQUFBTVVBQUFESEFBQUEwUUFBQUFBQUFBRDRpZ1FBU0FJQUFFa0NBQUQ3QVFBQS9BRUFBRW9DQUFCTEFnQUEvd0VBQUFBQ0FBQUJBZ0FBVEFJQUFBTUNBQUJOQWdBQUJRSUFBRTRDQUFBSUFBQUFBQUFBQURDTEJBRDFBUUFBOWdFQUFQai8vLy80Ly8vL01Jc0VBUGNCQUFENEFRQUEvSWtFQUJDS0JBQUVBQUFBQUFBQUFIaUxCQURuQVFBQTZBRUFBUHovLy8vOC8vLy9lSXNFQU9rQkFBRHFBUUFBTElvRUFFQ0tCQUFBQUFBQWRJb0VBRThDQUFCUUFnQUFUbE4wTTE5Zk1qaHBiM05mWW1GelpVVUFBQUFBdGdRQVlJb0VBQUFBQUFDNGlnUUFVUUlBQUZJQ0FBQk9VM1F6WDE4eU9XSmhjMmxqWDJsdmMwbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQUFDaTJCQUNNaWdRQWRJb0VBRTVUZEROZlh6SXhOV0poYzJsalgzTjBjbVZoYldKMVprbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQUFBQUF0Z1FBeElvRUFFNVRkRE5mWHpJeE0ySmhjMmxqWDJsemRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBSVMyQkFBQWl3UUFBQUFBQUFFQUFBQzRpZ1FBQS9ULy8wNVRkRE5mWHpJeE0ySmhjMmxqWDI5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBSVMyQkFCSWl3UUFBQUFBQUFFQUFBQzRpZ1FBQS9ULy93SUFBTUFEQUFEQUJBQUF3QVVBQU1BR0FBREFCd0FBd0FnQUFNQUpBQURBQ2dBQXdBc0FBTUFNQUFEQURRQUF3QTRBQU1BUEFBREFFQUFBd0JFQUFNQVNBQURBRXdBQXdCUUFBTUFWQUFEQUZnQUF3QmNBQU1BWUFBREFHUUFBd0JvQUFNQWJBQURBSEFBQXdCMEFBTUFlQUFEQUh3QUF3QUFBQUxNQkFBRERBZ0FBd3dNQUFNTUVBQUREQlFBQXd3WUFBTU1IQUFERENBQUF3d2tBQU1NS0FBRERDd0FBd3d3QUFNTU5BQURURGdBQXd3OEFBTU1BQUF5N0FRQU13d0lBRE1NREFBekRCQUFNMDJsdVptbHVhWFI1QUc1aGJnQkI4SmdTQzBqUmRKNEFWNTI5S29Cd1VnLy8vejRuQ2dBQUFHUUFBQURvQXdBQUVDY0FBS0NHQVFCQVFnOEFnSmFZQUFEaDlRVVlBQUFBTlFBQUFIRUFBQUJyLy8vL3p2di8vNUsvLy84QVFjQ1pFZ3NqM2hJRWxRQUFBQUQvLy8vLy8vLy8vLy8vLy8vQWpBUUFGQUFBQUVNdVZWUkdMVGdBUVlpYUVnc0QxSXdFQUVHZ21oSUxCa3hEWDBGTVRBQkJzSm9TQzI5TVExOURWRmxRUlFBQUFBQk1RMTlPVlUxRlVrbERBQUJNUTE5VVNVMUZBQUFBQUFCTVExOURUMHhNUVZSRkFBQk1RMTlOVDA1RlZFRlNXUUJNUTE5TlJWTlRRVWRGVXdCTVFVNUhBRU11VlZSR0xUZ0FVRTlUU1ZnQVRWVlRURjlNVDBOUVFWUklBQUFBQUFDZ2pnUUFRYUNkRWd2L0FRSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBTWdBaUFDSUFJZ0FpQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJZQVRBQk1BRXdBVEFCTUFFd0FUQUJNQUV3QVRBQk1BRXdBVEFCTUFFd0FqWUNOZ0kyQWpZQ05nSTJBallDTmdJMkFqWUJNQUV3QVRBQk1BRXdBVEFCTUFJMVFqVkNOVUkxUWpWQ05VSXhRakZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZCTUFFd0FUQUJNQUV3QVRBQ05ZSTFnaldDTllJMWdqV0NNWUl4Z2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z1RBQk1BRXdBVEFBZ0JCb0tFU0N3T3drZ1FBUWJTbEVndjVBd0VBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQUFBQk1BQUFBVUFBQUFGUUFBQUJZQUFBQVhBQUFBR0FBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0FBQUI4QUFBQWdBQUFBSVFBQUFDSUFBQUFqQUFBQUpBQUFBQ1VBQUFBbUFBQUFKd0FBQUNnQUFBQXBBQUFBS2dBQUFDc0FBQUFzQUFBQUxRQUFBQzRBQUFBdkFBQUFNQUFBQURFQUFBQXlBQUFBTXdBQUFEUUFBQUExQUFBQU5nQUFBRGNBQUFBNEFBQUFPUUFBQURvQUFBQTdBQUFBUEFBQUFEMEFBQUErQUFBQVB3QUFBRUFBQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIQUFBQVNBQUFBRWtBQUFCS0FBQUFTd0FBQUV3QUFBQk5BQUFBVGdBQUFFOEFBQUJRQUFBQVVRQUFBRklBQUFCVEFBQUFWQUFBQUZVQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnQUFBRnNBQUFCY0FBQUFYUUFBQUY0QUFBQmZBQUFBWUFBQUFFRUFBQUJDQUFBQVF3QUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQklBQUFBU1FBQUFFb0FBQUJMQUFBQVRBQUFBRTBBQUFCT0FBQUFUd0FBQUZBQUFBQlJBQUFBVWdBQUFGTUFBQUJVQUFBQVZRQUFBRllBQUFCWEFBQUFXQUFBQUZrQUFBQmFBQUFBZXdBQUFId0FBQUI5QUFBQWZnQUFBSDhBUWJDdEVnc0R3SmdFQUVIRXNSSUwrUU1CQUFBQUFnQUFBQU1BQUFBRUFBQUFCUUFBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBQUFBRVFBQUFCSUFBQUFUQUFBQUZBQUFBQlVBQUFBV0FBQUFGd0FBQUJnQUFBQVpBQUFBR2dBQUFCc0FBQUFjQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFEWUFBQUEzQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVlRQUFBR0lBQUFCakFBQUFaQUFBQUdVQUFBQm1BQUFBWndBQUFHZ0FBQUJwQUFBQWFnQUFBR3NBQUFCc0FBQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFBQWN3QUFBSFFBQUFCMUFBQUFkZ0FBQUhjQUFBQjRBQUFBZVFBQUFIb0FBQUJiQUFBQVhBQUFBRjBBQUFCZUFBQUFYd0FBQUdBQUFBQmhBQUFBWWdBQUFHTUFBQUJrQUFBQVpRQUFBR1lBQUFCbkFBQUFhQUFBQUdrQUFBQnFBQUFBYXdBQUFHd0FBQUJ0QUFBQWJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFBQUFlZ0FBQUhzQUFBQjhBQUFBZlFBQUFINEFBQUIvQUVIQXVSSUxTREF4TWpNME5UWTNPRGxoWW1Oa1pXWkJRa05FUlVaNFdDc3RjRkJwU1c1T0FDVndBR3dBYkd3QUFFd0FKUUFBQUFBQUpYQUFBQUFBSlVrNkpVMDZKVk1nSlhBbFNEb2xUUUJCa0xvU0M0RUJKUUFBQUcwQUFBQXZBQUFBSlFBQUFHUUFBQUF2QUFBQUpRQUFBSGtBQUFBbEFBQUFXUUFBQUMwQUFBQWxBQUFBYlFBQUFDMEFBQUFsQUFBQVpBQUFBQ1VBQUFCSkFBQUFPZ0FBQUNVQUFBQk5BQUFBT2dBQUFDVUFBQUJUQUFBQUlBQUFBQ1VBQUFCd0FBQUFBQUFBQUNVQUFBQklBQUFBT2dBQUFDVUFBQUJOQUVHZ3V4SUx2UVFsQUFBQVNBQUFBRG9BQUFBbEFBQUFUUUFBQURvQUFBQWxBQUFBVXdBQUFDVk1aZ0F3TVRJek5EVTJOemc1QUNVdU1FeG1BRU1BQUFBQUFBQklvd1FBWmdJQUFHY0NBQUJvQWdBQUFBQUFBS2lqQkFCcEFnQUFhZ0lBQUdnQ0FBQnJBZ0FBYkFJQUFHMENBQUJ1QWdBQWJ3SUFBSEFDQUFCeEFnQUFjZ0lBQUFBQUFBQVFvd1FBY3dJQUFIUUNBQUJvQWdBQWRRSUFBSFlDQUFCM0FnQUFlQUlBQUhrQ0FBQjZBZ0FBZXdJQUFBQUFBQURnb3dRQWZBSUFBSDBDQUFCb0FnQUFmZ0lBQUg4Q0FBQ0FBZ0FBZ1FJQUFJSUNBQUFBQUFBQUJLUUVBSU1DQUFDRUFnQUFhQUlBQUlVQ0FBQ0dBZ0FBaHdJQUFJZ0NBQUNKQWdBQWRISjFaUUFBQUFCMEFBQUFjZ0FBQUhVQUFBQmxBQUFBQUFBQUFHWmhiSE5sQUFBQVpnQUFBR0VBQUFCc0FBQUFjd0FBQUdVQUFBQUFBQUFBSlcwdkpXUXZKWGtBQUFBQUpRQUFBRzBBQUFBdkFBQUFKUUFBQUdRQUFBQXZBQUFBSlFBQUFIa0FBQUFBQUFBQUpVZzZKVTA2SlZNQUFBQUFKUUFBQUVnQUFBQTZBQUFBSlFBQUFFMEFBQUE2QUFBQUpRQUFBRk1BQUFBQUFBQUFKV0VnSldJZ0pXUWdKVWc2SlUwNkpWTWdKVmtBQUFBQUpRQUFBR0VBQUFBZ0FBQUFKUUFBQUdJQUFBQWdBQUFBSlFBQUFHUUFBQUFnQUFBQUpRQUFBRWdBQUFBNkFBQUFKUUFBQUUwQUFBQTZBQUFBSlFBQUFGTUFBQUFnQUFBQUpRQUFBRmtBQUFBQUFBQUFKVWs2SlUwNkpWTWdKWEFBSlFBQUFFa0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQWdBQUFBSlFBQUFIQUFRZWkvRWd2WENoQ2dCQUNLQWdBQWl3SUFBR2dDQUFCT1UzUXpYMTh5Tm14dlkyRnNaVFZtWVdObGRFVUFBQUFvdGdRQStKOEVBRHkxQkFBQUFBQUFrS0FFQUlvQ0FBQ01BZ0FBYUFJQUFJMENBQUNPQWdBQWp3SUFBSkFDQUFDUkFnQUFrZ0lBQUpNQ0FBQ1VBZ0FBbFFJQUFKWUNBQUNYQWdBQW1BSUFBRTVUZEROZlh6STFZM1I1Y0dWSmQwVkZBRTVUZEROZlh6SXhNR04wZVhCbFgySmhjMlZGQUFBQXRnUUFjcUFFQUlTMkJBQmdvQVFBQUFBQUFBSUFBQUFRb0FRQUFnQUFBSWlnQkFBQ0FBQUFBQUFBQUNTaEJBQ0tBZ0FBbVFJQUFHZ0NBQUNhQWdBQW13SUFBSndDQUFDZEFnQUFuZ0lBQUo4Q0FBQ2dBZ0FBVGxOME0xOWZNamRqYjJSbFkzWjBTV05qTVRGZlgyMWljM1JoZEdWZmRFVkZBRTVUZEROZlh6SXhNbU52WkdWamRuUmZZbUZ6WlVVQUFBQUFBTFlFQUFLaEJBQ0V0Z1FBNEtBRUFBQUFBQUFDQUFBQUVLQUVBQUlBQUFBY29RUUFBZ0FBQUFBQUFBQ1lvUVFBaWdJQUFLRUNBQUJvQWdBQW9nSUFBS01DQUFDa0FnQUFwUUlBQUtZQ0FBQ25BZ0FBcUFJQUFFNVRkRE5mWHpJM1kyOWtaV04yZEVsRWMyTXhNVjlmYldKemRHRjBaVjkwUlVVQUFJUzJCQUIwb1FRQUFBQUFBQUlBQUFBUW9BUUFBZ0FBQUJ5aEJBQUNBQUFBQUFBQUFBeWlCQUNLQWdBQXFRSUFBR2dDQUFDcUFnQUFxd0lBQUt3Q0FBQ3RBZ0FBcmdJQUFLOENBQUN3QWdBQVRsTjBNMTlmTWpkamIyUmxZM1owU1VScFl6RXhYMTl0WW5OMFlYUmxYM1JGUlFBQWhMWUVBT2loQkFBQUFBQUFBZ0FBQUJDZ0JBQUNBQUFBSEtFRUFBSUFBQUFBQUFBQWdLSUVBSW9DQUFDeEFnQUFhQUlBQUtvQ0FBQ3JBZ0FBckFJQUFLMENBQUN1QWdBQXJ3SUFBTEFDQUFCT1UzUXpYMTh5TVRaZlgyNWhjbkp2ZDE5MGIxOTFkR1k0U1V4dE16SkZSVVVBQUFBb3RnUUFYS0lFQUF5aUJBQUFBQUFBNEtJRUFJb0NBQUN5QWdBQWFBSUFBS29DQUFDckFnQUFyQUlBQUswQ0FBQ3VBZ0FBcndJQUFMQUNBQUJPVTNRelgxOHlNVGRmWDNkcFpHVnVYMlp5YjIxZmRYUm1PRWxNYlRNeVJVVkZBQUFvdGdRQXZLSUVBQXlpQkFCT1UzUXpYMTh5TjJOdlpHVmpkblJKZDJNeE1WOWZiV0p6ZEdGMFpWOTBSVVVBQUFDRXRnUUE3S0lFQUFBQUFBQUNBQUFBRUtBRUFBSUFBQUFjb1FRQUFnQUFBRTVUZEROZlh6STJiRzlqWVd4bE5WOWZhVzF3UlFBQUFDaTJCQUF3b3dRQUVLQUVBRTVUZEROZlh6STNZMjlzYkdGMFpVbGpSVVVBS0xZRUFGU2pCQUFRb0FRQVRsTjBNMTlmTWpkamIyeHNZWFJsU1hkRlJRQW90Z1FBZEtNRUFCQ2dCQUJPVTNRelgxOHlOV04wZVhCbFNXTkZSUUFBQUlTMkJBQ1Vvd1FBQUFBQUFBSUFBQUFRb0FRQUFnQUFBSWlnQkFBQ0FBQUFUbE4wTTE5Zk1qaHVkVzF3ZFc1amRFbGpSVVVBQUFBQUtMWUVBTWlqQkFBUW9BUUFUbE4wTTE5Zk1qaHVkVzF3ZFc1amRFbDNSVVVBQUFBQUtMWUVBT3lqQkFBUW9BUUFBQUFBQUdpakJBQ3pBZ0FBdEFJQUFHZ0NBQUMxQWdBQXRnSUFBTGNDQUFBQUFBQUFpS01FQUxnQ0FBQzVBZ0FBYUFJQUFMb0NBQUM3QWdBQXZBSUFBQUFBQUFBa3BRUUFpZ0lBQUwwQ0FBQm9BZ0FBdmdJQUFMOENBQURBQWdBQXdRSUFBTUlDQUFEREFnQUF4QUlBQU1VQ0FBREdBZ0FBeHdJQUFNZ0NBQUJPVTNRelgxOHlOMjUxYlY5blpYUkpZMDVUWHpFNWFYTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlVWRkFFNVRkRE5mWHpJNVgxOXVkVzFmWjJWMFNXTkZSUUJPVTNRelgxOHlNVFJmWDI1MWJWOW5aWFJmWW1GelpVVUFBQUMyQkFEcXBBUUFoTFlFQU5Ta0JBQUFBQUFBQVFBQUFBU2xCQUFBQUFBQWhMWUVBSkNrQkFBQUFBQUFBZ0FBQUJDZ0JBQUNBQUFBREtVRUFFSEl5aElMeXdINHBRUUFpZ0lBQU1rQ0FBQm9BZ0FBeWdJQUFNc0NBQURNQWdBQXpRSUFBTTRDQUFEUEFnQUEwQUlBQU5FQ0FBRFNBZ0FBMHdJQUFOUUNBQUJPVTNRelgxOHlOMjUxYlY5blpYUkpkMDVUWHpFNWFYTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJNVgxOXVkVzFmWjJWMFNYZEZSUUFBQUlTMkJBRElwUVFBQUFBQUFBRUFBQUFFcFFRQUFBQUFBSVMyQkFDRXBRUUFBQUFBQUFJQUFBQVFvQVFBQWdBQUFPQ2xCQUJCbk13U0M5OEI0S1lFQUlvQ0FBRFZBZ0FBYUFJQUFOWUNBQURYQWdBQTJBSUFBTmtDQUFEYUFnQUEyd0lBQU53Q0FBRGRBZ0FBVGxOME0xOWZNamR1ZFcxZmNIVjBTV05PVTE4eE9XOXpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpZMDVUWHpFeFkyaGhjbDkwY21GcGRITkpZMFZGUlVWRlJRQk9VM1F6WDE4eU9WOWZiblZ0WDNCMWRFbGpSVVVBVGxOME0xOWZNakUwWDE5dWRXMWZjSFYwWDJKaGMyVkZBQUFBdGdRQXBxWUVBSVMyQkFDUXBnUUFBQUFBQUFFQUFBREFwZ1FBQUFBQUFJUzJCQUJNcGdRQUFBQUFBQUlBQUFBUW9BUUFBZ0FBQU1pbUJBQkJoTTRTQzc4QnFLY0VBSW9DQUFEZUFnQUFhQUlBQU44Q0FBRGdBZ0FBNFFJQUFPSUNBQURqQWdBQTVBSUFBT1VDQUFEbUFnQUFUbE4wTTE5Zk1qZHVkVzFmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYM0IxZEVsM1JVVUFBQUNFdGdRQWVLY0VBQUFBQUFBQkFBQUF3S1lFQUFBQUFBQ0V0Z1FBTktjRUFBQUFBQUFDQUFBQUVLQUVBQUlBQUFDUXB3UUFRY3pQRWd1YkM2aW9CQURuQWdBQTZBSUFBR2dDQUFEcEFnQUE2Z0lBQU9zQ0FBRHNBZ0FBN1FJQUFPNENBQUR2QWdBQStQLy8vNmlvQkFEd0FnQUE4UUlBQVBJQ0FBRHpBZ0FBOUFJQUFQVUNBQUQyQWdBQVRsTjBNMTlmTWpoMGFXMWxYMmRsZEVsalRsTmZNVGxwYzNSeVpXRnRZblZtWDJsMFpYSmhkRzl5U1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZSVVVBVGxOME0xOWZNamwwYVcxbFgySmhjMlZGQUFDMkJBQmhxQVFBVGxOME0xOWZNakl3WDE5MGFXMWxYMmRsZEY5algzTjBiM0poWjJWSlkwVkZBQUFBQUxZRUFIeW9CQUNFdGdRQUhLZ0VBQUFBQUFBREFBQUFFS0FFQUFJQUFBQjBxQVFBQWdBQUFLQ29CQUFBQ0FBQUFBQUFBSlNwQkFEM0FnQUErQUlBQUdnQ0FBRDVBZ0FBK2dJQUFQc0NBQUQ4QWdBQS9RSUFBUDRDQUFEL0FnQUErUC8vLzVTcEJBQUFBd0FBQVFNQUFBSURBQUFEQXdBQUJBTUFBQVVEQUFBR0F3QUFUbE4wTTE5Zk1qaDBhVzFsWDJkbGRFbDNUbE5mTVRscGMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNYZE9VMTh4TVdOb1lYSmZkSEpoYVhSelNYZEZSVVZGUlVVQVRsTjBNMTlmTWpJd1gxOTBhVzFsWDJkbGRGOWpYM04wYjNKaFoyVkpkMFZGQUFBQXRnUUFhYWtFQUlTMkJBQWtxUVFBQUFBQUFBTUFBQUFRb0FRQUFnQUFBSFNvQkFBQ0FBQUFqS2tFQUFBSUFBQUFBQUFBT0tvRUFBY0RBQUFJQXdBQWFBSUFBQWtEQUFCT1UzUXpYMTh5T0hScGJXVmZjSFYwU1dOT1UxOHhPVzl6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVEJmWDNScGJXVmZjSFYwUlFBQUFBQzJCQUFacWdRQWhMWUVBTlNwQkFBQUFBQUFBZ0FBQUJDZ0JBQUNBQUFBTUtvRUFBQUlBQUFBQUFBQXVLb0VBQW9EQUFBTEF3QUFhQUlBQUF3REFBQk9VM1F6WDE4eU9IUnBiV1ZmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFBQUFBQ0V0Z1FBY0tvRUFBQUFBQUFDQUFBQUVLQUVBQUlBQUFBd3FnUUFBQWdBQUFBQUFBQk1xd1FBaWdJQUFBMERBQUJvQWdBQURnTUFBQThEQUFBUUF3QUFFUU1BQUJJREFBQVRBd0FBRkFNQUFCVURBQUFXQXdBQVRsTjBNMTlmTWpFd2JXOXVaWGx3ZFc1amRFbGpUR0l3UlVWRkFFNVRkRE5mWHpJeE1HMXZibVY1WDJKaGMyVkZBQUFBQUFDMkJBQXNxd1FBaExZRUFCQ3JCQUFBQUFBQUFnQUFBQkNnQkFBQ0FBQUFSS3NFQUFJQUFBQUFBQUFBd0tzRUFJb0NBQUFYQXdBQWFBSUFBQmdEQUFBWkF3QUFHZ01BQUJzREFBQWNBd0FBSFFNQUFCNERBQUFmQXdBQUlBTUFBRTVUZEROZlh6SXhNRzF2Ym1WNWNIVnVZM1JKWTB4aU1VVkZSUUNFdGdRQXBLc0VBQUFBQUFBQ0FBQUFFS0FFQUFJQUFBQkVxd1FBQWdBQUFBQUFBQUEwckFRQWlnSUFBQ0VEQUFCb0FnQUFJZ01BQUNNREFBQWtBd0FBSlFNQUFDWURBQUFuQXdBQUtBTUFBQ2tEQUFBcUF3QUFUbE4wTTE5Zk1qRXdiVzl1Wlhsd2RXNWpkRWwzVEdJd1JVVkZBSVMyQkFBWXJBUUFBQUFBQUFJQUFBQVFvQVFBQWdBQUFFU3JCQUFDQUFBQUFBQUFBS2lzQkFDS0FnQUFLd01BQUdnQ0FBQXNBd0FBTFFNQUFDNERBQUF2QXdBQU1BTUFBREVEQUFBeUF3QUFNd01BQURRREFBQk9VM1F6WDE4eU1UQnRiMjVsZVhCMWJtTjBTWGRNWWpGRlJVVUFoTFlFQUl5c0JBQUFBQUFBQWdBQUFCQ2dCQUFDQUFBQVJLc0VBQUlBQUFBQUFBQUFUSzBFQUlvQ0FBQTFBd0FBYUFJQUFEWURBQUEzQXdBQVRsTjBNMTlmTWpsdGIyNWxlVjluWlhSSlkwNVRYekU1YVhOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmWjJWMFNXTkZSUUFBQUxZRUFDcXRCQUNFdGdRQTVLd0VBQUFBQUFBQ0FBQUFFS0FFQUFJQUFBQkVyUVFBUWZEYUVndWJBZkN0QkFDS0FnQUFPQU1BQUdnQ0FBQTVBd0FBT2dNQUFFNVRkRE5mWHpJNWJXOXVaWGxmWjJWMFNYZE9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5TVRGZlgyMXZibVY1WDJkbGRFbDNSVVVBQUFDMkJBRE9yUVFBaExZRUFJaXRCQUFBQUFBQUFnQUFBQkNnQkFBQ0FBQUE2SzBFQUVHVTNCSUxtd0dVcmdRQWlnSUFBRHNEQUFCb0FnQUFQQU1BQUQwREFBQk9VM1F6WDE4eU9XMXZibVY1WDNCMWRFbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpFeFgxOXRiMjVsZVY5d2RYUkpZMFZGQUFBQXRnUUFjcTRFQUlTMkJBQXNyZ1FBQUFBQUFBSUFBQUFRb0FRQUFnQUFBSXl1QkFCQnVOMFNDNXNCT0s4RUFJb0NBQUErQXdBQWFBSUFBRDhEQUFCQUF3QUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpkMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTWGRGUlFBQUFMWUVBQmF2QkFDRXRnUUEwSzRFQUFBQUFBQUNBQUFBRUtBRUFBSUFBQUF3cndRQVFkemVFZ3Y3RHJDdkJBQ0tBZ0FBUVFNQUFHZ0NBQUJDQXdBQVF3TUFBRVFEQUFCT1UzUXpYMTh5T0cxbGMzTmhaMlZ6U1dORlJRQk9VM1F6WDE4eU1UTnRaWE56WVdkbGMxOWlZWE5sUlFBQUFBQUF0Z1FBamE4RUFJUzJCQUI0cndRQUFBQUFBQUlBQUFBUW9BUUFBZ0FBQUtpdkJBQUNBQUFBQUFBQUFBaXdCQUNLQWdBQVJRTUFBR2dDQUFCR0F3QUFSd01BQUVnREFBQk9VM1F6WDE4eU9HMWxjM05oWjJWelNYZEZSUUFBQUFDRXRnUUE4SzhFQUFBQUFBQUNBQUFBRUtBRUFBSUFBQUNvcndRQUFnQUFBRk4xYm1SaGVRQk5iMjVrWVhrQVZIVmxjMlJoZVFCWFpXUnVaWE5rWVhrQVZHaDFjbk5rWVhrQVJuSnBaR0Y1QUZOaGRIVnlaR0Y1QUZOMWJnQk5iMjRBVkhWbEFGZGxaQUJVYUhVQVJuSnBBRk5oZEFBQUFBQlRBQUFBZFFBQUFHNEFBQUJrQUFBQVlRQUFBSGtBQUFBQUFBQUFUUUFBQUc4QUFBQnVBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRlFBQUFCMUFBQUFaUUFBQUhNQUFBQmtBQUFBWVFBQUFIa0FBQUFBQUFBQVZ3QUFBR1VBQUFCa0FBQUFiZ0FBQUdVQUFBQnpBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRlFBQUFCb0FBQUFkUUFBQUhJQUFBQnpBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRVlBQUFCeUFBQUFhUUFBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJUQUFBQVlRQUFBSFFBQUFCMUFBQUFjZ0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJUQUFBQWRRQUFBRzRBQUFBQUFBQUFUUUFBQUc4QUFBQnVBQUFBQUFBQUFGUUFBQUIxQUFBQVpRQUFBQUFBQUFCWEFBQUFaUUFBQUdRQUFBQUFBQUFBVkFBQUFHZ0FBQUIxQUFBQUFBQUFBRVlBQUFCeUFBQUFhUUFBQUFBQUFBQlRBQUFBWVFBQUFIUUFBQUFBQUFBQVNtRnVkV0Z5ZVFCR1pXSnlkV0Z5ZVFCTllYSmphQUJCY0hKcGJBQk5ZWGtBU25WdVpRQktkV3g1QUVGMVozVnpkQUJUWlhCMFpXMWlaWElBVDJOMGIySmxjZ0JPYjNabGJXSmxjZ0JFWldObGJXSmxjZ0JLWVc0QVJtVmlBRTFoY2dCQmNISUFTblZ1QUVwMWJBQkJkV2NBVTJWd0FFOWpkQUJPYjNZQVJHVmpBQUFBU2dBQUFHRUFBQUJ1QUFBQWRRQUFBR0VBQUFCeUFBQUFlUUFBQUFBQUFBQkdBQUFBWlFBQUFHSUFBQUJ5QUFBQWRRQUFBR0VBQUFCeUFBQUFlUUFBQUFBQUFBQk5BQUFBWVFBQUFISUFBQUJqQUFBQWFBQUFBQUFBQUFCQkFBQUFjQUFBQUhJQUFBQnBBQUFBYkFBQUFBQUFBQUJOQUFBQVlRQUFBSGtBQUFBQUFBQUFTZ0FBQUhVQUFBQnVBQUFBWlFBQUFBQUFBQUJLQUFBQWRRQUFBR3dBQUFCNUFBQUFBQUFBQUVFQUFBQjFBQUFBWndBQUFIVUFBQUJ6QUFBQWRBQUFBQUFBQUFCVEFBQUFaUUFBQUhBQUFBQjBBQUFBWlFBQUFHMEFBQUJpQUFBQVpRQUFBSElBQUFBQUFBQUFUd0FBQUdNQUFBQjBBQUFBYndBQUFHSUFBQUJsQUFBQWNnQUFBQUFBQUFCT0FBQUFid0FBQUhZQUFBQmxBQUFBYlFBQUFHSUFBQUJsQUFBQWNnQUFBQUFBQUFCRUFBQUFaUUFBQUdNQUFBQmxBQUFBYlFBQUFHSUFBQUJsQUFBQWNnQUFBQUFBQUFCS0FBQUFZUUFBQUc0QUFBQUFBQUFBUmdBQUFHVUFBQUJpQUFBQUFBQUFBRTBBQUFCaEFBQUFjZ0FBQUFBQUFBQkJBQUFBY0FBQUFISUFBQUFBQUFBQVNnQUFBSFVBQUFCdUFBQUFBQUFBQUVvQUFBQjFBQUFBYkFBQUFBQUFBQUJCQUFBQWRRQUFBR2NBQUFBQUFBQUFVd0FBQUdVQUFBQndBQUFBQUFBQUFFOEFBQUJqQUFBQWRBQUFBQUFBQUFCT0FBQUFid0FBQUhZQUFBQUFBQUFBUkFBQUFHVUFBQUJqQUFBQUFBQUFBRUZOQUZCTkFBQUFRUUFBQUUwQUFBQUFBQUFBVUFBQUFFMEFBQUFBQUFBQVlXeHNiMk5oZEc5eVBGUStPanBoYkd4dlkyRjBaU2h6YVhwbFgzUWdiaWtnSjI0bklHVjRZMlZsWkhNZ2JXRjRhVzExYlNCemRYQndiM0owWldRZ2MybDZaUUFBQUFBQW9LZ0VBUEFDQUFEeEFnQUE4Z0lBQVBNQ0FBRDBBZ0FBOVFJQUFQWUNBQUFBQUFBQWpLa0VBQUFEQUFBQkF3QUFBZ01BQUFNREFBQUVBd0FBQlFNQUFBWURBQUFBQUFBQVBMVUVBRWtEQUFCS0F3QUFCZ0FBQUU1VGRETmZYekl4TkY5ZmMyaGhjbVZrWDJOdmRXNTBSUUFBQUFBQXRnUUFJTFVFQUdKaGMybGpYM04wY21sdVp3QWxaQUFsZFFBbGJHeGtBSFpsWTNSdmNnQlFkWEpsSUhacGNuUjFZV3dnWm5WdVkzUnBiMjRnWTJGc2JHVmtJUUJUZERsMGVYQmxYMmx1Wm04QUFBQUF0Z1FBZ2JVRUFFNHhNRjlmWTNoNFlXSnBkakV4Tmw5ZmMyaHBiVjkwZVhCbFgybHVabTlGQUFBQUFDaTJCQUNZdFFRQWtMVUVBRTR4TUY5ZlkzaDRZV0pwZGpFeE4xOWZZMnhoYzNOZmRIbHdaVjlwYm1adlJRQUFBQ2kyQkFESXRRUUF2TFVFQUFBQUFBRHN0UVFBU3dNQUFFd0RBQUJOQXdBQVRnTUFBRThEQUFCUUF3QUFVUU1BQUZJREFBQUFBQUFBY0xZRUFFc0RBQUJUQXdBQVRRTUFBRTREQUFCUEF3QUFWQU1BQUZVREFBQldBd0FBVGpFd1gxOWplSGhoWW1sMk1USXdYMTl6YVY5amJHRnpjMTkwZVhCbFgybHVabTlGQUFBQUFDaTJCQUJJdGdRQTdMVUVBQUFBQUFETXRnUUFTd01BQUZjREFBQk5Bd0FBVGdNQUFFOERBQUJZQXdBQVdRTUFBRm9EQUFCT01UQmZYMk40ZUdGaWFYWXhNakZmWDNadGFWOWpiR0Z6YzE5MGVYQmxYMmx1Wm05RkFBQUFLTFlFQUtTMkJBRHN0UVFBUWVEdEVnc0JBUUJCOE8wU0M5WUJqZ0FBQUFJQUFBQzBBUUFBalFBQUFBTUFBQUMxQVFBQWZBQUFBQVFBQUFDMkFRQUFYZ0FBQUFVQUFBQzNBUUFBSmdBQUFBWUFBQUM0QVFBQWtBQUFBQWNBQUFDNUFRQUFrUUFBQUFjQUFBQzZBUUFBUGdBQUFBZ0FBQUM3QVFBQWtnQUFBQWdBQUFDOEFRQUFQQUFBQUFnQUFBQzlBUUFBa3dBQUFBZ0FBQUMrQVFBQWh3QUFBQWtBQUFDL0FRQUFoZ0FBQUFrQUFBREFBUUFBS3dBQUFBb0FBQURCQVFBQUxRQUFBQW9BQUFEQ0FRQUFLZ0FBQUFzQUFBRERBUUFBTHdBQUFBc0FBQUN5QVFBQUpRQUFBQXNBQUFDekFRQkIwTzhTQ3lFckFBQUF4QUVBQUMwQUFBREZBUUFBZmdBQUFNWUJBQUFoQUFBQXh3RUFBQVVBUWZ6dkVnc0NRQUlBUVpUd0Vnc0xRUUlBQUVJQ0FBQllJQVVBUWF6d0Vnc0JBZ0JCdS9BU0N3WC8vLy8vL3dCQmdQRVNDd0VGQUVHTThSSUxBa1VDQUVHazhSSUxEa0VDQUFCR0FnQUFhQ0FGQUFBRUFFRzg4UklMQVFFQVFjdnhFZ3NGQ3YvLy8vOEFRY0R6RWdzRGtDUUYiOwogICAgaWYgKCF0YSgpKSB7CiAgICAgIGxldCB1YSA9IE87CiAgICAgIE8gPSBjLmxvY2F0ZUZpbGUgPyBjLmxvY2F0ZUZpbGUodWEsIHYpIDogdiArIHVhOwogICAgfQogICAgZnVuY3Rpb24gd2EoKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKEEpIHJldHVybiBuZXcgVWludDhBcnJheShBKTsKICAgICAgICBpZiAodykgcmV0dXJuIHcoTyk7CiAgICAgICAgdGhyb3cgImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjsKICAgICAgfSBjYXRjaCAoYSkgewogICAgICAgIEQoYSk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHhhKCkgewogICAgICByZXR1cm4gQSB8fCAoIXQgJiYgIXUpIHx8ICJmdW5jdGlvbiIgIT09IHR5cGVvZiBmZXRjaAogICAgICAgID8gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgYSh3YSgpKTsKICAgICAgICAgIH0pCiAgICAgICAgOiBmZXRjaChPLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pCiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgICAgaWYgKCFhLm9rKSB0aHJvdyAiZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIiArIE8gKyAiJyI7CiAgICAgICAgICAgICAgcmV0dXJuIGEuYXJyYXlCdWZmZXIoKTsKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICByZXR1cm4gd2EoKTsKICAgICAgICAgICAgfSk7CiAgICB9CiAgICBwYS5wdXNoKHsKICAgICAgSigpIHsKICAgICAgICB5YSgpOwogICAgICB9LAogICAgfSk7CiAgICBsZXQgemEgPSBbbnVsbCwgW10sIFtdXSwKICAgICAgUCA9IDA7CiAgICBmdW5jdGlvbiBBYSgpIHsKICAgICAgUCArPSA0OwogICAgICByZXR1cm4gQ1soUCAtIDQpID4+IDJdOwogICAgfQogICAgbGV0IFEgPSB7fSwKICAgICAgQmEgPSB7fTsKICAgIGZ1bmN0aW9uIENhKCkgewogICAgICBpZiAoIVIpIHsKICAgICAgICBsZXQgYSA9IHsKICAgICAgICAgICAgVVNFUjogIndlYl91c2VyIiwKICAgICAgICAgICAgTE9HTkFNRTogIndlYl91c2VyIiwKICAgICAgICAgICAgUEFUSDogIi8iLAogICAgICAgICAgICBQV0Q6ICIvIiwKICAgICAgICAgICAgSE9NRTogIi9ob21lL3dlYl91c2VyIiwKICAgICAgICAgICAgTEFORzoKICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAoIm9iamVjdCIgPT09IHR5cGVvZiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLmxhbmd1YWdlcyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdKSB8fAogICAgICAgICAgICAgICAgIkMiCiAgICAgICAgICAgICAgKS5yZXBsYWNlKCItIiwgIl8iKSArICIuVVRGLTgiLAogICAgICAgICAgICBfOiByLAogICAgICAgICAgfSwKICAgICAgICAgIGI7CiAgICAgICAgZm9yIChiIGluIEJhKSBhW2JdID0gQmFbYl07CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBmb3IgKGIgaW4gYSkgZC5wdXNoKGIgKyAiPSIgKyBhW2JdKTsKICAgICAgICBSID0gZDsKICAgICAgfQogICAgICByZXR1cm4gUjsKICAgIH0KICAgIGxldCBSOwogICAgZnVuY3Rpb24gUyhhKSB7CiAgICAgIHJldHVybiAwID09PSBhICUgNCAmJiAoMCAhPT0gYSAlIDEwMCB8fCAwID09PSBhICUgNDAwKTsKICAgIH0KICAgIGZ1bmN0aW9uIFQoYSwgYikgewogICAgICBmb3IgKHZhciBkID0gMCwgZSA9IDA7IGUgPD0gYjsgZCArPSBhW2UrK10pOwogICAgICByZXR1cm4gZDsKICAgIH0KICAgIGxldCBVID0gWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdLAogICAgICBXID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdOwogICAgZnVuY3Rpb24gWChhLCBiKSB7CiAgICAgIGZvciAoYSA9IG5ldyBEYXRlKGEuZ2V0VGltZSgpKTsgMCA8IGI7ICkgewogICAgICAgIGxldCBkID0gYS5nZXRNb250aCgpLAogICAgICAgICAgZSA9IChTKGEuZ2V0RnVsbFllYXIoKSkgPyBVIDogVylbZF07CiAgICAgICAgaWYgKGIgPiBlIC0gYS5nZXREYXRlKCkpCiAgICAgICAgICAoYiAtPSBlIC0gYS5nZXREYXRlKCkgKyAxKSwKICAgICAgICAgICAgYS5zZXREYXRlKDEpLAogICAgICAgICAgICAxMSA+IGQgPyBhLnNldE1vbnRoKGQgKyAxKSA6IChhLnNldE1vbnRoKDApLCBhLnNldEZ1bGxZZWFyKGEuZ2V0RnVsbFllYXIoKSArIDEpKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgIGEuc2V0RGF0ZShhLmdldERhdGUoKSArIGIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBhOwogICAgfQogICAgZnVuY3Rpb24gRGEoYSwgYiwgZCwgZSkgewogICAgICBmdW5jdGlvbiBnKGEsIGIsIGQpIHsKICAgICAgICBmb3IgKGEgPSAibnVtYmVyIiA9PT0gdHlwZW9mIGEgPyBhLnRvU3RyaW5nKCkgOiBhIHx8ICIiOyBhLmxlbmd0aCA8IGI7ICkgYSA9IGRbMF0gKyBhOwogICAgICAgIHJldHVybiBhOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGYoYSwgYikgewogICAgICAgIHJldHVybiBnKGEsIGIsICIwIik7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gaChhLCBiKSB7CiAgICAgICAgZnVuY3Rpb24gVihhKSB7CiAgICAgICAgICByZXR1cm4gMCA+IGEgPyAtMSA6IDAgPCBhID8gMSA6IDA7CiAgICAgICAgfQogICAgICAgIGxldCBkOwogICAgICAgIDAgPT09IChkID0gVihhLmdldEZ1bGxZZWFyKCkgLSBiLmdldEZ1bGxZZWFyKCkpKSAmJgogICAgICAgICAgMCA9PT0gKGQgPSBWKGEuZ2V0TW9udGgoKSAtIGIuZ2V0TW9udGgoKSkpICYmCiAgICAgICAgICAoZCA9IFYoYS5nZXREYXRlKCkgLSBiLmdldERhdGUoKSkpOwogICAgICAgIHJldHVybiBkOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIG4oYSkgewogICAgICAgIHN3aXRjaCAoYS5nZXREYXkoKSkgewogICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpIC0gMSwgMTEsIDI5KTsKICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCksIDAsIDMpOwogICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLCAwLCAyKTsKICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGEuZ2V0RnVsbFllYXIoKSwgMCwgMSk7CiAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCkgLSAxLCAxMSwgMzEpOwogICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpIC0gMSwgMTEsIDMwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24geihhKSB7CiAgICAgICAgYSA9IFgobmV3IERhdGUoYS5BICsgMTkwMCwgMCwgMSksIGEuRyk7CiAgICAgICAgbGV0IGIgPSBuKG5ldyBEYXRlKGEuZ2V0RnVsbFllYXIoKSArIDEsIDAsIDQpKTsKICAgICAgICByZXR1cm4gMCA+PSBoKG4obmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLCAwLCA0KSksIGEpCiAgICAgICAgICA/IDAgPj0gaChiLCBhKQogICAgICAgICAgICA/IGEuZ2V0RnVsbFllYXIoKSArIDEKICAgICAgICAgICAgOiBhLmdldEZ1bGxZZWFyKCkKICAgICAgICAgIDogYS5nZXRGdWxsWWVhcigpIC0gMTsKICAgICAgfQogICAgICBsZXQgbSA9IENbKGUgKyA0MCkgPj4gMl07CiAgICAgIGUgPSB7CiAgICAgICAgTjogQ1tlID4+IDJdLAogICAgICAgIE06IENbKGUgKyA0KSA+PiAyXSwKICAgICAgICBEOiBDWyhlICsgOCkgPj4gMl0sCiAgICAgICAgQzogQ1soZSArIDEyKSA+PiAyXSwKICAgICAgICBCOiBDWyhlICsgMTYpID4+IDJdLAogICAgICAgIEE6IENbKGUgKyAyMCkgPj4gMl0sCiAgICAgICAgRjogQ1soZSArIDI0KSA+PiAyXSwKICAgICAgICBHOiBDWyhlICsgMjgpID4+IDJdLAogICAgICAgIFg6IENbKGUgKyAzMikgPj4gMl0sCiAgICAgICAgTDogQ1soZSArIDM2KSA+PiAyXSwKICAgICAgICBPOiBtID8gKG0gPyBJKEgsIG0sIHZvaWQgMCkgOiAiIikgOiAiIiwKICAgICAgfTsKICAgICAgZCA9IGQgPyBJKEgsIGQsIHZvaWQgMCkgOiAiIjsKICAgICAgbSA9IHsKICAgICAgICAiJWMiOiAiJWEgJWIgJWQgJUg6JU06JVMgJVkiLAogICAgICAgICIlRCI6ICIlbS8lZC8leSIsCiAgICAgICAgIiVGIjogIiVZLSVtLSVkIiwKICAgICAgICAiJWgiOiAiJWIiLAogICAgICAgICIlciI6ICIlSTolTTolUyAlcCIsCiAgICAgICAgIiVSIjogIiVIOiVNIiwKICAgICAgICAiJVQiOiAiJUg6JU06JVMiLAogICAgICAgICIleCI6ICIlbS8lZC8leSIsCiAgICAgICAgIiVYIjogIiVIOiVNOiVTIiwKICAgICAgICAiJUVjIjogIiVjIiwKICAgICAgICAiJUVDIjogIiVDIiwKICAgICAgICAiJUV4IjogIiVtLyVkLyV5IiwKICAgICAgICAiJUVYIjogIiVIOiVNOiVTIiwKICAgICAgICAiJUV5IjogIiV5IiwKICAgICAgICAiJUVZIjogIiVZIiwKICAgICAgICAiJU9kIjogIiVkIiwKICAgICAgICAiJU9lIjogIiVlIiwKICAgICAgICAiJU9IIjogIiVIIiwKICAgICAgICAiJU9JIjogIiVJIiwKICAgICAgICAiJU9tIjogIiVtIiwKICAgICAgICAiJU9NIjogIiVNIiwKICAgICAgICAiJU9TIjogIiVTIiwKICAgICAgICAiJU91IjogIiV1IiwKICAgICAgICAiJU9VIjogIiVVIiwKICAgICAgICAiJU9WIjogIiVWIiwKICAgICAgICAiJU93IjogIiV3IiwKICAgICAgICAiJU9XIjogIiVXIiwKICAgICAgICAiJU95IjogIiV5IiwKICAgICAgfTsKICAgICAgZm9yICh2YXIgbCBpbiBtKSBkID0gZC5yZXBsYWNlKG5ldyBSZWdFeHAobCwgImciKSwgbVtsXSk7CiAgICAgIGxldCBGID0gIlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLAogICAgICAgIHZhID0KICAgICAgICAgICJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5zcGxpdCgKICAgICAgICAgICAgIiAiLAogICAgICAgICAgKTsKICAgICAgbSA9IHsKICAgICAgICAiJWEiKGEpIHsKICAgICAgICAgIHJldHVybiBGW2EuRl0uc3Vic3RyaW5nKDAsIDMpOwogICAgICAgIH0sCiAgICAgICAgIiVBIihhKSB7CiAgICAgICAgICByZXR1cm4gRlthLkZdOwogICAgICAgIH0sCiAgICAgICAgIiViIihhKSB7CiAgICAgICAgICByZXR1cm4gdmFbYS5CXS5zdWJzdHJpbmcoMCwgMyk7CiAgICAgICAgfSwKICAgICAgICAiJUIiKGEpIHsKICAgICAgICAgIHJldHVybiB2YVthLkJdOwogICAgICAgIH0sCiAgICAgICAgIiVDIihhKSB7CiAgICAgICAgICByZXR1cm4gZigoKGEuQSArIDE5MDApIC8gMTAwKSB8IDAsIDIpOwogICAgICAgIH0sCiAgICAgICAgIiVkIihhKSB7CiAgICAgICAgICByZXR1cm4gZihhLkMsIDIpOwogICAgICAgIH0sCiAgICAgICAgIiVlIihhKSB7CiAgICAgICAgICByZXR1cm4gZyhhLkMsIDIsICIgIik7CiAgICAgICAgfSwKICAgICAgICAiJWciKGEpIHsKICAgICAgICAgIHJldHVybiB6KGEpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpOwogICAgICAgIH0sCiAgICAgICAgIiVHIihhKSB7CiAgICAgICAgICByZXR1cm4geihhKTsKICAgICAgICB9LAogICAgICAgICIlSCIoYSkgewogICAgICAgICAgcmV0dXJuIGYoYS5ELCAyKTsKICAgICAgICB9LAogICAgICAgICIlSSIoYSkgewogICAgICAgICAgYSA9IGEuRDsKICAgICAgICAgIDAgPT0gYSA/IChhID0gMTIpIDogMTIgPCBhICYmIChhIC09IDEyKTsKICAgICAgICAgIHJldHVybiBmKGEsIDIpOwogICAgICAgIH0sCiAgICAgICAgIiVqIihhKSB7CiAgICAgICAgICByZXR1cm4gZihhLkMgKyBUKFMoYS5BICsgMTkwMCkgPyBVIDogVywgYS5CIC0gMSksIDMpOwogICAgICAgIH0sCiAgICAgICAgIiVtIihhKSB7CiAgICAgICAgICByZXR1cm4gZihhLkIgKyAxLCAyKTsKICAgICAgICB9LAogICAgICAgICIlTSIoYSkgewogICAgICAgICAgcmV0dXJuIGYoYS5NLCAyKTsKICAgICAgICB9LAogICAgICAgICIlbiIoKSB7CiAgICAgICAgICByZXR1cm4gIlxuIjsKICAgICAgICB9LAogICAgICAgICIlcCIoYSkgewogICAgICAgICAgcmV0dXJuIDAgPD0gYS5EICYmIDEyID4gYS5EID8gIkFNIiA6ICJQTSI7CiAgICAgICAgfSwKICAgICAgICAiJVMiKGEpIHsKICAgICAgICAgIHJldHVybiBmKGEuTiwgMik7CiAgICAgICAgfSwKICAgICAgICAiJXQiKCkgewogICAgICAgICAgcmV0dXJuICJcdCI7CiAgICAgICAgfSwKICAgICAgICAiJXUiKGEpIHsKICAgICAgICAgIHJldHVybiBhLkYgfHwgNzsKICAgICAgICB9LAogICAgICAgICIlVSIoYSkgewogICAgICAgICAgbGV0IGIgPSBuZXcgRGF0ZShhLkEgKyAxOTAwLCAwLCAxKSwKICAgICAgICAgICAgZCA9IDAgPT09IGIuZ2V0RGF5KCkgPyBiIDogWChiLCA3IC0gYi5nZXREYXkoKSk7CiAgICAgICAgICBhID0gbmV3IERhdGUoYS5BICsgMTkwMCwgYS5CLCBhLkMpOwogICAgICAgICAgcmV0dXJuIDAgPiBoKGQsIGEpCiAgICAgICAgICAgID8gZigKICAgICAgICAgICAgICAgIE1hdGguY2VpbCgKICAgICAgICAgICAgICAgICAgKDMxIC0KICAgICAgICAgICAgICAgICAgICBkLmdldERhdGUoKSArCiAgICAgICAgICAgICAgICAgICAgKFQoUyhhLmdldEZ1bGxZZWFyKCkpID8gVSA6IFcsIGEuZ2V0TW9udGgoKSAtIDEpIC0gMzEpICsKICAgICAgICAgICAgICAgICAgICBhLmdldERhdGUoKSkgLwogICAgICAgICAgICAgICAgICAgIDcsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICApCiAgICAgICAgICAgIDogMCA9PT0gaChkLCBiKQogICAgICAgICAgICAgID8gIjAxIgogICAgICAgICAgICAgIDogIjAwIjsKICAgICAgICB9LAogICAgICAgICIlViIoYSkgewogICAgICAgICAgbGV0IGIgPSBuKG5ldyBEYXRlKGEuQSArIDE5MDAsIDAsIDQpKSwKICAgICAgICAgICAgZCA9IG4obmV3IERhdGUoYS5BICsgMTkwMSwgMCwgNCkpLAogICAgICAgICAgICBlID0gWChuZXcgRGF0ZShhLkEgKyAxOTAwLCAwLCAxKSwgYS5HKTsKICAgICAgICAgIHJldHVybiAwID4gaChlLCBiKQogICAgICAgICAgICA/ICI1MyIKICAgICAgICAgICAgOiAwID49IGgoZCwgZSkKICAgICAgICAgICAgICA/ICIwMSIKICAgICAgICAgICAgICA6IGYoCiAgICAgICAgICAgICAgICAgIE1hdGguY2VpbCgKICAgICAgICAgICAgICAgICAgICAoYi5nZXRGdWxsWWVhcigpIDwgYS5BICsgMTkwMAogICAgICAgICAgICAgICAgICAgICAgPyBhLkcgKyAzMiAtIGIuZ2V0RGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICA6IGEuRyArIDEgLSBiLmdldERhdGUoKSkgLyA3LAogICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9LAogICAgICAgICIldyIoYSkgewogICAgICAgICAgcmV0dXJuIGEuRjsKICAgICAgICB9LAogICAgICAgICIlVyIoYSkgewogICAgICAgICAgbGV0IGIgPSBuZXcgRGF0ZShhLkEsIDAsIDEpLAogICAgICAgICAgICBkID0gMSA9PT0gYi5nZXREYXkoKSA/IGIgOiBYKGIsIDAgPT09IGIuZ2V0RGF5KCkgPyAxIDogNyAtIGIuZ2V0RGF5KCkgKyAxKTsKICAgICAgICAgIGEgPSBuZXcgRGF0ZShhLkEgKyAxOTAwLCBhLkIsIGEuQyk7CiAgICAgICAgICByZXR1cm4gMCA+IGgoZCwgYSkKICAgICAgICAgICAgPyBmKAogICAgICAgICAgICAgICAgTWF0aC5jZWlsKAogICAgICAgICAgICAgICAgICAoMzEgLQogICAgICAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpICsKICAgICAgICAgICAgICAgICAgICAoVChTKGEuZ2V0RnVsbFllYXIoKSkgPyBVIDogVywgYS5nZXRNb250aCgpIC0gMSkgLSAzMSkgKwogICAgICAgICAgICAgICAgICAgIGEuZ2V0RGF0ZSgpKSAvCiAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICkKICAgICAgICAgICAgOiAwID09PSBoKGQsIGIpCiAgICAgICAgICAgICAgPyAiMDEiCiAgICAgICAgICAgICAgOiAiMDAiOwogICAgICAgIH0sCiAgICAgICAgIiV5IihhKSB7CiAgICAgICAgICByZXR1cm4gKGEuQSArIDE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpOwogICAgICAgIH0sCiAgICAgICAgIiVZIihhKSB7CiAgICAgICAgICByZXR1cm4gYS5BICsgMTkwMDsKICAgICAgICB9LAogICAgICAgICIleiIoYSkgewogICAgICAgICAgYSA9IGEuTDsKICAgICAgICAgIGxldCBiID0gMCA8PSBhOwogICAgICAgICAgYSA9IE1hdGguYWJzKGEpIC8gNjA7CiAgICAgICAgICByZXR1cm4gKGIgPyAiKyIgOiAiLSIpICsgU3RyaW5nKCIwMDAwIiArICgoYSAvIDYwKSAqIDEwMCArIChhICUgNjApKSkuc2xpY2UoLTQpOwogICAgICAgIH0sCiAgICAgICAgIiVaIihhKSB7CiAgICAgICAgICByZXR1cm4gYS5POwogICAgICAgIH0sCiAgICAgICAgIiUlIigpIHsKICAgICAgICAgIHJldHVybiAiJSI7CiAgICAgICAgfSwKICAgICAgfTsKICAgICAgZm9yIChsIGluIG0pIDAgPD0gZC5pbmRleE9mKGwpICYmIChkID0gZC5yZXBsYWNlKG5ldyBSZWdFeHAobCwgImciKSwgbVtsXShlKSkpOwogICAgICBsID0gRWEoZCk7CiAgICAgIGlmIChsLmxlbmd0aCA+IGIpIHJldHVybiAwOwogICAgICBCLnNldChsLCBhKTsKICAgICAgcmV0dXJuIGwubGVuZ3RoIC0gMTsKICAgIH0KICAgIGZ1bmN0aW9uIEVhKGEpIHsKICAgICAgZm9yICh2YXIgYiA9IDAsIGQgPSAwOyBkIDwgYS5sZW5ndGg7ICsrZCkgewogICAgICAgIGxldCBlID0gYS5jaGFyQ29kZUF0KGQpOwogICAgICAgIDU1Mjk2IDw9IGUgJiYgNTczNDMgPj0gZSAmJiAoZSA9ICg2NTUzNiArICgoZSAmIDEwMjMpIDw8IDEwKSkgfCAoYS5jaGFyQ29kZUF0KCsrZCkgJiAxMDIzKSk7CiAgICAgICAgMTI3ID49IGUgPyArK2IgOiAoYiA9IDIwNDcgPj0gZSA/IGIgKyAyIDogNjU1MzUgPj0gZSA/IGIgKyAzIDogYiArIDQpOwogICAgICB9CiAgICAgIGIgPSBBcnJheShiICsgMSk7CiAgICAgIGlhKGEsIGIsIDAsIGIubGVuZ3RoKTsKICAgICAgcmV0dXJuIGI7CiAgICB9CiAgICBsZXQgR2EgPSB7CiAgICAgICAgZigpIHt9LAogICAgICAgIGMoKSB7CiAgICAgICAgICBjLl9fX2Vycm5vX2xvY2F0aW9uICYmIChDW2MuX19fZXJybm9fbG9jYXRpb24oKSA+PiAyXSA9IDYzKTsKICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9LAogICAgICAgIG4oYSwgYikgewogICAgICAgICAgUCA9IGI7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZCA9IEFhKCk7CiAgICAgICAgICAgIGxldCBlID0gQWEoKTsKICAgICAgICAgICAgaWYgKC0xID09PSBkIHx8IDAgPT09IGUpIHZhciBnID0gLTI4OwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgZiA9IFEuS1tkXTsKICAgICAgICAgICAgICBpZiAoZiAmJiBlID09PSBmLlUpIHsKICAgICAgICAgICAgICAgIGxldCBoID0gKHZvaWQgMCkuVChmLlMpOwogICAgICAgICAgICAgICAgUS5SKGQsIGgsIGUsIGYuZmxhZ3MsIGYub2Zmc2V0KTsKICAgICAgICAgICAgICAgICh2b2lkIDApLlcoaCk7CiAgICAgICAgICAgICAgICBRLktbZF0gPSBudWxsOwogICAgICAgICAgICAgICAgZi5QICYmIEZhKGYuVik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBnOwogICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICByZXR1cm4gRChuKSwgLW4uSTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGEoKSB7fSwKICAgICAgICBiKCkgewogICAgICAgICAgRCgpOwogICAgICAgIH0sCiAgICAgICAgayhhLCBiLCBkKSB7CiAgICAgICAgICBILnNldChILnN1YmFycmF5KGIsIGIgKyBkKSwgYSk7CiAgICAgICAgfSwKICAgICAgICBsKGEpIHsKICAgICAgICAgIGxldCBiID0gQi5sZW5ndGg7CiAgICAgICAgICBpZiAoMjE0NzQxODExMiA8IGEpIHJldHVybiAhMTsKICAgICAgICAgIGZvciAobGV0IGQgPSAxOyA0ID49IGQ7IGQgKj0gMikgewogICAgICAgICAgICBsZXQgZSA9IGIgKiAoMSArIDAuMiAvIGQpOwogICAgICAgICAgICBlID0gTWF0aC5taW4oZSwgYSArIDEwMDY2MzI5Nik7CiAgICAgICAgICAgIGUgPSBNYXRoLm1heCgxNjc3NzIxNiwgYSwgZSk7CiAgICAgICAgICAgIDAgPCBlICUgNjU1MzYgJiYgKGUgKz0gNjU1MzYgLSAoZSAlIDY1NTM2KSk7CiAgICAgICAgICAgIGE6IHsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgRS5ncm93KChNYXRoLm1pbigyMTQ3NDE4MTEyLCBlKSAtIEouYnl0ZUxlbmd0aCArIDY1NTM1KSA+PiAxNik7CiAgICAgICAgICAgICAgICBtYShFLmJ1ZmZlcik7CiAgICAgICAgICAgICAgICB2YXIgZyA9IDE7CiAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgIH0gY2F0Y2ggKGYpIHt9CiAgICAgICAgICAgICAgZyA9IHZvaWQgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZykgcmV0dXJuICEwOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuICExOwogICAgICAgIH0sCiAgICAgICAgZChhLCBiKSB7CiAgICAgICAgICBsZXQgZCA9IDA7CiAgICAgICAgICBDYSgpLmZvckVhY2goZnVuY3Rpb24gKGUsIGcpIHsKICAgICAgICAgICAgbGV0IGYgPSBiICsgZDsKICAgICAgICAgICAgZyA9IENbKGEgKyA0ICogZykgPj4gMl0gPSBmOwogICAgICAgICAgICBmb3IgKGYgPSAwOyBmIDwgZS5sZW5ndGg7ICsrZikgQltnKysgPj4gMF0gPSBlLmNoYXJDb2RlQXQoZik7CiAgICAgICAgICAgIEJbZyA+PiAwXSA9IDA7CiAgICAgICAgICAgIGQgKz0gZS5sZW5ndGggKyAxOwogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGUoYSwgYikgewogICAgICAgICAgbGV0IGQgPSBDYSgpOwogICAgICAgICAgQ1thID4+IDJdID0gZC5sZW5ndGg7CiAgICAgICAgICBsZXQgZSA9IDA7CiAgICAgICAgICBkLmZvckVhY2goZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgZSArPSBhLmxlbmd0aCArIDE7CiAgICAgICAgICB9KTsKICAgICAgICAgIENbYiA+PiAyXSA9IGU7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGgoKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGooKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGcoYSwgYiwgZCwgZSkgewogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZm9yICh2YXIgZyA9IDAsIGYgPSAwOyBmIDwgZDsgZisrKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgaCA9IENbKGIgKyA4ICogZikgPj4gMl0sIG4gPSBDWyhiICsgKDggKiBmICsgNCkpID4+IDJdLCB6ID0gMDsgeiA8IG47IHorKykgewogICAgICAgICAgICAgICAgbGV0IG0gPSBIW2ggKyB6XSwKICAgICAgICAgICAgICAgICAgbCA9IHphW2FdOwogICAgICAgICAgICAgICAgMCA9PT0gbSB8fCAxMCA9PT0gbSA/ICgoMSA9PT0gYSA/IHggOiB5KShJKGwsIDApKSwgKGwubGVuZ3RoID0gMCkpIDogbC5wdXNoKG0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBnICs9IG47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQ1tlID4+IDJdID0gZzsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICB9IGNhdGNoIChGKSB7CiAgICAgICAgICAgIHJldHVybiBEKEYpLCBGLkk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtZW1vcnk6IEUsCiAgICAgICAgbygpIHt9LAogICAgICAgIGkoKSB7fSwKICAgICAgICBtKGEsIGIsIGQsIGUpIHsKICAgICAgICAgIHJldHVybiBEYShhLCBiLCBkLCBlKTsKICAgICAgICB9LAogICAgICAgIHRhYmxlOiBlYSwKICAgICAgfSwKICAgICAgSGEgPSAoZnVuY3Rpb24gKCkgewogICAgICAgIGZ1bmN0aW9uIGEoYSkgewogICAgICAgICAgYy5hc20gPSBhLmV4cG9ydHM7CiAgICAgICAgICBMLS07CiAgICAgICAgICBjLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMgJiYgYy5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKEwpOwogICAgICAgICAgMCA9PSBMICYmIChudWxsICE9PSBNICYmIChjbGVhckludGVydmFsKE0pLCAoTSA9IG51bGwpKSwgTiAmJiAoKGEgPSBOKSwgKE4gPSBudWxsKSwgYSgpKSk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGIoYikgewogICAgICAgICAgYShiLmluc3RhbmNlKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gZChhKSB7CiAgICAgICAgICByZXR1cm4geGEoKQogICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoYSkgewogICAgICAgICAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShhLCBlKTsKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLnRoZW4oYSwgZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICB5KCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiICsgYSk7CiAgICAgICAgICAgICAgRChhKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHZhciBlID0geyBlbnY6IEdhLCB3YXNpX3NuYXBzaG90X3ByZXZpZXcxOiBHYSB9OwogICAgICAgIEwrKzsKICAgICAgICBjLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMgJiYgYy5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKEwpOwogICAgICAgIGlmIChjLmluc3RhbnRpYXRlV2FzbSkKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBjLmluc3RhbnRpYXRlV2FzbShlLCBhKTsKICAgICAgICAgIH0gY2F0Y2ggKGcpIHsKICAgICAgICAgICAgcmV0dXJuIHkoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIgKyBnKSwgITE7CiAgICAgICAgICB9CiAgICAgICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmICgKICAgICAgICAgICAgQSB8fAogICAgICAgICAgICAiZnVuY3Rpb24iICE9PSB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcgfHwKICAgICAgICAgICAgdGEoKSB8fAogICAgICAgICAgICAiZnVuY3Rpb24iICE9PSB0eXBlb2YgZmV0Y2gKICAgICAgICAgICkKICAgICAgICAgICAgcmV0dXJuIGQoYik7CiAgICAgICAgICBmZXRjaChPLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pLnRoZW4oZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKGEsIGUpLnRoZW4oYiwgZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICB5KCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIiArIGEpOwogICAgICAgICAgICAgIHkoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIik7CiAgICAgICAgICAgICAgZChiKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9KTsKICAgICAgICB9KSgpOwogICAgICAgIHJldHVybiB7fTsKICAgICAgfSkoKTsKICAgIGMuYXNtID0gSGE7CiAgICB2YXIgeWEgPSAoYy5fX193YXNtX2NhbGxfY3RvcnMgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAoeWEgPSBjLl9fX3dhc21fY2FsbF9jdG9ycyA9IGMuYXNtLnApLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9KTsKICAgIGMuX2NvbnZlcnRfZ2xzbF90b19zcGlydiA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIChjLl9jb252ZXJ0X2dsc2xfdG9fc3BpcnYgPSBjLmFzbS5xKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfTsKICAgIGMuX2Rlc3Ryb3lfb3V0cHV0X2J1ZmZlciA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIChjLl9kZXN0cm95X291dHB1dF9idWZmZXIgPSBjLmFzbS5yKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfTsKICAgIGMuX21hbGxvYyA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIChjLl9tYWxsb2MgPSBjLmFzbS5zKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfTsKICAgIHZhciBGYSA9IChjLl9mcmVlID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAoRmEgPSBjLl9mcmVlID0gYy5hc20udCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgICAgfSksCiAgICAgIGphID0gKGMuc3RhY2tTYXZlID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAoamEgPSBjLnN0YWNrU2F2ZSA9IGMuYXNtLnUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICAgIH0pLAogICAgICBHID0gKGMuc3RhY2tBbGxvYyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gKEcgPSBjLnN0YWNrQWxsb2MgPSBjLmFzbS52KS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgICB9KSwKICAgICAga2EgPSAoYy5zdGFja1Jlc3RvcmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIChrYSA9IGMuc3RhY2tSZXN0b3JlID0gYy5hc20udykuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgICAgfSk7CiAgICBjLmR5bkNhbGxfdmkgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAoYy5keW5DYWxsX3ZpID0gYy5hc20ueCkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgIH07CiAgICBjLmR5bkNhbGxfdiA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIChjLmR5bkNhbGxfdiA9IGMuYXNtLnkpLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9OwogICAgYy5hc20gPSBIYTsKICAgIGxldCBZOwogICAgYy50aGVuID0gZnVuY3Rpb24gKGEpIHsKICAgICAgaWYgKFkpIGEoYyk7CiAgICAgIGVsc2UgewogICAgICAgIGxldCBiID0gYy5vblJ1bnRpbWVJbml0aWFsaXplZDsKICAgICAgICBjLm9uUnVudGltZUluaXRpYWxpemVkID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgYiAmJiBiKCk7CiAgICAgICAgICBhKGMpOwogICAgICAgIH07CiAgICAgIH0KICAgICAgcmV0dXJuIGM7CiAgICB9OwogICAgTiA9IGZ1bmN0aW9uIElhKCkgewogICAgICBZIHx8IFooKTsKICAgICAgWSB8fCAoTiA9IElhKTsKICAgIH07CiAgICBmdW5jdGlvbiBaKCkgewogICAgICBmdW5jdGlvbiBhKCkgewogICAgICAgIGlmICghWSAmJiAoKFkgPSAhMCksICFmYSkpIHsKICAgICAgICAgIEsocGEpOwogICAgICAgICAgSyhxYSk7CiAgICAgICAgICBpZiAoYy5vblJ1bnRpbWVJbml0aWFsaXplZCkgYy5vblJ1bnRpbWVJbml0aWFsaXplZCgpOwogICAgICAgICAgaWYgKGMucG9zdFJ1bikKICAgICAgICAgICAgZm9yICgiZnVuY3Rpb24iID09PSB0eXBlb2YgYy5wb3N0UnVuICYmIChjLnBvc3RSdW4gPSBbYy5wb3N0UnVuXSk7IGMucG9zdFJ1bi5sZW5ndGg7ICkgewogICAgICAgICAgICAgIGxldCBhID0gYy5wb3N0UnVuLnNoaWZ0KCk7CiAgICAgICAgICAgICAgcmEudW5zaGlmdChhKTsKICAgICAgICAgICAgfQogICAgICAgICAgSyhyYSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghKDAgPCBMKSkgewogICAgICAgIGlmIChjLnByZVJ1bikKICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PT0gdHlwZW9mIGMucHJlUnVuICYmIChjLnByZVJ1biA9IFtjLnByZVJ1bl0pOyBjLnByZVJ1bi5sZW5ndGg7ICkgc2EoKTsKICAgICAgICBLKG9hKTsKICAgICAgICAwIDwgTCB8fAogICAgICAgICAgKGMuc2V0U3RhdHVzCiAgICAgICAgICAgID8gKGMuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksCiAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgYy5zZXRTdGF0dXMoIiIpOwogICAgICAgICAgICAgICAgfSwgMSk7CiAgICAgICAgICAgICAgICBhKCk7CiAgICAgICAgICAgICAgfSwgMSkpCiAgICAgICAgICAgIDogYSgpKTsKICAgICAgfQogICAgfQogICAgYy5ydW4gPSBaOwogICAgaWYgKGMucHJlSW5pdCkKICAgICAgZm9yICgiZnVuY3Rpb24iID09PSB0eXBlb2YgYy5wcmVJbml0ICYmIChjLnByZUluaXQgPSBbYy5wcmVJbml0XSk7IDAgPCBjLnByZUluaXQubGVuZ3RoOyApCiAgICAgICAgYy5wcmVJbml0LnBvcCgpKCk7CiAgICBaKCk7CgogICAgcmV0dXJuIE1vZHVsZTsKICB9Owp9KSgpOwppZiAodHlwZW9mIGV4cG9ydHMgPT09ICJvYmplY3QiICYmIHR5cGVvZiBtb2R1bGUgPT09ICJvYmplY3QiKSBtb2R1bGUuZXhwb3J0cyA9IE1vZHVsZTsKZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmVbImFtZCJdKQogIGRlZmluZShbXSwgZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIE1vZHVsZTsKICB9KTsKZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICJvYmplY3QiKSBleHBvcnRzWyJNb2R1bGUiXSA9IE1vZHVsZTsKZXhwb3J0IGRlZmF1bHQgKCgpID0+IHsKICBjb25zdCBpbml0aWFsaXplID0gKCkgPT4gewogICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIE1vZHVsZSh7CiAgICAgICAgbG9jYXRlRmlsZSgpIHsKICAgICAgICAgIGNvbnN0IGkgPSBpbXBvcnQubWV0YS51cmwubGFzdEluZGV4T2YoIi8iKTsKICAgICAgICAgIHJldHVybiBpbXBvcnQubWV0YS51cmwuc3Vic3RyaW5nKDAsIGkpICsgIi9nbHNsYW5nLndhc20iOwogICAgICAgIH0sCiAgICAgICAgb25SdW50aW1lSW5pdGlhbGl6ZWQoKSB7CiAgICAgICAgICByZXNvbHZlKHsKICAgICAgICAgICAgY29tcGlsZUdMU0xaZXJvQ29weTogdGhpcy5jb21waWxlR0xTTFplcm9Db3B5LAogICAgICAgICAgICBjb21waWxlR0xTTDogdGhpcy5jb21waWxlR0xTTCwKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgIH0pOwogICAgfSk7CiAgfTsKCiAgbGV0IGluc3RhbmNlOwogIHJldHVybiAoKSA9PiB7CiAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgIGluc3RhbmNlID0gaW5pdGlhbGl6ZSgpOwogICAgfQogICAgcmV0dXJuIGluc3RhbmNlOwogIH07Cn0pKCk7Cg==", "bGV0IE1vZHVsZSA9IGZ1bmN0aW9uIChNb2R1bGUpIHsKICBNb2R1bGUgPSBNb2R1bGUgfHwge307CiAgdmFyIE1vZHVsZSA9IHR5cGVvZiBNb2R1bGUgIT09ICJ1bmRlZmluZWQiID8gTW9kdWxlIDoge307CiAgbGV0IG1vZHVsZU92ZXJyaWRlcyA9IE9iamVjdC5hc3NpZ24oe30sIE1vZHVsZSk7CiAgbGV0IGFyZ3VtZW50c18gPSBbXTsKICBsZXQgdGhpc1Byb2dyYW0gPSAiLi90aGlzLnByb2dyYW0iOwogIGxldCBxdWl0XyA9IChzdGF0dXMsIHRvVGhyb3cpID0+IHsKICAgIHRocm93IHRvVGhyb3c7CiAgfTsKICBsZXQgRU5WSVJPTk1FTlRfSVNfV0VCID0gdHlwZW9mIHdpbmRvdyA9PT0gIm9iamVjdCI7CiAgbGV0IEVOVklST05NRU5UX0lTX1dPUktFUiA9IHR5cGVvZiBpbXBvcnRTY3JpcHRzID09PSAiZnVuY3Rpb24iOwogIGxldCBFTlZJUk9OTUVOVF9JU19OT0RFID0KICAgIHR5cGVvZiBwcm9jZXNzID09PSAib2JqZWN0IiAmJgogICAgdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMgPT09ICJvYmplY3QiICYmCiAgICB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlID09PSAic3RyaW5nIjsKICBsZXQgc2NyaXB0RGlyZWN0b3J5ID0gIiI7CiAgZnVuY3Rpb24gbG9jYXRlRmlsZShwYXRoKSB7CiAgICBpZiAoTW9kdWxlWyJsb2NhdGVGaWxlIl0pIHsKICAgICAgcmV0dXJuIE1vZHVsZVsibG9jYXRlRmlsZSJdKHBhdGgsIHNjcmlwdERpcmVjdG9yeSk7CiAgICB9CiAgICByZXR1cm4gc2NyaXB0RGlyZWN0b3J5ICsgcGF0aDsKICB9CiAgbGV0IHJlYWRfLCByZWFkQXN5bmMsIHJlYWRCaW5hcnksIHNldFdpbmRvd1RpdGxlOwogIGZ1bmN0aW9uIGxvZ0V4Y2VwdGlvbk9uRXhpdChlKSB7CiAgICBpZiAoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXMpIHJldHVybjsKICAgIGxldCB0b0xvZyA9IGU7CiAgICBlcnIoImV4aXRpbmcgZHVlIHRvIGV4Y2VwdGlvbjogIiArIHRvTG9nKTsKICB9CiAgaWYgKEVOVklST05NRU5UX0lTX05PREUpIHsKICAgIGlmIChFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHsKICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gcmVxdWlyZSgicGF0aCIpLmRpcm5hbWUoc2NyaXB0RGlyZWN0b3J5KSArICIvIjsKICAgIH0gZWxzZSB7CiAgICAgIHNjcmlwdERpcmVjdG9yeSA9IF9fZGlybmFtZSArICIvIjsKICAgIH0KICAgIHZhciBmcywgbm9kZVBhdGg7CiAgICBpZiAodHlwZW9mIHJlcXVpcmUgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgZnMgPSByZXF1aXJlKCJmcyIpOwogICAgICBub2RlUGF0aCA9IHJlcXVpcmUoInBhdGgiKTsKICAgIH0KICAgIHJlYWRfID0gKGZpbGVuYW1lLCBiaW5hcnkpID0+IHsKICAgICAgZmlsZW5hbWUgPSBub2RlUGF0aFsibm9ybWFsaXplIl0oZmlsZW5hbWUpOwogICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCBiaW5hcnkgPyB1bmRlZmluZWQgOiAidXRmOCIpOwogICAgfTsKICAgIHJlYWRCaW5hcnkgPSAoZmlsZW5hbWUpID0+IHsKICAgICAgbGV0IHJldCA9IHJlYWRfKGZpbGVuYW1lLCB0cnVlKTsKICAgICAgaWYgKCFyZXQuYnVmZmVyKSB7CiAgICAgICAgcmV0ID0gbmV3IFVpbnQ4QXJyYXkocmV0KTsKICAgICAgfQogICAgICByZXR1cm4gcmV0OwogICAgfTsKICAgIHJlYWRBc3luYyA9IChmaWxlbmFtZSwgb25sb2FkLCBvbmVycm9yKSA9PiB7CiAgICAgIGZpbGVuYW1lID0gbm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTsKICAgICAgZnMucmVhZEZpbGUoZmlsZW5hbWUsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHsKICAgICAgICBpZiAoZXJyKSBvbmVycm9yKGVycik7CiAgICAgICAgZWxzZSBvbmxvYWQoZGF0YS5idWZmZXIpOwogICAgICB9KTsKICAgIH07CiAgICBpZiAocHJvY2Vzc1siYXJndiJdLmxlbmd0aCA+IDEpIHsKICAgICAgdGhpc1Byb2dyYW0gPSBwcm9jZXNzWyJhcmd2Il1bMV0ucmVwbGFjZSgvXFwvZywgIi8iKTsKICAgIH0KICAgIGFyZ3VtZW50c18gPSBwcm9jZXNzWyJhcmd2Il0uc2xpY2UoMik7CiAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgbW9kdWxlWyJleHBvcnRzIl0gPSBNb2R1bGU7CiAgICB9CiAgICBwcm9jZXNzWyJvbiJdKCJ1bmNhdWdodEV4Y2VwdGlvbiIsIGZ1bmN0aW9uIChleCkgewogICAgICBpZiAoIShleCBpbnN0YW5jZW9mIEV4aXRTdGF0dXMpKSB7CiAgICAgICAgdGhyb3cgZXg7CiAgICAgIH0KICAgIH0pOwogICAgcHJvY2Vzc1sib24iXSgidW5oYW5kbGVkUmVqZWN0aW9uIiwgZnVuY3Rpb24gKHJlYXNvbikgewogICAgICB0aHJvdyByZWFzb247CiAgICB9KTsKICAgIHF1aXRfID0gKHN0YXR1cywgdG9UaHJvdykgPT4gewogICAgICBpZiAoa2VlcFJ1bnRpbWVBbGl2ZSgpKSB7CiAgICAgICAgcHJvY2Vzc1siZXhpdENvZGUiXSA9IHN0YXR1czsKICAgICAgICB0aHJvdyB0b1Rocm93OwogICAgICB9CiAgICAgIGxvZ0V4Y2VwdGlvbk9uRXhpdCh0b1Rocm93KTsKICAgICAgcHJvY2Vzc1siZXhpdCJdKHN0YXR1cyk7CiAgICB9OwogICAgTW9kdWxlWyJpbnNwZWN0Il0gPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAiW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF0iOwogICAgfTsKICB9IGVsc2UgaWYgKEVOVklST05NRU5UX0lTX1dFQiB8fCBFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHsKICAgIGlmIChFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHsKICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gc2VsZi5sb2NhdGlvbi5ocmVmOwogICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpIHsKICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7CiAgICB9CiAgICBpZiAoc2NyaXB0RGlyZWN0b3J5LmluZGV4T2YoImJsb2I6IikgIT09IDApIHsKICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gc2NyaXB0RGlyZWN0b3J5LnN1YnN0cigKICAgICAgICAwLAogICAgICAgIHNjcmlwdERpcmVjdG9yeS5yZXBsYWNlKC9bPyNdLiovLCAiIikubGFzdEluZGV4T2YoIi8iKSArIDEsCiAgICAgICk7CiAgICB9IGVsc2UgewogICAgICBzY3JpcHREaXJlY3RvcnkgPSAiIjsKICAgIH0KICAgIHsKICAgICAgcmVhZF8gPSAodXJsKSA9PiB7CiAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsKICAgICAgfTsKICAgICAgaWYgKEVOVklST05NRU5UX0lTX1dPUktFUikgewogICAgICAgIHJlYWRCaW5hcnkgPSAodXJsKSA9PiB7CiAgICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgICB4aHIub3BlbigiR0VUIiwgdXJsLCBmYWxzZSk7CiAgICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHhoci5yZXNwb25zZSk7CiAgICAgICAgfTsKICAgICAgfQogICAgICByZWFkQXN5bmMgPSAodXJsLCBvbmxvYWQsIG9uZXJyb3IpID0+IHsKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICJhcnJheWJ1ZmZlciI7CiAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+IHsKICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09IDIwMCB8fCAoeGhyLnN0YXR1cyA9PSAwICYmIHhoci5yZXNwb25zZSkpIHsKICAgICAgICAgICAgb25sb2FkKHhoci5yZXNwb25zZSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIG9uZXJyb3IoKTsKICAgICAgICB9OwogICAgICAgIHhoci5vbmVycm9yID0gb25lcnJvcjsKICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgfTsKICAgIH0KICAgIHNldFdpbmRvd1RpdGxlID0gKHRpdGxlKSA9PiAoZG9jdW1lbnQudGl0bGUgPSB0aXRsZSk7CiAgfSBlbHNlIHsKICB9CiAgbGV0IG91dCA9IE1vZHVsZVsicHJpbnQiXSB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpOwogIHZhciBlcnIgPSBNb2R1bGVbInByaW50RXJyIl0gfHwgY29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7CiAgT2JqZWN0LmFzc2lnbihNb2R1bGUsIG1vZHVsZU92ZXJyaWRlcyk7CiAgbW9kdWxlT3ZlcnJpZGVzID0gbnVsbDsKICBpZiAoTW9kdWxlWyJhcmd1bWVudHMiXSkgYXJndW1lbnRzXyA9IE1vZHVsZVsiYXJndW1lbnRzIl07CiAgaWYgKE1vZHVsZVsidGhpc1Byb2dyYW0iXSkgdGhpc1Byb2dyYW0gPSBNb2R1bGVbInRoaXNQcm9ncmFtIl07CiAgaWYgKE1vZHVsZVsicXVpdCJdKSBxdWl0XyA9IE1vZHVsZVsicXVpdCJdOwogIGxldCB3YXNtQmluYXJ5OwogIGlmIChNb2R1bGVbIndhc21CaW5hcnkiXSkgd2FzbUJpbmFyeSA9IE1vZHVsZVsid2FzbUJpbmFyeSJdOwogIGxldCBub0V4aXRSdW50aW1lID0gTW9kdWxlWyJub0V4aXRSdW50aW1lIl0gfHwgdHJ1ZTsKICBpZiAodHlwZW9mIFdlYkFzc2VtYmx5ICE9PSAib2JqZWN0IikgewogICAgYWJvcnQoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTsKICB9CiAgbGV0IHdhc21NZW1vcnk7CiAgbGV0IEFCT1JUID0gZmFsc2U7CiAgbGV0IEVYSVRTVEFUVVM7CiAgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgdGV4dCkgewogICAgaWYgKCFjb25kaXRpb24pIHsKICAgICAgYWJvcnQodGV4dCk7CiAgICB9CiAgfQogIGxldCBVVEY4RGVjb2RlciA9IHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gInVuZGVmaW5lZCIgPyBuZXcgVGV4dERlY29kZXIoInV0ZjgiKSA6IHVuZGVmaW5lZDsKICBmdW5jdGlvbiBVVEY4QXJyYXlUb1N0cmluZyhoZWFwT3JBcnJheSwgaWR4LCBtYXhCeXRlc1RvUmVhZCkgewogICAgbGV0IGVuZElkeCA9IGlkeCArIG1heEJ5dGVzVG9SZWFkOwogICAgbGV0IGVuZFB0ciA9IGlkeDsKICAgIHdoaWxlIChoZWFwT3JBcnJheVtlbmRQdHJdICYmICEoZW5kUHRyID49IGVuZElkeCkpICsrZW5kUHRyOwogICAgaWYgKGVuZFB0ciAtIGlkeCA+IDE2ICYmIGhlYXBPckFycmF5LmJ1ZmZlciAmJiBVVEY4RGVjb2RlcikgewogICAgICByZXR1cm4gVVRGOERlY29kZXIuZGVjb2RlKGhlYXBPckFycmF5LnN1YmFycmF5KGlkeCwgZW5kUHRyKSk7CiAgICB9CiAgICBsZXQgc3RyID0gIiI7CiAgICB3aGlsZSAoaWR4IDwgZW5kUHRyKSB7CiAgICAgIGxldCB1MCA9IGhlYXBPckFycmF5W2lkeCsrXTsKICAgICAgaWYgKCEodTAgJiAxMjgpKSB7CiAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodTApOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGxldCB1MSA9IGhlYXBPckFycmF5W2lkeCsrXSAmIDYzOwogICAgICBpZiAoKHUwICYgMjI0KSA9PSAxOTIpIHsKICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKHUwICYgMzEpIDw8IDYpIHwgdTEpOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGxldCB1MiA9IGhlYXBPckFycmF5W2lkeCsrXSAmIDYzOwogICAgICBpZiAoKHUwICYgMjQwKSA9PSAyMjQpIHsKICAgICAgICB1MCA9ICgodTAgJiAxNSkgPDwgMTIpIHwgKHUxIDw8IDYpIHwgdTI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdTAgPSAoKHUwICYgNykgPDwgMTgpIHwgKHUxIDw8IDEyKSB8ICh1MiA8PCA2KSB8IChoZWFwT3JBcnJheVtpZHgrK10gJiA2Myk7CiAgICAgIH0KICAgICAgaWYgKHUwIDwgNjU1MzYpIHsKICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh1MCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbGV0IGNoID0gdTAgLSA2NTUzNjsKICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiB8IChjaCA+PiAxMCksIDU2MzIwIHwgKGNoICYgMTAyMykpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gc3RyOwogIH0KICBmdW5jdGlvbiBVVEY4VG9TdHJpbmcocHRyLCBtYXhCeXRlc1RvUmVhZCkgewogICAgcmV0dXJuIHB0ciA/IFVURjhBcnJheVRvU3RyaW5nKEhFQVBVOCwgcHRyLCBtYXhCeXRlc1RvUmVhZCkgOiAiIjsKICB9CiAgZnVuY3Rpb24gc3RyaW5nVG9VVEY4QXJyYXkoc3RyLCBoZWFwLCBvdXRJZHgsIG1heEJ5dGVzVG9Xcml0ZSkgewogICAgaWYgKCEobWF4Qnl0ZXNUb1dyaXRlID4gMCkpIHJldHVybiAwOwogICAgbGV0IHN0YXJ0SWR4ID0gb3V0SWR4OwogICAgbGV0IGVuZElkeCA9IG91dElkeCArIG1heEJ5dGVzVG9Xcml0ZSAtIDE7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkgewogICAgICBsZXQgdSA9IHN0ci5jaGFyQ29kZUF0KGkpOwogICAgICBpZiAodSA+PSA1NTI5NiAmJiB1IDw9IDU3MzQzKSB7CiAgICAgICAgbGV0IHUxID0gc3RyLmNoYXJDb2RlQXQoKytpKTsKICAgICAgICB1ID0gKDY1NTM2ICsgKCh1ICYgMTAyMykgPDwgMTApKSB8ICh1MSAmIDEwMjMpOwogICAgICB9CiAgICAgIGlmICh1IDw9IDEyNykgewogICAgICAgIGlmIChvdXRJZHggPj0gZW5kSWR4KSBicmVhazsKICAgICAgICBoZWFwW291dElkeCsrXSA9IHU7CiAgICAgIH0gZWxzZSBpZiAodSA8PSAyMDQ3KSB7CiAgICAgICAgaWYgKG91dElkeCArIDEgPj0gZW5kSWR4KSBicmVhazsKICAgICAgICBoZWFwW291dElkeCsrXSA9IDE5MiB8ICh1ID4+IDYpOwogICAgICAgIGhlYXBbb3V0SWR4KytdID0gMTI4IHwgKHUgJiA2Myk7CiAgICAgIH0gZWxzZSBpZiAodSA8PSA2NTUzNSkgewogICAgICAgIGlmIChvdXRJZHggKyAyID49IGVuZElkeCkgYnJlYWs7CiAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAyMjQgfCAodSA+PiAxMik7CiAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAxMjggfCAoKHUgPj4gNikgJiA2Myk7CiAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAxMjggfCAodSAmIDYzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAob3V0SWR4ICsgMyA+PSBlbmRJZHgpIGJyZWFrOwogICAgICAgIGhlYXBbb3V0SWR4KytdID0gMjQwIHwgKHUgPj4gMTgpOwogICAgICAgIGhlYXBbb3V0SWR4KytdID0gMTI4IHwgKCh1ID4+IDEyKSAmIDYzKTsKICAgICAgICBoZWFwW291dElkeCsrXSA9IDEyOCB8ICgodSA+PiA2KSAmIDYzKTsKICAgICAgICBoZWFwW291dElkeCsrXSA9IDEyOCB8ICh1ICYgNjMpOwogICAgICB9CiAgICB9CiAgICBoZWFwW291dElkeF0gPSAwOwogICAgcmV0dXJuIG91dElkeCAtIHN0YXJ0SWR4OwogIH0KICBmdW5jdGlvbiBsZW5ndGhCeXRlc1VURjgoc3RyKSB7CiAgICBsZXQgbGVuID0gMDsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgICAgIGxldCBjID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgICAgIGlmIChjIDw9IDEyNykgewogICAgICAgIGxlbisrOwogICAgICB9IGVsc2UgaWYgKGMgPD0gMjA0NykgewogICAgICAgIGxlbiArPSAyOwogICAgICB9IGVsc2UgaWYgKGMgPj0gNTUyOTYgJiYgYyA8PSA1NzM0MykgewogICAgICAgIGxlbiArPSA0OwogICAgICAgICsraTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZW4gKz0gMzsKICAgICAgfQogICAgfQogICAgcmV0dXJuIGxlbjsKICB9CiAgbGV0IGJ1ZmZlciwgSEVBUDgsIEhFQVBVOCwgSEVBUDE2LCBIRUFQVTE2LCBIRUFQMzIsIEhFQVBVMzIsIEhFQVBGMzIsIEhFQVBGNjQ7CiAgZnVuY3Rpb24gdXBkYXRlR2xvYmFsQnVmZmVyQW5kVmlld3MoYnVmKSB7CiAgICBidWZmZXIgPSBidWY7CiAgICBNb2R1bGVbIkhFQVA4Il0gPSBIRUFQOCA9IG5ldyBJbnQ4QXJyYXkoYnVmKTsKICAgIE1vZHVsZVsiSEVBUDE2Il0gPSBIRUFQMTYgPSBuZXcgSW50MTZBcnJheShidWYpOwogICAgTW9kdWxlWyJIRUFQMzIiXSA9IEhFQVAzMiA9IG5ldyBJbnQzMkFycmF5KGJ1Zik7CiAgICBNb2R1bGVbIkhFQVBVOCJdID0gSEVBUFU4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTsKICAgIE1vZHVsZVsiSEVBUFUxNiJdID0gSEVBUFUxNiA9IG5ldyBVaW50MTZBcnJheShidWYpOwogICAgTW9kdWxlWyJIRUFQVTMyIl0gPSBIRUFQVTMyID0gbmV3IFVpbnQzMkFycmF5KGJ1Zik7CiAgICBNb2R1bGVbIkhFQVBGMzIiXSA9IEhFQVBGMzIgPSBuZXcgRmxvYXQzMkFycmF5KGJ1Zik7CiAgICBNb2R1bGVbIkhFQVBGNjQiXSA9IEhFQVBGNjQgPSBuZXcgRmxvYXQ2NEFycmF5KGJ1Zik7CiAgfQogIGxldCBJTklUSUFMX01FTU9SWSA9IE1vZHVsZVsiSU5JVElBTF9NRU1PUlkiXSB8fCAxNjc3NzIxNjsKICBsZXQgd2FzbVRhYmxlOwogIGxldCBfX0FUUFJFUlVOX18gPSBbXTsKICBsZXQgX19BVElOSVRfXyA9IFtdOwogIGxldCBfX0FUUE9TVFJVTl9fID0gW107CiAgbGV0IHJ1bnRpbWVJbml0aWFsaXplZCA9IGZhbHNlOwogIGZ1bmN0aW9uIGtlZXBSdW50aW1lQWxpdmUoKSB7CiAgICByZXR1cm4gbm9FeGl0UnVudGltZTsKICB9CiAgZnVuY3Rpb24gcHJlUnVuKCkgewogICAgaWYgKE1vZHVsZVsicHJlUnVuIl0pIHsKICAgICAgaWYgKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdID09PSAiZnVuY3Rpb24iKSBNb2R1bGVbInByZVJ1biJdID0gW01vZHVsZVsicHJlUnVuIl1dOwogICAgICB3aGlsZSAoTW9kdWxlWyJwcmVSdW4iXS5sZW5ndGgpIHsKICAgICAgICBhZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpOwogICAgICB9CiAgICB9CiAgICBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pOwogIH0KICBmdW5jdGlvbiBpbml0UnVudGltZSgpIHsKICAgIHJ1bnRpbWVJbml0aWFsaXplZCA9IHRydWU7CiAgICBpZiAoIU1vZHVsZVsibm9GU0luaXQiXSAmJiAhRlMuaW5pdC5pbml0aWFsaXplZCkgRlMuaW5pdCgpOwogICAgRlMuaWdub3JlUGVybWlzc2lvbnMgPSBmYWxzZTsKICAgIFRUWS5pbml0KCk7CiAgICBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKTsKICB9CiAgZnVuY3Rpb24gcG9zdFJ1bigpIHsKICAgIGlmIChNb2R1bGVbInBvc3RSdW4iXSkgewogICAgICBpZiAodHlwZW9mIE1vZHVsZVsicG9zdFJ1biJdID09PSAiZnVuY3Rpb24iKSBNb2R1bGVbInBvc3RSdW4iXSA9IFtNb2R1bGVbInBvc3RSdW4iXV07CiAgICAgIHdoaWxlIChNb2R1bGVbInBvc3RSdW4iXS5sZW5ndGgpIHsKICAgICAgICBhZGRPblBvc3RSdW4oTW9kdWxlWyJwb3N0UnVuIl0uc2hpZnQoKSk7CiAgICAgIH0KICAgIH0KICAgIGNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQT1NUUlVOX18pOwogIH0KICBmdW5jdGlvbiBhZGRPblByZVJ1bihjYikgewogICAgX19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpOwogIH0KICBmdW5jdGlvbiBhZGRPbkluaXQoY2IpIHsKICAgIF9fQVRJTklUX18udW5zaGlmdChjYik7CiAgfQogIGZ1bmN0aW9uIGFkZE9uUG9zdFJ1bihjYikgewogICAgX19BVFBPU1RSVU5fXy51bnNoaWZ0KGNiKTsKICB9CiAgbGV0IHJ1bkRlcGVuZGVuY2llcyA9IDA7CiAgbGV0IHJ1bkRlcGVuZGVuY3lXYXRjaGVyID0gbnVsbDsKICBsZXQgZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gbnVsbDsKICBmdW5jdGlvbiBnZXRVbmlxdWVSdW5EZXBlbmRlbmN5KGlkKSB7CiAgICByZXR1cm4gaWQ7CiAgfQogIGZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koaWQpIHsKICAgIHJ1bkRlcGVuZGVuY2llcysrOwogICAgaWYgKE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKSB7CiAgICAgIE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKHJ1bkRlcGVuZGVuY2llcyk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIHJlbW92ZVJ1bkRlcGVuZGVuY3koaWQpIHsKICAgIHJ1bkRlcGVuZGVuY2llcy0tOwogICAgaWYgKE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKSB7CiAgICAgIE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKHJ1bkRlcGVuZGVuY2llcyk7CiAgICB9CiAgICBpZiAocnVuRGVwZW5kZW5jaWVzID09IDApIHsKICAgICAgaWYgKHJ1bkRlcGVuZGVuY3lXYXRjaGVyICE9PSBudWxsKSB7CiAgICAgICAgY2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7CiAgICAgICAgcnVuRGVwZW5kZW5jeVdhdGNoZXIgPSBudWxsOwogICAgICB9CiAgICAgIGlmIChkZXBlbmRlbmNpZXNGdWxmaWxsZWQpIHsKICAgICAgICBsZXQgY2FsbGJhY2sgPSBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ7CiAgICAgICAgZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gbnVsbDsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CiAgfQogIGZ1bmN0aW9uIGFib3J0KHdoYXQpIHsKICAgIHsKICAgICAgaWYgKE1vZHVsZVsib25BYm9ydCJdKSB7CiAgICAgICAgTW9kdWxlWyJvbkFib3J0Il0od2hhdCk7CiAgICAgIH0KICAgIH0KICAgIHdoYXQgPSAiQWJvcnRlZCgiICsgd2hhdCArICIpIjsKICAgIGVycih3aGF0KTsKICAgIEFCT1JUID0gdHJ1ZTsKICAgIEVYSVRTVEFUVVMgPSAxOwogICAgd2hhdCArPSAiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7CiAgICBsZXQgZSA9IG5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3Iod2hhdCk7CiAgICB0aHJvdyBlOwogIH0KICBsZXQgZGF0YVVSSVByZWZpeCA9ICJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIjsKICBmdW5jdGlvbiBpc0RhdGFVUkkoZmlsZW5hbWUpIHsKICAgIHJldHVybiBmaWxlbmFtZS5zdGFydHNXaXRoKGRhdGFVUklQcmVmaXgpOwogIH0KICBmdW5jdGlvbiBpc0ZpbGVVUkkoZmlsZW5hbWUpIHsKICAgIHJldHVybiBmaWxlbmFtZS5zdGFydHNXaXRoKCJmaWxlOi8vIik7CiAgfQogIGxldCB3YXNtQmluYXJ5RmlsZTsKICB3YXNtQmluYXJ5RmlsZSA9ICJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCOXdad1lBRi9BWDlnQW45L0FYOWdBbjkvQUdBQmZ3QmdBMzkvZndGL1lBTi9mMzhBWUFSL2YzOS9BR0FFZjM5L2Z3Ri9ZQVYvZjM5L2Z3QmdCWDkvZjM5L0FYOWdCbjkvZjM5L2Z3QmdCbjkvZjM5L2Z3Ri9ZQWgvZjM5L2YzOS9md0YvWUFkL2YzOS9mMzkvQVg5Z0IzOS9mMzkvZjM4QVlBRjlBWDFnQ0g5L2YzOS9mMzkvQUdBQUFHQUZmMzkvZlgwQVlBRjhBWHhnQW45L0FYMWdCWDkrZm41K0FHQUNmMzhCZm1BQmZ3RjlZQVYvZjM5L2ZnRi9ZQXAvZjM5L2YzOS9mMzkvQVg5Z0FYMEJmMkFKZjM5L2YzOS9mMzkvQVg5Z0MzOS9mMzkvZjM5L2YzOS9BWDlnQTM5L2ZRQmdBbjkvQVh4Z0FBRi9ZQVYvZjM5OGZBQmdBbjkrQUdBR2YzOS9mMzUvQVg5Z0RIOS9mMzkvZjM5L2YzOS9md0YvWUFaL2YzMTlmWDBBWUFWL2YzOS9mQUYvWUFGL0FYNWdCSDkrZm44QVlBbC9mMzkvZjM5L2YzOEFZQXAvZjM5L2YzOS9mMzkvQUdBRmYzOStmMzhBWUFOL2ZuOEJmbUFDZlgwQmZXQUZmMzkvZjMwQVlBUi9mMzkrQUdBQmZBRjlZQVYvZjM5K2ZnQmdBbjk4QUdBQmZBRi9ZQUo4ZndGOFlBUi9mWDk5QUdBTWYzOS9mWDE5ZlgxOWZYMTlBR0FEZkh4L0FYeGdBbng4QVh4Z0IzOS9mMzE5ZlgwQVlBUi9mMzk5QUdBQ2YzMEFZQU4vZjM4QmZtQURmMzk4QUdBR2YzOThmSHg4QUdBRGYzOStBR0FQZjM5L2YzOS9mMzkvZjM5L2YzOS9BR0FFZjM5L2Z3RitZQUo5ZndGOVlBcC9mMzE5ZlgxOWZYMTlBR0FJZjM5OWZYMTlmWDBBWUFkL2YzOS9mMzUrQVg5Z0JuOS9mMzkrZmdGL1lBRi9BWHhnQlg5L2YzOThBR0FEZjMxL0FHQURmMzkrQVg5Z0FuOStBWDlnQTM5OGZ3QmdCSDUrZm40QmYyQUVmM3gvZkFCZ0JIOStmMzRBWUFOL2ZuOEFZQUorZndGL1lBSjhmd0Y5WUF4L2YzOThmSHg4Zkh4OGZId0FZQWQvZjM5OGZIeDhBR0FHZjM5L2YzNS9BR0FVZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM4QmYyQUJmZ0YvWUFSL2YzOThBR0FFZjM5L2ZnRi9ZQVIvZjM5K0FYNWdBbjEvQVg5Z0FueC9BWDlnQW41K0FYeGdCbjkvZjM5OGZ3Ri9ZQUovZkFGL1lBSi9mUUYvWUFSL2YzNS9BR0FFZjM5OWZ3QmdCWDk5ZjMxL0FHQUNmWDBCZjJBRGZYOTlBWDlnQ0g5L2YzOTlmWDkrQUdBRGYzOS9BWHhnQTM5L2Z3RjlZQUovZlFGOVlBcC9mM3g4Zkh4OGZIeDhBR0FDZm40QmZXQURmbjUrQVg5Z0FBRjlZQWgvZjN4OGZIeDhmQUJnQVh3QVlBQUJmQUpWRGdGaEFXRUFCZ0ZoQVdJQUVRRmhBV01BQ1FGaEFXUUFBd0ZoQVdVQUJRRmhBV1lBQUFGaEFXY0FBQUZoQVdnQUJ3RmhBV2tBQUFGaEFXb0FCd0ZoQVdzQUNRRmhBV3dBQVFGaEFXMEFBUUZoQVc0QUFnT1RLNUVyQVFBR0F3RURBUUFEQ1FNQkFBRURBQU1EQVFFQkF3SUJCQVVDQUFVQUFBVUNBUUFEQUFFWEJRSUZBUUlFQUVZQUFSY0ZBUUlDQXdFUEFBRUFBQTRBQVFVREFRTUFBZ0VEQVFBQ0FBQUJBQVVEQWdBQUFDWURCUUFBQVFRQ0xRSUFCaEVCQWkxSEFBSUNBUUVFQUFBQkJBSUFBQUFGQUFBRUJRQUdBUTREQWdRQkJBTUJCUUlCQXdVQkFRRUJBQUVCQWdFSkFRSUJBZ0FCQlFNQ0F3RUFCZ0VEQVFZQUFnQUFBUUFBQlFFQUFnRUFBQjhCQWdJRkFSVUJBQUVKQUFzQ0FBSUJBUUlFQkFVRkFRTVNFaUFBQlFFQ0FBVUFCQUFCQVFRREFRQUZBUUFBQVFFQkNRQUVBUXNBQWdVQUVRVXVBUW9GQWdrQkFRRUNBUWNCQVFNQ0F3WUFBUU1BQVFFREJBRUVBZ0lBQXdJQkJBRUFBUUFEQVFnSEFBRURBUUlFQkFRVkFRQUZBUUVCQXdVRUFBQUJCQVVCQkFVSEFBUUFCQVFHQkFFSUp3RUVCd0FDQVFBQUJRSUZBUUVCQXdNSEFnSUNBUUlCQVFFQUFBQUFBd1VCQVFJQUFBRUFBUUVEQXdBR0FBQUZBQUlFQkFFQkFRVUFBQUlEQUFFVkJBRUZBUUlDQUFBQkFnUUZBQVVEQXdNQUFRRUJCQUlKQ1FFQUFnc0NCQUFDQXdFQ0F3RUVBZ1FBQndNQkVRUUFCQU1IQlFVQkFBSUFBd01CQkFBQUFBRUFBUU1CQVFBQUFBQUVFaElnQWdBQ0FnSUJBUU1DQVFFRUFBQUJCQVFBQlFBQUFBQUNBQUVEQUFFQUFBRUFBUUlBQUVnU0VpQUJJUzh2QndJREJ3RUJBZ0VBQVFJQkFBRURCd1VCQUFJQ0FRTkpBUVVBQWdNQ0FnQUFBZ0FFQVFJRkFRTUZBd0lGQUFBQUFRQUJDUWtIQkFFQUFBSUdCVW93TVRJRkNRc0RBQU1FQUFnQ0FBRUNCUU1IQUFZSEFRSUhBUUlDQXdVQkJBSUhCd0VIQXdNRkJnSUNBUVFCQlFJR0NRSUJEQXdHQUFBQUFETUhBUVFGQWdBQkF3RUJBQUlDQWdFQkFnRUJBd2NFQUFJQ0FnUUFEQUFBQWdNQ0FnSUNBd1VCQkFRQkJRRUZBZ0FBQWdNQUFnUUZBUUFDQWdJQkFBQUdBZ01BQkFFRkFBRUVCUUlKQVFBREFnVUFDUVVCQlFBQUFRQURCUU1BRFFFTkFRY0JCQVVCQVFJQkF3RUhBZ01HQVFBRkFBVUFBUVVDQWdFQ0FnQUxDd0FGQlFFQUFFc0JEQVVFSHdNQU1Bc0FBZ0FBQUFJQ0FBTUZJUUFuVEFFQUFRTUFBUUlCQUFFQ0JBY0JCZ1FDQlFBQUJRSURBQWdBQUFBQUF3RUlCQUlBQWdFRkFnVUJBd0FFQVFFQUFBQUJBd2NCQUFFQkFRQUJBZ0VCQUFNQUFBQUNBUUVGQlFJREF3STBBVFJOVGdJQVR3RUhJZ1FISVFFQ0JBTUJBZ1FGQVFBQUdRRUFHUUVCQUFJQUJBQUNBZ0FBQUFFRVVGRUNEeG9IQVFFQkFRUUhBUUFCQUFjSkJ3SUZBZ0VES0FBQkFBTUNBUTBBQkFJQ0FRVUlBd0FCQkFBTkJBQURBUUFBQUFVQUFBQUhBd0VBQVFBQkJRRUZBZ2NBQkFFRUF3RUNBZ0VIQkFBSEFRTUFBQVFDQVFFSUJRTURBQUFCQlFFQkF3RUZBd0FBQXdVQ0FBQUJBZ0VGQXdBMU5WSUhCQTRIQ3dRRUFCd01FQWtDQlFFRkF3RVBFelkzRHhNRUFCTUlBZ0VDQndRRUJBQUlBUUVIQVFJSkFRTUFBZ0FBQUFBQUF3Y0RBd1FCQXdjQkF3TUJCZ0lEQUFBQUFBRUFBQUVEQWdBQUNRRUFBQUFLQUFZRkFRUUZCQWtJQ2dvRUFRWUpHeHNDQXdZR0FBQUFBQUVDQWdJSEF3TUVCd0lDQVFJREFnTUJCQUlMQXdNQkF3QUFBd0VCQVFBQkJRWUNBZ0VBQWdFQ0FRTUJBUUFCQmdBQUF3Y0FBUUFDQVFJQ0FRTURBZ1FDQWdNSUFnSUVBZ0lRQXdJQUJnSUFPRGhUQXdNQUFBQUJBeG9hQlF3TEJ3UlVDZ1lIQndVRUJ3UUVDZ1VCQVFVR0JoSURBQUFBQWdJQUNnSUNBQUFFQmdRQ0FBRU5BZ0VCRFFBRUFBQUFBQUFBQUFBQUJ3RU1BQUFBQUFJQUFRb0FCd2NURHc4QUFnRUhCUUVBQlFBQUJBRlZBUVFIQUFFQkFRTUJBUXdIQ0FFQkFRQU1DUUVIQkFNQ0FnQUFBd1VCQVFVQkFnRUhBZ1lDQUFBQ0FRQUJBZ1VDQmlJREJBSUVCZ1VDQUFNQkJBQUZBd0lGQmdJQ0F3QURCUUlJQVEwSEFRSUJBZ1VFQWdJRUNRUUhCd1VFQkFRQkFRQUVBQUVFQlFVREFRVUJBd01IQUFBREFRSUJCd0FFQndFRUFnd0NCUUVDQXdJREFRa0hBQUVCQUFNQUNRRUVCd2NDQkFFRUFBRUFBUUVCRFFJRUFRQURBZ01CQUFBREF3QUhBQUFCQWdBSEFRQUFBQUFCQlFJQUFRQUJBd0FDQWdFREF3QUZCQVVGQkFZQkFnVUZBZ0VCQlFzQUFBRUFBZ1VGQlFFQkF3QUdBQUFDQXdFRkFRSURBQTBDQWdZQ0FRRUNBZ2NDRFFVQ0JRSURBZ1VCQVFZQ0NRRUZWZ0FGQlRrNVZ6b0FDZ1lHQVFRTERRUUdDZ1pZQlFFY0NBY0dBZ2tFQkFFTEFBNEJCUVVHQlFZQkFSRUxBQXNCQUFBQUFBQUFBQUFTSUFBcEFBVVFDZ01KQkFBRUNnSUFBZ0FBQkNNSUJDTUlPd0FBQUFBS0NBQUNBZ01BQUFjQ0JBb0RBd01CTVRvREFRTWhCQVVKQndVQldRWUFBQVFBQ0FReldsc1REeE5jRlFRUER4TVhGeE1DQWdjQkJBRUJBZ0lGQVFFQ0NRUUVYUUVFQUFJSkJ3RUFCUUFBQUFJQ0RnVUdCZ0VCQmdzSkJnTUNBZ0lGQVFJRkF3SUlBZ0lCQVFRTEFRTUxBd0lIQVFFREFnSUNBZ01EQUFJQ0FBTUFBQUFBQVFJREF3WUpDUWNGQkFRQUFRRUJBUWtDQVFFQ0F3QUNBQUVDQUFJQUN3QUNBZ0lDQWdZQkFnRUhBd0lHQ0NZWEFnSUJBQVFGQVFFQkFRTUFBQUFEQWdNRkFnRUNCd01BQXdVREFnSUFBd0lDQWdJQ0FnSUNBZ0FEQXdZQ0FnSUhCUUVIQVFZRUFRY0JBd1VDQlFBR0FRTUFFQkFPRUFZSEFSY0VBZ2NCQUFRR0JnSURCQVFCQUFVQ0FnRUhBUU1DQ1FFQkFnY0NBQUFBQUFBQ0JBY0pBUVFIQVFRQkJ3UUVBUUVBQWdJRUFnSUFDUUlEQWdVREFBQUFDUUlDQWdNQkFRTUVCd2NBQUFVQkJnSUFBQXdDQ0FNQ0FnSUNBZ0lDQkFVQ0FRSUNBZ0lBQlFFQUF4c2JBQTBDQWdJQ0FRSURCQUVKQUFJRkF3SUNBZ0lDQlFFQkFBSURCd0VBQmdNQ0FBRUFCUUVDQWdJREF3SURBZ01EQWdJREF3RURBZ1FCQWdNQ0FnQUZBZ01DQWdBQUF3SUNBQUFDQWd3Q0FnWUNBZ0VBQlFZQUJRQUFBQUVIQXdFRkRRY05BZ0FBQndVQkJRVUJBd0VDQWdJREF3SURBZ0FDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBQVlCQWdNQ0FnSUFDd0VBRFFZT0F3SUNBUUlGQWdRSEVRa0FBUUFBQWdRREF3QUFBQUlEQXdNREhSMDhBQUFFQkFBRUN3SUNBZ0FFQkFBRUFBSUVYZ0VBQkFvRkFBZGZDZ29GQ2dVS0JRNEdFQXNJQ2dVS0JRb0ZEZ2dPQmdvRkNnVUtCUW9GRGdZYUdoMEtDZ1VPQ0EwT0JnNEdDZ1VLQlFvR0NnVU9CZ0lGQ2dVUUJBZ0tCUW9GQ2dVS0JRb0ZDZ1VDQ2dVa0pEMEtCUW9GQ2dVS0JRRUtCUkFJQ2dVT0Jnb0ZDZ1VLQlFJS0JRb0ZDZ1VGQ2dVT0JnNEdBQTRHRGdZRUFRRUJCUUlDUGdRT0JDTUdDQWdDQmdVRkJBRUZCUVFjQlFRTUJRY05BUVpnQkEwV0JRZ0dCZzRHQmlNR0JtRUlZZ3NMQVFFSEJ5SUxJZ3NPQVdOa0JBc0JDUVlIQncxbENRY0xEaGtNR1FrQ0FnWUdGQUVPQ0FZQkxnWVFCQVVFRGdFQkFBWUdBQUFBQUFVT0FBQUdBQU1BQlFFS0F3TUFBQUFBQUFBQUFBRUNCQVFBQVFvTUNRd01DQWtNREFBREFBTURBUkVmQXdNRUFRSUJBUUVCQVFFQkFRRUJBUUVCQVFJQ0FBQURDQVEvS1FRRVB5a0FBUUFBQWh3QkFBQUZBaHdDQUFJQ0NnSUNBQUlDQWdJQ0Nnb0lDZ1VLQ0FvS0NnNE9CUTRJQlE0S0JRc0NDZ1FHQldZRVowQUhDd2RBT3djQkJBZ0hBQUVBQUFRRUFBRUJCRDRCQXdFQkFBQUFBd0FEQlFNRkFnTU1BUUVGQ2dJQUFBRURBQUFESlFrQkF3QUNBUUFBQUFBQkFRb0RBQU1BQmlvZEJBQUFIUUlFQVFJQlBBRUZBQWtQRHpZV0JpY1ZBZzhQRHdBQUxFRUFRbWdQTERjUEtBa1BMRUlQRHc4UGFXcERGUTVyRlFCREQyeEJEMjF1YnlRQUFBQUFBQUFBQUFvQkNBTUJBU1FCQVFJOUJRRURCUUVEQWdjREFnY0JBZ0FBQWdZQ0JBQUJCUUFDQmdNQkFRRUJBQUFBQUFBQ0FBQUVBQUFFQUFFSkJBUUJBUVVKQVFVQUJBUUFCQUFFQlFFQkFnVUhBUVlDQXdjRkFBVUJBZ0VCQkFRQ0NnRUJBUUVCQVFBQUFBQUZBQUFDQUFBQUFBQUFBQUVFQUFFQ0FBRUFBQUVKQ1FJQUFBQUFBZ0FDQWdJTEFnRUpDUWtKQ1FrSkNRa0pDUWtKQ1FJSkNRa0pDUWtKQ1FrSkNRa0pCd2tKQ1FrSkNRa0pDUVVEQXdVRUJRVUFBZ0FEQXdFREJnZ0JBZ1VCQlFFRkFnRUNBQUFBQlFVR0FnTURBZ1VFRGdVRkFnTUNBd2NFQUFJQkJ3QUVBQVlEQUFFRkFBQUFBQWNKQkFRRkJRRUJCQVFiQ1FRQ0JBUUNBQUFDQUFFQUFRQUFCQWdDQlFVQ0FnSUFBd0lISHdnREFBSUNBUWNHQUFBQ0FnTURBZ0lFQkFBQ0FnQUZCd1FCQndFQ0FnSUNBZ0lGQUFVR0FBUUFCQWtDQVFVRkJBRUJBUUVBQVFBQUFBQUNBUUFNQUFFQkFnTURCUUlBQWdFRkF3SUJBd0lHQUFJQ0FnTUNBd0lDQXdZQ0FBUUNBZ0FGQlFNQUFnRUZBd01DQmdNREF3QUJBQVVDQUFrQUJBVUNCUU1DQWdNRkF3TUNBd0FGQXdNQ0FnVURNaG9BQXdFREFRRURBd0lBQUFFQkF3RUZBZ0lvQlFRR0F3SUNBd0lCQXdNQ0F3UURBd0lEQWdNQ0F3SUdCZ1VCQVFJQkJBWUJBUUVGQkFBQUJRRUNBZ0lCQlFjRUFnQUFBZ01BQUEwTEFBSUlBZ0FJQ0FZQUJRSUFBZ2NBRFFRSUFnUUNCQUlFQkFBREF3TUhCd0FGQVFFRUJBVUVBUUlIQWdRSEJBa0JDZ1FKQndZQ0FRUUFDUUFCQkFFRUJ3a0hCd0lFQVFjQkF3WUFBZ0lCQWdFQ0FnVUVBUUVEQkFJQ0FRQUNBQVFCQUFRQkFBUUJBUUlIQVFJREF3Y0FCQU1CQlFJQ0FRVUNBQUFIQUFNQ0FBQURBQUlGQVFVQkJnVUZCUUlDQWdZQkJnVUdCZ0VBQlFRQ0NRRURBUUVBQlFJRUJ3UUpCZ01BQ3drREJnNEJCQUFIQkFFREFBc0ZBUUlFQVFFQkF3TUNBUUVMQVFNQ0FnSUdCZ0lBQmdVQUNRc0hBd0lEQmdBQkF3TUJBd2NDQWdNQ0FnSURBZ0lDQlFZREJ3Y0pCd0VIQWdRRUFRRUJCQUlDQWdNREFBQUNBUUFDQUFJQUFnQUFBQUFBQUFBQ0FRSUNBZ0FBQkFNQ0FRQUNBZ0FDQUFBQUFRRUJBQUFCQVFFQUFBSURBQUlGQVFJQ0FnRUNBZ0lCQUFRRkFnSUJCUUFFQmdBQ0F3TURBd3dBQUFNRERRRUNBZ0lEQVFZREFBY0FBQnNEQVFFQkFBQUFEQU1BQWdBQkFRTUNBZ0lDQUFJRkFnSUNBQU1CQWdZRkFnQURBd1lFQmdFRUF3VUJEQUVHQmdRRUJBQUhBQUFDQXdNTkJnc0VDUU1BQVFNRkFBQUFDd0VBQXdBSEFBQURBZ1VGQUFJQUFBQUFCZ0lEQWdBREF3RUNBZ0lDQXdVQ0FnTUNBd0lGQWdJR0FBQUhCZ0lCQXdNREF3TURBZ0lDQXdNQ0F3SUNBZ0lCQXdNRkFRRUZBZ0lCQWdJQ0FBSUZCUUVDQlFJRUJRQUZBQUFEQUFJQ0FnSUNBZ0lEQUFRR0FBSUNBUUVERmhZQ0JBQUFBZ1FGQUFBQUFnSUNBd0lDQlFVQUF3VUZBQUlDQmdRSkFnWUJBZ01BQUFZQUFBQUFBQUFaQXdFREJRVURBQUFBQWdNbUJnSUdBQU1IQWdBREJRRUFBUUVBQVFBQkFBQUNCZ1FCQXdRQkJRRUFBUUFCQUFNR0JnY0pBUU1BQUFFQ0FnWUJBUVVEQVFZQkJ3QUZEUXNNQkFFSkF3TUhCUUFEQlFJQ0FBQUFBZ0lBQmdVRkFnSUNBZ01DQmdBRUFBQUNBZ1VGRFFNREJRRUNBZ0lDQXdJQkFnVUNBd01EQXdNQ0FRTUVCUUlGQXdNRUNRa0VDUUFMQVFzTkFRSUxDUXNKQWdrSkNRd0pDUXdCREFBWkN3QUFBUUVEQUFJRUF3WUNBZ0lHQVFNSkF3SUNBZ0VDQkFjSkFBUU5CQVVFQlFRRkJBVUVCUVFGQkFVRUJRUUZBUVFGQkFVRUJRUUZCQVVFQlFRRkJBVUVCQVFGQkFVR0JRUU9FQW9LQXdFREZCUVVBUUlBQVFJQUFRSUJBZ0VBRkJRVUFSNGVIZ0VCQWdFQ0FRQUFBZ0VBQVFnSUNBZ0lDQWdJQ0FFSUNBZ0lDQWdJQ0FnSUFRZ0lBQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0JDQWdJQ0FJSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdEQXdBQUFBQUtDZ2dJQmdZR0NBb0VFUWdHQ1FNR0NRZ0RBd01EQXdRQkJBRUFBd2tJQkFjQkJBRUVBUWNIQndRSUFBTURDUVFIQkFFRUFRTUpCQWNFQVFRQkJ3Y0hCQWtDQWdJQ0F3TURBd0FEQUFnREFBTUFBQUFBQXdNSUF3TUFBd0FEQUFNQUFBQUFDQUFKQ0FBSkRBd0RBQW9LQzBRTFJBME5EUTBJRFEwTUN3c0xDd3NNQ0FzTEN3c0xDVVVsR0FrWUNRa0pSU1VZQ1JnSkNRc0xDd3NMQ3dzSUN3c0xDd3NMQ3dzTENBc0RDQXNFQmdrSUJBWUpDQWdFQVFBQUFnRUVBZ0VBQUFJQkJBZ0NBd01BQXdBREFBWURLZ0VCQUFRQUJBTUFBd0FFQUFRREF3QXJCQVFyQkFFQ0FBRUNBQVFDQUFRQ0FBUUNBQU1FQWdBREJBSUFBd1FDQUFNRUFnQURCQUlBQXdRQ0FBTUVBZ0FEQWdJQUFnQUJEUVFEQXdJQUF3RUNBQUVDQUFJQUFnQUNBZ0FCQWdBQkFnQUJBZ0FCQWdBQkFnQUJBZ0FCQWdBRkJnRUNBQVFDQUFNRUFnQURCQUlBQXdRQ0FBTUVBZ0FEQWdBREFnRUFBd1FDQUFNRUFnQUVBZ0FFQWdBSEFnQUVBZ0FFQWdFQUJBSUFBd0lDQUFjQ0FBUUNBQWNDQUFRQ0FBSUFBZ0FCQWdBQkFnQUNBQUVDQUFJQUFnQUNBZ0FCQWdBQkFnQUJBZ0FCQWdBSEFnQUVBZ0FCQWdBQkFnQUJBZ0FGQWdBQ0FBSUFBZ0FDQUFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBZ0FEQWdBREFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRTUNBQUVDQUFJQUF3SUFBd0lBQXdJQUF3SUFBd0lBQXdJQUFnQUNBQUlBQWdBQ0FBTUNBQUlBQWdBQ0FBTUJBZ0FCQWdBQ0FBTUNBQU1DQUFJQUFRSUFBUUlBQVFJQUFRSUFBUUlBQVFJQUFRSUFBUUVDQUFFREF3SUFBd0lBQWdBQ0FBSUFBd0lBQXdJQUF3SUFBd3dEQkFJQUFnQUJBUUlDQUFJQUFRSUFBZ0FDQUFFQ0FBSUFBZ0FDQUFFQ0FBSUFBZ0FCQWdBQkFnQUJBZ0FDQUFFQ0FBSUFBZ0FGQWdBQkJRSUFBUTBJQWdBREF3TUFBd01EQkFRQ0JBSUVBZ1FFQWdRQ0JBUUNCQVFDQkFJRUJBSUVBZ1FFQWdRRUJBSUVCQUlFQUFFQ0FnQUNCQUlFQWdRQ0JBSUVBZ1FDQkFJRUFnTUVBZ1FFQUFFQkFnQUFBUUlDQUFRQUFRSUFBQUVDQUFBQUFRSUFBQUVDQUFBQUFRSUNBQUFBQUFFQ0FnQUJBQUVGQWdBQUFRUUJBZ0FHQUFFQkFnQUJBQUFBQUFBQUFBQUFBQU1BQVFJQkFRMEFBUUFCQWdBQUFRRURBZ0FEQlFNREFBQUFBUUVEQXdNREJBUUVBZ0FCQWdBQ0FnQURBd01EQXdnQ0FBRUJBZ01EQWdJQUFnQUNBZ0FCQWdNQ0FBTUJBd0lBQWdJQUFnSUFBZ0lBQVFJQUFnSUFBZ0FDQUFFQ0FBTUNBZ0FDQWdBQ0FBSUNBQUVCQXdJQ0FnSUNBZ0lDQWdJQ0FnTUJBUUVCQVFFQkFRRUJBUUVCQUFJQUFBSUFBQUlBQVFJQUFnQUNBQUlBQ0FFQ0NBRUNBQUVDQUFFQ0FBZ0JBZ0FCQWdBQkFnQUNBQWdCQWdBQ0FBZ0JBZ0FDQUFJQUNBZ0RBZ0FCQVFFQUFBSUJBUUVCQWdBQUFRRUNBUUVDQVFFQ0FRRUNBUUVCQndFQ0FRRUFBZ0VCQVFFQkFRSUJBUUlCQVFJQkFRSUJBUUVCQUFBQ0FRRUNBUUVDQVFFQUFnRUJBZ0VCQWdFREF3TURBQUFEQXdNREF3TUJBZ0VCQWdFQkFnRUZBUUVXRmdJQkF3SUJBd0VCQXdFQkF3VUZCUVVGQlFVRkJRVUZBUU1CQVFJQkFnSUhBUUVCQVFJQkFRSUJBZ0VDQVFJQkFnRUFBUUFCQUFFQkFRTUJBd0lDQUFJQ0FBSUNBQUVDQWdBQ0FRVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUVCUVFGQkFVRUJRUUZCQVVFQlFRRkJBVUVCUVFGQkFVRkJRUUZCQVVFQlFRRkJBVUVCUVFGQkFFRkJBVUVCUVFGQkFVREJBVUVCUVFGQkFVSEJBVUVCUVFGQkFVRUJRUUZCQVVFQlFRRkJBVUVCUVFGQkFVRUJRUUZCQVVFQlFRRkVRUUhBWEFCMmh2YUd3VUhBUUdBQW9DQUFnWUpBWDhCUWZESzRBSUxCeVlJQVc4Q0FBRndBSk1SQVhFQW5pc0JjZ0NnRmdGekFRQUJkQURnQVFGMUFCOEJkZ0RaSUFuQkxRRUFRUUVMMlJ2VERDeVFDNU1vNXljc1JPUWdMRVJFTEVTL0YrVWx5Q1gxSkN3VHJTQ3lJRVJFdWd4RVJJZ0lod2lRSUpNZ1JDd1RoU0FzUkN3VCt4OUVMQlB3SDBTb0Vka2YyQjlFTEJPNUgwU2tIL0FxNWlwRUxCT3BLa1FzRTZRcVJDd1RsaXBFOGg3M0tmWXBSTW9lNmlucEtVUXNFK2dwUktjZTV5bm1LVVFzRStVcFJFUkVnQjdrS2VNcFJNc2Q0U25nS1VRc1JFUkVFNkFvUkN3VG55aEVMRVJFc2hucUorWW5SQ3dUTEVUVko5UW4weWNUdmhqUEorVUR6U2VwR013bnl5ZktKODRua2hoRWlBaUhDTGNudkNkRUxCTzFKN1luUkN4RVJDd1RxQ2RFTEJQbEE1WW5rQ2VQSjRrbmdTZWZKNUlZUkk0RTZDWXNFOUFqUkN3VHVDTkVFK1VEb0FMOUE3d1J2Qkg2SC9rZitCOUVFK1VEb0FMOUE3Y1J0eEgySC9VZjlCOUVFK1VEb0FMOUE5QUowQW0xRWZNZjhoOUVFK1VEb0FMOUE4OEp6d215RWZFZnNSRkU3eC91SCswZm9BTHJCdXdmNngvcUgra2ZFK1VEb0FMOUE2d1JyQkhvSCtjZjVoOUVFK1VEb0FMOUE5QUowQW0xRWVVZjVCOUVFK1VEb0FMOUE4OEp6d215RWVNZnNSRkVMQlBpSCtFZk1SUGdIeFBmSDk0Zk1SUGRIOXdmMngvYUg1MFIxeC9XSDlVZjFCL1RIeXdUMGgvUkh5d1QwQi9QSHhQT0g4MGZFOHdmZ2dZVHl4K0JCaFBLSDhrZkU4Z2Z4eDhUeGgvRkh4UEVIOE1mRThJZndSOFR3QisvSHhPK0g3MGZFN3dmdXg4VHVoKzRIeE8zSDdZZkU3VWZ0QjhUc3greUh4T3hIN0FmRTY4ZnJoOFRyUitzSHhPckg2b2ZFNmtmcUI4VHB4K2RLeE9jSzVzckU1b3JtU3NUbUN1WEt4T1dLNVVyRTVRcmt5c1RraXVSS3hPUUs0OHJFNDRyalNzVGpDdUxLeE9LSzRrckU0Z3JoeXNUaGl1Rkt4T0VLNE1yRTRJcmdTc1RnQ3YvS2hQK0t2MHFFL3dxK3lvVCtpcjRLaFAzS3ZZcUUvVXE5Q29UOHlyeUtoUHhLdThxRSs0cTdTb1Q3Q3JyS2hQcUt1a3FFK2dxNXlvVDVTcmtLaFBqS3VJcUUrRXE0Q29UM3lyZUtoUGRLdHdxRTlzcTJpb1QyU3JZS2hQWEt0WXFFNkVmMVNvVG9SL1VLaFBUS3RJcUU5RXEwQ29UenlyT0toUE5Lc3dxRThzcXlpb1R5U3JJS2hQSEtzWXFFOFVxeENvVHd5ckNLaFBCS3NBcUU3OHF2aW9UdlNxOEtoTzdLcm9xRTdrcXVDb1R0eXEyS2hPMUtyUXFFN01xc2lvVHNTcXdLaE92S3E0cUU2MHFyQ29UcXlxcUtpd1RvQUtvS2xKU29BS1FJbzhpaXlLeUZJWWlueUxCSWI0aHNTR25JWU1pc2hUU0lld1R5Qk9FSWM0Z3pTQ2ZJSTRnalNESklNZ2d4eURHSU1VZ3hDRERJTUlnd0NEQklMOGd2aUM5SUx3Z3V5QzZJTGtndHlDMUlMTWdzU0N3SUs0Z3JDQ3JJS29ncVNDb0lLY2dwaUNsSUtRZ295Q2lJS0Vnb0NDZUlKY2cvQitXSUpJZ2tTQ1BJSXdnaXlDS0lJa2doeUNJSUlZZ2hDQ0NJTndoK1NHYkZNd2crQ0RySU9VZzB5RFNJTkVneXlES0lMZ2d0aUMwSUs4Z25TQ2NJSnNnbWlDWklKZ2dsU0NVSUlNZ2dTQ0FJUDhmL2gvOUg5QWd6eUFzRTZjcXBpb3hFNlVxRTZNcW9pb3hFNkVxRTZBcW55b3hFNTRxRTUwcW5Db3hFNXNxaXgrYUtwa3FSSW9mbUNxWEtrUXNFNVVxUklnSWh3aVRLcFFxUklnSWh3aVJLcElxUklnSWh3aVBLcEFxUkN3VGpTcU9La1FzRTRzcWpDcEVMQk9KS29vcVJDd1RoeXFJS2tRc0U0VXFoaXBFTEJPRUt2MGVSQ3dUZ2lxREtrUXNFNEVxUkN4RVJDd1Q5eDVFTEJPQUtrUXNFL1FlUkN3VC95bEVneEZFL1NsRUxCUDdLZndwUkN3VCtTbjZLVVFzRS9ncFJQVXAxUUxWQXRVQzFRTFZBdFVDMVFMVkF0VUM5Q256S2ZJcDhTbndLZThwN2ludEtld3A2eW5pQXVJcDRnTGZLZUlDNGdMaUF1SUM0Z0xpQXVJQzRnTGlBcmdkdHgzZUtlc0c2d2F2SGE4ZHVCMjNIZDBwb0FMY0tkc3AyaW5WQXRVQzFRTFZBdFVDMVFMVkF0VUMxUUlzRXhNVEV4TVRFeE1URXhNVG9BTHJCdGtwNndickJzd2N5eHpYS2RncFJDd1QxaW5WS2RRcExCUFRLZElwMFNrc1JFU2RCZUFFblFYZ0JKMEY0QVRvQjZJRW9nU2lCSjBGNEFTaUJJQVExUXVUQ2RRTEV5d1QxUXNzRTRnYzBDa3NFeE1UblFYZ0JLSUVMQk1UaHh6UEtkUUxuUVhnQktJRUxCTVRMQk1UblFYZ0JKMEY0QVNpQktJRUxCTVRMQk1zRTRBY3ppa1RFeFAvRzgwcEV4UFNDOHdwNEFRVHl5bktLZk1iaHltRUtZVXBoaW1ES2NrcDhodk5Cc2dwdVF2SEtmRWJ4aW53RzhVcExCT2lCS0lFRXl3VEU4MEx6Z3YwRDg0TDlBL09DL1FQemdzc0V4UHhEL0VQOFE4VGdCRFZDOVFMZ0JEVkM5UUxFeE9kQmVBRW9nUXNFOFFwd3lsU1VzSXBMRVFzRThFcHdDbS9LVVJFUkJPK0tiMHB2Q21wR0xzcFJFUXNFN29wdVNtNEtTd1R0eW0yS2JVcExFUXNFMFJFTEJPMEtiTXBzaW14S2JBcFJDd1RyeW5oRC9FRDhRT3VLVVFzRTYwcHJDbXJLU3hFTEJPcUtha3BxQ2xFTEJPbkthWXBwU2xFTEJPa0thTXB4UXZGQzZJcFJDd1RvU25ERy9FRDhRT2dLVVFzRTU4cHdSdnhBL0VEbmlsRUxCT2RLWndwbXltNkc1b3BSQ3dUbVNtWUtaY3BSQk1zRTVVcHVCdVVLVVFzRTVNcGtpbVJLVVFzRTVBcGp5bU9LVVFzRTQwcGpDbUxLVVFzRTRvcGlTbUlLVVR6Ry9JYlJCTkVSRVJFTEJPQ0thb2I4UVB4QTRFcFJFUXNFNEFwL3lqK0tQMG8vQ2hFTEJQN0tOY1AraWhFTEVRc0Uva28rQ2d4RThnR3hnLzNLUFlvUkN3VDlTZ1Q5Q2p6S0RFVC9Sb1Q4aWp4S0RFVC9Sb3NFL0FvN3lneEUrNG9SQ3dUN1NnVDdDanJLREVUeUFZVDZpanBLREVUNkNoRUxCUG5LRVFUNWlqbEtERVR5QVlUNUNqaktERVQ0aWdUNFNqZ0tERVQzeWdUM2lqZEtERVQzQ2dzRTlzb1JCUGFLTmtvTVJQWUtCUFhLTllvTVJQVktCUFVLTk1vTVJQU0tDd1QwU2hFTEJQT0tNd2N5eHpQS05Bb0U4MG96Q2d4RThnR0U4c295aWd4RThnR0U4a295Q2d4RThnR0U4Y294aWd4RThVb0U4UW93eWd4RThJb0U4RW93Q2d4RTc4b0U3NG92U2d4RTd3b1JFUzhHa1FzRTdjb3JTZ1R0aWlzS0JQNkNLc29FN1lhcWlnVHRTaXBLQk8wS0tnb0xCT3pLS2NvRTdJb3BpZ1RzU2lsS0JPd0tLUW9FNjhvb3lqNUNFU2lLS0VvcXhxZEM2NG9xeG9Ub0FMWER4TzdLT0VQRTdvb3Foc1R1U2pER3hPNEtNRWJSRVJFb0FJc0U1NG9uU2d4RTV3b0xCT2JLSm9vTVJQVkJ5d1RtU2lZS0RFVGx5Z3NFNVlvbFNneEU1UW9MQk9TS0pFb01SUFZCeE9RS0VRVGp5aU9LREVUZ2dzVGpTaU1LREVUZ2dzc0U0c29paWd4RTRrb0xCT0lLSWNvTVJPR0tCT0ZLSVFvTVJPREtCT0NLSUVvTVJPQUtCUC9KLzRuTVJQOUp4UDhKL3NuTVJPQ0M2OForaWY1SjZzWitDZjNKL1lud3dqMUovUW5FL01uRS9JbjhTY3hFL0FuRSs4bjdpY3hFNElMTEJQdEord25NUlBySi80TzZTZWdHZWduTEJQbEorUW5NUlBqSjlvSTRpZHQ0U2ZsRHVBbmtnUGZKOW9PM2ljVDNTZmNKekVUMnljVDJpZlpKekVUMkNjVDF5ZldKekVUOEFxOEdOSW4wU2VnQXRBbjRnSEFEc2dueHllREFja25peGpHSjhVbnhDZnpBOE1ud2lmQko4QW5FNzhudmljeEU3MG51eWU2SjdrbnVDZlhCVVMwSjFKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVXJNbkxCT3lKMUpTVWxKU1VsSlNVaXhTVWxKU1VsSlNVbElzL1FQMUY3Y09zU2NzTEZJc0xGS3dKOVlGUkxjT3J5Y3NMTGNPcmljc0xQTVgzd3F0Snl3c0xDeXNKOVlGUk44S3F5Y3NMTjhLcWljc0xOOEtxU2NzTEN3VHB5ZW1KekVUcFNla0o2TW42eGUwRGl3VG9TZWdKekVUbmllZEo1d25MQk9iSjVvbk1ST1pKNWdubHljVGxTZVVKekVUa3llU0o1RW5MQk9PSjQwbk1ST01KNHNuaWljVGlDZUhKekVUMVFlR0o0VW5MQk9FSjRNbk1SUFZCNEluZ0NjVC95YitKakVUMVFmOUp2d21FL3NtK2lZeEU5VUgrU2I0SnBFQzl5YlhEeXdzNUFNVDlpYjFKakVUOUNiekp2SW1FL0VtOENZeEUrOG03aWJ0SnBFQzdDYmhEeXdzNUFPUkF1c202aVlzTE9RRGtRTHBKdWNtTEN6a0E1RUM1aWJsSml3czVBT1JBdVFtNHlZc0xPUURrUUxpSnVFbUxDemtBNUVDNENiZkppd3M1QU9SQXQ0bTNTWXNMT1FEa1FMY0p0c21MQ3prQTVFQzJpYlpKaXdzNUFPUkF0Z20xeVlzTE9RRExCUFdKdFVtTVJQVUp0TW0waWFSQXN3bXN4Y3NMSmNPa1FMTEpyTVhMQ3lYRHBFQ3lpYkpKaXdzeUNha0Y2d214U2JFSml3c3d5YVJBc0ltd1NZc0xLOFhveGVySnNBbXZ5YXFKaXdzdmlhcEpwRUN1aWE1Sml3c2x3NmlGNmdtdUNhM0ppd3N0aWFSQXE0bXNDWXNMSzhta1FMUkp0QW1MQ3pQSnBFQ3ppYk5KaXdzdFJlUkFzY214aVlzTEs4WHBSZXRKcjBtdkNZc0xMc21rUUsxSnJRbUxDeTFGNUVDc3lheUppd3NzU2FZRHFjbUU2WW1wU1l4RTZRbW95YWlKaXdUb1NhZ0pqRVRueWFNQko0bUU1MG1uQ1l4RTVzbUU1b21tU1l4RTY0Y0U1Z21seVl4RTY0Y0U1WW1sU1l4RTVRbUU1TW1raVl4RS84V0U1RW1rQ1l4RTQ4bUU0NG1qU1l4RTR3bUU0c21paVl4RTRrbUU0Z21oeVl4RS84V0U0WW1oU1l4RTY4SEU0UW1neVl4RTRJbUU0RW1nQ1l4RTZBQ0UvOGwvaVV4RTZBQ0UvMGwvQ1V4RS93V0Uvc2wraVV4RS9rbEUvZ2w5eVV4RTZBQ0UvWWw5U1V4RS93V0UvUWw4eVV4RS9JbEUvRWw4Q1V4RTZBQ0xCUHZKZTRsTVJQdEpld2w2eVVxRStvbDZTVXhFL1lXTEJQb0plY2xNUlBtSmVRbDVoYmxGdVFXNHhiaUZ1RVc0QmJmRnQ0VzNCYmJGdG9XMlJiWUZ0Y1cxaGJWRnRRVzB4YlNGdEVXMEJiT0ZzMFd6QmJMRnNvV3lSYklGc2NXeGhiRkZzUVd3eGJDRnNFV3VoYmpKZUlsNFNYMkF2VUM5QUs0RnVBbDN5WGVKZllDOVFMMEFyY1czU1hjSmRzbDlnTDFBdlFDdGhiYUpka2wyQ1gyQXZVQzlBSXNFOWNsMWlVeEUvVU5FOVVsMUNVeEUvVU5FOU1sMGlVeEUvVU50UmJSSmRBbHp5WE9KYzBsekNVVHl5WEtKVEVUeVNVVHh5WEdKVEVUeFNVVHhDWERKVEVUd2lVVHdTWEFKVEVUdnlVVHZpVzlKVEVUdkNVVHV5VzZKVEVUdVNVVHVDVzNKVEVUdGlVVHRTVzBKVEVUc3lVVHNpV3hKVEVUc1JZVHNDV3ZKVEVUc1Jhd0ZxNGxyU1dzSmZZQzlRTDBBcThXcXlXcUpha2w5Z0wxQXZRQ0U2Z2xweVV4RTZZbEU2VWxwQ1V4RTZNbHJSYWlKYUVsb0NYMkF2VUM5QUlUbnlXZUpURVQ4ZzBUblNXY0pURVQ4ZzBUbXlXYUpURVQ4ZzJxRnBrbG1DV1hKZllDOVFMMEFoT1dKWlVsTVJQeERST1VKWk1sTVJQeERST1NKWkVsTVJQeERST1FKWThsTVJPb0ZoT09KWTBsTVJPb0ZxY1dqQ1dMSllvbDlnTDFBdlFDcGhhSkpZZ2xoeVgyQXZVQzlBS2xGb1lsaFNXRUpmWUM5UUwwQXFRV2d5V0NKWUVsOWdMMUF2UUNveGFBSmY4ay9pVDJBdlVDOUFLaEZ2MGsvQ1Q3SlBZQzlRTDBBaFA2SlBra01SUDRKQlAzSlBZa01SUDBKQlB6SlBJa01SUHhKQlB3Sk84a01SUHVKQlB0Sk93a01SUHJKQlBxSk9ra01SUG9KQlBuSk9Za01SUGxKQlBrSk9Na01SUGlKSjhXNFNUZ0pOOGs5Z0wxQXZRQ25oYmVKTjBrM0NUMkF2VUM5QUlUMnlUYUpERVQyU1FUMkNUWEpERVQxaVFUMVNUVUpERVQweVFUMGlUUkpERVQwQ1FUenlUT0pERVR6U1FUekNUTEpERVR5aVFUeVNUSUpERVR4eVFUeGlURkpERVR4Q1FUd3lUQ0pERVR3U1FUd0NTL0pERVR2aVFUdlNTOEpERVR1eVFUdWlTNUpERVR1Q1FUdHlTMkpERVR0U1FUdENTekpERVRzaVFUc1NTd0pERVRyeVFUcmlTdEpERVRyQ1FUcXlTcUpERVRxU1FUcUNTbkpERVRwaVFUcFNTa0pERVRveVFzRTZJa29TUXhFK0lDRTZBa255UXhFL0FLTEJPZUpKMGtNUk9nQWhPY0pKc2tNUlB3Q2hPYUpKa2tNUlB3Q2l3VG1DU1hKREVUbGlRc0U1VWtsQ1F4RTVNa0U1SWtrU1F4RTVBa0U0OGtqaVF4RTQwa0U0d2tpeVF4RTRva0xCT0pKSWdrTVJPSEpDd1RoaVNGSkRFVGhDUXNFNE1rZ2lReEU0RWtFNEFrL3lNeEUvNGpFLzBqL0NNeEUvc2pMQlA2SS9rak1SUDRJeFAzSS9Zak1ST3ZCeFAxSS9Rak1ST3ZCeFB6SS9Jak1SUHhJeFB3SSs4ak1ST3ZCeFB1SSswak1SUHNJeFBySStvak1SUHBJeFBvSStjak1ST3ZCeFBtSStVak1ST3ZCeFBrSStNak1SUGlJeFBoSStBak1SUGZJeFBlSTkwak1SUGNJeFBiSTlvak1SUFpJeFBZSTljak1SUFdJK3NWMVNQVUk5TWozQUxiQXRJakU5RWp6eU14RTg0akU4MGp6Q014RThzakU4b2p5U014RThnakU4Y2p4aU14RThVakU4UWp3eU14RThJakU4RWp3Q014RTc4ajZSVytJNzBqdkNQY0F0c0N1eVBvRmJvanVTTzNJOXdDMndMbkZlWVZ0aU8xSTdRajNBTGJBdWNWNVJXekk3SWpzU1BjQXRzQ3NDUGpGYThqcmlPdEk5d0Myd0tzSStJVnF5T3FJNmtqM0FMYkFxZ2o0UlduSTZZanBTUGNBdHNDcENQZ0ZhTWpvaU9oSTl3QzJ3S2dJeXdUbnlPZUl6RVRuU01zRTVvam1TTXhFNWdqRTVjamxpTXhFNVVqRTVRamt5TXhFNUlqTEJPUkk1QWpNUk9QSXhPT0k0MGpNUk9NSXhPTEk0b2pNUk9KSXhPSUk0Y2pNUk9HSXhPRkk0UWpNUk9ESXhPQ0k0RWpNUlBpQWhPQUkvOGlNUk9nQWhQK0l2MGlNUlA4SWhQN0l2b2lNUlA1SXM0VitDTDNJdllpOVNMMEl2TWk4aUx4SWhQd0l1OGlNUlAyRmhQdUl1MGlNUlBzSXJVVjZ5THFJdWtpM0FMYkF1Z2l0QlhuSXVZaTVTTGNBdHNDNUNLekZlTWk0aUxoSXR3QzJ3TGdJcklWM3lMZUl0MGkzQUxiQXR3aXNSWGJJdG9pMlNMY0F0c0MyQ0t3RmRjaTFpTFZJdHdDMndMVUlxOFYweUxTSXRFaTNBTGJBdEFpcmhYUElzNGl6U0xjQXRzQ3pDSVR5eUxLSWpFVHlTSVR5Q0xISWpFVHhpSVR4U0xFSWpFVHd5SVR3aUxCSWpFVHdDSzlJakdoSXBFaUg0VWlNYThoc0NHeUlia2h0eUcxSWJNaG9DR2hJYUlocWlHb0lhVWhveUZTdnlLK0lwb0t1Q0xpQXZBVTdoVHRGRkpTdHlMc0ZMWWltQXExSXBnS2t3cVdEYlFpc3lLeUlyRWkyUlNWRGVJQzhCVHVGTzBVVWxLd0l1d1VyeUtZQ3E0aW1BclJDYWtpcWlLb0lxMGlyQ0tySXBVS25BM3FGT2tVbEFxYURkOFUzaFM3QW8wTnB5S21JcVVpcENLN0FjMFVveUtpSXJvaXZDSzdJc0FVbFNLVUlwTWlraUx4RkxraS9nVGFGTUFVbUNMREZKY2lsaUtWRFp3aW15S2FJcGtpbFFxY0Rlb1U2UlR4Rk5vVWxRMmdJc01VbmlLZElwUUttZzNmRk40VXdST0hJY1locEJQb0lPY2c1aUNNSXFVVDdDRHFJT2tnaUNMc0RJOGhqaUdOSVl3aGl5SENFNG9oaVNHSUlkOE1yaFAwSVBNZzhpRHhJT2tNc3hPRElZSWhnU0dBSWY4Zy9pRDlJUHdnK3lENklQa2c5eUQxRE9zVHhTSEVJY01od2lGU3dDRy9JY3dUelJQOERQc00rZ3lkSVp3aHpoUFBFK1VEK1F6NERKOGhuaUhORTg4VExCTVRtaUdaSVpnaGx5R1dJWlVobENHVEljSVRraUdSSVpBaEU4UVR4Qk9YQ1AwRC9RT2JJZjBERThjVHhoT1hDRkpTeFJQeEF4UEhFOFlUbHdoU1VzVVQ4UU1UeXhQS0U1Y0lVbExKRS9FREU4c1R5aE9YQ0ZKU3lSUHhBeXdUamlLTklpd1RpaUtKSWhPSElvUWlnaUtCSXFzVXF4U0FJdjhoL2lIOUlmd2hFL3NoK2lINElmY2hvQlNnRlBZaDlTSDBJZk1oOGlFVDhTSHdJZThoN2lIdElld2g2eUhxSVJQcEllZ2g1eUhtSWVVaDVDSGpJZUloTEJQRkMrRWg0Q0hmSWQ0aDNTSGJJYTRoclNHc0lhc2hxU0dtSWFRaExCUEZDOW9oMlNIWUlkY2gxaUhWSWIwaHZDRzdJYm9odUNHMkliUWhyeFAySVBVZzZBem5ET1lNNVF6a0RPTU00Z3k3RTdvVHVSTzRFN2NUdGhPMUU3d1RoaUdGSWVnTTV3em1ET1VNNUF6akRPSU11eE82RTdrVHVCTzNFN1lUdFJQdURPMEoxQ0h1RE8wSjB5SHRDZTBKRS9nSitBbTdCYnNGdXdXTUZGTFpBOWtERS9nSitBbTdCYnNGdXdXTUZGTFpBOWtERS9jSjl3bTdCZllKOWdtTEZGTFpBOWtERS9jSjl3bTdCZllKOWdtTEZGTFpBOWtEcGhQdElQd00rd3o2RElvVWlSU0lGSWNVaGhUMUNhY1Q3aUQ4RFBzTStneUtGSWtVaUJTSEZJWVU5UW1xRSs4ZzVRUDVEUGdNaFJTREZJSVVnUlQxQ1lBVXF4UHdJT1VEK1F6NERJVVVneFNDRklFVTlRbUFGQlBSSWRBaEU4OGh6aUVUelNITUlSUExJY29oRSswVHlTSGlBaFB0RThnaDRnSVRFeXdUeHlIckV5d1RMQk1zRXl3VHJoT3pFeXhFUkN3VE1USGpJTnNnM1NEZUlCUFhJQlBXSU5VZ3lBYlVJQlBhSU53ZzN5QVQ0aURoSU9BZ0U5Z2dDdjZBVDVFckRnQWdBQ0FCSUFFUTNBRVErd2tMR1FBZ0FCQzRCZ1JBSUFBUTFBZ2dBQkNTQ2hDUkRRc2dBQXViQXdFRGZ5TUFRYkFDYXlJRUpBQUNRQ0FDUVFOR0JFQWdBU2dDa0FVaUJTQUJLQUtVQlNJR1JnUkFJQVJCQURZQ2FDQUVRZ0EzQTJBZ0FTZ0NBQ0VHSUFSQjBBQnFRZHo0REJBVUlRVWdCQ0FFS0FKb05nSW9JQVFnQkNrRFlEY0RJQ0FFUWZBQWFpQUVRU0JxSUFaQkVHb2dCVUVERU5JRklnWkJ0UGdNRUE0YUlBWVFFU0FGRUE4YUlBRW9BcFFGSVFZZ0FTZ0NrQVVoQlFzZ0JTQUdUd1JBSUFSQkFEWUNTQ0FFUWdBM0EwQWdCRUVBTmdLQUFTQUVRZEFBYWtIYytBd1FGQ0VCSUFRZ0JDZ0NTRFlDR0NBRUlBUXBBMEEzQXhBZ0FDQUVRUkJxSUFSQjhBQnFJZ0FnQVVFREVOSUZHaUFCRUE4YUlBQVFGZ3dDQ3lBQklBVkJBV28yQXBBRkN5QUVRZkFBYWhCVklBUUNmeUFEUlFSQUlBUkJBRFlDTUVFQURBRUxJQVJCMEFCcUlnVWdBU0FERU1FVklBUkI4QUJxSUFVUW5nRWdCUkFQR2lBRVFRQTJBakFnQXlnQ05Bc2lBellDT0NBRVFRQTJBalFnQVNnQ0FDRUJJQVFnQXpZQ0NDQUVJQVFwQXpBM0F3QWdBQ0FFSUFGQkVHb2dCRUh3QUdvaUFDQUNFTklGR2lBQUVBOGFDeUFFUWJBQ2FpUUFDOG9CQVFOL0l3QkJFR3NpQVNRQUFrQWdBQ2dDdkFFaUFrRUVSZzBBSUFBb0FxZ0JSUTBBUVFJaEF5QUNRUVpxSWdKQkMwMEVRQ0FDUVFKMFFmU3ZEV29vQWdBaEF3c2dBQ2dDdEFFZ0FDMEF1d0VpQWlBQ1FSaDBRUmgxUVFCSUd3UkFJQUFRNGdGQjMvQU1FQTRnQUVHd0FXb1FFaERpQVJvTElBRWdBRUVFYWhCQ0lBQkJtQUZxSUFOQjJpc2dBRUdJQVdvZ0FTZ0NBQ0FCSUFFc0FBdEJBRWdiRUxvT0lBRVFEeG9MSUFCQnNBRnFFQThhSUFCQm1BRnFFQllnQUJDN0FSb2dBVUVRYWlRQUN5MEJBWDhnQUNBQktBSUFJQUVnQVMwQUN5SUFRUmgwUVJoMVFRQklJZ0liSUFFb0FnUWdBQ0FDR3hEN0NRc0dBQ0FBRUI4TEVBQWdBQ0FCSUFFUTNBRVEyUXdnQUFzMEFRRi9JQUJCQVNBQUd5RUFBa0FEUUNBQUVPQUJJZ0VOQVVIZ3lpQW9BZ0FpQVFSQUlBRVJFUUFNQVFzTEVBRUFDeUFCQ3p3QkFYOENRQUovSUFBZ0FDZ0NFQ0lCUmdSQUlBQWlBU2dDQUVFUWFnd0JDeUFCUlEwQklBRW9BZ0JCRkdvTElRQWdBU0FBS0FJQUVRTUFDd3R1QVFGL0l3QkJJR3NpQlNRQUlBVWdBRFlDSENBRklBRTJBaGdnQlNBQ05nSVVJQVVnQXpZQ0VDQUZJQVEyQWd3Z0JTZ0NIQ0lBSUFVb0FoZzJBZ0FnQUNBRktBSVVOZ0lFSUFBZ0JTZ0NFRFlDQ0NBQUlBVW9BZ3cyQWd3Z0FFRVFhaEJKR2lBRlFTQnFKQUFnQUF1WEV3RVFmeU1BUWZBQWF5SUVKQUFnQkNBQU5nSm9JQVFnQkNnQ2FDSUlOZ0pzSXdCQkVHc2lCeVFBSUFjZ0NEWUNEQ0FIUWR6NEREWUNDQ0FIRU1nWUlBY29BZ3doQUNBSEtBSUlJUUVqQUVFd2F5SUZKQUFnQlNBSE5nSXNJQVVnQURZQ0tDQUZJQUUyQWlRakFFRVFheUlBSkFBZ0FDQUZRUmhxSWcwMkFnUWdBRUVCTmdJQUlBQW9BZ1FpQVNBQVFRaHFFTUFZSUFFZ0FDZ0NBRFlDQkNBQklSQWdBU2dDQkNFQ0l3QkJFR3NpQXlRQUlBTWdBVFlDRENBRElBSTJBZ2dnQXlnQ0RDRUNJQU1vQWdnaEJpTUFRUkJySWdFa0FDQUJJQUkyQWd3Z0FTQUdOZ0lJSUFFb0FnZ2hEeUFCS0FJTUlRWWpBRUVRYXlJQ0pBQWdBaUFHTmdJTUl3QkJFR3NnQWlnQ0REWUNEQ0FDUVJCcUpBQWdEMEhWcXRVcVN3UkFFUHNCQUFzZ0FTZ0NDRUV3YkVFRUVOTUlJUUlnQVVFUWFpUUFJQU5CRUdva0FDQVFJQUkyQWdnZ0FFRVFhaVFBSXdCQkVHc2lBQ0FOTmdJTUlBQW9BZ3dvQWdnaEFDQUZLQUlvSVFFZ0JTZ0NKQ0VDSXdCQk1Hc2lBeVFBSUFNZ0FEWUNKQ0FESUFFMkFpQWdBeUFDTmdJY0lBTW9BaVFoQVNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUVFQU5nSUlJQUFvQWd3aUFpQUFLQUlJRUwwWUdpQUNRWmplRHpZQ0FDQUNJQUFvQWdnMkFnZ2dBRUVRYWlRQUlBRkJ4T0lTTmdJQUl3QkJFR3NpQUNRQUlBQWdBVUVNYWpZQ0RDQUFJQU5CS0dvMkFnZ2dBQ2dDREJES0Rob2dBRUVRYWlRQUlBRVE2Z29oQUNBRFFSQnFJZzRnQXlnQ0lDZ0NBQkFVR2lBRElBTW9BaHdRRkJvakFFRVFheUlHSkFBZ0JpQUFOZ0lNSUFZZ0RqWUNDQ0FHSUFNMkFnUWdCaWdDRENJQUlBWW9BZ2dRVkJvZ0JpZ0NCQ0VCSXdCQklHc2lBaVFBSUFJZ0FFRU1hallDSENBQ0lBRTJBaGdnQWlnQ0hDSUFJQUlvQWhnUVZCb2dBa0VRYWlBQUVNb1lJQUlnQWlrREVEY0RDQ0FDUVFocUlRb2pBRUZBYWlJQkpBQWdBU0FBUVF4cUlndzJBandnQVVFQU9nQTdJQXdReHc0Z0FVRUFOZ0kwSUFGQkFEWUNNQU5BSUFFb0FqQWdDaEM0QVVrRVFDQUJRUUE2QUM4Z0FVRUFOZ0lvSUFFZ0Npa0NBRGNESUNBQktBSXdJUWtnQVNBQktRTWdOd01JSXdCQlFHb2lBQ1FBSUFBZ0NUWUNPQ0FBSUFGQkwybzJBalFnQUNBQlFTaHFOZ0l3SUFBZ0FVRUlhaUlKSUFBb0FqZ1F4QTQyQWl3Z0FFRWdhaUlMSUFBb0Fpd2dDUkM0QVNBQUtBSTRheENSR0NBQUlBc1ErZ0kyQWh3Z0FDQUxFTEVZTmdJWUFrQWdBQ2dDR0NnQ0FFVUVRQ0FBUVFBNkFEOE1BUXRCN0p3Z0xRQUFSUVJBUWVpY0lFRUtFSkFEUWV5Y0lFRUJPZ0FBQzBIMG5DQXRBQUJGQkVCQjhKd2dRUXNRa0FOQjlKd2dRUUU2QUFBTFFmeWNJQzBBQUVVRVFFSDRuQ0JCREJDUUEwSDhuQ0JCQVRvQUFBdEJoSjBnTFFBQVJRUkFRWUNkSUVHRkFSQ1FBMEdFblNCQkFUb0FBQXRCakowZ0xRQUFSUVJBUVlpZElFRU5FSkFEUVl5ZElFRUJPZ0FBQzBHVW5TQXRBQUJGQkVCQmtKMGdRYWpBQUJDUUEwR1VuU0JCQVRvQUFBdEJuSjBnTFFBQVJRUkFRWmlkSUVHcHdBQVFrQU5CbkowZ1FRRTZBQUFMQWtBQ1FDQUFLQUljRUpJQ1FlaWNJQkNTQWtZTkFDQUFLQUljRUpJQ1FmQ2NJQkNTQWtZTkFDQUFLQUljRUpJQ1FmaWNJQkNTQWtZTkFDQUFLQUljRUpJQ1FZQ2RJQkNTQWtZTkFDQUFLQUljRUpJQ1FaaWRJQkNTQWtZTkFDQUFLQUljRUpJQ1FaQ2RJQkNTQWtjTkFRc2dBQ2dDTkVFQk9nQUFJQUFvQWpBZ0FDZ0NHQ2dDQURZQ0FDQUFRUUU2QUQ4TUFRc2dBQ2dDSEJDU0FrR0luU0FRa2dKR0JFQWdBQ2dDTkVFQk9nQUFJQUFvQWpBZ0FDZ0NHQ2dDQURZQ0FDQUFJQUFvQWpnZ0FDZ0NHQ2dDQUdvMkFoUWdBQ2dDRkNBSkVMZ0JTUVJBSUFBZ0NTQUFLQUlVRU1RT05nSVFJQUJCQ0dvaUN5QUFLQUlRSUFrUXVBRWdBQ2dDRkdzUWtSZ2dBQ0FMRVBvQ05nSUVJQUFnQ3hDeEdEWUNBQ0FBS0FJQUtBSUFSUVJBSUFCQkFEb0FQd3dEQ3lBQUtBSUVFSklDUWVpY0lCQ1NBa1lFUUNBQUtBSXdJQUFvQWhnb0FnQWdBQ2dDQUNnQ0FHbzJBZ0FMQ3lBQVFRRTZBRDhNQVFzZ0FDZ0NORUVBT2dBQUlBQkJBVG9BUHdzZ0FDMEFQeG9nQUVGQWF5UUFBa0FnQVMwQUwwRUJjUVJBSUFGQkdHb2lBQ0FLSUFFb0FqUWdBU2dDTUNBQktBSTBheEM0R0NBTUlBQVF0eGdnQVNBQktBSW9JQUVvQWpCcU5nSXdJQUVnQVNnQ01EWUNOQXdCQ3lBQklBRW9BakJCQVdvMkFqQUxEQUVMQ3lBQktBSTBJQW9RdUFGSkJFQWdBVUVRYWlJQUlBb2dBU2dDTkVGL0VMZ1lJQXdnQUJDM0dBc2dBVUVCT2dBN0lBRXRBRHRCQVhGRkJFQWdEQkMyR0FzZ0FVRkFheVFBSUFKQklHb2tBQ0FHUVJCcUpBQWdBeEFQR2lBT0VBOGFJQU5CTUdva0FDTUFRUkJySWdBZ0RUWUNEQ0FBSUFBb0Fnd2lBU2dDQ0RZQ0NDQUJRUUEyQWdnZ0JTQUFLQUlJTmdJRUlBVW9BZ1FRNmdvaEFTQUZLQUlFSVFNakFFRWdheUlBSkFBZ0FDQUJOZ0ljSUFBZ0F6WUNHQ0FBUVFBNkFCY2dCRUhnQUdvaUF5SUJFTXNPSUFFZ0FDZ0NIRFlDQUNBQklBQW9BaGcyQWdRZ0FTZ0NBQ0VDSUFBZ0FTZ0NBRFlDQkNBQUlBSTJBZ0FqQUVFUWF5QUJOZ0lNSUFCQkFUb0FGeUFBTFFBWFFRRnhSUVJBSUFFUXpnY0xJQUJCSUdva0FDTUFRUkJySWdBa0FDQUFJQTAyQWdnZ0FDQUFLQUlJSWdFMkFnd2dBU2dDQ0FSQUlBRWdBU2dDQ0NBQktBSUVFTDhZQ3lBQUtBSU1HaUFBUVJCcUpBQWdCVUV3YWlRQUlBZEJFR29rQUNBRUlBZ29BZ1EyQWpBZ0JFRUFOZ0kwSXdCQkVHc2lBQ0FFUVRocUlnRTJBZ3dnQUNBRVFUQnFOZ0lJSUFBb0Fnd2lCU0FBS0FJSUtRSUFOd0lBSUFVZ0FDZ0NDQ2tDQURjQ0NDQURFSklDSVFVakFFRVFheUlBSUFSQnlBQnFJZ0kyQWd3Z0FDQUJOZ0lJSUFBZ0JUWUNCQ0FBS0FJTUlnRWdBQ2dDQ0NJRktRSUFOd0lBSUFFZ0JTa0NDRGNDQ0NBQklBQW9BZ1EyQWhBZ0NDZ0NEQ0VCSUFnb0FnZ2hCeUFFUVJocUlnVWdDRUVRYWhEdENpQUVRU2hxSUFVUXloZ2dCRUVRYWlBREVNa1lJQVFnQkNrREtEY0RDQ0FFSUFRcEF4QTNBd0FqQUVGQWFpSUFKQUFnQUNBQk5nSThJQUFnQnpZQ09DQUFJQUkyQWpRZ0FDZ0NQQ0VESUFBUXp3Z2FJQUJCQXpZQ0FDQUFJQUFvQWpnMkFpUWdBQ0FBS0FJMElnRXBBZ0EzQWdRZ0FDQUJLQUlRTmdJVUlBQWdBU2tDQ0RjQ0RDQUFRUmhxSUFSQkNHb1E1UTBqQUVFUWF5SUJKQUFnQVNBQVFTeHFOZ0lNSUFFZ0JEWUNDQ0FCS0FJTUlRSWdBU0FCS0FJSUVNa1lJQUVnQWhER0dDQUJFTTRISUFGQkVHb2tBQ0FESUFBUXFBY2dBQkNIQlNBRUVNNEhJQUJCUUdza0FDQUZFQThhUWVTY0lDZ0NBQVJBSUFnb0FneEI1SndnS0FJQUVRTUFDeUFFUWVBQWFoRE9CeUFJUVJCcUVGRWdCQ2dDYkJvZ0JFSHdBR29rQUFzUkFDQUFLQUlFUVFocUlBRVFEaG9nQUFzTUFDQUFFTk1KSUFBUXdCRUxZQUVCZndKQUlBQkJER29nQVJEM0ZpSUJMd0VDSWdJRVFDQUFMd0VjSUFFdkFRQWlBU0FDYWtrTkFTQUFLQUlBSUFGQkFuUnFLQUlBRHd0QjV0UUlRZG14QTBIb0FFR0N4Z0VRQUFBTFFmKy9BVUhac1FOQjZRQkJnc1lCRUFBQUMwSUJBWDhqQUVHZ0FXc2lBU1FBSUFBdEFPMENCRUFnQVVHVG53VkIzd0JCQmlBQVFjZ0NhaEFYSWdCQkdHcEI5TzhFRUE0YUlBQVFHQXNnQVVHZ0FXb2tBQXN1QVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1JZ0FReHc0Z0FFRUFOZ0lNSUFGQkVHb2tBQ0FBQzc0QkFRVi9Jd0JCRUdzaUF5UUFJQU1nQURZQ0RDQURLQUlNSVFBakFFRVFheUlDSkFBZ0FpQUFOZ0lJSUFJZ0FpZ0NDQ0lCTmdJTUl3QkJFR3NpQkNRQUlBUWdBVFlDRENBRUtBSU1JZ0FRNmdFaEJTQUFJQVVnQUJEcUFTQUFFTmtGUVRSc2FpQUFFT29CSUFBUXR3WkJOR3hxSUFBUTZnRWdBQkRaQlVFMGJHb1F0Z1lnQkVFUWFpUUFJQUVvQWdBRVFDQUJFS1lZSUFFUXR3RWdBU2dDQUNBQkVOa0ZFTVVZQ3lBQ0tBSU1HaUFDUVJCcUpBQWdBMEVRYWlRQUM4b01BUWQvQWtBZ0FFVU5BQ0FBUVFocklnSWdBRUVFYXlnQ0FDSUJRWGh4SWdCcUlRVUNRQ0FCUVFGeERRQWdBVUVEY1VVTkFTQUNJQUlvQWdBaUFXc2lBa0d3blNBb0FnQkpEUUVnQUNBQmFpRUFRYlNkSUNnQ0FDQUNSd1JBSUFGQi93Rk5CRUFnQWlnQ0NDSUVJQUZCQTNZaUFVRURkRUhJblNCcVJob2dCQ0FDS0FJTUlnTkdCRUJCb0owZ1FhQ2RJQ2dDQUVGK0lBRjNjVFlDQUF3REN5QUVJQU0yQWd3Z0F5QUVOZ0lJREFJTElBSW9BaGdoQmdKQUlBSWdBaWdDRENJQlJ3UkFJQUlvQWdnaUF5QUJOZ0lNSUFFZ0F6WUNDQXdCQ3dKQUlBSkJGR29pQkNnQ0FDSUREUUFnQWtFUWFpSUVLQUlBSWdNTkFFRUFJUUVNQVFzRFFDQUVJUWNnQXlJQlFSUnFJZ1FvQWdBaUF3MEFJQUZCRUdvaEJDQUJLQUlRSWdNTkFBc2dCMEVBTmdJQUN5QUdSUTBCQWtBZ0FpZ0NIQ0lFUVFKMFFkQ2ZJR29pQXlnQ0FDQUNSZ1JBSUFNZ0FUWUNBQ0FCRFFGQnBKMGdRYVNkSUNnQ0FFRitJQVIzY1RZQ0FBd0RDeUFHUVJCQkZDQUdLQUlRSUFKR0cyb2dBVFlDQUNBQlJRMENDeUFCSUFZMkFoZ2dBaWdDRUNJREJFQWdBU0FETmdJUUlBTWdBVFlDR0FzZ0FpZ0NGQ0lEUlEwQklBRWdBellDRkNBRElBRTJBaGdNQVFzZ0JTZ0NCQ0lCUVFOeFFRTkhEUUJCcUowZ0lBQTJBZ0FnQlNBQlFYNXhOZ0lFSUFJZ0FFRUJjallDQkNBQUlBSnFJQUEyQWdBUEN5QUNJQVZQRFFBZ0JTZ0NCQ0lCUVFGeFJRMEFBa0FnQVVFQ2NVVUVRRUc0blNBb0FnQWdCVVlFUUVHNG5TQWdBallDQUVHc25TQkJySjBnS0FJQUlBQnFJZ0EyQWdBZ0FpQUFRUUZ5TmdJRUlBSkJ0SjBnS0FJQVJ3MERRYWlkSUVFQU5nSUFRYlNkSUVFQU5nSUFEd3RCdEowZ0tBSUFJQVZHQkVCQnRKMGdJQUkyQWdCQnFKMGdRYWlkSUNnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQVBDeUFCUVhoeElBQnFJUUFDUUNBQlFmOEJUUVJBSUFVb0FnZ2lCQ0FCUVFOMklnRkJBM1JCeUowZ2FrWWFJQVFnQlNnQ0RDSURSZ1JBUWFDZElFR2duU0FvQWdCQmZpQUJkM0UyQWdBTUFnc2dCQ0FETmdJTUlBTWdCRFlDQ0F3QkN5QUZLQUlZSVFZQ1FDQUZJQVVvQWd3aUFVY0VRQ0FGS0FJSUlnTkJzSjBnS0FJQVNSb2dBeUFCTmdJTUlBRWdBellDQ0F3QkN3SkFJQVZCRkdvaUJDZ0NBQ0lERFFBZ0JVRVFhaUlFS0FJQUlnTU5BRUVBSVFFTUFRc0RRQ0FFSVFjZ0F5SUJRUlJxSWdRb0FnQWlBdzBBSUFGQkVHb2hCQ0FCS0FJUUlnTU5BQXNnQjBFQU5nSUFDeUFHUlEwQUFrQWdCU2dDSENJRVFRSjBRZENmSUdvaUF5Z0NBQ0FGUmdSQUlBTWdBVFlDQUNBQkRRRkJwSjBnUWFTZElDZ0NBRUYrSUFSM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBVkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBWTJBaGdnQlNnQ0VDSURCRUFnQVNBRE5nSVFJQU1nQVRZQ0dBc2dCU2dDRkNJRFJRMEFJQUVnQXpZQ0ZDQURJQUUyQWhnTElBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQWdBa0cwblNBb0FnQkhEUUZCcUowZ0lBQTJBZ0FQQ3lBRklBRkJmbkUyQWdRZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FBc2dBRUgvQVUwRVFDQUFRWGh4UWNpZElHb2hBUUovUWFDZElDZ0NBQ0lEUVFFZ0FFRURkblFpQUhGRkJFQkJvSjBnSUFBZ0EzSTJBZ0FnQVF3QkN5QUJLQUlJQ3lFQUlBRWdBallDQ0NBQUlBSTJBZ3dnQWlBQk5nSU1JQUlnQURZQ0NBOExRUjhoQkNBQVFmLy8vd2ROQkVBZ0FFRUlkaUlCSUFGQmdQNC9ha0VRZGtFSWNTSUVkQ0lCSUFGQmdPQWZha0VRZGtFRWNTSURkQ0lCSUFGQmdJQVBha0VRZGtFQ2NTSUJkRUVQZGlBRElBUnlJQUZ5YXlJQlFRRjBJQUFnQVVFVmFuWkJBWEZ5UVJ4cUlRUUxJQUlnQkRZQ0hDQUNRZ0EzQWhBZ0JFRUNkRUhRbnlCcUlRY0NRQUpBQWtCQnBKMGdLQUlBSWdOQkFTQUVkQ0lCY1VVRVFFR2tuU0FnQVNBRGNqWUNBQ0FISUFJMkFnQWdBaUFITmdJWURBRUxJQUJCR1NBRVFRRjJhMEVBSUFSQkgwY2JkQ0VFSUFjb0FnQWhBUU5BSUFFaUF5Z0NCRUY0Y1NBQVJnMENJQVJCSFhZaEFTQUVRUUYwSVFRZ0F5QUJRUVJ4YWlJSFFSQnFLQUlBSWdFTkFBc2dCeUFDTmdJUUlBSWdBellDR0FzZ0FpQUNOZ0lNSUFJZ0FqWUNDQXdCQ3lBREtBSUlJZ0FnQWpZQ0RDQURJQUkyQWdnZ0FrRUFOZ0lZSUFJZ0F6WUNEQ0FDSUFBMkFnZ0xRY0NkSUVIQW5TQW9BZ0JCQVdzaUFFRi9JQUFiTmdJQUN3c01BQ0FBSUFGQnJBRVEvUklMc1FFQkJuOGpBRUVnYXlJQ0pBQWdBa0VZYWlJRElBQVEzd01hQWtBZ0F4Q1NCRVVOQUNBQ1FSQnFJZ01nQUNBQUtBSUFRUXhyS0FJQWFoQitJQU1RL1FRaEJDQURFR1FnQWtFSWFpQUFFTklFSVFVZ0FDQUFLQUlBUVF4cktBSUFhaUlHRUp3RElRY2dBaUFFSUFVb0FnQWdCaUFISUFFZ0JDZ0NBQ2dDR0JFSkFEWUNFQ0FERU5FRVJRMEFJQUFnQUNnQ0FFRU1heWdDQUdwQkJSQ1BBd3NnQWtFWWFoRGdBeUFDUVNCcUpBQWdBQXU3QVFFQmZ3SkFBa0FnQUJES0F3UkFJQUZGRFFFZ0FVRUJOZ0lBSUFBUEN5QUFSUVJBUVFBaEFDQUJSUTBCSUFGQkFUWUNBRUVBRHdzZ0FDZ0NCQ0lDRUpFREJFQWdBVVVOQWlBQklBQW9BaHcyQWdBTUFnc2dBa0h3cWhKR0JFQWdBUVJBSUFFZ0FDZ0NKRFlDQUFzZ0FDZ0NIQThMSUFKQmtLSVNSZ1JBSUFGRkRRSWdBQ2dDSENJQ0tBSUVRWkNqRWtjZ0FrVnlEUUlnQVNBQ0tBSU1OZ0lBREFJTElBRkZEUUFnQVVFQk5nSUFDeUFBRHdzZ0FDZ0NHQXNTQUNBQVFRQTJBaVFnQUNBQUtBSWdFRFlMU3dFQmZ5QUFLQUlrSWdJZ0FDZ0NLRThFUUNBQUlBQW9BaWdpQWtFQmRFRUNJQUliRURrZ0FDZ0NKQ0VDQ3lBQUlBSkJBV28yQWlRZ0FDZ0NJQ0FDUVFKMGFpQUJLQUlBTmdJQUMwb0JBWDhDUUNBQUtBSUFJQUVvQWdBZ0FTZ0NCQ0lCSUFBb0FnUWlBaUFCSUFKSkd4RExDeUlDRFFCQkFDRUNJQUFvQWdRaUFDQUJSZzBBUVg5QkFTQUFJQUZKR3lFQ0N5QUNDdzBBSUFBZ0FTQUNFQnNRelFJTFlBRURmeU1BUVJCcklnTWtBQ0FBS0FJRUlRQWdBU2dDQUNFRklBTWdBU2dDQkNBQkxRQUxJZ1FnQkVFWWRFRVlkVUVBU0NJRUd6WUNEQ0FESUFVZ0FTQUVHellDQ0NBRElBTXBBd2czQXdBZ0FDQURJQUlRMVFFZ0EwRVFhaVFBQzl3QkFRUi9JQUFvQWhBaEJBSkFBa0FnQUNnQ0ZDSURRU0JKQkVBZ0JDRUNEQUVMSUFBb0FnUWhBd0pBSUFBb0FnaEJBMnBCZkhFaUJVSDUvZ05yUWY3L2Uwc0VRQ0FESVFJTUFRc2dBRUdRZ0FSQkVCRFpBaUlDTmdJRVFRQWhCU0FDUVFBMkFvQ0FCQ0FEQkVBZ0F5QUNOZ0tBZ0FRTUFRc2dBQ0FDTmdJQUN5QUFJQVZCaUFGcU5nSUlJQUFnQWlBRmFpSUNOZ0lRSUFKRkRRRWdBaUFFTmdLRUFVRUFJUU1nQWtFQU5nS0FBU0FFUVlBQmFpQUFRUXhxSUFRYklBSTJBZ0FMSUFBZ0EwRUJhallDRkNBQ0lBTkJBblJxSUFFMkFnQUxDd2NBSUFBUWdRRUxZZ0VDZnlNQVFhQUJheUlESkFBZ0EwR1FBV29pQkNBQlFmZ0VhaUFDRU1rS0lBTVFpQU1pQVVFSWFrSHptZ2tRRGlBQ0VDRkIrSm9KRUE0Z0JCQVNRY3VGQ1JBT0dpQUFJQUZCREdvUVFpQUJFTHNDR2lBRUVBOGFJQU5Cb0FGcUpBQUxEd0FnQUJEVENTQUFMUUFFUVFGR0N3UUFJQUFMSVFBZ0FDQUJJQUlRK0FZaUFTa0NBRGNDQUNBQUlBRW9BZ2cyQWdnZ0FSQlZDOEVCQVFKL0l3QkJvQUZySWdJa0FDQUNRUUEyQXB3QkFrQUNRQUpBSUFFb0FnQkJnQU5xSUFFb0FnZ2dBU2dDRENBQ1Fad0JhaERCQ0VVRVFDQUNLQUtjQVEwQkN5QUFRYjR2RUJRYURBRUxJQUVvQWdBZ0FTZ0NCQkFnSWdORkRRRWdBa0VRYWhET0FTRUJJQUlnQTBFQkVNVUZJQUVnQWhBU0dpQUNFQThhSUFGQjkvQU1FQTRhSUFFZ0FpZ0NuQUVvQWdBUURob2dBQ0FCUVFScUVFSWdBUkM3QVJvTElBSkJvQUZxSkFBUEMwRzFMa0dsbXdKQjB3aEIzUEVJRUFBQUN3OEFJQUFvQWdRZ0FSRExBeG9nQUFzUEFDQUFFTk1KSUFBdEFBUkJBa1lMQXdBQkN4c0JBWDhnQUNnQ0FDSUJCRUFnQUNBQk5nSUVJQUVRSHdzZ0FBdnpBUUVGZnlNQVFhQUJheUlFSkFBQ1FBSkFJQUZGQkVBZ0JFRzNtd1ZCeWlSQkNDQUFLQUlFRUJjaUFFRVlha0dKeHdFUURob2dBQkFZREFFTFFRRWhBa0VCSUFFb0Fnd2lBM1FpQlNBQUtBS3dLeUFEUVFOMlFmei8vLzhCY1dvaUF5Z0NBQ0lHY1VVRVFDQURJQVVnQm5JMkFnQU1BZ3NnQkVHM213VkIwaVJCQ0NBQUtBSUVFQmNpQWtFWWFrR21sZ2tRRGhvZ0FpQUJLQUlFUVFScUVKb0JJZ05CR0dvaUFFSDA4UXdRRGhvZ0FFR0Q1QXNRRGhvZ0EwRVFhaUFCUVJCcUVLNERJQUJCMi9nTUVBNGFJQUJCOFBVTEVBNGFJQUFnQVJEZEF5QUNFQmdMUVFBaEFnc2dCRUdnQVdva0FDQUNDd3NBSUFCQnJJVVFFSklUQ3lZQUlBQWdBaUFCSUFFUTBnZ1FuUk1pQVNrQ0FEY0NBQ0FBSUFFb0FnZzJBZ2dnQVJCVkN4TUFJQUZGSUFBZ0FVWnlSUVJBSUFFUUh3c0wraVFBQWtBZ0FTZ0NBQ2dDQUJCSFJRUkFRZHo0RENFQkRBRUxRY2lSQ3lFQkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQnVpQnJEczhFb3dJQkFxSUNvZ0tpQWdNRUJhSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFnWUhDQWtLQ3d3TkRnOFFvZ0tpQXFJQ29nSVJFaE1VRmFJQ29nS2lBcUlDR1JvYkhCMGVIeUFoSWlNa0pTWW5LQ2txS3l3dG9nS2lBcUlDTGk4d01USXpvZ0kwTlRZM09EazZPenc5UGo5QVFVSkRSRVZHUjBoSlNrdWlBcUlDb2dKTVRVNVBVRkZTVTFSVlZsZFlXYUlDb2dLaUFxSUNXbHRjb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDWFY1ZllHRmlZMlJsWm1kb2FXcHJiRzF1YjNCeGNuTjBkWFozZUhtaUFxSUNvZ0tpQXFJQ29nS2lBcUlDZXFJQ29nS2lBbnVpQXFJQ2ZLSUNvZ0tpQXFJQ29nS2lBcUlDZlg1L2dBR0JBWUlCZ3dHRUFZVUJoZ0dIQVlnQmlRR0tBWXNCakFHTkFZNEJvZ0tpQXFJQ29nS1BBWkFCa1FHU0FaTUJsQUdWQVpZQmx3R1lBWmtCbWdHYkFad0JuUUdlQVo4Qm9nS2lBcUlDb0FHaEFhSUJvd0drQWFVQnBnR25BYWdCcVFHcUFhc0JyQUd0QWE0QnJ3R3dBYkVCc2dHekFiUUJ0UUdpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcllCdHdHNEFia0J1Z0c3QWJ3QnZRRytBYjhCd0FIQkFjSUJ3d0hFQWFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nTEZBY1lCeHdHaUFxSUNvZ0xJQWNrQnlnR2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUN5d0hNQWMwQnpnSFBBZEFCb2dMU0FkTUIxQUhWQWRZQjF3R2lBcUlDb2dLaUFxSUMyQUhaQWRvQjJ3SGNBZDBCM2dIZkFlQUJvZ0tpQXVFQjRnSGpBYUlDb2dMa0FhSUM1UUhtQWFJQ29nS2lBcUlDNXdHaUF1Z0JvZ0tpQXVrQm9nTHFBYUlDb2dMc0FlMEJvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXU0Qjd3R2lBdkFCb2dMeEFmSUI4d0dpQXFJQzlRR2lBdllCOXdHaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQ29nS2lBcUlDb2dMNEFma0IrZ0g3QWZ3Qm9nS2lBcUlDb2dLaUFxSUNvZ0tpQXFJQy9RRUFDd0pBSUFKQnN5WnJEZ3FCQW9JQ2d3S0VBb1VDaGdLSEFvZ0NpUUtLQWdBTEFrQWdBa0dQTkdzT0NJOENrQUtpQXBFQ2tnS1RBcFFDbFFJQUN3SkFJQUpCcVNWckRnWCtBYUlDb2dML0FZQUNBQXNDUUNBQ1FjODBhdzRERmhjWUFBc0NRQ0FDUWVJN2F3NERud0tnQXFFQ0FBc0NRQ0FDUWJrd2F3NENpd0tNQWdBTEFrQWdBa0g1TkdzT0FwWUNsd0lBQ3dKQUlBSkJselZyRGdLWUFwa0NBQXNDUUNBQ1FaZzVhdzRDblFMUkFRQUxJQUpCeGpCR0RZd0NJQUpCbWpKR0Rlb0JJQUpCMnpKR0RZMENJQUpCalRaR0Raa0NJQUpCMVRaR0Rab0NJQUpCdmpkR0Rac0NJQUpCenpkR0RmTUJJQUpCK2poR0RaMENJQUpCbHp4SERhRUNRZHVlQ3lFQkRLSUNDMEdkaUFzaEFReWhBZ3RCaS84S0lRRU1vQUlMUWRDNEN5RUJESjhDQzBHQXJnc2hBUXllQWd0QnpxTUxJUUVNblFJTFFhV3NDeUVCREp3Q0MwSG9vUXNoQVF5YkFndEIwcGdMSVFFTW1nSUxRZWlPQ3lFQkRKa0NDMEcvaFFzaEFReVlBZ3RCNS93S0lRRU1sd0lMUWVUeUNpRUJESllDQzBIZzZRb2hBUXlWQWd0QjV1RUtJUUVNbEFJTFFldTFDeUVCREpNQ0MwSG1xZ3NoQVF5U0FndEIzdnNLSVFFTWtRSUxRWnJ5Q2lFQkRKQUNDMEdXNlFvaEFReVBBZ3RCbk9FS0lRRU1qZ0lMUVlPL0N5RUJESTBDQzBHNmlRc2hBUXlNQWd0QmhZQUxJUUVNaXdJTFFaVDNDaUVCRElvQ0MwR3dqUXNoQVF5SkFndEJ5WU1MSVFFTWlBSUxRZWI2Q2lFQkRJY0NDMEgwOEFvaEFReUdBZ3RCK09jS0lRRU1oUUlMUVlHK0N5RUJESVFDQzBHZ3N3c2hBUXlEQWd0Qm9hZ0xJUUVNZ2dJTFFibWVDeUVCRElFQ0MwSDJsUXNoQVF5QUFndEIvb3NMSVFFTS93RUxRYzJDQ3lFQkRQNEJDMEdxK1FvaEFRejlBUXRCZys4S0lRRU0vQUVMUWQ3bUNpRUJEUHNCQzBIN3ZBc2hBUXo2QVF0Qm83SUxJUUVNK1FFTFFkZW5DeUVCRFBnQkMwSGpuUXNoQVF6M0FRdEIrSlFMSVFFTTlnRUxRWU9MQ3lFQkRQVUJDMEh4NVFvaEFRejBBUXRCNExzTElRRU04d0VMUVpLeEN5RUJEUElCQzBIYnBnc2hBUXp4QVF0QjU1d0xJUUVNOEFFTFFmeVRDeUVCRE84QkMwSCtnQXNoQVF6dUFRdEJnL2dLSVFFTTdRRUxRZER0Q2lFQkRPd0JDMEdKNVFvaEFRenJBUXRCcHJvTElRRU02Z0VMUVlXd0N5RUJET2tCQzBIWHBRc2hBUXpvQVF0QndKc0xJUUVNNXdFTFFiYVNDeUVCRE9ZQkMwR2VpUXNoQVF6bEFRdEI2ZjhLSVFFTTVBRUxRZmoyQ2lFQkRPTUJDMEgzN0FvaEFRemlBUXRCMCtRS0lRRU00UUVMUWMyNUN5RUJET0FCQzBHbXJ3c2hBUXpmQVF0QitLUUxJUUVNM2dFTFFlR2FDeUVCRE4wQkMwR2trUXNoQVF6Y0FRdEIrWWNMSVFFTTJ3RUxRZWYrQ2lFQkROb0JDMEdhOWdvaEFRelpBUXRCcSt3S0lRRU0yQUVMUVlma0NpRUJETmNCQzBIbG1Rc2hBUXpXQVF0QnFaQUxJUUVNMVFFTFFZR0hDeUVCRE5RQkMwSDMvUW9oQVF6VEFRdEJwdlVLSVFFTTBnRUxRYS9yQ2lFQkRORUJDMEdINHdvaEFRelFBUXRCK3JjTElRRU16d0VMUWFxdEN5RUJETTRCQzBIam9nc2hBUXpOQVF0QnBwa0xJUUVNekFFTFFlT1BDeUVCRE1zQkMwSG5oZ3NoQVF6S0FRdEIzZjBLSVFFTXlRRUxRZk9yQ3lFQkRNZ0JDMEcyb1FzaEFRekhBUXRCb0pnTElRRU14Z0VMUWRDWEN5RUJETVVCQzBHQ2pnc2hBUXpFQVF0Qm00UUxJUUVNd3dFTFFiVDdDaUVCRE1JQkMwSHc4UW9oQVF6QkFRdEI3T2dLSVFFTXdBRUxRZUxnQ2lFQkRMOEJDMEhKdmdzaEFReStBUXRCa3JRTElRRU12UUVMUWVXb0N5RUJETHdCQzBIVG53c2hBUXk3QVF0QjhKWUxJUUVNdWdFTFFZQ05DeUVCRExrQkMwR1pnd3NoQVF5NEFRdEJ0dm9LSVFFTXR3RUxRY3J3Q2lFQkRMWUJDMEhPNXdvaEFReTFBUXRCMTcwTElRRU10QUVMUWZ5eUN5RUJETE1CQzBIOXB3c2hBUXl5QVF0QmxaNExJUUVNc1FFTFFhcVZDeUVCRExBQkMwSGNpd3NoQVF5dkFRdEJxNElMSVFFTXJnRUxRWWo1Q2lFQkRLMEJDMEhqN2dvaEFReXNBUXRCdnVZS0lRRU1xd0VMUWR1OEN5RUJES29CQzBHRHNnc2hBUXlwQVF0QnVyc0xJUUVNcUFFTFFkYVRDeUVCREtjQkMwSGQ5d29oQVF5bUFRdEI2SWdMSVFFTXBRRUxRYlAvQ2lFQkRLUUJDMEhDOWdvaEFReWpBUXRCMCt3S0lRRU1vZ0VMUWEva0NpRUJES0VCQzBHcHVRc2hBUXlnQVF0QmdxOExJUUVNbndFTFFkU2tDeUVCREo0QkMwRzltZ3NoQVF5ZEFRdEJoSkVMSVFFTW5BRUxRZG1IQ3lFQkRKc0JDMEhIL2dvaEFReWFBUXRCOXZVS0lRRU1tUUVMUVlmc0NpRUJESmdCQzBIajR3b2hBUXlYQVF0QnBMZ0xJUUVNbGdFTFFkU3RDeUVCREpVQkMwR2lvd3NoQVF5VUFRdEJndlVLSVFFTWt3RUxRWXZyQ2lFQkRKSUJDMEhqNGdvaEFReVJBUXRCenJjTElRRU1rQUVMUWY2c0N5RUJESThCQzBHM29nc2hBUXlPQVF0QitwZ0xJUUVNalFFTFFiZVBDeUVCREl3QkMwRzdoZ3NoQVF5TEFRdEJzZjBLSVFFTWlnRUxRYlAwQ2lFQkRJa0JDMEhmNmdvaEFReUlBUXRCanVJS0lRRU1od0VMUWVtMkN5RUJESVlCQzBHeHF3c2hBUXlGQVF0QmpxRUxJUUVNaEFFTFFmaVhDeUVCRElNQkMwSEM4Z29oQVF5Q0FRdEJ2dWtLSVFFTWdRRUxRY1RoQ2lFQkRJQUJDMEdidFFzaEFReC9DMEc2cWdzaEFReCtDMEd6b0FzaEFReDlDMEdrbHdzaEFReDhDMEhXalFzaEFReDdDMEh2Z3dzaEFReDZDMEdJK3dvaEFReDVDMEhFOFFvaEFReDRDMEhHNkFvaEFReDNDMEc4NEFvaEFReDJDMEdqdmdzaEFReDFDMEh3c3dzaEFReDBDMEhEcUFzaEFReHpDMEd4bndzaEFReHlDMEhHbGdzaEFReHhDMEhXakFzaEFReHdDMEh2Z2dzaEFReHZDMEdNK2dvaEFReHVDMEdnOEFvaEFReHRDMEd4cHdzaEFReHNDMEc5blFzaEFReHJDMEhTbEFzaEFReHFDMEhaaWdzaEFReHBDMEhhZ1FzaEFReG9DMEczK0FvaEFReG5DMEdFN2dvaEFReG1DMEc1NVFvaEFReGxDMEdDdXdzaEFReGtDMEhnc0FzaEFReGpDMEdwcGdzaEFReGlDMEcxbkFzaEFReGhDMEdta3dzaEFReGdDMEdEaWdzaEFReGZDMEhPZ0FzaEFReGVDMEdxamdzaEFReGRDMEdCaFFzaEFReGNDMEdwL0FvaEFReGJDMEh2dEFzaEFReGFDMEdPcWdzaEFReFpDMEdIb0FzaEFReFlDMEdTbkFzaEFReFhDMEdEa3dzaEFReFdDMEhnaVFzaEFReFZDMEdyZ0FzaEFReFVDMEc2OXdvaEFReFRDMEd0N1FvaEFReFNDMEhnc1FzaEFReFJDMEdEdWdzaEFReFFDMEhpcndzaEFReFBDMEcwcFFzaEFReE9DMEdkbXdzaEFReE5DMEdUa2dzaEFReE1DMEhGaUFzaEFReExDMEhacmdzaEFReEtDMEducEFzaEFReEpDMEdQbWdzaEFReElDMEhUa0FzaEFReEhDMEdyaHdzaEFReEdDMEdkL2dvaEFReEZDMEhNOVFvaEFReEVDMEhWNndvaEFReERDMEd4NHdvaEFReENDMEg5b2dzaEFReEJDMEhBbVFzaEFReEFDMEg5andzaEFRdy9DMEhmOUFvaEFRdytDMEc2NGdvaEFRdzlDMEdydHdzaEFRdzhDMEdPaGdzaEFRdzdDMEdMOUFvaEFRdzZDMEc0dGdzaEFRdzVDMEhmb0FzaEFRdzRDMEd5Z1FzaEFRdzNDMEhEaEFzaEFRdzJDMEdHL0FvaEFRdzFDMEdhNkFvaEFRdzBDMEdJNEFvaEFRd3pDMEhDc3dzaEFRd3lDMEdEbndzaEFRd3hDMEdZbGdzaEFRd3dDMEdnakFzaEFRd3ZDMEdhNXdvaEFRd3VDMEhxN3dvaEFRd3RDMEdodlFzaEFRd3NDMEhKc2dzaEFRd3JDMEhXdWdzaEFRd3FDMEcxc0FzaEFRd3BDMEg3cFFzaEFRd29DMEhrbXdzaEFRd25DMEhha2dzaEFRd21DMEh3a1FzaEFRd2xDMEczOHdvaEFRd2tDMEdUdGdzaEFRd2pDMEdPcXdzaEFRd2lDMEcxaXdzaEFRd2hDMEdFZ2dzaEFRd2dDMEhoK0FvaEFRd2ZDMEc4N2dvaEFRd2VDMEdYNWdvaEFRd2RDMEdHdkFzaEFRd2NDMEc0c1FzaEFRd2JDMEdKcHdzaEFRd2FDMEdWblFzaEFRd1pDMEdxbEFzaEFRd1lDMEhNdEFzaEFRd1hDMEdacVFzaEFRd1dDMEhNbFFzaEFRd1ZDMEhpcVFzaEFRd1VDMEhOckFzaEFRd1RDMEdRb2dzaEFRd1NDMEdNandzaEFRd1JDMEhqaFFzaEFRd1FDMEdML1FvaEFRd1BDMEhkOHdvaEFRd09DMEdzNmdvaEFRd05DMEdNOHdvaEFRd01DMEdJNmdvaEFRd0xDMEhtK1FvaEFRd0tDMEcvN3dvaEFRd0pDMEd6aWdzaEFRd0lDMEdXOFFvaEFRd0hDMEc4cVFzaEFRd0dDMEd1dkFzaEFRd0ZDMEhIdFFzaEFRd0VDMEdHdVFzaEFRd0RDMEcycmdzaEFRd0NDMEdFcEFzaEFRd0JDMEhjK0F3aEFRc2dBQ0FCRUJRYUN3OEFJQUFnQUJEU0J5QUJhaENSQkF0YkFRTi9JQUVnQUNnQ0tFc0VRQ0FBS0FJZ0lRSWdBQ0FCRUw0SklBQW9BaVFoQTBFQUlRRURRQ0FCSUFOR0JFQWdBQ0FDRURZRklBRkJBblFpQkNBQUtBSWdhaUFDSUFScUtBSUFOZ0lBSUFGQkFXb2hBUXdCQ3dzTEMvd0NBUWgvSXdCQkVHc2lCU1FBSUFBUUhDQUNLQUlBSVFJZ0JVRUFPZ0FNSUFVZ0FqWUNDQ01BUVJCcklnSWtBQ0FDSUFFMkFnd0Nmd0pBSUFVb0FnZ2lBeWdDQkNJR1JRMEFJQU1vQWdBaUJDQUdRUUowYWlFS0lBUW9BZ0FoQ1VFQklRWkJBU0VIQTBBZ0JDQUtSd1JBSUFRb0FnQWlBMFVOQWlBSVFmOEJjVVVFUUNBRElBTW9BZ0FvQWhnUkFBQWhDQXNnQmtIL0FYRUVmeUFHUVFBZ0F5QURLQUlBS0FJVUVRQUFHd1ZCQUFzaEJpQUhRUUZ4UlNBRElBbEdja1VFUUNBRElBa1ExZ2dnQjNFaEJ3c2dCRUVFYWlFRURBRUxDeUFDSUFZNkFBb2dBaUFJT2dBTElBZEJBWEVFUUNBQUlBRWdCU2dDQ0NJQUtBSUFLQUlBSUFBb0FnUVFxZ1lNQWdzakFFRVFheUlCSkFBZ0FFSEVBV29pQUJDMUJ5RURJQUlvQWd3aEJDQUJJQVVwQWdnM0F3Z2dBQ0FESUFRZ0FVRUlhaUFDTFFBS0lBSXRBQXNRd2hnaUF4QW9JQUFnQUNnQ0dFRUJhallDR0NBQlFSQnFKQUFnQXd3QkMwRUFDeUVBSUFKQkVHb2tBQ0FGUVJCcUpBQWdBQXMrQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDREFKL0lBRW9BZ3dpQUJDNEJrRUJjUVJBSUFBUXlRNE1BUXNnQUJESURnc2hBQ0FCUVJCcUpBQWdBQXR5QWdKL0FYd2pBRUVnYXlJQ0pBQWdBa0VJYWlJQklBQWdBQ2dDQUNnQ0pCRUNBQ0FCRVBBTEl3QkJFR3NpQUNRQUlBQWdBa0VZYWpZQ0NDQUFRUWhxSUFGQmZ5QUJMUUFJSWdFZ0FVSC9BVVliUVFKMFFhQ0NFR29vQWdBUkhnQWhBeUFBUVJCcUpBQWdBa0VnYWlRQUlBTUxEQUFnQUJEVENTQUFFS2tSQzE0QUlBQWdBQ0FCRU1FQkVMb0JJZ0FFUUVFQklRRUNRQUpBQWtBZ0FDOEJIa0VVYXc0REFnRUJBQXRCMVpJSFFmaXJBa0dSQjBIVm93TVFBQUFMSUFBb0FnQW9BZ2doQVFzZ0FROExRYWt2UWZpckFrR0pCMEhWb3dNUUFBQUxDd0FnQUVHNGdoQVFraE1MZ0FFQkJYOGpBRUhRQUdzaUF5UUFJQU5CRUdvaUJDQUJJQUVvQWdBb0Fnd1JBZ0FnQTBFZ2FpSUZRWjNmQmlBRUVEVWdBMEV3YWlJR0lBVkIxL0FKRUMwZ0EwRkFheUlISUFZZ0F5QUNFUGtISWdJUVRpQUFJQWNnQVVFUWFoQW5JQWNRRHhvZ0FoQVBHaUFHRUE4YUlBVVFEeG9nQkJBUEdpQURRZEFBYWlRQUM2SURBUVovSXdCQndBUnJJZ0lrQUNBQ1FmZ0FhaUlFUWdBM0Fyd0RJQVJDZ0lDQWdNQUJOd0swQXlBRUlBUTJBckFESUFSQkRCQ0dFQ0FDUW9DQWdJQ0FBVGNDYkNBQ0lBSkJ5QUJxTmdKb0lBRW9BZ0FpQXlnQ0FDSUJJQU1vQWdSQkFuUnFJUVVnQWtIb0FHb2hCd05BQWtBQ2Z5QUJJQVZIQkVBZ0FTZ0NBQ0lES0FJRUlnWkJrSUlTUnlBRFJYSkZCRUFnQWlBRFFTUnFOZ0l3SUFKQnlBQnFJQUpCTUdvUUpBd0RDeUFDSUFZMkFqQWdBa0ZBYXlBRUlBSkJNR29nQTBFUWFpSUdFS2NjSUFJb0FrQkJBa2NOQWlBREJIOGdBeWdDQkJEMkF3VkJBQXNOQWlBQ1FSQnFJZ1VnQXlBREtBSUFLQUlNRVFJQUlBSkJJR29pQTBHNnR3b2dCUkExSUFKQk1Hb2lBU0FEUWNIWUF4QXRJQUFnQVNBR0VDY2dBUkFQR2lBREVBOGFJQVVRRHhvZ0FDQUJRYUR1QXhBVUlnQWdBaWdDUkJDR0FTQUFFQThhUVFBTUFRc2dBa0VBT2dBTUlBSWdCellDQ0NBQUlBSkJDR3BCd3RnREVLWWNDeUVBSUFKQnlBQnFFQ01nQkJDa0hDQUVRUUEyQXJRRElBUWdCQ2dDc0FNUU5pQUNRY0FFYWlRQUlBQVBDeUFCUVFScUlRRU1BQXNBQzZNQkFRTi9Jd0JCSUdzaUJDUUFBa0FnQVNnQ01DSUNRUkJ4QkVBZ0FTZ0NMQ0lDSUFFb0FoZ2lBMGtFUUNBQklBTTJBaXdnQXlFQ0N5QUJLQUlVSVFNZ0FVRWdhaERuQ2lBQUlBTWdBaUFFUVJocUVKQU5HZ3dCQ3lBQ1FRaHhCRUFnQVNnQ0VDRUNJQUVvQWdnaEF5QUJRU0JxRU9jS0lBQWdBeUFDSUFSQkVHb1FrQTBhREFFTElBRkJJR29RNXdvZ0FDQUVRUWhxRUprWUdnc2dCRUVnYWlRQUMrb0hBZ1IvQVg0akFFSFFBbXNpQWlRQUlBQWdBU2dDQkJBekdpQUFJQUVvQWdRb0FpZ1FNeG9nQWtIQUFtb2dBU2dDQkNnQ0tFRWthaEJUQWtBZ0FTZ0NCQ2dDSkNJREJFQWdBQ0FERURNYUlBSkJxQUZxSWdNZ0FTZ0NCQ2dDSkVFa2FoQlRJQU5CNmZRQ0VLWUpJUVFnQXhBUEdpQUVSUTBCSUFJZ0FpZ0N4QUlnQWkwQXl3SWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nSzhBaUFDSUFJb0FzQUNJQUpCd0FKcUlBTWJOZ0s0QWlBQ0lBSXBBN2dDTndOSUl3QkJJR3NpQXlRQUlBTWdBaWtDU0NJR053TVFJQVpDZ0lDQWdIQ0RRb0NBZ0lDQUFsSUVmMEVBQlNBRFFSQTJBaHdnQTBHQzBBUTJBaGdnQXlBREtRTVlOd01JSUFOQkVHb2dBMEVJYWhBbFJRc2hCQ0FEUVNCcUpBQWdCQ0lEQkVBZ0FrRUJPZ0NzQVNBQ0lBTTJBcWdCSUFCQnVCMXFJQUpCcUFGcUlBRW9BZ0FRK3dzTUFnc2dBa0dvQVdvUVNTSURRUWhxSWdSQjh0b0hFQTRhSUFRZ0FrSEFBbW9pQlJBU0dpQUVRZHI0REJBT0dpQUNRUUUyQWpnZ0FrS0JnSUNBRURjQ2xBRWdBa0hJaUJJMkFwQUJJQUpCQ1RZQ2pBRWdBa0dRMndjMkFvZ0JJQUlnQWlnQ3hBSWdBaTBBeXdJaUJDQUVRUmgwUVJoMVFRQklJZ1FiTmdLa0FTQUNJQUlvQXNBQ0lBVWdCQnMyQXFBQklBSWdBaWtEa0FFM0F6QWdBaUFDS1FPSUFUY0RLQ0FDSUFJcEE2QUJOd05BSUFKQlFHc2dBa0V3YWlBRElBSkJLR29RMWc4Z0FrSDRBR29pQkNBRFFReHFFRUlnQUNBRUlBRW9BZ1JCRUdvUXl4QWdCQkFQR2lBREVGRU1BUXNnQWlBQ0tBTEVBaUFDTFFETEFpSURJQU5CR0hSQkdIVkJBRWdpQXhzMkFuUWdBaUFDS0FMQUFpQUNRY0FDYWlBREd6WUNjQ0FDSUFJcEEzQTNBeUFqQUVFZ2F5SURKQUFnQXlBQ0tRSWdJZ1kzQXhBZ0JrS0FnSUNBY0lOQ2dJQ0FnTkFDVWdSL1FRQUZJQU5CRlRZQ0hDQURRZjRKTmdJWUlBTWdBeWtER0RjRENDQURRUkJxSUFOQkNHb1FKVVVMSVFRZ0EwRWdhaVFBSUFRaUF3UkFJQUpCQURvQXJBRWdBaUFETmdLb0FTQUFRYmdkYWlBQ1FhZ0JhaUFCS0FJQUVQc0xEQUVMSUFKQnFBRnFFRWtpQTBFSWFpSUVRWWVXQ1JBT0dpQUVJQUpCd0FKcUlnVVFFaG9nQkVIYStBd1FEaG9nQWtFQk5nSVFJQUpDZ1lDQWdCQTNBbHdnQWtITWlCSTJBbGdnQWtIYytBdzJBbEFnQWkwQXl3SWhCQ0FDUVFBMkFsUWdBaUFDS0FMRUFpQUVJQVJCR0hSQkdIVkJBRWdpQkJzMkFtd2dBaUFDS0FMQUFpQUZJQVFiTmdKb0lBSWdBaWtEV0RjRENDQUNJQUlwQTFBM0F3QWdBaUFDS1FOb053TVlJQUpCR0dvZ0FrRUlhaUFESUFJUTFnOGdBa0g0QUdvaUJDQURRUXhxRUVJZ0FDQUVJQUVvQWdSQkVHb1F5eEFnQkJBUEdpQURFRkVMSUFKQndBSnFFQThhSUFKQjBBSnFKQUFMQXdBQUMzY0JBWDhDUUFKQUEwQWdBQ0FCRUxvQklnRkZEUUlDUUFKQUFrQWdBUzhCSGlJQ1FSUnJEZ1VFQkFRQkFRQUxJQUpCN2lsSERRRkJBQThMSUFFb0FnQW9BZ3dQQ3lBQktBSWtJZ0VOQUF0QjFaSUhRZmlyQWtHQ0IwRzc3Z0lRQUFBTFFRRVBDMEdwTDBINHF3SkI3QVpCdSs0Q0VBQUFDNWNDQWdSL0FYMGpBRUd3QVdzaUFpUUFBbjFEQUFDQWZ5QUFRd0RnZjBkZURRQWFRd0FBZ1A4Z0FFTUE0SC9IWFEwQUdpQUF2Q0lCUWYvLy8vOEhjVVVnQVVHQWdJRDhCM0ZCZ0lDQS9BZEdja1VFUUVHQVFDRURBa0FnQVNBQWl5SUZRd0FBZ0RoZ0JIOUJnRUFGSUFWREFBQ0FNMkJGRFFFZ0FVRVhka0gvQVhFaUEwSHhBR3RCZFUwRVFDQUNRZUNmQlVINUFVRUpJQUpCb0FGcUVCMGlBUkFYSWdSQkdHcEJpZHdJRUE0YUlBUVFHQ0FCRUI0Z0FrSGdud1ZCL2dGQkNTQUNRYUFCYWhBZElnRVFGeUlFUVJocVFiZmJDQkFPR2lBRUVCZ2dBUkFlQzBGL1FmNEFJQU5yZEF0eHZnd0NDME1BQUFBQVF3QUFBSUFnQUVNQUFBQUFYaHNNQVFzZ0FBc2hCU0FDUWJBQmFpUUFJQVVMRlFBZ0FFR2tLa0hwQVVIc0FVR0NnSkFWRUkwVEN6b0NBWDhCZmlBQktRTUlJZ01nQUNrREVJTWdBMUVFZndOQUlBQkZJQUFnQVVaeVJRUkFJQUFvQWdBaEFBd0JDd3NnQUVFQVJ3VkJBQXNMWlFFRGZ5TUFRUkJySWdJa0FDQUFFSWdESWdBZ0FDZ0NBRUVNYXlJREtBSUFhaUlCSUFFb0FnUkJoQWh5TmdJRUlBSkJDR29pQVNBQUlBTW9BZ0JxRUlzR0VJWUlJQUVRWkNBQUlBQW9BZ0JCREdzb0FnQnFRUWsyQWdnZ0FrRVFhaVFBSUFBTEZ3QWdBQkROQ1NBQUxRQUlRUUZIQkVBUWJ3QUxJQUFMVWdFQmZ5TUFRYkFCYXlJSEpBQWdBQ0FCUmlBQ1FRQWdBRVVnQVVWeUczSkZCRUFnQnlBRklBWWdBeUFIUWFBQmFoQWRJZ0FRRnlJQlFSaHFJQVFRRGhvZ0FSQVlJQUFRSGdzZ0IwR3dBV29rQUFzM0FRRi9JQUFvQWdRaUFRUkFJQUVoQUFOQUlBQWlBU2dDQUNJQURRQUxJQUVQQ3dOQUlBQWdBQ2dDQ0NJQUtBSUFSdzBBQ3lBQUN4RUFJQUFvQWdSQkNHb2dBUkFTR2lBQUN5RUFJQUFnQVNBQ0VQUVpJZ0VwQWdBM0FnQWdBQ0FCS0FJSU5nSUlJQUVRVlFzUEFDQUFLQUlJRUxFSElBQVF0d0lMQ3dBZ0FDQUJRUlVROVFZTENBQWdBQkM3QWhvTEJBQkJBQXNOQUNBQUlBRkJDR29RK1FjYUM1a0JBUU4vSUFFc0FBdEJBRTRFUUNBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlJTmdJSUlBQVBDeUFCS0FJQUlRTUNRQUpBQWtBZ0FTZ0NCQ0lCRU5VSUJFQWdBQkNLQlNFQ0lBQWdBUkNMQlF3QkN5QUFFSmdHSUFGQmNFOE5BU0FBSUFFUWx3WkJBV29pQkJDVUJpSUNFSllHSUFBZ0JCQ1ZCaUFBSUFFUTB3UUxJQUlRZ3dFZ0F5QUJRUUZxRUxrREdnd0JDeEM0QXdBTElBQUxKUUVCZndOQUlBRkJBMGNFUUNBQUlBRkJBblJxUVFBMkFnQWdBVUVCYWlFQkRBRUxDd3NzQUNBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlZTmdJWUlBQWdBU2tDRURjQ0VDQUFJQUVwQWdnM0FnZ2dBQXN1QVFGL0l3QkJFR3NpQVNRQUlBQUVmeUFBUVFocUJTQUJRUWhxRUpnRUN5Z0NBQ0VBSUFGQkVHb2tBQ0FBQzRJTEFSSi9Jd0JCSUdzaUJ5UUFJQWRCQURZQ0dDQUhRZ0EzQXhBZ0FTZ0NFQ2dDR0NFRUl3QkJNR3NpQ1NRQUlBZEJFR29pQ2lBRUVONENJQW9nQkVFRWFoRGVBaUFLSUFSQkNHb1EzZ0lnQ2lBRVFReHFFTjRDSUFvZ0JFRVFhaERlQWlBS0tBSUFJUThnQ2lnQ0JDRVFJQWxDQURjREtDQUpRUUEyQWlRZ0NVRUFPZ0FqSUFsQkFEb0FJa0VnRUJVaUFpQUtOZ0lFSUFKQitQWVNOZ0lBSUFJZ0JEWUNIQ0FDUVFBNkFBZ2dBaUFKUVNKcU5nSVlJQUlnQ1VFamFqWUNGQ0FDSUFsQkpHbzJBaEFnQWlBSlFTaHFOZ0lNSUFrZ0FqWUNHQ0FKUVFocUlRVWdCRUVjYWlFRElBUkJJR29oQWdOQUlBTWdBaWdDQUNJQ1JnUkFJQVJCNEFCcUlRTWdCRUhrQUdvaEFnTkFJQU1nQWlnQ0FDSUNSZ1JBSUFSQnBBRnFJUU1nQkVHb0FXb2hBZ05BSUFNZ0FpZ0NBQ0lDUmdSQUlBUW9BdVFCSWdJRVFDQUNJQVZCQVJDTkF3c2dCQ2dDNkFFaUFnUkFJQUlnQlVFQkVJMERDeUFFUWZBQmFpRURJQVJCOUFGcUlRSURRQ0FESUFJb0FnQWlBa1lFUUNBRVFiUUNhaUVESUFSQnVBSnFJUUlEUUNBRElBSW9BZ0FpQWtZRVFDQUVRZmdDYWlFRElBUkIvQUpxSVFJRFFDQURJQUlvQWdBaUFrWUVRQ0FFUWJ3RGFpRURJQVJCd0FOcUlRSURRQ0FESUFJb0FnQWlBa1lFUUNBRVFZQUVhaUVESUFSQmhBUnFJUUlEUUNBRElBSW9BZ0FpQWtZRVFDQUVRWWdGYWlFRElBUkJqQVZxSVFJRFFDQURJQUlvQWdBaUFrWUVRQ0FFUWN3RmFpRURJQVJCMEFWcUlRSURRQ0FESUFJb0FnQWlBa1lFUUNBRVFjUUVhaUVESUFSQnlBUnFJUUlEUUNBRElBSW9BZ0FpQWtZRVFDQUVLQUtRQmlFUklBUW9Bb3dHSVFJRFFDQUNJQkZHQkVBQ1FDQUVLQUtjQmlFRElBUW9BcGdHSVFJRFFDQUNJQU5HRFFFZ0FpQUZRUUVRalFNZ0FrRkFheUVDREFBTEFBc0ZJQUlvQWdBaENDTUFRU0JySWcwa0FDQU5JQVUyQWd3Z0RVR3c5QkkyQWdnZ0RTQU5RUWhxSWdzMkFoZ0NRQ0FJS0FJQUlnTUVRQ0FESUF0QkFSRCtBa1VOQVFzZ0NDZ0NDQ0VHSUFnb0FnUWhBd05BSUFNZ0JrY0VRQ0FES0FJQUlRd2dBMEVFYWlFRElBd2dDMEVCRVA0Q0RRRU1BZ3NMSUFoQkZHb2hEQ0FJUVJocUlRTURRQ0FNSUFNb0FnQWlCa2NFUUNBR1FRUnFJUU1nQmlBTFFRRVEvZ0lOQVF3Q0N3c2dDQ2dDV0NFU0lBZ29BbFFoQXdOQUlBTWdFa2NFUUNBREtBSUFJUVlnQTBFRWFpRURRUUFoREFKQUlBWW9BZ1FpRGdSQUlBNGdDMEVCRVA0Q1JRMEJDeUFHUVF4cUlSTWdCa0VRYWlFR0EwQWdCaWdDQUNJT0lCTkdJZ3dOQVNBT1FRUnFJUVlnRGlBTFFRRVEvZ0lOQUFzTElBd05BUXdDQ3dzZ0NDZ0NZQ0lEQkVBZ0F5QUxRUUVRL2dKRkRRRUxJQWdvQW1naEJpQUlLQUprSVFNRFFDQURJQVpHRFFFZ0F5Z0NBQ0VJSUFOQkJHb2hBeUFJSUF0QkFSRCtBZzBBQ3dzZ0N4QVdJQTFCSUdva0FDQUNRUVJxSVFJTUFRc0xCU0FDSUFWQkFSQ05BeUFDUVFScUlRSU1BUXNMQlNBQ0lBVkJBUkNOQXlBQ1FRUnFJUUlNQVFzTEJTQUNJQVZCQVJDTkF5QUNRUVJxSVFJTUFRc0xCU0FDSUFWQkFSQ05BeUFDUVFScUlRSU1BUXNMQlNBQ0lBVkJBUkNOQXlBQ1FRUnFJUUlNQVFzTEJTQUNJQVZCQVJDTkF5QUNRUVJxSVFJTUFRc0xCU0FDSUFWQkFSQ05BeUFDUVFScUlRSU1BUXNMQlNBQ0lBVkJBUkNOQXlBQ1FRUnFJUUlNQVFzTEJTQUNJQVZCQVJDTkF5QUNRUVJxSVFJTUFRc0xCU0FDSUFWQkFSQ05BeUFDUVFScUlRSU1BUXNMQlNBQ0lBVkJBUkNOQXlBQ1FRUnFJUUlNQVFzTElBVVFGaUFLS0FJQUlCQWdEMnRxUVFocklBUW9BZ3cyQWdBZ0NVRXdhaVFBSUFkQkFEWUNDQ0FIUWdBM0F3QWdBU0FIRU5NS0lBQWdBU2dDRUNnQ0JDQUhLQUlBSWdBZ0J5Z0NCQ0FBYTBFQ2RTQUhLQUlRSWdBZ0J5Z0NGQ0FBYTBFQ2RVRWdFSTBYSUFjUU1ob2dDaEF5R2lBSFFTQnFKQUFMQ3dBZ0FFR2dpeElRMFF3TFRnRURmeU1BUWJBQmF5SUJKQUFnQUJDdEV5SUFSUVJBSUFGQjJLOERRYzBBUVE0Z0FVR2dBV29RSFNJQ0VCY2lBMEVZYWtIdHFRZ1FEaG9nQXhBWUlBSVFIZ3NnQVVHd0FXb2tBQ0FBQ3c0QUlBQWdBU2tDQURjQ0FDQUFDMFFCQW44akFFRVFheUlDSkFBZ0FFRUFFQ0loQVFOQUlBRkZJQUFnQVVaeVJRUkFJQUpCQURZQ0RDQUJJZ0FnQWtFTWFoQWlJUUVNQVFzTElBSkJFR29rQUNBQkM4TUJBUU4vSXdCQklHc2lBeVFBSUFBdEFBUWhCU0FBS0FJQUlnQVFIQ0FBUWNnQ2FpRUFBa0FnQlFSQUlBRW9BZ0FoQlNBRElBRW9BZ1FnQVMwQUN5SUVJQVJCR0hSQkdIVkJBRWdpQkJzMkFod2dBeUFGSUFFZ0JCczJBaGdnQXlBREtRTVlOd01JSUFBZ0EwRUlhaUFDRVBrQkRBRUxJQUVvQWdBaEJTQURJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFZCQUVnaUJCczJBaFFnQXlBRklBRWdCQnMyQWhBZ0F5QURLUU1RTndNQUlBQWdBeUFDRU5VQkN5QURRU0JxSkFBTEVnQWdBRUVBTmdJVUlBQWdBQ2dDRUJBMkN6VUJBMzhqQUVFZ2F5SUNKQUFnQWtFSWFpQUNRUlZxSWdNZ0FrRWdhaUlFSUFFUW1STWdBQ0FESUFJb0FnZ1E1Z2tnQkNRQUN4Z0FJQUF0QUJsRkJFQkJBQThMSUFBZ0FDMEFHQkNSQkFzTEFDQUFRYXlDRUJEUkRBc1BBQ0FBRU0wSklBQXRBQWhCQWtZTEN3QWdBRUdnaVJJUTRSSUxDd0FnQUNnQ0FCRE1CeG9MdUFJQkIzOGpBRUhnQUdzaUF5UUFJQU1nQVRZQ1hDQUFJQU5CM0FCcUVPd0JSUVJBSUFOQjBBQnFJZ0VnQWhDSEZ5QURRVGhxSUFCQkZHb2lCeUFEUVVCcklBRVFWQ0lDRUpjTElBTXRBRHhGQkVBZ0EwRW9haUFEUWRBQWFrR3h2UVVRdUFKQkFDRUJJQU10QUR3aEJBTkFJQVFFUUNBRFFTaHFFQThhQlNBRFFRaHFJZ1lnQVJDTUJDQURRUmhxSWdRZ0JpQURRU2hxSWdVb0FnQWdCU0FGTFFBTElnaEJHSFJCR0hWQkFFZ2lDUnNnQlNnQ0JDQUlJQWtiRUowVElnVXBBZ0EzQWdBZ0JDQUZLQUlJTmdJSUlBVVFWU0FDSUFRUW5nRWdCQkFQR2lBR0VBOGFJQVFnQnlBQ0VKY0xJQU1nQXlnQ0dEWUNPQ0FESUFNdEFCd2lCRG9BUENBQlFRRnFJUUVNQVFzTEN5QUFJQU5CM0FCcUVKZ0xJQUlRNEFJZ0FoQVBHaUFEUWRBQWFoQVBHZ3NnQTBIZ0FHb2tBQXNkQUNBQUtBSVFJZ0JGQkVBUWJ3QUxJQUFnQUNnQ0FDZ0NHQkVBQUFzTEFDQUFRZ0EzQWdBZ0FBdFdBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQUovSUFGQlAwMEVRQ0FBS1FNQUlBR3RpS2RCQVhFTUFRdEJBQ0FBS0FJSUlnQkZEUUFhSUFBZ0FrRU1haERBQXlBQVFRUnFSd3NoQVNBQ1FSQnFKQUFnQVFzU0FDQUFJQUkyQWdRZ0FDQUJOZ0lBSUFBTFlBRUNmeU1BUWNBQmF5SUNKQUFnQWlBQk5nSzhBU0FCUlFSQUlBSkJDR3BCcFlvRlFZOEJRUWdnQWtHb0FXb1FIU0lCRUJjaUEwRVlha0dscWdnUURob2dBeEFZSUFFUUhnc2dBRUVRYWlBQ1Fid0JhaER3SENBQ1FjQUJhaVFBQzVRQ0FRTi9Jd0JCMEFGcklnVWtBQ0FGSUFNMkFzUUJJQVVnQkRnQ3lBRWdBeERLQTBVRVFDQUZRUkJxUWNXdEJVR1ZCRUVJSUFWQnNBRnFFQjBpQmhBWElnZEJHR3BCd3VZSUVBNGFJQWNRR0NBR0VCNExJQUFDZnlBQUFuOGdCSXREQUFDQWYxMUZCRUFnQlVHd0FXb2lBQ0FESUFNb0FnQW9BZ3dSQWdBZ0JTQUZLQUswQVNBRkxRQzdBU0lHSUFaQkdIUkJHSFZCQUVnaUJoczJBZ3dnQlNBRktBS3dBU0FBSUFZYk5nSUlJQVVnQlNrRENEY0RBQ0FGUVJCcUlnWWdCQ0FGRVA0RElBRWdCaUFDRUYwZ0JoQVBHaUFBRUE4YVFRSWdBUzBBQkVVTkFob2dBU0FERUpFQkRBRUxJQUVvQWdBZ0JVSEVBV29nQlVISUFXb1Fyd0lMTmdJQVFRRUxPZ0FFSUFWQjBBRnFKQUFMR3dFQmZ5QUFLQUlBSVFJZ0FDQUJOZ0lBSUFJRVFDQUNFQjhMQ3hVQUlBQkJoT0VTTmdJQUlBQkJGR29RdXdZZ0FBdlhCUUVGZnlNQVFSQnJJZ1lrQUNBR1FRaHFJQUVnQWlBREVEZ1FsZ01DUUFKQUlBWW9BZ2dFUUNBR0tBSU1EUUVMSUFBUVp4b01BUXNnQVNnQ0FDRUJJQVpCQ0dvaEJ5TUFRU0JySWdNa0FBSkFBa0FDUUFKQUFrQUNRQ0FCSUFJUStBb0VRRUVCSVFRZ0FrRUJFRGdpQWtFbmF5SUZRUVpMUVFFZ0JYUkJ5UUJ4UlhJTkFRd0NDMEVCSVFRQ1FDQUNLQUlVSWdKQjd3QnJJZ1ZCSEUxQkFFRUJJQVYwUVlHQWdzZ0JjUnNOQUNBQ1FhMEJheUlGUVFaTlFRQkJBU0FGZEVIVkFIRWJEUUJCQUNFRUMwRUJJUVVnQWtHc0FXc2lDRUVHVFVFQVFRRWdDSFJCMVFCeEd3MERBa0FnQWtHR0FXc09CQVFEQXdRQUN5QUNRZkFBUmcwRERBSUxBa0FDUUNBQ1FRVnJEZ01DQVFJQUN5QUNRY29BUmcwQkMwRUFJUVFMUVFFaEJTQUNRY3NBUmlBQ1FTWnJJZ0pCQmsxQkFFRUJJQUowUWNrQWNSdHlEUUVMSUFSRkRRRkJBQ0VGUVFFaEJBc0NRQ0FIS0FJQUlnSUVRQ0FIS0FJRURRRUxJQUZCQURvQWxBTWdBVUdvQkdwQi9mQU1FQmthSUFBUVp4b01BZ3NnQjBFRWFpRUlJQUlRN2dNaUFrVUVRQ0FCUVFBNkFKUURJQUZCcUFScVFiVHpDeEFaSUFnb0FnQW9BZ1JCQkdvUXNBTkIyL2dNRUJrYUlBQVFaeG9NQWdzQ1FDQUZCRUFnQVNBQ0VJNFpJZ0pGRFFFZ0EwRUFOZ0lZSUFOQ0FEY0RFQ0FEUWdBM0F3Z2dBQ0FDSUFGQklHb2lBQ0FEUVFocUlBSWdBQ0FDS0FJQUtBSUlFUUVBSUFnUTFnUVFhUm9NQXdzZ0JFVU5BQUovUVFBaEJDQUNLQUlFSWdWQnNNc1NSZ1JBSUFGQmtBTnFFT3dEREFFTEFrQWdCVUdvekJKSERRQWdBaWdDQ0NnQ0JFR3d5eEpIRFFBZ0FVR1FBMm9pQkNBRUVPd0RJQUlvQWd3US93SWhCQXNnQkFzaUFrVU5BQ0FEUVFBMkFoZ2dBMElBTndNUUlBTkNBRGNEQ0NBQUlBSWdBVUVnYWlJQUlBTkJDR29nQWlBQUlBSW9BZ0FvQWdnUkFRQWdDQkRXQkJCcEdnd0NDeUFBSUFjUVd4b01BUXNnQUNBSEVGc2FDeUFEUVNCcUpBQUxJQVpCRUdva0FBc0ZBQkFCQUFzWEFDQUFJQUVRdWdFaUFFVUVRRUVBRHdzZ0FDOEJIZ3RNQVFGL0lBQW9BaFFpQWlBQUtBSVlUd1JBSUFBZ0FDZ0NHQ0lDUVFGMFFRSWdBaHNRMWdJZ0FDZ0NGQ0VDQ3lBQUlBSkJBV28yQWhRZ0FDZ0NFQ0FDUVFKMGFpQUJLQUlBTmdJQUM1UUNBUU4vSXdCQjBBRnJJZ1VrQUNBRklBTTJBc1FCSUFVZ0JEZ0N5QUVnQXhES0EwVUVRQ0FGUVJCcVFjV3RCVUdWQkVFSUlBVkJzQUZxRUIwaUJoQVhJZ2RCR0dwQnd1WUlFQTRhSUFjUUdDQUdFQjRMSUFBQ2Z5QUFBbjhnQkl0REFBQ0FmMTFGQkVBZ0JVR3dBV29pQUNBRElBTW9BZ0FvQWd3UkFnQWdCU0FGS0FLMEFTQUZMUUM3QVNJR0lBWkJHSFJCR0hWQkFFZ2lCaHMyQWd3Z0JTQUZLQUt3QVNBQUlBWWJOZ0lJSUFVZ0JTa0RDRGNEQUNBRlFSQnFJZ1lnQkNBRkVQNERJQUVnQmlBQ0VGMGdCaEFQR2lBQUVBOGFRUUlnQVMwQUJFVU5BaG9nQVNBREVKRUJEQUVMSUFFb0FnQWdCVUhFQVdvZ0JVSElBV29RclFJTE5nSUFRUUVMT2dBRUlBVkIwQUZxSkFBTG1BSUJBMzhqQUVIUUFXc2lCU1FBSUFVZ0F6WUN4QUVnQlNBRU9RUElBU0FERU1vRFJRUkFJQVZCRUdwQnhhMEZRWlVFUVFnZ0JVR3dBV29RSFNJR0VCY2lCMEVZYWtIQzVnZ1FEaG9nQnhBWUlBWVFIZ3NnQUFKL0lBQUNmeUFFbVVRQUFBQUFBQUR3ZjJORkJFQWdCVUd3QVdvaUFDQURJQU1vQWdBb0Fnd1JBZ0FnQlNBRktBSzBBU0FGTFFDN0FTSUdJQVpCR0hSQkdIVkJBRWdpQmhzMkFnd2dCU0FGS0FLd0FTQUFJQVliTmdJSUlBVWdCU2tEQ0RjREFDQUZRUkJxSWdZZ0JDQUZFSVlHSUFFZ0JpQUNFRjBnQmhBUEdpQUFFQThhUVFJZ0FTMEFCRVVOQWhvZ0FTQURFSkVCREFFTElBRW9BZ0FnQlVIRUFXb2dCVUhJQVdvUXJnSUxOZ0lBUVFFTE9nQUVJQVZCMEFGcUpBQUxPQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDSUFJQUZCQ0dvZ0FSRHBDaG9nQUJDdkF5QUFFRlVnQVVFUWFpUUFJQUFMQ1FBZ0FDQUJFTklCQzV3QkFRUi9Ba0FnQVNBQUVEc2lBa3NFUUNNQVFSQnJJZ1FrQUNBQklBSnJJZ0lFUUNBQUVKc0JJUU1nQUJBN0lnRWdBbW9oQlNBQ0lBTWdBV3RMQkVBZ0FDQURJQVVnQTJzZ0FTQUJRUUFROUFrTElBQVF3UU1pQXhDREFTQUJhaUFDUVFBUW5CUWdBQ0FGRUpnSUlBUkJBRG9BRHlBRElBVnFJQVJCRDJvUTBRSUxJQVJCRUdva0FBd0JDeUFBSUFBUXdRTVFnd0VnQVJDb0V3c0xDd0FnQUNBQlFSWVE5UVlMTGdFQmZ3SkFJQUFnQVJBZ0lnRkZEUUFnQVM4QkhrRXJSdzBBSUFBZ0FTZ0NKRUVCUVFFUWdoWWhBZ3NnQWdzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFNkFBQWdBMEVCYWlFRElBSkJBV3NpQWcwQUN3c2dBQXNWQUNBQUxRQVlSUVJBUVFBUEN5QUFRUUFRa1FRTEtnRUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBU2dDREJEQkF4Q0RBU0VBSUFGQkVHb2tBQ0FBQ3d3QUlBQWdBVUgwQmhEYUNRc3pBUUYvSUFJRVFDQUFJUU1EUUNBRElBRXRBQUE2QUFBZ0EwRUJhaUVESUFGQkFXb2hBU0FDUVFGcklnSU5BQXNMSUFBTERBQWdBQ0FCUVJ4cUVQa0dDNjBNQVFaL0l3QkJFR3NpQkNRQUlBUWdBRFlDREFKQUlBQkIwd0ZOQkVCQjhQOE5RYkNCRGlBRVFReHFFUFVVS0FJQUlRSU1BUXNnQUVGOFR3UkFFRzhBQ3lBRUlBQWdBRUhTQVc0aUJrSFNBV3dpQW1zMkFnaEJzSUVPUWZDQ0RpQUVRUWhxRVBVVVFiQ0JEbXRCQW5VaEJRTkFJQVZCQW5SQnNJRU9haWdDQUNBQ2FpRUNRUVVoQUFOQUFrQWdBRUV2UmdSQVFkTUJJUUFEUUNBQ0lBQnVJZ0VnQUVrTkJTQUNJQUFnQVd4R0RRSWdBaUFBUVFwcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVF4cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVJCcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVJKcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVJacUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVJ4cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVI1cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVNScUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVNocUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVNwcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVM1cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVRScUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVRwcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVR4cUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUWNJQWFpSUJiaUlESUFGSkRRVWdBaUFCSUFOc1JnMENJQUlnQUVIR0FHb2lBVzRpQXlBQlNRMEZJQUlnQVNBRGJFWU5BaUFDSUFCQnlBQnFJZ0Z1SWdNZ0FVa05CU0FDSUFFZ0EyeEdEUUlnQWlBQVFjNEFhaUlCYmlJRElBRkpEUVVnQWlBQklBTnNSZzBDSUFJZ0FFSFNBR29pQVc0aUF5QUJTUTBGSUFJZ0FTQURiRVlOQWlBQ0lBQkIyQUJxSWdGdUlnTWdBVWtOQlNBQ0lBRWdBMnhHRFFJZ0FpQUFRZUFBYWlJQmJpSURJQUZKRFFVZ0FpQUJJQU5zUmcwQ0lBSWdBRUhrQUdvaUFXNGlBeUFCU1EwRklBSWdBU0FEYkVZTkFpQUNJQUJCNWdCcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUWVvQWFpSUJiaUlESUFGSkRRVWdBaUFCSUFOc1JnMENJQUlnQUVIc0FHb2lBVzRpQXlBQlNRMEZJQUlnQVNBRGJFWU5BaUFDSUFCQjhBQnFJZ0Z1SWdNZ0FVa05CU0FDSUFFZ0EyeEdEUUlnQWlBQVFmZ0FhaUlCYmlJRElBRkpEUVVnQWlBQklBTnNSZzBDSUFJZ0FFSCtBR29pQVc0aUF5QUJTUTBGSUFJZ0FTQURiRVlOQWlBQ0lBQkJnZ0ZxSWdGdUlnTWdBVWtOQlNBQ0lBRWdBMnhHRFFJZ0FpQUFRWWdCYWlJQmJpSURJQUZKRFFVZ0FpQUJJQU5zUmcwQ0lBSWdBRUdLQVdvaUFXNGlBeUFCU1EwRklBSWdBU0FEYkVZTkFpQUNJQUJCamdGcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUVpRQmFpSUJiaUlESUFGSkRRVWdBaUFCSUFOc1JnMENJQUlnQUVHV0FXb2lBVzRpQXlBQlNRMEZJQUlnQVNBRGJFWU5BaUFDSUFCQm5BRnFJZ0Z1SWdNZ0FVa05CU0FDSUFFZ0EyeEdEUUlnQWlBQVFhSUJhaUlCYmlJRElBRkpEUVVnQWlBQklBTnNSZzBDSUFJZ0FFR21BV29pQVc0aUF5QUJTUTBGSUFJZ0FTQURiRVlOQWlBQ0lBQkJxQUZxSWdGdUlnTWdBVWtOQlNBQ0lBRWdBMnhHRFFJZ0FpQUFRYXdCYWlJQmJpSURJQUZKRFFVZ0FpQUJJQU5zUmcwQ0lBSWdBRUd5QVdvaUFXNGlBeUFCU1EwRklBSWdBU0FEYkVZTkFpQUNJQUJCdEFGcUlnRnVJZ01nQVVrTkJTQUNJQUVnQTJ4R0RRSWdBaUFBUWJvQmFpSUJiaUlESUFGSkRRVWdBaUFCSUFOc1JnMENJQUlnQUVHK0FXb2lBVzRpQXlBQlNRMEZJQUlnQVNBRGJFWU5BaUFDSUFCQndBRnFJZ0Z1SWdNZ0FVa05CU0FDSUFFZ0EyeEdEUUlnQWlBQVFjUUJhaUlCYmlJRElBRkpEUVVnQWlBQklBTnNSZzBDSUFJZ0FFSEdBV29pQVc0aUF5QUJTUTBGSUFJZ0FTQURiRVlOQWlBQ0lBQkIwQUZxSWdGdUlnTWdBVWtOQlNBQVFkSUJhaUVBSUFJZ0FTQURiRWNOQUFzTUFRc2dBaUFBUVFKMFFmRC9EV29vQWdBaUFXNGlBeUFCU1EwRElBQkJBV29oQUNBQ0lBRWdBMnhIRFFFTEMwRUFJQVZCQVdvaUFDQUFRVEJHSWdBYklRVWdBQ0FHYWlJR1FkSUJiQ0VDREFBTEFBc2dCRUVRYWlRQUlBSUx3Z0VCQlg4akFFRVFheUlDSkFBZ0FrSGNGellDQkNBQ0lBQTJBZ0FnQWtFQU5nSUlJd0JCRUdzaUF5UUFJQUFvQWdCQmYwY0VRQ0FESUFOQkNHb2dBaEN3RkJDQUF5RUJBMEFnQUNnQ0FFRUJSZzBBQ3lBQUtBSUFSUVJBSUFCQkFUWUNBQ0FCS0FJQUtBSUFJZ0VvQWdBZ0FTZ0NDQ0lGUVFGMWFpRUVJQUVvQWdRaEFTQUVJQVZCQVhFRWZ5QUVLQUlBSUFGcUtBSUFCU0FCQ3hFREFDQUFRWDgyQWdBTEN5QURRUkJxSkFBZ0FDZ0NCQ0VBSUFKQkVHb2tBQ0FBUVFGckMza0JCSDlCb01NVklRRkJ2d1VoQWdOQUlBSUVRQ0FDSUFKQkFYWWlBMEYvYzJvZ0F5QUJJQU5CNkFCc2FpSURLQUlFSUFCSklnUWJJUUlnQTBIb0FHb2dBU0FFR3lFQkRBRUxDd0pBSUFGQnVQNFpSZzBBSUFFb0FnUWdBRWNOQUNBQktBSUFEd3RCZ0xvSlFiMndBa0hMQVVHeXZnTVFBQUFMK1FRQkIzOGpBRUVRYXlJSUpBQWdBUkMwQmlBSVFRaHFJQUVRc0JRaEJ5QUFRUWhxSWdNb0FnQWlBU0FBS0FJTUVJSUVJQUpOQkg4Q1FDQURLQUlBSWdRZ0F5Z0NCQkNDQkNJQklBSkJBV29pQUVrRVFDTUFRU0JySWdra0FBSkFJQUFnQVdzaUJDQURFTllGS0FJQUlBTW9BZ1FpQUd0QkFuVk5CRUFnQXlBRUVPY1REQUVMSUFNUThBa2hCU0FESUFNb0FnQWdBQkNDQkNBRWFoRFhFeUVBSUFNb0FnQWdBeWdDQkJDQ0JDRUdJQWxCQ0dvaUFVRU1haENZQkVFRWFpQUZFSUFER2lBQklBQUVmeUFCS0FJUUlBQVEwUk1GUVFBTElnVTJBZ0FnQVNBRklBWkJBblJxSWdZMkFnZ2dBU0FHTmdJRUlBRVE3Z2tnQlNBQVFRSjBhallDQUNNQVFSQnJJZ0FrQUNBQUlBRW9BZ2cyQWdBZ0FTZ0NDQ0VGSUFBZ0FVRUlhallDQ0NBQUlBVWdCRUVDZEdvMkFnUWdBQ0lFS0FJQUlRVURRQ0FFS0FJRUlBVkhCRUFnQlJEVUV5QUVJQVFvQWdCQkJHb2lCVFlDQUF3QkN3c2dCQ2dDQ0NBRUtBSUFOZ0lBSUFCQkVHb2tBQ0FCUVFScUlnUWlBQ0FBS0FJQUlBTW9BZ1FnQXlnQ0FDSUZheUlBYXlJR05nSUFJQUJCQUVvRVFDQUdJQVVnQUJCOUdnc2dBeUFFRUtrQklBTkJCR29nQVVFSWFoQ3BBU0FERU5ZRklBRVE3Z2tRcVFFZ0FTQUJLQUlFTmdJQUlBRWdBU2dDQkJEYkR5QUJLQUlBSWdBRVFDQUJLQUlRSUFBZ0FSRHVDU2dDQUNBQktBSUFhMEVDZFJEdkRBc0xJQWxCSUdva0FBd0JDeUFBSUFGSkJFQWdBeUFFSUFCQkFuUnFFTmdUQ3dzZ0F5Z0NBQVVnQVFzZ0FoQ0hCeUlBS0FJQUlnRUVmeUFCRU13SEdpQURLQUlBSUFJUWh3Y0ZJQUFMSUFjUXBRZzJBZ0FnQnlnQ0FDRUFJQWRCQURZQ0FDQUFCRUFnQUJETUJ4b0xJQWhCRUdva0FBc1ZBUUYvSXdCQkVHc2lBU0FBTmdJTUlBRW9BZ3dMRndBZ0FDZ0NCRUc0clJKR0JIOGdBQ2dDR0FVZ0FBc0w3amtERlg4Q2ZRRitJd0JCRUdzaUZpUUFJQllnQVRZQ0RBSkFJQUF0QUpRRFJRMEFJQUFvQXJ3RklnVkZCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrR3Q1QUFRR1JvTUFRc2dCU0FCRU9rQklnVkZCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrR1RsUXdRR1NBV1FReHFFQzhhREFFTEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFVb0FoQU9Ed0FCQWdNRUJRb0tDZ2NHQ0FzSkRBc0xJQUJCa0FOcUVKd0xJUU1NQ3dzZ0FFR1FBMm9Rb2hvaEF3d0tDeUFGSUFVb0FnQW9BaVFSQUFBaEFpTUFRUkJySWdFa0FBSi9JQUlvQWhSQklFWUVRQ0FBUVpBRGFpRUFJQUl0QUJnRVFDQUFFT3dEREFJTElBQVE3UU1NQVFzZ0FFRUFPZ0NVQXlBQVFhZ0Vha0htaUF3UUdTRUFJQUVnQWlnQ0ZEWUNEQ0FBSUFGQkRHb1FMeHBCQUFzaEF5QUJRUkJxSkFBTUNRc2dCU0FGS0FJQUtBSXNFUUFBSVFFakFFRVFheUlDSkFBQ2Z5QUJLQUlVUVNCR0JFQWdBRUdRQTJvUWxnVU1BUXNnQUVFQU9nQ1VBeUFBUWFnRWFrSE9pQXdRR1NFQUlBSWdBU2dDRkRZQ0RDQUFJQUpCREdvUUx4cEJBQXNoQXlBQ1FSQnFKQUFNQ0FzZ0JTQUZLQUlBS0FJMEVRQUFJZ0VvQWhnaEFpQUFJQUFvQXJ3RklBRW9BaFFRandSQkFCQ0ZBU0lCQkg4Z0FFR1FBMm9nQVNBQ0VQOENCVUVBQ3lFRERBY0xJQVVnQlNnQ0FDZ0NQQkVBQUNJQ0tBSVVJZ0VnQVNnQ0FDZ0NPQkVBQUNJQktBSVlJUU1nQWlnQ0dDRUNJQUFnQUNnQ3ZBVWdBU2dDRkJDUEJFRUFFSVVCSWdFRWZ5TUFRVEJySWdra0FDQUpJQUkyQWdnZ0NTQUJOZ0lNSUFrZ0F6WUNCQ0FBUVpBRGFpSUFLQUlBSVF3Z0NVRVFhaUFCSUFJZ0F4QzNHaUFKUVJocUlBbEJIR29nQ1VFZ2FoQy9CeUVFSUF4QjNBRnFJUThDUUFKQUlBd29BdUFCSWc1RkRRQWdEeWdDQUFKL0lBNUJBV3NnQkhFZ0Rta2lBa0VCVFEwQUdpQUVJQVFnRGtrTkFCb2dCQ0FPY0FzaUFFRUNkR29vQWdBaUFVVU5BQ0FPUVFGcklSTWdDU2dDSUNFU0lBa29BaHdoRFNBSktBSVlJUVVnQWtFQlN5RUNBMEFnQVNnQ0FDSUJSUTBCSUFRZ0FTZ0NCQ0lEUndSQUFrQWdBa1VFUUNBRElCTnhJUU1NQVFzZ0F5QU9TUTBBSUFNZ0RuQWhBd3NnQUNBRFJnMEJEQUlMSUFFcEFnaENJSWluSWdjb0FnZ2dCVWNOQUNBSEtBSU1JQTFIRFFBZ0J5Z0NFQ0FTUncwQUN3d0JDeUFNUWNBQmFpSUJFS29ESWdjZ0NTZ0NEQ0FKS0FJSUlBa29BZ1FRdHhvZ0FTQUhFQ2dnQVNBQktBSVlRUUZxTmdJWUFrQWdEQ2dDNEFFaUFrVU5BQ0FQS0FJQUFuOGdBa0VCYXlBRWNTQUNhU0lEUVFGTkRRQWFJQVFnQWlBRVN3MEFHaUFFSUFKd0N5SUFRUUowYWlnQ0FDSUJSUTBBSUFKQkFXc2hEU0FEUVFGTElRVURRQ0FCS0FJQUlnRkZEUUVnQkNBQktBSUVJZ05IQkVBQ1FDQUZSUVJBSUFNZ0RYRWhBd3dCQ3lBQ0lBTkxEUUFnQXlBQ2NDRURDeUFBSUFOSERRSUxJQUVvQWd3Z0J4RG1CVVVOQUFzTUFRdEJFQkFWSWhRZ0JEWUNCQ0FVSUFTdElBZXRRaUNHaERjQ0NDQVVRUUEyQWdBZ0RFSGtBV29oQ2dKQVFRQWdBaUFNS0FMb0FVRUJhck1pR1NBTUtnTHNBU0lZSUFLemxGNGJEUUFDUUFKQUFuOUJBaUFDSUFKQkFXdHhRUUJISUFKQkEwbHlJQUpCQVhSeUlnRUNmeUFaSUJpVmpTSVlRd0FBZ0U5ZElCaERBQUFBQUdCeEJFQWdHS2tNQVF0QkFBc2lBQ0FBSUFGSkd5SUFRUUZHRFFBYUlBQWdBQ0FBUVFGcmNVVU5BQm9nQUJCL0N5SUxJQXdvQXVBQklnSk5CRUFnQWlBTFRRMENJQUpCQTBraEFBSi9JQXdvQXVnQnN5QU1LZ0xzQVpXTkloaERBQUNBVDEwZ0dFTUFBQUFBWUhFRVFDQVlxUXdCQzBFQUN5RUJJQUlnQ3lBQUlBSnBRUUZMY2dSL0lBRVFmd1VnQVVFQlFTQWdBVUVCYTJkcmRDQUJRUUpKR3dzaUFDQUFJQXRKR3lJTFRRMENJQXRGRFFFTElBdEJnSUNBZ0FSSkJFQWdEeUFMUVFKMEVCVVFiQ0FNSUFzMkF1QUJRUUFoQVFOQUlBRWdDMFlFUUNBTUtBTGtBU0lDUlEwRUlBSW9BZ1FoQlFKQUlBdHBJZ0JCQVUwRVFDQUZJQXRCQVd0eElRVU1BUXNnQlNBTFNRMEFJQVVnQzNBaEJRc2dEeWdDQUNBRlFRSjBhaUFLTmdJQUlBdEJBV3NoRXlBQVFRRkxJUklEUUNBQ0tBSUFJZ0JGRFFVZ0FDZ0NCQ0VEQWtBZ0VrVUVRQ0FESUJOeElRTU1BUXNnQXlBTFNRMEFJQU1nQzNBaEF3c0NRQ0FESUFWR0RRQWdBQ0VCSUFOQkFuUWlEaUFQS0FJQWFpSU5LQUlBUlFSQUlBMGdBallDQUNBRElRVU1BUXNEUUFKQUlBRWlBeWdDQUNJQlJRUkFRUUFoQVF3QkN5QUFLQUlNSUFFb0Fnd1E1Z1VoRFNBREtBSUFJUUVnRFEwQkN3c2dBaUFCTmdJQUlBTWdEeWdDQUNBT2FpZ0NBQ2dDQURZQ0FDQVBLQUlBSUE1cUtBSUFJQUEyQWdBTUFRc2dBQ0VDREFBTEFBVWdEeWdDQUNBQlFRSjBha0VBTmdJQUlBRkJBV29oQVF3QkN3QUxBQXNRK3dFQUN5QVBRUUFRYkNBTVFRQTJBdUFCQ3lBTUtBTGdBU0lDSUFKQkFXc2lBSEZGQkVBZ0FDQUVjU0VBREFFTElBSWdCRXNFUUNBRUlRQU1BUXNnQkNBQ2NDRUFDd0pBQWtBZ0R5Z0NBQ0FBUVFKMGFpSUFLQUlBSWdGRkJFQWdGQ0FNS0FMa0FUWUNBQ0FNSUJRMkF1UUJJQUFnQ2pZQ0FDQVVLQUlBSWdCRkRRSWdBQ2dDQkNFQkFrQWdBaUFDUVFGcklnQnhSUVJBSUFBZ0FYRWhBUXdCQ3lBQklBSkpEUUFnQVNBQ2NDRUJDeUFQS0FJQUlBRkJBblJxSVFFTUFRc2dGQ0FCS0FJQU5nSUFDeUFCSUJRMkFnQUxJQXdnRENnQzZBRkJBV28yQXVnQkN5QUpRVEJxSkFBZ0J3VkJBQXNoQXd3R0N5QUZJQVVvQWdBb0FtUVJBQUFoQXlNQVFSQnJJZ1VrQUFKL1FRQWdBQ0FBS0FLOEJTQURLQUlVRUk4RVFRQVFoUUVpQWtVTkFCb2dCVUVBTmdJTVFRQWdBQ0FESUFWQkRHb1FuUmxGRFFBYUlBQWdBU0FESUFCQmtBTnFJQUpCQUNBRktBSU1FS0VhRUp3WkN5RURJQVZCRUdva0FBd0ZDeUFGSUFVb0FnQW9BbHdSQUFBaEJ5TUFRU0JySWdRa0FDQUVJQUFvQXJRRklBRVFsQUZCQUJBNElnSTJBaHdDZjBFQUlBQWdBa0VBRUlVQklnVkZEUUFhSUFjb0Fod2lBaUFIS0FJZ1JnUkFJQUJCQURvQWxBTWdBRUdvQkdwQm9PMEVFQmthUVFBTUFRc2dBaWdDQUFSQUlBQkJBRG9BbEFNZ0FFR29CR3BCaDdrS0VCa2hBU0FFSUFBb0Fyd0ZJQWNRandRMkFoQWdBU0FFUVJCcUVDOUJsdFVBRUJrYVFRQU1BUXNnQUNnQ3VBVWdCMEVZYWlJREtBSUFFSklGSWdKRkJFQWdBRUVBT2dDVUF5QUFRYWdFYWtHSHVRb1FHU0VCSUFRZ0FDZ0N2QVVnQnhDUEJEWUNFQ0FCSUFSQkVHb1FMMEdQd3dzUUdTQURFQzlCck44QUVCa2FRUUFNQVFzZ0JDQUNFTHNPSWhvM0F4QWdHa0tBZ0lDQUVGb0VRQ0FBUVFBNkFKUURJQUJCcUFScVFZZTVDaEFaSVFFZ0JDQUFLQUs4QlNBSEVJOEVOZ0lBSUFFZ0JCQXZRWTIxREJBWklBUkJFR29RL0E0YVFRQU1BUXNnQkVFQU5nSU1RUUFnQUNBSElBUkJER29RblJsRkRRQWFJQUJCeEFacUlnSWdCRUVjYWhDcEFnUkFJQVFnQUNnQ3ZBVWdCeENQQkRZQ0NDQUVJQUlnQkVFSWFoQ1dBUXNnQUNBQklBY2dBRUdRQTJvZ0JTQWFweUFFS0FJTUVLRWFFSndaQ3lFRElBUkJJR29rQUF3RUN5QUZJQVVvQWdBb0Ftd1JBQUFoQWlNQVFlQUNheUlHSkFBZ0JpQUJOZ0xjQWlBR1FkQUNhaUFBSWdRZ0FSRFVCd0pBQWtBQ1FDQUdLQUxVQWlBR0tBTFFBaUlCYXlJQVFReEdCRUFDUUNBQktBSUFLQUlBSWdGQkFtc09BZ01DQUFzZ0JFRUFPZ0NVQXlBRVFhZ0Vha0gwd1FzUUdTQUdRZHdDYWhBdlFkLzlDeEFaSVFBZ0JpQUJOZ0xBQVNBQUlBWkJ3QUZxRUpFRkdnd0NDeUFBUVF4dFFRSkpEUUZCQUNFQklBUkJBRG9BbEFNZ0JFR29CR3BCdGRBSkVCa2dCa0hjQW1vUUwwRys1UWtRR1NFQUlBWWdCaWdDMUFJZ0JpZ0MwQUpyUVF4dE5nTEFBU0FBSUFaQndBRnFFQzhhREFJTElBWkJ3QUZxSUFSQnhBWnFJQVpCM0FKcUVKWUJDeUFHUW9DQWdJQ0FBVGNDeEFJZ0JpQUdRYUFDYWpZQ3dBSUNRQ0FHUVpBQ2FpQUNRUlJxRUxBQklnd29BZ0FpQVNBTUtBSUVJZ0pHQkVCQkFDRUJJQVJCQURvQWxBTWdCRUdvQkdwQjZvc01FQmtoQUNBR1FjQUJhaUlDSUFRb0FyUUZJQVlvQXR3Q0VKUUJFRmdnQUNBQ0VFMGFJQUlRRHhvTUFRc2dCa0VBTmdLSUFpQUdRZ0EzQTRBQ0lBUkJJR29oQ3lBRVFjZ0VhaUVVSUFSQnFBUnFJUTRnQmtIZ0FXb2hFZ0pBQTBBQ1FBSkFJQUlnQVd0QkFuVWdBMHNFUUNBR0lBUWdCQ2dDdkFVZ0FTQURRUUowYWlnQ0FCQ1BCQ0lOUVFBUWhRRWlBRFlDL0FFZ0FFVU5BaUFHUVlBQ2FpQUdRZndCYWhEWkJpQUdRY0FCYWlBRUlBWW9BdHdDSUFNUSt3NUJBU0VBSUFZb0F0d0NJUWNnQmlnQ3hBRWhCU0FHS0FMQUFTRUJBbjhDZndOQVFRUWdBU0FGUmcwQ0dpQUJLQUlBSWdvZ0FTZ0NCQ0lDUmdSQUlBUkJBRG9BbEFNZ0RrR25DQkFaR2tFQURBSUxBa0FDUUNBS0tBSUFRUXRISUFJZ0NtdEJCVWx5RFFCQkFDRUFBa0FDUUNBS0tBSUVEZ1VCQUFNQ0FnTUxJQVFnQXpZQ3FBWU1BUXNnQkNBTk5nS3NCaUFFSUFNMkFxUUdJQVFnQnpZQ29BWUxJQUZCREdvaEFRd0JDd3NnQkVFQU9nQ1VBeUFPUWFhTkNoQVpJQUVvQWdCQkJHb1FMeHBCQUFzaEFFRUJDeUVDSUFaQndBRnFFS1FDSUFCRkRRRWdCa0lBTndQd0FTQUdRb0NBZ0lDQUFUY0M1QUVnQmlBR1FjQUJhallDNEFFZ0JrR3dBV29nQkNBR0tBTGNBaUFERVBzT1FRQWhBQ0FHS0FLMEFTRU5JQVlvQXJBQklRRURRQUovQWtBZ0FTQU5SZ1IvUVFnRklBRVErZzROQVVFQklBRW9BZ0FvQWdCQkdFWU5BaG9nQmtINEFHb2hDU0FHS0FMY0FpRUtJQVlvQXZ3QklRSWpBRUh3QUdzaUNDUUFJQWdnQXpZQ2JBSkFJQUVvQWdBaUR5QUJLQUlFSWdkR0JFQWdCRUVBT2dDVUF5QUVRYWdFYWtHbkNCQVpHaUFKUWdBM0F4Z2dDVUlBTndNUUlBbENBRGNEQ0NBSlFnQTNBd0FnQ1VJQU53TXdJQWxDZ0lDQWdJQUJOd0lrSUFrZ0NUWUNJQXdCQ3lBSVFvQ0FnSUNBQVRjQ1ZDQUlRZ0EzQTJBZ0NDQUlRVEJxTmdKUUFrQUNRQUpBQWtBQ1FBSkFJQThvQWdBaUJRNElCQU1EQXdFRUF3SUFDeUFGUVJoclFRSkpEUU1nQlVFalJ3MENJQWNnRDJ0QkNFY0VRQ0FFUVFBNkFKUURJQVJCcUFScVFidmtDUkFaSVFJZ0NDQUJLQUlFSUFFb0FnQnJRUUoxUVFGck5nSVFJQUlnQ0VFUWFoQXZRYi8rQ1JBWklBaEI3QUJxRUM5QnhMRUtFQmtoQWlBSVFSaHFJZ1VnQkNBS0VQOEtJQUlnQlJCTkdpQUZFQThhSUFsQ0FEY0RHQ0FKUWdBM0F4QWdDVUlBTndNSUlBbENBRGNEQUNBSlFnQTNBekFnQ1VLQWdJQ0FnQUUzQWlRZ0NTQUpOZ0lnREFVTElBaEJBRFlDS0NBSVFnQTNBeUFnQ0VJQU53TVlJQWdnRHpVQ0JEY0RFQ01BUVJCcklnVWtBQ0FGSUFSQklHb2lBaUFJUVJCcUVPa0ZOZ0lNSUFJZ0NFRVlhaUFGUVF4cUVPQWFJUUlnQlVFUWFpUUFJQWhCTUdvZ0FoQ1FCUXdEQ3lBRVFRQTZBSlFESUFSQnFBUnFRYzc5Q1JBWklBaEI3QUJxRUM5QnhMRUtFQmtoQWlBSVFSaHFJZ1VnQkNBS0VQOEtJQUlnQlJCTkdpQUZFQThhREFJTElBY2dEMnRCQ0VjRVFDQUVRUUE2QUpRRElBUkJxQVJxUWZua0NSQVpJUUlnQ0NBQktBSUVJQUVvQWdCclFRSjFRUUZyTmdJUUlBSWdDRUVRYWhBdlFiLytDUkFaSUFoQjdBQnFFQzlCeExFS0VCa2hBaUFJUVJocUlnVWdCQ0FLRVA4S0lBSWdCUkJOR2lBRkVBOGFEQUlMSUE4b0FnUWhCU0FDSVFjRFFDQUhFTWdESWdvb0FnUWhCeUFLUlNBSFFkak1Fa2R5UlFSQUlBb29BZ2doQnd3QkN3c2dDa0VBSUFkQndNd1NSaHRGQkVBZ0JFRUFPZ0NVQXlBRVFhZ0Vha0hDdXdvUUdTRUNJQWhCR0dvaUJTQUtJQW9vQWdBb0Fnd1JBZ0FnQWlBRkVFMGFJQVVRRHhvTUFnc2dCVUVJUVJBZ0NpZ0NFRUVDUmh0R0RRRWdBaWdDQkVIQXpCSkhCRUFnQkVFQU9nQ1VBeUFFUWFnRWFrR1p2d0VRR1JvTUFnc2dDRUVBTmdJb0lBaENBRGNESUNBSVFnQTNBeGdnQ0VFd2FpSUhJQVJCSUdvaUFpQUlRUmhxSWdVZ0FTZ0NBRUVFYWhEd0hoQ1FCU0FDRUJ3Z0NDQUVLQUlvTmdJWUlBUWdCQ2dDTEVFQmFpSUNOZ0lzSUFnZ0FqWUNFQ0FJUVFVMkFnd2dCeUFFUWF3QmFpQUZJQWhCRUdvZ0NFRU1haEMwR1JDUUJRd0JDeUFFUVFBNkFKUURJQVJCcUFScVFjSDlDeEFaSUFFb0FnQVFMMEhDL1FrUUdTQUlRZXdBYWhBdlFjU3hDaEFaSVFJZ0NFRVlhaUlGSUFRZ0NoRC9DaUFDSUFVUVRSb2dCUkFQR2dzZ0NTQUlRVEJxRUpZWkdnc2dDRUV3YWhBakN5QUlRZkFBYWlRQUlBWkJ3QUZxSVFVakFFRVFheUlLSkFBZ0NTZ0NJQ0lISUFrb0FpUkJBblJxSVFJRFFDQUNJQWRHQkVBQ1FDQUtJQWxCTUdvUW1od2dDU2tETUNFYUEwQWdDaTBBQ0NJQ1FUOUdJQm9nQ2lrREFGRnhEUUVnQlNBRktRTXdRZ0VnQXExQ09JWkNPSWVHaERjRE1DQUtFSU1RREFBTEFBc0ZJQW9nQnlnQ0FEWUNBQ0FGSUFvUUpDQUhRUVJxSVFjTUFRc0xJQXBCRUdva0FDQUVMUUNVQXlFQ0lBa1FJeUFDRFFGQkFRc2hBaUFHUWJBQmFoQ2tBaUFCSUExR0JFQWdCa0d3QVdvaUFpQVVJQVlvQXR3Q0lBTVE5UWdnQmtFQU5nS0lBU0FHUWdBM0E0QUJJQVpDQURjRGVDQUdLQUw4QVNJQklBc2dBU2dDQUNnQ0NCRUJBQ0VCSUFZZ0VqWUNhQ0FHSUFZb0F1QUJJQVpCd0FGcVJ6b0FiQ0FHSUFzZ0JrSDRBR29nQWlBQklBWkI2QUJxRU1BYU5nSjBJQk1nQUVFQmNXb2hFeUFHUWFBQ2FpQUdRZlFBYWhBa0lBSVFEeHBCQUNFQ0N5QUdRY0FCYWhBakRBUUxJQUFMSVFBZ0FVRU1haUVCREFBTEFBc2dCaWdDeEFKRkRRRWdGQ0FHS0FMY0FpQUdRY0FCYWlJQ1FZdmpCUkFVSWdBUXhRWWdBQkFQR2lBR1FiQUJhaUFVSUFZb0F0d0NFTk1IRUZRaENTQUxFQndnQ1NnQ0FDRUJJQVlnQ1NnQ0JDQUpMUUFMSWdBZ0FFRVlkRUVZZFVFQVNDSUFHellDWkNBR0lBRWdDU0FBR3pZQ1lDQUdJQVlwQTJBM0F3Z2dBaUFFUWFnQ2FpQUdRUWhxRUpnRElBWkJBRFlDaUFFZ0JrSUFOd09BQVNBR1FnQTNBM2dnQmlBTElBSVE4d0kyQXZ3Qkl3QkJFR3NpRWlRQUlBc1FIQ0FMSUFzb0FneEJBV29pQURZQ0RDQVNJQUEyQWdnakFFRVFheUlPSkFBZ0MwR01BV29pRFJDWERDRUZJQVlvQXZ3QklRTWdFaWdDQ0NFQ0lBc29BZ2doQVNBT0lBWkJvQUpxSWdkQklHbzJBZ2dnQnlnQ0lDRUFJQTVCQURvQUJDQU9RY0NjSURZQ0FDQU9JQUFnQjBjNkFBd2dEU0FGSUFFZ0FpQUdRZmdBYWlBRElBNUJDR29nRGhDWURDSUFFQ2dnRFNBTktBSVlRUUZxTmdJWUlBNUJFR29rQUNBU1FSQnFKQUFnRENnQ0JDQU1LQUlBYTBFQ2RTQVRSZ1JBSUFaQitBQnFJQVJCMkFacUlBQW9BaVJCSkdvUW14a0xJQVFnQmtGQWF5QUdRY0FCYWlJUEVGWWdBQkQ1RGlBR1FTQnFJQThRVmlFQUlBWWdCaWdDZ0FJMkFoQWdCaWtDaEFJaEdpQUdRUUEyQW9nQ0lBWWdHamNDRkNBR1FnQTNBNEFDUVFBaEFpTUFRZUFBYXlJWEpBQWdCQ2dDa0FNaEVDQVhRVEJxSUJkQkVHb2dBQkJXSUJjZ0JrRVFhaUlPSWhNUXNBRWlBUkNxR2lBUVFld0NhaUVWSUFFUU1ob2dGeWdDT0NFRkFrQUNRQ0FRS0FMd0FpSUtSUTBBSUJVb0FnQUNmeUFLUVFGcklBVnhJQXBwSWdOQkFVME5BQm9nQlNBRklBcEpEUUFhSUFVZ0NuQUxJZ0pCQW5ScUtBSUFJZ0ZGRFFBZ0YwRTRhaUVTSUFwQkFXc2hEU0FEUVFGTElRY0RRQ0FCS0FJQUlnRkZEUUVnQlNBQktBSUVJZ05IQkVBQ1FDQUhSUVJBSUFNZ0RYRWhBd3dCQ3lBRElBcEpEUUFnQXlBS2NDRURDeUFDSUFOR0RRRU1BZ3NnQVNnQ0RFRUlhaUFTRUxZQ1JRMEFDeUFCS0FJTUlRc01BUXNqQUVFd2F5SURKQUFnRUVIUUFtb2lBUkMxQnlFTElBTkJFR29nQUJCV0lRQWdBeUFUS0FJQU5nSUFJQU1nRXlnQ0JEWUNCQ0FESUJNb0FnZzJBZ2dnRTBFQU5nSUlJQk5DQURjQ0FDQUxJQUFnQXhDcUdpQURFRElhSUFFZ0N4QW9JQUVnQVNnQ0dFRUJhallDR0NBRFFUQnFKQUFDUUNBUUtBTHdBaUlIUlEwQUlCVW9BZ0FDZnlBSFFRRnJJQVZ4SUFkcElnQkJBVTBOQUJvZ0JTQUZJQWRKRFFBYUlBVWdCM0FMSWdKQkFuUnFLQUlBSWdGRkRRQWdDMEVJYWlFU0lBZEJBV3NoRFNBQVFRRkxJUUFEUUNBQktBSUFJZ0ZGRFFFZ0JTQUJLQUlFSWdOSEJFQUNRQ0FBUlFSQUlBTWdEWEVoQXd3QkN5QURJQWRKRFFBZ0F5QUhjQ0VEQ3lBQ0lBTkhEUUlMSUFFb0FneEJDR29nRWhDMkFrVU5BQXNNQVF0QkVCQVZJZ2dnQlRZQ0JDQUlJQVd0SUF1dFFpQ0doRGNDQ0NBSVFRQTJBZ0FnRUVIMEFtb2hGQUpBUVFBZ0J5QVFLQUw0QWtFQmFyTWlHU0FRS2dMOEFpSVlJQWV6bEY0YkRRQUNRQUpBQW45QkFpQUhJQWRCQVd0eFFRQkhJQWRCQTBseUlBZEJBWFJ5SWdFQ2Z5QVpJQmlWalNJWVF3QUFnRTlkSUJoREFBQUFBR0J4QkVBZ0dLa01BUXRCQUFzaUFDQUFJQUZKR3lJQVFRRkdEUUFhSUFBZ0FDQUFRUUZyY1VVTkFCb2dBQkIvQ3lJUklCQW9BdkFDSWdKTkJFQWdBaUFSVFEwQ0lBSkJBMGtoQUFKL0lCQW9BdmdDc3lBUUtnTDhBcFdOSWhoREFBQ0FUMTBnR0VNQUFBQUFZSEVFUUNBWXFRd0JDMEVBQ3lFQklBSWdFU0FBSUFKcFFRRkxjZ1IvSUFFUWZ3VWdBVUVCUVNBZ0FVRUJhMmRyZENBQlFRSkpHd3NpQUNBQUlCRkpHeUlSVFEwQ0lCRkZEUUVMSUJGQmdJQ0FnQVJKQkVBZ0ZTQVJRUUowRUJVUWJDQVFJQkUyQXZBQ1FRQWhBUU5BSUFFZ0VVWUVRQ0FRS0FMMEFpSUNSUTBFSUFJb0FnUWhCd0pBSUJGcElnQkJBVTBFUUNBSElCRkJBV3R4SVFjTUFRc2dCeUFSU1EwQUlBY2dFWEFoQndzZ0ZTZ0NBQ0FIUVFKMGFpQVVOZ0lBSUJGQkFXc2hFeUFBUVFGTElSSURRQ0FDS0FJQUlnQkZEUVVnQUNnQ0JDRURBa0FnRWtVRVFDQURJQk54SVFNTUFRc2dBeUFSU1EwQUlBTWdFWEFoQXdzQ1FDQURJQWRHRFFBZ0FDRUJJQU5CQW5RaUNpQVZLQUlBYWlJTktBSUFSUVJBSUEwZ0FqWUNBQ0FESVFjTUFRc0RRQUpBSUFFaUF5Z0NBQ0lCUlFSQVFRQWhBUXdCQ3lBQUtBSU1RUWhxSUFFb0FneEJDR29RdGdJaERTQURLQUlBSVFFZ0RRMEJDd3NnQWlBQk5nSUFJQU1nRlNnQ0FDQUthaWdDQUNnQ0FEWUNBQ0FWS0FJQUlBcHFLQUlBSUFBMkFnQU1BUXNnQUNFQ0RBQUxBQVVnRlNnQ0FDQUJRUUowYWtFQU5nSUFJQUZCQVdvaEFRd0JDd0FMQUFzUSt3RUFDeUFWUVFBUWJDQVFRUUEyQXZBQ0N5QVFLQUx3QWlJSElBZEJBV3NpQUhGRkJFQWdBQ0FGY1NFQ0RBRUxJQVVnQjBrRVFDQUZJUUlNQVFzZ0JTQUhjQ0VDQ3dKQUFrQWdGU2dDQUNBQ1FRSjBhaUlBS0FJQUlnRkZCRUFnQ0NBUUtBTDBBallDQUNBUUlBZzJBdlFDSUFBZ0ZEWUNBQ0FJS0FJQUlnQkZEUUlnQUNnQ0JDRUJBa0FnQnlBSFFRRnJJZ0J4UlFSQUlBQWdBWEVoQVF3QkN5QUJJQWRKRFFBZ0FTQUhjQ0VCQ3lBVktBSUFJQUZCQW5ScUlRRU1BUXNnQ0NBQktBSUFOZ0lBQ3lBQklBZzJBZ0FMSUJBZ0VDZ0MrQUpCQVdvMkF2Z0NDeUFYUVRCcUVKMExHaUFYUWVBQWFpUUFJQXNoQVNBT0VESWFJQVlvQXR3Q0lRQWdCRUhBRFdvZ0R4Q2FHU0FBTmdJQUlBa1FEeG9NQXd0QkFDRUJBa0FnQWc0RkFBTURBd0FEQ3lBRFFRRnFJUU1nRENnQ0FDRUJJQXdvQWdRaEFnd0JDd3RCQUNFQkN5QUdRWUFDYWhBeUdnc2dEQkF5R2lBR1FhQUNhaEFqQ3lBR1FkQUNhaENrQWlBR1FlQUNhaVFBSUFFaEF3d0RDeUFGSUFVb0FnQW9BbndSQUFBYUl3QkJFR3NpQkNRQUlBUWdBVFlDRENBRUlBQW9BclFGSUFFUWxBRWlCVUVCRURnaUJ6WUNDQ0FGUVFBUU9DRUZBa0FnQUNnQ29BWWdCMFlFUUNBQVFRWTJBclFHSUFBZ0FUWUNzQVlNQVFzZ0FDQUhRUUFRaFFFaUIwVUVRQ0FBUVFBNkFKUURJQUJCcUFScVFjUENDeEFaSUFSQkRHb1FMMEh3dkFvUUdTQUVRUWhxRUM4YURBRUxBa0FnQUVHZ0JXb2dCUkNZRHlJQlFRaEhEUUJCQ0NFQklBQkJ4QVpxSWdNZ0JFRUlhaENwQWtVTkFDQUVJQU1nQkVFTWFoQ1dBVUVISVFFTFFRVWdBU0FCUVFGclFRSkpHeUVCQWtBQ1FBSkFJQUlPQWdFQUFnc2dBRUdRQTJvZ0J5QUJRUUFRbXdzaEF3d0NDeUFBUVpBRGFpQUhJQUZCQUJDaER5RUREQUVMUVFBaEF5QUFRUUE2QUpRRElBQkJxQVJxUWRQdUN4QVpJUUFnQkNBQ05nSUFJQUFnQkJDUkJSb0xJQVJCRUdva0FBd0NDeUFBUVpBRGFoQ2NDeUVEREFFTElBQkJBRG9BbEFNZ0FFR29CR3BCNE1JTEVCa2dGa0VNYWhBdlFlMjFEQkFaSVFFZ0ZpQUFLQUswQlNBV0tBSU1FSlFCRUZnZ0FTQVdFRTBhSUJZUUR4b0xJQlpCRUdva0FDQURDMkFCQTM4akFFRVFheUlESkFBZ0FDZ0NCQ0VBSUFFb0FnQWhCU0FESUFFb0FnUWdBUzBBQ3lJRUlBUkJHSFJCR0hWQkFFZ2lCQnMyQWd3Z0F5QUZJQUVnQkJzMkFnZ2dBeUFES1FNSU53TUFJQUFnQXlBQ0VLd0VJQU5CRUdva0FBc2ZBQ0FBTFFBTEVQc0VCRUFnQUNnQ0FDQUFLQUlJRVAwSkVQd0pDeUFBQzRFQkFRRi9Jd0JCd0FGcklnUWtBQ0FFSUFNNkFMc0JJQVFnQWpZQ3ZBRWdBaERLQTBVRVFDQUVRUWhxUWNXdEJVR1ZCRUVJSUFSQnFBRnFFQjBpQWhBWElnTkJHR3BCd3VZSUVBNGFJQU1RR0NBQ0VCNExJQUVvQWdBZ0JFRzhBV29nQkVHN0FXb1F0UVVoQVNBQVFRRTZBQVFnQUNBQk5nSUFJQVJCd0FGcUpBQUxDZ0FnQUJEQkF5QUJhZ3VOQWdFRWZ5TUFRYkFCYXlJSUpBQWdDRUVvYWhET0FTRUhJQWhCR0dvaUNTQUZFT0VESUFjZ0NSQVNRYWFyQ2hBT0lRVWdDRUVJYWlJS0lBUVE0UU1nQlNBS0VCSWFJQW9RRHhvZ0NSQVBHaUFES0FJb0lBUW9BaWhIQkVBZ0IwSE1qQW9RRGlFRUlBaEJHR29pQlNBREVPRURJQVFnQlJBU0dpQUZFQThhQ3lBSFFaK1dDaEFPR2lBSElBRW9BZ0JCZ0FOcVFSd2dBaWdDQkNnQ0FCQ1BBUkFPR2dKQUlBRW9BaEJGRFFBZ0IwR1k2UVlRRGlBQktBSVFFQ0ZCaStZR0VBNGFJQVpCLy8vLy93ZEdEUUFnQjBHUG1Bb1FEaG9nQnlBQktBSUFRWUFEYWtFTUlBWVFqd0VRRGhvTElBZEIvSmNJRUE0YUlBQWdCMEVFYWhCQ0lBY1F1d0VhSUFoQnNBRnFKQUFMQ0FBZ0FFRUFFR3dMRkFBZ0FTZ0NoQU1oQVNBQUVFa2dBVFlDa0FFTEtBQWdBQ2dDQUNnQ0FDSUFJQUlnQUNnQ0FDZ0NEQkVCQUNJQUlBRWdBQ2dDQUNnQ0RCRUJBQXNzQVFKL0FrQWdBQ0FCRUxvQklnTkZEUUFnQXk4QkhrRVhSdzBBSUFBZ0FDQUJFTUVCRUhjaEFnc2dBZ3RIQVFKL0l3QkJFR3NpQXlRQUlBTkJBRFlDREVIQ3dnSWhCQUpBSUFBZ0FTQUNJQU5CREdvUTNRSU5BQ0FES0FJTUlnQkZEUUFnQUNnQ0FDRUVDeUFEUVJCcUpBQWdCQXVxQXdFSWZ5TUFRUkJySWdVa0FDQUFLQUtRQVNJQkJFQWdCU0FBUVF4cUVFSWpBRUVRYXlJRUpBQWdCQ0FCS0FJQU5nSUFJQVJCQkhJZ0JSQlVJUWdDUUNBQlFRUnFJZ0lvQWdRZ0FpZ0NDRWtFUUNBQ0lBSW9BZ1FnQkJEUURrRVFhallDQkF3QkN5TUFRU0JySWdja0FDQUhRUWhxSUFJZ0FpZ0NCQ0FDS0FJQWEwRUVkVUVCYWhEZ0dDQUNLQUlFSUFJb0FnQnJRUVIxSUFKQkNHb1EwZzRpQVNnQ0NDQUVFTkFPR2lBQklBRW9BZ2hCRUdvMkFnZ2dBaWdDQUNFR0lBSW9BZ1FoQXdOQUlBTWdCa2NFUUNBQktBSUVRUkJySUFOQkVHc2lBeERRRGhvZ0FTQUJLQUlFUVJCck5nSUVEQUVMQ3lBQ0tBSUFJUU1nQWlBQktBSUVOZ0lBSUFFZ0F6WUNCQ0FDS0FJRUlRTWdBaUFCS0FJSU5nSUVJQUVnQXpZQ0NDQUNLQUlJSVFNZ0FpQUJLQUlNTmdJSUlBRWdBellDRENBQklBRW9BZ1EyQWdBZ0FTZ0NCQ0VHQTBBZ0JpQUJLQUlJSWdOSEJFQWdBU0FEUVJCck5nSUlJQU5CREdzUUR4b01BUXNMSUFFb0FnQWlBUVJBSUFFUUh3c2dCMEVnYWlRQUN5QUNLQUlFR2lBSUVBOGFJQVJCRUdva0FDQUZFQThhQ3lBQUVGRWdCVUVRYWlRQUM0OEtBZzUvQW40akFFSGdBbXNpQWlRQUlBSWdBVFlDRkNBQ0lBQTJBZ3dnQWlBQ1FSUnFOZ0lJQWtBZ0FVVUVRQ0FDUVFocUVOOFZJUUVNQVFzZ0FTZ0NCQ0lERUpFREJFQWdBQ0FCS0FJWUVKRUJJUU1nQUNnQ0FDQUNLQUlVSUFNZ0FTZ0NIQkNxQmlFQkRBRUxJQU5COEtvU1JnUkFJQUFnQVNnQ0hCQ1JBU0VESUFBb0FnQWdBaWdDRkNBRElBRW9BaVFRcWdZaEFRd0JDeUFEUVpDaUVrWUVRQUpBSUFFb0Fod2lBeWdDQkVHUW94SkhJQU5GY2cwQUlBTW9BZ3doQXlBQ1FRRTZBRVFnQWlBRE5nSkFJQUFnQVNnQ0dCQ1JBU0lCUlEwQUlBQW9BZ0FnQWlnQ0ZDQUJJQUpCUUdzUXZnRW9BZ0FRcWdZaEFRd0NDMEVBSVFFTUFRc2dBeERtQXdSQUlBSkJRR3NRb2dZaEF5QUNRb0NBZ0lEQUFEY0NOQ0FDSUFKQklHb2lCVFlDTUNBRklBRW9Ba2dRMWdJZ0FTZ0NSQ0lMSUFFb0FraEJBblJxSVE0Z0FrRXdhaUVQQW44Q1FBTkFJQXNnRGtZTkFTQUNJQXNvQWdBaUJTZ0NLRFlDR0NBQ1FRQTJBc2dDSUFKQjJBSnFJQU1nQWtFWWFpQUNRY2dDYWhEWkZRSkFJQUlvQXRnQ0RRQWdBeWdDZ0FJaENDQUNJQUFnQlNnQ0tCQ1JBU0lGTmdMVUFpQURLQUtBQWlBSVJnUkFJQUlvQXR3Q0lBVTJBZ0FNQVFzZ0FrRVlhaUVLSXdCQndBRnJJZ1FrQUNBREtBTDBBU0FES0FMOEFTSUZRWllCYkVHV0FXcEI1QUJ1U1FSQUlBTWdCVUVCZEVFQ2FoQ3dFUXNnQkVHNEFXb2dBeUFLRVBJRUlBTW9BdlFCSWdoQkFXc2hCU0FLS0FJQUlRd2dBeWdDOEFFaERTQUVLQUs4QVNFS0lBUW9BcmdCSVFsQkFDRUhBa0FEUUNBSElBaEhCRUFnRFNBSlFSUnNhaUlHTFFBSVJRUkFJQUlvQXRRQ0lRVWdCa0VCT2dBSUlBWWdCVFlDQkNBR0lBdzJBZ0FnQkNnQ3ZBRWhDQ0FOSUFsQkZHeHFJZ1VnQnpZQ0VDQUZJQWcyQWd3Z0F5QURLQUw4QVVFQmFqWUMvQUVnQXlBREtBS0FBa0VCYWpZQ2dBSWdBaUFHUVFScU5nTE1BaUFDUVFBMkFzZ0NEQU1MQWtBZ0JpZ0NEQ0FLUncwQUlBd2dCaWdDQUVjTkFDQUdJQUlvQXRRQ05nSUVJQVlnRERZQ0FDQURJQU1vQW9BQ1FRRnFOZ0tBQWlBQ0lBWkJCR28yQXN3Q0lBSkJBVFlDeUFJTUF3c2dCeUFHS0FJUVN3UkFJQUlvQXRRQ0lRVWdCRUVCT2dDb0FTQUVJQWMyQXJBQklBUWdCVFlDcEFFZ0JDQU1OZ0tnQVNBRUlBbzJBcXdCSUFRZ0J6WUNFQ0FFSUFRcEE2Z0JJaEEzQXdnZ0JDQUVLUU9nQVNJUk53TUFJQVFnQmlnQ0VEWUNzQUVnQkNBR0tRSUlOd09vQVNBRUlBWXBBZ0EzQTZBQklBWWdCellDRUNBR0lCRTNBZ0FnQmlBUU53SUlJQVFnQkNnQ3NBRkJBV28yQXJBQklBTWdDVUVCYWlBREtBTDBBWEFnQkVHZ0FXb1FzZ1FnQXlBREtBTDhBVUVCYWpZQy9BRWdBeUFES0FLQUFrRUJhallDZ0FJZ0FpQUdRUVJxTmdMTUFpQUNRUUEyQXNnQ0RBTUZJQWxCQVdwQkFDQUZJQWxIR3lFSklBZEJBV29oQnd3Q0N3QUxDeUFFUVlhMUEwSHJBMEVPSUFSQm9BRnFFQjBpQ0JBWElnVkJHR3BCbGpVUURob2dCUkFZSUFKQ0FEY0N5QUlnQ0JBZUN5QUVRY0FCYWlRQUlBSWdBaWtEeUFJM0E5Z0NDeUFDSUFJb0F0d0NLQUlBSWdVMkFod2dCUVJBSUF0QkJHb2hDeUFDUVNCcUlBSkJIR29RY1F3QkN3dEJBQXdCQ3lBQUtBSUFJUUFnQXlnQy9BRkJBVVlFUUNBQUlBSW9BaFFnQWlnQ01DZ0NBQ0FCS0FKSUVLb0dEQUVMSUFJZ0R6WUMyQUlnQWlBQ0tBSXdJQUpCSUdwSE9nRGNBaUFBSUFFZ0FrSFlBbW9RT2dzaEFTQUNRU0JxRUY0Z0F4Q2hCZ3dCQ3lBQ1FRaHFFTjhWSVFFTElBSkI0QUpxSkFBZ0FRdW5Fd1FMZndKK0FYd0JmU01BUVJCcklnc2tBQ0FMSUFBMkFnZ0NRQ0FDUlFSQUlBdEJDR29RMHhnTUFRc2dBaWdDQkNJRFFjRC9FVVlFUUFKQUlBSW9BaVFRMFJoRkJFQWdBVUVJYWlJRFFabi9DQkFPR2lBQUlBRWdBaWdDSkJDU0FTQURRZS8yQ0JBT0dnd0JDeUFBSUFFZ0FpZ0NKQkNTQVFzZ0FVRUlhaUlEUWRhOUJSQU9HaUFBSUFFZ0FpZ0NLQkNTQVNBRFFkUzlCUkFPR2d3QkN5QURRWUNBRWtZRVFDQUJRUWhxSWdOQm1mOElFQTRhSUFBZ0FTQUNLQUlvRUpJQklBTkI5L0FNRUE0YUlBQWdBU0FDS0FJa0VNd1lJQU5COS9BTUVBNGFJQUFnQVNBQ0tBSXNFSklCSUFOQjcvWUlFQTRhREFFTElBTkJ3UDRSUmdSQUlBRkJDR29pQTBIcjVnWVFEaG9nQUNBQklBSW9BaVFRa2dFZ0EwSFkrUWdRRGhvZ0FDQUJJQUlvQWlnUWtnRWdBMEh2OWdnUURob01BUXNnQTBHNDdnOUdCRUFnQUNBQklBSVEwaGdNQVFzZ0EwSDQ3UTlHQkVBZ0FpZ0NKQ0VDSXdCQklHc2lBeVFBQWtBQ1FDQUNSUTBBSUFJb0FnUkJ5T2tQUncwQUlBSW9BbHdFUUNBRFFRQTZBQndnQXlBQ1FkZ0FhallDR0NBQUlBRWdBMEVZYWhEN0FpQUJRUWhxUWZmd0RCQU9HZ3NnQTBFSWFpSUVJQUpCSkdvUVV5QUJRUWhxSWdnZ0JCQVNHaUFJUWRycEJoQU9HaUFFRUE4YUlBSW9Ba3dpQkNBQ0tBSlFRUUowYWlFRkEwQWdCQ0FGUmdSQUlBaEJpK1lHRUE0YURBTUxJQVFvQWdBaUJpQUNLQUpNS0FJQVJ3UkFJQWhCOU8wTUVBNGFDeUFBSUFFZ0JoQ1NBU0FFUVFScUlRUU1BQXNBQ3lBRFFRaHFJZ0FnQWtFa2FoQlRJQUZCQ0dvZ0FCQVNHaUFBRUE4YUN5QURRU0JxSkFBTUFRc2dBeENyQ1FSQUl3QkJJR3NpQ0NRQUlBZ2dBRFlDQ0FKQUlBSkZCRUFnQ0VFSWFoRFFHQXdCQ3lBQ0tBSUVJZ0JCK1B3UFJnUkFJQUZCQ0dwQmdNd0RRZWJqQXlBQ0xRQWtHeEFPR2d3QkN5QUFRYmo5RDBZRVFDQUNLQUl3UlFSQUlBaEJFR29oQmlBQ0t3TW9JUkFqQUVIQUFtc2lBaVFBSUFKQnNBRnFFSWdESVFNZ0VMMGlEMElBVXdSQUlBTkJDR3BCTFJEZUJDQVBRdi8vLy8vLy8vLy8vd0NESVE4TEFrQUNRQUpBSUJBUTJSaEJBbXNPQXdBQkFBRUxJd0JCb0FGcklnQWtBQ0FBSUE4M0E1Z0JJQUJCQ0dvUVNTSUVJQUJCbUFGcUVOSUpHaUFDSUFSQkRHb1FRaUFFRUZFZ0FFR2dBV29rQUNBRFFRaHFJQUlRRWhvZ0FoQVBHZ3dCQ3lBRFFRaHFJZ1JCMlNjUURob2dEMEwvLy8vLy8vLy9CNE1oRGlBUFFqU0lwMEgvQjJzaUFFR0FDRVlFUUNBT1VBUkFJQVJCMXBnSUVBNUJnQWdRdkFJYURBSUxJQTVDQklZaERrRU5JUUFEUUNBT1FnK0RVQVJBSUFCQkFXc2hBQ0FPUWdTSUlRNE1BUXNMSUFSQng1VUlFQTRpQkNBRUtBSUFRUXhySWdVb0FnQnFJZ2NnQnlnQ0JFRzFmM0ZCQ0hJMkFnUWdCQ0FGS0FJQWFrRXdOZ0pNSUFRZ0JTZ0NBR29nQURZQ0RDQUVJQTRRd3dSQjE1Z0lFQTRpQUNBQUtBSUFRUXhyS0FJQWFpSUVJQVFvQWdSQnRYOXhRUUp5TmdJRUlBQkJnQWdRdkFJYURBRUxJQTVRQkVBZ0FrSHRyZ1ZCL1FCQkR5QUNRYUFCYWhBZElnVVFGeUlIUVJocVFiN2FDQkFPR2lBSEVCZ2dCUkFlQ3dOQUlBNUNnSUNBZ0lDQWdBaURVQVJBSUFCQkFXc2hBQ0FPUWdHR0lRNE1BUXNMSUFSQmo0c0hFQTRhSUFCQkFXb2hDaUFPUWdTR1FvQ0FnSUNBZ0lDQUFZVWlEbEJGQkVCQkRTRUFBMEFnRGtJUGcxQUVRQ0FBUVFGcklRQWdEa0lFaUNFT0RBRUxDeUFFUWZ5WENCQU9JZ1VnQlNnQ0FFRU1heUlIS0FJQWFpSUpJQWtvQWdSQnRYOXhRUWh5TmdJRUlBVWdCeWdDQUdwQk1EWUNUQ0FGSUFjb0FnQnFJQUEyQWd3Z0JTQU9FTU1FR2dzZ0JFSER2d0lRRGlJQUlBQW9BZ0JCREdzaUJDZ0NBR29pQlNBRktBSUVRWUFRY2pZQ0JDQUFJQVFvQWdCcUlnUWdCQ2dDQkVHMWYzRkJBbkkyQWdRZ0FDQUtFTHdDR2dzZ0JpQURRUXhxRUVJZ0F4QzdBaG9nQWtIQUFtb2tBQ0FCUVFocUlBWVFFaG9nQmhBUEdnd0NDeUFJUVJCcUlRb2dBaXNES0xZaEVTTUFRY0FDYXlJRUpBQWdCRUd3QVdvUWlBTWhCU0FSdkNJQVFRQklCRUFnQlVFSWFrRXRFTjRFSUFCQi8vLy8vd2R4SVFBTEFrQUNRQUpBSUJFUTJoaEJBbXNPQXdBQkFBRUxJd0JCb0FGcklnTWtBQ0FESUFBMkFwd0JJQU5CQ0dvUVNTSUFJQU5CbkFGcUVJVUlHaUFFSUFCQkRHb1FRaUFBRUZFZ0EwR2dBV29rQUNBRlFRaHFJQVFRRWhvZ0JCQVBHZ3dCQ3lBRlFRaHFJZ1pCMlNjUURob2dBRUgvLy84RGNTRURJQUJCRjNaQi93QnJJZ0JCZ0FGR0JFQWdBMFVFUUNBR1FkYVlDQkFPUVlBQkVMd0NHZ3dDQ3lBRFFRRjBJUU5CQmlFQUEwQWdBMEVQY1VVRVFDQUFRUUZySVFBZ0EwRUVkaUVEREFFTEN5QUdRY2VWQ0JBT0lnWWdCaWdDQUVFTWF5SUhLQUlBYWlJSklBa29BZ1JCdFg5eFFRaHlOZ0lFSUFZZ0J5Z0NBR3BCTURZQ1RDQUdJQWNvQWdCcUlBQTJBZ3dnQmlBREVDRkIxNWdJRUE0aUFDQUFLQUlBUVF4cktBSUFhaUlESUFNb0FnUkJ0WDl4UVFKeU5nSUVJQUJCZ0FFUXZBSWFEQUVMSUFORkJFQWdCRUh0cmdWQi9RQkJEeUFFUWFBQmFoQWRJZ2NRRnlJSlFSaHFRYjdhQ0JBT0dpQUpFQmdnQnhBZUN3TkFJQU5CZ0lDQUJIRkZCRUFnQUVFQmF5RUFJQU5CQVhRaEF3d0JDd3NnQmtHUGl3Y1FEaG9nQUVFQmFpRU1JQU5CQVhSQmdJQ0FDSE1pQXdSQVFRWWhBQU5BSUFOQkQzRkZCRUFnQUVFQmF5RUFJQU5CQkhZaEF3d0JDd3NnQmtIOGx3Z1FEaUlISUFjb0FnQkJER3NpQ1NnQ0FHb2lEU0FOS0FJRVFiVi9jVUVJY2pZQ0JDQUhJQWtvQWdCcVFUQTJBa3dnQnlBSktBSUFhaUFBTmdJTUlBY2dBeEFoR2dzZ0JrSER2d0lRRGlJQUlBQW9BZ0JCREdzaUF5Z0NBR29pQmlBR0tBSUVRWUFRY2pZQ0JDQUFJQU1vQWdCcUlnTWdBeWdDQkVHMWYzRkJBbkkyQWdRZ0FDQU1FTHdDR2dzZ0NpQUZRUXhxRUVJZ0JSQzdBaG9nQkVIQUFtb2tBQ0FCUVFocUlBb1FFaG9nQVNBQ0tBSXdFT1FWSUFvUUR4b01BUXNnQUVHdyt3OUdCRUFnQVNBQ1FTaHFFTWtaSUFJb0FqQVE3QmNNQVFzZ0NFRUlhaERRR0FzZ0NFRWdhaVFBREFFTElBTkJ3SUFTUmdSQUl3QkJFR3NpQXlRQUFrQWdBaWdDSkJEUkdFVUVRQ0FCUVFocUlnUkJtZjhJRUE0YUlBQWdBU0FDS0FJa0VKSUJJQVJCNy9ZSUVBNGFEQUVMSUFBZ0FTQUNLQUlrRUpJQkN5QUJRUWhxSWdCQi9KY0lFQTRhSUFNZ0FpZ0NLRUVrYWhCVElBQWdBeEFTR2lBREVBOGFJQU5CRUdva0FBd0JDeUFEUWVpREVrWUVRQ0FCUVFocVFiRzlCUkFPR2d3QkN5QURRWUNCRWtZRVFDQUNLQUlrSWdOQkJFMEVRQ0FCUVFocUlBTkJBblJCcU9JU2FpZ0NBQkFPR2dzZ0FVRUlhaUlEUVpuL0NCQU9HaUFBSUFFZ0FpZ0NLQkNTQVNBRFFlLzJDQkFPR2d3QkN5QUxRUWhxRU5NWUN5QUxRUkJxSkFBTGRRRUNmeU1BUVJCcklnSWtBRUVnRUJVaUEwRUFOZ0lBSUFJZ0FFRUlhallDQkNBQ1FRRTJBZ2dnQTBFSWFpQUJFT3NGR2lBRElBQTJBZ1FnQXlBQUtBSUFJZ0UyQWdBZ0FTQUROZ0lFSUFBZ0F6WUNBQ0FBSUFBb0FnaEJBV28yQWdnZ0FrRUFOZ0lBSUFJUWl3RWdBa0VRYWlRQUN6WUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUFnQWtFTWFoRHNBU0lBQkg4Z0FDZ0NEQVZCQUFzaEFTQUNRUkJxSkFBZ0FRc1NBQ0FBUVFBMkFrUWdBQ0FBS0FKQUVEWUw0d1FDQ1g4Q2ZTTUFRUkJySWdra0FDTUFRUkJySWdja0FDQUNLQUlBSVFZZ0NRSi9Ba0FnQVNnQ0JDSURSUTBBSUFFb0FnQUNmeUFEUVFGcklBWnhJQU5wSWdwQkFVME5BQm9nQmlBRElBWkxEUUFhSUFZZ0EzQUxJZ1JCQW5ScUtBSUFJZ1ZGRFFBZ0EwRUJheUVMSUFwQkFVc2hDZ05BSUFVb0FnQWlCVVVOQVNBR0lBVW9BZ1FpQ0VjRVFBSkFJQXBGQkVBZ0NDQUxjU0VJREFFTElBTWdDRXNOQUNBSUlBTndJUWdMSUFRZ0NFY05BZ3NnQlNnQ0NDQUdSdzBBQzBFQURBRUxJQWNnQVNBR0lBSVF3eEFDUUVFQUlBTWdBU2dDREVFQmFyTWlEU0FCS2dJUUlnd2dBN09VWGhzTkFDQUJJQU1nQTBFQmEzRkJBRWNnQTBFRFNYSWdBMEVCZEhJaUJBSi9JQTBnREpXTklneERBQUNBVDEwZ0RFTUFBQUFBWUhFRVFDQU1xUXdCQzBFQUN5SUNJQUlnQkVrYkVNTUJJQUVvQWdRaUF5QURRUUZyY1VVRVFDQURRUUZySUFaeElRUU1BUXNnQXlBR1N3UkFJQVloQkF3QkN5QUdJQU53SVFRTEFrQWdCRUVDZENJQ0lBRW9BZ0JxS0FJQUlnUkZCRUFnQnlnQ0FDQUJLQUlJTmdJQUlBRWdCeWdDQURZQ0NDQUJLQUlBSUFKcUlBRkJDR28yQWdBZ0J5Z0NBQ0lFS0FJQUlnSkZEUUVnQWlnQ0JDRUZBa0FnQXlBRFFRRnJJZ0p4UlFSQUlBSWdCWEVoQlF3QkN5QURJQVZMRFFBZ0JTQURjQ0VGQ3lBQktBSUFJQVZCQW5ScUlBUTJBZ0FNQVFzZ0J5Z0NBQ0FFS0FJQU5nSUFJQVFnQnlnQ0FEWUNBQXNnQnlnQ0FDRUZJQWRCQURZQ0FDQUJJQUVvQWd4QkFXbzJBZ3dnQnhDTEFVRUJDem9BRENBSklBVTJBZ2dnQjBFUWFpUUFJQUFnQ1NnQ0NEWUNBQ0FBSUFrdEFBdzZBQVFnQ1VFUWFpUUFDMkFCQVg4Z0FDZ0NCQ0lDQkVBZ0FpZ0NBQ0FCRUZkQkFVRUJRZFdlQ0VIUXB3TkI4QUFRU3dzZ0FDQUJFTTBESWdGRkJFQkJBQThMSUFBZ0FSQ2tBeUVCSUFBb0FnQW9BZ2dnQVJCWFFRRkJBVUdobXdoQjBLY0RRZlFBRUVzZ0FRc1NBQ0FCRVBzRUJIOGdBQVVnQVJDbEF3c0w4Z0VCQlg4akFFRWdheUlESkFBZ0F5QUJOZ0lRSXdCQkVHc2lBaVFBSUFNZ0FDQUNRUXhxSUFFUXJRWWlCQ2dDQUNJQkJIOUJBQVZCSUJBVklRRWdBaUFBUVFScU5nSUVJQUlnQVRZQ0FDQURLQUlRS0FJQUlRVWdBVUVBTmdJY0lBRWdBVUVVYWlJR05nSVlJQUVnQlRZQ0VDQUJJQVkyQWhRZ0FrRUJPZ0FJSUFBZ0FpZ0NEQ0FFSUFJb0FnQVErQUlnQWlnQ0FDRUJJQUpCQURZQ0FDQUNLQUlBSVFBZ0FrRUFOZ0lBSUFBRVFDQUNMUUFJQkVBZ0FFRVVhaEREQ2dzZ0FBUkFJQUFRSHdzTFFRRUxPZ0FjSUFNZ0FUWUNHQ0FDUVJCcUpBQWdBeWdDR0NFQUlBTkJJR29rQUNBQVFSUnFDeEVBSUFCQkdHb2dBU2dDQUJBT0dpQUFDeHNCQVg5QkNpRUJJQUFRdUFZRWZ5QUFFSklLUVFGckJVRUtDd3VuQXdFRWZ5QUFRWWdJYWlnQ0FDRUVBa0FnQUVHTUNHb29BZ0JCQTJwQmZIRWlBMEhkL2dOclFmNy9lMHNFUUNBRUlRSU1BUXNnQUVHUWdBUkJFQkRaQWlJQ05nS0lDRUVBSVFNZ0FrRUFOZ0tBZ0FRZ0JBUkFJQVFnQWpZQ2dJQUVEQUVMSUFBZ0FqWUNoQWdMSUFBZ0EwR2tBV28yQW93SUlBSWdBMm9pQTBGL05nSU1JQU1nQVRZQ0NDQURRUUE2QUFRZ0EwRUFOZ0lBSUFOQkVHb1E2d3NhSUFOQkFEWUNvQUVnQUVHVUNHb29BZ0FoQkFKQUFrQWdBRUdZQ0dvb0FnQWlBa0VnU1FSQUlBUWhBUXdCQ3lBQUtBS0lDQ0VCQWtBZ0FDZ0NqQWhCQTJwQmZIRWlCVUg1L2dOclFmNy9lMHNFUUNBQklRSU1BUXNnQUVHUWdBUkJFQkRaQWlJQ05nS0lDRUVBSVFVZ0FrRUFOZ0tBZ0FRZ0FRUkFJQUVnQWpZQ2dJQUVEQUVMSUFBZ0FqWUNoQWdMSUFBZ0FpQUZhaUlCTmdLVUNDQUFJQVZCaUFGcU5nS01DQ0FDUlEwQklBRWdCRFlDaEFGQkFDRUNJQUZCQURZQ2dBRWdCRUdBQVdvZ0FFR1FDR29nQkJzZ0FUWUNBQXNnQUNBQ1FRRnFOZ0tZQ0NBQklBSkJBblJxSUFNMkFnQUxJQUJCbkFocUlnQWdBQ2dDQUVFQmFqWUNBQ0FEQ3hzQUlBRkJBQ0FBS0FJQVFmR1ZCQ0FBS0FJRUtBSUFFS2tFR3dzMkFDQUFMQUFMUVFCSUJFQWdBQ2dDQUJBZkN5QUFJQUVwQWdBM0FnQWdBQ0FCS0FJSU5nSUlJQUZCQURvQUN5QUJRUUE2QUFBTERBQWdBQ0FCUWJBREVQMFNDM1VCQW44akFFSFFBV3NpQlNRQUlBQWdBaWdDQUNBRFFRSjBhaWdDQUJCNFJRUkFJQVZCRUdvaUF5QUFRWElnQWhBUUlBVWdCQkNrQmlBRElBVVFFaG9nQTBHVXpRb1FEaG9nQXlBQkVCSWFJQU5CeWQ4QUVBNGFJQVVvQXN3QklRWWdCUkFQR2lBREVCRUxJQVZCMEFGcUpBQWdCZ3NiQVFGL1FRd1FGU0lDSUFFMkFnQWdBaUFBS1FJRU53SUVJQUlMRGdBZ0FDQUJJQUVRaGcwUXNCTUxGd0FnQUNBQlFRRnJFTDBZSWdCQnlLSVBOZ0lBSUFBTHJ3RUJBbjhqQUVFUWF5SURKQUFnQXlBQk9nQVBBa0FDUUFKQUlBQVF1QVpGQkVCQkNpRUNJQUFReUE0aUFVRUtSZzBCSUFBUWlnVWhBaUFBSUFGQkFXb1Fpd1VNQXdzZ0FCQ1NDaUVDSUFBUXlRNGlBU0FDUVFGcklnSkhEUUVMSUFBZ0FrRUJJQUlnQWtFQUVQUUpJQUloQVFzZ0FCRFVDQ0VDSUFBZ0FVRUJhaERUQkFzZ0FTQUNhaUlBSUFOQkQyb1EwUUlnQTBFQU9nQU9JQUJCQVdvZ0EwRU9haERSQWlBRFFSQnFKQUFMMHdFQ0EzOENmZ0pBSUFBcEEzQWlCRkJGSUFRZ0FDa0RlQ0FBS0FJRUlnRWdBQ2dDTENJQ2E2eDhJZ1ZYY1VVRVFDQUFFS1lOSWdOQkFFNE5BU0FBS0FJc0lRSWdBQ2dDQkNFQkN5QUFRbjgzQTNBZ0FDQUJOZ0pvSUFBZ0JTQUNJQUZyckh3M0EzaEJmdzhMSUFWQ0FYd2hCU0FBS0FJRUlRRWdBQ2dDQ0NFQ0FrQWdBQ2tEY0NJRVVBMEFJQVFnQlgwaUJDQUNJQUZyckZrTkFDQUJJQVNuYWlFQ0N5QUFJQUkyQW1nZ0FDQUZJQUFvQWl3aUFDQUJhNng4TndONElBQWdBVThFUUNBQlFRRnJJQU02QUFBTElBTUxMQUFnQUVFQU5nSVVJQUJCQURZQ0JDQUFJQUJCREdvMkFnZ2dBRUdFNFJJMkFnQWdBQ0FCRUw0T0lBQUxGZ0FnQUNBQ0VJUUJJZ0FnQUNnQ0FDZ0NEQkVDQUFzU0FDQUFRUUEyQWdnZ0FDQUFLQUlFRURZTEhBRUJmeUFBS0FJQUlRSWdBQ0FCS0FJQU5nSUFJQUVnQWpZQ0FBc1NBQ0FBUVFBMkFnd2dBQ0FBS0FJSUVEWUwyUUVDQlg4QmZpTUFRUkJySWdRa0FDQUFRUUEyQWhRZ0FFRUFOZ0lFSUFBZ0FFRU1haUlGTmdJSUlBQkJoT0VTTmdJQUFrQWdBU2dDQkNJRFFRRk5CRUFnQVNnQ0FDSUJJQU5CQW5ScUlRWURRQ0FCSUFaR0RRSWdBQ0FDUVFGcUlnTTJBZ1FnQlNBQ1FRSjBhaUFCS0FJQU5nSUFJQUZCQkdvaEFTQURJUUlNQUFzQUN5TUFRUkJySWdJa0FFRU1FQlVoQXlBQ0lBRXBBZ0FpQnpjREFDQUNJQWMzQXdnZ0F5QUNFT2NESVFFZ0FrRVFhaVFBSUFSQkFEWUNDQ0FBUVJScUlBRVFqUVVnQkVFSWFoQzdCZ3NnQkVFUWFpUUFJQUFMZ0FNQkRIOGdBQ2dDQUNJRUtBTEVCaUlISUFBb0FneEdCRUFnQUNnQ0NBOExJd0JCRUdzaUFTUUFJd0JCd0FGcklnTWtBQ0FEUWJnQmFpQUVJQUJCQkdvaUFoQ3dFaUFFS0FLMEJpSUlRUUZySVFrZ0FpZ0NBQ0VLSUFRb0FyQUdJUXNnQXlnQ3ZBRWhEQ0FES0FLNEFTRUNBa0FEUUNBRklBaEhCRUFnQ3lBQ1FZZ0JiR29pQmkwQWVFVUVRQ0FCUVFBMkFnd2dBVUVBT2dBSURBTUxBa0FnQmlnQ2dBRWdERWNOQUNBS0lBWW9BZ0JIRFFBZ0FTQUNOZ0lNSUFGQkFUb0FDQXdEQ3lBRklBWW9Bb1FCU3dSQUlBRkJBRFlDRENBQlFRQTZBQWdNQXdVZ0FrRUJha0VBSUFJZ0NVY2JJUUlnQlVFQmFpRUZEQUlMQUFzTElBTkJDR3BCaHJVRFFaNEVRUTRnQTBHb0FXb1FIU0lDRUJjaUJVRVlha0hTTlJBT0dpQUZFQmdnQVVFQU5nSU1JQUZCQURvQUNDQUNFQjRMSUFOQndBRnFKQUFnQVNnQ0RDRURJQVFvQXJBR0lRSWdBUzBBQ0NFRUlBRkJFR29rQUNBQUlBYzJBZ3dnQUNBQ0lBTkJpQUZzYWtFSWFrRUFJQVFiSWdBMkFnZ2dBQXQrQVFGL0l3QkJ3QUZySWdRa0FDQUVJQUkyQXJRQklBUWdBellDdUFFZ0FoREtBMFVFUUNBRVFjV3RCVUdWQkVFSUlBUkJvQUZxRUIwaUFoQVhJZ05CR0dwQnd1WUlFQTRhSUFNUUdDQUNFQjRMSUFFb0FnQWdCRUcwQVdvZ0JFRzRBV29ReHdJaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBSUFSQndBRnFKQUFMUEFFQ2Z3SkFJQUFnQVJDNkFTSURSUTBBUVFFaEFnSkFBa0FnQXk4QkhrRVdhdzRDQWdBQkN5QUFJQUFnQVJEQkFSQjNEd3RCQUNFQ0N5QUNDMG9CQW44akFFR3dBV3NpQVNRQUlBQXRBTkVDQkVBZ0FVR3BxUVZCaWdGQkJTQUJRYUFCYWhBZElnQVFGeUlDUVJocVFjalVDQkFPR2lBQ0VCZ2dBQkFlQ3lBQlFiQUJhaVFBQzJJQkFuOGdBRUVBTmdJSUlBQkNBRGNDQUNBQktBSUVJZ0lnQVNnQ0FDSURSd1JBSUFBZ0FpQURhMEVDZFJEUEJTQUFLQUlFSVFJZ0FDQUJLQUlFSUFFb0FnQWlBMnNpQVVFQVNnUi9JQUlnQXlBQkVIMGdBV29GSUFJTE5nSUVDeUFBQzM0QkFYOGpBRUhBQVdzaUJDUUFJQVFnQWpZQ3RBRWdCQ0FETmdLNEFTQUNFTW9EUlFSQUlBUkJ4YTBGUVpVRVFRZ2dCRUdnQVdvUUhTSUNFQmNpQTBFWWFrSEM1Z2dRRGhvZ0F4QVlJQUlRSGdzZ0FTZ0NBQ0FFUWJRQmFpQUVRYmdCYWhERUFpRUJJQUJCQVRvQUJDQUFJQUUyQWdBZ0JFSEFBV29rQUFzUEFDQUFFTTBKSUFBdEFBaEJBVVlMandFQkFuOENRQUpBQWtBZ0FDMEFDeUlERVBzRVJRUkFRUUVoQWlBREVLVURJZ05CQVVZTkFTQUFJQU5CQVdvUXdBVWdBQ0VDREFNTElBQW9BZ1FpQXlBQUtBSUlFUDBKUVFGcklnSkhEUUVMSUFBZ0FrRUJJQUlnQWtFQUVQY01JQUloQXdzZ0FDZ0NBQ0VDSUFBZ0EwRUJhaENIQkFzZ0FpQURRUUowYWlJQUlBRVFtUUlnQUVFRWFrRUFFSmtDQ3dvQUlBQVFyQUZCQUVjTENnQWdBQkN0RTBFQVJ3c3NBUUovQWtBZ0FDQUJFTG9CSWdORkRRQWdBeThCSGtFWFJ3MEFJQUFnQUNBQkVNRUJFRkFoQWdzZ0Fnc0pBQ0FBUVFnUXdCSUxHQUVCZnlNQVFSQnJJZ0VnQURZQ0RDQUJLQUlNS0FJRUMzNEJBMzhqQUVHd0FXc2lCU1FBSUFBZ0FTZ0NEQkRrRUNBQUtBSUFJZ01nQVNnQ0RDSUVRUUowYWlnQ0FBUkFJQVZCb3JBRFFlc0FRUWtnQlVHZ0FXb1FIU0lERUJjaUJFRVlha0d3cHdnUURob2dCQkFZSUFNUUhpQUJLQUlNSVFRZ0FDZ0NBQ0VEQ3lBRElBUkJBblJxSUFJMkFnQWdCVUd3QVdva0FBc01BQ0FBSUFGQnJBRVEyZ2tMT3dFQmZ5QUFRZWlNRGlnQ0FDSUJOZ0lBSUFBZ0FVRU1heWdDQUdwQjlJd09LQUlBTmdJQUlBQkJCR29RMFFrYUlBQkJPR29RL2dRYUlBQUw1UVFDQ1g4Q2ZTTUFRUkJySWdna0FDTUFRUkJySWdVa0FDQUJLQUlBSVFNZ0NBSi9Ba0FnQUNnQ0JDSUNSUTBBSUFBb0FnQUNmeUFDUVFGcklBTnhJQUpwSWdaQkFVME5BQm9nQXlBQ0lBTkxEUUFhSUFNZ0FuQUxJZ2RCQW5ScUtBSUFJZ1JGRFFBZ0FrRUJheUVKSUFaQkFVc2hDZ05BSUFRb0FnQWlCRVVOQVNBRElBUW9BZ1FpQmtjRVFBSkFJQXBGQkVBZ0JpQUpjU0VHREFFTElBSWdCa3NOQUNBR0lBSndJUVlMSUFZZ0IwY05BZ3NnQkNnQ0RDSUdJQUVvQWdRZ0JpZ0NBQ2dDQ0JFQkFFVU5BQXRCQUF3QkN5QUZJQUFnQXlBQkVQY0xBa0JCQUNBQ0lBQW9BZ3hCQVdxeklnc2dBQ29DRUNJTUlBS3psRjRiRFFBZ0FDQUNJQUpCQVd0eFFRQkhJQUpCQTBseUlBSkJBWFJ5SWdFQ2Z5QUxJQXlWalNJTFF3QUFnRTlkSUF0REFBQUFBR0J4QkVBZ0M2a01BUXRCQUFzaUJ5QUJJQWRMR3hDS0Z5QUFLQUlFSWdJZ0FrRUJhM0ZGQkVBZ0FrRUJheUFEY1NFSERBRUxJQUlnQTBzRVFDQURJUWNNQVFzZ0F5QUNjQ0VIQ3dKQUlBZEJBblFpQXlBQUtBSUFhaWdDQUNJQlJRUkFJQVVvQWdBZ0FDZ0NDRFlDQUNBQUlBVW9BZ0EyQWdnZ0FDZ0NBQ0FEYWlBQVFRaHFOZ0lBSUFVb0FnQWlBU2dDQUNJRFJRMEJJQU1vQWdRaEJBSkFJQUlnQWtFQmF5SURjVVVFUUNBRElBUnhJUVFNQVFzZ0FpQUVTdzBBSUFRZ0FuQWhCQXNnQUNnQ0FDQUVRUUowYWlBQk5nSUFEQUVMSUFVb0FnQWdBU2dDQURZQ0FDQUJJQVVvQWdBMkFnQUxJQVVvQWdBaEJDQUZRUUEyQWdBZ0FDQUFLQUlNUVFGcU5nSU1JQVVRaXdGQkFRczZBQXdnQ0NBRU5nSUlJQVZCRUdva0FDQUlLQUlJR2lBSVFSQnFKQUFMd0FFQkJuOENRQ0FBS0FJRUlnTkZEUUFnQVNnQ0FDRUVJQUFvQWdBQ2Z5QURRUUZySUFSeElBTnBJZ0pCQVUwTkFCb2dCQ0FESUFSTERRQWFJQVFnQTNBTElnVkJBblJxS0FJQUlnQkZEUUFnQTBFQmF5RUdJQUpCQVVzaEJ3TkFJQUFvQWdBaUFFVU5BU0FFSUFBb0FnUWlBa2NFUUFKQUlBZEZCRUFnQWlBR2NTRUNEQUVMSUFJZ0Ewa05BQ0FDSUFOd0lRSUxJQUlnQlVjTkFnd0JDeUFBS0FJTUlnSWdBU2dDQkNBQ0tBSUFLQUlJRVFFQVJRMEFDeUFBRHd0QkFBc1FBQ0FBTFFBRVJRUkFFRzhBQ3lBQUN4RUFJQUJCS0VIWi93TkJmRUVERU1vQkN6TUJBWDlCekx3Z0xRQUFCRUJCeUx3Z0tBSUFEd3RCdnQ0R0VQd0VJUUJCekx3Z1FRRTZBQUJCeUx3Z0lBQTJBZ0FnQUF1QkFRRUNmd05BQWtBZ0FDQUJFTG9CSWdJRVFBSkFBa0FDUUFKQUlBSXZBUjRpQTBFVWF3NEZBd01EQWdBQkN5QUNLQUlBS0FJSUlRRU1CUXNnQTBIdUtVY05Bd3NnQWlnQ0FDZ0NDQ0VCQ3lBQkR3dEJxUzlCK0tzQ1FjOEdRWUNXQkJBQUFBc2dBaWdDSkNJQkRRQUxRZFdTQjBINHF3SkI1Z1pCZ0pZRUVBQUFDN2NCQVFKL0lBQWdBUkN3QVNJQVFReHFJQUZCREdvUXZCWWdBRUVZYWlBQlFSaHFRU2dRZlJvZ0FFRkFheUlBUVFBMkFnZ2dBRUlBTndJQUlBRkJRR3NpQVNnQ0JDSUNJQUVvQWdBaUEwY0VRQ0FDSUFOclFRTjFJZ0pCZ0lDQWdBSlBCRUFRQVFBTElBQWdBaEM4RnlJRE5nSUFJQUFnQXpZQ0JDQUFJQU1nQWtFRGRHbzJBZ2dnQUNnQ0JDRUNJQUFnQVNnQ0JDQUJLQUlBSWdGcklnQkJBRW9FZnlBQ0lBRWdBQkI5SUFCcUJTQUNDellDQkFzTGpBUUNDWDhCZlFKQUFuOUJBaUFCUVFGR0RRQWFJQUVnQVNBQlFRRnJjVVVOQUJvZ0FSQi9DeUlDSUFBb0FnUWlBVTBFUUNBQklBSk5EUUVnQVVFRFNTRURBbjhnQUNnQ0RMTWdBQ29DRUpXTklndERBQUNBVDEwZ0MwTUFBQUFBWUhFRVFDQUxxUXdCQzBFQUN5RUVJQUVnQWlBRElBRnBRUUZMY2dSL0lBUVFmd1VnQkVFQlFTQWdCRUVCYTJkcmRDQUVRUUpKR3dzaUFTQUJJQUpKR3lJQ1RRMEJDeUFBSVFOQkFDRUJBa0FnQWdSQUlBTWdBaENYQXhCc0lBTWdBallDQkFOQUlBRWdBa1lFUUNBREtBSUlJZ1JGRFFNZ0EwRUlhaUVBSUFRb0FnUWhCZ0pBSUFKcElnRkJBVTBFUUNBR0lBSkJBV3R4SVFZTUFRc2dBaUFHU3cwQUlBWWdBbkFoQmdzZ0F5Z0NBQ0FHUVFKMGFpQUFOZ0lBSUFKQkFXc2hDQ0FCUVFGTElRa0RRQ0FFS0FJQUlnQkZEUVFnQUNnQ0JDRUZBa0FnQ1VVRVFDQUZJQWh4SVFVTUFRc2dBaUFGU3cwQUlBVWdBbkFoQlFzQ1FDQUZJQVpHRFFBZ0FDRUJJQVZCQW5RaUJ5QURLQUlBYWlJS0tBSUFSUVJBSUFvZ0JEWUNBQ0FGSVFZTUFRc0RRQ0FCSWdVb0FnQWlBUVJBSUFBb0FnZ2dBU2dDQ0VZTkFRc0xJQVFnQVRZQ0FDQUZJQU1vQWdBZ0Iyb29BZ0FvQWdBMkFnQWdBeWdDQUNBSGFpZ0NBQ0FBTmdJQURBRUxJQUFoQkF3QUN3QUZJQU1vQWdBZ0FVRUNkR3BCQURZQ0FDQUJRUUZxSVFFTUFRc0FDd0FMSUFOQkFCQnNJQU5CQURZQ0JBc0xDMFlCQW44akFFRVFheUlESkFBZ0FoRG5DaUFBSUFOQkNHb1FtUmdpQUNBQklBRVEwZ2dpQVNBQklBSVFPeUlFYWhEYURDQUFJQUlRZXlBRUVQNEdHaUFEUVJCcUpBQUxCd0FnQUNBQlNRdkpDZ0lGZnc5K0l3QkI0QUJySWdVa0FDQUVRdi8vLy8vLy96K0RJUXdnQWlBRWhVS0FnSUNBZ0lDQWdJQi9neUVLSUFKQy8vLy8vLy8vUDRNaURVSWdpQ0VPSUFSQ01JaW5RZi8vQVhFaEJ3SkFBa0FnQWtJd2lLZEIvLzhCY1NJSlFmLy9BV3RCZ29CK1R3UkFJQWRCLy84QmEwR0JnSDVMRFFFTElBRlFJQUpDLy8vLy8vLy8vLy8vQUlNaUMwS0FnSUNBZ0lEQS8vOEFWQ0FMUW9DQWdJQ0FnTUQvL3dCUkcwVUVRQ0FDUW9DQWdJQ0FnQ0NFSVFvTUFnc2dBMUFnQkVMLy8vLy8vLy8vLy84QWd5SUNRb0NBZ0lDQWdNRC8vd0JVSUFKQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFSQ2dJQ0FnSUNBSUlRaENpQURJUUVNQWdzZ0FTQUxRb0NBZ0lDQWdNRC8vd0NGaEZBRVFDQUNJQU9FVUFSQVFvQ0FnSUNBZ09ELy93QWhDa0lBSVFFTUF3c2dDa0tBZ0lDQWdJREEvLzhBaENFS1FnQWhBUXdDQ3lBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQUlBRWdDNFFoQWtJQUlRRWdBbEFFUUVLQWdJQ0FnSURnLy84QUlRb01Bd3NnQ2tLQWdJQ0FnSURBLy84QWhDRUtEQUlMSUFFZ0M0UlFCRUJDQUNFQkRBSUxJQUlnQTRSUUJFQkNBQ0VCREFJTElBdEMvLy8vLy8vL1AxZ0VRQ0FGUWRBQWFpQUJJQTBnQVNBTklBMVFJZ1liZVNBR1FRWjByWHluSWdaQkQyc1F6QUpCRUNBR2F5RUdJQVVwQTFnaURVSWdpQ0VPSUFVcEExQWhBUXNnQWtMLy8vLy8vLzgvVmcwQUlBVkJRR3NnQXlBTUlBTWdEQ0FNVUNJSUcza2dDRUVHZEsxOHB5SUlRUTlyRU13Q0lBWWdDR3RCRUdvaEJpQUZLUU5JSVF3Z0JTa0RRQ0VEQ3lBRFFnK0dJZ3RDZ0lEKy93K0RJZ0lnQVVJZ2lDSUVmaUlRSUF0Q0lJZ2lFeUFCUXYvLy8vOFBneUlCZm53aUQwSWdoaUlSSUFFZ0FuNThJZ3NnRVZTdElBSWdEVUwvLy8vL0Q0TWlEWDRpRlNBRUlCTitmQ0lSSUF4Q0Q0WWlFaUFEUWpHSWhFTC8vLy8vRDRNaUF5QUJmbndpRkNBUElCQlVyVUlnaGlBUFFpQ0loSHdpRHlBQ0lBNUNnSUFFaENJTWZpSVdJQTBnRTM1OElnNGdFa0lnaUVLQWdJQ0FDSVFpQWlBQmZud2lFQ0FESUFSK2ZDSVNRaUNHZkNJWGZDRUJJQWNnQ1dvZ0JtcEIvLzhBYXlFR0FrQWdBaUFFZmlJWUlBd2dFMzU4SWdRZ0dGU3RJQVFnQkNBRElBMStmQ0lFVnExOElBSWdESDU4SUFRZ0JDQVJJQlZVclNBUklCUldyWHg4SWdSV3JYd2dBeUFNZmlJRElBSWdEWDU4SWdJZ0ExU3RRaUNHSUFKQ0lJaUVmQ0FFSUFKQ0lJWjhJZ0lnQkZTdGZDQUNJQUlnRUNBU1ZxMGdEaUFXVkswZ0RpQVFWcTE4ZkVJZ2hpQVNRaUNJaEh3aUFsYXRmQ0FDSUFJZ0R5QVVWSzBnRHlBWFZxMThmQ0lDVnExOElnUkNnSUNBZ0lDQXdBQ0RVRVVFUUNBR1FRRnFJUVlNQVFzZ0MwSS9pQ0VESUFSQ0FZWWdBa0kvaUlRaEJDQUNRZ0dHSUFGQ1A0aUVJUUlnQzBJQmhpRUxJQU1nQVVJQmhvUWhBUXNnQmtILy93Rk9CRUFnQ2tLQWdJQ0FnSURBLy84QWhDRUtRZ0FoQVF3QkN3SitJQVpCQUV3RVFFRUJJQVpySWdkQmdBRlBCRUJDQUNFQkRBTUxJQVZCTUdvZ0N5QUJJQVpCL3dCcUlnWVF6QUlnQlVFZ2FpQUNJQVFnQmhETUFpQUZRUkJxSUFzZ0FTQUhFSndHSUFVZ0FpQUVJQWNRbkFZZ0JTa0RNQ0FGS1FNNGhFSUFVcTBnQlNrRElDQUZLUU1RaElRaEN5QUZLUU1vSUFVcEF4aUVJUUVnQlNrREFDRUNJQVVwQXdnTUFRc2dCRUwvLy8vLy8vOC9neUFHclVJd2hvUUxJQXFFSVFvZ0MxQWdBVUlBV1NBQlFvQ0FnSUNBZ0lDQWdIOVJHMFVFUUNBS0lBSkNBWHdpQVNBQ1ZLMThJUW9NQVFzZ0N5QUJRb0NBZ0lDQWdJQ0FnSCtGaEZCRkJFQWdBaUVCREFFTElBb2dBaUFDUWdHRGZDSUJJQUpVclh3aENnc2dBQ0FCTndNQUlBQWdDamNEQ0NBRlFlQUFhaVFBQ3owQkFuOENRQ0FBSUFFUXVnRWlBMFVOQUVFQklRSUNRQUpBSUFNdkFSNUJGV3NPQXdJQkFBRUxJQUFnQUNBQkVNRUJFRkFQQzBFQUlRSUxJQUlMRmdBZ0FDZ0NKQ0FBS0FJZ2EwRWNiU0FBRU5JSGF3dHNBUU4vSXdCQnNBRnJJZ0lrQUNBQUtBSzBCa1VFUUNBQ1FibWhCVUdFQjBFSElBSkJvQUZxRUIwaUF4QVhJZ1JCR0dwQjQrUUlFQTRhSUFRUUdDQURFQjRMSUFFRVFDQUFLQUt3QmlBQUtBSzBCa0hnQUd4cVFlQUFheUFCRVBJSUN5QUNRYkFCYWlRQUlBRUxid0VEZnlBQUtBSUVJUVlDUUNBQUtBSUlJQVJxSUFOeElnY2dBbXRCL3Y5N1N3UkFJQVloQlF3QkN5QUFRWkNBQkVFUUVOa0NJZ1UyQWdSQkFDRUhJQVZCQURZQ2dJQUVJQVlFUUNBR0lBVTJBb0NBQkF3QkN5QUFJQVUyQWdBTElBQWdCeUFCYWpZQ0NDQUZJQWRxQ3ljQUlBQXRBS0FEUlFSQVFmWHZDRUg0cXdKQnlnSkJsODRDRUFBQUN5QUFLQUo0UWNRRGF3dWJBZ0VDZnlNQVFlQUJheUlHSkFBQ1FDQUFJQU1vQWdBZ0JFRUNkR29vQWdBUUlDOEJIaUFDUmcwQUlBWkJBRFlDM0FFQ1FDQUFRWUFEYWlBQ0lBWkIzQUZxRUtrR1JRUkFJQVlvQXR3QkRRRUxJQVpCR0dvaUFpQUFRWElnQXhBUUlBWkJDR29pQUNBRkVLUUdJQUlnQUJBU0dpQUNRZTIxREJBT0dpQUNRWmJOQ2hBT0dpQUNJQUVRRWhvZ0FrSEI3UVFRRGhvZ0JpZ0MxQUVoQnlBQUVBOGFJQUlRRVF3QkN5QUdRUmhxSWdJZ0FFRnlJQU1RRUNBR1FRaHFJZ0FnQlJDa0JpQUNJQUFRRWhvZ0FrSHR0UXdRRGhvZ0FrR1d6UW9RRGhvZ0FpQUJFQklhSUFKQmc3RUtFQTRhSUFKQnNMOENFQTRhSUFJZ0JpZ0MzQUVRalFRb0Fyd0JJUWNnQUJBUEdpQUNFQkVMSUFaQjRBRnFKQUFnQnd0MUFRSi9Jd0JCRUdzaUFpUUFRU0FRRlNJRFFRQTJBZ0FnQWlBQVFRaHFOZ0lFSUFKQkFUWUNDQ0FEUVFocUlBRVEwUUVhSUFNZ0FEWUNCQ0FESUFBb0FnQWlBVFlDQUNBQklBTTJBZ1FnQUNBRE5nSUFJQUFnQUNnQ0NFRUJhallDQ0NBQ1FRQTJBZ0FnQWhDTEFTQUNRUkJxSkFBTFBRRUNmeUFBUWVDTURqWUNPQ0FBUWN5TURqWUNBQ0FBSUFCQkJHb2lBUkNOR0NJQ1FjeU1EallDQUNBQVFlQ01EallDT0NBQlFSQVF1QkVnQWdzd0FRRi9JQUFvQWdRaUFpQUFLQUlJUndSQUlBSWdBU2dDQURZQ0FDQUFJQUpCQkdvMkFnUVBDeUFBSUFFUXdoQUxPQUVCZnlNQVFTQnJJZ0lrQUNBQ0lBRTJBaEFnQWtFWWFpQUFJQUVnQWtFUWFoQ09EeUFDS0FJWUlRQWdBa0VnYWlRQUlBQkJER29MVXdFQmZ5QUJLQUlRSWdKRkJFQWdBRUVBTmdJUUlBQVBDeUFCSUFKR0JFQWdBQ0FBTmdJUUlBRW9BaEFpQVNBQUlBRW9BZ0FvQWd3UkFnQWdBQThMSUFBZ0FpQUNLQUlBS0FJSUVRQUFOZ0lRSUFBTERnQWdBQ0FCSUFFUTBnZ1FuQk1MWUFFQmZ5TUFRUkJySWdNa0FDQURJQUkyQWdnZ0F5QUJOZ0lNUVFBaEFnSkFJQUZGRFFBZ0FDZ0NBRUdzSFdvZ0FTQUFLQUlFS0FJQVFSQnFFTE1jUlEwQUlBQW9BZ2dnQTBFTWFpQURRUWhxRUo4Q0lRSUxJQU5CRUdva0FDQUNDOVlCQVFKL0FrQUNRQUpBSUFFb0FnQUVRQ0FCS0FJRVJRMEJJQUlvQWdCRkRRSWdBaWdDQkVVTkF5QUFLQUlBSUFFUWpBTWhBeUFBS0FJQUlBRkJCR29RakFNb0FnUWhCQ0FES0FJRUlRRWdBQ2dDQUNBQ0VJd0RJUU1nQUNnQ0FDQUNRUVJxRUl3RElRQkJBU0VDSUFNb0FnUWlBeUFCVFFSL0lBUWdBQ2dDQkVrZ0FTQURUWEVGUVFFTER3dEIxUzFCeDdZRFFhY0NRZHp4Q0JBQUFBdEJtT2NFUWNlMkEwR29Ba0hjOFFnUUFBQUxRY3N0UWNlMkEwR3BBa0hjOFFnUUFBQUxRWTNuQkVISHRnTkJxZ0pCM1BFSUVBQUFDdzBBSUFBZ0FTQUNRUUlReFF3TEhRQWdBU0FDTmdJQUlBRWdBQ2tDQkRjQ0JDQUJJQUFvQWd3MkFnd0xHd0VCZjBFSUVCVWlBaUFCTmdJQUlBSWdBQ2dDQkRZQ0JDQUNDd2tBSUFCQkFCQ0dBZ3VvQVFJQ2Z3RjlJd0JCSUdzaUJTUUFJQVVDZnlBRElBU1VFRVlpQjR0REFBQ0FmMTFGQkVBZ0JVRUFPZ0FZUVFBTUFRc2dCU0FIT0FJWVFRRUxPZ0FjQWtBZ0JTMEFIRVVFUUNBRlFRaHFJZ1lnQTBIZG1BZ2dCQkRxQmlBQklBWWdBaEJkSUFZUUR4b2dBQ0FCTFFBRUJIOGdBRU1BQUFBQUVFWTRBZ0JCQVFWQkFnczZBQVFNQVFzZ0JTb0NHQkJHSVFNZ0FFRUJPZ0FFSUFBZ0F6Z0NBQXNnQlVFZ2FpUUFDMm9DQVg4QmZTTUFRUkJySWdVa0FDQUFBbjhDUUNBRElBU1VJZ2FMUXdBQWdIOWRSUVJBSUFVZ0EwSGRtQWdnQkJEc0JpQUJJQVVnQWhCZElBVVFEeHBCQWlBQkxRQUVSUTBDR2lBQVFRQTJBZ0FNQVFzZ0FDQUdPQUlBQzBFQkN6b0FCQ0FGUVJCcUpBQUxiZ0lCZndGOEl3QkJFR3NpQlNRQUlBQUNmd0pBSUFNZ0JLSWlCcGxFQUFBQUFBQUE4SDlqUlFSQUlBVWdBMEhkbUFnZ0JCRHRCaUFCSUFVZ0FoQmRJQVVRRHhwQkFpQUJMUUFFUlEwQ0dpQUFRZ0EzQXdBTUFRc2dBQ0FHT1FNQUMwRUJDem9BQ0NBRlFSQnFKQUFMYVFFRGZ3SkFJQUFpQVVFRGNRUkFBMEFnQVMwQUFFVU5BaUFCUVFGcUlnRkJBM0VOQUFzTEEwQWdBU0lDUVFScUlRRWdBaWdDQUNJRFFYOXpJQU5CZ1lLRUNHdHhRWUNCZ29SNGNVVU5BQXNEUUNBQ0lnRkJBV29oQWlBQkxRQUFEUUFMQ3lBQklBQnJDOGtCQVFOL0FrQWdBU0FDRUxvQklnTUVRQUovQWtBQ1FDQURLQUlrSWdWRkJFQkJBQ0VDREFFTFFRQWhBa0VBSUFFZ0JSQlFSUTBDR2tFQUlBRWdCUkErUVNCSERRSWFRUUVoQWlBREx3RWVFS01DRFFFTFFRQU1BUXRCQUNBREx3RWVFTDhJRFFBYUlBTXZBUjVCTGtjRVFDQURLQUlFSUFNb0FnQWlBV3RCRUVjTkF5QUJLQUlNSVFRTFFRRUxJUUVnQUNBRU5nSUVJQUFnQVRvQUFTQUFJQUk2QUFBUEMwR3BMMEg0cXdKQjdRbEJpQzRRQUFBTFFhcjJCa0g0cXdKQi93bEJpQzRRQUFBTExRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhvQW1vZ0FrRU1haEMzQ0NFQUlBSkJFR29rQUNBQUM2RVVBaEYvQVg0akFFSGdBMnNpQWlRQUFrQWdBUVJBSUFKQkFUWUNGQ0FDSUFFMkFsZ2dBaUFDUWRnQWFqWUNFQ0FDSUFJcEF4QTNBd2dnQUVFUWFpRU9JQUpCR0dvZ0FrRUlhaEN5Q1NFS0lBSkJzQU5xUVFSeUlROERRQ0FLS0FJa0lnRUVRQ0FLSUFGQkFXc2lBVFlDSkNBS0tBSWdJQUZCQW5ScU5RSUFJUk1nQUNnQ0JDRVFJQUpDZ0lDQWdJQUVOd0xjQWlBQ0lBSkIyQUJxSWdFMkF0Z0NJQUZCQVJDUURDQUNJQUlvQXR3Q0lnTkJBV28yQXR3Q0lBSW9BdGdDSUFOQkEzUnFJQk0zQWdBZ0FpQUJOZ0pRSUFJZ0FUWUNTQU5BQWtBZ0FpZ0MzQUlpQVVVTkFDQUNJQUZCQVdzaUFUWUMzQUlnQWlnQzJBSWdBVUVEZEdvaUFTZ0NCQ0VKSUFJZ0FTZ0NBQ0lCTmdKRUFrQWdBUkNUQ0NJTFJRMEFBa0FDUUFKQUlBc29BZ1FpQVVINDdROUdCRUFnQWtIb0Ftb2dDeWdDSkNJRFFTUnFFRlloQVNBQ0lBTTJBdHdESUE0Z0FSRDlFQ0lIUlFSQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBSW9BdmdDRGdrQUFRSURCQVVHQndnTkN5QUFLQUlJSVFNZ0FrR3dBMm9pRFNBQkVGTWpBRUhRQVdzaUFTUUFJQU5CakFGcUlnTkJoQmhxS0FJQUlBTW9Bb3dZSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFnQXlBRVFRRjBRUUpxRUlBUkN5QUJRY2dCYWlBRElBSkIzQU5xSWdRUXNoQWdBU0FOTmdMRUFTQUJJQVEyQXNBQklBTW9Bb1FZSWdaQkFXc2hEQ0FFS0FJQUlSRWdBeWdDZ0JnaEJTQUJLQUxNQVNFU0lBRW9Bc2dCSVFkQkFDRUlBa0FEUUNBR0lBaEhCRUFnQlNBSFFRVjBhaUlFTFFBVVJRUkFJQUZCQ0dvaUJpQUJRY0FCYWhDOEhpQUVJQVlRMVI0Z0JrRUVjaENWQWlBQktBTE1BU0VHSUFVZ0IwRUZkR29pQlNBSU5nSWNJQVVnQmpZQ0dDQURJQU1vQW93WVFRRnFOZ0tNR0NBRElBTW9BcEFZUVFGcU5nS1FHQ0FDSUFSQkJHbzJBb3dESUFKQkFEWUNpQU1NQXdzQ1FDQUVLQUlZSUJKSERRQWdFU0FFS0FJQVJ3MEFJQUpCQWpZQ2lBTWdBaUFFUVFScU5nS01Bd3dEQ3lBSUlBUW9BaHhMQkVBZ0FVR29BV29pQmlBQlFjQUJhaEM4SGlBQlFRaHFJQVlRMUI0aEJTQUJLQUxNQVNFTUlBVWdDRFlDSENBRklBdzJBaGdnQmtFRWNoQ1ZBaUFGSUFRUTdCQWdCU0FGS0FJY1FRRnFOZ0ljSUFNZ0IwRUJhaUFES0FLRUdIQWdCUkRUSGlBRElBTW9Bb3dZUVFGcU5nS01HQ0FESUFNb0FwQVlRUUZxTmdLUUdDQUNJQVJCQkdvMkFvd0RJQUpCQURZQ2lBTWdCUkQrQnd3REJTQUhRUUZxUVFBZ0J5QU1SeHNoQnlBSVFRRnFJUWdNQWdzQUN3c2dBVUVJYWtHR3RRTkI2d05CRGlBQlFhZ0JhaEFkSWdNUUZ5SUVRUmhxUVpZMUVBNGFJQVFRR0NBQ1FnQTNBb2dESUFNUUhnc2dBVUhRQVdva0FDQU5FQThhREF3TElBQW9BZ2doQXlBQlFSUnFFTUFSS0FJQUlRRWdBa0VDT2dDOEF5QUNJQUUyQXJBRElBSkJpQU5xSUFOQmpBRnFJQUpCM0FOcUlBSkJzQU5xSWdFUTdBUWdBUkNWQWd3TEN5QUFLQUlJSVFNZ0FVRVVhaENwRVNnQ0FDRUJJQUpCQlRvQXZBTWdBaUFCTmdLd0F5QUNRWWdEYWlBRFFZd0JhaUFDUWR3RGFpQUNRYkFEYWlJQkVPd0VJQUVRbFFJTUNnc2dBQ2dDQ0NFRElBRkJGR29pQVMwQUJFRURSd1JBREJFTElBRW9BZ0FoQVNBQ1FRWTZBTHdESUFJZ0FUWUNzQU1nQWtHSUEyb2dBMEdNQVdvZ0FrSGNBMm9nQWtHd0Eyb2lBUkRzQkNBQkVKVUNEQWtMSUFBb0FnZ2hBeUFCUVJScUlnRXRBQVJCQkVjRVFBd1FDeUFCS0FJQUlRRWdBa0VFT2dDOEF5QUNJQUUyQXJBRElBSkJpQU5xSUFOQmpBRnFJQUpCM0FOcUlBSkJzQU5xSWdFUTdBUWdBUkNWQWd3SUN5QUFLQUlJSVFNZ0FVRVVhaUlCTFFBRVFRVkhCRUFNRHdzZ0FTZ0NBQ0VCSUFKQkNUb0F2QU1nQWlBQk5nS3dBeUFDUVlnRGFpQURRWXdCYWlBQ1Fkd0RhaUFDUWJBRGFpSUJFT3dFSUFFUWxRSU1Cd3NnQUNnQ0NDRURJQUZCRkdvaUFTMEFCRUVHUndSQURBNExJQUVvQWdBaEFTQUNRUU02QUx3RElBSWdBVFlDc0FNZ0FrR0lBMm9nQTBHTUFXb2dBa0hjQTJvZ0FrR3dBMm9pQVJEc0JDQUJFSlVDREFZTElBQW9BZ2doQXlBQlFSUnFJZ0V0QUFSQkIwY0VRQXdOQ3lBQktBSUFJUUVnQWtFSU9nQzhBeUFDSUFFMkFyQURJQUpCaUFOcUlBTkJqQUZxSUFKQjNBTnFJQUpCc0FOcUlnRVE3QVFnQVJDVkFnd0ZDeUFBS0FJSUlRTWdBVUVVYWlJQkxRQUVRUWhIQkVBTURBc2dBU2dDQUNFQklBSkJCem9BdkFNZ0FpQUJOZ0t3QXlBQ1FZZ0RhaUFEUVl3QmFpQUNRZHdEYWlBQ1FiQURhaUlCRU93RUlBRVFsUUlNQkFzZ0FpQUFLQUlBSWdRMkFyQURJQThnQVJCV0dpQUNRUUEyQXRBRElBSWdCQ2dDc0FoQkFXczJBdFFESUFKQnNBTnFFSThNUlEwQ0lBSkJzQU5xRUk4TUtBSUFLQUlBSUFkSERRSWdBQ2dDRENFQklBSWdBQ2dDL0JFMkFxQURJQUlnQWtHd0Eyb1Fqd3dvQWdBMkFxUURJQUlnQXlnQ0lEWUNtQU1nQWlBREtRSVlOd09RQXlBQ0lBTXBBaEEzQTRnRElBSkJxQU5xSUFFZ0FrR2dBMm9nQWtHSUEyb1F2aDRnQWlnQ3FBTkJBa1lOQWlBQUtBTDhFU0VESUFKQnNBTnFFSThNSVEwZ0F5Z0NLQ0lFSUFNb0Fpd2lBVWtOQVNBQklBRkJBWFFpQmtFQ0lBRWJJZ1ZQRFFFZ0F5Z0NKQ0VJSUFOQkJHb2lEQ0VCSUFNZ0JVRUlUd1IvUVg4Z0JVRUNkQ0FGUWYvLy8vOERTeHNRRlNFQklBWUZRUWdMTmdJc0lBTWdBVFlDSkVFQUlRRURRQ0FCSUFSR0JFQWdEQ0FJRURZZ0F5Z0NLQ0VFREFNRklBRkJBblFpQlNBREtBSWthaUFGSUFocUtBSUFOZ0lBSUFGQkFXb2hBUXdCQ3dBTEFBc2dBVUc0N2c5R0JFQWdBQ0FMS0FJa0VOOEJEQVFMSUFGQndQNFJSdzBESUFBZ0N5Z0NKQkRmQVF3REN5QURJQVJCQVdvMkFpZ2dBeWdDSkNBRVFRSjBhaUFOS0FJQU5nSUFDeUFBS0FJSUlRRWdBa0VCT2dDOEF5QUNJQWMyQXJBRElBSkJpQU5xSUFGQmpBRnFJQUpCM0FOcUlBSkJzQU5xSWdFUTdBUWdBUkNWQWdzZ0N5Z0NKQ0lES0FJRVFjanBEMGNnQTBWeURRQWdBeWdDVENJQklBTW9BbEJCQW5ScUlRTURRQ0FCSUFOR0RRRWdBaUFCS0FJQU5nS3dBeUFLSUFKQnNBTnFFQ1FnQVVFRWFpRUJEQUFMQUFzZ0FpZ0NSQ0VCSUFJZ0VEWUM3QUlnQWlBQ1FjUUFhallDNkFJZ0FVVUVRQ0FDUWVnQ2FoQ09EQTBDREFFTElBRW9BZ1FpQTBIQS94RkdCRUFnQWtISUFHb2dBU2dDSkNBQktBSW9JQWxCQVdvUWpRd01BZ3NnQTBHQWdCSkdCRUFnQWtISUFHb2dBU2dDS0NBQktBSXNJQWxCQVdvUWpRd01BZ3NnQTBIQS9oRkdCRUFnQWtIUUFHb2dBU2dDS0NBSlFRRnFFSzBGREFJTElBTkJ1TzRQUmdSQUlBRW9Ba2dpQXlBQktBSk1RUUowYWlFQklBbEJBV29oQkFOQUlBRWdBMFlOQXlBQlFRUnJJZ0VvQWdBaEJTQUNJQVEyQXJRRElBSWdCVFlDc0FNZ0FrSFlBR29nQWtHd0Eyb1ErUVVNQUFzQUN5QURRY0NBRWtZRVFDQUNRZEFBYWlBQktBSWtJQWxCQVdvUXJRVU1BZ3NnQTBHQWdSSkdCRUFnQWtIUUFHb2dBU2dDS0NBSlFRRnFFSzBGREFJTElBSkI2QUpxRUk0TURRRUxDeUFDUVFBMkF0d0NJQUpCMkFCcUlBSW9BdGdDRURZTUFRc0xJQW9RSXdzZ0FrSGdBMm9rQUE4TEVHOEFDL0V0QVF0L0l3QkJFR3NpQ3lRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBUWZRQlRRUkFRYUNkSUNnQ0FDSUZRUkFnQUVFTGFrRjRjU0FBUVF0Skd5SUdRUU4ySWdCMklnRkJBM0VFUUFKQUlBRkJmM05CQVhFZ0FHb2lBa0VEZENJQlFjaWRJR29pQUNBQlFkQ2RJR29vQWdBaUFTZ0NDQ0lEUmdSQVFhQ2RJQ0FGUVg0Z0FuZHhOZ0lBREFFTElBTWdBRFlDRENBQUlBTTJBZ2dMSUFGQkNHb2hBQ0FCSUFKQkEzUWlBa0VEY2pZQ0JDQUJJQUpxSWdFZ0FTZ0NCRUVCY2pZQ0JBd01DeUFHUWFpZElDZ0NBQ0lIVFEwQklBRUVRQUpBUVFJZ0FIUWlBa0VBSUFKcmNpQUJJQUIwY1NJQVFRRnJJQUJCZjNOeElnQWdBRUVNZGtFUWNTSUFkaUlCUVFWMlFRaHhJZ0lnQUhJZ0FTQUNkaUlBUVFKMlFRUnhJZ0Z5SUFBZ0FYWWlBRUVCZGtFQ2NTSUJjaUFBSUFGMklnQkJBWFpCQVhFaUFYSWdBQ0FCZG1vaUFVRURkQ0lBUWNpZElHb2lBaUFBUWRDZElHb29BZ0FpQUNnQ0NDSURSZ1JBUWFDZElDQUZRWDRnQVhkeElnVTJBZ0FNQVFzZ0F5QUNOZ0lNSUFJZ0F6WUNDQXNnQUNBR1FRTnlOZ0lFSUFBZ0Jtb2lDQ0FCUVFOMElnRWdCbXNpQTBFQmNqWUNCQ0FBSUFGcUlBTTJBZ0FnQndSQUlBZEJlSEZCeUowZ2FpRUJRYlNkSUNnQ0FDRUNBbjhnQlVFQklBZEJBM1owSWdSeFJRUkFRYUNkSUNBRUlBVnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEJDQUJJQUkyQWdnZ0JDQUNOZ0lNSUFJZ0FUWUNEQ0FDSUFRMkFnZ0xJQUJCQ0dvaEFFRzBuU0FnQ0RZQ0FFR29uU0FnQXpZQ0FBd01DMEdrblNBb0FnQWlDa1VOQVNBS1FRRnJJQXBCZjNOeElnQWdBRUVNZGtFUWNTSUFkaUlCUVFWMlFRaHhJZ0lnQUhJZ0FTQUNkaUlBUVFKMlFRUnhJZ0Z5SUFBZ0FYWWlBRUVCZGtFQ2NTSUJjaUFBSUFGMklnQkJBWFpCQVhFaUFYSWdBQ0FCZG1wQkFuUkIwSjhnYWlnQ0FDSUNLQUlFUVhoeElBWnJJUVFnQWlFQkEwQUNRQ0FCS0FJUUlnQkZCRUFnQVNnQ0ZDSUFSUTBCQ3lBQUtBSUVRWGh4SUFacklnRWdCQ0FCSUFSSklnRWJJUVFnQUNBQ0lBRWJJUUlnQUNFQkRBRUxDeUFDS0FJWUlRa2dBaUFDS0FJTUlnTkhCRUFnQWlnQ0NDSUFRYkNkSUNnQ0FFa2FJQUFnQXpZQ0RDQURJQUEyQWdnTUN3c2dBa0VVYWlJQktBSUFJZ0JGQkVBZ0FpZ0NFQ0lBUlEwRElBSkJFR29oQVFzRFFDQUJJUWdnQUNJRFFSUnFJZ0VvQWdBaUFBMEFJQU5CRUdvaEFTQURLQUlRSWdBTkFBc2dDRUVBTmdJQURBb0xRWDhoQmlBQVFiOS9TdzBBSUFCQkMyb2lBRUY0Y1NFR1FhU2RJQ2dDQUNJSVJRMEFRUUFnQm1zaEJBSkFBa0FDUUFKL1FRQWdCa0dBQWtrTkFCcEJIeUFHUWYvLy93ZExEUUFhSUFCQkNIWWlBQ0FBUVlEK1AycEJFSFpCQ0hFaUFIUWlBU0FCUVlEZ0gycEJFSFpCQkhFaUFYUWlBaUFDUVlDQUQycEJFSFpCQW5FaUFuUkJEM1lnQUNBQmNpQUNjbXNpQUVFQmRDQUdJQUJCRldwMlFRRnhja0VjYWdzaUIwRUNkRUhRbnlCcUtBSUFJZ0ZGQkVCQkFDRUFEQUVMUVFBaEFDQUdRUmtnQjBFQmRtdEJBQ0FIUVI5SEczUWhBZ05BQWtBZ0FTZ0NCRUY0Y1NBR2F5SUZJQVJQRFFBZ0FTRURJQVVpQkEwQVFRQWhCQ0FCSVFBTUF3c2dBQ0FCS0FJVUlnVWdCU0FCSUFKQkhYWkJCSEZxS0FJUUlnRkdHeUFBSUFVYklRQWdBa0VCZENFQ0lBRU5BQXNMSUFBZ0EzSkZCRUJCQUNFRFFRSWdCM1FpQUVFQUlBQnJjaUFJY1NJQVJRMERJQUJCQVdzZ0FFRi9jM0VpQUNBQVFReDJRUkJ4SWdCMklnRkJCWFpCQ0hFaUFpQUFjaUFCSUFKMklnQkJBblpCQkhFaUFYSWdBQ0FCZGlJQVFRRjJRUUp4SWdGeUlBQWdBWFlpQUVFQmRrRUJjU0lCY2lBQUlBRjJha0VDZEVIUW55QnFLQUlBSVFBTElBQkZEUUVMQTBBZ0FDZ0NCRUY0Y1NBR2F5SUNJQVJKSVFFZ0FpQUVJQUViSVFRZ0FDQURJQUViSVFNZ0FDZ0NFQ0lCQkg4Z0FRVWdBQ2dDRkFzaUFBMEFDd3NnQTBVTkFDQUVRYWlkSUNnQ0FDQUdhMDhOQUNBREtBSVlJUWNnQXlBREtBSU1JZ0pIQkVBZ0F5Z0NDQ0lBUWJDZElDZ0NBRWthSUFBZ0FqWUNEQ0FDSUFBMkFnZ01DUXNnQTBFVWFpSUJLQUlBSWdCRkJFQWdBeWdDRUNJQVJRMERJQU5CRUdvaEFRc0RRQ0FCSVFVZ0FDSUNRUlJxSWdFb0FnQWlBQTBBSUFKQkVHb2hBU0FDS0FJUUlnQU5BQXNnQlVFQU5nSUFEQWdMSUFaQnFKMGdLQUlBSWdGTkJFQkJ0SjBnS0FJQUlRQUNRQ0FCSUFacklnSkJFRThFUUVHb25TQWdBallDQUVHMG5TQWdBQ0FHYWlJRE5nSUFJQU1nQWtFQmNqWUNCQ0FBSUFGcUlBSTJBZ0FnQUNBR1FRTnlOZ0lFREFFTFFiU2RJRUVBTmdJQVFhaWRJRUVBTmdJQUlBQWdBVUVEY2pZQ0JDQUFJQUZxSWdFZ0FTZ0NCRUVCY2pZQ0JBc2dBRUVJYWlFQURBb0xJQVpCckowZ0tBSUFJZ0pKQkVCQnJKMGdJQUlnQm1zaUFUWUNBRUc0blNCQnVKMGdLQUlBSWdBZ0Jtb2lBallDQUNBQ0lBRkJBWEkyQWdRZ0FDQUdRUU55TmdJRUlBQkJDR29oQUF3S0MwRUFJUUFnQmtFdmFpSUVBbjlCK0tBZ0tBSUFCRUJCZ0tFZ0tBSUFEQUVMUVlTaElFSi9Od0lBUWZ5Z0lFS0FvSUNBZ0lBRU53SUFRZmlnSUNBTFFReHFRWEJ4UWRpcTFhb0ZjellDQUVHTW9TQkJBRFlDQUVIY29DQkJBRFlDQUVHQUlBc2lBV29pQlVFQUlBRnJJZ2h4SWdFZ0JrME5DVUhZb0NBb0FnQWlBd1JBUWRDZ0lDZ0NBQ0lISUFGcUlna2dCMDBnQXlBSlNYSU5DZ3RCM0tBZ0xRQUFRUVJ4RFFRQ1FBSkFRYmlkSUNnQ0FDSURCRUJCNEtBZ0lRQURRQ0FESUFBb0FnQWlCMDhFUUNBSElBQW9BZ1JxSUFOTERRTUxJQUFvQWdnaUFBMEFDd3RCQUJDYkJpSUNRWDlHRFFVZ0FTRUZRZnlnSUNnQ0FDSUFRUUZySWdNZ0FuRUVRQ0FCSUFKcklBSWdBMnBCQUNBQWEzRnFJUVVMSUFVZ0JrMGdCVUgrLy8vL0IwdHlEUVZCMktBZ0tBSUFJZ0FFUUVIUW9DQW9BZ0FpQXlBRmFpSUlJQU5OSUFBZ0NFbHlEUVlMSUFVUW13WWlBQ0FDUncwQkRBY0xJQVVnQW1zZ0NIRWlCVUgrLy8vL0Iwc05CQ0FGRUpzR0lnSWdBQ2dDQUNBQUtBSUVha1lOQXlBQ0lRQUxJQUJCZjBZZ0JrRXdhaUFGVFhKRkJFQkJnS0VnS0FJQUlnSWdCQ0FGYTJwQkFDQUNhM0VpQWtIKy8vLy9CMHNFUUNBQUlRSU1Cd3NnQWhDYkJrRi9Sd1JBSUFJZ0JXb2hCU0FBSVFJTUJ3dEJBQ0FGYXhDYkJob01CQXNnQUNJQ1FYOUhEUVVNQXd0QkFDRUREQWNMUVFBaEFnd0ZDeUFDUVg5SERRSUxRZHlnSUVIY29DQW9BZ0JCQkhJMkFnQUxJQUZCL3YvLy93ZExEUUVnQVJDYkJpSUNRWDlHUVFBUW13WWlBRUYvUm5JZ0FDQUNUWElOQVNBQUlBSnJJZ1VnQmtFb2FrME5BUXRCMEtBZ1FkQ2dJQ2dDQUNBRmFpSUFOZ0lBUWRTZ0lDZ0NBQ0FBU1FSQVFkU2dJQ0FBTmdJQUN3SkFBa0FDUUVHNG5TQW9BZ0FpQkFSQVFlQ2dJQ0VBQTBBZ0FpQUFLQUlBSWdFZ0FDZ0NCQ0lEYWtZTkFpQUFLQUlJSWdBTkFBc01BZ3RCc0owZ0tBSUFJZ0JCQUNBQUlBSk5HMFVFUUVHd25TQWdBallDQUF0QkFDRUFRZVNnSUNBRk5nSUFRZUNnSUNBQ05nSUFRY0NkSUVGL05nSUFRY1NkSUVING9DQW9BZ0EyQWdCQjdLQWdRUUEyQWdBRFFDQUFRUU4wSWdGQjBKMGdhaUFCUWNpZElHb2lBellDQUNBQlFkU2RJR29nQXpZQ0FDQUFRUUZxSWdCQklFY05BQXRCckowZ0lBVkJLR3NpQUVGNElBSnJRUWR4UVFBZ0FrRUlha0VIY1JzaUFXc2lBellDQUVHNG5TQWdBU0FDYWlJQk5nSUFJQUVnQTBFQmNqWUNCQ0FBSUFKcVFTZzJBZ1JCdkowZ1FZaWhJQ2dDQURZQ0FBd0NDeUFBTFFBTVFRaHhJQUVnQkV0eUlBSWdCRTF5RFFBZ0FDQURJQVZxTmdJRVFiaWRJQ0FFUVhnZ0JHdEJCM0ZCQUNBRVFRaHFRUWR4R3lJQWFpSUJOZ0lBUWF5ZElFR3NuU0FvQWdBZ0JXb2lBaUFBYXlJQU5nSUFJQUVnQUVFQmNqWUNCQ0FDSUFScVFTZzJBZ1JCdkowZ1FZaWhJQ2dDQURZQ0FBd0JDMEd3blNBb0FnQWdBa3NFUUVHd25TQWdBallDQUFzZ0FpQUZhaUVCUWVDZ0lDRUFBa0FDUUFKQUFrQUNRQUpBQTBBZ0FTQUFLQUlBUndSQUlBQW9BZ2dpQUEwQkRBSUxDeUFBTFFBTVFRaHhSUTBCQzBIZ29DQWhBQU5BSUFRZ0FDZ0NBQ0lCVHdSQUlBRWdBQ2dDQkdvaUF5QUVTdzBEQ3lBQUtBSUlJUUFNQUFzQUN5QUFJQUkyQWdBZ0FDQUFLQUlFSUFWcU5nSUVJQUpCZUNBQ2EwRUhjVUVBSUFKQkNHcEJCM0ViYWlJSElBWkJBM0kyQWdRZ0FVRjRJQUZyUVFkeFFRQWdBVUVJYWtFSGNSdHFJZ1VnQmlBSGFpSUdheUVBSUFRZ0JVWUVRRUc0blNBZ0JqWUNBRUdzblNCQnJKMGdLQUlBSUFCcUlnQTJBZ0FnQmlBQVFRRnlOZ0lFREFNTFFiU2RJQ2dDQUNBRlJnUkFRYlNkSUNBR05nSUFRYWlkSUVHb25TQW9BZ0FnQUdvaUFEWUNBQ0FHSUFCQkFYSTJBZ1FnQUNBR2FpQUFOZ0lBREFNTElBVW9BZ1FpQkVFRGNVRUJSZ1JBSUFSQmVIRWhDUUpBSUFSQi93Rk5CRUFnQlNnQ0NDSUJJQVJCQTNZaUEwRURkRUhJblNCcVJob2dBU0FGS0FJTUlnSkdCRUJCb0owZ1FhQ2RJQ2dDQUVGK0lBTjNjVFlDQUF3Q0N5QUJJQUkyQWd3Z0FpQUJOZ0lJREFFTElBVW9BaGdoQ0FKQUlBVWdCU2dDRENJQ1J3UkFJQVVvQWdnaUFTQUNOZ0lNSUFJZ0FUWUNDQXdCQ3dKQUlBVkJGR29pQkNnQ0FDSUJEUUFnQlVFUWFpSUVLQUlBSWdFTkFFRUFJUUlNQVFzRFFDQUVJUU1nQVNJQ1FSUnFJZ1FvQWdBaUFRMEFJQUpCRUdvaEJDQUNLQUlRSWdFTkFBc2dBMEVBTmdJQUN5QUlSUTBBQWtBZ0JTZ0NIQ0lCUVFKMFFkQ2ZJR29pQXlnQ0FDQUZSZ1JBSUFNZ0FqWUNBQ0FDRFFGQnBKMGdRYVNkSUNnQ0FFRitJQUYzY1RZQ0FBd0NDeUFJUVJCQkZDQUlLQUlRSUFWR0cyb2dBallDQUNBQ1JRMEJDeUFDSUFnMkFoZ2dCU2dDRUNJQkJFQWdBaUFCTmdJUUlBRWdBallDR0FzZ0JTZ0NGQ0lCUlEwQUlBSWdBVFlDRkNBQklBSTJBaGdMSUFVZ0NXb2lCU2dDQkNFRUlBQWdDV29oQUFzZ0JTQUVRWDV4TmdJRUlBWWdBRUVCY2pZQ0JDQUFJQVpxSUFBMkFnQWdBRUgvQVUwRVFDQUFRWGh4UWNpZElHb2hBUUovUWFDZElDZ0NBQ0lDUVFFZ0FFRURkblFpQUhGRkJFQkJvSjBnSUFBZ0FuSTJBZ0FnQVF3QkN5QUJLQUlJQ3lFQUlBRWdCallDQ0NBQUlBWTJBZ3dnQmlBQk5nSU1JQVlnQURZQ0NBd0RDMEVmSVFRZ0FFSC8vLzhIVFFSQUlBQkJDSFlpQVNBQlFZRCtQMnBCRUhaQkNIRWlBWFFpQWlBQ1FZRGdIMnBCRUhaQkJIRWlBblFpQXlBRFFZQ0FEMnBCRUhaQkFuRWlBM1JCRDNZZ0FTQUNjaUFEY21zaUFVRUJkQ0FBSUFGQkZXcDJRUUZ4Y2tFY2FpRUVDeUFHSUFRMkFod2dCa0lBTndJUUlBUkJBblJCMEo4Z2FpRUJBa0JCcEowZ0tBSUFJZ0pCQVNBRWRDSURjVVVFUUVHa25TQWdBaUFEY2pZQ0FDQUJJQVkyQWdBTUFRc2dBRUVaSUFSQkFYWnJRUUFnQkVFZlJ4dDBJUVFnQVNnQ0FDRUNBMEFnQWlJQktBSUVRWGh4SUFCR0RRTWdCRUVkZGlFQ0lBUkJBWFFoQkNBQklBSkJCSEZxSWdNb0FoQWlBZzBBQ3lBRElBWTJBaEFMSUFZZ0FUWUNHQ0FHSUFZMkFnd2dCaUFHTmdJSURBSUxRYXlkSUNBRlFTaHJJZ0JCZUNBQ2EwRUhjVUVBSUFKQkNHcEJCM0ViSWdGcklnZzJBZ0JCdUowZ0lBRWdBbW9pQVRZQ0FDQUJJQWhCQVhJMkFnUWdBQ0FDYWtFb05nSUVRYnlkSUVHSW9TQW9BZ0EyQWdBZ0JDQURRU2NnQTJ0QkIzRkJBQ0FEUVNkclFRZHhHMnBCTDJzaUFDQUFJQVJCRUdwSkd5SUJRUnMyQWdRZ0FVSG9vQ0FwQWdBM0FoQWdBVUhnb0NBcEFnQTNBZ2hCNktBZ0lBRkJDR28yQWdCQjVLQWdJQVUyQWdCQjRLQWdJQUkyQWdCQjdLQWdRUUEyQWdBZ0FVRVlhaUVBQTBBZ0FFRUhOZ0lFSUFCQkNHb2hBaUFBUVFScUlRQWdBaUFEU1EwQUN5QUJJQVJHRFFNZ0FTQUJLQUlFUVg1eE5nSUVJQVFnQVNBRWF5SUNRUUZ5TmdJRUlBRWdBallDQUNBQ1FmOEJUUVJBSUFKQmVIRkJ5SjBnYWlFQUFuOUJvSjBnS0FJQUlnRkJBU0FDUVFOMmRDSUNjVVVFUUVHZ25TQWdBU0FDY2pZQ0FDQUFEQUVMSUFBb0FnZ0xJUUVnQUNBRU5nSUlJQUVnQkRZQ0RDQUVJQUEyQWd3Z0JDQUJOZ0lJREFRTFFSOGhBQ0FDUWYvLy93ZE5CRUFnQWtFSWRpSUFJQUJCZ1A0L2FrRVFka0VJY1NJQWRDSUJJQUZCZ09BZmFrRVFka0VFY1NJQmRDSURJQU5CZ0lBUGFrRVFka0VDY1NJRGRFRVBkaUFBSUFGeUlBTnlheUlBUVFGMElBSWdBRUVWYW5aQkFYRnlRUnhxSVFBTElBUWdBRFlDSENBRVFnQTNBaEFnQUVFQ2RFSFFueUJxSVFFQ1FFR2tuU0FvQWdBaUEwRUJJQUIwSWdWeFJRUkFRYVNkSUNBRElBVnlOZ0lBSUFFZ0JEWUNBQXdCQ3lBQ1FSa2dBRUVCZG10QkFDQUFRUjlIRzNRaEFDQUJLQUlBSVFNRFFDQURJZ0VvQWdSQmVIRWdBa1lOQkNBQVFSMTJJUU1nQUVFQmRDRUFJQUVnQTBFRWNXb2lCU2dDRUNJRERRQUxJQVVnQkRZQ0VBc2dCQ0FCTmdJWUlBUWdCRFlDRENBRUlBUTJBZ2dNQXdzZ0FTZ0NDQ0lBSUFZMkFnd2dBU0FHTmdJSUlBWkJBRFlDR0NBR0lBRTJBZ3dnQmlBQU5nSUlDeUFIUVFocUlRQU1CUXNnQVNnQ0NDSUFJQVEyQWd3Z0FTQUVOZ0lJSUFSQkFEWUNHQ0FFSUFFMkFnd2dCQ0FBTmdJSUMwR3NuU0FvQWdBaUFDQUdUUTBBUWF5ZElDQUFJQVpySWdFMkFnQkJ1SjBnUWJpZElDZ0NBQ0lBSUFacUlnSTJBZ0FnQWlBQlFRRnlOZ0lFSUFBZ0JrRURjallDQkNBQVFRaHFJUUFNQXd0Qm1La2dRVEEyQWdCQkFDRUFEQUlMQWtBZ0IwVU5BQUpBSUFNb0Fod2lBRUVDZEVIUW55QnFJZ0VvQWdBZ0EwWUVRQ0FCSUFJMkFnQWdBZzBCUWFTZElDQUlRWDRnQUhkeElnZzJBZ0FNQWdzZ0IwRVFRUlFnQnlnQ0VDQURSaHRxSUFJMkFnQWdBa1VOQVFzZ0FpQUhOZ0lZSUFNb0FoQWlBQVJBSUFJZ0FEWUNFQ0FBSUFJMkFoZ0xJQU1vQWhRaUFFVU5BQ0FDSUFBMkFoUWdBQ0FDTmdJWUN3SkFJQVJCRDAwRVFDQURJQVFnQm1vaUFFRURjallDQkNBQUlBTnFJZ0FnQUNnQ0JFRUJjallDQkF3QkN5QURJQVpCQTNJMkFnUWdBeUFHYWlJQ0lBUkJBWEkyQWdRZ0FpQUVhaUFFTmdJQUlBUkIvd0ZOQkVBZ0JFRjRjVUhJblNCcUlRQUNmMEdnblNBb0FnQWlBVUVCSUFSQkEzWjBJZ1J4UlFSQVFhQ2RJQ0FCSUFSeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQVNBQUlBSTJBZ2dnQVNBQ05nSU1JQUlnQURZQ0RDQUNJQUUyQWdnTUFRdEJIeUVBSUFSQi8vLy9CMDBFUUNBRVFRaDJJZ0FnQUVHQS9qOXFRUkIyUVFoeElnQjBJZ0VnQVVHQTRCOXFRUkIyUVFSeElnRjBJZ1VnQlVHQWdBOXFRUkIyUVFKeElnVjBRUTkySUFBZ0FYSWdCWEpySWdCQkFYUWdCQ0FBUVJWcWRrRUJjWEpCSEdvaEFBc2dBaUFBTmdJY0lBSkNBRGNDRUNBQVFRSjBRZENmSUdvaEFRSkFBa0FnQ0VFQklBQjBJZ1Z4UlFSQVFhU2RJQ0FGSUFoeU5nSUFJQUVnQWpZQ0FBd0JDeUFFUVJrZ0FFRUJkbXRCQUNBQVFSOUhHM1FoQUNBQktBSUFJUVlEUUNBR0lnRW9BZ1JCZUhFZ0JFWU5BaUFBUVIxMklRVWdBRUVCZENFQUlBRWdCVUVFY1dvaUJTZ0NFQ0lHRFFBTElBVWdBallDRUFzZ0FpQUJOZ0lZSUFJZ0FqWUNEQ0FDSUFJMkFnZ01BUXNnQVNnQ0NDSUFJQUkyQWd3Z0FTQUNOZ0lJSUFKQkFEWUNHQ0FDSUFFMkFnd2dBaUFBTmdJSUN5QURRUWhxSVFBTUFRc0NRQ0FKUlEwQUFrQWdBaWdDSENJQVFRSjBRZENmSUdvaUFTZ0NBQ0FDUmdSQUlBRWdBellDQUNBRERRRkJwSjBnSUFwQmZpQUFkM0UyQWdBTUFnc2dDVUVRUVJRZ0NTZ0NFQ0FDUmh0cUlBTTJBZ0FnQTBVTkFRc2dBeUFKTmdJWUlBSW9BaEFpQUFSQUlBTWdBRFlDRUNBQUlBTTJBaGdMSUFJb0FoUWlBRVVOQUNBRElBQTJBaFFnQUNBRE5nSVlDd0pBSUFSQkQwMEVRQ0FDSUFRZ0Jtb2lBRUVEY2pZQ0JDQUFJQUpxSWdBZ0FDZ0NCRUVCY2pZQ0JBd0JDeUFDSUFaQkEzSTJBZ1FnQWlBR2FpSURJQVJCQVhJMkFnUWdBeUFFYWlBRU5nSUFJQWNFUUNBSFFYaHhRY2lkSUdvaEFFRzBuU0FvQWdBaEFRSi9RUUVnQjBFRGRuUWlCaUFGY1VVRVFFR2duU0FnQlNBR2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFVZ0FDQUJOZ0lJSUFVZ0FUWUNEQ0FCSUFBMkFnd2dBU0FGTmdJSUMwRzBuU0FnQXpZQ0FFR29uU0FnQkRZQ0FBc2dBa0VJYWlFQUN5QUxRUkJxSkFBZ0FBczZBZ0YvQVg0akFFRVFheUlESkFBZ0FSQWNJQU1nQWlrQ0FDSUVOd01BSUFNZ0JEY0RDQ0FBSUFGQmlBSnFJQU1RbUFNZ0EwRVFhaVFBQzNVQkEzOGdBQ0FBS0FJQVFReHJLQUlBYWtFS0VKc1NJUUlqQUVFUWF5SUJKQUFnQVVFSWFpSURJQUFRM3dNYUFrQWdBeENTQkVVTkFDQUJJQUFRMGdRZ0FoQ1hEUkRSQkVVTkFDQUFJQUFvQWdCQkRHc29BZ0JxUVFFUWp3TUxJQUZCQ0dvUTRBTWdBVUVRYWlRQUlBQVFuQWdnQUF0VUFRSi9Jd0JCRUdzaUF5UUFJQUFvQWdBaEJDQUFLQUlFSVFBZ0F5QUJOZ0lJSUFNZ0JDQUFRUVJxSUFOQkNHb1F5eGsyQWd3Z0F5QUNOZ0lBSUFRZ0EwRU1haUFERU1zWklRQWdBMEVRYWlRQUlBQUxEZ0FnQUJBY0lBQkJFR29RemhBTEpRRUJmMEVRRUJVaUFpQUJOZ0lBSUFJZ0FDa0NCRGNDQkNBQ0lBQW9BZ3cyQWd3Z0Fnc0pBQ0FBRUhzZ0FXb0xTZ0VCZnlBQUlBRkpCRUFnQUNBQklBSVFmUThMSUFJRVFDQUFJQUpxSVFNZ0FTQUNhaUVCQTBBZ0EwRUJheUlESUFGQkFXc2lBUzBBQURvQUFDQUNRUUZySWdJTkFBc0xJQUFMSFFBZ0FFSHNBR29RcmdjYUlBQkJJR29RcmdjYUlBQkJFR29RTWhvTFVRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd0Nmd0pBSUFCQkNHb2dBa0VNYWhDZUFpSUJEUUFnQUVIUUFHb2dBa0VNYWhDZUFpSUJEUUJCQUF3QkN5QUJLQUlNQ3lFQUlBSkJFR29rQUNBQUN5b0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3b0FnQVFnd0VoQUNBQlFSQnFKQUFnQUFzU0FDQUFJQUVvQWdBZ0FTZ0NCQ0FDRUc0THNBRUJCWDhDUUNBQUtBSUVJZ0pGRFFBZ0FTZ0NBQ0VESUFBb0FnQUNmeUFDUVFGcklBTnhJQUpwSWdGQkFVME5BQm9nQXlBQ0lBTkxEUUFhSUFNZ0FuQUxJZ1JCQW5ScUtBSUFJZ0JGRFFBZ0FrRUJheUVGSUFGQkFVc2hCZ05BSUFBb0FnQWlBRVVOQVNBRElBQW9BZ1FpQVVjRVFBSkFJQVpGQkVBZ0FTQUZjU0VCREFFTElBRWdBa2tOQUNBQklBSndJUUVMSUFFZ0JFY05BZ3dCQ3lBQUtBSUlJQU5IRFFBTElBQVBDMEVBQ3ljQkFYOGdBQ2dDRENJQklBQW9BaEJHQkVBZ0FDQUFLQUlBS0FJa0VRQUFEd3NnQVNnQ0FBc05BQ0FBRU9VVVFSaDBRUmgxQ3lvQkFYOENRQ0FBSUFFUXVnRWlBRVVOQUNBQUx3RWVRUlZIRFFBZ0FDZ0NBQ2dDREVVaEFnc2dBZ3NsQUNBQVFiamtFallDQUNBQVFRUnFJQUZCQkdvUXVRY2FJQUFnQVNnQ0VEWUNFQ0FBQzBBQkFuOGpBRUVnYXlJQ0pBQWdBa0VRYWlBQVFRUnFFTGtISWdBZ0FpQUJRUVJxRUxrSElnRVF1eGNoQXlBQkVLUUNJQUFRcEFJZ0FrRWdhaVFBSUFNTGN3RUJmeU1BUVNCcklnVWtBQ0FGSUFJMkFoZ2dCU0FCTmdJY0lBVWdBellDRkNBRklBUTJBaEFnQlNBQUtBSUFJZ0VnQlVFY2FpQUZRUmhxRU1jRE5nSU1JQVVnQUNnQ0FDQUZRUlJxSUFWQkVHb1F4d00yQWdnZ0FTQUZRUXhxSUFWQkNHb1E1UWdoQUNBRlFTQnFKQUFnQUFzSUFDQUFFRlVnQUFzTEFDQUFJQUVnQWhDeEZBc05BQ0FBRUk4Q0lBRkJBblJxQzZnQ0FRTi9Jd0JCOEFGcklnWWtBQ0FHSUFJMkF0d0JJQVpCckljZ05nTFlBU0FHSUFaQjJBRnFJZ2cyQXVnQkFrQWdBQ0FJSUFNZ0JCQ0pCQTBBSUFaQkFEWUMxQUVDUUNBQVFZQURhaUFES0FJZ0lBSWdCa0hVQVdvUXdRaEZCRUFnQmlnQzFBRU5BUXNnQmtFUWFpSUNJQUJCY2lBREVCQWdCaUFGRUtRR0lBSWdCaEFTR2lBQ1FlMjFEQkFPR2lBQ1FaYk5DaEFPR2lBQ0lBRVFFaG9nQWtIQjdRUVFEaG9nQmlnQ3pBRWhCeUFHRUE4YUlBSVFFUXdCQ3lBR1FSQnFJZ0lnQUVGeUlBTVFFQ0FHSUFVUXBBWWdBaUFHRUJJYUlBSkI3YlVNRUE0YUlBSkJsczBLRUE0YUlBSWdBUkFTR2lBQ1FZT3hDaEFPR2lBQ0lBWW9BdFFCRUkwRUtBSzhBU0VISUFZUUR4b2dBaEFSQ3lBR1FkZ0JhaEFXSUFaQjhBRnFKQUFnQnd0UUFRRi9BbjhDZjBFQ0lBQXZBUjRpQVVFZ1JnMEFHa0VDSUFGQkowWU5BQm9nQVVIN0FFY0VRRUgvLy8vL0J5QUJRVHRIRFFJYVFRTU1BUXRCQkFzaEFTQUFLQUlBSUFGQkFuUnFLQUlBQ3d0cUFBSkFJQUF0QUF4RkJFQWdBU2dDQkVVTkFTQUFLQUlFQkVBZ0FCRHlDZ3NnQUNBQk5nSUVJQUFnQVNnQ0NEWUNDQ0FCSUFBMkFnZ2dBQ2dDQ0NBQU5nSUVEd3RCaHJnSlFkVzFBMEd1QVVIVzZ3TVFBQUFMUWVPd0NVSFZ0UU5CcndGQjF1c0RFQUFBQ3cwQUlBQWdBU0FDUVFFUXhRd0xDd0FnQUVHc2lSSVEwUXdMS0FFQmYwRUVFQVVRb1JNaUFFRzA1UTgyQWdBZ0FFSEk1UTgyQWdBZ0FFR1k1ZzlCQWhBRUFBdG1BUU4vSXdCQkVHc2lBeVFBSUFBb0FnQWlBQkFjSUFFb0FnQWhCU0FESUFFb0FnUWdBUzBBQ3lJRUlBUkJHSFJCR0hWQkFFZ2lCQnMyQWd3Z0F5QUZJQUVnQkJzMkFnZ2dBeUFES1FNSU53TUFJQUJCeUFKcUlBTWdBaENzQkNBRFFSQnFKQUFMZmdFQ2Z5TUFRY0FCYXlJRUpBQWdCQ0FDTmdLMEFTQUVJQU0zQTdnQklBSVF5Z05GQkVBZ0JFSEZyUVZCbFFSQkNDQUVRYUFCYWhBZElnSVFGeUlGUVJocVFjTG1DQkFPR2lBRkVCZ2dBaEFlQ3lBQktBSUFJQVJCdEFGcUlBUkJ1QUZxRU1ZQ0lRRWdBRUVCT2dBRUlBQWdBVFlDQUNBRVFjQUJhaVFBQzE4QkFYOGdBRUVBTmdJUVFid0JFQlVpQWtHQTh4ODJBZ0FnQWlBQktRSUFOd0lFSUFJZ0FTZ0NDRFlDRENBQ1FSQnFJQUZCREdvUXZSWWdBa0VrYWlBQlFTQnFFTFVJSUFKQjhBQnFJQUZCN0FCcUVMVUlJQUFnQWpZQ0VDQUFDellBSUFBZ0FTa0NBRGNDQUNBQUlBSW9BZ0EyQWdnZ0FFRU1haUFERUxRQ0dpQUFRU0JxSUFRUXdnRWdBRUhzQUdvZ0JSRENBUXR1QVFOL0l3QkJvQUZySWdRa0FDQUVRUmhxRU00QklRTWdCRUVJYWlJRklBSVE0UU1nQXlBRkVCSkJ0TlVKRUE0YUlBVVFEeG9nQXlBQktBSUFRWUFEYWtFUUlBSVE5d0VRandFUURob2dBMEg4bHdnUURob2dBQ0FEUVFScUVFSWdBeEM3QVJvZ0JFR2dBV29rQUF1R0FRRUJmMEdlMHdZaEFnSkFBa0FDUUFKQUFrQUNRQUpBSUFFT0d3SUJBZ1lHQUFBQUFBQUNCZ1lHQmdZR0FnRURBZ0VDQVFJQkJBVUxRY1NHQmlFQ0RBVUxRYVB6QWlFQ0RBUUxRZitWQXlFQ0RBTUxRYmUyQ1VIUGx3SkJod05Ca1NvUUFBQUxRWXEyQ1VIUGx3SkJpZ05Ca1NvUUFBQUxRY0xDQWlFQ0N5QUFJQUlRRkJvTGJnSUNmd0YrSXdCQklHc2lCU1FBUWNBQUVCVWhCaUFES0FJQUlRTWdBaWdDQUNFQ0lBRW9BZ0FoQVNBQUtBSUFJUUFnQlNBRUtRSUFJZ2MzQXdBZ0JTQUhOd01JSUFZZ0FDQUJJQUlnQXlBRlFSQnFJQVVRakJnaUFCQ3JEaUVCSUFBUTJnVWdCVUVnYWlRQUlBRUxpZ0VCQkg4akFFRVFheUlDSkFBZ0FDZ0M0QWdpQXlBQVFlUUlhaWdDQUVHTUFXeHFJUVFEUUFKQUlBTWdCRWNFUUNBQ0lBUkJqQUZySWdRMkFnQWdBU2dDQUNFRElBSkJBRFlDQ0NBQ0lBTTJBZ1FnQWlBRUtBS0lBVUVCYXpZQ0RDQUNFTjRjUlEwQklBSVEzaHdvQWdBaEJRc2dBa0VRYWlRQUlBVVBDeUFBS0FMZ0NDRUREQUFMQUFzTkFDQUFJQUZCbU9rUEVNSU1DeElBSUFCQnFCMXFJQUFnQVJDcUJSQ2xIZ3NrQVFGL0lBQW9BZ0FoQWlBQUlBRTJBZ0FnQWdSQUlBSWdBQkRHQlNnQ0FCRURBQXNMQ1FBZ0FDQUJFT1lVQzJFQkFYOGdBMEgvLy8vL0J6WUNBQUpBQWtBZ0FVVU5BQ0FBSUFFUXVnRWlBRVVOQVNBQUx3RWVRU0JIRFFBZ0F5QUFLQUlBSWdBb0FnZzJBZ0FnQWlBQUtBSU1OZ0lBUVFFaEJBc2dCQThMUWFrdlFmaXJBa0hyQ0VHMndRSVFBQUFMSHdBZ0FDZ0NFQ0lBUlFSQUVHOEFDeUFBSUFFZ0FDZ0NBQ2dDR0JFQkFBc3BBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBSUFKQkRHb1FpUUloQUNBQ1FSQnFKQUFnQUF0ZEFRTi9Jd0JCc0FGcklnSWtBQ0FBUWFRS2FpZ0NBRUVDVHdSQUlBQkJwQXBxSWdFZ0FTZ0NBRUVCYXlJQk5nSUFJQUpCQ0dvaUF5QUFLQUtnQ2lBQlFhUUJiR29pQUJDMkVDQUFFUGdISUFNUStBY0xJQUpCc0FGcUpBQUxqUUVCQW44akFFRWdheUlDSkFBZ0FrRVFhaUFBUWRnbmFpZ0NBQ0FBUWR3bmFpZ0NBRUdrQVd4cVFhUUJheUlBRU9NUUlBSkJDR29nQUJEaUVDQUJRU1JxSVFBRFFDQUNLQUlRSWdFZ0FpZ0NDRVlFUUNBQ1FTQnFKQUFGSUFFUXNBa2lBU2dDQ0NFRElBSWdBU2tDQURjREdDQUFJQUpCR0dvUTRSQWdBellDQUNBQ1FSQnFFT0FRREFFTEN3dDZBUU4vSXdCQnNBRnJJZ0lrQUNBQ1FRaHFFSm9lSVFNZ0FFR2tDbW9vQWdBaUFTQUFRYWdLYWlnQ0FFOEVRQ0FBSUFCQnFBcHFLQUlBSWdGQkFYUkJBaUFCR3hDc0hTQUFLQUtrQ2lFQkN5QUFJQUZCQVdvMkFxUUtJQUFvQXFBS0lBRkJwQUZzYWlBREVMWVFJQU1RK0FjZ0FrR3dBV29rQUFzOUFRRi9Jd0JCSUdzaUFTUUFJQUZCRUdvaUJDQUNFTzRFSUFFZ0F5QUVFTVFCSUFBZ0FVR0w1Z1lRTFNBQkVBOGFJQVFRRHhvZ0FVRWdhaVFBQ3hJQUlBQW9BZ0FnQUNBQUxRQUxFUHNFR3dzSkFDQUFJQUVRMWhRTENRQWdBQkRYQlJBZkN4Z0JBWDhqQUVFUWF5SUJJQUEyQWd3Z0FTZ0NEQ2dDQUF0U0FRSi9Jd0JCSUdzaUFpUUFJQUFnQVJEdURrVUVRQ0FDSUFFUVh5QUNRUkJxSWdOQnZic0ZJQUlRTlNBQUlBRWdBeERGQmlBREVBOGFJQUlRRHhvTElBQWdBUkRUQnlFQUlBSkJJR29rQUNBQUN3d0FJQUFnQVVHSUJ4RGFDUXRCQVFKL0l3QkJFR3NpQVNRQUlBQXRBQXdpQWtIL0FVY0VRQ0FCUVFocUlBQWdBa0VDZEVIY2lCSnFLQUlBRVFJQUN5QUFRZjhCT2dBTUlBRkJFR29rQUF2d0JnRUxmeU1BUWVBQmF5SURKQUFnQXlBQk5nTGNBUUpBQWtBZ0FVVU5BQ0FESUFFb0FnZ2lCRFlDMkFFZ0F5QUFJQUVvQWhRZ0FpQUVRUkJxSWd3UXBoNGlCVFlDMUFFZ0JVVUVRQ0FCSVFJTUFndEJBQ0VDSUFCQnJCMXFJUWNnQVNnQ0ZDRUdJd0JCNEFCcklnUWtBQ0FHSUFVUWlnbEJmMGNpRFVVRVFDQUVRUkJxSWdnZ0J5Z0NDQ0FHRUtjQklBUkJJR29pQmtIS2xRa2dDQkExSUFSQk1Hb2lDU0FHUWRLU0NSQXRJQVFnQnlnQ0NDQUZFS2NCSUFSQlFHc2lDaUFKSUFRUVRpQUVRZEFBYWlJTElBcEI4NW9KRUMwZ0J5QUxJQXdRSnlBTEVBOGFJQW9RRHhvZ0JCQVBHaUFKRUE4YUlBWVFEeG9nQ0JBUEdnc2dCRUhnQUdva0FDQU5SUTBCSUFOQkFEWUMwQUVDUUNBQVFhUTRhaUFEUWRnQmFoRDJCUTBBSUFFb0Fod2lBVVVFUUNBRFFUQnFRYmViQlVHZERrRUlJQUFvQWdRUUZ5SUFRUkJxSUFNb0F0Z0JRUkJxRUs0RElBQkJHR3BCOFBnSUVBNGFJQUFnQXlnQzJBRW9BZ1JCQkdvUW1nRkJHR3BCbU04REVBNGFJQUFRR0F3Q0N5QURRU2hxSWdJZ0FFRUlhaUFGSUFFZ0F5Z0MyQUZCRUdvUWlRMGdBaEF3RFFFZ0F5QURRU2hxRUJvb0FnQWlBallDMEFFZ0FnMEFJQU5CTUdwQnQ1c0ZRYW9PUVFnZ0FDZ0NCQkFYSWdKQkVHb2dBeWdDMkFGQkVHb1FyZ01nQWtFWWFpSUFRZjM0Q0JBT0dpQURRUmhxSWdRZ0FTQUJLQUlBS0FJSUVRQUFJZ0VnQVNnQ0FDZ0NEQkVDQUNBQUlBUVFFaG9nQUVIVjJ3c1FEaG9nQTBFSWFpSUJJQVVnQlNnQ0FDZ0NEQkVDQUNBQUlBRVFFaG9nQUVISzBRTVFEaG9nQVJBUEdpQUVFQThhSUFJUUdBd0JDeUFBS0FJQUlnRVFIQ0FCUWFnQmFpSUVFUE1GSVFjZ0F5Z0MzQUVoQlNBQVFZdzBhaWdDQUNFR0lBTW9BdFFCSVFnZ0F5Z0MwQUVoQWlNQVFTQnJJZ0VrQUNBQklBZzJBaGdnQVNBR05nSWNJQUVnQWpZQ0ZDQUJJQVVvQWdnMkFoQWdBU0FDUVFCSE5nSU1JQUZCQURvQUN5QUJJQVVvQWhBMkFnUWdCeUFCS0FJUUlBRW9BaGdnQVNnQ0RDQUJLQUljSUFFb0FoUWdBUzBBQ3lBQktBSUVFSndGSWdKQjBKVVNOZ0lFSUFKQmdKWVNOZ0lBSUFJZ0JUWUNMQ0FDUWZDVkVqWUNBQ0FCUVNCcUpBQWdCQ0FDRUNnZ0JDQUVLQUlZUVFGcU5nSVlJQUlnQXlnQzNBRXBBeUEzQXlBZ0FDZ0NBQ0lBRUJ3Z0FFSGtBV29nQXlnQzJBRWdBaENvSGd3QkMwRUFJUUlMSUFOQjRBRnFKQUFnQWd0eUFRTi9JQUJDZ0lDQWdCQTNBZ2dnQUNBQU5nSUVJQUFnQVNnQ0JDSUNFUEFRSUFFb0FnQWlBU0FDUVFKMGFpRUVJQUFvQWdnaEF3Ti9JQUVnQkVZRWZ5QUFCU0FBSUFOQkFXb2lBallDQ0NBQUtBSUVJQU5CQW5ScUlBRW9BZ0EyQWdBZ0FVRUVhaUVCSUFJaEF3d0JDd3NMaWdZQ0NIOEJmaU1BUVpBQmF5SURKQUFnQXlBQk5nS01BU0FEUVFBMkFvZ0JJQU5CQURZQ2hBRWdBMEtBZ0lDQXdBQTNBbndnQXlBRFFlZ0FhallDZUNBQ0tBSUFJZ0VnQWlnQ0JFRU1iR29oQmtFQUlRSURmeUFCSUFaR0JIOGdBeUFDTmdKQUlBTWdBaUFFYWtFQmF5SUJJQUVnQkhCck5nSmtJQU5CRUdvaUJpQUFJQU5CakFGcUVLb01JQUFRSENNQVFkQUJheUlCSkFBZ0FVRVlhaUFHRUZZaEFpQUJRUUE2QUJRZ0FTQURRZWdBYWlJRVFSQnFOZ0lRSUFGQk9Hb2dBaUFCUVJCcUlBTW9Bb1FCSUFNb0FtUWdBMEZBYXlJSktBSUFFSTBKSWdjb0FnZ2hDQ0FCSUFjMkFnd2dBU0FJTmdJSUFrQWdBRUVRYWlJRlFSeHFJZ29nQVVFSWFoQzlBU0lBQkVBZ0FDZ0NEQ0VBREFFTEl3QkJNR3NpQWlRQUlBVVFuaEVoQUNBQ1FSQnFJQVlRVmlFR0lBSWdCRUVRYWpZQ0NDQUNJQVFvQWhBZ0JFYzZBQXdnQlNBQUlBWWdBa0VJYWlBREtBS0VBU0FES0FKa0lBa29BZ0FRalFraUFCQW9JQVVnQlNnQ0dFRUJhallDR0NBQ1FUQnFKQUFnQVNBQU5nSU1JQUVnQ0RZQ0NDQUtJQUZCQ0dvUXZBRUxJQWNRelFZYUlBRkIwQUZxSkFBZ0JCQmVJQU5Ca0FGcUpBQWdBQVVnQXlBQktBSUlJZ0lnQWlnQ0FDZ0NGQkVBQUNJQ1FRRWdBaHMyQW1RZ0F5QUJLQUlJSWdJZ0FpZ0NBQ2dDRUJFQUFEWUNZQ0FESUFRZ0F5Z0NaQ0lDSUFJZ0JFa2JJZ1EyQW9RQklBTWdBaUFES0FLSUFXcEJBV3NpQlNBRklBSndhellDaUFFZ0F5QUJLUUlBSWdzM0F3Z2dBeUFMTndNNElBTkJRR3NpQnlBQUlBTkJDR29RNFFFZ0F5QURLQUo4TmdJMElBTkJBRG9BTENBRFFRQTZBQ2dnQTBFQU9nQWdJQU5CQURvQUhDQURRUUE2QUJnZ0EwRUFPZ0FVSUFOQkFEb0FFQ0FBRUJ3akFFRWdheUlGSkFBZ0FFSHdBR29pQWlBQ0VKOFJJQVVnQnhCV0lBRW9BZ2dnQXlnQ05DQURLQUtJQVNBREtBSmtJQU1vQW1BZ0EwRVFhaERhRHlJSEVDZ2dBaUFDS0FJWVFRRnFOZ0lZSUFWQklHb2tBQ0FESUFjMkFsd2dBMEhvQUdvZ0EwSGNBR29RY1NBRElBTW9Bb2dCSUFNb0FtQnFJZ0kyQW9nQklBRkJER29oQVF3QkN3c0xDUUFnQUNBQk5nSUFDd2tBSUFBZ0FSQ2VBUXNOQUNBQUtBSUFFT1FVR2lBQUN4MEFJQUJCOEFCcUVLNEhHaUFBUVNScUVLNEhHaUFBUVJScUVESWFDd3NBSUFBZ0FVRjhFTk1GQzdBQkFRVi9Ba0FnQUNnQ0JDSUNSUTBBSUFFb0FnQWhBeUFBS0FJQUFuOGdBa0VCYXlBRGNTQUNhU0lCUVFGTkRRQWFJQU1nQWlBRFN3MEFHaUFESUFKd0N5SUVRUUowYWlnQ0FDSUFSUTBBSUFKQkFXc2hCU0FCUVFGTElRWURRQ0FBS0FJQUlnQkZEUUVnQUNnQ0JDSUJJQU5IQkVBQ1FDQUdSUVJBSUFFZ0JYRWhBUXdCQ3lBQklBSkpEUUFnQVNBQ2NDRUJDeUFCSUFSSERRSU1BUXNnQUNnQ0NDQURSdzBBQ3lBQUR3dEJBQXVoQVFFRWZ5QUFFQndqQUVFd2F5SURKQUFnQTBFSWFpQUJLQUlBSUFJb0FnQkJBQkRsQnlJRUtBSUlJUVVnQXlBRU5nSUVJQU1nQlRZQ0FBSkFJQUJCRUdvaUJFRWNhaUlHSUFNUXZRRWlBQVJBSUFBb0Fnd2hBQXdCQ3lBRUlBUVFwZ1FnQVNnQ0FDQUNLQUlBUVFBUTVRY2lBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQURJQUEyQWdRZ0F5QUZOZ0lBSUFZZ0F4QzhBUXNnQTBFd2FpUUFJQUFMQkFCQkFBc05BQ0FBS0FJQUVOUVVHaUFBQzBvQkFuOENRQ0FBTFFBQUlnSkZJQUlnQVMwQUFDSURSM0lOQUFOQUlBRXRBQUVoQXlBQUxRQUJJZ0pGRFFFZ0FVRUJhaUVCSUFCQkFXb2hBQ0FDSUFOR0RRQUxDeUFDSUFOckN5RUJBWDhnQUVFcGF5SUFRUXROQkg4Z0FFRUNkRUdVdUExcUtBSUFCVUVBQ3dzV0FDQUFLQUlBQkVBZ0FCRDJEaUFBS0FJQUVCOExDejRBSUFCQkFEWUNDQ0FBUWdBM0FnQWdBQ0FCS0FJQU5nSUFJQUFnQVNnQ0JEWUNCQ0FBSUFFb0FnZzJBZ2dnQVVFQU5nSUlJQUZDQURjQ0FDQUFDN0lNQVFWL0l3QkI0QUZySWdVa0FDQUZJQU0yQWhRZ0FTZ0NCQ0VHQWtBZ0EwVU5BQ0FES0FJTUlnZ2dCaWdDQkNBR0tBSUFJZ1pyUVFKMVR3MEFJQVlnQ0VFQ2RHb29BZ0FpQmtVTkFDQUdRUUFnQmlnQ0JFR29sQkpHR3lFSEN5QUZJQUUyQWdnZ0JTQUZRUlJxTmdJTUFrQWdBMFVFUUNBQUlBVkJDR29RNUJ3TUFRc0NRQ0FES0FJRUlnWkJnSUFTUmdSQUlBTW9BaVJCZm5GQkJFWUVRQ0FGUVRCcUlBRWdBaUFES0FJb1FRQVFwZ0lnQVNnQzRLY0NJQU1RbkFFaUJFRUJPZ0FFSUFRZ0JTZ0NOQkJxSUFWQjBBRnFJQUVnQkNBREtBSXNRUUFRcGdJZ0JTQUNOZ0lZSUFVZ0JTZ0MxQUUyQWh3TUFnc2dCVUV3YWlBQklBSWdBeWdDS0VFQUVLWUNJQVZCMEFGcUlBRWdCU2dDTUNBREtBSXNRUUFRcGdJZ0FTZ0M0S2NDSUFNUW5BRWlBU0FGS0FJMEVHb2dBU0FGS0FMVUFSQnFJQVVnQVRZQ0hDQUZJQVVvQXRBQk5nSVlEQUVMSUFaQndQNFJSZ1JBSUFWQkdHb2dBU0FDSUFNb0FpaEJBQkNtQWd3QkN5QUdRYmp1RDBZRVFDQUZRUmhxSUFFZ0FpQURFUFVjREFFTElBZEJBRWNnQkhJaEJ5QUdRZmp0RDBZRVFDQUZRVEJxSWdRZ0F5Z0NKRUVrYWhCVElBRW9BdUNuQWlBREVKd0JJUVlnQkJBUEdpQUJLQUlFSUFNUWdnTWlBMFVFUUNBRlFUQnFRYVdLQlVHcENVRUlJQVZCMEFGcUVCMGlCQkFYSWdoQkdHcEJ5WjBJRUE0YUlBZ1FHQ0FFRUI0TEl3QkJFR3NpQkNBRE5nSU1JQVVnQTBFc2FpSUlJQWdnQkVFTWFpQURLQUlFSWdOQjBKVVNSaHNnQTBHb2xCSkdHeWdDQUNJRFFRQWdBeWdDQkVIWW5CSkdHeUlJS0FJc0lnUTJBaXdnQlNBQk5nSWdJQVVnQlVFc2FqWUNKQ0FFUlFSQUlBVkJHR29nQlVFZ2FoRGpIQXdDQ3dKQUFrQWdCQ2dDQkNJRFFjQ2NFa1lFUUFKQUlBUW9BbGdpQXlnQ0JFR0FreEpISUFORmNnMEFJQU1vQWtBUTNBWkZEUUFnQkNnQ0RDSUhLQUlFUVlDWkVrY2dCMFZ5UlFSQUlBY29Ba1FpQXlBSEtBSklRUUowYWlFSFFRRWhCQU5BSUFNZ0IwWUVRQ0FDSVFNZ0JBMEdJQUVvQXVDbkFpZ0NyQWdoQXd3R0JTQURLQUlBS0FKY0lRZ2dCVUVBT2dBMElBVWdDRUU4YWpZQ01BSkFJQVZCTUdvUWx4QWlDQVJBSUFFb0FnQWlDUkFjSUFsQjVBRnFJQWdRbGhBb0FoQWlDRUVOUmlBSVFRaEdSdzBCQzBFQUlRUUxJQU5CQkdvaEF3d0JDd0FMQUFzZ0JDZ0NDQ0VESUFWQkFEb0FOQ0FGSUFOQk9HbzJBakFnQlVFd2FoQ1hFQ0lEQkVBZ0FTZ0NBQ0lFRUJ3Z0JFSGtBV29nQXhDV0VDZ0NFQ0lEUVExR0lBTkJDRVp6RFFNTElBRW9BdUNuQWlnQ3JBZ2hBd3dEQ3lBR0lBSVFhaUFCS0FMZ3B3SWhBeUFGSUFRMkFqQWdBMEc0Q0dvZ0JVRXdhaENEQWlFRElBY2dCQ2dDRENnQ0JFSFlyQkpIY2cwQ0lBRW9BdUNuQWlnQytBY2dCQ2dDVUVIOEFHeHFLQUp3SVFNTUFnc0NRQUpBQWtBZ0EwR1FuQkpHQkVBZ0JnSi9JQUlnQkNnQ0NDZ0NCRUhZK0JGSERRQWFJQUlnQjBFQmN5QUVLQUlZUVFGR2NnMEFHaUFCS0FMZ3B3SW9BcXdJQ3hCcURBRUxJQU5CcUp3U1J3MEJJQVlnQWhCcUlBRW9BdUNuQWlFRElBVWdCRFlDTUNBRFFiZ0lhaUFGUVRCcUVJTUNJUWtDUUNBRUtBSU1LQUlFSWdOQjJLd1NSZ1JBSUFkRkRRRWdCU0FJS0FJUUlnTTJBakFnQmdKL0lBTW9BZ1JCa0p3U1JnUkFJQU1vQWhoQkFVWU5BeUFCS0FMZ3B3SW9BcXdJREFFTElBRW9BdUNuQWtHNENHb2dCVUV3YWhDREFnc1FhZ3dCQ3lBRFFiaXRFa2NOQUNBSFJRMEJDeUFHSUFrUWFnc2dCU0FHTmdMVUFTQUZJQUkyQXRBQkRBRUxJQVZCMEFGcUlBVkJJR29RNHh3TElBVWdCU2tEMEFFM0F4Z01Bd3NnQWlFREN5QUdJQU1RYWlBRklBWTJBdFFCSUFVZ0FqWUMwQUVnQlNBRktRUFFBVGNER0F3QkN5QUdRY0QvRVVZRVFDQUZRVEJxSUFFZ0FpQURLQUlrSUFjUXBnSWdCVUhRQVdvZ0FTQUZLQUl3SUFNb0FpaEJBQkNtQWlBQktBTGdwd0pCQUJDY0FTSUJJQVVvQWpRUWFpQUJJQVVvQXRRQkVHb2dCU0FCTmdJY0lBVWdCU2dDMEFFMkFoZ01BUXNnQmhDckNRUkFJQVVnQWpZQ0hDQUZJQUkyQWhnTUFRc2dCa0hBZ0JKR0JFQWdCVUVZYWlBQklBSWdBeWdDSkNBSEVLWUNEQUVMSUFaQmdJRVNSZ1JBSUFWQkdHb2dBU0FDSUFNb0FpZ2dCeENtQWd3QkN5QUZRUmhxSUFWQkNHb1E1QndMSUFBZ0JTa0RHRGNDQUFzZ0JVSGdBV29rQUF0S0FRRi9JQUJCQURZQ0RDQUFJQU0yQWhBZ0FRUkFJQUVRbHdNaEJBc2dBQ0FFTmdJQUlBQWdCQ0FDUVFKMGFpSUNOZ0lJSUFBZ0JDQUJRUUowYWpZQ0RDQUFJQUkyQWdRZ0FBc3BBUUYvSUFBb0FnQkJyQjFxSUFBb0FnUW9BZ0JCRUdvUWloQUVmeUFBS0FJSUVQVUZCVUVBQ3dzTUFDQUFJQUVRbmdKQkFFY0xDQUFnQUMwQUlCb0xOZ0VCZnlBQUlBQW9BaFFpQWtFQmFqWUNGQ0FBS0FJSUlBSXRBQUJCQW5ScUtBTHdBaUlDSUFBZ0FTQUNLQUlBS0FJSUVRUUFDN2tDQVFOL0l3QkJFR3NpQXlRQUFrQWdBQ0FCUmcwQUlBRW9BaEFoQWlBQUlBQW9BaEFpQkVZRVFDQUJJQUpHQkVBZ0FDQURJQUFvQWdBb0Fnd1JBZ0FnQUNnQ0VDSUNJQUlvQWdBb0FoQVJBd0FnQUVFQU5nSVFJQUVvQWhBaUFpQUFJQUlvQWdBb0Fnd1JBZ0FnQVNnQ0VDSUNJQUlvQWdBb0FoQVJBd0FnQVVFQU5nSVFJQUFnQURZQ0VDQURJQUVnQXlnQ0FDZ0NEQkVDQUNBRElBTW9BZ0FvQWhBUkF3QWdBU0FCTmdJUURBSUxJQUFnQVNBQUtBSUFLQUlNRVFJQUlBQW9BaEFpQWlBQ0tBSUFLQUlRRVFNQUlBQWdBU2dDRURZQ0VDQUJJQUUyQWhBTUFRc2dBU0FDUmdSQUlBRWdBQ0FCS0FJQUtBSU1FUUlBSUFFb0FoQWlBaUFDS0FJQUtBSVFFUU1BSUFFZ0FDZ0NFRFlDRUNBQUlBQTJBaEFNQVFzZ0FDQUNOZ0lRSUFFZ0JEWUNFQXNnQTBFUWFpUUFDeE1BSUFBUUhDQUFRY1FCYWlBQklBSVFzeEVMRXdBZ0FCQWNJQUJCeEFGcUlBRWdBaEM1RVFzVEFDQUFFQndnQUVIRUFXb2dBU0FDRUtvUkMzVUJBWDRnQUNBQklBUitJQUlnQTM1OElBTkNJSWdpQWlBQlFpQ0lJZ1IrZkNBRFF2Ly8vLzhQZ3lJRElBRkMvLy8vL3crRElnRitJZ1ZDSUlnZ0F5QUVmbndpQTBJZ2lId2dBU0FDZmlBRFF2Ly8vLzhQZzN3aUFVSWdpSHczQXdnZ0FDQUZRdi8vLy84UGd5QUJRaUNHaERjREFBc01BQ0FBSUFGQjdpa1E5UVlMREFBZ0FFRUFJQUFRdEFNYkM1NEJBUUovSXdCQm9BRnJJZ1FrQUNBRVFSaHFFTTRCSVFNQ1FBSkFJQUVvQWhCQmYwY0VRQ0FDTHdFZVFSNUhEUUlnQTBHam5Ra1FEaUFCS0FJUUVMd0NHaUFEUWN6cEJoQU9JQUlvQWlnUUlVR0w1Z1lRRGhvTUFRc2dCRUVJYWlJQklBSVE0UU1nQXlBQkVCSWFJQUVRRHhvTElBQWdBMEVFYWhCQ0lBTVF1d0VhSUFSQm9BRnFKQUFQQzBIaDdnQkJrSjBDUWNNRlFiK0dCUkFBQUFzbUFDQUFJQUVvQWdBMkFnQWdBRUVFYWlBQlFRUnFFTEFCR2lBQUlBRW9BaEEyQWhBZ0FBdHlBUU4vSUFCQ2dJQ0FnQ0EzQWd3Z0FDQUFOZ0lJSUFBZ0FTZ0NCQ0lDRUxjSElBRW9BZ0FpQVNBQ1FRSjBhaUVFSUFBb0Fnd2hBd04vSUFFZ0JFWUVmeUFBQlNBQUlBTkJBV29pQWpZQ0RDQUFLQUlJSUFOQkFuUnFJQUVvQWdBMkFnQWdBVUVFYWlFQklBSWhBd3dCQ3dzTEp3QWdBQ2dDQkNBQktBSUVRUUZCQ2tIWTB3aEI4S3NGUVNjUVN5QUFLQUlBSUFFb0FnQkdDeHNCQVg4Z0FDZ0NBQ0VCSUFCQkFEWUNBQ0FCQkVBZ0FSQWZDd3RIQVFKL0lBQVFWU0FBSUFFb0FnQWdBU0FCTFFBTElnTkJHSFJCR0hWQkFFZ2lCQnNnQVNnQ0JDQURJQVFiSWdFZ0FTQUNFTndCSWdOcUVOb01JQUFnQWlBREVQNEdHZ3UvQkFFR2Z5TUFRWkFCYXlJREpBQWdBQ2dDQkNFR0lBQW9BZ0FpQnlnQ0pDRUZJQU5DZ0lDQWdJQUJOd0tFQVNBRElBTkI0QUJxSWdRMkFvQUJJQVFnQlJBNUlBTkJnQUZxSVFoQkFDRUVBMEFnQkNBRlJrVUVRQ0FESUFjb0FpQWdCRUVDZEdvb0FnQW9BaFEyQWhBZ0JFRUJhaUVFSUFOQjRBQnFJQU5CRUdvUUpBd0JDd3NnQmlnQ0VDRUVRUUFoQlNBRFFRQTZBRXdnQXlBSU5nSklJQU5CMEFCcUlBUWdBU0FDSUFOQnlBQnFJQUFvQWdnb0FnQWdBQ2dDRENnQ0FFRVFhaUFFS0FJQUtBSVVFUTRBQWtBZ0F5Z0NVQ0lCUlEwQUlBWWdBQ2dDQUNBQkVQWUxSUTBBSUFOQkFEWUNSQ0FESUFNb0FsQW9BamdnQUNnQ0NDZ0NBQkRZQmlJQk5nSkFBa0FnQVVFQlJ3MEFJQU1nQUNnQ0RDZ0NBRFlDRUNBR1FhUTRhaUFEUVJCcUVQWUZCRUFnQTBFQU5nSkFEQUVMSUFOQkVHb2lBU0FHSUFBb0FnQWdBeWdDVUJEY0hRSi9RUUVnQVJEYkhRMEFHaUFHSUFNb0FsZ2lBa0VCZFdwQkNHb2hBU0FES0FKVUlRUWdBa0VCY1FSQUlBRW9BZ0FnQkdvb0FnQWhCQXNnQXlnQ1VDZ0NDQ0VDSUFOQkVHb1EyaDBoQlNBRFFRQTZBQVFnQXlBRlFTQnFOZ0lBSUFOQkNHb2lCU0FCSUFJZ0F5QUFLQUlNS0FJQVFSQnFJQVFSQ0FCQkFTQUZFQ3RGRFFBYUlBTWdBMEVJYWhBYUtBSUFOZ0pFUVFBTElRUWdBMEVRYWhEWkhVRUFJUVVnQkEwQkN5QUdLQUlBSUFBb0Fnd2dBMEhRQUdvZ0EwRkFheUFBS0FJQUlBWkJqRFJxSUFOQnhBQnFJQUFvQWhBUXdCQWhCUXNnQTBIZ0FHb1FJeUFEUVpBQmFpUUFJQVVMRUFBZ0FDMEFDRVVFUUJCdkFBc2dBQXRIQVFGL0lBQkJ1SW9PS0FJQUlnRTJBZ0FnQUNBQlFReHJLQUlBYWtIWWlnNG9BZ0EyQWdBZ0FFSGNpZzRvQWdBMkFnZ2dBRUVNYWhEUkNSb2dBRUZBYXhEK0JCb2dBQXU3QVFFR2Z5TUFRU0JySWdJa0FDQUNRUmhxSWdNZ0FCRGZBeG9DUUNBREVKSUVSUTBBSUFBZ0FDZ0NBRUVNYXlnQ0FHb1F1QUVhSUFKQkVHb2lBeUFBSUFBb0FnQkJER3NvQWdCcUVINGdBeEQ5QkNFRUlBTVFaQ0FDUVFocUlBQVEwZ1FoQlNBQUlBQW9BZ0JCREdzb0FnQnFJZ1lRbkFNaEJ5QUNJQVFnQlNnQ0FDQUdJQWNnQVJEY0ZEWUNFQ0FERU5FRVJRMEFJQUFnQUNnQ0FFRU1heWdDQUdwQkJSQ1BBd3NnQWtFWWFoRGdBeUFDUVNCcUpBQWdBQXNrQVFGL0lBSkJBRTRFZnlBQUlBSkIvd0Z4UVFKMGFpZ0NBQ0FCY1VFQVJ3VkJBQXNMR0FBZ0FDMEFBRUVnY1VVRVFDQUJJQUlnQUJDMERSb0xDd3NBSUFBZ0FVRVVFUFVHQzI0QkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBQkI2QUpxSUFOQkRHb1F3QU1pQVNBQVFld0Nha1lFZjBFQUJTQUJLQUlVSVFBZ0FVRVlhaUVCQTBBQ1FDQUFJQUZHRFFBZ0FDZ0NFQ0FDUmcwQUlBQVFUQ0VBREFFTEN5QUFJQUZIQ3lFQUlBTkJFR29rQUNBQUMvVUpBZzEvQW4wakFFRVFheUlLSkFBakFFRVFheUlISkFBZ0FpZ0NBQ0lEUlFSQVFmR1ZCRUhOclFOQkxrSGM4UWdRQUFBTElBTVF0eGNoQ0NBS0FuOENRQ0FCS0FJRUlnTkZEUUFnQVNnQ0FBSi9JQU5CQVdzZ0NIRWdBMmtpQmtFQlRRMEFHaUFJSUFNZ0NFc05BQm9nQ0NBRGNBc2lCVUVDZEdvb0FnQWlCRVVOQUNBRFFRRnJJUWtnQmtFQlN5RUxBMEFnQkNnQ0FDSUVSUTBCSUFnZ0JDZ0NCQ0lHUndSQUFrQWdDMFVFUUNBR0lBbHhJUVlNQVFzZ0F5QUdTdzBBSUFZZ0EzQWhCZ3NnQlNBR1J3MENDeUFFUVFocUlBSVF2UmRGRFFBTFFRQU1BUXRCREJBVklRUWdCeUFCUVFocU5nSUVJQWNnQkRZQ0FDQUNLQUlBSVFZZ0FrRUFOZ0lBSUFRZ0JqWUNDQ0FIUVFFNkFBZ2dCRUVBTmdJQUlBUWdDRFlDQkFKQVFRQWdBeUFCS0FJTVFRRnFzeUlRSUFFcUFoQWlFU0FEczVSZUd3MEFBa0FDZjBFQ0lBTWdBMEVCYTNGQkFFY2dBMEVEU1hJZ0EwRUJkSElpQWdKL0lCQWdFWldOSWhCREFBQ0FUMTBnRUVNQUFBQUFZSEVFUUNBUXFRd0JDMEVBQ3lJRklBSWdCVXNiSWdKQkFVWU5BQm9nQWlBQ0lBSkJBV3R4UlEwQUdpQUNFSDhMSWdVZ0FTZ0NCQ0lDVFFSQUlBSWdCVTBOQVNBQ1FRTkpJUVFDZnlBQktBSU1zeUFCS2dJUWxZMGlFRU1BQUlCUFhTQVFRd0FBQUFCZ2NRUkFJQkNwREFFTFFRQUxJUU1nQWlBRklBUWdBbWxCQVV0eUJIOGdBeEIvQlNBRFFRRkJJQ0FEUVFGcloydDBJQU5CQWtrYkN5SURJQU1nQlVrYklnVk5EUUVMUVFBaEFnSkFJQVVpQkFSQUlBRWdCQkNYQXhCc0lBRWdCRFlDQkFOQUlBSWdCRVlFUUNBQktBSUlJZ05GRFFNZ0FVRUlhaUVDSUFNb0FnUWhCZ0pBSUFScElnVkJBVTBFUUNBR0lBUkJBV3R4SVFZTUFRc2dCQ0FHU3cwQUlBWWdCSEFoQmdzZ0FTZ0NBQ0FHUVFKMGFpQUNOZ0lBSUFSQkFXc2hEQ0FGUVFGTElRMERRQ0FES0FJQUlnVkZEUVFnQlNnQ0JDRUNBa0FnRFVVRVFDQUNJQXh4SVFJTUFRc2dBaUFFU1EwQUlBSWdCSEFoQWdzZ0FpQUdSd1JBSUFKQkFuUWlDeUFCS0FJQWFpSUpLQUlBQkVBZ0JVRUlhaUVPSUFVaEFnTkFBa0FnQWlJSktBSUFJZ0pGQkVCQkFDRUNEQUVMSUE0Z0FrRUlhaEM5RnlFUElBa29BZ0FoQWlBUERRRUxDeUFESUFJMkFnQWdDU0FCS0FJQUlBdHFLQUlBS0FJQU5nSUFJQUVvQWdBZ0Myb29BZ0FnQlRZQ0FBd0NDeUFKSUFNMkFnQWdBaUVHQ3lBRklRTU1BQXNBQlNBQktBSUFJQUpCQW5ScVFRQTJBZ0FnQWtFQmFpRUNEQUVMQUFzQUN5QUJRUUFRYkNBQlFRQTJBZ1FMQ3lBQktBSUVJZ01nQTBFQmEzRkZCRUFnQTBFQmF5QUljU0VGREFFTElBTWdDRXNFUUNBSUlRVU1BUXNnQ0NBRGNDRUZDd0pBSUFWQkFuUWlCU0FCS0FJQWFpZ0NBQ0lDUlFSQUlBY29BZ0FnQVNnQ0NEWUNBQ0FCSUFjb0FnQTJBZ2dnQVNnQ0FDQUZhaUFCUVFocU5nSUFJQWNvQWdBaUFpZ0NBQ0lGUlEwQklBVW9BZ1FoQkFKQUlBTWdBMEVCYXlJRmNVVUVRQ0FFSUFWeElRUU1BUXNnQXlBRVN3MEFJQVFnQTNBaEJBc2dBU2dDQUNBRVFRSjBhaUFDTmdJQURBRUxJQWNvQWdBZ0FpZ0NBRFlDQUNBQ0lBY29BZ0EyQWdBTElBY29BZ0FoQkNBSFFRQTJBZ0FnQVNBQktBSU1RUUZxTmdJTUlBY29BZ0FoQVNBSFFRQTJBZ0FnQVFSQUlBY3RBQWdFUUNBQlFRaHFFSVVER2dzZ0FRUkFJQUVRSHdzTFFRRUxPZ0FNSUFvZ0JEWUNDQ0FIUVJCcUpBQWdBQ0FLS0FJSU5nSUFJQUFnQ2kwQUREb0FCQ0FLUVJCcUpBQUxvZ0VCQlg4akFFRVFheUlFSkFBZ0JDQUNOZ0lNUVFBaEFnSkFJQUZGRFFBZ0FDZ0NBRUdzSFdvaEJTQUFLQUlFS0FJQVFSQnFJUWNqQUVFUWF5SUdKQUFnQVJDeEd5SUlSUVJBSUFVZ0JrSGFoZ2tRRkNJRklBY1FKeUFGRUE4YUN5QUdRUkJxSkFBZ0NFVU5BQ0FFSUFBb0FnZ2dBU0FERU5NQklnRTJBZ2dnQVVVTkFDQUFLQUlNSUFSQkNHb2dCRUVNYWhEQUNTRUNDeUFFUVJCcUpBQWdBZ3NMQUNBQVFmUzhJQkRlQXdzVEFDQUFFQndnQUVIRUFXb2dBU0FDRUxZUkN4RUFJQUJCTEVIVi93TkJmRUVERU1vQkN4TUFJQUFRSENBQVFjUUJhaUFCSUFJUXZSRUxFd0FnQUJBY0lBQkJ4QUZxSUFFZ0FoQ3JFUXVjQVFFRGZ3SkFJQUFRTzBVZ0FpQUJhMEVGU0hJTkFDQUJJQUlRZ0FvZ0FrRUVheUVFSUFBUWV5SUNJQUFRTzJvaEJnSkFBMEFDUUNBQ0xBQUFJZ0JCL3dCcklRVWdBU0FFVHcwQUlBVkIvd0Z4UVlJQlR3UkFJQUVvQWdBZ0FFY05Bd3NnQVVFRWFpRUJJQUlnQmlBQ2EwRUJTbW9oQWd3QkN3c2dCVUgvQVhGQmdnRkpEUUVnQkNnQ0FFRUJheUFBU1EwQkN5QURRUVEyQWdBTEN4TUFJQUFnQVNBQ0lBQW9BZ0FvQWd3UkJBQUxEQUFnQUNBQkVPWVVRUUZ6QzI4QkFYOGpBRUdBQW1zaUJTUUFJQVJCZ01BRWNTQUNJQU5NY2tVRVFDQUZJQUZCL3dGeElBSWdBMnNpQTBHQUFpQURRWUFDU1NJQkd4QjVHaUFCUlFSQUEwQWdBQ0FGUVlBQ0VMNENJQU5CZ0FKcklnTkIvd0ZMRFFBTEN5QUFJQVVnQXhDK0Fnc2dCVUdBQW1va0FBdFFBUUYrQWtBZ0EwSEFBSEVFUUNBQklBTkJRR3F0aGlFQ1FnQWhBUXdCQ3lBRFJRMEFJQUlnQTYwaUJJWWdBVUhBQUNBRGE2MkloQ0VDSUFFZ0JJWWhBUXNnQUNBQk53TUFJQUFnQWpjRENBc1hBQ0FBSUFFUXVnRWlBRVVFUUVFQUR3c2dBQ2dDSkF0MUFRTi9Jd0JCRUdzaUJDUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FFSUFNMkFnZ2pBRUVnYXlJRkpBQWdBRUdNQVdvaUF4RDhCeUFBS0FJSUlBUW9BZ2dnQVNBRklBSVFWaENkRHlFQUlBTWdBQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUZRU0JxSkFBZ0JFRVFhaVFBSUFBTFJnRUNmeU1BUVJCcklnUWtBQ0FFUVFBMkFnd2dBQ2dDQUNBQklBSWdCRUVNYWhDOUF5SUZSUVJBSUFBZ0FTQUNJQU1nQkNnQ0RCQ3lGaUVGQ3lBRVFSQnFKQUFnQlFzSkFDQUFRUlFRa3hNTEp3RUJmeU1BUVJCcklnSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDQUNLQUlJTFFBQU9nQUFDenNCQVg4akFFRVFheUlDSkFBZ0FpQUFJQUJCMkFKcUlBRVFyUThpQVRZQ0RDQUFJQUZCRUdvZ0FrRU1haEN6QXlFQUlBSkJFR29rQUNBQUN4b0FJQUJCQUNBQUJIOGdBQ2dDQkVHb21CSVFTQVZCQUFzYkN3NEFJQUFRSENBQVFSQnFFTXdRQ3d3QUlBRWdBaWdDQURZQ0FBdGJBUU4vSUFFZ0FDZ0NHRXNFUUNBQUtBSVFJUUlnQUNBQkVNRUpJQUFvQWhRaEEwRUFJUUVEUUNBQklBTkdCRUFnQUNBQ0VEWUZJQUZCQW5RaUJDQUFLQUlRYWlBQ0lBUnFLQUlBTmdJQUlBRkJBV29oQVF3QkN3c0xDeFlBSUFFZ0FqWUNBQ0FCUVFScUlBQkJCR29RVkJvTEhnRUJmMEVRRUJVaUFpQUJOZ0lBSUFKQkJHb2dBRUVFYWhCVUdpQUNDOG9FQVFoL1FRUWdBU0FCUVFSTkd5RUVJQUJCQVNBQUd5RUdBMEFqQUVFUWF5SUhKQUFnQjBFQU5nSU1Ba0FDZnlBRVFRaEdCRUFnQmhEZ0FRd0JDeUFFUVFOeElBUkJCRWx5RFFFZ0JFRUNkaUlBSUFCQkFXdHhRVUFnQkdzZ0JrbHlEUUVDZjBFUUlRTUNRRUVRUVJBZ0JDQUVRUkJOR3lJQUlBQkJFRTBiSWdFZ0FVRUJhM0ZGQkVBZ0FTRUFEQUVMQTBBZ0F5SUFRUUYwSVFNZ0FDQUJTUTBBQ3dzZ0JrRkFJQUJyVHdSQVFaaXBJRUV3TmdJQVFRQU1BUXRCQUVFUUlBWkJDMnBCZUhFZ0JrRUxTUnNpQXlBQWFrRU1haERnQVNJQ1JRMEFHaUFDUVFocklRRUNRQ0FBUVFGcklBSnhSUVJBSUFFaEFBd0JDeUFDUVFScklnZ29BZ0FpQ1VGNGNTQUFJQUpxUVFGclFRQWdBR3R4UVFocklnSWdBRUVBSUFJZ0FXdEJEMDBiYWlJQUlBRnJJZ0pySVFVZ0NVRURjVVVFUUNBQktBSUFJUUVnQUNBRk5nSUVJQUFnQVNBQ2FqWUNBQXdCQ3lBQUlBVWdBQ2dDQkVFQmNYSkJBbkkyQWdRZ0FDQUZhaUlGSUFVb0FnUkJBWEkyQWdRZ0NDQUNJQWdvQWdCQkFYRnlRUUp5TmdJQUlBRWdBbW9pQlNBRktBSUVRUUZ5TmdJRUlBRWdBaENoQ2dzQ1FDQUFLQUlFSWdGQkEzRkZEUUFnQVVGNGNTSUNJQU5CRUdwTkRRQWdBQ0FESUFGQkFYRnlRUUp5TmdJRUlBQWdBMm9pQVNBQ0lBTnJJZ05CQTNJMkFnUWdBQ0FDYWlJQ0lBSW9BZ1JCQVhJMkFnUWdBU0FERUtFS0N5QUFRUWhxQ3dzaUFFVU5BQ0FISUFBMkFnd0xJQWNvQWd3aEFDQUhRUkJxSkFBQ1FDQUFCSDhnQUFWQjRNb2dLQUlBSWdBTkFVRUFDdzhMSUFBUkVRQU1BQXNBQ3d3QUlBQWdBUkRXRkVFQmN3c09BQ0FBUVFScUVBOGFJQUFRSHdzS0FDQUFRUVJxRUE4YUM1SUNBZ0YrQ0g4Q2Z5QUFLQUlBSVFvZ0FTRUxRWG9nQUNnQ0JDSUdSUTBBR2tGOUlBTkZEUUFhQTBCQmR5QUdOUUlBSUFSWURRRWFBa0FnQmlnQ0JDQUVwMEVNYkdvaUFDZ0NBQ0FMUncwQUlBQW9BZ1FoQnlBQUtBSUlJUWdnQ2hDSERpRUpJQWNoQVNBSUlRQURRQ0FCQkVBZ0FTQUJRUUYySWdWQmYzTnFJQVVnQUNBRlFlQUFiR29pQlNnQ0JDQUNTU0lNR3lFQklBVkI0QUJxSUFBZ0RCc2hBQXdCQlNBSUlBZEI0QUJzYWlFQkEwQWdBQ0FCUmcwRElBQW9BZ1FnQWtjTkF3SkFJQUFvQWxnZ0NVMEVRQ0FKSUFBb0FseE5EUUVMSUFBb0FoQU5BQ0FBS0FJSURRQWdBRUhnQUdvaEFBd0JDd3NnQXlBQU5nSUFRUUFNQkFzQUN3QUxJQVJDQVh3aEJBd0FDd0FMQ3pBQkFYOGdBQ2dDQkNJQ0lBQW9BZ2hIQkVBZ0FpQUJLQUlBTmdJQUlBQWdBa0VFYWpZQ0JBOExJQUFnQVJDNERnc3dBUUYvSUFBb0FnUWlBaUFBS0FJSVNRUkFJQUlnQVNnQ0FEWUNBQ0FBSUFKQkJHbzJBZ1FQQ3lBQUlBRVF1QTRMemdJQkEzOGdBQ0FCUndSL0lBRXRBQXNpQTBFWWRFRVlkU0VDSUFBc0FBdEJBRTRFUUNBQ1FRQk9CRUFnQUNBQktRSUFOd0lBSUFBZ0FTZ0NDRFlDQ0E4TElBRW9BZ0FoQkNBQktBSUVJUUVqQUVFUWF5SUNKQUFDUUNBQlFRcE5CRUFnQUJDS0JTRURJQUFnQVJDTEJTQURFSU1CSUFRZ0FSQzVBeG9nQWtFQU9nQVBJQUVnQTJvZ0FrRVBhaERSQWd3QkN5QUFRUW9nQVVFS2F5QUFFTWdPSWdCQkFDQUFJQUVnQkJDV0NBc2dBa0VRYWlRQUR3c2dBU2dDQUNBQklBSkJBRWdpQWhzaEJDQUJLQUlFSUFNZ0Foc2hBU01BUVJCcklnSWtBQUpBSUFFZ0FCQ1NDaUlEU1FSQUlBQVExQWdoQXlBQUlBRVEwd1FnQXhDREFTQUVJQUVRdVFNYUlBSkJBRG9BRHlBQklBTnFJQUpCRDJvUTBRSU1BUXNnQUNBRFFRRnJJQUVnQTJ0QkFXb2dBQkRKRGlJQVFRQWdBQ0FCSUFRUWxnZ0xJQUpCRUdva0FFRUFCU0FBQ3hvTFNnRUJmd0pBSUFGRkRRQWdBU2dDRENJQklBQW9BZ1FnQUNnQ0FDSUFhMEVDZFU4TkFDQUFJQUZCQW5ScUtBSUFJZ0JCQUNBQUJIOGdBQ2dDQkJEWkhBVkJBQXNiSVFJTElBSUxBd0FCQy9NREFRVi9Jd0JCSUdzaUF5UUFJQU1nQVRZQ0RBSkFJQUZGQkVCQkFDRUJEQUVMSUFFb0FoUW9BZ1JCdUswU1J3MEFJQUFvQWdBaUFSQWNJQUZCcUFGcUlnVVE4d1VoQVNBREtBSU1JUVFnQUVHTU5Hb29BZ0FoQmlNQVFkQUJheUlDSkFBZ0FpQUdOZ0xNQVNBQ0lBUW9BZ2cyQWdnZ0FpQUVLQUlVRUlRQk5nS29BU0FDUVFNMkFzZ0JJQUpCQURZQ3hBRWdBaUFFTFFBb09nRERBU0FDSUFRb0FoQTJBcndCSUFFZ0FpZ0NDQ0FDS0FLb0FTQUNLQUxJQVNBQ0tBTE1BVUVBSUFJdEFNTUJJQUlvQXJ3QkVKd0ZJZ0ZCcUpRU05nSUVJQUZCMkpRU05nSUFJQUVnQkRZQ0xDQUJRY2lVRWpZQ0FDQUVLQUlVS0FJRVFiaXRFa2NFUUNBQ1FRaHFRZEczQlVFZ1FRa2dBa0dvQVdvUUhTSUVFQmNpQmtFWWFrSHM3UWdRRGhvZ0JoQVlJQVFRSGdzZ0FrSFFBV29rQUNBRklBRVFLQ0FGSUFVb0FoaEJBV28yQWhnZ0FTQURLQUlNS1FNZ053TWdJQUFvQWdBaUFoQWNJQUpCNUFGcUlBTW9BZ3dvQWdnZ0FSQ29IaUFBUWNncmFpQUFRWWcwYWhDSkRDRUNJQU1vQWd3aUJDZ0NFQ0lBUlEwQUlBQW9BZ1FpQlVHUW5CSkdCRUFnQXlBRU5nSWNJQU1nQURZQ0dDQURRUkJxSUFKQkZHb2dBMEVZYWhEM0JRd0JDeUFGUWNDY0VrY05BQ0FESUFBMkFoQWdBMEVZYWlBQ1FUeHFJQU5CRUdvUXF3VUxJQU5CSUdva0FDQUJDNnNCQVFSL0l3QkJFR3NpQWlRQUlBQWdBU2dDQURZQ0FDTUFRUkJySWdNa0FDQUFRUVJxSWdVZ0FVRUVhaUlFUndSQUlBTWdCRUVRYWpZQ0NDQURJQVFvQWhBZ0JFYzZBQXdnQlNBRFFRaHFFTWdKQ3lBRFFSQnFKQUFnQUNBQlJ3UkFJQUlnQVVFd2FqWUNDQ0FDSUFFb0FqQWdBVUVnYWtjNkFBd2dBRUVnYWlBQ1FRaHFFSllmQ3lBQVFUeHFJQUZCUEdvUWxSOGdBQ0FCS0FLSUFUWUNpQUVnQWtFUWFpUUFJQUFMTlFBZ0FDQUJLQUlBTmdJQUlBQkJCR29nQVVFRWFoQ1lIeG9nQUVFOGFpQUJRVHhxRUl3UklBQWdBU2dDaUFFMkFvZ0JJQUFMQ2dBZ0FDZ0NBQkRrQVFzMkFRRitBbjlCQUNBQUtBSUVJZ0FwQXhCQ2hhQ0FpSUlJZ3lJQklBRkNBWDJEVUEwQUdrRUJJQUFRc0FVTkFCb2dBQkNWRVFzTENnQWdBQ2dDQUJEVUFnczRBUUYrQW45QkFDQUFLQUlFSWdBcEF4QkN3TUNBaW9DSWdDQ0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FCQ3dCUTBBR2lBQUVKY1JDd3NTQUNBQUxRQllCRUFnQUVFSWFoQ1ZBUXNMRmdBZ0FTQUNOZ0lBSUFGQkJHb2dBRUVFYWhDNUZnc2ZBUUYvUWNnQkVCVWlBaUFCTmdJQUlBSkJCR29nQUVFRWFoQzVGaUFDQ3hNQUlBQWdBVFlDQUNBQVFReHFFSndDSUFBTEVRQWdBQ0FCSUFFb0FnQW9BaFFSQWdBTER3QWdBQ0FBS0FJQUtBSVFFUUFBQ3dzQUlBQkI3THdnRU40REMzSUJBWDRDZnlBQUtRT0FBU0lDUW9DQWdBS0RVQVJBUVFFZ0FDQUJRUlZCRUJDR0JBMEJHaUFBS1FPQUFTRUNDeUFDUW9DQWdJQ0FFSU5RQkg1QkFTQUFJQUZCRlVFSUVJWUVEUUVhSUFBcEE0QUJCU0FDQzBLQUJJTlFCRUJCQVNBQUlBRkJGa0VRRUlZRURRRWFDMEVBQ3dzTUFDQUFFQndnQUNnQzRBRUxEd0FnQUNBQVFkZ0NhaUFCRVBNTkMzb0JBMzhqQUVFUWF5SUNKQUFnQWlBQk5nSUlJQUFvQWdRaEF5QUFRUXhxSWdFb0FnQWdBQ2dDQ0NJQVFRRjFhaUlFSUFFb0FnUWdBU2dDQ0NBQktBSU1JQUZCRUdvZ0FVRWthaUFCUWZBQWFpQUNLQUlJSUFCQkFYRUVmeUFFS0FJQUlBTnFLQUlBQlNBREN4RU1BQ0VBSUFKQkVHb2tBQ0FBQ3c0QUlBQkJER29RbkFJZ0FCQWZDd29BSUFCQkRHb1FuQUlMakF3QkNuOENRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUFvQWhBT0d4c0FBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVCRVNFeFFWRmhjWUdSb0xJQUFnQUNnQ0FDZ0NJQkVBQUNFQVFSUVFGU0FBRVBBQklnQkIrUGNTTmdJQURCc0xJQUFnQUNnQ0FDZ0NLQkVBQUNFQVFSd1FGU0FBRVBBQklnRkI3S0FUTmdJQUlBRWdBQ2dDRkRZQ0ZDQUJJQUF0QUJnNkFCZ01IUXNnQUNBQUtBSUFLQUl3RVFBQUlRQkJHQkFWSUFBUThBRWlBVUgwb2hNMkFnQU1HZ3NnQUNBQUtBSUFLQUk0RVFBQUlRQkJIQkFWSUFBUThBRWlBVUdRanhNMkFnQU1HZ3NnQUNBQUtBSUFLQUpBRVFBQUlRQkJIQkFWSUFBUThBRWlBVUdNa1JNMkFnQU1HUXNnQUNBQUtBSUFLQUpJRVFBQUlRQkJNQkFWSUFBUThBRWlBVUdJa3hNMkFnQWdBU0FBS1FJVU53SVVJQUVnQUNrQ0hEY0NIQ0FCSUFBcEFpUTNBaVFnQVNBQUtBSXNOZ0lzREJrTElBQWdBQ2dDQUNnQ1VCRUFBQ0VBUVJRUUZTQUFFUEFCSWdCQmdQb1NOZ0lBREJVTElBQWdBQ2dDQUNnQ1dCRUFBQ0VBUVJnUUZTQUFFUEFCSWdGQi9LUVROZ0lBREJVTElBQWdBQ2dDQUNnQ1lCRUFBQ0VBUVNnUUZTQUFFUEFCSWdGQmhKVVROZ0lBSUFFZ0FDZ0NGRFlDRkNBQlFSaHFJQUJCR0dvUXRoY01GZ3NnQUNBQUtBSUFLQUpvRVFBQUlRQkJHQkFWSUFBUThBRWlBVUdBbHhNMkFnQU1Fd3NnQUNBQUtBSUFLQUp3RVFBQUlRRkJMQkFWSUFFUThBRWlCVUg4bUJNMkFnQWdCVUVVYWlBQlFSUnFFTEFCR2lBRlFTQnFJZ0JDQURjQ0JDQUFJQUJCQkdvaUJ6WUNBQ0FCUVNCcUlnRW9BZ0FoQXlBQlFRUnFJUWdEUUNBRElBaEhCRUFqQUVFUWF5SUVKQUFqQUVFZ2F5SUJKQUFnQkNBQUlBY2dBVUVjYWlBQlFSaHFJQU5CRUdvaUNSQ1NEaUlLS0FJQUlnSUVmMEVBQlVFZ0VCVWhBaUFCUVFocUlnWWdBRUVFYWpZQ0JDQUdJQUkyQWdBZ0FrRVFhaUFKRUp3T0dpQUdRUUU2QUFnZ0FDQUJLQUljSUFvZ0FTZ0NDQkQ0QWlBQktBSUlJUUlnQVVFQU5nSUlJQVlRbmhkQkFRczZBQXdnQkNBQ05nSUlJQUZCSUdva0FDQUVLQUlJR2lBRVFSQnFKQUFnQXhCTUlRTU1BUXNMSUFVUEN5QUFJQUFvQWdBb0FuZ1JBQUFoQUVFZ0VCVWdBQkR3QVNJQlFZU25FellDQUNBQlFSUnFJQUJCRkdvUVZCb01Fd3NnQUNBQUtBSUFLQUtBQVJFQUFDRUFRUndRRlNBQUVQQUJJZ0ZCK0pvVE5nSUFEQkVMSUFBZ0FDZ0NBQ2dDaUFFUkFBQWhBRUVrRUJVZ0FCRHdBU0lCUWZTY0V6WUNBQ0FCSUFBb0FoUTJBaFFnQVVFWWFpQUFRUmhxRUxBQkdnd1JDeUFBSUFBb0FnQW9BcEFCRVFBQUlRQkJGQkFWSUFBUThBRWlBRUdJL0JJMkFnQU1EUXNnQUNBQUtBSUFLQUtZQVJFQUFDRUFRUlFRRlNBQUVQQUJJZ0JCa1A0U05nSUFEQXdMSUFBZ0FDZ0NBQ2dDb0FFUkFBQWhBRUVVRUJVZ0FCRHdBU0lBUVppQUV6WUNBQXdMQ3lBQUlBQW9BZ0FvQXFnQkVRQUFJUUJCRkJBVklBQVE4QUVpQUVHZ2doTTJBZ0FNQ2dzZ0FDQUFLQUlBS0FLd0FSRUFBQ0VBUVJnUUZTQUFFUEFCSWdGQmpLa1ROZ0lBREFvTElBQWdBQ2dDQUNnQ3VBRVJBQUFoQUVFZ0VCVWdBQkR3QVNJQlFaU3JFellDQUNBQklBQXBBaFEzQWhRZ0FTQUFLQUljTmdJY0RBc0xJQUFnQUNnQ0FDZ0N3QUVSQUFBaEFFRVVFQlVnQUJEd0FTSUFRYWlFRXpZQ0FBd0hDeUFBSUFBb0FnQW9Bc2dCRVFBQUlRQkJGQkFWSUFBUThBRWlBRUd3aGhNMkFnQU1CZ3NnQUNBQUtBSUFLQUxRQVJFQUFDRUFRUlFRRlNBQUVQQUJJZ0JCdUlnVE5nSUFEQVVMSUFBZ0FDZ0NBQ2dDMkFFUkFBQWhBRUVrRUJVZ0FCRHdBU0lCUWZDZUV6WUNBQ0FCSUFBcEFoUTNBaFFnQVNBQUtRSWNOd0ljREFjTElBQWdBQ2dDQUNnQzRBRVJBQUFoQUVFVUVCVWdBQkR3QVNJQVFjQ0tFellDQUF3REN5QUFJQUFvQWdBb0F1Z0JFUUFBSVFCQkZCQVZJQUFROEFFaUFFSElqQk0yQWdBTUFndEJvNmdKUVlDZ0FrR0pBVUdOcmdRUUFBQUxJQUFnQUNnQ0FDZ0NHQkVBQUNFQVFSUVFGU0FBRVBBQklnQkI4UFFTTmdJQUlBQVBDeUFBRHdzZ0FTQUFLQUlVTmdJVURBRUxJQUVnQUNrQ0ZEY0NGQXNnQVF1bEFnRUNmeUFESUFFMkFnZ2dBMElBTndJQUlBSWdBellDQUNBQUtBSUFLQUlBSWdFRVFDQUFJQUUyQWdBZ0FpZ0NBQ0VEQ3lBRElBTWdBQ2dDQkNJRlJqb0FEQU5BQWtBZ0F5QUZSZzBBSUFNb0FnZ2lBaTBBREEwQUFrQWdBaUFDS0FJSUlnRW9BZ0FpQkVZRVFBSkFJQUVvQWdRaUJFVU5BQ0FFTFFBTURRQU1BZ3NnQXlBQ0tBSUFSd1JBSUFJUXlnZ2dBaWdDQ0NJQ0tBSUlJUUVMSUFKQkFUb0FEQ0FCUVFBNkFBd2dBUkRKQ0F3Q0N3SkFJQVJGRFFBZ0JDMEFEQTBBREFFTElBTWdBaWdDQUVZRVFDQUNFTWtJSUFJb0FnZ2lBaWdDQ0NFQkN5QUNRUUU2QUF3Z0FVRUFPZ0FNSUFFUXlnZ01BUXNnQWtFQk9nQU1JQUVnQVNBRlJqb0FEQ0FFUVFFNkFBd2dBU0VEREFFTEN5QUFJQUFvQWdoQkFXbzJBZ2dMSUFFQmZ5TUFRUkJySWdFa0FDQUFLQUlBRVB3Q0lRQWdBVUVRYWlRQUlBQUxKd0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RCQ0RBU0VBSUFGQkVHb2tBQ0FBQzhFSEFRVi9Jd0JCSUdzaUJTUUFJQUZCQ0dvaEF5QUNLQUlBSWdJb0FnQWlCaUFDS0FJRVFRSjBhaUVIUVFFaEFnTkFJQVlnQjBjRVFDQUZJQVlvQWdBMkFnd2dBa0VCY1VVRVFDQURRZmZ3REJBT0dnc2dBMEdkM3dZUURob2dCU2dDRENFQ0lBVWdBRFlDQUNBRklBVkJER28yQWdRQ1FBSkFJQUpGRFFBZ0FpZ0NCQ0lFUWFqNkQwWUVRQ0FGSUFJb0FpUTJBaEFnQlNBQ0tBSW9OZ0lVSUFVZ0FpZ0NMRFlDR0NBRFFkSDRDQkFPR2tFQUlRSURRQ0FDUVFOSEJFQWdCVUVRYWlBQ1FRSjBhaWdDQUNJRUJFQWdBZ1JBSUFOQjlPME1FQTRhQ3lBQUlBRWdCQkNTQVFzZ0FrRUJhaUVDREFFTEN5QURRZS8yQ0JBT0dnd0NDeUFFUVlqcUQwWUVRQ0FCSUFJb0FpUVFtUWthREFJTElBUkJzUG9SUmdSQUlBTkJ5UGdJRUE0YUlBQWdBU0FDS0FJa0VKSUJJQU5CNy9ZSUVBNGFEQUlMSUFSQndQc1JSZ1JBSUFOQjVQY0lFQTRhSUFBZ0FTQUNLQUlrRUpJQklBTkI3L1lJRUE0YURBSUxJQVJCbVAwUlJnUkFJQU5CN1BjSUVBNGFJQUFnQVNBQ0tBSWtFSklCSUFOQjcvWUlFQTRhREFJTElBUkIrUG9SUmdSQUlBTkJoZmdJRUE0YUlBQWdBU0FDS0FJa0VKSUJJQU5CNy9ZSUVBNGFEQUlMSUFSQmtJSVNSZ1JBSUFFZ0FrRWthaERWR0F3Q0N5QUVRZEQ4RVVZRVFDQURRWXY1Q0JBT0dpQUFJQUVnQWlnQ0pCQ1NBU0FDS0FJb0JFQWdBMEgwN1F3UURob2dBQ0FCSUFJb0FpZ1FrZ0VMSUFOQjcvWUlFQTRhREFJTElBUkJxSUlTUmdSQUlBTkJudU1BRUE0YURBSUxJQVJCaVB3UlJnUkFJQU5CeVBrSUVBNGFJQUFnQVNBQ0tBSWtFSklCSUFOQjcvWUlFQTRhREFJTElBUkJ3SUlTUmdSQUlBTkI1ZUlERUE0YURBSUxJQVJCb0lNU1JnUkFJQU5COVBZSUVBNGFJQUFnQVNBQ0tBSWtFSklCSUFOQjcvWUlFQTRhREFJTElBUkIrUDBSUmdSQUlBTkI2dmdJRUE0YUlBQWdBU0FDS0FJa0VKSUJJQU5CNy9ZSUVBNGFEQUlMSUFSQjRQMFJSZ1JBSUFOQnEvZ0lFQTRhSUFBZ0FTQUNLQUlrRUpJQklBTkI3L1lJRUE0YURBSUxJQVJCMklJU1JnUkFJQU5CdnZrSUVBNGFJQUVnQWtFa2FoRExBMEVJYWtIdjlnZ1FEaG9NQWdzZ0JCRDJBMFVOQUNBRFFiTDRDQkFPR2lBRlFSQnFJZ1FnQWlBQ0tBSUFLQUlRRVFJQUlBTWdCQkFTR2lBRFFlLzJDQkFPR2lBRUVBOGFEQUVMSXdCQm9BRnJJZ0lrQUNBQ1FlNnBCVUhkQTBFUElBVW9BZ0JCOUFKcUVCY2lCRUVZYWtHQWtRa1FEaG9nQkNBRktBSUVLQUlBS0FJRVFRUnFFSm9CUVJocVFmT2FDUkFPR2lBRUVCZ2dBa0dnQVdva0FBc2dCa0VFYWlFR1FRQWhBZ3dCQ3dzZ0JVRWdhaVFBQ3lNQkFYOGpBRUVRYXlJQkpBQWdBQkREQXlFQUlBRkJFR29rQUNBQUlBQkJCSFp6Q3pBQkFYOGdBQ2dDQkNJQ0lBQW9BZ2hKQkVBZ0FpQUJLQUlBTmdJQUlBQWdBa0VFYWpZQ0JBOExJQUFnQVJEQ0VBdENBUUovQWtBZ0FrVU5BQ0FBS0FJd0lRTWdBQ2dDTENFQ0EwQWdBaUFEUmcwQklBRWdBaENLQWlFRUlBSkJRR3NoQWlBRURRQUxRUUFQQ3lBQklBQVFpZ0lMb1FzQ0QzOENmU01BUVNCcklnZ2tBQ0FJSUFJMkFnZ2dDQ0FCTmdJTUlBQW9BZ0FoQkNBSVFSQnFJQUVnQWhDNEdpQUVRYXdCYWlFSElBaEJHR29nQ0VFY2FoQ3dEQ0VGQWtBQ1FDQUVLQUt3QVNJQVJRMEFJQWNvQWdBQ2Z5QUFRUUZySUFWeElBQnBJZ0ZCQVUwTkFCb2dCU0FBSUFWTERRQWFJQVVnQUhBTElnTkJBblJxS0FJQUlnSkZEUUFnQUVFQmF5RUpJQWdvQWh3aEJpQUlLQUlZSVFvZ0FVRUJTeUVNQTBBZ0FpZ0NBQ0lDUlEwQklBVWdBaWdDQkNJQlJ3UkFBa0FnREVVRVFDQUJJQWx4SVFFTUFRc2dBQ0FCU3cwQUlBRWdBSEFoQVFzZ0FTQURSZzBCREFJTElBSW9BZ3dpQ3lnQ0NDQUtSdzBBSUFzb0Fnd2dCa2NOQUFzTUFRc2dCRUdRQVdvaUFCRDhBeUlCSUFnb0Fnd2dDQ2dDQ0JDNEdpQUFJQUVRS0NBQUlBQW9BaGhCQVdvMkFoZ2dBU0VMQWtBZ0JDZ0NzQUVpQUVVTkFDQUhLQUlBQW44Z0FFRUJheUFGY1NBQWFTSUJRUUZORFFBYUlBVWdBQ0FGU3cwQUdpQUZJQUJ3Q3lJRFFRSjBhaWdDQUNJQ1JRMEFJQUJCQVdzaENTQUJRUUZMSVFZRFFDQUNLQUlBSWdKRkRRRWdCU0FDS0FJRUlnRkhCRUFDUUNBR1JRUkFJQUVnQ1hFaEFRd0JDeUFBSUFGTERRQWdBU0FBY0NFQkN5QUJJQU5IRFFJTElBSW9BZ3dpQVNnQ0NDQUxLQUlJUncwQUlBRW9BZ3dnQ3lnQ0RFY05BQXNNQVF0QkVCQVZJZ29nQlRZQ0JDQUtJQVd0SUF1dFFpQ0doRGNDQ0NBS1FRQTJBZ0FnQkVHMEFXb2hEQUpBUVFBZ0FDQUVLQUs0QVVFQmFyTWlFaUFFS2dLOEFTSVRJQUN6bEY0YkRRQkJBaUVEQWtBZ0FDQUFRUUZyY1VFQVJ5QUFRUU5KY2lBQVFRRjBjaUlCQW44Z0VpQVRsWTBpRWtNQUFJQlBYU0FTUXdBQUFBQmdjUVJBSUJLcERBRUxRUUFMSWdJZ0FTQUNTeHNpQVVFQlJnMEFJQUVnQVVFQmEzRkZCRUFnQVNFRERBRUxJQUVRZnlFRElBUW9BckFCSVFBTEFrQUNRQUpBSUFBZ0EwOEVRQ0FBSUFOTkRRTWdBRUVEU1NFQ0FuOGdCQ2dDdUFHeklBUXFBcndCbFkwaUVrTUFBSUJQWFNBU1F3QUFBQUJnY1FSQUlCS3BEQUVMUVFBTElRRWdBQ0FESUFJZ0FHbEJBVXR5Qkg4Z0FSQi9CU0FCUVFGQklDQUJRUUZyWjJ0MElBRkJBa2tiQ3lJQklBRWdBMGtiSWdOTkJFQWdCQ2dDc0FFaEFBd0VDeUFEUlEwQkN5QURRWUNBZ0lBRVNRUkFJQWNnQTBFQ2RCQVZFR3dnQkNBRE5nS3dBVUVBSVFJRFFDQUNJQU5HQkVBZ0JDZ0N0QUVpQ1VVTkJBVWdCeWdDQUNBQ1FRSjBha0VBTmdJQUlBSkJBV29oQWd3QkN3c2dDU2dDQkNFR0FrQWdBMmtpQUVFQlRRUkFJQVlnQTBFQmEzRWhCZ3dCQ3lBRElBWkxEUUFnQmlBRGNDRUdDeUFIS0FJQUlBWkJBblJxSUF3MkFnQWdBMEVCYXlFUElBQkJBVXNoRUFOQUlBa29BZ0FpQUVVTkF5QUFLQUlFSVFFQ1FDQVFSUVJBSUFFZ0QzRWhBUXdCQ3lBQklBTkpEUUFnQVNBRGNDRUJDd0pBSUFFZ0JrWU5BQ0FBSVFJZ0FVRUNkQ0lPSUFjb0FnQnFJZzBvQWdCRkJFQWdEU0FKTmdJQUlBRWhCZ3dCQ3dOQUFrQWdBaUlCS0FJQUlnSkZEUUFnQUNnQ0RDSU5LQUlJSUFJb0Fnd2lFU2dDQ0VjTkFDQU5LQUlNSUJFb0FneEdEUUVMQ3lBSklBSTJBZ0FnQVNBSEtBSUFJQTVxS0FJQUtBSUFOZ0lBSUFjb0FnQWdEbW9vQWdBZ0FEWUNBQXdCQ3lBQUlRa01BQXNBQ3hEN0FRQUxRUUFoQUNBSFFRQVFiQ0FFUVFBMkFyQUJEQUVMSUFNaEFBc2dBQ0FBUVFGcklnRnhSUVJBSUFFZ0JYRWhBd3dCQ3lBQUlBVkxCRUFnQlNFRERBRUxJQVVnQUhBaEF3c0NRQUpBSUFjb0FnQWdBMEVDZEdvaUFTZ0NBQ0lDUlFSQUlBb2dCQ2dDdEFFMkFnQWdCQ0FLTmdLMEFTQUJJQXcyQWdBZ0NpZ0NBQ0lCUlEwQ0lBRW9BZ1FoQWdKQUlBQWdBRUVCYXlJQmNVVUVRQ0FCSUFKeElRSU1BUXNnQUNBQ1N3MEFJQUlnQUhBaEFnc2dCeWdDQUNBQ1FRSjBhaUVDREFFTElBb2dBaWdDQURZQ0FBc2dBaUFLTmdJQUN5QUVJQVFvQXJnQlFRRnFOZ0s0QVFzZ0NFRWdhaVFBSUFzTEN3QWdBQ0FCTmdJQUlBQUxOZ0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQVFSL0lBQWdBVUVRYWlBQ1FReHFFTE1EQlVFQUN5RUJJQUpCRUdva0FDQUJDemdCQVg4Q1FDQUJSUTBBSUFFb0Fnd2lBU0FBS0FJRUlBQW9BZ0FpQUd0QkFuVlBEUUFnQUNBQlFRSjBhaWdDQUJEWkVDRUNDeUFDQytVRUFnaC9BbjRqQUVIQUFXc2lBeVFBSUFNZ0FDZ0M0QWdnQUVIa0NHb29BZ0JCakFGc2FrR01BV3NpQkRZQ0FDQUJLQUlBSVFBZ0EwRUFOZ0lJSUFNZ0FEWUNCQ0FESUFRb0FvZ0JRUUZyTmdJTUFrQWdBeERtQ3dSQUlBTVE1Z3NnQWpZQ0FBd0JDeUFFS0FKOElBUW9Bb1FCSWdCQmxnRnNRWllCYWtIa0FHNUpCRUFnQkNBQVFRRjBRUUpxRU9VTEN5QURRYmdCYWlBRUlBRVFtZ2tnQkNnQ2ZDSUpRUUZySVFvZ0FTZ0NBQ0VHSUFRb0FuZ2hDQ0FES0FLOEFTRUhJQU1vQXJnQklRRkJBQ0VBQTBBZ0FDQUpSd1JBSUFnZ0FVRVViR29pQlMwQUNFVUVRQ0FGUVFFNkFBZ2dCU0FDTmdJRUlBVWdCallDQUNBSUlBRkJGR3hxSWdFZ0FEWUNFQ0FCSUFjMkFnd2dCQ0FFS0FLRUFVRUJhallDaEFFZ0JDQUVLQUtJQVVFQmFqWUNpQUVNQXdzZ0J5QUZLQUlNUmdSQUlBWWdCU2dDQUVZTkF3c2dBQ0FGS0FJUVN3UkFJQU5CQVRvQXFBRWdBeUFBTmdLd0FTQURJQUkyQXFRQklBTWdCallDb0FFZ0F5QUhOZ0tzQVNBRElBQTJBaEFnQXlBREtRT29BU0lMTndNSUlBTWdBeWtEb0FFaUREY0RBQ0FESUFVb0FoQTJBckFCSUFNZ0JTa0NDRGNEcUFFZ0F5QUZLUUlBTndPZ0FTQUZJQUEyQWhBZ0JTQU1Od0lBSUFVZ0N6Y0NDQ0FESUFNb0FyQUJRUUZxTmdLd0FTQUVJQUZCQVdvZ0JDZ0NmSEFnQTBHZ0FXb1E1QXNnQkNBRUtBS0VBVUVCYWpZQ2hBRWdCQ0FFS0FLSUFVRUJhallDaUFFTUF3VWdBVUVCYWtFQUlBRWdDa2NiSVFFZ0FFRUJhaUVBREFJTEFBc0xJQU5CaHJVRFFlc0RRUTRnQTBHZ0FXb1FIU0lBRUJjaUFVRVlha0dXTlJBT0dpQUJFQmdnQUJBZUN5QURRY0FCYWlRQUMzb0JBMzhqQUVFUWF5SUJKQUFnQVVFQU9nQU1JQUVnQUVIa0FHbzJBZ2dDZnlBQktBSUlJZ0lvQWdBaUFDQUNLQUlFUVFKMGFpRURBMEJCQUNBQUlBTkdEUUVhSUFBb0FnQWhBaUFBUVFScUlRQWdBaWdDQkVHSTZnOUhEUUFMSUFJTElnQUVmeUFBS0FJa0JVRi9DeUVBSUFGQkVHb2tBQ0FBQ3lZQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkJFQWdBU0FCS0FJQUtBSUVFUU1BQ3lBQUN5MEJBWDhnQUNBQktBSUFJZ0lwQWdBM0FnQWdBRUVJYWlBQ1FRaHFFSXNSSUFBZ0FTZ0NCQ2dDQURZQ1ZBc0xBQ0FBUWFpMUFoRE5EQXZjQVFFRGZ5QUFRYkNLRGpZQ1FDQUFRWWlLRGpZQ0FDQUFRWnlLRGpZQ0NDQUFRY0NLRGlnQ0FDSUJOZ0lBSUFBZ0FVRU1heWdDQUdwQnhJb09LQUlBTmdJQUlBQkJBRFlDQkNBQUlBQW9BZ0JCREdzb0FnQnFJQUJCREdvaUF4RHZCaUFBSWdGQnlJb09LQUlBSWdJMkFnZ2dBa0VNYXlnQ0FDQUJRUWhxYWtITWlnNG9BZ0EyQWdBZ0FVRzhpZzRvQWdBaUFqWUNBQ0FCSUFKQkRHc29BZ0JxUWRDS0RpZ0NBRFlDQUNBQlFkU0tEaWdDQURZQ0NDQUJRWWlLRGpZQ0FDQUFRWnlLRGpZQ0NDQUFRYkNLRGpZQ1FDQURRUmdRdUJFZ0FRc1JBQ0FBSUFFZ0FDZ0NBQ2dDTEJFQkFBdkxDUUlFZndWK0l3QkI4QUJySWdZa0FDQUVRdi8vLy8vLy8vLy8vd0NESVFrQ1FBSkFJQUZRSWdVZ0FrTC8vLy8vLy8vLy8vOEFneUlLUW9DQWdJQ0FnTUQvL3dCOVFvQ0FnSUNBZ01DQWdIOVVJQXBRRzBVRVFDQURRZ0JTSUFsQ2dJQ0FnSUNBd1AvL0FIMGlDMEtBZ0lDQWdJREFnSUIvVmlBTFFvQ0FnSUNBZ01DQWdIOVJHdzBCQ3lBRklBcENnSUNBZ0lDQXdQLy9BRlFnQ2tLQWdJQ0FnSURBLy84QVVSdEZCRUFnQWtLQWdJQ0FnSUFnaENFRUlBRWhBd3dDQ3lBRFVDQUpRb0NBZ0lDQWdNRC8vd0JVSUFsQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFSQ2dJQ0FnSUNBSUlRaEJBd0NDeUFCSUFwQ2dJQ0FnSUNBd1AvL0FJV0VVQVJBUW9DQWdJQ0FnT0QvL3dBZ0FpQUJJQU9GSUFJZ0JJVkNnSUNBZ0lDQWdJQ0FmNFdFVUNJRkd5RUVRZ0FnQVNBRkd5RUREQUlMSUFNZ0NVS0FnSUNBZ0lEQS8vOEFoWVJRRFFFZ0FTQUtoRkFFUUNBRElBbUVRZ0JTRFFJZ0FTQURneUVESUFJZ0JJTWhCQXdDQ3lBRElBbUVVRVVOQUNBQklRTWdBaUVFREFFTElBTWdBU0FCSUFOVUlBa2dDbFlnQ1NBS1VSc2lDQnNoQ2lBRUlBSWdDQnNpQzBMLy8vLy8vLzgvZ3lFSklBSWdCQ0FJR3lJQ1FqQ0lwMEgvL3dGeElRY2dDMEl3aUtkQi8vOEJjU0lGUlFSQUlBWkI0QUJxSUFvZ0NTQUtJQWtnQ1ZBaUJSdDVJQVZCQm5TdGZLY2lCVUVQYXhETUFpQUdLUU5vSVFrZ0Jpa0RZQ0VLUVJBZ0JXc2hCUXNnQVNBRElBZ2JJUU1nQWtMLy8vLy8vLzgvZ3lFRUlBZEZCRUFnQmtIUUFHb2dBeUFFSUFNZ0JDQUVVQ0lIRzNrZ0IwRUdkSzE4cHlJSFFROXJFTXdDUVJBZ0Iyc2hCeUFHS1FOWUlRUWdCaWtEVUNFREN5QUVRZ09HSUFOQ1BZaUVRb0NBZ0lDQWdJQUVoQ0VCSUFsQ0E0WWdDa0k5aUlRaEJDQUNJQXVGSVEwQ2ZpQURRZ09HSWdJZ0JTQUhSZzBBR2lBRklBZHJJZ2RCL3dCTEJFQkNBQ0VCUWdFTUFRc2dCa0ZBYXlBQ0lBRkJnQUVnQjJzUXpBSWdCa0V3YWlBQ0lBRWdCeENjQmlBR0tRTTRJUUVnQmlrRE1DQUdLUU5BSUFZcEEwaUVRZ0JTcllRTElRa2dCRUtBZ0lDQWdJQ0FCSVFoRENBS1FnT0dJUW9DUUNBTlFnQlRCRUJDQUNFRFFnQWhCQ0FKSUFxRklBRWdESVdFVUEwQ0lBb2dDWDBoQWlBTUlBRjlJQWtnQ2xhdGZTSUVRdi8vLy8vLy8vOERWZzBCSUFaQklHb2dBaUFFSUFJZ0JDQUVVQ0lIRzNrZ0IwRUdkSzE4cDBFTWF5SUhFTXdDSUFVZ0Iyc2hCU0FHS1FNb0lRUWdCaWtESUNFQ0RBRUxJQWtnQ253aUFpQUpWSzBnQVNBTWZId2lCRUtBZ0lDQWdJQ0FDSU5RRFFBZ0NVSUJneUFFUWorR0lBSkNBWWlFaENFQ0lBVkJBV29oQlNBRVFnR0lJUVFMSUF0Q2dJQ0FnSUNBZ0lDQWY0TWhBU0FGUWYvL0FVNEVRQ0FCUW9DQWdJQ0FnTUQvL3dDRUlRUkNBQ0VEREFFTFFRQWhCd0pBSUFWQkFFb0VRQ0FGSVFjTUFRc2dCa0VRYWlBQ0lBUWdCVUgvQUdvUXpBSWdCaUFDSUFSQkFTQUZheENjQmlBR0tRTUFJQVlwQXhBZ0Jpa0RHSVJDQUZLdGhDRUNJQVlwQXdnaEJBc2dBcWRCQjNFaUJVRUVTNjBnQkVJOWhpQUNRZ09JaENJQ2ZDSURJQUpVclNBRVFnT0lRdi8vLy8vLy96K0RJQWV0UWpDR2hDQUJoSHdoQkFKQUlBVkJCRVlFUUNBRUlBTkNBWU1pQVNBRGZDSURJQUZVclh3aEJBd0JDeUFGUlEwQkN3c2dBQ0FETndNQUlBQWdCRGNEQ0NBR1FmQUFhaVFBQ3hvQUlBQWdBU0FDUVkvREJVR2hLVUdiMmdGQmhkMENFSVFUQ3pnQkFYOGpBRUVnYXlJQ0pBQWdBaUFCTmdJUUlBSkJHR29nQUNBQklBSkJFR29ROEJnZ0FpZ0NHQ0VBSUFKQklHb2tBQ0FBUVF4cUN6NEJBWDhqQUVFZ2F5SURKQUFnQXlBQk5nSU1JQU5Cc1BNU05nSUlJQU1nQTBFSWFpSUJOZ0lZSUFBZ0FTQUNFUDRDR2lBQkVCWWdBMEVnYWlRQUMwTUJBWDhqQUVFUWF5SUNKQUFnQWlBQU5nSU1JQUlnQVRvQUN5QUNLQUlNSWdBZ0Fpd0FDeUFBS0FJQUtBSWNFUUVBUVJoMFFSaDFJUUFnQWtFUWFpUUFJQUFMTHdFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2dBaWdDQ0JDT0VTQUNRUkJxSkFBTEpBRUJmeU1BUVJCcklnSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDQUNLQUlJTmdJQUN3b0FJQUJCc0xRU0VFZ0xRQUVCZnlBQVFhVGhFallDQUFOQUlBQW9BZ2dpQVMwQURDQUJSWEpGQkVBZ0FCRHpDaUlCRVBJS0lBRWdBU2dDQUNnQ0JCRURBQXdCQ3dzZ0FCRGFEZ3VyQlFJS2Z3SjlJd0JCSUdzaUJ5UUFJQWNnQVRZQ0VDQUhRUkJxSVFrakFFRVFheUlGSkFBZ0FSRDBBeUVESUFjQ2Z3SkFJQUFvQWdRaUFrVU5BQ0FBS0FJQUFuOGdBa0VCYXlBRGNTQUNhU0lJUVFGTkRRQWFJQU1nQWlBRFN3MEFHaUFESUFKd0N5SUdRUUowYWlnQ0FDSUVSUTBBSUFKQkFXc2hDaUFCS0FJQUlRc2dDRUVCU3lFSUEwQWdCQ2dDQUNJRVJRMEJJQU1nQkNnQ0JDSUJSd1JBQWtBZ0NFVUVRQ0FCSUFweElRRU1BUXNnQVNBQ1NRMEFJQUVnQW5BaEFRc2dBU0FHUncwQ0N5QUVLQUlJSUF0SERRQUxRUUFNQVF0QkZCQVZJUUVnQlNBQVFRaHFOZ0lFSUFVZ0FUWUNBQ0FCUVFocUlnUWdDU2dDQUNnQ0FEWUNBQ0FFUVFScUVPZ1lJQVZCQVRvQUNDQUJRUUEyQWdBZ0FTQUROZ0lFQWtCQkFDQUNJQUFvQWd4QkFXcXpJZ3dnQUNvQ0VDSU5JQUt6bEY0YkRRQWdBQ0FDSUFKQkFXdHhRUUJISUFKQkEwbHlJQUpCQVhSeUlnRUNmeUFNSUEyVmpTSU1Rd0FBZ0U5ZElBeERBQUFBQUdCeEJFQWdES2tNQVF0QkFBc2lCaUFCSUFaTEd4RERBU0FBS0FJRUlnSWdBa0VCYTNGRkJFQWdBa0VCYXlBRGNTRUdEQUVMSUFJZ0Ewc0VRQ0FESVFZTUFRc2dBeUFDY0NFR0N3SkFJQVpCQW5RaUF5QUFLQUlBYWlnQ0FDSUJSUVJBSUFVb0FnQWdBQ2dDQ0RZQ0FDQUFJQVVvQWdBMkFnZ2dBQ2dDQUNBRGFpQUFRUWhxTmdJQUlBVW9BZ0FpQVNnQ0FDSURSUTBCSUFNb0FnUWhCQUpBSUFJZ0FrRUJheUlEY1VVRVFDQURJQVJ4SVFRTUFRc2dBaUFFU3cwQUlBUWdBbkFoQkFzZ0FDZ0NBQ0FFUVFKMGFpQUJOZ0lBREFFTElBVW9BZ0FnQVNnQ0FEWUNBQ0FCSUFVb0FnQTJBZ0FMSUFVb0FnQWhCQ0FGUVFBMkFnQWdBQ0FBS0FJTVFRRnFOZ0lNSUFVUWdBbEJBUXM2QUJ3Z0J5QUVOZ0lZSUFWQkVHb2tBQ0FIS0FJWUlRQWdCMEVnYWlRQUlBQkJER29MVWdFQmZ5QUFLQUtFQWlJQ0lBQW9Bb2dDVHdSQUlBQWdBQ2dDaUFJaUFrRUJkRUVDSUFJYkVQWUtJQUFvQW9RQ0lRSUxJQUFnQWtFQmFqWUNoQUlnQUNnQ2dBSWdBa0VDZEdvZ0FTZ0NBRFlDQUF2RkNBRUpmeU1BUWNBQ2F5SURKQUFnQXlBQk5nSzhBaUFBS0FJQUlRY2dBMEtBZ0lDQWdBRTNBclFDSUFNZ0EwR1FBbW9pQmpZQ3NBSWdCaUFDS0FJRUlnUVFPU0FEUW9DQWdJQ0FBVGNDaEFJZ0F5QURRZUFCYWlJR05nS0FBaUFHSUFRUU9TQUNLQUlBSWdJZ0JFRURkR29oQ3lBRFFiQUNhaUVGQTM4Z0FpQUxSZ1IvUVFBaENDQUFLQUlFRUhvRVFDQUhLQUlBSUFBb0FnUVFla0VBRUlVQklnSWdCeWdDQ0NBQ0tBSUFLQUlJRVFFQUlRZ0xJQWNvQWdnaEJpQURRUUEyQXRBQklBTkNBRGNEeUFFZ0EwSUFOd1BBQVNBSEtBSUlJZ0lRSENBRFFZZ0JhaUlKSUFOQitBQnFRWlM5QlJBVUlnb2dBUkRKQXhBdElBTWdBeWdDakFFZ0F5MEFrd0VpQVNBQlFSaDBRUmgxUVFCSUlnRWJOZ0tjQVNBRElBTW9Bb2dCSUFrZ0FSczJBcGdCSUFNZ0F5a0RtQUUzQXhBZ0EwR2dBV29pQ3lBQ1FZZ0NhaUFEUVJCcUVKOEVJQU1nQlRZQ2NDQURJQU1vQXJBQ0lBTkJrQUpxUnpvQWRDQURRUUEyQW13Z0J5Z0NDQ0lFRUJ3Z0F5QUhLQUlJSWdFb0FnZzJBakJCQVNFQ0lBRWdBU2dDREVFQmFpSUJOZ0lNSUFNZ0FUWUNLQ0FFUVl3QmFpSUVJQVFRM3dzZ0F5Z0NNQ0FES0FJb0lBTW9BcndDRU1rYUlnRVFLQ0FFSUFRb0FoaEJBV28yQWhnZ0F5QUJOZ0k0SUFjb0FnZ2hCQ01BUVJCcklnVWtBQ0FGUVFBMkFnd2dCQkFjSUFVZ0JDZ0NDRFlDQ0NBRUlBUW9BZ3hCQVdvaUFUWUNEQ0FGSUFFMkFnQWdCRUdNQVdvZ0JVRUlhaUFGSUFWQkRHb1F0QmtoQVNBRlFSQnFKQUFnQTBFQ05nSkVJQU1nQVRZQ1BDQURJQU5CT0dvMkFrQWdBeUFES1FOQU53TUlJQU1nQTBISUFHb2dBMEVJYWhDMUFpSUVRUWhxTmdKZ0lBUW9BZ2doQVNBRFFRQTZBQ1FnQTBIQW5DQTJBaUFnQXlBQklBUkhPZ0JrSXdCQkVHc2lCU1FBSUFVZ0NEWUNDQ0FGUVFBMkFnUWdCU0FHSUFzUTh3STJBZ0FnQmlBRFFjQUJhaUFGSUFOQjhBQnFJQVZCQ0dvZ0JVRUVhaUFEUWVBQWFpQURRU0JxRUw0S0lRRWdCaER5QWlBQkVQNEtJQVZCRUdva0FDQUVFS29CSUFrUUR4b2dDaEFQR2lBSEtBSUlJUVFnQVNnQ0pFRWthaUVCSXdCQkVHc2lCaVFBSUFZZ0JDQUJFTm9FTmdJTUlBUWdCRUhZQW1vZ0JrRU1haUFEUWVBQmFoQ1ZCQ0VCSUFaQkVHb2tBQUpBSUFBb0FnUVFlZ1JBSUFOQm9BRnFJQWNvQWdBZ0FDZ0NCQkI2UVFBUWhRRWdBUkJwSVFFZ0J5QUFLQUlFSUFOQkdHb2dBUkJiRUpVRklRSU1BUXNnQnlBSEtBSUlJQUVRbndzUXlRRWFDeUFEUWVBQmFoQWpJQU5Ca0FKcUVDTWdBMEhBQW1va0FDQUNCU0FIS0FJSUlRUWdBMEhBQVdvaUNTQUlFRjhnQTBHZ0FXb2lDa0hEdndJZ0NSQTFJQUlvQWdBaUJpQUhLQUlJSUFZb0FnQW9BZ2dSQVFBaEJpQURRUUE2QU53QklBTkJ3SndnTmdMWUFTQURJQVFnQ2lBR0lBTkIyQUZxRU1RWk5nSklJQU5Ca0FKcUlBTkJ5QUJxRUNRZ0NoQVBHaUFKRUE4YUlBTkI0QUZxSUFKQkJHb1FKQ0FDUVFocUlRSWdDRUVCYWlFSURBRUxDd3ZWRUFJTmZ3SjlJd0JCd0FGcklnTWtBQ0FESUFJMkFyd0JBa0FnQVNnQ0hDZ0NBQzBBQUVVRVFDQUFFR2NhREFFTEFrQUNRQUpBQWtBQ1FBSkFBa0FnQVNBQ0VPMElRUUZyRGdZQUFRTUNCQVVHQ3lBQktBSWNJZ0VvQWdCQkFEb0FBQ0FCUWZteERCQVpJQU5CdkFGcUVDOGFJQUFRWnhvTUJnc2dBQ0FCSUFJUWxBSkJKR29RV3lnQ0FDZ0NCRUdRekJKR0RRVWdBMEVJYWtHNW9RVkI4aE5CQnlBRFFhZ0JhaEFkSWdBUUZ5SUJRUmhxUVlMdENCQU9HaUFCRUJnZ0FCQWVEQVVMSUFFb0FnUVFsZ1VoQWlBRFFRQTJBaGdnQTBJQU53TVFJQU5DQURjRENDQURRb0NBZ0lDQWdJRDRQemNEcUFFZ0EwRUJOZ0lFSUFBZ0FpQUJLQUlJSUFOQkNHb2dBMEdvQVdvZ0EwRUVhaEQ2Q2hCcEdnd0VDeUFCS0FJY0lnRW9BZ0JCQURvQUFDQUJRYjJ6REJBWklBTkJ2QUZxRUM4YUlBQVFaeG9NQXdzZ0FTZ0NIQ0lCS0FJQVFRQTZBQUFnQVVIOXNnd1FHU0FEUWJ3QmFoQXZHaUFBRUdjYURBSUxJQU5CcUFGcUlBRW9BaUFnQVNnQ0xCQ1RBaEJVSVFJZ0FTZ0NCQkR0QXlFRUlBRW9BZ2doQVNBRFFRQTJBaGdnQTBJQU53TVFJQU5DQURjRENDQUFJQVFnQVNBRFFRaHFJQUlRNUFVUWFSb2dBaEFQR2d3QkN5QUJRY0FHYWlBRFFid0JhaERzQVNJRUJFQWdBMEdvQVdvZ0FTZ0NJQ0FES0FLOEFSQ1RBaEJVSVFJZ0JDZ0NEQ0VFSUFFb0FnZ2hBU0FEUVFBMkFoZ2dBMElBTndNUUlBTkNBRGNEQ0NBQUlBUWdBU0FEUVFocUlBSVE1QVVRYVJvZ0FoQVBHZ3dCQ3lBQktBSUFJUVFnQXlnQ3ZBRWhCU01BUVJCcklnSWtBQ0FDSUFVMkFnd2dCRUdBQjJvZ0FrRU1haERzQVNFRUlBSkJFR29rQUNBRUJFQWdBMEdvQVdvZ0FTZ0NJQ0FES0FLOEFSQ1RBaEJVSVFJZ0FTZ0NBQ0FCS0FJUUlBTW9BcndCRUpRQkVIcEJBQkNGQVNFRUlBRW9BZ2doQVNBRFFRQTJBaGdnQTBJQU53TVFJQU5DQURjRENDQUFJQVFnQVNBRFFRaHFJQUlRNUFVUWFSb2dBaEFQR2d3QkN5QUJRZFFHYWlJRUlBTkJ2QUZxRUtrQ0JFQWdBQ0VQSXdCQklHc2lDQ1FBSUFnZ0EwRzhBV29pQ1RZQ0VFRUFJUUFqQUVFUWF5SUdKQUFnQ1NnQ0FDRUJJQWdDZndKQUlBUW9BZ1FpQWtVTkFDQUVLQUlBQW44Z0FrRUJheUFCY1NBQ2FTSUhRUUZORFFBYUlBRWdBU0FDU1EwQUdpQUJJQUp3Q3lJQVFRSjBhaWdDQUNJRlJRMEFJQUpCQVdzaENpQUhRUUZMSVFzRFFDQUZLQUlBSWdWRkRRRWdBU0FGS0FJRUlnZEhCRUFDUUNBTFJRUkFJQWNnQ25FaEJ3d0JDeUFDSUFkTERRQWdCeUFDY0NFSEN5QUFJQWRIRFFJTElBVW9BZ2dnQVVjTkFBdEJBQXdCQzBFVUVCVWhCU0FHSUFSQkNHbzJBZ1FnQmlBRk5nSUFJQVZCQ0dvaUJ5QUlLQUlRS0FJQU5nSUFJQWRCQkdvUVp4b2dCa0VCT2dBSUlBVkJBRFlDQUNBRklBRTJBZ1FDUUVFQUlBSWdCQ2dDREVFQmFyTWlFQ0FFS2dJUUloRWdBck9VWGhzTkFDQUVJQUlnQWtFQmEzRkJBRWNnQWtFRFNYSWdBa0VCZEhJaUFBSi9JQkFnRVpXTkloQkRBQUNBVDEwZ0VFTUFBQUFBWUhFRVFDQVFxUXdCQzBFQUN5SUNJQUFnQWtzYkVNTUJJQVFvQWdRaUFpQUNRUUZyY1VVRVFDQUNRUUZySUFGeElRQU1BUXNnQVNBQ1NRUkFJQUVoQUF3QkN5QUJJQUp3SVFBTEFrQWdBRUVDZENJQklBUW9BZ0JxS0FJQUlnQkZCRUFnQmlnQ0FDQUVLQUlJTmdJQUlBUWdCaWdDQURZQ0NDQUVLQUlBSUFGcUlBUkJDR28yQWdBZ0JpZ0NBQ0lBS0FJQUlnRkZEUUVnQVNnQ0JDRUZBa0FnQWlBQ1FRRnJJZ0Z4UlFSQUlBRWdCWEVoQlF3QkN5QUNJQVZMRFFBZ0JTQUNjQ0VGQ3lBRUtBSUFJQVZCQW5ScUlBQTJBZ0FNQVFzZ0JpZ0NBQ0FBS0FJQU5nSUFJQUFnQmlnQ0FEWUNBQXNnQmlnQ0FDRUZJQVpCQURZQ0FDQUVJQVFvQWd4QkFXbzJBZ3dnQmhDTEFVRUJDem9BSENBSUlBVTJBaGdnQmtFUWFpUUFJQWdvQWhnaEFDQUlRU0JxSkFBZ0R5QUFRUXhxRUZzYUlBUWdDUkRYQnd3QkN5QUJLQUlVSUFNb0Fyd0JFSklGQkVBZ0FDQUJLQUlBSUFNb0Fyd0JFTnNGREFFTElBRW9BaEFnQXlnQ3ZBRVFsQUVpQlVVRVFDQUJLQUljSWdFb0FnQkJBRG9BQUNBQlFjakRDeEFaSUFOQnZBRnFFQzlCaU0wQ0VCa2FJQUFRWnhvTUFRc0NRQ0FGS0FJVUlnSkJBVWNFUUNBQ1FUdEhEUUVnQTBHb0FXb2dBU2dDSUNBREtBSzhBUkNUQWhCVUlRSWdBU0FCS0FJQUlBVVFla0VCRUlVQklBTW9BcndCRUl3UElRUWdBU2dDQ0NFQklBTkJBRFlDR0NBRFFnQTNBeEFnQTBJQU53TUlJQUFnQkNBQklBTkJDR29nQWhEa0JSQnBHaUFDRUE4YURBSUxJQUFnQVNnQ0FDSUFJQUFnQlJCNlFRQVFoUUVROVFvTUFRc2dBeWdDdkFFaEJDQUJLQUlNSWdJUXdBWWdCQkNVQVNFRUl3QkJFR3NpQ1NRQUlBa2dCRFlDRENBQ0xRQnNRUUp4UlFSQUl3QkJJR3NpQkNRQUlBSkJ4QUJxRUk0SklBSW9BaGdpQmlnQ2tBWWhEQ0FHS0FLTUJpRUlBMEFnQ0NBTVJ3UkFJQWdvQWdBaUJpZ0NXQ0VOSUFZb0FsUWhCd05BSUFjZ0RVWUVRQ0FJUVFScUlRZ01Bd1VnQkNBSEtBSUFJZzQyQWhBZ0JDQUNOZ0lNSUFSQnNOZ1NOZ0lJSUFRZ0JFRUlhaUlLTmdJWUl3QkJJR3NpQmlRQUlBWWdDallDRENBR1FZellFallDQ0NBR0lBWkJDR29pQ3pZQ0dDQU9JQXRCQUJDNkdSb2dDeEFXSUFaQklHb2tBQ0FIUVFScUlRY2dDaEFXREFFTEFBc0FDd3NnQWlBQ0tBSnNRUUp5TmdKc0lBUkJJR29rQUFzZ0FrSEVBR29nQ1VFTWFoRDFBeUlDQkg4Z0FpZ0NEQVZCQUFzaEFpQUpRUkJxSkFBQ1FDQUNSUTBBSUFFZ0FoRHFBeEI4SWdKRkRRQWdBaWdDQ0VGL1J3MEFJQUFnQVNnQ0FDSUFJQUFnQlJCNlFRQVFoUUVROVFvTUFRc2dBU2dDSENJQktBSUFRUUE2QUFBZ0FVR0F3QXNRR1NBRFFid0JhaEF2UWR2NERCQVpJUUlnQTBFSWFpSUJJQVVRV0NBQ0lBRVFUUm9nQVJBUEdpQUFFR2NhQ3lBRFFjQUJhaVFBQ3hrQUlBQkJnSUNBZ0FSUEJFQVErd0VBQ3lBQVFRSjBFQlVMcmdFQ0EzOEJmaU1BUWNBQmF5SURKQUFnQWlnQ0JFVUVRQ0FEUVJCcVFadTFCVUVlUVFvZ0EwR3dBV29RSFNJRUVCY2lCVUVZYWtIQTRnZ1FEaG9nQlJBWUlBUVFIZ3NnQXlBQlFRUnFOZ0lRSUFJcEFnQWhCaUFEUVFBMkFod2dBeUFHTndJVUlBTWdBU2dDRkVFQmF6WUNJQUpBSUFOQkVHb1E2UnNFUUNBQUlBTkJFR29RNlJzUVZob01BUXNnQXlBR053TUFJQU1nQmpjRENDQUFJQUVnQXhEdUR3c2dBMEhBQVdva0FBc1JBQ0FBTFFBZ0JFQWdBRUVJYWhBV0N3c2FBQ0FBSUFBb0FnUVEydzhnQUNnQ0FDSUFCRUFnQUJBZkN3c0hBQ0FBRUxjQ0N5Y0JBWDhnQUNnQ1RDSUJRWDlHQkVBZ0FDQUFRU0FRbXhJaUFUWUNUQXNnQVVFWWRFRVlkUXZBRFFFR2Z5TUFRWUFDYXlJQ0pBQWdBaUFCTmdKMElBSWdBRFlDYUNBQ0lBSkI5QUJxTmdKc0FrQUNRQ0FCUlFSQUlBSkI2QUJxRUtJUkRBRUxJQUVvQWdRaUEwR3dxUkpHQkVBZ0FpQUFFTlFDTmdMMEFTQUNRUU0yQXZBQklBSkJBallDakFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FrSENrUUkyQXV3QklBSWdBaWdDZERZQzZBRWdBaUFDUWVBQmFqWUNpQUVnQWlBQ0tRT0lBVGNEQ0NBQVFRVWdBa0VJYWhDWUFpRUJEQUlMSUFOQjBLZ1NSZ1JBSUFJZ0FCRFVBallDOUFFZ0FrRUROZ0x3QVNBQ1FRSTJBb3dCSUFKQkJUWUM1QUVnQWtIUzl3QTJBdUFCSUFKQndwRUNOZ0xzQVNBQ0lBSW9BblEyQXVnQklBSWdBa0hnQVdvMkFvZ0JJQUlnQWlrRGlBRTNBeEFnQUVFRUlBSkJFR29RbUFJaEFRd0NDeUFEUWZDZkVrWUVRQ0FBRU9RQklRUWdBQkQxQlNFR0lBQVExQUloQXlBQ0lBQVFwd2syQXZRQklBSkJBellDOEFFZ0FrRUNOZ0w4QVNBQ1FRVTJBdVFCSUFKQjB2Y0FOZ0xnQVNBQ1FjS1JBallDN0FFZ0FpQUNLQUowTmdMb0FTQUNJQUpCNEFGcUlnVTJBdmdCSUFJZ0Fpa0QrQUUzQXpBZ0FFRURJQUpCTUdvUW1BSWhBU0FDSUFNMkF2UUJJQUpCQXpZQzhBRWdBa0VDTmdLc0FTQUNJQVUyQXFnQklBSWdBaWtEcUFFM0F5Z2dBa0hDa1FJMkF1d0JJQUlnQkRZQzZBRWdBa0VGTmdMa0FTQUNRZEwzQURZQzRBRWdBaUFBUVFVZ0FrRW9haENZQWpZQ3NBRWdBaUFETmdLY0FTQUNRUU0yQXBnQklBSkJBallDcEFFZ0FrSENrUUkyQXBRQklBSWdCallDa0FFZ0FrRUZOZ0tNQVNBQ1FkTDNBRFlDaUFFZ0FpQUNRWWdCYWpZQ29BRWdBaUFDS1FPZ0FUY0RJQ0FBUVFRZ0FrRWdhaENZQWlFQUlBSkJBallDdkFFZ0FpQUFOZ0swQVNBQ0lBSkJzQUZxTmdLNEFTQUNJQUlwQTdnQk53TVlJQUlnQWtIQUFXb2dBa0VZYWhDMUFpSUFRUWhxTmdMWUFTQUNJQUFnQUNnQ0NFYzZBTndCSUFGQmhBRnFJQUpCMkFGcUVNVUpJQUFRcWdFTUFnc2dBeENSQXdSQUlBSWdBU2dDSERZQ2hBRWdBU2dDR0NFQklBSWdBRFlDZUNBQ0lBSkI5QUJxTmdKOElBRkZCRUFnQWtINEFHb1FvUkVNQWdzZ0FTZ0NCQ0lCUWJDcEVrWUVRQ0FDSUFBUTFBSTJBdUFCSUFBZ0FrSGdBV29pQkNBQ1FZUUJhaENmQWlFQklBSW9Bb1FCSVFNZ0FpQUJOZ0wwQVNBQ1FRTTJBdkFCSUFKQkJUWUM1QUVnQWtIUzl3QTJBdUFCSUFKQndwRUNOZ0xzQVNBQ0lBSW9BblEyQXVnQklBSWdCRFlDaUFFZ0FrRUNOZ0tNQVNBQ0lBSXBBNGdCTndNNElBQWdBMEVDZEVHTS9ReHFLQUlBSUFKQk9Hb1FtQUloQVF3REN5QUJRZENvRWtZRVFDQUNJQUFRMUFJMkF1QUJJQUFnQWtIZ0FXb2lCQ0FDUVlRQmFoQ2ZBaUVCSUFJb0FvUUJJUU1nQWlBQk5nTDBBU0FDUVFNMkF2QUJJQUpCQlRZQzVBRWdBa0hTOXdBMkF1QUJJQUpCd3BFQ05nTHNBU0FDSUFJb0FuUTJBdWdCSUFJZ0JEWUNpQUVnQWtFQ05nS01BU0FDSUFJcEE0Z0JOd05BSUFBZ0EwRUNkRUdZL1F4cUtBSUFJQUpCUUdzUW1BSWhBUXdEQ3lBQlFmQ2ZFa1lFUUNBQ0lBQVE1QUUyQXVBQklBQWdBa0hnQVdvaUJ5QUNRWVFCYWhDZkFpRUVJQUlnQUJEMUJUWUM0QUVnQUNBQ1FlQUJhaUFDUVlRQmFoQ2ZBaUVHSUFJZ0FCRFVBallDNEFFZ0FDQUNRZUFCYWlBQ1FZUUJhaENmQWlFRElBSWdBQkNuQ1RZQzRBRWdBQ0FDUWVBQmFpQUNRWVFCYWhDZkFpRUJJQUlvQW9RQklRVWdBaUFCTmdMMEFTQUNRUU0yQXZBQklBSkJBallDL0FFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FrSENrUUkyQXV3QklBSWdBaWdDZERZQzZBRWdBaUFITmdMNEFTQUNJQUlwQS9nQk53TmdJQUFnQlVFQ2RFR2svUXhxS0FJQUlBSkI0QUJxRUpnQ0lRRWdBaWdDaEFFaEJTQUNJQU0yQXZRQklBSkJBellDOEFFZ0FrRUNOZ0tzQVNBQ0lBYzJBcWdCSUFJZ0Fpa0RxQUUzQTFnZ0FrSENrUUkyQXV3QklBSWdCRFlDNkFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FpQUFJQVZCQW5SQmpQME1haWdDQUNBQ1FkZ0FhaENZQWpZQ3NBRWdBaWdDaEFFaEJDQUNJQU0yQXB3QklBSkJBellDbUFFZ0FrRUNOZ0trQVNBQ1FjS1JBallDbEFFZ0FpQUdOZ0tRQVNBQ1FRVTJBb3dCSUFKQjB2Y0FOZ0tJQVNBQ0lBSkJpQUZxTmdLZ0FTQUNJQUlwQTZBQk53TlFJQUFnQkVFQ2RFR1kvUXhxS0FJQUlBSkIwQUJxRUpnQ0lRQWdBa0VDTmdLOEFTQUNJQUEyQXJRQklBSWdBa0d3QVdvMkFyZ0JJQUlnQWlrRHVBRTNBMGdnQWlBQ1FjQUJhaUFDUWNnQWFoQzFBaUlBUVFocU5nTFlBU0FDSUFBZ0FDZ0NDRWM2QU53QklBRkJoQUZxSUFKQjJBRnFFTVVKSUFBUXFnRU1Bd3NnQWtINEFHb1FvUkVNQVFzZ0FrSG9BR29Rb2hFTFFRQWhBUXNnQWtHQUFtb2tBQ0FCQzV3TUFRVi9Jd0JCZ0FKcklnSWtBQ0FDSUFFMkFuUWdBaUFBTmdKb0lBSWdBa0gwQUdvMkFtd0NRQUpBSUFGRkJFQWdBa0hvQUdvUXBCRU1BUXNnQVNnQ0JDSURRYkNwRWtZRVFDQUNJQUUyQXZRQklBSkJCVFlDOEFFZ0FrRUNOZ0tNQVNBQ1FaKzJCRFlDN0FFZ0FpQUJOZ0xvQVNBQ1FRVTJBdVFCSUFKQjB2Y0FOZ0xnQVNBQ0lBSkI0QUZxTmdLSUFTQUNJQUlwQTRnQk53TUlJQUJCRVNBQ1FRaHFFSmdDSVFFTUFnc2dBMEhRcUJKR0JFQWdBaUFCTmdMMEFTQUNRUVUyQXZBQklBSkJBallDakFFZ0FrR2Z0Z1EyQXV3QklBSWdBVFlDNkFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FpQUNRZUFCYWpZQ2lBRWdBaUFDS1FPSUFUY0RFQ0FBUVJBZ0FrRVFhaENZQWlFQkRBSUxJQU5COEo4U1JnUkFJQUlnQVRZQzlBRWdBa0VGTmdMd0FTQUNRUUkyQXZ3QklBSWdBa0hnQVdvaUJUWUMrQUVnQWlBQ0tRUDRBVGNETUNBQ1FaKzJCRFlDN0FFZ0FpQUJOZ0xvQVNBQ1FRVTJBdVFCSUFKQjB2Y0FOZ0xnQVNBQVFROGdBa0V3YWhDWUFpRUJJQUFRNUFFaEF5QUFFUFVGSVFRZ0FpQUROZ0wwQVNBQ1FRVTJBdkFCSUFKQkFqWUNyQUVnQWlBRk5nS29BU0FDSUFJcEE2Z0JOd01vSUFKQm43WUVOZ0xzQVNBQ0lBTTJBdWdCSUFKQkJUWUM1QUVnQWtIUzl3QTJBdUFCSUFJZ0FFRVJJQUpCS0dvUW1BSTJBckFCSUFJZ0JEWUNuQUVnQWtFRk5nS1lBU0FDUVFJMkFxUUJJQUpCbjdZRU5nS1VBU0FDSUFRMkFwQUJJQUpCQlRZQ2pBRWdBa0hTOXdBMkFvZ0JJQUlnQWtHSUFXbzJBcUFCSUFJZ0Fpa0RvQUUzQXlBZ0FFRVFJQUpCSUdvUW1BSWhBQ0FDUVFJMkFyd0JJQUlnQURZQ3RBRWdBaUFDUWJBQmFqWUN1QUVnQWlBQ0tRTzRBVGNER0NBQ0lBSkJ3QUZxSUFKQkdHb1F0UUlpQUVFSWFqWUMyQUVnQWlBQUlBQW9BZ2hIT2dEY0FTQUJRWVFCYWlBQ1FkZ0JhaERGQ1NBQUVLb0JEQUlMSUFNUWtRTUVRQ0FDSUFFb0Fod2lBellDaEFFZ0FTZ0NHQ0VFSUFJZ0FEWUNlQ0FDSUFKQjlBQnFOZ0o4SUFSRkJFQWdBa0g0QUdvUW94RU1BZ3NnQkNnQ0JDSUVRYkNwRWtZRVFDQUNJQUUyQXZRQklBSkJCVFlDOEFFZ0FrR2Z0Z1EyQXV3QklBSWdBVFlDNkFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FpQUNRZUFCYWpZQ2lBRWdBa0VDTmdLTUFTQUNJQUlwQTRnQk53TTRJQUFnQTBFQ2RFSG8vQXhxS0FJQUlBSkJPR29RbUFJaEFRd0RDeUFFUWRDb0VrWUVRQ0FDSUFFMkF2UUJJQUpCQlRZQzhBRWdBa0dmdGdRMkF1d0JJQUlnQVRZQzZBRWdBa0VGTmdMa0FTQUNRZEwzQURZQzRBRWdBaUFDUWVBQmFqWUNpQUVnQWtFQ05nS01BU0FDSUFJcEE0Z0JOd05BSUFBZ0EwRUNkRUgwL0F4cUtBSUFJQUpCUUdzUW1BSWhBUXdEQ3lBRVFmQ2ZFa1lFUUNBQ0lBQVE1QUUyQXVBQklBQWdBa0hnQVdvaUJpQUNRWVFCYWhDZkFpRURJQUlnQUJEMUJUWUM0QUVnQUNBQ1FlQUJhaUFDUVlRQmFoQ2ZBaUVFSUFJb0FvUUJJUVVnQWlBQk5nTDBBU0FDUVFVMkF2QUJJQUpCQWpZQy9BRWdBa0dmdGdRMkF1d0JJQUlnQVRZQzZBRWdBa0VGTmdMa0FTQUNRZEwzQURZQzRBRWdBaUFHTmdMNEFTQUNJQUlwQS9nQk53TmdJQUFnQlVFQ2RFR0EvUXhxS0FJQUlBSkI0QUJxRUpnQ0lRRWdBaWdDaEFFaEJTQUNJQU0yQXZRQklBSkJCVFlDOEFFZ0FrRUNOZ0tzQVNBQ0lBWTJBcWdCSUFJZ0Fpa0RxQUUzQTFnZ0FrR2Z0Z1EyQXV3QklBSWdBellDNkFFZ0FrRUZOZ0xrQVNBQ1FkTDNBRFlDNEFFZ0FpQUFJQVZCQW5SQjZQd01haWdDQUNBQ1FkZ0FhaENZQWpZQ3NBRWdBaWdDaEFFaEF5QUNJQVEyQXB3QklBSkJCVFlDbUFFZ0FrRUNOZ0trQVNBQ1FaKzJCRFlDbEFFZ0FpQUVOZ0tRQVNBQ1FRVTJBb3dCSUFKQjB2Y0FOZ0tJQVNBQ0lBSkJpQUZxTmdLZ0FTQUNJQUlwQTZBQk53TlFJQUFnQTBFQ2RFSDAvQXhxS0FJQUlBSkIwQUJxRUpnQ0lRQWdBa0VDTmdLOEFTQUNJQUEyQXJRQklBSWdBa0d3QVdvMkFyZ0JJQUlnQWlrRHVBRTNBMGdnQWlBQ1FjQUJhaUFDUWNnQWFoQzFBaUlBUVFocU5nTFlBU0FDSUFBZ0FDZ0NDRWM2QU53QklBRkJoQUZxSUFKQjJBRnFFTVVKSUFBUXFnRU1Bd3NnQWtINEFHb1FveEVNQVFzZ0FrSG9BR29RcEJFTFFRQWhBUXNnQWtHQUFtb2tBQ0FCQzAwQkFuOGpBRUVnYXlJQ0pBQkJDQkFWSVFNZ0FrRUJOZ0lRSUFJZ0FrRVlhallDRENBRElBRTJBZ0FnQXlBQUtBSUVOZ0lFSUFKQkFEWUNDQ0FDUVFocUVJc0JJQUpCSUdva0FDQURDeTBBSUFKRkJFQWdBQ2dDQkNBQktBSUVSZzhMSUFBZ0FVWUVRRUVCRHdzZ0FDZ0NCQ0FCS0FJRUVLSUNSUXMvQUNBQUxRQUxFUHNFQkVBZ0FDZ0NBQ0FBS0FJSUVQMEpFUHdKQ3lBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlJTmdJSUlBRkJBQkRBQlNBQlFRQVFtUUlMTkFFQmZ5TUFRUkJySWdVa0FDQUZRUWhxSUFRUXR3TWhCQ0FBSUFFZ0FpQURFTE1VSVFBZ0JCQzJBeUFGUVJCcUpBQWdBQXMrQVFGL0l3QkJFR3NpQlNRQUlBVWdCRFlDRENBRlFRaHFJQUlRdHdNaEFpQUFJQUVnQXlBRktBSU1FSnNLSVFBZ0FoQzJBeUFGUVJCcUpBQWdBQXNtQVFGL0FrQWdBVVVOQUNBQkVKTUlJZ0lOQUNBQUlBRkIyT2dQRU9FRVFRQWhBZ3NnQWdzSUFDQUFRZjhCY1F0L0FnSi9BWDRqQUVFUWF5SURKQUFnQUFKK0lBRkZCRUJDQUF3QkN5QURJQUVnQVVFZmRTSUNjeUFDYXlJQ3JVSUFJQUpuSWdKQjBRQnFFTXdDSUFNcEF3aENnSUNBZ0lDQXdBQ0ZRWjZBQVNBQ2E2MUNNSVo4SUFGQmdJQ0FnSGh4clVJZ2hvUWhCQ0FES1FNQUN6Y0RBQ0FBSUFRM0F3Z2dBMEVRYWlRQUM3UUJBUUYvQWtBQ1FBSkFBa0FnQVVVTkFDQUFJQUVRdWdFaUFVVU5BU0FCTHdFZVFSaEhEUUFnQUNBQktBSUFLQUlJRUxvQklnQkZEUUlnQUM4QkhrRVhSdzBESUFNZ0FTZ0NBQ0lCS0FJTU5nSUFJQUlnQUNnQ0FDSUFLQUlNTmdJQUlBUWdBU2dDQ0RZQ0FDQUZJQUFvQWdnMkFnQkJBU0VHQ3lBR0R3dEI0aTVCK0tzQ1Fic0lRYVRCQWhBQUFBdEJwUzlCK0tzQ1FjQUlRYVRCQWhBQUFBdEIxWklIUWZpckFrSERDRUdrd1FJUUFBQUxpUUVCQTM4akFFRkFhaUlDSkFBZ0FrRXdhaUFCTHdFZUVJRUJFQlFoQXlBQUlBRW9BamdvQWdBUW53RWhCQ0FDUVFocUlBTVFWQ0VBUVJBUUZTSUJRZkNPSURZQ0FDQUJJQUFwQWdBM0FnUWdBU0FBS0FJSU5nSU1JQUFRVlNBQ0lBRTJBaWdnQkVHZ0Eyb2dBa0VZYWlJQkVNMEJJQUVRRmlBQUVBOGFJQU1RRHhvZ0FrRkFheVFBQzRNQ0FRSi9Ba0FDUUFKQUlBRkZJQUpGY2cwQUlBQWdBUkM2QVNJQlJRMEJJQUV2QVI0aUJFRWJSZ1IvSUFBZ0FTZ0NBQ2dDQ0JDNkFTSUJSUTBESUFFdkFSNEZJQVFMUWYvL0EzRkJHVWNOQUNBQktBSUVJQUVvQWdBaUFHc2lBVUVDZFVFTGF5SURRWDVQQkVBZ0FpQUFLQUlJTmdJQUlBSWdBQ2dDRERZQ0JDQUNJQUFvQWhBMkFnZ2dBaUFBS0FJVU5nSU1JQUlnQUNnQ0dEWUNFQ0FDSUFBb0FodzJBaFFnQWlBQUtBSWdOZ0lZUWYvLy8vOEhJUVFnQWlBQlFTaFBCSDhnQUNnQ0pBVkIvLy8vL3djTE5nSWNDeUFEUVgxTElRTUxJQU1QQzBHcEwwSEdyd0pCNVFCQnljRUNFQUFBQzBHcEwwSEdyd0pCNlFCQnljRUNFQUFBQ3hFQUlBQkJGRUh0L3dOQmZFRURFTW9CQzFNQUlBQWdBU2dDQURZQ0FDQUFJQUVvQWdRMkFnUWdBQ0FCS0FJSU5nSUlJQUFnQVNnQ0REWUNEQ0FBUVJCcUlBRkJFR29RdlJZZ0FFRWthaUFCUVNScUVMVUlJQUJCOEFCcUlBRkI4QUJxRUxVSUN4SUFJQUJCQURZQ0VDQUFJQUFvQWd3UU5ndUFOUUVMZnlNQVFmQUhheUlDSkFBQ1FDQUFJQUVRandRaUF3MEFRUUFoQXlBQ1FRQTJBdWdISUFJZ0FDZ0NCQkN3QmlJRU5nTHNCeUFFUlEwQUlBQWdCQ0FCRU1NWEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFFb0FoQU9HeHdBQ3d3TkRnOEJFQkVTRXhRVkZnSURCQVVYR0FZSENCa0pDaG9MSUFJZ0FDZ0NCRFlDMEFjZ0FrRVVOZ0t3QnlBQ1FRQTJBdEFFSUFKQ0FEY0RpQVVnQWlBQ1FkQUhhaUFDUWJBSGFpQUNRZEFFYWlBQ1Fld0hhaUFDUVlnRmFoQ0NBallDNkFjTUhBc2dBaUFBS0FJRU5nTFFCeUFDUVJvMkFyQUhJQUpCQURZQzBBUWdBa0lBTndPSUJTQUNJQUpCMEFkcUlBSkJzQWRxSUFKQjBBUnFJQUpCN0FkcUlBSkJpQVZxRUlJQ05nTG9Cd3diQ3lBQ0lBQW9BZ1EyQXRBSElBSkJJallDc0FjZ0FrRUFOZ0xRQkNBQ1FnQTNBNGdGSUFJZ0FrSFFCMm9nQWtHd0Iyb2dBa0hRQkdvZ0FrSHNCMm9nQWtHSUJXb1FnZ0kyQXVnSERCb0xJQUlnQUNnQ0JEWUMwQWNnQWtFak5nS3dCeUFDUVFBMkF0QUVJQUpDQURjRGlBVWdBaUFDUWRBSGFpQUNRYkFIYWlBQ1FkQUVhaUFDUWV3SGFpQUNRWWdGYWhDQ0FqWUM2QWNNR1FzZ0FpQUFLQUlFTmdMUUJ5QUNRU1EyQXJBSElBSkJBRFlDMEFRZ0FrSUFOd09JQlNBQ0lBSkIwQWRxSUFKQnNBZHFJQUpCMEFScUlBSkI3QWRxSUFKQmlBVnFFSUlDTmdMb0J3d1lDeUFDSUFBb0FnUTJBdEFISUFKQkpUWUNzQWNnQWtFQU5nTFFCQ0FDUWdBM0E0Z0ZJQUlnQWtIUUIyb2dBa0d3QjJvZ0FrSFFCR29nQWtIc0Iyb2dBa0dJQldvUWdnSTJBdWdIREJjTElBSWdBQ2dDQkRZQzBBY2dBa0hDQWpZQ3NBY2dBa0VBTmdMUUJDQUNRZ0EzQTRnRklBSWdBa0hRQjJvZ0FrR3dCMm9nQWtIUUJHb2dBa0hzQjJvZ0FrR0lCV29RZ2dJMkF1Z0hEQllMSUFJZ0FDZ0NCRFlDMEFjZ0FrSEhBallDc0FjZ0FrRUFOZ0xRQkNBQ1FnQTNBNGdGSUFJZ0FrSFFCMm9nQWtHd0Iyb2dBa0hRQkdvZ0FrSHNCMm9nQWtHSUJXb1FnZ0kyQXVnSERCVUxJQUlnQUNnQ0JEWUMwQWNnQWtIZEtUWUNzQWNnQWtFQU5nTFFCQ0FDUWdBM0E0Z0ZJQUlnQWtIUUIyb2dBa0d3QjJvZ0FrSFFCR29nQWtIc0Iyb2dBa0dJQldvUWdnSTJBdWdIREJRTElBSWdBQ2dDQkRZQzBBY2dBa0g0SWpZQ3NBY2dBa0VBTmdMUUJDQUNRZ0EzQTRnRklBSWdBa0hRQjJvZ0FrR3dCMm9nQWtIUUJHb2dBa0hzQjJvZ0FrR0lCV29RZ2dJMkF1Z0hEQk1MSUFJZ0FDZ0NCRFlDMEFjZ0FrR2hLVFlDc0FjZ0FrRUFOZ0xRQkNBQ1FnQTNBNGdGSUFJZ0FrSFFCMm9nQWtHd0Iyb2dBa0hRQkdvZ0FrSHNCMm9nQWtHSUJXb1FnZ0kyQXVnSERCSUxJQUlnQUNnQ0JEWUNxQVFnQWtFVk5nS0FCQ0FDUVFBMkF0Z0RJQUVnQVNnQ0FDZ0NLQkVBQUNnQ0ZDRURJQUpCQVRZQ3pBY2dBaUFETmdLd0F5QUNJQUpCc0FOcU5nTElCeUFDSUFJcEE4Z0hOd01JSUFKQjBBZHFJQUpCQ0dvUXF3RWhCQ0FDUVFZMkFvZ0ZJQUpCaUFWcUlnTkJCSElnQkJDbUFSb2dBU0FCS0FJQUtBSW9FUUFBTFFBWUlRVWdBa0VCTmdLc0J5QUNJQVUyQW9nRElBSWdBa0dJQTJvMkFxZ0hJQUlnQWlrRHFBYzNBd0FnQWtHd0Iyb2dBaENyQVNFRklBSkJCallDcEFVZ0FrR29CV29nQlJDbUFSb2dBa0VDTmdMVUJDQUNJQU0yQXRBRUlBSWdBa0dvQkdvZ0FrR0FCR29nQWtIWUEyb2dBa0hzQjJvZ0FrSFFCR29RZ2dJMkF1Z0hJQUpCd0FWcUlRTURRQ0FEUVJockVHMGFJQU5CSEdzaUF5QUNRWWdGYWtjTkFBc2dCUkJ0R2lBRUVHMGFEQkVMSUFJZ0FDZ0NCRFlDMEFRZ0FrRVdOZ0tvQkNBQ1FRQTJBb0FFSUFFZ0FTZ0NBQ2dDTUJFQUFDZ0NGQ0VESUFKQkFUWUNwQWNnQWlBRE5nTFlBeUFDSUFKQjJBTnFOZ0tnQnlBQ0lBSXBBNkFITndNUUlBSkIwQWRxSUFKQkVHb1Fxd0VoQXlBQ1FRWTJBb2dGSUFKQmlBVnFJZ1JCQkhJaUJTQURFS1lCR2lBQ1FRRTJBclFISUFJZ0JEWUNzQWNnQWlBQ1FkQUVhaUFDUWFnRWFpQUNRWUFFYWlBQ1Fld0hhaUFDUWJBSGFoQ0NBallDNkFjZ0JSQnRHaUFERUcwYURCQUxJQUFnQVNBQktBSUFLQUk0RVFBQUtBSVVFSzBESWdSRkRSQWdBaUFBS0FJRU5nS29CQ0FDUVJjMkFvQUVJQUpCQVRZQ25BY2dBa0VBTmdMWUF5QUNJQUpCc0FOcU5nS1lCeUFDSUFJcEE1Z0hOd01nSUFJZ0JEWUNzQU1nQWtIUUIyb2dBa0VnYWhDckFTRUVJQUpCQVRZQ2lBVWdBa0dJQldvaUEwRUVjaUFFRUtZQkdpQUJJQUVvQWdBb0FqZ1JBQUFvQWhnaEJTQUNRUUUyQXBRSElBSWdCVFlDaUFNZ0FpQUNRWWdEYWpZQ2tBY2dBaUFDS1FPUUJ6Y0RHQ0FDUWJBSGFpQUNRUmhxRUtzQklRVWdBa0VHTmdLa0JTQUNRYWdGYWlBRkVLWUJHaUFDUVFJMkF0UUVJQUlnQXpZQzBBUWdBaUFDUWFnRWFpQUNRWUFFYWlBQ1FkZ0RhaUFDUWV3SGFpQUNRZEFFYWhDQ0FqWUM2QWNnQWtIQUJXb2hBd05BSUFOQkdHc1FiUm9nQTBFY2F5SURJQUpCaUFWcVJ3MEFDeUFGRUcwYUlBUVFiUm9NRHdzZ0FDQUJJQUVvQWdBb0FrQVJBQUFvQWhRUXJRTWlCRVVORHlBQ0lBQW9BZ1EyQXFnRUlBSkJHRFlDZ0FRZ0FrRUJOZ0tNQnlBQ1FRQTJBdGdESUFJZ0FrR3dBMm8yQW9nSElBSWdBaWtEaUFjM0F6QWdBaUFFTmdLd0F5QUNRZEFIYWlBQ1FUQnFFS3NCSVFRZ0FrRUJOZ0tJQlNBQ1FZZ0ZhaUlEUVFSeUlBUVFwZ0VhSUFFZ0FTZ0NBQ2dDUUJFQUFDZ0NHQ0VGSUFKQkFUWUNoQWNnQWlBRk5nS0lBeUFDSUFKQmlBTnFOZ0tBQnlBQ0lBSXBBNEFITndNb0lBSkJzQWRxSUFKQktHb1Fxd0VoQlNBQ1FRWTJBcVFGSUFKQnFBVnFJQVVRcGdFYUlBSkJBallDMUFRZ0FpQUROZ0xRQkNBQ0lBSkJxQVJxSUFKQmdBUnFJQUpCMkFOcUlBSkI3QWRxSUFKQjBBUnFFSUlDTmdMb0J5QUNRY0FGYWlFREEwQWdBMEVZYXhCdEdpQURRUnhySWdNZ0FrR0lCV3BIRFFBTElBVVFiUm9nQkJCdEdnd09DeUFBSUFFZ0FTZ0NBQ2dDU0JFQUFDSUVLQUlVRUswRElnVkZEUTRnQWlBQUtBSUVOZ0w4QmlBQ1FSazJBdmdHSUFKQkFUWUNoQVVnQWtFQU5nTDBCaUFDSUFKQi9BUnFOZ0tBQlNBQ0lBSXBBNEFGTndOd0lBSWdCVFlDL0FRZ0FrSFFCMm9nQWtId0FHb1Fxd0VoQlNBQ1FRRTJBb2dGSUFKQmlBVnFJZ05CQkhJZ0JSQ21BUm9nQkNnQ0dDRUdJQUpCQVRZQzlBUWdBaUFHTmdMc0JDQUNJQUpCN0FScU5nTHdCQ0FDSUFJcEEvQUVOd05vSUFKQnNBZHFJQUpCNkFCcUVLc0JJUVlnQWtFUk5nS2tCU0FDUWFnRmFpQUdFS1lCR2lBRUtBSWNJUWNnQWtFQk5nTE1CQ0FDSUFjMkFzUUVJQUlnQWtIRUJHbzJBc2dFSUFJZ0Fpa0R5QVEzQTJBZ0FrSFFCR29nQWtIZ0FHb1Fxd0VoQnlBQ1FRWTJBc0FGSUFKQnhBVnFJQWNRcGdFYUlBUXRBQ0FoQ0NBQ1FRRTJBcVFFSUFJZ0NEWUNuQVFnQWlBQ1Fad0VhallDb0FRZ0FpQUNLUU9nQkRjRFdDQUNRYWdFYWlBQ1FkZ0FhaENyQVNFSUlBSkJCallDM0FVZ0FrSGdCV29nQ0JDbUFSb2dCQzBBSVNFSklBSkJBVFlDL0FNZ0FpQUpOZ0wwQXlBQ0lBSkI5QU5xTmdMNEF5QUNJQUlwQS9nRE53TlFJQUpCZ0FScUlBSkIwQUJxRUtzQklRa2dBa0VHTmdMNEJTQUNRZndGYWlBSkVLWUJHaUFFS0FJa0lRb2dBa0VCTmdMVUF5QUNJQW8yQXN3RElBSWdBa0hNQTJvMkF0QURJQUlnQWlrRDBBTTNBMGdnQWtIWUEyb2dBa0hJQUdvUXF3RWhDaUFDUVFZMkFwUUdJQUpCbUFacUlBb1FwZ0VhSUFRb0FpZ2hDeUFDUVFFMkFxd0RJQUlnQ3pZQ3BBTWdBaUFDUWFRRGFqWUNxQU1nQWlBQ0tRT29BemNEUUNBQ1FiQURhaUFDUVVCckVLc0JJUXNnQWtFVU5nS3dCaUFDUWJRR2FpQUxFS1lCR2lBRUtBSXNJUVFnQWtFQk5nS0VBeUFDSUFRMkF2d0NJQUlnQWtIOEFtbzJBb0FESUFJZ0Fpa0RnQU0zQXpnZ0FrR0lBMm9nQWtFNGFoQ3JBU0VFSUFKQkdUWUN6QVlnQWtIUUJtb2dCQkNtQVJvZ0FrRUlOZ0xzQmlBQ0lBTTJBdWdHSUFKQi9BWnFJQUpCK0FacUlBSkI5QVpxSUFKQjdBZHFJQUpCNkFacUVJSUNJUXdnQWlnQzZBY2hBeUFDSUF3MkF1Z0hJQU1FUUNBRElBTW9BZ0FvQWdRUkF3QUxJQUpCNkFacUlRTURRQ0FEUVJockVHMGFJQU5CSEdzaUF5QUNRWWdGYWtjTkFBc2dCQkJ0R2lBTEVHMGFJQW9RYlJvZ0NSQnRHaUFJRUcwYUlBY1FiUm9nQmhCdEdpQUZFRzBhREEwTElBQWdBU0FCS0FJQUtBSllFUUFBS0FJVUVLMERJZ1JGRFEwZ0FpQUFLQUlFTmdMUUJDQUNRUnMyQXFnRUlBSkJBVFlDOUFJZ0FrRUFOZ0tBQkNBQ0lBSkIyQU5xTmdMd0FpQUNJQUlwQS9BQ053TjRJQUlnQkRZQzJBTWdBa0hRQjJvZ0FrSDRBR29RcXdFaEF5QUNRUUUyQW9nRklBSkJpQVZxSWdSQkJISWlCU0FERUtZQkdpQUNRUUUyQXJRSElBSWdCRFlDc0FjZ0FpQUNRZEFFYWlBQ1FhZ0VhaUFDUVlBRWFpQUNRZXdIYWlBQ1FiQUhhaENDQWpZQzZBY2dCUkJ0R2lBREVHMGFEQXdMSUFBZ0FTQUJLQUlBS0FKZ0VRQUFLQUlVRUswRElnUkZEUXdnQWlBQUtBSUVOZ0tvQkNBQ1FSdzJBb0FFSUFKQkFUWUM3QUlnQWtFQU5nTFlBeUFDSUFKQnNBTnFOZ0xvQWlBQ0lBSXBBK2dDTndPSUFTQUNJQVEyQXJBRElBSkIwQWRxSUFKQmlBRnFFS3NCSVFRZ0FrRUJOZ0tJQlNBQ1FZZ0ZhaUlEUVFSeUlBUVFwZ0VhSUFFZ0FTZ0NBQ2dDWUJFQUFDZ0NHQ0VGSUFKQkFUWUM1QUlnQWlBRk5nS0lBeUFDSUFKQmlBTnFOZ0xnQWlBQ0lBSXBBK0FDTndPQUFTQUNRYkFIYWlBQ1FZQUJhaENyQVNFRklBSkJBVFlDcEFVZ0FrR29CV29nQlJDbUFSb2dBa0VDTmdMVUJDQUNJQU0yQXRBRUlBSWdBa0dvQkdvZ0FrR0FCR29nQWtIWUEyb2dBa0hzQjJvZ0FrSFFCR29RZ2dJMkF1Z0hJQUpCd0FWcUlRTURRQ0FEUVJockVHMGFJQU5CSEdzaUF5QUNRWWdGYWtjTkFBc2dCUkJ0R2lBRUVHMGFEQXNMSUFBZ0FTQUJLQUlBS0FKb0VRQUFLQUlVRUswRElnUkZEUXNnQWlBQUtBSUVOZ0xRQkNBQ1FSMDJBcWdFSUFKQkFUWUMzQUlnQWtFQU5nS0FCQ0FDSUFKQjJBTnFOZ0xZQWlBQ0lBSXBBOWdDTndPUUFTQUNJQVEyQXRnRElBSkIwQWRxSUFKQmtBRnFFS3NCSVFNZ0FrRUJOZ0tJQlNBQ1FZZ0ZhaUlFUVFSeUlnVWdBeENtQVJvZ0FrRUJOZ0swQnlBQ0lBUTJBckFISUFJZ0FrSFFCR29nQWtHb0JHb2dBa0dBQkdvZ0FrSHNCMm9nQWtHd0Iyb1FnZ0kyQXVnSElBVVFiUm9nQXhCdEdnd0tDeUFDUVFBMkFyZ0hJQUpDQURjRHNBY2dBU0FCS0FJQUtBSndFUUFBSWdRb0FoUWhBeUFFS0FJWUlRVWdBa0dJQldwQkJISWhCZ05BSUFNZ0JVY0VRQ0FBSUFNb0FnQVFyUU1pQkVVTkNTQUNRUUUyQXRRQ0lBSWdCRFlDMEFRZ0FpQUNRZEFFYWpZQzBBSWdBaUFDS1FQUUFqY0RtQUVnQWtIUUIyb2dBa0dZQVdvUXF3RWhCQ0FDUVFFMkFvZ0ZJQVlnQkJDbUFTRUhJQUpCc0FkcUlBSkJpQVZxRUs0R0lBY1FiUm9nQkJCdEdpQURRUVJxSVFNTUFRc0xJQUlnQUNnQ0JEWUNpQVVnQWtFZU5nTFFCeUFDUVFBMkF0QUVJQUlnQWtHSUJXb2dBa0hRQjJvZ0FrSFFCR29nQWtIc0Iyb2dBa0d3QjJvaUF4Q2REallDNkFjZ0F4RGFCUXdKQ3lBQklBRW9BZ0FvQW5nUkFBQkJGR29oQlNBQ1FiQUhhaUlHUVFBMkFnZ2dCa0lBTndJQUl3QkJFR3NpQXlRQUlBTkJBRFlDRENBRktBSUVJQVV0QUFzaUJDQUVRUmgwUVJoMVFRQklHeUVJUVFBaEJBTkFJQVFnQ0VzRVFDQUlRUUZxUVFOeEJFQWdCaUFEUVF4cUVONENDeUFEUVJCcUpBQUZJQU1nQkNBSVNRUi9JQVVvQWdBZ0JTQUZMQUFMUVFCSUd5QUVhaTBBQUFWQkFBc2dCRUVEY1NJS1FRTjBkQ0FIY2lJSE5nSU1JQXBCQTBZRVFDQUdJQU5CREdvUTNnSWdBMEVBTmdJTVFRQWhCd3NnQkVFQmFpRUVEQUVMQ3lBQ0lBQW9BZ1EyQXFnRUlBSkJIellDZ0FRZ0FrRUFOZ0xZQXlNQVFSQnJJZ1FrQUNBQ1FkQUhhaUlEUVFBMkFoUWdBMEVBTmdJRUlBTWdBMEVNYWlJRk5nSUlJQU5CaE9FU05nSUFBa0FnQmlnQ0JDQUdLQUlBSWdkcklnaEJDVThFUUNBR0VJWVlJUVVnQkVFQU5nSUlJQU5CRkdvZ0JSQ05CU0FFUVFocUVMc0dEQUVMSUFNZ0NFRUNkU0lJTmdJRUEwQWdDQ0FKUmcwQklBVWdDVUVDZENJS2FpQUhJQXBxS0FJQU5nSUFJQWxCQVdvaENRd0FDd0FMSUFSQkVHb2tBQ0FDUVFvMkFvZ0ZJQUpCaUFWcUlnUkJCSElpQlNBREVLWUJHaUFDUVFFMkF0UUVJQUlnQkRZQzBBUWdBaUFDUWFnRWFpQUNRWUFFYWlBQ1FkZ0RhaUFDUWV3SGFpQUNRZEFFYWhDQ0FqWUM2QWNnQlJCdEdpQURFRzBhSUFZUU1ob01DQXNnQUNBQklBRW9BZ0FvQW9BQkVRQUFJZ1FvQWhRUXJRTWlCVVVOQ0NBQ0lBQW9BZ1EyQXFnRUlBSkJJRFlDZ0FRZ0FrRUFOZ0xZQXlBRUtBSVlJUU1nQWtFQk5nTE1BaUFDSUFNMkFyQURJQUlnQWtHd0EybzJBc2dDSUFJZ0Fpa0R5QUkzQTZnQklBSkIwQWRxSUFKQnFBRnFFS3NCSVFRZ0FrRVFOZ0tJQlNBQ1FZZ0ZhaUlEUVFSeUlBUVFwZ0VhSUFKQkFUWUN4QUlnQWlBRk5nS0lBeUFDSUFKQmlBTnFOZ0xBQWlBQ0lBSXBBOEFDTndPZ0FTQUNRYkFIYWlBQ1FhQUJhaENyQVNFRklBSkJBVFlDcEFVZ0FrR29CV29nQlJDbUFSb2dBa0VDTmdMVUJDQUNJQU0yQXRBRUlBSWdBa0dvQkdvZ0FrR0FCR29nQWtIWUEyb2dBa0hzQjJvZ0FrSFFCR29RZ2dJMkF1Z0hJQUpCd0FWcUlRTURRQ0FEUVJockVHMGFJQU5CSEdzaUF5QUNRWWdGYWtjTkFBc2dCUkJ0R2lBRUVHMGFEQWNMSUFKQkFEWUN1QWNnQWtJQU53T3dCd0pBSUFBZ0FTQUJLQUlBS0FLSUFSRUFBQ0lFS0FJVUVLMERJZ1ZGRFFBZ0FrRUJOZ0s4QWlBQ0lBVTJBdEFFSUFJZ0FrSFFCR28yQXJnQ0lBSWdBaWtEdUFJM0E3Z0JJQUpCMEFkcUlBSkJ1QUZxRUtzQklRVWdBa0VCTmdLSUJTQUNRWWdGYWlJR1FRUnlJZ2NnQlJDbUFTRUlJQUpCc0FkcUlBWVFyZ1lnQ0JCdEdpQUZFRzBhSUFRb0Fod2hCaUFFS0FJWUlRUURRQ0FFSUFaSEJFQWdBQ0FFS0FJQUVLMERJZ1ZGRFFJZ0FrRUJOZ0swQWlBQ0lBVTJBdEFFSUFJZ0FrSFFCR28yQXJBQ0lBSWdBaWtEc0FJM0E3QUJJQUpCMEFkcUlBSkJzQUZxRUtzQklRVWdBa0VCTmdLSUJTQUhJQVVRcGdFaENDQUNRYkFIYWlBQ1FZZ0ZhaEN1QmlBSUVHMGFJQVVRYlJvZ0JFRUVhaUVFREFFTEN5QUNJQUFvQWdRMkFvZ0ZJQUpCSVRZQzBBY2dBa0VBTmdMUUJDQUNJQUpCaUFWcUlBSkIwQWRxSUFKQjBBUnFJQUpCN0FkcUlBSkJzQWRxSWdNUW5RNDJBdWdISUFNUTJnVU1Cd3NnQWtHd0Iyb1EyZ1VNQndzZ0FpQUFLQUlFTmdMUUJDQUNRU1kyQXFnRUlBSkJBRFlDZ0FRZ0FTQUJLQUlBS0FLd0FSRUFBQ2dDRkNFRElBSkJBVFlDckFJZ0FpQUROZ0xZQXlBQ0lBSkIyQU5xTmdLb0FpQUNJQUlwQTZnQ053UEFBU0FDUWRBSGFpQUNRY0FCYWhDckFTRURJQUpCR1RZQ2lBVWdBa0dJQldvaUJFRUVjaUlGSUFNUXBnRWFJQUpCQVRZQ3RBY2dBaUFFTmdLd0J5QUNJQUpCMEFScUlBSkJxQVJxSUFKQmdBUnFJQUpCN0FkcUlBSkJzQWRxRUlJQ05nTG9CeUFGRUcwYUlBTVFiUm9NQlFzZ0FpQUFLQUlFTmdLb0JDQUNRU2MyQW9BRUlBSkJBRFlDMkFNZ0FrRUFOZ0t3QXlBQklBRW9BZ0FvQXJnQkVRQUFLQUlVSVFNZ0FrRUJOZ0trQWlBQ0lBTTJBb2dESUFJZ0FrR0lBMm8yQXFBQ0lBSWdBaWtEb0FJM0E5QUJJQUpCMEFkcUlBSkIwQUZxRUtzQklRUWdBa0VCTmdLSUJTQUNRWWdGYWlJRFFRUnlJQVFRcGdFYUlBRWdBU2dDQUNnQ3VBRVJBQUFvQWhnaEJTQUNRUUUyQXB3Q0lBSWdCVFlDNkFZZ0FpQUNRZWdHYWpZQ21BSWdBaUFDS1FPWUFqY0R5QUVnQWtHd0Iyb2dBa0hJQVdvUXF3RWhCU0FDUVJBMkFxUUZJQUpCcUFWcUlBVVFwZ0VhSUFKQkFqWUMxQVFnQWlBRE5nTFFCQ0FDSUFKQnFBUnFJQUpCZ0FScUlBSkIyQU5xSUFKQnNBTnFJQUpCMEFScUVJSUNOZ0xvQnlBQ1FjQUZhaUVEQTBBZ0EwRVlheEJ0R2lBRFFSeHJJZ01nQWtHSUJXcEhEUUFMSUFVUWJSb2dCQkJ0R2d3RUN5QUFJQUVnQVNnQ0FDZ0MyQUVSQUFBaUJDZ0NGQkN0QXlJRlJRMEVJQUlnQUNnQ0JEWUMyQU1nQWtIdUtUWUNzQU1nQWtFQk5nS1VBaUFDUVFBMkFvZ0RJQUlnQWtIb0JtbzJBcEFDSUFJZ0Fpa0RrQUkzQS9BQklBSWdCVFlDNkFZZ0FrSFFCMm9nQWtId0FXb1Fxd0VoQlNBQ1FRRTJBb2dGSUFKQmlBVnFJZ05CQkhJZ0JSQ21BUm9nQkNnQ0dDRUdJQUpCQVRZQ2pBSWdBaUFHTmdMOEJpQUNJQUpCL0FacU5nS0lBaUFDSUFJcEE0Z0NOd1BvQVNBQ1FiQUhhaUFDUWVnQmFoQ3JBU0VHSUFKQkJUWUNwQVVnQWtHb0JXb2dCaENtQVJvZ0JDZ0NIQ0VISUFKQkFUWUNoQUlnQWlBSE5nTDRCaUFDSUFKQitBWnFOZ0tBQWlBQ0lBSXBBNEFDTndQZ0FTQUNRZEFFYWlBQ1FlQUJhaENyQVNFSElBSkJBVFlDd0FVZ0FrSEVCV29nQnhDbUFSb2dCQ2dDSUNFRUlBSkJBVFlDL0FFZ0FpQUVOZ0wwQmlBQ0lBSkI5QVpxTmdMNEFTQUNJQUlwQS9nQk53UFlBU0FDUWFnRWFpQUNRZGdCYWhDckFTRUVJQUpCQVRZQzNBVWdBa0hnQldvZ0JCQ21BUm9nQWtFRU5nS0VCQ0FDSUFNMkFvQUVJQUlnQWtIWUEyb2dBa0d3QTJvZ0FrR0lBMm9nQWtIc0Iyb2dBa0dBQkdvUWdnSTJBdWdISUFKQitBVnFJUU1EUUNBRFFSaHJFRzBhSUFOQkhHc2lBeUFDUVlnRmFrY05BQXNnQkJCdEdpQUhFRzBhSUFZUWJSb2dCUkJ0R2d3REMwSHJwd2xCeHFVQ1Fhc0RRWVRPQWhBQUFBc2dBa0d3QjJvUTJnVkJBQ0VEREFJTElBSWdBQ2dDQkRZQzBBY2dBa0VUTmdLd0J5QUNRUUEyQXRBRUlBSkNBRGNEaUFVZ0FpQUNRZEFIYWlBQ1FiQUhhaUFDUWRBRWFpQUNRZXdIYWlBQ1FZZ0ZhaENDQWpZQzZBY0xJQUFvQWdRZ0FrSG9CMm9Rd2hjZ0FDZ0NCQ0lES0FJWUtBTFVCU0VFSUFNdEFHeEJBWEVFUUNBREVNQUdJQVFRMmdvTElBSW9BdXdISVFVakFFRWdheUlFSkFBZ0FTZ0NDQ0VHSUFFb0FnUWhBd05BSUFNZ0JrWUVRQUpBSUFFZ0FTZ0NBQ2dDY0JFQUFDSUJSUTBBSUFGQkpHb2hCaUFFUVJCcVFRUnlJUWNnQVNnQ0lDRUJBMEFnQVNBR1JnMEJJQVJCRUdvZ0FVRVFhaENjRGlnQ0FDRUlJQVFvQWhnaENTQUVLQUlVSVFNRFFDQURJQWxHQkVBZ0J4Q2tBaUFCRUV3aEFRd0NCU0FBSUFVZ0JDQURFTEFCSWdwQkFTQUlFTUVYSUFvUU1ob2dBMEVNYWlFRERBRUxBQXNBQ3dBTElBUkJJR29rQUFVZ0FDQUZJQVJCRUdvZ0F4Q3dBU0lIUVFCQkFCREJGeUFIRURJYUlBTkJER29oQXd3QkN3c2dBaWdDNkFjaEFDQUNRUUEyQXVnSElBSW9BdXdISVFNZ0FFVU5BQ0FBSUFBb0FnQW9BZ1FSQXdBTElBSkI4QWRxSkFBZ0F3dlZCQUVCZnlNQVFVQnFJZ0lrQUNBQ0lBQTJBandnQWlBQk5nSTRJQUlnQWlnQ09DSUFLUUlJTndNd0lBSWdBQ2tDQURjREtDQUNLQUk0S0FJUUJFQWdBaWdDUENBQ0tBSTRLQUlRRU1VT1FkWHFCaERvQ2hvTElBSW9BaWdFUUNBQ0tBSThJQUpCS0dvUXN4aEIxZW9HRU9nS0dpQUNLQUlzQkVBZ0FpZ0NQQ0FDUVN4cUVMTVlHZ3NnQWlnQ09DZ0NFQVJBSUFJb0Fqd1EwQWdRMEFnYUlBSWdBaWdDUERZQ0lDQUNJQUlvQWlnMkFod0RRQ0FDS0FJY0lBSW9BakJOQkVBZ0FpZ0NIQ0FDS0FJNEtBSVFRUmhxRU1zSFFRRnFTUVJBSUFJZ0FpZ0NPQ2dDRUVFWWFpQUNLQUljUVFGckVNWU9FTGdCTmdJWUlBSW9BandoQVNBQ0lBSW9BamdvQWhCQkdHb2dBaWdDSEVFQmF4REdEaWtDQURjREVDQUNJQUlwQXhBM0F3QWpBRUVRYXlJQUpBQWdBQ0FCTmdJTUlBQW9BZ3dnQWhDMkJCb2dBRUVRYWlRQUlBSW9BandRMEFnYUFrQUNRQ0FDS0FJY0lBSW9BaWhIRFFBZ0FpZ0NIQ0FDS0FJd1J3MEFJQUpCSUdvaUFFRWdJQUlvQWl4QkFXc1F5UWNnQWlBQ0tBSTBJQUlvQWl4ck5nSU1JQUpCQVRZQ0NDQUFRZDRBSUFKQkRHb2dBa0VJYWhDSkJTZ0NBQkRKQnd3QkN3SkFJQUlvQWh3Z0FpZ0NLRVlFUUNBQ1FTQnFJZ0JCSUNBQ0tBSXNRUUZyRU1rSElBQkIzZ0FnQWlnQ0dDQUNLQUlzUVFGcmF4REpCd3dCQ3dKQUlBSW9BaHdnQWlnQ01FWUVRQ0FDUVNCcVFkNEFJQUlvQWpSQkFXc1F5UWNNQVFzZ0FrRWdha0hlQUNBQ0tBSVlFTWtIQ3dzTElBSW9BandRMEFnYUN5QUNJQUlvQWh4QkFXbzJBaHdNQVFzTEN3c2dBaWdDUEJvZ0FrRkFheVFBQ3d3QUl3QkJFR3NnQURZQ0RBc1VBQ0FBS0FJRVFRaHFJQUVvQWdBUURob2dBQXM0QUNNQVFSQnJJZ0FrQUNBQktBSUFJUUVnQUVFQU9nQU1JQUFnQVRZQ0NDQUFRUWhxSUFJUWx3a2hBU0FBUVJCcUpBQWdBVUVCY3d0TUFRRi9JQUFvQWd3aUFpQUFLQUlRVHdSQUlBQWdBQ2dDRUNJQ1FRRjBRUUlnQWhzUXR3Y2dBQ2dDRENFQ0N5QUFJQUpCQVdvMkFnd2dBQ2dDQ0NBQ1FRSjBhaUFCS0FJQU5nSUFDMmtCQTM4akFFRVFheUlFSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlETmdJTUlBUWdBellDQ0NBQVFZd0JhaUlERUw4QklnVWdBQ2dDQ0NBRUtBSUlJQUVnQWlnQ0FCQ1VFUm9nQXlBRkVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFVaEFDQUVRUkJxSkFBZ0FBc1RBQ0FBUlFSQVFRQVBDeUFBS0FJRUVKRURDMk1CQTM4akFFSFFBV3NpQkNRQUlBUkJFR29pQlNBQUtBSUVJZ1lvQWdCQmNpQUFLQUlJRUJBZ0JDQUdLQUlBSUFNUU55QUZJQVFRRWhvZ0JTQUNFQTRhSUFVZ0FSQVNHaUFFS0FMTUFTRUFJQVFRRHhvZ0JSQVJJQVJCMEFGcUpBQWdBQXNTQUNBQUtBSUFJZ0FFUUNBQUVMUVVHZ3NMRGdBZ0FDQUJFTFFVTmdJQUlBQUxDZ0JCNUx3REVKWU1BQXNTQUNBQ0JFQWdBQ0FCSUFJUWZSb0xJQUFMQ2dBZ0FFRXdhMEVLU1F1bEFRRURmeU1BUVJCcklnUWtBQ0FDSUFBUTNnRWlBMEVFYWlFRklBTW9BZ0FoQXdKL0EwQWdBeUFGUndSQVFRRWdBU0FES0FJUVJnMENHaUFERUV3aEF3d0JDd3RCQUNBQ0lBQVFJQzhCSGtFZVJ3MEFHaUFFSUFBZ0FoQ0tGaUFFS0FJRUlRVWdCQ2dDQUNFREEwQWdCU0FESWdCSEJFQWdBRUVFYWlFRElBQW9BZ0FnQVNBQ0VMc0RSUTBCQ3dzZ0JCQXlHaUFBSUFWSEN5RURJQVJCRUdva0FDQURDejhBSUFCQndBSnFFQjRnQUVHQUFtb1E3aHNnQUVIY0FXb1EvQThnQUVHOEFXb1F5Z1FnQUVHZ0FXb1F5Z1FnQUVHRUFXb1F5Z1FnQUVFSWFoRGREd3UvQWdFQ2Z5TUFRZUFCYXlJRUpBQWdBaThCSGlFRkFrQWdBU2dDRUNJQlFYOUhCRUFnQlVFZVJ3UkFJQVJCSUdvaUF5QUFRWElnQWhBUUlBUkJFR29pQUNBQ0VPRURJQU1nQUJBU0dpQURRWS90QnhBT0dpQUVLQUxjQVNFQklBQVFEeG9nQXhBUkRBSUxJQU1nQWlnQ0FDQUJRUUowYWlnQ0NEWUNBRUVBSVFFTUFRc2dCVUVlUmdSQUlBUkJJR29pQXlBQVFYSWdBaEFRSUFSQkVHb2lBQ0FDRU9FRElBTWdBQkFTR2lBRFFmM3RCeEFPR2lBRUtBTGNBU0VCSUFBUUR4b2dBeEFSREFFTElBVVFvd0lFUUNBRElBSW9BaVEyQWdCQkFDRUJEQUVMUVFBaEFTQUFJQUlvQWlRZ0F5QUVRUXhxRUlnQ0RRQWdCRUVnYWlJRElBQkJjaUFDRUJBZ0JFRVFhaUlBSUFJUTRRTWdBeUFBRUJJYUlBTkJ6YXNIRUE0YUlBUW9BdHdCSVFFZ0FCQVBHaUFERUJFTElBUkI0QUZxSkFBZ0FRdWhBUUVEZnlNQVFmQUJheUlESkFBZ0EwRXdhaUlFSUFFb0FnQkJkaUFCS0FJSUVCQWdBMEVnYWlJRklBRW9BZ0FnQWhBM0lBUWdCUkFTR2lBRFFSQnFJZ0lnQVNnQ0FDQUJLQUlFRUw4RElBUWdBaEFTR2lBRVFkTEVDeEFPR2lBRElBRW9BZ0FnQVNnQ0RDZ0NLQkFxSUFRZ0F4QVNHaUFFUWZmd0RCQU9HaUFBSUFRUWtCY2dBeEFQR2lBQ0VBOGFJQVVRRHhvZ0JCQVJJQU5COEFGcUpBQUxTd0VCZnlNQVFSQnJJZ01rQUNBRFFRQTJBZ3dDUUNBQlFZQURha0ViSUFJZ0EwRU1haERkQWdSQUlBQkJ3c0lDRUJRYURBRUxJQUFnQXlnQ0RDZ0NBQkFVR2dzZ0EwRVFhaVFBQ3pNQkFYOENRQ0FCSUFBb0FnUWdBRUVFYWlJQ0VONFhJZ0FnQWtjRVFDQUJLQUlBSUFBb0FoQlBEUUVMSUFJaEFBc2dBQXMrQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDREFKL0lBRW9BZ3dpQUJDNEJrRUJjUVJBSUFBUTFBZ01BUXNnQUJDS0JRc2hBQ0FCUVJCcUpBQWdBQXRCQVFGL0l3QkJFR3NpQWlBQU5nSU1JQUlnQVRZQ0NDQUNJQUlvQWd3b0FnQTJBZ1FnQWlnQ0RDQUNLQUlJS0FJQU5nSUFJQUlvQWdnZ0FpZ0NCRFlDQUFzcEFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0NDQUJRUWhxUVFRUXp3Y2hBQ0FCUVJCcUpBQWdBQXNNQUNBQUlBQW9BZ1FRMkE0TENRQWdBRUVBRU5rT0M3QUNBUWgvSXdCQkVHc2lBaVFBSXdCQndBRnJJZ01rQUNBRFFiZ0JhaUFBSUFFUTFnNGdBQ2dDWkNJRlFRRnJJUVlnQVNnQ0FDRUhJQUFvQW1BaENDQURLQUs4QVNFSklBTW9BcmdCSVFCQkFDRUJBa0FEUUNBQklBVkhCRUFnQ0NBQVFRUjBhaUlFTFFBRVJRUkFJQUpCQURZQ0RDQUNRUUE2QUFnTUF3c0NRQ0FFS0FJSUlBbEhEUUFnQnlBRUtBSUFSdzBBSUFJZ0FEWUNEQ0FDUVFFNkFBZ01Bd3NnQVNBRUtBSU1Td1JBSUFKQkFEWUNEQ0FDUVFBNkFBZ01Bd1VnQUVFQmFrRUFJQUFnQmtjYklRQWdBVUVCYWlFQkRBSUxBQXNMSUFOQkNHcEJoclVEUVo0RVFRNGdBMEdvQVdvUUhTSUFFQmNpQVVFWWFrSFNOUkFPR2lBQkVCZ2dBa0VBTmdJTUlBSkJBRG9BQ0NBQUVCNExJQU5Cd0FGcUpBQWdBaTBBQ0NFQUlBSkJFR29rQUNBQUN3MEFJQUFnQVNBQ1FSQVEyUWtMSWdBRFFDQUFSU0FBS0FJRVFiRE9Fa2R5UlFSQUlBQW9BaVFoQUF3QkN3c2dBQXNpQUNBQVFRRnFJZ0JCOGdCTEJFQkJyT0lHRHdzZ0FFRUNkRUdzdWhKcUtBSUFDK2tCQVFGK0lBQkZCRUJCQUE4TEFuOUJBQ0FBS0FJRUlnQXBBeEJDaGVTQWdvS0FpUW1ESWdFZ0FVSUJmWU5RRFFBYVFRRUNmMEVBSUFBcEF4QkNnYVNBZ0lDQWlRR0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FCQ0JDQTBBR2dKL1FRQWdBQ2tERUVLQm9JQ0FnSUNJQVlNaUFTQUJRZ0Y5ZzFBTkFCcEJBU0FBRUlJSURRQWFJQUFRbndrTEN3MEFHZ0ovUVFBZ0FDa0RFRUtFNElDQ2dvQ0FDSU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFUElIRFFBYUFuOUJBQ0FBS1FNUVFvU2dnSUNDZ0lBSWd5SUJJQUZDQVgyRFVBMEFHa0VCSUFBUWdBWU5BQm9nQUJDWUVRc0xDd3NSQUNBQVFRaHFJQUVvQWdBUUlSb2dBQXNSQUNBQUtBSUFJZ0FRSENBQVFjZ0NhZ3U5QVFFRWZ5TUFRUkJySWdNa0FBSkFJQUZGRFFBZ0EwRUFOZ0lJSUFNZ0FUWUNCQ0FESUFCQkNHbzJBZ0FnQXlBQUtBTGNCRUVCYXpZQ0RDQURFTFFjQkVBZ0F4QzBIQkJtSVFJTUFRc2dBRUc0SUdvb0FnQWlBaUFBUWJ3Z2FpZ0NBRUVGZEdvaEJDQUJLQUlFSVFVRFFBSkFJQUlnQkVjRVFDQUZJQUlvQWdBUVNFVU5BU0FDUVFocUlBRVFpZ0lpQWcwREN5QUJJQUFnQVNnQ0FDZ0NDQkVCQUNFQ0RBSUxJQUpCSUdvaEFnd0FDd0FMSUFOQkVHb2tBQ0FDQ3d3QUlBQVFnUjBnQUJDbUVBdU9BUUVCZnlBQUtBSUVJZ0lFUUNBQ0tBSUFJQUVRVjBFQlFRRkIxWjRJUWRDbkEwSHdBQkJMQ3lBQUlBRVF6UU1pQVVVRVFFRUFEd3RCQUNFQ0FrQWdBVVVOQUNBQlFRQWdBUVIvSUFFb0FnUkJtT2dQRUVnRlFRQUxHeUlDRFFBZ0FDQUJRWmpvRHhEaEJFRUFJUUlMSUFBb0FnQW9BZ2dnQWhCWFFRRkJBVUdobXdoQjBLY0RRZlFBRUVzZ0Fnc1hBQ0FBSUFFUXJ3a2lBRVVFUUVFQUR3c2dBQ2dDRUFzS0FDQUFLQUlBRVBVRkMyQUJBWDRDZjBFQUlBQW9BZ1FpQUNrREVFS0VoSUNJZ29nQmd5SUJJQUZDQVgyRFVBMEFHa0VCSUFBUXNBVU5BQm9DZjBFQUlBQXBBeEJDaElTQWdJS0FBWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFSUVJRFFBYUlBQVFnQVlMQ3dzS0FDQUFLQUlBRU5jR0N6Z0JBWDRDZjBFQUlBQW9BZ1FpQUNrREVFTEFnSUNJZ0lpSUlZTWlBU0FCUWdGOWcxQU5BQnBCQVNBQUVMQUZEUUFhSUFBUW9CMExDN3dCQVFOL0l3QkJFR3NpQkNRQUlBQVE4d2toQXdKQUFrQWdBeUFCSUFJUW5RZ2lCVWtFUUNBQUlBRVE5Uk1OQVNBQUlBTWdCU0FEYXlBQUtBSUVJQUF0QUFzUW1BRWlBMEVBSUFNUTl3d0xJQUFRandJaEF3TkFJQUVnQWtjRVFDQURJQUVvQWdBUW1RSWdBVUVFYWlFQklBTkJCR29oQXd3QkN3c2dBMEVBRUprQ0lBQWdCUkR5Q1F3QkN5QUFJQVFnQVNBQ0VJd0hJZ0VRandJZ0FTZ0NCQ0FCTFFBTEVKZ0JFTEFUSUFFUWh3RWFDeUFFUVJCcUpBQWdBQXVvQVFJQ2Z3RjlJd0JCSUdzaUJTUUFJQVVDZnlBRElBU1NFRVlpQjR0REFBQ0FmMTFGQkVBZ0JVRUFPZ0FZUVFBTUFRc2dCU0FIT0FJWVFRRUxPZ0FjQWtBZ0JTMEFIRVVFUUNBRlFRaHFJZ1lnQTBIYm1BZ2dCQkRxQmlBQklBWWdBaEJkSUFZUUR4b2dBQ0FCTFFBRUJIOGdBRU1BQUFBQUVFWTRBZ0JCQVFWQkFnczZBQVFNQVFzZ0JTb0NHQkJHSVFNZ0FFRUJPZ0FFSUFBZ0F6Z0NBQXNnQlVFZ2FpUUFDMm9DQVg4QmZTTUFRUkJySWdVa0FDQUFBbjhDUUNBRElBU1NJZ2FMUXdBQWdIOWRSUVJBSUFVZ0EwSGJtQWdnQkJEc0JpQUJJQVVnQWhCZElBVVFEeHBCQWlBQkxRQUVSUTBDR2lBQVFRQTJBZ0FNQVFzZ0FDQUdPQUlBQzBFQkN6b0FCQ0FGUVJCcUpBQUxiZ0lCZndGOEl3QkJFR3NpQlNRQUlBQUNmd0pBSUFNZ0JLQWlCcGxFQUFBQUFBQUE4SDlqUlFSQUlBVWdBMEhibUFnZ0JCRHRCaUFCSUFVZ0FoQmRJQVVRRHhwQkFpQUJMUUFFUlEwQ0dpQUFRZ0EzQXdBTUFRc2dBQ0FHT1FNQUMwRUJDem9BQ0NBRlFSQnFKQUFMREFBZ0FFR0Nob0FnTmdBQUN3OEFJQUFnQUNnQ0FDZ0NEQkVBQUFzUkFDQUFJQUVnQVNnQ0FDZ0NIQkVDQUFzUkFDQUFJQUVnQVNnQ0FDZ0NHQkVDQUF1dkFRRUdmeU1BUVNCcklnSWtBQ0FDUVJocUlnTWdBQkRmQXhvQ1FDQURFSklFUlEwQUlBSkJFR29pQXlBQUlBQW9BZ0JCREdzb0FnQnFFSDRnQXhEOUJDRUVJQU1RWkNBQ1FRaHFJQUFRMGdRaEJTQUFJQUFvQWdCQkRHc29BZ0JxSWdZUW5BTWhCeUFDSUFRZ0JTZ0NBQ0FHSUFjZ0FTQUVLQUlBS0FJb0VRa0FOZ0lRSUFNUTBRUkZEUUFnQUNBQUtBSUFRUXhyS0FJQWFrRUZFSThEQ3lBQ1FSaHFFT0FESUFKQklHb2tBQXRJQVFGL0lBQW9BZ0FoQWlBQkVJQUJJUUFnQWlnQ0NDSUJJQUlvQWd3UWdnUWdBRXNFZnlBQklBQVFod2NvQWdCQkFFY0ZRUUFMUlFSQUVHOEFDeUFCSUFBUWh3Y29BZ0FMUHdBZ0FDQUJOZ0lFSUFCQkFEb0FBQ0FCSUFFb0FnQkJER3NvQWdCcUlnRW9BaEJGQkVBZ0FTZ0NTQ0lCQkVBZ0FSQ2NDQXNnQUVFQk9nQUFDeUFBQzMwQkFYOENRQ0FBS0FJRUlnRWdBU2dDQUVFTWF5Z0NBR29RdFFaRkRRQWdBQ2dDQkNJQklBRW9BZ0JCREdzb0FnQnFJZ0VvQWhBTkFDQUJFTGdCUVlEQUFIRkZEUUFnQUNnQ0JDSUJJQUVvQWdCQkRHc29BZ0JxRUxVR0VKRUhRWDlIRFFBZ0FDZ0NCQ0lBSUFBb0FnQkJER3NvQWdCcVFRRVFqd01MQzFNQkFuOGpBRUdRQVdzaUFpUUFJQUpCQ0dvUXpnRWlBMEhYNlFZUURpQUJLQUlvRUNGQjU3Z0NFQTRnQVM4QkhoQ0JBUkFPUWUvMkNCQU9HaUFBSUFOQkJHb1FRaUFERUxzQkdpQUNRWkFCYWlRQUN6b0JBWDlCbU1JTklRSURmeUFDUWRqR0RVWUVRRUVBRHdzZ0FDQUNLQUlBUmdSL0lBSWdBVUVDZEdvb0FnUUZJQUpCRUdvaEFnd0JDd3NMeUJBQkNuOGpBRUhRQUdzaUFpUUFJQUpCQURZQ1NBSi9Ba0FnQWdKL0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBU2dDRUE0YkZRQUJBaFlQRUFNUkVoTVVCQnNhQlFZSENBa1pDZ3NNR0EwT0Z3c2dBaUFCRVBjQ05nSklJQUpCR0dvZ0FFRXdhaUFDUWNnQWFoREJBaUFDS0FJWUtBSUlEQjBMSUFJZ0FSRDNBallDU0NBQ1FSaHFJQUJCTUdvZ0FrSElBR29Rd1FJZ0FpZ0NHQ2dDQ0F3Y0N5QUNJQUVROXdJMkFrZ2dBa0VZYWlBQVFUQnFJQUpCeUFCcUVNRUNJQUlvQWhnb0FnZ01Hd3NnQWlBQkVQY0NOZ0pJSUFKQkdHb2dBRUV3YWlBQ1FjZ0FhaERCQWlBQ0tBSVlLQUlJREJvTElBSWdBUkQzQWpZQ1NDQUNRUmhxSUFCQk1Hb2dBa0hJQUdvUXdRSWdBaWdDR0NnQ0NBd1pDeUFDSUFFUTl3STJBa2dnQWtFWWFpQUFRVEJxSUFKQnlBQnFFTUVDSUFJb0FoZ29BZ2dNR0FzZ0FpQUJFUGNDTmdKSUlBSkJHR29nQUVFd2FpQUNRY2dBYWhEQkFpQUNLQUlZS0FJSURCY0xJQUlnQVJEM0FqWUNTQ0FDUVJocUlBQkJNR29nQWtISUFHb1F3UUlnQWlnQ0dDZ0NDQXdXQ3lBQ0lBRVE5d0kyQWtnZ0FrRVlhaUFBUVRCcUlBSkJ5QUJxRU1FQ0lBSW9BaGdvQWdnTUZRc2dBaUFCRVBjQ05nSklJQUpCR0dvZ0FFRXdhaUFDUWNnQWFoREJBaUFDS0FJWUtBSUlEQlFMSUFJZ0FSRDNBallDU0NBQ1FSaHFJQUJCTUdvZ0FrSElBR29Rd1FJZ0FpZ0NHQ2dDQ0F3VEN5QUNJQUVROXdJMkFrZ2dBa0VZYWlBQVFUQnFJQUpCeUFCcUVNRUNJQUlvQWhnb0FnZ01FZ3NnQWlBQkVQY0NOZ0pJSUFKQkdHb2dBRUV3YWlBQ1FjZ0FhaERCQWlBQ0tBSVlLQUlJREJFTElBSWdBUkQzQWpZQ1NDQUNRUmhxSUFCQk1Hb2dBa0hJQUdvUXdRSWdBaWdDR0NnQ0NBd1FDeUFDSUFFUTl3STJBa2dnQWtFWWFpQUFRVEJxSUFKQnlBQnFFTUVDSUFJb0FoZ29BZ2dNRHdzZ0FpQUFJQUVnQVNnQ0FDZ0NRQkVBQUNJREtBSVVFT01ETmdJWUlBSWdBeWdDR0RZQ0tFRWNFQlVnQWlnQ0dDQUNLQUlvRUxJWERBd0xJQUlnQUNBQklBRW9BZ0FvQWtnUkFBQWlBeWdDRkJEakF6WUNHQ0FDSUFNb0FoZzJBaWdnQWlBREtBSWNOZ0lJSUFJZ0F5MEFJRG9BUnlBQ0lBTXRBQ0U2QUVZZ0FpQURLQUlrTmdKQUlBSWdBeWdDS0RZQ1BDQUNJQU1vQWl3MkFqaEJNQkFWSUFJb0FoZ2dBaWdDS0NBQ0tBSUlJQUl0QUVjZ0FpMEFSaUFDUVVCcktBSUFJQUlvQWp3Z0FpZ0NPQkN3Rnd3TEN5QUNJQUFnQVNBQktBSUFLQUpZRVFBQUtBSVVFT01ETmdJWVFSZ1FGU0VESUFJb0FoZ2hCQ0FEUW9DQWdJQ0FBVGNDRENBRFFnQTNBZ1FnQXlBRU5nSVVJQU5CL0tRVE5nSUFJQU1NQ2dzZ0FpQUJJQUVvQWdBb0FtQVJBQUFpQXlnQ0ZEWUNHRUVvRUJVZ0FpZ0NHQ0FEUVJocUVLNFhEQWtMSUFJZ0FDQUJJQUVvQWdBb0FtZ1JBQUFvQWhRUTR3TTJBaGhCR0JBVklBSW9BaGdRclJjTUNBc2dBU0FCS0FJQUtBSndFUUFBSVFVZ0FrRUFOZ0l3SUFKQ0FEY0RLQ0FDUVNocUlBVW9BaGdnQlNnQ0ZHdEJBblVRcXdRZ0JTZ0NHQ0VFSUFVb0FoUWhBd05BSUFNZ0JFWUVRQ0FDUVN3UUZTQUNRU2hxRUt3WElnUTJBa2dnQlVFa2FpRUdJQUpCR0dwQkJISWhCeUFFSUFRb0FnQW9BbXdSQUFBaENDQUZLQUlnSVFVRFFDQUZJQVpHQkVBZ0FrRW9haEF5R2d3TUN5QUNRUmhxSUFWQkVHb1FuQTRvQWdBaENTQUNLQUlnSVFvZ0FpZ0NIQ0VEQTBBZ0F5QUtSZ1JBSUFjUXBBSWdCUkJNSVFVTUFnVWdDQ0FKSUFKQkNHb2dBeEN3QVNJTEVLc1hJQXNRTWhvZ0EwRU1haUVEREFFTEFBc0FDd0FGSUFJZ0FDQURLQUlBRU9NRE5nSVlJQU5CQkdvaEF5QUNRU2hxSUFKQkdHb1EvUUlNQVFzQUN3QUxJQUlnQVJEM0FqWUNTQ0FDUVJocUlBQkJNR29nQWtISUFHb1F3UUlnQWlnQ0dDZ0NDQXdJQ3lBQ0lBQWdBU0FCS0FJQUtBSTRFUUFBSWdNb0FoUVE0d00yQWhnZ0FpQURLQUlZTmdJb1FSd1FGU0FDS0FJWUlBSW9BaWdRdEJjTUJRdEJvNmdKUWNhbEFrSDRCRUcrbHdRUUFBQUxJQUlnQUNBQklBRW9BZ0FvQXRnQkVRQUFJZ01vQWhRUTR3TTJBaGdnQWlBREtBSVlOZ0lvSUFJZ0F5Z0NIRFlDQ0NBQ0lBTW9BaUEyQWtCQkpCQVZJQUlvQWhnZ0FpZ0NLQ0FDS0FJSUlBSkJRR3NvQWdBUXB4Y01Bd3NnQWlBQklBRW9BZ0FvQXJnQkVRQUFJZ1VvQWhRMkFoZ2dBaUFGS0FJWU5nSW9RU0FRRlNFRElBSW9BaGdoQkNBQ0tBSW9JUVlnQTBLQWdJQ0F3QUkzQWd3Z0EwSUFOd0lFSUFOQkFEWUNIQ0FESUFZMkFoZ2dBeUFFTmdJVUlBTkJsS3NUTmdJQUlBSWdBeUlFTmdKSUlBVW9BaHdpQTBVTkF5QUVJQVFvQWdBb0FyUUJFUUFBSUFBZ0F4RGpBeUlESUFNb0FnQW9BbndSQUFBMkFod01Bd3NnQVNBQktBSUFLQUtJQVJFQUFDSURLQUlVSVFRZ0FrRUFOZ0lnSUFKQ0FEY0RHQ0FDUVJocUlBTW9BaHdnQXlnQ0dHdEJBblVRcXdRZ0F5Z0NIQ0VGSUFNb0FoZ2hBd05BSUFNZ0JVWUVRQ0FDSUFBZ0JCRGpBellDS0NBQ1FTUVFGU0FDS0FJb0lBSkJHR29pQXhDcEZ5SUVOZ0pJSUFNUU1ob01CQVVnQWlBQUlBTW9BZ0FRNHdNMkFpZ2dBMEVFYWlFRElBSkJHR29nQWtFb2FoRDlBZ3dCQ3dBTEFBc2dBaUFBSUFFZ0FTZ0NBQ2dDZ0FFUkFBQWlBeWdDRkJEakF6WUNHQ0FDSUFNb0FoZzJBaWhCSEJBVklBSW9BaGdnQWlnQ0tCQ1dEZ3NpQkRZQ1NBc2dCRUVFYWlFRUlBRW9BZ2doQlNBQktBSUVJUU1EZnlBRElBVkdCSDhnQWtFWWFpQUFRVEJxSUFKQnlBQnFFTUVDSUFJb0FoZ29BZ2dGSUFRZ0FrRVlhaUFERUxBQklnRVFuZzRnQVJBeUdpQURRUXhxSVFNTUFRc0xDeUVCSUFJb0FrZ2hBQ0FDUVFBMkFrZ2dBQVJBSUFBZ0FDZ0NBQ2dDQkJFREFBc2dBa0hRQUdva0FDQUJDd1FBSUFFTEJ3QWdBQ2dDQ0FzS0FDQUFRYml3RWhCSUMwOEJBbjhnQUVFQU5nSUlJQUJDQURjQ0FDQUJLQUlFSWdJRVFDQUFJQUlRendVZ0FDZ0NCQ0VESUFBZ0FrRUFTZ1IvSUFNZ0FTZ0NBQ0FDUVFKMElnRVFmU0FCYWdVZ0F3czJBZ1FMSUFBTElnQWdBQ2dDQUNJQUlBRW9BZ0FRbEFJb0FnQWdBQ0FDS0FJQUVKUUNLQUlBU1FzY0FDQUFLQUlBSWdBZ0FSQ1VBaWdDQUNBQUlBSVFsQUlvQWdCSkN3a0FJQUFvQWdRUVlBczNBUUYvSXdCQkVHc2lBeVFBSUFJb0FnQVEvQUloQWlBQktBTEVCQ0VCSUFBZ0FqWUNCQ0FBSUFJZ0FYQTJBZ0FnQTBFUWFpUUFDMVlCQW44Z0FDZ0NBQ0lCS0FJc0lnSUVmeUFDQlNBQkVQWUlJZ0pCbU5JU05nSUFJQUpCNE1zU05nSUVJQUVnQWhBb0lBRWdBU2dDR0VFQmFqWUNHQ0FDSVFFZ0FDZ0NBQ0FCTmdJc0lBQW9BZ0FvQWl3TEMxWUJBbjhnQUNnQ0FDSUJLQUlrSWdJRWZ5QUNCU0FCRVBZSUlnSkI2TkVTTmdJQUlBSkJzTXNTTmdJRUlBRWdBaEFvSUFFZ0FTZ0NHRUVCYWpZQ0dDQUNJUUVnQUNnQ0FDQUJOZ0lrSUFBb0FnQW9BaVFMQ3lJQUEwQWdBRVVnQUNnQ0JFR1F6QkpIY2tVRVFDQUFLQUlJSVFBTUFRc0xJQUFMVGdFRGZ5TUFRYkFCYXlJQkpBQWdBQkNqQ3lJQVJRUkFJQUZCMks4RFFjMEFRUTRnQVVHZ0FXb1FIU0lDRUJjaUEwRVlha0h0cVFnUURob2dBeEFZSUFJUUhnc2dBVUd3QVdva0FDQUFDekFCQW44akFFRXdheUlDSkFBZ0FpQUFFUFViSVFNZ0FDQUJFTWdQSUFFZ0F4RElEeUFERUprRElBSkJNR29rQUFzRUFFRUVDNW9CQVFWL0FrQWdBQ2dDQkNBQUxRQUxJZ0lnQWtFWWRFRVlkU0lGUVFCSUd5SUdJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFVpQkVFQVNCdEhEUUFnQVNnQ0FDQUJJQVJCQUVnYklRRWdCVUVBVGdSQUEwQWdBa1VoQXlBQ1JRMENJQUF0QUFBZ0FTMEFBRWNOQWlBQlFRRnFJUUVnQUVFQmFpRUFJQUpCQVdzaEFnd0FDd0FMSUFBb0FnQWdBU0FHRU1zTFJTRURDeUFEQ3drQUlBQkJDR29RRmdzS0FDQUFLQUlBRU1NREM3Y0JBUVovSUFFUTlBTWhBd0pBSUFBb0FnUWlBa1VOQUNBQUtBSUFBbjhnQWtFQmF5QURjU0FDYVNJRVFRRk5EUUFhSUFNZ0FpQURTdzBBR2lBRElBSndDeUlGUVFKMGFpZ0NBQ0lBUlEwQUlBSkJBV3NoQmlBQktBSUFJUWNnQkVFQlN5RUVBMEFnQUNnQ0FDSUFSUTBCSUFNZ0FDZ0NCQ0lCUndSQUFrQWdCRVVFUUNBQklBWnhJUUVNQVFzZ0FTQUNTUTBBSUFFZ0FuQWhBUXNnQVNBRlJ3MENEQUVMSUFBb0FnZ2dCMGNOQUFzZ0FBOExRUUFMQ2dBZ0FFSEFnUklRU0FzS0FDQUFLQUlBRUtnRUMwUUNBWDhCZmdKQUlBQW9BaEJCQVVvTkFDQUJLQUlFSWdBcEF4QkNoSUNBaUlJSWd5SURJQU5DQVgyRFVBMEFRUUVoQWlBQUVMQUZEUUFnQUJDQUJpRUNDeUFDQ3dvQUlBQW9BZ0FRcHdrTFJnSUJmd0YrQWtBZ0FDZ0NFRUVCU2cwQUlBRW9BZ1FpQUNrREVFTEFnSUNJZ0lpQUlJTWlBeUFEUWdGOWcxQU5BRUVCSVFJZ0FCQ3dCUTBBSUFBUXNSQWhBZ3NnQWdzMUFRSi9Jd0JCOEFCcklnSWtBQ0FDUVFocUlBQVFqUkVoQXlBQUlBRVFtZ3dnQVNBREVKb01JQU1RNmdJZ0FrSHdBR29rQUFzUkFDQUFRUkJCOGY4RFFYeEJBeERLQVFzRUFFRUJDM1FCQkg4akFFR2dBV3NpQXlRQUlBTkJDR29RU1NJRVFRaHFRZFMxQ2hBT0dpQUVJQUVRd2hFaUJVRUlhaUlHUVpQbkNSQU9HaUFHUWZPYUNSQU9HaUFESUFJcEFnQTNBNWdCSUFVZ0EwR1lBV29RdGdSQkNHcEI4NW9KRUE0YUlBQWdCRUVNYWhCQ0lBUVFVU0FEUWFBQmFpUUFDNmdCQWdKL0FYMGpBRUVnYXlJRkpBQWdCUUovSUFNZ0JKTVFSaUlIaTBNQUFJQi9YVVVFUUNBRlFRQTZBQmhCQUF3QkN5QUZJQWM0QWhoQkFRczZBQndDUUNBRkxRQWNSUVJBSUFWQkNHb2lCaUFEUWN5WUNDQUVFT29HSUFFZ0JpQUNFRjBnQmhBUEdpQUFJQUV0QUFRRWZ5QUFRd0FBQUFBUVJqZ0NBRUVCQlVFQ0N6b0FCQXdCQ3lBRktnSVlFRVloQXlBQVFRRTZBQVFnQUNBRE9BSUFDeUFGUVNCcUpBQUxhZ0lCZndGOUl3QkJFR3NpQlNRQUlBQUNmd0pBSUFNZ0JKTWlCb3REQUFDQWYxMUZCRUFnQlNBRFFjeVlDQ0FFRU93R0lBRWdCU0FDRUYwZ0JSQVBHa0VDSUFFdEFBUkZEUUlhSUFCQkFEWUNBQXdCQ3lBQUlBWTRBZ0FMUVFFTE9nQUVJQVZCRUdva0FBdHVBZ0YvQVh3akFFRVFheUlGSkFBZ0FBSi9Ba0FnQXlBRW9TSUdtVVFBQUFBQUFBRHdmMk5GQkVBZ0JTQURRY3lZQ0NBRUVPMEdJQUVnQlNBQ0VGMGdCUkFQR2tFQ0lBRXRBQVJGRFFJYUlBQkNBRGNEQUF3QkN5QUFJQVk1QXdBTFFRRUxPZ0FJSUFWQkVHb2tBQXNLQUNBQklBQnJRUUoxQzBFQkFYOGdBQ0FCTndOd0lBQWdBQ2dDTENBQUtBSUVJZ0pyckRjRGVDQUFJQUZRSUFBb0FnZ2lBQ0FDYTZ3Z0FWZHlCSDhnQUFVZ0FpQUJwMm9MTmdKb0Mwc0JBbndnQUNBQW9pSUJJQUNpSWdJZ0FTQUJvcUlnQVVTblJqdU1oODNHUHFKRWRPZks0dmtBS3IrZ29pQUNJQUZFc3Z0dWlSQVJnVCtpUkhlc3kxUlZWY1cvb0tJZ0FLQ2d0Z3RQQVFGOElBQWdBS0lpQUNBQUlBQ2lJZ0dpSUFCRWFWRHU0RUtUK1Q2aVJDY2VEK2lId0ZhL29LSWdBVVJDT2dYaFUxV2xQNklnQUVTQlhnejkvLy9mdjZKRUFBQUFBQUFBOEQrZ29LQzJDMVlCQW44akFFRWdheUlFSkFBZ0FrRVhhMEYrVHdSQUlBUkJ1SmdnTmdJSUlBUWdBcTBnQTYxQ0lJYUVOd0lNSUFRZ0JFRUlhaUlDTmdJWUlBQWdBU0FDUVFFUW93b2hCU0FDRUJZTElBUkJJR29rQUNBRkN3a0FJQUFnQVRZQ0JBc0xBQ0FBQkVBZ0FCQWZDd3RZQVFGL0FrQWdBaWdDQkNBQ0tBSUFJZ0pyUVFKMUlBTk5EUUFnQUNBQ0lBTkJBblJxS0FJQUVMb0JJZ0F2QVI1QkRFY05BQUpBSUFBb0FpQkJDR3NPQXdBQkFBRUxJQUVnQUNnQ0FDZ0NFQkNLQWlFRUN5QUVDOHZuQVFJcWZ3WitJd0JCb0R4ckloc2tBQ0FBRUpnRUloSkJBRFlDQkNBU1FRaHFFTU1MSVNNZ0VrSUFOd0xVQVNBU1FvQ0FnSUNBQkRjQ3pBRWdFa0tBZ0FRM0FzUUJJQkpDQURjQ3ZBRWdFa0lnTndLMEFTQVNRZ0EzQXF3QklCSkNnSUNBZ0lDQXdBQTNBcVFCSUJKQ0FEY0NuQUVnRWtLQWdJQ0FnQVEzQXBRQklCSkNnSUFFTndLTUFTQVNRZ0EzQW9RQklCSkIzQUZxRU5NTElTUWdFa0dBQW1vZ0VpZ0NBQkR2RHlFbElCSkJ3QUpxRUIwaElpQVNRUUE3QWRBQ0lCSWdBU2dDQ0RZQ0FDQVNJQUVvQWd3MkFnUWdFaUFCRUxvWE9nRFFBaUFTUWJ3QmFpRW1JQkpCb0FGcUlTY2dFa0dFQVdvaEtBSkFJQUV0QU93Q1JRMEFJQUVRdWhkRkRRQWdHMEVRYWlJSUlBRTJBZ0FnQVJBY0lBZ2dBVUhJQW1vaUJUWUNCQ0FJUVFBNkFBd2dDQ0FCTmdJSVFjajJBQkFWSWdBZ0FUWUNCQ0FBUWRqUUFHcENBRGNDQUNBQVFkRFFBR3BDZ0lDQWdJQU1Od0lBSUFCQnpOQUFhaUFBUWN3RmFpSUNOZ0lBSUFBZ0FFSDBBbW8yQXNnRklBQWdBRUh3QW1vMkFzUUZJQUFnQUVIc0FtbzJBc0FGSUFBZ0FFSG9BbW8yQXJ3RklBQWdBRUhrQW1vMkFyZ0ZJQUFnQUVIZ0FtbzJBclFGSUFBZ0FFSGNBbW8yQXJBRklBQWdBRUhZQW1vMkFxd0ZJQUFnQUVIVUFtbzJBcWdGSUFBZ0FFRTRhallDcEFVZ0FDQUFRVEJxTmdLZ0JTQUFJQUJCS0dvMkFwd0ZJQUFnQUVIUUFtbzJBcGdGSUFBZ0FFSE1BbW8yQXBRRklBQWdBRUhJQW1vMkFwQUZJQUFnQUVIRUFtbzJBb3dGSUFBZ0FFSEFBbW8yQW9nRklBQWdBRUc4QW1vMkFvUUZJQUFnQUVHNEFtbzJBb0FGSUFBZ0FFRzBBbW8yQXZ3RUlBQWdBRUd3QW1vMkF2Z0VJQUFnQUVHc0FtbzJBdlFFSUFBZ0FFR29BbW8yQXZBRUlBQWdBRUdrQW1vMkF1d0VJQUFnQUVHZ0FtbzJBdWdFSUFBZ0FFR2NBbW8yQXVRRUlBQWdBRUdZQW1vMkF1QUVJQUFnQUVHVUFtbzJBdHdFSUFBZ0FFR1FBbW8yQXRnRUlBQWdBRUdNQW1vMkF0UUVJQUFnQUVHSUFtbzJBdEFFSUFBZ0FFR0VBbW8yQXN3RUlBQWdBRUdBQW1vMkFzZ0VJQUFnQUVIOEFXbzJBc1FFSUFBZ0FFSDRBV28yQXNBRUlBQWdBRUgwQVdvMkFyd0VJQUFnQUVId0FXbzJBcmdFSUFBZ0FFSHNBV28yQXJRRUlBQWdBRUhvQVdvMkFyQUVJQUFnQUVIa0FXbzJBcXdFSUFBZ0FFSGdBV28yQXFnRUlBQWdBRUhjQVdvMkFxUUVJQUFnQUVIWUFXbzJBcUFFSUFBZ0FFSFVBV28yQXB3RUlBQWdBRUhRQVdvMkFwZ0VJQUFnQUVITUFXbzJBcFFFSUFBZ0FFSElBV28yQXBBRUlBQWdBRUhFQVdvMkFvd0VJQUFnQUVIQUFXbzJBb2dFSUFBZ0FFRzhBV28yQW9RRUlBQWdBRUc0QVdvMkFvQUVJQUFnQUVHMEFXbzJBdndESUFBZ0FFR3dBV28yQXZnRElBQWdBRUdzQVdvMkF2UURJQUFnQUVHb0FXbzJBdkFESUFBZ0FFR2tBV28yQXV3RElBQWdBRUdnQVdvMkF1Z0RJQUFnQUVHY0FXbzJBdVFESUFBZ0FFR1lBV28yQXVBRElBQWdBRUdVQVdvMkF0d0RJQUFnQUVHUUFXbzJBdGdESUFBZ0FFR01BV28yQXRRRElBQWdBRUdJQVdvMkF0QURJQUFnQUVHRUFXbzJBc3dESUFBZ0FFR0FBV28yQXNnRElBQWdBRUg4QUdvMkFzUURJQUFnQUVINEFHbzJBc0FESUFBZ0FFSDBBR28yQXJ3RElBQWdBRUh3QUdvMkFyZ0RJQUFnQUVIc0FHbzJBclFESUFBZ0FFSG9BR28yQXJBRElBQWdBRUhrQUdvMkFxd0RJQUFnQUVIZ0FHbzJBcWdESUFBZ0FFSGNBR28yQXFRRElBQWdBRUhZQUdvMkFxQURJQUFnQUVIVUFHbzJBcHdESUFBZ0FFSFFBR28yQXBnRElBQWdBRUhNQUdvMkFwUURJQUFnQUVISUFHbzJBcEFESUFBZ0FFSEVBR28yQW93RElBQWdBRUZBYXlJRE5nS0lBeUFBSUFCQklHbzJBb1FESUFBZ0FFRVlhallDZ0FNZ0FDQUFRUkJxTmdMOEFpQUFJQUJCQ0dvMkF2Z0NJQUJCNEpRUU5nTDBBaUFBUWNpVUVEWUM4QUlnQUVHd2xCQTJBdXdDSUFCQm1KUVFOZ0xvQWlBQVFZQ1VFRFlDNUFJZ0FFSG9reEEyQXVBQ0lBQkIwSk1RTmdMY0FpQUFRYmlURURZQzJBSWdBRUdna3hBMkF0UUNJQUJCaUpNUU5nTFFBaUFBUWZDU0VEWUN6QUlnQUVIWWtoQTJBc2dDSUFCQndKSVFOZ0xFQWlBQVFhaVNFRFlDd0FJZ0FFR1FraEEyQXJ3Q0lBQkIrSkVRTmdLNEFpQUFRZUNSRURZQ3RBSWdBRUhJa1JBMkFyQUNJQUJCc0pFUU5nS3NBaUFBUVppUkVEWUNxQUlnQUVHQWtSQTJBcVFDSUFCQjZKQVFOZ0tnQWlBQVFkQ1FFRFlDbkFJZ0FFRzRrQkEyQXBnQ0lBQkJvSkFRTmdLVUFpQUFRWWlRRURZQ2tBSWdBRUh3anhBMkFvd0NJQUJCMkk4UU5nS0lBaUFBUWNDUEVEWUNoQUlnQUVHb2p4QTJBb0FDSUFCQmtJOFFOZ0w4QVNBQVFmaU9FRFlDK0FFZ0FFSGdqaEEyQXZRQklBQkJ5STRRTmdMd0FTQUFRYkNPRURZQzdBRWdBRUdZamhBMkF1Z0JJQUJCZ0k0UU5nTGtBU0FBUWVpTkVEWUM0QUVnQUVIUWpSQTJBdHdCSUFCQnVJMFFOZ0xZQVNBQVFhQ05FRFlDMUFFZ0FFR0lqUkEyQXRBQklBQkI4SXdRTmdMTUFTQUFRZGlNRURZQ3lBRWdBRUhBakJBMkFzUUJJQUJCcUl3UU5nTEFBU0FBUVpDTUVEWUN2QUVnQUVINGl4QTJBcmdCSUFCQjRJc1FOZ0swQVNBQVFjaUxFRFlDc0FFZ0FFR3dpeEEyQXF3QklBQkJtSXNRTmdLb0FTQUFRWUNMRURZQ3BBRWdBRUhvaWhBMkFxQUJJQUJCMElvUU5nS2NBU0FBUWJpS0VEWUNtQUVnQUVHZ2loQTJBcFFCSUFCQmlJb1FOZ0tRQVNBQVFmQ0pFRFlDakFFZ0FFSFlpUkEyQW9nQklBQkJ3SWtRTmdLRUFTQUFRYWlKRURZQ2dBRWdBRUdRaVJBMkFud2dBRUg0aUJBMkFuZ2dBRUhnaUJBMkFuUWdBRUhJaUJBMkFuQWdBRUd3aUJBMkFtd2dBRUdZaUJBMkFtZ2dBRUdBaUJBMkFtUWdBRUhvaHhBMkFtQWdBRUhRaHhBMkFsd2dBRUc0aHhBMkFsZ2dBRUdnaHhBMkFsUWdBRUdJaHhBMkFsQWdBRUh3aGhBMkFrd2dBRUhZaGhBMkFrZ2dBRUhBaGhBMkFrUWdBMEdvaGhBMkFnQWdBRUVDTmdJOElBQkJrSVlRTmdJNElBQkJBVFlDTkNBQVFaQ0dFRFlDTUNBQVFRQTJBaXdnQUVHUWhoQTJBaWdnQUVFRE5nSWtJQUJCNElVUU5nSWdJQUJCQWpZQ0hDQUFRZUNGRURZQ0dDQUFRUUUyQWhRZ0FFSGdoUkEyQWhBZ0FFRUFOZ0lNSUFCQjRJVVFOZ0lJSUFCQndJVVFOZ0lBSUFKQjRBQVFxUXdnQUVITTR3QnFRZ0EzQWdBZ0FFSEU0d0JxUW9DQWdJQ0FBemNDQUNBQVFjRGpBR29nQUVIZzBBQnFJZ0kyQWdBZ0FrRVlFSVFJSUFCQndQWUFha0lBTndJQUlBQkJ1UFlBYWtLQWdJQ0FnQU0zQWdBZ0FFRzA5Z0JxSUFCQjFPTUFhaUlDTmdJQUlBSkJHQkNFQ0NBSUlBQTJBaEFnQ0VFVWFpSUFRb0NBZ0lDQUJEY0NoQUVnQUNBQU5nS0FBU0FBUVl3QmFpSUNRZ0EzQW93WUlBSkJoQmhxUW9DQWdJQ0FERGNDQUNBQ0lBSTJBb0FZSUFKQjRBQVE4aEFnQUVHZ0dXb2lBRUlBTndMc0F5QUFRb0NBZ0lDQUF6Y0M1QU1nQUNBQU5nTGdBeUFBUVJnUTd4QWdDRUdvSFdvZ0FSQ0FBeUVBSXdCQkVHc2lBeVFBSUFFUUhDQUlRYXdkYWlJSElBRkJpQUpxTmdJQUlBRVFIQ0FISUFBMkFnZ2dCeUFGTmdJRUl3QkJ3QUZySWdBa0FDQUFRUkJxRUpvZUlRUWdBRUVCTmdLOEFTQUFJQVEyQXJnQklBQWdBQ2tEdUFFM0F3Z2dCMEVNYWlJQ1FhUUtha0tBZ0lDQWdBRTNBZ0FnQWlBQ05nS2dDaUFDSUFBb0Fnd2lCaENzSFNBQUtBSUlJZ1VnQmtHa0FXeHFJUWtEZnlBRklBbEdCSDhnQWdVZ0FpQUNLQUtrQ2lJR1FRRnFOZ0trQ2lBQ0tBS2dDaUFHUWFRQmJHb2lCa0tBZ0lDQTRBQTNBcFFCSUFZZ0JqWUNrQUVnQmlBRlFaQUJhaENySFNBR0lBVXBBcHdCTndLY0FTQUZRYVFCYWlFRkRBRUxDeUVDSUFRUStBY2dBRUhBQVdva0FDQUhJQWhCbkRScUlnQTJBc0FLSUFjZ0NFR3NLV29pQlRZQ3ZBb2dCeUFJUWZBbmFpSUhOZ0s0Q2lBRFFRQTZBQXdnQTBFQk5nSUlJQUlnQTBFSWFpSUdRUUVRK3dzZ0EwRUJPZ0FNSUFOQkFUWUNDQ0FDSUFaQkJCRDdDeUFEUVJCcUpBQWdCeERmQmhvZ0NFR2tLV3BDZ0lDQWdJQUJOd0lBSUFoQm9DbHFJQWhCZ0NscU5nSUFJQVVRb2dZYUlBaEJ1Q3RxUWdBM0FnQWdDRUlBTndLd0t5QUlRY1FyYWtJQU53SUFJQWhCQXpZQ3dDc2dDRUhNSzJwQ0FEY0NBQ0FJUWRRcmFrS0FnSUNBZ0lDQXdEODNBZ0FnQ0VIY0syb1FvZ1lhSUFoQjRDMXFFTEFlSUFoQjlEQnFFTEFlSUFoQm1EUnFRUUEyQWdBZ0NFR1FOR3BDQURjQ0FDQUlRZ0EzQW9nMElBQVFvZ1lhSUFoQm9EWnFFS0lHR2lBSVFhUTRhaERlQmhvZ0NFR0lPbXBCQURZQ0FDQUlRWUE2YWtJQU53SUFJQWhCL0RscVFkM3JBVFlDQUNBSVFRQTJBdmc1SUFoQmpEcHFFS0lHR2tFQUlRQWpBRUdnQVdzaUh5UUFBa0FnQ0NnQ0JDZ0NEQTBBSUFnb0FnQWlBaEFjSUFKQjVBRnFJQWdvQWdBb0Fnd1E1QkFnQ0NnQ0FDSUNFQndnQWlnQ3BBRWlCVUVmYWtFRmRpSURJQWhCc0N0cUlnSW9BZ2hMQkVBZ0FpZ0NBQ0VHSUFJZ0F4RENEU0FDS0FJQUlRUkJBQ0VIQTBBZ0FpZ0NCQ0FIVFFSQUlBWVFpQVFGSUFRZ0IwRUNkQ0lKYWlBR0lBbHFLQUlBTmdJQUlBZEJBV29oQnd3QkN3c0xJQUlvQWdRaUJ5QURJQU1nQjBrYklRWWdBaWdDQUNFRUEwQWdCaUFIUmdSQUlBSWdBellDQkFVZ0JDQUhRUUowYWtFQU5nSUFJQWRCQVdvaEJ3d0JDd3NnQlVFZmNTSURCRUFnQWlnQ0FDQUNLQUlFUVFKMGFrRUVheUlISUFjb0FnQkJmeUFEZEVGL2MzRTJBZ0FMSUFJZ0JUWUNEQUovSUFnb0FnQVE4Z0loQXlBSUtBSUVJUUlqQUVHUXl3QnJJZ1lrQUNBR1FkQUlha0lBTndNQUlBWkJ5QWhxUW9DQWdJQ0FBemNEQUNBR1FjUUlhaUFHUVNScUloQTJBZ0FnQmtFQU5nSWdJQVpDZ0lDQWdJQUVOd01ZSUFaQ2dJQUVOd01RSUFaQ0FEY0RDQ0FHSUFoQkZHb2lIRFlDQkNBR0lBSTJBZ0FnRUVFWUVJSVJJQVpCNUNacVFnQTNBZ0FnQmtIY0ptcENnSUNBZ0lBTU53SUFJQVpCMkNacUlBWkIyQWhxSWdvMkFnQWdDa0hnQUJDQkVTQUdRZkFvYWtLQWdJQ0FnQWczQXdBZ0JrSHNLR29nQmtIc0ptb2lCVFlDQUNBR1FmZ29haUlFUW9DQWdJQ0FDRGNDaEFJZ0JDQUVOZ0tBQWlBRVFZd0NhaUlDUWdBM0Fvd01JQUpCaEF4cVFvQ0FnSUNBRERjQ0FDQUNJQUkyQW9BTUlBSkI0QUFRN1JBZ0JpZ0NCRUdNQVdvZ0F5Z0NxQUlRZ0JFZ0JDQURLQUtvQWlJSEVQWUtJQUlnQnhEWEhpQURLQUtrQWlJWklBTW9BcWdDUVFKMGFpRU5JQVpCc0RkcUlRd2dCa0VVYWlFUEEwQUNRQ0FOSUJsSEJFQWdHU2dDQUNFUklBWW9BZ3doQXdKQUlBWW9BaEJCQTJwQmZIRWlBa0hSL3dOclFmNy9lMHNFUUNBRElRY01BUXNnQmtHUWdBUkJFQkRaQWlJSE5nSU1JQWRCQURZQ2dJQUVBa0FnQXdSQUlBTWdCellDZ0lBRURBRUxJQVlnQnpZQ0NBdEJBQ0VDQ3lBR0lBSkJNR28yQWhBZ0FpQUhhaUlMUW9DQWdJQ0FBVGNDS0NBTElBdEJCR28yQWlRZ0N5QVJOZ0lBSUFZb0FoZ2hBd0pBSUFZb0Fod2lDVUVnU1FSQUlBTWhBZ3dCQ3dKQUlBSkJNMnBCZkhFaUNVSDUvZ05yUWY3L2Uwc0VRQ0FISVFJTUFRc2dCa0dRZ0FSQkVCRFpBaUlDTmdJTVFRQWhDU0FDUVFBMkFvQ0FCQ0FISUFJMkFvQ0FCQXNnQmlBQ0lBbHFJZ0kyQWhnZ0JpQUpRWWdCYWpZQ0VDQUNJQU0yQW9RQlFRQWhDU0FDUVFBMkFvQUJJQU5CZ0FGcUlBOGdBeHNnQWpZQ0FBc2dCaUFKUVFGcU5nSWNJQUlnQ1VFQ2RHb2dDellDQUNBR0lBczJBdUJKSUFZZ0JpZ0NJRUVCYWpZQ0lDQUdRYWpKQUdvZ0JpQVJFT29lQWtBZ0JpZ0NxRWtpQjBGL1JnMEFJQVlvQXNnSUlna2dCaWdDMEFnaUFrR1dBV3hCbGdGcVFlUUFia2tFUUNBUUlBSkJBWFJCQW1vUTZSNGdCaWdDeUFnaENTQUdLQUtvU1NFSEN5QUpRUUZySVJFZ0J5QUpjQ0VDSUFZZ0JrSGd5UUJxTmdMc1NTQUdJQVpCcU1rQWFqWUM2RWxCQUNFREEwQWdBeUFKUndSQUlBWW9Bc1FJSUFKQkxHeHFJZ3N0QUNCRkJFQWdCa0dZTjJvaUFpQUdRZWpKQUdvUS9BVWdDeUFDRUpVTUlBc2dBellDS0NBTElBYzJBaVFnQmlBR0tBTFFDRUVCYWpZQzBBZ2dCaUFHS0FMVUNFRUJhallDMUFnTUF3c2dDeUFISUFaQnFNa0FhaEM1Q1EwQ0lBTWdDeWdDS0VzRVFDQUdRZkRKQUdvaUNTQUdRZWpKQUdvUS9BVWdCa0dZTjJvZ0NSQ1VEQ0VKSUFZZ0F6WUN3RGNnQmlBSE5nSzhOeUFKSUFzUTRRWWdCaUFHS0FMQU4wRUJhallDd0RjZ0VDQUNRUUZxSUFZb0FzZ0ljQ0FKRU9nZUlBWWdCaWdDMEFoQkFXbzJBdEFJSUFZZ0JpZ0MxQWhCQVdvMkF0UUlJQWtRcWdJTUF3VWdBa0VCYWtFQUlBSWdFVWNiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVpCbURkcVFZYTFBMEhyQTBFT0lBWkI4TWtBYWhBZElnSVFGeUVESUF4QmxqVVFEaG9nQXhBWUlBSVFIZ3NnQmlnQzhDZ2lCeUFHS0FMMEtDSUNTUTBCSUFJZ0FrRUJkQ0lMUVFJZ0Foc2lBMDhOQVNBR0tBTHNLQ0VKSUFVaEFpQUdJQU5Cd0FCUEJIOUJmeUFEUVFKMElBTkIvLy8vL3dOTEd4QVZJUUlnQ3dWQndBQUxOZ0wwS0NBR0lBSTJBdXdvUVFBaEF3TkFJQU1nQjBZRVFDQUZJQWtRTmlBR0tBTHdLQ0VIREFNRklBTkJBblFpQWlBR0tBTHNLR29nQWlBSmFpZ0NBRFlDQUNBRFFRRnFJUU1NQVFzQUN3QUxJQVlnQ2pZQ3BEY2dCaUFHS1FNQU53S2NOeUFHSUJBMkFwZzNJd0JCc0FKcklnSWtBQ0FDUVFocUVNc2VJUXNnQWtFQk5nS3NBaUFDSUFzMkFxZ0NJQUlnQWlrRHFBSTNBd0FnQmtHb04yb2lCMEhrRVdwQ2dJQ0FnSUFCTndJQUlBY2dCellDNEJFZ0J5QUNLQUlFSWdrUXhoNGdBaWdDQUNJRElBbEJuQUpzYWlFUkEzOGdBeUFSUmdSL0lBY0ZJQWNnQnlnQzVCRWlDVUVCYWpZQzVCRWdCeWdDNEJFZ0NVR2NBbXhxSWdsQ2dJQ0FnT0FBTndLTUFpQUpJQWsyQW9nQ0lBa2dBMEdJQW1vUXd4NGdDU0FES1FLVUFqY0NsQUlnQTBHY0Ftb2hBd3dCQ3dzaENTQUxFUHNISUFKQnNBSnFKQUFnQmtFQU5nS1VTU0FHSUFZb0FzUUlJZ0kyQXZCSklBWWdBaUFHS0FMSUNFRXNiR28yQXZSSklBWkI4TWtBYWhEL0VDQUdJQVlvQXNRSUlBWW9Bc2dJUVN4c2FpSUNOZ0tzU1NBR0lBSTJBcWhKSUFaQnFNa0FhaEQvRUNBR0tBS29TU0VEQWtBRFFDQURJQVlvQXZCSklnSkhCRUFnQWkwQUlFVU5BaUFKSUFJZ0FpZ0NIQ2dDQUJEbkhob2dBaUFHS0FMMFNVWU5BU0FHSUFKQkxHbzJBdkJKSUFaQjhNa0FhaEQvRUF3QkN3c2dCaWdDN0NnaUJ5QUdLQUx3S0VFQ2RHb2hFUU5BQWtBQ1FDQUhJQkZIQkVBZ0JpZ0NsRWtoRFNBR0lBY29BZ0FpQWpZQ2xFa2dCaUFDTmdLa1NTQUNLQUlBSVFJZ0JpQUdRYVRKQUdvMkFweEpJQVlnQmtHWU4ybzJBcGhKSUFKRkJFQWdCa0dZeVFCcUVPWWVEQU1MSUFJb0FnUWlBMEhZOXhGR0JFQWdCa0dZTjJvZ0JrSHd5UUJxSUFJb0FpUkJKR29RVmlBQ0VQOEhJQUlvQWtnaUF5QUNLQUpNUVFKMGFpRUxBMEFnQXlBTFJnMEVJQU1vQWdBaEFpQUdRUUE2QUt4SklBWWdBa0U4YWpZQ3FFa2dCa0dZTjJvaURDQUdRYWpKQUdvUXVBa2dEQ0FDS0FJb0VOOEJJQU5CQkdvaEF3d0FDd0FMSUFOQm1QZ1JSZ1JBSUFaQm1EZHFJZ01nQmtId3lRQnFJQUlvQWlSQkpHb1FWaUFDRVA4SElBTWdBaWdDS0JEZkFRd0RDeUFEUWZqekQwY05BU0FHUVpnM2FpSURJQVpCcU1rQWFpQUNLQUlrUVNScUVGWWdBaEQvQnlBR1FRQTZBT3hKSUFZZ0FrSGtBR28yQXVoSklBTWdCa0hveVFCcUVMZ0pJQVpCQURvQTVFa2dCaUFDUWZnQWFqWUM0RWtnQXlBR1FlREpBR29RdUFrZ0FpZ0NTQ0lESUFJb0FreEJBblJxSVF3RFFDQURJQXhHQkVBZ0JrR1lOMm9nQWlnQ1ZCRGZBU0FKRUxjSklBSW9Ba2dpQXlBQ0tBSk1RUUowYWlFTEEwQWdBeUFMUmdSQUlBSW9BbGdpQWdSQUlBWkJBRG9BekVrZ0JpQUNRY1FBYWpZQ3lFa2dCa0dZTjJvZ0JrSEl5UUJxRVA0UUN5QUpFTFlKREFZTElBWWdBeWdDQUNJTU5nTFVTU0FHSUFrZ0RDZ0NKRUVrYWhEOUVDSU1OZ0xRU1NBTUJFQWdCa0hJeVFCcUlBWW9BcUEzUWFBWmFpQUdRZFRKQUdvZ0JrSFF5UUJxRVB3UUN5QUdRWmczYWlBR1FmREpBR29nQmlnQzFFa29BaVJCSkdvUVZpQUdLQUxVU1JEL0J5QURRUVJxSVFNTUFBc0FCU0FES0FJQUlRc2dCa0VBT2dEY1NTQUdJQXRCT0dvMkF0aEpJQVpCbURkcUlnOGdCa0hZeVFCcUVMZ0pJQThnQ3lnQ0tCRGZBU0FEUVFScUlRTU1BUXNBQ3dBTFFRQWhCd05BSUFrb0F1UVJJQWROQkVBZ0NVRUFOZ0xrRVFVZ0NTZ0M0QkVnQjBHY0FteHFFUHNISUFkQkFXb2hCd3dCQ3dzZ0NTQUpLQUxnRVJBMkFrQWdCaWdDQUNnQ0RBMEFJQVlvQXV3b0lnTWdCaWdDOENoQkFuUnFJUUlEUUNBQ0lBTkdCRUFnQmlnQzdDZ2lDU0FHS0FMd0tFRUNkR29oRVNBR1FZaktBR29oRFNBR1FjUTNhaUVDQTBBZ0NTQVJSZzBESUFrb0FnQWlCeWdDQUJEN0VFVUVRQ0FHUWdBM0E1QTVJQVpDZ0lDQWdNQUJOd09JT1NBR0lBSTJBb1E1SUFaQ2dJQ0FnSUFCTndLOE55QUdJQVpCbURkcUlnTTJBcmczSUFKQkRCRDZFQ0FHSUFZMkFxeEpJQVlnQXpZQ3FFa2dCa0dveVFCcUlBY1E1UjRFUUNBR1FvQ0FnSUNBQWpjQzlFb2dCaUFHUWZESkFHb2lBellDOEVvZ0EwRUJFT1FlSUFZZ0JpZ0M5RW9pQTBFQmFqWUM5RW9nQmlnQzhFb2dBMEVEZEdvaUEwRUFOZ0lFSUFNZ0J6WUNBQU5BSUFZb0F2QktJQVlvQXZSS1FRTjBha0VJYXlJREtBSUVJZ3dnQXlnQ0FDSUxLQUlvU1FSQUlBWkJxTWtBYWlBTEtBSWtJQXhCQW5ScUlnc29BZ0FRNVI1RkJFQWdBeUFES0FJRVFRRnFOZ0lFREFJTElBc29BZ0FoRENBR0tBTDBTaUlESUFZb0F2aEtJZ3RQQkVBZ0JrSHd5UUJxSUF0QkFYUkJBaUFMR3hEa0hpQUdLQUwwU2lFREN5QUdJQU5CQVdvMkF2UktJQVlvQXZCS0lBTkJBM1JxSWdOQkFEWUNCQ0FESUF3MkFnQU1BUXNnQkNBTEVQa1FJQVpCbURkcUVPTWVJQVlnQmlnQzlFb2lDMEVCYXlJTU5nTDBTaUFHS0FMd1NpRURJQXdFUUNBTFFRTjBJQU5xUVF4cklnTWdBeWdDQUVFQmFqWUNBQXdCQ3dzZ0JrRUFOZ0wwU2lBR1FmREpBR29nQXhBMkN5QUVJQWNRK1JBZ0JpZ0N2RGNFUUNBR1FmREpBR3BCbHE0RlFiSUZRUWdnQmlnQ0FCQVhJUU1nRFVHUDhRZ1FEaG9nQXhBWUN5QUNFT0llSUFaQkFEWUNpRGtnQWlBR0tBS0VPUkEySUFaQm1EZHFFQ01MSUFsQkJHb2hDUXdBQ3dBTElBTW9BZ0FpQnlnQ0FCRDdFQVJBSUFRZ0J4RDVFQXNnQTBFRWFpRUREQUFMQUFzZ0JpQUdRZmdxYWlJQ05nS1lOeUFHSUFJb0FnQWdCRWM2QUp3M0lBWkJtRGRxSWdjb0FnQWdCaWdDQkNJQ1FZQUJha2NFUUFKQVFRQWhBeUFITFFBRUJFQWdBaERjQlNBQ0lBY29BZ0FpQXlrQ0FEY0NnQUVnQWlBREtBSUlOZ0tJQVNBSEtBSUFJZ0pCQURZQ0NDQUNRZ0EzQWdBTUFRc0NRQ0FDS0FLSUFTQUhLQUlBSWdjb0FnUkpCRUFnQWhEY0JTQUNJQWNvQWdRUTNnNE1BUXNnQWtFQU5nS0VBUXNnQWlBSEtBSUVJZ2syQW9RQkEwQWdBeUFKUndSQUlBTkJBblFpQ3lBQ0tBS0FBV29nQnlnQ0FDQUxhaWdDQURZQ0FDQURRUUZxSVFNTUFRc0xDd3NnQmlnQ0FDZ0NEQ0VKSUFSQmpBSnFJZ0lRMFI0Z0FrR0VER3BCQURZQ0FDQUNJQUlvQW9BTUVEWWdCQkNUQlNBR1FRQTJBdkFvSUFVZ0JpZ0M3Q2dRTmlBS0VPRWVJQVpCQURZQzNDWWdDaUFHS0FMWUpoQTJJQkFRNEI0Z0VCRGZIaUFRSUFZb0FzUUlFRFpCQUNBR0tBSWNJZ0lnQWtFZlN5SUNHeUVGUVFBZ0JpZ0NHQ0FDR3lFRUlBWW9BaFFoQndOQVFRQWhBd0pBQTBBZ0JDQUhSeUFESUFWSGNrVUVRQ0FHS0FJSUlRTURRQ0FEUlEwRElBTW9Bb0NBQkNFQ0lBTVFIeUFDSVFNTUFBc0FDeUFISUFOQkFuUnFLQUlBSWdKQkFEWUNLQ0FDUVFScUlBSW9BaVFRTmlBRFFRRnFJZ05CSUVjTkFBc2dCeWdDZ0FFaEJ3d0JDd3NnQmtHUXl3QnFKQUFnQ1VVTUJnc2dBeERkQlFSQUlBWkJtRGRxSWdNZ0JrSHd5UUJxSUFJb0FpUkJKR29RVmlBQ0VQOEhJQU1nQWhEZUhnd0JDeUFEUWVqMUQwWWdBMEdvOWc5R2NnMEFJQU5Cd1BZUFJnUkFJQVpCbURkcUlBSW9BaVFRM3dFTUFRc2dCa0dZeVFCcUVPWWVDeUFHSUEwMkFwUkpJQWRCQkdvaEJ3d0FDd0FMRUc4QUN5QUdJQWRCQVdvMkF2QW9JQVlvQXV3b0lBZEJBblJxSUFZb0F1QkpOZ0lBSUJsQkJHb2hHUXdBQ3dBTFJRMEFRUUFoR1NNQVFlQUJheUlRSkFBZ0NDQUlLQUlBRVBJQ0VETWFJQkJDZ0lDQWdNQUFOd0xVQVNBUUlCQkJ3QUZxTmdMUUFTQUlLQUtVQVNJUklBZ29BcGdCUVFKMGFpRXBJQkJCMEFGcUlTb0NRQUpBQTBBZ0VTQXBSd1JBSUJBZ0VTZ0NBQ0lDTmdLOEFTQUlJQUlRTXhvZ0VDZ0N2QUVoQkNBUUlBZzJBZ0FnRUNBUVFid0JhallDQkFKQUFrQWdCQVJBSUFRb0FnUWlBa0hvOVE5R0JFQWdFQ0FFUVNScUlnSTJBdHdCSUJCQndBRnFJQkJCM0FGcUVIRWdDQ0FDRUVNTUF3c2dBa0dvOWc5R0JFQWdCQ2dDTkNJRElBUW9BamhCQW5ScUlRVWdDRUh3SjJvaEJ3Ti9JQU1nQlVZRWYwRUJCU0FJSUFNb0FnQWlCaEF6R2lNQVFSQnJJZ0lrQUNBQ1FRaHFJQWRCSEdvZ0JrRWthaUlHRUp3ZElBSW9BZ2doQkNBQ1FSQnFKQUFnQkVFQ1J3UkFJQWNnQmhDbkJBc2dBMEVFYWlFRERBRUxDeG9NQXdzZ0FoRGhDQVJBSXdCQm9BRnJJaE1rQUNBSUlBUW9BaVFRTXhvQ1FBSkFBa0FDZnlBRVJTQUVLQUlFSWdKQm1QZ1JSM0pGQkVBZ0NDQUVLQUlvRU5BRElnSUVmeUFDQlVFQUN3d0JDeUFFUlNBQ1FkajNFVWR5RFFGQkFDRU5RZ0FoTEVFQUlSY2pBRUdnQjJzaUJTUUFJQVZCQURvQTlBWWdCU0FFTmdMOEJpQUZJQVJCNUFCcU5nTHdCaUFGSUFWQi9BWnFOZ0w0QmlBSVFhd2RhaUlHSUFWQjhBWnFRUWdRc1FNaEF5QUZLQUw4QmlFQ0FrQUNRQ0FEUlEwQUlBSW9Ba3hCZ0lBQlNRMEFJQVZCZ0FkcUlnSWdCVUg0Qm1vUThSMGdCVUdRQjJvaUEwR2VpZ2tnQWhBMUlBVkJ5QUZxSWdjZ0EwRzk1UWtRTFNBRlFlQUdhaUlHSUFVb0F2d0dLQUpNRUY4Z0JVR1lCbW9pQ1NBSElBWVFUaUFGUVRocUlnc2dDVUd2M1FrUUxTQUZRZEFHYWlJS1FmLy9BQkJmSUFWQjhBRnFJZ3dnQ3lBS0VFNGdDQ0FNSUFVb0F2d0dRUkJxRUNjZ0RCQVBHaUFLRUE4YUlBc1FEeG9nQ1JBUEdpQUdFQThhSUFjUUR4b2dBeEFQR2lBQ0VBOGFEQUVMSUFWQkFEb0F6QVlnQlNBQ1FlUUFhallDeUFZZ0JpQUZRY2dHYWhCQlJRMEFJQVVvQXZ3R0lnTW9BbVFpQWlBREtBSm9RUUowYWlFSEEwQWdBaUFIUndSQUlBVWdBaWdDQUNJRE5nSTRJQWdnQXhBekdpQUZLQUk0SVFNZ0JTQUlOZ0x3QVNBRklBVkJPR28yQXZRQkFrQWdBd1JBSUFNb0FnUVE5Z01OQVFzakFFRVFheUlDSkFBZ0JTZ0M4QUVoQXlBRktBTDBBU2dDQUNFSElBSkJFellDRENBQ1FmQ2dBVFlDQ0NBQ0lBSXBBd2czQXdBZ0F5QUhJQUlRUUNBQ1FSQnFKQUFNQXdzZ0FrRUVhaUVDSUFnZ0F4Q3NCUTBCREFJTEN5QUZRb0NBZ0lDQUFUY0N2QVlnQlNnQy9BWWhBaUFGSUFWQm1BWnFJZ00yQXJnR0lBTWdBaWdDVEJBNUlBVkI4QUZxSWc5Q0FEY0NuQVFnRDBLQWdJQ0F3QUUzQXBRRUlBOGdEellDa0FRZ0QwRU1FTG9RSUFVb0F2d0dJZ0lvQWtnaUF5QUNLQUpNUVFKMGFpRVdRZ0VoTHdKL0FrQUNRQU5BSUFNZ0ZrY0VRQ0FGSUFNb0FnQWlBallDMEFZZ0NDQUNFRE1hSUFnZ0JTZ0MwQVlvQWlRUU14b2dCVUdBQjJvZ0R5QUZLQUxRQmlnQ0pFRWthaUFGUWRBR2FoRHdIU0FGS0FLQUIwRUNSZ1JBSUFWQmtBZHFJZ01nQlNnQzBBWW9BaVJCSkdvUVV5QUZRY2dCYWlJSFFmQ1BDU0FERURVZ0JVRTRhaUlDSUFkQjg1b0pFQzBnQ0NBQ0lBVW9BdEFHUVJCcUVDY2dBaEFQR2lBSEVBOGFJQU1RRHhvZ0NDQUNRZXZyQXhBVUlnSWdCU2dDaEFjb0FnQkJFR29RaGdFZ0FoQVBHZ3dFQ3lBRklBZ2dCU2dDMEFZb0FpZ1EwQU1pQWpZQ0lDQUNSUTBESUFnZ0FoRDZIU0VDSUFVb0FpQVFtQWxGQkVBZ0JVSElBV29pQWlBSVFhZ2RhaUFGS0FJZ0VLY0JJQVZCT0dvaUF5QUNRY244QVJBdElBZ2dBeUFGS0FMUUJrRVFhaEFuSUFNUUR4b2dBaEFQR2d3RUN5QUZLQUlnSWdjZ0J5Z0NBQ2dDRkJFQUFDRUhJQVVvQWlBaUNTQUpLQUlBS0FJUUVRQUFJUXNnQlVFQU9nRHNBU0FGSUFVb0F0QUdRVHhxTmdMb0FTQUdJQVZCNkFGcUVFRkZEUU1nRFNBQ0lBSWdEVWtiSVExQkFDRU1JQVZCQURvQTVBRWdCVUVBT2dEZ0FTQUZRUUE2QU5nQklBVkJBRG9BMUFFZ0JVRUFPZ0RRQVNBRlFRQTZBTXdCSUFWQkFEb0F5QUVnQlNnQzBBWWlBaWdDUENJSklBSkJRR3NvQWdCQkFuUnFJUlVnQjYwaExpQUxyU0V3UVFBaENpQXNJUzFCQUNFT0EwQWdDU0FWUndSQUlBVWdDU2dDQUNJQ05nSVFJQWdnQWhBekdpQUZLQUlRSVFJZ0JTQUlOZ0xnQmlBRklBVkJFR28yQXVRR0FrQUNRQ0FDQkVBZ0FpZ0NCQ0lIUWFDREVrWUVRQ0FJS0FMRUt5RUhJQWhCeHM4RE5nTEVLeUFJS0FMQUt5RUxJQWhCQVRZQ3dDc0NRQUpBSUFnZ0NDQUNLQUlrRUlVQ1FRQVFsZ0lpRGtVTkFDQU9LQUljSWc1RkJFQWdDQ0FGUVRocVFmN2xBaEFVSWdNZ0FpZ0NKRUVRYWhBbklBTVFEeG9NQVFzZ0RoRHZIU0l0SUN4YURRRWdDQ0FGUVRocVFhajNBUkFVSWdNZ0FrRVFhaEFuSUFNUUR4b0xJQWdnQnpZQ3hDc2dDQ0FMTmdMQUt3d0tDeUFJSUFjMkFzUXJJQWdnQ3pZQ3dDdEJBU0VPREFNTElBZEI0UDBSUmdSQUlBZ29Bc1FySVFjZ0NFSC84UUkyQXNRcklBZ29Bc0FySVFzZ0NFRUJOZ0xBS3dKQUFrQWdDQ0FJSUFJb0FpUVFoUUpCQUJDV0FpSUtSUTBBSUFvb0FoUVFyZ2xGQkVBZ0NDQUZRVGhxUWNmVEF4QVVJZ01nQWtFUWFoQW5JQU1RRHhvTUFRc2dDaWdDSENJS1JRUkFJQWdnQlVFNGFrR2k1Z0lRRkNJRElBSkJFR29RSnlBREVBOGFEQUVMSUFvUVl5SXVRZ0JWSUM1N1FnSlVjUTBCSUFnZ0JVRTRha0gzOEFFUUZDSURJQUpCRUdvUUp5QURFQThhQ3lBSUlBYzJBc1FySUFnZ0N6WUN3Q3NNQ2dzZ0NDQUhOZ0xFS3lBSUlBczJBc0FySUM1Qy8vLy8vdytESVM1QkFTRUtEQU1MSUFkQitQMFJSZ1JBSUFnb0FzUXJJUWNnQ0VHZHhRTTJBc1FySUFnb0FzQXJJUXNnQ0VFQk5nTEFLeUFJSUFnZ0FpZ0NKQkNGQWtFQUVKWUNJZ3hGRFFnZ0RDZ0NGQkR6QjBVRVFDQUlJQVZCT0dwQmo5UURFQlFpQXlBQ1FSQnFFQ2NnQXhBUEdnd0pDeUFNS0FJY0lneEZCRUFnQ0NBRlFUaHFRY1htQWhBVUlnTWdBaWdDSkVFUWFoQW5JQU1RRHhvTUNRc2dEQkJqUWdCWEJFQWdDQ0FGUVRocVFkSHhBUkFVSWdNZ0FrRVFhaEFuSUFNUUR4b01DUXNnTUNBTUVPOGRJakZZQkVBZ0NDQUhOZ0xFS3lBSUlBczJBc0FySURGQy8vLy8vdytESVRCQkFTRU1EQVFMSXdCQk1Hc2lBeVFBSUFOQkNHb2dBMEVRYWlJSklBTkJKV29nTUJDWUV5QUZRWUFIYWlJR0lBa2dBeWdDQ0JEbUNTQURRVEJxSkFBZ0JVR1FCMm9pQTBIVi9nZ2dCaEExSUFWQk9Hb2lDU0FEUWUvMkNCQXRJQWdnQ1NBQ1FSQnFFQ2NnQ1JBUEdpQURFQThhSUFZUUR4b01DQXNnQjBHWS9SRkdCRUFnQlVFNGFpSUhJQWdnQWhDSURDQUhFREFOQ1NBRlFUaHFFQm9vQWdBaEFpQUZRUUU2QU13QklBVWdBallDeUFFTUF3c2dCMEg0K2hGR0JFQWdCVUU0YWlJSElBZ2dBaENIRENBSEVEQU5DU0FGUVRocUVCb29BZ0FoQWlBRlFRRTZBTlFCSUFVZ0FqWUMwQUVNQXdzZ0IwSFEvQkZHQkVBZ0JVRTRhaUlISUFnZ0FoQ0dEQ0FIRUdJTkNTQUZJQVZCT0dvUVNpa0NBRGNEMkFFZ0JTMEE0QUVOQXlBRlFRRTZBT0FCREFNTElBZEJxSUlTUmdSQUlBVkJBVG9BNUFFTUF3c2dCMEhZZ2hKR0JFQWdCVUVBT2dBOElBVWdCU2dDMEFaQlBHbzJBamdnQmlBRlFUaHFRUVVRc1FORkRRTWdCVUVPTmdLVUJ5QUZRZUtaQVRZQ2tBY2dCU0FGS1FPUUJ6Y0RDQ0FJSUFVb0FoQWdCVUVJYWhCQURBa0xJQWNROWdNTkFRc2pBRUVRYXlJQ0pBQWdCU2dDNEFZaEF5QUZLQUxrQmlnQ0FDRUhJQUpCRGpZQ0RDQUNRZUtaQVRZQ0NDQUNJQUlwQXdnM0F3QWdBeUFISUFJUVFDQUNRUkJxSkFBTUJ3c2dDQ0FDRUt3RlJRMEdDeUFKUVFScUlRa01BUXNMSUE1RklBb2dESEpGY2tVRVFDQUlJQVZCT0dwQjk4UURFQlFpQWlBRktBTFFCa0VRYWhBbklBSVFEeG9NQkFzZ0xTQXVmRUlCZlNJc0lDd2dMb0o5SWl4Q2dJQ0FnQkJhQkVBZ0JVRTRhaEJKSWdKQkNHb2lBMEh4SmhBT0dpQUNJQUlvQWdCQkRHc29BZ0JxSWdjZ0J5Z0NCRUcxZjNGQkNISTJBZ1FnQXlBc0VNTUVHaUFEUWNFbkVBNGFJQUlnQWlnQ0FFRU1heWdDQUdvaUJ5QUhLQUlFUWJWL2NVRUljallDQkNBRFFYOFFJUm9nQTBIeHJnRVFEaG9nQlVHUUIyb2lBeUFDUVF4cUVFSWdDQ0FESUFVb0F0QUdRUkJxRUNjZ0F4QVBHaUFDRUZFTUJBVWdDQ2dDQUNFQ0lBVW9BdEFHS0FJa0lRY2dCU0FGS0FLOEJqWUNrQWNnQlNBc1BnS0FCeUFGSUM0K0F1QUdJQVVnTUQ0Q0VDQUNFQndnQjBFa2FpRU9JQVZCeUFGcUlSVWpBRUVnYXlJTEpBQWdBa0h3QUdvaUNTZ0NCQ0VIQWtBZ0FpZ0NlRUVEYWtGOGNTSUtRYUgvQTJ0Qi92OTdTd1JBSUFjaEFnd0JDeUFKUVpDQUJFRVFFTmtDSWdJMkFnUkJBQ0VLSUFKQkFEWUNnSUFFSUFjRVFDQUhJQUkyQW9DQUJBd0JDeUFKSUFJMkFnQUxJQWtnQ2tIZ0FHbzJBZ2dnQlNnQzBBWWhEQ0FMSUE0UVZpRVVJQVVvQWlBaERpQUZLQUtRQnlFYUlBVW9Bb0FISVJnZ0JTZ0M0QVloSFNBRktBSVFJUjRqQUVIUUFXc2lCeVFBSUFjZ0dqWUN5QUVnQnlBT05nTE1BU0FISUJnMkFzUUJJQWNnSFRZQ3dBRWdCeUFlTmdLOEFTTUFRU0JySWc0a0FDQUNJQXBxSUE0Z0ZCQldJQWNvQXN3QklBY29Bc2dCSUFjb0FzUUJJQWNvQXNBQklBY29BcndCSUJVUTJnOGlBa0dZbVJJMkFnUWdBa0dRbWhJMkFnQWdEa0VnYWlRQUlBSWdERFlDWENBQ1FkeVpFallDQUNBTVJRUkFJQWRCQ0dwQnVaZ0ZRUzFCQ1NBSFFhZ0JhaEFkSWdvUUZ5SU1RUmhxUWZHcUNCQU9HaUFNRUJnZ0NoQWVDeUFIUWRBQmFpUUFJQWtnQWhBb0lBa2dDU2dDR0VFQmFqWUNHQ0FMUVNCcUpBQWdCU0FDTmdJNElBZ29BZ0FpQWhBY0lBSkI1QUZxSUFVb0F0QUdJQVVvQWpnUXVRRWdMeUF1SUM0Z0wxUWJJUzhnQTBFRWFpRURJQ3dnTUh3aExDQUZRWmdHYWlBRlFUaHFFQ1FNQWdzQUN3c2dMQ0F2ZkVJQmZTSXRJQzBnTDRKOUlpMUNnSUNBZ0JCYUJFQWdCVUU0YWhCSklnSkJDR29pQTBHS0p4QU9HaUFDSUFJb0FnQkJER3NvQWdCcUlnY2dCeWdDQkVHMWYzRkJDSEkyQWdRZ0F5QXRFTU1FR2lBRFFkV3VBUkFPR2lBRlFjZ0JhaUlESUFKQkRHb1FRaUFJSUFNZ0JTZ0MvQVpCRUdvUUp5QURFQThhSUFJUVVRd0NDeUFJS0FJQUlRSWdCU2dDL0FZb0FpUWhBeUFGSUM4K0FqZ2dCU0F0UGdMSUFTQUZJQ3crQXBBSElBSVFIQ01BUWRBQmF5SUpKQUFnQlNnQy9BWWhCeUFKUVJCcUlBTkJKR29pRlJCV0lRTWdDVUVBT2dBTUlBa2dCVUdZQm1vaUNrRWdhallDQ0NBSlFUQnFJQWNnQXlBSlFRaHFJQVVvQWpnZ0JTZ0N5QUVnQlNnQ2tBY1E5QnNpRGlnQ0NDRVdJQWtnRGpZQ0JDQUpJQlkyQWdBQ1FDQUNRUkJxSWdKQkhHb2lGQ0FKRUwwQklnTUVRQ0FES0FJTUlRSU1BUXNqQUVFd2F5SUxKQUFnQWlJREtBSUVJUWNDUUNBQ0tBSUlRUWRxUVhoeElneEI0ZjREYTBIKy8zdExCRUFnQnlFQ0RBRUxJQU5Ca0lBRVFSQVEyUUlpQWpZQ0JFRUFJUXdnQWtFQU5nS0FnQVFnQndSQUlBY2dBallDZ0lBRURBRUxJQU1nQWpZQ0FBc2dBeUFNUWFBQmFqWUNDQ0FDSUF4cUlRSWdCU2dDL0FZaEJ5QUxRUkJxSUJVUVZpRU1JQXNnQ2tFZ2FqWUNDQ0FMSUFvb0FpQWdDa2M2QUF3Z0F5QUNJQWNnRENBTFFRaHFJQVVvQWpnZ0JTZ0N5QUVnQlNnQ2tBY1E5QnNpQWhBb0lBTWdBeWdDR0VFQmFqWUNHQ0FMUVRCcUpBQWdDU0FDTmdJRUlBa2dGallDQUNBVUlBa1F2QUVMSUE0UXpRWWFJQWxCMEFGcUpBQWdCU0FDSWdNMkFqUWdDRUdzS1dvaEIwRUFJUUlEUUFKQUFrQWdBaUFGS0FLOEJrOE5BQ0FGSUFKQkFuUWlDU0FGS0FLNEJtb2lDeWdDQUNnQ0tDSUtOZ0tRQnlBS0tBSUVRZkNrRWtZRVFDQUZJQXNvQWdBb0FseEJFR28yQXNnQklBVkJPR29nQnlBRlFUUnFJQVZCeUFGcUVLa0pEQUVMSUFWQk9Hb2dCeUFGUVpBSGFoRC9DeUFGTFFBOFJRMEJJQVZCeUFGcUlBY2dCVUUwYWlBRlFUaHFFS2tKQ3lBSUtBS0lOQ0lDQkg4Z0FpZ0NRQkNFQXdWQmZ3c2hGQ0FGS0FJMElRd2pBRUdRQTJzaUN5UUFBa0FnRENnQ1NFVUVRQ0FHSUF0QkNHcEIrL3dCRUJRaUFpQU1LQUtZQVVFUWFoQW5JQUlRRHhvTUFRc2dDMEVJYWhEZUJpRWFJQXdvQWtRaURpQU1LQUpJUVFKMGFpRWRJQXRCK0FGcUlSNERRQUpBSUE0Z0hVWWlGdzBBQWtBZ0RpZ0NBQ0lKS0FJb0lnSW9BZ1JCa0tJU1J5QUNSWEpGQkVBQ1FDQUNLQUljS0FJRVFhaWpFa2NOQUNBSklBd29Ba1FnRENnQ1NFRUNkR3BCQkdzb0FnQkdEUUFnQmlBTFFlQUJha0c3N1FBUUZDSUNJQWtvQWx4QkVHb1FKeUFDRUE4YURBTUxJQUlRM0F0RkRRRWdCaUFKS0FKY0tBSW9RUkJxRU5zTERBSUxJQVlnQWhEZUN3MEFJQVlnQzBIZ0FXcEJqdXdBRUJRaUFpQUpLQUpjUVJCcUVDY2dBaEFQR2d3QkN5QUpLQUpjSWdJb0Fqd2lDaUFDUVVCcktBSUFRUUowYWlFZ0lBbEJQR29oSVVFQUlRSkJBQ0VWUVFBaEdFRUFJUU1EUUFKQUlBb2dJRWNFUUNBS0tBSUFJZ2RGRFFFZ0J5Z0NCQ0lXUWFpQ0VrWUVRQ0FISVFNTUFnc2dGa0dZL1JGR0JFQWdDUzBBUUVVRVFDQUxRZUFCYWtIbm1nVkJ2QkJCQ0NBTFFZQURhaEFkSWhZUUZ5RVlJQjVCNHVnSUVBNGFJQmdRR0NBV0VCNExRUUVoR0NBR0lBY2dJUkMrQVNnQ0FDQUpLQUlvSUJvZ0ZDQUpLQUpjUVJCcVFRQVFyUndOQWd3RUN5QVdRZmo2RVVZRVFDQUdJQWNnQ1NnQ0tDQVVRUUFRdnh4RkRRUkJBU0FWSUFZb0FnZ2dCeENXQ1NnQ0VFRUpSaHNoRlF3Q0N5QVdRZEQ4RVVZRVFDQUdJQWNpQWlBSktBSW9FTDRjUlEwRURBSUxJQlpCK1AwUlJ3MEJJQWtvQWlndEFCQkJBbkVOQVNBR0lBdEI0QUZxUWFld0JCQVVJZ0lnQjBFUWFoQW5JQUlRRHhvTUF3c2dBMFVnRlVIL0FYRnlSUVJBSUFZZ0MwSGdBV3BCbis4Q0VCUWlBaUFEUVJCcUVDY2dBaEFQR2d3REN5QU9RUVJxSVE0Z0FrVWdHSElOQXlBR0lBdEI0QUZxUVpuaUFoQVVJZ01nQWtFUWFoQW5JQU1RRHhvTUFnc2dDa0VFYWlFS0RBQUxBQXNMSUJvUTNRWUxJQXRCa0FOcUpBQkJBQ0FYUlEwRUdpQUZJQTFCQVdvaUFqWUNNQ0FDUVlBQ1R3UkFJQVZCMEFacUlnTWdCVUg0Qm1vUThSMGdCVUhnQm1vaUIwR2VpZ2tnQXhBMUlBVkJnQWRxSWdZZ0IwSEZyd29RTFNBRlFTQnFJZ2tnQWhCZklBVkJrQWRxSWdJZ0JpQUpFRTRnQlVISUFXb2lDeUFDUWJmZENSQXRJQVZCRUdvaUNrSC9BUkJmSUFWQk9Hb2lEU0FMSUFvUVRpQUlJQTBnQlNnQy9BWkJFR29RSnlBTkVBOGFJQW9RRHhvZ0N4QVBHaUFDRUE4YUlBa1FEeG9nQmhBUEdpQUhFQThhSUFNUUR4b01CQXNnQlVFNGFpQUlRWXc2YWlBRlFUUnFJQVZCTUdvUXlSQWdCU2dDTkF3RUN5QUZLQUs0QmlBSmFpZ0NBQ0FETmdJa0lBSkJBV29oQWd3QUN3QUxJQWdnQnpZQ3hDc2dDQ0FMTmdMQUt3dEJBQXNoRFNBUEVPNGRJQThRN3dzZ0R5QVBLQUtRQkJBMklBVkJtQVpxRUNNTElBVkJvQWRxSkFBZ0RRc2lBMFVOQVNBSUtBSUFJZ0lRSENBQ1FlUUJhaUFFSUFNUXVRRU1BZ3NnRTBHM213VkIyUjFCQ0NBSUtBSUVFQmNpQWtFWWFpSURRZTYvQ3hBT0dpQURRZHVTQXhBT0dpQUNFQmdMUVFBaEF3c2dFMEdnQVdva0FDQUREUU1NQmdzZ0FrSDQ4dzlHQkVBQ2Z5TUFRYUFJYXlJR0pBQWdCaUFFTmdLTUNDQUlJQVFvQWlRUU14b2dCa0dNQ0dvaEJ5QUlLQUlBSWdRUUhDQUVLQUtzQVNFREFrQWdCQ2dDc0FGQkIycEJlSEVpQlVIaDlRTnJRZjcvZTBzRVFDQURJUUlNQVFzZ0JFR1FnQVJCRUJEWkFpSUNOZ0tzQVVFQUlRVWdBa0VBTmdLQWdBUWdBd1JBSUFNZ0FqWUNnSUFFREFFTElBUWdBallDcUFFTElBUWdCVUdnQ21vMkFyQUJJQUlnQldvaEN5QUhLQUlBSVFVakFFRVFheUlESkFBZ0EwRUROZ0lNSUFOQkFEb0FCQ0FESUFWQjVBQnFOZ0lBSUFNb0FnQWlBaWdDQUNJSElBSW9BZ1JCQW5ScUlRa0RRQ0FKSUFjaUFrY0VRQ0FDUVFScUlRY2dBaWdDQUNJS0JIOGdDaWdDQkJDOUhnVkJBQXRGRFFFTEN5QURJQUlnQ1VjNkFBc2dBeWdDRENFSElBTXRBQXNoQ1NBTEVJc2NJZ0pCaUpFU05nSUFJQUpCQ0dvUWlod2dBaUFKT2dBOElBSWdCellDT0NBQ1FZQ1RFallDQkNBQ1FiQ1RFallDQUNBQ0lBVTJBa0FnQWtHZ2t4STJBZ0FnQWtIay93d3BBZ0EzQWtRZ0FrSHMvd3dwQWdBM0Frd2dBa0gwL3d3cEFnQTNBbFFnQWtIY0FHb1Ezd1lhSUFKQjdBRnFFSklKR2lBQ1Fld0RhaENTQ1JvZ0FrSHNCV29RM3dZYUlBSkIvQVpxSWdkQ2dJQ0FnSUFCTndKRUlBY2dCellDUUNBSFFjd0FhaENpQmhvZ0FrSE1DV3BCQUVFb0VIa2FJQUpDQURjRGdBb2dBa0lJTndQNENTQUNRWWdLYWtJQU53TUFJQUpCbUFwcVFRQTZBQUFnQWtFQU9nQ1VDaUFDUVpBS2FrR0FnSUQ4QXpZQ0FDQURRUkJxSkFBZ0JFR29BV29nQWhBb0lBUWdCQ2dDd0FGQkFXbzJBc0FCSUFZZ0FqWUNpQWdnQ0NnQ0FDSURFQndnQTBIa0FXb2dCaWdDakFnZ0FoQzVBU0FJS0FLSU5DRWhJQWdnQWpZQ2lEUWdDRUc0SFdvaUZoQ05BaUFHS0FLTUNDSUNLQUprSWdjZ0FpZ0NhRUVDZEdvaERDQUlRYXdkYWlFTEEwQUNRQUpBSUFjZ0RFY0VRQ0FHSUFjb0FnQWlBallDa0FnZ0NDQUNFRE1hSUFZb0FwQUlJUW9nQmlBSU5nSklJQVlnQmtHUUNHbzJBa3dDUUFKQUlBb0VRQ0FLS0FJRUlnSkJrSUlTUmdSQUlBZ2dDa0VrYWhCRERBWUxJQUpCaU9vUFJpQUNRY0NDRWtaeURRVWdBa0dvK2c5R0JFQWdCa0dZQW1vaEJVRUFJUU5CQUNFSkl3QkJnQUZySWdJa0FDQUNRZWdBYWlFRUEwQWdCQ0FKUVFOMGFpSU5RUUE2QUFRZ0RVRUFPZ0FBSUFsQkFXb2lDVUVEUncwQUN3TkFBa0FnQTBFRFJnUkFJQUlnQ2lnQ0pEWUNXQ0FDSUFvb0FpZzJBbHdnQWlBS0tBSXNOZ0pnSUFKQ2dJQ0FnREEzQTFBZ0FpQUNRVUJyTmdKTUlBSkNnSUNBZ0RBM0F6Z2dBaUFDUVNocU5nSTBJQUpCTkdvaEQwRUFJUU1DUUFOQUFrQWdBMEVEUmcwQUlBSkIyQUJxSUFOQkFuUnFLQUlBSWdsRkRRQWdBaUFJSUFrUWhRSWlEVFlDSkNBTlJRUkFJQVZCQWpvQUhBd0RDeUFDSUEwb0FoUWlEVFlDSUFKQUlBMEVmd0ovUVFBZ0RTZ0NCQ0lOS1FNUVFzREFnSUtBZ0lnaGd5SXNJQ3hDQVgyRFVBMEFHa0VCSUEwUThnY05BQm9nRFJDZ0hRc0ZRUUFMQkVBZ0FpZ0NKQ2dDR0VFQmEwRUNTUTBCQ3lBSUlBSkJFR3BCOC9vR0VCUWlBeUFKUVJCcUVDY2dBeEFQR2lBRlFRSTZBQndNQXdzZ0EwRUJhaUVESUFKQlFHc2dBa0VrYWhEQUJDQUNRU2hxSUFKQklHb1F3QVFNQVFzTElBSkJBRG9BRENBQ0lBODJBZ2dnQWtFSWFoQzNDeUlKUlFSQUlBZ2dBa0VRYWtHdStnWVFGQ0lESUFwQkVHb1FKeUFERUE4YUlBVkJBam9BSEF3QkN5QUpLQUlFUWRDZ0VrWUVRQ0FJS0FJQUVOUUNJUWtMUVFBaEF3TkFJQUlvQWxBZ0Ewc0VRQ0FJSUFJb0Frd2dBMEVDZEdvb0FnQWdDUkNXQWlJS1JRUkFJQVZCQWpvQUhBd0RDd0pBSUFvb0Fod2lDZ1JBSUFvUVkwSUFWd1JBSUFnZ0FrRVFha0dPaGdjUUZDSUVJQUpCMkFCcUlBTkJBblJxS0FJQVFSQnFFQ2NnQkJBUEdpQUZRUUk2QUJ3TUJRc2dCQ0FEUVFOMGFpSU5JQW9RV1RZQ0FDQU5MUUFFRFFFZ0RVRUJPZ0FFREFFTElBUWdBMEVEZEdvaUNpMEFCRVVOQUNBS1FRQTZBQVFMSUFOQkFXb2hBd3dCQ3dzZ0JEVUNBRUlCSUFRdEFBUWJJU3hCQVNFREEwQWdBMEVEUndSQUlBUWdBMEVEZEdvaUNUVUNBRUlCSUFrdEFBUWJJQ3grSWl4Q2dJQ0FnQkJhQkVBZ0NDQUNRUkJxUVpMQ0F4QVVJZ1FnQWtIWUFHb2dBMEVDZEdvb0FnQkJFR29RSnlBRUVBOGFJQVZCQWpvQUhBd0RCU0FEUVFGcUlRTU1BZ3NBQ3dzZ0JTQUVLUUlBTndJRUlBVWdCQ2tDRURjQ0ZDQUZJQVFwQWdnM0Fnd2dCVUVCT2dBY0N5QUNRU2hxRUt3RElBSkJRR3NRckFNZ0FrR0FBV29rQUF3QkN5QUVJQU5CQTNScUlnbEJBVFlDQUNBSkxRQUVSUVJBSUFsQkFUb0FCQXNnQTBFQmFpRUREQUVMQ3lBRkVPWWRJQVV0QUJ4QkFrWU5BeUFHS0FLSUNDRURJQVpCbUFKcUlnSVE1aDBnQWkwQUhFRUJSd1JBRUc4QUN5QUNLUUlNSVN3Z0Fpa0NCQ0V0SUFNZ0Fpa0NGRGNDVkNBRElDdzNBa3dnQXlBdE53SkVEQVlMSUFJUTlnTU5BUXNqQUVFUWF5SUNKQUFnQmlnQ1NDRURJQVlvQWt3b0FnQWhCeUFDUVFrMkFnd2dBa0dobmdFMkFnZ2dBaUFDS1FNSU53TUFJQU1nQnlBQ0VFQWdBa0VRYWlRQURBRUxJQWdnQ2hDc0JRMERDMEVBSVFjTUFRdEJBQ0VISUFaQkFEb0FoQWdnQmlBR0tBS01DRUhrQUdvMkFvQUlJQXNnQmtHQUNHb1FRVVVOQUNBR1FaZ0NhaUlDUWdBM0F0d0ZJQUpDZ0lDQWdNQUJOd0xVQlNBQ0lBSTJBdEFGSUFKQkRCREZFQ0FHS0FLTUNDSURLQUpJSWdjZ0F5Z0NURUVDZEdvaEZVRUFJUU1DUUFKQUEwQWdCeUFWUndSQUlBZ2dCeWdDQUNJRkVETWFJQVpCa0FKcUlBSWdCU2dDSkVFa2FpQUZRUkJxSWdRUW5oNGdCaWdDa0FKQkFrWUVRQ0FHUWNnQWFpSUhJQVVvQWlSQkpHb1FVeUFHUVlBQ2FpSUZRZmVLQ1NBSEVNUUJJQVpCa0FocUlnTWdCVUh6bWdrUUxTQUlJQU1nQkJBbklBTVFEeG9nQlJBUEdpQUlJQU5CNitzREVCUWlBeUFHS0FLVUFoQ0dBU0FERUE4YUlBY1FEeG9NQXdzZ0JpZ0NqQWdoQ2tFQUlRbEJBQ0VOSXdCQjhBQnJJZ1FrQUNBRUlBTTJBa2dnQkNBRk5nSk1JQWdnQlNnQ0pCQXpHaUFFSUFnMkFrQWdCQ0FFUWN3QWFqWUNSQ0FFUVFBNkFEd2dCRUVBT2dBNElBUkJBRG9BTkNBRVFRQTZBREFnQkVFQU9nQXNJQVJCQURvQUtDQUtFTndHSVFvZ0JDZ0NUQ0lNS0FJNElnVWdEQ2dDUEVFQ2RHb2hEd0pBQWtBQ1FBSkFJQW9FUUNBSVFhd2RhaUVPQTBBZ0JTQVBSZzBDSUFRZ0JTZ0NBQ0lLTmdJa0lBZ2dDaEF6R2lBRUtBSWtJUW9nQkNBSU5nSVlJQVFnQkVFa2FqWUNIQUpBSUFwRkRRQUNRQ0FLS0FJRUlneEJtUDBSUmdSQUlBUkIwQUJxSWd3Z0NDQUtFSWdNSUF3UU1BMEdJQVJCMEFCcUVCb29BZ0FoQ2lBRVFRRTZBRHdnQkNBS05nSTREQUVMSUF4QitQb1JSZ1JBSUFSQjBBQnFJZ3dnQ0NBS0VJY01JQXdRS3cwQkRBWUxJQXhCcUlJU1JnMEFJQXhCMFB3UlJnUkFJQVJCMEFCcUlnd2dDQ0FLRUlZTUlBd1FzZ0VOQVF3R0N5QU1FUFlEQkVBZ0NDQUtFS3dGRFFFTUJnc2dERUhBK3hGR0JFQWdCRUVBT2dCVUlBUWdCQ2dDVEVFNGFqWUNVQ0FPSUFSQjBBQnFRUU1Rc1FNRVFDQUVRUk0yQW13Z0JFSEltQUUyQW1nZ0JDQUVLUU5vTndNQUlBZ2dCQ2dDSkNBRUVFQU1Cd3NnQkVIZ0FHb2lDU0FJSUFvUTNSQWdDUkF3RFFZZ0JFSGdBR29RR2lnQ0FDRUtRUUVoQ1NBRVFRRTZBRFFnQkNBS05nSXdEQUVMSUF4QnNQb1JSdzBCSUFSQkFEb0FWQ0FFSUFRb0FreEJPR28yQWxBZ0RpQUVRZEFBYWtFREVMRURCRUFnQkVFVE5nSnNJQVJCeUpnQk5nSm9JQVFnQkNrRGFEY0RDQ0FJSUFRb0FpUWdCRUVJYWhCQURBWUxJQVJCNEFCcUlnMGdDQ0FLRU40UUlBMFFNQTBGSUFSQjRBQnFFQm9vQWdBaENrRUJJUTBnQkVFQk9nQXNJQVFnQ2pZQ0tBc2dCVUVFYWlFRkRBRUxDeU1BUVJCcklnVWtBQ0FFS0FJWUlRa2dCQ2dDSENnQ0FDRUtJQVZCRXpZQ0RDQUZRY2lZQVRZQ0NDQUZJQVVwQXdnM0F3QWdDU0FLSUFVUVFDQUZRUkJxSkFBTUFnc0RRQ0FGSUE5R0RRRWdCQ0FGS0FJQUlnbzJBbWdnQ0NBS0VETWFJQVFvQW1naENpQUVJQWcyQWxRZ0JDQUVRZWdBYWpZQ1VBSkFJQW9FUUNBS0tBSUVFUFlERFFFTEl3QkJJR3NpQ1NRQUlBUW9BbFFoQ2lBRUtBSlFLQUlBSWdVRWZ3Si9RUUFnQlNnQ0JDSUZLUU1RUW9LQWlLQ0VvWUNBd1FDRElpd2dMRUlCZllOUURRQWFRUUVDZjBFQUlBVXBBeEJDZ29DQW9JQ2dnSUFCZ3lJc0lDeENBWDJEVUEwQUdrRUJJQVVRN0IwTkFCb2dCUkRIRUFzTkFCb0NmMEVBSUFVcEF4QkNnSUNJZ0lTQmdJREFBSU1pTENBc1FnRjlnMUFOQUJwQkFTQUZFT3NkRFFBYUlBVVE2aDBMQ3dWQkFBc2hCU0FFS0FKUUtBSUFJUTBDZnlBRkJFQWdDVUgzbHdFMkFoaEJJeUVNSUFsQkdHb01BUXNnQ1VISW1BRTJBaEJCRXlFTUlBbEJFR29MSWdVZ0REWUNCQ0FKSUFVcEFnQTNBd2dnQ2lBTklBbEJDR29RUUNBSlFTQnFKQUFNQXdzZ0JVRUVhaUVGSUFnZ0NoQ3NCUTBBQ3d3QkMwRUFJUVVnQkVFQU9nQVVJQVFnQkNnQ1RFRTRhallDRUNBSVFhd2RhaUlQSUFSQkVHb1FRVVVOQWlBRUlBZ2dCQ2dDVENnQ0tCRFFBeUlLTmdKb0lBcEZEUUFnQ0VFQUlBb2dCQ2dDVENnQ0tFRVFhaERvQkEwQklBUkJRR3NRb2g0TUFndEJBQ0VGREFFTEFrQWdDaWdDQkVIWXJCSkhEUUFnQ0NBS0tBSWNJQW9vQWhnZ0JDZ0NURUVRYWhEb0JBMEFJQVJCUUdzUW9oNE1BUXNnQkVFQU9nQllJQVJCQURvQVVDQUpSU0FOUlhKRkJFQWdCRUV3YWhDK0FUVUNBQ0VzSUFSQktHb1F2Z0UxQWdBaExTQUVRUUU2QUZnZ0JDQXNJQzFDSUlhRU53TlFDeUFJS0FJQUlRa2dCRUVBTmdKZ0lBUkJBRFlDR0NBRVFYODJBaVFnQ1JBY0l3QkJJR3NpQlNRQUlBbEJxQUZxSWdrUXZSQWhDaUFFS0FJa0lRMGdCQ2dDR0NFTUlBUW9BbUFoRGlBRUtBSm9JUk1nQkNnQ1NDRVhJQVFvQWt3aEZDQUZJQVFwQWpnaUxEY0RHQ0FGSUFRb0FsZzJBaEFnQlNBRUtRSlFOd01JSUFVZ0xEY0RBQ0FKSUFvZ0ZDQVhJQk1nRGlBTUlBMGdCVUVJYWlBRkVQSVBJZ3dRS0NBSklBa29BaGhCQVdvMkFoZ2dCVUVnYWlRQUlBZ29BZ0FpQlJBY0lBVkI1QUZxSUFRb0Frd2dEQkM1QVNNQVFiQUJheUlLSkFBZ0RDZ0NDQ0VPSUFwQkFEb0FyQUVnQ2lBT1FUaHFJZ1UyQXFnQlFRRWhEUUpBSUFwQnFBRnFRUVFRbHdrTkFBSkFBa0FDUUNBTUtBSU1JZ2tvQWdSQjJLd1NSeUFKUlhJTkFDQUtRUUE2QUtRQklBb2dCVFlDb0FFZ0R5QUtRYUFCYWtFQ0VMRURSUTBBQWtBZ0NTZ0NIQ0lUUVFOckRnY0JBZ0VDQUFBQUFnc2dEeWdDdUFvaEJTQUtRUU0yQWhBZ0JVRWNhaUFLUVJCcUVLMEVSUTBCSUF3b0Fnd2hDUXNnQ1JDWUNTRUpJQXdvQWd3aEJTQUpCRUFnQlMwQUVFRUJjUTBESUE4Z0NrRVFha0hHdHdRUUZDSUZJQTRvQWloQkVHb1FKeUFGRUE4YURBSUxJQVVFZndKL1FRQWdCU2dDQkNJRktRTVFRc0NBZ0lTUWlJU0FBWU1pTENBc1FnRjlnMUFOQUJwQkFTQUZFTmtMRFFBYUFuOUJBQ0FGS1FNUVFzQ0FnSVNBaUFTRElpd2dMRUlCZllOUURRQWFRUUVnQlJEWUN3MEFHaUFGRUpzY0N3c0ZRUUFMRFFJZ0NpQVBLQUlJSUF3b0Fnd1Fwd0VnQ2tFUWFpSUZRZjNFQ2lBS0VEVWdEeUFGSUE1QkVHb1FKeUFGRUE4YUlBb1FEeG9NQVFzZ0NrRVFhaEJKSWdWQkNHcEI0WTBKRUE0YUlBVWdFeEMxQzBFSWFrSEczQVFRRGhvZ0NpQUZRUXhxRUVJZ0R5QUtJQTVCRUdvUUp5QUtFQThhSUFVUVVRdEJBQ0VOQ3lBS1FiQUJhaVFBSUF4QkFDQU5HeUVGQ3lBRVFmQUFhaVFBSUFWRkRRSWdCaWdDaUFnZ0JSQ2RIZ0pBSUFVb0Fnd1E4QVlpQlVVTkFDQUdLQUtNQ0JDRUF5SUVRUUpMRFFBZ0JTQUVRUUYwRUp3ZUN5QURRUUZxSVFNZ0IwRUVhaUVIREFFTEN3SkFJQVlvQW93SUtBSlVJZ01FUUNBSUlBTVEwQU1pQ1VVTkFnd0JDeUFJS0FJQUVJUU1JUWtMSUFZb0FvZ0lJQWsyQWdnZ0JpZ0NqQWdRM0FZaEJ5QUdLQUtNQ0NFREFrQUNRQUpBQWtBQ1FDQUhCRUFnQmtFQU9nRDhBU0FHSUFOQjVBQnFOZ0w0QVVFQklRTWdCa0g0QVdwQkF4Q1hDVVVFUUNBR1FRQTZBUFFCSUFZZ0JpZ0NqQWhCNUFCcU5nTHdBU0FHUWZBQmFrRUVFSmNKSVFNTElBWW9Bb3dJSWdVb0FuZ2lCeUFGS0FKOFFRSjBhaUVLQTBBZ0J5QUtSZzBDSUFnZ0J5Z0NBQ0lGRURNYUlBVkZEUU1DUUFKL0lBVW9BZ1FpQkVHWS9SRkdCRUFnQmtISUFHb2lCQ0FJSUFVUWlBeEJBU0FFRURBTkFSb2dCaWdDaUFnaEJTQUdRY2dBYWhBYUtBSUFJUVFnQlVHWUNtcEJBVG9BQUNBRklBUTJBcFFLUVFBTUFRc2dCRUg0K2hGR0JFQWdCa0hJQUdvaUJDQUlJQVVRaHd3Z0JCQXJRUUZ6REFFTElBUVE5Z01FUUNBSUlBVVFyQVZCQVhNTUFRc2dCRUhRL0JGR0JFQWdCa0hJQUdvaUJDQUlJQVVRaGd3Z0JCQ3lBVUVCY3d3QkN5QUVRYWlDRWtZTkFTQUVRYkQ2RVVZRVFDQURSUTBHSUFaQnlBQnFJZ1FnQ0NBRkVONFFJQVFRSzBFQmN3d0JDeUFEUVFGeklBUkJ3UHNSUjNJTkJTQUdRY2dBYWlJRUlBZ2dCUkRkRUNBRUVDdEJBWE1MRFFnTElBZEJCR29oQnd3QUN3QUxJQU1vQW54RkRRQWdDQ0FES0FKNEtBSUFJZ01RTXhvZ0JrRWxOZ0pNSUFaQmxyZ0JOZ0pJSUFZZ0Jpa0RTRGNET0NBSUlBTWdCa0U0YWhCQURBVUxBa0FnQ1JEd0JpSURSUTBBUVFBaEJ5QUlRUUFnQXlBR0tBS01DRUVRYWhEb0JFVUVRQ0FHUVpBSWFpSURJQVlvQW93SUtBSWtRU1JxRUZNZ0JrSElBR29pQlVIdjd3a2dBeEExSUFnZ0JTQUdLQUtNQ0VFUWFoQ0dBU0FGRUE4YUlBTVFEeG9NQndzZ0JpZ0NqQWdRaEFNaUIwRUNTdzBBSUFNZ0IwRUJkRUVCY2hDY0hnc2dCaWdDaUFnaEJ5TUFRU0JySWdNa0FDQURRUkJxSUFoQjJDZHFLQUlBSUFoQjNDZHFLQUlBUWFRQmJHcEJwQUZySWdVUTR4QWdBMEVJYWlBRkVPSVFJQWRCZ0FwcUlRY0RRQ0FES0FJUUlnVWdBeWdDQ0VZRVFDQURRU0JxSkFBRklBVVFzQWtpQlNnQ0NDRUVJQU1nQlNrQ0FEY0RHQ0FISUFOQkdHb1E0UkFnQkRZQ0FDQURRUkJxRU9BUURBRUxDeUFHS0FLTUNCRGNCZ1JBSUFoQmdDbHFJQVpCaUFocUVDUUxJQVlvQW93SUtBSllJZ05GRFFNZ0NDQURFRE1hSUFnb0FwQTBCRUFnQmtISUFHcEJ0NXNGUWVrSVFRZ2dDQ2dDQkJBWElnTkJHR3BCcmN3QUVBNGFJQU1RR0F3RkN5QUdLQUtNQ0NnQ1dDRURJQWdvQWdBaUJ4QWNJQWRCcUFGcUlnUWhLeUFFRVBFRklRa2dCa0dJQ0dvb0FnQWhCU01BUWNBQmF5SUhKQUFnQnlBRk5nSzhBU0FGS0FKQUlRVWdCMEVBTmdJSUlBa2dCU2dDV0VFQUlBY29BcndCRU5jTElnVkJzSTRTTmdJRUlBVkJxSThTTmdJQUlBVkIrSTRTTmdJQUlBY29BcndCUlFSQUlBZEJDR3BCK0pJRlFTaEJDU0FIUWFnQmFoQWRJZ2tRRnlJS1FSaHFRY3l4Q0JBT0dpQUtFQmdnQ1JBZUN5QUhRY0FCYWlRQUlDc2dCUkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUlLQUlBSWdjUUhDQUhRZVFCYWlBRElBVVF1UUVnRmhDTkFnSkFJQU5GRFFBQ1FDQURLQUlFSWdkQnVQTVBSZ1JBSUFOQjRBQnFJZ2tvQWdBaUJ5QURLQUprUVFKMGFpRUtBa0FEUUNBSElBcEdEUUVnQ0NBSEtBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBZ2dCRUVrYWhCRElBZEJCR29oQnd3QkN3c2dCa0VRTmdKTUlBWkJnNGNCTmdKSUlBWWdCaWtEU0RjREFDQUlJQVFnQmhCQURBVUxJQVpCQURvQWxBZ2dCaUFKTmdLUUNDQUxJQVpCa0FocUVFRU5BUXdFQ3lBSFFkaUVFa1lFUUNBRFFUaHFJZ2tvQWdBaUJ5QURLQUk4UVFKMGFpRUtBa0FEUUNBSElBcEdEUUVnQ0NBSEtBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBZ2dCRUVrYWhCRElBZEJCR29oQnd3QkN3c2dCa0VPTmdKTUlBWkI1SVlCTmdKSUlBWWdCaWtEU0RjRENDQUlJQVFnQmtFSWFoQkFEQVVMSUFaQkFEb0FsQWdnQmlBSk5nS1FDQ0FMSUFaQmtBaHFFRUZGRFFRTUFRc2dCMEc0OEE5R0JFQWdBMEUwYWlJSktBSUFJZ2NnQXlnQ09FRUNkR29oQ2dKQUEwQWdCeUFLUmcwQklBZ2dCeWdDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FJSUFSQkpHb1FReUFIUVFScUlRY01BUXNMSUFaQkRUWUNUQ0FHUWFhSEFUWUNTQ0FHSUFZcEEwZzNBeEFnQ0NBRUlBWkJFR29RUUF3RkN5QUdRUUE2QUpRSUlBWWdDVFlDa0FnZ0N5QUdRWkFJYWhCQlJRMEVEQUVMSUFkQitQQVBSZ1JBSUFOQk1Hb2lDU2dDQUNJSElBTW9BalJCQW5ScUlRb0NRQU5BSUFjZ0NrWU5BU0FJSUFjb0FnQWlCQkF6R2dKQUlBUkZEUUFnQkNnQ0JFR1FnaEpIRFFBZ0NDQUVRU1JxRUVNZ0IwRUVhaUVIREFFTEN5QUdRUTgyQWt3Z0JrSHpoZ0UyQWtnZ0JpQUdLUU5JTndNWUlBZ2dCQ0FHUVJocUVFQU1CUXNnQmtFQU9nQ1VDQ0FHSUFrMkFwQUlJQXNnQmtHUUNHb1FRVVVOQkF3QkN5QUhRZmp4RDBZRVFDQURRY2dBYWlJSktBSUFJZ2NnQXlnQ1RFRUNkR29oQ2dKQUEwQWdCeUFLUmcwQklBZ2dCeWdDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FJSUFSQkpHb1FReUFIUVFScUlRY01BUXNMSUFaQkVUWUNUQ0FHUVpTSEFUWUNTQ0FHSUFZcEEwZzNBeUFnQ0NBRUlBWkJJR29RUUF3RkN5QUdRUUE2QUpRSUlBWWdDVFlDa0FnZ0N5QUdRWkFJYWhCQlJRMEVEQUVMSUFkQmlJVVNSdzBCSUFOQk1Hb2lDU2dDQUNJSElBTW9BalJCQW5ScUlRb0NRQU5BSUFjZ0NrWU5BU0FJSUFjb0FnQWlCQkF6R2dKQUlBUkZEUUFnQkNnQ0JFR1FnaEpIRFFBZ0NDQUVRU1JxRUVNZ0IwRUVhaUVIREFFTEN5QUdRUkEyQWt3Z0JrRzBod0UyQWtnZ0JpQUdLUU5JTndNb0lBZ2dCQ0FHUVNocUVFQU1CQXNnQmtFQU9nQ1VDQ0FHSUFrMkFwQUlJQXNnQmtHUUNHb1FRVVVOQXdzZ0NDQUZFSXdDQ3lBSUtBS01OQ0VFSUFnZ0JUWUNqRFFnQ0NBRklBZ29BcEEwSWdrZ0JSczJBcEEwSUFnZ0NDZ0NsRFFpQ2tFQmFpSUhOZ0tVTkFKL0lBZEJnQUZQQkVBZ0JrR1FDR29pQjBIL0FCQmZJQVpCeUFCcUlnVkJwcXdLSUFjUU5TQUlJQVVnQTBFUWFoQW5JQVVRRHhvZ0J4QVBHa0VBREFFTElBWWdCaWdDakFnb0FsaEJ4QUJxTmdKSUlBWkJBRG9BVENBRlFRQWdDQ0FHUWNnQWFoRGFCaHNMSVFjZ0NDQUpOZ0tRTkNBSUlBbzJBcFEwSUFnZ0JEWUNqRFFNQWdzZ0JrRVlOZ0xzQVNBR1FmMjNBVFlDNkFFZ0JpQUdLUVBvQVRjRE1DQUlJQVVnQmtFd2FoQkFEQU1MUVFBaEJ3c2dGaENMQWlBSFJRMEJJQVlvQW9nSUlnTWdCeWtER0NJc053UDRDU0FzUWdHRFVBMEFJQU1nTEVKMmcwSUloRGNEK0FrTFFRQWhCeUFHUVFBNkFFUWdCaUFHS0FLTUNFSDRBR28yQWtBZ0N5QUdRVUJyRUVGRkRRRWdDQ2dDaURRaUF3Ui9JQU1vQWtBUWhBTUZRWDhMSVE4Z0JpZ0NpQWdoQ1NNQVFmQUJheUlOSkFBZ0NTZ0NRQ0lNUWVRQWFpSUZLQUlBSWdvZ0RDZ0NhRUVDZEdvaEJBSkFBMEFnQkNBS1J3UkFBa0FnQ2lnQ0FDSURSUTBBSUFNb0FnUWlEa0dvK2c5R0JFQWdEQkNFQTBFQ1JnMEJJQXNnRFVFSWFrR0F2UUVRRkNJRklBTkJFR29RSnlBRkVBOGFRUUFoQ2d3RUN5QU9RY0NDRWtjTkFDQUpLQUlJS0FJRVFaQzFFa2NOQUNBTElBMUJDR3BCbGRJREVCUWlCU0FEUVJCcUVDY2dCUkFQR2tFQUlRb01Bd3NnQ2tFRWFpRUtEQUVMQ3lBTUtBSk1JZ1JCZ0FKUEJFQWdEVUhBQVdvaUF5QUVFRjhnRFVIUUFXb2lCVUdmNEFrZ0F4QTFJQTFCNEFGcUlnUWdCVUdXM1FrUUxTQU5RYkFCYWlJSlFmOEJFRjhnRFVFSWFpSUtJQVFnQ1JCT0lBc2dDaUFNUVJCcUVDY2dDaEFQR2lBSkVBOGFJQVFRRHhvZ0JSQVBHaUFERUE4YVFRQWhDZ3dCQ3dKQUlBa29BZ2dpQXlnQ0JFR1F0UkpHRFFBZ0F5MEFFRUVCY1VVRVFDQUxJQTFCQ0dwQjM1QUVFQlFpQXlBTUtBSlVRUkJxRUNjZ0F4QVBHa0VBSVFvTUFnc2dEQ2dDV0NJREJFQUNRQ0FES0FKSUlnVkZEUUFnQXlnQ1JDQUZRUUowYWtFRWF5Z0NBQ0lEUlEwQUlBc29BZ2dnQXhDTEVDMEFHRUVJY1VVTkFnc2dDeUFOUVFocVFhak9BaEFVSWdNZ0RFRVFhaEFuSUFNUUR4cEJBQ0VLREFJTElBMUJBRG9BckFFZ0RTQUZOZ0tvQVNBTElBMUJxQUZxUVFBUXNRTkZEUUFnRFVFSWFrSG5tZ1ZCL2dkQkNDQUxLQUlFRUJjaUJFRVlhaUlEUWNLSUNoQU9HaUFOUWVBQmFpSUZJQXdvQWlSQkpHb1FVeUFESUFVUUVob2dBMEdERmhBT0dpQUZFQThhSUFRUUdBc2dEQkRjQmdSQVFRQWhDa0VBSVE0akFFSGdCMnNpQkNRQUlBUWdEellDM0FjZ0JDQUpLQUpBTmdMWUJ5QUVRZUFHYWhDTURDRVBJQVFnQkVHSUJXb1EzZ1lpRlRZQ2dBVWdCQ0FQTmdMMEJDQUVJQXMyQXZBRUlBUWdCRUhjQjJvMkF2d0VJQVFnQkVIWUIyb2lBellDK0FRZ0JDQUxOZ0xrQkNBRUlBTTJBdWdFSUFRZ0JFSHdCR28yQXVBRUlBa29BaXdpQlNBSktBSXdRUUowYWlFWEFrQURRQ0FGSUJkSEJFQWdCU2dDQUNJVEtBSUlJUU1nQkVFQU9nRGNCQ0FFSUFOQk9HbzJBdGdFSUJNb0Fnd2hGQ0FFSUJNcEFtd2lMRGNEMEFRZ0JDQURLUUlZTndNd0lBUWdBeWdDSURZQ09DQUVJQU1wQWhBM0F5Z2dCQ0FzTndNZ0lBVkJCR29oQlNBRVFlQUVhaUFFUWRnRWFpQVVJQVJCS0dwQkFDQUVRU0JxRUwwY0RRRU1BZ3NMSUE4UTZnVWdGUkRxQkNBSktBSUlJZ1VvQWdSQmtMVVNSd1JBSUFSQkFEb0F6QVFnQkNBRUtBTFlCeUlEUWZnQWFqWUN5QVFnQkNBSktRS1VDaUlzTndQQUJDQUVJQU1vQWlBMkFoZ2dCQ0FES1FJWU53TVFJQU1wQWhBaExTQUVJQ3czQXdBZ0JDQXROd01JSUFSQjRBUnFJQVJCeUFScUlBVWdCRUVJYWtFQklBUVF2UnhGRFFFTEFrQWdCQ2dDMkFjUWhBTU5BQ0FFUVFrMkF2Z0JJQThnQkVINEFXb1FyUVFOQUNBSktBS01BaUlGSUFrb0FwQUNRUUowYWlFREEwQWdBeUFGUndSQUlBVW9BZ0FvQWdnaERpQUVRUUE2QUx3RUlBUWdEa0U0YWpZQ3VBUWdCRUc0QkdvUWx4QWlEZ1JBSUFzb0FnZ2dEaENXQ1NnQ0VFRUpSZzBEQ3lBRlFRUnFJUVVNQVFzTElBc2dCRUg0QVdwQnhZY0VFQlFpQXlBRUtBTFlCMEVRYWhBbklBTVFEeHBCQUNFT0RBRUxBa0FnQkNnQzJBY1FoQU5CQWtjTkFFRUFJUTRnQkVFQU9nQzBCQ0FFSUFRb0F0Z0hRZVFBYWpZQ3NBUWdCQ2dDc0FRaUF5Z0NBQ0lGSUFNb0FnUkJBblJxSVJNRFFDQVRJQVVpQTBjRVFDQURRUVJxSVFVZ0F5Z0NBQ0lYQkg4Z0Z5Z0NCRUdvK2c4UVNBVkJBQXRGRFFFTEN5QURJQk5IRFFBZ0N5QUVRZmdCYWtHdHNBRVFGQ0lESUFRb0F0Z0hRUkJxRUNjZ0F4QVBHZ3dCQ3lBRVFmZ0JhaUlEUWdBM0Fxd0NJQU5DZ0lDQWdNQUJOd0trQWlBRElBTTJBcUFDSUFOQkRCQ0lFQ0FKS0FLTUFpSUZJQWtvQXBBQ1FRSjBhaUVYQTBBQ1FDQUZJQmRHSWc1RkJFQWdCQ0FGS0FJQUloTW9BZ2dpRkVFQUlCUW9BZ1JCMlBnUlJoc2lGRFlDOUFFZ0ZFVU5BU0FFSUJNb0FsZ2lGRFlDOEFFZ0JDQVRLUUpRTndQb0FTQVVRZjhCY1VVTkFTQUVRZUFCYWlBRElBUkI2QUZxSUFSQjlBRnFFTHdjSUFRb0F1QUJRUUpIRFFFZ0JFRUFPZ0RjQVNBRUlBUW9BdGdISWhSQjVBQnFOZ0xZQVNBTElBUkIyQUZxUVFFUXNRTkZEUUVnQkNnQzVBRW9BZ0FoRXlBRVFRQTZBTlFCSUFRZ0UwRTRhallDMEFFZ0N5QUVRZEFCYWtFQkVMRURSUTBCSUFSQndBRnFJaE1nRkNnQ0pFRWthaEJUSUFSQjRBQnFJaGRCOFlrSklCTVF4QUVnQkVId0FHb2lGQ0FYUWFEM0NCQXRJQVJCMEFCcUlob2dCQ2dDNkFFUVh5QUVRWUFCYWlJWUlCUWdHaEJPSUFSQmtBRnFJaDBnR0VIRStBZ1FMU0FFUVVCckloNGdCQ2dDN0FFUVh5QUVRYUFCYWlJZ0lCMGdIaEJPSUFSQnNBRnFJZ1VnSUVIdjlnZ1FMU0FMSUFVZ0JDZ0M5QUZCRUdvUUp5QUZFQThhSUNBUUR4b2dIaEFQR2lBZEVBOGFJQmdRRHhvZ0doQVBHaUFVRUE4YUlCY1FEeG9nQ3lBRlFkcnVBeEFVSWdVZ0JDZ0M1QUVvQWdCQkVHb1FoZ0VnQlJBUEdpQVRFQThhQ3lBREVMb2NJQU1RdVJ3TUFnc2dCVUVFYWlFRkRBQUxBQXNnRlJEZEJpQVBFSzRMSUFSQjRBZHFKQUFnRGtVTkFRdEJBU0VLSUFrcEEvZ0pRZ2lFUWdoUkRRQWdEVUhnQVdvaUJTQU1LQUlrUVNScUVGTWdEVUVJYWtIbm1nVkJqZ2hCQ0NBTEtBSUVFQmNpQkVFWWFpSURRWnVOQ1JBT0dpQURJQVVRRWhvZ0EwSFlpd3dRRGhvZ0NVSDRDV29wQXdBaExDTUFRU0JySWdNa0FDQURJQ3czQXhnZ0JFRVFhaUlQUVFocUlndEJpQWdRRGhvZ0EwRUlhaUFEUVJocUVKb2NJQU1wQXhnaExFRUJJUWtEUUNBRExBQVFJZ3hCUDBZZ0xDQURLUU1JVVhGRkJFQWdDVVVFUUNBTFFmVHREQkFPR2dzZ0QwRUlhaUFNUVFOTEJIOUJyT0lHQlNBTVFRSjBRWWlPRW1vb0FnQUxFQTRhSUFOQkNHb1FneEJCQUNFSkRBRUxDeUFMUVlJSUVBNGFJQU5CSUdva0FDQUVFQmdnQlJBUEdnc2dEVUh3QVdva0FDQUtSUTBCQWtBZ0JpZ0NqQWdRM0FaRkRRQWdCaWdDaUFnaUF5Z0NqQVFpQnlBREtBS1FCRUVDZEdvaEJRTkFJQVVnQjBZTkFTQUhLQUlBSVFRZ0JpZ0NpQWdoQ1NNQVFSQnJJZ01rQUNBRElBazJBZ3dnQkVIa0NXb2dBMEVNYWhEWkJpQURRUkJxSkFBZ0IwRUVhaUVIREFBTEFBc2dCaWdDaUFnaEJ3d0JDMEVBSVFjTElBSVFtQjRnQWhEa0hTQUNJQUlvQXRBRkVEWUxJQllRaXdJZ0NDQWhOZ0tJTkNBR1FhQUlhaVFBSUFjTUFnc2dCMEVFYWlFSERBQUxBQXRGRFFZTUF3c2dBaERkQlFSQVFRQWhBaU1BUWFBQmF5SUtKQUFnQ2tFUWFoRGZCaUVNSUFnb0FwZzBJUllnQ0NBTU5nS1lOQUpBSUFnZ0JFRUJFS3dlSWdkRkRRQWdCeWdDQkVHUW5CSkhEUUFnQ2tFQU9nQU1JQW9nQkVFNGFqWUNDQ0FJUWF3ZGFpSUpJQXBCQ0dvUVFVVU5BQ0FJUWR3cmFpRUxRUUFoRFNNQVFUQnJJZ1FrQUNBRUlBY29BZ2dpQXpZQ0hBSkFBa0FDUUNBSEtBSVVRUWxHRFFBZ0J5Z0NEQkRjQzBVTkFDQUpJQU1vQWlnaUJRUi9JQVVGSUFNb0Fpd0xRUkJxRU5zTERBRUxJQVFnQ1RZQ0VDQUVJQVJCSEdvMkFoUWdBMFVFUUNBRVFSQnFFTUFjREFFTEFrQUNRQ0FES0FJRUlnVkIyUGdSUmdSQUFrQWdCeWdDSUNJRlJRMEFJQVVvQWhoQkEwZ05BQ0FKSUFSQklHcEIvK1FDRUJRaUF5QUZLQUlJUVJCcUVDY2dBeEFQR2d3RUN5QURLQUpFRFFFZ0J5Z0NEQkNFQVJEWUR3MEJJQWtnQkVFZ2FrR00yUVFRRkNJRElBUW9BaHhCRUdvUUp5QURFQThhREFNTElBVkI2UGtSUmdSQUl3QkIwQUJySWdVa0FDQUhLQUlJSVFZZ0J5Z0NEQkNFQVNFUEFuOENRQUpBSUFjb0FpQWlEa1VOQUNBT0tBSVlRUU5JRFFBZ0NTQUZRVUJyUWNqbEFoQVVJZ01nRGlnQ0NFRVFhaEFuREFFTElBWW9BamdpQXlBR0tBSThRUUowYWlFVkEwQWdBeUFWUndSQUFrQWdBeWdDQUNJVEtBSUVRWWo4RVVjTkFDQUhMd0ZjSVE0Z0JVRUFOZ0pJSUFVZ0Rqc0JSQ0FGSUFzMkFrQWdCU0FMS0FLQUFrRUJhellDVENBRlFVQnJFSXdRUlEwQUlBVkJRR3NRakJBb0FnQWdCMFlOQUNBSklBVkJNR29pQmtHOHpBTVFGQ0lESUJOQkVHb1FKeUFERUE4YUlBVkJFR29pQ3lBT0VQWUVJQVZCSUdvaUQwR3ZzUW9nQ3hBMUlBWWdEMEdlNmdZUUxTQUZRVUJyRUl3UUtBSUFLQUlJSVFNZ0JVRUFPZ0FNSUFVZ0EwRTRhallDQ0NBSklBWUNmeUFGS0FJSUlnNG9BZ0FpQXlBT0tBSUVRUUowYWlFVkEwQkJBQ0FESUJWR0RRRWFJQU1vQWdBaERpQURRUVJxSVFNZ0RpZ0NCRUdJL0JGSERRQUxJQTRMUVJCcUVJWUJJQVlRRHhvZ0R4QVBHaUFMRUE4YVFRQU1CQXNnQTBFRWFpRUREQUVMQzBFQklBOFF5Z01OQVJvZ0JVRXdhaUlESUFrb0FnZ2dEeENuQVNBRlFVQnJJZ3NnQTBIYWhBa1FMU0FKSUFzZ0JrRVFhaEFuSUFzUUR4b0xJQU1RRHhwQkFBc2hBeUFGUWRBQWFpUUFJQU1OQWd3RUN5QUZRYUQ1RVVZTkFTQUVRUkJxRU1BY0RBSUxJQWtnQnhEQ0hFVU5BZ3NDUUFKQUFrQWdCeWdDRkVFRGF3NEdBQUVDQWdFQkFnc2dDU0FFUVNCcVFjeUJDUkFVSWdNZ0JDZ0NIRUVRYWhBbklBTVFEeG9NQWd0QkFTRU5JQVFvQWh3aEJVRUFJUU1qQUVFUWF5SUxKQUFnQzBFQU9nQU1JQXNnQlVFNGFpSU9OZ0lJSUFzb0FnZ2lCaWdDQUNJRklBWW9BZ1JCQW5ScUlROERRQ0FQSUFVaUJrY0VRQ0FHUVFScUlRVWdCaWdDQUNJVkJIOGdGU2dDQkVHdytoRVFTQVZCQUF0RkRRRUxDeUFHSUE5SEJFQWdDMEVBT2dBRUlBc2dEallDQUNBTEtBSUFJZ1VvQWdBaUF5QUZLQUlFUVFKMGFpRUdBMEFnQmlBRElnVkhCRUFnQlVFRWFpRURJQVVvQWdBaUR3Ui9JQThvQWdSQndQc1JFRWdGUVFBTFJRMEJDd3NnQlNBR1J5RURDeUFMUVJCcUpBQWdBdzBDSUFrZ0JFRWdha0d4c1FFUUZDSURJQVFvQWh4QkVHb1FKeUFERUE4YURBRUxJQVJCQURvQURDQUVJQVFvQWh4Qk9HbzJBZ2dDZnlBRUtBSUlJZ1VvQWdBaUF5QUZLQUlFUVFKMGFpRUdBMEJCQUNBRElBWkdEUUVhSUFNb0FnQWhCU0FEUVFScUlRTWdCU2dDQkVHdytoRkhEUUFMSUFVTElRWWdCRUVBT2dBRUlBUWdCQ2dDSEVFNGFqWUNBRUVCSVEwQ2Z5QUVLQUlBSWdVb0FnQWlBeUFGS0FJRVFRSjBhaUVMQTBCQkFDQURJQXRHRFFFYUlBTW9BZ0FoQlNBRFFRUnFJUU1nQlNnQ0JFSEEreEZIRFFBTElBVUxJQVp5UlEwQklBa2dCRUVnYWtIdXNBRVFGQ0lESUFRb0FoeEJFR29RSnlBREVBOGFDMEVBSVEwTElBUkJNR29rQUNBTlJRMEFJQXdvQWhBaUFpQU1LQUlVUVFKMGFpRURBMEFnQWlBRFJnUkFBa0FnQnlnQ0RCQ0VBU0lDUlEwQUlBSW9BZ1JCa0tJU1J3MEFJQWdvQWdBaUF4QWNJQU5CNUFGcUlBSVEzQkFpQTBVTkFDQURLQUlRSWdJZ0F5Z0NGRUVDZEdvaEF3TkFJQUlnQTBZTkFTQUNLQUlBSVFVZ0NDZ0NBQ0lHRUJ3Z0JrSGtBV29nQnlBRkVOc1FJQUpCQkdvaEFnd0FDd0FMQlNBQ0tBSUFJUVVnQ0NnQ0FDSUdFQndnQmtIa0FXb2dCeUFGRU5zUUlBSkJCR29oQWd3QkN3c2dCeUVDQ3lBSUlCWTJBcGcwSUF3UXJnUWdDa0dnQVdva0FDQUNSUTBHREFNTElBSkJ3UFlQUmcwQkN5TUFRYUFCYXlJQ0pBQWdBa0czbXdWQnRnRkJDQ0FRS0FJQUtBSUVFQmNpQTBFWWFpSUhRZTYvQ3hBT0dpQUhRZjc5Q3hBT0dpQURJQkFvQWdRb0FnQW9BZ1JCQkdvUW1nRWFJQU1RR0NBQ1FhQUJhaVFBREFRTElBZ2dCQkN0SGtVTkF3c2dFVUVFYWlFUkRBRUxDMEVBSVFOQkFDRVJJd0JCTUdzaUJDUUFJQVJCQURzQktDQUlLQUlBRVBJQ0lnSW9BcVFDSWdrZ0FpZ0NxQUpCQW5ScUlRMGdDRUhjSzJvaERDQUlRYWdkYWlFTEFrQURRQ0FKSUExR0lnOE5BUUpBSUFrb0FnQWlBaWdDQkVIbytSRkhJQUpGY2tVRVFFRUFJUVVqQUVHZ0FXc2lCaVFBSUFzb0FnQWlCeEFjQWtBZ0FrVU5BQ0FDS0FJTUlnb2dCeWdDNkFFZ0J5Z0M1QUVpQjJ0QkFuVlBEUUFnQnlBS1FRSjBhaWdDQUNJSFJRMEFJQWRCQUNBSEtBSUVRWkNjRWtZYklRVUxJQVZGQkVBZ0N5Z0NBQ0lIRUJ3Z0JrSDlyQU5CTTBFSUlBZEJ5QUpxRUJjaUNrRVlha0dtbGdrUURob2dDaUFDS0FJRVFRUnFFSm9CSWc1QkdHb2lCMEhjOFF3UURob2dCMEdENUFzUURob2dEa0VRYWlBQ1FSQnFFSzRESUFkQjIvZ01FQTRhSUFkQjhQVUxFQTRhSUFjZ0FoRGRBeUFLRUJnTElBWkJvQUZxSkFBZ0JTRUdJQVJCQURvQUpDQUVJQUpCT0dvMkFpQWdCQ2dDSUNJSEtBSUFJZ1VnQnlnQ0JFRUNkR29oQ2dOQUlBb2dCU0lIUndSQUlBZEJCR29oQlNBSEtBSUFJZzRFZnlBT0tBSUVRWWo4RVJCSUJVRUFDMFVOQVFzTEFrQWdCeUFLUndSQUlBWXZBVndoQnd3QkN3TkFJQkVOQXlNQVFSQnJJZ2NrQUNBSFFRaHFJQXdnQkVFb2FoQ2hIaUFITFFBSUlRb2dCMEVRYWlRQUlBUXZBU2doQlNBS0JFQkJBU0VSSUFWQi8vOERSZzBCSUFRZ0JVRUJhanNCS0VFQUlSRU1BUXNMUWYvL0F5RUhJQVZCLy84RFJnUkFRUUVoRVF3QkN5QUVJQVZCQVdvN0FTaEJBQ0VSSUFVaEJ3c2dCaUFIT3dGY0N5QUpRUVJxSVFrTUFRc0xJQVJCLy84REVGOGdCRUVRYWlJSFFlS3NDaUFFRURVZ0NDQUhJQUpCRUdvUUp5QUhFQThhSUFRUUR4b0xJQVJCTUdva0FDQVBSUTBCSXdCQnNBRnJJZ2NrQUNBSVFiUVphaUlDS0FMa0F5RUdJQWRCcUFGcUlnVWdBaWdDNEFNaUJEWUNBQ0FGSUFRZ0JrRVViR28yQWdRZ0JSQ3NDU0FIUWFBQmFpSUZJQUlvQXVBRElBSW9BdVFEUVJSc2FpSUNOZ0lFSUFVZ0FqWUNBQ0FGRUt3SklBaEJxQjFxSVFRZ0IwRVlhaUVLQTBBZ0J5Z0NxQUVpQWlBSEtBS2dBVWNFUUNBRUlBSVF1Z0lpQWlnQ0JCQ0tEQ0lSUlFSQUlBZEJ0NXNGUWVRR1FRZ2dDQ2dDQkJBWElRWWdDa0dtbGdrUURob2dCaUFDS0FJRUtBSUVRUVJxRUpvQklnbEJHR29pQlVIYzhRd1FEaG9nQlVHRDVBc1FEaG9nQ1VFUWFpQUNLQUlFUVJCcUVLNERJQVZCMi9nTUVBNGFJQVZCOFBVTEVBNGFJQWxCR0dvZ0FpZ0NCQkRkQXlBR0VCZ0xJQUlvQWdBaEJTTUFRYUFCYXlJSkpBQWdCQ2dDQUNJQ0VCd2dBa0hrQVdvZ0JSQ2pCeUlDUlFSQUlBUW9BZ0FpQmhBY0lBbEIvYXdEUVROQkNDQUdRY2dDYWhBWElndEJHR3BCcHBZSkVBNGFJQXNnQlNnQ0JFRUVhaENhQVNJTlFSaHFJZ1pCM1BFTUVBNGFJQVpCZytRTEVBNGFJQTFCRUdvZ0JVRVFhaEN1QXlBR1FkdjREQkFPR2lBR1FmRDFDeEFPR2lBR0lBVVEzUU1nQ3hBWUN5QUpRYUFCYWlRQUFrQWdBa1VOQUNBQ0tBSUVJZ1ZCcUp3U1JnUi9JQUpCMUFCcUJTQUZRY0NjRWtjTkFTQUNRZHdBYWdzZ0VUWUNBQXNnQjBHb0FXb1E2UVFNQVFzTElBZEJzQUZxSkFBZ0VFRUFPZ0MwQVNBUUlDbzJBckFCSUFoQnJCMXFJZ2NnRUVHd0FXcEJqc29ERUtZY1JRMEJJQkJCQURvQXJBRWdFQ0FJUWFBcGFpSUVOZ0tvQVFKL0l3QkJNR3NpQWlRQUlBSWdCellDS0NBQ0lBYzJBaUFnQWlBQ1FTaHFJZ1UyQWlRZ0FpQUhOZ0lZSUFJZ0JUWUNIQ0FDSUFjMkFoQWdBaUFGTmdJVUlBSWdBa0VRYWpZQ0NDQUNJQUpCR0dvMkFnUWdBaUFDUVNCcU5nSUFJQkFvQXFnQklnVW9BZ0FpRVNBRktBSUVRUUowYWlFSkEwQUNRQUpBSUFrZ0VVWWlDdzBBSUFJZ0VTZ0NBQ0lHSUFZUXNoeEZEUUFnQmlnQ2pBUWlCU0FHS0FLUUJFRUNkR29oQ2dOQUlBVWdDa1lOQWlBRktBSUFJUTBnQlVFRWFpRUZJQUlnRFNBR0VMSWNEUUFMQ3lBQ1FUQnFKQUFnQ3d3Q0N5QVJRUVJxSVJFTUFBc0FDMFVOQVNBUVFRQTZBS1FCSUJBZ0JEWUNvQUVDZnlNQVFTQnJJZ0lrQUNBUUtBS2dBU0lHS0FJQUlnVWdCaWdDQkVFQ2RHb2hCQU5BQWtBQ1FDQUVJQVZHSWdzTkFDQUZLQUlBSVFZZ0FrRUFOZ0ljSUFKQkFEWUNHQ0FDSUFjMkFoQWdBaUFDUVJocU5nSU1JQUlnQWtFY2FqWUNDQ0FDUVFocUlBWWdCaEN4SEVVTkFDQUdLQUtNQkNJSklBWW9BcEFFUVFKMGFpRUtBMEFnQ1NBS1JnMENJQWtvQWdBaEVTQUpRUVJxSVFrZ0FrRUlhaUFSSUFZUXNSd05BQXNMSUFKQklHb2tBQ0FMREFJTElBVkJCR29oQlF3QUN3QUxSUTBCSUFnb0FnQWlCeEFjUVFBaEJVRUFJUUlnQnlnQ29BRWlBMEVmVFFSQUlBY29BcHdCSVJrZ0F5RUNDeUFIS0FLWUFTRVJJQkJCR0dvaEJFRUJJUU1EUUNBUklCbEdJQUlnQlVaeERRSWdDQ2dDc0NzZ0VRUi9JQkVnQlVFQ2RHb29BZ0FGUVFBTElnY29BZ3dpQmtFRGRrSDgvLy8vQVhGcUtBSUFJQVoyUVFGeFJRUkFJQkJCdDVzRlFkTUJRUWdnQ0NnQ0JCQVhJUVlnQkVHbWxna1FEaG9nQmlBSEtBSUVRUVJxRUpvQklnbEJHR29pQTBHNThRd1FEaG9nQTBHRDVBc1FEaG9nQ1VFUWFpQUhRUkJxRUs0RElBTkIyL2dNRUE0YUlBTkI4UFVMRUE0YUlBTWdCeERkQXlBR0VCaEJBQ0VEQ3lBUlJRUkFRUUFoRVF3QkN5QUZRUUZxSWdWQklFY05BQ0FSS0FLQUFTRVJRUUFoQlF3QUN3QUxRUUFoQXdzZ0VFSEFBV29RWGlBUVFlQUJhaVFBQWtBZ0F5SUhEUUFnQ0NnQ0JDSUNLQUlNRFFBZ0gwRzNtd1ZCaXdGQkNDQUNFQmNpQWtFWWFrSEM4d1FRRGhvZ0FoQVlEQUVMSUI5QkFUWUNBQ0FJUVl3b2FpQWZFSzBFSVFrZ0NDZ0NBQ0lDRUJ3akFFR2dBV3NpQkNRQUlBSkJxQUZxSWdZb0FnUWhBd0pBSUFZb0FnaEJBMnBCZkhFaUJVSEovQU5yUWY3L2Uwc0VRQ0FESVFJTUFRc2dCa0dRZ0FSQkVCRFpBaUlDTmdJRVFRQWhCU0FDUVFBMkFvQ0FCQ0FEQkVBZ0F5QUNOZ0tBZ0FRTUFRc2dCaUFDTmdJQUN5QUdJQVZCdUFOcU5nSUlJQVFnSEVHQUFXbzJBcGdCSUFRZ0hDZ0NnQUVnSEVjNkFKd0JJQVJCQ0dvZ0NFSHdKMm9RdFIwaEF5QUNJQVZxRU9rSElnSkJzSmNTTmdJRUlBSkI0SmNTTmdJQUlBSkIwSmNTTmdJQUlBSkJDR29nQkVHWUFXb1F6eGtnQWtHVUFtb2dBeEMxSFJvZ0FrSUFOd0tzQXlBQ1FnQTNBcVFESUFKQmdJQ0EvQU0yQXJRRElBTVFyZ1FnQmlBQ0VDZ2dCaUFHS0FJWVFRRnFOZ0lZSUFSQm9BRnFKQUFqQUVFZ2F5SURKQUFnQTBFUWFpQUlRZGduYWlnQ0FDQUlRZHduYWlnQ0FFR2tBV3hxUWFRQmF5SUZFT01RSUFOQkNHb2dCUkRpRUNBQ1FhUURhaUVGQTBBZ0F5Z0NFQ0lHSUFNb0FnaEdCRUFnQTBFZ2FpUUFCU0FHRUxBSklnWW9BZ2doQkNBRElBWXBBZ0EzQXhnZ0JTQURRUmhxRU9FUUlBUTJBZ0FnQTBFUWFoRGdFQXdCQ3dzZ0NDZ0NBQ0lERUJ3Z0F5QUNOZ0tFQWlBSklBZEJBWE55UlFSQUFuOGdDQ2dDQUNFQ0l3QkI0UEVDYXlJRUpBQWdCQ0FDTmdJSUlBSVFIQ0FFSUFKQjVBRnFOZ0lNSUFJUUhDQUVRZUNuQW1wQ0FEY0RBQ0FFUWRpbkFtcENnSUNBZ01BQk53TUFJQVJCMUtjQ2FpQUVRUlJxSWhBMkFnQWdCQ0FDUWNnQ2FqWUNFQ0FRUVF3UXNCQWdIQ2dDZ0FFaURDQWNLQUtFQVVFQ2RHb2hIQ0FFUVpqWkFtb2hGaUFFUVlEWkFtcEJCSEloRlNBRVFiakFBbXBCQkhJaEV5QUVRWkMrQW1vaEdTQUVRZHk3QW1vaEN5QUVRZWk2QW1vaEZ5QUVRWlM1QW1vaEZDQUVRYWl3QW1vaENpQUVRWWlvQW1vaER5QUVRWXl3QW1vaEVRTkFBa0FDUUNBTUlCeEdJaHBGQkVBZ0RDZ0NBQ0lGS0FJRVFmanpEMGNnQlVWeURRSWdCQ0FGTmdLMHdBSWdCQ2dDQ0NFTklBUkI4S2NDYWhCVklBUkNnSUNBZ0lBRU53S0VzQUlnQkVLQWdBUTNBdnl2QWlBRVFnQTNBdlN2QWlBRVFvQ0FnSUNBQVRjQzdLOENJQVFnRHpZQzZLOENRUUFoQXlBRVFRQTJBb0NvQWlBUlFRQTJBaGdnRVVJQU53SVFJQkZDQURjQ0NDQVJRZ0EzQWdBZ0JFR0EyUUpxRU5NR0lRSWdCRUtBZ0lDQWdBRTNBb3k1QWlBRUlBbzJBb2k1QWlBS1FRRVFsUjBEUUNBRFFRRkhCRUFnQkNBRUtBS011UUlpQmtFQmFqWUNqTGtDSUFRb0FvaTVBaUFHUVl3QmJHb2dBaUFEUVl3QmJHb1FsQjBnQTBFQmFpRUREQUVMQ3lBQ0VNNERJQlFRM2dZaEdDQVhFSXdNR2lBTFFnQTNBcXdDSUF0Q2dJQ0FnTUFCTndLa0FpQUxJQXMyQXFBQ0lBc1EraHdnQkVJQU53S013QUlnQkVLQWdJQ0F3QUUzQW9UQUFpQUVJQmsyQW9EQUFpQVpRUXdRcnhBZ0JFRUFOZ0tzd0FJZ0JFS0FnSUNBZ0FRM0FxVEFBaUFFUW9DQUJEY0NuTUFDSUFSQ0FEY0NsTUFDSUFSQmdOa0NhaUlESUFVb0FpUkJKR29RVXlBRVFmQ25BbW9pQWlBREVKNEJJQU1RRHhvZ0JFRUJOZ0tFcUFJZ0JFSUJOd0w4cHdJZ0JDQUNRUUFRbkFFMkFwQ3dBaUFFSUFKQkFCQ2NBVFlDbExBQ0lBUWdBa0VBRUp3Qk5nS1lzQUlnQkNBQ1FRQVFuQUUyQXB5d0FpQUVJQUpCQUJDY0FUWUNvTEFDSUFVb0FsUUVRQ0FFSUFSQjhLY0Nha0VBRUp3Qk5nS2tzQUlMSUFVb0Frd2lCaUFFS0FMd3J3SkxCRUFnQkNnQzZLOENJUTRnRHlBR0VKTWRRUUFoQ1FOQUlBUW9BdXl2QWlBSlRRUkFJQThnRGhBMkJTQUpRZndBYkNJQ0lBUW9BdWl2QW1vaUF5QUNJQTVxSWdJcEFnQTNBZ0FnQXlBQ0tRQU5Od0FOSUFNZ0Fpa0NDRGNDQ0NBRFFSaHFJQUpCR0dvUTFRWWFJQU5CeEFCcUlBSkJ4QUJxRU5VR0dpQURJQUlvQW5nMkFuZ2dBeUFDS1FKd053SndJQUlRcmhBZ0NVRUJhaUVKREFFTEN3c2dCQ2dDN0s4Q0lRTWdCQUovQTBBZ0F5QUdUUVJBQWtBZ0JDZ0M3SzhDSWdJZ0JpQUNJQVpMR3lFSkEwQWdBaUFKUndSQUlBUW9BdWl2QWlBQ1Fmd0FiR29pQTBJQU53SVlJQU5CQURvQUZDQURRb0NBZ0lBZ053SUFJQU5DQURjQ1JDQURRUUEyQW5nZ0EwSUFOd0p3SUFOQkFEWUNFQ0FEUW9DQWdJQWdOd0lJSUFOQ0FEY0NJQ0FEUWdBM0FpZ2dBMElBTndJd0lBTkNnSUNBZ0lBQk53SThJQU1nQTBFWWFqWUNPQ0FEUWdBM0Frd2dBMElBTndKVUlBTkNBRGNDWENBRFFvQ0FnSUNBQVRjQ2FDQURJQU5CeEFCcU5nSmtJQUpCQVdvaEFnd0JDd3NnQkNBR05nTHNyd0lnRFVIa0FXb2hDVUVBSVFNRFFDQUZLQUpNSUFOTEJFQWdCRUdBMlFKcUlBVW9Ba2dnQTBFQ2RHb29BZ0FpQWlnQ0pFRWthaEJUSUEwUUhDQUVJQWtnQWhDU0hTSUdOZ0s0d0FJZ0EwSDhBR3dpQWlBRUtBTG9yd0pxSUFZMkFnQWdCRUh3cHdKcVFRQVFuQUVoQmlBRUtBTG9yd0lnQW1vZ0JqWUNjQUpBSUFRb0FyakFBaUlPS0FJTUtBSUVRZGlzRWtZRVFDQUVRZkNuQW1wQkFCQ2NBU0VHSUFRb0F1aXZBaUFDYWlBR05nSjBJQVJCOEtjQ2FrRUFFSndCSVFZZ0JDZ0M2SzhDSUFKcUlnSWdCallDZUNBRUlBUW9BcmpBQWpZQzJQRUNJQW9nQkVIWThRSnFJQUlvQW5RUWd3TWdHQ0FFUWJqQUFtb1FrUjBNQVFzZ0JDQU9OZ0xZOFFJZ0NpQUVRZGp4QW1vZ0JoQ0RBd3NnQTBFQmFpRURJQVJCZ05rQ2FoQVBHZ3dCQ3dzZ0JDZ0MyS2NDSUFRb0F1Q25BaUlDUVpZQmJFR1dBV3BCNUFCdVNRUkFJQkFnQWtFQmRFRUNhaENRSFFzZ0JFSFk4UUpxSUJBZ0JFRzB3QUpxSWdJUWp4MGdCQ2dDMktjQ0lnbEJBV3NoRFNBRUlBUkI4S2NDYWpZQzFQRUNJQVFnQWpZQzBQRUNRUUFoQXlBRUtBSzB3QUloRGlBRUtBTGM4UUloQmlBRUtBTFVwd0loR0NBRUtBTFk4UUloQWdOQUlBTWdDVWNFUUNBWUlBSkIwQmhzYWlJRkxRREVHRVVFUUNBRVFZRFpBbW9pQWlBRVFkRHhBbW9RN0FzZ0JTQUNFSTRkSVFJZ0ZSQ2xCU0FGSUFNMkFzd1lJQVVnQmpZQ3lCZ2dCQ0FFS0FMZ3B3SkJBV28yQXVDbkFpQUVJQVFvQXVTbkFrRUJhallDNUtjQ0lBSkJCR29NQmdzZ0JpQUZLQUxJR0VZRVFDQU9JQVVvQWdCR0RRTUxJQU1nQlNnQ3pCaExCRUFnQkVHNHdBSnFJZ2tnQkVIUThRSnFFT3dMSUFSQmdOa0NhaUFKRUkwZElRa2dCQ0FETmdMTThRSWdCQ0FHTmdMSThRSWdFeENsQlNBSklBVVFyUkFnQkNBRUtBTE04UUpCQVdvMkFzenhBaUFRSUFKQkFXb2dCQ2dDMktjQ2NDQUpFSXdkSUFRZ0JDZ0M0S2NDUVFGcU5nTGdwd0lnQkNBRUtBTGtwd0pCQVdvMkF1U25BaUFKRVBFSERBTUZJQUpCQVdwQkFDQUNJQTFIR3lFQ0lBTkJBV29oQXd3Q0N3QUxDeUFFUVlEWkFtcEJoclVEUWVzRFFRNGdCRUc0d0FKcUVCMGlBaEFYSVFNZ0ZrR1dOUkFPR2lBREVCZ2dBaEFlUVFBTUF3c0ZJQVFvQXVpdkFpQURRUUZySWdOQi9BQnNhaEN1RUF3QkN3c2dCVUVFYWdzMkF1aW5BaUFFUWZDbkFtb1FwUVVnQkNnQ3RNQUNLQUpZSWdJRVFDQUVRUWhxSUFRb0F1aW5BaWdDc0FnZ0FoRGpCQm9MSUFRZ0JFRzB3QUpxSWdNMkF2U25BaUFFSUFSQkNHb2lCVFlDOEtjQ0lBUWdCRUdBMlFKcUVPc0xJZ0kyQXJ6QUFpQUVJQVJCOEtjQ2FqWUN4TUFDSUFRZ0F6WUN3TUFDSUFRZ0JUWUN1TUFDSUFSQnVNQUNha0VCRUt3UUJFQWdCRUc0d0FKcVFRUVFyQkFFUUNBRVFiakFBbXBCQWhDc0VCb0xJQUlROEFjZ0JDZ0M2S2NDSWdJb0FyUUlSUTBDSUFJUTZnc2dCRUdBMlFKcUVPc0xJUUlnQkNnQzZLY0NLQUswQ0NBQ0VKd0pJQUlnQkNnQzZLY0NRYXdJYWhEU0JnUkFJQVFvQXVpbkFrRUFOZ0lVQzBFQUlRTURRQ0FFS0FLMHdBSW9Ba3dnQTAwRVFDQUNFUEFIREFRRklBUkI4S2NDYWlBQ0lBTVFxeEFoQlNBRUtBTG9wd0lvQXZnSElBTkIvQUJzYWlJR0lBVTJBZ3dnQmtFQU5nSVFJQU5CQVdvaEF3d0JDd0FMQUFzZ0FoRHdCd3NnRUJDTEhTQVFFSW9kSUJBZ0JDZ0MxS2NDRURZZ0JFSGc4UUpxSkFBZ0dnd0RDMEVBSVFrRFFDQUpJQVFvQXJUQUFpZ0NURThOQVNBRUtBTG9wd0lpQXlnQytBY2dDVUg4QUd4cUlnSW9BbmdFUUNBREVPb0xJQVJCZ05rQ2FoRHJDeUVOSUFJb0FuZ2dEUkNjQ1NBTklBUW9BdWluQWtHc0NHb1EwZ1lFUUNBQ1FRRTZBQlFMSUFKQnhBQnFJUVVnQWtFWWFpRUdRUUFoQXdOQUlBUW9BclRBQWlnQ1RDQURUUVJBSUEwUThBY0ZJQVJCOEtjQ2FpQU5JQU1RcXhBaERpQUVJQVFvQWd3Z0JDZ0N0TUFDS0FKSUlBTkJBblJxS0FJQUVKSWROZ0s0d0FJZ0JTRUNBa0FDUUFKQUlBNE9BZ0FCQWdzZ0JpRUNDeUFDSUFSQnVNQUNhaEFrQ3lBRFFRRnFJUU1NQVFzTEN5QUpRUUZxSVFrTUFBc0FDeUFNUVFScUlRd01BQXNBQzBVTkFRc2dCeUVBQ3lBZlFhQUJhaVFBSUFCRkJFQWdFa0VBT2dEUUFnc2dDRUdNT21vUW9RWWdDRUdrT0dvUTNRWWdDRUdnTm1vUW9RWWdDRUdjTkdvUW9RWWdDRUgwTUdvUXJ4NGdDRUhnTFdvUXJ4NGdDRUhjSzJvUW9RWWdDRUhJSzJvaUF5Z0NDQ0VBQTBBZ0FBUkFJQUFvQWdBaEFpQUFRUXhxRUxZZElBQVFIeUFDSVFBTUFRc0xJQU1RdHdJZ0NFR3dLMm9Rd2dnZ0NFR3NLV29Rb1FZZ0NFR0FLV29RSXlBSVFmQW5haEN1QkNBSVFiZ2RhaUVDUVFBaEFBTkFJQUlvQXFRS0lBQk5CRUFnQWtFQU5nS2tDZ1VnQWlnQ29Bb2dBRUdrQVd4cUVQZ0hJQUJCQVdvaEFBd0JDd3NnQWlBQ0tBS2dDaEEySUFoQkZHb2lBa0dnR1dvaUFCRHNIaUFBUVFBMkF1UURJQUFnQUNnQzRBTVFOaUFDUVl3QmFpSUFFT3NlSUFBUTJSNGdBQ0FBS0FLQUdCQTJJQUlRM0FVZ0NFRVFhaENGQXhvTElBRVFIQ0FqSUFGQkVHb1EzdzhnQVJBY0lDZ2dBVUdNQVdvUXlnVWdBUkFjSUNjZ0FVR29BV29ReWdVZ0FSQWNJQ1lnQVVIRUFXb1F5Z1VnRWlBQkVQSUNOZ0xZQVNBQkVCd2dKQ0FCUWVRQmFoRDdEeUFCRUJ3Z0pTQUJRWWdDYWhEcUd5QUJFQndqQUVGQWFpSUNKQUFnQVNnQ3pBSWhBeUFCS0FMSUFpRUFBMEFnQUNBRFJnUkFJQUpCUUdza0FBVWdJaUFDUVFocUlBQVF4UWNpQnhDb0J5QUhFSWNGSUFCQk5Hb2hBQXdCQ3dzZ0FSQWNJQUZCQVRvQTdRSUNRQ0FTTFFEUUFnMEFJQklvQXN3Q0RRQWdHMEVaTmdJTUlCdEJoL0lFTmdJSUlCc2dHeWtEQ0RjREFDQWlRUVVnR3hDcEJ3c2dHMEdnUEdva0FDQVNDeDBBSUFBZ0FVSDgvLy8vQjBFQlFmLy8vLzhEUVlDQWdJQUVFTmdKQ3pRQkFuOGpBRUdRQVdzaUFpUUFJQUlRaUFNaUEwRUlhaUFCRUNFYUlBQWdBMEVNYWhCQ0lBTVF1d0lhSUFKQmtBRnFKQUFMRGdBZ0FDQUJLQUlBRUE0YUlBQUxTZ0FnQUVIdy9BODJBZ0FnQUVISUFtb1FIaUFBUVlnQ2FoRHVHeUFBUWVRQmFoRDhEeUFBUWNRQmFoREtCQ0FBUWFnQmFoREtCQ0FBUVl3QmFoREtCQ0FBUVJCcUVOMFBJQUFMNlFFQkIzOGpBRUVRYXlJRUpBQWdCQ0FCTmdJTUFuOGdCRUVNYWlJRkVMNFhJUUlDUUNBQVFSeHFJZ0VvQWdRaUFFVU5BQ0FCS0FJQUFuOGdBRUVCYXlBQ2NTQUFhU0lCUVFGTkRRQWFJQUlnQUNBQ1N3MEFHaUFDSUFCd0N5SUdRUUowYWlnQ0FDSURSUTBBSUFCQkFXc2hCeUFCUVFGTElRZ0RRQ0FES0FJQUlnTkZEUUVnQXlnQ0JDSUJJQUpIQkVBQ1FDQUlSUVJBSUFFZ0IzRWhBUXdCQ3lBQUlBRkxEUUFnQVNBQWNDRUJDeUFCSUFaSERRSU1BUXNnQTBFSWFpQUZFSnNPUlEwQUN5QUREQUVMUVFBTElnQUVmeUFBS0FJTUJVRUFDeUVBSUFSQkVHb2tBQ0FBQ3pFQkFuOGdBRUVFYWlFQ0lBQW9BZ2doQUFOQUlBQWdBa2NFUUNBQUtBSUVJUU1nQUNBQkVMRU9JQU1oQUF3QkN3c0xQZ0FnQUNBQkVORUhJZ0JCQkdvUTJRZEJBVWNFUUVHOXFBbEJxcWdDUWJNQlFmbnBCQkFBQUFzZ0FDZ0NHQ0lCSUFCQkRHb2dBUnNvQWdBb0FnQUxHd0VCZnlNQVFSQnJJZ0VnQURZQ0RDQUJLQUlNTFFBQVFRRnhDNG9IQVFOL0l3QkI0QUJySWdJa0FBSkFJQUZGQkVCQkFDRUJJQUJCQURvQWxBTWdBRUdvQkdwQm00c0VFQmthREFFTElBSWdBUkRJQXlJRE5nSU1JQUlnQURZQ0FDQUNJQUpCREdvMkFnUUNRQ0FEUlEwQUlBTW9BZ1FpQkVIZ3l4SkdCRUFnQWtFQU5nSTRJQUpDQURjRE1DQUNRZ0EzQXlnZ0FrRUFOZ0lRSUFKQkFUWUNXQ0FBUVNCcUlBSkJLR29nQWtFUWFpQUNRZGdBYWhDekNDRUJEQUlMSUFSQnNNc1NSZ1JBSUFKQkFEWUNPQ0FDUWdBM0F6QWdBa0lBTndNb0lBSkJBRFlDRUNBQ1FRSTJBbGdnQUVFZ2FpQUNRU2hxSUFKQkVHb2dBa0hZQUdvUXN3Z2hBUXdDQ3lBRVFjakxFa1lFUUNBQ1FRQTJBamdnQWtJQU53TXdJQUpDQURjREtDQUNRUUEyQWhBZ0FrRUJOZ0pZSXdCQkVHc2lBeVFBSUFCQklHb2lBQkFjSUFBZ0FDZ0NERUVCYWlJQk5nSU1JQU1nQVRZQ0NDQUFRWXdCYWlJQklBRVF5d1FnQUNnQ0NDQURLQUlJSUFKQktHb2dBaWdDRUxjZ0FpZ0NXQkRMRFNJQUVDZ2dBU0FCS0FJWVFRRnFOZ0lZSUFBaEFTQURRUkJxSkFBTUFnc2dCRUdvekJKR0JFQWdBa0VBTmdJNElBSkNBRGNETUNBQ1FnQTNBeWdnQWlBRElBQkJJR29pQUNBREtBSUFLQUlJRVFFQU5nSVFJQUFnQWtFb2FpQUNRUkJxRUlNTElRRU1BZ3NnQkVIQXpCSkdCRUFnQWtFQU5nSTRJQUpDQURjRE1DQUNRZ0EzQXlnZ0FpQURJQUJCSUdvaUFDQURLQUlBS0FJSUVRRUFOZ0lRSUFBZ0FrRW9haUFDUVJCcUVJTUxJUUVNQWdzZ0JFSFl6QkpHQkVBZ0FrRUFOZ0k0SUFKQ0FEY0RNQ0FDUWdBM0F5Z2dBaUFESUFCQklHb2lBQ0FES0FJQUtBSUlFUUVBTmdJUUlBQWdBa0VvYWlBQ1FSQnFFSU1MSVFFTUFnc2dCRUdZeXhKR0JFQWdBa0VBTmdJNElBSkNBRGNETUNBQ1FnQTNBeWdnQWtFQU9nQVFJQUJCSUdvZ0FrRW9haUFDUVJCcUVQSU9JUUVNQWdzZ0JFSEl6aEpIRFFBZ0FrS0FnSUNBZ0FFM0Frd2dBaUFDUVNocU5nSklJQU1vQWlnaEJDQURLQUlrSVFNRFFDQURJQVJIQkVBZ0FpQUFJQU1vQWdBUWt3UTJBaEFnQTBFRWFpRURJQUpCS0dvZ0FrRVFhaEFrREFFTEN5QUNRUUEyQWlBZ0FrSUFOd01ZSUFKQ0FEY0RFQ0FDSUFFZ0FFRWdhaUlBSUFFb0FnQW9BZ2dSQVFBMkFsZ2dBQ0FDUVJCcUlBSkIyQUJxSUFKQktHb2lBQkNWQkNFQklBQVFJd3dCQ3lBQ0tBSUFJZ0JCQURvQWxBTWdBRUdvQkdwQitZd01FQmtnQWlnQ0JDZ0NBQ2dDQkVFRWFoQ3dBeHBCQUNFQkN5QUNRZUFBYWlRQUlBRUx0UUVCQkg5QkFDQUFLQUlVSWdJZ0FrRWZTeUlDR3lFRVFRQWdBQ2dDRUNBQ0d5RUNJQUJCREdvaEFRTkFJQUVvQWdBaEEwRUFJUUVDUUFOQUlBSWdBMGNnQVNBRVIzSkZCRUFnQUNnQ0FDRUJBMEFnQVVVTkF5QUJLQUtBZ0FRaEFpQUJFQjhnQWlFQkRBQUxBQXNnQXlBQlFRSjBhaWdDQUJvZ0FVRUJhaUlCUVNCSERRQUxJQU5CZ0FGcUlRRU1BUXNMSUFCQkFEWUNHQ0FBUW9DQWdJQ0FCRGNDRUNBQVFvQ0FCRGNDQ0NBQVFnQTNBZ0FMeFFFQkJuOGpBRUV3YXlJRUpBQWdCQ0FDS0FJQU5nSXNJQVFnQXhEVkJpRUNJd0JCRUdzaUJTUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FGSUFNMkFnZ2pBRUVRYXlJREpBQWdBRUdNQVdvaUJoRDlCU0VISUFRb0Fpd2hDQ0FGS0FJSUlRa2dBQ2dDQ0NFQUlBTWdBa0VnYWpZQ0NDQURJQUlvQWlBZ0FrYzZBQXdnQmlBSElBQWdDU0FCSUFnZ0EwRUlhaEQrQlNJQUVDZ2dCaUFHS0FJWVFRRnFOZ0lZSUFOQkVHb2tBQ0FGUVJCcUpBQWdBaEFqSUFSQk1Hb2tBQ0FBQzNnQkJYOGdBQ2dDeEFRaUJVRUJheUVHQWtBRFFDQURJQVZHRFFFZ0FDZ0N3QVFnQVVFd2JHb2lCQzBBSUFSQUlBSWdBaWdDTENJSElBUW9BaXhMQkg4Z0JDQUNFUEFESUFJb0Fpd0ZJQWNMUVFGcU5nSXNJQUZCQVdwQkFDQUJJQVpIR3lFQklBTkJBV29oQXd3QkN3c2dCQ0FDRU1nUEN3c1NBQ0FBSUFFUWtBa2lBRUVCT2dBZ0lBQUxDd0FnQUVFQU5nSUFJQUFMRGdBZ0FCQ0dHeUFBSUFFUXp3c0xqQWNCQzM4akFFR2dBbXNpQlNRQVFRd2dBVUdXQVd4QjVBQnVJZ0VnQVVFTVRSc2lCQ0FBS0FMRUJFc0VRQ0FGUW9DQWdJQ0FBVGNDbEFJZ0JTQUZRUkJxSWdFMkFwQUNJQUVnQUNnQzBBUVFoeHNnQUNnQ3dBUWlBU0FBS0FMRUJFRXdiR29oQmdOQUFrQWdBU0FHUmdSQUlBQVE0QndnQUNBRUVQa1BJQVVvQXBBQ0lnRWdCU2dDbEFKQkJYUnFJUWtNQVFzZ0FTMEFJQVJBSUFFUTRBWWhCeUFGUVJCcUlnSW9Bb1FDSWdNZ0FpZ0NpQUpQQkVBZ0FpQUNLQUtJQWlJRFFRRjBRUUlnQXhzUWh4c2dBaWdDaEFJaEF3c2dBaUFEUVFGcU5nS0VBaUFDS0FLQUFpQURRUVYwYWlBSEVKQUpHZ3NnQVVFd2FpRUJEQUVMQ3dOQUlBRWdDVWNFUUNNQVFkQUJheUlDSkFBZ0FDZ0N4QVFnQUNnQzBBUWlBMEdXQVd4QmxnRnFRZVFBYmtrRVFDQUFJQU5CQVhSQkFtb1FtZ1FMSUFKQnlBRnFJQUFnQVJEckF5QUNJQUZCQ0dvMkFzUUJJQUlnQVRZQ3dBRWdBQ2dDeEFRaUNFRUJheUVLSUFFb0FnQWhDeUFBS0FMQUJDRUVJQUlvQXN3QklRd2dBaWdDeUFFaEJrRUFJUWNDUUFOQUlBY2dDRWNFUUNBRUlBWkJNR3hxSWdNdEFDQkZCRUFnQWlBQ1FjQUJhaENFR3lBRElBSVFtUVFnQWtFSWFoQVdJQUlvQXN3QklRZ2dCQ0FHUVRCc2FpSUVJQWMyQWl3Z0JDQUlOZ0lvSUFBZ0FDZ0MwQVJCQVdvMkF0QUVJQUFnQUNnQzFBUkJBV28yQXRRRUlBVWdBMEVJYWpZQ0RDQUZRUUEyQWdnTUF3c0NRQ0FES0FJb0lBeEhEUUFnQ3lBREtBSUFSdzBBSUFWQkFqWUNDQ0FGSUFOQkNHbzJBZ3dNQXdzZ0J5QURLQUlzU3dSQUlBSkJvQUZxSWdRZ0FrSEFBV29RaEJzZ0FpQUVFSmNFSVFRZ0FpZ0N6QUVoQ0NBRUlBYzJBaXdnQkNBSU5nSW9JQUpCcUFGcUVCWWdCQ0FERVBBRElBUWdCQ2dDTEVFQmFqWUNMQ0FBSUFaQkFXb2dBQ2dDeEFSd0lBUVFsZ1FnQUNBQUtBTFFCRUVCYWpZQzBBUWdBQ0FBS0FMVUJFRUJhallDMUFRZ0JTQURRUWhxTmdJTUlBVkJBRFlDQ0NBRUVKa0REQU1GSUFaQkFXcEJBQ0FHSUFwSEd5RUdJQWRCQVdvaEJ3d0NDd0FMQ3lBQ1FZYTFBMEhyQTBFT0lBSkJvQUZxRUIwaUF4QVhJZ1JCR0dwQmxqVVFEaG9nQkJBWUlBVkNBRGNDQ0NBREVCNExJQUpCMEFGcUpBQWdBVUVnYWlFQkRBRUxDeUFGUVJCcUlRRkJBQ0VBQTBBZ0FTZ0NoQUlnQUUwRVFDQUJRUUEyQW9RQ0JTQUJLQUtBQWlBQVFRVjBha0VJYWhBV0lBQkJBV29oQUF3QkN3c2dBU0FCS0FLQUFoQTJDeUFGUWFBQ2FpUUFDdzhBSUFBZ0FVSEV1UkpCRFJDTUNBc1FBQ0FBRUtFYklBQWdBQ2dDWUJBMkM0VUJBUUovSXdCQndBRnJJZ01rQUNBRElBRTJBcndCSUFBZ0F5Z0N2QUVRekJzaUFFSFFzaEkyQWdRZ0FFR1VzeEkyQWdBZ0FDQUNOd01RSUFCQjhMSVNOZ0lBSUFKQ0E0TkNBVkVFUUNBRFFRaHFRYmF6QlVFb1FRMGdBMEdvQVdvUUhTSUJFQmNpQkVFWWFrR1Y1UWdRRGhvZ0JCQVlJQUVRSGdzZ0EwSEFBV29rQUNBQUN5WUFJQUZCQVdvaUFVRUdUUVJBSUFCQkNHb2dBVUVDZEVHd3NoSnFLQUlBRUE0YUN5QUFDN2dNQVE5L0l3QkJzQUZySWdNa0FDQURRYUFCYWhCVkFrQWdBaWdDQkVVRVFDQURRYUFCYWtIYS9BSVEwZ0VNQVFzZ0EwR2dBV29nQTBHSUFXb2dBaEQ1QnlJQ0VKNEJJQUlRRHhvTEFrQUNmeUFEUVlnQmFpQUJRUVJxSWdzZ0EwR2dBV29RNXhzaURpZ0NBQ0lDS0FJUUlnOGdEaWdDRkVZRVFDQU9LQUlRREFFTEl3QkJFR3NpQ2lRQUl3QkJ3QUZySWd3a0FDTUFRUkJySWdna0FDQU9RUVJxSWcwb0FnQWhCU0FJSUEwb0FnUWdEUzBBQ3lJRUlBUkJHSFJCR0hWQkFFZ2lCQnMyQWdRZ0NDQUZJQTBnQkJzMkFnQWdDQkRmR3lFRklBSW9BZ1FoQkNBTUlBVTJBcndCSUF3Z0JTQUVjRFlDdUFFZ0NFRVFhaVFBSUFJb0FnUWlDVUVCYXlFSUlBd29BcmdCSVJBQ1FBTkFJQWtnRVVjRVFDQUNLQUlBSUJCQk1HeHFJZ2N0QUNSRkJFQWdDa0VBTmdJTUlBcEJBRG9BQ0F3REN5QU1LQUs4QVNFRVFRQWhCU01BUVJCcklnWWtBQ0FFSUFjb0FpaEdCRUFnRFNnQ0FDRUZJQVlnRFNnQ0JDQU5MUUFMSWdRZ0JFRVlkRUVZZFVFQVNDSUVHellDQkNBR0lBVWdEU0FFR3pZQ0FDQUdJQWNRM2hzaEJRc2dCa0VRYWlRQUlBVUVRQ0FLSUJBMkFnd2dDa0VCT2dBSURBTUxJQkVnQnlnQ0xFc0VRQ0FLUVFBMkFnd2dDa0VBT2dBSURBTUZJQkJCQVdwQkFDQUlJQkJIR3lFUUlCRkJBV29oRVF3Q0N3QUxDeUFNUVFocVFZYTFBMEdlQkVFT0lBeEJxQUZxRUIwaUJSQVhJZ1JCR0dwQjBqVVFEaG9nQkJBWUlBcEJBRFlDRENBS1FRQTZBQWdnQlJBZUN5QU1RY0FCYWlRQUlBb29BZ3doQlNBQ0tBSUFJUVFnQ2kwQUNDRUNJQXBCRUdva0FDQU9JQTgyQWhRZ0RpQUVJQVZCTUd4cVFRaHFRUUFnQWhzaUFqWUNFQ0FDQzBVRVFDQURJQU1vQXFRQklBTXRBS3NCSWdJZ0FrRVlkRUVZZFVFQVNDSUNHellDaEFFZ0F5QURLQUtnQVNBRFFhQUJhaUFDR3pZQ2dBRWdBeUFES1FPQUFUY0RFQ0FBSUFFZ0EwRVFhaER1RHd3QkMwRUFJUUlnQTBIZ0FHb2dBVUVZYWlJSElBTkJvQUZxRU9jYklnOFE1aHNFUUNBUEVPMFBLQUlBSVFJTElBTkIwQUJxRUZVRFFDQURJQUpCQVdvaUFqWUNmQ0FEUVRCcUlnZ2dBMEdnQVdwQnNiMEZFTGdDSUFOQklHb2lCQ0FDRUY4Z0EwRkFheUlKSUFnZ0JCQk9JQU5CMEFCcUlnVWdDUkNlQVNBSkVBOGFJQVFRRHhvZ0NCQVBHaUFESUFNb0FsUWdBeXdBV3lJRVFmOEJjU0FFUVFCSUlnUWJOZ0pFSUFNZ0F5Z0NVQ0FGSUFRYk5nSkFJd0JCRUdzaUJTUUFJQVZCQ0dvZ0N5QUpFT1ViSUFVdEFBZ2hCQ0FGUVJCcUpBQWdCQTBBQ3lBRElBTW9BbFFnQXkwQVd5SUVJQVJCR0hSQkdIVkJBRWdpQkJzMkFod2dBeUFES0FKUUlBTkIwQUJxSUFRYk5nSVlJQU1nQXlrREdEY0RDQ0FBSUFFZ0EwRUlhaER1RHdKQUlBOFE1aHNFUUNBUEVPMFBJQUkyQWdBTUFRc2pBRUhBQVdzaUJpUUFJQWNvQWdRZ0J5Z0NEQ0lBUVpZQmJFR1dBV3BCNUFCdVNRUkFJQWNnQUVFQmRFRUNhaERaR3dzZ0EwRkFheUVMSUFaQnVBRnFJQWNnQTBHZ0FXb2lCQkRtRHlBR0lBTkIvQUJxTmdLMEFTQUdJQVEyQXJBQklBY29BZ1FpQWtFQmF5RUJJQVlvQXJnQklRaEJBQ0VGQWtBRFFDQUNJQVZIQkVBZ0J5Z0NBQ0lBSUFoQkhHeHFJZ2t0QUJCRkJFQWdCaUFHUWJBQmFoRFlHeUFKSUFZUTF4c2dCaEFQR2lBR0tBSzhBU0VCSUFBZ0NFRWNiR29pQUNBRk5nSVlJQUFnQVRZQ0ZDQUhJQWNvQWd4QkFXbzJBZ3dnQnlBSEtBSVFRUUZxTmdJUUlBc2dDVUVNYWpZQ0JDQUxRUUEyQWdBTUF3c2dDU0FHS0FLOEFTQUVFT1VQQkVBZ0MwRUNOZ0lBSUFzZ0NVRU1hallDQkF3REN5QUZJQWtvQWhoTEJFQWdCa0dnQVdvaUFTQUdRYkFCYWhEWUd5QUdJQUVRMWhzaEFpQUdLQUs4QVNFQUlBSWdCVFlDR0NBQ0lBQTJBaFFnQVJBUEdpQUNJQWtRNUE4Z0FpQUNLQUlZUVFGcU5nSVlJQWNnQ0VFQmFpQUhLQUlFY0NBQ0VOVWJJQWNnQnlnQ0RFRUJhallDRENBSElBY29BaEJCQVdvMkFoQWdDeUFKUVF4cU5nSUVJQXRCQURZQ0FDQUNFS3dIREFNRklBaEJBV3BCQUNBQklBaEhHeUVJSUFWQkFXb2hCUXdDQ3dBTEN5QUdRWWExQTBIckEwRU9JQVpCb0FGcUVCMGlBUkFYSWdCQkdHcEJsalVRRGhvZ0FCQVlJQXRDQURjQ0FDQUJFQjRMSUFaQndBRnFKQUFMSUFOQjBBQnFFQThhSUE5QkJHb1FEeG9MSUE1QkJHb1FEeG9nQTBHZ0FXb1FEeG9nQTBHd0FXb2tBQXNYQUNBQUtBSUVRYWlVRWtZRWZ5QUFLQUlzQlNBQUN3dWdBUUVFZnlBQktBSUFJUVFnQVVFQU5nSUFJQUFnQkRZQ0FDQUFJQUVvQWdRMkFnUWdBVUVBTmdJRUlBQWdBU2dDQ0NJQ05nSUlJQUFnQVNnQ0RDSUROZ0lNSUFBZ0FTZ0NFRFlDRUNBREJFQWdBRUVJYWlFRElBSW9BZ1FoQWdKQUlBQW9BZ1FpQUNBQVFRRnJJZ1Z4UlFSQUlBSWdCWEVoQWd3QkN5QUFJQUpMRFFBZ0FpQUFjQ0VDQ3lBRUlBSkJBblJxSUFNMkFnQWdBVUlBTndJSUN3c0pBQ0FBRU9nSEVCOExod0VCQTM4Z0FTQUJLQUlFSUFBb0FnUWdBQ2dDQUNJRWF5SURheUlDTmdJRUlBTkJBRW9FUUNBQ0lBUWdBeEI5R2lBQktBSUVJUUlMSUFBb0FnQWhBeUFBSUFJMkFnQWdBU0FETmdJRUlBQW9BZ1FoQWlBQUlBRW9BZ2cyQWdRZ0FTQUNOZ0lJSUFBb0FnZ2hBaUFBSUFFb0FndzJBZ2dnQVNBQ05nSU1JQUVnQVNnQ0JEWUNBQXNSQUNBQUlBRW9BZ2dvQWlSQkpHb1FVd3NSQUNBQVFTQkI0ZjhEUVhoQkJ4REtBUXNSQUNBQVFTaEIyZjhEUVhoQkJ4REtBUXRNQVFGL0lBQW9BaFFpQWlBQUtBSVlUd1JBSUFBZ0FDZ0NHQ0lDUVFGMFFRSWdBaHNRL0FzZ0FDZ0NGQ0VDQ3lBQUlBSkJBV28yQWhRZ0FDZ0NFQ0FDUVFKMGFpQUJLQUlBTmdJQUN3NEFJQUFRSENBQVFSQnFFTUFkQzkwQkFRWi9Jd0JCNEFCcklnTWtBQ0FESUFJMkFsd2dBaWdDQkNJSVFjanBEMFlFUUNBRFFVQnJJZ1VnQTBFd2FpQUJFQlFpQVVIeW1na1FMU0FEUVNCcUlnWWdBa0VrYWhCVElBTkIwQUJxSWdjZ0JTQUdFRTRnQTBFSWFpSUVJQWRCOUlVQkVDMGdBQ0FFSUFKQkVHb1FKeUFFRUE4YUlBY1FEeG9nQmhBUEdpQUZFQThhSUFFUUR4b2dCQ0FBUWFBQmFpQURRZHdBYWhEVEVBSkFJQU10QUJoRkRRQWdBeTBBRkVFQlJ3MEFJQU1vQWdnaUFVVU5BQ0FBUWFnZGFpQUJFSjBKQ3lBRFFRaHFFTkVRQ3lBRFFlQUFhaVFBSUFoQnlPa1BSd3NPQUNBQUlBQWdBUkNLSGhDbEhndGlBUUovSXdCQklHc2lBaVFBQWtBZ0FTQUFLQUlJSUFBb0FnQWlBMnRCQW5WTEJFQWdBVUdBZ0lDQUJFOE5BU0FBSUFKQkNHb2dBU0FBS0FJRUlBTnJRUUoxSUFCQkNHb1Fwd0lpQUJDakJDQUFFSm9EQ3lBQ1FTQnFKQUFQQ3hBQkFBc05BQ0FBSUFFZ0FrRUFFTVVNQzVVQ0FRZC9Jd0JCRUdzaUFpUUFJd0JCc0FGcklnTWtBQ0FBS0FKa0lnVkJBV3NoQnlBQktBSUFJZ1lnQlhBaEFTQUFLQUpnSVFoQkFDRUFBa0FEUUNBQUlBVkhCRUFnQ0NBQlFRUjBhaUlFTFFBRVJRUkFJQUpCQURZQ0RDQUNRUUE2QUFnTUF3c0NRQ0FFS0FJSUlBWkhEUUFnQmlBRUtBSUFSdzBBSUFJZ0FUWUNEQ0FDUVFFNkFBZ01Bd3NnQUNBRUtBSU1Td1JBSUFKQkFEWUNEQ0FDUVFBNkFBZ01Bd1VnQVVFQmFrRUFJQUVnQjBjYklRRWdBRUVCYWlFQURBSUxBQXNMSUFOQmhyVURRWjRFUVE0Z0EwR2dBV29RSFNJQUVCY2lBVUVZYWtIU05SQU9HaUFCRUJnZ0FrRUFOZ0lNSUFKQkFEb0FDQ0FBRUI0TElBTkJzQUZxSkFBZ0FpMEFDQ0VBSUFKQkVHb2tBQ0FBQ3c0QUlBQkJIR29RcmdzZ0FCQmVDMk1DQW44QmZpTUFRUkJySWdNa0FDQUJJQUVvQWhRaUJFRUJhallDRkNBQktBSUlJQVF0QUFCQkFuUnFLQUtVQlNFRUlBTWdBaWtDQUNJRk53TUlJQVFvQWdBb0FnZ2hBaUFESUFVM0F3QWdBQ0FFSUFFZ0F5QUNFUVlBSUFOQkVHb2tBQXNOQUNBQVFSeHFFRjRnQUJCZUMxY0JBbjhnQVNBQUtBSklTd1JBSUFBb0FrQWhBaUFBSUFFUXJ4RkJBQ0VCQTBBZ0FDZ0NSQ0FCVFFSQUlBQWdBaEEyQlNBQlFRTjBJZ01nQUNnQ1FHb2dBaUFEYWlrQ0FEY0NBQ0FCUVFGcUlRRU1BUXNMQ3d2cEFRRUdmeU1BUVNCcklRUWdBQ2dDOUFFaUJrRUJheUVIQWtBRFFDQUZJQVpHRFFFZ0FDZ0M4QUVnQVVFVWJHb2lBeTBBQ0FSQUlBSWdBaWdDRUNJSUlBTW9BaEJMQkg4Z0JDQURLQUlRTmdJWUlBUWdBeWtDQ0RjREVDQUVJQU1wQWdBM0F3Z2dBeUFDS0FJUU5nSVFJQU1nQWlrQ0NEY0NDQ0FESUFJcEFnQTNBZ0FnQWlBRUtBSVlOZ0lRSUFJZ0JDa0RFRGNDQ0NBQ0lBUXBBd2czQWdBZ0FpZ0NFQVVnQ0F0QkFXbzJBaEFnQVVFQmFrRUFJQUVnQjBjYklRRWdCVUVCYWlFRkRBRUxDeUFESUFJcEFnQTNBZ0FnQXlBQ0tBSVFOZ0lRSUFNZ0Fpa0NDRGNDQ0FzTEhRRUJmeU1BUVJCcklnRWtBQ0FBRUxNTUlRQWdBVUVRYWlRQUlBQUxFUUFnQUVFWVFlbi9BMEY0UVFjUXlnRUxGd0FnQUJETkNTQUFMUUFJUVFKSEJFQVFid0FMSUFBTEhRRUJmaUFBUVFocUlBRXBBZ0FpQXFjZ0FrSWdpS2NRK3drYUlBQUxFZ0FnQUVIRUFFRzkvd05CZkVFREVNb0JDeHNBSUFBZ0FVSGtBRzRpQUJEb0NTQUFRWngvYkNBQmFoRG9DUXZKQVFFRGZ5TUFRUkJySWdVa0FDQUZJQUUyQWdoQkFDRUJRUVloQmdKQUFrQWdBQ0FGUVFocUVKQUNEUUJCQkNFR0lBTkJ3QUFnQUNnQ0FCRHRBU0lIRU1rQ1JRMEFJQU1nQnhEM0JDRUJBMEFDUUNBQlFUQnJJUUVnQUJDaEFpSUhJQVZCQ0dvUTJnSkZJQVJCQWtoeURRQWdBMEhBQUNBSEtBSUFFTzBCSWdZUXlRSkZEUU1nQkVFQmF5RUVJQU1nQmhEM0JDQUJRUXBzYWlFQkRBRUxDMEVDSVFZZ0J5QUZRUWhxRUpBQ1JRMEJDeUFDSUFJb0FnQWdCbkkyQWdBTElBVkJFR29rQUNBQkM5TUJBUU4vSXdCQkVHc2lCaVFBSUFZZ0FUWUNDRUVBSVFGQkJpRUZBa0FDUUNBQUlBWkJDR29RaHdJTkFDQUFLQUlBRU80QklRZEJCQ0VGSUFNb0FnaEJ3QUFnQnhDOUFrVU5BQ0FESUFjUXZBVWhBUU5BQWtBZ0FVRXdheUVCSUFBUW13SWlCeUFHUVFocUVNb0NSU0FFUVFKSWNnMEFJQWNvQWdBUTdnRWhCU0FES0FJSVFjQUFJQVVRdlFKRkRRTWdCRUVCYXlFRUlBTWdCUkM4QlNBQlFRcHNhaUVCREFFTEMwRUNJUVVnQnlBR1FRaHFFSWNDUlEwQkN5QUNJQUlvQWdBZ0JYSTJBZ0FMSUFaQkVHb2tBQ0FCQzVZQkFRTi9Jd0JCRUdzaUJDUUFJQVFnQXpZQ0RDQUVRUWhxSUFFUXR3TWhCaUFFS0FJTUlRTWpBRUVRYXlJQkpBQWdBU0FETmdJTUlBRWdBellDQ0VGL0lRVUNRRUVBUVFBZ0FpQURFSnNLSWdOQkFFZ05BQ0FBSUFOQkFXb2lBeERnQVNJQU5nSUFJQUJGRFFBZ0FDQURJQUlnQVNnQ0RCQ2JDaUVGQ3lBQlFSQnFKQUFnQlNFQUlBWVF0Z01nQkVFUWFpUUFJQUFMWXdBZ0FoQzRBVUd3QVhFaUFrRWdSZ1JBSUFFUEN3SkFJQUpCRUVjTkFBSkFBa0FnQUMwQUFDSUNRU3RyRGdNQUFRQUJDeUFBUVFGcUR3c2dBa0V3UnlBQklBQnJRUUpJY2cwQUlBQXRBQUZCSUhKQitBQkhEUUFnQUVFQ2FpRUFDeUFBQ3d3QUlBQWdBUkNiRFVFQmN3c3VBQUpBSUFBUXVBRkJ5Z0J4SWdBRVFDQUFRY0FBUmdSQVFRZ1BDeUFBUVFoSERRRkJFQThMUVFBUEMwRUtDd2NBSUFBUU8wVUxUQUVCZnlBQUtBSVFJZ0lnQUNnQ0ZFOEVRQ0FBSUFBb0FoUWlBa0VCZEVFQ0lBSWJFTHdOSUFBb0FoQWhBZ3NnQUNBQ1FRRnFOZ0lRSUFBb0Fnd2dBa0VDZEdvZ0FTZ0NBRFlDQUFzWEFDQUFJQU0yQWhBZ0FDQUNOZ0lNSUFBZ0FUWUNDQXNSQUNBQ0JFQWdBQ0FCSUFJUW5nMGFDd3V4QVFFR2Z5TUFRU0JySWdJa0FDQUNRUmhxSWdNZ0FCRGZBeG9DUUNBREVKSUVSUTBBSUFKQkVHb2lBeUFBSUFBb0FnQkJER3NvQWdCcUVINGdBeEQ5QkNFRUlBTVFaQ0FDUVFocUlBQVEwZ1FoQlNBQUlBQW9BZ0JCREdzb0FnQnFJZ1lRbkFNaEJ5QUNJQVFnQlNnQ0FDQUdJQWNnQVNBRUtBSUFLQUljRVJnQU5nSVFJQU1RMFFSRkRRQWdBQ0FBS0FJQVFReHJLQUlBYWtFRkVJOERDeUFDUVJocUVPQURJQUpCSUdva0FDQUFDMzBDQW44QmZpTUFRU0JySWdVa0FDQUZJQU1nQTBJL2h5QUVJQVJDUDRjUXNBSWdBQUovQWtBZ0JTa0RDQ0FGS1FNQUlnZENQNGRSRFFBZ0JVRVFhaUlHSUFOQjNaZ0lJQVFRN2dZZ0FTQUdJQUlRWFNBR0VBOGFRZ0FoQnlBQkxRQUVEUUJCQWd3QkN5QUFJQWMzQXdCQkFRczZBQWdnQlVFZ2FpUUFDL29CQWdOK0FuOGpBRUVRYXlJRkpBQUNmaUFCdlNJRFF2Ly8vLy8vLy8vLy93Q0RJZ0pDZ0lDQWdJQ0FnQWg5UXYvLy8vLy8vLy92L3dCWUJFQWdBa0k4aGlFRUlBSkNCSWhDZ0lDQWdJQ0FnSUE4ZkF3QkN5QUNRb0NBZ0lDQWdJRDQvd0JhQkVBZ0EwSThoaUVFSUFOQ0JJaENnSUNBZ0lDQXdQLy9BSVFNQVFzZ0FsQUVRRUlBREFFTElBVWdBa0lBSUFPblowRWdhaUFDUWlDSXAyY2dBa0tBZ0lDQUVGUWJJZ1pCTVdvUXpBSWdCU2tEQUNFRUlBVXBBd2hDZ0lDQWdJQ0F3QUNGUVl6NEFDQUdhNjFDTUlhRUN5RUNJQUFnQkRjREFDQUFJQUlnQTBLQWdJQ0FnSUNBZ0lCL2c0UTNBd2dnQlVFUWFpUUFDd2tBSUFDOVFqU0lwd3RxQVFGL0l3QkJNR3NpQXlRQUlBTWdBVFlDQ0NBRFFRaHFRUVJ5SUFJUVZDRUNRUlFRRlNJQlFlU1VJRFlDQUNBQklBTW9BZ2cyQWdRZ0FVRUlhaUFDRUZRYUlBTWdBVFlDS0NBQVFhQURhaUFEUVJocUlnQVFrd0VnQUJBV0lBSVFEeG9nQTBFd2FpUUFDNXdCQVFOL0l3QkI4QUZySWdVa0FDQUZRWmlJSURZQzJBRWdCU0FGUWRnQmFpSUhOZ0xvQVNBQUlBY2dBaUFERUlrRVJRUkFJQVZCR0dvaUF5QUFRWElnQWhBUUlBVkJDR29pQUNBRUVLUUdJQU1nQUJBU0dpQURRZTIxREJBT0dpQURRWmJOQ2hBT0dpQURJQUVRRWhvZ0EwSGpxd1FRRGhvZ0JTZ0MxQUVoQmlBQUVBOGFJQU1RRVFzZ0JVSFlBV29RRmlBRlFmQUJhaVFBSUFZTHVBSUJBMzhqQUVId0FXc2lCaVFBSUFZZ0JUb0E3d0VDUUFKQUlBSW9BaUJCQ2tjTkFDQUdRZENISURZQ0VDQUdJQVpCRUdvMkFpQUNRQ0FDS0FJRUlBSW9BZ0FpQld0QkFuVWdBMDBOQUNBQUlBVWdBMEVDZEdvb0FnQVF1Z0VpQlM4QkhrRU1SdzBBSUFVb0FpQkJDa2NOQUNBR1FSQnFJZ2NnQlNnQ0FDZ0NFQkNLQWlFSUlBY1FGa0VBSVFVZ0NFVU5BUXdDQ3lBR1FSQnFFQllMSUFaQjlJY2dOZ0xRQVNBR0lBWkIwQUZxSWdjMkF1QUJJQVlnQmtIdkFXbzJBdFFCUVFBaEJTQUFJQWNnQWlBREVJa0VSUVJBSUFaQkVHb2lBeUFBUVhJZ0FoQVFJQVlnQkJDa0JpQURJQVlRRWhvZ0EwSHR0UXdRRGhvZ0EwR1d6UW9RRGhvZ0F5QUJFQklhSUFOQjBZd0VFQTRhSUFZb0Fzd0JJUVVnQmhBUEdpQURFQkVMSUFaQjBBRnFFQllMSUFaQjhBRnFKQUFnQlF2Q0FRRUZmMEVBSUFBb0FoUWlBaUFDUVI5TElnSWJJUVJCQUNBQUtBSVFJQUliSVFVZ0FFRU1haUVCQTBBZ0FTZ0NBQ0VEUVFBaEFRSkFBMEFnQXlBRlJ5QUJJQVJIY2tVRVFDQUFLQUlBSVFFRFFDQUJSUTBESUFFb0FvQ0FCQ0VDSUFFUUh5QUNJUUVNQUFzQUN5QURJQUZCQW5ScUtBSUFJZ0lnQWlnQ0FDZ0NBQkVBQUJvZ0FVRUJhaUlCUVNCSERRQUxJQU5CZ0FGcUlRRU1BUXNMSUFCQkFEWUNHQ0FBUW9DQWdJQ0FCRGNDRUNBQVFvQ0FCRGNDQ0NBQVFnQTNBZ0FMRVFBZ0FFRTRRY24vQTBGNFFRY1F5Z0VMQ0FBZ0FDMEFKQm9Mc3dzQkJYOGpBRUVRYXlJRkpBQWdBaWdDTENJRElBSkJDR29nQXhzb0FnQWhBeUFDRUxnWElRUWdCU0FBTmdJTUlBTWdCQ0FGUVF4cUVKb0ZJQUlRdUJkR0JFQWdCU0FBTmdJSUlBVkJDR29oQmdKQUlBSW9BaXdpQXcwQUlBSW9BZ1JCQ0VjTkFFRUFJUU1qQUVFUWF5SUVKQUFDUUNBQ0tBSXNSUVJBRU13WElRY2dCRUVBTmdJSUlBSkJMR29nQnhDTkJTQUVRUWhxRUxzR0EwQWdBeUFDS0FJRVR3MENJQUlvQWl3Z0FpZ0NDQ0FEUVFKMGFoRFpCaUFEUVFGcUlRTU1BQXNBQzBHbXZRVkJpYXdEUWIwRFFjeTZCUkFBQUFzZ0FrRUFOZ0lFSUFSQkVHb2tBQ0FDS0FJc0lRTUxBa0FnQXdSQUlBTWdCaEQ5QWd3QkN5QUNLQUlJSUFJb0FnUWlBMEVDZEdvZ0JpZ0NBRFlDQUNBQ0lBTkJBV28yQWdRTElBQW9BaEFnQVVFR2RDQUJRUUoyYW1wQng0eWlqZ1pySUFGeklRTWdBQ2dDQ0NFRUlBQW9BZ1FoQVFKL0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUEwQWdBU0FFUmdSQUFrQWdBQ2dDRUE0YkhRQURCQVVHQndnSkNnc01EUTRQRUJFU0V4UVZGaGNZR1JvYkhBc0ZJQU1nQVJDWkRpRURJQUZCREdvaEFRd0JDd3NnQUNBQUtBSUFLQUlnRVFBQUlnQWdBeUFDSUFBb0FnQW9BdXdCRVFRQURCc0xJQUFnQUNnQ0FDZ0NLQkVBQUNJQUlBTWdBaUFBS0FJQUtBTHNBUkVFQUF3YUN5QUFJQUFvQWdBb0FqQVJBQUFpQUNBRElBSWdBQ2dDQUNnQzdBRVJCQUFNR1FzZ0FDQUFLQUlBS0FJNEVRQUFJZ0FnQXlBQ0lBQW9BZ0FvQXV3QkVRUUFEQmdMSUFBZ0FDZ0NBQ2dDUUJFQUFDSUFJQU1nQWlBQUtBSUFLQUxzQVJFRUFBd1hDeUFBSUFBb0FnQW9Ba2dSQUFBaUFDQURJQUlnQUNnQ0FDZ0M3QUVSQkFBTUZnc2dBQ0FBS0FJQUtBSlFFUUFBSWdBZ0F5QUNJQUFvQWdBb0F1d0JFUVFBREJVTElBQWdBQ2dDQUNnQ1dCRUFBQ0lBSUFNZ0FpQUFLQUlBS0FMc0FSRUVBQXdVQ3lBQUlBQW9BZ0FvQW1BUkFBQWlBQ0FESUFJZ0FDZ0NBQ2dDN0FFUkJBQU1Fd3NnQUNBQUtBSUFLQUpvRVFBQUlnQWdBeUFDSUFBb0FnQW9BdXdCRVFRQURCSUxJQUFnQUNnQ0FDZ0NjQkVBQUNJQUlBTWdBaUFBS0FJQUtBTHNBUkVFQUF3UkN5QUFJQUFvQWdBb0FuZ1JBQUFpQUNBRElBSWdBQ2dDQUNnQzdBRVJCQUFNRUFzZ0FDQUFLQUlBS0FLQUFSRUFBQ0lBSUFNZ0FpQUFLQUlBS0FMc0FSRUVBQXdQQ3lBQUlBQW9BZ0FvQW9nQkVRQUFJZ0FnQXlBQ0lBQW9BZ0FvQXV3QkVRUUFEQTRMSUFBZ0FDZ0NBQ2dDa0FFUkFBQWlBQ0FESUFJZ0FDZ0NBQ2dDN0FFUkJBQU1EUXNnQUNBQUtBSUFLQUtZQVJFQUFDSUFJQU1nQWlBQUtBSUFLQUxzQVJFRUFBd01DeUFBSUFBb0FnQW9BcUFCRVFBQUlnQWdBeUFDSUFBb0FnQW9BdXdCRVFRQURBc0xJQUFnQUNnQ0FDZ0NxQUVSQUFBaUFDQURJQUlnQUNnQ0FDZ0M3QUVSQkFBTUNnc2dBQ0FBS0FJQUtBS3dBUkVBQUNJQUlBTWdBaUFBS0FJQUtBTHNBUkVFQUF3SkN5QUFJQUFvQWdBb0FyZ0JFUUFBSWdBZ0F5QUNJQUFvQWdBb0F1d0JFUVFBREFnTElBQWdBQ2dDQUNnQ3dBRVJBQUFpQUNBRElBSWdBQ2dDQUNnQzdBRVJCQUFNQndzZ0FDQUFLQUlBS0FMSUFSRUFBQ0lBSUFNZ0FpQUFLQUlBS0FMc0FSRUVBQXdHQ3lBQUlBQW9BZ0FvQXRBQkVRQUFJZ0FnQXlBQ0lBQW9BZ0FvQXV3QkVRUUFEQVVMSUFBZ0FDZ0NBQ2dDMkFFUkFBQWlBQ0FESUFJZ0FDZ0NBQ2dDN0FFUkJBQU1CQXNnQUNBQUtBSUFLQUxnQVJFQUFDSUFJQU1nQWlBQUtBSUFLQUxzQVJFRUFBd0RDeUFBSUFBb0FnQW9BdWdCRVFBQUlnQWdBeUFDSUFBb0FnQW9BdXdCRVFRQURBSUxRYU9vQ1VHQW9BSkI3d0ZCeHRVREVBQUFDeUFBSUFBb0FnQW9BaGdSQUFBaUFDQURJQUlnQUNnQ0FDZ0M3QUVSQkFBTElRRUNRQ0FDS0FJc0lnQUVRQ0FBSUFBb0FnUkJCR3MyQWdRTUFRc2dBaUFDS0FJRVFRRnJOZ0lFQ3dzZ0JVRVFhaVFBSUFFTERRQWdBQkN2QVNBQUtBTFlBUXNYQUNBQUtBSVFCRUFnQUNBQklBSWdBeUFFRUxvT0N3dVZBUUVDZnlNQVFSQnJJZ01rQUNBRElBRTJBZ3dDUUNBQlFUOU5CRUFnQUNBQUtRTUFRZ0VnQWEyR2hEY0RBQXdCQ3lNQVFSQnJJZ0VrQUNBQUtBSUlJZ0pGQkVCQkRCQVZJZ0pDQURjQ0JDQUNJQUpCQkdvMkFnQWdBVUVBTmdJSUlBQkJDR29nQWhEWkRpQUJRUWhxRU1VRElBQW9BZ2doQWdzZ0FVRVFhaVFBSUFNZ0FpQURRUXhxRU5VRkN5QURRUkJxSkFBTEdRRUJmeU1BUVJCcklnRWdBRFlDRENBQktBSU1LQUlBUlF0RUFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQ0lBSUFJb0FnZ2lBU0FCS0FJQVFReHJLQUlBYWhDMUJqWUNBQ0FDUVJCcUpBQWdBQXMyQVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0NDRUFJQUlvQWd3UStnSWdBRFlDQkNBQ1FSQnFKQUFMVVFFQmZ5TUFRUkJySWdNa0FDQUNLQUprQkVBZ0EwRUFPZ0FNSUFNZ0FrSGdBR28yQWdnZ0FDQUJJQU5CQ0dvUSt3SWdBVUVJYWtIMzhBd1FEaG9MSUFGQkNHcEJpQWdRRGhvZ0EwRVFhaVFBQ3pFQkFuOGdBQ2dDQ0NFQkEwQWdBUVJBSUFFb0FnQWhBaUFCUVF4cUVESWFJQUVRSHlBQ0lRRU1BUXNMSUFBUXR3SUxpQUVCQVg4akFFRVFheUlFSkFBZ0JDQUNOZ0lJSUFRZ0F5Z0NBRFlDQkNNQVFSQnJJZ0lrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ00yQWd3Z0FpQUROZ0lJSUFCQmpBRnFJZ01nQXhERkFpQUFLQUlJSUFJb0FnZ2dBU0FFS0FJSUlBUW9BZ1FRK3g0aUFCQW9JQU1nQXlnQ0dFRUJhallDR0NBQ1FSQnFKQUFnQkVFUWFpUUFJQUFMSndFQmZ5TUFRUkJySWdFa0FDQUJRUWhxSUFBUTl4a2dBU2dDQ0NFQUlBRkJFR29rQUNBQUM4NENBZ1IvQVg0akFFR0FBV3NpQkNRQUlBUkJDR29nQXhEUkFTRUZJQVJCSUdvaUF5QUNOZ0lFSUFNZ0FUWUNBQ0FEUVFocUlBVVEwUUVhSUFOQ0FEY0NUQ0FEUW9DQWdJQ0FBVGNDUkNBRFFVQnJJQU5CSUdvMkFnQWdBMElBTndCUklBQkJNR29pQWlnQ2hBWWlBU0FDS0FLSUJrOEVRQ0FDS0FLSUJpSUFRUUYwUVFJZ0FCc2lBQ0FDS0FLSUJrc0VRQ0FDS0FLQUJpRUdRUWdoQVNBQ0lRY2dBRUVJVHdSQVFYOGdBSzFDNEFCK0lnaW5JQWhDSUlpbkd4QVZJUWNnQUNFQkN5QUNJQWMyQW9BR0lBSWdBVFlDaUFaQkFDRUJBMEFnQWlnQ2hBWWdBVTBFUUNBQ0lBWVFOZ1VnQVVIZ0FHd2lBQ0FDS0FLQUJtb2dBQ0FHYWlJQUVKY1BJQUFROHdnZ0FVRUJhaUVCREFFTEN3c2dBaWdDaEFZaEFRc2dBaUFCUVFGcU5nS0VCaUFDS0FLQUJpQUJRZUFBYkdvZ0F4Q1hEeUFERVBNSUlBVVFGaUFFUVlBQmFpUUFDMTBBSUFCQnVQUVBOZ0lFSUFCQjJQUVBOZ0lBSUFCQjZQUVBOZ0lFSUFCQm5QVVBOZ0lBSUFBZ0FqWUNEQ0FBSUFFMkFnZ2dBRUdJOVE4MkFnQWdBQ0FES1FJQU53SVFJQUFnQXlrQ0NEY0NHQ0FBSUFNb0FoQTJBaUFnQUFzN0FRRi9Jd0JCRUdzaUFpUUFJQUlnQUNBQVFkZ0NhaUFCRVBNTklnRTJBZ3dnQUNBQlFSQnFJQUpCREdvUXN3TWhBQ0FDUVJCcUpBQWdBQXNaQUNBQUxRQWdCRUFnQUNBQkVJVWJEd3NnQUNBQkVNOExDeGNBSUFBb0FnQWlBQ0FBSUFFZ0FpQURFSkliRUlFREM1WVFBUXQvSXdCQm9BSnJJZ0lrQUFKQUFrQURRQ0FCS0FJRUlnUkJrTFVTUmcwQ0lBUkJrS29TUmdSQUlBQW9BZ0JCQkdvUXRBc2hBd3dEQ3lBRVFhQ3pFa1lFUUNBQUtBSUFRUVJxRU5NUElRTU1Bd3NnQkVIUXFCSkdCRUFnQUNnQ0FFRUVha0hkOEFZUXlnWWhBd3dEQ3lBRVFiQ3BFa1lFUUNBQUtBSUFRUVJxRU9RSElRTU1Bd3NnQkVIUXBSSkdCRUFnQUNnQ0FFRUVhaERTRHlFRERBTUxJQVJCOEtvU1JnMEJJQUVRc2dJaUJBUkFJQUlnQUNBRUtBSVlFTjBFSWdFMkFwZ0NJQVF0QUNBRVFDQUVLQUljUVFOSEJFQWdBa0hvQUdwQjJLZ0ZRZWNBUVF3Z0FrR0lBbW9RSFNJQkVCY2lBMEVZYWtIUG1nZ1FEaG9nQXhBWUlBRVFIZ3NnQUNnQ0FDRUFJQUpCR3pZQ2FDQUFLQUlFSWdFaERDQUNRZWdBYWlFRElBRkIyQUpxSVFRakFFRXdheUlBSkFBZ0FFRWdhaUFDUVpnQ2FoRGdCd0ovSUFBb0FpaEZCRUFnQUNBQklBTVFxZ3dnQVNBRUlBQVF6Z0lNQVFzZ0FDQUJJQU1RcWd3Z0FTQUVJQUFnQUVFZ2FoQ3pDd3NoQVNBQVFTQnFFS2dCSUFCQk1Hb2tBQ0FNSUFFUWdRTWhBd3dFQ3lBQUtBSUFRUVJxSUFFZ0JDZ0NIQkNkR3lFRERBTUxJQUVvQWdSQmtLSVNSZ1JBSUFBZ0FTZ0NHQkRkQkNFRUlBSkNnSUNBZ0JBM0E1QUNJQUlnQWtHSUFtbzJBb3dDSUFFb0FpZ2lCU0FCS0FJc1J3UkFJQUFvQWdBaEF5QUNJQVUyQXBnQ0l3QkJFR3NpQlNRQUlBTVFIQ0FESUFNb0FneEJBV29pQmpZQ0RDQUZJQVkyQWdnZ0EwR01BV29nQTBFSWFpQUZRUWhxSUFOQjJBSnFJQUpCbUFKcUVKTWJJUU1nQlVFUWFpUUFJQUlnQXpZQ2FDQUNRWWdDYWlBQ1FlZ0FhaEN1QlFzZ0FrR0lBbXBCQkhJaEJRSi9JQUVvQWh3aUNDZ0NCQ0lEUWFpakVrWUVRQ0FBS0FJQUlRQWdBaUFGTmdKZ0lBSWdBaWdDakFJZ0FrR0lBbXBIT2dCa0lBQkJCR29nQkNBQ1FlQUFhaERqQnd3QkN5QURRZWlNRWtZRVFDQUNJQUFnQ0NnQ0RDZ0NDQkNPSGpZQ2FDQUFLQUlBSVFFZ0FpQUZOZ0pZSUFJZ0FpZ0NqQUlnQWtHSUFtcEhPZ0JjSXdCQkVHc2lBeVFBSUFFb0FnUWhDQ0FESUFJcEFsZzNBd2dqQUVIZ0FHc2lBQ1FBSUFFb0FnUWhCU0FBUVFVMkFqd2dBRUhzR3pZQ09DQUFJQUFwQXpnM0F3Z2dBRUZBYXlJSElBVWdBRUVJYWhEaEFTQUFJQVEyQWhBZ0FTZ0NCQ0VFSUFJb0FtZ2hCaU1BUVJCcklnRWtBQ0FCSUFRZ0JrRVFhaUFHS0FJa1FTUnFFUE1OSWdZMkFnd2dCQ0FHUVJCcUlBRkJER29Rc3dNaEJDQUJRUkJxSkFBZ0FFRUNOZ0ljSUFBZ0JEWUNGQ0FBSUFCQkVHbzJBaGdnQUNBQUtRTVlOd01BSUFVZ0JTQUlRZGdDYWlBSElBQkJJR29nQUJDMUFpSUJJQU5CQ0dvUXh3OFFnUU1oQkNBQkVLb0JJQUJCNEFCcUpBQWdBMEVRYWlRQUlBUU1BUXNnQTBHQWpSSkdCRUFnQUNnQ0JCRE9CQ0lHS0FMd0FpSURJQVlvQXZRQ1FRSjBhaUVLQWtBRFFDQURJQXBHRFFFQ1FDQURLQUlBSWdZb0FnUkJtUGdSUnlBR1JYSkZCRUFnQUNnQ0JDSUhFSzhCUVFBaENRSkFJQVpGRFFBZ0JpZ0NEQ0lMSUFjb0F1QUJJQWNvQXR3QklnZHJRUUoxVHcwQUlBY2dDMEVDZEdvb0FnQWlCMEVBSUFjRWZ5QUhLQUlFRU5NTkJVRUFDeHNoQ1FzZ0FTQUpSZzBCQ3lBRFFRUnFJUU1NQVFzTElBQW9BZ0FoQVNBQ1FlZ0FhaUlESUFBZ0FrRTRhaUFHS0FJa1FTUnFFRllRN3djZ0FVRUVhaUFERU1zR0RBSUxJQUlnQUNBSUtBSU1LQUlJRUpjQk5nSm9JQUFvQWdBaEFDQUNJQVUyQWpBZ0FpQUNLQUtNQWlBQ1FZZ0Nha2M2QURRZ0FFRUVhaUFFSUFKQjZBQnFJQUpCTUdvUTBROE1BUXNnQTBHUW94SkhCRUFnQUNnQ0FDSUJFQndnQWtIb0FHb2lBMEhZcUFWQmpRRkJEQ0FCUWNnQ2FoQVhJZ0ZCcUtJU0VKb0JHaUFCRUJnZ0FDZ0NBQ0VBSUFJZ0JUWUNLQ0FDSUFJb0Fvd0NJQUpCaUFKcVJ6b0FMQ0FDUVFFMkFtZ2dBRUVFYWlBRUlBTWdBa0VvYWhEaUJ3d0JDeUFJS0FJTUlRRWdBa0VCT2dCc0lBSWdBVFlDYUNBQUtBSUFJUUFnQWtIb0FHb1F2Z0VvQWdBaEFTQUNJQVUyQWlBZ0FpQUJOZ0tZQWlBQ0lBSW9Bb3dDSUFKQmlBSnFSem9BSkNBQVFRUnFJQVFnQWtHWUFtb2dBa0VnYWhEaUJ3c2hBeUFDUVlnQ2FoQ29BUXdEQ3lBQkVQQUdJZ1FFUUNBQUtBSUFJUUVnQWtIb0FHb2lBeUFBSUFJZ0JFRVlhaEJXRU84SElBRkJCR29nQXhETEJpRUREQU1MSUFFb0FnUWlCRUc0clJKR0JFQWdBU2dDR0NFQkRBRUxDeUFFUWZDa0VrWUVRQ0FBS0FJQVFRUnFJQUFnQVNnQ0dCRGRCQkNjR3lFRERBSUxJQVJCa0tjU1JnUkFJQUFvQWdCQkJHb2dBU2dDR0JDYkd5RUREQUlMSUFSQnNLWVNSZ1JBSUFBb0FnQkJCR29nQVNnQ0dCQ2FHeUVEREFJTElBUkI4S2NTUmdSQUlBQW9BZ0JCQkdwQnFaWURFTW9HSVFNTUFnc2dCRUhRcXhKR0JFQWdBQ2dDQUVFRWFpQUJLQUlZSUFBZ0FTZ0NIQkRkQkJDWkd5RUREQUlMSUFSQm1LNFNSZ1JBSUFBb0FnQkJCR29nQVNnQ0dDQUFJQUVvQWh3UTNRUVFtQnNoQXd3Q0N5QUVRZGl2RWtZRVFDQUFLQUlBUVFScUlBRW9BaGdnQVNnQ0hDQUJLQUlnRUpZYklRTU1BZ3NnQkVINHJoSkdCRUFnQUNnQ0FFRUVhaUFCS0FJWUVKVWJJUU1NQWdzZ0JFSFlyQkpHQkVBZ0FTZ0NIQ0lFUVFkR0JFQWdBU2dDSUNFREN5QUFLQUlBUVFScUlBQWdBU2dDR0JEZEJDQUVJQU1RMEE4aEF3d0NDeUFBS0FJQUlnQVFIQ0FDUWVnQWFrSFlxQVZCdVFGQkRDQUFRY2dDYWhBWElnQkJHR29pQkVIdXZ3c1FEaG9nQkVIaWxBd1FEaG9nQUNBQktBSUVRUVJxRUpvQkdpQUFFQmdNQVFzZ0FDQUJLQUlZRU4wRUlRTWdBQ2dDQUVFRWFpQURJQUVvQWlRZ0FTZ0NJQkNVR3lFREN5QUNRYUFDYWlRQUlBTUxLQUVCZnlNQVFSQnJJZ0lrQUNBQ0lBRTZBQThnQUNBQ1FROXFRUUVRK3drYUlBSkJFR29rQUFzcUFDQUFJQUVwQWdBM0FnQWdBQ0FCS1FJSU53SUlJQUFnQVNrQ0VEY0NFQ0FBSUFFb0FoZzJBaGdMREFBZ0FCRG9CeG9nQUJBZkMzSUJBbjhqQUVHZ0FXc2lCQ1FBSUFSQjE0d0ZRZVVBUVFFZ0FCRE1BeEFYSWdCQkdHb2lBMEdxOGd3UURob2dBMEd1OEF3UURob2dBQ0FCS0FJRVFRUnFFSm9CSWdGQkdHb2lBMEhiK0F3UURob2dBMEhWc0F3UURob2dBU0FDUVFScUVKb0JHaUFBRUJnZ0JFR2dBV29rQUFzTUFDQUFJQUVvQWdBUWxRa0x3VFVDQzM4QmZpTUFRWUFEYXlJREpBQWdBeUFDTmdJVUlBTWdBRFlDQ0NBRElBTkJGR28yQWd3Q1FDQUNCRUFnQWlnQ0JDSUVRZmpyRDBZRVFDQUNLQUlrSWdRb0FnUkI2SU1TUmdSQUlBTkJHR29nQUNBQklBSW9BaWhCQUJDbUFpQURLQUlZSVFFTUF3c2dBMEVZYWlBQUlBRWdCRUVBRU80SElBTkIyQUZxSUFBZ0F5Z0NHQ0FDS0FJb1FRQVFwZ0lnQXlnQ0hDSUJJQU1vQXR3QkVHb2dBQ2dDNEtjQ1FiZ0lhaUFEUVNCcUlBRVFnd01nQXlnQzJBRWhBUXdDQ3lBRVFianpEMFlFUUNBRFFSaHFFTk1HSVFZZ0FDZ0M0S2NDUWJnSWFoQ2VFQ0FDS0FKRUlnUWdBaWdDU0VFQ2RHb2hCUU5BSUFRZ0JVY0VRQ0FBSUFFZ0JDZ0NBQ0lIRU9NRUlRRWdCRUVFYWlFRUlBQW9BZ1FnQnhEaEFpMEFHRUVJY1EwQkN3c0NRQ0FBS0FJRUlBSVE0UUlvQWd3aUJFVU5BQ0FFS0FJRVFlQ1VFa2NOQUNBRUtBSUlJZ1JCQUNBRUtBSUVRZmp3RDBZYktBSW9JZ1JGRFFBZ0FDZ0NCQ0FDRU9FQ0xRQVlRUXh4UlEwQUlBQWdBU0FFRU9NRUlRRUxJQUFvQWdRaEJFRUFJUVVDUUNBQ1JRMEFJQUlvQWd3aUJ5QUVLQUlFSUFRb0FnQWlCR3RCQW5WUERRQWdCQ0FIUVFKMGFpZ0NBQ0lFUlEwQUlBUkJBQ0FFS0FJRVFiQ09Fa1liSVFVTEFrQWdCVVVOQUNBQUtBTGdwd0lpQlNnQytBY2lCQ0FGS0FMOEIwSDhBR3hxSVFVRFFDQUVJQVZHRFFFZ0JDZ0NlQ0lIQkVBZ0FDZ0M0S2NDSVFnZ0F5QUVLQUlBTmdMWUFTQUhJQWhCdUFocUlBTkIyQUZxRUlNQ0VHb0xJQVJCL0FCcUlRUU1BQXNBQ3lBR0lBQW9BdUNuQWlJRVFad1JhaWdDQUVHTUFXd2dCRUdZRVdvb0FnQnFRWXdCYXhEM0hDRUVJQUFvQXVDbkFrRzRDR29RblJBQ1FDQUFLQUlFSUFJUTRRSXRBQmhCQ0hGRkRRQWdBMEhZQVdvZ0JCQ2tCU0FEUWJnQmFpQUVFS01GSUFNb0FyZ0JJUVlEUUNBREtBTFlBU0lGSUFaR0RRRWdCUkM2QWlFRklBQW9BdUNuQWtHNENHb2dCU0FGS0FJRUVJTURJQU5CMkFGcUVPa0VEQUFMQUFzZ0EwSFlBV29oQlNBQUtBSUVJUVpCQUNFSEFrQWdBa1VOQUNBQ0tBSU1JZ0lnQmlnQ0JDQUdLQUlBSWdaclFRSjFUdzBBSUFZZ0FrRUNkR29vQWdBUTRBc2hCd3NnQjBFNGFpSUNLQUtrQWlFR0lBVWdBaWdDb0FJaUJ6WUNBQ0FGSUFjZ0JrRXdiR28yQWdRZ0JSRC9DQ0FEUWJnQmFpSUZJQUlvQXFBQ0lBSW9BcVFDUVRCc2FpSUNOZ0lFSUFVZ0FqWUNBQ0FGRVA4SUEwQWdBeWdDMkFFaUFpQURLQUs0QVVjRVFDQUNFT2dMSVFJZ0FDZ0M0S2NDSVFVZ0F5QUNLQUlnTmdMNEFpQUZRYVFSYWlBRFFmZ0NhaEQySENBRFFkZ0JhaEQ0SEF3QkN3c2dCQkRPQXd3Q0N5QUVRYmpzRDBZRVFBSi9JQUFvQWdRZ0FoRGhBaUlDRU5nY0JFQWdBaERUQWd3QkN3TkFRUUFnQWlnQ0RDSUNSUTBCR2lBQ0VOZ2NSUTBBQ3lBQ0VOTUNDeUVGSUFBb0F1Q25BaUFGRU04R0lRWWdBMEc0QVdvZ0FDZ0M0S2NDUWFRUmFpSUNFS0lGSUFOQitBSnFJQUlRb1FVZ0JrR1lBV29oQndOQUlBTW9BcmdCSWdJZ0F5Z0MrQUpHRFFNZ0F5QUNFTDRCS0FJQUlnSTJBdEFCQWtBQ1FDQUNSU0FDS0FJRVFhaWNFa2R5RFFBZ0FpZ0NVQ0lFRU5NQ0lnaEJBQ0FGSUFoR0d3MEJBMEFnQkNnQ0RDSUVSUTBCSUFRZ0JVY05BQXNNQVFzZ0EwRUFOZ0lZSUFOQjJBRnFJQWNnQTBIUUFXb2dBMEVZYWhDYkNRSkFJQU1vQXRnQkJFQWdBeWdDM0FFaEJBd0JDeUFHS0FLZ0FpRUVJQU5CR0dvaUNDQUNFS1FFSUFBb0F1Q25Ba0VBRUp3QklRSWdDQkFQR2lBRElBSTJBdkFDSUFZb0FxQUNJQVJHQkVBZ0F5Z0MzQUVpQkNBQ05nSUFEQUVMSUFOQkdHb2dCeUFEUWRBQmFpQURRZkFDYWhEdkJTQURLQUljSVFRTElBUW9BZ0FnQUNnQzRLY0NRYmdJYWlBRFFkQUJhaENEQWhCcUN5QURRYmdCYWhDZ0JRd0FDd0FMSUFSQmdJUVNSZ1JBSUFOQnVBRnFJQUFnQVNBQ0tBSWtRUUFRcGdJZ0FDZ0M0S2NDSUFJUW5BRWlDRUVCT2dBRUlBZ2dBeWdDdkFFUWFnSi9JQUFvQWdRZ0FoRGhBaUlFS0FJRVFlQ1VFa2NFUUFOQVFRQWdCQ2dDRENJRVJRMENHaUFFS0FJRVFlQ1VFa2NOQUFzTElBUUxJUVlnQUNnQzRLY0NJQVlRendZaEJ5QURRZmdDYWlBQUtBTGdwd0pCcEJGcUlnUVFvZ1VnQTBId0Ftb2dCQkNoQlNBSFFaZ0JhaUVLQTBBZ0F5Z0MrQUlpQkNBREtBTHdBa1lFUUNBQUtBSUVJQUlRNFFJcEF4aENDRkVOQkNBQUtBTGdwd0pCQUJDY0FTSUJJQWdRYWd3RUJTQURJQVFRdmdFb0FnQWlCVFlDNkFJQ1FBSkFJQVZGSUFVb0FnUkJxSndTUjNJTkFDQUZLQUpRSWdRUTB3SWlDVUVBSUFZZ0NVWWJEUUVEUUNBRUtBSU1JZ1JGRFFFZ0JDQUdSdzBBQ3d3QkN5QURRUUEyQWhnZ0EwSFlBV29nQ2lBRFFlZ0NhaUFEUVJocUVKc0pBa0FnQXlnQzJBRUVRQ0FES0FMY0FTRUVEQUVMSUFjb0FxQUNJUVFnQTBFWWFpSUpJQVVRcEFRZ0FDZ0M0S2NDUVFBUW5BRWhCU0FKRUE4YUlBTWdCVFlDMEFFZ0J5Z0NvQUlnQkVZRVFDQURLQUxjQVNJRUlBVTJBZ0FNQVFzZ0EwRVlhaUFLSUFOQjZBSnFJQU5CMEFGcUVPOEZJQU1vQWh3aEJBc2dCQ2dDQUNBQUtBTGdwd0pCdUFocUlBTkI2QUpxRUlNQ0VHb0xJQU5CK0FKcUVLQUZEQUVMQUFzQUN5QUVRZmp1RDBZRVFDQURRUmhxSUFBZ0FTQUNLQUlrRVBVY0lBTW9BaGdoQVF3Q0N5QUVRY0NFRWtZRVFDQURRUmhxSUFBZ0FTQUNLQUlrUVFBUTdnY2dBQ2dDNEtjQ1FiZ0lhaUFEUVNCcUlnUVFnd0loQVNBRFFkZ0JhaUFBSUFNb0FoZ2dBaWdDS0VFQUVLWUNJQUFvQXVDbkFrRUFFSndCSWdJZ0F5Z0MzQUVRYWlBQkJFQWdBaUFCRUdvTElBTW9BaHdpQVNBQ0VHb2dBQ2dDNEtjQ1FiZ0lhaUFFSUFFUWd3TWdBeWdDMkFFaEFRd0NDeUFFUWJqdkQwWUVRQUovSUFBb0FnUWdBaERoQWlJQ0VOUWNCRUFnQWhEVEFnd0JDd05BUVFBZ0FpZ0NEQ0lDUlEwQkdpQUNFTlFjUlEwQUN5QUNFTk1DQ3lFQ0lBTkJHR29nQUNnQzRLY0NJQUlRendaQkRHb2lBaENrQlNBRFFkZ0JhaUFDRUtNRklBTW9BdGdCSVFJRFFDQURLQUlZSWdRZ0FrWU5BeUFFRUxvQ0lnUW9BZ1FpQlNBQUtBTGdwd0pCdUFocUlBUVFnd0lpQkVjRVFDQUZJQVFRYWdzZ0EwRVlhaERwQkF3QUN3QUxJQVJCK084UFJnMEJJQVJCMklRU1JnUkFJQUFvQWdRaEJBSkFJQUpGRFFBZ0FpZ0NEQ0lHSUFRb0FnUWdCQ2dDQUNJRWEwRUNkVThOQUNBRUlBWkJBblJxS0FJQUlnUkZEUUFnQkVFQUlBUW9BZ1JCa0pJU1Joc2hCUXNnQlNFSUlBQW9BdUNuQWtFQUVKd0JJUWNnQVNFRklBSW9BaVFpQkFSQUlBQWdBU0FFRU9NRUlRVUxJQUFvQXVDbkFpQUlFTThHSWdaQmtMTUNFTklCSUFOQjJBRnFJQUFvQXVDbkFrR2tFV29pQkJDaUJTQURRYmdCYWlBRUVLRUZJQVpCREdvaENnTkFJQU1vQXRnQklnUWdBeWdDdUFGR0JFQUNRQ0FDS0FJb0lnUkZEUUFnQTBHNEFXb2dBQ0FISUFSQkFCQ21BaUFBS0FMZ3B3SWdBaENjQVNJRlFRRTZBQVFnQlNBREtBSzhBUkJxSUFOQitBSnFJQUFvQXVDbkFrR2tFV29pQkJDaUJTQURRZkFDYWlBRUVLRUZJQVpCbUFGcUlRa0RRQ0FES0FMNEFpSUVJQU1vQXZBQ1JnMEJJQU1nQkJDK0FTZ0NBQ0lFTmdMb0FpQURRUUEyQWhnZ0EwSFlBV29nQ1NBRFFlZ0NhaUFEUVJocUVKc0pBa0FnQXlnQzJBRUVRQ0FES0FMY0FTRUVEQUVMSUFZb0FxQUNJUXdnQTBFWWFpSU5JQVFRcEFRZ0FDZ0M0S2NDUVFBUW5BRWhDeUFORUE4YUlBTWdDellDMEFFZ0JpZ0NvQUlnREVZRVFDQURLQUxjQVNJRUlBczJBZ0FNQVFzZ0EwRVlhaUFKSUFOQjZBSnFJQU5CMEFGcUVPOEZJQU1vQWh3aEJBc2dCQ2dDQUNBQUtBTGdwd0pCdUFocUlBTkI2QUpxRUlNQ0VHb2dBMEg0QW1vUW9BVU1BQXNBQ3lBQUlBVWdBaWdDTUJEakJDRUVJQWNnQWlnQ0xDSUZCSDhnQUNBRUlBVVE0d1FGSUFRTEVHb2dCeUFCRUdvZ0EwRVlhaUFLRUtRRklBTkIyQUZxSUFvUW93VWdBeWdDMkFFaEJBTkFBa0FnQkNBREtBSVlJZ1ZHQkVBZ0EwRVlhaUFHUVpnQmFpSUVFS1FGSUFOQjJBRnFJQVFRb3dVZ0F5Z0MyQUVoQlF3QkN5QUZFTG9DSWdVb0FnUWlDaUFBS0FMZ3B3SkJ1QWhxSUFVUWd3SWlCVWNFUUNBS0lBVVFhZ3NnQTBFWWFoRHBCQXdCQ3dzRFFDQUZJQU1vQWhnaUJFY0VRQ0FFRUxvQ0lRUWdBQ2dDNEtjQ1FiZ0lhaUFFSUFRb0FnUVFnd01nQTBFWWFoRHBCQXdCQ3dzQ1FDQUNLQUlrSWdKRkRRQWdBaWdDQkVHNDhnOUhEUUFnQUNnQzRLY0NJUVFnQXlBQUtBSUVJQUlvQWlRUW93YzJBaGdnQkVHa0VXb2dBMEVZYWhEMkhBc2dBQ2dDNEtjQ0lBZ1FuQkFnQVNBSElBZ3BBeGhDQ0ZFYklRRU1CQVVnQXlBRUVMNEJLQUlBSWdRMkF2Z0NJQU5CR0dvaUNTQUVFS1FFSUFBb0F1Q25Ba0VBRUp3QklRUWdDUkFQR2lBRElBUTJBdkFDSUFRZ0FDZ0M0S2NDUWJnSWFpQURRZmdDYWlJTEVJTUNFR29nQ1NBS0lBc2dBMEh3QW1vUTd3VWdBQ2dDNEtjQ1FiZ0lhaUFMSUFRUWd3TWdBMEhZQVdvUW9BVU1BUXNBQ3dBTElBUkJpSVVTUmdSQUlBQW9BZ1FoQkFKQUlBSkZEUUFnQWlnQ0RDSUdJQVFvQWdRZ0JDZ0NBQ0lFYTBFQ2RVOE5BQ0FFSUFaQkFuUnFLQUlBSWdSRkRRQWdCRUVBSUFRb0FnUkJ1SjhTUmhzaEJRc2dCU0VJSUFBb0F1Q25Ba0VBRUp3QklRVWdBQ2dDNEtjQ0lBZ1F6d1lpQmtHWXN3SVEwZ0VnQTBIWUFXb2dBQ2dDNEtjQ1FhUVJhaUlFRUtJRklBTkJ1QUZxSUFRUW9RVWdCa0VNYWlFS0EwQWdBeWdDMkFFaUJDQURLQUs0QVVZRVFDQURRUmhxSUFBZ0JTQUNLQUlrUVFBUXBnSWdBQ2dDNEtjQ0lBSVFuQUVpQ1VFQk9nQUVJQWtnQXlnQ0hCQnFJQU5CdUFGcUlBQW9BdUNuQWtHa0VXb2lCQkNpQlNBRFFmZ0NhaUFFRUtFRklBWkJtQUZxSVFjRFFDQURLQUs0QVNJRUlBTW9BdmdDUmdSQUlBVWdBQ0FKSUFJb0FpZ1E0d1FRYWlBRklBRVFhaUFEUVJocUlBb1FwQVVnQTBIWUFXb2dDaENqQlNBREtBTFlBU0VDQTBBQ1FDQUNJQU1vQWhnaUJFWUVRQ0FEUVJocUlBY1FwQVVnQTBIWUFXb2dCeENqQlNBREtBTFlBU0VFREFFTElBUVF1Z0lpQkNnQ0JDSUdJQUFvQXVDbkFrRzRDR29nQkJDREFpSUVSd1JBSUFZZ0JCQnFDeUFEUVJocUVPa0VEQUVMQ3dOQUlBUWdBeWdDR0NJQ1J3UkFJQUlRdWdJaEFpQUFLQUxncHdKQnVBaHFJQUlnQWlnQ0JCQ0RBeUFEUVJocUVPa0VEQUVMQ3lBQUtBTGdwd0lnQ0JDY0VDQUJJQVVnQ0NrREdFSUlVUnNoQVF3R0JTQURJQVFRdmdFb0FnQWlCRFlDMEFFZ0EwRUFOZ0lZSUFOQjJBRnFJQWNnQTBIUUFXb2dBMEVZYWhDYkNRSkFJQU1vQXRnQkJFQWdBeWdDM0FFaEJBd0JDeUFHS0FLZ0FpRU1JQU5CR0dvaURTQUVFS1FFSUFBb0F1Q25Ba0VBRUp3QklRc2dEUkFQR2lBRElBczJBdkFDSUFZb0FxQUNJQXhHQkVBZ0F5Z0MzQUVpQkNBTE5nSUFEQUVMSUFOQkdHb2dCeUFEUWRBQmFpQURRZkFDYWhEdkJTQURLQUljSVFRTElBUW9BZ0FnQUNnQzRLY0NRYmdJYWlBRFFkQUJhaENEQWhCcUlBTkJ1QUZxRUtBRkRBRUxBQXNBQlNBRElBUVF2Z0VvQWdBaUJEWUMrQUlnQTBFWWFpSUhJQVFRcEFRZ0FDZ0M0S2NDUVFBUW5BRWhCQ0FIRUE4YUlBTWdCRFlDOEFJZ0JDQUFLQUxncHdKQnVBaHFJQU5CK0FKcUlna1Fnd0lRYWlBSElBb2dDU0FEUWZBQ2FoRHZCU0FBS0FMZ3B3SkJ1QWhxSUFrZ0JCQ0RBeUFEUWRnQmFoQ2dCUXdCQ3dBTEFBc2dCRUc0OEE5R0JFQWdBQ2dDQkNFRUFrQWdBa1VOQUNBQ0tBSU1JZ2NnQkNnQ0JDQUVLQUlBSWdSclFRSjFUdzBBSUFRZ0IwRUNkR29vQWdBaUJFVU5BQ0FFUVFBZ0JDZ0NCRUc0a3hKR0d5RUdDeUFHSVFvZ0EwSDRBbW9nQUNBQklBSW9BaVJCQUJDbUFrRUJJUWdnQUNnQzRLY0NJQUlRbkFFaUIwRUJPZ0FFSUFjZ0F5Z0MvQUlRYWlBRFFSaHFFTk1HSVFRZ0EwSFlBV29RMHdZaEJpQURJQUEyQXVnQ0lBTkI2QUpxSUFjZ0FpZ0NLQ0FFRVBRY0lRa2dBQ2dDQkNBQ0tBSW9FT0VDS1FNWUlRNGdBaWdDTENJTEJFQWdBMEhvQW1vZ0J5QUxJQVlROUJ3aEJTQUFLQUlFSUFJb0Fpd1E0UUl0QUJoQkNIRkJBM1loQ0FzZ0RrSUlneUVPSUFOQjhBSnFJQUFvQXVDbkFrR2tFV29pQWhDaUJTQURRZEFCYWlBQ0VLRUZBMEFnQXlnQzhBSWlBaUFES0FMUUFVWUVRQUpBSUFvcEF4aENDRkVOQUNBQUtBTGdwd0pCQUJDY0FTSUJJQWtRYWlBRlJRMEFJQUVnQlJCcUN5QUdFTTRESUFRUXpnTU1CQVVnQXlBQ0VMNEJLQUlBSWdjMkFzd0JBa0FnQkNBRFFjd0JhaERuQzBVRVFDQUdJQU5CekFGcUVPY0xSUTBCQ3lBRFFiZ0JhaUlMSUFjUXBBUWdBQ2dDNEtjQ1FRQVFuQUVoQWlBTEVBOGFBa0FnRGxBTkFDQUVJQU5CekFGcUVPY0xCRUFnQTBFQU5nTEFBU0FESUFjMkFyd0JJQU1nQkRZQ3VBRWdBeUFFS0FLSUFVRUJhellDeEFFZ0FpQURRYmdCYWhEbUN5Z0NBQkJxREFFTElBSWdBQ2dDNEtjQ1FiZ0lhaUFEUWN3QmFoQ0RBaEJxQ3dKQUlBaEZEUUFnQmlBRFFjd0JhaERuQ3dSQUlBTkJBRFlDd0FFZ0F5QUhOZ0s4QVNBRElBWTJBcmdCSUFNZ0JpZ0NpQUZCQVdzMkFzUUJJQUlnQTBHNEFXb1E1Z3NvQWdBUWFnd0JDeUFDSUFBb0F1Q25Ba0c0Q0dvZ0EwSE1BV29RZ3dJUWFnc2dBQ2dDNEtjQ1FiZ0lhaUFEUWN3QmFpQUNFSU1EQ3lBRFFmQUNhaENnQlF3QkN3QUxBQXNnQkVId2hCSkdCRUFnQTBFWWFpQUFJQUVnQWlnQ0pFRUFFTzRISUFBb0F1Q25Ba0c0Q0dvZ0EwRWdhaUlGRUlNQ0lRSWdBQ2dDNEtjQ1FRQVFuQUVpQkNBREtBSVlJZ0VRYWlBQ0JFQWdCQ0FDRUdvTElBTW9BaHdpQWlBRUVHb2dBQ2dDNEtjQ1FiZ0lhaUFGSUFJUWd3TU1BZ3NnQkVINDhBOUdCRUFnQUNnQ0JDQUNFT0VDSVFVZ0FDZ0M0S2NDUVFBUW5BRWhCQ0FBS0FMZ3B3SWdCUkRQQmlJSFFhSzBBaERTQVNBRFFkZ0JhaUFBS0FMZ3B3SkJwQkZxSWdZUW9nVWdBMEc0QVdvZ0JoQ2hCU0FIUVF4cUlRWURRQ0FES0FMWUFTSUlJQU1vQXJnQlJnUkFJQVFnQUNBRUlBSW9BaVFRNHdRUWFpQUVJQUVRYWlBRFFSaHFJQVlRcEFVZ0EwSFlBV29nQmhDakJTQURLQUxZQVNFQ0EwQUNRQ0FDSUFNb0FoZ2lCa1lFUUNBRFFSaHFJQWRCbUFGcUlnSVFwQVVnQTBIWUFXb2dBaENqQlNBREtBTFlBU0VHREFFTElBWVF1Z0lpQmlnQ0JDSUlJQUFvQXVDbkFrRzRDR29nQmhDREFpSUdSd1JBSUFnZ0JoQnFDeUFEUVJocUVPa0VEQUVMQ3dOQUlBWWdBeWdDR0NJQ1J3UkFJQUlRdWdJaEFpQUFLQUxncHdKQnVBaHFJQUlnQWlnQ0JCQ0RBeUFEUVJocUVPa0VEQUVMQ3lBQUtBTGdwd0lnQlJDY0VDQUJJQVFnQlNrREdFSUlVUnNoQVF3RUJTQURJQWdRdmdFb0FnQWlDRFlDOEFJZ0EwRVlhaUlKSUFnUXBBUWdBeUFBS0FMZ3B3SWdDQ2dDQ0JDY0FTSUlOZ0xRQVNBSUlBQW9BdUNuQWtHNENHb2dBMEh3QW1vaUNoQ0RBaEJxSUFOQitBSnFJQVlnQ2lBRFFkQUJhaER2QlNBQUtBTGdwd0pCdUFocUlBb2dDQkNEQXlBSkVBOGFJQU5CMkFGcUVLQUZEQUVMQUFzQUN5QUVRYmp4RDBZRVFBSkFJQUlvQWlRaUFnUkFJQU5CR0dvZ0FDQUJJQUpCQUJDbUFpQUFLQUxncHdJb0FyUUlJQU1vQWh3UWFpQURLQUlZSVFFTUFRc2dBUTBBSUFOQkdHcEJwWW9GUWFBSVFRZ2dBMEhZQVdvUUhTSUJFQmNpQWtFWWFrSHJxd2dRRGhvZ0FoQVlJQUVRSGtFQUlRRUxJQUFvQXVDbkFpSUNLQUw0QnlJRUlBSW9BdndIUWZ3QWJHb2hBZ05BSUFJZ0JFWU5BeUFFS0FKNElnVUVRQ0FBS0FMZ3B3SWhCaUFESUFRb0FnQTJBaGdnQlNBR1FiZ0lhaUFEUVJocUVJTUNFR29MSUFSQi9BQnFJUVFNQUFzQUN5QUVRZmp4RDBZRVFDQUFLQUlFSVFRQ1FDQUNSUTBBSUFJb0Fnd2lCaUFFS0FJRUlBUW9BZ0FpQkd0QkFuVlBEUUFnQkNBR1FRSjBhaWdDQUNJRVJRMEFJQVJCQUNBRUtBSUVRY2lhRWtZYklRVUxJQVVoQmlBRFFiZ0JhaUFBSUFFZ0FpZ0NKRUVBRUtZQ0lBQW9BdUNuQWlBQ0VKd0JJZ2xCQVRvQUJDQUpJQU1vQXJ3QkVHb2dCaWtER0VJSVVnUkFJQUFvQXVDbkFrRUFFSndCSVFjTElBQW9BdUNuQWlBR0VNOEdJZ3BCMUtRREVOSUJJQUlvQWpnaUJTQUNLQUk4UVFKMGFpRUxJQXBCbUFGcUlRSURRQUpBSUFVZ0MwWUVRQ0FEUVJocUlBSVFwQVVnQTBIWUFXb2dBaENqQlNBREtBTFlBU0VFREFFTElBQW9BZ1FnQlNnQ0FDSUVFT0VDSVFnZ0FDZ0M0S2NDUWJnSWFoQ2VFQ0FBSUFrZ0JDZ0NRQkRqQkNFRUlBY0VRQ0FISUFRUWFnc0NRQ0FJTFFBWVFRaHhSUTBBSUFOQitBSnFJQUFvQXVDbkFrR2tFV29pQkJDaUJTQURRZkFDYWlBRUVLRUZBMEFnQXlnQytBSWlCQ0FES0FMd0FrWU5BU0FESUFRUXZnRW9BZ0FpQ0RZQzZBSUNRQUpBSUFoRklBZ29BZ1JCcUp3U1IzSU5BQ0FJS0FKUUlnUVEwd0lpREVFQUlBWWdERVliRFFFRFFDQUVLQUlNSWdSRkRRRWdCQ0FHUncwQUN3d0JDeUFEUVFBMkFoZ2dBMEhZQVdvZ0FpQURRZWdDYWlBRFFSaHFFSnNKQWtBZ0F5Z0MyQUVFUUNBREtBTGNBU0VFREFFTElBb29BcUFDSVFRZ0EwRVlhaUlNSUFnUXBBUWdBQ2dDNEtjQ1FRQVFuQUVoQ0NBTUVBOGFJQU1nQ0RZQzBBRWdDaWdDb0FJZ0JFWUVRQ0FES0FMY0FTSUVJQWcyQWdBTUFRc2dBMEVZYWlBQ0lBTkI2QUpxSUFOQjBBRnFFTzhGSUFNb0Fod2hCQXNnQkNnQ0FDQUFLQUxncHdKQnVBaHFJQU5CNkFKcUVJTUNFR29MSUFOQitBSnFFS0FGREFBTEFBc2dBQ2dDNEtjQ1FiZ0lhaENkRUNBRlFRUnFJUVVNQVFzTEEwQWdCQ0FES0FJWUlnSkhCRUFnQWhDNkFpRUNJQUFvQXVDbkFrRzRDR29nQWlBQ0tBSUVFSU1ESUFOQkdHb1E2UVFNQVFzTElBY2dBU0FIR3lFQkRBSUxJQVJCdVBJUFJnUkFJQU1nQUNnQ0JDQUNLQUlrRUtNSElnVTJBdGdCQWtBZ0FpZ0NKQ2dDTENJRVJRUkFJQUVoQkF3QkN5QURRUmhxSUFBZ0FTQUVRUUFRcGdJZ0F5Z0NIQ0VFSUFNb0FoZ2hBU0FGS0FJTUtBSUVRZGlzRWtjTkFDQUFLQUlFSUFJb0FpUW9BaXdRc2dvb0FnZ2lCU2dDQkVHQWdSSkhJQVZGY2cwQUlBVVE4eHdROGh4RkRRQWdBQ2dDNEtjQ1FmZ1NhaUVHSXdCQkVHc2lCU1FBSUFWQkNHb2dCaUFEUWRnQmFoRFRIQ0FGS0FJSUdpQUZRUkJxSkFBTElBQW9BdUNuQWtHNENHb2dBMEhZQVdvZ0JCQ0RBeUFDS0FJa0lnSW9BZ1JCMlBnUlJ3MENJQUFvQXVDbkFpRUZJQUFvQWdRaEFFRUFJUVFDUUNBQ1JRMEFJQUlvQWd3aUFpQUFLQUlFSUFBb0FnQWlBR3RCQW5WUERRQWdBQ0FDUVFKMGFpZ0NBQ0lBUlEwQUlBQkJBQ0FBS0FJRVFhaWNFa1liSVFRTElBTWdCRFlDR0NBRlFhUVJhaUFEUVJocUVKRWREQUlMSUFSQndQWVBSZzBCQ3lNQVFiQUJheUlBSkFBZ0FFRVFha0dsaWdWQmpBbEJDQ0FES0FJSUtBSUlFQmNpQVVFWWFpSUNRYWVNREJBT0dpQUNJQUFnQXlnQ0RDZ0NBQ2dDQkNnQ0JCQVVJZ0lRRWhvZ0FoQVBHaUFCRUJnZ0FFR3dBV29rQUVFQUlRRUxJQU5CZ0FOcUpBQWdBUXUxQVFFRWZ5QUJJQUFvQXNnQlN3UkFJQUFvQXNBQklRTWdBQ0FCRU8wZEEwQWdBQ2dDeEFFZ0FrMEVRQ0FBSUFNUU5nVWdBa0VFZENJRUlBQW9Bc0FCYWlJRklBTWdCR29pQkNrQ0FEY0NBQ0FGSUFRcEFnZzNBZ2dnQWtFQmFpRUNEQUVMQ3dzZ0FDZ0N4QUVpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHQkVBZ0FDQUJOZ0xFQVFVZ0FDZ0N3QUVnQWtFRWRHb2lBMElBTndJSUlBTkJBRG9BQkNBRFFRQTZBQUFnQWtFQmFpRUNEQUVMQ3dzWkFDQUFJQUVnQWlBRFFaanpEMEdzOHc5QitQSVBFTUVNQ3pnQUlBQVFIQ0FBUWFnQmFpSUFJQUFReXdRZ0FTZ0NBQ0FDS0FJQUlBTW9BZ0FRL2hzaUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkN3d0FJQUFnQVJDbENVRUFSd3YyQlFFRWZ5TUFRZkFCYXlJRUpBQWdCQ0FCTmdMc0FTQUNFSVFCSWdVb0FnUWhBUUpBQWtBZ0JVVWdBVUdBbVJKSGNrVUVRRUVCSVFZZ0JVSGNBR29nQkVIc0FXb1FxUUlOQWlBRUtBTHNBU0VDSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCSUFWQjNBQnFJQUZCREdvUWxnRWdBVUVRYWlRQUlBVW9Ba1FpQVNBRktBSklRUUowYWlFREEwQWdBU0FEUmcwREFrQWdBU2dDQUNJQ0tBSmNJZ2RGRFFBZ0FDQUVLQUxzQVNBQ0tBSW9JQWNvQWloQkVHb1E2QVFOQUNBRVFkZ0FhaEJKSWdaQkNHb2lBVUdRL2drUURob2dCRUhJQUdvaUJ5QUFRYWdkYWlBRkVLY0JJQUVnQnhBU0dpQUJRZnlYQ0JBT0dpQUVRVGhxSWdVZ0JFRVlhaUlESUFKQkNHb1FWaEJUSUFFZ0JSQVNHaUFGRUE4YUlBY1FEeG9nQXlBR1FReHFFRUlnQUNBRElBSW9BbHhCRUdvUWhnRWdBeEFQR2lBR0VGRU1Bd3NnQVVFRWFpRUJEQUFMQUFzZ0JDZ0M3QUVoQWdKQUlBVkZJQUZCa0tJU1IzSkZCRUJCQnlFQklBSkJCMGNFUUNBRktBSWNJZ0VvQWdRaUJrR29veEpHQkVBZ0FDQUVRZGdBYWtHTjJ3UVFGQ0lBSUFNUUp5QUFFQThhREFRTElBWkJrS01TUmdSL0lBRW9BZ3doQVNBRVFRRTZBQlFnQkNBQk5nSVFJQVJCRUdvUXZnRW9BZ0JCLy84RFN3MERJQVFvQXV3QkJTQUNDeUVCQ3lBQUlBRWdCU2dDR0NBREVPZ0VJUVlNQXd0QkFTRUdJQUpCQm10QkFrc05BaUFBUWF3ZGFpQUZFTWtjRFFJZ0JFSFlBR29RU1NJQ1FRaHFJZ1pCZ0pZSkVBNGFJQVJCR0dvaUFTQUFRYWdkYWlBRkVLY0JJQVlnQVJBU0dpQUdRYnlXQ1JBT0dpQUNJQVFvQXV3QkVMVUxRUWhxUWYrOUJCQU9HaUFCRUE4YUlBRWdBa0VNYWhCQ0lBQWdBU0FERUNjZ0FSQVBHaUFDRUZFTUFRc2dCRUU0YWlJQklBUkJFR29RdmdFb0FnQVFYeUFFUWNnQWFpSUNRZHY1Q0NBQkVEVWdCRUVZYWlJRklBSkJ2SklLRUMwZ0JFS0FnQVFROXdZZ0JFSFlBR29pQmlBRklBUVFUaUFBSUFZZ0F4QW5JQVlRRHhvZ0JCQVBHaUFGRUE4YUlBSVFEeG9nQVJBUEdndEJBQ0VHQ3lBRVFmQUJhaVFBSUFZTEl3RUJmeUFBS0FJQUlnRWdBQ2dDQkVjRVFDQUFJQUZCRkdvMkFnQWdBQkNzQ1FzTEtBQWdBRUVBTmdMRUFTQUFRUXdRNUFRZ0FFRUFOZ0xNQVNBQUlBQW9BdEFCUVFGcU5nTFFBUXZCQVFFR2Z5TUFRUkJySVFRZ0FDZ0N4QUVpQmtFQmF5RUhBa0FEUUNBRklBWkdEUUVnQUNnQ3dBRWdBVUVFZEdvaUF5MEFCQVJBSUFJZ0FpZ0NEQ0lJSUFNb0FneExCSDhnQkNBREtRSUlOd01JSUFRZ0F5a0NBRGNEQUNBRElBSXBBZ2czQWdnZ0F5QUNLUUlBTndJQUlBSWdCQ2tEQ0RjQ0NDQUNJQVFwQXdBM0FnQWdBaWdDREFVZ0NBdEJBV28yQWd3Z0FVRUJha0VBSUFFZ0IwY2JJUUVnQlVFQmFpRUZEQUVMQ3lBRElBSXBBZ0EzQWdBZ0F5QUNLUUlJTndJSUN3dTVCQUVIZnlNQVFkQUJheUlFSkFBZ0FVR0VHR29vQWdBZ0FTZ0NqQmdpQlVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FCSUFWQkFYUkJBbW9RZ0JFTElBUkJ5QUZxSUFFZ0FoQ3lFQ0FFSUFNMkFzUUJJQVFnQWpZQ3dBRWdBU2dDaEJnaUIwRUJheUVJSUFJb0FnQWhDU0FCS0FLQUdDRUdJQVFvQXN3QklRb2dCQ2dDeUFFaEEwRUFJUUlDUUFOQUlBSWdCMGNFUUNBR0lBTkJCWFJxSWdVdEFCUkZCRUFnQkVFSWFpSUhJQVJCd0FGcUVOWWVJQVVnQnhEVkhpQUhRUVJ5RUpVQ0lBUW9Bc3dCSVFjZ0JpQURRUVYwYWlJRElBSTJBaHdnQXlBSE5nSVlJQUVnQVNnQ2pCaEJBV28yQW93WUlBRWdBU2dDa0JoQkFXbzJBcEFZSUFBZ0JVRUVhallDQkNBQVFRQTJBZ0FNQXdzQ1FDQUZLQUlZSUFwSERRQWdDU0FGS0FJQVJ3MEFJQUJCQWpZQ0FDQUFJQVZCQkdvMkFnUU1Bd3NnQWlBRktBSWNTd1JBSUFSQnFBRnFJZ2dnQkVIQUFXb1ExaDRnQkVFSWFpQUlFTlFlSVFZZ0JDZ0N6QUVoQnlBR0lBSTJBaHdnQmlBSE5nSVlJQWhCQkhJUWxRSWdCaUFGRU93UUlBWWdCaWdDSEVFQmFqWUNIQ0FCSUFOQkFXb2dBU2dDaEJod0lBWVEweDRnQVNBQktBS01HRUVCYWpZQ2pCZ2dBU0FCS0FLUUdFRUJhallDa0JnZ0FDQUZRUVJxTmdJRUlBQkJBRFlDQUNBR0VQNEhEQU1GSUFOQkFXcEJBQ0FESUFoSEd5RURJQUpCQVdvaEFnd0NDd0FMQ3lBRVFRaHFRWWExQTBIckEwRU9JQVJCcUFGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFSQjBBRnFKQUFMTmdFQmZ5QUJJQUVvQWhRaUFrRUJhallDRkNBQUlBRW9BZ2dnQWkwQUFFRUNkR29vQXBRRklnQWdBU0FBS0FJQUtBSU1FUVVBQ3pZQkFYOGdBU0FCS0FJVUlnSkJBV28yQWhRZ0FDQUJLQUlJSUFJdEFBQkJBblJxS0FMd0FpSUFJQUVnQUNnQ0FDZ0NEQkVGQUFzU0FDQUFJQUVRNHdZaUFFRUJPZ0JZSUFBTG53RUJCSDhnQVNBQUtBSmNSZ1IvQWtBZ0FpZ0NBQ0FBS0FJQVJ3MEFJQUlvQWdRZ0FDZ0NCRWNOQUNBQ0tBSk1JZ0VnQUNnQ1RFY05BQ0FBS0FKSUlRTWdBaWdDU0NFRVFRQWhBZ05BQWtBZ0FTQUNJZ0JHQkVBZ0FTRUFEQUVMSUFRZ0FFRURkQ0lDYWlJRktBSUFJQUlnQTJvaUJpZ0NBRWNOQUNBQVFRRnFJUUlnQlNnQ0JDQUdLQUlFUmcwQkN3c2dBQ0FCVHlFREN5QURCVUVBQ3dzUUFDQUFFSTRmSUFBZ0FSRG1CaUFBQ3pjQkFYOGpBRUVRYXlJREpBQWdBaWdDQUJEOEFpRUNJQUVvQXZRQklRRWdBQ0FDTmdJRUlBQWdBaUFCY0RZQ0FDQURRUkJxSkFBTHZ3RUJCSDhnQVNBQUtBTDRBVXNFUUNBQUtBTHdBU0VESUFBZ0FSQ3VEQU5BSUFBb0F2UUJJQUpOQkVBZ0FDQURFRFlGSUFKQkZHd2lCQ0FBS0FMd0FXb2lCU0FESUFScUlnUXBBZ0EzQWdBZ0JTQUVLQUlRTmdJUUlBVWdCQ2tDQ0RjQ0NDQUNRUUZxSVFJTUFRc0xDeUFBS0FMMEFTSUNJQUVnQVNBQ1NSc2hCUU5BSUFJZ0JVWUVRQ0FBSUFFMkF2UUJCU0FBS0FMd0FTQUNRUlJzYWlJRFFnQTNBZ3dnQTBFQU9nQUlJQU5CQURvQUFDQUNRUUZxSVFJTUFRc0xDMmtCQVg4Z0FDZ0NBQ0VFSXdCQkVHc2lBQ1FBQWtBZ0JDMEFEQ0FEUmdSQUlBRWdBaWdDQURZQ0FBd0JDeUFBSUFJMkFnd2dBQ0FFTmdJSUlBQW9BZ3doQWlBQUtBSUlJZ0VRbFFJZ0FpZ0NBQ0VDSUFFZ0F6b0FEQ0FCSUFJMkFnQUxJQUJCRUdva0FBdWhBUUVDZnlNQVFSQnJJZ0FrQUFKQUlBRWdBaWdDQkNJR1FmQ0ZFRWNFZnlBR1FmQ3FFa2NOQVNBQ0tBSWtJQU5IRFFFZ0FpZ0NJQ0FFUncwQklBSW9BaGdGSUFJTEVLc0NJZ0pGQkVBTUFRc2dBQ0FDTmdJTUlBRW9BZ0FoQWlBQUlBUTJBZ1FnQUNBQ0lBQkJER29nQUVFRWFpSUNFSjhDTmdJSUlBRW9BZ0FoQVNBQUlBTTJBZ1FnQVNBQVFRaHFJQUlRd0FraEJRc2dBRUVRYWlRQUlBVUxWd0VEZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUpCRldvaUF5QUNRU0JxSWdSR0lBRkJBRTV5Qkg4Z0F3VWdBMEV0T2dBQVFRQWdBV3NoQVNBRFFRRnFDeUFFSUFFUW1STWdBQ0FESUFJb0FnZ1E1Z2tnQkNRQUN4TUFJQUFnQVVFQUlBQW9BZ0FvQWpRUkJBQUx6UU1CQTM4akFFRWdheUlJSkFBZ0NDQUNOZ0lRSUFnZ0FUWUNHQ0FJUVFocUlnRWdBeEIrSUFFUThBSWhDU0FCRUdSQkFDRUJJQVJCQURZQ0FBSkFBMEFnQmlBSFJpQUJjZzBCQWtBZ0NFRVlhaUFJUVJCcUVKQUNEUUFDUUNBSklBWW9BZ0FROXdSQkpVWUVRQ0FHUVFScUlnRWdCMFlOQWdKL0FrQWdDU0FCS0FJQUVQY0VJZ0pCeFFCR0RRQkJBQ0VLSUFKQi93RnhRVEJHRFFBZ0JpRUJJQUlNQVFzZ0JrRUlhaUFIUmcwRElBSWhDaUFKSUFZb0FnZ1E5d1FMSVFJZ0NDQUFJQWdvQWhnZ0NDZ0NFQ0FESUFRZ0JTQUNJQW9nQUNnQ0FDZ0NKQkVNQURZQ0dDQUJRUWhxSVFZTUFRc2dDVUVCSUFZb0FnQVF5UUlFUUFOQUFrQWdCeUFHUVFScUlnWkdCRUFnQnlFR0RBRUxJQWxCQVNBR0tBSUFFTWtDRFFFTEN3TkFJQWhCR0dvZ0NFRVFhaERhQWtVTkFpQUpRUUVnQ0NnQ0dCRHRBUkRKQWtVTkFpQUlRUmhxRUtFQ0dnd0FDd0FMSUFrZ0NDZ0NHQkR0QVJDRUJ5QUpJQVlvQWdBUWhBZEdCRUFnQmtFRWFpRUdJQWhCR0dvUW9RSWFEQUVMSUFSQkJEWUNBQXNnQkNnQ0FDRUJEQUVMQ3lBRVFRUTJBZ0FMSUFoQkdHb2dDRUVRYWhDUUFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0NDZ0NHQ0VBSUFoQklHb2tBQ0FBQzlrREFRTi9Jd0JCSUdzaUNDUUFJQWdnQWpZQ0VDQUlJQUUyQWhnZ0NFRUlhaUlCSUFNUWZpQUJFTU1DSVFrZ0FSQmtRUUFoQWlBRVFRQTJBZ0FDUUFOQUlBWWdCMFlnQW5JTkFRSkFJQWhCR0dvZ0NFRVFhaENIQWcwQUFrQWdDU0FHTEFBQUVMd0ZRU1ZHQkVBZ0JrRUJhaUlDSUFkR0RRSUNmd0pBSUFrZ0Fpd0FBQkM4QlNJQlFjVUFSZzBBUVFBaENpQUJRZjhCY1VFd1JnMEFJQVloQWlBQkRBRUxJQVpCQW1vZ0IwWU5BeUFCSVFvZ0NTQUdMQUFDRUx3RkN5RUJJQWdnQUNBSUtBSVlJQWdvQWhBZ0F5QUVJQVVnQVNBS0lBQW9BZ0FvQWlRUkRBQTJBaGdnQWtFQ2FpRUdEQUVMSUFrb0FnZ2lBVUVCSUFZc0FBQVF2UUlFUUFOQUFrQWdCeUFHUVFGcUlnWkdCRUFnQnlFR0RBRUxJQUZCQVNBR0xBQUFFTDBDRFFFTEN3TkFJQWhCR0dvZ0NFRVFhaERLQWtVTkFpQUlLQUlZRU80QklRRWdDU2dDQ0VFQklBRVF2UUpGRFFJZ0NFRVlhaENiQWhvTUFBc0FDeUFKSUFnb0FoZ1E3Z0VRaUFjZ0NTQUdMQUFBRUlnSFJnUkFJQVpCQVdvaEJpQUlRUmhxRUpzQ0dnd0JDeUFFUVFRMkFnQUxJQVFvQWdBaEFnd0JDd3NnQkVFRU5nSUFDeUFJUVJocUlBaEJFR29RaHdJRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFnb0FoZ2hBQ0FJUVNCcUpBQWdBQXNXQUNBQUlBRWdBaUFESUFBb0FnQW9BakFSQndBYUN3c0FJQUJCZ0FGeFFRZDJDOUFDQVFSL0l3QkJJR3NpQXlRQUFrQUNRQU5BSUFOQkNHb2dBVUVDZEdvQ2YwRUJJQUYwUWYvLy8vOEhjU0lFUVFGeVJRUkFJQUZCQW5Rb0FnQU1BUXNnQVNBQVFkejREQ0FFR3hDN0ZBc2lCRFlDQUNBRVFYOUdEUUVnQVVFQmFpSUJRUVpIRFFBTFFRQVF1aFJGQkVCQjZONFBJUUlnQTBFSWFrSG8zZzlCR0JDa0NFVU5Ba0dBM3c4aEFpQURRUWhxUVlEZkQwRVlFS1FJUlEwQ1FRQWhBVUhvdWlBdEFBQkZCRUFEUUNBQlFRSjBRYmk2SUdvZ0FVSGMrQXdRdXhRMkFnQWdBVUVCYWlJQlFRWkhEUUFMUWVpNklFRUJPZ0FBUWRDNklFRzR1aUFvQWdBMkFnQUxRYmk2SUNFQ0lBTkJDR3BCdUxvZ1FSZ1FwQWhGRFFKQjBMb2dJUUlnQTBFSWFrSFF1aUJCR0JDa0NFVU5Ba0VZRU9BQklnSkZEUUVMSUFJZ0F5a0RDRGNDQUNBQ0lBTXBBeGczQWhBZ0FpQURLUU1RTndJSURBRUxRUUFoQWdzZ0EwRWdhaVFBSUFJTEN3QWdBRUhJdXlBUTNnTUxOd0FnQUVIWWp3NDJBZ0FnQUVFQUVNd1VJQUJCSEdvUVpDQUFLQUlnRUI4Z0FDZ0NKQkFmSUFBb0FqQVFIeUFBS0FJOEVCOGdBQXVvQVFBQ1FDQUJRWUFJVGdSQUlBQkVBQUFBQUFBQTRIK2lJUUFnQVVIL0Qwa0VRQ0FCUWY4SGF5RUJEQUlMSUFCRUFBQUFBQUFBNEgraUlRQkIvUmNnQVNBQlFmMFhUaHRCL2c5cklRRU1BUXNnQVVHQmVFb05BQ0FBUkFBQUFBQUFBR0FEb2lFQUlBRkJ1SEJMQkVBZ0FVSEpCMm9oQVF3QkN5QUFSQUFBQUFBQUFHQURvaUVBUWZCb0lBRWdBVUh3YUV3YlFaSVBhaUVCQ3lBQUlBRkIvd2RxclVJMGhyK2lDMElCQVg4Z0FTQUNiQ0VFSUFRQ2Z5QURLQUpNUVFCSUJFQWdBQ0FFSUFNUXRBME1BUXNnQUNBRUlBTVF0QTBMSWdCR0JFQWdBa0VBSUFFYkR3c2dBQ0FCYmdzTEFDQUFJQUZCSUJEMUJnc2FBQ0FBSUFFZ0FrR3A0d1ZCK0NKQi85a0JRZGZjQWhDRUV3dkNBUUVDZnlNQVFjQUJheUlFSkFBZ0JDQUJLQUlBSWdOQmRpQURJQUVvQWdRUUlCQVFJQVJCMDlrS0VBNGFJQVFnQVVFRWFoQ3pCeUlEUWE3bkNSQU9HaUFESUFGQkRHb1FqUVFpQTBHR2tRb1FEaG9nQXlBQlFRaHFFSTBFSWdOQnRzUUpFQTRhSUFOQjR2OEpRZkxaQ2tHbHlRb2dBUzBBRVJzZ0FTMEFFaHNRRGhvZ0EwRzg4d0ZCenZNQklBRXRBQkFiRUE0YUlBTkJzdjRKRUE0YUlBTWdBaEFoR2lBRFFmZndEQkFPR2lBQUlBTVFrQmNnQkJBUklBUkJ3QUZxSkFBTENRQWdBQ0FCTmdJVUM0a0RBUU4vSXdCQklHc2lBaVFBSUFCQjhQd1BOZ0lBSUFCQkJHb2dBQkNBQXhvakFFRVFheUlCSkFCQmtPZ1BRWkRvRHlnQ0FDSURRUUZxTmdJQUlBRkJDR29nQXhDQUF4b2dBU2dDQ0NFRElBRkJFR29rQUNBRElRRWdBRUYvTmdJTUlBQWdBVFlDQ0NBQVFSQnFFTU1MR2lBQVFRQTJBdHdCSUFCQ2dJQ0FnSUFFTndMVUFTQUFRb0NBQkRjQ3pBRWdBRUlBTndMRUFTQUFRaUEzQXJ3QklBQkNBRGNDdEFFZ0FFS0FnSUNBZ0lEQUFEY0NyQUVnQUVJQU53S2tBU0FBUW9DQWdJQ0FCRGNDbkFFZ0FFS0FnQVEzQXBRQklBQkNBRGNDakFFZ0FDQUFLQUlNUVFGcUlnRTJBZ3dnQWlBQk5nSVlJQUpCQURZQ0VDQUNRZ0EzQXdnZ0FrSUFOd01BSUFCQmpBRnFJZ0VnQVJDakRpQUFLQUlJSUFJb0FoZ2dBaERhR1NJREVDZ2dBU0FCS0FJWVFRRnFOZ0lZSUFBZ0F6WUM0QUVnQUVIa0FXb1Ewd3NhSUFCQmlBSnFJQUFvQWdnUTd3OGFJQUJCeUFKcUVCMGFJQUJCQURZQzZBSWdBRUlBTndMZ0FpQUFRZ0EzQXRnQ0lBQkJBVHNCN0FJZ0FrRWdhaVFBSUFBTE9BRUJmeU1BUVNCcklnSWtBQ0FDSUFFMkFoQWdBa0VZYWlBQUlBRWdBa0VRYWhDaUp5QUNLQUlZSVFBZ0FrRWdhaVFBSUFCQkRHb0xNQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDSUFRU3hxRU00SElBQkJHR29RRHhvZ0FVRVFhaVFBQzMwQkFuOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSWdBVFlDQ0NBQ0tBSU1JUUVnQWlnQ0NDRURJd0JCRUdzaUFDUUFJQUFnQVRZQ0JDQUFJQU0yQWdBQ2Z5QUFRUWhxSUFBb0FnQWdBQ2dDQkJERUdFRUJjUVJBSUFBb0FnQU1BUXNnQUNnQ0JBc2hBU0FBUVJCcUpBQWdBU0VBSUFKQkVHb2tBQ0FBQzMwQkFuOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSWdBVFlDQ0NBQ0tBSU1JUUVnQWlnQ0NDRURJd0JCRUdzaUFDUUFJQUFnQVRZQ0JDQUFJQU0yQWdBQ2Z5QUFRUWhxSUFBb0FnUWdBQ2dDQUJERUdFRUJjUVJBSUFBb0FnQU1BUXNnQUNnQ0JBc2hBU0FBUVJCcUpBQWdBU0VBSUFKQkVHb2tBQ0FBQ3lvQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUlBRW9BZ3dRK2dJUWd3RWhBQ0FCUVJCcUpBQWdBQXMyQVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0NDRUFJQUlvQWd3UStnSWdBRG9BQ3lBQ1FSQnFKQUFMUVFFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFBUTNSZ2hBeUFCS0FJQUlRRWdBa0VBT2dBRUlBSWdBVFlDQUNBQUlBSVF6eGdnQXhEY0dDQUNRUkJxSkFBTEpRRUJmeUFBS0FJQUlRSWdBQ0FCTmdJQUlBSUVRQ0FDQkVBZ0FoQXlHZ3NnQWhBZkN3c1NBQ0FBS0FJQUlBRkJBQkE0UVFFUXZnWUxEd0FnQUNBQUVOSUhJQUZxRU5FSEN5UUJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUFnQWtFTWFoQWtJQUpCRUdva0FBc1ZBQ0FBS0FJRVFRaHFJQUVvQWdBUXZBSWFJQUFMQ3dBZ0FDQUJRUVFRMmdrTEZBQWdBRUVBTmdLRUFpQUFJQUFvQW9BQ0VEWUxFQUFnQUNnQ0NDQUJJQUlnQXhEK0NBczlBUUovSXdCQkVHc2lBeVFBUVFFaEJDQUFJQUVnQTBFSWFpQUNFRnNRaHc5RkJFQWdBQ0FCSUFNZ0FoQmJFSThMSVFRTElBTkJFR29rQUNBRUMxWUJBbjhnQUNnQ0FDSUJLQUlvSWdJRWZ5QUNCU0FCRVBZSUlnSkJnTklTTmdJQUlBSkJ5TXNTTmdJRUlBRWdBaEFvSUFFZ0FTZ0NHRUVCYWpZQ0dDQUNJUUVnQUNnQ0FDQUJOZ0lvSUFBb0FnQW9BaWdMQzdFQkFRUi9Ba0FnQUNnQ0JDSUNJQUFvQWdoSkJFQWdBU2dDQUNFRElBRkJBRFlDQUNBQ0lBTTJBZ0FnQUNBQ1FRUnFOZ0lFREFFTEl3QkJJR3NpQXlRQUlBTkJDR29nQUNBQUtBSUVJQUFvQWdCclFRSjFRUUZxRUlzRUlBQW9BZ1FnQUNnQ0FHdEJBblVnQUVFSWFoQ25BaUlDS0FJSUlRUWdBU2dDQUNFRklBRkJBRFlDQUNBRUlBVTJBZ0FnQWlBRVFRUnFOZ0lJSUFBZ0FoRDdDQ0FDRUo0TElBTkJJR29rQUNBQUtBSUVHZ3NMSEFBZ0FDQUJLQUlBS0FJQU5nSUFJQUJCQkdvZ0FTZ0NCQkJXR2d1bEFRRURmeUFBS0FLRUFpSUNJQUFvQW9nQ1R3UkFJQUFvQW9nQ0lnSkJBWFJCQWlBQ0d5SUNJQUFvQW9nQ1N3UkFJQUFvQW9BQ0lRUWdBQ0FDRU8wTFFRQWhBZ05BSUFBb0FvUUNJQUpOQkVBZ0FDQUVFRFlGSUFKQkJYUWlBeUFBS0FLQUFtb2dBeUFFYWlJREVJd2NJQU1ROHdNZ0FrRUJhaUVDREFFTEN3c2dBQ2dDaEFJaEFnc2dBQ0FDUVFGcU5nS0VBaUFBS0FLQUFpQUNRUVYwYWlBQkVJd2NDekVBSUFJb0FnQWhBZ05BQWtBZ0FDQUJSd1IvSUFBb0FnQWdBa2NOQVNBQUJTQUJDdzhMSUFCQkJHb2hBQXdBQ3dBTEtRQWdBRUYvTmdJQUlBQkJCR29RbUFRYUlBQkJBRG9BR0NBQVFRQTJBaEFnQUVJQU53SUlJQUFMdGdJQkFYOGpBRUhBQVdzaUNDUUFJQWdnQkRZQ3VBRWdDQ0FCTmdLOEFTQUFJQWdvQXJ3QklBZ29BcmdCRVAwUElnQkJnSjhTTmdJRUlBQkJzSjhTTmdJQUlBQWdCam9BS0NBQVFnZzNBeUFnQUNBRk5nSWNJQUFnQXpZQ0dDQUFJQUkyQWhRZ0FDQUhOZ0lRSUFCQm9KOFNOZ0lBSUFKRkJFQWdDRUVJYWtHR3FBVkJLRUVKSUFoQnFBRnFFQjBpQVJBWElnSkJHR3BCdTlNSUVBNGFJQUlRR0NBQkVCNExJQU5CQVVZZ0JVRUFSMGNFUUNBSVFRaHFRWWFvQlVFcFFRa2dDRUdvQVdvUUhTSUJFQmNpQWtFWWFrSGgyZ2dRRGhvZ0FoQVlJQUVRSGdzQ1FDQUZSUTBBSUFBb0FoUWdCU0FGS0FJQUtBSUlFUUFBUmcwQUlBaEJDR3BCaHFnRlFTdEJDU0FJUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRZFRwQ0JBT0dpQUNFQmdnQVJBZUN5QUlRY0FCYWlRQUlBQUxCd0FnQUJEb0J3c0xBQ0FBUVFBMkFoZ2dBQXRNQVFGL0lBQW9BaVFpQWlBQUtBSW9Ud1JBSUFBZ0FDZ0NLQ0lDUVFGMFFRSWdBaHNRdXdrZ0FDZ0NKQ0VDQ3lBQUlBSkJBV28yQWlRZ0FDZ0NJQ0FDUVFKMGFpQUJLQUlBTmdJQUN5TUJBWDhnQUNnQ0FDSUJJQUFvQWdSSEJFQWdBQ0FCUVJCcU5nSUFJQUFRa3hBTEN5VUFJQUFnQVNnQ3dBRWdBU2dDeEFGQkJIUnFJZ0UyQWdRZ0FDQUJOZ0lBSUFBUWt4QUxLd0VCZnlBQktBTEVBU0VDSUFBZ0FTZ0N3QUVpQVRZQ0FDQUFJQUVnQWtFRWRHbzJBZ1FnQUJDVEVBc2pBQ0FBSUFFb0FuZ2dBU2dDZkVFVWJHb2lBVFlDQkNBQUlBRTJBZ0FnQUJDc0NRc3BBUUYvSUFFb0Fud2hBaUFBSUFFb0FuZ2lBVFlDQUNBQUlBRWdBa0VVYkdvMkFnUWdBQkNzQ1F0NkFRRi9JQUJCcEJocUVQMGNJQUJCb0JacUlnRVEvQndnQVJET0NTQUFRZXdUYWlJQkVLSVFJQUVRK2h3Z0FVRUFOZ0tzQWlBQklBRW9BckFDUVFGcU5nS3dBaUFCRUtNUUlBQkIrQkpxRUs0TElBQkJwQkZxRU4wR0lBQkJ1QWhxRUtjUUlBQkJoQWhxRVBzY0lBQkJHR29RcVJBZ0FCQVBHZ3ZsQVFFS2Z5TUFRZEFBYXlJREpBQWdBMEVRYWlJR0lBQWdBUkNZSFNBRFFTQnFJZ2RCeGJjS0lBWVFOU0FEUVRCcUlnZ2dCMEc0NXdrUUxTQURRVUJySWdVZ0NDQURJQUlRK1FjaUNSQk9JQUVvQWdoQkVHb2hDaU1BUVJCcklnUWtBQ0FBS0FJQUlnc1FIQ0FGS0FJQUlRd2dCQ0FGS0FJRUlBVXRBQXNpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0lNSUFRZ0RDQUZJQUliTmdJSUlBUWdCQ2tEQ0RjREFDQUxRY2dDYWlBRUlBb1ExUUVnQkVFUWFpUUFJQVVRRHhvZ0NSQVBHaUFJRUE4YUlBY1FEeG9nQmhBUEdpQUFJQUVvQWdnUW5Ra2dBMEhRQUdva0FBc1hBQ0FBSUFFUXFnUWlBRVVFUUVFQUR3c2dBQ2dDRkF2eUJBSUdmd0YrSXdCQjhBQnJJZ01rQUNBQUtBSUVJUWdDUUNBQUtBSUFLQUlBSWdRb0FnUkJ5T2tQUmtFQUlBUWJSUVJBSUFOQlFHc2lBU0FFUVNScUVGTWdBMEhRQUdvaUFrSGtpZ2tnQVJBMUlBTkI0QUJxSWdVZ0FrSHptZ2tRTFNBQUtBSUFLQUlBS1FJWUlRbEJBQ0VFSUFOQkFEWUNPQ0FESUFrM0F6QWdBeUFKTndNb0lBZ2dCU0FEUVNocUVDY2dCUkFQR2lBQ0VBOGFJQUVRRHhvTUFRc2dCQ2dDVUNFRkFrQWdBU0FDSUFFZ0Foc2lBa1lFUUNBQklBVkdEUUlnQTBFWWFpSUNJQVJCSkdvUVV5QURRVUJySWdSQjg1b0pJQUlRTlNBRFFkQUFhaUlGSUFSQmsrQUpFQzBnQTBFSWFpSUdJQUVRWHlBRFFlQUFhaUlCSUFVZ0JoQk9JQU5CS0dvaUJ5QUJRWU9HQVJBdElBZ2dCeUFBS0FJQUtBSUFRUkJxRUNjZ0J4QVBHaUFCRUE4YUlBWVFEeG9nQlJBUEdpQUVFQThhSUFJUUR4b01BUXNnQVNBRlN3UkFJQU5CR0dvaUFpQUVRU1JxRUZNZ0EwRkFheUlFUWZPYUNTQUNFRFVnQTBIUUFHb2lCU0FFUWZYRkNSQXRJQU5CQ0dvaUJpQUJFRjhnQTBIZ0FHb2lBU0FGSUFZUVRpQURRU2hxSWdjZ0FVR0RoZ0VRTFNBSUlBY2dBQ2dDQUNnQ0FFRVFhaEFuSUFjUUR4b2dBUkFQR2lBR0VBOGFJQVVRRHhvZ0JCQVBHaUFDRUE4YURBRUxJQUlnQlU4TkFTQURRUmhxSWdFZ0JFRWthaEJUSUFOQlFHc2lCRUh6bWdrZ0FSQTFJQU5CMEFCcUlnVWdCRUdteFFrUUxTQURRUWhxSWdZZ0FoQmZJQU5CNEFCcUlnSWdCU0FHRUU0Z0EwRW9haUlISUFKQmc0WUJFQzBnQ0NBSElBQW9BZ0FvQWdCQkVHb1FKeUFIRUE4YUlBSVFEeG9nQmhBUEdpQUZFQThhSUFRUUR4b2dBUkFQR2d0QkFDRUVDeUFEUWZBQWFpUUFJQVFMUXdFRGZ5QUFLQUlFSVFNQ1FDQUFLQUlBUVFGQkFCQ29CU0lGUlEwQUlBTWdCU2dDVENnQ0FCRFFBeUlEUlEwQUlBQW9BZ2dnQXlBQklBSVF3Z0loQkFzZ0JBdkNvQUVDSlg4Q2ZpTUFRWUFGYXlJS0pBQWdDa0tBZ0lDQWdBZzNBclFDSUFvZ0NrRXdhallDc0FJZ0FDZ0NCQ0VGSUFwQ2dJQ0FnSUFFTndMMEJDQUtJQXBCOEFKcUlnSTJBdkFFUVFFaEZDQUNRUUVRa0F3Z0NpQUtLQUwwQkNJRVFRRnFOZ0wwQkNBS0tBTHdCQ0FFUVFOMGFpSUVRUUEyQWdRZ0JDQUJOZ0lBSUFCQm9EWnFJUlVnQ2lBQ05nTG9BaUFLSUFJMkF1QUNBbjhDUUFKQUEwQWdDaWdDOUFRaUFrVU5BaUFLSUFKQkFXc2lBallDOUFRZ0NpZ0M4QVFnQWtFRGRHb2lBaWdDQkNFRElBb2dBaWdDQUNJQ05nTGNBaUFDRUpNSUlnSUVRQ0FLSUFJMkF0QUNJQU5CZ1FSUEJFQWdDa0hBQW1vaUJFR0FCQkJmSUFwQkVHb2lBMEdJcndvZ0JCQTFJQUFnQXlBQ1FSQnFFQ2NnQXhBUEdpQUVFQThhREFNTElBQWdBaEF6UlEwQ0lBb2dBa0VBSUFJb0FnUkJnSUFTUmhzaUFqWUN3QUlDUUNBQ1JRMEFJQUlvQWlSQmZuRkJCRWNOQUNBS1FSQnFJQlVnQWtFb2FpQUtRY0FDYWhDVUhnc2dDa0V3YWlBS1FkQUNhaENVQXdzZ0NpZ0MzQUloQWlBS0lBVTJBc1FDSUFvZ0NrSGNBbW8yQXNBQ0lBSUVRQ0FDS0FJRUlnUkJ3UDhSUmdSQUlBcEI0QUpxSUFJb0FpUWdBaWdDS0NBRFFRRnFFSk1lREFJTElBUkJnSUFTUmdSQUlBcEI0QUpxSUFJb0FpZ2dBaWdDTENBRFFRRnFFSk1lREFJTElBUkJ3UDRSUmdSQUlBcEI2QUpxSUFJb0FpZ2dBMEVCYWhDdEJRd0NDeUFFUWJqdUQwWUVRQ0FDS0FKSUlnUWdBaWdDVEVFQ2RHb2hBaUFEUVFGcUlRTURRQ0FDSUFSR0RRTWdCQ2dDQUNFR0lBb2dBellDRkNBS0lBWTJBaEFnQkVFRWFpRUVJQXBCOEFKcUlBcEJFR29RK1FVTUFBc0FDeUFFUWNDQUVrWUVRQ0FLUWVnQ2FpQUNLQUlrSUFOQkFXb1FyUVVNQWdzZ0JFR0FnUkpHQkVBZ0NrSG9BbW9nQWlnQ0tDQURRUUZxRUswRkRBSUxDeUFLUWNBQ2FoQ09EQTBBQzBFQUlSUU1BUXRCQUF3QkMwRUJDeUVFUVFBaEFpQUtRUUEyQXZRRUlBcEI4QUpxSUFvb0F2QUVFRFlDUUNBRVJTQVVSWElOQUNBQVFhUTRhaUVZSUFCQnJCMXFJUllnQUVHTU5Hb2hHU0FLS0FLd0FpSWFJQW9vQXJRQ1FRSjBhaUVVQWtBQ1FBSkFBMEFnRkNBYVJnMEJJQW9nRkVFRWF5SVVLQUlBSWdJMkFpd2dDaUFBTmdMd0FpQUtJQXBCTEdvMkF2UUNJQUpGQkVBZ0NrSHdBbW9Ra2g0TUJBc0NmeUFDS0FJRUlnUkJ3UDhSUmdSQVFRQWhCQ01BUWRBQWF5SURKQUFnQXlBQ05nSk1JQU1nQUNBQUlBQkJxQjFxSWdjZ0FpZ0NLQkNxQkVFQUVKWUNFT01DSWdZMkFrZ0NRQ0FHUlEwQUlBTWdCeUFDS0FJa0VLb0VJZ0kyQWtRZ0JpZ0NHRUVCUndSQUlBTWdBQ0FDUVFBUWxnSWlBallDUkFzQ1FDQUNSUTBBSUFNZ0FpZ0NGQ0lGRUlRQklnUTJBa0FnQXlBQU5nSXdJQU1nQTBITUFHbzJBamdnQXlBRFFVQnJOZ0kwSUFNQ2Z3SkFBa0FnQkVVTkFDQUVLQUlFSWdoQmtLSVNSZzBCSUFnUWtRTU5BU0FJUWZDcUVrY05BQ0FBS0FJQUlRZ2dBeUFFS0FJWU5nSWdJQU1nQkNnQ0lEWUNFQ0FJSUFOQklHb2dBMEVRYWhDZkFnd0NDeU1BUVRCcklnSWtBQ0FDSUFNb0FqQWlCa0dvSFdvZ0F5Z0NOQ2dDQUJDbkFTQUNRUkJxSWdSQjlKRUpJQUlRTlNBQ1FTQnFJZ1VnQkVIem1na1FMU0FHSUFVZ0F5Z0NPQ2dDQUVFUWFoQW5JQVVRRHhvZ0JCQVBHaUFDRUE4YUlBSkJNR29rQUF3Q0N5QUVLQUlZQ3lJSU5nSThRUUFoQkNBSVJRMEJJQVlvQWhRUWhBRWlDQkN1Q1VVRVFDQURRUkJxSWdJZ0J5QUlFS2NCSUFOQklHb2lCVUhHbWdrZ0FoQTFJQU5CTUdvaUJ5QUZRZk9hQ1JBdElBQWdCeUFHS0FJSVFSQnFFQ2NnQnhBUEdpQUZFQThhSUFJUUR4b01BZ3NnQlNnQ0JFRzRyUkpHQkVBZ0FDZ0NBQ0VFSUFNZ0JTZ0NIRFlDTUNBRElBVW9BaUEyQWlBZ0F5QUVJQU5CUEdvZ0EwRXdhaUFEUVNCcUVLMEpOZ0k4Q3lBRFFRQTJBaUFnQXlBQ0tBSVlJQVlvQWhnUTJBWWlCRFlDRUFKQUFrQWdCRUVCUncwQUlBTWdBeWdDVERZQ01DQUFRYVE0YWlBRFFUQnFFUFlGUlEwQUlBTkJBRFlDRUF3QkN5QURRVEJxSVFVZ0FFRUlhaUVISUFNb0Fqd2hDeU1BUWRBQWF5SUVKQUFDUUNBR0tBSWNJZ2hGQkVBZ0JVRUJPZ0FFSUFWQkFEWUNBQXdCQ3lBRVFRQTJBa3dnQWlnQ0ZCQ0VBU0FFUWN3QWFoQWlHZ0pBSUFnUVl5SW5RZ0JaQkVBZ0JEVUNUQ0lvVUNBbklDaFVjZzBCQ3lBRVFVQnJFRlVnQkNnQ1RDSUpCRUFnQkVFUWFpSUlJQWxCQVdzUVh5QUVRU0JxSWdsQmtaY0lJQWdRTlNBRVFUQnFJZ3dnQ1VIVXZRVVFMU0FFUVVCcklBd1FuZ0VnREJBUEdpQUpFQThhSUFnUUR4b0xJQVFnSnhEM0JpQUVRUkJxSWdoQnFNUUpJQVFRTlNBRVFTQnFJZ2tnQ0VIMHdBRVFMU0FFUVRCcUlnd2dDU0FFUVVCckVFNGdCeUFNSUFZb0FnaEJFR29RWFNBTUVBOGFJQWtRRHhvZ0NCQVBHaUFFRUE4YUlBVWdCeTBBQkFSL0lBVWdCeUFMRUpFQk5nSUFRUUVGUVFJTE9nQUVJQVJCUUdzUUR4b01BUXNnQWlnQ0hDSUhSUVJBSUFWQkFUb0FCQ0FGUVFBMkFnQU1BUXNnQnlBbnB5QUhLQUlBS0FJTUVRRUFJUWNnQlVFQk9nQUVJQVVnQnpZQ0FBc2dCRUhRQUdva0FDQUZFQ3RGRFFFZ0F5QURRVEJxRUJvb0FnQTJBaUFMSUFNZ0JpMEFLQVIvUVFFRklBSXRBQ2hCQUVjTE9nQVBJQUFvQWdBaEJDQURJQUlvQWhBMkFqQWdCQkFjSUFSQnFBRnFJZ1VoSENBRkVNc0VJUVFnQXlnQ1RDRUdJQU1vQWp3aEJ5QURLQUlRSVFnZ0F5Z0NSQ0VKSUFNb0FrZ2hEQ0FBUVl3MGFpZ0NBQ0VMSUFNb0FpQWhEU0FETFFBUElROGdBeWdDTUNFT0l3QkJJR3NpQWlRQUlBSWdCellDR0NBQ0lBWTJBaHdnQWlBSU5nSVVJQUlnQ3pZQ0VDQUNJQTAyQWd3Z0FpQVBPZ0FMSUFJZ0RqWUNCQ0FFSUFJb0Fod2dBaWdDR0NBQ0tBSVVJQUlvQWhBZ0FpZ0NEQ0FDTFFBTElBSW9BZ1FRbkFVaUJFSHdreEkyQWdRZ0JFR2dsQkkyQWdBZ0JDQU1OZ0l3SUFRZ0NUWUNMQ0FFUVpDVUVqWUNBQ0FDUVNCcUpBQWdIQ0FFRUNnZ0JTQUZLQUlZUVFGcU5nSVlJQVFnQXlnQ1NDa0RJQ0FES0FKRUtRTWdoRGNESUF3QkMwRUFJUVFMSUFOQjBBQnFKQUFnQkF3QkN5QUVRWUNBRWtZRVFFRUFJUVlqQUVIZ0FHc2lCU1FBSUFVZ0FqWUNYQUpBSUFCQnFCMXFJZ1FnQWlnQ0tCQ3FCQ0lEUlNBRUlBSW9BaXdRcWdRaUJFVnlEUUFnQXlnQ0ZCQ0VBU0VJSUFRb0FoUVFoQUVoQ1NBRklBTW9BaGdnQkNnQ0dCRFlCaUlITmdKWUlBVkJRR3NnQUNnQ0VDSU1JQUlvQWlRZ0NDQUpJQWNnQWtFUWFrRUFJQXdvQWdBb0FoQVJFQUFnQlNnQ1FFVU5BQ0FGS0FKRUVJRU1CRUFnQUNBRElBVW9Ba1FRbGdJaUEwVU5BUXNnQlNnQ1NCQ0JEQVJBSUFBZ0JDQUZLQUpJRUpZQ0lnUkZEUUVMSUFBZ0F4RGpBaUlEUlEwQUlBQWdCQkRqQWlJRVJRMEFJQVZCQURZQ1BDQUZJQUkyQWlnQ1FDQUFRYVE0YWlBRlFTaHFFUFlGQkVBZ0JVRUFOZ0pZREFFTEFrQWdBeWdDR0VFQlJ3MEFJQVFvQWhnTkFDQURLQUljSVFJZ0JVRUJOZ0pZSUFVZ0FqWUNQQXdCQ3lBSFFRRkhEUUJCQVNFQ0lBVW9Ba3dnQlNnQ1VFRUJjWElFUUNBRklBTW9BaHcyQWhnZ0JDZ0NIQ0VHSUFWQkFqWUNKQ0FGSUFZMkFod2dCU0FGUVJocU5nSWdJQVVnQlNrRElEY0RDQUpBSUFBZ0JVRW9haUFGUVFocUVMVUNJZ1lvQWdnZ0JTZ0NSQ0FES0FJSVFSQnFFTlVRUlEwQUlBQWdCa0VJYWlJSUtBSUFRUVJxSUFVb0FrZ2dCQ2dDQ0VFUWFoRFZFRVVOQUNBQUlBVW9BbEFpQ1VFQmRXcEJDR29oQnlBRktBSk1JUUlnQ1VFQmNRUkFJQWNvQWdBZ0Ftb29BZ0FoQWdzZ0JVRUFPZ0FVSUFVZ0NEWUNFQ0FGUVJocUlnZ2dCeUFGS0FKQUlBVkJFR29nQlNnQ1hFRVFhaUFDRVFnQVFRRWhBaUFJRUN0RkRRQWdCU0FGUVJocUVCb29BZ0EyQWp4QkFDRUNDeUFHRUtvQlFRQWhCaUFDUlEwQkRBSUxJQVZCQXpZQ1dBc2dCU0FETFFBb0JIOUJBUVVnQkMwQUtFRUFSd3M2QUNnZ0FDZ0NBQ0FGUWR3QWFpQUZRVUJySUFWQjJBQnFJQUJCakRScUlBVkJQR29nQlVFb2FoRFVFQ0lHSUFNcEF5QWdCQ2tESUlRM0F5QUxJQVZCNEFCcUpBQWdCZ3dCQ3lBRVFjRCtFVVlFUUVFQUlRUWpBRUVnYXlJREpBQWdBeUFDTmdJY0FrQWdBQ0FBSUFCQnFCMXFJQUlvQWlnUXFnUkJBQkNXQWhEakFpSUlSUTBBSUFNZ0FDQUNLQUlrRU5BRElnWTJBaGdnQmtVTkFDTUFRZUFBYXlJRkpBQUNRQ0FBUWF3ZGFpSUhLQUlJSUFJb0FpZ1Fwd1VRaEFFaUNSRFpEMFVFUUNBRlFUQnFJZ3dnQnlnQ0NDQUpFS2NCSUFWQlFHc2lDVUh6bWdrZ0RCQTFJQVZCMEFCcUlnc2dDVUdwTUJBdElBY2dDeUFDS0FJb1FSQnFFQ2NnQ3hBUEdpQUpFQThhSUF3UUR4cEJBQ0VNREFFTElBWVEyUTlGQkVBZ0JVRXdhaUlKSUFjb0FnZ2dCaENuQVNBRlFVQnJJZ3hCMjRzSklBa1FOU0FGUWRBQWFpSUxJQXhCODVvSkVDMGdCeUFMSUFJb0FpUkJFR29RSnlBTEVBOGFJQXdRRHhvZ0NSQVBHa0VBSVF3TUFRc2dDUkMzSENBR0VMY2NSaUlNRFFBZ0JVRVFhaUlMSUFjb0FnZ2dDUkNuQVNBRlFTQnFJZ2xCdzQ0SklBc1FOU0FGUVRCcUlnMGdDVUd6akFrUUxTQUZJQWNvQWdnZ0JoQ25BU0FGUVVCcklnOGdEU0FGRUU0Z0JVSFFBR29pRGlBUFFmT2FDUkF0SUFjZ0RpQUNRUkJxRUNjZ0RoQVBHaUFQRUE4YUlBVVFEeG9nRFJBUEdpQUpFQThhSUFzUUR4b0xJQVZCNEFCcUpBQWdERVVOQUNBRElBZ29BaGdpQkRZQ0ZBSkFBa0FDUUNBRVFRRkdCRUFnQXlBQ05nSUlJQUJCcERocUlBTkJDR29ROWdWRkRRRWdBMEVBTmdJVUN5QURRUUEyQWhBTUFRc2dBMEVJYWlFRklBZ29BaHdoQnlNQVFkQUFheUlFSkFBZ0JDQUdFRncyQWhBZ0JDQUNRUkJxTmdJRUlBUWdCRUVRYWpZQ0NDQUVJQUJCQ0dvMkFnQWdBQ2dDQ0NFSklBUkJBRFlDVEFKQUlBY2dCeWdDQUNnQ0NCRUFBQ0lDSUFSQnpBQnFFQ0lnQWtZRVFDQUZJQVFnQnhDbEZBd0JDeUFFUW9DQWdJQ0FBVGNDUkNBRUlBUkJJR29pQWpZQ1FDQUNJQVFvQWt3UU9TQUVRVUJySVF4QkFDRUNBa0FDUUFOQUlBSWdCQ2dDVEU4TkFTQUdRUUFRSWlFTElBUWdCeUFDSUFjb0FnQW9BZ3dSQVFBMkFoUWdCRUVZYWlJTklBa2dDeUFFSUFJZ0JFRVVhaENpRkNBTkVDc0VRQ0FFUVNCcUlBUkJHR29RR2hBa0lBSkJBV29oQWd3QkN3c2dCRUVZYWhBOUdpQUZRUUk2QUFRTUFRc2dCQ0FNTmdJWUlBUWdCQ2dDUUNBRVFTQnFSem9BSENBSklBWWdCRUVZYWhBNklRSWdCVUVCT2dBRUlBVWdBallDQUFzZ0JFRWdhaEFqQ3lBRVFkQUFhaVFBSUFVUUswVU5BU0FESUFOQkNHb1FHaWdDQURZQ0VBc2dBQ2dDQUNFQ0lBTWdDQzBBS0RvQUNDQUNJQU5CSEdvZ0EwRVlhaUFEUVJScUlBQkJqRFJxSUFOQkVHb2dBMEVJYWhEVUVDSUVJQWdwQXlBM0F5QU1BUXRCQUNFRUN5QURRU0JxSkFBZ0JBd0JDeUFFUWJqdUQwWUVRRUlBSVNjakFFR2dCR3NpQlNRQUlBVWdBallDbEFFZ0JTQUNLQUlrSWdRMkFwQUJJQUFnQkJBekdpQUZJQVFvQWlRaUJEWUNqQUVnQUNBRUVETWFJQVZDZ0lDQWdJQUJOd0tFQVNBRklBVkI0QUJxSWdRMkFvQUJJQVFnQWlnQ1RCQTVJQVZCQVRZQ1hDQUFRYWdkYWlFR1FRQWhCQUovQWtBQ1FBTkFJQUlvQWt3Z0JFc0VRQ0FGSUFZZ0FpZ0NTQ0FFUVFKMGFpZ0NBQkNxQkNJQ05nS1FBaUFDUlEwQ0lBVkI0QUJxSUFWQmtBSnFFQ1FnQlNBRktBSmNJQVVvQXBBQ0tBSVlFTmdHTmdKY0lBUkJBV29oQkNBRktBS1FBaWtESUNBbmhDRW5JQVVvQXBRQklRSU1BUXNMSUNkQ2Q0TWhKeUFGS0FLQUFTSUNJQVVvQW9RQlFRSjBhaUVEQTBBZ0F5QUNJZ1JIQkVBZ0JFRUVhaUVDSUFRb0FnQXRBQ2hGRFFFTEN5QUZJQU1nQkVjNkFGc2dCU0FBTmdKRUlBVWdCVUhiQUdvaUJ6WUNVQ0FGSUFWQmxBRnFJZ0kyQWt3Z0JTQUZRZHdBYWlJRU5nSklJQVVnQlVIZ0FHb2lBellDUUNBRklBQTJBaWdnQlNBSE5nSTRJQVVnQWpZQ05DQUZJQVEyQWpBZ0JTQUROZ0lzSUFVZ0FEWUNGQ0FGSUFWQktHbzJBaVFnQlNBRU5nSWdJQVVnQXpZQ0hDQUZJQUkyQWhnZ0JTQUZRVUJyTmdJUUlBVkJtQUZxSUFCQm9BRnFJQVZCakFGcUVOTVFBa0FDUUNBRkxRQ29BVVVFUUNBRlFaQUNha0czbXdWQm9SRkJDQ0FBS0FJRUVCY2lBMEVZYWlJQ1FaNkxDUkFPR2lBRlFmQURhaUlFSUFVb0Fvd0JRU1JxRUZNZ0FpQUVFQklhSUFKQnJmQUVFQTRhSUFRUUR4b2dBeEFZREFFTElBVW9BcGdCSWdkRklBVXRBS1FCSWdKQkFVZHlSUVJBSUFZZ0J4Q0tEQ0VESUFVZ0FEWUNrQUlnQlNBRlFaZ0JhallDbUFJZ0JTQUZRWXdCYWpZQ2xBSWdBMFVFUUNBRlFaQUNhaENJSGd3Q0N5QURLQUlFSWdJUTB3MEVRQ0FGUVJCcUlBTVEwaEFoQkF3REN5QUNRWUNURWtZRVFDQUFRWTNUQWlBRktBS01BUkNwQkVVTkFpQUZLQUtVQVNFQ1FRQWhDQ01BUVNCcklnY2tBQ0FISUFNMkFoZ2dCeUFDTmdJY1FRQWhCQUpBSUFBZ0JVSGdBR29pQWlBREVQWUxSUTBBSUFkQkFUb0FGeUFBS0FJQUlRWWdCMEVETmdJUUlBZEJBRFlDRENBR0VCd2pBRUVRYXlJREpBQWdCa0dvQVdvaUJoRFBIU0VKSUFjb0FoQWhEQ0FIS0FJWUlRc2dCeWdDSENFTklBTWdBa0VnYWpZQ0NDQURJQUlvQWlBZ0FrYzZBQXdnQmlBSklBMGdDeUFNSUFOQkNHb2dBRUdNTkdvaUd5Z0NBRUVBSUFjdEFCY1FpUndpQWhBb0lBWWdCaWdDR0VFQmFqWUNHQ0FEUVJCcUpBQWdCeWdDR0NFR0l3QkJFR3NpQXlRQUlBTWdBallDRENBR1FkZ0phaUFEUVF4cUVOa0dJQU5CRUdva0FDQUNJQWNvQWhncEEvZ0pJQ2VFTndNZ0lBQkJyQjFxSVFZZ0FDZ0NqRFFoQ3lNQVFZQURheUlESkFBZ0FpZ0NMQ0lNS0FJRUlRMGdBaWdDQ0NFSklBTkIwQUpxSUFOQjRBSnFJQXhCQUNBTlFZQ1RFa1liSWd3b0FrQW9BaVJCSkdvUVZoQlRBa0FnQzBVRVFDQUdJQU5CRUdwQnRxb0VFQlFpQmlBSlFSQnFFQ2NnQmhBUEdnd0JDd0pBSUF3b0FrQVEzQVlFUUNBR0lBTkJFR3BCOS8wQ0VCUWlCaUFKUVJCcUVDY2dCaEFQR2d3QkN5QUpLQUpNSWdzZ0RDZ0NNQ0lOUmdSQUlBTkJLR29oRUFOQUFrQUNmd0pBSUFJb0FsUWdDRXNFUUNBSVFRSjBJZzBnRENnQ0xHb29BZ0FpRVNnQ0RDSUxJQVlvQWdnZ0NTZ0NTQ0FOYWlnQ0FDSVBFS2NGRUlRQkloTkhCRUFnQTBIZ0FXb2lDU0FJUVFGcUVGOGdBMEh3QVdvaUNFSDB5d2tnQ1JBMUlBTkJnQUpxSWd3Z0NFR2xqQWtRTFNBRFFaQUNhaUlOSUF3Z0EwSFFBbW9RVGlBRFFhQUNhaUlPSUExQmxKa0pFQzBnQTBIUUFXb2lFQ0FHS0FJSUlBc1Fwd0VnQTBHd0Ftb2lDeUFPSUJBUVRpQURRY0FDYWlJUklBdEJwWWtKRUMwZ0EwSEFBV29pRWlBR0tBSUlJQk1RcHdFZ0EwR3dBV29pRXlBUklCSVFUaUFEUVJCcUloY2dFMEh6bWdrUUxTQUdJQmNnRDBFUWFoQW5JQmNRRHhvZ0V4QVBHaUFTRUE4YUlCRVFEeG9nQ3hBUEdpQVFFQThhSUE0UUR4b2dEUkFQR2lBTUVBOGFJQWdRRHhvZ0NSQVBHZ3dIQ3lBTEtBSUVRZGlzRWtjTkF5QUdLQUs0Q2lFT0lBTkJBellDRUNBT1FSeHFJQU5CRUdvUXJRUU5BeUFDS0FKUUlBMXFLQUlBS0FJUUtBSU1JZzBvQWdRaERpQUxRUUFnQ3lnQ0JFSFlyQkpHR3lnQ0dDRVNJQTFCQUNBT1FkaXNFa1liSWdzZ0RVRUFJQTVCdUswU1Joc2lEWEpGQkVBZ0EwRVFha0hubWdWQnZ3MUJDQ0FEUWJBQmFoQWRJZ3NRRnlFT0lCQkJxcGtJRUE0YUlBNFFHQ0FMRUI0TUFnc2dDMFVOQVNBTFFSaHFEQUlMUVFFaENDQUNLQUlVS0FJRVFaQzFFa2NOQmdKQUlBSW9BZ3dvQWdnaURFVU5BQ0FNS0FJRVFmanVEMGNOQUNBTUtBSWtJQUlvQWdoR0RRY0xJQU5Cc0FGcUlnaEJtNDBKSUFOQjBBSnFFTVFCSUFOQkVHb2lEQ0FJUWZ2UkF4QXRJQVlnRENBSlFSQnFFQ2NnREJBUEdpQUlFQThhREFVTElBMUJHR29MSVFzZ0N5Z0NBQ0FTUmcwQUlCRW9BZ2doQ3lBRFFRQTZBQXdnQXlBTFFUaHFOZ0lJSUFZZ0EwRUlha0VHRUxFRFJRMEFJQVlnQTBFUWFrSDF1UVFRRkNJR0lBOUJFR29RSnlBR0VBOGFEQU1MSUFoQkFXb2hDQXdBQ3dBTElBTkJnQUpxSWdoQndJVUtJQU5COEFGcVFjRVRRYm9wSUFzZ0RVc2JFQlFpRXhBMUlBTkJrQUpxSWdzZ0NFR2JqQWtRTFNBRFFhQUNhaUlOSUFzZ0EwSFFBbW9RVGlBRFFiQUNhaUlQSUExQnJkc0tFQzBnQTBIZ0FXb2lEaUFNS0FJd0VGOGdBMEhBQW1vaURDQVBJQTRRVGlBRFFiQUJhaUlRSUF4QjlzZ0pFQzBnQTBIUUFXb2lFU0FDS0FKVUVGOGdBMEVRYWlJU0lCQWdFUkJPSUFZZ0VpQUpRUkJxRUNjZ0VoQVBHaUFSRUE4YUlCQVFEeG9nREJBUEdpQU9FQThhSUE4UUR4b2dEUkFQR2lBTEVBOGFJQWdRRHhvZ0V4QVBHZ3RCQUNFSUN5QURRZEFDYWhBUEdpQURRWUFEYWlRQUlBaEZEUUFnQUNnQ2lEUWlBd1JBSUFNZ0J5Z0NHQkRSSFNBQUtBS0lOQ0FDRU5nZElBY29BaGdpQmlnQ2pBUWlBeUFHS0FLUUJFRUNkR29oQmdOQUlBTWdCa1lFUUNBSEtBSVlJZ1lvQW93Q0lnTWdCaWdDa0FKQkFuUnFJUVlEUUNBRElBWkdCRUFqQUVId0FHc2lBeVFBSUFNZ0FpZ0NMQ0lHUVFBZ0JpZ0NCRUdBa3hKR0d5SUdOZ0prUVFFaERBSkFJQVpGRFFBZ0JpZ0NRQ0VHSUFOQkFEb0FYQ0FESUFaQjVBQnFOZ0pZSUFOQjJBQnFRUWNRbHdrTkFDQURJQUEyQWxBZ0FFSElLMm9pQmlBRFFlUUFhaENKRENFSklBWWdBRUdJTkdvUWlRd2hDeUFEUVVCclFnQTNBd0FnQTBJQU53TTRJQU5CZ0lDQS9BTTJBa2dnQTBJQU53TW9JQU5DQURjRElDQURRWUNBZ1B3RE5nSXdJQXRCRkdvaERTQUxRVHhxSVJBZ0MwRW9haUVSSUFsQlBHb2hFaUFKUVJScUlROGdDVUVvYWlFVFFRQWhCZ0pBQTBBZ0JpQUNLQUpVVHlJTVJRUkFBa0FnQmtFQ2RDSU9JQUlvQWxCcUtBSUFJZ2dvQWhRb0FnUkIyS3dTUncwQUlBTWdDQ2dDRURZQ0hDQURJQU1vQW1Rb0Fpd2dEbW9vQWdBMkFnZ2dFeUFEUVFocUVQY0hCRUFnQTBFZ2FpQURRUnhxRU9jRUJFQWdBMEVnYWlBRFFSeHFFUFlIS0FJQUlRWWdBMEVBTmdJTUlBTWdCallDQ0NBRFFSQnFRYTdlQXhBVUlRWWdBMEhRQUdvZ0NDQURRUWhxRVBVSElBWVFEeG9NQlFzZ0EwRTRhaUFEUVJ4cUVPY0VCRUFnQTBFNGFpQURRUnhxRVBZSEtBSUFJUVlnQTBFQU5nSU1JQU1nQmpZQ0NDQURRUkJxUWZuL0JCQVVJUVlnQTBIUUFHb2dDQ0FEUVFocUVQVUhJQVlRRHhvTUJRc2dEeUFEUVJ4cUVPY0VCRUFnRHlBRFFSeHFFUFlIS0FJQUlRWWdBMEVCTmdJTUlBTWdCallDQ0NBRFFSQnFRZm4vQkJBVUlRWWdBMEhRQUdvZ0NDQURRUWhxRVBVSElBWVFEeG9NQlFzZ0NTQURRUnhxRU9jRUJFQWdDU0FEUVJ4cUVQWUhLQUlBSVFZZ0EwRUJOZ0lNSUFNZ0JqWUNDQ0FEUVJCcVFhN2VBeEFVSVFZZ0EwSFFBR29nQ0NBRFFRaHFFUFVISUFZUUR4b01CUXNnQXlBSU5nSU1JQU1nQXlnQ0hEWUNDQ0FEUWVnQWFpQURRU0JxSUFOQkNHb1E5d1VnQXlnQ0hDSU1SUTBCSUF3b0FnUWlEa0dRbkJKR0JFQWdBeUFJTmdJTUlBTWdERFlDQ0NBRFFlZ0FhaUFMSUFOQkNHb1E5d1VNQWdzZ0RrSEFuQkpIRFFFZ0F5QU1OZ0pvSUFOQkNHb2dFU0FEUWVnQWFoQ3JCUXdCQ3lBRElBTW9BbVFvQWl3Z0Rtb29BZ0EyQWdnZ0VpQURRUWhxRVBjSFJRMEFJQU5CSUdvZ0EwRWNhaERuQkFSQUlBTkJJR29nQTBFY2FoRDJCeWdDQUNFR0lBTkJBRFlDRENBRElBWTJBZ2dnQTBFUWFrR3UzZ01RRkNFR0lBTkIwQUJxSUFnZ0EwRUlhaEQxQnlBR0VBOGFEQVFMSUFrZ0EwRWNhaERuQkFSQUlBa2dBMEVjYWhEMkJ5Z0NBQ0VHSUFOQkFUWUNEQ0FESUFZMkFnZ2dBMEVRYWtHdTNnTVFGQ0VHSUFOQjBBQnFJQWdnQTBFSWFoRDFCeUFHRUE4YURBUUxJQU1nQ0RZQ0RDQURJQU1vQWh3MkFnZ2dBMEhvQUdvZ0EwRTRhaUFEUVFocUVQY0ZJQU1vQWh3aURFVU5BQ0FNS0FJRUlnNUJrSndTUmdSQUlBTWdDRFlDRENBRElBdzJBZ2dnQTBIb0FHb2dEU0FEUVFocUVQY0ZEQUVMSUE1QndKd1NSdzBBSUFNZ0REWUNhQ0FEUVFocUlCQWdBMEhvQUdvUXF3VUxJQVpCQVdvaEJnd0JDd3NnQ1VFY2FpRUdBMEFnQmlnQ0FDSUdCRUFnQXlBR0tRSUlOd01JSUFOQjZBQnFJQTBnQTBFSWFoRDNCUXdCQlNBSlFRaHFJUVlEUUNBR0tBSUFJZ1pGRFFNZ0F5QUdLUUlJTndNSUlBTkI2QUJxSUFzZ0EwRUlhaEQzQlF3QUN3QUxBQXNBQ3lBRFFTQnFFRThnQTBFNGFoQlBDeUFEUWZBQWFpUUFJQXhGRFFVZ0IwRUFPZ0FFSUFjZ0FrSFFBR28yQWdBZ0J5Z0NHQ0lFS0FLOEJ5SURJQVFvQXNBSFFRTjBhaUVJQTBBZ0F5QUlSd1JBSUFNb0FnQWlCaWdDQkNFSklBTW9BZ1FoQkNBR1JTQUpRY0NjRWtkeVJRUkFJQWNvQWdBb0FnQWdCaWdDVUVFQ2RHb29BZ0FRb0FRaUJrRUFJQVlvQWdSQjJKd1NSaHNvQWl3aEJnc0NRQ0FFUlFSQVFRQWhCQXdCQ3lBRUtBSUVRY0NjRWtjTkFDQUhLQUlBS0FJQUlBUW9BbEJCQW5ScUtBSUFFS0FFSWdSQkFDQUVLQUlFUWRpY0VrWWJLQUlzSVFRTElBQW9Bb2cwSUFZZ0JCRDVIU0FEUVFocUlRTU1BUXNMQlNBQUtBS0lOQ0FES0FJQUVQWWRJQU5CQkdvaEF3d0JDd3NGSUFBb0FvZzBJQU1vQWdBUTBSMGdBMEVFYWlFRERBRUxDd3NnQUNnQ0FDQUhLQUljUVNScUlCc2dCMEVZYWhEMUhTRUVJQUFvQWdBaUF4QWNJQU5CNUFGcUlBY29BaHdvQWlRZ0JCQzVBU0FDSVFRTElBZEJJR29rQUF3REN5QUNFUGtWQkVBZ0JVRUxOZ0wwQXlBRlFhUHBBRFlDOEFNZ0JTQUZLUVB3QXpjRENDQUdJQU1nQlVFSWFoQ21CUXdDQ3lBRlFaQUNhaENJSGd3QkN5QUhRWDlHSUFKQkFrZHlSUVJBSUFCQjhPOENJQVVvQW93QkVLa0VSUTBCSUFVb0FwUUJJUXRCQUNFTUl3QkI4QUJySWdZa0FDQUdJQXMyQW13Z0JVSGdBR29pQ0NnQ0lDSUVJQWdvQWlSQkFuUnFJUUpCQVNFREEzOGdBaUFFUmdSL0lBWkJBRFlDYUNBR1FnQTNBMkJCQUNFRUl3QkJFR3NpQ1NRQUlBZ29BaVFoRFNBR1FTQnFJZ0pDZ0lDQWdJQUJOd0lrSUFJZ0FqWUNJQ0FDSUEwUU9RTkFJQVFnRFVjRVFDQUpJQWdvQWlBZ0JFRUNkR29vQWdBb0FoUTJBZ3dnQWlBSlFReHFFQ1FnQkVFQmFpRUVEQUVMQ3lBSlFSQnFKQUFnQUNnQ0VDRUVJQVpCQURvQVhDQUdJQVpCUUdzMkFsZ2dCa0hnQUdvZ0JDQUhJQVpCMkFCcUlBTWdDMEVRYWlBRUtBSUFLQUlJRVFvQUlBWW9BbUFoQkNBQ0VDTUNRQ0FFUlEwQUFrQWdCMEh4QUVZRVFDQUFJQWdvQWlBb0FnQkJBQkNXQWlFQ0lBZ29BaUFnQWpZQ0FDQUlLQUlnS0FJQVJRMENJQVlvQW1BaEJBd0JDeUFBSUFnZ0JCRDJDMFVOQVFzZ0JDMEFVQVJBSUFBZ0JrRWdha0hlN3dJUUZDSUNJQVlvQW14QkVHb1F5eEFnQWhBUEdnc2dCa0VBTmdKVUlBWWdBeUFFS0FJNEVOZ0dJZ0kyQWxBQ1FDQUNRUUZIRFFBZ0JpQUdLQUpzSWdrMkFpQWdBRUdrT0dvZ0JrRWdhaEQyQlFSQUlBWkJBRFlDVUF3QkN5QUdRU0JxSWdJZ0FDQUlJQVFRM0IwQ2YwRUJJQUlRMngwTkFCb2dBQ0FHS0FKb0lndEJBWFZxUVFocUlRSWdCaWdDWkNFRElBdEJBWEVFUUNBQ0tBSUFJQU5xS0FJQUlRTUxJQVFvQWdnaEN5QUdRU0JxRU5vZElRMGdCa0VBT2dBVUlBWWdEVUVnYWpZQ0VDQUdRUmhxSWcwZ0FpQUxJQVpCRUdvZ0NVRVFhaUFERVFnQVFRRWdEUkFyUlEwQUdpQUdJQVpCR0dvUUdpZ0NBRFlDVkVFQUN5RUNJQVpCSUdvUTJSMGdBZzBCQ3lBR0lBUW9Ba0JCMWdCcklnSkJHMGxCZ1lENVB5QUNkbkVFZjBFQkJTQUlLQUlnSWdNZ0NDZ0NKRUVDZEdvaEJBTkFJQVFnQXlJQ1J3UkFJQUpCQkdvaEF5QUNLQUlBTFFBb1JRMEJDd3NnQWlBRVJ3czZBQ0FnQUNnQ0FDQUdRZXdBYWlBR1FlQUFhaUFHUWRBQWFpQUlJQUJCakRScUlBWkIxQUJxSUFaQklHb1F3QkFoQWlBQUtBS0lOQ0lJQkVBZ0JpZ0NZQ0VESXdCQkVHc2lCQ1FBSUFRZ0F6WUNEQ01BUVJCcklnTWtBQ0FEUVFocUlBaEI3QVZxSWdoQkhHb2dCRUVNYWlJSkVNb2RJQU1vQWdnaEN5QURRUkJxSkFBZ0MwRUNSd1JBSUFnZ0NSQnhDeUFFUVJCcUpBQWdBQ2dDaURRZ0FoRFlIUXNnQUVHc0hXb2hBeU1BUWRBQWF5SUVKQUJCQVNFSUFrQWdBaWdDTENJSktBSUVRZmlQRWtjZ0NVVnlEUUFnQkNBSktBSkFRUmRyUVFKSlFRRjBJZ3MyQWt3Z0MwVU5BQ0FES0FLNENrRWNhaUFFUWN3QWFoQ3RCQTBBSUFSQklHb2lDRUhpakFrZ0JFRVFhaUFKRUkwY0VCUWlEeEExSUFSQk1Hb2lDU0FJUWQyS0NoQXRJd0JCa0FGcklnc2tBQ0FMRUVraURTQUVLQUpNRUtVYklBUWdEVUVNYWhCQ0lBMFFVU0FMUVpBQmFpUUFJQVJCUUdzaUN5QUpJQVFRVGlBRElBc2dBaWdDQ0VFUWFoQW5JQXNRRHhvZ0JCQVBHaUFKRUE4YUlBZ1FEeG9nRHhBUEdrRUFJUWdMSUFSQjBBQnFKQUFnQ0VVTkFDQUhRZGNBYTBFUFNRUkFRUUFoQ0NNQVFTQnJJZ1FrQUNBRUlBSTJBaHdnQWlnQ0xDSUpLQUlFUWZpUEVrY2dDVVZ5UlFSQUlBUkJFR29nQ1JDTkhCQVVJUXNnQkNBRE5nSUlJQVFnQ1VFSWFqWUNBQ0FFSUFSQkhHbzJBZ1FnQkVFSVFYaEJCeEMxSEFSQUlBUkJBa0VBUVFNUXRSd2hDQXNnQ3hBUEdnc2dCRUVnYWlRQUlBaEZEUUVnQmtFQU9nQU1JQVlnQWtIUUFHbzJBZ2dnQmlnQ1lDRUlJd0JCb0FGcklnUWtBQ0FJUVFocUlnbEJDeEQrRHlJSVFYOUdCRUFnQkVHM213VkJ5QlpCQ0NBQUtBSUVFQmNpQzBFWWFrR0U0Z0VRRGhvZ0N4QVlDd0pBSUFZb0FnZ29BZ0FnQ0VFQ2RHb29BZ0FRb0FRaUNFVU5BQ0FJS0FJRVFkaWNFa2NOQUNBSUtBSXNJZ2dvQWd3UWhBRW9BZ1JCMks4U1JnMEFJQWxCQ2hEK0R5SUpRWDlHQkg5QkFBVWdCaWdDQ0NnQ0FDQUpRUUowYWlnQ0FCQ2dCQ0lKUVFBZ0NTZ0NCRUhZbkJKR0d5Z0NMQXNoQ1NBQUtBS0lOQ0FJSUFrUStSMExJQVJCb0FGcUpBQUxJQWRCMWdCR0JFQWpBRUd3QVdzaUJDUUFBbjlCQUNBQ0tBSXNJZ2NvQWdSQitJOFNSeUFIUlhJTkFCb2dBaWdDVkVVRVFDQUVRZWVhQlVIYkRFRUlJQVJCb0FGcUVCMGlCeEFYSWdoQkdHcEIxdGdJRUE0YUlBZ1FHQ0FIRUI0TElBSW9BbEFvQWdBaUNDZ0NGQ0lIUVFBZ0J5Z0NCRUhZckJKR0d5SUhSUVJBSUFSQjU1b0ZRZDRNUVFnZ0JFR2dBV29RSFNJSkVCY2lDMEVZYWtIN3FBZ1FEaG9nQ3hBWUlBa1FIZ3NnQkNBSEtBSVlJZ2MyQXFBQklBY29BZ1JCOEtRU1J3UkFJQU1vQXJ3S0lRa2pBRUVRYXlJSEpBQWdCMEVJYWlBSklBUkJvQUZxRU1nUUlBY3RBQWdoQ1NBSFFSQnFKQUJCQVNBSlJRMEJHZ3NnQXlBRVFhQ1VCQkFVSWdjZ0NDZ0NDRUVRYWhBbklBY1FEeHBCQUFzaEJ5QUVRYkFCYWlRQUlBZEZEUUVMSXdCQk1Hc2lCQ1FBUVFFaENBSkFJQUlvQWhRb0FnUkJrTFVTUncwQUFrQWdBaWdDRENJSFJRMEFJQWNvQWdnaUIwVU5BQ0FIS0FJRVFmanVEMGNOQUNBSEtBSWtJQUlvQWdoR0RRRUxRUUFoQ0NBRUlBSW9BaXdpQjBFQUlBY29BZ1JCK0k4U1Joc29Ba0EyQWhBZ0JFRWdhaUlKSUFSQkVHb2lCeEQ0RUNBRVFkZU5DU0FKRU1RQklBY2dCRUg3MFFNUUxTQURJQWNnQWlnQ0NFRVFhaEFuSUFjUUR4b2dCQkFQR2lBSkVBOGFDeUFFUVRCcUpBQWdBa0VBSUFnYklRd0xJQVpCOEFCcUpBQWdEQVVnQXlBRUtBSUFLQUlZRU5nR0lRTWdCRUVFYWlFRURBRUxDeUVFREFJTElBZEZJQUpCQlVkeVJRUkFBa0FnQlNnQ2pBRWlBaWdDQkVISTZROUdEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQjBFbGF3NEtBUWtKQWdrSkF3a0pCQUFMQWtBZ0IwRXhhdzRLQlFrSkJna0pCd2tKQ0FBTEFrQWdCMEhjQUVjRVFDQUhRU0pHRFFFQ1FDQUhRZElBUndSQUlBZEIxd0JHRFFFZ0IwRWNSdzBNSUFBb0FnQWhBaUFGSUFVb0FvUUJOZ0tRQWlBQ0lBVkJrQUpxRUljZUlRTWdCVUtBZ0lDQWdBRTNBcFFFSUFVZ0JVSHdBMm9pQWpZQ2tBUWdBaUFGS0FLRUFTSUNFRGtnQlVHUUJHb2hCMEVBSVFRRFFDQUNJQVJIQkVBZ0JTQUZLQUtBQVNBRVFRSjBhaWdDQUNnQ0ZCQ0VBVFlDa0FJZ0JFRUJhaUVFSUFWQjhBTnFJQVZCa0FKcUVDUU1BUXNMUVFBaEJDQUZRUUE2QU93RElBVWdCellDNkFNQ1FDQUZRZWdEYWhDM0N5SUhSUVJBSUFBZ0JVR1FBbW9pQWtHeWhRRVFGQ0lESUFVb0FwUUJRUkJxRUNjZ0F4QVBHaUFDRU40R0lRTURRQ0FGS0FLRUFTQUVUUVJBSUFNUTNRWkJBQ0VFREFNTElBVWdCRUVDZENJSElBVW9Bb0FCYWlnQ0FDZ0NGRFlDZ0FJakFFRVFheUlDSkFBZ0FrRUlhaUFESUFWQmdBSnFFTWtkSUFJb0FnZ2hDQ0FDUVJCcUpBQWdDRUVDUndSQUlBVkJ3QUZxSWdJZ0JCQmZJQVZCMEFGcUlnaEJtTXdKSUFJUU5TQUZRZUFCYWlJSklBaEI3NU1KRUMwZ0JVR3dBV29pRENBR0lBVW9Bb0FCSUFkcUtBSUFLQUlVRUtjQklBVkI4QUZxSWdzZ0NTQU1FRTRnQlVHQUFtb2lEU0FMUWZPYUNSQXRJQUFnRFNBRktBS0FBU0FIYWlnQ0FDZ0NDRUVRYWhDR0FTQU5FQThhSUFzUUR4b2dEQkFQR2lBSkVBOGFJQWdRRHhvZ0FoQVBHZ3NnQkVFQmFpRUVEQUFMQUFzZ0FDQUZLQUtVQVVFUWFpSUNJQUlnQWlBSElBTkJBQkRXRUNJQ1JRMEFJQVZCRUdvZ0FoRFNFQ0VFQ3lBRlFmQURhaEFqREE4TElBVkJRR3RCQlVFQUVMa0NJUVFNRGdzZ0JVRkFhMEVHUVFBUXVRSWhCQXdOQ3lBRlFVQnJRUWRCQUJDNUFpRUVEQXdMSUFWQlFHdEJDRUVBRUxrQ0lRUU1Dd3NnQlVGQWEwRUpRUUFRdVFJaEJBd0tDeUFGUVVCclFRcEJBQkM1QWlFRURBa0xJQVZCUUd0QkMwRUFFTGtDSVFRTUNBc2dCVUZBYTBFTVFRQVF1UUloQkF3SEN5QUZRVUJyUVExQkFCQzVBaUVFREFZTElBVkJRR3RCRGtFQUVMa0NJUVFNQlFzZ0JVRkFhMEVQUVFBUXVRSWhCQXdFQ3lBRlFVQnJRUkJCQUJDNUFpRUVEQU1MSUFBZ0J5QUNFSVllSWdKRkRRRWdCVUVRYWlBQ0VOSVFJUVFNQWdzZ0FrVUVRQ0FGUWZBRGFpSUNRWVdLQ1NBRlFaZ0JhaERFQVNBRlFaQUNhaUlFSUFKQjg1b0pFQzBnQUNBRUlBVW9BcFFCUVJCcUVDY2dCQkFQR2lBQ0VBOGFEQUVMSUFWQkN6WUNsQUlnQlVHajZRQTJBcEFDSUFVZ0JTa0RrQUkzQXdBZ0FDQUZLQUtNQVVFUWFpQUZRWmdCYWlBRkVJVWVDMEVBSVFRTElBVkJtQUZxRU5FUUlBUU5BUXRCQUF3QkN5QUVLQUlzSWdJRWZ3Si9RUUFnQWlnQ0JDSUNLUU1RUW9DRmdLQ0FnSUNBd0FDRElpY2dKMElCZllOUURRQWFRUUVnQWtHUW5oSVFTQTBBR2lBQ1FjaWVFaEJJQ3dWQkFBc0VRQ0FBS0FJQUlRSWdCU0FFS0FJVU5nS1FBaUFDSUFWQmtBRnFJQUJCakRScUlBVkJrQUpxRU5BUUlRSWdBQ2dDQUNJREVCd2dBMEhrQVdvZ0JTZ0NrQUVnQWhDNUFRc2dCQ0VtUVFBaEhTQUFRYXdkYWlFRElBQW9Bb3cwSVFjakFFRkFhaUlDSkFBZ0FpQUVOZ0lJUVFFaENBSkFJQVFvQWl3aUJpMEFQRVVnQjBWeURRQWdCeWdDQ0NJSFJRMEFJQVFvQWdnaEJDQUhLQUlFUWZqdUQwY05BQ0FIS0FJa0lBUkhEUUFnQWlBRE5nSUFJQUlnQWtFSWFqWUNCQUpBSUFZb0FnUWlCRUdBa3hKR0JFQWdBa0VRYWlJRUlBWW9Ba0FvQWlSQkpHb1FVeUFDUVNCcUlnZEJnbzBKSUFRUU5TQUNRVEJxSWdnZ0IwSFQ0Z01RTFNBRElBZ2dBaWdDQ0NnQ0NFRVFhaEFuSUFnUUR4b2dCeEFQR2lBRUVBOGFJQU1vQWdnZ0JpZ0NRQkNkQ1F3QkN5QUVRZmlQRWtZRVFDQUNJQVlvQWtBMkFnd2dBa0VRYWlJRUlBSkJER29RK0JBZ0FrRWdhaUlHUWI2TkNTQUVFRFVnQWtFd2FpSUhJQVpCODVvSkVDMGdBeUFISUFJb0FnZ29BZ2hCRUdvUUp5QUhFQThhSUFZUUR4b2dCQkFQR2d3QkN5QUVRY2llRWtZRVFDQURJQUpCTUdwQnl2SUVFQlFpQkNBQ0tBSUlLQUlJUVJCcUVDY2dCQkFQR2d3QkN5QUVRWkNlRWtZRVFDQURJQUpCTUdwQm9mSUVFQlFpQkNBQ0tBSUlLQUlJUVJCcUVDY2dCQkFQR2d3QkN5TUFRUkJySWdRa0FDQUNLQUlBSUFSQjh2SUVFQlFpQXlBQ0tBSUVLQUlBS0FJSVFSQnFFQ2NnQXhBUEdpQUVRUkJxSkFBTFFRQWhDQXNnQWtGQWF5UUFJQ1lnSFNBSUd3c2hBaUFGUWVBQWFoQWpJQVZCb0FScUpBQWdBZ3dCQ3lBRVFmanREMFlFUUVFQUlRTWpBRUhRQW1zaUJDUUFJQVFnQWpZQ25BSWdCQ0FDS0FJa0lnSTJBcGdDSUFBZ0FoQXpHaUFFUVlBQ2FpQUFRYUFCYWlBRVFaZ0NhaERURUFKQUFrQWdCQzBBa0FKRkJFQWdCRUhnQUdwQnQ1c0ZRZW9YUVFnZ0FDZ0NCQkFYSWdWQkdHb2lBa0dlaXdrUURob2dCRUV3YWlJRElBUW9BcGdDUVNScUVGTWdBaUFERUJJYUlBSkJyZkFFRUE0YUlBTVFEeG9nQlJBWURBRUxJQVFvQW9BQ0lnSkZJQVF0QUl3Q0lnVkJBVWR5UlFSQUlBQkJxQjFxSUFJUWlnd2lBa1VOQWdKQUFrQWdBaWdDQkNJRkVQWVZCRUFnQkNBQ05nTE1BaUFFUVRCcUlBUW9BcGdDUVNScUVGWWhCeUFBS0FJQUlnSVFIQ0FDUWFnQmFpSUdJUjRnQmhEekJTRUZJQVFvQXB3Q0lRZ2dBRUdNTkdvb0FnQWhDU0FFS0FMTUFpRURJd0JCSUdzaUFpUUFJQUlnQ1RZQ0dDQUNJQWcyQWh3Z0FpQURLQUlNTmdJVUlBSWdBeWdDRURZQ0VDQUNJQU1vQWh3MkFnd2dBa0VBT2dBTElBVWdBaWdDSENBQ0tBSVVJQUlvQWhBZ0FpZ0NHQ0FDS0FJTUlBSXRBQXRCQUJDY0JTSUZRZGljRWpZQ0JDQUZRWWllRWpZQ0FDQUZJQU0yQWl3Z0JVRzRuUkkyQWdBQ1FDQURLQUlNS0FJRVFkaXNFa2NOQUNBREtBSWdJZ2hGRFFBZ0NDZ0NFQ0VEQ3lBRklBTTJBaEFnQWtFZ2FpUUFJQjRnQlNJREVDZ2dCaUFHS0FJWVFRRnFOZ0lZQWtBZ0FDZ0NqRFFpQWtVTkFBSi9JQUlvQWdSQitKUVNSd1JBQTBCQkFDQUNLQUlNSWdKRkRRSWFJQUlvQWdSQitKUVNSdzBBQ3dzZ0Fnc2lBa1VOQUNBQ0VNMFFJZ2dvQXV3Q1JRMEFJQVJCNEFCcUlnSWdDRUU0YWpZQ0FDQUNRUVJxSUFjUVZob2dBa0VBTmdJZ0lBSWdDQ2dDNkFKQkFXczJBaVFDUUNBQ0VMc2RSUTBBSUFJUTl4MG9BZ0FnQ0NnQzhBSkpEUUFnQkVHZ0Ftb2lBeUFIRUZNZ0JFR3dBbW9pQlVHVmtBa2dBeEExSUFSQndBSnFJZ1lnQlVIem1na1FMU0FBSUFZZ0NDZ0M3QUpCRUdvUUp5QUdFQThhSUFVUUR4b2dBeEFQR2lBRElBY1FVeUFGUVo2TENTQURFRFVnQmlBRlFZWHZBeEF0SUFBZ0JpQUNFUGNkS0FJRUtBSUlRUkJxRUlZQklBWVFEeG9nQlJBUEdpQURFQThhSUFNZ0J4QlRJQVZCbm9zSklBTVFOU0FHSUFWQjd1d0RFQzBnQUNBR0lBUW9BcHdDUVJCcUVJWUJJQVlRRHhvZ0JSQVBHaUFERUE4YVFRQWhBd3dFQ3dzZ0JDQUVLQUxNQWlJRlFRQWdCU2dDQkVHUW5CSkdHeUlDTmdLZ0FpQUFLQUtJTkNJR0JFQWdBa1VOQWlNQVFSQnJJZ1VrQUNBRklBSTJBZ3dnQmtIY0FHb2dCVUVNYWlJSEVJVU1JQVpCN0FGcUlBY1EwQjBnQlVFUWFpUUFJQUFvQWdBaUJSQWNJQVZCNUFGcUlBSVEzQkFpQlVVTkFpQUZLQUlRSWdJZ0JTZ0NGRUVDZEdvaEJRTkFJQUlnQlVZTkF5QUFLQUtJTkNBQ0tBSUFFUFlkSUFKQkJHb2hBZ3dBQ3dBTElBVW9BZ2dvQWdRaUFrSG8rUkZHQkVBZ0FDZ0NtRFFpQWtVTkFpQUNJQVJCb0FKcUVJVU1JQUFvQWdBaUFoQWNJQUpCNUFGcUlBUW9BcUFDRU53UUlnVkZEUUlnQlNnQ0VDSUNJQVVvQWhSQkFuUnFJUVVEUUNBQ0lBVkdEUU1nQkNBQ0tBSUFOZ0pnSUFBb0FwZzBJQVJCNEFCcUVJVU1JQUpCQkdvaEFnd0FDd0FMSUFKQjJQZ1JSdzBCSUFSQnNBSnFJZ1VnQnhCVElBUkJ3QUpxSWdKQjFZc0pJQVVRTlNBRVFlQUFhaUlESUFKQmplOE1FQzBnQWhBUEdpQUZFQThhSUFJZ0EwSGhxZ1FRdUFJZ0FDQUNJQVFvQXB3Q1FSQnFFQ2NnQWhBUEdpQUNJQU5CaCs4REVMZ0NJQUFnQWlBRUtBTE1BaWdDQ0VFUWFoQ0dBU0FDRUE4YUlBTVFEeHBCQUNFRERBSUxJQVVRMHcwRVFDQUVJQUkyQW1BZ0FFSHhsUVFnQkNnQ21BSVFxUVJGRFFRZ0FDZ0NBQ0FFUVp3Q2FpQUFRWXcwYWlBRVFlQUFhaERRRUNFRERBVUxJQVZCZ0pNU1J3MEVJQVFnQWpZQ1lDQUFRWTNUQWlBRUtBS1lBaENwQkVVTkF5QUFLQUlBSUFSQm5BSnFJQUJCakRScUlBUkI0QUJxRVBVZElRTU1CQXNnQkNnQ3pBSWhCU01BUVJCcklnSWtBQ0FDSUFNMkFnd2dCVUVrYWlBQ1FReHFFQ1FnQWtFUWFpUUFDd3dDQ3lBQ1JTQUZRUVZIY2tVRVFDQUVJQUFnQWlBRUtBS1lBaENHSGlJQ05nSmdJQUpGRFFFZ0FDZ0NBQ0FFUVp3Q2FpQUFRWXcwYWlBRVFlQUFhaERRRUNFRERBSUxJQUpCZjBZZ0JVRUNSM0pGQkVBZ0JFRXdha0hSL1FJUUZDRUNJQVFvQXB3Q0lnTXBBaGdoSnlBRUlBTW9BaUEyQW5BZ0JDQW5Od05vSUFRZ0p6Y0RZQ0FBSUFJZ0JFSGdBR29RSnlBQ0VBOGFEQUVMSUFRZ0FrRUFJQVZCQTBZYklnWTJBbUFnQmdSQUlBQkJoWTBCSUFRb0FwZ0NFS2tFUlEwQ0lBQW9BZ0FpQWhBY0lBSkJxQUZxSWdVaEh5QUZFS29ESVFNZ0JDZ0NuQUloQmlBQVFZdzBhaWdDQUNFSElBUW9BbUFoQ0NNQVFSQnJJZ0lrQUNBQ0lBYzJBZ2dnQWlBR05nSU1JQU1nQWlnQ0RDQUNLQUlJRU9vSElnTkI4SVVTTmdJRUlBTkIrSWtTTmdJQUlBTWdDRFlDRUNBRFFlaUpFallDQUNBQ1FSQnFKQUFnSHlBREVDZ2dCU0FGS0FJWVFRRnFOZ0lZREFJTElBUWdBa0VBSUFWQkJFWWJJZ1kyQW1BZ0JnUkFJQUJCeU53RUlBUW9BcGdDRUtrRVJRMENJQUFvQWdBaUFoQWNJQUpCcUFGcUlnVWhJQ0FGRUtvRElRTWdCQ2dDbkFJaEJpQUFRWXcwYWlnQ0FDRUhJQVFvQW1BaENDTUFRUkJySWdJa0FDQUNJQWMyQWdnZ0FpQUdOZ0lNSUFNZ0FpZ0NEQ0FDS0FJSUVPb0hJZ05CaUlZU05nSUVJQU5CbUlvU05nSUFJQU1nQ0RZQ0VDQURRWWlLRWpZQ0FDQUNRUkJxSkFBZ0lDQURFQ2dnQlNBRktBSVlRUUZxTmdJWURBSUxJQVFnQWtFQUlBVkJCa1liSWdZMkFtQWdCZ1JBSUFCQnk5QURJQVFvQXBnQ0VLa0VSUTBDSUFBb0FnQWlBaEFjSUFKQnFBRnFJZ1VoSVNBRkVLb0RJUU1nQkNnQ25BSWhCaUFBUVl3MGFpZ0NBQ0VISUFRb0FtQWhDQ01BUVJCcklnSWtBQ0FDSUFjMkFnZ2dBaUFHTmdJTUlBTWdBaWdDRENBQ0tBSUlFT29ISWdOQm9JWVNOZ0lFSUFOQnVJb1NOZ0lBSUFNZ0NEWUNFQ0FEUWFpS0VqWUNBQ0FDUVJCcUpBQWdJU0FERUNnZ0JTQUZLQUlZUVFGcU5nSVlEQUlMSUFRZ0FrRUFJQVZCQjBZYklnWTJBbUFnQmdSQUlBQkI1NzRESUFRb0FwZ0NFS2tFUlEwQ0lBQW9BZ0FpQWhBY0lBSkJxQUZxSWdVaElpQUZFS29ESVFNZ0JDZ0NuQUloQmlBQVFZdzBhaWdDQUNFSElBUW9BbUFoQ0NNQVFSQnJJZ0lrQUNBQ0lBYzJBZ2dnQWlBR05nSU1JQU1nQWlnQ0RDQUNLQUlJRU9vSElnTkJ1SVlTTmdJRUlBTkIySW9TTmdJQUlBTWdDRFlDRUNBRFFjaUtFallDQUNBQ1FSQnFKQUFnSWlBREVDZ2dCU0FGS0FJWVFRRnFOZ0lZREFJTElBUWdBa0VBSUFWQkNFWWJJZ1kyQW1BZ0JnUkFJQUJCcG9rRUlBUW9BcGdDRUtrRVJRMENJQUFvQWdBaUFoQWNJQUpCcUFGcUlnVWhJeUFGRUtvRElRTWdCQ2dDbkFJaEJpQUFRWXcwYWlnQ0FDRUhJQVFvQW1BaENDTUFRUkJySWdJa0FDQUNJQWMyQWdnZ0FpQUdOZ0lNSUFNZ0FpZ0NEQ0FDS0FJSUVPb0hJZ05CMElZU05nSUVJQU5CK0lvU05nSUFJQU1nQ0RZQ0VDQURRZWlLRWpZQ0FDQUNRUkJxSkFBZ0l5QURFQ2dnQlNBRktBSVlRUUZxTmdJWURBSUxJQVFnQWtFQUlBVkJDVVliSWdJMkFtQWdBZ1JBSUFCQm12b0FJQVFvQXBnQ0VLa0VSUTBDSUFBb0FnQWlBaEFjSUFKQnFBRnFJZ1VoSkNBRkVLb0RJUU1nQkNnQ25BSWhCaUFBUVl3MGFpZ0NBQ0VISUFRb0FtQWhDQ01BUVJCcklnSWtBQ0FDSUFjMkFnZ2dBaUFHTmdJTUlBTWdBaWdDRENBQ0tBSUlFT29ISWdOQjZJWVNOZ0lFSUFOQm1Jc1NOZ0lBSUFNZ0NEWUNFQ0FEUVlpTEVqWUNBQ0FDUVJCcUpBQWdKQ0FERUNnZ0JTQUZLQUlZUVFGcU5nSVlEQUlMSUFWRkJFQkJBQ0FFUVlBQ2FpQUZHeUVGSUFBb0F2ZzVJQVFvQXB3Q1JnUkFJQVJCc0FKcUlnSkJvdG9LSUFSQm9BSnFJQUJCL0RscUtBSUFFQlFpQ1JBMUlBUkJ3QUpxSWdZZ0FrSHltZ2tRTFNBRVFUQnFJZ2NnQmlBRkVFNGdCRUhnQUdvaUNDQUhRZk9hQ1JBdElBQWdDQ0FFS0FLY0FrRVFhaEFuSUFnUUR4b2dCeEFQR2lBR0VBOGFJQUlRRHhvZ0NSQVBHaUFBUVlRNmFpZ0NBQ0lHUlEwRElBUkNnSUNBZ0lBQk53SlVJQVFnQkVFd2FqWUNVQ0FBUVlBNmFpZ0NBQ0lDSUFaQkFuUnFJUU1EUUNBQ0lBTkdCRUFnQkVIZ0FHb1FTU0VDUVFBaEF5QUZLQUlBSVFZZ0JDQUVLQUtFQWlBRUxRQ0xBaUlISUFkQkdIUkJHSFZCQUVnaUJ4czJBaXdnQkNBR0lBVWdCeHMyQWlnZ0JFRUFOZ0lrSUFSQjNQZ01OZ0lnSUFRZ0JDa0RLRGNER0NBRUlBUW9BbGcyQWhBZ0JDa0NVQ0VuSUFRZ0JDa0RJRGNEQUNBRUlDYzNBd2dnQkVFWWFpQUVRUWhxSUFJZ0JCRFdEeUFFUWNBQ2FpSUZJQUpCREdvUVFpQUFJQVVnQkNnQ25BSkJFR29RaGdFZ0JSQVBHaUFDRUZFZ0JFRXdhaEFqREFVTElBUWdBaWdDQUNJR05nSmdJQVl0QUFCQjN3QkhCRUFnQkVFd2FpQUVRZUFBYWhBa0N5QUNRUVJxSVFJTUFBc0FDeUFFUVRCcUlnSkJrNHNKSUFVUXhBRWdCRUhnQUdvaUJTQUNRZk9hQ1JBdElBQWdCU0FFS0FLY0FrRVFhaEFuSUFVUUR4b2dBaEFQR2d3Q0N5QUVRZUFBYWtHM213VkJtUmxCQ0NBQUtBSUVFQmNpQmtFWWFpSUNRZTYvQ3hBT0dpQUNRZG4zQ3hBT0dpQUVRVEJxSWdVZ0JFR0FBbW9nQUNnQ0JCRGRIaUFDSUFVUUVob2dCUkFQR2lBR0VCZ01BUXRCQUNFREN5QUVRWUFDYWhEUkVDQUVRZEFDYWlRQUlBTU1BUXNnQkJDckNRUkFJd0JCd0FGcklnUWtBQ0FFSUFJMkFod2dCQ0FBTmdJUUlBUWdCRUVjYWpZQ0ZBSi9Ba0FnQWtVRVFDQUVRUkJxRVBnZERBRUxJQVFDZndKQUlBSW9BZ1FpQTBHdyt3OUdCRUFDUUFKQUFrQWdBaWdDTUE0REJBQUJBZ3NnQUNnQ0FCRFVBZ3dFQ3lBQUtBSUFFTmNHREFNTElBUkJJR3BCdDVzRlFiVVhRUWdnQUNnQ0JCQVhJZ05CR0dvaUJVSHV2d3NRRGhvZ0JVR04zZ3NRRGhvZ0EwRVFhaUFDS0FJd0VPd1hJQU1RR0F3REN5QURRYmo5RDBZRVFBSkFBa0FDUUFKQUlBSW9BakFPQXdBQkFnTUxJQUFvQWdBUXFBUU1CUXNnQUNnQ0FCRGtBUXdFQ3lBQVFhd2RhaUFDUVJCcUVJb1FSUTBFSUFBb0FnQVE5UVVNQXdzZ0JFRWdha0czbXdWQnhCZEJDQ0FBS0FJRUVCY2lBMEVZYWlJRlFlNi9DeEFPR2lBRlFlemRDeEFPR2lBRFFSQnFJQUlvQWpBUTVCVWdBeEFZREFNTElBTkIrUHdQUmdSQUlBQW9BZ0FRcWdrTUFnc2dCRUVRYWhENEhRd0NDeUFBS0FJQUVLY0pDeUlGTmdJWUlBVkZEUUFnQkVFQU5nSVFJQVJCQVRZQ0RDQUVJQVFvQWh3MkFpQUNRQ0FBUWFRNGFpQUVRU0JxRVBZRkJFQWdCRUVBTmdJTURBRUxJQVJCSUdvaEJ5QUFRUWhxSVFZZ0JDZ0NIQ0VESXdCQkVHc2lBaVFBQWtBZ0EwVUVRQ0FIUVFBNkFBUU1BUXNnQTBFUWFpRUlBa0FDUUNBREtBSUVJZ2xCK1B3UFJnUkFJQUpCQ0dvZ0JpQUZJQU10QUNRUWlBRU1BUXNnQ1VHdyt3OUdCRUFDUUFKQUFrQUNRQ0FES0FJd0RnTUFBUUlEQ3lBQ1FRaHFJQVlnQlNBREtRTW9FUDBCREFRTElBSkJDR29nQmlBRklBTW9BaWdRc1FFTUF3c2dBa0VJYWlBR0lBVWdBeWdDS0JDdEFRd0NDeUFDUVFFNkFBd2dBa0VBTmdJSURBRUxJQWxCdVAwUFJ3MEJBa0FDUUFKQUFrQWdBeWdDTUE0REFBRUNBd3NnQWtFSWFpQUdJQWdnQlNBREt3TW9FSE1NQXdzZ0FrRUlhaUFHSUFnZ0JTQURLd01vdGhCckRBSUxJQUpCQ0dvZ0JpQUlJQVVnQXlzREtMWVFSaEJ5REFFTElBSkJBVG9BRENBQ1FRQTJBZ2dMSUFjZ0Fpa0RDRGNDQUF3QkN5QUhRUUE2QUFRTElBSkJFR29rQUNBSEVDdEZEUUVnQkNBRVFTQnFFQm9vQWdBMkFoQUxJQUFvQWdBaEFpQUVRUUE2QUNBZ0FpQUVRUnhxSUFSQkdHb2dCRUVNYWlBQVFZdzBhaUFFUVJCcUlBUkJJR29RMUJBTUFRdEJBQXNoQWlBRVFjQUJhaVFBSUFJTUFRc2dCRUhBZ0JKR0JFQkJBQ0VFSXdCQm9BRnJJZ01rQUNBRElBSTJBaVFnQXlBQVFhZ2RhaUFDS0FJa0VLb0VJZ1UyQWlBZ0JRUkFBa0FnQXlBRktBSVVJZ2NRaEFFaUJqWUNIQ0FESUFVb0FoQTJBaGdnQTBFQU5nSVVJQU1nQlMwQUtEb0FFeUFBSUFJb0FpZ1FNeG9nQXlBQU5nSUFJQU1nQTBFa2FqWUNDQ0FESUFOQkhHbzJBZ1FnQmtVRVFDQURFUFFkREFFTElBWW9BZ1FpQWhEbUF3UkFJQU5COEFCcUlBTW9BaVFvQWloQkpHb1FWaUVJSUFZb0FrUWlBaUFHS0FKSVFRSjBhaUVHQW44Q1FBSkFBMEFnQWlBR1JnMEJJQU5CS0dvZ0FpZ0NBQ0lFUVFocUVGWWdDQkMyQWlFSklBSkJCR29oQWlBSlJRMEFDeUFESUFRMkFtQWdCQTBCQ3lBRFFaQUJhaUlDSUFnUVV5QURRY2dBYWlJRVFiUDlDU0FDRURVZ0EwRW9haUlGSUFSQjlPVUVFQzBnQUNBRklBTW9BaVJCRUdvUUp5QUZFQThhSUFRUUR4b2dBaEFQR2tFQURBRUxJQU1nQkNnQ0tEWUNGQ0FIS0FJRVFiaXRFa1lFUUNBQUtBSUFJUUlnQXlBSEtBSWNOZ0lvSUFNZ0J5Z0NJRFlDU0NBRElBSWdBMEVVYWlBRFFTaHFJQU5CeUFCcUVLMEpOZ0lVQ3lBRFFTaHFJUUlnQlNnQ0hDSUZCSDhnQlNBRUtBSXNJQVVvQWdBb0Fnd1JBUUFGUVFBTElRUWdBa0VCT2dBRUlBSWdCRFlDQUVFQUlBSVFNQTBBR2lBQUtBSUFJUUlnQTBFb2FoQWFJUVFnQWhBY0lBSkJxQUZxSWdVaEpTQUZFTXNFSVFZZ0F5Z0NKQ0VISUFNb0FoUWhDQ0FBUVl3MGFpZ0NBQ0VKSUFRb0FnQWhEQ0FES0FJZ0lRUWdBeWdDWUNFTElBTXRBQk1oRFNBREtBSVlJUThqQUVFZ2F5SUNKQUFnQWlBSU5nSVlJQUlnQnpZQ0hDQUNJQWsyQWhRZ0FpQU1OZ0lRSUFJZ0RUb0FDeUFDSUE4MkFnUWdBaUFFTmdJTUlBSWdCQ2dDR0RZQ0FDQUdJQUlvQWh3Z0FpZ0NHQ0FDS0FJQUlBSW9BaFFnQWlnQ0VDQUNLQUlNSUFJdEFBc2dBaWdDQkJDQkhDSUVRYUNXRWpZQ0JDQUVRWmlYRWpZQ0FDQUVJQXMyQWpBZ0JFSG9saEkyQWdBZ0FrRWdhaVFBSUNVZ0JDSUNFQ2dnQlNBRktBSVlRUUZxTmdJWUlBSUxJUVFNQVFzZ0FoQ1JBd1JBSUFOQmtBRnFJZ1FnQXlnQ0pDZ0NLRUVrYWhCVElBTW9BcFFCSVFnZ0F5MEFtd0VoQWlBRFFvQ0FnSURBQURjQ2hBRWdBeUFEUWZBQWFpSUpOZ0tBQVNBSklBZ2dBaUFDUVJoMFFSaDFRUUJJR3lJSUVQd0xJQU1vQXBBQklBUWdBeTBBbXdFaUJFRVlkRUVZZFVFQVNDSUpHeUlDSUFNb0FwUUJJQVFnQ1J0cUlRUWdBMEdBQVdvaERBSi9Ba0FEUUNBQ0lBUkdEUUVDUUFKQUFrQUNRQUpBQWtBQ1FDQUNMQUFBSWdsQjhnQnJEZ2tGQkFRRUJBTUZBUUlBQ3lBSlFlRUFhdzRIQWdFREF3TURBQU1MSUFOQkFUWUNLQXdFQ3lBRFFRSTJBaWdNQXdzZ0EwRUROZ0lvREFJTElBTkI0QUJxUWJua0FSQVVJUVFnQXlnQ0pDZ0NLQ0lDS1FJUUlTY2dBeUFDS0FJZ05nSllJQU1nSnpjRFVDQURJQ2MzQTBnZ0F5Z0NWQ0VGSUFNMUFsQWhKeUFEUVNocUlnSWdBelVDU0NBREtBS0VBU0lHSUFNb0FreHFyVUlnaG9RM0FnQWdBaUFuSUFVZ0JtcXRRaUNHaERjQ0NDQUNJQU1vQWxnMkFoQWdBQ0FFSUFJUUp5QUVFQThhUVFBTUJBc2dBMEVBTmdJb0N5QURRZkFBYWlBRFFTaHFFS2NFSUFKQkFXb2hBaUFES0FLQUFTQURLQUtFQVVFQ2RHcEJCR3NvQWdBZ0JpZ0NIRWtOQUFzZ0FDQURRU2hxUWFUOUFSQVVJZ0lnQXlnQ0pDZ0NLRUVRYWhBbklBSVFEeHBCQUF3QkN5QUlRUVZyUVh0TkJFQWdBQ0FEUVNocVFhUEZBeEFVSWdJZ0F5Z0NKQ2dDS0VFUWFoQW5JQUlRRHhwQkFBd0JDeUFES0FLUUFTQURRWkFCYWlBRExRQ2JBU0lDUVJoMFFSaDFRUUJJSWdrYklnUWdBeWdDbEFFZ0FpQUpHMm9oQ1NBRUlRSUNRQU5BSUFJZ0NVWU5BU0FDTFFBQVFlRUFheUlMUVJGTFFRRWdDM1JCdzRBSWNVVnlSUVJBSUFKQkFXb2hBZ3dCQ3dzRFFDQUVJQWxHRFFFZ0JDMEFBQ0VDSUFSQkFXb2hCQ0FDUWZjQWEwSC9BWEZCQkVrTkFBc2dBQ0FEUVNocVFkd25FQlFpQWlBREtBSWtLQUlvUVJCcUVDY2dBaEFQR2tFQURBRUxJQU1nQlRZQ1lBSkFJQWhCQVVZRVFDQURJQVlvQWhnaUFqWUNGQ0FIS0FJRVFiaXRFa2NOQVNBQUtBSUFJUUlnQXlBSEtBSWNOZ0lvSUFNZ0J5Z0NJRFlDU0NBRElBSWdBMEVVYWlBRFFTaHFJQU5CeUFCcUVLMEpJZ0kyQWhRTUFRc2dBQ2dDQUNFQ0lBTWdCaWdDR0RZQ0tDQURJQWcyQWtnZ0F5QUNJQU5CS0dvZ0EwSElBR29RbndJaUFqWUNGQ0FESUFBZ0JSRGpBallDWUFzZ0EwRUFPZ0JNSUFNZ0REWUNTQ0FEUVNocUlRY2pBRUV3YXlJRUpBQUNRQ0FGS0FJY0lnVkZCRUFnQjBFQk9nQUVJQWRCQURZQ0FBd0JDeUFES0FKSUlnZ29BZ1FpQ1VFQlJnUkFJQVVnQ0NnQ0FDZ0NBQ0FGS0FJQUtBSU1FUUVBSVFJZ0IwRUJPZ0FFSUFjZ0FqWUNBQXdCQ3lBRVFvQ0FnSURBQURjQ0pDQUVJQVJCRUdvaUJqWUNJQ0FHSUFrUTFnSWdCRUVnYWlFTVFRQWhCZ05BSUFZZ0NVY0VRQ0FFSUFVZ0NDZ0NBQ0FHUVFKMGFpZ0NBQ0FGS0FJQUtBSU1FUUVBTmdJc0lBWkJBV29oQmlBRVFSQnFJQVJCTEdvUWNRd0JDd3NnQUNnQ0NDRUZJQVFnRERZQ0NDQUVJQVJCRUdvaUJpQUVLQUlnUnpvQURDQUZJQUlnQkVFSWFoQTZJUUlnQjBFQk9nQUVJQWNnQWpZQ0FDQUdFRjRMSUFSQk1Hb2tBRUVBSUFjUU1BMEFHaUFBS0FJQUlRSWdBMEVvYWhBYUlRZ2dBaEFjSXdCQkVHc2lCU1FBSUFKQnFBRnFJZ1lvQWdRaEJBSkFJQVlvQWdoQkIycEJlSEVpQjBHeC93TnJRZjcvZTBzRVFDQUVJUUlNQVFzZ0JrR1FnQVJCRUJEWkFpSUNOZ0lFUVFBaEJ5QUNRUUEyQW9DQUJDQUVCRUFnQkNBQ05nS0FnQVFNQVFzZ0JpQUNOZ0lBQ3lBR0lBZEIwQUJxTmdJSUlBSWdCMm9oQnlBREtBSmdJUVFnQ0NnQ0FDRUlJQUJCakRScUtBSUFJUWtnQXlnQ0ZDRU1JQU1vQWlRaEN5QUZJQU5COEFCcUlnSkJFR28yQWdnZ0JTQUNLQUlRSUFKSE9nQU1JQU10QUJNaERTQURLQUlZSVE4akFFRWdheUlDSkFBZ0FpQU1OZ0lZSUFJZ0N6WUNIQ0FDSUFrMkFoUWdBaUFJTmdJUUlBSWdEVG9BQ3lBQ0lBODJBZ1FnQWlBRU5nSU1JQUlnQkNnQ0dEWUNBQ0FISUFJb0Fod2dBaWdDR0NBQ0tBSUFJQUlvQWhRZ0FpZ0NFQ0FDS0FJTUlBSXRBQXNnQWlnQ0JCQ0JIQ0lFUWJpV0VqWUNCQ0FFUWFpWEVqWUNBQ0FFUWZpV0VqWUNBQ0FFUVRCcUlnZENnSUNBZ01BQU53SVVJQWNnQnpZQ0VDQUhJQVZCQ0dvUXN4MGdBa0VnYWlRQUlBWWdCQ0lDRUNnZ0JpQUdLQUlZUVFGcU5nSVlJQVZCRUdva0FDQUNDeUVFSUFOQjhBQnFFRjRnQTBHUUFXb1FEeG9NQVFzZ0F4RDBIUXNMSUFOQm9BRnFKQUFnQkF3QkN5QUVRWUNCRWtZRVFDTUFRZUFBYXlJRUpBQWdCQ0FDTmdKY0FrQUNRQ0FBUWFnZGFpSUdJQUlvQWlnUXFnUWlBMFVOQUNBREtBSVVJUVVnQkVFQU5nSlVJQVJCQURZQ1VDQUVRUU0yQWt3Q1FBSkFBa0FDUUNBQ0tBSWtJZ2NPQXdBQ0FRSUxBa0FnQlVVZ0JTZ0NCRUc0clJKSGNrVUVRQ0FGS0FJWUVJUUJFSzBiQkVBZ0FDQUVRVEJxUVkzYUJCQVVJZ01nQWlnQ0tFRVFhaEFuSUFNUUR4b01CZ3NnQWlnQ0tDSUhLQUlFSVFnQ1FDQUhSU0FJUWNEL0VVZHlSUVJBSUFZZ0J5Z0NKQkNuQlJDRUFSQzBBdzBCQ3lBSFFRQWdDRUhBZ0JKR0d5SUhSUTBDSUFZZ0J5Z0NKQkNuQlJDRUFSQzBBMFVOQWdzZ0FDQUVRVEJxUWZ2RkFCQVVJZ01nQWlnQ0tFRVFhaEFuSUFNUUR4b01CUXNnQUNBRVFUQnFRWlBuQWhBVUlnTWdBaWdDS0VFUWFoQW5JQU1RRHhvTUJBc2dBQ2dDQUNFQ0lBUWdCU2dDR0RZQ01DQUVJQVVvQWh3MkFoZ2dCQ0FGS0FJZ05nSkFJQVFnQWlBRVFUQnFJQVJCR0dvZ0JFRkFheENTRVRZQ1dDQUVJQU1vQWhBMkFsUU1BZ3NnQlNnQ0JFSFlyQkpHUVFBZ0JSdEZCRUFnQkVGQWF5SURJQVlnQlJDbkFTQUVRUmhxSWdWQmhKVUpJQU1RTlNBRVFUQnFJZ1lnQlVIem1na1FMU0FBSUFZZ0FpZ0NLRUVRYWhBbklBWVFEeG9nQlJBUEdpQURFQThhREFNTElBQW9BZ0FoQWlBRUlBVW9BaGcyQWpBZ0JDQUZLQUljTmdJWUlBUWdCU2dDSURZQ1FDQUVJQUlnQkVFd2FpQUVRUmhxSUFSQlFHc1FyUWsyQWxnZ0JDQURLQUlRTmdKVURBRUxJQVJCTUdvZ0FDZ0NFQ0lHSUFjZ0JTQURLQUlZSUFKQkVHb2dCaWdDQUNnQ0RCRUtBQ0FFS0FJd0lnWkZEUUVnQkNBR05nSllJQVFvQWpRUWdRd0VRQ0FBSUFNZ0JDZ0NOQkNXQWlJRFJRMENDeUFBSUFNUTR3SWlBMFVOQVNBRUlBTW9BaGdpQWpZQ1RDQUNRUUZIRFFBZ0JDZ0NQQ0lGUVFGeElnZ2dCQ2dDT0NJQ2NnUkFJQUFnQlVFQmRXcEJDR29oQnlBSUJFQWdCeWdDQUNBQ2FpZ0NBQ0VDQ3lBREtBSWNJUVVnQkVFQk5nSVVJQVFnQlRZQ0RDQUVJQVJCREdvMkFoQWdCQ0FFS1FNUU53TUFJQVFnQkVFWWFpQUVFSmNDSWdWQkJHbzJBaWdnQkNBRklBVW9BZ1JIT2dBc0lBUkJRR3NpQ0NBSElBWWdCRUVvYWlBREtBSUlRUkJxSUFJUkNBQWdCUkNvQVNBSUVDdEZEUUlnQkNBRVFVQnJFQm9vQWdBMkFsQU1BUXNnQkVFRE5nSk1DeUFBS0FJQUlRSWdCQ0FETFFBb09nQXdJQUlRSENBQ1FhZ0JhaUlGSUFVUTh3VWdCQ2dDWENBRUtBSllJQVFvQWt3Z0FFR01OR29vQWdBZ0JDZ0NVQ0FFTFFBd0lBUW9BbFFRbkFVaUFoQW9JQVVnQlNnQ0dFRUJhallDR0NBQ0lBTXBBeUEzQXlBTUFRdEJBQ0VDQ3lBRVFlQUFhaVFBSUFJTUFRc2dCRUhvZ3hKSERRTWdDaUFBS0FJQUlnSVFoQXcyQWhBZ0NrRUROZ0xBQWlBS1FRQTJBdEFDSUFwQkFEb0E2QUlnQWhBY0lBSkJxQUZxSWdJZ0FoRHpCU0FLS0FJc0lBb29BaEFnQ2lnQ3dBSWdHU2dDQUVFQUlBb3RBT2dDUVFBUW5BVWlCQkFvSUFJZ0FpZ0NHRUVCYWpZQ0dDQUVDeUVFUVFBaEFpQUVSUTBFQWtBZ0JCRFpFQ0lGUlEwQUlBQW9Bc1FySWdORkRRQWdBQ2dDd0NzaEJpQUtJQU0yQWlBZ0NpQURFTndCTmdJa0lBb2dDaWtESURjRENDQUtRUWhxSVFrakFFSHdBR3NpQXlRQUFrQWdCU2dDR0NJSFJTQUdJQWRPY2cwQUlBTkJNR29pQ0NBRFFTQnFJQWtRK1FjaUQwR1U0QWtRTFNBRFFSQnFJZ2tnQmhDNEhDQURRVUJySWd3Z0NDQUpFRTRnQTBIUUFHb2lDeUFNUWVqY0NSQXRJQU1nQlNnQ0dCQzRIQ0FEUWVBQWFpSU5JQXNnQXhCT0lCWWdEU0FGS0FJSVFSQnFFQ2NnRFJBUEdpQURFQThhSUFzUUR4b2dEQkFQR2lBSkVBOGFJQWdRRHhvZ0R4QVBHaUFGS0FJTUlnaEZEUUFnQ0NnQ0NDSUlSUTBBSUFnb0FnUkJ1UElQUncwQUlBZ29BaVFvQWdSQm9Qa1JSdzBBSUJZZ0EwSGdBR3BCbjRBSkVCUWlDU0FJUVJCcUVJWUJJQWtRRHhvTElBTkI4QUJxSkFBZ0IwVWdCaUFIVG5KRkRRVUxJQUFvQWdBaUFoQWNJQUpCNUFGcUlBb29BaXdnQkJDNUFTQUVJUUlnQ2lnQ0xDSUVJQUZHRFFRZ0JVVU5BQ0FGS0FJY1JRMEFJQXBCQURZQ0dDQUtJQVEyQWhRZ0NpQVZOZ0lRSUFvZ0FDZ0NvRGhCQVdzMkFod2dDa0VRYWhDQ0RFVU5BQ0FGS0FJY0VQb0JJUUlnQ2tFUWFoQ0NEQ0VFQWtBZ0FrVUVRQ0FFS0FJQUtBSWtRUVJHRFFFTElBSkJBWE1nQ2tFUWFoQ0NEQ2dDQUNnQ0pFRUZSM0lOQVFzZ0NrRVFhaENDRENFQ0lBQW9BZ1FoQlNBQ0tBSUFLQUlzSVFRZ0NrS0FnSUNBZ0FRM0F2UUVJQW9nQ2tId0Ftb2lBallDOEFRZ0FrRUJFSkFNSUFvZ0NpZ0M5QVFpQTBFQmFqWUM5QVFnQ2lnQzhBUWdBMEVEZEdvaUEwRUFOZ0lFSUFNZ0JEWUNBQ0FLSUFJMkF1Z0NJQW9nQWpZQzRBSURRQUpBSUFvb0F2UUVJZ0lFUUNBS0lBSkJBV3NpQWpZQzlBUWdDaWdDOEFRZ0FrRURkR29pQWlnQ0JDRURJQW9nQWlnQ0FDSUNOZ0xjQWlBQ0VKTUlJZ0lFUUNBS0lBSTJBc0FDSXdCQkVHc2lBaVFBSUFKQkNHb2dHQ0FLUWNBQ2FoQ2hIU0FDS0FJSUdpQUNRUkJxSkFBTElBb29BdHdDSVFJZ0NpQUZOZ0xVQWlBS0lBcEIzQUpxTmdMUUFpQUNSUTBCSUFJb0FnUWlCRUhBL3hGR0JFQWdDa0hnQW1vZ0FpZ0NKQ0FDS0FJb0lBTkJBV29RalF3TUF3c2dCRUdBZ0JKR0JFQWdDa0hnQW1vZ0FpZ0NLQ0FDS0FJc0lBTkJBV29RalF3TUF3c2dCRUhBL2hGR0JFQWdDa0hvQW1vZ0FpZ0NLQ0FEUVFGcUVLMEZEQU1MSUFSQnVPNFBSZ1JBSUFJb0FrZ2lCaUFDS0FKTVFRSjBhaUVFSUFOQkFXb2hBZ05BSUFRZ0JrWU5CQ0FFUVFScklnUW9BZ0FoQXlBS0lBSTJBc1FDSUFvZ0F6WUN3QUlnQ2tId0Ftb2dDa0hBQW1vUStRVU1BQXNBQ3lBRVFjQ0FFa1lFUUNBS1FlZ0NhaUFDS0FJa0lBTkJBV29RclFVTUF3c2dCRUdBZ1JKSERRRWdDa0hvQW1vZ0FpZ0NLQ0FEUVFGcUVLMEZEQUlMSUFwQkFEWUM5QVFnQ2tId0Ftb2dDaWdDOEFRUU5nd0NDeUFLUWRBQ2FoQ09EQTBBQ3d0QkFDRUNJQXBCQURZQzlBUWdDa0h3QW1vZ0NpZ0M4QVFRTmd3REN5QUtRZkFDYWtHM213VkJoZ3hCQ0NBQUtBSUVFQmNpQUVFWWFrSGN5d1FRRGhvZ0FCQVlEQUVMSUFwQjhBSnFFSkllQzBFQUlRSUxJQXBCTUdvUWt3VWdDa0dBQldva0FDQUNDKzBFQWdwL0FuMGpBRUVRYXlJSkpBQWpBRUVRYXlJR0pBQWdBaWdDQUJEREF5RUVJQWtDZndKQUlBRW9BZ1FpQTBVTkFDQUJLQUlBQW44Z0EwRUJheUFFY1NBRGFTSUlRUUZORFFBYUlBUWdBeUFFU3cwQUdpQUVJQU53Q3lJSFFRSjBhaWdDQUNJRlJRMEFJQU5CQVdzaENpQUNLQUlBSVFzZ0NFRUJTeUVNQTBBZ0JTZ0NBQ0lGUlEwQklBUWdCU2dDQkNJSVJ3UkFBa0FnREVVRVFDQUlJQXB4SVFnTUFRc2dBeUFJU3cwQUlBZ2dBM0FoQ0FzZ0J5QUlSdzBDQ3lBRktBSUlJQXRIRFFBTFFRQU1BUXNnQmlBQklBUWdBaERERUFKQVFRQWdBeUFCS0FJTVFRRnFzeUlOSUFFcUFoQWlEaUFEczVSZUd3MEFJQUVnQXlBRFFRRnJjVUVBUnlBRFFRTkpjaUFEUVFGMGNpSUNBbjhnRFNBT2xZMGlEVU1BQUlCUFhTQU5Rd0FBQUFCZ2NRUkFJQTJwREFFTFFRQUxJZ2NnQWlBSFN4c1F3d0VnQVNnQ0JDSURJQU5CQVd0eFJRUkFJQU5CQVdzZ0JIRWhCd3dCQ3lBRElBUkxCRUFnQkNFSERBRUxJQVFnQTNBaEJ3c0NRQ0FIUVFKMElnUWdBU2dDQUdvb0FnQWlBa1VFUUNBR0tBSUFJQUVvQWdnMkFnQWdBU0FHS0FJQU5nSUlJQUVvQWdBZ0JHb2dBVUVJYWpZQ0FDQUdLQUlBSWdJb0FnQWlCRVVOQVNBRUtBSUVJUVVDUUNBRElBTkJBV3NpQkhGRkJFQWdCQ0FGY1NFRkRBRUxJQU1nQlVzTkFDQUZJQU53SVFVTElBRW9BZ0FnQlVFQ2RHb2dBallDQUF3QkN5QUdLQUlBSUFJb0FnQTJBZ0FnQWlBR0tBSUFOZ0lBQ3lBR0tBSUFJUVVnQmtFQU5nSUFJQUVnQVNnQ0RFRUJhallDRENBR0VJc0JRUUVMT2dBTUlBa2dCVFlDQ0NBR1FSQnFKQUFnQUNBSktBSUlOZ0lBSUFBZ0NTMEFERG9BQkNBSlFSQnFKQUFMUFFFRGZ5QUJLQUlvSWdJZ0FTZ0NMRUVDZEdvaEFRTkFJQUVnQWtZaUEwVUVRQ0FDS0FJQUlRUWdBa0VFYWlFQ0lBQWdCQkNxQlEwQkN3c2dBd3N6QVFGL0l3QkJFR3NpQXlRQUlBQW9BZ0FoQUNBRElBSTJBZ3dnQXlBQk5nSUlJQUFnQTBFSWFoRDVCU0FEUVJCcUpBQUxUQUVCZnlBQUtBSUlJZ0lnQUNnQ0RFOEVRQ0FBSUFBb0Fnd2lBa0VCZEVFQ0lBSWJFUEFRSUFBb0FnZ2hBZ3NnQUNBQ1FRRnFOZ0lJSUFBb0FnUWdBa0VDZEdvZ0FTZ0NBRFlDQUFzVUFDQUFRVHhxRUpVQklBQkJCR29Rc0FRZ0FBc0tBQ0FBUWZDRkVCQklDMHdCQVg4Z0FDZ0NSQ0lDSUFBb0FraFBCRUFnQUNBQUtBSklJZ0pCQVhSQkFpQUNHeEN4QkNBQUtBSkVJUUlMSUFBZ0FrRUJhallDUkNBQUtBSkFJQUpCQTNScUlBRXBBZ0EzQWdBTEtBQWdBRUVBTmdMMEFTQUFRUXdROHdRZ0FFRUFOZ0w4QVNBQUlBQW9Bb0FDUVFGcU5nS0FBZ3NTQUNBQVFlUUFRWjMvQTBGOFFRTVF5Z0VMVEFFQmZ5QUFLQUlFSWdJZ0FDZ0NDRThFUUNBQUlBQW9BZ2dpQWtFQmRFRUNJQUliRUtvU0lBQW9BZ1FoQWdzZ0FDQUNRUUZxTmdJRUlBQW9BZ0FnQWtFQ2RHb2dBU2dDQURZQ0FBc1RBQ0FBRUJ3Z0FFSEVBV29nQVNBQ0VLMFJDeDBBSUFFZ0FqWUNBQ0FCSUFBcEFnUTNBZ1FnQVNBQUtRSU1Od0lNQ3lVQkFYOUJGQkFWSWdJZ0FUWUNBQ0FDSUFBcEFnUTNBZ1FnQWlBQUtRSU1Od0lNSUFJTER3QWdBQ0FBS0FJQUtBSWtFUUFBQ3hFQUlBQWdBU0FCS0FJQUtBSWdFUUlBQ3hFQUlBQWdBU0FCS0FJQUtBSXNFUUlBQ3djQUlBQVFkQm9MRXdBZ0FDQUJRUUFnQUNnQ0FDZ0NKQkVFQUFzNUFRRi9Jd0JCRUdzaUFTUUFJQUZCQ0dvZ0FCQ1BBaUFBS0FJRUlBQXRBQXNRbUFGQkFuUnFFSUFES0FJQUlRQWdBVUVRYWlRQUlBQUxMUUVCZnlNQVFSQnJJZ0VrQUNBQlFRaHFJQUFRd1FNZ0FCQTdhaENBQXlnQ0FDRUFJQUZCRUdva0FDQUFDeFlBSUFBZ0FTQUNJQU1nQUNnQ0FDZ0NJQkVIQUJvTENRQWdBQ0FCT2dBTEN3NEFJQUFRdWhRRVFDQUFFQjhMQ3hBQUlBQkJJRVlnQUVFSmEwRUZTWElMa1FFQkFuOGdBQ0FCRUxvQklnRUVRQUpBSUFFdkFSNGlCRUV5UnlBRVFTdEhjUTBBSUFBZ0FTZ0NKQkJRUlEwQUlBSUNmZ0pBQWtBQ1FDQUJLQUlFSUFFb0FnQWlBR3RCQW5WQkJHc09BZ0FDQVFzZ0FEVUNEQXdDQzBISzhRWkIrS3NDUWVNSlFhM3lCaEFBQUFzZ0FDa0NEQXMzQXdCQkFTRURDeUFERHd0Qi9xZ0pRZmlyQWtIV0NVR3Q4Z1lRQUFBTExRRUNmd0pBSUFBZ0FSQzZBU0lEUlEwQUlBTXZBUjVCRjBjTkFDQUFJQUFnQVJEQkFSQy9BaUVDQ3lBQ0Mwc0JBWDhnQVVFTWFpQUNFUGNXSWdJdkFRSWlBeUFDTHdFQUlnSnFJQUV2QVJ4TEJFQkIvNzhCUVo2cEFrRXlRWUxHQVJBQUFBc2dBQ0FCS0FJQUlBSkJBblJxSUFOQkFSQ1JEZ3NIQUNBQVFRUnFDdzBBSUFBZ0FVSFlrU0FRend3TDdnWUJCSDhqQUVIUUFtc2lCQ1FBSUFFdkFSNGhCU0FFUVpBQmFpQUFJQUlRM1FFZ0JDZ0NsQUVoQXlBRUxRQ1JBU0VHQWtBZ0FDQUJJQUlReWcwaUFnMEFRUUFoQWlBR1JRMEFBa0FDUUFKQUlBTkJBV3NPQlFFQ0FnSUFBZ3NnQUVHQUFXcEI0U2tRYUEwQ0lBUkJrQUZxSWdNZ0FFRnlJQUVRRUNBRElBVVFnUUVRRGhvZ0EwSHp2QWtRRGhvZ0EwSG04QVVRRGhvZ0JDZ0N6QUloQWlBREVCRU1BZ3NnQUVHQUFXb2lCa0hoS1JCb1JRMEFJQVpCNGlrUWFBMEFJQVJCa0FGcUlnTWdBRUZ5SUFFUUVDQURRYWkvQ2hBT0dpQURRYUFSRUE0YUlBUW9Bc3dDSVFJZ0F4QVJEQUVMSUFBb0FnQW9BZ0FRUjBVTkFDQURRUVpOUVFCQkFTQURkRUhlQUhFYlJRUkFJQVJCa0FGcUlnTWdBRUZ5SUFFUUVDQUVRWUFCYWlJQklBQkJuaVFRTnlBRElBRVFFaG9nQXlBRkVJRUJFQTRhSUFOQjJ1QUNFQTRhSUFRb0Fzd0NJUUlnQVJBUEdpQURFQkVNQVFzZ0FDZ0NBQ2dDQUVFQlJ5QURRUU5IY2tVRVFDQUFRWUFCYWlJRFFjY2lFR2dOQVNBRFFjOGlFR2dOQVNBRVFaQUJhaUlESUFCQmNpQUJFQkFnQkVHQUFXb2lBU0FBUWRVMkVEY2dBeUFCRUJJYUlBTWdCUkNCQVJBT0dpQURRZWYxQkJBT0dpQUVLQUxNQWlFQ0lBRVFEeG9nQXhBUkRBRUxBa0FDUUNBRFFRSnJEZ1VCQWdJQ0FBSUxJQVJCa0FGcUlnTWdBRUdnSkJBM0lBQWdBU2dDT0NnQ0FCQ2ZBU0VGSUFSQjJBQnFJQU1RVkNFQVFSQVFGU0lCUWFTUUlEWUNBQ0FCSUFBcEFnQTNBZ1FnQVNBQUtBSUlOZ0lNSUFBUVZTQUVJQUUyQW5nZ0JVR2dBMm9nQkVIb0FHb2lBUkROQVNBQkVCWWdBQkFQR2lBREVBOGFEQUVMSUFSQmtBRnFJZ01nQUVHWk9SQTNJQUFnQVNnQ09DZ0NBQkNmQVNFR0lBUkJNR29nQXhCVUlRTkJFQkFWSWdWQnlKQWdOZ0lBSUFVZ0F5a0NBRGNDQkNBRklBTW9BZ2cyQWd3Z0F4QlZJQVFnQlRZQ1VDQUdRYUFEYWlBRVFVQnJJZ1VRelFFZ0JSQVdJQU1RRHhvZ0FDZ0NsQU5CQVVZRVFDQUVRWUFCYWlJRElBQkJtRGtRTnlBRVFaQUJhaUlGSUFNUW5nRWdBeEFQR2lBQUlBRW9BamdvQWdBUW53RWhBeUFFUVFocUlBVVFWQ0VBUVJBUUZTSUJRZXlRSURZQ0FDQUJJQUFwQWdBM0FnUWdBU0FBS0FJSU5nSU1JQUFRVlNBRUlBRTJBaWdnQTBHZ0Eyb2dCRUVZYWlJQkVNMEJJQUVRRmlBQUVBOGFDeUFFUVpBQmFoQVBHZ3NnQkVIUUFtb2tBQ0FDQ3hzQUlBQWdBaUFCRUNBaUFDZ0NBRUVJYWlBQUtBSUVFSUFMR2d1WkFRRUJmeU1BUVNCcklnSWtBQ0FBSUFGSEJFQWdBQkRLQkNBQ0lBQW9BaGcyQWhnZ0FpQUFLUUlRTndNUUlBSWdBQ2tDQ0RjRENDQUNJQUFwQWdBM0F3QWdBQ0FCS0FJWU5nSVlJQUFnQVNrQ0VEY0NFQ0FBSUFFcEFnZzNBZ2dnQUNBQktRSUFOd0lBSUFFZ0FpZ0NHRFlDR0NBQklBSXBBeEEzQWhBZ0FTQUNLUU1JTndJSUlBRWdBaWtEQURjQ0FBc2dBa0VnYWlRQUMwZ0JBbjhqQUVFUWF5SUZKQUFnQlVFQU5nSU1JQUFvQWdBZ0FTQUNJQVZCREdvUXZRTWlCa1VFUUNBQUlBRWdBaUFESUFRZ0JTZ0NEQkQzRFNFR0N5QUZRUkJxSkFBZ0JndFVBUU4vUVFFaEFnSkFJQUFvQWhBaUF5QUJLQUlRSWdSSURRQWdBeUFFU2dSQVFRQVBDeUFBS0FJQUlnTWdBU2dDQUNJRVNRMEFRUUFoQWlBRElBUkxEUUFnQUVFRWFpQUJRUVJxRVB3TklRSUxJQUlMR2dFQmZ5QUFMd0VlUVF4R0JIOGdBQ2dDSUJDd0J3VkJBQXNMSXdBZ0FFSEVBR29RTWhvZ0FFRTRhaEF5R2lBQVFSeHFFRElhSUFCQkVHb1FNaG9MTXdFQmZ5QUJRWUNBZ0lBRVR3UkFFQUVBQ3lBQUlBRVFsd01pQWpZQ0FDQUFJQUkyQWdRZ0FDQUNJQUZCQW5ScU5nSUlDMFFCQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lNQWtBZ0FTQURRUXhxRU93QklnRkZCRUFnQUNBREtBSU1FSXdFREFFTElBQWdBVUVNYWhCVUdnc2dBMEVRYWlRQUN4QUFJQUJCQjBZZ0FFRjljVUVJUm5JTFBnQWdBQkRPQVNJQUlBRW9BZ2cyQXBBQklBQWdBU2tDQURjQ2lBRWdBRUdZQVdvZ0FoRFJBUm9nQUVHd0FXb2dBeEJVR2lBQUlBUTJBcndCSUFBTFlBRUNmeU1BUVRCcklnTWtBQ0FEUWdBM0F5QWdBeUFCS0FJd05nSW9JQUVvQWhBaEJDQURRUkJxUWR6NERCQVVJUUVnQXlBREtBSW9OZ0lJSUFNZ0F5a0RJRGNEQUNBQUlBTWdCQ0FCSUFJUTBnVWFJQUVRRHhvZ0EwRXdhaVFBQzBNQkFYOGdBRUVFYWlFQUlBRW9BZ0FoQVFOL0lBQW9BZ0FpQUVVRVFFRUFEd3NnQVNBQUtBSVFJZ0pKRFFBZ0FTQUNUUVIvUVFFRklBQkJCR29oQUF3QkN3c0xtZ0VCQkg4akFFRVFheUlFSkFBakFFRVFheUlESkFBZ0JDQUJJQU5CREdvZ0FoQ3RCaUlHS0FJQUlnVUVmMEVBQlVFVUVCVWhCU0FESUFGQkJHbzJBZ1FnQlNBQ0tBSUFOZ0lRSUFOQkFUb0FDQ0FCSUFNb0Fnd2dCaUFGRVBnQ0lBTkJBRFlDQUNBREVJc0JRUUVMT2dBTUlBUWdCVFlDQ0NBRFFSQnFKQUFnQUNBRUtBSUlOZ0lBSUFBZ0JDMEFERG9BQkNBRVFSQnFKQUFMQndBZ0FFRUlhZ3NWQUNBQVFiamtFallDQUNBQVFRUnFFS1FDSUFBTElnRUJmeU1BUVJCcklnSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDQUNLQUlJUmdzSkFDQUFRVFFRdnhJTEZnQWdBQ2dDQUFSQUlBQVE5QmdnQUNnQ0FCQWZDd3VuRlFJT2Z3SjlJd0JCZ0FOcklnTWtBQ0FESUFJMkF2d0NBa0FnQVMwQWxBTkZCRUFnQUJCbkdnd0JDeUFDSUFFb0F1Z05SZ1JBSUFOQm9BRnFJQUVnQVVIMERXb29BZ0FRMndVZ0EwSHdBbW9nQVNBQlFmZ05haWdDQUJEYkJTQURRZWdDYWlBQklBRkIvQTFxS0FJQUVOc0ZJQUZCa0FOcUlBTW9BcUFCUVFNUS93SWhBaUFEUVFBMkFwQUJJQU5DQURjRGlBRWdBMElBTndPQUFTQUNJQUZCSUdvaUFSRDZDQ0VFSUFOQkF6WUMzQUlnQXlBRU5nTGdBaUFESUFOQjRBRnFOZ0xZQWlBRElBTXBBOWdDTndNQUlBTWdBeWdDcEFFMkF1QUJJQU1nQXlnQzlBSTJBdVFCSUFNZ0F5Z0M3QUkyQXVnQklBQWdBaUFCSUFOQmdBRnFJQU5CNEFKcUlBTkJzQUZxSUFNUThnWWlBQkRRR1JCcEdpQUFFS3dEREFFTElBSWdBVUgwRFdvb0FnQkdCRUFnQTBFQU5nTFFBaUFEUWdBM0E4Z0NJQU5DQURjRHdBSWdBU0FCUWZBTmFpSUNLQUlBUVFBUWhRRWhCQ0FCS0FLNEJTRUdJQUVvQXJ3RklBSW9BZ0FRNlFFaEFpQUJRWUFPYWlnQ0FDRUZJQU5CQVRZQ3ZBSWdBeUFGTmdLQUFTQURJQU5CZ0FGcU5nSzRBaUFESUFNcEE3Z0NOd01nSUFZZ0FpQURRYkFCYWlBRFFTQnFFT2NESWdJUTRnb2hCaUFESUFNb0F0QUNOZ0lZSUFNZ0F5a0R5QUkzQXhBZ0F5QURLUVBBQWpjRENDQUFJQUVnQTBFSWFpQUVJQVlROXdvZ0FoQXlHZ3dCQ3lBQ0lBRkIrQTFxS0FJQVJnUkFJQU5CQURZQ3NBSWdBMElBTndPb0FpQURRZ0EzQTZBQ0lBRWdBVUh3RFdvaUFpZ0NBRUVBRUlVQklRUWdBU2dDdUFVaEJpQUJLQUs4QlNBQ0tBSUFFT2tCSVFJZ0FVR0VEbW9vQWdBaEJTQURRUUUyQXB3Q0lBTWdCVFlDZ0FFZ0F5QURRWUFCYWpZQ21BSWdBeUFES1FPWUFqY0RRQ0FHSUFJZ0EwR3dBV29nQTBGQWF4RG5BeUlDRU9JS0lRWWdBeUFES0FLd0FqWUNPQ0FESUFNcEE2Z0NOd013SUFNZ0F5a0RvQUkzQXlnZ0FDQUJJQU5CS0dvZ0JDQUdFUGNLSUFJUU1ob01BUXNnQWlBQlFmd05haWdDQUVZRVFDQURRUUEyQXBBQ0lBTkNBRGNEaUFJZ0EwSUFOd09BQWlBQklBRkI4QTFxSWdJb0FnQkJBQkNGQVNFRUlBRW9BcmdGSVFZZ0FTZ0N2QVVnQWlnQ0FCRHBBU0VDSUFGQmlBNXFLQUlBSVFVZ0EwRUJOZ0w4QVNBRElBVTJBb0FCSUFNZ0EwR0FBV28yQXZnQklBTWdBeWtEK0FFM0EyQWdCaUFDSUFOQnNBRnFJQU5CNEFCcUVPY0RJZ0lRNGdvaEJpQURJQU1vQXBBQ05nSllJQU1nQXlrRGlBSTNBMUFnQXlBREtRT0FBamNEU0NBQUlBRWdBMEhJQUdvZ0JDQUdFUGNLSUFJUU1ob01BUXNnQVNnQ3RBVWdBaENVQVNJRVJRUkFJQUZCQURvQWxBTWdBVUdvQkdwQnlNTUxFQmtnQTBIOEFtb1FMMEhIeXdJUUdSb2dBQkJuR2d3QkN5QURRZUFCYWlBQklBUVFsUmtnQVNBRUVIcEJBQkNGQVNJS1JRUkFJQUFRWnhvTUFRc0NRQUpBQWtBQ1FBSkFBa0FnQkNnQ0ZDSUdRU2xyRGd3Q0FnSURCUUVGQlFVRkJBUUFDeUFHUVFGSERRUUxJQUFnQ2lBQklBb1Frd1FRYVJvTUJBc2dBU2dDdUFVZ0FoQ1NCU0lDUlFSQUlBRkJBRG9BbEFNZ0FVR29CR3BCeU1NTEVCa2dBMEg4QW1vUUwwRzcxUUFRR1JvZ0FCQm5HZ3dFQ3lBRElBTW9BdkFCTmdKNElBTWdBeWtENkFFM0EzQWdBeUFES1FQZ0FUY0RhQ0FBSUFFZ0EwSG9BR29nQ2lBQ0VQY0tEQU1MSUFGQjdBWnFJZ1lnQTBIOEFtb1E3QUVpQWdSQUlBQWdDaUFCUVNCcUlBSkJER29RMmdRUWFSb01Bd3NnQTBLQWdJQ0FnQUUzQXRRQklBTWdBMEd3QVdvaUFqWUMwQUVnQXlBQ05nS0lBU0FESUFFMkFvUUJJQU5CNk9FU05nS0FBU0FESUFOQmdBRnFJZ0kyQXBBQklBUWdBaER3RGlFRUlBSVFGZ0pBSUFSRkJFQWdBQkJuR2d3QkN5QURJQW9nQVVFZ2FpSUxJQW9vQWdBb0FnZ1JBUUEyQW9BQklBTWdDeUFEUWVBQmFpQURRWUFCYWlBRFFiQUJhaENWQkNJT05nTG9BaUFCS0FLMEJTSUNJUVFnQWlBREtBTDhBaERtRnlFQ0l3QkJJR3NpQlNRQUlBVkJBRFlDSENBRlFZanhFallDQUNBRklBVTJBaEFnQlNBRlFSeHFOZ0lFSXdCQklHc2lCeVFBSUFjZ0JUWUNEQ0FIUWNEd0VqWUNDQ0FISUFkQkNHb2lERFlDR0FKQUFrQWdBa1VOQUNBQ0xRQVpSUTBCSUFRZ0FoQmdFT1lYSUFKSERRQWdBaTBBR1VVTkFTQUVRUmhxSVE4Z0JDQUNFT2dYSVFRRFFDQUVJQTlHRFFJZ0JDZ0NFQ0FDUncwQ0lBUW9BaFFoQ1VFQUlRZ0RRQ0FKS0FJa0lBa29BaUJyUVJ4dElBaEhCRUFDUUNBSklBZ1F2dzRpRFNnQ0FDSVFRUU5HRFFBZ0VCREdDa1VOQUNBQ0VHQWdEU2dDR0NJUUlBMUJER29nRUJzb0FnQW9BZ0JIRFFBZ0RDQUpJQWdRNVJjTkFBd0ZDeUFJUVFGcUlRZ01BUXNMSUFRUVRDRUVEQUFMQUF0QjdiZ0pRZGFqQWtHWEFVSCs1UU1RQUFBTElBd1FGaUFIUVNCcUpBQWdCUkFXSUFVb0Fod2hBaUFGUVNCcUpBQWdBa0VCUmdSQUlBQWdDaUFPRUdrYURBRUxJQU5Cb0FGcUlBRkJ5QVJxSUFNb0F2d0NFSk1DRUZRaURDRUNJd0JCTUdzaUFTUUFJQUZDZ0lDQWdNQUFOd0lrSUFFZ0FVRVFhaUlFTmdJZ0lBRkJBRFlDQ0NBQklBTW9BdWdDTmdJTUlBRWdDeUFDRU9jRk5nSUVJQXNnQzBIWUFtb2dBVUVFYWlBQlFRaHFJZ0lnQWtFRWNpQUVFUGNhSVFRZ0FoQzhCeUFCUVRCcUpBQWdDeER5QWlBRUVJRUxJQVFvQWlRaEFTQURJQU1vQXZ3Q05nS0FBU0FEUVlBQmFpSU5RUVJ5SUFGQkpHb1FWaG9qQUVFUWF5SUpKQUJCQUNFQ0l3QkJFR3NpQnlRQUlBMG9BZ0FoQVNBSkFuOENRQ0FHS0FJRUlnUkZEUUFnQmlnQ0FBSi9JQVJCQVdzZ0FYRWdCR2tpQ0VFQlRRMEFHaUFCSUFFZ0JFa05BQm9nQVNBRWNBc2lBa0VDZEdvb0FnQWlCVVVOQUNBRVFRRnJJUTRnQ0VFQlN5RVBBMEFnQlNnQ0FDSUZSUTBCSUFFZ0JTZ0NCQ0lJUndSQUFrQWdEMFVFUUNBSUlBNXhJUWdNQVFzZ0JDQUlTdzBBSUFnZ0JIQWhDQXNnQWlBSVJ3MENDeUFGS0FJSUlBRkhEUUFMUVFBTUFRdEJLQkFWSVFVZ0J5QUdRUWhxTmdJRUlBY2dCVFlDQUNBRlFRaHFJQTBRaFFrYUlBZEJBVG9BQ0NBRlFRQTJBZ0FnQlNBQk5nSUVBa0JCQUNBRUlBWW9BZ3hCQVdxekloRWdCaW9DRUNJU0lBU3psRjRiRFFBZ0JpQUVJQVJCQVd0eFFRQkhJQVJCQTBseUlBUkJBWFJ5SWdJQ2Z5QVJJQktWalNJUlF3QUFnRTlkSUJGREFBQUFBR0J4QkVBZ0Vha01BUXRCQUFzaUJDQUNJQVJMR3hEREFTQUdLQUlFSWdRZ0JFRUJhM0ZGQkVBZ0JFRUJheUFCY1NFQ0RBRUxJQUVnQkVrRVFDQUJJUUlNQVFzZ0FTQUVjQ0VDQ3dKQUlBSkJBblFpQWlBR0tBSUFhaWdDQUNJQlJRUkFJQWNvQWdBZ0JpZ0NDRFlDQUNBR0lBY29BZ0EyQWdnZ0JpZ0NBQ0FDYWlBR1FRaHFOZ0lBSUFjb0FnQWlBU2dDQUNJQ1JRMEJJQUlvQWdRaEJRSkFJQVFnQkVFQmF5SUNjVVVFUUNBQ0lBVnhJUVVNQVFzZ0JDQUZTdzBBSUFVZ0JIQWhCUXNnQmlnQ0FDQUZRUUowYWlBQk5nSUFEQUVMSUFjb0FnQWdBU2dDQURZQ0FDQUJJQWNvQWdBMkFnQUxJQWNvQWdBaEJTQUhRUUEyQWdBZ0JpQUdLQUlNUVFGcU5nSU1JQWNRZ0FsQkFRczZBQXdnQ1NBRk5nSUlJQWRCRUdva0FDQURJQWtvQWdnMkF2QUNJQU1nQ1MwQUREb0E5QUlnQ1VFUWFpUUFJQUFnQ2lBTElBd1EwZ0lRYVJvZ0RCQVBHZ3NnQTBHd0FXb1FJd3dDQ3lBQlFRQTZBSlFESUFGQnFBUnFRYm5kQXhBWkdpQUFFR2NhREFFTElBRkJBRG9BbEFNZ0FVR29CR3BCejRVS0VCa2hBaUFEUWJBQmFpSUJJQVFRV0NBQ0lBRVFUUm9nQVJBUEdpQUFFR2NhQ3lBRFFZQURhaVFBQ3hRQUlBQkJBRFlDaEFFZ0FDQUFLQUtBQVJBMkN3b0FJQUJCNk9vUEVFZ0xyQUVCQVg4akFFRXdheUlISkFBZ0J5QUNOZ0lvSUFjZ0FUWUNMQ0FISUFNMkFpUWdCeUFFTmdJZ0lBY2dCVFlDSENBSElBWTJBaGdnQnlBQUtBSUFJZ0VnQjBFc2FpQUhRU2hxRU1jRE5nSVFJQWNnQUNnQ0FDQUhRU1JxSUFkQklHb1F4d00yQWd3Z0J5QUJJQWRCRUdvZ0IwRU1haERLR1RZQ0ZDQUhJQUFvQWdBZ0IwRWNhaUFIUVJocUVNY0ROZ0lJSUFFZ0IwRVVhaUFIUVFocUVPVUlJUUFnQjBFd2FpUUFJQUFMQ3dBZ0FDQUJRUU1RMEJJTHJBRUJBWDhqQUVFd2F5SUhKQUFnQnlBQ05nSW9JQWNnQVRZQ0xDQUhJQU0yQWlRZ0J5QUVOZ0lnSUFjZ0JUWUNIQ0FISUFZMkFoZ2dCeUFBS0FJQUlnRWdCMEVzYWlBSFFTaHFFTWNETmdJUUlBY2dBQ2dDQUNBSFFTUnFJQWRCSUdvUXh3TTJBZ3dnQnlBQklBZEJFR29nQjBFTWFoRGxDRFlDRkNBSElBQW9BZ0FnQjBFY2FpQUhRUmhxRU1jRE5nSUlJQUVnQjBFVWFpQUhRUWhxRU1vWklRQWdCMEV3YWlRQUlBQUxpZ0VCQVg4akFFRWdheUlDSkFBZ0FpQUJOZ0ljQW44Z0FVRUVUd1JBSUFBb0Fod2lBQ2dDQUVFQU9nQUFJQUJCLzVJS0VCa2hBQ0FDUVFNMkFnQWdBQ0FDRUM5QjdiVU1FQmtnQWtFY2FoQXZHa0VBREFFTElBSkJvTmNTS1FNQU53TUFJQUpCcU5jU0tRTUFOd01JSUFBb0FnZ2dBaUFCUVFKMGFoQ3hEd3NoQVNBQ1FTQnFKQUFnQVF0U0FRSi9JQUFvQWdnaEFDTUFRUkJySWdRa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdVMkFnd2dCQ0FGTmdJSUlBQkJqQUZxSUFCQkNHb2dCRUVJYWlBQklBSWdBeERjR2lFQUlBUkJFR29rQUNBQUN5RUFJQUJDZ0lDQWdJQUJOd0lrSUFBZ0FEWUNJQ0FBSUFGQklHb1F2UmtnQUF1QUFRRUNmeU1BUVJCcklnUWtBQ0FFSUFBZ0FTQUNFSzBQTmdJTUl3QkJFR3NpQWlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQXpZQ0RDQUNJQU0yQWdnZ0FFR01BV29pQXlBREVMOEJJQUFvQWdnZ0FpZ0NDQ0FCSUFRb0Fnd1FsQkVpQUJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FDUVJCcUpBQWdCRUVRYWlRQUlBQUxWUUVCZnlNQVFiQUJheUlESkFBZ0FDQUJJQUlRblJvZ0FTQUFFSjRQUlFSQUlBTkJvWjBGUWZBQlFRY2dBMEdnQVdvUUhTSUFFQmNpQVVFWWFrR1YwUWdRRGhvZ0FSQVlJQUFRSGdzZ0EwR3dBV29rQUFzd0FRRi9Ba0FnQUNnQ0NDQUJLQUlJUncwQUlBQW9BZ3dnQVNnQ0RFY05BQ0FBS0FJUUlBRW9BaEJHSVFJTElBSUxEd0FnQUNBQVFkZ0NhaUFCRUswUEM2NEJBUVIvSUFFZ0FDZ0NhRXNFUUNBQUtBSmdJUU1nQUNBQkVLd2JBMEFnQUNnQ1pDQUNUUVJBSUFBZ0F4QTJCU0FDUVFSMElnUWdBQ2dDWUdvaUJTQURJQVJxSWdRcEFnQTNBZ0FnQlNBRUtRSUlOd0lJSUFKQkFXb2hBZ3dCQ3dzTElBQW9BbVFpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHQkVBZ0FDQUJOZ0prQlNBQUtBSmdJQUpCQkhScUlnTkNBRGNDQ0NBRFFRQTZBQVFnQTBFQU9nQUFJQUpCQVdvaEFnd0JDd3NMUWdFQmZpQUJLUU1BSVFJakFFRVFheUlCSkFBZ0FTQUNOd01JSUFGQkFEWUNCQ0FBSUFCQjJBSnFJQUZCQ0dvZ0FVRUVhaENDQ1NFQUlBRkJFR29rQUNBQUN5UUFJQUJCQURZQ1pDQUFRUVlRNkFVZ0FFRUFOZ0pzSUFBZ0FDZ0NjRUVCYWpZQ2NBdFBBUUYvSUFFb0FoQWlBa1VFUUNBQVFRQTJBaEFnQUE4TElBRWdBa1lFUUNBQUlBQTJBaEFnQVNnQ0VDSUJJQUFnQVNnQ0FDZ0NEQkVDQUNBQUR3c2dBQ0FDTmdJUUlBRkJBRFlDRUNBQUM0VUJBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNDQ0FFSUFFMkFnd2dCQ0FETmdJRUlBQWdCQ2dDRENBRUtBSUlJQVFvQWdRUS9oc2lBRUdRbUJJMkFnUWdBRUg0bUJJMkFnQWdBQ0lCUWRpWUVqWUNBQ0FCUVRocUlnQkNBRGNDckFJZ0FFS0FnSUNBNEFBM0FxUUNJQUFnQURZQ29BSWdBRUVHRVBnUElBUkJFR29rQUNBQkN6TUFJQUFRaUE0Z0FDQUJLQUlBTmdJQUlBQWdBU2dDQkRZQ0JDQUFJQUVvQWdnMkFnZ2dBVUVBTmdJSUlBRkNBRGNDQUFzWEFDQUFLQUlBRVBJQ0lBQWdBQ2dDQkJET0JCQ1JHUXY3QkFJSWZ3SitJd0JCd0FGcklnUWtBQ0FCS0FKOElBRW9Bb1FCSWdWQmxnRnNRWllCYWtIa0FHNUpCRUFnQVNBRlFRRjBRUUpxRU9VTEN5QUVRYmdCYWlBQklBSVFtZ2tnQVNnQ2ZDSUtRUUZySVFzZ0FpZ0NBQ0VISUFFb0FuZ2hDU0FFS0FLOEFTRUlJQVFvQXJnQklRWkJBQ0VDQWtBRFFDQUNJQXBIQkVBZ0NTQUdRUlJzYWlJRkxRQUlSUVJBSUFNb0FnQWhBeUFGUVFFNkFBZ2dCU0FETmdJRUlBVWdCellDQUNBSklBWkJGR3hxSWdNZ0FqWUNFQ0FESUFnMkFnd2dBU0FCS0FLRUFVRUJhallDaEFFZ0FTQUJLQUtJQVVFQmFqWUNpQUVnQUNBRlFRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBVW9BZ3dnQ0VjTkFDQUhJQVVvQWdCSERRQWdCU0FES0FJQU5nSUVJQVVnQnpZQ0FDQUJJQUVvQW9nQlFRRnFOZ0tJQVNBQUlBVkJCR28yQWdRZ0FFRUJOZ0lBREFNTElBSWdCU2dDRUVzRVFDQURLQUlBSVFNZ0JFRUJPZ0NvQVNBRUlBSTJBckFCSUFRZ0F6WUNwQUVnQkNBSE5nS2dBU0FFSUFnMkFxd0JJQVFnQWpZQ0VDQUVJQVFwQTZnQklndzNBd2dnQkNBRUtRT2dBU0lOTndNQUlBUWdCU2dDRURZQ3NBRWdCQ0FGS1FJSU53T29BU0FFSUFVcEFnQTNBNkFCSUFVZ0FqWUNFQ0FGSUEwM0FnQWdCU0FNTndJSUlBUWdCQ2dDc0FGQkFXbzJBckFCSUFFZ0JrRUJhaUFCS0FKOGNDQUVRYUFCYWhEa0N5QUJJQUVvQW9RQlFRRnFOZ0tFQVNBQklBRW9Bb2dCUVFGcU5nS0lBU0FBSUFWQkJHbzJBZ1FnQUVFQU5nSUFEQU1GSUFaQkFXcEJBQ0FHSUF0SEd5RUdJQUpCQVdvaEFnd0NDd0FMQ3lBRVFZYTFBMEhyQTBFT0lBUkJvQUZxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBQkNBRGNDQUNBQkVCNExJQVJCd0FGcUpBQUxZQUVCZnlBQUtBSUVJZ0lFUUNBQ0tBSUFJQUVRVjBFQlFRRkIxWjRJUWRDbkEwSHdBQkJMQ3lBQUlBRVF6UU1pQVVVRVFFRUFEd3NnQUNBQkVJUUNJUUVnQUNnQ0FDZ0NDQ0FCRUZkQkFVRUJRYUdiQ0VIUXB3TkI5QUFRU3lBQkN4SUFJQUJCOEFKQmtmMERRWGhCQnhES0FRdWVCd0VFZnlBQVFvQ0FnSUFnTndJTUlBQWdBRFlDQ0NNQVFUQnJJZ01rQUNBQUlBSW9BZ3dRdHdjZ0EwRUFOZ0lvSUFNZ0FqWUNKQ0FESUFGQnlDQnFOZ0lnSUFNZ0FVSGNnQUZxS0FJQVFRRnJOZ0lzQWtBZ0EwRWdhaEMxQVFSQUlBTkJJR29RV2lJRktBTFlBU0lFSUFVb0F0d0JRUmhzYWlFRkEwQWdCQ0FGUmdSQUlBSW9BZ2dpQlNBQ0tBSU1RUUowYWlFQ0EwQWdBaUFGUmdSQUlBTkJJR29RV2lJQ0tBTElBaUlFSUFJb0Fzd0NRUmhzYWlFQ0EwQWdBaUFFUmcwR0lBTWdBU0FFRUdZUWhBSTJBaEFnQUNBRFFSQnFFTElESUFSQkdHb2hCQXdBQ3dBTElBTWdBMEVnYWhCYUlnUkIyQUpxTmdJUUlBVW9BZ0FoQmlBRFFRQTJBaGdnQXlBR05nSVVJQU1nQkVHY0NXb29BZ0JCQVdzMkFod0NRQ0FEUVJCcUVMUUJSUTBBSUFOQkVHb1FyQUVpQmlnQ1lDSUVJQVlvQW1SQkdHeHFJUVlEUUNBRUlBWkdEUUVnQXlBQklBUVFaaENFQWpZQ0RDQUFJQU5CREdvUXNnTWdCRUVZYWlFRURBQUxBQXNnQTBFZ2FoQmFJUVFnQXlBRktBSUFOZ0lRSUFRZ0EwRVFhaERHQTBVRVFDQURJQUVnQlNnQ0FCRHdCVFlDRUNBQUlBTkJFR29Rc2dNTElBTWdBMEVnYWhCYUlnUkJvQWxxTmdJUUlBVW9BZ0FoQmlBRFFRQTJBaGdnQXlBR05nSVVJQU1nQkVIa0Qyb29BZ0JCQVdzMkFod0NRQ0FEUVJCcUVMUUJSUTBBSUFOQkVHb1FyQUVpQmlnQ1lDSUVJQVlvQW1SQkdHeHFJUVlEUUNBRUlBWkdEUUVnQXlBQklBUVFaaENFQWpZQ0RDQUFJQU5CREdvUXNnTWdCRUVZYWlFRURBQUxBQXNnQlVFRWFpRUZEQUFMQUFVZ0F5QUJJQVFRWmhDRUFqWUNFQ0FBSUFOQkVHb1FzZ01nQkVFWWFpRUVEQUVMQUFzQUN5QUNLQUlJSWdVZ0FpZ0NERUVDZEdvaEFnTkFJQUlnQlVZRVFDQURRU0JxRUxVQlJRMENJQU5CSUdvUVdpSUNLQUxJQWlJRUlBSW9Bc3dDUVJoc2FpRUNBMEFnQWlBRVJnMERJQU1nQVNBRUVHWVFoQUkyQWhBZ0FDQURRUkJxRUxJRElBUkJHR29oQkF3QUN3QUZJQU1nQVNBRktBSUFFUEFGTmdJUUlBQWdBMEVRYWhDeUF3SkFJQU5CSUdvUXRRRkZEUUFnQXlBRFFTQnFFRm9pQkVHZ0NXbzJBaEFnQlNnQ0FDRUdJQU5CQURZQ0dDQURJQVkyQWhRZ0F5QUVRZVFQYWlnQ0FFRUJhellDSENBRFFSQnFFTFFCUlEwQUlBTkJFR29RckFFaUJpZ0NZQ0lFSUFZb0FtUkJHR3hxSVFZRFFDQUVJQVpHRFFFZ0F5QUJJQVFRWmhDRUFqWUNEQ0FBSUFOQkRHb1FzZ01nQkVFWWFpRUVEQUFMQUFzZ0JVRUVhaUVGREFFTEFBc0FDeUFEUVRCcUpBQUxFUUFnQUVFd1FkSC9BMEY0UVFjUXlnRUx2d0VCQm44akFFRVFheUVFSUFBb0FtUWlCa0VCYXlFSEFrQURRQ0FGSUFaR0RRRWdBQ2dDWUNBQlFRUjBhaUlETFFBRUJFQWdBaUFDS0FJTUlnZ2dBeWdDREVzRWZ5QUVJQU1wQWdnM0F3Z2dCQ0FES1FJQU53TUFJQU1nQWlrQ0NEY0NDQ0FESUFJcEFnQTNBZ0FnQWlBRUtRTUlOd0lJSUFJZ0JDa0RBRGNDQUNBQ0tBSU1CU0FJQzBFQmFqWUNEQ0FCUVFGcVFRQWdBU0FIUnhzaEFTQUZRUUZxSVFVTUFRc0xJQU1nQWlrQ0FEY0NBQ0FESUFJcEFnZzNBZ2dMQ3c0QUlBQVFIQ0FBUVJCcUVNSWRDeWtCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFFUWl4NGdBaTBBQ0NFQUlBSkJFR29rQUNBQUMrb0VBZ3AvQW4wakFFRVFheUlKSkFBakFFRVFheUlHSkFBZ0FoRDBBeUVFSUFrQ2Z3SkFJQUVvQWdRaUEwVU5BQ0FCS0FJQUFuOGdBMEVCYXlBRWNTQURhU0lJUVFGTkRRQWFJQVFnQXlBRVN3MEFHaUFFSUFOd0N5SUhRUUowYWlnQ0FDSUZSUTBBSUFOQkFXc2hDaUFDS0FJQUlRc2dDRUVCU3lFTUEwQWdCU2dDQUNJRlJRMEJJQVFnQlNnQ0JDSUlSd1JBQWtBZ0RFVUVRQ0FJSUFweElRZ01BUXNnQXlBSVN3MEFJQWdnQTNBaENBc2dCeUFJUncwQ0N5QUZLQUlJSUF0SERRQUxRUUFNQVFzZ0JpQUJJQVFnQWhEM0N3SkFRUUFnQXlBQktBSU1RUUZxc3lJTklBRXFBaEFpRGlBRHM1UmVHdzBBSUFFZ0F5QURRUUZyY1VFQVJ5QURRUU5KY2lBRFFRRjBjaUlDQW44Z0RTQU9sWTBpRFVNQUFJQlBYU0FOUXdBQUFBQmdjUVJBSUEycERBRUxRUUFMSWdjZ0FpQUhTeHNRd3dFZ0FTZ0NCQ0lESUFOQkFXdHhSUVJBSUFOQkFXc2dCSEVoQnd3QkN5QURJQVJMQkVBZ0JDRUhEQUVMSUFRZ0EzQWhCd3NDUUNBSFFRSjBJZ1FnQVNnQ0FHb29BZ0FpQWtVRVFDQUdLQUlBSUFFb0FnZzJBZ0FnQVNBR0tBSUFOZ0lJSUFFb0FnQWdCR29nQVVFSWFqWUNBQ0FHS0FJQUlnSW9BZ0FpQkVVTkFTQUVLQUlFSVFVQ1FDQURJQU5CQVdzaUJIRkZCRUFnQkNBRmNTRUZEQUVMSUFNZ0JVc05BQ0FGSUFOd0lRVUxJQUVvQWdBZ0JVRUNkR29nQWpZQ0FBd0JDeUFHS0FJQUlBSW9BZ0EyQWdBZ0FpQUdLQUlBTmdJQUN5QUdLQUlBSVFVZ0JrRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUdFSXNCUVFFTE9nQU1JQWtnQlRZQ0NDQUdRUkJxSkFBZ0FDQUpLQUlJTmdJQUlBQWdDUzBBRERvQUJDQUpRUkJxSkFBTDBBWUNCWDhCZmlNQVFTQnJJZ01rQUFKQUFrQURRQ0FCUlEwQ0lBRW9BZ1FpQWtINDZ3OUdCRUFnQUNBQktBSWtFTjhCSUFBZ0FTZ0NLQkRmQVF3REN5QUNRYmp6RDBZRVFDQUFRUkJxSWdJUXR3a2dBMEVBT2dBRUlBTWdBVUhFQUdvMkFnQWdBQ0FERVA0UUlBSVF0Z2tNQXdzZ0FrR0FoQkpHQkVBZ0FDQUJLQUlrRU44QkRBTUxJQUpCK080UFJnUkFJQUFnQVNnQ0pCRGZBUXdEQ3lBQ1FjQ0VFa1lFUUNBQUlBRW9BaVFRM3dFZ0FDQUJLQUlvRU44QkRBTUxJQUpCMklRU1JnMEJJQUpCOElRU1JnUkFJQUFnQVNnQ0pCRGZBUXdEQ3lBQ1FmandEMFlFUUNBQVFSQnFJZ0lRdHdrZ0FTZ0NKQ0VFSUFOQkFEb0FCQ0FESUFSQnhBQnFOZ0lBSUFBZ0F4RCtFQ0FBSUFFb0FpZ1ErQVVnQWhDMkNRd0RDeUFDUWJqd0QwWUVRQ0FBSUFFb0FpUVEzd0VnQUNBQktBSW9FUGdGSUFFb0Fpd2lBUTBCREFNTEN5QUNRYmp4RDBZRVFDQUFJQUVvQWlRUTN3RU1BZ3NnQWtINDhROUdCRUFnQUNBQktBSWtFTjhCSUFFb0FqZ2lBaUFCS0FJOFFRSjBhaUVGQTBBZ0FpQUZSZzBESUFJb0FnQWlCQ2dDTkNJQklBUW9BamhCQW5ScUlRWURRQ0FCSUFaR0JFQWdBQ0FFS0FKQUVQZ0ZJQUpCQkdvaEFnd0NCU0FBSUFFb0FnQW9BaVFRM3dFZ0FVRUVhaUVCREFFTEFBc0FDd0FMSUFKQnVQSVBSZ1JBSUFNZ0FFRVFhaUFCS0FJa0tBSWtRU1JxRVAwUUlnSTJBaHdnQVVFa2FpRUJJQUlFUUNBRElBQW9BZ2hCb0JscUlBRWdBMEVjYWhEOEVBc2dBQ0FCS0FJQUVONGVJQUFnQXlBQktBSUFLQUlrUVNScUVGWWdBU2dDQUJEL0J3d0NDeUFDUVlpRkVrWUVRQ0FBUVJCcUlnSVF0d2tnQUNBQktBSWtFTjhCSUFBZ0FTZ0NLQkQ0QlNBQ0VMWUpEQUlMSUFKQndQWVBSZ1JBSUFBZ0FTZ0NKQkRmQVF3Q0N5QUJCSDhDZjBFQUlBRW9BZ1FpQWlrREVFS2d3SkNJZ0lDQWdDU0RJZ2NnQjBJQmZZTlFEUUFhUVFFZ0FrRzQ3QThRU0EwQUdnSi9RUUFnQWlrREVFS2dnSUNJZ0lDQWdDU0RJZ2NnQjBJQmZZTlFEUUFhUVFFZ0FrRzQ3dzhRU0EwQUdpQUNRZmp2RHhCSUN3c0ZRUUFMRFFFZ0FDZ0NCQ0FCRUxRSkRBRUxJQUJCRUdvaUFoQzNDU0FBSUFFb0FpUVErQVVnQUNBQktBSW9FTjhCSUFBZ0FTZ0NMQkQ0QlNBQUlBRW9BakFRK0FVZ0FoQzJDUXNnQTBFZ2FpUUFDMDRCQW44Z0FDZ0NoQUlpQWlBQUtBS0lBaUlEVHdSQUlBQWdBMEVCZEVFQ0lBTWJFSkFNSUFBb0FvUUNJUUlMSUFBZ0FrRUJhallDaEFJZ0FDZ0NnQUlnQWtFRGRHb2dBU2tDQURjQ0FBc1VBQ0FBSUFFUVZpSUFJQUVvQWh3MkFod2dBQXN5QVFKL0l3QkJrQUZySWdJa0FDQUNFRWtpQXlBQktBSUFFTFVMR2lBQUlBTkJER29RUWlBREVGRWdBa0dRQVdva0FBc1dBQ0FBSUFFb0FnQVFWaUFCS0FJRUtBSUFOZ0ljQ3hJQUlBQkIxQUJCcmY4RFFYeEJBeERLQVF1MEFnRUNmeU1BUWNBQmF5SUdKQUFnQmlBQ05nS3dBU0FHSUFFMkFyZ0JJQUFnQmlnQ3VBRWdCaWdDc0FFZ0F4RE5CeUlBUWJqdUR6WUNCQ0FBUWV6dUR6WUNBQ0FBSUFRMkFpUWdBRUhZN2c4MkFnQWdBRUVvYWlBRkVMOEpJQUFvQWlRaUFRUi9JQUVGSUFaQnRhY0ZRUjlCQUNBR1FhQUJhaEFkSWdFUUZ5SUNRUmhxUVlHZUNCQU9HaUFDRUJnZ0FSQWVJQUFvQWlRTEVGY2dBQ2dDQ0VFQlFRQkI0OElJUWJXbkJVRWdFRXNnQUNnQ1NDSUNJQUFvQWt4QkFuUnFJUUVnQmtFWWFpRURBMEFnQVNBQ1J3UkFJQUlvQWdBaUJFVUVRQ0FHUWJXbkJVRWlRUUFnQmtHZ0FXb1FIU0lGRUJjaEJ5QURRY0syQ0JBT0dpQUhFQmdnQlJBZUN5QUVFRmNnQUNnQ0NFRUJRUUJCak1zSVFiV25CVUVqRUVzZ0FrRUVhaUVDREFFTEN5QUdRY0FCYWlRQUlBQUx5UUVCQkg4akFFRVFheUlHSkFBQ1FDQUFSUVJBREFFTElBUW9BZ3doQ0NBQ0lBRnJJZ2xCQUVvRVFDQUFJQUVnQ1NBQUtBSUFLQUl3RVFRQUlBbEhEUUVMSUFnZ0F5QUJheUlCYTBFQUlBRWdDRWdiSWdGQkFFb0VRQ0FHSUFFZ0JSQ0pCaUFBSUFZb0FnQWdCaUFHTEFBTFFRQklHeUFCSUFBb0FnQW9BakFSQkFBaEJTQUdFQThhSUFFZ0JVY05BUXNnQXlBQ2F5SUJRUUJLQkVBZ0FDQUNJQUVnQUNnQ0FDZ0NNQkVFQUNBQlJ3MEJDeUFFUVFBMkFnd2dBQ0VIQ3lBR1FSQnFKQUFnQndzS0FDQUFRYkNoRWhCSUN3OEFJQUFnQVNBQ1FiLzVBQkRyRWdzT0FDQUFJQUVnQWtIZFBSRHJFZ3NOQUNBQUlBRkIrT3dQRU9FSkN3b0FJQUFvQWdBUXFna0xPQUVCZmdKL1FRQWdBQ2dDQkNJQUtRTVFRb0NnZ0lpQWlJQUlneUlCSUFGQ0FYMkRVQTBBR2tFQklBQVFzQVVOQUJvZ0FCQ1lFUXNMZEFFRWZ5TUFRYUFCYXlJREpBQWdBMEVJYWhCSklnUkJDR3BCMUxVS0VBNGFJQVFnQVJDNkVTSUZRUWhxSWdaQmsrY0pFQTRhSUFaQjg1b0pFQTRhSUFNZ0Fpa0NBRGNEbUFFZ0JTQURRWmdCYWhDMkJFRUlha0h6bWdrUURob2dBQ0FFUVF4cUVFSWdCQkJSSUFOQm9BRnFKQUFMVFFFQ2Z5TUFRU0JySWdJa0FFRU1FQlVoQXlBQ1FRRTJBaEFnQWlBQ1FSaHFOZ0lNSUFNZ0FUWUNBQ0FESUFBcEFnUTNBZ1FnQWtFQU5nSUlJQUpCQ0dvUWl3RWdBa0VnYWlRQUlBTUxVUUVCZnlNQVFSQnJJZ2drQUNBSUlBSTJBZ0FnQ0NBQk5nSUlJQUFnQ0NnQ0NDQUlLQUlBSUFNUTh3WWlBQ0FITmdJRUlBQWdCallDQUNBQUlBUTJBaVFnQUNBRk5nSUFJQWhCRUdva0FDQUFDNE1CQVFOL0l3QkJFR3NpQXlRQUlBQVFtQVlnQVVGd1NRUkFBa0FnQVJEVkNBUkFJQUFnQVJDTEJTQUFFSW9GSVFRTUFRc2dBQ0FCRUpjR1FRRnFJZ1VRbEFZaUJCQ1dCaUFBSUFVUWxRWWdBQ0FCRU5NRUN5QUVFSU1CSUFFZ0FoQ2NGQ0FEUVFBNkFBOGdBU0FFYWlBRFFROXFFTkVDSUFOQkVHb2tBQThMRUxnREFBdFhBUUYvSXdCQkVHc2lBeVFBSUFFdEFBQUVmeUFEUWdBM0F3Z2dBMEVFYWlBQklBRVEzQUVnQTBFSWFpQUNFUE1NSWdGQmZVMEVRQ0FBSUFNb0FnUTJBZ0FMSUFGQmZra0ZRUUFMSVFFZ0EwRVFhaVFBSUFFTHRnZ0JBbjlCMkx3Z0xRQUFCRUJCMUx3Z0tBSUFEd3RCdU1rZ1FRRVFvd0VpQUVINGxBODJBZ0FnQUVFSWFoRHBFeUVCSUFCQm1BRnFRYjdlQmhBVUdpQUJFUElNUWZER0lFRUJFT1lUR2lBQVFmREdJRUdvdXlBUWdBRVFnZ0ZCK01ZZ1FRRVE1Uk1hSUFCQitNWWdRYkM3SUJDQUFSQ0NBVUdBeHlCQkFSRGtFeG9nQUVHQXh5QkI5THdnRUlBQkVJSUJRWkRISUVFQkVPTVRHaUFBUVpESElFSHN2Q0FRZ0FFUWdnRkJtTWNnUVFFUW93RWFRWmpISUVHVXBBODJBZ0FnQUVHWXh5QkIvTHdnRUlBQkVJSUJRYURISUVFQkVLTUJJZ0ZCZ0o4UE5nSUFJQUVRd0FFMkFnZ2dBRUdneHlCQmhMMGdFSUFCRUlJQlFiREhJRUVCRUtNQkdrR3d4eUJCcUtVUE5nSUFJQUJCc01jZ1FZeTlJQkNBQVJDQ0FVRzR4eUJCQVJDakFScEJ1TWNnUVpDbkR6WUNBQ0FBUWJqSElFR2N2U0FRZ0FFUWdnRkJ3TWNnUVFFUW93RWFRY0RISUVHY3BnODJBZ0FnQUVIQXh5QkJsTDBnRUlBQkVJSUJRY2pISUVFQkVLTUJHa0hJeHlCQmhLZ1BOZ0lBSUFCQnlNY2dRYVM5SUJDQUFSQ0NBVUhReHlCQkFSRGlFeG9nQUVIUXh5QkJyTDBnRUlBQkVJSUJRZWpISUVFQkVPRVRHaUFBUWVqSElFRzB2U0FRZ0FFUWdnRkJpTWdnUVFFUW93RWFRWWpJSUVIVXJRODJBZ0FnQUVHSXlDQkJ1THNnRUlBQkVJSUJRWkRJSUVFQkVLTUJHa0dReUNCQnlLOFBOZ0lBSUFCQmtNZ2dRY0M3SUJDQUFSQ0NBVUdZeUNCQkFSQ2pBUnBCbU1nZ1FaeXhEellDQUNBQVFaaklJRUhJdXlBUWdBRVFnZ0ZCb01nZ1FRRVFvd0VhUWFESUlFR0VzdzgyQWdBZ0FFR2d5Q0JCMExzZ0VJQUJFSUlCUWFqSUlFRUJFT0FUR2lBQVFhaklJRUg0dXlBUWdBRVFnZ0ZCc01nZ1FRRVEzeE1hSUFCQnNNZ2dRWUM4SUJDQUFSQ0NBVUc0eUNCQkFSRGVFeG9nQUVHNHlDQkJpTHdnRUlBQkVJSUJRY0RJSUVFQkVOMFRHaUFBUWNESUlFR1F2Q0FRZ0FFUWdnRkJ5TWdnUVFFUW93RWFRY2pJSUVHSXlBODJBZ0FnQUVISXlDQkJtTHdnRUlBQkVJSUJRZERJSUVFQkVLTUJHa0hReUNCQnJNa1BOZ0lBSUFCQjBNZ2dRYUM4SUJDQUFSQ0NBVUhZeUNCQkFSQ2pBUnBCMk1nZ1FkREtEellDQUNBQVFkaklJRUdvdkNBUWdBRVFnZ0ZCNE1nZ1FRRVFvd0VhUWVESUlFSDB5dzgyQWdBZ0FFSGd5Q0JCc0x3Z0VJQUJFSUlCUWVqSUlFRUJFTndUR2lBQVFlaklJRUhZdXlBUWdBRVFnZ0ZCK01nZ1FRRVEyeE1hSUFCQitNZ2dRZUM3SUJDQUFSQ0NBVUdJeVNCQkFSQ2pBUnBCa01rZ0VOQVRRWWpKSUVIMHZBODJBZ0FnQUVHSXlTQkI2THNnRUlBQkVJSUJRWmpKSUVFQkVLTUJHa0dneVNBUTBCTkJtTWtnUVpDK0R6WUNBQ0FBUVpqSklFSHd1eUFRZ0FFUWdnRkJxTWtnUVFFUTJoTWFJQUJCcU1rZ1FiaThJQkNBQVJDQ0FVR3d5U0JCQVJEWkV4b2dBRUd3eVNCQndMd2dFSUFCRUlJQlFkQzhJRUc0eVNBMkFnQkIyTHdnUVFFNkFBQkIxTHdnUWRDOElEWUNBRUhRdkNBTElRRUJmeU1BUVJCcklnRWtBQ0FCUVFocUlBQVF0d01RdGdNZ0FVRVFhaVFBQ3djQUlBQkJBRWNMWmdJQmZ3SitJd0JCRUdzaUJTUUFJQUFDZndKQUlBUkNBRk1nQXlBRWZDSUhJQU5UUndSQUlBVWdBMEhibUFnZ0JCRHVCaUFCSUFVZ0FoQmRJQVVRRHhvZ0FTMEFCQTBCUVFJTUFnc2dCeUVHQ3lBQUlBWTNBd0JCQVFzNkFBZ2dCVUVRYWlRQUMrc0JBUVIvSXdCQkVHc2lDQ1FBQWtBZ0FFVU5BQ01BUVJCcklnWWdCRFlDRENBR0tBSU1LQUlNSVFZZ0FpQUJheUlIUVFCS0JFQWdBQ0FCSUFkQkFuWWlCeENTRFNBSFJ3MEJDeUFHSUFNZ0FXdEJBblVpQVd0QkFDQUJJQVpJR3lJQlFRQktCRUFnQUNBSUlBRWdCUkQ5RENJRkVJOENJQUVRa2cwaEJpQUZFSWNCR2lBQklBWkhEUUVMSUFNZ0Ftc2lBVUVBU2dSQUlBQWdBaUFCUVFKMklnRVFrZzBnQVVjTkFRc2pBRUVRYXlJQklBUTJBZ3dnQVVFQU5nSUlJQUVnQVNnQ0RDSUNLQUlNTmdJRUlBSWdBU2dDQ0RZQ0RDQUJLQUlFR2lBQUlRa0xJQWhCRUdva0FDQUpDeWdCQVg4akFFRVFheUlCSkFBZ0FVRUlhaUFBRUk4Q0VJQURLQUlBSVFBZ0FVRVFhaVFBSUFBTExBQUNRQ0FBSUFGR0RRQURRQ0FBSUFGQkFXc2lBVThOQVNBQUlBRVE5eFFnQUVFQmFpRUFEQUFMQUFzTEtBRUJmeU1BUVJCcklnRWtBQ0FCUVFocUlBQVF3UU1RZ0FNb0FnQWhBQ0FCUVJCcUpBQWdBQXNjQUNBQVFZQ0FnSUFFVHdSQUVQc0JBQXNnQUVFQ2RFRUVFTk1JQ3drQUlBQkJBUkRUQ0FzVEFDQUFFUG9DSUFGQmdJQ0FnSGh5TmdJSUN3d0FJQUFRK2dJZ0FUWUNBQXNrQUNBQVFRdFBCSDhnQUVFUWFrRndjU0lBSUFCQkFXc2lBQ0FBUVF0R0d3VkJDZ3NMQ0FBZ0FCRFJDQm9MRndBZ0FDQUNOZ0ljSUFBZ0FUWUNGQ0FBSUFFMkFoZ0xyd0VCQm44akFFRWdheUlDSkFBZ0FrRVlhaUlESUFBUTN3TWFBa0FnQXhDU0JFVU5BQ0FDUVJCcUlnTWdBQ0FBS0FJQVFReHJLQUlBYWhCK0lBTVEvUVFoQkNBREVHUWdBa0VJYWlBQUVOSUVJUVVnQUNBQUtBSUFRUXhyS0FJQWFpSUdFSndESVFjZ0FpQUVJQVVvQWdBZ0JpQUhJQUVnQkNnQ0FDZ0NGQkVZQURZQ0VDQURFTkVFUlEwQUlBQWdBQ2dDQUVFTWF5Z0NBR3BCQlJDUEF3c2dBa0VZYWhEZ0F5QUNRU0JxSkFBTFVnRUNmMEg0bUNBb0FnQWlBU0FBUVFkcVFYaHhJZ0pxSVFBQ1FDQUNRUUFnQUNBQlRSc05BQ0FBUHdCQkVIUkxCRUFnQUJBSVJRMEJDMEg0bUNBZ0FEWUNBQ0FCRHd0Qm1La2dRVEEyQWdCQmZ3dFFBUUYrQWtBZ0EwSEFBSEVFUUNBQ0lBTkJRR3F0aUNFQlFnQWhBZ3dCQ3lBRFJRMEFJQUpCd0FBZ0EydXRoaUFCSUFPdElnU0loQ0VCSUFJZ0JJZ2hBZ3NnQUNBQk53TUFJQUFnQWpjRENBdmJBUUlCZndKK1FRRWhCQUpBSUFCQ0FGSWdBVUwvLy8vLy8vLy8vLzhBZ3lJRlFvQ0FnSUNBZ01ELy93QldJQVZDZ0lDQWdJQ0F3UC8vQUZFYkRRQWdBa0lBVWlBRFF2Ly8vLy8vLy8vLy93Q0RJZ1pDZ0lDQWdJQ0F3UC8vQUZZZ0JrS0FnSUNBZ0lEQS8vOEFVUnNOQUNBQUlBS0VJQVVnQm9TRVVBUkFRUUFQQ3lBQklBT0RRZ0JaQkVCQmZ5RUVJQUFnQWxRZ0FTQURVeUFCSUFOUkd3MEJJQUFnQW9VZ0FTQURoWVJDQUZJUEMwRi9JUVFnQUNBQ1ZpQUJJQU5WSUFFZ0ExRWJEUUFnQUNBQ2hTQUJJQU9GaEVJQVVpRUVDeUFFQ3lJQkFYOGdBQ0FCRUxFQ0JIOGdBQ0FBSUFFUXVnRW9BZ0FvQWdnUVVBVkJBQXNMSXdFQmZ5QUFLQUo0SWdFZ0FDZ0NkRVlFUUVFQUR3c2dBVUhFQTJzb0FreEJBRWNMZ2dNQkJIOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUFrQUNRQUpBQW45QkFDQUJSUTBBR2lBQVFZd0RhaUlGSUFKQkRHb2lBUkQxQXlFRUlBVWdBUkNlQnlFRElBUUVRQ0FES0FJQURBRUxRUUFoQVNBRFFRQTJBZ0FDUUNBQ0tBSU1LQUlFSWdORkRRQWdBaWdDRENJRUlBTkdEUUFnQkNnQ0tDSUJRU0J4QkVBZ0FrRUNOZ0lFSUFJZ0JEWUNBQ0FBUWRBQ2FpQUNFTlVWS0FJQUlnRkZEUU1nQVJER0JTZ0NBQ2dDQUNJQlJRMEVJQUVvQWhBaUFTQUNLQUlNUmdSQUlBQWdBeENnQmtFQmFpRUJEQUlMSUFBZ0FSQ2dCa0VCYWlFQkRBRUxJQUZCQ0hFRVFDQUFRZVFDYWlBQ1FReHFFSjRIS0FJQUlnRkZEUVVnQUNBQkVLQUdJUUVNQVFzZ0F5Z0NLQ0VCSUFBZ0F4Q2dCaUFCUVFaeFFRQkhhaUVCQ3lBRklBSkJER29RbmdjZ0FUWUNBQ0FGSUFKQkRHb1FuZ2NvQWdBTElRQWdBa0VRYWlRQUlBQVBDMEgxNmdCQmtxb0NRZGNDUVk2aUF4QUFBQXRCNXVvQVFaS3FBa0hiQWtHT29nTVFBQUFMUWMvNkFVR1NxZ0pCNlFKQmpxSURFQUFBQ3d3QUlBQVFzZ1VnQUJET0NRc29BQ0FBUWdBM0F2d0JJQUJDZ0lDQWdNQUJOd0wwQVNBQUlBQTJBdkFCSUFCQkRCRHpCQ0FBQzdJQkFRTi9Jd0JCd0FGcklnSWtBQUpBQWtBZ0FDQUJRUVFRR3hBZ0lnUUVRQ0FFTHdFZVFReEdEUUVMSUFJZ0FFRjJJQUVRRUNBQ1FaM01BaEFPR2lBQ0tBSzhBU0VESUFJUUVRd0JDeUFFUVFJUUd5QUJRUUlRRzBjRVFDQUNJQUJCZGlBQkVCQWdBa0hUTWhBT0dpQUNLQUs4QVNFRElBSVFFUXdCQ3lBRVFRTVFHMEVCUmcwQUlBSWdBRUYySUFFUUVDQUNRWjNNQWhBT0dpQUNLQUs4QVNFRElBSVFFUXNnQWtIQUFXb2tBQ0FEQ3g4QUlBRW9BaEFpQVVVRVFCQnZBQXNnQUNBQklBRW9BZ0FvQWhnUkFnQUxSZ0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQUVIRUEyb2dBa0VNYWhDZUFpSUFSUVJBUWRXU0IwR1B0QU5CL3dGQnZhb0JFQUFBQ3lBQ1FSQnFKQUFnQUVFTWFnc1VBQ0FBUWNJcVFaQUNRWk1DUVpqd0J4Q05Fd3NzQUNBQVFRaDBRWUNBL0FkeElBQkJHSFJ5SUFCQkNIWkJnUDREY1NBQVFSaDJjbklnQUNBQlFRRkdHd3N3QVFGL0lBQW9BZ1FpQWlBQUtBSUlTUVJBSUFJZ0FTZ0NBRFlDQUNBQUlBSkJCR28yQWdRUEN5QUFJQUVRa2hjTDVBRUJCbjhDZnlBQUtBSUFJUU1nQVNFR1FYb2dBQ2dDQ0NJQVJRMEFHa0Y5SUFKRkRRQWFJQUFvQWdBaEJDQUFLQUlFSVFjZ0F4Q0hEaUVESUFRaEFTQUhJUUFEZnlBQkJIOGdBU0FCUVFGMklnVkJmM05xSUFVZ0FDQUZRZWdBYkdvaUJTZ0NCQ0FHU1NJSUd5RUJJQVZCNkFCcUlBQWdDQnNoQUF3QkJTQUhJQVJCNkFCc2FpRUVBa0FEUUVGM0lRRWdBQ0FFUmcwQklBQW9BZ1FnQmtjTkFRSkFJQUFvQW1BZ0EwMEVRQ0FESUFBb0FtUk5EUUVMSUFBb0FsZ05BQ0FBS0FJSURRQWdBRUhvQUdvaEFBd0JDd3NnQWlBQU5nSUFRUUFoQVFzZ0FRc0xDd3RqQVFGL0l3QkJFR3NpQkNRQUlBUWdBallDQ0NBRUlBRTJBZ3dnQkNBRE5nSUVJQUFRSENBQVFjUUJhaUlBSUFBUXFnTWdCQ2dDRENBRUtBSUlJQVFvQWdRUTV4Y2lBUkFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJJUUFnQkVFUWFpUUFJQUFMUWdFQmZ5QUJLQUlBSVFJakFFRVFheUlCSkFBZ0FTQUNOZ0lJSUFGQkFUWUNCQ0FBSUFCQjJBSnFJQUZCQ0dvZ0FVRUVhaEN6Q0NFQUlBRkJFR29rQUNBQUN3OEFJQUJCQWlBQklBSWdBeERQQkF0bkFRSi9JQUJCQkdvaEJBSkFJQUFvQWdRaUEwVUVRQ0FFSVFBTUFRc2dBaWdDQUNFQ0EwQWdBeUlBS0FJUUlnTWdBa3NFUUNBQUlRUWdBQ2dDQUNJRERRRU1BZ3NnQWlBRFRRMEJJQUJCQkdvaEJDQUFLQUlFSWdNTkFBc0xJQUVnQURZQ0FDQUVDNG9CQVFKL0lBQW9BZ1FnQUNnQ0NFa0VRQ0FBSUFBb0FnUWdBUkRGQ0VFY2FqWUNCQThMSXdCQklHc2lBeVFBSUFOQkNHb2dBQ0FBS0FJRUlBQW9BZ0JyUVJ4dFFRRnFFTWdJSUFBb0FnUWdBQ2dDQUd0QkhHMGdBRUVJYWhESENDSUNLQUlJSUFFUXhRZ2FJQUlnQWlnQ0NFRWNhallDQ0NBQUlBSVEzQW9nQWhER0NDQURRU0JxSkFBTFFBRUJmeUFBS0FJSUlnTWdBaUFCYTJvaEFnTkFJQUlnQTBaRkJFQWdBeUFCS0FJQU5nSUFJQUZCQkdvaEFTQURRUVJxSVFNTUFRc0xJQUFnQWpZQ0NBdW1BUUVGZnlNQVFTQnJJZ0lrQUNBQUtBSVlJZ1FvQWd3aEFRSkFBa0FnQkNnQ0ZDSUZCRUFnQVNBRktBTHdBVWtOQVF3Q0N5QUJRZjcvL3dGTERRRUxJQVFnQVVFQmFqWUNEQ0FCSVFNTEFrQWdBdzBBSUFBb0FqQkZEUUFnQWtFUWFrR0N4QWNRRkNFQklBSkNBRGNEQUNBQ1FRQTJBZ2dnQUVFZ2FrRUNRZHo0RENBQ0lBRW9BZ0FnQVNBQkxBQUxRUUJJR3hDNkRpQUJFQThhQ3lBQ1FTQnFKQUFnQXdzSkFDQUFRUlFRdnhJTG1BTUJCWDhqQUVFUWF5SUVKQUFnQkNBQU5nSU1JQVFnQVRvQUN5QUVJQUkyQWdRZ0JDZ0NERUVNYWlFQklBUXNBQXNoQWlBRUtBSUVJUU1qQUVFd2F5SUFKQUFnQUNBQk5nSXNJQUFnQWpvQUt5QUFJQU0yQWlRZ0FDZ0NMRUVJYWlFQ0l3QkJFR3NpQVNBQVFSaHFOZ0lNSUFFZ0FqWUNDQ0FCS0FJTUlnSWdBU2dDQ0RZQ0FDQUNRUUEyQWdRZ0FDZ0NKQ0VDSUFBZ0FDa0RHRGNEQ0NNQVFTQnJJZ0VrQUNBQklBSTJBaHdnQVNBQVFTdHFOZ0lZSUFFZ0FDa0NDRGNERUNBQktBSWNFSU1CSVFNZ0FTZ0NHQ0VGSUFFZ0FTa0RFRGNEQ0NBQlFRaHFJUVlqQUVFUWF5SUNKQUFnQWlBRE5nSU1JQUlnQlRZQ0NBTkFJQUlvQWd3RVFDQUNLQUlJSVFVZ0JoQ0RBU0VISXdCQkVHc2lBeVFBSUFNZ0J6WUNEQ0FESUFVMkFnZ2dBeWdDRENJRktBSUFJQU1vQWdnc0FBQVEzZ1FnQlNnQ0JBUkFJQVVvQWdBZ0JTZ0NCQkFPR2dzZ0EwRVFhaVFBSUFZUWd3RWFJQUlnQWlnQ0RFRUJhellDREF3QkN3c2dBQ0FHS1FJQU53SVFJQUpCRUdva0FDQUJRU0JxSkFBZ0FFRXdhaVFBSUFSQkVHb2tBQXR2QVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dDUUNBQ0tBSU1JZ0FvQWdRZ0FpZ0NDQ2dDQUVZRVFDQUFMUUFJUVFGeElBSW9BZ2d0QUFSQkFYRkdEUUVMSUFBUW9SZ2dBQ0FDS0FJSUlnRW9BZ0EyQWdRZ0FDQUJMUUFFT2dBSUN5QUNRUkJxSkFBTFh3RURmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2pBRUVRYXlJQUlBSW9BZ3hCQkdvMkFnd2dBQ2dDRENFQklBQkJBVFlDQ0NBQklBQW9BZ2dpQXlBQktBSUFJZ0ZxTmdJQUlBQWdBU0FEYWpZQ0JDQUFLQUlFR2lBQ1FSQnFKQUFMSndFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQkRHQnlFQUlBRkJFR29rQUNBQUN5d0JBWDhqQUVFZ2F5SUZJQUEyQWh3Z0JTQUJOZ0lZSUFVZ0FqWUNGQ0FGSUFNMkFoQWdCU0FFTmdJTUN5TUJBWDhqQUVFUWF5SUJJQUEyQWd3Z0FTZ0NEQ0lBS0FJRUlBQW9BZ0JyUVRSdEN6RUJBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3UStnSXRBQXRCZ0FGeFFRQkhJUUFnQVVFUWFpUUFJQUFMTVFBZ0FFSFk5dzgyQWdRZ0FFSDQ5dzgyQWdBZ0FFR0ErQTgyQWdRZ0FFSGMrQTgyQWdBZ0FFR2crQTgyQWdBZ0FBc0xBQ0FBUVFBUTJBZ2dBQXNKQUNBQVFRQVFqUVVMRFFBZ0FDQUJRZWowRHhEQ0RBdURBZ0VEZnlNQVFTQnJJZ1VrQUNBQklRY2dCQkR1QXlFRUFrQUNRQ0FES0FJVUlnRkJ3Z0ZySWdaQkMwMUJBRUVCSUFaMFFmOFljUnNOQUNBQlFmNEFheUlCUVExTlFRQkJBU0FCZEVIVjVBQnhHdzBBUVFBaEFTQUhJQU1RK0FwRkRRRWdBMEVCRURnaUEwRW1heUlHUVFkTlFRQkJBU0FHZEVIYkFYRWJJQU5CeVFCclFRTkpjZzBBSUFOQkJXc09Bd0FCQUFFTElBUWhBUXNDUUFKQUlBRWlBd1JBSUFNZ0FpZ0NBQ0lCUncwQkN5QUFJQUlRV3hvTUFRc2dCVUVBTmdJWUlBVkNBRGNERUNBRlFnQTNBd2dnQUNBQklBZEJJR29pQUNBRlFRaHFJQUVnQUNBQktBSUFLQUlJRVFFQUlBSkJCR29RMWdRUWFSb0xJQVZCSUdva0FBdUVCUUVIZnlNQVFVQnFJZ01rQUNBRElBRTJBaXdnQXlBQ09nQWtJQU1nQVRZQ0lDQURJQUUyQWh3Z0F5QUFOZ0lZSUFOQ0FEY0RDQ0FEUWdBM0F3QWdBMEdBZ0lEOEF6WUNFQ0FBUWFnSGFpQUFRYndIYWlBQ0d5RUdJQUpCQVhNaEJ5QURRU0JxSVFnZ0EwRVlha0VFY2lFSkFrQURRQ0FHSUFOQkxHb1E3QUVpQkFSQUlBUW9BZ3doQkF3Q0N5QURJQU5CTEdvUTdBRUVRQ0FEUVFocUlRQkJBQ0VFQTBBZ0FDZ0NBQ0lBUlEwRElBTWdBQ2dDQ0RZQ01DQUdJQU5CTUdvUTBBRkJBRFlDQUF3QUN3QUxJQU5CTUdvZ0F5QURRU3hxRUpZQklBQW9BclFGSUFNb0Fpd1FsQUVpQkVVRVFDQUFLQUswQlNBQkVKUUJJUUVnQUVFQU9nQ1VBeUFBUWFnRWFrR2Z3QW9RR1NFQUlBTkIzTWNFUVp6bUFTQUNHellDUENBQUlBTkJQR29Rc0FOQmtOa0tFQmtnQ0JBdlFmellDaEFaSUFrUUwwR2E3Z3dRR1NFQUFrQWdBUVJBSUFOQk1Hb2dBUkJZREFFTElBTkJNR29RVlFzZ0FDQURRVEJxSWdBUVRSb2dBQkFQR2tFQUlRUU1BZ3NDUUFKQUFrQUNRQ0FFS0FJVUlnVkJ3UUJyUVFOSkRRQUNRQUpBSUFWQjB3QnJEZ1FCQlFVREFBc2dCVUU5UndSQUlBVkJ4Z0JHRFFJZ0JVSGtBRVlOQkNBRlFUdEhJQVZCTjBkeERRVWdBMEVJYWlFQUEwQWdBQ2dDQUNJQVJRMElJQU1nQUNnQ0NEWUNNQ0FHSUFOQk1Hb1EwQUVnQkRZQ0FBd0FDd0FMSUFNZ0JFRUFFRGcyQWl3TUJRc2dBeUFFUVFBUU9EWUNMQXdFQ3lBRElBUkJBQkE0TmdJc0RBTUxJQU1nQkNBSEVEZzJBaXdNQWdzZ0F5QUVRUUFRT0RZQ0xBd0JDd3NnQTBFSWFpRUFRUUFoQkFOQUlBQW9BZ0FpQUVVTkFTQURJQUFvQWdnMkFqQWdCaUFEUVRCcUVOQUJRUUEyQWdBTUFBc0FDeUFERUU4Z0EwRkFheVFBSUFRTFFnQWdBU2dDQUVFS1J3UkFRYjdUQmtIbnNBTkI1d0JCZ0wwREVBQUFDeUFBSUFGQkJHb2lBQ2dDRkNJQklBQkJDR29nQVJzb0FnQWdBQkRRQjBFQkVPZ09DNk1DQVFWL0lBQXRBR3hCQVhGRkJFQWpBRUVRYXlJRUpBQWdCQ0FBS0FJWU5nSUVRVFFRRlNFQ0lBUW9BZ1FoQlNBQ1FnQTNBZ0FnQWtHQWdJRDhBellDRUNBQ1FnQTNBaUFnQWtJQU53SUlJQUpCR0dvaUEwSUFOd0lBSUFJZ0F6WUNGQ0FDUWdBM0FpZ2dBa0dBZ0lEOEF6WUNNQ01BUVNCcklnRWtBQ0FGQkVBZ0FTQUNOZ0lVSUFGQkFEWUNFQ0FCUVp3Tk5nSU1JQUZCMFBFU05nSUlJQUVnQVVFSWFpSUROZ0lZSUFVZ0F4Q2hEaUFERUJZZ0FTQUNOZ0lVSUFGQkFEWUNFQ0FCUVowTk5nSU1JQUZCMFBFU05nSUlJQUVnQXpZQ0dDQUZJQU1Rb1E0Z0F4QVdDeUFCUVNCcUpBQWdCRUVBTmdJSUlBQkJPR29nQWhDRUdTQUVRUWhxRUlNWklBQWdBQ2dDYkVFQmNqWUNiQ0FFUVJCcUpBQUxJQUFvQWpnTEpRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBQ0FDUVF4cUVKWVBJQUpCRUdva0FBczdBUUYvSXdCQkVHc2lBaVFBSUFJZ0FDQUFRZGdDYWlBQkVNOFBJZ0UyQWd3Z0FDQUJRUkJxSUFKQkRHb1Fzd01oQUNBQ1FSQnFKQUFnQUF1TUFRRUNmeU1BUVNCcklnTWtBQUpBSUFJb0FnQWlCQ2dDQkVINHl4SkdRUUFnQkJ0RkJFQWdBU2dDSENJQktBSUFRUUE2QUFBZ0FVSDMvZ01RR1JvZ0FCQm5HZ3dCQ3lBRUtBSUlJUVFnQTBFQU5nSVlJQU5DQURjREVDQURRZ0EzQXdnZ0EwRUNOZ0lFSUFBZ0JDQUJJQU5CQ0dvZ0EwRUVhaUFDUVFScUVOZ0hFR2thQ3lBRFFTQnFKQUFMOEFJQkEzOGpBRUd3QVdzaUFpUUFJQUlnQVRZQ3JBRUNRQ0FCUlEwQUlBQkJwQUZxSWdFZ0FrR3NBV29RcVFJTkFDQUNRU0JxSUFFZ0FrR3NBV29pQVJDV0FTQUFJQUJCQkdvZ0FSRFFBU2dDQUNJQkVPWUtJZ01FZnlBRFFRQVFPQVZCQUFzUXhBWUNRQ0FCRU9ZS0lnTUVRQ0FES0FJVVFmWUJSZzBCQzBFQUlRTUxJQUFnQXdSL0lBTkJBUkE0QlVFQUN4REVCZ0pBQWtBQ1FBSkFJQUVRMXdRaUF5Z0NGRUg1QVdzT0F3QUNBUU1MSUFBZ0EwRUFFRGdReEFZTUFnc2dBa0tBZ0lDQWdBUTNBcVFCSUFJZ0FrRWdhaUlFTmdLZ0FTQUNRZWpYRWpZQ0NDQUNJQUpCQ0dvaUF6WUNHQ0FDSUFRMkFnd2dBU0FERU9VS0lBTVFGaUFDS0FLZ0FTSUJJQUlvQXFRQlFRSjBhaUVEQTBBZ0FTQURSZ1JBSUFKQklHb1EzQVVNQXdVZ0FDQUJLQUlBRU1RR0lBRkJCR29oQVF3QkN3QUxBQXNnQUNBRFFRSVFPQkRFQmlBQUlBTkJBUkE0RU1RR0N5QUFRUmhxSUFKQnJBRnFFTHNaQ3lBQ1FiQUJhaVFBQzlJQkFRSi9Jd0JCSUdzaUF5UUFJQUFnQVJEdURrVUVRQ0FESUFJUW5ob2dBMEVRYWlJQ0lBQWdBeENkR2lNQVFSQnJJZ1FrQUNBRUlBRTJBZ3dDZnlBQUlBRVE3ZzRFUUNBQUtBSUFRUUE2QUFBZ0FFR3l3d3NRR1NBRVFReHFJZ0VRTDBHWnBBd1FHU0FBUVFocUlBRVFtQXNRVFNnQ0FDMEFBRUVBUnd3QkMwRUFJQUFnQWhDZUQwVU5BQm9nQUVFSWFpQUVRUXhxRUpnTElBSVE0QUlnQkNnQ0RDRUJJQUJCSEdvZ0FoQ2ZEeUFCTmdJQVFRQUxHaUFFUVJCcUpBQWdBaEFQR2lBREVBOGFDeUFEUVNCcUpBQUxSZ0VCZnlBQlJRUkFRUUFQQ3lBQUtBSUVJZ0lFUUNBQ0tBSUFJQUVvQWdoQkFVRUJRZERTQ0VIUXB3TkJqQUVRU3dzZ0FDQUJJQUFnQVNnQ0FDZ0NDQkVCQUJDa0F3c3JBQ0FBUWFBSmFoRC9HaUFBUWRnQ2FoRC9HaUFBUWVnQmFoQ2NCQ0FBUWZnQWFoQ2NCQ0FBRUs0TEN3Y0FJQUFvQWdRTEZRQWdBQ2dDQUNJQUlBQWdBU0FDRU04UEVJRURDeE1BSUFBb0FnQWlBQ0FBSUFFUTRRY1FnUU1MRXdBZ0FDZ0NBQ0lBSUFBZ0FSRHpBaENCQXdzV0FDQUFRWWpBRWpZQ0JDQUFRYWpBRWpZQ0FDQUFDeTBBSUFCQjhMQVNOZ0lBSUFCQmhBRnFFS29CSUFCQjhBQnFFRThnQUVIY0FHb1FUeUFBUVRScUVGNGdBQXN3QVFOL0lBQW9BZ0FnQUNBQUxRQUxJZ0ZCR0hSQkdIVkJBRWdpQWhzaUF5QURJQUFvQWdRZ0FTQUNHMm9RNkE4THdnd0NDbjhDZmlNQVFkQUJheUlDSkFBZ0FpQUJOZ0lNSUFCQm9CWnFJUWtnQUVHVUdHb29BZ0FnQUVHY0dHb29BZ0FpQTBHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FKSUFOQkFYUkJBbW9RbEJBTElBSkJ5QUZxSUFrZ0FrRU1haER5QkNBQUtBS1VHQ0lJUVFGcklRb2dBRUdRR0dvb0FnQWhCeUFDS0FMTUFTRUdJQUlvQXNnQklRTUNRQUovQWtBRFFDQUZJQWhHRFFFZ0J5QURRUlJzYWlJRUxRQUlSUVJBSUFSQkFUb0FDQ0FFUVFBMkFnUWdCQ0FCTmdJQUlBY2dBMEVVYkdvaUFTQUZOZ0lRSUFFZ0JqWUNEQ0FBSUFBb0Fwd1lRUUZxTmdLY0dDQUFRYUFZYWlJQklBRW9BZ0JCQVdvaUJ6WUNBQ0FFUVFScURBTUxBa0FnQmlBRUtBSU1SZ1JBSUFRb0FnQWdBVVlOQVFzZ0JTQUVLQUlRU3dSQUlBSkJBVG9BdUFFZ0FpQUZOZ0xBQVNBQ1FRQTJBclFCSUFJZ0FUWUNzQUVnQWlBR05nSzhBU0FDSUFVMkFpQWdBaUFDS1FPNEFTSU1Od01ZSUFJZ0Fpa0RzQUVpRFRjREVDQUNJQVFvQWhBMkFzQUJJQUlnQkNrQ0NEY0R1QUVnQWlBRUtRSUFOd093QVNBRUlBVTJBaEFnQkNBTk53SUFJQVFnRERjQ0NDQUNJQUlvQXNBQlFRRnFOZ0xBQVNBSklBTkJBV29nQUNnQ2xCaHdJQUpCc0FGcUVMSUVJQUFnQUNnQ25CaEJBV28yQXB3WUlBQkJvQmhxSWdFZ0FTZ0NBRUVCYWlJSE5nSUFJQVJCQkdvTUJBc2dBMEVCYWtFQUlBTWdDa2NiSVFNZ0JVRUJhaUVGREFFTEN5QUVRUVJxSVFVTUFnc2dBa0VRYWtHR3RRTkI2d05CRGlBQ1FiQUJhaEFkSWdFUUZ5SURRUmhxUVpZMUVBNGFJQU1RR0NBQkVCNGdBRUdnR0dvb0FnQWhCMEVBQ3lFRklBQkJxQmhxS0FJQUlRUUNRQ0FBUWF3WWFpZ0NBRUVEYWtGOGNTSURRZDM5QTJ0Qi92OTdTd1JBSUFRaEFRd0JDeUFBUVpDQUJFRVFFTmtDSWdFMkFxZ1lRUUFoQXlBQlFRQTJBb0NBQkNBRUJFQWdCQ0FCTmdLQWdBUU1BUXNnQUNBQk5nS2tHQXNnQUNBRFFhUUNhallDckJnZ0FTQURha0VBUWFRQ0VIa2lCaEJWSUFaQkRHb1Ewd1lhSUFaQm1BRnFFTk1HR2lBQVFiUVlhaWdDQUNFRUFrQUNRQ0FBUWJnWWFpZ0NBQ0lEUVNCSkJFQWdCQ0VCREFFTElBQW9BcWdZSVFFQ1FDQUFLQUtzR0VFRGFrRjhjU0lJUWZuK0EydEIvdjk3U3dSQUlBRWhBd3dCQ3lBQVFaQ0FCRUVRRU5rQ0lnTTJBcWdZUVFBaENDQURRUUEyQW9DQUJDQUJCRUFnQVNBRE5nS0FnQVFNQVFzZ0FDQUROZ0trR0FzZ0FDQURJQWhxSWdFMkFyUVlJQUFnQ0VHSUFXbzJBcXdZSUFORkRRRWdBU0FFTmdLRUFVRUFJUU1nQVVFQU5nS0FBU0FFUVlBQmFpQUFRYkFZYWlBRUd5QUJOZ0lBQ3lBQUlBTkJBV28yQXJnWUlBRWdBMEVDZEdvZ0JqWUNBQXNnQUVHOEdHb2lBU0FCS0FJQVFRRnFOZ0lBSUFjZ0FDZ0NvQmhHQkVBZ0JTQUdOZ0lBREFFTElBQW9BcFFZSUFBb0Fwd1lJZ0ZCbGdGc1FaWUJha0hrQUc1SkJFQWdDU0FCUVFGMFFRSnFFSlFRQ3lBQ1FjZ0JhaUFKSUFKQkRHb1E4Z1FnQUNnQ2xCZ2lDa0VCYXlFTElBQW9BcEFZSVFnZ0FpZ0NEQ0VFSUFJb0Fzd0JJUWNnQWlnQ3lBRWhBMEVBSVFVRFFDQUZJQXBIQkVBZ0NDQURRUlJzYWlJQkxRQUlSUVJBSUFGQkFUb0FDQ0FCSUFZMkFnUWdBU0FFTmdJQUlBZ2dBMEVVYkdvaUF5QUZOZ0lRSUFNZ0J6WUNEQ0FBSUFBb0Fwd1lRUUZxTmdLY0dDQUFJQUFvQXFBWVFRRnFOZ0tnR0NBQlFRUnFJUVVNQXdzQ1FDQUJLQUlNSUFkSERRQWdCQ0FCS0FJQVJ3MEFJQUVnQmpZQ0JDQUJJQVEyQWdBZ0FDQUFLQUtnR0VFQmFqWUNvQmdnQVVFRWFpRUZEQU1MSUFVZ0FTZ0NFRXNFUUNBQ1FRRTZBTGdCSUFJZ0JUWUN3QUVnQWlBR05nSzBBU0FDSUFRMkFyQUJJQUlnQnpZQ3ZBRWdBaUFGTmdJZ0lBSWdBaWtEdUFFaUREY0RHQ0FDSUFJcEE3QUJJZzAzQXhBZ0FpQUJLQUlRTmdMQUFTQUNJQUVwQWdnM0E3Z0JJQUlnQVNrQ0FEY0RzQUVnQVNBRk5nSVFJQUVnRFRjQ0FDQUJJQXczQWdnZ0FpQUNLQUxBQVVFQmFqWUN3QUVnQ1NBRFFRRnFJQUFvQXBRWWNDQUNRYkFCYWhDeUJDQUFJQUFvQXB3WVFRRnFOZ0tjR0NBQUlBQW9BcUFZUVFGcU5nS2dHQ0FCUVFScUlRVU1Bd1VnQTBFQmFrRUFJQU1nQzBjYklRTWdCVUVCYWlFRkRBSUxBQXNMSUFKQkVHcEJoclVEUWVzRFFRNGdBa0d3QVdvUUhTSUFFQmNpQVVFWWFrR1dOUkFPR2lBQkVCZ2dBQkFlUVFBaEJRc2dCU2dDQUNFQUlBSkIwQUZxSkFBZ0FBdWdBUUVDZnlBQVFlQ0FBV29RRmlBQVFjZ2dhaUlCRU93Y0lBRVEyaG9nQVNBQktBS0FZQkEySUFCQnVCNXFJUUpCQUNFQkEwQWdBaWdDaEFJZ0FVMEVRQ0FDUVFBMkFvUUNCU0FDS0FLQUFpQUJRUVYwYWhEekF5QUJRUUZxSVFFTUFRc0xJQUlnQWlnQ2dBSVFOaUFBUWVBRWFpSUJFT1ljSUFFUTBSb2dBU0FCS0FMQUdSQTJJQUJCQ0dvaUFCRGdIQ0FBRU0wYUlBQWdBQ2dDd0FRUU5ndnpBZ0VDZnlNQVFmQUFheUlFSkFBZ0FDQUNOZ0lFSUFBZ0FUWUNBQ0FBUVFocUlnRkNBRGNEMEFRZ0FVS0FnSUNBd0FFM0FzUUVJQUVnQVRZQ3dBUWdBVUVNRVBrUElBQkI0QVJxSWdGQ0FEY0N6QmtnQVVIRUdXcENnSUNBZ0lBR053SUFJQUVnQVRZQ3dCa2dBVUV3RU9vUElBQkJ2Q0JxUW9DQWdJQ0FBVGNDQUNBQVFiZ2dhaUFBUWJnZWFqWUNBQ0FBUWNnZ2FpSUJRZ0EzQTVCZ0lBRkJoT0FBYWtLQWdJQ0E0QUEzQWdBZ0FTQUJOZ0tBWUNBQlFRWVE0ZzhnQUVId2dBRnFRUUEyQWdBQ1FDQURSUTBBSUFJUXJ3RWdBa0dFQW1vaUFTZ0NCQ0VESUFSQktHb2lBaUFCS0FJQUlnVTJBZ0FnQWlBRklBTkJNR3hxTmdJRUlBSVEvd2dnQkVFZ2FpSUNJQUVvQWdBZ0FTZ0NCRUV3YkdvaUFUWUNCQ0FDSUFFMkFnQWdBaEQvQ0FOQUlBUW9BaWdpQVNBRUtBSWdSZzBCSUFSQjBBQnFJQUFnQkVFd2FpQUVJQUVRNkF0QkNHb1FWaEJXRU84SElBUkJLR29RK0J3TUFBc0FDeUFFUWZBQWFpUUFJQUFMNFFFQkNIOGpBRUhBQVdzaUFpUUFJQUpCdUFGcUlBQkJIR29nQVJEdUhDQUFLQUtBQVNJRlFRRnJJUVlnQUNnQ2ZDRUhJQUVvQWdBaENDQUNLQUs4QVNFSklBSW9BcmdCSVFGQkFDRUFBa0FEUUNBQUlBVkhCRUFnQnlBQlFRUjBhaUlFTFFBRVJRMENBa0FnQkNnQ0NDQUpSdzBBSUFnZ0JDZ0NBRWNOQUVFQklRTU1Bd3NnQkNnQ0RDQUFTUTBDSUFGQkFXcEJBQ0FCSUFaSEd5RUJJQUJCQVdvaEFBd0JDd3NnQWtFSWFrR0d0UU5CbmdSQkRpQUNRYWdCYWhBZElnQVFGeUlCUVJocVFkSTFFQTRhSUFFUUdDQUFFQjRMSUFKQndBRnFKQUFnQXdzbUFDQUFRZ0EzQW9RQklBQkNnSUNBZ09BQU53SjhJQUFnQURZQ2VDQUFRUVlRcFJBZ0FBc05BQ0FBSUFGQnNPc1BFT0VKQzBvQkFYOGpBRUVRYXlJQ0pBQWdBRUtBZ0lDQWdBRTNBaVFnQUNBQU5nSWdJQUlnQVVFZ2FqWUNDQ0FDSUFFb0FpQWdBVWM2QUF3Z0FDQUNRUWhxRUpBUklBSkJFR29rQUNBQUN3MEFJQUFnQVVINDhnOFF3Z3dMRGdBZ0FCQWNJQUJCRUdvUXZCQUxVQUVDZnlNQVFSQnJJZ0lnQVRZQ0RDQUNJQUEyQWdoQkFDRUFRUUFoQVFOQUlBRkJBa1pGQkVBZ0FrRUlhaUFCUVFKMGFpZ0NBQ0lESUFBZ0FDQURTQnNoQUNBQlFRRnFJUUVNQVFzTElBQUxPZ0VCZndKQUlBQW9BZ1FpQWlBQUtBSUlTUVJBSUFJZ0FTZ0NBRFlDQUNBQUlBSkJCR28yQWdRTUFRc2dBQ0FCRU1JUUlBQW9BZ1FhQ3d2ZkJBSUpmd0orSXdCQkVHc2lCeVFBSUFFb0FnQWlBaWdDQUNJRklBSW9BZ1JCQW5ScUlRWkNDQ0VMUVFFaEFnSi9BMEFnQlNBR1J3UkFJQUFnQlNnQ0FDSURFRE1hUVFBZ0FDQURFSU1NSWdSRkRRSWFJQVFnQWlJRE9nQWdRUUFoQWlBREJFQWdCQ2tER0NJTUlBdENkNE9FSVFzZ0RFSUlnMElEaUtjaEFnc2dCVUVFYWlFRkRBRUxDeUFBS0FLTU5DQUxOd01ZSUFFb0FnQWhBU0FIUVFBNkFBd2dCeUFCTmdJSUlBQkJyQjFxSVFJakFFRWdheUlBSkFBZ0J5Z0NDQ0lES0FJQUlnRWdBeWdDQkVFQ2RHb2hBd0pBQTBBZ0FTQURSZ1JBUVFFaEFRd0NDeUFCS0FJQUlRVWdBVUVFYWlFQklBSW9BZ2dnQlJDTEVDMEFJQTBBQ3lBQVFRRTZBQndnQUVFQk5nSVlJQUJCQ0dwQjM3MEVFQlFoQVNBQUlBQXBBeGczQXdBZ0FTRURRUUFoQmlNQVFVQnFJZ2drQUFKL0FuOGpBRUVnYXlJQkpBQWdBa0VNYWlJSktBS2dDaUlLSUFsQnBBcHFLQUlBUWFRQmJHb2hCQU5BQWtBZ0JDQUtSd1JBSUFFZ0JFR2tBV3NpQkRZQ0NDQUFLUUlBSVFzZ0FVRUFOZ0lVSUFFZ0N6Y0NEQ0FCSUFRb0FxQUJRUUZyTmdJWUlBRkJDR29ROHgxRkRRRWdBVUVJYWhES0VDZ0NBQ0VHQ3lBQlFTQnFKQUFnQmd3Q0N5QUpLQUtnQ2lFS0RBQUxBQXNpQkVFRFJ3UkFJQWhCQ0dvUXp3Z2hBU0FFRUtjYklRWWdBVUVJTmdJa0lBRWdCallDQUNBQklBVXBBaEEzQWdRZ0FTQUZLUUlZTndJTUlBRWdCU2dDSURZQ0ZDQUJRUmhxSUFNUTRBSWdBaWdDQkNBQkVLZ0hJQUVRaHdWQkFDQUVRUUZHRFFFYUMwRUJDeUVCSUFoQlFHc2tBQ0FERUE4YUN5QUFRU0JxSkFBZ0FRc2hBQ0FIUVJCcUpBQWdBQXNOQUNBQUlBRkJ1TzBQRU9FSkN3b0FJQUFRaEFOQmYwY0xEQUFnQUJEcUJDQUFFSXNNQ3lnQUlBQkNBRGNDekFFZ0FFS0FnSUNBd0FFM0FzUUJJQUFnQURZQ3dBRWdBRUVNRU9RRUlBQUxJQUFnQUVLQWdJQ0F3QUEzQWhRZ0FDQUFOZ0lRSUFCQkhHb1FqQXdhSUFBTEVBQWdBQzBBSUVVRVFCQnZBQXNnQUFzd0FRSi9Jd0JCTUdzaUFpUUFJQUlnQUJDMUNTRURJQUFnQVJDekNTQUJJQU1Rc3drZ0F4Q3FBaUFDUVRCcUpBQUxEUUFnQUNBQlFaajNFUkRoQ1FzVkFDQUFJQUVRbng4aUFDQUJLQUpVTmdKVUlBQUxmQUVGZnlBQVFlUVNhaWdDQUNJRlFRRnJJUVlDUUFOQUlBTWdCVVlOQVNBQUtBTGdFaUFCUWVRQWJHb2lCQzBBV0FSQUlBSWdBaWdDWUNJSElBUW9BbUJMQkg4Z0JDQUNFUHNESUFJb0FtQUZJQWNMUVFGcU5nSmdJQUZCQVdwQkFDQUJJQVpIR3lFQklBTkJBV29oQXd3QkN3c2dCQ0FDRUpvTUN3c2xBQ0FDRUk4ZklRSWdBVUhrRW1vb0FnQWhBU0FBSUFJMkFnUWdBQ0FDSUFGd05nSUFDdzRBSUFBZ0FSRGpCa0VCT2dCWUN3b0FJQUJCdlRFUXpRd0xDd0FnQUVIcXVnVVF6UXdMSEFBZ0FFS0FnSUNBd0FBM0FoUWdBQ0FBTmdJUUlBQWdBUkRJQ1FzUkFDQUFJQUVnQWlBRFFkM3dCaER1RWdzSEFDQUJLQUlBQ3hFQUlBQWdBU0FDSUFOQjdQNEdFTzRTQzVVQkFRUi9Jd0JCb0FGcklnUWtBQ0FFSUFNNUE1QUJJQVFnQVRrRG1BRWdCQkJKSWdWQkNHcEI4NW9KRUE0YUlBVWdCRUdZQVdvUTBna2lCMEVJYWlJR1FmZndEQkFPR2lBR0lBSVFEaG9nQmtIMzhBd1FEaG9nQnlBRVFaQUJhaERTQ1VFSWFpSUNRY2VLQ1JBT0dpQUNRYi81QUJBT0dpQUNRZk9hQ1JBT0dpQUFJQVZCREdvUVFpQUZFRkVnQkVHZ0FXb2tBQXQyQVFOL0l3QkJrQUZySWdVa0FDQUZFRWtpQmtFSWFpSUVRZk9hQ1JBT0dpQUVJQUVRbWdZZ0JFSDM4QXdRRGhvZ0JDQUNFQTRhSUFSQjkvQU1FQTRhSUFRZ0F4Q2FCaUFFUWNlS0NSQU9HaUFFUWQwOUVBNGFJQVJCODVvSkVBNGFJQUFnQmtFTWFoQkNJQVlRVVNBRlFaQUJhaVFBQzBvQUlBQkJBRFlDRkNBQUlBRTJBaGdnQUVFQU5nSU1JQUJDZ3FDQWdPQUFOd0lFSUFBZ0FVVTJBaEFnQUVFZ2FrRUFRU2dRZVJvZ0FFRWNhaERyRkNBQVFvQ0FnSUJ3TndKSUN3d0FJQUJCQUNBQUVNa0pHd3R4QVFOL0l3QkJvQUZySWdNa0FDQURRUWhxRUVraUJFRUlhaUlGUWRTMUNoQU9HaUFGSUFFUW1nWWdCVUdUNXdrUURob2dCVUh6bWdrUURob2dBeUFDS1FJQU53T1lBU0FFSUFOQm1BRnFFTFlFUVFocVFmT2FDUkFPR2lBQUlBUkJER29RUWlBRUVGRWdBMEdnQVdva0FBdHlBUU4vSUFCQ2dJQ0FnREEzQWhBZ0FDQUFOZ0lNSUFBZ0FTZ0NCQ0lDRUx3TklBRW9BZ0FpQVNBQ1FRSjBhaUVFSUFBb0FoQWhBd04vSUFFZ0JFWUVmeUFBQlNBQUlBTkJBV29pQWpZQ0VDQUFLQUlNSUFOQkFuUnFJQUVvQWdBMkFnQWdBVUVFYWlFQklBSWhBd3dCQ3dzTEdRQWdBQ0FCSUFJZ0EwRzQ2UTlCMk9vUFFaanBEeERCREF0SUFRRi9Jd0JCRUdzaUJpUUFJQVlnQlRZQ0RDQUdJQVEzQXdBZ0FDQUdLQUlNSUFZcEF3QVFuUVFpQUNBRE5nSUVJQUFnQWpZQ0FDQUFJQUUyQWdBZ0JrRVFhaVFBSUFBTEdnQWdBQ0FCRUxvQklnQkZCRUJCQUE4TElBQXZBUjRnQWtZTGpRRUJCSDhqQUVIZ0FXc2lCQ1FBSUFSQklHb2lCU0FBS0FJRUlnWW9BZ0JCY2lBQUtBSUlFQkFnQkVFUWFpSUhJQVlvQWdBZ0F4QTNJQVVnQnhBU0dpQUZRYVRDQ2hBT0dpQUVJQVlvQWdBb0FnQW9BZ0FRZ1FJZ0JTQUVFQklhSUFVZ0FoQU9HaUFGSUFFUUVob2dCQ2dDM0FFaEFDQUVFQThhSUFjUUR4b2dCUkFSSUFSQjRBRnFKQUFnQUF0YUFRTi9Jd0JCTUdzaUFpUUFJQUpCQ0dvZ0FrRVFhaUlESUFKQkpHb2lCRVlnQVVJQVdYSUVmeUFEQlNBRFFTMDZBQUJDQUNBQmZTRUJJQU5CQVdvTElBUWdBUkNZRXlBQUlBTWdBaWdDQ0JEbUNTQUNRVEJxSkFBTERnQWdBQ0FCSUFFUTBnZ1EvZ1lMRXdBZ0FDQUJLQUlBSWdBMkFnQWdBQkMwQmd1SUFRRURmeU1BUVJCcklnUWtBQUpBSUFFdEFBQWlBMFVFUUVFQUlRTU1BUXNDUUNBQkxRQUJSUVJBSUFBZ0F6b0FBQXdCQzBFQUlRTWdCRUVNYWlBQklBSVFpZ1pGRFFFQ1FDQUVLQUlNSWdVZ0FoRGhEQ0lCUVg5SERRQkJJQ0VCSUFWQnI4QUFSZzBBSUFWQm9BRkhEUUlMSUFBZ0FUb0FBQXRCQVNFREN5QUVRUkJxSkFBZ0F3c1JBQ0FBS0FJQUlnQUVRQ0FBRU1FRkN3c09BQ0FBSUFFUS9BUTJBZ0FnQUF0dUFRTi9Ba0FnQVJDR0RTSUNRZkQvLy84RFNRUkFBa0FnQWhDRUNnUkFJQUFnQWhEQUJRd0JDeUFBSUFJUWl3ZEJBV29pQXhDVEJpSUVFSmtDSUFBZ0F4Q0tCeUFBSUFJUWh3UWdCQ0VBQ3lBQUlBRWdBaERDQkNBQUlBSkJBblJxUVFBUW1RSU1BUXNRdUFNQUN3dUNBUUVEZnlNQVFSQnJJZ1VrQUFKQUlBSWdBQkNiQVNJRUlBQVFPeUlEYTAwRVFDQUNSUTBCSUFBUXdRTVFnd0VpQkNBRGFpQUJJQUlRdVFNYUlBQWdBaUFEYWlJQkVKZ0lJQVZCQURvQUR5QUJJQVJxSUFWQkQyb1EwUUlNQVFzZ0FDQUVJQUlnQTJvZ0JHc2dBeUFEUVFBZ0FpQUJFSllJQ3lBRlFSQnFKQUFnQUF1eUFRRUdmeU1BUVJCcklnTWtBQ0FCS0FJQUlRaEJBQ0FBS0FJQUlnY2dBQkRHQlNnQ0FFSGRGMFlpQkJ0QmZ5QUNLQUlBSUFkcklnVkJBWFFpQmtFRUlBWWJJQVZCLy8vLy93ZFBHeUlGRUtJS0lnWUVRQ0FFUlFSQUlBQVFwUWdhQ3lBRFFkc1hOZ0lFSUFBZ0EwRUlhaUFHSUFOQkJHb1E5QUVpQkJENkV5RUFJQVFRMkFFZ0FTQUFLQUlBSUFnZ0IydHFOZ0lBSUFJZ0FDZ0NBQ0FGUVh4eGFqWUNBQ0FEUVJCcUpBQVBDeEJ2QUF1V0FRRUVmeUFCTFFBTEVQc0VSUVJBSUFBZ0FTa0NBRGNDQUNBQUlBRW9BZ2cyQWdnZ0FBOExJQUFoQWlBQktBSUFJUVFDUUFKQUFrQWdBU2dDQkNJREVJUUtCRUFnQWlBREVNQUZEQUVMSUFOQjhQLy8vd05QRFFFZ0FpQURFSXNIUVFGcUlnVVFrd1lpQVJDWkFpQUNJQVVRaWdjZ0FpQURFSWNFSUFFaEFnc2dBaUFFSUFOQkFXb1F3Z1FNQVFzUXVBTUFDeUFBQ3hFQUlBQWdBQ2dDQUVFRWFqWUNBQ0FBQ3hFQUlBQWdBQ2dDQUVFQmFqWUNBQ0FBQzlJQ0FRRi9Ba0FDUUNBREtBSUFJQUpIRFFCQkt5RUtJQUFnQ1NnQ1lFY0VRRUV0SVFvZ0NTZ0NaQ0FBUncwQkN5QURJQUpCQVdvMkFnQWdBaUFLT2dBQURBRUxBa0FnQmhBN1JTQUFJQVZIY2tVRVFFRUFJUVlnQ0NnQ0FDSUFJQWRyUVo4QlNnMEJJQVFvQWdBaEFTQUlJQUJCQkdvMkFnQWdBQ0FCTmdJQURBSUxRWDhoQmlBSklBbEI2QUJxSUFBUWdBMGdDV3NpQUVIY0FFb05BQ0FBUVFKMUlRVUNRQUpBQWtBZ0FVRUlhdzREQUFJQUFRc2dBU0FGU2cwQkRBSUxJQUZCRUVjZ0FFSFlBRWh5RFFBZ0F5Z0NBQ0lBSUFKR0lBQWdBbXRCQWtweURRRWdBRUVCYXkwQUFFRXdSdzBCSUFSQkFEWUNBQ0FESUFCQkFXbzJBZ0FnQUNBRlFZQ1REMm90QUFBNkFBQkJBQThMSUFNZ0F5Z0NBQ0lBUVFGcU5nSUFJQUFnQlVHQWt3OXFMUUFBT2dBQUlBUWdCQ2dDQUVFQmFqWUNBRUVBSVFZTElBWVBDeUFFUVFBMkFnQkJBQXNSQUNBQUlBRWdBQ2dDQUNnQ0hCRUJBQXNMQUNBQVFiUzlJQkRlQXd1YkF3RURmeU1BUVJCcklnb2tBQ0FLSUFBNkFBOENRQUpBQWtBZ0F5Z0NBQ0FDUncwQVFTc2hDeUFBUWY4QmNTSU1JQWt0QUJoSEJFQkJMU0VMSUFrdEFCa2dERWNOQVFzZ0F5QUNRUUZxTmdJQUlBSWdDem9BQUF3QkN5QUdFRHRGSUFBZ0JVZHlSUVJBUVFBaEFDQUlLQUlBSWdFZ0IydEJud0ZLRFFJZ0JDZ0NBQ0VBSUFnZ0FVRUVhallDQUNBQklBQTJBZ0FNQVF0QmZ5RUFBbjhnQ1NJRlFScHFJUVlnQ2kwQUR5RUhBMEFDUUNBRklBWkhCSDhnQlMwQUFDQUhSdzBCSUFVRklBWUxEQUlMSUFWQkFXb2hCUXdBQ3dBTElBbHJJZ1ZCRjBvTkFRSkFBa0FDUUNBQlFRaHJEZ01BQWdBQkN5QUJJQVZLRFFFTUF3c2dBVUVRUnlBRlFSWkljZzBBSUFNb0FnQWlBU0FDUmlBQklBSnJRUUpLY2cwQ0lBRkJBV3N0QUFCQk1FY05Ba0VBSVFBZ0JFRUFOZ0lBSUFNZ0FVRUJhallDQUNBQklBVkJnSk1QYWkwQUFEb0FBQXdDQ3lBRElBTW9BZ0FpQUVFQmFqWUNBQ0FBSUFWQmdKTVBhaTBBQURvQUFDQUVJQVFvQWdCQkFXbzJBZ0JCQUNFQURBRUxRUUFoQUNBRVFRQTJBZ0FMSUFwQkVHb2tBQ0FBQ3dvQUlBQWdBVUVDZEdvTEVRQWdBQ0FCSUFBb0FnQW9BZ3dSQVFBTEN3QWdBRUdzdlNBUTNnTUxFQUFnQUNBQlFZQ0FnSUI0Y2pZQ0NBc2tBQ0FBUVFKUEJIOGdBRUVFYWtGOGNTSUFJQUJCQVdzaUFDQUFRUUpHR3dWQkFRc0xqQUVCQkg4Z0FDRURBa0FnQVNBQ0VKMElJZ1JCOFAvLy93TkpCRUFDUUNBRUVJUUtCRUFnQXlBRUVNQUZEQUVMSUFNZ0JCQ0xCMEVCYWlJRkVKTUdJZ1lRbVFJZ0F5QUZFSW9ISUFNZ0JCQ0hCQ0FHSVFNTEEwQWdBU0FDUndSQUlBTWdBU2dDQUJDWkFpQURRUVJxSVFNZ0FVRUVhaUVCREFFTEN5QURRUUFRbVFJTUFRc1F1QU1BQ3lBQUN3OEFJQUFnQUNnQ0FDZ0NIQkVBQUFzTUFDQUFJQUZCQkdvUStRWUxEd0FnQUNBQUtBSVlJQUZxTmdJWUN3Y0FJQUJCZjBZTER3QWdBQ0FBS0FJQUtBSVlFUUFBQ3dvQUlBQkJHSFJCR0hVTEZBQWdBU0FBSUFFb0FnQWdBQ2dDQUJEMkZCc0xpZ0VCQW44Z0FTZ0NBQ0lESUFBb0FnQVF4UUVoQkNBQ0tBSUFJQU1ReFFFaEF3Si9Ba0FnQkVVRVFFRUFJQU5GRFFJYUlBRWdBaENwQVVFQklBRW9BZ0FnQUNnQ0FCREZBVVVOQWhvZ0FDQUJFS2tCREFFTElBTUVRQ0FBSUFJUXFRRkJBUThMSUFBZ0FSQ3BBVUVCSUFJb0FnQWdBU2dDQUJERkFVVU5BUm9nQVNBQ0VLa0JDMEVDQ3d1RkFRSURmd0YrQWtBZ0FFS0FnSUNBRUZRRVFDQUFJUVVNQVFzRFFDQUJRUUZySWdFZ0FFSUtnQ0lGUXZZQmZpQUFmS2RCTUhJNkFBQWdBRUwvLy8vL253RldJUUlnQlNFQUlBSU5BQXNMSUFXbklnSUVRQU5BSUFGQkFXc2lBU0FDUVFwdUlnTkI5Z0ZzSUFKcVFUQnlPZ0FBSUFKQkNVc2hCQ0FESVFJZ0JBMEFDd3NnQVF0NEFRTjhSQUFBQUFBQUFQQy9JQUFnQUtJaUFpQUFvaUlESUFJZ0FxSWlCS0lnQkNBQ1JNMGJsNys1WW9NL29rUk85T3o4clYxb1A2Q2lJQUpFempPTWtQTWRtVCtpUlA1YWhoM0pWS3Mvb0tDaUlBTWdBa1J5bjVrNC9STEJQNkpFbjhrWU5FMVYxVCtnb2lBQW9LQWlBS01nQUNBQkc3WUxaQUlCZndGK0l3QkJFR3NpQWlRQUlBQUNmaUFCUlFSQVFnQU1BUXNnQWlBQnJVSUFJQUZuSWdGQjBRQnFFTXdDSUFJcEF3aENnSUNBZ0lDQXdBQ0ZRWjZBQVNBQmE2MUNNSVo4SVFNZ0Fpa0RBQXMzQXdBZ0FDQUROd01JSUFKQkVHb2tBQXZ3QVFJQ2Z3SjhJQUM4SWdGQmdJQ0EvQU5HQkVCREFBQUFBQThMQWtBZ0FVR0FnSUQ4QjJ0Qi8vLy9oM2hOQkVBZ0FVRUJkQ0lDUlFSQUVLY1ZEd3NnQVVHQWdJRDhCMFlOQVNBQ1FZQ0FnSGhKSUFGQkFFNXhSUVJBSUFBUXRRMFBDeUFBUXdBQUFFdVV2RUdBZ0lEY0FHc2hBUXRCa09FTkt3TUFJQUVnQVVHQWdNejVBMnNpQVVHQWdJQjhjV3UrdXlBQlFROTJRZkFCY1NJQ1FZamZEV29yQXdDaVJBQUFBQUFBQVBDL29DSURJQU9pSWdTaVFaamhEU3NEQUNBRG9rR2c0UTByQXdDZ29DQUVvaUFCUVJkMXQwR0k0UTByQXdDaUlBSkJrTjhOYWlzREFLQWdBNkNndGlFQUN5QUFDd2dBSUFDOFFSUjJDOEVEQVFaL0l3QkJ3QUZySWdRa0FDQUFJQUlRSUNFQ0lBQWdBeEFnSVFNQ1FBSkFJQUl2QVI1QjdpbEdCRUFnQXk4QkhrSHVLVVlOQVFzZ0JDQUFRWElnQVJBUUlBUkJtTE1CRUE0YUlBUW9BcndCSVFJZ0JCQVJEQUVMSUFKQkFoQWJJUVVnQWtFREVCc2hCaUFDUVFRUUd5RUNJQU5CQWhBYklRY2dBMEVERUJzaENDQURRUVFRR3lFRElBUWdBQ0FGRU4wQklBUW9BZ1FoQlNBRUxRQUJJUWtnQkNBQUlBY1EzUUVDUUNBSlJRMEFJQVF0QUFGRkRRQWdCU0FFS0FJRVJnMEFJQVFnQUVGeUlBRVFFQ0FFUWMzSENoQU9HaUFFUWZtV0F4QU9HaUFFS0FLOEFTRUNJQVFRRVF3QkN5QUVJQUFnQmhEZEFTQUVLQUlFSVFVZ0JDMEFBU0VHSUFRZ0FDQUlFTjBCQWtBZ0JrVU5BQ0FFTFFBQlJRMEFJQVVnQkNnQ0JFWU5BQ0FFSUFCQmNpQUJFQkFnQkVIK3h3b1FEaG9nQkVINWxnTVFEaG9nQkNnQ3ZBRWhBaUFFRUJFTUFRc2dCQ0FBSUFJUTNRRWdCQ2dDQkNFRklBUXRBQUVoQmlBRUlBQWdBeERkQVVFQUlRSWdCa1VOQUNBRUxRQUJSUTBBSUFVZ0JDZ0NCRVlOQUNBRUlBQkJjaUFCRUJBZ0JFR3l5QW9RRGhvZ0JFSDVsZ01RRGhvZ0JDZ0N2QUVoQWlBRUVCRUxJQVJCd0FGcUpBQWdBZ3NpQVFGL0lBQWdBUkN4QWdSL0lBQWdBQ0FCRUxvQktBSUFLQUlJRUhjRlFRQUxDeTBCQW44Q1FDQUFJQUVRdWdFaUEwVU5BQ0FETHdFZVFSZEhEUUFnQUNBQUlBRVF3UUVRN3dFaEFnc2dBZ3NMQUNBQUlBRkJFeEQxQmdzNEFRRi9Jd0JCSUdzaUFpUUFJQUlnQVRZQ0VDQUNRUmhxSUFBZ0FTQUNRUkJxRUlNUElBSW9BaGdoQUNBQ1FTQnFKQUFnQUVFTWFndTlBUUVHZnlBQ0tBSUFJZ1FvQWdBaEJRSi9Ba0FnQVNnQ0FDSUdLQUlBSWdjZ0FDZ0NBQ0lES0FJQUlnaFBCRUJCQUNBRklBZFBEUUlhSUFFZ0JEWUNBQ0FDSUFZMkFnQkJBU0FCS0FJQUlnSW9BZ0FnQUNnQ0FDSURLQUlBVHcwQ0dpQUFJQUkyQWdBZ0FTQUROZ0lBREFFTElBVWdCMGtFUUNBQUlBUTJBZ0FnQWlBRE5nSUFRUUVQQ3lBQUlBWTJBZ0FnQVNBRE5nSUFRUUVnQWlnQ0FDSUFLQUlBSUFoUERRRWFJQUVnQURZQ0FDQUNJQU0yQWdBTFFRSUxDNjBaQVFoL0l3QkIwQUZySWdRa0FFR2VuU0F0QUFCRkJFQkJucDBnUVFFNkFBQkJuWjBnUVFFNkFBQUxJQUV2QVI0aEJnSkFBa0FnQTBFQmF5SUZJQUVvQWdRZ0FTZ0NBQ0lIYTBFQ2RTSUpTUVJBSUFjZ0JVRUNkR29vQWdBaUIwRUNka0VCY1NBSFFmK0hmbkVRMVExcUlBa2dBMnRHRFFFZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBIM2x3TVFEaG9nQkNnQ3pBRWhBaUFERUJFTUFndEJBQ0VISUFVZ0NVWU5BQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRZmVYQXhBT0dpQUVLQUxNQVNFQ0lBTVFFUXdCQ3lBQ0tBSVFJQWRCd0FCeElndEJCblpGY1FSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFOQm5NY0VFQTRhSUFRb0Fzd0JJUUlnQXhBUkRBRUxBa0FDUUFKQUlBZEZEUUFnQjBHNGdBUnhFTlVOUVFKUEJFQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0JDQUFRYllrRURjZ0F5QUVFQklhSUFOQjVlMEJFQTRhSUFRb0Fzd0JJUUlnQkJBUEdpQURFQkVNQkFzZ0JoRDdGU0VLQW44Q1FDQUdRZGdBYXlJRlFRWk5RUUJCQVNBRmRFSFZBSEViRFFBZ0JrR3lBbXNpQlVFR1RVRUFRUUVnQlhSQjFRQnhHdzBBUVFBTUFRdEJBUXNoQlFKL0lBWkI0Z0JyUVFKUEJFQWdCU0FHUWNBQ1J3MEJHZ3NnQUVHQUFXcEJseWNRYUFzaENBSi9JQVpCdWdKSEJFQkJBQ0FHUWVBQVJ3MEJHZ3NnQUVHQUFXcEJrU2NRYUFzaENRSi9Ba0FDUUFKQUFrQUNRQUpBQWtBZ0IwRUJjUVJBSUFrZ0NuSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEdQdmdFUURob2dCQ2dDekFFaEFpQURFQkVNRFFzZ0FDQUFJQUVvQWdBZ0EwRUNkR29vQWdBUXpRSVFkMFVFUUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWZDTEFoQU9HaUFFS0FMTUFTRUNJQU1RRVF3TkN5QUNLQUlFUVFSUERRRWdBMEVCYWlFREN3Si9JQWRCQW5FRVFDQUlJQVpCM3dCR2NpQUdRYmtDUmlBSmNuSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhPNFFrUURob2dBMEdncFFNUURob2dCQ2dDekFFaEFpQURFQkVNRGdzZ0IwRUVjUVJBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CbWJFRUVBNGFJQVFvQXN3QklRSWdBeEFSREE0TElBQWdBU2dDQUNBRFFRSjBhaWdDQUJETkFpRUlBa0FnQlNBSmNrRUJSZ1JBSUFBZ0NCQjNEUUVnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEdjM0FvUURob2dBMEhVNHdRUURob2dCQ2dDekFFaEFpQURFQkVNRHdzZ0FDQUlFRkFOQUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWRla0NoQU9HaUFEUWFTbEF4QU9HaUFFS0FMTUFTRUNJQU1RRVF3T0N5QUNLQUlFUVFSSkJFQWdBMEVCYWlFRFFRQU1BZ3NnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhPM2dRUURob2dCQ2dDekFFaEFpQURFQkVNRFF0QkFDQUhRUVJ4UlEwQUdpQUZSUVJBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CMHIwQkVBNGFJQVFvQXN3QklRSWdBeEFSREEwTElBQWdBMEVDZENJRklBRW9BZ0JxS0FJQUVNMENJUWtnQUNBRklBRW9BZ0JxS0FJRUVNMENJUWdDUUNBQUlBa1FyZ0VFUUNBQUlBZ1FyZ0VOQVFzZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHTDhRa1FEaG9nQTBHVmxnRVFEaG9nQkNnQ3pBRWhBaUFERUJFTURRc2dBaENpQnlFRklBQWdDUkJGSVFrZ0FDQUlFRVVoQ0NBRklBbEhCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEdmdEFvUURob2dBeUFGRUNFYUlBTkI2SkVLRUE0YUlBTWdDUkFoR2lBRUtBTE1BU0VDSUFNUUVRd05DeUFGSUFoSERRSWdBMEVDYWlFRFFRRUxJUWtnQjBFSWNRUkFJQUlvQWdSQkEwWUVRQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRZmVDQ1JBT0dpQUVLQUxNQVNFQ0lBTVFFUXdOQ3lBQUlBQWdBU2dDQUNBRFFRSjBhaWdDQUNJRkVNMENJZ2dReHdGRkJFQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0EwSG44UWtRRGhvZ0EwRzgwQUVRRGhvZ0JDZ0N6QUVoQWlBREVCRU1EUXNnQUNBRkVIQVFvd0pGQkVBZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHbThnQVFEaG9nQkNnQ3pBRWhBaUFERUJFTURRc2dBaENpQnlJRklBQWdDQkJGSWdoSERRTWdBMEVCYWlFREN3SkFJQWRCRUhGRkRRQWdBaWdDQkVFRFJnUkFJQVJCRUdvaUF5QUFRWElnQVJBUUlBTkJ0b01KRUE0YUlBUW9Bc3dCSVFJZ0F4QVJEQTBMSUFBZ0FDQUJLQUlBSUFOQkFuUnFLQUlBRU0wQ0lnVVF4d0ZGQkVBZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHZjhna1FEaG9nQTBHODBBRVFEaG9nQkNnQ3pBRWhBaUFERUJFTURRc2dBaENpQnlJSUlBQWdCUkJGSWdWSEJFQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0EwSHp0QW9RRGhvZ0F5QUlFQ0VhSUFOQjZKRUtFQTRhSUFNZ0JSQWhHaUFFS0FMTUFTRUNJQU1RRVF3TkN5QURRUUZxSVFNZ0FDZ0NCQzBBTEEwQUlBQW9BZ0FvQWdBUVIwVWdCa0hnQUd0QkFrbHlJQVpCdWdKclFRSkpjZzBBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQVFnQUVHM0pCQTNJQU1nQkJBU0dpQURRYXVnQVJBT0dpQUVLQUxNQVNFQ0lBUVFEeG9nQXhBUkRBd0xJQWRCSUhFRVFDQUdRZUFBYTBFQ1NTQUdRYm9DYTBFQ1NYSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEdLN3dFUURob2dCQ2dDekFFaEFpQURFQkVNRFFzZ0FpZ0NCRUVEUmdSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFOQjhJTUpFQTRhSUFRb0Fzd0JJUUlnQXhBUkRBMExJQUFnQUNBQktBSUFJQU5CQW5ScUtBSUFJZ2dRelFJUUlDSUZSUTBFSUFVdkFSNUJIRWNFUUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWVMMEJoQU9HaUFFS0FMTUFTRUNJQU1RRVF3TkN5QUVRZ0EzQXdBZ0FDQUZLQUlBS0FJTUlBUVF3d1ZGRFFVZ0JDa0RBRUlFVWdSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFOQjR2UUdFQTRhSUFRb0Fzd0JJUUlnQXhBUkRBMExBa0FnQUNBRktBSUFLQUlJSWdVUXRnRUVRQ0FBSUFVUVJVRUNSZzBCQ3lBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUVlTQ0J4QU9HaUFFS0FMTUFTRUNJQU1RRVF3TkN5QUFJQWdRY0JDakFrVUVRQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRZDd5QUJBT0dpQUVLQUxNQVNFQ0lBTVFFUXdOQ3lBRFFRRnFJUU1MSUFNZ0MwVU5CeG9nQmtIZkFHc2lCVUVFUzBFQklBVjBRUmx4UlhJTkJRd0dDeUFFUVJCcUlnTWdBRUZ5SUFFUUVDQURRY0xkQkJBT0dpQUVLQUxNQVNFQ0lBTVFFUXdLQ3lBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWZlekNoQU9HaUFESUFVUUlSb2dBMEhva1FvUURob2dBeUFJRUNFYUlBUW9Bc3dCSVFJZ0F4QVJEQWtMSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CeDdRS0VBNGFJQU1nQlJBaEdpQURRZWlSQ2hBT0dpQURJQWdRSVJvZ0JDZ0N6QUVoQWlBREVCRU1DQXRCbXk5QnhxOENRZW9EUVlMQ0FSQUFBQXRCckowSlFjYXZBa0h6QTBHQ3dnRVFBQUFMSUFaQnVRSkdJQVpCd0FKR2NnMEFJQVJCRUdvaUF5QUFRWElnQVJBUUlBTkJtZXNNRUE0YUlBTkJtODRLRUE0YUlBTkIvdjhFRUE0YUlBUW9Bc3dCSVFJZ0F4QVJEQVVMSUFJb0FoQkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEd1NGdFUURob2dCQ2dDekFFaEFpQURFQkVNQlFzZ0FDQUFJQUVvQWdBZ0EwRUNkR29vQWdBUXpRSVFVRVVOQWlBRFFRRnFDeUVESUFkQmdBRnhCRUFnQ1NBS2NrVUVRQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRYS9KQ2hBT0dpQURRWUgvQkJBT0dpQUVLQUxNQVNFQ0lBTVFFUXdGQ3lBQUlBQWdBU2dDQUNBRFFRSjBhaWdDQUJETkFoQjNSUVJBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CbjR3Q0VBNGFJQVFvQXN3QklRSWdBeEFSREFVTElBSW9BZ1JCQkU4RVFDQUVRUkJxSWdNZ0FFRnlJQUVRRUNBRFFZZmVCQkFPR2lBRUtBTE1BU0VDSUFNUUVRd0ZDeUFDS0FJUURRTWdBMEVCYWlFREN5QUhRWUFDY1FSQUlBWkI0d0JIQkVBZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHanV3SVFEaG9nQTBIakFCQ0JBUkFPR2lBRFFhNi9BaEFPR2lBRElBWVFnUUVRRGhvZ0JDZ0N6QUVoQWlBREVCRU1CUXNnQjBHQUNIRkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhkdmdJUURob2dBMEhqQUJDQkFSQU9HaUFFS0FMTUFTRUNJQU1RRVF3RkN5QUFJQUVnQVNnQ0FDQURRUUowYWlnQ0FCRElCU0lDRFFRZ0EwRUJhaUVEQ3lBSFFZQUVjVVVOQUNBR1FlSUFSaUFHUWNBQ1JuSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhvdWdJUURob2dBMEhpQUJDQkFSQU9HaUFEUWRPNUFoQU9HaUFEUWNBQ0VJRUJFQTRhSUFOQnJyOENFQTRhSUFNZ0JoQ0JBUkFPR2lBRUtBTE1BU0VDSUFNUUVRd0VDeUFIUVlBSWNVVUVRQ0FFUVJCcUlnTWdBRUZ5SUFFUUVDQURRWW0rQWhBT0dpQURJQVlRZ1FFUURob2dCQ2dDekFFaEFpQURFQkVNQkFzZ0FDQUJJQUVvQWdBZ0EwRUNkR29vQWdBUXlBVWlBZzBEQzBFQUlRSU1BZ3NnQkVFUWFpSURJQUJCY2lBQkVCQWdBMEhtaEFJUURob2dCQ2dDekFFaEFpQURFQkVNQVFzZ0JFRVFhaUlESUFCQmNpQUJFQkFnQTBHMGp3Y1FEaG9nQkNnQ3pBRWhBaUFERUJFTElBUkIwQUZxSkFBZ0FnczRBUUYvUVFNaEFpQUFRY0FDUmlBQVFlSUFhMEVDU1hJZ0FTZ0NCRUVEUm5FRWYwRURCU0FCRUtJSElBRW9BZ3hxSUFBUTFnMXFDd3RTQUFKL0lBQW9BZ1FpQUVFR1N3UkFRUUFnQUVILy8vLy9CMGNOQVJwQjFaSUhRY2F2QWtIZUFVR3V5UU1RQUFBTFFRRWdBSFFpQUVIU0FIRkZCRUFnQUVFTWNVVUVRRUVCRHd0QkF3OExRUUlMQzBvQkFYOENRQ0FCUlEwQUlBRW9BZ3dpQVNBQUtBSUVJQUFvQWdBaUFHdEJBblZQRFFBZ0FDQUJRUUowYWlnQ0FDSUFRUUFnQUFSL0lBQW9BZ1FROWhVRlFRQUxHeUVDQ3lBQ0N4MEFJQUFvQXBBRFFRRkhCSDhnQUNnQ2tBTkJBa1pCQm5RRlFTQUxDNnNGQVFWL0l3QkJJR3NpQmlRQVFRRWhCd0pBQWtBQ1FBSkFBa0FEUUFKQUFrQUNRQUpBSUFNZ0FCQWdJZ1V2QVI1QkZXc09EQUVCQWdnQUFBQURDUWNGQmdVTElBTkJnQUZxUVk0cUVHZ0VRQ0FES0FLY0EwRURkaUVFREFrTFFkV1NCMEdvbWdKQndnSkJrOGNERUFBQUN5QUZLQUlBS0FJSVFRTjJJUVFNQndzZ0JTZ0NBQ0lBS0FJTUlBZHNJUWNnQUNnQ0NDRUFEQUVMQ3lBRElBVW9BZ0FvQWd3UUlDSUlMd0VlRUw4SURRUWdDQzhCSGtFclJnUkFJQWdvQWdBb0FneEJBV3NoQkNBRktBSUFLQUlJSUFFZ0FpQURFS1VISVFFZ0F5QUFFTjRCSWdCQkJHb2hBaUFBS0FJQUlRQURRQUpBSUFBZ0FrWUVmMEVBQlNBQUtBSVFRUVpIRFFFZ0FDZ0NGQ2dDQUFzZ0JHd2dBV29oQkF3SEN5QUFFRXdoQUF3QUN3QUxRY3Z5Q0VHb21nSkIwZ0pCazhjREVBQUFDMEhWa2dkQnFKb0NRWWdEUVpQSEF4QUFBQXNnQXlnQ21BTWhCQXdDQ3lBR1FSQnFJQUFnQXhESkJRSkFJQVlvQWhBaUJTQUdLQUlVSWdGR0JIOUJBQVZCZnlFRUlBWkJDR29nQXlBQUlBRWdCV3RCQW5WQkFXc2lCUkRjRFNBQlFRUnJJUUVnQmlnQ0NDRUFBMEFDUUNBR0tBSU1JQUJHQkVBZ0JFRi9SdzBCUWNYQ0EwR29tZ0pCZ1FOQms4Y0RFQUFBQ3lBQUtBSWdJQVZIRFFNZ0FDZ0NFRUVqUmdSQUlBQW9BaFFvQWdBaEJBc2dBQkJNSVFBTUFRc0xJQUVvQWdBaEFDQUdJQVUyQWdRZ0JpQUFOZ0lBSUFJZ0JoQzFDaUVBSUFFb0FnQWdBQ0FDSUFNUXBRY2dCR29MSVFRZ0JrRVFhaEF5R2d3Q0MwR2lKRUdvbWdKQitnSkJrOGNERUFBQUN5QUZLQUlBSWdRb0Fnd2hBQ0FCS0FJQVFRRkdCRUFnQVNnQ0JDQUFiQ0VFREFFTElBTWdCQ2dDQ0JBZ0tBSUFJZ1FvQWd3aEJTQUVLQUlJSUFFZ0FpQURFS1VISVFJZ0FTZ0NCQ0FGUVFGcmJDQUFJQUpzYWlFRUN5QUdRU0JxSkFBZ0JDQUhiQXZtQXdFRmZ5TUFRU0JySWdZa0FFRUJJUWNDZndKQUFrQUNRQUpBQWtBRFFBSkFBa0FDUUNBRUlBQVFJQ0lGTHdFZVFSVnJEZ3dJQ0FFQ0FBQUFCQVFGQndZSEN5QUVRWUFCYWtHT0toQm9CRUFnQkNnQ25BTkJBM1lNQ1F0QjFaSUhRYWlhQWtISkFVRzF5Z0FRQUFBTFFRUWdCU2dDQUNJQUtBSU1JZ1VnQlVFRFJoc2dCMndoQnlBQUtBSUlJUUFNQVFzTElBVW9BZ0FpQlNnQ0NDRUFBbjhnQWlnQ0FFRUJSZ1JBSUFBZ0FTQUNJQU1nQkJDbUJ3d0JDeUFGS0FJTUlRVWdCQ0FBRUNBb0FnQW9BZ2dnQVNBQ0lBTWdCQkNtQjBFRUlBVWdCVUVEUmh0c0N5SUFJQUZGRFFVYUlBQkJEMnBCY0hFTUJRc2dCU2dDQUNnQ0NDQUJJQUlnQXlBRUVLWUhJZ0FnQVVVTkJCb2dBRUVQYWtGd2NRd0VDeUFHUVJCcUlBQWdCQkRKQlNBR0tBSVVJQVlvQWhCclFRSjFJUWxCQUNFRlFRRWhBZ05BSUFVZ0NVWUVRQ0FHUVJCcUVESWFJQUpCRDJwQmNIRWdBaUFCR3d3RkJTQUdLQUlRSUFWQkFuUnFLQUlBSVFnZ0JpQUZOZ0lNSUFZZ0FEWUNDQ0FDSUFnZ0FTQURJQVpCQ0dvUXRRb2dBeUFFRUtZSElnZ2dBaUFJU3hzaEFpQUZRUUZxSVFVTUFRc0FDd0FMSUFRb0FwZ0REQUlMUWRXU0IwR29tZ0pCZ2dKQnRjb0FFQUFBQ3lBRktBSUFLQUlJUVFOMkN5RUFJQVpCSUdva0FDQUFJQWRzQzhRQ0FRSi9JQU1nQVNBQUVOUUJJUVFnQXlBQ0lBRVExQUVoQlFKQUFuOENmeUFFUlFSQVFRQWhCQ0FGUlEwRElBRW9BZ0FoQkNBQklBSW9BZ0EyQWdBZ0FpQUVOZ0lBSUFFb0FnUWhCQ0FCSUFJb0FnUTJBZ1FnQWlBRU5nSUVRUUVoQkNBRElBRWdBQkRVQVVVTkF5QUFLQUlBSVFNZ0FDQUJLQUlBTmdJQUlBRWdBellDQUNBQVFRUnFJUU1nQVVFRWFnd0JDeUFBS0FJQUlRUWdCUVJBSUFCQkJHb2hBeUFBSUFJb0FnQTJBZ0FnQWlBRU5nSUFJQUpCQkdvaEFrRUJEQUlMSUFBZ0FTZ0NBRFlDQUNBQklBUTJBZ0FnQUNnQ0JDRUVJQUFnQVNnQ0JEWUNCQ0FCSUFRMkFnUkJBU0VFSUFNZ0FpQUJFTlFCUlEwQ0lBRkJCR29oQXlBQktBSUFJUUFnQVNBQ0tBSUFOZ0lBSUFJZ0FEWUNBQ0FDUVFScUN5RUNRUUlMSVFRZ0F5Z0NBQ0VBSUFNZ0FpZ0NBRFlDQUNBQ0lBQTJBZ0FMSUFRTHJBTUJCbjhnQVNnQ0FFRUNUZ1JBSUFBZ0FDZ0NERUVCYWpZQ0RBc0NRQ0FBS0FJRUlBQW9BZ2hKQkVBZ0FDQUFLQUlFSUFFUXhRZEJOR28yQWdRTUFRc2pBRUVnYXlJR0pBQWdBQ0FBS0FJRUlBQW9BZ0JyUVRSdFFRRnFFUDhWSVFNZ0FDZ0NCQ0FBS0FJQWEwRTBiU0VFSUFaQkNHb2lBa0VBTmdJTUlBSWdBRUVJYWlJSE5nSVFJQU1FUUNBSElBTVEvaFVoQlFzZ0FpQUZOZ0lBSUFJZ0JTQUVRVFJzYWlJRU5nSUlJQUlnQlNBRFFUUnNhallDRENBQ0lBUTJBZ1FnQWlnQ0NDQUJFTVVIR2lBQ0lBSW9BZ2hCTkdvMkFnZ2dBQ2dDQUNFRElBQW9BZ1FoQVFOQUlBRWdBMGNFUUNBQ0tBSUVRVFJySUFGQk5Hc2lBUkRGQnhvZ0FpQUNLQUlFUVRSck5nSUVEQUVMQ3lBQUtBSUFJUUVnQUNBQ0tBSUVOZ0lBSUFJZ0FUWUNCQ0FBS0FJRUlRRWdBQ0FDS0FJSU5nSUVJQUlnQVRZQ0NDQUFLQUlJSVFFZ0FDQUNLQUlNTmdJSUlBSWdBVFlDRENBQ0lBSW9BZ1EyQWdBZ0FpZ0NCQ0VCQTBBZ0FTQUNLQUlJSWdOSEJFQWdBaUFEUVRScklnTTJBZ2dnQXhDSEJRd0JDd3NnQWlnQ0FDSUJCRUFnQVJBZkN5QUdRU0JxSkFBTElBQW9BZ1FhQzBBQkFuOGpBRUZBYWlJRUpBQWdCRUVJYWhEUENDSURJQUUyQWlRZ0EwRUNOZ0lBSUFOQkdHb2dBaERsRFNBQUlBTVFxQWNnQXhDSEJTQUVRVUJySkFBTFd3RUJmeU1BUVJCcklnSWtBQ0FDUVFBMkFnd0NRQUpBSUFFb0FnQkJnQU5xUVNBZ0FTZ0NCQ0FDUVF4cUVOMENSUVJBSUFJb0Fnd2lBUTBCQ3lBQVFjTENBaEFVR2d3QkN5QUFJQUVvQWdBUUZCb0xJQUpCRUdva0FBdU9BUUVEZnlNQVFTQnJJZ0lrQUNBQ1FRQTJBaHdnQUVHQUEycEJJQ0FCSUFKQkhHb1EzUUlhSUFJb0Fod2lBUVJBQWtBZ0FrRUlhaUFCS0FJUUlBRW9BaFFReEFnaUFTa0RBRkFFUUNBQktBSUlJZ1JGRFFFZ0JDZ0NDRVVOQVFzZ0FDQUJFTUFOSVFNTElBRkJDR29ReFFNZ0FrRWdhaVFBSUFNUEMwR3loZ1ZCZzVRQ1FmRUJRWW51QWhBQUFBc1BBQ0FBTFFBUUJFQWdBQkFQR2dzTFZRQWdBQ0FCS1FJQU53SUFJQUFnQWlnQ0FEWUNDQ0FES0FJQUlRRWdBQ0FFTmdJUUlBQWdBVFlDRENBQUlBVW9BZ0EyQWhRZ0FFRVlhaUFHRUxRQ0dpQUFRU3hxSUFjUXdnRWdBRUg0QUdvZ0NCRENBUXNXQUNBQVFVQnJFRElhSUFCQkRHb1FNaG9nQUJBeUN3Z0FJQUVvQWdCRkN4QUFJQUJCQ1VZZ0FFRitjVUVLUm5JTEhRRUJmd05BSUFBRVFDQUFLQUlBSVFFZ0FCQWZJQUVoQUF3QkN3c0xNQUVCZnlBQUtBSUVJZ0lnQUNnQ0NFY0VRQ0FDSUFFb0FnQTJBZ0FnQUNBQ1FRUnFOZ0lFRHdzZ0FDQUJFSklYQ3c0QUlBQWdBU2dDQUJBaEdpQUFDNjR2QWhSL0FuMGpBRUdBQkdzaUJ5UUFJQWRCb0FGcUlBQVF5d29oQUNBR0JFQWdCa0VBTmdJQUl3QkJJR3NpQ0NRQUFrQWdCZ1JBSUFZb0FnQkZEUUVMUWE3SEFVR1VzZ0pCOWdCQjh1VUJFQUFBQ3lBSUlBWTJBZ3dnQ0VHSXNoTTJBZ2dnQ0NBSVFRaHFJZ28yQWhnZ0FDQUtFTVVLSUFvUUZpQUlRU0JxSkFBTElBY2dBQ2dDQURZQ0FDQUhJQUFvQWdnMkFnUWdCeUFBS0FJRU5nSUlJQUFvQWd3aENDQUhJQVUyQWh3Z0J5QUVOZ0lZSUFjZ0FUWUNGQ0FISUFCQkVHb2lGallDRUNBSElBZzJBZ3dnQjBFZ2FoQ2FGeUFIUWFnQ2FpQUNJQU1nQmhDWkZ5SUFFSmdYSVEwZ0FCQ1FEZ0pBQWtBZ0RTZ0NBQ0lBUlFSQUlBZEJxQUpxSWdFZ0J4Q2RBaUFCUVlqM0J4QU9HaUFIS0FMa0F5RUFJQUVRRVF3QkN5QUhLQUlrSWdGQkJFMEVRQ0FIUWFnQ2FpSUJJQWNRblFJZ0FVR0h3UWtRRGhvZ0FTQUhLQUlrRUNFYUlBRkJuTEVLRUE0YUlBRkJCUkFoR2lBSEtBTGtBeUVBSUFFUUVRd0JDeUFISUFFMkF1UUJJQWNnQURZQzRBRWdCMEhnQVdvZ0IwRTBhaEQ2RmdSQUlBZEJxQUpxSWdFZ0J4Q2RBaUFCUWF1TENSQU9HaUFCSUFjb0FxZ0NRUXhyS0FJQWFpSUFJQUFvQWdSQnRYOXhRUWh5TmdJRUlBRWdEU2dDQUJDekJ5SUFRZnVYQ0JBT0dpQUFLQUs4QVNFQUlBRVFFUXdCQ3lBSElBY29BalJGUlRvQU9DQUhRZUFCYWlBSEtBSTBJQWRCeUFGcUVKc1hCRUFnQjBHb0Ftb2lBU0FIUVg4UTB3VWdBVUhCNmdNUURob2dCeWdDNUFNaEFDQUJFQkVNQVFzZ0J5Z0NHQ0lBQkVBZ0J5Z0NGQ0FIS0FJMElBY29Bc2dCSUFjb0Fzd0JJQWNvQXRBQklBY29BdFFCSUFjb0F0Z0JJQUFSRFFBaUFBMEJDeUFIUVFVMkFpd2dCMEhZQUdvaEVDQUhRZEFBYWlFUklBZEJQR29oRHlBSFFlUUFhaUVTSUFkQmlBSnFJUTRnQjBHUUFXb2hDQ0FIUWZnQmFrRUdjaUVYSUFkQitBQnFJUW9nQjBHRUFXb2hFd0pBQTBBZ0J5Z0NMQ0lCSUFjb0FpUWlBazhOQVNBSElBY29BakJCQVdvMkFqQWdCMEVBTmdLUUFpQU9RZ0EzQXdBZ0IwSUFOd09BQWlBSFFnQTNBL2dCSUFjZ0J4Q1dGellDOUFFZ0J5QUhLQUtFQVRZQ2lBRWdFeUFIUWZRQmFoRGVBaUFISUFjb0FuZzJBbndnQnlnQ0xDQUhLQUlrU1FSQUlBZEJBRHNCOGdFZ0J5Z0M5QUVnQjBIeUFXb2dGeENGRndKQUlBY3ZBZklCUlFSQUlBZEJxQUpxSWdFZ0J4Q2RBaUFCUWY3ZkN4QU9HaUFCSUFjdkFmSUJFQ0VhSUFjb0F1UURJUUFnQVJBUkRBRUxJQWNnQnk4Qi9nRWdCMEhzQVdvUXFRWUVRQ0FIUWFnQ2FpSUJJQWNRblFJZ0FVSGdwZ3dRRGhvZ0FTQUhMd0grQVJBaEdpQUhLQUxrQXlFQUlBRVFFUXdCQ3lBSElBY29BcEFCTmdLVUFTQUhJQWNvQWl3aUMwRUJhaUlKTmdJc1FRQWhBQU5BSUFjb0F1d0JJZ0V2QVJBaUFpQUFTd1JBSUFnZ0FTQUNJQUJCZjNOcVFRSjBha0VVYWhDeUJ5QUFRUUZxSVFBTUFRc0xBMEFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQWNvQWl3aUFpQUxJQWN2QWZJQklnVnFJZ1pKQkVBZ0J5Z0NrQUVnQnlnQ2xBRkdCRUFnQjBHb0Ftb2lBU0FIRUowQ0lBRkIvTGtDRUE0YUlBRWdCeWdDN0FFUWpRUWlBRUdTeVFvUURob2dBQ0FMRUNFYUlBQkI5L1FKRUE0YUlBQWdBaUFMYTBILy93TnhFQ0VhSUFCQnA5d0pFQTRhSUFBZ0J5OEI4Z0VRSVJvZ0FFSDhsd2dRRGhvZ0FDZ0N2QUVoQUNBQkVCRU1GQXNDZnlBSUtBSUFJQWdvQWdSSEJFQURRQ0FJS0FJRVFRUnJJZ0FvQWdBaEFTQUlJQUEyQWdSQkFDRUNJd0JCRUdzaUFDUUFJQUFnQVRZQ0RBSkFBa0FDUUFKQUFrQUNRQ0FCUVRGckRnUUFBUUlEQlFzZ0NDQUFRUXhxRUxJSElBQkJLRFlDQ0NBSUlBQkJDR29RcUFZTUF3c2dDQ0FBUVF4cUVMSUhJQUJCS3pZQ0NDQUlJQUJCQ0dvUXFBWU1BZ3NnQ0NBQVFReHFFTElIUVFFaEFpQUFRUUUyQWdnZ0NDQUFRUWhxSWdNUXFBWWdBRUV0TmdJSUlBZ2dBeENvQmd3Q0N5QUlJQUJCREdvUXNnY2dBRUVHTmdJSUlBZ2dBRUVJYWlJQ0VLZ0dJQUJCS0RZQ0NDQUlJQUlRcUFZTFFRRWhBZ3NnQUVFUWFpUUFJQUlOQUFzZ0FRd0JDMEhUN3doQnFMRUNRYzREUWR6cEJCQUFBQXNoQXlBSEx3SCtBU0VNSUFkQ0FEY0QrQU1nQnlBRE5nTDBBeUFIUVFFN0FmSURJQWNnQnlnQ0xDSUFJQXRySWdVN0FmQURJQUFnQnlnQ0pFOE5FQ0FISUFjUWxoY2lBallDN0FOQklTRUVRUmtoQVFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRElnQWlCa0VCYXc1SkFnQUJBd01HQkFVSENBc0xDd3NMQ3dzTEN3c1BEd3NMQ3dzTEN3c0xDd3NPRGc0T0RnOFBBZzBNQmc4SENBb1BEdzhQRHc0TEN3c0xEZ3NMQ3dzTEN3c0xDd3NMQ3dzTENROExJQUlORHlBSFFhZ0NhaUlCSUFkQmRoRFRCU0FCUWNlTkJ4QU9HaUFIS0FMa0F5RUFJQUVRRVF3aUN5QUNSUVJBSUFkQnFBSnFJZ0VnQjBGMkVOTUZJQUZCc1kwSEVBNGFJQWNvQXVRRElRQWdBUkFSRENJTElBY2dBallDaUFJZ0R5QU9FT3dCQkVBZ0IwR29BbW9pQVNBSFFYWVEwd1VnQVVHNDNnb1FEaG9nQVNBSEtBS0lBaEFoR2lBQlFmM1NCQkFPR2lBSEtBTGtBeUVBSUFFUUVRd2lDeUFIUWZnQmFrRVFRUXdnREJEUUFodHFLQUlBSVFBZ0R5QU9FTkFCSUFBMkFnQU1Ed3NnQWtVRVFDQUhRYWdDYWlJQklBZEJkaERUQlNBQlFkT05CeEFPR2lBSEtBTGtBeUVBSUFFUUVRd2hDeUFIUVFFMkF2UURJQXhCREVjZ0JVSC8vd054UVFOSGNnME9JQklnQjBIc0Eyb1E3QUVpQUVVRVFDQUhRYWdDYWlJQklBZEJkaERUQlNBQlFhSGVDaEFPR2lBQklBY29BdXdERUNFYUlBRkI0SVFGRUE0YUlBY29BdVFESVFBZ0FSQVJEQ0VMSUFjZ0FDZ0NERFlDZ0FJTURnc2dBZzBOSUFkQnFBSnFJZ0VnQnhDZEFpQUJJQU1RdXdnUURob2dBVUhWalFjUURob2dCeWdDNUFNaEFDQUJFQkVNSHdzZ0RFRU1SdzBXSUFjb0FvQUNJZ0JGRFJVZ0J5QUFJQUlnQjBHWUFtb1F3UWhGQkVBZ0J5Z0NtQUpCRUdvZ0NCQzZDQXdOQ3lBSEtBS0FBaEN3QndSQUlBZEJNVFlDcUFJZ0NDQUhRYWdDYWhDb0Jnd05DeUFIUWFnQ2FpSUJJQWNRblFJZ0FVR2YrZ3NRRGhvZ0FTQUNFQ0VhSUFjb0F1UURJUUFnQVJBUkRCNExJQXhCTkVjTkV3SkFJQUpCQUU0RVFBSi9RYUN1RXlFQUEwQUNRRUYzUVFBZ0FFR0FzaE5IQkg4Z0FDZ0NBQ0FDUncwQklBQUZRWUN5RXd0QmdMSVRSaHNNQWdzZ0FFRUlhaUVBREFBTEFBdEZEUUVMSUFkQnFBSnFJZ0VnQnhDZEFpQUJRYWJQQ2hBT0dpQUJRUWdRdXdnUURob2dBVUh0dFF3UURob2dBU0FDRUNFYUlBY29BdVFESVFBZ0FSQVJEQjRMSUFkQkFEWUNtQUlnQnlBQ0lBZEJtQUpxRUtrR1JRUkFJQWNvQXBnQ0lnQXRBRlZGRFJNZ0FDMEFWRVVORWlBQUx3RVFRUUZORFJFZ0FFRWNhaUFJRUxvSURBd0xJQWRCcUFKcUlnRWdCMEYvRU5NRklBRkI0SVlGRUE0YUlBY29BdVFESVFBZ0FSQVJEQjBMSUFkQklEWUMvQU1nQjBLR2dJQ0FFRGNDOUFNTUNnc2dCMEVKTmdMMEF5QU1RU3RHSUF4Qk1rWnlSUVJBSUF4Qit3RkdCRUFnQnlBSElBa1F5Z28yQXBnQ0FrQWdEeUFIUVpnQ2FoRHNBU0lBQkVBZ0FDZ0NEQ0lBRFFFTElBZEJxQUpxSWdFZ0J4Q2RBaUFCUWR6WENoQU9HaUFCSUFjb0FwZ0NFQ0VhSUFGQnVJY0VFQTRhSUFjb0F1UURJUUFnQVJBUkRCNExJQUFnQnlnQ21BSkdCRUFnQjBHb0Ftb2lBU0FIRUowQ0lBRkIzTmNLRUE0YUlBRWdCeWdDbUFJUUlSb2dBVUhqMFFNUURob2dCeWdDNUFNaEFDQUJFQkVNSGdzZ0J5QUhRZkFEYWlBQUVKVVhJZ0FOSFNBSEtBTDRBMEVEYTBGOVN3MExJQWRCcUFKcUlnRWdCeENkQWlBQlFkelhDaEFPR2lBQklBY29BcGdDRUNFYUlBRkIzdkFCRUE0YUlBY29BdVFESVFBZ0FSQVJEQjBMUWJMaUFFSDNsUUpCd3dSQnora0VFQUFBQ3lBSEtBS0VBaUlBUlEwTklBY2dCMEh3QTJvZ0FCQ1ZGeUlBUlEwSkRCc0xJQWRCbUFKcUlBMG9BZ0FnQnlnQ0xDSUFRUUowYWlBSEtBSWtJQUJySWdCQkFCQ1JEZ0pBSUFjb0Fwd0NJQWN0QUtNQ0lnRWdBVUVZZEVFWWRVRUFTQ0lDR3lJQklBQkJBblJHQkVCQkFDRUZJQWNnQ3lBTUlBTVFsQmNoQUF3QkN5QUJRUUoyUVFGcUlRQWdBVUg4L3c5UEJFQWdCMEdvQW1vaUFTQUhFSjBDSUFGQjFwTUtFQTRhSUFGQi8vOERFQ0VhSUFGQm91d0xFQTRhSUFFZ0FCQWhHaUFCUWNtM0F4QU9HaUFIS0FMa0F5RUFJQUVRRVVFQUlRVU1BUXNnQjBFS05nTDBBeUFISUFBN0FmSURRUUVoQlNBTVFRdEdCRUFDZjBFQlFiR0xCeUFIS0FLWUFpQUhRWmdDYWlBQ0d5SUFFS0lDUlEwQUdrRUNRWlRnQkNBQUVLSUNSUTBBR2tFRFFlamZBU0FBRUtJQ1JRMEFHa0VFUVlnbElBQVFvZ0pGRFFBYVFRVkJpZmtCSUFBUW9nSkZEUUFhUVFaQnFEWWdBQkNpQWtVTkFCcEJCMEgxd0FJZ0FCQ2lBa1VOQUJwQkNFR2VqQWNnQUJDaUFrVU5BQnBCQ2tIOWl3Y2dBQkNpQWtVTkFCcEJDVUdaMVFjZ0FFRWNFS2dOUlEwQUdrRUFRUXRCZzRrSUlBQkJEQkNvRFJzTElnQkZCRUFnQjBHb0Ftb2lBU0FIRUowQ0lBRkJpb2dKRUE0YUlBRWdCMEdZQW1vUUVob2dBVUh6bWdrUURob2dCeWdDNUFNaEFDQUJFQkZCQUNFRkRBSUxJQWNvQW9nQ1JRME5Jd0JCSUdzaUFTUUFJQUVnRGpZQ0VDQUJRUmhxSUJJZ0RpQUJRUkJxRUk0UElBRW9BaGdoQWlBQlFTQnFKQUFnQWlBQU5nSU1Dd3NnQjBHWUFtb1FEeG9nQlEwSURCb0xRY2dBSVFFTElBY2dBVFlDOUFNZ0FTRUFDeUFISUFNZ0FpQUhRWmdDYWhEZEFrVUVRQ0FIS0FLWUFrRVlhaUFJRUxvSURBWUxJQWRCcUFKcUlnRWdCeENkQWlBQlFhYlBDaEFPR2lBQklBQVF1d2dRRGhvZ0FVSFNyQXdRRGhvZ0FTQUNFQ0VhSUFjb0F1UURJUUFnQVJBUkRCY0xRU1loQkFzZ0J5QUVOZ0wwQXlBRUlRWUxRWUNBZ0lCNElRQWdBaUVGQWtBRFFDQUZSUTBCQWtBZ0FDQUZjUVJBSUFjZ0F5QUFJQWRCbUFKcUVOMENEUUVnQnlnQ21BSkJHR29nQ0JDNkNDQUFJQVZ6SVFVTElBQkJBWFloQUF3QkN3c2dCMEdvQW1vaUFTQUhFSjBDSUFGQnBzOEtFQTRhSUFFZ0JoQzdDQkFPR2lBQlFkS3NEQkFPR2lBQklBSVFJUm9nQVVHUXlna1FEaG9nQVNBQUVDRWFJQWNvQXVRRElRQWdBUkFSREJVTElBSU5BaUFISUFOQkFDQUhRYWdDYWhEZEFnMENJQWNvQXFnQ1FSaHFJQWdRdWdnTUFnc2dCMEdvQW1vaUFTQUhFSjBDSUFGQmtKUU1FQTRhSUFFZ0F4QzhBaG9nQnlnQzVBTWhBQ0FCRUJFTUV3c2dCeUFDTmdLRUFnc2dCeWdDOUFNUWdoZEZEUUVnQjBId0Eyb2hBQUpBSUFvb0FnUWlBU0FLS0FJSVJ3UkFJQUVnQUNrQ0FEY0NBQ0FCSUFBcEFnZzNBZ2dnQ2lBQlFSQnFOZ0lFREFFTEl3QkJJR3NpQWlRQUlBSkJDR29nQ2lBS0tBSUVJQW9vQWdCclFRUjFRUUZxRU9BWUlBb29BZ1FnQ2lnQ0FHdEJCSFVnQ2tFSWFoRFNEaUlCS0FJSUlnUWdBQ2tDQURjQ0FDQUVJQUFwQWdnM0FnZ2dBU0FCS0FJSVFSQnFOZ0lJSUFvZ0FSQ2pCQ0FCRUpNWElBSkJJR29rQUFzZ0J5Z0NMQ0lBSUFjdkFmSURhaUlCSUFjb0FpUkxEUkFDUUNBSExRQTRSUTBBSUEwb0FnQWlBaUFCUVFKMGFpRURJQUlnQUVFQ2RHb2hBQ0FIS0FJMElRSURRQ0FBSUFOR0RRRWdCeUFBS0FJQUlBSVFwd1kyQXFnQ0lCTWdCMEdvQW1vUTN3SWdBRUVFYWlFQURBQUxBQXNnQnlBQk5nSXNRUUFoQUF3UkN3SkFJQWNvQXBRQklnQWdCeWdDa0FGSEJIOGdBRUVFYXlnQ0FDSUFRU2hySWdGQklrOUMvNE9BZ0NBZ0FhMklRZ0dEVUhJRWZ5QUFRVEZyUVFSSkJVRUJDMFVOQVNBTElBY3ZBZklCSWdWcUlRWWdCeWdDTEFVZ0Fnc2dCa2NFUUNBSFFhZ0NhaUlCSUFjUW5RSWdBVUh5dlFJUURob2dBU0FIS0FMc0FSQ05CQ0lBUVpMSkNoQU9HaUFBSUFzUUlSb2dBRUdtNHdrUURob2dBQ0FITHdIeUFSQWhHaUFBUWVmSkNoQU9HaUFBSUFjb0Fpd2dDMnNRSVJvZ0FFSERod2dRRGhvZ0FDZ0N2QUVoQUNBQkVCRU1GQXNnQnlnQ2lBRWdCeWdDaEFGcklRQUNRQUpBSUFjdEFEZ0VRQ0FBUVFKMUlBVkdEUUZCbU9jSVFmZVZBa0dBQTBIaXpRSVFBQUFMSUFCQkJFY05BUXNnQnk4Qi9nRWlBQkRRQWtVTkVFRURJUVpCQUNFVVFRQWhEQUpBQWtBQ1FDQUFRUlZyRGdJQUFRSUxRUUpCQVNBSElBdEJBMm9ReWdvYklRWUxJQWNnQzBFQ2FoREtDaUVVSUFZaERBc2dCeWdDaUFJaEJBSkFJQWNvQWxRaUJrVU5BQUpBSUFacFFRRkxJZ0ZGQkVBZ0JrRUJheUFFY1NFRkRBRUxJQVFpQlNBR1NRMEFJQVFnQm5BaEJRc2dCeWdDVUNBRlFRSjBhaWdDQUNJSlJRMEFJQVpCQVdzaEFnTkFJQWtvQWdBaUNVVU5BU0FFSUFrb0FnUWlBRWNFUUFKQUlBRkZCRUFnQUNBQ2NTRUFEQUVMSUFBZ0Jra05BQ0FBSUFad0lRQUxJQUFnQlVjTkFnc2dDU2dDQ0NBRVJ3MEFDd3dRQzBFVUVCVWlDU0FFTmdJSUlBa2dCRFlDQkNBSlFRQTJBZ0FnQ1VJQU53SU1RUUFnQmlBSEtBSmNRUUZxc3lJYklBY3FBbUFpSENBR3M1UmVHdzBPUVFJaEF3SkFJQVlnQmtFQmEzRkJBRWNnQmtFRFNYSWdCa0VCZEhJaUFBSi9JQnNnSEpXTklodERBQUNBVDEwZ0cwTUFBQUFBWUhFRVFDQWJxUXdCQzBFQUN5SUJJQUFnQVVzYklnQkJBVVlOQUNBQUlBQkJBV3R4UlFSQUlBQWhBd3dCQ3lBQUVIOGhBeUFIS0FKVUlRWUxJQU1nQmswRVFDQURJQVpQRFE0Z0JrRURTU0VCQW44Z0J5Z0NYTE1nQnlvQ1lKV05JaHREQUFDQVQxMGdHME1BQUFBQVlIRUVRQ0FicVF3QkMwRUFDeUVBSUFZZ0F5QUJJQVpwUVFGTGNnUi9JQUFRZndVZ0FFRUJRU0FnQUVFQmEyZHJkQ0FBUVFKSkd3c2lBQ0FBSUFOSkd5SURUUVJBSUFjb0FsUWhCZ3dQQ3lBRFJRME1DeUFEUVlDQWdJQUVTUVJBSUJFZ0EwRUNkQkFWRUd3Z0J5QUROZ0pVUVFBaEFBTkFJQUFnQTBZRVFDQUhLQUpZSWdGRkRROEZJQWNvQWxBZ0FFRUNkR3BCQURZQ0FDQUFRUUZxSVFBTUFRc0xJQUVvQWdRaEJnSkFJQU5wUVFGTEloaEZCRUFnQmlBRFFRRnJjU0VHREFFTElBTWdCa3NOQUNBR0lBTndJUVlMSUFjb0FsQWdCa0VDZEdvZ0VEWUNBQ0FEUVFGcklSa0RRQ0FCS0FJQUlnSkZEUTRnQWlnQ0JDRUZBa0FnR0VVRVFDQUZJQmx4SVFVTUFRc2dBeUFGU3cwQUlBVWdBM0FoQlFzQ1FDQUZJQVpHRFFBZ0FpRUFJQVZCQW5RaUZTQUhLQUpRYWlJYUtBSUFSUVJBSUJvZ0FUWUNBQ0FGSVFZTUFRc0RRQ0FBSWdVb0FnQWlBQVJBSUFJb0FnZ2dBQ2dDQ0VZTkFRc0xJQUVnQURZQ0FDQUZJQWNvQWxBZ0ZXb29BZ0FvQWdBMkFnQWdCeWdDVUNBVmFpZ0NBQ0FDTmdJQURBRUxJQUloQVF3QUN3QUxFUHNCQUF0QjBOY0lRZmVWQWtHQ0EwSGl6UUlRQUFBTElBZEJxQUpxSWdFZ0J4Q2RBaUFCUWVDN0FoQU9HaUFCSUFjb0F1d0JFSTBFSWdCQmtza0tFQTRhSUFBZ0N4QWhHaUFBUVpyMUNSQU9HaUFBSUFjdkFmSUJFQ0VhSUFCQjVzRUhFQTRhSUFBb0Fyd0JJUUFnQVJBUkRCSUxRWnE4Q0VIM2xRSkI0QVZCeitrRUVBQUFDMEhON1FSQjk1VUNRZThFUWMvcEJCQUFBQXRCcU80RVFmZVZBa0hHQkVIUDZRUVFBQUFMUWVLRUIwSDNsUUpCbHdSQnora0VFQUFBQzBHTjVBQkI5NVVDUVpZRVFjL3BCQkFBQUF0QnNwWUVRZmVWQWtHVkJFSFA2UVFRQUFBTFFkN1BCRUgzbFFKQmh3UkJ6K2tFRUFBQUMwR24xQVpCOTVVQ1FmSURRYy9wQkJBQUFBdEJ3YzhFUWZlVkFrSHhBMEhQNlFRUUFBQUxRUUFoQmlBUlFRQVFiQ0FIUVFBMkFsUU1BUXNnQXlFR0N5QUdJQVpCQVdzaUFIRkZCRUFnQUNBRWNTRUZEQUVMSUFRZ0Jra0VRQ0FFSVFVTUFRc2dCQ0FHY0NFRkN3SkFBa0FnQnlnQ1VDQUZRUUowYWlJQktBSUFJZ0JGQkVBZ0NTQUhLQUpZTmdJQUlBY2dDVFlDV0NBQklCQTJBZ0FnQ1NnQ0FDSUFSUTBDSUFBb0FnUWhBQUpBSUFZZ0JrRUJheUlCY1VVRVFDQUFJQUZ4SVFBTUFRc2dBQ0FHU1EwQUlBQWdCbkFoQUFzZ0J5Z0NVQ0FBUVFKMGFpRUFEQUVMSUFrZ0FDZ0NBRFlDQUFzZ0FDQUpOZ0lBQ3lBSElBY29BbHhCQVdvMkFsd0xJQWtnRkRZQ0VDQUpJQXcyQWd3TElBMG9BZ0FoQUNBSElBY3ZBZklCT3dIOEFTQUhJQWNvQW5naUFUWUNqQUlnQnlBSEtBSjhJQUZyUVFSMk93R1FBaUFISUFjb0FvUUJJQUFnQzBFQ2RHb2dCeTBBT0JzMkF2Z0JJQWNvQWh3aUFBUkFJQWNvQWhRZ0IwSDRBV29nQUJFQkFDSUFEUVFMUVFBaEFBd0RDeUFISUFzZ0RDQURFSlFYSVFBTElBQkZEUUFMQ3lBQVJRMEJEQU1MQzBIRndBRkI5NVVDUWJnQ1FlTE5BaEFBQUF0QkFDRUFJQUVnQWtjTkFRc2dEU0FIUWFnQ2FoQ2FGeUlCRUpnWElRSWdBUkNRRGlBQ0VKQU9JQllRRmlBSFFZQUVhaVFBSUFBUEMwR3B3QUZCOTVVQ1FhQUNRYyswQkJBQUFBc1JBQ0FBUVRCQjBmOERRWHhCQXhES0FRdlRBUUVGZnlBQ0tBSUFJZ1FvQWdBb0FnQWhCUUovQWtBZ0FTZ0NBQ0lHS0FJQUtBSUFJZ2NnQUNnQ0FDSURLQUlBS0FJQVR3UkFRUUFnQlNBSFR3MENHaUFCSUFRMkFnQWdBaUFHTmdJQVFRRWdBU2dDQUNJQ0tBSUFLQUlBSUFBb0FnQWlBeWdDQUNnQ0FFOE5BaG9nQUNBQ05nSUFJQUVnQXpZQ0FBd0JDeUFGSUFkSkJFQWdBQ0FFTmdJQUlBSWdBellDQUVFQkR3c2dBQ0FHTmdJQUlBRWdBellDQUVFQklBSW9BZ0FpQUNnQ0FDZ0NBQ0FES0FJQUtBSUFUdzBCR2lBQklBQTJBZ0FnQWlBRE5nSUFDMEVDQ3d0YkFRTi9JQUVnQUNnQ0VFc0VRQ0FBS0FJSUlRSWdBQ0FCRUt3V0lBQW9BZ3doQTBFQUlRRURRQ0FCSUFOR0JFQWdBQ0FDRURZRklBRkJBblFpQkNBQUtBSUlhaUFDSUFScUtBSUFOZ0lBSUFGQkFXb2hBUXdCQ3dzTEN4a0FJQUFnQVVjRVFDQUFJQUVvQWdBZ0FTZ0NCQkQ5RmdzTDJnRUJCSDhnQUVFQU5nSUlJQUJDQURjQ0FDQUJLQUlFSWdJZ0FTZ0NBQ0lEUndSQUlBSWdBMnRCREcwaUFrSFdxdFdxQVU4RVFCQUJBQXNnQUNBQ0VKVWFJZ00yQWdBZ0FDQUROZ0lFSUFBZ0F5QUNRUXhzSWdWcU5nSUlJQUVvQWdBaEF5QUJLQUlFSVFFakFFRVFheUlFSkFBZ0JDQUFOZ0lBSUFRZ0FDZ0NCQ0lDTmdJRUlBUWdBaUFGYWpZQ0NDQUVRUVJ5SVFJRFFDQUJJQU5IQkVBZ0FpZ0NBQ0FERUxBQkdpQUNJQUlvQWdCQkRHbzJBZ0FnQTBFTWFpRUREQUVMQ3lBRUtBSUFJQVFvQWdRMkFnUWdCRUVRYWlRQUN5QUFDNHNEQVFSL0FrQWdBQ2dDQkNJRElBQW9BZ2hKQkVBZ0FTZ0NBQ0VCSUFNZ0FpZ0NBRFlDQkNBRElBRTJBZ0FnQUNBRFFRaHFOZ0lFREFFTEl3QkJJR3NpQlNRQUlBVkJDR29nQUNBQUtBSUVJQUFvQWdCclFRTjFRUUZxRUpvT0lBQW9BZ1FnQUNnQ0FHdEJBM1VnQUVFSWFoRFFDaUVESUFFb0FnQWhCQ0FES0FJSUlnRWdBaWdDQURZQ0JDQUJJQVEyQWdBZ0F5QUJRUWhxTmdJSUlBQW9BZ0FoQWlBQUtBSUVJUUVEUUNBQklBSkhCRUFnQXlnQ0JFRUlheUlFSUFGQkNHc2lBU2dDQURZQ0FDQUJLQUlFSVFZZ0FVRUFOZ0lFSUFRZ0JqWUNCQ0FESUFNb0FnUkJDR3MyQWdRTUFRc0xJQUFvQWdBaEFTQUFJQU1vQWdRMkFnQWdBeUFCTmdJRUlBQW9BZ1FoQVNBQUlBTW9BZ2cyQWdRZ0F5QUJOZ0lJSUFBb0FnZ2hBU0FBSUFNb0FndzJBZ2dnQXlBQk5nSU1JQU1nQXlnQ0JEWUNBQ0FES0FJRUlRSURRQ0FDSUFNb0FnZ2lBVWNFUUNBRElBRkJDR3MyQWdnZ0FVRUVheENGQXhvTUFRc0xJQU1vQWdBaUFRUkFJQUVRSHdzZ0JVRWdhaVFBSUFBb0FnUWFDd3VZQWdFRWZ5TUFRYkFDYXlJSUpBQWdDQ0FFS0FJQU5nSVFBa0FnQ0VFd2FrR0FBaUFESUFoQkVHb1FuQW9pQlVIL0FVMEVRQ0FBUVFJZ0FTQUNJQWhCTUdvUXp3UU1BUXNnQlVFQVRnUkFJQWhCSUdvaUJrRUFOZ0lJSUFaQ0FEY0NBQ0FGUVFGcUlnVUVRQ0FGUVFCSUJFQVFBUUFMSUFZZ0JSQVZJZ2MyQWdBZ0JpQUhOZ0lFSUFZZ0JTQUhhallDQ0NBRklBWW9BZ1FpQjJvaEJRTkFJQVVnQjBZRVFDQUdJQVUyQWdRRklBZEJBRG9BQUNBSFFRRnFJUWNNQVFzTEN5QUdLQUlFSVFjZ0JpZ0NBQ0VGSUFnZ0JDZ0NBRFlDQUNBRklBY2dCV3NnQXlBSUVKd0tHaUFBUVFJZ0FTQUNJQVlvQWdBUXp3UWdCaEF5R2d3QkN5QUFRUUlnQVNBQ1FjakJCQkRQQkFzZ0NFR3dBbW9rQUFzSkFDQUFRUWhxRUY0TE1RRUJmeUFBS0FJVUlnRkJmMFlFUUVHSThBaEIzNllEUWVJRFFaV0RCUkFBQUFzZ0FDQUJRUUZxSWdBMkFoUWdBQXRFQVFGL0l3QkJFR3NpQWlRQUlBSkNBRGNDQkNBQ0lBSkJCSEkyQWdBZ0FDQUJJQUlnQUNnQ0FDZ0NDQkVFQUNFQUlBSWdBaWdDQkJDdURpQUNRUkJxSkFBZ0FBczlBQ0FBRVBrQ1FaS3hxUG9IYWtHVHBBWnpJZ0JCQW5aQmx2aXArZ2R6SUFFb0FnQnFJQUJ6SWdCQkFuWkJsdmlwK2dkeklBSW9BZ0JxSUFCekN5RUFJQUFvQWh3aUFFVUVRRUhIa2dkQjU3QURRZnNCUVo3dUJCQUFBQXNnQUF1S0JBRUJmeU1BUWNBQmF5SUhKQUFnQnlBQ05nS3dBU0FISUFFMkFyZ0JJd0JCSUdzaUFTUUFJQUFnQnlnQ3VBRWdCeWdDc0FFZ0F5QUJJQVFRVmhDZER5SURRY2pwRHpZQ0JDQURRZnpwRHpZQ0FDQUJRU0JxSkFBZ0EwSG82UTgyQWdBZ0EwRkFheUlBUW9DQWdJQXdOd0lRSUFBZ0FEWUNEQ0FBSUFVUTJCY2dBMEhZQUdvaUFFRUFOZ0lJSUFCQ0FEY0NBRUVBSVFFQ1FDQUdMUUFFQkVBZ0FCRENDQ0FBSUFZb0FnQWlBU2tDQURjQ0FDQUFJQUVvQWdnMkFnZ2dCaWdDQUNJQlFRQTJBZ2dnQVVJQU53SUFEQUVMQWtBZ0FDZ0NDQ0FHS0FJQUlnSW9BZ1JKQkVBZ0FCRENDQ0FBSUFJb0FnUVF3ZzBNQVFzZ0FFRUFOZ0lFQ3lBQUlBSW9BZ1FpQkRZQ0JBTkFJQUVnQkVjRVFDQUJRUUowSWdVZ0FDZ0NBR29nQWlnQ0FDQUZhaWdDQURZQ0FDQUJRUUZxSVFFTUFRc0xDeUFES0FKUUlnRkZCRUFnQjBIeG5RVkJJRUVBSUFkQm9BRnFFQjBpQVJBWElnSkJHR3BCa3VNSUVBNGFJQUlRR0NBQkVCNGdBeWdDVUNFQkN5QURLQUpNSWdJZ0FVRUNkR29oQVFOQUlBRWdBa1lFUUFKQUlBQW9BZ0FpQWlBREtBSmNRUUowYWlFQUEwQWdBQ0FDUmcwQklBSW9BZ0FRVnlBREtBSUlRUUZCQUVIZHhBaEI4WjBGUVNVUVN5QUNRUVJxSVFJTUFBc0FDd1VnQWlnQ0FCQlhJQU1vQWdoQkFFRUFRZG5LQ0VIeG5RVkJJaEJMSUFKQkJHb2hBZ3dCQ3dzZ0IwSEFBV29rQUNBREMrOEJBUUYvSXdCQklHc2lBeVFBSUFNZ0FEWUNIQ0FESUFFMkFoZ2dBeUFDTmdJVUlBTW9BaHdpQUNnQ0NDRUNJQU5CQURZQ0VDQURBbjhnQXlnQ0dBUkFJQU1vQWhoQkFXc01BUXRCQUFzMkFoZ2dBd0ovSUFNb0FoUUVRQ0FES0FJVVFRRnJEQUVMUVFBTE5nSVVJQU1nQXlnQ0dEWUNEQU5BUVFBaEFTQURLQUlNSUFNb0FoUkpCSDhnQXlnQ0RDQUFLQUlBS0FJQVNRVkJBQXRCQVhFRVFDQURBbjhnQUNnQ0JDQURLQUlNRU1RT0xBQUFRUWxHQkVBZ0FpZ0NCQXdCQzBFQkN5QURLQUlRYWpZQ0VDQURJQU1vQWd4QkFXbzJBZ3dNQVFzTElBTW9BaEFoQUNBRFFTQnFKQUFnQUFzakFRRi9Jd0JCRUdzaUFTQUFOZ0lNSUFFb0Fnd2lBQ2dDQkNBQUtBSUFhMEVVYlFzakFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJLQUlNRUE4YUlBRkJFR29rQUF0NUFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQ0lBSUFJb0FnZ2lBU2tDQURjQ0FDQUFJQUVwQWhBM0FoQWdBQ0FCS1FJSU53SUlJQUJCR0dvZ0FpZ0NDRUVZYWhCVUdpQUFJQUlvQWdncEFpUTNBaVFnQUVFc2FpQUNLQUlJUVN4cUVLZ1lJQUpCRUdva0FDQUFDeGdCQVg4akFFRVFheUlCSUFBMkFnd2dBU2dDRENnQ0dBc0pBQ0FBUVF3UXdCSUxUd0VDZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RFRU1haUVDSXdCQkVHc2lBQ1FBSUFBZ0FqWUNEQ0FBS0FJTVFRUnFFSklDSVFJZ0FFRVFhaVFBSUFJaEFDQUJRUkJxSkFBZ0FBdFdBUUYvSXdCQkVHc2lBeVFBSUFNZ0FEWUNEQ0FESUFFNkFBc2dBeUFDTmdJRUlBTW9BZ3doQUFOQUlBTWdBeWdDQkNJQlFRRnJOZ0lFSUFFRVFDQUFLQUlBSUFOQkMyb1FzaGdNQVFzTElBTkJFR29rQUFzMUFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJLQUlNSWdBUXR3RW9BZ0FnQUNnQ0FHdEJBM1VoQUNBQlFSQnFKQUFnQUFzakFRRi9Jd0JCRUdzaUFTQUFOZ0lNSUFFb0Fnd2lBQ2dDQkNBQUtBSUFhMEVEZFF0YUFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0NBSkFJQUVvQWdnaUFFRUVhaERCR0VGL1JnUkFJQUFnQUNnQ0FDZ0NDQkVEQUNBQlFRRTZBQThNQVFzZ0FVRUFPZ0FQQ3lBQkxRQVBRUUZ4SVFBZ0FVRVFhaVFBSUFBTEdRQWdBQ0FCSUFJZ0EwSDQ2QTlCak9rUFFkam9EeERCREF1S0FRRURmeU1BUVJCcklnRWtBQ0FCSUFBMkFnZ2dBU0FCS0FJSUlnQTJBZ3dnQUNnQ0JBUkFJQUFvQWdRaEFDTUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpZ0NEQ0lBRU13SFFRRnhCRUFDUUNBQVFRaHFJZ01vQWdBRVFDQURFTUVZUVg5SERRRUxJQUFnQUNnQ0FDZ0NFQkVEQUFzTElBSkJFR29rQUFzZ0FTZ0NEQm9nQVVFUWFpUUFDNk1CQVFKL0lBRWhBZ05BSUFKQkJFOEVRQ0FBS0FBQVFaWFR4OTRGYkNJRFFSaDJJQU56UVpYVHg5NEZiQ0FCUVpYVHg5NEZiSE1oQVNBQ1FRUnJJUUlnQUVFRWFpRUFEQUVMQ3dKQUFrQUNRQUpBSUFKQkFXc09Bd0lCQUFNTElBQXRBQUpCRUhRZ0FYTWhBUXNnQUMwQUFVRUlkQ0FCY3lFQkN5QUJJQUF0QUFCelFaWFR4OTRGYkNFQkN5QUJRUTEySUFGelFaWFR4OTRGYkNJQVFROTJJQUJ6Q3lJQkFYOGdBQ2dDRkNJQkJFQWdBU2dDQkE4TElBQW9BZ2dnQUNnQ0JFRUNkR29MREFBZ0FDQUJRWjhGRU1jU0N5SUJBbjlCQWlBQUxRQVlJZ0VnQUMwQUdTSUFja0VBUnlJQ0lBQWJJQUlnQVJzTEx3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUVJYWlBQ1FReHFFSjRDSVFBZ0FrRVFhaVFBSUFCQkRHb0xod0lCQTM4akFFSFFBR3NpQXlRQUlBQkJBRFlDQ0NBQVFnQTNBZ0FnQTBGQWF5QUJLQUxBQlNBQ0VOc0tJQU5DQURjRE1DQURRZ0EzQXlnZ0EwR0FnSUQ4QXpZQ09DQURLQUpFSVFVZ0F5Z0NRQ0VCQTBBZ0FTQUZSa1VFUUFKQUlBRW9BZ0FpQWlnQ0ZFSEhBRWNOQUNBRElBSkJBUkE0SWdRMkFpUWdCRUVUUmlBRVFlc3BSbklOQUNBRFFSaHFJQU5CS0dvZ0EwRWthaENXQVNBRExRQWNSUTBBSUFOQkFEWUNJQ0FEUWdBM0F4Z2dBaUFEUVJocUlnUVEwd29nQUNBRFFRaHFJQU1vQWhoQkNHb2dBeWdDSEJDQUN5SUNFUGdPSUFJUU1ob2dCQkF5R2dzZ0FVRUVhaUVCREFFTEN5QURRU2hxRUU4Z0EwRkFheEF5R2lBRFFkQUFhaVFBQ3hFQUlBQW9BZ1FnQVNnQ0FCREJCa0VCQzlzQkFRTi9Jd0JCUUdvaUF5UUFBa0FDUUFKQUlBSW9BZ0FpQkVVTkFDQUNLQUlFUlEwQUlBUVE5d2dOQVFzZ0FDQUNFRnNhREFFTElBSW9BZ0FpQkNnQ0JFR296QkpISUFSRmNrVUVRQ0FESUFFb0FnUWlCU0FGRU93RElBUW9BZ3dRL3dJaUJDQUJLQUlJSWdFUStnZzJBamdnQWlnQ0JDRUNJQU5CQVRZQ0pDQURJQUkyQWh3Z0F5QURRUnhxTmdJZ0lBTWdBeWtESURjRENDQUFJQVFnQVNBRFFUaHFJQU5CS0dvZ0EwRUlhaENYQWlJQUVJc0xFR2thSUFBUXFBRU1BUXNnQUNBQklBTkJFR29nQWhCYkVPWUlDeUFEUVVCckpBQUxOZ0VCZnlBQUlBRVE3QUVpQWtVRVFBOExJd0JCRUdzaUFTUUFJQUlvQWdBYUlBRWdBQ0FDRUxBWklBRVFpd0VnQVVFUWFpUUFDMUlCQW44Z0FDZ0NDQ0VBSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lCVFlDRENBRUlBVTJBZ2dnQUVHTUFXb2dBRUVJYWlBRVFRaHFJQUVnQWlBREVPa2FJUUFnQkVFUWFpUUFJQUFMSXdFQmZ5QUFLQUlVSWdGRkJFQWdBQ2dDQkE4TElBRW9BZ1FnQVNnQ0FHdEJBblVMckFFQkJYOGdBQ2dDQ0NFREl3QkJFR3NpQkNRQUlBTVFIQ0FESUFNb0FneEJBV29pQURZQ0RDQUVJQUEyQWdnakFFRVFheUlBSkFBZ0EwR01BV29pQlJDOUNpRUdJQVFvQWdnaEJ5QURLQUlJSVFNZ0FFRUFPZ0FNSUFBZ0FrRWdhallDQ0NBQVFRQTZBQVFnQUVIQW5DQTJBZ0FnQlNBR0lBTWdCeUFCSUFCQkNHb2dBQkNBRENJQkVDZ2dCU0FGS0FJWVFRRnFOZ0lZSUFCQkVHb2tBQ0FCSVFBZ0JFRVFhaVFBSUFBTHd3WUJDWDhqQUVGQWFpSURKQUFnQXlBQk5nSThJQU1nQURZQ01DQURJQU5CUEdvaUJEWUNOQ0FESUFBMkFpZ2dBeUFFTmdJc0lBTWdBRFlDSUNBRElBQTJBaGdnQXlBQU5nSVFJQU1nQURZQ0NDQURJQUEyQWdBZ0F5QUVOZ0lFSUFOQk1Hb2hBQ0FEUVNocUlRUWdBMEVnYWlFR0lBTkJHR29oQlNBRFFSQnFJUWNnQTBFSWFpRUlJd0JCSUdzaUFpUUFJQUlnQVRZQ0hBSi9JQUZGQkVBZ0F4REZHZ3dCQ3lBQ0lBSkJHR28yQWhRZ0FpQUJLQUlFTmdJTUlBSWdBa0VjYWpZQ0VDQUNJQUpCRkdvMkFnZ2dBaWdDRENJQlFaQ3FFa1lFUUNBQ0tBSUlLQUlBSUFBZ0FpZ0NFQ2dDQUJERUdqWUNBQXNDUUNBQlFaQ3FFa1lOQUNBQ0tBSU1JZ0JCb0xNU1JnUkFJQUlvQWdnb0FnQWdCQ0FDS0FJUUtBSUFFTVFhTmdJQUN5QUFRYUN6RWtZTkFDQUNLQUlNRU9ZRElnQUVRQ0FDS0FJSUtBSUFJQVlvQWdBaUFVRUlhaUFCSUFJb0FoQW9BZ0FRd3hvUXl3WTJBZ0FMSUFBTkFDQUNLQUlNSWdaQmtLSVNSZ1JBSUFJb0FnZ29BZ0FoQ2lBQ0tBSVFLQUlBSVFRakFFRXdheUlBSkFBZ0JTZ0NBQ0VCQW44Z0JDZ0NIQ0lGS0FJRUlnbEJxS01TUmdSQUlBRWdCQ2dDR0JEYkJ5RUVJQUJCQURvQUxDQUFRY0NjSURZQ0tDQUJRUWhxSUFRZ0FFRW9haERqQnd3QkN3SkFJQWxCa0tNU1JnUkFJQUFnQlNnQ0REWUNJQXdCQ3lBQktBTDRBaUlGRUJ3Z0FFSGFBRFlDSENBQVFmcXRBVFlDR0NBQUlBQXBBeGczQXdBZ0JVSElBbXBCRENBQUVLa0hJQUJCQVRZQ0lBc2dBRUVCT2dBa0lBRWdCQ2dDR0JEYkJ5RUVJQUJCSUdvUXZnRW9BZ0FoQlNBQVFRQTZBQXdnQUVIQW5DQTJBZ2dnQUNBRk5nSVFJQUZCQ0dvZ0JDQUFRUkJxSUFCQkNHb1E0Z2NMSVFFZ0FFRXdhaVFBSUFvZ0FUWUNBQXNnQmtHUW9oSkdEUUFnQWlnQ0RDSUJRZGlzRWtZRVFDQUNLQUlJS0FJQUlBY29BZ0FpQUVFSWFpQUFJQUlvQWhBb0FnQWlBQ2dDR0JEYkJ5QUFLQUljSUFBb0FpQVEwQTgyQWdBTElBRkIyS3dTUmcwQUlBSW9BZ3dpQUVHNHJSSkdCRUFnQWlnQ0NDZ0NBQ0FJS0FJQUlBSW9BaEFvQWdBb0FoZ1Eyd2MyQWdBTElBQkJ1SzBTUmcwQUlBSW9BZ2dvQWdBZ0F4REZHallDQUFzZ0FpZ0NGQ2dDQUFzaEFDQUNRU0JxSkFBZ0EwRkFheVFBSUFBTE5BRUJmeU1BUVJCcklnTWtBQ0FESUFFb0FnQTJBZ3dnQUNBQVFkZ0NhaUFEUVF4cUlBSVFsUVFoQUNBRFFSQnFKQUFnQUFzcEFRSi9JQUFvQWdnaEFRTkFJQUVFUUNBQktBSUFJUUlnQVJBZklBSWhBUXdCQ3dzZ0FCQzNBZ3NMQUNBQUlBRkJBQkRRRWdzUEFDQUFJQUVRdkFwQkFUb0ExQUlMU0FFQmZ5TUFRU0JySWdJa0FDQUJLQUlBSVFFZ0FrRUJOZ0ljSUFJZ0FUWUNGQ0FDSUFKQkZHbzJBaGdnQWlBQ0tRTVlOd01JSUFBZ0FrRUlhaENYQWhvZ0FrRWdhaVFBQ3c4QUlBQWdBRUhZQW1vZ0FSRFBEd3ZKQVFFRWZ5TUFRUkJySWdRa0FDQUFLQUlBSVFZZ0JDQURLUUlBTndNSUl3QkI0QUJySWdNa0FDQUFLQUlBSVFVZ0EwRUZOZ0k4SUFOQjdCczJBamdnQXlBREtRTTROd01JSUFOQlFHc2lCeUFGSUFOQkNHb1E0UUVnQXlBQk5nSVFJQUFvQWdBZ0FoQ3hDeUVBSUFOQkFqWUNIQ0FESUFBMkFoUWdBeUFEUVJCcU5nSVlJQU1nQXlrREdEY0RBQ0FGSUFVZ0JrSFlBbW9nQnlBRFFTQnFJQU1RdFFJaUFDQUVRUWhxRU1jUEVJRURJUUVnQUJDcUFTQURRZUFBYWlRQUlBUkJFR29rQUNBQkM4NENBUWwvSXdCQkVHc2lCQ1FBSUFBb0FnQWhCeUFFSUFJcEFnQTNBd2dqQUVIZ0FHc2lBaVFBSUFBb0FnQWhBQ0FDUVFVMkFqd2dBa0hzR3pZQ09DQUNJQUlwQXpnM0F4QWdBa0ZBYXlJSUlBQWdBa0VRYWhEaEFTQUNRUUUyQWlRZ0FpQUJOZ0ljSUFJZ0FrRWNhallDSUNBQ0lBSXBBeUEzQXdnZ0FDRUxJQUpCS0dvZ0FrRUlhaENYQWlFREl3QkJFR3NpQlNRQUlBQVFIQ0FBSUFBb0FneEJBV29pQVRZQ0RDQUZJQUUyQWdnakFFRVFheUlCSkFBZ0FFR01BV29pQmhDekJTRUpJQVVvQWdnaENpQUFLQUlJSVFBZ0FTQURRUVJxTmdJSUlBRWdBeWdDQkNBRFJ6b0FEQ0FCSUFRcEFnZzNBd0FnQmlBSklBQWdDaUFIUWRnQ2FpQUlJQUZCQ0dvZ0FSREJCeUlBRUNnZ0JpQUdLQUlZUVFGcU5nSVlJQUZCRUdva0FDQUZRUkJxSkFBZ0N5QUFFSUVESVFBZ0F4Q29BU0FDUWVBQWFpUUFJQVJCRUdva0FDQUFDd3NBSUFCQjdQNEdFTW9HQzgwQ0FRRi9Jd0JCd0FGcklnUWtBQ0FFSUFJMkFyZ0JJQVFnQVRZQ3ZBRWdCQ0FET2dDM0FTQUVRY0MwRWhDekJFR1NzYWo2QjJwQms2UUdjeUlCUVFKMlFaYjRxZm9IY3lBRUtBSzRBV29nQVhNaUFVRUNka0dXK0tuNkIzTWdCRUc4QVdvUStRSnFJQUZ6SWdGQkFuWkJsdmlwK2dkeklBUXRBTGNCYWlBQmN6WUNvQUVnQkVJSE53TUFJQUFnQkNnQ29BRWdCQ2tEQUJDZEJDSUFRYkMwRWpZQ0JDQUFRZlMwRWpZQ0FDQUFRZEMwRWpZQ0FDQUFJQVFvQXJ3Qk5nSVlJQUFnQkNnQ3VBRWlBVFlDSENBQUlBUXRBTGNCT2dBZ0lBRkJBVTBFZnlBRVFaNmFCVUVsUVEwZ0JFR2dBV29RSFNJQkVCY2lBa0VZYWtIOTFnZ1FEaG9nQWhBWUlBRVFIaUFBS0FJY0JTQUJDMEVGVHdSQUlBUkJucG9GUVNaQkRTQUVRYUFCYWhBZElnRVFGeUlDUVJocVFiN1ZDQkFPR2lBQ0VCZ2dBUkFlQ3lBRVFjQUJhaVFBSUFBTEZ3QWdBQ0FCRUZZaUFFRWNhaUFCUVJ4cUVGWWFJQUFMQ0FBZ0FDMEFPQm9MS3dFQmZ5QUFRZGlZRWpZQ0FDQUFRVGhxSWdFUS9Cc2dBUkQ1R3lBQklBRW9BcUFDRURZZ0FCRFNDd3NXQUNBQVFlaVhFallDQkNBQVFZaVlFallDQUNBQUMwNEJBWDhqQUVFUWF5SURKQUFnQXlBQ05nSUlJQU1nQVRZQ0RDQUFJQU1vQWd3Z0F5Z0NDQkQ5RHlJQVFiQ1FFallDQkNBQVFlQ1FFallDQUNBQVFkQ1FFallDQUNBRFFSQnFKQUFnQUF0bUFRTi9Jd0JCTUdzaUFpUUFJQUFvQWdBaEFDQUNJQUVvQWtBb0FpUkJKR29RVXlBQ1FSQnFJZ05CdW93SklBSVFOU0FDUVNCcUlnUWdBMEh6bWdrUUxTQUFJQVFnQVNnQ1FFRVFhaENHQVNBRUVBOGFJQU1RRHhvZ0FoQVBHaUFDUVRCcUpBQUxzZ0lCQ0g4akFFRVFheUlDSkFBakFFSEFBV3NpQXlRQUlBTkJ1QUZxSUFBZ0FSRDFDeUFBS0FMRUFTSUZRUUZySVFZZ0FTZ0NBQ0VISUFBb0FzQUJJUWdnQXlnQ3ZBRWhDU0FES0FLNEFTRUFRUUFoQVFKQUEwQWdBU0FGUndSQUlBZ2dBRUVFZEdvaUJDMEFCRVVFUUNBQ1FRQTJBZ3dnQWtFQU9nQUlEQU1MQWtBZ0JDZ0NDQ0FKUncwQUlBY2dCQ2dDQUVjTkFDQUNJQUEyQWd3Z0FrRUJPZ0FJREFNTElBRWdCQ2dDREVzRVFDQUNRUUEyQWd3Z0FrRUFPZ0FJREFNRklBQkJBV3BCQUNBQUlBWkhHeUVBSUFGQkFXb2hBUXdDQ3dBTEN5QURRUWhxUVlhMUEwR2VCRUVPSUFOQnFBRnFFQjBpQUJBWElnRkJHR3BCMGpVUURob2dBUkFZSUFKQkFEWUNEQ0FDUVFBNkFBZ2dBQkFlQ3lBRFFjQUJhaVFBSUFJdEFBZ2hBQ0FDUVJCcUpBQWdBQXQ2QVFGL0l3QkJzQUZySWdJa0FBSi9Ba0FDUUFKQUFrQWdBVUVCYXc0RUFBSURBUU1MSUFBb0FxQUlEQU1MSUFBb0FxUUlEQUlMSUFBb0FxZ0lEQUVMSUFKQnBZb0ZRWlFDUVFnZ0FrR2dBV29RSFNJQUVCY2lBVUVZYWtHKzh3Z1FEaG9nQVJBWUlBQVFIa0VBQ3lFQklBSkJzQUZxSkFBZ0FRdmNCZ0VGZnlNQVFkQUJheUlGSkFBZ0JTQUROZ0lVSUFVZ0FUWUNDQ0FGSUFWQkZHbzJBZ3dDUUNBRFJRUkFJQUFnQlVFSWFoRGlIQXdCQ3dKQUlBTW9BZ1FpQmtINDdROUdCRUFDUUFKQUlBRW9BZ1FnQXhDQ0F4Q2dCQ0lHUVFBZ0JpZ0NCRUhZbkJKR0d5SUhLQUlzSWdZb0FnUWlDRUdRbkJKR0JFQWdCU0FDTmdMQUFTQUZJQUVvQXVDbkFpZ0NyQWcyQXNRQkRBRUxJQWhCcUp3U1JnUkFJQVZCSUdvaUJ5QURLQUlrUVNScUVGTWdBU2dDNEtjQ1FRQVFuQUVoQXlBSEVBOGFJQUVvQXVDbkFpRUJJQVVnQmpZQ0lDQUJRYmdJYWlBSEVJTUNJZ0ZGSUFSRmNrVUVRQ0FESUFFUWFnc2dCU0FETmdMRUFTQUZJQUkyQXNBQkRBSUxJQVZCSUdwQnBZb0ZRWjhMUVFnZ0FTZ0NDQkFYSWdGQkdHb2lBa0doamd3UURob2dBaUFGUWNBQmFpQUhLQUlzS0FJRUtBSUVFQlFpQWhBU0dpQUNFQThhSUFFUUdDQUZRZ0EzQThBQkMwRUFJUVlMSUFVZ0JqWUN5QUVNQVFzZ0JrSEEveEZHQkVBZ0JVRWdhaUFCSUFJZ0F5Z0NKRUVCRU80SElBVkJHR29nQVNBRktBSWdJQU1vQWloQkFCQ21BaUFGS0FJa0lnRWdCU2dDSEJCcUlBVWdBVFlDeEFFZ0JTQUZLQUlZTmdMQUFTQUZJQVVvQWlnMkFzZ0JEQUVMSUFaQndJQVNSZ1JBSUFWQndBRnFJQUVnQWlBREtBSWtRUUVRN2djTUFRc2dCa0dBZ1JKR0JFQWdBeWdDSkVFQ1JnUkFJQVVnQVNnQ0JDQURFSUlES0FJUUlnWTJBaGdnQlVFZ2FpSUlJQVlRcEFRZ0FTZ0M0S2NDUVFBUW5BRWhCeUFJRUE4YUFrQWdBU2dDNEtjQ1FiZ0lhaUFGUVJocUVJTUNJZ2hGRFFBQ1FDQUVEUUFnQXlnQ0pFRUNSd1JBSUFWQklHcEJwWW9GUWVRS1FRZ2dCVUhBQVdvUUhTSUVFQmNpQ1VFWWFrR3lzZ2dRRGhvZ0NSQVlJQVFRSGdzZ0FTZ0NCQ0FERVBNY0lnTVE0UndpQkVVRVFDQURFUEljRFFFZ0JVRWdha0dsaWdWQjhBcEJDQ0FGUWNBQmFoQWRJZ0VRRnlJRFFSaHFRZkhyQ0JBT0dpQURFQmdnQVJBZURBRUxJQUVvQXVDbkFpRUJJQVVnQkNnQ0xEWUNJQ0FCUWZnU2FpQUZRU0JxRU1ZRFJRMEJDeUFISUFnUWFnc2dCU0FHTmdMSUFTQUZJQWMyQXNRQklBVWdBallDd0FFTUFnc2dCVUhBQVdvZ0FTQUNJQU1vQWlnZ0JCRHVCd3dCQ3lBRlFjQUJhaUFGUVFocUVPSWNDeUFBSUFVcEE4QUJOd0lBSUFBZ0JTZ0N5QUUyQWdnTElBVkIwQUZxSkFBTHd3WUJDbjhqQUVIZ0FHc2lBeVFBQWtBZ0FTZ0NCRVVFUUNBQUlBSVFWaG9NQVFzZ0EwRXdhaUFCUWVBRWFpSUVJQUlnQTBGQWF4Q2JCUkRhSENBREtBSXdSUVJBSUFGQnNCNXFLQUlBSVFjQ1FDQUJRZkNBQVdvb0FnQUVRQ0FEUVJCcUlBRkI0SUFCYWlBRFFVQnJJQUlRVmhEU0hBd0JDeUFCS0FJQUlnZ1FIQ0FEUVVCcklnVWdBaEJUSUFNZ0F5Z0NSQ0FETFFCTElnWWdCa0VZZEVFWWRVRUFTQ0lHR3pZQ1BDQURJQU1vQWtBZ0JTQUdHellDT0NBRElBTXBBemczQXdnZ0EwRVFhaUFJUVlnQ2FpQURRUWhxRUo4RUlBVVFEeG9MQWtBZ0J5QUJLQUt3SGtZRVFDQURLQUkwSUFOQkVHb1Ezd1FNQVFzakFFSGdBV3NpQVNRQUlBUkJ4QmxxS0FJQUlna2dCQ2dDekJraUJVR1dBV3hCbGdGcVFlUUFia2tFUUNBRUlBVkJBWFJCQW1vUXh4b2dCQ2dDeEJraENRc2dBMEZBYXlFSElBSW9BZ0FoQ2lBQklBTkJFR28yQXR3QklBRWdBallDMkFFZ0NVRUJheUVMSUFvZ0NYQWhDRUVBSVFZQ1FBTkFJQVlnQ1VjRVFDQUVLQUxBR1NJTUlBaEJ4QUJzYWlJRkxRQTRSUVJBSUFFZ0FVSFlBV29RL0FnZ0JTQUJFTDhhSUF3Z0NFSEVBR3hxSWdJZ0JqWUNRQ0FDSUFvMkFqd2dCQ0FFS0FMTUdVRUJhallDekJrZ0JDQUVLQUxRR1VFQmFqWUMwQmtnQnlBRlFSeHFOZ0lFSUFkQkFEWUNBQXdEQ3lBRklBb2dBaEMrR2dSQUlBRWdBVUhZQVdvUS9BZ0NRQ0FGTFFBNEJFQWdCU0FCRUtBUERBRUxJQVVnQVJES0N3c2dCQ0FFS0FMUUdVRUJhallDMEJrZ0J5QUZRUnhxTmdJRUlBZEJBVFlDQUF3REN5QUdJQVVvQWtCTEJFQWdBVUdnQVdvaUFpQUJRZGdCYWhEOENDQUJJQUlRdXhvaUFpQUdOZ0pBSUFJZ0NqWUNQQ0FDSUFVUXFBOGdBaUFDS0FKQVFRRnFOZ0pBSUFRZ0NFRUJhaUFFS0FMRUdYQWdBaEN3R2lBRUlBUW9Bc3daUVFGcU5nTE1HU0FFSUFRb0F0QVpRUUZxTmdMUUdTQUhJQVZCSEdvMkFnUWdCMEVBTmdJQUlBSVE1d2NNQXdVZ0NFRUJha0VBSUFnZ0MwY2JJUWdnQmtFQmFpRUdEQUlMQUFzTElBRkJoclVEUWVzRFFRNGdBVUdnQVdvUUhTSUNFQmNpQlVFWWFrR1dOUkFPR2lBRkVCZ2dCMElBTndJQUlBSVFIZ3NnQVVIZ0FXb2tBQ0FESUFNcEEwQTNBekFMQ3lBQUlBTW9BalFRVmhvTElBTkI0QUJxSkFBTEl3RUJmeUFBUVJ4cUlnRVErUndnQUVFQU5nS0FBU0FCSUFBb0Fud1FOaUFBRUY0TEV3QWdBQzBBeEJnRVFDQUFRUVJxRUtVRkN3c0tBQ0FBUVpDcUVoQklDMEVCQVg0Z0FFVUVRRUVBRHdzQ2YwRUFJQUFvQWdRaUFDa0RFRUtBd0lDQ2dJQ0lBWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFSjhKRFFBYUlBQVE4Z2NMQzhZQkFRVi9Jd0JCRUdzaUF5UUFJQU1nQVRZQ0RDQUFLQUlFSVFFQ1FDQUFLQUlBUVFGQkFCQ29CU0lDUlEwQUlBRWdBaWdDVENnQ0FCQ3ZDU0lDUlEwQUlBQW9BZ2doQkNBRElBSW9BaEEyQWdnZ0JDQURRUXhxSUFOQkNHb1FrUkVpQWlFR1FRQWhCU0FCUWF3ZGFpRUJJQUFvQWd3b0FnQkJFR29oQkNNQVFSQnJJZ0FrQUNBQ0tBSWNFSVFCRU1VY0lnSkZCRUFnQVNBQVFkcjdCaEFVSWdFZ0JCQW5JQUVRRHhvTElBQkJFR29rQUNBR0lBVWdBaHNoQkFzZ0EwRVFhaVFBSUFRTDhRRUJCSDhqQUVIUUFHc2lBeVFBSUFBb0FnQWlBQ0FEUVVCclFlZkdBQkFVSWdRZ0FTZ0NDRUVRYWhBbklBUVFEeG9DUUFKQUFrQWdBaWdDQkE0Q0FBRUNDeUFBSUFOQlFHdEJydTBERUJRaUFDQUNLQUlBS0FJSVFSQnFFSVlCSUFBUUR4b01BUXNnQTBGQWF5SUJJQUlvQWdBb0Fnd29BaEFvQWtBb0FpUkJKR29RVXlBRFFabStDaUFDUVFocUVNUUJJQU5CRUdvaUJDQURRWTJPQ1JBdElBTkJJR29pQlNBRUlBRVFUaUFEUVRCcUlnWWdCVUh6bWdrUUxTQUFJQVlnQWlnQ0FDZ0NDRUVRYWhDR0FTQUdFQThhSUFVUUR4b2dCQkFQR2lBREVBOGFJQUVRRHhvTElBTkIwQUJxSkFBTEZ3QWdBQ0FCRVBVRElnQkZCRUFRQVFBTElBQkJER29Md1FFQkJuOENmeUFCS0FJQUVNTURJUU1DUUNBQUtBSUVJZ0pGRFFBZ0FDZ0NBQUovSUFKQkFXc2dBM0VnQW1raUFFRUJUUTBBR2lBRElBSWdBMHNOQUJvZ0F5QUNjQXNpQlVFQ2RHb29BZ0FpQkVVTkFDQUNRUUZySVFZZ0FTZ0NBQ0VCSUFCQkFVc2hCd05BSUFRb0FnQWlCRVVOQVNBRUtBSUVJZ0FnQTBjRVFBSkFJQWRGQkVBZ0FDQUdjU0VBREFFTElBQWdBa2tOQUNBQUlBSndJUUFMSUFBZ0JVY05BZ3dCQ3lBRUtBSUlJQUZIRFFBTElBUU1BUXRCQUF0QkFFY0xEQUFnQUJDdEhTQUFFTFFRQ3hNQUlBQWdBU2dDQUNBQktBSUVFTmtNSUFBTEl3RUJmeU1BUVNCcklnTWtBQ0FESUFFZ0FoRHFIaUFBSUFNUVV5QURRU0JxSkFBTERBQWdBQkRGSGlBQUVPZ1FDM0VCQTM4Z0FDZ0NCQ0VDQWtBZ0FDZ0NDRUVEYWtGOGNTSURRY0gvQTJ0Qi92OTdTd1JBSUFJaEFRd0JDeUFBUVpDQUJFRVFFTmtDSWdFMkFnUkJBQ0VESUFGQkFEWUNnSUFFSUFJRVFDQUNJQUUyQW9DQUJBd0JDeUFBSUFFMkFnQUxJQUFnQTBGQWF6WUNDQ0FCSUFOcUN4QUFJQUF0QUJSRkJFQVFid0FMSUFBTEVnQWdBQzBBRkFSQUlBQkJCR29RbFFJTEM2a0JBUVIvSXdCQk1Hc2lBeVFBSUFCQkVHb2dBU0FDRU9jZUlnWkZJQUlnQmtaeVJRUkFJQU5CSUdvaUJTQUJFRk1nQUNnQ0JDRUJJQU5CZ3BBSklBVVF4QUVnQTBFUWFpSUVJQU5CODVvSkVDMGdBU0FFSUFKQkVHb1F3QjRnQkJBUEdpQURFQThhSUFBb0FnUWhBQ0FEUWZPYUNTQUZFTVFCSUFRZ0EwSFk3UU1RTFNBQUlBUWdCa0VRYWhDL0hpQURRUkJxRUE4YUlBTVFEeG9nQlJBUEdnc2dBMEV3YWlRQUN4Y0FJQUFnQVNnQ0FCQ2ZIeUFCS0FJRUtBSUFOZ0pVQ3dvQUlBQkIwS2dTRUVnTENnQWdBRUd3cVJJUVNBc3VBUUYvSUFBZ0FSQ2REQ0lBUW9DQWdJQWdOd0l3SUFBZ0FFRWNhaUlDTmdJc0lBSWdBVUVzYWhDVUh5QUFDNVlDQWdOL0FYNGdBU0FBUWVnU2FpZ0NBRXNFUUNBQUtBTGdFaUVESUFBaEFpQUFJQUZCR0U4RWYwRi9JQUd0UXVRQWZpSUZweUFGUWlDSXB4c1FGU0VDSUFFRlFSZ0xOZ0xvRWlBQUlBSTJBdUFTUVFBaEFnTkFJQUFvQXVRU0lBSk5CRUFnQUNBREVEWUZJQUpCNUFCc0lnUWdBQ2dDNEJKcUlBTWdCR29pQkJDTkVSb2dCQkRxQWlBQ1FRRnFJUUlNQVFzTEN5QUFRZVFTYWlnQ0FDRUNBMEFnQVNBQ1R3UkFBa0FnQUNnQzVCSWlBaUFCSUFFZ0Fra2JJUVFEUUNBQ0lBUkdEUUVnQUNnQzRCSWdBa0hrQUd4cUlnTkNBRGNDWENBRFFRQTZBRmdnQTBFQU9nQUFJQUpCQVdvaEFnd0FDd0FMQlNBQUtBTGdFaUFDUVFGcklnSkI1QUJzYWhEcUFnd0JDd3NnQUNBQk5nTGtFZ3U4QXdFR2Z5TUFRZUFDYXlJQ0pBQWdBa0hRQVdvUWlBTWlCQ0FFS0FJQVFReHJJZ01vQWdCcUlnVWdCU2dDQkVHRUNISTJBZ1FnQWtISUFXb2lCU0FFSUFNb0FnQnFFSXNHRUlZSUlBVVFaQ0FFSUFRb0FnQkJER3NvQWdCcVFSUTJBZ2dnQkVFSWFpQUJLZ0lBRUprTklBSkJ1QUZxSUFSQkRHb1FRaUFFSUFKQnNBRnFFT0FVQWtBZ0FTb0NBQ0FDS3dPd0FiWmJCRUFEUUFKQUlBSW9BcndCSUFJdEFNTUJJZ0VnQVVFWWRFRVlkU0lHUVFCSUlnRWJJZ05CQWtrTkFDQUNLQUs0QVNJRklBSkJ1QUZxSUFFYklnY2dBMEVCYXlJQmFpMEFBRUV3UncwQUlBTWdCMnBCQW1zdEFBQkJMa1lOQUFKQUlBWkJBRWdFUUNBQ0lBRTJBcndCREFFTElBSWdBVG9Bd3dFZ0FrRzRBV29oQlFzZ0FTQUZha0VBT2dBQURBRUxDeUFBUVFocUlBSkJ1QUZxRUJJYURBRUxJQUpCR0dvaUJTQUNRU0JxRUlnRElnTWdBeWdDQUVFTWF5Z0NBR29RaXdZUWhnZ2dCUkJrSUFNZ0F5Z0NBRUVNYXlnQ0FHcEJDVFlDQ0NBRFFRaHFJQUVxQWdBUW1RMGdBa0VJYWlJQklBTkJER29RUWlBQVFRaHFJQUVRRWhvZ0FSQVBHaUFERUxzQ0dnc2dBa0c0QVdvUUR4b2dCQkM3QWhvZ0FrSGdBbW9rQUNBQUMxUUJBbjhqQUVFUWF5SURKQUFnQUNBQkVINGdBMEVJYWlJQUlBRkJIR29pQkJENUJpQUVJQUlRbGdvZ0FVRUJFTXdVSUFBUVpDQUJLQUlZSWdBRVFDQURJQUFnQWhDeERDQURFR1FMSUFOQkVHb2tBQXNNQUNBQUVMb01HaUFBRUI4TEJ3QWdBQkM2REF2V0FnRUNmeU1BUVVCcUlnd2tBQ0FNUVRocUlnMGdBU0FDSUFjZ0NDQUtJQXNReWdrQ1FDQU5FREFFUUNBQVFRSTZBQVFNQVFzZ0RFRXdhaUlOSUFFZ0FpQURJQXhCT0dvUUdpb0NBQkRaQVNBTkVEQUVRQ0FBUVFJNkFBUU1BUXNnREVFb2FpSU5JQUVnQWlBRUlBVWdDaUFMRU1vSklBMFFNQVJBSUFCQkFqb0FCQXdCQ3lBTVFTQnFJZzBnQVNBQ0lBWWdERUVvYWhBYUtnSUFFTmtCSUEwUU1BUkFJQUJCQWpvQUJBd0JDeUFNUVJocUlnMGdBU0FDSUFRZ0JTQUhJQWdReWdrZ0RSQXdCRUFnQUVFQ09nQUVEQUVMSUF4QkVHb2lEU0FCSUFJZ0NTQU1RUmhxRUJvcUFnQVEyUUVnRFJBd0JFQWdBRUVDT2dBRURBRUxJQXhCQ0dvaURTQUJJQUlnREVFd2FoQWFLZ0lBSUF4QklHb1FHaW9DQUJEL0F5QU5FREFFUUNBQVFRSTZBQVFNQVFzZ0FDQUJJQUlnREVFSWFoQWFLZ0lBSUF4QkVHb1FHaW9DQUJEV0F3c2dERUZBYXlRQUM5WUNBUUovSXdCQlFHb2lEQ1FBSUF4Qk9Hb2lEU0FCSUFJZ0J5QUlJQW9nQ3hETENRSkFJQTBRTUFSQUlBQkJBam9BQkF3QkN5QU1RVEJxSWcwZ0FTQUNJQU1nREVFNGFoQWFLZ0lBRU5vQklBMFFNQVJBSUFCQkFqb0FCQXdCQ3lBTVFTaHFJZzBnQVNBQ0lBUWdCU0FLSUFzUXl3a2dEUkF3QkVBZ0FFRUNPZ0FFREFFTElBeEJJR29pRFNBQklBSWdCaUFNUVNocUVCb3FBZ0FRMmdFZ0RSQXdCRUFnQUVFQ09nQUVEQUVMSUF4QkdHb2lEU0FCSUFJZ0JDQUZJQWNnQ0JETENTQU5FREFFUUNBQVFRSTZBQVFNQVFzZ0RFRVFhaUlOSUFFZ0FpQUpJQXhCR0dvUUdpb0NBQkRhQVNBTkVEQUVRQ0FBUVFJNkFBUU1BUXNnREVFSWFpSU5JQUVnQWlBTVFUQnFFQm9xQWdBZ0RFRWdhaEFhS2dJQUVJQUVJQTBRTUFSQUlBQkJBam9BQkF3QkN5QUFJQUVnQWlBTVFRaHFFQm9xQWdBZ0RFRVFhaEFhS2dJQUVOY0RDeUFNUVVCckpBQUwxQUlCQW44akFFSHdBR3NpRENRQUlBeEI0QUJxSWcwZ0FTQUNJQWNnQ0NBS0lBc1F6QWtDUUNBTkVHSUVRQ0FBUVFJNkFBZ01BUXNnREVIUUFHb2lEU0FCSUFJZ0F5QU1RZUFBYWhCS0t3TUFFTnNCSUEwUVlnUkFJQUJCQWpvQUNBd0JDeUFNUVVCcklnMGdBU0FDSUFRZ0JTQUtJQXNRekFrZ0RSQmlCRUFnQUVFQ09nQUlEQUVMSUF4Qk1Hb2lEU0FCSUFJZ0JpQU1RVUJyRUVvckF3QVEyd0VnRFJCaUJFQWdBRUVDT2dBSURBRUxJQXhCSUdvaURTQUJJQUlnQkNBRklBY2dDQkRNQ1NBTkVHSUVRQ0FBUVFJNkFBZ01BUXNnREVFUWFpSU5JQUVnQWlBSklBeEJJR29RU2lzREFCRGJBU0FORUdJRVFDQUFRUUk2QUFnTUFRc2dEQ0FCSUFJZ0RFSFFBR29RU2lzREFDQU1RVEJxRUVvckF3QVFnUVFnREJCaUJFQWdBRUVDT2dBSURBRUxJQUFnQVNBQ0lBd1FTaXNEQUNBTVFSQnFFRW9yQXdBUTJBTUxJQXhCOEFCcUpBQUxKQUFnQUVFSWFpQUJJQU5MQkg5QnJPSUdCU0FCUVFKMElBSnFLQUlBQ3hBT0dpQUFDMGNCQVg4Q1FDQUJSUTBBSUFFb0Fnd2lBU0FBS0FJRUlBQW9BZ0FpQUd0QkFuVlBEUUFnQUNBQlFRSjBhaWdDQUNJQVJRMEFJQUJCQUNBQUtBSUVJQUpHR3lFREN5QURDK1VCQVFaL0l3QkI4QUZySWdFa0FDQUJRZUFBYWhCSklRY2dBVUhRQUdvaUNDQUJJQUVRZ2dZZ0IwRUlhaUlDSUFnUUVob2dBa0gwN1F3UURob2dBVUZBYXlJSklBRWdBUkNCQmlBQ0lBa1FFaG9nQWtIMDdRd1FEaG9nQWlBQlFUQnFJQVlRRkNJS0VCSWFJQUpCOU8wTUVBNGFJQUlnQVVFZ2FpQUZFQlFpQ3hBU0dpQUNRZlR0REJBT0dpQUNJQUZCRUdvZ0JCQVVJZ3dRRWhvZ0FrRzE5QWtRRGhvZ0FpQUJJQU1RRkNJQ0VCSWFJQUlRRHhvZ0RCQVBHaUFMRUE4YUlBb1FEeG9nQ1JBUEdpQUlFQThhSUFBZ0IwRU1haEJDSUFjUVVTQUJRZkFCYWlRQUMzWUJBbjhqQUVFUWF5SUFKQUFDUUNBQklBSW9BZ1FpQlVId2hSQkhCSDhnQlVHWXJoSkhEUUVnQWlnQ0dDQURSdzBCSUFJb0Fod0ZJQUlMRUtzQ0lnSkZCRUFNQVFzZ0FDQUNOZ0lNSUFFb0FnQWhBU0FBSUFNMkFnZ2dBU0FBUVFocUlBQkJER29Ra1JFaEJBc2dBRUVRYWlRQUlBUUxTZ0VCZnlNQVFSQnJJZ1lrQUFKQUlBRW9BZ0FnQldzZ0JFa2lBUTBBSUFJb0FnQWlBa1VOQUNBR0lBQkJCR29nQXhDNEFpQUNJQVlRbmdFZ0JoQVBHZ3NnQmtFUWFpUUFJQUVMakFFQkEzOGpBRUhRQVdzaUF5UUFJQU5CRUdvaUJDQUFLQUlFSWdVb0FnQkJjaUFBS0FJSUVCQWdBeUFGS0FJQUlBSVFOeUFFSUFNUUVob2dCRUhRbGdvUURob2dCQ0FGS0FJQVFZQURha0VjSUFBb0Fnd29BZ1FvQWdBUWp3RVFEaG9nQkVHeDJRd1FEaG9nQkNBQkVCSWFJQU1vQXN3QklRQWdBeEFQR2lBRUVCRWdBMEhRQVdva0FDQUFDN29CQVFWL0l3QkI0QUZySWdRa0FDQUFLQUlNUVFJUTRnTWhCeUFFUVNCcUlnTWdBQ2dDQkNJRktBSUFRWElnQUNnQ0NCQVFJQVJCRUdvaUJpQUZLQUlBSUFjUU55QURJQVlRRWhvZ0EwR2t3Z29RRGhvZ0JDQUZLQUlBS0FJQUtBSUFFSUVDSUFNZ0JCQVNHaUFEUWVlV0NoQU9HaUFESUFVb0FnQkJnQU5xUVJ3Z0FDZ0NEQkNQQVJBT0dpQURJQUlRRGhvZ0F5QUJFQklhSUFRb0F0d0JJUUFnQkJBUEdpQUdFQThhSUFNUUVTQUVRZUFCYWlRQUlBQUxGd0FnQUVFQUlBQUVmeUFBS0FJRUVMZ1NCVUVBQ3hzTDR3TUJCbjhqQUVHd0Eyc2lDeVFBQWtBQ1FDQUFLQUlBS0FJQUtBSUFFRWRGRFFBZ0JCRDNBU0lOUVFGR0lBMUIvLy8vL3dkR2NrVUVRQ0FMUWZBQmFpSU1JQUFvQWdCQmNpQUVFQkFnQzBIZ0FXb2lEaUFBS0FJQUlBb1FOeUFNSUE0UUVob2dEQ0FKRUE0YUlBdEIwQUZxSWc4Z0FDQUJJQUlnQXlBRVFmLy8vLzhIRUlvQklBd2dEeEFTR2lBTVFmZndEQkFPR2lBTFFjQUJhaUlCSUFBZ0JCQ0FBaUFNSUFFUUVob2dDeWdDckFNaERTQUJFQThhSUE4UUR4b2dEaEFQR2lBTUVCRU1BZ3NnQUVFb2FpRU1JQUFvQWlRaERRTkFJQXdnRFVZTkFTQU5LQUlRSWhBZ0NFY0VRQ0FMUWZBQmFpSU1JQUFvQWdCQmNpQUVFQkFnQzBIZ0FXb2lEaUFBS0FJQUlBY1FOeUFNSUE0UUVob2dEQ0FHRUE0YUlBdEIwQUZxSWc4Z0FDQUJJQUlnQXlBRUlCQVFpZ0VnRENBUEVCSWFJQXNvQXF3RElRMGdEeEFQR2lBT0VBOGFJQXdRRVF3REJTQU5FRXdoRFF3QkN3QUxBQXRCQUNFTklBQW9BaEFOQUNBTElBUW9BaWcyQXRBQklBQkJCR29nQzBIUUFXb1FtUUVoQXlBTFFRQTJBdVFCSUFzZ0JUWUM0QUVnQ3lBQU5nTEFBU0FMUVFocUlnd2dDMEhnQVdvZ0MwSEFBV29nQVNBQ0lBUVEvd0VnQXlBTFFmQUJhaUFNRVA0QklnQVFrd0VnQUJBV0lBd1E2QUVMSUF0QnNBTnFKQUFnRFF1QkJRRUhmeU1BUWNBRGF5SUpKQUFDUUFKQUlBQW9BZ0FvQWdBb0FnQVFSMFVOQUNBQktBSUVLQUlBSVFzZ0JCRDNBU0lLSUFkR0lBcEIvLy8vL3dkR2NrVUVRQ0FMUVFFUTRnTWhDaUFKUVlBQ2FpSUlJQUFvQWdCQmNpQUVFQkFnQ1VId0FXb2lEQ0FBS0FJQUlBb1FOeUFJSUF3UUVob2dDVUhnQVdvaURTQUFLQUlBS0FJQUtBSUFFSUVDSUFnZ0RSQVNHaUFJUVltV0NoQU9HaUFJSUFBb0FnQkJnQU5xUVJ3Z0N4Q1BBUkFPR2lBSUlBWVFEaG9nQ1VIUUFXb2lDeUFBSUFFZ0FpQURJQVJCLy8vLy93Y1FpZ0VnQ0NBTEVCSWFJQWhCOS9BTUVBNGFJQWxCd0FGcUlnRWdBQ0FFRUlBQ0lBZ2dBUkFTR2lBSktBSzhBeUVLSUFFUUR4b2dDeEFQR2lBTkVBOGFJQXdRRHhvZ0NCQVJEQUlMSUFCQktHb2hDQ0FBS0FJa0lRb0RRQ0FJSUFwR0RRRWdDaWdDRUNJT1FRUkhCRUFnQzBFQUVPSURJUW9nQ1VHQUFtb2lDQ0FBS0FJQVFYSWdCQkFRSUFsQjhBRnFJZ3dnQUNnQ0FDQUtFRGNnQ0NBTUVCSWFJQWxCNEFGcUlnMGdBQ2dDQUNnQ0FDZ0NBQkNCQWlBSUlBMFFFaG9nQ0VHSmxnb1FEaG9nQ0NBQUtBSUFRWUFEYWtFY0lBc1Fqd0VRRGhvZ0NFR3Q0d3dRRGhvZ0NVSFFBV29pQ3lBQUlBRWdBaUFESUFRZ0RoQ0tBU0FJSUFzUUVob2dDU2dDdkFNaENpQUxFQThhSUEwUUR4b2dEQkFQR2lBSUVCRU1Bd1VnQ2hCTUlRb01BUXNBQ3dBTFFRQWhDaUFBS0FJUURRQWdDU0FFS0FJb05nTGdBU0FBUVFScUlBbEI0QUZxRUprQklRTWdDVUVBTmdMMEFTQUpJQVUyQXZBQklBa2dBRFlDMEFFZ0NVRUlhaUlJSUFsQjhBRnFJQWxCMEFGcUlBRWdBaUFFRVA4QklBTWdDVUdBQW1vZ0NCRCtBU0lBRUpNQklBQVFGaUFJRU9nQkN5QUpRY0FEYWlRQUlBb0xrZ0lCQkg4akFFRVFheUlJSkFBZ0FCQ1lCaUFDUVc0Z0FXdE5CRUFnQUJEQkF5RUpRVzhoQ2lBQlFlYi8vLzhIVFFSQUlBZ2dBVUVCZERZQ0NDQUlJQUVnQW1vMkFnd2dDRUVNYWlBSVFRaHFFSWtGS0FJQUVKY0dRUUZxSVFvTElBb1FsQVloQWlBRUJFQWdBaENEQVNBSkVJTUJJQVFRdVFNYUN5QUdCRUFnQWhDREFTQUVhaUFISUFZUXVRTWFDeUFESUFRZ0JXb2lDMnNoQnlBRElBdEhCRUFnQWhDREFTQUVhaUFHYWlBSkVJTUJJQVJxSUFWcUlBY1F1UU1hQ3lBQlFRRnFJZ0ZCQzBjRVFDQUpJQUVRa1EwTElBQWdBaENXQmlBQUlBb1FsUVlnQUNBRUlBWnFJQWRxSWdBUTB3UWdDRUVBT2dBSElBQWdBbW9nQ0VFSGFoRFJBaUFJUVJCcUpBQVBDeEM0QXdBTEN3QWdCQ0FDTmdJQVFRTUxHUUFnQUJDNEJnUkFJQUFnQVJEVEJBOExJQUFnQVJDTEJRczVBUUovSXdCQkVHc2lBeVFBSUFOQkNHb2lCQ0FCRUg0Z0FpQUVFSVVISWdFUTd3STJBZ0FnQUNBQkVPNENJQVFRWkNBRFFSQnFKQUFMTndFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSWdNZ0FCQitJQU1ROEFKQmdKTVBRWnFURHlBQkVQb0VJQU1RWkNBQ1FSQnFKQUFnQVFzNUFRSi9Jd0JCRUdzaUF5UUFJQU5CQ0dvaUJDQUJFSDRnQWlBRUVJa0hJZ0VRN3dJNkFBQWdBQ0FCRU80Q0lBUVFaQ0FEUVJCcUpBQUxkQUVDZnlNQVFSQnJJZ0VrQUNBQUlBQW9BZ0JCREdzb0FnQnFFTFVHQkVBZ0FVRUlhaUlDSUFBUTN3TWFBa0FnQWhDU0JFVU5BQ0FBSUFBb0FnQkJER3NvQWdCcUVMVUdFSkVIUVg5SERRQWdBQ0FBS0FJQVFReHJLQUlBYWtFQkVJOERDeUFCUVFocUVPQURDeUFCUVJCcUpBQUxDUUFnQUNBQkVJSUVDN29FQWdSOUFuOENRQUpBQWtBQ2ZRSkFJQUM4SWdaQi8vLy8vd2R4SWdWQnhQRFdqQVJQQkVBZ0JVR0FnSUQ4QjBzTkJTQUdRUUJJQkVCREFBQ0F2dzhMSUFCRGdIR3hRbDVGRFFFZ0FFTUFBQUIvbEE4TElBVkJtZVRGOVFOSkRRSWdCVUdScTVUOEEwc05BQ0FHUVFCT0JFQkJBU0VGUTlIM0Z6Y2hBU0FBUTRCeE1iK1NEQUlMUVg4aEJVUFI5eGUzSVFFZ0FFT0FjVEUva2d3QkN3Si9JQUJETzZxNFA1UkRBQUFBUHlBQW1KSWlBWXREQUFBQVQxMEVRQ0FCcUF3QkMwR0FnSUNBZUFzaUJiSWlBa1BSOXhjM2xDRUJJQUFnQWtPQWNURy9sSklMSWdBZ0FDQUJreUlBa3lBQmt5RUJEQUVMSUFWQmdJQ0FtQU5KRFFGQkFDRUZDeUFBSUFCREFBQUFQNVFpQTVRaUFpQUNJQUpERUREUE9wUkRhSWdJdlpLVVF3QUFnRCtTSWdSREFBQkFRQ0FFSUFPVWt5SURrME1BQU1CQUlBQWdBNVNUbFpRaEF5QUZSUVJBSUFBZ0FDQURsQ0FDazVNUEN5QUFJQU1nQVpPVUlBR1RJQUtUSVFFQ1FBSkFBa0FnQlVFQmFnNERBQUlCQWdzZ0FDQUJrME1BQUFBL2xFTUFBQUMva2c4TElBQkRBQUNBdmwwRVFDQUJJQUJEQUFBQVA1S1RRd0FBQU1DVUR3c2dBQ0FCa3lJQUlBQ1NRd0FBZ0QrU0R3c2dCVUVYZENJR1FZQ0FnUHdEYXI0aEFpQUZRVGxQQkVBZ0FDQUJrME1BQUlBL2tpSUFJQUNTUXdBQUFIK1VJQUFnQXBRZ0JVR0FBVVliUXdBQWdMK1NEd3RCZ0lDQS9BTWdCbXUrSVFNZ0JVRVdUUVI5UXdBQWdEOGdBNU1nQUNBQms1SUZJQUFnQVNBRGtwTkRBQUNBUDVJTElBS1VJUUFMSUFBTDVRVURCSHdCZndGK0FrQUNRQUpBQW53Q1FDQUF2U0lHUWlDSXAwSC8vLy8vQjNFaUJVSDYwSTJDQkU4RVFDQUF2VUwvLy8vLy8vLy8vLzhBZzBLQWdJQ0FnSUNBK1A4QVZnMEZJQVpDQUZNRVFFUUFBQUFBQUFEd3Z3OExJQUJFN3puNi9rSXVoa0JrUlEwQklBQkVBQUFBQUFBQTRIK2lEd3NnQlVIRDNOaitBMGtOQWlBRlFiSEZ3djhEU3cwQUlBWkNBRmtFUUVFQklRVkVkang1TmU4NTZqMGhBU0FBUkFBQTRQNUNMdWEvb0F3Q0MwRi9JUVZFZGp4NU5lODU2cjBoQVNBQVJBQUE0UDVDTHVZL29Bd0JDd0ovSUFCRS9vSXJaVWNWOXoraVJBQUFBQUFBQU9BL0lBQ21vQ0lCbVVRQUFBQUFBQURnUVdNRVFDQUJxZ3dCQzBHQWdJQ0FlQXNpQmJjaUFrUjJQSGsxN3pucVBhSWhBU0FBSUFKRUFBRGcva0l1NXIraW9Bc2lBQ0FBSUFHaElnQ2hJQUdoSVFFTUFRc2dCVUdBZ01Ea0Ewa05BVUVBSVFVTElBQWdBRVFBQUFBQUFBRGdQNklpQTZJaUFpQUNJQUlnQWlBQ0lBSkVMY01KYnJmOWlyNmlSRGxTNW9iS3o5QStvS0pFdDl1cW5obk9GTCtnb2tTRlZmNFpvQUZhUDZDaVJQUVFFUkVSRWFHL29LSkVBQUFBQUFBQThEK2dJZ1JFQUFBQUFBQUFDRUFnQkNBRG9xRWlBNkZFQUFBQUFBQUFHRUFnQUNBRG9xR2pvaUVESUFWRkJFQWdBQ0FBSUFPaUlBS2hvUThMSUFBZ0F5QUJvYUlnQWFFZ0FxRWhBUUpBQWtBQ1FDQUZRUUZxRGdNQUFnRUNDeUFBSUFHaFJBQUFBQUFBQU9BL29rUUFBQUFBQUFEZ3Y2QVBDeUFBUkFBQUFBQUFBTkMvWXdSQUlBRWdBRVFBQUFBQUFBRGdQNkNoUkFBQUFBQUFBQURBb2c4TElBQWdBYUVpQUNBQW9FUUFBQUFBQUFEd1A2QVBDeUFGUWY4SGFxMUNOSWEvSVFJZ0JVRTVUd1JBSUFBZ0FhRkVBQUFBQUFBQThEK2dJZ0FnQUtCRUFBQUFBQUFBNEgraUlBQWdBcUlnQlVHQUNFWWJSQUFBQUFBQUFQQy9vQThMUkFBQUFBQUFBUEEvUWY4SElBVnJyVUkwaHI4aUE2RWdBQ0FCb2FBZ0FDQUJJQU9nb1VRQUFBQUFBQUR3UDZBZ0JVRVRUUnNnQXFJaEFBc2dBQXVaQVFFRGZDQUFJQUNpSWdNZ0F5QURvcUlnQTBSODFjOWFPdG5sUGFKRTY1d3JpdWJsV3I2Z29pQURJQU5FZmY2eFYrTWR4ejZpUk5WaHdSbWdBU3Evb0tKRXB2Z1FFUkVSZ1QrZ29DRUZJQU1nQUtJaEJDQUNSUVJBSUFRZ0F5QUZva1JKVlZWVlZWWEZ2NkNpSUFDZ0R3c2dBQ0FESUFGRUFBQUFBQUFBNEQraUlBVWdCS0tob2lBQm9TQUVSRWxWVlZWVlZjVS9vcUNoQzVJQkFRTjhSQUFBQUFBQUFQQS9JQUFnQUtJaUFrUUFBQUFBQUFEZ1A2SWlBNkVpQkVRQUFBQUFBQUR3UHlBRW9TQURvU0FDSUFJZ0FpQUNSSkFWeXhtZ0Fmbytva1IzVWNFV2JNRld2NkNpUkV4VlZWVlZWYVUvb0tJZ0FpQUNvaUlESUFPaUlBSWdBa1RVT0lpKzZmcW92YUpFeExHMHZaN3VJVDZnb2tTdFVweUFUMzZTdnFDaW9LSWdBQ0FCb3FHZ29Bc3JBQ0FBSUFCRGE5TU52SlJEdWhNdnZaS1VRM1dxS2o2U0lBQ1VJQUJEcnVVMHY1UkRBQUNBUDVLVkM0MEJBQ0FBSUFBZ0FDQUFJQUJFQ2ZmOURlRTlBaitpUklpeUFYWGc3MGsvb0tKRU80OW90U2lDcEwrZ29rUlZSSWdPVmNISlA2Q2lSSDF2NndNUzF0Uy9vS0pFVlZWVlZWVlZ4VCtnSUFDaUlBQWdBQ0FBSUFCRWdwSXVzY1c0c3oraVJGa0JqUnRzQnVhL29LSkV5SXBabk9VcUFFQ2dva1JMTFlvY0p6b0R3S0NpUkFBQUFBQUFBUEEvb0tNTFF3RURmd0pBSUFKRkRRQURRQ0FBTFFBQUlnUWdBUzBBQUNJRlJnUkFJQUZCQVdvaEFTQUFRUUZxSVFBZ0FrRUJheUlDRFFFTUFnc0xJQVFnQldzaEF3c2dBd3NVQVFGL0lBQW9BZ0FoQVNBQVFRQTJBZ0FnQVF1ZEF3TUJmZ04vQTN3Q1FBSkFBa0FDUUNBQXZTSUJRZ0JaQkVBZ0FVSWdpS2NpQWtILy96OUxEUUVMSUFGQy8vLy8vLy8vLy8vL0FJTlFCRUJFQUFBQUFBQUE4TDhnQUNBQW9xTVBDeUFCUWdCWkRRRWdBQ0FBb1VRQUFBQUFBQUFBQUtNUEN5QUNRZi8vdi84SFN3MENRWUNBd1A4RElRTkJnWGdoQkNBQ1FZQ0F3UDhEUndSQUlBSWhBd3dDQ3lBQnB3MEJSQUFBQUFBQUFBQUFEd3NnQUVRQUFBQUFBQUJRUTZLOUlnRkNJSWluSVFOQnkzY2hCQXNnQkNBRFFlSytKV29pQWtFVWRtcTNJZ1pFQUFEZy9rSXU1aitpSUFGQy8vLy8vdytESUFKQi8vOC9jVUdld1pyL0EycXRRaUNHaEw5RUFBQUFBQUFBOEwrZ0lnQWdBQ0FBUkFBQUFBQUFBQUJBb0tNaUJTQUFJQUJFQUFBQUFBQUE0RCtpb2lJSElBVWdCYUlpQlNBRm9pSUFJQUFnQUVTZnhualFDWnJEUDZKRXIzaU9IY1Z4ekQrZ29rUUUrcGVabVpuWlA2Q2lJQVVnQUNBQUlBQkVSRkkrM3hMeHdqK2lSTjREeTVaa1JzYy9vS0pFV1pNaWxDUkowaitnb2tTVFZWVlZWVlhsUDZDaW9LQ2lJQVpFZGp4NU5lODU2ajJpb0NBSG9hQ2dJUUFMSUFBTDBoWUNDSDhJZmlNQVFjQUJheUlGSkFBZ0F5QURLQUlBS0FJSUVRQUFFTElDSWdoRkJFQWdCVUVJYWtIRnJRVkI2UWhCQ0NBRlFiQUJhaEFkSWdZUUZ5SUhRUmhxUWR5WkNCQU9HaUFIRUJnZ0JoQWVDeUFJS0FJWUlRWUNRQUpBQWtBQ1FBSkFJQWdvQWh4QkFtc09Bd0FCQWdNTElBVWdBVFlDQ0NBRklBSXBBZ2czQWhRZ0JTQUNLQUlRTmdJY0lBVWdBaWtDQURjQ0RDQUZJQVkyQWlBZ0EwRUFJQU1vQWdBb0Fnd1JBUUFoQmlBRFFRRWdBeWdDQUNnQ0RCRUJBQ0VESUFSQkFDQUVLQUlBS0FJTUVRRUFJUWdnQkVFQklBUW9BZ0FvQWd3UkFRQWhCQ0FHSUFZb0FnQW9BZ2dSQUFBaUIwVUVRQ0FBUVFBNkFBUU1CQXNnQlVFSWFrRUVjaUVDQWtBQ1FDQUhLQUlFSWdkQjBLQVNSZ1JBSUFWQnNBRnFJUWNnQmhCaklRMGdBeEJqSVE0Z0NCQmpJUThnQkJCaklSQWpBRUV3YXlJREpBQWdBMEVnYWlJRUlBRWdBaUFOSUE4UXhBUUNRQ0FFRUdJRVFDQUhRUUk2QUFnTUFRc2dBMEVRYWlJRUlBRWdBaUFPSUJBUXhBUWdCQkJpQkVBZ0IwRUNPZ0FJREFFTElBTWdBU0FDSUFOQklHb1FTaWtEQUNBRFFSQnFFRW9wQXdBUWpnWWdBeEJpQkVBZ0IwRUNPZ0FJREFFTElBY2dBeWtEQURjREFDQUhJQU1wQXdnM0F3Z0xJQU5CTUdva0FDQUhFTElCQkVBZ0JVR29BV29nQVNBRktBSWdJQVZCc0FGcUVFb3BBd0FRL1FFTUFnc2dCVUVDT2dDc0FRd0JDeUFIUWZDZkVrWUVRQ0FGUWFnQmFpQUZRUWhxSUFZUVBDQURFRHdnQ0JBOElBUVFQQkRBRlF3QkN5QUhRYkNwRWtZRVFDQUZRYWdCYWlBRlFRaHFJQVlRTkNBREVEUWdDQkEwSUFRUU5CQzhGUXdCQ3lBSFFaQ3FFa1lFUUNBRlFiQUJhaUlDSUFZUVlTQURFR0VnQ0JCaElBUVFZUkM0RlNBQ0VDc0VRQ0FGUWFnQmFpQUJJQVVvQWlBZ0JVR3dBV29RR2lnQ0FCQ3hBUXdDQ3lBRlFRSTZBS3dCREFFTElBZEJvTE1TUmdSQUlBVkJzQUZxSWdJZ0JoQlpJQU1RV1NBSUVGa2dCQkJaRUxnVklBSVFLd1JBSUFWQnFBRnFJQUVnQlNnQ0lDQUZRYkFCYWhBYUtBSUFFSzBCREFJTElBVkJBam9BckFFTUFRc2dCMEhRcUJKSERRRWdCVUdvQVdvZ0JVRUlhaUFHRUQ4Z0F4QS9JQWdRUHlBRUVEOFFyUlVMSUFBZ0JTa0RxQUUzQWdBTUJBc2dBRUVBT2dBRURBTUxJQVVnQVRZQ0NDQUZJQUlwQWdnM0FoUWdCU0FDS0FJUU5nSWNJQVVnQWlrQ0FEY0NEQ0FGSUFZMkFpQWdBMEVBSUFNb0FnQW9BZ3dSQVFBaEJpQURRUUVnQXlnQ0FDZ0NEQkVCQUNFSUlBTkJBaUFES0FJQUtBSU1FUUVBSVFNZ0JFRUFJQVFvQWdBb0Fnd1JBUUFoQnlBRVFRRWdCQ2dDQUNnQ0RCRUJBQ0VKSUFSQkFpQUVLQUlBS0FJTUVRRUFJUW9nQmlBR0tBSUFLQUlJRVFBQUlnUkZCRUFnQUVFQU9nQUVEQU1MSUFWQkNHcEJCSEloQWdKQUFrQWdCQ2dDQkNJRVFkQ2dFa1lFUUNBRlFiQUJhaUVFSUFZUVl5RU5JQWdRWXlFT0lBTVFZeUVQSUFjUVl5RVFJQWtRWXlFUklBb1FZeUVTSXdCQjBBQnJJZ01rQUNBRFFVQnJJZ1lnQVNBQ0lBMGdFQkRFQkFKQUlBWVFZZ1JBSUFSQkFqb0FDQXdCQ3lBRFFUQnFJZ1lnQVNBQ0lBNGdFUkRFQkNBR0VHSUVRQ0FFUVFJNkFBZ01BUXNnQTBFZ2FpSUdJQUVnQWlBUElCSVF4QVFnQmhCaUJFQWdCRUVDT2dBSURBRUxJQU5CRUdvaUJpQUJJQUlnQTBGQWF4QktLUU1BSUFOQk1Hb1FTaWtEQUJDT0JpQUdFR0lFUUNBRVFRSTZBQWdNQVFzZ0F5QUJJQUlnQTBFUWFpSUNFRW9wQXdBZ0EwRWdhaEJLS1FNQUVJNEdJQU1nQXlrRENEY0RHQ0FESUFNcEF3QTNBeEFnQWhCaUJFQWdCRUVDT2dBSURBRUxJQVFnQXlrREVEY0RBQ0FFSUFNcEF4ZzNBd2dMSUFOQjBBQnFKQUFnQkJDeUFRUkFJQVZCcUFGcUlBRWdCU2dDSUNBRlFiQUJhaEJLS1FNQUVQMEJEQUlMSUFWQkFqb0FyQUVNQVFzZ0JFSHdueEpHQkVBZ0JVR29BV29nQlVFSWFpQUdFRHdnQ0JBOElBTVFQQ0FIRUR3Z0NSQThJQW9RUEJDcUZRd0JDeUFFUWJDcEVrWUVRQ0FGUWFnQmFpQUZRUWhxSUFZUU5DQUlFRFFnQXhBMElBY1FOQ0FKRURRZ0NoQTBFS1VWREFFTElBUkJrS29TUmdSQUlBVkJzQUZxSWdJZ0JoQmhJQWdRWVNBREVHRWdCeEJoSUFrUVlTQUtFR0VRb1JVZ0FoQXJCRUFnQlVHb0FXb2dBU0FGS0FJZ0lBVkJzQUZxRUJvb0FnQVFzUUVNQWdzZ0JVRUNPZ0NzQVF3QkN5QUVRYUN6RWtZRVFDQUZRYkFCYWlJQ0lBWVFXU0FJRUZrZ0F4QlpJQWNRV1NBSkVGa2dDaEJaRUtFVklBSVFLd1JBSUFWQnFBRnFJQUVnQlNnQ0lDQUZRYkFCYWhBYUtBSUFFSzBCREFJTElBVkJBam9BckFFTUFRc2dCRUhRcUJKSERRRWdCVUdvQVdvZ0JVRUlhaUFHRUQ4Z0NCQS9JQU1RUHlBSEVEOGdDUkEvSUFvUVB4Q2ZGUXNnQUNBRktRT29BVGNDQUF3REN5QUFRUUE2QUFRTUFnc2dCU0FCTmdJSUlBVWdBaWtDQ0RjQ0ZDQUZJQUlvQWhBMkFod2dCU0FDS1FJQU53SU1JQVVnQmpZQ0lDQURRUUFnQXlnQ0FDZ0NEQkVCQUNFR0lBTkJBU0FES0FJQUtBSU1FUUVBSVFnZ0EwRUNJQU1vQWdBb0Fnd1JBUUFoQnlBRFFRTWdBeWdDQUNnQ0RCRUJBQ0VESUFSQkFDQUVLQUlBS0FJTUVRRUFJUWtnQkVFQklBUW9BZ0FvQWd3UkFRQWhDaUFFUVFJZ0JDZ0NBQ2dDREJFQkFDRUxJQVJCQXlBRUtBSUFLQUlNRVFFQUlRd2dCaUFHS0FJQUtBSUlFUUFBSWdSRkJFQWdBRUVBT2dBRURBSUxJQVZCQ0dwQkJISWhBZ0pBQWtBZ0JDZ0NCQ0lFUWRDZ0VrWUVRQ0FGUWJBQmFpRUVJQVlRWXlFTklBZ1FZeUVPSUFjUVl5RVBJQU1RWXlFUUlBa1FZeUVSSUFvUVl5RVNJQXNRWXlFVElBd1FZeUVVSXdCQjRBQnJJZ01rQUNBRFFkQUFhaUlHSUFFZ0FpQU5JQkVReEFRQ1FDQUdFR0lFUUNBRVFRSTZBQWdNQVFzZ0EwRkFheUlHSUFFZ0FpQU9JQklReEFRZ0JoQmlCRUFnQkVFQ09nQUlEQUVMSUFOQk1Hb2lCaUFCSUFJZ0R5QVRFTVFFSUFZUVlnUkFJQVJCQWpvQUNBd0JDeUFEUVNCcUlnWWdBU0FDSUJBZ0ZCREVCQ0FHRUdJRVFDQUVRUUk2QUFnTUFRc2dBMEVRYWlJR0lBRWdBaUFEUWRBQWFoQktLUU1BSUFOQlFHc1FTaWtEQUJDT0JpQUdFR0lFUUNBRVFRSTZBQWdNQVFzZ0F5QUJJQUlnQTBFUWFpSUdFRW9wQXdBZ0EwRXdhaEJLS1FNQUVJNEdJQU1nQXlrRENEY0RHQ0FESUFNcEF3QTNBeEFnQmhCaUJFQWdCRUVDT2dBSURBRUxJQU1nQVNBQ0lBTkJFR29pQWhCS0tRTUFJQU5CSUdvUVNpa0RBQkNPQmlBRElBTXBBd2czQXhnZ0F5QURLUU1BTndNUUlBSVFZZ1JBSUFSQkFqb0FDQXdCQ3lBRUlBTXBBeEEzQXdBZ0JDQURLUU1ZTndNSUN5QURRZUFBYWlRQUlBUVFzZ0VFUUNBRlFhZ0JhaUFCSUFVb0FpQWdCVUd3QVdvUVNpa0RBQkQ5QVF3Q0N5QUZRUUk2QUt3QkRBRUxJQVJCOEo4U1JnUkFJQVZCcUFGcUlBVkJDR29nQmhBOElBZ1FQQ0FIRUR3Z0F4QThJQWtRUENBS0VEd2dDeEE4SUF3UVBCQ2RGUXdCQ3lBRVFiQ3BFa1lFUUNBRlFhZ0JhaUFGUVFocUlBWVFOQ0FJRURRZ0J4QTBJQU1RTkNBSkVEUWdDaEEwSUFzUU5DQU1FRFFRbUJVTUFRc2dCRUdRcWhKR0JFQWdCVUd3QVdvaUFpQUdFR0VnQ0JCaElBY1FZU0FERUdFZ0NSQmhJQW9RWVNBTEVHRWdEQkJoRUpRVklBSVFLd1JBSUFWQnFBRnFJQUVnQlNnQ0lDQUZRYkFCYWhBYUtBSUFFTEVCREFJTElBVkJBam9BckFFTUFRc2dCRUdnc3hKR0JFQWdCVUd3QVdvaUFpQUdFRmtnQ0JCWklBY1FXU0FERUZrZ0NSQlpJQW9RV1NBTEVGa2dEQkJaRUpRVklBSVFLd1JBSUFWQnFBRnFJQUVnQlNnQ0lDQUZRYkFCYWhBYUtBSUFFSzBCREFJTElBVkJBam9BckFFTUFRc2dCRUhRcUJKSERRRWdCVUdvQVdvZ0JVRUlhaUFHRUQ4Z0NCQS9JQWNRUHlBREVEOGdDUkEvSUFvUVB5QUxFRDhnREJBL0VJNFZDeUFBSUFVcEE2Z0JOd0lBREFJTElBQkJBRG9BQkF3QkN5QUJLQUlBSWdFUUhDQUZRUWhxUWNXdEJVSDhDRUVJSUFGQnlBSnFFQmNpQVVFWWFrR3owQUVRRGhvZ0FSQVlJQUJCQWpvQUJBc2dCVUhBQVdva0FBdkpCZ0VNZnlNQVFkQUJheUlDSkFBZ0FDZ0NUQVJBSUFCQnpBQnFJUWtnQWtFQU5nTElBU0FDUWdBM0E4QUJJQUpCd0FGcUlBRW9BZ1FnQVNnQ0FHdEJBblVRcXdRZ0FFRTRhaUVFSUFCQkdHb2hCU0FDUWRnQWFrRUVjaUVISUFFb0FnUWhDQ0FCS0FJQUlRRURRQ0FCSUFoR0JFQUNRQ0FKS0FJQUlnRXRBQ2hCQkhGRkRRQWdBRUdZQW1vZ0NSQ0dCU0lJSUFKQndBRnFFTGdISUFJQ2Z5QUFLQUpNSVFFakFFRVFheUlISkFBZ0IwRUROZ0lNSUFjZ0FUWUNDQUpBQW44Z0IwRUlhaUlFRU04VklRVUNRQ0FBS0FMVUFpSUJSUTBBSUFBb0F0QUNBbjhnQVVFQmF5QUZjU0FCYVNJR1FRRk5EUUFhSUFVZ0FTQUZTdzBBR2lBRklBRndDeUlLUVFKMGFpZ0NBQ0lEUlEwQUlBRkJBV3NoQ3lBRUtBSUVJUXdnQkNnQ0FDRU5JQVpCQVVzaEJnTkFJQU1vQWdBaUEwVU5BU0FGSUFNb0FnUWlCRWNFUUFKQUlBWkZCRUFnQkNBTGNTRUVEQUVMSUFFZ0JFc05BQ0FFSUFGd0lRUUxJQVFnQ2tjTkFnd0JDeUFES0FJSUlBMUhEUUFnQXlnQ0RDQU1SdzBBQ3lBRERBRUxRUUFMSWdFRVFDQUJLQUlRSWdGRkRRRWdCMEVRYWlRQUlBRU1BZ3RCOWZJSVFaS3FBa0c0QWtIb25RTVFBQUFMUWFySUFVR1NxZ0pCdWdKQjZKMERFQUFBQ3hER0JTZ0NCRUVFYXlnQ0FDZ0NFQ0lCTmdKWUlBRWdBQ2dDVEVZTkFDQUlJQUpCMkFCcUVNOEJJQWtvQWdBaEFRc2pBRUVRYXlJREpBQWdBVUhFQUdvaEJDQUJRUnhxSVFVZ0FrSEFBV29pQnlJQUtBSUVJUWdnQUNnQ0FDRUFBMEFnQUNBSVJnUkFJQU5CRUdva0FBVWdBQ2dDQUNFR0lBTWdBVFlDRENBR1FSQnFJQU5CREdvUS9RSWdCU0FBRU04QklBQW9BZ0FoQmlBRElBRTJBZ2dnQmtFNGFpQURRUWhxRVAwQ0lBUWdBQkRQQVNBQVFRUnFJUUFNQVFzTElBbEJBRFlDQUNBSEVESWFJQUpCMEFGcUpBQVBDeUFDSUFFb0FnQWlBellDdkFFZ0FrRUlhaUFERUtzS0lRTWdBaUFDS0FLOEFUWUNXQ0FISUFNUXFRZ2hCaUFDUWJBQmFpQUZJQUpCMkFCcUVOWVZJQUl0QUxRQklRb2dBaWdDc0FFaEN5QUdFTTRGSUFNUXpnVWdDZ1JBSUFKQjJBQnFJQVFnQWtHOEFXb1FsZ0VMSUFJZ0MwRU1hallDV0NBQlFRUnFJUUVnQWtIQUFXb2dBa0hZQUdvUS9RSU1BQXNBQzBIVG93bEJrcW9DUVpJQlFhTHFCQkFBQUF0bUFDQUFJQUVwQWdBM0FnQWdBQ0FCS1FJSU53SUlJQUJCRUdvZ0FVRVFhaENsQWhvZ0FFRWNhaUFCUVJ4cUVLVUNHaUFBSUFFcEFqQTNBakFnQUNBQktRSW9Od0lvSUFCQk9Hb2dBVUU0YWhDbEFob2dBRUhFQUdvZ0FVSEVBR29RcFFJYUlBQUxXZ0FnQUVFb2FpRUFJQUZGQkVBakFFRVFheUlCSkFBZ0FVRUFOZ0lNSUFFZ0FEWUNDQ0FCUVFocVFRZEJBQkRiRFNBQlFSQnFKQUFQQ3dKQUlBRkJCMGtFUUNBQUlBQW9BZ0JCQVNBQmRISTJBZ0FNQVFzUUFRQUxDNGtOQVFoL0l3QkIwQUZySWdRa0FDQUJMd0VlSVFVZ0JFRVFhaUFBSUFFZ0FoQWJJZ1lRM1FFQ1FDQUVMUUFRUlFSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFNZ0JSQ0JBUkFPR2lBRFFZdy9FQTRhSUFRb0Fzd0JJUUlnQXhBUkRBRUxJQVF0QUJGRkJFQkJBQ0VDSUFBdEFJQUJRUUp4UlEwQklBQkJnQUZxSWdOQjdTa1FhRVVFUUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWNMRUFCQU9HaUFFS0FMTUFTRUNJQU1RRVF3Q0N5QURMUUFBUVFKeFJRMEJJQU5CN1NrUWFFVU5BU0FBSUFZUWNCQ2pBZzBCSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5Cak1VQUVBNGFJQVFvQXN3QklRSWdBeEFSREFFTElBUW9BaFFpQmtFZWNSRFZEU0lKUVFKUEJFQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0F5QUZFSUVCRUE0YUlBTkIyTUFBRUE0YUlBUW9Bc3dCSVFJZ0F4QVJEQUVMSUFaQkVIRkZJQUFvQXBRRFFRTkhja1VFUUNBRVFSQnFJZ01nQUVGeUlBRVFFQ0FEUWIzZUJ4QU9HaUFFS0FMTUFTRUNJQU1RRVF3QkN3SkFJQVpCZ01BQWNTSUtSUTBBSUFCQmdBRnFRZUVwRUdnTkFDQUVRUkJxSWdNZ0FFRnlJQUVRRUNBRElBVVFnUUVRRGhvZ0EwSGR2UWtRRGhvZ0EwSG04QVVRRGhvZ0JDZ0N6QUVoQWlBREVCRU1BUXNDUUNBR1FZQ0FBWEVpQ0VVTkFDQUFRWUFCYWtIaEtSQm9EUUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBeUFGRUlFQkVBNGFJQU5CcHIwSkVBNGFJQU5CNXZBRkVBNGFJQVFvQXN3QklRSWdBeEFSREFFTEFrQWdCa0dBSUhGRkRRQWdBRUdBQVdwQjRTa1FhQTBBSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU1nQlJDQkFSQU9HaUFEUWJ1OENSQU9HaUFEUWVid0JSQU9HaUFFS0FMTUFTRUNJQU1RRVF3QkN3SkFJQVpCZ0lBQ2NVVU5BQ0FBUVlBQmFrSGhLUkJvUlFSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFNZ0JSQ0JBUkFPR2lBRFFiYndCUkFPR2lBRUtBTE1BU0VDSUFNUUVRd0NDeUFCTHdFZUlnZEI0d0ZySWd0QkQwMGdDMEVCUjNFZ0IwRytBa1lnQjBIdUsydEJBa2x5Y2lBSFFaTXZSbklnQjBIa0FVWnlJQWRCdndKR2NnMEFJQVJCRUdvaUF5QUFRWElnQVJBUUlBTkJ0NTBCRUE0YUlBUW9Bc3dCSVFJZ0F4QVJEQUVMQWtBZ0JrSEFBSEZGRFFBZ0FDMEFnQUZCQW5FTkFDQUVRUkJxSWdNZ0FFRnlJQUVRRUNBRElBVVFnUUVRRGhvZ0EwSEQrUUVRRGhvZ0JDZ0N6QUVoQWlBREVCRU1BUXNnQmtHQXdBRnhSU0FHUWNBL2NYSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBeUFGRUlFQkVBNGFJQU5CL3BNQkVBNGFJQVFvQXN3QklRSWdBeEFSREFFTElBWkJDbkVpQnlBSVJYSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBeUFGRUlFQkVBNGFJQU5CbDhRQkVBNGFJQVFvQXN3QklRSWdBeEFSREFFTElBWkJESEVpQ0NBS1JYSkZCRUFnQkVFUWFpSURJQUJCY2lBQkVCQWdBeUFGRUlFQkVBNGFJQU5CczhNQkVBNGFJQVFvQXN3QklRSWdBeEFSREFFTEFrQWdBQ2dDQUNnQ0FCQkhSUTBBSUFWQjRRRkhJQWx5UlFSQUlBUkJFR29pQXlBQVFYSWdBUkFRSUFRZ0FFSDhKQkEzSUFNZ0JCQVNHaUFEUWVFQkVJRUJFQTRhSUFOQjFzRUFFQTRhSUFRb0Fzd0JJUUlnQkJBUEdpQURFQkVNQWdzZ0NVVWdCVUhoQVVaeVJRUkFJQVJCRUdvZ0FDQURFTjBCSUFRdEFCQkZEUUVnQkNnQ0ZFRUVSdzBCSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQVFnQUVHaEpCQTNJQU1nQkJBU0dpQURJQVVRZ1FFUURob2dBMEhBckFRUURob2dCQ2dDekFFaEFpQUVFQThhSUFNUUVRd0NDeUFHUWNBeWNTQUZRZUVCUjNJTkFDQUVRUkJxSWdNZ0FFRnlJQUVRRUNBRUlBQkIvU1FRTnlBRElBUVFFaG9nQTBIaEFSQ0JBUkFPR2lBRFFiYVRBUkFPR2lBRUtBTE1BU0VDSUFRUUR4b2dBeEFSREFFTEFrQWdCVUcvQWtZRVFDQUhSUTBCSUFSQkVHb2lBeUFBUVhJZ0FSQVFJQU5CazZVS0VBNGFJQU5CdndJUWdRRVFEaG9nQkNnQ3pBRWhBaUFERUJFTUFnc2dDRVVnQWtFRlJ5QUZRZVlCUjNKeURRQWdCRUVRYWlJRElBQkJjaUFCRUJBZ0EwSG1BUkNCQVJBT0dpQURRZnFTQXhBT0dpQUVLQUxNQVNFQ0lBTVFFUXdCQzBFQUlRSWdBQ2dDQUNnQ0FCQkhSUTBBQWtBQ1FDQUZRZU1CYXc0Q0FBRUNDeUFHUVJ4eFJRMEJJQVJCRUdvaUF5QUFRWElnQVJBUUlBUWdBRUg3SkJBM0lBTWdCQkFTR2lBRFFlbkNBQkFPR2lBRUtBTE1BU0VDSUFRUUR4b2dBeEFSREFFTElBWkJHbkZGRFFBZ0JFRVFhaUlESUFCQmNpQUJFQkFnQkNBQVFmb2tFRGNnQXlBRUVCSWFJQU5CMWNNQUVBNGFJQVFvQXN3QklRSWdCQkFQR2lBREVCRUxJQVJCMEFGcUpBQWdBZ3ZhQmdFRmZ5TUFRZEFCYXlJREpBQkIvLy8vL3djaEJnSkFBa0FDUUFKQUFrQWdBUzhCSGlJRVFUMXJEZ1FCQWdNREFBdEIvLy8vL3djaEJTQUVRZThwYXc0Q0FBRURDeUFBSUFBZ0FVRUNFQnNRSUNnQ0pCQWdRUUVRR3lFRkRBSUxJQUFnQUNBQlFRQVFHeEFnS0FJa0VDQkJBUkFiSVFVTUFRc2dBQ0FBSUFGQkFCQWJFQ0FvQWlRUUlFRUJFQnNoQlNBQUlBQWdBVUVCRUJzUUlDZ0NKQkFnUVFFUUd5RUdDd0pBSUFJZ0FTZ0NFQ0FCS0FJTWEwRUVkVThFUUNBRlFlVXBSd1JBUVFBaEJDQUdRZVVwUncwQ0N5QURRUkJxSWdJZ0FFRjJJQUVRRUNBRElBQkI1Q1FRTnlBQ0lBTVFFaG9nQWtIM2d3Z1FEaG9nQXlnQ3pBRWhCQ0FERUE4YUlBSVFFUXdCQ3lBQklBSVFHeUlIUVFoeEJFQWdBUzhCSGlJRVFlOHBSeUFFUVQxSGNVVUVRQ0FEUVJCcUlnSWdBRUYySUFFUUVDQUNRWStIQ0JBT0dpQURLQUxNQVNFRUlBSVFFUXdDQ3lBSFFTQnhSUVJBSUFOQkVHb2lBaUFBUVhZZ0FSQVFJQUpCMklRSUVBNGFJQU1vQXN3QklRUWdBaEFSREFJTElBQWdBU0FCSUFkQkQzRVF6ZzBnQW1wQkFXc1FHeERJQlNJRURRRUxBa0FDUUNBSFFSQnhCRUFnQVM4QkhpSUVRZkFwUnlBRVFUNUhjVVVFUUNBRFFSQnFJZ0lnQUVGMklBRVFFQ0FDUVo3ckJ4QU9HaUFES0FMTUFTRUVJQUlRRVF3RUN5QUhRU0J4UlFSQUlBTkJFR29pQWlBQVFYWWdBUkFRSUFKQjA3RUtFQTRhSUFKQnRJUUlFQTRhSUFNb0Fzd0JJUVFnQWhBUkRBUUxJQUFnQVNBQklBZEJIM0VRemcwZ0FtcEJBV3NRR3hESUJTSUVSUTBCREFNTElBZEJJSEZGRFFFTElBVkI1U2xHSUFWQkRFMUJBRUVCSUFWMFFiUXljUnR5UlFSQUlBTkJFR29pQWlBQVFYWWdBUkFRSUFKQmlPb01FQTRhSUFKQit2a0pFQTRhSUFKQnU3SUhFQTRhSUFNb0Fzd0JJUVFnQWhBUkRBSUxJQVpCNVNsR0lBWkIvLy8vL3dkR2NpQUdRUXhOUVFCQkFTQUdkRUcwTW5FYmNnMEFJQU5CRUdvaUFpQUFRWFlnQVJBUUlBSkJpT29NRUE0YUlBSkIrdmtKRUE0YUlBSkJ1N0lIRUE0YUlBTW9Bc3dCSVFRZ0FoQVJEQUVMUVFBaEJDQUhRUUp4SUFWQjVTbEhJQVpCNVNsSGNYSU5BQ0FEUVJCcUlnSWdBRUYySUFFUUVDQURJQUJCNUNRUU55QUNJQU1RRWhvZ0FrSDNnd2dRRGhvZ0F5Z0N6QUVoQkNBREVBOGFJQUlRRVFzZ0EwSFFBV29rQUNBRUM2QURBUU4vSXdCQjBBRnJJZ01rQUNBQ1FRQTJBZ0FDUUFKQUFrQUNRQUpBQWtBZ0FTOEJIa0VWYXc0S0FBQUJBZ1VGQlFNRkJBVUxJQUpCQVRZQ0FBd0VDd0pBSUFBZ0FTZ0NLRUVWUWNBQUVJWUVSUVJBSUFBZ0FTZ0NLRUVXUWNBQUVJWUVSUTBCQ3lBQlFRSVFHMEVEU1EwQUlBSkJBallDQUF3RUN5QUNRUUUyQWdBTUF3c2dBQ0FBSUFGQkFSQWJFQ0FnQWhDdENCb2dBaUFCUVFJUUd5QUNLQUlBYkRZQ0FBd0NDeUFBSUFBZ0FVRUJFQnNRSUNBQ0VLMElHaUFEUVJCcUlBQWdBVUVDRUJzUTNRRWdBeTBBRUVVTkFTQURMUUFSUlEwQklBSWdBaWdDQUNBREtBSVViRFlDQUF3QkN5QUFJQUVvQWloQkhoREFBa1VFUUVFQklRVURRQ0FCS0FJUUlBRW9BZ3hyUVFSMUlBVk5CRUJCQUNFRURBTUxJQU5CQURZQ0VDQUFJQUFnQVNBRkVCc1FJQ0FEUVJCcUVLMElJZ1FOQWlBQ0lBSW9BZ0FnQXlnQ0VHbzJBZ0FnQlVFQmFpRUZEQUFMQUFzZ0EwRVFhaUlDSUFCQmNpQUJFQkFnQXlBQVFiWW1FRGNnQWlBREVCSWFJQUpCKytJQ0VBNGFJQU1vQXN3QklRUWdBeEFQR2lBQ0VCRUxJQU5CMEFGcUpBQWdCQXZxQVFFRGZ5TUFRY0FCYXlJREpBQUNRQUpBQWtBZ0FTOEJIa0d4QW1zaUJFRVBTMEVCSUFSMFFmK2ZBbkZGY2tVRVFDQUFJQUVvQWlRUUlDSUVSUTBESUFRdkFSNUJIa2NFUUNBRElBQkJjaUFCRUJBZ0EwR0Q4QUFRRGhvZ0F5Z0N2QUVoQVNBREVCRU1Bd3NDUUNBRUtBSUVJQVFvQWdBaUJXdEJFRVlFUUNBQUlBVW9BZ2dRVUEwQkN5QURJQUJCY2lBQkVCQWdBMEdrL3dJUURob2dBeWdDdkFFaEFTQURFQkVNQXdzZ0FpQUVLQUlBS0FJTU5nSUFEQUVMSUFJZ0FTZ0NKRFlDQUF0QkFDRUJDeUFEUWNBQmFpUUFJQUVQQzBHYkwwSEdyd0pCN1FWQmtaWUVFQUFBQ3dvQUlBQkJnSjhTRUVnTHpBTUNCSDhCZmdKQUFrQUNRQ0FDRGdNQ0FnQUJDeUFCUVFScktBSUFJQUFvQWdSUERRRWdBQ2tDQUNFSklBQWdBVUVJYXlJQUtRSUFOd0lBSUFBZ0NUY0NBQXdCQ3lBQ1FZQUJUQVJBSUFBZ0FVWU5BU0FBSVFJRFFDQUNRUWhxSWdJZ0FVWU5BaUFDS1FJQUlnbENJSWluSVFRZ0FpRURBMEFDUUFKQUlBQWdBMFlFUUNBQUlRTU1BUXNnQTBFRWF5Z0NBQ0FFU3cwQkN5QURJQWszQWdBTUFnc2dBeUFEUVFocklnTXBBZ0EzQWdBTUFBc0FDd0FMSUFJZ0FrRUJkaUlHYXlFSElBQWdCa0VEZENJSWFpRUZJQUlnQkV3RVFDQUFJQVVnQmlBREVJUVdJQVVnQVNBSElBTWdDR29pQVJDRUZpQURJQUpCQTNScUlRUWdBU0VDQTBBZ0FTQURSZ1JBQTBBZ0FpQUVSZzBFSUFBZ0Fpa0NBRGNDQUNBQVFRaHFJUUFnQWtFSWFpRUNEQUFMQUFzZ0FpQUVSZ1JBQTBBZ0FTQURSZzBFSUFBZ0F5a0NBRGNDQUNBQVFRaHFJUUFnQTBFSWFpRUREQUFMQUFVQ1FDQUNLQUlFSUFNb0FnUkpCRUFnQUNBQ0tRSUFOd0lBSUFKQkNHb2hBZ3dCQ3lBQUlBTXBBZ0EzQWdBZ0EwRUlhaUVEQ3lBQVFRaHFJUUFNQVFzQUN3QUxJQUFnQlNBR0lBTWdCQkN3Q0NBRklBRWdCeUFESUFRUXNBZ2dBQ0FGSUFFZ0JpQUhJQU1nQkJEYURRc0xNd0VCZndKQUlBQW9BZ0FnQVNnQ0FFY05BQ0FBUVFScUlBRkJCR29ReXdoRkRRQWdBQ2dDRUNBQktBSVFSaUVDQ3lBQ0M2a0JBUUYvSUFCQ0FEY0NBQ0FBUVFBMkFoZ2dBRUtBZ0lDQWdBUTNBaEFnQUVLQWdBUTNBZ2dqQUVFZ2F5SUNRUmhxSUFBb0FoZzJBZ0FnQWlBQUtRSVFOd01RSUFJZ0FDa0NDRGNEQ0NBQ0lBQXBBZ0EzQXdBZ0FDQUJLQUlZTmdJWUlBQWdBU2tDRURjQ0VDQUFJQUVwQWdnM0FnZ2dBQ0FCS1FJQU53SUFJQUVnQWlnQ0dEWUNHQ0FCSUFJcEF4QTNBaEFnQVNBQ0tRTUlOd0lJSUFFZ0Fpa0RBRGNDQUNBQUMyY0JBbjhqQUVFUWF5SUZKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUVOZ0lNSUFVZ0JEWUNDQ0FBUVl3QmFpSUVJQVFReXdRZ0FDZ0NDQ0FGS0FJSUlBRWdBalFDQUNBREtBSUFFTjRLSWdBUUtDQUVJQVFvQWhoQkFXbzJBaGdnQlVFUWFpUUFJQUFMTlFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFSFlBMm9nQWtFTWFoQ2VBaUVBSUFKQkVHb2tBQ0FBUVF4cVFRQWdBQnNMTXdBZ0FDQUJFTEFCSWdCQkRHb2dBVUVNYWhDOEZpQUFRUmhxSUFGQkdHcEJLQkI5R2lBQVFVQnJJQUZCUUdzUXBRSWFDK1lDQVFKL0l3QkJvQUZySWdVa0FDQUZRUUEyQXB3QkFrQWdBQ2dDQUNBQklBSWdCVUdjQVdvUXZRTWlCZzBBSUFBb0FnQWdCU2dDbkFFUXRnRkZCRUFnQlVHUUFXb2lBQ0FCSUFJUXN3SWdCVUVJYWlJQklBQkJxTVFIRUMwZ0JDQUJFSWtDSVFZZ0FSQVBHaUFBRUE4YURBRUxJQUFvQWdBZ0JTZ0NuQUVRUlNFR0lBQW9BZ0FnQlNnQ25BRVFSU0FEUndSQUlBVkJDR29RemdFaEFDQUZRWkFCYWlJRElBRWdBaEN6QWlBQUlBTVFFa0crNVFrUURpQUdFQ0ZCcGFzSEVBNGFJQU1RRHhvZ0F5QUFRUVJxRUVJZ0JDQURFSWtDSVFZZ0JVR1FBV29RRHhvZ0FCQzdBUm9NQVF0QkFDRUdJQUFvQWdBZ0JTZ0NuQUVRUGlJRFFTQkdEUUFnQlVFSWFoRE9BU0VBSUFWQmtBRnFJZ1lnQVNBQ0VMTUNJQUFnQmhBU1FmMm1DaEFPSUFNUUlVSDhsd2dRRGhvZ0JoQVBHaUFHSUFCQkJHb1FRaUFFSUFZUWlRSWhCaUFGUVpBQmFoQVBHaUFBRUxzQkdnc2dCVUdnQVdva0FDQUdDK3NCQVFWL0l3QkJJR3NpQXlRQUlBTWdBVFlDRUNNQVFSQnJJZ0lrQUNBRElBQWdBa0VNYWlBQkVLMEdJZ1FvQWdBaUFRUi9RUUFGUVNBUUZTRUJJQUlnQUVFRWFqWUNCQ0FDSUFFMkFnQWdBeWdDRUNnQ0FDRUZJQUZCR0dvaUJrSUFOd0lBSUFFZ0JUWUNFQ0FCSUFZMkFoUWdBa0VCT2dBSUlBQWdBaWdDRENBRUlBSW9BZ0FRK0FJZ0FpZ0NBQ0VCSUFKQkFEWUNBQ0FDS0FJQUlRQWdBa0VBTmdJQUlBQUVRQ0FDTFFBSUJFQWdBRUVVYWhEeEZnc2dBQVJBSUFBUUh3c0xRUUVMT2dBY0lBTWdBVFlDR0NBQ1FSQnFKQUFnQXlnQ0dDRUFJQU5CSUdva0FDQUFRUlJxQ3hJQUlBQUVRQ0FBUVJCcUVCWUxJQUFRSHd1bUFRRUNmeU1BUVJCcklnSWtBQ0FBUVJOR0lBQkJHVXR5UlFSQUlBSkJER29pQVFSQUlBRkJrTU1WTmdJQUN5QUNRUWhxSWdFRVFDQUJRYmorR1RZQ0FBc2dBa0VFYWlJQkJFQWdBRUVUUmlBQVFSbExjZ1IvUVhvRklBRkIwTGtUTmdJQVFRQUxHZ3RCS0JBVklnRWdBRFlDQUNBQklBSW9BZ3cyQWdRZ0FTQUNLQUlJTmdJSUlBSW9BZ1FoQUNBQlFRQTJBaUFnQVNBQU5nSU1DeUFDUVJCcUpBQWdBUXMxQVFKL0lBQWhBd05BSUFNaUFrRUVhaUVESUFJb0FnQU5BQXNEUUNBQUlBSkdSUVJBSUFFZ0FrRUVheUlDRUxJSERBRUxDd3NkQUNBQVFja0FTd1JBUWVMQkFnOExJQUJCQW5SQjZPMGZhaWdDQUFzZUFRRi9RUUVoQVNBQVFiMENSaUFBUVFKclFRZEpjaUFBUWNvQ1JuSUxMd0VCZnlBQVFjY0FheUlCUVFSTklBRkJBa2R4SUFCQnpBSkdJQUJCZ0N4clFRSkpjbkpGQkVCQkFBOExRUUVMRmdCQ2dvQ0FnSURBM3c4Z0FLMklweUFBUVRWSmNRc0tBQ0FBUVRCclFRVkpDd3NBSUFCQisva0NFSTRUQzVrQkFRWi9BbjlCZWlBQUtBSU1JZ1ZGRFFBYVFYMGdBMFVOQUJvZ0JTZ0NBQ0VIQTBCQmR5QUVJQWRHRFFFYUFrQUNRQ0FGS0FJRUlBUkJER3hxSWdZb0FnQWdBVWNOQUNBR0tBSUVJUWhCQUNFQUEwQWdBQ0FJUmcwQklBWW9BZ2dpQ1NBQVFkQUFiR29vQWdRZ0FrWU5BaUFBUVFGcUlRQU1BQXNBQ3lBRVFRRnFJUVFNQVFzTElBTWdDU0FBUWRBQWJHbzJBZ0JCQUFzTEVRQWdBRUVBTmdJRUlBQW9BZ0FRaUFRTENRQWdBRUVRYWhCZUN6a0JBWDhnQUVFQU5nSUlJQUJDQURjREFBTi9JQUVnQTBZRWZ5QUFCU0FBSUFJZ0EwRUNkR29vQWdBUTBBUWdBMEVCYWlFRERBRUxDd3NjQUNBQUlBRW9BZ0EyQWdBZ0FFRUVhaUFCUVFScUVLWUJHaUFBQ3owQkFuOGdBQ2dDQkNFQ0EwQWdBaUFBS0FJSUlnRkhCRUFnQUNBQlFSeHJOZ0lJSUFGQkdHc1FiUm9NQVFzTElBQW9BZ0FpQUFSQUlBQVFId3NMU2dFQmZ5QUFRUUEyQWd3Z0FDQUROZ0lRSUFFRVFDQUJFSWtZSVFRTElBQWdCRFlDQUNBQUlBUWdBa0VjYkdvaUFqWUNDQ0FBSUFRZ0FVRWNiR28yQWd3Z0FDQUNOZ0lFSUFBTEhBQWdBQ0FCUWFTU3lTUkJIRUhKcEpMSkFFSEtwSkxKQUJEU0RBdFJBUUovSUFBZ0FDZ0NBQ0lCS0FJRUlnSTJBZ0FnQWdSQUlBSWdBRFlDQ0FzZ0FTQUFLQUlJTmdJSUlBQW9BZ2dpQWlBQ0tBSUFJQUJIUVFKMGFpQUJOZ0lBSUFFZ0FEWUNCQ0FBSUFFMkFnZ0xVUUVDZnlBQUlBQW9BZ1FpQVNnQ0FDSUNOZ0lFSUFJRVFDQUNJQUEyQWdnTElBRWdBQ2dDQ0RZQ0NDQUFLQUlJSWdJZ0FpZ0NBQ0FBUjBFQ2RHb2dBVFlDQUNBQklBQTJBZ0FnQUNBQk5nSUlDekFCQW44Z0FDZ0NCQ0lESUFBb0FnQWlBR3NnQVNnQ0JDQUJLQUlBSWdGclJnUi9JQUFnQXlBQkVQWVhCVUVBQ3d0MEFRRi9Jd0JCRUdzaUJDUUFJQVFnQURZQ0FDQUVJQUFvQWdRaUFEWUNCQ0FFSUFBZ0EwRWNiR28yQWdnZ0JFRUVjaUVBQTBBZ0FTQUNSd1JBSUFBb0FnQWdBUkNJR0JvZ0FDQUFLQUlBUVJ4cU5nSUFJQUZCSEdvaEFRd0JDd3NnQkNnQ0FDQUVLQUlFTmdJRUlBUkJFR29rQUF1SkJBRUZmeU1BUVJCcklnUWtBQ0FFSUFBMkFnd2dCQ0FCTmdJSUFrQWdCQ2dDRENJRktBSUVJQVVRdHdFb0FnQkpCRUFnQkNnQ0NDRUJJd0JCSUdzaUFDUUFJQUFnQlRZQ0hDQUFJQUUyQWhnZ0FDZ0NIQ0lESVFJakFFRVFheUlCSUFCQkNHb2lCallDRENBQklBSTJBZ2dnQVVFQk5nSUVJQUVvQWd3aUFpQUJLQUlJTmdJQUlBSWdBU2dDQ0NnQ0JEWUNCQ0FDSUFFb0FnZ29BZ1FnQVNnQ0JFRVViR28yQWdnZ0F4QzNBU0FBS0FJTUVJTUJJQUFvQWhnUXdnNGdBQ0FBS0FJTVFSUnFOZ0lNSUFZUXpRNGdBRUVnYWlRQURBRUxJQVFvQWdnaEFDTUFRU0JySWdFa0FDQUJJQVUyQWh3Z0FTQUFOZ0lZSUFFZ0FTZ0NIQ0lDRUxjQk5nSVVJQUlRd3dkQkFXb2hBeU1BUVNCcklnQWtBQ0FBSUFJMkFoZ2dBQ0FETmdJVUlBQWdBQ2dDR0NJREVKMFlOZ0lRSUFBb0FoUWdBQ2dDRUVzRVFDQURFT3dLQUFzZ0FDQURFTEVHTmdJTUFrQWdBQ2dDRENBQUtBSVFRUUYyVHdSQUlBQWdBQ2dDRURZQ0hBd0JDeUFBSUFBb0FneEJBWFEyQWdnZ0FDQUFRUWhxSUFCQkZHb1FpUVVvQWdBMkFod0xJQUFvQWh3aEF5QUFRU0JxSkFBZ0FTQURJQUlRd3djZ0FTZ0NGQkNjR0NBQktBSVVJQUVvQWdnUWd3RWdBU2dDR0JEQ0RpQUJJQUVvQWdoQkZHbzJBZ2dnQWlBQkVKc1lJQUVRbWhnZ0FVRWdhaVFBQ3lNQVFSQnJJZ0FnQlRZQ0RDQUFLQUlNS0FJRUdpQUVRUkJxSkFBTEp3RUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBU2dDREVFTWFoRFFDQm9nQVVFUWFpUUFDNzRCQVFWL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0tBSU1JZ0JCQWpZQ0FDTUFRUkJySWdFa0FDQUJJQUJCQkdvMkFnd2dBU2dDRENJRFFnQTNBZ0FnQTBJQU53SUlJd0JCRUdzaUJDUUFJQVFnQXpZQ0RDQUVLQUlNSWdVUXl3NGdCVUVJYWhETERpQUVRUkJxSkFBZ0EwRUFOZ0lRSUFGQkVHb2tBQ0FBUVJocUVIUWFJQUJCQURZQ0tDTUFRUkJySWdFZ0FFRXNhallDRENBQlFRQTJBZ2dnQVNnQ0RDSUJRUUEyQWdBZ0FVRUFOZ0lFSUFKQkVHb2tBQ0FBQ3pnQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUlBRkIvZ3MyQWdnZ0FTZ0NEQ0lBUVFocUlBRW9BZ2dSQUFBYUlBRkJFR29rQUNBQUN5Y0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3UStnSWhBQ0FCUVJCcUpBQWdBQXNuQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1FTndCSVFBZ0FVRVFhaVFBSUFBTHVBRUJBbjhqQUVFUWF5SUNKQUFnQWlBQU5nSUlJQUlnQVRZQ0JBSkFJQUlvQWdRUXd4aEJBWEVFUUNBQ0lBSW9BZ1EyQWdBZ0FpZ0NDQ0VCSUFJb0FnQWhBeU1BUVJCcklnQWtBQ0FBSUFFMkFnd2dBQ0FETmdJSUlBQW9BZ3dnQUNnQ0NCRFpBaUVCSUFCQkVHb2tBQ0FDSUFFMkFnd01BUXNnQWlnQ0NDRUJJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFLQUlNRUJVaEFTQUFRUkJxSkFBZ0FpQUJOZ0lNQ3lBQ0tBSU1JUUFnQWtFUWFpUUFJQUFMS2dFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQkQ2QWlnQ0FDRUFJQUZCRUdva0FDQUFDeGdCQVg4akFFRVFheUlCSUFBMkFnd2dBU2dDREVFTFNRdVFCZ0VHZnlNQVFSQnJJZ1FrQUNBRUlBRTJBZ3dDUUNBQUlBQW9BZ0FvQWh3UkFBQWdBU0FCS0FJQUtBSWNFUUFBUncwQUlBQWdBQ2dDQUNnQ0NCRUFBQ0FCSUFFb0FnQW9BZ2dSQUFCSERRQWdBQ0FBS0FJQUtBSUlFUUFBSVFNZ0JDQUFOZ0lBSUFRZ0JFRU1hallDQkFKQUlBTkZEUUFnQXlnQ0JDSUJFSkVEQkVCQkFDRUJBMEFnQVNBREtBSWNUeUlDRFFNZ0FDQUJJQUFvQWdBb0Fnd1JBUUFoQlNBRUtBSU1JZ1lnQVNBR0tBSUFLQUlNRVFFQUlRWWdBVUVCYWlFQklBVWdCaERXQ0EwQUN3d0NDeUFCUWZDcUVrWUVRRUVBSVFFRFFDQUJJQU1vQWlSUElnSU5BeUFBSUFFZ0FDZ0NBQ2dDREJFQkFDRUZJQVFvQWd3aUJpQUJJQVlvQWdBb0Fnd1JBUUFoQmlBQlFRRnFJUUVnQlNBR0VOWUlEUUFMREFJTElBRkJrS0lTUmdSQUlBTW9BaHdpQVNnQ0JFR1FveEpISUFGRmNnMENJQUVvQWd3aEF3TkFJQU1nQWlJQlJ3UkFJQUZCQVdvaEFpQUFJQUVnQUNnQ0FDZ0NEQkVCQUNBRUtBSU1JZ1VnQVNBRktBSUFLQUlNRVFFQUVOWUlEUUVMQ3lBQklBTlBJUUlNQWdzZ0FSRG1BMFVOQUNBREtBSklJUU1EUUNBRElBSWlBVWNFUUNBQlFRRnFJUUlnQUNBQklBQW9BZ0FvQWd3UkFRQWdCQ2dDRENJRklBRWdCU2dDQUNnQ0RCRUJBQkRXQ0EwQkN3c2dBU0FEVHlFQ0RBRUxJd0JCMEFGcklnQWtBQ0FBUWNBQmFpQUVLQUlBSWdFZ0FTZ0NBQ2dDSkJFQ0FDQUFRYkFCYWlBRUtBSUVLQUlBSWdFZ0FTZ0NBQ2dDSkJFQ0FDQUFMUURJQVVVRVFDQUFRY0d2QlVIUkFFRUlJQUJCb0FGcUVCMGlBUkFYSWdKQkdHcEJudUFJRUE0YUlBSVFHQ0FCRUI0TElBQXRBTGdCUlFSQUlBQkJ3YThGUWRJQVFRZ2dBRUdnQVdvUUhTSUJFQmNpQWtFWWFrSGIzd2dRRGhvZ0FoQVlJQUVRSGdzakFFRVFheUlCSkFBZ0FFR3dBV29pQlMwQUNDSUNRZjhCUmlBQ0lBQkJ3QUZxSWdZdEFBZ2lBMFlnQWtIL0FVZHhJQU5CL3dGR0lnY2JJZ0pGSUFkeVJRUkFJQU5CQW5SQnlQZ1BhaWdDQUNFQ0lBRWdBVFlDQ0NBQlFRaHFJQVlnQlNBQ0VRUUFJUUlMSUFGQkVHb2tBQ0FBUWRBQmFpUUFDeUFFUVJCcUpBQWdBZ3NLQUNBQVFZRUNPd0FDQ3lVQkFYOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBZ1JBSUFJUTJ3NExJQUlRSHdzTEN3QWdBRUVBRVBFS0lBQUxJQUFnQUVIMDRCSTJBZ0FnQUVFc2FoRG1EaUFBUVNCcUVOb0ZJQUFRNVE0TGpRc0JESDhqQUVGQWFpSUZKQUFnQlNBQk5nSThJQVZCQURZQ09DQUZRZ0EzQXpBZ0JVRWdhaUFBSUFFUTFBY2dBRUVnYWlFSklBUkJBWE1oRHlBQVFaQURhaUVRSUFCQjFBMXFJUXdnQUVHb0JHb2hDeUFGS0FJa0lRNGdCU2dDSUNFQkEwQUNRQ0FCSUE1R0RRQWdBU2dDQUNJR0lBRW9BZ1FpQ0VZRVFDQUFRUUE2QUpRRElBdEJqOEVMRUJrZ0JVRThhaEF2UVprSUVCa29BZ0F0QUFCQkFFY2hDZ3dCQ3dKQUlBWW9BZ0JCQzBjTkFDQUlJQVpyUVFSR0JFQWdBRUVBT2dDVUF5QUxRY2ZBQ3hBWklBVkJQR29RTDBIaTV3UVFHU2dDQUMwQUFFRUFSeUVLREFJTEFrQUNRQ0FHS0FJRUlnaEJFbXNpQmtFWlN3MEFBa0JCQVNBR2RFSEJub0FZY1VVRVFDQUdRUUpIRFFKQkFDRUdBa0FnQUNnQ3RBVWdCU2dDUEJDVUFTSUhSUTBBSUFjb0FoUkJPMGNOQUNBQUtBSzBCU0FIRUhvUWxBRWlCMFVOQUNBSEtBSVVRU0JIRFFBZ0FDZ0N0QVVnQjBFQkVEZ1FsQUVpQjBVTkFDQUhLQUlVUVJ4SERRQWdBQ2dDdUFVZ0IwRUJFRGdRa2dVaUIwVU5BQ0FISUFjb0FnQW9BamdSQUFBaEJnc0NRQ0FHQkVBZ0JoQzdEa0lCVVEwQkN5QUFRUUE2QUpRRElBdEJ0cVlIRUJrYUN5QU1JQVZCUEdvUTBBRkJGRFlDQUNBRVJRMERJQkFRN1FNaEJnd0JDeUFNSUFWQlBHb1EwQUVnQ0RZQ0FDQUFJQUlvQWdBUWpoa2lCa1VnQkVWeURRSUxJQUlnQmpZQ0FBd0JDeUFJUVFGSERRQWdEQ0FGUVR4cUVOQUJRUUUyQWdBTUFnc0NmMEVKSVFZQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBaEJEMnNPSFEwTUFna01DZ3dEREFjTUNBUUdCUXdNREF3TURBd01EQXdNREFBQkN3dEJEQXdOQzBFRkRBd0xRUU1NQ3d0QkFnd0tDMEVHREFrTFFRY01DQXRCQkF3SEMwRUlEQVlMUVEwTUJRdEJDZ3dFQzBFTERBTUxJQWhGRFFFTFFRQWhCaUFBS0FLZ0JVRUFPZ0FBSUFBb0FxUUZRUWhxSWdkQjMvOExFQTRhSUFjZ0NCQWhHZ3NnQmdzaUNFVWdEM0pGQkVBZ0JVRUFOZ0lZSUFWQ0FEY0RFQ0FGUWdBM0F3Z2pBRUVRYXlJR0pBQWdCaUFJTmdJTUlBTWdDU0FGUVFocUlBWkJER29RaUJvUWtBVWdCaWdDREVFTFJnUkFJQU1nQXlrRE1FSUJoRGNETUFzZ0JrRVFhaVFBREFFTElBaEZEUUVMQWtBZ0JFVU5BQ0FCRVBvT1JRMEFJQVZCTUdvZ0FSRDREZ3NnQVNnQ0FDSUdLQUlBSWdoQklrWUVmeUFCS0FJRUlBWnJRUVJHQkVBZ0FFRUFPZ0NVQXlBTFFaM0FDeEFaSUFWQlBHb1FMMEhpNXdRUUdTZ0NBQzBBQUVFQVJ5RUtEQUlMSUFWQkFEWUNHQ0FGUWdBM0F4QWdCVUlBTndNSUlBVWdBU2dDQURVQ0JEY0RBQ01BUVJCcklnWWtBQ0FHSUFrZ0JSRHBCVFlDRENNQVFSQnJJZ2drQUNBSkVCd2dDU0FKS0FJTVFRRnFJZ2MyQWd3Z0NDQUhOZ0lJSUFsQmpBRnFJZ2NnQnhDL0FTQUpLQUlJSUFnb0FnZ2dCVUVJYWlBR0tBSU1FSUFmSWcwUUtDQUhJQWNvQWhoQkFXbzJBaGdnQ0VFUWFpUUFJQTBoQ0NBR1FSQnFKQUFnQXlBSUVKQUZJQUVvQWdBaUJpZ0NBQVVnQ0F0QklVWUVRQ0FCS0FJRUlBWnJRUVJHQkVBZ0FFRUFPZ0NVQXlBTFFldkFDeEFaSUFWQlBHb1FMMEhpNXdRUUdTZ0NBQzBBQUVFQVJ5RUtEQUlMSUFWQkFEWUNHQ0FGUWdBM0F4QWdCVUlBTndNSUlBVWdBU2dDQURVQ0JEY0RBQ01BUVJCcklnWWtBQ0FHSUFrZ0JSRHBCVFlDRENNQVFSQnJJZ2drQUNBSkVCd2dDU0FKS0FJTVFRRnFJZ2MyQWd3Z0NDQUhOZ0lJSUFsQmpBRnFJZ2NnQnhDL0FTQUpLQUlJSUFnb0FnZ2dCVUVJYWlBR0tBSU1FSU1mSWcwUUtDQUhJQWNvQWhoQkFXbzJBaGdnQ0VFUWFpUUFJQTBoQ0NBR1FSQnFKQUFnQXlBSUVKQUZDeUFCUVF4cUlRRU1BUXNMSUFWQklHb1FwQUlDUUNBQklBNUhEUUFnQkFSQVFRQWhDaUFBSUFJb0FnQWdCVUV3YWlBREVPOE9SUTBCQ3lBQUxRQ1VBMEVBUnlFS0N5QUZRVEJxRUtRQ0lBVkJRR3NrQUNBS0MrdE1BaE4vQW4wakFFRWdheUlPSkFBZ0RpQUJOZ0lJQWtBQ1FDQUFRZVFIYWlJVUlBNUJDR29ROVFNaUJBUkFJQVFvQWd3aEJBd0JDeUFBSUFFUWp4a2lDRVVFUUVFQUlRUU1BUXNnRGlBQk5nSUlBa0FnRGtFWWFpQUFRZEFIYWlBT1FRaHFFSk1ERU9jWUlnTVE1UmhGQkVCQkFDRUVJQUJCQURvQWxBTWdBRUdvQkdwQjgvVUpFQmtoQWlBT1FRaHFJZ0FnQVJCWUlBTWdBaUFBRUUxQjIvZ01FQmtvQWdRUTVoZ2FJQUFRRHhvTUFRc0NRQ0FERU9RWURRQUNRQ0FJS0FJVVFScEdCRUFnQXhEVkRnd0JDeUFJRU1nQlFRZEhCRUJCQUNFRUlBQkJBRG9BbEFNZ0FFR29CR3BCeE93TEVCa2hBU0FPUVFocUlnQWdDQkJZSUFFZ0FCQk5HaUFBRUE4YURBTUxJQWhCQlJBNFFRSkhJQWhCQmhBNFJYRkZCRUFnRGtFSWFpQUFJQUVRWUJEVUJ5QU9LQUlNSVFZZ0RpZ0NDQ0VFQTBBZ0JDQUdSZ1JBQWtBZ0RrRUlhaENrQWlBQ0lBVnhRUUZ4QkVBZ0FFRUFPZ0NVQXlBQVFhZ0Vha0hydmdRUUdTRUdJQTVCQ0dvaUJDQUJFRmdnQmlBRUVFMGFJQVFRRHhvTElBSWdCWEpCQVhGRkJFQWdBRUVBT2dDVUF5QUFRYWdFYWtHdHZnUVFHU0VHSUE1QkNHb2lCQ0FCRUZnZ0JpQUVFRTBhSUFRUUR4b0xJQUpCQVhGRkRRQWdBeERpR0F3RUN3VWdCQ2dDQkNBRUtBSUFJZ3ByUVFSR0JFQWdDaWdDQUNJS1FSbEdJQVZ5SVFVZ0NrRVlSaUFDY2lFQ0N5QUVRUXhxSVFRTUFRc0xJQU1RNFJnTUFRc2dBeERYQ0FzZ0F4RGtHQTBBUVFBaEJDQUFRUUE2QUpRRElBQkJxQVJxUWNMSENSQVpJUUlqQUVHUUFXc2lBQ1FBSUE1QkNHb2lBU0FESUFBUVNSRG1HQ0lEUVF4cUVFSWdBeEJSSUFCQmtBRnFKQUFnQWlBQkVFMGFJQUVRRHhvTUFRc0NmeUFETFFBQUJFQWdBeTBBQVNFQ1FRQWhCQ01BUVNCcklnd2tBQ0FNSUFJMkFnd2dBQ2dDa0FNaEJ5QU1RUkJxSUFJUXRCb2dCMEdjQTJvaENTQU1LQUlZSVFBQ1FBSkFJQWNvQXFBRElnSkZEUUFDUUNBQ2FTSUdRUUZOQkVBZ0FrRUJheUFBY1NFRURBRUxJQUlnQUNJRVN3MEFJQUFnQW5BaEJBc2dDU2dDQUNBRVFRSjBhaWdDQUNJRFJRMEFJQUpCQVdzaENDQUdRUUZMSVFZRFFDQURLQUlBSWdORkRRRWdBQ0FES0FJRUlnVkhCRUFDUUNBR1JRUkFJQVVnQ0hFaEJRd0JDeUFDSUFWTERRQWdCU0FDY0NFRkN5QUVJQVZHRFFFTUFnc2dBeWdDRENJS0tBSUlJQUJIRFFBTERBRUxJQWRCZ0FOcUlnSVE4UXNpQ2lBTUtBSU1FTFFhSUFJZ0NoQW9JQUlnQWlnQ0dFRUJhallDR0FKQUlBY29BcUFESWdKRkRRQUNRQ0FDYVNJR1FRRk5CRUFnQWtFQmF5QUFjU0VFREFFTElBSWdBQ0lFU3cwQUlBQWdBbkFoQkFzZ0NTZ0NBQ0FFUVFKMGFpZ0NBQ0lEUlEwQUlBSkJBV3NoQ0NBR1FRRkxJUVlEUUNBREtBSUFJZ05GRFFFZ0FDQURLQUlFSWdWSEJFQUNRQ0FHUlFSQUlBVWdDSEVoQlF3QkN5QUNJQVZMRFFBZ0JTQUNjQ0VGQ3lBRUlBVkhEUUlMSUFNb0Fnd29BZ2dnQ2lnQ0NFY05BQXNNQVF0QkVCQVZJZ3NnQURZQ0JDQUxJQUN0SUFxdFFpQ0doRGNDQ0NBTFFRQTJBZ0FnQjBHa0Eyb2hEUUpBUVFBZ0FpQUhLQUtvQTBFQmFyTWlGU0FIS2dLc0F5SVdJQUt6bEY0YkRRQkJBaUVFQWtBZ0FpQUNRUUZyY1VFQVJ5QUNRUU5KY2lBQ1FRRjBjaUlEQW44Z0ZTQVdsWTBpRlVNQUFJQlBYU0FWUXdBQUFBQmdjUVJBSUJXcERBRUxRUUFMSWdZZ0F5QUdTeHNpQTBFQlJnMEFJQU1nQTBFQmEzRkZCRUFnQXlFRURBRUxJQU1RZnlFRUlBY29BcUFESVFJTEFrQUNRQUpBSUFJZ0JFOEVRQ0FDSUFSTkRRTWdBa0VEU1NFR0FuOGdCeWdDcUFPeklBY3FBcXdEbFkwaUZVTUFBSUJQWFNBVlF3QUFBQUJnY1FSQUlCV3BEQUVMUVFBTElRTWdBaUFFSUFZZ0FtbEJBVXR5Qkg4Z0F4Qi9CU0FEUVFGQklDQURRUUZyWjJ0MElBTkJBa2tiQ3lJRElBTWdCRWtiSWdSTkJFQWdCeWdDb0FNaEFnd0VDeUFFUlEwQkN5QUVRWUNBZ0lBRVNRUkFJQWtnQkVFQ2RCQVZFR3dnQnlBRU5nS2dBMEVBSVFNRFFDQURJQVJHQkVBZ0J5Z0NwQU1pQlVVTkJBVWdDU2dDQUNBRFFRSjBha0VBTmdJQUlBTkJBV29oQXd3QkN3c2dCU2dDQkNFR0FrQWdCR2tpQWtFQlRRUkFJQVlnQkVFQmEzRWhCZ3dCQ3lBRUlBWkxEUUFnQmlBRWNDRUdDeUFKS0FJQUlBWkJBblJxSUEwMkFnQWdCRUVCYXlFUklBSkJBVXNoRWdOQUlBVW9BZ0FpQ0VVTkF5QUlLQUlFSVFJQ1FDQVNSUVJBSUFJZ0VYRWhBZ3dCQ3lBQ0lBUkpEUUFnQWlBRWNDRUNDd0pBSUFJZ0JrWU5BQ0FJSVFNZ0FrRUNkQ0lQSUFrb0FnQnFJaEFvQWdCRkJFQWdFQ0FGTmdJQUlBSWhCZ3dCQ3dOQUlBTWlBaWdDQUNJREJFQWdDQ2dDRENnQ0NDQURLQUlNS0FJSVJnMEJDd3NnQlNBRE5nSUFJQUlnQ1NnQ0FDQVBhaWdDQUNnQ0FEWUNBQ0FKS0FJQUlBOXFLQUlBSUFnMkFnQU1BUXNnQ0NFRkRBQUxBQXNNQ1F0QkFDRUNJQWxCQUJCc0lBZEJBRFlDb0FNTUFRc2dCQ0VDQ3lBQ0lBSkJBV3NpQkhGRkJFQWdBQ0FFY1NFRURBRUxJQUFnQWtrRVFDQUFJUVFNQVFzZ0FDQUNjQ0VFQ3dKQUFrQWdDU2dDQUNBRVFRSjBhaUlBS0FJQUlnTkZCRUFnQ3lBSEtBS2tBellDQUNBSElBczJBcVFESUFBZ0RUWUNBQ0FMS0FJQUlnQkZEUUlnQUNnQ0JDRURBa0FnQWlBQ1FRRnJJZ0J4UlFSQUlBQWdBM0VoQXd3QkN5QUNJQU5MRFFBZ0F5QUNjQ0VEQ3lBSktBSUFJQU5CQW5ScUlRTU1BUXNnQ3lBREtBSUFOZ0lBQ3lBRElBczJBZ0FMSUFjZ0J5Z0NxQU5CQVdvMkFxZ0RDeUFNUVNCcUpBQWdDZ3dCQ3dKQUlBTXRBQUlFUUNBQUtBSzhCU0FJRUdBUTZRRWlCQ0FFS0FJQUtBSkVFUUFBSWdWRkJFQkJBQ0VFSUFCQkFEb0FsQU1nQUVHb0JHcEJrWkVFRUJraEFTQU9RUWhxSWdBZ0NCQllJQUVnQUJCTkdpQUFFQThhREFRTElBVW9BaGdoQWdKQUlBVXRBQ0FpQmtVTkFBSkFJQUpCQVdzT0F3RUFBUUFMUVFBaEJDQUFRUUE2QUpRRElBQkJxQVJxUWJqMkNSQVpJQUJCeUFScUlBRVFZQkNUQWhCTlFlMjFEQkFaSVFJZ0RrRUlhaUlBSUFFUVdDQUNJQUFRVFJvZ0FCQVBHZ3dFQzBFQUlRUUNmd0pBQWtBZ0JnUkFRUUloQmdKQUFrQWdBa0VCYXc0REF3RUFBUXRCQlF3RUN5QUFLQUtnQlVFQU9nQUFJQUFvQXFRRlFRaHFJZ1pCL2NnSkVBNGFEQUlMSUFKQkJFOEVRQ0FBS0FLZ0JVRUFPZ0FBSUFBb0FxUUZRUWhxSWdaQjZQNExFQTRhREFJTElBSkJBblJCNElBTmFpZ0NBQ0VHQ3lBR0RBRUxJQVlnQWhDOEFocEJmd3NpQWtGL1JnMERBa0FnQXkwQUF5QURMUUFHY2tVRVFDQUZLQUlvSWdZTkFRc2dBQ0FJUVFBUU9FRUFFSVVCSVFZZ0JTMEFJU0VJQWtBZ0JTZ0NIRVVFUUNBRExRQUZSUTBCQ3lBQUlRUWdDRVVOQTBFQUlRQWpBRUVnYXlJTUpBQWdEQ0FDTmdJTUlBUW9BcEFESVFjZ0RFRVFhaUFDRUxJYUlBZEIvQU5xSVFrZ0RDZ0NHQ0VFQWtBQ1FDQUhLQUtBQkNJQ1JRMEFBa0FnQW1raUJrRUJUUVJBSUFKQkFXc2dCSEVoQUF3QkN5QUNJQVFpQUVzTkFDQUVJQUp3SVFBTElBa29BZ0FnQUVFQ2RHb29BZ0FpQTBVTkFDQUNRUUZySVFnZ0JrRUJTeUVHQTBBZ0F5Z0NBQ0lEUlEwQklBUWdBeWdDQkNJRlJ3UkFBa0FnQmtVRVFDQUZJQWh4SVFVTUFRc2dBaUFGU3cwQUlBVWdBbkFoQlFzZ0FDQUZSZzBCREFJTElBTW9BZ3dpQ2lnQ0NDQUVSdzBBQ3d3QkN5QUhRZUFEYWlJQ0VQRUxJZ29nRENnQ0RCQ3lHaUFDSUFvUUtDQUNJQUlvQWhoQkFXbzJBaGdDUUNBSEtBS0FCQ0lDUlEwQUFrQWdBbWtpQmtFQlRRUkFJQUpCQVdzZ0JIRWhBQXdCQ3lBQ0lBUWlBRXNOQUNBRUlBSndJUUFMSUFrb0FnQWdBRUVDZEdvb0FnQWlBMFVOQUNBQ1FRRnJJUWdnQmtFQlN5RUdBMEFnQXlnQ0FDSURSUTBCSUFRZ0F5Z0NCQ0lGUndSQUFrQWdCa1VFUUNBRklBaHhJUVVNQVFzZ0FpQUZTdzBBSUFVZ0FuQWhCUXNnQUNBRlJ3MENDeUFES0FJTUtBSUlJQW9vQWdoSERRQUxEQUVMUVJBUUZTSUxJQVEyQWdRZ0N5QUVyU0FLclVJZ2hvUTNBZ2dnQzBFQU5nSUFJQWRCaEFScUlRMENRRUVBSUFJZ0J5Z0NpQVJCQVdxekloVWdCeW9DakFRaUZpQUNzNVJlR3cwQVFRSWhBQUpBSUFJZ0FrRUJhM0ZCQUVjZ0FrRURTWElnQWtFQmRISWlBd0ovSUJVZ0ZwV05JaFZEQUFDQVQxMGdGVU1BQUFBQVlIRUVRQ0FWcVF3QkMwRUFDeUlHSUFNZ0Jrc2JJZ05CQVVZTkFDQURJQU5CQVd0eFJRUkFJQU1oQUF3QkN5QURFSDhoQUNBSEtBS0FCQ0VDQ3dKQUFrQUNRQ0FBSUFKTkJFQWdBQ0FDVHcwRElBSkJBMGtoQmdKL0lBY29Bb2dFc3lBSEtnS01CSldOSWhWREFBQ0FUMTBnRlVNQUFBQUFZSEVFUUNBVnFRd0JDMEVBQ3lFRElBSWdBQ0FHSUFKcFFRRkxjZ1IvSUFNUWZ3VWdBMEVCUVNBZ0EwRUJhMmRyZENBRFFRSkpHd3NpQXlBQUlBTkxHeUlBVFFSQUlBY29Bb0FFSVFJTUJBc2dBRVVOQVFzZ0FFR0FnSUNBQkVrRVFDQUpJQUJCQW5RUUZSQnNJQWNnQURZQ2dBUkJBQ0VEQTBBZ0FDQURSZ1JBSUFjb0FvUUVJZ1ZGRFFRRklBa29BZ0FnQTBFQ2RHcEJBRFlDQUNBRFFRRnFJUU1NQVFzTElBVW9BZ1FoQmdKQUlBQnBJZ0pCQVUwRVFDQUdJQUJCQVd0eElRWU1BUXNnQUNBR1N3MEFJQVlnQUhBaEJnc2dDU2dDQUNBR1FRSjBhaUFOTmdJQUlBQkJBV3NoRVNBQ1FRRkxJUklEUUNBRktBSUFJZ2hGRFFNZ0NDZ0NCQ0VDQWtBZ0VrVUVRQ0FDSUJGeElRSU1BUXNnQUNBQ1N3MEFJQUlnQUhBaEFnc0NRQ0FDSUFaR0RRQWdDQ0VESUFKQkFuUWlEeUFKS0FJQWFpSVFLQUlBUlFSQUlCQWdCVFlDQUNBQ0lRWU1BUXNEUUNBRElnSW9BZ0FpQXdSQUlBZ29BZ3dvQWdnZ0F5Z0NEQ2dDQ0VZTkFRc0xJQVVnQXpZQ0FDQUNJQWtvQWdBZ0Qyb29BZ0FvQWdBMkFnQWdDU2dDQUNBUGFpZ0NBQ0FJTmdJQURBRUxJQWdoQlF3QUN3QUxEQXdMUVFBaEFpQUpRUUFRYkNBSFFRQTJBb0FFREFFTElBQWhBZ3NnQWlBQ1FRRnJJZ0J4UlFSQUlBQWdCSEVoQUF3QkN5QUNJQVJMQkVBZ0JDRUFEQUVMSUFRZ0FuQWhBQXNDUUFKQUlBa29BZ0FnQUVFQ2RHb2lBQ2dDQUNJRFJRUkFJQXNnQnlnQ2hBUTJBZ0FnQnlBTE5nS0VCQ0FBSUEwMkFnQWdDeWdDQUNJQVJRMENJQUFvQWdRaEF3SkFJQUlnQWtFQmF5SUFjVVVFUUNBQUlBTnhJUU1NQVFzZ0FpQURTdzBBSUFNZ0FuQWhBd3NnQ1NnQ0FDQURRUUowYWlFRERBRUxJQXNnQXlnQ0FEWUNBQXNnQXlBTE5nSUFDeUFISUFjb0FvZ0VRUUZxTmdLSUJBc2dERUVnYWlRQUlBb01CQXNnQ0FSQUlBSkJBVWNFUUNBQVFRQTZBSlFESUFCQnFBUnFRYXYzQ1JBWklBQkJ5QVJxSUFFUVlCQ1RBaEJOUWUyMURCQVpJUU1nRGtFSWFpSUVJQUVRV0NBRElBUVFUUm9nQkJBUEdndEJBQ0VFSXdCQklHc2lDeVFBSUFzZ0JqWUNDQ0FMSUFJMkFnd2dBQ2dDa0FNaEJ5QUxRUkJxSUFJZ0JoQ3hHaUFIUWF3RWFpRUpJQXRCR0dvZ0MwRWNhaENoQ3lFSUFrQUNRQ0FIS0FLd0JDSUFSUTBBSUFrb0FnQUNmeUFBUVFGcklBaHhJQUJwSWdKQkFVME5BQm9nQ0NBQUlBaExEUUFhSUFnZ0FIQUxJZ1JCQW5ScUtBSUFJZ1ZGRFFBZ0FFRUJheUVHSUFzb0Fod2hEQ0FMS0FJWUlRMGdBa0VCU3lFQ0EwQWdCU2dDQUNJRlJRMEJJQWdnQlNnQ0JDSURSd1JBQWtBZ0FrVUVRQ0FESUFaeElRTU1BUXNnQUNBRFN3MEFJQU1nQUhBaEF3c2dBeUFFUmcwQkRBSUxJQVVvQWd3aUNpZ0NDQ0FOUncwQUlBb29BZ3dnREVjTkFBc01BUXNnQjBHUUJHb2lBQkQ4QXlJS0lBc29BZ3dnQ3lnQ0NCQ3hHaUFBSUFvUUtDQUFJQUFvQWhoQkFXbzJBaGdDUUNBSEtBS3dCQ0lBUlEwQUlBa29BZ0FDZnlBQVFRRnJJQWh4SUFCcElnSkJBVTBOQUJvZ0NDQUFJQWhMRFFBYUlBZ2dBSEFMSWdSQkFuUnFLQUlBSWdWRkRRQWdBRUVCYXlFR0lBSkJBVXNoQWdOQUlBVW9BZ0FpQlVVTkFTQUlJQVVvQWdRaUEwY0VRQUpBSUFKRkJFQWdBeUFHY1NFRERBRUxJQUFnQTBzTkFDQURJQUJ3SVFNTElBTWdCRWNOQWdzZ0JTZ0NEQ0lES0FJSUlBb29BZ2hIRFFBZ0F5Z0NEQ0FLS0FJTVJ3MEFDd3dCQzBFUUVCVWlEQ0FJTmdJRUlBd2dDSzBnQ3ExQ0lJYUVOd0lJSUF4QkFEWUNBQ0FIUWJRRWFpRU5Ba0JCQUNBQUlBY29BcmdFUVFGcXN5SVZJQWNxQXJ3RUloWWdBTE9VWGhzTkFFRUNJUVFDUUNBQUlBQkJBV3R4UVFCSElBQkJBMGx5SUFCQkFYUnlJZ0lDZnlBVklCYVZqU0lWUXdBQWdFOWRJQlZEQUFBQUFHQnhCRUFnRmFrTUFRdEJBQXNpQXlBQ0lBTkxHeUlDUVFGR0RRQWdBaUFDUVFGcmNVVUVRQ0FDSVFRTUFRc2dBaEIvSVFRZ0J5Z0NzQVFoQUFzQ1FBSkFBa0FnQUNBRVR3UkFJQUFnQkUwTkF5QUFRUU5KSVFNQ2Z5QUhLQUs0QkxNZ0J5b0N2QVNWalNJVlF3QUFnRTlkSUJWREFBQUFBR0J4QkVBZ0Zha01BUXRCQUFzaEFpQUFJQVFnQXlBQWFVRUJTM0lFZnlBQ0VIOEZJQUpCQVVFZ0lBSkJBV3RuYTNRZ0FrRUNTUnNMSWdJZ0FpQUVTUnNpQkUwRVFDQUhLQUt3QkNFQURBUUxJQVJGRFFFTElBUkJnSUNBZ0FSSkJFQWdDU0FFUVFKMEVCVVFiQ0FISUFRMkFyQUVRUUFoQlFOQUlBUWdCVVlFUUNBSEtBSzBCQ0lDUlEwRUJTQUpLQUlBSUFWQkFuUnFRUUEyQWdBZ0JVRUJhaUVGREFFTEN5QUNLQUlFSVFZQ1FDQUVhU0lBUVFGTkJFQWdCaUFFUVFGcmNTRUdEQUVMSUFRZ0Jrc05BQ0FHSUFSd0lRWUxJQWtvQWdBZ0JrRUNkR29nRFRZQ0FDQUVRUUZySVJFZ0FFRUJTeUVTQTBBZ0FpZ0NBQ0lBUlEwRElBQW9BZ1FoQXdKQUlCSkZCRUFnQXlBUmNTRUREQUVMSUFNZ0JFa05BQ0FESUFSd0lRTUxBa0FnQXlBR1JnMEFJQUFoQlNBRFFRSjBJZzhnQ1NnQ0FHb2lFQ2dDQUVVRVFDQVFJQUkyQWdBZ0F5RUdEQUVMQTBBQ1FDQUZJZ01vQWdBaUJVVU5BQ0FBS0FJTUloQW9BZ2dnQlNnQ0RDSVRLQUlJUncwQUlCQW9BZ3dnRXlnQ0RFWU5BUXNMSUFJZ0JUWUNBQ0FESUFrb0FnQWdEMm9vQWdBb0FnQTJBZ0FnQ1NnQ0FDQVBhaWdDQUNBQU5nSUFEQUVMSUFBaEFnd0FDd0FMREF3TFFRQWhBQ0FKUVFBUWJDQUhRUUEyQXJBRURBRUxJQVFoQUFzZ0FDQUFRUUZySWdSeFJRUkFJQVFnQ0hFaEJBd0JDeUFBSUFoTEJFQWdDQ0VFREFFTElBZ2dBSEFoQkFzQ1FBSkFJQWtvQWdBZ0JFRUNkR29pQkNnQ0FDSUZSUVJBSUF3Z0J5Z0N0QVEyQWdBZ0J5QU1OZ0swQkNBRUlBMDJBZ0FnRENnQ0FDSUVSUTBDSUFRb0FnUWhCUUpBSUFBZ0FFRUJheUlFY1VVRVFDQUVJQVZ4SVFVTUFRc2dBQ0FGU3cwQUlBVWdBSEFoQlFzZ0NTZ0NBQ0FGUVFKMGFpRUZEQUVMSUF3Z0JTZ0NBRFlDQUFzZ0JTQU1OZ0lBQ3lBSElBY29BcmdFUVFGcU5nSzRCQXNnQzBFZ2FpUUFJQW9NQkFzakFFRWdheUlMSkFBZ0N5QUdOZ0lJSUFzZ0FqWUNEQ0FBS0FLUUF5RUhJQXRCRUdvZ0FpQUdFSzhhSUFkQjNBUnFJUWtnQzBFWWFpQUxRUnhxRUtFTElRZ0NRQUpBSUFjb0F1QUVJZ0JGRFFBZ0NTZ0NBQUovSUFCQkFXc2dDSEVnQUdraUFrRUJUUTBBR2lBSUlBQWdDRXNOQUJvZ0NDQUFjQXNpQkVFQ2RHb29BZ0FpQlVVTkFDQUFRUUZySVFZZ0N5Z0NIQ0VNSUFzb0FoZ2hEU0FDUVFGTElRSURRQ0FGS0FJQUlnVkZEUUVnQ0NBRktBSUVJZ05IQkVBQ1FDQUNSUVJBSUFNZ0JuRWhBd3dCQ3lBQUlBTkxEUUFnQXlBQWNDRURDeUFESUFSR0RRRU1BZ3NnQlNnQ0RDSUtLQUlJSUExSERRQWdDaWdDRENBTVJ3MEFDd3dCQ3lBSFFjQUVhaUlBRVB3RElnb2dDeWdDRENBTEtBSUlFSzhhSUFBZ0NoQW9JQUFnQUNnQ0dFRUJhallDR0FKQUlBY29BdUFFSWdCRkRRQWdDU2dDQUFKL0lBQkJBV3NnQ0hFZ0FHa2lBa0VCVFEwQUdpQUlJQUFnQ0VzTkFCb2dDQ0FBY0FzaUJFRUNkR29vQWdBaUJVVU5BQ0FBUVFGcklRWWdBa0VCU3lFQ0EwQWdCU2dDQUNJRlJRMEJJQWdnQlNnQ0JDSURSd1JBQWtBZ0FrVUVRQ0FESUFaeElRTU1BUXNnQUNBRFN3MEFJQU1nQUhBaEF3c2dBeUFFUncwQ0N5QUZLQUlNSWdNb0FnZ2dDaWdDQ0VjTkFDQURLQUlNSUFvb0FneEhEUUFMREFFTFFSQVFGU0lNSUFnMkFnUWdEQ0FJclNBS3JVSWdob1EzQWdnZ0RFRUFOZ0lBSUFkQjVBUnFJUTBDUUVFQUlBQWdCeWdDNkFSQkFXcXpJaFVnQnlvQzdBUWlGaUFBczVSZUd3MEFRUUloQkFKQUlBQWdBRUVCYTNGQkFFY2dBRUVEU1hJZ0FFRUJkSElpQWdKL0lCVWdGcFdOSWhWREFBQ0FUMTBnRlVNQUFBQUFZSEVFUUNBVnFRd0JDMEVBQ3lJRElBSWdBMHNiSWdKQkFVWU5BQ0FDSUFKQkFXdHhSUVJBSUFJaEJBd0JDeUFDRUg4aEJDQUhLQUxnQkNFQUN3SkFBa0FDUUNBQUlBUlBCRUFnQUNBRVRRMERJQUJCQTBraEF3Si9JQWNvQXVnRXN5QUhLZ0xzQkpXTkloVkRBQUNBVDEwZ0ZVTUFBQUFBWUhFRVFDQVZxUXdCQzBFQUN5RUNJQUFnQkNBRElBQnBRUUZMY2dSL0lBSVFmd1VnQWtFQlFTQWdBa0VCYTJkcmRDQUNRUUpKR3dzaUFpQUNJQVJKR3lJRVRRUkFJQWNvQXVBRUlRQU1CQXNnQkVVTkFRc2dCRUdBZ0lDQUJFa0VRQ0FKSUFSQkFuUVFGUkJzSUFjZ0JEWUM0QVJCQUNFRkEwQWdCQ0FGUmdSQUlBY29BdVFFSWdKRkRRUUZJQWtvQWdBZ0JVRUNkR3BCQURZQ0FDQUZRUUZxSVFVTUFRc0xJQUlvQWdRaEJnSkFJQVJwSWdCQkFVMEVRQ0FHSUFSQkFXdHhJUVlNQVFzZ0JDQUdTdzBBSUFZZ0JIQWhCZ3NnQ1NnQ0FDQUdRUUowYWlBTk5nSUFJQVJCQVdzaEVTQUFRUUZMSVJJRFFDQUNLQUlBSWdCRkRRTWdBQ2dDQkNFREFrQWdFa1VFUUNBRElCRnhJUU1NQVFzZ0F5QUVTUTBBSUFNZ0JIQWhBd3NDUUNBRElBWkdEUUFnQUNFRklBTkJBblFpRHlBSktBSUFhaUlRS0FJQVJRUkFJQkFnQWpZQ0FDQURJUVlNQVFzRFFBSkFJQVVpQXlnQ0FDSUZSUTBBSUFBb0Fnd2lFQ2dDQ0NBRktBSU1JaE1vQWdoSERRQWdFQ2dDRENBVEtBSU1SZzBCQ3dzZ0FpQUZOZ0lBSUFNZ0NTZ0NBQ0FQYWlnQ0FDZ0NBRFlDQUNBSktBSUFJQTlxS0FJQUlBQTJBZ0FNQVFzZ0FDRUNEQUFMQUFzTUN3dEJBQ0VBSUFsQkFCQnNJQWRCQURZQzRBUU1BUXNnQkNFQUN5QUFJQUJCQVdzaUJIRkZCRUFnQkNBSWNTRUVEQUVMSUFBZ0NFc0VRQ0FJSVFRTUFRc2dDQ0FBY0NFRUN3SkFBa0FnQ1NnQ0FDQUVRUUowYWlJRUtBSUFJZ1ZGQkVBZ0RDQUhLQUxrQkRZQ0FDQUhJQXcyQXVRRUlBUWdEVFlDQUNBTUtBSUFJZ1JGRFFJZ0JDZ0NCQ0VGQWtBZ0FDQUFRUUZySWdSeFJRUkFJQVFnQlhFaEJRd0JDeUFBSUFWTERRQWdCU0FBY0NFRkN5QUpLQUlBSUFWQkFuUnFJUVVNQVFzZ0RDQUZLQUlBTmdJQUN5QUZJQXcyQWdBTElBY2dCeWdDNkFSQkFXbzJBdWdFQ3lBTFFTQnFKQUFnQ2d3REN3Si9RditBZ0orOEFTQUdyWWhDQVlOUUlBWkJKRTl5UlFSQUlBWkJBblJCOElBTmFpZ0NBQXdCQ3lBQUtBS2dCVUVBT2dBQUlBQW9BcVFGUVFocUlnTkI3T01MRUE0YUlBTWdCaEM4QWhwQkFBc2lBMFVOQXlNQVFUQnJJZ2NrQUNBSElBTTJBaEFnQnlBQ05nSVVJQWRCQXpZQ0RDQUFRWkFEYWlJRUtBSUFJUW9nQjBFWWFpQUNJQU5CQXhDdUdpQUhLQUlvSUFjb0FpUWdCeWdDSUVHU3NhajZCMnBCazZRR2N5SUFRUUoyUVpiNHFmb0hjMm9nQUhNaUFFRUNka0dXK0tuNkIzTnFJQUJ6SVFVZ0NrR01CV29oQ1FKQUFrQWdDaWdDa0FVaUFFVU5BQ0FKS0FJQUFuOGdBRUVCYXlBRmNTQUFhU0lEUVFGTkRRQWFJQVVnQUNBRlN3MEFHaUFGSUFCd0N5SUVRUUowYWlnQ0FDSUNSUTBBSUFCQkFXc2hDQ0FIS0FJa0lRd2dCeWdDSUNFTklBTkJBVXNoQXdOQUlBSW9BZ0FpQWtVTkFTQUZJQUlvQWdRaUJrY0VRQUpBSUFORkJFQWdCaUFJY1NFR0RBRUxJQUFnQmtzTkFDQUdJQUJ3SVFZTElBUWdCa1lOQVF3Q0N5QUNLQUlNSWdzb0FnZ2dEVWNOQUNBTEtBSU1JQXhIRFFBTERBRUxJQXBCOEFScUlnQVFxZ01pQ3lBSEtBSVVJQWNvQWhBZ0J5Z0NEQkN1R2lBQUlBc1FLQ0FBSUFBb0FoaEJBV28yQWhnQ1FDQUtLQUtRQlNJQVJRMEFJQWtvQWdBQ2Z5QUFRUUZySUFWeElBQnBJZ05CQVUwTkFCb2dCU0FBSUFWTERRQWFJQVVnQUhBTElnUkJBblJxS0FJQUlnSkZEUUFnQUVFQmF5RUlJQU5CQVVzaEF3TkFJQUlvQWdBaUFrVU5BU0FGSUFJb0FnUWlCa2NFUUFKQUlBTkZCRUFnQmlBSWNTRUdEQUVMSUFBZ0Jrc05BQ0FHSUFCd0lRWUxJQVFnQmtjTkFnc2dBaWdDRENJR0tBSUlJQXNvQWdoSERRQWdCaWdDRENBTEtBSU1SdzBBQ3d3QkMwRVFFQlVpRENBRk5nSUVJQXdnQmEwZ0M2MUNJSWFFTndJSUlBeEJBRFlDQUNBS1FaUUZhaUVOQWtCQkFDQUFJQW9vQXBnRlFRRnFzeUlWSUFvcUFwd0ZJaFlnQUxPVVhoc05BRUVDSVFNQ1FDQUFJQUJCQVd0eFFRQkhJQUJCQTBseUlBQkJBWFJ5SWdRQ2Z5QVZJQmFWalNJVlF3QUFnRTlkSUJWREFBQUFBR0J4QkVBZ0Zha01BUXRCQUFzaUFpQUNJQVJKR3lJRVFRRkdEUUFnQkNBRVFRRnJjVVVFUUNBRUlRTU1BUXNnQkJCL0lRTWdDaWdDa0FVaEFBc0NRQUpBQWtBZ0FDQURUd1JBSUFBZ0EwME5BeUFBUVFOSklRSUNmeUFLS0FLWUJiTWdDaW9DbkFXVmpTSVZRd0FBZ0U5ZElCVkRBQUFBQUdCeEJFQWdGYWtNQVF0QkFBc2hCQ0FBSUFNZ0FpQUFhVUVCUzNJRWZ5QUVFSDhGSUFSQkFVRWdJQVJCQVd0bmEzUWdCRUVDU1JzTElnUWdBeUFFU3hzaUEwMEVRQ0FLS0FLUUJTRUFEQVFMSUFORkRRRUxJQU5CZ0lDQWdBUkpCRUFnQ1NBRFFRSjBFQlVRYkNBS0lBTTJBcEFGUVFBaEFnTkFJQUlnQTBZRVFDQUtLQUtVQlNJQVJRMEVCU0FKS0FJQUlBSkJBblJxUVFBMkFnQWdBa0VCYWlFQ0RBRUxDeUFBS0FJRUlRZ0NRQ0FEYVNJRVFRRk5CRUFnQ0NBRFFRRnJjU0VJREFFTElBTWdDRXNOQUNBSUlBTndJUWdMSUFrb0FnQWdDRUVDZEdvZ0RUWUNBQ0FEUVFGcklSRWdCRUVCU3lFU0EwQWdBQ2dDQUNJRVJRMERJQVFvQWdRaEJnSkFJQkpGQkVBZ0JpQVJjU0VHREFFTElBTWdCa3NOQUNBR0lBTndJUVlMQWtBZ0JpQUlSZzBBSUFRaEFpQUdRUUowSWc4Z0NTZ0NBR29pRUNnQ0FFVUVRQ0FRSUFBMkFnQWdCaUVJREFFTEEwQUNRQ0FDSWdZb0FnQWlBa1VOQUNBRUtBSU1JaEFvQWdnZ0FpZ0NEQ0lUS0FJSVJ3MEFJQkFvQWd3Z0V5Z0NERVlOQVFzTElBQWdBallDQUNBR0lBa29BZ0FnRDJvb0FnQW9BZ0EyQWdBZ0NTZ0NBQ0FQYWlnQ0FDQUVOZ0lBREFFTElBUWhBQXdBQ3dBTERBb0xRUUFoQUNBSlFRQVFiQ0FLUVFBMkFwQUZEQUVMSUFNaEFBc2dBQ0FBUVFGcklnUnhSUVJBSUFRZ0JYRWhCQXdCQ3lBQUlBVkxCRUFnQlNFRURBRUxJQVVnQUhBaEJBc0NRQUpBSUFrb0FnQWdCRUVDZEdvaUJDZ0NBQ0lDUlFSQUlBd2dDaWdDbEFVMkFnQWdDaUFNTmdLVUJTQUVJQTAyQWdBZ0RDZ0NBQ0lFUlEwQ0lBUW9BZ1FoQWdKQUlBQWdBRUVCYXlJRWNVVUVRQ0FDSUFSeElRSU1BUXNnQUNBQ1N3MEFJQUlnQUhBaEFnc2dDU2dDQUNBQ1FRSjBhaUVDREFFTElBd2dBaWdDQURZQ0FBc2dBaUFNTmdJQUN5QUtJQW9vQXBnRlFRRnFOZ0tZQlFzZ0IwRXdhaVFBSUFzTUFndEJBQ0VFSUFCQkFEb0FsQU1nQUVHb0JHcEIzN2NLRUJraEFpQU9RUWhxSWdBZ0FSQllJQUlnQUJCTkdpQUFFQThhREFJTFFRQWhBQ01BUVNCcklnd2tBQ0FNSUFJMkFnd2dCQ2dDa0FNaEJ5QU1RUkJxSUFJUXN4b2dCMEhNQTJvaENTQU1LQUlZSVFRQ1FBSkFJQWNvQXRBRElnSkZEUUFDUUNBQ2FTSUdRUUZOQkVBZ0FrRUJheUFFY1NFQURBRUxJQUlnQkNJQVN3MEFJQVFnQW5BaEFBc2dDU2dDQUNBQVFRSjBhaWdDQUNJRFJRMEFJQUpCQVdzaENDQUdRUUZMSVFZRFFDQURLQUlBSWdORkRRRWdCQ0FES0FJRUlnVkhCRUFDUUNBR1JRUkFJQVVnQ0hFaEJRd0JDeUFDSUFWTERRQWdCU0FDY0NFRkN5QUFJQVZHRFFFTUFnc2dBeWdDRENJS0tBSUlJQVJIRFFBTERBRUxJQWRCc0FOcUlnSVE4UXNpQ2lBTUtBSU1FTE1hSUFJZ0NoQW9JQUlnQWlnQ0dFRUJhallDR0FKQUlBY29BdEFESWdKRkRRQUNRQ0FDYVNJR1FRRk5CRUFnQWtFQmF5QUVjU0VBREFFTElBSWdCQ0lBU3cwQUlBUWdBbkFoQUFzZ0NTZ0NBQ0FBUVFKMGFpZ0NBQ0lEUlEwQUlBSkJBV3NoQ0NBR1FRRkxJUVlEUUNBREtBSUFJZ05GRFFFZ0JDQURLQUlFSWdWSEJFQUNRQ0FHUlFSQUlBVWdDSEVoQlF3QkN5QUNJQVZMRFFBZ0JTQUNjQ0VGQ3lBQUlBVkhEUUlMSUFNb0Fnd29BZ2dnQ2lnQ0NFY05BQXNNQVF0QkVCQVZJZ3NnQkRZQ0JDQUxJQVN0SUFxdFFpQ0doRGNDQ0NBTFFRQTJBZ0FnQjBIVUEyb2hEUUpBUVFBZ0FpQUhLQUxZQTBFQmFyTWlGU0FIS2dMY0F5SVdJQUt6bEY0YkRRQkJBaUVBQWtBZ0FpQUNRUUZyY1VFQVJ5QUNRUU5KY2lBQ1FRRjBjaUlEQW44Z0ZTQVdsWTBpRlVNQUFJQlBYU0FWUXdBQUFBQmdjUVJBSUJXcERBRUxRUUFMSWdZZ0F5QUdTeHNpQTBFQlJnMEFJQU1nQTBFQmEzRkZCRUFnQXlFQURBRUxJQU1RZnlFQUlBY29BdEFESVFJTEFrQUNRQUpBSUFBZ0FrMEVRQ0FBSUFKUERRTWdBa0VEU1NFR0FuOGdCeWdDMkFPeklBY3FBdHdEbFkwaUZVTUFBSUJQWFNBVlF3QUFBQUJnY1FSQUlCV3BEQUVMUVFBTElRTWdBaUFBSUFZZ0FtbEJBVXR5Qkg4Z0F4Qi9CU0FEUVFGQklDQURRUUZyWjJ0MElBTkJBa2tiQ3lJRElBQWdBMHNiSWdCTkJFQWdCeWdDMEFNaEFnd0VDeUFBUlEwQkN5QUFRWUNBZ0lBRVNRUkFJQWtnQUVFQ2RCQVZFR3dnQnlBQU5nTFFBMEVBSVFNRFFDQUFJQU5HQkVBZ0J5Z0MxQU1pQlVVTkJBVWdDU2dDQUNBRFFRSjBha0VBTmdJQUlBTkJBV29oQXd3QkN3c2dCU2dDQkNFR0FrQWdBR2tpQWtFQlRRUkFJQVlnQUVFQmEzRWhCZ3dCQ3lBQUlBWkxEUUFnQmlBQWNDRUdDeUFKS0FJQUlBWkJBblJxSUEwMkFnQWdBRUVCYXlFUklBSkJBVXNoRWdOQUlBVW9BZ0FpQ0VVTkF5QUlLQUlFSVFJQ1FDQVNSUVJBSUFJZ0VYRWhBZ3dCQ3lBQUlBSkxEUUFnQWlBQWNDRUNDd0pBSUFJZ0JrWU5BQ0FJSVFNZ0FrRUNkQ0lQSUFrb0FnQnFJaEFvQWdCRkJFQWdFQ0FGTmdJQUlBSWhCZ3dCQ3dOQUlBTWlBaWdDQUNJREJFQWdDQ2dDRENnQ0NDQURLQUlNS0FJSVJnMEJDd3NnQlNBRE5nSUFJQUlnQ1NnQ0FDQVBhaWdDQUNnQ0FEWUNBQ0FKS0FJQUlBOXFLQUlBSUFnMkFnQU1BUXNnQ0NFRkRBQUxBQXNNQ0F0QkFDRUNJQWxCQUJCc0lBZEJBRFlDMEFNTUFRc2dBQ0VDQ3lBQ0lBSkJBV3NpQUhGRkJFQWdBQ0FFY1NFQURBRUxJQUlnQkVzRVFDQUVJUUFNQVFzZ0JDQUNjQ0VBQ3dKQUFrQWdDU2dDQUNBQVFRSjBhaUlBS0FJQUlnTkZCRUFnQ3lBSEtBTFVBellDQUNBSElBczJBdFFESUFBZ0RUWUNBQ0FMS0FJQUlnQkZEUUlnQUNnQ0JDRURBa0FnQWlBQ1FRRnJJZ0J4UlFSQUlBQWdBM0VoQXd3QkN5QUNJQU5MRFFBZ0F5QUNjQ0VEQ3lBSktBSUFJQU5CQW5ScUlRTU1BUXNnQ3lBREtBSUFOZ0lBQ3lBRElBczJBZ0FMSUFjZ0J5Z0MyQU5CQVdvMkF0Z0RDeUFNUVNCcUpBQWdDZ3NoQkNBT0lBRTJBZ2dqQUVFZ2F5SUFKQUFnQUNBT1FRaHFJZ0UyQWhBZ0FFRVlhaUFVSUFFZ0FFRVFhaENERHlBQUtBSVlJUUVnQUVFZ2FpUUFJQUVnQkRZQ0RBc0xJQTVCSUdva0FDQUVEd3NRK3dFQUN3a0FJQUFvQWdBUVlBdS9BUUVFZnlBQUxRQnNRUVJ4UlFSQUl3QkJFR3NpQXlRQUlBTWdBQ2dDR0RZQ0JFRVlFQlVoQWlBREtBSUVJUVFnQWtJQU53SUFJQUlnQkRZQ0ZDQUNRWUNBZ1B3RE5nSVFJQUpDQURjQ0NBSkFJQUlvQWhRaUFVVU5BQ0FCUVlnRmFpRUVJQUZCakFWcUlRRURRQ0FCS0FJQUlnRWdCRVlOQVNBQ0lBRVE3UmNnQVVFRWFpRUJEQUFMQUFzZ0EwRUFOZ0lJSUFCQlBHb2dBaEQrR0NBRFFRaHFFUDBZSUFBZ0FDZ0NiRUVFY2pZQ2JDQURRUkJxSkFBTElBQW9BandMcGlvQkVYOGdBQzBBYlVHQUFYRkZCRUFqQUVFUWF5SU5KQUFnRFNBQU5nSUVRZmdBRUJVaEJTQU5LQUlFSVFZZ0JVSUFOd0lJSUFVZ0JqWUNCQ0FGSUFCQklHbzJBZ0FnQlVJQU53SWNJQVZDQURjQ01DQUZRZ0EzQWtRZ0JVSUFOd0prSUFWQ0FEY0NFQ0FGUVlDQWdQd0ROZ0lZSUFWQ0FEY0NKQ0FGUVlDQWdQd0ROZ0lzSUFWQ0FEY0NPQ0FGUVVCclFZQ0FnUHdETmdJQUlBVkNBRGNDVENBRlFnQTNBbFFnQlVLQWdJQ0FnSUNBd0Q4M0Fsd2dCVUlBTndKc0lBVkJnSUNBL0FNMkFuUWdCaWdDR0NFQkl3QkJJR3NpQ1NRQUlBbEJFR29nQVJERkZ5QUZRZVFBYWlFQ0lBa29BaFFoQXlBSktBSVFJUVlEUUNBRElBWkdCRUFDUUNBSlFSQnFJZ1lRTWhvZ0JpQUJFTVlYSUFrb0FoUWhFQ0FKS0FJUUlRWURRQ0FHSUJCR0JFQWdDVUVRYWhBeUdpQUZLQUpFSWdZZ0JTZ0NTQ0lDUmcwQ0FrQUNRQU5BQWtBZ0FpQUdSZ1JBSUFVb0FrZ2hBaUFGS0FKRUlRWU1BUXNnQmlnQ0JDZ0NFRUVVUmdSQUlBVWdCaWdDQUJEcEFTSUJSUTBFSUFFZ0FTZ0NBQ2dDZkJFQUFDSUJSUTBESUFZb0FnUWlBeUFES0FJQUtBSzBBUkVBQUNBQk5nSWNDeUFHUVFocUlRWU1BUXNMQTBBZ0FpQUdSd1JBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCaWdDQkNJQktBSVFRUWxyRGdZQUFRSUdBd1FHQ3lBQklBRW9BZ0FvQWx3UkFBQW9BaFFpQXlBREtBSUFLQUs0QVJFQUFDSURSUTBGSUFFZ0FTZ0NBQ2dDWEJFQUFDQURLQUljRUlRRkRBVUxJQUVnQVNnQ0FDZ0NaQkVBQUNnQ0ZDSURJQU1vQWdBb0FyZ0JFUUFBSWdORkRRUWdBU0FCS0FJQUtBSmtFUUFBSUFNb0Fod1FoQVVNQkFzZ0FTQUJLQUlBS0FKc0VRQUFJZ0VvQWhRaEJDQUJLQUlZSVFFRFFDQUJJQVJHRFFRZ0JDZ0NBQ0lESUFNb0FnQW9BcmdCRVFBQUJFQWdCQ0FFS0FJQUlnTWdBeWdDQUNnQ3VBRVJBQUFvQWh3aUF6WUNBQ0FEUlEwRUN5QUVRUVJxSVFRTUFBc0FDeUFCSUFFb0FnQW9BbndSQUFBb0FoUWlBeUFES0FJQUtBSzRBUkVBQUNJRFJRMENJQUVnQVNnQ0FDZ0NmQkVBQUNBREtBSWNFSVFGREFJTElBRWdBU2dDQUNnQ2hBRVJBQUFpQVNnQ0ZDSURJQU1vQWdBb0FyZ0JFUUFBSWdNRVFDQUJJQU1vQWh3UWhBVUxJQUVvQWh3aEF5QUJLQUlZSVFRRFFDQURJQVJHRFFJZ0JDZ0NBQ0lCSUFFb0FnQW9BcmdCRVFBQUJFQWdCQ0FFS0FJQUlnRWdBU2dDQUNnQ3VBRVJBQUFvQWh3MkFnQUxJQVJCQkdvaEJBd0FDd0FMUWYvdkEwSEdwUUpCeUFkQmw1Y0JFQUFBQ3lBR1FRaHFJUVlNQVFzTElBVW9Ba2doQWlBRktBSkVJUVlEUUNBQ0lBWkdCRUFnQlVIUUFHb2hDeUFGS0FKSUlRTURRQ0FGS0FKRUlRSkJBQ0VFQTBBZ0FpQURSZ1JBSUFSQkFYRU5BaUFGUVJ4cUlRY2dCVUVJYWlFQklBVkJNR29oQ0NBRktBSkVJUVFEUUFKQUFrQWdBeUFFUmdSQUlBVkIyQUJxSVFZTUFRc2dCQ2dDQkNJR1JRMEJJQVlnQmlnQ0FDZ0N0QUVSQUFBTkFTQUVRUVJxSVFJZ0NVRVFhaUFGS0FJRUVONElJQVFvQWdBUTJ3b2dDU2dDRkNFS0lBa29BaEFoQmdOQUlBWWdDa1lFUUNBSlFRaHFJQWdnQWhEQkFpQUpLQUlJS0FJSUlRSWdDU0FFS0FJQU5nSUVJQUVnQ1VFRWFpSUdFTkFCSUFJMkFnQWdCQ2dDQUNFQ0lBa2dDU2dDQ0NnQ0NEWUNCQ0FISUFZUW53NGdBallDQUNBSklBUW9BZ0EyQWdRZ0N5QUdFTmNISUFsQkVHb1FNaG9NQXdVZ0JTQUdLQUlBSUFJb0FnQVF4QmNnQmtFRWFpRUdEQUVMQUFzQUN3TkFJQVlvQWdBaUJnUkFJQVlvQWd3aEFpQUJJQVpCQ0dvUTBBRWdBallDQUF3QkN3c2dCVUU0YWlJQklRSURRQ0FDS0FJQUlnSkZEUXdnQVNFR0EwQWdCaWdDQUNJR1JRMEJJQUlvQWdnaUF5QUdLQUlJSWdSR0RRQWdBeUFFRUw0SFJRMEFDd3RCNTdZSlFjYWxBa0dxQVVHQXVnRVFBQUFMSUFSQkNHb2hCQXdBQ3dBRkFrQWdBaUlHS0FJRUlnZEZEUUFEUUNBR1FRaHFJZ0VnQTBZTkFRSkFJQVlvQWd3aUNFVU5BQ0FISUFnUXZnZEZEUUFDUUNBSUtBSVFJQWNvQWhCR0JFQWdCU2dDU0NFS0lBVW9Ba1FoQkFOQUFrQWdCQ0FLUndSQUlBUW9BZ1FpQTBVTkFRSkFBa0FDUUFKQUFrQWdBeWdDRUVFSmF3NEdBQUVDQmdNRUJnc2dBeUFES0FJQUtBSmNFUUFBS0FJVUlBaEhEUVVnQXlBREtBSUFLQUpjRVFBQUlBY1FoQVVNQlFzZ0F5QURLQUlBS0FKa0VRQUFLQUlVSUFoSERRUWdBeUFES0FJQUtBSmtFUUFBSUFjUWhBVU1CQXNnQXlBREtBSUFLQUpzRVFBQUlnd29BaFFoQXlBTUtBSVlJUXdEUUNBRElBeEdEUVFnQ0NBREtBSUFSZ1JBSUFNZ0J6WUNBQXNnQTBFRWFpRUREQUFMQUFzZ0F5QURLQUlBS0FKOEVRQUFLQUlVSUFoSERRSWdBeUFES0FJQUtBSjhFUUFBSUFjUWhBVU1BZ3NnQ0NBRElBTW9BZ0FvQW9RQkVRQUFJZ01vQWhSR0JFQWdBeUFIRUlRRkN5QURLQUljSVF3Z0F5Z0NHQ0VEQTBBZ0F5QU1SZzBDSUFnZ0F5Z0NBRVlFUUNBRElBYzJBZ0FMSUFOQkJHb2hBd3dBQ3dBTERBTUxJQVJCQ0dvaEJBd0FDd0FMUWFxaUNVSEdwUUpCNlFkQnNwY0VFQUFBQ3lBR0tBSU1JUU1nQmtFQU5nSU1JQU1FUUNBRElBTW9BZ0FvQWdRUkF3QUxJQWtnQVNnQ0FEWUNFQ0FMSUFsQkVHb1EwQUVnQnpZQ0FFRUJJUVFMSUFVb0FrZ2hBeUFCSVFZTUFBc0FDeUFDUVFocUlRSU1BUXNBQ3dBTEFBc2dCaWdDQkNJQktBSVFRUlJHQkVBZ0JrRUFOZ0lFSUFFZ0FTZ0NBQ2dDQkJFREFBc2dCa0VJYWlFR0RBQUxBQXRCdzc4Q1FjYWxBa0hhQUVHQXVnRVFBQUFMUWZ6N0FFSEdwUUpCMkFCQmdMb0JFQUFBQlNBR0tBSUFJUU5CQUNFRUl3QkI4QUJySWdFa0FBSkFBa0FDUUFKQUlBTW9BaFFRcFE1RkRRQWdBVUVBTmdKc0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU1vQWhRaUFrRVRhdzRWQVFJREJBVUdCd2dKQ2dzTUh4MGNHeG9aR0JjV0FBc2dBa0hDQWtZTkZDQUNRY2NDUmcwVElBSkIrQ0pHRFJFZ0FrR2hLVVlORUNBQ1FkMHBSZzBTSUFKQjdpbEhEUThnQVVFa0VCVWdCU0FEUVFBUU9CRHBBU0FEUVFFUU9DQURRUUlRT0NBRFFRTVFPQkNuRnpZQ2JBd2ZDMEVVRUJVaUFrSUFOd0lFSUFKQjhQUVNOZ0lBSUFKQ0FEY0NEQ0FCSUFJMkFtd01IZ3RCRkJBVklnSkNBRGNDQkNBQ1FmajNFallDQUNBQ1FvQ0FnSUFRTndJTUlBRWdBallDYkF3ZEMwRWNFQlVoQWlBRFFRQVFPQ0VFSUFOQkFSQTRJUWNnQWtLQWdJQ0FJRGNDRENBQ1FnQTNBZ1FnQWlBRU5nSVVJQUpCN0tBVE5nSUFJQUlnQjBFQVJ6b0FHQ0FCSUFJMkFtd01IQXRCR0JBVklRSWdBMEVBRURnaEJDQUNRb0NBZ0lBd053SU1JQUpDQURjQ0JDQUNJQVEyQWhRZ0FrSDBvaE0yQWdBZ0FTQUNOZ0pzREJzTElBRkJIQkFWSUFVZ0EwRUFFRGdRNlFFZ0EwRUJFRGdRdEJjMkFtd01HZ3NnQVVFY0VCVWdCU0FEUVFBUU9CRHBBU0FEUVFFUU9CQ3lGellDYkF3WkMwRUFJUUlnQXhESUFVRUlUd1JBSUFOQkJ4QTRJUUlMSUFGQk1CQVZJQVVnQTBFQUVEZ1E2UUVnQTBFQkVEZ2dBMEVDRURnZ0EwRURFRGhCQVVZZ0EwRUVFRGhCQVVZZ0EwRUZFRGdnQTBFR0VEZ2dBaEN3RnpZQ2JBd1lDMEVVRUJVaUFrSUFOd0lFSUFKQmdQb1NOZ0lBSUFKQ2dJQ0FnUEFBTndJTUlBRWdBallDYkF3WEMwRVlFQlVoQWlBRklBTkJBQkE0RU9rQklRUWdBa0tBZ0lDQWdBRTNBZ3dnQWtJQU53SUVJQUlnQkRZQ0ZDQUNRZnlrRXpZQ0FDQUJJQUkyQW13TUZnc2dBU0FEUVFFUU9EWUNhQ0FGUWVRQWFpQUJRZWdBYWhEUUFTZ0NBQ0lMUlEwRUlBRkJBVFlDVkNBQlFRSTJBaGdnQVNBQlFSaHFOZ0pRSUFFZ0FTa0RVRGNEQUNBQlFkZ0FhaUFCRU9jRElRY2dBVUVBTmdKSUlBRkJBRG9BUndKQUlBc29BaFFpQkVFeVJ3MEFJQVVvQWdRUTNnZ2hCQ0FCSUFGQnh3QnFOZ0l3SUFGQjBJNFROZ0lvSUFFZ0FVRW9haUlPTmdJNElBRWdBVUhJQUdvMkFpd2dBU2dDYUNFS0l3QkJJR3NpQWlRQUlBSWdEallDRENBQ1FmRHZFallDQ0NBQ0lBSkJDR29pRERZQ0dDTUFRUkJySWdna0FDQUlJQVFnQ2hEdkZ5QUlLQUlFSVJFZ0NDZ0NBQ0VFQWtBRFFDQUVJQkZHRFFFQ1FBSkFBa0FDUUFKQUlBUW9BZ0FpQ2lnQ0ZDSVBRY2NBYXc0Q0FRSUFDeUFQUWN3Q1JnMEFJQTlCZ0N4SERRTUxJQXBCQVJBNFFRRkhEUUVnRENBS0VJa0NEUUVNQkFzZ0NrRUNFRGhCQVVjTkFDQU1JQW9RaVFKRkRRTUxJQVJCQkdvaEJBd0JDd3RCM3A4SlFkdWlBa0hnQTBIazJ3SVFBQUFMSUFnUU1ob2dDRUVRYWlRQUlBd1FGaUFDUVNCcUpBQWdEaEFXSUFzb0FoUWhCQ0FCTFFCSFJRMEFJQWNnQVVISUFHb1EzZ0lMQWtBZ0JFRXlSeUFFUVN0SGNVVUVRQ0FISUFjb0FnUWdDMEVDRU5FSElnSW9BaGdpQkNBQ1FReHFJQVFiS0FJQUlBdEJBaERSQjBFRWFoRFFCeERqQ2lBSEtBSUFJZ0lnQVMwQVJ6WUNBQXdCQ3lBSEtBSUFLQUlBUVFKSERRUWdCeUFCUWVnQWFoRGVBaUFIS0FJQUlRSUxJQWNvQWdRZ0FtdEJCRTBOQWlBQklBRW9BbWcyQWhnZ0FVRVlhaUlDUVFSeUlBY1FzQUVoQkNBQlFTZ1FGU0FGSUFOQkFCQTRFT2tCSUFJUXJoYzJBbXdnQVNBRFFRQVFPRFlDRkNBRlFkQUFhaUlDSUFGQkZHb1FxUUlpQ0FSQUlBRWdBeEJnTmdJVUlBVkJ4QUJxSUFGQkZHb2lDeUFCUWV3QWFoQzZCeUFCS0FKc0lRb2dBU0FERUdBMkFoUWdBaUFMRU5BQklBbzJBZ0FnQVNnQ2JCb0xJQVFRTWhvZ0J4QXlHaUFJUlEwVkRCWUxJQUZCR0JBVklBVWdBMEVBRURnUTZRRVFyUmMyQW13Z0FTQURRUUFRT0RZQ0dDQUZRZEFBYWlJQ0lBRkJHR29RcVFKRkRSUWdBU0FERUdBMkFoZ2dCVUhFQUdvZ0FVRVlhaUlFSUFGQjdBQnFFTG9ISUFFb0Ftd2hCeUFCSUFNUVlEWUNHQ0FDSUFRUTBBRWdCellDQUF3U0N5QUJRUUEyQWlBZ0FVSUFOd01ZSUFWQjBBQnFJUWRCQUNFQ0EwQWdBeERJQVNBQ1RRUkFJQUZCTEJBVklBRkJHR29RckJjMkFtd2dCRUVCY1NJQ0JFQWdBU0FERUdBMkFsZ2dCVUhFQUdvZ0FVSFlBR29pQkNBQlFld0FhaEM2QnlBQktBSnNJUWdnQVNBREVHQTJBbGdnQnlBRUVOQUJJQWcyQWdBZ0FTZ0NiQm9MSUFGQkdHb1FNaG9nQWtVTkZRd1dCU0FCSUFNZ0FoQTRJZ2cyQWxnZ0FTQUZJQWdRNlFFMkFtZ2dBa0VCYWlFQ0lBRkJHR29nQVVIb0FHb1EvUUlnQnlBQlFkZ0FhaENwQWtFQVJ5QUVjaUVFREFFTEFBc0FDMEgraEFkQnhxVUNRZXdGUVo3R0FoQUFBQXRCcllJRlFjYWxBa0hwQlVHZXhnSVFBQUFMUWNFdVFjYWxBa0hIQlVHZXhnSVFBQUFMSUFVb0FnQWhBaUFCUVFBMkFpQWdBVUxwQmpjREdDQUNRUUZCeHFVQ0lBRkJHR3BCNUpNRUVNOEVEQThMUVJRUUZTSUNRZ0EzQWdRZ0FrSElqQk0yQWdBZ0FrS0FnSUNBb0FNM0Fnd2dBU0FDTmdKc0RBNExRUlFRRlNJQ1FnQTNBZ1FnQWtIQWloTTJBZ0FnQWtLQWdJQ0FrQU0zQWd3Z0FTQUNOZ0pzREEwTFFSUVFGU0lDUWdBM0FnUWdBa0c0aUJNMkFnQWdBa0tBZ0lDQThBSTNBZ3dnQVNBQ05nSnNEQXdMUVJRUUZTSUNRZ0EzQWdRZ0FrR3doaE0yQWdBZ0FrS0FnSUNBNEFJM0Fnd2dBU0FDTmdKc0RBc0xRUlFRRlNJQ1FnQTNBZ1FnQWtHb2hCTTJBZ0FnQWtLQWdJQ0EwQUkzQWd3Z0FTQUNOZ0pzREFvTElBRWdBMEVBRURnaUJEWUNHRUVnRUJVaEFpQURRUUVRT0NFRElBSkNnSUNBZ01BQ053SU1JQUpDQURjQ0JDQUNRUUEyQWh3Z0FpQUROZ0lZSUFJZ0JEWUNGQ0FDUVpTckV6WUNBQ0FCSUFJMkFtd2dCVUhFQUdvZ0FVRVlhaUlDSUFGQjdBQnFFTG9ISUFFb0Ftd2hBeUFGUWRBQWFpQUNFTkFCSUFNMkFnQU1Cd3RCR0JBVklRSWdBMEVBRURnaEJDQUNRb0NBZ0lDd0FqY0NEQ0FDUWdBM0FnUWdBaUFFTmdJVUlBSkJqS2tUTmdJQUlBRWdBallDYkF3SUMwRVVFQlVpQWtJQU53SUVJQUpCb0lJVE5nSUFJQUpDZ0lDQWdLQUNOd0lNSUFFZ0FqWUNiQXdIQzBFVUVCVWlBa0lBTndJRUlBSkJtSUFUTmdJQUlBSkNnSUNBZ0pBQ053SU1JQUVnQWpZQ2JBd0dDMEVVRUJVaUFrSUFOd0lFSUFKQmtQNFNOZ0lBSUFKQ2dJQ0FnSUFDTndJTUlBRWdBallDYkF3RkMwRVVFQlVpQWtJQU53SUVJQUpCaVB3U05nSUFJQUpDZ0lDQWdQQUJOd0lNSUFFZ0FqWUNiQXdFQ3lBQklBTkJBQkE0TmdKWUlBVkIwQUJxSWdjZ0FVSFlBR29RcVFJaEFpQUZJQUVvQWxnUTZRRWhDQ0FCUVFBMkFpQWdBVUlBTndNWUlBSkJBRWNoQkVFQklRSURRQ0FERU1nQklBSk5CRUFnQVVFa0VCVWdDQ0FCUVJocUVLa1hOZ0pzSUFSQkFYRWlBZ1JBSUFFZ0F4QmdOZ0pvSUFWQnhBQnFJQUZCNkFCcUlnUWdBVUhzQUdvUXVnY2dBU2dDYkNFSUlBRWdBeEJnTmdKb0lBY2dCQkRRQVNBSU5nSUFJQUVvQW13YUN5QUJRUmhxRURJYUlBSkZEUVVNQmdVZ0FTQURJQUlRT0NJTE5nSm9JQUVnQlNBTEVPa0JOZ0pJSUFKQkFXb2hBaUFCUVJocUlBRkJ5QUJxRVAwQ0lBY2dBVUhvQUdvUXFRSkJBRWNnQkhJaEJBd0JDd0FMQUFzZ0FTQURRUUVRT0NJQ05nSVlJQUZCSEJBVklBVWdBaERwQVNBRFFRQVFPQkNXRGpZQ2JDQUZRZEFBYWlJQ0lBRkJHR29RcVFKRkJFQWdBU0FERUdBMkFsZ2dBaUFCUWRnQWFoRFhCd3dEQ3lBQklBTVFZRFlDV0NBRlFjUUFhaUFCUWRnQWFpSUVJQUZCN0FCcUVMb0hJQUVvQW13aEJ5QUJJQU1RWURZQ1dDQUNJQVFRMEFFZ0J6WUNBQXNnQVNnQ2JCb01BZ3RCSUJBVklRSWdBVUVJYWlJRUlBTkJBQkNQQlJDL0JpQUNRZ0EzQWdRZ0FrS0FnSUNBd0FFM0Fnd2dBa0dFcHhNMkFnQWdBaUFFS1FJQU53SVVJQUlnQkNnQ0NEWUNIQ0FFRUZVZ0FTQUNOZ0pzSUFRUUR4b0xJQUVnQXhCZ0lnSTJBbWdnQWtVTkFTQUJLQUpzUlEwQ0lBRkJHR29nQlNnQ0JCRGVDQ0FDRU5zS0lBRW9BaHdoQWlBQktBSVlJUVFEUUNBQ0lBUkdCRUFnQVNBQktBSnNOZ0pJSUFGQjJBQnFJQVZCTUdvZ0FVSElBR29Rd1FJZ0FTZ0NXQ2dDQ0NFQ0lBVkJDR29nQVVIb0FHb1EwQUVnQWpZQ0FDQUJLQUpvSVFJZ0FTQUJLQUpZS0FJSU5nSVVJQVZCSEdvZ0FVRVVhaENmRGlBQ05nSUFJQUVvQWtnaEFpQUJRUUEyQWtnZ0FTZ0NiQm9nQWdSQUlBSWdBaWdDQUNnQ0JCRURBQXNnQVVFWWFoQXlHZ1VnQlNBRUtBSUFJQUVvQW13UXhCY2dCRUVFYWlFRURBRUxDd3NnQVVId0FHb2tBQXdDQ3lBRktBSUFJUUFnQVVFQU5nSWdJQUZDN2dZM0F4Z2dBRUVCUWNhbEFpQUJRUmhxUWRIbUJCRFBCRUVCRUFNQUN5QUZLQUlBSVFBZ0FVRUFOZ0lnSUFGQzhBWTNBeGdnQUVFQlFjYWxBaUFCUVJocVFmZzhFTThFUVFFUUF3QUxJQVpCQkdvaEJnd0JDd0FMQUFzRklBa2dCaWdDQUNJRUVHQTJBZ2dnQWlBSlFRaHFFTkFCSUFRMkFnQWdCa0VFYWlFR0RBRUxDeUFKUVNCcUpBQWdEVUVBTmdJSUlBQkJ6QUZxSUFVUWdCa2dEVUVJYWhEL0dDQUFJQUFvQW14QmdJQUNjallDYkNBTlFSQnFKQUFMSUFBb0Fzd0JDN2dDQWdSL0FuNENRQUpBQWtBQ1FDQUREZ01DQWdBQkN5QUJRUWhySWdFcEF3QWlDaUFBS1FNQUlndGFEUUVnQUNBS053TUFJQUVnQ3pjREFBOExJQU5CZ0FGTUJFQUNRQ0FBSWdJZ0FTSUVSZzBBSUFJaEFRTkFJQUZCQ0dvaUFTQUVSZzBCSUFFcEF3QWhDaUFCSVFBRFFBSkFBa0FnQUNBQ1JnUkFJQUloQUF3QkN5QUtJQUJCQ0dzaUF5a0RBQ0lMVkEwQkN5QUFJQW8zQXdBTUFnc2dBQ0FMTndNQUlBTWhBQXdBQ3dBTEFBc1BDeUFESUFOQkFYWWlCMnNoQ0NBQUlBZEJBM1FpQ1dvaEJpQURJQVZLRFFFZ0FDQUdJQUlnQnlBRUVLMFpJQVlnQVNBQ0lBZ2dCQ0FKYWlJQkVLMFpJQVFnQVNBQklBUWdBMEVEZEdvZ0FCQ3NHUXNQQ3lBQUlBWWdBaUFISUFRZ0JSRGdDQ0FHSUFFZ0FpQUlJQVFnQlJEZ0NDQUFJQVlnQVNBQ0lBY2dDQ0FFSUFVUWdBOExDZ0FnQUVIWTlnOFFTQXRJQVFGL1FSQVFGU0VFSUFBZ0FVRUlhallDQkNBQUlBUTJBZ0FnQXlnQ0FDZ0NBQ0VCSUFSQkFEWUNEQ0FFSUFFMkFnZ2dBRUVCT2dBSUlBUkJBRFlDQUNBRUlBSTJBZ1FMRGdBZ0FDQUJLQUlBSUFJUWxSa0xRd0VCZlNBQktnSUFJUUlqQUVFUWF5SUJKQUFnQVNBQ3V6a0RDQ0FCUVFFMkFnUWdBQ0FBUWRnQ2FpQUJRUWhxSUFGQkJHb1ErZ29oQUNBQlFSQnFKQUFnQUFzTkFDQUFJQUVnQWtFUEVOa0pDNnNCQVFKL0l3QkJNR3NpQXlRQUFrQUNRQUpBSUFJb0FnQWlCRVVOQUNBQ0tBSUVSUTBBSUFRb0FnUkI0TXNTUncwQkN5QUFJQUlRV3hvTUFRc2dBU2dDQkJEc0F5RUVJQU1nQVNnQ0NDSUJRUVJxRUxRTE5nSW9JQUlvQWdRaEFpQURRUUUyQWhRZ0F5QUNOZ0lNSUFNZ0EwRU1hallDRUNBRElBTXBBeEEzQXdBZ0FDQUVJQUVnQTBFb2FpQURRUmhxSUFNUWx3SWlBQkNMQ3hCcEdpQUFFS2dCQ3lBRFFUQnFKQUFMTmdFQmZ5TUFRUkJySWdNa0FDQURJQUFnQVJEQ0JqWUNEQ0FBSUFCQjJBSnFJQU5CREdvZ0FoQ2lDeUVBSUFOQkVHb2tBQ0FBQ3hJQUlBQW9BZ2dnQVNBQ0lBTWdCQkRWR1F2TEF3RUVmd0pBQWtBQ1FDQUNEZ01DQWdBQkN5QUJRUVJySWdFb0FnQWlBaWdDQ0NBQUtBSUFJZ01vQWdoUERRRWdBQ0FDTmdJQUlBRWdBellDQUF3QkN5QUNRWUFCVEFSQUlBQWdBVVlOQVNBQUlRSURRQ0FDUVFScUlnSWdBVVlOQWlBQ0tBSUFJUVVnQWlFREEwQUNRQUpBSUFBZ0EwWUVRQ0FBSVFNTUFRc2dCU2dDQ0NBRFFRUnJJZ1FvQWdBaUJpZ0NDRWtOQVFzZ0F5QUZOZ0lBREFJTElBTWdCallDQUNBRUlRTU1BQXNBQ3dBTElBSWdBa0VCZGlJR2F5RUhJQUFnQmtFQ2RDSUlhaUVGSUFJZ0JFd0VRQ0FBSUFVZ0JpQURFSzRaSUFVZ0FTQUhJQU1nQ0dvaUFSQ3VHU0FESUFKQkFuUnFJUVFnQVNFQ0EwQWdBU0FEUmdSQUEwQWdBaUFFUmcwRUlBQWdBaWdDQURZQ0FDQUFRUVJxSVFBZ0FrRUVhaUVDREFBTEFBc2dBaUFFUmdSQUEwQWdBU0FEUmcwRUlBQWdBeWdDQURZQ0FDQUFRUVJxSVFBZ0EwRUVhaUVEREFBTEFBVUNRQ0FDS0FJQUlnVW9BZ2dnQXlnQ0FDSUdLQUlJU1FSQUlBQWdCVFlDQUNBQ1FRUnFJUUlNQVFzZ0FDQUdOZ0lBSUFOQkJHb2hBd3NnQUVFRWFpRUFEQUVMQUFzQUN5QUFJQVVnQmlBRElBUVE2UWdnQlNBQklBY2dBeUFFRU9rSUlBQWdCU0FCSUFZZ0J5QURJQVFRZ1E4TEMrVURBZ1YvQVg0akFFRVFheUlISkFBQ1FBSkFBa0FnQXc0REFnSUFBUXNnQWlBQlFRaHJJZ0VnQUJEb0EwVU5BU0FBS1FJQUlRc2dBQ0FCS1FJQU53SUFJQUVnQ3pjQ0FBd0JDeUFEUVlBQlRBUkFJQUFnQVVZTkFTQUFJUVVEUUNBRlFRaHFJZ1VnQVVZTkFpQUhJQVVwQWdBM0F3Z2dCU0VFQTBBQ1FBSkFJQUFnQkVZRVFDQUFJUVFNQVFzZ0FpQUhRUWhxSUFSQkNHc2lBeERvQXcwQkN5QUVJQWNwQXdnM0FnQU1BZ3NnQkNBREtRSUFOd0lBSUFNaEJBd0FDd0FMQUFzZ0F5QURRUUYySWdocklRa2dBQ0FJUVFOMElncHFJUVlnQXlBRlRBUkFJQUFnQmlBQ0lBZ2dCQkNwR1NBR0lBRWdBaUFKSUFRZ0Ntb2lBUkNwR1NBRUlBTkJBM1JxSVFVZ0FTRURBMEFnQVNBRVJnUkFBMEFnQXlBRlJnMEVJQUFnQXlrQ0FEY0NBQ0FBUVFocUlRQWdBMEVJYWlFRERBQUxBQXNnQXlBRlJnUkFBMEFnQVNBRVJnMEVJQUFnQkNrQ0FEY0NBQ0FBUVFocUlRQWdCRUVJYWlFRURBQUxBQVVDUUNBQ0lBTWdCQkRvQXdSQUlBQWdBeWtDQURjQ0FDQURRUWhxSVFNTUFRc2dBQ0FFS1FJQU53SUFJQVJCQ0dvaEJBc2dBRUVJYWlFQURBRUxBQXNBQ3lBQUlBWWdBaUFJSUFRZ0JSRHFDQ0FHSUFFZ0FpQUpJQVFnQlJEcUNDQUFJQVlnQVNBQ0lBZ2dDU0FFSUFVUS93NExJQWRCRUdva0FBdlpBd0VFZndKQUFrQUNRQ0FERGdNQ0FnQUJDeUFDSUFGQkJHc2lBU2dDQUNBQUtBSUFFT2tEUlEwQklBQW9BZ0FoQWlBQUlBRW9BZ0EyQWdBZ0FTQUNOZ0lBREFFTElBTkJnQUZNQkVBZ0FDQUJSZzBCSUFBaEF3TkFJQU5CQkdvaUF5QUJSZzBDSUFNb0FnQWhCaUFESVFRRFFBSkFBa0FnQUNBRVJnUkFJQUFoQkF3QkN5QUNJQVlnQkVFRWF5SUZLQUlBRU9rRERRRUxJQVFnQmpZQ0FBd0NDeUFFSUFVb0FnQTJBZ0FnQlNFRURBQUxBQXNBQ3lBRElBTkJBWFlpQjJzaENDQUFJQWRCQW5RaUNXb2hCaUFESUFWTUJFQWdBQ0FHSUFJZ0J5QUVFTGdaSUFZZ0FTQUNJQWdnQkNBSmFpSUJFTGdaSUFRZ0EwRUNkR29oQlNBQklRTURRQ0FCSUFSR0JFQURRQ0FESUFWR0RRUWdBQ0FES0FJQU5nSUFJQUJCQkdvaEFDQURRUVJxSVFNTUFBc0FDeUFESUFWR0JFQURRQ0FCSUFSR0RRUWdBQ0FFS0FJQU5nSUFJQUJCQkdvaEFDQUVRUVJxSVFRTUFBc0FCUUpBSUFJZ0F5Z0NBQ0FFS0FJQUVPa0RCRUFnQUNBREtBSUFOZ0lBSUFOQkJHb2hBd3dCQ3lBQUlBUW9BZ0EyQWdBZ0JFRUVhaUVFQ3lBQVFRUnFJUUFNQVFzQUN3QUxJQUFnQmlBQ0lBY2dCQ0FGRU9zSUlBWWdBU0FDSUFnZ0JDQUZFT3NJSUFBZ0JpQUJJQUlnQnlBSUlBUWdCUkNDRHdzTHVPa0JBekovQVg0Q2ZTTUFRWUFJYXlJTUpBQUNmMEVCSUFJdEFBQU5BQm9nREVIb0FHb2lCRUtBZ0lDQXdBQTNBaFFnQkNBRU5nSVFJQVFnQVVHd0FXb1FzaDBnQkNnQ0VDRUlJQVFvQWhRaEJ5QU1JQUEyQXVnR0lBeEJBRFlDMkFjZ0IwR0JBVTRFUUNBTVFaQUZhaUFIRVBVWklBd29BcFFGSVFVZ0RFSFlCMm9nRENnQ2tBVWlBeEJzQ3lBSUlBZ2dCMEVDZEdvZ0RFSG9CbW9nQnlBRElBVVE2d2dnREVIWUIyb1Fpd0VnREVHUUJXb2dCQkMwSFNFRElBUVFYaUFBUWNBR2FpRUZJQU1vQWhBaUJDQURLQUlVUVFKMGFpRUpJQXhCZ0FGcUlRMERRQUpBSUFRZ0NVWUVRQ0FERUY0Z0FTZ0NBQ0lEUVF4cUlTc2dBMEVRYWlFRUlBTVExd1FoTENBREVPWUtJUzBNQVFzZ0RDQUVLQUlBSWdjMkF0Z0hJQUFvQWhBZ0J4Q1VBU0lIUlFSQUlBeEI2QUJxUWJtaEJVR1pHa0VISUF4QjZBWnFFQjBpQ0JBWElRb2dEVUhabXdnUURob2dDaEFZSUFnUUhnc2dBQ2dDQUNBSEVIcEJBQkNGQVNFSElBeEJBRFlDZUNBTVFnQTNBM0FnREVJQU53Tm9JQUFvQWdBaENpQU1RZ0EzQTZBSElBeENBRGNEcUFjZ0RFSUFOd093QnlBTVFnQTNBNWdISUF4Q0FEY0R5QWNnREVLQWdJQ0FnQUUzQXJ3SElBd2dERUdZQjJvaUNEWUN1QWNnRENBS0lBd29BdGdIUVFCQkFDQUhRUUFnQ0JENUNqWUM2QVlnQUNBQUlBeEI2QUJxSWdvZ0RFSG9CbW9pQmhDU0N4REpBUm9nQ0JBaklBd2dBQ2dDQkNBSFFRQkJBQkNiQ3pZQzZBWWdDaUFGSUF4QjJBZHFJQVlRN2dnZ0JFRUVhaUVFREFFTEN3SkFBMEFnQkNnQ0FDSUlJQ3RHRFFFQ1FBSkFJQWdnTEVZZ0NDQXRSbklOQUNBSUtBSVVJZ05CTzBZZ0EwSDRBVVp5RFFCQkFDRUhJd0JCb0FKcklnMGtBQUpBSUFBb0Fod29BZ0F0QUFCRkRRQWdDQkJnSVNJQ1FDQUlFSG9pQTBVTkFDQUFLQUlBSWdRb0FxQUdJQU5HQkVBZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBHcHJ3d1FHU0VFSUExQjZBQnFJZ01nQ0JCWUlBUWdBeEJOS0FJQUxRQUFRUUJISVFjZ0F4QVBHZ3dDQ3lBRElBUW9BckFHUncwQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQjNLNE1FQmtoQkNBTlFlZ0FhaUlESUFnUVdDQUVJQU1RVFNnQ0FDMEFBRUVBUnlFSElBTVFEeG9NQVFzQ1FBSkFJQUFnSWhDVUFpSVlSUVJBSUFBb0Fod2hCQXdCQ3lBTlFaZ0NhaEJuSVJ4QkFTRUhJQmdvQWpRTkFpQU5RZWdBYWlFS1FRQWhCa0VBSVFSQkFDRVFJd0JCa0FGcklna2tBQUpBSUFnUVlFVUVRQ0FLRUdjYURBRUxJQWdvQWhRaEJRSkFJQWdRZWtVTkFDQUFLQUlBSUFnUWVrRUFFSVVCSWdRTkFDQUFLQUljSWdNb0FnQkJBRG9BQUNBRFFaSHpDeEFaSVFRZ0NVRXdhaUlESUFnUVdDQUVJQU1RVFJvZ0F4QVBHaUFLRUdjYURBRUxRUTRoQXdKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUZRWUFCYXc1SURRMEFBQUVCQWdJQ0F3NERBdzRCQVFFQkFRNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0JBVUlCdzRPQkFVSkNRb0tDd3NNREFRT0JRNExEZ2tPREE0S0RnNE9EZzRPQ0FZSERndEJEeUVEREF3TFFSQWhBd3dMQzBFUklRTU1DZ3RCRWlFRERBa0xRUVloQXd3SUMwRUhJUU1NQnd0QkF5RUREQVlMUVFFaEF3d0ZDMEVDSVFNTUJBdEJDU0VEREFNTFFRc2hBd3dDQzBFSUlRTU1BUXRCQ2lFREN5QUpJQU0yQW93QklBbEJnQUZxSUFBZ0NFRUFFRzRnQUNnQ0FDRU9JQWtvQW9BQklRWWdDVUV3YWlJRklBQWdDRUVCRUc0Z0NVSDRBR29oQ3lNQVFTQnJJZ01rQUFKQUFrQWdCaER1QXlJR0lBVW9BZ0FRN2dOR0RRQWdDQ2dDRkNJUFFhb0JheUlRUVIxTlFRQkJBU0FRZEVHRGdJREFBM0ViUlFSQUlBOUJnQUZySWc5QkJFdEJBU0FQZEVFVmNVVnlEUUVMSUFOQkFEWUNHQ0FEUWdBM0F4QWdBMElBTndNSUlBc2dCaUFPUVNCcUlnc2dBMEVJYWlBR0lBc2dCaWdDQUNnQ0NCRUJBQ0FGUVFScUVOWUVFR2thREFFTElBc2dCUkJiR2dzZ0EwRWdhaVFBQWtBQ1FDQUpLQUtBQVVVTkFDQUpLQUtFQVVVTkFDQUpLQUo0UlEwQUlBa29BbndOQVFzZ0NoQm5HZ3dDQ3lBSlFVQnJRUUEyQWdBZ0NVSUFOd000SUFsQ0FEY0RNQ0FKUVRCcUlnTWdCQ0FBSUFNZ0NVR01BV29nQ1VHQUFXcEJCSElnQ1VINEFHcEJCSElRNkFnUWFTRURJQW9nQUNnQ0FDQUpRZkFBYWlBREVGc2dDQ0FKS0FLQUFSQzlCZ3dCQ3lBSlFRQTJBb3dCSUFsQkF6WUNiQUpBSUFrQ2YwRURJQVZCL2dCclFRSkpEUUFhSUFWQnlBRkhCRUFnQlVHb0FVY05Ba0VFREFFTFFRRUxOZ0pzSUFsQmdBRnFJZ01nQUNBSVFRQVFiaUFKUVVCclFRQTJBZ0FnQ1VJQU53TTRJQWxDQURjRE1DQUpRVEJxSWdVZ0JDQUFJQVVnQ1VIc0FHb2dBMEVFY2hEWUJ4QnBJUU1nQ2lBQUtBSUFJQWxCNEFCcUlBTVFXeUFJSUFrb0FvQUJFTDBHREFFTFFjSVRJUU1DUUFKQUFrQUNRQUpBSUFWQm1nRnJEZ1FFQUFFQ0F3dEJ6djRDSVFNTUF3dEJ2dlFDSVFNTUFndEJ4c0VESVFNTUFRc2dCVUhVQUVjRVFDQUZFSTRMSWdOQmYwY0VRQUpBSUFOQkxFY0VRQ0FEUVNGSERRRWpBRUdnQVdzaUF5UUFJQWdvQWhRUWpnc1F5UU1oQkNBRFFRQTJBcGdCSUFOQ0FEY0RrQUVnQTBJQU53T0lBU0FBS0FJSUlnVVFIQ0FESUFRMkFvQUJJQU1nQkJEY0FUWUNoQUVnQXlBREtRT0FBVGNERUNBRFFTaHFJZ1FnQlVHSUFtb2dBMEVRYWhDWUF5QURJQUFnQTBHSUFXb2lCU0FFRUlvTE5nS2NBU0FEUWZnQWFpQUFJQWhCQUJCdUlBTkI2QUJxSWdZZ0FDQUlRUUVRYmlBRFFmQUFhaUFBSUFZUWlBc2dBMEhZQUdvaUJpQUFJQWhCQWhCdUlBTkI0QUJxSUFBZ0JoQ0lDeUFBS0FJSUlRWWdBMEVETmdJa0lBTWdBeWdDZkRZQ2lBRWdBeUFES0FKME5nS01BU0FESUFNb0FtUTJBcEFCSUFNZ0JUWUNJQ0FESUFNcEF5QTNBd2dnQmlBRFFad0JhaUFFSUFOQkNHb1FzZ2tpQkJDSkN5RUZJQVFRSXdKQUlBQW9BZ0FnQ0JCNlFRQVFoUUVpQkVVRVFDQUFLQUljSWdRb0FnQkJBRG9BQUNBRVFiMkFEQkFaSVFVZ0EwRW9haUlFSUFnUVdDQUZJQVFRVFJvZ0JCQVBHaUFLRUdjYURBRUxJQU5CS0dvZ0JDQUZFR2toQkNBS0lBQW9BZ0FnQTBFWWFpQUVFRnNnQ0NBREtBSjRFTDBHQ3lBRFFhQUJhaVFBREFVTEl3QkJvQUZySWdNa0FDQUlLQUlVRUk0TEVNa0RJUVFnQTBFQU5nS1lBU0FEUWdBM0E1QUJJQU5DQURjRGlBRWdBQ2dDQ0NJRkVCd2dBeUFFTmdLQUFTQURJQVFRM0FFMkFvUUJJQU1nQXlrRGdBRTNBd2dnQTBFZ2FpSUVJQVZCaUFKcUlBTkJDR29RbUFNZ0F5QUFJQU5CaUFGcUlnVWdCQkNLQ3pZQ25BRWdBMEg0QUdvZ0FDQUlRUUFRYmlBRFFmQUFhaUFBSUFoQkFSQnVJQU5CNEFCcUlnWWdBQ0FJUVFJUWJpQURRZWdBYWlBQUlBWVFpQXNnQTBIUUFHb2lCaUFBSUFoQkF4QnVJQU5CMkFCcUlBQWdCaENJQ3lBQUtBSUlJUVlnQTBFRU5nSWNJQU1nQXlnQ2ZEWUNpQUVnQXlBREtBSjBOZ0tNQVNBRElBTW9BbXcyQXBBQklBTWdBeWdDWERZQ2xBRWdBeUFGTmdJWUlBTWdBeWtER0RjREFDQUdJQU5CbkFGcUlBUWdBeEN5Q1NJRUVJa0xJUVVnQkJBakFrQWdBQ2dDQUNBSUVIcEJBQkNGQVNJRVJRUkFJQUFvQWh3aUJDZ0NBRUVBT2dBQUlBUkJ2WUFNRUJraEJTQURRU0JxSWdRZ0NCQllJQVVnQkJCTkdpQUVFQThhSUFvUVp4b01BUXNnQTBFZ2FpQUVJQVVRYVNFRUlBb2dBQ2dDQUNBRFFSQnFJQVFRV3lBSUlBTW9BbmdRdlFZTElBTkJvQUZxSkFBTUJBdEJBQ0VFSXdCQjRBQnJJZ01rQUNBSUtBSVVFSTRMRU1rRElRVWdBMEVBTmdKWUlBTkNBRGNEVUNBRFFnQTNBMGdnQUNnQ0NDSUdFQndnQXlBRk5nSkFJQU1nQlJEY0FUWUNSQ0FESUFNcEEwQTNBd0FnQTBFUWFpSUZJQVpCaUFKcUlBTVFtQU1nQXlBQUlBTkJ5QUJxSWdZZ0JSQ0tDellDWENBRFFvQ0FnSUNBQVRjQ05DQURJQVUyQWpBZ0JrRUVjaUVGUVFBaEJnTkFJQWdReUFFZ0JFMEVRQ0FBS0FJSUlBTkIzQUJxSUFOQkVHb1FpUXNoQkFKQUlBQW9BZ0FnQ0JCNlFRQVFoUUVpQlVVRVFDQUFLQUljSWdRb0FnQkJBRG9BQUNBRVFiMkFEQkFaSVFVZ0EwSElBR29pQkNBSUVGZ2dCU0FFRUUwYUlBUVFEeG9nQ2hCbkdnd0JDeUFEUWNnQWFpQUZJQVFRYVNFRUlBb2dBQ2dDQUNBRFFRaHFJQVFRV3lBSUlBWVF2UVlMSUFOQkVHb1FJeUFEUWVBQWFpUUFCU0FEUWNnQWFpQUFJQWdnQkJCdUlBTW9Ba2doQ3lBRFFSQnFJQVVRSkNBRVFRRnFJUVFnQmlBTElBWWJJUVlNQVFzTERBTUxJQVZCalFGR0JFQWpBRUVnYXlJREpBQWdBMEVZYWlBQUlBaEJBQkJ1SUFOQkVHb2dBQ0FJUVFFUWJnSkFBa0FDUUNBREtBSVlSUTBBSUFNb0FoeEZEUUFnQXlnQ0VFVU5BQ0FES0FJVURRRUxJQW9RWnhvTUFRc2dBeUFBS0FJSUlBTkJHR3BCQkhJaUJDQURRUkJxUVFSeUlnVVExQmsyQWd3Z0F5QUFLQUlJUVpYVUFTQURRUXhxRU9jSU5nSUlJQU1nQUNnQ0NDQUZJQU5CQ0dvUXh3TTJBZ1FnQUNnQ0NDQUVJQU5CQkdvUTVRZ2hCQ0FLSUFNb0FoZ2dCQkJwR2dzZ0EwRWdhaVFBREFNTElBVkJ3UUJyUVFGTkJFQWpBRUh3QVdzaUJTUUFBa0FnQ0JESUFVVUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRYVhCQVJBWkdpQUtFR2NhREFFTElBQWdDRUVBRURnaUF4RHRDQ0lFQkVBZ0FDQUlFR0FRbEFJZ0JEWUNOQ0FBSUFNUWxBSWhBeUFBSUFnUVlCQ1VBa0VrYWlBRFFTUnFFRnNhSUFvUVp4b01BUXNnQUNnQ0VDQURFSlFCRUhvaEJpQUlFTWdCSVJNZ0JVSG9BV29RWnlFTFFRRWhCQ0FBS0FJQUlnNG9BcndHSUFOR0JFQWdBQ2dDRUNBSVFRRVFPQkNVQVNJRVJRUkFJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkI1UHdMRUJraEJDQUZRUWhxSWdNZ0NCQllJQVFnQXhCTkdpQURFQThhSUFvUVp4b01BZ3NnQUNnQ0ZDQUVFSUlZSWdSRkJFQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSFM0UXNRR1NFRUlBVkJDR29pQXlBSUVGZ2dCQ0FERUUwYUlBTVFEeG9nQ2hCbkdnd0NDeUFFSUFRb0FnQW9BamdSQUFBaUJFVUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRYXY0Q3hBWklRUWdCVUVJYWlJRElBZ1FXQ0FFSUFNUVRSb2dBeEFQR2lBS0VHY2FEQUlMSUFVZ0JCQzdEaUkxTndPb0FRSkFJRFVnRGpVQ3BBWlJEUUFDUUNBT05RS29CaUExVVFSQUlBQWdDQkJnRUpRQ0lnUkZEUUlnQkVFRE5nSTBEQUVMSUFBb0Fod2lBeWdDQUVFQU9nQUFJQU5CM2Z3SkVCa2dCVUdvQVdvUS9BNUJvUFFFRUJrYUN5QUtFR2NhREFJTElBNG9BcmdHSVFZZ0JVRUlhaUFBS0FJZ0lBTVFrd0lRVkNFRElBc2dBQ2dDQ0NBREVOSUNOZ0lFSUFzZ0FDZ0NBQ0FHUVFFUWhRRTJBZ0FnQXhBUEdrRUNJUVFMQWtBZ0N5Z0NBQVJBSUFzb0FnUU5BUXNnQlVFSWFpSURJQUFnQ0VFQUVHNGdDeUFERUZzYUlBc29BZ0FvQWdSQitNc1NSdzBBSUFWQkNHb2lBeUFBSUFWQjRBRnFJQXNRV3hEREJpQUxJQU1RV3hvTElBQW9BaFFoRWtFQUlROGpBRUVRYXlJREpBQWdCVUhRQVdvaURrRUFOZ0lJSUE1Q0FEY0NBQ0FPSUFnUXlBRVFxd1FEUUNBSUVNZ0JJQTlMQkVBQ1FDQUlJQThRandVaUVTZ0NBRUVCUndSQUlBTkJBRFlDRENBT0lBTkJER29RL1FJTUFRc2dBeUFTSUJFb0FoZ2lGQ0FSUVF4cUlCUWJLQUlBS0FJQUVKSUZOZ0lJSUE0Z0EwRUlhaERQQVFzZ0QwRUJhaUVQREFFTEN5QURRUkJxSkFBQ1FBSkFJQUFvQWhBZ0JoQ1VBU0lEQkVBZ0F5Z0NGRUVnUmcwQkN5QUFLQUljSWdNb0FnQkJBRG9BQUNBRFFZU2JDUkFaSVFNZ0JTQUlFR0EyQWdnZ0F5QUZRUWhxRUM5QjF2OERFQmthSUFvUVp4b01BUXNnQzBFRWFpRVJJQU5CQUJBNElSUWdCU0FEUVFFUU9DSU9OZ0xNQVNBVElBUWdCQ0FUU1JzaEZTQUZRU0JxSVJZZ0JVR29BV3BCQkhJaEV5QUVJUU1EUUFKL0FrQWdBeUFWUndSQUlBVW9BdEFCSUFOQkFuUnFLQUlBSWdaRkRRRWdCaUFHS0FJQUtBSTRFUUFBSWc5RkRRRUNmZ0pBSUE4b0FnUWlCaUFHS0FJQUtBSW9FUUFBSWdZRVFDQUdLQUlVSWhKQndRQlBEUUVDZmdKQUlBOGdEeWdDQUNnQ09CRUFBQ0lHQkVBZ0VrRWdTdzBCSUFZUWd4aXNEQVVMUWdBZ0R5QVBLQUlBS0FKWUVRQUFEUUVhUWRPeENVRzJtUUpCakFGQjk5VURFQUFBQ3lBR0lBWW9BZ0FvQW1BUkFBQWlEeWdDQkNBUEtBSUFhMEVJUndSQVFiaUZCMEhRcVFOQjBnRkI5TlFERUFBQUN5QUdJQVlvQWdBb0FtQVJBQUFvQWdBMUFnUkNJSVlnQmlBR0tBSUFLQUpnRVFBQUtBSUFOUUlBaEFzTUFndEI5OGNCUWJhWkFrSC9BRUgzMVFNUUFBQUxRY2p6QmtHMm1RSkJnUUZCOTlVREVBQUFDeUUxUVFBTUFnc2dFQVJBSUFBZ0NCQmdFSlFDUVFJMkFqUWdBQ0FJRUdBUWxBSkJKR29nQ3hCYkdnc2dDeUFBSUFzb0FnQWdDQkJnRUl3UE5nSUFJQW9nQ3hCYkdnd0RDMElBSVRWQkFRc2hCaUFGSURVM0E4QUJJQUFvQWhBZ0RoQ1VBU0lQUlFSQUlBQW9BaHdpQmlnQ0FFRUFPZ0FBSUFaQmw1d0pFQmtnQlVITUFXb1FMMEhwcVFvUUdTRUdJQVVnQXlBRWF6WUNxQUVnQmlBRlFhZ0JhaEF2UVpmc0N4QVpJUVFnQlVFSWFpSURJQWdRV0NBRUlBTVFUUm9nQXhBUEdpQUtFR2NhREFJTEFrQUNRQUpBQWtBQ1FDQVBLQUlVUVJkckRnZ0FBd0lDQWdNREFRSUxBbjhnQmtVRVFDQUZJQTlCQVJBNElnWTJBcWdCSUFVcEE4QUJJalVnQnExVUJFQWdOVUlFV2dSQUlBQW9BaHdpQmlnQ0FFRUFPZ0FBSUFaQjFNTUpFQmtnQlVIQUFXb1FoUTlCNjlzSkVCa2hCaUFGUVFNMkFnZ2dCaUFGUVFocUVDOGFJQVVwQThBQklUVUxJQVZCQURZQ0dDQUZRZ0EzQXhBZ0JVSUFOd01JSUFVZ0FDQTFweERoQlRZQ3ZBRWdBQ0FGUVFocUlCRWdCVUc4QVdvUWxBVU1BZ3NnQUNnQ0hDSUVLQUlBUVFBNkFBQWdCRUdFbXdrUUdTRUVJQVVnQ0JCZ05nSUlJQVFnQlVFSWFoQXZRZnVhQ1JBWklRUWdCU0FJSUFNUU9EWUN2QUVnQkNBRlFid0JhaEF2UWRPMUNoQVpJQVZCd0FGcUVJVVBRWUd1Q2hBWklBVkJxQUZxRUM5QjhvY0JFQmthSUFvUVp4b01Cd3NnQlVFQU5nSVlJQVZDQURjREVDQUZRZ0EzQXdnZ0JVR29BV29nQUNBSUlBTVFiaUFBSUFWQkNHb2dFU0FURU9JRkN5RUdJQVVnRDBFQUVEZ2lEallDekFGQkFTRVFEQU1MSUFZRVFDQUFLQUljSWdRb0FnQkJBRG9BQUNBRVFZU2JDUkFaSVFRZ0JTQUlFR0EyQWdnZ0JDQUZRUWhxRUM5Qis1b0pFQmtoQkNBRklBZ2dBeEE0TmdLb0FTQUVJQVZCcUFGcUVDOUJ0WnNKRUJrZ0JVSE1BV29RTHhvZ0NoQm5HZ3dGQ3lBRklBOFF5QUVpQmpZQ3ZBRWdCU2tEd0FFaU5VSUFVeUExSUFhdFduSkZCRUFnQlVHb0FXb2lFaUFBS0FJZ0lBNGdOYWNROVFnZ0FDZ0NDQ0VHSUFWQkFEWUNHQ0FGUWdBM0F4QWdCVUlBTndNSUlBWWdCVUVJYWlBUklCSVFod3NoQmlBRklBOGdCU2dDd0FFUU9DSU9OZ0xNQVNBU0VBOGFEQU1MSUFBb0Fod2lBeWdDQUVFQU9nQUFJQU5CaEpzSkVCa2hBeUFGSUFnUVlEWUNDQ0FESUFWQkNHb1FMMEczdFFvUUdTQUZRY0FCYWhDRkQwR1Rtd2tRR1NBRlFjd0JhaEF2UVlhcUNoQVpJQVZCdkFGcUVDOUIzcG9CRUJrYUlBb1FaeG9NQkFzZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBIeW13a1FHU0FGUWN3QmFoQXZRZTIxREJBWklRUWdCVUVJYWlJRElBOFFXQ0FFSUFNUVRSb2dBeEFQR2lBS0VHY2FEQU1MSUFWQkFEWUNHQ0FGUWdBM0F4QWdCVUlBTndNSUlBVkJxQUZxSUFBZ0NDQURFRzRnQUNBRlFRaHFJQkVnRXhEaUJTRUdJQVVnRDBFQUVEZ2lEallDekFFTElBQW9BaGdnRGlBVUVNQVhJUThDUUNBQUtBSUFJQTlCQVJDRkFTSVBCRUFnRHlnQ0JFR1F6QkpHRFFFTElBVkJDR3BCdWFFRlFhVWpRUWNnQlVHb0FXb1FIU0lTRUJjaEZ5QVdRYm50Q0JBT0dpQVhFQmdnRWhBZUN5QUxJQVZCQ0dvZ0R5QUdFR2tRV3hvZ0EwRUJhaUVEREFBTEFBc2dCVUhRQVdvUU1ob0xJQVZCOEFGcUpBQU1Bd3NnQlVIOEFFWUVRQ0FBS0FJSUlRTWdDVUZBYTBFQU5nSUFJQWxDQURjRE9DQUpRZ0EzQXpBZ0JDQURJQVFvQWdBb0FnZ1JBUUFoQlNBSlFZQUJhaUlHSUFBZ0NFRUFFRzRnQ2lBRUlBTWdDVUV3YWlBRklBWkJCSElRMWdRUWFSb01Bd3NnQlVIQ0FXc2lBMEVDVFFSQUlBbEJnQUZxSUFBZ0NFRUFFRzRnQUNnQ0FDRUZJQWxCS0dvaUJpQUFJQWhCQVJCdUlBbEIrQUJxSUFVZ0JoQ0hHUUpBQWtBQ1FBSkFJQU1PQXdFQ0FBTUxJQWxCRERZQ2pBRU1BZ3NnQ1VFd2FpSURJQUFvQWdBZ0NVRWdhaUFKUVlBQmFpSUZFRnNRaHhrZ0JTQURFRnNhSUFsQkRUWUNqQUVNQVFzZ0NVRXdhaUVHSUFBb0FnQWhEaUFKUVJocUlBbEJnQUZxSWc4UVd5RUZJd0JCSUdzaUF5UUFBa0FDUUNBRktBSUFJZ3RGRFFBZ0N4RDNDRVVOQUNBT0lBVW9BZ0FRaVJraEN5QURRUUEyQWhnZ0EwSUFOd01RSUFOQ0FEY0RDQ0FHSUFzZ0RrRWdhaUlPSUFOQkNHb2dDeUFPSUFzb0FnQW9BZ2dSQVFBZ0JVRUVhaERXQkJCcEdnd0JDeUFHSUFVUVd4b0xJQU5CSUdva0FDQVBJQVlRV3hvZ0NVRU5OZ0tNQVFzZ0NVRkFhMEVBTmdJQUlBbENBRGNET0NBSlFnQTNBekFnQ1VFUWFpQUVJQUFnQ1VFd2FpQUpRWXdCYWlBSlFZQUJha0VFY2lBSlFmZ0Fha0VFY2hEb0NCQnBJUU1nQ2lBQUtBSUFJQWxCQ0dvZ0F4QmJJQWdnQ1NnQ2dBRVF2UVlNQXd0QkJ5RURBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FGUWJVQmF3NExCZ3dCREFJTUJBd0REQVVBQ3lBRlFjMEFhdzRGQ1FzSUJnY0tDMEVHSVFNTUJBdEJDeUVEREFNTFFRa2hBd3dDQzBFS0lRTU1BUXRCQ0NFREN5QUpJQU0yQWhBZ0NVR0FBV29pQXlBQUlBaEJBQkJ1SUFsQitBQnFJZ1VnQUNBSVFRRVFiaUFKUVVCcklnWkJBRFlDQUNBSlFnQTNBemdnQ1VJQU53TXdJQWtnQUNBSlFUQnFJZ3NnQ1VFUWFpQURRUVJ5SUFWQkJISVE2QWcyQWdRZ0JrRUFOZ0lBSUFsQ0FEY0RPQ0FKUWdBM0F6QWdDVUVFTmdJQUlBb2dCQ0FBSUFzZ0NTQUpRUVJxRU5nSEVHa2FEQWtMSUFsQ2dJQ0FnSUFCTndKVUlBa2dDVUV3YWpZQ1VDQUpRWUFCYWtFRWNpRUZRUUFoQXdKQUFrQURRQ0FJRU1nQklBTk5EUUVnQ1VHQUFXb2dBQ0FJSUFNUWJnSkFJQWtvQW9BQlJRMEFJQWtvQW9RQlJRMEFJQWxCTUdvZ0JSQWtJQU5CQVdvaEF3d0JDd3NnQ2hCbkdnd0JDeUFKSUFRZ0FDZ0NDQ0lESUFRb0FnQW9BZ2dSQVFBMkFvQUJJQW9nQkNBRElBbEJnQUZxSUFsQk1Hb1EzQWNRYVJvTElBbEJNR29RSXd3SUN5TUFRUkJySWdNa0FDQURRUWhxSUFBZ0NFRUFFRzRDUUFKQUlBTW9BZ2dFUUNBREtBSU1EUUVMSUFvUVp4b01BUXNnQ0VFQUVEZ2hCQ0FBS0FJUUlBUVFsQUVRZWlFRUlBb2dBQ0FJSUFNZ0EwRUlhaEJiSUFSQkFSRFhHUXNnQTBFUWFpUUFEQWNMSXdCQmdBSnJJZ01rQUNBSVFRQVFPQ0VPSUFoQkFSQTRJUThnQUNnQ0VDQU9FSlFCSVFRZ0FDZ0NFQ0FQRUpRQklRVWdBQ2dDR0NBRUVIb1E2UUVpQkNBRUtBSUFLQUkwRVFBQUtBSVlJUXNnQUNnQ0dDQUZFSG9RNlFFaUJDQUVLQUlBS0FJMEVRQUFLQUlZSVFVZ0EwSG9BV29nQUNBSUVPTUlJQUFvQWdBZ0NCQjZRUUFRaFFFaUJBUkFJQVJCQUNBRUtBSUVRYWpNRWtZYklRWUxJQU5DZ0lDQWdJQUJOd0xjQVNBRklBdHFJUkVnQXlBRFFiZ0JhallDMkFFZ0EwRUVjaUVRSUFOQkdHb2hFMEVDSVFRQ1FBSkFBMEFnQ0JESUFTQUVTd1JBSUFNZ0NDQUVFRGdpQlRZQ3RBRUNRQ0FGSUF0SkJFQWdBeUFBSUE0UWxnTUNRQ0FES0FJQVJRMEFJQU1vQWdSRkRRQWdBeUFBSUFVUTRRVTJBckFCSUFNZ0FDQURRZWdCYWlBUUlBTkJzQUZxRUpRRk5nS2dBU0FEUWJnQmFpQURRYUFCYWhBa0RBSUxJQW9RWnhvTUJRc2dCU0FSU1FSQUlBVWdDMnNpQlVFRVR3UkFJQU5CdWFFRlFla2tRUWNnQTBHZ0FXb1FIU0lTRUJjaEZDQVRRZGEwQ0JBT0dpQVVFQmdnRWhBZUN5QURJQUFnRHhDV0F3SkFJQU1vQWdCRkRRQWdBeWdDQkVVTkFDQURJQUFnQlJEaEJUWUNzQUVnQXlBQUlBTkI2QUZxSUJBZ0EwR3dBV29RbEFVMkFxQUJJQU5CdUFGcUlBTkJvQUZxRUNRTUFnc2dDaEJuR2d3RkN5QUZRWDlIRFFNZ0F5QUFLQUlBSUFZb0FnZ1Frd1EyQWdBZ0EwRzRBV29nQXhBa0N5QUVRUUZxSVFRTUFRc0xJQU1nQmlBQUtBSUlJZ1FRK2dnMkFnQWdDaUFHSUFRZ0EwSG9BV29nQXlBRFFiZ0JhaENWQkJCcEdnd0JDeUFBS0FJY0lnUW9BZ0JCQURvQUFDQUVRY0NjQ1JBWklRUWdBeUFJRUdBMkFnQWdCQ0FERUM5QnRxVU1FQmtnQTBHMEFXb1FMeG9nQ2hCbkdnc2dBMEc0QVdvUUl5QURRWUFDYWlRQURBWUxJQWxCUUd0QkFEWUNBQ0FKUWdBM0F6Z2dDVUlBTndNd0lBbEJnQUZxSWdNZ0FDQUlRUUFRYmlBSlFmZ0FhaUlGSUFBZ0NFRUJFRzRnQ2lBRUlBQWdDVUV3YWlBRFFRUnlJQVZCQkhJUTRnVVFhUm9NQlFzZ0JVRU1SZzBCQ3lBRlFlMEFhMEVEVFFSQUl3QkI0QUJySWdNa0FDQUlLQUlVSVFZZ0FDZ0NBQ0FJRUhwQkFCQ0ZBU0VFSUFOQjJBQnFJQUFnQ0VFQUVHNENRQUpBSUFNb0FsZ2lCUVJBSUFNb0Fsd05BUXNnQ2hCbkdnd0JDeUFESUFVUTdnTWlCVFlDV0FKQUFrQUNmeUFHUWU4QWEwRUJUUVJBSUFRZ0JSRDRDQTBCR2lBQUtBSWNJZ1FvQWdCQkFEb0FBQ0FFUWJieUN4QVpJUVVnQTBFb2FpSUVJQWdRV0NBRklBUVFUUm9nQkJBUEdnd0RDd0pBQWtBZ0JrSHRBR3NPQWdBQkJBc2dCUkNtRHdSQUlBQW9BZ0FnQXlnQ1dCQ0lHUXdDQ3lBQUtBSWNJZ1FvQWdCQkFEb0FBQ0FFUWNMdkN4QVpJUVVnQTBFb2FpSUVJQWdRV0NBRklBUVFUUm9nQkJBUEdnd0RDeUFGRUtZUFJRMEJJQUFvQWdBZ0F5Z0NXQkNKR1FzaUJVVU5BU0FEUW9DQWdJQ0FBVGNDVENBRElBTkJLR29pQmpZQ1NDQUdJQU5CMkFCcVFRUnlFQ1FnQUNnQ0NDRUxJQU5CQ0dvaURpQUFJQWdRNHdnZ0F5QUZJQUFvQWdnZ0JTZ0NBQ2dDQ0JFQkFEWUNBQ0FEUVNCcUlBVWdDeUFPSUFNZ0JoQ1ZCQkJwSVFZQ1FDQUVJQVZHQkVBZ0NpQUdFRnNhREFFTElBQW9BZ2doQlNBRFFRaHFJZ3NnQUNBSUVPTUlJQW9nQkNBRklBc2dCQ0FBS0FJSUlBUW9BZ0FvQWdnUkFRQWdCa0VFYWhEV0JCQnBHZ3NnQTBFb2FoQWpEQUlMSUFBb0Fod2lCQ2dDQUVFQU9nQUFJQVJCbC9BTEVCa2hCU0FEUVNocUlnUWdDQkJZSUFVZ0JCQk5HaUFFRUE4YUN5QUtFR2NhQ3lBRFFlQUFhaVFBREFRTEFrQUNRQ0FGUWFrQlJ3UkFJQVZCeEFCR0RRRWdCVUVCUncwQ0lBb2dBQ2dDQUNBRUVQVUtEQVlMSXdCQjBBQnJJZ01rQUNBRFFjZ0FhaUFBSUFoQkFCQnVJQU5CUUdzZ0FDQUlRUUVRYmlBRFFUaHFJQUFnQ0VFQ0VHNENRQUpBQWtBZ0F5Z0NRQkR1QXlJRktBSUVRYWpNRWtZTkFDQUZFS2NQRFFBZ0JSQ2xEdzBBSUFVb0FnUkJtTXNTUncwQkN5QURRb0NBZ0lDQUFUY0NMQ0FESUFOQkNHb2lCRFlDS0NBRUlBTkJPR3BCQkhJUUpDQUVJQU5CUUd0QkJISVFKQ0FFSUFOQnlBQnFRUVJ5RUNRZ0NpQUZJQUFvQWdoQjMvRUFJQVFRNHhrUWFSb2dCQkFqREFFTElBb1FaeG9MSUFOQjBBQnFKQUFNQlFzakFFRkFhaUlESkFBQ1FDQUlFTWdCUVFKSEJFQWdBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFSDE3QXNRR1NFRklBTkJDR29pQkNBSUVGZ2dCU0FFRUUwYUlBUVFEeG9nQ2hCbkdnd0JDeUFJUVFBUU9DRUVJQWhCQVJBNElRVWdBQ2dDRUNBRUVKUUJFSG9oQmlBQUtBSVFJQVlRbEFGQkFSQTRJUVlnQTBFd2FpQUFLQUlnSUFZZ0JSRDFDQUpBSUFNb0FqUWdBeTBBT3lJRklBVkJHSFJCR0hWQkFFZ2JSUVJBSUFBb0Fod2lCQ2dDQUVFQU9nQUFJQVJCNG9jTUVCa2hCU0FEUVFocUlnUWdDQkJZSUFVZ0JCQk5HaUFFRUE4YUlBb1FaeG9NQVFzZ0EwRW9haUFBSUFRUWxnTUNRQ0FES0FJb0lnUUVRQ0FES0FJc0RRRUxJQW9RWnhvTUFRc2dCQ2dDQkVINHl4SkdCRUFnQTBFSWFpSUVJQUFnQTBFZ2FpQURRU2hxSWdVUVd4RERCaUFGSUFRUVd4b0xJQUFvQWdnaEJDQURRUUEyQWhnZ0EwSUFOd01RSUFOQ0FEY0RDQ0FESUFRZ0EwRUlhaUlFSUFOQktHcEJCSElnQTBFd2FoQ0hDellDSENBRElBQW9BZ2dpQlNBRFFSeHFFTjRITmdJSUlBVkJyNk1ESUFRUTV3Z2hCQ0FLSUFBb0FnQWdDQkI2UVFBUWhRRWdCQkJwR2dzZ0EwRXdhaEFQR2dzZ0EwRkFheVFBREFRTElBb1FaeG9NQXdzZ0FDZ0NBQ0FJRUpBWkJFQWdDaEJuR2d3REN5QUFLQUlBSUFnUStBcEZCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdyd1FzUUdTRURJQWtnQ0VFQUVEZzJBakFnQXlBSlFUQnFFQzhhSUFvUVp4b01Bd3NqQUVHQUEyc2lCU1FBSUFVZ0NFRUJFRGdpQXpZQy9BSUNRQ0FEUVRWR0JFQWdCVUdZQVdvZ0FDQUlRUUlRYmlBRlFmQUNhaUlESUFBZ0NFRURFRzRnQlVId0FHb2dBQ0FERU5ZSElBQW9BZ2doQXlBRlFRSTJBdXdDSUFVb0FwZ0JJUVFnQlNBRktBS2NBVFlDV0NBRklBVW9BblEyQWx3Z0JTQUZRZGdBYWpZQzZBSWdCU0FGS1FQb0FqY0RDQ0FLSVRNZ0JDRXdJQVZCeUFGcUlBVkJDR29RdFFJaEJDTUFRUkJySWc0a0FDQU9JQU5CcHBFQ0VNSUdOZ0lNSXdCQklHc2lCaVFBSUFZZ0RpZ0NERFlDSENBRElBTkIyQUpxSVRJZ0JrRWNhaUV2SXdCQkVHc2lDeVFBSUFaQkNHb2lBMEtBZ0lDQUlEY0NEQ0FESUFNMkFnZ2dDeUFFUVFocU5nSUlJQXNnQkNnQ0NDQUVSem9BRENBRElBdEJDR29RMVIwZ0MwRVFhaVFBSURJZ0x5QURFS29QSVFzZ0F4Q3FBU0FHUVNCcUpBQWdEa0VRYWlRQUlETWdNQ0FMRUdrYUlBUVFxZ0VNQVFzQ1FDQUFLQUlBSUFnUWVrRUFFSVVCSWdzUW93OEVRQUpBQWtBQ1FBSkFBa0FnQTBIRkFHc09CQUVDQXdRQUN5QURRU0ZIRFFVZ0JVSHdBR29nQUNBSVFRSVFiaUFGS0FKd0tBSUVRY0RNRWtjRVFDQUZRY2dCYWtHNW9RVkJqUjlCQnlBRlFaZ0JhaEFkSWdNUUZ5SUVRUmhxUWFqcUNCQU9HaUFFRUJnZ0F4QWVDeUFLSUFBb0FnUVFsZ1VnQUNnQ0NFR0c0d0FnQlVId0FHcEJCSElRNXdnUWFSb01CZ3NnQUNnQ0JCQ1dCU0VESUFBb0FnZ2hCQ0FGUVlDQWdQd0ROZ0xJQVNBS0lBTWdCQ0FGUWNnQmFoRGtDQkJwR2d3RkN5QUZRY0FCYWlBQUlBaEJBaEJ1SUFWQnVBRnFJQUFnQ0VFREVHNGdCVUd3QVdvZ0FDQUlRUVFRYmlBRktBTEFBU2dDQkVISXl4SkhCRUFnQlVISUFXcEJ1YUVGUVo4ZlFRY2dCVUdZQVdvUUhTSURFQmNpQkVFWWFrSFU3Z2dRRGhvZ0JCQVlJQU1RSGdzZ0JTZ0N1QUVvQWdSQnlNc1NSd1JBSUFWQnlBRnFRYm1oQlVHZ0gwRUhJQVZCbUFGcUVCMGlBeEFYSWdSQkdHcEJwdTRJRUE0YUlBUVFHQ0FERUI0TElBVW9BckFCS0FJRVFjakxFa2NFUUNBRlFjZ0Jha0c1b1FWQm9SOUJCeUFGUVpnQmFoQWRJZ01RRnlJRVFSaHFRWUR2Q0JBT0dpQUVFQmdnQXhBZUN5QUFLQUlFRUpZRklRWWdBQ2dDQ0NFRUlBVkJBRFlDcUFFZ0JVSUFOd09nQVNBRlFnQTNBNWdCSUFWQkFEWUNnQUVnQlVJQU53TjRJQVZDQURjRGNDQUZRUU0yQW13Z0JTQUFJQVZCOEFCcUlBVkI3QUJxSUFWQndBRnFRUVJ5RU5nSE5nS0VBU0FGSUFVb0FzUUJOZ0tJQVNBRlFRQTJBbWdnQlVJQU53TmdJQVZDQURjRFdDQUZRUWcyQWxRZ0FDZ0NDQ0VMSUFWQkFEWUNTQ0FGUVVCclFnQTNBd0FnQlVJQU53TTRJd0JCRUdzaUF5UUFJQU5CRURZQ0RDQURJQVZCdUFGcVFRUnlLQUlBTmdJSUlBTWdCVUd3QVdwQkJISW9BZ0EyQWdRZ0N5QUZRVGhxSUFOQkRHb2dBMEVJYWlBRFFRUnFFTlVaSVFzZ0EwRVFhaVFBSUFVZ0N6WUNVQ0FBS0FJSUlRTWdCVUVBTmdJd0lBVWdBeUFGUVRCcUVPUUlOZ0kwSUFBZ0JVSFlBR29nQlVIVUFHb2dCVUhRQUdvZ0JVRTBhaERvQ0NFRElBVkJBellDbEFFZ0JTQUROZ0tNQVNBRklBVkJoQUZxTmdLUUFTQUZJQVVwQTVBQk53TVFJQW9oTkNBR0lURWdCVUhJQVdvZ0JVRVFhaER5QmlFR0l3QkJJR3NpQXlRQUlBTWdCRUhmOFFBUXdnWTJBaHdnQkNBRlFaZ0JhaUFEUVJ4cUlBTWdCaENMR1NJRUVPd09JUXNnQkJDc0F5QURRU0JxSkFBZ05DQXhJQXNRYVJvZ0JoQ3NBd3dFQ3lBRlFmQUFhaUFBSUFoQkFoQnVJQVZCMkFCcUlBQWdDRUVERUc0Z0JTZ0NjQ2dDQkVISXl4SkhCRUFnQlVISUFXcEJ1YUVGUWJVZlFRY2dCVUdZQVdvUUhTSURFQmNpQkVFWWFrR203Z2dRRGhvZ0JCQVlJQU1RSGdzZ0JTZ0NXQ2dDQkVISXl4SkhCRUFnQlVISUFXcEJ1YUVGUWJZZlFRY2dCVUdZQVdvUUhTSURFQmNpQkVFWWFrSFU3Z2dRRGhvZ0JCQVlJQU1RSGdzZ0FDZ0NCQkNXQlNFR0lBQW9BZ2doQkNBRlFZQ0FnSUFFTmdLWUFTQUZJQVFnQlVIWUFHcEJCSElpQXlBRlFmQUFha0VFY2lJTEVNY0ROZ0tFQVNBRklBUWdBeUFGUVlRQmFoREhBellDT0NNQVFSQnJJZ01rQUNBRFFSQTJBZ3dnQXlBRUlBVkJtQUZxRU9RSU5nSUlJQU1nQlNnQ09EWUNCQ0FFSUFOQkRHb2dBMEVJYWlBRFFRUnFFSVlMSVE0Z0EwRVFhaVFBSUFVZ0RqWUN5QUVnQ2lBR0lBUWdDeUFGUWNnQmFoRGxDQkJwR2d3REN5QUZRZkFBYWlBQUlBaEJBaEJ1SUFWQjJBQnFJQUFnQ0VFREVHNGdCVUU0YWlBQUlBaEJCQkJ1SUFVb0FuQW9BZ1JCeU1zU1J3UkFJQVZCeUFGcVFibWhCVUhHSDBFSElBVkJtQUZxRUIwaUF4QVhJZ1JCR0dwQnB1NElFQTRhSUFRUUdDQURFQjRMSUFVb0FsZ29BZ1JCeU1zU1J3UkFJQVZCeUFGcVFibWhCVUhISDBFSElBVkJtQUZxRUIwaUF4QVhJZ1JCR0dwQjFPNElFQTRhSUFRUUdDQURFQjRMSUFVb0FqZ29BZ1JCeU1zU1J3UkFJQVZCeUFGcVFibWhCVUhJSDBFSElBVkJtQUZxRUIwaUF4QVhJZ1JCR0dwQnF1OElFQTRhSUFRUUdDQURFQjRMSUFBb0Fod29BZ0F0QUFCRkJFQWdDaEJuR2d3REN5QUFLQUlJSVFNZ0JTZ0NPQ0VMSUFWQkFEWUN3QUVnQlNBRElBVkI4QUJxUVFSeUlBVkJ3QUZxRU5JWk5nS1lBU0FBS0FJSUlRUWdCVUVBTmdLNEFTQUVJQVZCMkFCcVFRUnlJQVZCdUFGcUVOSVpJUVFnQlVFRE5nSXNJQVVnQkRZQ25BRWdCU0FGS0FJOE5nS2dBU0FGSUFWQm1BRnFOZ0lvSUFVZ0JTa0RLRGNER0NBRlFjZ0JhaUFGUVJocUVQSUdJUVlqQUVFUWF5SUVKQUFnQkNBRFFjajNBQkRDQmpZQ0RDQURJQU5CMkFKcUlBUkJER29nQmhEUUdTRU9JQVJCRUdva0FDQUZJQTQyQW9RQklBb2dDeUFESUFWQmhBRnFRZG9uRU1nYUVHa2FJQVlRckFNTUFnc2dBMEVpUncwQUl3QkIwQUpySWdNa0FDQURRY2dDYWlBQUlBaEJBaEJ1SUFNb0FzZ0NJZ1JCQUNBRUtBSUVRY0RNRWtZYklndEZCRUFnQTBHWUFXcEJ1YUVGUVlJZ1FRY2dBMEc0QW1vUUhTSUVFQmNpQmtFWWFrR09tUWdRRGhvZ0JoQVlJQVFRSGdzZ0N5Z0NEQ0FMS0FJUVJ3UkFJQU5CbUFGcVFibWhCVUdESUVFSElBTkJ1QUpxRUIwaUJCQVhJZ1pCR0dwQjRwOElFQTRhSUFZUUdDQUVFQjRMSUFNZ0FDZ0NDQ0lFTmdLUUFTQURJQU5CeUFKcUlnODJBcFFCSUFOQmdJQ0EvQU0yQXJnQ0lBTkJBRFlDcUFFZ0EwSUFOd09nQVNBRFFnQTNBNWdCSXdCQklHc2lCaVFBSUFZZ0JFR0c0d0FRd2dZMkFod2dCa0VJYWlJT0lBOUJCSElRNEFjZ0JDQURRWmdCYWlJUElBWkJIR29nRGhDeUR5RVFJQTRRcUFFZ0JrRWdhaVFBSUFNZ0VEWUNpQUVqQUVFUWF5SUdKQUFnQmtFUk5nSU1JQVlnQkNBRFFiZ0NhaERrQ0RZQ0NDQUdJQU1vQW9nQk5nSUVJQVFnQmtFTWFpQUdRUWhxSUFaQkJHb1FoZ3NoRGlBR1FSQnFKQUFnQXlBT05nS01BU0FFRUJ3Z0EwRUJOZ0tFQVNBRFFZM0dBVFlDZ0FFZ0F5QURLUU9BQVRjRENDQVBJQVJCaUFKcUlBTkJDR29RbndRZ0FDQUVJQVFnRHlBRFFZd0JhaENuQ3hEUENoREpBUm9nQXlBRU5nS0lBU0FESUFRMkFuZ2dBeUFFTmdKd0FrQUNRQUpBQWtBQ1FDQUxLQUlNUVFKckRnTUFBUUlEQ3lBRElBTkJrQUZxSWdaQkFFRUFFT01CTmdLNEFpQURJQVpCQUVFQkVPTUJOZ0pzSUFNZ0JrRUJRUUFRNHdFMkFtZ2dBeUFHUVFGQkFSRGpBVFlDWkNBRElBUWdBMEdZQVdvaUJpQURRZVFBYWhDRkN6WUNYQ0FESUFRZ0JoRE9HVFlDVkNBRElBUWdBMEhVQUdvZ0EwSHNBR29ReHdNMkFsZ2dBeUFFSUFOQjNBQnFJQU5CMkFCcUVNMFpOZ0pnSUFNZ0JDQUdFTTRaTmdKSUlBTWdCQ0FEUWNnQWFpQURRZWdBYWhESEF6WUNUQ0FESUFRZ0JpQURRYmdDYWhDRkN6WUNSQ0FESUFRZ0EwSE1BR29nQTBIRUFHb1F6UmsyQWxBakFFRVFheUlHSkFBZ0JDZ0NCRUhZQW1vaERpTUFRUkJySWdza0FDQUxJQVJCQkdvaUR4RGtCellDQ0NBUElBNUIvL2NHSUF0QkNHb1FwUXNoRGlBTFFSQnFKQUFnQmlBT05nSUlJQVFnQkVIWUFtb2dCa0VJYWlBRFFlQUFhaUFEUWRBQWFoQ3JEeUVFSUFaQkVHb2tBQ0FLSUFNb0FzZ0NJQVFRYVJvTUF3c2dBMEdRQVdvaUJrRUFRUUFRNHdFaERpQUdRUUJCQVJEakFTRVBJQVpCQUVFQ0VPTUJJUkFnQmtFQlFRQVE0d0VoRVNBR1FRRkJBUkRqQVNFVElBWkJBVUVDRU9NQklSSWdCa0VDUVFBUTR3RWhGQ0FHUVFKQkFSRGpBU0VWSUFNZ0EwR0lBV29pQ3lBVElBWkJBa0VDRU9NQklnWWdFaUFWRVBJQk5nSm9JQU1nQ3lBUUlCVWdEeUFHRVBJQk5nSmtJQU1nQ3lBUElCSWdFQ0FURVBJQk5nSmdJQU1nQkNBRFFlZ0FhaUFEUWVRQWFpQURRZUFBYWhDRUR6WUNiQ0FESUFzZ0VpQVVJQkVnQmhEeUFUWUNXQ0FESUFzZ0RpQUdJQkFnRkJEeUFUWUNWQ0FESUFzZ0VDQVJJQTRnRWhEeUFUWUNVQ0FESUFRZ0EwSFlBR29nQTBIVUFHb2dBMEhRQUdvUWhBODJBbHdnQXlBTElCRWdGU0FUSUJRUThnRTJBa2dnQXlBTElBOGdGQ0FPSUJVUThnRTJBa1FnQXlBTElBNGdFeUFQSUJFUThnRTJBa0FnQXlBRUlBTkJ5QUJxSUFOQnhBQnFJQU5CUUdzUWhBODJBa3dqQUVFUWF5SUdKQUFnQkNnQ0JFSFlBbW9oRGlNQVFSQnJJZ3NrQUNBTElBUkJCR29pRHhEa0J6WUNDQ0FQSUE1QnkvWUdJQXRCQ0dvUXBRc2hEaUFMUVJCcUpBQWdCaUFPTmdJSUlBUWdCRUhZQW1vZ0JrRUlhaUFEUWV3QWFpQURRZHdBYWlBRFFjd0FhaENtR1NFTElBWkJFR29rQUNBRElBczJBcmdDSUFRZ0EwR1lBV29nQTBHNEFtb1FoUXNoQkNBS0lBTW9Bc2dDSUFRUWFSb01BZ3NnQXlBRFFaQUJhaUlMUVFCQkFCRGpBU0l1TmdLNEFpQURJQXRCQUVFQkVPTUJOZ0pzSUF0QkFFRUNFT01CSVE0Z0MwRUFRUU1RNHdFaER5QURJQXRCQVVFQUVPTUJJaEkyQW1nZ0MwRUJRUUVRNHdFaEVDQUxRUUZCQWhEakFTRVJJQXRCQVVFREVPTUJJUk1nQzBFQ1FRQVE0d0VoRkNBTFFRSkJBUkRqQVNFVklBdEJBa0VDRU9NQklSWWdDMEVDUVFNUTR3RWhGeUFMUVFOQkFCRGpBU0VaSUF0QkEwRUJFT01CSVJzZ0MwRURRUUlRNHdFaEdpQURRWWdCYWlJR0lCWWdDMEVEUVFNUTR3RWlDeUFYSUJvUThnRWhIU0FHSUJVZ0N5QVhJQnNROGdFaEhpQUdJQlVnR2lBV0lCc1E4Z0VoSHlBR0lCRWdDeUFUSUJvUThnRWhJeUFHSUJBZ0N5QVRJQnNROGdFaEpDQUdJQkFnR2lBUklCc1E4Z0VoSlNBR0lCRWdGeUFUSUJZUThnRWhKaUFHSUJBZ0Z5QVRJQlVROGdFaEp5QUdJQkFnRmlBUklCVVE4Z0VoS0NBR0lCUWdDeUFYSUJrUThnRWhJQ0FHSUJRZ0dpQVdJQmtROGdFaElTQUdJQklnQ3lBVElCa1E4Z0VoS1NBR0lCSWdHaUFSSUJrUThnRWhHaUFHSUJJZ0Z5QVRJQlFROGdFaEZ5QUdJQklnRmlBUklCUVE4Z0VoS2lBR0lCUWdHeUFWSUJrUThnRWhGaUFHSUJJZ0d5QVFJQmtROGdFaEdTQUdJQklnRlNBUUlCUVE4Z0VoRWlBRElBTkIrQUJxSWdZZ0VDQWRJQkVnSGlBVElCOFE0QVUyQWx3Z0F5QURRZkFBYWlJTElBUWdBMEhzQUdvUTN3VWdIU0FPSUI0Z0R5QWZFTjRGTmdKWUlBTWdCaUFES0FKc0lDTWdEaUFrSUE4Z0pSRGdCVFlDVkNBRElBc2dCQ0FEUWV3QWFoRGZCU0FtSUE0Z0p5QVBJQ2dRM2dVMkFsQWdBeUFFSUFOQjNBQnFJQU5CMkFCcUlBTkIxQUJxSUFOQjBBQnFFSVFMTmdKZ0lBTWdDeUFFSUFOQjZBQnFFTjhGSUIwZ0VTQWdJQk1nSVJEZUJUWUNTQ0FESUFZZ0xpQWRJQTRnSUNBUElDRVE0QVUyQWtRZ0F5QUxJQVFnQTBHNEFtb1Ezd1VnSXlBT0lDa2dEeUFhRU40Rk5nSkFJQU1nQmlBREtBSzRBaUFtSUE0Z0Z5QVBJQ29RNEFVMkFqd2dBeUFFSUFOQnlBQnFJQU5CeEFCcUlBTkJRR3NnQTBFOGFoQ0VDellDVENBRElBWWdBeWdDYUNBZUlCQWdJQ0FUSUJZUTRBVTJBalFnQXlBTElBUWdBMEc0QW1vUTN3VWdIaUFES0FKc0lDQWdEeUFXRU40Rk5nSXdJQU1nQmlBREtBSzRBaUFrSUFNb0Ftd2dLU0FQSUJrUTRBVTJBaXdnQXlBTElBUWdBMEc0QW1vUTN3VWdKeUFES0FKc0lCY2dEeUFTRU40Rk5nSW9JQU1nQkNBRFFUUnFJQU5CTUdvZ0EwRXNhaUFEUVNocUVJUUxOZ0k0SUFNZ0N5QUVJQU5CNkFCcUVOOEZJQjhnRUNBaElCRWdGaERlQlRZQ0lDQURJQVlnQXlnQ3VBSWdIeUFES0FKc0lDRWdEaUFXRU9BRk5nSWNJQU1nQ3lBRUlBTkJ1QUpxRU44RklDVWdBeWdDYkNBYUlBNGdHUkRlQlRZQ0dDQURJQVlnQXlnQ3VBSWdLQ0FES0FKc0lDb2dEaUFTRU9BRk5nSVVJQU1nQkNBRFFTQnFJQU5CSEdvZ0EwRVlhaUFEUVJScUVJUUxOZ0lrSXdCQkVHc2lCaVFBSUFRb0FnUkIyQUpxSVE0akFFRVFheUlMSkFBZ0N5QUVRUVJxSWc4UTVBYzJBZ2dnRHlBT1FlVHhCaUFMUVFocUVLVUxJUTRnQzBFUWFpUUFJQVlnRGpZQ0NDQUVJQVJCMkFKcUlBWkJDR29nQTBIZ0FHb2dBMEhNQUdvZ0EwRTRhaUFEUVNScUVLVVpJUXNnQmtFUWFpUUFJQU1nQ3pZQ1pDQUVJQU5CbUFGcUlBTkI1QUJxRUlVTElRUWdDaUFES0FMSUFpQUVFR2thREFFTElBaEJBUkE0SVFZZ0FDZ0NIQ0lFS0FJQVFRQTZBQUFnQkVIVzd3a1FHU0VMSUFOQnVBSnFJZ1FnQmhEUkdTQUxJQVFRVFJvZ0JCQVBHaUFLRUdjYUN5QURRZEFDYWlRQURBRUxJQVZCbUFGcUlBTVEwUmxCQUNFRUFrQWdCU2dDbkFFZ0JTMEFvd0VpQXlBRFFSaDBRUmgxUVFCSUcwVUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRY09HQ2hBWklBVkIvQUpxRUM4YUlBb1FaeG9NQVFzZ0JVS0FnSUNBZ0FFM0F1d0JJQVVnQlVISUFXbzJBdWdCSUFWQjhBQnFRUVJ5SVFOQkFpRUdBa0FEUUNBSUVNZ0JJQVpMQkVBZ0JVSHdBR29nQUNBSUlBWVFiaUFGS0FKMEJFQWdCU2dDY0NFT0lBVkJ5QUZxSUFNUUpDQUdRUUZxSVFZZ0JDQU9JQVFiSVFRTUFnVWdBQ2dDSENJREtBSUFJZ1F0QUFBRVFDQUVRUUE2QUFBZ0EwSHo1d1FRR1JvTElBb1FaeG9NQXdzQUN3c2dCVUh3QUdvZ0N5QUFLQUlJSUFWQm1BRnFJQVZCeUFGcUVONFpFR2toQXlBS0lBQW9BZ0FnQlVFZ2FpQURFRnNnQ0NBRUVMMEdDeUFGUWNnQmFoQWpDeUFGUVpnQmFoQVBHZ3NnQlVHQUEyb2tBQXdDQzBITjR3TWhBd3NnQ1NBRE5nSjRJQWxDZ0lDQWdJQUJOd0pVSUFrZ0NVRXdhaUlETmdKUUlBbEJnQUZxSWdVZ0FDQUlRUUFRYmlBRElBVkJCSElRSkNBS0lBUWdBQ2dDQ0NBSlFmZ0FhaUFERUxBUEVHa2FJQU1RSXdzZ0NVR1FBV29rQUNBY0lBb1FXeG9nQUNnQ0hDSUVLQUlBTFFBQVJRMEJJQmdvQWpRTkFpQWNLQUlFUlEwQUlCZ3RBQnhGQkVBZ0RVSG9BR3BCdWFFRlFiNGJRUWNnRFVHSUFtb1FIU0lERUJjaUJFRVlha0dqNlFnUURob2dCQkFZSUFNUUhnc0NRQUpBSUJndEFDRU5BQ0FZTFFBZ0RRQWdHQ2dDREVFQlJnMEJDeUFBSUFnZ0RVSGdBR29nSEJCYkVKVUZJUWNNQXdzZ0RTQWlOZ0pvSUExQjZBQnFJZzVCQkhJZ0hCQmJHaU1BUVJCcklnc2tBRUVBSVFjakFFRVFheUlLSkFBZ0RpZ0NBQ0VESUFzQ2Z3SkFJQUJCMUFacUlnUW9BZ1FpQlVVTkFDQUVLQUlBQW44Z0JVRUJheUFEY1NBRmFTSUdRUUZORFFBYUlBTWdBeUFGU1EwQUdpQURJQVZ3Q3lJSFFRSjBhaWdDQUNJSlJRMEFJQVZCQVdzaER5QUdRUUZMSVJBRFFDQUpLQUlBSWdsRkRRRWdBeUFKS0FJRUlnWkhCRUFDUUNBUVJRUkFJQVlnRDNFaEJnd0JDeUFGSUFaTERRQWdCaUFGY0NFR0N5QUdJQWRIRFFJTElBa29BZ2dnQTBjTkFBdEJBQXdCQzBFVUVCVWhDU0FLSUFSQkNHbzJBZ1FnQ2lBSk5nSUFJQWxCQ0dvaUJpQU9LQUlBTmdJQUlBWkJCR29nRGtFRWFoQmJHaUFLUVFFNkFBZ2dDVUVBTmdJQUlBa2dBellDQkFKQVFRQWdCU0FFS0FJTVFRRnFzeUkySUFRcUFoQWlOeUFGczVSZUd3MEFJQVFnQlNBRlFRRnJjVUVBUnlBRlFRTkpjaUFGUVFGMGNpSUhBbjhnTmlBM2xZMGlOa01BQUlCUFhTQTJRd0FBQUFCZ2NRUkFJRGFwREFFTFFRQUxJZ1VnQlNBSFNSc1F3d0VnQkNnQ0JDSUZJQVZCQVd0eFJRUkFJQVZCQVdzZ0EzRWhCd3dCQ3lBRElBVkpCRUFnQXlFSERBRUxJQU1nQlhBaEJ3c0NRQ0FIUVFKMElnY2dCQ2dDQUdvb0FnQWlBMFVFUUNBS0tBSUFJQVFvQWdnMkFnQWdCQ0FLS0FJQU5nSUlJQVFvQWdBZ0Iyb2dCRUVJYWpZQ0FDQUtLQUlBSWdNb0FnQWlCMFVOQVNBSEtBSUVJUWtDUUNBRklBVkJBV3NpQjNGRkJFQWdCeUFKY1NFSkRBRUxJQVVnQ1VzTkFDQUpJQVZ3SVFrTElBUW9BZ0FnQ1VFQ2RHb2dBellDQUF3QkN5QUtLQUlBSUFNb0FnQTJBZ0FnQXlBS0tBSUFOZ0lBQ3lBS0tBSUFJUWtnQ2tFQU5nSUFJQVFnQkNnQ0RFRUJhallDRENBS0VJc0JRUUVMT2dBTUlBc2dDVFlDQ0NBS1FSQnFKQUFnRFNBTEtBSUlOZ0tJQWlBTklBc3RBQXc2QUl3Q0lBdEJFR29rQUNBQUtBSWNLQUlBTFFBQVFRQkhJUWNNQWd0QkFDRUhJQVFvQWdBaUF5MEFBRVVOQVNBSUtBSVVJZ1ZCNXdCclFRUk5CRUJCQUNFRVFRQWhDU01BUWNBQmF5SURKQUFDUUNBQUlBZ1FqUXNpQjBVTkFDQUFJQWNRNUJraUJVVU5BQUpBQWtBQ1FBSkFJQWdvQWhRaUJFSG5BR3NPQlFBQUFRSUNBd3NnQTBLQWdJQ0FnQUUzQXJRQklBTWdBMEdRQVdvMkFyQUJJQUFnQ0JDTUN5RUhJQU5CQVRZQ1hDQURJQWMyQWtBZ0F5QURRVUJyTmdKWUlBTWdBeWtEV0RjRENDQURRZUFBYWlBRFFRaHFFTElKSVFjZ0JFSG5BRVlFUUNBRFFVQnJJZ1FnQUNBSVFRRVFiaUFISUFSQkJISVFKQXNnQXlBQUtBSUlRZENoQVNBSEVPTVpOZ0pVSUFVb0FnZ2lCRUYrY1VFRVJnUkFJQU5CQURZQ1VDQURRZ0EzQTBnZ0EwSUFOd05BSUFNZ0FFRUNFT0laTmdJNElBTWdBQ0FEUVVCcklBTkIxQUJxSUFOQk9Hb1FsQVUyQWxRTElBTkJrQUZxSUFOQjFBQnFFQ1FnQkJDekd3UkFJQUFvQWdnaEJDQURJQUFnQ0JDTUN6WUNRQ0FESUFSQm5aWUJJQU5CUUdzaUJCRG5DRFlDUUNBRFFaQUJhaUFFRUNRTElBQW9BZ0FnQ0JCNlFRQVFoUUVoQkNBRFFUaHFJZ1lnQUNBRFFUQnFJQU5CUUdzQ2Z5QUFLQUlFSVFVQ1FDQUVSUTBBSUFRb0FnUWlDa0hneXhKR0JFQWdCUkR0QXd3Q0N5QUVJQXBCc01zU1JnMEJHaUFLUWFqTUVrY05BQ0FFS0FJSUlncEZEUUFnQ2lnQ0JDSUpRZURMRWtZRVFDQUZJQVVRN1FNZ0JDZ0NEQkQvQWd3Q0N5QUVRUUFnQ1VHd3l4SkdHeUVKQ3lBSkN5SUVBbjhnQXlnQ3RBRkJBazhFUUNBRElBUWdBQ2dDQ0NJRklBUW9BZ0FvQWdnUkFRQTJBamdnQlNBRFFUaHFJQU5Ca0FGcUVOd0hEQUVMSUFNb0FyQUJLQUlBQ3hCcElnUVFXeERXQnlBRUlBWVFXeG9nQUNBSUlBTkJLR29nQkJCYkVKVUZJUVFnQnhBaklBTkJrQUZxRUNNTUF3c2dBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFSEtwUXdRR1NFRUlBTkJrQUZxSWdjZ0NCQllJQVFnQnhCTktBSUFMUUFBUVFCSElRUWdCeEFQR2d3Q0N5QURRYTZrQVVIenV3RWdCRUhxQUVZYk5nSmdJQUFvQWdnaEJDQURJQUFnQ0JDTUN6WUNrQUVnQkNBRFFlQUFhaUFEUVpBQmFoQ3BEeUVFSUFBb0FnQWdDQkI2UVFBUWhRRWlCeWdDQkVHd3l4SkhCRUFnQnlBQUtBSUlJZ1VnQnlnQ0FDZ0NDQkVCQUNFSklBTkJBVFlDSkNBRElBazJBa0FnQXlBRFFUaHFOZ0lnSUFNZ0F5a0RJRGNERUNBRElBUTJBamdnQlNBRFFVQnJJQU5Ca0FGcUlBTkJFR29RbHdJaUJSQ0xDeUVFSUFVUXFBRUxJQUFnQ0NBRFFSaHFJQU5Ca0FGcUlBY2dCQkJwRUZzUWxRVWhCQXdCQ3lBQUtBSWNJZ1FvQWdCQkFEb0FBQ0FFUWI3ZEN4QVpJUVFnQTBHUUFXb2lCeUFJRUZnZ0JDQUhFRTBvQWdBdEFBQkJBRWNoQkNBSEVBOGFDeUFEUWNBQmFpUUFJQVFoQnd3Q0MwRUJJUWNDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFWQk9Xc09Ld2dMQ3dzQ0FRTUxDd3NMQ3dzTEN3c0xDd3NMQ3dZTEN3c0hCQXNMQ3d3TURBd01EQXdNREF3TURBd0FDd0pBQWtBZ0JVSGdBV3NPRmdvTURBRUJBUUVCQVFFQkFRRUJBUUVCQVFFTURCQUFDd0pBSUFWQmt3RnJEZ1lHREE0T0RnNEFDeUFGUWI0Q2EwRUNTU0FGUWU0cmEwRUNTWElOQUNBRlJRMFBJQVZCREVZTkNpQUZRWk12UncwTEN5TUFRYUFDYXlJREpBQWdBeUFJTmdLY0FpQURJQUEyQXBnQ0lBTWdDRFlDbEFJZ0F5QUFOZ0tRQWlBRElBZzJBb3dDSUFNZ0FEWUNpQUlDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ0NnQ0ZDSUVRZU1CYXc0UUFRSURCQVFGQmdjSUNRb0xEQTBPRHdBTElBUkJ2Z0pyUVFKSklBUkI3aXRyUVFKSmNrVWdCRUdUTDBkeERROGdBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFSGgrd3NRR1NFRUlBTkIwQUZxSWdjZ0NCQllJQVFnQnhCTktBSUFMUUFBUVFCSElRUWdCeEFQR2d3UUN5QURRZEFCYWlJRUlBTkJrQUpxUVFBUTZ3RWdBMEVCTmdLRUFpQURJQVEyQW9BQ0lBTWdBeWtEZ0FJM0F3QWdBMEdZQW1wQjVnQWdBeENWQXlFRURBOExJQU5CMEFGcUlnUWdBMEdRQW1vaUIwRUFFT3NCSUFOQjJBRnFJQWRCQXhEckFTQURRUUkyQXZ3QklBTWdCRFlDK0FFZ0F5QURLUVA0QVRjRENDQURRWmdDYWtIbkFDQURRUWhxRUpVRElRUU1EZ3NnQTBIUUFXb2lCQ0FEUVpBQ2FpSUhRUUFRNndFZ0EwSFlBV29nQjBFREVPc0JJQU5CQWpZQzlBRWdBeUFFTmdMd0FTQURJQU1wQS9BQk53TVFJQU5CbUFKcVFlOEFJQU5CRUdvUWxRTWhCQXdOQ3lBRFFkQUJhaUlISUFOQmtBSnFJZ1JCQUJEckFTQURRZGdCYWlBRVFRVVE2d0VnQTBIZ0FXb2dCRUVFRU9zQklBTkJBellDN0FFZ0F5QUhOZ0xvQVNBRElBTXBBK2dCTndNWUlBTkJtQUpxUWZBQUlBTkJHR29RbFFNaEJBd01DeUFEUWRBQmFpSUVJQU5Ca0FKcVFRQVE2d0VnQTBIWUFXb2dBMEdJQW1vUTNCa2dBMEVDTmdMTUFTQURJQVEyQXNnQklBTWdBeWtEeUFFM0F5QWdBMEdZQW1wQjZBQWdBMEVnYWhDVkF5RUVEQXNMSUFOQjBBRnFJZ1FnQTBHUUFtcEJBQkRyQVNBRFFkZ0JhaUFEUVlnQ2FoRGNHU0FEUVFJMkFzUUJJQU1nQkRZQ3dBRWdBeUFES1FQQUFUY0RLQ0FEUVpnQ2FrSHBBQ0FEUVNocUVKVURJUVFNQ2dzZ0EwSFFBV29pQkNBRFFaQUNhaUlIUVFBUTZ3RWdBMEhZQVdvZ0IwRURFT3NCSUFOQkFqWUN2QUVnQXlBRU5nSzRBU0FESUFNcEE3Z0JOd013SUFOQm1BSnFRZWdBSUFOQk1Hb1FsUU1oQkF3SkN5QURRZEFCYWlJRUlBTkJrQUpxSWdkQkFCRHJBU0FEUWRnQmFpQUhRUU1RNndFZ0EwRUNOZ0swQVNBRElBUTJBckFCSUFNZ0F5a0RzQUUzQXpnZ0EwR1lBbXBCNlFBZ0EwRTRhaENWQXlFRURBZ0xJQU5CMEFGcUlnUWdBMEdRQW1vaUIwRUFFT3NCSUFOQjJBRnFJQWRCQXhEckFTQURRUUkyQXF3QklBTWdCRFlDcUFFZ0F5QURLUU9vQVRjRFFDQURRWmdDYWtIckFDQURRVUJyRUpVRElRUU1Cd3NnQTBIUUFXb2lCQ0FEUVpBQ2FpSUhRUUFRNndFZ0EwSFlBV29nQjBFREVPc0JJQU5CQWpZQ3BBRWdBeUFFTmdLZ0FTQURJQU1wQTZBQk53TklJQU5CbUFKcVFlc0FJQU5CeUFCcUVKVURJUVFNQmdzZ0EwSFFBV29pQkNBRFFaQUNhaUlIUVFBUTZ3RWdBMEhZQVdvZ0IwRURFT3NCSUFOQkFqWUNuQUVnQXlBRU5nS1lBU0FESUFNcEE1Z0JOd05RSUFOQm1BSnFRZW9BSUFOQjBBQnFFSlVESVFRTUJRc2dBMEhRQVdvaUJDQURRWkFDYWlJSFFRQVE2d0VnQTBIWUFXb2dCMEVERU9zQklBTkJBallDbEFFZ0F5QUVOZ0tRQVNBRElBTXBBNUFCTndOWUlBTkJtQUpxUWVvQUlBTkIyQUJxRUpVRElRUU1CQXNnQTBIUUFXb2lCQ0FEUVpBQ2FpSUhRUUFRNndFZ0EwSFlBV29nQjBFREVPc0JJQU5CQWpZQ2pBRWdBeUFFTmdLSUFTQURJQU1wQTRnQk53TmdJQU5CbUFKcVFld0FJQU5CNEFCcUVKVURJUVFNQXdzZ0EwSFFBV29pQkNBRFFaQUNhaUlIUVFBUTZ3RWdBMEhZQVdvZ0IwRURFT3NCSUFOQkFqWUNoQUVnQXlBRU5nS0FBU0FESUFNcEE0QUJOd05vSUFOQm1BSnFRZTBBSUFOQjZBQnFFSlVESVFRTUFnc2dBMEhRQVdvaUJDQURRWkFDYWlJSFFRQVE2d0VnQTBIWUFXb2dCMEVERU9zQklBTkJBallDZkNBRElBUTJBbmdnQXlBREtRTjROd053SUFOQm1BSnFRZTRBSUFOQjhBQnFFSlVESVFRTUFRc2dBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFSDUrd3NRR1NFRUlBTkIwQUZxSWdjZ0NCQllJQVFnQnhCTktBSUFMUUFBUVFCSElRUWdCeEFQR2dzZ0EwR2dBbW9rQUNBRUlRY01EZ3RCQUNFSElBaEJBQkE0SVFrZ0NFRUJFRGdoQkNBQUtBSVFJQWtRbEFFUWVpQUFLQUlBS0FLd0JrWUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRZnl0REJBWklRUWdEVUhvQUdvaUF5QUlFRmdnQkNBREVFMG9BZ0F0QUFCQkFFY2hCeUFERUE4YURBNExJQTFCbUFKcUlBQWdCQkNXQXlBTktBS1lBa1VORFNBTktBS2NBa1VORFNBTlFkZ0FhaEJuSVFVQ1FBSkFBa0FnQUNBSkVPMElRUU5yRGdRQUFnSUJBZ3RCQVNFSFFRQWhBd0pBSUFBb0FoUWdCQkNTQlNJRVJRMEFJQVFnQkNnQ0FDZ0NQQkVBQUNJRVJRMEFJQVFRaGc5REFBQ0FQMXNoQXdzZ0F3MFBJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkJtLzhMRUJraEJDQU5RZWdBYWlJRElBZ1FXQ0FFSUFNUVRTZ0NBQzBBQUVFQVJ5RUhJQU1RRHhvTUR3c2dEVUhvQUdvaUF5QUFJQUFvQWl3UWxnTWdCU0FERUZzYUlBVW9BZ0FvQWdSQitNc1NSZ1JBSUExQjZBQnFJZ01nQUNBTlFkQUFhaUFGRUZzUXd3WWdCU0FERUZzYUN5QU5RUUEyQW5nZ0RVSUFOd053SUExQ0FEY0RhQ0FOSUFBb0FnQWdBQ2dDQkJEc0F4Q1RCRFlDaUFJZ0JTQUFJQTFCNkFCcUlBVkJCR29nRFVHSUFtb1E0Z1UyQWdRZ0JTZ0NBQ0lFS0FJRUlnTkJrTXdTUnlBRVJYSUVmeUFEQlNBRklBUW9BZ2dpQkRZQ0FDQUVLQUlFQzBIWXpCSkhEUUFnQlNBRUtBSUlJZ00yQWdBZ0F3MEFJQTFCNkFCcVFibWhCVUdQSEVFSElBMUJpQUpxRUIwaUF4QVhJZ1JCR0dwQi9Mc0lFQTRhSUFRUUdDQURFQjRMQWtBZ0JTZ0NBQ0lFQkVBZ0JTZ0NCQ0lERFFFTElBMUI2QUJxSWdNZ0FDQUpFSllESUFVZ0F4QmJHaUFGS0FJRUlRTWdCU2dDQUNFRUN5QUVSU0FEUlhJTkRTQUVLQUlFUWZqTEVrWUVRQ0FOUWVnQWFpSURJQUFnRFVISUFHb2dCUkJiRU1NR0lBVWdBeEJiR2dzZ0RVRUFOZ0o0SUExQ0FEY0RjQ0FOUWdBM0EyZ2dBQ0FBSUExQjZBQnFJQVZCQkdvZ0RVR1lBbXBCQkhJUTVoa1F5UUVhSUFBb0Fod29BZ0F0QUFCQkFFY2hCd3dOQ3dKQUFrQUNRQ0FBSUFoQkFCQTRJZ01RN1FoQkEyc09Bd0FDQVFJTElBQWdDQkJnRUpRQ1FRUTJBalFNRGdzZ0RVR0lBbW9nQUNnQ0lDQUFLQUlvRUpNQ0VGUWhBeUFBS0FJSUlRUWdEVUVBTmdKNElBMUNBRGNEY0NBTlFnQTNBMmdnRFNBRUlBMUI2QUJxSWdRZ0F4RGtCVFlDbUFJZ0RVRUFOZ0o0SUExQ0FEY0RjQ0FOUWdBM0EyZ2dEU0FBS0FJQUlBQW9BZ1FRN0FNUWt3UTJBbGdnRFNBQUlBUWdEVUdZQW1vZ0RVSFlBR29RNGdVMkFwZ0NBa0FnQUNnQ0FDQUlFSHBCQUJDRkFTSUVFS1VQUlFSQUlBQW9BaHdpQkNnQ0FFRUFPZ0FBSUFSQndLME1FQmtoQnlBTlFlZ0FhaUlFSUFnUVdDQUhJQVFRVFNnQ0FDMEFBRUVBUnlFSElBUVFEeG9NQVFzZ0FDQUlJQTFCUUdzZ0RVSG9BR29nQkNBTktBS1lBaEJwRUZzUWp3c2hCd3NnQXhBUEdnd05DeUFOUWVnQWFpQUFJQU1RbGdNZ0RTZ0NhQ0lEUlEwTFFRQWhCeUFOS0FKc1JRME1Ba0FnQXlnQ0JDSUVRZmpMRWtZRVFDQU5RWWdDYWlJRElBQWdEVUU0YWlBTlFlZ0FhaUlFRUZzUXd3WWdCQ0FERUZzYURBRUxJQVJCa013U1J3UkFJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkIxTk1FRUJrYURBNExJQTBnQXlnQ0NEWUNhQXNnQUNBSUlBMUJNR29nRFVIb0FHb1FXeENWQlNFSERBd0xRUUFoQnlBTlFZZ0NhaUFBSUFoQkFCQnVJQTFCbUFKcUlBQWdDRUVCRUc0Z0FDZ0NIQ2dDQUMwQUFFVU5DeUFOS0FLSUFpZ0NCRUg0eXhKR0JFQWdEVUhvQUdvaUF5QUFJQTFCS0dvZ0RVR0lBbW9pQkJCYkVNTUdJQVFnQXhCYkdnc2dEU2dDbUFJb0FnUkIrTXNTUmdSQUlBMUI2QUJxSWdNZ0FDQU5RU0JxSUExQm1BSnFJZ1FRV3hEREJpQUVJQU1RV3hvTElBMUJBRFlDZUNBTlFnQTNBM0FnRFVJQU53Tm9JQUFnQUNBTlFlZ0FhaUFOUVlnQ2FrRUVjaUFOUVpnQ2FrRUVjaERtR1JESkFSb2dBQ2dDSENnQ0FDMEFBRUVBUnlFSERBc0xJQUFnQ0VFQUVEZ2lBeER0Q0NJRUJFQWdBQ0FJRUdBUWxBSWdCRFlDTkNBQUlBTVFsQUloQXlBQUlBZ1FZQkNVQWtFa2FpQURRU1JxRUZzYURBc0xJQTFCR0dvaUJDQUFJQU1RbGdNZ0RVSG9BR29nQUNBRUlBZ1FqUThnRFNnQ2FFVU5DVUVBSVFjZ0RTZ0NiRVVOQ2lBQUlBZ2dEVUVRYWlBTlFlZ0FhaEJiRUpVRklRY01DZ3RCQUNFRVFRQWhCaU1BUWFBQmF5SURKQUFnQTBHWUFXb2dBQ0FJUVFBUWJpQURRWkFCYWlBQUlBaEJBUkJ1SUFNb0FwZ0JJZ2NFUUNBSFFRQWdCeWdDQkVHb3pCSkdHeUVHQ3lBREtBS1FBU0lIQkVBZ0IwRUFJQWNvQWdSQnFNd1NSaHNoQkFzZ0RVRUlhaUVGQWtBQ1FBSkFJQUFvQWdBZ0NCQjZRUUFRaFFFaUIwVU5BQ0FHUlNBSEtBSUVJZ2xCd013U1IzSU5BQ0FIUVFBZ0NVSEF6QkpHR3lJSEtBSUlJZ2tnQmlnQ0NFY05BQ0FKSUFRb0FnaEhEUUFnQnlnQ0RDSUpJQVFvQWd4SERRQWdCeWdDRUNBR0tBSU1SZzBCQ3lBQUtBSWNJZ1FvQWdCQkFEb0FBQ0FFUWVmZ0NSQVpJUWNnQTBIZ0FHb2lCQ0FJRUZnZ0J5QUVFRTBhSUFRUUR4b2dCUkJuR2d3QkN5QURRb0NBZ0lDQUFUY0NoQUVnQXlBRFFlQUFhallDZ0FFZ0EwR1lBV3BCQkhJaEN5QURRWkFCYWtFRWNpRU9RUUFoQkFOQUlBUWdDVThFUUNBRElBY2dBQ2dDQ0NJRUVMWWFOZ0l3SUFVZ0J5QUVJQU5CTUdvZ0EwSGdBR29pQkJEY0J4QnBHaUFFRUNNTUFnc2dBMEtBZ0lDQWdBRTNBbFFnQXlBRFFUQnFOZ0pRUVFBaENTQURRUUEyQWlnZ0EwSUFOd01nSUFOQ0FEY0RHQ0FESUFBZ0JCRGhCVFlDRUNBRElBQWdBMEVZYWlBT0lBTkJFR29RbEFVMkFpd0RRQ0FIS0FJUUlBbE5CRUFnQXlBR0lBQW9BZ2dpQ1JENkNEWUNFQ0FESUFrZ0EwRVFhaUFEUVRCcUlna1EzQWMyQWhnZ0JFRUJhaUVFSUFOQjRBQnFJQU5CR0dvUUpDQUpFQ01nQnlnQ0RDRUpEQUlGSUFOQkFEWUNLQ0FEUWdBM0F5QWdBMElBTndNWUlBTWdBQ0FKRU9FRk5nSU1JQU1nQUNBRFFSaHFJZ29nQ3lBRFFReHFJZzhRbEFVMkFoQWdBMEVBTmdJb0lBTkNBRGNESUNBRFFnQTNBeGdnQTBFUU5nSU1JQU1nQUNBS0lBOGdBMEVzYWlBRFFSQnFFT2dJTmdJWUlBbEJBV29oQ1NBRFFUQnFJQW9RSkF3QkN3QUxBQXNBQ3lBRFFhQUJhaVFBSUFBZ0NDQUZFSlVGSVFjTUNRc2pBRUh3QUdzaUF5UUFJQUFvQWdBZ0NCQjZRUUFRaFFFaEJ5QURRZWdBYWlJRUlBQWdDRUVBRUc0Z0EwSGdBR29nQUNBSVFRRVFiaUFEUWRnQWFpQUFJQWhCQWhCdUlBTkJ5QUJxRUZVZ0EwRTRhaUFBS0FJZ0lBZ1FZQkNUQWhCVUlRVUNRQ0FBSUFnZ0EwRXdhaUFFRUZzUWh3OGlDUVJBSUFOQnlBQnFJZ29nQlJEZ0FpQUFLQUlJSVFRZ0EwRUFOZ0lvSUFOQ0FEY0RJQ0FEUWdBM0F4Z2dBeUFFSUFvUTBnSTJBaFFnQkNBRFFSaHFJQU5CRkdvZ0EwSG9BR3BCQkhJUTJ4a01BUXNnQTBFWWFpSUVJQUFvQWlBZ0JSRGxCU0FEUWNnQWFpSUtJQVFRbmdFZ0JCQVBHaUFESUFjZ0FDZ0NDQ0lHSUFjb0FnQW9BZ2dSQVFBMkFoZ2dBMEVBTmdJVUlBWWdDaUFFSUFOQkZHb2dBMEhvQUdwQkJISVEyUmtoQ2lBQUtBSUlJUVlnQTBFQU5nSW9JQU5DQURjRElDQURRZ0EzQXhnZ0FDQUdJQVFnQ2hEWUdSREpBUm9MSUFOQkFEWUNLQ0FEUWdBM0F5QWdBMElBTndNWUlBTWdBQ2dDQ0NBRFFjZ0FhaERTQWpZQ0VDQURJQUFnQTBFWWFpQURRUkJxSUFOQjJBQnFRUVJ5RU9JRklnUTJBaFFDZjBFQUlBUkZEUUFhSUFBZ0FDZ0NDQ0FEUVJScUlBTkI0QUJxUVFSeUVJRUpFTWtCR2lBSkJFQWdBQ2dDSENnQ0FDMEFBRUVBUnd3QkN5QUFJQWdnQTBFSWFpQUhJQUFvQWdnZ0EwSElBR29RMGdJUWFSQ1BDd3NoQnlBRkVBOGFJQU5CeUFCcUVBOGFJQU5COEFCcUpBQU1DQXNqQUVId0FHc2lCQ1FBSUFBb0FnQWdDQkI2UVFBUWhRRWhCeUFFUWVnQWFpQUFJQWhCQUJCdUlBUkI0QUJxSWdNZ0FDQUlRUUVRYmlBRVFkQUFhaEJWSUFSQlFHc2dBQ2dDSUNBSUVHQVFrd0lRVkNFRkFrQWdBQ0FJSUFSQk9Hb2dBeEJiRUljUElna0VRQ0FFUWRBQWFpSUtJQVVRNEFJZ0FDZ0NDQ0VESUFSQkFEWUNNQ0FFUWdBM0F5Z2dCRUlBTndNZ0lBUWdBeUFLRU5JQ05nSVlJQU1nQkVFZ2FpQUVRUmhxSUFSQjRBQnFRUVJ5RU5zWkRBRUxJQVJCSUdvaUF5QUFLQUlnSUFVUTVRVWdCRUhRQUdvaUNpQURFSjRCSUFNUUR4b2dCQ0FISUFBb0FnZ2lCaUFIS0FJQUtBSUlFUUVBTmdJZ0lBUkJBRFlDR0NBR0lBb2dBeUFFUVJocUlBUkI0QUJxUVFSeUVOa1pJUW9nQUNnQ0NDRUdJQVJCQURZQ01DQUVRZ0EzQXlnZ0JFSUFOd01nSUFBZ0JpQURJQW9RMkJrUXlRRWFDeUFFUVJocUlBQWdDQ0FFUVJCcUlBUkJJR29nQnlBQUtBSUlJQVJCMEFCcUVOSUNFR2tRV3lBSUVIcEJBaERYR1VFQUlRTUNRQ0FFS0FJWVJRMEFJQVFvQWh4RkRRQWdBQ0FBS0FJSUlBUkJHR3BCQkhJZ0JFSG9BR3BCQkhJUWdRa1F5UUVhSUFrRVFDQUFLQUljS0FJQUxRQUFRUUJISVFNTUFRc2dBQ0FJSUFSQkNHb2dCeUFBS0FJSUlBUkIwQUJxRU5JQ0VHa1Fqd3NoQXdzZ0JSQVBHaUFFUWRBQWFoQVBHaUFFUWZBQWFpUUFJQU1oQnd3SEN5TUFRWkFCYXlJSEpBQWdCMEdBQVdvZ0FDZ0NJQ0FJUVFBUU9CQ1RBaEJVSVFrZ0IwRUFOZ0o0SUFkQ0FEY0RjQ0FIUWdBM0EyZ2dBQ2dDQ0NJRkVCd2dDU2dDQUNFRUlBY2dDU2dDQkNBSkxRQUxJZ01nQTBFWWRFRVlkVUVBU0NJREd6WUNaQ0FISUFRZ0NTQURHellDWUNBSElBY3BBMkEzQXdnZ0IwRXdhaUlFSUFWQmlBSnFJQWRCQ0dvUW1BTWdCeUFBSUFkQjZBQnFJZ1VnQkJDS0N6WUNmQ0FIUW9DQWdJQ0FBVGNDVkNBSElBUTJBbEFnQlVFRWNpRVBRUUVoQmdKQUEwQWdDQkRJQVNBR1N3UkFJQWdnQmhBNElRUWdCMEhvQUdvUVp5RUZBa0FnQUNnQ0VDQUVFSlFCSWdvRWZ5QUFJQW9RZ1JvRlFRQUxCRUFnQjBFb2FpRUxJQUFvQWdBaERpTUFRUkJySWdva0FDQUtJQTRvQXJRRklBUVFsQUUyQWd3Q1FDQU9RZEFIYWlBS1FReHFFS1VKSWc0RVFDQUxJQTVCREdvUTV4Z2FEQUVMSUFzUTZCZ0xJQXBCRUdva0FBSkFJQUFvQWdBZ0JDQUhMUUFxRUw0R0lnUkZCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdENFFFUUdTZ0NBQzBBQUVFQVJ5RUREQUVMSUFkQklHb2lDaUFBSUFRUVlCQ1dBeUFGSUFvUVd4b2dCU0FBS0FJQUlBUVEzQWcyQWdBTElBUU5BUXdFQ3lBSFFTaHFJZ1FnQUNBSUlBWVFiaUFGSUFRUVd4b0xJQU1oQkVFQUlRTWdCU2dDQUVVTkFpQUhLQUpzUlEwQ0lBZEJLR29pQXlBQUlBZEJHR29nQlJCYklBQW9BaEFnQ0NBR0VEZ1FsQUVRalE4Z0JTQURFRnNhSUFkQk1Hb2dEeEFrSUFaQkFXb2hCaUFFSVFNTUFRc0xJQUFvQWh3b0FnQXRBQUJGQkVCQkFDRUREQUVMSUFBb0FnZ2dCMEg4QUdvZ0IwRXdhaENKQ3lFRElBQW9BZ0FnQ0JCNlFRQVFoUUVpQkVVRVFDQUFLQUljSWdNb0FnQkJBRG9BQUNBRFFiMkFEQkFaSVFNZ0IwSG9BR29pQkNBSUVGZ2dBeUFFRUUwb0FnQXRBQUJCQUVjaEF5QUVFQThhREFFTElBUW9BZ1JCZ01zU1JnUkFJQUFvQWdnaEJDQUhRUUEyQW5nZ0IwSUFOd053SUFkQ0FEY0RhQ0FBSUFRZ0IwSG9BR29nQXhDU0R4REpBVUVBUnlFRERBRUxJQUFnQ0NBSFFSQnFJQVFnQXhCcEVKVUZJUU1MSUFkQk1Hb1FJeUFKRUE4YUlBZEJrQUZxSkFBZ0EwRUJjU0VIREFZTFFRQWhCQ01BUVNCcklnTWtBQUovQTBBZ0JFRURSd1JBSUFnZ0JCQTRJUWNnQUNnQ0ZDQUhFSklGSWdjRVFDQURRUlJxSUFSQkFuUnFJQWNRaFJnMkFnQWdCRUVCYWlFRURBSUZJQUFvQWh3aUJDZ0NBRUVBT2dBQUlBUkI1K2tCRUJrb0FnQXRBQUJCQUVjTUF3c0FDd3NnQXlBREtBSVVJZ1EyQWhBQ2Z5QUVRUUpIQkVBZ0FDZ0NIQ0lFS0FJQVFRQTZBQUFnQkVHSm93d1FHVUhCM3dzUUdTQURRUkJxRUM4TUFRc2dBeWdDSENJSFFRaHhCRUFnQXlnQ0dDRUZJQU1nQjBGM2NTSUVOZ0lNQWtBQ1FBSkFJQWRCZ0FKeEJFQWdCVUVDUndSQUlBQW9BaHdpQkNnQ0FFRUFPZ0FBSUFSQmhxc0VFQmtNQmdzZ0FDQUFLQUlJSWdRZ0JFR2w2Z0VRMWhrUW53c1F5UUVhSUFNZ0IwSDNmWEVpQkRZQ0RDQUhRY0FBY1EwQkRBTUxJQWRCd0FCeFJRMENJQVZCQVVZTkFRc2dBQ2dDSENJRUtBSUFRUUE2QUFBZ0JFRzNxd1FRR1F3REN5QUFJQUFvQWdnaUJDQUVRY1hxQVJEV0dSQ2ZDeERKQVJvZ0F5QUhRYmQvY1NJRU5nSU1DMEVCSUFSRkRRSWFJQUFvQWh3aUJDZ0NBRUVBT2dBQUlBUkJvZTBMRUJrZ0EwRU1haEF2REFFTElBQW9BaHdpQkNnQ0FFRUFPZ0FBSUFSQi91TURFQmtMS0FJQUxRQUFRUUJIQ3lFSElBTkJJR29rQUF3RkN5QUFLQUlBSUFnUWtCa05CQ0FBS0FJY0lnUW9BZ0FoQXdzZ0EwRUFPZ0FBSUFSQnQ4TUtFQmtoQXlBTklBZ29BaFEyQW9nQ0lBTWdEVUdJQW1vUUwwSHR0UXdRR1NFRUlBMUI2QUJxSWdNZ0NCQllJQVFnQXhCTktBSUFMUUFBUVFCSElRY2dBeEFQR2d3REMwRUFJUVJCQUNFSFFRQWhEMEVBSVE0akFFR3dBbXNpQlNRQUlBVkNnSUNBZ0lBQk53S2tBaUFGSUFWQmdBSnFOZ0tnQWlBSUtBSVVJUkVDUUNBQUlBZ1FqUXNpRTBVTkFDQUZJQUFnQ0JDTUN6WUMwQUVnQlVHQUFtb2dCVUhRQVdvUUpDQVJRZGNBYXlJRFFSSkxRUUVnQTNSQi80MFFjVVZ5UlFSQUl3QkJNR3NpQ1NRQUlBaEJBQkE0SVFNQ1FDQUFLQUlBSUFOQkFCQytCaUlEUlFSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQjgrNEpFQmtoQ2lBSlFRaHFJZ01nQ0JCWUlBb2dBeEJOR2d3QkN5QUpRU0JxSUFBb0FpQWdBeEJnRUpNQ0VGUWhBeUFBS0FJSUlRUWdDVUVJYWlJS0lBQWdDQkRqQ0NBRUlBb2dBeERrQlNFRUN5QURFQThhSUFsQk1Hb2tBQ0FGSUFRMkF0QUJJQVJGRFFFZ0JVR0FBbW9nQlVIUUFXb1FKQXNnQUNnQ0FDQVRFTndJRU9FWklndEZCRUFnQUNnQ0hDZ0NBRUVBT2dBQURBRUxJQVZCQVRZQy9BRWdCVUhRQVdvaENTTUFRZEFBYXlJS0pBQUNRQ0FBS0FJQUxRQ1VBMFVFUUNBQUtBSWNLQUlBUVFBNkFBQWdDVUlBTndJWUlBbENBRGNDRUNBSlFnQTNBZ2dnQ1VJQU53SUFJQWxDZ0lDQWdJQUJOd0lrSUFrZ0NUWUNJQXdCQ3lBQUlBZ1FqUXNpQTBVRVFDQUpRZ0EzQWdBZ0NVSUFOd0lZSUFsQ0FEY0NFQ0FKUWdBM0FnZ2dDVUtBZ0lDQWdBRTNBaVFnQ1NBSk5nSWdEQUVMSUFnUXlBRkZCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdvOXdzUUdTRUVJQXBCS0dvaUF5QUlFRmdnQkNBREVFMGFJQU1RRHhvZ0NVSUFOd0lZSUFsQ0FEY0NFQ0FKUWdBM0FnZ2dDVUlBTndJQUlBbENnSUNBZ0lBQk53SWtJQWtnQ1RZQ0lBd0JDeUFLUWNnQWFpQUFJQWhCQVJCdUFrQWdDaWdDU0FSQUlBb29Ba3dOQVFzZ0NVSUFOd0lBSUFsQ0FEY0NHQ0FKUWdBM0FoQWdDVUlBTndJSUlBbENnSUNBZ0lBQk53SWtJQWtnQ1RZQ0lBd0JDeUFBSUFNUTVCa2lBMFVFUUNBSlFnQTNBZ0FnQ1VJQU53SVlJQWxDQURjQ0VDQUpRZ0EzQWdnZ0NVS0FnSUNBZ0FFM0FpUWdDU0FKTmdJZ0RBRUxJQU1vQWdnaUJFRUZUUVIvSUFSQkFuUkIvUDhNYWlnQ0FBVkJBQXNoQmlBRUVMTWJJUmdnQmtFRWEwRjhUUVJBSUFBb0Fod2lCQ2dDQUVFQU9nQUFJQVJCM3VnSkVCa2dBeWdDQkVFRWFoQ3dBMEdyd1FrUUdTRUVJQXBCS0dvaUF5QUlFRmdnQkNBREVFMGFJQU1RRHhvTElBb2dCaUFZYWlBSUtBSVVRZHNBYXlJVVFRUkphaUlTTmdKRUFrQUNRQ0FLS0FKSUVPNERJZ01RcHc5RkJFQWdBeENsRDBVTkFRdEJBU0VRSUFwQkFUWUNRQXdCQ3lBREtBSUVRYWpNRWtZRVFDQURLQUlJSVFRZ0NpQURLQUlNSWhBMkFrQWdCQ0VESUJBTkFRc2dBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSEM1QXNRR1NFRUlBcEJLR29pQXlBSUVGZ2dCQ0FERUUwYUlBTVFEeG9nQ1VJQU53SVlJQWxDQURjQ0VDQUpRZ0EzQWdnZ0NVSUFOd0lBSUFsQ2dJQ0FnSUFCTndJa0lBa2dDVFlDSUF3QkN5QVFJQkpKQkVBZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBIVjNBb1FHU0FLUWNRQWFoQXZRZU8vQ1JBWklBcEJRR3NRTDBHSWdBd1FHU0VFSUFwQktHb2lBeUFJRUZnZ0JDQURFRTBhSUFNUUR4b2dDVUlBTndJWUlBbENBRGNDRUNBSlFnQTNBZ2dnQ1VJQU53SUFJQWxDZ0lDQWdJQUJOd0lrSUFrZ0NUWUNJQXdCQ3lBSklBazJBaUFnQ1VLQWdJQ0FnQUUzQWlRZ0NpQVVRUVJKSWdRNkFEUWdDaUFETmdJd0lBb2dCallDTENBS0lBQTJBaWdnQ2tFNGFpQUtRY2dBYWhCYkdpQVlCRUFnQ2lBS1FTaHFFTVlaTmdJWUlBa2dDa0VZYWhBa0lBQW9BZ2doQkNBS0lBQWdCaERoQlRZQ0dDTUFRUkJySWdZa0FDQUdJQXBCeUFCcVFRUnlLQUlBTmdJTUlBWWdDaWdDR0RZQ0NDQUVJQVJCMkFKcUlBWkJER29nQmtFSWFoRCtDQ0VFSUFaQkVHb2tBQ0FLSUFRMkFpUWdBeENuRHdSQUlBb2dBQ2dDQ0VIdTVRUWdDa0VrYWhEbkNDSUVOZ0lrQ3lBS1FSaHFJZ1lnQUNBS1FSQnFJQU1nQkJCcEVPWUlJQWtnQmtFRWNoQWtEQUVMSUFRZ0VDQVNSM0pGQkVBZ0NrRVlhaUlESUFBZ0NrRUlhaUFLUWNnQWFoQmJFTllISUFrZ0EwRUVjaEFrREFFTElBb2dDa0VvYWhER0dUWUNHQ0FKSUFwQkdHb1FKQXNnQ2tIUUFHb2tBQ0FGS0FMMEFTSURCRUFnQlNnQzhBRWlCeUFEUVFKMGFpRURBa0FDUUFKQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQURRQ0FESUFkR0JFQUNRRUVCSVFrZ0JTQUZLQUw4QVVFQmFqWUMvQUVnQlNBSUVNZ0JOZ0xNQVNBRklBZzJBc2dCSUFVZ0FEWUN4QUVnQlNBRlFZQUNhallDd0FFZ0JTQUZRY3dCYWpZQ3ZBRWdCU0FGUWZ3QmFqWUN1QUVnQlVHb0FXb1FWU0FSUWRjQWF3NE5BQUFFQkFBQUJBUUhBd2tIQmdVTEJTQUZJQWNvQWdBMkFuZ2dCMEVFYWlFSElBVkJnQUpxSUFWQitBQnFFQ1FNQVFzTElBVkJxQUZxUWRlMUJCRFNBVUVBSVFsQkFRd0lDeUFGUWFnQmFrSHg3d0VRMGdFZ0N5Z0NCRUdnelJKR0RRWWdCVUtBZ0lDQWdBRTNBcHdCSUFVZ0JVSDRBR29pQXpZQ21BRWdCVUh3QUdvaUJDQUFJQWdnQlNnQy9BRVFiaUFGUVRCcUlnY2dBQ0FFRU9ZSUlBTWdCMEVFY2hBa0lBVW9BcUFDSWdjZ0JTZ0NwQUpCQW5ScUlRTURRQ0FESUFkR0JFQWdCVUdBQW1vZ0JVSDRBR29pQXhDZ0N5QURFQ01NQ0FVZ0JTQUhLQUlBTmdJd0lBZEJCR29oQnlBRlFmZ0FhaUFGUVRCcUVDUU1BUXNBQ3dBTElBVkJxQUZxUWJIdkF4RFNBVUVCSVE5QkFDRUhRUUFoQ1VFQklRNGdCVUc0QVdvUTN4bEZEUW9NQndzZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBINDVBc1FHU0VFSUFWQitBQnFJZ01nQ0JCWUlBUWdBeEJOS0FJQUxRQUFRUUJISVFjZ0F4QVBHZ3dKQ3lBRlFhZ0Jha0gxNmdNUTBnRWdCU2dDL0FFaUF5QUZLQUxNQVVrRVFDQUZRZmdBYWlJRUlBQWdDQ0FERUc0Z0JVSG9BR29nQkJCYklRb2pBRUhBQVdzaUF5UUFJQXNFZnlBTFFRQWdDeWdDQkVHQXpoSkdHd1ZCQUFzaENTQUtLQUlBRU80RElRUUNmeUFKUlFSQUlBQW9BaHdpQkNnQ0FFRUFPZ0FBSUFSQjhJb01FQmtoQnlBRFFSQnFJZ1FnQ0JCWUlBY2dCQkJOR2lBRUVBOGFRUUFNQVFzQ2Z5QUFLQUlBSVFjZ0NTZ0NEQ0VKSXdCQkVHc2lCaVFBQW44Q1FDQUpRUkZMRFFCQkFTQUpkQ0lRUWFTU0NuRkZCRUFnRUVISXBBRnhSUVJBUVFFZ0NYUkJrTWtFY1VVTkFpQUhRWkFEYWhEdEF3d0RDeUFIUVpBRGFoRHNBd3dDQ3lBSFFaQURhaENXQlF3QkN5QUhRUUE2QUpRRElBZEJxQVJxUWJmUkNSQVpJUkFnQmlBSk5nSU1JQkFnQmtFTWFoQ1JCUnBCQUFzaEVDQUdRUkJxSkFCQkFDQVFSUTBBR2lBSFFaQURhaUFRUVFRUS93SUxJZ2RGQkVBZ0FDZ0NIQ2dDQUVFQU9nQUFRUUFNQVFzQ1FDQUhLQUlFUWFqTUVrWUVRQ0FIS0FJTVFRUkdEUUVMSUFOQkVHcEJ1YUVGUWFZdlFRY2dBMEd3QVdvUUhTSUdFQmNpRUVFWWFrR1JuQWdRRGhvZ0VCQVlJQVlRSGdzQ1FDQUhFS2dhRFFBZ0J4Q2xHZzBBSUFjUXBob05BQ0FEUVJCcVFibWhCVUdvTDBFSElBTkJzQUZxRUIwaUJoQVhJaEJCR0dwQnhPVUlFQTRhSUJBUUdDQUdFQjRMQWtBZ0JDQUhSZzBBQWtBQ1FDQUVFS1lQSUFjUXFCcEhEUUFnQkJEM0NDQUhFS1VhUncwQUlBUVFwQThnQnhDbUdrWU5BUXNnQUNnQ0hDSUVLQUlBUVFBNkFBQWdCRUhGand3UUdTRUhJQU5CRUdvaUJDQUlFRmdnQnlBRUVFMGFJQVFRRHhwQkFBd0NDeUFBS0FJQUlRY2pBRUVRYXlJR0pBQUNmeUFKUVFKckloQkJFRThFUUNBSFFRQTZBSlFESUFkQnFBUnFRYmZSQ1JBWklRY2dCaUFKTmdJTUlBY2dCa0VNYWhDUkJScEJBQXdCQ3lBUVFRSjBRWVNDRFdvb0FnQUxJUWNnQmtFUWFpUUFJQU1nQnpZQ0RDQUhRUVZyUVh0TkJFQWdBMEVRYWtHNW9RVkJ1aTlCQnlBRFFiQUJhaEFkSWdrUUZ5SUdRUmhxUWR6VkNCQU9HaUFHRUJnZ0NSQWVDd0pBQWtBZ0JCQ2pEMFVFUUNBRElBUkJBQ0FFS0FJRVFhak1Fa1liS0FJTUlnWTJBZ2dnQmlBSFNRMEJJQVpCQTBzTkF3d0NDMEVCSVFZZ0EwRUJOZ0lJSUFkQkFra05BUXNnQUNnQ0hDSUVLQUlBUVFBNkFBQWdCRUc5aWd3UUdTQURRUWhxRUM5QjVzUUpFQmtnQTBFTWFoQXZRZmovQ3hBWklRY2dBMEVRYWlJRUlBZ1FXQ0FISUFRUVRSb2dCQkFQR2tFQURBSUxJQVFRb3c5RkJFQWdCRUVBSUFRb0FnUkJxTXdTUmhzb0FnZ2hCQXNnQUNnQ0JDQUVRUVFRL3dJaEJ5QURRb0NBZ0lDQUFUY0NOQ0FESUFOQkVHb2lDVFlDTUNBSklBcEJCR29RSkNBRFFiQUJha0VFY2lFSkEwQWdCa0VFUndSQUlBTkJzQUZxSUFBb0FnQWdCQkQxQ2lBRFFSQnFJQWtRSkNBR1FRRnFJUVlNQVFzTElBTWdCeUFBS0FJSUlnUWdCeWdDQUNnQ0NCRUJBRFlDc0FFZ0NpQUVJQU5Cc0FGcUlBTkJFR29pQkJEY0J6WUNCQ0FFRUNNTElBb29BZ1FMSVFRZ0EwSEFBV29rQUNBRklBUTJBakFnQkVVTkJ5QUZRWUFDYWlBRlFUQnFFQ1FnQlNBRktBTDhBVUVCYWpZQy9BRU1BZ3NnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdXcXd3UUdTRUVJQVZCK0FCcUlnTWdDQkJZSUFRZ0F4Qk5LQUlBTFFBQVFRQkhJUWNnQXhBUEdnd0lDeUFGUWFnQmFrSEMvd1FRMGdFTFFRQWhCMEVBSVFrTUF3c2dCVUdvQVdwQm5POERFTklCUVFBaEIwRUJJUTRnQlVHNEFXb1EzeGtOQWd3RkN5QUZJQVVvQXZ3QlFRRnFOZ0w4QVVFQUN5RUhRUUVoRGd0QkFDRUdJQVZCQURZQ1pDQUZLQUw4QVNJRElBVW9Bc3dCSWdSSkJFQWdCU0FJSUFNUU9DSUdOZ0prSUFVZ0JTZ0MvQUZCQVdvaUF6WUMvQUVnQlNnQ3pBRWhCQXNnQmtFQmNVVWdBeUFFVDNKRkJFQWdEd1JBSUFBb0Fod2lBeWdDQUVFQU9nQUFJQU5CaU80TEVCa2hCQ0FGUWZnQWFpSURJQWdRV0NBRUlBTVFUU2dDQUMwQUFFRUFSeUVISUFNUUR4b01CQXNnQ1FSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQnllMExFQmtoQkNBRlFmZ0FhaUlESUFnUVdDQUVJQU1RVFNnQ0FDMEFBRUVBUnlFSElBTVFEeG9NQkFzZ0JVR29BV3BCL2NVQkVQZ0dHaUFGUWZnQWFpSURJQUFnQ0NBRktBTDhBUkJ1SUFWQmdBSnFJQU5CQkhJUUpDQUZJQVpCQVhNaUJqWUNaQ0FGSUFVb0F2d0JRUUZxSWdNMkF2d0JJQVVvQXN3QklRUUxBa0FnQmtFQ2NVVWdBeUFFVDNKRkJFQWdEZ1JBSUFWQnFBRnFRYmlBQXhENEJob0xBa0FnQ1NBUGNrRUJSZ1JBSUFnZ0JTZ0MvQUVRT0NFRVFRQWhBd0pBSUFBb0FoUWdCQkNTQlNJS1JRMEFBa0FnQ2lBS0tBSUFLQUk4RVFBQUlnUUVRQ0FFRUlZUFF3QUFBQUJiSVFRTUFRdEJBU0VFSUFvZ0NpZ0NBQ2dDV0JFQUFFVU5BUXNnQkNFREN5QUREUUVnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEhuakFjUUdTRUVJQVZCK0FCcUlnTWdDQkJZSUFRZ0F4Qk5LQUlBTFFBQVFRQkhJUWNnQXhBUEdnd0dDeUFGUWZnQWFpQUFJQWdnQlNnQy9BRVFiaUFMS0FJRVFhRE5Fa1lFUUNBRlFUQnFJZ01nQUNBRlFkZ0FhaUFGUWZnQWFpSUVFRnNRNWdnZ0JDQURFRnNhQ3lBRlFZQUNhaUFGUWZnQWFrRUVjaEFrQ3lBRklBWkJBbk1pQmpZQ1pDQUZJQVVvQXZ3QlFRRnFOZ0w4QVF3QkN3SkFJQkZCM3dCckRnUUFBUUVBQVFzZ0N3Ui9BbjlCQUNBTEtBSUVJZ01wQXhCQ2dJQ1NnSUtBZ0lBRWd5STFJRFZDQVgyRFVBMEFHa0VCSUFNUXBCa05BQm9nQTBIUXpSSVFTQXNGUVFBTERRQWdCU0FBS0FJQUlBQW9BZ1FRN0FNUWt3UTJBbmdnQlVHQUFtb2dCVUg0QUdvUUpBc2dCa0VFY1VVZ0JTZ0N6QUVpQkNBRktBTDhBU0lEUVFGcVRYSkZCRUFnRHdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQml1RUxFQmtoQkNBRlFmZ0FhaUlESUFnUVdDQUVJQU1RVFNnQ0FDMEFBRUVBUnlFSElBTVFEeG9NQkFzZ0NRUkFJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkJ6dUFMRUJraEJDQUZRZmdBYWlJRElBZ1FXQ0FFSUFNUVRTZ0NBQzBBQUVFQVJ5RUhJQU1RRHhvTUJBc2dCVUdvQVdwQnFQOEVFUGdHR2lBRlFmZ0FhaUlESUFBZ0NDQUZLQUw4QVJCdUlBVkJnQUpxSWdRZ0EwRUVjaUlKRUNRZ0F5QUFJQWdnQlNnQy9BRkJBV29RYmlBRUlBa1FKQ0FGSUFaQkJITWlCallDWkNBRklBVW9BdndCUVFKcUlnTTJBdndCSUFVb0Fzd0JJUVFMSUFaQkNIRkZJQU1nQkU5eVJRUkFJQkZCMXdCcklnUkJDazBnQkVFSVIzRkZCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEhjNXdzUUdTRUVJQVZCK0FCcUlnTWdDQkJZSUFRZ0F4Qk5LQUlBTFFBQVFRQkhJUWNnQXhBUEdnd0VDeUFMS0FJSVFRRnJRUU5QQkVBZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBHVDZ3c1FHU0VFSUFWQitBQnFJZ01nQ0JCWUlBUWdBeEJOS0FJQUxRQUFRUUJISVFjZ0F4QVBHZ3dFQ3lBRlFkQUFhaUlFSUFBZ0NDQURFRzRnQlVINEFHb2lBeUFBSUFRUTFnY2dCVUdBQW1vZ0EwRUVjaEFrSUFVZ0JrRUljeUlHTmdKa0lBVWdCU2dDL0FGQkFXb2lBellDL0FFZ0JTZ0N6QUVoQkFzZ0JrSEFBSEZGSUFNZ0JFOXlSUVJBSUFWQnlBQnFJZ1FnQUNBSUlBTVFiaUFGUWZnQWFpSURJQUFnQkJEbUNDQUZRWUFDYWlBRFFRUnlFQ1FnQlNBR1FjQUFjeUlHTmdKa0lBVWdCU2dDL0FGQkFXbzJBdndCQ3lBR0JFQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSHcvUWdRR1NBRlFlUUFhaEF2UWNHMURCQVpJUVFnQlVINEFHb2lBeUFJRUZnZ0JDQURFRTBvQWdBdEFBQkJBRWNoQnlBREVBOGFEQU1MSUFVb0FxQUNJZ1lnQlNnQ3BBSkJBblJxSVFNRFFDQURJQVpHRFFJZ0JpZ0NBQ0VFSUFaQkJHb2hCaUFFRFFBTEMwRUFJUWNNQVFzZ0JTQUFLQUlJSUFWQnFBRnFJQVZCZ0FKcUVONFpJZ2syQWtRQ1FBSkFJQWdRZWdSQVFRQWhBd0pBSUFBb0FnQWdDQkI2UVFBUWhRRWlCRVVOQUNBRUlnTW9BZ1JCcU13U1J3MEFJQVFvQWdnaEF3c2dDd1IvQW45QkFDQUxLQUlFSWdvcEF4QkNnSUNRa0lDQWdJSUVneUkxSURWQ0FYMkRVQTBBR2tFQklBcEJvTTBTRUVnTkFCb2dDaENrR1FzRlFRQUxSU0FIUVFGeklCRkIzd0JIY1hKRkJFQWdBQ2dDQ0NFS0lBVkJRR3RCQURZQ0FDQUZRZ0EzQXpnZ0JVSUFOd013SUFVZ0JDQUtJQVFvQWdBb0FnZ1JBUUEyQWlnZ0JTQUpOZ0lRSUFVZ0FDZ0NBQ0FERUpNRU5nSVVJQVVnQUNnQ0FDQURFSk1FTmdJWUlBQW9BZ0FnQXhDVEJDRUhJQVZCQkRZQ0pDQUZJQWMyQWh3Z0JTQUZRUkJxTmdJZ0lBVWdCU2tESURjREFDQUZRZmdBYWlBRkVOMFpJZ1loQ1NNQVFTQnJJZ2NrQUNBSElBVW9BaWcyQWh3Z0NpQUZRVEJxSUFkQkhHb2dCeUFKRUo0TUlnb1F4UmtoQ1NBS0VGNGdCMEVnYWlRQUlBWVFYZ3NDUUNBQUtBSUFJQk1RanhraUJ3UkFJQWNvQWhSQkdVWU5BUXNnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEd0aVFvUUdTRUVJQVZCK0FCcUlnTWdFeEJZSUFRZ0F4Qk5LQUlBTFFBQUlRY2dBeEFQR2d3REN5QURJQUFvQWdBZ0IwRUFFRGhCQUJDRkFTSUhSd1JBSUFBb0FnZ2hBeUFGUVFBMkFvZ0JJQVZDQURjRGdBRWdCVUlBTndONElBTWdCVUg0QUdvZ0JDQURJQVFvQWdBb0FnZ1JBUUFnQlVIRUFHb1ExZ1FoQ1FzQ1FDQUhLQUlFUWNqTEVrWU5BQ0FSUWRjQWF5SURRUkpMUVFFZ0EzUkIvNDBRY1VWeURRQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSFk4UU1RR1NnQ0FDMEFBQ0VIREFNTElBQWdDQ0FGUVFocUlBUWdDUkJwRUpVRkdnd0JDeUFBS0FJSUlRTWdCVUVBTmdLSUFTQUZRZ0EzQTRBQklBVkNBRGNEZUNBQUlBTWdCVUg0QUdvZ0NSQ1NEeERKQVJvTElBQW9BaHdvQWdBdEFBQWhCd3NnQjBIL0FYRkJBRWNoQndzZ0JVR29BV29RRHhvTElBVkIwQUZxRUNNTElBVkJnQUpxRUNNZ0JVR3dBbW9rQUF3Q0N5QURRUUE2QUFBZ0JFR3Z0QXdRR1NFRUlBMUI2QUJxSWdNZ0NCQllJQVFnQXhCTktBSUFMUUFBUVFCSElRY2dBeEFQR2d3QkMwRUFJUWNMSUExQm9BSnFKQUFnQjBVTkFRc2dDRUVFYWlFRURBRUxDMEVBREFFTEFrQWdBU2dDNEFFaUEwVU5BQ0FNUW9DQWdJREFBRGNDakFjZ0RDQU1RZWdHYWlJRU5nS0lCeUFFSUFNUTh4a2dBU2dDM0FFaUJDQUJLQUxnQVVFRGRHb2hBd05BQWtBZ0F5QUVSZ1JBSUF3b0FvZ0hJUWdnRENnQ2pBY2hCeUFNSUFBMkFwQUZRUUFoQkNBTVFRQTJBdGdIUVFBaEF5QUhRWUVCVGdSQUlBeEI2QUJxSUFjUThoa2dEQ2dDYkNFRElBeEIyQWRxSUF3b0FtZ2lCQkJzQ3lBSUlBZ2dCMEVEZEdvZ0RFR1FCV29pQ0NBSElBUWdBeERxQ0NBTVFkZ0hhaENMQVNBSUVONEdJUW9nRENnQ2lBY2lCQ0FNS0FLTUIwRURkR29oQXlBTVFlZ0Fha0VFY2lFSERBRUxJQXdnQkNrQ0FDSTFOd05vSUFBZ05hY1FsQUlvQWd3RVFDQU1RZWdHYWlBTVFlZ0FhaEQ0R1FzZ0JFRUlhaUVFREFFTEN3TkFJQU1nQkVjRVFDQU1JQVFwQWdBM0EyZ2dDaUFIRUt3Y0dpQUVRUWhxSVFRTUFRc0xJQXhCNkFCcUVNUVBJUWNnRENnQ2lBY2lCQ0FNS0FLTUIwRURkR29oRGdOQUlBUWdEa1lFUUNBTUtBS0lCeUlFSUF3b0Fvd0hRUU4wYWlFQkEwQWdBU0FFUmdSQUlBY1F3dzhnQ2hEZEJpQU1RZWdHYWhBakRBUUZJQXdnQUNnQ0NDQUFLQUlnSUFRcEFnQWlOYWNRa3dJUTBnSTJBaEFnREVFQU5nTGdCeUFNSURWQ0lJaW5JZ00yQXR3SElBd2dCellDMkFjZ0RDQUhLQUtnQkVFQmF6WUM1QWNnREFKL0lBeEIyQWRxRVBFWkJFQWdBQ2dDQ0NBTVFkZ0hhaER4R1JEYUJBd0JDeUFNUVRocUlBQWdBeENXQXlBTUtBSThDellDV0NBQUlBQW9BZ2dnREVFUWFpQU1RZGdBYWhDQkNSREpBUm9nQkVFSWFpRUVEQUVMQUFzQUN5QU1JQVFvQWdBMkFtUWpBRUVRYXlJSUpBQWpBRUd3QVdzaUNTUUFJQW9vQXNRQklnWkJBV3NoRHlBTUtBSmtJZ3NnQm5BaEF5QUtLQUxBQVNFUVFRQWhCUUpBQTBBZ0JTQUdSd1JBSUJBZ0EwRUVkR29pRFMwQUJFVUVRQ0FJUVFBMkFnd2dDRUVBT2dBSURBTUxBa0FnRFNnQ0NDQUxSdzBBSUFzZ0RTZ0NBRWNOQUNBSUlBTTJBZ3dnQ0VFQk9nQUlEQU1MSUFVZ0RTZ0NERXNFUUNBSVFRQTJBZ3dnQ0VFQU9nQUlEQU1GSUFOQkFXcEJBQ0FESUE5SEd5RURJQVZCQVdvaEJRd0NDd0FMQ3lBSlFZYTFBMEdlQkVFT0lBbEJvQUZxRUIwaUF4QVhJZ1ZCR0dwQjBqVVFEaG9nQlJBWUlBaEJBRFlDRENBSVFRQTZBQWdnQXhBZUN5QUpRYkFCYWlRQUlBZ3RBQWdoQXlBSVFSQnFKQUFnQXdSQUlBeEJPR29pQXlBQUtBSWdJZ2tnRENnQ1pCQ1RBa0cwdVFVUXVBSWdERUVRYWlJSUlBRW9BZ1FRWHlBTVFkZ0hhaUlGSUFNZ0NCQk9JQXhCMkFCcUlnMGdDU0FGRU9VRklBVVFEeG9nQ0JBUEdpQURFQThhSUFBb0FnZ2lDUkFjSUF3Z0RDZ0NYQ0FNTFFCaklnWWdCa0VZZEVFWWRVRUFTQ0lHR3pZQ05DQU1JQXdvQWxnZ0RTQUdHellDTUNBTUlBd3BBekEzQXdnZ0F5QUpRWWdDYWlBTVFRaHFFSmdESUFnZ0F4QldJUU1nREVINEIyb2dCeUFNUWVRQWFpQUZFSnNGRVBBWklBd29BdmdIUlFSQUlBY29BcUFFSVFnZ0RFSFlCMm9nQXhCV0lRTUNRQ0FIS0FLZ0JDQUlSZ1JBSUF3b0F2d0hJQU1RM3dRTUFRc2pBRUhRQVdzaUNDUUFJQWNvQXBRRUlna2dCeWdDbkFRaUJVR1dBV3hCbGdGcVFlUUFia2tFUUNBSElBVkJBWFJCQW1vUXFCa2dCeWdDbEFRaENRc2dEQ2dDWkNFTklBZ2dBellDekFFZ0NDQU1RZVFBYWpZQ3lBRWdDVUVCYXlFUElBMGdDWEFoQmlBSEtBS1FCQ0VMUVFBaEF3SkFBMEFnQXlBSlJ3UkFJQXNnQmtFc2JHb2lCUzBBSUVVRVFDQUlRUWhxSWdrZ0NFSElBV29RbUFVZ0JTQUpFSzBMSUFzZ0JrRXNiR29pQ1NBRE5nSW9JQWtnRFRZQ0pDQUhJQWNvQXB3RVFRRnFOZ0tjQkNBSElBY29BcUFFUVFGcU5nS2dCQ0FNSUFWQkJHbzJBdFFISUF4QkFEWUMwQWNNQXdzQ1FDQUZLQUlrSUExSERRQWdEU0FGS0FJQVJ3MEFJQWhCQ0dvaUF5QUlRY2dCYWhDWUJRSkFJQVV0QUNBRVFDQUZJQU1RK2hvTUFRc2dCU0FERUs4TEN5QUhJQWNvQXFBRVFRRnFOZ0tnQkNBTUlBVkJCR28yQXRRSElBeEJBVFlDMEFjTUF3c2dBeUFGS0FJb1N3UkFJQWhCcUFGcUlna2dDRUhJQVdvUW1BVWdDRUVJYWlBSkVLd0xJZ2tnQXpZQ0tDQUpJQTAyQWlRZ0NTQUZFSVFKSUFrZ0NTZ0NLRUVCYWpZQ0tDQUhJQVpCQVdvZ0J5Z0NsQVJ3SUFrUXF3c2dCeUFIS0FLY0JFRUJhallDbkFRZ0J5QUhLQUtnQkVFQmFqWUNvQVFnRENBRlFRUnFOZ0xVQnlBTVFRQTJBdEFISUFrUXFnSU1Bd1VnQmtFQmFrRUFJQVlnRDBjYklRWWdBMEVCYWlFRERBSUxBQXNMSUFoQkNHcEJoclVEUWVzRFFRNGdDRUdvQVdvUUhTSURFQmNpQlVFWWFrR1dOUkFPR2lBRkVCZ2dERUlBTndMUUJ5QURFQjRMSUFoQjBBRnFKQUFnRENBTUtRUFFCemNEK0FjTEN5QU1JQUFvQWdnaUF5QUFLQUlnSUF3b0FtUVFrd0lRMGdJMkF0Z0hJQUFnQXlBRElBeEJPR29nREVIWUIyb1Fwd3NRendvUXlRRWFJQXhCMkFCcUVBOGFDeUFFUVFocUlRUU1BQXNBQ3lBQ1FRRTZBQUJCQVFzaEFDQU1RWUFJYWlRQUlBQUxGd0FnQUNBQkVKUUNJZ0JGQkVCQkFBOExJQUFvQWpRTG1BVUNDWDhDZlNNQVFSQnJJZ3NrQUNNQVFSQnJJZ1lrQUNBQ0tBSUFJUWNnQ3dKL0FrQWdBU2dDQkNJRVJRMEFJQUVvQWdBQ2Z5QUVRUUZySUFkeElBUnBJZ2hCQVUwTkFCb2dCeUFFSUFkTERRQWFJQWNnQkhBTElnbEJBblJxS0FJQUlnVkZEUUFnQkVFQmF5RU1JQWhCQVVzaENBTkFJQVVvQWdBaUJVVU5BU0FISUFVb0FnUWlDa2NFUUFKQUlBaEZCRUFnQ2lBTWNTRUtEQUVMSUFRZ0Nrc05BQ0FLSUFSd0lRb0xJQWtnQ2tjTkFnc2dCU2dDQ0NBSFJ3MEFDMEVBREFFTFFSQVFGU0VJSUFZZ0FVRUlhallDQkNBR0lBZzJBZ0FnQ0NBQ0tBSUFOZ0lJSUFnZ0F5Z0NBRFlDRENBR1FRRTZBQWdnQ0VFQU5nSUFJQWdnQnpZQ0JBSkFRUUFnQkNBQktBSU1RUUZxc3lJT0lBRXFBaEFpRFNBRXM1UmVHdzBBSUFFZ0JDQUVRUUZyY1VFQVJ5QUVRUU5KY2lBRVFRRjBjaUlEQW44Z0RpQU5sWTBpRFVNQUFJQlBYU0FOUXdBQUFBQmdjUVJBSUEycERBRUxRUUFMSWdJZ0FpQURTUnNRd3dFZ0FTZ0NCQ0lFSUFSQkFXdHhSUVJBSUFSQkFXc2dCM0VoQ1F3QkN5QUVJQWRMQkVBZ0J5RUpEQUVMSUFjZ0JIQWhDUXNDUUNBSlFRSjBJZ0lnQVNnQ0FHb29BZ0FpQTBVRVFDQUdLQUlBSUFFb0FnZzJBZ0FnQVNBR0tBSUFOZ0lJSUFFb0FnQWdBbW9nQVVFSWFqWUNBQ0FHS0FJQUlnTW9BZ0FpQWtVTkFTQUNLQUlFSVFVQ1FDQUVJQVJCQVdzaUFuRkZCRUFnQWlBRmNTRUZEQUVMSUFRZ0JVc05BQ0FGSUFSd0lRVUxJQUVvQWdBZ0JVRUNkR29nQXpZQ0FBd0JDeUFHS0FJQUlBTW9BZ0EyQWdBZ0F5QUdLQUlBTmdJQUN5QUdLQUlBSVFVZ0JrRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUdFSXNCUVFFTE9nQU1JQXNnQlRZQ0NDQUdRUkJxSkFBZ0FDQUxLQUlJTmdJQUlBQWdDeTBBRERvQUJDQUxRUkJxSkFBTDNRWUJDWDhqQUVIUUFXc2lCU1FBSUFVZ0F6WUN5QUVnQlNBQ05nTE1BU0FGSUFRMkFzUUJJQVVnQUNnQ0FDSUhJQU1RZkNnQ0NEWUN3QUVnQlFKL0lBUkZCRUFnQnlnQzdBWWdCeWdDNkFaclFRSjFEQUVMSUFjZ0JCQjhLQUlJQ3lJSU5nSzhBU0FGSUFBb0FnUWlCQ2dDRkNJREJIOGdCQ2dDRUNBRFFRSjBha0VFYXlnQ0FBVkJBQXNpQkRZQ3VBRWdCU0FJTmdLMEFTQUNRUU5HQkVBZ0JFVUVRQ0FGUWJtaEJVSDlEVUVISUFWQm9BRnFFQjBpQXhBWElnSkJHR3BCN1p3SUVBNGFJQUlRR0NBREVCNExJQVFvQWhSQkJFY0VRQ0FGUWJtaEJVSCtEVUVISUFWQm9BRnFFQjBpQXhBWElnSkJHR3BCbmJrSUVBNGFJQUlRR0NBREVCNExJQVVnQkNnQ0pEWUN0QUVnQlNBRUtBSUFOZ0s0QVFzZ0JTQUJOZ0tnQVVFc0VCVWhBaUFGS0FLZ0FTRUxJQVVvQXN3QklRb2dCU2dDeUFFaERTQUZLQUxFQVNFSklBVW9Bc0FCSVF3Z0JTZ0N2QUVoQ0NBRktBSzBBU0VFUVFBaEFTQUNJQVVvQXJnQklnWTJBZ0FDUUFKQUlBcEJBMFlFUUNBQ0lBSTJBZ1FNQVFzQ1FDQUdSUTBBSUFZb0FoQWdDMDROQUNBR0tBSUVJUUVMSUFJZ0FUWUNCQ0FLUVFSSERRQWdBaUFDTmdJSUlBSWhBUXdCQ3lBR0JFQWdBaUFMSUFZb0FoQktCSDhnQmlnQ0NBVkJBQXMyQWdnZ0FrRUFJQXBCQW10QkEwa2lBeHNoQVNBRElBWkZjZzBCUVFBaEFTQUdLQUlRSUF0T0RRRWdCaWdDRENFQkRBRUxJQUpCQURZQ0NDQUNRUUFnQ2tFQ2EwRURTUnNoQVFzZ0FpQUVOZ0lvSUFJZ0NEWUNKQ0FDSUF3MkFpQWdBaUFKTmdJY0lBSWdEVFlDR0NBQ0lBbzJBaFFnQWlBTE5nSVFJQUlnQVRZQ0RDQUZJQUkyQWdBZ0IwR2NCMm9pQVNnQ0pDSUNJQUVvQWloUEJFQWdBU2dDS0NJQ1FRRjBRUUlnQWhzaUFpQUJLQUlvU3dSQUlBRW9BaUFoRENBQklBSVF2Z2xCQUNFSkEwQWdBU2dDSkNBSlRRUkFJQUVnREJBMkJTQU1JQWxCQW5RaUJHb2lDQ2dDQUNFRElBRW9BaUFoQWlBSVFRQTJBZ0FnQWlBRWFpQUROZ0lBSUFnUWl3RWdDVUVCYWlFSkRBRUxDd3NnQVNnQ0pDRUNDeUFCSUFKQkFXbzJBaVFnQlNnQ0FDRURJQUVvQWlBaEFTQUZRUUEyQWdBZ0FTQUNRUUowYWlBRE5nSUFJQVVRaXdFZ0JTQUhLQUs4QnlBSEtBTEFCMEVDZEdwQkJHc29BZ0EyQWdBZ0FDZ0NCQ0FGRUhFZ0JTZ0NBQ0VBSUFWQjBBRnFKQUFnQUF2WUJnRUVmeU1BUWNBQmF5SUpKQUFnQ1NBRk5nSXNJQWtnQWpZQ05DQUpJQVFReUFNaUFqWUNNQUpBSUFKRkRRQWdBaWdDQkVHUXpCSkhEUUFnQ1NBQ0tBSUlJZ0kyQWpBTElBa2dDRFlDS0NBSklBTTJBaVFnQ1NBSE5nSWNJQWtnQVRZQ0dDQUpJQUEyQWhRZ0NTQUdOZ0lJSUFrZ0NVRTBhallDSUNBSklBbEJNR28yQWhBZ0NTQUpRU3hxTmdJTUFuOGdBa1VFUUNBSlFRaHFFSUlhREFFTEFrQWdBaWdDQkNJRVFjRE1Fa1lFUUVFQUlRVWdDVUVBTmdLSUFTQURJQWxCaUFGcUVKOEZJQUlvQWd3aUJFRUFJQVJCQUVvYklRUWdBQ2dDQkNBQ0tBSUlJQUlvQWhBUS93SWhBZ05BSUFRZ0JVY0VRQ0FES0FJZ0lBTW9BaVJCQW5ScVFRUnJJQVUyQWdBZ0FDQUpRVGhxSUFFUVZDSUtJQWtvQWpRZ0NVR0lBV29nQXhEakJTSUxJQUlnQ1NnQ0xDQUdJQWNnQ0JEd0NDRU1JQXNRSXlBS0VBOGFJQVZCQVdvaEJTQU1EUUVNQXdzTElBQW9BaHdvQWdBdEFBQkJBRWNNQWdzZ0JFSFl6QkpHQkVBZ0FpZ0NERVVFUUNBQUtBSWNJZ0FvQWdCQkFEb0FBQ0FBUWJXRUJoQVpLQUlBTFFBQVFRQkhEQU1MUVFBaEJTQUpRUUEyQW5nZ0F5QUpRZmdBYWhDZkJTQUNLQUlJSVFRRFFDQUNLQUlNSUFWS0JFQWdBeWdDSUNBREtBSWtRUUowYWtFRWF5QUZOZ0lBSUFBZ0NVRTRhaUFCRUZRaUNpQUpLQUkwSUFsQmlBRnFJQU1RNHdVaUN5QUVJQWtvQWl3Z0JpQUhJQWdROEFnaERDQUxFQ01nQ2hBUEdpQUZRUUZxSVFVZ0RBMEJEQU1MQ3lBQUtBSWNLQUlBTFFBQVFRQkhEQUlMSUFSQnlNNFNSZ1JBUVFBaEJTQUpRUUEyQW9nQklBTWdDVUdJQVdvUW53VUNRQU5BSUFVZ0FpZ0NLQ0FDS0FJa2EwRUNkVTROQVNBREtBSWdJQU1vQWlSQkFuUnFRUVJySUFVMkFnQWdDVUdJQVdvZ0JoQ0dHaUVFSUFsQitBQnFJZ3NnQUNnQ0FDSUtJQUlnQlJDTkdTQUtJQUlnQ3lBRUVPOE9JUW9nQ3hDa0FnSkFJQXBGRFFBZ0FDQUpRZWdBYWlBQkVGUWlDaUFKS0FJMElBbEJPR29nQXhEakJTSUxJQUlvQWlRZ0JVRUNkR29vQWdBZ0NTZ0NMQ0FFSUFjZ0NCRHdDQ0VNSUFzUUl5QUtFQThhSUF4RkRRQWdBQ2dDQUNBR0lBUVFoQm9RN1E0Z0JCQWpJQVZCQVdvaEJRd0JDd3NnQkJBakRBSUxJQUFvQWh3b0FnQXRBQUJCQUVjTUFnc2dDVUVJYWhDQ0dnd0JDMEVBQ3lFRElBbEJ3QUZxSkFBZ0F3dllCZ0VFZnlNQVFjQUJheUlKSkFBZ0NTQUZOZ0lzSUFrZ0FqWUNOQ0FKSUFRUXlBTWlBallDTUFKQUlBSkZEUUFnQWlnQ0JFR1F6QkpIRFFBZ0NTQUNLQUlJSWdJMkFqQUxJQWtnQ0RZQ0tDQUpJQU0yQWlRZ0NTQUhOZ0ljSUFrZ0FUWUNHQ0FKSUFBMkFoUWdDU0FHTmdJSUlBa2dDVUUwYWpZQ0lDQUpJQWxCTUdvMkFoQWdDU0FKUVN4cU5nSU1BbjhnQWtVRVFDQUpRUWhxRUljYURBRUxBa0FnQWlnQ0JDSUVRY0RNRWtZRVFFRUFJUVVnQ1VFQU5nS0lBU0FESUFsQmlBRnFFSjhGSUFJb0Fnd2lCRUVBSUFSQkFFb2JJUVFnQUNnQ0JDQUNLQUlJSUFJb0FoQVEvd0loQWdOQUlBUWdCVWNFUUNBREtBSWdJQU1vQWlSQkFuUnFRUVJySUFVMkFnQWdBQ0FKUVRocUlBRVFWQ0lLSUFrb0FqUWdDVUdJQVdvZ0F4RGpCU0lMSUFJZ0NTZ0NMQ0FHSUFjZ0NCRHhDQ0VNSUFzUUl5QUtFQThhSUFWQkFXb2hCU0FNRFFFTUF3c0xJQUFvQWh3b0FnQXRBQUJCQUVjTUFnc2dCRUhZekJKR0JFQWdBaWdDREVVRVFDQUFLQUljSWdBb0FnQkJBRG9BQUNBQVFiV0VCaEFaS0FJQUxRQUFRUUJIREFNTFFRQWhCU0FKUVFBMkFuZ2dBeUFKUWZnQWFoQ2ZCU0FDS0FJSUlRUURRQ0FDS0FJTUlBVktCRUFnQXlnQ0lDQURLQUlrUVFKMGFrRUVheUFGTmdJQUlBQWdDVUU0YWlBQkVGUWlDaUFKS0FJMElBbEJpQUZxSUFNUTR3VWlDeUFFSUFrb0Fpd2dCaUFISUFnUThRZ2hEQ0FMRUNNZ0NoQVBHaUFGUVFGcUlRVWdEQTBCREFNTEN5QUFLQUljS0FJQUxRQUFRUUJIREFJTElBUkJ5TTRTUmdSQVFRQWhCU0FKUVFBMkFvZ0JJQU1nQ1VHSUFXb1Fud1VDUUFOQUlBVWdBaWdDS0NBQ0tBSWthMEVDZFU4TkFTQURLQUlnSUFNb0FpUkJBblJxUVFScklBVTJBZ0FnQ1VHSUFXb2dCaENHR2lFRUlBbEIrQUJxSWdzZ0FDZ0NBQ0lLSUFJZ0JSQ05HU0FLSUFJZ0N5QUVFTzhPSVFvZ0N4Q2tBZ0pBSUFwRkRRQWdBQ0FKUWVnQWFpQUJFRlFpQ2lBSktBSTBJQWxCT0dvZ0F4RGpCU0lMSUFJb0FpUWdCVUVDZEdvb0FnQWdDU2dDTENBRUlBY2dDQkR4Q0NFTUlBc1FJeUFLRUE4YUlBeEZEUUFnQUNnQ0FDQUdJQVFRaEJvUTdRNGdCQkFqSUFWQkFXb2hCUXdCQ3dzZ0JCQWpEQUlMSUFBb0Fod29BZ0F0QUFCQkFFY01BZ3NnQ1VFSWFoQ0hHZ3dCQzBFQUN5RURJQWxCd0FGcUpBQWdBd3RoQVFKL0l3QkJ3QUZySWdJa0FDQUNJQUUyQXJ3QklBQXRBRmdFUUNBQ1FRaHFRYm1oQlVIV0JrRUhJQUpCcUFGcUVCMGlBUkFYSWdOQkdHcEJwOVFJRUE0YUlBTVFHQ0FCRUI0TElBQkJJR29nQWtHOEFXb1FKQ0FDUWNBQmFpUUFDeGtBSUFCQnpBQnFFSWNKSUFCQklHb1FJeUFBUVFocUVCWUxUd0VCZjBFWUVCVWhCQ0FBSUFGQkNHbzJBZ1FnQUNBRU5nSUFJQU1vQWdBb0FnQWhBU0FFUVFBMkFoUWdCRUlBTndJTUlBUWdBVFlDQ0NBQVFRRTZBQWdnQkVFQU5nSUFJQVFnQWpZQ0JBdFdBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNEQ0FBRUZVQ1FDQUJRVEJxSUFSQkRHb1FuZ0lpQVVVTkFDQUJLQUlRSUFFb0Fnd2lBV3RCREcwZ0EwME5BQ0FBSUFFZ0EwRU1iR29RNEFJTElBUkJFR29rQUFzUkFDQUFRUWhCK2Y4RFFYeEJBeERLQVFzTEFDQUFRYkRMRWhDK0RBc1lBUUYvUVFFaEFTQUFFUGNJQkg5QkFRVWdBQkNrRHdzTERRQWdBRUh3MEJJMkFnQWdBQXNsQVFGL0lBRkJCR29nQUNnQ0NDSUNJQUVnQWlnQ0FDZ0NDQkVCQUNBQUtBSU1FSjBiQzJnQkFYOGdBQ2dDQUNBQUtBSUVJQUZCQkdvUXZSb2dBQ2dDQUNFQ0lBQWdBU2dDQkRZQ0FDQUJJQUkyQWdRZ0FDZ0NCQ0VDSUFBZ0FTZ0NDRFlDQkNBQklBSTJBZ2dnQUNnQ0NDRUNJQUFnQVNnQ0REWUNDQ0FCSUFJMkFnd2dBU0FCS0FJRU5nSUFDeFlBSUFBZ0FTZ0NBQkJXUVJ4cUlBRW9BZ1FRVmhvTE9BRUNmeU1BUVJCcklnSWtBQ0FDUVFocUlBQkJMR29nQVJER0dpQUNLQUlJSVFNZ0FrRVFhaVFBSUFOQkFrY0VRQ0FBSUFFUUpBc0xad0VDZnlNQVFSQnJJZ1VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ1EyQWd3Z0JTQUVOZ0lJSUFCQmpBRnFJZ1FnQkJERkFpQUFLQUlJSUFVb0FnZ2dBU0FDS0FJQUlBTW9BZ0FROVI0aUFCQW9JQVFnQkNnQ0dFRUJhallDR0NBRlFSQnFKQUFnQUFzMEFRSi9JQUFvQWdBaEFTQUFLQUlFSVFJRFFBSkFJQUVnQWtZTkFDQUJMUUFrRFFBZ0FDQUJRVEJxSWdFMkFnQU1BUXNMQ3lZQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkJFQWdBQzBBQ0JvZ0FRUkFJQUVRSHdzTEMza0JBWDhqQUVFUWF5SURKQUFnQXlBQktBSUFOZ0lNSUFNZ0FpZ0NBRFlDQ0NNQVFSQnJJZ0VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0kyQWd3Z0FTQUNOZ0lJSUFCQmpBRnFJQUJCQ0dvZ0FVRUlhaUFBUWRnQ2FpQURRUXhxSUFOQkNHb1F6eG9oQUNBQlFSQnFKQUFnQTBFUWFpUUFJQUFMWndFQ2Z5TUFRUkJySWdVa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdRMkFnd2dCU0FFTmdJSUlBQkJqQUZxSWdRZ0JCRExCQ0FBS0FJSUlBVW9BZ2dnQVNBQ0tRTUFJQU1vQWdBUTNnb2lBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUZRUkJxSkFBZ0FBc1hBQ0FCS0FJQUlBQkJFR3BIQkVBZ0FDQUJFTWdKQ3dzd0FRSi9Jd0JCTUdzaUFpUUFJQUlnQUJEK0dpRURJQUFnQVJDL0R5QUJJQU1Rdnc4Z0F4Q3FBaUFDUVRCcUpBQUxHd0FnQUNBQktBSUFOZ0lBSUFCQkJHb2dBVUVFYWhCV0dpQUFDOWdCQVFOL0lBRWdBQ2dDbUFSTEJFQWdBQ2dDa0FRaEF5QUFJQUVRdVIwRFFDQUFLQUtVQkNBQ1RRUkFJQUFnQXhBMkJTQUNRU3hzSWdRZ0FDZ0NrQVJxSUFNZ0JHb2lCQkQrR2hvZ0JCQ3FBaUFDUVFGcUlRSU1BUXNMQ3lBQUtBS1VCQ0VDQTBBZ0FTQUNUd1JBQWtBZ0FDZ0NsQVFpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHRFFFZ0FDZ0NrQVFnQWtFc2JHb2lBMElBTndJa0lBTkJBRG9BSUNBRFFRQTZBQUFnQWtFQmFpRUNEQUFMQUFzRklBQW9BcEFFSUFKQkFXc2lBa0VzYkdvUXFnSU1BUXNMSUFBZ0FUWUNsQVFMUHdFQ2Z5QUFLQUlBQkVBZ0FDZ0NBQ0VDSUFBb0FnUWhBUU5BSUFFZ0FrY0VRQ0FCUVFSckVJVURJUUVNQVFzTElBQWdBallDQkNBQUtBSUFFQjhMQzRvQkFRSi9JQUFvQWhBaEFpQUFRUUEyQWhBQ1FBSi9JQUFnQWtZRVFDQUFJZ0lvQWdCQkVHb01BUXNnQWtVTkFTQUNLQUlBUVJScUN5RURJQUlnQXlnQ0FCRURBQXNnQVNnQ0VDSUNSUVJBSUFCQkFEWUNFQThMSUFFZ0FrWUVRQ0FBSUFBMkFoQWdBU2dDRUNJQklBQWdBU2dDQUNnQ0RCRUNBQThMSUFBZ0FqWUNFQ0FCUVFBMkFoQUxFZ0FnQUMwQWVBUkFJQUJCQ0dvUW5BUUxDNm9EQVFOL0FrQURRQUpBQWtBZ0FDZ0NCQ0lDUWJpdEVrY0VRQ0FBSUFGR0RRUWdBa0h3bnhKR0JFQWdBVVVOQXlBQktBSUVJZ0JCc0trU1JnUkFRUUVQQzBFQ1FYOGdBRUhRcUJKR0d3OExJQUpCMEtBU1J3MEJJQUZGRFFJZ0FTZ0NCQ0lBUVpDcUVrWUVRRUVERHdzZ0FFR2dzeEpHQkVCQkJBOExJQUJCOEo4U1JnUkFRUVVQQ3lBQVFiQ3BFa1lFUUVFR0R3dEJCMEYvSUFCQjBLZ1NSaHNQQ3lBQUtBSVlJQUZHRFFNTEFuOENRQUpBSUFJUWtRTUVRRUYvSVFJZ0FSQ3lBaUlCUlEwQklBQW9BaHdnQVNnQ0hFY05BU0FCUVJocURBTUxJQUpCOEtvU1JnUkFRWDhoQWlBQlJRMEJJQUVvQWdSQjhLb1NSdzBCSUFBb0FpUWdBU2dDSkVjTkFTQUFLQUlnSUFFb0FpQkhEUUVNQWdzZ0FrR1FvaEpHQkVCQmZ5RUNJQUZGRFFFZ0FTZ0NCRUdRb2hKSERRRWdBQ2dDSENBQktBSWNSZzBDREFFTElBSVE1Z05GRFFNZ0FDZ0NrQUVoQTBFQUlRSURRQ0FDSUFOR0RRUWdBa0VDZENFRUlBSkJBV29oQWlBRUlBQW9Bb3dCYWlnQ0FDQUJSdzBBQ3dzZ0FnOExJQUZCR0dvTElRRWdBQ2dDR0NFQUlBRW9BZ0FoQVF3QkN3dEJmdzhMUVFBTFZRRUJmeU1BUVJCcklnTWtBQ0FESUFFMkFnd2dBMElBTndNQUlBQWdBeWdDRENBREtRTUFFSjBFSWdCQjBMRVNOZ0lFSUFCQmxMSVNOZ0lBSUFBZ0FqWUNHQ0FBUWZDeEVqWUNBQ0FEUVJCcUpBQWdBQXZuQmdJTWZ3RjhJd0JCc0FKcklnSWtBQ0FDUVlBQmFoQkpJUVlDUUNBQktBSklJZ05GQkVBZ0FCQlZEQUVMSUFJQ2Z5QUJLQUpFSUFOQkFuUnFRUVJyS0FJQUlnTW9BamdnQXlnQ01Hb2lDYmdRdHcwaURwbEVBQUFBQUFBQTRFRmpCRUFnRHFvTUFRdEJnSUNBZ0hnTFFRRnFOZ0o4SUFJQ2Z5QUJJQUVvQWdBb0FoQVJBQUM0RUxjTklnNlpSQUFBQUFBQUFPQkJZd1JBSUE2cURBRUxRWUNBZ0lCNEMwRUJhallDZUNBQ0FuOGdBU0FCS0FJQUtBSVVFUUFBdUJDM0RTSU9tVVFBQUFBQUFBRGdRV01FUUNBT3Fnd0JDMEdBZ0lDQWVBdEJBV28yQW5RZ0FpQUNRZmdBYWpZQ2JDQUNJQUpCOUFCcU5nSm9JQUlnQWtIOEFHbzJBbVFnQWlBR05nSmdJQUVnQVNnQ0FDZ0NGQkVBQUNFSElBRWdBU2dDQUNnQ0VCRUFBQ0VFSUFKQjBBQnFJZ1VnQVJDRUFTSURJQU1vQWdBb0Fnd1JBZ0FnQmtFSWFpSURRYm53REJBT0dpQURJQVlvQWdoQkRHc29BZ0JxSUFJb0FudzJBZ3dnQTBIMzhBd1FEaG9nQTBHcitBZ1FEaG9nQXlBR0tBSUlRUXhyS0FJQWFpQUNLQUowTmdJTUlBTWdCeEFoR2lBRFFlajRDQkFPR2lBRElBWW9BZ2hCREdzb0FnQnFJQUlvQW5nMkFnd2dBeUFFRUNFYUlBTkI4dEFKRUE0YUlBTWdCUkFTR2lBRFFmbndEQkFPR2lBRkVBOGFRUUFoQndOQUlBRW9Ba2dnQjAwRVFDQUpJQUVnQVNnQ0FDZ0NFQkVBQUNJQlJ3UkFJQUpCNEFCcUlBbEJBU0FCSUFscklBSkJxSmdJRUJRaUFSRGNEeUFCRUE4YUN5QURRY2J3REJBT0dpQURJQVlvQWdoQkRHc29BZ0JxSUFJb0FuUWdBaWdDZUNBQ0tBSjhhbW8yQWd3Z0EwSDM4QXdRRGhvZ0EwSGM2UVlRRGhvZ0FDQUdRUXhxRUVJRklBRW9Ba1FnQjBFQ2RHb2lCQ2dDQUNFRkFrQWdCMFVOQUNBRVFRUnJLQUlBSWdSRkRRQWdCU2dDTUNJSUlBUW9BamdnQkNnQ01Hb2lCRVlOQUNBQ1FlQUFhaUFFUVFFZ0NDQUVheUFDUVVCclFmNlhDQkFVSWdRUTNBOGdCQkFQR2dzZ0FrRXdhaUlJSUFKQmtBSnFJZ1FnQlVFSWFoQldFRk1nQlNnQ09DRUxJQVVvQWpRaERDQUZLQUl3SVEwZ0JDQUlRZXkxREJDNEFpQUNRUkJxSWdvZ0JTZ0NLQkNFQVNJRklBVW9BZ0FvQWd3UkFnQWdBa0VnYWlJRklBUWdDaEJPSUFKQjRBQnFJQTBnRENBTElBVVEzQThnQjBFQmFpRUhJQVVRRHhvZ0NoQVBHaUFFRUE4YUlBZ1FEeG9NQVFzTEN5QUdFRkVnQWtHd0Ftb2tBQXV4QWdJQ2ZnTi9Jd0JCRUdzaUNDUUFJQWhCeUxBU0lBRVF4Z3MyQWd3Z0FpZ0NBQ0lLS0FJQUlna2dDaWdDQkVFQ2RHb2hDa0lISVFZRFFDQUpJQXBIQkVBZ0JrSitneUFHSUFrb0FnQW9BaWdwQXhBaUJrSUJnMUFiSWdkQ2U0TWdCeUFHUWdTRFVCc2lCMEo5Z3lBSElBWkNBb05RR3lFR0lBbEJCR29oQ1F3QkN3c2dDQ0FHTndNQUlBQWdDQ2dDRENBSUtRTUFFSjBFSWdCQnVMQVNOZ0lFSUFCQnBMRVNOZ0lBSUFCQjhMQVNOZ0lBSUFCQkdHb2dBUkJXR2lBQVFUUnFJQUlRNlFZZ0FFSUFOd0pjSUFBZ0JUWUNXQ0FBSUFRMkFsUWdBQ0FETmdKUUlBQkNBRGNDWkNBQVFnQTNBM0FnQUVHQWdJRDhBellDYkNBQVFnQTNBM2dnQUVLQWdJQ0FJRGNEa0FFZ0FDQUFRWVFCYWpZQ2pBRWdBRUdBZ0lEOEF6WUNnQUVnQ0VFUWFpUUFJQUFMVGdFQ2Z5QUFLQUlNQkVBZ0FDZ0NDQkN4QnlBQVFRQTJBZ2dnQUNnQ0JDRUNBMEFnQVNBQ1JnUkFJQUJCQURZQ0RBVWdBQ2dDQUNBQlFRSjBha0VBTmdJQUlBRkJBV29oQVF3QkN3c0xDeE1BSUFBdEFQQVBCRUFnQUVFSWFoREhCZ3NMSEFBZ0FDQUJLQUlBTmdJQUlBQkJDR29nQVVFSWFoRHJCUm9nQUFzT0FDQUFRU3hxRU4wR0lBQVFJd3NnQUNBQVFvQ0FnSUNBQVRjQ0pDQUFJQUEyQWlBZ0FFRXNhaERlQmhvZ0FBc1VBQ0FBUVlpUkVqWUNBQ0FBUVF4cUVDTWdBQXNJQUNBQUxRQThHZ3NOQUNBQUlBRkIrTzBQRU44U0M2Y0JBUVIvSXdCQm9BRnJJZ01rQUNBQUtBSUFJZ0lRSENBQ1FlUUJhaUFCRUpZUUlnUkZCRUFnQUNnQ0FDSUFFQndnQTBIOXJBTkJNMEVJSUFCQnlBSnFFQmNpQWtFWWFrR21sZ2tRRGhvZ0FpQUJLQUlFUVFScUVKb0JJZ1ZCR0dvaUFFSGM4UXdRRGhvZ0FFR0Q1QXNRRGhvZ0JVRVFhaUFCUVJCcUVLNERJQUJCMi9nTUVBNGFJQUJCOFBVTEVBNGFJQUFnQVJEZEF5QUNFQmdMSUFOQm9BRnFKQUFnQkF0WEFRSi9JQUFvQWdBaUFpZ0NBQ0lBSUFJb0FnUkJBblJxSVFJRFFBSkFJQUFnQWtZTkFDQUFLQUlBSWdNb0FnUkIwSXNTUnlBRFJYSkZCRUFnQXlnQ05DQUJSZzBCQ3lBQVFRUnFJUUFNQVFzTElBQWdBa2NMcUFFQkFYNGdBQkRLQXdSL1FRRUZJQUFFZndKL1FRQWdBQ2dDQkNJQUtRTVFRb0NBd0xDSXNJQ0VMSU1pQVNBQlFnRjlnMUFOQUJwQkFRSi9RUUFnQUNrREVFS0FnSUNnZ0lDQWhDaURJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FFSHdwQklRU0EwQUdpQUFFSkVEQ3cwQUdnSi9RUUFnQUNrREVFS0FnTUNRaUxDQWdBU0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FFSHdxaElRU0EwQUdpQUFFS0ljQ3dzRlFRQUxDd3NtQUNBQlFRRnFJZ0ZCQTAwRVFDQUFRUWhxSUFGQkFuUkJ4SXdTYWlnQ0FCQU9HZ3NnQUFzMkFRRi9Jd0JCRUdzaUF5UUFJQUlvQWdBUS9BSWhBaUFCS0FKOElRRWdBQ0FDTmdJRUlBQWdBaUFCY0RZQ0FDQURRUkJxSkFBTDJ3UUNDSDhDZmlNQVFjQUJheUlFSkFBZ0FTZ0NmQ0FCS0FLRUFTSUZRWllCYkVHV0FXcEI1QUJ1U1FSQUlBRWdCVUVCZEVFQ2FoRGxDd3NnQkVHNEFXb2dBU0FDRUpvSklBRW9BbndpQ2tFQmF5RUxJQUlvQWdBaEJ5QUJLQUo0SVFrZ0JDZ0N2QUVoQ0NBRUtBSzRBU0VHUVFBaEFnSkFBMEFnQWlBS1J3UkFJQWtnQmtFVWJHb2lCUzBBQ0VVRVFDQURLQUlBSVFNZ0JVRUJPZ0FJSUFVZ0F6WUNCQ0FGSUFjMkFnQWdDU0FHUVJSc2FpSURJQUkyQWhBZ0F5QUlOZ0lNSUFFZ0FTZ0NoQUZCQVdvMkFvUUJJQUVnQVNnQ2lBRkJBV28yQW9nQklBQWdCVUVFYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FGS0FJTUlBaEhEUUFnQnlBRktBSUFSdzBBSUFCQkFqWUNBQ0FBSUFWQkJHbzJBZ1FNQXdzZ0FpQUZLQUlRU3dSQUlBTW9BZ0FoQXlBRVFRRTZBS2dCSUFRZ0FqWUNzQUVnQkNBRE5nS2tBU0FFSUFjMkFxQUJJQVFnQ0RZQ3JBRWdCQ0FDTmdJUUlBUWdCQ2tEcUFFaUREY0RDQ0FFSUFRcEE2QUJJZzAzQXdBZ0JDQUZLQUlRTmdLd0FTQUVJQVVwQWdnM0E2Z0JJQVFnQlNrQ0FEY0RvQUVnQlNBQ05nSVFJQVVnRFRjQ0FDQUZJQXczQWdnZ0JDQUVLQUt3QVVFQmFqWUNzQUVnQVNBR1FRRnFJQUVvQW54d0lBUkJvQUZxRU9RTElBRWdBU2dDaEFGQkFXbzJBb1FCSUFFZ0FTZ0NpQUZCQVdvMkFvZ0JJQUFnQlVFRWFqWUNCQ0FBUVFBMkFnQU1Bd1VnQmtFQmFrRUFJQVlnQzBjYklRWWdBa0VCYWlFQ0RBSUxBQXNMSUFSQmhyVURRZXNEUVE0Z0JFR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdnVBUUVFZnlNQVFVQnFJZ0lrQUNBQ1FvQ0FnSUNBQVRjQ05DQUNJQUpCRUdvaUF6WUNNQ0FEUVFFUXNRa2dBaWdDTUNBQ0tBSTBJZ05CQW5ScUlBQTJBZ0FnQWlBRFFRRnFJZ0EyQWpRRFFDQUFCRUFnQWlBQ0tBSXdJQUJCQVdzaUFFRUNkR29vQWdBaUF6WUNEQ0FDSUFBMkFqUWdBUVJBSUFFZ0FrRU1haER3SEFzZ0F5Z0NJQ0lBSUFNb0FpUkJBblJxSVFVRFFDQUFJQVZHQkVBZ0FpZ0NOQ0VBREFNTElBSWdBQ2dDQUNJRU5nSUlJQVFvQXFBQlJRUkFJQVFnQXpZQ29BRWdBa0VRYWlBQ1FRaHFFTzhjQ3lBQVFRUnFJUUFNQUFzQUN3c2dBa0VRYWhBaklBSkJRR3NrQUF1UEJnRURmeU1BUVRCcklnSWtBQUpBSUFGRkRRQUNRQ0FBSUFFUWlnd2lBMFVOQUFKL0lBTW9BZ1FpQkVIWW5CSkdCRUFnQXlnQ0xFRUlhZ3dCQ3lBRUVMQUtCRUFnQXlnQ0VDSURSUTBDSUFNb0FnUkJnSmtTUncwQ0lBTkJtQUZxREFFTElBUVFsaDFGRFFFZ0F5Z0NFRUZBYXdzb0FnQWlBVVVOQVFzZ0FTZ0NCQ0lEUWRqM0VVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05Cbm9vSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUVpqNEVVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CdjRvSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWRqNEVVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CMVlzSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWVENUQwWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CLzRrSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWVqNUVVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05Cc1pZSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWFENUVVWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CZ29nSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWJEckQwWUVRQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CaDRzSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnd0JDeUFEUWZqekQwY05BQ0FDSUFFb0FpUkJKR29RVXlBQ1FSQnFJZ05CbTQwSklBSVFOU0FDUVNCcUlnUWdBMEdGN3dNUUxTQUFJQVFnQVVFUWFoRDhBU0FFRUE4YUlBTVFEeG9nQWhBUEdnc2dBa0V3YWlRQUN3MEFJQUFnQVVHNDh3OFEzeElMQ2dBZ0FFR2dzeElRU0F2MEJBSUxmd0o5SXdCQkVHc2lDQ1FBSXdCQkVHc2lCaVFBSUFFb0FnQWhBd0pBQWtBZ0FDZ0NCQ0lDUlEwQUlBQW9BZ0FDZnlBQ1FRRnJJQU54SUFKcElnVkJBVTBOQUJvZ0F5QUNJQU5MRFFBYUlBTWdBbkFMSWdkQkFuUnFLQUlBSWdSRkRRQWdBa0VCYXlFS0lBVkJBVXNoQ3dOQUlBUW9BZ0FpQkVVTkFTQURJQVFvQWdRaUJVY0VRQUpBSUF0RkJFQWdCU0FLY1NFRkRBRUxJQUlnQlVzTkFDQUZJQUp3SVFVTElBVWdCMGNOQWd0QkFDRUZJQVFvQWd3aUNTQUJLQUlFSWd4R0RRSWdDU0FNSUFrb0FnQW9BZ2dSQVFCRkRRQUxEQUVMSUFZZ0FDQURJQUVROXdzQ1FFRUFJQUlnQUNnQ0RFRUJhck1pRFNBQUtnSVFJZzRnQXJPVVhoc05BQ0FBSUFJZ0FrRUJhM0ZCQUVjZ0FrRURTWElnQWtFQmRISWlBUUovSUEwZ0RwV05JZzFEQUFDQVQxMGdEVU1BQUFBQVlIRUVRQ0FOcVF3QkMwRUFDeUlISUFFZ0Iwc2JFUDRXSUFBb0FnUWlBaUFDUVFGcmNVVUVRQ0FDUVFGcklBTnhJUWNNQVFzZ0FpQURTd1JBSUFNaEJ3d0JDeUFESUFKd0lRY0xBa0FnQjBFQ2RDSURJQUFvQWdCcUtBSUFJZ0ZGQkVBZ0JpZ0NBQ0FBS0FJSU5nSUFJQUFnQmlnQ0FEWUNDQ0FBS0FJQUlBTnFJQUJCQ0dvMkFnQWdCaWdDQUNJQktBSUFJZ05GRFFFZ0F5Z0NCQ0VFQWtBZ0FpQUNRUUZySWdOeFJRUkFJQU1nQkhFaEJBd0JDeUFDSUFSTERRQWdCQ0FDY0NFRUN5QUFLQUlBSUFSQkFuUnFJQUUyQWdBTUFRc2dCaWdDQUNBQktBSUFOZ0lBSUFFZ0JpZ0NBRFlDQUFzZ0JpZ0NBQ0VFSUFaQkFEWUNBRUVCSVFVZ0FDQUFLQUlNUVFGcU5nSU1JQVlRaXdFTElBZ2dCVG9BRENBSUlBUTJBZ2dnQmtFUWFpUUFJQWdvQWdnYUlBaEJFR29rQUF2S0FRRUhmd0pBSUFBb0FnUWlBMFVOQUNBQktBSUFJUVFnQUNnQ0FBSi9JQU5CQVdzZ0JIRWdBMmtpQWtFQlRRMEFHaUFFSUFNZ0JFc05BQm9nQkNBRGNBc2lCVUVDZEdvb0FnQWlBRVVOQUNBRFFRRnJJUVlnQWtFQlN5RUhBMEFnQUNnQ0FDSUFSUTBCSUFRZ0FDZ0NCQ0lDUndSQUFrQWdCMFVFUUNBQ0lBWnhJUUlNQVFzZ0FpQURTUTBBSUFJZ0EzQWhBZ3NnQWlBRlJ3MENEQUVMSUFBb0Fnd2lBaUFCS0FJRUlnaEhCRUFnQWlBSUlBSW9BZ0FvQWdnUkFRQkZEUUVMQ3lBQUR3dEJBQXRLQVFGL0l3QkJJR3NpQWlRQUlBSWdBQ2tDR0RjREdDQUNJQUFwQWhBM0F4QWdBaUFBS1FJSU53TUlJQUlnQUNrQ0FEY0RBQ0FBSUFFUXZoQWdBU0FDRUw0UUlBSkJJR29rQUF0Q0FRRi9JQUZCZ0lDQWdBUlBCRUJCdk5BQkVKWU1BQXRCLy8vLy93TWdBQ2dDQ0NBQUtBSUFheUlBUVFGMUlnSWdBU0FCSUFKSkd5QUFRZnovLy84SFR4c0xDQUFnQUMwQU1Cb0x0d0VCQm44Z0FSRDBBeUVEQWtBZ0FDZ0NCQ0lDUlEwQUlBQW9BZ0FDZnlBQ1FRRnJJQU54SUFKcElnUkJBVTBOQUJvZ0F5QUNJQU5MRFFBYUlBTWdBbkFMSWdWQkFuUnFLQUlBSWdCRkRRQWdBa0VCYXlFR0lBRW9BZ0FoQnlBRVFRRkxJUVFEUUNBQUtBSUFJZ0JGRFFFZ0FDZ0NCQ0lCSUFOSEJFQUNRQ0FFUlFSQUlBRWdCbkVoQVF3QkN5QUJJQUpKRFFBZ0FTQUNjQ0VCQ3lBQklBVkhEUUlNQVFzZ0FDZ0NDQ0FIUncwQUN5QUFEd3RCQUFzMEFRTi9JQUVRM0FFaUF5QUFLQUlFSUFBdEFBc2lCQ0FFUVJoMFFSaDFRUUJJRzBZRWZ5QUFJQUVnQXhDYkV3VkJBUXRGQ3c0QUlBQVFIQ0FBUVJCcUVMd2RDeEFBSUFBUUhDQUFRUkJxSUFFUS9SMEx3Z1lDQ0g4Q2ZpTUFRY0FCYXlJRkpBQWdBU2dDOUFFZ0FTZ0MvQUVpQkVHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUWVBQWF5SUdKQUJCRENBRVFRRjBRUUpxUVpZQmJFSGtBRzRpQkNBRVFReE5HeUlISUFFb0F2UUJTd1JBSUFaQ2dJQ0FnSUFCTndKVUlBWWdCa0VRYWlJRU5nSlFJQVFnQVNnQy9BRVFzUVFnQVNnQzhBRWlCQ0FCS0FMMEFVRVViR29oQ0FOQUFrQWdCQ0FJUmdSQUlBRVFzZ1VnQVNBSEVQTUVJQVlvQWxBaUJDQUdLQUpVUVFOMGFpRUhEQUVMSUFRdEFBZ0VRQ0FHUVJCcUlBUVF1Z0lRc1FVTElBUkJGR29oQkF3QkN3c0RRQ0FFSUFkSEJFQWdCa0VJYWlBQklBUWdCRUVFYWhDcENTQUVRUWhxSVFRTUFRc0xJQVpCRUdvUWxRRUxJQVpCNEFCcUpBQUxJQVZCdUFGcUlBRWdBaER5QkNBQktBTDBBU0lLUVFGcklRc2dBaWdDQUNFSElBRW9BdkFCSVFnZ0JTZ0N2QUVoQ1NBRktBSzRBU0VHUVFBaEFnSkFBMEFnQWlBS1J3UkFJQWdnQmtFVWJHb2lCQzBBQ0VVRVFDQURLQUlBSVFNZ0JFRUJPZ0FJSUFRZ0F6WUNCQ0FFSUFjMkFnQWdCU2dDdkFFaEF5QUlJQVpCRkd4cUlnWWdBallDRUNBR0lBTTJBZ3dnQVNBQktBTDhBVUVCYWpZQy9BRWdBU0FCS0FLQUFrRUJhallDZ0FJZ0FDQUVRUVJxTmdJRUlBQkJBRFlDQUF3REN3SkFJQVFvQWd3Z0NVY05BQ0FISUFRb0FnQkhEUUFnQUVFQ05nSUFJQUFnQkVFRWFqWUNCQXdEQ3lBQ0lBUW9BaEJMQkVBZ0F5Z0NBQ0VESUFWQkFUb0FxQUVnQlNBQ05nS3dBU0FGSUFNMkFxUUJJQVVnQnpZQ29BRWdCU0FKTmdLc0FTQUZJQUkyQWhBZ0JTQUZLUU9vQVNJTU53TUlJQVVnQlNrRG9BRWlEVGNEQUNBRklBUW9BaEEyQXJBQklBVWdCQ2tDQ0RjRHFBRWdCU0FFS1FJQU53T2dBU0FFSUFJMkFoQWdCQ0FOTndJQUlBUWdERGNDQ0NBRklBVW9BckFCUVFGcU5nS3dBU0FCSUFaQkFXb2dBU2dDOUFGd0lBVkJvQUZxRUxJRUlBRWdBU2dDL0FGQkFXbzJBdndCSUFFZ0FTZ0NnQUpCQVdvMkFvQUNJQUFnQkVFRWFqWUNCQ0FBUVFBMkFnQU1Bd1VnQmtFQmFrRUFJQVlnQzBjYklRWWdBa0VCYWlFQ0RBSUxBQXNMSUFWQmhyVURRZXNEUVE0Z0JVR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCVUhBQVdva0FBc09BQ0FBRUJ3Z0FFRVFhaEQrSFFzS0FDQUFRZkQ2RHhCSUN6UUJBbjhnQUNnQ0FDRUJJQUFvQWdRaEFnTkFBa0FnQVNBQ1JnMEFJQUV0QUFnTkFDQUFJQUZCRkdvaUFUWUNBQXdCQ3dzTHB3RUJCSDhnQUJBY0l3QkJNR3NpQkNRQUlBUkJDR29nQVNnQ0FDQUNLQUlBSUFNb0FnQVF2UXNpQlNnQ0NDRUdJQVFnQlRZQ0JDQUVJQVkyQWdBQ1FDQUFRUkJxSWdWQkhHb2lCeUFFRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQlNBRkVLWUVJQUVvQWdBZ0FpZ0NBQ0FES0FJQUVMMExJZ0FRS0NBRklBVW9BaGhCQVdvMkFoZ2dCQ0FBTmdJRUlBUWdCallDQUNBSElBUVF2QUVMSUFSQk1Hb2tBQ0FBQ3hNQUlBQkZCRUJCQUE4TElBQW9BZ1FRdHhBTGlnRUJBbjhnQUNBQk5nTDRPU0FBUVlnNmFrRUFOZ0lBSUFCQmdEcHFRZ0EzQWdBZ0FFSDhPV3BCOFpVRU5nSUFJQUJCcUIxcUlRTWdBQ0FCRUtvRklRRWpBRUVRYXlJQUpBQUNRQ0FCUlEwQUlBRVEyQkFpQWcwQUlBQkJCRFlDRENBQVFmR1ZCRFlDQ0NBQUlBQXBBd2czQXdBZ0F5QUJJQUFRcGdWQkFDRUNDeUFBUVJCcUpBQWdBZ3NRQUNBQUxRQU1SUVJBRUc4QUN5QUFDNFlCQVFOL0lBRWdBQ2dDS0VzRVFDQUFLQUlnSVFNZ0FDRUNJQUFnQVVFSVR3Ui9RWDhnQVVFQ2RDQUJRZi8vLy84RFN4c1FGU0VDSUFFRlFRZ0xOZ0lvSUFBZ0FqWUNJQ0FBS0FJa0lRSkJBQ0VCQTBBZ0FTQUNSZ1JBSUFBZ0F4QTJCU0FCUVFKMElnUWdBQ2dDSUdvZ0F5QUVhaWdDQURZQ0FDQUJRUUZxSVFFTUFRc0xDd3R5QVFOL0lBQkNnSUNBZ0lBQk53SWtJQUFnQURZQ0lDQUFJQUVvQWdRaUFoQTVJQUVvQWdBaUFTQUNRUUowYWlFRUlBQW9BaVFoQXdOL0lBRWdCRVlFZnlBQUJTQUFJQU5CQVdvaUFqWUNKQ0FBS0FJZ0lBTkJBblJxSUFFb0FnQTJBZ0FnQVVFRWFpRUJJQUloQXd3QkN3c0xUQUVCZndKQUlBQXRBQ0FpQWlBQkxRQWdSZ1JBSUFKRkRRRWdBQ0FCRU44RUlBQWdBU2dDSERZQ0hBd0JDeUFDQkVBZ0FCQ1JEQXdCQ3lBQUlBRVE3aEFMSUFBZ0FTa0NKRGNDSkF0REFRRi9Jd0JCb0FGcklnSWtBQ0FDUVphdUJVSC9BRUVJSUFBUUZ5SUFRUmhxUWZxVERCQU9HaUFBSUFFb0FnUkJCR29RbWdFYUlBQVFHQ0FDUWFBQmFpUUFDeXNBSUFCQkFEb0FJQ0FBUVFBNkFBQWdBUzBBSUFSQUlBQWdBUkR1RUFzZ0FDQUJLUUlrTndJa0lBQUxXQUVDZnlNQVFhQUNheUlCSkFBZ0FFSGtFV29vQWdCQkFrOEVRQ0FBUWVRUmFpSUNJQUlvQWdCQkFXc2lBallDQUNBQklBQW9BdUFSSUFKQm5BSnNhaUlBRU9jUUlBQVErd2NnQVJEN0J3c2dBVUdnQW1va0FBdDNBUU4vSXdCQm9BSnJJZ0lrQUNBQ0VNc2VJUU1nQUVIa0VXb29BZ0FpQVNBQVFlZ1JhaWdDQUU4RVFDQUFJQUJCNkJGcUtBSUFJZ0ZCQVhSQkFpQUJHeERHSGlBQUtBTGtFU0VCQ3lBQUlBRkJBV28yQXVRUklBQW9BdUFSSUFGQm5BSnNhaUFERU9jUUlBTVErd2NnQWtHZ0Ftb2tBQXZrQkFJRGZ3RitJQUVvQWdBaUFpZ0NBQ0lCSUFJb0FnUkJBblJxSVFRRFFBSkFJQUFDZndKQUlBRWdCRWNFUUFKQUlBRW9BZ0FpQTBVTkFDQURLQUlFSWdKQnNQb1JSaUFDUWZqNkVVWnlJQUpCd1BzUlJpQUNRWWo4RVVaeWNnMENJQUpCMFB3UlJnUkFJQUFnQXlnQ0pCRGZBU0FEUVNocURBUUxJQUpCbVAwUlJpQUNRZUQ5RVVaeUlBSkIrUDBSUm5JTkFpQUNRYWo2RDBZRVFDQUFJQU1vQWlRUTN3RWdBQ0FES0FJb0VOOEJJQU5CTEdvTUJBc2dBaEQyQTBVTkFDQURLQUlvSWdJZ0F5Z0NMRUVDZEdvaEF3TkFJQUlnQTBZTkJTQUFJQUlvQWdBUTN3RWdBa0VFYWlFQ0RBQUxBQXNnQXdSL0FuOUJBQ0FES0FJRUlnSXBBeEJDaHFHS2hJU2hrS0RDQUlNaUJTQUZRZ0Y5ZzFBTkFCcEJBUUovUVFBZ0Fpa0RFRUtDZ0lpQWhLR0FnTUlBZ3lJRklBVkNBWDJEVUEwQUdrRUJBbjlCQUNBQ0tRTVFRb0tBaUlDQW9JQ0FBb01pQlNBRlFnRjlnMUFOQUJwQkFTQUNFTWNRRFFBYUlBSkJrSUlTRUVnTERRQWFBbjlCQUNBQ0tRTVFRb0NBaUlDRWdZQ0F3QUNESWdVZ0JVSUJmWU5RRFFBYVFRRWdBaERxSFEwQUdpQUNFT3NkQ3dzTkFCb0NmMEVBSUFJcEF4QkNoS0dDaElDQWtLQUNneUlGSUFWQ0FYMkRVQTBBR2tFQkFuOUJBQ0FDS1FNUVFvQ2hnZ1NESWdVZ0JVSUJmWU5RRFFBYVFRRWdBaEM5SGcwQUdpQUNRWWpxRHhCSUN3MEFHZ0ovUVFBZ0Fpa0RFRUtFZ0lDQWdJQ1FvQUtESWdVZ0JVSUJmWU5RRFFBYVFRRWdBa0hZZ2hJUVNBMEFHaUFDUWFDREVoQklDd3NMQlVFQUN3MERJQUFvQWdRZ0F4QzBDUXdEQ3c4TElBTkJKR29MS0FJQUVOOEJDeUFCUVFScUlRRU1BQXNBQ3hrQkFYOGdBU0FBS0FJa1JnUi9JQUlnQUJDMkFnVkJBQXNMR3dBZ0FFS0FnSUNBRURjQ0NDQUFJQUEyQWdRZ0FDQUJFUGdlQzE4QkJIOGdBU0FBS0FJb1N3UkFJQUFvQWlBaEFpQUFJQUVRdmdrZ0FDZ0NKQ0VESUFBb0FpQWhCRUVBSVFFRFFDQUJJQU5HQkVBZ0FDQUNFRFlGSUFRZ0FVRUNkQ0lGYWlBQ0lBVnFLQUlBTmdJQUlBRkJBV29oQVF3QkN3c0xDME1CQW44Z0FDZ0NBQ0VCSUFCQkFEWUNBQUpBSUFGRkRRQWdBQ2dDQkNFQUEwQWdBaUFBS0FJQVR3MEJJQUpCQVdvaEFpQUJFSzhGUVl3QmFpRUJEQUFMQUFzTGhBUUJCSDhqQUVHZ0FXc2lCU1FBQWtBQ1FBSkFJQUlPQXdJQ0FBRUxJQUZCQkdzb0FnQWdBQ2dDaUFGUERRRWdBQ0FCUVl3QmF4Q2NEQXdCQ3lBQ1FRQk1CRUFnQUNBQlJnMEJJQUFoQkFOQUlBUkJqQUZxSWdRZ0FVWU5BaUFGUVJCcUlBUVE1UUloQWlBRUlRTURRQUpBQWtBZ0FDQURSZ1JBSUFBaEF3d0JDeUFGS0FLWUFTQURRUVJyS0FJQVNRMEJDeUFESUFJUTVBSWFJQUlRcndVYURBSUxJQU1nQTBHTUFXc2lBeERrQWhvTUFBc0FDd0FMSUFBZ0FrRUJkaUlHUVl3QmJDSUlhaUVISUFJZ0JFd0VRQ0FGUVFBMkFnZ2dCU0FETmdJUUlBVWdCVUVJYWpZQ0ZDQUFJQWNnQmlBREVKTWZJQVVnQmpZQ0NDQUhJQUVnQWlBR2F5QURJQWhxSWdFUWt4OGdCU0FDTmdJSUlBTWdBa0dNQVd4cUlRUWdBU0VDQTBBQ1FDQUJJQU5HQkVBRFFDQUNJQVJHRFFJZ0FDQUNFT1FDUVl3QmFpRUFJQUpCakFGcUlRSU1BQXNBQ3lBQ0lBUkdCRUFEUUNBQklBTkdEUUlnQUNBREVPUUNRWXdCYWlFQUlBTkJqQUZxSVFNTUFBc0FCUUpBSUFJb0FvZ0JJQU1vQW9nQlNRUkFJQUFnQWhEa0Fob2dBa0dNQVdvaEFnd0JDeUFBSUFNUTVBSWFJQU5CakFGcUlRTUxJQUJCakFGcUlRQU1BZ3NBQ3dzZ0JVRVFhaEM4Q1F3QkN5QUFJQWNnQmlBRElBUVF2UWtnQnlBQklBSWdCbXNpQWlBRElBUVF2UWtnQUNBSElBRWdCaUFDSUFNZ0JCQ0pFUXNnQlVHZ0FXb2tBQXNUQUNBQUlBRkIvLy8vL3dOQkFrRUlFT01TQ3h3QUlBQkNnSUNBZ0lBQk53SWtJQUFnQURZQ0lDQUFJQUVRa0JFTG5RRUJCSDhnQUJBY0l3QkJNR3NpQXlRQUlBTkJDR29nQVNnQ0FDQUNLQUlBRU1JTElnUW9BZ2doQlNBRElBUTJBZ1FnQXlBRk5nSUFBa0FnQUVFUWFpSUVRUnhxSWdZZ0F4QzlBU0lBQkVBZ0FDZ0NEQ0VBREFFTElBUWdCQkNtQkNBQktBSUFJQUlvQWdBUXdnc2lBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQURJQUEyQWdRZ0F5QUZOZ0lBSUFZZ0F4QzhBUXNnQTBFd2FpUUFJQUFMRXdBZ0FDQUJRZi8vLy84RFFRSkJCQkR0RWdzakFDQUFJQUVwQWdBM0FnQWdBRUVJYWlBQlFRaHFFSlVmSUFBZ0FTZ0NWRFlDVkF2UEZRSVNmd0YrSXdCQjhBMXJJZ2drQUNBSVFid0tha0tBZ0lDQWdBRTNBZ0FnQ0NBSVFkZ0JhaUlKTmdLNENpQUpJQUl0QUFBUW5COGdBVUVJYWlFUklBaEIvQXRxSVJjZ0NFSEFDMnBCQkhJaEdDQUlRYmdLYWlFWkFrQUNRQU5BQWtBZ0FpMEFBQ0FRVFFSQUlCSU5BeUFJUWRnQmFpSUJFSnNmSUFnZ0dUWUMwQUVnQ0NBQklBZ29BcmdLUnpvQTFBRWdCeWdDRUNJQlJRMEJJQUVnQ0VIUUFXb2dBU2dDQUNnQ0dCRUNBQ0FBUVFCQnlBQVFlU0lBUW9DQWdJQ0FBVGNDVENBQUlBQkJDR28yQWtnTUJBc0NRQ0FFS0FJQUloTW9BZ1FpQ1NBQ0tBSUVJQkJCS0d4cUlnMHRBQUFpQzBjRVFDQUpJQXNnQ1NBTFN4c2dDU0FMSUFrZ0Mwa2JJZ3RyUVFOc0lnb05BUXNnQmlnQ01DQUdLQUlVYWlJSklBMHRBQUlnRFMwQUFXcHJJZ3BCQUNBSklBcFBHeUVLQzBFQUlRa2dDRUZBYXlBR0VJTUlJUTREUUNBSklBdEdCRUFDUUNBS0RRQkJBQ0VKUVFBaENnTkFJQTB0QUFFZ0NVc0VRQUpBSUEwb0FnUWdDVUVEZEdvaURDMEFCRUgvQVVZTkFBSkFJQWdvQWxRZ0NVME5BQ0FKUVFKMElnOGdDQ2dDVUdvb0FnQWlGVVVOQUNBQktBSUVJUllnQ0NBTVFRUnFOZ0wwRENBSUlBVTJBdkFNSUFnZ0RUWUM3QXdnQ0NBUk5nTG9EQ0FJSUE0MkF1UU1JQWdnRmpZQzRBd2dDRUhnREdvZ0ZSQ3JBaUlNUlEwQUlBa2dDQ2dDVkU4RVFDQU9JQWxCQVdvUW53d0xJQWdvQWxBZ0Qyb2dERFlDQUF3QkN5QUtRUUZxSVFvTElBbEJBV29oQ1F3QkN3c2dDZzBBUVFBaENVRUFJUW9EUUNBSklBMHRBQUpQRFFFQ1FDQUpRUU4wSWd3Z0RTZ0NDR29pRHkwQUJFSC9BVVlOQUFKQUlBZ29BbkFnQ1UwTkFDQUlLQUpzSUF4cUtRSUFJaHBDZ0lDQWdIQ0RRb0NBZ0lBUVVnMEFJQUVvQWdRaERDQUlJQTlCQkdvMkF2UU1JQWdnQlRZQzhBd2dDQ0FOTmdMc0RDQUlJQkUyQXVnTUlBZ2dEallDNUF3Z0NDQU1OZ0xnRENBSUlCbzNBNEFMSUFnZ0dqY0RBQ0FJUWNnS2FpQUlRZUFNYWlBSUVLOEVJQWdvQXN3S1FRRkdEUUVMSUFwQkFXb2hDZ3NnQ1VFQmFpRUpEQUFMQUFzZ0NFS0FnSUNBZ0FFM0FxUU5JQWdnQ0VIZ0RHbzJBcUFOQWtBZ0NnMEFJQWhCNEF4cUlBc1FzUVJCQUNFSkEwQWdDU0FMUmcwQklBRW9BZ1FoRENBSUlBMG9BZ3dnQ1VFRGRHb2lGU2dDQkRZQzNBb2dDQ0FGTmdMWUNpQUlJQTAyQXRRS0lBZ2dFVFlDMEFvZ0NDQU9OZ0xNQ2lBSUlBdzJBc2dLSUFoQnlBcHFJQk1vQWdBZ0NVRUNkR29vQWdBUWhBRVFxd0loRmlBSUtBS2tEU0lNSUFnb0FxZ05JZzlQQkVBZ0NFSGdER29nRDBFQmRFRUNJQThiRUxFRUlBZ29BcVFOSVF3TElBZ2dERUVCYWpZQ3BBMGdDQ2dDb0EwZ0RFRURkR29pRENBV05nSUFJQXdnRlNnQ0FEWUNCQ0FKUVFGcUlRa01BQXNBQ3lBSUlBMDJBc0FMSUJnZ0RoQ0RDQm9nRnlBSVFlQU1haUlKRUlzUklBZ2dDallDeUF3Z0NSQ1ZBU0FPRUxBRUlBZ29Bc2dNSWdsRklRb2dGQ0FRSUFrYklSUWdDaUFTYWlFU0lBZ29BcndLSWdrZ0NDZ0N3QXBQQkVBZ0NFSFlBV29RbVI4Z0NDZ0N2QW9oQ1FzZ0NDQUpRUUZxTmdLOENpQUlLQUs0Q2lBSlFZd0JiR29nQ0VIQUMyb2lDUkRsQWhvZ0VFRUJhaUVRSUFrUXJ3VWFEQU1GSUFFb0FnUWhEQ0FJSUEwb0Fnd2dDVUVEZEdvb0FnUTJBdlFNSUFnZ0JUWUM4QXdnQ0NBTk5nTHNEQ0FJSUJFMkF1Z01JQWdnRGpZQzVBd2dDQ0FNTmdMZ0RDQUtJQXBCQW1vZ0NFSGdER29nRXlnQ0FDQUpRUUowYWlnQ0FCQ0VBUkNyQWhzaENpQUpRUUZxSVFrTUFRc0FDd0FMQ3hCdkFBc2dDRUtBZ0lDQWdBRTNBOEFCSUFnZ0NFSDhBR29pRERZQ3ZBRWdDRUtBZ0lDQUlEY0NkQ0FJSUFoQjRBQnFOZ0p3SUFoQ2dJQ0FnTUFBTndOWUlBZ2dDRUZBYTBFRWNpSVROZ0pVQWtBQ1FDQVNRUUZHQkVBZ0NFRkFheUFJS0FLNENpQVVRWXdCYkdvUTVBSW9BZ0FoQ1F3QkN5QUVLQUlBSVFjZ0NFRUlhaUFHRUpnZklRMGdDRUdrQzJwQ2dJQ0FnSUFCTndJQUlBZ2dDRUdBQzJvaUFqWUNvQXNnQnlnQ0JDRUVJQWhCZnpZQ3dBc2dDRUhBQzJvaENTQUNJQVFRdXdrZ0FpZ0NKQ0lHSUFRZ0JDQUdTUnNoQ2lBQ0tBSWdJUXNEUUNBR0lBcEdCRUFnQWlBRU5nSWtCU0FMSUFaQkFuUnFJQWtvQWdBMkFnQWdCa0VCYWlFR0RBRUxDeUFJS0FLNENpSUxJQWdvQXJ3S1FZd0JiR29oRWtFQUlRbEJBQ0VLQTBBZ0NpRUVJQWtoQWlBTElCSkdCRUFDUUNBRVFRRkxCRUFnQ0VIWUFXb1FteDhnQ0VISUNtb2dEUkNEQ0NFRUlBaEI0QXhxRUVraUJrRUlhaUlDUWJ1cENoQU9HaUFDSUFNUURocEJBQ0VKQTBBQ1FBSkFJQWxCZjBZTkFDQUpJQVFvQWhSSkJFQWdCQ2dDRUNBSlFRSjBhaWdDQUNJS0RRSUxJQWxGRFFBZ0FrR0w1Z1lRRGhvTElBSkJtZjhJRUE0YUlBY29BZ0FpQ1NBSEtBSUVRUUowYWlFTFFRRWhCd05BQWtBZ0NTQUxSZ1JBSUFKQngvWU1FQTRhSUFnb0FyZ0tJZ2tnQ0NnQ3ZBcEJqQUZzYWlFSEEwQWdCeUFKUmcwQ0lBa29Bb2dCUlFSQUlBSkIzL0FNRUE0YUlBRWdCaUFKS0FJQUlBTVFseDhnQWhEaUFSb0xJQWxCakFGcUlRa01BQXNBQ3lBSktBSUFJUW9nQjBVRVFDQUNRZlR0REJBT0dnc2dDRUhBQzJvaUJ5QUtJQW9vQWdBb0Fnd1JBZ0FnQWlBSEVCSWFJQWxCQkdvaENTQUhFQThhUVFBaEJ3d0JDd3NnQVNnQ0JDSURFQndnQ0VIQUMyb2lBa0hsdFFWQjVnMUJDQ0FEUWNnQ2FoQVhJUU1nQ0VHd0Myb2lCeUFHUVF4cUVFSWdBMEVZYWlBSEVCSWFJQWNRRHhvZ0F4QVlJQVlRVVNBRUVMQUVJQUpCQUVFd0VIa2FJQWhCOUF0cVFvQ0FnSUFnTndJQUlBaEI4QXRxSUFoQjRBdHFOZ0lBSUFoQjNBdHFRUVEyQWdBZ0NFSFVDMm9nQWtFRWNqWUNBQ0FJUWZ3TGFrRUFRY0FBRUhraEFpQUlRY0FNYWtLQWdJQ0FnQUUzQXdBZ0NFRzhER29nQWpZQ0FDQUlRUUEyQXNnTURBTUxJQUpCOU8wTVFkcnBCaUFKR3hBT0dpQUlRY0FMYWlJTElBb2dDaWdDQUNnQ0RCRUNBQ0FDSUFzUUVob2dDVUVCYWlFSklBc1FEeG9NQUFzQUN5QUlRY0FMYWlBQ0VPVUNHZ3NnQ0VHQUMyb1FJeUFJUVVCcklBaEJ3QXRxSWdJUTVBSWhBeUFDRUs4RkdpQU5FTEFFSUFNb0FnQWlDUTBDSUFCQkFFSElBQkI1SWdCQ2dJQ0FnSUFCTndKTUlBQWdBRUVJYWpZQ1NBd0RCUUpBSUFzb0FvZ0JSUVJBSUF0QmlBRnFJUkJCQUNFT1FRQWhCa0VBSVFrQ2Z3TkFJQWNvQWdRZ0NVMEVRQ0FDSUE1RkRRSWFCU0FKUVFKMElnOGdCeWdDQUdvb0FnQWdDeWdDZkNBSlFRTjBhaWdDQUJDS0NTRUtBa0FnQ2lBSUtBS2dDeUFQYWlJUEtBSUFJaFJKQkVBZ0R5QUtOZ0lBUVFFaERnd0JDeUFLSUJSTElBWnlJUVlMSUFsQkFXb2hDUXdCQ3dzZ0JFRUJhaUVLSUFaQkFYRUVRQ0FDSVFrTUF3c2dDeUVKSUFKRkRRSWdBa0dJQVdvaEVDQUxDeUVKSUJCQkFUWUNBQXNnQkNFS0N5QUxRWXdCYWlFTERBRUxBQXNBQ3dKQUlBa29BaEFpQXdSQUlBaEI0QXhxUVFCQ0FCQ2RCQ0lDUWZDRkVEWUNCQ0FDUVlpY0VEWUNBQ0FCS0FJRUlRUWdDQ0FETmdMVUN5QUlJQVUyQXRBTElBZ2dDQ2dDUURZQ3pBc2dDQ0FSTmdMSUN5QUlJQk0yQXNRTElBZ2dCRFlDd0FzZ0NFSEFDMm9nQWhDckFpSUtEUUVnQVNnQ0JDSUJFQndnQ0VIQUMycEI1YlVGUVpnTFFRZ2dBVUhJQW1vUUZ5SUJRUmhxUVk3OUFoQU9HaUFCRUJnZ0FFRUFRY2dBRUhraUFFS0FnSUNBZ0FFM0Frd2dBQ0FBUVFocU5nSklEQUlMSUFFb0FnUVFoQXdoQ2dzZ0NDZ0NRQ0VCSUFBZ0NqWUNCQ0FBSUFFMkFnQWdBRUVJYWlBTUVJd1JDeUFJUVVCckVLOEZHZ3NnQ0VIWUFXb1FpaEVnQ0VId0RXb2tBQXNsQUNBQUVLZ01JQUJCR0JDRUNDQUFRUUEyQXV3U0lBQWdBQ2dDOEJKQkFXbzJBdkFTQ3hrQUlBRW9BZ0FpQVNBQVFRaHFSd1JBSUFBZ0FSQ29IUXNMS0FFQmZ3TkFJQUJCQVhFZ0FVRWZTM0pGQkVBZ0FFRUJkaUVBSUFGQkFXb2hBUXdCQ3dzZ0FRdDVBUU4vSXdCQmtBRnJJZ1VrQUNBRkVFa2lCa0VJYWlJRVFmT2FDUkFPR2lBRUlBRVF2QUlhSUFSQjkvQU1FQTRhSUFRZ0FoQU9HaUFFUWZmd0RCQU9HaUFFSUFNUXZBSWFJQVJCeDRvSkVBNGFJQVJCdXYwR0VBNGFJQVJCODVvSkVBNGFJQUFnQmtFTWFoQkNJQVlRVVNBRlFaQUJhaVFBQzBjQkFYOGdBUzBBQkFSQUlBQVFYaUFBSUFFb0FnQWlBaWtDQURjQ0VDQUFJQUlvQWdnMkFoZ2dBU2dDQUNJQVFRQTJBZ2dnQUVJQU53SUFEd3NnQUNBQktBSUFFS1VNQ3hNQUlBQkZCRUJCQUE4TElBQW9BZ1FRNWdNTGx3RUJBbjhqQUVFZ2F5SUhKQUFnQjBFWWFpSUlJQUVnQWlBRElBWVEyUUVDUUNBSUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFUWFpSUlJQUVnQWlBRklBUVEyUUVnQ0JBd0JFQWdBRUVDT2dBRURBRUxJQWRCQ0dvaUNDQUJJQUlnQjBFWWFoQWFLZ0lBSUFkQkVHb1FHaW9DQUJEL0F5QUlFREFFUUNBQVFRSTZBQVFNQVFzZ0FDQUhLUU1JTndJQUN5QUhRU0JxSkFBTGx3RUJBbjhqQUVFZ2F5SUhKQUFnQjBFWWFpSUlJQUVnQWlBRElBWVEyZ0VDUUNBSUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFUWFpSUlJQUVnQWlBRklBUVEyZ0VnQ0JBd0JFQWdBRUVDT2dBRURBRUxJQWRCQ0dvaUNDQUJJQUlnQjBFWWFoQWFLZ0lBSUFkQkVHb1FHaW9DQUJDQUJDQUlFREFFUUNBQVFRSTZBQVFNQVFzZ0FDQUhLUU1JTndJQUN5QUhRU0JxSkFBTG5BRUJBbjhqQUVFd2F5SUhKQUFnQjBFZ2FpSUlJQUVnQWlBRElBWVEyd0VDUUNBSUVHSUVRQ0FBUVFJNkFBZ01BUXNnQjBFUWFpSUlJQUVnQWlBRklBUVEyd0VnQ0JCaUJFQWdBRUVDT2dBSURBRUxJQWNnQVNBQ0lBZEJJR29RU2lzREFDQUhRUkJxRUVvckF3QVFnUVFnQnhCaUJFQWdBRUVDT2dBSURBRUxJQUFnQnlrREFEY0RBQ0FBSUFjcEF3ZzNBd2dMSUFkQk1Hb2tBQXRLQVFKL0l3QkJzQUZySWdFa0FDQUFMUUFJUlFSQUlBRkJoNmtEUVk0QlFRNGdBVUdnQVdvUUhTSUFFQmNpQWtFWWFrRzAzZ2dRRGhvZ0FoQVlJQUFRSGdzZ0FVR3dBV29rQUFzVUFDQUFRUUEyQXZRQklBQWdBQ2dDOEFFUU5nc1lBUUY5SUFBcUFnd2lBVU1BQUFBQVd5QUJ2RUVBVG5FTENBQWdBQ2dDREVVTEdBQWdBRUhnaEE0MkFnQWdBRUVnYWhBUEdpQUFFSm9LQzdzREFRWi9Jd0JCNEFKcklnSWtBQ0FDUWRBQmFoQ0lBeUlFSUFRb0FnQkJER3NpQXlnQ0FHb2lCU0FGS0FJRVFZUUljallDQkNBQ1FjZ0JhaUlGSUFRZ0F5Z0NBR29RaXdZUWhnZ2dCUkJrSUFRZ0JDZ0NBRUVNYXlnQ0FHcEJGRFlDQ0NBRVFRaHFJQUVyQXdBUW1BMGdBa0c0QVdvZ0JFRU1haEJDSUFRZ0FrR3dBV29RNEJRQ1FDQUJLd01BSUFJckE3QUJZUVJBQTBBQ1FDQUNLQUs4QVNBQ0xRRERBU0lCSUFGQkdIUkJHSFVpQmtFQVNDSUJHeUlEUVFKSkRRQWdBaWdDdUFFaUJTQUNRYmdCYWlBQkd5SUhJQU5CQVdzaUFXb3RBQUJCTUVjTkFDQURJQWRxUVFKckxRQUFRUzVHRFFBQ1FDQUdRUUJJQkVBZ0FpQUJOZ0s4QVF3QkN5QUNJQUU2QU1NQklBSkJ1QUZxSVFVTElBRWdCV3BCQURvQUFBd0JDd3NnQUVFSWFpQUNRYmdCYWhBU0dnd0JDeUFDUVJocUlnVWdBa0VnYWhDSUF5SURJQU1vQWdCQkRHc29BZ0JxRUlzR0VJWUlJQVVRWkNBRElBTW9BZ0JCREdzb0FnQnFRUkUyQWdnZ0EwRUlhaUFCS3dNQUVKZ05JQUpCQ0dvaUFTQURRUXhxRUVJZ0FFRUlhaUFCRUJJYUlBRVFEeG9nQXhDN0Fob0xJQUpCdUFGcUVBOGFJQVFRdXdJYUlBSkI0QUpxSkFBZ0FBdEtBUUovSXdCQnNBRnJJZ0VrQUNBQUxRQUVSUVJBSUFGQmg2a0RRWTRCUVE0Z0FVR2dBV29RSFNJQUVCY2lBa0VZYWtHMDNnZ1FEaG9nQWhBWUlBQVFIZ3NnQVVHd0FXb2tBQXNNQUNBQVF3QUFmME1RK3hJTER3QWdBRUgvQVVNQUFQNUNFUHdTQytrQkF3Ti9BWDBCZkNNQVFSQnJJZ01rQUNBQktBSUVJUVVnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnUkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUVLQUlFSWdSQjhKOFNSZ1JBSUFJUVBDRUhJQU5CQ0dvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBSG5SQnpEQUVMSUFSQnNLa1NSZ1JBSUFJUU5DRUdJQU5CQ0dvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBR2p4QnJEQUVMSUFSQjBLZ1NSdzBCSUFJUVB5RUdJQU5CQ0dvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBR2p4QkdFSElMSUFBZ0F5a0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBTkJFR29rQUF1SkFnRUJmeU1BUWNBQmF5SUlKQUFnQ0NBQ05nS3dBU0FJSUFFMkFyZ0JJQUFnQ0NnQ3VBRWdDQ2dDc0FFZ0F4RFpCQ0lBUWVqcUR6WUNCQ0FBUWFEckR6WUNBQ0FBSUFZMkFpd2dBQ0FGTmdJb0lBQWdCRFlDSkNBQVFZanJEellDQUNBQVFUQnFJQWNRd1JBQ1FDQUFLQUlrSWdGRkJFQWdDRUc3dGdWQklFRUFJQWhCb0FGcUVCMGlBUkFYSWdKQkdHcEIxTDBJRUE0YUlBSVFHQ0FCRUI0Z0FDZ0NKQ0lCUlEwQkN5QUJLQUlFUWNqcEQwY05BQ0FJUWJ1MkJVRWlRUUFnQ0VHZ0FXb1FIU0lCRUJjaUFrRVlha0crNndnUURob2dBaEFZSUFFUUhnc2dBQ2dDTEJCWElBQW9BZ2hCQVVFQVFadkdDRUc3dGdWQkpCQkxJQWhCd0FGcUpBQWdBQXN4QVFGL0lBRWdCVThFUUJBQkFBc2dCQ0FBS0FJSUlBQW9BZ0JySWdBZ0EzVWlCaUFCSUFFZ0Jra2JJQUFnQWs4YkMwY0JBWDhqQUVFUWF5SUVKQUFnQkNBRE5nSU1JQVFnQVNnQ0FEWUNDQ0FFSUFJb0FnQTJBZ1FnQUNBRVFReHFJQVJCQ0dvZ0JFRUVhaENHQ3lFQUlBUkJFR29rQUNBQUN6a0JBWDhqQUVFUWF5SURKQUFnQXlBQk5nSU1JQUFnQW1vZ0EwRU1haENlQWlJQUJIOGdBQ2dDREFWQkFBc2hBU0FEUVJCcUpBQWdBUXNwQUFKQUlBTW9BZ1JCQWtjRVFDQURLQUlBSUFWSERRRUxJQUFnQkRjQ0FBOExJQUJDQURjQ0FBc29BUUYrSUFBZ0F5Z0NBQ0lCSUFWTFFRRWdBWFFnQkhGRmNnUitRZ0FGSUFNcEFnQUxOd0lBQzNZQkEzOGpBRUhRQUdzaUFTUUFJQUZCUUdzaUJDQUNFTzBFSUFGQk1Hb2lCU0FDRU8wRUlBRWdBeUFFRU1RQklBRkJFR29pQWlBQlFmVHREQkF0SUFGQklHb2lCaUFDSUFVUVRpQUFJQVpCaStZR0VDMGdCaEFQR2lBQ0VBOGFJQUVRRHhvZ0JSQVBHaUFFRUE4YUlBRkIwQUJxSkFBTGhnSUNBWDhDZmlNQVFkQUFheUlBSkFBZ0FFSUFOd000SUFCQ0FEY0RNQUpBSUFJZ0F5QUFRVGhxSUFCQk1Hb1ErU3BGRFFBZ0FDQUFLUU00SWdVM0F5QWdBQ0FGTndNUUlBQkJLR29nQVNBQVFSQnFFSzhFSUFBcEF5Z2lCVUtBZ0lDQWNJTkNnSUNBZ0JCU0RRQWdBQ0FBS1FNd0lnWTNBeGdnQUNBR053TUlJQUJCS0dvZ0FTQUFRUWhxRUs4RUlBQXBBeWdpQmtLQWdJQ0FjSU5DZ0lDQWdCQlNEUUFnQUNBRnB5SUNOZ0lvSUFBZ0JqNENUQ0FCS0FJQUlnUVFIQ0FBSUFJZ0JFRVFhaEMxR3pZQ1NDQUJLQUlBSVFFZ0FDQUROZ0pFSUFFZ0FFSEVBR29nQUVFb2FpQUFRY3dBYWlBQVFjZ0FhaENqSHlFRUN5QUFRZEFBYWlRQUlBUUxWUUVDZnlNQVFSQnJJZ0FrQUFKQUlBSW9BZ1FpQlVId2hSQkhCRUFnQlVHUXB4SkhEUUVnQWlnQ0dDQURSdzBCQ3lBQktBSUFJUUVnQUNBRE5nSU1JQUVnQUVFTWFoQ29DU0VFQ3lBQVFSQnFKQUFnQkF0bkFRTi9Jd0JCc0FGcklnTWtBQ0FBS0FJQUlnUVFIQ0FEUVJCcVFZR1pCU0FDUVFnZ0JFSElBbW9RRnlJRVFSaHFJZ1VnQVJBT0dpQURJQUFvQWdRb0FnQWlBQ0FBS0FJQUtBSU1FUUlBSUFVZ0F4QVNHaUFERUE4YUlBUVFHQ0FEUWJBQmFpUUFDeUFBSUFFRVFDQUJLQUlFSUFKR0JFQWdBUThMSUFBZ0FTQUNFT0VFQzBFQUMwUUJBWDhqQUVFUWF5SUVKQUFnQkNBQktBSUFOZ0lNSUFBb0FnUWdBMm9nQkVFTWFoQ2xDU0VBSUFRb0Fnd2hBU0FFUVJCcUpBQWdBRUVNYWlBQklBSnFJQUFiQzVBQkFRUi9Jd0JCMEFGcklnTWtBQ0FBS0FJTVFRSVE0Z01oQmlBRFFSQnFJZ1FnQUNnQ0JDSUZLQUlBUVhJZ0FDZ0NDQkFRSUFNZ0JTZ0NBQ0FHRURjZ0JDQURFQklhSUFSQjBKWUtFQTRhSUFRZ0JTZ0NBRUdBQTJwQkhDQUFLQUlNRUk4QkVBNGFJQVFnQWhBT0dpQUVJQUVRRWhvZ0F5Z0N6QUVoQUNBREVBOGFJQVFRRVNBRFFkQUJhaVFBSUFBTHdBRUJCWDhqQUVIZ0FXc2lCQ1FBSUFBb0Fnd29BZ0JCQWhEaUF5RUhJQVJCSUdvaUF5QUFLQUlFSWdVb0FnQkJjaUFBS0FJSUVCQWdCRUVRYWlJR0lBVW9BZ0FnQnhBM0lBTWdCaEFTR2lBRFFhVENDaEFPR2lBRUlBVW9BZ0FvQWdBb0FnQVFnUUlnQXlBRUVCSWFJQU5CNTVZS0VBNGFJQU1nQlNnQ0FFR0FBMnBCSENBQUtBSU1LQUlBRUk4QkVBNGFJQU1nQWhBT0dpQURJQUVRRWhvZ0JDZ0MzQUVoQUNBRUVBOGFJQVlRRHhvZ0F4QVJJQVJCNEFGcUpBQWdBQXMrQVFGL0lBRkJDSFVoQmlBQUlBSWdBVUVCY1FSL0lBTW9BZ0FnQmhEVkRBVWdCZ3NnQTJvZ0JFRUNJQUZCQW5FYklBVWdBQ2dDQUNnQ0dCRUlBQXN1QVFGL0l3QkJFR3NpQXlRQUlBQWdBMEVJYWlBREVPa0tJZ0FnQVNBQ0VORVVJQUFRcndNZ0EwRVFhaVFBQzBvQkFuOGdBQkI3SVFJZ0FCQTdJUU1qQUVFUWF5SUFKQUFnQUNBQk9nQVBRWDhoQVNBREJFQWdBaUFESUFCQkQyb1E3eGdpQVNBQ2EwRi9JQUViSVFFTElBQkJFR29rQUNBQkN4a0FJQUFnQVVFQmRFR2czdzlxTHdFQU93QUFJQUJCQW1vTEZnQWdBZ1JBSUFFUU94b0xJQUJCZ29hQUlEWUFBQXVoQ1FFTGZ5TUFRYkFCYXlJRUpBQWdCRUYvTmdLZ0FTQUVRb2FBZ0lEQUxUY0RtQUVnQkVLTGdJQ0FrQlEzQTVBQklBUkNsNENBZ1BBRE53T0lBU0FFUXJ1QWdJRHdCamNEZ0FFZ0JFSUFOd0trQVNBRUlBSTZBQTRnQkVFbE9nQU5JQVJCQURvQUR5QUJRZVFEYWlFTUlBRkIyQU5xSVEwZ0FVSE1BMm9oQ1NBQlFhd0JhaUVLSUFGQkJHb2hDeUFFUVJCcUlnVkI1QUFnQkVFTmFpQUVRWUFCYWlBQktBSUFFQUlnQldvaEJpQUVJQVUyQWdnZ0FCQjBJUUFnQWtINEFFY2hEZ05BSUFVZ0JrY0VRQ0FES0FJSVFRRWdCU3dBQUJDOUFnUkFJQUJCSUJDa0FTQURLQUlJSVFJRFFBSkFJQVlnQlVFQmFpSUZSZ1JBSUFZaEJRd0JDeUFDUVFFZ0JTd0FBQkM5QWcwQkN3c2dCQ0FGTmdJSURBSUZJQVFnQlRZQ0JDQUVRUUEyQWdBQ1FDQUVRUVJxSUFZZ0N5QUtJQU1nQkJEZURDQUxheUlDUWFjQlRBUkFJQUJCSlJDa0FTQUFRY0VBUWVFQUlBSkIxQUJJR3hDa0FTQUVJQVFvQWdRMkFnZ01BUXNnQkNBRk5nSUVJQVJCQkdvZ0JpQUtJQWtnQXlBRUVONE1JQXBySWdKQkRHMGhCeUFDUVo4Q1RBUkFJQUJCSlJDa0FTQUFRY0lBUWVJQUlBSkJrQUZJR3hDa0FRSkFJQTROQUNBQklBZEJER3hxUWF3QmFrRUFFSWtCSVFJZ0F5Z0NDRUhBQUNBQ0xBQUFFTDBDUlEwQUlBQVF3UU1nQUJBN2FrRUJhMEh0QURvQUFBc2dCQ0FFS0FJRU5nSUlEQUVMQWtBZ0NSQTdRUUFnRFJBN2EwWU5BQ0FFSUFVMkFnUWdCRUVFYWlBR0lBa2dEQ0FESUFRUTNnd2dDV3RCRjBvTkFDQUFRU1VRcEFFZ0FFSHdBQkNrQVNBRUlBUW9BZ1EyQWdnTUFRc2dCQ0FGTmdJRUlBTW9BZ2hCd0FBZ0JTd0FBQ0lDRUwwQ0JFQkJBQ0VDQWtBZ0JBSi9RUVlnQmlBRUtBSUlJZ2RHRFFBYVFRUWdBeWdDQ0VIQUFDQUhMQUFBSWdnUXZRSkZEUUFhUVFRaEJ5QURJQWdRdkFVaEFnTkFBa0FnQkNBRUtBSUlRUUZxSWdnMkFnZ2dBa0V3YXlFQ0lBWWdDRVlnQjBFQ1NYSU5BQ0FES0FJSVFjQUFJQWdzQUFBaUNCQzlBa1VOQXlBSFFRRnJJUWNnQXlBSUVMd0ZJQUpCQ214cUlRSU1BUXNMSUFZZ0NFY05BVUVDQ3lBRUtBSUFjallDQUFzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ1FRWnJEZ2NDQXdFQkFRUUZBQXNDUUNBQ1FUZHJEZ2NJQVFFQkNRRUtBQXNnQWtFWFJnMEZJQUpCSDBZTkJpQUNRZXdDUmcwS0lBSkJqUkJHRFFzTElBUW9BZ2doQWdOQUlBSWdCVVlORFNBQUlBVXNBQUFRcEFFZ0JVRUJhaUVGREFBTEFBc2dBRUVsRUtRQklBQkI5d0FRcEFFTUN3c2dBRUVsRUtRQklBQkI5UUFRcEFFTUNnc2dBRUVsRUtRQklBQkJ5UUFRcEFFTUNRc2dBRUVsRUtRQklBQkI3UUFRcEFFTUNBc2dBRUVsRUtRQklBQkJ5QUFRcEFFTUJ3c2dBRUVsRUtRQklBQkI1QUFRcEFFTUJnc2dBRUVsRUtRQklBQkJ6UUFRcEFFTUJRc2dBRUVsRUtRQklBQkIwd0FRcEFFTUJBc2dBRUVsRUtRQklBQkIrUUFRcEFFTUF3c2dBRUVsRUtRQklBQkI2Z0FRcEFFTUFnc2dBRUVsRUtRQklBQkIyUUFRcEFFTUFRc2dBa0VsUmdSQUlBQkJKUkNrQVNBQVFTVVFwQUVnQkNBRlFRRnFOZ0lJREFFTElBQWdBaENrQVNBRUlBVkJBV28yQWdnTElBUW9BZ2doQlF3Q0N3QUxDeUFFUWJBQmFpUUFDL2NKQVFwL0l3QkI0QVJySWdRa0FDQUVRb2FBZ0lEQUxUY0R5QVFnQkVLTGdJQ0FrQlEzQThBRUlBUkNsNENBZ1BBRE53TzRCQ0FFUXJ1QWdJRHdCamNEc0FRZ0JFSUFOd0xVQkNBRVFYODJBdEFFSUFRZ0Fqb0F2Z01nQkVFbE9nQzlBeUFFUVFBNkFMOERJQVJCd0FOcUlnVkI1QUFnQkVHOUEyb2dCRUd3QkdvZ0FTZ0NBQkFDR2lBRUlBUkJJR29pQmpZQ0hDQUVRZ0EzQXhBZ0JDQUZOZ0lNSUFZZ0JFRU1ha0hrQUNBRVFSQnFJQUVvQWdBUW9nTWlCa0YvUndSQUlBRkI1QU5xSVF3Z0FVSE1BMm9oQ1NBQlFhd0JhaUVLSUFGQkJHb2hDeUFFUVNCcUlnVWdCa0VDZEdvaEJpQUFFUE1CSVFBZ0FrSDRBRWNoRFFOQUlBVWdCa2NFUUNBRFFRRWdCU2dDQUJESkFnUkFJQUJCSUJDekFRTkFBa0FnQmlBRlFRUnFJZ1ZHQkVBZ0JpRUZEQUVMSUFOQkFTQUZLQUlBRU1rQ0RRRUxDeUFFSUFVMkFod01BZ1VnQkNBRk5nSUlJQVJCQURZQ0JBSkFJQVJCQ0dvZ0JpQUxJQW9nQXlBRVFRUnFFT0FNSUF0cklnSkJwd0ZNQkVBZ0FFRWxFTE1CSUFCQndRQkI0UUFnQWtIVUFFZ2JFTE1CSUFRZ0JDZ0NDRFlDSEF3QkN5QUVJQVUyQWdnZ0JFRUlhaUFHSUFvZ0NTQURJQVJCQkdvUTRBd2dDbXNpQWtFTWJTRUhJQUpCbndKTUJFQWdBRUVsRUxNQklBQkJ3Z0JCNGdBZ0FrR1FBVWdiRUxNQkFrQWdEUTBBSUFOQndBQWdBU0FIUVF4c2FrR3NBV3BCQUJEMUFTZ0NBQkRKQWtVTkFDQUFFSThDSUFBb0FnUWdBQzBBQ3hDWUFVRUNkR3BCQkd0QjdRQTJBZ0FMSUFRZ0JDZ0NDRFlDSEF3QkN3SkFJQUVvQXRBRElBRXRBTmNERUpnQlFRQWdBU2dDM0FNZ0FTMEE0d01RbUFGclJnMEFJQVFnQlRZQ0NDQUVRUWhxSUFZZ0NTQU1JQU1nQkVFRWFoRGdEQ0FKYTBFWFNnMEFJQUJCSlJDekFTQUFRZkFBRUxNQklBUWdCQ2dDQ0RZQ0hBd0JDeUFFSUFVMkFnZ2dBMEhBQUNBRktBSUFFTWtDQkVCQkFDRUNBa0FnQkFKL1FRWWdCaUFFS0FJY0lnZEdEUUFhUVFRZ0EwSEFBQ0FIS0FJQUlnY1F5UUpGRFFBYUlBTWdCeEQzQkNFQ1FRUWhCd05BQWtBZ0JDQUVLQUljUVFScUlnZzJBaHdnQWtFd2F5RUNJQVlnQ0VZZ0IwRUNTWElOQUNBRFFjQUFJQWdvQWdBaUNCREpBa1VOQXlBSFFRRnJJUWNnQXlBSUVQY0VJQUpCQ214cUlRSU1BUXNMSUFZZ0NFY05BVUVDQ3lBRUtBSUVjallDQkFzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ1FRWnJEZ2NDQXdFQkFRUUZBQXNDUUNBQ1FUZHJEZ2NJQVFFQkNRRUtBQXNnQWtFWFJnMEZJQUpCSDBZTkJpQUNRZXdDUmcwS0lBSkJqUkJHRFFzTElBUW9BaHdoQWdOQUlBSWdCVVlORFNBQUlBVW9BZ0FRc3dFZ0JVRUVhaUVGREFBTEFBc2dBRUVsRUxNQklBQkI5d0FRc3dFTUN3c2dBRUVsRUxNQklBQkI5UUFRc3dFTUNnc2dBRUVsRUxNQklBQkJ5UUFRc3dFTUNRc2dBRUVsRUxNQklBQkI3UUFRc3dFTUNBc2dBRUVsRUxNQklBQkJ5QUFRc3dFTUJ3c2dBRUVsRUxNQklBQkI1QUFRc3dFTUJnc2dBRUVsRUxNQklBQkJ6UUFRc3dFTUJRc2dBRUVsRUxNQklBQkIwd0FRc3dFTUJBc2dBRUVsRUxNQklBQkIrUUFRc3dFTUF3c2dBRUVsRUxNQklBQkI2Z0FRc3dFTUFnc2dBRUVsRUxNQklBQkIyUUFRc3dFTUFRc2dCVUVFYWlFQ0FrQWdBeUFGS0FJQUVQY0VRU1ZHQkVBZ0FFRWxFTE1CSUFCQkpSQ3pBUXdCQ3lBQUlBVW9BZ0FRc3dFTElBUWdBallDSEFzZ0JDZ0NIQ0VGREFJTEFBc0xJQVJCNEFScUpBQVBDeEJ2QUF2a0FRSUNmd0Y5SXdCQklHc2lCU1FBQWtBQ1FBSkFJQVM4SWdaREFBQUFBQkJHSWdlOGMwRUFUaUFFSUFkYmNVVUVRRU1BQUFDQUVFWWlCN3dnQm5OQkFFZ2dCQ0FIWEhJTkFRc01BUXNnQXlBRWxSQkdJZ2VMUXdBQWdIOWRSUTBBSUFWQkFUb0FIQ0FGSUFjNEFoZ01BUXNnQlVFQU9nQWNJQVZCQURvQUdBc0NRQ0FGTFFBY1JRUkFJQVZCQ0dvaUJpQURRZG1TQnlBRUVPb0dJQUVnQmlBQ0VGMGdCaEFQR2lBQUlBRXRBQVFFZnlBQUlBTTRBZ0JCQVFWQkFnczZBQVFNQVFzZ0JTb0NHQkJHSVFNZ0FFRUJPZ0FFSUFBZ0F6Z0NBQXNnQlVFZ2FpUUFDd2tBSUFBUTdnd1FId3NIQUNBQVFReHFDeE1BSUFBUTFnVW9BZ0FnQUNnQ0FHdEJBblVMQ2dBZ0FFRUlhaERXQlFzUkFDQUFJQUVnQVNnQ0FDZ0NLQkVDQUFzY0FDQUFMUUFMRVBzRUJFQWdBQ0FCRUljRUR3c2dBQ0FCRU1BRkN5RUJBWDlCQVNFQklBQXRBQXNRK3dRRWZ5QUFLQUlJRVAwSlFRRnJCVUVCQ3d2VEFRRUVmeU1BUVJCcklnWWtBQ0FBRUpnR1FXOGhCeUFDUVc4Z0FXdE5CRUFnQUJEQkF5RUlJQUZCNXYvLy93ZE5CRUFnQmlBQlFRRjBOZ0lJSUFZZ0FTQUNhallDRENBR1FReHFJQVpCQ0dvUWlRVW9BZ0FRbHdaQkFXb2hCd3NnQnhDVUJpRUNJQVFFUUNBQ0VJTUJJQWdRZ3dFZ0JCQzVBeG9MSUFNZ0JDQUZhaUlKUndSQUlBSVFnd0VnQkdvZ0NCQ0RBU0FFYWlBRmFpQURJQWxyRUxrREdnc2dBVUVCYWlJQlFRdEhCRUFnQ0NBQkVKRU5DeUFBSUFJUWxnWWdBQ0FIRUpVR0lBWkJFR29rQUE4TEVMZ0RBQXNNQUNBQUlBRW9Ba1EyQUFBTENBQWdBQkR6QVJvTENBQkIvLy8vL3djTEJRQkIvd0FMMEFFQkFuOGdBa0dBRUhFRVFDQUFRU3M2QUFBZ0FFRUJhaUVBQ3lBQ1FZQUljUVJBSUFCQkl6b0FBQ0FBUVFGcUlRQUxJQUpCaEFKeElnTkJoQUpIQkVBZ0FFR3UxQUE3QUFBZ0FFRUNhaUVBQ3lBQ1FZQ0FBWEVoQWdOQUlBRXRBQUFpQkFSQUlBQWdCRG9BQUNBQVFRRnFJUUFnQVVFQmFpRUJEQUVMQ3lBQUFuOENRQ0FEUVlBQ1J3UkFJQU5CQkVjTkFVSEdBRUhtQUNBQ0d3d0NDMEhGQUVIbEFDQUNHd3dCQzBIQkFFSGhBQ0FDR3lBRFFZUUNSZzBBR2tISEFFSG5BQ0FDR3dzNkFBQWdBMEdFQWtjTHFnRUJBWDhDUUNBRFFZQVFjVVVOQUNBQ1JTQURRY29BY1NJRVFRaEdJQVJCd0FCR2NuSU5BQ0FBUVNzNkFBQWdBRUVCYWlFQUN5QURRWUFFY1FSQUlBQkJJem9BQUNBQVFRRnFJUUFMQTBBZ0FTMEFBQ0lFQkVBZ0FDQUVPZ0FBSUFCQkFXb2hBQ0FCUVFGcUlRRU1BUXNMSUFBQ2YwSHZBQ0FEUWNvQWNTSUJRY0FBUmcwQUdrSFlBRUg0QUNBRFFZQ0FBWEViSUFGQkNFWU5BQnBCNUFCQjlRQWdBaHNMT2dBQUMzd0JBMzhqQUVFUWF5SUVKQUFDUUNBRVFRaHFJQUFRM3dNaUJTMEFBRVVOQUNBQUlBQW9BZ0JCREdzb0FnQnFJZ01vQWhnZ0FTQUJJQUpxSWdJZ0FTQURLQUlFUWJBQmNVRWdSaHNnQWlBRElBTVFuQU1RL3dVTkFDQUFJQUFvQWdCQkRHc29BZ0JxUVFVUWpoRUxJQVVRNEFNZ0JFRVFhaVFBSUFBTENRQWdBQ0FCRUtFVUN3c0FJQUJCLy8vLy93ZHhDd29BSUFBZ0FSQ1lBVVVMMFFRQkMzOGpBRUdBQVdzaUNpUUFJQW9nQVRZQ2VDQUNJQU1RZ2dvaENDQUtRZHNYTmdJUUlBcEJDR29nQ2tFUWFpSUpFSUVLSVE0Q1FDQUlRZVVBVHdSQUlBZ1E0QUVpQ1VVTkFTQU9JQWtRaGdJTElBa2hCeUFDSVFFRFFDQUJJQU5HQkVBRFFBSkFJQUFnQ2tINEFHb1EyZ0pCQUNBSUcwVUVRQ0FBSUFwQitBQnFFSkFDUlEwQklBVWdCU2dDQUVFQ2NqWUNBQXdCQ3lBQUtBSUFFTzBCSVF3Z0JrVUVRQ0FFSUF3UWhBY2hEQXNnRFVFQmFpRVBRUUFoRUNBSklRY2dBaUVCQTBBZ0FTQURSZ1JBSUE4aERTQVFSUTBESUFBUW9RSWFJQWtoQnlBQ0lRRWdDQ0FMYWtFQ1NRMERBMEFnQVNBRFJnUkFEQVVGQWtBZ0J5MEFBRUVDUncwQUlBRW9BZ1FnQVMwQUN4Q1lBU0FOUmcwQUlBZEJBRG9BQUNBTFFRRnJJUXNMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBRkFrQWdCeTBBQUVFQlJ3MEFJQUVnRFJEMUFTZ0NBQ0VSQWtBZ0JnUi9JQkVGSUFRZ0VSQ0VCd3NnREVZRVFFRUJJUkFnQVNnQ0JDQUJMUUFMRUpnQklBOUhEUUlnQjBFQ09nQUFJQXRCQVdvaEN3d0JDeUFIUVFBNkFBQUxJQWhCQVdzaENBc2dCMEVCYWlFSElBRkJER29oQVF3QkN3QUxBQXNMQWtBQ1FBTkFJQUlnQTBZTkFTQUpMUUFBUVFKSEJFQWdDVUVCYWlFSklBSkJER29oQWd3QkN3c2dBaUVEREFFTElBVWdCU2dDQUVFRWNqWUNBQXNnRGhEWUFTQUtRWUFCYWlRQUlBTVBCUUpBSUFFb0FnUWdBUzBBQ3hEK0NVVUVRQ0FIUVFFNkFBQU1BUXNnQjBFQ09nQUFJQXRCQVdvaEN5QUlRUUZySVFnTElBZEJBV29oQnlBQlFReHFJUUVNQVFzQUN3QUxFRzhBQ3l3QUFrQWdBQ0FCUmcwQUEwQWdBQ0FCUVFScklnRlBEUUVnQUNBQkVLa0JJQUJCQkdvaEFBd0FDd0FMQ3dzQUlBQkJBQ0FCRUxFVUN3b0FJQUVnQUd0QkRHMEx2d1FCQzM4akFFR0FBV3NpQ2lRQUlBb2dBVFlDZUNBQ0lBTVFnZ29oQ0NBS1Fkc1hOZ0lRSUFwQkNHb2dDa0VRYWlJSkVJRUtJUThDUUNBSVFlVUFUd1JBSUFnUTRBRWlDVVVOQVNBUElBa1FoZ0lMSUFraEJ5QUNJUUVEUUNBQklBTkdCRUFEUUFKQUlBQWdDa0g0QUdvUXlnSkJBQ0FJRzBVRVFDQUFJQXBCK0FCcUVJY0NSUTBCSUFVZ0JTZ0NBRUVDY2pZQ0FBd0JDeUFBS0FJQUVPNEJJUTBnQmtVRVFDQUVJQTBRaUFjaERRc2dERUVCYWlFUVFRQWhEaUFKSVFjZ0FpRUJBMEFnQVNBRFJnUkFJQkFoRENBT1JRMERJQUFRbXdJYUlBa2hCeUFDSVFFZ0NDQUxha0VDU1EwREEwQWdBU0FEUmdSQURBVUZBa0FnQnkwQUFFRUNSdzBBSUFFUU95QU1SZzBBSUFkQkFEb0FBQ0FMUVFGcklRc0xJQWRCQVdvaEJ5QUJRUXhxSVFFTUFRc0FDd0FGQWtBZ0J5MEFBRUVCUncwQUlBRWdEQkRtQVN3QUFDRVJBa0FnRFVIL0FYRWdCZ1IvSUJFRklBUWdFUkNJQnd0Qi93RnhSZ1JBUVFFaERpQUJFRHNnRUVjTkFpQUhRUUk2QUFBZ0MwRUJhaUVMREFFTElBZEJBRG9BQUFzZ0NFRUJheUVJQ3lBSFFRRnFJUWNnQVVFTWFpRUJEQUVMQUFzQUN3c0NRQUpBQTBBZ0FpQURSZzBCSUFrdEFBQkJBa2NFUUNBSlFRRnFJUWtnQWtFTWFpRUNEQUVMQ3lBQ0lRTU1BUXNnQlNBRktBSUFRUVJ5TmdJQUN5QVBFTmdCSUFwQmdBRnFKQUFnQXc4RkFrQWdBUkMvQkVVRVFDQUhRUUU2QUFBTUFRc2dCMEVDT2dBQUlBdEJBV29oQ3lBSVFRRnJJUWdMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBTEVHOEFDd2NBSUFCQkFra0xNQUVCZnlNQVFSQnJJZ01rQUNBQUlBTkJDR29nQXhEcENpSUFJQUVnQWhDTEZ5QUFFSzhESUFOQkVHb2tBQ0FBQ3cwQUlBQkJJRVlnQUVFSlJuSUxGd0FnQUVFd2EwRUtTU0FBUVNCeVFlRUFhMEVHU1hJTE9RQWdBRUgvL3dkTkJIOGdBRUVEZGtFZmNTQUFRUWgyUVpEeURtb3RBQUJCQlhSeVFaRHlEbW90QUFBZ0FFRUhjWFpCQVhFRlFRQUxDMElBQW44Z0FFSC8vd2ROQkVBZ0FFRURka0VmY1NBQVFRaDJRZERURG1vdEFBQkJCWFJ5UWREVERtb3RBQUFnQUVFSGNYWkJBWEVNQVFzZ0FFSCsvd3RKQ3dzS0FDQUFFSVFOSUFCSEN3b0FJQUFRaFEwZ0FFY0xKd0FnQUVFZ1NTQUFRZjhBYTBFaFNYSWdBRUYrY1VHb3dBQkdjaUFBUWZuL0EydEJBMGx5QzFNQUlBQkIvZ0ZOQkg4Z0FFRUJha0gvQUhGQklFc0ZJQUJCL3Y4RGNVSCsvd05ISUFCQi9QOERhMEdFZ01BQVNYRWdBRUdBd0FOclFmay9TU0FBUWFqQUFFbHlJQUJCcXNBQWEwSFc3d0pKY25JTEN6b0JBMzhnQUVVRVFFRUFEd3RCb0s4T0lRRURRQ0FCSWdJb0FnQWlBd1JBSUFKQkJHb2hBU0FBSUFOSERRRUxDeUFDUVFBZ0F4dEJBRWNMMmdJQkJuOGpBRUVRYXlJSEpBQWdBMEdzdWlBZ0F4c2lCU2dDQUNFREFrQUNRQUpBSUFGRkJFQWdBdzBCREFNTFFYNGhCQ0FDUlEwQ0lBQWdCMEVNYWlBQUd5RUdBa0FnQXdSQUlBSWhBQXdCQ3lBQkxRQUFJZ0JCR0hSQkdIVWlBMEVBVGdSQUlBWWdBRFlDQUNBRFFRQkhJUVFNQkF0QjlLa2dLQUlBS0FJQVJRUkFJQVlnQTBIL3Z3TnhOZ0lBUVFFaEJBd0VDeUFBUWNJQmF5SUFRVEpMRFFFZ0FFRUNkRUd3a1E5cUtBSUFJUU1nQWtFQmF5SUFSUTBDSUFGQkFXb2hBUXNnQVMwQUFDSUlRUU4ySWdsQkVHc2dBMEVhZFNBSmFuSkJCMHNOQUFOQUlBQkJBV3NoQUNBSVFZQUJheUFEUVFaMGNpSURRUUJPQkVBZ0JVRUFOZ0lBSUFZZ0F6WUNBQ0FDSUFCcklRUU1CQXNnQUVVTkFpQUJRUUZxSWdFdEFBQWlDRUhBQVhGQmdBRkdEUUFMQ3lBRlFRQTJBZ0JCbUtrZ1FSazJBZ0JCZnlFRURBRUxJQVVnQXpZQ0FBc2dCMEVRYWlRQUlBUUxmQUVEZjBGL0lRTUNRQ0FBUVg5R0RRQWdBU2dDVEVFQVRpRUVBa0FDUUNBQktBSUVJZ0pGQkVBZ0FSQ25EUm9nQVNnQ0JDSUNSUTBCQ3lBQ0lBRW9BaXhCQ0d0TERRRUxJQVJGRFFGQmZ3OExJQUVnQWtFQmF5SUNOZ0lFSUFJZ0FEb0FBQ0FCSUFFb0FnQkJiM0UyQWdBZ0FFSC9BWEVoQXdzZ0F3c2RBQ0FBSUFFZ0FpQURJQVFnQlNBR0lBY2dBQ2dDQUNnQ0RCRU1BQXNSQUNBQUVQb0NLQUlJUWYvLy8vOEhjUXNOQUNBQVFReHFFUDRFR2lBQUN3MEFJQUJCQkdvUS9nUWFJQUFMRFFBZ0FFRUlhaEQrQkJvZ0FBc2RBQ0FCS0FJQUVMUUdJQUFvQWdBUXpBY2FJQUFnQVNnQ0FEWUNBQXNMQUNBQVFmaUNEaEQ2RWdzRUFFRi9DemNCQVg4akFFRVFheUlHSkFBZ0JpQUNOZ0lNSUFZZ0FUWUNDQ0FBSUFFb0FnQWdBeUFHUVFocUlBUWdCUkRvRkNBR1FSQnFKQUFMRkFBZ0FFSDRnZzQyQWdBZ0FFRUVhaEJrSUFBTDN3TUJBMzhqQUVHZ0FXc2lCQ1FBUVg4aEJTQUVJQUZCQVd0QkFDQUJHellDbEFFZ0JDQUFJQVJCbmdGcUlBRWJJZ1kyQXBBQklBUkJBRUdRQVJCNUlnQkJmellDVENBQVFkY1hOZ0lrSUFCQmZ6WUNVQ0FBSUFCQm53RnFOZ0lzSUFBZ0FFR1FBV28yQWxRQ1FDQUJRUUJJQkVCQm1La2dRVDAyQWdBTUFRc2dCa0VBT2dBQVFRQWhCQ01BUWRBQmF5SUJKQUFnQVNBRE5nTE1BU0FCUWFBQmFpSURRUUJCS0JCNUdpQUJJQUVvQXN3Qk5nTElBUUpBUVFBZ0FpQUJRY2dCYWlBQlFkQUFhaUFERVAwVVFRQklCRUJCZnlFQ0RBRUxJQUFvQWt4QkFFNGhCU0FBS0FJQUlRTWdBQ2dDU0VFQVRBUkFJQUFnQTBGZmNUWUNBQXNDZndKQUFrQWdBQ2dDTUVVRVFDQUFRZEFBTmdJd0lBQkJBRFlDSENBQVFnQTNBeEFnQUNnQ0xDRUVJQUFnQVRZQ0xBd0JDeUFBS0FJUURRRUxRWDhnQUJDa0ZRMEJHZ3NnQUNBQ0lBRkJ5QUZxSUFGQjBBQnFJQUZCb0FGcUVQMFVDeUVDSUFRRVFDQUFRUUJCQUNBQUtBSWtFUVFBR2lBQVFRQTJBakFnQUNBRU5nSXNJQUJCQURZQ0hDQUFLQUlVSVFRZ0FFSUFOd01RSUFKQmZ5QUVHeUVDQ3lBQUlBQW9BZ0FpQkNBRFFTQnhjallDQUVGL0lBSWdCRUVnY1JzaEFpQUZSUTBBQ3lBQlFkQUJhaVFBSUFJaEJRc2dBRUdnQVdva0FDQUZDeW9CQVg4akFFRVFheUlFSkFBZ0JDQUROZ0lNSUFBZ0FTQUNJQU1RbXdvaEFDQUVRUkJxSkFBZ0FBc1lBUUYvSXdCQkVHc2lBU0FBT1FNSUlBRXJBd2dnQUtJTDFBRURBbndCZndGK0FuMENRQ0FBRUprSFFmOFBjU0lEUXdBQXNFSVFtUWRKRFFCREFBQUFBQ0FBdkVHQWdJQjhSZzBCR2tNQUFJQi9FSmtISUFOTkJFQWdBQ0FBa2c4TElBQkRGM0t4UWw0RVFFRUFFTGtORHdzZ0FFTzA4Yy9DWFVVTkFFRUFFTGdORHd0QjRNc05Ld01BUWRqTERTc0RBQ0FBdTZJaUFTQUJRZERMRFNzREFDSUJvQ0lDSUFHaG9TSUJva0hveXcwckF3Q2dJQUVnQWFLaVFmRExEU3NEQUNBQm9rUUFBQUFBQUFEd1A2Q2dJQUs5SWdSQ0w0WWdCS2RCSDNGQkEzUkJzTWtOYWlrREFIeS9vcllMQytnQ0FnTi9BMzBnQUx3aUFrSC8vLy8vQjNFaUFVR0FnSURrQkU4RVFDQUFROW9QeVQ4Z0FKZ2dBTHhCLy8vLy93ZHhRWUNBZ1B3SFN4c1BDd0pBQW44Z0FVSC8vLy8yQTAwRVFFRi9JQUZCZ0lDQXpBTlBEUUVhREFJTElBQ0xJUUFnQVVILy85LzhBMDBFUUNBQlFmLy92L2tEVFFSQUlBQWdBSkpEQUFDQXY1SWdBRU1BQUFCQWtwVWhBRUVBREFJTElBQkRBQUNBdjVJZ0FFTUFBSUEva3BVaEFFRUJEQUVMSUFGQi8vL3ZnQVJOQkVBZ0FFTUFBTUMva2lBQVF3QUF3RCtVUXdBQWdEK1NsU0VBUVFJTUFRdERBQUNBdnlBQWxTRUFRUU1MSVFNZ0FDQUFsQ0lGSUFXVUlnUWdCRU5IRXRxOWxFT1l5a3kra3BRaEJpQUZJQVFnQkVNbHJIdzlsRU1OOVJFK2twUkRxYXFxUHBLVUlRUWdBVUgvLy8vMkEwMEVRQ0FBSUFBZ0JpQUVrcFNURHdzZ0EwRUNkQ0lCUWREaURXb3FBZ0FnQUNBR0lBU1NsQ0FCUWVEaURXb3FBZ0NUSUFDVGt5SUFqQ0FBSUFKQkFFZ2JJUUFMSUFBTHBRRUJBbjhDZndKQUlBQW9Ba3dpQVVFQVRnUkFJQUZGRFFGQnJLa2dLQUlBSUFGQi8vLy8vM3R4UncwQkN5QUFLQUlFSWdFZ0FDZ0NDRWNFUUNBQUlBRkJBV28yQWdRZ0FTMEFBQXdDQ3lBQUVLWU5EQUVMSUFCQnpBQnFJZ0VnQVNnQ0FDSUNRZi8vLy84RElBSWJOZ0lBQW44Z0FDZ0NCQ0lDSUFBb0FnaEhCRUFnQUNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQUJDbURRc2hBQ0FCRUtVSUdpQUFDd3VKREFFR2Z5QUFJQUZxSVFVQ1FBSkFJQUFvQWdRaUFrRUJjUTBBSUFKQkEzRkZEUUVnQUNnQ0FDSUNJQUZxSVFFQ1FDQUFJQUpySWdCQnRKMGdLQUlBUndSQUlBSkIvd0ZOQkVBZ0FDZ0NDQ0lFSUFKQkEzWWlBa0VEZEVISW5TQnFSaG9nQUNnQ0RDSURJQVJIRFFKQm9KMGdRYUNkSUNnQ0FFRitJQUozY1RZQ0FBd0RDeUFBS0FJWUlRWUNRQ0FBSUFBb0Fnd2lBa2NFUUNBQUtBSUlJZ05Cc0owZ0tBSUFTUm9nQXlBQ05nSU1JQUlnQXpZQ0NBd0JDd0pBSUFCQkZHb2lCQ2dDQUNJRERRQWdBRUVRYWlJRUtBSUFJZ01OQUVFQUlRSU1BUXNEUUNBRUlRY2dBeUlDUVJScUlnUW9BZ0FpQXcwQUlBSkJFR29oQkNBQ0tBSVFJZ01OQUFzZ0IwRUFOZ0lBQ3lBR1JRMENBa0FnQUNnQ0hDSUVRUUowUWRDZklHb2lBeWdDQUNBQVJnUkFJQU1nQWpZQ0FDQUNEUUZCcEowZ1FhU2RJQ2dDQUVGK0lBUjNjVFlDQUF3RUN5QUdRUkJCRkNBR0tBSVFJQUJHRzJvZ0FqWUNBQ0FDUlEwREN5QUNJQVkyQWhnZ0FDZ0NFQ0lEQkVBZ0FpQUROZ0lRSUFNZ0FqWUNHQXNnQUNnQ0ZDSURSUTBDSUFJZ0F6WUNGQ0FESUFJMkFoZ01BZ3NnQlNnQ0JDSUNRUU54UVFOSERRRkJxSjBnSUFFMkFnQWdCU0FDUVg1eE5nSUVJQUFnQVVFQmNqWUNCQ0FGSUFFMkFnQVBDeUFFSUFNMkFnd2dBeUFFTmdJSUN3SkFJQVVvQWdRaUFrRUNjVVVFUUVHNG5TQW9BZ0FnQlVZRVFFRzRuU0FnQURZQ0FFR3NuU0JCckowZ0tBSUFJQUZxSWdFMkFnQWdBQ0FCUVFGeU5nSUVJQUJCdEowZ0tBSUFSdzBEUWFpZElFRUFOZ0lBUWJTZElFRUFOZ0lBRHd0QnRKMGdLQUlBSUFWR0JFQkJ0SjBnSUFBMkFnQkJxSjBnUWFpZElDZ0NBQ0FCYWlJQk5nSUFJQUFnQVVFQmNqWUNCQ0FBSUFGcUlBRTJBZ0FQQ3lBQ1FYaHhJQUZxSVFFQ1FDQUNRZjhCVFFSQUlBVW9BZ2dpQkNBQ1FRTjJJZ0pCQTNSQnlKMGdha1lhSUFRZ0JTZ0NEQ0lEUmdSQVFhQ2RJRUdnblNBb0FnQkJmaUFDZDNFMkFnQU1BZ3NnQkNBRE5nSU1JQU1nQkRZQ0NBd0JDeUFGS0FJWUlRWUNRQ0FGSUFVb0Fnd2lBa2NFUUNBRktBSUlJZ05Cc0owZ0tBSUFTUm9nQXlBQ05nSU1JQUlnQXpZQ0NBd0JDd0pBSUFWQkZHb2lBeWdDQUNJRURRQWdCVUVRYWlJREtBSUFJZ1FOQUVFQUlRSU1BUXNEUUNBRElRY2dCQ0lDUVJScUlnTW9BZ0FpQkEwQUlBSkJFR29oQXlBQ0tBSVFJZ1FOQUFzZ0IwRUFOZ0lBQ3lBR1JRMEFBa0FnQlNnQ0hDSUVRUUowUWRDZklHb2lBeWdDQUNBRlJnUkFJQU1nQWpZQ0FDQUNEUUZCcEowZ1FhU2RJQ2dDQUVGK0lBUjNjVFlDQUF3Q0N5QUdRUkJCRkNBR0tBSVFJQVZHRzJvZ0FqWUNBQ0FDUlEwQkN5QUNJQVkyQWhnZ0JTZ0NFQ0lEQkVBZ0FpQUROZ0lRSUFNZ0FqWUNHQXNnQlNnQ0ZDSURSUTBBSUFJZ0F6WUNGQ0FESUFJMkFoZ0xJQUFnQVVFQmNqWUNCQ0FBSUFGcUlBRTJBZ0FnQUVHMG5TQW9BZ0JIRFFGQnFKMGdJQUUyQWdBUEN5QUZJQUpCZm5FMkFnUWdBQ0FCUVFGeU5nSUVJQUFnQVdvZ0FUWUNBQXNnQVVIL0FVMEVRQ0FCUVhoeFFjaWRJR29oQWdKL1FhQ2RJQ2dDQUNJRFFRRWdBVUVEZG5RaUFYRkZCRUJCb0owZ0lBRWdBM0kyQWdBZ0Fnd0JDeUFDS0FJSUN5RUJJQUlnQURZQ0NDQUJJQUEyQWd3Z0FDQUNOZ0lNSUFBZ0FUWUNDQThMUVI4aEJDQUJRZi8vL3dkTkJFQWdBVUVJZGlJQ0lBSkJnUDQvYWtFUWRrRUljU0lFZENJQ0lBSkJnT0FmYWtFUWRrRUVjU0lEZENJQ0lBSkJnSUFQYWtFUWRrRUNjU0lDZEVFUGRpQURJQVJ5SUFKeWF5SUNRUUYwSUFFZ0FrRVZhblpCQVhGeVFSeHFJUVFMSUFBZ0JEWUNIQ0FBUWdBM0FoQWdCRUVDZEVIUW55QnFJUWNDUUFKQVFhU2RJQ2dDQUNJRFFRRWdCSFFpQW5GRkJFQkJwSjBnSUFJZ0EzSTJBZ0FnQnlBQU5nSUFJQUFnQnpZQ0dBd0JDeUFCUVJrZ0JFRUJkbXRCQUNBRVFSOUhHM1FoQkNBSEtBSUFJUUlEUUNBQ0lnTW9BZ1JCZUhFZ0FVWU5BaUFFUVIxMklRSWdCRUVCZENFRUlBTWdBa0VFY1dvaUIwRVFhaWdDQUNJQ0RRQUxJQWNnQURZQ0VDQUFJQU0yQWhnTElBQWdBRFlDRENBQUlBQTJBZ2dQQ3lBREtBSUlJZ0VnQURZQ0RDQURJQUEyQWdnZ0FFRUFOZ0lZSUFBZ0F6WUNEQ0FBSUFFMkFnZ0xDNTRJQVF0L0lBQkZCRUFnQVJEZ0FROExJQUZCUUU4RVFFR1lxU0JCTURZQ0FFRUFEd3NDZjBFUUlBRkJDMnBCZUhFZ0FVRUxTUnNoQmlBQVFRaHJJZ1VvQWdRaUNVRjRjU0VFQWtBZ0NVRURjVVVFUUVFQUlBWkJnQUpKRFFJYUlBWkJCR29nQkUwRVFDQUZJUUlnQkNBR2EwR0FvU0FvQWdCQkFYUk5EUUlMUVFBTUFnc2dCQ0FGYWlFSEFrQWdCQ0FHVHdSQUlBUWdCbXNpQTBFUVNRMEJJQVVnQ1VFQmNTQUdja0VDY2pZQ0JDQUZJQVpxSWdJZ0EwRURjallDQkNBSElBY29BZ1JCQVhJMkFnUWdBaUFERUtFS0RBRUxRYmlkSUNnQ0FDQUhSZ1JBUWF5ZElDZ0NBQ0FFYWlJRUlBWk5EUUlnQlNBSlFRRnhJQVp5UVFKeU5nSUVJQVVnQm1vaUF5QUVJQVpySWdKQkFYSTJBZ1JCckowZ0lBSTJBZ0JCdUowZ0lBTTJBZ0FNQVF0QnRKMGdLQUlBSUFkR0JFQkJxSjBnS0FJQUlBUnFJZ01nQmtrTkFnSkFJQU1nQm1zaUFrRVFUd1JBSUFVZ0NVRUJjU0FHY2tFQ2NqWUNCQ0FGSUFacUlnUWdBa0VCY2pZQ0JDQURJQVZxSWdNZ0FqWUNBQ0FESUFNb0FnUkJmbkUyQWdRTUFRc2dCU0FKUVFGeElBTnlRUUp5TmdJRUlBTWdCV29pQWlBQ0tBSUVRUUZ5TmdJRVFRQWhBa0VBSVFRTFFiU2RJQ0FFTmdJQVFhaWRJQ0FDTmdJQURBRUxJQWNvQWdRaUEwRUNjUTBCSUFOQmVIRWdCR29pQ2lBR1NRMEJJQW9nQm1zaERBSkFJQU5CL3dGTkJFQWdCeWdDQ0NJRUlBTkJBM1lpQWtFRGRFSEluU0JxUmhvZ0JDQUhLQUlNSWdOR0JFQkJvSjBnUWFDZElDZ0NBRUYrSUFKM2NUWUNBQXdDQ3lBRUlBTTJBZ3dnQXlBRU5nSUlEQUVMSUFjb0FoZ2hDd0pBSUFjZ0J5Z0NEQ0lJUndSQUlBY29BZ2dpQWtHd25TQW9BZ0JKR2lBQ0lBZzJBZ3dnQ0NBQ05nSUlEQUVMQWtBZ0IwRVVhaUlFS0FJQUlnSU5BQ0FIUVJCcUlnUW9BZ0FpQWcwQVFRQWhDQXdCQ3dOQUlBUWhBeUFDSWdoQkZHb2lCQ2dDQUNJQ0RRQWdDRUVRYWlFRUlBZ29BaEFpQWcwQUN5QURRUUEyQWdBTElBdEZEUUFDUUNBSEtBSWNJZ05CQW5SQjBKOGdhaUlDS0FJQUlBZEdCRUFnQWlBSU5nSUFJQWdOQVVHa25TQkJwSjBnS0FJQVFYNGdBM2R4TmdJQURBSUxJQXRCRUVFVUlBc29BaEFnQjBZYmFpQUlOZ0lBSUFoRkRRRUxJQWdnQ3pZQ0dDQUhLQUlRSWdJRVFDQUlJQUkyQWhBZ0FpQUlOZ0lZQ3lBSEtBSVVJZ0pGRFFBZ0NDQUNOZ0lVSUFJZ0NEWUNHQXNnREVFUFRRUkFJQVVnQ1VFQmNTQUtja0VDY2pZQ0JDQUZJQXBxSWdJZ0FpZ0NCRUVCY2pZQ0JBd0JDeUFGSUFsQkFYRWdCbkpCQW5JMkFnUWdCU0FHYWlJRElBeEJBM0kyQWdRZ0JTQUthaUlDSUFJb0FnUkJBWEkyQWdRZ0F5QU1FS0VLQ3lBRklRSUxJQUlMSWdJRVFDQUNRUWhxRHdzZ0FSRGdBU0lGUlFSQVFRQVBDeUFGSUFCQmZFRjRJQUJCQkdzb0FnQWlBa0VEY1JzZ0FrRjRjV29pQWlBQklBRWdBa3NiRUgwYUlBQVFIeUFGQzk0QkFRVi9BMEFDUUNBQUlBRVF1Z0VpQkVVTkFDQUNJQVFRaWdJRVFFRUJEd3NDUUFKQUlBUXZBUjRpQlVFWGF5SUhRUXBMRFFCQkFTQUhkQ0lJUWZjQWNRMEJJQWhCZ0FseFJRUkFJQWRCQ1VjTkFTQUFJQUVReFJVZ0EwRUJjMEVCY1hJTkEwRUJJUU1nQkVFQ0VCc2hBUXdFQ3lBRFFYOXpJQVZCSVVaeERRSkJBU0VCQTBBZ0FTQUVLQUlRSUFRb0FneHJRUVIxSWdWSklRWWdBU0FGVHcwRElBUWdBUkFiSVFVZ0FVRUJhaUVCSUFBZ0JTQUNJQU5CQVhFUW93cEZEUUFMREFJTElBVkI3aWxIRFFFTElBUkJBUkFiSVFFTUFRc0xJQVlMaVFJQkJIOGpBRUVnYXlJREpBQWdBRUlBTndJRUlBQWdBRUVFYWpZQ0FDQURJQUVnQWhDNkFTSUNOZ0ljSUFJRVFDQURRUUEyQWhnZ0EwSUFOd01RSUFOQkVHb2dBMEVjYWhEUEFRTkFJQU1vQWhRaUFpQURLQUlRUndSQUlBSkJCR3NpQkNnQ0FDRUNJQU1nQkRZQ0ZDQUNLQUk0SWdRRVFDQURJQUVnQkNnQ0FCQ2xDaEN3QVNJRUtBSUFJUUlnQXlnQ0JDRUZJQUJCQkdvaEJnTkFJQUlnQlVjRVFDQUFJQVlnQWhDZEZpQUNRUVJxSVFJTUFRc0xJQVFRTWhvTUFnc2dBaWdDUkNFRUlBSW9Ba0FoQWdOQUlBSWdCRVlOQWlBRElBSW9BZ0EyQWdBZ0FrRUlhaUVDSUFOQkVHb2dBeERQQVF3QUN3QUxDeUFEUVJCcUVESWFDeUFEUVNCcUpBQUxPUUVCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQUVIc0Eyb2dBa0VNYWhDZUFpRUJJQUpCRUdva0FDQUJRUXhxSUFCQmdBUnFJQUViQ3dnQUlBQkI5QUJxQzJJQkFYOGpBRUVRYXlJREpBQWdBeUFDTmdJTUlBQUNmeUFCUVJocUlBTkJER29RbmdJaUFrVUVRRUVBSVFKQkFBd0JDeUFESUFKQkRHb2lBaWdDQURZQ0NDQUJRVGhxSUFOQkNHb1FuZ0pGQ3pvQUJDQUFJQUkyQWdBZ0EwRVFhaVFBQ3h3QkFYOGdBQ2dDTENJQklBQW9BakJHQkVCQkFBOExJQUVvQWdBTEJ3QWdBRUVzYWd2eUFRRUVmeU1BUWNBQmF5SURKQUFnQXlBQk5nSzhBUUpBSUFBb0FoQkJBa1lFUUNBRFFRaHFJQUVRcXdvaEJTQURJQUUyQWxnZ0EwSFlBR29pQkVFRWNpQUZFS2tJSVFFZ0EwR3dBV29nQUVFWWFpQUVFTllWSUFNdEFMUUJJUVFnQXlnQ3NBRWhCaUFCRU00RklBVVF6Z1VDUUNBQ0JFQWdBQ2dDVEEwRElBQkJPR29nQTBHOEFXb1Exd2NnQUNBR1FReHFOZ0pNSUFCQkxHb2dBRUhNQUdvUXp3RU1BUXNnQkVVTkFDQURRZGdBYWlBQVFUaHFJQU5CdkFGcUVKWUJDeUFEUWNBQmFpUUFRUUFQQzBHMXF3bEJrcW9DUWZvQVFZT2VBeEFBQUF0Qm1xWUpRWktxQWtHREFVR0RuZ01RQUFBTE5nQWdBQ0FCTmdJQUlBQkJCR3BCQUVFcUVIa2FJQUJDQURjQ1NDQUFRVUJyUWdBM0FnQWdBRUlBTndJNElBQkNBRGNDTUNBQUM0Z0xBUUYvSXdCQndBRnJJaFFrQUFKQUlBQWdBQ0FCUVFFUUpoQndRZDBwUndSQUlCUWdBRUZ5SUFFUUVDQVVRWkQxQlJBT0dpQVVLQUs4QVNFQ0lCUVFFUXdCQ3dKQUlBSkJmMFlOQUNBQUlBQWdBU0FDRUNZaUFoQlFCRUFnQUNBQ0VENUJJRVlOQVFzZ0ZDQUFRWElnQVJBUUlCUkJwSU1DRUE0YUlCUW9BcndCSVFJZ0ZCQVJEQUVMQWtBZ0EwRi9SZzBBSUFBZ0FDQUJJQU1RSmlJQ0VGQUVRQ0FBSUFJUVBrRWdSZzBCQ3lBVUlBQkJjaUFCRUJBZ0ZFSDdnZ0lRRGhvZ0ZDZ0N2QUVoQWlBVUVCRU1BUXNDUUNBRVFYOUdEUUFnQUNBQUlBRWdCQkFtSWdJUVVBUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFZZUFBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUExQmYwWU5BQ0FBSUFBZ0FTQU5FQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFiS0FBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUFaQmYwWU5BQ0FBSUFBZ0FTQUdFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFZaUNBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUFoQmYwWU5BQ0FBSUFBZ0FTQUlFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFiMkZBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUFsQmYwWU5BQ0FBSUFBZ0FTQUpFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFZcUhBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUFwQmYwWU5BQ0FBSUFBZ0FTQUtFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFmR0hBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUF0QmYwWU5BQ0FBSUFBZ0FTQUxFQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFkT0dBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUF4QmYwWU5BQ0FBSUFBZ0FTQU1FQ1lpQWhEdkFRUkFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFicUhBaEFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUE1QmYwWU5BQUpBSUFBZ0FDQUJJQTRRSmlJQ0VJNEJSUTBBSUFBZ0FoQkZRUU5IRFFBZ0FDQUNFRDVCSUVZTkFRc2dGQ0FBUVhJZ0FSQVFJQlJCa3NvQkVBNGFJQlFvQXJ3QklRSWdGQkFSREFFTEFrQWdEMEYvUmcwQUlBQWdBQ0FCSUE4UUppSUNFSGNFUUNBQUlBSVFQa0VnUmcwQkN5QVVJQUJCY2lBQkVCQWdGRUdsaXdJUURob2dGQ2dDdkFFaEFpQVVFQkVNQVFzQ1FDQVFRWDlHRFFBQ1FDQUFJQUFnQVNBUUVDWWlBaENPQVVVTkFDQUFJQUlRUlVFRFJ3MEFJQUFnQWhBK1FTQkdEUUVMSUJRZ0FFRnlJQUVRRUNBVVFkckpBUkFPR2lBVUtBSzhBU0VDSUJRUUVRd0JDd0pBSUJGQmYwWU5BQ0FBSUFBZ0FTQVJFQ1lpQWhCM0JFQWdBQ0FDRUQ1QklFWU5BUXNnRkNBQVFYSWdBUkFRSUJSQi9vb0NFQTRhSUJRb0Fyd0JJUUlnRkJBUkRBRUxBa0FnQlVGL1JnMEFJQUFnQUNBQklBVVFKaUlDRUZBRVFDQUFJQUlRUGtFZ1JnMEJDeUFVSUFCQmNpQUJFQkFnRkVIaWdRSVFEaG9nRkNnQ3ZBRWhBaUFVRUJFTUFRc0NRQ0FTUVg5R0RRQWdBQ0FCSUJJUUd4QWdJZ0l2QVI1Qk8wWUVRQ0FDUVFJUUcwSGFLVVlOQVNBQ1FRSVFHMEhlS1VZTkFRc2dGQ0FBUVhJZ0FSQVFJQlJCNFBvRkVBNGFJQlFvQXJ3QklRSWdGQkFSREFFTEFrQWdCMEYvUmcwQUlBQWdBQ0FCSUFjUUppSUNFTzhCQkVBZ0FDQUNFRDVCSUVZTkFRc2dGQ0FBUVhJZ0FSQVFJQlJCb1lnQ0VBNGFJQlFvQXJ3QklRSWdGQkFSREFFTFFRQWhBaUFUUVg5R0RRQWdBQ0FCSUJNUUd4QWdJZ012QVI1Qk8wWUVRQ0FEUVFJUUcwR0pLa1lOQVFzZ0ZDQUFRWElnQVJBUUlCUkIyTTBGRUE0YUlCUW9BcndCSVFJZ0ZCQVJDeUFVUWNBQmFpUUFJQUlMSkFBZ0FFSUFOd0lFSUFBZ0FFRUVhallDQUNBQUlBRW9BZ0FnQVVFRWFoRG5GaUFBQzdZQkFRSi9Jd0JCd0FGcklnTWtBQUpBQWtBZ0FDQUJJQUlRR3hBZ0lnUUVRQ0FFTHdFZVFReEdEUUVMSUFNZ0FFRjJJQUVRRUNBRFFlakxBaEFPR2lBREtBSzhBU0VDSUFNUUVRd0JDeUFFUVFJUUd5QUJRUUlRRzBjRVFDQURJQUJCZGlBQkVCQWdBMEdaTWhBT0dpQURLQUs4QVNFQ0lBTVFFUXdCQzBFQUlRSWdCRUVERUJ0QkFrWU5BQ0FESUFCQmRpQUJFQkFnQTBIb3l3SVFEaG9nQXlnQ3ZBRWhBaUFERUJFTElBTkJ3QUZxSkFBZ0FnczBBUUYvSXdCQkVHc2lCQ1FBSUFBZ0JFR3NxZ1FRRkNJQVFRSWdBU0FDSUFNUTlnRWhBU0FBRUE4YUlBUkJFR29rQUNBQkN3b0FJQUJCd0pzU0VFZ0xhQUVFZnlNQVFSQnJJZ1VrQUFKL1FRRWhBZ0pBSUFBb0FnQWlBeUFCS0FJQUlnUkpEUUJCQUNBRElBUkxEUUVhSUFBb0FnUWlBeUFCS0FJRUlnUkpEUUJCQUNFQ0lBTWdCRXNOQUNBQUtBSUlJQUVvQWdoSklRSUxJQUlMSVFBZ0JVRVFhaVFBSUFBTFNnRUJmd0pBSUFGRkRRQWdBU2dDRENJQklBQW9BZ1FnQUNnQ0FDSUFhMEVDZFU4TkFDQUFJQUZCQW5ScUtBSUFJZ0JCQUNBQUJIOGdBQ2dDQkJENUZRVkJBQXNiSVFJTElBSUxpd0lCQkg4akFFRVFheUlESkFBQ1FBSkFBa0FDUUFOQUFrQUNRQUpBSUFFZ0FCQWdJZ0l2QVI1QkZXc09EQVlHQVFFQUFBQUJBUUlGQkFVTElBRkJnQUZxUVk0cUVHZ0VRQ0FCS0FLY0EwRURkaUVDREFjTFFkV1NCMEdvbWdKQmt3SkJvc29BRUFBQUN5QUNLQUlBS0FJSUlRQU1BUXNMSUFNZ0FDQUJFTWtGSUFNb0FnUWdBeWdDQUd0QkFuVWhCRUVBSVFCQkFTRUNBMEFnQUNBRVJnUkFJQU1RTWhvTUJRVWdBeWdDQUNBQVFRSjBhaWdDQUNBQkVMTUtJZ1VnQWlBQ0lBVkpHeUVDSUFCQkFXb2hBQXdCQ3dBTEFBc2dBU2dDbUFNaEFnd0NDMEhWa2dkQnFKb0NRYThDUWFMS0FCQUFBQXNnQWlnQ0FDZ0NDRUVEZGlFQ0N5QURRUkJxSkFBZ0Fnc1FBQ0FBS0FJQUlnQUVRQ0FBRUI4TEMra0lBd3gvQW4wQmZpQUJLUUlBSWhCQ0lJaW5JZ2RCSG5jZ0VLY2lCWE1oQ0FKQUFrQWdBQ2dDQkNJQ1JRMEFBa0FnQW1raUFVRUJUUVJBSUFnZ0FrRUJhM0VoQXd3QkN5QUNJQWdpQTBzTkFDQUlJQUp3SVFNTElBQW9BZ0FnQTBFQ2RHb29BZ0FpQkVVTkFDQUNRUUZySVFZZ0FVRUJTeUVKQTBBZ0JDZ0NBQ0lFUlEwQklBZ2dCQ2dDQkNJQlJ3UkFBa0FnQ1VVRVFDQUJJQVp4SVFFTUFRc2dBU0FDU1EwQUlBRWdBbkFoQVFzZ0FTQURSdzBDQ3lBRUtBSUlJQVZIRFFBZ0JDZ0NEQ0FIUncwQUN3d0JDMEVZRUJVaUJDQVFOd0lJSUFRZ0NEWUNCQ0FFUVFBMkFnQWdCRUlCTndJUUlBQkJDR29oQ1FKQVFRQWdBaUFBS0FJTVFRRnFzeUlQSUFBcUFoQWlEaUFDczVSZUd3MEFRUUloQXdKQUlBSWdBa0VCYTNGQkFFY2dBa0VEU1hJZ0FrRUJkSElpQVFKL0lBOGdEcFdOSWc1REFBQ0FUMTBnRGtNQUFBQUFZSEVFUUNBT3FRd0JDMEVBQ3lJRklBRWdCVXNiSWdGQkFVWU5BQ0FCSUFGQkFXdHhSUVJBSUFFaEF3d0JDeUFCRUg4aEF5QUFLQUlFSVFJTEFrQUNRQUpBSUFJZ0EwOEVRQ0FDSUFOTkRRTWdBa0VEU1NFSEFuOGdBQ2dDRExNZ0FDb0NFSldOSWc1REFBQ0FUMTBnRGtNQUFBQUFZSEVFUUNBT3FRd0JDMEVBQ3lFQklBSWdBeUFISUFKcFFRRkxjZ1IvSUFFUWZ3VWdBVUVCUVNBZ0FVRUJhMmRyZENBQlFRSkpHd3NpQVNBQklBTkpHeUlEVFFSQUlBQW9BZ1FoQWd3RUN5QURSUTBCQ3lBRFFZQ0FnSUFFU1FSQUlBQWdBMEVDZEJBVkVHd2dBQ0FETmdJRVFRQWhBUU5BSUFFZ0EwWUVRQUpBSUFBb0FnZ2lCdzBBREFVTEJTQUFLQUlBSUFGQkFuUnFRUUEyQWdBZ0FVRUJhaUVCREFFTEN5QUhLQUlFSVFZQ1FDQURhU0lCUVFGTkJFQWdCaUFEUVFGcmNTRUdEQUVMSUFNZ0Jrc05BQ0FHSUFOd0lRWUxJQUFvQWdBZ0JrRUNkR29nQ1RZQ0FDQURRUUZySVFzZ0FVRUJTeUVNQTBBZ0J5Z0NBQ0lDUlEwRElBSW9BZ1FoQlFKQUlBeEZCRUFnQlNBTGNTRUZEQUVMSUFNZ0JVc05BQ0FGSUFOd0lRVUxBa0FnQlNBR1JnMEFJQUloQVNBRlFRSjBJZ29nQUNnQ0FHb2lEU2dDQUVVRVFDQU5JQWMyQWdBZ0JTRUdEQUVMQTBBQ1FDQUJJZ1VvQWdBaUFVVU5BQ0FDS0FJSUlBRW9BZ2hIRFFBZ0FpZ0NEQ0FCS0FJTVJnMEJDd3NnQnlBQk5nSUFJQVVnQUNnQ0FDQUthaWdDQUNnQ0FEWUNBQ0FBS0FJQUlBcHFLQUlBSUFJMkFnQU1BUXNnQWlFSERBQUxBQXNRK3dFQUMwRUFJUUlnQUVFQUVHd2dBRUVBTmdJRURBRUxJQU1oQWdzZ0FpQUNRUUZySWdGeFJRUkFJQUVnQ0hFaEF3d0JDeUFDSUFoTEJFQWdDQ0VEREFFTElBZ2dBbkFoQXdzQ1FBSkFJQUFvQWdBZ0EwRUNkR29pQXlnQ0FDSUJSUVJBSUFRZ0FDZ0NDRFlDQUNBQUlBUTJBZ2dnQXlBSk5nSUFJQVFvQWdBaUFVVU5BaUFCS0FJRUlRRUNRQ0FDSUFKQkFXc2lBM0ZGQkVBZ0FTQURjU0VCREFFTElBRWdBa2tOQUNBQklBSndJUUVMSUFBb0FnQWdBVUVDZEdvaEFRd0JDeUFFSUFFb0FnQTJBZ0FMSUFFZ0JEWUNBQXNnQUNBQUtBSU1RUUZxTmdJTUN5QUVRUkJxQ3hjQUlBQWdBUkRzQVNJQVJRUkFFQUVBQ3lBQVFReHFDN0VUQWhSL0FuNGpBRUdBQW1zaUNDUUFJQWNvQWdRaUN5MEFLa1VFUUNBTExRQW5SU0FEY1NFU1FRRWhFeUFITFFDbkEwVUVRQ0FMTFFBbVFRQkhJUk1MSUFnZ0JEb0ErZ0VnQ0NBVE9nRDVBU0FJSUJJNkFQZ0JJQWdnQWpZQzlBRWdDQ0FCTmdMd0FTQUlJQUEyQXV3QklBZ2dCellDNkFFZ0NFSFlBV29nQUNBSEVNa0ZJQWhCQURZQzBBRWdDRUlBTndQSUFTQUlRZEFCYWlFUUFrQUNRQUpBQWtBQ2Z5QUlLQUxjQVNJSklBZ29BdGdCSWdOR0JFQWdDUXdCQ3lBSklBTnJJZ05CL2YvLy93ZFBEUUVnQ0NBRFFRSjFRUUFnRUJDSEZpSUpJQWtvQWdRZ0NDZ0N6QUVpQ3lBSUtBTElBU0lEYXlJTWF5SUtOZ0lFSUF4QkFFb0VRQ0FLSUFNZ0RCQjlHaUFKS0FJRUlRb2dDQ2dDekFFaEN5QUlLQUxJQVNFREN5QUlJQW8yQXNnQklBa2dBellDQkNBSUlBa29BZ2cyQXN3QklBa2dDellDQ0NBSUtBTFFBU0VMSUFnZ0NTZ0NERFlDMEFFZ0NTQUROZ0lBSUFrZ0N6WUNEQ0FKRUlZV0lBZ29BdGdCSVFrZ0NDZ0MzQUVMSUFsclFRSjFyU0VkQTBBZ0hDQWRVUVJBSUFnb0Fzd0JJUXNnQ0NnQ3lBRWhDaUFJUVFBMkFnQWdDeUFLYXlJTVFRTjFJUVZCQUNFRFFRQWhDU0FNUVlFSVNBMEZJQVVoQ1FOQUlBbEJBRXdFUUVFQUlRbEJBQ0VEREFZTElBbEJBM1FRRlNJRERRVWdDVUVCZGlFSkRBQUxBQXNnQ0VIQUFXb2dCeUFBSUJ5bkVOd05RWDhoQXlBSUtBTEFBU0VKQTBBZ0NDZ0N4QUVnQ1VZRVFDQURJQVZxSVFzQ1FDQUlLQUxNQVNJRElBZ29BdEFCSWdwSkJFQWdBeUFMclVJZ2hpQWNoRGNDQUNBSUlBTkJDR28yQXN3QkRBRUxJQU1nQ0NnQ3lBRWlDV3RCQTNVaURFRUJhaUlEUVlDQWdJQUNUdzBFSUFoQi8vLy8vd0VnQ2lBSmF5SUtRUUoxSWdrZ0F5QURJQWxKR3lBS1Fmai8vLzhIVHhzZ0RDQVFFSWNXSVEwZ0NDZ0NDQ0FMclVJZ2hpQWNoRGNDQUNBSUlBZ29BZ2hCQ0dvaUNqWUNDQ0FJSUFnb0FnUWdDQ2dDekFFaURDQUlLQUxJQVNJSmF5SUxheUlETmdJRUlBdEJBRW9FUUNBRElBa2dDeEI5R2lBSUtBSUlJUW9nQ0NnQ3pBRWhEQ0FJS0FMSUFTRUpJQWdvQWdRaEF3c2dDQ0FKTmdJRUlBZ2dBellDeUFFZ0NDQUtOZ0xNQVNBSUlBdzJBZ2dnQ0NnQzBBRWhBeUFJSUFnb0FndzJBdEFCSUFnZ0F6WUNEQ0FOSUFrMkFnQWdEUkNHRmdzZ0hFSUJmQ0VjREFJTElCd2dDVFVDSUZJTkF5QUpLQUlRUVNOR0JFQWdDU2dDRkNnQ0FDRURDeUFKRUV3aENRd0FDd0FMQUFzUUFRQUxRZFFrUWFpYUFrSGdBMEdsTFJBQUFBc2dDQ0FERUd3TElBb2dDeUFGSUFNZ0NSQ3dDQ0FJUVFBUWJDQUVRUUZ6SVJoQkFDRURBa0FDUUFOQUlBZ29Bc3dCSUFnb0FzZ0JJZ1ZyUVFOMUlCVk5CRUJCQUNFS0RBTUxJQVVnRlVFRGRHb2lCU2dDQkNFTklBZ29BdGdCSUFVb0FnQWlEa0VDZEdvb0FnQWhDaUFJSUE0MkFnUWdDQ0FBTmdJQUlBWWdDQkMxQ2lFUkFuOGdCQVJBSUFvZ0J4Q3pDZ3dCQ3lBS0lCSWdFU0FHSUFjUXBnY0xJUVVnQnlBS0VDQWlEQzhCSGlFVUlBb2dFU0FHSUFjUXBRY2hHU0FOUVg5R0JFQWdDQ0FJUWVnQmFpQU9FSU1GSUFoQnk5Z0NFQTRhSUFnb0Fyd0JJUW9nQ0JBUkRBTUxBa0FDUUFKQUlCUkJGMFlnR0hFZ0UzRUVRQ0FNS0FJQUtBSUlJQWNRc3dvaUN3Ui9JQTBnQzNBRklBMExSUTBCSUFnZ0NFSG9BV29nRGhDREJTQUlRWmJPQ1JBT0dpQUlJQTBRSVJvZ0NFR1JzZ29RRGhvZ0NDQUxFQ0VhSUFnb0Fyd0JJUW9nQ0JBUkRBWUxJQVVFZnlBTklBVndCU0FOQ3dSQUlBZ2dDRUhvQVdvZ0RoQ0RCU0FJUVpiT0NSQU9HaUFJSUEwUUlSb2dDRUhVaEFvUURob2dDQ0FGRUNFYUlBZ29BcndCSVFvZ0NCQVJEQVlMSUFNZ0RVME5BUXdFQ3lBRElBMUxEUU1DUUNBS0lCRWdCaUFIRUtVSElnTkJFRTBFUUNBRklRc2dBeUFOYWtFQmF5QU5jMEVRVHcwQkRBTUxJQVVoQ3lBTlFROXhSUTBDQ3lBSUlBaEI2QUZxSUE0UWd3VWdDRUhIelFrUURob2dDQ0FORUNFYUlBZ29BcndCSVFvZ0NCQVJEQVFMQWtBZ0ZFRVlSd1JBSUJSQkhrWU5BU0FGSVFzTUFnc2dFU2dDQkNFRElBVWlDd1IvSUFNZ0JYQUZJQU1MUlEwQklBZ2dDRUhvQVdvZ0RoQ0RCU0FJUVlIRUNoQU9HaUFJSUFNUUlSb2dDRUcxZ0FvUURob2dDQ0FGRUNFYUlBZ29BcndCSVFvZ0NCQVJEQVFMSUFVaEN5QUtJQUVnQWlBU0lBUWdEU0FHSUFjUXR3b2lDZzBEQ3dOQUFrQWdEQzhCSGtIKy93TnhRUnhHQkVBZ0J5QU1LQUlBS0FJSUlob1FJQ0VRSUFjZ0RDZ0NLQkRlQVNJRFFRUnFJUW9nQXlnQ0FDRUpRUUFoQXdOQUlBa2dDa2NFUUFKQUlBa29BaEJCQmtjTkFDQUpLQUlVS0FJQUlnTkZCRUFnQ0NBSVFlZ0JhaUFPRUlNRklBaEJ1NDRIRUE0YUlBZ29BcndCSVFvZ0NCQVJEQWtMSUFzRVFDQURJQXR3UlEwQkN5QUlJQWhCNkFGcUlBNFFnd1VnQ0VIaXd3b1FEaG9nQ0NBSktBSVVFTE1ISWdCQnRZQUtFQTRhSUFBZ0JSQWhHaUFBS0FLOEFTRUtJQWdRRVF3SUN5QUpFRXdoQ1F3QkN3dEJBU0VXSUF3dkFSNUJIRVlFUUNBSUlBY2dEQ2dDQUNnQ0RCRGRBVUVCSUFnb0FnUWlDeUFMUVFGTkd5RVdDeUFRTHdFZVFSNUhCRUFnRnlFS0RBSUxRUUFoQ1NBSVFRQTZBTUFCSUFoQkFEWUNDQ0FJUWdBM0FnQWdDRUVRRUlVV0lBZ3RBTUFCSVJzakFFRVFheUlLSkFBZ0NDSUxJQWdvQWdRaURFRVFhaUlQTmdJRUlBeEJBQ0FQUVFGcklBeEJBV3R6UVNCSkcwVUVRQ0FMS0FJQUlBOUJBV3RCQlhaQkFDQVBRU0ZQRzBFQ2RHcEJBRFlDQUFzZ0N5Z0NBQ0VQSUFvZ0RFRWZjVFlDRENBS0lBOGdERUVEZGtIOC8vLy9BWEZxTmdJSUlBcEJDR3BCRUNBYkVOc05JQXBCRUdva0FBTkFBa0FDUUFKQUFrQWdDU0FXUmdSQVFRRWhEQXdCQzBFQklReEJBU0FESUFsc0lBMXFJZ3RCRDNGMElnOGdDQ2dDQUNnQ0FIRkZEUUVMSUJjaENnd0JDeUFhSUFFZ0FpQVNJQVFnQ3lBR0lBY1F0d29pQ2tVTkFVRUFJUXdMSUFnUXRBb2dERVVOQnd3REN5QUlLQUlBSWdzZ0N5Z0NBQ0FQY2pZQ0FDQUpRUUZxSVFrTUFBc0FDeUFOSUJscUlRTUNRQ0FFRFFBQ1FDQVVRUnhyRGdNQUFRQUJDeUFESUFWcVFRRnJRUUFnQld0eElRTUxJQlZCQVdvaEZRd0NDeUFRS0FJb0lRc0NmeUFFQkVBZ0N5QUhFTE1LREFFTElBc2dFaUFSSUFZZ0J4Q21Cd3NoQ3lBS0lSY2dFQ0lNS0FJb0lCRWdCaUFIRUtVSElnb2dBMDBOQUFzTElBZ2dDRUhvQVdvZ0RoQ0RCU0FJUWVMRENoQU9HaUFJSUFNUUlSb2dDRUhkcndvUURob2dDQ0FLRUNFYUlBZ29BcndCSVFvZ0NCQVJEQUVMSUFnZ0NFSG9BV29nRGhDREJTQUlRWmJPQ1JBT0dpQUlJQTBRSVJvZ0NFSDF6UWtRRGhvZ0NDQURRUUZyRUNFYUlBZ29BcndCSVFvZ0NCQVJDeUFJS0FMSUFTSUFCRUFnQ0NBQU5nTE1BU0FBRUI4TElBaEIyQUZxRURJYUN5QUlRWUFDYWlRQUlBb0wxZ0lCQlg4akFFRkFhaUlGSkFBZ0JVRXdhaUFBSUFNUXlRVURRQUpBQWtBZ0JTZ0NOQ0FGS0FJd0lnUnJRUUoxSUFaTEJFQWdBeUFFSUFaQkFuUnFLQUlBSWdRUUlDOEJIaUFDUncwQ0lBTWdCQkRlQVNJRVFRUnFJUWdnQkNnQ0FDRUVRUUFoQndOQUlBUWdDRVlFUUNBRElBQVEzZ0VpQkVFRWFpRUlJQVFvQWdBaEJBTkFJQVFnQ0VZRVFDQUhRUUZ4RFFaQkFDRUdEQVVGSUFFZ0JDZ0NFQkNLQWdSQUlBWWdCQ2dDSUVZZ0IzSWhCd3NnQkJCTUlRUU1BUXNBQ3dBRklBRWdCQ2dDRUJDS0FpQUhjaUVISUFRUVRDRUVEQUVMQUFzQUN5QUZRU0JxSUFBZ0F4Q0tGaUFGS0FJa0lRQWdCU2dDSUNFRUEwQWdBQ0FFUmlJR1JRUkFJQVFvQWdBZ0JVRUlhaUFCRU5FQklnY2dBaUFERUxnS0lRZ2dCeEFXSUFSQkJHb2hCQ0FJRFFFTEN5QUZRU0JxRURJYUN5QUZRVEJxRURJYUlBVkJRR3NrQUNBR0R3c2dCa0VCYWlFR0RBQUxBQXQxQVFKL0l3QkJnQUZySWdVa0FDQUZRZWdBYWlBQkVORUJJUUVnQlVIUUFHb2dBaERSQVNFQ0lBVkJPR29nQXhEUkFTRURJQVZCQURZQ01DQUFJQUVnQWlBRElBVkJJR29pQmlBRlFRaHFJQVFRMFFFaUFCQ1NGaUFBRUJZZ0JoQVdJQU1RRmlBQ0VCWWdBUkFXSUFWQmdBRnFKQUFMU3dFQ2Z5QUFRUVJxSVFBZ0FTZ0NBQ0VCQTM4Z0FDZ0NBQ0lBUlFSQVFRQVBDeUFCS0FJQUlnSWdBQ2dDRUNnQ0FDSURTUTBBSUFJZ0EwMEVmMEVCQlNBQVFRUnFJUUFNQVFzTEM5TUJBUVIvSXdCQjhBRnJJZ01rQUNBQUVNc0JJZ0lvQWl3aUJDQUNLQUl3UmdSL1FRQUZJQVFvQWdBb0FnQWdBVVlMQkVBZ0EwRXdhaUlDSUFCQmRTQUFJQUFReXdFb0FnQVFJQkFRSUFKQnVwc0tFQTRhSUFOQklHb2lCQ0FBSUFFUUtpQUNJQVFRRWhvZ0FrSC9od29RRGhvZ0EwRVFhaUlCSUFBZ0FCRExBU2dDQUJBcUlBSWdBUkFTR2lBQ1FhNmFDaEFPR2lBRElBQWdBQkRMQVNnQ1RDZ0NBQkFxSUFJZ0F4QVNHaUFES0FMc0FTRUZJQU1RRHhvZ0FSQVBHaUFFRUE4YUlBSVFFUXNnQTBId0FXb2tBQ0FGQzRBR0FRWi9JQUFnQVNnQ0FEWUNBQ0FBSUFFb0FnUTJBZ1FnQUVFSWFpQUJRUWhxSWdJUXZoc2lBMEV3YWlBQ1FUQnFFTDRiR2lBRFFlQUFhaUFDUWVBQWFoQ3lDQm9nQUVHRUFXb2dBVUdFQVdvUXNnZ2FJQUJCb0FGcUlBRkJvQUZxRUxJSUdpQUFRYndCYWlBQlFid0JhaEN5Q0JvZ0FDQUJLQUxZQVRZQzJBRWdBRUhjQVdvZ0FVSGNBV29pQWhDbEFpSURRUXhxSUFKQkRHb1FvUVFnQXlBQ0tBSWdOZ0lnSXdCQkVHc2lCU1FBSUFCQmdBSnFJZ0lnQVVHQUFtb2lBeWdDQURZQ0FDTUFRUkJySWdRa0FDQUNRUVJxSWdaQkFEWUNDQ0FHUWdBM0FnQWdCRUVCT2dBTUlBUWdBMEVFYWpZQ0NDQUdJQVJCQ0dvUTR4c2dCRUVRYWlRQUlBWWdBeWtDRURjQ0RDTUFRUkJySWdRa0FDQUNRUmhxSWdaQkFEWUNDQ0FHUWdBM0FnQWdCRUVCT2dBTUlBUWdBMEVZYWpZQ0NDQUdJQVJCQ0dvUTRoc2dCRUVRYWlRQUlBWWdBeWtDSkRjQ0RDQURLQUlzSVFRZ0FrS0FnQVEzQWpnZ0FrSUFOd0l3SUFJZ0JEWUNMQ0FGSUFJcEFqZzNBd2dnQlNBQ0tRSXdOd01BSUFJZ0F5a0NPRGNDT0NBQ0lBTXBBakEzQWpBZ0F5QUZLUU1JTndJNElBTWdCU2tEQURjQ01DQUZRUkJxSkFBakFFRVFheUlGSkFBZ0JTQUFRY0FDYWpZQ0RDQUZJQUZCd0FKcU5nSUlJQVVvQWd3aUJpRURJQVVvQWdnaEJDTUFRUkJySWdJa0FDQUNJQU0yQWd3Z0FpQUVOZ0lJSUFJb0Fnd2lCRUVBTmdJQUlBUkJBRFlDQkNBQ1FRQTJBZ1FnQWlnQ0NCQzNBU0VISXdCQkVHc2lBeVFBSUFNZ0JFRUlhallDRENBRElBSkJCR28yQWdnZ0F5QUhOZ0lFSUFNb0Fnd2lCeUFES0FJSUVNd09JQWNnQXlnQ0JCQ2tHQ0FEUVJCcUpBQWdCQkN2QXlBRUlBSW9BZ2dvQWdBMkFnQWdCQ0FDS0FJSUtBSUVOZ0lFSUFJb0FnZ1F0d0VvQWdBaEF5QUVFTGNCSUFNMkFnQWdBaWdDQ0JDM0FVRUFOZ0lBSUFJb0FnaEJBRFlDQkNBQ0tBSUlRUUEyQWdBZ0FrRVFhaVFBSUFZZ0JTZ0NDQ2dDRERZQ0RDQUZRUkJxSkFBZ0FTMEEwQUloQWlBQVFRQTZBTkVDSUFBZ0Fqb0EwQUlnQVJDdkFTQUJRUUU2QU5FQ0lBQUxFZ0FnQUVIc0FFR1Yvd05CZkVFREVNb0JDOEVCQVFWL0l3QkJFR3NpQ1NRQUlBQVFIQ0FBSUFBb0FneEJBV29pQ0RZQ0RDQUpJQWcyQWdnakFFRWdheUlJSkFBZ0FFR01BV29pQ2hDaUZpRUxJQUlvQWdBaEFpQUpLQUlJSVF3Z0FDZ0NDQ0VBSUFnZ0F5a0NBRGNER0NBRktBSUFJUU1nQkNnQ0FDRUVJQWdnQmlrQ0FEY0RFQ0FJSUFjcEFnQTNBd2dnQ2lBTElBQWdEQ0FCSUFJZ0NFRVlhaUFFSUFNZ0NFRVFhaUFJUVFocUVPTWRJZ0FRS0NBS0lBb29BaGhCQVdvMkFoZ2dDRUVnYWlRQUlBbEJFR29rQUNBQUMwZ0JBbjhqQUVFUWF5SUZKQUFnQlVFQU5nSU1JQUFvQWdBZ0FTQUNJQVZCREdvUXZRTWlCa1VFUUNBQUlBRWdBaUFESUFRZ0JTZ0NEQkMrRmlFR0N5QUZRUkJxSkFBZ0Jnc2JBQ0FBSUFFcEFnQTNBZ0FnQUVFSWFpQUJRUWhxRUZZYUlBQUxSZ0VDZnlNQVFSQnJJZ1FrQUNBRVFRQTJBZ3dnQUNnQ0FDQUJJQUlnQkVFTWFoQzlBeUlGUlFSQUlBQWdBU0FDSUFNZ0JDZ0NEQkN6RmlFRkN5QUVRUkJxSkFBZ0JRdWJBZ0VEZnlNQVFkQUJheUlESkFBZ0FTOEJIaUVFQWtBQ1FDQUFJQUlRVUEwQUlBQWdBaEMyQVEwQUlBTkJFR29pQWlBQVFYSWdBUkFRSUFNZ0FFR3RKUkEzSUFJZ0F4QVNHaUFDUWFlc0RCQU9HaUFDSUFRUWdRRVFEaG9nQXlnQ3pBRWhCU0FERUE4YUlBSVFFUXdCQ3dKQUlBQW9BZ0FvQWdBUVIwVU5BQ0FBSUFJUVBrRWdSZzBBSUFOQkVHb2lBaUFBUVhJZ0FSQVFJQU1nQUVHdEpSQTNJQUlnQXhBU0dpQUNRZnVyREJBT0dpQUNJQVFRZ1FFUURob2dBeWdDekFFaEJTQURFQThhSUFJUUVRd0JDeUFFUWMwQlJnMEFJQUVvQWlRZ0FrWU5BQ0FEUVJCcUlnSWdBRUZ5SUFFUUVDQUNRZDJmREJBT0dpQUNJQVFRZ1FFUURob2dBeWdDekFFaEJTQUNFQkVMSUFOQjBBRnFKQUFnQlF0Y0FRTi9Ba0FnQUNnQ0NFVU5BQ0FBS0FJRUlnRW9BZ0FpQXlBQUtBSUFJZ0lvQWdRMkFnUWdBaWdDQkNBRE5nSUFJQUJCQURZQ0NBTkFJQUFnQVVZTkFTQUJLQUlFSVFJZ0FVRUlhaEFXSUFFUUh5QUNJUUVNQUFzQUN3c2ZBQ0FCQkVBZ0FDQUJLQUlBRU1RS0lBQWdBU2dDQkJERUNpQUJFQjhMQ3d3QUlBQkJFR29nQVJDSUNRc0tBQ0FBUVFGclFRVkpDeDBBSUFCQjd3QkxCRUJCM1BnTUR3c2dBRUVDZEVHUXRoTnFLQUlBQ3drQUlBQkJBQkNPRGdzbkFRRi9Jd0JCRUdzaUF5UUFJQU1nQWpZQ0RDQUFJQUVnQTBFTWFoRFNIQ0FEUVJCcUpBQUxOUUFnQVNBQUtBSWtUd1JBUWN6QUFVSDNsUUpCcndGQjNmc0FFQUFBQ3lBQUtBSWdJQUZCQW5ScUtBSUFJQUFvQWpRUXB3WUxKZ0FnQUNBQktRTUFOd01BSUFBZ0FTa0RDRGNEQ0NBQVFSQnFJQUZCRUdvUTBRRWFJQUFMUkFBZ0FpQUJMd0VZVHdSQVFZUEJBVUgzbFFKQnhBQkJzZWtFRUFBQUN5QUFJQUVvQWdBZ0FTZ0NGQ0FDUVFSMGFpSUFMd0VBUVFKMGFpQUFMd0VDUVFFUWtRNExNQUVDZndKL1FRRWdBQ2dDQUNJQ0lBRW9BZ0FpQTBrTkFCcEJBQ0FDSUFOTERRQWFJQUFvQWdRZ0FTZ0NCRWtMQ3ljQUlBRUVRQ0FBSUFFb0FnQVF6Z29nQUNBQktBSUVFTTRLSUFGQkZHb1FwQUlnQVJBZkN3dG5BUUovSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ01BUVJCcklnRWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQVNBRE5nSUlJQUJCakFGcUlBQkJDR29nQVVFSWFpQUFRZGdDYWlBQ1FReHFFTEVYSVFBZ0FVRVFhaVFBSUFKQkVHb2tBQ0FBQzBvQkFYOGdBRUVBTmdJTUlBQWdBellDRUNBQkJFQWdBUkM4RnlFRUN5QUFJQVEyQWdBZ0FDQUVJQUpCQTNScUlnSTJBZ2dnQUNBRUlBRkJBM1JxTmdJTUlBQWdBallDQkNBQUM2WUxBUWwvSXdCQkVHc2lDU1FBSUFBUXlCZEZCRUFqQUVFd2F5SUdKQUFDUUNBQUtBSVFJZ0pCZ0FoUEJFQWdBQ0FDUVlBSWF6WUNFQ0FHSUFBb0FnUWlBaWdDQURZQ0dDQUFJQUpCQkdvMkFnUWdBQ0FHUVJocUVLUU9EQUVMQWtBZ0FDZ0NDQ0lESUFBb0FnUnJRUUoxSWdRZ0FDZ0NEQ0lDSUFBb0FnQWlCV3NpQjBFQ2RVa0VRQ0FDSUFOR0RRRWdCa0dBSUJBVk5nSVlJQUFnQmtFWWFoQ2tEZ3dDQ3lBR1FSaHFRUUVnQjBFQmRTQUNJQVZHR3lBRUlBQkJER29RcHdJaEFrR0FJQkFWSVFNZ0JrR0FDRFlDRUNBR0lBQkJGR28yQWd3Z0JpQUROZ0lFSXdCQklHc2lCeVFBQWtBZ0FpZ0NDQ0lESUFJb0FneEhCRUFnQXlFRURBRUxJQUlvQWdRaUJDQUNLQUlBSWdWTEJFQWdBeUFFYXlFSUlBUWdCQ0FGYTBFQ2RVRUJha0YrYlVFQ2RDSUthaUVGSUFNZ0JFY0VRQ0FGSUFRZ0NCRG5BUm9nQWlnQ0JDRURDeUFDSUFVZ0NHb2lCRFlDQ0NBQ0lBTWdDbW8yQWdRTUFRc2dCMEVJYWtFQklBTWdCV3RCQVhVZ0F5QUZSaHNpQXlBRFFRSjJJQUlvQWhBUXB3SWlBeUFDS0FJRUlBSW9BZ2dRcndZZ0FpZ0NBQ0VFSUFJZ0F5Z0NBRFlDQUNBRElBUTJBZ0FnQWlnQ0JDRUVJQUlnQXlnQ0JEWUNCQ0FESUFRMkFnUWdBaWdDQ0NFRUlBSWdBeWdDQ0RZQ0NDQURJQVEyQWdnZ0FpZ0NEQ0VFSUFJZ0F5Z0NERFlDRENBRElBUTJBZ3dnQXhDYUF5QUNLQUlJSVFRTElBUWdCaWdDQkRZQ0FDQUNJQUlvQWdoQkJHbzJBZ2dnQjBFZ2FpUUFJQVpCQURZQ0NDQUFLQUlJSVFVRFFDQUFLQUlFSUFWR0JFQWdBQ2dDQUNFRElBQWdBaWdDQURZQ0FDQUNJQU0yQWdBZ0FDQUNLQUlFTmdJRUlBSWdCVFlDQkNBQUtBSUlJUU1nQUNBQ0tBSUlOZ0lJSUFJZ0F6WUNDQ0FBS0FJTUlRTWdBQ0FDS0FJTU5nSU1JQUlnQXpZQ0RDQUdRUWhxRUlzQklBSVFtZ01NQXdVZ0JVRUVheUVGSXdCQklHc2lDQ1FBQWtBZ0FpZ0NCQ0lESUFJb0FnQkhCRUFnQXlFRURBRUxJQUlvQWdnaUJ5QUNLQUlNSWdSSkJFQWdCeUFFSUFkclFRSjFRUUZxUVFKdFFRSjBJZ3BxSVFRZ0F5QUhSd1JBSUFRZ0J5QURheUlIYXlJRUlBTWdCeERuQVJvZ0FpZ0NDQ0VEQ3lBQ0lBUTJBZ1FnQWlBRElBcHFOZ0lJREFFTElBaEJDR3BCQVNBRUlBTnJRUUYxSUFNZ0JFWWJJZ01nQTBFRGFrRUNkaUFDS0FJUUVLY0NJZ01nQWlnQ0JDQUNLQUlJRUs4R0lBSW9BZ0FoQkNBQ0lBTW9BZ0EyQWdBZ0F5QUVOZ0lBSUFJb0FnUWhCQ0FDSUFNb0FnUTJBZ1FnQXlBRU5nSUVJQUlvQWdnaEJDQUNJQU1vQWdnMkFnZ2dBeUFFTmdJSUlBSW9BZ3doQkNBQ0lBTW9BZ3cyQWd3Z0F5QUVOZ0lNSUFNUW1nTWdBaWdDQkNFRUN5QUVRUVJySUFVb0FnQTJBZ0FnQWlBQ0tBSUVRUVJyTmdJRUlBaEJJR29rQUF3QkN3QUxBQXNnQmtHQUlCQVZOZ0lZSUFaQkdHb2hCeU1BUVNCcklnVWtBQUpBSUFBb0FnUWlBaUFBS0FJQVJ3UkFJQUloQXd3QkN5QUFLQUlJSWdRZ0FDZ0NEQ0lEU1FSQUlBUWdBeUFFYTBFQ2RVRUJha0VDYlVFQ2RDSUlhaUVESUFJZ0JFY0VRQ0FESUFRZ0Ftc2lCR3NpQXlBQ0lBUVE1d0VhSUFBb0FnZ2hBZ3NnQUNBRE5nSUVJQUFnQWlBSWFqWUNDQXdCQ3lBRlFRaHFRUUVnQXlBQ2EwRUJkU0FDSUFOR0d5SUNJQUpCQTJwQkFuWWdBRUVNYWhDbkFpSUNJQUFvQWdRZ0FDZ0NDQkN2QmlBQUtBSUFJUU1nQUNBQ0tBSUFOZ0lBSUFJZ0F6WUNBQ0FBS0FJRUlRTWdBQ0FDS0FJRU5nSUVJQUlnQXpZQ0JDQUFLQUlJSVFNZ0FDQUNLQUlJTmdJSUlBSWdBellDQ0NBQUtBSU1JUU1nQUNBQ0tBSU1OZ0lNSUFJZ0F6WUNEQ0FDRUpvRElBQW9BZ1FoQXdzZ0EwRUVheUFIS0FJQU5nSUFJQUFnQUNnQ0JFRUVhellDQkNBRlFTQnFKQUFnQmlBQUtBSUVJZ0lvQWdBMkFoZ2dBQ0FDUVFScU5nSUVJQUFnQnhDa0Rnc2dCa0V3YWlRQUN5QUpRUWhxSUFBUTF4Y2dDU2dDRENBQktBSUFOZ0lBSUFBZ0FDZ0NGRUVCYWpZQ0ZDQUpRUkJxSkFBTDJnRUJCWDhqQUVFZ2F5SUhKQUFDUUNBRElBSnJJZ1JCQUV3TkFDQUVRUUoxSWdVZ0FDZ0NDQ0FBS0FJRUlnWnJRUUoxVEFSQUFrQWdCaUFCYXlJSVFRSjFJZ1FnQlU0RVFDQURJUVFNQVFzZ0FDQUNJQVJCQW5ScUlnUWdBeEQzRGlBSVFRQk1EUUlMSUFBZ0FTQUdJQUVnQlVFQ2RHb1F1UTRnQWlBRVJnMEJJQUVnQWlBRUlBSnJFT2NCR2d3QkN5QUhRUWhxSUFBZ0JpQUFLQUlBYTBFQ2RTQUZhaENqQ1NBQklBQW9BZ0JyUVFKMUlBQkJDR29RcHdJaUJDQUNJQU1RcndZZ0FDQUVJQUVRK3hjZ0JCQ2FBd3NnQjBFZ2FpUUFDNE1CQVFOL0l3QkJFR3NpQWlRQUlBSWdBQkRQRnlBQUVOSUhha0VRZENBQUx3RVVja0dBZ0FScU5nSU1JQUVnQWtFTWFoRGZBaUFBS0FJa0lRTWdBQ2dDSUNFQUEwQWdBQ0FEUmdSQUlBSkJFR29rQUFVZ0FTQUJLQUlFSUFBb0FoZ2lCQ0FBUVF4cUlBUWJLQUlBSUFCQkJHb1EwQWNRNHdvZ0FFRWNhaUVBREFFTEN3c2dBUUYvUVFFaEFTQUFLQUlVUWIwQ1J3Ui9JQUFRcUE1QjZBQkdCVUVCQ3d1YUF3RUpmeUFBS0FKQUlnRUVmeUFCQlNNQVFSQnJJZ1VrQUVFNEVCVWlBVUVBTmdJd0lBRkNBRGNES0NBQlFnQTNBeGdnQVVJQU53TUlJQUVnQUVFRWFqWUNBQ0FCUVFBMkFpQWdBVUVBTmdJUUlBVkJBRFlDQ0NBQVFVQnJJQUVROVJnZ0JVRUlhaEQzR0NBQUtBSkFJUU1nQUNnQ0dDRUJJd0JCUUdvaUJpUUFJQUZCNEFCcUlRZ2dBVUhrQUdvaEFnTkFJQWdnQWlnQ0FDSUhSZ1JBSUFaQlFHc2tBQVVnQmlBSEVOY0tJUVFqQUVFZ2F5SUNKQUFDUUNBRUtBSVVRUXBHQkVBZ0FrRVFhaUlKSUFRUThCY1F2d1lnQWlnQ0VDQUpJQUlzQUJ0QkFFZ2JJQUpCREdvUWpRNEVRQ0FEUVFocUlBSW9BZ3dRMEFRTElBSkJFR29RRHhvZ0FrRWdhaVFBREFFTFFmU3pDVUhPcEFKQktFR3U3Z0lRQUFBTElBUVEyZ2dhSUFkQkJHb2hBZ3dCQ3dzZ0FVRWNhaUVFSUFGQklHb2hBZ05BSUFJb0FnQWlBaUFFUndSQUlBTWdBa0VBRURnUTRSY2dBa0VFYWlFQ0RBRUxDeUFESUFGQnNZc0hFS0FPTmdJb0lBTWdBVUdlakFjUW9BNDJBaXdnQXlBQlFmMkxCeENnRGpZQ01DQUZRUkJxSkFBZ0FDZ0NRQXNMYXdJQmZnRi9BMEFDUUNBQ1FzQUFVUVJBSUFBb0FnZ2lBRVVOQVNBQVFRUnFJUU1nQUNnQ0FDRUFBMEFnQUNBRFJnMENJQUVnQUNnQ0VCREJCaUFBRUV3aEFBd0FDd0FMSUFBcEF3QWdBb2hDQVlOUVJRUkFJQUVnQXFjUXdRWUxJQUpDQVh3aEFnd0JDd3NMeFFFQkEzOGdBRUlBTndJRUlBQkJBRG9BRENBQVFmVGdFallDQUNBQUlBRXBBaEEzQWhBZ0FDQUJLUUlZTndJWUlBQkJJR29pQWtFQU5nSUlJQUpDQURjQ0FDQUJLQUlrSWdNZ0FTZ0NJQ0lFUndSQUlBSWdBeUFFYTBFY2JTSURFTDBPSUFJZ0FTZ0NJQ0FCS0FJa0lBTVF6QWdMSUFCQkxHb2lBa0VBTmdJSUlBSkNBRGNDQUNBQktBSXdJZ01nQVNnQ0xDSUVSd1JBSUFJZ0F5QUVhMEVHZFNJREVPQVhJQUlnQVNnQ0xDQUJLQUl3SUFNUXNnNExJQUFnQVNrQ09EY0NPQ0FBQ3lJQkFYOERRQ0FBUVFKSVJRUkFJQUJCQVhZaEFDQUJRUUZxSVFFTUFRc0xJQUVMamdFQkEzOUJBU0VEQWtBZ0FDZ0NBQ0lDUVFFZ0FTZ0NBQ0lFRzBVTkFDQUNSU0FFY2tVRVFFRUFEd3NnQWtVZ0JFVnlSUVJBSUFJUXdBY2dBU2dDQUJEQUIwa05BVUVBSVFNZ0FTZ0NBQkRBQnlBQUtBSUFFTUFIU1EwQkN5QUFLQUlFSWdCRklBRW9BZ1FpQWtFQVIzRWhBeUFBUlNBQ1JYSU5BQ0FBRU1BSElBRW9BZ1FRd0FkSklRTUxJQU1MT3dFQmZ5QUFJQUVRNnhjZ0FDQUJFTFFPSUFFb0FqQWhBaUFCS0FJc0lRRURRQ0FCSUFKSEJFQWdBQ0FCRU5vS0lBRkJRR3NoQVF3QkN3c0xDd0FnQUNBQklBSVE3eGNMYUFFQmZ5QUFLQUlBSUFBb0FnUWdBVUVFYWhEeEZ5QUFLQUlBSVFJZ0FDQUJLQUlFTmdJQUlBRWdBallDQkNBQUtBSUVJUUlnQUNBQktBSUlOZ0lFSUFFZ0FqWUNDQ0FBS0FJSUlRSWdBQ0FCS0FJTU5nSUlJQUVnQWpZQ0RDQUJJQUVvQWdRMkFnQUxnZ01CQlg4akFFRWdheUlISkFBQ1FDQURJQUpySWdSQkFFd05BQ0FFUVFKMUlnVWdBQ2dDQ0NBQUtBSUVJZ1pyUVFKMVRBUkFBa0FnQmlBQmF5SUlRUUoxSWdRZ0JVNEVRQ0FESVFRTUFRc2dBQ0FDSUFSQkFuUnFJZ1FnQXhEM0RpQUlRUUJNRFFJTElBQWdBU0FHSUFFZ0JVRUNkR29RdVE0Z0FpQUVSZzBCSUFFZ0FpQUVJQUpyRU9jQkdnd0JDeUFIUVFocUlBQWdCaUFBS0FJQWEwRUNkU0FGYWhDTEJDQUJJQUFvQWdCclFRSjFJQUJCQ0dvUXB3SWlCQ0FDSUFNUXJ3WWdCQ0FFS0FJRUlBRWdBQ2dDQUNJRGF5SUNheUlGTmdJRUlBSkJBRW9FUUNBRklBTWdBaEI5R2dzZ0FDZ0NCQ0VDQTBBZ0FTQUNSd1JBSUFRb0FnZ2dBU2dDQURZQ0FDQUVJQVFvQWdoQkJHbzJBZ2dnQVVFRWFpRUJEQUVMQ3lBQUtBSUFJUUVnQUNBRUtBSUVOZ0lBSUFRZ0FUWUNCQ0FBS0FJRUlRRWdBQ0FFS0FJSU5nSUVJQVFnQVRZQ0NDQUFLQUlJSVFFZ0FDQUVLQUlNTmdJSUlBUWdBVFlDRENBRUlBUW9BZ1EyQWdBZ0JCQ2FBd3NnQjBFZ2FpUUFDMTRCQVg4akFFRVFheUlHSkFBZ0JpQUNOZ0lBSUFZZ0FUWUNDQ0FBSUFZb0FnZ2dCaWdDQUNBREVMWU9JZ0JCc1BzUE5nSUVJQUJCNVBzUE5nSUFJQUFnQlRZQ01DQUFJQVEzQXlnZ0FFSFErdzgyQWdBZ0JrRVFhaVFBSUFBTENRQWdBQkR6RnhBZkN4OEFJQUFnQVRZQ0JDQUFRWnpzRWpZQ0FDQUFRUWhxSUFJUXNBRWFJQUFMd1FJQkIzOENRQUpBQWtBZ0FDMEFDeUlDUVJoMFFSaDFJZ1JCQUU0RVFFRUJJUU1nQkVFQlJnMEJJQUFnQkVFQmFqb0FDd3dEQ3lBQUtBSUVJZ0lnQUNnQ0NFSC8vLy8vQjNGQkFXc2lBMGNOQVF0QjcvLy8vd01oQlFKQUlBTkI3Ly8vL3dOSEJFQWdBQ2dDQUNBQUlBQXNBQXRCQUVnYklRY2dBMEhtLy8vL0FVMEVRRUVDSUFOQkFXb2lBaUFEUVFGMElnUWdBaUFFU3hzaUFrRURja0VCYWlBQ1FRSkpHeUVGQ3lBRkVKY0RJUWdnQXdSQUlBZ2hBaUFISVFRZ0F5RUdBMEFnQmdSQUlBSWdCQ2dDQURZQ0FDQUVRUVJxSVFRZ0FrRUVhaUVDSUFaQkFXc2hCZ3dCQ3dzTElBTkJBVWNFUUNBSEVCOExJQUFnQ0RZQ0FDQUFJQVZCZ0lDQWdIaHlOZ0lJREFFTEVBRUFDeUFESVFJTElBQWdBa0VCYWpZQ0JDQUFLQUlBSVFBTElBQWdBa0VDZEdvaUFFRUFOZ0lFSUFBZ0FUWUNBQXVnRWdJT2Z3SjlBbjhnQUNFTEl3QkJNR3NpQkNRQUlBUWdBVFlDTEFKQUFrQWdBaWdDQkNBQ0tBSUFSZ1JBSUFSQkxHb1FnUmdoQUF3QkN5QUVJQUVnQVNnQ0FDZ0NJQkVBQUNJQU5nSW9JQUFFUUNBQ0tBSUVJQUlvQWdBaUFHdEJCRWNOQWtFWUVCVWdCQ2dDS0NBQUtBSUFRUUJIRVB3WElRQU1BUXNnQkNBQklBRW9BZ0FvQWlnUkFBQWlBRFlDSkNBQUJFQWdCRUVrYWlBQ0VJQVlJUUFNQVFzZ0JDQUJJQUVvQWdBb0FqQVJBQUFpQURZQ0lDQUFCRUFnQkVFZ2FpQUNFUDhYSVFBTUFRc2dCQ0FCSUFFb0FnQW9BamdSQUFBaUFEWUNIQ0FBQkVBZ0JFRVFhaUFMSUFJUTVBcEJBQ0VBQWtBZ0JDZ0NFQ0lCSUFRb0FoUWlCMFlOQUNBQklRSURRQ0FDSUFkSEJFQUNRQ0FDS0FJQUlnWW9BZ1FpQXlBREtBSUFLQUlnRVFBQURRQWdCaWdDQkNJRElBTW9BZ0FvQWlnUkFBQU5BQ0FHS0FJRUlnTWdBeWdDQUNnQ01CRUFBRVVOQXdzZ0FrRUVhaUVDREFFTEN5QUJLQUlBS0FJRUlRTURRQ0FCSUFkSEJFQWdBU2dDQUNFQ0lBRkJCR29oQVNBQ0tBSUVJQU5HRFFFTUFnc0xRUmdRRlNBRUtBSWNJZ0VnQkVFUWFoRGdDaUlBUVpqckVqWUNBQ0FBSUFFb0FoUTJBaFFMSUFSQkVHb1FNaG9NQVFzZ0JDQUJJQUVvQWdBb0FrQVJBQUFpQURZQ0RDQUFCRUFnQkVFUWFpQUxJQUlRNUFvZ0JDZ0NFQ0FFS0FJVVJnUi9RUUFGUVJnUUZTQUVLQUlNSWdBZ0JFRVFhaERnQ2lJQlFZanRFallDQUNBQklBQW9BaFEyQWhRZ0FRc2hBQ0FFUVJCcUVESWFEQUVMSUFRZ0FTQUJLQUlBS0FKd0VRQUFJZ0EyQWdnZ0FBUkFJQVJCRUdvZ0N5QUNFT1FLSUFRb0FoQWdCQ2dDRkVZRWYwRUFCU0FFUVFocUlBUkJFR29RL2hjTElRQWdCRUVRYWhBeUdnd0JDeUFFSUFFZ0FTZ0NBQ2dDWUJFQUFDSUFOZ0lFSUFCRkJFQkJBQ0VBREFFTElBUkJFR29nQ3lBQ0VPUUtJQVFvQWhBZ0JDZ0NGRVlFZjBFQUJTQUVRUVJxSUFSQkVHb1EvUmNMSVFBZ0JFRVFhaEF5R2dzZ0JFRXdhaVFBSUFBTUFRdEJ3S29KUWJhWkFrSDZBVUdqNGdBUUFBQUxJZ0ZGQkVCQkFBOExJd0JCSUdzaUNTUUFJQWtnQVRZQ0dDQUpJQUUyQWd3akFFRVFheUlNSkFCQkFDRUFJd0JCRUdzaUNpUUFBbjhnQ1VFTWFpSU9LQUlBSVFNakFFRWdheUlFSkFBZ0JFRVFhaUlDRUZVZ0FpQURLQUlFRVBnWEFrQUNRQ0FESUFNb0FnQW9BalFSQUFBaUFnUkFJQUlnQWlnQ0FDZ0NZQkVBQUNJREtBSUVJUUlnQXlnQ0FDRURBMEFnQWlBRFJnMENJQVJCRUdvZ0F5Z0NBQkRoQ2lBRFFRUnFJUU1NQUFzQUN5QURJQU1vQWdBb0FrUVJBQUFpQWdSQUlBSWdBaWdDQUNnQ1lCRUFBQ0lES0FJRUlRSWdBeWdDQUNFREEwQWdBaUFEUmcwQ0lBUkJFR29nQXlnQ0FCRDRGeUFEUVFScUlRTU1BQXNBQ3lBRElBTW9BZ0FvQWxnUkFBQkZEUUVnQkVFUWFrRUFFT0VLQ3lBRVFSQnFJZ2NvQWdBZ0J5QUhMUUFMSWdaQkdIUkJHSFZCQUVnaUF4c2lBaUFDSUFjb0FnUWdCaUFERzBFQ2RHb1E2QThoQWlBSExBQUxRUUJJQkVBZ0J5Z0NBQkFmQ3lBRVFTQnFKQUFnQWd3QkMwRzZ0d2xCMEtrRFFkY0RRZHp4Q0JBQUFBc2hCeUFNQW44Q1FDQUxRU1JxSWdVb0FnUWlBMFVOQUNBRktBSUFBbjhnQTBFQmF5QUhjU0FEYVNJQ1FRRk5EUUFhSUFjZ0F5QUhTdzBBR2lBSElBTndDeUlBUVFKMGFpZ0NBQ0lFUlEwQUlBTkJBV3NoRFNBQ1FRRkxJUUlEUUNBRUtBSUFJZ1JGRFFFZ0J5QUVLQUlFSWdaSEJFQUNRQ0FDUlFSQUlBWWdEWEVoQmd3QkN5QURJQVpMRFFBZ0JpQURjQ0VHQ3lBQUlBWkhEUUlMSUFRb0FnZ2dEaWdDQUJENUYwVU5BQXRCQUF3QkN5QUtJQVVnQnlBT0VNTVFBa0JCQUNBRElBVW9BZ3hCQVdxekloSWdCU29DRUNJUklBT3psRjRiRFFBQ1FBSi9RUUlnQXlBRFFRRnJjVUVBUnlBRFFRTkpjaUFEUVFGMGNpSUNBbjhnRWlBUmxZMGlFVU1BQUlCUFhTQVJRd0FBQUFCZ2NRUkFJQkdwREFFTFFRQUxJZ0FnQUNBQ1NSc2lBRUVCUmcwQUdpQUFJQUFnQUVFQmEzRkZEUUFhSUFBUWZ3c2lDQ0FGS0FJRUlnTk5CRUFnQXlBSVRRMEJJQU5CQTBraEFBSi9JQVVvQWd5eklBVXFBaENWalNJUlF3QUFnRTlkSUJGREFBQUFBR0J4QkVBZ0Vha01BUXRCQUFzaEFpQURJQWdnQUNBRGFVRUJTM0lFZnlBQ0VIOEZJQUpCQVVFZ0lBSkJBV3RuYTNRZ0FrRUNTUnNMSWdBZ0FDQUlTUnNpQ0UwTkFRdEJBQ0VEQWtBZ0NBUkFJQVVnQ0JDWEF4QnNJQVVnQ0RZQ0JBTkFJQU1nQ0VZRVFDQUZLQUlJSWdCRkRRTWdCVUVJYWlFRElBQW9BZ1FoQkFKQUlBaHBJZ0pCQVUwRVFDQUVJQWhCQVd0eElRUU1BUXNnQkNBSVNRMEFJQVFnQ0hBaEJBc2dCU2dDQUNBRVFRSjBhaUFETmdJQUlBaEJBV3NoRUNBQ1FRRkxJUTREUUNBQUtBSUFJZ0pGRFFRZ0FpZ0NCQ0VHQWtBZ0RrVUVRQ0FHSUJCeElRWU1BUXNnQmlBSVNRMEFJQVlnQ0hBaEJnc0NRQ0FFSUFaR0RRQWdBaUVESUFaQkFuUWlEeUFGS0FJQWFpSU5LQUlBUlFSQUlBMGdBRFlDQUNBR0lRUU1BUXNEUUFKQUlBTWlCaWdDQUNJRFJRUkFRUUFoQXd3QkN5QUNLQUlJSUFNb0FnZ1ErUmNoRFNBR0tBSUFJUU1nRFEwQkN3c2dBQ0FETmdJQUlBWWdCU2dDQUNBUGFpZ0NBQ2dDQURZQ0FDQUZLQUlBSUE5cUtBSUFJQUkyQWdBTUFRc2dBaUVBREFBTEFBVWdCU2dDQUNBRFFRSjBha0VBTmdJQUlBTkJBV29oQXd3QkN3QUxBQXNnQlVFQUVHd2dCVUVBTmdJRUN3c2dCU2dDQkNJRElBTkJBV3R4UlFSQUlBTkJBV3NnQjNFaEFBd0JDeUFESUFkTEJFQWdCeUVBREFFTElBY2dBM0FoQUFzQ1FDQUFRUUowSWdBZ0JTZ0NBR29vQWdBaUFrVUVRQ0FLS0FJQUlBVW9BZ2cyQWdBZ0JTQUtLQUlBTmdJSUlBVW9BZ0FnQUdvZ0JVRUlhallDQUNBS0tBSUFJZ0lvQWdBaUFFVU5BU0FBS0FJRUlRUUNRQ0FESUFOQkFXc2lBSEZGQkVBZ0FDQUVjU0VFREFFTElBTWdCRXNOQUNBRUlBTndJUVFMSUFVb0FnQWdCRUVDZEdvZ0FqWUNBQXdCQ3lBS0tBSUFJQUlvQWdBMkFnQWdBaUFLS0FJQU5nSUFDeUFLS0FJQUlRUWdDa0VBTmdJQUlBVWdCU2dDREVFQmFqWUNEQ0FLRUlzQlFRRUxPZ0FNSUF3Z0JEWUNDQ0FLUVJCcUpBQWdDU0FNS0FJSU5nSVFJQWtnREMwQUREb0FGQ0FNUVJCcUpBQWdDUzBBRkFSQUlBdEJPR29nQ1VFWWFoQ1hCU0FKS0FJWUlRRUxJQWtvQWhBb0FnZ2hBQ0FKUVFBMkFoZ2dBUVJBSUFFZ0FTZ0NBQ2dDQkJFREFBc2dDVUVnYWlRQUlBQUw2QUVCQlg4akFFRWdheUlISkFBQ1FDQURJQUpySWdSQkFFd05BQ0FFUVFKMUlnWWdBQ2dDQ0NBQUtBSUVJZ1JyUVFKMVRBUkFJQVlnQkNBQmF5SUlRUUoxSWdWS0JFQWdBQ0FESUFJZ0JVRUNkR29pQTJzaUJVRUFTZ1IvSUFRZ0F5QUZFSDBnQldvRklBUUxOZ0lFSUFoQkFFd05BZ3NnQUNBQklBUWdBU0FHUVFKMGFoQzVEaUFDSUFOR0RRRWdBU0FDSUFNZ0Ftc1E1d0VhREFFTElBZEJDR29nQUNBRUlBQW9BZ0JyUVFKMUlBWnFFS01KSUFFZ0FDZ0NBR3RCQW5VZ0FFRUlhaENuQWlJRUlBSWdBeEN2QmlBQUlBUWdBUkQ3RnlBRUVKb0RDeUFIUVNCcUpBQUxzQUVCQTM4akFFRWdheUlESkFBZ0EwRUFOZ0lZSUFOQ0FEY0RFQ0FDS0FJRUlRUWdBaWdDQUNFQ0FrQUNRQU5BSUFJZ0JFWU5BU0FESUFFZ0FpZ0NBQkNTQlNJRk5nSU1JQVVFUUNBQ1FRUnFJUUlnQTBFUWFpQURRUXhxRU04QkRBRUxDeUFBUVFBMkFnZ2dBRUlBTndJQURBRUxJQUFnQXlnQ0VEWUNBQ0FBSUFNb0FoUTJBZ1FnQUNBREtBSVlOZ0lJSUFOQkFEWUNHQ0FEUWdBM0F4QUxJQU5CRUdvUU1ob2dBMEVnYWlRQUMxQUJBbjhqQUVFd2F5SUNKQUFnQWlBQkVORUJJUUZCSUJBVklnTkJvT01TTmdJQUlBTkJDR29nQVJEUkFSb2dBaUFETmdJb0lBQWdBa0VZYWlJQUVJNFlJQUFRRmlBQkVCWWdBa0V3YWlRQUMwc0JBbjhqQUVFUWF5SUJKQUFnQVVFSWFpQUFFUGNaSUFFb0FnZ2lBaUFBS0FJUVJnUi9RUUFGSUFJb0FnZ2lBRUVBSUFBb0FoUkJmbkZCOWdGR0d3c2hBQ0FCUVJCcUpBQWdBQXNrQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1FTkVJR2lBQlFSQnFKQUFMWlFFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2hBU01BUVJCcklnQWtBQ0FBSUFFMkFnd2dBQ0FDUVFocU5nSUlJQUFvQWd3aUFVRUlhaUFBS0FJSUtBSUFFQTRhSUFCQkVHb2tBQ0FCSVFBZ0FrRVFhaVFBSUFBTE9nRUJmeU1BUVNCcklnTWtBQ0FESUFBMkFod2dBeUFCTmdJWUlBTWdBallDRkNBREtBSWNJZ0FRdWhnZ0FCQzVHQ0FEUVNCcUpBQWdBQXNxQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1RUXhxRU1vT0lRQWdBVUVRYWlRQUlBQUw5UUVCQW44akFFRVFheUlESkFBZ0F5QUFOZ0lNSUFNZ0FUWUNDQ0FESUFJMkFnUUNRQ0FES0FJRUVNTVlRUUZ4QkVBZ0F5QURLQUlFTmdJQUlBTW9BZ3doQVNBREtBSUlJUUlnQXlnQ0FDRUVJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFJQUkyQWdnZ0FDQUVOZ0lFSUFBb0Fnd2hBaUFBS0FJRUlRUWpBRUVRYXlJQkpBQWdBU0FDTmdJTUlBRWdCRFlDQ0NBQktBSUlHZ3dCQ3lBREtBSU1JUUVnQXlnQ0NDRUNJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFJQUkyQWdnZ0FDZ0NEQ0VDSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQXNnQVNnQ0RCQWZJQUZCRUdva0FDQUFRUkJxSkFBZ0EwRVFhaVFBQ3h3QkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTVFielFBUkNXREFBTFV3RUNmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2dBaUFCTmdJSUlBSW9BZ2doQXlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNBRE5nSUlJQUFnQVNnQ0NFRU1haEJDSUFGQkVHb2tBQ0FDUVJCcUpBQUx4Z0VCQTM4akFFRVFheUlFSkFBQ1FBSkFJQUVvQWdRZ0FTMEFDeUlESUFOQkdIUkJHSFZCQUVnYklnVWdBaWdDQkNBQ0xRQUxJZ01nQTBFWWRFRVlkVUVBU0JzaUEwa05BQ0FFSUFFZ0JTQURheUFERU84S0lBUWdBaER5QXlFRElBUVFEeG9nQTBVTkFDQUFJQUZCQUNBQktBSUVJQUV0QUFzaUFDQUFRUmgwUVJoMVFRQklHeUFDS0FJRUlBSXRBQXNpQUNBQVFSaDBRUmgxUVFCSUcyc1E3d29NQVFzZ0FDQUJLUUlBTndJQUlBQWdBU2dDQ0RZQ0NDQUJFRlVMSUFSQkVHb2tBQXRvQVFGL0l3QkJFR3NpQkNRQUlBUWdBellDRENBQUlBUkJDR29nQVJEQkRpRUFJQUlnQVJBN0lnTkxCRUFRM1F3QUN5QUJFSHNoQVNBRUlBTWdBbXMyQWdRZ0FDQUJJQUpxSUFSQkRHb2dCRUVFYWhDSUJTZ0NBQkRaRENBQUVLOERJQVJCRUdva0FBc3JBUUYvSXdCQkVHc2lBaVFBSUFJZ0FTZ0NBRFlDRENBQUtBSUVJQUpCREdvUXp3RWdBa0VRYWlRQUM0c0JBUUovSUFBb0FnQWhBaUFBSUFFMkFnQWdBZ1JBSUFJRVFDQUNRZVFBYWhDSENTQUNRZUFBYWhDRkF4b2dBa0hVQUdvaUFDZ0NBQVJBSUFBb0FnQWhBeUFBS0FJRUlRRURRQ0FCSUFOSEJFQWdBVUVFYXhDNkJpRUJEQUVMQ3lBQUlBTTJBZ1FnQUNnQ0FCQWZDeUFDUVJCcUVKSURHaUFDUVFScUVJY0pJQUlRaFFNYUN5QUNFQjhMQzFnQkFYOENRQ0FBTFFBTVJRUkFJQUFvQWdRaUFVVU5BU0FCSUFBb0FnZzJBZ2dnQUNnQ0NDQUJOZ0lFSUFCQ0FEY0NCQThMUVlhNENVSFZ0UU5CeWdGQmtqQVFBQUFMUVpPd0NVSFZ0UU5CekFGQmtqQVFBQUFMSndBZ0FDZ0NDQ0lBTFFBTVFRRWdBQnNFUUVHZXJ3bEJtcWdEUWFNQ1FaUTZFQUFBQ3lBQUN3d0FJQUFnQUNnQ0FCRHpHQXNRQUNBQUlBSWdBU0FDRUpNRUVHa2FDMThCQTM4Z0FTQUFLQUtJQWtzRVFDQUFLQUtBQWlFQ0lBQWdBUkRrRGlBQUtBS0VBaUVEUVFBaEFRTkFJQUVnQTBZRVFDQUFJQUlRTmdVZ0FVRUNkQ0lFSUFBb0FvQUNhaUFDSUFScUtBSUFOZ0lBSUFGQkFXb2hBUXdCQ3dzTEMvOEZBZ0YvQVgwakFFRXdheUlGSkFBZ0F4RElBeUVESUFVZ0FUWUNDQUpBSUFORkJFQWdBQ0FGUVFocUVJb1pEQUVMQWtBZ0F5Z0NCQ0lEUWVETEVrWUVRQ0FGQW44Q1FBSkFJQVFvQWdRaUF5QURLQUlBS0FJb0VRQUFCRUFnQkNnQ0JDSURJQU1vQWdBb0FpZ1JBQUFvQWhSQklFY05BU0FFSUFRb0FnQW9BamdSQUFBaUF3UkFJQU1RZ3hnTUJBc2dCQ0FFS0FJQUtBSllFUUFBUlEwQ1FRQU1Bd3RCaThnQlFiYVpBa0hUQUVHZy93WVFBQUFMUWZXQUIwRzJtUUpCMUFCQm9QOEdFQUFBQzBIVHNRbEJ0cGtDUWRrQVFhRC9CaEFBQUFzaUF6WUNJQ0FCUVpBRGFoRHNBeUVFSUFOQmdJQ0FnSGhHQkVBZ0JTQUJRU1JxRUxRTE5nSW9JQVZCQURZQ0dDQUZJQUZCSUdvaUFTQUNJQVZCSUdvZ0JVRVlhaEN6Q0RZQ0hDQUZRUkJxSUFRZ0FTQUNJQVZCS0dvZ0JVRWNhaENpQ3hCcEdnd0NDeUFGSUFPc053TW9JQVZCQVRZQ0hDQUZRUkJxSUFRZ0FVRWdhaUFDSUFWQktHb2dCVUVjYWhDQ0NSQnBHZ3dCQ3lBRFFiRExFa1lFUUNBQlFaQURhaER0QXlFRElBVWdCQkNGR0swM0F5Z2dCVUVDTmdJZ0lBVkJFR29nQXlBQlFTQnFJQUlnQlVFb2FpQUZRU0JxRUlJSkVHa2FEQUVMSUFOQnlNc1NSZ1JBSUFVQ2Z5QUVFTHdPSWdaRC8vOS9mMTRFUUNBRlFRQTJBaWhCQWd3QkN5QUdRLy8vZi85ZEJFQWdCVUVCTmdJb1FRSU1BUXNnQlNBR09BSW9RUUVMT2dBc0lBVkJLR29RS3dSQUlBRkJrQU5xRUpZRklRTWdCU0FFRUx3T3V6a0RJQ0FGUVFFMkFod2dCVUVRYWlBRElBRkJJR29nQWlBRlFTQnFJQVZCSEdvUStnb1FhUm9NQWdzZ0FVRUFPZ0NVQXlBQlFhZ0Vha0hGdFF3UUdTRUJJQVVnQkJDOERqZ0NJQ0FCS0FJRUlBVkJJR29RaFFnYUlBVkJFR29RWnhvTUFRc2dBMEdZeXhKR0JFQWdCU0FFSUFRb0FnQW9BbGdSQUFBRWYwRUFCU0FFSUFRb0FnQW9Ba0FSQUFBdEFCUkJBRWNMT2dBb0lBVkJFR29nQVVHUUEyb1FvaG9nQVVFZ2FpQUNJQVZCS0dvUTZoVVFhUm9NQVFzZ0JVRVFhaUFGUVFocUVJb1pDeUFBSUFWQkVHb1FXeG9MSUFWQk1Hb2tBQXNNQUNBQUlBRkI1QVVReFJJTGl3UUJBMzhqQUVIZ0FHc2lCeVFBSUFjZ0F6WUNXQ0FISUFJMkFsd2dCeUFFTmdKVUlBY2dCVFlDVUFKQUlBUkZCRUJCQUNFRUlBQkJBRG9BbEFNZ0FFR29CR3BCNUlvRUVCa2FEQUVMUVFBaEJDQUFJQUVnQjBIVUFHb2dCaUFDUVFSR0JIOGdCMEVBTmdKY1FRQUZJQUlMUVFWSEVOc0lSUTBBSUFCQklHb2lBaEFjSUFCQnlBUnFJQUVRa3dJaUFTZ0NBQ0VESUFjZ0FTZ0NCQ0FCTFFBTElnUWdCRUVZZEVFWWRVRUFTQ0lFR3pZQ0xDQUhJQU1nQVNBRUd6WUNLQ0FISUFjcEF5ZzNBd0FnQjBFd2FpSUlJQUJCcUFKcUlBY1FtQU1nQjBFQU5nSWdJQWRDQURjREdDQUhRZ0EzQXhBZ0J5QUhLQUpVSWdBZ0FpQUFLQUlBS0FJSUVRRUFOZ0lJSXdCQlFHb2lBU1FBSXdCQkVHc2lBeVFBSUFGQkVHb2lBRUlBTndJQUlBQkNBRGNDQ0NBQVFvQ0FnSURBQURjQ0pDQUFJQUJCRUdvaUNUWUNJQ0FBSUFjb0FnZzJBZ0FnQUNBQ0lBY29BbHdRNmhnZ0J5Z0NXQ0VGSXdCQkVHc2lCQ1FBSUFRZ0JUWUNEQ0FGQkVBZ0FDQUNJQVJCREdvUXpRODJBZ2dMSUFSQkVHb2tBQ0FBSUFjb0FsQTJBZ3dnQXlBR1FTQnFOZ0lJSUFNZ0JpZ0NJQ0FHUnpvQURDQUpJQU5CQ0dvUWd3a2dBMEVRYWlRQUlBRWdBaUFJRVBNQ05nSU1JQUlnQjBFUWFpQUJRUXhxSUFBZ0FFRUVhaUFBUVFocUlBQkJER29nQUVFUWFoQ3BDeUVFSUFBUXd3Z2dBVUZBYXlRQUN5QUhRZUFBYWlRQUlBUUxad0VDZnlNQVFSQnJJZ1VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ1EyQWd3Z0JTQUVOZ0lJSUFCQmpBRnFJZ1FnQkJETEJDQUFLQUlJSUFVb0FnZ2dBU0FDS3dNQUlBTW9BZ0FReXcwaUFCQW9JQVFnQkNnQ0dFRUJhallDR0NBRlFSQnFKQUFnQUFzNEFRRi9Jd0JCSUdzaUFpUUFJQUlnQVRZQ0VDQUNRUmhxSUFBZ0FTQUNRUkJxRUlZWklBSW9BaGdoQUNBQ1FTQnFKQUFnQUVFTWFnc3BBUUYvSXdCQkVHc2lBaVFBSUFBZ0FTQUJJQUJyUVFKMUVOZ0tRUUYwRUtJTklBSkJFR29rQUF0Z0FRRi9JQUJDZ0lDQWdJQUJOd0lrSUFBZ0FEWUNJQUpBSUFFdEFBUUVRQ0FBRUNNZ0FDQUJLQUlBSWdJcEFnQTNBaUFnQUNBQ0tBSUlOZ0lvSUFFb0FnQWlBVUVBTmdJSUlBRkNBRGNDQUF3QkN5QUFJQUVvQWdBUXZSa0xJQUFMa2dFQkEzOGpBRUhBQVdzaUFpUUFJQUlnQVRZQ3ZBRWdBVVVFUUNBQ1FRaHFRZE8wQlVIK0FFRUFJQUpCcUFGcUVCMGlBeEFYSWdSQkdHcEJ1ZElJRUE0YUlBUVFHQ0FERUI0TElBRVFWeUFBS0FJSVFRRkJBRUdOendoQjA3UUZRZjhBRUVzZ0FFSDhBbW9nQWtHOEFXb1FKQ0FDSUFJb0Fyd0JOZ0lJSUFCQkpHb2dBa0VJYWhDVUF5QUNRY0FCYWlRQUMwNEJBWDhqQUVFUWF5SURKQUFDUUFKQUlBRW9BclFGSWdGRkRRQWdBU0FDRUpRQklnRkZEUUFnQUNBQkVGZ01BUXNnQXlBQ0VGOGdBRUdMdlFvZ0F4QTFJQU1RRHhvTElBTkJFR29rQUFzMEFRRi9JQUJCQURZQ0NDQUFRZ0EzQWdBZ0FTQUNSd1JBSUFBZ0FpQUJhMEVDZFNJREVNOEZJQUFnQVNBQ0VQY09DeUFBQzVNQkFRTi9Jd0JCd0FGcklnSWtBQ0FDSUFFMkFyd0JJQUZGQkVBZ0FrRUlha0hUdEFWQjZRQkJBQ0FDUWFnQmFoQWRJZ01RRnlJRVFSaHFRY1d2Q0JBT0dpQUVFQmdnQXhBZUN5QUJFRmNnQUNnQ0NFRUJRUUJCMnNjSVFkTzBCVUhxQUJCTElBQkJxQU5xSUFKQnZBRnFFTE1aSUFJZ0FpZ0N2QUUyQWdnZ0FFRWthaUFDUVFocUVKUURJQUpCd0FGcUpBQUxTQUVDZnlNQVFTQnJJZ0lrQUNBQUtBSUlJUU1nQWtFQU5nSVlJQUpDQURjREVDQUNRZ0EzQXdnZ0F5QUNRUWhxSUFFUTJnY2hBU0FBS0FJRUlBRTJBaWdnQWtFZ2FpUUFDeTRCQVg4akFFRVFheUlESkFBZ0F5QUNLQUlBTmdJTUlBQWdBU0FEUVF4cUVQc1lJUUFnQTBFUWFpUUFJQUFMU0FFQ2Z5TUFRUkJySWdVa0FDQUZJQUJCQkdvaUJpQUdLQUlBUWRnQ2FoRGhHallDQ0NBQUlBQkIyQUpxSUFWQkNHb2dBU0FDSUFNZ0JCQ2xHU0VBSUFWQkVHb2tBQ0FBQzBrQkFYOGpBRUVRYXlJREpBQWdBMEVRTmdJTUlBTWdBQ0FCRU5vRU5nSUlJQU1nQWlnQ0FEWUNCQ0FBSUFOQkRHb2dBMEVJYWlBRFFRUnFFSVlMSVFBZ0EwRVFhaVFBSUFBTFVRRUNmeU1BUVJCcklnUWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnVTJBZ3dnQkNBRk5nSUlJQUJCakFGcUlBQkJDR29nQkVFSWFpQUFRZGdDYWlBQklBSWdBeEMyR1NFQUlBUkJFR29rQUNBQUN6OEJBWDhqQUVFUWF5SUVKQUFnQkNBQ0tBSUFOZ0lNSUFRZ0FDQURFT2NGTmdJSUlBQWdBU0FFUVF4cUlBUkJDR29RL2dnaEFDQUVRUkJxSkFBZ0FBdXJBUUVDZnlNQVFUQnJJZ01rQUFKQUFrQUNRQ0FDS0FJQUlnUkZEUUFnQWlnQ0JFVU5BQ0FFS0FJRVFiRExFa2NOQVFzZ0FDQUNFRnNhREFFTElBRW9BZ1FRN1FNaEJDQURJQUVvQWdnaUFVRUVhaERURHpZQ0tDQUNLQUlFSVFJZ0EwRUJOZ0lVSUFNZ0FqWUNEQ0FESUFOQkRHbzJBaEFnQXlBREtRTVFOd01BSUFBZ0JDQUJJQU5CS0dvZ0EwRVlhaUFERUpjQ0lnQVFpd3NRYVJvZ0FCQ29BUXNnQTBFd2FpUUFDemtCQVg4akFFRVFheUlESkFBZ0F5QUFJQUVvQWdBUWdRTTJBZ3dnQUNBQVFkZ0NhaUFEUVF4cUlBSVFsUVFoQUNBRFFSQnFKQUFnQUFzT0FDQUFLQUlJSUFFZ0FoRE9BZ3VsQVFFRWZ5TUFRUkJySWdRa0FDQUVJQUVvQWdBMkFnd2pBRUVnYXlJQkpBQWdBU0FFS0FJTU5nSWNJQUFnQUVIWUFtb2hCaUFCUVJ4cUlRVWpBRUVRYXlJQUpBQWdBVUVJYWlJRFFvQ0FnSUFRTndJSUlBTWdBellDQkNBQUlBSkJCR28yQWdnZ0FDQUNLQUlFSUFKSE9nQU1JQU1nQUVFSWFoRDRIaUFBUVJCcUpBQWdCaUFGSUFNaUFCQ3lEeUVDSUFBUXFBRWdBVUVnYWlRQUlBUkJFR29rQUNBQ0MyWUJCSDhqQUVFd2F5SURKQUFDUUNBQUlBRVFqUXNpQWtVRVFFRUFJUUFNQVFzZ0EwRWdhaUFBS0FJZ0lBSVFZQkNUQWhCVUlRSWdBQ2dDQ0NFRUlBTkJDR29pQlNBQUlBRVE0d2dnQkNBRklBSVE1QVVoQUNBQ0VBOGFDeUFEUVRCcUpBQWdBQXVXQVFFQ2Z5TUFRUkJySWdJa0FBSkFJQUVReUFGRkJFQWdBQ2dDSENJQUtBSUFRUUE2QUFBZ0FFSEMvQXNRR1NFQUlBSWdBUkJZSUFBZ0FoQk5HaUFDRUE4YURBRUxJQUZCQUJBNElRTWdBQ2dDQUNBRFFRRVF2Z1lpQXcwQUlBQW9BaHdpQUNnQ0FFRUFPZ0FBSUFCQnJ2QUpFQmtoQUNBQ0lBRVFXQ0FBSUFJUVRSb2dBaEFQR2tFQUlRTUxJQUpCRUdva0FDQURDNFlCQVFGL1FSQWhBUUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkJ5UUZyRGc4QUFRRUNEZzBEQkFVR0J3Z0pDZ3NNQzBFc0R3dEJJUThMUWNFQUR3dEJHUThMUVJ3UEMwRXBEd3RCR3c4TFFSNFBDMEVyRHd0QkdnOExRUjBQQzBFcUR3c2dBRUdVQVVZTkFndEJmeUVCQ3lBQkR3dEJGZ3U1QkFFSWZ5TUFRVEJySWdVa0FBSkFJQUlvQWdCRkRRQWdBaWdDQkVVTkFFRUJJUU1nQUNBQkVHQVFsQUlvQWpSQkFrWU5BQ0FGUVJCcUlnTWdBQ0FGUVNocUlBSVFXeUFCRUkwUElBSWdBeEJiR2lBQ0lBQWdBaWdDQUNBQkVHQVFqQTgyQWdBZ0FDZ0NBQ0VFSUFFUVlDRUdJQUlvQWdBaEJ5QUNLQUlFSVFrakFFSFFBR3NpQXlRQUlBTWdDVFlDVENBRVFTQnFJZ2tRSENBRVFjZ0VhaUFHRUpNQ0lnWW9BZ0FoQ2lBRElBWW9BZ1FnQmkwQUN5SUlJQWhCR0hSQkdIVkJBRWdpQ0JzMkFpd2dBeUFLSUFZZ0NCczJBaWdnQXlBREtRTW9Od01BSUFOQk1Hb2lDaUFFUWFnQ2FpQURFSmdESUFOQkFEWUNJQ0FEUWdBM0F4Z2dBMElBTndNUUlBTWdCeUFKSUFjb0FnQW9BZ2dSQVFBMkFnZ2pBRUV3YXlJR0pBQWpBRUVRYXlJSEpBQWdCa0VJYWlJRVFnQTNBZ0FnQkVLQWdJQ0F3QUEzQWh3Z0JDQUVRUWhxSWdnMkFoZ2dCQ0FES0FJSU5nSUFJQVFnQXlnQ1REWUNCQ0FIUVFBNkFBd2dCMEhBbkNBMkFnZ2dDQ0FIUVFocUVJTUpJQWRCRUdva0FDQUdJQWtnQ2hEekFqWUNCQ0FKSUFOQkVHb2dCa0VFYWlBRUlBUkJCR29nQ0JEMERTRUhJQVFRdkFjZ0JrRXdhaVFBSUFjaEJDQURRZEFBYWlRQUlBVWdCRFlDSkNBRVJRUkFRUUFoQXd3QkN5QUZRUUEyQWlBZ0JVSUFOd01ZSUFWQ0FEY0RFQ0FBSUFBZ0JVRVFhaUlESUFWQkpHb1FrZ3NReVFFYUlBVWdBUkJnTmdJTUlBTWdBRUhBQm1vZ0JVRU1haUFDRU80SUlBQW9BaHdvQWdBdEFBQkJBRWNoQXdzZ0JVRXdhaVFBSUFNTERRQWdBRUc0NkE4MkFnQWdBQXNNQUNBQUtBSUlJQUVRdXhFTFVBRUNmeUFBS0FJSUlRQWpBRUVRYXlJREpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRU5nSU1JQU1nQkRZQ0NDQUFRWXdCYWlBQVFRaHFJQU5CQ0dvZ0FTQUNFTEVYSVFBZ0EwRVFhaVFBSUFBTEhBQWdBQ2dDQUNBQklBSVFPQkNVQWlJQUJFQWdBRUVCT2dBZ0N3dkRBUUVDZnlNQVFjQUJheUlESkFBZ0F5QUNOZ0s4QVNBRElBRTJBckFCSUFNZ0EwRzhBV29pQWpZQ3RBRUNRQ0FCUVlnSGFpQUNFT3dCSWdJRVFDQUNLQUlNSWdFb0FnUWlBaWdDRkVFN1JnUkFJQUFnQTBHd0FXb2dBaERIR1F3Q0N5QUFJQUVwQWl3M0FnQU1BUXNnQVNnQ0VDQURLQUs4QVJDVUFTSUJSUVJBSUFOQnVhRUZRWmdtUVFjZ0EwR2dBV29RSFNJQ0VCY2lCRUVZYWtIM213Z1FEaG9nQkJBWUlBSVFIZ3NnQUNBRFFiQUJhaUFCRU1jWkN5QURRY0FCYWlRQUN3a0FJQUJCQUJDUER3dVFCUUlKZndKOUl3QkJJR3NpQnlRQUlBY2dBVFlDRUNBSFFSQnFJUWdqQUVFUWF5SUZKQUFnQVNnQ0FDRUJJQWNDZndKQUlBQW9BZ1FpQWtVTkFDQUFLQUlBQW44Z0FrRUJheUFCY1NBQ2FTSUdRUUZORFFBYUlBRWdBU0FDU1EwQUdpQUJJQUp3Q3lJRFFRSjBhaWdDQUNJRVJRMEFJQUpCQVdzaENTQUdRUUZMSVFvRFFDQUVLQUlBSWdSRkRRRWdBU0FFS0FJRUlnWkhCRUFDUUNBS1JRUkFJQVlnQ1hFaEJnd0JDeUFDSUFaTERRQWdCaUFDY0NFR0N5QURJQVpIRFFJTElBUW9BZ2dnQVVjTkFBdEJBQXdCQ3lBRklBQWdBU0FJRU9JSUFrQkJBQ0FDSUFBb0FneEJBV3F6SWdzZ0FDb0NFQ0lNSUFLemxGNGJEUUFnQUNBQ0lBSkJBV3R4UVFCSElBSkJBMGx5SUFKQkFYUnlJZ01DZnlBTElBeVZqU0lMUXdBQWdFOWRJQXREQUFBQUFHQnhCRUFnQzZrTUFRdEJBQXNpQWlBQ0lBTkpHeEREQVNBQUtBSUVJZ0lnQWtFQmEzRkZCRUFnQWtFQmF5QUJjU0VEREFFTElBRWdBa2tFUUNBQklRTU1BUXNnQVNBQ2NDRURDd0pBSUFOQkFuUWlBeUFBS0FJQWFpZ0NBQ0lCUlFSQUlBVW9BZ0FnQUNnQ0NEWUNBQ0FBSUFVb0FnQTJBZ2dnQUNnQ0FDQURhaUFBUVFocU5nSUFJQVVvQWdBaUFTZ0NBQ0lEUlEwQklBTW9BZ1FoQkFKQUlBSWdBa0VCYXlJRGNVVUVRQ0FESUFSeElRUU1BUXNnQWlBRVN3MEFJQVFnQW5BaEJBc2dBQ2dDQUNBRVFRSjBhaUFCTmdJQURBRUxJQVVvQWdBZ0FTZ0NBRFlDQUNBQklBVW9BZ0EyQWdBTElBVW9BZ0FoQkNBRlFRQTJBZ0FnQUNBQUtBSU1RUUZxTmdJTUlBVW9BZ0FoQUNBRlFRQTJBZ0FnQUFSQUlBVXRBQWdFUUNBQVFReHFFSlVMQ3lBQUJFQWdBQkFmQ3d0QkFRczZBQndnQnlBRU5nSVlJQVZCRUdva0FDQUhLQUlZSVFBZ0IwRWdhaVFBSUFCQkRHb0xrUVVDQ1g4Q2ZTTUFRUkJySWdra0FDTUFRUkJySWdZa0FDQUNFTTRHSVFVZ0NRSi9Ba0FnQVNnQ0JDSURSUTBBSUFFb0FnQUNmeUFEUVFGcklBVnhJQU5wSWdoQkFVME5BQm9nQlNBRElBVkxEUUFhSUFVZ0EzQUxJZ2RCQW5ScUtBSUFJZ1JGRFFBZ0EwRUJheUVLSUFoQkFVc2hDd05BSUFRb0FnQWlCRVVOQVNBRklBUW9BZ1FpQ0VjRVFBSkFJQXRGQkVBZ0NDQUtjU0VJREFFTElBTWdDRXNOQUNBSUlBTndJUWdMSUFjZ0NFY05BZ3NnQkVFSWFpQUNFUElEUlEwQUMwRUFEQUVMUVJRUUZTRUVJQVlnQVVFSWFqWUNCQ0FHSUFRMkFnQWdCRUVJYWlBQ0VGUWFJQVpCQVRvQUNDQUVRUUEyQWdBZ0JDQUZOZ0lFQWtCQkFDQURJQUVvQWd4QkFXcXpJZ3dnQVNvQ0VDSU5JQU96bEY0YkRRQWdBU0FESUFOQkFXdHhRUUJISUFOQkEwbHlJQU5CQVhSeUlnSUNmeUFNSUEyVmpTSU1Rd0FBZ0U5ZElBeERBQUFBQUdCeEJFQWdES2tNQVF0QkFBc2lCeUFDSUFkTEd4Q2NEeUFCS0FJRUlnTWdBMEVCYTNGRkJFQWdBMEVCYXlBRmNTRUhEQUVMSUFNZ0JVc0VRQ0FGSVFjTUFRc2dCU0FEY0NFSEN3SkFJQWRCQW5RaUJTQUJLQUlBYWlnQ0FDSUNSUVJBSUFZb0FnQWdBU2dDQ0RZQ0FDQUJJQVlvQWdBMkFnZ2dBU2dDQUNBRmFpQUJRUWhxTmdJQUlBWW9BZ0FpQWlnQ0FDSUZSUTBCSUFVb0FnUWhCQUpBSUFNZ0EwRUJheUlGY1VVRVFDQUVJQVZ4SVFRTUFRc2dBeUFFU3cwQUlBUWdBM0FoQkFzZ0FTZ0NBQ0FFUVFKMGFpQUNOZ0lBREFFTElBWW9BZ0FnQWlnQ0FEWUNBQ0FDSUFZb0FnQTJBZ0FMSUFZb0FnQWhCQ0FHUVFBMkFnQWdBU0FCS0FJTVFRRnFOZ0lNSUFZUW13OUJBUXM2QUF3Z0NTQUVOZ0lJSUFaQkVHb2tBQ0FBSUFrb0FnZzJBZ0FnQUNBSkxRQU1PZ0FFSUFsQkVHb2tBQXZEQlFJSWZ3SjlJd0JCSUdzaUJ5UUFJQWNnQVRZQ0VDTUFRUkJySWdRa0FDQUJLQUlBSVFFZ0J3Si9Ba0FnQUNnQ0JDSUNSUTBBSUFBb0FnQUNmeUFDUVFGcklBRnhJQUpwSWdaQkFVME5BQm9nQVNBQklBSkpEUUFhSUFFZ0FuQUxJZ1ZCQW5ScUtBSUFJZ05GRFFBZ0FrRUJheUVJSUFaQkFVc2hDUU5BSUFNb0FnQWlBMFVOQVNBQklBTW9BZ1FpQmtjRVFBSkFJQWxGQkVBZ0JpQUljU0VHREFFTElBSWdCa3NOQUNBR0lBSndJUVlMSUFVZ0JrY05BZ3NnQXlnQ0NDQUJSdzBBQzBFQURBRUxRUmdRRlNFRElBUWdBRUVJYWpZQ0JDQUVJQU0yQWdBZ0EwRUlhaUlHSUFjb0FoQW9BZ0EyQWdBZ0JrRUVhaEJWSUFSQkFUb0FDQ0FEUVFBMkFnQWdBeUFCTmdJRUFrQkJBQ0FDSUFBb0FneEJBV3F6SWdvZ0FDb0NFQ0lMSUFLemxGNGJEUUFnQUNBQ0lBSkJBV3R4UVFCSElBSkJBMGx5SUFKQkFYUnlJZ1VDZnlBS0lBdVZqU0lLUXdBQWdFOWRJQXBEQUFBQUFHQnhCRUFnQ3FrTUFRdEJBQXNpQWlBQ0lBVkpHeEREQVNBQUtBSUVJZ0lnQWtFQmEzRkZCRUFnQWtFQmF5QUJjU0VGREFFTElBRWdBa2tFUUNBQklRVU1BUXNnQVNBQ2NDRUZDd0pBSUFWQkFuUWlCU0FBS0FJQWFpZ0NBQ0lCUlFSQUlBUW9BZ0FnQUNnQ0NEWUNBQ0FBSUFRb0FnQTJBZ2dnQUNnQ0FDQUZhaUFBUVFocU5nSUFJQVFvQWdBaUFTZ0NBQ0lGUlEwQklBVW9BZ1FoQXdKQUlBSWdBa0VCYXlJRmNVVUVRQ0FESUFWeElRTU1BUXNnQWlBRFN3MEFJQU1nQW5BaEF3c2dBQ2dDQUNBRFFRSjBhaUFCTmdJQURBRUxJQVFvQWdBZ0FTZ0NBRFlDQUNBQklBUW9BZ0EyQWdBTElBUW9BZ0FoQXlBRVFRQTJBZ0FnQUNBQUtBSU1RUUZxTmdJTUlBUW9BZ0FoQUNBRVFRQTJBZ0FnQUFSQUlBUXRBQWdFUUNBQVFReHFFQThhQ3lBQUJFQWdBQkFmQ3d0QkFRczZBQndnQnlBRE5nSVlJQVJCRUdva0FDQUhLQUlZSVFBZ0IwRWdhaVFBSUFCQkRHb0xDUUFnQUVFTUVNd1NDd2tBSUFCQkNCRE1FZ3ViQ3dJTmZ3SjlJd0JCTUdzaUJ5UUFJQWNnQWpZQ0NDQUhJQUUyQWd3Z0J5QUROZ0lFSUFBb0FnQWhCU0FIUVJCcUlBRWdBaUFERUxrYUlBZEJHR29nQjBFY2FpQUhRU0JxRUw4SElRWWdCVUg4QUdvaENRSkFBa0FnQlNnQ2dBRWlBMFVOQUNBSktBSUFBbjhnQTBFQmF5QUdjU0FEYVNJQlFRRk5EUUFhSUFZZ0F5QUdTdzBBR2lBR0lBTndDeUlBUVFKMGFpZ0NBQ0lDUlEwQUlBTkJBV3NoQ0NBSEtBSWdJUVFnQnlnQ0hDRUtJQWNvQWhnaERDQUJRUUZMSVEwRFFDQUNLQUlBSWdKRkRRRWdCaUFDS0FJRUlnRkhCRUFDUUNBTlJRUkFJQUVnQ0hFaEFRd0JDeUFCSUFOSkRRQWdBU0FEY0NFQkN5QUFJQUZHRFFFTUFnc2dBaWtDQ0VJZ2lLY2lDeWdDQ0NBTVJ3MEFJQXNvQWd3Z0NrY05BQ0FMS0FJUUlBUkhEUUFMREFFTElBVkI0QUJxSWdFUXFnTWlBaUFIS0FJTUlBY29BZ2dnQnlnQ0JCQzVHaUFCSUFJUUtDQUJJQUVvQWhoQkFXbzJBaGdnQWlFTEFrQWdCU2dDZ0FFaUEwVU5BQ0FKS0FJQUFuOGdBMEVCYXlBR2NTQURhU0lCUVFGTkRRQWFJQVlnQXlBR1N3MEFHaUFHSUFOd0N5SUFRUUowYWlnQ0FDSUNSUTBBSUFOQkFXc2hDQ0FCUVFGTElRUURRQ0FDS0FJQUlnSkZEUUVnQmlBQ0tBSUVJZ0ZIQkVBQ1FDQUVSUVJBSUFFZ0NIRWhBUXdCQ3lBQklBTkpEUUFnQVNBRGNDRUJDeUFBSUFGSERRSUxJQUlvQWd3Z0N4RG1CVVVOQUFzTUFRdEJFQkFWSWdvZ0JqWUNCQ0FLSUFhdElBdXRRaUNHaERjQ0NDQUtRUUEyQWdBZ0JVR0VBV29oREFKQVFRQWdBeUFGS0FLSUFVRUJhck1pRVNBRktnS01BU0lTSUFPemxGNGJEUUFDUUFKQUFuOUJBaUFESUFOQkFXdHhRUUJISUFOQkEwbHlJQU5CQVhSeUlnQUNmeUFSSUJLVmpTSVJRd0FBZ0U5ZElCRkRBQUFBQUdCeEJFQWdFYWtNQVF0QkFBc2lBU0FBSUFGTEd5SUFRUUZHRFFBYUlBQWdBQ0FBUVFGcmNVVU5BQm9nQUJCL0N5SUVJQVVvQW9BQklnQk5CRUFnQUNBRVRRMENJQUJCQTBraEFnSi9JQVVvQW9nQnN5QUZLZ0tNQVpXTkloRkRBQUNBVDEwZ0VVTUFBQUFBWUhFRVFDQVJxUXdCQzBFQUN5RUJJQUFnQkNBQ0lBQnBRUUZMY2dSL0lBRVFmd1VnQVVFQlFTQWdBVUVCYTJkcmRDQUJRUUpKR3dzaUFDQUFJQVJKR3lJRVRRMENJQVJGRFFFTElBUkJnSUNBZ0FSSkJFQWdDU0FFUVFKMEVCVVFiQ0FGSUFRMkFvQUJRUUFoQWdOQUlBSWdCRVlFUUNBRktBS0VBU0lEUlEwRUlBTW9BZ1FoQ0FKQUlBUnBJZ0JCQVUwRVFDQUlJQVJCQVd0eElRZ01BUXNnQkNBSVN3MEFJQWdnQkhBaENBc2dDU2dDQUNBSVFRSjBhaUFNTmdJQUlBUkJBV3NoRHlBQVFRRkxJUkFEUUNBREtBSUFJZ0JGRFFVZ0FDZ0NCQ0VCQWtBZ0VFVUVRQ0FCSUE5eElRRU1BUXNnQVNBRVNRMEFJQUVnQkhBaEFRc0NRQ0FCSUFoR0RRQWdBQ0VDSUFGQkFuUWlEU0FKS0FJQWFpSU9LQUlBUlFSQUlBNGdBellDQUNBQklRZ01BUXNEUUFKQUlBSWlBU2dDQUNJQ1JRUkFRUUFoQWd3QkN5QUFLQUlNSUFJb0Fnd1E1Z1VoRGlBQktBSUFJUUlnRGcwQkN3c2dBeUFDTmdJQUlBRWdDU2dDQUNBTmFpZ0NBQ2dDQURZQ0FDQUpLQUlBSUExcUtBSUFJQUEyQWdBTUFRc2dBQ0VEREFBTEFBVWdDU2dDQUNBQ1FRSjBha0VBTmdJQUlBSkJBV29oQWd3QkN3QUxBQXNRK3dFQUN5QUpRUUFRYkNBRlFRQTJBb0FCQ3lBRktBS0FBU0lESUFOQkFXc2lBSEZGQkVBZ0FDQUdjU0VBREFFTElBTWdCa3NFUUNBR0lRQU1BUXNnQmlBRGNDRUFDd0pBQWtBZ0NTZ0NBQ0FBUVFKMGFpSUFLQUlBSWdKRkJFQWdDaUFGS0FLRUFUWUNBQ0FGSUFvMkFvUUJJQUFnRERZQ0FDQUtLQUlBSWdCRkRRSWdBQ2dDQkNFQ0FrQWdBeUFEUVFGcklnQnhSUVJBSUFBZ0FuRWhBZ3dCQ3lBQ0lBTkpEUUFnQWlBRGNDRUNDeUFKS0FJQUlBSkJBblJxSVFJTUFRc2dDaUFDS0FJQU5nSUFDeUFDSUFvMkFnQUxJQVVnQlNnQ2lBRkJBV28yQW9nQkN5QUhRVEJxSkFBZ0N3dFdBUUovSUFBb0FnQWlBU2dDSENJQ0JIOGdBZ1VnQVJEMkNDSUNRYmpSRWpZQ0FDQUNRWURMRWpZQ0JDQUJJQUlRS0NBQklBRW9BaGhCQVdvMkFoZ2dBaUVCSUFBb0FnQWdBVFlDSENBQUtBSUFLQUljQ3dzUEFDQUFRU1JxRURJYUlBQVErUWdMUFFFQ2Z5QUFLQUlFSVFJRFFDQUNJQUFvQWdnaUFVY0VRQ0FBSUFGQkJHc2lBVFlDQ0NBQkVJVURHZ3dCQ3dzZ0FDZ0NBQ0lBQkVBZ0FCQWZDd3Q5QVFKL0l3QkJFR3NpQXlRQUlBTWdBVFlDRENNQVFSQnJJZ0VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0kyQWd3Z0FTQUNOZ0lJSUFCQmpBRnFJZ0lnQWhDL0FTQUFLQUlJSUFFb0FnZ2dBRUhZQW1vZ0F5Z0NEQkNhSHlJQUVDZ2dBaUFDS0FJWVFRRnFOZ0lZSUFGQkVHb2tBQ0FEUVJCcUpBQWdBQXM5QVFGL0l3QkJFR3NpQWlRQUlBQWdBVWNFUUNBQ0lBRkJJR28yQWdnZ0FpQUJLQUlnSUFGSE9nQU1JQUFnQWtFSWFoQ1FFUXNnQWtFUWFpUUFDeWdBSUFBb0FnQkJrckdvK2dkcVFaT2tCbk1pQUVFQ2RrR1crS242QjNNZ0FSRDVBbW9nQUhNTFFRRUJmeU1BUVNCcklnUWtBQ0FFSUFJb0FnQTJBaHdnQkVFSWFpSUNJQU1RNEFjZ0FDQUJJQVJCSEdvZ0FoQ3lEeUVBSUFJUXFBRWdCRUVnYWlRQUlBQUxld0VGZnlNQVFSQnJJZ0VrQUFKQUlBQW9BZ0FpQWlnQ3NBSWlBeUFBS0FJTVJnUkFJQUFvQWdnaEFBd0JDeUFCUVFocUlBSWdBRUVFYWhEZEdpQUNLQUtnQWlFQ0lBRXRBQWdoQkNBQktBSU1JUVVnQUNBRE5nSU1JQUFnQWlBRlFSaHNha0VFYWtFQUlBUWJJZ0EyQWdnTElBRkJFR29rQUNBQUMwOEJBbjhqQUVFUWF5SURKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUVOZ0lNSUFNZ0JEWUNDQ0FBUVl3QmFpQUFRUWhxSUFOQkNHb2dBRUhZQW1vZ0FTQUNFTndhSVFBZ0EwRVFhaVFBSUFBTHRBRUJBbjhnQUNnQ0FDSUVJUVVqQUVIUUFHc2lBQ1FBSUFCQlFHc2dBeERnQndKL0lBQW9Ba2hGQkVBZ0FDQUNOZ0lZSUFBZ0FoRGNBVFlDSENBQUlBQXBBeGczQXdBZ0FFRWdhaUlDSUFRZ0FCRGhBU0FFSUFFZ0FoRE9BZ3dCQ3lBQUlBSTJBaEFnQUNBQ0VOd0JOZ0lVSUFBZ0FDa0RFRGNEQ0NBQVFTQnFJZ0lnQkNBQVFRaHFFT0VCSUFRZ0FTQUNJQUJCUUdzUXN3c0xJUUVnQUVGQWF4Q29BU0FBUWRBQWFpUUFJQVVnQVJDQkF3c2JBQ0FBSUFFb0FnQTJBZ0FnQUVFSWFpQUJRUWhxRUw4TElBQUxjQUVDZnlNQVFUQnJJZ01rQUNBRFFvQ0FnSURBQURjQ0pDQURJQU5CRUdvaUJEWUNJQ0FEUVFBMkFnZ2dBeUFDS0FJQU5nSU1JQU1nQUNBQkVQTUNOZ0lFSUFBZ0FFSFlBbW9nQTBFRWFpQURRUWhxSWdBZ0FFRUVjaUFFRVBRTklRRWdBQkM4QnlBRFFUQnFKQUFnQVF0ckFRRi9BMEFDUUNBQVJTQUFLQUlFSWdKQndQOFJSM0pGQkVBZ0FDZ0NKQ0FCRUtnTElBQW9BaWdROGhvTkFTQUJJQUFvQWlnUThSb01BUXNnQUVVZ0FrSEFnQkpIY2dSL0lBQkZJQUpCZ0lFU1IzSU5BU0FBUVNocUJTQUFRU1JxQ3lnQ0FDRUFEQUVMQ3d2Q0FRRUZmeU1BUVJCcklna2tBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnZzJBZ3dnQ1NBSU5nSUlJd0JCRUdzaUNDUUFJQUJCakFGcUlnb1FoeDhoQ3lBR0tBSUFJUVlnQlNnQ0FDRUZJQVFvQWdBaEJDQURLQUlBSVFNZ0FpZ0NBQ0VDSUFrb0FnZ2hEQ0FBS0FJSUlRQWdDQ0FIUVJCcU5nSUlJQWdnQnlnQ0VDQUhSem9BRENBS0lBc2dBQ0FNSUFFZ0FpQURJQVFnQlNBR0lBaEJDR29RaUI4aUFCQW9JQW9nQ2lnQ0dFRUJhallDR0NBSVFSQnFKQUFnQ1VFUWFpUUFJQUFMV1FFQ2Z5QUJJQUFvQW9nQ1N3UkFJQUFvQW9BQ0lRSWdBQ0FCRU8wTFFRQWhBUU5BSUFBb0FvUUNJQUZOQkVBZ0FDQUNFRFlGSUFGQkJYUWlBeUFBS0FLQUFtb2dBaUFEYWhDRkNSb2dBVUVCYWlFQkRBRUxDd3NMZUFFRmZ5QUFLQUtVQkNJRlFRRnJJUVlDUUFOQUlBTWdCVVlOQVNBQUtBS1FCQ0FCUVN4c2FpSUVMUUFnQkVBZ0FpQUNLQUlvSWdjZ0JDZ0NLRXNFZnlBRUlBSVFoQWtnQWlnQ0tBVWdCd3RCQVdvMkFpZ2dBVUVCYWtFQUlBRWdCa2NiSVFFZ0EwRUJhaUVEREFFTEN5QUVJQUlRdnc4TEN4SUFJQUFnQVJDRkNTSUFRUUU2QUNBZ0FBc09BQ0FBRUpFTUlBQWdBUkN2Q3dzTUFDQUFFT29GSUFBUXVBc0xEZ0FnQUNBQkVJVUpRUUU2QUNBTEpRQWdBQkR2Q3lBQVFRd1FoZ2tnQUVFQU5nS2NCQ0FBSUFBb0FxQUVRUUZxTmdLZ0JBdENBUUYvSUFFb0FnQWhBaU1BUVJCcklnRWtBQ0FCSUFJMkFnZ2dBVUVDTmdJRUlBQWdBRUhZQW1vZ0FVRUlhaUFCUVFScUVJTWJJUUFnQVVFUWFpUUFJQUFMcVFNQkIzOGdBQ2dDQUNJR0lRc2pBRUhnQUdzaUFDUUFJd0JCSUdzaUJ5UUFJd0JCRUdzaUNDUUFJd0JCSUdzaUNTUUFJd0JCSUdzaUJTUUFJQVZCQ0dvaUNpQURFUE1RSUFVZ0JTZ0NEQ0FGTFFBVElnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQ0hDQUZJQVVvQWdnZ0NpQURHellDR0NBRklBVXBBeGczQXdBZ0NTQUdJQVVRNFFFZ0NoQVBHaUFGUVNCcUpBQWdCaUFHUWRnQ2FpQUpFTTRDSVFNZ0NVRWdhaVFBSUFnZ0F6WUNEQ0FHSUFOQkVHb2dDRUVNYWhDekF5RURJQWhCRUdva0FDQUhJQU0yQWhBZ0JpQUVFTTBQSVFNZ0IwRUNOZ0ljSUFjZ0F6WUNGQ0FISUFkQkVHbzJBaGdnQnlBSEtRTVlOd01JSUFCQnlBQnFJQWRCQ0dvUXRRSWFJQWRCSUdva0FBSi9JQUFvQWxSRkJFQWdBQ0FDTmdJZ0lBQWdBaERjQVRZQ0pDQUFJQUFwQXlBM0F3Z2dBRUVvYWlJQ0lBWWdBRUVJYWhEaEFTQUdJQUVnQWhET0Fnd0JDeUFBSUFJMkFoZ2dBQ0FDRU53Qk5nSWNJQUFnQUNrREdEY0RFQ0FBUVNocUlnSWdCaUFBUVJCcUVPRUJJQVlnQVNBQ0lBQkJ5QUJxRUpFYkN5RUJJQUJCeUFCcUVLb0JJQUJCNEFCcUpBQWdDeUFCRUlFREM2MEJBUVovSXdCQkVHc2lCU1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lCRFlDRENBRklBUTJBZ2dqQUVFUWF5SUVKQUFnQUVHTUFXb2lCaEN6QlNFSElBVW9BZ2doQ0NBQUtBSUlJUUFnQkNBRFFRUnFOZ0lJSUFNb0FnUWhDU0FFUVFBNkFBUWdCRUhBbkNBMkFnQWdCQ0FESUFsSE9nQU1JQVlnQnlBQUlBZ2dBU0FDSUFSQkNHb2dCQkRCQnlJQUVDZ2dCaUFHS0FJWVFRRnFOZ0lZSUFSQkVHb2tBQ0FGUVJCcUpBQWdBQXNMQUNBQVFicjlCaERLQmdzUEFDQUFJQUZCbUxZU1FRa1FqQWdMRHdBZ0FDQUJRWWkyRWtFREVJd0lDM3dCQm44Q1FDQUFLQUlBSWdFb0FnUWlCVVVOQUNBQktBSUFLQUlBSVFGQkFTRUNBMEFnQWlBRlJnUkFJQUVoQkF3Q0N3SkFJQUFvQWdBb0FnQWdBa0VDZEdvb0FnQWlBeUFCUmcwQUlBTWdBUkNLQ1VGL1J3MEFJQUVnQXhDS0NTRUdJQU1oQVNBR1FYOUdEUUlMSUFKQkFXb2hBZ3dBQ3dBTElBUUxFZ0FnQUVFQU5nSmtJQUFnQUNnQ1lCQTJDdzBBSUFCQmxMRVNOZ0lBSUFBTHl3RUJBWDhqQUVFUWF5SUZKQUFnQlNBQ05nSUlJQVVnQVRZQ0RDQUZJQU0yQWdRZ0JVSG9yeElRc3dSQmtyR28rZ2RxUVpPa0JuTWlBVUVDZGtHVytLbjZCM01nQlNnQ0RHb2dBWE1pQVVFQ2RrR1crS242QjNNZ0JTZ0NDR29nQVhNaUFVRUNka0dXK0tuNkIzTWdCU2dDQkdvZ0FYTTJBZ0FnQUNBRktBSUFJQVVvQWd3UWl3a2lBRUhZcnhJMkFnUWdBRUdjc0JJMkFnQWdBRUg0cnhJMkFnQWdBQ0FGS0FJSU5nSWNJQVVvQWdRaEFTQUFJQVEyQWlRZ0FDQUJOZ0lnSUFWQkVHb2tBQ0FBQzJrQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBSkJpSzhTSUFKQkRHb1F4Z3MyQWdnZ0FrSUFOd01BSUFBZ0FpZ0NDQ0FDS1FNQUVKMEVJZ0JCK0s0U05nSUVJQUJCdks4U05nSUFJQUJCbUs4U05nSUFJQUFnQWlnQ0REWUNHQ0FDUVJCcUpBQWdBQXNmQUNBQUlBRWdBa0hrc2dWQnVLNFNRZHl1RWtHWXJoSkJxSzRTRU5nU0N5VUFJQUFnQVNBQ0lBTkJKMEdGdHdWQkprSFlyUkpCL0swU1FiaXRFa0hJclJJUTFSSUxKUUFnQUNBQklBSWdBMEVrUVlhY0JVRWpRZmlzRWtHY3JSSkIyS3dTUWVpc0VoRFZFZ3RKQVFGL0l3QkJFR3NpQWlRQUlBQkNnSUNBZ01BQU53SmtJQUFnQURZQ1lDQUNJQUZCNEFCcU5nSUlJQUlnQVNnQ1lDQUJSem9BRENBQUlBSkJDR29RdGhzZ0FrRVFhaVFBQ3g4QUlBQWdBU0FDUVkyeUJVSHdxeEpCbEt3U1FkQ3JFa0hncXhJUTJCSUxWUUVCZnlNQVFSQnJJZ0lrQUNBQVFvQ0FnSURnQURjQ1pDQUFJQUEyQW1BZ0FpQUJRZUFBYWpZQ0NDQUNJQUVvQW1BZ0FVYzZBQXdnQUNBQ1FRaHFFTFFiSUFKQkVHb2tBQ0FBSUFFcEFtdzNBbXdnQUF1S0F3RUJmeU1BUWNBQmF5SURKQUFnQXlBQ05nSzRBU0FESUFFMkFyd0JJQU5Cd0xRU0lBTkJ1QUZxSUFOQnZBRnFFTHNiTmdLb0FTQURRZ2MzQXdnZ0FDQURLQUtvQVNBREtRTUlFSjBFSWdCQjhLb1NOZ0lFSUFCQnRLc1NOZ0lBSUFCQmtLc1NOZ0lBSUFNb0Fyd0JJZ0VvQWhnaEFpQUFJQUUyQWh3Z0FDQUNOZ0lZSUFBZ0FTZ0NIQ0lCTmdJZ0lBQWdBeWdDdUFFMkFpUWdBVUVCVFFSL0lBTkJDR3BCdm9zRlFTZEJBQ0FEUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRY0xXQ0JBT0dpQUNFQmdnQVJBZUlBQW9BaUFGSUFFTFFRVlBCRUFnQTBFSWFrRytpd1ZCS0VFQUlBTkJxQUZxRUIwaUFSQVhJZ0pCR0dwQmc5VUlFQTRhSUFJUUdDQUJFQjRMSUFBb0FpUWlBVUVCVFFSL0lBTkJDR3BCdm9zRlFTbEJBQ0FEUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRZDdXQ0JBT0dpQUNFQmdnQVJBZUlBQW9BaVFGSUFFTFFRVlBCRUFnQTBFSWFrRytpd1ZCS2tFQUlBTkJxQUZxRUIwaUFSQVhJZ0pCR0dwQm45VUlFQTRhSUFJUUdDQUJFQjRMSUFOQndBRnFKQUFnQUFzMUFDQUFFTDhiSWdCQk1Hb1F2eHNhSUFCQkFEWUNlQ0FBUW9DQWdJQ0FCRGNDY0NBQVFvQ0FCRGNDYUNBQVFnQTNBbUFnQUFzYkFDQUFJQUVvQWdBMkFnQWdBRUVJYWlBQlFRaHFFTUFiSUFBTEJBQkJBZ3NvQUNBQUVMTUVRWkt4cVBvSGFrR1RwQVp6SWdCQkFuWkJsdmlwK2dkeklBRW9BZ0JxSUFCekM4c0JBUUovSXdCQndBRnJJZ0lrQUNBQ0lBRTJBcndCSUFKQmdLVVNFTE1FUVpLeHFQb0hha0dUcEFaeklnRkJBblpCbHZpcCtnZHpJQUpCdkFGcUVQa0NhaUFCY3pZQ3FBRWdBa0lHTndNSUlBQWdBaWdDcUFFZ0Fpa0RDQkNkQkNJQVFmQ2tFallDQkNBQVFiU2xFallDQUNBQVFaQ2xFallDQUNBQUlBSW9BcndCSWdFMkFoZ2dBU2dDQkVHNHJSSkdCRUFnQWtFSWFrSHJ1QVZCSTBFQUlBSkJxQUZxRUIwaUFSQVhJZ05CR0dwQjF1d0lFQTRhSUFNUUdDQUJFQjRMSUFKQndBRnFKQUFnQUFzYkFDQUFJQUZCNUtNU1FjQ2tFa0dRb3hKQmdNaVFtSGdRd0F3TGpRTUNBWDhCZmlNQVFjQUJheUlISkFBZ0J5QUROZ0s0QVNBSElBSTJBcndCSUFjZ0JEWUN0QUVnQnlBRk5nS3dBU0FIUWFDaUVoQ3pCRUdTc2FqNkIycEJrNlFHY3lJQ1FRSjJRWmI0cWZvSGN5QUhRYndCYWhENUFtb2dBbk1pQWtFQ2RrR1crS242QjNNZ0J5Z0N1QUZxSUFKeklnSkJBblpCbHZpcCtnZHpJQWNvQXJRQmFpQUNjeUlDUVFKMlFaYjRxZm9IY3lBSEtBS3dBV29nQW5NMkFxQUJJQWNDZmdKK0lBY29BcndCS0FJRUlnSkJrS01TUmdSQUlBRXBBeEFpQ0VJRGd3d0JDMElBSUFKQnFLTVNSZzBCR2lBQktRTVFJUWhDQUFzZ0NFSUVnNFFMTndNQUlBQWdCeWdDb0FFZ0J5a0RBQkNkQkNJQVFaQ2lFallDQkNBQVFkaWlFallDQUNBQUlBRTJBaGdnQUVHMG9oSTJBZ0FnQUNBSEtBSzhBVFlDSENBQUlBY29BcmdCTmdJZ0lBQWdCeWdDdEFFMkFpUWdCeWdDc0FFaEFpQUFJQVkyQWl3Z0FDQUNOZ0lvSUFGRkJFQWdCMEgyaWdWQnh3QkJEU0FIUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRWWJUQ0JBT0dpQUNFQmdnQVJBZUN5QUhRY0FCYWlRQUlBQUxEZ0FnQUNBQkVPWUhRUUU2QURnTEZBQWdBa1VFUUVFQUR3c2dBQ0FCSUFJUXBBZ0xKZ0FnQUNBQktRSUFOd0lBSUFBZ0FTZ0NDRFlDQ0NBQkVGVWdBQ0FCS0FJTU5nSU1JQUFMRkFBZ0FFSDRuQkkyQWdBZ0FFRWthaEFqSUFBTERBQWdBQkROQ3hvZ0FCQWZDdzRBSUFBZ0FSQ1FDVUVCT2dBZ0N4RUFJQUF0QUNRRVFDQUFRUUE2QUNRTEN4UUFJQUFnQVJCV0lnQWdBU2tDSERjQ0hDQUFDeFFBSUFCQnlKZ1NOZ0lBSUFCQkpHb1FUeUFBQ3k4QUlBQkNBRGNDQUNBQVFRQTJBaUFnQUVJQU53SVFJQUJDQURjQ0NDQUFRb0NBZ0lDQWdJREFQemNDR0NBQUN3a0FJQUFRa3drUUh3c01BQ0FBRUpNSkdpQUFFQjhMRmdBZ0FDZ0NDQ0lBUVFBZ0FDZ0NCRUc0OHc5R0d3dGFBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNDQ0FFSUFFMkFnd2dCQ0FETmdJRUlBQWdCQ2dDRENBRUtBSUlJQVFvQWdRUTdBVWlBRUdZamhJMkFnUWdBRUdZanhJMkFnQWdBRUhvamhJMkFnQWdCRUVRYWlRQUlBQUxDZ0FnQUVINHJoSVFTQXNLQUNBQVFkQ3hFaEJJQ3hVQUlBQWdBUkRtQnlJQUlBRW9BamcyQWpnZ0FBc3BBUUYvSXdCQkVHc2lBaVFBSUFBZ0FrSE9oUWtRRkNJQUlBRVFKeUFBRUE4YUlBSkJFR29rQUFzdEFBSi9Ba0FnQUJDRUFTSUFSUTBBSUFBb0FnUkJrS0lTUncwQVFRRWdBQ2dDSEJEQkhBMEJHZ3RCQUFzTHdnRUJCWDhqQUVHd0FXc2lCQ1FBSUFNb0FoUWlCeENFQVNBQ1JpSUlSUVJBSUFSQklHb1FTU0lHUVFocUlnTkJ1YklLRUE0YUlBTWdBU0FCS0FJQUtBSU1FUUFBRUE0YUlBTkI5WlVKRUE0YUlBUkJFR29pQlNBQUtBSUlJQUlRcHdFZ0F5QUZFQklhSUFOQjZaVUpFQTRhSUFRZ0FDZ0NDQ0FIRUtjQklBTWdCQkFTR2lBRFFmT2FDUkFPR2lBRUVBOGFJQVVRRHhvZ0JTQUdRUXhxRUVJZ0FDQUZJQUZCRUdvUUp5QUVRUkJxRUE4YUlBWVFVUXNnQkVHd0FXb2tBQ0FJQzlZQkFRUi9Jd0JCRUdzaUF5UUFJQU1nQVRZQ0RDQURJQU5CREdvMkFnZ0NRQ0FCUlFSQUlBTkJDR29ReWh3aEJBd0JDMEVCSVFRZ0FTZ0NCQ0lDRUpFRElBSkI4S29TUm5JZ0FrSHdwQkpHY2cwQUlBSkJrS0lTUmdSQUlBRW9BaHdvQWdSQnFLTVNSZ1JBUVFBaEJBd0NDeUFBSUFFb0FoZ1EzZ3NoQkF3QkN5QUNFT1lEQkVBZ0FTZ0NSQ0lDSUFFb0FraEJBblJxSVFFRFFDQUJJQUpHSWdRTkFpQUNLQUlBSVFVZ0FrRUVhaUVDSUFBZ0JTZ0NLQkRlQ3cwQUN3d0JDeUFEUVFocUVNb2NJUVFMSUFOQkVHb2tBQ0FFQ3hFQUlBQkJPRUhKL3dOQmZFRURFTW9CQ3hvQUlBQkJBQ0FBQkg4Z0FDZ0NCRUdZamhJUVNBVkJBQXNiQzA0QkEzOGpBRUd3QVdzaUFTUUFJQUFRNGdzaUFFVUVRQ0FCUWRpdkEwSE5BRUVPSUFGQm9BRnFFQjBpQWhBWElnTkJHR3BCN2FrSUVBNGFJQU1RR0NBQ0VCNExJQUZCc0FGcUpBQWdBQXVaQWdFTGZ5TUFRYkFCYXlJREpBQUNRQ0FBS0FJQUlnRW9BdENuQWlJSklBQW9BZ3hHQkVBZ0FDZ0NDQ0VCREFFTElBQW9BZ1FRL0FJaEJpQUJRY1NuQW1vb0FnQWlCMEVCYXlFS0lBWWdCM0FoQWlBQUtBSUVJUXNnQVNnQ3dLY0NJUWdDUUFKQUEwQWdCQ0FIUndSQVFRQWhBU0FJSUFKQjBCaHNhaUlGTFFERUdFVU5BeUFHSUFVb0FzZ1lSZ1JBSUFzZ0JTZ0NBRVlOQXdzZ0JTZ0N6QmdnQkVrTkF5QUNRUUZxUVFBZ0FpQUtSeHNoQWlBRVFRRnFJUVFNQVFzTElBTkJoclVEUVo0RVFRNGdBMEdnQVdvUUhTSUJFQmNpQWtFWWFrSFNOUkFPR2lBQ0VCZ2dBUkFlUVFBaEFRd0JDeUFJSUFKQjBCaHNha0VFYWlFQkN5QUFJQWsyQWd3Z0FDQUJOZ0lJQ3lBRFFiQUJhaVFBSUFFTEhnQWdBQ2dDQkNBQkVJSURFUEFQSWdCQkFDQUFLQUlFUWFDUkVrWWJDK2NCQVFaL0l3QkJJR3NoQkNBQUtBSjhJZ1pCQVdzaEJ3SkFBMEFnQlNBR1JnMEJJQUFvQW5nZ0FVRVViR29pQXkwQUNBUkFJQUlnQWlnQ0VDSUlJQU1vQWhCTEJIOGdCQ0FES0FJUU5nSVlJQVFnQXlrQ0NEY0RFQ0FFSUFNcEFnQTNBd2dnQXlBQ0tBSVFOZ0lRSUFNZ0Fpa0NDRGNDQ0NBRElBSXBBZ0EzQWdBZ0FpQUVLQUlZTmdJUUlBSWdCQ2tERURjQ0NDQUNJQVFwQXdnM0FnQWdBaWdDRUFVZ0NBdEJBV28yQWhBZ0FVRUJha0VBSUFFZ0IwY2JJUUVnQlVFQmFpRUZEQUVMQ3lBRElBSXBBZ0EzQWdBZ0F5QUNLQUlRTmdJUUlBTWdBaWtDQ0RjQ0NBc0xtZ1lDQzM4Q2ZpTUFRZkFCYXlJQ0pBQUNRRUVHSUFGQmxnRnNRZVFBYmlJQklBRkJCazBiSWdRZ0FDZ0NmRTBOQUNBQ1FvQ0FnSURBQURjQ0pDQUNJQUkyQWlBZ0FpQUFLQUtFQVJEbEhDQUFLQUo0SWdFZ0FDZ0NmRUVVYkdvaEJnTkFJQUVnQmtZRVFDQUFFSUVkSUFBZ0JCQ2xFQ0FDS0FJZ0lnUWdBaWdDSkVFRGRHb2hDU0FDUWNnQWFpRUtBMEFnQkNBSlJnUkFJQUpCQURZQ0pDQUNJQUlvQWlBUU5nd0VDeUFBS0FKOElBQW9Bb1FCSWdGQmxnRnNRWllCYWtIa0FHNUpCRUFnQUNBQlFRRjBRUUpxRU9VTEN5QUNRZWdCYWlBQUlBUVFtZ2tnQUNnQ2ZDSUlRUUZySVFzZ0FDZ0NlQ0VNUVFBaEFTQUNLQUxzQVNFR0lBSW9BdWdCSVFVQ1FBTkFJQUVnQ0VjRVFDQU1JQVZCRkd4cUlnTXRBQWhGQkVBZ0JDa0NBQ0VOSUFOQkFUb0FDQ0FESUEwM0FnQWdBeUFHTmdJTUlBTWdBVFlDRUNBQUlBQW9Bb1FCUVFGcU5nS0VBU0FBSUFBb0FvZ0JRUUZxTmdLSUFRd0RDeUFFS0FJQUlRY2dCaUFES0FJTVJnUkFJQWNnQXlnQ0FFWU5Bd3NnQVNBREtBSVFTd1JBSUFRb0FnUWhDQ0FDUVFFNkFOZ0JJQUlnQVRZQzRBRWdBaUFJTmdMVUFTQUNJQWMyQXRBQklBSWdCallDM0FFZ0FrRkFheUFCTmdJQUlBSWdBaWtEMkFFaURUY0RPQ0FDSUFJcEE5QUJJZzQzQXpBZ0FpQURLQUlRTmdMZ0FTQUNJQU1wQWdnM0E5Z0JJQUlnQXlrQ0FEY0QwQUVnQXlBQk5nSVFJQU1nRGpjQ0FDQURJQTAzQWdnZ0FpQUNLQUxnQVVFQmFqWUM0QUVnQUNBRlFRRnFJQUFvQW54d0lBSkIwQUZxRU9RTElBQWdBQ2dDaEFGQkFXbzJBb1FCSUFBZ0FDZ0NpQUZCQVdvMkFvZ0JEQU1GSUFWQkFXcEJBQ0FGSUF0SEd5RUZJQUZCQVdvaEFRd0NDd0FMQ3lBQ1FUQnFRWWExQTBIckEwRU9JQUpCMEFGcUVCMGlBUkFYSVFNZ0NrR1dOUkFPR2lBREVCZ2dBUkFlQ3lBRVFRaHFJUVFNQUFzQUN5QUJMUUFJQkVBZ0FSQzZBaUVISUFJb0FpUWlCU0FDS0FJb0lnTlBCRUFnQWlBRFFRRjBRUUlnQXhzUTVSd2dBaWdDSkNFRkN5QUNJQVZCQVdvMkFpUWdBaWdDSUNBRlFRTjBhaUFIS1FJQU53SUFDeUFCUVJScUlRRU1BQXNBQ3lBQ1FmQUJhaVFBQzNZQkJYOGdBQ2dDQUNJQ0tBS0lBU0lESUFBb0FneEdCRUFnQUNnQ0NBOExJd0JCRUdzaUFTUUFJQUZCQ0dvZ0FpQUFRUVJxRUpnUUlBRW9BZ3doQkNBQ0tBSjRJUUlnQVMwQUNDRUZJQUZCRUdva0FDQUNJQVJCRkd4cVFRUnFRUUFnQlJzaEFTQUFJQU0yQWd3Z0FDQUJOZ0lJSUFFTEtRRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBQWdBUkNZRUNBQ0xRQUlJUUFnQWtFUWFpUUFJQUFMRUFBZ0FDMEFKRVVFUUJCdkFBc2dBQXNiQUNBQUlBRW9BZ0EyQWdBZ0FFRUVhaUFCUVFScUVJZ2RJQUFMaXdFQkEzOUJBQ0FBUVpnSWFpZ0NBQ0lCSUFGQkgwc2lBUnNoQWtFQUlBQkJsQWhxS0FJQUlBRWJJUU1nQUVHUUNHb29BZ0FoQVFOQVFRQWhBQUpBQTBBZ0FTQURSaUFBSUFKR2NRMEJJQUZGQkVCQkFDRUJRYUFCUVFBMkFnQU1BUXNnQVNBQVFRSjBhaWdDQUVFQU5nS2dBU0FBUVFGcUlnQkJJRWNOQUFzZ0FTZ0NnQUVoQVF3QkN3c0xRUUVCZnlBQVFnQTNBb2dCSUFCQ2dJQ0FnT0FBTndLQUFTQUFJQUJCSEdvaUFUWUNmQ0FBUW9DQWdJREFBRGNDRkNBQUlBQTJBaEFnQVVFR0VKOFFJQUFMSEFBZ0FDQUJLQUlBS0FJQU5nSUFJQUJCQkdvZ0FTZ0NCQkNJSFFzU0FDQUFJQUZCLy8vL1AwRUZRUWdReXhJTGlBRUJCSDhqQUVFUWF5SURKQUFnQVMwQUJDSUNRZjhCUmlBQ0lBQXRBQVFpQkVZZ0FrSC9BVWR4SUFSQi93RkdJZ1ViSWdKRklBVnlSUVJBSXdCQkVHc2lBaVFBSUFJZ0EwRUlhallDQUNBQ1FaaUpFaWtEQURjRENDQUNJQUFnQVNBQ1FRaHFJQVJCQW5ScUtBSUFFUVFBSVFBZ0FrRVFhaVFBSUFBaEFnc2dBMEVRYWlRQUlBSUxOQUVCZndOQUlBQW9BcFFFSUFGTkJFQWdBRUVBTmdLVUJBVWdBQ2dDa0FRZ0FVRXNiR29RcWdJZ0FVRUJhaUVCREFFTEN3c1JBQ0FBTFFBSVFmOEJSZ1JBRUc4QUN3c1JBQ0FBUVF4QjlmOERRWHhCQXhES0FRdDRBUVYvSUFBb0FvUURJZ1ZCQVdzaEJnSkFBMEFnQXlBRlJnMEJJQUFvQW9BRElBRkJCWFJxSWdRdEFCUUVRQ0FDSUFJb0Fod2lCeUFFS0FJY1N3Ui9JQVFnQWhDaUNTQUNLQUljQlNBSEMwRUJhallDSENBQlFRRnFRUUFnQVNBR1J4c2hBU0FEUVFGcUlRTU1BUXNMSUFRZ0FoQytFQXNMVmdFQmZ5QUJJQUFvQWhoR0JIOGpBRUVRYXlJREpBQkJBQ0VCQWtBZ0FpZ0NBQ0FBS0FJQVJ3MEFJQUlvQWdRZ0FDZ0NCRWNOQUNBQ0tBSUlJQUFvQWdoR0lRRUxJQUVoQUNBRFFSQnFKQUFnQUFWQkFBc0xOd0VCZnlNQVFSQnJJZ01rQUNBQ0tBSUFFUHdDSVFJZ0FTZ0N4QUVoQVNBQUlBSTJBZ1FnQUNBQ0lBRndOZ0lBSUFOQkVHb2tBQXMzQVFGL0l3QkJFR3NpQXlRQUlBSW9BZ0FRd3dNaEFpQUJLQUxFQVNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBZ0EwRVFhaVFBQzZjQkFRVi9JQUlvQWpBaUF5QUJLQUlrSWdRZ0F5QUVTUnNoQmtFQUlRTURRQUpBSUFNZ0JrWU5BQ0FEUVFKMElnUWdBaWdDTEdvb0FnQW9BZ3dpQlJDQkRBUkFJQUFnQVNnQ0lDQUVhaWdDQUNBRkVKWUNJZ2RGRFFFZ0FTZ0NJQ0FFYWlBSE5nSUFDeUFGS0FJRVFiaXRFa2NFUUNBQUlBRW9BaUFnQkdvb0FnQVE0d0lpQlVVTkFTQUJLQUlnSUFScUlBVTJBZ0FMSUFOQkFXb2hBd3dCQ3dzZ0F5QUdUd3M2QVFGL1FSQVFGU0VFSUFBZ0FVRUlhallDQkNBQUlBUTJBZ0FnQkNBREtRSUFOd0lJSUFCQkFUb0FDQ0FFUVFBMkFnQWdCQ0FDTmdJRUN5Z0FJQUFnQVJCV0lnQWdBU2dDTERZQ0xDQUFJQUVwQWlRM0FpUWdBQ0FCS1FJY053SWNJQUFMK2dFQkJIOGdBU0FBS0FLSUEwc0VRQ0FBS0FLQUF5RUZRUXdoQWlBQUlRTWdBVUVNVHdSQVFYOGdBVUVGZENBQlFmLy8vejlMR3hBVklRTWdBU0VDQ3lBQUlBTTJBb0FESUFBZ0FqWUNpQU1EUUNBQUtBS0VBeUFFVFFSQUlBQWdCUkEyQlNBRVFRVjBJZ01nQUNnQ2dBTnFJZ0lnQXlBRmFpSURLUUlBTndJQUlBSWdBeWtDR0RjQ0dDQUNJQU1wQWhBM0FoQWdBaUFES1FJSU53SUlJQVJCQVdvaEJBd0JDd3NMSUFBb0FvUURJZ1FnQVNBQklBUkpHeUVEQTBBZ0F5QUVSZ1JBSUFBZ0FUWUNoQU1GSUFBb0FvQURJQVJCQlhScUlnSkNBRGNDR0NBQ1FRQTZBQlFnQWtFQU9nQUFJQVJCQVdvaEJBd0JDd3NMbHdjQkJIOGdBRUtBZ0lDQXdBQTNBaFFnQUNBQU5nSVFJd0JCTUdzaUF5UUFJQUFnQWlnQ0ZCRFdBaUFEUVFBMkFpZ2dBeUFDTmdJa0lBTWdBVUhJSUdvMkFpQWdBeUFCUWR5QUFXb29BZ0JCQVdzMkFpd0NRQ0FEUVNCcUVMVUJCRUFnQTBFZ2FoQmFJZ1VvQXRnQklnUWdCU2dDM0FGQkdHeHFJUVVEUUNBRUlBVkdCRUFnQWlnQ0VDSUZJQUlvQWhSQkFuUnFJUUlEUUNBQ0lBVkdCRUFnQTBFZ2FoQmFJZ0lvQXNnQ0lnUWdBaWdDekFKQkdHeHFJUUlEUUNBQ0lBUkdEUVlnQXlBQklBUVFaaENFQWpZQ0VDQUFJQU5CRUdvUWNTQUVRUmhxSVFRTUFBc0FDeUFESUFOQklHb1FXaUlFUWRnQ2FqWUNFQ0FGS0FJQUlRWWdBMEVBTmdJWUlBTWdCallDRkNBRElBUkJuQWxxS0FJQVFRRnJOZ0ljQWtBZ0EwRVFhaEMwQVVVTkFDQURRUkJxRUt3QklnWW9BbUFpQkNBR0tBSmtRUmhzYWlFR0EwQWdCQ0FHUmcwQklBTWdBU0FFRUdZUWhBSTJBZ3dnQUNBRFFReHFFSEVnQkVFWWFpRUVEQUFMQUFzZ0EwRWdhaEJhSVFRZ0F5QUZLQUlBTmdJUUlBUWdBMEVRYWhER0EwVUVRQ0FESUFFZ0JTZ0NBQkR3QlRZQ0VDQUFJQU5CRUdvUWNRc2dBeUFEUVNCcUVGb2lCRUdnQ1dvMkFoQWdCU2dDQUNFR0lBTkJBRFlDR0NBRElBWTJBaFFnQXlBRVFlUVBhaWdDQUVFQmF6WUNIQUpBSUFOQkVHb1F0QUZGRFFBZ0EwRVFhaENzQVNJR0tBSmdJZ1FnQmlnQ1pFRVliR29oQmdOQUlBUWdCa1lOQVNBRElBRWdCQkJtRUlRQ05nSU1JQUFnQTBFTWFoQnhJQVJCR0dvaEJBd0FDd0FMSUFWQkJHb2hCUXdBQ3dBRklBTWdBU0FFRUdZUWhBSTJBaEFnQUNBRFFSQnFFSEVnQkVFWWFpRUVEQUVMQUFzQUN5QUNLQUlRSWdVZ0FpZ0NGRUVDZEdvaEFnTkFJQUlnQlVZRVFDQURRU0JxRUxVQlJRMENJQU5CSUdvUVdpSUNLQUxJQWlJRUlBSW9Bc3dDUVJoc2FpRUNBMEFnQWlBRVJnMERJQU1nQVNBRUVHWVFoQUkyQWhBZ0FDQURRUkJxRUhFZ0JFRVlhaUVFREFBTEFBVWdBeUFCSUFVb0FnQVE4QVUyQWhBZ0FDQURRUkJxRUhFQ1FDQURRU0JxRUxVQlJRMEFJQU1nQTBFZ2FoQmFJZ1JCb0FscU5nSVFJQVVvQWdBaEJpQURRUUEyQWhnZ0F5QUdOZ0lVSUFNZ0JFSGtEMm9vQWdCQkFXczJBaHdnQTBFUWFoQzBBVVVOQUNBRFFSQnFFS3dCSWdZb0FtQWlCQ0FHS0FKa1FSaHNhaUVHQTBBZ0JDQUdSZzBCSUFNZ0FTQUVFR1lRaEFJMkFnd2dBQ0FEUVF4cUVIRWdCRUVZYWlFRURBQUxBQXNnQlVFRWFpRUZEQUVMQUFzQUN5QURRVEJxSkFBTG53RUNBWDhCZmlNQVFTQnJJZ01rQUNBRElBSTJBaHdnQXlBQUtBS2dDaUFBUWFRS2FpZ0NBRUdrQVd4cVFhUUJheUlBTmdJSUlBRXBBZ0FoQkNBRFFRQTJBaFFnQXlBRU53SU1JQU1nQUNnQ29BRkJBV3MyQWhnQ1FDQURRUWhxRVBNZEJFQWdBeUFEUVFocUVNb1FJZ0FvQWdBMkFod2dBQ0FDTmdJQUlBTW9BaHdhREFFTElBTkJDR29nQUNBQklBTkJIR29ROGgwTElBTkJJR29rQUF0ZkFRUi9JQUVnQUNnQ0dFc0VRQ0FBS0FJUUlRSWdBQ0FCRU1FSklBQW9BaFFoQXlBQUtBSVFJUVJCQUNFQkEwQWdBU0FEUmdSQUlBQWdBaEEyQlNBRUlBRkJBblFpQldvZ0FpQUZhaWdDQURZQ0FDQUJRUUZxSVFFTUFRc0xDd3VaQVFFRWZ5QUFFQndqQUVFd2F5SUNKQUFnQWtFUWFpQUJLQUlBRUxzTElnTW9BZ2doQkNBQ0lBTTJBZ3dnQWlBRU5nSUlBa0FnQUVFUWFpSURRUnhxSWdVZ0FrRUlhaEM5QVNJQUJFQWdBQ2dDRENFQURBRUxJQU1nQXhDbEJDQUJLQUlBRUxzTElnQVFLQ0FESUFNb0FoaEJBV28yQWhnZ0FpQUFOZ0lNSUFJZ0JEWUNDQ0FGSUFKQkNHb1F2QUVMSUFKQk1Hb2tBQ0FBQy84REFRbC9Jd0JCRUdzaUJTUUFJQVVnQVRZQ0RDQUFLQUlFSVFFQ1FDQUFLQUlBUVFKQkFCQ29CU0lHUlEwQUlBRWdCaWdDVENnQ0FDSUNOZ0w0T1NBQlFZUTZha0tSZ0lDQWtBSTNBZ0FnQVVHQU9tcEI0SWNTTmdJQUlBRkIvRGxxUVpyNkFEWUNBQ0FCUWFnZGFpRUhJQUVnQWhDcUJTRURJd0JCRUdzaUFpUUFBa0FnQTBVTkFDQURRUUFnQXdSL0lBTW9BZ1FRNEIwRlFRQUxHeUlFRFFBZ0FrRU1OZ0lNSUFKQm12b0FOZ0lJSUFJZ0Fpa0RDRGNEQUNBSElBTWdBaENtQlVFQUlRUUxJQUpCRUdva0FDQUVJZ0pGRFFBZ0FTQUdLQUpNS0FJRUVOOFFJZ05GRFFBZ0FpZ0NFQ0VFSUFFb0FnQWlCaEFjSUFVZ0JDQUdRUkJxRUxVYk5nSUlJQUFvQWdnaEJDQUZJQUlvQWhBMkFnUWdCU0FES0FJUU5nSUFJQVFnQlVFTWFpQUZRUVJxSUFVZ0JVRUlhaENqSHlJRUlRcEJBQ0VKSUFGQnJCMXFJUUlnQUNnQ0RDZ0NBRUVRYWlFREl3QkJFR3NpQVNRQUFuOENRQUpBQWtBQ1FDQUVLQUlnRGdRQUFRRUNBUXNnQWlBQlFjLzZBaEFVSWdBZ0F4QW5EQUlMSUFJZ0FVSDIrZ0lRRkNJQUlBTVFKd3dCQ3lBRUtBSVlRUVJQQkVBZ0FpQUJRWXJ4QkJBVUlnQWdBeEFuREFFTFFRRWdCQ2dDSEVFQmEwRVJTUTBCR2lBQ0lBRkJ1WXNCRUJRaUFDQURFQ2NMSUFBUUR4cEJBQXNoQUNBQlFSQnFKQUFnQ2lBSklBQWJJUWdMSUFWQkVHb2tBQ0FJQzFRQkFYOGpBRUVRYXlJREpBQWdBMEVJYWlBQklBSVF5QkFnQUFKL0lBTXRBQWdFUUNBQUlBRW9BdkFCSUFNb0FneEJGR3hxS0FJRU5nSUFRUUVNQVFzZ0FFRUFPZ0FBUVFBTE9nQUVJQU5CRUdva0FBdjZBZ0VDZnlNQVFjQUJheUlHSkFBZ0JpQUNOZ0t3QVNBR0lBRTJBcmdCSUFBZ0JpZ0N1QUVnQmlnQ3NBRWdBeERsQkNJQVFianpEellDQkNBQVFlenpEellDQUNBQVFkanpEellDQUNBQVFTUnFJQVFRdndrZ0FFSFFBR29pQVVLQWdJQ0F3QUEzQWhRZ0FTQUJOZ0lRSUFFZ0JTZ0NBQkNsRENBQUtBSkVJZ0lnQUNnQ1NFRUNkR29oQVNBR1FSaHFJUU1EUUFKQUlBRWdBa1lFUUNBQUtBSmdJZ0lnQUNnQ1pFRUNkR29oQVNBR1FSaHFJUU1EUUNBQklBSkdEUUlnQWlnQ0FDSUVSUVJBSUFaQnA1SUZRU0pCQUNBR1FhQUJhaEFkSWdVUUZ5RUhJQU5CbWFjSUVBNGFJQWNRR0NBRkVCNExJQVFRVnlBQUtBSUlRUUZCQUVIZHhBaEJwNUlGUVNNUVN5QUNRUVJxSVFJTUFBc0FDeUFDS0FJQUlnUkZCRUFnQmtHbmtnVkJIa0VBSUFaQm9BRnFFQjBpQlJBWElRY2dBMEhxblFnUURob2dCeEFZSUFVUUhnc2dCQkJYSUFBb0FnaEJBVUVBUWFYQ0NFR25rZ1ZCSHhCTElBSkJCR29oQWd3QkN3c2dCa0hBQVdva0FDQUFDeUVBSUFBUVhDSUFCSDhnQUFSL0lBQW9BZ1FRZ0FZRlFRQUxRUUZ6QlVFQUN3dDNBUVYvSUFBb0FnQWlBaWdDZ0FJaUF5QUFLQUlNUmdSQUlBQW9BZ2dQQ3lNQVFSQnJJZ0VrQUNBQlFRaHFJQUlnQUVFRWFoRElFQ0FCS0FJTUlRUWdBaWdDOEFFaEFpQUJMUUFJSVFVZ0FVRVFhaVFBSUFJZ0JFRVViR3BCQkdwQkFDQUZHeUVCSUFBZ0F6WUNEQ0FBSUFFMkFnZ2dBUXZ3bFFJQ00zOEJmaU1BUVNCckloSWtBQ0FTSUFFMkFnd2dFaUFBTmdJQUlCSWdFa0VNYWpZQ0JBSi9Ba0FDUUNBQlJRMEFJQUVvQWdRaUFrRzQ4dzlHQkVBZ0FDQUJFSmNlREFNTElBSkIySVFTUmdSQUl3QkJrQUZySWdJa0FDQUNJQUUyQW13Z0FDZ0NBQ0lCRUJ3Z0FVR29BV29pQkNFZElBUVE4UVVoQXlBQ0tBSnNJUVlnQUVHUU5Hb2lCeWdDQUNFRklBQkJpRFJxSWdzb0FnQWhDU01BUVJCcklnRWtBQ0FCSUFVMkFnZ2dBU0FHTmdJTUlBRWdDVFlDQkNBRElBRW9BZ3dnQVNnQ0NDQUJLQUlFRU93RklnTkJrSklTTmdJRUlBTkJ3SklTTmdJQUlBTkJBRFlDN0FJZ0EwR3draEkyQWdBZ0FVRVFhaVFBSUIwZ0F4QW9JQVFnQkNnQ0dFRUJhallDR0NBQ0tBSnNJUVFnQUNnQ0FDSUJFQndnQVVIa0FXb2dCQ0FERUxrQklBQkJ1QjFxSWdrUWpRSWdBRUdzSFdvaEJnSkFBa0FDUUNBRVJRMEFBa0FnQkNnQ0JDSUJRYmp6RDBZRVFDQUVRZUFBYWlJSUtBSUFJZ0VnQkNnQ1pFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVEWUNoQUVnQWtHRGh3RTJBb0FCSUFJZ0Fpa0RnQUUzQXpnZ0FDQUZJQUpCT0dvUVFBd0VDeUFDUVFBNkFIUWdBaUFJTmdKd0lBWWdBa0h3QUdvUVFRMEJEQU1MSUFGQjJJUVNSZ1JBSUFSQk9Hb2lDQ2dDQUNJQklBUW9BanhCQW5ScUlRb0NRQU5BSUFFZ0NrWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTQyQW9RQklBSkI1SVlCTmdLQUFTQUNJQUlwQTRBQk53TkFJQUFnQlNBQ1FVQnJFRUFNQkFzZ0FrRUFPZ0IwSUFJZ0NEWUNjQ0FHSUFKQjhBQnFFRUZGRFFNTUFRc2dBVUc0OEE5R0JFQWdCRUUwYWlJSUtBSUFJZ0VnQkNnQ09FRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkRUWUNoQUVnQWtHbWh3RTJBb0FCSUFJZ0Fpa0RnQUUzQTBnZ0FDQUZJQUpCeUFCcUVFQU1CQXNnQWtFQU9nQjBJQUlnQ0RZQ2NDQUdJQUpCOEFCcUVFRkZEUU1NQVFzZ0FVSDQ4QTlHQkVBZ0JFRXdhaUlJS0FJQUlnRWdCQ2dDTkVFQ2RHb2hDZ0pBQTBBZ0FTQUtSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRHpZQ2hBRWdBa0h6aGdFMkFvQUJJQUlnQWlrRGdBRTNBMUFnQUNBRklBSkIwQUJxRUVBTUJBc2dBa0VBT2dCMElBSWdDRFlDY0NBR0lBSkI4QUJxRUVGRkRRTU1BUXNnQVVINDhROUdCRUFnQkVISUFHb2lDQ2dDQUNJQklBUW9Ba3hCQW5ScUlRb0NRQU5BSUFFZ0NrWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUkUyQW9RQklBSkJsSWNCTmdLQUFTQUNJQUlwQTRBQk53TllJQUFnQlNBQ1FkZ0FhaEJBREFRTElBSkJBRG9BZENBQ0lBZzJBbkFnQmlBQ1FmQUFhaEJCUlEwRERBRUxJQUZCaUlVU1J3MEJJQVJCTUdvaUNDZ0NBQ0lCSUFRb0FqUkJBblJxSVFvQ1FBTkFJQUVnQ2tZTkFTQUFJQUVvQWdBaUJSQXpHZ0pBSUFWRkRRQWdCU2dDQkVHUWdoSkhEUUFnQUNBRlFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBQ1FSQTJBb1FCSUFKQnRJY0JOZ0tBQVNBQ0lBSXBBNEFCTndOZ0lBQWdCU0FDUWVBQWFoQkFEQU1MSUFKQkFEb0FkQ0FDSUFnMkFuQWdCaUFDUWZBQWFoQkJSUTBDQ3lBQUlBTVFqQUlMSUFBb0FvdzBJUWdnQUNBRE5nS01OQ0FBSUFNZ0FDZ0NrRFFpQ2lBREd6WUNrRFFnQUNBQUtBS1VOQ0lOUVFGcUlnRTJBcFEwQW44Q1FDQUJRWUFCVHdSQUlBSkI4QUJxSWdGQi93QVFYeUFDUVlBQmFpSURRYWFzQ2lBQkVEVWdBQ0FESUFSQkVHb1FKeUFERUE4YUlBRVFEeG9NQVFzZ0FpZ0NiQ0lCS0FJa0lnUUVRQ0FBSUFRUU14b2dBQ0FFRUlNTUlnRkZEUUVnQXlBREtRTVlJQUVwQXhpRU53TVlJQUlvQW13aEFRc2dBU2dDS0NJRUJFQWdBQ0FBSUFRUWhRSVE0d0lpQVVVTkFTQURJQUUyQXV3Q0lBTWdBeWtER0NBQktRTWdoRGNER0NBQ0tBSnNJUUVMSUFBZ0FTZ0NMQ0lFQkg4Z0FDQUVFRE1hSUFBZ0JCQ0REQ0lCUlEwQklBTWdBeWtER0NBQktRTVloRGNER0NBQ0tBSnNCU0FCQ3lnQ01CQXpHaUFBS0FJQUlBSW9BbXhCTUdvZ0J5QUxFTm9RSVFVZ0FpZ0NiQ2dDTUNFRUlBQW9BZ0FpQVJBY0lBRkI1QUZxSUFRZ0JSQzVBU0FKRUkwQ0FrQUNRQUpBSUFSRkRRQUNRQ0FFS0FJRUlnRkJ1UE1QUmdSQUlBUkI0QUJxSWdzb0FnQWlBU0FFS0FKa1FRSjBhaUVNQWtBRFFDQUJJQXhHRFFFZ0FDQUJLQUlBSWdjUU14b0NRQ0FIUlEwQUlBY29BZ1JCa0lJU1J3MEFJQUFnQjBFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUU5nS0VBU0FDUVlPSEFUWUNnQUVnQWlBQ0tRT0FBVGNEQ0NBQUlBY2dBa0VJYWhCQURBUUxJQUpCQURvQWRDQUNJQXMyQW5BZ0JpQUNRZkFBYWhCQkRRRU1Bd3NnQVVIWWhCSkdCRUFnQkVFNGFpSUxLQUlBSWdFZ0JDZ0NQRUVDZEdvaERBSkFBMEFnQVNBTVJnMEJJQUFnQVNnQ0FDSUhFRE1hQWtBZ0IwVU5BQ0FIS0FJRVFaQ0NFa2NOQUNBQUlBZEJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEallDaEFFZ0FrSGtoZ0UyQW9BQklBSWdBaWtEZ0FFM0F4QWdBQ0FISUFKQkVHb1FRQXdFQ3lBQ1FRQTZBSFFnQWlBTE5nSndJQVlnQWtId0FHb1FRVVVOQXd3QkN5QUJRYmp3RDBZRVFDQUVRVFJxSWdzb0FnQWlBU0FFS0FJNFFRSjBhaUVNQWtBRFFDQUJJQXhHRFFFZ0FDQUJLQUlBSWdjUU14b0NRQ0FIUlEwQUlBY29BZ1JCa0lJU1J3MEFJQUFnQjBFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFTk5nS0VBU0FDUWFhSEFUWUNnQUVnQWlBQ0tRT0FBVGNER0NBQUlBY2dBa0VZYWhCQURBUUxJQUpCQURvQWRDQUNJQXMyQW5BZ0JpQUNRZkFBYWhCQlJRMEREQUVMSUFGQitQQVBSZ1JBSUFSQk1Hb2lDeWdDQUNJQklBUW9BalJCQW5ScUlRd0NRQU5BSUFFZ0RFWU5BU0FBSUFFb0FnQWlCeEF6R2dKQUlBZEZEUUFnQnlnQ0JFR1FnaEpIRFFBZ0FDQUhRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTgyQW9RQklBSkI4NFlCTmdLQUFTQUNJQUlwQTRBQk53TWdJQUFnQnlBQ1FTQnFFRUFNQkFzZ0FrRUFPZ0IwSUFJZ0N6WUNjQ0FHSUFKQjhBQnFFRUZGRFFNTUFRc2dBVUg0OFE5R0JFQWdCRUhJQUdvaUN5Z0NBQ0lCSUFRb0FreEJBblJxSVF3Q1FBTkFJQUVnREVZTkFTQUFJQUVvQWdBaUJ4QXpHZ0pBSUFkRkRRQWdCeWdDQkVHUWdoSkhEUUFnQUNBSFFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBQ1FSRTJBb1FCSUFKQmxJY0JOZ0tBQVNBQ0lBSXBBNEFCTndNb0lBQWdCeUFDUVNocUVFQU1CQXNnQWtFQU9nQjBJQUlnQ3pZQ2NDQUdJQUpCOEFCcUVFRkZEUU1NQVFzZ0FVR0loUkpIRFFFZ0JFRXdhaUlMS0FJQUlnRWdCQ2dDTkVFQ2RHb2hEQUpBQTBBZ0FTQU1SZzBCSUFBZ0FTZ0NBQ0lIRURNYUFrQWdCMFVOQUNBSEtBSUVRWkNDRWtjTkFDQUFJQWRCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRURZQ2hBRWdBa0cwaHdFMkFvQUJJQUlnQWlrRGdBRTNBekFnQUNBSElBSkJNR29RUUF3REN5QUNRUUE2QUhRZ0FpQUxOZ0p3SUFZZ0FrSHdBR29RUVVVTkFnc2dBQ0FGRUl3Q0N5QUFLQUtNTkNFTElBQWdCVFlDakRRZ0FDQUZJQUFvQXBBMElnd2dCUnMyQXBBMElBQWdBQ2dDbERRaURrRUJhaUlCTmdLVU5BSi9JQUZCZ0FGUEJFQWdBa0h3QUdvaUFVSC9BQkJmSUFKQmdBRnFJZ2RCcHF3S0lBRVFOU0FBSUFjZ0JFRVFhaEFuSUFjUUR4b2dBUkFQR2tFQURBRUxJQUlnQWlnQ2JDZ0NNRUhFQUdvMkFvQUJJQUpCQURvQWhBRWdCVUVBSUFBZ0FrR0FBV29RMmdZYkN5RUJJQUFnRERZQ2tEUWdBQ0FPTmdLVU5DQUFJQXMyQW93MERBRUxRUUFoQVFzZ0NSQ0xBaUFCUlEwQUlBTWdBeWtER0NBRktRTVloQ0kxTndNWUlBTWdOVUp4ZzBJSUlEVkNBb05DQW9ZZ0FpZ0NiQ2dDS0J1RU53TVlJQU1oTFVFQUlSNGpBRUV3YXlJQkpBQUNRQUpBSUFNcEF4aFFCRUFnQVVFZ2FrSHM1QUFRRkNFRUlBTW9BZ2dpQXlrQ0VDRTFJQUVnQXlnQ0lEWUNHQ0FCSURVM0F4QWdBU0ExTndNSUlBWWdCQ0FCUVFocUVDY01BUXRCQVNFRUlBTW9BdXdDSWdWRkRRRWdCU2dDRkJDRUFTSUZLQUlFUWRDbEVrWU5BU0FCUVNCcUlnUWdCaWdDQ0NBRkVLY0JJQUZCQ0dvaUJVRzB5QWtnQkJBMUlBWWdCU0FES0FMc0FpZ0NDRUVRYWhBbklBVVFEeG9MSUFRUUR4cEJBQ0VFQ3lBQlFUQnFKQUFnTFNBZUlBUWJEQUVMUVFBTElRRWdBQ0FLTmdLUU5DQUFJQTAyQXBRMElBQWdDRFlDakRRTUFRdEJBQ0VCQ3lBSkVJc0NJQUpCa0FGcUpBQWdBUXdEQ3lBQ1FmandEMFlFUUNNQVFjQUJheUlESkFBZ0F5QUJOZ0tVQVNBQUtBSUFJZ0VRSENBQlFhZ0JhaUlFSVI4Z0JCRHhCU0VDSUFNb0FwUUJJUVlnQUVHUU5Hb2lDU2dDQUNFRklBQkJpRFJxSWdvb0FnQWhCeU1BUWNBQmF5SUJKQUFnQVNBRk5nSzRBU0FCSUFZMkFyd0JJQUVnQnpZQ3RBRWdBaUFCS0FLOEFTQUJLQUs0QVNBQktBSzBBUkRzQlNJQ1FlQ1VFallDQkNBQ1FiaVZFallDQUNBQ1FaaVZFallDQUNBQktBSzRBVVVFUUNBQlFkeVBCVUVkUVFrZ0FVR2dBV29RSFNJR0VCY2lCVUVZYWtHSm5RZ1FEaG9nQlJBWUlBWVFIZ3NnQVNnQ3RBRkZCRUFnQVVIY2p3VkJIa0VKSUFGQm9BRnFFQjBpQmhBWElnVkJHR3BCekxFSUVBNGFJQVVRR0NBR0VCNExJQUZCd0FGcUpBQWdIeUFDRUNnZ0JDQUVLQUlZUVFGcU5nSVlJQU1vQXBRQklRUWdBQ2dDQUNJQkVCd2dBVUhrQVdvZ0JDQUNFTGtCSUFCQnVCMXFJZ3NRalFJZ0FFR3NIV29oQmdKQUFrQUNRQ0FFUlEwQUFrQWdCQ2dDQkNJQlFianpEMFlFUUNBRVFlQUFhaUlIS0FJQUlnRWdCQ2dDWkVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRURZQ3RBRWdBMEdEaHdFMkFyQUJJQU1nQXlrRHNBRTNBMkFnQUNBRklBTkI0QUJxRUVBTUJBc2dBMEVBT2dDa0FTQURJQWMyQXFBQklBWWdBMEdnQVdvUVFRMEJEQU1MSUFGQjJJUVNSZ1JBSUFSQk9Hb2lCeWdDQUNJQklBUW9BanhCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QURRUTQyQXJRQklBTkI1SVlCTmdLd0FTQURJQU1wQTdBQk53Tm9JQUFnQlNBRFFlZ0FhaEJBREFRTElBTkJBRG9BcEFFZ0F5QUhOZ0tnQVNBR0lBTkJvQUZxRUVGRkRRTU1BUXNnQVVHNDhBOUdCRUFnQkVFMGFpSUhLQUlBSWdFZ0JDZ0NPRUVDZEdvaENBSkFBMEFnQVNBSVJnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBTkJEVFlDdEFFZ0EwR21od0UyQXJBQklBTWdBeWtEc0FFM0EzQWdBQ0FGSUFOQjhBQnFFRUFNQkFzZ0EwRUFPZ0NrQVNBRElBYzJBcUFCSUFZZ0EwR2dBV29RUVVVTkF3d0JDeUFCUWZqd0QwWUVRQ0FFUVRCcUlnY29BZ0FpQVNBRUtBSTBRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVBOZ0swQVNBRFFmT0dBVFlDc0FFZ0F5QURLUU93QVRjRGVDQUFJQVVnQTBINEFHb1FRQXdFQ3lBRFFRQTZBS1FCSUFNZ0J6WUNvQUVnQmlBRFFhQUJhaEJCUlEwRERBRUxJQUZCK1BFUFJnUkFJQVJCeUFCcUlnY29BZ0FpQVNBRUtBSk1RUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVJOZ0swQVNBRFFaU0hBVFlDc0FFZ0F5QURLUU93QVRjRGdBRWdBQ0FGSUFOQmdBRnFFRUFNQkFzZ0EwRUFPZ0NrQVNBRElBYzJBcUFCSUFZZ0EwR2dBV29RUVVVTkF3d0JDeUFCUVlpRkVrY05BU0FFUVRCcUlnY29BZ0FpQVNBRUtBSTBRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVFOZ0swQVNBRFFiU0hBVFlDc0FFZ0F5QURLUU93QVRjRGlBRWdBQ0FGSUFOQmlBRnFFRUFNQXdzZ0EwRUFPZ0NrQVNBRElBYzJBcUFCSUFZZ0EwR2dBV29RUVVVTkFnc2dBQ0FDRUl3Q0N5QUFLQUtNTkNFTklBQWdBallDakRRZ0FDQUNJQUFvQXBBMElnd2dBaHMyQXBBMElBQWdBQ2dDbERRaURrRUJhaUlCTmdLVU5BSi9JQUZCZ0FGUEJFQWdBMEdnQVdvaUFVSC9BQkJmSUFOQnNBRnFJZ0pCcHF3S0lBRVFOU0FBSUFJZ0JFRVFhaEFuSUFJUUR4b2dBUkFQR2tFQURBRUxJQUFnQXlnQ2xBRW9BaVFRTXhvZ0FDZ0NBQ0FES0FLVUFVRWthaUFKSUFvUTJoQWhCeUFES0FLVUFTZ0NKQ0VFSUFBb0FnQWlBUkFjSUFGQjVBRnFJQVFnQnhDNUFTQUxFSTBDQWtBQ1FBSkFJQVJGRFFBQ1FDQUVLQUlFSWdGQnVQTVBSZ1JBSUFSQjRBQnFJZ2dvQWdBaUFTQUVLQUprUVFKMGFpRVBBa0FEUUNBQklBOUdEUUVnQUNBQktBSUFJZ1VRTXhvQ1FDQUZSUTBBSUFVb0FnUkJrSUlTUncwQUlBQWdCVUVrYWhCRElBRkJCR29oQVF3QkN3c2dBMEVRTmdLMEFTQURRWU9IQVRZQ3NBRWdBeUFES1FPd0FUY0RNQ0FBSUFVZ0EwRXdhaEJBREFRTElBTkJBRG9BcEFFZ0F5QUlOZ0tnQVNBR0lBTkJvQUZxRUVFTkFRd0RDeUFCUWRpRUVrWUVRQ0FFUVRocUlnZ29BZ0FpQVNBRUtBSThRUUowYWlFUEFrQURRQ0FCSUE5R0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRU9OZ0swQVNBRFFlU0dBVFlDc0FFZ0F5QURLUU93QVRjRE9DQUFJQVVnQTBFNGFoQkFEQVFMSUFOQkFEb0FwQUVnQXlBSU5nS2dBU0FHSUFOQm9BRnFFRUZGRFFNTUFRc2dBVUc0OEE5R0JFQWdCRUUwYWlJSUtBSUFJZ0VnQkNnQ09FRUNkR29oRHdKQUEwQWdBU0FQUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFOQkRUWUN0QUVnQTBHbWh3RTJBckFCSUFNZ0F5a0RzQUUzQTBBZ0FDQUZJQU5CUUdzUVFBd0VDeUFEUVFBNkFLUUJJQU1nQ0RZQ29BRWdCaUFEUWFBQmFoQkJSUTBEREFFTElBRkIrUEFQUmdSQUlBUkJNR29pQ0NnQ0FDSUJJQVFvQWpSQkFuUnFJUThDUUFOQUlBRWdEMFlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVE4MkFyUUJJQU5CODRZQk5nS3dBU0FESUFNcEE3QUJOd05JSUFBZ0JTQURRY2dBYWhCQURBUUxJQU5CQURvQXBBRWdBeUFJTmdLZ0FTQUdJQU5Cb0FGcUVFRkZEUU1NQVFzZ0FVSDQ4UTlHQkVBZ0JFSElBR29pQ0NnQ0FDSUJJQVFvQWt4QkFuUnFJUThDUUFOQUlBRWdEMFlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVJFMkFyUUJJQU5CbEljQk5nS3dBU0FESUFNcEE3QUJOd05RSUFBZ0JTQURRZEFBYWhCQURBUUxJQU5CQURvQXBBRWdBeUFJTmdLZ0FTQUdJQU5Cb0FGcUVFRkZEUU1NQVFzZ0FVR0loUkpIRFFFZ0JFRXdhaUlJS0FJQUlnRWdCQ2dDTkVFQ2RHb2hEd0pBQTBBZ0FTQVBSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRURZQ3RBRWdBMEcwaHdFMkFyQUJJQU1nQXlrRHNBRTNBMWdnQUNBRklBTkIyQUJxRUVBTUF3c2dBMEVBT2dDa0FTQURJQWcyQXFBQklBWWdBMEdnQVdvUVFVVU5BZ3NnQUNBSEVJd0NDeUFBS0FLTU5DRVBJQUFnQnpZQ2pEUWdBQ0FISUFBb0FwQTBJaEVnQnhzMkFwQTBJQUFnQUNnQ2xEUWlFMEVCYWlJQk5nS1VOQUpBSUFGQmdBRlBCRUFnQTBHZ0FXb2lBVUgvQUJCZklBTkJzQUZxSWdaQnBxd0tJQUVRTlNBQUlBWWdCRUVRYWhBbklBWVFEeG9nQVJBUEdrRUFJUUVNQVFzZ0F5Z0NsQUVvQWlRaEJFRUFJUUVnQTBFQU9nQ2NBU0FESUFSQnhBQnFOZ0tZQVNBQUlBTkJtQUZxRU5vR1JRMEFJQUlnQnlrREdDSTFOd01ZSUFNb0FwUUJLQUlvSWdRRVFDQUFJQVFRTXhvZ0F5Z0NsQUVpQkNnQ0tDRUZJQUFvQWdBaUNCQWNJQWhCcUFGcUlnZ2hJQ0FJRVBFRklSQWdCQ2dDS0NFVUlBa29BZ0FoQ1NBS0tBSUFJUW9qQUVIQUFXc2lCQ1FBSUFRZ0NUWUN1QUVnQkNBVU5nSzhBU0FFSUFvMkFyUUJJQkFnQkNnQ3ZBRWdCQ2dDdUFFZ0JDZ0N0QUVRMXdzaUNVSDRsQkkyQWdRZ0NVSElsUkkyQWdBZ0NVR29sUkkyQWdBZ0JDZ0N1QUZGQkVBZ0JFSGNqd1ZCSjBFSklBUkJvQUZxRUIwaUNoQVhJaEJCR0dwQmlaMElFQTRhSUJBUUdDQUtFQjRMSUFRb0FyUUJSUVJBSUFSQjNJOEZRU2hCQ1NBRVFhQUJhaEFkSWdvUUZ5SVFRUmhxUWN5eENCQU9HaUFRRUJnZ0NoQWVDeUFFUWNBQmFpUUFJQ0FnQ1JBb0lBZ2dDQ2dDR0VFQmFqWUNHQ0FBS0FJQUlnUVFIQ0FFUWVRQmFpQUZJQWtRdVFFZ0N4Q05BZ0pBQWtBQ1FDQUZSUTBBQWtBZ0JTZ0NCQ0lFUWJqekQwWUVRQ0FGUWVBQWFpSUtLQUlBSWdRZ0JTZ0NaRUVDZEdvaEVBSkFBMEFnQkNBUVJnMEJJQUFnQkNnQ0FDSUlFRE1hQWtBZ0NFVU5BQ0FJS0FJRVFaQ0NFa2NOQUNBQUlBaEJKR29RUXlBRVFRUnFJUVFNQVFzTElBTkJFRFlDdEFFZ0EwR0Rod0UyQXJBQklBTWdBeWtEc0FFM0F3QWdBQ0FJSUFNUVFBd0VDeUFEUVFBNkFLUUJJQU1nQ2pZQ29BRWdCaUFEUWFBQmFoQkJEUUVNQXdzZ0JFSFloQkpHQkVBZ0JVRTRhaUlLS0FJQUlnUWdCU2dDUEVFQ2RHb2hFQUpBQTBBZ0JDQVFSZzBCSUFBZ0JDZ0NBQ0lJRURNYUFrQWdDRVVOQUNBSUtBSUVRWkNDRWtjTkFDQUFJQWhCSkdvUVF5QUVRUVJxSVFRTUFRc0xJQU5CRGpZQ3RBRWdBMEhraGdFMkFyQUJJQU1nQXlrRHNBRTNBd2dnQUNBSUlBTkJDR29RUUF3RUN5QURRUUE2QUtRQklBTWdDallDb0FFZ0JpQURRYUFCYWhCQlJRMEREQUVMSUFSQnVQQVBSZ1JBSUFWQk5Hb2lDaWdDQUNJRUlBVW9BamhCQW5ScUlSQUNRQU5BSUFRZ0VFWU5BU0FBSUFRb0FnQWlDQkF6R2dKQUlBaEZEUUFnQ0NnQ0JFR1FnaEpIRFFBZ0FDQUlRU1JxRUVNZ0JFRUVhaUVFREFFTEN5QURRUTAyQXJRQklBTkJwb2NCTmdLd0FTQURJQU1wQTdBQk53TVFJQUFnQ0NBRFFSQnFFRUFNQkFzZ0EwRUFPZ0NrQVNBRElBbzJBcUFCSUFZZ0EwR2dBV29RUVVVTkF3d0JDeUFFUWZqd0QwWUVRQ0FGUVRCcUlnb29BZ0FpQkNBRktBSTBRUUowYWlFUUFrQURRQ0FFSUJCR0RRRWdBQ0FFS0FJQUlnZ1FNeG9DUUNBSVJRMEFJQWdvQWdSQmtJSVNSdzBBSUFBZ0NFRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0EwRVBOZ0swQVNBRFFmT0dBVFlDc0FFZ0F5QURLUU93QVRjREdDQUFJQWdnQTBFWWFoQkFEQVFMSUFOQkFEb0FwQUVnQXlBS05nS2dBU0FHSUFOQm9BRnFFRUZGRFFNTUFRc2dCRUg0OFE5R0JFQWdCVUhJQUdvaUNpZ0NBQ0lFSUFVb0FreEJBblJxSVJBQ1FBTkFJQVFnRUVZTkFTQUFJQVFvQWdBaUNCQXpHZ0pBSUFoRkRRQWdDQ2dDQkVHUWdoSkhEUUFnQUNBSVFTUnFFRU1nQkVFRWFpRUVEQUVMQ3lBRFFSRTJBclFCSUFOQmxJY0JOZ0t3QVNBRElBTXBBN0FCTndNZ0lBQWdDQ0FEUVNCcUVFQU1CQXNnQTBFQU9nQ2tBU0FESUFvMkFxQUJJQVlnQTBHZ0FXb1FRVVVOQXd3QkN5QUVRWWlGRWtjTkFTQUZRVEJxSWdvb0FnQWlCQ0FGS0FJMFFRSjBhaUVRQWtBRFFDQUVJQkJHRFFFZ0FDQUVLQUlBSWdnUU14b0NRQ0FJUlEwQUlBZ29BZ1JCa0lJU1J3MEFJQUFnQ0VFa2FoQkRJQVJCQkdvaEJBd0JDd3NnQTBFUU5nSzBBU0FEUWJTSEFUWUNzQUVnQXlBREtRT3dBVGNES0NBQUlBZ2dBMEVvYWhCQURBTUxJQU5CQURvQXBBRWdBeUFLTmdLZ0FTQUdJQU5Cb0FGcUVFRkZEUUlMSUFBZ0NSQ01BZ3NnQUNnQ2pEUWhDQ0FBSUFrMkFvdzBJQUFnQ1NBQUtBS1FOQ0lLSUFrYk5nS1FOQ0FBSUFBb0FwUTBJaEJCQVdvaUJEWUNsRFFDZnlBRVFZQUJUd1JBSUFOQm9BRnFJZ1JCL3dBUVh5QURRYkFCYWlJSlFhYXNDaUFFRURVZ0FDQUpJQVZCRUdvUUp5QUpFQThhSUFRUUR4cEJBQXdCQ3lBRElBTW9BcFFCS0FJb1FjUUFhallDc0FFZ0EwRUFPZ0MwQVNBSlFRQWdBQ0FEUWJBQmFoRGFCaHNMSVFRZ0FDQUtOZ0tRTkNBQUlCQTJBcFEwSUFBZ0NEWUNqRFFNQVF0QkFDRUVDeUFMRUlzQ0lBUkZEUUVnQWlrREdDQUVLUU1ZaENFMUN5QUNJRFZDY1lNZ05VSUNoa0lJZzRRM0F4Z2dCeUV1UVFBaElTTUFRVEJySWdFa0FDQUNLUU1ZUWdCU0lnVkZCRUFnQVVFZ2FrSHc1QUFRRkNFRUlBSW9BZ2dpQnlrQ0VDRTFJQUVnQnlnQ0lEWUNHQ0FCSURVM0F4QWdBU0ExTndNSUlBWWdCQ0FCUVFocUVDY2dCQkFQR2dzZ0FVRXdhaVFBSUM0Z0lTQUZHeUVCQ3lBQUlCRTJBcEEwSUFBZ0V6WUNsRFFnQUNBUE5nS01OQXdCQzBFQUlRRUxJQXNRaXdJZ0FrRUFJQUViQ3lFQklBQWdERFlDa0RRZ0FDQU9OZ0tVTkNBQUlBMDJBb3cwREFFTFFRQWhBUXNnQ3hDTEFpQURRY0FCYWlRQUlBRU1Bd3NnQWtHSWhSSkdCRUFqQUVHUUFXc2lBeVFBSUFNZ0FUWUNiQ0FBS0FJQUlnRVFIQ0FCUWFnQmFpSUVJU0lnQkJEeEJTRUNJQU1vQW13aEJpQUFRWkEwYWlJSEtBSUFJUVVnQUVHSU5Hb2lDU2dDQUNFTEl3QkJFR3NpQVNRQUlBRWdCVFlDQ0NBQklBWTJBZ3dnQVNBTE5nSUVJQUlnQVNnQ0RDQUJLQUlJSUFFb0FnUVE3QVVpQWtHNG54STJBZ1FnQWtIb254STJBZ0FnQWtFQU5nTHNBaUFDUWRpZkVqWUNBQ0FCUVJCcUpBQWdJaUFDRUNnZ0JDQUVLQUlZUVFGcU5nSVlJQU1vQW13aEJDQUFLQUlBSWdFUUhDQUJRZVFCYWlBRUlBSVF1UUVnQUVHNEhXb2lDeENOQWlBQVFhd2RhaUVGQWtBQ1FBSkFJQVJGRFFBQ1FDQUVLQUlFSWdGQnVQTVBSZ1JBSUFSQjRBQnFJZ2dvQWdBaUFTQUVLQUprUVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1lRTXhvQ1FDQUdSUTBBSUFZb0FnUkJrSUlTUncwQUlBQWdCa0VrYWhCRElBRkJCR29oQVF3QkN3c2dBMEVRTmdLRUFTQURRWU9IQVRZQ2dBRWdBeUFES1FPQUFUY0RPQ0FBSUFZZ0EwRTRhaEJBREFRTElBTkJBRG9BZENBRElBZzJBbkFnQlNBRFFmQUFhaEJCRFFFTUF3c2dBVUhZaEJKR0JFQWdCRUU0YWlJSUtBSUFJZ0VnQkNnQ1BFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJR0VETWFBa0FnQmtVTkFDQUdLQUlFUVpDQ0VrY05BQ0FBSUFaQkpHb1FReUFCUVFScUlRRU1BUXNMSUFOQkRqWUNoQUVnQTBIa2hnRTJBb0FCSUFNZ0F5a0RnQUUzQTBBZ0FDQUdJQU5CUUdzUVFBd0VDeUFEUVFBNkFIUWdBeUFJTmdKd0lBVWdBMEh3QUdvUVFVVU5Bd3dCQ3lBQlFiandEMFlFUUNBRVFUUnFJZ2dvQWdBaUFTQUVLQUk0UVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1lRTXhvQ1FDQUdSUTBBSUFZb0FnUkJrSUlTUncwQUlBQWdCa0VrYWhCRElBRkJCR29oQVF3QkN3c2dBMEVOTmdLRUFTQURRYWFIQVRZQ2dBRWdBeUFES1FPQUFUY0RTQ0FBSUFZZ0EwSElBR29RUUF3RUN5QURRUUE2QUhRZ0F5QUlOZ0p3SUFVZ0EwSHdBR29RUVVVTkF3d0JDeUFCUWZqd0QwWUVRQ0FFUVRCcUlnZ29BZ0FpQVNBRUtBSTBRUUowYWlFS0FrQURRQ0FCSUFwR0RRRWdBQ0FCS0FJQUlnWVFNeG9DUUNBR1JRMEFJQVlvQWdSQmtJSVNSdzBBSUFBZ0JrRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVBOZ0tFQVNBRFFmT0dBVFlDZ0FFZ0F5QURLUU9BQVRjRFVDQUFJQVlnQTBIUUFHb1FRQXdFQ3lBRFFRQTZBSFFnQXlBSU5nSndJQVVnQTBId0FHb1FRVVVOQXd3QkN5QUJRZmp4RDBZRVFDQUVRY2dBYWlJSUtBSUFJZ0VnQkNnQ1RFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJR0VETWFBa0FnQmtVTkFDQUdLQUlFUVpDQ0VrY05BQ0FBSUFaQkpHb1FReUFCUVFScUlRRU1BUXNMSUFOQkVUWUNoQUVnQTBHVWh3RTJBb0FCSUFNZ0F5a0RnQUUzQTFnZ0FDQUdJQU5CMkFCcUVFQU1CQXNnQTBFQU9nQjBJQU1nQ0RZQ2NDQUZJQU5COEFCcUVFRkZEUU1NQVFzZ0FVR0loUkpIRFFFZ0JFRXdhaUlJS0FJQUlnRWdCQ2dDTkVFQ2RHb2hDZ0pBQTBBZ0FTQUtSZzBCSUFBZ0FTZ0NBQ0lHRURNYUFrQWdCa1VOQUNBR0tBSUVRWkNDRWtjTkFDQUFJQVpCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRURZQ2hBRWdBMEcwaHdFMkFvQUJJQU1nQXlrRGdBRTNBMkFnQUNBR0lBTkI0QUJxRUVBTUF3c2dBMEVBT2dCMElBTWdDRFlDY0NBRklBTkI4QUJxRUVGRkRRSUxJQUFnQWhDTUFnc2dBQ2dDakRRaENDQUFJQUkyQW93MElBQWdBaUFBS0FLUU5DSUtJQUliTmdLUU5DQUFJQUFvQXBRMElnMUJBV29pQVRZQ2xEUUNRQ0FCUVlBQlR3UkFJQU5COEFCcUlnRkIvd0FRWHlBRFFZQUJhaUlDUWFhc0NpQUJFRFVnQUNBQ0lBUkJFR29RSnlBQ0VBOGFJQUVRRHhwQkFDRUJEQUVMUVFBaEFTQUFJQUFnQXlnQ2JDZ0NKQkNGQWhEakFpSUVSUTBBSUFJZ0JEWUM3QUlnQWlBQ0tRTVlJQVFwQXlDRU53TVlJQUFnQXlnQ2JDZ0NLQkF6R2lBQUtBSUFJQU1vQW14QktHb2dCeUFKRU5vUUlRY2dBeWdDYkNnQ0tDRUdJQUFvQWdBaUJCQWNJQVJCNUFGcUlBWWdCeEM1QVNBTEVJMENBa0FDUUFKQUlBWkZEUUFDUUNBR0tBSUVJZ1JCdVBNUFJnUkFJQVpCNEFCcUlnd29BZ0FpQkNBR0tBSmtRUUowYWlFT0FrQURRQ0FFSUE1R0RRRWdBQ0FFS0FJQUlna1FNeG9DUUNBSlJRMEFJQWtvQWdSQmtJSVNSdzBBSUFBZ0NVRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0EwRVFOZ0tFQVNBRFFZT0hBVFlDZ0FFZ0F5QURLUU9BQVRjRENDQUFJQWtnQTBFSWFoQkFEQVFMSUFOQkFEb0FkQ0FESUF3MkFuQWdCU0FEUWZBQWFoQkJEUUVNQXdzZ0JFSFloQkpHQkVBZ0JrRTRhaUlNS0FJQUlnUWdCaWdDUEVFQ2RHb2hEZ0pBQTBBZ0JDQU9SZzBCSUFBZ0JDZ0NBQ0lKRURNYUFrQWdDVVVOQUNBSktBSUVRWkNDRWtjTkFDQUFJQWxCSkdvUVF5QUVRUVJxSVFRTUFRc0xJQU5CRGpZQ2hBRWdBMEhraGdFMkFvQUJJQU1nQXlrRGdBRTNBeEFnQUNBSklBTkJFR29RUUF3RUN5QURRUUE2QUhRZ0F5QU1OZ0p3SUFVZ0EwSHdBR29RUVVVTkF3d0JDeUFFUWJqd0QwWUVRQ0FHUVRScUlnd29BZ0FpQkNBR0tBSTRRUUowYWlFT0FrQURRQ0FFSUE1R0RRRWdBQ0FFS0FJQUlna1FNeG9DUUNBSlJRMEFJQWtvQWdSQmtJSVNSdzBBSUFBZ0NVRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0EwRU5OZ0tFQVNBRFFhYUhBVFlDZ0FFZ0F5QURLUU9BQVRjREdDQUFJQWtnQTBFWWFoQkFEQVFMSUFOQkFEb0FkQ0FESUF3MkFuQWdCU0FEUWZBQWFoQkJSUTBEREFFTElBUkIrUEFQUmdSQUlBWkJNR29pRENnQ0FDSUVJQVlvQWpSQkFuUnFJUTRDUUFOQUlBUWdEa1lOQVNBQUlBUW9BZ0FpQ1JBekdnSkFJQWxGRFFBZ0NTZ0NCRUdRZ2hKSERRQWdBQ0FKUVNScUVFTWdCRUVFYWlFRURBRUxDeUFEUVE4MkFvUUJJQU5CODRZQk5nS0FBU0FESUFNcEE0QUJOd01nSUFBZ0NTQURRU0JxRUVBTUJBc2dBMEVBT2dCMElBTWdERFlDY0NBRklBTkI4QUJxRUVGRkRRTU1BUXNnQkVINDhROUdCRUFnQmtISUFHb2lEQ2dDQUNJRUlBWW9Ba3hCQW5ScUlRNENRQU5BSUFRZ0RrWU5BU0FBSUFRb0FnQWlDUkF6R2dKQUlBbEZEUUFnQ1NnQ0JFR1FnaEpIRFFBZ0FDQUpRU1JxRUVNZ0JFRUVhaUVFREFFTEN5QURRUkUyQW9RQklBTkJsSWNCTmdLQUFTQURJQU1wQTRBQk53TW9JQUFnQ1NBRFFTaHFFRUFNQkFzZ0EwRUFPZ0IwSUFNZ0REWUNjQ0FGSUFOQjhBQnFFRUZGRFFNTUFRc2dCRUdJaFJKSERRRWdCa0V3YWlJTUtBSUFJZ1FnQmlnQ05FRUNkR29oRGdKQUEwQWdCQ0FPUmcwQklBQWdCQ2dDQUNJSkVETWFBa0FnQ1VVTkFDQUpLQUlFUVpDQ0VrY05BQ0FBSUFsQkpHb1FReUFFUVFScUlRUU1BUXNMSUFOQkVEWUNoQUVnQTBHMGh3RTJBb0FCSUFNZ0F5a0RnQUUzQXpBZ0FDQUpJQU5CTUdvUVFBd0RDeUFEUVFBNkFIUWdBeUFNTmdKd0lBVWdBMEh3QUdvUVFVVU5BZ3NnQUNBSEVJd0NDeUFBS0FLTU5DRU1JQUFnQnpZQ2pEUWdBQ0FISUFBb0FwQTBJZzRnQnhzMkFwQTBJQUFnQUNnQ2xEUWlEMEVCYWlJRU5nS1VOQUovSUFSQmdBRlBCRUFnQTBId0FHb2lCRUgvQUJCZklBTkJnQUZxSWdsQnBxd0tJQVFRTlNBQUlBa2dCa0VRYWhBbklBa1FEeG9nQkJBUEdrRUFEQUVMSUFNZ0F5Z0NiQ2dDS0VIRUFHbzJBb0FCSUFOQkFEb0FoQUVnQjBFQUlBQWdBMEdBQVdvUTJnWWJDeUVFSUFBZ0RqWUNrRFFnQUNBUE5nS1VOQ0FBSUF3MkFvdzBEQUVMUVFBaEJBc2dDeENMQWlBRVJRMEFJQUlnQWlrREdDQUhLUU1ZaEVKeGcwSUloRGNER0NBQ0lTOUJBQ0VqSXdCQk1Hc2lBU1FBQWtBQ1FDQUNLUU1ZVUFSQUlBRkJJR3BCZytVQUVCUWhCQ0FDS0FJSUlnSXBBaEFoTlNBQklBSW9BaUEyQWhnZ0FTQTFOd01RSUFFZ05UY0RDQ0FGSUFRZ0FVRUlhaEFuREFFTFFRRWhCQ0FDS0FMc0FpSUdSUTBCSUFZb0FoUVFoQUVpQmlnQ0JFSFFwUkpHRFFFZ0FVRWdhaUlFSUFVb0FnZ2dCaENuQVNBQlFRaHFJZ1pCMnNnSklBUVFOU0FGSUFZZ0FpZ0M3QUlvQWdoQkVHb1FKeUFHRUE4YUN5QUVFQThhUVFBaEJBc2dBVUV3YWlRQUlDOGdJeUFFR3lFQkN5QUFJQW8yQXBBMElBQWdEVFlDbERRZ0FDQUlOZ0tNTkF3QkMwRUFJUUVMSUFzUWl3SWdBMEdRQVdva0FDQUJEQU1MSUFKQnVQQVBSZ1JBSXdCQmtBRnJJZ0lrQUNBQ0lBRTJBbXdnQUNnQ0FDSUJFQndnQVVHb0FXb2lCQ0VrSUFRUThRVWhBeUFDS0FKc0lRWWdBRUdRTkdvaUJ5Z0NBQ0VGSUFCQmlEUnFJZ2tvQWdBaEN5TUFRUkJySWdFa0FDQUJJQVUyQWdnZ0FTQUdOZ0lNSUFFZ0N6WUNCQ0FESUFFb0Fnd2dBU2dDQ0NBQktBSUVFT3dGSWdOQnVKTVNOZ0lFSUFOQjZKTVNOZ0lBSUFOQkFEWUM3QUlnQTBIWWt4STJBZ0FnQVVFUWFpUUFJQ1FnQXlJR0VDZ2dCQ0FFS0FJWVFRRnFOZ0lZSUFJb0Ftd2hBeUFBS0FJQUlnRVFIQ0FCUWVRQmFpQURJQVlRdVFFZ0FFRzRIV29pQ3hDTkFpQUFRYXdkYWlFRkFrQUNRQUpBSUFORkRRQUNRQ0FES0FJRUlnRkJ1UE1QUmdSQUlBTkI0QUJxSWdnb0FnQWlBU0FES0FKa1FRSjBhaUVLQWtBRFFDQUJJQXBHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUU5nS0VBU0FDUVlPSEFUWUNnQUVnQWlBQ0tRT0FBVGNET0NBQUlBUWdBa0U0YWhCQURBUUxJQUpCQURvQWRDQUNJQWcyQW5BZ0JTQUNRZkFBYWhCQkRRRU1Bd3NnQVVIWWhCSkdCRUFnQTBFNGFpSUlLQUlBSWdFZ0F5Z0NQRUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEallDaEFFZ0FrSGtoZ0UyQW9BQklBSWdBaWtEZ0FFM0EwQWdBQ0FFSUFKQlFHc1FRQXdFQ3lBQ1FRQTZBSFFnQWlBSU5nSndJQVVnQWtId0FHb1FRVVVOQXd3QkN5QUJRYmp3RDBZRVFDQURRVFJxSWdnb0FnQWlBU0FES0FJNFFRSjBhaUVLQWtBRFFDQUJJQXBHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFTk5nS0VBU0FDUWFhSEFUWUNnQUVnQWlBQ0tRT0FBVGNEU0NBQUlBUWdBa0hJQUdvUVFBd0VDeUFDUVFBNkFIUWdBaUFJTmdKd0lBVWdBa0h3QUdvUVFVVU5Bd3dCQ3lBQlFmandEMFlFUUNBRFFUQnFJZ2dvQWdBaUFTQURLQUkwUVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VQTmdLRUFTQUNRZk9HQVRZQ2dBRWdBaUFDS1FPQUFUY0RVQ0FBSUFRZ0FrSFFBR29RUUF3RUN5QUNRUUE2QUhRZ0FpQUlOZ0p3SUFVZ0FrSHdBR29RUVVVTkF3d0JDeUFCUWZqeEQwWUVRQ0FEUWNnQWFpSUlLQUlBSWdFZ0F5Z0NURUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJFVFlDaEFFZ0FrR1Vod0UyQW9BQklBSWdBaWtEZ0FFM0ExZ2dBQ0FFSUFKQjJBQnFFRUFNQkFzZ0FrRUFPZ0IwSUFJZ0NEWUNjQ0FGSUFKQjhBQnFFRUZGRFFNTUFRc2dBVUdJaFJKSERRRWdBMEV3YWlJSUtBSUFJZ0VnQXlnQ05FRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FBSUFSQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVEWUNoQUVnQWtHMGh3RTJBb0FCSUFJZ0Fpa0RnQUUzQTJBZ0FDQUVJQUpCNEFCcUVFQU1Bd3NnQWtFQU9nQjBJQUlnQ0RZQ2NDQUZJQUpCOEFCcUVFRkZEUUlMSUFBZ0JoQ01BZ3NnQUNnQ2pEUWhDQ0FBSUFZMkFvdzBJQUFnQmlBQUtBS1FOQ0lLSUFZYk5nS1FOQ0FBSUFBb0FwUTBJZzFCQVdvaUFUWUNsRFFDUUNBQlFZQUJUd1JBSUFKQjhBQnFJZ0ZCL3dBUVh5QUNRWUFCYWlJRVFhYXNDaUFCRURVZ0FDQUVJQU5CRUdvUUp5QUVFQThhSUFFUUR4cEJBQ0VCREFFTFFRQWhBU0FBSUFBZ0FpZ0NiQ2dDSkJDRkFoRGpBaUlEUlEwQUlBWWdBellDN0FJZ0JpQURLUU1nUW5lRE53TVlJQUFnQWlnQ2JDZ0NLQkF6R2lBQUtBSUFJQUlvQW14QktHb2dCeUFKRUpVZUlRY2dBaWdDYkNnQ0tDRURJQUFvQWdBaUJCQWNJQVJCNUFGcUlBTWdCeEM1QVNBTEVJMENBa0FDUUFKQUlBTkZEUUFDUUNBREtBSUVJZ1JCdVBNUFJnUkFJQU5CNEFCcUlnd29BZ0FpQkNBREtBSmtRUUowYWlFT0FrQURRQ0FFSUE1R0RRRWdBQ0FFS0FJQUlna1FNeG9DUUNBSlJRMEFJQWtvQWdSQmtJSVNSdzBBSUFBZ0NVRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0FrRVFOZ0tFQVNBQ1FZT0hBVFlDZ0FFZ0FpQUNLUU9BQVRjRENDQUFJQWtnQWtFSWFoQkFEQVFMSUFKQkFEb0FkQ0FDSUF3MkFuQWdCU0FDUWZBQWFoQkJEUUVNQXdzZ0JFSFloQkpHQkVBZ0EwRTRhaUlNS0FJQUlnUWdBeWdDUEVFQ2RHb2hEZ0pBQTBBZ0JDQU9SZzBCSUFBZ0JDZ0NBQ0lKRURNYUFrQWdDVVVOQUNBSktBSUVRWkNDRWtjTkFDQUFJQWxCSkdvUVF5QUVRUVJxSVFRTUFRc0xJQUpCRGpZQ2hBRWdBa0hraGdFMkFvQUJJQUlnQWlrRGdBRTNBeEFnQUNBSklBSkJFR29RUUF3RUN5QUNRUUE2QUhRZ0FpQU1OZ0p3SUFVZ0FrSHdBR29RUVVVTkF3d0JDeUFFUWJqd0QwWUVRQ0FEUVRScUlnd29BZ0FpQkNBREtBSTRRUUowYWlFT0FrQURRQ0FFSUE1R0RRRWdBQ0FFS0FJQUlna1FNeG9DUUNBSlJRMEFJQWtvQWdSQmtJSVNSdzBBSUFBZ0NVRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0FrRU5OZ0tFQVNBQ1FhYUhBVFlDZ0FFZ0FpQUNLUU9BQVRjREdDQUFJQWtnQWtFWWFoQkFEQVFMSUFKQkFEb0FkQ0FDSUF3MkFuQWdCU0FDUWZBQWFoQkJSUTBEREFFTElBUkIrUEFQUmdSQUlBTkJNR29pRENnQ0FDSUVJQU1vQWpSQkFuUnFJUTRDUUFOQUlBUWdEa1lOQVNBQUlBUW9BZ0FpQ1JBekdnSkFJQWxGRFFBZ0NTZ0NCRUdRZ2hKSERRQWdBQ0FKUVNScUVFTWdCRUVFYWlFRURBRUxDeUFDUVE4MkFvUUJJQUpCODRZQk5nS0FBU0FDSUFJcEE0QUJOd01nSUFBZ0NTQUNRU0JxRUVBTUJBc2dBa0VBT2dCMElBSWdERFlDY0NBRklBSkI4QUJxRUVGRkRRTU1BUXNnQkVINDhROUdCRUFnQTBISUFHb2lEQ2dDQUNJRUlBTW9Ba3hCQW5ScUlRNENRQU5BSUFRZ0RrWU5BU0FBSUFRb0FnQWlDUkF6R2dKQUlBbEZEUUFnQ1NnQ0JFR1FnaEpIRFFBZ0FDQUpRU1JxRUVNZ0JFRUVhaUVFREFFTEN5QUNRUkUyQW9RQklBSkJsSWNCTmdLQUFTQUNJQUlwQTRBQk53TW9JQUFnQ1NBQ1FTaHFFRUFNQkFzZ0FrRUFPZ0IwSUFJZ0REWUNjQ0FGSUFKQjhBQnFFRUZGRFFNTUFRc2dCRUdJaFJKSERRRWdBMEV3YWlJTUtBSUFJZ1FnQXlnQ05FRUNkR29oRGdKQUEwQWdCQ0FPUmcwQklBQWdCQ2dDQUNJSkVETWFBa0FnQ1VVTkFDQUpLQUlFUVpDQ0VrY05BQ0FBSUFsQkpHb1FReUFFUVFScUlRUU1BUXNMSUFKQkVEWUNoQUVnQWtHMGh3RTJBb0FCSUFJZ0Fpa0RnQUUzQXpBZ0FDQUpJQUpCTUdvUVFBd0RDeUFDUVFBNkFIUWdBaUFNTmdKd0lBVWdBa0h3QUdvUVFVVU5BZ3NnQUNBSEVJd0NDeUFBS0FLTU5DRU1JQUFnQnpZQ2pEUWdBQ0FISUFBb0FwQTBJZzRnQnhzMkFwQTBJQUFnQUNnQ2xEUWlEMEVCYWlJRU5nS1VOQUovSUFSQmdBRlBCRUFnQWtId0FHb2lCRUgvQUJCZklBSkJnQUZxSWdsQnBxd0tJQVFRTlNBQUlBa2dBMEVRYWhBbklBa1FEeG9nQkJBUEdrRUFEQUVMSUFJZ0FpZ0NiQ2dDS0VIRUFHbzJBb0FCSUFKQkFEb0FoQUVnQjBFQUlBQWdBa0dBQVdvUTJnWWJDeUVFSUFBZ0RqWUNrRFFnQUNBUE5nS1VOQ0FBSUF3MkFvdzBEQUVMUVFBaEJBc2dDeENMQWlBRVJRMEFJQVlnQmlrREdDQUhLUU1ZaENJMU53TVlJQVlDZmlBQ0tBSnNLQUlzSWdNRVFDQUFJQU1RTXhvZ0FDQUNLQUpzS0FJc0VJTU1JZ05GRFFJZ0Jpa0RHQ0FES1FNWWhBd0JDeUExUWdpRUN6Y0RHQ01BUVNCcklnRWtBQ0FHS0FMc0FpZ0NGQkNFQVNJREtBSUVJZ1JCMEtVU1J3UkFJQUVnQlNnQ0NDQURFS2NCSUFGQkVHb2lBMEdLeUFrZ0FSQTFJQVVnQXlBR0tBTHNBaWdDQ0VFUWFoQW5JQU1RRHhvZ0FSQVBHZ3NnQVVFZ2FpUUFJQVpCQUNBRVFkQ2xFa1liSVFFTElBQWdDallDa0RRZ0FDQU5OZ0tVTkNBQUlBZzJBb3cwREFFTFFRQWhBUXNnQ3hDTEFpQUNRWkFCYWlRQUlBRU1Bd3NnQWtINDhROUdCRUFqQUVHZ0FXc2lCU1FBSUFVZ0FUWUNPQ0FBS0FJQUlnRVFIQ0FCUWFnQmFpSUVJU1VnQkJDakhTRUNJQVVvQWpnaEF5QUFRWkEwYWlnQ0FDRUdJQUJCaURScUtBSUFJUWNqQUVIQUFXc2lBU1FBSUFFZ0JqWUN1QUVnQVNBRE5nSzhBU0FCSUFjMkFyUUJJQUlnQVNnQ3ZBRWdBU2dDdUFFZ0FTZ0N0QUVRN0FVaUFrSEltaEkyQWdRZ0FrR1lteEkyQWdBZ0FrSUFOd0xzQWlBQ1FlaWFFallDQUNBQ1FRQTJBdlFDSUFFb0FyZ0JSUVJBSUFGQm01UUZRUjVCQ1NBQlFhQUJhaEFkSWdNUUZ5SUdRUmhxUVltZENCQU9HaUFHRUJnZ0F4QWVDeUFCS0FLMEFVVUVRQ0FCUVp1VUJVRWZRUWtnQVVHZ0FXb1FIU0lERUJjaUJrRVlha0hNc1FnUURob2dCaEFZSUFNUUhnc2dBVUhBQVdva0FDQWxJQUlpQXhBb0lBUWdCQ2dDR0VFQmFqWUNHQ0FGS0FJNElRSWdBQ2dDQUNJQkVCd2dBVUhrQVdvZ0FpQURFTGtCSUFCQnVCMXFJaFFRalFJZ0FFR3NIV29oQ3dKQUFrQUNRQ0FDUlEwQUFrQWdBaWdDQkNJQlFianpEMFlFUUNBQ1FlQUFhaUlHS0FJQUlnRWdBaWdDWkVFQ2RHb2hCd0pBQTBBZ0FTQUhSZzBCSUFBZ0FTZ0NBQ0lFRURNYUFrQWdCRVVOQUNBRUtBSUVRWkNDRWtjTkFDQUFJQVJCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQVZCRURZQ2RDQUZRWU9IQVRZQ2NDQUZJQVVwQTNBM0F3Z2dBQ0FFSUFWQkNHb1FRQXdFQ3lBRlFRQTZBRVFnQlNBR05nSkFJQXNnQlVGQWF4QkJEUUVNQXdzZ0FVSFloQkpHQkVBZ0FrRTRhaUlHS0FJQUlnRWdBaWdDUEVFQ2RHb2hCd0pBQTBBZ0FTQUhSZzBCSUFBZ0FTZ0NBQ0lFRURNYUFrQWdCRVVOQUNBRUtBSUVRWkNDRWtjTkFDQUFJQVJCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQVZCRGpZQ2RDQUZRZVNHQVRZQ2NDQUZJQVVwQTNBM0F4QWdBQ0FFSUFWQkVHb1FRQXdFQ3lBRlFRQTZBRVFnQlNBR05nSkFJQXNnQlVGQWF4QkJSUTBEREFFTElBRkJ1UEFQUmdSQUlBSkJOR29pQmlnQ0FDSUJJQUlvQWpoQkFuUnFJUWNDUUFOQUlBRWdCMFlOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFGUVEwMkFuUWdCVUdtaHdFMkFuQWdCU0FGS1FOd053TVlJQUFnQkNBRlFSaHFFRUFNQkFzZ0JVRUFPZ0JFSUFVZ0JqWUNRQ0FMSUFWQlFHc1FRVVVOQXd3QkN5QUJRZmp3RDBZRVFDQUNRVEJxSWdZb0FnQWlBU0FDS0FJMFFRSjBhaUVIQWtBRFFDQUJJQWRHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQlVFUE5nSjBJQVZCODRZQk5nSndJQVVnQlNrRGNEY0RJQ0FBSUFRZ0JVRWdhaEJBREFRTElBVkJBRG9BUkNBRklBWTJBa0FnQ3lBRlFVQnJFRUZGRFFNTUFRc2dBVUg0OFE5R0JFQWdBa0hJQUdvaUJpZ0NBQ0lCSUFJb0FreEJBblJxSVFjQ1FBTkFJQUVnQjBZTkFTQUFJQUVvQWdBaUJCQXpHZ0pBSUFSRkRRQWdCQ2dDQkVHUWdoSkhEUUFnQUNBRVFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBRlFSRTJBblFnQlVHVWh3RTJBbkFnQlNBRktRTndOd01vSUFBZ0JDQUZRU2hxRUVBTUJBc2dCVUVBT2dCRUlBVWdCallDUUNBTElBVkJRR3NRUVVVTkF3d0JDeUFCUVlpRkVrY05BU0FDUVRCcUlnWW9BZ0FpQVNBQ0tBSTBRUUowYWlFSEFrQURRQ0FCSUFkR0RRRWdBQ0FCS0FJQUlnUVFNeG9DUUNBRVJRMEFJQVFvQWdSQmtJSVNSdzBBSUFBZ0JFRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0JVRVFOZ0owSUFWQnRJY0JOZ0p3SUFVZ0JTa0RjRGNETUNBQUlBUWdCVUV3YWhCQURBTUxJQVZCQURvQVJDQUZJQVkyQWtBZ0N5QUZRVUJyRUVGRkRRSUxJQUFnQXhDTUFnc2dBQ2dDakRRaEdTQUFJQU0yQW93MElBQWdBeUFBS0FLUU5DSWFJQU1iTmdLUU5DQUFJQUFvQXBRMElodEJBV29pQVRZQ2xEUUNmd0pBQWtBZ0FVR0FBVThFUUNBRlFVQnJJZ0ZCL3dBUVh5QUZRZkFBYWlJRFFhYXNDaUFCRURVZ0FDQURJQUpCRUdvUUp5QURFQThhSUFFUUR4b01BUXNnQUNBQUlBVW9BamdvQWlRUWhRSVE0d0lpQWcwQkMwRUFEQUVMSUFNZ0Fpa0RJRUozZ3pjREdDQUZJQUlvQWhRMkFwd0JJQVZDZ0lDQWdJQUJOd0tVQVNBRklBVkI4QUJxSWdFMkFwQUJJQUVnQlVHY0FXb1FKQ0FGS0FJNElnRW9BamdpQkNBQktBSThRUUowYWlFR0lBVkJrQUZxSVFjQ1FBTkFJQVFnQmtjRVFDQUVLQUlBSWdrb0FqUWlBU0FKS0FJNFFRSjBhaUVKQTBBZ0FTQUpSd1JBSUFFb0FnQW9BaVFpQ0FSQUlBQWdDQkNGQWlJSVJRUkFRUUFoQkF3R0N5QUZJQWdvQWhRUWhBRTJBa0FnQlVId0FHb2dCVUZBYXhBa0N5QUJRUVJxSVFFTUFRc0xJQVJCQkdvaEJBd0JDd3NnQlVFQU9nQnNJQVVnQnpZQ2FBSkFJQVZCNkFCcUVMY0xJZ2tFUUNBSkVQTUhEUUVMSUFBb0FnQVExQUloQ1F0QkFDRUVJQUFnQWlBSkVKWUNSUTBBSUFVb0FqZ2lBaWdDV0NJQklBSW9BbHhCQW5ScUlRWUNRQU5BSUFFZ0JrWU5BU0FBSUFFb0FnQWlBaEF6R2dKQUlBSkZEUUFnQWlnQ0JFR1FnaEpIRFFBZ0FDQUNRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUZRUXMyQWtRZ0JVSGJGellDUUNBRklBVXBBMEEzQXdBZ0FDQUNJQVVRUUF3QkN5QUZRUUE2QUdRZ0JTQUZLQUk0UWRnQWFqWUNZQ0FMSUFWQjRBQnFFRUZGRFFBZ0JVS0FnSUNBd0FBM0FsUWdCU2dDT0NFQklBVWdCVUZBYXlJQ05nSlFJQUlnQVNnQ1BCRFdBaUFGS0FJNElnSW9BamdpQVNBQ0tBSThRUUowYWlFTUlBTkI3QUpxSVE0Q2Z3SkFBMEFnQVNBTVJnMEJJQUFnQVNnQ0FDSUNFRE1hSXdCQjRBQnJJZ2NrQUNBSElBSTJBandnQUNnQ0FDSUNFQndnQUVHUU5Hb2hDaUFBUVlnMGFpRU5JQUpCcUFGcUlnSWhKaUFDS0FJRUlRWUNRQ0FDS0FJSVFRZHFRWGh4SWdoQmdmMERhMEgrLzN0TEJFQWdCaUVFREFFTElBSkJrSUFFUVJBUTJRSWlCRFlDQkVFQUlRZ2dCRUVBTmdLQWdBUWdCZ1JBSUFZZ0JEWUNnSUFFREFFTElBSWdCRFlDQUFzZ0FpQUlRWUFEYWpZQ0NDQUhLQUk4SVE4Z0NpZ0NBQ0VLSUEwb0FnQWhEU01BUWNBQmF5SUdKQUFnQmlBS05nSzRBU0FHSUE4MkFyd0JJQVlnRFRZQ3RBRWdCQ0FJYWlBR0tBSzhBU0FHS0FLNEFTQUdLQUswQVJEc0JTSUVRWmlhRWpZQ0JDQUVRYWliRWpZQ0FDQUVRZ0EzQXV3Q0lBUkIrSm9TTmdJQUlBUkNBRGNDOUFJZ0JpZ0N1QUZGQkVBZ0JrR2JsQVZCTEVFSklBWkJvQUZxRUIwaUNCQVhJZ3BCR0dwQmlaMElFQTRhSUFvUUdDQUlFQjRMSUFZb0FyUUJSUVJBSUFaQm01UUZRUzFCQ1NBR1FhQUJhaEFkSWdnUUZ5SUtRUmhxUWN5eENCQU9HaUFLRUJnZ0NCQWVDeUFHUWNBQmFpUUFJQ1lnQkJBb0lBSWdBaWdDR0VFQmFqWUNHQ0FFSVFZZ0J5Z0NQQ0VDSUFBb0FnQWlCQkFjSUFSQjVBRnFJQUlnQmhDNUFTQUFRYmdkYWlJUEVJMENBa0FDUUFKQUlBSkZEUUFnQUVHc0hXb2hDQUpBSUFJb0FnUWlCRUc0OHc5R0JFQWdBa0hnQUdvaURTZ0NBQ0lFSUFJb0FtUkJBblJxSVJFQ1FBTkFJQVFnRVVZTkFTQUFJQVFvQWdBaUNoQXpHZ0pBSUFwRkRRQWdDaWdDQkVHUWdoSkhEUUFnQUNBS1FTUnFFRU1nQkVFRWFpRUVEQUVMQ3lBSFFSQTJBbFFnQjBHRGh3RTJBbEFnQnlBSEtRTlFOd01JSUFBZ0NpQUhRUWhxRUVBTUJBc2dCMEVBT2dCRUlBY2dEVFlDUUNBSUlBZEJRR3NRUVEwQkRBTUxJQVJCMklRU1JnUkFJQUpCT0dvaURTZ0NBQ0lFSUFJb0FqeEJBblJxSVJFQ1FBTkFJQVFnRVVZTkFTQUFJQVFvQWdBaUNoQXpHZ0pBSUFwRkRRQWdDaWdDQkVHUWdoSkhEUUFnQUNBS1FTUnFFRU1nQkVFRWFpRUVEQUVMQ3lBSFFRNDJBbFFnQjBIa2hnRTJBbEFnQnlBSEtRTlFOd01RSUFBZ0NpQUhRUkJxRUVBTUJBc2dCMEVBT2dCRUlBY2dEVFlDUUNBSUlBZEJRR3NRUVVVTkF3d0JDeUFFUWJqd0QwWUVRQ0FDUVRScUlnMG9BZ0FpQkNBQ0tBSTRRUUowYWlFUkFrQURRQ0FFSUJGR0RRRWdBQ0FFS0FJQUlnb1FNeG9DUUNBS1JRMEFJQW9vQWdSQmtJSVNSdzBBSUFBZ0NrRWthaEJESUFSQkJHb2hCQXdCQ3dzZ0IwRU5OZ0pVSUFkQnBvY0JOZ0pRSUFjZ0J5a0RVRGNER0NBQUlBb2dCMEVZYWhCQURBUUxJQWRCQURvQVJDQUhJQTAyQWtBZ0NDQUhRVUJyRUVGRkRRTU1BUXNnQkVINDhBOUdCRUFnQWtFd2FpSU5LQUlBSWdRZ0FpZ0NORUVDZEdvaEVRSkFBMEFnQkNBUlJnMEJJQUFnQkNnQ0FDSUtFRE1hQWtBZ0NrVU5BQ0FLS0FJRVFaQ0NFa2NOQUNBQUlBcEJKR29RUXlBRVFRUnFJUVFNQVFzTElBZEJEellDVkNBSFFmT0dBVFlDVUNBSElBY3BBMUEzQXlBZ0FDQUtJQWRCSUdvUVFBd0VDeUFIUVFBNkFFUWdCeUFOTmdKQUlBZ2dCMEZBYXhCQlJRMEREQUVMSUFSQitQRVBSZ1JBSUFKQnlBQnFJZzBvQWdBaUJDQUNLQUpNUVFKMGFpRVJBa0FEUUNBRUlCRkdEUUVnQUNBRUtBSUFJZ29RTXhvQ1FDQUtSUTBBSUFvb0FnUkJrSUlTUncwQUlBQWdDa0VrYWhCRElBUkJCR29oQkF3QkN3c2dCMEVSTmdKVUlBZEJsSWNCTmdKUUlBY2dCeWtEVURjREtDQUFJQW9nQjBFb2FoQkFEQVFMSUFkQkFEb0FSQ0FISUEwMkFrQWdDQ0FIUVVCckVFRkZEUU1NQVFzZ0JFR0loUkpIRFFFZ0FrRXdhaUlOS0FJQUlnUWdBaWdDTkVFQ2RHb2hFUUpBQTBBZ0JDQVJSZzBCSUFBZ0JDZ0NBQ0lLRURNYUFrQWdDa1VOQUNBS0tBSUVRWkNDRWtjTkFDQUFJQXBCSkdvUVF5QUVRUVJxSVFRTUFRc0xJQWRCRURZQ1ZDQUhRYlNIQVRZQ1VDQUhJQWNwQTFBM0F6QWdBQ0FLSUFkQk1Hb1FRQXdEQ3lBSFFRQTZBRVFnQnlBTk5nSkFJQWdnQjBGQWF4QkJSUTBDQ3lBQUlBWVFqQUlMSUFBb0FvdzBJUkVnQUNBR05nS01OQ0FBSUFZZ0FDZ0NrRFFpRXlBR0d6WUNrRFFnQUNBQUtBS1VOQ0lRUVFGcUlnUTJBcFEwQWtBQ1FDQUVRWUFCVHdSQUlBZEJRR3NpQkVIL0FCQmZJQWRCMEFCcUlnWkJwcXdLSUFRUU5TQUFJQVlnQWtFUWFoQW5JQVlRRHhvZ0JCQVBHZ3dCQ3lBR1FmQUNhaUlWSUFjb0Fqd29BamdRcXdRZ0J5Z0NQQ0lDS0FJMElnUWdBaWdDT0VFQ2RHb2hGaUFBUWFnZGFpRVhBMEFDUUNBRUlCWkhCRUFnQnlBRUtBSUFJZ0kyQWtBZ0FDQUNFRE1hSUFBb0FzUXJJUW9nQUVIRDBBRTJBc1FySUFBb0FzQXJJUTBnQUVFQk5nTEFLeUFIUVFBMkFsd2dCeWdDUUNnQ0pDSUNSUTBCQWtBZ0FDQVhJQUlRcWdRZ0NSQ1dBaUlDUlEwQUlBSW9BaFFRcmdsRkJFQWdBQ0FIUWRBQWFrSFUwZ01RRkNJQ0lBY29Ba0JCRUdvUUp5QUNFQThhREFFTElBY2dBaWdDSENJQ05nSmNJQUlOQWlBQUlBZEIwQUJxUWVmbUFoQVVJZ0lnQnlnQ1FFRVFhaEFuSUFJUUR4b0xJQUFnQ2pZQ3hDc2dBQ0FOTmdMQUt3d0RDeUFBSUFjb0Fqd29Ba0FRTXhvZ0FDQUhLQUk4S0FKQUVKY2VJZ0pGRFFJZ0JpQUNOZ0xzQWlBR0lBSXBBeGczQXhnTUF3c2dBQ2dDQUNJQ0VCd2dBa0dvQVdvaUNCRDhBeUVDSUFkQlFHc29BZ0FoR0NBSEtBSmNJUndnQWhEcEJ5SUNRYkNhRWpZQ0JDQUNRYmliRWpZQ0FDQUNJQncyQWd3Z0FpQVlOZ0lJSUFKQmlKc1NOZ0lBSUFnZ0FoQW9JQWdnQ0NnQ0dFRUJhallDR0NBSElBSTJBbEFnRlNBSFFkQUFhaERaQmlBQUlBbzJBc1FySUFBZ0RUWUN3Q3NnQkVFRWFpRUVEQUFMQUF0QkFDRUdDeUFBSUJNMkFwQTBJQUFnRURZQ2xEUWdBQ0FSTmdLTU5Bd0JDMEVBSVFZTElBOFFpd0lnQjBIZ0FHb2tBQ0FGSUFZMkFqd2dCZ1JBSUFWQlFHc2dCVUU4YWlJQ0VIRWdBeUFES1FNWUlBVW9BandwQXhpRU53TVlJQTRnQWhEWkJpQUFJQVVvQWp3UWpBSWdBVUVFYWlFQkRBRUxDMEVBREFFTElBTWdBeWtER0NJMVFnS0dRZ2lESURWQ2ZZT0VOd01ZSUFVb0FqZ2hDRUVBSVFwQkFDRUVJd0JCZ0FOcklnWWtBQUpBSUFnb0Fqd2lBa0dBZ0FGUEJFQWdCa0hRQW1vaUFTQUNFRjhnQmtIZ0Ftb2lBa0dRNHdrZ0FSQTFJQVpCOEFKcUlnUWdBa0dPM0FrUUxTQUdRY0FDYWlJSFFmLy9BQkJmSUFaQkNHb2lDU0FFSUFjUVRpQUxJQWtnQ0VFUWFoQW5JQWtRRHhvZ0J4QVBHaUFFRUE4YUlBSVFEeG9nQVJBUEdnd0JDeUFMS0FJSUlBZ29BaVFRcHdVaUVSRHpCMFVFUUNBTElBWkJDR3BCcFlFRUVCUWlBU0FJS0FJa1FSQnFFQ2NnQVJBUEdnd0JDeUFHUVFocUlnZENBRGNEc0FJZ0IwS0FnSUNBNEFBM0FxUUNJQWNnQnpZQ29BSWdCMEVHRUljUUlBZ29BamdpRHlBSUtBSThRUUowYWlFVkFuOENRQU5BSUE4Z0ZVY0VRQ0FMS0FJSUlRSWdEeWdDQUNFQkl3QkJvQUZySWdra0FDQUNLQUlBSWdvUUhBSi9JQXBCNUFGcUlBRVE0UUlpQ2tVRVFDQUNLQUlBSWdJUUhDQUpRZjJzQTBFelFRZ2dBa0hJQW1vUUZ5SUtRUmhxUWFhV0NSQU9HaUFLSUFFb0FnUkJCR29RbWdFaURVRVlhaUlDUWR6eERCQU9HaUFDUVlQa0N4QU9HaUFOUVJCcUlBRkJFR29RcmdNZ0FrSGIrQXdRRGhvZ0FrSHc5UXNRRGhvZ0FpQUJFTjBESUFvUUdFRUFEQUVMSUFwQkFDQUtLQUlFUVppYUVrWWJDeUVCSUFsQm9BRnFKQUFnQVNnQzhBSWhDaUFCS0FMMEFpRVdBMEFDUUNBS0lCWkhCRUFnQ2lnQ0FDSUJLQUlNSWdKRkJFQWdCRVVFUUNBQklRUU1Bd3NnQ3lBR1FmQUNhaUlDUWZIaEF4QVVJZ2tnQVNnQ0NFRVFhaEFuSUFrUUR4b2dDeUFDUWNUa0F4QVVJZ0lnQkNnQ0NFRVFhaENHQVF3R0N5QUNJQUlvQWdBb0FnZ1JBQUFnRVVjRVFDQUxJQVpCOEFKcVFhTFpCeEFVSWdJZ0FTZ0NDRUVRYWhBbkRBWUxJQVlnQVNnQ0RCQlpOZ0lBSUFFb0FnZ2hEU01BUWVBQmF5SUNKQUFnQnlnQ3BBSWdCeWdDc0FJaUNVR1dBV3hCbGdGcVFlUUFia2tFUUNBSElBbEJBWFJCQW1vUW1Cd0xJd0JCRUdzaUNTUUFJQWtnQmpVQ0FEY0RBQ0FKRUxNTUlRd2dCeWdDcEFJaERpQUNJQXcyQXR3QklBSWdEQ0FPY0RZQzJBRWdDVUVRYWlRQUlBY29BcVFDSWhkQkFXc2hHQ0FHTlFJQUlUVWdCeWdDb0FJaEV5QUNLQUxjQVNFUUlBSW9BdGdCSVF4QkFDRU9Ba0FEUUNBT0lCZEhCRUFnRXlBTVFUQnNhaUlKTFFBZ1JRUkFJQUlnRFNnQ0lEWUNHQ0FDSUEwcEFoZzNBeEFnQWlBTktRSVFOd01JSUFrZ05UY0RBQ0FKSUFJcEF3ZzNBd2dnQ1NBQ0tRTVFOd01RSUFrZ0FpZ0NHRFlDR0NBSlFRRTZBQ0FnQWlnQzNBRWhEU0FUSUF4Qk1HeHFJZ3dnRGpZQ0xDQU1JQTAyQWlnZ0J5QUhLQUt3QWtFQmFqWUNzQUlnQnlBSEtBSzBBa0VCYWpZQ3RBSWdCaUFKUVFocU5nTEVBaUFHUVFBMkFzQUNEQU1MQWtBZ0NTZ0NLQ0FRUncwQUlBa3BBd0FnTlZJTkFDQUdRUUkyQXNBQ0lBWWdDVUVJYWpZQ3hBSU1Bd3NnRGlBSktBSXNTd1JBSUFJZ0RTZ0NJRFlDd0FFZ0FpQU5LUUlZTndPNEFTQUNJQTBwQWhBM0E3QUJJQUlnRGpZQzFBRWdBaUFRTmdMUUFTQUNJRFUzQTZnQklBSkJBVG9BeUFFZ0FrRUlhaUlPSUFKQnFBRnFJZzFCTUJCOUdpQU5JQWxCTUJCOUdpQUpJQTVCTUJCOUlRa2dBaUFDS0FMVUFVRUJhallDMUFFZ0J5QU1RUUZxSUFjb0FxUUNjQ0FORUpjY0lBY2dCeWdDc0FKQkFXbzJBckFDSUFjZ0J5Z0N0QUpCQVdvMkFyUUNJQVlnQ1VFSWFqWUN4QUlnQmtFQU5nTEFBZ3dEQlNBTVFRRnFRUUFnRENBWVJ4c2hEQ0FPUVFGcUlRNE1BZ3NBQ3dzZ0FrRUlha0dHdFFOQjZ3TkJEaUFDUWFnQmFoQWRJZ2tRRnlJTlFSaHFRWlkxRUE0YUlBMFFHQ0FHUWdBM0FzQUNJQWtRSGdzZ0FrSGdBV29rQUNBR0tBTEFBa0VDUncwQklCRUVmeUFSS0FJRUVKVWNCVUVBQ3lFRUlBWW9BZ0FoQWdKQUlBUUVRQ0FHUWRBQ2FpQUNFUFlFREFFTElBWkIwQUpxSUFJUVh3c2dCa0hnQW1vaUJFR1lrUWtnQmtIUUFtb2lDUkExSUFaQjhBSnFJZ0lnQkVIem1na1FMU0FMSUFJZ0FTZ0NDRUVRYWhBbklBSVFEeG9nQkJBUEdpQUpFQThhSUFzZ0FrRys3Z01RRkNJQ0lBWW9Bc1FDRUlZQkRBVUxJQTlCQkdvaER3d0RDeUFLUVFScUlRb01BQXNBQ3d0QkFTQUVEUUVhSUFzZ0JrSHdBbXBCcCtJREVCUWlBaUFJUVJCcUVDY0xJQUlRRHhwQkFBc2hDaUFIRUtvY0lBY1F1UndMSUFaQmdBTnFKQUFnQ2dzaEJDQUZRVUJyRUY0TElBVkI4QUJxRUNNZ0EwRUFJQVFiQ3lFQklBQWdHallDa0RRZ0FDQWJOZ0tVTkNBQUlCazJBb3cwREFFTFFRQWhBUXNnRkJDTEFpQUZRYUFCYWlRQUlBRU1Bd3NnQWtINDZ3OUdCRUFqQUVIZ0FHc2lBaVFBSUFJZ0FUWUNQQ0FBS0FJQUlBSkJQR29nQUVHUU5Hb2dBRUdJTkdvUTVnUWhCQ0FDS0FJOElRTWdBQ2dDQUNJQkVCd2dBVUhrQVdvZ0F5QUVFTGtCSUFRUTB3SWhCeUFBUWJnZGFpSUxFSTBDSUFCQnJCMXFJUVlDUUFKQUFrQWdBMFVOQUFKQUlBTW9BZ1FpQVVHNDh3OUdCRUFnQTBIZ0FHb2lDU2dDQUNJQklBTW9BbVJCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUkEyQWxRZ0FrR0Rod0UyQWxBZ0FpQUNLUU5RTndNSUlBQWdCU0FDUVFocUVFQU1CQXNnQWtFQU9nQkVJQUlnQ1RZQ1FDQUdJQUpCUUdzUVFRMEJEQU1MSUFGQjJJUVNSZ1JBSUFOQk9Hb2lDU2dDQUNJQklBTW9BanhCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTQyQWxRZ0FrSGtoZ0UyQWxBZ0FpQUNLUU5RTndNUUlBQWdCU0FDUVJCcUVFQU1CQXNnQWtFQU9nQkVJQUlnQ1RZQ1FDQUdJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFiandEMFlFUUNBRFFUUnFJZ2tvQWdBaUFTQURLQUk0UVFKMGFpRUlBa0FEUUNBQklBaEdEUUVnQUNBQktBSUFJZ1VRTXhvQ1FDQUZSUTBBSUFVb0FnUkJrSUlTUncwQUlBQWdCVUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VOTmdKVUlBSkJwb2NCTmdKUUlBSWdBaWtEVURjREdDQUFJQVVnQWtFWWFoQkFEQVFMSUFKQkFEb0FSQ0FDSUFrMkFrQWdCaUFDUVVCckVFRkZEUU1NQVFzZ0FVSDQ4QTlHQkVBZ0EwRXdhaUlKS0FJQUlnRWdBeWdDTkVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRHpZQ1ZDQUNRZk9HQVRZQ1VDQUNJQUlwQTFBM0F5QWdBQ0FGSUFKQklHb1FRQXdFQ3lBQ1FRQTZBRVFnQWlBSk5nSkFJQVlnQWtGQWF4QkJSUTBEREFFTElBRkIrUEVQUmdSQUlBTkJ5QUJxSWdrb0FnQWlBU0FES0FKTVFRSjBhaUVJQWtBRFFDQUJJQWhHRFFFZ0FDQUJLQUlBSWdVUU14b0NRQ0FGUlEwQUlBVW9BZ1JCa0lJU1J3MEFJQUFnQlVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUk5nSlVJQUpCbEljQk5nSlFJQUlnQWlrRFVEY0RLQ0FBSUFVZ0FrRW9haEJBREFRTElBSkJBRG9BUkNBQ0lBazJBa0FnQmlBQ1FVQnJFRUZGRFFNTUFRc2dBVUdJaFJKSERRRWdBMEV3YWlJSktBSUFJZ0VnQXlnQ05FRUNkR29oQ0FKQUEwQWdBU0FJUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVEWUNWQ0FDUWJTSEFUWUNVQ0FDSUFJcEExQTNBekFnQUNBRklBSkJNR29RUUF3REN5QUNRUUE2QUVRZ0FpQUpOZ0pBSUFZZ0FrRkFheEJCUlEwQ0N5QUFJQVFRakFJTElBQW9Bb3cwSVFnZ0FDQUVOZ0tNTkNBQUlBY2dBQ2dDa0RRaUNpQUhHellDa0RRZ0FDQUFLQUtVTkNJSFFRRnFJZ0UyQXBRMEFrQWdBVUdBQVU4RVFDQUNRVUJySWdGQi93QVFYeUFDUWRBQWFpSUVRYWFzQ2lBQkVEVWdBQ0FFSUFOQkVHb1FKeUFFRUE4YUlBRVFEeHBCQUNFQkRBRUxRUUFoQVNBQUlBSW9BandvQWlRUWhRSWlBMFVOQUNBQ0tBSThJZ2tvQWlRb0FnUWhCU0FBSUFrb0FpZ1FoUUlpQ1VVTkFDQUZRZWlERWtjRVFDQUFJQWtnQXlnQ0ZCQ0VBUkNXQWlJSlJRMEJDeUFBSUFrUTR3SWlDVVVOQUNBRUlBa3BBeUFpTlRjREdDQUZRZWlERWtjRVFDQUVJQU1wQXlBZ05ZUTNBeGdnQUNBREVOY1FDeUFFUVFBZ0JpQUNLQUk4SWdFZ0FFR29IV29nQVNnQ0tCQ25CUkNwSEJzaEFRc2dBQ0FLTmdLUU5DQUFJQWMyQXBRMElBQWdDRFlDakRRTUFRdEJBQ0VCQ3lBTEVJc0NJQUpCNEFCcUpBQWdBUXdEQ3lBQ1FianNEMFlFUUNNQVFlQUFheUlESkFBZ0F5QUJOZ0k4SUFBb0FnQWdBMEU4YWlBQVFaQTBhaUFBUVlnMGFoRG1CQ0VDSUFNb0Fqd2hCQ0FBS0FJQUlnRVFIQ0FCUWVRQmFpQUVJQUlRdVFFZ0FoRFRBaUVISUFCQnVCMXFJZ2tRalFJZ0FFR3NIV29oQmdKQUFrQUNRQ0FFUlEwQUFrQWdCQ2dDQkNJQlFianpEMFlFUUNBRVFlQUFhaUlMS0FJQUlnRWdCQ2dDWkVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRURZQ1ZDQURRWU9IQVRZQ1VDQURJQU1wQTFBM0F3Z2dBQ0FGSUFOQkNHb1FRQXdFQ3lBRFFRQTZBRVFnQXlBTE5nSkFJQVlnQTBGQWF4QkJEUUVNQXdzZ0FVSFloQkpHQkVBZ0JFRTRhaUlMS0FJQUlnRWdCQ2dDUEVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQU5CRGpZQ1ZDQURRZVNHQVRZQ1VDQURJQU1wQTFBM0F4QWdBQ0FGSUFOQkVHb1FRQXdFQ3lBRFFRQTZBRVFnQXlBTE5nSkFJQVlnQTBGQWF4QkJSUTBEREFFTElBRkJ1UEFQUmdSQUlBUkJOR29pQ3lnQ0FDSUJJQVFvQWpoQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVEwMkFsUWdBMEdtaHdFMkFsQWdBeUFES1FOUU53TVlJQUFnQlNBRFFSaHFFRUFNQkFzZ0EwRUFPZ0JFSUFNZ0N6WUNRQ0FHSUFOQlFHc1FRVVVOQXd3QkN5QUJRZmp3RDBZRVFDQUVRVEJxSWdzb0FnQWlBU0FFS0FJMFFRSjBhaUVJQWtBRFFDQUJJQWhHRFFFZ0FDQUJLQUlBSWdVUU14b0NRQ0FGUlEwQUlBVW9BZ1JCa0lJU1J3MEFJQUFnQlVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQTBFUE5nSlVJQU5CODRZQk5nSlFJQU1nQXlrRFVEY0RJQ0FBSUFVZ0EwRWdhaEJBREFRTElBTkJBRG9BUkNBRElBczJBa0FnQmlBRFFVQnJFRUZGRFFNTUFRc2dBVUg0OFE5R0JFQWdCRUhJQUdvaUN5Z0NBQ0lCSUFRb0FreEJBblJxSVFnQ1FBTkFJQUVnQ0VZTkFTQUFJQUVvQWdBaUJSQXpHZ0pBSUFWRkRRQWdCU2dDQkVHUWdoSkhEUUFnQUNBRlFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBRFFSRTJBbFFnQTBHVWh3RTJBbEFnQXlBREtRTlFOd01vSUFBZ0JTQURRU2hxRUVBTUJBc2dBMEVBT2dCRUlBTWdDellDUUNBR0lBTkJRR3NRUVVVTkF3d0JDeUFCUVlpRkVrY05BU0FFUVRCcUlnc29BZ0FpQVNBRUtBSTBRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVFOZ0pVSUFOQnRJY0JOZ0pRSUFNZ0F5a0RVRGNETUNBQUlBVWdBMEV3YWhCQURBTUxJQU5CQURvQVJDQURJQXMyQWtBZ0JpQURRVUJyRUVGRkRRSUxJQUFnQWhDTUFnc2dBQ2dDakRRaEJTQUFJQUkyQW93MElBQWdCeUFBS0FLUU5DSUxJQWNiTmdLUU5DQUFJQUFvQXBRMElnZEJBV29pQVRZQ2xEUUNmeUFCUVlBQlR3UkFJQU5CUUdzaUFVSC9BQkJmSUFOQjBBQnFJZ0pCcHF3S0lBRVFOU0FBSUFJZ0JFRVFhaEFuSUFJUUR4b2dBUkFQR2tFQURBRUxJQUpDQWpjREdDQUNJVEJCQUNFbkl3QkJFR3NpQkNRQUFuOENRQUovSUFJaUFSQzJIQVJBSUFJUTB3SU1BUXNEUUVFQUlBSW9BZ3dpQWtVTkFSb2dBaEMySEVVTkFBc2dBaERUQWd0RkJFQWdCaUFFUWRya0F4QVVJZ0lnQVNnQ0NFRVFhaEFuREFFTFFRRkJBU0FCRUpBUVJRMEJHaUFHSUFSQmtvZ0lFQlFpQWlBQktBSUlRUkJxRUNjTElBSVFEeHBCQUFzaEFTQUVRUkJxSkFBZ01DQW5JQUViQ3lFQklBQWdDellDa0RRZ0FDQUhOZ0tVTkNBQUlBVTJBb3cwREFFTFFRQWhBUXNnQ1JDTEFpQURRZUFBYWlRQUlBRU1Bd3NnQWtHQWhCSkdCRUFqQUVIZ0FHc2lBaVFBSUFJZ0FUWUNQQ0FBS0FJQUlnRVFIQ0FCUWFnQmFpSUVJU2dnQkJEeEJTRURJQUlvQWp3aEJpQUFRWkEwYWlnQ0FDRUZJQUJCaURScUtBSUFJUWNqQUVFUWF5SUJKQUFnQVNBRk5nSUlJQUVnQmpZQ0RDQUJJQWMyQWdRZ0F5QUJLQUlNSUFFb0FnZ2dBU2dDQkJEc0JTSURRY0NQRWpZQ0JDQURRZkNQRWpZQ0FDQURRUUEyQXV3Q0lBTkI0SThTTmdJQUlBRkJFR29rQUNBb0lBTWlCaEFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUNLQUk4SVFNZ0FDZ0NBQ0lCRUJ3Z0FVSGtBV29nQXlBR0VMa0JJQUJCdUIxcUlnY1FqUUlnQUVHc0hXb2hCUUpBQWtBQ1FDQURSUTBBQWtBZ0F5Z0NCQ0lCUWJqekQwWUVRQ0FEUWVBQWFpSUpLQUlBSWdFZ0F5Z0NaRUVDZEdvaEN3SkFBMEFnQVNBTFJnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJFRFlDVkNBQ1FZT0hBVFlDVUNBQ0lBSXBBMUEzQXdnZ0FDQUVJQUpCQ0dvUVFBd0VDeUFDUVFBNkFFUWdBaUFKTmdKQUlBVWdBa0ZBYXhCQkRRRU1Bd3NnQVVIWWhCSkdCRUFnQTBFNGFpSUpLQUlBSWdFZ0F5Z0NQRUVDZEdvaEN3SkFBMEFnQVNBTFJnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEallDVkNBQ1FlU0dBVFlDVUNBQ0lBSXBBMUEzQXhBZ0FDQUVJQUpCRUdvUVFBd0VDeUFDUVFBNkFFUWdBaUFKTmdKQUlBVWdBa0ZBYXhCQlJRMEREQUVMSUFGQnVQQVBSZ1JBSUFOQk5Hb2lDU2dDQUNJQklBTW9BamhCQW5ScUlRc0NRQU5BSUFFZ0MwWU5BU0FBSUFFb0FnQWlCQkF6R2dKQUlBUkZEUUFnQkNnQ0JFR1FnaEpIRFFBZ0FDQUVRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTAyQWxRZ0FrR21od0UyQWxBZ0FpQUNLUU5RTndNWUlBQWdCQ0FDUVJocUVFQU1CQXNnQWtFQU9nQkVJQUlnQ1RZQ1FDQUZJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFmandEMFlFUUNBRFFUQnFJZ2tvQWdBaUFTQURLQUkwUVFKMGFpRUxBa0FEUUNBQklBdEdEUUVnQUNBQktBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VQTmdKVUlBSkI4NFlCTmdKUUlBSWdBaWtEVURjRElDQUFJQVFnQWtFZ2FoQkFEQVFMSUFKQkFEb0FSQ0FDSUFrMkFrQWdCU0FDUVVCckVFRkZEUU1NQVFzZ0FVSDQ4UTlHQkVBZ0EwSElBR29pQ1NnQ0FDSUJJQU1vQWt4QkFuUnFJUXNDUUFOQUlBRWdDMFlOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJFMkFsUWdBa0dVaHdFMkFsQWdBaUFDS1FOUU53TW9JQUFnQkNBQ1FTaHFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0NUWUNRQ0FGSUFKQlFHc1FRVVVOQXd3QkN5QUJRWWlGRWtjTkFTQURRVEJxSWdrb0FnQWlBU0FES0FJMFFRSjBhaUVMQWtBRFFDQUJJQXRHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUU5nSlVJQUpCdEljQk5nSlFJQUlnQWlrRFVEY0RNQ0FBSUFRZ0FrRXdhaEJBREFNTElBSkJBRG9BUkNBQ0lBazJBa0FnQlNBQ1FVQnJFRUZGRFFJTElBQWdCaENNQWdzZ0FDZ0NqRFFoQ1NBQUlBWTJBb3cwSUFBZ0JpQUFLQUtRTkNJTElBWWJOZ0tRTkNBQUlBQW9BcFEwSWdoQkFXb2lBVFlDbERRQ2Z3SkFBa0FnQVVHQUFVOEVRQ0FDUVVCcklnRkIvd0FRWHlBQ1FkQUFhaUlFUWFhc0NpQUJFRFVnQUNBRUlBTkJFR29RSnlBRUVBOGFJQUVRRHhvTUFRc2dBQ0FBSUFJb0Fqd29BaVFRaFFJUTR3SWlBUTBCQzBFQURBRUxJQVlnQVRZQzdBSWdCaUFCS1FNZ1FnS0VOd01ZSUFBb0FvdzBJUVFqQUVFZ2F5SUJKQUFDZndKQUlBWW9BdXdDS0FJVUVJUUJJZ01vQWdSQjBLVVNSd1JBSUFFZ0JTZ0NDQ0FERUtjQklBRkJFR29pQTBHRXlBa2dBUkExSUFVZ0F5QUdLQUxzQWlnQ0NFRVFhaEFuSUFNUUR4b2dBUkFQR2d3QkN3SkFBMEFnQkVVTkFTQUVLQUlFSWdOQjRKUVNSZzBCSUFOQitKUVNSd1JBSUFRb0Fnd2hCQXdCQ3d0QkFTQUVFTllMSWdNb0FraEJBblFnQXlnQ1JHcEJCR3NvQWdBZ0JpZ0NDRVlOQWhvZ0JTQUJRUkJxSWdOQmpKb0RFQlFpQ2lBR0tBSUlRUkJxRUNjZ0NoQVBHaUFGSUFOQmxPMERFQlFpQXlBRUtBSUlRUkJxRUlZQklBTVFEeG9NQVFzZ0JTQUJRUkJxUWNhYUF4QVVJZ01nQmlnQ0NFRVFhaEFuSUFNUUR4b0xRUUFMSVFNZ0FVRWdhaVFBSUFaQkFDQURHd3NoQVNBQUlBczJBcEEwSUFBZ0NEWUNsRFFnQUNBSk5nS01OQXdCQzBFQUlRRUxJQWNRaXdJZ0FrSGdBR29rQUNBQkRBTUxJQUpCK080UFJnUkFJd0JCNEFCcklnSWtBQ0FDSUFFMkFqd2dBQ2dDQUNBQ1FUeHFJQUJCa0RScUlBQkJpRFJxRU9ZRUlRa2dBaWdDUENFRElBQW9BZ0FpQVJBY0lBRkI1QUZxSUFNZ0NSQzVBU0FKRU5NQ0lRVWdBRUc0SFdvaUJ4Q05BZ0pBQWtBQ1FDQURSUTBBSUFCQnJCMXFJUVFDUUNBREtBSUVJZ0ZCdVBNUFJnUkFJQU5CNEFCcUlnc29BZ0FpQVNBREtBSmtRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnWVFNeG9DUUNBR1JRMEFJQVlvQWdSQmtJSVNSdzBBSUFBZ0JrRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRVFOZ0pVSUFKQmc0Y0JOZ0pRSUFJZ0Fpa0RVRGNEQ0NBQUlBWWdBa0VJYWhCQURBUUxJQUpCQURvQVJDQUNJQXMyQWtBZ0JDQUNRVUJyRUVFTkFRd0RDeUFCUWRpRUVrWUVRQ0FEUVRocUlnc29BZ0FpQVNBREtBSThRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnWVFNeG9DUUNBR1JRMEFJQVlvQWdSQmtJSVNSdzBBSUFBZ0JrRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRU9OZ0pVSUFKQjVJWUJOZ0pRSUFJZ0Fpa0RVRGNERUNBQUlBWWdBa0VRYWhCQURBUUxJQUpCQURvQVJDQUNJQXMyQWtBZ0JDQUNRVUJyRUVGRkRRTU1BUXNnQVVHNDhBOUdCRUFnQTBFMGFpSUxLQUlBSWdFZ0F5Z0NPRUVDZEdvaENBSkFBMEFnQVNBSVJnMEJJQUFnQVNnQ0FDSUdFRE1hQWtBZ0JrVU5BQ0FHS0FJRVFaQ0NFa2NOQUNBQUlBWkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEVFlDVkNBQ1FhYUhBVFlDVUNBQ0lBSXBBMUEzQXhnZ0FDQUdJQUpCR0dvUVFBd0VDeUFDUVFBNkFFUWdBaUFMTmdKQUlBUWdBa0ZBYXhCQlJRMEREQUVMSUFGQitQQVBSZ1JBSUFOQk1Hb2lDeWdDQUNJQklBTW9BalJCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCaEF6R2dKQUlBWkZEUUFnQmlnQ0JFR1FnaEpIRFFBZ0FDQUdRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTgyQWxRZ0FrSHpoZ0UyQWxBZ0FpQUNLUU5RTndNZ0lBQWdCaUFDUVNCcUVFQU1CQXNnQWtFQU9nQkVJQUlnQ3pZQ1FDQUVJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFmanhEMFlFUUNBRFFjZ0FhaUlMS0FJQUlnRWdBeWdDVEVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lHRURNYUFrQWdCa1VOQUNBR0tBSUVRWkNDRWtjTkFDQUFJQVpCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRVRZQ1ZDQUNRWlNIQVRZQ1VDQUNJQUlwQTFBM0F5Z2dBQ0FHSUFKQktHb1FRQXdFQ3lBQ1FRQTZBRVFnQWlBTE5nSkFJQVFnQWtGQWF4QkJSUTBEREFFTElBRkJpSVVTUncwQklBTkJNR29pQ3lnQ0FDSUJJQU1vQWpSQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQmhBekdnSkFJQVpGRFFBZ0JpZ0NCRUdRZ2hKSERRQWdBQ0FHUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJBMkFsUWdBa0cwaHdFMkFsQWdBaUFDS1FOUU53TXdJQUFnQmlBQ1FUQnFFRUFNQXdzZ0FrRUFPZ0JFSUFJZ0N6WUNRQ0FFSUFKQlFHc1FRVVVOQWdzZ0FDQUpFSXdDQ3lBQUtBS01OQ0VHSUFBZ0NUWUNqRFFnQUNBRklBQW9BcEEwSWdzZ0JSczJBcEEwSUFBZ0FDZ0NsRFFpQlVFQmFpSUJOZ0tVTkFKQUFrQUNRQ0FCUVlBQlR3UkFJQUpCUUdzaUFVSC9BQkJmSUFKQjBBQnFJZ1JCcHF3S0lBRVFOU0FBSUFRZ0EwRVFhaEFuSUFRUUR4b2dBUkFQR2d3QkN5QUFJQUlvQWp3b0FpUVFoUUlpQVEwQkMwRUFJUWtNQVFzZ0NTQUJLUU1nTndNWUN5QUFJQXMyQXBBMElBQWdCVFlDbERRZ0FDQUdOZ0tNTkF3QkMwRUFJUWtMSUFjUWl3SWdBa0hnQUdva0FDQUpEQU1MSUFKQndJUVNSZ1JBSXdCQjRBQnJJZ0lrQUNBQ0lBRTJBalFnQUNnQ0FDQUNRVFJxSUFCQmtEUnFJQUJCaURScUVPWUVJUVlnQWlnQ05DRURJQUFvQWdBaUFSQWNJQUZCNUFGcUlBTWdCaEM1QVNBR0VOTUNJUWNnQUVHNEhXb2lDUkNOQWlBQVFhd2RhaUVFQWtBQ1FBSkFJQU5GRFFBQ1FDQURLQUlFSWdGQnVQTVBSZ1JBSUFOQjRBQnFJZ3NvQWdBaUFTQURLQUprUVFKMGFpRUlBa0FEUUNBQklBaEdEUUVnQUNBQktBSUFJZ1VRTXhvQ1FDQUZSUTBBSUFVb0FnUkJrSUlTUncwQUlBQWdCVUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VRTmdKTUlBSkJnNGNCTmdKSUlBSWdBaWtEU0RjREFDQUFJQVVnQWhCQURBUUxJQUpCQURvQVBDQUNJQXMyQWpnZ0JDQUNRVGhxRUVFTkFRd0RDeUFCUWRpRUVrWUVRQ0FEUVRocUlnc29BZ0FpQVNBREtBSThRUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRU9OZ0pNSUFKQjVJWUJOZ0pJSUFJZ0Fpa0RTRGNEQ0NBQUlBVWdBa0VJYWhCQURBUUxJQUpCQURvQVBDQUNJQXMyQWpnZ0JDQUNRVGhxRUVGRkRRTU1BUXNnQVVHNDhBOUdCRUFnQTBFMGFpSUxLQUlBSWdFZ0F5Z0NPRUVDZEdvaENBSkFBMEFnQVNBSVJnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEVFlDVENBQ1FhYUhBVFlDU0NBQ0lBSXBBMGczQXhBZ0FDQUZJQUpCRUdvUVFBd0VDeUFDUVFBNkFEd2dBaUFMTmdJNElBUWdBa0U0YWhCQlJRMEREQUVMSUFGQitQQVBSZ1JBSUFOQk1Hb2lDeWdDQUNJQklBTW9BalJCQW5ScUlRZ0NRQU5BSUFFZ0NFWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTgyQWt3Z0FrSHpoZ0UyQWtnZ0FpQUNLUU5JTndNWUlBQWdCU0FDUVJocUVFQU1CQXNnQWtFQU9nQThJQUlnQ3pZQ09DQUVJQUpCT0dvUVFVVU5Bd3dCQ3lBQlFmanhEMFlFUUNBRFFjZ0FhaUlMS0FJQUlnRWdBeWdDVEVFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lGRURNYUFrQWdCVVVOQUNBRktBSUVRWkNDRWtjTkFDQUFJQVZCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRVRZQ1RDQUNRWlNIQVRZQ1NDQUNJQUlwQTBnM0F5QWdBQ0FGSUFKQklHb1FRQXdFQ3lBQ1FRQTZBRHdnQWlBTE5nSTRJQVFnQWtFNGFoQkJSUTBEREFFTElBRkJpSVVTUncwQklBTkJNR29pQ3lnQ0FDSUJJQU1vQWpSQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJBMkFrd2dBa0cwaHdFMkFrZ2dBaUFDS1FOSU53TW9JQUFnQlNBQ1FTaHFFRUFNQXdzZ0FrRUFPZ0E4SUFJZ0N6WUNPQ0FFSUFKQk9Hb1FRVVVOQWdzZ0FDQUdFSXdDQ3lBQUtBS01OQ0VMSUFBZ0JqWUNqRFFnQUNBSElBQW9BcEEwSWdnZ0J4czJBcEEwSUFBZ0FDZ0NsRFFpQjBFQmFpSUJOZ0tVTkFKQUlBRkJnQUZQQkVBZ0FrRTRhaUlCUWY4QUVGOGdBa0hJQUdvaUJFR21yQW9nQVJBMUlBQWdCQ0FEUVJCcUVDY2dCQkFQR2lBQkVBOGFRUUFoQVF3QkMwRUFJUUVnQUNBQ0tBSTBLQUlrRUlVQ0lnTkZEUUFnQUNBQUlBSW9BalFvQWlnUWhRSVE0d0lpQlVVTkFDQUFJQU1RMXhBZ0JpQUZLUU1nSUFNcEF5Q0VOd01ZSUFNb0FoUVFoQUVoQ2lBRktBSVVFSVFCSVEwZ0F5Z0NHQ0FGS0FJWUVOZ0dJUU1nQWtISUFHb2dBQ2dDRUNJRklBSW9BalFpRENnQ0xDQUtJQTBnQXlBTVFSQnFRUUVnQlNnQ0FDZ0NFQkVRQUNBQ0tBSklJZ05GRFFBZ0JrRUFJQVFnQWlnQ05DQURFS2tjR3lFQkN5QUFJQWcyQXBBMElBQWdCellDbERRZ0FDQUxOZ0tNTkF3QkMwRUFJUUVMSUFrUWl3SWdBa0hnQUdva0FDQUJEQU1MSUFKQnVPOFBSZ1JBSXdCQjRBQnJJZ0lrQUNBQ0lBRTJBandnQUNnQ0FDQUNRVHhxSUFCQmtEUnFJQUJCaURScUVPWUVJUVlnQWlnQ1BDRURJQUFvQWdBaUFSQWNJQUZCNUFGcUlBTWdCaEM1QVNBR0VOTUNJUWNnQUVHNEhXb2lDUkNOQWlBQVFhd2RhaUVGQWtBQ1FBSkFJQU5GRFFBQ1FDQURLQUlFSWdGQnVQTVBSZ1JBSUFOQjRBQnFJZ3NvQWdBaUFTQURLQUprUVFKMGFpRUlBa0FEUUNBQklBaEdEUUVnQUNBQktBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VRTmdKVUlBSkJnNGNCTmdKUUlBSWdBaWtEVURjRENDQUFJQVFnQWtFSWFoQkFEQVFMSUFKQkFEb0FSQ0FDSUFzMkFrQWdCU0FDUVVCckVFRU5BUXdEQ3lBQlFkaUVFa1lFUUNBRFFUaHFJZ3NvQWdBaUFTQURLQUk4UVFKMGFpRUlBa0FEUUNBQklBaEdEUUVnQUNBQktBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VPTmdKVUlBSkI1SVlCTmdKUUlBSWdBaWtEVURjREVDQUFJQVFnQWtFUWFoQkFEQVFMSUFKQkFEb0FSQ0FDSUFzMkFrQWdCU0FDUVVCckVFRkZEUU1NQVFzZ0FVRzQ4QTlHQkVBZ0EwRTBhaUlMS0FJQUlnRWdBeWdDT0VFQ2RHb2hDQUpBQTBBZ0FTQUlSZzBCSUFBZ0FTZ0NBQ0lFRURNYUFrQWdCRVVOQUNBRUtBSUVRWkNDRWtjTkFDQUFJQVJCSkdvUVF5QUJRUVJxSVFFTUFRc0xJQUpCRFRZQ1ZDQUNRYWFIQVRZQ1VDQUNJQUlwQTFBM0F4Z2dBQ0FFSUFKQkdHb1FRQXdFQ3lBQ1FRQTZBRVFnQWlBTE5nSkFJQVVnQWtGQWF4QkJSUTBEREFFTElBRkIrUEFQUmdSQUlBTkJNR29pQ3lnQ0FDSUJJQU1vQWpSQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVE4MkFsUWdBa0h6aGdFMkFsQWdBaUFDS1FOUU53TWdJQUFnQkNBQ1FTQnFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0N6WUNRQ0FGSUFKQlFHc1FRVVVOQXd3QkN5QUJRZmp4RDBZRVFDQURRY2dBYWlJTEtBSUFJZ0VnQXlnQ1RFRUNkR29oQ0FKQUEwQWdBU0FJUmcwQklBQWdBU2dDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FBSUFSQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVUWUNWQ0FDUVpTSEFUWUNVQ0FDSUFJcEExQTNBeWdnQUNBRUlBSkJLR29RUUF3RUN5QUNRUUE2QUVRZ0FpQUxOZ0pBSUFVZ0FrRkFheEJCUlEwRERBRUxJQUZCaUlVU1J3MEJJQU5CTUdvaUN5Z0NBQ0lCSUFNb0FqUkJBblJxSVFnQ1FBTkFJQUVnQ0VZTkFTQUFJQUVvQWdBaUJCQXpHZ0pBSUFSRkRRQWdCQ2dDQkVHUWdoSkhEUUFnQUNBRVFTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBQ1FSQTJBbFFnQWtHMGh3RTJBbEFnQWlBQ0tRTlFOd013SUFBZ0JDQUNRVEJxRUVBTUF3c2dBa0VBT2dCRUlBSWdDellDUUNBRklBSkJRR3NRUVVVTkFnc2dBQ0FHRUl3Q0N5QUFLQUtNTkNFTElBQWdCallDakRRZ0FDQUhJQUFvQXBBMElnZ2dCeHMyQXBBMElBQWdBQ2dDbERRaUIwRUJhaUlCTmdLVU5BSi9JQUZCZ0FGUEJFQWdBa0ZBYXlJQlFmOEFFRjhnQWtIUUFHb2lCRUdtckFvZ0FSQTFJQUFnQkNBRFFSQnFFQ2NnQkJBUEdpQUJFQThhUVFBTUFRc2dCa0lFTndNWUFrQWdCaERORUNJQlJRMEFJQUVvQXV3Q0RRQWdBaWdDUENFRElBRWdBU2dDNUFJMkF2QUNJQUVnQXpZQzdBSUxJQVloTVVFQUlTa2dBQ2dDakRRaEF5TUFRUkJySWdFa0FFRUJJUVFDUUVFQklBTVFrQkFpQXdSQUlBVWdBVUgxeXdBUUZDSUVJQVlvQWdoQkVHb1FKeUFFRUE4YVFRQWhCQ0FESUFZb0FnaEdEUUVnQXlBR0tBSU1LQUlJUmcwQklBVWdBVUdVN1FNUUZDSUdJQU5CRUdvUWhnRWdCaEFQR2d3QkN5QUdFTTBRRFFBZ0JTQUJRWUswQWhBVUlnTWdCaWdDQ0VFUWFoQW5JQU1RRHhwQkFDRUVDeUFCUVJCcUpBQWdNU0FwSUFRYkN5RUJJQUFnQ0RZQ2tEUWdBQ0FITmdLVU5DQUFJQXMyQW93MERBRUxRUUFoQVFzZ0NSQ0xBaUFDUWVBQWFpUUFJQUVNQXdzZ0FrSDQ3dzlHQkVBakFFSGdBR3NpQWlRQUlBSWdBVFlDUENBQUtBSUFJQUpCUEdvZ0FFR1FOR29nQUVHSU5Hb2lCeERtQkNFSklBSW9BandoQXlBQUtBSUFJZ0VRSENBQlFlUUJhaUFESUFrUXVRRWdDUkRUQWlFRklBQkJ1QjFxSWdzUWpRSUNRQUpBQWtBZ0EwVU5BQ0FBUWF3ZGFpRUVBa0FnQXlnQ0JDSUJRYmp6RDBZRVFDQURRZUFBYWlJSUtBSUFJZ0VnQXlnQ1pFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJR0VETWFBa0FnQmtVTkFDQUdLQUlFUVpDQ0VrY05BQ0FBSUFaQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkVEWUNWQ0FDUVlPSEFUWUNVQ0FDSUFJcEExQTNBd2dnQUNBR0lBSkJDR29RUUF3RUN5QUNRUUE2QUVRZ0FpQUlOZ0pBSUFRZ0FrRkFheEJCRFFFTUF3c2dBVUhZaEJKR0JFQWdBMEU0YWlJSUtBSUFJZ0VnQXlnQ1BFRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJR0VETWFBa0FnQmtVTkFDQUdLQUlFUVpDQ0VrY05BQ0FBSUFaQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkRqWUNWQ0FDUWVTR0FUWUNVQ0FDSUFJcEExQTNBeEFnQUNBR0lBSkJFR29RUUF3RUN5QUNRUUE2QUVRZ0FpQUlOZ0pBSUFRZ0FrRkFheEJCUlEwRERBRUxJQUZCdVBBUFJnUkFJQU5CTkdvaUNDZ0NBQ0lCSUFNb0FqaEJBblJxSVFvQ1FBTkFJQUVnQ2tZTkFTQUFJQUVvQWdBaUJoQXpHZ0pBSUFaRkRRQWdCaWdDQkVHUWdoSkhEUUFnQUNBR1FTUnFFRU1nQVVFRWFpRUJEQUVMQ3lBQ1FRMDJBbFFnQWtHbWh3RTJBbEFnQWlBQ0tRTlFOd01ZSUFBZ0JpQUNRUmhxRUVBTUJBc2dBa0VBT2dCRUlBSWdDRFlDUUNBRUlBSkJRR3NRUVVVTkF3d0JDeUFCUWZqd0QwWUVRQ0FEUVRCcUlnZ29BZ0FpQVNBREtBSTBRUUowYWlFS0FrQURRQ0FCSUFwR0RRRWdBQ0FCS0FJQUlnWVFNeG9DUUNBR1JRMEFJQVlvQWdSQmtJSVNSdzBBSUFBZ0JrRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRVBOZ0pVSUFKQjg0WUJOZ0pRSUFJZ0Fpa0RVRGNESUNBQUlBWWdBa0VnYWhCQURBUUxJQUpCQURvQVJDQUNJQWcyQWtBZ0JDQUNRVUJyRUVGRkRRTU1BUXNnQVVINDhROUdCRUFnQTBISUFHb2lDQ2dDQUNJQklBTW9Ba3hCQW5ScUlRb0NRQU5BSUFFZ0NrWU5BU0FBSUFFb0FnQWlCaEF6R2dKQUlBWkZEUUFnQmlnQ0JFR1FnaEpIRFFBZ0FDQUdRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUkUyQWxRZ0FrR1Vod0UyQWxBZ0FpQUNLUU5RTndNb0lBQWdCaUFDUVNocUVFQU1CQXNnQWtFQU9nQkVJQUlnQ0RZQ1FDQUVJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFZaUZFa2NOQVNBRFFUQnFJZ2dvQWdBaUFTQURLQUkwUVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1lRTXhvQ1FDQUdSUTBBSUFZb0FnUkJrSUlTUncwQUlBQWdCa0VrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VRTmdKVUlBSkJ0SWNCTmdKUUlBSWdBaWtEVURjRE1DQUFJQVlnQWtFd2FoQkFEQU1MSUFKQkFEb0FSQ0FDSUFnMkFrQWdCQ0FDUVVCckVFRkZEUUlMSUFBZ0NSQ01BZ3NnQUNnQ2pEUWhCaUFBSUFrMkFvdzBJQUFnQlNBQUtBS1FOQ0lJSUFVYk5nS1FOQ0FBSUFBb0FwUTBJZ1ZCQVdvaUFUWUNsRFFDUUNBQlFZQUJUd1JBSUFKQlFHc2lBVUgvQUJCZklBSkIwQUJxSWdSQnBxd0tJQUVRTlNBQUlBUWdBMEVRYWhBbklBUVFEeG9nQVJBUEdrRUFJUWtNQVFzZ0J5Z0NBQ0lCS0FMd0NRMEFJQUVnQ1RZQzhBa0xJQUFnQ0RZQ2tEUWdBQ0FGTmdLVU5DQUFJQVkyQW93MERBRUxRUUFoQ1FzZ0N4Q0xBaUFDUWVBQWFpUUFJQWtNQXdzZ0FrSHdoQkpHQkVBakFFSGdBR3NpQXlRQUlBTWdBVFlDUENBQUtBSUFJQU5CUEdvZ0FFR1FOR29nQUVHSU5Hb1E1Z1FoQmlBREtBSThJUVFnQUNnQ0FDSUJFQndnQVVIa0FXb2dCQ0FHRUxrQklBWVEwd0loQnlBQVFiZ2RhaUlKRUkwQ0lBQkJyQjFxSVFJQ1FBSkFBa0FnQkVVTkFBSkFJQVFvQWdRaUFVRzQ4dzlHQkVBZ0JFSGdBR29pQ3lnQ0FDSUJJQVFvQW1SQkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVJBMkFsUWdBMEdEaHdFMkFsQWdBeUFES1FOUU53TUlJQUFnQlNBRFFRaHFFRUFNQkFzZ0EwRUFPZ0JFSUFNZ0N6WUNRQ0FDSUFOQlFHc1FRUTBCREFNTElBRkIySVFTUmdSQUlBUkJPR29pQ3lnQ0FDSUJJQVFvQWp4QkFuUnFJUWdDUUFOQUlBRWdDRVlOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFEUVE0MkFsUWdBMEhraGdFMkFsQWdBeUFES1FOUU53TVFJQUFnQlNBRFFSQnFFRUFNQkFzZ0EwRUFPZ0JFSUFNZ0N6WUNRQ0FDSUFOQlFHc1FRVVVOQXd3QkN5QUJRYmp3RDBZRVFDQUVRVFJxSWdzb0FnQWlBU0FFS0FJNFFRSjBhaUVJQWtBRFFDQUJJQWhHRFFFZ0FDQUJLQUlBSWdVUU14b0NRQ0FGUlEwQUlBVW9BZ1JCa0lJU1J3MEFJQUFnQlVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQTBFTk5nSlVJQU5CcG9jQk5nSlFJQU1nQXlrRFVEY0RHQ0FBSUFVZ0EwRVlhaEJBREFRTElBTkJBRG9BUkNBRElBczJBa0FnQWlBRFFVQnJFRUZGRFFNTUFRc2dBVUg0OEE5R0JFQWdCRUV3YWlJTEtBSUFJZ0VnQkNnQ05FRUNkR29oQ0FKQUEwQWdBU0FJUmcwQklBQWdBU2dDQUNJRkVETWFBa0FnQlVVTkFDQUZLQUlFUVpDQ0VrY05BQ0FBSUFWQkpHb1FReUFCUVFScUlRRU1BUXNMSUFOQkR6WUNWQ0FEUWZPR0FUWUNVQ0FESUFNcEExQTNBeUFnQUNBRklBTkJJR29RUUF3RUN5QURRUUE2QUVRZ0F5QUxOZ0pBSUFJZ0EwRkFheEJCUlEwRERBRUxJQUZCK1BFUFJnUkFJQVJCeUFCcUlnc29BZ0FpQVNBRUtBSk1RUUowYWlFSUFrQURRQ0FCSUFoR0RRRWdBQ0FCS0FJQUlnVVFNeG9DUUNBRlJRMEFJQVVvQWdSQmtJSVNSdzBBSUFBZ0JVRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0EwRVJOZ0pVSUFOQmxJY0JOZ0pRSUFNZ0F5a0RVRGNES0NBQUlBVWdBMEVvYWhCQURBUUxJQU5CQURvQVJDQURJQXMyQWtBZ0FpQURRVUJyRUVGRkRRTU1BUXNnQVVHSWhSSkhEUUVnQkVFd2FpSUxLQUlBSWdFZ0JDZ0NORUVDZEdvaENBSkFBMEFnQVNBSVJnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBTkJFRFlDVkNBRFFiU0hBVFlDVUNBRElBTXBBMUEzQXpBZ0FDQUZJQU5CTUdvUVFBd0RDeUFEUVFBNkFFUWdBeUFMTmdKQUlBSWdBMEZBYXhCQlJRMENDeUFBSUFZUWpBSUxJQUFvQW93MElRc2dBQ0FHTmdLTU5DQUFJQWNnQUNnQ2tEUWlDQ0FIR3pZQ2tEUWdBQ0FBS0FLVU5DSUtRUUZxSWdFMkFwUTBBbjhDUUFKQUlBRkJnQUZQQkVBZ0EwRkFheUlCUWY4QUVGOGdBMEhRQUdvaUFrR21yQW9nQVJBMUlBQWdBaUFFUVJCcUVDY2dBaEFQR2lBQkVBOGFEQUVMSUFBZ0F5Z0NQQ2dDSkJDRkFpSUJEUUVMUVFBTUFRc2dCaUFCS1FNZ053TVlJQUFnQVJEWEVDQUdJVEpCQUNFcUlBTW9BandoQlNNQVFUQnJJZ1FrQUFKL0FrQUNRQ0FDSWdFb0FnZ2dCU2dDSkNJR0VLZ2NJZ0pGRFFBZ0FpZ0NMQ2dDQ0NJQ1JRMEFBbjlCNHVBQklBSW9BZ1FpQjBHdzZ3OUdEUUFhUVl1QUNTQUhRZUQ1RDBZTkFCb2dCMEhvK1JGSERRRkJ3WVFKQ3lFSElBRWdCRUVnYWlJRklBY1FGQ0lISUFaQkVHb1FKeUFIRUE4YUlBUWdBaWdDSkVFa2FoQlRJQVJCRUdvaUJrSHptZ2tnQkJBMUlBVWdCa0c5NmdZUUxTQUJJQVVnQWtFUWFoQ0dBU0FGRUE4YUlBWVFEeG9nQkJBUEdnd0JDd0pBSUFFb0FnZ2dCaENuQlNJQ0JFQWdBaWdDQkVHNHJSSkdEUUVMSUFRZ0FTZ0NDQ0FDRUtjQklBUkJFR29pQWtHc2xRa2dCQkExSUFSQklHb2lCU0FDUWZPYUNSQXRJQUVnQlNBR1FSQnFFQ2NnQlJBUEdpQUNFQThhSUFRUUR4b01BUXNnQWlnQ0dCRHpCMFVFUUNBRVFSQnFJZ0lnQkVFZ2FrSFAwd0JCNnRNQUlBVXRBQ2diRUJRaUJVR3RqUUlRdUFJZ0FTQUNJQVpCRUdvUUp5QUNFQThhSUFVUUR4b01BUXRCQVNBQ0tBSWdRUUZIRFFFYUlBUWdBU2dDQ0NBQ0VKa2RJQVJCRUdvaUFrR3drUWtnQkJBMUlBUkJJR29pQmlBQ1FmT2FDUkF0SUFFZ0JpQUZRUkJxRUNjZ0JoQVBHaUFDRUE4YUlBUVFEeG9MUVFBTElRRWdCRUV3YWlRQUlESWdLaUFCR3dzaEFTQUFJQWcyQXBBMElBQWdDallDbERRZ0FDQUxOZ0tNTkF3QkMwRUFJUUVMSUFrUWl3SWdBMEhnQUdva0FDQUJEQU1MSUFKQnVQRVBSZ1JBSXdCQjRBQnJJZ0lrQUNBQ0lBRTJBandnQUNnQ0FDQUNRVHhxSUFCQmtEUnFJQUJCaURScUlna1E1Z1FoQlNBQ0tBSThJUU1nQUNnQ0FDSUJFQndnQVVIa0FXb2dBeUFGRUxrQklBVVEwd0loQnlBQVFiZ2RhaUlJRUkwQ0lBQkJyQjFxSVFZQ1FBSkFBa0FnQTBVTkFBSkFJQU1vQWdRaUFVRzQ4dzlHQkVBZ0EwSGdBR29pQ3lnQ0FDSUJJQU1vQW1SQkFuUnFJUW9DUUFOQUlBRWdDa1lOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJBMkFsUWdBa0dEaHdFMkFsQWdBaUFDS1FOUU53TUlJQUFnQkNBQ1FRaHFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0N6WUNRQ0FHSUFKQlFHc1FRUTBCREFNTElBRkIySVFTUmdSQUlBTkJPR29pQ3lnQ0FDSUJJQU1vQWp4QkFuUnFJUW9DUUFOQUlBRWdDa1lOQVNBQUlBRW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVE0MkFsUWdBa0hraGdFMkFsQWdBaUFDS1FOUU53TVFJQUFnQkNBQ1FSQnFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0N6WUNRQ0FHSUFKQlFHc1FRVVVOQXd3QkN5QUJRYmp3RDBZRVFDQURRVFJxSWdzb0FnQWlBU0FES0FJNFFRSjBhaUVLQWtBRFFDQUJJQXBHRFFFZ0FDQUJLQUlBSWdRUU14b0NRQ0FFUlEwQUlBUW9BZ1JCa0lJU1J3MEFJQUFnQkVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFTk5nSlVJQUpCcG9jQk5nSlFJQUlnQWlrRFVEY0RHQ0FBSUFRZ0FrRVlhaEJBREFRTElBSkJBRG9BUkNBQ0lBczJBa0FnQmlBQ1FVQnJFRUZGRFFNTUFRc2dBVUg0OEE5R0JFQWdBMEV3YWlJTEtBSUFJZ0VnQXlnQ05FRUNkR29oQ2dKQUEwQWdBU0FLUmcwQklBQWdBU2dDQUNJRUVETWFBa0FnQkVVTkFDQUVLQUlFUVpDQ0VrY05BQ0FBSUFSQkpHb1FReUFCUVFScUlRRU1BUXNMSUFKQkR6WUNWQ0FDUWZPR0FUWUNVQ0FDSUFJcEExQTNBeUFnQUNBRUlBSkJJR29RUUF3RUN5QUNRUUE2QUVRZ0FpQUxOZ0pBSUFZZ0FrRkFheEJCUlEwRERBRUxJQUZCK1BFUFJnUkFJQU5CeUFCcUlnc29BZ0FpQVNBREtBSk1RUUowYWlFS0FrQURRQ0FCSUFwR0RRRWdBQ0FCS0FJQUlnUVFNeG9DUUNBRVJRMEFJQVFvQWdSQmtJSVNSdzBBSUFBZ0JFRWthaEJESUFGQkJHb2hBUXdCQ3dzZ0FrRVJOZ0pVSUFKQmxJY0JOZ0pRSUFJZ0Fpa0RVRGNES0NBQUlBUWdBa0VvYWhCQURBUUxJQUpCQURvQVJDQUNJQXMyQWtBZ0JpQUNRVUJyRUVGRkRRTU1BUXNnQVVHSWhSSkhEUUVnQTBFd2FpSUxLQUlBSWdFZ0F5Z0NORUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJFRFlDVkNBQ1FiU0hBVFlDVUNBQ0lBSXBBMUEzQXpBZ0FDQUVJQUpCTUdvUVFBd0RDeUFDUVFBNkFFUWdBaUFMTmdKQUlBWWdBa0ZBYXhCQlJRMENDeUFBSUFVUWpBSUxJQUFvQW93MElRb2dBQ0FGTmdLTU5DQUFJQWNnQUNnQ2tEUWlEU0FIR3pZQ2tEUWdBQ0FBS0FLVU5DSU1RUUZxSWdFMkFwUTBBa0FnQVVHQUFVOEVRQ0FDUVVCcklnRkIvd0FRWHlBQ1FkQUFhaUlFUWFhc0NpQUJFRFVnQUNBRUlBTkJFR29RSnlBRUVBOGFJQUVRRHhwQkFDRUJEQUVMSUFWQ0FUY0RHQUovSUFJb0Fqd29BaVFpQXdSQVFRQWhBU0FBSUFBZ0F4Q0ZBaERqQWlJRVJRMENJQWtvQWdBb0FnZ2lBeWdDQkVHUXRSSkhCRUFnQUNBRUlBTVFsZ0lpQkVVTkF3c2dCU0FGS1FNWUlBUXBBeUJDZDRPRU53TVlJQVFvQWhRTUFRc2dBQ2dDQUJDRURBc2hBU0FGSVROQkFDRXJJQUlvQWp3aEJDQUFLQUtJTkNnQ0NDRUZJQUFvQW93MElRa2pBRUhnQUdzaUF5UUFBa0FnQlJDRUFTQUJSd1JBSUFOQkVHb2lCeUFHS0FJSUlBRVFwd0VnQTBFZ2FpSUJRYUtaQ1NBSEVEVWdBMEV3YWlJSklBRkJsSmtKRUMwZ0F5QUdLQUlJSUFVUXB3RWdBMEZBYXlJRklBa2dBeEJPSUFOQjBBQnFJZ3NnQlVIem1na1FMU0FHSUFzZ0JFRVFhaEFuSUFzUUR4b2dCUkFQR2lBREVBOGFJQWtRRHhvZ0FSQVBHaUFIRUE4YVFRQWhBUXdCQ3lBR0tBSUlJQVFRaXhBaEIwRUFJUUZCQUNBSkVKQVFJZ1ZGQkVCQkFTRUJEQUVMSUFZZ0EwSFFBR3BCaGNzQUVCUWlDU0FFUVJCcUVDY2dDUkFQR2lBRklBY29BZ2hHRFFBZ0JTQUhLQUlNS0FJSVJnMEFJQVlnQTBIUUFHcEJsTzBERUJRaUJDQUZRUkJxRUlZQklBUVFEeG9MSUFOQjRBQnFKQUFnTXlBcklBRWJJUUVMSUFBZ0RUWUNrRFFnQUNBTU5nS1VOQ0FBSUFvMkFvdzBEQUVMUVFBaEFRc2dDQkNMQWlBQ1FlQUFhaVFBSUFFTUF3c2dBa0c0OGc5R0JFQWpBRUhnQUdzaUFpUUFJQUlnQVRZQ1BDQUFLQUlBSUFKQlBHb2dBRUdRTkdvaUNTQUFRWWcwYWhEbUJDRUdJQUlvQWp3aEF5QUFLQUlBSWdFUUhDQUJRZVFCYWlBRElBWVF1UUVnQmhEVEFpRUhJQUJCdUIxcUlnc1FqUUlnQUVHc0hXb2hCQUpBQWtBQ1FDQURSUTBBQWtBZ0F5Z0NCQ0lCUWJqekQwWUVRQ0FEUWVBQWFpSUlLQUlBSWdFZ0F5Z0NaRUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJFRFlDVkNBQ1FZT0hBVFlDVUNBQ0lBSXBBMUEzQXdnZ0FDQUZJQUpCQ0dvUVFBd0VDeUFDUVFBNkFFUWdBaUFJTmdKQUlBUWdBa0ZBYXhCQkRRRU1Bd3NnQVVIWWhCSkdCRUFnQTBFNGFpSUlLQUlBSWdFZ0F5Z0NQRUVDZEdvaENnSkFBMEFnQVNBS1JnMEJJQUFnQVNnQ0FDSUZFRE1hQWtBZ0JVVU5BQ0FGS0FJRVFaQ0NFa2NOQUNBQUlBVkJKR29RUXlBQlFRUnFJUUVNQVFzTElBSkJEallDVkNBQ1FlU0dBVFlDVUNBQ0lBSXBBMUEzQXhBZ0FDQUZJQUpCRUdvUVFBd0VDeUFDUVFBNkFFUWdBaUFJTmdKQUlBUWdBa0ZBYXhCQlJRMEREQUVMSUFGQnVQQVBSZ1JBSUFOQk5Hb2lDQ2dDQUNJQklBTW9BamhCQW5ScUlRb0NRQU5BSUFFZ0NrWU5BU0FBSUFFb0FnQWlCUkF6R2dKQUlBVkZEUUFnQlNnQ0JFR1FnaEpIRFFBZ0FDQUZRU1JxRUVNZ0FVRUVhaUVCREFFTEN5QUNRUTAyQWxRZ0FrR21od0UyQWxBZ0FpQUNLUU5RTndNWUlBQWdCU0FDUVJocUVFQU1CQXNnQWtFQU9nQkVJQUlnQ0RZQ1FDQUVJQUpCUUdzUVFVVU5Bd3dCQ3lBQlFmandEMFlFUUNBRFFUQnFJZ2dvQWdBaUFTQURLQUkwUVFKMGFpRUtBa0FEUUNBQklBcEdEUUVnQUNBQktBSUFJZ1VRTXhvQ1FDQUZSUTBBSUFVb0FnUkJrSUlTUncwQUlBQWdCVUVrYWhCRElBRkJCR29oQVF3QkN3c2dBa0VQTmdKVUlBSkI4NFlCTmdKUUlBSWdBaWtEVURjRElDQUFJQVVnQWtFZ2FoQkFEQVFMSUFKQkFEb0FSQ0FDSUFnMkFrQWdCQ0FDUVVCckVFRkZEUU1NQVFzZ0FVSDQ4UTlHQkVBZ0EwSElBR29pQ0NnQ0FDSUJJQU1vQWt4QkFuUnFJUW9DUUFOQUlBRWdDa1lOQVNBQUlBRW9BZ0FpQlJBekdnSkFJQVZGRFFBZ0JTZ0NCRUdRZ2hKSERRQWdBQ0FGUVNScUVFTWdBVUVFYWlFQkRBRUxDeUFDUVJFMkFsUWdBa0dVaHdFMkFsQWdBaUFDS1FOUU53TW9JQUFnQlNBQ1FTaHFFRUFNQkFzZ0FrRUFPZ0JFSUFJZ0NEWUNRQ0FFSUFKQlFHc1FRVVVOQXd3QkN5QUJRWWlGRWtjTkFTQURRVEJxSWdnb0FnQWlBU0FES0FJMFFRSjBhaUVLQWtBRFFDQUJJQXBHRFFFZ0FDQUJLQUlBSWdVUU14b0NRQ0FGUlEwQUlBVW9BZ1JCa0lJU1J3MEFJQUFnQlVFa2FoQkRJQUZCQkdvaEFRd0JDd3NnQWtFUU5nSlVJQUpCdEljQk5nSlFJQUlnQWlrRFVEY0RNQ0FBSUFVZ0FrRXdhaEJBREFNTElBSkJBRG9BUkNBQ0lBZzJBa0FnQkNBQ1FVQnJFRUZGRFFJTElBQWdCaENNQWdzZ0FDZ0NqRFFoQ0NBQUlBWTJBb3cwSUFBZ0J5QUFLQUtRTkNJS0lBY2JOZ0tRTkNBQUlBQW9BcFEwSWcxQkFXb2lBVFlDbERRQ2Z5QUJRWUFCVHdSQUlBSkJRR3NpQVVIL0FCQmZJQUpCMEFCcUlnUkJwcXdLSUFFUU5TQUFJQVFnQTBFUWFoQW5JQVFRRHhvZ0FSQVBHa0VBREFFTElBQWdBaWdDUENnQ0pCQXpHa0VBSUFBZ0FpZ0NQQ2dDSkVFQUVLd2VJZ05GRFFBYUlBa29BZ0FoQlNBRFFRQWdBeWdDQkVHb25CSkdHeUVISXdCQkVHc2lBU1FBSUFjb0FnZ29BaVFoQ1NBRktBTGtBaUVNSUFFZ0J6WUNEQ0FCSUF3MkFnZ2dBU0FGUVRocUlBbEJKR29nQVVFSWFoRDdHeUFCUVJCcUpBQWdBeWdDSUNJQkJFQWdCaUFCS1FNZ053TVlDeUFHSVRSQkFDRXNJd0JCTUdzaUFTUUFJQUVnQXlnQ0NDSUdOZ0lVQW44Q1FDQURLQUlNRU53TEJFQWdCQ0FHS0FJb0lnTUVmeUFEQlNBR0tBSXNDMEVRYWhEYkN3d0JDeUFCSUFRMkFnZ2dBU0FCUVJScU5nSU1JQVpGQkVBZ0FVRUlhaERESEF3QkN5QUdLQUlFSWdWQjJQZ1JSZ1JBSUFGQkFEb0FMQ0FCSUFaQk9HbzJBaWdDUUNBRUlBRkJLR3BCQWhDeEEwVU5BQ0FES0FJTUVJUUJMUUFRUVFGeERRQWdCQ0FCUVJocVFhdVFCQkFVSWdNZ0JpZ0NLQ0lFSUFZZ0JCdEJFR29RSnlBREVBOGFEQUlMSUFRZ0F4RENIQXdDQ3lBRlFlRDVEMFlFUUNNQVFTQnJJZ1lrQUNBREtBSUlJUWRCQVNFRkFrQWdBeWdDREJDRUFTSURMUUFRUVFGeERRQWdBeWdDQkVIWXJCSkdEUUFnQmlBRUtBSUlJQU1RcHdFZ0JrRVFhaUlESUFaQndvQUpFQzBnQkNBRElBZEJFR29RSnlBREVBOGFJQVlRRHhwQkFDRUZDeUFHUVNCcUpBQWdCUXdDQzBFQklBVkJvUGtSUmcwQkdpQUJRUWhxRU1NY0MwRUFDeUVESUFGQk1Hb2tBQ0EwSUN3Z0F4c0xJUUVnQUNBS05nS1FOQ0FBSUEwMkFwUTBJQUFnQ0RZQ2pEUU1BUXRCQUNFQkN5QUxFSXNDSUFKQjRBQnFKQUFnQVF3REN5QUNRY0QyRDBZRVFDQUFJQUVRclI0TUF3c2dBa0c0N1E5SERRQWdBQ0FTUVJCcVFidkxBQkFVSWdBZ0VpZ0NERUVRYWhBbklBQVFEeG9NQVFzakFFRWdheUlBSkFBZ0VpZ0NBQ0VDSUFCQkVHb2lBVUduakF3Z0FDQVNLQUlFS0FJQUtBSUVLQUlFRUJRaUF4QTFJQUlnQVNBU0tBSUVLQUlBUVJCcUVDY2dBUkFQR2lBREVBOGFJQUJCSUdva0FBdEJBQXNoQUNBU1FTQnFKQUFnQUFzT0FDQUFFQndnQUVFUWFoQ1pIZ3M0QVFKL0l3QkJFR3NpQWlRQUlBSkJDR29nQUVFY2FpQUJFT2dkSUFJb0FnZ2hBeUFDUVJCcUpBQWdBMEVDUndSQUlBQWdBUkJ4Q3d1a0FnRURmMEVDSVFRZ0FTQUNLQUlrSWdNMkF2ZzVJQUZCaERwcVFvT0FnSUF3TndJQUlBRkJnRHBxUWJ5SUVqWUNBQ0FCUWZ3NWFrR21pUVEyQWdBQ1FDQUJRYWdkYWlBQklBTVFxZ1VRa0I0aUEwVU5BQ0FBSUFNMUFoQWdBaWdDS0NJQ0JINGdBU0FDTmdMNE9TQUJRWVE2YWtLRGdJQ0FNRGNDQUNBQlFZQTZha0d3aUJJMkFnQWdBVUg4T1dwQjU3NEROZ0lBSUFGQnFCMXFJUVVnQVNBQ0VLb0ZJUUZCQUNFQ0l3QkJFR3NpQXlRQUFrQWdBVVVOQUNBQlFRQWdBUVIvSUFFb0FnUVEzaDBGUVFBTEd5SUNEUUFnQTBFV05nSU1JQU5CNTc0RE5nSUlJQU1nQXlrRENEY0RBQ0FGSUFFZ0F4Q21CVUVBSVFJTElBTkJFR29rQUNBQ1JRMEJJQUkxQWhCQ0lJWUZRZ0FMaERjQ0FFRUJJUVFMSUFBZ0JEb0FDQXZGQVFFRWZ5QUJJQUlvQWlRaUF6WUMrRGtnQVVHRU9tcENqWUNBZ05BQk53SUFJQUZCZ0RwcVFhQ0hFallDQUNBQlFmdzVha0hMMEFNMkFnQWdBVUdvSFdvaEJpQUJJQU1RcWdVaEJDTUFRUkJySWdNa0FBSkFJQVJGRFFBZ0JCQ1JIaUlGRFFBZ0EwRU5OZ0lNSUFOQnk5QUROZ0lJSUFNZ0F5a0RDRGNEQUNBR0lBUWdBeENtQlVFQUlRVUxJQU5CRUdva0FDQUFJQVVpQXdSL0lBRW9BZ0FpQVJBY0lBRkI1QUZxSUFJZ0F4QzVBU0FBSUFNb0FoQTJBZ0JCQVFWQkFnczZBQVFMRndBZ0FDQUJJQUpCa3NzRFFhSFRBMEdsMEFNUXhBd0wwZ1lDQ1g4Q2ZTTUFRU0JySWdna0FDQUlJQUUyQWhBakFFRVFheUlGSkFBZ0FSRDBBeUVFSUFnQ2Z3SkFJQUFvQWdRaUFrVU5BQ0FBS0FJQUFuOGdBa0VCYXlBRWNTQUNhU0lHUVFGTkRRQWFJQVFnQWlBRVN3MEFHaUFFSUFKd0N5SUhRUUowYWlnQ0FDSURSUTBBSUFKQkFXc2hDU0FCS0FJQUlRb2dCa0VCU3lFR0EwQWdBeWdDQUNJRFJRMEJJQVFnQXlnQ0JDSUJSd1JBQWtBZ0JrVUVRQ0FCSUFseElRRU1BUXNnQVNBQ1NRMEFJQUVnQW5BaEFRc2dBU0FIUncwQ0N5QURLQUlJSUFwSERRQUxRUUFNQVF0QjNBQVFGU0VESUFVZ0FFRUlhallDQkNBRklBTTJBZ0FnQ0NnQ0VDRUJJd0JCRUdzaUJpUUFJQVlnQVRZQ0NDQURRUWhxSWdFZ0JpZ0NDQ2dDQURZQ0FDQUJRUVJxUVFCQjBBQVFlU0lCUWdBM0FnQWdBVUlBTndJVUlBRkJnSUNBL0FNMkFoQWdBVUlBTndJb0lBRkNBRGNDUENBQlFnQTNBZ2dnQVVJQU53SWNJQUZCZ0lDQS9BTTJBaVFnQVVJQU53SXdJQUZCZ0lDQS9BTTJBamdnQVVJQU53SkVJQUZCZ0lDQS9BTTJBa3dnQmtFUWFpUUFJQVZCQVRvQUNDQURRUUEyQWdBZ0F5QUVOZ0lFQWtCQkFDQUNJQUFvQWd4QkFXcXpJZ3NnQUNvQ0VDSU1JQUt6bEY0YkRRQWdBQ0FDSUFKQkFXdHhRUUJISUFKQkEwbHlJQUpCQVhSeUlnRUNmeUFMSUF5VmpTSUxRd0FBZ0U5ZElBdERBQUFBQUdCeEJFQWdDNmtNQVF0QkFBc2lCeUFCSUFkTEd4RERBU0FBS0FJRUlnSWdBa0VCYTNGRkJFQWdBa0VCYXlBRWNTRUhEQUVMSUFJZ0JFc0VRQ0FFSVFjTUFRc2dCQ0FDY0NFSEN3SkFJQWRCQW5RaUJDQUFLQUlBYWlnQ0FDSUJSUVJBSUFVb0FnQWdBQ2dDQ0RZQ0FDQUFJQVVvQWdBMkFnZ2dBQ2dDQUNBRWFpQUFRUWhxTmdJQUlBVW9BZ0FpQVNnQ0FDSUVSUTBCSUFRb0FnUWhBd0pBSUFJZ0FrRUJheUlFY1VVRVFDQURJQVJ4SVFNTUFRc2dBaUFEU3cwQUlBTWdBbkFoQXdzZ0FDZ0NBQ0FEUVFKMGFpQUJOZ0lBREFFTElBVW9BZ0FnQVNnQ0FEWUNBQ0FCSUFVb0FnQTJBZ0FMSUFVb0FnQWhBeUFGUVFBMkFnQWdBQ0FBS0FJTVFRRnFOZ0lNSUFVb0FnQWhBQ0FGUVFBMkFnQWdBQVJBSUFVdEFBZ0VRQ0FBUVF4cUVMWWRDeUFBQkVBZ0FCQWZDd3RCQVFzNkFCd2dDQ0FETmdJWUlBVkJFR29rQUNBSUtBSVlJUUFnQ0VFZ2FpUUFJQUJCREdvTHB3RUJCSDhqQUVHZ0FXc2lBeVFBSUFBb0FnQWlBaEFjSUFKQjVBRnFJQUVRb0I0aUJFVUVRQ0FBS0FJQUlnQVFIQ0FEUWYyc0EwRXpRUWdnQUVISUFtb1FGeUlDUVJocVFhYVdDUkFPR2lBQ0lBRW9BZ1JCQkdvUW1nRWlCVUVZYWlJQVFkenhEQkFPR2lBQVFZUGtDeEFPR2lBRlFSQnFJQUZCRUdvUXJnTWdBRUhiK0F3UURob2dBRUh3OVFzUURob2dBQ0FCRU4wRElBSVFHQXNnQTBHZ0FXb2tBQ0FFQ3hRQUlBQkJBRFlDeEFFZ0FDQUFLQUxBQVJBMkN5VUFJQUJDQURjQ2JDQUFRb0NBZ0lEZ0FEY0NaQ0FBSUFBMkFtQWdBRUVHRU9nRklBQUxVUUVDZnlNQVFSQnJJZ1FrQUNBQUtBSUFJUVVnQkNBRE5nSU1JQVFnQWpZQ0NDQUZJQVJCQ0dvaUFoRDVCU0FBS0FJQUlRQWdCQ0FETmdJTUlBUWdBVFlDQ0NBQUlBSVErUVVnQkVFUWFpUUFDOWdCQWdSL0FYNGpBRUdnQVdzaUFpUUFJQUFvQWdBb0FnQWlBUVIvQW45QkFDQUJLQUlFSWdFcEF4QkNnSUNBZ29qSWdJRFFBSU1pQlNBRlFnRjlnMUFOQUJwQkFTQUJFS3NKRFFBYUFuOUJBQ0FCS1FNUVFvQ0FnSUtJZ0lDQTBBQ0RJZ1VnQlVJQmZZTlFEUUFhUVFFZ0FSQ2lIUTBBR2lBQlFlaURFaEJJQ3dzRlFRQUxJZ0ZGQkVBZ0FrSEFxZ05CbHdGQkFDQUFLQUlFRUJjaUEwRVlhaUlFUVlpUERCQU9HaUFFSUFBb0FnQW9BZ0FpQUFSL0lBQW9BZ1FvQWdRRlFlSGlCZ3NRRGhvZ0F4QVlDeUFDUWFBQmFpUUFJQUVMaHdJQkMzOGpBRUd3QVdzaUJDUUFBa0FnQUNnQ0FDSUZLQUt3Q0NJSUlBQW9BaVJHQkVBZ0FDZ0NJQ0VCREFFTElBQkJCR29oQ1NBRlFhUUlhaWdDQUNJSFFRRnJJUW9nQUNnQ0JDSUxJQWR3SVFJQ1FBSkFBMEFnQXlBSFJ3UkFJQVVvQXFBSUlBSkJMR3hxSWdZdEFDQkZEUU1nQ3lBR0tBSWtSZ1JBSUFrZ0JoQzJBZzBEQ3lBR0tBSW9JQU5KRFFNZ0FrRUJha0VBSUFJZ0NrY2JJUUlnQTBFQmFpRUREQUVMQ3lBRVFZYTFBMEdlQkVFT0lBUkJvQUZxRUIwaUFSQVhJZ0pCR0dwQjBqVVFEaG9nQWhBWUlBRVFIa0VBSVFFTUFRc2dCU2dDb0FnZ0FrRXNiR3BCSEdvaEFRc2dBQ0FJTmdJa0lBQWdBVFlDSUFzZ0JFR3dBV29rQUNBQkM0Z0JBUUovSUFFZ0FDZ0NpQUpMQkVBZ0FDZ0NnQUloQXlBQUlRSWdBQ0FCUVNCUEJIOUJmeUFCUVFOMElBRkIvLy8vL3dGTEd4QVZJUUlnQVFWQklBczJBb2dDSUFBZ0FqWUNnQUpCQUNFQkEwQWdBQ2dDaEFJZ0FVMEVRQ0FBSUFNUU5nVWdBVUVEZENJQ0lBQW9Bb0FDYWlBQ0lBTnFLUUlBTndJQUlBRkJBV29oQVF3QkN3c0xDeEVBSUFBdEFDQUVRQ0FBUVFBNkFDQUxDeHNBSUFBZ0FTZ0NBRFlDQUNBQVFRUnFJQUZCQkdvUTJoNGdBQXVlQndFRWZ5QUFRb0NBZ0lBUU53SUlJQUFnQURZQ0JDTUFRVEJySWdNa0FDQUFJQUlvQWdnUThCQWdBMEVBTmdJb0lBTWdBallDSkNBRElBRkJ5Q0JxTmdJZ0lBTWdBVUhjZ0FGcUtBSUFRUUZyTmdJc0FrQWdBMEVnYWhDMUFRUkFJQU5CSUdvUVdpSUZLQUxZQVNJRUlBVW9BdHdCUVJoc2FpRUZBMEFnQkNBRlJnUkFJQUlvQWdRaUJTQUNLQUlJUVFKMGFpRUNBMEFnQWlBRlJnUkFJQU5CSUdvUVdpSUNLQUxJQWlJRUlBSW9Bc3dDUVJoc2FpRUNBMEFnQWlBRVJnMEdJQU1nQVNBRUVHWVFoQUkyQWhBZ0FDQURRUkJxRUs0RklBUkJHR29oQkF3QUN3QUxJQU1nQTBFZ2FoQmFJZ1JCMkFKcU5nSVFJQVVvQWdBaEJpQURRUUEyQWhnZ0F5QUdOZ0lVSUFNZ0JFR2NDV29vQWdCQkFXczJBaHdDUUNBRFFSQnFFTFFCUlEwQUlBTkJFR29RckFFaUJpZ0NZQ0lFSUFZb0FtUkJHR3hxSVFZRFFDQUVJQVpHRFFFZ0F5QUJJQVFRWmhDRUFqWUNEQ0FBSUFOQkRHb1FyZ1VnQkVFWWFpRUVEQUFMQUFzZ0EwRWdhaEJhSVFRZ0F5QUZLQUlBTmdJUUlBUWdBMEVRYWhER0EwVUVRQ0FESUFFZ0JTZ0NBQkR3QlRZQ0VDQUFJQU5CRUdvUXJnVUxJQU1nQTBFZ2FoQmFJZ1JCb0FscU5nSVFJQVVvQWdBaEJpQURRUUEyQWhnZ0F5QUdOZ0lVSUFNZ0JFSGtEMm9vQWdCQkFXczJBaHdDUUNBRFFSQnFFTFFCUlEwQUlBTkJFR29RckFFaUJpZ0NZQ0lFSUFZb0FtUkJHR3hxSVFZRFFDQUVJQVpHRFFFZ0F5QUJJQVFRWmhDRUFqWUNEQ0FBSUFOQkRHb1FyZ1VnQkVFWWFpRUVEQUFMQUFzZ0JVRUVhaUVGREFBTEFBVWdBeUFCSUFRUVpoQ0VBallDRUNBQUlBTkJFR29RcmdVZ0JFRVlhaUVFREFFTEFBc0FDeUFDS0FJRUlnVWdBaWdDQ0VFQ2RHb2hBZ05BSUFJZ0JVWUVRQ0FEUVNCcUVMVUJSUTBDSUFOQklHb1FXaUlDS0FMSUFpSUVJQUlvQXN3Q1FSaHNhaUVDQTBBZ0FpQUVSZzBESUFNZ0FTQUVFR1lRaEFJMkFoQWdBQ0FEUVJCcUVLNEZJQVJCR0dvaEJBd0FDd0FGSUFNZ0FTQUZLQUlBRVBBRk5nSVFJQUFnQTBFUWFoQ3VCUUpBSUFOQklHb1F0UUZGRFFBZ0F5QURRU0JxRUZvaUJFR2dDV28yQWhBZ0JTZ0NBQ0VHSUFOQkFEWUNHQ0FESUFZMkFoUWdBeUFFUWVRUGFpZ0NBRUVCYXpZQ0hDQURRUkJxRUxRQlJRMEFJQU5CRUdvUXJBRWlCaWdDWUNJRUlBWW9BbVJCR0d4cUlRWURRQ0FFSUFaR0RRRWdBeUFCSUFRUVpoQ0VBallDRENBQUlBTkJER29RcmdVZ0JFRVlhaUVFREFBTEFBc2dCVUVFYWlFRkRBRUxBQXNBQ3lBRFFUQnFKQUFMRWdBZ0FDQUJFUG9GSWdCQkFUb0FJQ0FBQ3c0QUlBQVFrUXdnQUNBQkVPNFFDMTRCQTM5QkNCQUZFS0VUSWdOQnJPWVBOZ0lBSUFBUTNBRWlBVUVOYWhBVklnSkJBRFlDQ0NBQ0lBRTJBZ1FnQWlBQk5nSUFJQU1nQWhEdUNTQUFJQUZCQVdvUWZUWUNCQ0FESWdCQjNPWVBOZ0lBSUFCQi9PWVBRUUVRQkFBTEVnQWdBRUh3QUVHUi93TkJmRUVERU1vQkMvWUNBUUYvSXdCQjBBRnJJZ2NrQUNBSElBSTJBc0FCSUFjZ0FUWUN5QUVnQnlBRU5nSzhBU0FBSUFjb0FzZ0JJQWNvQXNBQklBTWdCeWdDdkFFUTRCa2lBRUhZOXhFMkFnUWdBRUdNK0JFMkFnQWdBRUg0OXhFMkFnQWdBRUVvYWlBRkVMOEpJQUJCMUFCcUlBWVE2UVlnQUNnQ1NDSUNJQUFvQWt4QkFuUnFJUUVnQjBFZ2FpRURBMEFDUUNBQklBSkdCRUFnQUNnQ1pDSUNJQUFvQW1oQkFuUnFJUUVnQjBFZ2FpRURBMEFnQVNBQ1JnMENJQUlvQWdBaUJFVUVRQ0FIUVFocVFmR1hCVUVsUVFBZ0IwR29BV29RSFNJRkVCY2hCaUFEUVptbkNCQU9HaUFHRUJnZ0JSQWVDeUFFRUZjZ0FDZ0NDRUVCUVFCQjNjUUlRZkdYQlVFbUVFc2dBa0VFYWlFQ0RBQUxBQXNnQWlnQ0FDSUVSUVJBSUFkQkNHcEI4WmNGUVNGQkFDQUhRYWdCYWhBZElnVVFGeUVHSUFOQnRyVUlFQTRhSUFZUUdDQUZFQjRMSUFRUVZ5QUFLQUlJUVFGQkFFR2R5UWhCOFpjRlFTSVFTeUFDUVFScUlRSU1BUXNMSUFkQjBBRnFKQUFnQUF1WUFRSUNmd0YrSUFFZ0FFR0lDMm9vQWdCTEJFQWdBQ2dDZ0FzaEF5QUFJUUlnQUNBQlFSQlBCSDlCZnlBQnJVTFlBSDRpQktjZ0JFSWdpS2NiRUJVaEFpQUJCVUVRQ3pZQ2lBc2dBQ0FDTmdLQUMwRUFJUUVEUUNBQUtBS0VDeUFCVFFSQUlBQWdBeEEyQlNBQlFkZ0FiQ0lDSUFBb0FvQUxhaUFDSUFOcUlnSVE0d1lhSUFKQkNHb1FsUUVnQVVFQmFpRUJEQUVMQ3dzTFFnRUJmd0pBSUFBdEFGZ2lBaUFCTFFCWVJnUkFJQUpGRFFFZ0FDQUJFTUlKREFFTElBSUVRQ0FBRUk0ZkRBRUxJQUFnQVJEbUJnc2dBQ0FCS1FKY053SmNDMVVCQW44Z0FVRUlhaUVGSUFJb0FnQWlCQ2dDQUNJQ0lBUW9BZ1JCakFGc2FpRUVBMEFnQWlBRVJ3UkFJQVZCMy9BTUVBNGFJQUFnQVNBQ0tBSUFJQU1RbHg4Z0JSRGlBUm9nQWtHTUFXb2hBZ3dCQ3dzTE5RRUNmeU1BUVpBQmF5SUNKQUFnQWlBQUVPVUNJUU1nQUNBQkVPUUNHaUFCSUFNUTVBSWFJQU1RcndVYUlBSkJrQUZxSkFBTElRQWdBRUtBZ0lDQXdBQTNBaFFnQUNBQU5nSVFJQUFnQVVFUWFoQ2xEQ0FBQzBvQkFYOGpBRUVRYXlJQ0pBQWdBRUtBZ0lDQXdBQTNBaFFnQUNBQU5nSVFJQUlnQVVFUWFqWUNDQ0FDSUFFb0FoQWdBVWM2QUF3Z0FDQUNRUWhxRU1nSklBSkJFR29rQUNBQUMwZ0JBbjhnQUNBQkVOWUNJQUFvQWhRaUFpQUJJQUVnQWtrYklRTURRQ0FDSUFOR0JFQWdBQ0FCTmdJVUJTQUFLQUlRSUFKQkFuUnFRUUEyQWdBZ0FrRUJhaUVDREFFTEN3dTRCZ0VOZnlNQVFhQU5heUlDSkFBQ1FFRVlJQUZCbGdGc1FlUUFiaUlCSUFGQkdFMGJJZ1VnQUVIa0Vtb29BZ0JORFFBZ0FrR01DMnBDZ0lDQWdJQUNOd0lBSUFJZ0FrRUlhaUlCTmdLSUN5QUJJQUFvQXV3U0VKa01JQUFvQXVBU0lnRWdBQ2dDNUJKQjVBQnNhaUVIQTBBZ0FTQUhSZ1JBSUFBUXhBa2dBQ0FGRUlRSUlBSW9Bb2dMSWdRZ0FpZ0NqQXRCMkFCc2FpRUpJQUpCb0F0cUlRb2dBa0hBREdvaEN5QUNRYkFMYWlFTVFRQWhCd05BQWtBZ0JDQUpSZ1JBQTBBZ0J5QUNLQUtNQzA4TkFpQUNLQUtJQ3lBSFFkZ0FiR3BCQ0dvUWxRRWdCMEVCYWlFSERBQUxBQXNnQUNnQzVCSWdBQ2dDN0JJaUFVR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBRkJBWFJCQW1vUW9Bd0xJQUpCbUExcUlBQWdCQkRsQmlBQ0lBUkIxQUJxTmdLVURTQUNJQVEyQXBBTklBQW9BdVFTSWdaQkFXc2hEU0FBS0FMZ0VpRU9RUUFoQVNBQ0tBS2NEU0VJSUFJb0FwZ05JUU1DUUFOQUlBRWdCa2NFUUNBT0lBTkI1QUJzYWlJRkxRQllSUVJBSUFKQm1BdHFJZ01nQWtHUURXb1FnQWdnQlNBREVQRUVHaUFLRUpVQklBVWdBVFlDWUNBRklBZzJBbHdnQUNBQUtBTHNFa0VCYWpZQzdCSWdBQ0FBS0FMd0VrRUJhallDOEJJTUF3c2dCU0FJSUFRUThBUU5BaUFCSUFVb0FtQkxCRUFnQWtHNERHb2lCaUFDUVpBTmFoQ0FDQ0FDUVpnTGFpQUdFTzhFSVFZZ0FpQUJOZ0w0Q3lBQ0lBZzJBdlFMSUFzUWxRRWdCaUFGRVBzRElBSWdBaWdDK0F0QkFXbzJBdmdMSUFBZ0EwRUJhaUFBS0FMa0VuQWdCaERrQmlBQUlBQW9BdXdTUVFGcU5nTHNFaUFBSUFBb0F2QVNRUUZxTmdMd0VpQUdFT29DREFNRklBTkJBV3BCQUNBRElBMUhHeUVESUFGQkFXb2hBUXdDQ3dBTEN5QUNRWmdMYWtHR3RRTkI2d05CRGlBQ1FiZ01haEFkSWdFUUZ5RURJQXhCbGpVUURob2dBeEFZSUFFUUhnc2dCRUhZQUdvaEJBd0JDd3NnQWtFQU5nS01DeUFDUVFocUlBSW9Bb2dMRURZTUFnc2dBUzBBV0FSQUlBSW9Bb3dMSWdNZ0FpZ0NrQXNpQkU4RVFDQUNRUWhxSUFSQkFYUkJBaUFFR3hDWkRDQUNLQUtNQ3lFREN5QUNJQU5CQVdvMkFvd0xJQUlvQW9nTElBTkIyQUJzYWlBQkVPTUdHZ3NnQVVIa0FHb2hBUXdBQ3dBTElBSkJvQTFxSkFBTDJBRUJBMzhnQUJBY0l3QkJFR3NpQkNRQUlBQkJxQUZxSWdVUS9BY2hCaUFCS0FJQUlRRWdCQ0FDUVNCcU5nSUlJQVFnQWlnQ0lDQUNSem9BRENBREtBSUFJUUlqQUVFUWF5SUFKQUFnQUNBQ05nSUlJQUFnQVRZQ0RDQUFRUUU2QUFjakFFRVFheUlCSkFBZ0FDZ0NEQ0VDSUFFZ0JDa0NDRGNEQ0NBR0lBSWdBVUVJYWlBQUtBSUlJQUF0QUFjUS93OGlBa0dRbmhJMkFnUWdBa0hBbmhJMkFnQWdBVUVRYWlRQUlBSkJzSjRTTmdJQUlBQkJFR29rQUNBRklBSWlBQkFvSUFVZ0JTZ0NHRUVCYWpZQ0dDQUVRUkJxSkFBZ0FBdTRCZ0VOZnlNQVFhQU5heUlDSkFBQ1FFRVlJQUZCbGdGc1FlUUFiaUlCSUFGQkdFMGJJZ1VnQUVIa0Vtb29BZ0JORFFBZ0FrR01DMnBDZ0lDQWdJQUNOd0lBSUFJZ0FrRUlhaUlCTmdLSUN5QUJJQUFvQXV3U0VKa01JQUFvQXVBU0lnRWdBQ2dDNUJKQjVBQnNhaUVIQTBBZ0FTQUhSZ1JBSUFBUXhBa2dBQ0FGRUlRSUlBSW9Bb2dMSWdRZ0FpZ0NqQXRCMkFCc2FpRUpJQUpCb0F0cUlRb2dBa0hBREdvaEN5QUNRYkFMYWlFTVFRQWhCd05BQWtBZ0JDQUpSZ1JBQTBBZ0J5QUNLQUtNQzA4TkFpQUNLQUtJQ3lBSFFkZ0FiR3BCQ0dvUWxRRWdCMEVCYWlFSERBQUxBQXNnQUNnQzVCSWdBQ2dDN0JJaUFVR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBRkJBWFJCQW1vUW9nd0xJQUpCbUExcUlBQWdCQkRsQmlBQ0lBUkIxQUJxTmdLVURTQUNJQVEyQXBBTklBQW9BdVFTSWdaQkFXc2hEU0FBS0FMZ0VpRU9RUUFoQVNBQ0tBS2NEU0VJSUFJb0FwZ05JUU1DUUFOQUlBRWdCa2NFUUNBT0lBTkI1QUJzYWlJRkxRQllSUVJBSUFKQm1BdHFJZ01nQWtHUURXb1FnQWdnQlNBREVQRUVHaUFLRUpVQklBVWdBVFlDWUNBRklBZzJBbHdnQUNBQUtBTHNFa0VCYWpZQzdCSWdBQ0FBS0FMd0VrRUJhallDOEJJTUF3c2dCU0FJSUFRUThBUU5BaUFCSUFVb0FtQkxCRUFnQWtHNERHb2lCaUFDUVpBTmFoQ0FDQ0FDUVpnTGFpQUdFTzhFSVFZZ0FpQUJOZ0w0Q3lBQ0lBZzJBdlFMSUFzUWxRRWdCaUFGRVBzRElBSWdBaWdDK0F0QkFXbzJBdmdMSUFBZ0EwRUJhaUFBS0FMa0VuQWdCaERrQmlBQUlBQW9BdXdTUVFGcU5nTHNFaUFBSUFBb0F2QVNRUUZxTmdMd0VpQUdFT29DREFNRklBTkJBV3BCQUNBRElBMUhHeUVESUFGQkFXb2hBUXdDQ3dBTEN5QUNRWmdMYWtHR3RRTkI2d05CRGlBQ1FiZ01haEFkSWdFUUZ5RURJQXhCbGpVUURob2dBeEFZSUFFUUhnc2dCRUhZQUdvaEJBd0JDd3NnQWtFQU5nS01DeUFDUVFocUlBSW9Bb2dMRURZTUFnc2dBUzBBV0FSQUlBSW9Bb3dMSWdNZ0FpZ0NrQXNpQkU4RVFDQUNRUWhxSUFSQkFYUkJBaUFFR3hDWkRDQUNLQUtNQ3lFREN5QUNJQU5CQVdvMkFvd0xJQUlvQW9nTElBTkIyQUJzYWlBQkVPTUdHZ3NnQVVIa0FHb2hBUXdBQ3dBTElBSkJvQTFxSkFBTHJ3RUJBWDhnQUJBY0l3QkJNR3NpQVNRQUlBQkJxQUZxSWdBUXZSQWhCeUFHS0FJQUlRWWdCU2dDQUNFRklBUW9BZ0FoQkNBREtBSUFJUU1nQWlnQ0FDRUNJQUZCQURvQUtDQUJJQUVvQWlnMkFoQWdBVUVBT2dBZ0lBRkJBRG9BSENBQlFRQTZBQmdnQVNBQktRTWdOd01JSUFFZ0FTa0RHRGNEQUNBQUlBZEJBQ0FDSUFNZ0JDQUZJQVlnQVVFSWFpQUJFUElQSWdJUUtDQUFJQUFvQWhoQkFXbzJBaGdnQVVFd2FpUUFJQUlMZlFFRmZ5QUFRWVRMQUdvb0FnQWlCVUVCYXlFR0FrQURRQ0FESUFWR0RRRWdBQ2dDZ0VzZ0FVSGtBR3hxSWdRdEFGZ0VRQ0FDSUFJb0FtQWlCeUFFS0FKZ1N3Ui9JQVFnQWhEN0F5QUNLQUpnQlNBSEMwRUJhallDWUNBQlFRRnFRUUFnQVNBR1J4c2hBU0FEUVFGcUlRTU1BUXNMSUFRZ0FoQ2FEQXNMWndFRGZ3SkFJQUFvQWhnZ0FTZ0NCRWtFUUNBQUVGNGdBQ0FCS0FJRUVNRUpEQUVMSUFCQkFEWUNGQXNnQUNBQktBSUVJZ00yQWhRRFFDQUNJQU5IQkVBZ0FrRUNkQ0lFSUFBb0FoQnFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3c21BQ0FDRUk4ZklRSWdBVUdFeXdCcUtBSUFJUUVnQUNBQ05nSUVJQUFnQWlBQmNEWUNBQXU3QmdFTmZ5TUFRYUF1YXlJQ0pBQUNRRUhnQUNBQlFaWUJiRUhrQUc0aUFTQUJRZUFBVFJzaUJTQUFRWVRMQUdvb0FnQk5EUUFnQWtHTUxHcENnSUNBZ0lBSU53SUFJQUlnQWtFSWFpSUJOZ0tJTENBQklBQW9Bb3hMRUpBZklBQW9Bb0JMSWdFZ0FDZ0NoRXRCNUFCc2FpRUhBMEFnQVNBSFJnUkFJQUFRbkJFZ0FDQUZFS2tNSUFJb0FvZ3NJZ1FnQWlnQ2pDeEIyQUJzYWlFSklBSkJvQ3hxSVFvZ0FrSEFMV29oQ3lBQ1FiQXNhaUVNUVFBaEJ3TkFBa0FnQkNBSlJnUkFBMEFnQnlBQ0tBS01MRThOQWlBQ0tBS0lMQ0FIUWRnQWJHcEJDR29RbFFFZ0IwRUJhaUVIREFBTEFBc2dBQ2dDaEVzZ0FDZ0NqRXNpQVVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FBSUFGQkFYUkJBbW9RcHd3TElBSkJtQzVxSUFBZ0JCQ21EQ0FDSUFSQjFBQnFOZ0tVTGlBQ0lBUTJBcEF1SUFBb0FvUkxJZ1pCQVdzaERTQUFLQUtBU3lFT1FRQWhBU0FDS0FLY0xpRUlJQUlvQXBndUlRTUNRQU5BSUFFZ0JrY0VRQ0FPSUFOQjVBQnNhaUlGTFFCWVJRUkFJQUpCbUN4cUlnTWdBa0dRTG1vUWdBZ2dCU0FERVBFRUdpQUtFSlVCSUFVZ0FUWUNZQ0FGSUFnMkFsd2dBQ0FBS0FLTVMwRUJhallDakVzZ0FDQUFLQUtRUzBFQmFqWUNrRXNNQXdzZ0JTQUlJQVFROEFRTkFpQUJJQVVvQW1CTEJFQWdBa0c0TFdvaUJpQUNRWkF1YWhDQUNDQUNRWmdzYWlBR0VPOEVJUVlnQWlBQk5nTDRMQ0FDSUFnMkF2UXNJQXNRbFFFZ0JpQUZFUHNESUFJZ0FpZ0MrQ3hCQVdvMkF2Z3NJQUFnQTBFQmFpQUFLQUtFUzNBZ0JoQ2tEQ0FBSUFBb0FveExRUUZxTmdLTVN5QUFJQUFvQXBCTFFRRnFOZ0tRU3lBR0VPb0NEQU1GSUFOQkFXcEJBQ0FESUExSEd5RURJQUZCQVdvaEFRd0NDd0FMQ3lBQ1FaZ3Nha0dHdFFOQjZ3TkJEaUFDUWJndGFoQWRJZ0VRRnlFRElBeEJsalVRRGhvZ0F4QVlJQUVRSGdzZ0JFSFlBR29oQkF3QkN3c2dBa0VBTmdLTUxDQUNRUWhxSUFJb0FvZ3NFRFlNQWdzZ0FTMEFXQVJBSUFJb0Fvd3NJZ01nQWlnQ2tDd2lCRThFUUNBQ1FRaHFJQVJCQVhSQkFpQUVHeENRSHlBQ0tBS01MQ0VEQ3lBQ0lBTkJBV28yQW93c0lBSW9Bb2dzSUFOQjJBQnNhaUFCRU9NR0dnc2dBVUhrQUdvaEFRd0FDd0FMSUFKQm9DNXFKQUFMTlFFQmZ3TkFJQUFvQXVRU0lBRk5CRUFnQUVFQU5nTGtFZ1VnQUNnQzRCSWdBVUhrQUd4cUVPb0NJQUZCQVdvaEFRd0JDd3NMbWdJQ0EzOEJmaUFCSUFCQmlNc0FhaWdDQUVzRVFDQUFLQUtBU3lFRElBQWhBaUFBSUFGQjRBQlBCSDlCZnlBQnJVTGtBSDRpQmFjZ0JVSWdpS2NiRUJVaEFpQUJCVUhnQUFzMkFvaExJQUFnQWpZQ2dFdEJBQ0VDQTBBZ0FDZ0NoRXNnQWswRVFDQUFJQU1RTmdVZ0FrSGtBR3dpQkNBQUtBS0FTMm9nQXlBRWFpSUVFSTBSR2lBRUVPb0NJQUpCQVdvaEFnd0JDd3NMSUFCQmhNc0FhaWdDQUNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDaEVzaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDZ0VzZ0FrSGtBR3hxSWdOQ0FEY0NYQ0FEUVFBNkFGZ2dBMEVBT2dBQUlBSkJBV29oQWd3QUN3QUxCU0FBS0FLQVN5QUNRUUZySWdKQjVBQnNhaERxQWd3QkN3c2dBQ0FCTmdLRVN3dG1BUUovSXdCQklHc2lBeVFBSUFOQkNHb2lCQ0FDRUtBUklBTWdBeWdDRENBRExRQVRJZ0lnQWtFWWRFRVlkVUVBU0NJQ0d6WUNIQ0FESUFNb0FnZ2dCQ0FDR3pZQ0dDQURJQU1wQXhnM0F3QWdBQ0FCSUFNUTRRRWdCQkFQR2lBRFFTQnFKQUFMNmdJQkEzOGpBRUZBYWlJQ0pBQWdBaUFCTmdJY0lBSWdBRFlDRUNBQ0lBSkJIR28yQWhRQ2Z5QUJCRUFnQVNnQ0JDSURRWkNxRWtZRVFDQUNRUWsyQWpBZ0FrR3cvQVEyQWl3Z0FpQUJOZ0lvSUFKQkNUWUNKQ0FDUWVuTkF6WUNJQ0FDSUFBUXFnazJBalFnQWtFQ05nSThJQUlnQWtFZ2FqWUNPQ0FDSUFJcEF6ZzNBd0FnQUVFQklBSVFtQUlNQWdzZ0EwR2dzeEpHQkVBZ0FrRUpOZ0l3SUFKQnNQd0VOZ0lzSUFJZ0FUWUNLQ0FDUVFrMkFpUWdBa0hwelFNMkFpQWdBaUFBRUtvSk5nSTBJQUpCQWpZQ1BDQUNJQUpCSUdvMkFqZ2dBaUFDS1FNNE53TUlJQUJCQWlBQ1FRaHFFSmdDREFJTEN5TUFRYkFCYXlJQUpBQWdBaWdDRUNJQkVCd2dBRUVRYWtHQm1RVkI2UUZCQ0NBQlFjZ0NhaEFYSWdGQkdHb2lBMEhSa3d3UURob2dBQ0FDS0FJVUtBSUFJZ1FnQkNnQ0FDZ0NEQkVDQUNBRElBQVFFaG9nQUJBUEdpQUJFQmdnQUVHd0FXb2tBRUVBQ3lFQUlBSkJRR3NrQUNBQUN6a0JBWDhnQVVFQVIwRWZkQ0VCQTBBZ0FFR0FnSUNBZUhFZ0FVY2dBa0VmUzNKRkJFQWdBRUVCZENFQUlBSkJBV29oQWd3QkN3c2dBZ3QzQVFOL0l3QkJrQUZySWdVa0FDQUZFRWtpQmtFSWFpSUVRZk9hQ1JBT0dpQUVJQUVRSVJvZ0JFSDM4QXdRRGhvZ0JDQUNFQTRhSUFSQjkvQU1FQTRhSUFRZ0F4QWhHaUFFUWNlS0NSQU9HaUFFUWZEOEJoQU9HaUFFUWZPYUNSQU9HaUFBSUFaQkRHb1FRaUFHRUZFZ0JVR1FBV29rQUF0QUFnSi9BWDVCRENFQ0lBQWhBeUFCUVF4UEJFQkJmeUFCclVJVWZpSUVweUFFUWlDSXB4c1FGU0VESUFFaEFnc2dBQ0FETmdMd0FTQUFJQUkyQXZnQkMxY0JBWDhqQUVFUWF5SUZKQUFnQlNBQ05nSUFJQVVnQVRZQ0NDQUFJQVVvQWdnZ0JTZ0NBQ0FERU5rRUlnQkIrT3dQTmdJRUlBQkJyTzBQTmdJQUlBQWdCRFlDSkNBQVFaanREellDQUNBRlFSQnFKQUFnQUFzTkFFR1RwQVlnQUNBQkVMUVJDeVFBSUFFZ0FpQUJLQUlBS0FJSUVRSUFJQUFnQVVFRWFpSUFFUGtHSUFBZ0FoQ1dDZ3NwQVFKL0l3QkJFR3NpQVNRQUlBRWdBRGNEQ0NBQlFRaHFRUWdRendjaEFpQUJRUkJxSkFBZ0Fnc2dBUUYvSXdCQkVHc2lBU1FBSUFBcEF3QVFzZ3doQUNBQlFSQnFKQUFnQUF0eUFRTi9Jd0JCb0FGcklnTWtBQ0FEUVFocUVFa2lCRUVJYWlJRlFkUzFDaEFPR2lBRklBRVF2QUlhSUFWQmsrY0pFQTRhSUFWQjg1b0pFQTRhSUFNZ0Fpa0NBRGNEbUFFZ0JDQURRWmdCYWhDMkJFRUlha0h6bWdrUURob2dBQ0FFUVF4cUVFSWdCQkJSSUFOQm9BRnFKQUFMY1FFRGZ5TUFRYUFCYXlJREpBQWdBMEVJYWhCSklnUkJDR29pQlVIVXRRb1FEaG9nQlNBQkVDRWFJQVZCaytjSkVBNGFJQVZCODVvSkVBNGFJQU1nQWlrQ0FEY0RtQUVnQkNBRFFaZ0JhaEMyQkVFSWFrSHptZ2tRRGhvZ0FDQUVRUXhxRUVJZ0JCQlJJQU5Cb0FGcUpBQUxZUUVCZnlNQVFSQnJJZ1FrQUNBQUFuOGdBQUo5UXdBQUFBQVFSaUFEWGdSQUlBRWdCRUd0a1FjUUZDSUFJQUlRWFNBQUVBOGFRUUlnQVMwQUJFVU5BaHBEQUFBQUFCQkdEQUVMSUFPUkVFWUxPQUlBUVFFTE9nQUVJQVJCRUdva0FBdGRBUUovSXdCQkVHc2lCQ1FBSUFBQ2Z3SkFJQU5EQUFBQUFGMEVRQ0FCSUFSQnJaRUhFQlFpQlNBQ0VGMGdCUkFQR2tFQ0lBRXRBQVJGRFFJYUlBQkJBRFlDQUF3QkN5QUFJQU9ST0FJQUMwRUJDem9BQkNBRVFSQnFKQUFMWVFFQ2Z5TUFRUkJySWdRa0FDQUFBbjhDUUNBRFJBQUFBQUFBQUFBQVl3UkFJQUVnQkVHdGtRY1FGQ0lGSUFJUVhTQUZFQThhUVFJZ0FTMEFCRVVOQWhvZ0FFSUFOd01BREFFTElBQWdBNTg1QXdBTFFRRUxPZ0FJSUFSQkVHb2tBQXRCQUNBQUFuOGdBVU1BNEg5SFhnUkFJQUJCQURZQ0FFRUNEQUVMSUFGREFPQi94MTBFUUNBQVFRRTJBZ0JCQWd3QkN5QUFJQUVRUmpnQ0FFRUJDem9BQkFzVkFDQUFRWWpyRHpZQ0FDQUFRVEJxRUtvQklBQUw2UUVCQW44akFFRVFheUlISkFBQ1FDQUNLQUlBSWdZZ0JpZ0NBQ2dDQ0JFQUFDSUdSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCaWdDQkNJR1FmQ2ZFa1lFUUNBSFFRaHFJQUVnQWlnQ0FCQThJQU1vQWdBUVBDQUVLQUlBRUR3Z0JTZ0NBQkE4RUpJU0RBRUxJQVpCc0trU1JnUkFJQWRCQ0dvZ0FTQUNLQUlBRURRZ0F5Z0NBQkEwSUFRb0FnQVFOQ0FGS0FJQUVEUVFrUklNQVFzZ0JrSFFxQkpIRFFFZ0IwRUlhaUFCSUFJb0FnQVFQeUFES0FJQUVEOGdCQ2dDQUJBL0lBVW9BZ0FRUHhDUUVnc2dBQ0FIS1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQjBFUWFpUUFDM1VCQW44akFFRVFheUlFSkFBZ0JDQUFOZ0lNSUFRZ0FUWUNDQ0FFSUFJMkFnUWdCQ2dDRENFQklBUW9BZ2doQWlBRUtBSUVJUVVqQUVFUWF5SUFKQUFnQUNBQk5nSU1JQUFnQWpZQ0NDQUFJQVUyQWdRZ0FDZ0NDQ0FBS0FJRUlBTnNRUVFRNndvZ0FFRVFhaVFBSUFSQkVHb2tBQXM1QVFGL0l3QkJFR3NpQkNRQUlBSW9BZ0FRL0FJaEFpQUJJQU5xS0FJQUlRRWdBQ0FDTmdJRUlBQWdBaUFCY0RZQ0FDQUVRUkJxSkFBTExBRUNmeUFBS0FJRUlnSWdBVVlFUUVFQkR3c2dBa0dvekJKR0JIOGdBQ2dDQ0NnQ0JDQUJSZ1ZCQUFzTE1BRUJmeU1BUVJCcklnTWtBQ0FESUFBUTVBYzJBZ2dnQUNBQklBSWdBMEVJYWhDbEN5RUFJQU5CRUdva0FDQUFDME1CQVg4akFFRVFheUlHSkFBZ0JpQUZOZ0lNSUFBZ0JpZ0NEQkROR3lJQUlBUTJBZ1FnQUNBRE5nSUFJQUFnQVRZQ0RDQUFJQUkyQWdBZ0JrRVFhaVFBSUFBTFNnRUJmeU1BUVJCcklnY2tBQ0FISUFJMkFnQWdCeUFCTmdJSUlBQWdCeWdDQ0NBSEtBSUFJQU1RMlFRaUFDQUdOZ0lFSUFBZ0JUWUNBQ0FBSUFRMkFnQWdCMEVRYWlRQUlBQUxOUUVCZndKQUlBRkZEUUFnQVVFQUlBRUVmeUFCS0FJRUlBSVFTQVZCQUFzYklnTU5BQ0FBSUFFZ0FoRGhCRUVBSVFNTElBTUxTZ0VDZnlNQVFhQUJheUlFSkFBZ0JDQURJQUpCQ0NBQUtBSUFLQUlFRUJjaUJVRVlhaUFCRUE0YUlBVWdBQ2dDQkNnQ0FDZ0NCRUVFYWhDYUFSb2dCUkFZSUFSQm9BRnFKQUFMeEFFQ0JYOEJmaU1BUVJCcklnZ2tBQ0FCS0FMQUt5RUpJQUZCQVRZQ3dDc2dBVUhFSzJvaUJ5Z0NBQ0VLSUFjZ0JUWUNBRUVDSVFjQ1FDQUJJQUVnQWlnQ0pCQ0ZBa0VBRUpZQ0lnWkZEUUFnQmlnQ0ZCQ3VDVVVFUUNBQklBZ2dCQkFVSWdZZ0FrRVFhaEFuSUFZUUR4b01BUXNnQmlnQ0hCQmpJZ3RDQUZNRVFDQUJJQWdnQXhBVUlnWWdBa0VRYWhBbklBWVFEeG9NQVFzZ0FDQUxQZ0lBUVFFaEJ3c2dBQ0FIT2dBRUlBRWdDallDeENzZ0FTQUpOZ0xBS3lBSVFSQnFKQUFMWGdFQ2Z5TUFRVUJxSWdVa0FDQUZRUWhxRU04SUlnUkJDRFlDSkNBRUlBTTJBZ0FnQkNBQ0tRSUFOd0lFSUFRZ0Fpa0NDRGNDRENBRUlBSW9BaEEyQWhRZ0JFRVlhaUFCRU9VTklBQWdCQkNvQnlBRUVJY0ZJQVZCUUdza0FBczhBUUYrSUFCRkJFQkJBQThMQW45QkFDQUFLQUlFSWdBcEF4QWdBNE1pQkNBRVFnRjlnMUFOQUJwQkFTQUFJQUlRU0EwQUdpQUFJQUVRU0FzTEp3QWdBU0FDTmdJQUlBRWdBQ2tDQkRjQ0JDQUJJQUFwQWd3M0Fnd2dBU0FBS0FJVU5nSVVDeThCQVg5QkdCQVZJZ0lnQVRZQ0FDQUNJQUFwQWdRM0FnUWdBaUFBS1FJTU53SU1JQUlnQUNnQ0ZEWUNGQ0FDQzUwQkFRRi9Jd0JCd0FGcklnc2tBQ0FMSUFJMkFyQUJJQXNnQVRZQ3VBRWdBQ0FMS0FLNEFTQUxLQUt3QVNBREVPVUVJZ0FnQ2pZQ0JDQUFJQWsyQWdBZ0FDQUVOZ0lrSUFBZ0NEWUNBQ0FFQkg4Z0JBVWdDeUFGUVJ4QkFDQUxRYUFCYWhBZElnRVFGeUlDUVJocUlBY1FEaG9nQWhBWUlBRVFIaUFBS0FJa0N4QlhJQUFvQWdoQkFVRUFJQVlnQlVFZEVFc2dDMEhBQVdva0FDQUFDMThCQW44akFFR3dBV3NpQVNRQUlBRkJJR29RU1NJQ1FRaHFJZ1VnQVVFUWFpQUVFQlFpQmhBU0dpQUZRYlgwQ1JBT0dpQUZJQUVnQXhBVUlnVVFFaG9nQlJBUEdpQUdFQThhSUFBZ0FrRU1haEJDSUFJUVVTQUJRYkFCYWlRQUMzVUJBWDhqQUVFUWF5SUFKQUFDUUNBQklBSW9BZ1JCOElVUVJ3Ui9JQUlRc2dJaUFrVU5BU0FDS0FJY0lBTkhEUUVnQWlnQ0dBVWdBZ3NRcXdJaUFrVUVRQXdCQ3lBQUlBSTJBZ3dnQVNnQ0FDRUJJQUFnQXpZQ0NDQUJJQUJCREdvZ0FFRUlhaENmQWlFRUN5QUFRUkJxSkFBZ0JBdE1BUUovSXdCQmtBRnJJZ1FrQUNBRUVFa2lCVUVJYWlBQktBSUFJZ0VnQTBzRWYwR3M0Z1lGSUFGQkFuUWdBbW9vQWdBTEVBNGFJQUFnQlVFTWFoQkNJQVVRVVNBRVFaQUJhaVFBQ3k0QkFuOGpBRUVRYXlJQ0pBQWdBQ2dDQUNBQ0lBRVFGQ0lESUFBb0FnUVEvQUVnQXhBUEdpQUNRUkJxSkFBTG9nRUJCWDhqQUVFUWF5SUdKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUZOZ0lNSUFZZ0JUWUNDQ0FBUVl3QmFpSUZFUGNmSVFjZ0FDZ0NDQ0VJSUFZb0FnZ2hDU01BUVJCcklnQWtBQ0FBSUFrMkFnQWdBQ0FJTmdJSUlBY2dBQ2dDQ0NBQUtBSUFJQUVRNVFRaUFTQUVOZ0lFSUFFZ0F6WUNBQ0FCSUFJMkFnQWdBRUVRYWlRQUlBVWdCeEFvSUFVZ0JTZ0NHRUVCYWpZQ0dDQUdRUkJxSkFBZ0J3dTNBUUVFZnlNQVFaQUJheUlESkFBZ0FDQUJSZ1IvUVFFRklBTkI4QUJxRU5vVkl3QkJJR3NpQkNRQUlBUWdBallDQ0NBRUlBUkJDR29pQlRZQ0dDQURRVEJxSWdZZ0FTQUZFSnNqSUFVUUZpQUVRU0JxSkFBZ0EwRVFhaUlCRU5vVklBTWdBRFlDRENBRFFkQUFhaUFHSUFFZ0EwRU1haENjSXlBREtBSlFJUUFnQXlnQ2NDRUJJQU5CMkFCcUVCWWdBMEVZYWhBV0lBTkJPR29RRmlBRFFmZ0FhaEFXSUFBZ0FVY0xJUUFnQTBHUUFXb2tBQ0FBQ3pjQkFYOGdBRUVBTmdJUVFjZ0JFQlVpQXlBQ05nSUFJQU1nQVNrQ0FEY0NCQ0FEUVF4cUlBRkJDR29RcXdNZ0FDQUROZ0lRSUFBTGNnRUNmeU1BUVNCcklnTWtBQ0FEUVFocUlnSWdBQ0FBS0FJQUtBSWtFUUlBSUFJUThBc2pBRUVRYXlJQUpBQWdBQ0FEUVJocU5nSUlJQUJCQ0dvZ0FrRi9JQUl0QUFnaUFpQUNRZjhCUmh0QkFuUWdBV29vQWdBUkFRQWhBaUFBUVJCcUpBQWdBaUVBSUFOQklHb2tBQ0FBQ3pRQkFYOGdBU0FGVHdSQUVBRUFDeUFFSUFBb0FnZ2dBQ2dDQUdzZ0EyMGlBRUVCZENJR0lBRWdBU0FHU1JzZ0FDQUNUeHNMTWdFQ2Z5QUFRYXptRHpZQ0FDQUFLQUlFUVF4cklnRWdBU2dDQ0VFQmF5SUNOZ0lJSUFKQkFFZ0VRQ0FCRUI4TElBQUxRQUVCZnlBQlFRaDFJUWNnQUNBQ0lBTWdBVUVCY1FSL0lBUW9BZ0FnQnhEVkRBVWdCd3NnQkdvZ0JVRUNJQUZCQW5FYklBWWdBQ2dDQUNnQ0ZCRUtBQXNLQUNBQUlBRnFLQUlBQzEwQkFYOGdBQ2dDRUNJRFJRUkFJQUJCQVRZQ0pDQUFJQUkyQWhnZ0FDQUJOZ0lRRHdzQ1FDQUJJQU5HQkVBZ0FDZ0NHRUVDUncwQklBQWdBallDR0E4TElBQkJBVG9BTmlBQVFRSTJBaGdnQUNBQUtBSWtRUUZxTmdJa0N3c2dBQUpBSUFBb0FnUWdBVWNOQUNBQUtBSWNRUUZHRFFBZ0FDQUNOZ0ljQ3d1YUFRQWdBRUVCT2dBMUFrQWdBQ2dDQkNBQ1J3MEFJQUJCQVRvQU5BSkFJQUFvQWhBaUFrVUVRQ0FBUVFFMkFpUWdBQ0FETmdJWUlBQWdBVFlDRUNBRFFRRkhEUUlnQUNnQ01FRUJSZzBCREFJTElBRWdBa1lFUUNBQUtBSVlJZ0pCQWtZRVFDQUFJQU0yQWhnZ0F5RUNDeUFBS0FJd1FRRkhEUUlnQWtFQlJnMEJEQUlMSUFBZ0FDZ0NKRUVCYWpZQ0pBc2dBRUVCT2dBMkN3dUVBUUVEZnlNQVFSQnJJZ01rQUNBQUVKZ0dJQUpCY0VrRVFBSkFJQUlRMVFnRVFDQUFJQUlRaXdVZ0FCQ0tCU0VFREFFTElBQWdBaENYQmtFQmFpSUZFSlFHSWdRUWxnWWdBQ0FGRUpVR0lBQWdBaERUQkFzZ0JCQ0RBU0FCSUFJUXVRTWFJQU5CQURvQUR5QUNJQVJxSUFOQkQyb1EwUUlnQTBFUWFpUUFEd3NRdUFNQUM0UUJBUUovSXdCQkVHc2lCQ1FBSUFBUW1BWWdBMEZ3U1FSQUFrQWdBeERWQ0FSQUlBQWdBaENMQlNBQUVJb0ZJUU1NQVFzZ0FDQURFSmNHUVFGcUlnVVFsQVlpQXhDV0JpQUFJQVVRbFFZZ0FDQUNFTk1FQ3lBREVJTUJJQUVnQWhDNUF4b2dCRUVBT2dBUElBSWdBMm9nQkVFUGFoRFJBaUFFUVJCcUpBQVBDeEM0QXdBTFBRQWdBVUhqQUUwRVFDQUFJQUVRb0JNUEN5QUJRZWNIVFFSQUlBQWdBVUhrQUc0aUFCQ2ZFeUFBUVp4L2JDQUJhaERvQ1E4TElBQWdBUkM0QkFzdkFDQUJRWS9PQUUwRVFDQUFJQUVRMnd3UEN5QUFJQUZCa000QWJpSUFFTnNNSUFCQjhMRi9iQ0FCYWhDNEJBc0tBRUhrdkFNUXNCZ0FDNVVFQVF0L0l3QkJnQUZySWdza0FDQUNJQU1RZ2dvaENDQUxRZHNYTmdJUUlBdEJDR29nQzBFUWFpSUpFSUVLSVE0Q1FDQUlRZVVBVHdSQUlBZ1E0QUVpQ1VVTkFTQU9JQWtRaGdJTElBa2hCaUFDSVFjRFFDQURJQWRHQkVBRFFBSkFJQUFvQWdBaUJpQUJSaUlIUVFFZ0NCc0VRQ0FIUlEwQklBVWdCU2dDQUVFQ2NqWUNBQXdCQ3lBTVFRRnFJUTlCQUNFTklBUWdCaXdBQUJDSUJ5RVFJQWtoQmlBQ0lRY0RRQ0FESUFkR0JFQWdEeUVNSUExRkRRTWdBQ0FBS0FJQVFRRnFOZ0lBSUFraEJpQUNJUWNnQ0NBS2FrRUNTUTBEQTBBZ0F5QUhSZ1JBREFVRkFrQWdCaTBBQUVFQ1J3MEFJQWNRT3lBTVJnMEFJQVpCQURvQUFDQUtRUUZySVFvTElBWkJBV29oQmlBSFFReHFJUWNNQVFzQUN3QUZBa0FnQmkwQUFFRUJSdzBBQWtBZ0JDQUhJQXdRaVFFc0FBQVFpQWNnRUVZRVFFRUJJUTBnQnhBN0lBOUhEUUlnQmtFQ09nQUFJQXBCQVdvaENnd0JDeUFHUVFBNkFBQUxJQWhCQVdzaENBc2dCa0VCYWlFR0lBZEJER29oQnd3QkN3QUxBQXNMQWtBQ1FBTkFJQUlnQTBZTkFTQUpMUUFBUVFKSEJFQWdDVUVCYWlFSklBSkJER29oQWd3QkN3c2dBaUVEREFFTElBVWdCU2dDQUVFRWNqWUNBQXNnRGhEWUFTQUxRWUFCYWlRQUlBTVBCUUpBSUFjUXZ3UkZCRUFnQmtFQk9nQUFEQUVMSUFaQkFqb0FBQ0FLUVFGcUlRb2dDRUVCYXlFSUN5QUdRUUZxSVFZZ0IwRU1haUVIREFFTEFBc0FDeEJ2QUFzWUFDQUFRWWllRHpZQ0FDQUFLQUlRRU1FRklBQVE3QXdMcndRQkMzOGpBRUdBQVdzaUN5UUFJQUlnQXhDQ0NpRUlJQXRCMnhjMkFoQWdDMEVJYWlBTFFSQnFJZ2tRZ1FvaERnSkFJQWhCNVFCUEJFQWdDQkRnQVNJSlJRMEJJQTRnQ1JDR0Fnc2dDU0VISUFJaEJnTkFJQU1nQmtZRVFBTkFBa0FnQUNnQ0FDSUdJQUZHSWdkQkFTQUlHd1JBSUFkRkRRRWdCU0FGS0FJQVFRSnlOZ0lBREFFTElBeEJBV29oRDBFQUlRMGdCQ0FHS0FJQUVJUUhJUkFnQ1NFSElBSWhCZ05BSUFNZ0JrWUVRQ0FQSVF3Z0RVVU5BeUFBSUFBb0FnQkJCR28yQWdBZ0NTRUhJQUloQmlBSUlBcHFRUUpKRFFNRFFDQURJQVpHQkVBTUJRVUNRQ0FITFFBQVFRSkhEUUFnQmlnQ0JDQUdMUUFMRUpnQklBeEdEUUFnQjBFQU9nQUFJQXBCQVdzaENnc2dCMEVCYWlFSElBWkJER29oQmd3QkN3QUxBQVVDUUNBSExRQUFRUUZIRFFBQ1FDQUVJQVlnREJEMUFTZ0NBQkNFQnlBUVJnUkFRUUVoRFNBR0tBSUVJQVl0QUFzUW1BRWdEMGNOQWlBSFFRSTZBQUFnQ2tFQmFpRUtEQUVMSUFkQkFEb0FBQXNnQ0VFQmF5RUlDeUFIUVFGcUlRY2dCa0VNYWlFR0RBRUxBQXNBQ3dzQ1FBSkFBMEFnQWlBRFJnMEJJQWt0QUFCQkFrY0VRQ0FKUVFGcUlRa2dBa0VNYWlFQ0RBRUxDeUFDSVFNTUFRc2dCU0FGS0FJQVFRUnlOZ0lBQ3lBT0VOZ0JJQXRCZ0FGcUpBQWdBdzhGQWtBZ0JpZ0NCQ0FHTFFBTEVQNEpSUVJBSUFkQkFUb0FBQXdCQ3lBSFFRSTZBQUFnQ2tFQmFpRUtJQWhCQVdzaENBc2dCMEVCYWlFSElBWkJER29oQmd3QkN3QUxBQXNRYndBTFV3RUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBRVF0d01oQVNBQVFZQUJUd1JBUVg5QmZ5QUFRZjhCY1VIMHFTQW9BZ0FvQWdBYklBQkJnSDl4UVlDL0EwY2JJUUFMSUFFUXRnTWdBa0VRYWlRQUlBQUxDQUFnQUVHVUJHb0xDQUFnQUVHSUJHb0xDQUFnQUVIOEEyb0xDQUFnQUVId0Eyb0xDQUFnQUVIWUEyb0xDQUFnQUVHNEFXb0xCd0FnQUVFUWFnc1ZBQ0FBUWJ5ZUR6WUNBQ0FBS0FJSUVNRUZJQUFMYmdJQmZ3RjlJd0JCRUdzaUJTUUFJQUFDZndKQUlBUkRBQUFBQUZ3RVFDQURJQVNWSWdhTFF3QUFnSDlkRFFFTElBVWdBMEhaa2djZ0JCRHNCaUFCSUFVZ0FoQmRJQVVRRHhvZ0F5RUdJQUV0QUFRTkFFRUNEQUVMSUFBZ0JqZ0NBRUVCQ3pvQUJDQUZRUkJxSkFBTGRnSUJmd0Y4SXdCQkVHc2lCU1FBSUFBQ2Z3SkFJQVJFQUFBQUFBQUFBQUJpQkVBZ0F5QUVveUlHbVVRQUFBQUFBQUR3ZjJNTkFRc2dCU0FEUWRtU0J5QUVFTzBHSUFFZ0JTQUNFRjBnQlJBUEdpQURJUVlnQVMwQUJBMEFRUUlNQVFzZ0FDQUdPUU1BUVFFTE9nQUlJQVZCRUdva0FBc29BUUYvSUFCQnpKVVBOZ0lBQWtBZ0FDZ0NDQ0lCUlEwQUlBQXRBQXhGRFFBZ0FSQWZDeUFBQzcwQ0FRSi9Jd0JCRUdzaUN5UUFBa0FnQWlnQ0FDSUtJQW9vQWdBb0FnZ1JBQUFpQ2tVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFvb0FnUWlDa0h3bnhKR0JFQWdDMEVJYWlBQklBSW9BZ0FRUENBREtBSUFFRHdnQkNnQ0FCQThJQVVvQWdBUVBDQUdLQUlBRUR3Z0J5Z0NBQkE4SUFnb0FnQVFQQ0FKS0FJQUVEd1FuUlVNQVFzZ0NrR3dxUkpHQkVBZ0MwRUlhaUFCSUFJb0FnQVFOQ0FES0FJQUVEUWdCQ2dDQUJBMElBVW9BZ0FRTkNBR0tBSUFFRFFnQnlnQ0FCQTBJQWdvQWdBUU5DQUpLQUlBRURRUW1CVU1BUXNnQ2tIUXFCSkhEUUVnQzBFSWFpQUJJQUlvQWdBUVB5QURLQUlBRUQ4Z0JDZ0NBQkEvSUFVb0FnQVFQeUFHS0FJQUVEOGdCeWdDQUJBL0lBZ29BZ0FRUHlBSktBSUFFRDhRamhVTElBQWdDeWtEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQXRCRUdva0FBc1lBQ0FBS0FJSUVNQUJSd1JBSUFBb0FnZ1F3UVVMSUFBTEhRQUNRQ0FBSUFGR0JFQWdBVUVBT2dCNERBRUxJQUVnQWhDaEZBc0xrd0lCQW44akFFRVFheUlKSkFBQ1FDQUNLQUlBSWdnZ0NDZ0NBQ2dDQ0JFQUFDSUlSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdDQ2dDQkNJSVFmQ2ZFa1lFUUNBSlFRaHFJQUVnQWlnQ0FCQThJQU1vQWdBUVBDQUVLQUlBRUR3Z0JTZ0NBQkE4SUFZb0FnQVFQQ0FIS0FJQUVEd1FxaFVNQVFzZ0NFR3dxUkpHQkVBZ0NVRUlhaUFCSUFJb0FnQVFOQ0FES0FJQUVEUWdCQ2dDQUJBMElBVW9BZ0FRTkNBR0tBSUFFRFFnQnlnQ0FCQTBFS1VWREFFTElBaEIwS2dTUncwQklBbEJDR29nQVNBQ0tBSUFFRDhnQXlnQ0FCQS9JQVFvQWdBUVB5QUZLQUlBRUQ4Z0JpZ0NBQkEvSUFjb0FnQVFQeENmRlFzZ0FDQUpLUU1JTndJQURBRUxJQUJCQURvQUJBc2dDVUVRYWlRQUMra0JBUUovSXdCQkVHc2lCeVFBQWtBZ0FpZ0NBQ0lHSUFZb0FnQW9BZ2dSQUFBaUJrVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBWW9BZ1FpQmtId254SkdCRUFnQjBFSWFpQUJJQUlvQWdBUVBDQURLQUlBRUR3Z0JDZ0NBQkE4SUFVb0FnQVFQQkRBRlF3QkN5QUdRYkNwRWtZRVFDQUhRUWhxSUFFZ0FpZ0NBQkEwSUFNb0FnQVFOQ0FFS0FJQUVEUWdCU2dDQUJBMEVMd1ZEQUVMSUFaQjBLZ1NSdzBCSUFkQkNHb2dBU0FDS0FJQUVEOGdBeWdDQUJBL0lBUW9BZ0FRUHlBRktBSUFFRDhRclJVTElBQWdCeWtEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQWRCRUdva0FBc01BQ0FBSUFBb0FnQVFod1FMTkFFQmZ5TUFRUkJySWdVa0FDQUZRUWhxSUFRUXR3TWhCQ0FBSUFFZ0FpQURFSThLSVFBZ0JCQzJBeUFGUVJCcUpBQWdBQXN3QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQWhDM0F5RUNJQUFnQVJDakRTRUFJQUlRdGdNZ0EwRVFhaVFBSUFBTElRQWdBRUdBbnc4MkFnQWdBQ2dDQ0JEQUFVY0VRQ0FBS0FJSUVNRUZDeUFBQ3dzQUlBQWdBU0FDRVBBVEM5QUJBUVIvSXdCQkVHc2lCaVFBUWUvLy8vOERJUWNnQWtIdi8vLy9BeUFCYTAwRVFDQUFFSThDSVFnZ0FVSG0vLy8vQVUwRVFDQUdJQUZCQVhRMkFnZ2dCaUFCSUFKcU5nSU1JQVpCREdvZ0JrRUlhaENKQlNnQ0FCQ0xCMEVCYWlFSEN5QUhFSk1HSVFJZ0JBUkFJQUlnQ0NBRUVNSUVDeUFESUFRZ0JXb2lDVWNFUUNBQ0lBUkJBblFpQkdvZ0JDQUlhaUFGUVFKMGFpQURJQWxyRU1JRUN5QUJRUUZxSWdGQkFrY0VRQ0FJSUFFUS9Ba0xJQUFnQWhDWkFpQUFJQWNRaWdjZ0JrRVFhaVFBRHdzUXVBTUFDd3dBSUFBZ0FVRVFhaEJVR2dzSEFDQUFLQUlNQ3d3QUlBQWdBVUVNYWhCVUdnc0hBQ0FBTEFBSkN3Y0FJQUFzQUFnTGl3RUJBMzhnQUNFREFrQWdBVUh3Ly8vL0Ewa0VRQUpBSUFFUWhBb0VRQ0FESUFFUXdBVU1BUXNnQXlBQkVJc0hRUUZxSWdRUWt3WWlCUkNaQWlBRElBUVFpZ2NnQXlBQkVJY0VJQVVoQXdzZ0F5RUVJQUVpQlFSQUEwQWdCQ0FDTmdJQUlBUkJCR29oQkNBRlFRRnJJZ1VOQUFzTElBTWdBVUVDZEdwQkFCQ1pBZ3dCQ3hDNEF3QUxJQUFMMVFNQUFrQUNRQ0FBSUFWR0JFQWdBUzBBQUVVTkFrRUFJUVVnQVVFQU9nQUFJQVFnQkNnQ0FDSUFRUUZxTmdJQUlBQkJMam9BQUNBSEVEdEZEUUVnQ1NnQ0FDSUFJQWhyUVo4QlNnMEJJQW9vQWdBaEFTQUpJQUJCQkdvMkFnQWdBQ0FCTmdJQVFRQVBDd0pBSUFBZ0JrY05BQ0FIRUR0RkRRQWdBUzBBQUVVTkFrRUFJUVVnQ1NnQ0FDSUFJQWhyUVo4QlNnMEJJQW9vQWdBaEFTQUpJQUJCQkdvMkFnQWdBQ0FCTmdJQUlBcEJBRFlDQUVFQUR3dEJmeUVGSUFzZ0MwR0FBV29nQUJDQURTQUxheUlBUWZ3QVNnMEFJQUJCQW5WQmdKTVBhaTBBQUNFR0FrQUNRQ0FBUVh0eElnVkIyQUJIQkVBZ0JVSGdBRWNOQVNBRElBUW9BZ0FpQUVjRVFFRi9JUVVnQUVFQmF5MEFBRUhmQUhFZ0FpMEFBRUgvQUhGSERRUUxJQVFnQUVFQmFqWUNBQ0FBSUFZNkFBQkJBQThMSUFKQjBBQTZBQUFNQVFzZ0JrSGZBSEVpQXlBQ0xRQUFSdzBBSUFJZ0EwR0FBWEk2QUFBZ0FTMEFBRVVOQUNBQlFRQTZBQUFnQnhBN1JRMEFJQWtvQWdBaUFTQUlhMEdmQVVvTkFDQUtLQUlBSVFJZ0NTQUJRUVJxTmdJQUlBRWdBallDQUFzZ0JDQUVLQUlBSWdGQkFXbzJBZ0FnQVNBR09nQUFRUUFoQlNBQVFkUUFTZzBBSUFvZ0NpZ0NBRUVCYWpZQ0FBc2dCUThMUVg4TFZRRUNmeU1BUVJCcklnWWtBQ0FHUVFocUlnVWdBUkIrSUFVUThBSkJnSk1QUWFDVER5QUNFUG9FSUFNZ0JSQ0ZCeUlCRU5vRE5nSUFJQVFnQVJEdkFqWUNBQ0FBSUFFUTdnSWdCUkJrSUFaQkVHb2tBQXNxQUFOQUFrQWdBQ0FCUndSL0lBQW9BZ0FnQWtjTkFTQUFCU0FCQ3c4TElBQkJCR29oQUF3QUN3QUx5UU1BQWtBQ1FDQUFJQVZHQkVBZ0FTMEFBRVVOQWtFQUlRVWdBVUVBT2dBQUlBUWdCQ2dDQUNJQVFRRnFOZ0lBSUFCQkxqb0FBQ0FIRUR0RkRRRWdDU2dDQUNJQUlBaHJRWjhCU2cwQklBb29BZ0FoQVNBSklBQkJCR28yQWdBZ0FDQUJOZ0lBUVFBUEN3SkFJQUFnQmtjTkFDQUhFRHRGRFFBZ0FTMEFBRVVOQWtFQUlRVWdDU2dDQUNJQUlBaHJRWjhCU2cwQklBb29BZ0FoQVNBSklBQkJCR28yQWdBZ0FDQUJOZ0lBSUFwQkFEWUNBRUVBRHd0QmZ5RUZJQXNnQzBFZ2FpQUFFS2NVSUF0cklnQkJIMG9OQUNBQVFZQ1REMm90QUFBaEJnSkFBa0FDUUFKQUlBQkJmbkZCRm1zT0F3RUNBQUlMSUFNZ0JDZ0NBQ0lBUndSQUlBQkJBV3N0QUFCQjN3QnhJQUl0QUFCQi93QnhSdzBFQ3lBRUlBQkJBV28yQWdBZ0FDQUdPZ0FBUVFBUEN5QUNRZEFBT2dBQURBRUxJQVpCM3dCeElnTWdBaTBBQUVjTkFDQUNJQU5CZ0FGeU9nQUFJQUV0QUFCRkRRQWdBVUVBT2dBQUlBY1FPMFVOQUNBSktBSUFJZ0VnQ0d0Qm53RktEUUFnQ2lnQ0FDRUNJQWtnQVVFRWFqWUNBQ0FCSUFJMkFnQUxJQVFnQkNnQ0FDSUJRUUZxTmdJQUlBRWdCam9BQUVFQUlRVWdBRUVWU2cwQUlBb2dDaWdDQUVFQmFqWUNBQXNnQlE4TFFYOExWUUVDZnlNQVFSQnJJZ1lrQUNBR1FRaHFJZ1VnQVJCK0lBVVF3d0pCZ0pNUFFhQ1REeUFDRUw4RklBTWdCUkNKQnlJQkVOb0RPZ0FBSUFRZ0FSRHZBam9BQUNBQUlBRVE3Z0lnQlJCa0lBWkJFR29rQUFzTkFDQUFJQUVnQWtKL0VLUU5Dd2tBSUFCQkFSQzFGQXNKQUNBQVFRQVF0UlFMSXdFQ2Z5QUFJUUVEUUNBQklnSkJCR29oQVNBQ0tBSUFEUUFMSUFJZ0FHdEJBblVMc0FJQkJIOGdBQUovQWtBZ0FDSUNRUU54QkVBRFFDQUNMUUFBSWdGRklBRkJQVVp5RFFJZ0FrRUJhaUlDUVFOeERRQUxDd0pBSUFJb0FnQWlBVUYvY3lBQlFZR0NoQWhyY1VHQWdZS0VlSEVOQUFOQUlBRkJ2ZnIwNlFOeklnRkJmM01nQVVHQmdvUUlhM0ZCZ0lHQ2hIaHhEUUVnQWlnQ0JDRUJJQUpCQkdvaEFpQUJRWUdDaEFocklBRkJmM054UVlDQmdvUjRjVVVOQUFzTEEwQWdBaUlCTFFBQUlnTUVRQ0FCUVFGcUlRSWdBMEU5UncwQkN3c2dBUXdCQ3lBQ0N5SUNSZ1JBUVFBUEN3SkFJQUFnQWlBQWF5SURhaTBBQUEwQVFiQzZJQ2dDQUNJQ1JRMEFJQUlvQWdBaUFVVU5BQU5BQWtBZ0FDQUJJQU1RcUExRkJFQWdBU0FEYWlJQkxRQUFRVDFHRFFFTElBSW9BZ1FoQVNBQ1FRUnFJUUlnQVEwQkRBSUxDeUFCUVFGcUlRUUxJQVFMc1g0RUJuOEJmUUY4QVg0akFFSEFCbXNpQmlRQUFrQWdBVVVFUUNBQVFRQTZBQVFNQVFzQ1FBSkFBa0FnQVNnQ0JDSUhRWkQrRHhCSUJFQWdCaUFETmdMTUJDQUJLQUlJSUFOR0RRSkJBQ0VISUFORkRRTWdBeWdDQkNJSVFkQ2dFa1lFUUNBR0FuOGdBU3NERUNJTlJBQUFBQUFBQU9CRFpBUkFJQVpCQURZQ29BVkJBZ3dCQ3lBTlJBQUFBQUFBQU9ERFl3UkFJQVpCQVRZQ29BVkJBZ3dCQ3lBR0FuNGdEWmxFQUFBQUFBQUE0RU5qQkVBZ0RiQU1BUXRDZ0lDQWdJQ0FnSUNBZndzM0E2QUZRUUVMT2dDb0JTQUdRYUFGYWhDeUFRUkFJQUlnQmtITUJHb2dCa0dnQldvUVNoREdBaUVCREFRTElBRXJBeEFoRFNBR1FlZ0VhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQXV3RUlBWXRBUE1FSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUxvQkNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndNWUlBWkJnQVZxSUEwZ0JrRVlhaENHQmlBQkVBOGFJQUlRSENBQ1FjZ0NhaUVCQW44Q2Z3SkFBa0FnQlFSQUlBWWdCaWdDaEFVZ0JpMEFpd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53TUlJQUVnQmtFSWFpQUVFUGtCQWtBZ0JrR2dCV29RdFFRb0FnQU9BZ0FEQWdzZ0JrTC8vLy8vLy8vLy8vOEFOd1BvQkNBQ0lBWkJ6QVJxSUFaQjZBUnFFTVlDREFNTElBWWdCaWdDaEFVZ0JpMEFpd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53TVFJQUVnQmtFUWFpQUVFTlVCUVFJTUF3c2dCa0dBQldvUUR4b01CUXNnQmtLQWdJQ0FnSUNBZ0lCL053UG9CQ0FDSUFaQnpBUnFJQVpCNkFScUVNWUNDeUVCUVFFTElRY2dCa0dBQldvUUR4b01CQXNnQ0VId254SkdCRUFnQmdKL0lBRXJBeEFpRFVULy8vLy8vLy92ZjJRRVFDQUdRUUEyQXFBRlFRSU1BUXNnRFVULy8vLy8vLy92LzJNRVFDQUdRUUUyQXFBRlFRSU1BUXNnQmlBTk9RT2dCVUVCQ3pvQXFBVWdCa0dnQldvUXNnRUVRQ0FDSUFaQnpBUnFJQVpCb0FWcUVFb1FyZ0loQVF3RUN5QUJLd01RSVEwZ0JrSG9CR29pQVNBRElBTW9BZ0FvQWd3UkFnQWdCaUFHS0FMc0JDQUdMUUR6QkNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXVRRUlBWWdCaWdDNkFRZ0FTQURHellDNEFRZ0JpQUdLUVBnQkRjRE1DQUdRWUFGYWlBTklBWkJNR29RaGdZZ0FSQVBHaUFDRUJ3Z0FrSElBbW9oQVFKL0FuOENRQUpBSUFVRVFDQUdJQVlvQW9RRklBWXRBSXNGSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDM0FRZ0JpQUdLQUtBQlNBR1FZQUZhaUFER3pZQzJBUWdCaUFHS1FQWUJEY0RJQ0FCSUFaQklHb2dCQkQ1QVFKQUlBWkJvQVZxRUxVRUtBSUFEZ0lBQXdJTElBWkMvLy8vLy8vLy8vZi9BRGNENkFRZ0FpQUdRY3dFYWlBR1FlZ0VhaEN1QWd3REN5QUdJQVlvQW9RRklBWXRBSXNGSWdJZ0FrRVlkRUVZZFVFQVNDSUNHellDMUFRZ0JpQUdLQUtBQlNBR1FZQUZhaUFDR3pZQzBBUWdCaUFHS1FQUUJEY0RLQ0FCSUFaQktHb2dCQkRWQVVFQ0RBTUxJQVpCZ0FWcUVBOGFEQVVMSUFaQy8vLy8vLy8vLzNjM0ErZ0VJQUlnQmtITUJHb2dCa0hvQkdvUXJnSUxJUUZCQVFzaEJ5QUdRWUFGYWhBUEdnd0VDeUFJUVpDcUVrWUVRRUVDSVFnQ2YwRUFJQUVyQXhBaURVUUFBTUQvLy8vZlFXUU5BQnBCQVNBTlJBQUFBQUFBQU9EQll3MEFHa0VCSVFnQ2Z5QU5tVVFBQUFBQUFBRGdRV01FUUNBTnFnd0JDMEdBZ0lDQWVBc0xJUWNnQmlBSU9nRHNCQ0FHSUFjMkF1Z0VJQVpCNkFScUVDc0VRQ0FDSUFaQnpBUnFJQVpCNkFScUVCb1F4QUloQVF3RUN5QUJLd01RSVEwZ0JrR0FCV29pQVNBRElBTW9BZ0FvQWd3UkFnQWdCaUFHS0FLRUJTQUdMUUNMQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXVRRUlBWWdCaWdDZ0FVZ0FTQURHellDNEFRZ0JpQUdLUVBnQkRjRFNDQUdRYUFGYWlBTklBWkJ5QUJxRUlZR0lBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3Si9Ba0FDUUNBRkJFQWdCaUFHS0FLa0JTQUdMUUNyQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXR3RUlBWWdCaWdDb0FVZ0JrR2dCV29nQXhzMkF0Z0VJQVlnQmlrRDJBUTNBemdnQVNBR1FUaHFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkIvLy8vL3djMkFvQUZJQUlnQmtITUJHb2dCa0dBQldvUXhBSU1Bd3NnQmlBR0tBS2tCU0FHTFFDckJTSUNJQUpCR0hSQkdIVkJBRWdpQWhzMkF0UUVJQVlnQmlnQ29BVWdCa0dnQldvZ0FoczJBdEFFSUFZZ0Jpa0QwQVEzQTBBZ0FTQUdRVUJySUFRUTFRRkJBZ3dEQ3lBR1FhQUZhaEFQR2d3RkN5QUdRWUNBZ0lCNE5nS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVNUUNDeUVCUVFFTElRY2dCa0dnQldvUUR4b01CQXNnQ0VHZ3N4SkdCRUJCQWlFSUFuOUJBQ0FCS3dNUUlnMUVBQURnLy8vLzcwRmtEUUFhUVFFZ0RVUUFBQUFBQUFBQUFHTU5BQnBCQVNFSUFuOGdEVVFBQUFBQUFBRHdRV01nRFVRQUFBQUFBQUFBQUdaeEJFQWdEYXNNQVF0QkFBc0xJUWNnQmlBSU9nRHNCQ0FHSUFjMkF1Z0VJQVpCNkFScUVDc0VRQ0FDSUFaQnpBUnFJQVpCNkFScUVCb1F4d0loQVF3RUN5QUJLd01RSVEwZ0JrR0FCV29pQVNBRElBTW9BZ0FvQWd3UkFnQWdCaUFHS0FLRUJTQUdMUUNMQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXVRRUlBWWdCaWdDZ0FVZ0FTQURHellDNEFRZ0JpQUdLUVBnQkRjRFlDQUdRYUFGYWlBTklBWkI0QUJxRUlZR0lBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3Si9Ba0FDUUNBRkJFQWdCaUFHS0FLa0JTQUdMUUNyQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXR3RUlBWWdCaWdDb0FVZ0JrR2dCV29nQXhzMkF0Z0VJQVlnQmlrRDJBUTNBMUFnQVNBR1FkQUFhaUFFRVBrQkFrQWdCa0hvQkdvUVBTZ0NBQTRDQUFNQ0N5QUdRWDgyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29ReHdJTUF3c2dCaUFHS0FLa0JTQUdMUUNyQlNJQ0lBSkJHSFJCR0hWQkFFZ2lBaHMyQXRRRUlBWWdCaWdDb0FVZ0JrR2dCV29nQWhzMkF0QUVJQVlnQmlrRDBBUTNBMWdnQVNBR1FkZ0FhaUFFRU5VQlFRSU1Bd3NnQmtHZ0JXb1FEeG9NQlFzZ0JrRUFOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTWNDQ3lFQlFRRUxJUWNnQmtHZ0JXb1FEeG9NQkFzZ0NFR3dxUkpHQkVBZ0JnSi9JQUVyQXhBaURVUUFBQURnLy8vdlIyUUVRQ0FHUVFBMkF1Z0VRUUlNQVFzZ0RVUUFBQURnLy8vdngyTUVRQ0FHUVFFMkF1Z0VRUUlNQVFzZ0JpQU50amdDNkFSQkFRczZBT3dFSUFaQjZBUnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RcndJaEFRd0VDeUFCS3dNUUlRMGdCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0RlQ0FHUWFBRmFpQU5JQVpCK0FCcUVJWUdJQUVRRHhvZ0FoQWNJQUpCeUFKcUlRRUNmd0ovQWtBQ1FDQUZCRUFnQmlBR0tBS2tCU0FHTFFDckJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF0d0VJQVlnQmlnQ29BVWdCa0dnQldvZ0F4czJBdGdFSUFZZ0Jpa0QyQVEzQTJnZ0FTQUdRZWdBYWlBRUVQa0JBa0FnQmtIb0JHb1FQU2dDQUE0Q0FBTUNDeUFHUWYvLy8vc0hOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFSzhDREFNTElBWWdCaWdDcEFVZ0JpMEFxd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9BcUFGSUFaQm9BVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53TndJQUVnQmtId0FHb2dCQkRWQVVFQ0RBTUxJQVpCb0FWcUVBOGFEQVVMSUFaQi8vLy9lellDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN2QWdzaEFVRUJDeUVISUFaQm9BVnFFQThhREFRTElBaEIwS2dTUmdSQVF3QUFBQUFRUmhvZ0JrSG9CR29pQndKL0lBRXJBeEFpRFVRQUFBQUFBUHp2UUdRRVFDQUhRUUEyQWdCQkFnd0JDeUFOUkFBQUFBQUEvTy9BWXdSQUlBZEJBVFlDQUVFQ0RBRUxJQWNnRGJZUVJqZ0NBRUVCQ3pvQUJDQUhFQ3NFUUNBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RclFJaEFRd0VDeUFCS3dNUUlRMGdCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0RrQUVnQmtHZ0JXb2dEU0FHUVpBQmFoQ0dCaUFCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDZndKQUFrQWdCUVJBSUFZZ0JpZ0NwQVVnQmkwQXF3VWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nTGNCQ0FHSUFZb0FxQUZJQVpCb0FWcUlBTWJOZ0xZQkNBR0lBWXBBOWdFTndPQUFTQUJJQVpCZ0FGcUlBUVErUUVDUUNBR1FlZ0VhaEE5S0FJQURnSUFBd0lMSUFaREFPQi9SeEJHT0FLQUJTQUNJQVpCekFScUlBWkJnQVZxRUswQ0RBTUxJQVlnQmlnQ3BBVWdCaTBBcXdVaUFpQUNRUmgwUVJoMVFRQklJZ0liTmdMVUJDQUdJQVlvQXFBRklBWkJvQVZxSUFJYk5nTFFCQ0FHSUFZcEE5QUVOd09JQVNBQklBWkJpQUZxSUFRUTFRRkJBZ3dEQ3lBR1FhQUZhaEFQR2d3RkN5QUdRd0RnZjhjUVJqZ0NnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoQ3RBZ3NoQVVFQkN5RUhJQVpCb0FWcUVBOGFEQVFMSUFoQjBLVVNSdzBESUFZZ0FTc0RFQ0lOUkFBQUFBQUFBQUFBWWlBTnZVSUFVM0k2QUtBRklBSWdCa0hNQkdvZ0JrR2dCV29RdFFVaEFRd0NDeUFIUWZqOUR4QklCRUFnQmlBRE5nTE1CQ0FCS0FJSUlBTkdEUUpCQUNFSElBTkZEUU1nQXlnQ0JDSUlRZENnRWtZRVFDQUJLUU1RSVE1QkFTRUhJQVpCQVRvQXFBVWdCaUFPTndPZ0JTQUdRYUFGYWhDeUFRUkFJQUlnQmtITUJHb2dCa0dnQldvUVNoREdBaUVCREFVTElBRXBBeEFoRGlBR1FlZ0VhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQXV3RUlBWXRBUE1FSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUxvQkNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndPb0FTQUdRWUFGYWlBT0lBWkJxQUZxRVBFR0lBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3Si9Ba0FDUUNBRkJFQWdCaUFHS0FLRUJTQUdMUUNMQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXR3RUlBWWdCaWdDZ0FVZ0JrR0FCV29nQXhzMkF0Z0VJQVlnQmlrRDJBUTNBNWdCSUFFZ0JrR1lBV29nQkJENUFRSkFJQVpCb0FWcUVMVUVLQUlBRGdJQUF3SUxJQVpDLy8vLy8vLy8vLy8vQURjRDZBUWdBaUFHUWN3RWFpQUdRZWdFYWhER0Fnd0RDeUFHSUFZb0FvUUZJQVl0QUlzRklnSWdBa0VZZEVFWWRVRUFTQ0lDR3pZQzFBUWdCaUFHS0FLQUJTQUdRWUFGYWlBQ0d6WUMwQVFnQmlBR0tRUFFCRGNEb0FFZ0FTQUdRYUFCYWlBRUVOVUJRUUlNQXdzZ0JrR0FCV29RRHhvTUJRc2dCa0tBZ0lDQWdJQ0FnSUIvTndQb0JDQUNJQVpCekFScUlBWkI2QVJxRU1ZQ0N5RUJRUUVMSVFjZ0JrR0FCV29RRHhvTUJBc2dDRUh3bnhKR0JFQWdBU2tERUNFT1FRRWhCeUFHUVFFNkFLZ0ZJQVlnRHJrNUE2QUZJQVpCb0FWcUVMSUJCRUFnQWlBR1Fjd0VhaUFHUWFBRmFoQktFSzRDSVFFTUJRc2dBU2tERUNFT0lBWkI2QVJxSWdFZ0F5QURLQUlBS0FJTUVRSUFJQVlnQmlnQzdBUWdCaTBBOHdRaUF5QURRUmgwUVJoMVFRQklJZ01iTmdMa0JDQUdJQVlvQXVnRUlBRWdBeHMyQXVBRUlBWWdCaWtENEFRM0E4QUJJQVpCZ0FWcUlBNGdCa0hBQVdvUThRWWdBUkFQR2lBQ0VCd2dBa0hJQW1vaEFRSi9BbjhDUUFKQUlBVUVRQ0FHSUFZb0FvUUZJQVl0QUlzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzNBUWdCaUFHS0FLQUJTQUdRWUFGYWlBREd6WUMyQVFnQmlBR0tRUFlCRGNEc0FFZ0FTQUdRYkFCYWlBRUVQa0JBa0FnQmtHZ0JXb1F0UVFvQWdBT0FnQURBZ3NnQmtMLy8vLy8vLy8vOS84QU53UG9CQ0FDSUFaQnpBUnFJQVpCNkFScUVLNENEQU1MSUFZZ0JpZ0NoQVVnQmkwQWl3VWlBaUFDUVJoMFFSaDFRUUJJSWdJYk5nTFVCQ0FHSUFZb0FvQUZJQVpCZ0FWcUlBSWJOZ0xRQkNBR0lBWXBBOUFFTndPNEFTQUJJQVpCdUFGcUlBUVExUUZCQWd3REN5QUdRWUFGYWhBUEdnd0ZDeUFHUXYvLy8vLy8vLzkzTndQb0JDQUNJQVpCekFScUlBWkI2QVJxRUs0Q0N5RUJRUUVMSVFjZ0JrR0FCV29RRHhvTUJBc2dDRUdRcWhKR0JFQkJBU0VISUFaQkFrRUJJQUVwQXhBaURrS0FnSUNBQ0gxQ2dJQ0FnSEJVR3pvQTdBUWdCa0VCSUE2bklBNUNnSUNBZ0hoVEcwRUFJQTVDLy8vLy93ZFhHellDNkFRZ0JrSG9CR29RS3dSQUlBSWdCa0hNQkdvZ0JrSG9CR29RR2hERUFpRUJEQVVMSUFFcEF4QWhEaUFHUVlBRmFpSUJJQU1nQXlnQ0FDZ0NEQkVDQUNBR0lBWW9Bb1FGSUFZdEFJc0ZJZ01nQTBFWWRFRVlkVUVBU0NJREd6WUM1QVFnQmlBR0tBS0FCU0FCSUFNYk5nTGdCQ0FHSUFZcEErQUVOd1BZQVNBR1FhQUZhaUFPSUFaQjJBRnFFUEVHSUFFUUR4b2dBaEFjSUFKQnlBSnFJUU1DZndKL0FrQUNRQ0FGQkVCQkFDRUJJQVlnQmlnQ3BBVWdCaTBBcXdVaUJTQUZRUmgwUVJoMVFRQklJZ1ViTmdMY0JDQUdJQVlvQXFBRklBWkJvQVZxSUFVYk5nTFlCQ0FHSUFZcEE5Z0VOd1BJQVNBRElBWkJ5QUZxSUFRUStRRUNRQ0FHUWVnRWFoQTlLQUlBRGdJQUF3SUxJQVpCLy8vLy93YzJBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1F4QUlNQXdzZ0JpQUdLQUtrQlNBR0xRQ3JCU0lCSUFGQkdIUkJHSFZCQUVnaUFSczJBdFFFSUFZZ0JpZ0NvQVVnQmtHZ0JXb2dBUnMyQXRBRUlBWWdCaWtEMEFRM0E5QUJJQU1nQmtIUUFXb2dCQkRWQVVFQ0RBTUxJQVpCb0FWcUVBOGFEQVlMSUFaQmdJQ0FnSGcyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29ReEFJTElRRkJBUXNoQnlBR1FhQUZhaEFQR2d3RUN5QUlRYUN6RWtZRVFFRUJJUWNnQmtFQ1FRRWdBU2tERUNJT1F2Ly8vLzhQVmhzNkFPd0VJQVpCQVNBT3B5QU9RZ0JURzBFQUlBNUMvLy8vL3c5WEd6WUM2QVFnQmtIb0JHb1FLd1JBSUFJZ0JrSE1CR29nQmtIb0JHb1FHaERIQWlFQkRBVUxJQUVwQXhBaERpQUdRWUFGYWlJQklBTWdBeWdDQUNnQ0RCRUNBQ0FHSUFZb0FvUUZJQVl0QUlzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzVBUWdCaUFHS0FLQUJTQUJJQU1iTmdMZ0JDQUdJQVlwQStBRU53UHdBU0FHUWFBRmFpQU9JQVpCOEFGcUVQRUdJQUVRRHhvZ0FoQWNJQUpCeUFKcUlRTUNmd0ovQWtBQ1FDQUZCRUJCQUNFQklBWWdCaWdDcEFVZ0JpMEFxd1VpQlNBRlFSaDBRUmgxUVFCSUlnVWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQVViTmdMWUJDQUdJQVlwQTlnRU53UGdBU0FESUFaQjRBRnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkJmellDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaERIQWd3REN5QUdJQVlvQXFRRklBWXRBS3NGSWdFZ0FVRVlkRUVZZFVFQVNDSUJHellDMUFRZ0JpQUdLQUtnQlNBR1FhQUZhaUFCR3pZQzBBUWdCaUFHS1FQUUJEY0Q2QUVnQXlBR1FlZ0JhaUFFRU5VQlFRSU1Bd3NnQmtHZ0JXb1FEeG9NQmdzZ0JrRUFOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTWNDQ3lFQlFRRUxJUWNnQmtHZ0JXb1FEeG9NQkFzZ0NFR3dxUkpHQkVBZ0FTa0RFQ0VPSUFaQkFUb0E3QVFnQmlBT3ViWTRBdWdFSUFaQjZBUnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RcndJaEFRd0VDeUFCS1FNUUlRNGdCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0RpQUlnQmtHZ0JXb2dEaUFHUVlnQ2FoRHhCaUFCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDZndKQUFrQWdCUVJBSUFZZ0JpZ0NwQVVnQmkwQXF3VWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nTGNCQ0FHSUFZb0FxQUZJQVpCb0FWcUlBTWJOZ0xZQkNBR0lBWXBBOWdFTndQNEFTQUJJQVpCK0FGcUlBUVErUUVDUUNBR1FlZ0VhaEE5S0FJQURnSUFBd0lMSUFaQi8vLy8rd2MyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29RcndJTUF3c2dCaUFHS0FLa0JTQUdMUUNyQlNJQ0lBSkJHSFJCR0hWQkFFZ2lBaHMyQXRRRUlBWWdCaWdDb0FVZ0JrR2dCV29nQWhzMkF0QUVJQVlnQmlrRDBBUTNBNEFDSUFFZ0JrR0FBbW9nQkJEVkFVRUNEQU1MSUFaQm9BVnFFQThhREFVTElBWkIvLy8vZXpZQ2dBVWdBaUFHUWN3RWFpQUdRWUFGYWhDdkFnc2hBVUVCQ3lFSElBWkJvQVZxRUE4YURBUUxJQWhCMEtnU1JnUkFRd0FBQUFBUVJob2dCa0hvQkdvaUJ3Si9JQUVwQXhBaURrTGgvd05aQkVBZ0IwRUFOZ0lBUVFJTUFRc2dEa0tmZ0h4WEJFQWdCMEVCTmdJQVFRSU1BUXNnQnlBT3ViWVFSamdDQUVFQkN6b0FCQ0FIRUNzRVFDQUNJQVpCekFScUlBWkI2QVJxRUJvUXJRSWhBUXdFQ3lBQktRTVFJUTRnQmtHQUJXb2lBU0FESUFNb0FnQW9BZ3dSQWdBZ0JpQUdLQUtFQlNBR0xRQ0xCU0lESUFOQkdIUkJHSFZCQUVnaUF4czJBdVFFSUFZZ0JpZ0NnQVVnQVNBREd6WUM0QVFnQmlBR0tRUGdCRGNEb0FJZ0JrR2dCV29nRGlBR1FhQUNhaER4QmlBQkVBOGFJQUlRSENBQ1FjZ0NhaUVCQW44Q2Z3SkFBa0FnQlFSQUlBWWdCaWdDcEFVZ0JpMEFxd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53T1FBaUFCSUFaQmtBSnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkRBT0IvUnhCR09BS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVLMENEQU1MSUFZZ0JpZ0NwQVVnQmkwQXF3VWlBaUFDUVJoMFFSaDFRUUJJSWdJYk5nTFVCQ0FHSUFZb0FxQUZJQVpCb0FWcUlBSWJOZ0xRQkNBR0lBWXBBOUFFTndPWUFpQUJJQVpCbUFKcUlBUVExUUZCQWd3REN5QUdRYUFGYWhBUEdnd0ZDeUFHUXdEZ2Y4Y1FSamdDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN0QWdzaEFVRUJDeUVISUFaQm9BVnFFQThhREFRTElBaEIwS1VTUncwRElBWWdBU2tERUVJQVVqb0FvQVVnQWlBR1Fjd0VhaUFHUWFBRmFoQzFCU0VCREFJTEFrQWdCMEhBL2c4UVNBUkFJQVlnQXpZQ3pBUWdBU2dDQ0NBRFJnMERRUUFoQnlBRFJRMEVJQU1vQWdRaUNFSFFvQkpHQkVBZ0FUVUNEQ0VPSUFaQkFUb0FxQVVnQmlBT053T2dCU0FHUWFBRmFoQ3lBUVJBSUFJZ0JrSE1CR29nQmtHZ0JXb1FTaERHQWlFQkRBVUxJQVlnQVRVQ0REY0RnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoREdBaUVCREFRTElBaEI4SjhTUmdSQUlBRW9BZ3doQnlBR1FRRTZBS2dGSUFZZ0I3ZzVBNkFGSUFaQm9BVnFFTElCQkVBZ0FpQUdRY3dFYWlBR1FhQUZhaEJLRUs0Q0lRRU1CUXNnQVNnQ0RDRUhJQVpCNkFScUlnRWdBeUFES0FJQUtBSU1FUUlBSUFZZ0JpZ0M3QVFnQmkwQTh3UWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nTGtCQ0FHSUFZb0F1Z0VJQUVnQXhzMkF1QUVJQVlnQmlrRDRBUTNBN2dDSUFaQmdBVnFJQWNnQmtHNEFtb1F0UXdnQVJBUEdpQUNFQndnQWtISUFtb2hBUUovQW44Q1FBSkFJQVVFUUNBR0lBWW9Bb1FGSUFZdEFJc0ZJZ01nQTBFWWRFRVlkVUVBU0NJREd6WUMzQVFnQmlBR0tBS0FCU0FHUVlBRmFpQURHellDMkFRZ0JpQUdLUVBZQkRjRHFBSWdBU0FHUWFnQ2FpQUVFUGtCQWtBZ0JrR2dCV29RdFFRb0FnQU9BZ0FEQWdzZ0JrTC8vLy8vLy8vLzkvOEFOd1BvQkNBQ0lBWkJ6QVJxSUFaQjZBUnFFSzRDREFNTElBWWdCaWdDaEFVZ0JpMEFpd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53T3dBaUFCSUFaQnNBSnFJQVFRMVFGQkFnd0RDeUFHUVlBRmFoQVBHZ3dGQ3lBR1F2Ly8vLy8vLy85M053UG9CQ0FDSUFaQnpBUnFJQVpCNkFScUVLNENDeUVCUVFFTElRY2dCa0dBQldvUUR4b01CUXNnQ0VHUXFoSkdCRUFnQmtFQ1FRRWdBU2dDRENJRFFRQklHem9BcEFVZ0JpQURRUUFnQTBFQVNoczJBcUFGSUFaQm9BVnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQm9BVnFFQm9ReEFJaEFRd0ZDeUFHSUFFb0FndzJBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1F4QUloQVF3RUN5QUlRYUN6RWtZRVFDQUJLQUlNSVFNZ0JrRUJPZ0NrQlNBR0lBTTJBcUFGSUFaQm9BVnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQm9BVnFFQm9ReHdJaEFRd0ZDeUFHSUFFb0FndzJBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1F4d0loQVF3RUN5QUlRYkNwRWtZRVFDQUJLQUlNSVFjZ0JrRUJPZ0RzQkNBR0lBZXpPQUxvQkNBR1FlZ0VhaEFyQkVCQkFTRUhJQUlnQmtITUJHb2dCa0hvQkdvUUdoQ3ZBaUVCREFZTElBRW9BZ3doQnlBR1FZQUZhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQW9RRklBWXRBSXNGSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUtBQlNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndQUUFpQUdRYUFGYWlBSElBWkIwQUpxRUxVTUlBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3SkFBa0FnQlFSQUlBWWdCaWdDcEFVZ0JpMEFxd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53UEFBaUFCSUFaQndBSnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkIvLy8vK3djMkFvQUZJQUlnQmtITUJHb2dCa0dBQldvUXJ3SWhBVUVCREFNTElBWWdCaWdDcEFVZ0JpMEFxd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9BcUFGSUFaQm9BVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53UElBaUFCSUFaQnlBSnFJQVFRMVFGQkFnd0NDeUFHUWFBRmFoQVBHZ3dFQ3lBR1FmLy8vM3MyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29RcndJaEFVRUJDeUVISUFaQm9BVnFFQThhREFVTElBaEIwS2dTUmdSQVF3QUFBQUFRUmhvZ0JrSG9CR29pQndKL0lBRW9BZ3dpQ0VIaC93TlBCRUFnQjBFQU5nSUFRUUlNQVFzZ0J5QUlzeEJHT0FJQVFRRUxPZ0FFSUFjUUt3UkFRUUVoQnlBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RclFJaEFRd0dDeUFCS0FJTUlRY2dCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0Q2QUlnQmtHZ0JXb2dCeUFHUWVnQ2FoQzFEQ0FCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDUUFKQUlBVUVRQ0FHSUFZb0FxUUZJQVl0QUtzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzNBUWdCaUFHS0FLZ0JTQUdRYUFGYWlBREd6WUMyQVFnQmlBR0tRUFlCRGNEMkFJZ0FTQUdRZGdDYWlBRUVQa0JBa0FnQmtIb0JHb1FQU2dDQUE0Q0FBTUNDeUFHUXdEZ2YwY1FSamdDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN0QWlFQlFRRU1Bd3NnQmlBR0tBS2tCU0FHTFFDckJTSUNJQUpCR0hSQkdIVkJBRWdpQWhzMkF0UUVJQVlnQmlnQ29BVWdCa0dnQldvZ0FoczJBdEFFSUFZZ0Jpa0QwQVEzQStBQ0lBRWdCa0hnQW1vZ0JCRFZBVUVDREFJTElBWkJvQVZxRUE4YURBUUxJQVpEQU9CL3h4QkdPQUtBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFSzBDSVFGQkFRc2hCeUFHUWFBRmFoQVBHZ3dGQ3lBSVFkQ2xFa2NOQkNBR0lBRW9BZ3hCQUVjNkFLQUZRUUVoQnlBQ0lBWkJ6QVJxSUFaQm9BVnFFTFVGSVFFTUJBc2dCMEdvL2c4UVNBUkFJQVlnQXpZQ3pBUWdBU2dDQ0NBRFJnMERRUUFoQnlBRFJRMEVJQU1vQWdRaUNFSFFvQkpHQkVBZ0FUUUNEQ0VPSUFaQkFUb0FxQVVnQmlBT053T2dCU0FHUWFBRmFoQ3lBUVJBSUFJZ0JrSE1CR29nQmtHZ0JXb1FTaERHQWlFQkRBVUxJQVlnQVRRQ0REY0RnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoREdBaUVCREFRTElBaEI4SjhTUmdSQUlBRW9BZ3doQnlBR1FRRTZBS2dGSUFZZ0I3YzVBNkFGSUFaQm9BVnFFTElCQkVCQkFTRUhJQUlnQmtITUJHb2dCa0dnQldvUVNoQ3VBaUVCREFZTElBRW9BZ3doQnlBR1FlZ0VhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQXV3RUlBWXRBUE1FSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUxvQkNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndPQUF5QUdRWUFGYWlBSElBWkJnQU5xRUxRTUlBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3SkFBa0FnQlFSQUlBWWdCaWdDaEFVZ0JpMEFpd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53UHdBaUFCSUFaQjhBSnFJQVFRK1FFQ1FDQUdRYUFGYWhDMUJDZ0NBQTRDQUFNQ0N5QUdRdi8vLy8vLy8vLzMvd0EzQStnRUlBSWdCa0hNQkdvZ0JrSG9CR29RcmdJaEFVRUJEQU1MSUFZZ0JpZ0NoQVVnQmkwQWl3VWlBaUFDUVJoMFFSaDFRUUJJSWdJYk5nTFVCQ0FHSUFZb0FvQUZJQVpCZ0FWcUlBSWJOZ0xRQkNBR0lBWXBBOUFFTndQNEFpQUJJQVpCK0FKcUlBUVExUUZCQWd3Q0N5QUdRWUFGYWhBUEdnd0VDeUFHUXYvLy8vLy8vLzkzTndQb0JDQUNJQVpCekFScUlBWkI2QVJxRUs0Q0lRRkJBUXNoQnlBR1FZQUZhaEFQR2d3RkN5QUlRWkNxRWtZRVFDQUJLQUlNSVFNZ0JrRUJPZ0NrQlNBR0lBTTJBcUFGSUFaQm9BVnFFQ3NFUUNBQ0lBWkJ6QVJxSUFaQm9BVnFFQm9ReEFJaEFRd0ZDeUFHSUFFb0FndzJBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1F4QUloQVF3RUN5QUlRYUN6RWtZRVFDQUdRUUpCQVNBQktBSU1JZ05CQUVnaUJCczZBS1FGSUFaQkFTQURJQVFiTmdLZ0JTQUdRYUFGYWhBckJFQWdBaUFHUWN3RWFpQUdRYUFGYWhBYUVNY0NJUUVNQlFzZ0JpQUJLQUlNTmdLQUJTQUNJQVpCekFScUlBWkJnQVZxRU1jQ0lRRU1CQXNnQ0VHd3FSSkdCRUFnQVNnQ0RDRUhJQVpCQVRvQTdBUWdCaUFIc2pnQzZBUWdCa0hvQkdvUUt3UkFRUUVoQnlBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RcndJaEFRd0dDeUFCS0FJTUlRY2dCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0RtQU1nQmtHZ0JXb2dCeUFHUVpnRGFoQzBEQ0FCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDUUFKQUlBVUVRQ0FHSUFZb0FxUUZJQVl0QUtzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzNBUWdCaUFHS0FLZ0JTQUdRYUFGYWlBREd6WUMyQVFnQmlBR0tRUFlCRGNEaUFNZ0FTQUdRWWdEYWlBRUVQa0JBa0FnQmtIb0JHb1FQU2dDQUE0Q0FBTUNDeUFHUWYvLy8vc0hOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFSzhDSVFGQkFRd0RDeUFHSUFZb0FxUUZJQVl0QUtzRklnSWdBa0VZZEVFWWRVRUFTQ0lDR3pZQzFBUWdCaUFHS0FLZ0JTQUdRYUFGYWlBQ0d6WUMwQVFnQmlBR0tRUFFCRGNEa0FNZ0FTQUdRWkFEYWlBRUVOVUJRUUlNQWdzZ0JrR2dCV29RRHhvTUJBc2dCa0gvLy85N05nS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVLOENJUUZCQVFzaEJ5QUdRYUFGYWhBUEdnd0ZDeUFJUWRDb0VrWUVRRU1BQUFBQUVFWWFJQVpCNkFScUlnY0NmeUFCS0FJTUlnaEI0ZjhEVGdSQUlBZEJBRFlDQUVFQ0RBRUxJQWhCbjRCOFRBUkFJQWRCQVRZQ0FFRUNEQUVMSUFjZ0NMSVFSamdDQUVFQkN6b0FCQ0FIRUNzRVFFRUJJUWNnQWlBR1Fjd0VhaUFHUWVnRWFoQWFFSzBDSVFFTUJnc2dBU2dDRENFSElBWkJnQVZxSWdFZ0F5QURLQUlBS0FJTUVRSUFJQVlnQmlnQ2hBVWdCaTBBaXdVaUF5QURRUmgwUVJoMVFRQklJZ01iTmdMa0JDQUdJQVlvQW9BRklBRWdBeHMyQXVBRUlBWWdCaWtENEFRM0E3QURJQVpCb0FWcUlBY2dCa0d3QTJvUXRBd2dBUkFQR2lBQ0VCd2dBa0hJQW1vaEFRSi9Ba0FDUUNBRkJFQWdCaUFHS0FLa0JTQUdMUUNyQlNJRElBTkJHSFJCR0hWQkFFZ2lBeHMyQXR3RUlBWWdCaWdDb0FVZ0JrR2dCV29nQXhzMkF0Z0VJQVlnQmlrRDJBUTNBNkFESUFFZ0JrR2dBMm9nQkJENUFRSkFJQVpCNkFScUVEMG9BZ0FPQWdBREFnc2dCa01BNEg5SEVFWTRBb0FGSUFJZ0JrSE1CR29nQmtHQUJXb1FyUUloQVVFQkRBTUxJQVlnQmlnQ3BBVWdCaTBBcXdVaUFpQUNRUmgwUVJoMVFRQklJZ0liTmdMVUJDQUdJQVlvQXFBRklBWkJvQVZxSUFJYk5nTFFCQ0FHSUFZcEE5QUVOd09vQXlBQklBWkJxQU5xSUFRUTFRRkJBZ3dDQ3lBR1FhQUZhaEFQR2d3RUN5QUdRd0RnZjhjUVJqZ0NnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoQ3RBaUVCUVFFTElRY2dCa0dnQldvUUR4b01CUXNnQ0VIUXBSSkhEUVFnQmlBQktBSU1RUUJIT2dDZ0JVRUJJUWNnQWlBR1Fjd0VhaUFHUWFBRmFoQzFCU0VCREFRTElBZEI4UDRQRUVnRVFDQUdJQU0yQXN3RUlBRW9BZ2dnQTBZTkEwRUFJUWNnQTBVTkJDQURLQUlFSWdoQjBLQVNSZ1JBSUFZQ2Z5QUJLZ0lNSWd4REFBQUFYMTRFUUNBR1FRQTJBcUFGUVFJTUFRc2dERU1BQUFEZlhRUkFJQVpCQVRZQ29BVkJBZ3dCQ3lBR0FuNGdESXREQUFBQVgxMEVRQ0FNcmd3QkMwS0FnSUNBZ0lDQWdJQi9DemNEb0FWQkFRczZBS2dGSUFaQm9BVnFFTElCQkVBZ0FpQUdRY3dFYWlBR1FhQUZhaEJLRU1ZQ0lRRU1CUXNDUUFKQUlBWkJvQVZxRUxVRUtBSUFEZ0lCQUFRTElBWkNnSUNBZ0lDQWdJQ0FmemNEZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaERHQWlFQkRBVUxJQVpDLy8vLy8vLy8vLy8vQURjRGdBVWdBaUFHUWN3RWFpQUdRWUFGYWhER0FpRUJEQVFMSUFoQjhKOFNSZ1JBSUFZQ2Z5QUJLZ0lNdXlJTlJQLy8vLy8vLys5L1pBUkFJQVpCQURZQ29BVkJBZ3dCQ3lBTlJQLy8vLy8vLysvL1l3UkFJQVpCQVRZQ29BVkJBZ3dCQ3lBR0lBMDVBNkFGUVFFTE9nQ29CU0FHUWFBRmFoQ3lBUVJBUVFFaEJ5QUNJQVpCekFScUlBWkJvQVZxRUVvUXJnSWhBUXdHQ3lBQktnSU1JUXdnQmtIb0JHb2lBU0FESUFNb0FnQW9BZ3dSQWdBZ0JpQUdLQUxzQkNBR0xRRHpCQ0lESUFOQkdIUkJHSFZCQUVnaUF4czJBdVFFSUFZZ0JpZ0M2QVFnQVNBREd6WUM0QVFnQmlBR0tRUGdCRGNEeUFNZ0JrR0FCV29nRENBR1FjZ0RhaEQrQXlBQkVBOGFJQUlRSENBQ1FjZ0NhaUVCQW44Q1FBSkFJQVVFUUNBR0lBWW9Bb1FGSUFZdEFJc0ZJZ01nQTBFWWRFRVlkVUVBU0NJREd6WUMzQVFnQmlBR0tBS0FCU0FHUVlBRmFpQURHellDMkFRZ0JpQUdLUVBZQkRjRHVBTWdBU0FHUWJnRGFpQUVFUGtCQWtBZ0JrR2dCV29RdFFRb0FnQU9BZ0FEQWdzZ0JrTC8vLy8vLy8vLzkvOEFOd1BvQkNBQ0lBWkJ6QVJxSUFaQjZBUnFFSzRDSVFGQkFRd0RDeUFHSUFZb0FvUUZJQVl0QUlzRklnSWdBa0VZZEVFWWRVRUFTQ0lDR3pZQzFBUWdCaUFHS0FLQUJTQUdRWUFGYWlBQ0d6WUMwQVFnQmlBR0tRUFFCRGNEd0FNZ0FTQUdRY0FEYWlBRUVOVUJRUUlNQWdzZ0JrR0FCV29RRHhvTUJBc2dCa0wvLy8vLy8vLy9kemNENkFRZ0FpQUdRY3dFYWlBR1FlZ0VhaEN1QWlFQlFRRUxJUWNnQmtHQUJXb1FEeG9NQlFzZ0NFR1FxaEpHQkVCQkFpRUhBbjlCQUNBQktnSU1JZ3k3UkFBQXdQLy8vOTlCWkEwQUdrRUJJQXhEQUFBQXoxME5BQnBCQVNFSEFuOGdESXREQUFBQVQxMEVRQ0FNcUF3QkMwR0FnSUNBZUFzTElRRWdCaUFIT2dDa0JTQUdJQUUyQXFBRklBWkJvQVZxRUNzRVFDQUNJQVpCekFScUlBWkJvQVZxRUJvUXhBSWhBUXdGQ3dKQUFrQWdCa0dnQldvUVBTZ0NBQTRDQVFBRUN5QUdRWUNBZ0lCNE5nS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVNUUNJUUVNQlFzZ0JrSC8vLy8vQnpZQ2dBVWdBaUFHUWN3RWFpQUdRWUFGYWhERUFpRUJEQVFMSUFoQm9MTVNSZ1JBUVFJaEJ3Si9RUUFnQVNvQ0RDSU11MFFBQU9ELy8vL3ZRV1FOQUJwQkFTQU1Rd0FBQUFCZERRQWFRUUVoQndKL0lBeERBQUNBVDEwZ0RFTUFBQUFBWUhFRVFDQU1xUXdCQzBFQUN3c2hBU0FHSUFjNkFLUUZJQVlnQVRZQ29BVWdCa0dnQldvUUt3UkFJQUlnQmtITUJHb2dCa0dnQldvUUdoREhBaUVCREFVTEFrQUNRQ0FHUWFBRmFoQTlLQUlBRGdJQkFBUUxJQVpCQURZQ2dBVWdBaUFHUWN3RWFpQUdRWUFGYWhESEFpRUJEQVVMSUFaQmZ6WUNnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoREhBaUVCREFRTElBaEJzS2tTUmdSQUlBWUNmeUFCS2dJTUlneEQvLzkvZjE0RVFDQUdRUUEyQXVnRVFRSU1BUXNnREVQLy8zLy9YUVJBSUFaQkFUWUM2QVJCQWd3QkN5QUdJQXc0QXVnRVFRRUxPZ0RzQkNBR1FlZ0VhaEFyQkVCQkFTRUhJQUlnQmtITUJHb2dCa0hvQkdvUUdoQ3ZBaUVCREFZTElBRXFBZ3doRENBR1FZQUZhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQW9RRklBWXRBSXNGSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUtBQlNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndQZ0F5QUdRYUFGYWlBTUlBWkI0QU5xRVA0RElBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3SkFBa0FnQlFSQUlBWWdCaWdDcEFVZ0JpMEFxd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53UFFBeUFCSUFaQjBBTnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkIvLy8vK3djMkFvQUZJQUlnQmtITUJHb2dCa0dBQldvUXJ3SWhBVUVCREFNTElBWWdCaWdDcEFVZ0JpMEFxd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9BcUFGSUFaQm9BVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53UFlBeUFCSUFaQjJBTnFJQVFRMVFGQkFnd0NDeUFHUWFBRmFoQVBHZ3dFQ3lBR1FmLy8vM3MyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29RcndJaEFVRUJDeUVISUFaQm9BVnFFQThhREFVTElBaEIwS2dTUmdSQVF3QUFBQUFRUmhvZ0JrSG9CR29pQnlBQktnSU1FTGtNSUFjUUt3UkFRUUVoQnlBQ0lBWkJ6QVJxSUFaQjZBUnFFQm9RclFJaEFRd0dDeUFCS2dJTUlRd2dCa0dBQldvaUFTQURJQU1vQWdBb0Fnd1JBZ0FnQmlBR0tBS0VCU0FHTFFDTEJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF1UUVJQVlnQmlnQ2dBVWdBU0FER3pZQzRBUWdCaUFHS1FQZ0JEY0QrQU1nQmtHZ0JXb2dEQ0FHUWZnRGFoRCtBeUFCRUE4YUlBSVFIQ0FDUWNnQ2FpRUJBbjhDUUFKQUlBVUVRQ0FHSUFZb0FxUUZJQVl0QUtzRklnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzNBUWdCaUFHS0FLZ0JTQUdRYUFGYWlBREd6WUMyQVFnQmlBR0tRUFlCRGNENkFNZ0FTQUdRZWdEYWlBRUVQa0JBa0FnQmtIb0JHb1FQU2dDQUE0Q0FBTUNDeUFHUXdEZ2YwY1FSamdDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN0QWlFQlFRRU1Bd3NnQmlBR0tBS2tCU0FHTFFDckJTSUNJQUpCR0hSQkdIVkJBRWdpQWhzMkF0UUVJQVlnQmlnQ29BVWdCa0dnQldvZ0FoczJBdEFFSUFZZ0Jpa0QwQVEzQS9BRElBRWdCa0h3QTJvZ0JCRFZBVUVDREFJTElBWkJvQVZxRUE4YURBUUxJQVpEQU9CL3h4QkdPQUtBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFSzBDSVFGQkFRc2hCeUFHUWFBRmFoQVBHZ3dGQ3lBSVFkQ2xFa2NOQkNBR0lBRXFBZ3dpREVNQUFBQUFYQ0FNdkVFQVNISTZBS0FGUVFFaEJ5QUNJQVpCekFScUlBWkJvQVZxRUxVRklRRU1CQXNnQjBIWS9nOFFTQVJBSUFZZ0F6WUN6QVFnQVNnQ0NDQURSZzBEUVFBaEJ5QURSUTBFSUFNb0FnUWlDRUhRb0JKR0JFQWdCZ0ovSUFFcUFnd2lERU1BQUFCZlhnUkFJQVpCQURZQ29BVkJBZ3dCQ3lBTVF3QUFBTjlkQkVBZ0JrRUJOZ0tnQlVFQ0RBRUxJQVlDZmlBTWkwTUFBQUJmWFFSQUlBeXVEQUVMUW9DQWdJQ0FnSUNBZ0g4TE53T2dCVUVCQ3pvQXFBVWdCa0dnQldvUXNnRUVRQ0FDSUFaQnpBUnFJQVpCb0FWcUVFb1F4Z0loQVF3RkN3SkFBa0FnQmtHZ0JXb1F0UVFvQWdBT0FnRUFCQXNnQmtLQWdJQ0FnSUNBZ0lCL053T0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVNWUNJUUVNQlFzZ0JrTC8vLy8vLy8vLy8vOEFOd09BQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTVlDSVFFTUJBc2dDRUh3bnhKR0JFQWdCZ0ovSUFFcUFneTdJZzFFLy8vLy8vLy83MzlrQkVBZ0JrRUFOZ0tnQlVFQ0RBRUxJQTFFLy8vLy8vLy83LzlqQkVBZ0JrRUJOZ0tnQlVFQ0RBRUxJQVlnRFRrRG9BVkJBUXM2QUtnRklBWkJvQVZxRUxJQkJFQkJBU0VISUFJZ0JrSE1CR29nQmtHZ0JXb1FTaEN1QWlFQkRBWUxJQUVxQWd3aERDQUdRZWdFYWlJQklBTWdBeWdDQUNnQ0RCRUNBQ0FHSUFZb0F1d0VJQVl0QVBNRUlnTWdBMEVZZEVFWWRVRUFTQ0lER3pZQzVBUWdCaUFHS0FMb0JDQUJJQU1iTmdMZ0JDQUdJQVlwQStBRU53T1FCQ0FHUVlBRmFpQU1JQVpCa0FScUVQNERJQUVRRHhvZ0FoQWNJQUpCeUFKcUlRRUNmd0pBQWtBZ0JRUkFJQVlnQmlnQ2hBVWdCaTBBaXdVaUF5QURRUmgwUVJoMVFRQklJZ01iTmdMY0JDQUdJQVlvQW9BRklBWkJnQVZxSUFNYk5nTFlCQ0FHSUFZcEE5Z0VOd09BQkNBQklBWkJnQVJxSUFRUStRRUNRQ0FHUWFBRmFoQzFCQ2dDQUE0Q0FBTUNDeUFHUXYvLy8vLy8vLy8zL3dBM0ErZ0VJQUlnQmtITUJHb2dCa0hvQkdvUXJnSWhBVUVCREFNTElBWWdCaWdDaEFVZ0JpMEFpd1VpQWlBQ1FSaDBRUmgxUVFCSUlnSWJOZ0xVQkNBR0lBWW9Bb0FGSUFaQmdBVnFJQUliTmdMUUJDQUdJQVlwQTlBRU53T0lCQ0FCSUFaQmlBUnFJQVFRMVFGQkFnd0NDeUFHUVlBRmFoQVBHZ3dFQ3lBR1F2Ly8vLy8vLy85M053UG9CQ0FDSUFaQnpBUnFJQVpCNkFScUVLNENJUUZCQVFzaEJ5QUdRWUFGYWhBUEdnd0ZDeUFJUVpDcUVrWUVRRUVDSVFjQ2YwRUFJQUVxQWd3aURMdEVBQURBLy8vLzMwRmtEUUFhUVFFZ0RFTUFBQURQWFEwQUdrRUJJUWNDZnlBTWkwTUFBQUJQWFFSQUlBeW9EQUVMUVlDQWdJQjRDd3NoQVNBR0lBYzZBS1FGSUFZZ0FUWUNvQVVnQmtHZ0JXb1FLd1JBSUFJZ0JrSE1CR29nQmtHZ0JXb1FHaERFQWlFQkRBVUxBa0FDUUNBR1FhQUZhaEE5S0FJQURnSUJBQVFMSUFaQmdJQ0FnSGcyQW9BRklBSWdCa0hNQkdvZ0JrR0FCV29ReEFJaEFRd0ZDeUFHUWYvLy8vOEhOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTVFDSVFFTUJBc2dDRUdnc3hKR0JFQkJBaUVIQW45QkFDQUJLZ0lNSWd5N1JBQUE0UC8vLys5QlpBMEFHa0VCSUF4REFBQUFBRjBOQUJwQkFTRUhBbjhnREVNQUFJQlBYU0FNUXdBQUFBQmdjUVJBSUF5cERBRUxRUUFMQ3lFQklBWWdCem9BcEFVZ0JpQUJOZ0tnQlNBR1FhQUZhaEFyQkVBZ0FpQUdRY3dFYWlBR1FhQUZhaEFhRU1jQ0lRRU1CUXNDUUFKQUlBWkJvQVZxRUQwb0FnQU9BZ0VBQkFzZ0JrRUFOZ0tBQlNBQ0lBWkJ6QVJxSUFaQmdBVnFFTWNDSVFFTUJRc2dCa0YvTmdLQUJTQUNJQVpCekFScUlBWkJnQVZxRU1jQ0lRRU1CQXNnQ0VHd3FSSkdCRUFnQmdKL0lBRXFBZ3dpREVQLy8zOS9YZ1JBSUFaQkFEWUM2QVJCQWd3QkN5QU1RLy8vZi85ZEJFQWdCa0VCTmdMb0JFRUNEQUVMSUFZZ0REZ0M2QVJCQVFzNkFPd0VJQVpCNkFScUVDc0VRRUVCSVFjZ0FpQUdRY3dFYWlBR1FlZ0VhaEFhRUs4Q0lRRU1CZ3NnQVNvQ0RDRU1JQVpCZ0FWcUlnRWdBeUFES0FJQUtBSU1FUUlBSUFZZ0JpZ0NoQVVnQmkwQWl3VWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nTGtCQ0FHSUFZb0FvQUZJQUVnQXhzMkF1QUVJQVlnQmlrRDRBUTNBNmdFSUFaQm9BVnFJQXdnQmtHb0JHb1EvZ01nQVJBUEdpQUNFQndnQWtISUFtb2hBUUovQWtBQ1FDQUZCRUFnQmlBR0tBS2tCU0FHTFFDckJTSURJQU5CR0hSQkdIVkJBRWdpQXhzMkF0d0VJQVlnQmlnQ29BVWdCa0dnQldvZ0F4czJBdGdFSUFZZ0Jpa0QyQVEzQTVnRUlBRWdCa0dZQkdvZ0JCRDVBUUpBSUFaQjZBUnFFRDBvQWdBT0FnQURBZ3NnQmtILy8vLzdCellDZ0FVZ0FpQUdRY3dFYWlBR1FZQUZhaEN2QWlFQlFRRU1Bd3NnQmlBR0tBS2tCU0FHTFFDckJTSUNJQUpCR0hSQkdIVkJBRWdpQWhzMkF0UUVJQVlnQmlnQ29BVWdCa0dnQldvZ0FoczJBdEFFSUFZZ0Jpa0QwQVEzQTZBRUlBRWdCa0dnQkdvZ0JCRFZBVUVDREFJTElBWkJvQVZxRUE4YURBUUxJQVpCLy8vL2V6WUNnQVVnQWlBR1Fjd0VhaUFHUVlBRmFoQ3ZBaUVCUVFFTElRY2dCa0dnQldvUUR4b01CUXNnQ0VIUXFCSkdCRUJEQUFBQUFCQkdHaUFHUWVnRWFpSUhJQUVxQWd3UXVRd2dCeEFyQkVCQkFTRUhJQUlnQmtITUJHb2dCa0hvQkdvUUdoQ3RBaUVCREFZTElBRXFBZ3doRENBR1FZQUZhaUlCSUFNZ0F5Z0NBQ2dDREJFQ0FDQUdJQVlvQW9RRklBWXRBSXNGSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDNUFRZ0JpQUdLQUtBQlNBQklBTWJOZ0xnQkNBR0lBWXBBK0FFTndQQUJDQUdRYUFGYWlBTUlBWkJ3QVJxRVA0RElBRVFEeG9nQWhBY0lBSkJ5QUpxSVFFQ2Z3SkFBa0FnQlFSQUlBWWdCaWdDcEFVZ0JpMEFxd1VpQXlBRFFSaDBRUmgxUVFCSUlnTWJOZ0xjQkNBR0lBWW9BcUFGSUFaQm9BVnFJQU1iTmdMWUJDQUdJQVlwQTlnRU53T3dCQ0FCSUFaQnNBUnFJQVFRK1FFQ1FDQUdRZWdFYWhBOUtBSUFEZ0lBQXdJTElBWkRBT0IvUnhCR09BS0FCU0FDSUFaQnpBUnFJQVpCZ0FWcUVLMENJUUZCQVF3REN5QUdJQVlvQXFRRklBWXRBS3NGSWdJZ0FrRVlkRUVZZFVFQVNDSUNHellDMUFRZ0JpQUdLQUtnQlNBR1FhQUZhaUFDR3pZQzBBUWdCaUFHS1FQUUJEY0R1QVFnQVNBR1FiZ0VhaUFFRU5VQlFRSU1BZ3NnQmtHZ0JXb1FEeG9NQkFzZ0JrTUE0SC9IRUVZNEFvQUZJQUlnQmtITUJHb2dCa0dBQldvUXJRSWhBVUVCQ3lFSElBWkJvQVZxRUE4YURBVUxJQWhCMEtVU1J3MEVJQVlnQVNvQ0RDSU1Rd0FBQUFCY0lBeThRUUJJY2pvQW9BVkJBU0VISUFJZ0JrSE1CR29nQmtHZ0JXb1F0UVVoQVF3RUN5QUhRWWovRHhCSUJFQWdCaUFETmdLQUJTQUJLQUlJSUFOR0RRTkJBQ0VISUFORkRRUWdBeWdDQkNJRFFkQ2dFa1lFUUNBR0lBRXhBQXczQTZBRklBSWdCa0dBQldvZ0JrR2dCV29ReGdJaEFRd0VDeUFEUWZDZkVrWUVRQ0FHSUFFdEFBeTRPUU9nQlNBQ0lBWkJnQVZxSUFaQm9BVnFFSzRDSVFFTUJBc2dBMEdRcWhKR0JFQWdCaUFCTFFBTU5nS2dCU0FDSUFaQmdBVnFJQVpCb0FWcUVNUUNJUUVNQkFzZ0EwR2dzeEpHQkVBZ0JpQUJMUUFNTmdLZ0JTQUNJQVpCZ0FWcUlBWkJvQVZxRU1jQ0lRRU1CQXNnQTBHd3FSSkdCRUFnQmlBQkxRQU1zemdDb0FVZ0FpQUdRWUFGYWlBR1FhQUZhaEN2QWlFQkRBUUxJQU5CMEtnU1JnUkFRd0FBQUFBUVJob2dCaUFCTFFBTXN4QkdPQUtnQlNBQ0lBWkJnQVZxSUFaQm9BVnFFSzBDSVFFTUJBc2dBMEhRcFJKSERRUWdCaUFCTFFBTU9nQ2dCU0FDSUFaQmdBVnFJQVpCb0FWcUVMVUZJUUVNQXdzZ0IwSHcrdzhRU0FSQUFrQUNRQUpBSUFNUThBWWlCd1JBUVFFZ0J5Z0NTQ0lJSUFoQkFVMGJJUWtnQnlnQ1JDSUtLQUlBS0FJb0lRaEJBU0VIQTBBZ0J5QUpSZzBDSUFkQkFuUWhDeUFIUVFGcUlRY2dDaUFMYWlnQ0FDZ0NLQ0FJUmcwQUMwRUFJUUVnQWhBY0lBWkJvQVZxUWNXdEJVSC9Ba0VJSUFKQnlBSnFFQmNpQWtFWWFrR2dNeEFPR2lBQ0VCZ01BZ3NnQTBFQUVDSWhDQXNnQmtHZ0JXb2lCeUFCS0FJTUlBSWdDQ0FFSUFVUWlBMGdCeEF3UlEwQkMwRUNJUWNNQlFzZ0JrR2dCV29RR2lnQ0FFVU5BVUVCSVFjZ0FpQURJQVpCb0FWcUVCb29BZ0FnQVNnQ0VCQ3FCaUVCREFRTEFrQWdCMEhvK0E4UVNBUkFJQUVnQVNnQ0FDZ0NFQkVBQUNFSUlBWkNnSUNBZ01BQU53S1VCU0FHSUFaQmdBVnFJZ2MyQXBBRklBY2dDQkRXQWlBR1FRQTJBdmdFQWtBZ0F4RHdCaUlIQkVBZ0NDQUhLQUpJUndSQVFRQWhBU0FDRUJ3Z0JrR2dCV3BCeGEwRlFkY0NRUWdnQWtISUFtb1FGeUlDUVJocVFkbjlBQkFPR2lBQ0VCaEJBaUVIREFRTElBWWdCellDcEFVZ0JrSHNoQkEyQXFBRkRBRUxJQVlnQTBFQUVDSTJBcVFGSUFaQmtJVVFOZ0tnQlFzZ0JpQUdRYUFGYWlJSE5nS3dCU0FISUFaQjZBUnFFS3dDSUFjUUZpQUdRWkFGYWlFSlFRQWhCd05BQWtBZ0J5QUlSd1JBSUFaQm9BVnFJZ29nQVNBSElBRW9BZ0FvQWd3UkFRQWdBaUFHUWVnRWFpQUdLQUtVQlJDS0FpQUVJQVVRaUEwZ0NoQXdCSDlCQWdVZ0JrR2dCV29RR2lnQ0FBMENRUUVMSVFkQkFDRUJEQVFMSUFZZ0NUWUNvQVVnQmlBR0tBS1FCU0FHUVlBRmFrYzZBS1FGUVFFaEJ5QUNJQU1nQmtHZ0JXb1FPaUVCREFNTElBWkJnQVZxSUFaQm9BVnFFQm9RY1NBSFFRRnFJUWNNQUFzQUN5QUFRUUE2QUFRTUJRc2dCa0hvQkdvUUZpQUdRWUFGYWhCZURBTUxRUUVoQjBFQUlRRU1BZ3RCQUNFQkMwRUJJUWNMSUFBZ0J6b0FCQ0FBSUFFMkFnQUxJQVpCd0FacUpBQUxPUUFnQXlBREtBSUFLQUlJRVFBQUlBSkdCRUFnQUVFQk9nQUVJQUFnQXpZQ0FBOExJQUFnQXlBQktBSUFJQUlnQkNBQkxRQUVFSWdOQ3dzQUlBQkJoTDBnRU40REN5Y0JBWDhnQUVFRWFoREZGQ0VDSUFCQnpKTU9OZ0lBSUFKQjRKTU9OZ0lBSUFJZ0FSRHZCZ3NuQVFGL0lBQkJCR29ReHhRaEFpQUFRZHlRRGpZQ0FDQUNRZkNRRGpZQ0FDQUNJQUVRN3dZTENRQWdBQkM3QWhBZkN3c0FJQUJCL0x3Z0VONERDdzRBUVFBZ0FDQUFRWDhRMkFVYkN6QUJBWDhqQUVFUWF5SUVKQUFnQUNBRVFRaHFJQU1Rd1E0aUFDQUJJQUlRMFJRZ0FCQ3ZBeUFFUVJCcUpBQWdBQXNMQUNBQUlBRkJBUkRyQ2dzVEFDQUFJQUVnQWlBQUtBSUFLQUl3RVFRQUN6Y0JBWDhqQUVFUWF5SUdKQUFnQmlBQ05nSU1JQVlnQVRZQ0NDQUFJQUVvQWdBZ0F5QUdRUWhxSUFRZ0JSRFNGQ0FHUVJCcUpBQUxrZ0lCQW44akFFRVFheUlCSkFBZ0FDQUFLQUlBUVF4cktBSUFhaERHQndSQUlBRWdBRFlDRENBQlFRQTZBQWdnQUNBQUtBSUFRUXhyS0FJQWFpSUNLQUlRUlFSQUlBSW9Ba2dpQWdSQUlBSVFsQTBMSUFGQkFUb0FDQXNDUUNBQkxRQUlFT0lVUlEwQUlBQWdBQ2dDQUVFTWF5Z0NBR29ReGdjUWtRZEJmMGNOQUNBQUlBQW9BZ0JCREdzb0FnQnFFTmNVQ3dKQUlBRW9BZ3dpQUNBQUtBSUFRUXhyS0FJQWFoREdCMFVOQUNBQktBSU1JZ0FnQUNnQ0FFRU1heWdDQUdvaUFDZ0NFQTBBSUFBUXVBRkJnTUFBY1VVTkFDQUJLQUlNSWdBZ0FDZ0NBRUVNYXlnQ0FHb1F4Z2NRa1FkQmYwY05BQ0FCS0FJTUlnQWdBQ2dDQUVFTWF5Z0NBR29RMXhRTEN5QUJRUkJxSkFBTENRQWdBQkRaRkJBZkN3a0FJQUFRa3dvUUh3c3BBUUYvQWtBZ0FDZ0NBQ0lDUlEwQUlBSWdBUkRoRkVGL0VOZ0ZSUTBBSUFCQkFEWUNBQXNnQUF1bkFRRUdmeU1BUVNCcklnSWtBQ0FDUVJocUlnTWdBQkRmQXhvQ1FDQURFSklFUlEwQUlBSkJFR29pQXlBQUlBQW9BZ0JCREdzb0FnQnFFSDRnQXhEOUJDRUVJQU1RWkNBQ1FRaHFJQUFRMGdRaEJTQUFJQUFvQWdCQkRHc29BZ0JxSWdZUW5BTWhCeUFDSUFRZ0JTZ0NBQ0FHSUFjZ0FSRGJGRFlDRUNBREVORUVSUTBBSUFBZ0FDZ0NBRUVNYXlnQ0FHcEJCUkNQQXdzZ0FrRVlhaERnQXlBQ1FTQnFKQUFMcUFFQkJuOGpBRUVnYXlJQ0pBQWdBa0VZYWlJRElBQVEzd01hQWtBZ0F4Q1NCRVVOQUNBQ1FSQnFJZ01nQUNBQUtBSUFRUXhyS0FJQWFoQitJQU1RL1FRaEJDQURFR1FnQWtFSWFpQUFFTklFSVFVZ0FDQUFLQUlBUVF4cktBSUFhaUlHRUp3RElRY2dBaUFFSUFVb0FnQWdCaUFISUFHN0VOc1VOZ0lRSUFNUTBRUkZEUUFnQUNBQUtBSUFRUXhyS0FJQWFrRUZFSThEQ3lBQ1FSaHFFT0FESUFKQklHb2tBQXNKQUNBQUVKUUtFQjhMQndBZ0FDQUJSZ3NKQUNBQUVKVUtFQjhMRUFBZ0FDQUJOd01JSUFCQ0FEY0RBQXN6QVFGL0lBSUVRQ0FBSVFNRFFDQURJQUVvQWdBMkFnQWdBMEVFYWlFRElBRkJCR29oQVNBQ1FRRnJJZ0lOQUFzTElBQUxrZ0lCQ0g4Q1FDQUJRUUpJRFFBZ0FVRUNhMEVCZGlJSklBSWdBR3NpQkVFQ2RVZ05BQ0FBSUFSQkFYVWlCRUVCYWlJRlFRSjBhaUVEQW44Z0FTQUVRUUpxSWdkTUJFQWdBeWdDQUF3QkN5QURRUVJxSUFNZ0F5Z0NBQ0lHSUFNb0FnUWlDQkRGQVNJRUd5RURJQWNnQlNBRUd5RUZJQWdnQmlBRUd3c2lCaUFDS0FJQUlnY1F4UUVOQUFOQUFrQWdBeUVFSUFJZ0JqWUNBQ0FGSUFsS0RRQWdBQ0FGUVFGMElnSkJBWElpQlVFQ2RHb2hBd0ovSUFFZ0FrRUNhaUlJVEFSQUlBTW9BZ0FNQVFzZ0EwRUVhaUFESUFNb0FnQWlCaUFES0FJRUlnb1F4UUVpQWhzaEF5QUlJQVVnQWhzaEJTQUtJQVlnQWhzTElRWWdCQ0VDSUFZZ0J4REZBVVVOQVFzTElBUWdCellDQUFzTGlnRUJBWDhnQUNBQklBSWdBeENoRFNFRklBUW9BZ0FnQXlnQ0FCREZBUVIvSUFNZ0JCQ3BBU0FES0FJQUlBSW9BZ0FReFFGRkJFQWdCVUVCYWc4TElBSWdBeENwQVNBQ0tBSUFJQUVvQWdBUXhRRkZCRUFnQlVFQ2FnOExJQUVnQWhDcEFTQUJLQUlBSUFBb0FnQVF4UUZGQkVBZ0JVRURhZzhMSUFBZ0FSQ3BBU0FGUVFScUJTQUZDd3RxQVFGL0lBQWdBU0FDRUpRSElRUWdBeWdDQUNBQ0tBSUFFTVVCQkg4Z0FpQURFS2tCSUFJb0FnQWdBU2dDQUJERkFVVUVRQ0FFUVFGcUR3c2dBU0FDRUtrQklBRW9BZ0FnQUNnQ0FCREZBVVVFUUNBRVFRSnFEd3NnQUNBQkVLa0JJQVJCQTJvRklBUUxDNFVJQVFkL0EwQWdBVUVFYXlFR0EwQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRWdBQ0lEYXlJQVFRSjFJZ1FPQmdjSEFBUUJBZ01MSUFZb0FnQWdBeWdDQUJERkFVVU5CaUFESUFZUXFRRVBDeUFESUFOQkJHb2dBMEVJYWlBR0VLRU5HZzhMSUFNZ0EwRUVhaUFEUVFocUlBTkJER29nQmhDZ0RSb1BDeUFBUWZzQVRBUkFJQUVoQkNBRElBTkJCR29nQTBFSWFpSUJFSlFIR2lBRFFReHFJUUlEUUNBQ0lBUkhCRUFnQWlJQUtBSUFJZ1lnQVNnQ0FDSUZFTVVCQkVBRFFBSkFJQUFnQlRZQ0FDQURJQUVpQUVZRVFDQURJUUFNQVFzZ0JpQUFRUVJySWdFb0FnQWlCUkRGQVEwQkN3c2dBQ0FHTmdJQUN5QUNJZ0ZCQkdvaEFnd0JDd3NQQ3lBQ1JRUkFBa0FnQVNBRFJnMEFBa0FnQVNBRGF5SUFRUVZJRFFBZ0FFRUNkU0lDUVFKclFRRjJJUUFEUUNBQVFRQklEUUVnQXlBQ0lBTWdBRUVDZEdvUW53MGdBRUVCYXlFQURBQUxBQXNnQVNBRGEwRUNkU0VDSUFFaEFBTkFJQUFnQVVZRVFDQUJJQU5yUVFKMUlRQURRQ0FBUVFGS0JFQWdBeUFCUVFScklnRVFxUUVnQXlBQVFRRnJJZ0FnQXhDZkRRd0JDd3NNQWdzZ0FDZ0NBQ0FES0FJQUVNVUJCRUFnQUNBREVLa0JJQU1nQWlBREVKOE5DeUFBUVFScUlRQU1BQXNBQ3c4TElBTWdCRUVCZEVGOGNXb2hCd0ovSUFCQm5SOVBCRUFnQXlBRElBUkJmSEVpQUdvZ0J5QUFJQWRxSUFZUW9BME1BUXNnQXlBSElBWVFsQWNMSVFnZ0FrRUJheUVDSUFZaEFDQURLQUlBSWdVZ0J5Z0NBQ0lFRU1VQlJRUkFBMEFnQUVFRWF5SUFJQU5HQkVBZ0EwRUVhaUVFSUFVZ0JpZ0NBQkRGQVEwRkEwQWdCQ0FHUmcwSElBVWdCQ2dDQUJERkFRUkFJQVFnQmhDcEFTQUVRUVJxSVFRTUJ3VWdCRUVFYWlFRURBRUxBQXNBQ3lBQUtBSUFJQVFReFFGRkRRQUxJQU1nQUJDcEFTQUlRUUZxSVFnTElBTkJCR29pQkNBQVR3MEJBMEFnQnlnQ0FDRUpBMEFnQkNJRlFRUnFJUVFnQlNnQ0FDQUpFTVVCRFFBTEEwQWdBRUVFYXlJQUtBSUFJQWtReFFGRkRRQUxJQUFnQlVrRVFDQUZJUVFNQXdVZ0JTQUFFS2tCSUFBZ0J5QUZJQWRHR3lFSElBaEJBV29oQ0F3QkN3QUxBQXNnQXlBRFFRUnFJQVlRbEFjYURBSUxBa0FnQkNBSFJnMEFJQWNvQWdBZ0JDZ0NBQkRGQVVVTkFDQUVJQWNRcVFFZ0NFRUJhaUVJQ3lBSVJRUkFJQU1nQkJENEZDRUZJQVJCQkdvaUFDQUJFUGdVQkVBZ0JDRUJJQU1oQUNBRlJRMEZEQU1MSUFVTkF3c2dCQ0FEYXlBQklBUnJTQVJBSUFNZ0JDQUNFS0lOSUFSQkJHb2hBQXdEQ3lBRVFRUnFJQUVnQWhDaURTQUVJUUVnQXlFQURBTUxJQVloQlNBRUlBWkdEUUFEUUNBREtBSUFJUWNEUUNBRUlnQkJCR29oQkNBSElBQW9BZ0FReFFGRkRRQUxBMEFnQnlBRlFRUnJJZ1VvQWdBUXhRRU5BQXNnQUNBRlR3MENJQUFnQlJDcEFRd0FDd0FMQ3dzTGlRSUFBa0FnQUFSL0lBRkIvd0JORFFFQ1FFSDBxU0FvQWdBb0FnQkZCRUFnQVVHQWYzRkJnTDhEUmcwRERBRUxJQUZCL3c5TkJFQWdBQ0FCUVQ5eFFZQUJjam9BQVNBQUlBRkJCblpCd0FGeU9nQUFRUUlQQ3lBQlFZQkFjVUdBd0FOSElBRkJnTEFEVDNGRkJFQWdBQ0FCUVQ5eFFZQUJjam9BQWlBQUlBRkJESFpCNEFGeU9nQUFJQUFnQVVFR2RrRS9jVUdBQVhJNkFBRkJBdzhMSUFGQmdJQUVhMEgvL3o5TkJFQWdBQ0FCUVQ5eFFZQUJjam9BQXlBQUlBRkJFblpCOEFGeU9nQUFJQUFnQVVFR2RrRS9jVUdBQVhJNkFBSWdBQ0FCUVF4MlFUOXhRWUFCY2pvQUFVRUVEd3NMUVppcElFRVpOZ0lBUVg4RlFRRUxEd3NnQUNBQk9nQUFRUUVMbUFRQ0IzOEVmaU1BUVJCcklnZ2tBQUpBQWtBQ1FDQUNRU1JNQkVBZ0FDMEFBQ0lGRFFFZ0FDRUVEQUlMUVppcElFRWNOZ0lBUWdBaEF3d0NDeUFBSVFRQ1FBTkFJQVZCR0hSQkdIVVF3Z1ZGRFFFZ0JDMEFBU0VGSUFSQkFXb2hCQ0FGRFFBTERBRUxBa0FnQlVIL0FYRWlCVUVyYXc0REFBRUFBUXRCZjBFQUlBVkJMVVliSVFjZ0JFRUJhaUVFQ3dKL0FrQWdBa0VRY2tFUVJ3MEFJQVF0QUFCQk1FY05BRUVCSVFrZ0JDMEFBVUhmQVhGQjJBQkdCRUFnQkVFQ2FpRUVRUkFNQWdzZ0JFRUJhaUVFSUFKQkNDQUNHd3dCQ3lBQ1FRb2dBaHNMSWdxdElReEJBQ0VDQTBBQ1FFRlFJUVVDUUNBRUxBQUFJZ1pCTUd0Qi93RnhRUXBKRFFCQnFYOGhCU0FHUWVFQWEwSC9BWEZCR2trTkFFRkpJUVVnQmtIQkFHdEIvd0Z4UVJsTERRRUxJQVVnQm1vaUJpQUtUZzBBSUFnZ0RFSUFJQXRDQUJDd0FrRUJJUVVDUUNBSUtRTUlRZ0JTRFFBZ0N5QU1maUlOSUFhdElnNUNmNFZXRFFBZ0RTQU9mQ0VMUVFFaENTQUNJUVVMSUFSQkFXb2hCQ0FGSVFJTUFRc0xJQUVFUUNBQklBUWdBQ0FKR3pZQ0FBc0NRQUpBSUFJRVFFR1lxU0JCeEFBMkFnQWdCMEVBSUFOQ0FZTWlERkFiSVFjZ0F5RUxEQUVMSUFNZ0MxWU5BU0FEUWdHRElRd0xJQXluSUFkeVJRUkFRWmlwSUVIRUFEWUNBQ0FEUWdGOUlRTU1BZ3NnQXlBTFdnMEFRWmlwSUVIRUFEWUNBQXdCQ3lBTElBZXNJZ09GSUFOOUlRTUxJQWhCRUdva0FDQURDMzhDQW44Q2ZpTUFRYUFCYXlJRUpBQWdCQ0FCTmdJOElBUWdBVFlDRkNBRVFYODJBaGdnQkVFUWFpSUZRZ0FRZ3dRZ0JDQUZJQU5CQVJDQ0ZTQUVLUU1JSVFZZ0JDa0RBQ0VISUFJRVFDQUNJQUVnQkNnQ0ZDQUVLQUtJQVdvZ0JDZ0NQR3RxTmdJQUN5QUFJQVkzQXdnZ0FDQUhOd01BSUFSQm9BRnFKQUFMUVFFQ2Z5TUFRUkJySWdFa0FFRi9JUUlDUUNBQUVLY05EUUFnQUNBQlFROXFRUUVnQUNnQ0lCRUVBRUVCUncwQUlBRXRBQThoQWdzZ0FVRVFhaVFBSUFJTGZBRUNmeUFBSUFBb0FrZ2lBVUVCYXlBQmNqWUNTQ0FBS0FJVUlBQW9BaHhIQkVBZ0FFRUFRUUFnQUNnQ0pCRUVBQm9MSUFCQkFEWUNIQ0FBUWdBM0F4QWdBQ2dDQUNJQlFRUnhCRUFnQUNBQlFTQnlOZ0lBUVg4UEN5QUFJQUFvQWl3Z0FDZ0NNR29pQWpZQ0NDQUFJQUkyQWdRZ0FVRWJkRUVmZFF0bEFRTi9JQUpGQkVCQkFBOExBa0FnQUMwQUFDSURSUTBBQTBBQ1FDQUJMUUFBSWdWRkRRQWdBa0VCYXlJQ1JTQURJQVZIY2cwQUlBRkJBV29oQVNBQUxRQUJJUU1nQUVFQmFpRUFJQU1OQVF3Q0N3c2dBeUVFQ3lBRVFmOEJjU0FCTFFBQWF3c1dBQ0FBUlFSQVFRQVBDMEdZcVNBZ0FEWUNBRUYvQzU4REFRSi9Jd0JCTUdzaUJTUUFBa0FnQkNBRUtBSUFLQUlJRVFBQUVMSUNSUVJBSUFRZ0JDZ0NBQ2dDQ0JFQUFDSUdSUVJBSUFCQkFEb0FCQXdDQ3dKQUFrQWdCaWdDQkNJR1FmQ2ZFa1lFUUNBRklBRWdBaUFESUFRUVBKa1Fjd3dCQ3lBR1FiQ3BFa1lFUUNBRklBRWdBaUFESUFRUU5Jc1Fhd3dCQ3lBR1FkQ29Fa2NOQVNBRklBRWdBaUFESUFRUVA0c1FSaEJ5Q3lBQUlBVXBBd0EzQWdBTUFnc2dBRUVBT2dBRURBRUxJQVZCSUdvaUJpQUJJQUlnQkNBRUVLY0lJQVlRTUFSQUlBQkJBam9BQkF3QkN5QUZJQUUyQWdBZ0JTQUNLUUlJTndJTUlBVWdBaWdDRURZQ0ZDQUZJQUlwQWdBM0FnUWdCU0FETmdJWUlBVkJJR29RR2lJQktBSUFJZ0lnQWlnQ0FDZ0NDQkVBQUNJQ1JRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0FpZ0NCQ0lDUWZDZkVrWUVRQ0FGUVNocUlBVWdBU2dDQUJBOEVQa1VEQUVMSUFKQnNLa1NSZ1JBSUFWQktHb2dCU0FCS0FJQUVEUVE4eFFNQVFzZ0FrSFFxQkpIRFFFZ0JVRW9haUFGSUFFb0FnQVFQeER2RkFzZ0FDQUZLUU1vTndJQURBRUxJQUJCQURvQUJBc2dCVUV3YWlRQUMrQUJBUUovSUFKQkFFY2hBd0pBQWtBQ1FDQUFRUU54UlNBQ1JYSU5BQ0FCUWY4QmNTRUVBMEFnQUMwQUFDQUVSZzBDSUFKQkFXc2lBa0VBUnlFRElBQkJBV29pQUVFRGNVVU5BU0FDRFFBTEN5QURSUTBCSUFBdEFBQWdBVUgvQVhGR0lBSkJCRWx5UlFSQUlBRkIvd0Z4UVlHQ2hBaHNJUU1EUUNBQUtBSUFJQU56SWdSQmYzTWdCRUdCZ29RSWEzRkJnSUdDaEhoeERRSWdBRUVFYWlFQUlBSkJCR3NpQWtFRFN3MEFDd3NnQWtVTkFRc2dBVUgvQVhFaEFRTkFJQUVnQUMwQUFFWUVRQ0FBRHdzZ0FFRUJhaUVBSUFKQkFXc2lBZzBBQ3d0QkFBdC9BZ0YvQVg0Z0FMMGlBMEkwaUtkQi93OXhJZ0pCL3c5SEJId2dBa1VFUUNBQklBQkVBQUFBQUFBQUFBQmhCSDlCQUFVZ0FFUUFBQUFBQUFEd1E2SWdBUkNzRFNFQUlBRW9BZ0JCUUdvTE5nSUFJQUFQQ3lBQklBSkIvZ2RyTmdJQUlBTkMvLy8vLy8vLy80ZUFmNE5DZ0lDQWdJQ0FnUEEvaEw4RklBQUxDNVVEQWdOL0Ezd2pBRUVRYXlJREpBQUNRQ0FBdkNJRVFmLy8vLzhIY1NJQ1FkcWZwTzRFVFFSQUlBRWdBTHNpQmlBR1JJUEl5VzB3WCtRL29rUUFBQUFBQUFBNFE2QkVBQUFBQUFBQU9NT2dJZ1ZFQUFBQVVQc2grYitpb0NBRlJHTmlHbUcwRUZHK29xQWlCemtEQUNBSFJBQUFBR0Q3SWVtL1l5RUVBbjhnQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSVFJZ0JBUkFJQUVnQmlBRlJBQUFBQUFBQVBDL29DSUZSQUFBQUZEN0lmbS9vcUFnQlVSallocGh0QkJSdnFLZ09RTUFJQUpCQVdzaEFnd0NDeUFIUkFBQUFHRDdJZWsvWkVVTkFTQUJJQVlnQlVRQUFBQUFBQUR3UDZBaUJVUUFBQUJRK3lINXY2S2dJQVZFWTJJYVliUVFVYjZpb0RrREFDQUNRUUZxSVFJTUFRc2dBa0dBZ0lEOEIwOEVRQ0FCSUFBZ0FKTzdPUU1BUVFBaEFnd0JDeUFESUFJZ0FrRVhka0dXQVdzaUFrRVhkR3UrdXprRENDQURRUWhxSUFNZ0FrRUJRUUFRbFJVaEFpQURLd01BSVFVZ0JFRUFTQVJBSUFFZ0JabzVBd0JCQUNBQ2F5RUNEQUVMSUFFZ0JUa0RBQXNnQTBFUWFpUUFJQUlMdndvREJId0Zmd0YrSXdCQk1Hc2lCeVFBQWtBQ1FBSkFJQUM5SWd0Q0lJaW5JZ1pCLy8vLy93ZHhJZ2hCK3RTOWdBUk5CRUFnQmtILy96OXhRZnZESkVZTkFTQUlRZnl5aTRBRVRRUkFJQXRDQUZrRVFDQUJJQUJFQUFCQVZQc2grYitnSWdCRU1XTmlHbUcwMEwyZ0lnSTVBd0FnQVNBQUlBS2hSREZqWWhwaHROQzlvRGtEQ0VFQklRWU1CUXNnQVNBQVJBQUFRRlQ3SWZrL29DSUFSREZqWWhwaHROQTlvQ0lDT1FNQUlBRWdBQ0FDb1VReFkySWFZYlRRUGFBNUF3aEJmeUVHREFRTElBdENBRmtFUUNBQklBQkVBQUJBVlBzaENjQ2dJZ0JFTVdOaUdtRzA0TDJnSWdJNUF3QWdBU0FBSUFLaFJERmpZaHBodE9DOW9Ea0RDRUVDSVFZTUJBc2dBU0FBUkFBQVFGVDdJUWxBb0NJQVJERmpZaHBodE9BOW9DSUNPUU1BSUFFZ0FDQUNvVVF4WTJJYVliVGdQYUE1QXdoQmZpRUdEQU1MSUFoQnU0enhnQVJOQkVBZ0NFRzgrOWVBQkUwRVFDQUlRZnl5eTRBRVJnMENJQXRDQUZrRVFDQUJJQUJFQUFBd2YzelpFc0NnSWdCRXlwU1RwNUVPNmIyZ0lnSTVBd0FnQVNBQUlBS2hSTXFVazZlUkR1bTlvRGtEQ0VFRElRWU1CUXNnQVNBQVJBQUFNSDk4MlJKQW9DSUFSTXFVazZlUkR1azlvQ0lDT1FNQUlBRWdBQ0FDb1VUS2xKT25rUTdwUGFBNUF3aEJmU0VHREFRTElBaEIrOFBrZ0FSR0RRRWdDMElBV1FSQUlBRWdBRVFBQUVCVSt5RVp3S0FpQUVReFkySWFZYlR3dmFBaUFqa0RBQ0FCSUFBZ0FxRkVNV05pR21HMDhMMmdPUU1JUVFRaEJnd0VDeUFCSUFCRUFBQkFWUHNoR1VDZ0lnQkVNV05pR21HMDhEMmdJZ0k1QXdBZ0FTQUFJQUtoUkRGallocGh0UEE5b0RrRENFRjhJUVlNQXdzZ0NFSDZ3K1NKQkVzTkFRc2dBQ0FBUklQSXlXMHdYK1Evb2tRQUFBQUFBQUE0UTZCRUFBQUFBQUFBT01PZ0lnTkVBQUJBVlBzaCtiK2lvQ0lDSUFORU1XTmlHbUcwMEQyaUlnU2hJZ1ZFR0MxRVZQc2g2YjlqSVFrQ2Z5QURtVVFBQUFBQUFBRGdRV01FUUNBRHFnd0JDMEdBZ0lDQWVBc2hCZ0pBSUFrRVFDQUdRUUZySVFZZ0EwUUFBQUFBQUFEd3Y2QWlBMFF4WTJJYVliVFFQYUloQkNBQUlBTkVBQUJBVlBzaCtiK2lvQ0VDREFFTElBVkVHQzFFVlBzaDZUOWtSUTBBSUFaQkFXb2hCaUFEUkFBQUFBQUFBUEEvb0NJRFJERmpZaHBodE5BOW9pRUVJQUFnQTBRQUFFQlUreUg1djZLZ0lRSUxJQUVnQWlBRW9TSUFPUU1BQWtBZ0NFRVVkaUlKSUFDOVFqU0lwMEgvRDNGclFSRklEUUFnQVNBQ0lBTkVBQUJnR21HMDBEMmlJZ0NoSWdVZ0EwUnpjQU11aWhtak82SWdBaUFGb1NBQW9hRWlCS0VpQURrREFDQUpJQUM5UWpTSXAwSC9EM0ZyUVRKSUJFQWdCU0VDREFFTElBRWdCU0FEUkFBQUFDNktHYU03b2lJQW9TSUNJQU5Fd1VrZ0pacURlem1pSUFVZ0FxRWdBS0doSWdTaElnQTVBd0FMSUFFZ0FpQUFvU0FFb1RrRENBd0JDeUFJUVlDQXdQOEhUd1JBSUFFZ0FDQUFvU0lBT1FNQUlBRWdBRGtEQ0VFQUlRWU1BUXNnQzBMLy8vLy8vLy8vQjROQ2dJQ0FnSUNBZ0xEQkFJUy9JUUJCQUNFR1FRRWhDUU5BSUFkQkVHb2dCa0VEZEdvQ2Z5QUFtVVFBQUFBQUFBRGdRV01FUUNBQXFnd0JDMEdBZ0lDQWVBdTNJZ0k1QXdBZ0FDQUNvVVFBQUFBQUFBQndRYUloQUVFQklRWWdDU0VLUVFBaENTQUtEUUFMSUFjZ0FEa0RJRUVDSVFZRFFDQUdJZ2xCQVdzaEJpQUhRUkJxSUFsQkEzUnFLd01BUkFBQUFBQUFBQUFBWVEwQUN5QUhRUkJxSUFjZ0NFRVVka0dXQ0dzZ0NVRUJha0VCRUpVVklRWWdCeXNEQUNFQUlBdENBRk1FUUNBQklBQ2FPUU1BSUFFZ0J5c0RDSm81QXdoQkFDQUdheUVHREFFTElBRWdBRGtEQUNBQklBY3JBd2c1QXdnTElBZEJNR29rQUNBR0MvNERBd044QW44QmZpQUF2U0lHUWlDSXAwSC8vLy8vQjNFaUJFR0FnTUNnQkU4RVFDQUFSQmd0UkZUN0lmay9JQUNtSUFDOVF2Ly8vLy8vLy8vLy93Q0RRb0NBZ0lDQWdJRDQvd0JXR3c4TEFrQUNmeUFFUWYvLzcvNERUUVJBUVg4Z0JFR0FnSUR5QTA4TkFSb01BZ3NnQUpraEFDQUVRZi8veS84RFRRUkFJQVJCLy8rWC93Tk5CRUFnQUNBQW9FUUFBQUFBQUFEd3Y2QWdBRVFBQUFBQUFBQUFRS0NqSVFCQkFBd0NDeUFBUkFBQUFBQUFBUEMvb0NBQVJBQUFBQUFBQVBBL29LTWhBRUVCREFFTElBUkIvLytOZ0FSTkJFQWdBRVFBQUFBQUFBRDR2NkFnQUVRQUFBQUFBQUQ0UDZKRUFBQUFBQUFBOEQrZ295RUFRUUlNQVF0RUFBQUFBQUFBOEw4Z0FLTWhBRUVEQ3lFRklBQWdBS0lpQWlBQ29pSUJJQUVnQVNBQklBRkVMMnhxTEVTMG9yK2lSSnI5M2xJdDNxMi9vS0pFYlpwMHIvS3dzNytnb2tSeEZpUCt4bkc4djZDaVJNVHJtSm1abWNtL29LSWhBeUFDSUFFZ0FTQUJJQUVnQVVRUjJpTGpPcTJRUDZKRTZ3MTJKRXQ3cVQrZ29rUlJQZENnWmcyeFA2Q2lSRzRnVE1YTlJiYy9vS0pFLzRNQWtpUkp3aitnb2tRTlZWVlZWVlhWUDZDaUlRRWdCRUgvLysvK0EwMEVRQ0FBSUFBZ0F5QUJvS0toRHdzZ0JVRURkQ0lFUWJEaERXb3JBd0FnQUNBRElBR2dvaUFFUWREaERXb3JBd0NoSUFDaG9TSUFtaUFBSUFaQ0FGTWJJUUFMSUFBTHhnSUNBMzBDZndKQUFuMENmUUpBSUFDOElnUkJ6NmZROWdOTUJFQWdCRUdBZ0lEOGUwOEVRRU1BQUlEL0lBQkRBQUNBdjFzTkJCb2dBQ0FBazBNQUFBQUFsUThMSUFSQkFYUkJnSUNBdUFaSkRRUWdCRUdhN05mMGUwOE5BVU1BQUFBQURBSUxJQVJCLy8vLyt3ZExEUU1MSUFCREFBQ0FQNUlpQWJ4QmpmYXJBbW9pQlVFWGRrSC9BR3NoQkNBQUlBR1RRd0FBZ0QrU0lBQWdBVU1BQUlDL2twTWdCVUgvLy8rREJFc2JJQUdWUXdBQUFBQWdCVUgvLy8vZkJFMGJJUUlnQlVILy8vOERjVUh6aWRUNUEycStRd0FBZ0wrU0lRQWdCTElMSWdORGdIRXhQNVFnQUNBQUlBQkRBQUFBUUpLVklnRWdBQ0FBUXdBQUFEK1VsQ0lBSUFFZ0FaUWlBU0FCSUFHVUlnRkQ3dW1SUHBSRHFxb3FQNUtVSUFFZ0FVTW1ubmcrbEVNVHpzdytrcFNTa3BRZ0EwUFI5eGMzbENBQ2twSWdBSk9Ta2dzUEN5QUFDOVFEQXdKL0JId0JmaUFBdlNJSFFpQ0lweUVCQWtBQ2ZBSjhBa0FnQVVINWhPcitBMHNnQjBJQVdYRkZCRUFnQVVHQWdNRC9lMDhFUUVRQUFBQUFBQUR3L3lBQVJBQUFBQUFBQVBDL1lRMEVHaUFBSUFDaFJBQUFBQUFBQUFBQW93OExJQUZCQVhSQmdJQ0F5Z2RKRFFRZ0FVSEYvY3IrZTA4TkFVUUFBQUFBQUFBQUFBd0NDeUFCUWYvL3YvOEhTdzBEQ3lBQVJBQUFBQUFBQVBBL29DSUR2U0lIUWlDSXAwSGl2aVZxSWdGQkZIWkIvd2RySVFJZ0FDQURvVVFBQUFBQUFBRHdQNkFnQUNBRFJBQUFBQUFBQVBDL29LRWdBVUgvLzcrQUJFc2JJQU9qUkFBQUFBQUFBQUFBSUFGQi8vKy9tZ1JOR3lFRklBZEMvLy8vL3crRElBRkIvLzgvY1VHZXdaci9BMnF0UWlDR2hMOUVBQUFBQUFBQThMK2dJUUFnQXJjTElnTkVBQURnL2tJdTVqK2lJQUFnQUNBQVJBQUFBQUFBQUFCQW9LTWlCQ0FBSUFCRUFBQUFBQUFBNEQraW9pSUdJQVFnQktJaUJDQUVvaUlBSUFBZ0FFU2Z4bmpRQ1pyRFA2SkVyM2lPSGNWeHpEK2dva1FFK3BlWm1ablpQNkNpSUFRZ0FDQUFJQUJFUkZJKzN4THh3aitpUk40RHk1WmtSc2Mvb0tKRVdaTWlsQ1JKMGorZ29rU1RWVlZWVlZYbFA2Q2lvS0NpSUFORWRqeDVOZTg1NmoyaUlBV2dvQ0FHb2FDZ0N3OExJQUFMMHdNQ0FuNENmeU1BUVNCcklnUWtBQUpBSUFGQy8vLy8vLy8vLy8vL0FJTWlBMEtBZ0lDQWdJREFnRHg5SUFOQ2dJQ0FnSUNBd1AvREFIMVVCRUFnQVVJRWhpQUFRanlJaENFRElBQkMvLy8vLy8vLy8vOFBneUlBUW9HQWdJQ0FnSUNBQ0ZvRVFDQURRb0dBZ0lDQWdJQ0F3QUI4SVFJTUFnc2dBMEtBZ0lDQWdJQ0FnRUI5SVFJZ0FFS0FnSUNBZ0lDQWdBaFNEUUVnQWlBRFFnR0RmQ0VDREFFTElBQlFJQU5DZ0lDQWdJQ0F3UC8vQUZRZ0EwS0FnSUNBZ0lEQS8vOEFVUnRGQkVBZ0FVSUVoaUFBUWp5SWhFTC8vLy8vLy8vL0E0TkNnSUNBZ0lDQWdQei9BSVFoQWd3QkMwS0FnSUNBZ0lDQStQOEFJUUlnQTBMLy8vLy8vLysvLzhNQVZnMEFRZ0FoQWlBRFFqQ0lweUlGUVpIM0FFa05BQ0FFUVJCcUlBQWdBVUwvLy8vLy8vOC9nMEtBZ0lDQWdJREFBSVFpQWlBRlFZSDNBR3NRekFJZ0JDQUFJQUpCZ2ZnQUlBVnJFSndHSUFRcEF3aENCSVlnQkNrREFDSUFRanlJaENFQ0lBUXBBeEFnQkNrREdJUkNBRkt0SUFCQy8vLy8vLy8vLy84UGc0UWlBRUtCZ0lDQWdJQ0FnQWhhQkVBZ0FrSUJmQ0VDREFFTElBQkNnSUNBZ0lDQWdJQUlVZzBBSUFKQ0FZTWdBbndoQWdzZ0JFRWdhaVFBSUFJZ0FVS0FnSUNBZ0lDQWdJQi9nNFMvQzBVQkFYOGpBRUVRYXlJRkpBQWdCU0FCSUFJZ0F5QUVRb0NBZ0lDQWdJQ0FnSCtGRUlvRElBVXBBd0FoQVNBQUlBVXBBd2czQXdnZ0FDQUJOd01BSUFWQkVHb2tBQXZCQVFFRGZ3SkFJQUVnQWlnQ0VDSURCSDhnQXdVZ0FoQ2tGUTBCSUFJb0FoQUxJQUlvQWhRaUJXdExCRUFnQWlBQUlBRWdBaWdDSkJFRUFBOExBa0FnQWlnQ1VFRUFTQVJBUVFBaEF3d0JDeUFCSVFRRFFDQUVJZ05GQkVCQkFDRUREQUlMSUFBZ0EwRUJheUlFYWkwQUFFRUtSdzBBQ3lBQ0lBQWdBeUFDS0FJa0VRUUFJZ1FnQTBrTkFTQUFJQU5xSVFBZ0FTQURheUVCSUFJb0FoUWhCUXNnQlNBQUlBRVFmUm9nQWlBQ0tBSVVJQUZxTmdJVUlBRWdBMm9oQkFzZ0JBc01BQ0FBSUFDVElnQWdBSlVMRlFFQmZ5TUFRUkJySWdFZ0FEZ0NEQ0FCS2dJTUMrWURBd1o4QVg0RGZ3SkFBa0FDUUFKQUlBQzlJZ2RDQUZrRVFDQUhRaUNJcHlJSVFmLy9QMHNOQVFzZ0IwTC8vLy8vLy8vLy8vOEFnMUFFUUVRQUFBQUFBQUR3dnlBQUlBQ2lvdzhMSUFkQ0FGa05BU0FBSUFDaFJBQUFBQUFBQUFBQW93OExJQWhCLy8rLy93ZExEUUpCZ0lEQS93TWhDVUdCZUNFS0lBaEJnSURBL3dOSEJFQWdDQ0VKREFJTElBZW5EUUZFQUFBQUFBQUFBQUFQQ3lBQVJBQUFBQUFBQUZCRG9yMGlCMElnaUtjaENVSExkeUVLQ3lBS0lBbEI0cjRsYWlJSVFSUjJhcmNpQlVRQVlKOVFFMFRUUDZJaUFTQUhRdi8vLy84UGd5QUlRZi8vUDNGQm5zR2Evd05xclVJZ2hvUy9SQUFBQUFBQUFQQy9vQ0lBSUFBZ0FFUUFBQUFBQUFEZ1A2S2lJZ09odlVLQWdJQ0FjSU8vSWdSRUFBQWdGWHZMMnoraUlnS2dJZ1lnQWlBQklBYWhvQ0FBSUFCRUFBQUFBQUFBQUVDZ295SUJJQU1nQVNBQm9pSUNJQUtpSWdFZ0FTQUJSSi9HZU5BSm1zTS9va1N2ZUk0ZHhYSE1QNkNpUkFUNmw1bVptZGsvb0tJZ0FpQUJJQUVnQVVSRVVqN2ZFdkhDUDZKRTNnUExsbVJHeHorZ29rUlpreUtVSkVuU1A2Q2lSSk5WVlZWVlZlVS9vS0tnb0tJZ0FDQUVvU0FEb2FBaUFFUUFBQ0FWZTh2YlA2SWdCVVEySy9FUjgvNVpQYUlnQUNBRW9FVFZyWnJLT0pTN1BhS2dvS0NnSVFBTElBQUxEQUFnQUVNQUFBQVFFSThWQ3d3QUlBQkRBQUFBY0JDUEZRdXRCQU1EZkFOL0FuNENmQUpBSUFBUXhnUkIvdzl4SWdSRUFBQUFBQUFBa0R3UXhnUWlCV3NpQmtRQUFBQUFBQUNBUUJER0JDQUZhMGtFUUNBRUlRVU1BUXNnQmtFQVNBUkFJQUJFQUFBQUFBQUE4RCtnRHd0QkFDRUZSQUFBQUFBQUFKQkFFTVlFSUFSTERRQkVBQUFBQUFBQUFBQWdBTDBpQjBLQWdJQ0FnSUNBZUZFTkFScEVBQUFBQUFBQThIOFF4Z1FnQkUwRVFDQUFSQUFBQUFBQUFQQS9vQThMSUFkQ0FGTUVRRVFBQUFBQUFBQUFFQkNkQ2c4TFJBQUFBQUFBQUFCd0VKMEtEd3RCK01zTkt3TUFJQUNpUVlETURTc0RBQ0lCb0NJQ0lBR2hJZ0ZCa013Tkt3TUFvaUFCUVlqTURTc0RBS0lnQUtDZ0lnQWdBS0lpQVNBQm9pQUFRYkRNRFNzREFLSkJxTXdOS3dNQW9LSWdBU0FBUWFETURTc0RBS0pCbU13Tkt3TUFvS0lnQXIwaUNLZEJCSFJCOEE5eElnUkI2TXdOYWlzREFDQUFvS0NnSVFBZ0JFSHd6QTFxS1FNQUlBaENMWVo4SVFjZ0JVVUVRQUo4SUFoQ2dJQ0FnQWlEVUFSQUlBZENnSUNBZ0lDQWdJZy9mYjhpQVNBQW9pQUJvRVFBQUFBQUFBQUFmNklNQVFzZ0IwS0FnSUNBZ0lDQThEOTh2eUlCSUFDaUlnSWdBYUFpQUVRQUFBQUFBQUR3UDJNRWZCQ3NGVVFBQUFBQUFBQVFBS0lRcXhWRUFBQUFBQUFBQUFBZ0FFUUFBQUFBQUFEd1A2QWlBeUFDSUFFZ0FLR2dJQUJFQUFBQUFBQUE4RDhnQTZHZ29LQkVBQUFBQUFBQThMK2dJZ0FnQUVRQUFBQUFBQUFBQUdFYkJTQUFDMFFBQUFBQUFBQVFBS0lMRHdzZ0I3OGlBU0FBb2lBQm9Bc0xld0VFZnlBQVFRQTJBZ2dnQUNBQU5nSUVJQUFnQURZQ0FDQUJLQUlJSWdVRVFDQUJLQUlFSWdRb0FnQWlBaUFCS0FJQUlnTW9BZ1EyQWdRZ0F5Z0NCQ0FDTmdJQUlBQW9BZ0FpQWlBRU5nSUVJQVFnQWpZQ0FDQUFJQU0yQWdBZ0F5QUFOZ0lFSUFBZ0FDZ0NDQ0FGYWpZQ0NDQUJRUUEyQWdnTEMxc0JBMzhnQVNBQUtBSVVTd1JBSUFBb0Fnd2hBaUFBSUFFUWdCWWdBQ2dDRUNFRFFRQWhBUU5BSUFFZ0EwWUVRQ0FBSUFJUU5nVWdBVUVDZENJRUlBQW9BZ3hxSUFJZ0JHb29BZ0EyQWdBZ0FVRUJhaUVCREFFTEN3c0wzZ0lCQkg4Q1FBSkFBMEFnQVM4QkhpSUVJQUl2QVI1SERRSWdBd1JBSUFBZ0FTZ0NLQkRlQVNJR1FRUnFJUVFnQUNBQ0tBSW9FTjRCSWdWQkJHb2hCeUFGS0FJQUlRVURRQ0FGSUFkSEJFQWdCaWdDQUNBRUlBVkJFR29RL0JVZ0JFWU5CU0FGRUV3aEJRd0JDd3NnQVM4QkhpRUVDMEVBSVFVQ1FBSkFJQVJCLy84RGNVRWNhdzREQUFNQkF3c2dBVUVDRUJzZ0FrRUNFQnRIRFFOQkFTRUZJQUZCQVJBYklnRWdBa0VCRUJzaUFrWU5BaUFBSUFFUUlDRUJJQUFnQWhBZ0lRSWdBVVVOQTBFQUlRVWdBZzBCREFJTEN5QUJLQUlRSWdZZ0FTZ0NEQ0lIYXlBQ0tBSVFJQUlvQWd4clJ3MEFRUUVoQkFOQUlBUWdCaUFIYTBFRWRVOGlCUTBCSUFFZ0JCQWJJZ1lnQWlBRUVCc2lCMGNFUUNBQUlBWVFJQ0lHUlNBQUlBY1FJQ0lIUlhJTkFpQUFJQVlnQnlBREVMME5SUTBDQ3lBRVFRRnFJUVFnQVNnQ0RDRUhJQUVvQWhBaEJnd0FDd0FMSUFVUEMwRUFDeU1CQVg4Z0FDQUJFTEVDQkg4Z0FDQUFJQUVRdWdFb0FnQW9BZ2dRN3dFRlFRQUxDMzRCQW44akFFRVFheUlESkFBZ0FpQUNLQUlBTmdJRUFrQUNRQ0FCUlEwQUlBQWdBUkM2QVNJQVJRMEJJQUF2QVI1QkhrY05BQ0FDSUFNZ0FDZ0NBRUVJYWlBQUtBSUVFSUFMSWdBUTdRVWdBQkF5R2lBQ0tBSUFJQUlvQWdSSElRUUxJQU5CRUdva0FDQUVEd3RCcVM5QitLc0NRZFVJUWV1NUFSQUFBQXNOQUNBQVFaQUJhaUFCRUwwVkN4RUFJQUFvQW5BaUFDQUJFTUlWSUFCR0N5Y0JBWDlCZnlBQlFRSjBJQUZCLy8vLy93TkxHeEFWSVFJZ0FDQUJOZ0lJSUFBZ0FqWUNBQXNaQUNBQUlBRTJBZ1FnQUVIb2tpQTJBZ0FnQUNBQU5nSVFDemdCQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCSUFJUXB3b2dBeWdDQ0NFQklBQWdBeTBBRERvQUJDQUFJQUUyQWdBZ0EwRVFhaVFBQ3lVQUlBQW9BaEFFUUVIcXdRSkJrcW9DUWZJQVFlK1dCQkFBQUFzZ0FDQUJOZ0lRUVFBTHhRRUJCWDhqQUVFUWF5SUZKQUFqQUVFUWF5SUNKQUJCSUJBVklnTkJBRFlDQUNBQ0lBQkJyQUpxSWdSQkNHbzJBZ1FnQWtFQk5nSUlJQU5CQ0dvZ0FSQ1VGaG9nQXlBRU5nSUVJQU1nQkNnQ0FDSUdOZ0lBSUFZZ0F6WUNCQ0FFSUFNMkFnQWdCQ0FFS0FJSVFRRnFOZ0lJSUFKQkFEWUNBQ0FDRUlzQklBSkJFR29rQUNBQUtBS3NBaUVDSUFFb0FoQWhBeUFGSUFFb0FnQTJBZ3dnQlNBRE5nSUlJQUJCMEFKcUlBVkJDR29RMVJVZ0FrRUlhaUlBTmdJQUlBVkJFR29rQUNBQUN6MEJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUlnQURZQ0NDQUJRVGhxSUFKQkNHb1EvUUlnQUVIRUFHb2dBa0VNYWhEUEFTQUNRUkJxSkFBTEpBQWdBQ0FCTmdJQUlBQkJCR29nQkJDd0FSb2dBQ0FETmdJVUlBQWdBallDRUNBQUMvSUVBUWQvSXdCQm9BSnJJZ1FrQUNBQkx3RWVJUWNnQkVIZ0FHb2dBQ0FDRU4wQklBUW9BbVFoQXlBRUxRQmhJUVVDUUNBQUlBRWdBaERLRFNJQ0RRQkJBQ0VDSUFWRkRRQUNRQ0FBS0FJQUtBSUFFRWRGRFFBQ1FDQUFLQUlBS0FJQVFRRkdEUUFnQnhDSkRrVWdBMEVEUm5JTkFDQUVRZUFBYWlJRElBQkJjaUFCRUJBZ0JFSFFBR29pQVNBQVFhSWtFRGNnQXlBQkVCSWFJQU1nQnhDQkFSQU9HaUFEUVlhRENoQU9HaUFEUWFPVEFoQU9HaUFFS0FLY0FpRUNJQUVRRHhvZ0F4QVJEQUlMSUFOQkEwWWdCMEhnQVVkeVJRUkFJQVJCNEFCcUlnZ2dBRUhLSkJBM0lBQWdBU2dDT0NnQ0FCQ2ZBU0VKSUFSQktHb2dDQkJVSVFWQkVCQVZJZ1pCM0k4Z05nSUFJQVlnQlNrQ0FEY0NCQ0FHSUFVb0FnZzJBZ3dnQlJCVklBUWdCallDU0NBSlFhQURhaUFFUVRocUlnWVF6UUVnQmhBV0lBVVFEeG9nQ0JBUEdnc2dBMEVDUmdSQUlBUkI0QUJxSWdnZ0FFR2RKQkEzSUFBZ0FTZ0NPQ2dDQUJDZkFTRUpJQVFnQ0JCVUlRVkJFQkFWSWdaQmdKQWdOZ0lBSUFZZ0JTa0NBRGNDQkNBR0lBVW9BZ2cyQWd3Z0JSQlZJQVFnQmpZQ0lDQUpRYUFEYWlBRVFSQnFJZ1lRelFFZ0JoQVdJQVVRRHhvZ0NCQVBHZ3dCQ3lBRFFRUnJRWDFMRFFBZ0JFSGdBR29pQXlBQVFYSWdBUkFRSUFSQjBBQnFJZ0VnQUVHY0pCQTNJQU1nQVJBU0dpQURJQWNRZ1FFUURob2dBMEc5Z3dvUURob2dBMEdWa3dJUURob2dCQ2dDbkFJaEFpQUJFQThhSUFNUUVRd0JDeUFIRUlrT1JTQURRWDV4UVFKR2NnMEFJQVJCNEFCcUlnTWdBRUZ5SUFFUUVDQURJQWNRZ1FFUURob2dBMEhKa2dJUURob2dCQ2dDbkFJaEFpQURFQkVMSUFSQm9BSnFKQUFnQWd2WkFnRURmeU1BUWRBQmF5SURKQUFnQVM4QkhpRUVJQU5CRUdvZ0FDQUNFTjBCQWtBZ0F5MEFFRVVFUUNBRFFSQnFJZ0lnQUVGeUlBRVFFQ0FDSUFRUWdRRVFEaG9nQWtHN1B4QU9HaUFES0FMTUFTRUVJQUlRRVF3QkN5QURMUUFSUlFSQVFRQWhCQ0FBTFFDQUFVRUNjVVVOQVNBQVFZQUJhaUlGUWUwcEVHaEZCRUFnQTBFUWFpSUNJQUJCY2lBQkVCQWdBa0h5MmdrUURob2dBa0hqeFFBUURob2dBeWdDekFFaEJDQUNFQkVNQWdzZ0JTMEFBRUVDY1VVTkFTQUZRZTBwRUdoRkRRRWdBQ0FDRUhBUW93SU5BU0FEUVJCcUlnSWdBRUZ5SUFFUUVDQUNRWUNTQ2hBT0dpQUNRY0hGQUJBT0dpQURLQUxNQVNFRUlBSVFFUXdCQzBFQUlRUWdBeWdDRkVFSFNRMEFJQU5CRUdvaUJTQUFRWElnQVJBUUlBVkI0dkFNRUE0YUlBTWdBQ0FBSUFJUUlCREJGU0FGSUFNUUVob2dBeWdDekFFaEJDQURFQThhSUFVUUVRc2dBMEhRQVdva0FDQUVDMTRCQVg4akFFRVFheUlHSkFBZ0JpQUNOZ0lBSUFZZ0FUWUNDQ0FBSUFZb0FnZ2dCaWdDQUNBREVMWU9JZ0JCdVAwUE5nSUVJQUJCN1AwUE5nSUFJQUFnQlRZQ01DQUFJQVE1QXlnZ0FFSFkvUTgyQWdBZ0JrRVFhaVFBSUFBTGN3RURmeU1BUWNBQmF5SUNKQUFnQUNBQlFRTVFHeUlFRU0wQ0lRTWdBQ0FFRUhBaEJBSkFBa0FnQUNBREVGQkZEUUFnQUNBREVENUJJRWNOQUVFQUlRTWdCQkNqQWcwQkN5QUNJQUJCY2lBQkVCQWdBa0dnL3dFUURob2dBaWdDdkFFaEF5QUNFQkVMSUFKQndBRnFKQUFnQXd1RUFRRUNmeU1BUVJCcklnTWtBQ0FDS0FJQUlRUWdBaWdDQkNFQ0lBTWdBUzhCSGpZQ0RBSi9RUUVnQkNBRUlBSkJBblJxSWdJZ0EwRU1haENhQlNBQ1J3MEFHa0VBSUFFdkFSNUIvdjhEY1VFY1J3MEFHaUFESUFBZ0FTZ0NBQ2dDQ0JBZ0x3RWVOZ0lJSUFRZ0FpQURRUWhxRUpvRklBSkhDeUVDSUFOQkVHb2tBQ0FDQ3g0QUlBQkJCSFpCQVhFZ0FFRURka0VCY1dwQkFrRUJJQUJCQW5FYmFndUpBUUVFZnlNQVFTQnJJZ0lrQUNBQ1FSQnFFRlVnQWtFUWFpSURBbjlCakRFZ0FVSGtBSEFpQkVFTFJpQUJRUXB3SWdWQkFVZHlSUTBBR2tHYzZ3UWdCRUVNUmlBRlFRSkhja1VOQUJwQjc2TURRZnZnQkVIdm93TWdCRUVOUnhzZ0JVRURSeHNMRU5JQklBSWdBUkNNQkNBQUlBSWdBeEJPSUFJUUR4b2dBeEFQR2lBQ1FTQnFKQUFMd3dFQkEzOGdBQ0FCSUFJZ0F4RFJEU0VGSUFRb0FnQWlCaWdDQUNBREtBSUFJZ2NvQWdCSkJIOGdBeUFHTmdJQUlBUWdCellDQUNBREtBSUFJZ1FvQWdBZ0FpZ0NBQ0lHS0FJQVR3UkFJQVZCQVdvUEN5QUNJQVEyQWdBZ0F5QUdOZ0lBSUFJb0FnQWlBeWdDQUNBQktBSUFJZ1FvQWdCUEJFQWdCVUVDYWc4TElBRWdBellDQUNBQ0lBUTJBZ0FnQVNnQ0FDSUNLQUlBSUFBb0FnQWlBeWdDQUU4RVFDQUZRUU5xRHdzZ0FDQUNOZ0lBSUFFZ0F6WUNBQ0FGUVFScUJTQUZDd3VWQVFFRGZ5QUFJQUVnQWhDZkJ5RUVJQU1vQWdBaUJTZ0NBQ0FDS0FJQUlnWW9BZ0JKQkg4Z0FpQUZOZ0lBSUFNZ0JqWUNBQ0FDS0FJQUlnTW9BZ0FnQVNnQ0FDSUZLQUlBVHdSQUlBUkJBV29QQ3lBQklBTTJBZ0FnQWlBRk5nSUFJQUVvQWdBaUFpZ0NBQ0FBS0FJQUlnTW9BZ0JQQkVBZ0JFRUNhZzhMSUFBZ0FqWUNBQ0FCSUFNMkFnQWdCRUVEYWdVZ0JBc0xZQUVCZndOQUFrQUNRQUpBQWtBZ0FTOEJIa0VWYXc0SUFBQUNBUUVCQVFNQkMwRUNRUUVnQVVFQkVCdEJ3QUJHR3lFQ0N5QUNEd3NnQUNBQUlBRkJBUkFiRUNBUTBnMGdBVUVDRUJ0c0R3c2dBQ0FCUVFFUUd4QWdJUUVNQUFzQUN3b0FJQUJCMExJU0VFZ0x2QWdCQ1g4RFFDQUJRUVJySVFnRFFDQUFJUU1EUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUVnQTJzaUJFRUNkU0lBRGdZR0JnQUVBUUlEQ3lBQlFRUnJJZ0FvQWdBaUFTZ0NBQ0FES0FJQUlnSW9BZ0JQRFFVZ0F5QUJOZ0lBSUFBZ0FqWUNBQThMSUFNZ0EwRUVhaUFEUVFocUlBRkJCR3NRMFEwYUR3c2dBeUFEUVFScUlBTkJDR29nQTBFTWFpQUJRUVJyRU5BTkdnOExJQVJCK3dCTUJFQWdBeUFEUVFScUlBTkJDR29pQlJDZkJ4b2dBMEVNYWlFQUEwQWdBQ0lDSUFGR0RRUWdBaUlHS0FJQUlnZ29BZ0FpQnlBRktBSUFJZ1FvQWdCSkJFQURRQUpBSUFZZ0JEWUNBQ0FESUFVaUFFWUVRQ0FESVFBTUFRc2dBQ0VHSUFjZ0FFRUVheUlGS0FJQUlnUW9BZ0JKRFFFTEN5QUFJQWcyQWdBTElBSkJCR29oQUNBQ0lRVU1BQXNBQ3lBQ0RRRWdBU0FEUmcwQ0lBQkJBbXRCQVhZaEJRTkFJQVZCQUVnRVFBTkFJQUJCQWtnTkJTQURLQUlBSVFJZ0F5QUJRUVJySWdFb0FnQTJBZ0FnQVNBQ05nSUFJQU1nQUVFQmF5SUFJQU1ROVJVTUFBc0FCU0FESUFBZ0F5QUZRUUowYWhEMUZTQUZRUUZySVFVTUFRc0FDd0FMSUFNZ0EwRUVhaUFCUVFSckVKOEhHZ3dCQ3lBRElBQkJBWFJCZkhGcUlRWUNmeUFFUVowZlR3UkFJQU1nQXlBQVFYeHhJZ0JxSUFZZ0FDQUdhaUFJRU5BTkRBRUxJQU1nQmlBSUVKOEhDeUVISUFKQkFXc2hBaUFJSVFBQ2Z3SkFBa0FnQXlnQ0FDSUZLQUlBSWdRZ0JpZ0NBQ2dDQUNJSlNRUkFEQUVMQTBBZ0FFRUVheUlBSUFOR0JFQWdBMEVFYWlFR0lBUWdDQ2dDQUNJQUtBSUFTUTBEQTBBZ0JpQUlSZzBHSUFZb0FnQWlCU2dDQUNBRVN3UkFJQVlnQURZQ0FDQUlJQVUyQWdBZ0JrRUVhaUVHREFVRklBWkJCR29oQmd3QkN3QUxBQXNnQUNnQ0FDSUtLQUlBSUFsUERRQUxJQU1nQ2pZQ0FDQUFJQVUyQWdBZ0IwRUJhaUVIQ3lBQUlBTkJCR29pQkVzRVFBTi9JQVlvQWdBb0FnQWhDUU5BSUFRaUJVRUVhaUVFSUFVb0FnQWlDaWdDQUNBSlNRMEFDd05BSUFCQkJHc2lBQ2dDQUNJTEtBSUFJQWxQRFFBTElBQWdCVWtFZnlBRkJTQUZJQXMyQWdBZ0FDQUtOZ0lBSUFBZ0JpQUZJQVpHR3lFR0lBZEJBV29oQnd3QkN3c2hCQXNDUUNBRUlBWkdEUUFnQmlnQ0FDSUFLQUlBSUFRb0FnQWlCU2dDQUU4TkFDQUVJQUEyQWdBZ0JpQUZOZ0lBSUFkQkFXb2hCd3NnQjBVRVFDQURJQVFROUJVaEJpQUVRUVJxSWdBZ0FSRDBGUVJBSUFRaEFTQURJUUFnQmtVTkJ3d0VDMEVDSUFZTkFob0xJQVFnQTJzZ0FTQUVhMGdFUUNBRElBUWdBaERVRFNBRVFRUnFJUUFNQlFzZ0JFRUVhaUFCSUFJUTFBMGdCQ0VCSUFNaEFBd0ZDeUFHSUFnaUJVWU5BUU4vSUFNb0FnQW9BZ0FoQkFOQUlBWWlBRUVFYWlFR0lBUWdBQ2dDQUNJSEtBSUFUdzBBQ3dOQUlBUWdCVUVFYXlJRktBSUFJZ2tvQWdCSkRRQUxJQUFnQlU4RWYwRUVCU0FBSUFrMkFnQWdCU0FITmdJQURBRUxDd3NoQlNBQUlRTWdCVUVDYXc0REFnQUJBQXNMQ3dzTElRRUJmd05BSUFBRVFDQUJRUUZxSVFFZ0FFRUJheUFBY1NFQURBRUxDeUFCQ3hzQkFYOUJBU0VCSUFCQjJ3QnJRUVJKSUFCQnRRSnJRUVJKY2dzYUFRRi9JQUF2QVI1QkRFWUVmeUFBS0FJZ0VORUZCVUVBQ3dzZkFDQUJCRUFnQUNBQktBSUFFTmdOSUFBZ0FTZ0NCQkRZRFNBQkVCOExDeDhBSUFFRVFDQUFJQUVvQWdBUTJRMGdBQ0FCS0FJRUVOa05JQUVRSHdzTHp3Z0NDbjhCZmdKQUEwQWdBQ0VIQWtBRFFDQUVSUTBEQWtBZ0F5QUdUQ0FFSUFaTWNrVUVRQ0FISVFBRFFDQURSUTBHSUFFb0FnUWdBQ2dDQkVrTkFpQURRUUZySVFNZ0FFRUlhaUVBREFBTEFBc2dBeUFFVEEwQ0lBRWhDQ0FGSVFBRFFDQUNJQWhHQkVBRFFDQUFJQVZHRFFjZ0FTQUhSZ1JBQTBBZ0FDQUZSZzBKSUFKQkNHc2lBaUFBUVFocklnQXBBZ0EzQWdBTUFBc0FCU0FDUVFocklnSWdBVUVJYXlJRElBQkJDR3NpQkNBRUtBSUVJQU1vQWdSSklnWWJLUUlBTndJQUlBQWdCQ0FHR3lFQUlBTWdBU0FHR3lFQkRBRUxBQXNBQlNBQUlBZ3BBZ0EzQWdBZ0FFRUlhaUVBSUFoQkNHb2hDQXdCQ3dBTEFBc0NRQ0FESUFSSUJFQWdBU0FBYTBFRGRTRUhJQUVnQkVFQ2JTSU1RUU4wYWlJS0tBSUVJUXNnQUNFSkEwQWdCd1JBSUFkQkFYWWlDQ0FISUFoQmYzTnFJQXNnQ1NBSVFRTjBhaUlJS0FJRVNTSU5HeUVISUFrZ0NFRUlhaUFOR3lFSkRBRUxDeUFKSUFCclFRTjFJUTBNQVFzZ0EwRUJSZ1JBSUFBcEFnQWhFU0FBSUFFcEFnQTNBZ0FnQVNBUk53SUFEd3NnQWlBQmEwRURkU0VISUFBZ0EwRUNiU0lOUVFOMGFpSUpLQUlFSVFzZ0FTRUtBMEFnQndSQUlBY2dCMEVCZGlJSVFYOXphaUFJSUFvZ0NFRURkR29pQ0NnQ0JDQUxTU0lNR3lFSElBaEJDR29nQ2lBTUd5RUtEQUVMQ3lBS0lBRnJRUU4xSVF3TElBUWdER3NoQkNBRElBMXJJUU1nQ2lFSEFrQWdBU0FKUmcwQUlBa2hCeUFCSUFwR0RRQWdBU0FKUVFocVJnUkFJQWtwQWdBaEVTQUpJQUVnQ2lBQmF5SUJFT2NCSUFGcUlnY2dFVGNDQUF3QkN5QUtJQUZCQ0dwR0JFQWdDa0VJYXlJQktRSUFJUkVnQ2lFSElBRWdDVWNFUUNBS0lBRWdDV3NpQVdzaUJ5QUpJQUVRNXdFYUN5QUpJQkUzQWdBTUFRc2dBU0VJSUFvZ0FXdEJBM1VpRUNFTElBRWdDV3RCQTNVaURpRVBJQTRnRUVZRVFBTkFJQUVnQjBZRVFDQUJJUWNNQXdVZ0J5a0NBQ0VSSUFjZ0NDa0NBRGNDQUNBSUlCRTNBZ0FnQ0VFSWFpRUlJQWRCQ0dvaEJ3d0JDd0FMQUFzRFFDQVBJQXNpQVc4aEN5QUJJUThnQ3cwQUN5QUpJQTlCQTNScUlRc0RmeUFKSUF0R0JIOGdDU0FRUVFOMGFnVWdDMEVJYXlJTElBNUJBM1FpQjJvaEFTQUxLUUlBSVJFZ0N5RUlBMEFnQ0NBQklnZ3BBZ0EzQWdBZ0FTQUhhaUFKSUE0Z0NpQUJhMEVEZFNJQmEwRURkR29nQVNBT1Noc2lBU0FMUncwQUN5QUlJQkUzQWdBTUFRc0xJUWNMSUF3Z0RXb2dBeUFFYWtnRVFDQUFJQWtnQnlBTklBd2dCU0FHRU5vTklBb2hBUXdCQ3dzZ0J5QUtJQUlnQXlBRUlBVWdCaERhRFNBSklRRWdEQ0VFSUEwaEF5QUhJUUlNQVFzTElBY2hBQ0FGSVFnRFFDQUFJQUZHQkVBRFFDQUZJQWhHRFFNZ0FTQUNSZ1JBSUFjZ0JTQUlJQVZyRU9jQkdnVUNRQ0FCS0FJRUlBVW9BZ1JKQkVBZ0J5QUJLUUlBTndJQUlBRkJDR29oQVF3QkN5QUhJQVVwQWdBM0FnQWdCVUVJYWlFRkN5QUhRUWhxSVFjTUFRc0xCU0FJSUFBcEFnQTNBZ0FnQ0VFSWFpRUlJQUJCQ0dvaEFBd0JDd3NMQzRNREFRSi9Jd0JCRUdzaUF5UUFBa0FnQVVVTkFDQUFLQUlBSVFRZ0FnUkFJQU1nQkRZQ0NDQURJQUFvQWdRMkFnd0NRQ0FES0FJTUlnQkZCRUFnQXlnQ0NDRUFEQUVMSUFNb0FnZ2lBaUFDS0FJQVFYOGdBSFJCZjBFZ0lBQnJJZ0FnQUNBQklBQWdBVWtiSWdScmRuRnlOZ0lBSUFNZ0FrRUVhaUlBTmdJSUlBRWdCR3NoQVFzZ0FFSC9BU0FCUVFWMlFRSjBJZ0FRZVJvZ0FVRmdjU0FCUndSQUlBTWdBeWdDQ0NBQWFpSUFOZ0lJSUFBZ0FDZ0NBRUYvUVNBZ0FVRWZjV3QyY2pZQ0FBc01BUXNnQXlBRU5nSUFJQU1nQUNnQ0JEWUNCQUpBSUFNb0FnUWlBRVVFUUNBREtBSUFJUUFNQVFzZ0F5Z0NBQ0lDSUFJb0FnQkJmeUFBZEVGL1FTQWdBR3NpQUNBQUlBRWdBQ0FCU1JzaUJHdDJjVUYvYzNFMkFnQWdBeUFDUVFScUlnQTJBZ0FnQVNBRWF5RUJDeUFBUVFBZ0FVRUZka0VDZENJQUVIa2FJQUZCWUhFZ0FVY0VRQ0FESUFNb0FnQWdBR29pQURZQ0FDQUFJQUFvQWdCQmYwRWdJQUZCSDNGcmRrRi9jM0UyQWdBTEN5QURRUkJxSkFBTG9nSUJDSDhqQUVGQWFpSUVKQUFnQkNBQ05nSThJQUZCNkFKcUlBUkJQR29RdHdnaEJpQUVRUUEyQWlnZ0JFRUFOZ0lZSUFSQ0FEY0RFQ0FFUVNocUlnSkJCSElnQkVFUWFpSUJFTEFCSVFnZ0JDQUROZ0k0SUFFUU1ob2dCRUgvLy8vL0J6WUNFQ0FFUVFBMkFnZ2dCRUlBTndNQUlBRkJCSElnQkJDd0FTRUpJQVFnQXpZQ0lDQUVFRElhSUFZb0FnUWhCU0FHUVFScUlnTWhCd05BSUFVRVFDQUhJQVVnQlVFUWFpQUNFTXdGSWdvYklRY2dCVUVFYWlBRklBb2JLQUlBSVFVTUFRc0xJQUFnQnpZQ0FDQUFJUXNnQmlnQ0JDRUNJQU1oQUFOQUlBSUVRQ0FDSUFBZ0FTQUNRUkJxRU13RklnTWJJUUFnQWlBQ1FRUnFJQU1iS0FJQUlRSU1BUXNMSUFzZ0FEWUNCQ0FKRURJYUlBZ1FNaG9nQkVGQWF5UUFDL01DQVFWL0l3QkJJR3NpQlNRQUFrQUNRQ0FBQkVBZ0JVRVFhaUFCSUFNUXlRVWdCU2dDRkNBRktBSVFhMEVDZFNFSUEwQWdCaUFJUmcwQ0lBVWdCallDRENBRklBRTJBZ2dnQUNBRlFRaHFJZ1FRdFFvaUJ5QUNLUUlBTndJQUlBUWdBeUFCSUFZUTNBMGdCU2dDQ0NFRUFrQUNRQU5BQWtBZ0JTZ0NEQ0FFUmdSQUlBTWdCU2dDRUNBR1FRSjBhaWdDQUNJRUVDQXZBUjVCSEdzT0F3RUJBd1FMSUFRb0FpQWdCa2NOQndKQUFrQUNRQUpBSUFRb0FoQkJCR3NPQkFBQkF3SURDeUFIUVFBMkFnQU1BZ3NnQjBFQk5nSUFEQUVMSUFjZ0JDZ0NGQ2dDQURZQ0JBc2dCQkJNSVFRTUFRc0xBa0FEUUFKQUlBTWdBeUFFRUNBb0FnQW9BZ2dpQkJBZ0x3RWVRUnhyRGdNQkFRQUNDd3NnQUNBRUlBSWdBeERkRFFzTUFRc2dBQ0FFSUFJZ0F4RGREUXNnQmtFQmFpRUdEQUFMQUF0QjN2NEFRYWlhQWtHL0IwSDU3UUFRQUFBTElBVkJFR29RTWhvZ0JVRWdhaVFBRHd0QjFDUkJxSm9DUWNvSFFmbnRBQkFBQUFzdEFRRi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUFRY3dCYWlBQ1FReHFFTFlLSVFBZ0FrRVFhaVFBSUFBTDNnRUJCSDhqQUVFUWF5SUVKQUFnQUNnQ0FDZ0NBQ0FFUVF4cUlBUkJEbW9RaFJkQkFTRURBa0FDUUFKQUFrQUNRQUpBSUFRdkFRNGlBa0VVYXc0U0JRVUZBd01FQkFRREJBQUVBUVFGQlFVRkFndEJBaUVDQTBBZ0FpQUFLQUlFSUFBb0FnQWlCV3RCQW5WUElnTU5CU0FCSUFVZ0FrRUNkR29vQWdBUXVnRWlCVVVOQlNBQ1FRRnFJUUlnQlNBQkVOOE5EUUFMREFRTElBQW9BZ0FvQWdoQjVTbEhJUU1NQXdzZ0FrSHVLVWNOQVFzZ0FTQUFLQUlBS0FJSUVMb0JJZ0JGRFFBZ0FDQUJFTjhOSVFNTUFRdEJBQ0VEQ3lBRVFSQnFKQUFnQXd1V0FnRUdmeU1BUVJCcklnZ2tBQUpBSUFKQkFrZ05BQ0FDUVFKclFRRjJJZ2tnQXlBQWF5SUZRUU4xU0EwQUlBQWdCVUVDZFNJRlFRRnFJZ1pCQTNScUlRUWdBaUFGUVFKcUlnVktCRUFnQkVFSWFpSUhJQVFnQVNBRUlBY1ExQUVpQnhzaEJDQUZJQVlnQnhzaEJnc2dBU0FFSUFNUTFBRU5BQ0FJSUFNcEFnQTNBd2dEUUFKQUlBTWdCQ0lGS0FJQU5nSUFJQU1nQkNnQ0JEWUNCQ0FHSUFsS0RRQWdBQ0FHUVFGMElnTkJBWElpQmtFRGRHb2hCQ0FDSUFOQkFtb2lBMG9FUUNBRVFRaHFJZ2NnQkNBQklBUWdCeERVQVNJSEd5RUVJQU1nQmlBSEd5RUdDeUFGSVFNZ0FTQUVJQWhCQ0dvUTFBRkZEUUVMQ3lBRklBZ29BZ2cyQWdBZ0JTQUlLQUlNTmdJRUN5QUlRUkJxSkFBTG9BSUJBbjhnQUNBQklBSWdBeUFGRU9JTklRWWdCU0FFSUFNUTFBRUVmeUFES0FJQUlRY2dBeUFFS0FJQU5nSUFJQVFnQnpZQ0FDQURLQUlFSVFjZ0F5QUVLQUlFTmdJRUlBUWdCellDQkNBRklBTWdBaERVQVVVRVFDQUdRUUZxRHdzZ0FpZ0NBQ0VFSUFJZ0F5Z0NBRFlDQUNBRElBUTJBZ0FnQWlnQ0JDRUVJQUlnQXlnQ0JEWUNCQ0FESUFRMkFnUWdCU0FDSUFFUTFBRkZCRUFnQmtFQ2FnOExJQUVvQWdBaEF5QUJJQUlvQWdBMkFnQWdBaUFETmdJQUlBRW9BZ1FoQXlBQklBSW9BZ1EyQWdRZ0FpQUROZ0lFSUFVZ0FTQUFFTlFCUlFSQUlBWkJBMm9QQ3lBQUtBSUFJUUlnQUNBQktBSUFOZ0lBSUFFZ0FqWUNBQ0FBS0FJRUlRSWdBQ0FCS0FJRU5nSUVJQUVnQWpZQ0JDQUdRUVJxQlNBR0N3dmJBUUVDZnlBQUlBRWdBaUFFRUtjSElRVWdCQ0FESUFJUTFBRUVmeUFDS0FJQUlRWWdBaUFES0FJQU5nSUFJQU1nQmpZQ0FDQUNLQUlFSVFZZ0FpQURLQUlFTmdJRUlBTWdCallDQkNBRUlBSWdBUkRVQVVVRVFDQUZRUUZxRHdzZ0FTZ0NBQ0VESUFFZ0FpZ0NBRFlDQUNBQ0lBTTJBZ0FnQVNnQ0JDRURJQUVnQWlnQ0JEWUNCQ0FDSUFNMkFnUWdCQ0FCSUFBUTFBRkZCRUFnQlVFQ2FnOExJQUFvQWdBaEFpQUFJQUVvQWdBMkFnQWdBU0FDTmdJQUlBQW9BZ1FoQWlBQUlBRW9BZ1EyQWdRZ0FTQUNOZ0lFSUFWQkEyb0ZJQVVMQzg0TEFRbC9BMEFnQVVFRWF5RU1JQUZCQ0dzaENBTkFJQUFoQkFOQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUlBRWdCR3NpQlVFRGRTSUFEZ1lJQ0FBRUFRSURDeUFDSUFGQkNHc2lBaUFFRU5RQlJRMEhJQVFvQWdBaEFDQUVJQUlvQWdBMkFnQWdBaUFBTmdJQUlBUW9BZ1FoQWlBRUlBRkJCR3NpQUNnQ0FEWUNCQ0FBSUFJMkFnQVBDeUFFSUFSQkNHb2dCRUVRYWlBQlFRaHJJQUlRNGcwYUR3c2dCQ0FFUVFocUlBUkJFR29nQkVFWWFpQUJRUWhySUFJUTRRMGFEd3NnQlVFM1RBUkFJQUVoQlNNQVFSQnJJZ2drQUNBRUlBUkJDR29nQkVFUWFpSUJJQUlpQnhDbkJ4b2dCRUVZYWlFQ0EwQWdBaUFGUndSQUlBY2dBaUFCRU5RQkJFQWdDQ0FDS1FJQU53TUlJQUloQXdOQUFrQWdBeUFCSWdBb0FnQTJBZ0FnQXlBQUtBSUVOZ0lFSUFBZ0JFWUVRQ0FFSVFBTUFRc2dBQ0VESUFjZ0NFRUlhaUFBUVFocklnRVExQUVOQVFzTElBQWdDQ2dDQ0RZQ0FDQUFJQWdvQWd3MkFnUUxJQUlpQVVFSWFpRUNEQUVMQ3lBSVFSQnFKQUFQQ3lBRFJRUkFBa0FnQVNBRVJnMEFBa0FnQVNBRWF5SUFRUWxJRFFBZ0FFRURkU0lBUVFKclFRRjJJUU1EUUNBRFFRQklEUUVnQkNBQ0lBQWdCQ0FEUVFOMGFoRGdEU0FEUVFGcklRTU1BQXNBQ3lBQklBUnJRUU4xSVFVZ0FTRUFBMEFnQUNBQlJnUkFJQUVnQkd0QkEzVWhCUU5BSUFWQkFVb0VRQ0FGUVFKT0JFQWdCQ2dDQUNFQUlBUWdBVUVJYXlJREtBSUFOZ0lBSUFNZ0FEWUNBQ0FFS0FJRUlRQWdCQ0FES0FJRU5nSUVJQU1nQURZQ0JDQUVJQUlnQlVFQmF5QUVFT0FOQ3lBRlFRRnJJUVVnQVVFSWF5RUJEQUVMQ3d3Q0N5QUNJQUFnQkJEVUFRUkFJQUFvQWdBaEF5QUFJQVFvQWdBMkFnQWdCQ0FETmdJQUlBQW9BZ1FoQXlBQUlBUW9BZ1EyQWdRZ0JDQUROZ0lFSUFRZ0FpQUZJQVFRNEEwTElBQkJDR29oQUF3QUN3QUxEd3NnQkNBQVFRSjBRWGh4YWlFR0FuOGdCVUc1UGs4RVFDQUVJQVFnQUVFQmRFRjRjU0lBYWlBR0lBQWdCbW9nQ0NBQ0VPRU5EQUVMSUFRZ0JpQUlJQUlRcHdjTElRa2dBMEVCYXlFRElBZ2hBQ0FDSUFRZ0JoRFVBVVVFUUFOQUlBQWlCVUVJYXlJQUlBUkdCRUFnQkVFSWFpRUdJQUlnQkNBSUVOUUJEUVVEUUNBR0lBaEdEUWdnQWlBRUlBWVExQUVFUUNBR0tBSUFJUUFnQmlBSUtBSUFOZ0lBSUFnZ0FEWUNBQ0FHS0FJRUlRQWdCaUFNS0FJQU5nSUVJQXdnQURZQ0FDQUdRUWhxSVFZTUJ3VWdCa0VJYWlFR0RBRUxBQXNBQ3lBQ0lBQWdCaERVQVVVTkFBc2dCQ2dDQUNFSElBUWdBQ2dDQURZQ0FDQUFJQWMyQWdBZ0JDZ0NCQ0VISUFRZ0JVRUVheUlGS0FJQU5nSUVJQVVnQnpZQ0FDQUpRUUZxSVFrTElBUkJDR29pQlNBQVR3MEJBMEFnQlNJSFFRaHFJUVVnQWlBSElBWVExQUVOQUFOQUlBSWdBQ0lLUVFocklnQWdCaERVQVVVTkFBc2dBQ0FIU1FSQUlBY2hCUXdEQlNBSEtBSUFJUXNnQnlBQUtBSUFOZ0lBSUFBZ0N6WUNBQ0FIS0FJRUlRc2dCeUFLUVFScklnb29BZ0EyQWdRZ0NpQUxOZ0lBSUFBZ0JpQUdJQWRHR3lFR0lBbEJBV29oQ1F3QkN3QUxBQXNnQkNBRVFRaHFJQUZCQ0dzZ0FoQ25CeG9NQXdzQ1FDQUZJQVpHRFFBZ0FpQUdJQVVRMUFGRkRRQWdCU2dDQUNFQUlBVWdCaWdDQURZQ0FDQUdJQUEyQWdBZ0JTZ0NCQ0VBSUFVZ0JpZ0NCRFlDQkNBR0lBQTJBZ1FnQ1VFQmFpRUpDeUFKUlFSQUlBUWdCU0FDRUpBV0lRY2dCVUVJYWlJQUlBRWdBaENRRmdSQUlBVWhBU0FFSVFBZ0IwVU5Cd3dFQzBFQ0lBY05BaG9MSUFVZ0JHc2dBU0FGYTBnRVFDQUVJQVVnQWlBREVPTU5JQVZCQ0dvaEFBd0ZDeUFGUVFocUlBRWdBaUFERU9NTklBVWhBU0FFSVFBTUJRc2dCaUFJSWdWR0RRRURmeUFHSWdCQkNHb2hCaUFDSUFRZ0FCRFVBVVVOQUFOQUlBSWdCQ0FGSWdkQkNHc2lCUkRVQVEwQUN5QUFJQVZQQkg5QkJBVWdBQ2dDQUNFS0lBQWdCU2dDQURZQ0FDQUZJQW8yQWdBZ0FDZ0NCQ0VLSUFBZ0IwRUVheUlBS0FJQU5nSUVJQUFnQ2pZQ0FBd0JDd3NMSVFVZ0FDRUVJQVZCQW1zT0F3SUFBUUFMQ3dzTEN3a0FJQUJCQ0JDUEV3c3RBUUYvSXdCQkVHc2lBaVFBSUFJZ0FTa0NBRGNEQ0NBQUlBSW9BZ2dnQWlnQ0RCRDlGU0FDUVJCcUpBQUxId0FnQVFSQUlBQWdBU2dDQUJEbURTQUFJQUVvQWdRUTVnMGdBUkFmQ3dzbUFDQUJCRUFnQUNBQktBSUFFT2NOSUFBZ0FTZ0NCQkRuRFNBQlFSUnFFRThnQVJBZkN3czhBUUovSUFFZ0FrY0VRQ0FBS0FJRUlnUWdBU0FDSUFGcmFpSUNheUVESUFJZ0JFY0VRQ0FCSUFJZ0F4RG5BUm9MSUFBZ0FTQURhallDQkFzTGl3RUJBMzhqQUVFUWF5SURKQUFnQVFKL0lBQWdBQ0FCUmcwQUdnTkFJQUVnQVNBQUlnSkJCR29pQUVZTkFSb2dBaWdDQUNBQ0tBSUVSdzBBQ3lBQ0N5SUNSd1JBSUFKQkJHb2hBQU5BSUFFZ0FFRUVhaUlBUndSQUlBQW9BZ0FpQkNBQ0tBSUFSZzBCSUFJZ0JEWUNCQ0FDUVFScUlRSU1BUXNMSUFKQkJHb2hBUXNnQTBFUWFpUUFJQUVMTUFFQmZ5QUFLQUlFSWdJZ0FDZ0NDRWtFUUNBQ0lBRXBBZ0EzQWdBZ0FDQUNRUWhxTmdJRUR3c2dBQ0FCRUpFV0M5Y0dBUXAvSXdCQlFHb2lCQ1FBSUFFb0FnQWhCU0FCS0FJRUlRWWdCRUlBTndNd0lBUkNBRGNES0NBRVFZQ0FnUHdETmdJNElBWWdCV3RCQW5VaENRTkFJQVlnQld0QkFuVWdBMDBFUUNBRVFTaHFJZ01nQmtFRWF4Q01BeWdDQkNFRklBTWdBU2dDQkVFRWF4Q01BeUFGTmdJQUEwQWdBU2dDQkVFRWF5RUlRUUFoQ3dOQUFrQWdBU2dDQUNBSVJnUkFJQXNOQXlBQVFRQTJBZ2dnQUVJQU53SUFJQVFvQWpBaEF3TkFJQU5GRFFJZ0F5Z0NDQ0VDSUFRZ0FTZ0NBQ0FES0FJUUlBTW9BZ3dpQlNBRklBbEdHMEVDZEdvb0FnQTJBaFFnQkNBQ05nSVFJQUFnQkVFUWFoRHFEU0FES0FJQUlRTU1BQXNBQ3lBQ0lBaEJCR3NpQ0NnQ0FCQ0tBaUlHS0FJRUlRd2dCaWdDQUNFRElBUWdDVFlDSkNBRUlBUkJLR28yQWlBZ0JDQUVLUU1nTndNSUFuOGdCRUVJYWlFRkEwQUNRQ0FESUF4SEJIOGdBeWdDQUNFS0l3QkJFR3NpQnlRQUlBY2dDallDRENBRktBSUFJQWRCREdvUTV3UUVmeUFGS0FJQUlBZEJER29RakFNb0FnQWdCU2dDQkVjRlFRQUxJUW9nQjBFUWFpUUFJQXBGRFFFZ0F3VWdEQXNNQWdzZ0EwRUVhaUVEREFBTEFBc2lBeUFHS0FJRVJnMEJJQVFnQXlnQ0FEWUNFQ0FFUVNocUlBUkJFR29RakFNaEF5QUdLQUlFSVFjZ0JpZ0NBQ0VHSUFNb0FnUWhBd05BSUFNaEJTQUdJQWRHQkVBZ0JFRW9haUFJRUl3REtBSUFJQVZHRFFNZ0JFRW9haUFJRUl3RElBVTJBZ0JCQVNFTERBTUZJQVFnQmlnQ0FDSUROZ0ljQWtBQ1FDQURJQVFvQWhCR0RRQWdCRUVvYWlBRVFSeHFFT2NFUlEwQUlBUkJLR29nQkVFY2FoQ01BeWdDQUNBSlJnMEFJQVJCS0dvZ0JFRWNhaENNQXlnQ0JDRURBMEFnQXlBRlJnMENBMEFnQXlBRlNRUkFJQVJCS0dvZ0FTZ0NBQ0FEUVFKMGFoQ01BeWdDQUNFRERBRUxDd05BSUFNZ0JVME5BU0FFUVNocUlBRW9BZ0FnQlVFQ2RHb1FqQU1vQWdBaEJRd0FDd0FMQUFzZ0JTRURDeUFHUVFScUlRWU1BUXNBQ3dBTEN3c2dBQ2dDQUNFQklBQW9BZ1FoQWlNQVFSQnJJZ0FrQUNBQUlBUkJLR29pQXpZQ0NDQUJJQUlnQUVFSWFpQUNJQUZyUVFOMUVOZ0tRUUYwRU9NTklBQkJFR29rQUNBREVFOGdCRUZBYXlRQUJTQUVRU2hxSUFVZ0EwRUNkR29RakFNaUJTQUROZ0lFSUFVZ0NUWUNBQ0FEUVFGcUlRTWdBU2dDQUNFRklBRW9BZ1FoQmd3QkN3c0xGd0FnQUVFWWFoQVBHaUFBUVF4cUVBOGFJQUFRRHhvTEpnQWdBQ2dDQUNBQkVKNEJJQUFvQWdRZ0FVRU1haENlQVNBQUtBSUlJQUZCR0dvUW5nRUx3QUlCQzM4akFFSHdBV3NpQlNRQUlBVkI0QUZxSWdjUVZTQUZRZEFCYWlJSUVGVWdCVUhBQVdvaUNSQlZJQVZCbUFGcUlnWWdBU2dDQUJEdkRTQUZJQWsyQXBBQklBVWdDRFlDakFFZ0JTQUhOZ0tJQVNBRlFZZ0JhaUlCSUFZUTdRMGdCaERzRFNBRlFRaHFJZ3BCc3NNS0lBY1F4QUVnQlVFWWFpSUxJQXBCek1JS0VDMGdCVUVvYWlJTUlBc2dDQkJPSUFWQk9Hb2lEU0FNUWZmd0RCQXRJQVZCeUFCcUlnNGdEU0FDRUU0Z0JVSFlBR29pQWlBT1FmZndEQkF0SUFWQjZBQnFJZzhnQWlBRUVFNGdCVUg0QUdvaUJDQVBRYXpEQ2hBdElBRWdCQ0FKRUU0Z0JpQUJRZmZ3REJBdElBQWdCaUFERUU0Z0JoQVBHaUFCRUE4YUlBUVFEeG9nRHhBUEdpQUNFQThhSUE0UUR4b2dEUkFQR2lBTUVBOGFJQXNRRHhvZ0NoQVBHaUFKRUE4YUlBZ1FEeG9nQnhBUEdpQUZRZkFCYWlRQUM2b0JBUU4vSXdCQk1Hc2lBaVFBSUFKQklHb1FWU0FDUVJCcUVGVWdBaEJWSUFGQkFXc2lBMEVFVHdSQVFZYW9DVUdEcXdKQnZRTkJqYnNCRUFBQUN5QUNRU0JxSWdFZ0EwRUNkQ0lEUWNDRklHb29BZ0FRMGdFZ0FrRVFhaUlFSUFOQjBJVWdhaWdDQUJEU0FTQUNJQU5CNElVZ2FpZ0NBQkRTQVNBQUlBRVFWQ0lBUVF4cUlBUVFWQm9nQUVFWWFpQUNFRlFhSUFJUUR4b2dCQkFQR2lBQkVBOGFJQUpCTUdva0FBc25BQ0FCQkVBZ0FDQUJLQUlBRVBBTklBQWdBU2dDQkJEd0RTQUJRUlJxRU1NS0lBRVFId3NMRUFBZ0FDQUJRZXZSREVIaElSQzFBd3NRQUNBQUlBRkJ4OW9NUWQwaEVMVURDeXdCQVg4akFFRkFhaUlESkFBZ0FDQUJJQU5CSUdvZ0F5QUNFRllRVmhET0FpRUFJQU5CUUdza0FDQUFDN0FCQVFWL0l3QkJFR3NpQnlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQmpZQ0RDQUhJQVkyQWdnakFFRVFheUlHSkFBZ0FFR01BV29pQ0JDM0JDRUpJQVFvQWdBaEJDQURLQUlBSVFNZ0FpZ0NBQ0VDSUFjb0FnZ2hDaUFBS0FJSUlRQWdCaUFGUVJCcU5nSUlJQVlnQlNnQ0VDQUZSem9BRENBSUlBa2dBQ0FLSUFFZ0FpQURJQVFnQmtFSWFoQ0tHQ0lBRUNnZ0NDQUlLQUlZUVFGcU5nSVlJQVpCRUdva0FDQUhRUkJxSkFBZ0FBc1ZBQ0FBSUFGQnVMb01RUU5CNkNCQjN5QVFpQk1MTVFFQmZ3TkFJQUFvQWdRZ0FVMEVRQ0FBUVFBMkFnUUZJQUFvQWdBZ0FVRWNiR29RckFjZ0FVRUJhaUVCREFFTEN3dTRBZ0VDZnlNQVFhQUJheUlHSkFBQ1FDQUFLQUlBSUFVUWpnRkZCRUFnQmtHUUFXb2lBQ0FCSUFJUXN3SWdCa0VJYWlJQklBQkJ2OFFIRUMwZ0JDQUJFSWtDSVFNZ0FSQVBHaUFBRUE4YURBRUxJQUFvQWdBZ0JSQkZJUWNnQUNnQ0FDQUZFRVVnQTBjRVFDQUdRUWhxRU00QklRQWdCa0dRQVdvaUF5QUJJQUlRc3dJZ0FDQURFQkpCdnVVSkVBNGdCeEFoUWFXckJ4QU9HaUFERUE4YUlBTWdBRUVFYWhCQ0lBUWdBeENKQWlFRElBWkJrQUZxRUE4YUlBQVF1d0VhREFFTFFRQWhBeUFBS0FJQUlBVVFQaUlGUVNCR0RRQWdCa0VJYWhET0FTRUFJQVpCa0FGcUlnTWdBU0FDRUxNQ0lBQWdBeEFTUWYybUNoQU9JQVVRSVVIOGx3Z1FEaG9nQXhBUEdpQURJQUJCQkdvUVFpQUVJQU1RaVFJaEF5QUdRWkFCYWhBUEdpQUFFTHNCR2dzZ0JrR2dBV29rQUNBREN3OEFJQUFROWcwZ0FDZ0NBQkNJQkFzT0FDQUFJQUVRd0FwQkFUb0FKQXR6QVFKL0l3QkJJR3NpQkNRQUlBUkJBRFlDSEFKQUlBQW9BZ0FnQVNBQ0lBUkJIR29RdlFNaUJRMEFRUUFoQlNBQUtBSUFJQVFvQWh3UXZ3SU5BQ0FFSUFFZ0FoQ3pBaUFFUVJCcUlnQWdCRUdQemdjUUxTQURJQUFRaVFJaEJTQUFFQThhSUFRUUR4b0xJQVJCSUdva0FDQUZDeXNBSUFCQkFEb0FKQ0FBUVFBNkFBQWdBUzBBSkFSQUlBQWdBUkQ1RFFzZ0FDQUJLUUlvTndJb0lBQUxoZ0VCQm44Z0FDZ0NBQ0VDSUFBb0FnUWhCQ0FCS0FJQUlRTWdBU2dDQkNFRkl3QkJFR3NpQmlRQUlBSWhBQ0FESVFGQkFDRUNBMEFDUUNBQklBVkdEUUJCQVNFQ0lBQWdCRVlOQUNBQUtBSUFJZ01nQVNnQ0FDSUhTUTBBUVFBaEFpQURJQWRMRFFBZ0FVRUVhaUVCSUFCQkJHb2hBQXdCQ3dzZ0FpRUFJQVpCRUdva0FDQUFDekVCQVg4RFFDQUFLQUlFSUFGTkJFQWdBRUVBTmdJRUJTQUFLQUlBSUFGQk1HeHFFTXdFSUFGQkFXb2hBUXdCQ3dzTEp3QWdBUVJBSUFBZ0FTZ0NBQkQrRFNBQUlBRW9BZ1FRL2cwZ0FVRVVhaEF5R2lBQkVCOExDeWNBSUFFRVFDQUFJQUVvQWdBUS93MGdBQ0FCS0FJRUVQOE5JQUZCRkdvUThSWWdBUkFmQ3dzbkFDQUJCRUFnQUNBQktBSUFFSUFPSUFBZ0FTZ0NCQkNBRGlBQlFSQnFFRElhSUFFUUh3c0xId0FnQVFSQUlBQWdBU2dDQUJDQkRpQUFJQUVvQWdRUWdRNGdBUkFmQ3dzUEFDQUFFUDBOSUFBb0FnQVFpQVFMREFBZ0FDQUFLQUlFRU1RS0N3NEFJQUJCREdvUU1ob2dBQkFQQzFRQkEzOGpBRUd3QVdzaUFpUUFJQUlnQWtFZ2FoQ0lBeUlETmdJTUlBSkJtUEFmTmdJSUlBSWdBa0VJYWlJRU5nSVlJQUVnQkJEV0NpQUVFQllnQUNBRFFReHFFRUlnQXhDN0Fob2dBa0d3QVdva0FBdURBUUVCZnlBQkx3RUdRUXBIQkVBZ0FFSHk3UUlRRkJvUEN3SkFBa0FnQVM4QkdFRUJSZ1JBSUFFb0FoUWlBaWdDQkVFS1J3MEJJQUV2QVFRZ0FpOEJBRTBOQWlBQUlBRkJBQkRNQ2c4TFFjaUtCMEdobkFKQkgwSC92UU1RQUFBTFFiYlRCa0dobkFKQklrSC92UU1RQUFBTFFlTG5BRUdobkFKQkkwSC92UU1RQUFBTGpnRUJBWDlCZ0lBRUlRRUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBRGhzSkNRQUpBUWtKQ1FrSkFRa0pDUWtKQVFJQ0F3UUVCUVVHQmdjSUMwR0FnZ1FQQzBHQWhBUVBDMEdBaGdRUEMwRzN0Z2xCejVjQ1FmQUFRZm9wRUFBQUMwR0FpQVFQQzBHQWlnUVBDMEdBakFRUEMwR0t0Z2xCejVjQ1Fmd0FRZm9wRUFBQUMwRUFJUUVMSUFFTEp3RUJmeUFBS0FJQUlnRUVRQ0FBSUFFMkFnUWdBUkFmSUFCQkFEWUNDQ0FBUWdBM0FnQUxDeGdCQVg5QkFTRUJJQUJCenlKR0lBQkJ6UUpyUVNKSmNndGJBUUYvSUFCQitRRnJRUU5QQkg4Z0FFSDlBV3RCQWs4RWYwRUJJUUVDUUFKQUFrQWdBRUg4QVdzT0JBSUJBUUlBQ3lBQVFjQWlSaUFBUWVBaWEwRUNTWElnQUVHdUtVWnlEUUVMUVFBaEFRc2dBUVZCQVFzRlFRRUxDeVVBQW44Z0FFRTNheUlBUVJ4TkJFQkJBVUVCSUFCMFFiR1lnSUFCY1EwQkdndEJBQXNMT2dFQmZ5QUFRUzVHSUFCQnFRRkdjaUFBUVRkcklnRkJIRTFCQUVFQklBRjBRZlc0Z0lBQmNSdHlJQUJCOVFGR2NrVUVRRUVBRHd0QkFRdWdBZ0VHZjBIUXNoTWlCVUhBQTJvaEJFSHdBQ0VEQTBBZ0JDRUdJQU5GQkVCQkFBOExJQVVnQTBFQmRpSUNRUUowYWlJRUtBSUFJZ2NnQUJDaUFrRUFTQVJBSUFSQkJHb2hCU0FESUFKQmYzTnFJUU1nQmlFRURBRUxJQUloQXlBQUlBY1FvZ0pCQUVnTkFBc0RRQ0FDQkVBZ0FpQUNRUUYySWdOQmYzTnFJQU1nQlNBRFFRSjBhaUlES0FJQUlBQVFvZ0pCQUVnaUJ4c2hBaUFEUVFScUlBVWdCeHNoQlF3QkN3c2dCaUFFUVFScUlnUnJRUUoxSVFJRFFDQUNCRUFnQWtFQmRpSUdJQUlnQmtGL2Myb2dBQ0FFSUFaQkFuUnFJZ1lvQWdBUW9nSkJBRWdpQXhzaEFpQUVJQVpCQkdvZ0F4c2hCQXdCQ3d0QkFDRUNJQVZCa0xZVFJpQUVJQVZHY2dSL1FRQUZJQUVnQlVHZ2dnWnJLQUlBTmdJQVFRRUxDeTBCQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUpCRkdvUW1nc2dBaENaQ3dzZ0FoQWZDd3NMQUNBQVFmWDVBaENPRXd0TkFRRi9JQUJCOEFCcUVESWFJQUJCNUFCcUVESWFJQUJCMkFCcUVESWFJQUJCeEFCcUVFOGdBQ2dDT0JDeEJ5QUFLQUl3SVFFZ0FFRUFOZ0l3SUFFRVFDQUJFQjhMSUFCQkhHb1FUd3NUQUNBQUlBRWdBU0FDUVFKMGFpQURFT2dPQzhjQkFRTi9Ba0FDUUFKQUlBRWdBRUVFYWlJRlJ3UkFJQVFvQWdBaUJpQUJLQUlRSWdkUERRRUxJQUVoQXlBQklBQW9BZ0JIQkVBZ0FSRFdGeUlES0FJUUlBUW9BZ0JQRFFJTElBRW9BZ0JGQkVBZ0FpQUJOZ0lBSUFFUEN5QUNJQU0yQWdBZ0EwRUVhZzhMSUFZZ0IwME5BU0FGSUFFUW54Y2lBMGNFUUNBRUtBSUFJQU1vQWhCUERRRUxJQUVvQWdSRkJFQWdBaUFCTmdJQUlBRkJCR29QQ3lBQ0lBTTJBZ0FnQXc4TElBQWdBaUFFRUswR0R3c2dBaUFCTmdJQUlBTWdBVFlDQUNBREM5c0JBUU4vSUFBZ0FTQUNJQU1RbEE0aEJTQUVLQUlBSWdZb0FnQW9BZ0FnQXlnQ0FDSUhLQUlBS0FJQVNRUi9JQU1nQmpZQ0FDQUVJQWMyQWdBZ0F5Z0NBQ0lFS0FJQUtBSUFJQUlvQWdBaUJpZ0NBQ2dDQUU4RVFDQUZRUUZxRHdzZ0FpQUVOZ0lBSUFNZ0JqWUNBQ0FDS0FJQUlnTW9BZ0FvQWdBZ0FTZ0NBQ0lFS0FJQUtBSUFUd1JBSUFWQkFtb1BDeUFCSUFNMkFnQWdBaUFFTmdJQUlBRW9BZ0FpQWlnQ0FDZ0NBQ0FBS0FJQUlnTW9BZ0FvQWdCUEJFQWdCVUVEYWc4TElBQWdBallDQUNBQklBTTJBZ0FnQlVFRWFnVWdCUXNMcHdFQkEzOGdBQ0FCSUFJUXRnY2hCQ0FES0FJQUlnVW9BZ0FvQWdBZ0FpZ0NBQ0lHS0FJQUtBSUFTUVIvSUFJZ0JUWUNBQ0FESUFZMkFnQWdBaWdDQUNJREtBSUFLQUlBSUFFb0FnQWlCU2dDQUNnQ0FFOEVRQ0FFUVFGcUR3c2dBU0FETmdJQUlBSWdCVFlDQUNBQktBSUFJZ0lvQWdBb0FnQWdBQ2dDQUNJREtBSUFLQUlBVHdSQUlBUkJBbW9QQ3lBQUlBSTJBZ0FnQVNBRE5nSUFJQVJCQTJvRklBUUxDL1lJQVFsL0EwQWdBVUVFYXlFSEEwQWdBQ0VEQTBBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCSUFOcklnWkJBblVpQUE0R0JnWUFCQUVDQXdzZ0FVRUVheUlBS0FJQUlnRW9BZ0FvQWdBZ0F5Z0NBQ0lDS0FJQUtBSUFUdzBGSUFNZ0FUWUNBQ0FBSUFJMkFnQVBDeUFESUFOQkJHb2dBMEVJYWlBQlFRUnJFSlFPR2c4TElBTWdBMEVFYWlBRFFRaHFJQU5CREdvZ0FVRUVheENURGhvUEN5QUdRZnNBVEFSQUlBTWdBMEVFYWlBRFFRaHFJZ1FRdGdjYUlBTkJER29oQUFOQUlBQWlBaUFCUmcwRUlBSWlCU2dDQUNJSEtBSUFLQUlBSUFRb0FnQWlCaWdDQUNnQ0FFa0VRQU5BQWtBZ0JTQUdOZ0lBSUFNZ0JDSUFSZ1JBSUFNaEFBd0JDeUFBSVFVZ0J5Z0NBQ2dDQUNBQVFRUnJJZ1FvQWdBaUJpZ0NBQ2dDQUVrTkFRc0xJQUFnQnpZQ0FBc2dBa0VFYWlFQUlBSWhCQXdBQ3dBTElBSU5BU0FCSUFOR0RRSWdBRUVDYTBFQmRpRUVBMEFnQkVFQVNBUkFBMEFnQUVFQ1NBMEZJQU1vQWdBaEFpQURJQUZCQkdzaUFTZ0NBRFlDQUNBQklBSTJBZ0FnQXlBQVFRRnJJZ0FnQXhDaEZ3d0FDd0FGSUFNZ0FDQURJQVJCQW5ScUVLRVhJQVJCQVdzaEJBd0JDd0FMQUFzZ0F5QURRUVJxSUFGQkJHc1F0Z2NhREFFTElBTWdBRUVCZEVGOGNXb2hCUUovSUFaQm5SOVBCRUFnQXlBRElBQkJmSEVpQUdvZ0JTQUFJQVZxSUFjUWt3NE1BUXNnQXlBRklBY1F0Z2NMSVFnZ0FrRUJheUVDSUFjaEFBSi9Ba0FDUUNBREtBSUFJZ1FvQWdBb0FnQWlCaUFGS0FJQUtBSUFLQUlBSWdsSkJFQU1BUXNEUUNBQVFRUnJJZ0FnQTBZRVFDQURRUVJxSVFVZ0JpQUhLQUlBSWdBb0FnQW9BZ0JKRFFNRFFDQUZJQWRHRFFZZ0JTZ0NBQ0lFS0FJQUtBSUFJQVpMQkVBZ0JTQUFOZ0lBSUFjZ0JEWUNBQ0FGUVFScUlRVU1CUVVnQlVFRWFpRUZEQUVMQUFzQUN5QUFLQUlBSWdvb0FnQW9BZ0FnQ1U4TkFBc2dBeUFLTmdJQUlBQWdCRFlDQUNBSVFRRnFJUWdMSUFBZ0EwRUVhaUlHU3dSQUEzOGdCU2dDQUNnQ0FDZ0NBQ0VKQTBBZ0JpSUVRUVJxSVFZZ0JDZ0NBQ0lLS0FJQUtBSUFJQWxKRFFBTEEwQWdBRUVFYXlJQUtBSUFJZ3NvQWdBb0FnQWdDVThOQUFzZ0FDQUVTUVIvSUFRRklBUWdDellDQUNBQUlBbzJBZ0FnQUNBRklBUWdCVVliSVFVZ0NFRUJhaUVJREFFTEN5RUdDd0pBSUFVZ0JrWU5BQ0FGS0FJQUlnQW9BZ0FvQWdBZ0JpZ0NBQ0lFS0FJQUtBSUFUdzBBSUFZZ0FEWUNBQ0FGSUFRMkFnQWdDRUVCYWlFSUN5QUlSUVJBSUFNZ0JoQ2dGeUVGSUFaQkJHb2lBQ0FCRUtBWEJFQWdCaUVCSUFNaEFDQUZSUTBIREFRTFFRSWdCUTBDR2dzZ0JpQURheUFCSUFaclNBUkFJQU1nQmlBQ0VKVU9JQVpCQkdvaEFBd0ZDeUFHUVFScUlBRWdBaENWRGlBR0lRRWdBeUVBREFVTElBVWdCeUlFUmcwQkEzOGdBeWdDQUNnQ0FDZ0NBQ0VHQTBBZ0JTSUFRUVJxSVFVZ0JpQUFLQUlBSWdnb0FnQW9BZ0JQRFFBTEEwQWdCaUFFUVFScklnUW9BZ0FpQ1NnQ0FDZ0NBRWtOQUFzZ0FDQUVUd1IvUVFRRklBQWdDVFlDQUNBRUlBZzJBZ0FNQVFzTEN5RUVJQUFoQXlBRVFRSnJEZ01DQUFFQUN3c0xDd3N1QUNBQVFnQTNBZ1FnQUNBQ05nSVlJQUFnQVRZQ0ZDQUFRb0NBZ0lEUUFUY0NEQ0FBUWZpYUV6WUNBQ0FBQ3ljQUlBQW9BaFFnQUNnQ0dDQUJRUVowSUFGQkFuWnFha0hIaktLT0Jtc2dBWE1nQWhETkJBc1ZBQ0FBUVlpdUV6WUNBQ0FBUVN4cUVMc0dJQUFMUmdFQmZ5QUJLQUlFSVFJZ0FTZ0NBQ0VCQTM4Z0FTQUNSZ1IvSUFBRklBRW9BZ0FnQUVFR2RDQUFRUUoyYW1wQng0eWlqZ1pySUFCeklRQWdBVUVFYWlFQkRBRUxDd3NkQUNBQUlBRkIrUC8vL3dkQkFrSC8vLy8vQVVHQWdJQ0FBaERZQ1FzdkFDQUFLQUlBSWdCQkFDQUJLQUlBSWdFYlJRUkFRWU90QVVITnJRTkJPa0hjOFFnUUFBQUxJQUFnQVJDK0J3c2NBQ0FBSUFFb0FnQTJBZ0FnQUVFRWFpQUJRUVJxRUxrSEdpQUFDeUFBUWNBQUVCVWdBQ2dDQUNBQktBSUFJQUlvQWdBZ0F5Z0NBQ0FFRUtzT0M0b0JBUUovSUFBb0FnUWdBQ2dDQ0VrRVFDQUFJQUFvQWdRZ0FSQ2xBa0VNYWpZQ0JBOExJd0JCSUdzaUF5UUFJQU5CQ0dvZ0FDQUFLQUlFSUFBb0FnQnJRUXh0UVFGcUVKb1BJQUFvQWdRZ0FDZ0NBR3RCREcwZ0FFRUlhaENaRHlJQ0tBSUlJQUVRcFFJYUlBSWdBaWdDQ0VFTWFqWUNDQ0FBSUFJUStSZ2dBaEQ0R0NBRFFTQnFKQUFML3dnQ0RYOENmU01BUVNCcklna2tBQ0FKSUFFMkFoQWdDVUVRYWlFRkl3QkJFR3NpQnlRQUlBRVF2aGNoQ0NBSkFuOENRQ0FBS0FJRUlnSkZEUUFnQUNnQ0FBSi9JQUpCQVdzZ0NIRWdBbWtpQmtFQlRRMEFHaUFJSUFJZ0NFc05BQm9nQ0NBQ2NBc2lBMEVDZEdvb0FnQWlCRVVOQUNBQ1FRRnJJUW9nQmtFQlN5RUxBMEFnQkNnQ0FDSUVSUTBCSUFnZ0JDZ0NCQ0lHUndSQUFrQWdDMFVFUUNBR0lBcHhJUVlNQVFzZ0FpQUdTdzBBSUFZZ0FuQWhCZ3NnQXlBR1J3MENDeUFFUVFocUlBRVFtdzVGRFFBTFFRQU1BUXNnQnlBQUlBZ2dCUkRpQ0FKQVFRQWdBaUFBS0FJTVFRRnFzeUlQSUFBcUFoQWlFQ0FDczVSZUd3MEFBa0FDZjBFQ0lBSWdBa0VCYTNGQkFFY2dBa0VEU1hJZ0FrRUJkSElpQVFKL0lBOGdFSldOSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRElBRWdBMHNiSWdGQkFVWU5BQm9nQVNBQklBRkJBV3R4UlEwQUdpQUJFSDhMSWdVZ0FDZ0NCQ0lCVFFSQUlBRWdCVTBOQVNBQlFRTkpJUUlDZnlBQUtBSU1zeUFBS2dJUWxZMGlEME1BQUlCUFhTQVBRd0FBQUFCZ2NRUkFJQStwREFFTFFRQUxJUU1nQVNBRklBSWdBV2xCQVV0eUJIOGdBeEIvQlNBRFFRRkJJQ0FEUVFGcloydDBJQU5CQWtrYkN5SURJQU1nQlVrYklnVk5EUUVMUVFBaEFRSkFJQVVFUUNBQUlBVVFsd01RYkNBQUlBVTJBZ1FEUUNBQklBVkdCRUFnQUNnQ0NDSUNSUTBESUFCQkNHb2hBU0FDS0FJRUlRUUNRQ0FGYVNJRFFRRk5CRUFnQkNBRlFRRnJjU0VFREFFTElBUWdCVWtOQUNBRUlBVndJUVFMSUFBb0FnQWdCRUVDZEdvZ0FUWUNBQ0FGUVFGcklRc2dBMEVCU3lFTUEwQWdBaWdDQUNJRFJRMEVJQU1vQWdRaEFRSkFJQXhGQkVBZ0FTQUxjU0VCREFFTElBRWdCVWtOQUNBQklBVndJUUVMSUFFZ0JFY0VRQ0FCUVFKMElnb2dBQ2dDQUdvaUJpZ0NBQVJBSUFOQkNHb2hEU0FESVFFRFFBSkFJQUVpQmlnQ0FDSUJSUVJBUVFBaEFRd0JDeUFOSUFGQkNHb1FtdzRoRGlBR0tBSUFJUUVnRGcwQkN3c2dBaUFCTmdJQUlBWWdBQ2dDQUNBS2FpZ0NBQ2dDQURZQ0FDQUFLQUlBSUFwcUtBSUFJQU0yQWdBTUFnc2dCaUFDTmdJQUlBRWhCQXNnQXlFQ0RBQUxBQVVnQUNnQ0FDQUJRUUowYWtFQU5nSUFJQUZCQVdvaEFRd0JDd0FMQUFzZ0FFRUFFR3dnQUVFQU5nSUVDd3NnQUNnQ0JDSUNJQUpCQVd0eFJRUkFJQUpCQVdzZ0NIRWhBd3dCQ3lBQ0lBaExCRUFnQ0NFRERBRUxJQWdnQW5BaEF3c0NRQ0FEUVFKMElnTWdBQ2dDQUdvb0FnQWlBVVVFUUNBSEtBSUFJQUFvQWdnMkFnQWdBQ0FIS0FJQU5nSUlJQUFvQWdBZ0Eyb2dBRUVJYWpZQ0FDQUhLQUlBSWdFb0FnQWlBMFVOQVNBREtBSUVJUVFDUUNBQ0lBSkJBV3NpQTNGRkJFQWdBeUFFY1NFRURBRUxJQUlnQkVzTkFDQUVJQUp3SVFRTElBQW9BZ0FnQkVFQ2RHb2dBVFlDQUF3QkN5QUhLQUlBSUFFb0FnQTJBZ0FnQVNBSEtBSUFOZ0lBQ3lBSEtBSUFJUVFnQjBFQU5nSUFJQUFnQUNnQ0RFRUJhallDRENBSEVJc0JRUUVMT2dBY0lBa2dCRFlDR0NBSFFSQnFKQUFnQ1NnQ0dDRUFJQWxCSUdva0FDQUFRUXhxQzJzQkJIOGpBRUVRYXlJQ0pBQWdBRUdrQVdvaEJDQUFRYWdCYWlFQUEwQUNRQ0FFSUFBb0FnQWlBRWNFUUNBQ0lBQVE4QmNRdndZZ0FpQUJJQUVRMGdnUW14TWhCU0FDRUE4YUlBVU5BU0FBRUdBaEF3c2dBa0VRYWlRQUlBTVBDeUFBUVFScUlRQU1BQXNBQzQ0RUFRaC9JQUJCR0dvZ0FSQ1FCQ0FBUWR3QWFpQUJFSkFFSUFCQm9BRnFJQUVRa0FRZ0FDZ0M1QUVpQWdSQUlBSWdBUkN4RGdzZ0FDZ0M2QUVpQWdSQUlBSWdBUkN4RGdzZ0FFSHNBV29nQVJDUUJDQUFRYkFDYWlBQkVKQUVJQUJCOUFKcUlBRVFrQVFnQUVHNEEyb2dBUkNRQkNBQVFmd0RhaUFCRUpBRUlBQkJ3QVJxSUFFUWtBUWdBRUdFQldvZ0FSQ1FCQ0FBUWNnRmFpQUJFSkFFSUFBb0FwQUdJUWdnQUNnQ2pBWWhBQU5BSUFBZ0NFY0VRQ0FBS0FJQUlRTWpBRUVnYXlJR0pBQWdCaUFCTmdJTUlBWkI4UE1TTmdJSUlBWWdCa0VJYWlJRU5nSVlBa0FnQXlnQ0FDSUNCRUFnQWlBRVFRRVEvZ0pGRFFFTElBTW9BZ2doQlNBREtBSUVJUUlEUUNBQ0lBVkhCRUFnQWlnQ0FDRUhJQUpCQkdvaEFpQUhJQVJCQVJEK0FnMEJEQUlMQ3dKQUlBTW9BaGdpQWkwQURDQUNSWElOQUNBRFFSQnFFUE1LSVFJRFFDQUNSUTBCSUFJb0FnUWlCUzBBRENFSElBSWdCRUVCRVA0Q0lRbEJBQ0FGSUFjYklRSWdDUTBBQ3d3QkN5QURLQUpZSVFVZ0F5Z0NWQ0VDQTBBZ0FpQUZSd1JBSUFJb0FnQWhCeUFDUVFScUlRSWdCeUFFUVFFUXVoa05BUXdDQ3dzZ0F5Z0NZQ0lDQkVBZ0FpQUVRUUVRL2dKRkRRRUxJQU1vQW1naEJTQURLQUprSVFJRFFDQUNJQVZHRFFFZ0FpZ0NBQ0VESUFKQkJHb2hBaUFESUFSQkFSRCtBZzBBQ3dzZ0JCQVdJQVpCSUdva0FDQUFRUVJxSVFBTUFRc0xDeEVBSUFCQktHb1FUeUFBUVJ4cUVESWFDeElBSUFCQnVBVkJ5Zm9EUVh4QkF4REtBUXZGQWdFR2Z5TUFRU0JySWdVa0FBSkFJQUFvQWdnaUFpQUFLQUlNUndSQUlBSWhBd3dCQ3lBQUtBSUVJZ01nQUNnQ0FDSUVTd1JBSUFJZ0Eyc2hCaUFESUFNZ0JHdEJBblZCQVdwQmZtMUJBblFpQjJvaEJDQUNJQU5IQkVBZ0JDQURJQVlRNXdFYUlBQW9BZ1FoQWdzZ0FDQUVJQVpxSWdNMkFnZ2dBQ0FDSUFkcU5nSUVEQUVMSUFWQkNHcEJBU0FDSUFSclFRRjFJQUlnQkVZYklnSWdBa0VDZGlBQVFReHFFS2NDSWdJZ0FDZ0NCQ0FBS0FJSUVLOEdJQUFvQWdBaEF5QUFJQUlvQWdBMkFnQWdBaUFETmdJQUlBQW9BZ1FoQXlBQUlBSW9BZ1EyQWdRZ0FpQUROZ0lFSUFBb0FnZ2hBeUFBSUFJb0FnZzJBZ2dnQWlBRE5nSUlJQUFvQWd3aEF5QUFJQUlvQWd3MkFnd2dBaUFETmdJTUlBSVFtZ01nQUNnQ0NDRURDeUFESUFFb0FnQTJBZ0FnQUNBQUtBSUlRUVJxTmdJSUlBVkJJR29rQUFzSkFDQUFRUlVRa3hNTEd3QWdBQ0FCUWNELy8vOEhRUVZCLy8vL0gwR0FnSUFnRU5nSkN6b0JBWDhnQUNBQktRSUFOd0k0SUFBb0FqQWhBaUFBS0FJc0lRQURRQ0FBSUFKSEJFQWdBQ0FCS1FJQU53STRJQUJCUUdzaEFBd0JDd3NMVkFFQmYwSC8vLzgvSVFFQ1FDQUFLQUlVUVF4SERRQWdBQ2dDRUJEVkNpZ0NNRVVOQUNBQVFRQVFPQ0FBS0FJUUVOVUtLQUl3UncwQVFmLy8vejhnQUVFQkVEZ2lBQ0FBUWYvLy96OVBHeUVCQ3lBQkM1WUJBUUovSXdCQk1Hc2lBaVFBQWtBZ0FDMEFHUVJBSUFGRkRRRWdBQzBBR0NFRElBSkJBVFlDRkNBQ0lBRTJBZ3dnQWlBQ1FReHFOZ0lRSUFJZ0Fpa0RFRGNEQUNBQ1FSaHFJQUlRcXdFaEFTQUFLQUlnSUFOQkhHeHFRUVJxSUFFUXZnNGdBUkJ0R2lBQ1FUQnFKQUFQQzBISnZBVkI1N0FEUWI0RlFhaUJCUkFBQUF0Qm5KSUhRZWV3QTBIREJVR29nUVVRQUFBTERnQWdBQkNvRGtIbkFHdEJBa2tMc1FZQkJuOGpBRUVnYXlJSEpBQWdBRUlBTndJRUlBQWdBallDRkNBQUlBRTJBaEFnQUVFQU9nQU1JQUFnQkVFQVJ6b0FHU0FBSUFOQkFFYzZBQmdnQUVIMDRCSTJBZ0FnQVJDOUJ5RUJJQUJDQURjQ0lDQUFJQUUyQWh3Z0FFSUFOd0lvSUFCQ0FEY0NNQ0FBUWdBM0FqZ2dBRUVnYWlJR0lBQXRBQmtnQUMwQUdDQUZLQUlFSUFVb0FnQnJRUnh0YW1vUXJRNGdBQzBBR0FSQUlBZEJBallDSENBSFFRRTJBaFFnQnlBRE5nSU1JQWNnQjBFTWFqWUNFQ0FHSUFkQkhHb2dCMEVRYWhENkZ3c2dBQzBBR1FSQUlBZEJBellDSENBSFFRRTJBaFFnQnlBRU5nSU1JQWNnQjBFTWFqWUNFQ0FHSUFkQkhHb2dCMEVRYWhENkZ3c2dBQ2dDSkNFRElBVW9BZ0FoQWlBRktBSUVJUVVqQUVFZ2F5SUxKQUFnQlNBQ2F5SUJRUnh0SVFnZ0JpZ0NBQ0lKSUFNZ0NXdEJIRzFCSEd4cUlRUUNRQ0FCUVFCTURRQWdCaWdDQ0NBR0tBSUVJZ3ByUVJ4dElBaE9CRUFDUUNBS0lBUnJJZ0ZCSEcwaUNTQUlUZ1JBSUFVaEF3d0JDeUFHSUFJZ0NVRWNiR29pQXlBRklBZ2dDV3NRekFnZ0FVRUFUQTBDQ3lBR0lnVW9BZ1FpQ1NFR0lBUWdDU0FFSUFoQkhHeHFhMEVjYlVFY2JHb2lBU0VJQTBBZ0NDQUtUd1JBSUFVZ0JqWUNCQU5BSUFFZ0JFY0VRQ0FKUVJ4cklna2lCU0FCUVJ4cklnRW9BZ0EyQWdBZ0JVRUVhaUFCUVFScUVMNE9EQUVMQ3dVZ0JpQUlFTVVJUVJ4cUlRWWdDRUVjYWlFSURBRUxDeUFDSUFNZ0JCRGRGeG9NQVFzZ0MwRUlhaUFHSUFvZ0NXdEJIRzBnQ0dvUXlBZ2dCQ0FHS0FJQWEwRWNiU0FHUVFocUVNY0lJZ0VvQWdnaUNpQUZJQUpyUVJ4dFFSeHNhaUVEQTBBZ0F5QUtSd1JBSUFvZ0FoQ0lHRUVjYWlFS0lBSkJIR29oQWd3QkN3c2dBU0FETmdJSUlBRW9BZ1FhSUFZb0FnQWdCQ0FCUVFScUVQRVhJQVlvQWdRaEFnTkFJQUlnQkVjRVFDQUJLQUlJSUFRUXhRZ2FJQUVnQVNnQ0NFRWNhallDQ0NBRVFSeHFJUVFNQVFzTElBWW9BZ0FoQWlBR0lBRW9BZ1EyQWdBZ0FTQUNOZ0lFSUFZb0FnUWhBaUFHSUFFb0FnZzJBZ1FnQVNBQ05nSUlJQVlvQWdnaEFpQUdJQUVvQWd3MkFnZ2dBU0FDTmdJTUlBRWdBU2dDQkRZQ0FDQUJFTVlJQ3lBTFFTQnFKQUFnQjBFZ2FpUUFJQUFMSHdFQmYwRUJJUUVnQUNnQ0ZFRUlSd1IvSUFBUXFBNUI1d0JHQlVFQkN3dGlBUUovSXdCQklHc2lBaVFBQWtBZ0FTQUFLQUlJSUFBb0FnQWlBMnRCSEcxTEJFQWdBVUhLcEpMSkFFOE5BU0FBSUFKQkNHb2dBU0FBS0FJRUlBTnJRUnh0SUFCQkNHb1F4d2dpQUJEY0NpQUFFTVlJQ3lBQ1FTQnFKQUFQQ3hBQkFBc2ZBQ0FCQkVBZ0FDQUJLQUlBRUs0T0lBQWdBU2dDQkJDdURpQUJFQjhMQ3g4QUlBRUVRQ0FBSUFFb0FnQVFydzRnQUNBQktBSUVFSzhPSUFFUUh3c0xHUUVCZnlBQktBSUFJUUlnQVVFQU5nSUFJQUFnQWhEWUNBcytBUUYvSXdCQklHc2lBaVFBSUFJZ0FUWUNEQ0FDUWZEeUVqWUNDQ0FDSUFKQkNHb2lBVFlDR0NBQUlBRkJBUkQrQWhvZ0FSQVdJQUpCSUdva0FBdDBBUUYvSXdCQkVHc2lCQ1FBSUFRZ0FEWUNBQ0FFSUFBb0FnUWlBRFlDQkNBRUlBQWdBMEVHZEdvMkFnZ2dCRUVFY2lFQUEwQWdBU0FDUndSQUlBQW9BZ0FnQVJEWENob2dBQ0FBS0FJQVFVQnJOZ0lBSUFGQlFHc2hBUXdCQ3dzZ0JDZ0NBQ0FFS0FJRU5nSUVJQVJCRUdva0FBdTRCZ0VIZnlBQkVFd2hCaUFCSUFBb0FnQkdCRUFnQUNBR05nSUFDeUFBSUFBb0FnaEJBV3MyQWdnZ0FDZ0NCQ0VBQW44Q1FDQUJJZ1FpQWlnQ0FDSURCRUFnQkNnQ0JFVU5BU0FFRUV3aUFpZ0NBQ0lERFFFTElBSW9BZ1FpQXcwQVFRQWhBMEVCREFFTElBTWdBaWdDQ0RZQ0NFRUFDeUVIQWtBZ0FpQUNLQUlJSWdVb0FnQWlBVVlFUUNBRklBTTJBZ0FnQUNBQ1JnUkFRUUFoQVNBRElRQU1BZ3NnQlNnQ0JDRUJEQUVMSUFVZ0F6WUNCQXNnQWkwQURFVWhDQ0FDSUFSSEJFQWdBaUFFS0FJSUlnVTJBZ2dnQlNBRUtBSUlLQUlBSUFSSFFRSjBhaUFDTmdJQUlBSWdCQ2dDQUNJRk5nSUFJQVVnQWpZQ0NDQUNJQVFvQWdRaUJUWUNCQ0FGQkVBZ0JTQUNOZ0lJQ3lBQ0lBUXRBQXc2QUF3Z0FpQUFJQUFnQkVZYklRQUxJQWdnQUVWeVJRUkFBa0FnQndSQUEwQWdBUzBBRENFQ0FrQWdBU0FCS0FJSUlnTW9BZ0JIQkVBZ0FrVUVRQ0FCUVFFNkFBd2dBMEVBT2dBTUlBTVF5Z2dnQVNBQUlBQWdBU2dDQUNJQlJoc2hBQ0FCS0FJRUlRRUxBa0FDUUFKQUFrQWdBU2dDQUNJREJFQWdBeTBBREVVTkFRc2dBU2dDQkNJQ0JFQWdBaTBBREVVTkFnc2dBVUVBT2dBTUFrQWdBQ0FCS0FJSUlnRkdCRUFnQUNFQkRBRUxJQUV0QUF3TkJnc2dBVUVCT2dBTURBZ0xJQUVvQWdRaUFrVU5BUXNnQWkwQURFVU5BUXNnQTBFQk9nQU1JQUZCQURvQURDQUJFTWtJSUFFb0FnZ2lBU2dDQkNFQ0N5QUJJQUVvQWdnaUFDMEFERG9BRENBQVFRRTZBQXdnQWtFQk9nQU1JQUFReWdnTUJBc2dBa1VFUUNBQlFRRTZBQXdnQTBFQU9nQU1JQU1ReVFnZ0FTQUFJQUFnQVNnQ0JDSUJSaHNoQUNBQktBSUFJUUVMQWtBZ0FTZ0NBQ0lDQkVBZ0FpMEFERVVOQVFzQ1FDQUJLQUlFSWdNRVFDQURMUUFNUlEwQkN5QUJRUUE2QUF3Z0FTZ0NDQ0lCTFFBTVFRQWdBQ0FCUnhzTkFpQUJRUUU2QUF3TUJRc2dBZ1IvSUFJdEFBeEZEUUVnQVNnQ0JBVWdBd3RCQVRvQURDQUJRUUE2QUF3Z0FSREtDQ0FCS0FJSUlnRW9BZ0FoQWdzZ0FTQUJLQUlJSWdBdEFBdzZBQXdnQUVFQk9nQU1JQUpCQVRvQURDQUFFTWtJREFNTElBRW9BZ2dpQXlBREtBSUFJQUZHUVFKMGFpZ0NBQ0VCREFBTEFBc2dBMEVCT2dBTUN3c2dCQkFmSUFZTDVnTUJDWDhqQUVFZ2F5SURKQUFnQXlBQk5nSWNJQUJCSUdvaUFpQURRUnhxRUlZRklnZ29BZ1FpQVNBSUtBSUFSd1JBSUFBZ0F5Z0NIQkRwRnlBQ0lBTkJIR29RaGdVaUNDZ0NBQ0VCQ3lBSUlBRTJBZ1FnQUVFVWFpRUpRUUFoQVFKQUEwQWdBeWdDSENJQ0tBSWtJQUlvQWlCclFSeHRJQUZMQkVBZ0FpQUJFTDhPS0FJQUlnSkJCVXRCQVNBQ2RFRTJjVVZ5UlFSQUlBTWdBeWdDSENBQkVKRUVJZ0kyQWhnZ0FDQUNFSlFCSWdKRkRRTWdBeUFDTmdJUUlBTWdBeWdDSERZQ0ZDTUFRUkJySWdZa0FDTUFRUkJySWdRa0FDQURRUkJxSVFvZ0NVRUVhaUVGQWtBZ0NTZ0NCQ0lIUlFSQUlBVWhBZ3dCQ3dOQUlBb2dCeUlDUVJCcUlnY1EyUW9FUUNBQ0lRVWdBaWdDQUNJSERRRU1BZ3NnQnlBS0VOa0tSUTBCSUFKQkJHb2hCU0FDS0FJRUlnY05BQXNMSUFRZ0FqWUNEQ0FHSUFVb0FnQWlBZ1IvUVFBRlFSZ1FGU0VDSUFRZ0NVRUVhallDQkNBQ0lBTXBBaEEzQWhBZ0JFRUJPZ0FJSUFrZ0JDZ0NEQ0FGSUFJUStBSWdCRUVBTmdJQUlBUVFpd0ZCQVFzNkFBd2dCaUFDTmdJSUlBUkJFR29rQUNBRElBWW9BZ2cyQWdnZ0F5QUdMUUFNT2dBTUlBWkJFR29rQUNBSUlBTkJHR29RM2dJTElBRkJBV29oQVF3QkN3c2dBMEVnYWlRQUR3dEJ4cmdKUWRhakFrRTRRZS9sQXhBQUFBdkRCUUlJZndKOUl3QkJJR3NpQnlRQUlBY2dBVFlDRUNNQVFSQnJJZ1FrQUNBQktBSUFJUUVnQndKL0FrQWdBQ2dDQkNJQ1JRMEFJQUFvQWdBQ2Z5QUNRUUZySUFGeElBSnBJZ1pCQVUwTkFCb2dBU0FCSUFKSkRRQWFJQUVnQW5BTElnVkJBblJxS0FJQUlnTkZEUUFnQWtFQmF5RUlJQVpCQVVzaENRTkFJQU1vQWdBaUEwVU5BU0FCSUFNb0FnUWlCa2NFUUFKQUlBbEZCRUFnQmlBSWNTRUdEQUVMSUFJZ0Jrc05BQ0FHSUFKd0lRWUxJQVVnQmtjTkFnc2dBeWdDQ0NBQlJ3MEFDMEVBREFFTFFUQVFGU0VESUFRZ0FFRUlhallDQkNBRUlBTTJBZ0FnQXlBSEtBSVFLQUlBTmdJSUlBTkJER3BCQUVFa0VIa2FJQVJCQVRvQUNDQURRUUEyQWdBZ0F5QUJOZ0lFQWtCQkFDQUNJQUFvQWd4QkFXcXpJZ29nQUNvQ0VDSUxJQUt6bEY0YkRRQWdBQ0FDSUFKQkFXdHhRUUJISUFKQkEwbHlJQUpCQVhSeUlnVUNmeUFLSUF1VmpTSUtRd0FBZ0U5ZElBcERBQUFBQUdCeEJFQWdDcWtNQVF0QkFBc2lBaUFDSUFWSkd4RERBU0FBS0FJRUlnSWdBa0VCYTNGRkJFQWdBa0VCYXlBQmNTRUZEQUVMSUFFZ0Fra0VRQ0FCSVFVTUFRc2dBU0FDY0NFRkN3SkFJQVZCQW5RaUJTQUFLQUlBYWlnQ0FDSUJSUVJBSUFRb0FnQWdBQ2dDQ0RZQ0FDQUFJQVFvQWdBMkFnZ2dBQ2dDQUNBRmFpQUFRUWhxTmdJQUlBUW9BZ0FpQVNnQ0FDSUZSUTBCSUFVb0FnUWhBd0pBSUFJZ0FrRUJheUlGY1VVRVFDQURJQVZ4SVFNTUFRc2dBaUFEU3cwQUlBTWdBbkFoQXdzZ0FDZ0NBQ0FEUVFKMGFpQUJOZ0lBREFFTElBUW9BZ0FnQVNnQ0FEWUNBQ0FCSUFRb0FnQTJBZ0FMSUFRb0FnQWhBeUFFUVFBMkFnQWdBQ0FBS0FJTVFRRnFOZ0lNSUFRb0FnQWhBQ0FFUVFBMkFnQWdBQVJBSUFRdEFBZ0VRQ0FBUVF4cUVQd1lDeUFBQkVBZ0FCQWZDd3RCQVFzNkFCd2dCeUFETmdJWUlBUkJFR29rQUNBSEtBSVlJUUFnQjBFZ2FpUUFJQUJCREdvTFVBRUJmeU1BUVJCcklnUWtBQ0FFSUFJMkFnQWdCQ0FCTmdJSUlBQWdCQ2dDQ0NBRUtBSUFJQU1RelFjaUFFSHcrZzgyQWdRZ0FFR2srdzgyQWdBZ0FFR1ErdzgyQWdBZ0JFRVFhaVFBSUFBTENRQWdBQkQxRnhBZkMyb0JBMzhqQUVFZ2F5SURKQUFnQTBFSWFpQUFJQUFvQWdRZ0FDZ0NBR3RCQW5WQkFXb1Fvd2tnQUNnQ0JDQUFLQUlBYTBFQ2RTQUFRUWhxRUtjQ0lnSW9BZ2dpQkNBQktBSUFOZ0lBSUFJZ0JFRUVhallDQ0NBQUlBSVFvd1FnQWhDYUF5QURRU0JxSkFBTFpRRUZmeUFCSUFBb0FnUWlCaUFEYXlJSGFpRUVJQWRCQW5VaENDQUdJUVVEUUNBQ0lBUk5CRUFnQUNBRk5nSUVJQU1nQmtjRVFDQUdJQWhCQW5ScklBRWdCeERuQVJvTEJTQUZJQVFvQWdBMkFnQWdCVUVFYWlFRklBUkJCR29oQkF3QkN3c0xZUUVCZnlNQVFSQnJJZ1VrQUNBRklBSTJBZ2dnQlNBQk5nSU1JQVVnQkRZQ0JDQUZRUXhxSVFFZ0JVRUlhaUVDSUFWQkJHb2hCQ0FBS0FJUUlnQkZCRUFRYndBTElBQWdBU0FDSUFNZ0JDQUFLQUlBS0FJWUVRZ0FJQVZCRUdva0FBdjBBUUVDZndKQUlBQW9BZ1FpQVNBQktBSUFLQUlvRVFBQUlnRUVRQ0FCS0FJVUlnSkJ3UUJQRFFFQ2ZnSkFJQUFnQUNnQ0FDZ0NPQkVBQUNJQkJFQWdBa0VnU3cwQklBRVFoQml0RHd0Q0FDQUFJQUFvQWdBb0FsZ1JBQUFOQVJwQjA3RUpRYmFaQWtINEFFSGkxUU1RQUFBTElBRWdBU2dDQUNnQ1lCRUFBQ0lBS0FJRUlBQW9BZ0JyUVFoSEJFQkJ1SVVIUWRDcEEwR3dBVUhsMUFNUUFBQUxJQUVnQVNnQ0FDZ0NZQkVBQUNnQ0FEVUNCRUlnaGlBQklBRW9BZ0FvQW1BUkFBQW9BZ0ExQWdDRUN3OExRZmZIQVVHMm1RSkI3QUJCNHRVREVBQUFDMEhJOHdaQnRwa0NRZTRBUWVMVkF4QUFBQXVKQVFFQmZ3SkFBa0FnQUNnQ0JDSUJJQUVvQWdBb0FqQVJBQUJGRFFBZ0FDZ0NCQ0lCSUFFb0FnQW9BakFSQUFBb0FoUkJJRWNOQUNBQUlBQW9BZ0FvQWp3UkFBQWlBUVJBSUFFUWhnOFBDeUFBSUFBb0FnQW9BbGdSQUFCRkRRRkRBQUFBQUE4TFFiU0FCMEcybVFKQkcwSE8rUUFRQUFBTFFacXhDVUcybVFKQklFSE8rUUFRQUFBTE13RUJmeUFCUWNxa2tza0FUd1JBRUFFQUN5QUFJQUVRaVJnaUFqWUNBQ0FBSUFJMkFnUWdBQ0FDSUFGQkhHeHFOZ0lJQzh3QkFRVi9JQUJCRkdvaEF3SkFJQUVvQWhRaUFnUkFJQUZCQURZQ0ZDQURJQUlRalFVTUFRdEJBQ0VDSUFOQkFCQ05CU0FBS0FJSUlRUWdBU2dDQ0NFRklBQW9BZ1FoQmdOQUlBRW9BZ1FpQXlBQ1RTQUNJQVpQY2tVRVFDQUVJQUpCQW5RaUEyb2dBeUFGYWlnQ0FEWUNBQ0FDUVFGcUlRSU1BUXNMQWtBZ0FpQURUdzBBSUFFb0FnZ2hCQ0FBS0FJSUlRVURRQ0FDSUFOR0RRRWdCU0FDUVFKMElnWnFJQVFnQm1vb0FnQTJBZ0FnQWtFQmFpRUNEQUFMQUFzZ0FDQUROZ0lFQ3lBQlFRQTJBZ1FMREFBZ0FDQUJRWm9GRU1jU0N6Z0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3aUFFSGc0aEkyQWdBZ0FFRUVhaEJSSUFBUWd3RWFJQUZCRUdva0FDQUFDejhCQVg4akFFRVFheUlESkFBZ0F5QUFOZ0lNSUFNZ0FUWUNDQ0FESUFJMkFnUWdBeWdDRENJQUVMb1lJQUFnQXlnQ0JCQ2tHQ0FEUVJCcUpBQWdBQXYrQVFFRWZ5TUFRUkJySWdNa0FDQURJQUEyQWd3Z0F5QUJOZ0lJSUFNZ0FqWUNCQ0FES0FJTUlRRWdBeWdDQ0NFQ0lBTW9BZ1FoQkNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNBQ05nSUlJQUFnQkRZQ0JDQUFLQUlJSVFJZ0FDZ0NCQ0VFSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCSUFRMkFnZ2dBU2dDRENFRUlBRW9BZ2doQlNNQVFSQnJJZ0lrQUNBQ0lBUTJBZ3dnQWlBRk5nSUlJQUlvQWd3aUJTQUNLQUlJSWdZcEFnQTNBZ0FnQlNBR0tBSUlOZ0lJSUFJb0FnZ1FWU0FGRUs4RElBSkJFR29rQUNBRUlBRW9BZ2dpQWlnQ0REWUNEQ0FFSUFJdEFCQTZBQkFnQVVFUWFpUUFJQUJCRUdva0FDQURRUkJxSkFBTEtBRUJmeU1BUVJCcklnSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDZ0NBQ0FDS0FJSVFSUnNhZ3NsQVFGL0l3QkJFR3NpQWlBQU5nSU1JQUlnQVRZQ0NDQUNLQUlNS0FJQUlBSW9BZ2hxQzJZQkFuOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSWdBVFlDQ0NBQ0tBSU1JUUVnQWlnQ0NDRURJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFJQU0yQWdnZ0FDZ0NEQ0lCUVFocUlBQW9BZ2dRRWhvZ0FFRVFhaVFBSUFFaEFDQUNRUkJxSkFBZ0FBc29BUUYvSXdCQkVHc2lBaUFBTmdJTUlBSWdBVFlDQ0NBQ0tBSU1LQUlBSUFJb0FnaEJBM1JxQzNrQkEzOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUlBRW9BZ3dpQWtFQU5nSUFJQUpCQURZQ0JDQUJRUUEyQWdnakFFRVFheUlBSkFBZ0FDQUNRUWhxTmdJTUlBQWdBVUVJYWpZQ0NDQUFJQUUyQWdRZ0FDZ0NEQ0lESUFBb0FnZ1F6QTRnQXhDNUdDQUFRUkJxSkFBZ0FoQ3ZBeUFCUVJCcUpBQUxLZ0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RCRDZBaTBBQ3lFQUlBRkJFR29rQUNBQUN5b0JBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3UStnSW9BZ1FoQUNBQlFSQnFKQUFnQUF0RkFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJJQUVvQWd3MkFnZ2dBU0FCS0FJSUVJTUJOZ0lFSUFFZ0FTZ0NCRFlDQUNBQktBSUFJUUFnQVVFUWFpUUFJQUFMSXdFQmZ5TUFRUkJySWdFZ0FEWUNEQ0FCS0FJTUlnQkJBRFlDQUNBQVFRQTJBZ1FMSVFFQmZ5TUFRUkJySWdJZ0FEWUNEQ0FDSUFFMkFnZ2dBaWdDREVFQU5nSUFDeUlCQVg4akFFRVFheUlCSUFBMkFnd2dBU2dDRENJQUtBSUFJQUFvQWdRMkFnUUxVQUVCZnlNQVFSQnJJZ01rQUNBRElBQTJBZ3dnQXlBQk5nSUlJQU1nQWpZQ0JBSkFJQU1vQWdSRkJFQWdBeWdDREJvTUFRc2dBeWdDRENBREtBSUlJQU1vQWdRUTV3RWFDeUFEUVJCcUpBQUxnaHNCQzM4akFFR3dBV3NpQ1NRQUlBa2dBVFlDRkNBSklBQTJBZ2dnQ1NBSlFSUnFOZ0lNQWtBZ0FVVUVRQ0FKUVFocUVNc1lEQUVMSUFFb0FnUWlBa0g0Nnc5R0JFQWpBRUdnQVdzaUFpUUFJQUpCQ0dvaUF5QUFFSXdCSUFBZ0F5QUJLQUlrRUpJQklBSkJFR29pQkVHZTNRc1FEaG9nQUNBRElBRW9BaWdRa2dFZ0JFSDY2UVlRRGhvZ0F4Q1FBU0FDUWFBQmFpUUFEQUVMSUFKQnVQTVBSZ1JBSXdCQm9BRnJJZ0lrQUNBQ1FRaHFJZ01nQUJDTUFTQUFJQU1nQVJEVUJDQURFSkFCSUFKQkFEb0FCQ0FDSUFGQnhBQnFOZ0lBSUFBZ0FoQ01CU0FESUFBUWpBRWdBa0VRYWtHQ0NCQU9HaUFERUpBQklBSkJvQUZxSkFBTUFRc2dBa0c0N0E5R0JFQWpBRUdnQVdzaUFTUUFJQUZCQ0dvaUFpQUFFSXdCSUFGQkVHcEI0dWtHRUE0YUlBSVFrQUVnQVVHZ0FXb2tBQXdCQ3lBQ1FZQ0VFa1lFUUNNQVFhQUJheUlDSkFBZ0FrRUlhaUlESUFBUWpBRWdBa0VRYWlJRVFjbXhDaEFPR2lBQUlBTWdBU2dDSkJDU0FTQUVRZnJwQmhBT0dpQURFSkFCSUFKQm9BRnFKQUFNQVFzZ0FrSDQ3ZzlHQkVBZ0NVRVlhaUlDSUFBUWpBRWdBQ0FDSUFFb0FpUVEwaGdnQ1VFZ2FrSDY2UVlRRGhvZ0FoQ1FBUXdCQ3lBQ1FjQ0VFa1lFUUNNQVFhQUJheUlESkFBZ0EwRUlhaUlDSUFBUWpBRWdBQ0FDSUFFb0FpUVFrZ0VnQTBFUWFpSUVRZmZ3REJBT0dpQUFJQUlnQVNnQ0xCRE1HQ0FFUVovZEN4QU9HaUFBSUFJZ0FTZ0NLQkNTQVNBRVFmcnBCaEFPR2lBQ0VKQUJJQU5Cb0FGcUpBQU1BUXNnQWtHNDd3OUdCRUFqQUVHZ0FXc2lBU1FBSUFGQkNHb2lBaUFBRUl3QklBRkJFR3BCNmVrR0VBNGFJQUlRa0FFZ0FVR2dBV29rQUF3QkN5QUNRZmp2RDBZRVFDTUFRYUFCYXlJQkpBQWdBVUVJYWlJQ0lBQVFqQUVnQVVFUWFrSHo2UVlRRGhvZ0FoQ1FBU0FCUWFBQmFpUUFEQUVMSUFKQnVQQVBSZ1JBSXdCQndBRnJJZ0lrQUNBQ1FTaHFJQUFRakFFZ0FTZ0NPQVJBSUFKQkFEb0FKQ0FDSUFGQk5HbzJBaUFnQUNBQ1FTaHFJQUpCSUdvUSt3SWdBa0V3YWtIMzhBd1FEaG9MSUFKQk1Hb2lBMEhRL2dnUURob2dBQ0FDUVNocUlnUWdBU2dDSkJDU0FTQURRWnJ1REJBT0dpQUFJQVFnQVNnQ0tCRFVCQ0FFRUpBQklBRW9BaWdoQkNBQ1FRQTZBQndnQWlBRVFjUUFhallDR0NBQUlBSkJHR29RakFVRFFBSkFJQUVvQWl3aUFRUkFJQUVvQWdRaUJFRzQ4QTlHRFFFZ0FrRW9haUlESUFBUWpBRWdBa0V3YWtIUnR3b1FEaG9nQUNBRElBRkJBQ0FFUWJqekQwWWJJZ0VRMUFRZ0F4Q1FBU0FDUVFBNkFBd2dBaUFCUWNRQWFqWUNDQ0FBSUFKQkNHb1FqQVVMSUFKQktHb2lBU0FBRUl3QklBSkJNR3BCZ2dnUURob2dBUkNRQVNBQ1FjQUJhaVFBREFNTElBSkJLR29pQkNBQUVJd0JJQU5CeWY0SUVBNGFJQUFnQkNBQktBSWtFSklCSUFOQm11NE1FQTRhSUFBZ0JDQUJLQUlvRU5RRUlBUVFrQUVnQVNnQ0tDRUVJQUpCQURvQUZDQUNJQVJCeEFCcU5nSVFJQUFnQWtFUWFoQ01CUXdBQ3dBTElBSkI4SVFTUmdSQUl3QkJvQUZySWdJa0FDQUNRUWhxSWdNZ0FCQ01BU0FBSUFNZ0FTZ0NKQkNTQVNBQ1FSQnFJZ0JCMnBnSVFjdVlDQ0FCTFFBb0d4QU9HaUFBUWZycEJoQU9HaUFERUpBQklBSkJvQUZxSkFBTUFRc2dBa0g0OEE5R0JFQWpBRUhRQW1zaUFpUUFJQUpCdUFGcUlBQVFqQUVnQVNnQ05BUkFJQUpCQURvQXRBRWdBaUFCUVRCcU5nS3dBU0FBSUFKQnVBRnFJQUpCc0FGcUVQc0NJQUpCd0FGcVFmZndEQkFPR2dzZ0FrSEFBV29pQkVIcS93a1FEaG9nQUNBQ1FiZ0JhaUlESUFFb0FpUVExQVFnQXhDUUFTQUFFTTRZSUFFb0FpUWhBeUFDUVFBNkFLd0JJQUlnQTBIRUFHbzJBcWdCSUFBZ0FrR29BV29RenhnQ1FDQUJLQUlvSWdORkRRQWdBeWdDU0VVTkFDQUNRUkJxSWdNZ0FCQ01BU0FERUpBQklBSkJ1QUZxSUFBUWpBRWdBa0hBQVdvaUEwR1hxZ29RRGhvZ0FTZ0NLQ0lGS0FKa0JFQWdBa0VBT2dBTUlBSWdCVUhnQUdvMkFnZ2dBQ0FDUWJnQmFpQUNRUWhxRVBzQ0lBTkI5L0FNRUE0YUN5QURRWWdJRUE0YUlBSkJ1QUZxSWdVUWtBRWdBU2dDS0NFQklBSkJBRG9BQkNBQ0lBRkJ4QUJxTmdJQUlBQWdBaENNQlNBRklBQVFqQUVnQTBHQ0NCQU9HaUFGRUpBQkN5QUFFTTBZSUFKQnVBRnFJZ0VnQUJDTUFTQUVRWUlJRUE0YUlBRVFrQUVnQWtIUUFtb2tBQXdCQ3lBQ1FkaUVFa1lFUUNNQVFiQUNheUlDSkFBZ0FrR2dBbW9RMUE0aEJTQUJLQUlrSWdNRVFDQUFLQUtFQXlFRUlBQWdCVFlDaEFNZ0FDQURFTThPSUFBZ0JEWUNoQU1MSUFKQmtBSnFFTlFPSVFjZ0FTZ0NMQ0lEQkVBZ0FDZ0NoQU1oQkNBQUlBYzJBb1FESUFBZ0F4RFBEaUFBSUFRMkFvUURDeUFDUWZnQWFpQUFFSXdCSUFFb0Fqd0VRQ0FDUVFBNkFIUWdBaUFCUVRocU5nSndJQUFnQWtINEFHb2dBa0h3QUdvUSt3SWdBa0dBQVdwQjkvQU1FQTRhQ3lBQ1FZQUJhaUlEUWJQVUFSQU9HaUFDUWVnQWFpQUNRZmdBYWhEZkdDRU1Ba0FDUUFKQUlBVW9BZ2dnQlNnQ0JDSUdhMEVFZFNJRURnSUNBUUFMUVFFZ0JDQUVRUUZOR3lFSUlBQW9Bb1FESVFwQkFTRUVBMEFnQkNBSVJnUkFJQUpCS0dvaUJDQUZFTkVPSUFKQjJBQnFJZ1lnQkNBQ1FUaHFRZHY0REJBVUlnZ1E3Z29nQXlBR0VCSWFJQVlRRHhvZ0NCQVBHaUFFRUE4YURBTUZJQVlnQkVFRWRHb2lDeUFMS0FJQUlBb29BZ0JxTmdJQUlBUkJBV29oQkF3QkN3QUxBQXNnQWtIWUFHb2lCQ0FDUWNnQWFpQUdRUVJxRUZRaUJpQUNRVGhxUWZycEJoQVVJZ2dRN2dvZ0F5QUVFQklhSUFRUUR4b2dDQkFQR2lBR0VBOGFDeUFEUWJ2ZEN4QU9HaUFCS0FJb0lnUUVRQ0FBSUFKQitBQnFJQVFRa2dFTElBTkJ1OTBMRUE0YUFrQUNRQUpBSUFjb0FnZ2dCeWdDQkNJR2EwRUVkU0lFRGdJQ0FRQUxRUUVnQkNBRVFRRk5HeUVJSUFBb0FvUURJUXBCQVNFRUEwQWdCQ0FJUmdSQUlBSkJDR29pQkNBSEVORU9JQUpCMkFCcUlnWWdCQ0FDUVRocVFkdjREQkFVSWdnUTdnb2dBeUFHRUJJYUlBWVFEeG9nQ0JBUEdpQUVFQThhREFNRklBWWdCRUVFZEdvaUN5QUxLQUlBSUFvb0FnQnFOZ0lBSUFSQkFXb2hCQXdCQ3dBTEFBc2dBa0hZQUdvaUJDQUNRUmhxSUFaQkJHb1FWQ0lHSUFKQk9HcEIrdWtHRUJRaUNCRHVDaUFESUFRUUVob2dCQkFQR2lBSUVBOGFJQVlRRHhvTElBd1EzaGdnQTBIMzhBd1FEaG9nQUNBQ1FmZ0FhaUlESUFFb0FqQVExQVFnQXhDUUFTQUJLQUl3SVFFZ0FrRUFPZ0FFSUFJZ0FVSEVBR28yQWdBZ0FDQUNFSXdGSUFNZ0FCQ01BU0FDUVlBQmFrR0NDQkFPR2lBREVKQUJJQWNRMHc0Z0JSRFREaUFDUWJBQ2FpUUFEQUVMSUFKQmlJVVNSZ1JBSXdCQnNBRnJJZ0lrQUNBQ1FSaHFJQUFRakFFZ0FTZ0NOQVJBSUFKQkFEb0FGQ0FDSUFGQk1HbzJBaEFnQUNBQ1FSaHFJQUpCRUdvUSt3SWdBa0VnYWtIMzhBd1FEaG9MSUFKQklHb2lCRUd1dGdRUURob2dBa0VJYWlBQ1FSaHFJZ01RM3hnaEJTQUFJQU1nQVNnQ0pCQ1NBU0FGRU40WUlBUkI5L0FNRUE0YUlBQWdBeUFCS0FJb0VOUUVJQU1Ra0FFZ0FTZ0NLQ0VCSUFKQkFEb0FCQ0FDSUFGQnhBQnFOZ0lBSUFBZ0FoQ01CU0FESUFBUWpBRWdCRUdDQ0JBT0dpQURFSkFCSUFKQnNBRnFKQUFNQVFzZ0FrRzQ4UTlHQkVBakFFR2dBV3NpQWlRQUlBSkJDR29nQUJDTUFTQUNRUkJxSWdOQjg4SUNFQTRhSUFFb0FpUUVRQ0FEUWZmd0RCQU9HaUFBSUFKQkNHb2dBU2dDSkJDU0FRc2dBMEg2NlFZUURob2dBa0VJYWhDUUFTQUNRYUFCYWlRQURBRUxJQUpCd1BZUFJnUkFJQUFnQVJEV0dBd0JDeUFDUWZqeEQwWUVRQ01BUWJBQmF5SURKQUFnQTBFWWFpQUFFSXdCSUFFb0Frd0VRQ0FEUVFBNkFCUWdBeUFCUWNnQWFqWUNFQ0FBSUFOQkdHb2dBMEVRYWhEN0FpQURRU0JxUWZmd0RCQU9HZ3NnQTBFZ2FpSUNRYno0Q0JBT0dpQUFJQU5CR0dvZ0FTZ0NKQkNTQVNBQ1FacnVEQkFPR2lBQktBSmNCRUFnQTBFQU9nQU1JQU1nQVVIWUFHbzJBZ2dnQUNBRFFSaHFJQU5CQ0dvUSt3SWdBa0gzOEF3UURob0xJQUpCaUFnUURob2dBMEVZYWlJQ0VKQUJJQUlnQUJEZEdDRU1JQUVvQWpnaUJDQUJLQUk4UVFKMGFpRUlBMEFnQkNBSVJnUkFJQXdRM0JnZ0EwRVlhaUlCSUFBUWpBRWdBMEVnYWtHQ0NCQU9HaUFCRUpBQklBTkJzQUZxSkFBRklBUW9BZ0FoQnlNQVFhQUJheUlGSkFBQ1FBSkFJQWNvQWpoQkFVY05BQ0FIS0FJMElnSWdCeWdDT0VFQ2RHb2hCZ05BSUFZZ0FpSUJSd1JBSUFGQkJHb2hBaUFCS0FJQUtBSWtEUUVMQ3lBQklBWkdEUUFnQlVFSWFpSUJJQUFRakFFZ0JVRVFha0djNGdzUURob2dBQ0FCSUFjb0FrQVExQVFNQVFzZ0JVRUlhaUFBRUl3QklBVkJFR29pQWtIWnR3b1FEaG9nQnlnQ05DSUJJQWNvQWpoQkFuUnFJUXBCQVNFR0EwQWdBU0FLUmdSQUlBSkI3YlVNRUE0YUlBQWdCVUVJYWlJQklBY29Ba0FRMUFRTUFnc2dBU2dDQUNFTElBWkZCRUFnQWtIMDdRd1FEaG9MQWtBZ0N5Z0NKQ0lHUlFSQUlBSkJwZVFBRUE0YURBRUxJQUFnQlVFSWFpQUdFSklCQ3lBQlFRUnFJUUZCQUNFR0RBQUxBQXNnQVJDUUFTQUhLQUpBSVFFZ0JVRUFPZ0FFSUFVZ0FVSEVBR28yQWdBZ0FDQUZFSXdGSUFWQkNHb2lBU0FBRUl3QklBVkJFR3BCZ2dnUURob2dBUkNRQVNBRlFhQUJhaVFBSUFSQkJHb2hCQXdCQ3dzTUFRc2dBa0c0OGc5R0JFQWdDVUVZYWlJQ0lBQVFqQUVnQUNBQ0lBRW9BaVFRMXhnZ0FoQ1FBUXdCQ3lBSlFRaHFFTXNZQ3lBSlFiQUJhaVFBQ3lrQUlBQWdBU2dDQURZQ0FDQUFJQUVwQWdRM0FnUWdBQ0FCS0FJTU5nSU1JQUZCQkdvUVZTQUFDNjBCQVFaL0l3QkJrQUZySWdVa0FDQUZFRWtpQmtFSWFpRURJQUVvQWdnaEJ5QUJLQUlFSVFJRFFBSkFJQUlnQjBjRVFFRUFJUUVnQWlnQ0NDQUNMUUFQSWdRZ0JFRVlkRUVZZFVFQVNCdEZEUUVnQWtFRWFpRUVBMEFnQWlnQ0FDQUJUUVJBSUFNZ0JCQVNHZ3dEQlNBRFFmZndEQkFPR2lBQlFRRnFJUUVNQVFzQUN3QUxJQUFnQmtFTWFoQkNJQVlRVVNBRlFaQUJhaVFBRHdzZ0F4RGlBUm9nQWtFUWFpRUNEQUFMQUF0S0FRRi9JQUJCQURZQ0RDQUFJQU0yQWhBZ0FRUkFJQUVRMnhnaEJBc2dBQ0FFTmdJQUlBQWdCQ0FDUVFSMGFpSUNOZ0lJSUFBZ0JDQUJRUVIwYWpZQ0RDQUFJQUkyQWdRZ0FBdEpBUUovSUFCQkJHb2lBQ2dDQUFSQUlBQW9BZ0FoQWlBQUtBSUVJUUVEUUNBQklBSkhCRUFnQVVFTWF4QVBHaUFCUVJCcklRRU1BUXNMSUFBZ0FqWUNCQ0FBS0FJQUVCOExDeElBSUFCQ0FEY0NBQ0FBUWdBM0FnZ2dBQXNKQUNBQVFRRTZBQUFMTmdFQmZ5TUFRUkJySWdNa0FDQUNLQUlBRVB3Q0lRSWdBU2dDWkNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBZ0EwRVFhaVFBQ3drQUlBQkJEQkRERWdzZkFDQUJCRUFnQUNBQktBSUFFTmdPSUFBZ0FTZ0NCQkRZRGlBQkVCOExDeVVCQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUlReEFNTElBSVFId3NMTndFQmZ5QUFRYlRoRWpZQ0FBTkFJQUFvQWdnaUFTMEFEQ0FCUlhKRkJFQWdBQkR6Q2hEeUNnd0JDd3NnQUVFRWFoRGFDQm9nQUFzVUFDQUFRUWhxRUpJREdpQUFRUVJxRUlVREdnc25BQ0FCQkVBZ0FDQUJLQUlBRU53T0lBQWdBU2dDQkJEY0RpQUJRUlJxRVBFWUlBRVFId3NMSndBZ0FRUkFJQUFnQVNnQ0FCRGREaUFBSUFFb0FnUVEzUTRnQVVFY2FoQXlHaUFCRUI4TEN4TUFJQUFnQVVILy8vLy9BMEVDUVNBUXloSUxKd0FnQVFSQUlBQWdBU2dDQUJEZkRpQUFJQUVvQWdRUTN3NGdBVUVVYWhEeEdDQUJFQjhMQ3g4QUlBRUVRQ0FBSUFFb0FnQVE0QTRnQUNBQktBSUVFT0FPSUFFUUh3c0xId0FnQVFSQUlBQWdBU2dDQUJEaERpQUFJQUVvQWdRUTRRNGdBUkFmQ3dzZkFDQUJCRUFnQUNBQktBSUFFT0lPSUFBZ0FTZ0NCQkRpRGlBQkVCOExDeDhBSUFFRVFDQUFJQUVvQWdBUTR3NGdBQ0FCS0FJRUVPTU9JQUVRSHdzTEZBQWdBQ0FCUWYvLy8vOERRUUpCd0FBUXl4SUxNUUFnQUVHVTRSSTJBZ0FDUUNBQUxRQU1EUUFnQUNnQ0JFVU5BRUc3OEFoQjFiVURRWkVCUWR6bEF4QUFBQXNnQUFzV0FDQUFLQUlBQkVBZ0FCRDBDaUFBS0FJQUVCOExDekFCQW44Z0FDZ0NDQ0VCQTBBZ0FRUkFJQUVvQWdBaEFpQUJRUXhxRUU4Z0FSQWZJQUloQVF3QkN3c2dBQkMzQWd0ekFRTi9JQUFRVlFKQUEwQWdBU0FDUndSQUlBRW9BZ0FoQlVFQUlRUURRQ0FFUVFSSEJFQWdCU0FFUVFOMGRpSUdRZjhCY1VVTkJDQUFJQVpCR0hSQkdIVVFwQUVnQkVFQmFpRUVEQUVMQ3lBQlFRUnFJUUVNQVFzTElBTkZEUUJCNzdRSlFaV3JBMEhsQUVHbnZnTVFBQUFMQ3g4QUlBRUVRQ0FBSUFFb0FnQVE2UTRnQUNBQktBSUVFT2tPSUFFUUh3c0xId0FnQVFSQUlBQWdBU2dDQUJEcURpQUFJQUVvQWdRUTZnNGdBUkFmQ3d2K0FRSUVmd0YrSUFFZ0FDZ0NxQVZMQkVBZ0FDZ0NvQVVoQlVFWUlRSWdBQ0VESUFGQkdFOEVRRUYvSUFHdFFoeCtJZ2FuSUFaQ0lJaW5HeEFWSVFNZ0FTRUNDeUFBSUFNMkFxQUZJQUFnQWpZQ3FBVURRQ0FBS0FLa0JTQUVUUVJBSUFBZ0JSQTJCU0FFUVJ4c0lnTWdBQ2dDb0FWcUlnSWdBeUFGYWlJREtRSUFOd0lBSUFJZ0F5Z0NHRFlDR0NBQ0lBTXBBaEEzQWhBZ0FpQURLUUlJTndJSUlBUkJBV29oQkF3QkN3c0xJQUFvQXFRRklnUWdBU0FCSUFSSkd5RURBMEFnQXlBRVJnUkFJQUFnQVRZQ3BBVUZJQUFvQXFBRklBUkJIR3hxSWdKQ0FEY0NGQ0FDUVFBNkFCQWdBa0VBT2dBQUlBUkJBV29oQkF3QkN3c0xuZ0VCQlg4akFFRVFheUlGSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlFTmdJTUlBVWdCRFlDQ0NNQVFSQnJJZ1FrQUNBQVFZd0JhaUlHRVAwRklRY2dBaWdDQUNFQ0lBVW9BZ2doQ0NBQUtBSUlJUUFnQkNBRFFReHFOZ0lJSUFRZ0F5Z0NEQ0FEUnpvQURDQUdJQWNnQUNBSUlBRWdBaUFFUVFocUVQNEZJZ0FRS0NBR0lBWW9BaGhCQVdvMkFoZ2dCRUVRYWlRQUlBVkJFR29rQUNBQUMxQUJBWDhnQWdSQUlBRW9BaUFpQUNBQktBSWtRUUowYWlFREFrQURRQ0FBSUFOR0RRRWdBQ2dDQUNnQ0JFR1kvUkZIQkVBZ0FFRUVhaUVBREFFTEN5QUFJQUkyQWdBUEN5QUJJQUlRa0FVTEN5OEJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUJCQ0dvZ0FrRU1haERzQVNFQUlBSkJFR29rQUNBQVFRQkhDNHNJQVFsL0l3QkJ3QUZySWdVa0FFRURJUWNnQlVFRE5nSzhBU0FGUVFBMkFyZ0JJQUJCSUdvaEJDQUZRU0JxSVFvZ0FpZ0NCQ0VJSUFJb0FnQWhBZ0ovQTBBZ0FpQUlSd1JBQWtBZ0JRSi9JQUlvQWdBaUJpQUNLQUlFUmdSQUlBVkJDR3BCeHFvRlFmRU5RUWNnQlVHb0FXb1FIU0lHRUJjaENTQUtRWXpaQ0JBT0dpQUpFQmdnQmhBZUlBSW9BZ0FoQmdzQ1FBSkFBa0FDUUFKQUlBWW9BZ0FpQ1VFTmF3NEZBZ0VHQXdRQUN5QUpRUjVIRFFVZ0FpZ0NCQ0FHYTBFSVJ3UkFJQUJCQURvQWxBTWdBRUdvQkdwQm1lZ0VFQmtvQWdBTUNRc2dCU0FHTlFJRU53TUlJd0JCRUdzaUJpUUFJQVlnQkNBRlFRaHFFT2tGTmdJTUlBUWdCRUhZQW1vZ0JrRU1haENNR1NFSklBWkJFR29rQUNBQ0lBTWdDUkR0RGlBQkVQZ0lSUTBGQzBFQklRY2dCVUVCTmdLOEFRd0VDeUFCRVBnSUJFQWdBRUVBT2dDVUF5QUFRYWdFYWtHTmhBWVFHU2dDQUF3SEMwRUNJUWNnQlVFQ05nSzhBUXdEQ3lBQkVQZ0lCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrSFRnd1lRR1NnQ0FBd0dDMEVDREFFTElBRVErQWdFUUNBQVFRQTZBSlFESUFCQnFBUnFRWnVEQmhBWktBSUFEQVVMUVFNTElnczJBcmdCQ3lBQ1FReHFJUUlNQVFzTEFrQUNRQ0FIUVFGR0JIOGpBRUVRYXlJQkpBQWdBVUVBT2dBTUlBRWdBMEVnYWpZQ0NDQUJRUWhxRU00Y0lRSWdBVUVRYWlRQUlBSU5BU0FGUVFNMkFyd0JRUU1GSUFjTFFRTkhEUUFnQzBVTkFRc2dBeUVNSUFSQjJBSnFJUVlnQlVHOEFXb2hBU01BUVJCcklnSWtBQUovSUFWQnVBRnFJZ2dvQWdCRkJFQWdBaUFFSUFFUTZSZzJBZ3dnQWtFQU5nSUlJd0JCRUdzaUFTUUFJQVFRSENBRUlBUW9BZ3hCQVdvaUF6WUNEQ0FCSUFNMkFnZ2dCRUdNQVdvaUF5QURFTVVDSUFRb0FnZ2dBU2dDQ0NBR0lBSW9BZ3hCQUJDRUVTSUVFQ2dnQXlBREtBSVlRUUZxTmdJWUlBUWhBeUFCUVJCcUpBQWdBd3dCQ3lBQ0lBUWdBUkRwR0RZQ0RDTUFRUkJySWdNa0FDTUFRU0JySWdja0FDTUFRU0JySWdFa0FDQUJRUWhxSWdvZ0NCRDBFQ0FCSUFFb0Fnd2dBUzBBRXlJSUlBaEJHSFJCR0hWQkFFZ2lDQnMyQWh3Z0FTQUJLQUlJSUFvZ0NCczJBaGdnQVNBQktRTVlOd01BSUFjZ0JDQUJFT0VCSUFvUUR4b2dBVUVnYWlRQUlBUWdCRUhZQW1vZ0J4RE9BaUVCSUFkQklHb2tBQ0FESUFFMkFnd2dCQ0FCUVJCcUlBTkJER29Rc3dNaEFTQURRUkJxSkFBZ0FpQUJOZ0lJSXdCQkVHc2lBU1FBSUFRUUhDQUVJQVFvQWd4QkFXb2lBellDRENBQklBTTJBZ2dnQkVHTUFXb2lBeUFERU1VQ0lBUW9BZ2dnQVNnQ0NDQUdJQUlvQWd3Z0FpZ0NDQkNFRVNJRUVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFRaEF5QUJRUkJxSkFBZ0F3c2hBU0FDUVJCcUpBQWdEQ0FCRUpBRkN5QUFRWlFEYWdzdEFBQWhBQ0FGUWNBQmFpUUFJQUFMWHdFRGZ5QUFLQUlrSVFNZ0FDZ0NJQ0VBQTBBQ1FDQUFJQU5HSWdRTkFDQUFLQUlBSWdKQmZuRkJBa2NnQWtFQmEwRUZTWEVFUUNBQklBQW9BaGdpQWlBQVFReHFJQUliS0FJQUVJb0NSUTBCQ3lBQVFSeHFJUUFNQVFzTElBUUwzZ2tDQ0g4RGZpTUFRY0FCYXlJRUpBQWdBU2dDcEFVaUNDQUJLQUtzQlNJRlFaWUJiRUdXQVdwQjVBQnVTUVJBSXdCQm9BSnJJZ2NrQUVFWUlBVkJBWFJCQW1wQmxnRnNRZVFBYmlJRklBVkJHRTBiSWdvZ0FTZ0NwQVZMQkVBZ0IwS0FnSUNBZ0FJM0FwUUNJQWNnQjBFUWFpSUZOZ0tRQWlBRklBRW9BcXdGRU9zWUlBRW9BcUFGSWdVZ0FTZ0NwQVZCSEd4cUlRc0RRQUpBSUFVZ0MwWUVRQ0FCRUtJWklBRWdDaERyRGlBSEtBS1FBaUlGSUFjb0FwUUNRUVIwYWlFR0RBRUxJQVV0QUJBRVFDQUZFTk1iSVFrZ0IwRVFhaUlHS0FLRUFpSUlJQVlvQW9nQ1R3UkFJQVlnQmlnQ2lBSWlDRUVCZEVFQ0lBZ2JFT3NZSUFZb0FvUUNJUWdMSUFZZ0NFRUJhallDaEFJZ0JpZ0NnQUlnQ0VFRWRHb2lCaUFKS1FJSU53SUlJQVlnQ1NrQ0FEY0NBQXNnQlVFY2FpRUZEQUVMQ3dOQUlBVWdCa2NFUUNBSFFRaHFJQUVnQlNBRlFRUnFFUEVPSUFWQkVHb2hCUXdCQ3dzZ0IwRVFhaENUQlFzZ0IwR2dBbW9rQUNBQktBS2tCU0VJQ3lBSVFRRnJJUW9nQWlnQ0FDSUdJQWh3SVFjZ0FTZ0NvQVVoQ1VFQUlRSUNRQU5BSUFJZ0NFY0VRQ0FKSUFkQkhHeHFJZ1V0QUJCRkJFQWdCQ0FES0FJSU5nSUlJQVFnQXlrQ0FEY0RBQ0FGSUFZMkFnQWdCU0FFS1FNQU53SUVJQVVnQkNnQ0NEWUNEQ0FGUVFFNkFCQWdDU0FIUVJ4c2FpSURJQUkyQWhnZ0F5QUdOZ0lVSUFFZ0FTZ0NyQVZCQVdvMkFxd0ZJQUVnQVNnQ3NBVkJBV28yQXJBRklBQWdCVUVFYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FGS0FJVUlBWkhEUUFnQmlBRktBSUFSdzBBSUFCQkFqWUNBQ0FBSUFWQkJHbzJBZ1FNQXdzZ0FpQUZLQUlZU3dSQUlBUWdCallDb0FFZ0JDQURLQUlJTmdLc0FTQURLUUlBSVF3Z0JFRUJPZ0N3QVNBRUlBSTJBcmdCSUFRZ0REY0NwQUVnQkNBR05nSzBBU0FFSUFJMkFoZ2dCQ0FFS1FPd0FTSU1Od01RSUFRZ0JDa0RxQUVpRFRjRENDQUVJQVFwQTZBQklnNDNBd0FnQkNBRktBSVlOZ0s0QVNBRUlBVXBBaEEzQTdBQklBUWdCU2tDQ0RjRHFBRWdCQ0FGS1FJQU53T2dBU0FGSUFJMkFoZ2dCU0FPTndJQUlBVWdERGNDRUNBRklBMDNBZ2dnQkNBRUtBSzRBVUVCYWpZQ3VBRWdCMEVCYWlBQktBS2tCWEFoQmtFQUlRY2pBRUVnYXlFRElBRW9BcVFGSWdoQkFXc2hDUUpBQTBBZ0J5QUlSZzBCSUFFb0FxQUZJQVpCSEd4cUlnSXRBQkFFUUNBRUlBUW9BcmdCSWdvZ0FpZ0NHRXNFZnlBRElBSW9BaGcyQWhnZ0F5QUNLUUlRTndNUUlBTWdBaWtDQ0RjRENDQURJQUlwQWdBM0F3QWdBaUFFS0FLNEFUWUNHQ0FDSUFRcEFyQUJOd0lRSUFJZ0JDa0NxQUUzQWdnZ0FpQUVLUUtnQVRjQ0FDQUVJQU1vQWhnMkFyZ0JJQVFnQXlrREVEY0NzQUVnQkNBREtRTUlOd0tvQVNBRUlBTXBBd0EzQXFBQklBUW9BcmdCQlNBS0MwRUJhallDdUFFZ0JrRUJha0VBSUFZZ0NVY2JJUVlnQjBFQmFpRUhEQUVMQ3lBQ0lBUXBBcUFCTndJQUlBSWdCQ2dDdUFFMkFoZ2dBaUFFS1FLd0FUY0NFQ0FDSUFRcEFxZ0JOd0lJQ3lBQklBRW9BcXdGUVFGcU5nS3NCU0FCSUFFb0FyQUZRUUZxTmdLd0JTQUFJQVZCQkdvMkFnUWdBRUVBTmdJQURBTUZJQWRCQVdwQkFDQUhJQXBIR3lFSElBSkJBV29oQWd3Q0N3QUxDeUFFUVlhMUEwSHJBMEVPSUFSQm9BRnFFQjBpQVJBWElnSkJHR3BCbGpVUURob2dBaEFZSUFCQ0FEY0NBQ0FCRUI0TElBUkJ3QUZxSkFBTFlnRUNmeU1BUVJCcklnUWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQkNBRE5nSUlJQUJCakFGcUlnTWdBeEMvQVNBQUtBSUlJQVFvQWdnZ0FTQUNMUUFBRU8wVklnQVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JFRVFhaVFBSUFBTEVnQWdBQ2dDQUNBQlFRQVFPRUVBRUw0R0M4OEJBUU4vSXdCQkVHc2lCQ1FBSUFRZ0F6WUNEQ0FBS0FJQUlRWWdBQ2dDQkNBREVEZ2hBd0pBQWtBQ1FDQUdLQUswQlNBREVKUUJJZ0JGRFFBZ0FDZ0NGQ0lGUVRKSElBVkJLMGR4RFFCQkFTRUZJQUFReUFGQkFVWU5BUXNnQmtFQU9nQ1VBeUFHUWFnRWFrSFV5d2tRR1NBRVFReHFFSkVGUWY2eENoQVpJUUVDUUNBQUJFQWdCQ0FBRUZnTUFRc2dCRUcyeEFJUUZCb0xJQUVnQkJCTktBSUFMUUFBUVFCSElRVWdCQkFQR2d3QkN5QUJJQU0yQWdBZ0FpQUFRUUFRT0RZQ0FBc2dCRUVRYWlRQUlBVUx1Z0VCQm44Q2Z5QUJFTTRHSVFNQ1FDQUFLQUlnSWdKRkRRQWdBQ2dDSEFKL0lBSkJBV3NnQTNFZ0Fta2lBRUVCVFEwQUdpQURJQUlnQTBzTkFCb2dBeUFDY0FzaUJVRUNkR29vQWdBaUJFVU5BQ0FDUVFGcklRWWdBRUVCU3lFSEEwQWdCQ2dDQUNJRVJRMEJJQVFvQWdRaUFDQURSd1JBQWtBZ0IwVUVRQ0FBSUFaeElRQU1BUXNnQUNBQ1NRMEFJQUFnQW5BaEFBc2dBQ0FGUncwQ0RBRUxJQVJCQ0dvZ0FSRHlBMFVOQUFzZ0JBd0JDMEVBQzBFQVJ3c3ZBUUovSUFBb0FnQWhBaUFBS0FJRUlRRURRQ0FCSUFKSEJFQWdBVUVNYXhBeUlRRU1BUXNMSUFBZ0FqWUNCQXMzQVFGL0lBQW9BZ1FoQXdOQUlBRWdBa2NFUUNBRElBRW9BZ0EyQWdBZ0EwRUVhaUVESUFGQkJHb2hBUXdCQ3dzZ0FDQUROZ0lFQ3g4QUlBQW9BZ1FnQUNnQ0NFY0VRQ0FBSUFFUW1Sa1BDeUFBSUFFUW1Ca0xPUUVCZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUJCckExcUlBRVFteGtnQXkwQURBUkFJQUJCSUdvUThnSWdBaENYR1FzZ0EwRVFhaVFBQ3pJQkFuOENRQ0FBS0FJQUlnSWdBQ2dDQkVZTkFDQUNLQUlBSWdCQkhrc05BRUdBd0kyQUJDQUFka0VCY1NFQkN5QUJDNUlDQVFOL0l3QkIwQUJySWdRa0FDQUFRUUEyQWdnZ0FFSUFOd0lBSUFSQlFHc2dBU2dDd0FVZ0FoRGJDaUFFUWdBM0F6QWdCRUlBTndNb0lBUkJnSUNBL0FNMkFqZ2dCQ2dDUkNFR0lBUW9Ba0FoQVFOQUlBRWdCa1pGQkVBQ1FDQUJLQUlBSWdJb0FoUkJ5QUJIRFFBZ0FrRUJFRGdnQTBjTkFDQUVJQUpCQWhBNElnVTJBaVFnQlVFVFJpQUZRZXNwUm5JTkFDQUVRUmhxSUFSQktHb2dCRUVrYWhDV0FTQUVMUUFjUlEwQUlBUkJBRFlDSUNBRVFnQTNBeGdnQWlBRVFSaHFJZ1VRMHdvZ0FDQUVRUWhxSUFRb0FoaEJER29nQkNnQ0hCQ0FDeUlDRVBnT0lBSVFNaG9nQlJBeUdnc2dBVUVFYWlFQkRBRUxDeUFFUVNocUVFOGdCRUZBYXhBeUdpQUVRZEFBYWlRQUN4VUFJQUFvQWdSQkNHb2dBU2tEQUJEREJCb2dBQXNKQUNBQVFRQVFvUmtMOVFJQkJIOGdBRUc0NEJJMkFnQWdBRUhVRFdvUVR5QUFRY0FOYWhEZEJ5QUFRYXdOYWhEZEJ5QUFRZmdIYWlJQkVLSVpJQUZCQURZQ3BBVWdBU0FCS0FLZ0JSQTJJQUJCNUFkcUVFOGdBRUhRQjJvUTNRY2dBRUc4QjJvUVR5QUFRYWdIYWhCUElBQkJsQWRxSWdJb0FnZ2hBUU5BSUFFRVFDQUJLQUlBSVFNZ0FVRU1haEQ2R0NBQkVCOGdBeUVCREFFTEN5QUNFSnNESUFCQmdBZHFFRThnQUVIc0Jtb1EzUWNnQUVIWUJtb1EzUWNnQUVIRUJtb1FUeUFBUVl3R2FoQlBJQUJCK0FWcUVFOGdBRUhrQldvUVR5QUFRZEFGYWhCUElBQkJ4QVZxRURJYUlBQkJyQVZxRVAwT0lBQkJxQVZxRUlrWElBQkJ5QVJxSWdKQnhBQnFFSm9MSUFKQk1Hb2lCQ2dDQ0NFQkEwQWdBUVJBSUFFb0FnQWhBeUFCUVF4cUVKY2FJQUVRSHlBRElRRU1BUXNMSUFRUW13TWdBa0VjYWhDYUN5QUNRUWhxRUprTElBQkJzQVJxRUJZZ0FFR1lBMm9RVVNBQVFaQURhaENqR2lBQVFTQnFFSTRFR2lBQVFSUnFFRElhSUFBUXZCb0x6UWdDQ244QmZnSkFBMEFnQlVVTkFRSkFBa0FnQkNBSFRDQUZJQWRNY2tVRVFDQUFJUWdEUUNBRVJRMEZJQU1nQVNBSUVPZ0REUUlnQkVFQmF5RUVJQWhCQ0dvaENBd0FDd0FMSUFRZ0JVd05BU0FHSVFRZ0FTRUlBMEFnQWlBSVJnUkFBMEFnQkNBR1JnMEdJQUFnQVVZRVFBTkFJQVFnQmtZTkNDQUNRUWhySWdJZ0JFRUlheUlFS1FJQU53SUFEQUFMQUFVZ0FrRUlheUlDSUFGQkNHc2lCU0FFUVFocklnY2dBeUFISUFVUTZBTWlDQnNwQWdBM0FnQWdCQ0FISUFnYklRUWdCU0FCSUFnYklRRU1BUXNBQ3dBRklBUWdDQ2tDQURjQ0FDQUVRUWhxSVFRZ0NFRUlhaUVJREFFTEFBc0FDd0pBSUFRZ0JVZ0VRQ0FCSUFoclFRTjFJUUFnQVNBRlFRSnRJZ3hCQTNScUlRc2dDQ0VKQTBBZ0FBUkFJQUJCQVhZaURTQUFJQTFCZjNOcUlBTWdDeUFKSUExQkEzUnFJZzBRNkFNaUNoc2hBQ0FKSUExQkNHb2dDaHNoQ1F3QkN3c2dDU0FJYTBFRGRTRU5EQUVMSUFSQkFVWUVRQ0FJS1FJQUlSSWdDQ0FCS1FJQU53SUFJQUVnRWpjQ0FBOExJQUlnQVd0QkEzVWhBQ0FJSUFSQkFtMGlEVUVEZEdvaENTQUJJUXNEUUNBQUJFQWdBQ0FBUVFGMklneEJmM05xSUF3Z0F5QUxJQXhCQTNScUlnd2dDUkRvQXlJS0d5RUFJQXhCQ0dvZ0N5QUtHeUVMREFFTEN5QUxJQUZyUVFOMUlRd0xJQUVnQ1VjRWZ5QUJJQXRHQkg4Z0NRVUNmeUFMSVFvZ0FTQUpRUWhxUmdSQUlBb2dBV3NoQUNBSktRSUFJUklnQVNBS1J3UkFJQWtnQVNBQUVPY0JHZ3NnQUNBSmFpSUFJQkkzQWdBZ0FBd0JDeUFLSUFGQkNHcEdCRUFnQ2tFSWF5SUFLUUlBSVJJZ0FDQUpSd1JBSUFvZ0FDQUpheUlBYXlJS0lBa2dBQkRuQVJvTElBa2dFamNDQUNBS0RBRUxBbjhnQVNBSmEwRURkU0lQSUFvZ0FXdEJBM1VpRUVjRVFDQVFJUUFnRHlFQkEwQWdBU0FBSWdGdklnQU5BQXNnQ1NBQlFRTjBhaUVPQTBBZ0NTQU9SZ1JBSUFrZ0VFRURkR29NQXdVZ0RrRUlheUlPSUE5QkEzUWlFV29oQVNBT0tRSUFJUklnRGlFQUEwQWdBQ0FCS1FJQU53SUFJQUVpQUNBUmFpQUpJQThnQ2lBQmEwRURkU0lCYTBFRGRHb2dBU0FQU2hzaUFTQU9SdzBBQ3lBQUlCSTNBZ0FNQVFzQUN3QUxJQWtoQUNBQklRb0RRQ0FBSUFGSEJFQWdBQ2tDQUNFU0lBQWdDaWtDQURjQ0FDQUtJQkkzQWdBZ0NrRUlhaUVLSUFCQkNHb2hBQXdCQ3dzZ0FRc0xDd1VnQ3dzaEFDQU1JQTFxSUFVZ0RHc2lCU0FFSUExcklnUnFTQVJBSUFnZ0NTQUFJQU1nRFNBTUlBWWdCeEQvRGlBTElRRU1BZ3NnQUNBTElBSWdBeUFFSUFVZ0JpQUhFUDhPSUF3aEJTQU5JUVFnQUNFQ0lBa2hBU0FJSVFBTUFRc0xJQVloQ0NBQUlRUURRQ0FCSUFSR0JFQURRQ0FHSUFoR0RRTWdBU0FDUmdSQUlBQWdCaUFJSUFackVPY0JHZ1VDUUNBRElBRWdCaERvQXdSQUlBQWdBU2tDQURjQ0FDQUJRUWhxSVFFTUFRc2dBQ0FHS1FJQU53SUFJQVpCQ0dvaEJnc2dBRUVJYWlFQURBRUxDd1VnQ0NBRUtRSUFOd0lBSUFoQkNHb2hDQ0FFUVFocUlRUU1BUXNMQ3d2a0NBSUtmd0orQWtBRFFDQUZSUTBCSUFRZ0Iwd2dCU0FIVEhKRkJFQWdBQ0VMQTBBZ0JFVU5BeUFCS1FNQUloSWdDeWtEQUNJVFdnUkFJQVJCQVdzaEJDQUxRUWhxSVFzTUFRc0xBa0FnQkNBRlNBUkFJQUVnQ3lJQWEwRURkU0VJSUFFZ0JVRUNiU0lNUVFOMGFpSUtLUU1BSVJJRFFDQUlCRUFnQ0VFQmRpSUpJQWdnQ1VGL2Myb2dFaUFBSUFsQkEzUnFJZ2twQXdCVUlnMGJJUWdnQUNBSlFRaHFJQTBiSVFBTUFRc0xJQUFpQ1NBTGEwRURkU0VOREFFTElBUkJBVVlFUUNBTElCSTNBd0FnQVNBVE53TUFEd3NnQWlBQklnQnJRUU4xSVFnZ0N5QUVRUUp0SWcxQkEzUnFJZ2twQXdBaEVnTkFJQWdFUUNBSUlBaEJBWFlpQ2tGL2Myb2dDaUFBSUFwQkEzUnFJZ29wQXdBZ0VsUWlEQnNoQ0NBS1FRaHFJQUFnREJzaEFBd0JDd3NnQUNJS0lBRnJRUU4xSVF3TElBRWdDVWNFZnlBQklBcEdCSDhnQ1FVQ2Z5QUtJUWdnQVNBSlFRaHFSZ1JBSUFnZ0FXc2hBQ0FKS1FNQUlSSWdBU0FJUndSQUlBa2dBU0FBRU9jQkdnc2dBQ0FKYWlJQUlCSTNBd0FnQUF3QkN5QUlJQUZCQ0dwR0JFQWdDRUVJYXlJQUtRTUFJUklnQUNBSlJ3UkFJQWdnQUNBSmF5SUFheUlJSUFrZ0FCRG5BUm9MSUFrZ0VqY0RBQ0FJREFFTEFuOGdBU0FKYTBFRGRTSVBJQWdnQVd0QkEzVWlFRWNFUUNBUUlRQWdEeUVCQTBBZ0FTQUFJZ0Z2SWdBTkFBc2dDU0FCUVFOMGFpRU9BMEFnQ1NBT1JnUkFJQWtnRUVFRGRHb01Bd1VnRGtFSWF5SU9JQTlCQTNRaUVXb2hBU0FPS1FNQUlSSWdEaUVBQTBBZ0FDQUJLUU1BTndNQUlBRWlBQ0FSYWlBSklBOGdDQ0FCYTBFRGRTSUJhMEVEZEdvZ0FTQVBTaHNpQVNBT1J3MEFDeUFBSUJJM0F3QU1BUXNBQ3dBTElBa2hBQ0FCSVFnRFFDQUFJQUZIQkVBZ0FDa0RBQ0VTSUFBZ0NDa0RBRGNEQUNBSUlCSTNBd0FnQ0VFSWFpRUlJQUJCQ0dvaEFBd0JDd3NnQVFzTEN3VWdDZ3NoQUNBTUlBMXFJQVVnREdzaUJTQUVJQTFySWdScVNBUkFJQXNnQ1NBQUlBTWdEU0FNSUFZZ0J4Q0FEeUFLSVFFTUFnc2dBQ0FLSUFJZ0F5QUVJQVVnQmlBSEVJQVBJQXdoQlNBTklRUWdBQ0VDSUFraEFTQUxJUUFNQVFzTElBSWhCd0pBQWtBZ0JDQUZTZ1JBSUFZaEF5QUJJUUlNQVFzZ0JpRURJQUFoQWdOQUlBRWdBa1lFUUFOQUFrQWdBeUFHUndSQUlBRWdCMGNOQVNBQUlBWWdBeUFHYXhEbkFSb0xEQVVMQWtBZ0FTa0RBQ0lTSUFZcEF3QWlFMVFFUUNBQUlCSTNBd0FnQVVFSWFpRUJEQUVMSUFBZ0V6Y0RBQ0FHUVFocUlRWUxJQUJCQ0dvaEFBd0FDd0FGSUFNZ0Fpa0RBRGNEQUNBRFFRaHFJUU1nQWtFSWFpRUNEQUVMQUFzQUN3TkFJQUlnQjBjRVFDQURJQUlwQXdBM0F3QWdBMEVJYWlFRElBSkJDR29oQWd3QkN3c0RRQUpBSUFNZ0JrWU5BQ0FBSUFGR0JFQURRQ0FESUFaR0RRSWdCMEVJYXlJSElBTkJDR3NpQXlrREFEY0RBQXdBQ3dBRklBZEJDR3NpQnlBRFFRaHJJZ0lwQXdBaUVpQUJRUWhySWdRcEF3QWlFeUFTSUJOV0d6Y0RBQ0FESUFJZ0VpQVRWQ0lDR3lFRElBUWdBU0FDR3lFQkRBSUxBQXNMQ3dzTDlnVUJCMzhDUUFOQUlBUkZEUUVDUUFKQUlBTWdCa3dnQkNBR1RISkZCRUFnQUNFSEEwQWdBMFVOQlNBQktBSUFJZ0FvQWdnZ0J5Z0NBQ0lJS0FJSVNRMENJQU5CQVdzaEF5QUhRUVJxSVFjTUFBc0FDeUFESUFSTURRRWdCU0VESUFFaEJ3TkFJQUlnQjBZRVFBTkFJQU1nQlVZTkJpQUFJQUZHQkVBRFFDQURJQVZHRFFnZ0FrRUVheUlDSUFOQkJHc2lBeWdDQURZQ0FBd0FDd0FGSUFKQkJHc2lBaUFCUVFScklnWW9BZ0FpQkNBRFFRUnJJZ2NvQWdBaUNDQUlLQUlJSUFRb0FnaEpJZ1FiTmdJQUlBTWdCeUFFR3lFRElBWWdBU0FFR3lFQkRBRUxBQXNBQlNBRElBY29BZ0EyQWdBZ0EwRUVhaUVESUFkQkJHb2hCd3dCQ3dBTEFBc0NRQ0FESUFSSUJFQWdBU0FIYTBFQ2RTRUFJQUVnQkVFQ2JTSUpRUUowYWlJSUtBSUFJUXdnQnlFTEEwQWdBQVJBSUFCQkFYWWlDaUFBSUFwQmYzTnFJQXdvQWdnZ0N5QUtRUUowYWlJS0tBSUFLQUlJU1NJTkd5RUFJQXNnQ2tFRWFpQU5HeUVMREFFTEN5QUxJQWRyUVFKMUlRb01BUXNnQTBFQlJnUkFJQWNnQURZQ0FDQUJJQWcyQWdBUEN5QUNJQUZyUVFKMUlRQWdCeUFEUVFKdElncEJBblJxSWdzb0FnQWhEQ0FCSVFnRFFDQUFCRUFnQUNBQVFRRjJJZ2xCZjNOcUlBa2dDQ0FKUVFKMGFpSUpLQUlBS0FJSUlBd29BZ2hKSWcwYklRQWdDVUVFYWlBSUlBMGJJUWdNQVFzTElBZ2dBV3RCQW5VaENRc2dDeUFCSUFnUXR4a2hBQ0FKSUFwcUlBUWdDV3NpQkNBRElBcHJJZ05xU0FSQUlBY2dDeUFBSUFvZ0NTQUZJQVlRZ1E4Z0NDRUJEQUlMSUFBZ0NDQUNJQU1nQkNBRklBWVFnUThnQ1NFRUlBb2hBeUFBSVFJZ0N5RUJJQWNoQUF3QkN3c2dCU0VISUFBaEF3TkFJQUVnQTBZRVFBTkFJQVVnQjBZTkF5QUJJQUpHQkVBZ0FDQUZJQWNnQldzUTV3RWFCUUpBSUFFb0FnQWlBeWdDQ0NBRktBSUFJZ1FvQWdoSkJFQWdBQ0FETmdJQUlBRkJCR29oQVF3QkN5QUFJQVEyQWdBZ0JVRUVhaUVGQ3lBQVFRUnFJUUFNQVFzTEJTQUhJQU1vQWdBMkFnQWdCMEVFYWlFSElBTkJCR29oQXd3QkN3c0xDL01GQVFaL0FrQURRQ0FGUlEwQkFrQUNRQ0FFSUFkTUlBVWdCMHh5UlFSQUlBQWhDQU5BSUFSRkRRVWdBeUFCS0FJQUlBZ29BZ0FRNlFNTkFpQUVRUUZySVFRZ0NFRUVhaUVJREFBTEFBc2dCQ0FGVEEwQklBWWhCQ0FCSVFnRFFDQUNJQWhHQkVBRFFDQUVJQVpHRFFZZ0FDQUJSZ1JBQTBBZ0JDQUdSZzBJSUFKQkJHc2lBaUFFUVFScklnUW9BZ0EyQWdBTUFBc0FCU0FDUVFScklnSWdBVUVFYXlJRklBUkJCR3NpQnlBRElBY29BZ0FnQlNnQ0FCRHBBeUlJR3lnQ0FEWUNBQ0FFSUFjZ0NCc2hCQ0FGSUFFZ0NCc2hBUXdCQ3dBTEFBVWdCQ0FJS0FJQU5nSUFJQVJCQkdvaEJDQUlRUVJxSVFnTUFRc0FDd0FMQWtBZ0JDQUZTQVJBSUFFZ0NHdEJBblVoQUNBQklBVkJBbTBpQ1VFQ2RHb2hDeUFJSVF3RFFDQUFCRUFnQUVFQmRpSUtJQUFnQ2tGL2Myb2dBeUFMS0FJQUlBd2dDa0VDZEdvaUNpZ0NBQkRwQXlJTkd5RUFJQXdnQ2tFRWFpQU5HeUVNREFFTEN5QU1JQWhyUVFKMUlRb01BUXNnQkVFQlJnUkFJQWdvQWdBaEFDQUlJQUVvQWdBMkFnQWdBU0FBTmdJQUR3c2dBaUFCYTBFQ2RTRUFJQWdnQkVFQ2JTSUtRUUowYWlFTUlBRWhDd05BSUFBRVFDQUFJQUJCQVhZaUNVRi9jMm9nQ1NBRElBc2dDVUVDZEdvaUNTZ0NBQ0FNS0FJQUVPa0RJZzBiSVFBZ0NVRUVhaUFMSUEwYklRc01BUXNMSUFzZ0FXdEJBblVoQ1FzZ0RDQUJJQXNRdHhraEFDQUpJQXBxSUFVZ0NXc2lCU0FFSUFwcklnUnFTQVJBSUFnZ0RDQUFJQU1nQ2lBSklBWWdCeENDRHlBTElRRU1BZ3NnQUNBTElBSWdBeUFFSUFVZ0JpQUhFSUlQSUFraEJTQUtJUVFnQUNFQ0lBd2hBU0FJSVFBTUFRc0xJQVloQ0NBQUlRUURRQ0FCSUFSR0JFQURRQ0FHSUFoR0RRTWdBU0FDUmdSQUlBQWdCaUFJSUFackVPY0JHZ1VDUUNBRElBRW9BZ0FnQmlnQ0FCRHBBd1JBSUFBZ0FTZ0NBRFlDQUNBQlFRUnFJUUVNQVFzZ0FDQUdLQUlBTmdJQUlBWkJCR29oQmdzZ0FFRUVhaUVBREFFTEN3VWdDQ0FFS0FJQU5nSUFJQWhCQkdvaENDQUVRUVJxSVFRTUFRc0xDd3ZHQkFJSWZ3SjlJd0JCRUdzaUJpUUFJQUlROUFNaEJ5QUFBbjhDUUNBQktBSUVJZ1JGRFFBZ0FTZ0NBQUovSUFSQkFXc2dCM0VnQkdraUNVRUJUUTBBR2lBSElBUWdCMHNOQUJvZ0J5QUVjQXNpQ0VFQ2RHb29BZ0FpQlVVTkFDQUVRUUZySVFvZ0FpZ0NBQ0VMSUFsQkFVc2hDUU5BSUFVb0FnQWlCVVVOQVNBSElBVW9BZ1FpQWtjRVFBSkFJQWxGQkVBZ0FpQUtjU0VDREFFTElBSWdCRWtOQUNBQ0lBUndJUUlMSUFJZ0NFY05BZ3NnQlNnQ0NDQUxSdzBBQzBFQURBRUxJQVlnQVNBSElBTVE0Z2dDUUVFQUlBUWdBU2dDREVFQmFyTWlEQ0FCS2dJUUlnMGdCTE9VWGhzTkFDQUJJQVFnQkVFQmEzRkJBRWNnQkVFRFNYSWdCRUVCZEhJaUFnSi9JQXdnRFpXTklneERBQUNBVDEwZ0RFTUFBQUFBWUhFRVFDQU1xUXdCQzBFQUN5SURJQUlnQTBzYkVNTUJJQUVvQWdRaUJDQUVRUUZyY1VVRVFDQUVRUUZySUFkeElRZ01BUXNnQkNBSFN3UkFJQWNoQ0F3QkN5QUhJQVJ3SVFnTEFrQWdDRUVDZENJRElBRW9BZ0JxS0FJQUlnSkZCRUFnQmlnQ0FDQUJLQUlJTmdJQUlBRWdCaWdDQURZQ0NDQUJLQUlBSUFOcUlBRkJDR28yQWdBZ0JpZ0NBQ0lDS0FJQUlnTkZEUUVnQXlnQ0JDRUZBa0FnQkNBRVFRRnJJZ054UlFSQUlBTWdCWEVoQlF3QkN5QUVJQVZMRFFBZ0JTQUVjQ0VGQ3lBQktBSUFJQVZCQW5ScUlBSTJBZ0FNQVFzZ0JpZ0NBQ0FDS0FJQU5nSUFJQUlnQmlnQ0FEWUNBQXNnQmlnQ0FDRUZJQVpCQURZQ0FDQUJJQUVvQWd4QkFXbzJBZ3dnQmhDTEFVRUJDem9BQkNBQUlBVTJBZ0FnQmtFUWFpUUFDMFlCQW44akFFRVFheUlFSkFBZ0JDQUFRUVJxSWdVZ0JTZ0NBRUhZQW1vUTRobzJBZ2dnQUNBQVFkZ0NhaUFFUVFocUlBRWdBaUFERUtZWklRQWdCRUVRYWlRQUlBQUxEd0FnQUNnQ0JDQUJFTWtaR2lBQUMwUUJBWDhnQUNnQ0JDSUJJQUVvQWdBb0FqQVJBQUFvQWhSQklFY0VRRUhCdFFsQjBLa0RRZmNCUWFIVkF4QUFBQXNnQUNBQUtBSUFLQUpnRVFBQUtBSUFLZ0lBQzRzQkFRTi9Jd0JCTUdzaUF5UUFBa0FnQUNBQkVHQWlBUkNVQWlJRlJRMEFJQVV0QUNGRkRRQWdBMEVnYWlBQUtBSWdJQUVRa3dJUVZDRUJJQU5CQURZQ0dDQURRZ0EzQXhBZ0EwSUFOd01JSUFNZ0FDZ0NDQ0FCRU5JQ05nSUVJQUFnQUNBRFFRaHFJQU5CQkdvZ0FrRUVhaERwR1JESkFSb2dBUkFQR2tFQklRUUxJQU5CTUdva0FDQUVDeE1BSUFBZ0FVSC8vLy8vQVVFRFFRUVE0eElMMEFRQkJIOGpBRUhBQVdzaUJDUUFBa0FDUUFKQUFrQUNRQUpBSUFGQkpHb2dBa0VFYWhDZUFpZ0NERUVCYXc0RkFBRUNBd1FGQ3lBQ0tBSVVJZ05GQkVBZ0JFRWdha0c1b1FWQnRSbEJCeUFFRUIwaUJoQVhJZ2RCR0dwQm5kb0lFQTRhSUFjUUdDQUdFQjRMSUFBZ0F4QjhLQUlnSWdNb0FoUkJBa2NFUUNBRVFTQnFRYm1oQlVHM0dVRUhJQVFRSFNJR0VCY2lCMEVZYWtIdHNnZ1FEaG9nQnhBWUlBWVFIZ3NnQVNnQ0NFRUJhaUlCSUFJb0FnaEdEUVFDUUNBREtBSWdJQUZMRFFBZ0F5Z0NKQ0FCVFEwQUlBQWdBQ2dDNkFZZ0FVRUNkR29vQWdBUWZDSUJLQUk0SUFOR0RRVWdBU2dDUENBRFJnMEZDeUFFUVFBMkFqQWdCRUlBTndNb0lBUkNBRGNESUNBQUlBUkJJR29Ra1FzaEJRd0VDeUFFUVFBMkFqQWdCRUlBTndNb0lBUkNBRGNESUNBQUlBUkJJR29Ra1FzaEJRd0RDeUFDS0FJSUlBRW9BZ2hCQVdwR0RRSWdCRUVBTmdJd0lBUkNBRGNES0NBRVFnQTNBeUFnQUNBRVFTQnFFSW9QSVFVTUFnc2dBQ0FDS0FJVUVId2lBU2dDbUFFZ0FTMEFud0VpQWlBQ1FSaDBRUmgxUVFCSUcwVU5BU0FCUVpRQmFpRUJJQU1FUUNBRElBRVE0QUlMSUFSQkFEWUNNQ0FFUWdBM0F5Z2dCRUlBTndNZ0lBUWdBQ2dDQ0NBQkVOSUNOZ0ljSUFSQkFEWUNFQ0FFUWdBM0F3Z2dCRUlBTndNQUl3QkJFR3NpQVNRQUlBRkJBRG9BRHlBQUlBUWdBVUVQYWhDTEdpRUNJQUZCRUdva0FDQUVJQUkyQWhnZ0FDQUVRU0JxSUFSQkhHb2dCRUVZYWhEcEdTRUZEQUVMSUFBb0Fod2lBQ2dDQUVFQU9nQUFJQUJCbTRZR0VCa2FDeUFFUWNBQmFpUUFJQVVMREFBZ0FDZ0NDQ0FCRUl3ZkMyc0JBbjhqQUVFd2F5SUJKQUFnQVVFb2FoQ1lCQ0VDSUFGQkFEWUNJQ0FCUVFBMkFoZ2dBVUlBTndNUUlBRkNBRGNEQ0NBQUlBSW9BZ0FnQVNnQ0lDQUJRUWhxRU9VRUlnQkJzTmNTTmdJRUlBQkJ0TmtTTmdJQUlBQkIwTmNTTmdJQUlBRkJNR29rQUNBQUM0a0JBUUovSXdCQkVHc2lBeVFBQWtBZ0FVVUVRRUVBSVFFTUFRc2dBU2dDQkNJRVFmakxFa1lFUUNBRFFRaHFJQUFnQWhDVUN5QUFLQUlFSUFFb0FnZ2dBeWdDQ0NBREtBSU1FS0VQSVFFTUFRc2dCRUdRekJKSERRQWdBMEVJYWlBQUlBSVFsQXNnQUNnQ0JDQUJLQUlJSUFNb0FnZ2dBeWdDREJDYkN5RUJDeUFEUVJCcUpBQWdBUXVLQWdFQ2Z5TUFRUkJySWdRa0FBSkFBa0FnQTBVTkFDQUNLQUlBUlEwQUlBSW9BZ1JGRFFBZ0FTZ0NHQ0FERUhvUTZRRWlBMFVOQUNBQ0tBSUFLQUlFUVpETUVrY05BQ0FESUFNb0FnQW9BbndSQUFCRkRRQWdCRUVJYWlBQ0VGc2hCU01BUVNCcklnSWtBQUpBSUFVb0FnQWlBeWdDQkVHUXpCSkdRUUFnQXh0RkJFQWdBU2dDSENJQktBSUFRUUE2QUFBZ0FVSEtrUVFRR1JvZ0FCQm5HZ3dCQ3lBQktBSUVJQU1vQWdnZ0F5Z0NERUVBRUtFUElRTWdBa0VBTmdJWUlBSkNBRGNERUNBQ1FnQTNBd2dnQWtFQU5nSUVJQUFnQXlBQklBSkJDR29nQWtFRWFpQUZRUVJxRU5nSEVHa2FDeUFDUVNCcUpBQU1BUXNnQUNBQ0VGc2FDeUFFUVJCcUpBQUx2d1FDQjM4Q2ZTTUFRUkJySWdZa0FDQUNLQUlBSVFVZ0FBSi9Ba0FnQVNnQ0JDSUVSUTBBSUFFb0FnQUNmeUFFUVFGcklBVnhJQVJwSWdkQkFVME5BQm9nQlNBRUlBVkxEUUFhSUFVZ0JIQUxJZ2hCQW5ScUtBSUFJZ0pGRFFBZ0JFRUJheUVKSUFkQkFVc2hDZ05BSUFJb0FnQWlBa1VOQVNBRklBSW9BZ1FpQjBjRVFBSkFJQXBGQkVBZ0J5QUpjU0VIREFFTElBUWdCMHNOQUNBSElBUndJUWNMSUFjZ0NFY05BZ3NnQWlnQ0NDQUZSdzBBQzBFQURBRUxJQVlnQVNBRklBTVE0Z2dDUUVFQUlBUWdBU2dDREVFQmFyTWlDeUFCS2dJUUlnd2dCTE9VWGhzTkFDQUJJQVFnQkVFQmEzRkJBRWNnQkVFRFNYSWdCRUVCZEhJaUFnSi9JQXNnREpXTklndERBQUNBVDEwZ0MwTUFBQUFBWUhFRVFDQUxxUXdCQzBFQUN5SURJQUlnQTBzYkVNTUJJQUVvQWdRaUJDQUVRUUZyY1VVRVFDQUVRUUZySUFWeElRZ01BUXNnQkNBRlN3UkFJQVVoQ0F3QkN5QUZJQVJ3SVFnTEFrQWdDRUVDZENJRElBRW9BZ0JxS0FJQUlnSkZCRUFnQmlnQ0FDQUJLQUlJTmdJQUlBRWdCaWdDQURZQ0NDQUJLQUlBSUFOcUlBRkJDR28yQWdBZ0JpZ0NBQ0lES0FJQUlnSkZEUUVnQWlnQ0JDRUNBa0FnQkNBRVFRRnJJZ1Z4UlFSQUlBSWdCWEVoQWd3QkN5QUNJQVJKRFFBZ0FpQUVjQ0VDQ3lBQktBSUFJQUpCQW5ScUlBTTJBZ0FNQVFzZ0JpZ0NBQ0FDS0FJQU5nSUFJQUlnQmlnQ0FEWUNBQXNnQmlnQ0FDRUNJQVpCQURZQ0FDQUJJQUVvQWd4QkFXbzJBZ3dnQmhDTEFVRUJDem9BQkNBQUlBSTJBZ0FnQmtFUWFpUUFDeVlCQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUl0QUJ3YUN5QUNFQjhMQ3drQUlBQkJBQkNBR2d0bUFRSi9Jd0JCRUdzaUF5UUFJQU1nQWlnQ0FEWUNEQ01BUVJCcklnSWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnUTJBZ3dnQWlBRU5nSUlJQUJCakFGcUlBQkJDR29nQWtFSWFpQUJJQU5CREdvUTBCb2hBQ0FDUVJCcUpBQWdBMEVRYWlRQUlBQUxLd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQUNBQklBTkJER29Ra1I4aEFDQURRUkJxSkFBZ0FBc2tBQ0FCRUhvaEFTQUFLQUlRSUFFUWxBRkJBUkE0SVFFZ0FDZ0NBQ0FCUVFBUWhRRUxDUUFnQUNnQ0FCQjZDNWdEQVFWL0l3QkIwQUZySWdNa0FDQUFLQUswQmtVRVFDQURRU0JxUWJtaEJVSGhCa0VISUFOQndBRnFFQjBpQkJBWElnVkJHR3BCNCtRSUVBNGFJQVVRR0NBRUVCNExJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFZCQUVnYlJRUkFJQU5CSUdwQnVhRUZRZUlHUVFjZ0EwSEFBV29RSFNJRUVCY2lCVUVZYWtHWDRnZ1FEaG9nQlJBWUlBUVFIZ3NnQUNnQ3NBWWhCU0FBS0FLMEJpRUhJQUFvQWdnaEJDQURRUUEyQWpBZ0EwSUFOd01vSUFOQ0FEY0RJQ0FFSUFOQklHb2dBUkRrQlNFRUlBQW9BclFHSWdGRkJFQWdBMEVnYWtITHNnTkJpZ2xCQnlBRFFjQUJhaEFkSWdFUUZ5SUdRUmhxUWVQa0NCQU9HaUFHRUJnZ0FSQWVJQUFvQXJRR0lRRUxJQUFvQXJBR0lRWWdBMEV3RUJVZ0JCQ1FHaUlFTmdJZ0lBWWdBVUhnQUd4cUlnRkI0QUJySUFRUThnZ2dBVUVVYXlBRFFTQnFJZ0VRamhvZ0FSQzNBaUFIUWVBQWJDQUZha0hnQUdzb0FnQWhBU0FESUFBMkFoQWdBeUFFTmdJTUlBTkI0TmtTTmdJSUlBTWdBMEVJYWlJRU5nSVlJQUFnQVNBQ0lBUVEyQVFnQkJBV0lBTkIwQUZxSkFBTEh3QWdBQ2dDRUNJQVJRUkFFRzhBQ3lBQUlBRWdBQ2dDQUNnQ0dCRUNBQXRDQUNBQUlBRXBBd0EzQXdBZ0FFRUlhaUFCUVFocUVORUJHaUFBUVNCcUlBRkJJR29RMVFZYUlBQkJ6QUJxSUFGQnpBQnFFS1VDR2lBQUlBRXRBRmc2QUZnTFNBQkIzeUVnQVhaQkFYRkZJQUZCRFU5eVJRUkFJQUZCQW5SQnJJQU5haWdDQUE4TElBQW9BZ0JCQURvQUFDQUFLQUlFUVFocUlnQkIyZVVMRUE0YUlBQWdBUkFoR2tFQUMwb0JBWDhnQUVFQU5nSU1JQUFnQXpZQ0VDQUJCRUFnQVJDVkdpRUVDeUFBSUFRMkFnQWdBQ0FFSUFKQkRHeHFJZ0kyQWdnZ0FDQUVJQUZCREd4cU5nSU1JQUFnQWpZQ0JDQUFDeDBBSUFBZ0FVR3ExYXJWQUVFTVFkV3ExYW9CUWRhcTFhb0JFTklNQ3pBQkFYOGdBQ2dDQUNFQklBQkJBRFlDQUNBQkJFQWdBQzBBQ0FSQUlBRkJDR29RRHhvTElBRUVRQ0FCRUI4TEN3dWlCQUlLZndGOUFrQUNmMEVDSUFGQkFVWU5BQm9nQVNBQklBRkJBV3R4UlEwQUdpQUJFSDhMSWdJZ0FDZ0NCQ0lCVFFSQUlBRWdBazBOQVNBQlFRTkpJUU1DZnlBQUtBSU1zeUFBS2dJUWxZMGlERU1BQUlCUFhTQU1Rd0FBQUFCZ2NRUkFJQXlwREFFTFFRQUxJUVFnQVNBQ0lBTWdBV2xCQVV0eUJIOGdCQkIvQlNBRVFRRkJJQ0FFUVFGcloydDBJQVJCQWtrYkN5SUJJQUVnQWtrYklnSk5EUUVMSUFBaEEwRUFJUUFDUUNBQ0JFQWdBeUFDRUpjREVHd2dBeUFDTmdJRUEwQWdBQ0FDUmdSQUlBTW9BZ2dpQkVVTkF5QURRUWhxSVFBZ0JDZ0NCQ0VGQWtBZ0Fta2lBVUVCVFFSQUlBVWdBa0VCYTNFaEJRd0JDeUFDSUFWTERRQWdCU0FDY0NFRkN5QURLQUlBSUFWQkFuUnFJQUEyQWdBZ0FrRUJheUVJSUFGQkFVc2hDUU5BSUFRb0FnQWlBVVVOQkNBQktBSUVJUUFDUUNBSlJRUkFJQUFnQ0hFaEFBd0JDeUFBSUFKSkRRQWdBQ0FDY0NFQUN5QUFJQVZIQkVBZ0FFRUNkQ0lISUFNb0FnQnFJZ1lvQWdBRVFDQUJRUWhxSVFvZ0FTRUFBMEFDUUNBQUlnWW9BZ0FpQUVVRVFFRUFJUUFNQVFzZ0NpQUFRUWhxRVBJRElRc2dCaWdDQUNFQUlBc05BUXNMSUFRZ0FEWUNBQ0FHSUFNb0FnQWdCMm9vQWdBb0FnQTJBZ0FnQXlnQ0FDQUhhaWdDQUNBQk5nSUFEQUlMSUFZZ0JEWUNBQ0FBSVFVTElBRWhCQXdBQ3dBRklBTW9BZ0FnQUVFQ2RHcEJBRFlDQUNBQVFRRnFJUUFNQVFzQUN3QUxJQU5CQUJCc0lBTkJBRFlDQkFzTEMrVUJBUUYvSXdCQjRBRnJJZ1VrQUNBRklBSTJBdEFCSUFVZ0FUWUMyQUVnQUNBRktBTFlBU0FGS0FMUUFTQURFTmtFSWdCQm1PZ1BOZ0lFSUFCQnpPZ1BOZ0lBSUFCQnVPZ1BOZ0lBSUFWQnNBRnFJQUJCSkdvZ0JCQldJZ01RVmlFQkl3QkJFR3NpQWlRQUlBRW9BZ0JCZjBjRWZ5QUJRUVJxQlNBQ1FRaHFFSmdFQ3lnQ0FDRUJJQUpCRUdva0FDQUJJQUFvQWdoQkFVRUFRWm5LQ0VISG5nVkJHUkJMSUFNb0FnQkJmMFlFUUNBRlFjZWVCVUVhUVFBZ0JVR2dBV29RSFNJQkVCY2lBa0VZYWtHRjZnZ1FEaG9nQWhBWUlBRVFIZ3NnQlVIZ0FXb2tBQ0FBQ3owQUlBQWdBUkQxRGdSQUlBQW9BZ0JCQURvQUFDQUFRZUN3REJBWklBRVFUU2dDQUMwQUFFRUFSdzhMSUFCQkhHb2dBUkNmRDBFQU5nSUFRUUVMbmdVQ0NuOENmU01BUVNCcklnZ2tBQ0FJSUFFMkFoQWdDRUVRYWlFSkl3QkJFR3NpQlNRQUlBRVF6Z1loQXlBSUFuOENRQ0FBS0FJRUlnSkZEUUFnQUNnQ0FBSi9JQUpCQVdzZ0EzRWdBbWtpQmtFQlRRMEFHaUFESUFJZ0Ewc05BQm9nQXlBQ2NBc2lCMEVDZEdvb0FnQWlCRVVOQUNBQ1FRRnJJUW9nQmtFQlN5RUxBMEFnQkNnQ0FDSUVSUTBCSUFNZ0JDZ0NCQ0lHUndSQUFrQWdDMFVFUUNBR0lBcHhJUVlNQVFzZ0FpQUdTdzBBSUFZZ0FuQWhCZ3NnQmlBSFJ3MENDeUFFUVFocUlBRVE4Z05GRFFBTFFRQU1BUXRCR0JBVklRRWdCU0FBUVFocU5nSUVJQVVnQVRZQ0FDQUJRUWhxSUFrb0FnQVFWRUVBTmdJTUlBVkJBVG9BQ0NBQlFRQTJBZ0FnQVNBRE5nSUVBa0JCQUNBQ0lBQW9BZ3hCQVdxeklnd2dBQ29DRUNJTklBS3psRjRiRFFBZ0FDQUNJQUpCQVd0eFFRQkhJQUpCQTBseUlBSkJBWFJ5SWdFQ2Z5QU1JQTJWalNJTVF3QUFnRTlkSUF4REFBQUFBR0J4QkVBZ0RLa01BUXRCQUFzaUJ5QUJJQWRMR3hDY0R5QUFLQUlFSWdJZ0FrRUJhM0ZGQkVBZ0FrRUJheUFEY1NFSERBRUxJQUlnQTBzRVFDQURJUWNNQVFzZ0F5QUNjQ0VIQ3dKQUlBZEJBblFpQXlBQUtBSUFhaWdDQUNJQlJRUkFJQVVvQWdBZ0FDZ0NDRFlDQUNBQUlBVW9BZ0EyQWdnZ0FDZ0NBQ0FEYWlBQVFRaHFOZ0lBSUFVb0FnQWlBU2dDQUNJRFJRMEJJQU1vQWdRaEJBSkFJQUlnQWtFQmF5SURjVVVFUUNBRElBUnhJUVFNQVFzZ0FpQUVTdzBBSUFRZ0FuQWhCQXNnQUNnQ0FDQUVRUUowYWlBQk5nSUFEQUVMSUFVb0FnQWdBU2dDQURZQ0FDQUJJQVVvQWdBMkFnQUxJQVVvQWdBaEJDQUZRUUEyQWdBZ0FDQUFLQUlNUVFGcU5nSU1JQVVRbXc5QkFRczZBQndnQ0NBRU5nSVlJQVZCRUdva0FDQUlLQUlZSVFBZ0NFRWdhaVFBSUFCQkZHb0xGZ0FnQUNBQkVOOEVJQUJCSEdvZ0FVRWNhaERmQkF1TEN3SU5md0o5SXdCQk1Hc2lCeVFBSUFjZ0FqWUNDQ0FISUFFMkFnd2dCeUFETmdJRUlBQW9BZ0FoQlNBSFFSQnFJQUVnQWlBREVMb2FJQWRCR0dvZ0IwRWNhaUFIUVNCcUVMOEhJUVlnQlVITUFHb2hDUUpBQWtBZ0JTZ0NVQ0lEUlEwQUlBa29BZ0FDZnlBRFFRRnJJQVp4SUFOcElnRkJBVTBOQUJvZ0JpQURJQVpMRFFBYUlBWWdBM0FMSWdCQkFuUnFLQUlBSWdKRkRRQWdBMEVCYXlFSUlBY29BaUFoQkNBSEtBSWNJUW9nQnlnQ0dDRU1JQUZCQVVzaERRTkFJQUlvQWdBaUFrVU5BU0FHSUFJb0FnUWlBVWNFUUFKQUlBMUZCRUFnQVNBSWNTRUJEQUVMSUFFZ0Ewa05BQ0FCSUFOd0lRRUxJQUFnQVVZTkFRd0NDeUFDS1FJSVFpQ0lweUlMS0FJSUlBeEhEUUFnQ3lnQ0RDQUtSdzBBSUFzb0FoQWdCRWNOQUFzTUFRc2dCVUV3YWlJQkVLb0RJZ0lnQnlnQ0RDQUhLQUlJSUFjb0FnUVF1aG9nQVNBQ0VDZ2dBU0FCS0FJWVFRRnFOZ0lZSUFJaEN3SkFJQVVvQWxBaUEwVU5BQ0FKS0FJQUFuOGdBMEVCYXlBR2NTQURhU0lCUVFGTkRRQWFJQVlnQXlBR1N3MEFHaUFHSUFOd0N5SUFRUUowYWlnQ0FDSUNSUTBBSUFOQkFXc2hDQ0FCUVFGTElRUURRQ0FDS0FJQUlnSkZEUUVnQmlBQ0tBSUVJZ0ZIQkVBQ1FDQUVSUVJBSUFFZ0NIRWhBUXdCQ3lBQklBTkpEUUFnQVNBRGNDRUJDeUFBSUFGSERRSUxJQUlvQWd3Z0N4RG1CVVVOQUFzTUFRdEJFQkFWSWdvZ0JqWUNCQ0FLSUFhdElBdXRRaUNHaERjQ0NDQUtRUUEyQWdBZ0JVSFVBR29oREFKQVFRQWdBeUFGS0FKWVFRRnFzeUlSSUFVcUFsd2lFaUFEczVSZUd3MEFBa0FDUUFKL1FRSWdBeUFEUVFGcmNVRUFSeUFEUVFOSmNpQURRUUYwY2lJQUFuOGdFU0FTbFkwaUVVTUFBSUJQWFNBUlF3QUFBQUJnY1FSQUlCR3BEQUVMUVFBTElnRWdBQ0FCU3hzaUFFRUJSZzBBR2lBQUlBQWdBRUVCYTNGRkRRQWFJQUFRZndzaUJDQUZLQUpRSWdCTkJFQWdBQ0FFVFEwQ0lBQkJBMGtoQWdKL0lBVW9BbGl6SUFVcUFseVZqU0lSUXdBQWdFOWRJQkZEQUFBQUFHQnhCRUFnRWFrTUFRdEJBQXNoQVNBQUlBUWdBaUFBYVVFQlMzSUVmeUFCRUg4RklBRkJBVUVnSUFGQkFXdG5hM1FnQVVFQ1NSc0xJZ0FnQUNBRVNSc2lCRTBOQWlBRVJRMEJDeUFFUVlDQWdJQUVTUVJBSUFrZ0JFRUNkQkFWRUd3Z0JTQUVOZ0pRUVFBaEFnTkFJQUlnQkVZRVFDQUZLQUpVSWdORkRRUWdBeWdDQkNFSUFrQWdCR2tpQUVFQlRRUkFJQWdnQkVFQmEzRWhDQXdCQ3lBRUlBaExEUUFnQ0NBRWNDRUlDeUFKS0FJQUlBaEJBblJxSUF3MkFnQWdCRUVCYXlFUElBQkJBVXNoRUFOQUlBTW9BZ0FpQUVVTkJTQUFLQUlFSVFFQ1FDQVFSUVJBSUFFZ0QzRWhBUXdCQ3lBQklBUkpEUUFnQVNBRWNDRUJDd0pBSUFFZ0NFWU5BQ0FBSVFJZ0FVRUNkQ0lOSUFrb0FnQnFJZzRvQWdCRkJFQWdEaUFETmdJQUlBRWhDQXdCQ3dOQUFrQWdBaUlCS0FJQUlnSkZCRUJCQUNFQ0RBRUxJQUFvQWd3Z0FpZ0NEQkRtQlNFT0lBRW9BZ0FoQWlBT0RRRUxDeUFESUFJMkFnQWdBU0FKS0FJQUlBMXFLQUlBS0FJQU5nSUFJQWtvQWdBZ0RXb29BZ0FnQURZQ0FBd0JDeUFBSVFNTUFBc0FCU0FKS0FJQUlBSkJBblJxUVFBMkFnQWdBa0VCYWlFQ0RBRUxBQXNBQ3hEN0FRQUxJQWxCQUJCc0lBVkJBRFlDVUFzZ0JTZ0NVQ0lESUFOQkFXc2lBSEZGQkVBZ0FDQUdjU0VBREFFTElBTWdCa3NFUUNBR0lRQU1BUXNnQmlBRGNDRUFDd0pBQWtBZ0NTZ0NBQ0FBUVFKMGFpSUFLQUlBSWdKRkJFQWdDaUFGS0FKVU5nSUFJQVVnQ2pZQ1ZDQUFJQXcyQWdBZ0NpZ0NBQ0lBUlEwQ0lBQW9BZ1FoQWdKQUlBTWdBMEVCYXlJQWNVVUVRQ0FBSUFKeElRSU1BUXNnQWlBRFNRMEFJQUlnQTNBaEFnc2dDU2dDQUNBQ1FRSjBhaUVDREFFTElBb2dBaWdDQURZQ0FBc2dBaUFLTmdJQUN5QUZJQVVvQWxoQkFXbzJBbGdMSUFkQk1Hb2tBQ0FMQzBJQkFYOENRQ0FBTFFBNElnSWdBUzBBT0VZRVFDQUNSUTBCSUFBZ0FSQ2dEd3dCQ3lBQ0JFQWdBQkNuR2d3QkN5QUFJQUVReWdzTElBQWdBU2tDUERjQ1BBdVhBUUVCZmlBQUJIOENmMEVBSUFBb0FnUWlBQ2tERUVLQ2dJT0VnSWdpZ3lJQklBRkNBWDJEVUEwQUdrRUJBbjlCQUNBQUtRTVFRb0NBZ1lTQWlDQ0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FFSEl5eElRU0EwQUdpQUFFS0FhQ3cwQUdnSi9RUUFnQUNrREVFS0NnSUtBZ0lBQ2d5SUJJQUZDQVgyRFVBMEFHa0VCSUFBUW54b05BQm9nQUVHWXl4SVFTQXNMQlVFQUN3c0xBQ0FBUWVETEVoQytEQXMvQVFGK0lBQUVmd0ovUVFBZ0FDZ0NCQ0lBS1FNUVFvS0Fnb0NBaUNDRElnRWdBVUlCZllOUURRQWFRUUVnQUJDZ0dnMEFHaUFBRUo4YUN3VkJBQXNMQ3dBZ0FFSEl5eElRdmd3TERBQWdBQ2dDQkVISXl4SkdDelVCQW44akFFSFFBR3NpQWlRQUlBSkJDR29nQUJEYUd5RURJQUFnQVJDaUR5QUJJQU1Rb2c4Z0F4RG5CeUFDUWRBQWFpUUFDellCQVg4akFFRVFheUlESkFBZ0F5QUFJQUVRcnc4MkFnd2dBQ0FBUWRnQ2FpQURRUXhxSUFJUW9nc2hBQ0FEUVJCcUpBQWdBQXVlQVFFRmZ5TUFRUkJySWdVa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdRMkFnd2dCU0FFTmdJSUl3QkJFR3NpQkNRQUlBQkJqQUZxSWdZUS9RVWhCeUFDS0FJQUlRSWdCU2dDQ0NFSUlBQW9BZ2doQUNBRUlBTkJDR28yQWdnZ0JDQURLQUlJSUFOSE9nQU1JQVlnQnlBQUlBZ2dBU0FDSUFSQkNHb1EvZ1VpQUJBb0lBWWdCaWdDR0VFQmFqWUNHQ0FFUVJCcUpBQWdCVUVRYWlRQUlBQUxpQUVCQVg4akFFRWdheUlGSkFBZ0JTQUNLQUlBTmdJY0l3QkJJR3NpQWlRQUlBSWdBeWdDQURZQ0VDQUVLQUlBSVFNZ0FrRUNOZ0ljSUFJZ0F6WUNGQ0FDSUFKQkVHbzJBaGdnQWlBQ0tRTVlOd01JSUFWQkNHb2lBeUFDUVFocUVMVUNHaUFDUVNCcUpBQWdBQ0FCSUFWQkhHb2dBeENxRHlFQUlBTVFxZ0VnQlVFZ2FpUUFJQUFMc2dFQkEzOGpBRUVRYXlJQ0pBQUNRQUpBSUFFb0FoUWlCRVVOQUNBQUtBSUFJUU1nQkNnQ0JFRzRyUkpIRFFBZ0FTZ0NFQ0lBUlEwQUlBSWdBRFlDRENBRFFZU0VBV29nQWtFTWFoRDNCMFVOQUVFQklRQWdBU2dDQkVHZ2xoSkhEUUVnQWlBQktBSXdLQUlrTmdJSUlBTkI4SU1CYWlBQ1FRaHFFUFVESWdORkRRRWdBaUFCS0FJd0tBSXNOZ0lFSUFOQktHb2dBa0VFYWhDcEFrRUFSeUVBREFFTFFRQWhBQXNnQWtFUWFpUUFJQUFMYXdFRGZ5TUFRVEJySWdNa0FDQUNLQUlBSVFVZ0F5QUNLQUlFSUFJdEFBc2lCQ0FFUVJoMFFSaDFRUUJJSWdRYk5nSU1JQU1nQlNBQ0lBUWJOZ0lJSUFNZ0F5a0RDRGNEQUNBRFFSQnFJZ0lnQUNBREVPRUJJQUFnQVNBQ0VNNENJUUFnQTBFd2FpUUFJQUFMTmdFQmZ5TUFRUkJySWdRa0FDQUVJQU1wQWdBM0F3Z2dBQ0FBUWRnQ2FpQUJJQUlnQkVFSWFoREFHaUVBSUFSQkVHb2tBQ0FBQ3pzQkFYOGpBRUVRYXlJQ0pBQWdBaUFBSUFCQjJBSnFJQUVReWhvaUFUWUNEQ0FBSUFGQkVHb2dBa0VNYWhDekF5RUFJQUpCRUdva0FDQUFDellCQVg4akFFRVFheUlESkFBZ0F5QUFJQUVRcnc4MkFnd2dBQ0FBUWRnQ2FpQURRUXhxSUFJUWxRUWhBQ0FEUVJCcUpBQWdBQXNQQUNBQUlBQkIyQUpxSUFFUXlob0xuZ0VCQlg4akFFRVFheUlGSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlFTmdJTUlBVWdCRFlDQ0NNQVFSQnJJZ1FrQUNBQVFZd0JhaUlHRVAwRklRY2dBaWdDQUNFQ0lBVW9BZ2doQ0NBQUtBSUlJUUFnQkNBRFFRUnFOZ0lJSUFRZ0F5Z0NCQ0FEUnpvQURDQUdJQWNnQUNBSUlBRWdBaUFFUVFocUVQNEZJZ0FRS0NBR0lBWW9BaGhCQVdvMkFoZ2dCRUVRYWlRQUlBVkJFR29rQUNBQUN6WUJBWDhqQUVFUWF5SURKQUFnQXlBQUlBRVEyZ1EyQWd3Z0FDQUFRZGdDYWlBRFFReHFJQUlRb2dzaEFDQURRUkJxSkFBZ0FBczdBUUYvSXdCQkVHc2lBeVFBSUFNZ0FTZ0NBRFlDRENBRElBSW9BZ0EyQWdnZ0FDQURRUXhxSUFOQkNHb1FwQXNoQUNBRFFSQnFKQUFnQUF0bkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDTUFRUkJySWdFa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdNMkFnd2dBU0FETmdJSUlBQkJqQUZxSUFCQkNHb2dBVUVJYWlBQVFkZ0NhaUFDUVF4cUVKTWJJUUFnQVVFUWFpUUFJQUpCRUdva0FDQUFDNmNDQVFaL0l3QkJRR29pQWlRQUlBRkJCR29pQkNnQ0FFSFlBbW9oQXlBQUtBSUVLQUlnSVFVakFFR2dBV3NpQmlRQUFuOENRQUpBQWtBQ1FDQUZRUUpyRGdNQUFRSURDeUFFSUFNUTR4b01Bd3NnQkNBREVPSWFEQUlMSUFRZ0F4RGhHZ3dCQ3lBRUtBSUFJZ01RSENBR1FjQ3VBMEdrQmtFR0lBTkJ5QUpxRUJjaUEwRVlhaUlIUWE2b0NoQU9HaUFISUFVUUlSb2dBeEFZUVFBTElRTWdCa0dnQVdva0FDQUNJQUFvQWdRb0FpUTJBamdnQVNBQUtBSUFFTFVQSVFBZ0FrRUJOZ0ljSUFJZ0FEWUNGQ0FDSUFKQkZHbzJBaGdnQWlBQ0tRTVlOd01JSUFJZ0FrRWdhaUFDUVFocUVKY0NJZ0JCQkdvMkFqQWdBaUFBSUFBb0FnUkhPZ0EwSUFRZ0F5QUNRVGhxSUFKQk1Hb1E0Z2NoQVNBQUVLZ0JJQUpCUUdza0FDQUJDd3NBSUFCQjJJSVNFTndTQ3c0QUlBQWdBUkNtQzBFQk9nQjRDL0lCQWdSL0FYNGdBU0FBS0FLb0Frc0VRQ0FBS0FLZ0FpRURJQUFoQWlBQUlBRkJERThFZjBGL0lBR3RRaGgrSWdhbklBWkNJSWluR3hBVklRSWdBUVZCREFzMkFxZ0NJQUFnQWpZQ29BSkJBQ0VDQTBBZ0FDZ0NwQUlnQWswRVFDQUFJQU1RTmdVZ0FrRVliQ0lFSUFBb0FxQUNhaUlGSUFNZ0JHb2lCQ2tDQURjQ0FDQUZJQVFwQWhBM0FoQWdCU0FFS1FJSU53SUlJQUpCQVdvaEFnd0JDd3NMSUFBb0FxUUNJZ0lnQVNBQklBSkpHeUVGQTBBZ0FpQUZSd1JBSUFBb0FxQUNJQUpCR0d4cUlnTkNBRGNDRUNBRFFRQTZBQXdnQTBFQU9nQUFJQUpCQVdvaEFnd0JDd3NnQUNBQk5nS2tBZ3RQQVFKL0l3QkJFR3NpQXlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQkRZQ0RDQURJQVEyQWdnZ0FFR01BV29nQUVFSWFpQURRUWhxSUFCQjJBSnFJQUVnQWhEcEdpRUFJQU5CRUdva0FDQUFDMVFCQVg4Q1FDQUFMUUI0SWdJZ0FTMEFlRVlFUUNBQ1JRMEJJQUFnQVNnQ0FEWUNBQ0FBUVFocUlBRkJDR29ReVE4TUFRc2dBZ1JBSUFBUTZ4b01BUXNnQUNBQkVMZ1BDeUFBSUFFcEE0QUJOd09BQVF2Y0FRRURmeUFCSUFBb0FyZ0dTd1JBSUFBb0FyQUdJUU1nQUNBQkVJZ2JBMEFnQUNnQ3RBWWdBazBFUUNBQUlBTVFOZ1VnQWtHSUFXd2lCQ0FBS0FLd0Jtb2dBeUFFYWlJRUVPb2FHaUFFRUlrSklBSkJBV29oQWd3QkN3c0xJQUFvQXJRR0lRSURRQ0FCSUFKUEJFQUNRQ0FBS0FLMEJpSUNJQUVnQVNBQ1NSc2hCQU5BSUFJZ0JFWU5BU0FBS0FLd0JpQUNRWWdCYkdvaUEwSUFOd09BQVNBRFFRQTZBSGdnQTBFQU9nQUFJQUpCQVdvaEFnd0FDd0FMQlNBQUtBS3dCaUFDUVFGcklnSkJpQUZzYWhDSkNRd0JDd3NnQUNBQk5nSzBCZ3Y4QWdFTWZ5QUFLQUlBSWdRb0FxQUVJZ2NnQUNnQ0RFWUVRQ0FBS0FJSUR3c2pBRUVRYXlJQkpBQWpBRUhBQVdzaUF5UUFJQU5CdUFGcUlBUWdBRUVFYWlJQ0VNSVBJQVFvQXBRRUlnaEJBV3NoQ1NBQ0tBSUFJUW9nQkNnQ2tBUWhDeUFES0FLOEFTRU1JQU1vQXJnQklRSUNRQU5BSUFVZ0NFY0VRQ0FMSUFKQkxHeHFJZ1l0QUNCRkJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REN3SkFJQVlvQWlRZ0RFY05BQ0FLSUFZb0FnQkhEUUFnQVNBQ05nSU1JQUZCQVRvQUNBd0RDeUFGSUFZb0FpaExCRUFnQVVFQU5nSU1JQUZCQURvQUNBd0RCU0FDUVFGcVFRQWdBaUFKUnhzaEFpQUZRUUZxSVFVTUFnc0FDd3NnQTBFSWFrR0d0UU5CbmdSQkRpQURRYWdCYWhBZElnSVFGeUlGUVJocVFkSTFFQTRhSUFVUUdDQUJRUUEyQWd3Z0FVRUFPZ0FJSUFJUUhnc2dBMEhBQVdva0FDQUJLQUlNSVFNZ0JDZ0NrQVFoQWlBQkxRQUlJUVFnQVVFUWFpUUFJQUFnQnpZQ0RDQUFJQUlnQTBFc2JHcEJCR3BCQUNBRUd5SUFOZ0lJSUFBTFBnRUJmeU1BUVJCcklnVWtBQ0FGSUFNMkFnZ2dCU0FBSUFJUTh3STJBZ1FnQUNBQklBVkJCR29nQlVFSWFpQUVFUFlhSVFBZ0JVRVFhaVFBSUFBTFFnRUJmd0pBSUFBdEFDQWlBaUFCTFFBZ1JnUkFJQUpGRFFFZ0FDQUJFUG9hREFFTElBSUVRQ0FBRUpFTURBRUxJQUFnQVJDdkN3c2dBQ0FCS1FJa053SWtDellCQVg4RFFDQUFLQUtFQWlBQlRRUkFJQUJCQURZQ2hBSUZJQUFvQW9BQ0dpQUJRUUZxSVFFTUFRc0xJQUFnQUNnQ2dBSVFOZ3RRQVFGL0lBQW9Bb1FDSWdJZ0FDZ0NpQUpQQkVBZ0FDQUFLQUtJQWlJQ1FRRjBRUUlnQWhzUXFnc2dBQ2dDaEFJaEFnc2dBQ0FDUVFGcU5nS0VBaUFBS0FLQUFpQUNRUVYwYWlBQkVJVUpHZ3MzQVFGL0l3QkJFR3NpQXlRQUlBSW9BZ0FRL0FJaEFpQUJLQUtVQkNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBZ0EwRVFhaVFBQ3hZQUlBQVFzQXNnQUJEdkN5QUFJQUFvQXBBRUVEWUxLQUFnQUVJQU53S2NCQ0FBUW9DQWdJREFBVGNDbEFRZ0FDQUFOZ0tRQkNBQVFRd1FoZ2tnQUFzUkFDQUFMUURVQWtVRVFCQnZBQXNnQUFzTUFDQUFRUWhxRUljSklBQUxvd0VCQlg4akFFRVFheUlHSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlGTmdJTUlBWWdCVFlDQ0NNQVFSQnJJZ1VrQUNBQVFZd0JhaUlIRUxNRklRZ2dCaWdDQ0NFSklBQW9BZ2doQUNBRklBTkJDR28yQWdnZ0JTQURLQUlJSUFOSE9nQU1JQVVnQkNrQ0FEY0RBQ0FISUFnZ0FDQUpJQUVnQWlBRlFRaHFJQVVRd1FjaUFCQW9JQWNnQnlnQ0dFRUJhallDR0NBRlFSQnFKQUFnQmtFUWFpUUFJQUFMUWdFQmZ3SkFJQUF0QUNBaUFpQUJMUUFnUmdSQUlBSkZEUUVnQUNBQkVJVWJEQUVMSUFJRVFDQUFFSVliREFFTElBQWdBUkRQQ3dzZ0FDQUJLUU1vTndNb0N6NEJBWDhqQUVFUWF5SUNKQUFnQUNBQlJ3UkFJQUlnQVVIZ0FHbzJBZ2dnQWlBQktBSmdJQUZIT2dBTUlBQWdBa0VJYWhDMkd3c2dBa0VRYWlRQUM1WUJBUUovQWtBZ0FDMEE4QThpQWlBQkxRRHdEMFlFUUNBQ1JRMEJJQUFnQVNnQ0FEWUNBQ0FBUVFocUlnSWdBVUVJYWlJREVKb1FJQUpCK0FCcUlBTkIrQUJxRU1rUElBSkI2QUZxSUFOQjZBRnFFTWtQSUFKQjJBSnFJQU5CMkFKcUVJa2JJQUpCb0FscUlBTkJvQWxxRUlrYkRBRUxJQUlFUUNBQUVJb2JEQUVMSUFBZ0FSRGdEd3NnQUNBQktRUDREemNEK0E4TE5RRUJmd05BSUFBb0FyUUdJQUZOQkVBZ0FFRUFOZ0swQmdVZ0FDZ0NzQVlnQVVHSUFXeHFFSWtKSUFGQkFXb2hBUXdCQ3dzTHJ3RUJCSDhqQUVFUWF5SURKQUFqQUVFZ2F5SUVKQUFqQUVFZ2F5SUNKQUFnQWtFSWFpSUZJQUVRK3dVZ0FpQUNLQUlNSUFJdEFCTWlBU0FCUVJoMFFSaDFRUUJJSWdFYk5nSWNJQUlnQWlnQ0NDQUZJQUViTmdJWUlBSWdBaWtER0RjREFDQUVJQUFnQWhEaEFTQUZFQThhSUFKQklHb2tBQ0FBSUFCQjJBSnFJQVFRemdJaEFTQUVRU0JxSkFBZ0F5QUJOZ0lNSUFBZ0FVRVFhaUFEUVF4cUVMTURJUUFnQTBFUWFpUUFJQUFMcndFQkJIOGpBRUVRYXlJREpBQWpBRUVnYXlJRUpBQWpBRUVnYXlJQ0pBQWdBa0VJYWlJRklBRVE5aEFnQWlBQ0tBSU1JQUl0QUJNaUFTQUJRUmgwUVJoMVFRQklJZ0ViTmdJY0lBSWdBaWdDQ0NBRklBRWJOZ0lZSUFJZ0Fpa0RHRGNEQUNBRUlBQWdBaERoQVNBRkVBOGFJQUpCSUdva0FDQUFJQUJCMkFKcUlBUVF6Z0loQVNBRVFTQnFKQUFnQXlBQk5nSU1JQUFnQVVFUWFpQURRUXhxRUxNRElRQWdBMEVRYWlRQUlBQUxFUUFnQUJETER5QUFJQUFvQXJBR0VEWUxTZ0VCZnlNQVFUQnJJZ01rQUNBRElBSTJBZ2dnQXlBQ0VOd0JOZ0lNSUFNZ0F5a0RDRGNEQUNBRFFSQnFJZ0lnQUNBREVPRUJJQUFnQVNBQ0VNNENJUUFnQTBFd2FpUUFJQUFML3dVQkNuOGdBQ2dDQUVIWUFtb2hCU01BUVJCcklnUWtBQ0FFSUFJMkFnUWdCQ0FCTmdJSUlBUWdBellDQUFKL0lBTUVRQ0FBS0FJQUlnRWhEQ01BUWVBQWF5SUFKQUFqQUVFZ2F5SUNKQUFnQWlBQklBUkJCR29RekE4MkFnd2dBaUFFS0FJSU5nSVFJQUVnQkJETkR5RURJQUpCQXpZQ0hDQUNJQU0yQWhRZ0FpQUNRUXhxTmdJWUlBSWdBaWtER0RjREFDQUFRY2dBYWlBQ0VQSUdHaUFDUVNCcUpBQUNmeUFBS0FKWVJRUkFJQUJCdE1nQk5nSWdJQUJCdE1nQkVOd0JOZ0lrSUFBZ0FDa0RJRGNEQ0NBQVFTaHFJZ0lnQVNBQVFRaHFFT0VCSUFFZ0JTQUNFTTRDREFFTElBQkJ0TWdCTmdJWUlBQkJ0TWdCRU53Qk5nSWNJQUFnQUNrREdEY0RFQ0FBUVNocUlnSWdBU0FBUVJCcUVPRUJJd0JCRUdzaUJpUUFJQUVRSENBQklBRW9BZ3hCQVdvaUF6WUNEQ0FHSUFNMkFnZ2pBRUVRYXlJREpBQWdBVUdNQVdvaUJ4Q3pCU0VJSUFZb0FnZ2hDU0FCS0FJSUlRb2dBeUFBUWNnQWFpSUJRUXhxTmdJSUlBRW9BZ3doQ3lBRFFRQTZBQVFnQTBIQW5DQTJBZ0FnQXlBQklBdEhPZ0FNSUFjZ0NDQUtJQWtnQlNBQ0lBTkJDR29nQXhEQkJ5SUJFQ2dnQnlBSEtBSVlRUUZxTmdJWUlBTkJFR29rQUNBR1FSQnFKQUFnQVFzaEFTQUFRY2dBYWhDc0F5QUFRZUFBYWlRQUlBd2dBUkNCQXd3QkN5QUFLQUlBSWdNaERTTUFRZUFBYXlJQUpBQWpBRUVnYXlJQkpBQWdBU0FESUFSQkJHb1F6QTgyQWhBZ0JDZ0NDQ0VDSUFGQkFqWUNIQ0FCSUFJMkFoUWdBU0FCUVJCcU5nSVlJQUVnQVNrREdEY0RDQ0FBUWNnQWFpQUJRUWhxRUxVQ0dpQUJRU0JxSkFBQ2Z5QUFLQUpVUlFSQUlBQkJ0TWdCTmdJZ0lBQkJ0TWdCRU53Qk5nSWtJQUFnQUNrRElEY0RDQ0FBUVNocUlnSWdBeUFBUVFocUVPRUJJQU1nQlNBQ0VNNENEQUVMSUFCQnRNZ0JOZ0lZSUFCQnRNZ0JFTndCTmdJY0lBQWdBQ2tER0RjREVDQUFRU2hxSWdJZ0F5QUFRUkJxRU9FQklBTWdCU0FDSUFCQnlBQnFFSkViQ3lFQklBQkJ5QUJxRUtvQklBQkI0QUJxSkFBZ0RTQUJFSUVEQ3lFQUlBUkJFR29rQUNBQUM4UUJBUU4vSXdCQkVHc2lCQ1FBSUFBb0FnQWhCU0FFSUFNcEFnQTNBd2dqQUVIZ0FHc2lBeVFBSUFBb0FnQWhBQ0FEUVFVMkFqd2dBMEhzR3pZQ09DQURJQU1wQXpnM0F3Z2dBMEZBYXlJR0lBQWdBMEVJYWhEaEFTQURJQUUyQWhBZ0FpZ0NBQ0VCSUFOQkFqWUNIQ0FESUFFMkFoUWdBeUFEUVJCcU5nSVlJQU1nQXlrREdEY0RBQ0FBSUFBZ0JVSFlBbW9nQmlBRFFTQnFJQU1RdFFJaUFDQUVRUWhxRU1jUEVJRURJUUVnQUJDcUFTQURRZUFBYWlRQUlBUkJFR29rQUNBQkN3c0FJQUJCaS93Q0VNb0dDd3NBSUFCQjhQd0dFTW9HQzY0QkFRTi9Jd0JCOEE5cklnUWtBQ0FFRUl3TUlnTkIrQUJxUVFCQjhBQVFlU0VGSUFOQkJEWUM0QUVnQXlBRk5nTFlBU0FEUWVnQmFrRUFRZkFBRUhraEJTQURRUVEyQXRBQ0lBTWdCVFlDeUFJZ0EwSFlBbW9Ra0JzZ0EwR2dDV29Ra0JzZ0JFSG9EMm9nQVNBQ0lBTVFqeHNnQXhESEJpQUVLQUxzRHlFRElBQWdBVFlDQUNBQ0tBSUFJUUlnQUNBRE5nSUlJQUFnQWpZQ0JDQUFJQUVvQXBSZ05nSU1JQVJCOEE5cUpBQUxEd0FnQUNBQlFaaStFa0VSRUl3SUM1a0hBaFovQVg0akFFRXdheUlHSkFBZ0FTZ0NCQ0VVSUFFb0FnQWhEQUpBSUFBb0FnUkJBV3RCUGtzTkFDQU1JQlJCQW5ScUlSa2dBQ2tDQUNFYVFRVWhBQ0FNSVFFRFFDQUJJQmxHQkVBZ0VFVU5BaUFDUVFocVFiU09DUkFPR2lBR0lBTXBBZ0EzQXlnZ0FpQUdRU2hxRUxZRVFRaHFJZ0FnRUJBT0dpQUFRWjN6REJBT0dnVWdCaUFCS0FJQUloVTJBaUFnQmlBVkVOd0JOZ0lrSUFZZ0dqY0RHQ0FHSUJvM0F3Z2dCaUFHS1FNZ053TVFJd0JCb0FKcklnY2tBQ0FHS0FJTUlSRWdCaWdDRkNFU0lBZENnSUNBZ0lBSU53S1VBa0VCSVFnZ0J5QUhRUkJxSWdrMkFwQUNJQkZCQVdvaUV5QVNRUUZxSWcxc0lnUWdDU2dDaUFKTEJFQWdDU2dDZ0FJaER5QUpJQVFRNUE0Z0NTZ0NnQUloQzBFQUlRVURRQ0FKS0FLRUFpQUZUUVJBSUFrZ0R4QTJCU0FMSUFWQkFuUWlCR29nQkNBUGFpZ0NBRFlDQUNBRlFRRnFJUVVNQVFzTEN5QUhLQUtRQWlJS1FRQTJBZ0JCQVNFRkEzOGdCU0FOUmdSL0EwQWdDQ0FUUmdSQUFrQWdCMEVRYWlFV0lBWW9BZ2doQ1NBR0tBSVFJUTlCQVNFT0EwQWdEaUFSU3cwQklBMGdEbXdoRnlBT1FRRnJJZ1FnRFd3aEdDQUVJQWxxSVJOQkFTRUlBMEFnQ0NBU1N3UkFJQTVCQVdvaERnd0NCU0FQSUFoQkFXc2lDMm90QUFBaEJTQVRMUUFBSVFRZ0J5QUtJQXNnRjJwQkFuUnFLQUlBUVFGcU5nSUVJQWNnQ2lBSUlCaHFRUUowYWlnQ0FFRUJhallDQ0NBSElBb2dDeUFZYWtFQ2RHb29BZ0FnQkNBRlIybzJBZ3dqQUVFUWF5SUxKQUFDUUNBV0lBZEJCR29pQkVZTkFDQUVJUVVEUUNBRlFRUnFJZ1VnRmtZTkFTQUZJQVFnQlNnQ0FDQUVLQUlBU1JzaEJBd0FDd0FMSUF0QkVHb2tBQ0FIS0FLUUFpSUtJQWdnRjJwQkFuUnFJQVFvQWdBMkFnQWdDRUVCYWlFSURBRUxBQXNBQ3dBTEJTQUtJQWdnRFd4QkFuUnFJQWcyQWdBZ0NFRUJhaUVJREFFTEN5QUtJQTBnRVd3Z0VtcEJBblJxS0FJQUlRUWdCMEVRYWhDVEJTQUhRYUFDYWlRQUlBUUZJQW9nQlVFQ2RHb2dCVFlDQUNBRlFRRnFJUVVNQVFzTElnUWdBQ0FBSUFSTElnUWJJUUFnRlNBUUlBUWJJUkFnQVVFRWFpRUJEQUVMQ3dzZ0FrRUlhaUlGUVlIckN4QU9HaUFNSUJSQkFuUnFJUVFnQXlrQ0FDRWFJQXdoQVFOQUlBRWdCRWNFUUNBQktBSUFJZ01nRENnQ0FFY0VRQ0FGUWZUdERCQU9HZ3NnQlVIem1na1FEaG9nQmlBYU53TW9JQUlnQmtFb2FoQzJCRUVJYWlJQUlBTVFEaG9nQUVIem1na1FEaG9nQVVFRWFpRUJEQUVMQ3lBR1FUQnFKQUFMQ3dBZ0FFSEk2d1FRRkJvTFFnRUJmaUFBUlFSQVFRQVBDd0ovUVFBZ0FDZ0NCQ0lBS1FNUVFvQ0FnSUNRaUlTQUFZTWlBU0FCUWdGOWcxQU5BQnBCQVNBQUVOZ0xEUUFhSUFBUTJRc0xDeUFBSUFBUXNoc0VmMEVCQlNBQUVMUURCSDhnQUNnQ0dCQ3lHd1ZCQUFzTEMza0FJQUFRdVJzaUFFSFFzQkkyQWdRZ0FFSElzUkkyQWdBZ0FFR1VzUkkyQWdBZ0FFRUlhaUFCRUZZYUlBQWdCallDT0NBQUlBVTJBalFnQUNBRU5nSXdJQUFnQXpZQ0xDQUFJQUkyQWlnZ0FDQUhLUUlBTndJOElBQWdCeWtDQ0RjQ1JDQUFJQWNwQWhBM0Frd2dBQ0FIS1FJWU53SlVJQUFMSlFFQmZ5QUFLQUlJSVFJRFFDQUJJQUpHUlFSQUlBQWdBa0VFYXlJQ05nSUlEQUVMQ3d1aUFRRUNmeUFBS0FJQUlnWkJDR29pQlVIeDlnZ1FEaG9nQlNBR0tBSUlRUXhyS0FJQWFpQUFLQUlFS0FJQU5nSU1JQVVnQVJBaEdpQUZRYW40Q0JBT0dpQUZJQVlvQWdoQkRHc29BZ0JxSUFBb0FnZ29BZ0EyQWd3Z0JTQUNFQ0VhSUFWQjZQZ0lFQTRhSUFVZ0JpZ0NDRUVNYXlnQ0FHb2dBQ2dDRENnQ0FEWUNEQ0FGSUFNUUlSb2dCVUdtOEF3UURob2dCU0FFRUJJYUlBVkJvZk1NRUE0YUN4Z0FJQUJCNEFCcUVNb0VJQUJCTUdvUXZCc2dBQkM4R3d1bkFRRUVmeUFBRUk0SklBRW9BZ0FoQWlBQlFRQTJBZ0FnQUNBQ0VHd2dBQ0FCS0FJRU5nSUVJQUZCQURZQ0JDQUFJQUVvQWd3aUFqWUNEQ0FBSUFFcUFoQTRBaEFnQUNBQktBSUlJZ00yQWdnZ0FnUkFJQUJCQ0dvaEJDQURLQUlFSVFJQ1FDQUFLQUlFSWdNZ0EwRUJheUlGY1VVRVFDQUNJQVZ4SVFJTUFRc2dBaUFEU1EwQUlBSWdBM0FoQWdzZ0FDZ0NBQ0FDUVFKMGFpQUVOZ0lBSUFGQ0FEY0NDQXNMSlFBZ0FDQUJFTDBiSUFCQk1Hb2dBVUV3YWhDOUd5QUFRZUFBYWlBQlFlQUFhaERLQlFzUEFDQUFJQUVReEF0QkFUb0E4QThMQ3dBZ0FFR0wvQUlRRkJvTGx3SUJCSDhnQVNBQVFZamdBR29vQWdCTEJFQWdBQ2dDZ0dBaEJFRUdJUU1nQUNFRklBRkJCazhFUUVGL0lBRkJDM1FnQVVILy8vOEFTeHNRRlNFRklBRWhBd3NnQUNBRk5nS0FZQ0FBUVlqZ0FHb2dBellDQUFOQUlBQW9Bb1JnSUFKTkJFQWdBQ0FFRURZRklBSkJDM1FpQXlBQUtBS0FZR29nQXlBRWFpSURFTWtiR2lBREVJOEpJQUpCQVdvaEFnd0JDd3NMSUFCQmhPQUFhaWdDQUNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDaEdBaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDZ0dBZ0FrRUxkR29pQTBJQU53UDREeUFEUVFBNkFQQVBJQU5CQURvQUFDQUNRUUZxSVFJTUFBc0FDd1VnQUNnQ2dHQWdBa0VCYXlJQ1FRdDBhaENQQ1F3QkN3c2dBQ0FCTmdLRVlBdE1BUUYvQWtBZ0FDMEFFQ0lDSUFFdEFCQkdCRUFnQWtVTkFTQUFJQUVRbmdFZ0FDQUJLQUlNTmdJTURBRUxJQUlFUUNBQUVOSWJEQUVMSUFBZ0FSRHBEd3NnQUNBQktRSVVOd0lVQ3pBQkFuOGpBRUVnYXlJQ0pBQWdBaUFBRU9RYklRTWdBQ0FCRU9NUElBRWdBeERqRHlBREVLd0hJQUpCSUdva0FBc1pBUUYvSUFFZ0FDZ0NGRVlFZnlBQ0lBQVE4Z01GUVFBTEN6TUJBWDhqQUVFUWF5SURKQUFnQWhET0JpRUNJQUVvQWdRaEFTQUFJQUkyQWdRZ0FDQUNJQUZ3TmdJQUlBTkJFR29rQUF0U0FRRi9Ba0FnQUMwQUpDSUNJQUV0QUNSR0JFQWdBa1VOQVNBQUlBRXBBZ0EzQWdBZ0FFRUlhaUFCUVFocUVOOEVEQUVMSUFJRVFDQUFFTkFMREFFTElBQWdBUkQ1RFFzZ0FDQUJLUUlvTndJb0N5SUJBWDhqQUVFUWF5SUNKQUFnQUNBQklBQnJFTThISVFBZ0FrRVFhaVFBSUFBTERnQWdBQ0FCRU13TFFRRTZBQkFMbWdJQ0JIOEJmaUFCSUFCQnlCbHFLQUlBU3dSQUlBQW9Bc0FaSVFSQk1DRURJQUFoQlNBQlFUQlBCRUJCZnlBQnJVTEVBSDRpQnFjZ0JrSWdpS2NiRUJVaEJTQUJJUU1MSUFBZ0JUWUN3QmtnQUVISUdXb2dBellDQUFOQUlBQW9Bc1FaSUFKTkJFQWdBQ0FFRURZRklBSkJ4QUJzSWdNZ0FDZ0N3QmxxSUFNZ0JHb2lBeERhR3hvZ0F4RG5CeUFDUVFGcUlRSU1BUXNMQ3lBQVFjUVphaWdDQUNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDeEJraUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDd0JrZ0FrSEVBR3hxSWdOQ0FEY0NQQ0FEUVFBNkFEZ2dBMEVBT2dBQUlBSkJBV29oQWd3QUN3QUxCU0FBS0FMQUdTQUNRUUZySWdKQnhBQnNhaERuQnd3QkN3c2dBQ0FCTmdMRUdRdk9BUUVEZnlBQklBQW9BZ2hMQkVBZ0FDZ0NBQ0VESUFBZ0FSQy9GZ05BSUFBb0FnUWdBazBFUUNBREVJZ0VCU0FDUVJ4c0lnUWdBQ2dDQUdvZ0F5QUVhaUlFRU9RYkdpQUVFS3dISUFKQkFXb2hBZ3dCQ3dzTElBQW9BZ1FoQWdOQUlBRWdBazhFUUFKQUlBQW9BZ1FpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHRFFFZ0FDZ0NBQ0FDUVJ4c2FpSURRZ0EzQWhRZ0EwRUFPZ0FRSUFOQkFEb0FBQ0FDUVFGcUlRSU1BQXNBQ3dVZ0FDZ0NBQ0FDUVFGcklnSkJIR3hxRUt3SERBRUxDeUFBSUFFMkFnUUx6Z0VCQTM4Z0FTQUFLQUlJU3dSQUlBQW9BZ0FoQXlBQUlBRVE3eFlEUUNBQUtBSUVJQUpOQkVBZ0F4Q0lCQVVnQWtFd2JDSUVJQUFvQWdCcUlBTWdCR29pQkJEN0RSb2dCQkRNQkNBQ1FRRnFJUUlNQVFzTEN5QUFLQUlFSVFJRFFDQUJJQUpQQkVBQ1FDQUFLQUlFSWdJZ0FTQUJJQUpKR3lFRUEwQWdBaUFFUmcwQklBQW9BZ0FnQWtFd2JHb2lBMElBTndJb0lBTkJBRG9BSkNBRFFRQTZBQUFnQWtFQmFpRUNEQUFMQUFzRklBQW9BZ0FnQWtFQmF5SUNRVEJzYWhETUJBd0JDd3NnQUNBQk5nSUVDOTRDQVFwL0lBQW9BZ0FpQkNnQ0VDSUhJQUFvQWhSR0JFQWdBQ2dDRUE4TEl3QkJFR3NpQVNRQUl3QkJ3QUZySWdNa0FDQURRYmdCYWlBRUlBQkJCR29pQ0JEbUR5QUVLQUlFSWdsQkFXc2hDaUFES0FLNEFTRUNBa0FEUUNBRklBbEhCRUFnQkNnQ0FDQUNRUnhzYWlJR0xRQVFSUVJBSUFGQkFEWUNEQ0FCUVFBNkFBZ01Bd3NnQmlBREtBSzhBU0FJRU9VUEJFQWdBU0FDTmdJTUlBRkJBVG9BQ0F3REN5QUZJQVlvQWhoTEJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REJTQUNRUUZxUVFBZ0FpQUtSeHNoQWlBRlFRRnFJUVVNQWdzQUN3c2dBMEVJYWtHR3RRTkJuZ1JCRGlBRFFhZ0JhaEFkSWdJUUZ5SUZRUmhxUWRJMUVBNGFJQVVRR0NBQlFRQTJBZ3dnQVVFQU9nQUlJQUlRSGdzZ0EwSEFBV29rQUNBQktBSU1JUU1nQkNnQ0FDRUVJQUV0QUFnaEFpQUJRUkJxSkFBZ0FDQUhOZ0lVSUFBZ0JDQURRUnhzYWtFTWFrRUFJQUliSWdBMkFoQWdBQXVPbFFFQ0NuOENmaU1BUVNCcklnY2tBQ0FCUVRCcUlnVW9BZ1FoQkFKQUlBSW9BZ1FpQ1VFQmFpSUlJQVVvQWdnaUJtcEJnWUFFU1FSQUlBUWhBd3dCQ3lBRlFZU0FCQkFWSWdNMkFnUkJBQ0VHSUFOQkFEWUNnSUFFSUFSQmdJQUVhaUFGSUFRYklBTTJBZ0FMSUFVZ0JpQUlhallDQ0NBRklBVW9BZ3hCQVdvMkFnd0NRQ0FESUFacUlnTkZCRUFnQUJDYkJSb01BUXNnQXlBQ0tBSUFJQWdRZlNFQ0lBRW9BaXdoQXlBQktBSUFJUVFnQnlBSk5nSWNJQWNnQWpZQ0dDQUhJQWNwQXhnM0F3QWdBQ0FETmdJRUlBQWdCRFlDQUNBSEtRSUFJUTBnQUVFQU9nQVlJQUJCQURZQ0VDQUFJQTAzQWdoQkFDRUZRUUFoQ0VFQUlRa2pBRUdBQVdzaUJDUUFJQVFnQUNJQ0tRSUlJZzAzQXpnZ0JDQU5Od040SXdCQm9BZHJJZ01rQUNBRElBUXBBamdpRFRjRGtBY0NmeUFOUWlDSUlnNUNBMUVFUUNBRFFRTTJBcHdISUFOQm84VUJOZ0tZQnlBRElBTXBBNWdITndPSUIwRUFJQU5Ca0FkcUlBTkJpQWRxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0JGRUVRQ0FEUVFRMkFwd0hJQU5CMlp3Qk5nS1lCeUFESUFNcEE1Z0hOd09BQjBFQklBTkJrQWRxSUFOQmdBZHFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQlZFRVFDQURRUVUyQXB3SElBTkI4cU1ETmdLWUJ5QURJQU1wQTVnSE53UDRCa0VDSUFOQmtBZHFJQU5CK0FacUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNBMUVFUUNBRFFRTTJBcHdISUFOQnp2NENOZ0tZQnlBRElBTXBBNWdITndQd0JrRURJQU5Ca0FkcUlBTkI4QVpxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0ExRUVRQ0FEUVFNMkFwd0hJQU5Cd2hNMkFwZ0hJQU1nQXlrRG1BYzNBK2dHUVFRZ0EwR1FCMm9nQTBIb0Jtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lMVVFSQUlBTkJDellDbkFjZ0EwR3Zvd00yQXBnSElBTWdBeWtEbUFjM0ErQUdRUVVnQTBHUUIyb2dBMEhnQm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUVVUVJBSUFOQkJEWUNuQWNnQTBHTDhBSTJBcGdISUFNZ0F5a0RtQWMzQTlnR1FRWWdBMEdRQjJvZ0EwSFlCbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRlVRUkFJQU5CQlRZQ25BY2dBMEdEcEFNMkFwZ0hJQU1nQXlrRG1BYzNBOUFHUVFjZ0EwR1FCMm9nQTBIUUJtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lFVVFSQUlBTkJCRFlDbkFjZ0EwR0I4d0kyQXBnSElBTWdBeWtEbUFjM0E4Z0dRUWdnQTBHUUIyb2dBMEhJQm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUZVUVJBSUFOQkJUWUNuQWNnQTBIZitBWTJBcGdISUFNZ0F5a0RtQWMzQThBR1FRa2dBMEdRQjJvZ0EwSEFCbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRlVRUkFJQU5CQlRZQ25BY2dBMEdVcEFNMkFwZ0hJQU1nQXlrRG1BYzNBN2dHUVFvZ0EwR1FCMm9nQTBHNEJtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lFVVFSQUlBTkJCRFlDbkFjZ0EwR0gvd0kyQXBnSElBTWdBeWtEbUFjM0E3QUdRUXNnQTBHUUIyb2dBMEd3Qm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUZVUVJBSUFOQkJUWUNuQWNnQTBHOHRBSTJBcGdISUFNZ0F5a0RtQWMzQTZnR1FRd2dBMEdRQjJvZ0EwR29CbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRFVRUkFJQU5CQXpZQ25BY2dBMEh6bkFFMkFwZ0hJQU1nQXlrRG1BYzNBNkFHUVEwZ0EwR1FCMm9nQTBHZ0Jtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lFVVFSQUlBTkJCRFlDbkFjZ0EwSDVvd00yQXBnSElBTWdBeWtEbUFjM0E1Z0dRUTRnQTBHUUIyb2dBMEdZQm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSVJVUVJBSUFOQkVUWUNuQWNnQTBHcG5BRTJBcGdISUFNZ0F5a0RtQWMzQTVBR1FROGdBMEdRQjJvZ0EwR1FCbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTVVRUkFJQU5CRERZQ25BY2dBMEd2aVFFMkFwZ0hJQU1nQXlrRG1BYzNBNGdHUVJBZ0EwR1FCMm9nQTBHSUJtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lTVVFSQUlBTkJFallDbkFjZ0EwR1duQUUyQXBnSElBTWdBeWtEbUFjM0E0QUdRUkVnQTBHUUIyb2dBMEdBQm1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUZVUVJBSUFOQkJUWUNuQWNnQTBIWWpBRTJBcGdISUFNZ0F5a0RtQWMzQS9nRlFSSWdBMEdRQjJvZ0EwSDRCV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJSFVRUkFJQU5CQnpZQ25BY2dBMEhDdlFFMkFwZ0hJQU1nQXlrRG1BYzNBL0FGUVJNZ0EwR1FCMm9nQTBId0JXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lMVVFSQUlBTkJDellDbkFjZ0EwR0c0d0EyQXBnSElBTWdBeWtEbUFjM0ErZ0ZRUlFnQTBHUUIyb2dBMEhvQldvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUlVUVJBSUFOQkNEWUNuQWNnQTBIcjFnUTJBcGdISUFNZ0F5a0RtQWMzQStBRlFSVWdBMEdRQjJvZ0EwSGdCV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRFVRUkFJQU5CQXpZQ25BY2dBMEdDTnpZQ21BY2dBeUFES1FPWUJ6Y0QyQVZCRmlBRFFaQUhhaUFEUWRnRmFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ3hSQkVBZ0EwRU1OZ0tjQnlBRFFiTDVCRFlDbUFjZ0F5QURLUU9ZQnpjRDBBVkJGeUFEUVpBSGFpQURRZEFGYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FneFJCRUFnQTBFTU5nS2NCeUFEUWFYNUJEWUNtQWNnQXlBREtRT1lCemNEeUFWQkdDQURRWkFIYWlBRFFjZ0ZhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdSUkJFQWdBMEVFTmdLY0J5QURRWlFrTmdLWUJ5QURJQU1wQTVnSE53UEFCVUVaSUFOQmtBZHFJQU5Cd0FWcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNDbEVFUUNBRFFRbzJBcHdISUFOQm5lTUROZ0tZQnlBRElBTXBBNWdITndPNEJVRWFJQU5Ca0FkcUlBTkJ1QVZxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0NGRUVRQ0FEUVFnMkFwd0hJQU5CNmE4RU5nS1lCeUFESUFNcEE1Z0hOd093QlVFYklBTkJrQWRxSUFOQnNBVnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQkZFRVFDQURRUVEyQXB3SElBTkIxUlUyQXBnSElBTWdBeWtEbUFjM0E2Z0ZRUndnQTBHUUIyb2dBMEdvQldvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUtVUVJBSUFOQkNqWUNuQWNnQTBHSDR3TTJBcGdISUFNZ0F5a0RtQWMzQTZBRlFSMGdBMEdRQjJvZ0EwR2dCV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJSVVRUkFJQU5CQ0RZQ25BY2dBMEhYcndRMkFwZ0hJQU1nQXlrRG1BYzNBNWdGUVI0Z0EwR1FCMm9nQTBHWUJXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lEVVFSQUlBTkJBellDbkFjZ0EwSENrUUkyQXBnSElBTWdBeWtEbUFjM0E1QUZRUjhnQTBHUUIyb2dBMEdRQldvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUVVUVJBSUFOQkJEWUNuQWNnQTBIVitBWTJBcGdISUFNZ0F5a0RtQWMzQTRnRlFTQWdBMEdRQjJvZ0EwR0lCV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTFVRUkFJQU5CQ3pZQ25BY2dBMEdYaVFFMkFwZ0hJQU1nQXlrRG1BYzNBNEFGUVNFZ0EwR1FCMm9nQTBHQUJXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lMVVFSQUlBTkJDellDbkFjZ0EwSFk0QVEyQXBnSElBTWdBeWtEbUFjM0EvZ0VRU0lnQTBHUUIyb2dBMEg0QkdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSVBVUVJBSUFOQkR6WUNuQWNnQTBHNzVnQTJBcGdISUFNZ0F5a0RtQWMzQS9BRVFTTWdBMEdRQjJvZ0EwSHdCR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJUVVRUkFJQU5CRURZQ25BY2dBMEdxNWdBMkFwZ0hJQU1nQXlrRG1BYzNBK2dFUVNRZ0EwR1FCMm9nQTBIb0JHb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lGVVFSQUlBTkJCVFlDbkFjZ0EwR1YxQUUyQXBnSElBTWdBeWtEbUFjM0ErQUVRU1VnQTBHUUIyb2dBMEhnQkdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSURVUVJBSUFOQkF6WUNuQWNnQTBIN3VnVTJBcGdISUFNZ0F5a0RtQWMzQTlnRVFTWWdBMEdRQjJvZ0EwSFlCR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRlVRUkFJQU5CQlRZQ25BY2dBMEhTOXdBMkFwZ0hJQU1nQXlrRG1BYzNBOUFFUVNjZ0EwR1FCMm9nQTBIUUJHb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lGVVFSQUlBTkJCVFlDbkFjZ0EwR2FrUUkyQXBnSElBTWdBeWtEbUFjM0E4Z0VRU2dnQTBHUUIyb2dBMEhJQkdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUdVUVJBSUFOQkJqWUNuQWNnQTBISG93TTJBcGdISUFNZ0F5a0RtQWMzQThBRVFTa2dBMEdRQjJvZ0EwSEFCR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTVVRUkFJQU5CRERZQ25BY2dBMEd6NHdNMkFwZ0hJQU1nQXlrRG1BYzNBN2dFUVNvZ0EwR1FCMm9nQTBHNEJHb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lLVVFSQUlBTkJDallDbkFjZ0EwSDdyd1EyQXBnSElBTWdBeWtEbUFjM0E3QUVRU3NnQTBHUUIyb2dBMEd3QkdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUtVUVJBSUFOQkNqWUNuQWNnQTBHTWlRRTJBcGdISUFNZ0F5a0RtQWMzQTZnRVFTd2dBMEdRQjJvZ0EwR29CR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTFVRUkFJQU5CQ3pZQ25BY2dBMEhPTVRZQ21BY2dBeUFES1FPWUJ6Y0RvQVJCTFNBRFFaQUhhaUFEUWFBRWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ1ZSQkVBZ0EwRUZOZ0tjQnlBRFFhYVJBallDbUFjZ0F5QURLUU9ZQnpjRG1BUkJMaUFEUVpBSGFpQURRWmdFYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnWlJCRUFnQTBFR05nS2NCeUFEUVplakF6WUNtQWNnQXlBREtRT1lCemNEa0FSQkx5QURRWkFIYWlBRFFaQUVhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdOUkJFQWdBMEVETmdLY0J5QURRY0czQXpZQ21BY2dBeUFES1FPWUJ6Y0RpQVJCTUNBRFFaQUhhaUFEUVlnRWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ1JSQkVBZ0EwRUVOZ0tjQnlBRFFmejRCallDbUFjZ0F5QURLUU9ZQnpjRGdBUkJNU0FEUVpBSGFpQURRWUFFYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnTlJCRUFnQTBFRE5nS2NCeUFEUWRjbE5nS1lCeUFESUFNcEE1Z0hOd1A0QTBFeUlBTkJrQWRxSUFOQitBTnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQTFFRVFDQURRUU0yQXB3SElBTkJ0dkFDTmdLWUJ5QURJQU1wQTVnSE53UHdBMEV6SUFOQmtBZHFJQU5COEFOcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNBMUVFUUNBRFFRTTJBcHdISUFOQnRDRTJBcGdISUFNZ0F5a0RtQWMzQStnRFFUUWdBMEdRQjJvZ0EwSG9BMm9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJRVVRUkFJQU5CQkRZQ25BY2dBMEd6d3dNMkFwZ0hJQU1nQXlrRG1BYzNBK0FEUVRVZ0EwR1FCMm9nQTBIZ0Eyb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lKVVFSQUlBTkJDVFlDbkFjZ0EwSGZ4UU0yQXBnSElBTWdBeWtEbUFjM0E5Z0RRVFlnQTBHUUIyb2dBMEhZQTJvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSU5VUVJBSUFOQkRUWUNuQWNnQTBHKytBQTJBcGdISUFNZ0F5a0RtQWMzQTlBRFFUY2dBMEdRQjJvZ0EwSFFBMm9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTlVRUkFJQU5CRFRZQ25BY2dBMEhIOVFJMkFwZ0hJQU1nQXlrRG1BYzNBOGdEUVRnZ0EwR1FCMm9nQTBISUEyb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lOVVFSQUlBTkJEVFlDbkFjZ0EwR2Q5UUkyQXBnSElBTWdBeWtEbUFjM0E4QURRVGtnQTBHUUIyb2dBMEhBQTJvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSU1VUVJBSUFOQkREWUNuQWNnQTBHdDlRSTJBcGdISUFNZ0F5a0RtQWMzQTdnRFFUb2dBMEdRQjJvZ0EwRzRBMm9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTVVRUkFJQU5CRERZQ25BY2dBMEg0OUFJMkFwZ0hJQU1nQXlrRG1BYzNBN0FEUVRzZ0EwR1FCMm9nQTBHd0Eyb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lEVVFSQUlBTkJBellDbkFjZ0EwR21LRFlDbUFjZ0F5QURLUU9ZQnpjRHFBTkJQQ0FEUVpBSGFpQURRYWdEYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnMVJCRUFnQTBFTk5nS2NCeUFEUWV6d0JqWUNtQWNnQXlBREtRT1lCemNEb0FOQlBTQURRWkFIYWlBRFFhQURhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdkUkJFQWdBMEVITmdLY0J5QURRYU9pQVRZQ21BY2dBeUFES1FPWUJ6Y0RtQU5CUGlBRFFaQUhhaUFEUVpnRGFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ2RSQkVBZ0EwRUhOZ0tjQnlBRFFjenhBRFlDbUFjZ0F5QURLUU9ZQnpjRGtBTkJQeUFEUVpBSGFpQURRWkFEYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnZFJCRUFnQTBFSE5nS2NCeUFEUWNqM0FEWUNtQWNnQXlBREtRT1lCemNEaUFOQndBQWdBMEdRQjJvZ0EwR0lBMm9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJTFVRUkFJQU5CQ3pZQ25BY2dBMEdqaVFFMkFwZ0hJQU1nQXlrRG1BYzNBNEFEUWNFQUlBTkJrQWRxSUFOQmdBTnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQlZFRVFDQURRUVUyQXB3SElBTkI3dVVFTmdLWUJ5QURJQU1wQTVnSE53UDRBa0hDQUNBRFFaQUhhaUFEUWZnQ2FoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ2hSQkVBZ0EwRUlOZ0tjQnlBRFFhemZBellDbUFjZ0F5QURLUU9ZQnpjRDhBSkJ3d0FnQTBHUUIyb2dBMEh3QW1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUdVUVJBSUFOQkJqWUNuQWNnQTBIZjhRQTJBcGdISUFNZ0F5a0RtQWMzQStnQ1FjUUFJQU5Ca0FkcUlBTkI2QUpxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0JGRUVRQ0FEUVFRMkFwd0hJQU5CK3ZFQ05nS1lCeUFESUFNcEE1Z0hOd1BnQWtIRkFDQURRWkFIYWlBRFFlQUNhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdOUkJFQWdBMEVETmdLY0J5QURRYVh3QWpZQ21BY2dBeUFES1FPWUJ6Y0QyQUpCeGdBZ0EwR1FCMm9nQTBIWUFtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lFVVFSQUlBTkJCRFlDbkFjZ0EwR0twQU0yQXBnSElBTWdBeWtEbUFjM0E5QUNRY2NBSUFOQmtBZHFJQU5CMEFKcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNDbEVFUUNBRFFRbzJBcHdISUFOQnViVUNOZ0tZQnlBRElBTXBBNWdITndQSUFrSElBQ0FEUVpBSGFpQURRY2dDYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnUlJCRUFnQTBFRU5nS2NCeUFEUWJneE5nS1lCeUFESUFNcEE1Z0hOd1BBQWtISkFDQURRWkFIYWlBRFFjQUNhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdSUkJFQWdBMEVFTmdLY0J5QURRYisxQWpZQ21BY2dBeUFES1FPWUJ6Y0R1QUpCeWdBZ0EwR1FCMm9nQTBHNEFtb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lPVVFSQUlBTkJEallDbkFjZ0EwSEY2Z0UyQXBnSElBTWdBeWtEbUFjM0E3QUNRY3NBSUFOQmtBZHFJQU5Cc0FKcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNBMUVFUUNBRFFRTTJBcHdISUFOQm0vTUNOZ0tZQnlBRElBTXBBNWdITndPb0FrSE1BQ0FEUVpBSGFpQURRYWdDYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnUlJCRUFnQTBFRU5nS2NCeUFEUVp1a0F6WUNtQWNnQXlBREtRT1lCemNEb0FKQnpRQWdBMEdRQjJvZ0EwR2dBbW9RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJSlVRUkFJQU5CQ1RZQ25BY2dBMEhONHdNMkFwZ0hJQU1nQXlrRG1BYzNBNWdDUWM0QUlBTkJrQWRxSUFOQm1BSnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQlZFRVFDQURRUVUyQXB3SElBTkJpSWNGTmdLWUJ5QURJQU1wQTVnSE53T1FBa0hQQUNBRFFaQUhhaUFEUVpBQ2FoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZzlSQkVBZ0EwRVBOZ0tjQnlBRFFiejRBRFlDbUFjZ0F5QURLUU9ZQnpjRGlBSkIwQUFnQTBHUUIyb2dBMEdJQW1vUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSVBVUVJBSUFOQkR6WUNuQWNnQTBIRjlRSTJBcGdISUFNZ0F5a0RtQWMzQTRBQ1FkRUFJQU5Ca0FkcUlBTkJnQUpxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0QxRUVRQ0FEUVE4MkFwd0hJQU5CbS9VQ05nS1lCeUFESUFNcEE1Z0hOd1A0QVVIU0FDQURRWkFIYWlBRFFmZ0JhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWc1UkJFQWdBMEVPTmdLY0J5QURRYXYxQWpZQ21BY2dBeUFES1FPWUJ6Y0Q4QUZCMHdBZ0EwR1FCMm9nQTBId0FXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lPVVFSQUlBTkJEallDbkFjZ0EwSDI5QUkyQXBnSElBTWdBeWtEbUFjM0ErZ0JRZFFBSUFOQmtBZHFJQU5CNkFGcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNFRkVFUUNBRFFSQTJBcHdISUFOQnBlb0JOZ0tZQnlBRElBTXBBNWdITndQZ0FVSFZBQ0FEUVpBSGFpQURRZUFCYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FoUlJCRUFnQTBFVU5nS2NCeUFEUWEzL0JEWUNtQWNnQXlBREtRT1lCemNEMkFGQjFnQWdBMEdRQjJvZ0EwSFlBV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJUlVRUkFJQU5CRVRZQ25BY2dBMEhRb1FFMkFwZ0hJQU1nQXlrRG1BYzNBOUFCUWRjQUlBTkJrQWRxSUFOQjBBRnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDRFZFRVFDQURRUTAyQXB3SElBTkI4ZThCTmdLWUJ5QURJQU1wQTVnSE53UElBVUhZQUNBRFFaQUhhaUFEUWNnQmFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RaFJSQkVBZ0EwRVVOZ0tjQnlBRFFaenZBellDbUFjZ0F5QURLUU9ZQnpjRHdBRkIyUUFnQTBHUUIyb2dBMEhBQVdvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSVFVUVJBSUFOQkVEWUNuQWNnQTBHZGxnRTJBcGdISUFNZ0F5a0RtQWMzQTdnQlFkb0FJQU5Ca0FkcUlBTkJ1QUZxRUNWRkRRRWFJQVFwQWpnaURVSWdpQ0VPQ3lBRElBMDNBNUFISUE1Q0VGRUVRQ0FEUVJBMkFwd0hJQU5CcnFRQk5nS1lCeUFESUFNcEE1Z0hOd093QVVIYkFDQURRWkFIYWlBRFFiQUJhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWhGUkJFQWdBMEVSTmdLY0J5QURRZk83QVRZQ21BY2dBeUFES1FPWUJ6Y0RxQUZCM0FBZ0EwR1FCMm9nQTBHb0FXb1FKVVVOQVJvZ0JDa0NPQ0lOUWlDSUlRNExJQU1nRFRjRGtBY2dEa0lOVVFSQUlBTkJEVFlDbkFjZ0EwSFh0UVEyQXBnSElBTWdBeWtEbUFjM0E2QUJRZDBBSUFOQmtBZHFJQU5Cb0FGcUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNFVkVFUUNBRFFSRTJBcHdISUFOQjhNVUJOZ0tZQnlBRElBTXBBNWdITndPWUFVSGVBQ0FEUVpBSGFpQURRWmdCYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FoUlJCRUFnQTBFVU5nS2NCeUFEUWJIdkF6WUNtQWNnQXlBREtRT1lCemNEa0FGQjN3QWdBMEdRQjJvZ0EwR1FBV29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJWlVRUkFJQU5CR1RZQ25BY2dBMEdSZ0FNMkFwZ0hJQU1nQXlrRG1BYzNBNGdCUWVBQUlBTkJrQWRxSUFOQmlBRnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDRVZFRVFDQURRUkUyQXB3SElBTkI3LzRFTmdLWUJ5QURJQU1wQTVnSE53T0FBVUhoQUNBRFFaQUhhaUFEUVlBQmFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RaEpSQkVBZ0EwRVNOZ0tjQnlBRFFhdUFBellDbUFjZ0F5QURLUU9ZQnpjRGVFSGlBQ0FEUVpBSGFpQURRZmdBYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQndKQUlBNUNIRklOQUNBRFFSdzJBcHdISUFOQmdzRUVOZ0tZQnlBRElBTXBBNWdITndOd0lBTkJrQWRxSUFOQjhBQnFFQ1VOQUVIakFBd0JDeUFESUFRcEFqZ2lEVGNEa0FjZ0RVSWdpQ0lPUWd4UkJFQWdBMEVNTmdLY0J5QURRZlhxQXpZQ21BY2dBeUFES1FPWUJ6Y0RhRUhrQUNBRFFaQUhhaUFEUWVnQWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ3RSQkVBZ0EwRUxOZ0tjQnlBRFFjTC9CRFlDbUFjZ0F5QURLUU9ZQnpjRFlFSGxBQ0FEUVpBSGFpQURRZUFBYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FncFJCRUFnQTBFS05nS2NCeUFEUWM3L0JEWUNtQWNnQXlBREtRT1lCemNEV0VIbUFDQURRWkFIYWlBRFFkZ0FhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWd0UkJFQWdBMEVMTmdLY0J5QURRWUxyQXpZQ21BY2dBeUFES1FPWUJ6Y0RVRUhuQUNBRFFaQUhhaUFEUWRBQWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUJ5QU9RZ2xSQkVBZ0EwRUpOZ0tjQnlBRFFZcitCRFlDbUFjZ0F5QURLUU9ZQnpjRFNFSG9BQ0FEUVpBSGFpQURRY2dBYWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnbFJCRUFnQTBFSk5nS2NCeUFEUWRxNUJUWUNtQWNnQXlBREtRT1lCemNEUUVIcEFDQURRWkFIYWlBRFFVQnJFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQ1ZFRVFDQURRUWsyQXB3SElBTkIyeVUyQXBnSElBTWdBeWtEbUFjM0F6aEI2Z0FnQTBHUUIyb2dBMEU0YWhBbFJRMEJHaUFFS1FJNElnMUNJSWdoRGdzZ0F5QU5Od09RQnlBT1FnbFJCRUFnQTBFSk5nS2NCeUFEUWU3d0FqWUNtQWNnQXlBREtRT1lCemNETUVIckFDQURRWkFIYWlBRFFUQnFFQ1ZGRFFFYUlBUXBBamdpRFVJZ2lDRU9DeUFESUEwM0E1QUhJQTVDQ1ZFRVFDQURRUWsyQXB3SElBTkJpK3NFTmdLWUJ5QURJQU1wQTVnSE53TW9RZXdBSUFOQmtBZHFJQU5CS0dvUUpVVU5BUm9nQkNrQ09DSU5RaUNJSVE0TElBTWdEVGNEa0FjZ0RrSUlVUVJBSUFOQkNEWUNuQWNnQTBHSWtRSTJBcGdISUFNZ0F5a0RtQWMzQXlCQjdRQWdBMEdRQjJvZ0EwRWdhaEFsUlEwQkdpQUVLUUk0SWcxQ0lJZ2hEZ3NnQXlBTk53T1FCeUFPUWdsUkJFQWdBMEVKTmdLY0J5QURRWVhWQVRZQ21BY2dBeUFES1FPWUJ6Y0RHRUh1QUNBRFFaQUhhaUFEUVJocUVDVkZEUUVhSUFRcEFqZ2lEVUlnaUNFT0N5QURJQTAzQTVBSElBNUNEbEVFUUNBRFFRNDJBcHdISUFOQmxjQUVOZ0tZQnlBRElBTXBBNWdITndNUVFlOEFJQU5Ca0FkcUlBTkJFR29RSlVVTkFSb2dCQ2tDT0NJTlFpQ0lJUTRMSUFNZ0RUY0RrQWNnRGtJWlVRUkFJQU5CR1RZQ25BY2dBMEhFbndNMkFwZ0hJQU1nQXlrRG1BYzNBd2hCOEFBZ0EwR1FCMm9nQTBFSWFoQWxSUTBCR2lBRUtRSTRJZzFDSUlnaERnc2dBeUFOTndPUUIwRi9JQTVDRVZJTkFCb2dBMEVSTmdLY0J5QURRWXJHQXpZQ21BY2dBeUFES1FPWUJ6Y0RBRUYvUWZFQUlBTkJrQWRxSUFNUUpSc0xJUUFnQTBHZ0Iyb2tBQUpBSUFCQmYwY0VRQ0FDUVFFMkFoQWdBaUFBTmdJVUlBSXRBQmhCQVVZTkFTQUNRUUU2QUJnTUFRc2dCQ0FDS1FJSUlnMDNBekFnQkNBTk53TndJd0JCa0FacklnTWtBQ0FESUFRcEFqQWlEVGNEZ0FZQ2Z3SkFBbjhDUUFKL0FrQUNmd0pBQWtBQ2Z3SkFBa0FDZndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDZndKQUFuOENRQUpBQWtBQ1FBSkFBa0FnRFVJZ2lLY2lBRUVrUmdSQUlBTkJKRFlDakFZZ0EwR1ovUVkyQW9nR0lBTWdBeWtEaUFZM0E1Z0ZRUUVnQTBHQUJtb2dBMEdZQldvUUpVVU5IaG9nQTBFa05nS01CaUFEUVluNkJqWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd09RQlNBRFFZQUdhaUFEUVpBRmFoQWxEUUZCQWd3ZUN5QURJQTAzQTRBR0lBQkJGMFlFUUNBRFFSYzJBb3dHSUFOQjNmVUFOZ0tJQmlBRElBTXBBNGdHTndQUUJTQURRWUFHYWlBRFFkQUZhaEFsRFFOQkF3d2VDeUFESUEwM0E0QUdJQUJCRWtZRVFDQURRUkkyQW93R0lBTkJyKzhHTmdLSUJpQURJQU1wQTRnR053UGdCVUVFSUFOQmdBWnFJQU5CNEFWcUVDVkZEUjRhSUFOQkVqWUNqQVlnQTBHKy9RWTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEMkFVZ0EwR0FCbW9nQTBIWUJXb1FKUTBHUVFVTUhnc2dBeUFOTndPQUJpQUFRUnhHRFFFTFFRQU1CUXNnQTBFY05nS01CaUFEUWY3MkFEWUNpQVlnQXlBREtRT0lCamNEK0FWQkJpQURRWUFHYWlBRFFmZ0ZhaEFsUlEwYkdpQURRUncyQW93R0lBTkJ4ZllBTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0EvQUZJQU5CZ0FacUlBTkI4QVZxRUNVTkFVRUpEQnNMSUFOQkZ6WUNqQVlnQTBHeThBWTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEeUFWQkJ5QURRWUFHYWlBRFFjZ0ZhaEFsUlEwYUdpQURRUmMyQW93R0lBTkJ3ZjRHTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0E4QUZRUWdnQTBHQUJtb2dBMEhBQldvUUpVVU5HaG9nQTBFWE5nS01CaUFEUVlQd0JqWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd080QlNBRFFZQUdhaUFEUWJnRmFoQWxEUUZCQ2d3YUN5QURRUncyQW93R0lBTkJqUFlBTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0ErZ0ZJQU5CZ0FacUlBTkI2QVZxRUNVTkEwRU1EQmtMSUFOQkZ6WUNqQVlnQTBHUy9nWTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEc0FWQkN5QURRWUFHYWlBRFFiQUZhaEFsUlEwWUdpQURRUmMyQW93R0lBTkIxTzhHTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0E2Z0ZRUTBnQTBHQUJtb2dBMEdvQldvUUpVVU5HQm9nQTBFWE5nS01CaUFEUWVQOUJqWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd09nQlNBRFFZQUdhaUFEUWFBRmFoQWxEUUpCRGd3WUMwRUJDeUVGSUFNZ0RUY0RnQVlnQUVFV1JnUkFJQU5CRmpZQ2pBWWdBMEgxOVFBMkFvZ0dJQU1nQXlrRGlBWTNBNmdFSUFOQmdBWnFJQU5CcUFScUVDVU5BMEVQREJjTElBTWdEVGNEZ0FaQkFDQUFRUkZIRFFFYUlBTkJFVFlDakFZZ0EwSEM3d1kyQW9nR0lBTWdBeWtEaUFZM0EvQUVJQU5CZ0FacUlBTkI4QVJxRUNVTkEwRVFEQllMSUFCQkYwWUxJUXNnQXlBTk53T0FCaUFBUVJ0SERRVWdBMEViTmdLTUJpQURRWnYzQURZQ2lBWWdBeUFES1FPSUJqY0RpQVZCRWlBRFFZQUdhaUFEUVlnRmFoQWxSUTBVR2lBRFFSczJBb3dHSUFOQjR2WUFOZ0tJQmlBRElBMDNBNEFHSUFNZ0F5a0RpQVkzQTRBRklBTkJnQVpxSUFOQmdBVnFFQ1VOQTBFVkRCUUxJQU5CRmpZQ2pBWWdBMEhLOEFZMkFvZ0dJQU1nRFRjRGdBWWdBeUFES1FPSUJqY0RvQVFnQTBHQUJtb2dBMEdnQkdvUUpRMEJRUk1NRXdzZ0EwRVJOZ0tNQmlBRFFkSDlCallDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndQb0JFRVJJQU5CZ0FacUlBTkI2QVJxRUNWRkRSSWFEQVFMSUFOQkZqWUNqQVlnQTBIWi9nWTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEbUFRZ0EwR0FCbW9nQTBHWUJHb1FKUTBCUVJRTUVRc2dBMEViTmdLTUJpQURRYW4yQURZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053UDRCQ0FEUVlBR2FpQURRZmdFYWhBbERRRkJHQXdRQ3lBRFFSWTJBb3dHSUFOQm0vQUdOZ0tJQmlBRElBMDNBNEFHSUFNZ0F5a0RpQVkzQTVBRVFSWWdBMEdBQm1vZ0EwR1FCR29RSlVVTkR4b2dBMEVXTmdLTUJpQURRYXIrQmpZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053T0lCRUVYSUFOQmdBWnFJQU5CaUFScUVDVkZEUThhSUFOQkZqWUNqQVlnQTBIczd3WTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEZ0FSQkdTQURRWUFHYWlBRFFZQUVhaEFsUlEwUEdpQURRUlkyQW93R0lBTkIrLzBHTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0EvZ0RJQU5CZ0FacUlBTkIrQU5xRUNVTkFrRWFEQThMSUFNZ0RUY0RnQVlMSUFNZ0RUY0RnQVlnQUVFTlJnUkFJQU5CRFRZQ2pBWWdBMEhaOWdZMkFvZ0dJQU1nQXlrRGlBWTNBN0FFUVJzZ0EwR0FCbW9nQTBHd0JHb1FKVVVORGhwQkFBd0NDeUFESUEwM0E0QUdJQUJCQlVjTkFpQURRUVUyQW93R0lBTkI3QnMyQW9nR0lBTWdBeWtEaUFZM0E3Z0VJQU5CZ0FacUlBTkJ1QVJxRUNVTkEwRWNEQTBMUVFFTElReEJBQXdDQ3lBRElBMDNBNEFHSUFCQkJrY05BaUFEUVFZMkFvd0dJQU5CaW9rRk5nS0lCaUFESUFNcEE0Z0dOd1BBQkNBRFFZQUdhaUFEUWNBRWFoQWxEUU5CSFF3S0MwRUJDeUVJUVFBTUFnc2dBeUFOTndPQUJnSkFJQUJCQkVZRVFDQURRUVEyQW93R0lBTkJpL3dDTmdLSUJpQURJQU1wQTRnR053UElCQ0FEUVlBR2FpQURRY2dFYWhBbERRRkJIZ3dKQ3lBRElBMDNBNEFHSUFCQkEwY05BQ0FEUVFNMkFvd0dJQU5CM2ZBR05nS0lCaUFESUFNcEE0Z0dOd1BnQkVFZklBTkJnQVpxSUFOQjRBUnFFQ1ZGRFFnYUlBTkJBellDakFZZ0EwSHMvZ1kyQW9nR0lBTWdEVGNEZ0FZZ0F5QURLUU9JQmpjRDJBUkJJQ0FEUVlBR2FpQURRZGdFYWhBbFJRMElHaUFEUVFNMkFvd0dJQU5CdXYwR05nS0lCaUFESUEwM0E0QUdJQU1nQXlrRGlBWTNBOUFFUVNFZ0EwR0FCbW9nQTBIUUJHb1FKVVVOQ0JwQkFRd0VDeUFBUVFSR0lRa01BZ3RCQVFzaEJpQURJQTAzQTRBR0lBWU5BZ3RCQUFzaENrRUFEQUVMSUFOQkJqWUNqQVlnQTBILzl3WTJBb2dHSUFNZ0F5a0RpQVkzQS9BRElBTkJnQVpxSUFOQjhBTnFFQ1ZGRFFGQkFRc2hCaUFESUEwM0E0QUdBa0FnQUVFSFJ3MEFJQU5CQnpZQ2pBWWdBMEd0eEFNMkFvZ0dJQU1nQXlrRGlBWTNBK2dEUVNNZ0EwR0FCbW9nQTBIb0Eyb1FKVVVOQWhvZ0EwRUhOZ0tNQmlBRFFkR21BellDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndQZ0F5QURRWUFHYWlBRFFlQURhaEFsRFFCQkpBd0NDeUFESUEwM0E0QUdBa0FnQmtVTkFDQURRUVkyQW93R0lBTkIwdllHTmdLSUJpQURJQU1wQTRnR053UFlBeUFEUVlBR2FpQURRZGdEYWhBbERRQkJKUXdDQ3lBRElBMDNBNEFHQWtBZ0FFRUhSdzBBSUFOQkJ6WUNqQVlnQTBHUHhBTTJBb2dHSUFNZ0F5a0RpQVkzQTlBRFFTWWdBMEdBQm1vZ0EwSFFBMm9RSlVVTkFob2dBMEVITmdLTUJpQURRYk9tQXpZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053UElBeUFEUVlBR2FpQURRY2dEYWhBbERRQkJKd3dDQ3lBRElBMDNBNEFHQWtBZ0JrVU5BQ0FEUVFZMkFvd0dJQU5COHZFR05nS0lCaUFESUFNcEE0Z0dOd1BBQXlBRFFZQUdhaUFEUWNBRGFoQWxEUUJCS0F3Q0N5QURJQTAzQTRBR0FrQWdBRUVIUncwQUlBTkJCellDakFZZ0EwSHh3d00yQW9nR0lBTWdBeWtEaUFZM0E3Z0RRU2tnQTBHQUJtb2dBMEc0QTJvUUpVVU5BaG9nQTBFSE5nS01CaUFEUVpXbUF6WUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd093QXlBRFFZQUdhaUFEUWJBRGFoQWxEUUJCS2d3Q0N5QURJQTAzQTRBR0FrQWdCa1VOQUNBRFFRWTJBb3dHSUFOQitQY0dOZ0tJQmlBRElBTXBBNGdHTndPb0F5QURRWUFHYWlBRFFhZ0RhaEFsRFFCQkt3d0NDeUFESUEwM0E0QUdBa0FnQUVFSFJ3MEFJQU5CQnpZQ2pBWWdBMEdseEFNMkFvZ0dJQU1nQXlrRGlBWTNBNkFEUVN3Z0EwR0FCbW9nQTBHZ0Eyb1FKVVVOQWhvZ0EwRUhOZ0tNQmlBRFFjbW1BellDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndPWUF5QURRWUFHYWlBRFFaZ0RhaEFsRFFCQkxRd0NDeUFESUEwM0E0QUdBa0FnQmtVTkFDQURRUVkyQW93R0lBTkJ5L1lHTmdLSUJpQURJQU1wQTRnR053T1FBeUFEUVlBR2FpQURRWkFEYWhBbERRQkJMZ3dDQ3lBRElBMDNBNEFHQWtBZ0FFRUhSdzBBSUFOQkJ6WUNqQVlnQTBHSHhBTTJBb2dHSUFNZ0F5a0RpQVkzQTRnRFFTOGdBMEdBQm1vZ0EwR0lBMm9RSlVVTkFob2dBMEVITmdLTUJpQURRYXVtQXpZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053T0FBeUFEUVlBR2FpQURRWUFEYWhBbERRQkJNQXdDQ3lBRElBMDNBNEFHQWtBZ0JrVU5BQ0FEUVFZMkFvd0dJQU5CNi9FR05nS0lCaUFESUFNcEE0Z0dOd1A0QWlBRFFZQUdhaUFEUWZnQ2FoQWxEUUJCTVF3Q0N5QURJQTAzQTRBR0FrQWdBRUVIUncwQUlBTkJCellDakFZZ0EwSHB3d00yQW9nR0lBTWdBeWtEaUFZM0EvQUNRVElnQTBHQUJtb2dBMEh3QW1vUUpVVU5BaG9nQTBFSE5nS01CaUFEUVkybUF6WUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd1BvQWlBRFFZQUdhaUFEUWVnQ2FoQWxEUUJCTXd3Q0N5QURJQTAzQTRBR0FrQWdCa1VOQUNBRFFRWTJBb3dHSUFOQjhmY0dOZ0tJQmlBRElBTXBBNGdHTndQZ0FpQURRWUFHYWlBRFFlQUNhaEFsRFFCQk5Bd0NDeUFESUEwM0E0QUdBa0FnQUVFSFJ3MEFJQU5CQnpZQ2pBWWdBMEdkeEFNMkFvZ0dJQU1nQXlrRGlBWTNBOWdDUVRVZ0EwR0FCbW9nQTBIWUFtb1FKVVVOQWhvZ0EwRUhOZ0tNQmlBRFFjR21BellDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndQUUFpQURRWUFHYWlBRFFkQUNhaEFsRFFCQk5nd0NDeUFESUEwM0E0QUdBa0FnQmtVTkFDQURRUVkyQW93R0lBTkJ4UFlHTmdLSUJpQURJQU1wQTRnR053UElBaUFEUVlBR2FpQURRY2dDYWhBbERRQkJOd3dDQ3lBRElBMDNBNEFHQWtBZ0FFRUhSdzBBSUFOQkJ6WUNqQVlnQTBIL3d3TTJBb2dHSUFNZ0F5a0RpQVkzQThBQ1FUZ2dBMEdBQm1vZ0EwSEFBbW9RSlVVTkFob2dBMEVITmdLTUJpQURRYU9tQXpZQ2lBWWdBeUFOTndPQUJpQURJQU1wQTRnR053TzRBaUFEUVlBR2FpQURRYmdDYWhBbERRQkJPUXdDQ3lBRElBMDNBNEFHQWtBZ0JrVU5BQ0FEUVFZMkFvd0dJQU5CNVBFR05nS0lCaUFESUFNcEE0Z0dOd093QWlBRFFZQUdhaUFEUWJBQ2FoQWxEUUJCT2d3Q0N5QURJQTAzQTRBR0FrQWdBRUVIUncwQUlBTkJCellDakFZZ0EwSGh3d00yQW9nR0lBTWdBeWtEaUFZM0E2Z0NRVHNnQTBHQUJtb2dBMEdvQW1vUUpVVU5BaG9nQTBFSE5nS01CaUFEUVlXbUF6WUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd09nQWlBRFFZQUdhaUFEUWFBQ2FoQWxEUUJCUEF3Q0N5QURJQTAzQTRBR0FrQWdDa1VOQUNBRFFRTTJBb3dHSUFOQnRNZ0JOZ0tJQmlBRElBTXBBNGdHTndPWUFpQURRWUFHYWlBRFFaZ0NhaEFsRFFCQlBRd0NDeUFESUEwM0E0QUdBa0FnQUVFSFJ3MEFJQU5CQnpZQ2pBWWdBMEdjNWdFMkFvZ0dJQU1nQXlrRGlBWTNBNUFDSUFOQmdBWnFJQU5Ca0FKcUVDVU5BRUUrREFJTElBTWdEVGNEZ0FZQ1FDQUZSUTBBSUFOQkVqWUNqQVlnQTBHQnd3STJBb2dHSUFNZ0F5a0RpQVkzQTRnQ0lBTkJnQVpxSUFOQmlBSnFFQ1VOQUVFL0RBSUxJQU1nRFRjRGdBWUNmd0pBQWtBQ1FDQUFRUXBHQkVBZ0EwRUtOZ0tNQmlBRFFaU0dCVFlDaUFZZ0F5QURLUU9JQmpjRDhBRkJ3QUFnQTBHQUJtb2dBMEh3QVdvUUpVVU5CaG9nQTBFS05nS01CaUFEUWNDRkJUWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd1BvQVNBRFFZQUdhaUFEUWVnQmFoQWxEUUZCd1FBTUJnc2dBeUFOTndPQUJpQUFRUkJIRFFFZ0EwRVFOZ0tNQmlBRFFjOFpOZ0tJQmlBRElBTXBBNGdHTndQNEFTQURRWUFHYWlBRFFmZ0JhaEFsRFFKQndnQU1CUXNnQTBFS05nS01CaUFEUVpHRkJUWUNpQVlnQXlBTk53T0FCaUFESUFNcEE0Z0dOd1BnQVVIREFDQURRWUFHYWlBRFFlQUJhaEFsUlEwRUdrRUFEQUlMSUFNZ0RUY0RnQVpCQUNBQVFReEhEUUVhSUFOQkREWUNqQVlnQTBHTzNRUTJBb2dHSUFNZ0F5a0RpQVkzQTRBQ1FRQWdBMEdBQm1vZ0EwR0FBbW9RSlEwQkdrSEVBQXdEQzBFQkN5RUdJQU1nRFRjRGdBWUNRQ0FGUlEwQUlBTkJFallDakFZZ0EwR2xHVFlDaUFZZ0F5QURLUU9JQmpjRDJBRWdBMEdBQm1vZ0EwSFlBV29RSlEwQVFjVUFEQUlMSUFNZ0RUY0RnQVlDUUNBR1JRMEFJQU5CRURZQ2pBWWdBMEd2aFFVMkFvZ0dJQU1nQXlrRGlBWTNBOUFCSUFOQmdBWnFJQU5CMEFGcUVDVU5BRUhHQUF3Q0N5QURJQTAzQTRBR0FrQWdERVVOQUNBRFFSWTJBb3dHSUFOQnVCazJBb2dHSUFNZ0F5a0RpQVkzQThnQklBTkJnQVpxSUFOQnlBRnFFQ1VOQUVISEFBd0NDeUFESUEwM0E0QUdBa0FnQlVVTkFDQURRUkkyQW93R0lBTkIrOXdFTmdLSUJpQURJQU1wQTRnR053UEFBU0FEUVlBR2FpQURRY0FCYWhBbERRQkJ5QUFNQWdzZ0F5QU5Od09BQmdKQUlBQkJHRVlFUUNBRFFSZzJBb3dHSUFOQmpCazJBb2dHSUFNZ0F5a0RpQVkzQTdBQklBTkJnQVpxSUFOQnNBRnFFQ1VOQVVISkFBd0RDeUFESUEwM0E0QUdJQUJCSFVjTkFDQURRUjAyQW93R0lBTkIzb1VGTmdLSUJpQURJQU1wQTRnR053TzRBU0FEUVlBR2FpQURRYmdCYWhBbERRQkJ5Z0FNQWdzZ0F5QU5Od09BQmdKQUlBWkZEUUFnQTBFUU5nS01CaUFEUWFtV0F6WUNpQVlnQXlBREtRT0lCamNEcUFFZ0EwR0FCbW9nQTBHb0FXb1FKUTBBUWNzQURBSUxJQU1nRFRjRGdBWUNRQ0FMUlEwQUlBTkJGellDakFZZ0EwSDhoUVUyQW9nR0lBTWdBeWtEaUFZM0E2QUJJQU5CZ0FacUlBTkJvQUZxRUNVTkFFSE1BQXdDQ3lBRElBMDNBNEFHQWtBZ0JVVU5BQ0FEUVJJMkFvd0dJQU5CbjRZRk5nS0lCaUFESUFNcEE0Z0dOd09ZQVVITkFDQURRWUFHYWlBRFFaZ0JhaEFsUlEwQ0dpQURRUkkyQW93R0lBTkJ5NFVGTmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0E1QUJJQU5CZ0FacUlBTkJrQUZxRUNVTkFFSE9BQXdDQ3lBRElBMDNBNEFHQWtBZ0FFRVlSdzBBSUFOQkdEWUNqQVlnQTBIZ0dUWUNpQVlnQXlBREtRT0lCamNEaUFFZ0EwR0FCbW9nQTBHSUFXb1FKUTBBUWM4QURBSUxJQU1nRFRjRGdBWUNRQ0FGUlEwQUlBTkJFallDakFZZ0EwR2NoUVUyQW9nR0lBTWdBeWtEaUFZM0E0QUJJQU5CZ0FacUlBTkJnQUZxRUNVTkFFSFFBQXdDQ3lBRElBMDNBNEFHQWtBZ0NrVU5BQ0FEUVFNMkFvd0dJQU5COFB3R05nS0lCaUFESUFNcEE0Z0dOd040SUFOQmdBWnFJQU5CK0FCcUVDVU5BRUhSQUF3Q0N5QURJQTAzQTRBR0FrQWdDVVVOQUNBRFFRUTJBb3dHSUFOQmova0dOZ0tJQmlBRElBTXBBNGdHTndOd0lBTkJnQVpxSUFOQjhBQnFFQ1VOQUVIU0FBd0NDeUFESUEwM0E0QUdBa0FnQ0VVTkFDQURRUVUyQW93R0lBTkJ0Y1FETmdLSUJpQURJQU1wQTRnR053Tm9RZE1BSUFOQmdBWnFJQU5CNkFCcUVDVkZEUUlhSUFOQkJUWUNqQVlnQTBIWnBnTTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNEWUVIVUFDQURRWUFHYWlBRFFlQUFhaEFsUlEwQ0dpQURRUVUyQW93R0lBTkI0NkVETmdLSUJpQURJQTAzQTRBR0lBTWdBeWtEaUFZM0ExaEIxUUFnQTBHQUJtb2dBMEhZQUdvUUpVVU5BaG9nQTBFRk5nS01CaUFEUWZjcU5nS0lCaUFESUEwM0E0QUdJQU1nQXlrRGlBWTNBMUFnQTBHQUJtb2dBMEhRQUdvUUpRMEFRZFlBREFJTElBTWdEVGNEZ0FZQ1FDQUpSUTBBSUFOQkJEWUNqQVlnQTBIaTlnWTJBb2dHSUFNZ0F5a0RpQVkzQTBnZ0EwR0FCbW9nQTBISUFHb1FKUTBBUWRjQURBSUxJQU1nRFRjRGdBWUNRQ0FJUlEwQUlBTkJCVFlDakFZZ0EwR1h4QU0yQW9nR0lBTWdBeWtEaUFZM0EwQkIyQUFnQTBHQUJtb2dBMEZBYXhBbFJRMENHaUFEUVFVMkFvd0dJQU5CdTZZRE5nS0lCaUFESUEwM0E0QUdJQU1nQXlrRGlBWTNBemhCMlFBZ0EwR0FCbW9nQTBFNGFoQWxSUTBDR2lBRFFRVTJBb3dHSUFOQjNhRUROZ0tJQmlBRElBMDNBNEFHSUFNZ0F5a0RpQVkzQXpCQjJnQWdBMEdBQm1vZ0EwRXdhaEFsUlEwQ0dpQURRUVUyQW93R0lBTkI4U28yQW9nR0lBTWdEVGNEZ0FZZ0F5QURLUU9JQmpjREtDQURRWUFHYWlBRFFTaHFFQ1VOQUVIYkFBd0NDeUFESUEwM0E0QUdBa0FnQ1VVTkFDQURRUVEyQW93R0lBTkIrZkVHTmdLSUJpQURJQU1wQTRnR053TWdJQU5CZ0FacUlBTkJJR29RSlEwQVFkd0FEQUlMSUFNZ0RUY0RnQVlDUUNBSUJFQWdBMEVGTmdLTUJpQURRZm5EQXpZQ2lBWWdBeUFES1FPSUJqY0RHRUhkQUNBRFFZQUdhaUFEUVJocUVDVkZEUU1hSUFOQkJUWUNqQVlnQTBHZHBnTTJBb2dHSUFNZ0RUY0RnQVlnQXlBREtRT0lCamNERUVIZUFDQURRWUFHYWlBRFFSQnFFQ1ZGRFFNYUlBTkJCVFlDakFZZ0EwSFNvUU0yQW9nR0lBTWdEVGNEZ0FZZ0F5QURLUU9JQmpjRENDQURRWUFHYWlBRFFRaHFFQ1VOQVVIZkFBd0RDMEVBREFJTElBTkJCVFlDakFZZ0EwSHJLallDaUFZZ0F5QU5Od09BQmlBRElBTXBBNGdHTndNQVFRQkI0QUFnQTBHQUJtb2dBeEFsR3d3QkMwRWlDeUVBSUFOQmtBWnFKQUFnQUFSQUlBSkJBallDRUNBQ0lBQTJBaFFnQWkwQUdFRUNSZzBCSUFKQkFqb0FHQXdCQ3lBRUlBSXBBZ2dpRFRjREtDQUVJQTAzQTJnakFFR0FBV3NpQXlRQUlBTWdCQ2tDS0NJTk53TndBa0FDUUFKQUFrQUNRQUpBQWtBZ0RVSWdpS2NpQlVFTVJnUkFJQU5CRERZQ2ZDQURRZHZFQXpZQ2VDQURJQU1wQTNnM0F6QWdBMEh3QUdvZ0EwRXdhaEFsRFFGQkFTRUFEQWNMSUFNZ0RUY0RjQ0FGUVFwSERRRWdBMEVLTmdKOElBTkIvS0VETmdKNElBTWdBeWtEZURjRE9DQURRZkFBYWlBRFFUaHFFQ1VOQWtFQ0lRQU1CZ3NnQTBFTU5nSjhJQU5CbHNBRE5nSjRJQU1nRFRjRGNDQURJQU1wQTNnM0F5Z2dBMEh3QUdvZ0EwRW9haEFsRFFGQkF5RUFEQVVMSUFNZ0RUY0RjQ0FGUVJSR0JFQWdBMEVVTmdKOElBTkIvdTBFTmdKNElBTWdBeWtEZURjRFFDQURRZkFBYWlBRFFVQnJFQ1VOQTBFRUlRQU1CUXNnQXlBTk53TndBa0FDUUNBRlFRNUdCRUFnQTBFT05nSjhJQU5CclNJMkFuZ2dBeUFES1FONE53TlFJQU5COEFCcUlBTkIwQUJxRUNVTkFVRUZJUUFNQndzZ0F5QU5Od053SUFWQkUwWUVRQ0FEUVJNMkFud2dBMEhxN1FRMkFuZ2dBeUFES1FONE53TllJQU5COEFCcUlBTkIyQUJxRUNVTkJFRUdJUUFNQndzZ0F5QU5Od053SUFWQkZrY05BU0FEUVJZMkFud2dBMEdKSWpZQ2VDQURJQU1wQTNnM0EyQWdBMEh3QUdvZ0EwSGdBR29RSlEwRVFRY2hBQXdHQ3lBRFFRNDJBbndnQTBIbm1nRTJBbmdnQXlBTk53TndJQU1nQXlrRGVEY0RTQ0FEUWZBQWFpQURRY2dBYWhBbERRSkJDQ0VBREFVTElBTWdEVGNEY0NBRlFRaEhEUUVnQTBFSU5nSjhJQU5CNzhNQ05nSjRJQU1nQXlrRGVEY0RhQ0FEUWZBQWFpQURRZWdBYWhBbERRSkJDU0VBREFRTElBTWdEVGNEY0NBRlFReEhEUUFnQTBFTU5nSjhJQU5Cb0NJMkFuZ2dBeUFES1FONE53TVlJQU5COEFCcUlBTkJHR29RSlEwQ1FRb2hBQXdEQ3lBRElBMDNBM0JCQ3lFQUlBVkJDMGNOQUNBRFFRczJBbndnQTBIcmx3TTJBbmdnQXlBREtRTjROd01nSUFOQjhBQnFJQU5CSUdvUUpVVU5BZ3RCQUNFQURBRUxRUXdoQUNBRFFRdzJBbndnQTBIOElUWUNlQ0FESUEwM0EzQWdBeUFES1FONE53TVFJQU5COEFCcUlBTkJFR29RSlVVTkFDQURRUXcyQW53Z0EwSGQ3UVEyQW5nZ0F5QU5Od053SUFNZ0F5a0RlRGNEQ0VFQVFRMGdBMEh3QUdvZ0EwRUlhaEFsR3lFQUN5QURRWUFCYWlRQUlBQUVRQ0FDUVFNMkFoQWdBaUFBTmdJVUlBSXRBQmhCQTBZTkFTQUNRUU02QUJnTUFRc2dCQ0FDS1FJSUlnMDNBeUFnQkNBTk53TmdJd0JCMEFCcklnTWtBQ0FESUFRcEFpQWlEVGNEUUFKL0FrQUNRQ0FOUWlDSXB5SUFRUVJHQkVBZ0EwRUVOZ0pNSUFOQjVmQUNOZ0pJSUFNZ0F5a0RTRGNEQUNBRFFVQnJJQU1RSlEwQlFRRU1Bd3NnQXlBTk53TkFJQUJCQlVZRVFDQURRUVUyQWt3Z0EwRytMVFlDU0NBRElBTXBBMGczQXdnZ0EwRkFheUFEUVFocUVDVU5BVUVDREFNTElBTWdEVGNEUUNBQVFRaEdCRUFnQTBFSU5nSk1JQU5CamRNQ05nSklJQU1nQXlrRFNEY0RFQ0FEUVVCcklBTkJFR29RSlEwQlFRTU1Bd3NnQXlBTk53TkFBa0FDUUNBQVFRZEdCRUFnQTBFSE5nSk1JQU5CL3Q0RE5nSklJQU1nQXlrRFNEY0RLQ0FEUVVCcklBTkJLR29RSlEwQlFRVU1CUXNnQXlBTk53TkFJQUJCRFVjTkFTQURRUTAyQWt3Z0EwSEcxQUEyQWtnZ0F5QURLUU5JTndNd0lBTkJRR3NnQTBFd2FoQWxEUUpCQmd3RUN5QURRUWMyQWt3Z0EwR293Z1EyQWtnZ0F5QU5Od05BSUFNZ0F5a0RTRGNESUVFSElBTkJRR3NnQTBFZ2FoQWxSUTBER2lBRFFRYzJBa3dnQTBIZzlnSTJBa2dnQXlBTk53TkFJQU1nQXlrRFNEY0RHQ0FEUVVCcklBTkJHR29RSlEwQlFRZ01Bd3NnQXlBTk53TkFJQUJCQ1VZTkFRdEJBQXdCQ3lBRFFkK1JBallDU0NBRFFRazJBa3dnQXlBREtRTklOd000UVFCQkNTQURRVUJySUFOQk9Hb1FKUnNMSVFBZ0EwSFFBR29rQUNBQUJFQWdBa0VFTmdJUUlBSWdBRFlDRkNBQ0xRQVlRUVJHRFFFZ0FrRUVPZ0FZREFFTElBUWdBaWtDQ0NJTk53TVlJQVFnRFRjRFdFRUFJUVVqQUVHZ0FXc2lBeVFBSUFNZ0JDa0NHQ0lOTndPUUFRSkFBa0FDZndKQUFrQUNRQUpBSUExQ0lJaW5JZ1pCQ2tZRVFDQURRUW8yQXB3QklBTkJoZlVDTmdLWUFTQURJQU1wQTVnQk53TklJQU5Ca0FGcUlBTkJ5QUJxRUNVTkFVRUJJUUFNQndzZ0F5QU5Od09RQVNBR1FRaEdCRUFnQTBFSU5nS2NBU0FEUWRqNEFEWUNtQUVnQXlBREtRT1lBVGNEWUNBRFFaQUJhaUFEUWVBQWFoQWxEUUpCQWlFQURBY0xJQU1nRFRjRGtBRWdCa0VIUmdSQUlBTkJCellDbkFFZ0EwR01PellDbUFFZ0F5QURLUU9ZQVRjRGNDQURRWkFCYWlBRFFmQUFhaEFsUlFSQVFRTWhBQXdJQ3lBRFFRYzJBcHdCSUFOQnJ6bzJBcGdCSUFNZ0RUY0RrQUVnQXlBREtRT1lBVGNEYUNBRFFaQUJhaUFEUWVnQWFoQWxEUUZCQkNFQURBY0xJQU1nRFRjRGtBRWdCa0VKUncwQ0lBTkJDVFlDbkFFZ0EwSGgrQUEyQXBnQklBTWdBeWtEbUFFM0EzZ2dBMEdRQVdvZ0EwSDRBR29RSlEwRFFRVWhBQXdHQzBFQURBTUxJQU5CQ0RZQ25BRWdBMEdVT3pZQ21BRWdBeUFOTndPUUFTQURJQU1wQTVnQk53TllJQU5Ca0FGcUlBTkIyQUJxRUNWRkJFQkJCaUVBREFVTElBTkJDRFlDbkFFZ0EwRzNPallDbUFFZ0F5QU5Od09RQVNBRElBTXBBNWdCTndOUUlBTkJrQUZxSUFOQjBBQnFFQ1VOQTBFSElRQU1CQXNnQXlBTk53T1FBU0FHUVF0SERRSWdBMEVMTmdLY0FTQURRY3o0QURZQ21BRWdBeUFES1FPWUFUY0RpQUVnQTBHUUFXb2dBMEdJQVdvUUpVVUVRRUVJSVFBTUJBdEJDeUVBSUFOQkN6WUNuQUVnQTBHeitRQTJBcGdCSUFNZ0RUY0RrQUVnQXlBREtRT1lBVGNEZ0FFZ0EwR1FBV29nQTBHQUFXb1FKUTBDREFNTFFRRUxJUVVnQXlBTk53T1FBU0FHUVFwR0JFQWdBMEVLTmdLY0FTQURRWUU3TmdLWUFTQURJQU1wQTVnQk53TkFJQU5Ca0FGcUlBTkJRR3NRSlVVRVFFRUpJUUFNQXd0QkNpRUFJQU5CQ2pZQ25BRWdBMEdrT2pZQ21BRWdBeUFOTndPUUFTQURJQU1wQTVnQk53TTRJQU5Ca0FGcUlBTkJPR29RSlVVTkFnc2dBeUFOTndPUUFRc2dBeUFOTndPUUFRSkFJQVpCQ2tjTkFDQURRUW8yQXB3QklBTkJ5VHMyQXBnQklBTWdBeWtEbUFFM0F6QWdBMEdRQVdvZ0EwRXdhaEFsUlFSQVFRd2hBQXdDQ3lBRFFRbzJBcHdCSUFOQjdEbzJBcGdCSUFNZ0RUY0RrQUVnQXlBREtRT1lBVGNES0NBRFFaQUJhaUFEUVNocUVDVU5BRUVOSVFBTUFRc2dBeUFOTndPUUFRSkFJQVZGRFFBZ0EwRUpOZ0tjQVNBRFFmYzZOZ0tZQVNBRElBTXBBNWdCTndNZ0lBTkJrQUZxSUFOQklHb1FKUTBBUVE0aEFBd0JDeUFESUEwM0E1QUJBa0FnQmtFS1J3MEFJQU5CQ2pZQ25BRWdBMEc2OVFJMkFwZ0JJQU1nQXlrRG1BRTNBeGdnQTBHUUFXb2dBMEVZYWhBbERRQkJEeUVBREFFTElBTWdEVGNEa0FFQ1FDQUZSUTBBSUFOQkNUWUNuQUVnQTBHYU9qWUNtQUVnQXlBREtRT1lBVGNERUNBRFFaQUJhaUFEUVJCcUVDVU5BRUVRSVFBTUFRc2dBeUFOTndPUUFTQUdRUXBIQkVCQkFDRUFEQUVMSUFOQkNqWUNuQUVnQTBHUTlRSTJBcGdCSUFNZ0F5a0RtQUUzQXdoQkFFRVJJQU5Ca0FGcUlBTkJDR29RSlJzaEFBc2dBMEdnQVdva0FDQUFCRUFnQWtFRk5nSVFJQUlnQURZQ0ZDQUNMUUFZUVFWR0RRRWdBa0VGT2dBWURBRUxJQVFnQWlrQ0NDSU5Od01RSUFRZ0RUY0RVQ01BUVRCcklnTWtBQ0FESUFRcEFoQWlEVGNESUFKL0FrQUNRQ0FOUWlDSXB5SUFRUVJHQkVBZ0EwRUVOZ0lzSUFOQitmOEVOZ0lvSUFNZ0F5a0RLRGNEQ0NBRFFTQnFJQU5CQ0dvUUpRMEJRUUVNQXdzZ0F5QU5Od01nSUFCQkNrWUVRQ0FEUVFvMkFpd2dBMEdpM2dNMkFpZ2dBeUFES1FNb053TVFJQU5CSUdvZ0EwRVFhaEFsRFFGQkFnd0RDeUFESUEwM0F5QWdBRUVGUmcwQkMwRUFEQUVMSUFOQkJUWUNMQ0FEUWE3ZUF6WUNLQ0FESUFNcEF5ZzNBeGhCQUVFRElBTkJJR29nQTBFWWFoQWxHd3NoQUNBRFFUQnFKQUFnQUFSQUlBSkJCallDRUNBQ0lBQTJBaFFnQWkwQUdFRUdSZzBCSUFKQkJqb0FHQXdCQ3lBRUlBSXBBZ2dpRFRjRENDQUVJQTAzQTBnakFFRXdheUlESkFBZ0F5QUVLUUlJSWcwM0F5QUNmd0pBQWtBZ0RVSWdpS2NpQUVFRVJnUkFJQU5CQkRZQ0xDQURRYVA3QURZQ0tDQURJQU1wQXlnM0F3Z2dBMEVnYWlBRFFRaHFFQ1VOQVVFQkRBTUxJQU1nRFRjRElDQUFRUVpHQkVBZ0EwRUdOZ0lzSUFOQjc0OENOZ0lvSUFNZ0F5a0RLRGNERUNBRFFTQnFJQU5CRUdvUUpRMEJRUUlNQXdzZ0F5QU5Od01nSUFCQkMwWU5BUXRCQUF3QkN5QURRUXMyQWl3Z0EwRzN5Z00yQWlnZ0F5QURLUU1vTndNWVFRQkJBeUFEUVNCcUlBTkJHR29RSlJzTElRQWdBMEV3YWlRQUlBQUVRQ0FDUVFjMkFoQWdBaUFBTmdJVUlBSXRBQmhCQjBZTkFTQUNRUWM2QUJnTUFRc2dCQ0FDS1FJSUlnMDNBd0FnQkNBTk53TkFJd0JCTUdzaUF5UUFJQU1nQkNrQ0FDSU5Od01nQW44Q1FDQU5RaUNJcHlJQVFRWkdCRUFnQTBFR05nSXNJQU5CdnQ4Qk5nSW9JQU1nQXlrREtEY0RFQ0FEUVNCcUlBTkJFR29RSlEwQlFRRU1BZ3NnQXlBTk53TWdBa0FnQUVFSVJ3MEFJQU5CQ0RZQ0xDQURRYzNyQkRZQ0tDQURJQU1wQXlnM0F4Z2dBMEVnYWlBRFFSaHFFQ1VOQUVFQ0RBSUxRUUFNQVFzZ0EwRUdOZ0lzSUFOQnZMVUVOZ0lvSUFNZ0RUY0RJQ0FESUFNcEF5ZzNBd2hCQUVFRElBTkJJR29nQTBFSWFoQWxHd3NoQUNBRFFUQnFKQUFnQUVVTkFDQUNRUWcyQWhBZ0FpQUFOZ0lVSUFJdEFCaEJDRVlOQUNBQ1FRZzZBQmdMSUFSQmdBRnFKQUFnQVNBQktBSUFRUUZxTmdJQUlBZEJFR29pQUNBQ0tRSUlOd0lBSUFkQkNHb2dBVUVFYWlBQUlBSVE2QnNMSUFkQklHb2tBQXRtQVFGL0lBQkJBVFlDQUNBQVFRUnFJZ0pDQURjQ0FDQUNRUUEyQWhBZ0FrSUFOd0lJSUFKQkJCRHNEeUFBUVJocUlnSkNBRGNDQUNBQ1FRQTJBaEFnQWtJQU53SUlJQUpCQkJEckR5QUFRb0NBQkRjQ09DQUFRZ0EzQWpBZ0FDQUJOZ0lzSUFBTEZ3QWdBQ2dDQkVIUWxSSkdCSDhnQUNnQ0xBVWdBQXNMQ1FBZ0FCRE5DeEFmQzY0QkFRRi9Jd0JCSUdzaUNTUUFJQWtnQXpZQ0dDQUpJQUUyQWh3Z0NTQUVOZ0lVSUFrZ0JUWUNFQ0FKUVFNMkFnd2dDVUVBTmdJSUlBQWdDU2dDSENBSktBSVlJQWtvQWd3Z0NTZ0NGQ0FKS0FJUVFRQVE5UThpQUVIQW5CSTJBZ1FnQUVING5SSTJBZ0FnQUVJQU53SllJQUFnQmpZQ1ZDQUFJQUkyQWxBZ0FFR29uUkkyQWdBZ0FDQUhLUUlBTndKZ0lBQWdCeWdDQ0RZQ2FDQUFJQWdwQWdBM0Ftd2dDVUVnYWlRQUlBQUxvd0VCQVg4akFFRWdheUlKSkFBZ0NTQUNOZ0lZSUFrZ0FUWUNIQ0FKSUFNMkFoUWdDU0FFTmdJUUlBa2dCVFlDRENBSklBWTJBZ2dnQUNBSktBSWNJQWtvQWhnZ0NTZ0NGQ0FKS0FJUUlBa29BZ3dnQ1NnQ0NCRDFEeUlBUVpDY0VqWUNCQ0FBUWVpZEVqWUNBQ0FBUVppZEVqWUNBQ0FBSUFjcEFnQTNBbEFnQUNBSEtBSUlOZ0pZSUFCQkFEc0JYQ0FBSUFncEFnQTNBbUFnQ1VFZ2FpUUFJQUFMQndBZ0FCRE5Dd3RyQUNBQUVPa0hJZ0JCK0pzU05nSUVJQUJCeUowU05nSUFJQUJCQURZQ0lDQUFJQVkyQWh3Z0FDQUZOZ0lZSUFBZ0JEWUNGQ0FBSUFNMkFoQWdBQ0FDTmdJTUlBQWdBVFlDQ0NBQVFmaWNFallDQUNBQVFvQ0FnSUNBQVRjQ1NDQUFJQUJCSkdvMkFrUWdBQXRNQVFGL0FrQWdBQzBBSkNJQ0lBRXRBQ1JHQkVBZ0FrVU5BU0FBSUFFUTN3UWdBQ0FCS1FJY053SWNEQUVMSUFJRVFDQUFFTkFMREFFTElBQWdBUkQzRHdzZ0FDQUJLUUlvTndJb0N3NEFJQUFnQVJEUkMwRUJPZ0FrQzlnQkFRTi9JQUVnQUNnQ3FBSkxCRUFnQUNnQ29BSWhBeUFBSUFFUW5od0RRQ0FBS0FLa0FpQUNUUVJBSUFBZ0F4QTJCU0FDUVRCc0lnUWdBQ2dDb0FKcUlBTWdCR29pQkJENkd4b2dCQkRNQkNBQ1FRRnFJUUlNQVFzTEN5QUFLQUtrQWlFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDcEFJaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDb0FJZ0FrRXdiR29pQTBJQU53SW9JQU5CQURvQUpDQURRUUE2QUFBZ0FrRUJhaUVDREFBTEFBc0ZJQUFvQXFBQ0lBSkJBV3NpQWtFd2JHb1F6QVFNQVFzTElBQWdBVFlDcEFJTGpRSUNCSDhCZmlBQklBQW9Bc2dFU3dSQUlBQW9Bc0FFSVFSQkRDRURJQUFoQlNBQlFReFBCRUJCZnlBQnJVSXdmaUlHcHlBR1FpQ0lweHNRRlNFRklBRWhBd3NnQUNBRk5nTEFCQ0FBSUFNMkFzZ0VBMEFnQUNnQ3hBUWdBazBFUUNBQUlBUVFOZ1VnQWtFd2JDSURJQUFvQXNBRWFpQURJQVJxSWdNUTlSc2FJQU1RbVFNZ0FrRUJhaUVDREFFTEN3c2dBQ2dDeEFRaEFnTkFJQUVnQWs4RVFBSkFJQUFvQXNRRUlnSWdBU0FCSUFKSkd5RUVBMEFnQWlBRVJnMEJJQUFvQXNBRUlBSkJNR3hxSWdOQ0FEY0RLQ0FEUVFBNkFDQWdBMEVBT2dBQUlBSkJBV29oQWd3QUN3QUxCU0FBS0FMQUJDQUNRUUZySWdKQk1HeHFFSmtEREFFTEN5QUFJQUUyQXNRRUM3TUJBUVovSUFFUXNSMGhCQUpBSUFBb0FnUWlBMFVOQUNBQUtBSUFBbjhnQTBFQmF5QUVjU0FEYVNJQ1FRRk5EUUFhSUFRZ0F5QUVTdzBBR2lBRUlBTndDeUlGUVFKMGFpZ0NBQ0lBUlEwQUlBTkJBV3NoQmlBQ1FRRkxJUWNEUUNBQUtBSUFJZ0JGRFFFZ0FDZ0NCQ0lDSUFSSEJFQUNRQ0FIUlFSQUlBSWdCbkVoQWd3QkN5QUNJQU5KRFFBZ0FpQURjQ0VDQ3lBQ0lBVkhEUUlNQVFzZ0FFRUlhaUFCRU80TFJRMEFDeUFBRHd0QkFBdUNBZ0VGZnlBQUlBRVE3UVVnQUVFTWFpSURLQUlNQkVBZ0F5Z0NDQkNDSENBRFFRQTJBZ2dnQXlnQ0JDRUVBMEFnQWlBRVJnUkFJQU5CQURZQ0RBVWdBeWdDQUNBQ1FRSjBha0VBTmdJQUlBSkJBV29oQWd3QkN3c0xJQUVvQWd3aEFpQUJRUUEyQWd3Z0F5QUNFR3dnQXlBQktBSVFOZ0lFSUFGQkFEWUNFQ0FESUFFb0FoZ2lBallDRENBRElBRXFBaHc0QWhBZ0F5QUJLQUlVSWdRMkFnZ2dBZ1JBSUFOQkNHb2hCU0FFS0FJRUlRSUNRQ0FES0FJRUlnUWdCRUVCYXlJR2NVVUVRQ0FDSUFaeElRSU1BUXNnQWlBRVNRMEFJQUlnQkhBaEFnc2dBeWdDQUNBQ1FRSjBhaUFGTmdJQUlBRkNBRGNDRkFzZ0FDQUJLQUlnTmdJZ0N4c0JBWDhnQUVFTWFpSUJLQUlJRUlJY0lBRVFtd01nQUJBeUdnc3lBQ0FBRU9rSElnQkIySkVTTmdJRUlBQkJpSklTTmdJQUlBQWdBallDRENBQUlBRTJBZ2dnQUVINGtSSTJBZ0FnQUF0SUFRSi9JQUFvQWlRaEFpQUFLQUlvSVFOQkFDRUFBMEFDUUNBQUlBTkdCRUJCZnlFQURBRUxJQUlnQUVFQ2RHb29BZ0FvQWxRZ0FVWU5BQ0FBUVFGcUlRQU1BUXNMSUFBTHFRRUJBbjhqQUVHd0FXc2lCaVFBSUFBUWl4d2lCVUdJa1JJMkFnQWdCVUVJYWhDS0hDQUZJQVE2QUR3Z0JTQUROZ0k0SUFVZ0FUWUNDQ0FDS0FJQUlnSW9BZ0FpQUNBQ0tBSUVRUUowYWlFQ0EzOGdBQ0FDUmdSL0lBRkZCRUFnQmtHa2x3VkJKVUVKSUFaQm9BRnFFQjBpQUJBWElnRkJHR3BCMmJzSUVBNGFJQUVRR0NBQUVCNExJQVpCc0FGcUpBQWdCUVVnQlNBQUtBSUFFSjBlSUFCQkJHb2hBQXdCQ3dzTEJ3QWdBQkNUQ1F0TUFRRi9Ba0FnQUMwQVBDSUNJQUV0QUR4R0JFQWdBa1VOQVNBQUlBRVFvQThnQUNBQktBSTROZ0k0REFFTElBSUVRQ0FBRUpBY0RBRUxJQUFnQVJDRUVBc2dBQ0FCS1FKQU53SkFDK2tCQVFaL0l3QkJJR3NoQkNBQUtBS2tBaUlHUVFGcklRY0NRQU5BSUFVZ0JrWU5BU0FBS0FLZ0FpQUJRUmhzYWlJRExRQU1CRUFnQWlBQ0tBSVVJZ2dnQXlnQ0ZFc0VmeUFFSUFNcEFoQTNBeGdnQkNBREtRSUlOd01RSUFRZ0F5a0NBRGNEQ0NBRElBSXBBaEEzQWhBZ0F5QUNLUUlJTndJSUlBTWdBaWtDQURjQ0FDQUNJQVFwQXhnM0FoQWdBaUFFS1FNUU53SUlJQUlnQkNrRENEY0NBQ0FDS0FJVUJTQUlDMEVCYWpZQ0ZDQUJRUUZxUVFBZ0FTQUhSeHNoQVNBRlFRRnFJUVVNQVFzTElBTWdBaWtDQURjQ0FDQURJQUlwQWhBM0FoQWdBeUFDS1FJSU53SUlDd3M5QWdGL0FYNGdBQ2tEQUNFQ0lBQXRBQWdoQVFOQUlBRkJHSFJCR0hWQlBrd0VRQ0FBSUFGQkFXb2lBVG9BQ0NBQ0lBR3RpRUlCZzFBTkFRc0xDdzRBSUFBZ0FSRGFDMEVCT2dBOEM1RUNBZ1IvQVg0Z0FTQUFLQUxvQmtzRVFDQUFLQUxnQmlFRVFRd2hBeUFBSVFVZ0FVRU1Ud1JBUVg4Z0FhMUN5QUIrSWdhbklBWkNJSWluR3hBVklRVWdBU0VEQ3lBQUlBVTJBdUFHSUFBZ0F6WUM2QVlEUUNBQUtBTGtCaUFDVFFSQUlBQWdCQkEyQlNBQ1FjZ0FiQ0lESUFBb0F1QUdhaUFESUFScUlnTVFuUndhSUFNUWxBa2dBa0VCYWlFQ0RBRUxDd3NnQUNnQzVBWWhBZ05BSUFFZ0FrOEVRQUpBSUFBb0F1UUdJZ0lnQVNBQklBSkpHeUVFQTBBZ0FpQUVSZzBCSUFBb0F1QUdJQUpCeUFCc2FpSURRZ0EzQWtBZ0EwRUFPZ0E4SUFOQkFEb0FBQ0FDUVFGcUlRSU1BQXNBQ3dVZ0FDZ0M0QVlnQWtFQmF5SUNRY2dBYkdvUWxBa01BUXNMSUFBZ0FUWUM1QVlMMndFQ0JIOEJmaUFCSUFBb0FyZ0RTd1JBSUFBb0FyQURJUVJCRENFRElBQWhCU0FCUVF4UEJFQkJmeUFCclVJa2ZpSUdweUFHUWlDSXB4c1FGU0VGSUFFaEF3c2dBQ0FGTmdLd0F5QUFJQU0yQXJnREEwQWdBQ2dDdEFNZ0FrMEVRQ0FBSUFRUU5nVWdBa0VrYkNJRElBQW9BckFEYWlBRElBUnFRU1FRZlJvZ0FrRUJhaUVDREFFTEN3c2dBQ2dDdEFNaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0JFQWdBQ0FCTmdLMEF3VWdBQ2dDc0FNZ0FrRWtiR29pQTBJQU53SWNJQU5CQURvQUdDQURRUUE2QUFBZ0FrRUJhaUVDREFFTEN3dW1BUUVEZnlBQklBQW9BcWdDU3dSQUlBQW9BcUFDSVFNZ0FDQUJFSjRjQTBBZ0FDZ0NwQUlnQWswRVFDQUFJQU1RTmdVZ0FrRXdiQ0lFSUFBb0FxQUNhaUFESUFScVFUQVFmUm9nQWtFQmFpRUNEQUVMQ3dzZ0FDZ0NwQUlpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHQkVBZ0FDQUJOZ0trQWdVZ0FDZ0NvQUlnQWtFd2JHb2lBMElBTndNb0lBTkJBRG9BSUNBRFFRQTZBQUFnQWtFQmFpRUNEQUVMQ3d1L0FRRUVmeUFCSUFBb0FxZ0NTd1JBSUFBb0FxQUNJUU1nQUNBQkVLRVFBMEFnQUNnQ3BBSWdBazBFUUNBQUlBTVFOZ1VnQWtFWWJDSUVJQUFvQXFBQ2FpSUZJQU1nQkdvaUJDa0NBRGNDQUNBRklBUXBBaEEzQWhBZ0JTQUVLUUlJTndJSUlBSkJBV29oQWd3QkN3c0xJQUFvQXFRQ0lnSWdBU0FCSUFKSkd5RUZBMEFnQWlBRlJnUkFJQUFnQVRZQ3BBSUZJQUFvQXFBQ0lBSkJHR3hxSWdOQ0FEY0NFQ0FEUVFBNkFBd2dBMEVBT2dBQUlBSkJBV29oQWd3QkN3c0xqQUlCQkg4akFFSEFBV3NpQXlRQUlBRWdBa2NFUUNBQUtBSUFJZ1FvQWdRaEJTQURJQVEyQWdBZ0F5QUJOZ0lRSUFJb0Fvd0VJZ0VnQWlnQ2tBUkJBblJxSVFZQ1FBSkFBa0FEUUNBQklBWkdEUUVnQVNnQ0FDSUFJQU1vQWhCR0RRSWdBVUVFYWlFQklBQkJtQVJxSUFOQkVHb1E3QWRGRFFBTElBVWdBQ0FES0FJUUlBTVFueHdNQVFzZ0EwRWdha0hubWdWQmtBRkJDQ0FGRUJjaUFFRVlha0dSZ1FrUURob2dBQkFZREFFTElBTWdBQkRyQndzZ0F5QUNLQUpBS0FJa1FTUnFFRk1nQTBFUWFpSUFRY21KQ1NBREVEVWdBMEVnYWlJQklBQkI4NW9KRUMwZ0JDQUJJQUlvQWtCQkVHb1FoZ0VnQVJBUEdpQUFFQThhSUFNUUR4b0xJQU5Cd0FGcUpBQUxTZ0VDZnlNQVFSQnJJZ0lrQUNBQUtBSzRDaUVESUFKQkJqWUNBQ0FEUVJ4cUlBSVFyUVFpQTBVRVFDQUFJQUpCeVBnRUVCUWlBQ0FCRUNjZ0FCQVBHZ3NnQWtFUWFpUUFJQU1McHdFQkJIOGpBRUdnQVdzaUF5UUFJQUFvQWdBaUFoQWNJQUpCNUFGcUlBRVE0UUlpQkVVRVFDQUFLQUlBSWdBUUhDQURRZjJzQTBFelFRZ2dBRUhJQW1vUUZ5SUNRUmhxUWFhV0NSQU9HaUFDSUFFb0FnUkJCR29RbWdFaUJVRVlhaUlBUWR6eERCQU9HaUFBUVlQa0N4QU9HaUFGUVJCcUlBRkJFR29RcmdNZ0FFSGIrQXdRRGhvZ0FFSHc5UXNRRGhvZ0FDQUJFTjBESUFJUUdBc2dBMEdnQVdva0FDQUVDM2NCQlg4Z0FDZ0NBQ0lDS0FLQUFpSURJQUFvQWd4R0JFQWdBQ2dDQ0E4TEl3QkJFR3NpQVNRQUlBRkJDR29nQWlBQVFRUnFFS0VlSUFFb0Fnd2hCQ0FDS0FMd0FTRUNJQUV0QUFnaEJTQUJRUkJxSkFBZ0FpQUVRUlJzYWtFRWFrRUFJQVViSVFFZ0FDQUROZ0lNSUFBZ0FUWUNDQ0FCQ3lFQkFYOGpBRUVnYXlJQ0pBQWdBQ0FDSUFGQkNHb1FWaEJUSUFKQklHb2tBQXVvQVFFSGZ5TUFRZUFBYXlJQkpBQWdBQ2dDQUNFSElBRkJFR29pQXlBQUtBSUVLQUlBSWdJZ0FpZ0NBQ2dDREJFQ0FDQUJRU0JxSWdKQjg1b0pJQU1RTlNBQlFUQnFJZ1FnQWtIZ2xna1FMU0FCSUFBb0FnZ1Erd1VnQVVGQWF5SUZJQVFnQVJCT0lBRkIwQUJxSWdZZ0JVR1Y3d01RTFNBSElBWWdBQ2dDREJDR0FTQUdFQThhSUFVUUR4b2dBUkFQR2lBRUVBOGFJQUlRRHhvZ0F4QVBHaUFCUWVBQWFpUUFDOVFPQVJKL0l3QkI4QUpySWdRa0FDQUVJQUkyQXVnQ0lBUWdBVFlDN0FJZ0FDZ0N3QW9oQnlBRUlBSTJBdHdDSUFRZ0FUWUMyQUpCQVNFRkl3QkJFR3NpQ0NRQUlBaEJDR29nQnlBRVFkZ0NhaERFSENBSUtBSUlJUWNnQ0VFUWFpUUFBa0FnQjBFQ1JpQUNRUVpyUVFKTGNnMEFJQVFnQXpZQzVBSWdCQ0FBTmdMWUFpQUVJQVJCNkFKcU5nTGdBaUFFSUFSQjdBSnFOZ0xjQWdKQUFrQWdBUkJjSWdGRkRRQWdBU2dDQkVIUXFCSkhEUUFnQkNnQzZBSkJCa2NOQUNBQUlBUkJ5QUpxUVpybkFCQVVJZ0FnQXhBbklBQVFEeG9NQVFzZ0JDZ0M3QUlpQmlnQ0JDSUJRWUNaRWtjZ0JrVnlSUVJBUVFBaEFTQUNRUWhISVFvRFFDQUdLQUpJSUFGTEJFQWdBVUVDZENJSElBWW9Ba1JxS0FJQUlnc29BaWdpQWlBQ0tBSUFLQUlVRVFBQUlRVUNRQ0FLRFFBZ0FnUi9JQUlvQWdRUW9od0ZRUUFMUlEwQUlBVkJEMnBCY0hFaEJRc2dDeWdDS0NFQ0lBUWdDeWdDWENnQ0tDSUlLUUlZTndNb0lBUWdDQ2dDSURZQ01DQUVJQWdwQWhBM0F5QWdBQ0FDSUFRb0F1Z0NJQVJCSUdvUWp4QkZCRUFnQkVHNEFtb2lBaUFHRUl3SklBUkJ5QUpxSWdGQnkvTU1JQUlRTlNBQUlBRWdCaWdDbUFGQkVHb1FoZ0VnQVJBUEdpQUNFQThhSUFSQjJBSnFFSTRRREFRTEFrQWdDeWdDTUNBRmNFVU5BQ0FBS0FLNENpRUNJQVJCQlRZQ3lBSWdBa0VjYWlBRVFjZ0NhaEN0QkEwQUlBUkJpQUZxSWhBZ0N5Z0NLQkNFQVNJQklBRW9BZ0FvQWd3UkFnQWdCRUdZQVdvaUVVR1JsQWtnRUJBMUlBUkJxQUZxSWhJZ0VVSDZsZ2tRTFNBRVFmZ0FhaUlUSUFSQjZBSnFFUHNGSUFSQnVBRnFJaFFnRWlBVEVFNGdCRUhJQVdvaUZTQVVRYmF3Q2hBdElBUkI2QUJxSWcwZ0JSQmZJQVJCMkFGcUlna2dGU0FORUU0Z0JFSG9BV29pRENBSlFmU0hDUkF0SUFSQjJBQnFJZzRnQ3hDTkVDQUVRZmdCYWlJS0lBd2dEaEJPSUFSQmlBSnFJZ2dnQ2tHdHpRa1FMU0FFUWNnQWFpSUhJQXNvQWpBUVh5QUVRWmdDYWlJRElBZ2dCeEJPSUFSQnFBSnFJZ0lnQTBHTytBZ1FMU0FFUVRocUlnRWdCUkJmSUFSQnVBSnFJZzhnQWlBQkVFNGdCRUhJQW1vaUJTQVBRYmo4QVJBdElBQWdCU0FMS0FKY1FSQnFFQ2NnQlJBUEdpQVBFQThhSUFFUUR4b2dBaEFQR2lBREVBOGFJQWNRRHhvZ0NCQVBHaUFLRUE4YUlBNFFEeG9nREJBUEdpQUpFQThhSUEwUUR4b2dGUkFQR2lBVUVBOGFJQk1RRHhvZ0VoQVBHaUFSRUE4YUlCQVFEeG9nRHlBR0VJd0pJQVZCeS9NTUlBOFFOU0FBSUFVZ0JpZ0NtQUZCRUdvUWhnRWdCUkFQR2lBUEVBOGFJQXNvQWlnaUF5Z0NCRUdBbVJKSElBTkZja1VFUUNBRVFiZ0NhaUlDSUFNUWpBa2dCRUhJQW1vaUFVR2M5QXdnQWhBMUlBQWdBU0FES0FLWUFVRVFhaENHQVNBQkVBOGFJQUlRRHhvTElBUkIyQUpxRUk0UURBUUxBa0FnQVVVTkFDQUhJQVlvQWtScVFRUnJLQUlBSWd4RklBcHlEUUFnRENnQ0tCREpDVVVOQUNBTEtBSXdJQXdvQWpCcklnZEJEM0ZGRFFBZ0FDZ0N1QW9oQWlBRVFRVTJBc2dDSUFKQkhHb2dCRUhJQW1vUXJRUU5BQ0FFUWVnQmFpSU9JQWNRWHlBRVFmZ0JhaUlLUWFLK0NTQU9FRFVnQkVHSUFtb2lDQ0FLUWFPT0NSQXRJQVJCMkFGcUlnY2dEQkNORUNBRVFaZ0NhaUlESUFnZ0J4Qk9JQVJCcUFKcUlnSWdBMEhVbHdrUUxTQUVRY2dCYWlJQklBc1FqUkFnQkVHNEFtb2lCU0lOSUFJZ0FSQk9JQVJCeUFKcUlna2dEVUdiL0FFUUxTQUFJQWtnQ3lnQ1hFRVFhaEFuSUFrUUR4b2dEUkFQR2lBQkVBOGFJQUlRRHhvZ0F4QVBHaUFIRUE4YUlBZ1FEeG9nQ2hBUEdpQU9FQThhSUEwZ0JoQ01DU0FKUWN2ekRDQU5FRFVnQUNBSklBWW9BcGdCUVJCcUVJWUJJQWtRRHhvZ0JSQVBHa0VBSVFVZ0RTQU1LQUlvSWdGQkFDQUJLQUlFUVlDWkVrWWJJZ0VRakFrZ0NVR2s4d3dnRFJBMUlBQWdDU0FCS0FLWUFVRVFhaENHQVNBRVFjZ0NhaEFQR2lBRVFiZ0NhaEFQR2lBRVFkZ0NhaENPRUF3RkN5QUJRUUZxSVFFTUFRc0xJQVFvQXV3Q0lnWW9BZ1FoQVF0QkFTRUZJQUZCa0tJU1J3MEJJQVlvQWhnaEFTQUVJQU1wQWdnM0F4QWdCQ0FES0FJUU5nSVlJQVFnQXlrQ0FEY0RDQ0FBSUFFZ0JDZ0M2QUlnQkVFSWFoQ1BFRVVOQUNBRUtBTG9Ba0VJUncwQklBQW9BcmdLSVFFZ0JFRUZOZ0xJQWlBQlFSeHFJQVJCeUFKcUVLMEVEUUVnQmkwQUtFRVBjVVVOQVNBRVFjZ0NhaUlKRUZVZ0NRSi9RZE9IQ0NBR0tBSVlFTW9ERFFBYUFrQWdCaWdDR0JDeUFpSUJSUTBBSUFFb0FoZ2lBU0FCS0FJQUtBSVFFUUFBUVFSSERRQkI1SWdJREFFTFFlRE1CMEhnNlFjZ0JpZ0NHQ2dDQkVHQW1SSkdHd3NRMGdFZ0JFSG9BV29pRENBR0tBSVlJZ0VnQVNnQ0FDZ0NEQkVDQUNBRVFmZ0JhaUlPUVkyVENTQU1FRFVnQkVHSUFtb2lDaUFPUWMrd0NoQXRJQVJCMkFGcUlnZ2dCaWdDS0JCZklBUkJtQUpxSWdjZ0NpQUlFRTRnQkVHb0Ftb2lBaUFIUWZQUERCQXRJQVJCdUFKcUlnRWdBaUFKRUU0Z0FDQUJJQU1RSnlBQkVBOGFJQUlRRHhvZ0J4QVBHaUFJRUE4YUlBb1FEeG9nRGhBUEdpQU1FQThhSUFrUUR4b0xRUUFoQlFzZ0JFSHdBbW9rQUNBRkM1Y0JBUU4vQWtBQ1FBTkFRUUFoQWlBQklnTkZEUUlnQUVFQUlBTW9BZ1FpQVVIZ2xCSkdHdzBDSUFGQitKUVNSZ1JBSUFNb0FnZ1BDMEVBSVFFZ0F5Z0NEQ0lDUlEwQUlBSW9BZ1JCa0pJU1JnUkFJQU1vQWdnaUJDQUNLQUlJS0FJc1JpSUNJQUJ5RFFJZ0F5Z0NEQ0lDUlEwQkN5QUFSU0FDSWdFb0FnUkJ1SjhTUjNJTkFBdEJBQThMSUFSQkFDQUNHeUVDQ3lBQ0N5UUFJQUFvQWhSQkJXc2lBRUVFU3dSQVFkejREQThMSUFCQkFuUkJ1SXNTYWlnQ0FBdDlBUVIvSXdCQlFHb2lCaVFBSUFBb0FnUWhCeUFHUVFocUVNOElJUVFnQTBVRVFDQUFLQUlBS0FJQUVLY2JJUVVMSUFSQkNEWUNKQ0FFSUFVMkFnQWdCQ0FCS1FJQU53SUVJQVFnQVNrQ0NEY0NEQ0FFSUFFb0FoQTJBaFFnQkVFWWFpQUNFT0FDSUFjb0FnZ2dCQkNvQnlBRUVJY0ZJQVpCUUdza0FBczBBUUovSUFBb0FnQWhBU0FBS0FJRUlRSURRQUpBSUFFZ0FrWU5BQ0FCTFFBRURRQWdBQ0FCUVJCcUlnRTJBZ0FNQVFzTEM1Z0dBZ3QvQW40akFFR1FBbXNpQWlRQUFrQkJEQ0FCUVpZQmJFSGtBRzRpQVNBQlFReE5HeUlFSUFBb0F2UUJUUTBBSUFKQ2dJQ0FnSUFCTndKRUlBSWdBallDUUNBQ0lBQW9BdndCRU5VY0lBQW9BdkFCSWdFZ0FDZ0M5QUZCRkd4cUlRWURRQ0FCSUFaR0JFQWdBQkQ4SENBQUlBUVFyeEFnQWlnQ1FDSUVJQUlvQWtSQkEzUnFJUWtnQWtIb0FHb2hDZ05BSUFRZ0NVWUVRQ0FDUVFBMkFrUWdBaUFDS0FKQUVEWU1CQXNnQUNnQzlBRWdBQ2dDL0FFaUFVR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBRkJBWFJCQW1vUWxCQUxJQUpCaUFKcUlBQWdCQkR5QkNBQUtBTDBBU0lIUVFGcklRc2dBQ2dDOEFFaERFRUFJUUVnQWlnQ2pBSWhCaUFDS0FLSUFpRUZBa0FEUUNBQklBZEhCRUFnRENBRlFSUnNhaUlETFFBSVJRUkFJQVFwQWdBaERTQURRUUU2QUFnZ0F5QU5Od0lBSUFNZ0JqWUNEQ0FESUFFMkFoQWdBQ0FBS0FMOEFVRUJhallDL0FFZ0FDQUFLQUtBQWtFQmFqWUNnQUlNQXdzZ0JDZ0NBQ0VJSUFZZ0F5Z0NERVlFUUNBSUlBTW9BZ0JHRFFNTElBRWdBeWdDRUVzRVFDQUVLQUlFSVFjZ0FrRUJPZ0Q0QVNBQ0lBRTJBb0FDSUFJZ0J6WUM5QUVnQWlBSU5nTHdBU0FDSUFZMkF2d0JJQUlnQVRZQ1lDQUNJQUlwQS9nQklnMDNBMWdnQWlBQ0tRUHdBU0lPTndOUUlBSWdBeWdDRURZQ2dBSWdBaUFES1FJSU53UDRBU0FDSUFNcEFnQTNBL0FCSUFNZ0FUWUNFQ0FESUE0M0FnQWdBeUFOTndJSUlBSWdBaWdDZ0FKQkFXbzJBb0FDSUFBZ0JVRUJhaUFBS0FMMEFYQWdBa0h3QVdvUXNnUWdBQ0FBS0FMOEFVRUJhallDL0FFZ0FDQUFLQUtBQWtFQmFqWUNnQUlNQXdVZ0JVRUJha0VBSUFVZ0MwY2JJUVVnQVVFQmFpRUJEQUlMQUFzTElBSkIwQUJxUVlhMUEwSHJBMEVPSUFKQjhBRnFFQjBpQVJBWElRTWdDa0dXTlJBT0dpQURFQmdnQVJBZUN5QUVRUWhxSVFRTUFBc0FDeUFCTFFBSUJFQWdBaWdDUkNJRklBSW9Ba2dpQTA4RVFDQUNJQU5CQVhSQkFpQURHeERWSENBQ0tBSkVJUVVMSUFJZ0JVRUJhallDUkNBQ0tBSkFJQVZCQTNScUlBRXBBZ0EzQWdBTElBRkJGR29oQVF3QUN3QUxJQUpCa0FKcUpBQUxDZ0FnQUVHQS94RVFTQXM0QVFGL0FrQWdBVVVOQUNBQktBSU1JZ0VnQUNnQ0JDQUFLQUlBSWdCclFRSjFUdzBBSUFBZ0FVRUNkR29vQWdBUWtSNGhBZ3NnQWdzTEFDQUFRZmo2RVJEY0VndVhBZ0VIZnlNQVFjQUJheUlESkFBZ0EwRzRBV29nQVNBQ0VKb0pJQUVvQW53aUJVRUJheUVHSUFJb0FnQWhCeUFCS0FKNElRZ2dBeWdDdkFFaENTQURLQUs0QVNFQ1FRQWhBUUpBQTBBZ0FTQUZSd1JBSUFnZ0FrRVViR29pQkMwQUNFVUVRQ0FBUVFBMkFnUWdBRUVBT2dBQURBTUxBa0FnQkNnQ0RDQUpSdzBBSUFjZ0JDZ0NBRWNOQUNBQUlBSTJBZ1FnQUVFQk9nQUFEQU1MSUFFZ0JDZ0NFRXNFUUNBQVFRQTJBZ1FnQUVFQU9nQUFEQU1GSUFKQkFXcEJBQ0FDSUFaSEd5RUNJQUZCQVdvaEFRd0NDd0FMQ3lBRFFRaHFRWWExQTBHZUJFRU9JQU5CcUFGcUVCMGlBUkFYSWdKQkdHcEIwalVRRGhvZ0FoQVlJQUJCQURZQ0JDQUFRUUE2QUFBZ0FSQWVDeUFEUWNBQmFpUUFDMjBCQVg4Z0FFS0FnSUNBNEFBM0Fud2dBQ0FBTmdKNElBRkIrQUJxSVFJQ1FDQUJJQUVvQW5oSEJFQWdBQkNtRUNBQUlBSW9BZ2cyQW9BQklBQWdBaWtDQURjQ2VDQUJRUUEyQW9BQklBRkNBRGNDZUF3QkN5QUFJQUlRcEJBTElBQWdBU2tDaEFFM0FvUUJJQUFMU0FFQmZ5TUFRUkJySWdJa0FDQUFJQUZIQkVBZ0FpQUJRZUFBYWpZQ0NDQUNJQUVvQW1BZ0FVYzZBQXdnQUNBQ1FRaHFFTFFiQ3lBQ1FSQnFKQUFnQUNBQktRSnNOd0pzQy9JRkFRVi9Jd0JCSUdzaUFpUUFBa0FnQUMwQXhCZ2lBeUFCTFFERUdFWUVRQ0FEUlEwQklBQWdBU2dDQURZQ0FDQUFRUVJxSUFGQkJHb1FuZ0VnQUNBQktBSVlOZ0lZSUFBZ0FTa0NFRGNDRUNBQUlBRkhCRUFnQWlBQlFmd0hhallDQUNBQ0lBRW9BdndISUFGQkhHcEhPZ0FFSUFCQkhHb2dBaENISFNBQVFZZ0lhaUlERVBzY0lBSWdBRUdnQ0dvaUJDZ0NBRFlDR0NBQ0lBQkJtQWhxSWdVcEFnQTNBeEFnQWlBQVFaQUlhaUlHS1FJQU53TUlJQUlnQXlrQ0FEY0RBQ0FFSUFGQm9BaHFJZ1FvQWdBMkFnQWdCU0FCUVpnSWFpSUZLUUlBTndJQUlBWWdBVUdRQ0dvaUJpa0NBRGNDQUNBRElBRkJpQWhxSWdNcEFnQTNBZ0FnQkNBQ0tBSVlOZ0lBSUFVZ0Fpa0RFRGNDQUNBR0lBSXBBd2czQWdBZ0F5QUNLUU1BTndJQUlBQkJ0QWhxSUFGQnRBaHFLUUlBTndJQUlBQkJyQWhxSUFGQnJBaHFLUUlBTndJQUlBQkJwQWhxSUFGQnBBaHFLUUlBTndJQUlBSWdBVUdjRVdvaUF6WUNBQ0FDSUFNb0FnQWdBVUc4Q0dwSE9nQUVJQUJCdkFocUlBSVFoaDBnQUVHb0VXb2dBVUdvRVdvUTZSd2dBRUg4RW1vZ0FVSDhFbW9RbWhBZ0FFSHdFMm9nQVVId0Uyb1E2QndnQWlBQlFaUVlhaUlETmdJQUlBSWdBeWdDQUNBQlFhUVdha2M2QUFRZ0FFR2tGbW9nQWhDRkhTQUFRYUFZYWlBQlFhQVlhaWtDQURjQ0FDQUFRYWdZYWlJREVQMGNJQUlnQUVIQUdHb2lCQ2dDQURZQ0dDQUNJQUJCdUJocUlnVXBBZ0EzQXhBZ0FpQUFRYkFZYWlJR0tRSUFOd01JSUFJZ0F5a0NBRGNEQUNBRUlBRkJ3QmhxSWdRb0FnQTJBZ0FnQlNBQlFiZ1lhaUlGS1FJQU53SUFJQVlnQVVHd0dHb2lCaWtDQURjQ0FDQURJQUZCcUJocUlnTXBBZ0EzQWdBZ0JDQUNLQUlZTmdJQUlBVWdBaWtERURjQ0FDQUdJQUlwQXdnM0FnQWdBeUFDS1FNQU53SUFEQUlMSUFCQnFCRnFJZ01nQXhEcEhDQUFRZndTYWlJRElBTVFtaEFnQUVId0Uyb2lBeUFERU9nY0RBRUxJQU1FUUNBQUVPb2NEQUVMSUFBZ0FSQ3FFQXNnQUNBQktRTElHRGNDeUJnZ0FrRWdhaVFBQzRFREFRaC9Jd0JCc0FGcklnWWtBQ0FCRVB3Q0lRUWdBRUdVR0dvb0FnQWlCMEVCYXlFSklBUWdCM0FoQXlBQVFaQVlhaWdDQUNFSUFrQUNRQUpBQTBBZ0FpQUhSd1JBSUFnZ0EwRVViR29pQlMwQUNFVU5CQUpBSUFVb0Fnd2dCRWNOQUNBRktBSUFJQUZIRFFCQkFDRUNRUUFoQlFOQUlBVWdCMFlOQlNBQUtBS1FHQ0lFSUFOQkZHd2lDR29oQVNBQ0JFQWdCQ0FJYWlJRUtBSVFSUTBGSUFJZ0FTa0NBRGNDQUNBQ0lBRXRBQWc2QUFnZ0FpQUVLQUlNTmdJTUlBSWdCQ2dDRUVFQmF6WUNFQXNnQTBFQmFrRUFJQU1nQ1VjYklRTWdCVUVCYWlFRklBRWhBZ3dBQ3dBTElBVW9BaEFnQWtrTkJDQURRUUZxUVFBZ0F5QUpSeHNoQXlBQ1FRRnFJUUlNQVFzTElBWkJoclVEUVo0RVFRNGdCa0dnQVdvUUhTSUFFQmNpQVVFWWFrSFNOUkFPR2lBQkVCZ2dBQkFlREFJTElBSkNBRGNDRENBQ1FRQTZBQWdnQWtFQU9nQUFDeUFBUVp3WWFpSUJJQUVvQWdCQkFXczJBZ0FnQUVHZ0dHb2lBQ0FBS0FJQVFRRnFOZ0lBQ3lBR1FiQUJhaVFBQzFRQkFuOGpBRUdRQVdzaUFpUUFJQUJCNUFocUtBSUFJZ0ZCQWs4RVFDQUFJQUZCQVdzaUFUWUM1QWdnQWlBQUtBTGdDQ0FCUVl3QmJHb2lBQkNaRUNFQklBQVF6Z01nQVJET0F3c2dBa0dRQVdva0FBdHhBUVIvSXdCQmtBRnJJZ0lrQUNBQ0VOTUdJUU1nQUVIa0NHb29BZ0FpQVNBQVFlZ0lhaWdDQUNJRVR3UkFJQUFnQkVFQmRFRUNJQVFiRUpVZElBQW9BdVFJSVFFTElBQWdBVUVCYWpZQzVBZ2dBQ2dDNEFnZ0FVR01BV3hxSUFNUW1SQWFJQU1RemdNZ0FrR1FBV29rQUF2Y0FRRUVmeUFCSUFBb0FtaExCRUFnQUNnQ1lDRURJQUFoQWlBQUlBRkJCazhFZjBGL0lBRkJCSFFnQVVILy8vLy9BRXNiRUJVaEFpQUJCVUVHQ3pZQ2FDQUFJQUkyQW1CQkFDRUNBMEFnQUNnQ1pDQUNUUVJBSUFBZ0F4QTJCU0FDUVFSMElnUWdBQ2dDWUdvaUJTQURJQVJxSWdRcEFnQTNBZ0FnQlNBRUtRSUlOd0lJSUFKQkFXb2hBZ3dCQ3dzTElBQW9BbVFpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJIQkVBZ0FDZ0NZQ0FDUVFSMGFpSURRZ0EzQWdnZ0EwRUFPZ0FFSUFOQkFEb0FBQ0FDUVFGcUlRSU1BUXNMSUFBZ0FUWUNaQXNQQUNBQUxRQU1CRUFnQUJBUEdnc0xEUUFnQUNBQlFoaEJEQkRlRWdzMEFRRi9BMEFnQUNnQ3BBSWdBVTBFUUNBQVFRQTJBcVFDQlNBQUtBS2dBaUFCUVJoc2FoQ2dFQ0FCUVFGcUlRRU1BUXNMQ3hFQUlBQVFvaEFnQUNBQUtBS2dBaEEyQzRnQkFRTi9Ba0FnQUNnQ2dBRWdBU2dDQkVrRVFDQUFFS1lRSUFBZ0FTZ0NCQkNBSFF3QkN5QUFRUUEyQW53TElBQWdBU2dDQkNJQ05nSjhBMEFnQWlBRFN3UkFJQU5CRkd3aUJDQUFLQUo0YWlJQ0lBRW9BZ0FnQkdvaUJDa0NBRGNDQUNBQ0lBUW9BaEEyQWhBZ0FpQUVLUUlJTndJSUlBTkJBV29oQXlBQUtBSjhJUUlNQVFzTEM3a0JBUVIvSUFFZ0FDZ0NnQUZMQkVBZ0FDZ0NlQ0VESUFBZ0FSQ0FIUU5BSUFBb0Fud2dBazBFUUNBQUlBTVFOZ1VnQWtFVWJDSUVJQUFvQW5ocUlnVWdBeUFFYWlJRUtRSUFOd0lBSUFVZ0JDZ0NFRFlDRUNBRklBUXBBZ2czQWdnZ0FrRUJhaUVDREFFTEN3c2dBQ2dDZkNJQ0lBRWdBU0FDU1JzaEJRTkFJQUlnQlVaRkJFQWdBQ2dDZUNBQ1FSUnNhaUlEUWdBM0Fnd2dBMEVBT2dBSUlBTkJBRG9BQUNBQ1FRRnFJUUlNQVFzTElBQWdBVFlDZkFzU0FDQUFRUUEyQW53Z0FDQUFLQUo0RURZTEVRQWdBQkNDSFNBQUlBQW9BdUFJRURZTElRQWdBRUtBZ0lDQWdBRTNBaVFnQUNBQU5nSWdJQUFnQVVFZ2FoQ2dIeUFBQ3hFQUlBQVFoQjBnQUNBQUtBTGdCeEEyQ3c4QUlBQWdBUkRwQzBFQk9nREVHQXUyQVFFQ2Z5TUFRUkJySWdNa0FDQURJQUFvQWdBaUJDZ0NCQ0FBS0FJRUtBSUFLQUpJSUFKQkFuUnFLQUlBRUtNSElnQTJBZ3dnQkNnQzRLY0NJUVFDUUFKQUlBQW9BZ3dvQWdSQjJLd1NSZ1JBUVFFaEFDQUJJQVFvQXZnSElBSkIvQUJzYWlJQ1FmUUFhaERTQmcwQ1FRQWhBQ0FCSUFKQjhBQnFFTklHUlEwQkRBSUxJQU1nQkVHNENHb2dBMEVNYWhDREFqWUNDRUVBSVFBZ0FTQURRUWhxRU5JR0RRRUxRUUloQUFzZ0EwRVFhaVFBSUFBTCtBRUJCWDhnQUNnQ0FDSURLQUxncHdJZ0FSRHRCeUFBS0FJRUVKd0pBa0FnQUNnQ0JDQURLQUxncHdKQnJBaHFFTklHSWdVRVFDQURJQU1vQXVDbkFpSUFJQUFvQXF3SUlBRVE4UndNQVFzQ1FDQUFLQUlFSUFNb0F1Q25Ba0d3Q0dvUTBnWkZEUUFnQXlnQzRLY0NJZ0lvQWd4QkFVY05BQ0FDUVFBMkFnd2dBaUFCTmdJUUMwRUFJUUlEUUNBQ0lBQW9BZ2dvQWdBb0FreFBEUUVnQWtIOEFHd2lCQ0FES0FMZ3B3SW9BdmdIYWlnQ0JFRUNSZ1JBSUFBb0Fnd2dBQ2dDQkNBQ0VLc1FJUVlnQXlnQzRLY0NLQUw0QnlBRWFpSUVJQVkyQWdRZ0JDQUJOZ0lJQ3lBQ1FRRnFJUUlNQUFzQUN5QUZRUUZ6Q3pJQkFuOGpBRUhRR0dzaUFpUUFJQUlnQUJDSkhTRURJQUFnQVJDYkVDQUJJQU1RbXhBZ0F4RHhCeUFDUWRBWWFpUUFDeEVBSUFCQnhBQnFFQ01nQUVFWWFoQWpDNzhCQVFSL0lBRWdBQ2dDK0FGTEJFQWdBQ2dDOEFFaEF5QUFJQUVRcmd3RFFDQUFLQUwwQVNBQ1RRUkFJQUFnQXhBMkJTQUNRUlJzSWdRZ0FDZ0M4QUZxSWdVZ0F5QUVhaUlFS1FJQU53SUFJQVVnQkNnQ0VEWUNFQ0FGSUFRcEFnZzNBZ2dnQWtFQmFpRUNEQUVMQ3dzZ0FDZ0M5QUVpQWlBQklBRWdBa2tiSVFVRFFDQUNJQVZHUlFSQUlBQW9BdkFCSUFKQkZHeHFJZ05DQURjQ0RDQURRUUE2QUFnZ0EwRUFPZ0FBSUFKQkFXb2hBZ3dCQ3dzZ0FDQUJOZ0wwQVF1akFnSURmd0YrSUFFZ0FFSElwd0pxS0FJQVN3UkFJQUFvQXNDbkFpRURJQUFoQWlBQUlBRkJERThFZjBGL0lBR3RRdEFZZmlJRnB5QUZRaUNJcHhzUUZTRUNJQUVGUVF3TE5nTElwd0lnQUNBQ05nTEFwd0pCQUNFQ0EwQWdBQ2dDeEtjQ0lBSk5CRUFnQUNBREVEWUZJQUpCMEJoc0lnUWdBQ2dDd0tjQ2FpQURJQVJxSWdRUWlSMGFJQVFROFFjZ0FrRUJhaUVDREFFTEN3c2dBRUhFcHdKcUtBSUFJUUlEUUNBQklBSlBCRUFDUUNBQUtBTEVwd0lpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHRFFFZ0FDZ0N3S2NDSUFKQjBCaHNhaUlEUWdBM0FzZ1lJQU5CQURvQXhCZ2dBMEVBT2dBQUlBSkJBV29oQWd3QUN3QUxCU0FBS0FMQXB3SWdBa0VCYXlJQ1FkQVliR29ROFFjTUFRc0xJQUFnQVRZQ3hLY0NDd29BSUFCQjBLQVNFRWdMRGdBZ0FDQUJJQUpCaEJnUXZRd0xZQUVCZndKQUlBQXRBREFpQWlBQkxRQXdSZ1JBSUFKRkRRRWdBQ0FCRU44RUlBQWdBU2dDTERZQ0xDQUFJQUVwQWlRM0FpUWdBQ0FCS1FJY053SWNEQUVMSUFJRVFDQUFFS1FkREFFTElBQWdBUkRFRUFzZ0FDQUJLUUkwTndJMEN4UUFJQUJCQURZQ2xBRWdBQ0FBS0FLUUFSQTJDNzhCQVFSL0lBRWdBQ2dDbUFGTEJFQWdBQ2dDa0FFaEF5QUFJQUVRcWgwRFFDQUFLQUtVQVNBQ1RRUkFJQUFnQXhBMkJTQUNRUmhzSWdRZ0FDZ0NrQUZxSWdVZ0F5QUVhaUlFS1FJQU53SUFJQVVnQkNrQ0VEY0NFQ0FGSUFRcEFnZzNBZ2dnQWtFQmFpRUNEQUVMQ3dzZ0FDZ0NsQUVpQWlBQklBRWdBa2tiSVFVRFFDQUNJQVZHQkVBZ0FDQUJOZ0tVQVFVZ0FDZ0NrQUVnQWtFWWJHb2lBMElBTndJUUlBTkJBRG9BRENBRFFRQTZBQUFnQWtFQmFpRUNEQUVMQ3d1WUFRRUNmeU1BUVJCcklnSWtBQ0FBUW9DQWdJRGdBRGNDbEFFZ0FDQUFOZ0tRQVNBQ0lBRkJrQUZxTmdJSUlBSWdBU2dDa0FFZ0FVYzZBQXdDUUNBQ0xRQU1CRUFnQUJDMEVDQUFJQUlvQWdnaUF5a0NBRGNDa0FFZ0FDQURLQUlJTmdLWUFTQUNLQUlJSWdOQkFEWUNDQ0FEUWdBM0FnQU1BUXNnQUNBQ0tBSUlFS3NkQ3lBQ1FSQnFKQUFnQUNBQktRS2NBVGNDbkFFTE13RUJmZ0ovUVFBZ0FDa0RFRUtBd0lDQ2dJQ0lBWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFUElIRFFBYUlBQVFud2tMQ3hJQUlBQkI2QUJCbWY4RFFYeEJBeERLQVFzMEFRSi9JQUFvQWdBaEFTQUFLQUlFSVFJRFFBSkFJQUVnQWtZTkFDQUJMUUFNRFFBZ0FDQUJRUmhxSWdFMkFnQU1BUXNMQzlnQkFRTi9JQUVnQUNnQ21BUkxCRUFnQUNnQ2tBUWhBeUFBSUFFUXVSMERRQ0FBS0FLVUJDQUNUUVJBSUFBZ0F4QTJCU0FDUVN4c0lnUWdBQ2dDa0FScUlBTWdCR29pQkJDMUNSb2dCQkNxQWlBQ1FRRnFJUUlNQVFzTEN5QUFLQUtVQkNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDbEFRaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDa0FRZ0FrRXNiR29pQTBJQU53SWtJQU5CQURvQUlDQURRUUE2QUFBZ0FrRUJhaUVDREFBTEFBc0ZJQUFvQXBBRUlBSkJBV3NpQWtFc2JHb1FxZ0lNQVFzTElBQWdBVFlDbEFRTFlRSUJmd0YrQWtBZ0FDMEFDQ0lDSUFFdEFBaEdCRUFnQWtVTkFTQUFJQUVvQWdBMkFnQWdBQ0FCS0FJRU5nSUVEQUVMSUFJRVFDQUFRUUE2QUFnTUFRc2dBU2tDQUNFRElBQkJBVG9BQ0NBQUlBTTNBZ0FMSUFBZ0FTa0NERGNDREF1Q0FRRUVmeU1BUVNCcklnRWtBQ0FCUVFocUVLc2JJZ0lvQWdnaEF5QUJJQUkyQWdRZ0FTQUROZ0lBQWtBZ0FFRWNhaUlFSUFFUXZRRWlBZ1JBSUFJb0Fnd2hBQXdCQ3lBQUlBQVF0QVFRcXhzaUFoQW9JQUFnQUNnQ0dFRUJhallDR0NBQklBSWlBRFlDQkNBQklBTTJBZ0FnQkNBQkVMd0JDeUFCUVNCcUpBQWdBQXNTQUNBQVFmUUFRWTMvQTBGOFFRTVF5Z0VMWWdFQmZ3SkFJQUF0QUJRaUFpQUJMUUFVUmdSQUlBSkZEUUVnQUNBQkVNVWREQUVMSUFJRVFDQUFRUUE2QUJRTUFRc2dBQ0FCS1FJQU53SUFJQUFnQVNnQ0VEWUNFQ0FBSUFFcEFnZzNBZ2dnQUVFQk9nQVVDeUFBSUFFcEFoZzNBaGdMcUFFQ0EzOEJmaUFCSUFBb0FxZ0JTd1JBSUFBb0FxQUJJUVJCQ0NFRElBQWhBaUFCUVFoUEJFQkJmeUFCclVJVWZpSUZweUFGUWlDSXB4c1FGU0VDSUFFaEF3c2dBQ0FDTmdLZ0FTQUFJQU0yQXFnQlFRQWhBUU5BSUFBb0FxUUJJQUZOQkVBZ0FDQUVFRFlGSUFGQkZHd2lBaUFBS0FLZ0FXb2lBeUFDSUFScUlnSXBBZ0EzQWdBZ0F5QUNLQUlRTmdJUUlBTWdBaWtDQ0RjQ0NDQUJRUUZxSVFFTUFRc0xDd3VGQVFFQ2Z5QUFFQndqQUVFUWF5SUlKQUFnQUVHb0FXb2lBQkRQSFNFSklBTW9BZ0FoQXlBQ0tBSUFJUUlnQVNnQ0FDRUJJQWdnQkVFZ2FqWUNDQ0FJSUFRb0FpQWdCRWM2QUF3Z0FDQUpJQUVnQWlBRElBaEJDR29nQlNnQ0FDQUdLQUlBSUFjdEFBQVFpUndpQVJBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FJUVJCcUpBQWdBUXNiQUNBQVFvQ0FnSUFnTndJTUlBQWdBRFlDQ0NBQUlBRVExUjBMYXdFQ2Z5TUFRU0JySWdNa0FDQURRUWhxSUFBZ0FDZ0NCQ0FBS0FJQWEwRUNkVUVCYWhDTEJDQUFLQUlFSUFBb0FnQnJRUUoxSUFCQkNHb1Fwd0lpQWlnQ0NDQUJLQUlBTmdJQUlBSWdBaWdDQ0VFRWFqWUNDQ0FBSUFJUW93UWdBaENhQXlBRFFTQnFKQUFMT2dFQmYwRU1FQlVoQkNBQUlBRkJDR28yQWdRZ0FDQUVOZ0lBSUFRZ0F5Z0NBRFlDQ0NBQVFRRTZBQWdnQkVFQU5nSUFJQVFnQWpZQ0JBc09BQ0FBSUFFUStBdEJBVG9BTUF1TkFnSUVmd0YrSUFFZ0FDZ0MyQVZMQkVBZ0FDZ0MwQVVoQkVFTUlRTWdBQ0VGSUFGQkRFOEVRRUYvSUFHdFFqeCtJZ2FuSUFaQ0lJaW5HeEFWSVFVZ0FTRURDeUFBSUFVMkF0QUZJQUFnQXpZQzJBVURRQ0FBS0FMVUJTQUNUUVJBSUFBZ0JCQTJCU0FDUVR4c0lnTWdBQ2dDMEFWcUlBTWdCR29pQXhEbEhSb2dBeENrQ1NBQ1FRRnFJUUlNQVFzTEN5QUFLQUxVQlNFQ0EwQWdBU0FDVHdSQUFrQWdBQ2dDMUFVaUFpQUJJQUVnQWtrYklRUURRQ0FDSUFSR0RRRWdBQ2dDMEFVZ0FrRThiR29pQTBJQU53STBJQU5CQURvQU1DQURRUUE2QUFBZ0FrRUJhaUVDREFBTEFBc0ZJQUFvQXRBRklBSkJBV3NpQWtFOGJHb1FwQWtNQVFzTElBQWdBVFlDMUFVTFlBRUJmeUFBS0FJRUlnSUVRQ0FDS0FJQUlBRVFWMEVCUVFGQjFaNElRZENuQTBId0FCQkxDeUFBSUFFUXpRTWlBVVVFUUVFQUR3c2dBQ0FCRU5ZR0lRRWdBQ2dDQUNnQ0NDQUJFRmRCQVVFQlFhR2JDRUhRcHdOQjlBQVFTeUFCQ3dvQUlBQkIrUG9SRUVnTG1RSUJCMzhqQUVIQUFXc2lBeVFBSUFOQnVBRnFJQUVnQWhEeUJDQUJLQUwwQVNJRlFRRnJJUVlnQWlnQ0FDRUhJQUVvQXZBQklRZ2dBeWdDdkFFaENTQURLQUs0QVNFQ1FRQWhBUUpBQTBBZ0FTQUZSd1JBSUFnZ0FrRVViR29pQkMwQUNFVUVRQ0FBUVFBMkFnUWdBRUVBT2dBQURBTUxBa0FnQkNnQ0RDQUpSdzBBSUFjZ0JDZ0NBRWNOQUNBQUlBSTJBZ1FnQUVFQk9nQUFEQU1MSUFFZ0JDZ0NFRXNFUUNBQVFRQTJBZ1FnQUVFQU9nQUFEQU1GSUFKQkFXcEJBQ0FDSUFaSEd5RUNJQUZCQVdvaEFRd0NDd0FMQ3lBRFFRaHFRWWExQTBHZUJFRU9JQU5CcUFGcUVCMGlBUkFYSWdKQkdHcEIwalVRRGhvZ0FoQVlJQUJCQURZQ0JDQUFRUUE2QUFBZ0FSQWVDeUFEUWNBQmFpUUFDOElHQWdoL0FuNGpBRUhBQVdzaUJTUUFJQUVvQXZRQklBRW9BdndCSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVIZ0FHc2lCaVFBUVF3Z0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRU1UUnNpQnlBQktBTDBBVXNFUUNBR1FvQ0FnSUNBQVRjQ1ZDQUdJQVpCRUdvaUJEWUNVQ0FFSUFFb0F2d0JFTEVFSUFFb0F2QUJJZ1FnQVNnQzlBRkJGR3hxSVFnRFFBSkFJQVFnQ0VZRVFDQUJFTElGSUFFZ0J4RHpCQ0FHS0FKUUlnUWdCaWdDVkVFRGRHb2hCd3dCQ3lBRUxRQUlCRUFnQmtFUWFpQUVFTG9DRUxFRkN5QUVRUlJxSVFRTUFRc0xBMEFnQkNBSFJ3UkFJQVpCQ0dvZ0FTQUVJQVJCQkdvUXlSQWdCRUVJYWlFRURBRUxDeUFHUVJCcUVKVUJDeUFHUWVBQWFpUUFDeUFGUWJnQmFpQUJJQUlROGdRZ0FTZ0M5QUVpQ2tFQmF5RUxJQUlvQWdBaEJ5QUJLQUx3QVNFSUlBVW9BcndCSVFrZ0JTZ0N1QUVoQmtFQUlRSUNRQU5BSUFJZ0NrY0VRQ0FJSUFaQkZHeHFJZ1F0QUFoRkJFQWdBeWdDQUNFRElBUkJBVG9BQ0NBRUlBTTJBZ1FnQkNBSE5nSUFJQVVvQXJ3QklRTWdDQ0FHUVJSc2FpSUdJQUkyQWhBZ0JpQUROZ0lNSUFFZ0FTZ0MvQUZCQVdvMkF2d0JJQUVnQVNnQ2dBSkJBV28yQW9BQ0lBQWdCRUVFYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FFS0FJTUlBbEhEUUFnQnlBRUtBSUFSdzBBSUFCQkFqWUNBQ0FBSUFSQkJHbzJBZ1FNQXdzZ0FpQUVLQUlRU3dSQUlBTW9BZ0FoQXlBRlFRRTZBS2dCSUFVZ0FqWUNzQUVnQlNBRE5nS2tBU0FGSUFjMkFxQUJJQVVnQ1RZQ3JBRWdCU0FDTmdJUUlBVWdCU2tEcUFFaUREY0RDQ0FGSUFVcEE2QUJJZzAzQXdBZ0JTQUVLQUlRTmdLd0FTQUZJQVFwQWdnM0E2Z0JJQVVnQkNrQ0FEY0RvQUVnQkNBQ05nSVFJQVFnRFRjQ0FDQUVJQXczQWdnZ0JTQUZLQUt3QVVFQmFqWUNzQUVnQVNBR1FRRnFJQUVvQXZRQmNDQUZRYUFCYWhDeUJDQUJJQUVvQXZ3QlFRRnFOZ0w4QVNBQklBRW9Bb0FDUVFGcU5nS0FBaUFBSUFSQkJHbzJBZ1FnQUVFQU5nSUFEQU1GSUFaQkFXcEJBQ0FHSUF0SEd5RUdJQUpCQVdvaEFnd0NDd0FMQ3lBRlFZYTFBMEhyQTBFT0lBVkJvQUZxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBQkNBRGNDQUNBQkVCNExJQVZCd0FGcUpBQUw0Z0lCQ244Z0FDZ0NBQ0lFS0FLZ0FTSUhJQUFvQWhCR0JFQWdBQ2dDREE4TEl3QkJFR3NpQVNRQUl3QkJ3QUZySWdNa0FDQURRYmdCYWlBRUlBQkJCR29pQ0JDZkhTQUVLQUtVQVNJSlFRRnJJUW9nQXlnQ3VBRWhBZ0pBQTBBZ0JTQUpSd1JBSUFRb0FwQUJJQUpCR0d4cUlnWXRBQXhGQkVBZ0FVRUFOZ0lNSUFGQkFEb0FDQXdEQ3lBR0lBTW9BcndCSUFnUW5oMEVRQ0FCSUFJMkFnd2dBVUVCT2dBSURBTUxJQVVnQmlnQ0ZFc0VRQ0FCUVFBMkFnd2dBVUVBT2dBSURBTUZJQUpCQVdwQkFDQUNJQXBIR3lFQ0lBVkJBV29oQlF3Q0N3QUxDeUFEUVFocVFZYTFBMEdlQkVFT0lBTkJxQUZxRUIwaUFoQVhJZ1ZCR0dwQjBqVVFEaG9nQlJBWUlBRkJBRFlDRENBQlFRQTZBQWdnQWhBZUN5QURRY0FCYWlRQUlBRW9BZ3doQXlBRUtBS1FBU0VFSUFFdEFBZ2hBaUFCUVJCcUpBQWdBQ0FITmdJUUlBQWdCQ0FEUVJoc2FrRUlha0VBSUFJYklnQTJBZ3dnQUF0Z0FRTi9Jd0JCRUdzaUF5UUFJQUFvQWdRaEFDQUJLQUlBSVFVZ0F5QUJLQUlFSUFFdEFBc2lCQ0FFUVJoMFFSaDFRUUJJSWdRYk5nSU1JQU1nQlNBQklBUWJOZ0lJSUFNZ0F5a0RDRGNEQUNBQUlBTWdBaEQ1QVNBRFFSQnFKQUFMZ2dFQkJIOGpBRUVnYXlJQkpBQWdBVUVJYWhEQ0d5SUNLQUlJSVFNZ0FTQUNOZ0lFSUFFZ0F6WUNBQUpBSUFCQkhHb2lCQ0FCRUwwQklnSUVRQ0FDS0FJTUlRQU1BUXNnQUNBQUVMUUVFTUliSWdJUUtDQUFJQUFvQWhoQkFXbzJBaGdnQVNBQ0lnQTJBZ1FnQVNBRE5nSUFJQVFnQVJDOEFRc2dBVUVnYWlRQUlBQUxMZ0FnQUNnQ0JFSElqaEpIQkVBRFFDQUFLQUlNSWdCRkJFQkJBQThMSUFBb0FnUkJ5STRTUncwQUN3c2dBQXVDQVFFRWZ5TUFRU0JySWdFa0FDQUJRUWhxRU1RYklnSW9BZ2doQXlBQklBSTJBZ1FnQVNBRE5nSUFBa0FnQUVFY2FpSUVJQUVRdlFFaUFnUkFJQUlvQWd3aEFBd0JDeUFBSUFBUXRBUVF4QnNpQWhBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FCSUFJaUFEWUNCQ0FCSUFNMkFnQWdCQ0FCRUx3QkN5QUJRU0JxSkFBZ0FBdEJBUU4vSUFBb0FnUWhBZ0pBSUFBb0FnQkJBVUVBRUtnRklnUkZEUUFnQWlBRUtBSk1LQUlBRU5BRElnSkZEUUFnQUNnQ0NDQUNJQUVRMHdFaEF3c2dBd3NaQUNBQUlBRWdBaUFEUWVDYkVrSHdteEpCd0pzU0VPQVNDdzhBSUFBdEFCQUVRQ0FBRUpVQ0N3dWhIQUlRZndGK0l3QkJnQUpySWdJa0FDQUFLQUlVSVFZZ0FDZ0NFQ0VJSUFBb0Fnd2hCeUFBS0FJQUlRUWdBQ2dDQkNFTklBSWdBQ2dDQ0NJTE5nSU1JQUlnRFRZQ0NBSkFJQUVFUUNBQktBSUVJZ0JCa0tvU1JnUkFJQVJCQUVFQUVMa0NJUUFNQWdzZ0FFR2dzeEpHQkVBZ0JFRUJRUUFRdVFJaEFBd0NDeUFBUWRDb0VrWUVRRUVBSVFBZ0RVR3NIV29nQ3lnQ0FFRVFhaENLRUVVTkFpQUVRUU5CQUJDNUFpRUFEQUlMSUFCQnNLa1NSZ1JBSUFSQkFrRUFFTGtDSVFBTUFnc2dBRUhRcFJKR0JFQWdCRUVFUVFBUXVRSWhBQXdDQ3lBQUVKRURCRUFnQVNnQ0hDRUFJQUV0QUNBRVFDQUFRUU5IQkVBZ0FrRVFha0czbXdWQnZoQkJDQ0FDUWNnQmFoQWRJZ01RRnlJQVFSaHFRYWVhQ0JBT0dpQUFFQmdnQXhBZUN5QUVRUkVnQVNnQ0dCQzVBaUVBREFNTElBUkJmeUFBUVFOcUlBQkJBbXRCQTA4YklBRW9BaGdRdVFJaEFBd0NDeUFBUWZDcUVrWUVRQ0FFUVg4Z0FTZ0NJQ0FCS0FJa1FRTnNhaUlBSUFCQkNHdEJDVThiSUFFb0FoZ1F1UUloQUF3Q0N5QUFRWkNpRWtZRVFDQUNJQUUyQXJRQklBSWdCeWdDSkRZQ3ZBRWdBaUFCTmdLNEFTQUNJQWdvQWdBMkFzQUJJQUpCeUFGcUlBSkJ1QUZxRU5jZElRUkJBQ0VBSUFKQkFEWUNFQ0FDUWVBQmFpQU5RZUF0YWlJRElBUWdBa0VRYWhEV0hTQUdJQUlvQXVBQkJIOGdBUVVnRFVId01Hb29BZ0FoQmlBSEtBSWtJUWNnQWtLQWdJQ0FnQUUzQWpRZ0FpQUNRUkJxSWdvMkFqQWdDaUFIRURrRFFDQUhJQXhIQkVBZ0RTZ0NBQ0VLSUFKQkFEWUMvQUVnQWlBTU5nTDRBU0FDSUFFb0FoZzJBdlFCSUFKQkFEWUM4QUVnQWtFQU5nTHNBU0FDSUFvZ0FrSDRBV29nQWtIMEFXb2dBa0h3QVdvZ0FrSHNBV29RMUIwMkF0d0JJQXhCQVdvaERDQUNRUkJxSUFKQjNBRnFFQ1FNQVFzTElBMG9BZ0FnQWtHMEFXb2dBa0VRYWlJQklBZ1FvUXdoQ2lBQkVDTWdBaUFLTmdMOEFRSkFJQVlnRFNnQzhEQkdCRUFnQWlnQzVBRWdDallDQUF3QkMwRUFJUWdqQUVHd0FXc2lDU1FBSUFNb0FvUURJZ2NnQXlnQ2pBTWlBVUdXQVd4QmxnRnFRZVFBYmtrRVFDQURJQUZCQVhSQkFtb1F5QjBnQXlnQ2hBTWhCd3NnQjBFQmF5RUJJQVFvQWd3aUJpQUhjQ0VNQWtBRFFDQUhJQWhIQkVBZ0F5Z0NnQU1pQ2lBTVFRVjBhaUlGTFFBVVJRUkFJQUlvQXZ3QklRRWdCQ2tDQUNFU0lBVWdCQ2tDQ0RjQ0NDQUZJQkkzQWdBZ0JVRUJPZ0FVSUFVZ0FUWUNFQ0FLSUF4QkJYUnFJZ0VnQ0RZQ0hDQUJJQVkyQWhnZ0F5QURLQUtNQTBFQmFqWUNqQU1nQXlBREtBS1FBMEVCYWpZQ2tBTWdBaUFGUVJCcU5nSVVJQUpCQURZQ0VBd0RDeUFGSUFZZ0JCRHpDd1JBSUFrZ0JDa0NDRGNEQ0NBSklBUXBBZ0EzQXdBZ0NTQUNLQUw4QVRZQ0VDQUZJQWtReEIwZ0F5QURLQUtRQTBFQmFqWUNrQU1nQWlBRlFSQnFOZ0lVSUFKQkFUWUNFQXdEQ3lBSUlBVW9BaHhMQkVBZ0NTQUVLUUlJTndNSUlBa2dCQ2tDQURjREFDQUNLQUw4QVNFQklBa2dCallDR0NBSklBZzJBaHdnQ1NBQk5nSVFJQWxCQVRvQUZDQUpJQVVRb2drZ0NTQUpLQUljUVFGcU5nSWNJQU1nREVFQmFpQURLQUtFQTNBZ0NSRHlDeUFESUFNb0Fvd0RRUUZxTmdLTUF5QURJQU1vQXBBRFFRRnFOZ0tRQXlBQ0lBVkJFR28yQWhRZ0FrRUFOZ0lRREFNRklBeEJBV3BCQUNBQklBeEhHeUVNSUFoQkFXb2hDQXdDQ3dBTEN5QUpRWWExQTBIckEwRU9JQWxCb0FGcUVCMGlBeEFYSWdGQkdHcEJsalVRRGhvZ0FSQVlJQUpDQURjQ0VDQURFQjRMSUFsQnNBRnFKQUFnQWlBQ0tRTVFOd1BnQVFzZ0FpZ0N0QUVMSUFJb0F1UUJLQUlBRU5NZElnRkZEUUlnQVNFUVFRQWhEaUFOUWF3ZGFpRUlJQXNvQWdBaEN5QUNLQUswQVNFREl3QkJrQUpySWdVa0FDQUxLQUpJSWdRZ0N5Z0NURUVDZEdvaEFTQURLQUlZSVF3Q1FBSkFBa0FEUUNBQklBUkdEUUVnQkNnQ0FDRUhJQVJCQkdvaEJDQUlLQUlJSUFjUXB3VVFoQUVpQUNBTUVJb0pRWDlIRFFBTElBVkIwQUZxSWdZZ0NDZ0NDQ0FBRUtjQklBVkI0QUZxSWdwQjg1b0pJQVlRTlNBRlFmQUJhaUlFSUFwQnhJOEpFQzBnQlVIQUFXb2lBeUFJS0FJSUlBd1Fwd0VnQlVHQUFtb2lBU0FFSUFNUVRpQUZRU0JxSWdBZ0FVSHptZ2tRTFNBSUlBQWdCMEVRYWhBbklBQVFEeG9nQVJBUEdpQURFQThhSUFRUUR4b2dDaEFQR2lBR0VBOGFEQUVMSUFNb0Fod2lBU2dDQkVHb294SkdCRUFnQ0NBRlFTQnFRZTRhRUJRaUFDQUxRUkJxRUNjZ0FCQVBHZ3dCQ3lBQkVNRWNCRUFnQ0NBRlFTQnFRYVUzRUJRaUFDQUxRUkJxRUNjZ0FCQVBHZ3dCQ3lBTUxRQVFRUUZ4UlFSQUlBZ2dCVUVnYWtIQjhnTVFGQ0lBSUF0QkVHb1FKeUFBRUE4YURBRUxJQUVvQWdSQmtLTVNSd1JBSUFWQklHcEI1NW9GUWFVT1FRZ2dDQ2dDQkJBWElnQkJHR3BCLytVRUVBNGFJQUFRR0F3QkMwRUJJUVFnQ3lnQ1RDSUFSUTBCSUFBZ0FTZ0NEQ0lCUmcwQklBVkJ3QUZxSWdkQmk0VUtJQVZCSUdwQnVpbEJ3Uk1nQUNBQlNSc1FGQ0lBRU1RQklBVkIwQUZxSWdZZ0IwSFoyZ29RTFNBRlFSQnFJZ29nQVJCZklBVkI0QUZxSWdRZ0JpQUtFRTRnQlVId0FXb2lBeUFFUWFUS0NoQXRJQVVnQ3lnQ1RCQmZJQVZCZ0FKcUlnRWdBeUFGRUU0Z0NDQUJJQXRCRUdvUUp5QUJFQThhSUFVUUR4b2dBeEFQR2lBRUVBOGFJQW9RRHhvZ0JoQVBHaUFIRUE4YUlBQVFEeG9MUVFBaEJBc2dCVUdRQW1va0FDQVFJQTRnQkJzaEFBd0NDeUFBRU9ZREJFQWdBaUFCTmdMY0FTQUNJQWNvQWlRMkFyd0JJQUlnQVRZQ3VBRWdBaUFJS0FJQU5nTEFBU0FDUWNnQmFpQUNRYmdCYWhEWEhTRUtRUUFoQUNBQ1FRQTJBaEFnQWtIZ0FXb2dEVUgwTUdvaUJDQUtJQUpCRUdvUTBoMGdCaUFDS0FMZ0FRUi9JQUVGSUExQmhEUnFLQUlBSVF3Z0FrS0FnSUNBZ0FFM0FqUWdBaUFDUVJCcUlnTTJBakFnQXlBQktBSklJZ1lnQnlnQ0pDSUJJQUVnQmtzYklnWVFPU0FES0FJa0lnY2dCaUFHSUFkSkd5RUJBMEFnQVNBSFJnUkFJQU1nQmpZQ0pBVWdBeWdDSUNBSFFRSjBha0VBTmdJQUlBZEJBV29oQnd3QkN3c2dBaWdDTkNFSFFRQWhBUU5BSUEwb0FnQWhBeUFCSUFkSEJFQWdBa0VBTmdMOEFTQUNJQUUyQXZnQklBSWdBVUVDZENJR0lBSW9BdHdCS0FKRWFpZ0NBQ2dDS0RZQzlBRWdBa0VBTmdMd0FTQUNRUUEyQXV3QklBTWdBa0g0QVdvZ0FrSDBBV29nQWtId0FXb2dBa0hzQVdvUTFCMGhBeUFDS0FJd0lBWnFJQU0yQWdBZ0FVRUJhaUVCREFFTEN5QURJQUpCM0FGcUlBSkJFR29pQVNBSUVLRU1JUU1nQVJBaklBSWdBellDL0FFQ1FDQU1JQTBvQW9RMFJnUkFJQUlvQXVRQklBTTJBZ0FNQVF0QkFDRUlJd0JCc0FGcklna2tBQ0FFS0FLRUF5SUhJQVFvQW93RElnRkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0JDQUJRUUYwUVFKcUVNTWRJQVFvQW9RRElRY0xJQWRCQVdzaEFTQUtLQUlNSWdZZ0IzQWhEQUpBQTBBZ0J5QUlSd1JBSUFRb0FvQURJZ01nREVFRmRHb2lCUzBBRkVVRVFDQUNLQUw4QVNFQklBb3BBZ0FoRWlBRklBb3BBZ2czQWdnZ0JTQVNOd0lBSUFWQkFUb0FGQ0FGSUFFMkFoQWdBeUFNUVFWMGFpSUJJQWcyQWh3Z0FTQUdOZ0lZSUFRZ0JDZ0NqQU5CQVdvMkFvd0RJQVFnQkNnQ2tBTkJBV28yQXBBRElBSWdCVUVRYWpZQ0ZDQUNRUUEyQWhBTUF3c2dCU0FHSUFvUTh3c0VRQ0FKSUFvcEFnZzNBd2dnQ1NBS0tRSUFOd01BSUFrZ0FpZ0MvQUUyQWhBZ0JTQUpFTVFkSUFRZ0JDZ0NrQU5CQVdvMkFwQURJQUlnQlVFUWFqWUNGQ0FDUVFFMkFoQU1Bd3NnQ0NBRktBSWNTd1JBSUFrZ0Npa0NDRGNEQ0NBSklBb3BBZ0EzQXdBZ0FpZ0MvQUVoQVNBSklBWTJBaGdnQ1NBSU5nSWNJQWtnQVRZQ0VDQUpRUUU2QUJRZ0NTQUZFS0lKSUFrZ0NTZ0NIRUVCYWpZQ0hDQUVJQXhCQVdvZ0JDZ0NoQU53SUFrUThnc2dCQ0FFS0FLTUEwRUJhallDakFNZ0JDQUVLQUtRQTBFQmFqWUNrQU1nQWlBRlFSQnFOZ0lVSUFKQkFEWUNFQXdEQlNBTVFRRnFRUUFnQVNBTVJ4c2hEQ0FJUVFGcUlRZ01BZ3NBQ3dzZ0NVR0d0UU5CNndOQkRpQUpRYUFCYWhBZElnTVFGeUlCUVJocVFaWTFFQTRhSUFFUUdDQUNRZ0EzQWhBZ0F4QWVDeUFKUWJBQmFpUUFJQUlnQWlrREVEY0Q0QUVMSUFJb0F0d0JDeUFDS0FMa0FTZ0NBQkRUSFNJQlJRMENJQUVoRVVFQUlROGdEVUdzSFdvaENDQUxLQUlBSVF3Z0FpZ0MzQUVoQXlNQVFZQUJheUlMSkFCQkFTRUtBa0FDUUNBRExRQVFRUUZ4UlFSQUlBZ2dDMEh3QUdwQitvOEVFQlFpQUNBTVFSQnFFQ2NnQUJBUEdnd0JDeUFNS0FKTUlnRkZEUUVnQXlnQ1NDSUFJQUZIQkVBZ0MwRWdhaUlIUWFhRkNpQUxRZkFBYWtHNktVSEJFeUFBSUFGTEd4QVVJZ0FReEFFZ0MwRXdhaUlHSUFkQnh0b0tFQzBnQzBFUWFpSUtJQU1vQWtnUVh5QUxRVUJySWdRZ0JpQUtFRTRnQzBIUUFHb2lBeUFFUWFUS0NoQXRJQXNnRENnQ1RCQmZJQXRCNEFCcUlnRWdBeUFMRUU0Z0NDQUJJQXhCRUdvUUp5QUJFQThhSUFzUUR4b2dBeEFQR2lBRUVBOGFJQW9RRHhvZ0JoQVBHaUFIRUE4YUlBQVFEeG9NQVFzZ0F5Z0NSQ0lHSUFGQkFuUnFJUUVEUUNBQklBWkdEUUlnQ0NnQ0NDQU1LQUpJSUFZb0FnQWlCQ2dDTEVFQ2RHb29BZ0FpQUJDbkJTRURJQVpCQkdvaEJpQUVLQUlvSUFNUWhBRkdEUUFMSUF0Qk1Hb2lCeUFJS0FJSUlBUW9BaWdRcHdFZ0MwRkFheUlHUWNpWUNTQUhFRFVnQzBIUUFHb2lDaUFHUWFhWENSQXRJQXRCSUdvaUJDQUlLQUlJSUFNUXB3RWdDMEhnQUdvaUF5QUtJQVFRVGlBTFFmQUFhaUlCSUFOQjg1b0pFQzBnQ0NBQklBQkJFR29RSnlBQkVBOGFJQU1RRHhvZ0JCQVBHaUFLRUE4YUlBWVFEeG9nQnhBUEdndEJBQ0VLQ3lBTFFZQUJhaVFBSUJFZ0R5QUtHeUVBREFJTEN5TUFRUkJySWdFa0FDQUNLQUlJSUFGQis3WUVFQlFpQUNBQ0tBSU1LQUlBUVJCcUVDY2dBQkFQR2lBQlFSQnFKQUJCQUNFQUN5QUNRWUFDYWlRQUlBQUxzd01CQ1g4akFFRVFheUlESkFBakFFSEFBV3NpQkNRQUlBUkJ1QUZxSUFFZ0FoQ3lFQ0FCUVlRWWFpZ0NBQ0lIUVFGcklRZ2dBaWdDQUNFSklBRW9Bb0FZSVFvZ0JDZ0N2QUVoQ3lBRUtBSzRBU0VDQWtBRFFDQUZJQWRIQkVBZ0NpQUNRUVYwYWlJR0xRQVVSUVJBSUFOQkFEWUNEQ0FEUVFBNkFBZ01Bd3NDUUNBR0tBSVlJQXRIRFFBZ0NTQUdLQUlBUncwQUlBTWdBallDRENBRFFRRTZBQWdNQXdzZ0JTQUdLQUljU3dSQUlBTkJBRFlDRENBRFFRQTZBQWdNQXdVZ0FrRUJha0VBSUFJZ0NFY2JJUUlnQlVFQmFpRUZEQUlMQUFzTElBUkJDR3BCaHJVRFFaNEVRUTRnQkVHb0FXb1FIU0lDRUJjaUJVRVlha0hTTlJBT0dpQUZFQmdnQTBFQU5nSU1JQU5CQURvQUNDQUNFQjRMSUFSQndBRnFKQUFDUUNBRExRQUlCRUFnQVNnQ2dCZ2dBeWdDREVFRmRHcEJCR29oQVNBQVFmOEJPZ0FNSUFCQkFEb0FBQ01BUVJCcklnSWtBQ0FBRUpVQ0lBRXRBQXdpQkVIL0FVY0VRQ0FDUVFocUlBQWdBU0FFUVFKMFFiaUpFbW9vQWdBUkJRQWdBQ0FCTFFBTU9nQU1DeUFDUVJCcUpBQWdBRUVCT2dBUURBRUxJQUJCQURvQUVDQUFRUUE2QUFBTElBTkJFR29rQUF0SkFDQUFFQndnQUVHb0FXb2lBQ0FBRVBNRklBRW9BZ0FnQWlnQ0FDQURLQUlBSUFRb0FnQWdCU2dDQUNBR0xRQUFRUUFRbkFVaUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkMwb0JBbjhqQUVFUWF5SUVKQUFnQkVFSWFpSUZJQUJCQ0dvZ0FpQUJLQUlBSUFNUWlRMGdCUkF3SWdCRkJFQWdBU0FFUVFocUVCb29BZ0EyQWdBTElBUkJFR29rQUNBQVFRRnpDNmNGQWdKL0EzNGpBRUh3QVdzaUJ5UUFJQWNnQlRZQzZBRWdCeUFFTmdMc0FTQUhJQVFnQkNnQ0FDZ0NGQkVBQUNJSU5nTGtBU0FHclNBRUlBUW9BZ0FvQWhBUkFBQWlCQVIrSUFpdElna2dCSzE4UWdGOUlnb2dDaUFKZ24wRlFnQUxJZ3NnQmhzaENRSi9Ba0FnQlVVZ0JTZ0NCQ0lFUVpDakVrZHlSUVJBSUFrZ0JUVUNESDRpQ2tLQWdJQ0FFRlFOQVNBSFFkQUFhaEJKSWdGQkNHb2lBa0dhSnhBT0dpQUJJQUVvQWdCQkRHc29BZ0JxSWdRZ0JDZ0NCRUcxZjNGQkNISTJBZ1FnQWlBS0VNTUVHaUFDUWRXdUFSQU9HaUFIUVVCcklnSWdBVUVNYWhCQ0lBQWdBaUFERUNjZ0FoQVBHaUFCRUZGQkFBd0NDeUFKUWdBZ0JFR29veEpHR3lFS0N5QUFLQUlBSVFNZ0J5QUtQZ0pRSUFjZ0NUNENRQ0FISUFzK0FpZ2dCeUFESUFkQjdBRnFJQWRCNkFGcUlBZEI1QUZxSUFkQjBBQnFJQWRCUUdzZ0IwRW9haENtSHpZQ1BDQUhJQUFnQnlnQzdBRVEraDFCQVdvaUF6WUNPQ0FEUVlBQ1R3UkFJQWRCR0dvaUFpQURFRjhnQjBFb2FpSURRYW12Q2lBQ0VEVWdCMEZBYXlJRUlBTkJ0OTBKRUMwZ0IwRUlhaUlGUWY4QkVGOGdCMEhRQUdvaUJpQUVJQVVRVGlBQUlBWWdBUkFuSUFZUUR4b2dCUkFQR2lBRUVBOGFJQU1RRHhvZ0FoQVBHa0VBREFFTElBZEIwQUJxSUFCQmpEcHFJQWRCUEdvZ0IwRTRhaERKRUNBQVFhd2RhaUVCSUFjb0Fqd2hBeU1BUVNCcklnQWtBQUovQWtBZ0F5Z0NHQ0lERUpnSlJRUkFJQUFnQVNnQ0NDQURFS2NCSUFCQkVHb2lBeUFBUWZrWkVDMGdBU0FESUFJUUp5QURFQThhSUFBUUR4b01BUXNnQVNBREVONExSUVJBSUFFZ0FFRVFha0dWR3hBVUlnRWdBaEFuSUFFUUR4b01BUXRCQVNBREVOd0xSUTBCR2lBQklBSVEyd3NMUVFBTElRRWdBRUVnYWlRQUlBRWhBQ0FIS0FJOFFRQWdBQnNMSVFBZ0IwSHdBV29rQUNBQUMzd0JBMzhqQUVFUWF5SUNKQUFnQUVISUsyb2dBRUdJTkdvUWlRd2hBd0pBSUFFb0FoQWlBRVVOQUNBQUtBSUVJZ1JCa0p3U1JnUkFJQUlnQVRZQ0RDQUNJQUEyQWdnZ0FpQURJQUpCQ0dvUTl3VU1BUXNnQkVIQW5CSkhEUUFnQWlBQU5nSUFJQUpCQ0dvZ0EwRW9haUFDRUtzRkN5QUNRUkJxSkFBTEZ3QWdBRUVBSUFBRWZ5QUFLQUlFRUxBS0JVRUFDeHNMRndBZ0FFRUFJQUFFZnlBQUtBSUVFSzhJQlVFQUN4c0xrUUlCQTM4Z0FCQWNJQUJCcUFGcUlnUWhCaUFFRUtNZElRVWdBU2dDQUNFQklBSW9BZ0FoQWlBREtBSUFJUU1qQUVIQUFXc2lBQ1FBSUFBZ0FqWUN1QUVnQUNBQk5nSzhBU0FBSUFNMkFyUUJJQVVnQUNnQ3ZBRWdBQ2dDdUFFZ0FDZ0N0QUVRMXdzaUFVSElqaEkyQWdRZ0FVRzRqeEkyQWdBZ0FVSUFOd0xzQWlBQlFZaVBFallDQUNBQUtBSzRBVVVFUUNBQVFmaVNCVUV4UVFrZ0FFR2dBV29RSFNJQ0VCY2lBMEVZYWtHSm5RZ1FEaG9nQXhBWUlBSVFIZ3NnQUNnQ3RBRkZCRUFnQUVINGtnVkJNa0VKSUFCQm9BRnFFQjBpQWhBWElnTkJHR3BCekxFSUVBNGFJQU1RR0NBQ0VCNExJQUJCd0FGcUpBQWdCaUFCSWdBUUtDQUVJQVFvQWhoQkFXbzJBaGdnQUF2NUN3SU1md0o5SXdCQndBSnJJZ2drQUNBSUlBSTJBcmdDSUFnZ0FUWUN2QUlnQUVFTWFpSUJJQWhCdkFKcUVPY0VSUVJBSUFoQkVHb2lBRUVBUVpBQkVIa2FJQUFRM3dZaENpQUlJQWdvQXJ3Q05nS2dBU0FJUWFBQmFpSUpRUVJ5SUFvUW54NGhDeU1BUVJCcklnWWtBRUVBSVFJakFFRVFheUlISkFBZ0NSRDBBeUVBSUFZQ2Z3SkFJQUVvQWdRaUEwVU5BQ0FCS0FJQUFuOGdBMEVCYXlBQWNTQURhU0lFUVFGTkRRQWFJQUFnQUNBRFNRMEFHaUFBSUFOd0N5SUNRUUowYWlnQ0FDSUZSUTBBSUFOQkFXc2hEQ0FKS0FJQUlRMGdCRUVCU3lFT0EwQWdCU2dDQUNJRlJRMEJJQUFnQlNnQ0JDSUVSd1JBQWtBZ0RrVUVRQ0FFSUF4eElRUU1BUXNnQXlBRVN3MEFJQVFnQTNBaEJBc2dBaUFFUncwQ0N5QUZLQUlJSUExSERRQUxRUUFNQVF0Qm5BRVFGU0VFSUFjZ0FVRUlhallDQkNBSElBUTJBZ0FnQkVFSWFpSUZJQWtvQWdBMkFnQWdCVUVFYWlBSlFRUnFFSjhlR2lBSFFRRTZBQWdnQkVFQU5nSUFJQVFnQURZQ0JBSkFRUUFnQXlBQktBSU1RUUZxc3lJUElBRXFBaEFpRUNBRHM1UmVHdzBBSUFFZ0F5QURRUUZyY1VFQVJ5QURRUU5KY2lBRFFRRjBjaUlDQW44Z0R5QVFsWTBpRDBNQUFJQlBYU0FQUXdBQUFBQmdjUVJBSUErcERBRUxRUUFMSWdRZ0FpQUVTeHNRd3dFZ0FTZ0NCQ0lESUFOQkFXdHhSUVJBSUFOQkFXc2dBSEVoQWd3QkN5QUFJQU5KQkVBZ0FDRUNEQUVMSUFBZ0EzQWhBZ3NDUUNBQ1FRSjBJZ0lnQVNnQ0FHb29BZ0FpQUVVRVFDQUhLQUlBSUFFb0FnZzJBZ0FnQVNBSEtBSUFOZ0lJSUFFb0FnQWdBbW9nQVVFSWFqWUNBQ0FIS0FJQUlnQW9BZ0FpQWtVTkFTQUNLQUlFSVFVQ1FDQURJQU5CQVdzaUFuRkZCRUFnQWlBRmNTRUZEQUVMSUFNZ0JVc05BQ0FGSUFOd0lRVUxJQUVvQWdBZ0JVRUNkR29nQURZQ0FBd0JDeUFIS0FJQUlBQW9BZ0EyQWdBZ0FDQUhLQUlBTmdJQUN5QUhLQUlBSVFVZ0IwRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUhFT2tkUVFFTE9nQU1JQVlnQlRZQ0NDQUhRUkJxSkFBZ0NDQUdLQUlJTmdJSUlBZ2dCaTBBRERvQURDQUdRUkJxSkFBZ0N4Q3VCQ0FLRUs0RUN5TUFRU0JySWdja0FDQUhJQWhCdkFKcUlnWTJBaEJCQUNFQ0l3QkJFR3NpQlNRQUlBWVE5QU1oQUNBSEFuOENRQ0FCS0FJRUlnUkZEUUFnQVNnQ0FBSi9JQVJCQVdzZ0FIRWdCR2tpQ1VFQlRRMEFHaUFBSUFBZ0JFa05BQm9nQUNBRWNBc2lBa0VDZEdvb0FnQWlBMFVOQUNBRVFRRnJJUW9nQmlnQ0FDRUxJQWxCQVVzaENRTkFJQU1vQWdBaUEwVU5BU0FBSUFNb0FnUWlCa2NFUUFKQUlBbEZCRUFnQmlBS2NTRUdEQUVMSUFRZ0Jrc05BQ0FHSUFSd0lRWUxJQUlnQmtjTkFnc2dBeWdDQ0NBTFJ3MEFDMEVBREFFTFFad0JFQlVoQXlBRklBRkJDR28yQWdRZ0JTQUROZ0lBSUFjb0FoQWhDU01BUVJCcklnWWtBQ0FHSUFrMkFnZ2dBMEVJYWlJSklBWW9BZ2dvQWdBMkFnQWdDVUVFYWtFQVFaQUJFSGtRM3dZYUlBWkJFR29rQUNBRlFRRTZBQWdnQTBFQU5nSUFJQU1nQURZQ0JBSkFRUUFnQkNBQktBSU1RUUZxc3lJUElBRXFBaEFpRUNBRXM1UmVHdzBBSUFFZ0JDQUVRUUZyY1VFQVJ5QUVRUU5KY2lBRVFRRjBjaUlDQW44Z0R5QVFsWTBpRDBNQUFJQlBYU0FQUXdBQUFBQmdjUVJBSUErcERBRUxRUUFMSWdRZ0FpQUVTeHNRd3dFZ0FTZ0NCQ0lFSUFSQkFXdHhSUVJBSUFSQkFXc2dBSEVoQWd3QkN5QUFJQVJKQkVBZ0FDRUNEQUVMSUFBZ0JIQWhBZ3NDUUNBQ1FRSjBJZ0lnQVNnQ0FHb29BZ0FpQUVVRVFDQUZLQUlBSUFFb0FnZzJBZ0FnQVNBRktBSUFOZ0lJSUFFb0FnQWdBbW9nQVVFSWFqWUNBQ0FGS0FJQUlnQW9BZ0FpQWtVTkFTQUNLQUlFSVFNQ1FDQUVJQVJCQVdzaUFuRkZCRUFnQWlBRGNTRUREQUVMSUFNZ0JFa05BQ0FESUFSd0lRTUxJQUVvQWdBZ0EwRUNkR29nQURZQ0FBd0JDeUFGS0FJQUlBQW9BZ0EyQWdBZ0FDQUZLQUlBTmdJQUN5QUZLQUlBSVFNZ0JVRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUZFT2tkUVFFTE9nQWNJQWNnQXpZQ0dDQUZRUkJxSkFBZ0J5Z0NHQ0VBSUFkQklHb2tBQ0FBUVF4cUlBaEJ1QUpxRUlVTUlBaEJ3QUpxSkFBTFRBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUVNYWlJQUlBSkJER29RNXdRRWZ5QUFJQUpCREdvUXBRa2lBRVVFUUJBQkFBc2dBRUVNYWdWQkFBc2hBQ0FDUVJCcUpBQWdBQXNYQUNBQUlBRWdBa0h3eWdOQi90SURRY0dUQWhERURBc1hBQ0FBSUFFZ0FrRzN5d05CNnRNRFFiVy9BeERFREF1Z0FRRUNmeUFBSUFFMkF2ZzVJQUJCaERwcVFvT0FnSUF3TndJQUlBQkJnRHBxUWFTSUVqWUNBQ0FBUWZ3NWFrR0ZqUUUyQWdBZ0FFR29IV29oQXlBQUlBRVFxZ1VoQUNNQVFSQnJJZ0VrQUFKQUlBQkZEUUFnQUVFQUlBQUVmeUFBS0FJRUVOOGRCVUVBQ3hzaUFnMEFJQUZCQmpZQ0RDQUJRWVdOQVRZQ0NDQUJJQUVwQXdnM0F3QWdBeUFBSUFFUXBnVkJBQ0VDQ3lBQlFSQnFKQUFnQWdzakFRRi9JQUFvQWdBaUFTQUFLQUlFUndSQUlBQWdBVUVZYWpZQ0FDQUFFTGtRQ3d2L0NBSU5md0o5SXdCQklHc2lDU1FBSUFrZ0FUWUNFQ0FKUVJCcUlRVWpBRUVRYXlJSEpBQWdBUkN4SFNFSUlBa0Nmd0pBSUFBb0FnUWlBa1VOQUNBQUtBSUFBbjhnQWtFQmF5QUljU0FDYVNJR1FRRk5EUUFhSUFnZ0FpQUlTdzBBR2lBSUlBSndDeUlEUVFKMGFpZ0NBQ0lFUlEwQUlBSkJBV3NoQ2lBR1FRRkxJUXNEUUNBRUtBSUFJZ1JGRFFFZ0NDQUVLQUlFSWdaSEJFQUNRQ0FMUlFSQUlBWWdDbkVoQmd3QkN5QUNJQVpMRFFBZ0JpQUNjQ0VHQ3lBRElBWkhEUUlMSUFSQkNHb2dBUkR1QzBVTkFBdEJBQXdCQ3lBSElBQWdDQ0FGRUxBZEFrQkJBQ0FDSUFBb0FneEJBV3F6SWc4Z0FDb0NFQ0lRSUFLemxGNGJEUUFDUUFKL1FRSWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJQkFuOGdEeUFRbFkwaUQwTUFBSUJQWFNBUFF3QUFBQUJnY1FSQUlBK3BEQUVMUVFBTElnTWdBU0FEU3hzaUFVRUJSZzBBR2lBQklBRWdBVUVCYTNGRkRRQWFJQUVRZndzaUJTQUFLQUlFSWdGTkJFQWdBU0FGVFEwQklBRkJBMGtoQWdKL0lBQW9BZ3l6SUFBcUFoQ1ZqU0lQUXdBQWdFOWRJQTlEQUFBQUFHQnhCRUFnRDZrTUFRdEJBQXNoQXlBQklBVWdBaUFCYVVFQlMzSUVmeUFERUg4RklBTkJBVUVnSUFOQkFXdG5hM1FnQTBFQ1NSc0xJZ01nQXlBRlNSc2lCVTBOQVF0QkFDRUJBa0FnQlFSQUlBQWdCUkNYQXhCc0lBQWdCVFlDQkFOQUlBRWdCVVlFUUNBQUtBSUlJZ0pGRFFNZ0FFRUlhaUVCSUFJb0FnUWhCQUpBSUFWcElnTkJBVTBFUUNBRUlBVkJBV3R4SVFRTUFRc2dCQ0FGU1EwQUlBUWdCWEFoQkFzZ0FDZ0NBQ0FFUVFKMGFpQUJOZ0lBSUFWQkFXc2hDeUFEUVFGTElRd0RRQ0FDS0FJQUlnTkZEUVFnQXlnQ0JDRUJBa0FnREVVRVFDQUJJQXR4SVFFTUFRc2dBU0FGU1EwQUlBRWdCWEFoQVFzZ0FTQUVSd1JBSUFGQkFuUWlDaUFBS0FJQWFpSUdLQUlBQkVBZ0EwRUlhaUVOSUFNaEFRTkFBa0FnQVNJR0tBSUFJZ0ZGQkVCQkFDRUJEQUVMSUEwZ0FVRUlhaER1Q3lFT0lBWW9BZ0FoQVNBT0RRRUxDeUFDSUFFMkFnQWdCaUFBS0FJQUlBcHFLQUlBS0FJQU5nSUFJQUFvQWdBZ0Ntb29BZ0FnQXpZQ0FBd0NDeUFHSUFJMkFnQWdBU0VFQ3lBRElRSU1BQXNBQlNBQUtBSUFJQUZCQW5ScVFRQTJBZ0FnQVVFQmFpRUJEQUVMQUFzQUN5QUFRUUFRYkNBQVFRQTJBZ1FMQ3lBQUtBSUVJZ0lnQWtFQmEzRkZCRUFnQWtFQmF5QUljU0VEREFFTElBSWdDRXNFUUNBSUlRTU1BUXNnQ0NBQ2NDRURDd0pBSUFOQkFuUWlBeUFBS0FJQWFpZ0NBQ0lCUlFSQUlBY29BZ0FnQUNnQ0NEWUNBQ0FBSUFjb0FnQTJBZ2dnQUNnQ0FDQURhaUFBUVFocU5nSUFJQWNvQWdBaUFTZ0NBQ0lEUlEwQklBTW9BZ1FoQkFKQUlBSWdBa0VCYXlJRGNVVUVRQ0FESUFSeElRUU1BUXNnQWlBRVN3MEFJQVFnQW5BaEJBc2dBQ2dDQUNBRVFRSjBhaUFCTmdJQURBRUxJQWNvQWdBZ0FTZ0NBRFlDQUNBQklBY29BZ0EyQWdBTElBY29BZ0FoQkNBSFFRQTJBZ0FnQUNBQUtBSU1RUUZxTmdJTUlBY1Fpd0ZCQVFzNkFCd2dDU0FFTmdJWUlBZEJFR29rQUNBSktBSVlJUUFnQ1VFZ2FpUUFJQUJCRUdvTEpRQWdBQ0FCS0FLUUFTQUJLQUtVQVVFWWJHb2lBVFlDQkNBQUlBRTJBZ0FnQUJDNUVBc3JBUUYvSUFFb0FwUUJJUUlnQUNBQktBS1FBU0lCTmdJQUlBQWdBU0FDUVJoc2FqWUNCQ0FBRUxrUUM4c0JBUU4vQWtBZ0FDZ0NCQ0FBS0FJQUlnTnJRUUoxSWdJZ0FVRUJhaUlCSUFBb0FnUWdBQ2dDQUd0QkFuVWlCQ0FCSUFSTEd5SUJTUVJBSXdCQklHc2lBeVFBQWtBZ0FTQUNheUlCSUFBb0FnZ2dBQ2dDQkNJRWEwRUNkVTBFUUNBQUlBRVFoQjRNQVFzZ0EwRUlhaUFBSUFRZ0FDZ0NBR3RCQW5VZ0FXb1Fpd1FnQUNnQ0JDQUFLQUlBYTBFQ2RTQUFRUWhxRUtjQ0lnSWdBUkR0SENBQUlBSVFvd1FnQWhDYUF3c2dBMEVnYWlRQURBRUxJQUVnQWtrRVFDQUFJQU1nQVVFQ2RHbzJBZ1FMQ3dzb0FDQUFRUUEyQW9RRElBQkJEQkQ1Q3lBQVFRQTJBb3dESUFBZ0FDZ0NrQU5CQVdvMkFwQURDelFCQVg4RFFDQUFLQUtNQWlBQlRRUkFJQUJCQURZQ2pBSUZJQUFvQW9nQ0lBRkJMR3hxRUtvQ0lBRkJBV29oQVF3QkN3c0xtQUVCQW44akFFRVFheUlDSkFBZ0FFS0FnSUNBNEFBM0Fvd0NJQUFnQURZQ2lBSWdBaUFCUVlnQ2FqWUNDQ0FDSUFFb0FvZ0NJQUZIT2dBTUFrQWdBaTBBREFSQUlBQVE2QkFnQUNBQ0tBSUlJZ01wQWdBM0FvZ0NJQUFnQXlnQ0NEWUNrQUlnQWlnQ0NDSURRUUEyQWdnZ0EwSUFOd0lBREFFTElBQWdBaWdDQ0JEREhnc2dBa0VRYWlRQUlBQWdBU2tDbEFJM0FwUUNDeEVBSUFBUTVoQWdBQ0FBS0FLSUFoQTJDOWdCQVFOL0lBRWdBQ2dDa0FKTEJFQWdBQ2dDaUFJaEF5QUFJQUVReEI0RFFDQUFLQUtNQWlBQ1RRUkFJQUFnQXhBMkJTQUNRU3hzSWdRZ0FDZ0NpQUpxSUFNZ0JHb2lCQkMxQ1JvZ0JCQ3FBaUFDUVFGcUlRSU1BUXNMQ3lBQUtBS01BaUVDQTBBZ0FTQUNUd1JBQWtBZ0FDZ0NqQUlpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJHRFFFZ0FDZ0NpQUlnQWtFc2JHb2lBMElBTndJa0lBTkJBRG9BSUNBRFFRQTZBQUFnQWtFQmFpRUNEQUFMQUFzRklBQW9Bb2dDSUFKQkFXc2lBa0VzYkdvUXFnSU1BUXNMSUFBZ0FUWUNqQUlMMGdJQkMzOGdBQ2dDQUNJRUtBS1lBaUlJSUFBb0FpUkdCRUFnQUNnQ0lBOExJd0JCRUdzaUFTUUFJd0JCc0FGcklnVWtBQ0FFS0FLTUFpSUdRUUZySVFrZ0FFRUVhaUlLS0FJQUlnc2dCbkFoQWdKQUEwQWdBeUFHUndSQUlBUW9Bb2dDSUFKQkxHeHFJZ2N0QUNCRkJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REN5QUhJQXNnQ2hDNUNRUkFJQUVnQWpZQ0RDQUJRUUU2QUFnTUF3c2dBeUFIS0FJb1N3UkFJQUZCQURZQ0RDQUJRUUE2QUFnTUF3VWdBa0VCYWtFQUlBSWdDVWNiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVZCaHJVRFFaNEVRUTRnQlVHZ0FXb1FIU0lDRUJjaUEwRVlha0hTTlJBT0dpQURFQmdnQVVFQU5nSU1JQUZCQURvQUNDQUNFQjRMSUFWQnNBRnFKQUFnQVNnQ0RDRUNJQVFvQW9nQ0lRUWdBUzBBQ0NFRElBRkJFR29rQUNBQUlBZzJBaVFnQUNBRUlBSkJMR3hxUVJ4cVFRQWdBeHNpQURZQ0lDQUFDNmtCQVFSL0FrQWdBQzBBRkNJQ0lBRXRBQlJHQkVBZ0FrVU5BU0FBSUFFb0FnQTJBZ0FqQUVFUWF5SUNKQUFDUUNBQVFRUnFJZ010QUF4Qi93RkdJQUZCQkdvaUJTMEFEQ0lFUWY4QlJuRU5BQ0FFUWY4QlJnUkFJQU1RbFFJTUFRc2dBaUFETmdJSUlBSkJDR29nQXlBRklBUkJBblJCeUlVU2FpZ0NBQkVGQUFzZ0FrRVFhaVFBREFFTElBSUVRQ0FBRU5JZURBRUxJQUFnQVJEeEVBc2dBQ0FCS1FJWU53SVlDekFCQW44akFFRWdheUlDSkFBZ0FpQUFFTnNlSVFNZ0FDQUJFT3NRSUFFZ0F4RHJFQ0FERVA0SElBSkJJR29rQUF2eUFRRUVmeUFCSUFCQmlBeHFLQUlBU3dSQUlBQW9Bb0FNSVFSQjRBQWhBaUFBSVFVZ0FVSGdBRThFUUVGL0lBRkJCSFFnQVVILy8vLy9BRXNiRUJVaEJTQUJJUUlMSUFBZ0JUWUNnQXdnQUVHSURHb2dBallDQUFOQUlBQW9Bb1FNSUFOTkJFQWdBQ0FFRURZRklBTkJCSFFpQWlBQUtBS0FER29pQlNBQ0lBUnFJZ0lwQWdBM0FnQWdCU0FDS1FJSU53SUlJQU5CQVdvaEF3d0JDd3NMSUFCQmhBeHFLQUlBSWdNZ0FTQUJJQU5KR3lFRUEwQWdBeUFFUmdSQUlBQWdBVFlDaEF3RklBQW9Bb0FNSUFOQkJIUnFJZ0pDQURjQ0NDQUNRUUE2QUFRZ0FrRUFPZ0FBSUFOQkFXb2hBd3dCQ3dzTERnQWdBQ0FCRVBvRlFRRTZBQ0FMOUFFQ0JIOEJmaUFCSUFBb0F1Z0RTd1JBSUFBb0F1QURJUVZCR0NFQ0lBQWhCQ0FCUVJoUEJFQkJmeUFCclVJVWZpSUdweUFHUWlDSXB4c1FGU0VFSUFFaEFnc2dBQ0FFTmdMZ0F5QUFJQUkyQXVnREEwQWdBQ2dDNUFNZ0EwMEVRQ0FBSUFVUU5nVWdBMEVVYkNJRUlBQW9BdUFEYWlJQ0lBUWdCV29pQkNrQ0FEY0NBQ0FDSUFRb0FoQTJBaEFnQWlBRUtRSUlOd0lJSUFOQkFXb2hBd3dCQ3dzTElBQW9BdVFESWdNZ0FTQUJJQU5KR3lFRkEwQWdBeUFGUmdSQUlBQWdBVFlDNUFNRklBQW9BdUFESUFOQkZHeHFJZ0pDQURjQ0RDQUNRUUE2QUFnZ0FrRUFPZ0FBSUFOQkFXb2hBd3dCQ3dzTFd3RURmeUFCSUFBb0FneExCRUFnQUNnQ0JDRUNJQUFnQVJEY0hpQUFLQUlJSVFOQkFDRUJBMEFnQVNBRFJnUkFJQUFnQWhBMkJTQUJRUUowSWdRZ0FDZ0NCR29nQWlBRWFpZ0NBRFlDQUNBQlFRRnFJUUVNQVFzTEN3c09BQ0FBSUFFUWtneEJBVG9BRkF1VUFnRUVmeUFCSUFCQmlCaHFLQUlBU3dSQUlBQW9Bb0FZSVFSQjRBQWhBeUFBSVFVZ0FVSGdBRThFUUVGL0lBRkJCWFFnQVVILy8vOC9TeHNRRlNFRklBRWhBd3NnQUNBRk5nS0FHQ0FBUVlnWWFpQUROZ0lBQTBBZ0FDZ0NoQmdnQWswRVFDQUFJQVFRTmdVZ0FrRUZkQ0lESUFBb0FvQVlhaUFESUFScUlnTVEyeDRhSUFNUS9nY2dBa0VCYWlFQ0RBRUxDd3NnQUVHRUdHb29BZ0FoQWdOQUlBRWdBazhFUUFKQUlBQW9Bb1FZSWdJZ0FTQUJJQUpKR3lFRUEwQWdBaUFFUmcwQklBQW9Bb0FZSUFKQkJYUnFJZ05DQURjQ0dDQURRUUE2QUJRZ0EwRUFPZ0FBSUFKQkFXb2hBZ3dBQ3dBTEJTQUFLQUtBR0NBQ1FRRnJJZ0pCQlhScUVQNEhEQUVMQ3lBQUlBRTJBb1FZQ3pJQkFuOGpBRUdRQVdzaUFpUUFJQUlRU1NJRElBRW9BZ0FRMVE4YUlBQWdBMEVNYWhCQ0lBTVFVU0FDUVpBQmFpUUFDdzhBSUFBZ0FVSDR2UkpCQXhETURBc1BBQ0FBSUFGQmlMNFNRUU1RekF3TE1nRUNmeU1BUVpBQmF5SUNKQUFnQWhCSklnTWdBU2dDQUJDMkN4b2dBQ0FEUVF4cUVFSWdBeEJSSUFKQmtBRnFKQUFMTWdFQ2Z5TUFRWkFCYXlJQ0pBQWdBaEJKSWdNZ0FTZ0NBQkNiQkJvZ0FDQURRUXhxRUVJZ0F4QlJJQUpCa0FGcUpBQUxOd0VDZnlNQVFaQUJheUlDSkFBZ0FoQkpJZ05CQ0dvZ0FTZ0NBQkRKQXhBT0dpQUFJQU5CREdvUVFpQURFRkVnQWtHUUFXb2tBQXM2QVFKL0l3QkJFR3NpQWlRQUlBSkJDR29nQUVHTUFtb2dBUkRQSGlBQ0tBSUlJUU1nQWtFUWFpUUFJQU5CQWtjRVFDQUFJQUVRbEFNTEMrVUJBUVIvSUFFZ0FDZ0N5QUZMQkVBZ0FDZ0N3QUVoQXlBQUlRSWdBQ0FCUVF4UEJIOUJmeUFCUVFSMElBRkIvLy8vL3dCTEd4QVZJUUlnQVFWQkRBczJBc2dCSUFBZ0FqWUN3QUZCQUNFQ0EwQWdBQ2dDeEFFZ0FrMEVRQ0FBSUFNUU5nVWdBa0VFZENJRUlBQW9Bc0FCYWlJRklBTWdCR29pQkNrQ0FEY0NBQ0FGSUFRcEFnZzNBZ2dnQWtFQmFpRUNEQUVMQ3dzZ0FDZ0N4QUVpQWlBQklBRWdBa2tiSVFRRFFDQUNJQVJIQkVBZ0FDZ0N3QUVnQWtFRWRHb2lBMElBTndJSUlBTkJBRG9BQkNBRFFRQTZBQUFnQWtFQmFpRUNEQUVMQ3lBQUlBRTJBc1FCQ3hvQUlBQkJxUFlQUWVqMUQwS0FnWURBZ0lDQWdJSi9FTVlNQzZjSkFnaC9BbjRqQUVIQUFXc2lCU1FBSUFFb0F1UURJQUVvQXV3RElnUkJsZ0ZzUVpZQmFrSGtBRzVKQkVBakFFR2dBV3NpQmlRQVFSZ2dCRUVCZEVFQ2FrR1dBV3hCNUFCdUlnUWdCRUVZVFJzaUNTQUJLQUxrQTBzRVFDQUdRb0NBZ0lDQUFqY0NsQUVnQmlBR1FSQnFJZ1EyQXBBQklBUWdBU2dDN0FNUXR4NGdBU2dDNEFNaUJDQUJLQUxrQTBFVWJHb2hDZ05BQWtBZ0JDQUtSZ1JBSUFFUTdCNGdBU0FKRU84UUlBWW9BcEFCSWdRZ0JpZ0NsQUZCQTNScUlRY01BUXNnQkMwQUNBUkFJQVFRdWdJaEN5QUdRUkJxSWdjb0FvUUJJZ2dnQnlnQ2lBRlBCRUFnQnlBSEtBS0lBU0lJUVFGMFFRSWdDQnNRdHg0Z0J5Z0NoQUVoQ0FzZ0J5QUlRUUZxTmdLRUFTQUhLQUtBQVNBSVFRTjBhaUFMS1FJQU53SUFDeUFFUVJScUlRUU1BUXNMQTBBZ0JDQUhSd1JBSUFaQkNHb2dBU0FFSUFSQkJHb1EvQkFnQkVFSWFpRUVEQUVMQ3lBR1FSQnFFTndGQ3lBR1FhQUJhaVFBQ3lNQVFSQnJJZ1lrQUNBQ0tBSUFFUHdDSVFRZ0FTZ0M1QU1oQnlBRklBUTJBcndCSUFVZ0JDQUhjRFlDdUFFZ0JrRVFhaVFBSUFFb0F1UURJZ3BCQVdzaEN5QUNLQUlBSVFjZ0FTZ0M0QU1oQ0NBRktBSzhBU0VKSUFVb0FyZ0JJUVpCQUNFQ0FrQURRQ0FDSUFwSEJFQWdDQ0FHUVJSc2FpSUVMUUFJUlFSQUlBTW9BZ0FoQXlBRVFRRTZBQWdnQkNBRE5nSUVJQVFnQnpZQ0FDQUZLQUs4QVNFRElBZ2dCa0VVYkdvaUJpQUNOZ0lRSUFZZ0F6WUNEQ0FCSUFFb0F1d0RRUUZxTmdMc0F5QUJJQUVvQXZBRFFRRnFOZ0x3QXlBQUlBUkJCR28yQWdRZ0FFRUFOZ0lBREFNTEFrQWdCQ2dDRENBSlJ3MEFJQWNnQkNnQ0FFY05BQ0FBUVFJMkFnQWdBQ0FFUVFScU5nSUVEQU1MSUFJZ0JDZ0NFRXNFUUNBREtBSUFJUU1nQlVFQk9nQ29BU0FGSUFJMkFyQUJJQVVnQXpZQ3BBRWdCU0FITmdLZ0FTQUZJQWsyQXF3QklBVWdBallDRUNBRklBVXBBNmdCSWd3M0F3Z2dCU0FGS1FPZ0FTSU5Od01BSUFVZ0JDZ0NFRFlDc0FFZ0JTQUVLUUlJTndPb0FTQUZJQVFwQWdBM0E2QUJJQVFnQWpZQ0VDQUVJQTAzQWdBZ0JDQU1Od0lJSUFVZ0JTZ0NzQUZCQVdvMkFyQUJJQVpCQVdvZ0FTZ0M1QU53SVFaQkFDRUhJd0JCSUdzaEF5QUJLQUxrQXlJSVFRRnJJUWtDUUFOQUlBY2dDRVlOQVNBQktBTGdBeUFHUVJSc2FpSUNMUUFJQkVBZ0JTQUZLQUt3QVNJS0lBSW9BaEJMQkg4Z0F5QUNLQUlRTmdJWUlBTWdBaWtDQ0RjREVDQURJQUlwQWdBM0F3Z2dBaUFGS0FLd0FUWUNFQ0FDSUFVcEFxZ0JOd0lJSUFJZ0JTa0NvQUUzQWdBZ0JTQURLQUlZTmdLd0FTQUZJQU1wQXhBM0FxZ0JJQVVnQXlrRENEY0NvQUVnQlNnQ3NBRUZJQW9MUVFGcU5nS3dBU0FHUVFGcVFRQWdCaUFKUnhzaEJpQUhRUUZxSVFjTUFRc0xJQUlnQlNrQ29BRTNBZ0FnQWlBRktBS3dBVFlDRUNBQ0lBVXBBcWdCTndJSUN5QUJJQUVvQXV3RFFRRnFOZ0xzQXlBQklBRW9BdkFEUVFGcU5nTHdBeUFBSUFSQkJHbzJBZ1FnQUVFQU5nSUFEQU1GSUFaQkFXcEJBQ0FHSUF0SEd5RUdJQUpCQVdvaEFnd0NDd0FMQ3lBRlFZYTFBMEhyQTBFT0lBVkJvQUZxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBQkNBRGNDQUNBQkVCNExJQVZCd0FGcUpBQUxid0VGZnlNQVFUQnJJZ1FrQUNBQUtBTGdFU0FBUWVRUmFpZ0NBRUdjQW14cUlRSURRQUpBSUFBb0F1QVJJQUpHQkVCQkFDRUREQUVMSUFSQkNHb2dBa0djQW1zaUFpQUJFTWtlSWdVUXlCNGlCZ1JBSUFVUTZoQW9BZ0FoQXdzZ0JrVU5BUXNMSUFSQk1Hb2tBQ0FEQ3prQkFYOGdBU2dDQUNJQ0tBSUFJZ0VnQWlnQ0JFRUNkR29oQWdOQUlBRWdBa2NFUUNBQUlBRW9BZ0FRK0FVZ0FVRUVhaUVCREFFTEN3czBBUUovSUFBb0FnQWhBU0FBS0FJRUlRSURRQUpBSUFFZ0FrWU5BQ0FCTFFBZ0RRQWdBQ0FCUVN4cUlnRTJBZ0FNQVFzTEM0WURBUVovSXdCQm9BcHJJZ0lrQUVIZ0FDQUJRWllCYkVIa0FHNGlBU0FCUWVBQVRSc2lCU0FBUVlRWWFpZ0NBRXNFUUNBQ1FaUUtha0tBZ0lDQWdBZzNBZ0FnQWlBQ1FSQnFJZ0UyQXBBS0lBRWdBQ2dDakJnUTJCNGdBQ2dDZ0JnaUFTQUFLQUtFR0VFRmRHb2hCZ05BQWtBZ0FTQUdSZ1JBSUFBUTZ4NGdBQ0FGRVBJUUlBSW9BcEFLSWdFZ0FpZ0NsQXBCRkd4cUlRTU1BUXNnQVMwQUZBUkFJQUVRL1FjaEJ5QUNRUkJxSWdOQmhBcHFLQUlBSWdRZ0EwR0lDbW9vQWdCUEJFQWdBeUFEUVlnS2FpZ0NBQ0lFUVFGMFFRSWdCQnNRMkI0Z0F5Z0NoQW9oQkFzZ0F5QUVRUUZxTmdLRUNpQURLQUtBQ2lBRVFSUnNhaUFIRUpJTUdnc2dBVUVnYWlFQkRBRUxDd05BSUFFZ0EwY0VRQ0FDUVFocUlBQWdBU0FCUVFScUVPd0VJQUZCRkdvaEFRd0JDd3NnQWtFUWFpRUJRUUFoQUFOQUlBRW9Bb1FLSUFCTkJFQWdBVUVBTmdLRUNnVWdBU2dDZ0FvZ0FFRVViR3BCQkdvUWxRSWdBRUVCYWlFQURBRUxDeUFCSUFFb0FvQUtFRFlMSUFKQm9BcHFKQUFMNFFFQ0EzOEJmaUFCSUFCQmlCNXFLQUlBU3dSQUlBQW9Bb0FlSVFNZ0FDRUNJQUFnQVVIZ0FFOEVmMEYvSUFHdFFpaCtJZ1duSUFWQ0lJaW5HeEFWSVFJZ0FRVkI0QUFMTmdLSUhpQUFJQUkyQW9BZVFRQWhBZ05BSUFBb0FvUWVJQUpOQkVBZ0FDQURFRFlGSUFKQktHd2lCQ0FBS0FLQUhtb2dBeUFFYWtFb0VIMGFJQUpCQVdvaEFnd0JDd3NMSUFCQmhCNXFLQUlBSWdJZ0FTQUJJQUpKR3lFRUEwQWdBaUFFUndSQUlBQW9Bb0FlSUFKQktHeHFJZ05DQURjQ0lDQURRUUE2QUJ3Z0EwRUFPZ0FBSUFKQkFXb2hBZ3dCQ3dzZ0FDQUJOZ0tFSGd1U0FnSURmd0YrSUFFZ0FFR29DR29vQWdCTEJFQWdBQ2dDb0FnaEF5QUFJUUlnQUNBQlFSaFBCSDlCZnlBQnJVSXNmaUlGcHlBRlFpQ0lweHNRRlNFQ0lBRUZRUmdMTmdLb0NDQUFJQUkyQXFBSVFRQWhBZ05BSUFBb0FxUUlJQUpOQkVBZ0FDQURFRFlGSUFKQkxHd2lCQ0FBS0FLZ0NHb2dBeUFFYWlJRUVMVUpHaUFFRUtvQ0lBSkJBV29oQWd3QkN3c0xJQUJCcEFocUtBSUFJUUlEUUNBQklBSlBCRUFDUUNBQUtBS2tDQ0lDSUFFZ0FTQUNTUnNoQkFOQUlBSWdCRVlOQVNBQUtBS2dDQ0FDUVN4c2FpSURRZ0EzQWlRZ0EwRUFPZ0FnSUFOQkFEb0FBQ0FDUVFGcUlRSU1BQXNBQ3dVZ0FDZ0NvQWdnQWtFQmF5SUNRU3hzYWhDcUFnd0JDd3NnQUNBQk5nS2tDQXNWQUNBQVFlQ0JFallDQUNBQVFTUnFFS2dCSUFBTFhnRUJmeU1BUVJCcklnWWtBQ0FHSUFJMkFnQWdCaUFCTmdJSUlBQWdCaWdDQ0NBR0tBSUFJQU1ROHdZaUFFSFEvQkUyQWdRZ0FFR0kvUkUyQWdBZ0FDQUZOZ0lvSUFBZ0JEWUNKQ0FBUWZEOEVUWUNBQ0FHUVJCcUpBQWdBQXRnQVFGL0lBQW9BZ1FpQWdSQUlBSW9BZ0FnQVJCWFFRRkJBVUhWbmdoQjBLY0RRZkFBRUVzTElBQWdBUkROQXlJQlJRUkFRUUFQQ3lBQUlBRVE0Z1loQVNBQUtBSUFLQUlJSUFFUVYwRUJRUUZCb1pzSVFkQ25BMEgwQUJCTElBRUxFZ0FnQUVISUFFRzUvd05CZkVFREVNb0JDNVlEQVFGL0l3QkJ3QUZySWdja0FDQUhJQUkyQXJBQklBY2dBVFlDdUFFZ0FDQUhLQUs0QVNBSEtBS3dBU0FERU5rRUlnQkJtUGNSTmdJRUlBQkJ6UGNSTmdJQUlBQWdCVFlDS0NBQUlBUTJBaVFnQUVHNDl4RTJBZ0FnQUVFc2FpQUdFT2tHQWtBZ0FDZ0NKQ0lDUlFSQUlBZEJwS0FGUVI5QkFDQUhRYUFCYWhBZElnRVFGeUlDUVJocVFkUzlDQkFPR2lBQ0VCZ2dBUkFlSUFBb0FpUWlBa1VOQVFzZ0FpZ0NCRUhJNlE5SERRQWdCMEdrb0FWQklVRUFJQWRCb0FGcUVCMGlBUkFYSWdKQkdHcEJ2dXNJRUE0YUlBSVFHQ0FCRUI0TElBQW9BaWhGQkVBZ0IwR2tvQVZCSTBFQUlBZEJvQUZxRUIwaUFSQVhJZ0pCR0dwQjI3d0lFQTRhSUFJUUdDQUJFQjRMSUFBb0Fqd2lBaUFBUVVCcktBSUFRUUowYWlFQklBZEJHR29oQXdOQUlBRWdBa2NFUUNBQ0tBSUFJZ1JGQkVBZ0IwR2tvQVZCSlVFQUlBZEJvQUZxRUIwaUJSQVhJUVlnQTBHWnB3Z1FEaG9nQmhBWUlBVVFIZ3NnQkJCWElBQW9BZ2hCQVVFQVFkM0VDRUdrb0FWQkpoQkxJQUpCQkdvaEFnd0JDd3NnQjBIQUFXb2tBQ0FBQytZQkFRUi9Jd0JCb0FGcklnUWtBQ0FFUVJCcUVFa2lCa0VJYWlJRklBRVFEaG9nQXdSQUlBVkIydWtHRUE0YUlBUWdBeUFES0FJQUtBSU1FUUlBSUFVZ0JCQVNHaUFGUVl2bUJoQU9HaUFFRUE4YUN5QUZRWm4vQ0JBT0dpQUNLQUlBSWdFb0FnQWlBeUFCS0FJRVFRSjBhaUVDUVFFaEFRTkFJQUlnQTBjRVFDQURLQUlBSVFjZ0FVRUJjVVVFUUNBRlFmVHREQkFPR2dzZ0JDQUhFSVFCSWdFZ0FTZ0NBQ2dDREJFQ0FDQUZJQVFRRWhvZ0EwRUVhaUVESUFRUUR4cEJBQ0VCREFFTEN5QUZRZS8yQ0JBT0dpQUFJQVpCREdvUVFpQUdFRkVnQkVHZ0FXb2tBQXZhQndFSWZ5TUFRUkJySWdza0FBSkFBa0FEUUNBRVJRMENBa0FDUUNBRElBWk1JQVFnQmt4eVJRUkFJQUFoQndOQUlBTkZEUVlnQVNnQ2lBRWdCeWdDaUFGSkRRSWdBMEVCYXlFRElBZEJqQUZxSVFjTUFBc0FDeUFMUVFBMkFnZ2dDeUFGTmdJQUlBc2dDMEVJYWpZQ0JDQURJQVJNRFFFZ0JTRURJQUVoQndOQUlBSWdCMFlFUUFOQUlBTWdCVVlOQmlBQUlBRkdCRUFEUUNBRElBVkdEUWdnQWtHTUFXc2dBMEdNQVdzaUF4RGtBaUVDREFBTEFBVWdBeUFEUVl3QmF5SUVJQVFvQW9nQklBRkJqQUZySWdZb0FvZ0JTU0lIR3lFRElBWWdBU0FIR3lFQklBSkJqQUZySUFZZ0JDQUhHeERrQWlFQ0RBRUxBQXNBQlNBRElBY1E1UUloQXlBTElBc29BZ2hCQVdvMkFnZ2dCMEdNQVdvaEJ5QURRWXdCYWlFRERBRUxBQXNBQ3dKQUlBTWdCRWdFUUNBQklBZHJRWXdCYlNFSUlBRWdCRUVDYlNJTlFZd0JiR29pQ2lnQ2lBRWhDU0FISVF3RFFDQUlCRUFnQ0VFQmRpSUFJQWdnQUVGL2Myb2dDU0FNSUFCQmpBRnNhaUlBS0FLSUFVa2lEaHNoQ0NBTUlBQkJqQUZxSUE0YklRd01BUXNMSUF3Z0IydEJqQUZ0SVE0TUFRc2dBMEVCUmdSQUlBY2dBUkNjREF3RkN5QUNJQUZyUVl3QmJTRUlJQWNnQTBFQ2JTSU9RWXdCYkdvaURDZ0NpQUVoQ1NBQklRb0RRQ0FJQkVBZ0NDQUlRUUYySWdCQmYzTnFJQUFnQ2lBQVFZd0JiR29pQUNnQ2lBRWdDVWtpRFJzaENDQUFRWXdCYWlBS0lBMGJJUW9NQVFzTElBb2dBV3RCakFGdElRMExJQVFnRFdzaEJDQURJQTVySVFNQ2Z5QUtJQUVnREVZTkFCb2dBU0VKSUF3aUNDQUJJQXBHRFFBYUEwQWdDQ0FKRUp3TUlBaEJqQUZxSVFnZ0NVR01BV29pQ1NBS1JrVUVRQ0FKSUFFZ0FTQUlSaHNoQVF3QkN3c2dDQ0VBSUFFaUNTQUJJQWhHRFFBYUEzOGdBQ0FKRUp3TUlBQkJqQUZxSVFBZ0NpQUpRWXdCYWlJSlJnUi9JQUVoQ1NBQUlBRkhEUUVnQ0FVZ0NTQUJJQUFnQVVZYklRRU1BUXNMQ3lFQUlBMGdEbW9nQXlBRWFrZ0VRQ0FISUF3Z0FDQU9JQTBnQlNBR0VJa1JJQW9oQVF3Q0N5QUFJQW9nQWlBRElBUWdCU0FHRUlrUklBMGhCQ0FPSVFNZ0FDRUNJQXdoQVNBSElRQU1BUXNMSUFVaEJ5QUFJUU1EUUNBQklBTkdCRUFEUUNBRklBZEdEUU1nQVNBQ1JnUkFBMEFnQlNBSFJnMEZJQUFnQlJEa0FrR01BV29oQUNBRlFZd0JhaUVGREFBTEFBVUNRQ0FCS0FLSUFTQUZLQUtJQVVrRVFDQUFJQUVRNUFJYUlBRkJqQUZxSVFFTUFRc2dBQ0FGRU9RQ0dpQUZRWXdCYWlFRkN5QUFRWXdCYWlFQURBRUxBQXNBQlNBSElBTVE1UUloQkNBTElBc29BZ2hCQVdvMkFnZ2dBMEdNQVdvaEF5QUVRWXdCYWlFSERBRUxBQXNBQ3lBTEVMd0pDeUFMUVJCcUpBQUxQd0VCZndOQUlBQW9BdVFJSUFGTEJFQWdBQ2dDNEFnZ0FVR01BV3hxRUs4RkdpQUJRUUZxSVFFTUFRc0xJQUJCQURZQzVBZ2dBQ0FBS0FMZ0NCQTJDeDhBSUFCQ2dJQ0FnSUFCTndKRUlBQWdBRFlDUUNBQUlBRkJRR3NRblI4TFNBRUJmeU1BUVJCcklnSWtBQ0FBUW9DQWdJQ0FBVGNDUkNBQUlBQTJBa0FnQWlBQlFVQnJOZ0lJSUFJZ0FTZ0NRQ0FCUnpvQURDQUFJQUpCQ0dvUW5oOGdBa0VRYWlRQUN5c0FJQUJCQURvQVdDQUFRUUE2QUFBZ0FTMEFXQVJBSUFBZ0FSRG1CZ3NnQUNBQktRSmNOd0pjSUFBTEpnQWdBQ0FBS0FJWVJTQUFLQUlRSUFGeWNpSUJOZ0lRSUFBb0FoUWdBWEVFUUJCdkFBc0xsZ2NCQkg4Z0FFS0FnSUNBZ0FFM0FpUWdBQ0FBTmdJZ0l3QkJNR3NpQXlRQUlBQWdBaWdDSkJBNUlBTkJBRFlDS0NBRElBSTJBaVFnQXlBQlFjZ2dhallDSUNBRElBRkIzSUFCYWlnQ0FFRUJhellDTEFKQUlBTkJJR29RdFFFRVFDQURRU0JxRUZvaUJTZ0MyQUVpQkNBRktBTGNBVUVZYkdvaEJRTkFJQVFnQlVZRVFDQUNLQUlnSWdVZ0FpZ0NKRUVDZEdvaEFnTkFJQUlnQlVZRVFDQURRU0JxRUZvaUFpZ0N5QUlpQkNBQ0tBTE1Ba0VZYkdvaEFnTkFJQUlnQkVZTkJpQURJQUVnQkJCbUVLUUROZ0lRSUFBZ0EwRVFhaEFrSUFSQkdHb2hCQXdBQ3dBTElBTWdBMEVnYWhCYUlnUkIyQUpxTmdJUUlBVW9BZ0FoQmlBRFFRQTJBaGdnQXlBR05nSVVJQU1nQkVHY0NXb29BZ0JCQVdzMkFod0NRQ0FEUVJCcUVMUUJSUTBBSUFOQkVHb1FyQUVpQmlnQ1lDSUVJQVlvQW1SQkdHeHFJUVlEUUNBRUlBWkdEUUVnQXlBQklBUVFaaENrQXpZQ0RDQUFJQU5CREdvUUpDQUVRUmhxSVFRTUFBc0FDeUFEUVNCcUVGb2hCQ0FESUFVb0FnQTJBaEFnQkNBRFFSQnFFTVlEUlFSQUlBTWdBU0FGS0FJQUVKY0JOZ0lRSUFBZ0EwRVFhaEFrQ3lBRElBTkJJR29RV2lJRVFhQUphallDRUNBRktBSUFJUVlnQTBFQU5nSVlJQU1nQmpZQ0ZDQURJQVJCNUE5cUtBSUFRUUZyTmdJY0FrQWdBMEVRYWhDMEFVVU5BQ0FEUVJCcUVLd0JJZ1lvQW1BaUJDQUdLQUprUVJoc2FpRUdBMEFnQkNBR1JnMEJJQU1nQVNBRUVHWVFwQU0yQWd3Z0FDQURRUXhxRUNRZ0JFRVlhaUVFREFBTEFBc2dCVUVFYWlFRkRBQUxBQVVnQXlBQklBUVFaaENrQXpZQ0VDQUFJQU5CRUdvUUpDQUVRUmhxSVFRTUFRc0FDd0FMSUFJb0FpQWlCU0FDS0FJa1FRSjBhaUVDQTBBZ0FpQUZSZ1JBSUFOQklHb1F0UUZGRFFJZ0EwRWdhaEJhSWdJb0FzZ0NJZ1FnQWlnQ3pBSkJHR3hxSVFJRFFDQUNJQVJHRFFNZ0F5QUJJQVFRWmhDa0F6WUNFQ0FBSUFOQkVHb1FKQ0FFUVJocUlRUU1BQXNBQlNBRElBRWdCU2dDQUJDWEFUWUNFQ0FBSUFOQkVHb1FKQUpBSUFOQklHb1F0UUZGRFFBZ0F5QURRU0JxRUZvaUJFR2dDV28yQWhBZ0JTZ0NBQ0VHSUFOQkFEWUNHQ0FESUFZMkFoUWdBeUFFUWVRUGFpZ0NBRUVCYXpZQ0hDQURRUkJxRUxRQlJRMEFJQU5CRUdvUXJBRWlCaWdDWUNJRUlBWW9BbVJCR0d4cUlRWURRQ0FFSUFaR0RRRWdBeUFCSUFRUVpoQ2tBellDRENBQUlBTkJER29RSkNBRVFSaHFJUVFNQUFzQUN5QUZRUVJxSVFVTUFRc0FDd0FMSUFOQk1Hb2tBQXRIQVFGL0lBRXRBQVFFUUNBQUVDTWdBQ0FCS0FJQUlnSXBBZ0EzQWlBZ0FDQUNLQUlJTmdJb0lBRW9BZ0FpQUVFQU5nSUlJQUJDQURjQ0FBOExJQUFnQVNnQ0FCQ2dId3VqQVFFRWZ5QUFFQndqQUVFd2F5SURKQUFnQTBFUWFpQUJLQUlBSUFJb0FnQVF2QXNpQkNnQ0NDRUZJQU1nQkRZQ0RDQURJQVUyQWdnQ1FDQUFRUkJxSWdSQkhHb2lCaUFEUVFocUVMMEJJZ0FFUUNBQUtBSU1JUUFNQVFzZ0JDQUVFS1VFSUFFb0FnQWdBaWdDQUJDOEN5SUFFQ2dnQkNBRUtBSVlRUUZxTmdJWUlBTWdBRFlDRENBRElBVTJBZ2dnQmlBRFFRaHFFTHdCQ3lBRFFUQnFKQUFnQUF1bkFRRUVmeUFBRUJ3akFFRXdheUlFSkFBZ0JFRUlhaUFCS0FJQUlBSW9BZ0FnQXlnQ0FCQytDeUlGS0FJSUlRWWdCQ0FGTmdJRUlBUWdCallDQUFKQUlBQkJFR29pQlVFY2FpSUhJQVFRdlFFaUFBUkFJQUFvQWd3aEFBd0JDeUFGSUFVUXBnUWdBU2dDQUNBQ0tBSUFJQU1vQWdBUXZnc2lBQkFvSUFVZ0JTZ0NHRUVCYWpZQ0dDQUVJQUEyQWdRZ0JDQUdOZ0lBSUFjZ0JCQzhBUXNnQkVFd2FpUUFJQUFMZ1FZQkEzOUJxTG9nTFFBQVJRUkFJd0JCRUdzaUFDUUFRY2kzSUJDWENocEI4TGNnUVlDNElEWUNBRUhvdHlCQm1Kb2dOZ0lBUWNpM0lFR1FqZzQyQWdCQitMY2dRWDgyQWdCQi9MY2dRUUE2QUFBZ0FFRUlhaUlCUWNpM0lCQ09CMEhJdHlBZ0FVSEl0eUFvQWdBb0FnZ1JBZ0FnQVJCa0lBQkJFR29rQUVHb3NpQVF4eFFhUWFpeUlFR1VqdzQyQWdCQm9MSWdRWUNQRGpZQ0FFR2tzaUJCQURZQ0FFR29zaUJCeUxjZ0VPOEdRWWk0SUVHQW1TQkJ1TGdnRU1zVVFkQ3pJRUdJdUNBUWpBMUJ3TGdnUWFpYklFSHd1Q0FReXhSQitMUWdRY0M0SUJDTURVR2d0aUJCK0xRZ0tBSUFRUXhyS0FJQVFmaTBJR29RdFFZUWpBMUJvTElnS0FJQVFReHJLQUlBUWFDeUlHb1F5aFJCK0xRZ0tBSUFRUXhyS0FJQVFmaTBJR29ReGhSQitMUWdLQUlBUVF4cktBSUFRZmkwSUdvUXloUWpBRUVRYXlJQUpBQkIrTGdnRU5nVUdrR291U0JCZnpZQ0FFR2d1U0JCc0xrZ05nSUFRWmk1SUVHWW1pQTJBZ0JCK0xnZ1FaaVJEallDQUVHc3VTQkJBRG9BQUNBQVFRaHFJZ0ZCK0xnZ0VJNEhRZmk0SUNBQlFmaTRJQ2dDQUNnQ0NCRUNBQ0FCRUdRZ0FFRVFhaVFBUVlDeklCREZGQnBCZ0xNZ1FaeVNEallDQUVINHNpQkJpSklPTmdJQVFmeXlJRUVBTmdJQVFZQ3pJRUg0dUNBUTd3WkJ1TGtnUVlDWklFSG91U0FReVJSQnBMUWdRYmk1SUJDTERVSHd1U0JCcUpzZ1FhQzZJQkRKRkVITXRTQkI4TGtnRUlzTlFmUzJJRUhNdFNBb0FnQkJER3NvQWdCQnpMVWdhaERHQnhDTERVSDRzaUFvQWdCQkRHc29BZ0JCK0xJZ2FoRElGRUhNdFNBb0FnQkJER3NvQWdCQnpMVWdhaERHRkVITXRTQW9BZ0JCREdzb0FnQkJ6TFVnYWhESUZFR291aUJCQVRvQUFBc2pBRUVRYXlJQUpBQUNRQ0FBUVF4cUlBQkJDR29RREEwQVFiQzZJQ0FBS0FJTVFRSjBRUVJxRU9BQklnRTJBZ0FnQVVVTkFDQUFLQUlJRU9BQklnRUVRRUd3dWlBb0FnQWlBaUFBS0FJTVFRSjBha0VBTmdJQUlBSWdBUkFMUlEwQkMwR3d1aUJCQURZQ0FBc2dBRUVRYWlRQVFheXBJRUVxTmdJQVFmU3BJRUdNdXlBMkFnQUxLUUFnQUNBQklBSWdBeUFFUVltbUJVSGd4Z2hCQUVHaHFRaEJtTzRQUWF6dUQwSDQ3UThRNlJJTE1BRUJmZ0ovUVFBZ0FDa0RFRUtGb0lDQUFvTWlBU0FCUWdGOWcxQU5BQnBCQVNBQUVJSUlEUUFhSUFBUWdBWUxDMkFCQVg4Z0FDZ0NCQ0lDQkVBZ0FpZ0NBQ0FCRUZkQkFVRUJRZFdlQ0VIUXB3TkI4QUFRU3dzZ0FDQUJFTTBESWdGRkJFQkJBQThMSUFBZ0FSQ0RCaUVCSUFBb0FnQW9BZ2dnQVJCWFFRRkJBVUdobXdoQjBLY0RRZlFBRUVzZ0FRc3pBUUYrQW45QkFDQUFLUU1RUXNEQWdJS0FnSUFnZ3lJQklBRkNBWDJEVUEwQUdrRUJJQUFROGdjTkFCb2dBQkN4RUFzTENnQWdBRUhRcFJJUVNBc1RBQ0FBSUFGQi8vLy8vd0ZCQTBFQ0VPMFNDN01CQVFGL0l3QkJRR29pQXlRQUlBRWdBQ2dDRkU4RVFDQUFJQUZCQVdvUW53d0xBa0FDUUNBQUtBSVFJQUZCQW5ScUlnRW9BZ0FpQUVVTkFDQURRUUkyQWh3Z0F5QUNOZ0lVSUFNZ0FEWUNFQ0FESUFOQkVHbzJBaGdnQXlBREtRTVlOd01JSUFNZ0EwRWdhaUFEUVFocUVMVUNJZ0JCQ0dvMkFqZ2dBeUFBSUFBb0FnaEhPZ0E4SUFOQk9Hb1F0d3NoQWlBQUVLb0JJQUlOQUVFQUlRSU1BUXNnQVNBQ05nSUFDeUFEUVVCckpBQWdBZ3MxQVFGL0EwQWdBQ2dDaEVzZ0FVMEVRQ0FBUVFBMkFvUkxCU0FBS0FLQVN5QUJRZVFBYkdvUTZnSWdBVUVCYWlFQkRBRUxDd3NtQUNBQUVKc1JJQUJCNEFBUXFRd2dBRUVBTmdLTVN5QUFJQUFvQXBCTFFRRnFOZ0tRU3d0ckFRRi9JQUJCd0lVUU5nSUFJQUJCMU9NQWFpSUJFTVFKSUFFUXFBd2dBU0FBUWJUMkFHb29BZ0FRTmlBQVFlRFFBR29pQVJERUNTQUJFS2dNSUFFZ0FFSEE0d0JxS0FJQUVEWWdBRUhNQldvaUFSQ2NFU0FCRUpzUklBRWdBRUhNMEFCcUtBSUFFRFlnQUFzU0FDQUFRWmdCUWVuK0EwRjRRUWNReWdFTEVnQWdBRUhjQUVHbC93TkJmRUVERU1vQkN4QUFJQUFnQVVIQXRoSkI0QUFRekF3TERnQWdBRUhsalF4QjBnRVE0QWtMRGdBZ0FFSGxqUXhCMkFFUTRBa0xEZ0FnQUVIdGtBeEJnZ0VRNEFrTERnQWdBRUh0a0F4QmlBRVE0QWtMRHdBZ0FDQUJJQUpCM2ZBR0VPd1NDdzhBSUFBZ0FTQUNRZXorQmhEc0VndDhBUUovSXdCQm9BRnJJZ01rQUNBRFFRaHFFRWtoQkNBRElBRXBBZ0EzQTVnQklBUWdBMEdZQVdvUXRnUWlBVUVJYWtHenZRVVFEaG9nQVNBQ0VMb1JRUWhxSWdGQmsrY0pFQTRhSUFGQjg1b0pFQTRhSUFGQnYva0FFQTRhSUFGQjg1b0pFQTRhSUFBZ0JFRU1haEJDSUFRUVVTQURRYUFCYWlRQUN3c0FJQUJCSkdvUVhpQUFDeElBSUFBdEFBUkJBa2NFUUJCdkFBc2dBQXNYQUNBQUlBRWdBa0dNaEJCQnZJUVFRZkQrRHhEdkVnc1hBQ0FBSUFFZ0FrR3NneEJCM0lNUVFjRCtEeER3RWdzSUFDQUFMUUFNUlF0Y0FRSi9JQUFRL0FNaEF5QUJLQUlBSVFRZ0FpMEFBQ0VDSUFNUXVRWWlBVUdJL3c4MkFnUWdBVUg4Z2hBMkFnQWdBU0FDT2dBTUlBRWdCRFlDQ0NBQlFjeUNFRFlDQUNBQUlBRVFLQ0FBSUFBb0FoaEJBV28yQWhnZ0FRdmdBZ0VDZnlNQVFjQUJheUlHSkFBZ0JpQUNOZ0t3QVNBR0lBRTJBcmdCSUFBZ0JpZ0N1QUVnQmlnQ3NBRWdBeERsQkNJQVFianREellDQkNBQVFlenREellDQUNBQVFkanREellDQUNBQVFTUnFJQVFRNlFZZ0FDQUZOZ0pBSUFWRkJFQWdCa0dQbGdWQkgwRUFJQVpCb0FGcUVCMGlBUkFYSWdKQkdHcEIrcGtJRUE0YUlBSVFHQ0FCRUI0TElBQW9BamhGQkVBZ0JrR1BsZ1ZCSUVFQUlBWkJvQUZxRUIwaUFSQVhJZ0pCR0dwQjQrTUlFQTRhSUFJUUdDQUJFQjRMSUFBb0FrQVFWeUFBS0FJSVFRRkJBRUhpd0FoQmo1WUZRU0VRU3lBQUtBSTBJZ1VnQUNnQ09FRUNkR29oQVNBR1FSaHFJUUlEUUNBQklBVkhCRUFnQlNnQ0FDSURSUVJBSUFaQmo1WUZRU05CQUNBR1FhQUJhaEFkSWdRUUZ5RUhJQUpCdjYwSUVBNGFJQWNRR0NBRUVCNExJQU1RVnlBQUtBSUlRUUZCQUVIWnhRaEJqNVlGUVNRUVN5QUZRUVJxSVFVTUFRc0xJQVpCd0FGcUpBQWdBQXM3QVFKL1FRZ2hBaUFBSVFNZ0FVRUlUd1JBUVg4Z0FVRURkQ0FCUWYvLy8vOEJTeHNRRlNFRElBRWhBZ3NnQUNBRE5nSkFJQUFnQWpZQ1NBdm5BUUVEZnlNQVFlQUFheUlDSkFCQkRDQUJRWllCYkVIa0FHNGlBU0FCUVF4Tkd5SURJQUFvQXZRQlN3UkFJQUpDZ0lDQWdJQUJOd0pVSUFJZ0FrRVFhaUlCTmdKUUlBRWdBQ2dDL0FFUXNRUWdBQ2dDOEFFaUFTQUFLQUwwQVVFVWJHb2hCQU5BQWtBZ0FTQUVSZ1JBSUFBUXNnVWdBQ0FERVBNRUlBSW9BbEFpQVNBQ0tBSlVRUU4wYWlFRERBRUxJQUV0QUFnRVFDQUNRUkJxSUFFUXVnSVFzUVVMSUFGQkZHb2hBUXdCQ3dzRFFDQUJJQU5HUlFSQUlBSkJDR29nQUNBQklBRkJCR29RMlJVZ0FVRUlhaUVCREFFTEN5QUNRUkJxRUpVQkN5QUNRZUFBYWlRQUN4b0JBWDBnQVNvQ0RDRUNJQUJCQWpvQUNDQUFJQUs3T1FNQUMxc0NBWDhCZlNNQVFSQnJJZ0VrQUNBQklBQXFBZ3c0QWd3Z0FFRUlhaEQ1QWtHU3NhajZCMnBCazZRR2N5SUFRUUoyUVpiNHFmb0hjeUFCS2dJTUlnSzhRUUFnQWtNQUFBQUFYQnRxSUFCeklRQWdBVUVRYWlRQUlBQUxGd0FnQUNBQklBSkJ5SUVRUWZpQkVFSFkvZzhRN3hJTExBQWdBUkQ1QWlBQVFRSjJRWmI0cWZvSGMyb2dBSE1pQUVFQ2RrR1crS242QjNNZ0FpZ0NBR29nQUhNTEx3RUJmeU1BUVJCcklnRWtBQ0FCSUFBb0FndzJBZ3dnQUVFSWFpQUJRUXhxRUxBTUlRQWdBVUVRYWlRQUlBQUxGd0FnQUNBQklBSkI2SUFRUVppQkVFR28vZzhROEJJTEhBRUJmQ0FBS3dNUUlnRkVBQUFBQUFBQUFBQmhJQUc5UWdCWmNRc2xBQ0FBRUpjS0lnQkI0SVFPTmdJQUlBQkJJR29RVlNBQUlBRTJBakFnQUVFQU5nSXNDNnNCQWdKL0FYd2dBQkMwQkNFRElBRW9BZ0FoQkNBQ0t3TUFJUVVqQUVHd0FXc2lBaVFBSUFNUXVRWWlBVUdRL2c4MkFnUWdBVUc0Z0JBMkFnQWdBU0FGT1FNUUlBRWdCRFlDQ0NBQlFZaUFFRFlDQUNBRm1VUUFBQUFBQUFEd2YyTkZCRUFnQWtHTXJ3TkJKa0VDSUFKQm9BRnFFQjBpQXhBWElnUkJHR3BCaHQ0SUVBNGFJQVFRR0NBREVCNExJQUpCc0FGcUpBQWdBQ0FCRUNnZ0FDQUFLQUlZUVFGcU5nSVlJQUVMS1FFQmZ5TUFRUkJySWdJa0FDQUNJQUU1QXdnZ0FDQUNRUWhxRU5JSklRQWdBa0VRYWlRQUlBQUxGUUFnQUNBQlFkanNEMEhzN0E5QnVPd1BFTTRNQ3dnQUlBQXBBeEJRQzE0Q0FYOEJmaUFBRUxRRUlRTWdBU2dDQUNFQklBSXBBd0FoQkNBREVMa0dJZ0pCK1AwUE5nSUVJQUpCMlA4UE5nSUFJQUlnQkRjREVDQUNJQUUyQWdnZ0FrR28vdzgyQWdBZ0FDQUNFQ2dnQUNBQUtBSVlRUUZxTmdJWUlBSUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRUw4UkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1F2aEVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXVCQWdJRGZ3SjlJd0JCTUdzaUF5UUFJQUVvQWdBaEJDQURBbjhnQWhBMElnY1FSaUlHUS8vL2YzOWVCRUFnQTBFQU5nSW9RUUlNQVFzZ0JrUC8vMy8vWFFSQUlBTkJBVFlDS0VFQ0RBRUxJQU1nQmpnQ0tFRUJDem9BTEFKQUlBTkJLR29RTUFSQUlBTkJBellDRkNBRFFkM3dCallDRUNBRElBTXBBeEEzQXdnZ0EwRVlhaUlGSUFjZ0EwRUlhaEQrQXlBRUlBVWdBU2dDQkJCZElBVVFEeG9nQkMwQUJBUkFJQVFnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBd0NDeUFBUVFJNkFBUU1BUXNnQUNBRUlBRW9BZ1FnQWlBQ0tBSUFLQUlJRVFBQUlBTkJLR29RR2lvQ0FCQnJDeUFEUVRCcUpBQUxFZ0FnQUMwQUJFRUJSd1JBRUc4QUN5QUFDMjRCQTM4akFFRVFheUlGSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlFTmdJTUlBVWdCRFlDQ0NBQVFZd0JhaUlFRU1VQ0lnWWdBQ2dDQ0NBRktBSUlJQUVnQWlnQ0FDQURLQUlBRU0wUkdpQUVJQVlRS0NBRUlBUW9BaGhCQVdvMkFoZ2dCaUVBSUFWQkVHb2tBQ0FBQ3lrQkFYOGpBRUVRYXlJQ0pBQWdBaUFCT0FJSUlBQWdBa0VJYWhDRkNDRUFJQUpCRUdva0FDQUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJEV0NRd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFTU1SSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVNVVJEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29ReEJFZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF2TUF3UUJmQVYvQVgwQ2ZpTUFRUkJySWdRa0FDQUJLQUlFSVFZZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ1ZGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FGS0FJRUlnVkI4SjhTUmdSQUlBSVFQQ0VESUFSQkNHb2dBU0FHSVFnZ0FpQUNLQUlBS0FJSUVRQUFJUWNnQTcwaUNrTC8vLy8vLy8vLy8vOEFneUlMdnlFREFrQWdDMElnaUtjaUFVSHJwNGIvQTA4RVFDQUJRWUdBMElFRVR3UkFSQUFBQUFBQUFBQ0FJQU9qUkFBQUFBQUFBUEEvb0NFRERBSUxSQUFBQUFBQUFQQS9SQUFBQUFBQUFBQkFJQU1nQTZBUW53aEVBQUFBQUFBQUFFQ2dvNkVoQXd3QkN5QUJRYSt4d2Y0RFR3UkFJQU1nQTZBUW53Z2lBeUFEUkFBQUFBQUFBQUJBb0tNaEF3d0JDeUFCUVlDQXdBQkpEUUFnQTBRQUFBQUFBQUFBd0tJUW53Z2lBNW9nQTBRQUFBQUFBQUFBUUtDaklRTUxJQWdnQnlBRG1pQURJQXBDQUZNYkVITU1BUXNnQlVHd3FSSkdCRUFnQWhBMElRa2dCRUVJYWlBQklBWWdBaUFDS0FJQUtBSUlFUUFBSUFrUS9oUVFhd3dCQ3lBRlFkQ29Fa2NOQVNBQ0VEOGhDU0FFUVFocUlBRWdCaUFDSUFJb0FnQW9BZ2dSQUFBZ0NSRCtGQkJHRUhJTElBQWdCQ2tEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQVJCRUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FReHhFTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoREdFU0FJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDL0lDQXdGOEJYOEJmU01BUVJCcklnUWtBQ0FCS0FJRUlRVWdBU2dDQUNFR0FrQWdBaUFDS0FJQUtBSUlFUUFBSWdGRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBQktBSUVJZ0ZCOEo4U1JnUkFJQUlRUENFRElBUkJDR29nQmlBRklRZ2dBaUFDS0FJQUtBSUlFUUFBSVFjakFFRVFheUlDSkFBQ1FDQUR2VUlnaUtkQi8vLy8vd2R4SWdGQis4T2svd05OQkVBZ0FVR0FnSUR5QTBrTkFTQURSQUFBQUFBQUFBQUFRUUFRZ0JVaEF3d0JDeUFCUVlDQXdQOEhUd1JBSUFNZ0E2RWhBd3dCQ3lBRElBSVFyZzBoQVNBQ0t3TUFJQUlyQXdnZ0FVRUJjUkNBRlNFREN5QUNRUkJxSkFBZ0NDQUhJQU1RY3d3QkN5QUJRYkNwRWtZRVFDQUNFRFFoQ1NBRVFRaHFJQVlnQlNBQ0lBSW9BZ0FvQWdnUkFBQWdDUkQvRkJCckRBRUxJQUZCMEtnU1J3MEJJQUlRUHlFSklBUkJDR29nQmlBRklBSWdBaWdDQUNnQ0NCRUFBQ0FKRVA4VUVFWVFjZ3NnQUNBRUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JFRVFhaVFBQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCREpFUXdCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRU1nUklBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTDdnRUJBMzhqQUVFd2F5SURKQUFnQVNnQ0FDRUVJQUVvQWdRaEFTQUNJQUlvQWdBb0FnZ1JBQUFoQlNBRElBUTJBZ2dnQXlBQktRSUlOd0lVSUFNZ0FTZ0NFRFlDSENBRElBRXBBZ0EzQWd3Z0F5QUZOZ0lnQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ0ZGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FCS0FJRUlnRkI4SjhTUmdSQUlBTkJLR29nQTBFSWFpQUNFRHdRK1JRTUFRc2dBVUd3cVJKR0JFQWdBMEVvYWlBRFFRaHFJQUlRTkJEekZBd0JDeUFCUWRDb0VrY05BU0FEUVNocUlBTkJDR29nQWhBL0VPOFVDeUFBSUFNcEF5ZzNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBRFFUQnFKQUFMMVFJQkJYOGpBRUhRQUdzaUJ5UUFJQWRCQURZQ1RBSkFJQVVvQWdBaUNDQUlLQUlBS0FJSUVRQUFJZ2dnQjBITUFHb1FJaUFJUmdSQUlBQWdBeUFGS0FJQUlBWW9BZ0FReXhFTUFRc2dCMEtBZ0lDQWdBRTNBa1FnQnlBSFFTQnFJZ2cyQWtBZ0NDQUhLQUpNRURrZ0IwRkFheUVLUVFBaENBSkFBa0FEUUNBSUlBY29Ba3hQRFFFZ0FrRUFFQ0loQ3lBSElBVW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaFFnQnlBR0tBSUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSVFJQWRCR0dvaUNTQUJJQXNnQXlBRUlBaHFJQWRCRkdvZ0IwRVFhaERLRVNBSkVDc0VRQ0FIUVNCcUlBZEJHR29RR2hBa0lBaEJBV29oQ0F3QkN3c2dCMEVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCeUFLTmdJSUlBY2dCeWdDUUNBSFFTQnFSem9BRENBQklBSWdCMEVJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0IwRWdhaEFqQ3lBSFFkQUFhaVFBQzZvQ0F3Ti9BbjBDZkNNQVFSQnJJZ1FrQUNBQktBSUVJUVlnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnVkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUZLQUlFSWdWQjhKOFNSZ1JBSUFJUVBDRUpJQU1RUENFS0lBUkJDR29nQVNBR0lBSWdBaWdDQUNnQ0NCRUFBRVFBQUFBQUFBQUFBRVFBQUFBQUFBRHdQeUFKSUFwa0d4QnpEQUVMSUFWQnNLa1NSZ1JBSUFJUU5DRUhJQU1RTkNFSUlBUkJDR29nQVNBR0lBSWdBaWdDQUNnQ0NCRUFBRU1BQUFBQVF3QUFnRDhnQnlBSVhoc1Fhd3dCQ3lBRlFkQ29Fa2NOQVNBQ0VEOGhCME1BQUFBQVF3QUFnRDhnQXhBL0lBZGRHeEJHSVFjZ0JFRUlhaUFCSUFZZ0FpQUNLQUlBS0FJSUVRQUFJQWNRY2dzZ0FDQUVLUU1JTndJQURBRUxJQUJCQURvQUJBc2dCRUVRYWlRQUMvVUNBUVYvSXdCQjBBQnJJZ2drQUNBSVFRQTJBa3dDUUNBRktBSUFJZ2tnQ1NnQ0FDZ0NDQkVBQUNJSklBaEJ6QUJxRUNJZ0NVWUVRQ0FBSUFNZ0JTZ0NBQ0FHS0FJQUlBY29BZ0FRemhFTUFRc2dDRUtBZ0lDQWdBRTNBa1FnQ0NBSVFTQnFJZ2syQWtBZ0NTQUlLQUpNRURrZ0NFRkFheUVMUVFBaENRSkFBa0FEUUNBSklBZ29Ba3hQRFFFZ0FrRUFFQ0loRENBSUlBVW9BZ0FpQ2lBSklBb29BZ0FvQWd3UkFRQTJBaFFnQ0NBR0tBSUFJZ29nQ1NBS0tBSUFLQUlNRVFFQU5nSVFJQWdnQnlnQ0FDSUtJQWtnQ2lnQ0FDZ0NEQkVCQURZQ0RDQUlRUmhxSWdvZ0FTQU1JQU1nQkNBSmFpQUlRUlJxSUFoQkVHb2dDRUVNYWhETUVTQUtFQ3NFUUNBSVFTQnFJQWhCR0dvUUdoQWtJQWxCQVdvaENRd0JDd3NnQ0VFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQ0NBTE5nSUFJQWdnQ0NnQ1FDQUlRU0JxUnpvQUJDQUJJQUlnQ0JBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0NFRWdhaEFqQ3lBSVFkQUFhaVFBQzRVQ0FRRi9Jd0JCd0FGcklnWWtBQ0FHSUFJMkFyQUJJQVlnQVRZQ3VBRWdBQ0FHS0FLNEFTQUdLQUt3QVNBREVPVUVJZ0JCK09zUE5nSUVJQUJCck93UE5nSUFJQUFnQlRZQ0tDQUFJQVEyQWlRZ0FFR1k3QTgyQWdBZ0JBUi9JQVFGSUFaQnRvNEZRUjFCQUNBR1FhQUJhaEFkSWdFUUZ5SUNRUmhxUWJ1Z0NCQU9HaUFDRUJnZ0FSQWVJQUFvQWlRTEVGY2dBQ2dDQ0VFQlFRQkJvTVFJUWJhT0JVRWVFRXNnQUNnQ0tDSUJCSDhnQVFVZ0JrRzJqZ1ZCSDBFQUlBWkJvQUZxRUIwaUFSQVhJZ0pCR0dwQnBhQUlFQTRhSUFJUUdDQUJFQjRnQUNnQ0tBc1FWeUFBS0FJSVFRRkJBRUhqd3doQnRvNEZRU0FRU3lBR1FjQUJhaVFBSUFBTDNnc0RBMzhEZlFOOEl3QkJrQUZySWdVa0FDQUJLQUlFSVFZZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ2RGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FIS0FJRUlnZEI4SjhTUmdSQUlBSVFQQ0VMSUFNUVBDRU1JQVFRUENFTklBVWdCallDakFFZ0JTQUJOZ0tJQVNBRlFmZ0FhaUlESUFFZ0JpQU5JQXNRZ1FRZ0JVSG9BR29nQVNBR0lBd2dDeENCQkFKQUlBTVFZa1VFUUNBRlFlZ0FhaEJpUlEwQkN5QUZRWWdCYWhDSEF5QUZRUUk2QUFRTUFnc2dCVUhZQUdvaUF5QUJJQVlnQlVINEFHb1FTaXNEQUNBRlFlZ0FhaEJLS3dNQUVPc01JQU1RWWdSQUlBVkJpQUZxRUljRElBVkJBam9BQkF3Q0N5QUZRZGdBYWhCS0t3TUFJUXNnQlVFQk9nQlFJQVVnQzBRQUFBQUFBQUFBQUtWRUFBQUFBQUFBOEQra09RTklJQVZCT0dvaUF5QUJJQVlnQlVISUFHb1FTaXNEQUNJTElBc1Eyd0VnQlVFb2FpQUJJQVpFQUFBQUFBQUFBRUFnQ3hEYkFRSkFJQU1RWWtVRVFDQUZRU2hxRUdKRkRRRUxJQVZCaUFGcUVJY0RJQVZCQWpvQUJBd0NDeUFGUVJocUlnTWdBU0FHUkFBQUFBQUFBQWhBSUFWQktHb1FTaXNEQUJDQkJDQURFR0lFUUNBRlFZZ0JhaENIQXlBRlFRSTZBQVFNQWdzZ0JVRUlhaUlESUFFZ0JpQUZRVGhxRUVvckF3QWdCVUVZYWhCS0t3TUFFTnNCSUFNUVlnUkFJQVZCaUFGcUVJY0RJQVZCQWpvQUJBd0NDeUFGSUFFZ0JpQUNJQUlvQWdBb0FnZ1JBQUFnQlVFSWFoQktLd01BRUhNTUFRc2dCMEd3cVJKR0JFQWdBaEEwSVFnZ0F4QTBJUWtnQkJBMElRb2dCU0FHTmdKOElBVWdBVFlDZUNBRlFlZ0FhaUlESUFFZ0JpQUtJQWdRZ0FRZ0JVSFlBR29nQVNBR0lBa2dDQkNBQkFKQUlBTVFNRVVFUUNBRlFkZ0FhaEF3UlEwQkN5QUZRZmdBYWhDSEF5QUZRUUk2QUFRTUFnc2dCVUhJQUdvaUF5QUJJQVlnQlVIb0FHb1FHaW9DQUNBRlFkZ0FhaEFhS2dJQUVPb01JQU1RTUFSQUlBVkIrQUJxRUljRElBVkJBam9BQkF3Q0N5QUZRY2dBYWhBYUtnSUFJUWdnQlVFQk9nQThJQVVnQ0VNQUFBQUFsME1BQUlBL2xqZ0NPQ0FGUVNocUlnTWdBU0FHSUFWQk9Hb1FHaW9DQUNJSUlBZ1EyZ0VnQlVFWWFpQUJJQVpEQUFBQVFDQUlFTm9CQWtBZ0F4QXdSUVJBSUFWQkdHb1FNRVVOQVFzZ0JVSDRBR29RaHdNZ0JVRUNPZ0FFREFJTElBVkJDR29pQXlBQklBWkRBQUJBUUNBRlFSaHFFQm9xQWdBUWdBUWdBeEF3QkVBZ0JVSDRBR29RaHdNZ0JVRUNPZ0FFREFJTElBVkJpQUZxSWdNZ0FTQUdJQVZCS0dvUUdpb0NBQ0FGUVFocUVCb3FBZ0FRMmdFZ0F4QXdCRUFnQlVINEFHb1Fod01nQlVFQ09nQUVEQUlMSUFVZ0FTQUdJQUlnQWlnQ0FDZ0NDQkVBQUNBRlFZZ0JhaEFhS2dJQUVHc01BUXNnQjBIUXFCSkhEUUVnQWhBL0lRZ2dBeEEvSVFrZ0JCQS9JUW9nQlNBR05nSjhJQVVnQVRZQ2VDQUZRZWdBYWlJRElBRWdCaUFLSUFnUS93TWdCVUhZQUdvZ0FTQUdJQWtnQ0JEL0F3SkFJQU1RTUVVRVFDQUZRZGdBYWhBd1JRMEJDeUFGUWZnQWFoQ0hBeUFGUVFJNkFBUU1BUXNnQlVISUFHb2lBeUFCSUFZZ0JVSG9BR29RR2lvQ0FDQUZRZGdBYWhBYUtnSUFFT3dKSUFNUU1BUkFJQVZCK0FCcUVJY0RJQVZCQWpvQUJBd0JDeUFGUWNnQWFoQWFLZ0lBSVFoREFBQUFBQkJHSVFsREFBQ0FQeEJHSVFvZ0JVRUJPZ0E4SUFVZ0NpQUpJQWdnQ0NBSlhSc2lDQ0FJSUFwZUd6Z0NPQ0FGUVNocUlnTWdBU0FHSUFWQk9Hb1FHaW9DQUNJSUlBZ1EyUUVnQlVFWWFpQUJJQVpEQUFBQVFCQkdJQWdRMlFFQ1FDQURFREJGQkVBZ0JVRVlhaEF3UlEwQkN5QUZRZmdBYWhDSEF5QUZRUUk2QUFRTUFRc2dCVUVJYWlJRElBRWdCa01BQUVCQUVFWWdCVUVZYWhBYUtnSUFFUDhESUFNUU1BUkFJQVZCK0FCcUVJY0RJQVZCQWpvQUJBd0JDeUFGUVlnQmFpSURJQUVnQmlBRlFTaHFFQm9xQWdBZ0JVRUlhaEFhS2dJQUVOa0JJQU1RTUFSQUlBVkIrQUJxRUljRElBVkJBam9BQkF3QkN5QUZJQUVnQmlBQ0lBSW9BZ0FvQWdnUkFBQWdCVUdJQVdvUUdpb0NBQkJ5Q3lBQUlBVXBBd0EzQWdBTUFRc2dBRUVBT2dBRUN5QUZRWkFCYWlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkRRRVF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVNOFJJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUxoZ01FQTN3RGZ3RjlBWDRqQUVFUWF5SUdKQUFnQVNnQ0JDRUlJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJSFJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0J5Z0NCQ0lIUWZDZkVrWUVRQ0FDRUR3aEJDQUdRUWhxSUFFZ0NDQUNJQUlvQWdBb0FnZ1JBQUFDZkVRQUFBQUFBQURnUHlBRXBpRUZJQVM5UXYvLy8vLy8vLy8vL3dDRElncS9JUU1DUUNBS1FpQ0lweUlCUWNIY21JUUVUUVJBSUFNUW53Z2hBeUFCUWYvL3YvOERUUVJBSUFGQmdJREE4Z05KRFFJZ0JTQURJQU9nSUFNZ0E2SWdBMFFBQUFBQUFBRHdQNkNqb2FJTUF3c2dCU0FESUFNZ0EwUUFBQUFBQUFEd1A2Q2pvS0lNQWdzZ0F5QUZJQVdnRUpJVklRUUxJQVFMRUhNTUFRc2dCMEd3cVJKR0JFQWdBaEEwSVFrZ0JrRUlhaUFCSUFnZ0FpQUNLQUlBS0FJSUVRQUFJQWtRaGhVUWF3d0JDeUFIUWRDb0VrY05BU0FDRUQ4aENTQUdRUWhxSUFFZ0NDQUNJQUlvQWdBb0FnZ1JBQUFnQ1JDR0ZSQkdFSElMSUFBZ0Jpa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBWkJFR29rQUF1eUFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQVEwaEVNQVFzZ0JrS0FnSUNBZ0FFM0FrUWdCaUFHUVNCcUlnYzJBa0FnQnlBR0tBSk1FRGtnQmtGQWF5RUpRUUFoQndKQUFrQURRQ0FISUFZb0FreFBEUUVnQWtFQUVDSWhDaUFHSUFVb0FnQWlDQ0FISUFnb0FnQW9BZ3dSQVFBMkFoUWdCa0VZYWlJSUlBRWdDaUFESUFRZ0Iyb2dCa0VVYWhEUkVTQUlFQ3NFUUNBR1FTQnFJQVpCR0dvUUdoQWtJQWRCQVdvaEJ3d0JDd3NnQmtFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQmlBSk5nSUlJQVlnQmlnQ1FDQUdRU0JxUnpvQURDQUJJQUlnQmtFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCa0VnYWhBakN5QUdRZEFBYWlRQUM3a0RBd0Y4Qlg4QmZTTUFRUkJySWdRa0FDQUJLQUlFSVFVZ0FTZ0NBQ0VHQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ0ZGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FCS0FJRUlnRkI4SjhTUmdSQUlBSVFQQ0VESUFSQkNHb2dCaUFGSVFnZ0FpQUNLQUlBS0FJSUVRQUFJUWNqQUVFUWF5SUNKQUFDUUNBRHZVSWdpS2RCLy8vLy93ZHhJZ0ZCKzhPay93Tk5CRUFnQVVHQWdNRHlBMGtOQVNBRFJBQUFBQUFBQUFBQVFRQVFvQWdoQXd3QkN5QUJRWUNBd1A4SFR3UkFJQU1nQTZFaEF3d0JDd0pBQWtBQ1FBSkFJQU1nQWhDdURVRURjUTREQUFFQ0F3c2dBaXNEQUNBQ0t3TUlRUUVRb0FnaEF3d0RDeUFDS3dNQUlBSXJBd2dRb1FnaEF3d0NDeUFDS3dNQUlBSXJBd2hCQVJDZ0NKb2hBd3dCQ3lBQ0t3TUFJQUlyQXdnUW9RaWFJUU1MSUFKQkVHb2tBQ0FJSUFjZ0F4QnpEQUVMSUFGQnNLa1NSZ1JBSUFJUU5DRUpJQVJCQ0dvZ0JpQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBSkVJY1ZFR3NNQVFzZ0FVSFFxQkpIRFFFZ0FoQS9JUWtnQkVFSWFpQUdJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBa1FoeFVRUmhCeUN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRU5RUkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1EweEVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXZrQXdRRGZ3TjlBWHdCZmlNQVFSQnJJZ1FrQUNBQktBSUVJUVVnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnTkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQURLQUlFSWdOQjBLQVNSZ1JBSUFJUVl5RUtJQVJCQ0dvZ0FTQUNJQUlvQWdBb0FnZ1JBQUJDZnlBS1FnQlNyU0FLUWdCVEd4RDlBUXdCQ3lBRFFmQ2ZFa1lFUUFKOFJBQUFBQUFBQVBDL0lBSVFQQ0lKUkFBQUFBQUFBQUFBWXcwQUdrUUFBQUFBQUFEd1B5QUpSQUFBQUFBQUFBQUFaQTBBR2tRQUFBQUFBQUFBQUFzaENTQUVRUWhxSUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQ1JCekRBRUxJQU5Cc0trU1JnUkFBbjFEQUFDQXZ5QUNFRFFpQjBNQUFBQUFYUTBBR2tNQUFJQS9JQWREQUFBQUFGNE5BQnBEQUFBQUFBc2hCaUFFUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0JoQnJEQUVMSUFOQmtLb1NSZ1JBSUFJUVlTRURJQVJCQ0dvZ0FTQUNJQUlvQWdBb0FnZ1JBQUJCZnlBRFFRQkhJQU5CQUVnYkVMRUJEQUVMSUFOQjBLZ1NSdzBCUXdBQWdMOGhCd0pBSUFJUVB5SUlRd0FBQUFBUVJpSUdYVVVFUUVNQUFJQS9JUWNnQmlBSVhVVU5BUXNnQnhCR0lRWUxJQVJCQ0dvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBR0VISUxJQUFnQkNrRENEY0NBQXdCQ3lBQVFRQTZBQVFMSUFSQkVHb2tBQXZYQWdFRmZ5TUFRZEFBYXlJSEpBQWdCMEVBTmdKTUFrQWdCU2dDQUNJSUlBZ29BZ0FvQWdnUkFBQWlDQ0FIUWN3QWFoQWlJQWhHQkVBZ0FDQURJQVVvQWdBZ0JpZ0NBQ0FFRU5ZUkRBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RMVJFZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUF1ZUJRUUZmd0o5QW40Q2ZDTUFRUkJySWdZa0FDQUJLQUlNSVFnZ0FTZ0NDQ0VKSUFFb0FnQWhCU0FCS0FJRUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUIwVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBY29BZ1FpQjBIUW9CSkdCRUFnQWhCaklRd2dBeEJqSVEwZ0JTZ0NBQ2dDQUNnQ0NDSUNJQVFnQWlnQ0FDZ0NEQkVCQUJENkFTRUNJQVpCQ0dvZ0FTQUlLQUlBRUZ3Z0RTQU1JQUliRVAwQkRBRUxJQWRCOEo4U1JnUkFJQUlRUENFT0lBTVFQQ0VQSUFVb0FnQW9BZ0FvQWdnaUFpQUVJQUlvQWdBb0Fnd1JBUUFRK2dFaEFpQUdRUWhxSUFFZ0NTQUlLQUlBRUZ3Z0R5QU9JQUliRUhNTUFRc2dCMEd3cVJKR0JFQWdBaEEwSVFvZ0F4QTBJUXNnQlNnQ0FDZ0NBQ2dDQ0NJQ0lBUWdBaWdDQUNnQ0RCRUJBQkQ2QVNFQ0lBWkJDR29nQVNBSklBZ29BZ0FRWENBTElBb2dBaHNRYXd3QkN5QUhRWkNxRWtZRVFDQUNFR0VoQWlBREVHRWhBeUFGS0FJQUtBSUFLQUlJSWdVZ0JDQUZLQUlBS0FJTUVRRUFFUG9CSVFRZ0JrRUlhaUFCSUFnb0FnQVFYQ0FESUFJZ0JCc1FzUUVNQVFzZ0IwR2dzeEpHQkVBZ0FoQlpJUUlnQXhCWklRTWdCU2dDQUNnQ0FDZ0NDQ0lGSUFRZ0JTZ0NBQ2dDREJFQkFCRDZBU0VFSUFaQkNHb2dBU0FJS0FJQUVGd2dBeUFDSUFRYkVLMEJEQUVMSUFkQjBLZ1NSZ1JBSUFJUVB5RUtJQU1RUHlFTElBVW9BZ0FvQWdBb0FnZ2lBaUFFSUFJb0FnQW9BZ3dSQVFBUStnRWhBaUFHUVFocUlBRWdDU0FJS0FJQUVGd2dDeUFLSUFJYkVISU1BUXNnQjBIUXBSSkhEUUVnQWhENkFTRUNJQU1RK2dFaEF5QUZLQUlBS0FJQUtBSUlJZ1VnQkNBRktBSUFLQUlNRVFFQUVQb0JJUVFnQmtFSWFpQUJJQWdvQWdBUVhDQURJQUlnQkJzUWlBRUxJQUFnQmlrRENEY0NBQXdCQ3lBQVFRQTZBQVFMSUFaQkVHb2tBQXZWQWdFRmZ5TUFRZEFBYXlJSEpBQWdCMEVBTmdKTUFrQWdCU2dDQUNJSUlBZ29BZ0FvQWdnUkFBQWlDQ0FIUWN3QWFoQWlJQWhHQkVBZ0FDQURJQVVvQWdBZ0JpZ0NBQkRZRVF3QkN5QUhRb0NBZ0lDQUFUY0NSQ0FISUFkQklHb2lDRFlDUUNBSUlBY29Ba3dRT1NBSFFVQnJJUXBCQUNFSUFrQUNRQU5BSUFnZ0J5Z0NURThOQVNBQ1FRQVFJaUVMSUFjZ0JTZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNGQ0FISUFZb0FnQWlDU0FJSUFrb0FnQW9BZ3dSQVFBMkFoQWdCMEVZYWlJSklBRWdDeUFESUFRZ0NHb2dCMEVVYWlBSFFSQnFFTmNSSUFrUUt3UkFJQWRCSUdvZ0IwRVlhaEFhRUNRZ0NFRUJhaUVJREFFTEN5QUhRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUhJQW8yQWdnZ0J5QUhLQUpBSUFkQklHcEhPZ0FNSUFFZ0FpQUhRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBSFFTQnFFQ01MSUFkQjBBQnFKQUFMMmdNRUJYOENmUUorQW53akFFRVFheUlFSkFBZ0FTZ0NEQ0VHSUFFb0FnZ2hCeUFCS0FJRUlRZ2dBU2dDQUNFQkFrQWdBaUFDS0FJQUtBSUlFUUFBSWdWRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBRktBSUVJZ1ZCMEtBU1JnUkFJQUlRWXlFTElBTVFZeUVNSUFSQkNHb2dBU0FIS0FJQUVGd2dEQ0FMSUFZdEFBQWJFUDBCREFFTElBVkI4SjhTUmdSQUlBSVFQQ0VOSUFNUVBDRU9JQVJCQ0dvZ0FTQUlJQWNvQWdBUVhDQU9JQTBnQmkwQUFCc1Fjd3dCQ3lBRlFiQ3BFa1lFUUNBQ0VEUWhDU0FERURRaENpQUVRUWhxSUFFZ0NDQUhLQUlBRUZ3Z0NpQUpJQVl0QUFBYkVHc01BUXNnQlVHUXFoSkdCRUFnQWhCaElRSWdBeEJoSVFNZ0JFRUlhaUFCSUFjb0FnQVFYQ0FESUFJZ0JpMEFBQnNRc1FFTUFRc2dCVUdnc3hKR0JFQWdBaEJaSVFJZ0F4QlpJUU1nQkVFSWFpQUJJQWNvQWdBUVhDQURJQUlnQmkwQUFCc1FyUUVNQVFzZ0JVSFFxQkpHQkVBZ0FoQS9JUWtnQXhBL0lRb2dCRUVJYWlBQklBZ2dCeWdDQUJCY0lBb2dDU0FHTFFBQUd4QnlEQUVMSUFWQjBLVVNSdzBCSUFJUStnRWhBaUFERVBvQklRTWdCRUVJYWlBQklBY29BZ0FRWENBRElBSWdCaTBBQUJzUWlBRUxJQUFnQkNrRENEY0NBQXdCQ3lBQVFRQTZBQVFMSUFSQkVHb2tBQXV5QWdFRmZ5TUFRZEFBYXlJR0pBQWdCa0VBTmdKTUFrQWdCU2dDQUNJSElBY29BZ0FvQWdnUkFBQWlCeUFHUWN3QWFoQWlJQWRHQkVBZ0FDQURJQVVvQWdBUTJoRU1BUXNnQmtLQWdJQ0FnQUUzQWtRZ0JpQUdRU0JxSWdjMkFrQWdCeUFHS0FKTUVEa2dCa0ZBYXlFSlFRQWhCd0pBQWtBRFFDQUhJQVlvQWt4UERRRWdBa0VBRUNJaENpQUdJQVVvQWdBaUNDQUhJQWdvQWdBb0Fnd1JBUUEyQWhRZ0JrRVlhaUlJSUFFZ0NpQURJQVFnQjJvZ0JrRVVhaERaRVNBSUVDc0VRQ0FHUVNCcUlBWkJHR29RR2hBa0lBZEJBV29oQnd3QkN3c2dCa0VZYWhBOUdpQUFRUUk2QUFRTUFRc2dCaUFKTmdJSUlBWWdCaWdDUUNBR1FTQnFSem9BRENBQklBSWdCa0VJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JrRWdhaEFqQ3lBR1FkQUFhaVFBQzZvQ0F3TjlBMzhCZkNNQVFSQnJJZ1lrQUNBQktBSUVJUWdnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnZEZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUhLQUlFSWdkQjhKOFNSZ1JBSUFJUVBDRUpJQVpCQ0dvZ0FTQUlJQUlnQWlnQ0FDZ0NDQkVBQUNBSlJBQUFBQUFBQUFBQXBVUUFBQUFBQUFEd1A2UVFjd3dCQ3lBSFFiQ3BFa1lFUUNBQ0VEUWhBeUFHUVFocUlBRWdDQ0FDSUFJb0FnQW9BZ2dSQUFBZ0EwTUFBQUFBbDBNQUFJQS9saEJyREFFTElBZEIwS2dTUncwQklBSVFQeUVESUFJZ0FpZ0NBQ2dDQ0JFQUFDRUNRd0FBQUFBUVJpRUVJQVpCQ0dvZ0FTQUlJQUpEQUFDQVB4QkdJZ1VnQkNBRElBTWdCRjBiSWdNZ0F5QUZYaHNRY2dzZ0FDQUdLUU1JTndJQURBRUxJQUJCQURvQUJBc2dCa0VRYWlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkRjRVF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVOc1JJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUx2QWNFQW53RWZ3TjlBbjRqQUVFUWF5SUZKQUFnQVNnQ0JDRUhJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJR1JRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JpZ0NCQ0lHUWZDZkVrWUVRQ0FDRUR3aEF5QUZRZ0EzQXdnQ2ZBSjhJQU1pQkwwaURFSTBpS2RCL3c5eElnWkIvd2RySVFnQ1FDQUdRYk1JVHdSQUlBVWdCRGtEQ0NBTVF2Ly8vLy8vLy84SGcxQkZJQWhCZ0FoR2NRMEJJQXhDZ0lDQWdJQ0FnSUNBZjRPL0RBSUxJQVpCL2dkTkJFQWdCU0FNUW9DQWdJQ0FnSUNBZ0grRE53TUlJQVFNQWdzZ0RDQUlyU0lOaGtMLy8vLy8vLy8vQjROUUJFQWdCU0FFT1FNSUlBeENnSUNBZ0lDQWdJQ0FmNE8vREFJTElBVkNnSUNBZ0lDQWdIZ2dEWWNnRElNaUREY0RDQ0FFSUF5L29TRUVDeUFFQzVraUJFUUFBQUFBQUFEZ1AySWdCTDFDQUZOeVJRUkFJQU9jQW40Z0JTc0RDQ0lFUkFBQUFBQUFBUEMvb0prZ0JDQUV2VUlBVXhzaUJFUUFBQUFBQUFEd1EyTWdCRVFBQUFBQUFBQUFBR1p4QkVBZ0JMRU1BUXRDQUF1blFRRnhSUTBCR2lBRG13d0JDeUFEdlNJTVFqU0lwMEgvRDNFaUJrR3lDRTBFZkNBR1FmMEhUUVI4SUFORUFBQUFBQUFBQUFDaUJRSjhJQU1nQTVvZ0RFSUFXUnNpQTBRQUFBQUFBQUF3UTZCRUFBQUFBQUFBTU1PZ0lBT2hJZ1JFQUFBQUFBQUE0RDlrQkVBZ0F5QUVvRVFBQUFBQUFBRHd2NkFNQVFzZ0F5QUVvQ0lESUFSRUFBQUFBQUFBNEw5bFJRMEFHaUFEUkFBQUFBQUFBUEEvb0FzaUF5QURtaUFNUWdCWkd3c0ZJQU1MQ3lFRElBVWdBU0FISUFJZ0FpZ0NBQ2dDQ0JFQUFDQURFSE1NQVFzZ0JrR3dxUkpHQkVBZ0FoQTBJUW9nQlVFQU5nSUlBbjBnQ2lBRlFRaHFFSXdWaXlJSlF3QUFBRDljSUFtOFFRQklja1VFUUNBS2pnSitJQVVxQWdnaUNVTUFBSUMva29zZ0NTQUp2RUVBU0JzaUNVTUFBSUJmWFNBSlF3QUFBQUJnY1FSQUlBbXZEQUVMUWdBTHAwRUJjVVVOQVJvZ0NvME1BUXNnQ2hDSUZRc2hDaUFGSUFFZ0J5QUNJQUlvQWdBb0FnZ1JBQUFnQ2hCckRBRUxJQVpCMEtnU1J3MEJJQUlRUHlFS0lBVkRBQUFBQUJCR09BSUlJQW9nQlVFSWFoQ01GU0VKUXdBQUFBQVFSaG9DZlVNQUFBQS9FRVlpQzd3Z0NZc2lDYnh6UVFCSUlBa2dDMXh5UlFSQUlBcU9BbjRnQlNvQ0NDSUpRd0FBZ0wrU2l5QUpJQW04UVFCSUd5SUpRd0FBZ0Y5ZElBbERBQUFBQUdCeEJFQWdDYThNQVF0Q0FBdW5RUUZ4UlEwQkdpQUtqUXdCQ3lBS0VJZ1ZDeEJHSVFvZ0JTQUJJQWNnQWlBQ0tBSUFLQUlJRVFBQUlBb1FjZ3NnQUNBRktRTUFOd0lBREFFTElBQkJBRG9BQkFzZ0JVRVFhaVFBQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCRGVFUXdCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRU4wUklBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTG1BSUJCWDhqQUVFUWF5SUVKQUFnQVNnQ0JDRUdJQUVvQWdBaEJ3SkFJQUlnQWlnQ0FDZ0NDQkVBQUNJQlJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0FTZ0NCQ0lCUVpDcUVrWUVRQ0FDRUdFaEJVRUFJUUVEUUNBQlFTQkdSUVJBUVFBZ0JTQUJka0VCY1d0QmdJQ0FnSGdnQVhaeElBTnlJUU1nQVVFQmFpRUJEQUVMQ3lBRVFRaHFJQWNnQWlBQ0tBSUFLQUlJRVFBQUlBTVFzUUVNQVFzZ0FVR2dzeEpIRFFFZ0FoQlpJUVZCQUNFQkEwQWdBVUVnUmtVRVFFRUFJQVVnQVhaQkFYRnJRWUNBZ0lCNElBRjJjU0FEY2lFRElBRkJBV29oQVF3QkN3c2dCRUVJYWlBSElBSWdBaWdDQUNnQ0NCRUFBQ0FERUswQkN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRU9BUkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1EzeEVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXNwQUNBQUlBRWdBa0dTb2dGREFBQTBRMFBiRDBsQVFiWDB1K1FEUXJtNnlwTHE2UGZJUHhDRkV3dlZBZ0VGZnlNQVFkQUFheUlISkFBZ0IwRUFOZ0pNQWtBZ0JTZ0NBQ0lJSUFnb0FnQW9BZ2dSQUFBaUNDQUhRY3dBYWhBaUlBaEdCRUFnQUNBRElBVW9BZ0FnQmlnQ0FCRGlFUXdCQ3lBSFFvQ0FnSUNBQVRjQ1JDQUhJQWRCSUdvaUNEWUNRQ0FJSUFjb0Frd1FPU0FIUVVCcklRcEJBQ0VJQWtBQ1FBTkFJQWdnQnlnQ1RFOE5BU0FDUVFBUUlpRUxJQWNnQlNnQ0FDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ0ZDQUhJQVlvQWdBaUNTQUlJQWtvQWdBb0Fnd1JBUUEyQWhBZ0IwRVlhaUlKSUFFZ0N5QURJQVFnQ0dvZ0IwRVVhaUFIUVJCcUVPRVJJQWtRS3dSQUlBZEJJR29nQjBFWWFoQWFFQ1FnQ0VFQmFpRUlEQUVMQ3lBSFFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBSElBbzJBZ2dnQnlBSEtBSkFJQWRCSUdwSE9nQU1JQUVnQWlBSFFRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFIUVNCcUVDTUxJQWRCMEFCcUpBQUxtQllFQ253S2Z3SitBMzBqQUVFd2F5SU9KQUFnQVNnQ0JDRVdJQUVvQWdBaEVBSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJQlJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0FTZ0NCQ0lCUWZDZkVrWUVRQUpBQWtBZ0FoQThJZ2hFQUFBQUFBQUFBQUJqUlNBREVEd2lDa1FBQUFBQUFBQUFBR1ZGSUFpOVFnQlRJQWhFQUFBQUFBQUFBQUJpY25KeFJRMEFBbnhFQUFBQUFBQUE4RDhoQndKQUFrQUNRQ0FLdlNJWlFpQ0lweUlWUWYvLy8vOEhjU0lSSUJtbklnOXlSUTBBSUFpOUloaENJSWluSVJNZ0dLY2lFa1VnRTBHQWdNRC9BMFp4RFFBZ0NDQUtvQ0FUUWYvLy8vOEhjU0lVUVlDQXdQOEhTeUFVUVlDQXdQOEhSaUFTUVFCSGNYSWdFVUdBZ01EL0IwdHlSU0FQUlNBUlFZQ0F3UDhIUjNKeFJRMERHZ0pBQWtBQ1FBSkFBa0FDZjBFQUlCaENBRmtOQUJwQkFpQVJRZi8vLzVrRVN3MEFHa0VBSUJGQmdJREEvd05KRFFBYUlCRkJGSFloQVNBUlFZQ0FnSW9FU1EwQlFRQWdEMEd6Q0NBQmF5SURkaUlCSUFOMElBOUhEUUFhUVFJZ0FVRUJjV3NMSVJjZ0R3MENJQkZCZ0lEQS93ZEhEUUVnRkVHQWdNRC9BMnNnRW5KRkRRVWdGRUdBZ01EL0Ewa05BeUFLUkFBQUFBQUFBQUFBSUJsQ0FGa2JEQWdMSUE4TkFTQVJRWk1JSUFGcklnTjJJZ0VnQTNRZ0VVY05BRUVDSUFGQkFYRnJJUmNMSUJGQmdJREEvd05HQkVBZ0NDQVpRZ0JaRFFjYVJBQUFBQUFBQVBBL0lBaWpEQWNMSUFnZ0NLSWdGVUdBZ0lDQUJFWU5CaG9nRlVHQWdJRC9BMGNnR0VJQVUzSU5BQ0FJbnd3R0N5QUltU0VFSUJJTkFRSkFJQk5CQUVnRVFDQVRRWUNBZ0lCNFJpQVRRWUNBd1A5N1JuSWdFMEdBZ0VCR2NnMEJEQU1MSUJORklCTkJnSURBL3dkR2NnMEFJQk5CZ0lEQS93TkhEUUlMUkFBQUFBQUFBUEEvSUFTaklBUWdHVUlBVXhzaEJ5QVlRZ0JaRFFJZ0Z5QVVRWUNBd1A4RGEzSkZCRUFnQnlBSG9TSUVJQVNqREFZTElBZWFJQWNnRjBFQlJoc01CUXRFQUFBQUFBQUFBQUFnQ3BvZ0dVSUFXUnNNQkFzQ1FDQVlRZ0JaRFFBQ1FBSkFJQmNPQWdBQkFnc2dDQ0FJb1NJRUlBU2pEQVVMUkFBQUFBQUFBUEMvSVFjTEFud2dFVUdCZ0lDUEJFOEVRQ0FSUVlHQXdKOEVUd1JBUkFBQUFBQUFBUEIvUkFBQUFBQUFBQUFBSUJsQ0FGTWJJQlJCLy8rLy93Tk5EUVlhUkFBQUFBQUFBUEIvUkFBQUFBQUFBQUFBSUJWQkFFb2JEQVlMSUFkRW5IVUFpRHprTjM2aVJKeDFBSWc4NURkK29pQUhSRm56K01JZmJxVUJva1JaOC9qQ0gyNmxBYUlnR1VJQVV4c2dGRUgrLzcvL0EwME5CUm9nQjBTY2RRQ0lQT1EzZnFKRW5IVUFpRHprTjM2aUlBZEVXZlA0d2g5dXBRR2lSRm56K01JZmJxVUJvaUFWUVFCS0d5QVVRWUdBd1A4RFR3MEZHaUFFUkFBQUFBQUFBUEMvb0NJRlJFVGZYZmdMcmxRK29pQUZJQVdpUkFBQUFBQUFBT0EvSUFVZ0JVUUFBQUFBQUFEUXY2SkVWVlZWVlZWVjFUK2dvcUdpUlA2Q0syVkhGZmUvb3FBaUJDQUVJQVZFQUFBQVlFY1Y5eitpSWdTZ3ZVS0FnSUNBY0lPL0lnWWdCS0doREFFTElBUkVBQUFBQUFBQVFFT2lJZ1VnQkNBVVFZQ0F3QUJKSWdNYklRUWdCYjFDSUlpbklCUWdBeHNpQVVILy96OXhJaFZCZ0lEQS93TnlJUklnQVVFVWRVSE1kMEdCZUNBREcyb2hBMEVBSVE4Q1FDQVZRWSt4RGtrTkFDQVZRZnJzTGtrRVFFRUJJUThNQVFzZ0ZVR0FnSUQvQTNJaEVpQURRUUZxSVFNTElBOUJBM1FpQVVHUXlRMXFLd01BSUFTOVF2Ly8vLzhQZ3lBU3JVSWdob1MvSWdzZ0FVR0F5UTFxS3dNQUlnbWhJZ1ZFQUFBQUFBQUE4RDhnQ1NBTG9LTWlCS0lpRGIxQ2dJQ0FnSENEdnlJTUlBd2dES0lpQmtRQUFBQUFBQUFJUUtBZ0JDQUZJQXdnRDBFU2RDQVNRUUYyYWtHQWdLQ0FBbXF0UWlDR3Z5SUVvcUVnRENBTElBUWdDYUdob3FHaUlna2dEU0FNb0tJZ0RTQU5vaUlFSUFTaUlBUWdCQ0FFSUFRZ0JFVHZUa1ZLS0g3S1A2SkVaZHZKazBxR3pUK2dva1FCUVIycFlIVFJQNkNpUkUwbWoxRlZWZFUvb0tKRS82dHYyN1p0MnorZ29rUURNek16TXpQalA2Q2lvQ0lFb0wxQ2dJQ0FnSENEdnlJTG9pSUZJQWtnQzZJZ0RTQUVJQXRFQUFBQUFBQUFDTUNnSUFhaG9hS2dJZ1NndlVLQWdJQ0FjSU8vSWdaRTlRRmJGT0F2UHI2aUlBUWdCaUFGb2FGRS9RTTYzQW5IN2oraW9LQWlCQ0FCUWFESkRXb3JBd0FpQ1NBRUlBWkVBQUFBNEFuSDdqK2lJZ1dnb0NBRHR5SUVvTDFDZ0lDQWdIQ0R2eUlHSUFTaElBbWhJQVdob1FzaEJTQUtJQmxDZ0lDQWdIQ0R2eUlFb1NBR29pQUZJQXFpb0NJRklBWWdCS0lpQnFBaUJMMGlHS2NoQVFKQUlCaENJSWluSWdOQmdJREFoQVJPQkVBZ0EwR0FnTUNFQkdzZ0FYSU5BeUFGUlA2Q0syVkhGWmM4b0NBRUlBYWhaRVVOQVF3REN5QURRWUQ0Ly84SGNVR0FtTU9FQkVrTkFDQURRWURvdlBzRGFpQUJjZzBESUFVZ0JDQUdvV1ZGRFFBTUF3dEJBQ0VQSUFjQ2ZDQURRZi8vLy84SGNTSUJRWUdBZ1A4RFR3UitRUUJCZ0lEQUFDQUJRUlIyUWY0SGEzWWdBMm9pRWtILy96OXhRWUNBd0FCeVFaTUlJQkpCRkhaQi93OXhJZ05yZGlJQmF5QUJJQmhDQUZNYklROGdCU0FHUVlDQVFDQURRZjhIYTNVZ0VuR3RRaUNHdjZFaUJxQzlCU0FZQzBLQWdJQ0FjSU8vSWdSRUFBQUFBRU11NWoraUlna2dCU0FFSUFhaG9VVHZPZnIrUWk3bVA2SWdCRVE1YktnTVlWd2d2cUtnSWdXZ0lnWWdCaUFHSUFZZ0JxSWlCQ0FFSUFRZ0JDQUVSTkNrdm5KcE4yWStva1R4YTlMRlFiMjd2cUNpUkN6ZUphOXFWaEUvb0tKRWs3MitGbXpCWnIrZ29rUStWVlZWVlZYRlA2Q2lvU0lFb2lBRVJBQUFBQUFBQUFEQW9LTWdCaUFGSUFZZ0NhR2hJZ1NpSUFTZ29hRkVBQUFBQUFBQThEK2dJZ1M5SWhoQ0lJaW5JQTlCRkhScUlnRkIvLzgvVEFSQUlBUWdEeEQvQkF3QkN5QVlRdi8vLy84UGd5QUJyVUlnaG9TL0M2SWhCd3NnQnd3Q0N5QUhSSngxQUlnODVEZCtva1NjZFFDSVBPUTNmcUlNQVFzZ0IwUlo4L2pDSDI2bEFhSkVXZlA0d2g5dXBRR2lDeUlFbVVRQUFBQUFBQUR3ZjJORkRRQWdEa0VCT2dBb0lBNGdCRGtESUF3QkN5QU9RUUE2QUNnZ0RrRUFPZ0FnQ3lBT0xRQW9SUVJBSUE1QkVHb2lBU0FJUWJPOUJTQUtFTzBHSUJBZ0FTQVdFRjBnQVJBUEdpQVFMUUFFQkVBZ0VDQUNJQUlvQWdBb0FnZ1JBQUFRa1FFaEFTQU9RUUU2QUF3Z0RpQUJOZ0lJREFNTElBNUJBam9BREF3Q0N5QU9RUWhxSUJBZ0ZpQUNJQUlvQWdBb0FnZ1JBQUFnRGlzRElCQnpEQUVMSUFGQnNLa1NSZ1JBQWtBQ1FDQUNFRFFpR2tNQUFBQUFYVVVnQXhBMElodERBQUFBQUY5RklCcThRUUJJSUJwREFBQUFBRnh5Y25GRkRRQWdHaUFiRUlzVkloeUxRd0FBZ0g5ZFJRMEFJQTVCQVRvQUZDQU9JQnc0QWhBTUFRc2dEa0VBT2dBVUlBNUJBRG9BRUFzZ0RpMEFGRVVFUUNBT1FTQnFJZ0VnR2tHenZRVWdHeERzQmlBUUlBRWdGaEJkSUFFUUR4b2dFQzBBQkFSQUlCQWdBaUFDS0FJQUtBSUlFUUFBRUpFQklRRWdEa0VCT2dBTUlBNGdBVFlDQ0F3REN5QU9RUUk2QUF3TUFnc2dEa0VJYWlBUUlCWWdBaUFDS0FJQUtBSUlFUUFBSUE0cUFoQVFhd3dCQ3lBQlFkQ29Fa2NOQVFKQUFrQWdBaEEvSWhwREFBQUFBRjFGSUFNUVB5SWJRd0FBQUFCZlJTQWF2RUVBU0NBYVF3QUFBQUJjY25KeFJRMEFJQm9nR3hDTEZSQkdJaHlMUXdBQWdIOWRSUTBBSUE1QkFUb0FGQ0FPSUJ3NEFoQU1BUXNnRGtFQU9nQVVJQTVCQURvQUVBc2dEaTBBRkVVRVFDQU9RU0JxSWdFZ0drR3p2UVVnR3hEcUJpQVFJQUVnRmhCZElBRVFEeG9nRUMwQUJBUkFJQkFnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnRGtFQk9nQU1JQTRnQVRZQ0NBd0NDeUFPUVFJNkFBd01BUXNnRGtFSWFpQVFJQllnQWlBQ0tBSUFLQUlJRVFBQUlBNHFBaEFRY2dzZ0FDQU9LUU1JTndJQURBRUxJQUJCQURvQUJBc2dEa0V3YWlRQUN3d0FJQUJEQVA5L1J4RDdFZ3NRQUNBQVFmLy9BME1BL3Y5R0VQd1NDOGNEQVFWL0l3QkJNR3NpQkNRQUlBRW9BZ0FoQlNBRVFTaHFJZ01nQWhDNURDQUFBbjhnQUFKL0lBTVFNQVJBSUFSQkF6WUNGQ0FFUWQzd0JqWUNFQ0FFSUFRcEF4QTNBd2dnQkVFWWFpSUFJQUlnQkVFSWFoRCtBeUFGSUFBZ0FTZ0NCQkJkSUFBUUR4cEJBQ0FGTFFBRURRRWFRUUlNQWdzZ0JFRW9haEFhSVFFakFFR3dBV3NpQlNRQVFZRDhBU0VBQWtBZ0FTb0NBQ0lDSUFKY0RRQWdBb3REQUFDQWYxc0VRRUdBK0FGQmdIZ2dBa01BQUFBQVhoc2hBQXdCQ3lBQ3ZDSURRUkIyUVlDQUFuRWhBU0FEUWYvLy8vOEhjVVVFUUNBQklRQU1BUXNnQTBILy8vOERjU0VISUFOQkYzWWlCa0gvQVhFaUEwSHhBR3RCSFUwRVFDQUdRUXAwUVlDQUFXb2lBRUdBK0FOeElRTWdBRUdBZ0FKeEJFQWdCVUhnbndWQnR3SkJDU0FGUWFBQmFoQWRJZ0FRRnlJR1FSaHFRZDdaQ0JBT0dpQUdFQmdnQUJBZUN5QUhRUTEySUFGeUlBTnlJUUFNQVFzZ0EwSG5BR3RCQ1UwRVFDQUJJQWRCZ0lDQUJISkIvZ0FnQTJ0MmNpRUFEQUVMSUFWQjRKOEZRZGNDUVFrZ0JVR2dBV29RSFNJQkVCY2lBMEVZYWtIdXZ3c1FEaG9nQXhBWUlBRVFIZ3NnQlVHd0FXb2tBQ0FBUWYvL0EzRUxOZ0lBUVFFTE9nQUVJQVJCTUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRMWdrTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoRG1FU0FJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJEb0VRd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFT2NSSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMOGdFREEzOEJmUUY4SXdCQkVHc2lBeVFBSUFFb0FnUWhCU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJFVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBUW9BZ1FpQkVId254SkdCRUFnQWhBOElRY2dBMEVJYWlBQklBVWdBaUFDS0FJQUtBSUlFUUFBSUFjZ0I1MmhFSE1NQVFzZ0JFR3dxUkpHQkVBZ0FoQTBJUVlnQTBFSWFpQUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBWWdCbytURUdzTUFRc2dCRUhRcUJKSERRRWdBaEEvSVFZZ0EwRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQVlnQm8rVEVFWVFjZ3NnQUNBREtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0EwRVFhaVFBQzljQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBSUFRUTZoRU1BUXNnQjBLQWdJQ0FnQUUzQWtRZ0J5QUhRU0JxSWdnMkFrQWdDQ0FIS0FKTUVEa2dCMEZBYXlFS1FRQWhDQUpBQWtBRFFDQUlJQWNvQWt4UERRRWdBa0VBRUNJaEN5QUhJQVVvQWdBaUNTQUlJQWtvQWdBb0Fnd1JBUUEyQWhRZ0J5QUdLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lRSUFkQkdHb2lDU0FCSUFzZ0F5QUVJQWhxSUFkQkZHb2dCMEVRYWhEcEVTQUpFQ3NFUUNBSFFTQnFJQWRCR0dvUUdoQWtJQWhCQVdvaENBd0JDd3NnQjBFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQnlBS05nSUlJQWNnQnlnQ1FDQUhRU0JxUnpvQURDQUJJQUlnQjBFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCMEVnYWhBakN5QUhRZEFBYWlRQUM1NEhBd1IvQTMwRGZDTUFRZEFBYXlJRkpBQWdBU2dDQ0NFR0lBRW9BZ0FoQ0NBQktBSUVJUWNDUUNBQ0lBSW9BZ0FvQWdnUkFBQWlBVVVFUUNBQVFRQTZBQVFNQVFzQ1FBSkFJQUVvQWdRaUFVSHdueEpHQkVBZ0FoQThJUXdnQXhBOElRMGdCVUZBYXlJRElBY2dCa1FBQUFBQUFBRHdQeUFJS0FJQUtBSUFLQUlJSWdFZ0FTZ0NBQ2dDQ0JFQUFCQzBBd1IvSUFFZ0JDQUJLQUlBS0FJTUVRRUFCU0FCQ3hBOElnNFFnUVFnQXhCaUJFQWdCVUVDT2dBTURBSUxJQVZCTUdvaUFTQUhJQVlnRENBRlFVQnJFRW9yQXdBUTJ3RWdBUkJpQkVBZ0JVRUNPZ0FNREFJTElBVkJJR29pQVNBSElBWWdEU0FPRU5zQklBRVFZZ1JBSUFWQkFqb0FEQXdDQ3lBRlFSQnFJZ0VnQnlBR0lBVkJNR29RU2lzREFDQUZRU0JxRUVvckF3QVEyQU1nQVJCaUJFQWdCVUVDT2dBTURBSUxJQVZCQ0dvZ0J5QUdJQUlnQWlnQ0FDZ0NDQkVBQUNBRlFSQnFFRW9yQXdBUWN3d0JDeUFCUWJDcEVrWUVRQ0FDRURRaENTQURFRFFoQ2lBRlFVQnJJZ01nQnlBR1F3QUFnRDhnQ0NnQ0FDZ0NBQ2dDQ0NJQklBRW9BZ0FvQWdnUkFBQVF0QU1FZnlBQklBUWdBU2dDQUNnQ0RCRUJBQVVnQVFzUU5DSUxFSUFFSUFNUU1BUkFJQVZCQWpvQURBd0NDeUFGUVRCcUlnRWdCeUFHSUFrZ0JVRkFheEFhS2dJQUVOb0JJQUVRTUFSQUlBVkJBam9BREF3Q0N5QUZRU0JxSWdFZ0J5QUdJQW9nQ3hEYUFTQUJFREFFUUNBRlFRSTZBQXdNQWdzZ0JVRVFhaUlCSUFjZ0JpQUZRVEJxRUJvcUFnQWdCVUVnYWhBYUtnSUFFTmNESUFFUU1BUkFJQVZCQWpvQURBd0NDeUFGUVFocUlBY2dCaUFDSUFJb0FnQW9BZ2dSQUFBZ0JVRVFhaEFhS2dJQUVHc01BUXNnQVVIUXFCSkhEUUVnQWhBL0lRb2dBeEEvSVFzZ0NDZ0NBQ2dDQUNnQ0NDSUJJQUVvQWdBb0FnZ1JBQUFRdEFNRWZ5QUJJQVFnQVNnQ0FDZ0NEQkVCQUFVZ0FRc1FQeUVKSUFWQlFHc2lBU0FISUFaREFBQ0FQeEJHSUFrUS93TWdBUkF3QkVBZ0JVRUNPZ0FNREFFTElBVkJNR29pQVNBSElBWWdDaUFGUVVCckVCb3FBZ0FRMlFFZ0FSQXdCRUFnQlVFQ09nQU1EQUVMSUFWQklHb2lBU0FISUFZZ0N5QUpFTmtCSUFFUU1BUkFJQVZCQWpvQURBd0JDeUFGUVJCcUlnRWdCeUFHSUFWQk1Hb1FHaW9DQUNBRlFTQnFFQm9xQWdBUTFnTWdBUkF3QkVBZ0JVRUNPZ0FNREFFTElBVkJDR29nQnlBR0lBSWdBaWdDQUNnQ0NCRUFBQ0FGUVJCcUVCb3FBZ0FRY2dzZ0FDQUZLUU1JTndJQURBRUxJQUJCQURvQUJBc2dCVUhRQUdva0FBdWdBUUVDZnlNQVFTQnJJZ2NrQUNBSElBSTJBaEFnQnlBQk5nSVlJQWNnQlRZQ0NDQUhJQVEyQWdRZ0IwRUFOZ0lBSXdCQkVHc2lBU1FBSUFjb0FnZ2hBaUFIS0FJRUlRUWdCeWdDRUNFRklBY29BaGdoQ0NBQklBWXBBZ0EzQXdnZ0FDQUlJQVVnQXlBRUlBSkJBQ0FCUVFocUVOY0pJZ0JCc09zUE5nSUVJQUJCNk9zUE5nSUFJQUZCRUdva0FDQUFRZERyRHpZQ0FDQUhRU0JxSkFBZ0FBdlZBZ0VGZnlNQVFkQUFheUlISkFBZ0IwRUFOZ0pNQWtBZ0JTZ0NBQ0lJSUFnb0FnQW9BZ2dSQUFBaUNDQUhRY3dBYWhBaUlBaEdCRUFnQUNBRElBVW9BZ0FnQmlnQ0FCRHRFUXdCQ3lBSFFvQ0FnSUNBQVRjQ1JDQUhJQWRCSUdvaUNEWUNRQ0FJSUFjb0Frd1FPU0FIUVVCcklRcEJBQ0VJQWtBQ1FBTkFJQWdnQnlnQ1RFOE5BU0FDUVFBUUlpRUxJQWNnQlNnQ0FDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ0ZDQUhJQVlvQWdBaUNTQUlJQWtvQWdBb0Fnd1JBUUEyQWhBZ0IwRVlhaUlKSUFFZ0N5QURJQVFnQ0dvZ0IwRVVhaUFIUVJCcUVPd1JJQWtRS3dSQUlBZEJJR29nQjBFWWFoQWFFQ1FnQ0VFQmFpRUlEQUVMQ3lBSFFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBSElBbzJBZ2dnQnlBSEtBSkFJQWRCSUdwSE9nQU1JQUVnQWlBSFFRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFIUVNCcUVDTUxJQWRCMEFCcUpBQUx1d01FQTM4Q2ZRSitBbndqQUVFUWF5SUZKQUFnQVNnQ0JDRUdJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJRVJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JDZ0NCQ0lFUWRDZ0VrWUVRQ0FDRUdNaENTQURFR01oQ2lBRlFRaHFJQUVnQWlBQ0tBSUFLQUlJRVFBQUlBb2dDU0FKSUFwVkd4RDlBUXdCQ3lBRVFmQ2ZFa1lFUUNBQ0VEd2hDeUFERUR3aERDQUZRUWhxSUFFZ0JpQUNJQUlvQWdBb0FnZ1JBQUFnRENBTElBc2dER1FiRUhNTUFRc2dCRUd3cVJKR0JFQWdBaEEwSVFjZ0F4QTBJUWdnQlVFSWFpQUJJQVlnQWlBQ0tBSUFLQUlJRVFBQUlBZ2dCeUFISUFoZUd4QnJEQUVMSUFSQmtLb1NSZ1JBSUFJUVlTRUVJQU1RWVNFRElBVkJDR29nQVNBQ0lBSW9BZ0FvQWdnUkFBQWdBeUFFSUFNZ0JFZ2JFTEVCREFFTElBUkJvTE1TUmdSQUlBSVFXU0VFSUFNUVdTRURJQVZCQ0dvZ0FTQUNJQUlvQWdBb0FnZ1JBQUFnQXlBRUlBTWdCRWtiRUswQkRBRUxJQVJCMEtnU1J3MEJJQUlRUHlFSElBTVFQeUVJSUFWQkNHb2dBU0FHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlJQWNnQnlBSVhoc1FjZ3NnQUNBRktRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JVRVFhaVFBQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRU84UkRBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RN2hFZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUF1N0F3UURmd0o5QW40Q2ZDTUFRUkJySWdVa0FDQUJLQUlFSVFZZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ1JGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FFS0FJRUlnUkIwS0FTUmdSQUlBSVFZeUVKSUFNUVl5RUtJQVZCQ0dvZ0FTQUNJQUlvQWdBb0FnZ1JBQUFnQ1NBS0lBa2dDbFViRVAwQkRBRUxJQVJCOEo4U1JnUkFJQUlRUENFTElBTVFQQ0VNSUFWQkNHb2dBU0FHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQU1JQXNnQ3lBTVl4c1Fjd3dCQ3lBRVFiQ3BFa1lFUUNBQ0VEUWhCeUFERURRaENDQUZRUWhxSUFFZ0JpQUNJQUlvQWdBb0FnZ1JBQUFnQ0NBSElBY2dDRjBiRUdzTUFRc2dCRUdRcWhKR0JFQWdBaEJoSVFRZ0F4QmhJUU1nQlVFSWFpQUJJQUlnQWlnQ0FDZ0NDQkVBQUNBRUlBTWdBeUFFU0JzUXNRRU1BUXNnQkVHZ3N4SkdCRUFnQWhCWklRUWdBeEJaSVFNZ0JVRUlhaUFCSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUVJQU1nQXlBRVNSc1FyUUVNQVFzZ0JFSFFxQkpIRFFFZ0FoQS9JUWNnQXhBL0lRZ2dCVUVJYWlBQklBWWdBaUFDS0FJQUtBSUlFUUFBSUFnZ0J5QUhJQWhkR3hCeUN5QUFJQVVwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFGUVJCcUpBQUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRVBFUkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1E4QkVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXV0QndRRGZ3WjhBWDRCZlNNQVFSQnJJZ01rQUNBQktBSUVJUVVnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnUkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUVLQUlFSWdSQjhKOFNSZ1JBSUFJUVBDSUdSQUFBQUFBQUFBQUFaUVJBSUFFZ0EwR0lrUWNRRkNJRUlBVVFYU0FFRUE4YUlBRXRBQVFFUUNBQklBSWdBaWdDQUNnQ0NCRUFBQkNSQVNFQklBTkJBVG9BQkNBRElBRTJBZ0FNQXdzZ0EwRUNPZ0FFREFJTElBTWdBU0FGSUFJZ0FpZ0NBQ2dDQ0JFQUFBSjhBa0FDUUFKQUFrQWdCcjBpREVJQVdRUkFJQXhDSUlpbklnRkIvLzgvU3cwQkMwUUFBQUFBQUFEd3Z5QUdJQWFpb3lBTVF2Ly8vLy8vLy8vLy93Q0RVQTBFR2lBTVFnQlpEUUVnQmlBR29VUUFBQUFBQUFBQUFLTU1CQXNnQVVILy83Ly9CMHNOQWtHQWdNRC9BeUVDUVlGNElRVWdBVUdBZ01EL0EwY0VRQ0FCSVFJTUFnc2dES2NOQVVRQUFBQUFBQUFBQUF3REN5QUdSQUFBQUFBQUFGQkRvcjBpREVJZ2lLY2hBa0hMZHlFRkN5QU1Rdi8vLy84UGd5QUNRZUsrSldvaUFVSC8vejl4UVo3Qm12OERhcTFDSUlhRXYwUUFBQUFBQUFEd3Y2QWlCaUFHSUFaRUFBQUFBQUFBNEQraW9pSUpvYjFDZ0lDQWdIQ0R2eUlLUkFBQUlHVkhGZmMvb2lJSElBVWdBVUVVZG1xM0lnaWdJZ3NnQnlBSUlBdWhvQ0FHSUFaRUFBQUFBQUFBQUVDZ295SUhJQWtnQnlBSG9pSUlJQWlpSWdjZ0J5QUhSSi9HZU5BSm1zTS9va1N2ZUk0ZHhYSE1QNkNpUkFUNmw1bVptZGsvb0tJZ0NDQUhJQWNnQjBSRVVqN2ZFdkhDUDZKRTNnUExsbVJHeHorZ29rUlpreUtVSkVuU1A2Q2lSSk5WVlZWVlZlVS9vS0tnb0tJZ0JpQUtvU0FKb2FBaUJpQUtvRVFBb3U4dS9BWG5QYUlnQmtRQUFDQmxSeFgzUDZLZ29LQWhCZ3NnQmdzUWN3d0JDeUFFUWJDcEVrWUVRQ0FDRURRaURVTUFBQUFBWHdSQUlBRWdBMEdJa1FjUUZDSUVJQVVRWFNBRUVBOGFJQUV0QUFRRVFDQUJJQUlnQWlnQ0FDZ0NDQkVBQUJDUkFTRUJJQU5CQVRvQUJDQURJQUUyQWdBTUF3c2dBMEVDT2dBRURBSUxJQU1nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FORUtZVkVHc01BUXNnQkVIUXFCSkhEUUVnQWhBL0lRMURBQUFBQUJCR0lBMWdCRUFnQVNBRFFZaVJCeEFVSWdRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FFSUFNZ0FUWUNBQXdDQ3lBRFFRSTZBQVFNQVFzZ0F5QUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBMFFwaFVRUmhCeUN5QUFJQU1wQXdBM0FnQU1BUXNnQUVFQU9nQUVDeUFEUVJCcUpBQUxzZ0lCQlg4akFFSFFBR3NpQmlRQUlBWkJBRFlDVEFKQUlBVW9BZ0FpQnlBSEtBSUFLQUlJRVFBQUlnY2dCa0hNQUdvUUlpQUhSZ1JBSUFBZ0F5QUZLQUlBRVBNUkRBRUxJQVpDZ0lDQWdJQUJOd0pFSUFZZ0JrRWdhaUlITmdKQUlBY2dCaWdDVEJBNUlBWkJRR3NoQ1VFQUlRY0NRQUpBQTBBZ0J5QUdLQUpNVHcwQklBSkJBQkFpSVFvZ0JpQUZLQUlBSWdnZ0J5QUlLQUlBS0FJTUVRRUFOZ0lVSUFaQkdHb2lDQ0FCSUFvZ0F5QUVJQWRxSUFaQkZHb1E4aEVnQ0JBckJFQWdCa0VnYWlBR1FSaHFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDVFlDQ0NBR0lBWW9Ba0FnQmtFZ2FrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQklHb1FJd3NnQmtIUUFHb2tBQXZuQXdNRGZ3RjlBWHdqQUVFUWF5SURKQUFnQVNnQ0JDRUZJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJRVJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JDZ0NCQ0lFUWZDZkVrWUVRQ0FDRUR3aUIwUUFBQUFBQUFBQUFHVUVRQ0FCSUFOQjVKQUhFQlFpQkNBRkVGMGdCQkFQR2lBQkxRQUVCRUFnQVNBQ0lBSW9BZ0FvQWdnUkFBQVFrUUVoQVNBRFFRRTZBQVFnQXlBQk5nSUFEQU1MSUFOQkFqb0FCQXdDQ3lBRElBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0J4Q21DQkJ6REFFTElBUkJzS2tTUmdSQUlBSVFOQ0lHUXdBQUFBQmZCRUFnQVNBRFFlU1FCeEFVSWdRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FFSUFNZ0FUWUNBQXdEQ3lBRFFRSTZBQVFNQWdzZ0F5QUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBWVFtQWNRYXd3QkN5QUVRZENvRWtjTkFTQUNFRDhoQmtNQUFBQUFFRVlnQm1BRVFDQUJJQU5CNUpBSEVCUWlCQ0FGRUYwZ0JCQVBHaUFCTFFBRUJFQWdBU0FDSUFJb0FnQW9BZ2dSQUFBUWtRRWhBU0FEUVFFNkFBUWdBeUFCTmdJQURBSUxJQU5CQWpvQUJBd0JDeUFESUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQmhDWUJ4QkdFSElMSUFBZ0F5a0RBRGNDQUF3QkN5QUFRUUE2QUFRTElBTkJFR29rQUF1MEFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQWdCQkQxRVF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVQUVJJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUx2UVVFQlg4QmZRRjhBWDRqQUVFZ2F5SUVKQUFnQVNnQ0RDRUlJQUVvQWdnaEJpQUJLQUlBSVFVZ0FTZ0NCQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ2RGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FIS0FJRUlnZEI4SjhTUmdSQUlBSVFQQ0VLSUFVb0FnQW9BZ0FvQWdRaUJTQUZLQUlBS0FJSUVRQUFFTFFEQkg4Z0JTQURJQVVvQWdBb0Fnd1JBUUFGSUFVTEVHTWlDMEtCQ0ZrRVFDQUVRb0FJRVBjR0lBUkJFR29pQTBHSWdRb2dCQkExSUFFZ0F5QUdFRjBnQXhBUEdpQUVFQThhSUFFdEFBUUVRQ0FCSUFJZ0FpZ0NBQ2dDQ0JFQUFCQ1JBU0VCSUFSQkFUb0FGQ0FFSUFFMkFoQU1Bd3NnQkVFQ09nQVVEQUlMSUFSQkVHb2dBU0FHSUFnb0FnQVFYQ0FLSUF1bkVQOEVFSE1NQVFzZ0IwR3dxUkpHQkVBZ0FoQTBJUWtnQlNnQ0FDZ0NBQ2dDQkNJRklBVW9BZ0FvQWdnUkFBQVF0QU1FZnlBRklBTWdCU2dDQUNnQ0RCRUJBQVVnQlFzUVlTSURRWUVCVGdSQUlBUkJnQUVROWdRZ0JFRVFhaUlEUVlpQkNpQUVFRFVnQVNBRElBWVFYU0FERUE4YUlBUVFEeG9nQVMwQUJBUkFJQUVnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQkVFQk9nQVVJQVFnQVRZQ0VBd0RDeUFFUVFJNkFCUU1BZ3NnQkVFUWFpQUJJQVlnQ0NnQ0FCQmNJQWtnQXhDb0ZSQnJEQUVMSUFkQjBLZ1NSdzBCSUFJUVB5RUpJQVVvQWdBb0FnQW9BZ1FpQlNBRktBSUFLQUlJRVFBQUVMUURCSDhnQlNBRElBVW9BZ0FvQWd3UkFRQUZJQVVMRUdFaUEwRVJUZ1JBSUFSQkVCRDJCQ0FFUVJCcUlnTkJpSUVLSUFRUU5TQUJJQU1nQmhCZElBTVFEeG9nQkJBUEdpQUJMUUFFQkVBZ0FTQUNJQUlvQWdBb0FnZ1JBQUFRa1FFaEFTQUVRUUU2QUJRZ0JDQUJOZ0lRREFJTElBUkJBam9BRkF3QkN5QUVRUkJxSUFFZ0JpQUlLQUlBRUZ3Z0NTQURFS2dWRUVZUWNnc2dBQ0FFS1FNUU53SUFEQUVMSUFCQkFEb0FCQXNnQkVFZ2FpUUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJEM0VRd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFUFlSSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMeEFZREEzOEJmUUY4SXdCQk1Hc2lBeVFBSUFFb0FnUWhCU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJFVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBUW9BZ1FpQkVId254SkdCRUFnQWhBOElnZEVBQUFBQUFBQUFBQmxCRUFnQVNBRFFSaHFRYmlRQnhBVUlnUWdCUkJkSUFRUUR4b2dBUzBBQkFSQUlBRWdBaUFDS0FJQUtBSUlFUUFBRUpFQklRRWdBMEVCT2dBRUlBTWdBVFlDQUF3REN5QURRUUk2QUFRTUFnc2dBeUFGTmdJc0lBTWdBVFlDS0NBRFFSaHFJZ1FnQVNBRklBY1F1QXdnQkJCaUJFQWdBMEVvYWhEbkJpQURRUUk2QUFRTUFnc2dBMEVJYWlJRUlBRWdCVVFBQUFBQUFBRHdQeUFEUVJocUVFb3JBd0FRNnd3Z0JCQmlCRUFnQTBFb2FoRG5CaUFEUVFJNkFBUU1BZ3NnQXlBQklBVWdBaUFDS0FJQUtBSUlFUUFBSUFOQkNHb1FTaXNEQUJCekRBRUxJQVJCc0trU1JnUkFJQUlRTkNJR1F3QUFBQUJmQkVBZ0FTQURRUmhxUWJpUUJ4QVVJZ1FnQlJCZElBUVFEeG9nQVMwQUJBUkFJQUVnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQTBFQk9nQUVJQU1nQVRZQ0FBd0RDeUFEUVFJNkFBUU1BZ3NnQXlBRk5nSWNJQU1nQVRZQ0dDQURRUWhxSWdRZ0FTQUZJQVlRdHd3Z0JCQXdCRUFnQTBFWWFoRG5CaUFEUVFJNkFBUU1BZ3NnQTBFb2FpSUVJQUVnQlVNQUFJQS9JQU5CQ0dvUUdpb0NBQkRxRENBRUVEQUVRQ0FEUVJocUVPY0dJQU5CQWpvQUJBd0NDeUFESUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQTBFb2FoQWFLZ0lBRUdzTUFRc2dCRUhRcUJKSERRRWdBaEEvSVFaREFBQUFBQkJHSUFaZ0JFQWdBU0FEUVJocVFiaVFCeEFVSWdRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FFSUFNZ0FUWUNBQXdDQ3lBRFFRSTZBQVFNQVFzZ0F5QUZOZ0ljSUFNZ0FUWUNHQ0FEUVFocUlnUWdBU0FGSUFZUXRnd2dCQkF3QkVBZ0EwRVlhaERuQmlBRFFRSTZBQVFNQVFzZ0EwRW9haUlFSUFFZ0JVTUFBSUEvRUVZZ0EwRUlhaEFhS2dJQUVPd0pJQVFRTUFSQUlBTkJHR29RNXdZZ0EwRUNPZ0FFREFFTElBTWdBU0FGSUFJZ0FpZ0NBQ2dDQ0JFQUFDQURRU2hxRUJvcUFnQVFjZ3NnQUNBREtRTUFOd0lBREFFTElBQkJBRG9BQkFzZ0EwRXdhaVFBQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRVBrUkRBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RK0JFZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUF1VEJBRUdmeU1BUVJCcklnWWtBQ0FCS0FJSUlRa2dBU2dDQUNFRUlBRW9BZ1FoQ0FKQUlBSWdBaWdDQUNnQ0NCRUFBQ0lCUlFSQUlBQkJBRG9BQkF3QkN3SkFBa0FDUUNBQktBSUVJZ0ZCa0tvU1JnUkFJQUlRWVNFQklBTVFZU0VESUFRb0FnQW9BZ0FvQWdnUVdTSUZRU0JMSUFRb0FnQW9BZ0FvQWd3UVdTSUVRU0JMY2tVZ0JDQUZha0VoU1hGRkJFQWdDQ0FHUVlhRkNSQVVJZ2NnQ1JCZElBY1FEeG9nQ0MwQUJFVU5Ba0VnUVNBZ0JTQUZRU0JQR3lJRmF5SUhJQVFnQkNBSFN4c2hCQXNDUUNBRVJRMEFJQVJCSUVZRVFDQURJUUVNQVFzZ0FVRi9JQVIwUVg5eklnUWdCWFJCZjNOeElBTWdCSEVnQlhSeUlRRUxJQVlnQ0NBQ0lBSW9BZ0FvQWdnUkFBQWdBUkN4QVF3REN5QUJRYUN6RWtZRVFDQUNFRmtoQVNBREVGa2hBeUFFS0FJQUtBSUFLQUlJRUZraUJVRWdTeUFFS0FJQUtBSUFLQUlNRUZraUJFRWdTM0pGSUFRZ0JXcEJJVWx4UlFSQUlBZ2dCa0dHaFFrUUZDSUhJQWtRWFNBSEVBOGFJQWd0QUFSRkRRTkJJRUVnSUFVZ0JVRWdUeHNpQldzaUJ5QUVJQVFnQjBzYklRUUxBa0FnQkVVTkFDQUVRU0JHQkVBZ0F5RUJEQUVMSUFGQmZ5QUVkRUYvY3lJRUlBVjBRWDl6Y1NBRElBUnhJQVYwY2lFQkN5QUdJQWdnQWlBQ0tBSUFLQUlJRVFBQUlBRVFyUUVNQXdzZ0FFRUFPZ0FFREFNTElBWkJBam9BQkF3QkN5QUdRUUk2QUFRTElBQWdCaWtEQURjQ0FBc2dCa0VRYWlRQUM0Z0JBUU4vSXdCQnNBRnJJZ0lrQUNBQktBSUFLQUlBSWdNUUhDQUNRUkJxUWNXdEJVR0NGVUVJSUFOQnlBSnFFQmNpQTBFWWFpSUVRZGFFREJBT0dpQUNJQUVvQWdRb0FnQWlBU0FCS0FJQUtBSUlFUUFBSWdFZ0FTZ0NBQ2dDREJFQ0FDQUVJQUlRRWhvZ0FoQVBHaUFERUJnZ0FFRUNPZ0FNSUFCQkFqb0FCQ0FDUWJBQmFpUUFDOFFDQWdKL0FYd2pBRUVnYXlJREpBQWdBeUFDTmdJTUlBRW9BZ0FoQkNBRFFRQTJBZ2dnQWhBOElBTkJDR29RckEwaEJTQUNJQUlvQWdBb0FnZ1JBQUFoQWlBQktBSUVJUUVnQXlBRU5nSUFJQU1nQTBFTWFqWUNCQUpBSUFKRkJFQWdBQ0FERVBvUkRBRUxBa0FnQWlnQ0JDSUNRYkNwRWtZRVFDQURRUkJxSUFRZ0FTQUVLQUlBRU9RQklBVzJFR3NnQTBFWWFpQUVJQVFvQWdBUTFBSWdBeWdDQ0JDeEFRd0JDeUFDUWRDb0VrWUVRQ0FEUVJCcUlBUWdBU0FFS0FJQUVQVUZJQVcyRUVZUWNpQURRUmhxSUFRZ0JDZ0NBQkRVQWlBREtBSUlFTEVCREFFTElBSkI4SjhTUmdSQUlBTkJFR29nQkNBQklBUW9BZ0FRcUFRZ0JSQnpJQU5CR0dvZ0JDQUVLQUlBRUtjSklBTTBBZ2dRL1FFTUFRc2dBMEVRYWlBREVQb1JDeUFBSUFNcEF4QTNBZ0FnQUNBREtRTVlOd0lJQ3lBRFFTQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVQMFJEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29RL0JFZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF2eUFRTURmd0Y5QVh3akFFRVFheUlESkFBZ0FTZ0NCQ0VGSUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUVSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCQ2dDQkNJRVFmQ2ZFa1lFUUNBQ0VEd2hCeUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0J5QUhuS0VRY3d3QkN5QUVRYkNwRWtZRVFDQUNFRFFoQmlBRFFRaHFJQUVnQlNBQ0lBSW9BZ0FvQWdnUkFBQWdCaUFHanBNUWF3d0JDeUFFUWRDb0VrY05BU0FDRUQ4aEJpQURRUWhxSUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQmlBR2pwTVFSaEJ5Q3lBQUlBTXBBd2czQWdBTUFRc2dBRUVBT2dBRUN5QURRUkJxSkFBTDlRSUJCWDhqQUVIUUFHc2lDQ1FBSUFoQkFEWUNUQUpBSUFVb0FnQWlDU0FKS0FJQUtBSUlFUUFBSWdrZ0NFSE1BR29RSWlBSlJnUkFJQUFnQXlBRktBSUFJQVlvQWdBZ0J5Z0NBQkNBRWd3QkN5QUlRb0NBZ0lDQUFUY0NSQ0FJSUFoQklHb2lDVFlDUUNBSklBZ29Ba3dRT1NBSVFVQnJJUXRCQUNFSkFrQUNRQU5BSUFrZ0NDZ0NURThOQVNBQ1FRQVFJaUVNSUFnZ0JTZ0NBQ0lLSUFrZ0NpZ0NBQ2dDREJFQkFEWUNGQ0FJSUFZb0FnQWlDaUFKSUFvb0FnQW9BZ3dSQVFBMkFoQWdDQ0FIS0FJQUlnb2dDU0FLS0FJQUtBSU1FUUVBTmdJTUlBaEJHR29pQ2lBQklBd2dBeUFFSUFscUlBaEJGR29nQ0VFUWFpQUlRUXhxRVA0UklBb1FLd1JBSUFoQklHb2dDRUVZYWhBYUVDUWdDVUVCYWlFSkRBRUxDeUFJUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFJSUFzMkFnQWdDQ0FJS0FKQUlBaEJJR3BIT2dBRUlBRWdBaUFJRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBSVFTQnFFQ01MSUFoQjBBQnFKQUFMdGdFQkJYOGpBRUVRYXlJRUpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRE5nSU1JQVFnQXpZQ0NDQUFRWXdCYWlJREVMOEJJUVVnQUNnQ0NDRUdJQVFvQWdnaEJ5QUNLQUlBSVFJakFFRVFheUlBSkFBZ0FDQUhOZ0lBSUFBZ0JqWUNDQ0FGSUFBb0FnZ2dBQ2dDQUNBQkVQTUdJZ0ZCaU9vUE5nSUVJQUZCd09vUE5nSUFJQUVnQWpZQ0pDQUJRYWpxRHpZQ0FDQUFRUkJxSkFBZ0F5QUZFQ2dnQXlBREtBSVlRUUZxTmdJWUlBUkJFR29rQUNBRkM5VUVBd04vQTMwRGZDTUFRVEJySWdVa0FDQUJLQUlFSVFZZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ2RGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FIS0FJRUlnZEI4SjhTUmdSQUlBSVFQQ0VMSUFNUVBDRU1JQVFRUENFTklBVWdCallDTENBRklBRTJBaWdnQlVFWWFpSURJQUVnQmlBTElBd1Eyd0VnQXhCaUJFQWdCVUVvYWhEb0JpQUZRUUk2QUFRTUFnc2dCVUVJYWlJRElBRWdCaUFGUVJocUVFb3JBd0FnRFJEWUF5QURFR0lFUUNBRlFTaHFFT2dHSUFWQkFqb0FCQXdDQ3lBRklBRWdCaUFDSUFJb0FnQW9BZ2dSQUFBZ0JVRUlhaEJLS3dNQUVITU1BUXNnQjBHd3FSSkdCRUFnQWhBMElRZ2dBeEEwSVFrZ0JCQTBJUW9nQlNBR05nSWNJQVVnQVRZQ0dDQUZRUWhxSWdNZ0FTQUdJQWdnQ1JEYUFTQURFREFFUUNBRlFSaHFFT2dHSUFWQkFqb0FCQXdDQ3lBRlFTaHFJZ01nQVNBR0lBVkJDR29RR2lvQ0FDQUtFTmNESUFNUU1BUkFJQVZCR0dvUTZBWWdCVUVDT2dBRURBSUxJQVVnQVNBR0lBSWdBaWdDQUNnQ0NCRUFBQ0FGUVNocUVCb3FBZ0FRYXd3QkN5QUhRZENvRWtjTkFTQUNFRDhoQ0NBREVEOGhDU0FFRUQ4aENpQUZJQVkyQWh3Z0JTQUJOZ0lZSUFWQkNHb2lBeUFCSUFZZ0NDQUpFTmtCSUFNUU1BUkFJQVZCR0dvUTZBWWdCVUVDT2dBRURBRUxJQVZCS0dvaUF5QUJJQVlnQlVFSWFoQWFLZ0lBSUFvUTFnTWdBeEF3QkVBZ0JVRVlhaERvQmlBRlFRSTZBQVFNQVFzZ0JTQUJJQVlnQWlBQ0tBSUFLQUlJRVFBQUlBVkJLR29RR2lvQ0FCQnlDeUFBSUFVcEF3QTNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBRlFUQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVJSVNEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29RZ1JJZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF2cEFRTURmd0Y5QVh3akFFRVFheUlESkFBZ0FTZ0NCQ0VGSUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUVSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCQ2dDQkNJRVFmQ2ZFa1lFUUNBQ0VEd2hCeUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0I1d1Fjd3dCQ3lBRVFiQ3BFa1lFUUNBQ0VEUWhCaUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0JvNFFhd3dCQ3lBRVFkQ29Fa2NOQVNBQ0VEOGhCaUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0JvNFFSaEJ5Q3lBQUlBTXBBd2czQWdBTUFRc2dBRUVBT2dBRUN5QURRUkJxSkFBTHNnSUJCWDhqQUVIUUFHc2lCaVFBSUFaQkFEWUNUQUpBSUFVb0FnQWlCeUFIS0FJQUtBSUlFUUFBSWdjZ0JrSE1BR29RSWlBSFJnUkFJQUFnQXlBRktBSUFFSVFTREFFTElBWkNnSUNBZ0lBQk53SkVJQVlnQmtFZ2FpSUhOZ0pBSUFjZ0JpZ0NUQkE1SUFaQlFHc2hDVUVBSVFjQ1FBSkFBMEFnQnlBR0tBSk1UdzBCSUFKQkFCQWlJUW9nQmlBRktBSUFJZ2dnQnlBSUtBSUFLQUlNRVFFQU5nSVVJQVpCR0dvaUNDQUJJQW9nQXlBRUlBZHFJQVpCRkdvUWd4SWdDQkFyQkVBZ0JrRWdhaUFHUVJocUVCb1FKQ0FIUVFGcUlRY01BUXNMSUFaQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFZZ0NUWUNDQ0FHSUFZb0FrQWdCa0VnYWtjNkFBd2dBU0FDSUFaQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVpCSUdvUUl3c2dCa0hRQUdva0FBdk1BUUVEZnlNQVFSQnJJZ01rQUNBQktBSUVJUVFnQVNnQ0FDRUZBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnRkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUJLQUlFSWdGQmtLb1NSZ1JBSUFJUVlTSUJCSDhnQVJER0NRVkJmd3NoQVNBRFFRaHFJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBRVFzUUVNQVFzZ0FVR2dzeEpIRFFFZ0FoQlpJZ0VFZnlBQkVNWUpCVUYvQ3lFQklBTkJDR29nQlNBQ0lBSW9BZ0FvQWdnUkFBQWdBUkN0QVFzZ0FDQURLUU1JTndJQURBRUxJQUJCQURvQUJBc2dBMEVRYWlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkNHRWd3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVJVVNJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUw0QUVCQkg4akFFRVFheUlESkFBZ0FTZ0NCQ0VFSUFFb0FnQWhCUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUJSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdBU2dDQkNJQlFaQ3FFa1lFUUVGL0lRRWdBaEJoSWdaQkFXcEJBazhFUUVFZklBWWdCa0VmZGhDc0RHc2hBUXNnQTBFSWFpQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBQkVMRUJEQUVMSUFGQm9MTVNSdzBCSUFJUVdTSUJCSDlCSHlBQlFRQVFyQXhyQlVGL0N5RUJJQU5CQ0dvZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQVJDdEFRc2dBQ0FES1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQTBFUWFpUUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJDSUVnd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFSWNTSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMalFRQkJuOGpBRUVRYXlJRkpBQWdBU2dDQ0NFSUlBRW9BZ0FoQXlBQktBSUVJUWNDUUNBQ0lBSW9BZ0FvQWdnUkFBQWlBVVVFUUNBQVFRQTZBQVFNQVFzQ1FBSkFBa0FnQVNnQ0JDSUJRWkNxRWtZRVFDQUNFR0VoQmlBREtBSUFLQUlBS0FJRUVGa2lCRUVnU3lBREtBSUFLQUlBS0FJSUVGa2lBVUVnUzNKRklBRWdCR3BCSVVseFJRUkFJQWNnQlVHR2hRa1FGQ0lESUFnUVhTQURFQThhSUFjdEFBUkZEUUpCSUVFZ0lBUWdCRUVnVHhzaUJHc2lBeUFCSUFFZ0Ewc2JJUUVMQWtBZ0FVVU5BQ0FCUVNCR0JFQWdCaUVCREFFTFFRQWdCa0YvSUFGMFFYOXpJQVIwSWdaeElBUjJJZ01nQVVFQmEzWkJBWEZySUFZZ0JIWkJmM054SUFOeUlRRUxJQVVnQnlBQ0lBSW9BZ0FvQWdnUkFBQWdBUkN4QVF3REN5QUJRYUN6RWtZRVFDQUNFRmtoQmlBREtBSUFLQUlBS0FJRUVGa2lCRUVnU3lBREtBSUFLQUlBS0FJSUVGa2lBVUVnUzNKRklBRWdCR3BCSVVseFJRUkFJQWNnQlVHR2hRa1FGQ0lESUFnUVhTQURFQThhSUFjdEFBUkZEUU5CSUVFZ0lBUWdCRUVnVHhzaUJHc2lBeUFCSUFFZ0Ewc2JJUUVMQWtBZ0FVVU5BQ0FCUVNCR0JFQWdCaUVCREFFTFFYOGdBWFJCZjNNZ0JIUWdCbkVnQkhZaEFRc2dCU0FISUFJZ0FpZ0NBQ2dDQ0JFQUFDQUJFSzBCREFNTElBQkJBRG9BQkF3REN5QUZRUUk2QUFRTUFRc2dCVUVDT2dBRUN5QUFJQVVwQXdBM0FnQUxJQVZCRUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRaWhJTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoQ0pFaUFJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDNFVKQkFWL0JYd0NmZ0o5SXdCQk1Hc2lBeVFBSUFFb0FnUWhCU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJFVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBUW9BZ1FpQkVId254SkdCRUFDZkNBQ0VEd2lDeUlJRU1ZRVFmOFBjU0lFUkFBQUFBQUFBSkE4RU1ZRUlnWnJJZ2RFQUFBQUFBQUFnRUFReGdRZ0JtdFBCRUFnQ0VRQUFBQUFBQUR3UDZBZ0IwRUFTQTBCR2lBSXZTRU5Ba0JFQUFBQUFBQUFrRUFReGdRZ0JFc05BRVFBQUFBQUFBQUFBQ0FOUW9DQWdJQ0FnSUI0VVEwQ0dpQUlSQUFBQUFBQUFQQS9vRVFBQUFBQUFBRHdmeERHQkNBRVRRMENHaUFOUWdCWkJFQkVBQUFBQUFBQUFIQVFuUW9NQXdzZ0RVS0FnSUNBZ0lDenlFQlVEUUJFQUFBQUFBQUFBQkFRblFvTUFnc2dCRUVBSUExQ0FZWkNnSUNBZ0lDQWdJMkJmMWdiSVFRTElBaEJ1TXdOS3dNQUlna2dDS0FpQ2lBSm9hRWlDQ0FJb2lJSklBbWlJQWhCNE13Tkt3TUFva0hZekEwckF3Q2dvaUFKSUFoQjBNd05Ld01Bb2tISXpBMHJBd0Nnb2lBSVFjRE1EU3NEQUtJZ0NyMGlEcWRCQkhSQjhBOXhJZ1pCNk13TmFpc0RBS0Nnb0NFSUlBWkI4TXdOYWlrREFDQU9RaTJHZkNFTklBUkZCRUFDZkNBT1FvQ0FnSUFJZzFBRVFDQU5Rb0NBZ0lDQWdJQUlmYjhpQ1NBSW9pQUpvQ0lJSUFpZ0RBRUxJQTFDZ0lDQWdJQ0FnUEEvZkw4aUNTQUlvaUlLSUFtZ0lnaEVBQUFBQUFBQThEOWpCSHdRckJWRUFBQUFBQUFBRUFDaUVLc1ZSQUFBQUFBQUFBQUFJQWhFQUFBQUFBQUE4RCtnSWd3Z0NpQUpJQWlob0NBSVJBQUFBQUFBQVBBL0lBeWhvS0NnUkFBQUFBQUFBUEMvb0NJSUlBaEVBQUFBQUFBQUFBQmhHd1VnQ0F0RUFBQUFBQUFBRUFDaUN3d0JDeUFOdnlJSklBaWlJQW1nQ3lJSVJBQUFBQUFBQVBCL1kwVUVRQ0FEUVFFMkFod2dBMEhjaFFjMkFoZ2dBeUFES1FNWU53TUFJQU5CSUdvaUJDQURJQXNRcHhFZ0FTQUVJQVVRWFNBRUVBOGFJQUV0QUFRRVFDQUJJQUlnQWlnQ0FDZ0NDQkVBQUJDUkFTRUJJQU5CQVRvQUpDQURJQUUyQWlBTUF3c2dBMEVDT2dBa0RBSUxJQU5CSUdvZ0FTQUZJQUlnQWlnQ0FDZ0NDQkVBQUNBSUVITU1BUXNnQkVHd3FSSkdCRUFnQWhBMElnOFFxUlVpRUVNQUFJQi9YVVVFUUNBRFFRRTJBaHdnQTBIY2hRYzJBaGdnQXlBREtRTVlOd01JSUFOQklHb2lCQ0FEUVFocUlBOFFwaEVnQVNBRUlBVVFYU0FFRUE4YUlBRXRBQVFFUUNBQklBSWdBaWdDQUNnQ0NCRUFBQkNSQVNFQklBTkJBVG9BSkNBRElBRTJBaUFNQXdzZ0EwRUNPZ0FrREFJTElBTkJJR29nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FRRUdzTUFRc2dCRUhRcUJKSERRRWdBaEEvSWc4UXFSVVFSaUlRaTBNQUFJQi9YVVVFUUNBRFFRRTJBaHdnQTBIY2hRYzJBaGdnQXlBREtRTVlOd01RSUFOQklHb2lCQ0FEUVJCcUlBOFFwUkVnQVNBRUlBVVFYU0FFRUE4YUlBRXRBQVFFUUNBQklBSWdBaWdDQUNnQ0NCRUFBQkNSQVNFQklBTkJBVG9BSkNBRElBRTJBaUFNQWdzZ0EwRUNPZ0FrREFFTElBTkJJR29nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FRRUhJTElBQWdBeWtESURjQ0FBd0JDeUFBUVFBNkFBUUxJQU5CTUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRakJJTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoQ0xFaUFJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDOXdFQXdOL0FuMENmQ01BUVRCcklnTWtBQ0FCS0FJRUlRVWdBU2dDQUNFQkFrQWdBaUFDS0FJQUtBSUlFUUFBSWdSRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBRUtBSUVJZ1JCOEo4U1JnUkFJQUlRUENJSUVMb05JZ2xFQUFBQUFBQUE4SDlqUlFSQUlBTkJBVFlDSENBRFFaTGdCRFlDR0NBRElBTXBBeGczQXdBZ0EwRWdhaUlFSUFNZ0NCQ25FU0FCSUFRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FrSUFNZ0FUWUNJQXdEQ3lBRFFRSTZBQ1FNQWdzZ0EwRWdhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWtRY3d3QkN5QUVRYkNwRWtZRVFDQUNFRFFpQmhDZUNpSUhRd0FBZ0g5ZFJRUkFJQU5CQVRZQ0hDQURRWkxnQkRZQ0dDQURJQU1wQXhnM0F3Z2dBMEVnYWlJRUlBTkJDR29nQmhDbUVTQUJJQVFnQlJCZElBUVFEeG9nQVMwQUJBUkFJQUVnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQTBFQk9nQWtJQU1nQVRZQ0lBd0RDeUFEUVFJNkFDUU1BZ3NnQTBFZ2FpQUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBY1Fhd3dCQ3lBRVFkQ29Fa2NOQVNBQ0VEOGlCaENlQ2hCR0lnZUxRd0FBZ0g5ZFJRUkFJQU5CQVRZQ0hDQURRWkxnQkRZQ0dDQURJQU1wQXhnM0F4QWdBMEVnYWlJRUlBTkJFR29nQmhDbEVTQUJJQVFnQlJCZElBUVFEeG9nQVMwQUJBUkFJQUVnQWlBQ0tBSUFLQUlJRVFBQUVKRUJJUUVnQTBFQk9nQWtJQU1nQVRZQ0lBd0NDeUFEUVFJNkFDUU1BUXNnQTBFZ2FpQUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBY1FjZ3NnQUNBREtRTWdOd0lBREFFTElBQkJBRG9BQkFzZ0EwRXdhaVFBQ3pjQkFuOGpBRUVRYXlJQ0pBQWdBU2dDQUNBQ1FkcldCQkFVSWdNZ0FTZ0NCQkQ4QVNBREVBOGFJQUJCQWpvQUJDQUNRUkJxSkFBTHNnSUJCWDhqQUVIUUFHc2lCaVFBSUFaQkFEWUNUQUpBSUFVb0FnQWlCeUFIS0FJQUtBSUlFUUFBSWdjZ0JrSE1BR29RSWlBSFJnUkFJQUFnQXlBRktBSUFFSThTREFFTElBWkNnSUNBZ0lBQk53SkVJQVlnQmtFZ2FpSUhOZ0pBSUFjZ0JpZ0NUQkE1SUFaQlFHc2hDVUVBSVFjQ1FBSkFBMEFnQnlBR0tBSk1UdzBCSUFKQkFCQWlJUW9nQmlBRktBSUFJZ2dnQnlBSUtBSUFLQUlNRVFFQU5nSVVJQVpCR0dvaUNDQUJJQW9nQXlBRUlBZHFJQVpCRkdvUWpoSWdDQkFyQkVBZ0JrRWdhaUFHUVJocUVCb1FKQ0FIUVFGcUlRY01BUXNMSUFaQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFZZ0NUWUNDQ0FHSUFZb0FrQWdCa0VnYWtjNkFBd2dBU0FDSUFaQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVpCSUdvUUl3c2dCa0hRQUdva0FBc3FBQ0FBSUFFZ0FrR3h2UUZEMnc5SlFFTUFBRFJEUWVEZGxKTUVRdmlEajlQQnU2bW13QUFRaFJNTFhnRUVmeU1BUVJCcklnWWtBQ0FHUVFocUlnY2dBU2dDQUNJSUlBRkJCR29pQ1NBQ0lBTWdCQ0FGRU1vSkFrQWdCeEFyQkVBZ0FDQUlJQWtnQVNnQ0dDQUdRUWhxRUJvcUFnQVFjZ3dCQ3lBQVFRSTZBQVFMSUFaQkVHb2tBQXRlQVFSL0l3QkJFR3NpQmlRQUlBWkJDR29pQnlBQktBSUFJZ2dnQVVFRWFpSUpJQUlnQXlBRUlBVVF5d2tDUUNBSEVDc0VRQ0FBSUFnZ0NTQUJLQUlZSUFaQkNHb1FHaW9DQUJCckRBRUxJQUJCQWpvQUJBc2dCa0VRYWlRQUMxY0JBMzhqQUVFUWF5SUdKQUFnQmlBQktBSUFJZ2NnQVVFRWFpSUlJQUlnQXlBRUlBVVF6QWtDUUNBR0VMSUJCRUFnQUNBSElBZ2dBU2dDR0NBR0VFb3JBd0FRY3d3QkN5QUFRUUk2QUFRTElBWkJFR29rQUF1eUFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQVFsQklNQVFzZ0JrS0FnSUNBZ0FFM0FrUWdCaUFHUVNCcUlnYzJBa0FnQnlBR0tBSk1FRGtnQmtGQWF5RUpRUUFoQndKQUFrQURRQ0FISUFZb0FreFBEUUVnQWtFQUVDSWhDaUFHSUFVb0FnQWlDQ0FISUFnb0FnQW9BZ3dSQVFBMkFoUWdCa0VZYWlJSUlBRWdDaUFESUFRZ0Iyb2dCa0VVYWhDVEVpQUlFQ3NFUUNBR1FTQnFJQVpCR0dvUUdoQWtJQWRCQVdvaEJ3d0JDd3NnQmtFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQmlBSk5nSUlJQVlnQmlnQ1FDQUdRU0JxUnpvQURDQUJJQUlnQmtFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCa0VnYWhBakN5QUdRZEFBYWlRQUM3Z0JBUU4vSXdCQkVHc2lCQ1FBSUFFb0FnUWhCU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUEwVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBTW9BZ1FpQTBHUXFoSkdCRUFnQWhCaEVNWUpJUU1nQkVFSWFpQUJJQUlnQWlnQ0FDZ0NDQkVBQUNBREVMRUJEQUVMSUFOQm9MTVNSdzBCSUFJUVdSREdDU0VESUFSQkNHb2dBU0FDSUFJb0FnQW9BZ2dSQUFBZ0F4Q3RBUXNnQUNBRUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JFRVFhaVFBQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCQ1dFZ3dCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRUpVU0lBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTDZBRUJCSDhqQUVFUWF5SUVKQUFnQVNnQ0JDRUZJQUVvQWdBaEJnSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJQlJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0FTZ0NCQ0lCUVpDcUVrWUVRQ0FDRUdFaEFRTkFJQUVFUUNBQlFRRnhJQU5xSVFNZ0FVRUJkaUVCREFFTEN5QUVRUWhxSUFZZ0FpQUNLQUlBS0FJSUVRQUFJQU1Rc1FFTUFRc2dBVUdnc3hKSERRRWdBaEJaSVFFRFFDQUJCRUFnQVVFQmNTQURhaUVESUFGQkFYWWhBUXdCQ3dzZ0JFRUlhaUFHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQURFSzBCQ3lBQUlBUXBBd2czQWdBTUFRc2dBRUVBT2dBRUN5QUVRUkJxSkFBTHNnSUJCWDhqQUVIUUFHc2lCaVFBSUFaQkFEWUNUQUpBSUFVb0FnQWlCeUFIS0FJQUtBSUlFUUFBSWdjZ0JrSE1BR29RSWlBSFJnUkFJQUFnQXlBRktBSUFFSmdTREFFTElBWkNnSUNBZ0lBQk53SkVJQVlnQmtFZ2FpSUhOZ0pBSUFjZ0JpZ0NUQkE1SUFaQlFHc2hDVUVBSVFjQ1FBSkFBMEFnQnlBR0tBSk1UdzBCSUFKQkFCQWlJUW9nQmlBRktBSUFJZ2dnQnlBSUtBSUFLQUlNRVFFQU5nSVVJQVpCR0dvaUNDQUJJQW9nQXlBRUlBZHFJQVpCRkdvUWx4SWdDQkFyQkVBZ0JrRWdhaUFHUVJocUVCb1FKQ0FIUVFGcUlRY01BUXNMSUFaQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFZZ0NUWUNDQ0FHSUFZb0FrQWdCa0VnYWtjNkFBd2dBU0FDSUFaQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVpCSUdvUUl3c2dCa0hRQUdva0FBdmRBUUVFZnlNQVFSQnJJZ01rQUNBQktBSUVJUVVnQVNnQ0FDRUdBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnRkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUJLQUlFSWdGQmtLb1NSZ1JBSUFJUVlTRUVRUUFoQVFOQUlBUkJBRWdnQVVFZlMzSkZCRUFnQkVFQmRDRUVJQUZCQVdvaEFRd0JDd3NnQTBFSWFpQUdJQUlnQWlnQ0FDZ0NDQkVBQUNBQkVMRUJEQUVMSUFGQm9MTVNSdzBCSUFJUVdVRUFFS3dNSVFFZ0EwRUlhaUFHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUJFSzBCQ3lBQUlBTXBBd2czQWdBTUFRc2dBRUVBT2dBRUN5QURRUkJxSkFBTHNnSUJCWDhqQUVIUUFHc2lCaVFBSUFaQkFEWUNUQUpBSUFVb0FnQWlCeUFIS0FJQUtBSUlFUUFBSWdjZ0JrSE1BR29RSWlBSFJnUkFJQUFnQXlBRktBSUFFSm9TREFFTElBWkNnSUNBZ0lBQk53SkVJQVlnQmtFZ2FpSUhOZ0pBSUFjZ0JpZ0NUQkE1SUFaQlFHc2hDVUVBSVFjQ1FBSkFBMEFnQnlBR0tBSk1UdzBCSUFKQkFCQWlJUW9nQmlBRktBSUFJZ2dnQnlBSUtBSUFLQUlNRVFFQU5nSVVJQVpCR0dvaUNDQUJJQW9nQXlBRUlBZHFJQVpCRkdvUW1SSWdDQkFyQkVBZ0JrRWdhaUFHUVJocUVCb1FKQ0FIUVFGcUlRY01BUXNMSUFaQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFZZ0NUWUNDQ0FHSUFZb0FrQWdCa0VnYWtjNkFBd2dBU0FDSUFaQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVpCSUdvUUl3c2dCa0hRQUdva0FBdVBBd1FCZkFOL0FYMEJmaU1BUVJCcklnUWtBQ0FCS0FJRUlRWWdBU2dDQUNFQkFrQWdBaUFDS0FJQUtBSUlFUUFBSWdWRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBRktBSUVJZ1ZCOEo4U1JnUkFJQUlRUENFRElBUkJDR29nQVNBR0lBSWdBaWdDQUNnQ0NCRUFBQUo4SUFPOVF2Ly8vLy8vLy8vLy93Q0RJZ2kvSVFNQ2ZDQUlRaUNJcHlJQlFjSGNtUDhEVFFSQVJBQUFBQUFBQVBBL0lBRkJnSURBOGdOSkRRRWFJQU1RbndnaUF5QURvaUFEUkFBQUFBQUFBUEEvb0NJRElBT2dvMFFBQUFBQUFBRHdQNkFNQWdzZ0FVSEIzSmlFQkUwRVFDQURFTG9OSWdORUFBQUFBQUFBOEQ4Z0E2T2dSQUFBQUFBQUFPQS9vZ3dDQ3lBRFJBQUFBQUFBQVBBL0VKSVZDd3NRY3d3QkN5QUZRYkNwRWtZRVFDQUNFRFFoQnlBRVFRaHFJQUVnQmlBQ0lBSW9BZ0FvQWdnUkFBQWdCeENRRlJCckRBRUxJQVZCMEtnU1J3MEJJQUlRUHlFSElBUkJDR29nQVNBR0lBSWdBaWdDQUNnQ0NCRUFBQ0FIRUpBVkVFWVFjZ3NnQUNBRUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JFRVFhaVFBQ3pzQkFuOGpBRUVRYXlJQ0pBQWdBa0VJYWlJRElBQVFmaUFERU1NQ0lnQWdBU0FBS0FJQUtBSWNFUUVBSVFBZ0F4QmtJQUpCRUdva0FDQUFDN0lDQVFWL0l3QkIwQUJySWdZa0FDQUdRUUEyQWt3Q1FDQUZLQUlBSWdjZ0J5Z0NBQ2dDQ0JFQUFDSUhJQVpCekFCcUVDSWdCMFlFUUNBQUlBTWdCU2dDQUJDZEVnd0JDeUFHUW9DQWdJQ0FBVGNDUkNBR0lBWkJJR29pQnpZQ1FDQUhJQVlvQWt3UU9TQUdRVUJySVFsQkFDRUhBa0FDUUFOQUlBY2dCaWdDVEU4TkFTQUNRUUFRSWlFS0lBWWdCU2dDQUNJSUlBY2dDQ2dDQUNnQ0RCRUJBRFlDRkNBR1FSaHFJZ2dnQVNBS0lBTWdCQ0FIYWlBR1FSUnFFSndTSUFnUUt3UkFJQVpCSUdvZ0JrRVlhaEFhRUNRZ0IwRUJhaUVIREFFTEN5QUdRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWsyQWdnZ0JpQUdLQUpBSUFaQklHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FTQnFFQ01MSUFaQjBBQnFKQUFMdFFNREFYd0Zmd0Y5SXdCQkVHc2lCQ1FBSUFFb0FnUWhCaUFCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJVVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBVW9BZ1FpQlVId254SkdCRUFnQWhBOElRTWdCRUVJYWlBQklBWWhDQ0FDSUFJb0FnQW9BZ2dSQUFBaEJ5TUFRUkJySWdFa0FBSjhJQU85UWlDSXAwSC8vLy8vQjNFaUFrSDd3NlQvQTAwRVFFUUFBQUFBQUFEd1B5QUNRWjdCbXZJRFNRMEJHaUFEUkFBQUFBQUFBQUFBRUtFSURBRUxJQU1nQTZFZ0FrR0FnTUQvQjA4TkFCb0NRQUpBQWtBQ1FDQURJQUVRcmcxQkEzRU9Bd0FCQWdNTElBRXJBd0FnQVNzRENCQ2hDQXdEQ3lBQkt3TUFJQUVyQXdoQkFSQ2dDSm9NQWdzZ0FTc0RBQ0FCS3dNSUVLRUltZ3dCQ3lBQkt3TUFJQUVyQXdoQkFSQ2dDQXNoQXlBQlFSQnFKQUFnQ0NBSElBTVFjd3dCQ3lBRlFiQ3BFa1lFUUNBQ0VEUWhDU0FFUVFocUlBRWdCaUFDSUFJb0FnQW9BZ2dSQUFBZ0NSQ1RGUkJyREFFTElBVkIwS2dTUncwQklBSVFQeUVKSUFSQkNHb2dBU0FHSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUpFSk1WRUVZUWNnc2dBQ0FFS1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQkVFUWFpUUFDL1VDQVFWL0l3QkIwQUJySWdna0FDQUlRUUEyQWt3Q1FDQUZLQUlBSWdrZ0NTZ0NBQ2dDQ0JFQUFDSUpJQWhCekFCcUVDSWdDVVlFUUNBQUlBTWdCU2dDQUNBR0tBSUFJQWNvQWdBUW54SU1BUXNnQ0VLQWdJQ0FnQUUzQWtRZ0NDQUlRU0JxSWdrMkFrQWdDU0FJS0FKTUVEa2dDRUZBYXlFTFFRQWhDUUpBQWtBRFFDQUpJQWdvQWt4UERRRWdBa0VBRUNJaERDQUlJQVVvQWdBaUNpQUpJQW9vQWdBb0Fnd1JBUUEyQWhRZ0NDQUdLQUlBSWdvZ0NTQUtLQUlBS0FJTUVRRUFOZ0lRSUFnZ0J5Z0NBQ0lLSUFrZ0NpZ0NBQ2dDREJFQkFEWUNEQ0FJUVJocUlnb2dBU0FNSUFNZ0JDQUphaUFJUVJScUlBaEJFR29nQ0VFTWFoQ2VFaUFLRUNzRVFDQUlRU0JxSUFoQkdHb1FHaEFrSUFsQkFXb2hDUXdCQ3dzZ0NFRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0NDQUxOZ0lBSUFnZ0NDZ0NRQ0FJUVNCcVJ6b0FCQ0FCSUFJZ0NCQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dDRUVnYWhBakN5QUlRZEFBYWlRQUM1WUdCQVIvQTMwRGZnTjhJd0JCUUdvaUJTUUFJQUVvQWdBaEJ5QUJLQUlFSVFZZ0FpQUNLQUlBS0FJSUVRQUFJUUVnQlNBSE5nSUlJQVVnQmlrQ0NEY0NGQ0FGSUFZb0FoQTJBaHdnQlNBR0tRSUFOd0lNSUFVZ0FUWUNJQUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUlSUVJBSUFCQkFEb0FCQXdCQ3lBRlFRaHFRUVJ5SVFZQ1FBSkFJQWdvQWdRaUNFSFFvQkpHQkVBZ0FoQmpJUXdnQXhCaklRMGdCQkJqSVE0Z0JVRUJPZ0E0SUFVZ0RDQU5JQXdnRFZVYklnd2dEaUFNSUE1VEd6Y0RNQ0FGUVRCcUVMSUJCRUFnQlVFb2FpQUhJQUVnQlVFd2FoQktLUU1BRVAwQkRBSUxJQVZCQWpvQUxBd0JDeUFJUWZDZkVrWUVRQ0FDRUR3aER5QURFRHdoRUNBRUVEd2hFU0FGUVFFNkFEZ2dCU0FSSUJBZ0R5QVBJQkJqR3lJUElBOGdFV1FiT1FNd0lBVkJNR29Rc2dFRVFDQUZRU2hxSUFjZ0JpQUJJQVZCTUdvUVNpc0RBQkJ6REFJTElBVkJBam9BTEF3QkN5QUlRYkNwRWtZRVFDQUNFRFFoQ1NBREVEUWhDaUFFRURRaEN5QUZRUUU2QURRZ0JTQUxJQW9nQ1NBSklBcGRHeUlKSUFrZ0MxNGJPQUl3SUFWQk1Hb1FLd1JBSUFWQktHb2dCeUFHSUFFZ0JVRXdhaEFhS2dJQUVHc01BZ3NnQlVFQ09nQXNEQUVMSUFoQmtLb1NSZ1JBSUFJUVlTRUNJQU1RWVNFRElBUVFZU0VFSUFWQkFUb0FOQ0FGSUFJZ0F5QUNJQU5LR3lJQ0lBUWdBaUFFU0JzMkFqQWdCVUV3YWhBckJFQWdCVUVvYWlBSElBRWdCVUV3YWhBYUtBSUFFTEVCREFJTElBVkJBam9BTEF3QkN5QUlRYUN6RWtZRVFDQUNFRmtoQWlBREVGa2hBeUFFRUZraEJDQUZRUUU2QURRZ0JTQUNJQU1nQWlBRFN4c2lBaUFFSUFJZ0JFa2JOZ0l3SUFWQk1Hb1FLd1JBSUFWQktHb2dCeUFCSUFWQk1Hb1FHaWdDQUJDdEFRd0NDeUFGUVFJNkFDd01BUXNnQ0VIUXFCSkhEUUVnQWhBL0lRa2dBeEEvSVFvZ0JCQS9JUXNnQlVFQk9nQTBJQVVnQ3lBS0lBa2dDU0FLWFJzaUNTQUpJQXRlR3pnQ01DQUZRVEJxRUNzRVFDQUZRU2hxSUFjZ0JpQUJJQVZCTUdvUUdpb0NBQkJ5REFFTElBVkJBam9BTEFzZ0FDQUZLUU1vTndJQURBRUxJQUJCQURvQUJBc2dCVUZBYXlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkNoRWd3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVLQVNJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUw2UUVEQTM4QmZRRjhJd0JCRUdzaUF5UUFJQUVvQWdRaEJTQUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQkVVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFRb0FnUWlCRUh3bnhKR0JFQWdBaEE4SVFjZ0EwRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWViRUhNTUFRc2dCRUd3cVJKR0JFQWdBaEEwSVFZZ0EwRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWFORUdzTUFRc2dCRUhRcUJKSERRRWdBaEEvSVFZZ0EwRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWFORUVZUWNnc2dBQ0FES1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQTBFUWFpUUFDOVVDQVFWL0l3QkIwQUJySWdja0FDQUhRUUEyQWt3Q1FDQUZLQUlBSWdnZ0NDZ0NBQ2dDQ0JFQUFDSUlJQWRCekFCcUVDSWdDRVlFUUNBQUlBTWdCU2dDQUNBR0tBSUFFS01TREFFTElBZENnSUNBZ0lBQk53SkVJQWNnQjBFZ2FpSUlOZ0pBSUFnZ0J5Z0NUQkE1SUFkQlFHc2hDa0VBSVFnQ1FBSkFBMEFnQ0NBSEtBSk1UdzBCSUFKQkFCQWlJUXNnQnlBRktBSUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSVVJQWNnQmlnQ0FDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ0VDQUhRUmhxSWdrZ0FTQUxJQU1nQkNBSWFpQUhRUlJxSUFkQkVHb1FvaElnQ1JBckJFQWdCMEVnYWlBSFFSaHFFQm9RSkNBSVFRRnFJUWdNQVFzTElBZEJHR29RUFJvZ0FFRUNPZ0FFREFFTElBY2dDallDQ0NBSElBY29Ba0FnQjBFZ2FrYzZBQXdnQVNBQ0lBZEJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFkQklHb1FJd3NnQjBIUUFHb2tBQXVyQlFRQ2ZBTi9BWDRDZlNNQVFSQnJJZ2NrQUNBQktBSUVJUWdnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnWkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUdLQUlFSWdaQjhKOFNSZ1JBSUFJUVBDRUVJQU1RUENFRklBZEJDR29nQVNBSUlBSWdBaWdDQUNnQ0NCRUFBQUo4SUFRZ0JhQWdCTDFDLy8vLy8vLy8vLy8vQUlOQ2dZQ0FnSUNBZ1BqL0FGUWdCYjFDLy8vLy8vLy8vLy8vQUlOQ2dJQ0FnSUNBZ1BqL0FGaHhSUTBBR2lBRnZTSUpRaUNJcHlJRFFZQ0F3UDhEYXlBSnB5SUlja1VFUUNBRUVLOE5EQUVMSUFOQkhuWkJBbkVpQmlBRXZTSUpRaitJcDNJaEFRSkFJQWxDSUlpblFmLy8vLzhIY1NJQ0lBbW5ja1VFUUFKQUFrQWdBVUVDYXc0Q0FBRURDMFFZTFVSVSt5RUpRQXdEQzBRWUxVUlUreUVKd0F3Q0MwUVlMVVJVK3lINVB5QUVwaUFEUWYvLy8vOEhjU0lESUFoeVJRMEJHZ0pBSUFOQmdJREEvd2RHQkVBZ0FrR0FnTUQvQjBjTkFTQUJRUU4wUWZEaERXb3JBd0FNQXd0RUdDMUVWUHNoK1Q4Z0JLWWdBa0dBZ01EL0IwY2dBMEdBZ0lBZ2FpQUNUM0ZGRFFJYUFud2dCZ1JBUkFBQUFBQUFBQUFBSUFKQmdJQ0FJR29nQTBrTkFSb0xJQVFnQmFPWkVLOE5DeUVFQWtBQ1FBSkFJQUVPQXdRQUFRSUxJQVNhREFRTFJCZ3RSRlQ3SVFsQUlBUkVCMXdVTXlhbW9ieWdvUXdEQ3lBRVJBZGNGRE1tcHFHOG9FUVlMVVJVK3lFSndLQU1BZ3NnQVVFRGRFR1E0ZzFxS3dNQUlRUUxJQVFMRUhNTUFRc2dCa0d3cVJKR0JFQWdBaEEwSVFvZ0F4QTBJUXNnQjBFSWFpQUJJQWdnQWlBQ0tBSUFLQUlJRVFBQUlBb2dDeENYRlJCckRBRUxJQVpCMEtnU1J3MEJJQUlRUHlFS0lBTVFQeUVMSUFkQkNHb2dBU0FJSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUtJQXNRbHhVUVJoQnlDeUFBSUFjcEF3ZzNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBSFFSQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVLVVNEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29RcEJJZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF1U0JRUUZmd0o4QVgwQmZpTUFRUkJySWdNa0FDQUJLQUlFSVFVZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ1JGQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FFS0FJRUlnUkI4SjhTUmdSQUlBSVFQQ0lJUkFBQUFBQUFBUEMvWlNBSVJBQUFBQUFBQVBBL1puSUVRQ0FCSUFOQjlMWUlFQlFpQkNBRkVGMGdCQkFQR2lBQkxRQUVCRUFnQVNBQ0lBSW9BZ0FvQWdnUkFBQVFrUUVoQVNBRFFRRTZBQVFnQXlBQk5nSUFEQU1MSUFOQkFqb0FCQXdDQ3lBRElBRWdCU0VISUFJZ0FpZ0NBQ2dDQ0JFQUFDRUdJQWk5SWd0Qy8vLy8vLy8vLy8vL0FJTy9JUWdDUUFKOElBdENOSWluUWY4UGNTSUJRZjBIVFFSQUlBRkIzd2RKRFFJZ0NDQUlvQ0lKSUFrZ0NLSkVBQUFBQUFBQThEOGdDS0dqb0F3QkN5QUlSQUFBQUFBQUFQQS9JQWlob3lJSUlBaWdDeEN4RFVRQUFBQUFBQURnUDZJaENBc2dCeUFHSUFpYUlBZ2dDMElBVXhzUWN3d0JDeUFFUWJDcEVrWUVRQ0FDRURRaUNrTUFBSUMvWHlBS1F3QUFnRDlnY2dSQUlBRWdBMEgwdGdnUUZDSUVJQVVRWFNBRUVBOGFJQUV0QUFRRVFDQUJJQUlnQWlnQ0FDZ0NDQkVBQUJDUkFTRUJJQU5CQVRvQUJDQURJQUUyQWdBTUF3c2dBMEVDT2dBRURBSUxJQU1nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FLRUpZVkVHc01BUXNnQkVIUXFCSkhEUUVnQWhBL0lRb0NRRU1BQUlDL0VFWWdDbUJGQkVCREFBQ0FQeEJHSUFwZlJRMEJDeUFCSUFOQjlMWUlFQlFpQkNBRkVGMGdCQkFQR2lBQkxRQUVCRUFnQVNBQ0lBSW9BZ0FvQWdnUkFBQVFrUUVoQVNBRFFRRTZBQVFnQXlBQk5nSUFEQUlMSUFOQkFqb0FCQXdCQ3lBRElBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0NoQ1dGUkJHRUhJTElBQWdBeWtEQURjQ0FBd0JDeUFBUVFBNkFBUUxJQU5CRUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRcHhJTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoQ21FaUFJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDKzhCQXdOL0FYMEJmQ01BUVJCcklnTWtBQ0FCS0FJRUlRVWdBU2dDQUNFQkFrQWdBaUFDS0FJQUtBSUlFUUFBSWdSRkJFQWdBRUVBT2dBRURBRUxBa0FDUUNBRUtBSUVJZ1JCOEo4U1JnUkFJQUlRUENFSElBTkJDR29nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FIRUs4TkVITU1BUXNnQkVHd3FSSkdCRUFnQWhBMElRWWdBMEVJYWlBQklBVWdBaUFDS0FJQUtBSUlFUUFBSUFZUW53b1Fhd3dCQ3lBRVFkQ29Fa2NOQVNBQ0VEOGhCaUFEUVFocUlBRWdCU0FDSUFJb0FnQW9BZ2dSQUFBZ0JoQ2ZDaEJHRUhJTElBQWdBeWtEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQU5CRUdva0FBdXlBZ0VGZnlNQVFkQUFheUlHSkFBZ0JrRUFOZ0pNQWtBZ0JTZ0NBQ0lISUFjb0FnQW9BZ2dSQUFBaUJ5QUdRY3dBYWhBaUlBZEdCRUFnQUNBRElBVW9BZ0FRcVJJTUFRc2dCa0tBZ0lDQWdBRTNBa1FnQmlBR1FTQnFJZ2MyQWtBZ0J5QUdLQUpNRURrZ0JrRkFheUVKUVFBaEJ3SkFBa0FEUUNBSElBWW9Ba3hQRFFFZ0FrRUFFQ0loQ2lBR0lBVW9BZ0FpQ0NBSElBZ29BZ0FvQWd3UkFRQTJBaFFnQmtFWWFpSUlJQUVnQ2lBRElBUWdCMm9nQmtFVWFoQ29FaUFJRUNzRVFDQUdRU0JxSUFaQkdHb1FHaEFrSUFkQkFXb2hCd3dCQ3dzZ0JrRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUpOZ0lJSUFZZ0JpZ0NRQ0FHUVNCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFZ2FoQWpDeUFHUWRBQWFpUUFDNTREQkFKOEJYOEJmUUYrSXdCQkVHc2lCU1FBSUFFb0FnUWhCeUFCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJrVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBWW9BZ1FpQmtId254SkdCRUFnQWhBOElRTWdCVUVJYWlBQklBY2hDU0FDSUFJb0FnQW9BZ2dSQUFBaENDQUR2U0lMUXYvLy8vLy8vLy8vL3dDRHZ5RURBa0FnQzBJMGlLZEIvdzl4SWdGQm1RaFBCRUFnQXhDbUNFVHZPZnIrUWk3bVA2QWhBd3dCQ3lBQlFZQUlUd1JBSUFNZ0E2QkVBQUFBQUFBQThEOGdBeUFEb2tRQUFBQUFBQUR3UDZDZklBT2dvNkFRcGdnaEF3d0JDeUFCUWVVSFNRMEFJQU1nQTZJaUJDQUVSQUFBQUFBQUFQQS9vSjlFQUFBQUFBQUE4RCtnb3lBRG9CQ3hEU0VEQ3lBSklBZ2dBNW9nQXlBTFFnQlRHeEJ6REFFTElBWkJzS2tTUmdSQUlBSVFOQ0VLSUFWQkNHb2dBU0FISUFJZ0FpZ0NBQ2dDQ0JFQUFDQUtFSmtWRUdzTUFRc2dCa0hRcUJKSERRRWdBaEEvSVFvZ0JVRUlhaUFCSUFjZ0FpQUNLQUlBS0FJSUVRQUFJQW9RbVJVUVJoQnlDeUFBSUFVcEF3ZzNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBRlFSQnFKQUFMV2dFRGZ5QUJJQUFvQWdoTEJFQWdBQ2dDQUNFQ0lBQWdBUkRDRFNBQUtBSUVJUU5CQUNFQkEwQWdBU0FEUmdSQUlBSVFpQVFGSUFGQkFuUWlCQ0FBS0FJQWFpQUNJQVJxS0FJQU5nSUFJQUZCQVdvaEFRd0JDd3NMQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCQ3NFZ3dCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRUtzU0lBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTHdBWUVCSHdEZndGOUFYNGpBRUVRYXlJSEpBQWdBU2dDQkNFSklBRW9BZ0FoQVFKQUlBSWdBaWdDQUNnQ0NCRUFBQ0lJUlFSQUlBQkJBRG9BQkF3QkN3SkFBa0FnQ0NnQ0JDSUlRZkNmRWtZRVFDQUNFRHdpQTBRQUFBQUFBQUR3djJNZ0EwUUFBQUFBQUFEd1AyUnlCRUFnQVNBSFFmMjNDQkFVSWdnZ0NSQmRJQWdRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0IwRUJPZ0FFSUFjZ0FUWUNBQXdEQ3lBSFFRSTZBQVFNQWdzZ0J5QUJJQWtnQWlBQ0tBSUFLQUlJRVFBQUFud2dBNzBpQzBJZ2lLZEIvLy8vL3dkeElnRkJnSURBL3dOUEJFQWdBMFFZTFVSVSt5SDVQNkpFQUFBQUFBQUFjRGlnSUF1bklBRkJnSURBL3dOcmNrVU5BUnBFQUFBQUFBQUFBQUFnQXlBRG9hTU1BUXNDUUNBQlFmLy8vLzREVFFSQUlBRkJnSUJBYWtHQWdJRHlBMGtOQVNBRElBTWdBNklRb3dpaUlBT2dEQUlMUkFBQUFBQUFBUEEvSUFPWm9VUUFBQUFBQUFEZ1A2SWlCWjhoQXlBRkVLTUlJUVlDZkNBQlFiUG12UDhEVHdSQVJCZ3RSRlQ3SWZrL0lBTWdCcUlnQTZBaUF5QURvRVFIWEJRekpxYVJ2S0NoREFFTFJCZ3RSRlQ3SWVrL0lBTzlRb0NBZ0lCd2c3OGlCQ0FFb0tFZ0F5QURvQ0FHb2tRSFhCUXpKcWFSUENBRklBUWdCS0toSUFNZ0JLQ2pJZ01nQTZDaG9hRkVHQzFFVlBzaDZUK2dDeUlEbWlBRElBdENBRk1iSVFNTElBTUxFSE1NQVFzZ0NFR3dxUkpHQkVBZ0FoQTBJZ3BEQUFDQXYxMGdDa01BQUlBL1huSUVRQ0FCSUFkQi9iY0lFQlFpQ0NBSkVGMGdDQkFQR2lBQkxRQUVCRUFnQVNBQ0lBSW9BZ0FvQWdnUkFBQVFrUUVoQVNBSFFRRTZBQVFnQnlBQk5nSUFEQU1MSUFkQkFqb0FCQXdDQ3lBSElBRWdDU0FDSUFJb0FnQW9BZ2dSQUFBZ0NoQ2FGUkJyREFFTElBaEIwS2dTUncwQklBSVFQeUVLQWtCREFBQ0F2eEJHSUFwZVJRUkFRd0FBZ0Q4UVJpQUtYVVVOQVFzZ0FTQUhRZjIzQ0JBVUlnZ2dDUkJkSUFnUUR4b2dBUzBBQkFSQUlBRWdBaUFDS0FJQUtBSUlFUUFBRUpFQklRRWdCMEVCT2dBRUlBY2dBVFlDQUF3Q0N5QUhRUUk2QUFRTUFRc2dCeUFCSUFrZ0FpQUNLQUlBS0FJSUVRQUFJQW9RbWhVUVJoQnlDeUFBSUFjcEF3QTNBZ0FNQVFzZ0FFRUFPZ0FFQ3lBSFFSQnFKQUFMc2dJQkJYOGpBRUhRQUdzaUJpUUFJQVpCQURZQ1RBSkFJQVVvQWdBaUJ5QUhLQUlBS0FJSUVRQUFJZ2NnQmtITUFHb1FJaUFIUmdSQUlBQWdBeUFGS0FJQUVLNFNEQUVMSUFaQ2dJQ0FnSUFCTndKRUlBWWdCa0VnYWlJSE5nSkFJQWNnQmlnQ1RCQTVJQVpCUUdzaENVRUFJUWNDUUFKQUEwQWdCeUFHS0FKTVR3MEJJQUpCQUJBaUlRb2dCaUFGS0FJQUlnZ2dCeUFJS0FJQUtBSU1FUUVBTmdJVUlBWkJHR29pQ0NBQklBb2dBeUFFSUFkcUlBWkJGR29RclJJZ0NCQXJCRUFnQmtFZ2FpQUdRUmhxRUJvUUpDQUhRUUZxSVFjTUFRc0xJQVpCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVlnQ1RZQ0NDQUdJQVlvQWtBZ0JrRWdha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJJR29RSXdzZ0JrSFFBR29rQUF2WkJBTURmd0Y4QVgwakFFRVFheUlESkFBZ0FTZ0NCQ0VGSUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUVSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCQ2dDQkNJRVFmQ2ZFa1lFUUNBQ0VEd2lCa1FBQUFBQUFBRHdQMk1FUUNBQklBTkJ2b3dIRUJRaUJDQUZFRjBnQkJBUEdpQUJMUUFFQkVBZ0FTQUNJQUlvQWdBb0FnZ1JBQUFRa1FFaEFTQURRUUU2QUFRZ0F5QUJOZ0lBREFNTElBTkJBam9BQkF3Q0N5QURJQUVnQlNBQ0lBSW9BZ0FvQWdnUkFBQUNmQ0FHdlVJMGlLZEIvdzl4SWdGQi93ZE5CRUFnQmtRQUFBQUFBQUR3djZBaUJpQUdJQWFpSUFZZ0JxQ2duNkFRc1EwTUFRc2dBVUdZQ0UwRVFDQUdJQWFnUkFBQUFBQUFBUEMvSUFZZ0JxSkVBQUFBQUFBQThMK2dueUFHb0tPZ0VLWUlEQUVMSUFZUXBnaEU3em42L2tJdTVqK2dDeEJ6REFFTElBUkJzS2tTUmdSQUlBSVFOQ0lIUXdBQWdEOWRCRUFnQVNBRFFiNk1CeEFVSWdRZ0JSQmRJQVFRRHhvZ0FTMEFCQVJBSUFFZ0FpQUNLQUlBS0FJSUVRQUFFSkVCSVFFZ0EwRUJPZ0FFSUFNZ0FUWUNBQXdEQ3lBRFFRSTZBQVFNQWdzZ0F5QUJJQVVnQWlBQ0tBSUFLQUlJRVFBQUlBY1FteFVRYXd3QkN5QUVRZENvRWtjTkFTQUNFRDhoQjBNQUFJQS9FRVlnQjE0RVFDQUJJQU5Cdm93SEVCUWlCQ0FGRUYwZ0JCQVBHaUFCTFFBRUJFQWdBU0FDSUFJb0FnQW9BZ2dSQUFBUWtRRWhBU0FEUVFFNkFBUWdBeUFCTmdJQURBSUxJQU5CQWpvQUJBd0JDeUFESUFFZ0JTQUNJQUlvQWdBb0FnZ1JBQUFnQnhDYkZSQkdFSElMSUFBZ0F5a0RBRGNDQUF3QkN5QUFRUUE2QUFRTElBTkJFR29rQUF1eUFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQVFzUklNQVFzZ0JrS0FnSUNBZ0FFM0FrUWdCaUFHUVNCcUlnYzJBa0FnQnlBR0tBSk1FRGtnQmtGQWF5RUpRUUFoQndKQUFrQURRQ0FISUFZb0FreFBEUUVnQWtFQUVDSWhDaUFHSUFVb0FnQWlDQ0FISUFnb0FnQW9BZ3dSQVFBMkFoUWdCa0VZYWlJSUlBRWdDaUFESUFRZ0Iyb2dCa0VVYWhDdkVpQUlFQ3NFUUNBR1FTQnFJQVpCR0dvUUdoQWtJQWRCQVdvaEJ3d0JDd3NnQmtFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQmlBSk5nSUlJQVlnQmlnQ1FDQUdRU0JxUnpvQURDQUJJQUlnQmtFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCa0VnYWhBakN5QUdRZEFBYWlRQUN6Y0JBWDhqQUVFUWF5SURKQUFnQWlnQ0FCRDhBaUVDSUFFb0FyUUdJUUVnQUNBQ05nSUVJQUFnQWlBQmNEWUNBQ0FEUVJCcUpBQUx0Z1lFQW53RGZ3RjlBWDRqQUVFUWF5SUZKQUFnQVNnQ0JDRUhJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJR1JRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JpZ0NCQ0lHUWZDZkVrWUVRQ0FDRUR3aUEwUUFBQUFBQUFEd3YyTWdBMFFBQUFBQUFBRHdQMlJ5QkVBZ0FTQUZRYm0zQ0JBVUlnWWdCeEJkSUFZUUR4b2dBUzBBQkFSQUlBRWdBaUFDS0FJQUtBSUlFUUFBRUpFQklRRWdCVUVCT2dBRUlBVWdBVFlDQUF3REN5QUZRUUk2QUFRTUFnc2dCU0FCSUFjZ0FpQUNLQUlBS0FJSUVRQUFBbndnQTcwaUNVSWdpS2RCLy8vLy93ZHhJZ0ZCZ0lEQS93TlBCRUJFQUFBQUFBQUFBQUJFR0MxRVZQc2hDVUFnQ1VJQVdSc2dDYWNnQVVHQWdNRC9BMnR5UlEwQkdrUUFBQUFBQUFBQUFDQURJQU9ob3d3QkN3SjhJQUZCLy8vLy9nTk5CRUJFR0MxRVZQc2grVDhnQVVHQmdJRGpBMGtOQVJwRUIxd1VNeWFta1R3Z0F5QURJQU9pRUtNSW9xRWdBNkZFR0MxRVZQc2grVCtnREFJTElBbENBRk1FUUVRWUxVUlUreUg1UHlBRFJBQUFBQUFBQVBBL29FUUFBQUFBQUFEZ1A2SWlBNThpQkNBRUlBTVFvd2lpUkFkY0ZETW1wcEc4b0tDaElnTWdBNkFNQWd0RUFBQUFBQUFBOEQ4Z0E2RkVBQUFBQUFBQTREK2lJZ09mSWdRZ0F4Q2pDS0lnQXlBRXZVS0FnSUNBY0lPL0lnTWdBNktoSUFRZ0E2Q2pvQ0FEb0NJRElBT2dDd3NRY3d3QkN5QUdRYkNwRWtZRVFDQUNFRFFpQ0VNQUFJQy9YU0FJUXdBQWdEOWVjZ1JBSUFFZ0JVRzV0d2dRRkNJR0lBY1FYU0FHRUE4YUlBRXRBQVFFUUNBQklBSWdBaWdDQUNnQ0NCRUFBQkNSQVNFQklBVkJBVG9BQkNBRklBRTJBZ0FNQXdzZ0JVRUNPZ0FFREFJTElBVWdBU0FISUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlFSndWRUdzTUFRc2dCa0hRcUJKSERRRWdBaEEvSVFnQ1FFTUFBSUMvRUVZZ0NGNUZCRUJEQUFDQVB4QkdJQWhkUlEwQkN5QUJJQVZCdWJjSUVCUWlCaUFIRUYwZ0JoQVBHaUFCTFFBRUJFQWdBU0FDSUFJb0FnQW9BZ2dSQUFBUWtRRWhBU0FGUVFFNkFBUWdCU0FCTmdJQURBSUxJQVZCQWpvQUJBd0JDeUFGSUFFZ0J5QUNJQUlvQWdBb0FnZ1JBQUFnQ0JDY0ZSQkdFSElMSUFBZ0JTa0RBRGNDQUF3QkN5QUFRUUE2QUFRTElBVkJFR29rQUF1eUFnRUZmeU1BUWRBQWF5SUdKQUFnQmtFQU5nSk1Ba0FnQlNnQ0FDSUhJQWNvQWdBb0FnZ1JBQUFpQnlBR1Fjd0FhaEFpSUFkR0JFQWdBQ0FESUFVb0FnQVFzeElNQVFzZ0JrS0FnSUNBZ0FFM0FrUWdCaUFHUVNCcUlnYzJBa0FnQnlBR0tBSk1FRGtnQmtGQWF5RUpRUUFoQndKQUFrQURRQ0FISUFZb0FreFBEUUVnQWtFQUVDSWhDaUFHSUFVb0FnQWlDQ0FISUFnb0FnQW9BZ3dSQVFBMkFoUWdCa0VZYWlJSUlBRWdDaUFESUFRZ0Iyb2dCa0VVYWhDeUVpQUlFQ3NFUUNBR1FTQnFJQVpCR0dvUUdoQWtJQWRCQVdvaEJ3d0JDd3NnQmtFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQmlBSk5nSUlJQVlnQmlnQ1FDQUdRU0JxUnpvQURDQUJJQUlnQmtFSWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCa0VnYWhBakN5QUdRZEFBYWlRQUM2d0RCQU4vQW40QmZRRjhJd0JCRUdzaUJDUUFJQUVvQWdRaEJTQUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQTBVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFNb0FnUWlBMEhRb0JKR0JFQWdBaEJqSVFZZ0JFRUlhaUFCSUFJZ0FpZ0NBQ2dDQ0JFQUFFS0FnSUNBZ0lDQWdJQi9JQVlnQmtJL2h5SUhoU0FIZlNBR1FvQ0FnSUNBZ0lDQWdIOVJHeEQ5QVF3QkN5QURRZkNmRWtZRVFDQUNFRHdoQ1NBRVFRaHFJQUVnQlNBQ0lBSW9BZ0FvQWdnUkFBQWdDWmtRY3d3QkN5QURRYkNwRWtZRVFDQUNFRFFoQ0NBRVFRaHFJQUVnQlNBQ0lBSW9BZ0FvQWdnUkFBQWdDSXNRYXd3QkN5QURRWkNxRWtZRVFDQUNFR0VoQXlBRVFRaHFJQUVnQWlBQ0tBSUFLQUlJRVFBQVFZQ0FnSUI0SUFNZ0EwRWZkU0lCY3lBQmF5QURRWUNBZ0lCNFJoc1FzUUVNQVFzZ0EwR2dzeEpHQkVBZ0FoQlpJUU1nQkVFSWFpQUJJQUlnQWlnQ0FDZ0NDQkVBQUNBREVLMEJEQUVMSUFOQjBLZ1NSdzBCSUFJUVA0c1FSaUVJSUFSQkNHb2dBU0FGSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlFSElMSUFBZ0JDa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBUkJFR29rQUF2VkFnRUZmeU1BUWRBQWF5SUhKQUFnQjBFQU5nSk1Ba0FnQlNnQ0FDSUlJQWdvQWdBb0FnZ1JBQUFpQ0NBSFFjd0FhaEFpSUFoR0JFQWdBQ0FESUFVb0FnQWdCaWdDQUJDMUVnd0JDeUFIUW9DQWdJQ0FBVGNDUkNBSElBZEJJR29pQ0RZQ1FDQUlJQWNvQWt3UU9TQUhRVUJySVFwQkFDRUlBa0FDUUFOQUlBZ2dCeWdDVEU4TkFTQUNRUUFRSWlFTElBY2dCU2dDQUNJSklBZ2dDU2dDQUNnQ0RCRUJBRFlDRkNBSElBWW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaEFnQjBFWWFpSUpJQUVnQ3lBRElBUWdDR29nQjBFVWFpQUhRUkJxRUxRU0lBa1FLd1JBSUFkQklHb2dCMEVZYWhBYUVDUWdDRUVCYWlFSURBRUxDeUFIUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFISUFvMkFnZ2dCeUFIS0FKQUlBZEJJR3BIT2dBTUlBRWdBaUFIUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUhRU0JxRUNNTElBZEIwQUJxSkFBTDBRTUNCSDhEZmlNQVFTQnJJZ1FrQUNBQktBSUlJUWNnQVNnQ0JDRUdJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJRlJRUkFJQUJCQURvQUJBd0JDd0pBSUFVb0FnUWlCVUhRb0JKR0JFQWdBaEJqSVFvZ0F4QmpJZ2xDd1AvLy93K0RVQVJBSUFvZ0NZaENmeUFKaGtKL2hVSS9JQWw5aGtLQWdJQ0FnSUNBZ0lCL2hFSUFJQXBDQUZNYmhDRUlDeUFFUVJCcUlBRWdCeWdDQUJCY0lBZ1EvUUVNQVFzQ1FBSkFJQVZCa0tvU1JnUkFJQUlRWVNFRklBTVFZU0lDUVNCUEJFQWdCRUVnRUY4Z0JFRVFhaUlEUWNYZENTQUVFRFVnQVNBRElBWVFYU0FERUE4YUlBUVFEeG9nQVMwQUJFVU5BaUFDUVI5eElRSUxRUUFoQXlBRVFSQnFJQUVnQnlnQ0FCQmNJQVVnQW5aQmZ5QUNkRUYvY3lBQ1FSOXpkRUdBZ0lDQWVISkJBQ0FGUVFCSUczSVFzUUVNQXdzZ0JVR2dzeEpHQkVBZ0FoQlpJUVVnQXhCWklnSkJJRThFUUNBRVFTQVFYeUFFUVJCcUlnTkJ4ZDBKSUFRUU5TQUJJQU1nQmhCZElBTVFEeG9nQkJBUEdpQUJMUUFFUlEwRElBSkJIM0VoQWdzZ0JFRVFhaUFCSUFjb0FnQVFYQ0FGSUFKMkVLMEJEQU1MSUFCQkFEb0FCQXdEQ3lBRVFRSTZBQlFNQVFzZ0JFRUNPZ0FVQ3lBQUlBUXBBeEEzQWdBTElBUkJJR29rQUF2VkFnRUZmeU1BUWRBQWF5SUhKQUFnQjBFQU5nSk1Ba0FnQlNnQ0FDSUlJQWdvQWdBb0FnZ1JBQUFpQ0NBSFFjd0FhaEFpSUFoR0JFQWdBQ0FESUFVb0FnQWdCaWdDQUJDM0Vnd0JDeUFIUW9DQWdJQ0FBVGNDUkNBSElBZEJJR29pQ0RZQ1FDQUlJQWNvQWt3UU9TQUhRVUJySVFwQkFDRUlBa0FDUUFOQUlBZ2dCeWdDVEU4TkFTQUNRUUFRSWlFTElBY2dCU2dDQUNJSklBZ2dDU2dDQUNnQ0RCRUJBRFlDRkNBSElBWW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaEFnQjBFWWFpSUpJQUVnQ3lBRElBUWdDR29nQjBFVWFpQUhRUkJxRUxZU0lBa1FLd1JBSUFkQklHb2dCMEVZYWhBYUVDUWdDRUVCYWlFSURBRUxDeUFIUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFISUFvMkFnZ2dCeUFIS0FKQUlBZEJJR3BIT2dBTUlBRWdBaUFIUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUhRU0JxRUNNTElBZEIwQUJxSkFBTGp3VUNCbjhFZmlNQVFTQnJJZ1FrQUNBQktBSUlJUWdnQVNnQ0JDRUdJQUVvQWdBaEFRSkFJQUlnQWlnQ0FDZ0NDQkVBQUNJRlJRUkFJQUJCQURvQUJBd0JDd0pBQWtBZ0JTZ0NCQ0lGUWRDZ0VrWUVRQ0FDRUdNaEN5QURFR01pQ2tJL1dBUkFRbjlDUHlBS2ZZWWlEQ0FMZ3lJTlVDQU1JQTFSY2cwQ0lBRWdCRUVRYWtHendBUVFGQ0lDSUFZUVhTQUNFQThhSUFFdEFBUU5BaUFFUVFJNkFCUU1Bd3NnQzFBRVFFSUFJUW9NQWdzZ0JFRVFhaUlDSUF0QnIrZ0dJQW9RN2dZZ0FTQUNJQVlRWFNBQ0VBOGFRZ0FoQ2lBQkxRQUVEUUVnQkVFQ09nQVVEQUlMQWtBQ1FDQUZRWkNxRWtZRVFBSkFJQUlRWVNJRklRa2dBeEJoSWdKQklFOEVRQ0FFUVNBUVh5QUVRUkJxSWdOQmpkNEpJQVFRTlNBQklBTWdCaEJkSUFNUUR4b2dCQkFQR2lBQkxRQUVSUTBESUFKQkgzRWhBZ3NnQ1VGL0lBSkJIM04wSWdOeElnZEZJQU1nQjBaeURRQWdBU0FFUVJCcVFiUEFCQkFVSWdNZ0JoQmRJQU1RRHhvZ0FTMEFCQTBBSUFSQkFqb0FGQXdGQ3lBRVFSQnFJQUVnQ0NnQ0FCQmNJQVVnQW5RUXNRRU1CQXNnQlVHZ3N4SkdCRUFnQWhCWklRVWdBeEJaSWdNaEFpQURRU0JQQkVBZ0JFRWdFRjhnQkVFUWFpSUNRWTNlQ1NBRUVEVWdBU0FDSUFZUVhTQUNFQThhSUFRUUR4b2dBUzBBQkVVTkF5QURRUjl4SVFJTEFrQWdBa1VnQlVFZ0lBSnJka1Z5RFFBZ0JFRVFhaUlISUFWQnIrZ0dJQU1RclF3Z0FTQUhJQVlRWFNBSEVBOGFJQUV0QUFRTkFDQUVRUUk2QUJRTUJRc2dCRUVRYWlBQklBZ29BZ0FRWENBRklBSjBFSzBCREFRTElBQkJBRG9BQkF3RUN5QUVRUUk2QUJRTUFnc2dCRUVDT2dBVURBRUxJQVJCRUdvZ0FTQUlLQUlBRUZ3Z0N5QUtoaEQ5QVFzZ0FDQUVLUU1RTndJQUN5QUVRU0JxSkFBTENnQWdBRUhZNkE4UVNBdlZBZ0VGZnlNQVFkQUFheUlISkFBZ0IwRUFOZ0pNQWtBZ0JTZ0NBQ0lJSUFnb0FnQW9BZ2dSQUFBaUNDQUhRY3dBYWhBaUlBaEdCRUFnQUNBRElBVW9BZ0FnQmlnQ0FCQzZFZ3dCQ3lBSFFvQ0FnSUNBQVRjQ1JDQUhJQWRCSUdvaUNEWUNRQ0FJSUFjb0Frd1FPU0FIUVVCcklRcEJBQ0VJQWtBQ1FBTkFJQWdnQnlnQ1RFOE5BU0FDUVFBUUlpRUxJQWNnQlNnQ0FDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ0ZDQUhJQVlvQWdBaUNTQUlJQWtvQWdBb0Fnd1JBUUEyQWhBZ0IwRVlhaUlKSUFFZ0N5QURJQVFnQ0dvZ0IwRVVhaUFIUVJCcUVMa1NJQWtRS3dSQUlBZEJJR29nQjBFWWFoQWFFQ1FnQ0VFQmFpRUlEQUVMQ3lBSFFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBSElBbzJBZ2dnQnlBSEtBSkFJQWRCSUdwSE9nQU1JQUVnQWlBSFFRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFIUVNCcUVDTUxJQWRCMEFCcUpBQUw3d0VDQkg4Q2ZpTUFRUkJySWdRa0FDQUJLQUlJSVFZZ0FTZ0NCQ0VISUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUZSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCU2dDQkNJRlFkQ2dFa1lFUUNBQ0VHTWhDQ0FERUdNaENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFnZ0NZVVEvUUVNQVFzZ0JVR1FxaEpHQkVBZ0FoQmhJUUlnQXhCaElRTWdCRUVJYWlBQklBWW9BZ0FRWENBQ0lBTnpFTEVCREFFTElBVkJvTE1TUncwQklBSVFXU0VDSUFNUVdTRURJQVJCQ0dvZ0FTQUdLQUlBRUZ3Z0FpQURjeEN0QVFzZ0FDQUVLUU1JTndJQURBRUxJQUJCQURvQUJBc2dCRUVRYWlRQUM5VUNBUVYvSXdCQjBBQnJJZ2NrQUNBSFFRQTJBa3dDUUNBRktBSUFJZ2dnQ0NnQ0FDZ0NDQkVBQUNJSUlBZEJ6QUJxRUNJZ0NFWUVRQ0FBSUFNZ0JTZ0NBQ0FHS0FJQUVMd1NEQUVMSUFkQ2dJQ0FnSUFCTndKRUlBY2dCMEVnYWlJSU5nSkFJQWdnQnlnQ1RCQTVJQWRCUUdzaENrRUFJUWdDUUFKQUEwQWdDQ0FIS0FKTVR3MEJJQUpCQUJBaUlRc2dCeUFGS0FJQUlna2dDQ0FKS0FJQUtBSU1FUUVBTmdJVUlBY2dCaWdDQUNJSklBZ2dDU2dDQUNnQ0RCRUJBRFlDRUNBSFFSaHFJZ2tnQVNBTElBTWdCQ0FJYWlBSFFSUnFJQWRCRUdvUXV4SWdDUkFyQkVBZ0IwRWdhaUFIUVJocUVCb1FKQ0FJUVFGcUlRZ01BUXNMSUFkQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFjZ0NqWUNDQ0FISUFjb0FrQWdCMEVnYWtjNkFBd2dBU0FDSUFkQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQWRCSUdvUUl3c2dCMEhRQUdva0FBdWZBZ0lFZndKK0l3QkJFR3NpQkNRQUlBRW9BZ2doQmlBQktBSUVJUWNnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnVkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUZLQUlFSWdWQjBLQVNSZ1JBSUFJUVl5RUlJQU1RWXlFSklBUkJDR29nQVNBR0tBSUFFRndnQ0NBSmhCRDlBUXdCQ3lBRlFaQ3FFa1lFUUNBQ0VHRWhBaUFERUdFaEF5QUVRUWhxSUFFZ0JpZ0NBQkJjSUFJZ0EzSVFzUUVNQVFzZ0JVR2dzeEpHQkVBZ0FoQlpJUUlnQXhCWklRTWdCRUVJYWlBQklBWW9BZ0FRWENBQ0lBTnlFSzBCREFFTElBVkIwS1VTUncwQklBSVErZ0VoQWlBREVQb0JJUU1nQkVFSWFpQUJJQVlvQWdBUVhDQUNJQU55RUlnQkN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxSQUVCZnlBQUlBQW9BZ0FvQW1BUkFBQWlBeWdDQkNBREtBSUFhMEVFUndSQVFlQ0tCMEhRcVFNZ0FpQUJFQUFBQ3lBQUlBQW9BZ0FvQW1BUkFBQW9BZ0FvQWdBTEtnRUJmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2pBRUVRYXlBQ0tBSU1OZ0lNSUFKQkVHb2tBQ0FCQ3pVQkFYOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSW9BZ3dpQUJDM0FTZ0NBQ0FBS0FJQWF5QUJiU0VBSUFKQkVHb2tBQ0FBQ3lvQkFYOGpBRUVRYXlJQ0pBQWdBaUFBTmdJTUlBSW9BZ3dnQVdvUStnSWhBQ0FDUVJCcUpBQWdBQXRBQVFGL0l3QkJFR3NpQXlRQUlBQW9BZ0FoQUNBRElBSTJBZ3dnQXlBQk5nSUlJQU1nQXlrRENEY0RBQ0FBUWZRQ2FrRVBJQU1RcVFjZ0EwRVFhaVFBQzR3QkFRUi9Jd0JCTUdzaUFpUUFJQUFvQWdBaEJTQUNRUmhxSWdRZ0FTQUNRUWhxSUFBb0FnUW9BZ0FvQWdRb0FnUVFGQ0lBRURVZ0FpQUNLQUljSUFJdEFDTWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nSXNJQUlnQWlnQ0dDQUVJQU1iTmdJb0lBSWdBaWtES0RjREFDQUZRZlFDYWtFUElBSVFxUWNnQkJBUEdpQUFFQThhSUFKQk1Hb2tBQXN3QVFGL0lBQW9BZ0FoQWlBQVFRQTJBZ0FnQWdSQUlBQXRBQWdFUUNBQ0lBRnFFRElhQ3lBQ0JFQWdBaEFmQ3dzTEtnSUJmZ0YvUVg4Z0FhMGdBbjRpQTZjZ0EwSWdpS2NiRUJVaEJDQUFJQUUyQWdnZ0FDQUVOZ0lBQ3o0QkFuOGpBRUVRYXlJREpBQWdBU2dDRkVFTVJnUkFJQU1nQVVFQUVEZzJBZ3dnQUNBQ2FpQURRUXhxRUtrQ1FRQkhJUVFMSUFOQkVHb2tBQ0FFQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRU0wU0RBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29ReGhJZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUFzeEFDQUJJQUFvQWlRZ0FDZ0NJQ0lBYTBFY2JVOEVRRUdIcWdsQjU3QURJQUpCbHVrRUVBQUFDeUFBSUFGQkhHeHFDOThCQVFKL0l3QkIwQUZySWd3a0FDQU1JQUkyQXNBQklBd2dBVFlDeUFFZ0RDQUZOZ0s0QVNBTUlBUTJBclFCSUF3Z0JqWUNzQUVqQUVFUWF5SUJKQUFnRENnQ3NBRWhBaUFNS0FLNEFTRUVJQXdvQXJRQklRVWdEQ2dDd0FFaEJpQU1LQUxJQVNFTklBRWdCeWtDQURjRENDQUFJQTBnQmlBRElBVWdCQ0FDSUFGQkNHb1Exd2tpQUNBTE5nSUVJQUFnQ2pZQ0FDQUJRUkJxSkFBZ0FDQUpOZ0lBSUF3b0FyQUJSUVJBSUF3Z0NFRWhRUUFnREVHZ0FXb1FIU0lCRUJjaUFrRVlha0h5cHdnUURob2dBaEFZSUFFUUhnc2dERUhRQVdva0FDQUFDMG9CQVg4Z0FFSUFOd0lBSUFNZ0FTQUJJQU5PR3lFQkEwQUNRQ0FCUVFCS0JFQWdBQ0FCSUFKMEVCVWlCRFlDQUNBRVJRMEJJQUFnQVRZQ0JBc1BDeUFCUVFGMklRRU1BQXNBQ3prQkFuOGdCQ0VGSUFBaEJpQUJJQVJQQkVCQmZ5QUJJQU4wSUFFZ0Frc2JFQlVoQmlBQklRVUxJQUFnQmpZQ2dBRWdBQ0FGTmdLSUFRczVBUUovSUFRaEJTQUFJUVlnQVNBRVR3UkFRWDhnQVNBRGRDQUJJQUpMR3hBVklRWWdBU0VGQ3lBQUlBWTJBb0FDSUFBZ0JUWUNpQUlMTVFFQ2Z5QUFLQUlJSVFJRFFDQUNCRUFnQWlnQ0FDRURJQUlnQVdvUUR4b2dBaEFmSUFNaEFnd0JDd3NnQUJDM0FndWZBZ0lFZndKK0l3QkJFR3NpQkNRQUlBRW9BZ2doQmlBQktBSUVJUWNnQVNnQ0FDRUJBa0FnQWlBQ0tBSUFLQUlJRVFBQUlnVkZCRUFnQUVFQU9nQUVEQUVMQWtBQ1FDQUZLQUlFSWdWQjBLQVNSZ1JBSUFJUVl5RUlJQU1RWXlFSklBUkJDR29nQVNBR0tBSUFFRndnQ0NBSmd4RDlBUXdCQ3lBRlFaQ3FFa1lFUUNBQ0VHRWhBaUFERUdFaEF5QUVRUWhxSUFFZ0JpZ0NBQkJjSUFJZ0EzRVFzUUVNQVFzZ0JVR2dzeEpHQkVBZ0FoQlpJUUlnQXhCWklRTWdCRUVJYWlBQklBWW9BZ0FRWENBQ0lBTnhFSzBCREFFTElBVkIwS1VTUncwQklBSVErZ0VoQWlBREVQb0JJUU1nQkVFSWFpQUJJQVlvQWdBUVhDQUNJQU54RUlnQkN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxXZ0VEZnlNQVFaQUJheUlFSkFBZ0JCQkpJZ05CQ0dvZ0FoQU9HaUFESUFFb0FnZ1FuZ1JCQ0dvaUJVSGE2UVlRRGhvZ0JTQUJLQUlNRU4wRElBVkJpK1lHRUE0YUlBQWdBMEVNYWhCQ0lBTVFVU0FFUVpBQmFpUUFDendCQW44akFFR1FBV3NpQkNRQUlBUVFTU0lEUVFocUlBSVFEaG9nQXlBQktBSUlFSjRFR2lBQUlBTkJER29RUWlBREVGRWdCRUdRQVdva0FBczRBUUYvSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FESUFFb0FnQTJBZ2dnQUNBRFFReHFJQU5CQ0dvUXVnOGhBQ0FEUVJCcUpBQWdBQXRYQVFKL0l3QkJJR3NpQWlRQVFSQVFGU0VESUFKQkFUWUNFQ0FDSUFKQkdHbzJBZ3dnQXlBQk5nSUFJQU1nQUNrQ0JEY0NCQ0FESUFBb0FndzJBZ3dnQWtFQU5nSUlJQUpCQ0dvUWl3RWdBa0VnYWlRQUlBTUxEd0FnQUNBQklBSkJoT0FBRUwwTUM0NEJBUVIvSXdCQm9BRnJJZ01rQUNBRFFSQnFFRWtpQkVFSWFpSUZJQUlRRGhvZ0FTZ0NIQ0lHQkVBZ0JDQUdFTFVMUVFocVFmVHREQkFPR2dzZ0F5QUJLQUlZSWdZZ0JpZ0NBQ2dDREJFQ0FDQUZJQU1RRWhvZ0JVSDA3UXdRRGhvZ0JDQUJLQUlnRUxZTEdpQURFQThhSUFWQmkrWUdFQTRhSUFBZ0JFRU1haEJDSUFRUVVTQURRYUFCYWlRQUMwWUJBbjhDUUNBQktBSUVJZ1FnQWtjTkFDQUJRUUFnQkNBQ1Joc2lBU2dDSENBQUtBSWNSdzBBSUFFb0FoZ2dBQ2dDR0VjTkFDQUJLQUlnSUFBb0FpQkdJUU1MSUFNTGlBSUJBWDhqQUVIQUFXc2lDeVFBSUFzZ0FqWUN1QUVnQ3lBQk5nSzhBU0FMSUFNMkFyUUJJQXNnQ2lBTFFiZ0JhaUFMUWJ3QmFpQUxRYlFCYWhDV0tUWUNvQUVnQzBJQU53TUFJQUFnQ3lnQ29BRWdDeWtEQUJDZEJDSUFJQWsyQWdRZ0FDQUlOZ0lBSUFBZ0J6WUNBQ0FBSUFzb0Fyd0JJZ0UyQWhnZ0FDQUxLQUs0QVRZQ0hDQUFJQXNvQXJRQklnSTJBaUFnQVNnQ0JFRzRyUkpHQkg4Z0N5QUZJQVpCRFNBTFFhQUJhaEFkSWdFUUZ5SUNRUmhxUWFuc0NCQU9HaUFDRUJnZ0FSQWVJQXNvQXJRQkJTQUNDMFVFUUNBTElBVWdCRUVOSUF0Qm9BRnFFQjBpQVJBWElnSkJHR3BCZ05JSUVBNGFJQUlRR0NBQkVCNExJQXRCd0FGcUpBQWdBQXR6QVFOL0l3QkJvQUZySWdNa0FDQURRUkJxRUVraUJFRUlhaUFDRUE0YUlBUWdBU2dDR0JDZUJFRUlhaUlGUWRycEJoQU9HaUFESUFFb0Fod2lBU0FCS0FJQUtBSU1FUUlBSUFVZ0F4QVNHaUFGUVl2bUJoQU9HaUFERUE4YUlBQWdCRUVNYWhCQ0lBUVFVU0FEUWFBQmFpUUFDemtCQW44Q1FDQUJLQUlFSWdRZ0FrY05BQ0FCUVFBZ0JDQUNSaHNpQVNnQ0dDQUFLQUlZUncwQUlBRW9BaHdnQUNnQ0hFWWhBd3NnQXd1aUFRRUJmeU1BUWNBQmF5SUlKQUFnQ0NBQ05nSzRBU0FJSUFFMkFyd0JJQWdnQnlBSVFid0JhaUlCSUFoQnVBRnFFTHNiTmdJSUlBQWdDQ2dDQ0NBQktBSUFFSXNKSWdBZ0JqWUNCQ0FBSUFVMkFnQWdBQ0FFTmdJQUlBQWdDQ2dDdUFFaUFUWUNIQ0FCUlFSQUlBaEJDR29nQTBFZlFRMGdDRUdvQVdvUUhTSUJFQmNpQWtFWWFrR2kwd2dRRGhvZ0FoQVlJQUVRSGdzZ0NFSEFBV29rQUNBQUN6d0JBbjhqQUVHUUFXc2lCQ1FBSUFRUVNTSURRUWhxSUFJUURob2dBeUFCS0FJWUVKNEVHaUFBSUFOQkRHb1FRaUFERUZFZ0JFR1FBV29rQUF0QUFRRi9Jd0JCc0FGcklnQWtBQ0FBUWVtTkJTQURRUTBnQUVHZ0FXb1FIU0lCRUJjaUJFRVlhaUFDRUE0YUlBUVFHQ0FCRUI0Z0FFR3dBV29rQUVFQUMzd0JBbjhqQUVFUWF5SUhKQUFnQnlBQ05nSUFJQWNnQVRZQ0NDTUFRUkJySWdFa0FDQUhLQUlBSVFJZ0J5Z0NDQ0VJSUFGQkFEb0FEQ0FCUWN5Y0lEWUNDQ0FBSUFnZ0FpQUJRUWhxRVA0cElnQWdCallDQkNBQUlBVTJBZ0FnQVVFUWFpUUFJQUFnQXpZQ05DQUFJQVEyQWdBZ0IwRVFhaVFBSUFBTFF3RUNmeUFBS0FJQUlnSW9BZ0FpQUNBQ0tBSUVRUUowYWlFREEwQWdBQ0FEUmdSQVFRQVBDeUFBS0FJQUlRSWdBRUVFYWlFQUlBSW9BZ1FnQVVjTkFBc2dBZ3RpQVFOL0l3QkJzQUZySWdRa0FDQUVRUkJxUWFXS0JTQURRUWdnQVNnQ0FDZ0NDQkFYSWdWQkdHb2lCaUFDRUE0YUlBWWdCQ0FCS0FJRUtBSUFLQUlFS0FJRUVCUWlBUkFTR2lBQkVBOGFJQVVRR0NBQVFnQTNBZ0FnQkVHd0FXb2tBQXRBQWdKL0FYNGdBeUVFSUFBaEJTQUJJQU5QQkVCQmZ5QUJyU0FDZmlJR3B5QUdRaUNJcHhzUUZTRUZJQUVoQkFzZ0FDQUZOZ0tnQWlBQUlBUTJBcWdDQzNrQkFYOGdBQ2dDQkNJREJFQWdBeWdDQUNBQkVGZEJBVUVCUWRXZUNFSFFwd05COEFBUVN3c2dBQ0FCRU0wRElnRkZCRUJCQUE4TEFuOGdBUVJBSUFFZ0FTZ0NCQ0FDUmcwQkdpQUFJQUVnQWhEaEJBdEJBQXNoQVNBQUtBSUFLQUlJSUFFUVYwRUJRUUZCb1pzSVFkQ25BMEgwQUJCTElBRUxqZ0VCQTM4Z0FCQWNJQUJCcUFGcUlnY2hDU0FIRUtvRElRZ2dBU2dDQUNFQklBSW9BZ0FoQWlBREtBSUFJUU1qQUVFUWF5SUFKQUFnQUNBQ05nSUlJQUFnQVRZQ0RDQUlJQUFvQWd3Z0FDZ0NDQkQ5RHlJQklBWTJBZ1FnQVNBRk5nSUFJQUVnQXpZQ0VDQUJJQVEyQWdBZ0FFRVFhaVFBSUFrZ0FTSUFFQ2dnQnlBSEtBSVlRUUZxTmdJWUlBQUxjQUlDZndGK0l3QkJJR3NpQXlRQUlBTkJDR29pQWlBQUlBQW9BZ0FvQWlRUkFnQWdBaER3Q3lNQVFSQnJJZ0FrQUNBQUlBTkJHR28yQWdnZ0FFRUlhaUFDUVg4Z0FpMEFDQ0lDSUFKQi93RkdHMEVDZENBQmFpZ0NBQkVXQUNFRUlBQkJFR29rQUNBRFFTQnFKQUFnQkF2RkFnRUdmeU1BUWNBQmF5SURKQUFnQVNnQ0FDRUVJQUFvQWd3aEJTQURRVEJxRUVraUIwRUlhaUlCUWVyd0NSQU9HaUFBS0FJSUlRWWdBQ2dDQkNFSUlBTkJBRG9BSENBRElBWWdBbW8yQWhnZ0EwRWdhaUlHSUFnZ0EwRVlha0VBRUlnUklBRWdCaEFTR2lBQkVPSUJHaUFHRUE4YUlBUW9BZ1FFUUNBQkVPSUJHaUFCSUFRb0FnUVFJUm9nQVVHaTBnRVFEaG9nQVVHYjZnWkIxZW9HSUFRb0FnUkJBVXNiRUE0YUlBRVE0Z0VhSUFOQkFEb0FGQ0FESUFRMkFoQWdCU0FISUFOQkVHb2dBQ2dDQkJDYkRBc2dCU2dDQkNJQkVCd2dBMEVnYWlJRklBZEJER29RUWlBRElBTW9BaVFnQXkwQUt5SUVJQVJCR0hSQkdIVkJBRWdpQkJzMkFnd2dBeUFES0FJZ0lBVWdCQnMyQWdnZ0FDZ0NFQ0VBSUFNZ0F5a0RDRGNEQUNBQlFjZ0NhaUFESUFBUTFRRWdCUkFQR2lBSEVGRWdBMEhBQVdva0FBczNBUUovSUFRaEJTQUFJUVlnQVNBRVR3UkFRWDhnQVNBRGRDQUJJQUpMR3hBVklRWWdBU0VGQ3lBQUlBWTJBaUFnQUNBRk5nSW9DNEVCQVFOL0l3QkJ3QUZySWdFa0FDQUJRVEJxRUVraUJFRUlhaUlDSUFGQklHcEI3UDRHRUJRaUJSQVNHaUFDUWZUdERCQU9HaUFDSUFGQkVHcEJ1djBHRUJRaUJoQVNHaUFDUWJYMENSQU9HaUFDSUFFZ0F4QVVJZ0lRRWhvZ0FoQVBHaUFHRUE4YUlBVVFEeG9nQUNBRVFReHFFRUlnQkJCUklBRkJ3QUZxSkFBTHlnRUJCWDhqQUVIZ0FXc2lBU1FBSUFGQjBBQnFFRWtoQkNBQlFVQnJJZ1VnQVNBQkVJRUdJQVJCQ0dvaUFpQUZFQklhSUFKQjlPME1FQTRhSUFGQk1Hb2lCaUFCSUFFUWdnWWdBaUFHRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUVnYWtIcy9nWVFGQ0lIRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUVRYWtHNi9RWVFGQ0lJRUJJYUlBSkJ0ZlFKRUE0YUlBSWdBU0FERUJRaUFoQVNHaUFDRUE4YUlBZ1FEeG9nQnhBUEdpQUdFQThhSUFVUUR4b2dBQ0FFUVF4cUVFSWdCQkJSSUFGQjRBRnFKQUFMMVFJQkJYOGpBRUhRQUdzaUJ5UUFJQWRCQURZQ1RBSkFJQVVvQWdBaUNDQUlLQUlBS0FJSUVRQUFJZ2dnQjBITUFHb1FJaUFJUmdSQUlBQWdBeUFGS0FJQUlBWW9BZ0FRNmhJTUFRc2dCMEtBZ0lDQWdBRTNBa1FnQnlBSFFTQnFJZ2cyQWtBZ0NDQUhLQUpNRURrZ0IwRkFheUVLUVFBaENBSkFBa0FEUUNBSUlBY29Ba3hQRFFFZ0FrRUFFQ0loQ3lBSElBVW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaFFnQnlBR0tBSUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSVFJQWRCR0dvaUNTQUJJQXNnQXlBRUlBaHFJQWRCRkdvZ0IwRVFhaERtRWlBSkVDc0VRQ0FIUVNCcUlBZEJHR29RR2hBa0lBaEJBV29oQ0F3QkN3c2dCMEVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCeUFLTmdJSUlBY2dCeWdDUUNBSFFTQnFSem9BRENBQklBSWdCMEVJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0IwRWdhaEFqQ3lBSFFkQUFhaVFBQzI0QkEzOGpBRUd3QVdzaUFTUUFJQUZCb0FGcUlnUWdBaER0QkNBQlFaQUJhaUlGSUFJUTdnUWdBUkJKSWdaQkNHb2lBaUFERUE0YUlBSWdCQkFTR2lBQ1FiRzlCUkFPR2lBQ0lBVVFFaG9nQUNBR1FReHFFRUlnQmhCUklBVVFEeG9nQkJBUEdpQUJRYkFCYWlRQUMwd0JBbjhqQUVHZ0FXc2lBU1FBSUFGQmtBRnFJZ1FnQWhEdUJDQUJFRWtpQWtFSWFpSUZJQU1RRGhvZ0JTQUVFQklhSUFBZ0FrRU1haEJDSUFJUVVTQUVFQThhSUFGQm9BRnFKQUFMblFFQkFYOGpBRUhBQVdzaURDUUFJQXdnQWpZQ3NBRWdEQ0FCTmdLNEFTQUFJQXdvQXJnQklBd29BckFCSUFNUXpRY2lBQ0FMTmdJRUlBQWdDallDQUNBQUlBUTJBaVFnQUNBSk5nSUFJQVFFZnlBRUJTQU1JQVZCSEVFQUlBeEJvQUZxRUIwaUFSQVhJZ0pCR0dvZ0NCQU9HaUFDRUJnZ0FSQWVJQUFvQWlRTEVGY2dBQ2dDQ0NBSFFRQWdCaUFGUVIwUVN5QU1RY0FCYWlRQUlBQUwvUUlFQkg4Q2ZRSitBbndqQUVFUWF5SUVKQUFnQVNnQ0NDRUdJQUVvQWdRaEJ5QUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQlVVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFVb0FnUWlCVUhRb0JKR0JFQWdBaEJqSVFvZ0F4QmpJUXNnQkVFSWFpQUJJQVlvQWdBUVhDQUtJQXRaRUlnQkRBRUxJQVZCOEo4U1JnUkFJQUlRUENFTUlBTVFQQ0VOSUFSQkNHb2dBU0FHS0FJQUVGd2dEQ0FOWmhDSUFRd0JDeUFGUWJDcEVrWUVRQ0FDRURRaENDQURFRFFoQ1NBRVFRaHFJQUVnQmlnQ0FCQmNJQWdnQ1dBUWlBRU1BUXNnQlVHUXFoSkdCRUFnQWhCaElRSWdBeEJoSVFNZ0JFRUlhaUFCSUFZb0FnQVFYQ0FDSUFOT0VJZ0JEQUVMSUFWQm9MTVNSZ1JBSUFJUVdTRUNJQU1RV1NFRElBUkJDR29nQVNBR0tBSUFFRndnQWlBRFR4Q0lBUXdCQ3lBRlFkQ29Fa2NOQVNBQ0VEOGhDQ0FERUQ4aENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFnZ0NXQVFpQUVMSUFBZ0JDa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBUkJFR29rQUFzdkFDTUFRWkFCYXlJQkpBQWdBUkJKSWdKQkNHb2dBeEFPR2lBQUlBSkJER29RUWlBQ0VGRWdBVUdRQVdva0FBdDZBUUovSXdCQm9BRnJJZ1FrQUNBRVFRaHFFRWtoQlNBRUlBRXBBZ0EzQTVnQklBVWdCRUdZQVdvUXRnUWlBVUVJYWtHenZRVVFEaG9nQVNBQ0VNSVJRUWhxSWdGQmsrY0pFQTRhSUFGQjg1b0pFQTRhSUFFZ0F4QU9HaUFCUWZPYUNSQU9HaUFBSUFWQkRHb1FRaUFGRUZFZ0JFR2dBV29rQUFzM0FRSi9JQVFoQlNBQUlRWWdBU0FFVHdSQVFYOGdBU0FEZENBQklBSkxHeEFWSVFZZ0FTRUZDeUFBSUFZMkFoQWdBQ0FGTmdJWUM1TUJBUVIvSXdCQm9BRnJJZ1VrQUNBRklBTTRBcEFCSUFVZ0FUZ0NtQUVnQlJCSklnWkJDR3BCODVvSkVBNGFJQVlnQlVHWUFXb1FoUWdpQ0VFSWFpSUhRZmZ3REJBT0dpQUhJQUlRRGhvZ0IwSDM4QXdRRGhvZ0NDQUZRWkFCYWhDRkNFRUlhaUlDUWNlS0NSQU9HaUFDSUFRUURob2dBa0h6bWdrUURob2dBQ0FHUVF4cUVFSWdCaEJSSUFWQm9BRnFKQUFMb1FFQ0FuOEJmU0FBRVB3RElRWWdBU2dDQUNFSElBSXFBZ0FoQ0NNQVFiQUJheUlDSkFBZ0JoQzVCaUlCSUFVMkFnUWdBU0FFTmdJQUlBRWdDRGdDRENBQklBYzJBZ2dnQVNBRE5nSUFJQWlMUXdBQWdIOWRSUVJBSUFKQmpLOERRU1pCQWlBQ1FhQUJhaEFkSWdZUUZ5SUhRUmhxUVliZUNCQU9HaUFIRUJnZ0JoQWVDeUFDUWJBQmFpUUFJQUFnQVJBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FCQzFZQkFuOGdBQkQ4QXlFR0lBRW9BZ0FoQnlBQ0tBSUFJUUlnQmhDNUJpSUJJQVUyQWdRZ0FTQUVOZ0lBSUFFZ0FqWUNEQ0FCSUFjMkFnZ2dBU0FETmdJQUlBQWdBUkFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJDeXNBSUFBZ0FUWUNBQ0FBUVRCcUVBOGFJQUJCSkdvUUR4b2dBRUVZYWhBUEdpQUFRUXhxRUE4YUlBQUxMZ0FnQUNBQk5nSUFJQUJCTkdvUWh3RWFJQUJCS0dvUWh3RWFJQUJCSEdvUWh3RWFJQUJCRUdvUUR4b2dBQXM1QUFOQUlBRWdBa1pGQkVBZ0FTQUJMQUFBSWdCQkFFNEVmeUFBUVFKMElBTnFLQUlBQlNBQUN6b0FBQ0FCUVFGcUlRRU1BUXNMSUFJTE9nQURRQ0FCSUFKR1JRUkFJQUVnQVNnQ0FDSUFRZjhBVFFSL0lBQkJBblFnQTJvb0FnQUZJQUFMTmdJQUlBRkJCR29oQVF3QkN3c2dBZ3VvQVFFRWZ5TUFRWUFDYXlJQUpBQWdBRUlsTndQNEFTQUFRZmdCYWlJSFFRRnlRZjcrQWlBRklBSVF1QUVRK2drUXdBRWhDQ0FBSUFRM0F3QWdBRUhnQVdvaUJpQUdRUmdnQ0NBSElBQVFvd01nQm1vaUNDQUNFTHdFSVFrZ0FFRVFhaUlISUFJUWZpQUdJQWtnQ0NBQVFTQnFJZ1lnQUVFY2FpQUFRUmhxSUFjUW1CUWdCeEJrSUFFZ0JpQUFLQUljSUFBb0FoZ2dBaUFERUk4R0lRRWdBRUdBQW1va0FDQUJDNmdCQVFOL0l3QkJvQUZySWdBa0FDQUFRaVUzQTVnQklBQkJtQUZxSWdaQkFYSkJ0cGNESUFVZ0FoQzRBUkQ2Q1JEQUFTRUhJQUFnQkRZQ0FDQUFRWXNCYWlJRUlBUkJEU0FISUFZZ0FCQ2pBeUFFYWlJSElBSVF2QVFoQ0NBQVFSQnFJZ1lnQWhCK0lBUWdDQ0FISUFCQklHb2lCQ0FBUVJ4cUlBQkJHR29nQmhDWUZDQUdFR1FnQVNBRUlBQW9BaHdnQUNnQ0dDQUNJQU1RandZaEFTQUFRYUFCYWlRQUlBRUxwd0VCQkg4akFFSHdBR3NpQUNRQUlBQkNKVGNEYUNBQVFlZ0FhaUlIUVFGeVFmNytBaUFGSUFJUXVBRVErZ2tRd0FFaENDQUFJQVEzQXdBZ0FFSFFBR29pQmlBR1FSZ2dDQ0FISUFBUW93TWdCbW9pQ0NBQ0VMd0VJUWtnQUVFUWFpSUhJQUlRZmlBR0lBa2dDQ0FBUVNCcUlnWWdBRUVjYWlBQVFSaHFJQWNRblJRZ0J4QmtJQUVnQmlBQUtBSWNJQUFvQWhnZ0FpQURFUDhGSVFFZ0FFSHdBR29rQUNBQkM2WUJBUU4vSXdCQjBBQnJJZ0FrQUNBQVFpVTNBMGdnQUVISUFHb2lCa0VCY2tHMmx3TWdCU0FDRUxnQkVQb0pFTUFCSVFjZ0FDQUVOZ0lBSUFCQk8yb2lCQ0FFUVEwZ0J5QUdJQUFRb3dNZ0JHb2lCeUFDRUx3RUlRZ2dBRUVRYWlJR0lBSVFmaUFFSUFnZ0J5QUFRU0JxSWdRZ0FFRWNhaUFBUVJocUlBWVFuUlFnQmhCa0lBRWdCQ0FBS0FJY0lBQW9BaGdnQWlBREVQOEZJUUVnQUVIUUFHb2tBQ0FCQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRUlFVERBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RK1JJZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUFzb0FDQUFJQUUyQWdBZ0FFRUVhaERyRkNBQVFnQTNBaGdnQUVJQU53SVFJQUJDQURjQ0NDQUFDMlFCQW44akFFRVFheUlDSkFBZ0FrRUJPZ0FNSUFJZ0FFTUFBQUFBbDBNQUFJQS9samdDQ0FKL0lBSkJDR29RR2lvQ0FDQUJsRU1BQUFBL2tvNGlBRU1BQUlCUFhTQUFRd0FBQUFCZ2NRUkFJQUNwREFFTFFRQUxJUU1nQWtFUWFpUUFJQU1MWXdFQ2Z5TUFRUkJySWdNa0FDQURRUUU2QUF3Z0F5QUFRd0FBZ0wrWFF3QUFnRCtXT0FJSUFuOGdBMEVJYWhBYUtnSUFJQUtVUXdBQUFEK1NqaUlBaTBNQUFBQlBYUVJBSUFDb0RBRUxRWUNBZ0lCNEN5RUVJQU5CRUdva0FDQUVJQUZ4Q3prQkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBQWdBbW9nQTBFTWFoRHNBU0lBQkg4Z0FDZ0NEQVZCQUFzaEFTQURRUkJxSkFBZ0FRdFlBUUYvSUFCQkFEWUNEQ0FBSUFNMkFoQWdBUVJBSUFFZ0JVOEVRQkQ3QVFBTElBRWdCR3dRRlNFR0N5QUFJQVkyQWdBZ0FDQUdJQUlnQkd4cUlnSTJBZ2dnQUNBR0lBRWdCR3hxTmdJTUlBQWdBallDQkNBQUMwTUJBWDhqQUVFZ2F5SUFKQUJCQ0JBVklRSWdBRUVCTmdJUUlBQWdBRUVZYWpZQ0RDQUNJQUUyQWdBZ0FFRUFOZ0lJSUFCQkNHb1Fpd0VnQUVFZ2FpUUFJQUlMUndFQmZ5TUFRUkJySWdVa0FBSkFJQUVvQWdBZ0JFWWlBUTBBSUFJb0FnQWlBa1VOQUNBRklBQkJCR29nQXhDNEFpQUNJQVVRbmdFZ0JSQVBHZ3NnQlVFUWFpUUFJQUVML1FJRUJIOENmUUorQW53akFFRVFheUlFSkFBZ0FTZ0NDQ0VHSUFFb0FnUWhCeUFCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUJVVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBVW9BZ1FpQlVIUW9CSkdCRUFnQWhCaklRb2dBeEJqSVFzZ0JFRUlhaUFCSUFZb0FnQVFYQ0FLSUF0WEVJZ0JEQUVMSUFWQjhKOFNSZ1JBSUFJUVBDRU1JQU1RUENFTklBUkJDR29nQVNBR0tBSUFFRndnRENBTlpSQ0lBUXdCQ3lBRlFiQ3BFa1lFUUNBQ0VEUWhDQ0FERURRaENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFnZ0NWOFFpQUVNQVFzZ0JVR1FxaEpHQkVBZ0FoQmhJUUlnQXhCaElRTWdCRUVJYWlBQklBWW9BZ0FRWENBQ0lBTk1FSWdCREFFTElBVkJvTE1TUmdSQUlBSVFXU0VDSUFNUVdTRURJQVJCQ0dvZ0FTQUdLQUlBRUZ3Z0FpQURUUkNJQVF3QkN5QUZRZENvRWtjTkFTQUNFRDhoQ0NBREVEOGhDU0FFUVFocUlBRWdCaWdDQUJCY0lBZ2dDVjhRaUFFTElBQWdCQ2tEQ0RjQ0FBd0JDeUFBUVFBNkFBUUxJQVJCRUdva0FBdGtBUUovSXdCQkVHc2lCQ1FBSUFJb0FnQWlBa1VnQVNnQ0FDSUJRY0VwYXlJRlFRUk5RUUJCQVNBRmRFRVpjUnR5UlFSQUlBUWdBRUVFYWlBREVMZ0NJQUlnQkJDZUFTQUVFQThhQ3lBRVFSQnFKQUFnQVVIRUtVWWdBVUY3Y1VIQktVWnlDME1BSUFJb0FnQWhBQ0FBUlNBQktBSUFJZ0ZCd1NscklnSkJCRTFCQUVFQklBSjBRUmx4RzNKRkJFQWdBQ0FERU5JQkN5QUJRY1FwUmlBQlFYdHhRY0VwUm5JTDNBRUJBbjhqQUVIQUFXc2lCeVFBQWtBQ1FBSkFBa0FnQUNBQklBSVFHeEFnSWdJdkFSNGlDRUUzYXc0RkFnRUJBUUlBQ3lBSVFjRUFSZzBCQ3lBSElBQkJjaUFCRUJBZ0J5QUdFQTRhSUFjb0Fyd0JJUUlnQnhBUkRBRUxBa0FnQUNBQ1FRQVFHeEFnSWdJRVFDQUNMd0VlUVNCR0RRRUxJQWNnQUVGeUlBRVFFQ0FISUFVUURob2dCeWdDdkFFaEFpQUhFQkVNQVFzZ0FDQUNRUUlRR3hBZ0lnZ0VRRUVBSVFJZ0NDOEJIaUFFUmcwQkN5QUhJQUJCY2lBQkVCQWdCeUFERUE0YUlBY29BcndCSVFJZ0J4QVJDeUFIUWNBQmFpUUFJQUlMN0FRREEzOEJmUUY4SXdCQlFHb2lDQ1FBSUFFb0FnUWhDU0FCS0FJQUlRRUNRQ0FDSUFJb0FnQW9BZ2dSQUFBaUNrVUVRQ0FBUVFBNkFBUU1BUXNDUUFKQUlBb29BZ1FpQ2tId254SkdCRUFnQWhBOElRd2dDRUVCT2dBNElBZ2dCemNETUNBSVFUQnFFR0lFUUNBQklBaEJJR29nQXhBVUlnRWdDUkQ4QVNBQkVBOGFJQWhCQWpvQURBd0NDeUFJUVNCcUlnb2dBU0FKSUF3Z0NFRXdhaEJLS3dNQUVOc0JJQW9RWWdSQUlBRWdDRUVRYWlBREVCUWlBU0FKRVB3QklBRVFEeG9nQ0VFQ09nQU1EQUlMSUFoQkNHb2dBU0FKSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlRU0JxRUVvckF3QVFjd3dCQ3lBS1FiQ3BFa1lFUUNBQ0VEUWhDeUFJUVFFNkFDUWdDQ0FHTmdJZ0lBaEJJR29RTUFSQUlBRWdDRUV3YWlBREVCUWlBU0FKRVB3QklBRVFEeG9nQ0VFQ09nQU1EQUlMSUFoQkVHb2lDaUFCSUFrZ0N5QUlRU0JxRUJvcUFnQVEyZ0VnQ2hBd0JFQWdBU0FJUVRCcUlBTVFGQ0lCSUFrUS9BRWdBUkFQR2lBSVFRSTZBQXdNQWdzZ0NFRUlhaUFCSUFrZ0FpQUNLQUlBS0FJSUVRQUFJQWhCRUdvUUdpb0NBQkJyREFFTElBcEIwS2dTUncwQklBSVFQeUVMSUFoQklHb2lDaUFCSUFrZ0JSQkdJQVFRUmhEc0NTQUtFREFFUUNBQklBaEJNR29nQXhBVUlnRWdDUkQ4QVNBQkVBOGFJQWhCQWpvQURBd0JDeUFJUVJCcUlnb2dBU0FKSUFzZ0NFRWdhaEFhS2dJQUVOa0JJQW9RTUFSQUlBRWdDRUV3YWlBREVCUWlBU0FKRVB3QklBRVFEeG9nQ0VFQ09nQU1EQUVMSUFoQkNHb2dBU0FKSUFJZ0FpZ0NBQ2dDQ0JFQUFDQUlRUkJxRUJvcUFnQVFjZ3NnQUNBSUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0NFRkFheVFBQzlBQkFRSi9Jd0JCSUdzaUJTUUFJQU1vQWdBaEJpQUJJQUlvQWdBaUF5Z0NBQkNsQmlFQ0lBRWdBeWdDQUJDMENDRUJBa0FDUUNBQ1JRMEFJQVZCQlRZQ0VDQUNJQVZCRUdvUXdBTWdBa0VFYWtZTkFDQUJCRUFnQlVHcUtUWUNBQ0FCSUFVUXdBTWlBaUFCUVFScVJ3MEJJQVZCcVNrMkFoeEJBU0VESUFFZ0JVRWNhaERBQXlBQ1J3MENDMEVBSVFNZ0JrVU5BU0FGUVJCcUlnRWdCU0FFRUJRaUFpQUFLQUlFRUlFQkVDMGdCaUFCRUo0QklBRVFEeG9nQWhBUEdnd0JDMEVCSVFNTElBVkJJR29rQUNBREMxd0JBMzhqQUVFZ2F5SUVKQUFDUUNBQktBSUFRWDV4UVFSR0lnVU5BQ0FDS0FJQUlnSkZEUUFnQkVFUWFpSUJJQVFnQXhBVUlnWWdBQ2dDQkJDQkFSQXRJQUlnQVJDZUFTQUJFQThhSUFZUUR4b0xJQVJCSUdva0FDQUZDNThCQVFSL0l3QkIwQUZySWdZa0FDQUFLQUlJS0FJRUtBSUFJUWtnQmtFUWFpSUhJQUFvQWdRaUNDZ0NBRUZ5SUFBb0Fnd1FFQ0FHSUFnb0FnQWdCU0FFSUFrZ0EwWWJFRGNnQnlBR0VCSWFJQWRCMEpZS0VBNGFJQWNnQ0NnQ0FFR0FBMnBCSENBQUtBSUlLQUlFS0FJQUVJOEJFQTRhSUFjZ0FoQU9HaUFISUFFUUVob2dCaWdDekFFaEFDQUdFQThhSUFjUUVTQUdRZEFCYWlRQUlBQUwxUUlCQlg4akFFSFFBR3NpQnlRQUlBZEJBRFlDVEFKQUlBVW9BZ0FpQ0NBSUtBSUFLQUlJRVFBQUlnZ2dCMEhNQUdvUUlpQUlSZ1JBSUFBZ0F5QUZLQUlBSUFZb0FnQVFrUk1NQVFzZ0IwS0FnSUNBZ0FFM0FrUWdCeUFIUVNCcUlnZzJBa0FnQ0NBSEtBSk1FRGtnQjBGQWF5RUtRUUFoQ0FKQUFrQURRQ0FJSUFjb0FreFBEUUVnQWtFQUVDSWhDeUFISUFVb0FnQWlDU0FJSUFrb0FnQW9BZ3dSQVFBMkFoUWdCeUFHS0FJQUlna2dDQ0FKS0FJQUtBSU1FUUVBTmdJUUlBZEJHR29pQ1NBQklBc2dBeUFFSUFocUlBZEJGR29nQjBFUWFoQ0pFeUFKRUNzRVFDQUhRU0JxSUFkQkdHb1FHaEFrSUFoQkFXb2hDQXdCQ3dzZ0IwRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0J5QUtOZ0lJSUFjZ0J5Z0NRQ0FIUVNCcVJ6b0FEQ0FCSUFJZ0IwRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQjBFZ2FoQWpDeUFIUWRBQWFpUUFDNlFFQVFkL0l3QkJ3QU5ySWdva0FBSkFBa0FnQUNnQ0FDZ0NBQ2dDQUJCSFJRMEFJQVFROXdFaURFRUJSaUFNUWYvLy8vOEhSbkpGQkVBZ0NrR0FBbW9pQ3lBQUtBSUFRWElnQkJBUUlBcEI4QUZxSWcwZ0FDZ0NBQ0FKRURjZ0N5QU5FQklhSUFwQjRBRnFJZzRnQUNnQ0FDZ0NBQ2dDQUJDQkFpQUxJQTRRRWhvZ0N5QUlFQTRhSUFwQjBBRnFJZzhnQUNBQklBSWdBeUFFUWYvLy8vOEhFSW9CSUFzZ0R4QVNHaUFMUWZmd0RCQU9HaUFLUWNBQmFpSUJJQUFnQkJDQUFpQUxJQUVRRWhvZ0NpZ0N2QU1oRENBQkVBOGFJQThRRHhvZ0RoQVBHaUFORUE4YUlBc1FFUXdDQ3lBQVFTaHFJUXNnQUNnQ0pDRU1BMEFnQ3lBTVJnMEJJQXdvQWhBaUVBUkFJQXBCZ0FKcUlnc2dBQ2dDQUVGeUlBUVFFQ0FLUWZBQmFpSU5JQUFvQWdBZ0J4QTNJQXNnRFJBU0dpQUtRZUFCYWlJT0lBQW9BZ0FvQWdBb0FnQVFnUUlnQ3lBT0VCSWFJQXNnQmhBT0dpQUtRZEFCYWlJUElBQWdBU0FDSUFNZ0JDQVFFSW9CSUFzZ0R4QVNHaUFLS0FLOEF5RU1JQThRRHhvZ0RoQVBHaUFORUE4YUlBc1FFUXdEQlNBTUVFd2hEQXdCQ3dBTEFBdEJBQ0VNSUFBb0FoQU5BQ0FLSUFRb0FpZzJBdUFCSUFCQkJHb2dDa0hnQVdvUW1RRWhBeUFLUVFBMkF2UUJJQW9nQlRZQzhBRWdDaUFBTmdMUUFTQUtRUWhxSWdzZ0NrSHdBV29nQ2tIUUFXb2dBU0FDSUFRUS93RWdBeUFLUVlBQ2FpQUxFUDRCSWdBUWt3RWdBQkFXSUFzUTZBRUxJQXBCd0FOcUpBQWdEQXV6QlFFSGZ5TUFRY0FEYXlJSkpBQUNRQUpBSUFBb0FnQW9BZ0FvQWdBUVIwVU5BQ0FCS0FJRUtBSUFJUXNnQkJEM0FTSUtRUUZHSUFwQi8vLy8vd2RHY2tVRVFDQUxRUUVRNGdNaENpQUpRWUFDYWlJSUlBQW9BZ0JCY2lBRUVCQWdDVUh3QVdvaURTQUFLQUlBSUFvUU55QUlJQTBRRWhvZ0NVSGdBV29pRENBQUtBSUFLQUlBS0FJQUVJRUNJQWdnREJBU0dpQUlRWW1XQ2hBT0dpQUlJQUFvQWdCQmdBTnFRUndnQ3hDUEFSQU9HaUFJUWN2SERCQU9HaUFKUWRBQmFpSUxJQUFnQVNBQ0lBTWdCRUgvLy8vL0J4Q0tBU0FJSUFzUUVob2dDRUgzOEF3UURob2dDVUhBQVdvaUFTQUFJQVFRZ0FJZ0NDQUJFQklhSUFrb0Fyd0RJUW9nQVJBUEdpQUxFQThhSUF3UUR4b2dEUkFQR2lBSUVCRU1BZ3NnQUVFb2FpRU1JQUFvQWlRaENnTkFJQW9nREVZTkFVRUJJUWdnQ2lnQ0VDSU5RWk1wYTBFQ1NTQU5RZlFwYTBFQ1NYSWdEVUVGUm5JaENDQUlJQUFvQWdBb0FnQW9BZ0FRUjBWeUJFQWdDaEJNSVFvTUFRVWdDMEVBRU9JRElRb2dDVUdBQW1vaUNDQUFLQUlBUVhJZ0JCQVFJQWxCOEFGcUlnd2dBQ2dDQUNBS0VEY2dDQ0FNRUJJYUlBbEI0QUZxSWc0Z0FDZ0NBQ2dDQUNnQ0FCQ0JBaUFJSUE0UUVob2dDRUdKbGdvUURob2dDQ0FBS0FJQVFZQURha0VjSUFzUWp3RVFEaG9nQ0NBSEVBNGFJQWdnQmhBT0dpQUpRZEFCYWlJTElBQWdBU0FDSUFNZ0JDQU5FSW9CSUFnZ0N4QVNHaUFKS0FLOEF5RUtJQXNRRHhvZ0RoQVBHaUFNRUE4YUlBZ1FFUXdEQ3dBTEFBdEJBQ0VLSUFBb0FoQU5BQ0FKSUFRb0FpZzJBdUFCSUFCQkJHb2dDVUhnQVdvUW1RRWhBeUFKUVFBMkF2UUJJQWtnQlRZQzhBRWdDU0FBTmdMUUFTQUpRUWhxSWdnZ0NVSHdBV29nQ1VIUUFXb2dBU0FDSUFRUS93RWdBeUFKUVlBQ2FpQUlFUDRCSWdBUWt3RWdBQkFXSUFnUTZBRUxJQWxCd0FOcUpBQWdDZ3VuQkFFSGZ5TUFRY0FEYXlJS0pBQUNRQUpBSUFBb0FnQW9BZ0FvQWdBUVIwVU5BQ0FFRVBjQklneEJBVVlnREVILy8vLy9CMFp5UlFSQUlBcEJnQUpxSWdzZ0FDZ0NBRUZ5SUFRUUVDQUtRZkFCYWlJTklBQW9BZ0FnQ1JBM0lBc2dEUkFTR2lBS1FlQUJhaUlPSUFBb0FnQW9BZ0FvQWdBUWdRSWdDeUFPRUJJYUlBc2dDQkFPR2lBS1FkQUJhaUlQSUFBZ0FTQUNJQU1nQkVILy8vLy9CeENLQVNBTElBOFFFaG9nQzBIMzhBd1FEaG9nQ2tIQUFXb2lBU0FBSUFRUWdBSWdDeUFCRUJJYUlBb29BcndESVF3Z0FSQVBHaUFQRUE4YUlBNFFEeG9nRFJBUEdpQUxFQkVNQWdzZ0FFRW9haUVMSUFBb0FpUWhEQU5BSUFzZ0RFWU5BU0FNS0FJUUloQkJCRWNFUUNBS1FZQUNhaUlMSUFBb0FnQkJjaUFFRUJBZ0NrSHdBV29pRFNBQUtBSUFJQWNRTnlBTElBMFFFaG9nQ2tIZ0FXb2lEaUFBS0FJQUtBSUFLQUlBRUlFQ0lBc2dEaEFTR2lBTElBWVFEaG9nQ2tIUUFXb2lEeUFBSUFFZ0FpQURJQVFnRUJDS0FTQUxJQThRRWhvZ0NpZ0N2QU1oRENBUEVBOGFJQTRRRHhvZ0RSQVBHaUFMRUJFTUF3VWdEQkJNSVF3TUFRc0FDd0FMUVFBaERDQUFLQUlRRFFBZ0NpQUVLQUlvTmdMZ0FTQUFRUVJxSUFwQjRBRnFFSmtCSVFNZ0NrRUFOZ0wwQVNBS0lBVTJBdkFCSUFvZ0FEWUMwQUVnQ2tFSWFpSUxJQXBCOEFGcUlBcEIwQUZxSUFFZ0FpQUVFUDhCSUFNZ0NrR0FBbW9nQ3hEK0FTSUFFSk1CSUFBUUZpQUxFT2dCQ3lBS1FjQURhaVFBSUF3TFVBRUJmd0pBQWtBZ0FFRWFTdzBBUVFFZ0FIUWdCSEZGQkVBZ0FFRVRSZzBDSUFCQkdrY05BVUdLdGdsQno1Y0NJQU1nQVJBQUFBdEJBU0VGQ3lBRkR3dEJ0N1lKUWMrWEFpQUNJQUVRQUFBTE5BRUNmeU1BUVJCcklnSWtBQ0FBTFFBSkJFQWdBQ2dDQkNFRElBSWdBQzBBQ0RvQUNDQURJQUVRRGhvTElBSkJFR29rQUFzNUFRSi9JQUFvQWdRaEF5QUFLQUlJSVFJRFFDQUNJQU5IQkVBZ0FDQUNJQUZySWdJMkFnZ01BUXNMSUFBb0FnQWlBQVJBSUFBUUh3c0xYZ0VFZnlNQVFhQUJheUlFSkFBZ0JFRVlhaERPQVNJRklBTVFEaUVISUFSQkNHb2lCaUFCS0FJVUlnRWdBU2dDQUNnQ0RCRUNBQ0FISUFZUUVpQUNFQTRhSUFZUUR4b2dBQ0FGUVFScUVFSWdCUkM3QVJvZ0JFR2dBV29rQUF2OUFnUUVmd0o5QW40Q2ZDTUFRUkJySWdRa0FDQUJLQUlJSVFZZ0FTZ0NCQ0VISUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUZSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCU2dDQkNJRlFkQ2dFa1lFUUNBQ0VHTWhDaUFERUdNaEN5QUVRUWhxSUFFZ0JpZ0NBQkJjSUFvZ0MxVVFpQUVNQVFzZ0JVSHdueEpHQkVBZ0FoQThJUXdnQXhBOElRMGdCRUVJYWlBQklBWW9BZ0FRWENBTUlBMWtFSWdCREFFTElBVkJzS2tTUmdSQUlBSVFOQ0VJSUFNUU5DRUpJQVJCQ0dvZ0FTQUdLQUlBRUZ3Z0NDQUpYaENJQVF3QkN5QUZRWkNxRWtZRVFDQUNFR0VoQWlBREVHRWhBeUFFUVFocUlBRWdCaWdDQUJCY0lBSWdBMG9RaUFFTUFRc2dCVUdnc3hKR0JFQWdBaEJaSVFJZ0F4QlpJUU1nQkVFSWFpQUJJQVlvQWdBUVhDQUNJQU5MRUlnQkRBRUxJQVZCMEtnU1J3MEJJQUlRUHlFSUlBTVFQeUVKSUFSQkNHb2dBU0FHS0FJQUVGd2dDQ0FKWGhDSUFRc2dBQ0FFS1FNSU53SUFEQUVMSUFCQkFEb0FCQXNnQkVFUWFpUUFDM0FDQW44QmZTTUFRU0JySWdNa0FDQURRUWhxSWdJZ0FDQUFLQUlBS0FJa0VRSUFJQUlROEFzakFFRVFheUlBSkFBZ0FDQURRUmhxTmdJSUlBQkJDR29nQWtGL0lBSXRBQWdpQWlBQ1FmOEJSaHRCQW5RZ0FXb29BZ0FSRkFBaEJDQUFRUkJxSkFBZ0EwRWdhaVFBSUFRTFJBRUJmMEVCSVFJZ0FFSENBa1lnQUVFVGF5QUJTWElnQUVISEFrWWdBRUg0SWtaeWNpQUFRYUVwUmlBQVFkMHBSbklnQUVIdUtVWnlja1VFUUVFQUlRSUxJQUlMMVFJQkJYOGpBRUhRQUdzaUJ5UUFJQWRCQURZQ1RBSkFJQVVvQWdBaUNDQUlLQUlBS0FJSUVRQUFJZ2dnQjBITUFHb1FJaUFJUmdSQUlBQWdBeUFGS0FJQUlBWW9BZ0FRbGhNTUFRc2dCMEtBZ0lDQWdBRTNBa1FnQnlBSFFTQnFJZ2cyQWtBZ0NDQUhLQUpNRURrZ0IwRkFheUVLUVFBaENBSkFBa0FEUUNBSUlBY29Ba3hQRFFFZ0FrRUFFQ0loQ3lBSElBVW9BZ0FpQ1NBSUlBa29BZ0FvQWd3UkFRQTJBaFFnQnlBR0tBSUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSVFJQWRCR0dvaUNTQUJJQXNnQXlBRUlBaHFJQWRCRkdvZ0IwRVFhaENVRXlBSkVDc0VRQ0FIUVNCcUlBZEJHR29RR2hBa0lBaEJBV29oQ0F3QkN3c2dCMEVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCeUFLTmdJSUlBY2dCeWdDUUNBSFFTQnFSem9BRENBQklBSWdCMEVJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0IwRWdhaEFqQ3lBSFFkQUFhaVFBQzBNQUlBQWdBZ0ovUVFBZ0EwVU5BQm9nQVVFSWRTSUNJQUZCQVhGRkRRQWFJQU1vQWdBZ0FoRFZEQXNnQTJvZ0JFRUNJQUZCQW5FYklBQW9BZ0FvQWh3UkJnQUwvUUlFQkg4Q2ZRSitBbndqQUVFUWF5SUVKQUFnQVNnQ0NDRUdJQUVvQWdRaEJ5QUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQlVVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFVb0FnUWlCVUhRb0JKR0JFQWdBaEJqSVFvZ0F4QmpJUXNnQkVFSWFpQUJJQVlvQWdBUVhDQUtJQXRURUlnQkRBRUxJQVZCOEo4U1JnUkFJQUlRUENFTUlBTVFQQ0VOSUFSQkNHb2dBU0FHS0FJQUVGd2dEQ0FOWXhDSUFRd0JDeUFGUWJDcEVrWUVRQ0FDRURRaENDQURFRFFoQ1NBRVFRaHFJQUVnQmlnQ0FCQmNJQWdnQ1YwUWlBRU1BUXNnQlVHUXFoSkdCRUFnQWhCaElRSWdBeEJoSVFNZ0JFRUlhaUFCSUFZb0FnQVFYQ0FDSUFOSUVJZ0JEQUVMSUFWQm9MTVNSZ1JBSUFJUVdTRUNJQU1RV1NFRElBUkJDR29nQVNBR0tBSUFFRndnQWlBRFNSQ0lBUXdCQ3lBRlFkQ29Fa2NOQVNBQ0VEOGhDQ0FERUQ4aENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFnZ0NWMFFpQUVMSUFBZ0JDa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBUkJFR29rQUF1N0FnRUVmeU1BUVVCcUlnSWtBQ0FBS0FJQUlnTkJCR3NvQWdBaEJDQURRUWhyS0FJQUlRVWdBa0lBTndJY0lBSkNBRGNDSkNBQ1FnQTNBaXdnQWtJQU53STBRUUFoQXlBQ1FRQTJBRHNnQWtJQU53SVVJQUpCZ09NUE5nSVFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FDQUZhaUVBQWtBZ0JDQUJRUUFRb0FNRVFDQUNRUUUyQWpnZ0JDQUNRUWhxSUFBZ0FFRUJRUUFnQkNnQ0FDZ0NGQkVLQUNBQVFRQWdBaWdDSUVFQlJoc2hBd3dCQ3lBRUlBSkJDR29nQUVFQlFRQWdCQ2dDQUNnQ0dCRUlBQUpBQWtBZ0FpZ0NMQTRDQUFFQ0N5QUNLQUljUVFBZ0FpZ0NLRUVCUmh0QkFDQUNLQUlrUVFGR0cwRUFJQUlvQWpCQkFVWWJJUU1NQVFzZ0FpZ0NJRUVCUndSQUlBSW9BakFOQVNBQ0tBSWtRUUZIRFFFZ0FpZ0NLRUVCUncwQkN5QUNLQUlZSVFNTElBSkJRR3NrQUNBREM1OENBZ0YrQW44Z0FBSi9JQUlnQVdzaUJVRVRUQVJBUVQwZ0JVSEFBQ0FEUWdHRWVhZHJRZEVKYkVFTWRTSUdJQVpCQTNSQm9PRVBhaWtEQUNBRFdHcElEUUVhQ3dKL0lBTkMvOEhYTDFnRVFDQUJJQU9uRU53TURBRUxJQU5DLy8rRC9xYmU0UkZZQkVBZ0FTQURRb0RDMXkrQUlnU25FTndNSUFSQ2dMNm8wQTkrSUFOOHB5SUJRWkRPQUc0aUFoQzRCQ0FDUWZDeGYyd2dBV29RdUFRTUFRc2dBU0FEUW9DQWhQNm0zdUVSZ0NJRXB4RGJEQ0FFUW9DQS9JSFpvWjV1ZmlBRGZDSURRb0RDMXkrQUlnU25JZ0ZCa000QWJpSUNFTGdFSUFKQjhMRi9iQ0FCYWhDNEJDQUVRb0MrcU5BUGZpQURmS2NpQVVHUXpnQnVJZ0lRdUFRZ0FrSHdzWDlzSUFGcUVMZ0VDeUVDUVFBTE5nSUVJQUFnQWpZQ0FBdVpBUUVDZnlBQUFuOGdBaUFCYXlJRVFRbE1CRUJCUFNBRVFTQWdBMEVCY21kclFkRUpiRUVNZFNJRklBVkJBblJCOE9BUGFpZ0NBQ0FEVFdwSURRRWFDd0ovSUFOQi84SFhMMDBFUUNBQklBTVEzQXdNQVFzZ0FTQURRWURDMXk5dUlnRVFvQk1nQVVHQXZxaFFiQ0FEYWlJQlFaRE9BRzRpQWhDNEJDQUNRZkN4ZjJ3Z0FXb1F1QVFMSVFKQkFBczJBZ1FnQUNBQ05nSUFDNG9DQVFSL0l3QkJFR3NpQ0NRQUlBSkI3di8vL3dNZ0FXdE5CRUFnQUJDUEFpRUpRZS8vLy84RElRb2dBVUhtLy8vL0FVMEVRQ0FJSUFGQkFYUTJBZ2dnQ0NBQklBSnFOZ0lNSUFoQkRHb2dDRUVJYWhDSkJTZ0NBQkNMQjBFQmFpRUtDeUFLRUpNR0lRSWdCQVJBSUFJZ0NTQUVFTUlFQ3lBR0JFQWdBaUFFUVFKMGFpQUhJQVlRd2dRTElBTWdCQ0FGYWlJTGF5RUhJQU1nQzBjRVFDQUNJQVJCQW5RaUEyb2dCa0VDZEdvZ0F5QUphaUFGUVFKMGFpQUhFTUlFQ3lBQlFRRnFJZ0ZCQWtjRVFDQUpJQUVRL0FrTElBQWdBaENaQWlBQUlBb1FpZ2NnQUNBRUlBWnFJQWRxSWdBUWh3UWdBaUFBUVFKMGFrRUFFSmtDSUFoQkVHb2tBQThMRUxnREFBdVJBUUVCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ2dnQTBGL05nSU1JQUpCZjBZZ0FCQTdJZ0pCQUVseVJRUkFJQU1nQWpZQ0FDQURJQU5CREdvZ0F4Q0lCU2dDQURZQ0JBSkFJQUFRZXlBQklBTkJCR29nQTBFSWFoQ0lCU2dDQUJETEN5SUFEUUJCZnlFQUlBTW9BZ1FpQVNBREtBSUlJZ0pKRFFBZ0FTQUNTeUVBQ3lBRFFSQnFKQUFnQUE4TEVOME1BQXRHQVFGL0lBSWdBQkNiQVNJRFRRUkFJQUFRd1FNUWd3RWlBeUFCSUFJUXpnNGdBQ0FESUFJUXFCTVBDeUFBSUFNZ0FpQURheUFBRURzaUFFRUFJQUFnQWlBQkVKWUlDN1VCQVFOL0l3QkJFR3NpQlNRQUlBQVFPeUlFUVFCUEJFQUNRQ0FDSUFBUW13RWlBeUFFYTAwRVFDQUNSUTBCSUFBUXdRTVFnd0VpQXlBRUJIOGdBaUFEYWlBRElBUVF6ZzRnQVNBQ1FRQWdBeUFFYWlBQlN4dEJBQ0FCSUFOUEcyb0ZJQUVMSUFJUXpnNGdBQ0FDSUFScUlnRVFtQWdnQlVFQU9nQVBJQUVnQTJvZ0JVRVBhaERSQWd3QkN5QUFJQU1nQWlBRWFpQURheUFFUVFCQkFDQUNJQUVRbGdnTElBVkJFR29rQUNBQUR3c1EzUXdBQzlVQ0FRVi9Jd0JCMEFCcklnY2tBQ0FIUVFBMkFrd0NRQ0FGS0FJQUlnZ2dDQ2dDQUNnQ0NCRUFBQ0lJSUFkQnpBQnFFQ0lnQ0VZRVFDQUFJQU1nQlNnQ0FDQUdLQUlBRUtJVERBRUxJQWRDZ0lDQWdJQUJOd0pFSUFjZ0IwRWdhaUlJTmdKQUlBZ2dCeWdDVEJBNUlBZEJRR3NoQ2tFQUlRZ0NRQUpBQTBBZ0NDQUhLQUpNVHcwQklBSkJBQkFpSVFzZ0J5QUZLQUlBSWdrZ0NDQUpLQUlBS0FJTUVRRUFOZ0lVSUFjZ0JpZ0NBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNFQ0FIUVJocUlna2dBU0FMSUFNZ0JDQUlhaUFIUVJScUlBZEJFR29RbmhNZ0NSQXJCRUFnQjBFZ2FpQUhRUmhxRUJvUUpDQUlRUUZxSVFnTUFRc0xJQWRCR0dvUVBSb2dBRUVDT2dBRURBRUxJQWNnQ2pZQ0NDQUhJQWNvQWtBZ0IwRWdha2M2QUF3Z0FTQUNJQWRCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBZEJJR29RSXdzZ0IwSFFBR29rQUFzUkFDQUFJQUZCTUdvNkFBQWdBRUVCYWdzWkFDQUJRUWxOQkVBZ0FDQUJFSjhURHdzZ0FDQUJFT2dKQ3cwQUlBQkJnT2dQTmdJQUlBQUx6Z01FQkg4Q2ZRSjhBbjRqQUVFUWF5SUVKQUFnQVNnQ0NDRUdJQUVvQWdRaEJ5QUJLQUlBSVFFQ1FDQUNJQUlvQWdBb0FnZ1JBQUFpQlVVRVFDQUFRUUE2QUFRTUFRc0NRQUpBSUFVb0FnUWlCVUhRb0JKR0JFQWdBaEJqSVF3Z0F4QmpJUTBnQkVFSWFpQUJJQVlvQWdBUVhDQU1JQTFTRUlnQkRBRUxJQVZCOEo4U1JnUkFJQUlRUENFS0lBTVFQQ0VMSUFSQkNHb2dBU0FHS0FJQUVGd2dDNzBnQ3IyRlFnQlRJQW9nQzJKeUVJZ0JEQUVMSUFWQnNLa1NSZ1JBSUFJUU5DRUlJQU1RTkNFSklBUkJDR29nQVNBR0tBSUFFRndnQ2J3Z0NMeHpRUUJJSUFnZ0NWeHlFSWdCREFFTElBVkJrS29TUmdSQUlBSVFZU0VDSUFNUVlTRURJQVJCQ0dvZ0FTQUdLQUlBRUZ3Z0FpQURSeENJQVF3QkN5QUZRYUN6RWtZRVFDQUNFRmtoQWlBREVGa2hBeUFFUVFocUlBRWdCaWdDQUJCY0lBSWdBMGNRaUFFTUFRc2dCVUhRcUJKR0JFQWdBaEEvSVFnZ0F4QS9JUWtnQkVFSWFpQUJJQVlvQWdBUVhDQUp2Q0FJdkhOQkFFZ2dDQ0FKWEhJUWlBRU1BUXNnQlVIUXBSSkhEUUVnQWhENkFTRUNJQU1RK2dFaEF5QUVRUWhxSUFFZ0JpZ0NBQkJjSUFJZ0EzTVFpQUVMSUFBZ0JDa0RDRGNDQUF3QkN5QUFRUUE2QUFRTElBUkJFR29rQUF0S0FRRi9Jd0JCRUdzaUJDUUFJQVFnQUNBREVOWVRJUUFnQWlBQmF5SUNRUUJLQkVBZ0FDZ0NCQ0FCSUFJUWZSb2dBQ0FBS0FJRUlBSnFOZ0lFQ3lBQUVOVVRJQVJCRUdva0FBc1ZBQ0FBUVl5VkR6WUNBQ0FBS0FJSUVNRUZJQUFMRlFBZ0FFR3NsUTgyQWdBZ0FDZ0NDQkRCQlNBQUN3c0FJQUJCNk1RUEVQRVNDd3NBSUFCQjBNVVBFUEVTQ3k4QkFYOGpBRUVRYXlJREpBQWdBQ0FDRUpnSUlBTkJBRG9BRHlBQklBSnFJQU5CRDJvUTBRSWdBMEVRYWlRQUM5VUNBUVYvSXdCQjBBQnJJZ2NrQUNBSFFRQTJBa3dDUUNBRktBSUFJZ2dnQ0NnQ0FDZ0NDQkVBQUNJSUlBZEJ6QUJxRUNJZ0NFWUVRQ0FBSUFNZ0JTZ0NBQ0FHS0FJQUVLd1REQUVMSUFkQ2dJQ0FnSUFCTndKRUlBY2dCMEVnYWlJSU5nSkFJQWdnQnlnQ1RCQTVJQWRCUUdzaENrRUFJUWdDUUFKQUEwQWdDQ0FIS0FKTVR3MEJJQUpCQUJBaUlRc2dCeUFGS0FJQUlna2dDQ0FKS0FJQUtBSU1FUUVBTmdJVUlBY2dCaWdDQUNJSklBZ2dDU2dDQUNnQ0RCRUJBRFlDRUNBSFFSaHFJZ2tnQVNBTElBTWdCQ0FJYWlBSFFSUnFJQWRCRUdvUXFSTWdDUkFyQkVBZ0IwRWdhaUFIUVJocUVCb1FKQ0FJUVFGcUlRZ01BUXNMSUFkQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFjZ0NqWUNDQ0FISUFjb0FrQWdCMEVnYWtjNkFBd2dBU0FDSUFkQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQWRCSUdvUUl3c2dCMEhRQUdva0FBc0xBQ0FBUWJqR0R4RHlFZ3NMQUNBQVFhREhEeER5RWd2UkF3UUVmd0o5QW53Q2ZpTUFRUkJySWdRa0FDQUJLQUlJSVFZZ0FTZ0NCQ0VISUFFb0FnQWhBUUpBSUFJZ0FpZ0NBQ2dDQ0JFQUFDSUZSUVJBSUFCQkFEb0FCQXdCQ3dKQUFrQWdCU2dDQkNJRlFkQ2dFa1lFUUNBQ0VHTWhEQ0FERUdNaERTQUVRUWhxSUFFZ0JpZ0NBQkJjSUF3Z0RWRVFpQUVNQVFzZ0JVSHdueEpHQkVBZ0FoQThJUW9nQXhBOElRc2dCRUVJYWlBQklBWW9BZ0FRWENBTHZTQUt2WVZDQUZrZ0NpQUxZWEVRaUFFTUFRc2dCVUd3cVJKR0JFQWdBaEEwSVFnZ0F4QTBJUWtnQkVFSWFpQUJJQVlvQWdBUVhDQUp2Q0FJdkhOQkFFNGdDQ0FKVzNFUWlBRU1BUXNnQlVHUXFoSkdCRUFnQWhCaElRSWdBeEJoSVFNZ0JFRUlhaUFCSUFZb0FnQVFYQ0FDSUFOR0VJZ0JEQUVMSUFWQm9MTVNSZ1JBSUFJUVdTRUNJQU1RV1NFRElBUkJDR29nQVNBR0tBSUFFRndnQWlBRFJoQ0lBUXdCQ3lBRlFkQ29Fa1lFUUNBQ0VEOGhDQ0FERUQ4aENTQUVRUWhxSUFFZ0JpZ0NBQkJjSUFtOElBaThjMEVBVGlBSUlBbGJjUkNJQVF3QkN5QUZRZENsRWtjTkFTQUNFUG9CSVFJZ0F4RDZBU0VESUFSQkNHb2dBU0FHS0FJQUVGd2dBaUFEYzBFQmN4Q0lBUXNnQUNBRUtRTUlOd0lBREFFTElBQkJBRG9BQkFzZ0JFRVFhaVFBQzRNREFReC9JQUFvQWdBaUJDZ0NsR0FpQnlBQUtBSU1SZ1JBSUFBb0FnZ1BDeU1BUVJCcklnRWtBQ01BUWNBQmF5SURKQUFnQTBHNEFXb2dCQ0FBUVFScUlnSVEwaElnQkVHRTRBQnFLQUlBSWdoQkFXc2hDU0FDS0FJQUlRb2dCQ2dDZ0dBaEN5QURLQUs4QVNFTUlBTW9BcmdCSVFJQ1FBTkFJQVVnQ0VjRVFDQUxJQUpCQzNScUlnWXRBUEFQUlFSQUlBRkJBRFlDRENBQlFRQTZBQWdNQXdzQ1FDQUdLQUw0RHlBTVJ3MEFJQW9nQmlnQ0FFY05BQ0FCSUFJMkFnd2dBVUVCT2dBSURBTUxJQVVnQmlnQy9BOUxCRUFnQVVFQU5nSU1JQUZCQURvQUNBd0RCU0FDUVFGcVFRQWdBaUFKUnhzaEFpQUZRUUZxSVFVTUFnc0FDd3NnQTBFSWFrR0d0UU5CbmdSQkRpQURRYWdCYWhBZElnSVFGeUlGUVJocVFkSTFFQTRhSUFVUUdDQUJRUUEyQWd3Z0FVRUFPZ0FJSUFJUUhnc2dBMEhBQVdva0FDQUJLQUlNSVFNZ0JDZ0NnR0FoQWlBQkxRQUlJUVFnQVVFUWFpUUFJQUFnQnpZQ0RDQUFJQUlnQTBFTGRHcEJDR3BCQUNBRUd5SUFOZ0lJSUFBTENRQWdBQkRmREJBZkMzOEJBMzhnQUVFTWFpSUJRWWdFYWhBUEdpQUJRZndEYWhBUEdpQUJRZkFEYWhBUEdpQUJRY3dEYWlFRElBRkI1QU5xRUE4aEFnTkFJQUpCREdzUUR5SUNJQU5IRFFBTElBRkJyQUZxSVFJRFFDQURRUXhyRUE4aUF5QUNSdzBBQ3lBQlFRUnFJUU1EUUNBQ1FReHJFQThpQWlBRFJ3MEFDeUFCRUxRVElBQUx4QUVCQkg4Z0FpQUFFUE1KSWdOTkJFQWdBQkNQQWlFRklBSUVRQ0FDSVFNQ1FDQUJJQVVpQkVZTkFDQUVJQUZySUFOQkFuUlBCRUFnQTBVTkFRTkFJQVFnQVNnQ0FEWUNBQ0FFUVFScUlRUWdBVUVFYWlFQklBTkJBV3NpQXcwQUN3d0JDeUFEUlEwQUEwQWdCQ0FEUVFGcklnTkJBblFpQm1vZ0FTQUdhaWdDQURZQ0FDQUREUUFMQ3dzZ0FDQUNFUElKSUFVZ0FrRUNkR3BCQUJDWkFnOExJQUFnQXlBQ0lBTnJJQUFvQWdRZ0FDMEFDeENZQVNJQVFRQWdBQ0FDSUFFUW1oTUxXZ0VDZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUVRdHdNaEF5QUFRZjhCY1NJQlFZQUJUd1JBUVg5QmZ5QUFRUmgwUVJoMVFmKy9BM0ZCOUtrZ0tBSUFLQUlBR3lBQVFYOUdHeUVCQ3lBREVMWURJQUpCRUdva0FDQUJDKzhOQkFWL0EzMENmZ044SXdCQjRBQnJJZ1lrQUNBR1FRQTJBa1FnQkNBRUtBSUFLQUlJRVFBQUlBWkJ4QUJxRUNJYUlBWkJBRFlDUUNBRklBVW9BZ0FvQWdnUkFBQWdCa0ZBYXhBaUdnSkFJQVlvQWtRaUJ5QUdLQUpBSWdnZ0J5QUlTeHNpQ2tFQlJnUkFJQU1vQWdBaEJ5QURLQUlFSVFJZ0JDQUVLQUlBS0FJSUVRQUFJUUVnQmlBSE5nSVFJQVlnQWlrQ0NEY0NIQ0FHSUFJb0FoQTJBaVFnQmlBQ0tRSUFOd0lVSUFZZ0FUWUNLQ0FFSUFRb0FnQW9BZ2dSQUFBaUFVVUVRQ0FBUVFBNkFBUU1BZ3NnQmtFUWFrRUVjaUVJQWtBQ1FDQUJLQUlFSWdGQjBLQVNSZ1JBSUFRUVl5RVBJQVVRWXlFT0l3QkJFR3NpQWlRQUlBWkIwQUJxSWdFQ2Z5QUJBbjRnRGxCRklBNUNmMUlnRDBLQWdJQ0FnSUNBZ0lCL1VuSnhSUVJBSUFJZ0QwR2ZuUWtnRGhEdUJpQUhJQUlnQ0JCZElBSVFEeHBDQUNBSExRQUVEUUVhUVFJTUFnc2dEeUFPZ1FzM0F3QkJBUXM2QUFnZ0FrRVFhaVFBSUFFUXNnRUVRQ0FHUWNnQWFpQUhJQVlvQWlnZ0JrSFFBR29RU2lrREFCRDlBUXdDQ3lBR1FRSTZBRXdNQVFzZ0FVSHdueEpHQkVBZ0JCQThJUkVnQlJBOElSQWpBRUVRYXlJQ0pBQWdCa0hRQUdvaUFRSi9Ba0FDUUNBUVJBQUFBQUFBQUFBQVlnUkFJQkVnRUNBUklCQ2puYUtoSWhLWlJBQUFBQUFBQVBCL1l3MEJDeUFDSUJGQm41MEpJQkFRN1FZZ0J5QUNJQWdRWFNBQ0VBOGFRUUlnQnkwQUJFVU5BaG9nQVVJQU53TUFEQUVMSUFFZ0Vqa0RBQXRCQVFzNkFBZ2dBa0VRYWlRQUlBRVFzZ0VFUUNBR1FjZ0FhaUFISUFnZ0JpZ0NLQ0FHUWRBQWFoQktLd01BRUhNTUFnc2dCa0VDT2dCTURBRUxJQUZCc0trU1JnUkFJQVFRTkNFTElBVVFOQ0VNSXdCQkVHc2lBaVFBSUFaQjBBQnFJZ0VDZndKQUFrQWdERU1BQUFBQVhBUkFJQXNnRENBTElBeVZqNVNUSWcyTFF3QUFnSDlkRFFFTElBSWdDMEdmblFrZ0RCRHNCaUFISUFJZ0NCQmRJQUlRRHhwQkFpQUhMUUFFUlEwQ0dpQUJRUUEyQWdBTUFRc2dBU0FOT0FJQUMwRUJDem9BQkNBQ1FSQnFKQUFnQVJBckJFQWdCa0hJQUdvZ0J5QUlJQVlvQWlnZ0JrSFFBR29RR2lvQ0FCQnJEQUlMSUFaQkFqb0FUQXdCQ3lBQlFaQ3FFa1lFUUNBRUVHRWhBeUFGRUdFaEFpTUFRUkJySWdRa0FDQUdRZEFBYWlJQkFuOENRQUpBQWtBQ1FBSkFJQUpCQVdvT0FnRUFBZ3RCQUNFRklBUWdBMEdmblFsQkFCREhDU0FISUFRZ0NCQmRJQVFRRHhvZ0J5MEFCQTBDREFNTElBTkJnSUNBZ0hoSERRQWdCRUdBZ0lDQWVFR2ZuUWxCZnhESENTQUhJQVFnQ0JCZElBUVFEeHBCQUNFRklBY3RBQVJGRFFJTUFRc2dBeUFDYnlFRkN5QUJJQVUyQWdCQkFRd0JDMEVDQ3pvQUJDQUVRUkJxSkFBZ0FSQXJCRUFnQmtISUFHb2dCeUFHS0FJb0lBWkIwQUJxRUJvb0FnQVFzUUVNQWdzZ0JrRUNPZ0JNREFFTElBRkJvTE1TUmdSQUlBUVFXU0VESUFVUVdTRUNJd0JCRUdzaUJDUUFJQVpCMEFCcUlnRUNmeUFCQW44Z0FrVUVRQ0FFSUFOQm41MEpRUUFRclF3Z0J5QUVJQWdRWFNBRUVBOGFRUUFnQnkwQUJBMEJHa0VDREFJTElBTWdBbkFMTmdJQVFRRUxPZ0FFSUFSQkVHb2tBQ0FCRUNzRVFDQUdRY2dBYWlBSElBWW9BaWdnQmtIUUFHb1FHaWdDQUJDdEFRd0NDeUFHUVFJNkFFd01BUXNnQVVIUXFCSkhEUUVnQmtIUUFHb2hBaUFFRUQ4aERTQUZFRDhoQ3lNQVFTQnJJZ01rQUFKQUFrQUNRQ0FMdkNJQlF3QUFBQUFRUmlJTXZITkJBRTRnQ3lBTVczRkZCRUJEQUFBQWdCQkdJZ3k4SUFGelFRQklJQXNnREZ4eURRRUxEQUVMSUEwZ0N5QU5JQXVWajVTVEVFWWlESXREQUFDQWYxMUZEUUFnQTBFQk9nQWNJQU1nRERnQ0dBd0JDeUFEUVFBNkFCd2dBMEVBT2dBWUN3SkFJQU10QUJ4RkJFQWdBMEVJYWlJQklBMUJuNTBKSUFzUTZnWWdCeUFCSUFnUVhTQUJFQThhSUFJZ0J5MEFCQVIvSUFKREFBQUFBQkJHT0FJQVFRRUZRUUlMT2dBRURBRUxJQU1xQWhnUVJpRU5JQUpCQVRvQUJDQUNJQTA0QWdBTElBTkJJR29rQUNBQ0VDc0VRQ0FHUWNnQWFpQUhJQWdnQmlnQ0tDQUdRZEFBYWhBYUtnSUFFSElNQVFzZ0JrRUNPZ0JNQ3lBQUlBWXBBMGczQWdBTUFnc2dBRUVBT2dBRURBRUxJQVpDZ0lDQWdJQUJOd0kwSUFZZ0JrRVFhaUlJTmdJd0lBZ2dDaEE1SUFaQk1Hb2hCd0pBQWtBRFFDQUpJQXBHRFFFZ0JrSFFBR29pQ0NBQklBSkJBQkFpSUFNZ0JpZ0NSRUVCUndSL0lBUWdDU0FFS0FJQUtBSU1FUUVBQlNBRUN5QUdLQUpBUVFGSEJIOGdCU0FKSUFVb0FnQW9BZ3dSQVFBRklBVUxFTElUSUFnUUt3UkFJQVpCRUdvZ0JrSFFBR29RR2hBa0lBbEJBV29oQ1F3QkN3c2dCa0hRQUdvUVBSb2dBRUVDT2dBRURBRUxJQVlnQnpZQ0NDQUdJQVlvQWpBZ0JrRVFha2M2QUF3Z0FTQUNJQVpCQ0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBWkJFR29RSXdzZ0JrSGdBR29rQUFzSkFDQUFFT2tNRUI4TENnQWdBQ2dDQUJEQkJRc0tBQ0FBUVFockVPSU1Dd29BSUFCQkNHc1E0d3dMQ2dBZ0FFRUlheERrREFzS0FDQUFRUWhyRU9VTUN3b0FJQUJCQ0dzUTVnd0xDZ0FnQUVFSWF4RG5EQXNLQUNBQVFRaHJFT2dNQzRZQkFRTi9JQUJCREdvaUFVR0lCR29RaHdFYUlBRkIvQU5xRUljQkdpQUJRZkFEYWhDSEFSb2dBVUhNQTJvaEF5QUJRZVFEYWhDSEFTRUNBMEFnQWtFTWF4Q0hBU0lDSUFOSERRQUxJQUZCckFGcUlRSURRQ0FEUVF4ckVJY0JJZ01nQWtjTkFBc2dBVUVFYWlFREEwQWdBa0VNYXhDSEFTSUNJQU5IRFFBTElBRVF0Qk1nQUFzNEFRSi9Jd0JCRUdzaUFpUUFJQUFnQVJCN0VQd0VJZ00yQWdBZ0EwVUVRQ0FDUWYvcENTQUJFTVFCRUc4QUN5QUNRUkJxSkFBZ0FBczJBUUYvSXdCQkVHc2lBaVFBSUFBZ0FSQjdFUHdFSWdBMkFnQWdBRVVFUUNBQ1FkYnBDU0FCRU1RQkVHOEFDeUFDUVJCcUpBQUxTQUVCZnlNQVFSQnJJZ01rQUNBQUlBSVE0eE1pQUVHOG5nODJBZ0FnQUNBQkVIc1EvQVFpQWpZQ0NDQUNSUVJBSUFOQmxPd0pJQUVReEFFUWJ3QUxJQU5CRUdva0FDQUFDMGdCQVg4akFFRVFheUlESkFBZ0FDQUNFT1FUSWdCQmlKNFBOZ0lBSUFBZ0FSQjdFUHdFSWdJMkFoQWdBa1VFUUNBRFFkSHNDU0FCRU1RQkVHOEFDeUFEUVJCcUpBQWdBQXQwQVFOL0lBQkIrSlFQTmdJQUlBQkJDR29oQVFOQUlBQW9BZ2dpQWlBQUtBSU1FSUlFSUFOTEJFQWdBaUFERUljSEtBSUFJZ0lFUUNBQ0VNd0hHZ3NnQTBFQmFpRUREQUVMQ3lBQVFaZ0JhaEFQR2lBQktBSUFCRUFnQVJEeURDQUJFUEFKSUFFb0FnQWdBUkR2Q1JEdkRBc2dBQXNFQUNBQkM1b0tBZ1YvQW40akFFSGdBR3NpQmlRQUlBWkJBRFlDUkNBRUlBUW9BZ0FvQWdnUkFBQWdCa0hFQUdvUUlob2dCa0VBTmdKQUlBVWdCU2dDQUNnQ0NCRUFBQ0FHUVVCckVDSWFBa0FnQmlnQ1JDSUpJQVlvQWtBaUNDQUlJQWxKR3lJSlFRRkdCRUFnQXlnQ0FDRUJJQU1vQWdRaEFpQUVJQVFvQWdBb0FnZ1JBQUFoQXlBR0lBRTJBaEFnQmlBQ0tRSUlOd0ljSUFZZ0FpZ0NFRFlDSkNBR0lBSXBBZ0EzQWhRZ0JpQUROZ0lvSUFRZ0JDZ0NBQ2dDQ0JFQUFDSURSUVJBSUFCQkFEb0FCQXdDQ3lBR1FSQnFRUVJ5SVFJQ1FBSkFJQU1vQWdRaUEwSFFvQkpHQkVBZ0JCQmpJUXNnQlJCaklRd2pBRUVRYXlJREpBQWdCa0hRQUdvaUJBSi9Ba0FnREZCRklBeENmMUlnQzBLQWdJQ0FnSUNBZ0lCL1VuSnhSUVJBSUFNZ0MwSFprZ2NnREJEdUJpQUJJQU1nQWhCZElBTVFEeG9nQVMwQUJBMEJRUUlNQWdzZ0N5QU1meUVMQ3lBRUlBczNBd0JCQVFzNkFBZ2dBMEVRYWlRQUlBUVFzZ0VFUUNBR1FjZ0FhaUFCSUFZb0FpZ2dCa0hRQUdvUVNpa0RBQkQ5QVF3Q0N5QUdRUUk2QUV3TUFRc2dBMEh3bnhKR0JFQWdCa0hRQUdvaUF5QUJJQUlnQkJBOElBVVFQQkRyRENBREVMSUJCRUFnQmtISUFHb2dBU0FDSUFZb0FpZ2dCa0hRQUdvUVNpc0RBQkJ6REFJTElBWkJBam9BVEF3QkN5QURRYkNwRWtZRVFDQUdRZEFBYWlJRElBRWdBaUFFRURRZ0JSQTBFT29NSUFNUUt3UkFJQVpCeUFCcUlBRWdBaUFHS0FJb0lBWkIwQUJxRUJvcUFnQVFhd3dDQ3lBR1FRSTZBRXdNQVFzZ0EwR1FxaEpHQkVBZ0JCQmhJUVFnQlJCaElRVWpBRUVRYXlJREpBQWdCa0hRQUdvaUJ3Si9Ba0FDUUFKQUFrQUNRQ0FGUVFGcURnSUJBQUlMSUFNZ0JFSFprZ2RCQUJESENTQUJJQU1nQWhCZElBTVFEeG9nQVMwQUJBMENEQU1MSUFSQmdJQ0FnSGhIRFFBZ0EwR0FnSUNBZUVIWmtnZEJmeERIQ1NBQklBTWdBaEJkSUFNUUR4cEJnSUNBZ0hnaEJDQUJMUUFFUlEwQ0RBRUxJQVFnQlcwaEJBc2dCeUFFTmdJQVFRRU1BUXRCQWdzNkFBUWdBMEVRYWlRQUlBY1FLd1JBSUFaQnlBQnFJQUVnQmlnQ0tDQUdRZEFBYWhBYUtBSUFFTEVCREFJTElBWkJBam9BVEF3QkN5QURRYUN6RWtZRVFDQUVFRmtoQXlBRkVGa2hCU01BUVJCcklnUWtBQ0FHUWRBQWFpSUhBbjhDUUNBRlJRUkFJQVFnQTBIWmtnZEJBQkN0RENBQklBUWdBaEJkSUFRUUR4b2dBUzBBQkEwQlFRSU1BZ3NnQXlBRmJpRURDeUFISUFNMkFnQkJBUXM2QUFRZ0JFRVFhaVFBSUFjUUt3UkFJQVpCeUFCcUlBRWdCaWdDS0NBR1FkQUFhaEFhS0FJQUVLMEJEQUlMSUFaQkFqb0FUQXdCQ3lBRFFkQ29Fa2NOQVNBR1FkQUFhaUlESUFFZ0FpQUVFRDhnQlJBL0VPd0pJQU1RS3dSQUlBWkJ5QUJxSUFFZ0FpQUdLQUlvSUFaQjBBQnFFQm9xQWdBUWNnd0JDeUFHUVFJNkFFd0xJQUFnQmlrRFNEY0NBQXdDQ3lBQVFRQTZBQVFNQVFzZ0JrS0FnSUNBZ0FFM0FqUWdCaUFHUVJCcUlnZzJBakFnQ0NBSkVEa2dCa0V3YWlFSUFrQUNRQU5BSUFjZ0NVWU5BU0FHUWRBQWFpSUtJQUVnQWtFQUVDSWdBeUFHS0FKRVFRRkhCSDhnQkNBSElBUW9BZ0FvQWd3UkFRQUZJQVFMSUFZb0FrQkJBVWNFZnlBRklBY2dCU2dDQUNnQ0RCRUJBQVVnQlFzUXd4TWdDaEFyQkVBZ0JrRVFhaUFHUWRBQWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FkQUFhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUlOZ0lJSUFZZ0JpZ0NNQ0FHUVJCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFUWFoQWpDeUFHUWVBQWFpUUFDeElBSUFRZ0FqWUNBQ0FISUFVMkFnQkJBd3VlQXdFRWYwRUFJUUVnQWlFQUEwQUNRQ0FBSUFOUElBRWdCRTl5RFFCQkFTRUdBa0FnQUN3QUFDSUZRUUJPRFFBZ0JVRkNTUTBCSUFWQlgwMEVRQ0FESUFCclFRSklEUUpCQWlFR0lBQXRBQUZCd0FGeFFZQUJSZzBCREFJTElBVkIvd0Z4SVFZQ1FBSkFJQVZCYjAwRVFDQURJQUJyUVFOSURRUWdBQzBBQWlFSElBQXRBQUVoQlNBR1FlMEJSZzBCSUFaQjRBRkdCRUFnQlVIZ0FYRkJvQUZHRFFNTUJRc2dCVUhBQVhGQmdBRkhEUVFNQWdzZ0F5QUFhMEVFU0NBRlFYUkxjaUFFSUFGclFRSkpjZzBESUFBdEFBTWhCeUFBTFFBQ0lRZ2dBQzBBQVNFRkFrQUNRQUpBQWtBZ0JrSHdBV3NPQlFBQ0FnSUJBZ3NnQlVId0FHcEIvd0Z4UVRCSkRRSU1CZ3NnQlVId0FYRkJnQUZHRFFFTUJRc2dCVUhBQVhGQmdBRkhEUVFMSUFoQndBRnhRWUFCUnlBSFFjQUJjVUdBQVVkeUlBWkJFblJCZ0lEd0FIRWdCVUV3Y1VFTWRISkIvLy9EQUV0eURRTWdBVUVCYWlFQlFRUWhCZ3dDQ3lBRlFlQUJjVUdBQVVjTkFndEJBeUVHSUFkQndBRnhRWUFCUncwQkN5QUJRUUZxSVFFZ0FDQUdhaUVBREFFTEN5QUFJQUpyQzVjRkFRTi9Jd0JCRUdzaUFDUUFJQUFnQWpZQ0RDQUFJQVUyQWdnQ2Z5QUFJQUkyQWd3Z0FDQUZOZ0lJQWtBQ1FBSkFBMEFnQUNnQ0RDSUJJQU5QSUFVZ0JrOXlSUVJBSUFFc0FBQWlDRUgvQVhFaEFpQUFBbjhnQ0VFQVRnUkFJQVVnQWpzQkFDQUJRUUZxREFFTFFRSWhDaUFJUVVKSkRRVWdDRUZmVFFSQUlBTWdBV3RCQWtnTkJTQUJMUUFCSWdoQndBRnhRWUFCUncwRUlBVWdDRUUvY1NBQ1FRWjBRY0FQY1hJN0FRQWdBVUVDYWd3QkN5QUlRVzlOQkVBZ0F5QUJhMEVEU0EwRklBRXRBQUloQ1NBQkxRQUJJUWdDUUFKQUlBSkI3UUZIQkVBZ0FrSGdBVWNOQVNBSVFlQUJjVUdnQVVZTkFnd0hDeUFJUWVBQmNVR0FBVVlOQVF3R0N5QUlRY0FCY1VHQUFVY05CUXNnQ1VIQUFYRkJnQUZIRFFRZ0JTQUpRVDl4SUFoQlAzRkJCblFnQWtFTWRISnlPd0VBSUFGQkEyb01BUXNnQ0VGMFN3MEZRUUVoQ2lBRElBRnJRUVJJRFFNZ0FTMEFBeUVKSUFFdEFBSWhDQ0FCTFFBQklRRUNRQUpBQWtBQ1FDQUNRZkFCYXc0RkFBSUNBZ0VDQ3lBQlFmQUFha0gvQVhGQk1FOE5DQXdDQ3lBQlFmQUJjVUdBQVVjTkJ3d0JDeUFCUWNBQmNVR0FBVWNOQmdzZ0NFSEFBWEZCZ0FGSElBbEJ3QUZ4UVlBQlIzSU5CU0FHSUFWclFRUklEUU5CQWlFS0lBRkJESFJCZ0lBTWNTQUNRUWR4SWdKQkVuUnlRZi8vd3dCTERRTWdCU0FJUVFSMlFRTnhJQUZCQW5RaUFVSEFBWEVnQWtFSWRISWdBVUU4Y1hKeVFjRC9BR3BCZ0xBRGNqc0JBQ0FBSUFWQkFtbzJBZ2dnQlNBSVFRWjBRY0FIY1NBSlFUOXhja0dBdUFOeU93RUNJQUFvQWd4QkJHb0xOZ0lNSUFBZ0FDZ0NDRUVDYWlJRk5nSUlEQUVMQ3lBQklBTkpJUW9MSUFvTUFndEJBUXdCQzBFQ0N5RUJJQVFnQUNnQ0REWUNBQ0FISUFBb0FnZzJBZ0FnQUVFUWFpUUFJQUVMeUFVQkFYOGpBRUVRYXlJQUpBQWdBQ0FDTmdJTUlBQWdCVFlDQ0FKL0lBQWdBallDRENBQUlBVTJBZ2dnQUNnQ0RDRUNBa0FEUUNBQ0lBTlBCRUJCQUNFRkRBSUxBa0FDUUNBQ0x3RUFJZ0ZCL3dCTkJFQkJBU0VGSUFZZ0FDZ0NDQ0lDYTBFQVRBMEVJQUFnQWtFQmFqWUNDQ0FDSUFFNkFBQU1BUXNnQVVIL0QwMEVRQ0FHSUFBb0FnZ2lBbXRCQWtnTkFpQUFJQUpCQVdvMkFnZ2dBaUFCUVFaMlFjQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQURBRUxJQUZCLzY4RFRRUkFJQVlnQUNnQ0NDSUNhMEVEU0EwQ0lBQWdBa0VCYWpZQ0NDQUNJQUZCREhaQjRBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFR2RrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3dKQUFrQWdBVUgvdHdOTkJFQkJBU0VGSUFNZ0FtdEJCRWdOQmlBQ0x3RUNJZ2hCZ1BnRGNVR0F1QU5IRFFFZ0JpQUFLQUlJYTBFRVNBMEdJQUFnQWtFQ2FqWUNEQ0FBSUFBb0FnZ2lBa0VCYWpZQ0NDQUNJQUZCQm5aQkQzRkJBV29pQWtFQ2RrSHdBWEk2QUFBZ0FDQUFLQUlJSWdWQkFXbzJBZ2dnQlNBQ1FRUjBRVEJ4SUFGQkFuWkJEM0Z5UVlBQmNqb0FBQ0FBSUFBb0FnZ2lBa0VCYWpZQ0NDQUNJQWhCQm5aQkQzRWdBVUVFZEVFd2NYSkJnQUZ5T2dBQUlBQWdBQ2dDQ0NJQlFRRnFOZ0lJSUFFZ0NFRS9jVUdBQVhJNkFBQU1Bd3NnQVVHQXdBTlBEUUVMUVFJTUJRc2dCaUFBS0FJSUlnSnJRUU5JRFFFZ0FDQUNRUUZxTmdJSUlBSWdBVUVNZGtIZ0FYSTZBQUFnQUNBQUtBSUlJZ0pCQVdvMkFnZ2dBaUFCUVFaMlFUOXhRWUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJQM0ZCZ0FGeU9nQUFDeUFBSUFBb0FneEJBbW9pQWpZQ0RBd0JDd3RCQVF3QkN5QUZDeUVCSUFRZ0FDZ0NERFlDQUNBSElBQW9BZ2cyQWdBZ0FFRVFhaVFBSUFFTFJRRUJmeU1BUVJCcklnVWtBQ0FGSUFRMkFnd2dCU0FCTmdJSUlBQWdBU2dDQUNBQ0lBVkJDR29nQXlnQ0FDZ0NBQ0lBS0FJQUlBQW9BZ1FRd3hNZ0JVRVFhaVFBQzRzREFRUi9JQUloQUFOQUFrQWdCQ0FIVFNBQUlBTlBjZzBBUVFFaEJRSkFJQUFzQUFBaUFVRUFUZzBBSUFGQlFra05BU0FCUVY5TkJFQWdBeUFBYTBFQ1NBMENRUUloQlNBQUxRQUJRY0FCY1VHQUFVWU5BUXdDQ3lBQlFmOEJjU0VHQWtBQ1FDQUJRVzlOQkVBZ0F5QUFhMEVEU0EwRUlBQXRBQUloQ0NBQUxRQUJJUUVnQmtIdEFVWU5BU0FHUWVBQlJnUkFJQUZCNEFGeFFhQUJSZzBEREFVTElBRkJ3QUZ4UVlBQlJ3MEVEQUlMSUFNZ0FHdEJCRWdnQVVGMFMzSU5BeUFBTFFBRElRVWdBQzBBQWlFSUlBQXRBQUVoQVFKQUFrQUNRQUpBSUFaQjhBRnJEZ1VBQWdJQ0FRSUxJQUZCOEFCcVFmOEJjVUV3U1EwQ0RBWUxJQUZCOEFGeFFZQUJSZzBCREFVTElBRkJ3QUZ4UVlBQlJ3MEVDeUFJUWNBQmNVR0FBVWNnQlVIQUFYRkJnQUZIY2cwRFFRUWhCU0FHUVJKMFFZQ0E4QUJ4SUFGQk1IRkJESFJ5UWYvL3d3QkxEUU1NQWdzZ0FVSGdBWEZCZ0FGSERRSUxRUU1oQlNBSVFjQUJjVUdBQVVjTkFRc2dCMEVCYWlFSElBQWdCV29oQUF3QkN3c2dBQ0FDYXd1NkJBRUZmeU1BUVJCcklnQWtBQ0FBSUFJMkFnd2dBQ0FGTmdJSUFuOGdBQ0FDTmdJTUlBQWdCVFlDQ0FKQUFrQURRQ0FBS0FJTUlnRWdBMDhnQlNBR1QzSkZCRUFnQVN3QUFDSUlRZjhCY1NFQ0FrQWdDRUVBVGdSQVFRRWhDQXdCQzBFQ0lRb2dDRUZDU1EwRElBaEJYMDBFUUNBRElBRnJRUUpJRFFVZ0FTMEFBU0lJUWNBQmNVR0FBVWNOQkNBSVFUOXhJQUpCQm5SQndBOXhjaUVDUVFJaENBd0JDeUFJUVc5TkJFQWdBeUFCYTBFRFNBMEZJQUV0QUFJaENTQUJMUUFCSVFnQ1FBSkFJQUpCN1FGSEJFQWdBa0hnQVVjTkFTQUlRZUFCY1VHZ0FVWU5BZ3dIQ3lBSVFlQUJjVUdBQVVZTkFRd0dDeUFJUWNBQmNVR0FBVWNOQlFzZ0NVSEFBWEZCZ0FGSERRUWdDVUUvY1NBQ1FReDBRWURnQTNFZ0NFRS9jVUVHZEhKeUlRSkJBeUVJREFFTElBaEJkRXNOQXlBRElBRnJRUVJJRFFRZ0FTMEFBeUVMSUFFdEFBSWhEQ0FCTFFBQklRa0NRQUpBQWtBQ1FDQUNRZkFCYXc0RkFBSUNBZ0VDQ3lBSlFmQUFha0gvQVhGQk1Fa05BZ3dHQ3lBSlFmQUJjVUdBQVVZTkFRd0ZDeUFKUWNBQmNVR0FBVWNOQkFzZ0RFSEFBWEZCZ0FGSElBdEJ3QUZ4UVlBQlIzSU5BMEVFSVFnZ0MwRS9jU0FNUVFaMFFjQWZjU0FDUVJKMFFZQ0E4QUJ4SUFsQlAzRkJESFJ5Y25JaUFrSC8vOE1BU3cwREN5QUZJQUkyQWdBZ0FDQUJJQWhxTmdJTUlBQWdBQ2dDQ0VFRWFpSUZOZ0lJREFFTEN5QUJJQU5KSVFvTElBb01BUXRCQVFzaEFTQUVJQUFvQWd3MkFnQWdCeUFBS0FJSU5nSUFJQUJCRUdva0FDQUJDNDRFQUNNQVFSQnJJZ0FrQUNBQUlBSTJBZ3dnQUNBRk5nSUlBbjhnQUNBQ05nSU1JQUFnQlRZQ0NDQUFLQUlNSVFFQ1FBTkFJQUVnQTA4RVFFRUFJUUlNQWd0QkFpRUNJQUVvQWdBaUFVSC8vOE1BU3lBQlFZQndjVUdBc0FOR2NnMEJBa0FDUUNBQlFmOEFUUVJBUVFFaEFpQUdJQUFvQWdnaUJXdEJBRXdOQkNBQUlBVkJBV28yQWdnZ0JTQUJPZ0FBREFFTElBRkIvdzlOQkVBZ0JpQUFLQUlJSWdKclFRSklEUUlnQUNBQ1FRRnFOZ0lJSUFJZ0FVRUdka0hBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3lBR0lBQW9BZ2dpQW1zaEJTQUJRZi8vQTAwRVFDQUZRUU5JRFFJZ0FDQUNRUUZxTmdJSUlBSWdBVUVNZGtIZ0FYSTZBQUFnQUNBQUtBSUlJZ0pCQVdvMkFnZ2dBaUFCUVFaMlFUOXhRWUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJQM0ZCZ0FGeU9nQUFEQUVMSUFWQkJFZ05BU0FBSUFKQkFXbzJBZ2dnQWlBQlFSSjJRZkFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJESFpCUDNGQmdBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFR2RrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXNnQUNBQUtBSU1RUVJxSWdFMkFnd01BUXNMUVFFTUFRc2dBZ3NoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkN4VUFJQUJCc0o4UE5nSUFJQUJCREdvUUR4b2dBQXNKQUNBQUVNd1RFQjhMRlFBZ0FFSFludzgyQWdBZ0FFRVFhaEFQR2lBQUN3a0FJQUFRemhNUUh3c0tBQ0FBRU1BQk5nSUFDeVlBQW44Q1FDQUJRUjVMRFFBZ0FDMEFlQTBBSUFCQkFUb0FlQ0FBREFFTElBRVFrd1lMQ3dvQVFielFBUkNXREFBTFBnRUNmeU1BUVJCcklnQWtBQ0FBUWYvLy8vOEROZ0lNSUFCQi8vLy8vd2MyQWdnZ0FFRU1haUFBUVFocUVJZ0ZLQUlBSVFFZ0FFRVFhaVFBSUFFTENBQWdBQkNZQkJvTER3QWdBQ2dDQUNBQUtBSUVOZ0lFQ3lRQUlBQWdBVFlDQUNBQUlBRW9BZ1FpQVRZQ0JDQUFJQUVnQWtFQ2RHbzJBZ2dnQUF0WkFRSi9Jd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUJFTk1USWdOTkJFQWdBQkR2Q1NJQUlBTkJBWFpKQkVBZ0FpQUFRUUYwTmdJSUlBSkJDR29nQWtFTWFoQ0pCU2dDQUNFREN5QUNRUkJxSkFBZ0F3OExFTklUQUFzSkFDQUFJQUVRaHdRTEZBQWdBQ0FCRUtNQklnQkJrTTRQTmdJQUlBQUxGQUFnQUNBQkVLTUJJZ0JCbU0wUE5nSUFJQUFMS3dBZ0FDQUJFS01CSWdCQkNHb2lBVUdJM0E4MkFnQWdBRUhVdGc4MkFnQWdBVUdFdHc4MkFnQWdBQXNyQUNBQUlBRVFvd0VpQUVFSWFpSUJRZVRiRHpZQ0FDQUFRY3kwRHpZQ0FDQUJRZnkwRHpZQ0FDQUFDeFFBSUFBZ0FSQ2pBU0lBUWZURER6WUNBQ0FBQ3hRQUlBQWdBUkNqQVNJQVFZREREellDQUNBQUN4UUFJQUFnQVJDakFTSUFRWXpDRHpZQ0FDQUFDeFFBSUFBZ0FSQ2pBU0lBUWZqQUR6WUNBQ0FBQ3lnQUlBQWdBUkNqQVNJQVFxNkFnSURBQlRjQ0NDQUFRZGlmRHpZQ0FDQUFRUkJxRUhRYUlBQUxKUUFnQUNBQkVLTUJJZ0JCcnRnQU93RUlJQUJCc0o4UE5nSUFJQUJCREdvUWRCb2dBQXNVQUNBQUlBRVFvd0VpQUVHQW93ODJBZ0FnQUFzckFDQUFJQUVRb3dFaUFFRUFPZ0FNSUFCQkFEWUNDQ0FBUWN5VkR6WUNBQ0FBUVlDV0R6WUNDQ0FBQ3hRQUlBQWdBUkNqQVNJQVFiU3REellDQUNBQUN4UUFJQUFnQVJDakFTSUFRWlN0RHpZQ0FDQUFDMDhCQW44akFFRVFheUlDSkFBZ0FpQUFJQUVRMWhNaUFDZ0NCQ0VCSUFBb0FnZ2hBd05BSUFFZ0EwWUVRQ0FBRU5VVElBSkJFR29rQUFVZ0FSRFVFeUFBSUFGQkJHb2lBVFlDQkF3QkN3c0xPUUVCZnhEVEV5QUJTUVJBRU5JVEFBc2dBQ0FBRVBBSklBRVEwUk1pQWpZQ0FDQUFJQUkyQWdRZ0FCRFdCU0FDSUFGQkFuUnFOZ0lBQ3ljQUlBQkNBRGNEQUNBQVFRaHFFSmdFUVFBNkFJQUJJQUJCSGhEb0V5QUFRUjRRNXhNZ0FBczRBUUovSXdCQkVHc2lBU1FBSUFGQkNHb2dBQkMzQXlFQVFRUkJBVUgwcVNBb0FnQW9BZ0FiSVFJZ0FCQzJBeUFCUVJCcUpBQWdBZ3NKQUNBQUVQVU1FQjhMSHdBZ0FDQUJJQVFnQWlBREtBSUFLQUlBSWdBb0FnQWdBQ2dDQkJDVERRc0VBRUYvQzYwR0FRbC9JQUlnQURZQ0FDQURRWUFFY1NFVUlBZEJBblFoRlFOQUlCTkJCRVlFUUNBTktBSUVJQTB0QUFzUW1BRkJBVXNFUUNBTkVKQUdJUVVqQUVFUWF5SUVKQUFnQkNBRk5nSUlJQVJCQ0dvUWdRY29BZ0FoQlNBRVFSQnFKQUFnQWlBRklBMFF2UVVnQWlnQ0FCRDJERFlDQUFzZ0EwR3dBWEVpQTBFUVJ3UkFJQUVnQTBFZ1JnUi9JQUlvQWdBRklBQUxOZ0lBQ3dVQ1FBSkFBa0FDUUFKQUFrQWdDQ0FUYWl3QUFBNEZBQUVEQWdRRkN5QUJJQUlvQWdBMkFnQU1CQXNnQVNBQ0tBSUFOZ0lBSUFaQklCQ0pBeUVISUFJZ0FpZ0NBQ0lQUVFScU5nSUFJQThnQnpZQ0FBd0RDeUFOS0FJRUlBMHRBQXNRL2drTkFpQU5RUUFROVFFb0FnQWhCeUFDSUFJb0FnQWlEMEVFYWpZQ0FDQVBJQWMyQWdBTUFnc2dEQ2dDQkNBTUxRQUxFUDRKSUJSRmNnMEJJQUlnREJDUUJpQU1FTDBGSUFJb0FnQVE5Z3cyQWdBTUFRc2dBaWdDQUNFV0lBUWdGV29pQkNFSEEwQUNRQ0FGSUFkTkRRQWdCa0hBQUNBSEtBSUFFTWtDUlEwQUlBZEJCR29oQnd3QkN3c2dEa0VBU2dSQUlBSW9BZ0FoRHlBT0lSQURRQ0FRUlNBRUlBZFBja1VFUUNBSFFRUnJJZ2NvQWdBaEVpQUNJQTlCQkdvaUVUWUNBQ0FQSUJJMkFnQWdFRUVCYXlFUUlCRWhEd3dCQ3dzQ1FDQVFSUVJBUVFBaEVnd0JDeUFHUVRBUWlRTWhFaUFDS0FJQUlROExBMEFnRDBFRWFpRVJJQkJCQUVvRVFDQVBJQkkyQWdBZ0VFRUJheUVRSUJFaER3d0JDd3NnQWlBUk5nSUFJQThnQ1RZQ0FBc0NRQ0FFSUFkR0JFQWdCa0V3RUlrRElROGdBaUFDS0FJQUloRkJCR29pQnpZQ0FDQVJJQTgyQWdBTUFRc0NmeUFMRUw4RUJFQkJmeUVTUVFBTUFRc2dDMEVBRU9ZQkxBQUFJUkpCQUFzaEQwRUFJUkFEUUNBRUlBZEhCRUFDUUNBUElCSkhCRUFnRHlFUkRBRUxJQUlnQWlnQ0FDSVJRUVJxTmdJQUlCRWdDallDQUVFQUlSRWdDeEE3SUJCQkFXb2lFRTBFUUNBUElSSU1BUXRCZnlFU0lBc2dFQkRtQVMwQUFFSC9BRVlOQUNBTElCQVE1Z0VzQUFBaEVnc2dCMEVFYXlJSEtBSUFJUThnQWlBQ0tBSUFJaGRCQkdvMkFnQWdGeUFQTmdJQUlCRkJBV29oRHd3QkN3c2dBaWdDQUNFSEN5QVdJQWNRZ0FvTElCTkJBV29oRXd3QkN3c0x2d0lCQVg4akFFRVFheUlLSkFBZ0NRSi9JQUFFUUNBQ0VQY1RJUUFDUUNBQkJFQWdDaUFBRUxvRklBTWdDaWdDQURZQUFDQUtJQUFRdVFVTUFRc2dDaUFBRVBFSklBTWdDaWdDQURZQUFDQUtJQUFRMndNTElBZ2dDaENoQXlBS0VJY0JHaUFFSUFBUTJnTTJBZ0FnQlNBQUVPOENOZ0lBSUFvZ0FCRHVBaUFHSUFvUW1nSWdDaEFQR2lBS0lBQVEzQU1nQnlBS0VLRURJQW9RaHdFYUlBQVF1QVVNQVFzZ0FoRDJFeUVBQWtBZ0FRUkFJQW9nQUJDNkJTQURJQW9vQWdBMkFBQWdDaUFBRUxrRkRBRUxJQW9nQUJEeENTQURJQW9vQWdBMkFBQWdDaUFBRU5zREN5QUlJQW9Rb1FNZ0NoQ0hBUm9nQkNBQUVOb0ROZ0lBSUFVZ0FCRHZBallDQUNBS0lBQVE3Z0lnQmlBS0VKb0NJQW9RRHhvZ0NpQUFFTndESUFjZ0NoQ2hBeUFLRUljQkdpQUFFTGdGQ3pZQ0FDQUtRUkJxSkFBTElnRUJmeUFCSUFCcklRTWdBQ0FCUndSQUlBSWdBQ0FERU9jQkdnc2dBaUFEYWdzVUFDQUFFSU1CSUFFUWd3RWdBaENEQVJEd0V3dnpCUUVKZnlBQ0lBQTJBZ0FnQTBHQUJIRWhGUU5BSUJSQkJFWUVRQ0FORUR0QkFVc0VRQ0FORUpJR0lRVWpBRUVRYXlJRUpBQWdCQ0FGTmdJSUlBUkJDR29RZ2djb0FnQWhCU0FFUVJCcUpBQWdBaUFGSUEwUXZnVWdBaWdDQUJEeEV6WUNBQXNnQTBHd0FYRWlBMEVRUndSQUlBRWdBMEVnUmdSL0lBSW9BZ0FGSUFBTE5nSUFDd1VDUUFKQUFrQUNRQUpBQWtBZ0NDQVVhaXdBQUE0RkFBRURBZ1FGQ3lBQklBSW9BZ0EyQWdBTUJBc2dBU0FDS0FJQU5nSUFJQVpCSUJDT0F5RVBJQUlnQWlnQ0FDSVFRUUZxTmdJQUlCQWdEem9BQUF3REN5QU5FTDhFRFFJZ0RVRUFFT1lCTFFBQUlROGdBaUFDS0FJQUloQkJBV28yQWdBZ0VDQVBPZ0FBREFJTElBd1F2d1FnRlVWeURRRWdBaUFNRUpJR0lBd1F2Z1VnQWlnQ0FCRHhFellDQUF3QkN5QUdLQUlJSVE4Z0FpZ0NBQ0VXSUFRZ0Iyb2lCQ0VSQTBBQ1FDQUZJQkZORFFBZ0QwSEFBQ0FSTEFBQUVMMENSUTBBSUJGQkFXb2hFUXdCQ3dzZ0RpSVBRUUJLQkVBRFFDQVBSU0FFSUJGUGNrVUVRQ0FSUVFGckloRXRBQUFoRUNBQ0lBSW9BZ0FpRWtFQmFqWUNBQ0FTSUJBNkFBQWdEMEVCYXlFUERBRUxDeUFQQkg4Z0JrRXdFSTREQlVFQUN5RVNBMEFnQWlBQ0tBSUFJaEJCQVdvMkFnQWdEMEVBU2dSQUlCQWdFam9BQUNBUFFRRnJJUThNQVFzTElCQWdDVG9BQUFzQ1FDQUVJQkZHQkVBZ0JrRXdFSTRESVE4Z0FpQUNLQUlBSWhCQkFXbzJBZ0FnRUNBUE9nQUFEQUVMQW44Z0N4Qy9CQVJBUVg4aEVFRUFEQUVMSUF0QkFCRG1BU3dBQUNFUVFRQUxJUTlCQUNFVEEwQWdCQ0FSUmcwQkFrQWdEeUFRUndSQUlBOGhFZ3dCQ3lBQ0lBSW9BZ0FpRUVFQmFqWUNBQ0FRSUFvNkFBQkJBQ0VTSUFzUU95QVRRUUZxSWhOTkJFQWdEeUVRREFFTFFYOGhFQ0FMSUJNUTVnRXRBQUJCL3dCR0RRQWdDeUFURU9ZQkxBQUFJUkFMSUJGQkFXc2lFUzBBQUNFUElBSWdBaWdDQUNJWFFRRnFOZ0lBSUJjZ0R6b0FBQ0FTUVFGcUlROE1BQXNBQ3lBV0lBSW9BZ0FRa1FZTElCUkJBV29oRkF3QkN3c0x1d0lCQVg4akFFRVFheUlLSkFBZ0NRSi9JQUFFUUNBQ0VQd1RJUUFDUUNBQkJFQWdDaUFBRUxvRklBTWdDaWdDQURZQUFDQUtJQUFRdVFVTUFRc2dDaUFBRVBFSklBTWdDaWdDQURZQUFDQUtJQUFRMndNTElBZ2dDaENhQWlBS0VBOGFJQVFnQUJEYUF6b0FBQ0FGSUFBUTd3STZBQUFnQ2lBQUVPNENJQVlnQ2hDYUFpQUtFQThhSUFvZ0FCRGNBeUFISUFvUW1nSWdDaEFQR2lBQUVMZ0ZEQUVMSUFJUSt4TWhBQUpBSUFFRVFDQUtJQUFRdWdVZ0F5QUtLQUlBTmdBQUlBb2dBQkM1QlF3QkN5QUtJQUFROFFrZ0F5QUtLQUlBTmdBQUlBb2dBQkRiQXdzZ0NDQUtFSm9DSUFvUUR4b2dCQ0FBRU5vRE9nQUFJQVVnQUJEdkFqb0FBQ0FLSUFBUTdnSWdCaUFLRUpvQ0lBb1FEeG9nQ2lBQUVOd0RJQWNnQ2hDYUFpQUtFQThhSUFBUXVBVUxOZ0lBSUFwQkVHb2tBQXNLQUNBQUVJMEdRUUZ6Q3lvQkFYOGdBU0FBRUk4Q0lnSlBCSDhnQWlBQUtBSUVJQUF0QUFzUW1BRkJBblJxSUFGUEJVRUFDd3NMQUNBQVFZaThJQkRlQXdzTEFDQUFRWkM4SUJEZUF3c1VBQ0FBSUFFb0FnQVExQlFnQVNnQ0FCQnBHZ3VRRVFFTmZ5TUFRYkFFYXlJTEpBQWdDeUFLTmdLa0JDQUxJQUUyQXFnRUFrQWdBQ0FMUWFnRWFoQ1FBZ1JBSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQVFzZ0MwSGRGellDWUNBTElBdEJpQUZxSUF0QmtBRnFJQXRCNEFCcUlnRVE5QUVpRWlnQ0FDSU9OZ0tFQVNBTElBNUJrQU5xTmdLQUFTQUJFSFFoRXlBTFFkQUFhaER6QVNFUUlBdEJRR3NROHdFaER5QUxRVEJxRVBNQklRMGdDMEVnYWhEekFTRVJJd0JCRUdzaUFTUUFJQXNDZnlBQ0JFQWdBU0FERVBjVElnSVF1Z1VnQ3lBQktBSUFOZ0I0SUFFZ0FoQzVCU0FOSUFFUW9RTWdBUkNIQVJvZ0FTQUNFTnNESUE4Z0FSQ2hBeUFCRUljQkdpQUxJQUlRMmdNMkFuUWdDeUFDRU84Q05nSndJQUVnQWhEdUFpQVRJQUVRbWdJZ0FSQVBHaUFCSUFJUTNBTWdFQ0FCRUtFRElBRVFod0VhSUFJUXVBVU1BUXNnQVNBREVQWVRJZ0lRdWdVZ0N5QUJLQUlBTmdCNElBRWdBaEM1QlNBTklBRVFvUU1nQVJDSEFSb2dBU0FDRU5zRElBOGdBUkNoQXlBQkVJY0JHaUFMSUFJUTJnTTJBblFnQ3lBQ0VPOENOZ0p3SUFFZ0FoRHVBaUFUSUFFUW1nSWdBUkFQR2lBQklBSVEzQU1nRUNBQkVLRURJQUVRaHdFYUlBSVF1QVVMTmdJY0lBRkJFR29rQUNBSklBZ29BZ0EyQWdBZ0JFR0FCSEVpRmtFSmRpRVhJQXNvQWh3aEFrRUFJUU5CQUNFRUEwQUNRQUpBQWtBQ1FBSkFJQU5CQkVZTkFDQUFJQXRCcUFScUVOb0NSUTBBQWtBQ1FBSkFBa0FDUUFKQUlBdEIrQUJxSUFOcUxBQUFEZ1VCQUFRREJRb0xJQU5CQTBZTkNTQUhRUUVnQUNnQ0FCRHRBUkRKQWdSQUlBdEJFR29nQUJENEV5QVJJQXNvQWhBUXN3RU1BZ3NnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdJQ3lBRFFRTkdEUWdMQTBBZ0FDQUxRYWdFYWhEYUFrVU5DQ0FIUVFFZ0FDZ0NBQkR0QVJESkFrVU5DQ0FMUVJCcUlBQVErQk1nRVNBTEtBSVFFTE1CREFBTEFBc0NRQ0FQS0FJRUlBOHRBQXNRbUFGRkRRQWdBQ2dDQUJEdEFTQVBRUUFROVFFb0FnQkhEUUFnQUJDaEFob2dCa0VBT2dBQUlBOGdCQ0FQS0FJRUlBOHRBQXNRbUFGQkFVc2JJUVFNQndzQ1FDQU5LQUlFSUEwdEFBc1FtQUZGRFFBZ0FDZ0NBQkR0QVNBTlFRQVE5UUVvQWdCSERRQWdBQkNoQWhvZ0JrRUJPZ0FBSUEwZ0JDQU5LQUlFSUEwdEFBc1FtQUZCQVVzYklRUU1Cd3NDUUNBUEtBSUVJQTh0QUFzUW1BRWlBVVVOQUNBTktBSUVJQTB0QUFzUW1BRkZEUUFnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdHQ3lBQklBMG9BZ1FnRFMwQUN4Q1lBU0lLY2tVTkJpQUdJQXBGT2dBQURBWUxBa0FnQkNBRFFRSkpjZzBBSUFOQkFrWWdDeTBBZTBFQVIzRWdGM0lOQUVFQUlRUU1CZ3NnQzBFUWFpQVFFSkFHRUlBRElRb0NRQ0FEUlEwQUlBTWdDMm90QUhkQkFVc05BQU5BQWtBZ0VCQzlCU0VCSUFvb0FnQWlEQ0FCRUwwRVJRMEFJQWRCQVNBTUtBSUFFTWtDUlEwQUlBb1FnUWNhREFFTEN5QVFFSkFHSVFFZ0NpZ0NBQ0FCYTBFQ2RTSU1JQkVvQWdRZ0VTMEFDeENZQVUwRVFDQVJFTDBGSVJRakFFRVFheUlCSkFBZ0FTQVVOZ0lJSUFFZ0FTZ0NDRUVBSUF4clFRSjBhallDQ0NBQktBSUlJUXdnQVVFUWFpUUFJQkVRdlFVaEZDQVFFSkFHSVJVakFFRVFheUlCSkFBZ0FTQVZOZ0lBSUFFZ0REWUNDQU5BQWtBZ0RDQVVFTDBFSWhWRkRRQWdEQ2dDQUNBQktBSUFLQUlBRUpzTlJRMEFJQUZCQ0dvUWdRY2hEQ0FCRUlFSEdpQU1LQUlBSVF3TUFRc0xJQUZCRUdva0FDQVZRUUZ6RFFFTElBb2dDMEVJYWlBUUVKQUdFSUFES0FJQU5nSUFDeUFMSUFvb0FnQTJBZ2dEUUFKQUlCQVF2UVVoQVNBTEtBSUlJQUVRdlFSRkRRQWdBQ0FMUWFnRWFoRGFBa1VOQUNBQUtBSUFFTzBCSUFzb0FnZ29BZ0JIRFFBZ0FCQ2hBaG9nQzBFSWFoQ0JCeG9NQVFzTElCWkZEUVVnRUJDOUJTRUJJQXNvQWdnZ0FSQzlCRVVOQlNBRklBVW9BZ0JCQkhJMkFnQkJBQ0VBREFRTFFRQWhDaUFMS0FKd0lSUWdEaUVCQTBBQ1FDQUFJQXRCcUFScUVOb0NSUTBBQW44Z0IwSEFBQ0FBS0FJQUVPMEJJZ3dReVFJRVFDQUpLQUlBSWc0Z0N5Z0NwQVJHQkVBZ0NDQUpJQXRCcEFScUVQOEdJQWtvQWdBaERnc2dDU0FPUVFScU5nSUFJQTRnRERZQ0FDQUtRUUZxREFFTElCTVFPMFVnQ2tWeUlBd2dGRWR5RFFFZ0N5Z0NnQUVnQVVZRVFDQVNJQXRCaEFGcUlBdEJnQUZxRVA4R0lBc29Bb1FCSVFFTElBc2dBVUVFYWlJT05nS0VBU0FCSUFvMkFnQWdEaUVCUVFBTElRb2dBQkNoQWhvTUFRc0xJQXBGSUJJb0FnQWdBVVp5RFFFZ0N5Z0NnQUVnQVVZRVFDQVNJQXRCaEFGcUlBdEJnQUZxRVA4R0lBc29Bb1FCSVFFTElBc2dBVUVFYWlJT05nS0VBU0FCSUFvMkFnQU1BZ3NnQ3lBQ05nSWNBa0FnQkVVTkFFRUJJUW9EUUNBRUtBSUVJQVF0QUFzUW1BRWdDazBOQVFKQUlBQWdDMEdvQkdvUWtBSkZCRUFnQUNnQ0FCRHRBU0FFSUFvUTlRRW9BZ0JHRFFFTElBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUJRc2dBQkNoQWhvZ0NrRUJhaUVLREFBTEFBdEJBU0VBSUJJb0FnQWlBU0FPUmcwQ1FRQWhBQ0FMUVFBMkFoQWdFeUFCSUE0Z0MwRVFhaERJQWlBTEtBSVFCRUFnQlNBRktBSUFRUVJ5TmdJQURBTUxRUUVoQUF3Q0N5QUJJUTRMQWtBZ0FrRUFUQTBBQWtBZ0FDQUxRYWdFYWhDUUFrVUVRQ0FBS0FJQUVPMEJJQXNvQW5SR0RRRUxJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1BZ3NEUUNBQUVLRUNJUUVnQWtFQVRBUkFRUUFoQWd3Q0N3SkFJQUVnQzBHb0JHb1FrQUpGQkVBZ0IwSEFBQ0FCS0FJQUVPMEJFTWtDRFFFTElBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUF3c2dDU2dDQUNBTEtBS2tCRVlFUUNBSUlBa2dDMEdrQkdvUS93WUxJQUVvQWdBUTdRRWhBU0FKSUFrb0FnQWlDa0VFYWpZQ0FDQUtJQUUyQWdBZ0FrRUJheUVDREFBTEFBc2dDU2dDQUNBSUtBSUFSdzBCSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFMSUJFUWh3RWFJQTBRaHdFYUlBOFFod0VhSUJBUWh3RWFJQk1RRHhvZ0VoRFlBUXdDQ3lBRFFRRnFJUU1NQUFzQUN5QUxRYkFFYWlRQUlBQUxJZ0FnQUNBQkVLVUlFSVlDSUFFUXhnVWhBU0FBRU1ZRklBRW9BZ0EyQWdBZ0FBc0xBQ0FBUWZpN0lCRGVBd3NMQUNBQVFZQzhJQkRlQXd1dkFRRUdmeU1BUVJCcklnTWtBQ0FCS0FJQUlRaEJBQ0FBS0FJQUlnY2dBQkRHQlNnQ0FFSGRGMFlpQkJ0QmZ5QUNLQUlBSUFkcklnVkJBWFFpQmtFQklBWWJJQVZCLy8vLy93ZFBHeUlGRUtJS0lnWUVRQ0FFUlFSQUlBQVFwUWdhQ3lBRFFkc1hOZ0lFSUFBZ0EwRUlhaUFHSUFOQkJHb1E5QUVpQkJENkV5RUFJQVFRMkFFZ0FTQUFLQUlBSUFnZ0IydHFOZ0lBSUFJZ0FDZ0NBQ0FGYWpZQ0FDQURRUkJxSkFBUEN4QnZBQXNsQVFGL0lBRW9BZ0FRNUJSQkdIUkJHSFVoQWlBQUlBRW9BZ0EyQWdRZ0FDQUNPZ0FBQzhnUUFRMS9Jd0JCb0FScklnc2tBQ0FMSUFvMkFwUUVJQXNnQVRZQ21BUUNRQ0FBSUF0Qm1BUnFFSWNDQkVBZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3QkN5QUxRZDBYTmdKWUlBc2dDMEg0QUdvZ0MwR0FBV29nQzBIWUFHb2lBUkQwQVNJU0tBSUFJZ3cyQW5RZ0N5QU1RWkFEYWpZQ2NDQUJFSFFoRXlBTFFjZ0FhaEIwSVEwZ0MwRTRhaEIwSVE4Z0MwRW9haEIwSVE0Z0MwRVlhaEIwSVJFakFFRVFheUlCSkFBZ0N3Si9JQUlFUUNBQklBTVEvQk1pQWhDNkJTQUxJQUVvQWdBMkFHZ2dBU0FDRUxrRklBNGdBUkNhQWlBQkVBOGFJQUVnQWhEYkF5QVBJQUVRbWdJZ0FSQVBHaUFMSUFJUTJnTTZBR2NnQ3lBQ0VPOENPZ0JtSUFFZ0FoRHVBaUFUSUFFUW1nSWdBUkFQR2lBQklBSVEzQU1nRFNBQkVKb0NJQUVRRHhvZ0FoQzRCUXdCQ3lBQklBTVEreE1pQWhDNkJTQUxJQUVvQWdBMkFHZ2dBU0FDRUxrRklBNGdBUkNhQWlBQkVBOGFJQUVnQWhEYkF5QVBJQUVRbWdJZ0FSQVBHaUFMSUFJUTJnTTZBR2NnQ3lBQ0VPOENPZ0JtSUFFZ0FoRHVBaUFUSUFFUW1nSWdBUkFQR2lBQklBSVEzQU1nRFNBQkVKb0NJQUVRRHhvZ0FoQzRCUXMyQWhRZ0FVRVFhaVFBSUFrZ0NDZ0NBRFlDQUNBRVFZQUVjU0lXUVFsMklSY2dDeWdDRkNFQ0lBY2hCRUVBSVFNRFFBSkFBa0FDUUFKQUFrQWdBMEVFUmcwQUlBQWdDMEdZQkdvUXlnSkZEUUFDUUFKQUFrQUNRQUpBQWtBZ0MwSG9BR29nQTJvc0FBQU9CUUVBQkFNRkNnc2dBMEVEUmcwSklBQW9BZ0FRN2dFaEFTQUVLQUlJUVFFZ0FSQzlBZ1JBSUF0QkNHb2dBQkQrRXlBUklBc3NBQWdRcEFFTUFnc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0lDeUFEUVFOR0RRZ0xBMEFnQUNBTFFaZ0VhaERLQWtVTkNDQUFLQUlBRU80QklRRWdCQ2dDQ0VFQklBRVF2UUpGRFFnZ0MwRUlhaUFBRVA0VElCRWdDeXdBQ0JDa0FRd0FDd0FMQWtBZ0R4QTdSUTBBSUFBb0FnQVE3Z0ZCL3dGeElBOUJBQkNKQVMwQUFFY05BQ0FBRUpzQ0dpQUdRUUE2QUFBZ0R5QVFJQThRTzBFQlN4c2hFQXdIQ3dKQUlBNFFPMFVOQUNBQUtBSUFFTzRCUWY4QmNTQU9RUUFRaVFFdEFBQkhEUUFnQUJDYkFob2dCa0VCT2dBQUlBNGdFQ0FPRUR0QkFVc2JJUkFNQndzQ1FDQVBFRHRGRFFBZ0RoQTdSUTBBSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQmdzZ0R4QTdSUVJBSUE0UU8wVU5Cd3NnQmlBT0VEdEZPZ0FBREFZTEFrQWdFQ0FEUVFKSmNnMEFJQU5CQWtZZ0N5MEFhMEVBUjNFZ0YzSU5BRUVBSVJBTUJnc2dDMEVJYWlBTkVKSUdFSUFESVFjQ1FDQURSUTBBSUFNZ0Myb3RBR2RCQVVzTkFBTkFBa0FnRFJDK0JTRUJJQWNvQWdBaUNpQUJFTDBFUlEwQUlBUW9BZ2hCQVNBS0xBQUFFTDBDUlEwQUlBY1FnZ2NhREFFTEN5QU5FSklHSVFFZ0J5Z0NBQ0FCYXlJS0lCRVFPMDBFUUNBUkVMNEZJUlFqQUVFUWF5SUJKQUFnQVNBVU5nSUlJQUVnQVNnQ0NDQUthellDQ0NBQktBSUlJUW9nQVVFUWFpUUFJQkVRdmdVaEZDQU5FSklHSVJVakFFRVFheUlCSkFBZ0FTQVZOZ0lBSUFFZ0NqWUNDQU5BQWtBZ0NpQVVFTDBFSWhWRkRRQWdDaTBBQUNBQktBSUFMUUFBUncwQUlBRkJDR29RZ2djaENpQUJFSUlIR2lBS0tBSUFJUW9NQVFzTElBRkJFR29rQUNBVlFRRnpEUUVMSUFjZ0N5QU5FSklHRUlBREtBSUFOZ0lBQ3lBTElBY29BZ0EyQWdBRFFBSkFJQTBRdmdVaEFTQUxLQUlBSUFFUXZRUkZEUUFnQUNBTFFaZ0VhaERLQWtVTkFDQUFLQUlBRU80QlFmOEJjU0FMS0FJQUxRQUFSdzBBSUFBUW13SWFJQXNRZ2djYURBRUxDeUFXUlEwRklBMFF2Z1VoQVNBTEtBSUFJQUVRdlFSRkRRVWdCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0VDMEVBSVFFZ0N5MEFaaUVVSUF3aEJ3TkFBa0FnQUNBTFFaZ0VhaERLQWtVTkFDQUFLQUlBRU80QklRb0NmeUFFS0FJSVFjQUFJQW9RdlFJRVFDQUpLQUlBSWd3Z0N5Z0NsQVJHQkVBZ0NDQUpJQXRCbEFScUVQMFRJQWtvQWdBaERBc2dDU0FNUVFGcU5nSUFJQXdnQ2pvQUFDQUJRUUZxREFFTElCTVFPMFVnQVVWeUlBcEIvd0Z4SUJSSGNnMEJJQXNvQW5BZ0IwWUVRQ0FTSUF0QjlBQnFJQXRCOEFCcUVQOEdJQXNvQW5RaEJ3c2dDeUFIUVFScUlnbzJBblFnQnlBQk5nSUFJQW9oQjBFQUN5RUJJQUFRbXdJYURBRUxDeUFCUlNBU0tBSUFJQWRHY2cwQklBc29BbkFnQjBZRVFDQVNJQXRCOUFCcUlBdEI4QUJxRVA4R0lBc29BblFoQndzZ0N5QUhRUVJxSWd3MkFuUWdCeUFCTmdJQURBSUxBa0FnRUVVTkFFRUJJUW9EUUNBUUVEc2dDazBOQVFKQUlBQWdDMEdZQkdvUWh3SkZCRUFnQUNnQ0FCRHVBVUgvQVhFZ0VDQUtFT1lCTFFBQVJnMEJDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVVMSUFBUW13SWFJQXBCQVdvaENnd0FDd0FMUVFFaEFDQVNLQUlBSWdFZ0RFWU5Ba0VBSVFBZ0MwRUFOZ0lJSUJNZ0FTQU1JQXRCQ0dvUXlBSWdDeWdDQ0FSQUlBVWdCU2dDQUVFRWNqWUNBQXdEQzBFQklRQU1BZ3NnQnlFTUN3SkFJQUpCQUV3TkFBSkFJQUFnQzBHWUJHb1Fod0pGQkVBZ0FDZ0NBQkR1QVVIL0FYRWdDeTBBWjBZTkFRc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0NDd05BSUFBUW13SWhBU0FDUVFCTUJFQkJBQ0VDREFJTEFrQWdBU0FMUVpnRWFoQ0hBa1VFUUNBQktBSUFFTzRCSVFjZ0JDZ0NDRUhBQUNBSEVMMENEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQXdzZ0NTZ0NBQ0FMS0FLVUJFWUVRQ0FJSUFrZ0MwR1VCR29RL1JNTElBRW9BZ0FRN2dFaEFTQUpJQWtvQWdBaUIwRUJhallDQUNBSElBRTZBQUFnQWtFQmF5RUNEQUFMQUFzZ0NTZ0NBQ0FJS0FJQVJ3MEJJQVVnQlNnQ0FFRUVjallDQUVFQUlRQUxJQkVRRHhvZ0RoQVBHaUFQRUE4YUlBMFFEeG9nRXhBUEdpQVNFTmdCREFJTElBTkJBV29oQXd3QUN3QUxJQXRCb0FScUpBQWdBQXNNQUNBQUlBRW9Ba2cyQUFBTEJ3QWdBQ2dDUUFzTkFDQUFJQUZCTkdvUWdBY2FDdzBBSUFBZ0FVRW9haENBQnhvTDF3Y0JCMzhqQUVIZ0FHc2lCaVFBSUFaQkFEWUNSQ0FFSUFRb0FnQW9BZ2dSQUFBZ0JrSEVBR29RSWhvZ0JrRUFOZ0pBSUFVZ0JTZ0NBQ2dDQ0JFQUFDQUdRVUJyRUNJYUFrQWdCaWdDUkNJSElBWW9Ba0FpQ0NBSElBaExHeUlLUVFGR0JFQWdBeWdDQUNFQklBTW9BZ1FoQWlBRUlBUW9BZ0FvQWdnUkFBQWhCeUFHSUFFMkFoQWdCaUFDS1FJSU53SWNJQVlnQWlnQ0VEWUNKQ0FHSUFJcEFnQTNBaFFnQmlBSE5nSW9JQVFnQkNnQ0FDZ0NDQkVBQUNJRFJRUkFJQUJCQURvQUJBd0NDeUFHUVJCcVFRUnlJUUlDUUFKQUlBTW9BZ1FpQTBIUW9CSkdCRUFnQmtIUUFHb2lBeUFCSUFJZ0JCQmpJQVVRWXhDT0JpQURFTElCQkVBZ0JrSElBR29nQVNBR0tBSW9JQVpCMEFCcUVFb3BBd0FRL1FFTUFnc2dCa0VDT2dCTURBRUxJQU5COEo4U1JnUkFJQVpCMEFCcUlnTWdBU0FDSUFRUVBDQUZFRHdRMkFNZ0F4Q3lBUVJBSUFaQnlBQnFJQUVnQWlBR0tBSW9JQVpCMEFCcUVFb3JBd0FRY3d3Q0N5QUdRUUk2QUV3TUFRc2dBMEd3cVJKR0JFQWdCa0hRQUdvaUF5QUJJQUlnQkJBMElBVVFOQkRYQXlBREVDc0VRQ0FHUWNnQWFpQUJJQUlnQmlnQ0tDQUdRZEFBYWhBYUtnSUFFR3NNQWdzZ0JrRUNPZ0JNREFFTElBTkJrS29TUmdSQUlBUVFZU0VESUFVUVlTRUVJQVpCQVRvQVZDQUdJQU1nQkdvMkFsQWdCa0hRQUdvUUt3UkFJQVpCeUFCcUlBRWdCeUFHUWRBQWFoQWFLQUlBRUxFQkRBSUxJQVpCQWpvQVRBd0JDeUFEUWFDekVrWUVRQ0FFRUZraEF5QUZFRmtoQkNBR1FRRTZBRlFnQmlBRElBUnFOZ0pRSUFaQjBBQnFFQ3NFUUNBR1FjZ0FhaUFCSUFjZ0JrSFFBR29RR2lnQ0FCQ3RBUXdDQ3lBR1FRSTZBRXdNQVFzZ0EwSFFxQkpIRFFFZ0JrSFFBR29pQXlBQklBSWdCQkEvSUFVUVB4RFdBeUFERUNzRVFDQUdRY2dBYWlBQklBSWdCaWdDS0NBR1FkQUFhaEFhS2dJQUVISU1BUXNnQmtFQ09nQk1DeUFBSUFZcEEwZzNBZ0FNQWdzZ0FFRUFPZ0FFREFFTElBWkNnSUNBZ0lBQk53STBJQVlnQmtFUWFpSUlOZ0l3SUFnZ0NoQTVJQVpCTUdvaEN3SkFBa0FEUUNBSklBcEdEUUVnQkNFSElBVWhDQ0FHUWRBQWFpSU1JQUVnQWtFQUVDSWdBeUFHS0FKRVFRRkhCSDhnQkNBSklBUW9BZ0FvQWd3UkFRQUZJQWNMSUFZb0FrQkJBVWNFZnlBRklBa2dCU2dDQUNnQ0RCRUJBQVVnQ0FzUWhCUWdEQkFyQkVBZ0JrRVFhaUFHUWRBQWFoQWFFQ1FnQ1VFQmFpRUpEQUVMQ3lBR1FkQUFhaEE5R2lBQVFRSTZBQVFNQVFzZ0JpQUxOZ0lJSUFZZ0JpZ0NNQ0FHUVJCcVJ6b0FEQ0FCSUFJZ0JrRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQmtFUWFoQWpDeUFHUWVBQWFpUUFDdzBBSUFBZ0FVRWNhaENBQnhvTERBQWdBQ0FCS0FKQU5nQUFDd2NBSUFBb0Fqd0xEQUFnQUNBQlFUQnFFRlFhQ3d3QUlBQWdBVUVrYWhCVUdnc01BQ0FBSUFGQkdHb1FWQm9MREFBZ0FFRUJRUzBRL1F3YUN3d0FJQUJCQVVFdEVLb1lHZ3V5QWdFRmZ5TUFRZEFBYXlJR0pBQWdCa0VBTmdKTUFrQWdCU2dDQUNJSElBY29BZ0FvQWdnUkFBQWlCeUFHUWN3QWFoQWlJQWRHQkVBZ0FDQURJQVVvQWdBUWtSUU1BUXNnQmtLQWdJQ0FnQUUzQWtRZ0JpQUdRU0JxSWdjMkFrQWdCeUFHS0FKTUVEa2dCa0ZBYXlFSlFRQWhCd0pBQWtBRFFDQUhJQVlvQWt4UERRRWdBa0VBRUNJaENpQUdJQVVvQWdBaUNDQUhJQWdvQWdBb0Fnd1JBUUEyQWhRZ0JrRVlhaUlJSUFFZ0NpQURJQVFnQjJvZ0JrRVVhaENORkNBSUVDc0VRQ0FHUVNCcUlBWkJHR29RR2hBa0lBZEJBV29oQnd3QkN3c2dCa0VZYWhBOUdpQUFRUUk2QUFRTUFRc2dCaUFKTmdJSUlBWWdCaWdDUUNBR1FTQnFSem9BRENBQklBSWdCa0VJYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JrRWdhaEFqQ3lBR1FkQUFhaVFBQzJFQkFYOGpBRUVRYXlJR0pBQWdCa0VBT2dBUElBWWdCVG9BRGlBR0lBUTZBQTBnQmtFbE9nQU1JQVVFUUNBR1FRMXFJQVpCRG1vUTl4UUxJQUlnQVNBQklBSW9BZ0FRenhRZ0JrRU1haUFESUFBUUFpQUJhallDQUNBR1FSQnFKQUFMUWdBZ0FTQUNJQU1nQkVFRUVMa0VJUUVnQXkwQUFFRUVjVVVFUUNBQUlBRkIwQTlxSUFGQjdBNXFJQUVnQVVIa0FFZ2JJQUZCeFFCSUcwSHNEbXMyQWdBTEMwQUFJQUlnQXlBQVFRaHFJQUFvQWdnb0FnUVJBQUFpQUNBQVFhQUNhaUFGSUFSQkFCRC9DU0FBYXlJQVFaOENUQVJBSUFFZ0FFRU1iVUVNYnpZQ0FBc0xNZ0VDZnlBQktBSUVJUU1nQVNnQ0FDRUJJQUlRK2dFaEJDQUFJQUVnQWlBQ0tBSUFLQUlJRVFBQUlBUkJBWE1RaUFFTFFBQWdBaUFESUFCQkNHb2dBQ2dDQ0NnQ0FCRUFBQ0lBSUFCQnFBRnFJQVVnQkVFQUVQOEpJQUJySWdCQnB3Rk1CRUFnQVNBQVFReHRRUWR2TmdJQUN3dENBQ0FCSUFJZ0F5QUVRUVFRdWdRaEFTQURMUUFBUVFSeFJRUkFJQUFnQVVIUUQyb2dBVUhzRG1vZ0FTQUJRZVFBU0JzZ0FVSEZBRWdiUWV3T2F6WUNBQXNMUUFBZ0FpQURJQUJCQ0dvZ0FDZ0NDQ2dDQkJFQUFDSUFJQUJCb0FKcUlBVWdCRUVBRUlNS0lBQnJJZ0JCbndKTUJFQWdBU0FBUVF4dFFReHZOZ0lBQ3d0QUFDQUNJQU1nQUVFSWFpQUFLQUlJS0FJQUVRQUFJZ0FnQUVHb0FXb2dCU0FFUVFBUWd3b2dBR3NpQUVHbkFVd0VRQ0FCSUFCQkRHMUJCMjgyQWdBTEM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkNaRkF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVKWVVJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUx4Z1VCQ244akFFRVFheUlKSkFBZ0JoRHdBaUVLSUFrZ0JoQ0ZCeUlORU80Q0lBVWdBellDQUFKQUFrQWdBQ0lITFFBQUlnWkJLMnNPQXdBQkFBRUxJQW9nQmtFWWRFRVlkUkNKQXlFR0lBVWdCU2dDQUNJSFFRUnFOZ0lBSUFjZ0JqWUNBQ0FBUVFGcUlRY0xBa0FDUUNBQ0lBY2lCbXRCQWtnTkFDQUhMUUFBUVRCSERRQWdCeTBBQVVFZ2NrSDRBRWNOQUNBS1FUQVFpUU1oQmlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFZMkFnQWdDaUFITEFBQkVJa0RJUVlnQlNBRktBSUFJZ2hCQkdvMkFnQWdDQ0FHTmdJQUlBZEJBbW9pQnlFR0EwQWdBaUFHVFEwQ0lBWXNBQUFoQ0JEQUFSb2dDQkNORlVVTkFpQUdRUUZxSVFZTUFBc0FDd05BSUFJZ0JrME5BU0FHTEFBQUlRZ1F3QUVhSUFnUXVnTkZEUUVnQmtFQmFpRUdEQUFMQUFzQ1FDQUpFTDhFQkVBZ0NpQUhJQVlnQlNnQ0FCRDZCQ0FGSUFVb0FnQWdCaUFIYTBFQ2RHbzJBZ0FNQVFzZ0J5QUdFSkVHSUEwUTd3SWhEaUFISVFnRFFDQUdJQWhOQkVBZ0F5QUhJQUJyUVFKMGFpQUZLQUlBRUlBS0JRSkFJQWtnQ3hDSkFTd0FBRUVBVEEwQUlBd2dDU0FMRUlrQkxBQUFSdzBBSUFVZ0JTZ0NBQ0lNUVFScU5nSUFJQXdnRGpZQ0FDQUxJQXNnQ1JBN1FRRnJTV29oQzBFQUlRd0xJQW9nQ0N3QUFCQ0pBeUVQSUFVZ0JTZ0NBQ0lRUVFScU5nSUFJQkFnRHpZQ0FDQUlRUUZxSVFnZ0RFRUJhaUVNREFFTEN3c0NRQUpBQTBBZ0FpQUdUUTBCSUFZdEFBQWlCMEV1UndSQUlBb2dCMEVZZEVFWWRSQ0pBeUVISUFVZ0JTZ0NBQ0lJUVFScU5nSUFJQWdnQnpZQ0FDQUdRUUZxSVFZTUFRc0xJQTBRMmdNaEJ5QUZJQVVvQWdBaUMwRUVhaUlJTmdJQUlBc2dCellDQUNBR1FRRnFJUVlNQVFzZ0JTZ0NBQ0VJQ3lBS0lBWWdBaUFJRVBvRUlBVWdCU2dDQUNBQ0lBWnJRUUowYWlJRk5nSUFJQVFnQlNBRElBRWdBR3RCQW5ScUlBRWdBa1liTmdJQUlBa1FEeG9nQ1VFUWFpUUFDK0FEQVFoL0l3QkJFR3NpQ2lRQUlBWVE4QUloQ3lBS0lBWVFoUWNpQmhEdUFnSkFJQW9RdndRRVFDQUxJQUFnQWlBREVQb0VJQVVnQXlBQ0lBQnJRUUowYWlJR05nSUFEQUVMSUFVZ0F6WUNBQUpBQWtBZ0FDSUlMUUFBSWdkQksyc09Bd0FCQUFFTElBc2dCMEVZZEVFWWRSQ0pBeUVJSUFVZ0JTZ0NBQ0lIUVFScU5nSUFJQWNnQ0RZQ0FDQUFRUUZxSVFnTEFrQWdBaUFJYTBFQ1NBMEFJQWd0QUFCQk1FY05BQ0FJTFFBQlFTQnlRZmdBUncwQUlBdEJNQkNKQXlFSElBVWdCU2dDQUNJSlFRUnFOZ0lBSUFrZ0J6WUNBQ0FMSUFnc0FBRVFpUU1oQnlBRklBVW9BZ0FpQ1VFRWFqWUNBQ0FKSUFjMkFnQWdDRUVDYWlFSUN5QUlJQUlRa1FaQkFDRUpJQVlRN3dJaERFRUFJUWNnQ0NFR0EzOGdBaUFHVFFSL0lBTWdDQ0FBYTBFQ2RHb2dCU2dDQUJDQUNpQUZLQUlBQlFKQUlBb2dCeENKQVMwQUFFVU5BQ0FKSUFvZ0J4Q0pBU3dBQUVjTkFDQUZJQVVvQWdBaUNVRUVhallDQUNBSklBdzJBZ0FnQnlBSElBb1FPMEVCYTBscUlRZEJBQ0VKQ3lBTElBWXNBQUFRaVFNaERTQUZJQVVvQWdBaURrRUVhallDQUNBT0lBMDJBZ0FnQmtFQmFpRUdJQWxCQVdvaENRd0JDd3NoQmdzZ0JDQUdJQU1nQVNBQWEwRUNkR29nQVNBQ1JoczJBZ0FnQ2hBUEdpQUtRUkJxSkFBTHh3SUVBMzhCZlFGK0FYd2pBRUVRYXlJRUpBQWdBU2dDQkNFRklBRW9BZ0FoQVFKQUlBSWdBaWdDQUNnQ0NCRUFBQ0lEUlFSQUlBQkJBRG9BQkF3QkN3SkFBa0FnQXlnQ0JDSURRZENnRWtZRVFDQUNFR01oQnlBRVFRaHFJQUVnQWlBQ0tBSUFLQUlJRVFBQVFnQWdCMzBRL1FFTUFRc2dBMEh3bnhKR0JFQWdBaEE4SVFnZ0JFRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWlhRUhNTUFRc2dBMEd3cVJKR0JFQWdBaEEwSVFZZ0JFRUlhaUFCSUFVZ0FpQUNLQUlBS0FJSUVRQUFJQWFNRUdzTUFRc2dBMEdRcWhKR0JFQWdBaEJoSVFNZ0JFRUlhaUFCSUFJZ0FpZ0NBQ2dDQ0JFQUFFRUFJQU5yRUxFQkRBRUxJQU5CMEtnU1J3MEJJQUlRUHlFR0lBUkJDR29nQVNBRklBSWdBaWdDQUNnQ0NCRUFBQ0FHakJCR0VISUxJQUFnQkNrRENEY0NBQXdCQ3lBQVFRQTZBQVFMSUFSQkVHb2tBQXV4QlFFS2Z5TUFRUkJySWdra0FDQUdFTU1DSVFvZ0NTQUdFSWtISWcwUTdnSWdCU0FETmdJQUFrQUNRQ0FBSWdjdEFBQWlCa0VyYXc0REFBRUFBUXNnQ2lBR1FSaDBRUmgxRUk0RElRWWdCU0FGS0FJQUlnZEJBV28yQWdBZ0J5QUdPZ0FBSUFCQkFXb2hCd3NDUUFKQUlBSWdCeUlHYTBFQ1NBMEFJQWN0QUFCQk1FY05BQ0FITFFBQlFTQnlRZmdBUncwQUlBcEJNQkNPQXlFR0lBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0Jqb0FBQ0FLSUFjc0FBRVFqZ01oQmlBRklBVW9BZ0FpQ0VFQmFqWUNBQ0FJSUFZNkFBQWdCMEVDYWlJSElRWURRQ0FDSUFaTkRRSWdCaXdBQUNFSUVNQUJHaUFJRUkwVlJRMENJQVpCQVdvaEJnd0FDd0FMQTBBZ0FpQUdUUTBCSUFZc0FBQWhDQkRBQVJvZ0NCQzZBMFVOQVNBR1FRRnFJUVlNQUFzQUN3SkFJQWtRdndRRVFDQUtJQWNnQmlBRktBSUFFTDhGSUFVZ0JTZ0NBQ0FHSUFkcmFqWUNBQXdCQ3lBSElBWVFrUVlnRFJEdkFpRU9JQWNoQ0FOQUlBWWdDRTBFUUNBRElBY2dBR3RxSUFVb0FnQVFrUVlGQWtBZ0NTQU1FSWtCTEFBQVFRQk1EUUFnQ3lBSklBd1FpUUVzQUFCSERRQWdCU0FGS0FJQUlndEJBV28yQWdBZ0N5QU9PZ0FBSUF3Z0RDQUpFRHRCQVd0SmFpRU1RUUFoQ3dzZ0NpQUlMQUFBRUk0RElROGdCU0FGS0FJQUloQkJBV28yQWdBZ0VDQVBPZ0FBSUFoQkFXb2hDQ0FMUVFGcUlRc01BUXNMQ3dOQUFrQWdBaUFHU3dSQUlBWXRBQUFpQjBFdVJ3MEJJQTBRMmdNaEJ5QUZJQVVvQWdBaUNFRUJhallDQUNBSUlBYzZBQUFnQmtFQmFpRUdDeUFLSUFZZ0FpQUZLQUlBRUw4RklBVWdCU2dDQUNBQ0lBWnJhaUlGTmdJQUlBUWdCU0FESUFFZ0FHdHFJQUVnQWtZYk5nSUFJQWtRRHhvZ0NVRVFhaVFBRHdzZ0NpQUhRUmgwUVJoMUVJNERJUWNnQlNBRktBSUFJZ2hCQVdvMkFnQWdDQ0FIT2dBQUlBWkJBV29oQmd3QUN3QUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNaRkF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKWVVJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxFd0FnQVFSQUlBQWdBaENsQXlBQkVIa2FDd3ZYQXdFSWZ5TUFRUkJySWdva0FDQUdFTU1DSVFzZ0NpQUdFSWtISWdZUTdnSUNRQ0FLRUw4RUJFQWdDeUFBSUFJZ0F4Qy9CU0FGSUFNZ0FpQUFhMm9pQmpZQ0FBd0JDeUFGSUFNMkFnQUNRQUpBSUFBaUNDMEFBQ0lIUVN0ckRnTUFBUUFCQ3lBTElBZEJHSFJCR0hVUWpnTWhDQ0FGSUFVb0FnQWlCMEVCYWpZQ0FDQUhJQWc2QUFBZ0FFRUJhaUVJQ3dKQUlBSWdDR3RCQWtnTkFDQUlMUUFBUVRCSERRQWdDQzBBQVVFZ2NrSDRBRWNOQUNBTFFUQVFqZ01oQnlBRklBVW9BZ0FpQ1VFQmFqWUNBQ0FKSUFjNkFBQWdDeUFJTEFBQkVJNERJUWNnQlNBRktBSUFJZ2xCQVdvMkFnQWdDU0FIT2dBQUlBaEJBbW9oQ0FzZ0NDQUNFSkVHUVFBaENTQUdFTzhDSVF4QkFDRUhJQWdoQmdOL0lBSWdCazBFZnlBRElBZ2dBR3RxSUFVb0FnQVFrUVlnQlNnQ0FBVUNRQ0FLSUFjUWlRRXRBQUJGRFFBZ0NTQUtJQWNRaVFFc0FBQkhEUUFnQlNBRktBSUFJZ2xCQVdvMkFnQWdDU0FNT2dBQUlBY2dCeUFLRUR0QkFXdEphaUVIUVFBaENRc2dDeUFHTEFBQUVJNERJUTBnQlNBRktBSUFJZzVCQVdvMkFnQWdEaUFOT2dBQUlBWkJBV29oQmlBSlFRRnFJUWtNQVFzTElRWUxJQVFnQmlBRElBRWdBR3RxSUFFZ0FrWWJOZ0lBSUFvUUR4b2dDa0VRYWlRQUM3SUNBUVYvSXdCQjBBQnJJZ1lrQUNBR1FRQTJBa3dDUUNBRktBSUFJZ2NnQnlnQ0FDZ0NDQkVBQUNJSElBWkJ6QUJxRUNJZ0IwWUVRQ0FBSUFNZ0JTZ0NBQkNmRkF3QkN5QUdRb0NBZ0lDQUFUY0NSQ0FHSUFaQklHb2lCellDUUNBSElBWW9Ba3dRT1NBR1FVQnJJUWxCQUNFSEFrQUNRQU5BSUFjZ0JpZ0NURThOQVNBQ1FRQVFJaUVLSUFZZ0JTZ0NBQ0lJSUFjZ0NDZ0NBQ2dDREJFQkFEWUNGQ0FHUVJocUlnZ2dBU0FLSUFNZ0JDQUhhaUFHUVJScUVKNFVJQWdRS3dSQUlBWkJJR29nQmtFWWFoQWFFQ1FnQjBFQmFpRUhEQUVMQ3lBR1FSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBR0lBazJBZ2dnQmlBR0tBSkFJQVpCSUdwSE9nQU1JQUVnQWlBR1FRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFHUVNCcUVDTUxJQVpCMEFCcUpBQUw2QUVDQTM4QmZpTUFRUkJySWdRa0FDQUJLQUlFSVFVZ0FTZ0NBQ0VCQWtBZ0FpQUNLQUlBS0FJSUVRQUFJZ05GQkVBZ0FFRUFPZ0FFREFFTEFrQUNRQ0FES0FJRUlnTkIwS0FTUmdSQUlBSVFZeUVHSUFSQkNHb2dBU0FDSUFJb0FnQW9BZ2dSQUFBZ0JrSi9oUkQ5QVF3QkN5QURRWkNxRWtZRVFDQUNFR0VoQXlBRVFRaHFJQUVnQWlBQ0tBSUFLQUlJRVFBQUlBTkJmM01Rc1FFTUFRc2dBMEdnc3hKSERRRWdBaEJaSVFNZ0JFRUlhaUFCSUFJZ0FpZ0NBQ2dDQ0JFQUFDQURRWDl6RUswQkN5QUFJQVFwQXdnM0FnQU1BUXNnQUVFQU9nQUVDeUFFUVJCcUpBQUxvd01CQTM4akFFSGdBbXNpQUNRQUlBQWdBallDMEFJZ0FDQUJOZ0xZQWlBREVMNEVJUVlnQXlBQVFlQUJhaENhQ0NFSElBQkIwQUZxSUFNZ0FFSE1BbW9RbVFnZ0FFSEFBV29RZENJQklBRVFtd0VRZGlBQUlBRkJBQkNKQVNJQ05nSzhBU0FBSUFCQkVHbzJBZ3dnQUVFQU5nSUlJQUFvQXN3Q0lRTURRQUpBSUFCQjJBSnFJQUJCMEFKcUVOb0NSUTBBSUFBb0Fyd0JJQUVRT3lBQ2FrWUVRQ0FCRURzaENDQUJJQUVRTzBFQmRCQjJJQUVnQVJDYkFSQjJJQUFnQ0NBQlFRQVFpUUVpQW1vMkFyd0JDeUFBS0FMWUFoRHRBU0FHSUFJZ0FFRzhBV29nQUVFSWFpQURJQUJCMEFGcUlBQkJFR29nQUVFTWFpQUhFSU1IRFFBZ0FFSFlBbW9Rb1FJYURBRUxDeUFBUWRBQmFoQTdSU0FBS0FJTUlnTWdBRUVRYW10Qm53Rktja1VFUUNBRElBQW9BZ2cyQWdBZ0EwRUVhaUVEQ3lBRklBSWdBQ2dDdkFFZ0JDQUdFS29VTmdJQUlBQkIwQUZxSUFCQkVHb2dBeUFFRU1nQ0lBQkIyQUpxSUFCQjBBSnFFSkFDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FMWUFpRUNJQUVRRHhvZ0FFSFFBV29RRHhvZ0FFSGdBbW9rQUNBQ0N3NEFJQUFnQVVFQ2RFRUVFT3NLQzdJQ0FRVi9Jd0JCMEFCcklnWWtBQ0FHUVFBMkFrd0NRQ0FGS0FJQUlnY2dCeWdDQUNnQ0NCRUFBQ0lISUFaQnpBQnFFQ0lnQjBZRVFDQUFJQU1nQlNnQ0FCQ2xGQXdCQ3lBR1FvQ0FnSUNBQVRjQ1JDQUdJQVpCSUdvaUJ6WUNRQ0FISUFZb0Frd1FPU0FHUVVCcklRbEJBQ0VIQWtBQ1FBTkFJQWNnQmlnQ1RFOE5BU0FDUVFBUUlpRUtJQVlnQlNnQ0FDSUlJQWNnQ0NnQ0FDZ0NEQkVCQURZQ0ZDQUdRUmhxSWdnZ0FTQUtJQU1nQkNBSGFpQUdRUlJxRUtJVUlBZ1FLd1JBSUFaQklHb2dCa0VZYWhBYUVDUWdCMEVCYWlFSERBRUxDeUFHUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFHSUFrMkFnZ2dCaUFHS0FKQUlBWkJJR3BIT2dBTUlBRWdBaUFHUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUdRU0JxRUNNTElBWkIwQUJxSkFBTFBnRUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBMEVJYWlBQkVMY0RJUUVnQUVIQ3Z3SWdBeWdDREJDOUZDRUFJQUVRdGdNZ0EwRVFhaVFBSUFBTHNnSUNCSDRGZnlNQVFTQnJJZ2drQUFKQUFrQUNRQ0FCSUFKSEJFQkJtS2tnS0FJQUlReEJtS2tnUVFBMkFnQWpBRUVRYXlJSkpBQVF3QUVhSXdCQkVHc2lDaVFBSXdCQkVHc2lDeVFBSUFzZ0FTQUlRUnhxUVFJUXBRMGdDeWtEQUNFRUlBb2dDeWtEQ0RjRENDQUtJQVEzQXdBZ0MwRVFhaVFBSUFvcEF3QWhCQ0FKSUFvcEF3ZzNBd2dnQ1NBRU53TUFJQXBCRUdva0FDQUpLUU1BSVFRZ0NDQUpLUU1JTndNUUlBZ2dCRGNEQ0NBSlFSQnFKQUFnQ0NrREVDRUVJQWdwQXdnaEJVR1lxU0FvQWdBaUFVVU5BU0FJS0FJY0lBSkhEUUlnQlNFR0lBUWhCeUFCUWNRQVJ3MEREQUlMSUFOQkJEWUNBQXdDQzBHWXFTQWdERFlDQUNBSUtBSWNJQUpHRFFFTElBTkJCRFlDQUNBR0lRVWdCeUVFQ3lBQUlBVTNBd0FnQUNBRU53TUlJQWhCSUdva0FBdXJCQU1FZndOK0FYMGpBRUVRYXlJREpBQWdBU2dDQ0NFRUlBRW9BZ1FoQmlBQktBSUFJUUVDUUNBQ0lBSW9BZ0FvQWdnUkFBQWlCVVVFUUNBQVFRQTZBQVFNQVFzQ2ZnSkFJQVVvQWdRaUJVR3dxUkpHQkVBZ0FoQTBJUW9nQkNnQ0FDSUNSUTBCQWtBZ0FpZ0NCQ0lFUWFDekVrWUVRQ0FEUVFocUlBRWdBaUFLdkJDdEFRd0JDeUFFUVpDcUVrWUVRQ0FEUVFocUlBRWdBaUFLdkJDeEFRd0JDMElBSUFSQnNLa1NSdzBER2lBRFFRaHFJQUVnQmlBQ0lBb1Fhd3NnQXlrRENDSUhRb0NBZ0lDQVlJTWhDQ0FIUW9DQWdJQndnd3dDQ3lBRlFaQ3FFa1lFUUNBQ0VHRWhCU0FFS0FJQUlnSkZEUUVDUUNBQ0tBSUVJZ1JCb0xNU1JnUkFJQU5CQ0dvZ0FTQUNJQVVRclFFTUFRc2dCRUdRcWhKR0JFQWdBMEVJYWlBQklBSWdCUkN4QVF3QkMwSUFJQVJCc0trU1J3MERHaUFEUVFocUlBRWdCaUFDSUFXK0VHc0xJQU1wQXdnaUIwS0FnSUNBZ0dDRElRZ2dCMEtBZ0lDQWNJTU1BZ3NnQlVHZ3N4SkdCRUFnQWhCWklRVWdCQ2dDQUNJQ1JRMEJBa0FnQWlnQ0JDSUVRYUN6RWtZRVFDQURRUWhxSUFFZ0FpQUZFSzBCREFFTElBUkJrS29TUmdSQUlBTkJDR29nQVNBQ0lBVVFzUUVNQVF0Q0FDQUVRYkNwRWtjTkF4b2dBMEVJYWlBQklBWWdBaUFGdmhCckN5QURLUU1JSWdkQ2dJQ0FnSUJnZ3lFSUlBZENnSUNBZ0hDRERBSUxJQUJCQURvQUJBd0NDMElBQ3lFSklBQWdCMEwvLy8vL0Q0TWdDVUtBZ0lDQThCK0RJQWlFaERjQ0FBc2dBMEVRYWlRQUM3Y0JBZ0o4QTM4akFFRVFheUlGSkFBQ1FBSkFBa0FnQUNBQlJ3UkFRWmlwSUNnQ0FDRUhRWmlwSUVFQU5nSUFFTUFCR2lNQVFSQnJJZ1lrQUNBR0lBQWdCVUVNYWtFQkVLVU5JQVlwQXdBZ0Jpa0RDQkN5RFNFRElBWkJFR29rQUVHWXFTQW9BZ0FpQUVVTkFTQUZLQUlNSUFGSERRSWdBeUVFSUFCQnhBQkhEUU1NQWdzZ0FrRUVOZ0lBREFJTFFaaXBJQ0FITmdJQUlBVW9BZ3dnQVVZTkFRc2dBa0VFTmdJQUlBUWhBd3NnQlVFUWFpUUFJQU1MTWdBZ0FrSC9BWEVoQWdOQUFrQWdBQ0FCUndSL0lBQXRBQUFnQWtjTkFTQUFCU0FCQ3c4TElBQkJBV29oQUF3QUN3QUx0d0VDQW4wRGZ5TUFRUkJySWdVa0FBSkFBa0FDUUNBQUlBRkhCRUJCbUtrZ0tBSUFJUWRCbUtrZ1FRQTJBZ0FRd0FFYUl3QkJFR3NpQmlRQUlBWWdBQ0FGUVF4cVFRQVFwUTBnQmlrREFDQUdLUU1JRUo0VklRTWdCa0VRYWlRQVFaaXBJQ2dDQUNJQVJRMEJJQVVvQWd3Z0FVY05BaUFESVFRZ0FFSEVBRWNOQXd3Q0N5QUNRUVEyQWdBTUFndEJtS2tnSUFjMkFnQWdCU2dDRENBQlJnMEJDeUFDUVFRMkFnQWdCQ0VEQ3lBRlFSQnFKQUFnQXd2Q0FRSURmd0YrSXdCQkVHc2lCQ1FBQW40Z0FDQUJSd1JBQWtBQ1FDQUFMUUFBSWdWQkxVY05BQ0FBUVFGcUlnQWdBVWNOQUF3QkMwR1lxU0FvQWdBaEJrR1lxU0JCQURZQ0FCREFBUm9nQUNBRVFReHFJQU1RZ3cwaEJ3SkFRWmlwSUNnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBDSUFCQnhBQkhEUUVnQWtFRU5nSUFRbjhNQkF0Qm1La2dJQVkyQWdBZ0JDZ0NEQ0FCUmcwQURBRUxRZ0FnQjMwZ0J5QUZRUzFHR3d3Q0N3c2dBa0VFTmdJQVFnQUxJUWNnQkVFUWFpUUFJQWNMNGdFQ0EzOEJmaU1BUVJCcklnUWtBQUovQWtBZ0FDQUJSd1JBQWtBQ1FDQUFMUUFBSWdWQkxVY05BQ0FBUVFGcUlnQWdBVWNOQUF3QkMwR1lxU0FvQWdBaEJrR1lxU0JCQURZQ0FCREFBUm9nQUNBRVFReHFJQU1RZ3cwaEJ3SkFRWmlwSUNnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBDSUFCQnhBQkdJQWRDLy8vLy93OVdjZzBCREFRTFFaaXBJQ0FHTmdJQUFrQWdCQ2dDRENBQlJnMEFEQUlMSUFkQ2dJQ0FnQkJVRFFNTElBSkJCRFlDQUVGL0RBTUxDeUFDUVFRMkFnQkJBQXdCQzBFQUlBZW5JZ0JySUFBZ0JVRXRSaHNMSVFBZ0JFRVFhaVFBSUFBTG1BTUJBbjhqQUVId0FXc2lBQ1FBSUFBZ0FqWUM0QUVnQUNBQk5nTG9BU0FERUw0RUlRWWdBRUhRQVdvZ0F5QUFRZDhCYWhDYkNDQUFRY0FCYWhCMElnRWdBUkNiQVJCMklBQWdBVUVBRUlrQklnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dnQUN3QTN3RWhBd05BQWtBZ0FFSG9BV29nQUVIZ0FXb1F5Z0pGRFFBZ0FDZ0N2QUVnQVJBN0lBSnFSZ1JBSUFFUU95RUhJQUVnQVJBN1FRRjBFSFlnQVNBQkVKc0JFSFlnQUNBSElBRkJBQkNKQVNJQ2FqWUN2QUVMSUFBb0F1Z0JFTzRCSUFZZ0FpQUFRYndCYWlBQVFRaHFJQU1nQUVIUUFXb2dBRUVRYWlBQVFReHFRWUNURHhDR0J3MEFJQUJCNkFGcUVKc0NHZ3dCQ3dzZ0FFSFFBV29RTzBVZ0FDZ0NEQ0lESUFCQkVHcHJRWjhCU25KRkJFQWdBeUFBS0FJSU5nSUFJQU5CQkdvaEF3c2dCU0FDSUFBb0Fyd0JJQVFnQmhDcUZEWUNBQ0FBUWRBQmFpQUFRUkJxSUFNZ0JCRElBaUFBUWVnQmFpQUFRZUFCYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0M2QUVoQWlBQkVBOGFJQUJCMEFGcUVBOGFJQUJCOEFGcUpBQWdBZ3ZsQVFJRGZ3RitJd0JCRUdzaUJDUUFBbjhDUUNBQUlBRkhCRUFDUUFKQUlBQXRBQUFpQlVFdFJ3MEFJQUJCQVdvaUFDQUJSdzBBREFFTFFaaXBJQ2dDQUNFR1FaaXBJRUVBTmdJQUVNQUJHaUFBSUFSQkRHb2dBeENERFNFSEFrQkJtS2tnS0FJQUlnQUVRQ0FFS0FJTUlBRkhEUUlnQUVIRUFFWWdCMEwvL3dOV2NnMEJEQVFMUVppcElDQUdOZ0lBQWtBZ0JDZ0NEQ0FCUmcwQURBSUxJQWRDZ0lBRVZBMERDeUFDUVFRMkFnQkIvLzhEREFNTEN5QUNRUVEyQWdCQkFBd0JDMEVBSUFlbklnQnJJQUFnQlVFdFJoc0xJUUFnQkVFUWFpUUFJQUJCLy84RGNRdXRBUUlDZndGK0l3QkJFR3NpQkNRQUFrQWdBQ0FCUndSQVFaaXBJQ2dDQUNFRlFaaXBJRUVBTmdJQUVNQUJHaUFBSUFSQkRHb2dBeEN1RkNFR0FrQkJtS2tnS0FJQUlnQUVRQ0FFS0FJTUlBRkhEUUVnQUVIRUFFY05BeUFDUVFRMkFnQkMvLy8vLy8vLy8vLy9BRUtBZ0lDQWdJQ0FnSUIvSUFaQ0FGVWJJUVlNQXd0Qm1La2dJQVUyQWdBZ0JDZ0NEQ0FCUmcwQ0N3c2dBa0VFTmdJQVFnQWhCZ3NnQkVFUWFpUUFJQVlMRmdBZ0FDQUJJQUpDZ0lDQWdJQ0FnSUNBZnhDa0RRdmFBUUlDZndGK0l3QkJFR3NpQkNRQUFuOENRQUpBQWtBQ1FBSkFJQUFnQVVjRVFFR1lxU0FvQWdBaEJVR1lxU0JCQURZQ0FCREFBUm9nQUNBRVFReHFJQU1RcmhRaEJnSkFRWmlwSUNnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBCSUFCQnhBQkdEUVFNQXd0Qm1La2dJQVUyQWdBZ0JDZ0NEQ0FCUmcwQ0N3c2dBa0VFTmdJQVFRQU1CUXNnQmtMLy8vLy9kMWNFUUNBQ1FRUTJBZ0FNQWdzZ0JrTC8vLy8vQjFjTkF3c2dBa0VFTmdJQUlBWkNBRlVOQVF0QmdJQ0FnSGdNQWd0Qi8vLy8vd2NNQVFzZ0JxY0xJUUFnQkVFUWFpUUFJQUFMQ1FBZ0FDQUJFSUFEQ3hrQUlBQWdBUkNBQXlJQVFRUnFJQUlvQWdBUWdBTWFJQUFMU1FBakFFRVFheUlFSkFBZ0FTZ0NBQ0VCSUFNb0FnQWhBeUFFUVFBNkFBd2dCQ0FETmdJSUlBRWdBaUFFUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUlBUkJFR29rQUF2SUNBRUZmeUFCS0FJQUlRUUNRQUpBQWtBQ1FBSkFBa0FDUUFKL0FrQUNRQUpBSUFORkRRQWdBeWdDQUNJSFJRMEFJQUJGQkVBZ0FpRUZEQUlMSUFOQkFEWUNBQ0FDSVFVTUFnc0NRRUgwcVNBb0FnQW9BZ0JGQkVBZ0FFVU5BU0FDUlEwTElBSWhBd05BSUFRc0FBQWlCUVJBSUFBZ0JVSC92d054TmdJQUlBQkJCR29oQUNBRVFRRnFJUVFnQTBFQmF5SUREUUVNRFFzTElBQkJBRFlDQUNBQlFRQTJBZ0FnQWlBRGF3OExJQUJGQkVBZ0FpRUZRUUFoQXd3RkN5QUNJUVZCQUF3REN5QUVFTndCRHd0QkFTRUREQUlMUVFFTElRTURRQ0FEUlFSQUlBVkZEUWdEUUFKQUFrQUNRQ0FFTFFBQUlnWkJBV3NpQjBIK0FFc0VRQ0FHSVFNTUFRc2dCRUVEY1NBRlFRVkpjZzBCQWtBRFFDQUVLQUlBSWdOQmdZS0VDR3NnQTNKQmdJR0NoSGh4RFFFZ0FDQURRZjhCY1RZQ0FDQUFJQVF0QUFFMkFnUWdBQ0FFTFFBQ05nSUlJQUFnQkMwQUF6WUNEQ0FBUVJCcUlRQWdCRUVFYWlFRUlBVkJCR3NpQlVFRVN3MEFDeUFFTFFBQUlRTUxJQU5CL3dGeElnWkJBV3NoQndzZ0IwSCtBRXNOQVFzZ0FDQUdOZ0lBSUFCQkJHb2hBQ0FFUVFGcUlRUWdCVUVCYXlJRkRRRU1DZ3NMSUFaQndnRnJJZ1pCTWtzTkJDQUVRUUZxSVFRZ0JrRUNkRUd3a1E5cUtBSUFJUWRCQVNFRERBRUxJQVF0QUFBaUEwRURkaUlHUVJCcklBWWdCMEVhZFdweVFRZExEUUlDUUFKQUFuOGdCRUVCYWlJR0lBTkJnQUZySUFkQkJuUnlJZ05CQUU0TkFCb2dCaTBBQUVHQUFXc2lCa0UvU3cwQklBUkJBbW9pQ0NBR0lBTkJCblJ5SWdOQkFFNE5BQm9nQ0MwQUFFR0FBV3NpQmtFL1N3MEJJQVlnQTBFR2RISWhBeUFFUVFOcUN5RUVJQUFnQXpZQ0FDQUZRUUZySVFVZ0FFRUVhaUVBREFFTFFaaXBJRUVaTmdJQUlBUkJBV3NoQkF3R0MwRUFJUU1NQUFzQUN3TkFBbjhnQTBVRVFBSkFBa0FnQkVFRGNTQUVMUUFBSWdOQkFXdEIvZ0JMY2tVRVFDQUVLQUlBSWdOQmdZS0VDR3NnQTNKQmdJR0NoSGh4UlEwQkN5QUVJUVlNQVFzRFFDQUZRUVJySVFVZ0JDZ0NCQ0VESUFSQkJHb2lCaUVFSUFNZ0EwR0Jnb1FJYTNKQmdJR0NoSGh4UlEwQUN3c2dBMEgvQVhFaUJFRUJhMEgrQUUwRVFDQUdRUUZxSVFRZ0JVRUJhd3dDQ3lBRVFjSUJheUlIUVRKTEJFQWdCaUVFREFVTElBWkJBV29oQkNBSFFRSjBRYkNSRDJvb0FnQWhCMEVCSVFNTUFnc2dCQzBBQUVFRGRpSURRUkJySUFkQkduVWdBMnB5UVFkTERRSUNmeUFFUVFGcUlnTWdCMEdBZ0lBUWNVVU5BQm9nQXkwQUFFSEFBWEZCZ0FGSEJFQWdCRUVCYXlFRURBWUxJQVJCQW1vaUF5QUhRWUNBSUhGRkRRQWFJQU10QUFCQndBRnhRWUFCUndSQUlBUkJBV3NoQkF3R0N5QUVRUU5xQ3lFRUlBVkJBV3NMSVFWQkFDRUREQUFMQUFzZ0JFRUJheUVFSUFjTkFTQUVMUUFBSVFNTElBTkIvd0Z4RFFBZ0FBUkFJQUJCQURZQ0FDQUJRUUEyQWdBTElBSWdCV3NQQzBHWXFTQkJHVFlDQUNBQVJRMEJDeUFCSUFRMkFnQUxRWDhQQ3lBQklBUTJBZ0FnQWdzeEFRRi9RZlNwSUNnQ0FDRUJJQUFFUUVIMHFTQkJqTHNnSUFBZ0FFRi9SaHMyQWdBTFFYOGdBU0FCUVl5N0lFWWJDNllDQVFaL0FrQWdBRUgvL3dkTERRQWdBRUgvQVhFaUJVRURiaUlDUVgxc0lBQnFRZjhCY1VFQ2RFSDRydzVxS0FJQUlBSWdBRUVJZGlJQ1FlQzZEbW90QUFCQjFnQnNha0hndWc1cUxRQUFiRUVMZGtFR2NDQUNRZERQRG1vdEFBQnFRUUowUVpDd0Rtb29BZ0FpQTBFSWRTRUNJQU5CL3dGeElnTkJBVTBFUUNBQ1FRQWdBU0FEYzJ0eElBQnFEd3NnQWtIL0FYRWlBMFVOQUNBQ1FRaDJJUUlEUUNBRFFRRjJJZ1lnQW1vaUJFRUJkRUhRdHc1cUxRQUFJZ2NnQlVZRVFDQUVRUUYwUWRHM0Rtb3RBQUJCQW5SQmtMQU9haWdDQUNJQ1FmOEJjU0lEUVFGTkJFQkJBQ0FCSUFOemF5QUNRUWgxY1NBQWFnOExRWDlCQVNBQkd5QUFhZzhMSUFJZ0JDQUZJQWRKSWdRYklRSWdCaUFESUFacklBUWJJZ01OQUFzTElBQUxFd0FnQUVFZ2NpQUFJQUJCd1FCclFScEpHd3NVQUNBQVFkOEFjU0FBSUFCQjRRQnJRUnBKR3d0QkFRRi9JQUlnQVJDR0RTSURTd1JBSUFBZ0FTQURRUUZxRUo0TkdpQUREd3NnQWdSQUlBQWdBU0FDUVFGcklnQVFuZzBnQUVFQ2RHcEJBRFlDQUFzZ0F3c2FBUUYvSUFJZ0FSRGNBU0lEU3dSQUlBQWdBUkNGRlFzZ0F3c25BQ0FBUVFCSElBQkI2TjRQUjNFZ0FFR0EzdzlIY1NBQVFiaTZJRWR4SUFCQjBMb2dSM0VMN3dJQkEzOENRQ0FCTFFBQURRQkJ2WVlHRUljTklnRUVRQ0FCTFFBQURRRUxJQUJCREd4QnNKWU9haENIRFNJQkJFQWdBUzBBQUEwQkMwSG0wd1lRaHcwaUFRUkFJQUV0QUFBTkFRdEJvK3dHSVFFTEFrQURRQ0FCSUFKcUxRQUFJZ1JGSUFSQkwwWnlSUVJBUVJjaEJDQUNRUUZxSWdKQkYwY05BUXdDQ3dzZ0FpRUVDMEdqN0FZaEF3SkFBa0FDUUFKQUFrQWdBUzBBQUNJQ1FTNUdEUUFnQVNBRWFpMEFBQTBBSUFFaEF5QUNRY01BUncwQkN5QURMUUFCUlEwQkN5QURRYVBzQmhDaUFrVU5BQ0FEUVlHK0JSQ2lBZzBCQ3lBQVJRUkFRZmlXRGlFQ0lBTXRBQUZCTGtZTkFndEJBQThMUWJTNklDZ0NBQ0lDQkVBRFFDQURJQUpCQ0dvUW9nSkZEUUlnQWlnQ0lDSUNEUUFMQzBFa0VPQUJJZ0lFUUNBQ1FSUTJBZ1FnQWtHUWxnNDJBZ0FnQWtFSWFpSUJJQU1nQkJCOUdpQUJJQVJxUVFBNkFBQWdBa0cwdWlBb0FnQTJBaUJCdExvZ0lBSTJBZ0FMSUFKQitKWU9JQUFnQW5JYklRSUxJQUlMS2dFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FFSEt3d01nQVJDOUZDRUFJQUpCRUdva0FDQUFDNzhlQWc5L0JYNGpBRUdRQVdzaUJDUUFJQVJCQUVHUUFSQjVJZ05CZnpZQ1RDQURJQUEyQWl3Z0EwSGFGellDSUNBRElBQTJBbFFnQWlFUFFRQWhBQ01BUWJBQ2F5SUdKQUFnQXlnQ1RCb0NRQUpBQWtBQ1FDQURLQUlFRFFBZ0F4Q25EUm9nQXlnQ0JBMEFEQUVMSUFFdEFBQWlCVVVOQWdKQUFrQUNRQUpBQTBBQ1FBSkFJQVZCL3dGeElnSVF3Z1VFUUFOQUlBRWlCVUVCYWlFQklBVXRBQUVRd2dVTkFBc2dBMElBRUlNRUEwQUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFS1VCQ3hEQ0JRMEFDeUFES0FJRUlRRWdBeWtEY0VJQVdRUkFJQU1nQVVFQmF5SUJOZ0lFQ3lBQklBTW9BaXhyckNBREtRTjRJQlI4ZkNFVURBRUxBbjhDUUFKQUlBSkJKVVlFUUNBQkxRQUJJZ0pCS2tZTkFTQUNRU1ZIRFFJTElBTkNBQkNEQkFKQUlBRXRBQUJCSlVZRVFBTkFBbjhnQXlnQ0JDSUNJQU1vQW1oSEJFQWdBeUFDUVFGcU5nSUVJQUl0QUFBTUFRc2dBeENsQVFzaUJSRENCUTBBQ3lBQlFRRnFJUUVNQVFzZ0F5Z0NCQ0lDSUFNb0FtaEhCRUFnQXlBQ1FRRnFOZ0lFSUFJdEFBQWhCUXdCQ3lBREVLVUJJUVVMSUFFdEFBQWdCVWNFUUNBREtRTndRZ0JaQkVBZ0F5QURLQUlFUVFGck5nSUVDeUFGUVFCT0RRMUJBQ0VISUE0TkRRd0xDeUFES0FJRUlBTW9BaXhyckNBREtRTjRJQlI4ZkNFVUlBRWhCUXdEQzBFQUlRZ2dBVUVDYWd3QkN3SkFJQUlRdWdORkRRQWdBUzBBQWtFa1J3MEFJd0JCRUdzaUJDQVBOZ0lNSUFRZ0R5QUNRVEJySWdKQkFuUkJCR3RCQUNBQ1FRRkxHMm9pQWtFRWFqWUNDQ0FDS0FJQUlRZ2dBVUVEYWd3QkN5QVBLQUlBSVFnZ0QwRUVhaUVQSUFGQkFXb0xJUUZCQUNFQ0EwQWdBUzBBQUNJRUVMb0RCRUFnQVVFQmFpRUJJQUpCQ213Z0JHcEJNR3NoQWd3QkN3dEJBQ0VNSUFSQjdRQkdCRUJCQUNFS0lBaEJBRWNoRENBQkxRQUJJUVFnQVVFQmFpRUJRUUFoQUFzZ0FVRUJhaUVGUVFNaENTQU1JUWNDUUFKQUFrQUNRQUpBQWtBZ0JFSC9BWEZCd1FCckRqb0VEQVFNQkFRRURBd01EQU1NREF3TURBd0VEQXdNREFRTURBUU1EQXdNREFRTUJBUUVCQVFBQkFVTUFRd0VCQVFNREFRQ0JBd01CQXdDREFzZ0FVRUNhaUFGSUFFdEFBRkI2QUJHSWdFYklRVkJma0YvSUFFYklRa01CQXNnQVVFQ2FpQUZJQUV0QUFGQjdBQkdJZ0ViSVFWQkEwRUJJQUViSVFrTUF3dEJBU0VKREFJTFFRSWhDUXdCQzBFQUlRa2dBU0VGQzBFQklBa2dCUzBBQUNJQlFTOXhRUU5HSWdRYklSQUNRQ0FCUVNCeUlBRWdCQnNpQzBIYkFFWU5BQUpBSUF0QjdnQkhCRUFnQzBIakFFY05BVUVCSUFJZ0FrRUJUQnNoQWd3Q0N5QUlJQkFnRkJDK0ZBd0NDeUFEUWdBUWd3UURRQUovSUFNb0FnUWlBU0FES0FKb1J3UkFJQU1nQVVFQmFqWUNCQ0FCTFFBQURBRUxJQU1RcFFFTEVNSUZEUUFMSUFNb0FnUWhBU0FES1FOd1FnQlpCRUFnQXlBQlFRRnJJZ0UyQWdRTElBRWdBeWdDTEd1c0lBTXBBM2dnRkh4OElSUUxJQU1nQXF3aUVoQ0RCQUpBSUFNb0FnUWlBU0FES0FKb1J3UkFJQU1nQVVFQmFqWUNCQXdCQ3lBREVLVUJRUUJJRFFZTElBTXBBM0JDQUZrRVFDQURJQU1vQWdSQkFXczJBZ1FMUVJBaEFRSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQXRCMkFCckRpRUdDUWtDQ1FrSkNRa0JDUUlFQVFFQkNRVUpDUWtKQ1FNR0NRa0NDUVFKQ1FZQUN5QUxRY0VBYXlJQlFRWkxRUUVnQVhSQjhRQnhSWElOQ0FzZ0JrRUlhaUFESUJCQkFCQ0NGU0FES1FONFFnQWdBeWdDQkNBREtBSXNhNng5VWcwRkRBd0xJQXRCRUhKQjh3QkdCRUFnQmtFZ2FrRi9RWUVDRUhrYUlBWkJBRG9BSUNBTFFmTUFSdzBHSUFaQkFEb0FRU0FHUVFBNkFDNGdCa0VBTmdFcURBWUxJQVpCSUdvZ0JTMEFBU0lCUWQ0QVJpSUVRWUVDRUhrYUlBWkJBRG9BSUNBRlFRSnFJQVZCQVdvZ0JCc2hCd0ovQWtBQ1FDQUZRUUpCQVNBRUcyb3RBQUFpQkVFdFJ3UkFJQVJCM1FCR0RRRWdBVUhlQUVjaENTQUhEQU1MSUFZZ0FVSGVBRWNpQ1RvQVRnd0JDeUFHSUFGQjNnQkhJZ2s2QUg0TElBZEJBV29MSVFVRFFBSkFJQVV0QUFBaUJFRXRSd1JBSUFSRkRROGdCRUhkQUVZTkNBd0JDMEV0SVFRZ0JTMEFBU0lIUlNBSFFkMEFSbklOQUNBRlFRRnFJUTBDUUNBSElBVkJBV3N0QUFBaUFVMEVRQ0FISVFRTUFRc0RRQ0FCUVFGcUlnRWdCa0VnYW1vZ0NUb0FBQ0FCSUEwdEFBQWlCRWtOQUFzTElBMGhCUXNnQkNBR2FpQUpPZ0FoSUFWQkFXb2hCUXdBQ3dBTFFRZ2hBUXdDQzBFS0lRRU1BUXRCQUNFQkMwSUFJUkpCQUNFRVFRQWhCMEVBSVEwakFFRVFheUlKSkFBQ1FDQUJRUUZHQkVCQm1La2dRUncyQWdBTUFRc0RRQUovSUFNb0FnUWlBaUFES0FKb1J3UkFJQU1nQWtFQmFqWUNCQ0FDTFFBQURBRUxJQU1RcFFFTElnSVF3Z1VOQUFzQ1FBSkFJQUpCSzJzT0F3QUJBQUVMUVg5QkFDQUNRUzFHR3lFTklBTW9BZ1FpQWlBREtBSm9Sd1JBSUFNZ0FrRUJhallDQkNBQ0xRQUFJUUlNQVFzZ0F4Q2xBU0VDQ3dKQUFrQUNRQUpBSUFGQkFFY2dBVUVRUjNFZ0FrRXdSM0pGQkVBQ2Z5QURLQUlFSWdJZ0F5Z0NhRWNFUUNBRElBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBREVLVUJDeUlDUVY5eFFkZ0FSZ1JBUVJBaEFRSi9JQU1vQWdRaUFpQURLQUpvUndSQUlBTWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBTVFwUUVMSWdKQmdaUU9haTBBQUVFUVNRMERJQU1wQTNCQ0FGa0VRQ0FESUFNb0FnUkJBV3MyQWdRTElBTkNBQkNEQkF3R0N5QUJEUUZCQ0NFQkRBSUxJQUZCQ2lBQkd5SUJJQUpCZ1pRT2FpMEFBRXNOQUNBREtRTndRZ0JaQkVBZ0F5QURLQUlFUVFGck5nSUVDeUFEUWdBUWd3UkJtS2tnUVJ3MkFnQU1CQXNnQVVFS1J3MEFJQUpCTUdzaUJFRUpUUVJBUVFBaEFRTkFJQUZCQ213Z0JHb2lBVUdacytiTUFVa0NmeUFES0FJRUlnSWdBeWdDYUVjRVFDQURJQUpCQVdvMkFnUWdBaTBBQUF3QkN5QURFS1VCQ3lJQ1FUQnJJZ1JCQ1UxeERRQUxJQUd0SVJJTEFrQWdCRUVKU3cwQUlCSkNDbjRoRXlBRXJTRVZBMEFDZnlBREtBSUVJZ0VnQXlnQ2FFY0VRQ0FESUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFERUtVQkN5SUNRVEJySWdSQkNVc2dFeUFWZkNJU1FwcXo1c3lacytiTUdWcHlEUUVnRWtJS2ZpSVRJQVN0SWhWQ2Y0VllEUUFMUVFvaEFRd0NDMEVLSVFFZ0JFRUpUUTBCREFJTElBRWdBVUVCYTNFRVFDQUNRWUdVRG1vdEFBQWlCeUFCU1FSQUEwQWdBU0FFYkNBSGFpSUVRY2ZqOFRoSkFuOGdBeWdDQkNJQ0lBTW9BbWhIQkVBZ0F5QUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0F4Q2xBUXNpQWtHQmxBNXFMUUFBSWdjZ0FVbHhEUUFMSUFTdElSSUxJQUVnQjAwTkFTQUJyU0VUQTBBZ0VpQVRmaUlWSUFldFF2OEJneUlXUW4rRlZnMENJQlVnRm53aEVpQUJBbjhnQXlnQ0JDSUNJQU1vQW1oSEJFQWdBeUFDUVFGcU5nSUVJQUl0QUFBTUFRc2dBeENsQVFzaUFrR0JsQTVxTFFBQUlnZE5EUUlnQ1NBVFFnQWdFa0lBRUxBQ0lBa3BBd2hRRFFBTERBRUxJQUZCRjJ4QkJYWkJCM0ZCZ1pZT2Fpd0FBQ0VSSUFKQmdaUU9haTBBQUNJRUlBRkpCRUFEUUNBSElCRjBJQVJ5SWdkQmdJQ0F3QUJKQW44Z0F5Z0NCQ0lDSUFNb0FtaEhCRUFnQXlBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQXhDbEFRc2lBa0dCbEE1cUxRQUFJZ1FnQVVseERRQUxJQWV0SVJJTElBRWdCRTBOQUVKL0lCR3RJaE9JSWhVZ0VsUU5BQU5BSUFTdFF2OEJneUFTSUJPR2hDRVNJQUVDZnlBREtBSUVJZ0lnQXlnQ2FFY0VRQ0FESUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFERUtVQkN5SUNRWUdVRG1vdEFBQWlCRTBOQVNBU0lCVllEUUFMQ3lBQklBSkJnWlFPYWkwQUFFME5BQU5BSUFFQ2Z5QURLQUlFSWdJZ0F5Z0NhRWNFUUNBRElBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBREVLVUJDMEdCbEE1cUxRQUFTdzBBQzBHWXFTQkJ4QUEyQWdCQ2Z5RVNRUUFoRFFzZ0F5a0RjRUlBV1FSQUlBTWdBeWdDQkVFQmF6WUNCQXNnRWlBTnJDSVRoU0FUZlNFU0N5QUpRUkJxSkFBZ0F5a0RlRUlBSUFNb0FnUWdBeWdDTEd1c2ZWRU5CeUFJUlNBTFFmQUFSM0pGQkVBZ0NDQVNQZ0lBREFNTElBZ2dFQ0FTRUw0VURBSUxJQWhGRFFFZ0Jpa0RFQ0VTSUFZcEF3Z2hFd0pBQWtBQ1FDQVFEZ01BQVFJRUN5QUlJQk1nRWhDZUZUZ0NBQXdEQ3lBSUlCTWdFaEN5RFRrREFBd0NDeUFJSUJNM0F3QWdDQ0FTTndNSURBRUxJQUpCQVdwQkh5QUxRZU1BUmlJTkd5RUNBa0FnRUVFQlJnUkFJQWdoQkNBTUJFQWdBa0VDZEJEZ0FTSUVSUTBIQ3lBR1FnQTNBNmdDUVFBaEFRTkFJQVFoQUFKQUEwQUNmeUFES0FJRUlnUWdBeWdDYUVjRVFDQURJQVJCQVdvMkFnUWdCQzBBQUF3QkN5QURFS1VCQ3lJRUlBWnFMUUFoUlEwQklBWWdCRG9BR3lBR1FSeHFJQVpCRzJwQkFTQUdRYWdDYWhDUENpSUVRWDVHRFFCQkFDRUtJQVJCZjBZTkN5QUFCRUFnQUNBQlFRSjBhaUFHS0FJY05nSUFJQUZCQVdvaEFRc2dEQ0FCSUFKR2NVVU5BQXRCQVNFSElBQWdBaUlCUVFGMFFRRnlJZ0pCQW5RUW9nb2lCQTBCREFzTEMwRUFJUW9nQUNFQ0lBWkJxQUpxQkg4Z0JpZ0NxQUlGUVFBTERRZ01BUXNnREFSQVFRQWhBU0FDRU9BQklnUkZEUVlEUUNBRUlRQURRQUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RcFFFTElnUWdCbW90QUNGRkJFQkJBQ0VDSUFBaENnd0VDeUFBSUFGcUlBUTZBQUFnQVVFQmFpSUJJQUpIRFFBTFFRRWhCeUFBSUFJaUFVRUJkRUVCY2lJQ0VLSUtJZ1FOQUFzZ0FDRUtRUUFoQUF3SkMwRUFJUUVnQ0FSQUEwQUNmeUFES0FJRUlnQWdBeWdDYUVjRVFDQURJQUJCQVdvMkFnUWdBQzBBQUF3QkN5QURFS1VCQ3lJQUlBWnFMUUFoQkVBZ0FTQUlhaUFBT2dBQUlBRkJBV29oQVF3QkJVRUFJUUlnQ0NJQUlRb01Bd3NBQ3dBTEEwQUNmeUFES0FJRUlnQWdBeWdDYUVjRVFDQURJQUJCQVdvMkFnUWdBQzBBQUF3QkN5QURFS1VCQ3lBR2FpMEFJUTBBQzBFQUlRQkJBQ0VLUVFBaEFnc2dBeWdDQkNFRUlBTXBBM0JDQUZrRVFDQURJQVJCQVdzaUJEWUNCQXNnQXlrRGVDQUVJQU1vQWl4cnJId2lFMUFnQzBIakFFWWdFaUFUVW5GeURRSWdEQVJBSUFnZ0FEWUNBQXNDUUNBTkRRQWdBZ1JBSUFJZ0FVRUNkR3BCQURZQ0FBc2dDa1VFUUVFQUlRb01BUXNnQVNBS2FrRUFPZ0FBQ3lBQ0lRQUxJQU1vQWdRZ0F5Z0NMR3VzSUFNcEEzZ2dGSHg4SVJRZ0RpQUlRUUJIYWlFT0N5QUZRUUZxSVFFZ0JTMEFBU0lGRFFFTUNBc0xJQUloQUF3QkMwRUJJUWRCQUNFS1FRQWhBQXdDQ3lBTUlRY01Bd3NnRENFSEN5QU9EUUVMUVg4aERnc2dCMFVOQUNBS0VCOGdBQkFmQ3lBR1FiQUNhaVFBSUE0aEFDQURRWkFCYWlRQUlBQUxRd0FDUUNBQVJRMEFBa0FDUUFKQUFrQWdBVUVDYWc0R0FBRUNBZ1FEQkFzZ0FDQUNQQUFBRHdzZ0FDQUNQUUVBRHdzZ0FDQUNQZ0lBRHdzZ0FDQUNOd01BQ3d1TEF3SUZmd0YrSXdCQklHc2lBaVFBQWtBZ0FDMEFOQVJBSUFBb0FqQWhBeUFCUlEwQklBQkJBRG9BTkNBQVFYODJBakFNQVFzZ0FrRUJOZ0lZSUFKQkdHb2dBRUVzYWhEQkZDZ0NBQ0lFUVFBZ0JFRUFTaHNoQlFKQUEwQWdBeUFGUndSQUlBQW9BaUFRb0FvaUJrRi9SZzBDSUFKQkdHb2dBMm9nQmpvQUFDQURRUUZxSVFNTUFRc0xBa0FnQUMwQU5RUkFJQUlnQWkwQUdEb0FGd3dCQ3lBQ1FSaHFJUU1EUUFKQUlBQW9BaWdpQlNrQ0FDRUhBa0FnQUNnQ0pDQUZJQUpCR0dvaUJTQUVJQVZxSWdVZ0FrRVFhaUFDUVJkcUlBTWdBa0VNYWhET0ZFRUJhdzREQUFRQkF3c2dBQ2dDS0NBSE53SUFJQVJCQ0VZTkF5QUFLQUlnRUtBS0lnWkJmMFlOQXlBRklBWTZBQUFnQkVFQmFpRUVEQUVMQ3lBQ0lBSXRBQmc2QUJjTEFrQWdBVVVFUUFOQUlBUkJBRXdOQWlBRVFRRnJJZ1FnQWtFWWFtb3NBQUFRcFFNZ0FDZ0NJQkNRQ2tGL1J3MEFEQU1MQUFzZ0FDQUNMQUFYRUtVRElnTTJBakFNQWdzZ0Fpd0FGeENsQXlFRERBRUxRWDhoQXdzZ0FrRWdhaVFBSUFNTENRQWdBQkNhQ2hBZkN4UUFJQUVnQUNBQUtBSUFJQUVvQWdBUTloUWJDNG9EQWdaL0FYNGpBRUVnYXlJQ0pBQUNRQ0FBTFFBMEJFQWdBQ2dDTUNFRUlBRkZEUUVnQUVFQU9nQTBJQUJCZnpZQ01Bd0JDeUFDUVFFMkFoZ2dBa0VZYWlBQVFTeHFFTUVVS0FJQUlnVkJBQ0FGUVFCS0d5RUdBMEFnQXlBR1J3UkFRWDhoQkNBQUtBSWdFS0FLSWdkQmYwWU5BaUFDUVJocUlBTnFJQWM2QUFBZ0EwRUJhaUVEREFFTEN3SkFBa0FnQUMwQU5RUkFJQUlnQWl3QUdEWUNGQXdCQ3lBQ1FSaHFJUVFEUUFKQUlBQW9BaWdpQXlrQ0FDRUlBa0FnQUNnQ0pDQURJQUpCR0dvaUF5QURJQVZxSWdNZ0FrRVFhaUFDUVJScUlBUWdBa0VNYWhET0ZFRUJhdzREQUFRQkF3c2dBQ2dDS0NBSU53SUFJQVZCQ0VZTkF5QUFLQUlnRUtBS0lnWkJmMFlOQXlBRElBWTZBQUFnQlVFQmFpRUZEQUVMQ3lBQ0lBSXNBQmcyQWhRTEFrQWdBVVVFUUFOQUlBVkJBRXdOQWtGL0lRUWdCVUVCYXlJRklBSkJHR3BxTEFBQUlBQW9BaUFRa0FwQmYwY05BQXdFQ3dBTElBQWdBaWdDRkNJRU5nSXdEQUlMSUFJb0FoUWhCQXdCQzBGL0lRUUxJQUpCSUdva0FDQUVDNFVCQVFWL0l3QkJFR3NpQVNRQUlBRkJFR29oQkFKQUEwQWdBQ2dDSkNJQ0lBQW9BaWdnQVVFSWFpSURJQVFnQVVFRWFpQUNLQUlBS0FJVUVRa0FJUVZCZnlFQ0lBTkJBU0FCS0FJRUlBTnJJZ01nQUNnQ0lCQ0FCU0FEUncwQkFrQWdCVUVCYXc0Q0FRSUFDd3RCZjBFQUlBQW9BaUFROGhRYklRSUxJQUZCRUdva0FDQUNDdzBBSUFCQjJJOE9OZ0lBSUFBTEVnQWdBQkRFRkNJQVFjU1NEallDQUNBQUN4RUFJQUFnQUNnQ0JFR0F3QUJ5TmdJRUN4SUFJQUFReEJRaUFFRzhqdzQyQWdBZ0FBc0xBQ0FBUWFTMElEWUNTQXRZQVFKL0l3QkJFR3NpQXlRQUlBQVEyQlFpQUNBQk5nSWdJQUJCNEpJT05nSUFJQU5CQ0dvaUFTQUFFSTRISUFFUWlnMGhCQ0FCRUdRZ0FDQUNOZ0lvSUFBZ0JEWUNKQ0FBSUFRUWpRYzZBQ3dnQTBFUWFpUUFDd3NBSUFCQjBMTWdOZ0pJQzFnQkFuOGpBRUVRYXlJREpBQWdBQkNYQ2lJQUlBRTJBaUFnQUVId2p3NDJBZ0FnQTBFSWFpSUJJQUFRamdjZ0FSQ09EU0VFSUFFUVpDQUFJQUkyQWlnZ0FDQUVOZ0lrSUFBZ0JCQ05Cem9BTENBRFFSQnFKQUFMUEFFQ2Z5QUFLQUlvSVFJRFFDQUNCRUFnQVNBQUlBSkJBV3NpQWtFQ2RDSURJQUFvQWlScUtBSUFJQUFvQWlBZ0Eyb29BZ0FSQlFBTUFRc0xDd2tBSUFBUXV3RVFId3NkQUNBQUlBRWdBaUFESUFRZ0JTQUdJQWNnQUNnQ0FDZ0NFQkVNQUFzSEFDQUJJQUJyQ3drQUlBQWdBUkRQRkF1ZkFRRUVmeU1BUVJCcklnVWtBQ0FCSUFJUTBCUWhBeUFBRUpnR0lBTkJjRWtFUUFKQUlBTVExUWdFUUNBQUlBTVFpd1VnQUJDS0JTRUVEQUVMSUFBZ0F4Q1hCa0VCYWlJR0VKUUdJZ1FRbGdZZ0FDQUdFSlVHSUFBZ0F4RFRCQXNEUUNBQklBSkhCRUFnQkNBQkVORUNJQVJCQVdvaEJDQUJRUUZxSVFFTUFRc0xJQVZCQURvQUR5QUVJQVZCRDJvUTBRSWdCVUVRYWlRQUR3c1F1QU1BQzZ3SUFnVi9CSDRqQUVIZ0FHc2lCaVFBSUFaQkFEWUNSQ0FFSUFRb0FnQW9BZ2dSQUFBZ0JrSEVBR29RSWhvZ0JrRUFOZ0pBSUFVZ0JTZ0NBQ2dDQ0JFQUFDQUdRVUJyRUNJYUFrQWdCaWdDUkNJSklBWW9Ba0FpQ0NBSUlBbEpHeUlKUVFGR0JFQWdBeWdDQUNFQklBTW9BZ1FoQWlBRUlBUW9BZ0FvQWdnUkFBQWhCeUFHSUFFMkFoQWdCaUFDS1FJSU53SWNJQVlnQWlnQ0VEWUNKQ0FHSUFJcEFnQTNBaFFnQmlBSE5nSW9JQVFnQkNnQ0FDZ0NDQkVBQUNJRFJRUkFJQUJCQURvQUJBd0NDeUFHUVJCcVFRUnlJUUlDUUFKQUlBTW9BZ1FpQTBIUW9CSkdCRUFnQkJCaklRc2dCUkJqSVF3akFFRVFheUlESkFBZ0JrSFFBR29pQkFKL0FrQWdDeUFNZlNJT0lBdFRJQXhDQUZWSEJFQWdBeUFMUWN5WUNDQU1FTzRHSUFFZ0F5QUNFRjBnQXhBUEdpQUJMUUFFRFFGQkFnd0NDeUFPSVEwTElBUWdEVGNEQUVFQkN6b0FDQ0FEUVJCcUpBQWdCQkN5QVFSQUlBWkJ5QUJxSUFFZ0JpZ0NLQ0FHUWRBQWFoQktLUU1BRVAwQkRBSUxJQVpCQWpvQVRBd0JDeUFEUWZDZkVrWUVRQ0FHUWRBQWFpSURJQUVnQWlBRUVEd2dCUkE4RUlFRUlBTVFzZ0VFUUNBR1FjZ0FhaUFCSUFJZ0JpZ0NLQ0FHUWRBQWFoQktLd01BRUhNTUFnc2dCa0VDT2dCTURBRUxJQU5Cc0trU1JnUkFJQVpCMEFCcUlnTWdBU0FDSUFRUU5DQUZFRFFRZ0FRZ0F4QXJCRUFnQmtISUFHb2dBU0FDSUFZb0FpZ2dCa0hRQUdvUUdpb0NBQkJyREFJTElBWkJBam9BVEF3QkN5QURRWkNxRWtZRVFDQUVFR0VoQWlBRkVHRWhBeUFHUVFFNkFGUWdCaUFDSUFOck5nSlFJQVpCMEFCcUVDc0VRQ0FHUWNnQWFpQUJJQWNnQmtIUUFHb1FHaWdDQUJDeEFRd0NDeUFHUVFJNkFFd01BUXNnQTBHZ3N4SkdCRUFnQkJCWklRSWdCUkJaSVFNZ0JrRUJPZ0JVSUFZZ0FpQURhellDVUNBR1FkQUFhaEFyQkVBZ0JrSElBR29nQVNBSElBWkIwQUJxRUJvb0FnQVFyUUVNQWdzZ0JrRUNPZ0JNREFFTElBTkIwS2dTUncwQklBWkIwQUJxSWdNZ0FTQUNJQVFRUHlBRkVEOFEvd01nQXhBckJFQWdCa0hJQUdvZ0FTQUNJQVlvQWlnZ0JrSFFBR29RR2lvQ0FCQnlEQUVMSUFaQkFqb0FUQXNnQUNBR0tRTklOd0lBREFJTElBQkJBRG9BQkF3QkN5QUdRb0NBZ0lDQUFUY0NOQ0FHSUFaQkVHb2lDRFlDTUNBSUlBa1FPU0FHUVRCcUlRZ0NRQUpBQTBBZ0J5QUpSZzBCSUFaQjBBQnFJZ29nQVNBQ1FRQVFJaUFESUFZb0FrUkJBVWNFZnlBRUlBY2dCQ2dDQUNnQ0RCRUJBQVVnQkFzZ0JpZ0NRRUVCUndSL0lBVWdCeUFGS0FJQUtBSU1FUUVBQlNBRkN4RFNGQ0FLRUNzRVFDQUdRUkJxSUFaQjBBQnFFQm9RSkNBSFFRRnFJUWNNQVFzTElBWkIwQUJxRUQwYUlBQkJBam9BQkF3QkN5QUdJQWcyQWdnZ0JpQUdLQUl3SUFaQkVHcEhPZ0FNSUFFZ0FpQUdRUWhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBR1FSQnFFQ01MSUFaQjRBQnFKQUFMVlFFQ2Z3SkFJQUFvQWdBaUFrVU5BQUovSUFJb0FoZ2lBeUFDS0FJY1JnUkFJQUlnQVNBQ0tBSUFLQUkwRVFFQURBRUxJQUlnQTBFRWFqWUNHQ0FESUFFMkFnQWdBUXNRa0FkRkRRQWdBRUVBTmdJQUN3c3hBUUYvSUFBb0Fnd2lBU0FBS0FJUVJnUkFJQUFnQUNnQ0FDZ0NLQkVBQUE4TElBQWdBVUVFYWpZQ0RDQUJLQUlBQ3lvQkFYOGdBQ2dDQUNJQkJFQWdBUkR0QVJDUUIwVUVRQ0FBS0FJQVJROExJQUJCQURZQ0FBdEJBUXNRQUNBQUVOVVVJQUVRMVJSelFRRnpDd2tBSUFCQkFSQ09FUXNMQUNBQVFhQ0VEaEQ2RWdzVUFDQUFRYUNFRGpZQ0FDQUFRUVJxRUdRZ0FBc0pBQ0FBRVA0RUVCOExGd0FnQUNBQklBSWdBeUFFSUFBb0FnQW9BaUFSSlFBTEZ3QWdBQ0FCSUFJZ0F5QUVJQUFvQWdBb0FoQVJDUUFMc1FFQkJuOGpBRUVnYXlJQ0pBQWdBa0VZYWlJRElBQVEzd01hQWtBZ0F4Q1NCRVVOQUNBQ1FSQnFJZ01nQUNBQUtBSUFRUXhyS0FJQWFoQitJQU1RL1FRaEJDQURFR1FnQWtFSWFpQUFFTklFSVFVZ0FDQUFLQUlBUVF4cktBSUFhaUlHRUp3RElRY2dBaUFFSUFVb0FnQWdCaUFISUFFZ0JDZ0NBQ2dDREJFSkFEWUNFQ0FERU5FRVJRMEFJQUFnQUNnQ0FFRU1heWdDQUdwQkJSQ1BBd3NnQWtFWWFoRGdBeUFDUVNCcUpBQWdBQXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFSm9OQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RbEFvTHFBTUJCMzhqQUVFZ2F5SURKQUFnQTBFQU5nSWNJd0JCSUdzaUJDUUFJQU5CR0dvaUJVRUFPZ0FBQWtBZ0FDQUFLQUlBUVF4cktBSUFhaUlDS0FJUVJRUkFJQUlvQWtnaUFnUkFJQUlRbkFnTEFrQWdBQ0FBS0FJQVFReHJLQUlBYWhDNEFVR0FJSEZGRFFBZ0JFRVlhaUlDSUFBZ0FDZ0NBRUVNYXlnQ0FHb1FmaUFDRU1NQ0lRY2dBaEJrSUFSQkVHb2dBQkRuRkNFQ0lBUkJDR29RbUFRaEJnTkFBa0FnQWlBR0VNb0NSUTBBSUFJb0FnQVE3Z0VoQ0NBSEtBSUlRUUVnQ0JDOUFrVU5BQ0FDRUpzQ0dnd0JDd3NnQWlBR0VJY0NSUTBBSUFBZ0FDZ0NBRUVNYXlnQ0FHcEJCaENQQXdzZ0JTQUFJQUFvQWdCQkRHc29BZ0JxS0FJUVJUb0FBQXdCQ3lBQ1FRUVFqd01MSUFSQklHb2tBQ0FGTFFBQUVPSVVCRUFnQTBFUWFpSUVJQUFnQUNnQ0FFRU1heWdDQUdvUWZpQUVRYmk3SUJEZUF5RUNJQU5CQ0dvZ0FCRG5GQ0VGSUFNUW1BUWhCaUFDSUFVb0FnQWdCaWdDQUNBQUlBQW9BZ0JCREdzb0FnQnFJQU5CSEdvZ0FTQUNLQUlBS0FJc0VRc0FHaUFFRUdRZ0FDQUFLQUlBUVF4cktBSUFhaUFES0FJY0VJOERDeUFEUVNCcUpBQUxQUUVCZnlBQUtBSVlJZ0lnQUNnQ0hFWUVRQ0FBSUFFUXBRTWdBQ2dDQUNnQ05CRUJBQThMSUFBZ0FrRUJhallDR0NBQ0lBRTZBQUFnQVJDbEF3c0xBQ0FBUWY4QmNVRUFSd3NzQVFGL0lBQW9BZ0FpQVFSQUlBRVE1UlJCZnhEWUJVVUVRQ0FBS0FJQVJROExJQUJCQURZQ0FBdEJBUXMwQVFGL0lBQW9BZ3dpQVNBQUtBSVFSZ1JBSUFBZ0FDZ0NBQ2dDS0JFQUFBOExJQUFnQVVFQmFqWUNEQ0FCTEFBQUVLVURDeW9CQVg4Z0FDZ0NEQ0lCSUFBb0FoQkdCRUFnQUNBQUtBSUFLQUlrRVFBQUR3c2dBU3dBQUJDbEF3c1FBQ0FBRU9NVUlBRVE0eFJ6UVFGekN4b0FJQUFnQVNBQktBSUFRUXhyS0FJQWFoQzFCallDQUNBQUM5Y0hBUWQvSXdCQjRBQnJJZ1lrQUNBR1FRQTJBa1FnQkNBRUtBSUFLQUlJRVFBQUlBWkJ4QUJxRUNJYUlBWkJBRFlDUUNBRklBVW9BZ0FvQWdnUkFBQWdCa0ZBYXhBaUdnSkFJQVlvQWtRaUJ5QUdLQUpBSWdnZ0J5QUlTeHNpQ2tFQlJnUkFJQU1vQWdBaEFTQURLQUlFSVFJZ0JDQUVLQUlBS0FJSUVRQUFJUWNnQmlBQk5nSVFJQVlnQWlrQ0NEY0NIQ0FHSUFJb0FoQTJBaVFnQmlBQ0tRSUFOd0lVSUFZZ0J6WUNLQ0FFSUFRb0FnQW9BZ2dSQUFBaUEwVUVRQ0FBUVFBNkFBUU1BZ3NnQmtFUWFrRUVjaUVDQWtBQ1FDQURLQUlFSWdOQjBLQVNSZ1JBSUFaQjBBQnFJZ01nQVNBQ0lBUVFZeUFGRUdNUXhBUWdBeEN5QVFSQUlBWkJ5QUJxSUFFZ0JpZ0NLQ0FHUWRBQWFoQktLUU1BRVAwQkRBSUxJQVpCQWpvQVRBd0JDeUFEUWZDZkVrWUVRQ0FHUWRBQWFpSURJQUVnQWlBRUVEd2dCUkE4RU5zQklBTVFzZ0VFUUNBR1FjZ0FhaUFCSUFJZ0JpZ0NLQ0FHUWRBQWFoQktLd01BRUhNTUFnc2dCa0VDT2dCTURBRUxJQU5Cc0trU1JnUkFJQVpCMEFCcUlnTWdBU0FDSUFRUU5DQUZFRFFRMmdFZ0F4QXJCRUFnQmtISUFHb2dBU0FDSUFZb0FpZ2dCa0hRQUdvUUdpb0NBQkJyREFJTElBWkJBam9BVEF3QkN5QURRWkNxRWtZRVFDQUVFR0VoQXlBRkVHRWhCQ0FHUVFFNkFGUWdCaUFESUFSc05nSlFJQVpCMEFCcUVDc0VRQ0FHUWNnQWFpQUJJQWNnQmtIUUFHb1FHaWdDQUJDeEFRd0NDeUFHUVFJNkFFd01BUXNnQTBHZ3N4SkdCRUFnQkJCWklRTWdCUkJaSVFRZ0JrRUJPZ0JVSUFZZ0F5QUViRFlDVUNBR1FkQUFhaEFyQkVBZ0JrSElBR29nQVNBSElBWkIwQUJxRUJvb0FnQVFyUUVNQWdzZ0JrRUNPZ0JNREFFTElBTkIwS2dTUncwQklBWkIwQUJxSWdNZ0FTQUNJQVFRUHlBRkVEOFEyUUVnQXhBckJFQWdCa0hJQUdvZ0FTQUNJQVlvQWlnZ0JrSFFBR29RR2lvQ0FCQnlEQUVMSUFaQkFqb0FUQXNnQUNBR0tRTklOd0lBREFJTElBQkJBRG9BQkF3QkN5QUdRb0NBZ0lDQUFUY0NOQ0FHSUFaQkVHb2lDRFlDTUNBSUlBb1FPU0FHUVRCcUlRc0NRQUpBQTBBZ0NTQUtSZzBCSUFRaEJ5QUZJUWdnQmtIUUFHb2lEQ0FCSUFKQkFCQWlJQU1nQmlnQ1JFRUJSd1IvSUFRZ0NTQUVLQUlBS0FJTUVRRUFCU0FIQ3lBR0tBSkFRUUZIQkg4Z0JTQUpJQVVvQWdBb0Fnd1JBUUFGSUFnTEVPZ1VJQXdRS3dSQUlBWkJFR29nQmtIUUFHb1FHaEFrSUFsQkFXb2hDUXdCQ3dzZ0JrSFFBR29RUFJvZ0FFRUNPZ0FFREFFTElBWWdDellDQ0NBR0lBWW9BakFnQmtFUWFrYzZBQXdnQVNBQ0lBWkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFaQkVHb1FJd3NnQmtIZ0FHb2tBQXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFSndOQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RbFFvTFNRQWdBQUovUWVTOElDMEFBQVJBUWVDOElDZ0NBQXdCQzBIY3ZDQVFpd1lRK1FaQjVMd2dRUUU2QUFCQjRMd2dRZHk4SURZQ0FFSGN2Q0FMS0FJQUlnQTJBZ0FnQUJDMEJnc0VBRUYvQ3drQUlBQkNmeENkRFFzSkFDQUFRbjhRblEwTFdBRUVmeU1BUVJCcklnTWtBQ0FEUVFocUlnUWdBU2dDQUNJRklBRkJCR29pQmlBQ0VMWU1Ba0FnQkJBckJFQWdBQ0FGSUFZZ0FTZ0NHQ0FEUVFocUVCb3FBZ0FRY2d3QkN5QUFRUUk2QUFRTElBTkJFR29rQUFzRUFDQUFDd2NBSUFBUS9nUUx5d0VCQkg4Q1FBTkFJQUJGQkVCQkFDRUJRWkNhSUNnQ0FBUkFRWkNhSUNnQ0FCRHlGQ0VCQzBHNG5DQW9BZ0JGRFFJZ0FTQURjaUVEUWJpY0lDZ0NBQ0VBREFFTEN5QUFLQUpNUVFCT0lRSUNRQUpBSUFBb0FoUWdBQ2dDSEVZTkFDQUFRUUJCQUNBQUtBSWtFUVFBR2lBQUtBSVVEUUJCZnlFQklBSU5BUXdDQ3lBQUtBSUVJZ0VnQUNnQ0NDSUVSd1JBSUFBZ0FTQUVhNnhCQVNBQUtBSW9FU3NBR2d0QkFDRUJJQUJCQURZQ0hDQUFRZ0EzQXhBZ0FFSUFOd0lFSUFKRkRRRUxDeUFCSUFOeUMxZ0JCSDhqQUVFUWF5SURKQUFnQTBFSWFpSUVJQUVvQWdBaUJTQUJRUVJxSWdZZ0FoQzNEQUpBSUFRUUt3UkFJQUFnQlNBR0lBRW9BaGdnQTBFSWFoQWFLZ0lBRUdzTUFRc2dBRUVDT2dBRUN5QURRUkJxSkFBTEdRQWdBUkNEQVNFQklBQWdBQ2dDQUNBQlFRSjBhallDQUF0OUFRTi9Jd0JCRUdzaUJDUUFJQUFnQVJDZENDRUJBMEFnQVFSQUl3QkJFR3NpQXlBQk5nSU1JQU1vQWd4QkFYWWhBeUFFSUFBMkFnd2dCRUVNYWlBREVQUVVJQVFvQWd3aUJVRUVhaUFBSUFVb0FnQWdBaWdDQUJERkFTSUZHeUVBSUFFZ0EwRi9jMm9nQXlBRkd5RUJEQUVMQ3lBRVFSQnFKQUFnQUFzSEFDQUFJQUZJQ3h3QkFYOGdBQzBBQUNFQ0lBQWdBUzBBQURvQUFDQUJJQUk2QUFBTHFnSUJCMzlCQVNFRkFrQUNRQUpBQWtBQ1FBSkFJQUVnQUd0QkFuVU9CZ1VGQUFFQ0F3UUxJQUZCQkdzaUFTZ0NBQ0FBS0FJQUVNVUJSUTBFSUFBZ0FSQ3BBVUVCRHdzZ0FDQUFRUVJxSUFGQkJHc1FsQWNhUVFFUEN5QUFJQUJCQkdvZ0FFRUlhaUFCUVFSckVLRU5Ha0VCRHdzZ0FDQUFRUVJxSUFCQkNHb2dBRUVNYWlBQlFRUnJFS0FOR2tFQkR3c2dBQ0FBUVFScUlBQkJDR29pQkJDVUJ4b2dBRUVNYWlFQ0EwQWdBU0FDUmcwQklBSWhBd0pBSUFJb0FnQWlCeUFFS0FJQUlnZ1F4UUVFUUFOQUFrQWdBeUFJTmdJQUlBQWdCQ0lEUmdSQUlBQWhBd3dCQ3lBSElBTkJCR3NpQkNnQ0FDSUlFTVVCRFFFTEN5QURJQWMyQWdBZ0JrRUJhaUlHUVFoR0RRRUxJQUlpQkVFRWFpRUNEQUVMQ3lBQ1FRUnFJQUZHSVFVTElBVUxVUUVEZnlNQVFSQnJJZ01rQUNBRElBRW9BZ0FpQkNBQlFRUnFJZ1VnQWhDNERBSkFJQU1Rc2dFRVFDQUFJQVFnQlNBQktBSVlJQU1RU2lzREFCQnpEQUVMSUFCQkFqb0FCQXNnQTBFUWFpUUFDeElBSUFCRkJFQkJBQThMSUFBZ0FSQ2pEUXZhQWdBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCQ1dzT0VnQUlDUW9JQ1FFQ0F3UUtDUW9LQ0FrRkJnY0xJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBU2dDQURZQ0FBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVElCQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVE1CQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEFBQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEVBQURjREFBOExJQUlnQWlnQ0FFRUhha0Y0Y1NJQlFRaHFOZ0lBSUFBZ0FTc0RBRGtEQUE4TElBSWdBaWdDQUVFSGFrRjRjU0lCUVJCcU5nSUFJQUFnQVNrREFDQUJLUU1JRUxJTk9RTUFDdzhMSUFJZ0FpZ0NBQ0lCUVFScU5nSUFJQUFnQVRRQ0FEY0RBQThMSUFJZ0FpZ0NBQ0lCUVFScU5nSUFJQUFnQVRVQ0FEY0RBQThMSUFJZ0FpZ0NBRUVIYWtGNGNTSUJRUWhxTmdJQUlBQWdBU2tEQURjREFBdGVBUVIvSUFBb0FnQWhBZ05BSUFJc0FBQWlBeEM2QXdSQVFYOGhCQ0FBSUFKQkFXb2lBallDQUNBQlFjeVpzK1lBVFFSL1FYOGdBMEV3YXlJRElBRkJDbXdpQkdvZ0F5QUVRZi8vLy84SGMwb2JCVUYvQ3lFQkRBRUxDeUFCQzVjckF4eC9BbndEZmlNQVFkQUFheUlMSkFBZ0N5QUJOZ0pNSUF0Qk4yb2hIaUFMUVRocUlSa0NRQUpBQWtBQ1FBTkFJQUVoQmlBRklCTkIvLy8vL3dkelNnMEJJQVVnRTJvaEV3SkFBa0FDUUNBR0lnVXRBQUFpREFSQUEwQUNRQUpBSUF4Qi93RnhJZ0ZGQkVBZ0JTRUJEQUVMSUFGQkpVY05BU0FGSVF3RFFDQU1MUUFCUVNWSEJFQWdEQ0VCREFJTElBVkJBV29oQlNBTUxRQUNJUWdnREVFQ2FpSUJJUXdnQ0VFbFJnMEFDd3NnQlNBR2F5SUZJQk5CLy8vLy93ZHpJZzVLRFFjZ0FBUkFJQUFnQmlBRkVMNENDeUFGRFFZZ0N5QUJOZ0pNSUFGQkFXb2hCVUYvSVE4Q1FDQUJMQUFCSWdnUXVnTkZEUUFnQVMwQUFrRWtSdzBBSUFGQkEyb2hCU0FJUVRCcklROUJBU0VhQ3lBTElBVTJBa3hCQUNFSUFrQWdCU3dBQUNJSlFTQnJJZ0ZCSDBzRVFDQUZJUXdNQVFzZ0JTRU1RUUVnQVhRaUFVR0owUVJ4UlEwQUEwQWdDeUFGUVFGcUlndzJBa3dnQVNBSWNpRUlJQVVzQUFFaUNVRWdheUlCUVNCUERRRWdEQ0VGUVFFZ0FYUWlBVUdKMFFSeERRQUxDd0pBSUFsQktrWUVRQUovQWtBZ0RDd0FBU0lCRUxvRFJRMEFJQXd0QUFKQkpFY05BQ0FCUVFKMElBUnFRY0FCYTBFS05nSUFJQXhCQTJvaENVRUJJUm9nREN3QUFVRURkQ0FEYWtHQUEyc29BZ0FNQVFzZ0dnMEdJQXhCQVdvaENTQUFSUVJBSUFzZ0NUWUNURUVBSVJwQkFDRVFEQU1MSUFJZ0FpZ0NBQ0lCUVFScU5nSUFRUUFoR2lBQktBSUFDeUVRSUFzZ0NUWUNUQ0FRUVFCT0RRRkJBQ0FRYXlFUUlBaEJnTUFBY2lFSURBRUxJQXRCekFCcUVQd1VJaEJCQUVnTkNDQUxLQUpNSVFrTFFRQWhCVUYvSVFjQ2Z5QUpMUUFBUVM1SEJFQWdDU0VCUVFBTUFRc2dDUzBBQVVFcVJnUkFBbjhDUUNBSkxBQUNJZ0VRdWdORkRRQWdDUzBBQTBFa1J3MEFJQUZCQW5RZ0JHcEJ3QUZyUVFvMkFnQWdDVUVFYWlFQklBa3NBQUpCQTNRZ0EycEJnQU5yS0FJQURBRUxJQm9OQmlBSlFRSnFJUUZCQUNBQVJRMEFHaUFDSUFJb0FnQWlERUVFYWpZQ0FDQU1LQUlBQ3lFSElBc2dBVFlDVENBSFFYOXpRUjkyREFFTElBc2dDVUVCYWpZQ1RDQUxRY3dBYWhEOEZDRUhJQXNvQWt3aEFVRUJDeUVSQTBBZ0JTRUtRUndoRENBQkloSXNBQUFpQlVIN0FHdEJSa2tOQ1NBU1FRRnFJUUVnQlNBS1FUcHNha0hQK3cxcUxRQUFJZ1ZCQVd0QkNFa05BQXNnQ3lBQk5nSk1Ba0FDUUNBRlFSdEhCRUFnQlVVTkN5QVBRUUJPQkVBZ0JDQVBRUUowYWlBRk5nSUFJQXNnQXlBUFFRTjBhaWtEQURjRFFBd0NDeUFBUlEwSUlBdEJRR3NnQlNBQ0VQc1VEQUlMSUE5QkFFNE5DZ3RCQUNFRklBQkZEUWNMSUFoQi8vOTdjU0lKSUFnZ0NFR0F3QUJ4R3lFSVFRQWhEMEhuSmlFTklCa2hEQUpBQWtBZ0FFRWdJQkFDZndKL0FrQUNRQUpBQWtBQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBSUJJc0FBQWlCVUZmY1NBRklBVkJEM0ZCQTBZYklBVWdDaHNpQlVIWUFHc09JUVFVRkJRVUZCUVVGQTRVRHdZT0RnNFVCaFFVRkJRQ0JRTVVGQWtVQVJRVUJBQUxBa0FnQlVIQkFHc09CdzRVQ3hRT0RnNEFDeUFGUWRNQVJnMEpEQk1MSUFzcEEwQWhJMEhuSmd3RkMwRUFJUVVDUUFKQUFrQUNRQUpBQWtBQ1FDQUtRZjhCY1E0SUFBRUNBd1FhQlFZYUN5QUxLQUpBSUJNMkFnQU1HUXNnQ3lnQ1FDQVROZ0lBREJnTElBc29Ba0FnRTZ3M0F3QU1Gd3NnQ3lnQ1FDQVRPd0VBREJZTElBc29Ba0FnRXpvQUFBd1ZDeUFMS0FKQUlCTTJBZ0FNRkFzZ0N5Z0NRQ0FUckRjREFBd1RDMEVJSUFjZ0IwRUlUUnNoQnlBSVFRaHlJUWhCK0FBaEJRc2dHU0VHSUFWQklIRWhDU0FMS1FOQUlpTWlKRkJGQkVBRFFDQUdRUUZySWdZZ0pLZEJEM0ZCNFA4TmFpMEFBQ0FKY2pvQUFDQWtRZzlXSVFvZ0pFSUVpQ0VrSUFvTkFBc0xJQWhCQ0hGRklDTlFjZzBESUFWQkJIWkI1eVpxSVExQkFpRVBEQU1MSUJraEJTQUxLUU5BSWlNaUpGQkZCRUFEUUNBRlFRRnJJZ1VnSktkQkIzRkJNSEk2QUFBZ0pFSUhWaUVHSUNSQ0E0Z2hKQ0FHRFFBTEN5QUZJUVlnQ0VFSWNVVU5BaUFISUJrZ0Jtc2lCVUVCYWlBRklBZElHeUVIREFJTElBc3BBMEFpSTBJQVV3UkFJQXRDQUNBamZTSWpOd05BUVFFaEQwSG5KZ3dCQ3lBSVFZQVFjUVJBUVFFaEQwSG9KZ3dCQzBIcEprSG5KaUFJUVFGeElnOGJDeUVOSUNNZ0dSQ1ZCeUVHQ3lBUlFRQWdCMEVBU0JzTkRpQUlRZi8vZTNFZ0NDQVJHeUVJSUNOQ0FGSWdCM0pGQkVBZ0dTSUdJUXhCQUNFSERBd0xJQWNnSTFBZ0dTQUdhMm9pQlNBRklBZElHeUVIREFzTElBc29Ba0FpQlVITXRRZ2dCUnNpQmlJRlFRQkIvLy8vL3djZ0J5QUhRZi8vLy84SFR4c2lDQkNyRFNJTUlBVnJJQWdnREJzaUJTQUdhaUVNSUFkQkFFNEVRQ0FKSVFnZ0JTRUhEQXNMSUFraENDQUZJUWNnREMwQUFBME5EQW9MSUFjRVFDQUxLQUpBREFJTElBQkJJQ0FRUVFBZ0NCRExBa0VBREFJTElBdEJBRFlDRENBTElBc3BBMEErQWdnZ0N5QUxRUWhxSWdVMkFrQkJmeUVISUFVTElRWkJBQ0VGSUFZaERBSkFBMEFnRENnQ0FDSUpSUTBCSUF0QkJHb2dDUkQ2RkNJSlFRQklJZ29nQ1NBSElBVnJTM0pGQkVBZ0RFRUVhaUVNSUFjZ0JTQUphaUlGU3cwQkRBSUxDeUFLRFEwTFFUMGhEQ0FGUVFCSURRc2dBRUVnSUJBZ0JTQUlFTXNDUVFBaURDQUZSUTBBR2dOQUFrQWdCaWdDQUNJSFJRMEFJQXRCQkdvZ0J4RDZGQ0lISUF4cUlnd2dCVXNOQUNBQUlBdEJCR29nQnhDK0FpQUdRUVJxSVFZZ0JTQU1TdzBCQ3dzZ0JRc2lCU0FJUVlEQUFITVF5d0lnRUNBRklBVWdFRWdiSVFVTUNBc2dFVUVBSUFkQkFFZ2JEUWhCUFNFTUlBc3JBMEFoSVNBSUlROGdCU0VSUVFBaEZVRUFJUndqQUVHd0JHc2lEaVFBSUE1QkFEWUNMQUpBSUNHOUlpTkNBRk1FUUVFQklSWkJyaWNoR3lBaG1pSWh2U0VqREFFTElBOUJnQkJ4QkVCQkFTRVdRYkVuSVJzTUFRdEJ0Q2RCcnljZ0QwRUJjU0lXR3lFYklCWkZJUndMQWtBZ0kwS0FnSUNBZ0lDQStQOEFnMEtBZ0lDQWdJQ0ErUDhBVVFSQUlBQkJJQ0FRSUJaQkEyb2lCU0FQUWYvL2UzRVF5d0lnQUNBYklCWVF2Z0lnQUVHZjh3SkI4b1FHSUJGQklIRWlCaHRCdThFRFFaUFVCaUFHR3lBaElDRmlHMEVERUw0Q0lBQkJJQ0FRSUFVZ0QwR0F3QUJ6RU1zQ0lBVWdFQ0FGSUJCS0d5RU5EQUVMSUE1QkVHb2hHQUpBQW44Q1FDQWhJQTVCTEdvUXJBMGlJU0Fob0NJaFJBQUFBQUFBQUFBQVlnUkFJQTRnRGlnQ0xDSUZRUUZyTmdJc0lCRkJJSElpRkVIaEFFY05BUXdEQ3lBUlFTQnlJaFJCNFFCR0RRSWdEaWdDTENFS1FRWWdCeUFIUVFCSUd3d0JDeUFPSUFWQkhXc2lDallDTENBaFJBQUFBQUFBQUxCQm9pRWhRUVlnQnlBSFFRQklHd3NoQ1NBT1FUQnFRYUFDUVFBZ0NrRUFUaHRxSWhJaEJnTkFJQVlDZnlBaFJBQUFBQUFBQVBCQll5QWhSQUFBQUFBQUFBQUFabkVFUUNBaHF3d0JDMEVBQ3lJRk5nSUFJQVpCQkdvaEJpQWhJQVc0b1VRQUFBQUFaYzNOUWFJaUlVUUFBQUFBQUFBQUFHSU5BQXNDUUNBS1FRQk1CRUFnQ2lFSElBWWhCU0FTSVFnTUFRc2dFaUVJSUFvaEJ3TkFRUjBnQnlBSFFSMU9HeUVIQWtBZ0JrRUVheUlGSUFoSkRRQWdCNjBoSkVJQUlTTURRQ0FGSUNOQy8vLy8vdytESUFVMUFnQWdKSVo4SWlWQ2dKVHIzQU9BSWlOQ2dPeVVvd3grSUNWOFBnSUFJQVZCQkdzaUJTQUlUdzBBQ3lBanB5SUZSUTBBSUFoQkJHc2lDQ0FGTmdJQUN3TkFJQWdnQmlJRlNRUkFJQVZCQkdzaUJpZ0NBRVVOQVFzTElBNGdEaWdDTENBSGF5SUhOZ0lzSUFVaEJpQUhRUUJLRFFBTEN5QUhRUUJJQkVBZ0NVRVpha0VKYmtFQmFpRVZJQlJCNWdCR0lSY0RRRUVKUVFBZ0Iyc2lCaUFHUVFsT0d5RU5Ba0FnQlNBSVRRUkFJQWdvQWdBaEJnd0JDMEdBbE92Y0F5QU5kaUVkUVg4Z0RYUkJmM01oSDBFQUlRY2dDQ0VHQTBBZ0JpQUhJQVlvQWdBaUlDQU5kbW8yQWdBZ0h5QWdjU0FkYkNFSElBWkJCR29pQmlBRlNRMEFDeUFJS0FJQUlRWWdCMFVOQUNBRklBYzJBZ0FnQlVFRWFpRUZDeUFPSUE0b0Fpd2dEV29pQnpZQ0xDQVNJQWdnQmtWQkFuUnFJZ2dnRnhzaUJpQVZRUUowYWlBRklBVWdCbXRCQW5VZ0ZVb2JJUVVnQjBFQVNBMEFDd3RCQUNFSEFrQWdCU0FJVFEwQUlCSWdDR3RCQW5WQkNXd2hCMEVLSVFZZ0NDZ0NBQ0lOUVFwSkRRQURRQ0FIUVFGcUlRY2dEU0FHUVFwc0lnWlBEUUFMQ3lBSklBZEJBQ0FVUWVZQVJ4dHJJQlJCNXdCR0lBbEJBRWR4YXlJR0lBVWdFbXRCQW5WQkNXeEJDV3RJQkVCQkJFR2tBaUFLUVFCSUd5QU9haUFHUVlESUFHb2lEVUVKYlNJVlFRSjBha0hRSDJzaENrRUtJUVlnRlVGM2JDQU5haUlOUVFkTUJFQURRQ0FHUVFwc0lRWWdEVUVCYWlJTlFRaEhEUUFMQ3dKQUlBb29BZ0FpRnlBWElBWnVJaFVnQm13aURVWWdDa0VFYWlJZElBVkdjUTBBSUJjZ0RXc2hGd0pBSUJWQkFYRkZCRUJFQUFBQUFBQUFRRU1oSVNBR1FZQ1U2OXdEUnlBSUlBcFBjZzBCSUFwQkJHc3RBQUJCQVhGRkRRRUxSQUVBQUFBQUFFQkRJU0VMUkFBQUFBQUFBT0EvUkFBQUFBQUFBUEEvUkFBQUFBQUFBUGcvSUFVZ0hVWWJSQUFBQUFBQUFQZy9JQmNnQmtFQmRpSWRSaHNnRnlBZFNSc2hJZ0pBSUJ3TkFDQWJMUUFBUVMxSERRQWdJcG9oSWlBaG1pRWhDeUFLSUEwMkFnQWdJU0Fpb0NBaFlRMEFJQW9nQmlBTmFpSUdOZ0lBSUFaQmdKVHIzQU5QQkVBRFFDQUtRUUEyQWdBZ0NDQUtRUVJySWdwTEJFQWdDRUVFYXlJSVFRQTJBZ0FMSUFvZ0NpZ0NBRUVCYWlJR05nSUFJQVpCLzVQcjNBTkxEUUFMQ3lBU0lBaHJRUUoxUVFsc0lRZEJDaUVHSUFnb0FnQWlEVUVLU1EwQUEwQWdCMEVCYWlFSElBMGdCa0VLYkNJR1R3MEFDd3NnQ2tFRWFpSUdJQVVnQlNBR1N4c2hCUXNEUUNBRklnWWdDRTBpRFVVRVFDQUdRUVJySWdVb0FnQkZEUUVMQ3dKQUlCUkI1d0JIQkVBZ0QwRUljU0VLREFFTElBZEJmM05CZnlBSlFRRWdDUnNpQlNBSFNpQUhRWHRLY1NJS0d5QUZhaUVKUVg5QmZpQUtHeUFSYWlFUklBOUJDSEVpQ2cwQVFYY2hCUUpBSUEwTkFDQUdRUVJyS0FJQUloUkZEUUJCQ2lFTlFRQWhCU0FVUVFwd0RRQURRQ0FGSWdwQkFXb2hCU0FVSUExQkNtd2lEWEJGRFFBTElBcEJmM01oQlFzZ0JpQVNhMEVDZFVFSmJDRU5JQkZCWDNGQnhnQkdCRUJCQUNFS0lBa2dCU0FOYWtFSmF5SUZRUUFnQlVFQVNoc2lCU0FGSUFsS0d5RUpEQUVMUVFBaENpQUpJQWNnRFdvZ0JXcEJDV3NpQlVFQUlBVkJBRW9iSWdVZ0JTQUpTaHNoQ1F0QmZ5RU5JQWxCL2YvLy93ZEIvdi8vL3djZ0NTQUtjaUljRzBvTkFTQUpJQnhCQUVkcVFRRnFJUlFDUUNBUlFWOXhJaGRCeGdCR0JFQWdCeUFVUWYvLy8vOEhjMG9OQXlBSFFRQWdCMEVBU2hzaEJRd0JDeUFZSUFjZ0IwRWZkU0lGY3lBRmE2MGdHQkNWQnlJRmEwRUJUQVJBQTBBZ0JVRUJheUlGUVRBNkFBQWdHQ0FGYTBFQ1NBMEFDd3NnQlVFQ2F5SVZJQkU2QUFBZ0JVRUJhMEV0UVNzZ0IwRUFTQnM2QUFBZ0dDQVZheUlGSUJSQi8vLy8vd2R6U2cwQ0N5QUZJQlJxSWdVZ0ZrSC8vLy8vQjNOS0RRRWdBRUVnSUJBZ0JTQVdhaUlSSUE4UXl3SWdBQ0FiSUJZUXZnSWdBRUV3SUJBZ0VTQVBRWUNBQkhNUXl3SUNRQUpBQWtBZ0YwSEdBRVlFUUNBT1FSQnFJZ1ZCQ0hJaEJ5QUZRUWx5SVFvZ0VpQUlJQWdnRWtzYklnMGhDQU5BSUFnMUFnQWdDaENWQnlFRkFrQWdDQ0FOUndSQUlBVWdEa0VRYWswTkFRTkFJQVZCQVdzaUJVRXdPZ0FBSUFVZ0RrRVFha3NOQUFzTUFRc2dCU0FLUncwQUlBNUJNRG9BR0NBSElRVUxJQUFnQlNBS0lBVnJFTDRDSUFoQkJHb2lDQ0FTVFEwQUN5QWNCRUFnQUVIOGx3aEJBUkMrQWdzZ0NVRUFUQ0FHSUFoTmNnMEJBMEFnQ0RVQ0FDQUtFSlVISWdVZ0RrRVFha3NFUUFOQUlBVkJBV3NpQlVFd09nQUFJQVVnRGtFUWFrc05BQXNMSUFBZ0JVRUpJQWtnQ1VFSlRoc1F2Z0lnQ1VFSmF5RUZJQWhCQkdvaUNDQUdUdzBESUFsQkNVb2hCeUFGSVFrZ0J3MEFDd3dDQ3dKQUlBbEJBRWdOQUNBR0lBaEJCR29nQmlBSVN4c2hEU0FPUVJCcUlnVkJDSEloQnlBRlFRbHlJUklnQ0NFR0EwQWdFaUFHTlFJQUlCSVFsUWNpQlVZRVFDQU9RVEE2QUJnZ0J5RUZDd0pBSUFZZ0NFY0VRQ0FGSUE1QkVHcE5EUUVEUUNBRlFRRnJJZ1ZCTURvQUFDQUZJQTVCRUdwTERRQUxEQUVMSUFBZ0JVRUJFTDRDSUFWQkFXb2hCU0FKSUFweVJRMEFJQUJCL0pjSVFRRVF2Z0lMSUFBZ0JTQUpJQklnQldzaUJTQUZJQWxLR3hDK0FpQUpJQVZySVFrZ0JrRUVhaUlHSUExUERRRWdDVUVBVGcwQUN3c2dBRUV3SUFsQkVtcEJFa0VBRU1zQ0lBQWdGU0FZSUJWckVMNENEQUlMSUFraEJRc2dBRUV3SUFWQkNXcEJDVUVBRU1zQ0N5QUFRU0FnRUNBUklBOUJnTUFBY3hETEFpQVJJQkFnRUNBUlNCc2hEUXdCQ3lBYklCRkJHblJCSDNWQkNYRnFJUWtDUUNBSFFRdExEUUJCRENBSGF5RUZSQUFBQUFBQUFEQkFJU0lEUUNBaVJBQUFBQUFBQURCQW9pRWlJQVZCQVdzaUJRMEFDeUFKTFFBQVFTMUdCRUFnSWlBaG1pQWlvYUNhSVNFTUFRc2dJU0Fpb0NBaW9TRWhDeUFXUVFKeUlRb2dFVUVnY1NFSUlCZ2dEaWdDTENJR0lBWkJIM1VpQlhNZ0JXdXRJQmdRbFFjaUJVWUVRQ0FPUVRBNkFBOGdEa0VQYWlFRkN5QUZRUUpySWhJZ0VVRVBham9BQUNBRlFRRnJRUzFCS3lBR1FRQklHem9BQUNBUFFRaHhJUkVnRGtFUWFpRUdBMEFnQmlJRkFuOGdJWmxFQUFBQUFBQUE0RUZqQkVBZ0lhb01BUXRCZ0lDQWdIZ0xJZ1pCNFA4TmFpMEFBQ0FJY2pvQUFDQVJJQWRCQUVweVJTQWhJQWEzb1VRQUFBQUFBQUF3UUtJaUlVUUFBQUFBQUFBQUFHRnhJQVZCQVdvaUJpQU9RUkJxYTBFQlIzSkZCRUFnQlVFdU9nQUJJQVZCQW1vaEJnc2dJVVFBQUFBQUFBQUFBR0lOQUF0QmZ5RU5RZjMvLy84SElBb2dHQ0FTYXlJUmFpSUZheUFIU0EwQUlBQkJJQ0FRSUFVQ2Z3SkFJQWRGRFFBZ0JpQU9RUkJxYXlJSVFRSnJJQWRPRFFBZ0IwRUNhZ3dCQ3lBR0lBNUJFR3BySWdnTElnWnFJZ1VnRHhETEFpQUFJQWtnQ2hDK0FpQUFRVEFnRUNBRklBOUJnSUFFY3hETEFpQUFJQTVCRUdvZ0NCQytBaUFBUVRBZ0JpQUlhMEVBUVFBUXl3SWdBQ0FTSUJFUXZnSWdBRUVnSUJBZ0JTQVBRWURBQUhNUXl3SWdCU0FRSUFVZ0VFb2JJUTBMSUE1QnNBUnFKQUFnRFNJRlFRQk9EUWNNQ1FzZ0N5QUxLUU5BUEFBM1FRRWhCeUFlSVFZZ0NTRUlEQVFMSUFVdEFBRWhEQ0FGUVFGcUlRVU1BQXNBQ3lBQURRY2dHa1VOQWtFQklRVURRQ0FFSUFWQkFuUnFLQUlBSWdBRVFDQURJQVZCQTNScUlBQWdBaEQ3RkVFQklSTWdCVUVCYWlJRlFRcEhEUUVNQ1FzTFFRRWhFeUFGUVFwUERRY0RRQ0FFSUFWQkFuUnFLQUlBRFFFZ0JVRUJhaUlGUVFwSERRQUxEQWNMUVJ3aERBd0VDeUFISUF3Z0Jtc2lDU0FISUFsS0d5SUtJQTlCLy8vLy93ZHpTZzBDUVQwaERDQVFJQW9nRDJvaUJ5QUhJQkJJR3lJRklBNUtEUU1nQUVFZ0lBVWdCeUFJRU1zQ0lBQWdEU0FQRUw0Q0lBQkJNQ0FGSUFjZ0NFR0FnQVJ6RU1zQ0lBQkJNQ0FLSUFsQkFCRExBaUFBSUFZZ0NSQytBaUFBUVNBZ0JTQUhJQWhCZ01BQWN4RExBZ3dCQ3d0QkFDRVREQU1MUVQwaERBdEJtS2tnSUF3MkFnQUxRWDhoRXdzZ0MwSFFBR29rQUNBVEM3RUJBUUovSUFDOElnSkIvLy8vL3dkeElnRytJUUFDUUNBQlFkVytzdmdEVHdSQUlBRkJnWUNBaVFSUEJFQkRBQUFBQUNBQWxVTUFBSUEva2lFQURBSUxRd0FBZ0Q5REFBQUFRQ0FBSUFDU0VKNElRd0FBQUVDU2xaTWhBQXdCQ3lBQlFmbUtpL1FEVHdSQUlBQWdBSklRbmdnaUFDQUFRd0FBQUVDU2xTRUFEQUVMSUFGQmdJQ0FCRWtOQUNBQVF3QUFBTUNVRUo0SUlnQ01JQUJEQUFBQVFKS1ZJUUFMSUFDTUlBQWdBa0VBU0JzTHhBSUNBMzhCZkNNQVFSQnJJZ01rQUFKQUlBQzhJZ0pCLy8vLy93ZHhJZ0ZCMnAraytnTk5CRUFnQVVHQWdJRE1BMGtOQVNBQXUwRUFFSllISVFBTUFRc2dBVUhScCsyREJFMEVRQ0FBdXlFRUlBRkI0NWZiZ0FSTkJFQkVHQzFFVlBzaCtUOUVHQzFFVlBzaCtiOGdBa0VBU0JzZ0JLQkJBUkNXQnlFQURBSUxSQmd0UkZUN0lRbEFSQmd0UkZUN0lRbkFJQUpCQUVnYklBU2dRUUFRbGdjaEFBd0JDeUFCUWRYamlJY0VUUVJBSUFDN0lRUWdBVUhmMjcrRkJFMEVRRVRTSVROL2ZOa1NRRVRTSVROL2ZOa1N3Q0FDUVFCSUd5QUVvRUVCRUpZSElRQU1BZ3RFR0MxRVZQc2hHVUJFR0MxRVZQc2hHY0FnQWtFQVNCc2dCS0JCQUJDV0J5RUFEQUVMSUFGQmdJQ0EvQWRQQkVBZ0FDQUFreUVBREFFTElBQWdBMEVJYWhDdERTRUJJQU1yQXdnZ0FVRUJjUkNXQnlFQUN5QURRUkJxSkFBZ0FBdW9Bd01DZkFOL0FYNGdBTDBpQ0VJZ2lLY2lCVUg0Ly8vL0IzRkJxS2lXL3dOSklnWkZCRUJFR0MxRVZQc2g2VDhnQUNBQW1pQUlRZ0JaSWdjYm9VUUhYQlF6SnFhQlBDQUJJQUdhSUFjYm9hQWhBQ0FGUVI5MklRVkVBQUFBQUFBQUFBQWhBUXNnQUNBQUlBQWdBS0lpQktJaUEwUmpWVlZWVlZYVlA2SWdCQ0FESUFRZ0JLSWlBeUFESUFNZ0F5QURSSE5UWU52TGRmTytva1Nta2plZ2lINFVQNkNpUkFGbDh2TFlSRU0vb0tKRUtBTld5U0p0YlQrZ29rUTMxZ2FFOUdTV1A2Q2lSSHIrRUJFUkVjRS9vQ0FFSUFNZ0F5QURJQU1nQTBUVWVyOTBjQ3I3UHFKRTZhZndNZys0RWorZ29rUm9FSTBhOXlZd1A2Q2lSQldENFA3STIxYy9vS0pFazRSdTZlTW1naitnb2tUK1FiTWJ1cUdyUDZDaW9LSWdBYUNpSUFHZ29DSURvQ0VCSUFaRkJFQkJBU0FDUVFGMGE3Y2lCQ0FBSUFNZ0FTQUJvaUFCSUFTZ282R2dJZ0FnQUtDaElnQ2FJQUFnQlJzUEN5QUNCSHhFQUFBQUFBQUE4TDhnQWFNaUJDQUV2VUtBZ0lDQWNJTy9JZ1FnQXlBQnZVS0FnSUNBY0lPL0lnRWdBS0dob2lBRUlBR2lSQUFBQUFBQUFQQS9vS0NpSUFTZ0JTQUJDd3VLQkFJRGZ3RitBa0FDUUFKQUFrQUNmd0pBQWtBQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVLVUJDeUlDUVN0ckRnTUFBUUFCQ3lBQ1FTMUdJQUZGQW44Z0FDZ0NCQ0lESUFBb0FtaEhCRUFnQUNBRFFRRnFOZ0lFSUFNdEFBQU1BUXNnQUJDbEFRc2lBMEU2YXlJQlFYVkxjZzBCR2lBQUtRTndRZ0JaRFFJTUJRc2dBa0U2YXlFQklBSWhBMEVBQ3lFRUlBRkJka2tOQVNBRFFUQnJJZ0ZCQ2trRVFFRUFJUUlEUUNBRElBSkJDbXhxSVFFQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVLVUJDeUVESUFGQk1Hc2hBaUFDUWN5WnMrWUFTQ0FEUVRCcklnRkJDVTF4RFFBTElBS3NJUVVMQWtBZ0FVRUtUdzBBQTBBZ0E2MGdCVUlLZm54Q01IMGhCUUovSUFBb0FnUWlBU0FBS0FKb1J3UkFJQUFnQVVFQmFqWUNCQ0FCTFFBQURBRUxJQUFRcFFFTElnTkJNR3NpQVVFSlN3MEJJQVZDcm8rRjE4ZkM2Nk1CVXcwQUN3c2dBVUVLU1FSQUEwQUNmeUFBS0FJRUlnRWdBQ2dDYUVjRVFDQUFJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QUFFS1VCQzBFd2EwRUtTUTBBQ3dzZ0FDa0RjRUlBV1FSQUlBQWdBQ2dDQkVFQmF6WUNCQXRDQUNBRmZTQUZJQVFiRHdzZ0FDQUFLQUlFUVFGck5nSUVEQUVMSUFBcEEzQkNBRk1OQVFzZ0FDQUFLQUlFUVFGck5nSUVDMEtBZ0lDQWdJQ0FnSUIvQzlRekF4Qi9CMzRCZkNNQVFUQnJJZzRrQUFKQUlBSkJBazBFUUNBQ1FRSjBJZ0pCL1BzTmFpZ0NBQ0VSSUFKQjhQc05haWdDQUNFTkEwQUNmeUFCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUF3QkN5QUJFS1VCQ3lJQ0VNSUZEUUFMUVFFaENRSkFBa0FnQWtFcmF3NERBQUVBQVF0QmYwRUJJQUpCTFVZYklRa2dBU2dDQkNJQ0lBRW9BbWhIQkVBZ0FTQUNRUUZxTmdJRUlBSXRBQUFoQWd3QkN5QUJFS1VCSVFJTEFrQUNRQU5BSUFaQjlRbHFMQUFBSUFKQklISkdCRUFDUUNBR1FRWkxEUUFnQVNnQ0JDSUNJQUVvQW1oSEJFQWdBU0FDUVFGcU5nSUVJQUl0QUFBaEFnd0JDeUFCRUtVQklRSUxJQVpCQVdvaUJrRUlSdzBCREFJTEN5QUdRUU5IQkVBZ0JrRUlSZzBCSUFORklBWkJCRWx5RFFJZ0JrRUlSZzBCQ3lBQktRTndJaFJDQUZrRVFDQUJJQUVvQWdSQkFXczJBZ1FMSUFORklBWkJCRWx5RFFBZ0ZFSUFVeUVDQTBBZ0FrVUVRQ0FCSUFFb0FnUkJBV3MyQWdRTElBWkJBV3NpQmtFRFN3MEFDd3RDQUNFVUl3QkJFR3NpQXlRQUFuNGdDYkpEQUFDQWY1UzhJZ0pCLy8vLy93ZHhJZ0ZCZ0lDQUJHdEIvLy8vOXdkTkJFQWdBYTFDR1laQ2dJQ0FnSUNBZ01BL2ZBd0JDeUFDclVJWmhrS0FnSUNBZ0lEQS8vOEFoQ0FCUVlDQWdQd0hUdzBBR2tJQUlBRkZEUUFhSUFNZ0FhMUNBQ0FCWnlJQlFkRUFhaERNQWlBREtRTUFJUlFnQXlrRENFS0FnSUNBZ0lEQUFJVkJpZjhBSUFGcnJVSXdob1FMSVJVZ0RpQVVOd01BSUE0Z0ZTQUNRWUNBZ0lCNGNhMUNJSWFFTndNSUlBTkJFR29rQUNBT0tRTUlJUlFnRGlrREFDRVZEQUlMQWtBQ1FBSkFJQVlOQUVFQUlRWURRQ0FHUVovekFtb3NBQUFnQWtFZ2NrY05BUUpBSUFaQkFVc05BQ0FCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUNFQ0RBRUxJQUVRcFFFaEFnc2dCa0VCYWlJR1FRTkhEUUFMREFFTEFrQUNRQ0FHRGdRQUFRRUNBUXNDUUNBQ1FUQkhEUUFDZnlBQktBSUVJZ29nQVNnQ2FFY0VRQ0FCSUFwQkFXbzJBZ1FnQ2kwQUFBd0JDeUFCRUtVQkMwRmZjVUhZQUVZRVFDQU5JUW9nQXlFTlFRQWhBaU1BUWJBRGF5SUZKQUFDZndKQUlBRW9BZ1FpQXlBQktBSm9Sd1JBSUFFZ0EwRUJhallDQkNBRExRQUFJUUlNQVF0QkFBd0JDMEVCQ3lFREEwQUNRQUpBQWtBQ1FBSitBa0FDUUFKL0lBTkZCRUFnQVJDbEFRd0JDeUFDUVRCSEJFQkNnSUNBZ0lDQXdQOC9JUlVnQWtFdVJnMERRZ0FNQkFzZ0FTZ0NCQ0lESUFFb0FtaEdEUUZCQVNFSUlBRWdBMEVCYWpZQ0JDQURMUUFBQ3lFQ1FRRWhBd3dIQzBFQklRZ01CQXNDZnlBQktBSUVJZ0lnQVNnQ2FFY0VRQ0FCSUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFCRUtVQkN5SUNRVEJHRFFGQkFTRVFRZ0FMSVJnTUFRc0RRQ0FYUWdGOUlSZEJBU0VRQW44Z0FTZ0NCQ0lDSUFFb0FtaEhCRUFnQVNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQVJDbEFRc2lBa0V3UmcwQUMwRUJJUWdMQTBBZ0FrRWdjaUVIQWtBQ1FDQUNRVEJySWc5QkNra05BQ0FDUVM1R0lBZEI0UUJyUVFaSmNrVUVRQ0FDSVFNTUJRdEJMaUVESUFKQkxrY05BQ0FRRFFSQkFTRVFJQlFoRnd3QkN5QUhRZGNBYXlBUElBSkJPVW9iSVFJQ1FDQVVRZ2RYQkVBZ0FpQUxRUVIwYWlFTERBRUxJQlJDSEZnRVFDQUZRVEJxSUFJUXBnTWdCVUVnYWlBWklCVkNBRUtBZ0lDQWdJREEvVDhReGdFZ0JVRVFhaUFGS1FNd0lBVXBBemdnQlNrRElDSVpJQVVwQXlnaUZSREdBU0FGSUFVcEF4QWdCU2tER0NBV0lCZ1FpZ01nQlNrRENDRVlJQVVwQXdBaEZnd0JDeUFDUlNBTWNnMEFJQVZCMEFCcUlCa2dGVUlBUW9DQWdJQ0FnSUQvUHhER0FTQUZRVUJySUFVcEExQWdCU2tEV0NBV0lCZ1FpZ01nQlNrRFNDRVlRUUVoRENBRktRTkFJUllMSUJSQ0FYd2hGRUVCSVFnTElBRW9BZ1FpQWlBQktBSm9Sd1IvSUFFZ0FrRUJhallDQkNBQ0xRQUFCU0FCRUtVQkN5RUNEQUFMQUF0QkFDRUREQUVMQ3dKK0lBaEZCRUFDUUFKQUlBRXBBM0JDQUZrRVFDQUJJQUVvQWdRaUFrRUJhellDQkNBTlJRMEJJQUVnQWtFQ2F6WUNCQ0FRUlEwQ0lBRWdBa0VEYXpZQ0JBd0NDeUFORFFFTElBRkNBQkNEQkFzZ0JVSGdBR29nQ2JkRUFBQUFBQUFBQUFDaUVNVUVJQVVwQTJBaEZpQUZLUU5vREFFTElCUkNCMWNFUUNBVUlSVURRQ0FMUVFSMElRc2dGVUlCZkNJVlFnaFNEUUFMQ3dKQUFrQUNRQ0FEUVY5eFFkQUFSZ1JBSUFFZ0RSQ0JGU0lWUW9DQWdJQ0FnSUNBZ0g5U0RRTWdEUVJBSUFFcEEzQkNBRmtOQWd3REMwSUFJUllnQVVJQUVJTUVRZ0FNQkF0Q0FDRVZJQUVwQTNCQ0FGTU5BZ3NnQVNBQktBSUVRUUZyTmdJRUMwSUFJUlVMSUF0RkJFQWdCVUh3QUdvZ0NiZEVBQUFBQUFBQUFBQ2lFTVVFSUFVcEEzQWhGaUFGS1FONERBRUxJQmNnRkNBUUcwSUNoaUFWZkVJZ2ZTSVVRUUFnRVd1dFZRUkFRWmlwSUVIRUFEWUNBQ0FGUWFBQmFpQUpFS1lESUFWQmtBRnFJQVVwQTZBQklBVXBBNmdCUW45Qy8vLy8vLy8vdi8vL0FCREdBU0FGUVlBQmFpQUZLUU9RQVNBRktRT1lBVUovUXYvLy8vLy8vNy8vL3dBUXhnRWdCU2tEZ0FFaEZpQUZLUU9JQVF3QkN5QVJRZUlCYTZ3Z0ZGY0VRQ0FMUVFCT0JFQURRQ0FGUWFBRGFpQVdJQmhDQUVLQWdJQ0FnSURBLzc5L0VJb0RJQllnR0VLQWdJQ0FnSUNBL3o4UW9oVWhBaUFGUVpBRGFpQVdJQmdnRmlBRktRT2dBeUFDUVFCSUlnRWJJQmdnQlNrRHFBTWdBUnNRaWdNZ0ZFSUJmU0VVSUFVcEE1Z0RJUmdnQlNrRGtBTWhGaUFMUVFGMElBSkJBRTV5SWd0QkFFNE5BQXNMQW40Z0ZDQVJySDFDSUh3aUZhY2lBVUVBSUFGQkFFb2JJQW9nRlNBS3JWTWJJZ0ZCOFFCT0JFQWdCVUdBQTJvZ0NSQ21BeUFGS1FPSUF5RVhJQVVwQTRBRElSbENBQXdCQ3lBRlFlQUNha1FBQUFBQUFBRHdQMEdRQVNBQmF4RC9CQkRGQkNBRlFkQUNhaUFKRUtZRElBVkI4QUpxSUFVcEErQUNJQVVwQStnQ0lBVXBBOUFDSWhrZ0JTa0QyQUlpRnhDRUZTQUZLUVA0QWlFYUlBVXBBL0FDQ3lFVklBVkJ3QUpxSUFzZ0MwRUJjVVVnRmlBWVFnQkNBQkNkQmtFQVJ5QUJRU0JJY1hFaUFXb1Fsd2NnQlVHd0Ftb2dHU0FYSUFVcEE4QUNJQVVwQThnQ0VNWUJJQVZCa0FKcUlBVXBBN0FDSUFVcEE3Z0NJQlVnR2hDS0F5QUZRYUFDYWlBWklCZENBQ0FXSUFFYlFnQWdHQ0FCR3hER0FTQUZRWUFDYWlBRktRT2dBaUFGS1FPb0FpQUZLUU9RQWlBRktRT1lBaENLQXlBRlFmQUJhaUFGS1FPQUFpQUZLUU9JQWlBVklCb1FzdzBnQlNrRDhBRWlGeUFGS1FQNEFTSVZRZ0JDQUJDZEJrVUVRRUdZcVNCQnhBQTJBZ0FMSUFWQjRBRnFJQmNnRlNBVXB4Q0RGU0FGS1FQZ0FTRVdJQVVwQStnQkRBRUxRWmlwSUVIRUFEWUNBQ0FGUWRBQmFpQUpFS1lESUFWQndBRnFJQVVwQTlBQklBVXBBOWdCUWdCQ2dJQ0FnSUNBd0FBUXhnRWdCVUd3QVdvZ0JTa0R3QUVnQlNrRHlBRkNBRUtBZ0lDQWdJREFBQkRHQVNBRktRT3dBU0VXSUFVcEE3Z0JDeUVVSUE0Z0ZqY0RFQ0FPSUJRM0F4Z2dCVUd3QTJva0FDQU9LUU1ZSVJRZ0Rpa0RFQ0VWREFZTElBRXBBM0JDQUZNTkFDQUJJQUVvQWdSQkFXczJBZ1FMSUFFaEJ5QUpJUThnQXlFS1FRQWhBMEVBSVFrakFFR1F4Z0JySWdRa0FFRUFJQkZySWhBZ0RXc2hFd0pBQW44RFFDQUNRVEJIQkVBQ1FDQUNRUzVIRFFRZ0J5Z0NCQ0lCSUFjb0FtaEdEUUFnQnlBQlFRRnFOZ0lFSUFFdEFBQU1Bd3NGSUFjb0FnUWlBU0FIS0FKb1J3Ui9RUUVoQXlBSElBRkJBV28yQWdRZ0FTMEFBQVZCQVNFRElBY1FwUUVMSVFJTUFRc0xJQWNRcFFFTElRSkJBU0VJSUFKQk1FY05BQU5BSUJSQ0FYMGhGQUovSUFjb0FnUWlBU0FIS0FKb1J3UkFJQWNnQVVFQmFqWUNCQ0FCTFFBQURBRUxJQWNRcFFFTElnSkJNRVlOQUF0QkFTRURDeUFFUVFBMkFwQUdJQTRDZmdKQUFrQUNRQUpBQWtBZ0FrRXVSaUlCSUFKQk1Hc2lCVUVKVFhJRVFBTkFBa0FnQVVFQmNRUkFJQWhGQkVBZ0ZTRVVRUUVoQ0F3Q0N5QURSU0VCREFRTElCVkNBWHdoRlNBSlFmd1BUQVJBSUFzZ0ZhY2dBa0V3UmhzaEN5QUVRWkFHYWlBSlFRSjBhaUlCSUF3RWZ5QUNJQUVvQWdCQkNteHFRVEJyQlNBRkN6WUNBRUVCSVFOQkFDQU1RUUZxSWdFZ0FVRUpSaUlCR3lFTUlBRWdDV29oQ1F3QkN5QUNRVEJHRFFBZ0JDQUVLQUtBUmtFQmNqWUNnRVpCM0k4QklRc0xBbjhnQnlnQ0JDSUJJQWNvQW1oSEJFQWdCeUFCUVFGcU5nSUVJQUV0QUFBTUFRc2dCeENsQVFzaUFrRXVSaUlCSUFKQk1Hc2lCVUVLU1hJTkFBc0xJQlFnRlNBSUd5RVVJQU5GSUFKQlgzRkJ4UUJIY2tVRVFBSkFJQWNnQ2hDQkZTSVdRb0NBZ0lDQWdJQ0FnSDlTRFFBZ0NrVU5CVUlBSVJZZ0J5a0RjRUlBVXcwQUlBY2dCeWdDQkVFQmF6WUNCQXNnQTBVTkF5QVVJQlo4SVJRTUJRc2dBMFVoQVNBQ1FRQklEUUVMSUFjcEEzQkNBRk1OQUNBSElBY29BZ1JCQVdzMkFnUUxJQUZGRFFJTFFaaXBJRUVjTmdJQUMwSUFJUlVnQjBJQUVJTUVRZ0FNQVFzZ0JDZ0NrQVlpQVVVRVFDQUVJQSszUkFBQUFBQUFBQUFBb2hERkJDQUVLUU1BSVJVZ0JDa0RDQXdCQ3lBVUlCVlNJQlZDQ1ZWeUlBMUJIa3hCQUNBQklBMTJHM0pGQkVBZ0JFRXdhaUFQRUtZRElBUkJJR29nQVJDWEJ5QUVRUkJxSUFRcEF6QWdCQ2tET0NBRUtRTWdJQVFwQXlnUXhnRWdCQ2tERUNFVklBUXBBeGdNQVFzZ0VFRUJkcTBnRkZNRVFFR1lxU0JCeEFBMkFnQWdCRUhnQUdvZ0R4Q21BeUFFUWRBQWFpQUVLUU5nSUFRcEEyaENmMEwvLy8vLy8vKy8vLzhBRU1ZQklBUkJRR3NnQkNrRFVDQUVLUU5ZUW45Qy8vLy8vLy8vdi8vL0FCREdBU0FFS1FOQUlSVWdCQ2tEU0F3QkN5QVJRZUlCYTZ3Z0ZGVUVRRUdZcVNCQnhBQTJBZ0FnQkVHUUFXb2dEeENtQXlBRVFZQUJhaUFFS1FPUUFTQUVLUU9ZQVVJQVFvQ0FnSUNBZ01BQUVNWUJJQVJCOEFCcUlBUXBBNEFCSUFRcEE0Z0JRZ0JDZ0lDQWdJQ0F3QUFReGdFZ0JDa0RjQ0VWSUFRcEEzZ01BUXNnREFSQUlBeEJDRXdFUUNBRVFaQUdhaUFKUVFKMGFpSUJLQUlBSVFZRFFDQUdRUXBzSVFZZ0RFRUJhaUlNUVFsSERRQUxJQUVnQmpZQ0FBc2dDVUVCYWlFSkN3SkFJQXNnRktjaUNFb2dDMEVJU25JZ0NFRVJTbklOQUNBSVFRbEdCRUFnQkVIQUFXb2dEeENtQXlBRVFiQUJhaUFFS0FLUUJoQ1hCeUFFUWFBQmFpQUVLUVBBQVNBRUtRUElBU0FFS1FPd0FTQUVLUU80QVJER0FTQUVLUU9nQVNFVklBUXBBNmdCREFJTElBaEJDRXdFUUNBRVFaQUNhaUFQRUtZRElBUkJnQUpxSUFRb0FwQUdFSmNISUFSQjhBRnFJQVFwQTVBQ0lBUXBBNWdDSUFRcEE0QUNJQVFwQTRnQ0VNWUJJQVJCNEFGcVFRQWdDR3RCQW5SQjhQc05haWdDQUJDbUF5QUVRZEFCYWlBRUtRUHdBU0FFS1FQNEFTQUVLUVBnQVNBRUtRUG9BUkNnRlNBRUtRUFFBU0VWSUFRcEE5Z0JEQUlMSUEwZ0NFRjliR3BCRzJvaUFrRWVURUVBSUFRb0FwQUdJZ0VnQW5ZYkRRQWdCRUhnQW1vZ0R4Q21BeUFFUWRBQ2FpQUJFSmNISUFSQndBSnFJQVFwQStBQ0lBUXBBK2dDSUFRcEE5QUNJQVFwQTlnQ0VNWUJJQVJCc0FKcUlBaEJBblJCcVBzTmFpZ0NBQkNtQXlBRVFhQUNhaUFFS1FQQUFpQUVLUVBJQWlBRUtRT3dBaUFFS1FPNEFoREdBU0FFS1FPZ0FpRVZJQVFwQTZnQ0RBRUxBMEFnQkVHUUJtb2dDU0lDUVFGcklnbEJBblJxS0FJQVJRMEFDd0pBSUFoQkNXOGlBVVVFUUVFQUlReEJBQ0VCREFFTFFRQWhEQ0FCUVFscUlBRWdDRUVBU0JzaEN3SkFJQUpGQkVCQkFDRUJRUUFoQWd3QkMwR0FsT3ZjQTBFQUlBdHJRUUowUWZEN0RXb29BZ0FpRUcwaEIwRUFJUVZCQUNFR1FRQWhBUU5BSUFSQmtBWnFJQVpCQW5ScUlnTWdCU0FES0FJQUlnb2dFRzRpQ1dvaUF6WUNBQ0FCUVFGcVFmOFBjU0FCSUFORklBRWdCa1p4SWdNYklRRWdDRUVKYXlBSUlBTWJJUWdnQnlBS0lBa2dFR3hyYkNFRklBWkJBV29pQmlBQ1J3MEFDeUFGUlEwQUlBUkJrQVpxSUFKQkFuUnFJQVUyQWdBZ0FrRUJhaUVDQ3lBSUlBdHJRUWxxSVFnTEEwQWdCRUdRQm1vZ0FVRUNkR29oQ2lBSVFTUklJUWtDUUFOQUFrQWdDUTBBSUFoQkpFY05BaUFLS0FJQVFkRHArUVJORFFCQkpDRUlEQUlMSUFKQi93OXFJUU5CQUNFRkEwQWdCYTBnQkVHUUJtb2dBMEgvRDNFaUIwRUNkR29pQXpVQ0FFSWRobndpRkVLQmxPdmNBMVFFZjBFQUJTQVVRb0NVNjl3RGdDSVZRb0RzbEtOOGZpQVVmQ0VVSUJXbkN5RUZJQU1nRktjaUF6WUNBQ0FDSUFJZ0FpQUhJQU1iSUFFZ0IwWWJJQWNnQWtFQmEwSC9EM0ZIR3lFQ0lBZEJBV3NoQXlBQklBZEhEUUFMSUF4QkhXc2hEQ0FGUlEwQUN5QUNJQUZCQVd0Qi93OXhJZ0ZHQkVBZ0JFR1FCbW9pQ1NBQ1FmNFBha0gvRDNGQkFuUnFJZ01nQXlnQ0FDQUNRUUZyUWY4UGNTSUNRUUowSUFscUtBSUFjallDQUFzZ0NFRUphaUVJSUFSQmtBWnFJQUZCQW5ScUlBVTJBZ0FNQVFzTEFrQURRQ0FDUVFGcVFmOFBjU0VKSUFSQmtBWnFJQUpCQVd0Qi93OXhRUUowYWlFRkEwQkJDVUVCSUFoQkxVb2JJUklDUUFOQUlBRWhBMEVBSVFZQ1FBTkFBa0FnQXlBR2FrSC9EM0VpQVNBQ1JnMEFJQVJCa0FacUlBRkJBblJxS0FJQUlnb2dCa0VDZEVIQSt3MXFLQUlBSWdGSkRRQWdBU0FLU1EwQ0lBWkJBV29pQmtFRVJ3MEJDd3NnQ0VFa1J3MEFRZ0FoRkVFQUlRWkNBQ0VWQTBBZ0FpQURJQVpxUWY4UGNTSUJSZ1JBSUFKQkFXcEIvdzl4SWdKQkFuUWdCR3BCQURZQ2pBWUxJQVJCZ0FacUlBUkJrQVpxSUFGQkFuUnFLQUlBRUpjSElBUkI4QVZxSUJRZ0ZVSUFRb0NBZ0lEbG1yZU93QUFReGdFZ0JFSGdCV29nQkNrRDhBVWdCQ2tEK0FVZ0JDa0RnQVlnQkNrRGlBWVFpZ01nQkNrRDZBVWhGU0FFS1FQZ0JTRVVJQVpCQVdvaUJrRUVSdzBBQ3lBRVFkQUZhaUFQRUtZRElBUkJ3QVZxSUJRZ0ZTQUVLUVBRQlNBRUtRUFlCUkRHQVNBRUtRUElCU0VWUWdBaEZDQUVLUVBBQlNFV0lBeEI4UUJxSWdrZ0VXc2lFVUVBSUJGQkFFb2JJQTBnRFNBUlNpSUtHeUlOUWZBQVRBMENEQVVMSUF3Z0Vtb2hEQ0FESUFJaUFVWU5BQXRCZ0pUcjNBTWdFblloQzBGL0lCSjBRWDl6SVJCQkFDRUdJQU1oQVFOQUlBUkJrQVpxSUFOQkFuUnFJZ29nQmlBS0tBSUFJZ2NnRW5acUlnbzJBZ0FnQVVFQmFrSC9EM0VnQVNBS1JTQUJJQU5HY1NJS0d5RUJJQWhCQ1dzZ0NDQUtHeUVJSUFjZ0VIRWdDMndoQmlBRFFRRnFRZjhQY1NJRElBSkhEUUFMSUFaRkRRRWdBU0FKUndSQUlBUkJrQVpxSUFKQkFuUnFJQVkyQWdBZ0NTRUNEQU1MSUFVZ0JTZ0NBRUVCY2pZQ0FBd0JDd3NMSUFSQmtBVnFSQUFBQUFBQUFQQS9RZUVCSUExckVQOEVFTVVFSUFSQnNBVnFJQVFwQTVBRklBUXBBNWdGSUJZZ0ZSQ0VGU0FFS1FPNEJTRVpJQVFwQTdBRklSZ2dCRUdBQldwRUFBQUFBQUFBOEQ5QjhRQWdEV3NRL3dRUXhRUWdCRUdnQldvZ0ZpQVZJQVFwQTRBRklBUXBBNGdGRUtNVklBUkI4QVJxSUJZZ0ZTQUVLUU9nQlNJVUlBUXBBNmdGSWhjUXN3MGdCRUhnQkdvZ0dDQVpJQVFwQS9BRUlBUXBBL2dFRUlvRElBUXBBK2dFSVJVZ0JDa0Q0QVFoRmdzQ1FDQURRUVJxUWY4UGNTSUJJQUpHRFFBQ1FDQUVRWkFHYWlBQlFRSjBhaWdDQUNJQlFmL0p0ZTRCVFFSQUlBRkZJQU5CQldwQi93OXhJQUpHY1EwQklBUkI4QU5xSUErM1JBQUFBQUFBQU5BL29oREZCQ0FFUWVBRGFpQVVJQmNnQkNrRDhBTWdCQ2tEK0FNUWlnTWdCQ2tENkFNaEZ5QUVLUVBnQXlFVURBRUxJQUZCZ01xMTdnRkhCRUFnQkVIUUJHb2dEN2RFQUFBQUFBQUE2RCtpRU1VRUlBUkJ3QVJxSUJRZ0Z5QUVLUVBRQkNBRUtRUFlCQkNLQXlBRUtRUElCQ0VYSUFRcEE4QUVJUlFNQVFzZ0Q3Y2hHeUFDSUFOQkJXcEIvdzl4UmdSQUlBUkJrQVJxSUJ0RUFBQUFBQUFBNEQraUVNVUVJQVJCZ0FScUlCUWdGeUFFS1FPUUJDQUVLUU9ZQkJDS0F5QUVLUU9JQkNFWElBUXBBNEFFSVJRTUFRc2dCRUd3QkdvZ0cwUUFBQUFBQUFEb1A2SVF4UVFnQkVHZ0JHb2dGQ0FYSUFRcEE3QUVJQVFwQTdnRUVJb0RJQVFwQTZnRUlSY2dCQ2tEb0FRaEZBc2dEVUh2QUVvTkFDQUVRZEFEYWlBVUlCZENBRUtBZ0lDQWdJREEvejhRb3hVZ0JDa0QwQU1nQkNrRDJBTkNBRUlBRUowR0RRQWdCRUhBQTJvZ0ZDQVhRZ0JDZ0lDQWdJQ0F3UDgvRUlvRElBUXBBOGdESVJjZ0JDa0R3QU1oRkFzZ0JFR3dBMm9nRmlBVklCUWdGeENLQXlBRVFhQURhaUFFS1FPd0F5QUVLUU80QXlBWUlCa1FzdzBnQkNrRHFBTWhGU0FFS1FPZ0F5RVdBa0FnRTBFQ2F5QUpRZi8vLy84SGNVNE5BQ0FFSUJWQy8vLy8vLy8vLy8vL0FJTTNBNWdESUFRZ0ZqY0RrQU1nQkVHQUEyb2dGaUFWUWdCQ2dJQ0FnSUNBZ1A4L0VNWUJJQVFwQTVBRElBUXBBNWdEUW9DQWdJQ0FnSUM0d0FBUW9oVWhBaUFWSUFRcEE0Z0RJQUpCQUVnaUFSc2hGU0FXSUFRcEE0QURJQUViSVJZZ0ZDQVhRZ0JDQUJDZEJrRUFSeUFLSUFvZ0RTQVJSM0VnQVJ0eFJTQVRJQXdnQWtFQVRtb2lERUh1QUdwT2NRMEFRWmlwSUVIRUFEWUNBQXNnQkVId0Ftb2dGaUFWSUF3UWd4VWdCQ2tEOEFJaEZTQUVLUVA0QWdzM0F5Z2dEaUFWTndNZ0lBUkJrTVlBYWlRQUlBNHBBeWdoRkNBT0tRTWdJUlVNQkFzZ0FTa0RjRUlBV1FSQUlBRWdBU2dDQkVFQmF6WUNCQXNNQVFzQ1FBSi9JQUVvQWdRaUFpQUJLQUpvUndSQUlBRWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBRVFwUUVMUVNoR0JFQkJBU0VHREFFTFFvQ0FnSUNBZ09ELy93QWhGQ0FCS1FOd1FnQlREUU1nQVNBQktBSUVRUUZyTmdJRURBTUxBMEFDZnlBQktBSUVJZ0lnQVNnQ2FFY0VRQ0FCSUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFCRUtVQkN5SUNRVEJyUVFwSklBSkJ3UUJyUVJwSmNpQUNRZDhBUm5KRklBSkI0UUJyUVJwUGNVVUVRQ0FHUVFGcUlRWU1BUXNMUW9DQWdJQ0FnT0QvL3dBaEZDQUNRU2xHRFFJZ0FTa0RjQ0lYUWdCWkJFQWdBU0FCS0FJRVFRRnJOZ0lFQ3dKQUlBTUVRQ0FHRFFFTUJBc01BUXNEUUNBR1FRRnJJUVlnRjBJQVdRUkFJQUVnQVNnQ0JFRUJhellDQkFzZ0JnMEFDd3dDQzBHWXFTQkJIRFlDQUNBQlFnQVFnd1FMUWdBaEZBc2dBQ0FWTndNQUlBQWdGRGNEQ0NBT1FUQnFKQUFMeEFJQkFYOGpBRUhRQUdzaUJDUUFBa0FnQTBHQWdBRk9CRUFnQkVFZ2FpQUJJQUpDQUVLQWdJQ0FnSUNBLy84QUVNWUJJQVFwQXlnaEFpQUVLUU1nSVFFZ0EwSC8vd0ZKQkVBZ0EwSC8vd0JySVFNTUFnc2dCRUVRYWlBQklBSkNBRUtBZ0lDQWdJQ0EvLzhBRU1ZQlFmMy9BaUFESUFOQi9mOENUaHRCL3Y4QmF5RURJQVFwQXhnaEFpQUVLUU1RSVFFTUFRc2dBMEdCZ0g5S0RRQWdCRUZBYXlBQklBSkNBRUtBZ0lDQWdJQ0FPUkRHQVNBRUtRTklJUUlnQkNrRFFDRUJJQU5COUlCK1N3UkFJQU5CamY4QWFpRUREQUVMSUFSQk1Hb2dBU0FDUWdCQ2dJQ0FnSUNBZ0RrUXhnRkI2SUY5SUFNZ0EwSG9nWDFNRzBHYS9nRnFJUU1nQkNrRE9DRUNJQVFwQXpBaEFRc2dCQ0FCSUFKQ0FDQURRZi8vQUdxdFFqQ0dFTVlCSUFBZ0JDa0RDRGNEQ0NBQUlBUXBBd0EzQXdBZ0JFSFFBR29rQUFzMUFDQUFJQUUzQXdBZ0FDQUNRdi8vLy8vLy96K0RJQVJDTUlpblFZQ0FBbkVnQWtJd2lLZEIvLzhCY1hLdFFqQ0doRGNEQ0F2UkFRRUJmd0pBQWtBZ0FDQUJjMEVEY1FSQUlBRXRBQUFoQWd3QkN5QUJRUU54QkVBRFFDQUFJQUV0QUFBaUFqb0FBQ0FDUlEwRElBQkJBV29oQUNBQlFRRnFJZ0ZCQTNFTkFBc0xJQUVvQWdBaUFrRi9jeUFDUVlHQ2hBaHJjVUdBZ1lLRWVIRU5BQU5BSUFBZ0FqWUNBQ0FCS0FJRUlRSWdBRUVFYWlFQUlBRkJCR29oQVNBQ1FZR0NoQWhySUFKQmYzTnhRWUNCZ29SNGNVVU5BQXNMSUFBZ0Fqb0FBQ0FDUWY4QmNVVU5BQU5BSUFBZ0FTMEFBU0lDT2dBQklBQkJBV29oQUNBQlFRRnFJUUVnQWcwQUN3c0xoQUVDQW4wQmYwTUFBQUEvSUFDWUlRSWdBTHhCLy8vLy93ZHhJZ08rSVFFQ1FDQURRWmJreFpVRVRRUkFJQUVRbmdnaEFTQURRZi8vLy9zRFRRUkFJQU5CZ0lDQXpBTkpEUUlnQWlBQklBR1NJQUVnQVpRZ0FVTUFBSUEva3BXVGxBOExJQUlnQVNBQklBRkRBQUNBUDVLVmtwUVBDeUFCSUFJZ0FwSVFrUlVoQUFzZ0FBdUtBd0lEZndGOEl3QkJFR3NpQVNRQUFrQWdBTHdpQTBILy8vLy9CM0VpQWtIYW42VDZBMDBFUUNBQ1FZQ0FnTXdEU1EwQklBQzdFSVFFSVFBTUFRc2dBa0hScCsyREJFMEVRQ0FBdXlFRUlBSkI0NWZiZ0FSTkJFQWdBMEVBU0FSQUlBUkVHQzFFVlBzaCtUK2dFSVVFakNFQURBTUxJQVJFR0MxRVZQc2grYitnRUlVRUlRQU1BZ3RFR0MxRVZQc2hDY0JFR0MxRVZQc2hDVUFnQTBFQVRoc2dCS0NhRUlRRUlRQU1BUXNnQWtIVjQ0aUhCRTBFUUNBQ1FkL2J2NFVFVFFSQUlBQzdJUVFnQTBFQVNBUkFJQVJFMGlFemYzelpFa0NnRUlVRUlRQU1Bd3NnQkVUU0lUTi9mTmtTd0tBUWhRU01JUUFNQWd0RUdDMUVWUHNoR1VCRUdDMUVWUHNoR2NBZ0EwRUFTQnNnQUx1Z0VJUUVJUUFNQVFzZ0FrR0FnSUQ4QjA4RVFDQUFJQUNUSVFBTUFRc0NRQUpBQWtBQ1FDQUFJQUZCQ0dvUXJRMUJBM0VPQXdBQkFnTUxJQUVyQXdnUWhBUWhBQXdEQ3lBQkt3TUlFSVVFSVFBTUFnc2dBU3NEQ0pvUWhBUWhBQXdCQ3lBQkt3TUlFSVVFakNFQUN5QUJRUkJxSkFBZ0FBdU5BUUlCZlFKL0lBQzhJZ0pCRjNaQi93RnhJZ05CbFFGTkJIMGdBMEg5QUUwRVFDQUFRd0FBQUFDVUR3c0NmU0FBSUFDTUlBSkJBRTRiSWdCREFBQUFTNUpEQUFBQXk1SWdBSk1pQVVNQUFBQS9YZ1JBSUFBZ0FaSkRBQUNBdjVJTUFRc2dBQ0FCa2lJQUlBRkRBQUFBdjE5RkRRQWFJQUJEQUFDQVA1SUxJZ0FnQUl3Z0FrRUFUaHNGSUFBTEMwWUJBWDhDZjBFQUlBQkJGM1pCL3dGeElnRkIvd0JKRFFBYVFRSWdBVUdXQVVzTkFCcEJBRUVCUVpZQklBRnJkQ0lCUVFGcklBQnhEUUFhUVFGQkFpQUFJQUZ4R3dzTEV3QWdBRUVCZEVHQWdJQUlha0dCZ0lBSVNRdndCQVFFZndKOEFYMEJmaUFCdkNJRUVJb1ZJUUlDUUFKQUFrQUNRQ0FBdkNJRFFZQ0FnUHdIYTBHQWdJQ0llRThFUUNBQ0RRRU1Bd3NnQWtVTkFRdERBQUNBUHlFSUlBTkJnSUNBL0FOR0RRSWdCRUVCZENJQ1JRMENJQUpCZ1lDQWVFa2dBMEVCZENJQ1FZQ0FnSGhOY1VVRVFDQUFJQUdTRHdzZ0FrR0FnSUQ0QjBZTkFrTUFBQUFBSUFFZ0FaUWdBa0gvLy8vM0Iwc2dCRUVBVG5NYkR3c2dBeENLRlFSQUlBQWdBSlFoQ0NBRFFRQklCRUFnQ0l3Z0NDQUVFSWtWUVFGR0d5RUlDeUFFUVFCT0RRSkRBQUNBUHlBSWxSQzJEUThMSUFOQkFFZ0VRQ0FFRUlrVklnSkZCRUFnQUJDMURROExJQU5CLy8vLy93ZHhJUU1nQWtFQlJrRVFkQ0VGQ3lBRFFmLy8vd05MRFFBZ0FFTUFBQUJMbEx4Qi8vLy8vd2R4UVlDQWdOd0FheUVEQ3dKQUlBTWdBMEdBZ016NUEyc2lCRUdBZ0lCOGNXdSt1eUFFUVE5MlFmQUJjU0lDUVpENURXb3JBd0NpUkFBQUFBQUFBUEMvb0NJR1JBdHVTY2tXZHRJL29rUjZ4bldnYVJuWHY2QWdCaUFHb2lJSElBZWlvaUFHUk4yNnAyd0t4OTQvb2tUSTlyNUlSeFhudjZBZ0I2SWdCa1FydUNwbFJ4WDNQNklnQWtHWStRMXFLd01BSUFSQkYzVzNvS0Nnb0NBQnU2SWlCNzFDZ0lDQWdJQ0E0UC8vQUlOQ2dZQ0FnSUNBd0svQUFGUU5BQ0FIUkhIVjBmLy8vMTlBWkFSQUlBVVF1UTBQQ3lBSFJBQUFBQUFBd0dMQVpVVU5BQ0FGRUxnTkR3dEJ1TXNOS3dNQUlBZEJzTXNOS3dNQUlnWWdCNkFpQnlBR29hRWlCcUpCd01zTkt3TUFvQ0FHSUFhaW9rSEl5dzByQXdBZ0JxSkVBQUFBQUFBQThEK2dvQ0FIdlNJSklBV3RmRUl2aGlBSnAwRWZjVUVEZEVHd3lRMXFLUU1BZkwraXRpRUlDeUFJQzZBQkFRTi9JQUM4SWdKQkYzWkIvd0Z4SWdSQi93QnJJUU1DUUNBRVFaWUJUd1JBSUFFZ0FEZ0NBQ0FDUWYvLy93TnhRUUFnQTBHQUFVWWJEUUVnQWtHQWdJQ0FlSEcrRHdzZ0JFSCtBRTBFUUNBQklBSkJnSUNBZ0hoeE5nSUFJQUFQQ3lBQ0lBTjBRZi8vL3dOeFJRUkFJQUVnQURnQ0FDQUNRWUNBZ0lCNGNiNFBDeUFCUVlDQWdId2dBM1VnQW5FaUFUWUNBQ0FBSUFHK2t5RUFDeUFBQ3hjQUlBQVF1Z05CQUVjZ0FFRWdja0hoQUd0QkJrbHlDNW9EQVFaL0l3QkJFR3NpRHlRQUlBOUJDR29oRENBQktBSUFJUTBqQUVFd2F5SUtKQUFnQ2tFb2FpSUxJQTBnQVVFRWFpSU9JQUlnQmhEWkFRSkFJQXNRTUFSQUlBeEJBam9BQkF3QkN5QUtRU0JxSWdzZ0RTQU9JQU1nQnhEWkFTQUxFREFFUUNBTVFRSTZBQVFNQVFzZ0NrRVlhaUlMSUEwZ0RpQUVJQWdRMlFFZ0N4QXdCRUFnREVFQ09nQUVEQUVMSUFwQkVHb2lDeUFOSUE0Z0JTQUpFTmtCSUFzUU1BUkFJQXhCQWpvQUJBd0JDeUFLUVFocUlnc2dEU0FPSUFwQktHb1FHaW9DQUNBS1FTQnFFQm9xQWdBUTFnTWdDeEF3QkVBZ0RFRUNPZ0FFREFFTElBb2dEU0FPSUFwQkNHb2lDeEFhS2dJQUlBcEJHR29RR2lvQ0FCRFdBeUFLSUFvcEF3QTNBd2dnQ3hBd0JFQWdERUVDT2dBRURBRUxJQW9nRFNBT0lBcEJDR29pQ3hBYUtnSUFJQXBCRUdvUUdpb0NBQkRXQXlBS0lBb3BBd0EzQXdnZ0N4QXdCRUFnREVFQ09nQUVEQUVMSUF3Z0Npa0RDRGNDQUFzZ0NrRXdhaVFBQWtBZ0RCQXJCRUFnQUNBTklBNGdBU2dDR0NBUFFRaHFFQm9xQWdBUWNnd0JDeUFBUVFJNkFBUUxJQTlCRUdva0FBc1FBQ0FCakNBQklBQWJFTFlOSUFHVUMzOEJBWDhnQUx4Qi8vLy8vd2R4SWdHK0lRQUNmU0FCUVpia3hma0RUUVJBUXdBQWdEOGdBVUdBZ0lETUEwa05BUm9nQUJDZUNDSUFJQUNVSUFCREFBQ0FQNUlpQUNBQWtwVkRBQUNBUDVJUEN5QUJRWmJreFpVRVRRUkFJQUFRbmdvaUFFTUFBSUEvSUFDVmtrTUFBQUEvbEE4TElBQkRBQUNBUHhDUkZRc0xIQUFnQVVNQUFBQjZsQ0FBUTd6aklzT1NFSjRLbEVNQUFBQjZsQXNvQUNBQlJBQUFBQUFBQU1CL29pQUFSSXZkR2hWbUlKYkFvQkM2RGFKRUFBQUFBQUFBd0graUMvUUNBZ04vQVh3akFFRVFheUlCSkFBQ2ZTQUF2Q0lEUWYvLy8vOEhjU0lDUWRxZnBQb0RUUVJBUXdBQWdEOGdBa0dBZ0lETUEwa05BUm9nQUxzUWhRUU1BUXNnQWtIUnArMkRCRTBFUUNBQ1FlU1gyNEFFVHdSQVJCZ3RSRlQ3SVFsQVJCZ3RSRlQ3SVFuQUlBTkJBRWdiSUFDN29CQ0ZCSXdNQWdzZ0FMc2hCQ0FEUVFCSUJFQWdCRVFZTFVSVSt5SDVQNkFRaEFRTUFndEVHQzFFVlBzaCtUOGdCS0VRaEFRTUFRc2dBa0hWNDRpSEJFMEVRQ0FDUWVEYnY0VUVUd1JBUkJndFJGVDdJUmxBUkJndFJGVDdJUm5BSUFOQkFFZ2JJQUM3b0JDRkJBd0NDeUFEUVFCSUJFQkUwaUV6ZjN6WkVzQWdBTHVoRUlRRURBSUxJQUM3Uk5JaE0zOTgyUkxBb0JDRUJBd0JDeUFBSUFDVElBSkJnSUNBL0FkUERRQWFBa0FDUUFKQUFrQWdBQ0FCUVFocUVLME5RUU54RGdNQUFRSURDeUFCS3dNSUVJVUVEQU1MSUFFckF3aWFFSVFFREFJTElBRXJBd2dRaFFTTURBRUxJQUVyQXdnUWhBUUxJUUFnQVVFUWFpUUFJQUFMMVFJQkFYOGpBRUV3YXlJSkpBQWdDVUVCT2dBc0lBa2dBU0FGYkRZQ0tBSkFJQWxCS0dvUU1BUkFJQUJCQWpvQUJBd0JDeUFKUVFFNkFDUWdDU0FDSUFac05nSWdJQWxCSUdvUU1BUkFJQUJCQWpvQUJBd0JDeUFKUVFFNkFCd2dDU0FESUFkc05nSVlJQWxCR0dvUU1BUkFJQUJCQWpvQUJBd0JDeUFKUVFFNkFCUWdDU0FFSUFoc05nSVFJQWxCRUdvUU1BUkFJQUJCQWpvQUJBd0JDeUFKUVNocUVCb29BZ0FoQVNBSlFTQnFFQm9vQWdBaEFpQUpRUUU2QUF3Z0NTQUJJQUpxTmdJSUlBbEJDR29RTUFSQUlBQkJBam9BQkF3QkN5QUpJQWxCQ0dvaUFSQWFLQUlBSUFsQkdHb1FHaWdDQUdxdFFvQ0FnSUFRaERjRENDQUJFREFFUUNBQVFRSTZBQVFNQVFzZ0NTQUpRUWhxSWdFUUdpZ0NBQ0FKUVJCcUVCb29BZ0JxclVLQWdJQ0FFSVEzQXdnZ0FSQXdCRUFnQUVFQ09nQUVEQUVMSUFBZ0NTa0RDRGNDQUFzZ0NVRXdhaVFBQzdjUkFnTjhFWDhqQUVHd0JHc2lDU1FBSUFJZ0FrRURhMEVZYlNJSVFRQWdDRUVBU2hzaUVrRm9iR29oRENBRVFRSjBRZkRpRFdvb0FnQWlEeUFEUVFGcklndHFRUUJPQkVBZ0F5QVBhaUVJSUJJZ0Myc2hBZ05BSUFsQndBSnFJQXBCQTNScUlBSkJBRWdFZkVRQUFBQUFBQUFBQUFVZ0FrRUNkRUdBNHcxcUtBSUF0d3M1QXdBZ0FrRUJhaUVDSUFwQkFXb2lDaUFJUncwQUN3c2dERUVZYXlFUVFRQWhDQ0FQUVFBZ0QwRUFTaHNoRVNBRFFRQk1JUW9EUUFKQUlBb0VRRVFBQUFBQUFBQUFBQ0VGREFFTElBZ2dDMm9oRGtFQUlRSkVBQUFBQUFBQUFBQWhCUU5BSUFBZ0FrRURkR29yQXdBZ0NVSEFBbW9nRGlBQ2EwRURkR29yQXdDaUlBV2dJUVVnQWtFQmFpSUNJQU5IRFFBTEN5QUpJQWhCQTNScUlBVTVBd0FnQ0NBUlJpRUNJQWhCQVdvaENDQUNSUTBBQzBFdklBeHJJUlZCTUNBTWF5RVRJQXhCR1dzaEZpQVBJUWdDUUFOQUlBa2dDRUVEZEdvckF3QWhCVUVBSVFJZ0NDRUtJQWhCQUV3aURVVUVRQU5BSUFsQjRBTnFJQUpCQW5ScUFuOENmeUFGUkFBQUFBQUFBSEErb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUF1M0lnWkVBQUFBQUFBQWNNR2lJQVdnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3pZQ0FDQUpJQXBCQVdzaUNrRURkR29yQXdBZ0JxQWhCU0FDUVFGcUlnSWdDRWNOQUFzTEFuOGdCU0FRRVA4RUlnVWdCVVFBQUFBQUFBREFQNktjUkFBQUFBQUFBQ0RBb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElRNGdCU0FPdDZFaEJRSkFBa0FDUUFKL0lCQkJBRXdpRjBVRVFDQUlRUUowSUFscUlnSWdBaWdDM0FNaUFpQUNJQk4xSWdJZ0UzUnJJZ28yQXR3RElBSWdEbW9oRGlBS0lCVjFEQUVMSUJBTkFTQUlRUUowSUFscUtBTGNBMEVYZFFzaUMwRUFUQTBDREFFTFFRSWhDeUFGUkFBQUFBQUFBT0EvWmcwQVFRQWhDd3dCQzBFQUlRSkJBQ0VLSUExRkJFQURRQ0FKUWVBRGFpQUNRUUowYWlJWUtBSUFJUlJCLy8vL0J5RU5BbjhDUUNBS0RRQkJnSUNBQ0NFTklCUU5BRUVBREFFTElCZ2dEU0FVYXpZQ0FFRUJDeUVLSUFKQkFXb2lBaUFJUncwQUN3c0NRQ0FYRFFCQi8vLy9BeUVDQWtBQ1FDQVdEZ0lCQUFJTFFmLy8vd0VoQWdzZ0NFRUNkQ0FKYWlJTklBMG9BdHdESUFKeE5nTGNBd3NnRGtFQmFpRU9JQXRCQWtjTkFFUUFBQUFBQUFEd1B5QUZvU0VGUVFJaEN5QUtSUTBBSUFWRUFBQUFBQUFBOEQ4Z0VCRC9CS0VoQlFzZ0JVUUFBQUFBQUFBQUFHRUVRRUVCSVFKQkFDRU5JQWdoQ2dKQUlBZ2dEMHdOQUFOQUlBbEI0QU5xSUFwQkFXc2lDa0VDZEdvb0FnQWdEWEloRFNBS0lBOUtEUUFMSUExRkRRQWdFQ0VNQTBBZ0RFRVlheUVNSUFsQjRBTnFJQWhCQVdzaUNFRUNkR29vQWdCRkRRQUxEQU1MQTBBZ0FpSUtRUUZxSVFJZ0NVSGdBMm9nRHlBS2EwRUNkR29vQWdCRkRRQUxJQWdnQ21vaENnTkFJQWxCd0FKcUlBTWdDR29pQzBFRGRHb2dDRUVCYWlJSUlCSnFRUUowUVlEakRXb29BZ0MzT1FNQVFRQWhBa1FBQUFBQUFBQUFBQ0VGSUFOQkFFb0VRQU5BSUFBZ0FrRURkR29yQXdBZ0NVSEFBbW9nQ3lBQ2EwRURkR29yQXdDaUlBV2dJUVVnQWtFQmFpSUNJQU5IRFFBTEN5QUpJQWhCQTNScUlBVTVBd0FnQ0NBS1NBMEFDeUFLSVFnTUFRc0xBa0FnQlVFWUlBeHJFUDhFSWdWRUFBQUFBQUFBY0VGbUJFQWdDVUhnQTJvZ0NFRUNkR29DZndKL0lBVkVBQUFBQUFBQWNENmlJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUlDdDBRQUFBQUFBQUJ3d2FJZ0JhQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xOZ0lBSUFoQkFXb2hDQXdCQ3dKL0lBV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RUNJQkFoREFzZ0NVSGdBMm9nQ0VFQ2RHb2dBallDQUF0RUFBQUFBQUFBOEQ4Z0RCRC9CQ0VGSUFoQkFFNEVRQ0FJSVFNRFFDQUpJQU1pQUVFRGRHb2dCU0FKUWVBRGFpQUFRUUowYWlnQ0FMZWlPUU1BSUFCQkFXc2hBeUFGUkFBQUFBQUFBSEErb2lFRklBQU5BQXRCQUNFQUlBZ2hDZ05BSUJFZ0FDQUFJQkZMR3lFRFFRQWhBa1FBQUFBQUFBQUFBQ0VGQTBBZ0FrRURkRUhRK0ExcUt3TUFJQWtnQWlBS2FrRURkR29yQXdDaUlBV2dJUVVnQWlBRFJ5RU1JQUpCQVdvaEFpQU1EUUFMSUFsQm9BRnFJQWdnQ210QkEzUnFJQVU1QXdBZ0NrRUJheUVLSUFBZ0NFY2hBaUFBUVFGcUlRQWdBZzBBQ3dzQ1FBSkFBa0FDUUFKQUlBUU9CQUVDQWdBRUMwUUFBQUFBQUFBQUFDRUdBa0FnQ0VFQVRBMEFJQWxCb0FGcUlBaEJBM1JxSWdNckF3QWhCU0FJSVFJRFFDQUpRYUFCYWlJRUlBSkJBM1JxSUFVZ0JDQUNRUUZySWdCQkEzUnFJZ1FyQXdBaUJ5QUhJQVdnSWdXaG9Ea0RBQ0FFSUFVNUF3QWdBa0VCU3lFRUlBQWhBaUFFRFFBTElBaEJBa2dOQUNBREt3TUFJUVVnQ0NFQ0EwQWdDVUdnQVdvaUF5QUNRUU4wYWlBRklBTWdBa0VCYXlJQVFRTjBhaUlES3dNQUlnWWdCaUFGb0NJRm9hQTVBd0FnQXlBRk9RTUFJQUpCQWtzaEF5QUFJUUlnQXcwQUMwUUFBQUFBQUFBQUFDRUdBMEFnQmlBSlFhQUJhaUFJUVFOMGFpc0RBS0FoQmlBSVFRSktJUUFnQ0VFQmF5RUlJQUFOQUFzTElBa3JBNkFCSVFVZ0N3MENJQUVnQlRrREFDQUpLd09vQVNFRklBRWdCamtERUNBQklBVTVBd2dNQXd0RUFBQUFBQUFBQUFBaEJTQUlRUUJPQkVBRFFDQUlJZ0JCQVdzaENDQUZJQWxCb0FGcUlBQkJBM1JxS3dNQW9DRUZJQUFOQUFzTElBRWdCWm9nQlNBTEd6a0RBQXdDQzBRQUFBQUFBQUFBQUNFRklBaEJBRTRFUUNBSUlRTURRQ0FESWdCQkFXc2hBeUFGSUFsQm9BRnFJQUJCQTNScUt3TUFvQ0VGSUFBTkFBc0xJQUVnQlpvZ0JTQUxHemtEQUNBSkt3T2dBU0FGb1NFRlFRRWhBaUFJUVFCS0JFQURRQ0FGSUFsQm9BRnFJQUpCQTNScUt3TUFvQ0VGSUFJZ0NFY2hBQ0FDUVFGcUlRSWdBQTBBQ3dzZ0FTQUZtaUFGSUFzYk9RTUlEQUVMSUFFZ0JabzVBd0FnQ1NzRHFBRWhCU0FCSUFhYU9RTVFJQUVnQlpvNUF3Z0xJQWxCc0FScUpBQWdEa0VIY1F0eUFnSi9BWDBnQUx3aUFrSC8vLy8vQjNFaUFiNGhBQUpBQW4wZ0FVSC8vLy8zQTAwRVFDQUJRWUNBZ1B3Q1NRMENJQUFnQUpJaUF5QURJQUNVUXdBQWdEOGdBSk9Wa2d3QkN5QUFRd0FBZ0Q4Z0FKT1ZJZ0FnQUpJTEVMQU5Rd0FBQUQrVUlRQUxJQUNNSUFBZ0FrRUFTQnNMMXdJQkJIOGdBTHhCLy8vLy93ZHhRWUdBZ1B3SFNTQUJ2RUgvLy8vL0IzRkJnSUNBL0FkTmNVVUVRQ0FBSUFHU0R3c2dBYndpQWtHQWdJRDhBMFlFUUNBQUVKOEtEd3NnQWtFZWRrRUNjU0lGSUFDOElnTkJIM1p5SVFRQ1FBSkFJQU5CLy8vLy93ZHhJZ05GQkVBQ1FBSkFJQVJCQW1zT0FnQUJBd3REMnc5SlFBOExROXNQU2NBUEN5QUNRZi8vLy84SGNTSUNRWUNBZ1B3SFJ3UkFJQUpGQkVCRDJ3L0pQeUFBbUE4TElBTkJnSUNBL0FkSElBSkJnSUNBNkFCcUlBTlBjVVVFUUVQYkQ4ay9JQUNZRHdzQ2ZTQUZCRUJEQUFBQUFDQURRWUNBZ09nQWFpQUNTUTBCR2dzZ0FDQUJsWXNRbndvTElRQUNRQUpBQWtBZ0JBNERCQUFCQWdzZ0FJd1BDMFBiRDBsQUlBQkRMcjI3TTVLVER3c2dBRU11dmJzemtrUGJEMG5Ba2c4TElBTkJnSUNBL0FkR0RRRWdCRUVDZEVIQTRnMXFLZ0lBSVFBTElBQVBDeUFFUVFKMFFiRGlEV29xQWdBTG1nTUJCbjhqQUVFUWF5SVBKQUFnRDBFSWFpRU1JQUVvQWdBaERTTUFRVEJySWdva0FDQUtRU2hxSWdzZ0RTQUJRUVJxSWc0Z0FpQUdFTm9CQWtBZ0N4QXdCRUFnREVFQ09nQUVEQUVMSUFwQklHb2lDeUFOSUE0Z0F5QUhFTm9CSUFzUU1BUkFJQXhCQWpvQUJBd0JDeUFLUVJocUlnc2dEU0FPSUFRZ0NCRGFBU0FMRURBRVFDQU1RUUk2QUFRTUFRc2dDa0VRYWlJTElBMGdEaUFGSUFrUTJnRWdDeEF3QkVBZ0RFRUNPZ0FFREFFTElBcEJDR29pQ3lBTklBNGdDa0VvYWhBYUtnSUFJQXBCSUdvUUdpb0NBQkRYQXlBTEVEQUVRQ0FNUVFJNkFBUU1BUXNnQ2lBTklBNGdDa0VJYWlJTEVCb3FBZ0FnQ2tFWWFoQWFLZ0lBRU5jRElBb2dDaWtEQURjRENDQUxFREFFUUNBTVFRSTZBQVFNQVFzZ0NpQU5JQTRnQ2tFSWFpSUxFQm9xQWdBZ0NrRVFhaEFhS2dJQUVOY0RJQW9nQ2lrREFEY0RDQ0FMRURBRVFDQU1RUUk2QUFRTUFRc2dEQ0FLS1FNSU53SUFDeUFLUVRCcUpBQUNRQ0FNRUNzRVFDQUFJQTBnRGlBQktBSVlJQTlCQ0dvUUdpb0NBQkJyREFFTElBQkJBam9BQkFzZ0QwRVFhaVFBQzVnQkFnSi9BWDBnQUx3aUFrSC8vLy8vQjNFaUFiNGhBQUpBSUFGQmdJQ0FyQVJQQkVBZ0FCQ1lCME1ZY2pFL2tpRUFEQUVMSUFGQmdJQ0FnQVJQQkVBZ0FDQUFra01BQUlBL0lBQWdBSlJEQUFDQVA1S1JJQUNTbFpJUW1BY2hBQXdCQ3lBQlFZQ0FnTXdEU1EwQUlBQWdBSlFpQXlBRFF3QUFnRCtTa1VNQUFJQS9rcFVnQUpJUXNBMGhBQXNnQUl3Z0FDQUNRUUJJR3d1OEFRSUNmd0Y4SUFDOElnSkIvLy8vL3dkeElnRkJnSUNBL0FOUEJFQWdBVUdBZ0lEOEEwWUVRQ0FBdTBRWUxVUlUreUg1UDZKRUFBQUFBQUFBY0RpZ3RnOExRd0FBQUFBZ0FDQUFrNVVQQ3dKQUlBRkIvLy8vOXdOTkJFQWdBVUdBZ0lBRWEwR0FnSURJQTBrTkFTQUFJQUFnQUpRUW9naVVJQUNTRHd0RUdDMUVWUHNoK1Q5REFBQ0FQeUFBaTVOREFBQUFQNVFpQUx1ZklnTWdBeUFBRUtJSXU2S2dJZ01nQTZDaHRpSUFqQ0FBSUFKQkFFZ2JJUUFMSUFBTGF3RUJmeUFBdkVILy8vLy9CM0VpQVVILy8vLy9BMDBFUUNBQVF3QUFnTCtTSWdBZ0FDQUFsQ0FBSUFDU2twR1NFTEFORHdzZ0FVSC8vLytyQkUwRVFDQUFJQUNTUXdBQWdMOGdBQ0FBbEVNQUFJQy9rcEVnQUpLVmtoQ1lCdzhMSUFBUW1BZERHSEl4UDVJTDhBRUNBWDBDZnlBQXZDSURRZi8vLy84SGNTSUNRWUNBZ1B3RFR3UkFJQUpCZ0lDQS9BTkdCRUJEQUFBQUFFUGFEMGxBSUFOQkFFNGJEd3REQUFBQUFDQUFJQUNUbFE4TEFuMGdBa0gvLy8vM0EwMEVRRVBhRDhrL0lBSkJnWUNBbEFOSkRRRWFRMmdob2pNZ0FDQUFJQUNVRUtJSWxKTWdBSk5EMmcvSlA1SVBDeUFEUVFCSUJFQkQyZy9KUHlBQVF3QUFnRCtTUXdBQUFEK1VJZ0NSSWdFZ0FTQUFFS0lJbEVOb0lhS3prcEtUSWdBZ0FKSVBDME1BQUlBL0lBQ1RRd0FBQUQrVUlnQ1JJZ0VnQUJDaUNKUWdBQ0FCdkVHQVlIRytJZ0FnQUpTVElBRWdBSktWa2lBQWtpSUFJQUNTQ3d1ekF3RUZmeU1BUVJCcklnd2tBQ0FCS0FJQUlRMGpBRUhnQUdzaUNpUUFJQXBCMEFCcUlnc2dEU0FCUVFScUlnNGdBaUFHRU5zQkFrQWdDeEJpQkVBZ0RFRUNPZ0FJREFFTElBcEJRR3NpQ3lBTklBNGdBeUFIRU5zQklBc1FZZ1JBSUF4QkFqb0FDQXdCQ3lBS1FUQnFJZ3NnRFNBT0lBUWdDQkRiQVNBTEVHSUVRQ0FNUVFJNkFBZ01BUXNnQ2tFZ2FpSUxJQTBnRGlBRklBa1Eyd0VnQ3hCaUJFQWdERUVDT2dBSURBRUxJQXBCRUdvaUN5QU5JQTRnQ2tIUUFHb1FTaXNEQUNBS1FVQnJFRW9yQXdBUTJBTWdDeEJpQkVBZ0RFRUNPZ0FJREFFTElBb2dEU0FPSUFwQkVHb2lDeEJLS3dNQUlBcEJNR29RU2lzREFCRFlBeUFLSUFvcEF3ZzNBeGdnQ2lBS0tRTUFOd01RSUFzUVlnUkFJQXhCQWpvQUNBd0JDeUFLSUEwZ0RpQUtRUkJxSWdzUVNpc0RBQ0FLUVNCcUVFb3JBd0FRMkFNZ0NpQUtLUU1JTndNWUlBb2dDaWtEQURjREVDQUxFR0lFUUNBTVFRSTZBQWdNQVFzZ0RDQUtLUU1RTndNQUlBd2dDaWtER0RjRENBc2dDa0hnQUdva0FBSkFJQXdRc2dFRVFDQUFJQTBnRGlBQktBSVlJQXdRU2lzREFCQnpEQUVMSUFCQkFqb0FCQXNnREVFUWFpUUFDN1lEQWdOL0FYNGpBRUVnYXlJREpBQUNRQ0FCUXYvLy8vLy8vLy8vL3dDRElnVkNnSUNBZ0lDQXdNQS9mU0FGUW9DQWdJQ0FnTUMvd0FCOVZBUkFJQUZDR1lpbklRUWdBRkFnQVVMLy8vOFBneUlGUW9DQWdBaFVJQVZDZ0lDQUNGRWJSUVJBSUFSQmdZQ0FnQVJxSVFJTUFnc2dCRUdBZ0lDQUJHb2hBaUFBSUFWQ2dJQ0FDSVdFUWdCU0RRRWdBaUFFUVFGeGFpRUNEQUVMSUFCUUlBVkNnSUNBZ0lDQXdQLy9BRlFnQlVLQWdJQ0FnSURBLy84QVVSdEZCRUFnQVVJWmlLZEIvLy8vQVhGQmdJQ0EvZ2R5SVFJTUFRdEJnSUNBL0FjaEFpQUZRdi8vLy8vLy83Ky93QUJXRFFCQkFDRUNJQVZDTUlpbklnUkJrZjRBU1EwQUlBTkJFR29nQUNBQlF2Ly8vLy8vL3orRFFvQ0FnSUNBZ01BQWhDSUZJQVJCZ2Y0QWF4RE1BaUFESUFBZ0JVR0Ivd0FnQkdzUW5BWWdBeWtEQ0NJQVFobUlweUVDSUFNcEF3QWdBeWtERUNBREtRTVloRUlBVXEyRUlnVlFJQUJDLy8vL0Q0TWlBRUtBZ0lBSVZDQUFRb0NBZ0FoUkcwVUVRQ0FDUVFGcUlRSU1BUXNnQlNBQVFvQ0FnQWlGaEVJQVVnMEFJQUpCQVhFZ0Ftb2hBZ3NnQTBFZ2FpUUFJQUlnQVVJZ2lLZEJnSUNBZ0hoeGNyNEx3Z0lCQm44akFFRVFheUlOSkFBZ0RVRUlhaUVLSUFFb0FnQWhDeU1BUVRCcklnZ2tBQ0FJUVNocUlna2dDeUFCUVFScUlnd2dBaUFGRU5rQkFrQWdDUkF3QkVBZ0NrRUNPZ0FFREFFTElBaEJJR29pQ1NBTElBd2dBeUFHRU5rQklBa1FNQVJBSUFwQkFqb0FCQXdCQ3lBSVFSaHFJZ2tnQ3lBTUlBUWdCeERaQVNBSkVEQUVRQ0FLUVFJNkFBUU1BUXNnQ0VFUWFpSUpJQXNnRENBSVFTaHFFQm9xQWdBZ0NFRWdhaEFhS2dJQUVOWURJQWtRTUFSQUlBcEJBam9BQkF3QkN5QUlRUWhxSUFzZ0RDQUlRUkJxSWdrUUdpb0NBQ0FJUVJocUVCb3FBZ0FRMWdNZ0NDQUlLUU1JTndNUUlBa1FNQVJBSUFwQkFqb0FCQXdCQ3lBS0lBZ3BBeEEzQWdBTElBaEJNR29rQUFKQUlBb1FLd1JBSUFBZ0N5QU1JQUVvQWhnZ0RVRUlhaEFhS2dJQUVISU1BUXNnQUVFQ09nQUVDeUFOUVJCcUpBQUx2ZzhDQlg4UGZpTUFRZEFDYXlJRkpBQWdCRUwvLy8vLy8vOC9neUVMSUFKQy8vLy8vLy8vUDRNaENpQUNJQVNGUW9DQWdJQ0FnSUNBZ0grRElRMGdCRUl3aUtkQi8vOEJjU0VJQWtBQ1FDQUNRakNJcDBILy93RnhJZ2xCLy84QmEwR0NnSDVQQkVBZ0NFSC8vd0ZyUVlHQWZrc05BUXNnQVZBZ0FrTC8vLy8vLy8vLy8vOEFneUlNUW9DQWdJQ0FnTUQvL3dCVUlBeENnSUNBZ0lDQXdQLy9BRkViUlFSQUlBSkNnSUNBZ0lDQUlJUWhEUXdDQ3lBRFVDQUVRdi8vLy8vLy8vLy8vd0NESWdKQ2dJQ0FnSUNBd1AvL0FGUWdBa0tBZ0lDQWdJREEvLzhBVVJ0RkJFQWdCRUtBZ0lDQWdJQWdoQ0VOSUFNaEFRd0NDeUFCSUF4Q2dJQ0FnSUNBd1AvL0FJV0VVQVJBSUFNZ0FrS0FnSUNBZ0lEQS8vOEFoWVJRQkVCQ0FDRUJRb0NBZ0lDQWdPRC8vd0FoRFF3REN5QU5Rb0NBZ0lDQWdNRC8vd0NFSVExQ0FDRUJEQUlMSUFNZ0FrS0FnSUNBZ0lEQS8vOEFoWVJRQkVCQ0FDRUJEQUlMSUFFZ0RJUlFCRUJDZ0lDQWdJQ0E0UC8vQUNBTklBSWdBNFJRR3lFTlFnQWhBUXdDQ3lBQ0lBT0VVQVJBSUExQ2dJQ0FnSUNBd1AvL0FJUWhEVUlBSVFFTUFnc2dERUwvLy8vLy8vOC9XQVJBSUFWQndBSnFJQUVnQ2lBQklBb2dDbEFpQmh0NUlBWkJCblN0ZktjaUJrRVBheERNQWtFUUlBWnJJUVlnQlNrRHlBSWhDaUFGS1FQQUFpRUJDeUFDUXYvLy8vLy8vejlXRFFBZ0JVR3dBbW9nQXlBTElBTWdDeUFMVUNJSEcza2dCMEVHZEsxOHB5SUhRUTlyRU13Q0lBWWdCMnBCRUdzaEJpQUZLUU80QWlFTElBVXBBN0FDSVFNTElBVkJvQUpxSUF0Q2dJQ0FnSUNBd0FDRUloSkNENFlnQTBJeGlJUWlBa0lBUW9DQWdJQ3c1cnlDOVFBZ0FuMGlCRUlBRUxBQ0lBVkJrQUpxUWdBZ0JTa0RxQUo5UWdBZ0JFSUFFTEFDSUFWQmdBSnFJQVVwQTVnQ1FnR0dJQVVwQTVBQ1FqK0loQ0lFUWdBZ0FrSUFFTEFDSUFWQjhBRnFJQVJDQUVJQUlBVXBBNGdDZlVJQUVMQUNJQVZCNEFGcUlBVXBBL2dCUWdHR0lBVXBBL0FCUWorSWhDSUVRZ0FnQWtJQUVMQUNJQVZCMEFGcUlBUkNBRUlBSUFVcEErZ0JmVUlBRUxBQ0lBVkJ3QUZxSUFVcEE5Z0JRZ0dHSUFVcEE5QUJRaitJaENJRVFnQWdBa0lBRUxBQ0lBVkJzQUZxSUFSQ0FFSUFJQVVwQThnQmZVSUFFTEFDSUFWQm9BRnFJQUpDQUNBRktRTzRBVUlCaGlBRktRT3dBVUkvaUlSQ0FYMGlBa0lBRUxBQ0lBVkJrQUZxSUFOQ0Q0WkNBQ0FDUWdBUXNBSWdCVUh3QUdvZ0FrSUFRZ0FnQlNrRHFBRWdCU2tEb0FFaURDQUZLUU9ZQVh3aUJDQU1WSzE4SUFSQ0FWYXRmSDFDQUJDd0FpQUZRWUFCYWtJQklBUjlRZ0FnQWtJQUVMQUNJQVlnQ1NBSWEyb2hCZ0ovSUFVcEEzQWlFMElCaGlJT0lBVXBBNGdCSWc5Q0FZWWdCU2tEZ0FGQ1A0aUVmQ0lRUXVmc0FIMGlGRUlnaUNJQ0lBcENnSUNBZ0lDQXdBQ0VJaFZDQVlZaUZrSWdpQ0lFZmlJUklBRkNBWVlpREVJZ2lDSUxJQkFnRkZhdElBNGdFRmF0SUFVcEEzaENBWVlnRTBJL2lJUWdEMEkvaUh4OGZFSUJmU0lUUWlDSUloQitmQ0lPSUJGVXJTQU9JQTRnRTBMLy8vLy9ENE1pRXlBQlFqK0lJaGNnQ2tJQmhvUkMvLy8vL3crRElncCtmQ0lPVnExOElBUWdFSDU4SUFRZ0UzNGlFU0FLSUJCK2ZDSVBJQkZVclVJZ2hpQVBRaUNJaEh3Z0RpQU9JQTlDSUlaOElnNVdyWHdnRGlBT0lCUkMvLy8vL3crREloUWdDbjRpRVNBQ0lBdCtmQ0lQSUJGVXJTQVBJQThnRXlBTVF2Ny8vLzhQZ3lJUmZud2lEMWF0Zkh3aURsYXRmQ0FPSUFRZ0ZINGlHQ0FRSUJGK2ZDSUVJQUlnQ241OElnb2dDeUFUZm53aUVFSWdpQ0FLSUJCV3JTQUVJQmhVclNBRUlBcFdyWHg4UWlDR2hId2lCQ0FPVksxOElBUWdEeUFDSUJGK0lnSWdDeUFVZm53aUMwSWdpQ0FDSUF0V3JVSWdob1I4SWdJZ0QxU3RJQUlnRUVJZ2hud2dBbFN0Zkh3aUFpQUVWSzE4SWdSQy8vLy8vLy8vL3dCWUJFQWdGaUFYaENFVklBVkIwQUJxSUFJZ0JDQURJQklRc0FJZ0FVSXhoaUFGS1FOWWZTQUZLUU5RSWdGQ0FGS3RmU0VLUWdBZ0FYMGhDeUFHUWY3L0FHb01BUXNnQlVIZ0FHb2dCRUkvaGlBQ1FnR0loQ0lDSUFSQ0FZZ2lCQ0FESUJJUXNBSWdBVUl3aGlBRktRTm9mU0FGS1FOZ0lneENBRkt0ZlNFS1FnQWdESDBoQ3lBQklRd2dCa0gvL3dCcUN5SUdRZi8vQVU0RVFDQU5Rb0NBZ0lDQWdNRC8vd0NFSVExQ0FDRUJEQUVMQW40Z0JrRUFTZ1JBSUFwQ0FZWWdDMEkvaUlRaENpQUVRdi8vLy8vLy96K0RJQWF0UWpDR2hDRU1JQXRDQVlZTUFRc2dCa0dQZjB3RVFFSUFJUUVNQWdzZ0JVRkFheUFDSUFSQkFTQUdheENjQmlBRlFUQnFJQXdnRlNBR1FmQUFhaERNQWlBRlFTQnFJQU1nRWlBRktRTkFJZ0lnQlNrRFNDSU1FTEFDSUFVcEF6Z2dCU2tES0VJQmhpQUZLUU1nSWdGQ1A0aUVmU0FGS1FNd0lnUWdBVUlCaGlJQlZLMTlJUW9nQkNBQmZRc2hCQ0FGUVJCcUlBTWdFa0lEUWdBUXNBSWdCU0FESUJKQ0JVSUFFTEFDSUF3Z0FpQUNJQU1nQWtJQmd5SUJJQVI4SWdOVUlBb2dBU0FEVnExOElnRWdFbFlnQVNBU1VSdXRmQ0lDVnExOElnUWdBaUFDSUFSQ2dJQ0FnSUNBd1AvL0FGUWdBeUFGS1FNUVZpQUJJQVVwQXhnaUJGWWdBU0FFVVJ0eHJYd2lBbGF0ZkNJRUlBSWdCRUtBZ0lDQWdJREEvLzhBVkNBRElBVXBBd0JXSUFFZ0JTa0RDQ0lEVmlBQklBTlJHM0d0ZkNJQklBSlVyWHdnRFlRaERRc2dBQ0FCTndNQUlBQWdEVGNEQ0NBRlFkQUNhaVFBQy9VQkFRRi9Jd0JCSUdzaUJ5UUFJQWRCQVRvQUhDQUhJQUVnQkd3MkFoZ0NRQ0FIUVJocUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFQk9nQVVJQWNnQWlBRmJEWUNFQ0FIUVJCcUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFQk9nQU1JQWNnQXlBR2JEWUNDQ0FIUVFocUVEQUVRQ0FBUVFJNkFBUU1BUXNnQjBFWWFoQWFLQUlBSVFFZ0IwRVFhaEFhS0FJQUlRSWdCMEVCT2dBRUlBY2dBU0FDYWpZQ0FDQUhFREFFUUNBQVFRSTZBQVFNQVFzZ0J5QUhFQm9vQWdBZ0IwRUlhaEFhS0FJQWFxMUNnSUNBZ0JDRU53TUFJQWNRTUFSQUlBQkJBam9BQkF3QkN5QUFJQWNwQXdBM0FnQUxJQWRCSUdva0FBdkFBUUlCZndKK1FYOGhBd0pBSUFCQ0FGSWdBVUwvLy8vLy8vLy8vLzhBZ3lJRVFvQ0FnSUNBZ01ELy93QldJQVJDZ0lDQWdJQ0F3UC8vQUZFYkRRQWdBa0wvLy8vLy8vLy8vLzhBZ3lJRlFvQ0FnSUNBZ01ELy93QldJQVZDZ0lDQWdJQ0F3UC8vQUZKeERRQWdBQ0FFSUFXRWhGQUVRRUVBRHdzZ0FTQUNnMElBV1FSQUlBRWdBbElnQVNBQ1UzRU5BU0FBSUFFZ0FvV0VRZ0JTRHdzZ0FFSUFVaUFCSUFKVklBRWdBbEViRFFBZ0FDQUJJQUtGaEVJQVVpRURDeUFEQzljR0FnUi9BMzRqQUVHQUFXc2lCU1FBQWtBQ1FBSkFJQU1nQkVJQVFnQVFuUVpGRFFBQ2Z5QUVRdi8vLy8vLy96K0RJUWtDZnlBRVFqQ0lwMEgvL3dGeElnWkIvLzhCUndSQVFRUWdCZzBCR2tFQ1FRTWdBeUFKaEZBYkRBSUxJQU1nQ1lSUUN3c2hCeUFDUWpDSXB5SUlRZi8vQVhFaUJrSC8vd0ZHRFFBZ0J3MEJDeUFGUVJCcUlBRWdBaUFESUFRUXhnRWdCU0FGS1FNUUlnRWdCU2tER0NJQ0lBRWdBaENnRlNBRktRTUlJUUlnQlNrREFDRUVEQUVMSUFFZ0FrTC8vLy8vLy84L2d5QUdyVUl3aG9RaUNpQURJQVJDLy8vLy8vLy9QNE1nQkVJd2lLZEIvLzhCY1NJSHJVSXdob1FpQ1JDZEJrRUFUQVJBSUFFZ0NpQURJQWtRblFZRVFDQUJJUVFNQWdzZ0JVSHdBR29nQVNBQ1FnQkNBQkRHQVNBRktRTjRJUUlnQlNrRGNDRUVEQUVMSUFZRWZpQUJCU0FGUWVBQWFpQUJJQXBDQUVLQWdJQ0FnSURBdThBQUVNWUJJQVVwQTJnaUNrSXdpS2RCK0FCcklRWWdCU2tEWUFzaEJDQUhSUVJBSUFWQjBBQnFJQU1nQ1VJQVFvQ0FnSUNBZ01DN3dBQVF4Z0VnQlNrRFdDSUpRakNJcDBINEFHc2hCeUFGS1FOUUlRTUxJQWxDLy8vLy8vLy9QNE5DZ0lDQWdJQ0F3QUNFSVFrZ0NrTC8vLy8vLy84L2cwS0FnSUNBZ0lEQUFJUWhDaUFHSUFkS0JFQURRQUorSUFvZ0NYMGdBeUFFVnExOUlndENBRmtFUUNBTElBUWdBMzBpQklSUUJFQWdCVUVnYWlBQklBSkNBRUlBRU1ZQklBVXBBeWdoQWlBRktRTWdJUVFNQlFzZ0MwSUJoaUFFUWorSWhBd0JDeUFLUWdHR0lBUkNQNGlFQ3lFS0lBUkNBWVloQkNBR1FRRnJJZ1lnQjBvTkFBc2dCeUVHQ3dKQUlBb2dDWDBnQXlBRVZxMTlJZ2xDQUZNRVFDQUtJUWtNQVFzZ0NTQUVJQU45SWdTRVFnQlNEUUFnQlVFd2FpQUJJQUpDQUVJQUVNWUJJQVVwQXpnaEFpQUZLUU13SVFRTUFRc2dDVUwvLy8vLy8vOC9XQVJBQTBBZ0JFSS9pQ0VCSUFaQkFXc2hCaUFFUWdHR0lRUWdBU0FKUWdHR2hDSUpRb0NBZ0lDQWdNQUFWQTBBQ3dzZ0NFR0FnQUp4SVFjZ0JrRUFUQVJBSUFWQlFHc2dCQ0FKUXYvLy8vLy8veitESUFaQitBQnFJQWR5clVJd2hvUkNBRUtBZ0lDQWdJREF3ejhReGdFZ0JTa0RTQ0VDSUFVcEEwQWhCQXdCQ3lBSlF2Ly8vLy8vL3orRElBWWdCM0t0UWpDR2hDRUNDeUFBSUFRM0F3QWdBQ0FDTndNSUlBVkJnQUZxSkFBTFdRRUJmeUFBSUFBb0FrZ2lBVUVCYXlBQmNqWUNTQ0FBS0FJQUlnRkJDSEVFUUNBQUlBRkJJSEkyQWdCQmZ3OExJQUJDQURjQ0JDQUFJQUFvQWl3aUFUWUNIQ0FBSUFFMkFoUWdBQ0FCSUFBb0FqQnFOZ0lRUVFBTHdnSUJCbjhqQUVFUWF5SU5KQUFnRFVFSWFpRUtJQUVvQWdBaEN5TUFRVEJySWdna0FDQUlRU2hxSWdrZ0N5QUJRUVJxSWd3Z0FpQUZFTm9CQWtBZ0NSQXdCRUFnQ2tFQ09nQUVEQUVMSUFoQklHb2lDU0FMSUF3Z0F5QUdFTm9CSUFrUU1BUkFJQXBCQWpvQUJBd0JDeUFJUVJocUlna2dDeUFNSUFRZ0J4RGFBU0FKRURBRVFDQUtRUUk2QUFRTUFRc2dDRUVRYWlJSklBc2dEQ0FJUVNocUVCb3FBZ0FnQ0VFZ2FoQWFLZ0lBRU5jRElBa1FNQVJBSUFwQkFqb0FCQXdCQ3lBSVFRaHFJQXNnRENBSVFSQnFJZ2tRR2lvQ0FDQUlRUmhxRUJvcUFnQVExd01nQ0NBSUtRTUlOd01RSUFrUU1BUkFJQXBCQWpvQUJBd0JDeUFLSUFncEF4QTNBZ0FMSUFoQk1Hb2tBQUpBSUFvUUt3UkFJQUFnQ3lBTUlBRW9BaGdnRFVFSWFoQWFLZ0lBRUdzTUFRc2dBRUVDT2dBRUN5QU5RUkJxSkFBTDhBRUNBbjhDZkNBQXZDSUJRWUNBZ1B3RFJnUkFRd0FBQUFBUEN3SkFJQUZCZ0lDQS9BZHJRZi8vLzRkNFRRUkFJQUZCQVhRaUFrVUVRQkNuRlE4TElBRkJnSUNBL0FkR0RRRWdBa0dBZ0lCNFNTQUJRUUJPY1VVRVFDQUFFTFVORHdzZ0FFTUFBQUJMbEx4QmdJQ0EzQUJySVFFTFFlamVEU3NEQUNBQklBRkJnSURNK1FOcklnRkJnSUNBZkhGcnZyc2dBVUVQZGtId0FYRWlBa0hvM0ExcUt3TUFva1FBQUFBQUFBRHd2NkFpQXlBRG9pSUVva0h3M2cwckF3QWdBNkpCK040Tkt3TUFvS0FnQktKQmdOOE5Ld01BSUFPaUlBSkI4TndOYWlzREFDQUJRUmQxdDZDZ29MWWhBQXNnQUFzUUFFTUFBSUMvRUxZTlF3QUFBQUNWQzVvQkFBSkFJQUZCZ0FGT0JFQWdBRU1BQUFCL2xDRUFJQUZCL3dGSkJFQWdBVUgvQUdzaEFRd0NDeUFBUXdBQUFIK1VJUUJCL1FJZ0FTQUJRZjBDVGh0Qi9nRnJJUUVNQVFzZ0FVR0JmMG9OQUNBQVF3QUFnQXlVSVFBZ0FVR2Jma3NFUUNBQlFlWUFhaUVCREFFTElBQkRBQUNBREpRaEFFRzJmU0FCSUFGQnRuMU1HMEhNQVdvaEFRc2dBQ0FCUVJkMFFZQ0FnUHdEYXI2VUM4d0JBd0o4QVg4QmZnSjlBa0FnQUJDWkIwSC9EM0VpQTBNQUFBQkRFSmtIU1EwQVF3QUFBQUFnQUx4QmdJQ0FmRVlOQVJwREFBQ0FmeENaQnlBRFRRUkFJQUFnQUpJUEN5QUFRd0FBQUFCZUJFQkJBQkM1RFE4TElBQkRBQUFXdzE5RkRRQkJBQkM0RFE4TFFiakxEU3NEQUNBQXV5SUJJQUZCc01zTkt3TUFJZ0dnSWdJZ0FhR2hJZ0dpUWNETERTc0RBS0FnQVNBQm9xSkJ5TXNOS3dNQUlBR2lSQUFBQUFBQUFQQS9vS0FnQXIwaUJFSXZoaUFFcDBFZmNVRURkRUd3eVExcUtRTUFmTCtpdGdzTHpBSUJCWDhqQUVFUWF5SUpKQUFnQVNnQ0FDRUxJd0JCMEFCcklnZ2tBQ0FJUVVCcklnb2dDeUFCUVFScUlnd2dBaUFGRU5zQkFrQWdDaEJpQkVBZ0NVRUNPZ0FJREFFTElBaEJNR29pQ2lBTElBd2dBeUFHRU5zQklBb1FZZ1JBSUFsQkFqb0FDQXdCQ3lBSVFTQnFJZ29nQ3lBTUlBUWdCeERiQVNBS0VHSUVRQ0FKUVFJNkFBZ01BUXNnQ0VFUWFpSUtJQXNnRENBSVFVQnJFRW9yQXdBZ0NFRXdhaEJLS3dNQUVOZ0RJQW9RWWdSQUlBbEJBam9BQ0F3QkN5QUlJQXNnRENBSVFSQnFJZ29RU2lzREFDQUlRU0JxRUVvckF3QVEyQU1nQ0NBSUtRTUlOd01ZSUFnZ0NDa0RBRGNERUNBS0VHSUVRQ0FKUVFJNkFBZ01BUXNnQ1NBSUtRTVFOd01BSUFrZ0NDa0RHRGNEQ0FzZ0NFSFFBR29rQUFKQUlBa1FzZ0VFUUNBQUlBc2dEQ0FCS0FJWUlBa1FTaXNEQUJCekRBRUxJQUJCQWpvQUJBc2dDVUVRYWlRQUN3d0FJd0JCRUdzZ0FEa0RDQXNjQVFGL0l3QkJFR3NpQUVLQWdJQ0FnSUNBQ0RjRENDQUFLd01JQytRQkFRWi9Jd0JCRUdzaUNpUUFJQXBCQ0dvaEJ5QUJLQUlBSVFrakFFRWdheUlHSkFBZ0JrRVlhaUlJSUFrZ0FVRUVhaUlMSUFJZ0JCRFpBUUpBSUFnUU1BUkFJQWRCQWpvQUJBd0JDeUFHUVJCcUlnZ2dDU0FMSUFNZ0JSRFpBU0FJRURBRVFDQUhRUUk2QUFRTUFRc2dCa0VJYWlJSUlBa2dDeUFHUVJocUVCb3FBZ0FnQmtFUWFoQWFLZ0lBRU5ZRElBZ1FNQVJBSUFkQkFqb0FCQXdCQ3lBSElBWXBBd2czQWdBTElBWkJJR29rQUFKQUlBY1FLd1JBSUFBZ0NTQUxJQUVvQWhnZ0NrRUlhaEFhS2dJQUVISU1BUXNnQUVFQ09nQUVDeUFLUVJCcUpBQUxGUUFnQUVITWx5QTJBZ0FnQUVFRWFoQVBHaUFBQ3hVQUlBQkJxSmNnTmdJQUlBQkJCR29RRHhvZ0FBc1ZBQ0FBUVlTWElEWUNBQ0FBUVFScUVBOGFJQUFMRlFBZ0FFSGdsaUEyQWdBZ0FFRUVhaEFQR2lBQUN4VUFJQUJCdkpZZ05nSUFJQUJCQkdvUUR4b2dBQXNWQUNBQVFaaVdJRFlDQUNBQVFRUnFFQThhSUFBTEZRQWdBRUgwbFNBMkFnQWdBRUVFYWhBUEdpQUFDeFVBSUFCQjBKVWdOZ0lBSUFCQkJHb1FEeG9nQUF2TEF3QWdBaWdDQUNFQUlBTW9BZ0FoQWlBRUtBSUFJUU1nQlNnQ0FDRUVJQUZDQURjQ0dDQUJRUUE2QUJRZ0FVRUFOZ0lRSUFFZ0F6WUNEQ0FCSUFJMkFnZ2dBU0FFTmdJRUlBRWdBRFlDQUNBQlFnQTNBaXdnQVVJQU53SWdJQUZCZ0lDQS9BTTJBaWdnQVVJQU53STBJQUZDQURjQ1BDQUJRUUEyQWtRZ0FVS0FnSUQ4QXpjQ1NDQUJRZEFBYWtFQUVLc0tHaUFCUWFBQmFrR0FnSUFDRUtzS0dpQUJRZ0EzQXZnQklBRkNBRGNDOEFFZ0FVSUFOd0tFQWlBQlFZQ0FnUHdETmdLQUFpQUJRZ0EzQW93Q0lBRkNBRGNDbUFJZ0FVR0FnSUQ4QXpZQ2xBSWdBVUlBTndLZ0FpQUJJQUZCckFKcUlnQTJBckFDSUFFZ0FEWUNyQUlnQVVHQWdJRDhBellDcUFJZ0FVRzBBbXBCQUVFc0VIa2FJQUZDQURjQzVBSWdBVUdBZ0lEOEF6WUM0QUlnQVVJQU53THNBaUFCUWdBM0F2Z0NJQUZCZ0lDQS9BTTJBdlFDSUFGQ0FEY0NnQU1nQVVJQU53S01BeUFCUVlDQWdQd0ROZ0tJQXlBQlFnQTNBcFFESUFGQnZBTnFJZ0JDQURjQ0FDQUJRUUEyQXJRRElBRWdBVUdzQTJvaUFqWUNzQU1nQVNBQ05nS3NBeUFCUVFBMkFxZ0RJQUVnQVVHZ0Eyb2lBallDcEFNZ0FTQUNOZ0tnQXlBQlFZQ0FnUHdETmdLY0F5QUJJQUEyQXJnREMxSUFBa0FnQUNnQ0FDZ0NBQkJIUlNBQlFReE5RUUJCQVNBQmRFSGZOWEViY2cwQUlBRkJpU3BHSUFGQm1pcEdjaUFCUWRBcGF5SUFRUlZOUVFCQkFTQUFkRUdEbUlNQmNSdHlEUUJCQUE4TFFRRUxwUUVCQVg4akFFRWdheUlGSkFBZ0JVRUJPZ0FjSUFVZ0FTQURiRFlDR0FKQUlBVkJHR29RTUFSQUlBQkJBam9BQkF3QkN5QUZRUUU2QUJRZ0JTQUNJQVJzTmdJUUlBVkJFR29RTUFSQUlBQkJBam9BQkF3QkN5QUZRUmhxRUJvb0FnQWhBU0FGUVJCcUVCb29BZ0FoQWlBRlFRRTZBQXdnQlNBQklBSnFOZ0lJSUFWQkNHb1FNQVJBSUFCQkFqb0FCQXdCQ3lBQUlBVXBBd2czQWdBTElBVkJJR29rQUFzM0FDQUFJQUFvQWhSQkFXczJBaFFnQUJESUYwRUtka0VCU3dSQUlBQW9BZ2hCQkdzb0FnQVFIeUFBSUFBb0FnaEJCR3NRMnc4TEMwY0JBWDhDUUNBQUlBRVE3d0VFUUVFQklRSWdBQ0FCRUQ1QndBQkdEUUVMUVFBaEFpQUFJQUVRbkFkRkRRQWdBQ0FCRUVWQkFrY05BQ0FBSUFFUVBrRWdSaUVDQ3lBQ0N6OEJBbjhDUUNBQUlBRVF1Z0VpQTBVTkFFRUJJUUlDUUFKQUlBTXZBUjVCRkdzT0JBSUJBUUFCQ3lBQUlBQWdBUkRCQVJDL0FnOExRUUFoQWdzZ0FndmtBUUVHZnlNQVFSQnJJZ29rQUNBS1FRaHFJUWNnQVNnQ0FDRUpJd0JCSUdzaUJpUUFJQVpCR0dvaUNDQUpJQUZCQkdvaUN5QUNJQVFRMmdFQ1FDQUlFREFFUUNBSFFRSTZBQVFNQVFzZ0JrRVFhaUlJSUFrZ0N5QURJQVVRMmdFZ0NCQXdCRUFnQjBFQ09nQUVEQUVMSUFaQkNHb2lDQ0FKSUFzZ0JrRVlhaEFhS2dJQUlBWkJFR29RR2lvQ0FCRFhBeUFJRURBRVFDQUhRUUk2QUFRTUFRc2dCeUFHS1FNSU53SUFDeUFHUVNCcUpBQUNRQ0FIRUNzRVFDQUFJQWtnQ3lBQktBSVlJQXBCQ0dvUUdpb0NBQkJyREFFTElBQkJBam9BQkFzZ0NrRVFhaVFBQzdVQkFRUi9Jd0JCRUdzaUF5UUFRUUVoQWdKQUlBRXBBd0JDQUZJTkFDQUJLQUlJSWdVRVFDQUZLQUlJRFFFTFFRRWhCQXNDUUNBRURRQWdBU2tEQUNBQUtRTUFnMElBVWcwQVFRQWhBaUFBS0FJSVJRMEFJQUVvQWdnaUFVVU5BQ0FCUVFScUlRSWdBU2dDQUNFQkEwQUNRQ0FCSUFKR0RRQWdBeUFCS0FJUU5nSU1JQUFvQWdnZ0EwRU1haERBQXlBQUtBSUlRUVJxUncwQUlBRVFUQ0VCREFFTEN5QUJJQUpISVFJTElBTkJFR29rQUNBQ0N3MEFJQUJCZ0FGcUlBRVF2UlVMdGdJQkEzOGpBRUV3YXlJQ0pBQUNRQ0FBUVlBQmFpSURJQUVRYUEwQUlBTWdBUkRRQkNBQVFZQURha0VnSUFFZ0FrRXNhaERkQWtVRVFDQUNRUmhxSUFJb0Fpd2lBeWdDQ0NBREtBSU1FTVFJSVFNZ0FpQUFOZ0lFSUFKQnJKVWdOZ0lBSUFJZ0FqWUNFQ0FESUFJUTFnb2dBaEFXSUFOQkNHb1F4UU1MQWtBZ0FVSE5JbXNpQTBFVlN3MEFRUUVnQTNRaUJFSHlBWEZGQkVBZ0JFR0JnT0FCY1VVRVFFRUJJQU4wUVlEZ0FIRkZEUUlnQUVFQk9nQ2tBd3dEQ3lBQVFRRTZBS1lEREFJTElBQkJnUUk3QUtFRElBQkJBVG9Bb3dNTUFRc0NRQUpBQWtBZ0FVRUdhdzRFQWdNQkFRQUxJQUZCRmtjRVFDQUJRU2RIRFFNZ0FFRUJPZ0NtQXlBQVFRRTZBS2dEREFNTElBQkJBVG9Bb1FNTUFnc2dBRUVCT2dDaUF3d0JDeUFBUVFFNkFLVURDeUFDUVRCcUpBQUw0QUVCQlg4akFFRVFheUlISkFBZ0FTZ0NBQ0VJSXdCQk1Hc2lCaVFBSUFaQklHb2lDU0FJSUFGQkJHb2lDaUFDSUFRUTJ3RUNRQ0FKRUdJRVFDQUhRUUk2QUFnTUFRc2dCa0VRYWlJSklBZ2dDaUFESUFVUTJ3RWdDUkJpQkVBZ0IwRUNPZ0FJREFFTElBWWdDQ0FLSUFaQklHb1FTaXNEQUNBR1FSQnFFRW9yQXdBUTJBTWdCaEJpQkVBZ0IwRUNPZ0FJREFFTElBY2dCaWtEQURjREFDQUhJQVlwQXdnM0F3Z0xJQVpCTUdva0FBSkFJQWNRc2dFRVFDQUFJQWdnQ2lBQktBSVlJQWNRU2lzREFCQnpEQUVMSUFCQkFqb0FCQXNnQjBFUWFpUUFDeVlBSUFBZ0FTZ0NBQ2dDQUNBQ0tBSVlJQUl2QVJ3Z0FTZ0NDQ0FCS0FJTVFlQUFFSTBYQzRJQ0FRRi9RUXNoQWdKQUFrQWdBUkRRQWcwQUlBRVFvd0lOQUVFQUlRSUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCQVdzT0p3OEdCZ1lIQndZUERRRUNEdzBEQkFVT0RRME5EUTBORFEwTkRRME5EUTBORFEwTkRRME5DZ0FMQWtBZ0FVRTJhdzRXREF3TURRMFBEUTBORFEwTkRRME5EUTBKQ1FrSkNRQUxBa0FnQVVIS0Ftc09Bd2dGQ1FBTElBRkJnQ3hyUVFKSkRRZ2dBVUc5QWtZTkRpQUJRWlVxUncwTVFRUVBDMEVCRHd0QkFnOExRUU1QQzBFRkR3dEJCZzhMUVFjUEMwRUlEd3RCQ1E4TFFRb1BDMEVMRHdzQUMwRU1RUTBnQUVFTVJoc1BDMEVOSVFJTElBSVBDMEVMUVEwZ0FFRUxSaHNMR3dFQmZ5QUFLQUp3SWdGQkRVd0VRQ0FBSUFGQkFXbzJBbkFMQ3k0QkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBQkIzQUJxSUFOQkRHb1FtQXNnQWhEZ0FpQURRUkJxSkFBTEx3RUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUUwYWlBQ1FReHFFSjRDSVFBZ0FrRVFhaVFBSUFCQkFFY0xQZ0VDZnlBQUtBSUVJUUlEUUNBQ0lBQW9BZ2dpQVVjRVFDQUFJQUZCeEFOcklnRTJBZ2dnQVJEd0Zob01BUXNMSUFBb0FnQWlBQVJBSUFBUUh3c0xrd1FCQjM4Z0FDZ0NBQ0VHSUFBb0FnUWhBd05BSUFNZ0JrY0VRQ0FCS0FJRVFjUURheUlDSUFOQnhBTnJJZ01wQWdBM0FnQWdBaUFES1FBTk53QU5JQUlnQXlrQ0NEY0NDQ0FDUVJocUlBTkJHR29Rb1FRZ0FrRXNhaUFEUVN4cUVLVUNHaUFDUVRocUlBTkJPR29Rb1FRZ0FpQURLQUpNTmdKTUlBSkIwQUJxSUFOQjBBQnFFS2tJR2lBQ1FhQUJhaUFEUWFBQmFoQ3BDQm9nQWtId0FXb2dBMEh3QVdvUW9RUWdBa0dFQW1vZ0EwR0VBbW9Rb1FRZ0FrR1lBbW9nQTBHWUFtb1FvUVFnQWtHc0Ftb2dBMEdzQW1vUXV3MGdBa0c0QW1vZ0EwRzRBbW9RcFFJYUlBSkJ4QUpxSUFOQnhBSnFFS1VDR2lBQ1FkQUNhaUFEUWRBQ2FoQ2hCQ0FDUWVRQ2FpQURRZVFDYWhDaEJDQUNRZmdDYWlBRFFmZ0NhaENoQkNBQ1FZd0RhaUFEUVl3RGFoQ2hCQ0FDUWFBRGFpQURRYUFEYWhDN0RTQUNRYXdEYWlBRFFhd0RhaEM3RFNBQ1FiZ0RhaUlFSUFOQnVBTnFJZ0lvQWdBMkFnQWdCQ0FDS0FJRUlnYzJBZ1FnQkNBQ0tBSUlJZ2cyQWdnZ0JFRUVhaUVGQWtBZ0NFVUVRQ0FFSUFVMkFnQU1BUXNnQnlBRk5nSUlJQUpDQURjQ0JDQUNJQUpCQkdvMkFnQUxJQUVnQVNnQ0JFSEVBMnMyQWdRTUFRc0xJQUFvQWdBaEFpQUFJQUVvQWdRMkFnQWdBU0FDTmdJRUlBQW9BZ1FoQWlBQUlBRW9BZ2cyQWdRZ0FTQUNOZ0lJSUFBb0FnZ2hBaUFBSUFFb0FndzJBZ2dnQVNBQ05nSU1JQUVnQVNnQ0JEWUNBQXNWQUNBQUlBRWdBaUFEUWNRRFFiMzd3d1FRL2hJTFBnRUNmeUFBS0FJRUlRSURRQ0FDSUFBb0FnZ2lBVWNFUUNBQUlBRkJ6QUJySWdFMkFnZ2dBUkN1QnhvTUFRc0xJQUFvQWdBaUFBUkFJQUFRSHdzTGt3RUJBbjhnQUNnQ0FDRURJQUFvQWdRaEFnTkFJQUlnQTBjRVFDQUJLQUlFUWN3QWF5QUNRY3dBYXlJQ0VMVUlJQUVnQVNnQ0JFSE1BR3MyQWdRTUFRc0xJQUFvQWdBaEFpQUFJQUVvQWdRMkFnQWdBU0FDTmdJRUlBQW9BZ1FoQWlBQUlBRW9BZ2cyQWdRZ0FTQUNOZ0lJSUFBb0FnZ2hBaUFBSUFFb0FndzJBZ2dnQVNBQ05nSU1JQUVnQVNnQ0JEWUNBQXNWQUNBQUlBRWdBaUFEUWN3QVFkaWgrUm9RL2hJTHBBSUJCSDhnQVNnQ0FDSUNJQUV2QVFSQkFuUnFJUU1nQUVFQU5nSUlJQUJDQURjQ0FDQUNJQU5IQkVBZ0FDQURJQUpySWdOQkFuVVF6d1VnQUNnQ0JDRUVJQUFnQTBFQVNnUi9JQVFnQWlBREVIMGdBMm9GSUFRTE5nSUVDeUFBUVF4cUlRSWdBU2dDRkNJRElBRXZBUmhCQkhScUlRUWdBa0VBTmdJSUlBSkNBRGNDQUNBRElBUkhCRUFnQWlBRUlBTnJJZ1JCQkhVUXV4WWdBaWdDQkNFRklBSWdCRUVBU2dSL0lBVWdBeUFFRUgwZ0JHb0ZJQVVMTmdJRUN5QUFJQUFvQWdBMkFoZ2dBQ0FCTHdFRU93RWNJQUFnQVM4QkJqc0JIaUFBSUFFb0FnZzJBaUFnQUNBQktBSU1OZ0lrSUFBZ0FTZ0NFRFlDS0NBQUlBSW9BZ0EyQWl3Z0FDQUJMd0VZT3dFd0lBQkNBRGNDTkNBQVFnQTNBandnQUVJQU53SkVJQUFMR1FBZ0FDQUJLQUlBTmdJQUlBQkJCR29nQVVFRWFoQlVHZ3NWQUNBQVFlU1VJRFlDQUNBQVFRaHFFQThhSUFBTEtnRUNmeU1BUVJCcklnRWtBQ0FBS0FJQUVNTURJUUlnQUNnQ0JDRUFJQUZCRUdva0FDQUFJQUp6QzRvQkFRTi9Jd0JCNEFCcklnSWtBQ0FDUWNnQWFpQUFLQUlFRU5FQklRTWdBaUFBS0FJQUtBSUFOZ0kwSUFKQnNKTWdOZ0l3SUFKQjFKTWdOZ0lZSUFKQitKTWdOZ0lBSUFJZ0FrRXdhaUlBTmdKQUlBSWdBa0VZYWlJRU5nSW9JQUlnQWpZQ0VDQUJJQU1nQUNBRUlBSVF1UW9nQWhBV0lBUVFGaUFBRUJZZ0F4QVdJQUpCNEFCcUpBQUx5d0lCQTM4akFFSFFBR3NpQkNRQUlBUkJRR3RDQURjREFDQUVRZ0EzQXpnZ0JFR0FnSUQ4QXpZQ1NDQUVJQVJCT0dvMkFqQWdCQ0FDTmdJVUlBUWdCRUVnYWpZQ0hDQUVJQVJCS0dvMkFoZ2dCQ0FFUVRCcU5nSVFJQUJCQURZQ0NDQUFRZ0EzQWdBZ0FTZ0NCQ0VHSUFFb0FnQWhBZ0pBQTBBZ0FpQUdSZ1JBSUFFb0FnUWhBeUFCS0FJQUlRSURRQ0FDSUFOR0RRTWdCQ0FDS0FJQU5nSU1JQVJCT0dvZ0JFRU1haEQzQjBVRVFDQUFJQVJCREdvUXp3RWdCRUVRYWlBRUtBSU1FTkFWQ3lBQ1FRUnFJUUlNQUFzQUN5QUVJQUlvQWdBaUJUWUNEQUpBSUFNZ0JSQ0tBaUlGS0FJQUlBVW9BZ1JHQkVBZ0JFRTRhaUFFUVF4cUVQY0hEUUVnQUNBRVFReHFFTThCSUFSQkVHb2dCQ2dDREJEUUZRc2dBa0VFYWlFQ0RBRUxDMEhRdVFsQng3WURRY29DUWNyOUFCQUFBQXNnQkVFNGFoQlBJQVJCMEFCcUpBQUxHUUFnQUNBQk5nSUVJQUJCakpNZ05nSUFJQUFnQURZQ0VBdGNBUUYvSXdCQkVHc2lBeVFBSUFOQkNHb2dBQ0FCRUtjS0lBTW9BZ2dpQUFSL0FuOGdBa1VFUUNBQUxRQW9RZjhBY1VVTUFRc2dBa0VIVHdSQUVBRUFDeUFBS0FJb0lBSjJRUUZ4Q3dWQkFBc2hBQ0FEUVJCcUpBQWdBQXNJQUNBQVFhd0NhZ3VPQ1FJTWZ3SjlJd0JCSUdzaUNTUUFJQWtnQVRZQ0VDQUpRUkJxSVFZakFFRVFheUlISkFBZ0FSRFBGU0VJSUFrQ2Z3SkFJQUFvQWdRaUEwVU5BQ0FBS0FJQUFuOGdBMEVCYXlBSWNTQURhU0lGUVFGTkRRQWFJQWdnQXlBSVN3MEFHaUFJSUFOd0N5SUNRUUowYWlnQ0FDSUVSUTBBSUFOQkFXc2hDaUFCS0FJRUlRc2dBU2dDQUNFTUlBVkJBVXNoQlFOQUlBUW9BZ0FpQkVVTkFTQUlJQVFvQWdRaUFVY0VRQUpBSUFWRkJFQWdBU0FLY1NFQkRBRUxJQUVnQTBrTkFDQUJJQU53SVFFTElBRWdBa2NOQWdzZ0JDZ0NDQ0FNUncwQUlBUW9BZ3dnQzBjTkFBdEJBQXdCQ3lBSElBQWdDQ0FHRUxBZEFrQkJBQ0FESUFBb0FneEJBV3F6SWc0Z0FDb0NFQ0lQSUFPemxGNGJEUUFDUUFKL1FRSWdBeUFEUVFGcmNVRUFSeUFEUVFOSmNpQURRUUYwY2lJQkFuOGdEaUFQbFkwaURrTUFBSUJQWFNBT1F3QUFBQUJnY1FSQUlBNnBEQUVMUVFBTElnSWdBU0FDU3hzaUFVRUJSZzBBR2lBQklBRWdBVUVCYTNGRkRRQWFJQUVRZndzaUJTQUFLQUlFSWdGTkJFQWdBU0FGVFEwQklBRkJBMGtoQXdKL0lBQW9BZ3l6SUFBcUFoQ1ZqU0lPUXdBQWdFOWRJQTVEQUFBQUFHQnhCRUFnRHFrTUFRdEJBQXNoQWlBQklBVWdBeUFCYVVFQlMzSUVmeUFDRUg4RklBSkJBVUVnSUFKQkFXdG5hM1FnQWtFQ1NSc0xJZ0lnQWlBRlNSc2lCVTBOQVF0QkFDRUNBa0FnQlFSQUlBQWdCUkNYQXhCc0lBQWdCVFlDQkFOQUlBSWdCVVlFUUNBQUtBSUlJZ05GRFFNZ0FFRUlhaUVCSUFNb0FnUWhCQUpBSUFWcElnSkJBVTBFUUNBRUlBVkJBV3R4SVFRTUFRc2dCQ0FGU1EwQUlBUWdCWEFoQkFzZ0FDZ0NBQ0FFUVFKMGFpQUJOZ0lBSUFWQkFXc2hDeUFDUVFGTElRd0RRQ0FES0FJQUlnRkZEUVFnQVNnQ0JDRUdBa0FnREVVRVFDQUdJQXR4SVFZTUFRc2dCU0FHU3cwQUlBWWdCWEFoQmdzQ1FDQUVJQVpHRFFBZ0FTRUNJQVpCQW5RaUNpQUFLQUlBYWlJTktBSUFSUVJBSUEwZ0F6WUNBQ0FHSVFRTUFRc0RRQUpBSUFJaUJpZ0NBQ0lDUlEwQUlBRW9BZ2dnQWlnQ0NFY05BQ0FCS0FJTUlBSW9BZ3hHRFFFTEN5QURJQUkyQWdBZ0JpQUFLQUlBSUFwcUtBSUFLQUlBTmdJQUlBQW9BZ0FnQ21vb0FnQWdBVFlDQUF3QkN5QUJJUU1NQUFzQUJTQUFLQUlBSUFKQkFuUnFRUUEyQWdBZ0FrRUJhaUVDREFFTEFBc0FDeUFBUVFBUWJDQUFRUUEyQWdRTEN5QUFLQUlFSWdNZ0EwRUJhM0ZGQkVBZ0EwRUJheUFJY1NFQ0RBRUxJQU1nQ0VzRVFDQUlJUUlNQVFzZ0NDQURjQ0VDQ3dKQUlBSkJBblFpQWlBQUtBSUFhaWdDQUNJQlJRUkFJQWNvQWdBZ0FDZ0NDRFlDQUNBQUlBY29BZ0EyQWdnZ0FDZ0NBQ0FDYWlBQVFRaHFOZ0lBSUFjb0FnQWlBU2dDQUNJQ1JRMEJJQUlvQWdRaEJBSkFJQU1nQTBFQmF5SUNjVVVFUUNBQ0lBUnhJUVFNQVFzZ0F5QUVTdzBBSUFRZ0EzQWhCQXNnQUNnQ0FDQUVRUUowYWlBQk5nSUFEQUVMSUFjb0FnQWdBU2dDQURZQ0FDQUJJQWNvQWdBMkFnQUxJQWNvQWdBaEJDQUhRUUEyQWdBZ0FDQUFLQUlNUVFGcU5nSU1JQWNRaXdGQkFRczZBQndnQ1NBRU5nSVlJQWRCRUdva0FDQUpLQUlZSVFBZ0NVRWdhaVFBSUFCQkVHb0x5UVVDQ1g4Q2ZTTUFRUkJySWdra0FDTUFRUkJySWdZa0FDQUNLQUlBSVFVZ0NRSi9Ba0FnQVNnQ0JDSURSUTBBSUFFb0FnQUNmeUFEUVFGcklBVnhJQU5wSWdkQkFVME5BQm9nQlNBRElBVkxEUUFhSUFVZ0EzQUxJZ2hCQW5ScUtBSUFJZ1JGRFFBZ0EwRUJheUVLSUFkQkFVc2hDd05BSUFRb0FnQWlCRVVOQVNBRklBUW9BZ1FpQjBjRVFBSkFJQXRGQkVBZ0J5QUtjU0VIREFFTElBTWdCMHNOQUNBSElBTndJUWNMSUFjZ0NFY05BZ3NnQkNnQ0NDQUZSdzBBQzBFQURBRUxRZHdBRUJVaEJDQUdJQUZCQ0dvMkFnUWdCaUFFTmdJQUlBUkJDR29pQnlBQ0tBSUFOZ0lBSUFkQkJHb2dBa0VFYWhDcENCb2dCa0VCT2dBSUlBUkJBRFlDQUNBRUlBVTJBZ1FDUUVFQUlBTWdBU2dDREVFQmFyTWlEQ0FCS2dJUUlnMGdBN09VWGhzTkFDQUJJQU1nQTBFQmEzRkJBRWNnQTBFRFNYSWdBMEVCZEhJaUFnSi9JQXdnRFpXTklneERBQUNBVDEwZ0RFTUFBQUFBWUhFRVFDQU1xUXdCQzBFQUN5SUlJQUlnQ0VzYkVNTUJJQUVvQWdRaUF5QURRUUZyY1VVRVFDQURRUUZySUFWeElRZ01BUXNnQXlBRlN3UkFJQVVoQ0F3QkN5QUZJQU53SVFnTEFrQWdDRUVDZENJRklBRW9BZ0JxS0FJQUlnSkZCRUFnQmlnQ0FDQUJLQUlJTmdJQUlBRWdCaWdDQURZQ0NDQUJLQUlBSUFWcUlBRkJDR28yQWdBZ0JpZ0NBQ0lDS0FJQUlnVkZEUUVnQlNnQ0JDRUVBa0FnQXlBRFFRRnJJZ1Z4UlFSQUlBUWdCWEVoQkF3QkN5QURJQVJMRFFBZ0JDQURjQ0VFQ3lBQktBSUFJQVJCQW5ScUlBSTJBZ0FNQVFzZ0JpZ0NBQ0FDS0FJQU5nSUFJQUlnQmlnQ0FEWUNBQXNnQmlnQ0FDRUVJQVpCQURZQ0FDQUJJQUVvQWd4QkFXbzJBZ3dnQmlnQ0FDRUJJQVpCQURZQ0FDQUJCRUFnQmkwQUNBUkFJQUZCREdvUXpnVUxJQUVFUUNBQkVCOExDMEVCQ3pvQURDQUpJQVEyQWdnZ0JrRVFhaVFBSUFBZ0NTZ0NDRFlDQUNBQUlBa3RBQXc2QUFRZ0NVRVFhaVFBQzRvQkFRUi9JQUFvQWpBaUFTZ0NSQ0VESUFFb0FrQWhBUUpBQTBBZ0FTQURSd1JBQWtBQ1FDQUJLQUlBSWdJdkFSNGlCRUgyQVVjRVFDQUVRZmNCUncwQ0lBRW9BZ1JCQVVZTkFRd0NDeUFCS0FJRVFRRkhEUUVMSUFJb0Fqd2dBQkRIQlVVTkFDQUJLQUlBS0FJOElnSWdBRWNOQXdzZ0FVRUlhaUVCREFFTEN5QUFLQUlJSVFJTElBSUxmUUVCZndKL0lBRW9BZ1FnQVNnQ0FHdEJBblVoQWdKQUFrQUNRQUpBQWtBZ0FDZ0NBRUVCYXc0RUJBQUJBZ01MSUFKQkFVWU1CQXNnQWtFQlJnd0RDeUFDUVFCSERBSUxRWmlyQ1VIRW1BSkJOa0dieHdNUUFBQUxJQUpGQzBVRVFFSG81Z2hCeEpnQ1FUMUJwb29CRUFBQUN5QUFRUVJxSUFFUXVBY0w1d1FDQ0g4Q2ZpTUFRY0FCYXlJRUpBQWdBU2dDOUFFZ0FTZ0MvQUVpQlVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FCSUFWQkFYUkJBbW9Rc0JFTElBUkJ1QUZxSUFFZ0FoRHlCQ0FCS0FMMEFTSUtRUUZySVFzZ0FpZ0NBQ0VISUFFb0F2QUJJUWdnQkNnQ3ZBRWhDU0FFS0FLNEFTRUdRUUFoQWdKQUEwQWdBaUFLUndSQUlBZ2dCa0VVYkdvaUJTMEFDRVVFUUNBREtBSUFJUU1nQlVFQk9nQUlJQVVnQXpZQ0JDQUZJQWMyQWdBZ0JDZ0N2QUVoQXlBSUlBWkJGR3hxSWdZZ0FqWUNFQ0FHSUFNMkFnd2dBU0FCS0FMOEFVRUJhallDL0FFZ0FTQUJLQUtBQWtFQmFqWUNnQUlnQUNBRlFRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBVW9BZ3dnQ1VjTkFDQUhJQVVvQWdCSERRQWdBRUVDTmdJQUlBQWdCVUVFYWpZQ0JBd0RDeUFDSUFVb0FoQkxCRUFnQXlnQ0FDRURJQVJCQVRvQXFBRWdCQ0FDTmdLd0FTQUVJQU0yQXFRQklBUWdCellDb0FFZ0JDQUpOZ0tzQVNBRUlBSTJBaEFnQkNBRUtRT29BU0lNTndNSUlBUWdCQ2tEb0FFaURUY0RBQ0FFSUFVb0FoQTJBckFCSUFRZ0JTa0NDRGNEcUFFZ0JDQUZLUUlBTndPZ0FTQUZJQUkyQWhBZ0JTQU5Od0lBSUFVZ0REY0NDQ0FFSUFRb0FyQUJRUUZxTmdLd0FTQUJJQVpCQVdvZ0FTZ0M5QUZ3SUFSQm9BRnFFTElFSUFFZ0FTZ0MvQUZCQVdvMkF2d0JJQUVnQVNnQ2dBSkJBV28yQW9BQ0lBQWdCVUVFYWpZQ0JDQUFRUUEyQWdBTUF3VWdCa0VCYWtFQUlBWWdDMGNiSVFZZ0FrRUJhaUVDREFJTEFBc0xJQVJCaHJVRFFlc0RRUTRnQkVHZ0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFSEFBV29rQUFzUUFDQUFRUUEyQWdBZ0FFRUFOZ0lZQ3cwQUlBQWdBVUg4a1NBUXp3d0xEUUFnQUNBQlFiU1JJQkRQREF1aUJRSUpmd0o5SXdCQklHc2lCeVFBSUFjZ0FUWUNFQ0FIUVJCcUlRZ2pBRUVRYXlJRkpBQWdBU2dDQUNFQklBY0Nmd0pBSUFBb0FnUWlBa1VOQUNBQUtBSUFBbjhnQWtFQmF5QUJjU0FDYVNJR1FRRk5EUUFhSUFFZ0FTQUNTUTBBR2lBQklBSndDeUlFUVFKMGFpZ0NBQ0lEUlEwQUlBSkJBV3NoQ1NBR1FRRkxJUW9EUUNBREtBSUFJZ05GRFFFZ0FTQURLQUlFSWdaSEJFQUNRQ0FLUlFSQUlBWWdDWEVoQmd3QkN5QUNJQVpMRFFBZ0JpQUNjQ0VHQ3lBRUlBWkhEUUlMSUFNb0FnZ2dBVWNOQUF0QkFBd0JDMEVRRUJVaEF5QUZJQUJCQ0dvMkFnUWdCU0FETmdJQUlBZ29BZ0FvQWdBaEJpQURRUUE2QUF3Z0F5QUdOZ0lJSUFWQkFUb0FDQ0FEUVFBMkFnQWdBeUFCTmdJRUFrQkJBQ0FDSUFBb0FneEJBV3F6SWdzZ0FDb0NFQ0lNSUFLemxGNGJEUUFnQUNBQ0lBSkJBV3R4UVFCSElBSkJBMGx5SUFKQkFYUnlJZ1FDZnlBTElBeVZqU0lMUXdBQWdFOWRJQXREQUFBQUFHQnhCRUFnQzZrTUFRdEJBQXNpQWlBQ0lBUkpHeEREQVNBQUtBSUVJZ0lnQWtFQmEzRkZCRUFnQWtFQmF5QUJjU0VFREFFTElBRWdBa2tFUUNBQklRUU1BUXNnQVNBQ2NDRUVDd0pBSUFSQkFuUWlCQ0FBS0FJQWFpZ0NBQ0lCUlFSQUlBVW9BZ0FnQUNnQ0NEWUNBQ0FBSUFVb0FnQTJBZ2dnQUNnQ0FDQUVhaUFBUVFocU5nSUFJQVVvQWdBaUFTZ0NBQ0lFUlEwQklBUW9BZ1FoQXdKQUlBSWdBa0VCYXlJRWNVVUVRQ0FESUFSeElRTU1BUXNnQWlBRFN3MEFJQU1nQW5BaEF3c2dBQ2dDQUNBRFFRSjBhaUFCTmdJQURBRUxJQVVvQWdBZ0FTZ0NBRFlDQUNBQklBVW9BZ0EyQWdBTElBVW9BZ0FoQXlBRlFRQTJBZ0FnQUNBQUtBSU1RUUZxTmdJTUlBVVFpd0ZCQVFzNkFCd2dCeUFETmdJWUlBVkJFR29rQUNBSEtBSVlJUUFnQjBFZ2FpUUFJQUJCREdvTE1BRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhVQW1vZ0FrRU1haERkRlMwQUFDRUFJQUpCRUdva0FDQUFDNVVIQWdSL0FYMGpBRUhBQVdzaUFTUUFBa0FnQUNnQ0FDSUVLQUlBSWdORkRRQWdBQ2dDQkNFQUlBTW9BZ1FpQTBIUW9CSkdCRUFnQVVFQU5nSVlJQUZDQURjREVDQUJRZ0EzQXdnZ0FVRzRBV29pQWlBQUlBUW9BZ0JDQUJEOUFTQUNFREFFUUNBQlFRaHFRY1d0QlVITUJFRUlJQUZCcUFGcUVCMGlBQkFYSWdKQkdHcEI3N1VJRUE0YUlBSVFHQ0FBRUI0TElBRkJ1QUZxRUJvb0FnQWhBZ3dCQ3lBRFFmQ2ZFa1lFUUNBQlFRQTJBaGdnQVVJQU53TVFJQUZDQURjRENDQUJRYmdCYWlJQ0lBQWdBVUVJYWlBRUtBSUFSQUFBQUFBQUFBQUFFSE1nQWhBd0JFQWdBVUVJYWtIRnJRVkJ6QVJCQ0NBQlFhZ0JhaEFkSWdBUUZ5SUNRUmhxUWUrMUNCQU9HaUFDRUJnZ0FCQWVDeUFCUWJnQmFoQWFLQUlBSVFJTUFRc2dBMEdRcWhKR0JFQWdBVUVBTmdJWUlBRkNBRGNERUNBQlFnQTNBd2dnQVVHNEFXb2lBaUFBSUFRb0FnQkJBQkN4QVNBQ0VEQUVRQ0FCUVFocVFjV3RCVUhNQkVFSUlBRkJxQUZxRUIwaUFCQVhJZ0pCR0dwQjc3VUlFQTRhSUFJUUdDQUFFQjRMSUFGQnVBRnFFQm9vQWdBaEFnd0JDeUFEUWFDekVrWUVRQ0FCUVFBMkFoZ2dBVUlBTndNUUlBRkNBRGNEQ0NBQlFiZ0JhaUlDSUFBZ0JDZ0NBRUVBRUswQklBSVFNQVJBSUFGQkNHcEJ4YTBGUWN3RVFRZ2dBVUdvQVdvUUhTSUFFQmNpQWtFWWFrSHZ0UWdRRGhvZ0FoQVlJQUFRSGdzZ0FVRzRBV29RR2lnQ0FDRUNEQUVMSUFOQnNLa1NSZ1JBSUFGQkFEWUNHQ0FCUWdBM0F4QWdBVUlBTndNSUlBRkJ1QUZxSWdJZ0FDQUJRUWhxSUFRb0FnQkRBQUFBQUJCcklBSVFNQVJBSUFGQkNHcEJ4YTBGUWN3RVFRZ2dBVUdvQVdvUUhTSUFFQmNpQWtFWWFrSHZ0UWdRRGhvZ0FoQVlJQUFRSGdzZ0FVRzRBV29RR2lnQ0FDRUNEQUVMSUFOQjBLZ1NSZ1JBUXdBQUFBQVFSaUVGSUFGQkFEWUNHQ0FCUWdBM0F4QWdBVUlBTndNSUlBRkJ1QUZxSWdJZ0FDQUJRUWhxSUFRb0FnQWdCUkJ5SUFJUU1BUkFJQUZCQ0dwQnhhMEZRY3dFUVFnZ0FVR29BV29RSFNJQUVCY2lBa0VZYWtIdnRRZ1FEaG9nQWhBWUlBQVFIZ3NnQVVHNEFXb1FHaWdDQUNFQ0RBRUxJQU5CMEtVU1J3MEFJQUZCQURZQ0dDQUJRZ0EzQXhBZ0FVSUFOd01JSUFGQnVBRnFJZ0lnQUNBRUtBSUFRUUFRaUFFZ0FoQXdCRUFnQVVFSWFrSEZyUVZCekFSQkNDQUJRYWdCYWhBZElnQVFGeUlDUVJocVFlKzFDQkFPR2lBQ0VCZ2dBQkFlQ3lBQlFiZ0JhaEFhS0FJQUlRSUxJQUZCd0FGcUpBQWdBZ3NWQUNBQVFleVFJRFlDQUNBQVFRUnFFQThhSUFBTEZRQWdBRUhJa0NBMkFnQWdBRUVFYWhBUEdpQUFDeFVBSUFCQnBKQWdOZ0lBSUFCQkJHb1FEeG9nQUFzVkFDQUFRWUNRSURZQ0FDQUFRUVJxRUE4YUlBQUxMUUVCZjBIWnhBTWhBZ0pBQWtBQ1FDQUJRUUZyRGdJQkFBSUxRYXUzQXlFQ0N5QUFRUWhxSUFJUURob0xDeFVBSUFCQjNJOGdOZ0lBSUFCQkJHb1FEeG9nQUFzVkFDQUFRYmlQSURZQ0FDQUFRUVJxRUE4YUlBQUxFZ0FnQUNBQklBSkJ3WThEUWNFcEVJQVRDeFVBSUFCQmxJOGdOZ0lBSUFCQkJHb1FEeG9nQUFzVkFDQUFRZkNPSURZQ0FDQUFRUVJxRUE4YUlBQUxhUUVEZnlNQVFSQnJJZ1FrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ00yQWd3Z0JDQUROZ0lJSUFCQmpBRnFJZ01RdndFaUJTQUFLQUlJSUFRb0FnZ2dBU0FDTFFBQUVPMFZHaUFESUFVUUtDQURJQU1vQWhoQkFXbzJBaGdnQlNFQUlBUkJFR29rQUNBQUN4VUFJQUJCOUl3Z05nSUFJQUJCQkdvUUR4b2dBQXVCQVFFRGZ3SkFBa0FEUUFKQUFrQWdBUzhCSGlJQ1FSeHJEZ01BQUFFREN5QUFJQUZCQVJBYkVDQWhBUXdCQ3d0QkFTRUNBMEFnQWlBQktBSVFJQUVvQWd4clFRUjFJZ1JKSVFNZ0FpQUVUdzBDSUFFZ0FoQWJJUVFnQWtFQmFpRUNJQUFnQUNBRUVDQVE3QlZGRFFBTERBRUxJQUpCN2lsSERRQkJBU0VEQ3lBREMxY0JBWDhqQUVFUWF5SUZKQUFnQlNBQ05nSUFJQVVnQVRZQ0NDQUFJQVVvQWdnZ0JTZ0NBQ0FERUxZT0lnQkIrUHdQTmdJRUlBQkJyUDBQTmdJQUlBQWdCRG9BSkNBQVFaajlEellDQUNBRlFSQnFKQUFnQUF2WEFRRURmd05BQWtBZ0FrVU5BQ0FBSUFFb0FpZ1EzZ0VpQTBFRWFpRUVJQU1vQWdBaEF3TkFJQU1nQkVZTkFTQURLQUlRUVF0R0JFQkJBQThGSUFNUVRDRUREQUVMQUFzQUMwRUFJUVFDUUFKQUlBRXZBUjRpQTBFZVN3MEFRUUVnQTNSQmdJQ0FqQU54RFFFZ0EwRVVSd1JBSUFOQkhrY05BVUVCSVFNRFFDQURJQUVvQWhBZ0FTZ0NER3RCQkhVaUJVa2hCQ0FESUFWUERRSWdBU0FERUJzaEJTQURRUUZxSVFNZ0FDQUFJQVVRSUNBQ0VPNFZSUTBBQ3d3QkMwRUJJUVFMSUFRUEN5QUFJQUZCQVJBYkVDQWhBUXdBQ3dBTCtRSUJCbjhDUUNBQkx3RWVRUjVIRFFBZ0FpOEJIa0VlUncwQUlBRW9BaEFpQkNBQktBSU1JZ1ZySUFJb0FoQWdBaWdDREd0SERRQkJBaUVEQTBBZ0JDQUZhMEVFZFNBRFN3UkFJQU5CQW5RaUJ5QUJLQUlBYWlnQ0FDSUlJQUlvQWdBZ0Iyb29BZ0JIQkVBZ0FDQUFJQWdRSUNBQUlBSW9BZ0FnQjJvb0FnQVFJQkR2RlVVTkF5QUJLQUlNSVFVZ0FTZ0NFQ0VFQ3lBRFFRRnFJUU1NQVFzTEFrQWdBUzhCSGtFZVJnUkFJQUl2QVI1QkhrY05BU0FBSUFFb0FpZ1EzZ0VpQVVFRWFpRUVJQUFnQWlnQ0tCRGVBU0lDUVFScUlRVWdBU2dDQUNFQUEwQWdBQ0FFUmlJR0JFQkJBU0VHREFRTEFrQWdBQ2dDRUVFalJ3MEFJQUlvQWdBaEF3TkFJQU1nQlVZTkFRSkFJQU1vQWhCQkkwWUVRQ0FBS0FJZ0lBTW9BaUJHRFFFTElBTVFUQ0VEREFFTEN5QUFLQUlVS0FJQUlBTW9BaFFvQWdCSERRUUxJQUFRVENFQURBQUxBQXRCbTdNSlFmK1VBa0hwQUVIMW53RVFBQUFMUWNLeUNVSC9sQUpCNndCQjlaOEJFQUFBQ3lBR0Mvc0pBUWwvSXdCQjRBRnJJZ01rQUNBRFFkQUJha0d3dndJZ0EwRVFhaUFCTHdFZUVJRUJFQlFpQkJBMUlBUVFEeG9DUUNBQUlBRW9BaVFRSUNJRUx3RWVRU0JIQkVBZ0EwRVFhaUlDSUFCQmRpQUJFQkFnQWtHaXNBb1FEaG9nQWlBRFFkQUJhaEFTR2lBQ1FaM2JDeEFPR2lBRElBQWdBU2dDS0JBcUlBSWdBeEFTR2lBQ1FZYTlBaEFPR2lBQ0lBUXZBUjRRZ1FFUURob2dBa0g4bHdnUURob2dBeWdDekFFaEJDQURFQThhSUFJUUVRd0JDeUFBSUFRb0FnQW9BZ3dRSUNFSkFrQWdBQ0FBSUFGQkFoQWJJZ1VRSUNnQ0pCQWdJZ0lFUUNBQ0x3RWVRU0JHRFFFTElBTkJFR29pQWlBQVFYWWdBUkFRSUFKQjk4d0xFQTRhSUFNZ0FDQUZFQ29nQWlBREVCSWFJQUpCMzVFS0VBNGFJQUlnQTBIUUFXb1FFaG9nQWtHQ3lRY1FEaG9nQXlnQ3pBRWhCQ0FERUE4YUlBSVFFUXdCQ3lBRUtBSUFLQUlJSUFJb0FnQWlCQ2dDQ0VjRVFDQURRUkJxSWdJZ0FFRjJJQUVRRUNBQ1FhZU9DaEFPR2lBQ0lBTkIwQUZxRUJJYUlBSkJxdWdIRUE0YUlBTW9Bc3dCSVFRZ0FoQVJEQUVMSUFBZ0JDZ0NEQkFnSVFJZ0FTZ0NCQ0lISUFFb0FnQWlCV3RCQW5VaEJBSkFRUVZCQkFKL0FrQUNRQUpBSUFFdkFSNGlCa0hEQUdzT0JBRUFBQUVBQ3lBRVFRUnJJZ1FnQUNnQ0JDZ0NIQ0lJVFEwQkRBTUxJQVJCQldzaUJDQUFLQUlFS0FJY0lnaExEUUlnQmtIR0FFWWdCa0hEQUVaeURBRUxJQVpCeGdCR0N4c2hCQU5BQWtBQ2Z3SkFBa0FnQnlBRmEwRUNkU0FFU3dSQUFrQWdBQ0FBSUFVZ0JFRUNkR29vQWdBUUlDSUZLQUlrRUNBaUJnUkFJQVl2QVI1QkZVWU5BUXNnQTBFUWFpSUNJQUJCZGlBQkVCQWdBa0gwZ3dvUURob2dBaUFEUWRBQmFoQVNHaUFDUVkzS0J4QU9HaUFES0FMTUFTRUVJQUlRRVF3SUN5QUNMd0VlSWdaQkhrc05BVUVCSUFaMFFZQ0FnSXdEY1EwQ0lBWkJIa2NOQVNBRkx3RWVRU3RIQkVBZ0EwRVFhaUlCSUFCQmRpQUZFQkFnQVVHSGhBb1FEaG9nQVNBRFFkQUJhaEFTR2lBQlFhU25CeEFPR2lBREtBTE1BU0VFSUFFUUVRd0lDeUFGS0FJQUtBSU1JZ1lnQWlnQ0JDQUNLQUlBSWdkclFRSjFJZ2hCQW1zaUNra0VRQ0FHUVFKMElBZHFRUWhxREFRTElBTkJFR29pQVNBQVFYWWdCUkFRSUFGQnErd0xFQTRhSUFFZ0EwSFFBV29RRWhvZ0FVR0t4QWtRRGhvZ0FTQUdFQ0VhSUFGQm9NMExFQTRhSUFNZ0FDQUNLQUlvRUNvZ0FTQURFQklhSUFGQjd1TUpFQTRhSUFFZ0NoQWhHaUFCUWNuYkNSQU9HaUFCSUFoQkEyc1FJUm9nQVVIOGx3Z1FEaG9nQXlnQ3pBRWhCQ0FERUE4YUlBRVFFUXdIQzBFQUlRUWdBaWdDS0NBSktBSW9SZzBHSUFOQkVHb2lCU0FBUVhZZ0FSQVFJQVVnQTBIUUFXb1FFaG9nQlVIc3R3SVFEaG9nQlNBSkx3RWVFSUVCRUE0YUlBVkJvYmdDRUE0YUlBVWdBaThCSGhDQkFSQU9HaUFGUWZpWENCQU9HaUFES0FMTUFTRUVJQVVRRVF3R0N5QUdRZTRwUncwQ0N5QUNLQUlBUVFocUN5RUNJQVJCQVdvaEJDQUFJQUlvQWdBUUlDRUNJQUVvQWdBaEJTQUJLQUlFSVFjTUFRc0xJQU5CRUdvaUFpQUFRWFlnQVJBUUlBSWdBMEhRQVdvUUVob2dBa0dTZ1FnUURob2dBeWdDekFFaEJDQUNFQkVNQVFzZ0EwRVFhaUlDSUFCQmRpQUJFQkFnQWtIcmpnb1FEaG9nQWlBRFFkQUJhaEFTR2lBQ1FlN2RDaEFPR2lBQ0lBZ1FJUm9nQWtIc3lnb1FEaG9nQWlBRUVDRWFJQUpCc2JJSEVBNGFJQU1vQXN3QklRUWdBaEFSQ3lBRFFkQUJhaEFQR2lBRFFlQUJhaVFBSUFRTDJSWUJESDhqQUVIQUFXc2lCU1FBSUFFdkFSNGhCQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBS0FKd0RnNEFBQUFBQUFBQUFBQUFBQUFCQVFjTElBUkJERWNOQkFKQUlBRW9BaUFRMFFVRVFDQUJLQUlBS0FJUUlRTUNRQUpBQWtBZ0FTZ0NJRUVJYXc0REFBSUJBZ3RCQVNBRGRFR0FnSUNNQTNGRklBTkJIVXR5RFFZTUJ3c2dBMEVkVFEwQ0RBUUxRUUVnQTNSQmdJQ0FqQU54UlNBRFFSMUxjZzBFREFVTElBRW9BaUFRc0FjaENDQUFLQUp3SVFNZ0NBUkFJQU5CQ2tvTkJpQUZJQUJCZENBQkVCQWdCVUd5NEFrUURob2dCVUdVMXdJUURob2dCU2dDdkFFaEFDQUZFQkVNQndzZ0EwRU1TZzBGSUFVZ0FFRjBJQUVRRUNBRlFRd1FnUUVRRGhvZ0JVSFFuUU1RRGhvZ0JTZ0N2QUVoQUNBRkVCRU1CZ3RCQVNBRGRFR0FnSUNNQTNGRkRRRU1Bd3NqQUVIQUFXc2lBaVFBQWtBQ1FDQUFLQUp3UVF4SERRQWdBQ0FFRU1FTkRRQWdBQkRERlNBQUxRQ2dBMFVOQUNBQUVNc0JRUUlReFEwaUF3MEJDd0pBQWtBQ1FBSkFBa0FDUUNBQUlBUVF3UTBFUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVJCTm1zT0F3RUNBd0FMQWtBQ1FDQUVRUWhyRGdVT0FRRUJCZ0FMSUFSQitBRkdEUVFnQkVHOUFrWU5EUXNnQUNnQ2NFRU1SdzBGSUFBdEFLQURSUTBGSUFJZ0FFRjBJQUVRRUNBQ1FaQ1NBeEFPR2lBQ0tBSzhBU0VESUFJUUVRd05DeUFBTFFDZ0F3UkFJQUlnQUVGMElBRVFFQ0FDUVpBV0VBNGFJQUlvQXJ3QklRTWdBaEFSREEwTElBRkJBaEFiSVFNZ0FTZ0NLQ0VFSUFFb0FpUWhDQ0FCUVFNUUd5RUJJd0JCSUdzaUJpUUFJQVlnQ0RZQ0dDQUdJQVEyQWh3Z0JpQUROZ0lVSUFZZ0FUWUNFQ0FBTFFDZ0F3UkFRWXVnQ1VINHF3SkI5QU5CbHRNQ0VBQUFDeUFBUVFFNkFLQURJQVpCSEdvaEF5QUdRUmhxSVFRZ0JrRVVhaUVJSUFaQkVHb2hDUUpBSUFCQjlBQnFJZ0VvQWdRZ0FTZ0NDRWtFUUNBQlFRaHFJQUVvQWdRaUJ5QURJQVFnQ0NBSkVMWVZJQUVnQjBIRUEybzJBZ1FNQVFzakFFRWdheUlLSkFBZ0FTZ0NCQ0FCS0FJQWEwSEVBMjFCQVdvaUIwRzkrOE1FVHdSQUVBRUFDeUFCUVFocUlnc2dDa0VJYWtHOCs4TUVJQUVvQWdnZ0FTZ0NBR3RCeEFOdElneEJBWFFpRFNBSElBY2dEVWtiSUF4QjN2MmhBazhiSUFFb0FnUWdBU2dDQUd0QnhBTnRJQXNReUJVaUJ5Z0NDQ0FESUFRZ0NDQUpFTFlWSUFjZ0J5Z0NDRUhFQTJvMkFnZ2dBU0FIRU1jVklBY1F4aFVnQ2tFZ2FpUUFDeUFCS0FJRUdpQUdJQUFReXdFMkFnd2dCaUFBUWJBRGFpQURJQVpCREdvUTdnZ2dCa0VnYWlRQVFRQWlBdzBNSUFBb0FuQkJEVWNOQ3lBQUVNc0JRUUlReFEwaUEwVU5Dd3dNQ3lBQUxRQ2dBMFVFUUNBQ0lBQkJkQ0FCRUJBZ0FrRzlGaEFPR2lBQ0tBSzhBU0VESUFJUUVRd01DeUFBRU1zQktBSWtSUTBGSUFJZ0FFRjBJQUVRRUNBQ1FjVEVBaEFPR2lBQ0tBSzhBU0VESUFJUUVRd0xDeUFBTFFDZ0EwVUVRQ0FDSUFCQmRDQUJFQkFnQWtHbUZ4QU9HaUFDS0FLOEFTRURJQUlRRVF3TEN5QUFFSjhHQkVBZ0FpQUFRWFFnQVJBUUlBSkIycXNCRUE0YUlBSW9BcndCSVFNZ0FoQVJEQXNMQWtBZ0FCRExBU2dDSkEwQUlBQW9BbkJCRFVjTkFDQUNJQUJCZENBQkVCQWdBa0dqcmdjUURob2dBaWdDdkFFaEF5QUNFQkVNQ3dzZ0FDZ0NjRUVNUmdSQUlBQVF5d0ZCQVJERkRTSUREUXNMQW44Q1FDQUFMUUNnQXdSQUlBQVFud1lOQVNBQUVNc0JJZ1F0QUJSRkJFQWdCRUVCT2dBVUl3QkJNR3NpQXlRQUlBTkJuSlFnTmdJWUlBTkJ3SlFnTmdJQUlBTWdBMEVZYWlJSU5nSW9JQU1nQXpZQ0VDQUVRWVFDYWlFSEl3QkJvQUZySWdFa0FDQUJJQVJCb0FGcU5nS1lBU0FCSUFSQjBBQnFOZ0tjQVNBQlFZZ0JhaUlKSUFSQkxHb2dBVUh3QUdvZ0NCRFJBU0lHSUFGQjJBQnFJQU1RMFFFaUNoRFJGU0FLRUJZZ0JoQVdJQUZCT0dvZ0FVSElBR29nQkNnQ01DQUVLQUlzRVA0Wklnb2dBVUVnYWlBREVORUJJZ1lnQVVFSWFpQUlFTkVCSWdzUTBSVWdDeEFXSUFZUUZpQUVRZkFCYWlJTElBRkJuQUZxRUlZRklBa1F1QWNnQVNnQ2pBRWhEQ0FCS0FLSUFTRUVBMEFnQkNBTVJnUkFBa0FnQnlBQlFaZ0JhaENHQlNBQlFUaHFFTGdISUFFb0Fqd2hCeUFCS0FJNElRUURRQ0FFSUFkR0RRRWdBU0FFS0FJQU5nSUVJQXNnQVVFRWFoQ0dCU0lKSUFnZ0FTZ0NCQkNLQWlJR0tBSUVJQVlvQWdCclFRSjFRUUZxRUtzRUlBa2dBVUdZQVdvUXp3RWdDU0FKS0FJRUlBWW9BZ0FnQmlnQ0JCRGRDaUFFUVFScUlRUU1BQXNBQ3dVZ0FTQUVLQUlBTmdJRUlBY2dBVUVFYWhDR0JTSUpJQU1nQVNnQ0JCQ0tBaUlHS0FJRUlBWW9BZ0JyUVFKMVFRRnFFS3NFSUFrZ0FVR2NBV29RendFZ0NTQUpLQUlFSUFZb0FnQWdCaWdDQkJEZENpQUVRUVJxSVFRTUFRc0xJQUZCT0dvUU1ob2dDaEF5R2lBQlFZZ0JhaEF5R2lBQlFhQUJhaVFBSUFNUUZpQUlFQllnQTBFd2FpUUFDeUFBUVFBNkFLQURRUUFNQWd0Qmg2RUpRZmlyQWtHQ0JFR082Z1FRQUFBTFFhYWxDVUg0cXdKQmhRUkJqdW9FRUFBQUN5SURSUTBKREFvTElBQXRBS0FEUlFSQUlBSWdBRUYwSUFFUUVDQUNRZmdXRUE0YUlBSW9BcndCSVFNZ0FoQVJEQW9MSUFBUW53WkZEUWdnQWlBQVFYUWdBUkFRSUFKQjZkTUhFQTRhSUFJb0Fyd0JJUU1nQWhBUkRBa0xJQUVvQWlBUTBRVUVRQ0FCS0FJQUtBSVFJUU1DUUFKQUFrQWdBU2dDSUVFSWF3NERBQUlCQWd0QkFTQURkRUdBZ0lDTUEzRkZJQU5CSFV0eURRZ01DUXNnQTBFZFRRMEZEQVlMUVFFZ0EzUkJnSUNBakFOeFJTQURRUjFMY2cwR0RBY0xJQUVvQWlBUXNBY0VRQ0FBS0FKd1FRcE1CRUFnQWlBQVFYUWdBUkFRSUFKQnN1QUpFQTRhSUFKQmxOY0NFQTRhSUFJb0Fyd0JJUU1nQWhBUkRBb0xJQUF0QUtBRFJRMElJQUFRbndZTkNDQUNJQUJCZENBQkVCQWdBa0dmblFNUURob2dBaWdDdkFFaEF5QUNFQkVNQ1FzZ0FCQ2ZCZzBISUFJZ0FFRjBJQUVRRUNBQ1FRd1FLUkFPR2lBQ1FkQ2RBeEFPR2lBQ0tBSzhBU0VESUFJUUVRd0lDeUFBRUo4R0RRWWdBaUFBUVhRZ0FSQVFJQUlnQkJBcEVBNGFJQUpCMEowREVBNGFJQUlvQXJ3QklRTWdBaEFSREFjTElBSWdBRUYwSUFFUUVDQUNJQVFRS1JBT0dpQUNRYlRkQWhBT0dpQUNLQUs4QVNFRElBSVFFUXdHQ3lBQUVNc0JJUUFnQVNnQ0tCb2dBU2dDSkJvZ0FDZ0NUQVJBUWF5a0NVR1NxZ0pCUEVIazRnRVFBQUFMUVFBaUF3MEZEQVFMUVFFZ0EzUkJnSUNBakFOeERRSUxJQU5CNVFCcklnTkJBMHNOQUNBRFFRRkhEUUVMSUFBb0FuQkJDMDRFUUNBQUtBSndRUXhJRFFJTElBSWdBRUYwSUFFUUVDQUNRZEdTQ2hBT0dpQUNRZHUxQ2hBT0dpQUNRWS9uREJBT0dpQUNRZWVHQ2hBT0dpQUNRWmVnQ0JBT0dpQUNLQUs4QVNFRElBSVFFUXdDQ3lBQUxRQ2dBdzBBSUFJZ0FFRjBJQUVRRUNBQ1FkdTFDaEFPR2lBQ1FZMklDaEFPR2lBQ1FlSVhFQTRhSUFJb0Fyd0JJUU1nQWhBUkRBRUxRUUFoQXdzZ0FrSEFBV29rQUNBRElRQU1CQXNnQTBIbEFHc2lBMEVEU3cwQUlBTkJBVWNOQVFzZ0FDZ0NjRUVMVGdSQUlBQW9BbkJCREVnTkFnc2dCU0FBUVhRZ0FSQVFJQVZCMFpJS0VBNGFJQVZCMjdVS0VBNGFJQVZCaitjTUVBNGFJQVZCNTRZS0VBNGFJQVZCbDZBSUVBNGFJQVVvQXJ3QklRQWdCUkFSREFJTElBQXRBS0FERFFBZ0JTQUFRWFFnQVJBUUlBVkIyN1VLRUE0YUlBVkJqWWdLRUE0YUlBVkI0aGNRRGhvZ0JTZ0N2QUVoQUNBRkVCRU1BUXNnQkVFT1JpRURBMEFnQUNBRUVNRU5EUUlnQUNnQ2NDQUVFTUlWSUFBb0FuQklCRUFnQlNBQVFYUWdBUkFRSUFVZ0JCQ0JBUkFPR2lBRlFmdldBaEFPR2lBRktBSzhBU0VBSUFVUUVRd0NDeUFBRU1NVklBQW9BbkFpQ0VFRFJ3UkFJQWhCREVjTkFTQUFJQUVROFJVaEFBd0NDeUFERFFBTElBVWdBRUYwSUFFUUVDQUZJQVFRZ1FFUURob2dCVUhpeGdJUURob2dCU2dDdkFFaEFDQUZFQkVMSUFBTkFRdEJBQ0VBQ3lBRlFjQUJhaVFBSUFBTFd3RUNmeU1BUWJBQmF5SURKQUFnQXlBRFFTQnFFSWdESWdRMkFoQWdBeUFDTmdJTUlBTkIwSXdnTmdJSUlBTWdBMEVJYWlJQ05nSVlJQUVnQWhEV0NpQUNFQllnQUNBRVFReHFFRUlnQkJDN0Fob2dBMEd3QVdva0FBdTFDQUVHZnlNQVFaQUNheUlHSkFBQ1FBSkFBa0FDUUFKQUlBTW9BZ1FpQlVFWGF3NEhBUU1EQXdNQUFnTUxRUUVnQkhSQkduRkZJQVJCQkV0eURRSU1Bd3NnQUMwQW93TkZEUUVNQWdzZ0JFRUNTdzBBSUFBdEFLVUREUUVMSUFaQkFEWUNHQ0FHUWdBM0F4QWdCa0VBTmdJTUlBWkJHR29oQ2dKQUlBQkJnQU5xSWdjZ0JTQUVJQVpCREdvUTNRSU5BQ0FHS0FJTUlRVUNRQUpBSUFNb0FnUkJHMGNOQUNBRktBSUVRU2RIRFFBZ0FDMEFvd01OQWlBQUtBSUFLQUlBRUVkRkRRRWdCa0VRYWlJRFFkRWlFTkFFSUFOQjBpSVEwQVFnQTBIVEloRFFCQ0FEUWRRaUVOQUVEQUVMSUFaQjBBQnFJZ01nQnlBRktBSU1JQVVvQWdnUW5SY2dCa0VRYWlJRklBTkhCRUFnQlNBREtRTUFOd01BSUFWQkNHb2dBeWdDQ0NJREJIOUJEQkFWSUFNUXJRb0ZRUUFMRU5rT0N5QUdRZGdBYWhERkF3c0NRQ0FCTHdFZVFSRkdEUUFnQUNBR1FSQnFFTDRWSVFNQ1FDQUdLUU1RVUFSQUlBWW9BaGdpQlVVTkFpQURJQVVvQWdoRmNrVU5BUXdDQ3lBRERRRUxJQVpCMEFCcUlnTWdBRUZ6SUFFUUVDQURRYlBOQ2hBT0dpQURJQUlRSVJvZ0EwSEVzUW9RRGhvZ0F5QUJMd0VlRUlFQkVBNGFJQU5CMStzTEVBNGFJQVpCUUdzaUFDQUdRUkJxSUFjUThoVWdBeUFBRUJJYUlBWW9Bb3dDSVFrZ0FCQVBHaUFERUJFTUFRc2dCaWdDRENJREtBSmNJUWNnQXlnQ1dDSUlRWDlHSUFBb0FoUWlCU0FJU1hKRklBVWdCMDF4RFFBZ0JTQUhTd1JBSUFaQjBBQnFJZ1VnQUVGd0lBRVFFQ0FHUVVCcklnZ2dBaERQRFNBRklBZ1FFaG9nQlVIaXNBb1FEaG9nQlNBQkx3RWVFSUVCRUE0YUlBVkJxTTBLRUE0YUlBVWdBeENOQkNJQVFabi9DQkFPR2lBQUlBUVFJUm9nQUVHNWlnb1FEaG9nQUNBSFFSQjJRZjhCY1JBaEdpQUFRZnlYQ0JBT0dpQUFJQWRCQ0haQi93RnhFQ0VhSUFCQjBlc0JFQTRhSUFBb0Fyd0JJUWtnQ0JBUEdpQUZFQkVNQVFzZ0F5Z0NFQ0lGSUFoQmYwWnlSUVJBSUFaQjBBQnFJZ1VnQUVGd0lBRVFFQ0FHUVVCcklnY2dBaERQRFNBRklBY1FFaG9nQlVIaXNBb1FEaG9nQlNBQkx3RWVFSUVCRUE0YUlBVkJxTTBLRUE0YUlBVWdBeENOQkNJQVFabi9DQkFPR2lBQUlBUVFJUm9nQUVHNWlnb1FEaG9nQUNBSVFSQjJRZjhCY1JBaEdpQUFRZnlYQ0JBT0dpQUFJQWhCQ0haQi93RnhFQ0VhSUFCQmp1VUJFQTRhSUFBb0Fyd0JJUWtnQnhBUEdpQUZFQkVNQVFzZ0FDQUdRVUJySUFVZ0F5Z0NGQkRFQ0NJSEVNQU5SUVJBSUFaQjBBQnFJZ1VnQUVGeElBRVFFQ0FHUVRCcUlnZ2dBaERQRFNBRklBZ1FFaG9nQlVIaXNBb1FEaG9nQlNBQkx3RWVFSUVCRUE0YUlBVkJxTTBLRUE0YUlBVWdBeENOQkNJQVFabi9DQkFPR2lBQUlBUVFJUm9nQUVHVTZRc1FEaG9nQmtFZ2FpSUJJQWNRaFE0Z0FDQUJFQklhSUFBb0Fyd0JJUWtnQVJBUEdpQUlFQThhSUFVUUVRc2dCMEVJYWhERkF3c2dDaERGQXdzZ0JrR1FBbW9rQUNBSkM3OENBUWgvUVFFaEJRSkFBa0FDUUFKQUFrQUNRQ0FCSUFCclFRSjFEZ1lGQlFBQkFnTUVDeUFCUVFScklnRW9BZ0FpQXlnQ0FDQUFLQUlBSWdJb0FnQlBEUVFnQUNBRE5nSUFJQUVnQWpZQ0FFRUJEd3NnQUNBQVFRUnFJQUZCQkdzUW53Y2FRUUVQQ3lBQUlBQkJCR29nQUVFSWFpQUJRUVJyRU5FTkdrRUJEd3NnQUNBQVFRUnFJQUJCQ0dvZ0FFRU1haUFCUVFSckVOQU5Ha0VCRHdzZ0FDQUFRUVJxSUFCQkNHb2lCQkNmQnhvZ0FFRU1haUVDQTBBZ0FTQUNSZzBCSUFJaEF3SkFJQUlvQWdBaUNDZ0NBQ0lKSUFRb0FnQWlCeWdDQUVrRVFBTkFBa0FnQXlBSE5nSUFJQUFnQkNJRFJnUkFJQUFoQXd3QkN5QUpJQU5CQkdzaUJDZ0NBQ0lIS0FJQVNRMEJDd3NnQXlBSU5nSUFJQVpCQVdvaUJrRUlSZzBCQ3lBQ0lnUkJCR29oQWd3QkN3c2dBa0VFYWlBQlJpRUZDeUFGQzd3Q0FRdC9Ba0FnQVVFQ1NBMEFJQUZCQW10QkFYWWlDeUFDSUFCcklnTkJBblZJRFFBZ0FDQURRUUYxSWdOQkFXb2lCa0VDZEdvaUJDZ0NBQ0VGQW44Z0FTQURRUUpxSWdsTUJFQWdCU2dDQUF3QkN5QUVRUVJxSUFRZ0JTZ0NBQ0lESUFRb0FnUWlDaWdDQUNJSFNTSUlHeUVFSUFvZ0JTQUlHeUVGSUFrZ0JpQUlHeUVHSUFNZ0J5QURJQWRMR3dzaEF5QURJQUlvQWdBaUNTZ0NBQ0lLU1EwQUEwQUNRQ0FFSVFNZ0FpQUZOZ0lBSUFZZ0Mwb05BQ0FBSUFaQkFYUWlBa0VCY2lJR1FRSjBhaUlFS0FJQUlRVUNmeUFCSUFKQkFtb2lERXdFUUNBRktBSUFEQUVMSUFSQkJHb2dCQ0FGS0FJQUlnSWdCQ2dDQkNJTktBSUFJZ2RKSWdnYklRUWdEU0FGSUFnYklRVWdEQ0FHSUFnYklRWWdBaUFISUFJZ0Iwc2JDeUVISUFNaEFpQUhJQXBQRFFFTEN5QURJQWsyQWdBTEN3b0FJQUJCK0pzU0VFZ0xwd0VCQW44akFFSEFBV3NpQXlRQUFrQWdBaWdDQkNJRVFRUk5JQVJCQTBkeFJRUkFJQU1nQUVGeUlBRVFFQ0FEUWFQMEFCQU9HaUFES0FLOEFTRUNJQU1RRVF3QkN5QUNLQUlRQkVBZ0F5QUFRWElnQVJBUUlBTkI2WThIRUE0YUlBTW9BcndCSVFJZ0F4QVJEQUVMSUFJb0FneEZCRUJCQUNFQ0RBRUxJQU1nQUVGeUlBRVFFQ0FEUVltUEJ4QU9HaUFES0FLOEFTRUNJQU1RRVFzZ0EwSEFBV29rQUNBQ0M3UUJBUUovSXdCQjBBRnJJZ01rQUFKQUFrQWdBQ0FBSUFGQkJCQW1JZ1FRZHdSQUlBQWdCQkErUVNCR0RRRUxJQU5CRUdvaUFpQUFRWElnQVJBUUlBSkI5Zk1ERUE0YUlBTW9Bc3dCSVFRZ0FoQVJEQUVMUVFBaEJDQUFLQUlBS0FJQUVFZEZEUUFnQWlnQ0JFRUNSdzBBSUFOQkVHb2lBaUFBUVhJZ0FSQVFJQU1nQUVHcEpSQTNJQUlnQXhBU0dpQUNRWVA1QWhBT0dpQURLQUxNQVNFRUlBTVFEeG9nQWhBUkN5QURRZEFCYWlRQUlBUUxDZ0FnQUVIWWtSSVFTQXU0QWdFRGZ5TUFRY0FCYXlJREpBQUNRQUpBQWtBZ0FpZ0NGQ0lFRGdNQ0FRQUJDd0pBQWtBQ1FBSkFJQUlvQWdRaUJRNEdBQU1EQXdFQ0F3c2dBQzBBaFFGQkVIRU5BaUFESUFCQmNpQUJFQkFnQTBIc3hRUVFEaG9nQXlnQ3ZBRWhCQ0FERUJFTUJBc2dBQzBBaEFGQkVIRU5BU0FESUFCQmNpQUJFQkFnQTBINHhBUVFEaG9nQXlnQ3ZBRWhCQ0FERUJFTUF3c2dBQzBBaFFGQmdBRnhEUUFnQXlBQVFYSWdBUkFRSUFOQnNjVUVFQTRhSUFNb0Fyd0JJUVFnQXhBUkRBSUxRUUFoQkNBRlFRTkhEUUVnQWlnQ0RFRUJSdzBCSUFBdEFJUUJRUVJ4RFFFZ0F5QUFRWElnQVJBUUlBTkJ4dFFKRUE0YUlBTkJqc2NFRUE0YUlBTW9BcndCSVFRZ0F4QVJEQUVMSUFNZ0FFRnlJQUVRRUNBRFFkU0JCeEFPR2lBREtBSzhBU0VFSUFNUUVRc2dBMEhBQVdva0FDQUVDejRCQVg4Q1FDQUFRZGNBYXlJQlFRWk5RUUJCQVNBQmRFSFZBSEViRFFBZ0FFR3hBbXNpQUVFR1RVRUFRUUVnQUhSQjFRQnhHdzBBUVFBUEMwRUJDeXdBQTBBQ1FDQUFJQUZIQkg4Z0FFRVFhaUFDRUxFSVJRMEJJQUFGSUFFTER3c2dBQkJNSVFBTUFBc0FDd3NBSUFBZ0FTQUNFSndUQ3hnQUlBRkJ4WjJ4SjA4RVFCRDdBUUFMSUFGQk5Hd1FGUXNhQUNBQUlBRkI0czdZRTBFMFFjU2RzU2RCeFoyeEp4RFNEQXM3QVFKL1FRTWhBaUFBSVFNZ0FVRURUd1JBUVg4Z0FVRUNkQ0FCUWYvLy8vOERTeHNRRlNFRElBRWhBZ3NnQUNBRE5nSU1JQUFnQWpZQ0ZBdDFBUUYvSXdCQmtBRnJJZ01rQUNBRFFRQTJBb3dCQWtBQ1FDQUJRWUFEYWtFSklBSW9BZ0FvQWhBZ0EwR01BV29Rd1FoRkJFQWdBeWdDakFFTkFRc2dBRUcrTHhBVUdnd0JDeUFERU00QklnRWdBeWdDakFFb0FnQVFEaG9nQUNBQlFRUnFFRUlnQVJDN0FSb0xJQU5Ca0FGcUpBQUxUZ0VCZndKQUlBQWdBUkFnSWdCRkRRQWdBQzhCSGtFVlJ3MEFBa0FnQWdSQUlBQkJBUkFiSWdGQklFWWhCQ0FCUVNCSERRSU1BUXRCQVNFRUN5QURSUTBBSUFCQkFoQWJSU0VFQ3lBRUN3NEFJQUFnQVJBZ0tBSUFLQUlNQzZnREFRTi9Ba0FDUUFKQUFrQWdBZzREQXdJQkFBc2dBa0VJVEFSQUlBQWdBVVlOQXlBRElnSWhCQU5BSUFRaEJTQUNJQUFpQmlrQ0FEY0NBQ0FBUVFocUlnQWdBVVlOQkNBRlFRaHFJUVFnQkNFQ0lBWW9BZ3dnQlNnQ0JFOE5BQU5BSUFJZ0JTSUNLUUlBTndJQUlBSWdBMFlFUUNBRElRSU1BZ3NnQmlnQ0RDQUNRUVJyS0FJQVR3MEJJQUpCQ0dzaEJRd0FDd0FMQUFzZ0FDQUFJQUpCQVhZaUJrRURkQ0lGYWlJRUlBWWdBeUFHRUxBSUlBUWdBU0FDSUFacklnSWdBeUFGYWlBQ0VMQUlJQVFoQWdOQUlBQWdCRVlFUUFOQUlBRWdBa1lOQlNBRElBSXBBZ0EzQWdBZ0EwRUlhaUVESUFKQkNHb2hBZ3dBQ3dBTElBRWdBa1lFUUFOQUlBQWdCRVlOQlNBRElBQXBBZ0EzQWdBZ0EwRUlhaUVESUFCQkNHb2hBQXdBQ3dBRkFrQWdBaWdDQkNBQUtBSUVTUVJBSUFNZ0Fpa0NBRGNDQUNBQ1FRaHFJUUlNQVFzZ0F5QUFLUUlBTndJQUlBQkJDR29oQUFzZ0EwRUlhaUVEREFFTEFBc0FDeUFESUFGQkNHc2lBaUFBSUFJb0FnUWdBQ2dDQkVraUFSc3BBZ0EzQWdBZ0FDQUNJQUViSVFBZ0EwRUlhaUVEQ3lBRElBQXBBZ0EzQWdBTEN6WUJBWDhnQVVFQVNBUkFFQUVBQ3lBQlFRRnJRUVYyUVFGcUlnRVFsd01oQWlBQUlBRTJBZ2dnQUVFQU5nSUVJQUFnQWpZQ0FBczVBUUovSUFBb0FnZ2hBU0FBS0FJRUlRSURRQ0FCSUFKSEJFQWdBQ0FCUVFocklnRTJBZ2dNQVFzTElBQW9BZ0FpQUFSQUlBQVFId3NMWHdFQmZ5QUFRUUEyQWd3Z0FDQUROZ0lRQWtBZ0FRUkFJQUZCZ0lDQWdBSlBEUUVnQVVFRGRCQVZJUVFMSUFBZ0JEWUNBQ0FBSUFRZ0FrRURkR29pQWpZQ0NDQUFJQVFnQVVFRGRHbzJBZ3dnQUNBQ05nSUVJQUFQQ3hEN0FRQUx3UllDRG44Q2ZpTUFRZEFBYXlJSUpBQUNRQ0FCSUFBb0FnUWlCRXNFUUFKQUlBQW9BZ2hCQlhRaUF5QUJJQVJySWhCSklBUWdBeUFRYTB0eVJRUkFJQUFnQVRZQ0JDQUVRUjl4SVFFZ0FDZ0NBQ0FFUVFOMlFmei8vLzhCY1dvaEJBd0JDeUFJUVFBMkFrZ2dDRUlBTndOQUlBaEJRR3NoRFFKL0lBRkJBRTRFUUNBQUtBSUlJZ1JCQlhSQi92Ly8vd05OQkg4Z0JFRUdkQ0lFSUFGQkgycEJZSEVpQVNBQklBUkpHd1ZCLy8vLy93Y0xEQUVMRUFFQUN5RUJJd0JCSUdzaUJ5UUFBa0FDUUNBQklBMG9BZ2hCQlhSTEJFQWdBVUVBU0EwQklBZEJBRFlDR0NBSFFnQTNBeEFnQjBFUWFpSUxJQUVRaFJZZ0RTZ0NBQ0VCSUFkQkFEWUNEQ0FISUFFMkFnZ2dCeUFOS0FJRUlnUkJIM0UyQWdRZ0J5QUJJQVJCQTNaQi9QLy8vd0Z4YWpZQ0FDTUFRU0JySWdFa0FDQUxJQWNvQWdRaUJTQUxLQUlFSWdRZ0J5Z0NEQ0lHYTJvZ0J5Z0NBQ0lKSUFjb0FnZ2lDbXRCQTNScUlnTTJBZ1FnQkVFQUlBTkJBV3NnQkVFQmEzTkJJRWtiUlFSQUlBc29BZ0FnQTBFQmEwRUZka0VBSUFOQklVOGJRUUowYWtFQU5nSUFDeUFCSUFZMkFod2dBU0FLTmdJWUlBRWdCVFlDRkNBQklBazJBaEFnQ3lnQ0FDRURJQUVnQkVFZmNUWUNEQ0FCSUFNZ0JFRURka0g4Ly8vL0FYRnFOZ0lJSXdCQk1Hc2lBeVFBSUFFb0FoZ2hCUUpBSUFFb0Fod2lCQ0FCS0FJTUlnWkdCRUFnQXlBRU5nSXNJQU1nQlRZQ0tDQURJQUVvQWhBMkFpQWdBeUFCS0FJVU5nSWtJQUVvQWdnaEJTQURJQVEyQWh3Z0F5QUZOZ0lZQWtBZ0F5Z0NKQ0FES0FJc0lnVnJJQU1vQWlBZ0F5Z0NLQ0lHYTBFRGRHb2lCRUVBVEFSQUlBTW9BaGdoQlF3QkN5QUZCRUFnQXlnQ0dDSUpJQWtvQWdCQmZ5QUZkRUYvUVNBZ0JXc2lCU0FFSUFVZ0JDQUZTQnNpQld0MmNTSUtRWDl6Y1NBR0tBSUFJQXB4Y2pZQ0FDQURJQU1vQWh3Z0JXb2lCa0VmY1RZQ0hDQURJQWtnQmtFRGRrSDgvLy8vQVhGcU5nSVlJQU1nQXlnQ0tFRUVhaUlHTmdJb0lBUWdCV3NoQkFzZ0F5Z0NHQ0FHSUFSQklHMGlDVUVDZENJR0VPY0JHaUFESUFNb0FoZ2dCbW9pQlRZQ0dDQUVJQWxCQlhScklnUkJBRXdOQUNBRElBTW9BaWdnQm1vaUJqWUNLQ0FES0FJWUlnVWdCU2dDQUVGL1FTQWdCR3QySWdsQmYzTnhJQVlvQWdBZ0NYRnlOZ0lBSUFNZ0JEWUNIQXNnQVNBRk5nSUFJQUVnQXlnQ0hEWUNCQXdCQ3lBRElBUTJBaFFnQXlBRk5nSVFJQU1nQVNnQ0VEWUNDQ0FESUFFb0FoUTJBZ3dnQVNnQ0NDRUVJQU1nQmpZQ0JDQURJQVEyQWdBQ1FDQURLQUlNSUFNb0FoUWlCR3NnQXlnQ0NDQURLQUlRSWdWclFRTjBhaUlHUVFCTUJFQWdBeWdDQkNFRURBRUxBa0FnQkVVRVFDQURLQUlFSVFRTUFRc2dBeWdDQUNJUElBOG9BZ0JCZjBFZ0lBTW9BZ1FpQ1dzaURDQU1JQVpCSUNBRWF5SU9JQVlnRGtnYklnb2dDaUFNU3hzaURHdDJRWDhnQ1hSeFFYOXpjU0FGS0FJQVFYOGdCSFJCZnlBT0lBcHJkbkZ4SWc0Z0NTQUVhM1FnRGlBRUlBbHJkaUFFSUFsSkczSTJBZ0FnQXlBSklBeHFJZ1ZCSDNFaUJEWUNCQ0FESUE4Z0JVRURka0g4Ly8vL0FYRnFJZ2syQWdBZ0NpQU1heUlGUVFCS0JFQWdDU0FKS0FJQVFYOUJJQ0FGYTNaQmYzTnhJQTRnQXlnQ0ZDQU1hblp5TmdJQUlBTWdCVFlDQkNBRklRUUxJQVlnQ21zaEJpQURJQU1vQWhCQkJHb2lCVFlDRUF0QklDQUVheUVKUVg4Z0JIUWlERUYvY3lFUEEwQWdCa0VnVGdSQUlBTW9BZ0FpQ2lBS0tBSUFJQTl4SUFVb0FnQWlCU0FFZEhJMkFnQWdBeUFLUVFScU5nSUFJQW9nQ2lnQ0JDQU1jU0FGSUFsMmNqWUNCQ0FESUFNb0FoQkJCR29pQlRZQ0VDQUdRU0JySVFZTUFRc0xJQVpCQUV3TkFDQURLQUlBSWdvZ0NpZ0NBRUYvSUFrZ0NTQUdJQVlnQ1VvYklnbHJkaUFNY1VGL2MzRWdCU2dDQUVGL1FTQWdCbXQyY1NJTUlBUjBjallDQUNBRElBUWdDV29pQlVFZmNTSUVOZ0lFSUFNZ0NpQUZRUU4yUWZ6Ly8vOEJjV29pQ2pZQ0FDQUdJQWxySWdWQkFFd05BQ0FLSUFvb0FnQkJmMEVnSUFWcmRrRi9jM0VnRENBSmRuSTJBZ0FnQXlBRk5nSUVJQVVoQkFzZ0F5Z0NBQ0VGSUFFZ0JEWUNCQ0FCSUFVMkFnQUxJQU5CTUdva0FDQUJRU0JxSkFBZ0RTZ0NBQ0VCSUEwZ0J5Z0NFRFlDQUNBSElBRTJBaEFnRFNnQ0JDRUJJQTBnQnlnQ0ZEWUNCQ0FISUFFMkFoUWdEU2dDQ0NFQklBMGdCeWdDR0RZQ0NDQUhJQUUyQWhnZ0N4QzBDZ3NnQjBFZ2FpUUFEQUVMRUFFQUN5QUlJQUFvQWdRaUFTQVFhallDUkNBQUtBSUFJUVFnQ0VFQU5nSTBJQWdnQkRZQ01DQUlJQUZCSDNFMkFpd2dDQ0FFSUFGQkEzWkIvUC8vL3dGeGFqWUNLQ0FJUVFBMkFpUWdDQ0FJS0FKQU5nSWdJQWdnQ0NrRE1EY0RFQ0FJSUFncEF5ZzNBd2dqQUVIUUFHc2lBeVFBSUFncEFoQWhFUUpBSUFnb0FoUWlBU0FJS0FJa0lnUkdCRUFnQXlBUk53TklJQU1nQ0NrQ0NDSVNOd05BSUFnb0FpQWhCQ0FESUFFMkFqd2dBeUFFTmdJNElBTWdFVGNEQ0NBRElCSTNBd0FDUUNBREtBSUVJQU1vQWd3aUFXc2dBeWdDQUNBREtBSUlJZ1ZyUVFOMGFpSUVRUUJNQkVBZ0F5Z0NPQ0VCREFFTEFrQWdBVVVFUUNBREtBSTRJUUVNQVFzZ0F5Z0NPQ0lISUFjb0FnQkJmeUFCZEVGL1FTQWdBV3NpQVNBRUlBRWdBU0FFU2hzaUJtdDJjU0lCUVg5emNTQUZLQUlBSUFGeGNqWUNBQ0FESUFNb0Fqd2dCbW9pQVVFZmNUWUNQQ0FESUFjZ0FVRURka0g4Ly8vL0FYRnFJZ0UyQWpnZ0JDQUdheUVFSUFWQkJHb2hCUXNnQVNBRklBUkJJRzBpQmtFQ2RDSUhFT2NCR2lBRElBTW9BamdnQjJvaUFUWUNPQ0FFSUFaQkJYUnJJZ1JCQUV3TkFDQUJJQUVvQWdCQmYwRWdJQVJyZGlJR1FYOXpjU0FGSUFkcUtBSUFJQVp4Y2pZQ0FDQURJQVEyQWp3TElBZ2dBVFlDT0NBSUlBTW9BancyQWp3TUFRc2dBeUFSTndNd0lBTWdDQ2tDQ0NJU053TW9JQWdvQWlBaEFTQURJQVEyQWlRZ0F5QUJOZ0lnSUFNZ0VUY0RHQ0FESUJJM0F4QUNRQ0FES0FJVUlBTW9BaHdpQkdzZ0F5Z0NFQ0FES0FJWUlnVnJRUU4wYWlJQlFRQk1CRUFnQXlnQ0pDRUVEQUVMUVNBQ2Z5QUVSUVJBSUFNb0FpUU1BUXNnQXlnQ0lDSUpJQWtvQWdCQmYwRWdJQU1vQWlRaUIyc2lDeUFMSUFGQklDQUVheUlLSUFFZ0NrZ2JJZ1lnQmlBTFN4c2lDMnQyUVg4Z0IzUnhRWDl6Y1NBRktBSUFRWDhnQkhSQmZ5QUtJQVpyZG5GeElnb2dCeUFFYTNRZ0NpQUVJQWRyZGlBRUlBZEpHM0kyQWdBZ0F5QUhJQXRxSWdkQkgzRWlERFlDSkNBRElBa2dCMEVEZGtIOC8vLy9BWEZxSWdrMkFpQWdBU0FHYXlFQklBVkJCR29oQlNBR0lBdHJJZ2RCQUVvRWZ5QUpJQWtvQWdCQmYwRWdJQWRyZGtGL2MzRWdDaUFFSUF0cWRuSTJBZ0FnQXlBSE5nSWtJQWNGSUF3TEN5SUVheUVIUVg4Z0JIUWlDMEYvY3lFSkEwQWdBVUVnVGdSQUlBTW9BaUFpQmlBR0tBSUFJQWx4SUFVb0FnQWlDaUFFZEhJMkFnQWdBeUFHUVFScU5nSWdJQVlnQmlnQ0JDQUxjU0FLSUFkMmNqWUNCQ0FGUVFScUlRVWdBVUVnYXlFQkRBRUxDeUFCUVFCTURRQWdBeWdDSUNJR0lBWW9BZ0FnQzBGL0lBY2dCeUFCSUFFZ0Iwb2JJZ2RyZG5GQmYzTnhJQVVvQWdCQmYwRWdJQUZyZG5FaUN5QUVkSEkyQWdBZ0F5QUVJQWRxSWdWQkgzRWlCRFlDSkNBRElBWWdCVUVEZGtIOC8vLy9BWEZxSWdVMkFpQWdBU0FIYXlJQlFRQk1EUUFnQlNBRktBSUFRWDlCSUNBQmEzWkJmM054SUFzZ0IzWnlOZ0lBSUFNZ0FUWUNKQ0FCSVFRTElBTW9BaUFoQVNBSUlBUTJBandnQ0NBQk5nSTRDeUFEUWRBQWFpUUFJQWdvQWp3aEFTQUlLQUk0SVFRZ0FDZ0NBQ0VESUFBZ0NDZ0NRRFlDQUNBSUlBTTJBa0FnQUNnQ0JDRURJQUFnQ0NnQ1JEWUNCQ0FJSUFNMkFrUWdBQ2dDQ0NFRElBQWdDQ2dDU0RZQ0NDQUlJQU0yQWtnZ0RSQzBDZ3NnQ0NBQk5nSWNJQWdnQkRZQ0dDQUlRUmhxSUJBZ0FoRGJEUXdCQ3lBQUlBRTJBZ1FMSUFoQjBBQnFKQUFMRFFBZ0FCQ3ZBU0FBTFFEUUFndDlBUU4vSXdCQklHc2lBeVFBSUFCQkFEWUNDQ0FBUWdBM0FnQWdBMEVRYWlBQklBSVF5UVVnQXlnQ0ZDRUVJQU1vQWhBaEFRTkFJQUVnQkVjRVFDQURJQUVvQWdBaUJUWUNEQ0FDSUFVUUlDOEJIa0VlUmdSQUlBQWdBMEVNYWhEZUFnc2dBVUVFYWlFQkRBRUxDeUFEUVJCcUVESWFJQU5CSUdva0FBdkVBd0VFZnlNQVFUQnJJZ0lrQUNBQklBQVFJQ0VESUFKQkFEWUNLQ0FDUWdBM0F5QWdBa0VBTmdJWUlBSkNBRGNERUFKQUFrQUNRQUpBQWtBZ0F5OEJIa0VjYXc0REFRRUFBZ3NnQWlBQUlBRVF5UVVnQWtFUWFpQUNFTzBGSUFJUU1ob2dBa0VnYWlBQ0tBSVVJQUlvQWhCclFRSjFRUUFRaUJZZ0FTQUFFTjRCSWdCQkJHb2hCQ0FBS0FJQUlRQURRQ0FBSUFSR0RRSUNRQ0FBS0FJUVFTTkhEUUFnQUNnQ0lDSURRWDlHRFFBZ0FDZ0NGQ2dDQUVGL1JnMEVJQUlvQWlBZ0EwRURka0g4Ly8vL0FYRnFJZ1VnQlNnQ0FFRUJJQU4wY2pZQ0FBc2dBQkJNSVFBTUFBc0FDeUFDUVNCcVFRRkJBUkNJRmlBQ0lBTkJBUkFiTmdJQUlBSkJFR29nQWhEZkFnc2dBaWdDRkNFRElBSW9BaEFoQUFOQUlBQWdBMGNFUUNBQUtBSUFJUVFnQUVFRWFpRUFJQVFnQVJDTEZrVU5BUXdDQ3dzZ0FpZ0NKQ0lBUVI5eElRUWdBaWdDSUNJRElBQkJBM1pCL1AvLy93RnhhaUVGUVFBaEFBTkFJQU1nQlVjZ0FDQUVSM0lpQVVVTkFpQURLQUlBSUFCMlFRRnhSUTBDUVFBZ0FFRUJhaUFBUVI5R0lnRWJJUUFnQXlBQlFRSjBhaUVEREFBTEFBdEJBU0VCQ3lBQ1FSQnFFRElhSUFKQklHb1F0QW9nQWtFd2FpUUFJQUVMN1FNQkNYOGdBUkN2QVNBQlFRRTZBTkVDSUFCQkFEb0EwUUlnQUNBQktBSUFOZ0lBSUFBZ0FTZ0NCRFlDQkNBQVFRaHFJQUZCQ0dvUTN3OGdBRUdFQVdvZ0FVR0VBV29ReWdVZ0FFR2dBV29nQVVHZ0FXb1F5Z1VnQUVHOEFXb2dBVUc4QVdvUXlnVWdBQ0FCS0FMWUFUWUMyQUVnQUVIY0FXb2dBVUhjQVdvUSt3OGdBRUdBQW1vZ0FVR0FBbW9RNmhzakFFRVFheUlGSkFBZ0JTQUFRY0FDYWpZQ0RDQUZJQUZCd0FKcU5nSUlJQVVvQWd3aUNTRUNJQVVvQWdnaEF5TUFRUkJySWdZa0FDQUdJQUkyQWd3Z0JpQUROZ0lJSUFZb0Fnd2hBeUFHS0FJSUlRUWpBRUVRYXlJQ0pBQWdBaUFETmdJRUlBSWdCRFlDQUNBQ0tBSUVJZ2NRb3hnZ0FpZ0NBQ0VFSXdCQkVHc2lBeVFBSUFNZ0J6WUNEQ0FESUFRMkFnZ2dBeWdDRENFSUlBTW9BZ2doQ2lNQVFSQnJJZ1FrQUNBRUlBZzJBZ1FnQkNBS05nSUFJQVFvQWdRaENDQUVLQUlBRUxjQkdpQUlFTGNCR2lBRVFSQnFKQUFnQTBFUWFpUUFJQWNnQWlnQ0FDZ0NBRFlDQUNBSElBSW9BZ0FvQWdRMkFnUWdBaWdDQUJDM0FTZ0NBQ0VESUFjUXR3RWdBellDQUNBQ0tBSUFFTGNCUVFBMkFnQWdBaWdDQUVFQU5nSUVJQUlvQWdCQkFEWUNBQ0FDUVJCcUpBQWdCa0VRYWlRQUlBa2dCU2dDQ0NnQ0REWUNEQ0FGUVJCcUpBQWdBQ0FCTFFEUUFqb0EwQUlMdFFFQkEzOGpBRUhRQVdzaUJDUUFJQUVnQUJEZUFTSUNRUVJxSVFNZ0FpZ0NBQ0VDQTBBQ1FBSkFJQUlnQTBZRVFFRUFJUUlNQVFzZ0FTZ0NBQ2dDQUJCSFJRMEJJQUlvQWhCQmZuRkJIa2NOQVNBRVFSQnFJZ01nQVVGMklBRWdBQkFnRUJBZ0JDQUJRYk1tRURjZ0F5QUVFQklhSUFOQjRzOEtFQTRhSUFNZ0FCQWhHaUFEUVpPZkFSQU9HaUFFS0FMTUFTRUNJQVFRRHhvZ0F4QVJDeUFFUWRBQmFpUUFJQUlQQ3lBQ0VFd2hBZ3dBQ3dBTFh3RUJmeUFCSUFBUTNnRWlBRUVFYWlFQklBQW9BZ0FoQUFOQUFrQWdBQ0FCUmcwQUFrQWdBQ2dDRUVFcFJ3MEFJQUFvQWhnaUFpQUFLQUlVYTBFRlNRMEFJQUpCQkdzb0FnQkJBVVlOQVFzZ0FCQk1JUUFNQVFzTElBQWdBVWNMaGdnQkNIOGpBRUhRQVdzaUJDUUFBa0FDUUNBQkx3RWVJZ1pCMFFCclFRSkpCRUFnQVNnQ0JDQUJLQUlBSWdoclFRSjFJZ05CQkVFRklBWkIwUUJHR3lJRlJnUkFJQVJCRUdvaUFpQUFRWElnQVJBUUlBSkIycmtDRUE0YUlBSWdBUzhCSGhDQkFSQU9HaUFDUVpqbUJCQU9HaUFFS0FMTUFTRUZJQUlRRVF3REN5QURJQVZySWdkQmdBSlBCRUFnQkVFUWFpSUNJQUJCY2lBQkVCQWdBa0dUdWdJUURob2dBaUFHRUlFQkVBNGFJQUpCN3QwS0VBNGFJQUpCL3dFUUlSb2dBa0hzeWdvUURob2dBaUFIRUNFYUlBSkJzYklIRUE0YUlBUW9Bc3dCSVFVZ0FoQVJEQU1MSUFJZ0FDQUlJQVZCQVd0QkFuUnFLQUlBRU0wQ0lnWTJBZ0FnQmtVTkFTQUZJQU1nQXlBRlNSc2hDQU5BSUFVZ0NFWUVRRUVBSVFVTUJBc2dBU2dDQUNBRlFRSjBhaWdDQUNFR0FrQUNRQUpBSUFBZ0FpZ0NBQkFnSWdNRVFBSkFBa0FDUUFKQUFrQUNRQUpBSUFNdkFSNGlCMEVYYXc0SUFBRUZCUVVDQmdNRUN5QUNJQU1vQWdBaUF5Z0NDRFlDQUNBR0lBTW9BZ3dpQTBrTkNTQUVRUkJxSWdJZ0FFRnlJQUVRRUNBQ1FZTGZDUkFPR2lBQ0lBTVFJUm9nQWtHeTJ3a1FEaG9nQWlBR0VDRWFJQVFvQXN3QklRVWdBaEFSREEwTElBSWdBeWdDQUNJREtBSUlOZ0lBSUFZZ0F5Z0NEQ0lEU1EwSUlBUkJFR29pQWlBQVFYSWdBUkFRSUFKQm9PSUpFQTRhSUFJZ0F4QWhHaUFDUWFyYkNSQU9HaUFDSUFZUUlSb2dCQ2dDekFFaEJTQUNFQkVNREFzZ0JFSUFOd01JSUFBZ0F5Z0NBQ2dDREJBZ0lRY2dBaUFES0FJQUtBSUlOZ0lBSUFjdkFSNFF2d2dOQnlBQUlBTW9BZ0FvQWd3Z0JFRUlhaEREQlVVTkJTQUVLUU1JSUFhdFZnMEhJQVJCRUdvaUFpQUFRWElnQVJBUUlBSkIxTjRKRUE0YUlBSWdCQ2tEQ0JEREJCb2dBa0d5MndrUURob2dBaUFHRUNFYUlBUW9Bc3dCSVFVZ0FoQVJEQXNMSUFNb0FnUWdBeWdDQUNJSGEwRUNkU0lKUVFKcklnb2dCa3NFUUNBQ0lBWkJBblFnQjJvb0FnZzJBZ0FNQndzZ0JFRVFhaUlDSUFCQmNpQUJFQkFnQWtIend3a1FEaG9nQWlBR0VDRWFJQUpCKzVrSkVBNGFJQUlnQXlnQ0tCQWhHaUFDUWUzakNSQU9HaUFDSUFvUUlSb2dBa0hKMndrUURob2dBaUFKUVFOckVDRWFJQUpCL0pjSUVBNGFJQVFvQXN3QklRVWdBaEFSREFvTElBZEI3aWxHRFFRTElBUkJFR29pQWlBQVFYSWdBUkFRSUFKQjJvRUlFQTRhSUFRb0Fzd0JJUVVnQWhBUkRBZ0xJQUlnQXlnQ0FDZ0NDRFlDQUF3REMwR2JMMEdFbndKQnhBQkJpNWNFRUFBQUMwR3NuUWxCaEo4Q1FlUUFRWXVYQkJBQUFBc2dBaUFES0FJQUtBSUlOZ0lBQ3lBRlFRRnFJUVVNQUFzQUMwR1lORUdFbndKQktFR0xsd1FRQUFBTElBUkJFR29pQWlBQVFYSWdBUkFRSUFKQmxvMEVFQTRhSUFRb0Fzd0JJUVVnQWhBUkN5QUVRZEFCYWlRQUlBVUxpQU1CQjM4akFFRVFheUlGSkFCQkFTRUhBa0FDUUFKQUFrQUNRQUpBSUFFZ0FHdEJBM1VPQmdVRkFBRUNBd1FMSUFJZ0FVRUlheUlESUFBUTFBRkZEUVFnQUNnQ0FDRUNJQUFnQXlnQ0FEWUNBQ0FESUFJMkFnQWdBQ2dDQkNFQ0lBQWdBVUVFYXlJQUtBSUFOZ0lFSUFBZ0FqWUNBQXdFQ3lBQUlBQkJDR29nQVVFSWF5QUNFS2NIR2d3REN5QUFJQUJCQ0dvZ0FFRVFhaUFCUVFocklBSVE0ZzBhREFJTElBQWdBRUVJYWlBQVFSQnFJQUJCR0dvZ0FVRUlheUFDRU9FTkdnd0JDeUFBSUFCQkNHb2dBRUVRYWlJR0lBSVFwd2NhSUFCQkdHb2hCQU5BSUFFZ0JFWU5BUUpBSUFJZ0JDQUdFTlFCQkVBZ0JTQUVLUUlBTndNSUlBUWhDQU5BQWtBZ0NDQUdJZ01vQWdBMkFnQWdDQ0FES0FJRU5nSUVJQUFnQTBZRVFDQUFJUU1NQVFzZ0F5RUlJQUlnQlVFSWFpQURRUWhySWdZUTFBRU5BUXNMSUFNZ0JTZ0NDRFlDQUNBRElBVW9BZ3cyQWdRZ0NVRUJhaUlKUVFoR0RRRUxJQVFpQmtFSWFpRUVEQUVMQ3lBRVFRaHFJQUZHSVFjTElBVkJFR29rQUNBSEMyc0JBbjhqQUVFZ2F5SURKQUFnQTBFSWFpQUFJQUFvQWdRZ0FDZ0NBR3RCQTNWQkFXb1FtZzRnQUNnQ0JDQUFLQUlBYTBFRGRTQUFRUWhxRU5BS0lnSW9BZ2dnQVNrQ0FEY0NBQ0FDSUFJb0FnaEJDR28yQWdnZ0FDQUNFS01FSUFJUTVBMGdBMEVnYWlRQUM2a0ZBUVovSXdCQlFHb2lCaVFBQWtBQ1FBSkFJQUVvQWhBRVFDQUNLQUlRUlEwQklBTW9BaEJGRFFJZ0JTZ0NFRVVOQXlBR1FnQTNBekFnQmtJQU53TW9JQVpCZ0lDQS9BTTJBamdnQmtFQU5nSWdJQVpDQURjREdDTUFRU0JySWdna0FDQUdRUmhxSWdjb0FnZ2dCeWdDQUNJSmEwRURkVUVLU1FSQUlBY2dDRUVJYWtFS0lBY29BZ1FnQ1d0QkEzVWdCMEVJYWhEUUNpSUpFS01FSUFrUTVBMExJQWhCSUdva0FDQUdJQUEyQWhBZ0JpQUJJQUFRaWdJb0FnQTJBaFFnQnlBR1FSQnFJZ2NRNmcwZ0FpQUFFTUVHSUFZZ0FDZ0NBRFlDRENBSElBWkJLR29nQmtFTWFoQ1dBUU5BSUFZb0Fod2lBQ0FHS0FJWVJ3UkFBa0FnQlNBQVFRaHJJZ2tvQWdBUWlnSkZCRUFnQVNBSktBSUFFSW9DSVFjZ0FFRUVheUlLS0FJQUlnQWdCeWdDQkVjTkFRc2dBeUFKS0FJQUVNRUdJQVlnQmlnQ0hFRUlhellDSEF3Q0N5QUFLQUlBSVFnZ0NpQUFRUVJxTmdJQUFrQWdCQ2dDRUVVTkFDQUlLQUlBSVFzZ0JpZ0NIQ0VLSUFZb0FoZ2hCd05BSUFvZ0J5SUFSd1JBSUFCQkNHb2hCeUFBS0FJQUtBSUFJQXRIRFFFTEN5QUFJQXBHRFFBZ0JDQUpLQUlBSUFnUTR4Y0xJQVlnQ0NnQ0FEWUNFQ0FHUVNocUlBWkJFR29RcVFJTkFTQUNJQWdRd1FZZ0JpQUlOZ0lRSUFZZ0FTQUlFSW9DS0FJQU5nSVVJQVpCRUdvaEJ3SkFJQVpCR0dvaUFDZ0NCQ0lKSUFBb0FnaEpCRUFnQ1NBSEtRSUFOd0lBSUFBZ0NVRUlhallDQkF3QkN5QUFJQWNRa1JZZ0FDZ0NCQm9MSUFZZ0NDZ0NBRFlDRENBSElBWkJLR29nQmtFTWFoQ1dBUXdCQ3dzZ0JrRVlhaEF5R2lBR1FTaHFFRThnQmtGQWF5UUFEd3RCd2EwSlFjZTJBMEcwQVVHSmxnTVFBQUFMUWJTdUNVSEh0Z05CdFFGQmlaWURFQUFBQzBIOXJRbEJ4N1lEUWJZQlFZbVdBeEFBQUF0QjZhNEpRY2UyQTBHM0FVR0psZ01RQUFBTDhBRUJCSDhqQUVFZ2F5SURKQUFnQXlBQk5nSVFJd0JCRUdzaUFpUUFJQU1nQUNBQ1FReHFJQUVRclFZaUJDZ0NBQ0lCQkg5QkFBVkJLQkFWSVFFZ0FpQUFRUVJxTmdJRUlBSWdBVFlDQUNBREtBSVFLQUlBSVFVZ0FVSUFOd0lVSUFFZ0JUWUNFQ0FCUWdBM0Fod2dBVUdBZ0lEOEF6WUNKQ0FDUVFFNkFBZ2dBQ0FDS0FJTUlBUWdBaWdDQUJENEFpQUNLQUlBSVFFZ0FrRUFOZ0lBSUFJb0FnQWhBQ0FDUVFBMkFnQWdBQVJBSUFJdEFBZ0VRQ0FBUVJScUVFOExJQUFFUUNBQUVCOExDMEVCQ3pvQUhDQURJQUUyQWhnZ0FrRVFhaVFBSUFNb0FoZ2hBQ0FEUVNCcUpBQWdBRUVVYWdzbUFDQUFJQUVvQWdBMkFnQWdBRUVFYWlBQlFRUnFFTEFCR2lBQUlBRXBBaEEzQWhBZ0FBdHlBUU4vSXdCQjBBRnJJZ0lrQUNBQUVNc0JJQUZCQXhEVEZRUkFJQUpCRUdvaUF5QUFRWFVnQUNBQUVNc0JLQUlBRUNBUUVDQURRYUNqQ2hBT0dpQUNJQUFnQVJBcUlBTWdBaEFTR2lBRFFmLzVBUkFPR2lBQ0tBTE1BU0VFSUFJUUR4b2dBeEFSQ3lBQ1FkQUJhaVFBSUFRTEpnRUJmeUFBTFFDQkFVRWdjVVVnQVVFdlMzSkZRb0NBd1lDQWdEWWdBYTJJcDBFQmNYRUxLZ0FDZjBFQklBQWdBUkNZRmcwQUdrRUFJQUJCSmtzTkFCcENnSUM0Z0lBSUlBQ3RpS2RCQVhFTEN6MEJBWDlCQVNFQ0FrQUNRQUpBQWtBZ0FFRUVhdzRJQWdJQ0FnSUJBUU1BQ3lBQVFSWkdJQUJCSjBaeURRRUxRUUFoQWdzZ0FnOExJQUZCQVhNTE5nRUJmd0pBSUFBUW14WU5BQ0FBUVQxclFRaEpJQUJCeXlKcklnRkJEMDFCQUVFQklBRjBRY0d2QTNFYmNnMEFRUUFQQzBFQkN4SUFJQUFRbkJZZ0FFSFZJbXRCZlhGRmNnc1hBRUtNdklEZS85SEorUU1nQUsySXB5QUFRVHBKY1FzV0FFS0RnSUNBZ0tDMkJpQUFyWWluSUFCQk5FbHhDNVlCQVFOL0l3QkJFR3NpQkNRQUl3QkJJR3NpQXlRQUlBUWdBQ0FCSUFOQkhHb2dBMEVZYWlBQ0VKSU9JZ1VvQWdBaUFRUi9RUUFGUVJRUUZTRUJJQU1nQUVFRWFqWUNEQ0FCSUFJb0FnQTJBaEFnQTBFQk9nQVFJQUFnQXlnQ0hDQUZJQUVRK0FJZ0EwRUFOZ0lJSUFOQkNHb1Fpd0ZCQVFzNkFBd2dCQ0FCTmdJSUlBTkJJR29rQUNBRUtBSUlHaUFFUVJCcUpBQUxDd0FnQUVHZy9oOFE3UUlMQ3dBZ0FFSDgvUjhRN1FJTHFHSURGbjhDZlFGK0l3QkJrQU5ySWd3a0FDQU1RUUEyQW9nRElBeENBRGNEZ0FNQ1FDQU1RWUFEYWlJRUtBSUVJQVFvQWdBaUEydEJBblVpQWlBQlFRSjJJZ1ZKQkVBakFFRWdheUlESkFBQ1FDQUZJQUpySWdVZ0JDZ0NDQ0FFS0FJRUlnSnJRUUoxVFFSQUlBUWdCUkNFSGd3QkN5QURRUWhxSUFRZ0FpQUVLQUlBYTBFQ2RTQUZhaENqQ1NBRUtBSUVJQVFvQWdCclFRSjFJQVJCQ0dvUXB3SWlBaUFGRU8wY0lBUWdBaENqQkNBQ0VKb0RDeUFEUVNCcUpBQU1BUXNnQWlBRlN3UkFJQVFnQXlBRlFRSjBhallDQkFzTElBd29Bb0FESUFBZ0FSQjlHaUFNUVFBNkFBQWdERUVvYWlFS0l3QkI4SmNCYXlJQ0pBQWpBRUVnYXlJTEpBQWdBa0hnaVFGcUlnVkIxTW9TTmdJQUlBVkJCR29RSFJvZ0JVRzQ0QkkyQWdBZ0JVRVVhaUFFRUxBQkdpQUZRU0JxRUlVRkdpTUFRUkJySWdFa0FDQUZRWkFEYWlJRVFRQTJBZ0JCb0FVUUZVRUFRYUFGRUhraUFFSUFOd0lZSUFCQ2dJQUVOd0lJSUFCQ0FEY0NBQ0FBUW9DQWdJQ0FCRGNDRUNBQVFnQTNBaUFnQUVJQU53SW9JQUJDQURjQ01DQUFRZ0EzQWtnZ0FFRkFhMEtBZ0lDQWdBUTNBZ0FnQUVLQWdBUTNBamdnQUVJQU53SlFJQUJCQURZQ1dDQUFRU0EyQW5RZ0FFS0FnSUQ4QXpjQ1hDQUFRb0NBZ0lDQWdNQUFOd0prSUFCQ0FEY0NiQ0FBUWdBM0FuZ2dBRUlBTndLQUFTQUFRUUEyQW9nQklBQkJJRFlDcEFFZ0FFSUFOd0tjQVNBQVFvQ0FnSUNBZ01BQU53S1VBU0FBUW9DQWdQd0ROd0tNQVNBQVFRQTJBcmdCSUFCQ0FEY0NzQUVnQUVJQU53S29BU0FBUWdBM0Fzd0JJQUJDZ0lDQWdJQ0F3QUEzQXNRQklBQkNnSUNBL0FNM0Fyd0JJQUJCSURZQzFBRWdBRUVBTmdMb0FTQUFRZ0EzQXVBQklBQkNBRGNDMkFFZ0FFSUFOd0w4QVNBQVFvQ0FnSUNBZ01BQU53TDBBU0FBUW9DQWdQd0ROd0xzQVNBQVFTQTJBb1FDSUFCQkFEWUNtQUlnQUVJQU53S1FBaUFBUWdBM0FvZ0NJQUJCSURZQ3RBSWdBRUlBTndLc0FpQUFRb0NBZ0lDQWdNQUFOd0trQWlBQVFvQ0FnUHdETndLY0FpQUFRUUEyQXNnQ0lBQkNBRGNDd0FJZ0FFSUFOd0s0QWlBQVFTQTJBdVFDSUFCQ0FEY0MzQUlnQUVLQWdJQ0FnSURBQURjQzFBSWdBRUtBZ0lEOEF6Y0N6QUlnQUVFQU5nTDRBaUFBUWdBM0F2QUNJQUJDQURjQzZBSWdBRUVnTmdLVUF5QUFRZ0EzQW93RElBQkNnSUNBZ0lDQXdBQTNBb1FESUFCQ2dJQ0EvQU0zQXZ3Q0lBQkJBRFlDcUFNZ0FFSUFOd0tnQXlBQVFnQTNBcGdESUFCQklEWUN4QU1nQUVJQU53SzhBeUFBUW9DQWdJQ0FnTUFBTndLMEF5QUFRb0NBZ1B3RE53S3NBeUFBUVFBMkF0Z0RJQUJDQURjQzBBTWdBRUlBTndMSUF5QUFRU0EyQXZRRElBQkNBRGNDN0FNZ0FFS0FnSUNBZ0lEQUFEY0M1QU1nQUVLQWdJRDhBemNDM0FNZ0FFRUFOZ0tJQkNBQVFnQTNBb0FFSUFCQ0FEY0MrQU1nQUVFZ05nS2tCQ0FBUWdBM0Fwd0VJQUJDZ0lDQWdJQ0F3QUEzQXBRRUlBQkNnSUNBL0FNM0Fvd0VJQUJCQURZQ3VBUWdBRUlBTndLd0JDQUFRZ0EzQXFnRUlBQkJJRFlDMUFRZ0FFSUFOd0xNQkNBQVFvQ0FnSUNBZ01BQU53TEVCQ0FBUW9DQWdQd0ROd0s4QkNBQVFRQTJBdWdFSUFCQ0FEY0M0QVFnQUVJQU53TFlCQ0FBUVNBMkFvUUZJQUJDQURjQy9BUWdBRUtBZ0lDQWdJREFBRGNDOUFRZ0FFS0FnSUQ4QXpjQzdBUWdBRUVBTmdLWUJTQUFRZ0EzQXBBRklBQkNBRGNDaUFVZ0FFR0FnSUQ4QXpZQ25BVWdBVUVBTmdJSUlBUWdBQkNrR2lBQlFRaHFFS01hSUFGQkVHb2tBQ0FGUVFFNkFKUURJQVZCbUFOcUVFa2hBQ0FGUVFBMkFzQUVJQVVnQURZQ3JBUWdCU0FGUVpRRGFqWUNxQVFqQUVFUWF5SVRKQUFnQlVHb0JHb2lFQ2tDQUNFYUlBVkJ5QVJxSWdkQ0FEY0NDQ0FISUJvM0FnQWdCMElBTndJUUlBZENBRGNDSENBSFFZQ0FnUHdETmdJWUlBZENBRGNDSkNBSFFnQTNBakFnQjBHQWdJRDhBellDTENBSFFnQTNBamdnQjBJQU53SkVJQWRCUUd0QmdJQ0EvQU0yQWdBZ0IwSUFOd0pNSUFkQmdJQ0EvQU0yQWxSQjROSVNJUTRnQjBFY2FpRUVBMzhnRGtHVTF4SkdCSDhnRTBFUWFpUUFJQWNGSUJNZ0RpZ0NBQkFVSVE4akFFRWdheUlKSkFBZ0NTQVBOZ0lRUVFBaEFDTUFRUkJySWdna0FDQVBFTTRHSVFFZ0NRSi9Ba0FnQkNnQ0JDSURSUTBBSUFRb0FnQUNmeUFEUVFGcklBRnhJQU5wSWcxQkFVME5BQm9nQVNBQklBTkpEUUFhSUFFZ0EzQUxJZ0JCQW5ScUtBSUFJZ1pGRFFBZ0EwRUJheUVSSUExQkFVc2hGQU5BSUFZb0FnQWlCa1VOQVNBQklBWW9BZ1FpRFVjRVFBSkFJQlJGQkVBZ0RTQVJjU0VOREFFTElBTWdEVXNOQUNBTklBTndJUTBMSUFBZ0RVY05BZ3NnQmtFSWFpQVBFUElEUlEwQUMwRUFEQUVMUVJnUUZTRUdJQWdnQkVFSWFqWUNCQ0FJSUFZMkFnQWdCaUFKS0FJUUlnMHBBZ0EzQWdnZ0JpQU5LQUlJTmdJUUlBMFFWU0FHUVFBMkFoUWdDRUVCT2dBSUlBWkJBRFlDQUNBR0lBRTJBZ1FDUUVFQUlBTWdCQ2dDREVFQmFyTWlHQ0FFS2dJUUloa2dBN09VWGhzTkFDQUVJQU1nQTBFQmEzRkJBRWNnQTBFRFNYSWdBMEVCZEhJaUFBSi9JQmdnR1pXTkloaERBQUNBVDEwZ0dFTUFBQUFBWUhFRVFDQVlxUXdCQzBFQUN5SURJQUFnQTBzYkVKd1BJQVFvQWdRaUF5QURRUUZyY1VVRVFDQURRUUZySUFGeElRQU1BUXNnQVNBRFNRUkFJQUVoQUF3QkN5QUJJQU53SVFBTEFrQWdBRUVDZENJQklBUW9BZ0JxS0FJQUlnQkZCRUFnQ0NnQ0FDQUVLQUlJTmdJQUlBUWdDQ2dDQURZQ0NDQUVLQUlBSUFGcUlBUkJDR28yQWdBZ0NDZ0NBQ0lBS0FJQUlnRkZEUUVnQVNnQ0JDRUdBa0FnQXlBRFFRRnJJZ0Z4UlFSQUlBRWdCbkVoQmd3QkN5QURJQVpMRFFBZ0JpQURjQ0VHQ3lBRUtBSUFJQVpCQW5ScUlBQTJBZ0FNQVFzZ0NDZ0NBQ0FBS0FJQU5nSUFJQUFnQ0NnQ0FEWUNBQXNnQ0NnQ0FDRUdJQWhCQURZQ0FDQUVJQVFvQWd4QkFXbzJBZ3dnQ0JDYkQwRUJDem9BSENBSklBWTJBaGdnQ0VFUWFpUUFJQWtvQWhnaEFDQUpRU0JxSkFBZ0FFRUFOZ0lVSUE4UUR4b2dEa0VFYWlFT0RBRUxDeG9nQlVHZ0JXb2dFQkJiR2lBRlFSSVF1UWcyQXFnRklBVkJyQVZxUVFCQk5CQjVHaUFGUWdBM0F1UUZJQVZCZ0lDQS9BTTJBdUFGSUFWQ0FEY0M3QVVnQlVJQU53UDRCU0FGUVlDQWdQd0ROZ0wwQlNBRlFnQTNBNEFHSUFWQ0FEY0NqQVlnQlVHQWdJRDhBellDaUFZZ0JVSUFOd0tVQmlBRlFnQTNBNkFHSUFWQmdJQ0EvQU0yQXB3R0lBVkNBRGNEcUFZZ0JVSUFOd080QmlBRlFvQ0FnSUF3TndPd0JpQUZRZ0EzQThBR0lBVkNBRGNEeUFZZ0JVS0FnSUNBZ0lDQXdEODNBOUFHSUFWQ0FEY0QyQVlnQlVJQU53UGdCaUFGUWdBM0F1d0dJQVZCZ0lDQS9BTTJBdWdHSUFWQ0FEY0M5QVlnQlVHQWdJRDhBellDL0FZZ0JVSUFOd09BQnlBRlFnQTNBNGdISUFWQmdJQ0EvQU0yQXBBSElBVkNBRGNDbEFjZ0JVSUFOd0tjQnlBRlFZQ0FnUHdETmdLa0J5QUZRZ0EzQTZnSElBVkNBRGNEc0FjZ0JVR0FnSUQ4QXpZQ3VBY2dCVUlBTndLOEJ5QUZRZ0EzQXNRSElBVkJnSUNBL0FNMkFzd0hJQVZDQURjRDBBY2dCVUlBTndQWUJ5QUZRZ0EzQXVRSElBVkJnSUNBL0FNMkF1QUhJQVZDQURjQzdBY2dCVUdBZ0lEOEF6WUM5QWNnQlVINEIyb2lBRUlBTndLc0JTQUFRb0NBZ0lDQUF6Y0NwQVVnQUNBQU5nS2dCU0FBUVJnUTZ3NGdCVUcwRFdwQ0FEY0NBQ0FGUWdBM0Fxd05JQVZDQURjRHdBMGdCVUc4RFdwQmdJQ0EvQU0yQWdBZ0JVSElEV3BDQURjREFDQUZRZ0EzQXRRTklBVkIwQTFxUVlDQWdQd0ROZ0lBSUFWQjNBMXFRZ0EzQWdBZ0JVSGtEV3BCZ0lDQS9BTTJBZ0FnQlVIb0RXcEJBRUVrRUhrYUlBc2dCVFlDRENBTFFkRGdFallDQ0NBTElBdEJDR29pQURZQ0dDQUFJQVZCc0FScUVLd0NJQUFRRmlBTFFTQnFKQUFnQlVFZ2FpRUFBa0FnQlJDZ0dVVUVRQ0FBRUJ3Z0FrR1lBMm9pQVNBRlFhUURhaEJDSUFJZ0FpZ0NuQU1nQWkwQW93TWlCQ0FFUVJoMFFSaDFRUUJJSWdRYk5nTGNpUUVnQWlBQ0tBS1lBeUFCSUFRYk5nTFlpUUVnQWlBQ0tRUFlpUUUzQXdnZ0JVSG9BbXBCQnlBQ1FRaHFFS2tISUFFUUR4b2dDaUFBRUlvRUdnd0JDeUFNTFFBQUJFQWpBRUVRYXlJR0pBQWpBRUVRYXlJQkpBQWdBU0FBUWY0SkVPRUhJZ1EyQWd3Z0FDQUVRUkJxSUFGQkRHb1FoUm9oQkNBQlFSQnFKQUFnQUNBQVFkZ0NhaUFHUVFocVFRTWdCQkNXR2hEbEdTRUVJQUFROGdJaEF5TUFRY0FCYXlJQkpBQWdBU0FFTmdLOEFTQUVSUVJBSUFGQkNHcEIwN1FGUWRzQVFRQWdBVUdvQVdvUUhTSUhFQmNpQ0VFWWFrSFl0Z2dRRGhvZ0NCQVlJQWNRSGdzZ0JCQlhJQU1vQWdoQkFVRUFRWTNNQ0VIVHRBVkIzQUFRU3lBQklBUTJBZ2dnQTBFa2FpQUJRUWhxRUpRRElBTkJ0QVJxSUFGQnZBRnFFQ1FnQVVIQUFXb2tBQ0FHUVJCcUpBQUxJQVZCQURvQWpBTWdBa0dBaHdGcUlBQVFpZ1FoQnlBQ1FaZ0RhaUFDUVpDRUFXb1FoUVVpQ0NBSFFRQVEwUVlpQUJEdUJTQUFFTkFHQWtBZ0FrRkFheUFJRUlvRUlnWVFpUlpGQkVBZ0NpQUdFTHdLR2d3QkN5QUNRU2hxRU13R0lnRkJpTUVTTmdJRUlBRkJ2TUVTTmdJQUlBRkNBRGNDQ0NBQlFhakJFallDQUNBQlFRQTJBaEFqQUVFUWF5SUVKQUJCQ0JBVkVNd0dJZ0JCeU1FU05nSUVJQUJCNk1JU05nSUFJQUJCNk1FU05nSUFJQVFnQURZQ0NDQUJRUWhxSWdBZ0JFRUlhaUlERUpjRklBTVF0d0lnQkVFUWFpUUFJd0JCRUdzaUJDUUFRUWdRRlJETUJpSURRZmpDRWpZQ0JDQURRZlRERWpZQ0FDQURRWmpERWpZQ0FDQUVJQU0yQWdnZ0FDQUVRUWhxSWdNUWx3VWdBeEMzQWlBRVFSQnFKQUFqQUVFUWF5SUVKQUJCQ0JBVkVNd0dJZ05CZ01RU05nSUVJQU5CdE1RU05nSUFJQU5Cb01RU05nSUFJQVFnQXpZQ0NDQUFJQVJCQ0dvaUF4Q1hCU0FERUxjQ0lBUkJFR29rQUNNQVFSQnJJZ1FrQUVFSUVCVVF6QVlpQTBIUXhSSTJBZ1FnQTBHSXhoSTJBZ0FnQTBId3hSSTJBZ0FnQkNBRE5nSUlJQUFnQkVFSWFpSURFSmNGSUFNUXR3SWdCRUVRYWlRQUl3QkJFR3NpQkNRQVFRZ1FGUkRNQmlJRFFZREhFallDQkNBRFFiVEhFallDQUNBRFFhREhFallDQUNBRUlBTTJBZ2dnQUNBRVFRaHFJZ01RbHdVZ0F4QzNBaUFFUVJCcUpBQWpBRUVRYXlJRUpBQkJDQkFWRU13R0lnTkJ3TWNTTmdJRUlBTkJwTW9TTmdJQUlBTkIrTWNTTmdJQUlBUWdBellDQ0NBQUlBUkJDR29pQUJDWEJTQUFFTGNDSUFSQkVHb2tBQ0FDUVJCcUVLTWJJUWtqQUVHZ2lRRnJJZ1FrQUNBQ1FaZ0RhaUlERUpnRUlnQkJBRFlDQkNBQVFRaHFFTU1MR2lBQVFnQTNBdFFCSUFCQ2dJQ0FnSUFFTndMTUFTQUFRb0NBQkRjQ3hBRWdBRUlBTndLOEFTQUFRaUEzQXJRQklBQkNBRGNDckFFZ0FFS0FnSUNBZ0lEQUFEY0NwQUVnQUVJQU53S2NBU0FBUW9DQWdJQ0FCRGNDbEFFZ0FFS0FnQVEzQW93QklBQkNBRGNDaEFFZ0FFSGNBV29RMHdzYUlBQkJnQUpxSUFBb0FnQVE3dzhhSUFCQndBSnFFQjBhSUFCQkFEc0IwQUlnQUVIVUFtb1FveHNhSUFSQnlJWUJhaUFCSUFZZ0NTQURRZFFDYWlBQktBSUFLQUlJRVFnQUFrQWdCQzBBbklrQkJFQWdBeUFFUWNpR0FXb1F4UThRakJZTUFRc2dCRUhnQW1vZ0JFSFlnd0ZxRUlVRklnQWdCa0VCRU5FR0lnMFE3Z1VnQXlBRVFRaHFJQUFRaWdRaUN4Q01GaUFMRUx3RElBMFEwQVlnQUJDT0JCb0xJQVJCeUlZQmFoQ0NHeUFFUWFDSkFXb2tBQ0FLSUFNUXZBb2FJQU5CMUFKcUVLSWJJQU1RdkFNZ0NSQ2lHeUFCRU1ZUEdnc2dCaEM4QXlBSUVJNEVHaUFIRUx3REN5QUZFUDRPR2lBQ1FmQ1hBV29rQUNBS0VLOEJJQXdvQXV3Q0lRQWdEQ2dDNkFJaEFRTkFJQUFnQVVZRVFDTUFRU0JySWcwa0FDQU5JQXhCS0dvaUV6WUNIQ0FNUVFBNkFBQWdERUVFYWhCVklBeEJFR3BCM1BnTUVCUWFRYXdERUJVaUJTQU5LQUljSWdRMkFnQWpBRUdBQVdzaUNDUUFJQVZCQkdvaUF4Q0ZCUm9nQXlBRUtBSUFOZ0lJSUFNZ0JDZ0NCRFlDRENBRUVLOEJJQWdRd3dzaUNVRWNhaUlHSUFSQkNHb2lCeUlBUVJ4cVJ3UkFJQVlnQUNvQ0xEZ0NFQ0FBS0FJa0lRSWdCaWdDQkFSQUlBWVFuQmNoQUFOQUlBQkZJQUpGY2tVRVFDQUFJQUlwQWdnM0FnZ2dBQ2dDQUNFQklBWWdBQkNYRnlBQ0tBSUFJUUlnQVNFQURBRUxDeUFBRUxFSEN3TkFJQUlFUUNNQVFSQnJJZ0FrQUNBQUlBWWdBa0VJYWhDRUZ5QUdJQUFvQWdBUWx4Y2dBRUVBTmdJQUlBQVFpd0VnQUVFUWFpUUFJQUlvQWdBaEFnd0JDd3NMSUFsQnpBQnFJZ1lnQjBITUFHcEhCRUFnQmlBSEtnSmNPQUlRSUFjb0FsUWhBaUFHS0FJRUJFQWdCaENjRnlFQUEwQWdBRVVnQWtWeVJRUkFJQUFnQWlrQ0NEY0NDQ0FBS0FJQUlRRWdCaUFBRUlBWElBSW9BZ0FoQWlBQklRQU1BUXNMSUFBUXNRY0xBMEFnQWdSQUl3QkJFR3NpQUNRQUlBQWdCaUFDUVFocUVJUVhJQVlnQUNnQ0FCQ0FGeUFBUVFBMkFnQWdBQkNMQVNBQVFSQnFKQUFnQWlnQ0FDRUNEQUVMQ3dzZ0EwRVFhaUFJRU44UElBZ1EzUThnQkJET0JFRVFhaUVBSUFRUXpnUkJKR29oQVNNQVFSQnJJZ2NrQUNBREVCd2dBeUFES0FJTVFRRnFJZ0kyQWd3Z0J5QUNOZ0lJSXdCQkVHc2lCaVFBSUFOQmpBRnFJZ2tRb3c0aEFpQUhLQUlJSVFzZ0F5Z0NDQ0VLSUFaQkFEb0FEQ0FHSUFGQmdBSnFOZ0lJSXdCQklHc2lBU1FBSUFFZ0N6WUNFQ0FCSUFvMkFoZ2dBaUFCUVJocUlBRkJFR29nQUJEVEdTSUFRYmozRHpZQ0FDQUFRU1JxSUFaQkNHb1F6eGtnQUVLQWdJQ0FnQUUzQXJBRklBQWdBRUdNQldvMkFxd0ZJQUJDZ0lDQWdJQUJOd0tFQlNBQUlBQkI0QVJxTmdLQUJTQUFRb0NBZ0lDQUFUY0MyQVFnQUNBQVFiUUVhallDMUFRZ0FFS0FnSUNBZ0FRM0Fxd0VJQUFnQUVHb0EybzJBcWdFSUFCQ2dJQ0FnSUFCTndLZ0F5QUFJQUJCL0FKcU5nS2NBeUFBUW9DQWdJQ0FBamNDOUFJZ0FDQUFRYkFDYWpZQzhBSWdBQ2dDcEFJaUFpQUFLQUtvQWtFQ2RHb2hDd05BSUFJZ0MwY0VRQ0FDS0FJQUlnb0VRQ0FBSUFvZ0FSQWRJZ29RekJrZ0NoQWVDeUFDUVFScUlRSU1BUXNMSUFGQklHb2tBQ0FKSUFBUUtDQUpJQWtvQWhoQkFXbzJBaGdnQmtFUWFpUUFJQWRCRUdva0FDQURJQUEyQXVBQklBUVFyd0VnQ0JEVEN5SUFJQVJCM0FGcUVMZ0hJQUFnQkNnQy9BRTJBaUFnQTBIa0FXb2dDQkQ3RHlBSUVQd1BJQVFRcndFZ0EwR0lBbW9pQUNBRVFZQUNhaUlCS0FJQU5nSUFJQUJCQkdvaUFpQUJRUVJxSWdaSEJFQWdBaUFHRVBnV0N5QUNJQVlwQWd3M0Fnd2dBRUVZYWlJQ0lBRkJHR29pQmtjRVFDQUNJQVlRenhZTElBSWdCaWtDRERjQ0RDQUFJQUVvQWl3MkFpd2dCQkN2QVNNQVFSQnJJZ3NrQUNBTElBTkJ5QUpxTmdJTUlBc2dCRUhBQW1vMkFnZ2dDeWdDRENJT0lRQWdDeWdDQ0NFQkl3QkJFR3NpQkNRQUlBUWdBRFlDRENBRUlBRTJBZ2dnQkNnQ0RDSUJJQVFvQWdoSEJFQWdCQ2dDQ0NFQ0l3QkJFR3NpQUNRQUlBQWdBVFlDRENBQUlBSTJBZ2dnQUNnQ0NDRUNJd0JCRUdzaUF5QUFLQUlNTmdJRUlBTWdBallDQUNBQVFSQnFKQUFnQkNnQ0NDZ0NBQ0VDSUFRb0FnZ29BZ1FoQXlNQVFTQnJJZ0FrQUNBQUlBRTJBaHdnQUNBQ05nSVlJQUFnQXpZQ0ZDQUFLQUljSVFJZ0FDZ0NHQ0VESUFBb0FoUWhCaU1BUVJCcklnRWtBQ0FCSUFNMkFnd2dBU0FHTmdJSUlBRW9BZ2doQmlNQVFSQnJJZ01nQVNnQ0REWUNCQ0FESUFZMkFnQWdBeWdDQUNBREtBSUVhMEUwYlNFRElBRkJFR29rQUNBQUlBTTJBaEFDUUNBQUtBSVFJQUlRMlFWTkJFQWdBQ0FBS0FJVU5nSU1JQUJCQURvQUN5QUFLQUlRSUFJUXR3WkxCRUFnQUVFQk9nQUxJQUFnQUNnQ0dEWUNEQ0FDRUxjR0lRTWpBRUVRYXlJQkpBQWdBU0FBUVF4cU5nSU1JQUVnQXpZQ0NDQUJJQUVvQWdnUWd3RTJBZ1FnQVNnQ0JDRUdJd0JCRUdzaUF5QUJLQUlNTmdJRUlBTWdCallDQUNBREtBSUVJZ1lnQmlnQ0FDQURLQUlBUVRSc2FqWUNBQ0FCUVJCcUpBQUxJQUFvQWhnaEFTQUFLQUlNSVFZZ0FpZ0NBQ0VISXdCQkVHc2lBeVFBSUFNZ0FUWUNEQ0FESUFZMkFnZ2dBeUFITmdJRUlBTW9BZ1FoRHlBREtBSU1FTkVJSVFFZ0F5Z0NDQkRSQ0NFR0lBTW9BZ1FRMFFnaEJ5TUFRUkJySWdra0FDQUpJQUUyQWd3Z0NTQUdOZ0lJSUFrZ0J6WUNCQ0FKS0FJTUlRWWdDU2dDQ0NFSElBa29BZ1FoQ2lNQVFSQnJJZ0VrQUNBQklBWTJBZ3dnQVNBSE5nSUlJQUVnQ2pZQ0JBTkFJQUVvQWd3Z0FTZ0NDRWNFUUNBQktBSUVJUWNnQVNnQ0RDRUtJd0JCRUdzaUJpUUFJQVlnQnpZQ0RDQUdJQW8yQWdnZ0JpZ0NEQ0lLSUFZb0FnZ2lCeWtDQURjQ0FDQUtJQWNwQWhBM0FoQWdDaUFIS1FJSU53SUlJQXBCR0dvZ0JpZ0NDRUVZYWhEZ0FpQUtJQVlvQWdncEFpUTNBaVFnQmlnQ0NFRXNhaUVRSXdCQkVHc2lCeVFBSUFjZ0NrRXNhallDRENBSElCQTJBZ2dnQnlnQ0RDRUtJQWNnQnlnQ0NCQ29HQ0FISUFvUXhoZ2dCeERPQnlBSFFSQnFKQUFnQmtFUWFpUUFJQUVnQVNnQ0RFRTBhallDRENBQklBRW9BZ1JCTkdvMkFnUU1BUXNMSUFFb0FnUWhCaUFCUVJCcUpBQWdDVUVRYWlRQUl3QkJFR3NpQVNBUE5nSU1JQUVnQmpZQ0NDQUJLQUlJSVFFZ0EwRVFhaVFBSUFBZ0FUWUNCQUpBSUFBdEFBdEJBWEVFUUNBQ0lBQW9BZ3dnQUNnQ0ZDQUFLQUlRSUFJUXR3WnJFS2NZREFFTElBQW9BZ1FoQXlNQVFSQnJJZ0VrQUNBQklBSTJBZ3dnQVNBRE5nSUlJQUVvQWd3aUF5QUJLQUlJRUtzWUlBRWdBeEMzQmpZQ0JDQURJQUVvQWdnUXBSZ2dBeUFCS0FJRUVLSVlJQUZCRUdva0FBc01BUXNnQWhDakdDQUNJQUFvQWhBUS94VWhBeU1BUVJCcklnRWtBQ0FCSUFJMkFnd2dBU0FETmdJSUlBRW9BZ2doRnlBQktBSU1JUU1qQUVFUWF5SUdKQUFnQmlBRE5nSU1JQVlvQWd3UXR3RWhDU01BUVJCcklnY2tBQ0FISUFrMkFnd2pBRUVRYXlBSEtBSU1OZ0lNSUFkQkVHb2tBQ0FHUWNTZHNTYzJBZ2dnQmtILy8vLy9CellDQkNBR1FRaHFJQVpCQkdvUWlBVW9BZ0FoQnlBR1FSQnFKQUFnRnlBSFN3UkFJQU1RN0FvQUN5QURFTGNCSVFjZ0FTZ0NDQ0VKSXdCQkVHc2lCaVFBSUFZZ0J6WUNEQ0FHSUFrMkFnZ2dCaWdDRENBR0tBSUlFUDRWSVFjZ0JrRVFhaVFBSUFNZ0J6WUNCQ0FESUFjMkFnQWdBeWdDQUNBQktBSUlRVFJzYWlFR0lBTVF0d0VnQmpZQ0FDTUFRUkJySWdZa0FDQUdJQU0yQWd3Z0JrRUFOZ0lJSUFZb0Fnd2lBeERxQVNFSElBTWdCeUFERU9vQklBTVEyUVZCTkd4cUlBTVE2Z0VnQXhEWkJVRTBiR29nQXhEcUFTQUdLQUlJUVRSc2FoQzJCaUFHUVJCcUpBQWdBVUVRYWlRQUlBSWdBQ2dDR0NBQUtBSVVJQUFvQWhBUXB4Z0xJQUlRcndNZ0FFRWdhaVFBQ3lBRVFSQnFKQUFnRGlBTEtBSUlLQUlNTmdJTUlBdEJFR29rQUNBSVFZQUJhaVFBSUFWQjlBSnFFQjBhSUFVZ0JVR0lBMm9pQURZQ2hBTWdBQkRVRGhvZ0JVSUFOd0tnQXlBRlFnQTNBcGdESUFWQmdJQ0EvQU0yQXFnRElBMGdCVFlDR0NNQVFkQURheUlJSkFBZ0JTZ0NBQkRPQkNJQUtBS0FCU0lISUFBb0FvUUZRUUowYWlFRFFRQWhBUU5BSUFNZ0IwWUVRQ0FGS0FJQUVNNEVJZ0FvQXRRRUlnY2dBQ2dDMkFSQkFuUnFJUUlnQ0VIQUFtb2hCQU5BSUFJZ0IwWUVRQUpBSUFFRVFDQUlRYUFCYWlJQUlBVVFqQUVnQUJDUUFRc2dCU2dDQUJET0JDSUFLQUtrQWlJSElBQW9BcWdDUVFKMGFpRVFBMEFnQnlBUVJnMEJBa0FnQnlnQ0FDSUVFUHNRRFFBZ0NDQUZOZ0tZQVFKQUlBUkZCRUFnQ0VHWUFXb1EyQmdNQVFzZ0JDZ0NCQ0lBRU9FSUJFQWpBRUhBQVdzaUNTUUFJQWtnQkRZQ0ZDQUpJQVUyQWdnZ0NTQUpRUlJxTmdJTUFrQWdCRVVFUUNBSlFRaHFFTlFZREFFTElBUW9BZ1FpQUVHWStCRkdCRUFnQ1VFb2FpSUJJQVVRakFFZ0NVRXdhaUlBUVpuaUNSQU9HaUFKUVJocUlnSWdCQ2dDSkVFa2FoQlRJQUFnQWhBU0dpQUFRWjdkQ3hBT0dpQUNFQThhSUFVZ0FTQUVLQUlvRUpJQklBQkIrdWtHRUE0YUlBRVFrQUVNQVFzZ0FFSFk5eEZHQkVCQkFDRURJd0JCZ0FKcklnSWtBQ0FFS0FKb0JFQWdBa0hvQUdvaUFDQUZFSXdCSUFKQkFEb0FaQ0FDSUFSQjVBQnFOZ0pnSUFVZ0FDQUNRZUFBYWhEN0FpQUFFSkFCQ3lBQ1FlZ0FhaUlCSUFVUWpBRWdBa0h3QUdvaUJrSDMwQWtRRGhvZ0FrRkFheUlBSUFRb0FpUkJKR29RVXlBR0lBQVFFaG9nQmtHSENCQU9HaUFBRUE4YUlBRVFrQUVnQlJET0dDQUVLQUpJSWdvZ0JDZ0NURUVDZEdvaEVTQUNRU0JxUVFSeUlSUWdBa0hRQUdvaEZRTkFJQW9nRVVjRVFDQUtLQUlBSVFzZ0JTZ0NBQ0lBRUs4QklBQkIzQUZxSUFzUXdSb2lEZ1JBQWtBZ0RpZ0NNQ0lBSUFNZ0RpZ0NOQ0lCYWtFQmF5SURJQU1nQVhCcklnRkdCRUFnQVNFQURBRUxJQUpCNkFCcUloWWlBeUFGRUl3QklBWkI0ZmdJRUE0YUlBWWdBQ0FCYXhBaEdpQUdRZS8yQ0JBT0dpQURFSkFCSUFNZ0JSQ01BU0FDUVNCcVFjYS9BeEFVSVFNakFFRXdheUlCSkFBZ0JVRUVhaEFjSUFNb0FnQWhEeUFCSUFNb0FnUWdBeTBBQ3lJU0lCSkJHSFJCR0hWQkFFZ2lFaHMyQWd3Z0FTQVBJQU1nRWhzMkFnZ2dBU0FCS1FNSU53TUFJQUZCRUdvaUVpQUZRWXdDYWlBQkVKOEVJQUpCUUdzaUR5QVNFRk1nQVVFd2FpUUFJQVlnRHhBU0dpQUdRYzZZQ0JBT0dpQVBFQThhSUFNUUR4b2dGaENRQVFzZ0RpZ0NPQ0FBYWlFREN5QUNRb0NBZ0lEQUFEY0NWQ0FDSUFKQlFHc2lBRFlDVUNBQUlBdEJRR3NpQVNnQ0FCRFdBaUFMS0FJOElnQWdBU2dDQUVFQ2RHb2hEd05BSUFBZ0QwWUVRQ0FDS0FKVUJFQWdBa0hvQUdvaUFDQUZFSXdCSUFKQkFEb0FEQ0FDSUJVMkFnZ2dCU0FBSUFKQkNHb1Erd0lnQUJDUUFRc2dBa0hvQUdvaUFDQUZFSXdCSUFKQklHb2lBU0FMS0FJa1FTUnFFRk1nQmlBQkVCSWFJQVpCN0xVTUVBNGFJQUVRRHhvZ0JTQUFJQXNvQWlnUWtnRWdCa0hVbUFnUURob2dDa0VFYWlFS0lBQVFrQUVnQWtGQWF4QmVEQU1GSUFJZ0FDZ0NBQ0lCTmdJOEFrQWdBU2dDQkVHZ2d4SkdCRUFnQWtIb0FHb2lBU0FGRUl3QklBWkJnKzRNRUE0YUlBSkJBVFlDSENBQ0lBSW9BancyQWhRZ0FpQUNRUlJxTmdJWUlBSWdBaWtER0RjREFDQUNRU0JxSUFJUWx3SWhEaUFDSUJRMkFqQWdBaUFPSUFJb0FpUkhPZ0EwSUFVZ0FTQUNRVEJxRVBzQ0lBNFFxQUVnQmtIWGtnY1FEaG9nQVJDUUFRd0JDeUFDUVVCcklBSkJQR29RY1FzZ0FFRUVhaUVBREFFTEFBc0FDd3NnQlJETkdDQUNRZWdBYWlJQUlBVVFqQUVnQWtId0FHcEJnZ2dRRGhvZ0FCQ1FBU0FDUVlBQ2FpUUFEQUVMSUFsQkNHb1ExQmdMSUFsQndBRnFKQUFNQVFzZ0FFSDQ4dzlHQkVBakFFSFFBV3NpQUNRQUlBUW9BbWdFUUNBQVFUaHFJZ0VnQlJDTUFTQUFRUUE2QURRZ0FDQUVRZVFBYWpZQ01DQUZJQUVnQUVFd2FoRDdBaUFCRUpBQkN5QUFRVGhxSUFVUWpBRWdBRUZBYXlJQlFlU1JDaEFPR2lBQVFTQnFJZ0lnQkNnQ0pFRWthaEJUSUFFZ0FoQVNHaUFCUVpuL0NCQU9HaUFDRUE4YUlBUW9Ba2dpQWlBRUtBSk1RUUowYWlFSlFRRWhCZ05BSUFJZ0NVWUVRQ0FCUWUvMkNCQU9HZ0pBSUFRb0FsUkZCRUFnQkNnQ2ZFVU5BUXNnQVVIVjJ3c1FEaG9nQkNnQ2ZBUkFJQUJCQURvQUZDQUFJQVJCK0FCcU5nSVFJQVVnQUVFNGFpQUFRUkJxRVBzQ0lBRkI5L0FNRUE0YUN5QUZJQUJCT0dvZ0JDZ0NWQkNTQVFzZ0JDZ0NXQVJBSUFGQjkvQU1FQTRhSUFVZ0FFRTRhaUFFS0FKWUVOUUVDeUFBUVRocUVKQUJJQVFvQWxnaUFRUkFJQUJCQURvQURDQUFJQUZCeEFCcU5nSUlJQVVnQUVFSWFoQ01CU0FBUVRocUlnRWdCUkNNQVNBQVFVQnJRWUlJRUE0YUlBRVFrQUVMSUFCQjBBRnFKQUFNQXdzZ0FpZ0NBQ0VESUFaRkJFQWdBVUgwN1F3UURob0xJQU1vQWp3RVFDQUFRUUE2QUJ3Z0FDQURRVGhxTmdJWUlBVWdBRUU0YWlBQVFSaHFFUHNDSUFGQjkvQU1FQTRhQ3lBQVFTQnFJZ1lnQXlnQ0pFRWthaEJUSUFFZ0JoQVNHaUFCUWV5MURCQU9HaUFHRUE4YUlBVWdBRUU0YWlBREtBSW9FSklCSUFKQkJHb2hBa0VBSVFZTUFBc0FDeUFBRU4wRkJFQWdDRUc0QW1vaUFDQUZFSXdCSUFVZ0FDQUVFTmNZSUFBUWtBRU1BUXNnQUVIQTlnOUdCRUFnQlNBRUVOWVlEQUVMSUFoQm1BRnFFTmdZQ3lBRUlBVW9BZ0FRemdRaUFDZ0NxQUpCQW5RZ0FDZ0NwQUpxUVFScktBSUFSZzBBSUFnZ0JSQ01BU0FJRUpBQkN5QUhRUVJxSVFjTUFBc0FDd1VnQnlnQ0FDRUJJQWhCdUFKcUlnQWdCUkNNQVNBQUlBRkJKR29RMVJnZ0JFSDY2UVlRRGhvZ0IwRUVhaUVISUFBUWtBRkJBU0VCREFFTEN5QUlRZEFEYWlRQUJTQUhLQUlBSVFJakFFR2dBV3NpQVNRQUlBRkJDR29nQlJDTUFTQUJRUkJxSWdSQjhyMEtFQTRhSUFJb0FqUWlBQ0FDS0FJNFFRSjBhaUVHQTBBZ0FDQUdSd1JBSUFBb0FnQWlDU0FDS0FJMEtBSUFSd1JBSUFSQjlPME1FQTRhQ3lBQlFRaHFJQWtvQWlRUXBSc2dBRUVFYWlFQURBRUxDeUFFUWZycEJoQU9HaUFCUVFocUVKQUJJQUZCb0FGcUpBQWdCMEVFYWlFSFFRRWhBUXdCQ3dzZ0RDQUZLQUwwQWlBRktBTDRBa1k2QUFBakFFRWdheUlHSkFBZ0JpQU5RUWhxSWdNMkFod2dCaUFGUWZRQ2FqWUNHQ0FHS0FJWUlRSWpBRUVRYXlJQUlBWkJFR29pQkRZQ0RDQUFLQUlNSWdGQkFUb0FBQ0FCUVFFNkFBRWdBVUVCT2dBQ0lBRkJBVG9BQXlBQlFRSTJBZ1FnQmtFQU9nQVRJQUFnQmtFSWFpSUxOZ0lNSUFBZ0JEWUNDQ0FBS0FJTUlBQW9BZ2dwQWdBM0FnQWpBRUdnQVdzaUJDUUFJQVFnQXpZQ25BRWdCQ0FMTmdLWUFTQUVJQUkyQXBRQklBUW9BcGdCSVFJakFFRVFheUlBSkFBZ0FDQUVOZ0lNSXdCQkVHc2lCeUFBS0FJTUlnRTJBZ3dnQnlnQ0RFSDA0aEkyQWdBZ0FVSGc0aEkyQWdBZ0FVRUVhaEJKR2lBQVFSQnFKQUFnQkNnQ2xBRWhBQ01BUVlBQ2F5SUJKQUFnQVNBQ05nTDhBU0FCSUFBMkF2Z0JJQUVnQkRZQzlBRWdBU2dDL0FFaENpQUJLQUwwQVNFQ0l3QkJFR3NpQUNRQUlBQWdBVUhZQUdvMkFnd2dBQ0FDTmdJSUlBQW9BZ3dpQWlBQUtBSUlOZ0lBSXdCQkVHc2lCeUFDUVFScU5nSU1JQWNvQWd3aUIwRUFOZ0lBSUFkQkFEb0FCQ0FDUVF4cUVFa2FJQUJCRUdva0FDQUJRUUU2QUZjZ0FTQUJLQUw0QVRZQ1VDQUJLQUpRSVFJakFFRVFheUlBSkFBZ0FDQUNOZ0lFSUFBb0FnUWhCeU1BUVJCcklnSWtBQ0FDSUFjMkFnUWdBaUFDS0FJRUlnY2dCeWdDQUJDVkdEWUNDQ0FDS0FJSUlRY2dBa0VRYWlRQUlBQWdCellDQ0NBQUtBSUlJUUlnQUVFUWFpUUFJQUVnQWpZQ1NDQUJLQUpRSVFJakFFRVFheUlBSkFBZ0FDQUNOZ0lFSUFBb0FnUWhCeU1BUVJCcklnSWtBQ0FDSUFjMkFnUWdBaUFDS0FJRUlnY2dCeWdDQkJDVkdEWUNDQ0FDS0FJSUlRY2dBa0VRYWlRQUlBQWdCellDQ0NBQUtBSUlJUUlnQUVFUWFpUUFJQUVnQWpZQ1FBTkFJd0JCRUdzaUFDUUFJQUFnQVVISUFHbzJBZ3dnQUNBQlFVQnJOZ0lJSUFBb0Fnd2hCeUFBS0FJSUlRZ2pBRUVRYXlJQ0pBQWdBaUFITmdJTUlBSWdDRFlDQ0NBQ0tBSU1FSklDSUFJb0FnZ1FrZ0pHSVFjZ0FrRVFhaVFBSUFCQkVHb2tBQ0FIUVg5elFRRnhCRUFnQVVFSWFpQUJRY2dBYWhDU0FoREZCeG9nQVVFQU5nSUFJQUZCQURvQUJDQUJRZGdBYWlBQkVMTUdJQUV0QUZkQkFYRkZCRUFnQVVIWUFHb1F6Z2dMSXdCQnNBSnJJZ0FrQUNBQUlBbzJBcXdDSUFBZ0FVRUlhaUlQTmdLb0FpQUFJQUZCMkFCcU5nS2tBaUFBS0FLc0FpRUhJQUFnQUNnQ3FBSkJCR28yQXFBQ0lBQWdBQ2dDb0FJMkFwd0NJQUFnQUNnQ3FBSW9BaWdFZnlBQUtBS29BaWdDS0N3QUFFRUFSd1ZCQUF0QkFYRTZBSnNDSUFBb0FxUUNJUUlnQUVFQU5nS1FBaUFBUVFFNkFKUUNJQUlnQUVHUUFtb1Fzd1lnQUVHQUFtb2lDQkRIRGlNQVFTQnJJZ0lrQUNBQ0lBZzJBaHdnQWtFR05nSVlJQUlvQWhnZ0FpZ0NIQ0lJRUxFR1N3UkFJQUlvQWhnZ0NCQ2RHRXNFUUNBSUVPd0tBQXNnQWlBSUVMY0JOZ0lVSUFJZ0FpZ0NHQ0FJRU1NSElBSW9BaFFRbkJnZ0NDQUNFSnNZSUFJUW1oZ0xJQUpCSUdva0FBSkFBa0FnQnkwQUFFRUJjVVVOQUNBQUtBS2dBaWdDRUVVTkFBSkFJQUFvQXB3Q0tBSUFCRUFnQUVIWUFXb2lBaUFBS0FLZ0FpZ0NFRUhWNmdZUXVBSWdBRUhJQVdvaUNDQUFLQUtjQWhDZ0dDQUFRZWdCYWlJSklBSWdDQkJPSUFCQkFEWUM5QUVnQUVFQU9nRDRBU0FBUVlBQ2FpQUpFTTBJSUFrUXhBY2dDQkFQR2lBQ0VBOGFEQUVMSUFCQnNBRnFJZ0lnQUNnQ29BSW9BaEFRVkJvZ0FFRUFOZ0s4QVNBQVFRQTZBTUFCSUFCQmdBSnFJQUlRelFnZ0FoREVCd3NNQVFzZ0FDZ0NuQUlvQWdBRVFDQUFRWmdCYWlJQ0lBQW9BcHdDRUtBWUlBQkJBRFlDcEFFZ0FFRUFPZ0NvQVNBQVFZQUNhaUFDRU0wSUlBSVF4QWNMQ3lBQVFRQTJBcFFCQWtBQ1FBSkFBa0FnQUNnQ3FBSW9BZ0JCQVdzT0JBQUJBZ0lEQ3lBQVFRUTJBcFFCREFJTElBQkJBallDbEFFTUFRc2dBRUVHTmdLVUFRc2dCeTBBQVVFQmNRUkFJd0JCRUdzaUFpQUFLQUtvQWlnQ0FEWUNDQUpBQWtBQ1FBSkFBa0FDUUFKQUlBSW9BZ2dPQlFBQkFnTUVCUXNnQWtIKzNBTTJBZ3dNQlFzZ0FrSGZ2Z00yQWd3TUJBc2dBa0dQMUFFMkFnd01Bd3NnQWtIOTB3RTJBZ3dNQWdzZ0FrSDVsUU0yQWd3TUFRc2dBa0hjK0F3MkFnd0xJQUJCZ0FGcUlnZ2dBaWdDREJBVUdpQUFJQUFvQXBRQk5nS01BU0FBUVFFNkFKQUJJQUJCZ0FKcUlBZ1F6UWdnQ0JERUJ3c2dBQzBBbXdKQkFYRUVRQ0FBUWVnQWFpSUNJQUFvQXFnQ0tBSW9FQlFhSUFBZ0FDZ0NsQUUyQW5RZ0FFRUFPZ0I0SUFCQmdBSnFJQUlRelFnZ0FoREVCd3NnQUVFQU5nSmtBMEFnQUNnQ1pDQUFRWUFDYWhEREIwa0VRQ0FBS0FKa0JFQWdBQ2dDcEFKQjkvQU1FSjhZQ3lBQUtBS2tBaUVDSUFBZ0FFR0FBbW9nQUNnQ1pCREREaWdDRERZQ1dDQUFJQUJCZ0FKcUlBQW9BbVFRd3c0dEFCQkJBWEU2QUZ3Z0FpQUFRZGdBYWhDekJpQUFLQUtrQWlBQVFZQUNhaUFBS0FKa0VNTU9FSjRZSUFBZ0FDZ0NaRUVCYWpZQ1pBd0JDd3NnQUNnQ3BBSWhBaUFBUVFBMkFsQWdBRUVCT2dCVUlBSWdBRUhRQUdvUXN3WWpBRUVRYXlJQ0lBQkJnQUpxTmdJTUlBSW9BZ3dpQWlnQ0FDQUNLQUlFUndSQUlBQW9BcVFDUWUyMURCQ2ZHQXNnQUNnQ3BBSWdBQ2dDcUFKQkdHb1FuaGdDUUNBSExRQUNRUUZ4UlEwQUlBQW9BcUFDS0FJUVJRMEFJQUFvQXB3Q0tBSUFSUTBBSUFBb0FxUUNFTTRJSUFBb0FxUUNJUUlnQUVFQU5nSklJQUJCQURvQVRDQUNJQUJCeUFCcUVMTUdJQUFnQUNnQ25BSW9BZ0EyQWtRRFFDQUFLQUpFSUFBb0Fwd0NLQUlJVFFSL0lBQW9Ba1FnQUNnQ29BSW9BaEJCR0dvUXl3ZE5CVUVBQzBFQmNRUkFJQUFnQUNnQ29BSW9BaEJCR0dvZ0FDZ0NSRUVCYXhER0RqWUNRQ0FBSUFBb0FrQVF1QUUyQWp3Z0FFRUJPZ0E3SUFBZ0FDZ0NRRFlDTkNBQUtBSTBJUWdqQUVFUWF5SUNKQUFnQWlBSU5nSU1JQUlvQWd3UWtnSWhDQ0FDUVJCcUpBQWdBQ0FJTmdJd0lBQW9BalFoQ0NNQVFSQnJJZ0lrQUNBQ0lBZzJBZ3dqQUVFUWF5SUlJQUlvQWd3MkFnd2dDQ2dDRENJSUtBSUFJQWdvQWdScUlRZ2dBa0VRYWlRQUlBQWdDRFlDTEFOQUlBQW9BakFnQUNnQ0xFY0VRQ0FBSUFBb0FqQXRBQUE2QUNzQ1FDQUFMQUFyUVFsR0JFQWdBQ2dDcEFKQklDQUhLQUlFRUxJR0RBRUxJQUFvQXFRQ0lRZ2pBRUVRYXlJQ0pBQWdBaUFJTmdJTUlBSWdBRUVyYWpZQ0NDQUNLQUlNUVF4cUlBSW9BZ2dRc2hnZ0FrRVFhaVFBQ3lBQUxBQXJRWUFCY1FSQUlBQkJBRG9BT3dzZ0FDQUFLQUl3UVFGcU5nSXdEQUVMQ3lBQUtBS2tBaERPQ0NBQUxRQTdRUUZ4QkVBZ0FDZ0NwQUloQWlBQVFRYzJBaUFnQUVFQU9nQWtJQUlnQUVFZ2FoQ3pCaUFBSUFCQlBHbzJBaEFnQUNBQUtBSkFOZ0lVSUFBZ0J6WUNHQUpBQWtBZ0FDZ0NSQ0FBS0FLY0FpZ0NBRWNOQUNBQUtBSkVJQUFvQXB3Q0tBSUlSdzBBSUFBb0FxUUNRU0FnQUVFUWFpSUNRUUVnQUNnQ25BSW9BZ1FRd2djUXNnWWdBQ2dDcEFJaENDQUFJQUlnQUNnQ25BSW9BZ1FnQUNnQ25BSW9BZ3dRd2djMkFnd2dBRUVCTmdJSUlBaEIzZ0FnQUVFTWFpQUFRUWhxRUlrRktBSUFFTElHREFFTEFrQWdBQ2dDUkNBQUtBS2NBaWdDQUVZRVFDQUFLQUtrQWtFZ0lBQkJFR29pQWtFQklBQW9BcHdDS0FJRUVNSUhFTElHSUFBb0FxUUNRZDRBSUFJZ0FDZ0NuQUlvQWdRZ0FDZ0NQRUVCYWhEQ0J4Q3lCZ3dCQ3dKQUlBQW9Ba1FnQUNnQ25BSW9BZ2hHQkVBZ0FDZ0NwQUpCM2dBZ0FFRVFha0VCSUFBb0Fwd0NLQUlNRU1JSEVMSUdEQUVMSUFBb0FxUUNRZDRBSUFCQkVHcEJBU0FBS0FJOFFRRnFFTUlIRUxJR0N3c0xJQUFvQXFRQ0VNNElDeUFBSUFBb0FrUkJBV28yQWtRTUFRc0xJQUFvQXFRQ0lRSWdBRUVBTmdJQUlBQkJBRG9BQkNBQ0lBQVFzd1lMSXdCQkVHc2lDQ1FBSUFnZ0FFR0FBbW8yQWdnZ0NDQUlLQUlJSWdjMkFnd2dCeENYR0NBSEtBSUFCRUFqQUVFUWF5SUpKQUFnQ1NBSE5nSU1JQWtvQWd3aUFpRU9JQUlvQWdBaEVDTUFRUkJySWdJa0FDQUNJQTQyQWd3Z0FpQVFOZ0lJSUFJZ0FpZ0NEQ0lPS0FJRU5nSUVBMEFnQWlnQ0NDQUNLQUlFUndSQUlBNFF0d0VoRUNBQ0lBSW9BZ1JCRkdzaUVUWUNCQ0FRSUJFUWd3RVFsQmdNQVFzTElBNGdBaWdDQ0RZQ0JDQUNRUkJxSkFBZ0NVRVFhaVFBSUFjUXR3RWdCeWdDQUNBSEVMRUdFSllZQ3lBSUtBSU1HaUFJUVJCcUpBQWdBRUd3QW1va0FDQUJRUUE2QUZjZ0R4Q0hCU01BUVJCcklnQWdBVUhJQUdvMkFnd2dBQ2dDRENJQUlBQW9BZ0JCTkdvMkFnQU1BUXNMSUFvdEFBTkJBWEVFUUNBQlFkZ0FhaERPQ0FzakFFRVFheUlBSkFBZ0FDQUJRZGdBYWpZQ0RDQUFLQUlNSWdJUW9SZ2dBa0VNYWhCUklBQkJFR29rQUNBQlFZQUNhaVFBSXdCQkVHc2lBQ1FBSUFBZ0F6WUNEQ0FBSUFRMkFnZ2dBeUFBS0FJSVFRUnFFTzBLSUFCQkVHb2tBQ0FFRU1BT0dpQUVRYUFCYWlRQUlBc1Fnd0VhSUFaQklHb2tBQ0FNUVFScUlnSWdBeENlQVNBREVBOGFJQU1nQlVHSUEyb1EwUTRnREVFUWFpSUJJQU1RbmdFZ0F4QVBHaUFOS0FJWUlRQWdEVUVBTmdJWUlBQUVRQ0FBQkVBZ0FFR1lBMm9RbVFzZ0FFR0lBMm9RMHc0Z0FFSDBBbW9RSGlBQVFRUnFFSTRFR2dzZ0FCQWZDeUFOUVNCcUpBQWdEQ2dDRUNBQklBd3RBQnNpQUVFWWRFRVlkVUVBU0NJRkd5QU1LQUlVSUFBZ0JSc1FEU0FCRUE4YUlBSVFEeG9nRXhDOEF5QU1RWUFEYWhBeUdpQU1RWkFEYWlRQUJVSFFzeUFnQVVFWWFoQVNFT0lCRU9JQkdpQUJRVFJxSVFFTUFRc0xDd3NBSUFCQnVQc2ZFTzBDQ3hJQUlBQkJoQUZCL2Y0RFFYeEJBeERLQVFzTEFDQUFRWlQ3SHhEdEFnc0xBQ0FBUWZENkh4RHRBZ3NMQUNBQVFjejZIeER0QWdzTEFDQUFRYWo2SHhEdEFnc0xBQ0FBUVlUNkh4RHRBZ3NRQUNBQUlBRkJxTmdNUWZFaEVMVURDN3dCQVFWL0l3QkJFR3NpQXlRQUlBTWdBU2tDQURjRENDQURJQUlwQWdBM0F3QWpBRUVRYXlJQ0pBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJQk5nSU1JQUlnQVRZQ0NDTUFRUkJySWdFa0FDQUFRWXdCYWlJRUVMMEtJUVVnQWlnQ0NDRUdJQUFvQWdnaEJ5QUJJQU1wQWdnM0F3Z2dBU0FES1FJQU53TUFJQVFnQlNBSElBWWdBRUhZQW1vZ0FVRUlhaUFCRUlBTUlnQVFLQ0FFSUFRb0FoaEJBV28yQWhnZ0FVRVFhaVFBSUFKQkVHb2tBQ0FEUVJCcUpBQWdBQXNMQUNBQVFhejRIeER0QWdzTkFDQUFJQUZCclBnZkVOQU1DenNCQW45QkFpRUNJQUFoQXlBQlFRSlBCRUJCZnlBQlFRSjBJQUZCLy8vLy93TkxHeEFWSVFNZ0FTRUNDeUFBSUFNMkFnZ2dBQ0FDTmdJUUN3c0FJQUJCblBjZkVPMENDdzBBSUFBZ0FVR2M5eDhRMEF3TEN3QWdBRUd3OWg4UTdRSUxDd0FnQUVHTTloOFE3UUlMRlFBZ0FDQUJRYkxaREVFSlFiZ2lRYlFoRUlnVEM4RUJBUUovSXdCQm9BRnJJZ1lrQUFKQUlBQW9BZ0FnQkJCUVJRUkFJQVpCa0FGcUlnQWdBU0FDRUxNQ0lBWkJDR29pQVNBQVFiN05CeEF0SUFNZ0FSQ0pBaUVGSUFFUUR4b2dBQkFQR2d3QkN5QUFLQUlBSUFRUVBpSUVRU0JHRFFBZ0JrRUlhaERPQVNFQUlBWkJrQUZxSWdVZ0FTQUNFTE1DSUFBZ0JSQVNRZTJtQ2hBT0lBUVFJVUg4bHdnUURob2dCUkFQR2lBRklBQkJCR29RUWlBRElBVVFpUUloQlNBR1FaQUJhaEFQR2lBQUVMc0JHZ3NnQmtHZ0FXb2tBQ0FGQzhFQkFRSi9Jd0JCb0FGcklnWWtBQUpBSUFBb0FnQWdCQkIzUlFSQUlBWkJrQUZxSWdBZ0FTQUNFTE1DSUFaQkNHb2lBU0FBUWZmTkJ4QXRJQU1nQVJDSkFpRUZJQUVRRHhvZ0FCQVBHZ3dCQ3lBQUtBSUFJQVFRUGlJRVFTQkdEUUFnQmtFSWFoRE9BU0VBSUFaQmtBRnFJZ1VnQVNBQ0VMTUNJQUFnQlJBU1FlMm1DaEFPSUFRUUlVSDhsd2dRRGhvZ0JSQVBHaUFGSUFCQkJHb1FRaUFESUFVUWlRSWhCU0FHUVpBQmFoQVBHaUFBRUxzQkdnc2dCa0dnQVdva0FDQUZDMEFBSUFBZ0FTa0NBRGNDQUNBQUlBRW9BZ2cyQWdnZ0FFRU1haUFCUVF4cUVMUUNHaUFBUVNCcUlBRkJJR29Rd2dFZ0FFSHNBR29nQVVIc0FHb1F3Z0VMRlFBZ0FFR0E4eDgyQWdBZ0FFRUVhaERvQVNBQUN3c0FJQUJCOFBFZkVPMENDd3NBSUFCQnpQRWZFTzBDQ3dzQUlBQkJxUEVmRU8wQ0MyZ0FJQUFnQVNrQ0FEY0NBQ0FBUVFocUlnQWdBVUVJYWlJQktBSUFOZ0lBSUFBZ0FTZ0NCRFlDQkNBQUlBRW9BZ2cyQWdnZ0FDQUJLQUlNTmdJTUlBQkJFR29nQVVFUWFoQzBBaG9nQUVFa2FpQUJRU1JxRU1JQklBQkI4QUJxSUFGQjhBQnFFTUlCQ3dzQUlBQkJoUEVmRU8wQ0N6TUJBWDhnQVVHQWdJQ0FBVThFUUJBQkFBc2dBQ0FCRU5zWUlnSTJBZ0FnQUNBQ05nSUVJQUFnQWlBQlFRUjBhallDQ0F0Z0FRSi9JQUJCQURZQ0NDQUFRZ0EzQWdBZ0FTZ0NCQ0lDSUFFb0FnQWlBMGNFUUNBQUlBSWdBMnRCQkhVUXV4WWdBQ2dDQkNFQ0lBQWdBU2dDQkNBQktBSUFJZ0ZySWdCQkFFb0VmeUFDSUFFZ0FCQjlJQUJxQlNBQ0N6WUNCQXNMSkFBZ0FDQUJLQUlBTmdJQUlBQkJCR29nQVVFRWFoQ2xBaG9nQUNBQktBSVFOZ0lRQzdNREFRSi9Jd0JCb0FGcklnWWtBQUpBQWtBZ0FDZ0NBQ0FGRUNBaUJ5OEJIa0VjUndSQUlBWkJrQUZxSWdBZ0FTQUNFTE1DSUFaQkNHb2lBU0FBUWUrVEJ4QXRJQVFnQVJDSkFpRUZJQUVRRHhvZ0FCQVBHZ3dCQ3lBQUtBSUFJQWNvQWdBb0FnZ2lCUkIzUlFSQUlBWkJrQUZxSWdBZ0FTQUNFTE1DSUFaQkNHb2lBU0FBUWRYTkJ4QXRJQVFnQVJDSkFpRUZJQUVRRHhvZ0FCQVBHZ3dCQ3lBQUtBSUFJQVVRUGlJRlFTQkhCRUFnQmtFSWFoRE9BU0VBSUFaQmtBRnFJZ01nQVNBQ0VMTUNJQUFnQXhBU1FmMm1DaEFPSUFVUUlVSDhsd2dRRGhvZ0F4QVBHaUFESUFCQkJHb1FRaUFFSUFNUWlRSWhCU0FHUVpBQmFoQVBHaUFBRUxzQkdnd0JDMEVBSVFVZ0EwVU5BQ0FHUWdBM0F3QWdBQ2dDQUNBSEtBSUFLQUlNSUFZUXd3VkZEUUVnQmlrREFDQURyVkVOQUNBR1FRaHFFTTRCSVFBZ0JrR1FBV29pQXlBQklBSVFzd0lnQUNBREVCSkJ2dVVKRUE0Z0Jpa0RBQkREQkVHbHF3Y1FEaG9nQXhBUEdpQURJQUJCQkdvUVFpQUVJQU1RaVFJaEJTQUdRWkFCYWhBUEdpQUFFTHNCR2dzZ0JrR2dBV29rQUNBRkR3dEJySjBKUVpDZEFrR3VDRUhMNVFFUUFBQUxDd0FnQUNBQlFod1F4QklMRFFBZ0FDQUJRYWp4SHhEUURBdi9Cd0VHZnlNQVFiQUdheUlGSkFBZ0FTZ0NCQ2dDQUNFSkFrQUNRQUpBQWtBZ0FDZ0NBQ2dDQUNnQ0FCQkhSUTBBQWtBQ1FBSkFBa0FDUUNBRUVQY0JJZ1pCQVdzT0F3SUJBd0FMSUFaQi8vLy8vd2RHRFFNTElBVkI4QVJxSWdjZ0FDZ0NBRUZ5SUFRUUVDQUhRWU9XQ2hBT0dpQUhJQUFvQWdCQmdBTnFRUndnQ1JDUEFSQU9HaUFIUWR1K0RCQU9HaUFGUWVBRWFpSUlJQUFnQVNBQ0lBTWdCRUgvLy8vL0J4Q0tBU0FISUFnUUVob2dCMEgzOEF3UURob2dCVUhRQkdvaUFTQUFJQVFRZ0FJZ0J5QUJFQklhSUFVb0Fxd0dJUVlnQVJBUEdpQUlFQThhSUFjUUVRd0VDeUFBS0FJUURRUWdBU2dDQkNnQ0FDRUdJQVVnQkNnQ0tEWUM0QVFnQUVFRWFpQUZRZUFFYWhDWkFTRUhJQVZCQVRZQ25BTWdCVUg1M0FjMkFwZ0RJQVZCcHlKQnF5SWdCa0VMUmhzMkFwUURJQVVnQURZQ2tBTWdCVUVBTmdLTUF5QUZRYjhRTmdLSUF5QUZRYUFEYWlBQkVMUUNHaUFGUWJRRGFpQUNFTUlCSUFWQmdBUnFJQVFRd2dGQnlBRVFGU0lHUWZ6OUh6WUNBQ0FHSUFVcEE0Z0ROd0lFSUFaQkRHb2dCVUdRQTJvaUNCQ3JBeUFGSUFZMkFvQUZJQWNnQlVId0JHb2lCaENUQVNBR0VCWWdDQkNjQWd3QkN5QUFLQUlRRFFRZ0FTZ0NCQ2dDQUNFR0lBVWdCQ2dDS0RZQzRBUWdBRUVFYWlBRlFlQUVhaENaQVNFSElBVkJBallDMUFFZ0JVRzIxUWMyQXRBQklBVkJxQ0pCckNJZ0JrRUxSaHMyQXN3QklBVWdBRFlDeUFFZ0JVRUFOZ0xFQVNBRlFiOFFOZ0xBQVNBRlFkZ0JhaUFCRUxRQ0dpQUZRZXdCYWlBQ0VNSUJJQVZCdUFKcUlBUVF3Z0ZCeUFFUUZTSUdRYUQrSHpZQ0FDQUdJQVVwQThBQk53SUVJQVpCREdvZ0JVSElBV29pQ0JDckF5QUZJQVkyQW9BRklBY2dCVUh3QkdvaUJoQ1RBU0FHRUJZZ0NCQ2NBZ3NnQUVFb2FpRUhJQUFvQWlRaEJnTkFJQVlnQjBZTkFTQUdLQUlRSWdoQkFXdEJBazhFUUNBRlFmQUVhaUlISUFBb0FnQkJjaUFFRUJBZ0JVSGdCR29pQ2lBQUtBSUFRYVlpUWFvaUlBbEJDMFliRURjZ0J5QUtFQklhSUFkQmc1WUtFQTRhSUFjZ0FDZ0NBRUdBQTJwQkhDQUpFSThCRUE0YUlBZEJpTTBNRUE0YUlBVkIwQVJxSWdrZ0FDQUJJQUlnQXlBRUlBZ1FpZ0VnQnlBSkVCSWFJQVVvQXF3R0lRWWdDUkFQR2lBS0VBOGFJQWNRRVF3REJTQUdFRXdoQmd3QkN3QUxBQXRCQUNFR0lBQW9BaEFOQUNBRklBUW9BaWcyQXRBRUlBQkJCR29nQlVIUUJHb1FtUUVoQXlBRlFRQTJBdVFFSUFWQjR4QTJBdUFFSUFVZ0FEWUNCQ0FGUVFocUlnY2dCVUhnQkdvZ0JVRUVhaUFCSUFJZ0JCRC9BU0FESUFWQjhBUnFJQWNRL2dFaUFCQ1RBU0FBRUJZZ0J4RG9BUXNnQlVHd0Jtb2tBQ0FHRHd0QjA1RUhRWkNkQWtITkUwSGcxQVFRQUFBTFFkT1JCMEdRblFKQjJoTkI0TlFFRUFBQUM3SUVBUVovSXdCQnNBTnJJZ1lrQUFKQUFrQWdBQ2dDQUNnQ0FDZ0NBQkJIUlEwQUlBUVE5d0VpQjBFQlJpQUhRZi8vLy84SFJuSkZCRUFnQmtId0FXb2lCU0FBS0FJQVFYSWdCQkFRSUFaQjRBRnFJZ2dnQUNnQ0FFR0xJeEEzSUFVZ0NCQVNHaUFGUVlPV0NoQU9HaUFGSUFBb0FnQkJnQU5xUVJ3Z0FTZ0NCQ2dDQUJDUEFSQU9HaUFGUWN2SERCQU9HaUFHUWRBQmFpSUpJQUFnQVNBQ0lBTWdCRUgvLy8vL0J4Q0tBU0FGSUFrUUVob2dCVUgzOEF3UURob2dCa0hBQVdvaUFTQUFJQVFRZ0FJZ0JTQUJFQklhSUFZb0Fxd0RJUWNnQVJBUEdpQUpFQThhSUFnUUR4b2dCUkFSREFJTElBQkJLR29oQlNBQUtBSWtJUWNEUUNBRklBZEdEUUVnQnlnQ0VDSUtRUVJIQkVBZ0JrSHdBV29pQlNBQUtBSUFRWElnQkJBUUlBWkI0QUZxSWdnZ0FDZ0NBRUdLSXhBM0lBVWdDQkFTR2lBRlFZT1dDaEFPR2lBRklBQW9BZ0JCZ0FOcVFSd2dBU2dDQkNnQ0FCQ1BBUkFPR2lBRlFkN2pEQkFPR2lBR1FkQUJhaUlKSUFBZ0FTQUNJQU1nQkNBS0VJb0JJQVVnQ1JBU0dpQUdLQUtzQXlFSElBa1FEeG9nQ0JBUEdpQUZFQkVNQXdVZ0J4Qk1JUWNNQVFzQUN3QUxRUUFoQnlBQUtBSVFEUUFnQmlBRUtBSW9OZ0xRQVNBQVFRUnFJQVpCMEFGcUVKa0JJUU1nQmtFQU5nTGtBU0FHUWVJUU5nTGdBU0FHSUFBMkFzQUJJQVpCQ0dvaUJTQUdRZUFCYWlBR1FjQUJhaUFCSUFJZ0JCRC9BU0FESUFaQjhBRnFJQVVRL2dFaUFCQ1RBU0FBRUJZZ0JSRG9BUXNnQmtHd0Eyb2tBQ0FIQzhrRUFRWi9Jd0JCc0FOcklnWWtBQUpBQWtBZ0FDZ0NBQ2dDQUNnQ0FCQkhSUTBBSUFRUTl3RWlCMEVEUmlBSFFmLy8vLzhIUm5KRkJFQWdCa0h3QVdvaUJTQUFLQUlBUVhJZ0JCQVFJQVpCNEFGcUlnZ2dBQ2dDQUVHRkl4QTNJQVVnQ0JBU0dpQUZRWU9XQ2hBT0dpQUZJQUFvQWdCQmdBTnFRUndnQVNnQ0JDZ0NBQkNQQVJBT0dpQUZRYjIvREJBT0dpQUdRZEFCYWlJSklBQWdBU0FDSUFNZ0JFSC8vLy8vQnhDS0FTQUZJQWtRRWhvZ0JVSDM4QXdRRGhvZ0JrSEFBV29pQVNBQUlBUVFnQUlnQlNBQkVCSWFJQVlvQXF3RElRY2dBUkFQR2lBSkVBOGFJQWdRRHhvZ0JSQVJEQUlMSUFCQktHb2hCU0FBS0FJa0lRY0RRQ0FGSUFkR0RRRUNRQUpBQWtBZ0J5Z0NFQ0lJRGdRQ0FRRUNBQXNnQ0VHVUtVWWdDRUgxS1VaeURRRUxJQVpCOEFGcUlnVWdBQ2dDQUVGeUlBUVFFQ0FHUWVBQmFpSUpJQUFvQWdCQmhDTVFOeUFGSUFrUUVob2dCVUdEbGdvUURob2dCU0FBS0FJQVFZQURha0VjSUFFb0FnUW9BZ0FRandFUURob2dCVUhmelF3UURob2dCa0hRQVdvaUNpQUFJQUVnQWlBRElBUWdDQkNLQVNBRklBb1FFaG9nQmlnQ3JBTWhCeUFLRUE4YUlBa1FEeG9nQlJBUkRBTUxJQWNRVENFSERBQUxBQXRCQUNFSElBQW9BaEFOQUNBR0lBUW9BaWcyQXRBQklBQkJCR29nQmtIUUFXb1FtUUVoQXlBR1FRQTJBdVFCSUFaQjRSQTJBdUFCSUFZZ0FEWUN3QUVnQmtFSWFpSUZJQVpCNEFGcUlBWkJ3QUZxSUFFZ0FpQUVFUDhCSUFNZ0JrSHdBV29nQlJEK0FTSUFFSk1CSUFBUUZpQUZFT2dCQ3lBR1FiQURhaVFBSUFjTDhBVUJDSDhqQUVHd0Eyc2lCaVFBQWtBQ1FBSkFJQUFvQWdBb0FnQW9BZ0FRUjBVTkFDQUJLQUlFS0FJQUlRVWdCQkQzQVNJSFFRRkdJQWRCLy8vLy93ZEdja1VFUUNBRlFRRVE0Z01oQnlBR1FmQUJhaUlGSUFBb0FnQkJjaUFFRUJBZ0JrSGdBV29pQ0NBQUtBSUFJQWNRTnlBRklBZ1FFaG9nQlVHRGxnb1FEaG9nQlNBQUtBSUFRWUFEYWtFY0lBRW9BZ1FvQWdBUWp3RVFEaG9nQlVITHh3d1FEaG9nQmtIUUFXb2lDU0FBSUFFZ0FpQURJQVJCLy8vLy93Y1FpZ0VnQlNBSkVCSWFJQVZCOS9BTUVBNGFJQVpCd0FGcUlnRWdBQ0FFRUlBQ0lBVWdBUkFTR2lBR0tBS3NBeUVISUFFUUR4b2dDUkFQR2lBSUVBOGFJQVVRRVF3REN5QUFRU2hxSVFrZ0FDZ0NKQ0VISUFWQnh5bHJJUW9nQlVFR1JpRUxJQVZCaFM5R0lRd0RRQ0FISUFsR0RRRWdCeWdDRUNFSUFrQUNRQUpBQWtBQ1FBSkFJQW9PSWdJQ0FRRUVCQUVCQkFnSUJBUURBd2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBUVFBQ3lBTERRTWdERVVOQndzZ0NFSENLV3RCQkU4TkJnd0RDeUFJUWNFcGEwRUdTUTBDREFVTElBaEJ3eWxyUVFKUERRUU1BUXNnQ0VIQ0tXdEJBMDhOQXdzZ0J4Qk1JUWNNQUFzQUMwRUFJUWNnQUNnQ0VBMEJJQVlnQkNnQ0tEWUMwQUVnQUVFRWFpQUdRZEFCYWhDWkFTRURJQVpCQURZQzVBRWdCa0hnRURZQzRBRWdCaUFBTmdMQUFTQUdRUWhxSWdVZ0JrSGdBV29nQmtIQUFXb2dBU0FDSUFRUS93RWdBeUFHUWZBQmFpQUZFUDRCSWdBUWt3RWdBQkFXSUFVUTZBRU1BUXNnQlVFQUVPSURJUWNnQmtId0FXb2lCU0FBS0FJQVFYSWdCQkFRSUFaQjRBRnFJZ2tnQUNnQ0FDQUhFRGNnQlNBSkVCSWFJQVZCMzVVS0VBNGFJQVVnQUNnQ0FFR0FBMnBCSENBQktBSUVLQUlBRUk4QkVBNGFJQVZCclpnS0VBNGFJQVVnQUNnQ0FFR0FBMnBCRENBSUVJOEJFQTRhSUFWQjEvZ01FQTRhSUFaQjBBRnFJZ29nQUNBQklBSWdBeUFFSUFnUWlnRWdCU0FLRUJJYUlBWW9BcXdESVFjZ0NoQVBHaUFKRUE4YUlBVVFFUXNnQmtHd0Eyb2tBQ0FIQ3hnQUlBQWdBU0FDSUFNZ0JFSGZFRUhMeHd4QkFSQ1ZDQXNZQUNBQUlBRWdBaUFESUFSQjNoQkJ2YjhNUVFNUWxRZ0xHQUFnQUNBQklBSWdBeUFFUWQwUVFjdkhERUVCRUpVSUN4Z0FJQUFnQVNBQ0lBTWdCRUhjRUVITHh3eEJBUkNWQ0F1SEF3RUdmeU1BUWJBRGF5SUZKQUFnQVNnQ0JDZ0NBQ0VIQWtBQ1FDQUFLQUlBS0FJQUtBSUFFRWRGRFFBZ0JCRDNBU0lJUVFGR0lBaEIvLy8vL3dkR2NrVUVRQ0FGUWZBQmFpSUdJQUFvQWdCQmNpQUVFQkFnQlVIZ0FXb2lDaUFBS0FJQVFlMGdFRGNnQmlBS0VCSWFJQVpCZzVZS0VBNGFJQVlnQUNnQ0FFR0FBMnBCSENBSEVJOEJFQTRhSUFaQnk4Y01FQTRhSUFWQjBBRnFJZ2NnQUNBQklBSWdBeUFFUWYvLy8vOEhFSW9CSUFZZ0J4QVNHaUFHUWZmd0RCQU9HaUFGUWNBQmFpSURJQUFnQkJDQUFpQUdJQU1RRWhvZ0JTZ0NyQU1oQ1NBREVBOGFJQWNRRHhvZ0NoQVBHaUFHRUJFTElBaEIvLy8vL3dkR0RRQWdDRUVCUncwQkMwRUFJUWtnQUNnQ0VBMEFJQVVnQkNnQ0tEWUMwQUVnQUVFRWFpQUZRZEFCYWhDWkFTRURJQVZCQURZQzVBRWdCVUhiRURZQzRBRWdCU0FBTmdMQUFTQUZRUWhxSWdZZ0JVSGdBV29nQlVIQUFXb2dBU0FDSUFRUS93RWdBeUFGUWZBQmFpQUdFUDRCSWdBUWt3RWdBQkFXSUFZUTZBRUxJQVZCc0FOcUpBQWdDUXV1QkFFRmZ5TUFRYkFEYXlJR0pBQWdBU2dDQkNnQ0FDRUlBa0FDUUNBQUtBSUFLQUlBS0FJQUVFZEZEUUFnQkJEM0FTSUhRUUZHSUFkQi8vLy8vd2RHY2tVRVFDQUdRZkFCYWlJRklBQW9BZ0JCY2lBRUVCQWdCa0hnQVdvaUNTQUFLQUlBUWJJaUVEY2dCU0FKRUJJYUlBVkJnNVlLRUE0YUlBVWdBQ2dDQUVHQUEycEJIQ0FJRUk4QkVBNGFJQVZCeThjTUVBNGFJQVpCMEFGcUlnZ2dBQ0FCSUFJZ0F5QUVRZi8vLy84SEVJb0JJQVVnQ0JBU0dpQUZRZmZ3REJBT0dpQUdRY0FCYWlJQklBQWdCQkNBQWlBRklBRVFFaG9nQmlnQ3JBTWhCeUFCRUE4YUlBZ1FEeG9nQ1JBUEdpQUZFQkVNQWdzZ0FFRW9haUVGSUFBb0FpUWhCd05BSUFVZ0IwWU5BU0FIS0FJUVFRVkdCRUFnQmtId0FXb2lCU0FBS0FJQVFYSWdCQkFRSUFaQjRBRnFJZ2tnQUNnQ0FFR3hJaEEzSUFVZ0NSQVNHaUFGUVlPV0NoQU9HaUFGSUFBb0FnQkJnQU5xUVJ3Z0NCQ1BBUkFPR2lBRlFmYmtEQkFPR2lBR1FkQUJhaUlJSUFBZ0FTQUNJQU1nQkVFRkVJb0JJQVVnQ0JBU0dpQUdLQUtzQXlFSElBZ1FEeG9nQ1JBUEdpQUZFQkVNQXdVZ0J4Qk1JUWNNQVFzQUN3QUxRUUFoQnlBQUtBSVFEUUFnQmlBRUtBSW9OZ0xRQVNBQVFRUnFJQVpCMEFGcUVKa0JJUU1nQmtFQU5nTGtBU0FHUWRvUU5nTGdBU0FHSUFBMkFzQUJJQVpCQ0dvaUJTQUdRZUFCYWlBR1FjQUJhaUFCSUFJZ0JCRC9BU0FESUFaQjhBRnFJQVVRL2dFaUFCQ1RBU0FBRUJZZ0JSRG9BUXNnQmtHd0Eyb2tBQ0FIQzk0RUFRcC9Jd0JCc0FOcklnVWtBQ0FCS0FJRUtBSUFJUW9DUUFKQUlBQW9BZ0FvQWdBb0FnQVFSMFVOQUNBRUVQY0JJZ1pCQVVZZ0JrSC8vLy8vQjBaeVJRUkFJQVZCOEFGcUlnWWdBQ2dDQUVGeUlBUVFFQ0FGUWVBQmFpSUhJQUFvQWdCQjhDQVFOeUFHSUFjUUVob2dCa0dEbGdvUURob2dCaUFBS0FJQVFZQURha0VjSUFvUWp3RVFEaG9nQmtITHh3d1FEaG9nQlVIUUFXb2lDQ0FBSUFFZ0FpQURJQVJCLy8vLy93Y1FpZ0VnQmlBSUVCSWFJQVpCOS9BTUVBNGFJQVZCd0FGcUlnRWdBQ0FFRUlBQ0lBWWdBUkFTR2lBRktBS3NBeUVKSUFFUUR4b2dDQkFQR2lBSEVBOGFJQVlRRVF3Q0N5QUFRU2hxSVEwZ0FDZ0NKQ0VJQTBBZ0NDQU5SZzBCSUFnb0FoQWlCa0dUS1d0QkFra2lEaUFHUWZRcGEwRUNTWElnQmtWeVJRUkFJQVZCOEFGcUlnY2dBQ2dDQUVGeUlBUVFFQ0FGUWVBQmFpSUxJQUFvQWdCQjd5QVFOeUFISUFzUUVob2dCMEdEbGdvUURob2dCeUFBS0FJQVFZQURha0VjSUFvUWp3RVFEaG9nQjBHYTFnRVFEaG9nQjBHcTVRd1FEaG9nQlVIUUFXb2lEQ0FBSUFFZ0FpQURJQVFnQmhDS0FTQUhJQXdRRWhvZ0JTZ0NyQU1oQ1NBTUVBOGFJQXNRRHhvZ0J4QVJDeUFPSUFaQjlDbHJRUUpKY2tFQklBWWJSUTBDSUFnUVRDRUlEQUFMQUF0QkFDRUpJQUFvQWhBTkFDQUZJQVFvQWlnMkF0QUJJQUJCQkdvZ0JVSFFBV29RbVFFaEF5QUZRUUEyQXVRQklBVkIyUkEyQXVBQklBVWdBRFlDd0FFZ0JVRUlhaUlHSUFWQjRBRnFJQVZCd0FGcUlBRWdBaUFFRVA4QklBTWdCVUh3QVdvZ0JoRCtBU0lBRUpNQklBQVFGaUFHRU9nQkN5QUZRYkFEYWlRQUlBa0x3UVFCQm44akFFR3dBMnNpQmlRQUlBRW9BZ1FvQWdBaENBSkFBa0FnQUNnQ0FDZ0NBQ2dDQUJCSFJRMEFJQVFROXdFaUIwRUJSaUFIUWYvLy8vOEhSbkpGQkVBZ0JrSHdBV29pQlNBQUtBSUFRWElnQkJBUUlBWkI0QUZxSWdrZ0FDZ0NBRUhXSUVIWklDQUlRY2tpUmhzUU55QUZJQWtRRWhvZ0JVR0RsZ29RRGhvZ0JTQUFLQUlBUVlBRGFrRWNJQWdRandFUURob2dCVUhMeHd3UURob2dCa0hRQVdvaUNDQUFJQUVnQWlBRElBUkIvLy8vL3djUWlnRWdCU0FJRUJJYUlBVkI5L0FNRUE0YUlBWkJ3QUZxSWdFZ0FDQUVFSUFDSUFVZ0FSQVNHaUFHS0FLc0F5RUhJQUVRRHhvZ0NCQVBHaUFKRUE4YUlBVVFFUXdDQ3lBQVFTaHFJUVVnQUNnQ0pDRUhBMEFnQlNBSFJnMEJJQWNvQWhBaUNnUkFJQVpCOEFGcUlnVWdBQ2dDQUVGeUlBUVFFQ0FHUWVBQmFpSUpJQUFvQWdCQjFTQkIyQ0FnQ0VISklrWWJFRGNnQlNBSkVCSWFJQVZCZzVZS0VBNGFJQVVnQUNnQ0FFR0FBMnBCSENBSUVJOEJFQTRhSUFWQml0NE1FQTRhSUFaQjBBRnFJZ2dnQUNBQklBSWdBeUFFSUFvUWlnRWdCU0FJRUJJYUlBWW9BcXdESVFjZ0NCQVBHaUFKRUE4YUlBVVFFUXdEQlNBSEVFd2hCd3dCQ3dBTEFBdEJBQ0VISUFBb0FoQU5BQ0FHSUFRb0FpZzJBdEFCSUFCQkJHb2dCa0hRQVdvUW1RRWhBeUFHUVFBMkF1UUJJQVpCMkJBMkF1QUJJQVlnQURZQ3dBRWdCa0VJYWlJRklBWkI0QUZxSUFaQndBRnFJQUVnQWlBRUVQOEJJQU1nQmtId0FXb2dCUkQrQVNJQUVKTUJJQUFRRmlBRkVPZ0JDeUFHUWJBRGFpUUFJQWNMaHdNQkJuOGpBRUd3QTJzaUJTUUFBa0FDUUNBQUtBSUFLQUlBS0FJQUVFZEZEUUFnQkJEM0FTSUhRUUZHSUFkQi8vLy8vd2RHY2tVRVFDQUZRZkFCYWlJR0lBQW9BZ0JCY2lBRUVCQWdCVUhnQVdvaUNTQUFLQUlBS0FJQUtBSUFFSUVDSUFZZ0NSQVNHaUFHUVltV0NoQU9HaUFHSUFBb0FnQkJnQU5xUVJ3Z0FTZ0NCQ2dDQUJDUEFSQU9HaUFHUWN2SERCQU9HaUFGUWRBQmFpSUtJQUFnQVNBQ0lBTWdCRUgvLy8vL0J4Q0tBU0FHSUFvUUVob2dCa0gzOEF3UURob2dCVUhBQVdvaUF5QUFJQVFRZ0FJZ0JpQURFQklhSUFVb0Fxd0RJUWdnQXhBUEdpQUtFQThhSUFrUUR4b2dCaEFSQ3lBSFFmLy8vLzhIUmcwQUlBZEJBVWNOQVF0QkFDRUlJQUFvQWhBTkFDQUZJQVFvQWlnMkF0QUJJQUJCQkdvZ0JVSFFBV29RbVFFaEF5QUZRUUEyQXVRQklBVkIxeEEyQXVBQklBVWdBRFlDd0FFZ0JVRUlhaUlHSUFWQjRBRnFJQVZCd0FGcUlBRWdBaUFFRVA4QklBTWdCVUh3QVdvZ0JoRCtBU0lBRUpNQklBQVFGaUFHRU9nQkN5QUZRYkFEYWlRQUlBZ0xod0VCQW44akFFSHdBV3NpQXlRQUlBQW9BaEJGQkVBZ0F5QUVLQUlvTmdMc0FTQUFRUVJxSUFOQjdBRnFFSmtCSVFZZ0EwRUFOZ0lVSUFOQjFoQTJBaEFnQXlBQU5nSU1JQU5CR0dvaUJTQURRUkJxSUFOQkRHb2dBU0FDSUFRUS93RWdCaUFEUWRBQmFpQUZFUDRCSWdBUWt3RWdBQkFXSUFVUTZBRUxJQU5COEFGcUpBQkJBQXVpQVFFRWZ3SkFJQUFvQWdnZ0FTZ0NCRWtFUUNBQUVQZ05JQUFnQVNnQ0JCQy9GZ3dCQ3lBQUVQWU5DeUFBSUFFb0FnUWlBallDQkFOQUlBSWdCRXNFUUNBRVFSeHNJZ01nQUNnQ0FHb2hBaUFCS0FJQUlBTnFJUU1nQWtFQU9nQVFJQUpCQURvQUFDQURMUUFRQkVBZ0FpQURFRlFpQlNBREtBSU1OZ0lNSUFWQkFUb0FFQXNnQWlBREtRSVVOd0lVSUFSQkFXb2hCQ0FBS0FJRUlRSU1BUXNMQzdZREFRcC9Jd0JCc0FOcklnVWtBQUpBQWtBZ0FDZ0NBQ2dDQUNnQ0FCQkhSUTBBSUFCQktHb2hEU0FBS0FJa0lRZ0RRQ0FJSUExR0RRRWdDQ2dDRUNJSFFaTXBhMEVDU1NJT0lBZEI5Q2xyUVFKSmNpQUhRUVZHY2tVRVFDQUZRZkFCYWlJR0lBQW9BZ0JCY2lBRUVCQWdCVUhnQVdvaUNpQUFLQUlBUWNraUVEY2dCaUFLRUJJYUlBVkIwQUZxSWdzZ0FDZ0NBQ2dDQUNnQ0FCQ0JBaUFHSUFzUUVob2dCa0dKbGdvUURob2dCaUFBS0FJQVFZQURha0VjSUFFb0FnUW9BZ0FRandFUURob2dCa0dmOHdrUURob2dCa0dyNVF3UURob2dCVUhBQVdvaURDQUFJQUVnQWlBRElBUWdCeENLQVNBR0lBd1FFaG9nQlNnQ3JBTWhDU0FNRUE4YUlBc1FEeG9nQ2hBUEdpQUdFQkVMSUE0Z0IwSDBLV3RCQWtseVJTQUhRUVZIY1EwQ0lBZ1FUQ0VJREFBTEFBdEJBQ0VKSUFBb0FoQU5BQ0FGSUFRb0FpZzJBdEFCSUFCQkJHb2dCVUhRQVdvUW1RRWhBeUFGUVFBMkF1UUJJQVZCMVJBMkF1QUJJQVVnQURZQ3dBRWdCVUVJYWlJR0lBVkI0QUZxSUFWQndBRnFJQUVnQWlBRUVQOEJJQU1nQlVId0FXb2dCaEQrQVNJQUVKTUJJQUFRRmlBR0VPZ0JDeUFGUWJBRGFpUUFJQWtMSUFBZ0FDQUJJQUlnQXlBRVFkUVFRWm5kREVHdUlrSDR2d3hCcnlJUWloTUxJZ0FnQUNBQklBSWdBeUFFUWRNUVFaUGtERUdqSWtFQ1FaSEZERUdrSWhDVUNBc2FBQ0FBSUFFZ0FpQURJQVJCMGhCQnErVU1RWi96Q1JDTEV3c2lBQ0FBSUFFZ0FpQURJQVJCMFJCQnVkNE1RWWdpUVFSQmtNSU1RWWtpRUpRSUMvWURBUVovSXdCQnNBTnJJZ1VrQUFKQUFrQWdBQ2dDQUNnQ0FDZ0NBQkJIUlEwQUFrQUNRQUpBSUFRUTl3RWlCMEVCYXc0REFnRUNBQXNnQjBILy8vLy9CMFlOQVFzZ0JVSHdBV29pQmlBQUtBSUFRWElnQkJBUUlBVkI0QUZxSWdnZ0FDZ0NBRUdHSWhBM0lBWWdDQkFTR2lBR1FlUzhEQkFPR2lBRlFkQUJhaUlKSUFBZ0FTQUNJQU1nQkVILy8vLy9CeENLQVNBR0lBa1FFaG9nQmtIMzhBd1FEaG9nQlVIQUFXb2lBU0FBSUFRUWdBSWdCaUFCRUJJYUlBVW9BcXdESVFjZ0FSQVBHaUFKRUE4YUlBZ1FEeG9nQmhBUkRBSUxJQUJCS0dvaEJpQUFLQUlrSVFjRFFDQUdJQWRHRFFFZ0J5Z0NFQ0lLUVFSSEJFQWdCVUh3QVdvaUJpQUFLQUlBUVhJZ0JCQVFJQVZCNEFGcUlnZ2dBQ2dDQUVHRkloQTNJQVlnQ0JBU0dpQUdRZS9mREJBT0dpQUZRZEFCYWlJSklBQWdBU0FDSUFNZ0JDQUtFSW9CSUFZZ0NSQVNHaUFGS0FLc0F5RUhJQWtRRHhvZ0NCQVBHaUFHRUJFTUF3VWdCeEJNSVFjTUFRc0FDd0FMUVFBaEJ5QUFLQUlRRFFBZ0JTQUVLQUlvTmdMUUFTQUFRUVJxSUFWQjBBRnFFSmtCSVFNZ0JVRUFOZ0xrQVNBRlFkQVFOZ0xnQVNBRklBQTJBc0FCSUFWQkNHb2lCaUFGUWVBQmFpQUZRY0FCYWlBQklBSWdCQkQvQVNBRElBVkI4QUZxSUFZUS9nRWlBQkNUQVNBQUVCWWdCaERvQVFzZ0JVR3dBMm9rQUNBSEN5SUFJQUFnQVNBQ0lBTWdCRUhQRUVHSzR3eEJnaUpCQkVHb3h3eEJneUlRbEFnTDFBd0JCMzhqQUVIUURHc2lCU1FBQWtBQ1FBSkFJQUFvQWdBb0FnQW9BZ0FRUjBVTkFBSkFBa0FDUUFKQUlBUVE5d0VpQjBFQmF3NERBd0VDQUFzZ0IwSC8vLy8vQjBZTkFnc2dCVUdRQzJvaUJpQUFLQUlBUVhJZ0JCQVFJQVpCdGI0TUVBNGFJQVZCZ0F0cUlnZ2dBQ0FCSUFJZ0F5QUVRZi8vLy84SEVJb0JJQVlnQ0JBU0dpQUdRZmZ3REJBT0dpQUZRZkFLYWlJQklBQWdCQkNBQWlBR0lBRVFFaG9nQlNnQ3pBd2hCeUFCRUE4YUlBZ1FEeG9nQmhBUkRBTUxJQUFvQWhBTkF5QUZJQVFvQWlnMkFvQUxJQUJCQkdvaUJ5QUZRWUFMYWlJTEVKa0JJUWdnQlVHOENXcEJBVFlDQUNBRlFiZ0pha0h0MndjMkFnQWdCVUcwQ1dwQjdpRTJBZ0FnQlNBQU5nS3dDU0FGUVFBMkFxd0pJQVZCdnhBMkFxZ0pJQVZCd0FscUlBRVF0QUlhSUFWQjFBbHFJQUlRd2dFZ0JVR2dDbW9nQkJEQ0FVSElBUkFWSWdaQmhQb2ZOZ0lBSUFZZ0JTa0RxQWszQWdRZ0JrRU1haUFGUWJBSmFpSUpFS3NESUFVZ0JqWUNvQXNnQ0NBRlFaQUxhaUlLRUpNQklBb1FGaUFKRUp3Q0lBVWdCQ2dDS0RZQ2dBc2dCeUFMRUprQklRZ2dCVUVDTmdMMEJ5QUZRYy9XQnpZQzhBY2dCVUh1SVRZQzdBY2dCU0FBTmdMb0J5QUZRUUEyQXVRSElBVkJ2eEEyQXVBSElBVkIrQWRxSUFFUXRBSWFJQVZCakFocUlBSVF3Z0VnQlVIWUNHb2dCQkRDQVVISUFSQVZJZ1pCcVBvZk5nSUFJQVlnQlNrRDRBYzNBZ1FnQmtFTWFpQUZRZWdIYWlJSkVLc0RJQVVnQmpZQ29Bc2dDQ0FLRUpNQklBVkJrQXRxRUJZZ0NSQ2NBaUFGSUFRb0FpZzJBb0FMSUFjZ0JVR0FDMm9RbVFFaENDQUZRUVEyQXF3R0lBVkJsS1VITmdLb0JpQUZRZTRoTmdLa0JpQUZJQUEyQXFBR0lBVkJBRFlDbkFZZ0JVRy9FRFlDbUFZZ0JVR3dCbW9nQVJDMEFob2dCVUhFQm1vZ0FoRENBU0FGUVpBSGFpQUVFTUlCUWNnQkVCVWlCa0hNK2g4MkFnQWdCaUFGS1FPWUJqY0NCQ0FHUVF4cUlBVkJvQVpxSWdrUXF3TWdCU0FHTmdLZ0N5QUlJQW9Ra3dFZ0JVR1FDMm9RRmlBSkVKd0NJQVVnQkNnQ0tEWUNnQXNnQnlBRlFZQUxhaENaQVNFSUlBVkJ3aWsyQXVRRUlBVkJsWk1JTmdMZ0JDQUZRZTRoTmdMY0JDQUZJQUEyQXRnRUlBVkJBRFlDMUFRZ0JVRy9FRFlDMEFRZ0JVSG9CR29nQVJDMEFob2dCVUg4QkdvZ0FoRENBU0FGUWNnRmFpQUVFTUlCUWNnQkVCVWlCa0h3K2g4MkFnQWdCaUFGS1FQUUJEY0NCQ0FHUVF4cUlBVkIyQVJxSWdrUXF3TWdCU0FHTmdLZ0N5QUlJQW9Ra3dFZ0JVR1FDMm9RRmlBSkVKd0NJQVVnQkNnQ0tEWUNnQXNnQnlBRlFZQUxhaENaQVNFSUlBVkJ3eWsyQXB3RElBVkJqWkVJTmdLWUF5QUZRZTRoTmdLVUF5QUZJQUEyQXBBRElBVkJBRFlDakFNZ0JVRy9FRFlDaUFNZ0JVR2dBMm9nQVJDMEFob2dCVUcwQTJvZ0FoRENBU0FGUVlBRWFpQUVFTUlCUWNnQkVCVWlCa0dVK3g4MkFnQWdCaUFGS1FPSUF6Y0NCQ0FHUVF4cUlBVkJrQU5xSWdrUXF3TWdCU0FHTmdLZ0N5QUlJQW9Ra3dFZ0JVR1FDMm9RRmlBSkVKd0NJQVVnQkNnQ0tEWUNnQXNnQnlBRlFZQUxhaENaQVNFR0lBVkJ4Q2syQXRRQklBVkJqNUlJTmdMUUFTQUZRZTRoTmdMTUFTQUZJQUEyQXNnQklBVkJBRFlDeEFFZ0JVRy9FRFlDd0FFZ0JVSFlBV29nQVJDMEFob2dCVUhzQVdvZ0FoRENBU0FGUWJnQ2FpQUVFTUlCUWNnQkVCVWlCMEc0K3g4MkFnQWdCeUFGS1FQQUFUY0NCQ0FIUVF4cUlBVkJ5QUZxSWdnUXF3TWdCU0FITmdLZ0N5QUdJQW9Ra3dFZ0JVR1FDMm9RRmlBSUVKd0NDeUFBUVNocUlRZ2dBQ2dDSkNFSEEwQWdCeUFJUmcwQklBY29BaEFpQmtFQmEwRUVTU0FHUWNJcGEwRURTWElnQmtHVUtVWWdCa0gxS1VaeWNnUkFJQWNRVENFSERBRUZJQVZCa0F0cUlnZ2dBQ2dDQUVGeUlBUVFFQ0FGUVlBTGFpSUpJQUFvQWdCQjZpRVFOeUFJSUFrUUVob2dDRUdremd3UURob2dCVUh3Q21vaUNpQUFJQUVnQWlBRElBUWdCaENLQVNBSUlBb1FFaG9nQlNnQ3pBd2hCeUFLRUE4YUlBa1FEeG9nQ0JBUkRBTUxBQXNBQzBFQUlRY2dBQ2dDRUEwQUlBVWdCQ2dDS0RZQzhBb2dBRUVFYWlBRlFmQUthaENaQVNFRElBVkJBRFlDaEFzZ0JVSE9FRFlDZ0FzZ0JTQUFOZ0lFSUFWQkNHb2lCaUFGUVlBTGFpQUZRUVJxSUFFZ0FpQUVFUDhCSUFNZ0JVR1FDMm9nQmhEK0FTSUFFSk1CSUFBUUZpQUdFT2dCQ3lBRlFkQU1haVFBSUFjUEMwSFRrUWRCa0owQ1FjY1FRY0RWQkJBQUFBdjJDUUVLZnlNQVFaQUlheUlGSkFBQ1FBSkFBa0FnQUNnQ0FDZ0NBQ2dDQUJCSFJRMEFBa0FDUUFKQUFrQWdCQkQzQVNJSFFRRnJEZ01DQVFNQUN5QUhRZi8vLy84SFJnMENDeUFGUWRBR2FpSUdJQUFvQWdCQmNpQUVFQkFnQlVIQUJtb2lDQ0FBS0FJQVFlQWhFRGNnQmlBSUVCSWFJQVpCL2JzTUVBNGFJQVZCc0FacUlna2dBQ0FCSUFJZ0F5QUVRZi8vLy84SEVJb0JJQVlnQ1JBU0dpQUdRZmZ3REJBT0dpQUZRYUFHYWlJQklBQWdCQkNBQWlBR0lBRVFFaG9nQlNnQ2pBZ2hCeUFCRUE4YUlBa1FEeG9nQ0JBUEdpQUdFQkVNQXdzZ0FDZ0NFQTBESUFVZ0JDZ0NLRFlDc0FZZ0FFRUVhaUlISUFWQnNBWnFJZ29RbVFFaEJpQUZRUUEyQXNRR0lBVkJ2eEEyQXNBR0lBVWdBRFlDb0FZZ0JVSGZJVFlDMUFRZ0JVRUFOZ0xRQkNBRlFkZ0VhaUlPSUFWQndBWnFJZ2dnQlVHZ0Jtb2lDU0FGUWRRRWFpSUxRYUdVQnlBRlFkQUVhaUlNSUFFZ0FpQUVFSzBISUFZZ0JVSFFCbW9pRFNBT0VLc1dJZ1lRa3dFZ0JoQVdJQVZCNEFScUVKd0NJQVVnQkNnQ0tEWUNzQVlnQnlBS0VKa0JJUVlnQlVFQU5nTEVCaUFGUWI4UU5nTEFCaUFGSUFBMkFxQUdJQVZCM3lFMkF0UUVJQVZCbENrMkF0QUVJQVZCaUFOcUlnb2dDQ0FKSUF0QnBvb0lJQXdnQVNBQ0lBUVFyUWNnQmlBTklBb1FxeFlpQmhDVEFTQUdFQllnQlVHUUEyb1FuQUlnQlNBRUtBSW9OZ0t3QmlBSElBVkJzQVpxRUprQklRY2dCVUVBTmdMRUJpQUZRYjhRTmdMQUJpQUZJQUEyQXFBR0lBVkIzeUUyQXRRRUlBVkI5U2syQXRBRUlBVkJ3QUZxSWdZZ0NDQUpJQXRCeFkwSUlBd2dBU0FDSUFRUXJRY2dCeUFOSUFZUXJoWWlCeENUQVNBSEVCWWdCVUhJQVdvUW5BSUxJQUJCS0dvaENTQUFLQUlrSVFZRFFDQUdJQWxHRFFFQ1FBSkFBa0FDUUFKQUlBWW9BaEFpQnc0RUF3RUJBUUFMSUFkQmxDbEdEUUFnQjBIMUtVY05BUXNnQVNnQ0VFRi9Sd1JBSUFVZ0JEWUMyQVlnQlNBQU5nTFVCaUFGUWZUNEh6WUMwQVlnQlNBRlFkQUdhaUlJTmdMZ0JpQUFJQUVnQWtFRUlBZ1F5d1VoQnlBSUVCWWdCMFVOQXd3R0N5QUZJQVEyQXRnR0lBVkJtUGtmTmdMUUJpQUZJQVZCMEFacU5nTGdCaUFGSUFBMkF0UUdJQVZCQURZQ3dBWWdBQ2dDQUNBQklBSWdCVUhBQm1vUXZRTWlCMFVFUUFKQUlBQW9BZ0FnQlNnQ3dBWVFjRUVjUndSQUlBVW9Bc0FHSVFjTUFRc2dCU0FBS0FJQUlBVW9Bc0FHRUNBb0FnQW9BZ2dpQnpZQ3dBWUxJQUFnQVNBQ1FRUWdCVUhRQm1vZ0J4RDNEU0VIQ3lBRlFkQUdhaEFXSUFkRkRRSU1CUXNnQlVIUUJtb2lCaUFBS0FJQVFYSWdCQkFRSUFWQndBWnFJZ2dnQUNnQ0FFSGVJUkEzSUFZZ0NCQVNHaUFHUVlYSURCQU9HaUFGUWJBR2FpSUpJQUFnQVNBQ0lBTWdCQ0FIRUlvQklBWWdDUkFTR2lBRktBS01DQ0VISUFrUUR4b2dDQkFQR2lBR0VCRU1CQXNnQlNBRU5nTFlCaUFGSUFBMkF0UUdJQVZCMFBnZk5nTFFCaUFGSUFWQjBBWnFJZ2cyQXVBR0lBQWdBU0FDUVFRZ0NCRExCU0VISUFnUUZpQUhEUU1MSUFZUVRDRUdEQUFMQUF0QkFDRUhJQUFvQWhBTkFDQUZJQVFvQWlnMkFyQUdJQUJCQkdvZ0JVR3dCbW9RbVFFaEF5QUZRUUEyQXNRR0lBVkJ6UkEyQXNBR0lBVWdBRFlDb0FZZ0JVRUlhaUlHSUFWQndBWnFJQVZCb0FacUlBRWdBaUFFRVA4QklBTWdCVUhRQm1vZ0JoRCtBU0lBRUpNQklBQVFGaUFHRU9nQkN5QUZRWkFJYWlRQUlBY1BDMEhUa1FkQmtKMENRYUlQUWNUVUJCQUFBQXZ3QndFRmZ5TUFRWUFGYXlJRkpBQUNRQUpBQWtBZ0FDZ0NBQ2dDQUNnQ0FCQkhSUTBBQWtBQ1FBSkFBa0FnQkJEM0FTSUdRUUZyRGdNQ0FRTUFDeUFHUWYvLy8vOEhSZzBDQ3lBRlFjQURhaUlISUFBb0FnQkJjaUFFRUJBZ0JVR3dBMm9pQ0NBQUtBSUFRZHdoRURjZ0J5QUlFQklhSUFkQnpiME1FQTRhSUFWQm9BTnFJZ2tnQUNBQklBSWdBeUFFUWYvLy8vOEhFSW9CSUFjZ0NSQVNHaUFIUWZmd0RCQU9HaUFGUVpBRGFpSUJJQUFnQkJDQUFpQUhJQUVRRWhvZ0JTZ0MvQVFoQmlBQkVBOGFJQWtRRHhvZ0NCQVBHaUFIRUJFTUF3c2dBQ2dDRUEwRElBVWdCQ2dDS0RZQ29BTWdBRUVFYWlBRlFhQURhaENaQVNFR0lBVkJBRFlDdEFNZ0JVRy9FRFlDc0FNZ0JTQUFOZ0tRQXlBRlFkc2hOZ0xFQVNBRlFRQTJBc0FCSUFWQnlBRnFJZ2NnQlVHd0Eyb2dCVUdRQTJvZ0JVSEVBV3BCbkpVSElBVkJ3QUZxSUFFZ0FpQUVFSzBISUFZZ0JVSEFBMm9nQnhDdUZpSUdFSk1CSUFZUUZpQUZRZEFCYWhDY0Fnc2dBRUVvYWlFSklBQW9BaVFoQndOQUlBY2dDVVlOQVFKQUFrQUNRQUpBQWtBZ0J5Z0NFQ0lHRGdRREFRRUJBQXNnQmtHVUtVWU5BQ0FHUWZVcFJ3MEJDeUFCS0FJUVFYOUhCRUFnQlNBRU5nTElBeUFGSUFBMkFzUURJQVZCNVBjZk5nTEFBeUFGSUFWQndBTnFJZ2cyQXRBRElBQWdBU0FDSUFnUXdRb2hCaUFJRUJZZ0JrVU5Bd3dHQ3lBRklBUTJBc2dESUFWQmlQZ2ZOZ0xBQXlBRklBVkJ3QU5xTmdMUUF5QUZJQUEyQXNRRElBVkJBRFlDc0FNZ0FDZ0NBQ0FCSUFJZ0JVR3dBMm9RdlFNaUJrVUVRQUpBSUFBb0FnQWdCU2dDc0FNUWNFRWNSd1JBSUFVb0FyQURJUVlNQVFzZ0JTQUFLQUlBSUFVb0FyQURFQ0FvQWdBb0FnZ2lCallDc0FNTElBQWdBU0FDSUFWQndBTnFJQVlRc3hZaEJnc2dCVUhBQTJvUUZpQUdSUTBDREFVTElBVkJ3QU5xSWdjZ0FDZ0NBRUZ5SUFRUUVDQUZRYkFEYWlJSUlBQW9BZ0JCMmlFUU55QUhJQWdRRWhvZ0IwR1J5UXdRRGhvZ0JVR2dBMm9pQ1NBQUlBRWdBaUFESUFRZ0JoQ0tBU0FISUFrUUVob2dCU2dDL0FRaEJpQUpFQThhSUFnUUR4b2dCeEFSREFRTElBVWdCRFlDeUFNZ0JTQUFOZ0xFQXlBRlFjRDNIellDd0FNZ0JTQUZRY0FEYWlJSU5nTFFBeUFBSUFFZ0FpQUlFTUVLSVFZZ0NCQVdJQVlOQXdzZ0J4Qk1JUWNNQUFzQUMwRUFJUVlnQUNnQ0VBMEFJQVVnQkNnQ0tEWUNvQU1nQUVFRWFpQUZRYUFEYWhDWkFTRURJQVZCQURZQ3RBTWdCVUhNRURZQ3NBTWdCU0FBTmdLUUF5QUZRUWhxSWdjZ0JVR3dBMm9nQlVHUUEyb2dBU0FDSUFRUS93RWdBeUFGUWNBRGFpQUhFUDRCSWdBUWt3RWdBQkFXSUFjUTZBRUxJQVZCZ0FWcUpBQWdCZzhMUWRPUkIwR1FuUUpCclE1Qi9kUUVFQUFBQ3lJQUlBQWdBU0FDSUFNZ0JFSExFRUhsNFF4QjF5RkJCRUd5eEF4QjJDRVFsQWdMN1FNQkJuOGpBRUd3QTJzaUJTUUFBa0FDUUNBQUtBSUFLQUlBS0FJQUVFZEZEUUFnQkJEM0FTSUhRUUZHSUFkQi8vLy8vd2RHY2tVRVFDQUZRZkFCYWlJR0lBQW9BZ0JCY2lBRUVCQWdCVUhnQVdvaUNDQUFLQUlBUWRVaEVEY2dCaUFJRUJJYUlBWkJyc0VNRUE0YUlBVkIwQUZxSWdrZ0FDQUJJQUlnQXlBRVFmLy8vLzhIRUlvQklBWWdDUkFTR2lBR1FmZndEQkFPR2lBRlFjQUJhaUlCSUFBZ0JCQ0FBaUFHSUFFUUVob2dCU2dDckFNaEJ5QUJFQThhSUFrUUR4b2dDQkFQR2lBR0VCRU1BZ3NnQUVFb2FpRUdJQUFvQWlRaEJ3TkFJQVlnQjBZTkFTQUhLQUlRSWdwQkEydEJmVTBFUUNBRlFmQUJhaUlHSUFBb0FnQkJjaUFFRUJBZ0JVSGdBV29pQ0NBQUtBSUFRZFFoRURjZ0JpQUlFQklhSUFaQjRNd01FQTRhSUFWQjBBRnFJZ2tnQUNBQklBSWdBeUFFSUFvUWlnRWdCaUFKRUJJYUlBVW9BcXdESVFjZ0NSQVBHaUFJRUE4YUlBWVFFUXdEQlNBSEVFd2hCd3dCQ3dBTEFBdEJBQ0VISUFBb0FoQU5BQ0FGSUFRb0FpZzJBdEFCSUFCQkJHb2dCVUhRQVdvUW1RRWhBeUFGUVFBMkF1UUJJQVZCeWhBMkF1QUJJQVVnQURZQ3dBRWdCVUVJYWlJR0lBVkI0QUZxSUFWQndBRnFJQUVnQWlBRUVQOEJJQU1nQlVId0FXb2dCaEQrQVNJQUVKTUJJQUFRRmlBR0VPZ0JDeUFGUWJBRGFpUUFJQWNMbndvQkMzOGpBRUd3Qm1zaUJTUUFJQUVvQWdRb0FnQWhDUUpBQWtBQ1FBSkFJQUFvQWdBb0FnQW9BZ0FRUjBVTkFBSkFBa0FDUUFKQUFrQWdCQkQzQVNJSFFRRnJEZ01DQVFNQUN5QUhRZi8vLy84SFJnMERDeUFGUWZBRWFpSUdJQUFvQWdCQmNpQUVFQkFnQmtHRGxnb1FEaG9nQmlBQUtBSUFRWUFEYWtFY0lBa1Fqd0VRRGhvZ0JrSGJ2Z3dRRGhvZ0JVSGdCR29pQ1NBQUlBRWdBaUFESUFSQi8vLy8vd2NRaWdFZ0JpQUpFQklhSUFaQjkvQU1FQTRhSUFWQjBBUnFJZ0VnQUNBRUVJQUNJQVlnQVJBU0dpQUZLQUtzQmlFSElBRVFEeG9nQ1JBUEdpQUdFQkVNQkFzZ0FDZ0NFQTBFUWJJaFFiWWlJQWxCQ1VZYklRb2dBRUVFYWlFTElBVkJnQVJxSVF3Z0JVRzBBMm9oRFNBRlFhQURhaUVPSUFWQmtBTnFJUWhCQUNFSEEwQWdCMEVGUmcwQ0lBVWdCQ2dDS0RZQzRBUWdCMEVDZEVIWXhnMXFLQUlBSVFZZ0N5QUZRZUFFYWhDWkFTRVBJQVVnQmpZQ25BTWdCVUhPandnMkFwZ0RJQVVnQ2pZQ2xBTWdCU0FBTmdLUUF5QUZRUUEyQW93RElBVkJ2eEEyQW9nRElBNGdBUkMwQWhvZ0RTQUNFTUlCSUF3Z0JCRENBU0FGUVFBMkFvQUZRY2dCRUJVaUJrR005aDgyQWdBZ0JpQUZLUU9JQXpjQ0JDQUdRUXhxSUFnUXF3TWdCU0FHTmdLQUJTQVBJQVZCOEFScUlnWVFrd0VnQmhBV0lBZ1FuQUlnQjBFQmFpRUhEQUFMQUFzZ0FDZ0NFQTBFSUFVZ0JDZ0NLRFlDNEFRZ0FFRUVhaUFGUWVBRWFoQ1pBU0VHSUFWQkJEWUMxQUVnQlVING9nYzJBdEFCSUFWQnN5RkJ0eUlnQ1VFSlJoczJBc3dCSUFVZ0FEWUN5QUVnQlVFQU5nTEVBU0FGUWI4UU5nTEFBU0FGUWRnQmFpQUJFTFFDR2lBRlFld0JhaUFDRU1JQklBVkJ1QUpxSUFRUXdnRkJ5QUVRRlNJSFFiRDJIellDQUNBSElBVXBBOEFCTndJRUlBZEJER29nQlVISUFXb2lDQkNyQXlBRklBYzJBb0FGSUFZZ0JVSHdCR29pQnhDVEFTQUhFQllnQ0JDY0Fnc2dBRUVvYWlFS0lBQW9BaVFoQnlBSlFRbHJJUXNEUUNBSElBcEdEUUVDUUFKQUFrQUNRQ0FIS0FJUUlnWU9CUUlCQWdNREFBc2dCa0dVS1VZZ0JrSDFLVVp5RFFJTElBVkI4QVJxSWdnZ0FDZ0NBRUZ5SUFRUUVDQUZRZUFFYWlJS0lBQW9BZ0JCc0NGQnRDSWdDVUVKUmhzUU55QUlJQW9RRWhvZ0NFR0RsZ29RRGhvZ0NDQUFLQUlBUVlBRGFrRWNJQWtRandFUURob2dDRUdCekF3UURob2dCVUhRQkdvaUNTQUFJQUVnQWlBRElBUWdCaENLQVNBSUlBa1FFaG9nQlNnQ3JBWWhCeUFKRUE4YUlBb1FEeG9nQ0JBUkRBUUxJQUFvQWdCQmdBRnFRWVlwRUdnTkFFR0IyQVVoQmtHMUlpRUlBa0FDUUFKQUlBc09BZ0VBQWdzZ0FDZ0NBRUdBQVdwQnhnQVFhQTBDUVlZaklRWU1BUXNnQUNnQ0FFR0FBV3BCeFFBUWFBMEJRWjdaQVNFR1FiRWhJUWdMSUFWQjhBUnFJZ0VnQUNnQ0FFRnlJQVFRRUNBRlFlQUVhaUlDSUFBb0FnQWdDQkEzSUFFZ0FoQVNHaUFCUWNHV0NoQU9HaUFCSUFBb0FnQkJnQU5xUVJ3Z0NSQ1BBUkFPR2lBQlFlYS9DaEFPR2lBQklBWVFEaG9nQVVHdmt3Y1FEaG9nQlNnQ3JBWWhCeUFDRUE4YUlBRVFFUXdEQ3lBSEVFd2hCd3dBQ3dBTFFRQWhCeUFBS0FJUURRQWdCU0FFS0FJb05nTFFCQ0FBUVFScUlBVkIwQVJxRUprQklRTWdCVUVBTmdMa0JDQUZRY2tRTmdMZ0JDQUZJQUEyQWdRZ0JVRUlhaUlHSUFWQjRBUnFJQVZCQkdvZ0FTQUNJQVFRL3dFZ0F5QUZRZkFFYWlBR0VQNEJJZ0FRa3dFZ0FCQVdJQVlRNkFFTElBVkJzQVpxSkFBZ0J3OExRZE9SQjBHUW5RSkJxaFZCbk5RRUVBQUFDMEhUa1FkQmtKMENRYjBWUVp6VUJCQUFBQXQ2QVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBQUtBSUFJQUVnQWlBRVFReHFFTDBESWdWRkJFQUNRQ0FBS0FJQUlBUW9BZ3dRY0VFY1J3UkFJQVFvQWd3aEJRd0JDeUFFSUFBb0FnQWdCQ2dDREJBZ0tBSUFLQUlJSWdVMkFnd0xJQUFnQVNBQ0lBTWdCUkN5RmlFRkN5QUVRUkJxSkFBZ0JRc2dBQ0FBSUFFZ0FpQURJQVJCeUJCQjZOME1RYWNoUWRMQURFR29JUkNLRXd2dEF3RUdmeU1BUWJBRGF5SUZKQUFDUUFKQUlBQW9BZ0FvQWdBb0FnQVFSMFVOQUNBRUVQY0JJZ2RCQVVZZ0IwSC8vLy8vQjBaeVJRUkFJQVZCOEFGcUlnWWdBQ2dDQUVGeUlBUVFFQ0FGUWVBQmFpSUlJQUFvQWdCQm9pRVFOeUFHSUFnUUVob2dCa0hIeGd3UURob2dCVUhRQVdvaUNTQUFJQUVnQWlBRElBUkIvLy8vL3djUWlnRWdCaUFKRUJJYUlBWkI5L0FNRUE0YUlBVkJ3QUZxSWdFZ0FDQUVFSUFDSUFZZ0FSQVNHaUFGS0FLc0F5RUhJQUVRRHhvZ0NSQVBHaUFJRUE4YUlBWVFFUXdDQ3lBQVFTaHFJUVlnQUNnQ0pDRUhBMEFnQmlBSFJnMEJJQWNvQWhBaUNrRjljVUVCUndSQUlBVkI4QUZxSWdZZ0FDZ0NBRUZ5SUFRUUVDQUZRZUFCYWlJSUlBQW9BZ0JCb1NFUU55QUdJQWdRRWhvZ0JrR1J5d3dRRGhvZ0JVSFFBV29pQ1NBQUlBRWdBaUFESUFRZ0NoQ0tBU0FHSUFrUUVob2dCU2dDckFNaEJ5QUpFQThhSUFnUUR4b2dCaEFSREFNRklBY1FUQ0VIREFFTEFBc0FDMEVBSVFjZ0FDZ0NFQTBBSUFVZ0JDZ0NLRFlDMEFFZ0FFRUVhaUFGUWRBQmFoQ1pBU0VESUFWQkFEWUM1QUVnQlVISEVEWUM0QUVnQlNBQU5nTEFBU0FGUVFocUlnWWdCVUhnQVdvZ0JVSEFBV29nQVNBQ0lBUVEvd0VnQXlBRlFmQUJhaUFHRVA0QklnQVFrd0VnQUJBV0lBWVE2QUVMSUFWQnNBTnFKQUFnQndzaUFDQUFJQUVnQWlBRElBUkJ4aEJCazk4TVFZOGhRUVJCODhJTVFaQWhFSlFJQ3hnQUlBQWdBU0FDSUFNZ0JFSEZFRUhMeHd4QkFSQ1ZDQXNhQUNBQUlBRWdBaUFESUFSQnhCQkJxdVVNUWQ3VkFSQ0xFd3NnQUNBQUlBRWdBaUFESUFSQnd4QkJsT0VNUVlVaFFkakRERUdHSVJDTUV3dUtCZ0VIZnlNQVFjQURheUlGSkFBQ1FBSkFJQUFvQWdBb0FnQW9BZ0FRUjBVTkFDQUVFUGNCSWdkQkEwWWdCMEgvLy8vL0IwWnlSUVJBSUFWQmdBSnFJZ1lnQUNnQ0FFRnlJQVFRRUNBRlFmQUJhaUlJSUFBb0FnQkI5aUFRTnlBR0lBZ1FFaG9nQlVIZ0FXb2lDU0FBS0FJQUtBSUFLQUlBRUlFQ0lBWWdDUkFTR2lBR1FaKy9EQkFPR2lBRlFkQUJhaUlLSUFBZ0FTQUNJQU1nQkVILy8vLy9CeENLQVNBR0lBb1FFaG9nQmtIMzhBd1FEaG9nQlVIQUFXb2lBU0FBSUFRUWdBSWdCaUFCRUJJYUlBVW9BcndESVFjZ0FSQVBHaUFLRUE4YUlBa1FEeG9nQ0JBUEdpQUdFQkVNQWdzZ0FFRW9haUVHSUFBb0FpUWhCd05BSUFZZ0IwY0VRQ0FIS0FJUUlnaEJCRWNFUUNBRlFZQUNhaUlHSUFBb0FnQkJjaUFFRUJBZ0JVSHdBV29pQ1NBQUtBSUFRZlVnRURjZ0JpQUpFQklhSUFWQjRBRnFJZ29nQUNnQ0FDZ0NBQ2dDQUJDQkFpQUdJQW9RRWhvZ0JrSEY0QXdRRGhvZ0JVSFFBV29pQ3lBQUlBRWdBaUFESUFRZ0NCQ0tBU0FHSUFzUUVob2dCU2dDdkFNaEJ5QUxFQThhSUFvUUR4b2dDUkFQR2lBR0VCRU1CQVVnQnhCTUlRY01BZ3NBQ3dzZ0FDZ0NJQ0lIS0FJRUlRWWdCeWdDQUNFSEEwQWdCaUFIUmcwQklBQW9BZ0FnQnlnQ0FCQzBDQ0lJQkVBZ0JVRU1OZ0tBQWlBSFFRUnFJUWNnQ0NBRlFZQUNhaERVQlEwQkN3c2dCVUdBQW1vaUJpQUFLQUlBUVhJZ0JCQVFJQVZCOEFGcUlnZ2dBQ2dDQUVINElCQTNJQVlnQ0JBU0dpQUZRZUFCYWlJSklBQW9BZ0FvQWdBb0FnQVFnUUlnQmlBSkVCSWFJQVpCbXVZTUVBNGFJQVZCMEFGcUlnb2dBQ0FCSUFJZ0F5QUVRZi8vLy84SEVJb0JJQVlnQ2hBU0dpQUZLQUs4QXlFSElBb1FEeG9nQ1JBUEdpQUlFQThhSUFZUUVRd0JDMEVBSVFjZ0FDZ0NFQTBBSUFVZ0JDZ0NLRFlDNEFFZ0FFRUVhaUFGUWVBQmFoQ1pBU0VESUFWQkFEWUM5QUVnQlVIQ0VEWUM4QUVnQlNBQU5nTFFBU0FGUVFocUlnWWdCVUh3QVdvZ0JVSFFBV29nQVNBQ0lBUVEvd0VnQXlBRlFZQUNhaUFHRVA0QklnQVFrd0VnQUJBV0lBWVE2QUVMSUFWQndBTnFKQUFnQndzZ0FDQUFJQUVnQWlBRElBUkJ3UkJCdStJTVFmSWdRZS9GREVIeklCQ01Fd3VsRFFFTWZ5TUFRZEFKYXlJRkpBQWdBU2dDQkNnQ0FDRUxBa0FDUUFKQUFrQWdBQ2dDQUNnQ0FDZ0NBQkJIUlEwQUFrQUNRQUpBQWtBQ1FDQUVFUGNCSWdaQkFXc09Bd0lCQXdBTElBWkIvLy8vL3dkR0RRTUxJQUVvQWdRb0FnQWhCaUFGUVpBSWFpSUhJQUFvQWdCQmNpQUVFQkFnQlVHQUNHb2lDQ0FBS0FJQVFkNGdRZWNnSUFaQkEwWWJFRGNnQnlBSUVCSWFJQWRCZzVZS0VBNGFJQWNnQUNnQ0FFR0FBMnBCSENBTEVJOEJFQTRhSUFkQjI3NE1FQTRhSUFWQjhBZHFJZ2tnQUNBQklBSWdBeUFFUWYvLy8vOEhFSW9CSUFjZ0NSQVNHaUFIUWZmd0RCQU9HaUFGUWVBSGFpSUJJQUFnQkJDQUFpQUhJQUVRRWhvZ0JTZ0N6QWtoQmlBQkVBOGFJQWtRRHhvZ0NCQVBHaUFIRUJFTUJBc2dBQ2dDRUEwRUlBVkIzQ0JCNVNBZ0FTZ0NCQ2dDQUVFRFJoc2lDRFlDOEFjZ0JTQUVLQUlvTmdMZ0J5QUFRUVJxSWdZZ0JVSGdCMm9pQ2hDWkFTRUhJQVZCQURZQ2hBZ2dCVUcvRURZQ2dBZ2dCU0FBTmdLVUJpQUZRUUEyQXBBR0lBVkJtQVpxSWcwZ0JVR0FDR29pRENBRlFaUUdhaUlPSUFWQjhBZHFJZzlCbUpZSElBVkJrQVpxSWhBZ0FTQUNJQVFRclFjZ0J5QUZRWkFJYWlJSklBMFF3QllpQnhDVEFTQUhFQllnQlVHZ0Jtb1FuQUlnQlNBRUtBSW9OZ0xnQnlBR0lBb1FtUUVoQnlBRlFRQTJBb1FJSUFWQnZ4QTJBb0FJSUFVZ0FEWUNsQVlnQlVHVUtUWUNrQVlnQlVISUJHb2lDaUFNSUE0Z0QwR2hpd2dnRUNBQklBSWdCQkN0QnlBSElBa2dDaERBRmlJSEVKTUJJQWNRRmlBRlFkQUVhaENjQWlBRklBUW9BaWcyQW9BSUlBWWdEQkNaQVNFSElBVkI5U2syQXBRRElBVkJ3WTRJTmdLUUF5QUZJQWcyQW93RElBVWdBRFlDaUFNZ0JVRUFOZ0tFQXlBRlFiOFFOZ0tBQXlBRlFaZ0RhaUFCRUxRQ0dpQUZRYXdEYWlBQ0VNSUJJQVZCK0FOcUlBUVF3Z0ZCeUFFUUZTSUdRY3p4SHpZQ0FDQUdJQVVwQTRBRE53SUVJQVpCREdvZ0JVR0lBMm9pQ0JDckF5QUZJQVkyQXFBSUlBY2dDUkNUQVNBSkVCWWdDQkNjQWd3QkN5QUFLQUlRRFFRZ0FTZ0NCQ2dDQUNFR0lBVWdCQ2dDS0RZQ2dBZ2dBRUVFYWlBRlFZQUlhaENaQVNFSUlBVkJCRFlDekFFZ0JVR0ZwQWMyQXNnQklBVkIzU0JCNWlBZ0JrRURSaHMyQXNRQklBVWdBRFlDd0FFZ0JVRUFOZ0s4QVNBRlFiOFFOZ0s0QVNBRlFkQUJhaUFCRUxRQ0dpQUZRZVFCYWlBQ0VNSUJJQVZCc0FKcUlBUVF3Z0ZCeUFFUUZTSUdRZkR4SHpZQ0FDQUdJQVVwQTdnQk53SUVJQVpCREdvZ0JVSEFBV29pQnhDckF5QUZJQVkyQXFBSUlBZ2dCVUdRQ0dvaUJoQ1RBU0FHRUJZZ0J4Q2NBZ3NnQUVFb2FpRUhJQUFvQWlRaENBTkFJQWNnQ0VZTkFRSkFBa0FDUUFKQUFrQWdDQ2dDRUNJR0RnVURBUUVCQXdBTElBWkJsQ2xHRFFBZ0JrSDFLVWNOQVFzZ0FTZ0NFRUYvUndSQUlBVWdCRFlDbkFnZ0JTQUJOZ0tZQ0NBRklBQTJBcFFJSUFWQnVQSWZOZ0tRQ0NBRklBVkJrQWhxSWdrMkFxQUlJQUFnQVNBQ1FRQWdDUkMvQ2lFR0lBa1FGaUFHUlEwRERBWUxJQVVnQkRZQ25BZ2dCU0FCTmdLWUNDQUZRZHp5SHpZQ2tBZ2dCU0FGUVpBSWFqWUNvQWdnQlNBQU5nS1VDQ0FGUVFBMkFvQUlJQUFvQWdBZ0FTQUNJQVZCZ0FocUVMMERJZ1pGQkVBQ1FDQUFLQUlBSUFVb0FvQUlFSEJCSEVjTkFDQUFLQUlBSUFVb0FvQUlFQ0FoQmlBQUtBSUFJQVlvQWdBb0FnZ2lCaEJ3UVJ4SERRQWdCU0FHTmdLQUNBc2dBQ0FCSUFKQkFDQUZRWkFJYWlBRktBS0FDQkMrRmlFR0N5QUZRWkFJYWhBV0lBWkZEUUlNQlFzZ0FTZ0NCQ2dDQUNFSUlBVkJrQWhxSWdjZ0FDZ0NBRUZ5SUFRUUVDQUZRWUFJYWlJSklBQW9BZ0JCMnlCQjVDQWdDRUVEUmhzUU55QUhJQWtRRWhvZ0IwR0RsZ29RRGhvZ0J5QUFLQUlBUVlBRGFrRWNJQXNRandFUURob2dCMEdleWd3UURob2dCVUh3QjJvaUNDQUFJQUVnQWlBRElBUWdCaENLQVNBSElBZ1FFaG9nQlNnQ3pBa2hCaUFJRUE4YUlBa1FEeG9nQnhBUkRBUUxJQVVnQkRZQ25BZ2dCU0FCTmdLWUNDQUZJQUEyQXBRSUlBVkJsUElmTmdLUUNDQUZJQVZCa0FocUlnazJBcUFJSUFBZ0FTQUNRUUFnQ1JDL0NpRUdJQWtRRmlBR0RRTUxJQWdRVENFSURBQUxBQXRCQUNFR0lBQW9BaEFOQUNBRklBUW9BaWcyQXZBSElBQkJCR29nQlVId0Iyb1FtUUVoQXlBRlFRQTJBb1FJSUFWQndCQTJBb0FJSUFVZ0FEWUM0QWNnQlNBRlFZQUlhaUFGUWVBSGFpQUJJQUlnQkJEL0FTQURJQVZCa0FocUlBVVEvZ0VpQUJDVEFTQUFFQllnQlJEb0FRc2dCVUhRQ1dva0FDQUdEd3RCMDVFSFFaQ2RBa0dSQ1VHYTFRUVFBQUFMUWRPUkIwR1FuUUpCcXdsQm10VUVFQUFBQ3lvQkFYOGdBRUVFYWlFREEwQWdBU0FDUndSQUlBQWdBeUFCUVJCcUVKMFdJQUVRVENFQkRBRUxDd3NkQUNBQUlBQW9BZ1FReEFvZ0FDQUFRUVJxTmdJQUlBQkNBRGNDQkFzSkFDQUFRUlFRd3hJTExRRUJmMEVrRUJVaEF5QUFJQUZCQkdvMkFnUWdBQ0FETmdJQUlBTkJFR29nQWhDMEFob2dBRUVCT2dBSUMyVUJBbjhnQUVFRWFpRUVBa0FnQUNnQ0JDSURSUVJBSUFRaEFBd0JDd05BSUFJZ0F5SUFRUkJxSWdNUXpBVUVRQ0FBSVFRZ0FDZ0NBQ0lERFFFTUFnc2dBeUFDRU13RlJRMEJJQUJCQkdvaEJDQUFLQUlFSWdNTkFBc0xJQUVnQURZQ0FDQUVDNHdCQVFSL0l3QkJFR3NpQkNRQUl3QkJFR3NpQXlRQUlBUWdBU0FEUVF4cUlBSVE2eFlpQmlnQ0FDSUZCSDlCQUFVZ0F5QUJJQUlRNmhZZ0FTQURLQUlNSUFZZ0F5Z0NBQkQ0QWlBREtBSUFJUVVnQTBFQU5nSUFJQU1RNlJaQkFRczZBQXdnQkNBRk5nSUlJQU5CRUdva0FDQUFJQVFvQWdnMkFnQWdBQ0FFTFFBTU9nQUVJQVJCRUdva0FBc3dBUUYvSXdCQkVHc2lBeVFBSUFNZ0FUWUNEQ0FESUFCQjZBSnFJQU5CREdvUXR3Z2dBaERzRmlBRFFSQnFKQUFMTEFFQmZ5QUFRWUlzUmlBQVFSdHJJZ0ZCRkUxQkFFRUJJQUYwUVlHQTRBQnhHM0pGQkVCQkFBOExRUUVMQ3dBZ0FDQUJRakFReEJJTG9RSUJCSDhnQUVHNEEyb1F4QU1nQUVHc0Eyb1F3d29nQUVHZ0Eyb1F3d29nQUVHTUEyb1FUeUFBUWZnQ2FoRFZCQ0FBUWVRQ2FoQlBJQUJCMEFKcUVFOGdBRUhFQW1vUU1ob2dBRUc0QW1vUU1ob0NRQ0FBUWF3Q2FpSUNLQUlJUlEwQUlBSW9BZ1FpQVNnQ0FDSURJQUlvQWdBaUJDZ0NCRFlDQkNBRUtBSUVJQU0yQWdBZ0FrRUFOZ0lJQTBBZ0FTQUNSZzBCSUFFb0FnUWhBeUFCUVF4cUVESWFJQUVRSHlBRElRRU1BQXNBQ3lBQVFaZ0NhaERWQkNBQVFZUUNhaERWQkNBQVFmQUJhaERWQkNBQVFhQUJhaERPQlNBQVFkQUFhaERPQlNBQVFUaHFFRThnQUVFc2FoQXlHaUFBUVJocUlnSW9BZ2doQVFOQUlBRUVRQ0FCS0FJQUlRTWdBVUVNYWhET0JTQUJFQjhnQXlFQkRBRUxDeUFDRUpzRElBQUxEQUFnQUNBQUtBSUVFUDROQ3d3QUlBQWdBQ2dDQkJDQkRnc1lBQ0FBSUFFUVZDSUFRUXhxSUFGQkRHb1FzQUVhSUFBTFB3RUNmeUFBS0FJQUJFQWdBQ2dDQUNFQ0lBQW9BZ1FoQVFOQUlBRWdBa2NFUUNBQlFSaHJFSVFPSVFFTUFRc0xJQUFnQWpZQ0JDQUFLQUlBRUI4TEMxUUJBWDlCR0JBVklRUWdBQ0FCUVFocU5nSUVJQUFnQkRZQ0FDQURLQUlBS0FJQUlRRWdCRUVRYWlJRFFnQTNBZ0FnQkNBQk5nSUlJQVFnQXpZQ0RDQUFRUUU2QUFnZ0JFRUFOZ0lBSUFRZ0FqWUNCQXNEQUFFTEl3QWdBU0FBS0FJRUlBQW9BZ0FpQUd0QkJIVlBCRUFRQVFBTElBQWdBVUVFZEdvTGF3RUNmd0pBSUFBb0FnZ2dBU2dDQkVrRVFDQUFFSUlPSUFBZ0FTZ0NCQkR2Rmd3QkN5QUFFUDBOQ3lBQUlBRW9BZ1FpQWpZQ0JBTkFJQUlnQTBzRVFDQURRVEJzSWdJZ0FDZ0NBR29nQVNnQ0FDQUNhaEQ3RFJvZ0EwRUJhaUVESUFBb0FnUWhBZ3dCQ3dzTG1BVUNDWDhDZlNNQVFSQnJJZ29rQUNNQVFSQnJJZ1lrQUNBQ0tBSUFJUWNnQ2dKL0FrQWdBU2dDQkNJRFJRMEFJQUVvQWdBQ2Z5QURRUUZySUFkeElBTnBJZ2hCQVUwTkFCb2dCeUFESUFkTERRQWFJQWNnQTNBTElnUkJBblJxS0FJQUlnVkZEUUFnQTBFQmF5RUxJQWhCQVVzaENBTkFJQVVvQWdBaUJVVU5BU0FISUFVb0FnUWlDVWNFUUFKQUlBaEZCRUFnQ1NBTGNTRUpEQUVMSUFNZ0NVc05BQ0FKSUFOd0lRa0xJQVFnQ1VjTkFnc2dCU2dDQ0NBSFJ3MEFDMEVBREFFTFFSQVFGU0VJSUFZZ0FVRUlhallDQkNBR0lBZzJBZ0FnQ0NBQ0tBSUFOZ0lJSUFnZ0FpZ0NCRFlDRENBR1FRRTZBQWdnQ0VFQU5nSUFJQWdnQnpZQ0JBSkFRUUFnQXlBQktBSU1RUUZxc3lJTklBRXFBaEFpRENBRHM1UmVHdzBBSUFFZ0F5QURRUUZyY1VFQVJ5QURRUU5KY2lBRFFRRjBjaUlFQW44Z0RTQU1sWTBpREVNQUFJQlBYU0FNUXdBQUFBQmdjUVJBSUF5cERBRUxRUUFMSWdJZ0FpQUVTUnNRd3dFZ0FTZ0NCQ0lESUFOQkFXdHhSUVJBSUFOQkFXc2dCM0VoQkF3QkN5QURJQWRMQkVBZ0J5RUVEQUVMSUFjZ0EzQWhCQXNDUUNBRVFRSjBJZ0lnQVNnQ0FHb29BZ0FpQkVVRVFDQUdLQUlBSUFFb0FnZzJBZ0FnQVNBR0tBSUFOZ0lJSUFFb0FnQWdBbW9nQVVFSWFqWUNBQ0FHS0FJQUlnUW9BZ0FpQWtVTkFTQUNLQUlFSVFVQ1FDQURJQU5CQVdzaUFuRkZCRUFnQWlBRmNTRUZEQUVMSUFNZ0JVc05BQ0FGSUFOd0lRVUxJQUVvQWdBZ0JVRUNkR29nQkRZQ0FBd0JDeUFHS0FJQUlBUW9BZ0EyQWdBZ0JDQUdLQUlBTmdJQUN5QUdLQUlBSVFVZ0JrRUFOZ0lBSUFFZ0FTZ0NERUVCYWpZQ0RDQUdFSXNCUVFFTE9nQU1JQW9nQlRZQ0NDQUdRUkJxSkFBZ0FDQUtLQUlJTmdJQUlBQWdDaTBBRERvQUJDQUtRUkJxSkFBTGlnRUJCWDlCZkNFREFrQWdBQ2dDQUNJQ1JRMEFJQUFvQWdSRkRRQWdBVVVFUUVGOUR3c2dBaTBBQXlFQUFrQWdBaTBBQUNJRVFRTkhJQUl0QUFFaUJVRUNSM0lnQWkwQUFpSUdRU05IY2tVRVFFRUFJUUlnQUVFSFJnMEJDeUFFUVFkSElBVkJJMGR5SUFaQkFrZHlEUUZCQVNFQ0lBQkJBMGNOQVFzZ0FTQUNOZ0lBUVFBaEF3c2dBd3ZURGdRTGZ3UitBWDBCZkNNQVFTQnJJZ2NrQUFKQUFrQUNRQ0FDS0FJRUlnTkJCbXNPQkFFQ0FnRUFDeUFEUVN0ckRnTUFBUUFCQ3lBQ0x3RUNJZ05CQTJ0Qi8vOERjVUgrL3dOSkRRQWdBU2dDQUNBQ0x3RUFRUUowYWlJRUtBSUFJUUVnQTBFQlJnUkFBa0FDUUFKQUlBSW9BZ2hCQVdzT0F3RUFBZ1FMSUFBZ0FSQzhBaG9NQXdzZ0FDQUJFQ0VhREFJTElBSW9BZ3hCRUVZRVFDQUhJQUU3QVJnakFFRVFheUlESkFBZ0F5QUhMd0VZT3dFSUlBQWhBaUFETGdFSUlnVkJDblpCSDNFaUFVRVBhMEVBSUFFZ0JVRUNkRUg4SDNFaUFISWlCaHNoQkNBQklBWkZja1VFUUFOQUlBQkJBWFFoQVNBQVFZQVFjVVVFUUNBRVFRRnJJUVFnQVNFQURBRUxDeUFCUWZnZmNTRUFDMEhjK0F4QnpKZ0lJQVZCQUU0YklRVkJBeUVCQTBBZ0FVSC8vd054UlNBQVFROXhja1VFUUNBQlFRRnJJUUVnQUVIdy93TnhRUVIySVFBTUFRc0xJQUlnQWlnQ0FFRU1heWdDQUdvaUNDZ0NCQ0VKSUFnUW5BTWhDQ0FDSUFVUURrSFpKeEFPUVRGQk1DQUdHeERlQkNBQlFmLy9BM0VpQmdSQUlBSkIvSmNJRUE0aUFTQUJLQUlBUVF4cklnVW9BZ0JxSUFZMkFnd2dBU0FGS0FJQWFrRXdOZ0pNSUFFZ0JTZ0NBR29pQlNBRktBSUVRYlYvY1VFSWNqWUNCQ0FCSUFCQi8vOERjUkFoR2dzZ0FrSER2d0lRRGlJQUlBQW9BZ0JCREdzb0FnQnFJZ0VnQVNnQ0JFRzFmM0ZCQW5JMkFnUWdBRUhibUFoQjNQZ01JQVJCRUhSQkVIVWlCVUVBVGhzUURpRUFJd0JCSUdzaUFTUUFJQUZCR0dvaUJDQUFFTjhER2dKQUlBUVFrZ1JGRFFBZ0FDQUFLQUlBUVF4cktBSUFhaEM0QVNFR0lBRkJFR29pQkNBQUlBQW9BZ0JCREdzb0FnQnFFSDRnQkJEOUJDRUtJQVFRWkNBQlFRaHFJQUFRMGdRaEN5QUFJQUFvQWdCQkRHc29BZ0JxSWd3UW5BTWhEU0FCSUFvZ0N5Z0NBQ0FNSUEwZ0JVSC8vd054SWdvZ0NpQUZJQVpCeWdCeElnVkJDRVliSUFWQndBQkdHeERjRkRZQ0VDQUVFTkVFUlEwQUlBQWdBQ2dDQUVFTWF5Z0NBR3BCQlJDUEF3c2dBVUVZYWhEZ0F5QUJRU0JxSkFBZ0FpQUNLQUlBUVF4cklnQW9BZ0JxSUFrMkFnUWdBaUFBS0FJQWFpQUlOZ0pNSUFOQkVHb2tBQXdDQ3lBSElBRTJBaEFqQUVFUWF5SUZKQUFDUUFKQUFrQWdCeW9DRUNJU0VOb1lRUUpyRGdNQUFRQUJDeUFBSUFBb0FnQkJER3NvQWdCcUlnRW9BZ2doQWlBQlFRazJBZ2dnQUNBU0VKa05JQUFnQUNnQ0FFRU1heWdDQUdvZ0FqWUNDQXdCQ3lBRklBY29BaEEyQWdnZ0FDRUNJQVVvQWdnaUJFRVhka0gvQVhFaUFVSC9BR3RCQUNBQklBUkJBWFJCL3YvL0IzRWlBSElpQmhzaEF5QUJJQVpGY2tVRVFBTkFJQUJCQVhRaEFTQUFRWUNBZ0FSeFJRUkFJQU5CQVdzaEF5QUJJUUFNQVFzTElBRkIvUC8vQjNFaEFBdEIzUGdNUWN5WUNDQUVRUUJPR3lFRVFRWWhBUU5BSUFGRklBQkJEM0Z5UlFSQUlBRkJBV3NoQVNBQVFRUjJJUUFNQVFzTElBSWdBaWdDQUVFTWF5Z0NBR29pQ0NnQ0JDRUpJQWdRbkFNaENDQUNJQVFRRGtIWkp4QU9RVEZCTUNBR0d4RGVCQ0FCQkVBZ0FrSDhsd2dRRGlJRUlBUW9BZ0JCREdzaUJpZ0NBR29nQVRZQ0RDQUVJQVlvQWdCcVFUQTJBa3dnQkNBR0tBSUFhaUlCSUFFb0FnUkJ0WDl4UVFoeU5nSUVJQVFnQUJBaEdnc2dBa0hEdndJUURpSUFJQUFvQWdCQkRHc29BZ0JxSWdFZ0FTZ0NCRUcxZjNGQkFuSTJBZ1FnQUVIYm1BaEIzUGdNSUFOQkFFNGJFQTRnQXhDOEFob2dBaUFDS0FJQVFReHJJZ0FvQWdCcUlBazJBZ1FnQWlBQUtBSUFhaUFJTmdKTUN5QUZRUkJxSkFBTUFRc2dBYTBnQkRVQ0JFSWdob1FoRGdKQUFrQUNRQ0FDS0FJSVFRRnJEZ01CQUFJREN5QUFJQTRRbWdZTUFnc2dBQ0FPRU1NRUdnd0JDeUFISUE0M0F3Z2pBRUVRYXlJQ0pBQUNRQUpBQWtBZ0J5c0RDQ0lURU5rWVFRSnJEZ01BQVFBQkN5QUFJQUFvQWdCQkRHc29BZ0JxSWdFb0FnZ2hBeUFCUVJFMkFnZ2dBQ0FURUpnTklBQWdBQ2dDQUVFTWF5Z0NBR29nQXpZQ0NBd0JDeUFDSUFjcEF3ZzNBd2hDQUNBQ0tRTUlJaEZDTkloQy93K0RJZzlDL3dkOUlBOGdFVUwvLy8vLy8vLy9CNE1pRG9SUUlnRWJJUkFnRDBJQVVpQUJja1VFUUFOQUlBNUNBWVloRHlBT1FvQ0FnSUNBZ0lBRWcxQUVRQ0FRUWdGOUlSQWdEeUVPREFFTEN5QVBRdjcvLy8vLy8vOEhneUVPQzBIYytBeEJ6SmdJSUJGQ0FGa2JJUU5DRFNFUEEwQWdEMUFpQkNBT1FnK0RRZ0JTY2tVRVFDQVBRZ0Y5SVE4Z0RrSUVpQ0VPREFFTEN5QUFJQUFvQWdCQkRHc29BZ0JxSWdVb0FnUWhCaUFGRUp3RElRVWdBQ0FERUE1QjJTY1FEa0V3UVRFZ0FSc1EzZ1FnQkVVRVFDQUFRZnlYQ0JBT0lnRWdBU2dDQUVFTWF5SURLQUlBYWlBUFBnSU1JQUVnQXlnQ0FHcEJNRFlDVENBQklBTW9BZ0JxSWdNZ0F5Z0NCRUcxZjNGQkNISTJBZ1FnQVNBT0VNTUVHZ3NnQUVIRHZ3SVFEaUlCSUFFb0FnQkJER3NvQWdCcUlnTWdBeWdDQkVHMWYzRkJBbkkyQWdRZ0FVSGJtQWhCM1BnTUlCQkNBRmtiRUE0Z0VCQ2FCaUFBSUFBb0FnQkJER3NpQVNnQ0FHb2dCallDQkNBQUlBRW9BZ0JxSUFVMkFrd0xJQUpCRUdva0FBc2dCMEVnYWlRQUN3b0FJQUVvQWdCQkRVWUx4UUVCQlg4Z0FpQUJheUlEUVFKMUlnUWdBQ2dDQ0NBQUtBSUFJZ1ZyUVFKMVRRUkFJQUVnQUNnQ0JDQUZheUlEYWlBQ0lBUWdBMEVDZFNJSFN4c2lBeUFCYXlFR0lBRWdBMGNFUUNBRklBRWdCaERuQVJvTElBUWdCMHNFUUNBQUtBSUVJUUVnQUNBQ0lBTnJJZ0pCQUVvRWZ5QUJJQU1nQWhCOUlBSnFCU0FCQ3pZQ0JBOExJQUFnQlNBR2FqWUNCQThMSUFBUWlBNGdBQ0FBSUFRUWl3UVF6d1VnQUNnQ0JDRUNJQUFnQTBFQVNnUi9JQUlnQVNBREVIMGdBMm9GSUFJTE5nSUVDN1lFQWdwL0FYMENRQUovUVFJZ0FVRUJSZzBBR2lBQklBRWdBVUVCYTNGRkRRQWFJQUVRZndzaUFpQUFLQUlFSWdGTkJFQWdBU0FDVFEwQklBRkJBMGtoQXdKL0lBQW9BZ3l6SUFBcUFoQ1ZqU0lNUXdBQWdFOWRJQXhEQUFBQUFHQnhCRUFnREtrTUFRdEJBQXNoQlNBQklBSWdBeUFCYVVFQlMzSUVmeUFGRUg4RklBVkJBVUVnSUFWQkFXdG5hM1FnQlVFQ1NSc0xJZ0VnQVNBQ1NSc2lBazBOQVFzZ0FDRURRUUFoQVFKQUlBSUVRQ0FESUFJUWx3TVFiQ0FESUFJMkFnUURRQ0FCSUFKR0JFQWdBeWdDQ0NJRlJRMERJQU5CQ0dvaEFDQUZLQUlFSVFZQ1FDQUNhU0lCUVFGTkJFQWdCaUFDUVFGcmNTRUdEQUVMSUFJZ0Jrc05BQ0FHSUFKd0lRWUxJQU1vQWdBZ0JrRUNkR29nQURZQ0FDQUNRUUZySVFrZ0FVRUJTeUVLQTBBZ0JTZ0NBQ0lBUlEwRUlBQW9BZ1FoQkFKQUlBcEZCRUFnQkNBSmNTRUVEQUVMSUFJZ0JFc05BQ0FFSUFKd0lRUUxBa0FnQkNBR1JnMEFJQUFoQVNBRVFRSjBJZ2dnQXlnQ0FHb2lCeWdDQUVVRVFDQUhJQVUyQWdBZ0JDRUdEQUVMQTBBQ1FDQUJJZ1FvQWdBaUFVVUVRRUVBSVFFTUFRc2dBQ2dDRENJSElBRW9BZ3dpQzBZTkFTQUhJQXNnQnlnQ0FDZ0NDQkVCQUNFSElBUW9BZ0FoQVNBSERRRUxDeUFGSUFFMkFnQWdCQ0FES0FJQUlBaHFLQUlBS0FJQU5nSUFJQU1vQWdBZ0NHb29BZ0FnQURZQ0FBd0JDeUFBSVFVTUFBc0FCU0FES0FJQUlBRkJBblJxUVFBMkFnQWdBVUVCYWlFQkRBRUxBQXNBQ3lBRFFRQVFiQ0FEUVFBMkFnUUxDd3NLQUNBQktBSUFRUUpHQy9zQ0FndC9BbjBnQVNBQktBSUlJZ1EyQWdRZ0FDRU1JQUVoQ3dKL1FRQWdBQ2dDQkNJQ0lBQW9BZ3hCQVdxeklnMGdBQ29DRUNJT0lBS3psRjRiUlFSQUlBQWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJREFuOGdEU0FPbFkwaURVTUFBSUJQWFNBTlF3QUFBQUJnY1FSQUlBMnBEQUVMUVFBTElnSWdBaUFEU1JzUS9oWWdBQ2dDQkNFQ0N5QUNRUUZySUFSeElBSnBJZ05CQVUwTkFCb2dCQ0FDSUFSTERRQWFJQVFnQW5BTElRY0NRQ0FBS0FJQUlBZEJBblJxS0FJQUlnVkZCRUJCQUNFRkRBRUxJQUpCQVdzaENTQURRUUZMSVFvRFFDQUZLQUlBSWdoRkRRRWdDQ2dDQkNFREFrQWdDa1VFUUNBRElBbHhJUUFNQVFzZ0F5SUFJQUpKRFFBZ0F5QUNjQ0VBQ3lBQUlBZEhEUUZCQUNFQUFrQWdBeUFFUmdSQUlBZ29BZ3dpQUNBQktBSU1JZ05HQkVCQkFTRUFEQUlMSUFBZ0F5QUFLQUlBS0FJSUVRRUFJUUFMSUFZZ0FFRUJjM0VOQWdzZ0FDQUdjaUVHSUFVb0FnQWhCUXdBQ3dBTElBd2dDeUFGRUk4WEN4Y0FRb0NBZ0lEZ240Q1FCQ0FBcllpbklBQkJPMGx4QzJrQkFYOUJBU0VCQWtBZ0FFRUJhMEVGU1EwQUFrQWdBRUVHYXc1REFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFBQUFBQUFBQUFBQUFBQUFBQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUFMUVFBaEFRc2dBUXNLQUNBQVFSUnJRUU5KQ3o0Q0FYOEJma0VRRUJVaEF5QUFJQUZCQ0dvMkFnUWdBQ0FETmdJQUlBTWdBaWtDQUNJRU53SUlJQUJCQVRvQUNDQURRUUEyQWdBZ0F5QUVQZ0lFQ3gwQUlBRUVRQ0FCSUFCQkVIWTdBUUFMSUFJRVFDQUNJQUE3QVFBTEMyZ0JBWDhqQUVFZ2F5SUVKQUFnQkVFQU5nSWNBa0FnQVVFb2FpQUNJQU1nQkVFY2FoRGRBa1VFUUNBQUlBUW9BaHdvQWdBUUZCb01BUXNnQkVFUWFrSEZsQUVRRkNFQklBUWdBeENNQkNBQUlBRWdCQkJPSUFRUUR4b2dBUkFQR2dzZ0JFRWdhaVFBQzZnQkFRVi9Jd0JCRUdzaUJDUUFBa0FnQVNnQ0JDQUJMUUFMSWdJZ0FrRVlkRUVZZFVFQVNCdEZCRUFnQUVHeHZRVVFGQm9NQVFzZ0FCQlZJQVJCMStvR0VCUWhCU0FCS0FJQUlBRWdBUzBBQ3lJRFFSaDBRUmgxUVFCSUlnWWJJZ0lnQVNnQ0JDQURJQVliYWlFQkEwQWdBU0FDUndSQUlBQkIzd0FnQWl3QUFDSURJQVVnQXhEbkNVRi9SaHNRcEFFZ0FrRUJhaUVDREFFTEN5QUZFQThhQ3lBRVFSQnFKQUFMR2dBZ0FFRzBEellDQkNBQVFaaStGVFlDQUNBQUlBQTJBaEFMQ2dBZ0FDZ0NBQkM0Q0F1dEJBSUpmd0Y5QWtBQ2YwRUNJQUZCQVVZTkFCb2dBU0FCSUFGQkFXdHhSUTBBR2lBQkVIOExJZ0lnQUNnQ0JDSUJUUVJBSUFFZ0FrME5BU0FCUVFOSklRTUNmeUFBS0FJTXN5QUFLZ0lRbFkwaUMwTUFBSUJQWFNBTFF3QUFBQUJnY1FSQUlBdXBEQUVMUVFBTElRVWdBU0FDSUFNZ0FXbEJBVXR5Qkg4Z0JSQi9CU0FGUVFGQklDQUZRUUZyWjJ0MElBVkJBa2tiQ3lJQklBRWdBa2tiSWdKTkRRRUxJQUFoQTBFQUlRRUNRQ0FDQkVBZ0F5QUNFSmNERUd3Z0F5QUNOZ0lFQTBBZ0FTQUNSZ1JBSUFNb0FnZ2lCVVVOQXlBRFFRaHFJUUFnQlNnQ0JDRUdBa0FnQW1raUFVRUJUUVJBSUFZZ0FrRUJhM0VoQmd3QkN5QUNJQVpMRFFBZ0JpQUNjQ0VHQ3lBREtBSUFJQVpCQW5ScUlBQTJBZ0FnQWtFQmF5RUpJQUZCQVVzaENnTkFJQVVvQWdBaUFFVU5CQ0FBS0FJRUlRUUNRQ0FLUlFSQUlBUWdDWEVoQkF3QkN5QUNJQVJMRFFBZ0JDQUNjQ0VFQ3dKQUlBUWdCa1lOQUNBQUlRRWdCRUVDZENJSUlBTW9BZ0JxSWdjb0FnQkZCRUFnQnlBRk5nSUFJQVFoQmd3QkN3TkFBa0FnQVNJRUtBSUFJZ0ZGQkVCQkFDRUJEQUVMSUFBb0Fnd2lCeUFCS0FJTUlBY29BZ0FvQWdnUkFRQWhCeUFFS0FJQUlRRWdCdzBCQ3dzZ0JTQUJOZ0lBSUFRZ0F5Z0NBQ0FJYWlnQ0FDZ0NBRFlDQUNBREtBSUFJQWhxS0FJQUlBQTJBZ0FNQVFzZ0FDRUZEQUFMQUFVZ0F5Z0NBQ0FCUVFKMGFrRUFOZ0lBSUFGQkFXb2hBUXdCQ3dBTEFBc2dBMEVBRUd3Z0EwRUFOZ0lFQ3dzTGhBRUJBMzhnQWlBQmF5SURRWEJKQkVBQ1FDQURRUXBOQkVBZ0FDQURPZ0FMREFFTElBTkJEM0pCQVdvaUJSQVZJUVFnQUNBRlFZQ0FnSUI0Y2pZQ0NDQUFJQVEyQWdBZ0FDQUROZ0lFSUFRaEFBc0RRQ0FCSUFKR1JRUkFJQUFnQVMwQUFEb0FBQ0FBUVFGcUlRQWdBVUVCYWlFQkRBRUxDeUFBUVFBNkFBQVBDeEFCQUF1d0FRRUNmMEU0RUJVaEF5QUFLQUlBSVFBZ0FTZ0NBQ0VFSUFJb0FnQWhBaU1BUVJCcklnRWtBQ0FEUWdBM0FnQWdBMElBTndJVUlBTkJnSUNBL0FNMkFoQWdBMElBTndJSUlBTkNBRGNDSENBRFFZQ0FnUHdETmdJa0lBTWdBQ2dDQURZQ0tDQURJQUFvQWdnMkFpd2dBeUFBS0FJRU5nSXdJQU1nQUNnQ0REWUNOQ0FCUVFBMkFnd2dBQ0FESUFRZ0FrRUFRYlVQSUFGQkRHb1F0QWNhSUFFb0Fnd1FrUmNnQVVFUWFpUUFJQU1MNkFzQkJuOGpBRUhRQW1zaUJ5UUFJQWNnQlRZQ3lBSWdCeUFFTmdMTUFpQUhJQUVRdVFnaUFUWUN4QUlnQnlBQktBSUFOZ0t3QWlBSElBRW9BZ2cyQXJRQ0lBY2dBU2dDQkRZQ3VBSWdCeUFCS0FJTU5nSzhBa0VBSVFRQ1FDQUhLQUswQWtVTkFDQUhLQUs0QWtVTkFDQUhLQUs4QWtFQVJ5RUVDd0pBSUFSRkJFQWdBUkM0Q0NBQVFkejREQkFVR2d3QkN5QUhRUUEyQXFnQ0lBZEJrQUpxRUlnWElBWkJ3QUJ4QkVBZ0IwSEVBbW9nQjBITUFtb2dCMEhJQW1vUWpCY2hBU0FIUVFBMkFqQWdCMEdvQW1vZ0FSQ09EaUFIUVRCcUlnRVF5QW9nQnlBSEtBS29BallDTkNBSFFheXlFellDTUNBSElBRTJBa0FnQjBHUUFtb2dBUkNJQ1NBQkVCWUxJQWRCR0dvZ0IwR1FBbW9RMFFFaEJTTUFRU0JySWdna0FDQUhRVEJxSWdFZ0JrRUJka0VCY1NJS09nQUFJQUZCQUNBQlFRaHFFSWdESUFFdEFBQWlDeHNpRERZQ21BRWdDRUVJYWlBRkVORUJJUWtnQVVHZ0FXb2lCRUhRc3lBZ0RFRUlhaUFMR3pZQ0JDQUVJQWRCc0FKcU5nSUFJQVFnQmtFRWRrRUJjVG9BRkNBRUlBWkJCM1pCQVhFMkFoQWdCQ0FHUVFKMlFRRnhPZ0FKSUFRZ0Nqb0FDQ0FFSUFaQkhIUkJIM1ZCRDNFMkFnd2dCRUVZYWlBSkVPc0ZHaUFKRUJZZ0FVRUFOZ0xVQVNBQklBWkJmM05CQlhaQkFYRTZBTkFCSUFGQkFEWUExd0VnQ0VFZ2FpUUFJQVVRRmlBSElBTTJBaEFnQnlBQ05nSU1JQWNnQVRZQ0NDQUhLQUxFQWlBSFFRaHFJQWNvQXN3Q0lBY29Bc2dDUWFzUFFhd1BRUUFRdEFjYUlBZEJBRFlDQkNBQUVGVWpBRUVRYXlJRkpBQWdBU0lDTFFBQVJRUkFJQVVnQWtFVWFpSUVFRUlnQlMwQUN5RUJJQVVvQWdRaEF5QUZFQThhSUFNZ0FTQUJRUmgwUVJoMVFRQklHeUlKUVFGcUlnRVFGU0VESUFVZ0JCQkNBa0FDUUFKQUFrQWdBeUlHSUFVb0FnQWdCU0FGTEFBTFFRQklHeUlFYzBFRGNRMEFJQUZCQUVjaENBSkFJQVJCQTNGRklBRkZjZzBBQTBBZ0JpQUVMUUFBSWdnNkFBQWdDRVVOQlNBR1FRRnFJUVlnQVVFQmF5SUJRUUJISVFnZ0JFRUJhaUlFUVFOeFJRMEJJQUVOQUFzTElBaEZEUUlnQkMwQUFFVU5BeUFCUVFSSkRRQURRQ0FFS0FJQUlnaEJmM01nQ0VHQmdvUUlhM0ZCZ0lHQ2hIaHhEUUlnQmlBSU5nSUFJQVpCQkdvaEJpQUVRUVJxSVFRZ0FVRUVheUlCUVFOTERRQUxDeUFCUlEwQkN3TkFJQVlnQkMwQUFDSUlPZ0FBSUFoRkRRSWdCa0VCYWlFR0lBUkJBV29oQkNBQlFRRnJJZ0VOQUFzTFFRQWhBUXNnQmtFQUlBRVFlUm9nQlJBUEdrRUlFQlVpQVNBSk5nSUVJQUVnQXpZQ0FDQUhJQUUyQWdRTElBVkJFR29rQUNBSEtBSUVJZ1FvQWdBaEFTQUJJQVFvQWdScUlRWWpBRUVRYXlJREpBQUNRQUpBQW44Z0JpQUJheUlJUVFvZ0FDZ0NDQ0lKUWYvLy8vOEhjVUVCYXlBQUxBQUxRUUJPR3lJRlRRUkFJQWxCR0hZTUFRc2dBQ2dDQUNBQUlBQXRBQXNpQ1VFWWRFRVlkVUVBU0NJS0d5SUxJQUZOSUFzZ0FDZ0NCQ0FKSUFvYmFpQUJUM0VOQVNBQUlBVWdDQ0FGYXlBQUtBSUVJQUF0QUFzaUJTQUZRUmgwUVJoMVFRQklHeUlGUVFBZ0JSRDBDU0FBTFFBTEN5RUZJQUFvQWdBZ0FDQUZRUmgwUVJoMVFRQklHeUVGQTBBZ0FTQUdSd1JBSUFVZ0FTMEFBRG9BQUNBQlFRRnFJUUVnQlVFQmFpRUZEQUVMQ3lBRlFRQTZBQUFnQUN3QUMwRUFTQVJBSUFBZ0NEWUNCQXdDQ3lBQUlBZzZBQXNNQVFzZ0F5QUJJQVlRaXhjZ0FDQURLQUlBSUFNZ0F5MEFDeUlCUVJoMFFSaDFRUUJJSWdVYklBTW9BZ1FnQVNBRkd4RDlGU0FERUE4YUN5QURRUkJxSkFBRFFBSkFJQUFvQWdRZ0FDMEFDeUlCSUFGQkdIUkJHSFZCQUVnaUFSc2lBMFVOQUNBQUtBSUFJQUFnQVJzZ0EycEJBV3N0QUFCQkNrY05BQ0FBSWdFb0FnUWdBUzBBQ3lJRElBTkJHSFJCR0hVaUJVRUFTQnRCQVdzaEF3SkFJQVZCQUVnRVFDQUJJQU0yQWdRZ0FTZ0NBQ0VCREFFTElBRWdBem9BQ3dzZ0FTQURha0VBT2dBQURBRUxDeUFFQkVBZ0JDZ0NBQ0lBQkVBZ0FCQWZDeUFFRUI4TElBY29Bc1FDRUxnSUlBSkJ1QUZxRUJZZ0FrRUlhaEM3QWhvZ0IwR1FBbW9RRmlBSFFhZ0NhaERJQ2dzZ0IwSFFBbW9rQUF1eUFRRURmeU1BUVJCcklnTWtBRUVCSVFRQ1FBTkFJQUlFUUNBQ0lBUnhCRUFnQUNnQ0FDQUJJQVFnQTBFTWFoRGRBZzBESUFVRVFDQUFLQUlFUVlVSUVBNGFDeUFBS0FJRUlBTW9BZ3dvQWdBUURob2dCVUVCYWlFRklBSWdCSE1oQWdzZ0JFRUJkQ0VFREFFTEN3SkFJQVVOQUNBQUtBSUFJQUZCQUNBRFFRaHFFTjBDRFFBZ0FDZ0NCQ0FES0FJSUtBSUFFQTRhQ3lBRFFSQnFKQUFQQzBHem53bEIxcTRDUWNrRFFhSHBCQkFBQUF1SUFnRURmeUFCS0FJRUlRUUNRQ0FBS0FJRUlnTnBJZ1ZCQVUwRVFDQURRUUZySUFSeElRUU1BUXNnQXlBRVN3MEFJQVFnQTNBaEJBc0NRQUpBSUFKRkJFQWdBU0FBS0FJSU5nSUFJQUFnQVRZQ0NDQUFLQUlBSUFSQkFuUnFJQUJCQ0dvMkFnQWdBU2dDQUNJQ1JRMENJQUlvQWdRaEFpQUZRUUZOQkVBZ0FpQURRUUZyY1NFQ0RBSUxJQUlnQTBrTkFTQUNJQU53SVFJTUFRc2dBU0FDS0FJQU5nSUFJQUlnQVRZQ0FDQUJLQUlBSWdKRkRRRWdBaWdDQkNFQ0FrQWdCVUVCVFFSQUlBSWdBMEVCYTNFaEFnd0JDeUFDSUFOSkRRQWdBaUFEY0NFQ0N5QUNJQVJHRFFFTElBQW9BZ0FnQWtFQ2RHb2dBVFlDQUFzZ0FDQUFLQUlNUVFGcU5nSU1DNG9CQVFGL0l3QkJFR3NpQWlRQUlBQVF6Z0VpQUNBQktBS1FBVFlDa0FFZ0FDQUJLUU9JQVRjRGlBRWdBRUdZQVdvZ0FVR1lBV29RMFFFYUlBQWdBU2dDdUFFMkFyZ0JJQUFnQVNrRHNBRTNBN0FCSUFGQnNBRnFFRlVnQUNBQktBSzhBVFlDdkFFZ0FVRUVOZ0s4QVNBQ0lBRkJCR29RUWlBQUlBSVFFaG9nQWhBUEdpQUNRUkJxSkFBTEd3RUJmeUFBQkVBZ0FDZ0NEQ0lCQkVBZ0FSQWZDeUFBRUI4TEMyb0JBMzhqQUVFZ2F5SURKQUFnQTBFSWFpQUFJQUFvQWdRZ0FDZ0NBR3RCQW5WQkFXb1Fpd1FnQUNnQ0JDQUFLQUlBYTBFQ2RTQUFRUWhxRUtjQ0lnSW9BZ2dpQkNBQktBSUFOZ0lBSUFJZ0JFRUVhallDQ0NBQUlBSVFvd1FnQWhDYUF5QURRU0JxSkFBTENRQWdBRUVRRUk4VEM1QUJBUUYvSXdCQndBRnJJZ1FrQUNBRUlBQVFuUUlnQkVIZ3V3SVFEaG9nQkNBQ0VJRUJFQTRhSUFSQmtza0tFQTRhSUFRZ0FSQWhHaUFFUVkvY0NrSHNxZ29nQUNnQ0xDQUFLQUlrU1JzUURob2dCQ0FERUxzSUVBNGFJQVJCb2M0SkVBNGFJQVFnQUNnQ0xDQUJheEFoR2lBRVFmeVhDQkFPR2lBRUtBSzhBU0VBSUFRUUVTQUVRY0FCYWlRQUlBQUwzUUlCQjM4akFFSEFBV3NpQXlRQUFrQUNRQ0FDQkVBZ0FDZ0NWQ0lHUlEwQklBQW9BbEFDZnlBR1FRRnJJQUp4SUFacElnVkJBVTBOQUJvZ0FpQUNJQVpKRFFBYUlBSWdCbkFMSWdkQkFuUnFLQUlBSWdSRkRRRWdCa0VCYXlFSUlBVkJBVXNoQ1FOQUlBUW9BZ0FpQkVVTkFpQUNJQVFvQWdRaUJVY0VRQUpBSUFsRkJFQWdCU0FJY1NFRkRBRUxJQVVnQmtrTkFDQUZJQVp3SVFVTElBVWdCMFlOQVF3REN5QUVLQUlJSUFKSERRQUxJQVFvQWd3aUIwVUVRQ0FESUFBUW5RSWdBMEd6M2dvUURob2dBeUFDRUNFYUlBTkJncFFFRUE0YUlBTW9BcndCSVFRZ0F4QVJEQU1MSUFFZ0J6WUNDQ0FCSUFRb0FoQWlBRFlDRENBQklBQkJIMnBCQlhZN0FRSkJBQ0VFREFJTFFhaVNCMEgzbFFKQmhBWkJ5SllFRUFBQUN5QURJQUFRblFJZ0EwR3ozZ29RRGhvZ0F5QUNFQ0VhSUFOQmpwVUVFQTRhSUFNb0Fyd0JJUVFnQXhBUkN5QURRY0FCYWlRQUlBUUxEQUFnQUNBQUtBSXNFTW9LQzk4Q0FndC9BbjBnQVNBQktBSUlJZ1EyQWdRZ0FDRU1JQUVoQ3dKL1FRQWdBQ2dDQkNJQ0lBQW9BZ3hCQVdxeklnMGdBQ29DRUNJT0lBS3psRjRiUlFSQUlBQWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJQ0FuOGdEU0FPbFkwaURVTUFBSUJQWFNBTlF3QUFBQUJnY1FSQUlBMnBEQUVMUVFBTElnTWdBaUFEU3hzUWloY2dBQ2dDQkNFQ0N5QUNRUUZySUFSeElBSnBJZ05CQVUwTkFCb2dCQ0FDSUFSTERRQWFJQVFnQW5BTElRY0NRQ0FBS0FJQUlBZEJBblJxS0FJQUlnQkZCRUJCQUNFQURBRUxJQUpCQVdzaENTQURRUUZMSVFvRFFDQUFLQUlBSWdoRkRRRUNmeUFJS0FJRUlnTWdDWEVnQ2tVTkFCb2dBeUFDSUFOTERRQWFJQU1nQW5BTElBZEhEUUZCQUNFR0lBTWdCRVlFUUNBSUtBSU1JZ01nQVNnQ0RDQURLQUlBS0FJSUVRRUFJUVlMSUFVZ0JrRUJjM0VOQVNBRklBWnlJUVVnQUNnQ0FDRUFEQUFMQUFzZ0RDQUxJQUFRanhjTDZnSUJCWDhnQUNBQktRSUFOd0lBSUFBZ0FTMEFHRG9BR0NBQUlBRXBBaEEzQWhBZ0FDQUJLUUlJTndJSUlBQkJIR29nQVVFY2FoRGVEeUFBUVRCcUlRUWdBQ2dDUEFSQUlBQW9BamdRc1FjZ0FFRUFOZ0k0SUFBb0FqUWhBd05BSUFJZ0EwWUVRQ0FBUVFBMkFqd0ZJQVFvQWdBZ0FrRUNkR3BCQURZQ0FDQUNRUUZxSVFJTUFRc0xDeUFCS0FJd0lRSWdBVUVBTmdJd0lBUWdBaEJzSUFBZ0FTZ0NORFlDTkNBQlFRQTJBalFnQUNBQktBSThJZ0kyQWp3Z0FFRkFheUFCUVVCcktnSUFPQUlBSUFCQk9Hb2lCU0FCS0FJNElnTTJBZ0FnQWdSQUlBTW9BZ1FoQWdKQUlBQW9BalFpQXlBRFFRRnJJZ1p4UlFSQUlBSWdCbkVoQWd3QkN5QUNJQU5KRFFBZ0FpQURjQ0VDQ3lBRUtBSUFJQUpCQW5ScUlBVTJBZ0FnQVVJQU53STRDeUFBUWNRQWFpQUJRY1FBYWhEZUR5QUFRZGdBYWlBQlFkZ0FhaER0QlNBQVFlUUFhaUFCUWVRQWFoRHRCU0FBUWZBQWFpQUJRZkFBYWhEdEJTQUFDK1VCQUNBQVFnQTNBaHdnQUNBRE5nSUlJQUFnQWpZQ0JDQUFJQUUyQWdBZ0FFSUFOd0lNSUFCQ0FEY0NNQ0FBUWdBM0FrUWdBRUlBTndJa0lBQkNBRGNBRVNBQVFZQ0FnUHdETmdJc0lBQkNBRGNDT0NBQVFVQnJRWUNBZ1B3RE5nSUFJQUJDQURjQ1RDQUFRWUNBZ1B3RE5nSlVJQUJCMkFCcVFRQkJKQkI1SVFFakFFRWdheUlDSkFBZ0FTZ0NDQ0FCS0FJQUlnTnJRUVIxUVJsSkJFQWdBU0FDUVFocVFSa2dBU2dDQkNBRGEwRUVkU0FCUVFocUVOSU9JZ0VRb3dRZ0FSQ1RGd3NnQWtFZ2FpUUFJQUJCNUFCcVFSa1Fxd1FnQUVId0FHcEJHUkNyQkNBQUN3MEFJQUJCQUVFQVFRQVFtUmNMcWdFQkFuOUJmQ0VFQWtBZ0FDZ0NBQ0lEUlEwQUlBQW9BZ1JCQlVrTkFDQUNSUVJBUVgwUEN5QUNJQU1vQWdBZ0FSQ25CallDQUNBQ0lBQW9BZ0FvQWdRZ0FSQ25CaUlETmdJRUlBTkIvNEdBZUhFZ0EwR0JqQVJyUWY5elNYSU5BQ0FDSUFBb0FnQW9BZ2dnQVJDbkJqWUNDQ0FDSUFBb0FnQW9BZ3dnQVJDbkJqWUNEQ0FDSUFBb0FnQW9BaEFnQVJDbkJqWUNFQ0FDSUFBb0FnQkJGR28yQWhSQkFDRUVDeUFFQzBBQkFuOGdBQ2dDQkNFQ0EzOGdBU0FDUmdSL0lBQW9BZ2doQVNBQVFnQTNBZ2dnQVFVZ0FDZ0NBQ0FCUVFKMGFrRUFOZ0lBSUFGQkFXb2hBUXdCQ3dzTFpBRURmeU1BUVJCcklnVWtBQ0FBUVFBMkFnZ2dBRUlBTndNQUEwQWdBeUFFUndSQUlBVkJBRFlDRENBQlFTQWdBaUFFUVFKMGFpSUdLQUlBSUFWQkRHb1EzUUpGQkVBZ0FDQUdLQUlBRU5BRUN5QUVRUUZxSVFRTUFRc0xJQVZCRUdva0FBc3dBUUYvSUFBb0FnQWhBU0FBUVFBMkFnQWdBUVJBSUFBdEFBZ0VRQ0FCUVJScUVLUUNDeUFCQkVBZ0FSQWZDd3NMVHdFQ2Z5TUFRUkJySWdFa0FDQUJJQUEyQWdnZ0FVRUlhaUVDUVFFaEFBTkFJQUJCQUVvRVFDQUNJQUlvQWdBUVREWUNBQ0FBUVFGcklRQU1BUXNMSUFFb0FnZ2hBQ0FCUVJCcUpBQWdBQXZTQWdFSGYwRUJJUVVDUUFKQUFrQUNRQUpBQWtBZ0FTQUFhMEVDZFE0R0JRVUFBUUlEQkFzZ0FVRUVheUlCS0FJQUlnTW9BZ0FvQWdBZ0FDZ0NBQ0lDS0FJQUtBSUFUdzBFSUFBZ0F6WUNBQ0FCSUFJMkFnQkJBUThMSUFBZ0FFRUVhaUFCUVFSckVMWUhHa0VCRHdzZ0FDQUFRUVJxSUFCQkNHb2dBVUVFYXhDVURocEJBUThMSUFBZ0FFRUVhaUFBUVFocUlBQkJER29nQVVFRWF4Q1REaHBCQVE4TElBQWdBRUVFYWlBQVFRaHFJZ1FRdGdjYUlBQkJER29oQWdOQUlBRWdBa1lOQVNBQ0lRTUNRQ0FDS0FJQUlnY29BZ0FvQWdBZ0JDZ0NBQ0lJS0FJQUtBSUFTUVJBQTBBQ1FDQURJQWcyQWdBZ0FDQUVJZ05HQkVBZ0FDRUREQUVMSUFjb0FnQW9BZ0FnQTBFRWF5SUVLQUlBSWdnb0FnQW9BZ0JKRFFFTEN5QURJQWMyQWdBZ0JrRUJhaUlHUVFoR0RRRUxJQUlpQkVFRWFpRUNEQUVMQ3lBQ1FRUnFJQUZHSVFVTElBVUwxUUlCQ244Q1FDQUJRUUpJRFFBZ0FVRUNhMEVCZGlJTElBSWdBR3NpQTBFQ2RVZ05BQ0FBSUFOQkFYVWlBMEVCYWlJR1FRSjBhaUlFS0FJQUlRVUNmeUFCSUFOQkFtb2lDVXdFUUNBRktBSUFLQUlBREFFTElBUkJCR29nQkNBRktBSUFLQUlBSWdNZ0JDZ0NCQ0lLS0FJQUtBSUFJZ2hKSWdjYklRUWdDaUFGSUFjYklRVWdDU0FHSUFjYklRWWdBeUFJSUFNZ0NFc2JDeUVESUFNZ0FpZ0NBQ0lJS0FJQUtBSUFTUTBBQTBBQ1FDQUVJUU1nQWlBRk5nSUFJQVlnQzBvTkFDQUFJQVpCQVhRaUFrRUJjaUlHUVFKMGFpSUVLQUlBSVFVQ2Z5QUJJQUpCQW1vaUNrd0VRQ0FGS0FJQUtBSUFEQUVMSUFSQkJHb2dCQ0FGS0FJQUtBSUFJZ0lnQkNnQ0JDSU1LQUlBS0FJQUlnZEpJZ2tiSVFRZ0RDQUZJQWtiSVFVZ0NpQUdJQWtiSVFZZ0FpQUhJQUlnQjBzYkN5RUhJQU1oQWlBSElBZ29BZ0FvQWdCUERRRUxDeUFESUFnMkFnQUxDeGdBSUFCQjlKd1ROZ0lBSUFCQkdHb1FNaG9nQUJEWEJRc3BBUUYvSUFCQi9KZ1ROZ0lBSUFCQklHb2lBU0FCS0FJRUVNNEtJQUJCRkdvUU1ob2dBQkRYQlFzWUFDQUFRWVNWRXpZQ0FDQUFRUnhxRURJYUlBQVExd1VMR0FBZ0FFR0VweE0yQWdBZ0FFRVVhaEFQR2lBQUVOY0ZDeVFBSUFFb0FnQWdBRUVHZENBQVFRSjJhbXBCeDR5aWpnWnJJQUJ6SUFJZ0F4Q29Gd3VpQVFBZ0FFSUFOd0lFSUFBZ0JEWUNJQ0FBSUFNMkFod2dBQ0FDTmdJWUlBQWdBVFlDRkNBQVFvQ0FnSUNBQXpjQ0RDQUFRZkNlRXpZQ0FBSkFBa0FDUUNBQkJFQWdBa1VOQVNBRFJRMENJQVJGRFFNZ0FBOExRZnZIQVVHQW9BSkJyUVZCMkw0RkVBQUFDMEdSa2dkQmdLQUNRYTRGUWRpK0JSQUFBQXRCK3BFSFFZQ2dBa0d2QlVIWXZnVVFBQUFMUVlTU0IwR0FvQUpCc0FWQjJMNEZFQUFBQ3pnQUlBSW9BZ0FnQVNnQ0FDQUFRUVowSUFCQkFuWnFha0hIaktLT0Jtc2dBSE1pQUVFR2RHb2dBRUVDZG1wQng0eWlqZ1pySUFCekN6SUFJQUJDQURjQ0JDQUFJQUUyQWhRZ0FFS0FnSUNBNEFFM0Fnd2dBRUgwbkJNMkFnQWdBRUVZYWlBQ0VMQUJHaUFBQys4QkFRVi9Jd0JCRUdzaUJDUUFJd0JCRUdzaUF5UUFJQUVpQjBFRWFpRUZBa0FnQVNnQ0JDSUdSUVJBSUFVaEFRd0JDd05BSUFJZ0JpSUJRUkJxSWdZUXpRb0VRQ0FCSVFVZ0FTZ0NBQ0lHRFFFTUFnc2dCaUFDRU0wS1JRMEJJQUZCQkdvaEJTQUJLQUlFSWdZTkFBc0xJQU1nQVRZQ0RDQUVJQVVvQWdBaUFRUi9RUUFGUVJnUUZTRUJJQU1nQjBFRWFqWUNCQ0FCSUFJcEFnQTNBaEFnQTBFQk9nQUlJQWNnQXlnQ0RDQUZJQUVRK0FJZ0EwRUFOZ0lBSUFNUWl3RkJBUXM2QUF3Z0JDQUJOZ0lJSUFOQkVHb2tBQ0FBSUFRb0FnZzJBZ0FnQUNBRUxRQU1PZ0FFSUFSQkVHb2tBQXVMQWdFRmZ5TUFRUkJySWdRa0FDQUVJQUUyQWd3Z0FTQUFLQUlZSUFBb0FoUnJRUUoxVHdSQVFlMnBDVUdBb0FKQjhnTkJoZHNDRUFBQUN5TUFRU0JySWdNa0FDQURJQVJCREdvaUJUWUNFQ01BUVJCcklnRWtBQ0FESUFCQklHb2lCaUFCUVF4cUlBVVFyUVlpQlNnQ0FDSUFCSDlCQUFWQklCQVZJUUFnQVNBR1FRUnFOZ0lFSUFFZ0FEWUNBQ0FES0FJUUtBSUFJUWNnQUVFQU5nSWNJQUJDQURjQ0ZDQUFJQWMyQWhBZ0FVRUJPZ0FJSUFZZ0FTZ0NEQ0FGSUFFb0FnQVErQUlnQVNnQ0FDRUFJQUZCQURZQ0FDQUJFSjRYUVFFTE9nQWNJQU1nQURZQ0dDQUJRUkJxSkFBZ0F5Z0NHQ0VBSUFOQklHb2tBQ0FBUVJScUlBSVFuZzRnQkVFUWFpUUFDNGtCQVFKL0lBQkNBRGNDQkNBQVFvQ0FnSUN3QVRjQ0RDQUFRZnlZRXpZQ0FDQUFRUlJxSUFFUXNBRWFJQUFnQUVFa2FqWUNJQ0FBUWdBM0FpUWdBU2dDQkNFRElBRW9BZ0FoQVFKQUEwQWdBU0FEUmcwQklBRW9BZ0FoQWlBQlFRUnFJUUVnQWlBQ0tBSUFLQUlZRVFBQVJRMEFDMEdlOHdoQmdLQUNRZXNEUWZmd0FCQUFBQXNnQUF0SUFDQUFRZ0EzQWdRZ0FDQUJOZ0lVSUFCQ2dJQ0FnS0FCTndJTUlBQkJnSmNUTmdJQUlBRWdBU2dDQUNnQ0dCRUFBQVJBUWF2ekNFR0FvQUpCendOQjJ4d1FBQUFMSUFBTGp3RUFJQUJDQURjQ0JDQUFJQUUyQWhRZ0FFS0FnSUNBa0FFM0Fnd2dBRUdFbFJNMkFnQWdBRUVZYWlBQ0VMWVhBa0FDUUNBQkJFQWdBU0FCS0FJQUtBSVlFUUFBRFFFZ0FpZ0NDQ0FDS0FJRWEwRUVUUTBDSUFBUEMwSDd4d0ZCZ0tBQ1FhUURRZU1kRUFBQUMwR3I4d2hCZ0tBQ1FhVURRZU1kRUFBQUMwR1doUWRCZ0tBQ1FhZ0RRZU1kRUFBQUN3NEFJQUFvQWhRZ0FTQUNFTTBFQzFnQUlBQkNBRGNDQkNBQUlBZzJBaXdnQUNBSE5nSW9JQUFnQmpZQ0pDQUFJQVU2QUNFZ0FDQUVPZ0FnSUFBZ0F6WUNIQ0FBSUFJMkFoZ2dBQ0FCTmdJVUlBQkNnSUNBZ09BQU53SU1JQUJCaUpNVE5nSUFJQUFMTUFBZ0FDQUFFTDhCSUFFb0FnQWdBaWdDQUNBRElBUW9BZ0FRbGg0aUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkMxQUFJQUJDQURjQ0JDQUFJQUkyQWhnZ0FDQUJOZ0lVSUFCQ2dJQ0FnTkFBTndJTUlBQkJqSkVUTmdJQUlBRWdBU2dDQUNnQ09CRUFBRVVFUUVITDhRaEJnS0FDUWRRQ1Fad2hFQUFBQ3lBQUMyOEJCWDhqQUVHZ0FXc2lBaVFBSUFKQkdHb1F6Z0VpQTBIYTZRWVFEaUVGSUFKQkNHb2lCQ0FCS0FJVUlnWWdCaWdDQUNnQ0RCRUNBQ0FGSUFRUUVrSDA3UXdRRGlBQktBSVlFQ0ZCaStZR0VBNGFJQVFRRHhvZ0FDQURRUVJxRUVJZ0F4QzdBUm9nQWtHZ0FXb2tBQXR3QUNBQVFnQTNBZ1FnQUNBQ05nSVlJQUFnQVRZQ0ZDQUFRb0NBZ0lEQUFEY0NEQ0FBUVpDUEV6WUNBQUpBSUFFZ0FTZ0NBQ2dDSUJFQUFBMEFJQUVnQVNnQ0FDZ0NLQkVBQUEwQUlBRWdBU2dDQUNnQ01CRUFBQTBBUWRqd0NFR0FvQUpCdWdKQm05SUJFQUFBQ3lBQUN4MEFJQUFvQWhRZ0FVRUdkQ0FCUVFKMmFtcEJ4NHlpamdacklBRnpDeG9BSUFBZ0FTZ0NBRFlDQUNBQVFRUnFJQUZCQkdvUXNBRWFDMGdCQVg4akFFRXdheUlCSkFBZ0FVRUFOZ0lzSUFGQkFEWUNCQ0FCSUFGQkRHbzJBZ2dnQVVHSXJoTTJBZ0FnQUVFQUlBRVF6UVFoQUNBQkVKZ09HaUFCUVRCcUpBQWdBQXNpQVFGL0lBQW9BaXdpQVFSQUlBRW9BZ1FQQ3lBQUtBSUlJQUFvQWdSQkFuUnFDeGNBSUFBZ0FTQUJJQUJyUVFKMUVOZ0tRUUYwRUpVT0N3a0FJQUFvQXRRQ1JRdkhBZ0VGZnlNQVFUQnJJZ0lrQUFKQUlBQW9BZ1FnQUNnQ0FDSUZhMEVNYlNJRUlBRW9BZ1FnQVNnQ0FDSUdhMEVNYlVjTkFFRUJJUU1DUUFKQUlBUU9BZ0lBQVFzZ0JTQUdFTXNJSVFNTUFRdEJBQ0VESUFKQkFEWUNLQ0FDUWdBM0F5QWdBa0VBTmdJWUlBSkNBRGNERUNBQ1FTQnFJZ1VnQkJDckJDQUZJQVFRcXdRRGZ5QURJQVJHQkg4Z0FpZ0NJQ0FDS0FJa0VMa1hJQUlvQWhBZ0FpZ0NGQkM1RjBFQUlRRURRQ0FFSUFFaUFFY0VRQ0FBUVFGcUlRRWdBRUVDZENJRElBSW9BaUJxS0FJQUlBSW9BaEFnQTJvb0FnQVF5d2hCQVhORkRRRUxDeUFDUVJCcUVESWFJQUpCSUdvUU1ob2dBQ0FFVHdVZ0FpQURRUXhzSWdVZ0FDZ0NBR28yQWd3Z0FrRWdhaUFDUVF4cUlnWVEvUUlnQWlBQktBSUFJQVZxTmdJTUlBTkJBV29oQXlBQ1FSQnFJQVlRL1FJTUFRc0xJUU1MSUFKQk1Hb2tBQ0FEQ3hrQUlBQkJnSUNBZ0FKUEJFQVErd0VBQ3lBQVFRTjBFQlVMTVFBQ1FDQUFLQUlBSWdBRVFDQUJLQUlBSWdFTkFRdEJnNjBCUWMydEEwSEJBRUhjOFFnUUFBQUxJQUFnQVJDK0J3c2pBQ0FBS0FJQUlnQkZCRUJCOFpVRVFjMnRBMEVvUWR6eENCQUFBQXNnQUJDM0Z3c1lBQ0FBUWRnQWFoRENDQ0FBUVVCckVLd0RJQUFRa0FzTHBBUUJCbjhqQUVIZ0FXc2lBeVFBSUFOQndBRnFJQUFnQVJEcEFTSUVJQUlRbGc0aEJ3SkFBbjhDUUFKQUFrQWdCQ2dDRUVFSmF3NEZBZ0lDQVFBQkMwRUFEQUlMUVFFaEJRc2dCUXNFUUNBQUlBY1FyUU1oQlF3QkN5QUFLQUlFSWdZb0FoZ2lCVUhRQldvaEJBTkFJQVFvQWdBaUJDQUZRY3dGYWtjRVFBSkFJQVFvQWhSQklFY05BQ0FFUVFJUWtRUWdBVWNOQUNBRVFRRVFrUVFnQWtjTkFDQUVFR0FoQlF3REN5QUVRUVJxSVFRZ0FDZ0NCQ0lHS0FJWUlRVU1BUXNMSUFZUXNBWWhCVUhBQUJBVklRUWdBQ2dDQkNFR0lBTkJBVFlDVENBRElBTkJ4QUJxTmdKSUlBTWdBeWtEU0RjREVDQURJQUkyQWtRZ0EwSFFBR29nQTBFUWFoQ3JBU0VDSUFOQkVEWUNhQ0FEUWVnQWFpSUlRUVJ5SUFJUXBnRWFJQU5CQVRZQ0pDQURJQUUyQWh3Z0F5QURRUnhxTmdJZ0lBTWdBeWtESURjRENDQURRU2hxSUFOQkNHb1Fxd0VoQVNBRFFRRTJBb1FCSUFOQmlBRnFJQUVRcGdFYUlBTkJBallDcEFFZ0F5QUlOZ0tnQVNBRElBTXBBNkFCTndNQUlBTWdCQ0FHUVNCQkFDQUZJQU5CcUFGcUlBTVFqQmdpQmhDckRqWUN1QUVnQTBHZ0FXb2hCQ0FHRU5vRkEwQWdCRUVZYXhCdEdpQUVRUnhySWdRZ0EwSG9BR3BIRFFBTElBRVFiUm9nQWhCdEdpQUFLQUlFSUFOQnVBRnFFTUlYSUFBb0FnUVEzd2dnQlNBSEVNTVhJQU1vQXJnQklRQWdBMEVBTmdLNEFTQUFSUTBBSUFBZ0FDZ0NBQ2dDQkJFREFBc2dCeERYQlJvZ0EwSGdBV29rQUNBRkM4QUZBUVIvSXdCQm9BRnJJZ1VrQUNBRlFRRTJBbFFnQlVFQU5nS1lBU0FGUWdBM0E1QUJJQVVnQlVITUFHbzJBbEFnQlNBRktRTlFOd01nSUFVZ0FUWUNUQ0FGUWRnQWFpQUZRU0JxRUtzQklRRWdCVUVCTmdKd0lBVkI4QUJxSWdaQkJISWlCeUFCRUtZQklRZ2dCVUdRQVdvZ0JoQ3VCaUFJRUcwYUlBRVFiUm9nQXdSQUlBVkJBVFlDUkNBRklBUTJBa3dnQlNBRlFjd0FhallDUUNBRklBVXBBMEEzQXhnZ0JVSFlBR29nQlVFWWFoQ3JBU0VCSUFWQkJqWUNjQ0FISUFFUXBnRWhCQ0FGUVpBQmFpQUZRZkFBYWhDdUJpQUVFRzBhSUFFUWJSb0xJQUlvQWdBb0FnQWhBU0FGUVFFMkFqd2dCU0FCTmdKTUlBVWdCVUhNQUdvMkFqZ2dCU0FGS1FNNE53TVFJQVZCMkFCcUlBVkJFR29RcXdFaEFTQUZRUnMyQW5BZ0J5QUJFS1lCSVFRZ0JVR1FBV29nQlVId0FHb1FyZ1lnQkJCdEdpQUJFRzBhUVFFaEFRTkFJQUlvQWdRZ0FpZ0NBQ0lFYTBFQ2RTQUJUUVJBSUFVZ0FDZ0NCQ0lCTmdKWUlBVkJ5QUJCeHdBZ0F4czJBa3dnQlVFQU5nSXNJQVZCQURZQ0tDQUZJQVZCMkFCcUlBVkJ6QUJxSUFWQkxHb2dCVUVvYWlBRlFaQUJhaENkRGpZQ2NDQUJLQUpzSWdKQkJIRUVmeUFCRU40SUlBVW9BbkFRN1JjZ0FTZ0NiQVVnQWd0QkFYRUVRQ0FCRU1BR0lBVW9BbkFRMmdvTElBVW9BbkFoQWlBQktBSVlJUUVnQlVFQU5nSndJQUlnQVVHSUJXb1ErQUVnQlNnQ2NDRUJJQVZCQURZQ2NDQUJCRUFnQVNBQktBSUFLQUlFRVFNQUN5QUFLQUlFSWdBb0FoZ29BcEFGSVFFZ0FCREFCaUFCRUxRT0lBVkJrQUZxRU5vRklBVkJvQUZxSkFBRklBVWdCQ0FCUVFKMGFpZ0NBRFlDVENBRklBVkJ6QUJxTmdJd0lBVkJBVFlDTkNBRklBVXBBekEzQXdnZ0JVSFlBR29nQlVFSWFoQ3JBU0VFSUFWQkJqWUNjQ0FISUFRUXBnRWhCaUFGUVpBQmFpQUZRZkFBYWhDdUJpQUdFRzBhSUFRUWJSb2dBVUVCYWlFQkRBRUxDd3RBQVFKL0lBRW9BZ0FoQWlBQUtBSVlJUU1nQVVFQU5nSUFJQUlnQTBITUJXb1ErQUVnQUMwQWJFRUJjUVJBSUFBUXdBWWdBQ2dDR0NnQzFBVVEyZ29MQzM4QkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBTWdBQ0FDRU9NRElnRTJBZ2dnQVNBQ0VMNEhCRUFnQUVFSWFpQURRUXhxRU5BQklBRTJBZ0FnQUNBREtBSUlFSThFUlFSQUlBTW9BZ3doQVNBQVFSeHFJQU5CQ0dvUW53NGdBVFlDQUFzZ0EwRVFhaVFBRHd0QnhMd0lRY2FsQWtHSUJVSGlsZ1FRQUFBTGx3TUJCWDhqQUVFZ2F5SURKQUFDUUNBQktBSVVJZ1FRNGhkRkRRQUNRQUpBQWtBZ0JFSEhBR3NPQWdBQkFnc2dBU2dDSkNFQUlBRW9BaUFoQkNBRFFRQTJBaGdnQTBJQU53TVFRUUVnQUNBRWEwRWNiU0lBSUFCQkFVMGJJUUJCQVNFRUEwQWdBQ0FFUmdSQUlBSkJCR29nQTBFUWFpSUFFSjRPSUFBUU1ob01CQVVnQXlBQklBUVFrUVEyQWdBZ0JFRUJhaUVFSUFOQkVHb2dBeERmQWd3QkN3QUxBQXNnQVNnQ0pDRUZJQUVvQWlBaEJpQUJRUUVRa1FRaEJ5QURRUUEyQWhnZ0EwSUFOd01RUVFJaEJFRUNJQVVnQm10QkhHMGlCU0FGUVFKTkd5RUZBMEFnQkNBRlJnUkFBa0FnQWlBQ0tBSUFLQUpzRVFBQUlnRUVRQ0FCSUFjZ0EwRVFhaENyRnd3QkN5QUFLQUlBSVFBZ0EwRUFOZ0lJSUFOQ2xBYzNBd0FnQUVFQlFjYWxBaUFEUWNYekF4RFBCQXNnQTBFUWFoQXlHZ3dEQlNBRElBRWdCQkNSQkRZQ0FDQUVRUUZxSVFRZ0EwRVFhaUFERU44Q0RBRUxBQXNBQ3lBQUtBSUFJUUFnQTBFQU5nSVlJQU5DbUFjM0F4QWdBRUVCUWNhbEFpQURRUkJxUWVlOUJCRFBCQXNnQTBFZ2FpUUFDM1FCQTM4akFFRVFheUlDSkFBZ0FFRUFOZ0lJSUFCQ0FEY0NBQ0FCUWN3RmFpRURJQUZCMEFWcUlRRURRQ0FESUFFb0FnQWlBVWNFUUNBQktBSVVJZ1JCNEN0SElBUkJLV3RCQzB0eFJRUkFJQUlnQVRZQ0RDQUFJQUpCREdvUS9RSUxJQUZCQkdvaEFRd0JDd3NnQWtFUWFpUUFDMmNCQW44akFFRVFheUlDSkFBZ0FFRUFOZ0lJSUFCQ0FEY0NBQ0FCUWN3RmFpRURJQUZCMEFWcUlRRURRQ0FESUFFb0FnQWlBVWNFUUNBQktBSVVFS1VPQkVBZ0FpQUJOZ0lNSUFBZ0FrRU1haEQ5QWdzZ0FVRUVhaUVCREFFTEN5QUNRUkJxSkFBTGp3SUJCWDhqQUVFUWF5SUdKQUFnQmlBQk5nSUlJQVpCQ0dvaEFnSkFJQUJCakFacUlnRW9BZ1FpQUNBQktBSUlTUVJBSUFJb0FnQWhCQ0FDUVFBMkFnQWdBQ0FFTmdJQUlBRWdBRUVFYWpZQ0JBd0JDeU1BUVNCcklnUWtBQ0FFUVFocUlBRWdBU2dDQkNBQktBSUFhMEVDZFVFQmFoQ0xCQ0FCS0FJRUlBRW9BZ0JyUVFKMUlBRkJDR29RcHdJaUFDZ0NDQ0VGSUFJb0FnQWhBeUFDUVFBMkFnQWdCU0FETmdJQUlBQWdCVUVFYWpZQ0NDQUJJQUFRK3dnZ0FDZ0NCQ0VGQTBBZ0JTQUFLQUlJSWdOSEJFQWdBQ0FEUVFScklnTTJBZ2dnQXhEWkNCb01BUXNMSUFBb0FnQWlBQVJBSUFBUUh3c2dCRUVnYWlRQUlBRW9BZ1FhQ3lBQ0VOa0lHaUFHUVJCcUpBQUxMUUVDZnlBQUtBSUlJZ0VnQUNnQ0JDSUNhMEVJZEVFQmEwRUFJQUVnQWtjYklBQW9BaFFnQUNnQ0VHcHJDMFVCQW44Z0FDZ0NCQ0VDQTBBZ0FpQUFLQUlJSWdGSEJFQWdBQ0FCUVVCcUlnRTJBZ2dnQVNBQktBSUFLQUlBRVFBQUdnd0JDd3NnQUNnQ0FDSUFCRUFnQUJBZkN3dXJBZ0VGZnlBQUtBSUFJUVVnQUNnQ0JDRURBMEFnQXlBRlJ3UkFJQUVvQWdSQlFHb2lBa0lBTndJRUlBSkJBRG9BRENBQ1FmVGdFallDQUNBQ0lBTkJRR29pQXlnQ0VEWUNFQ0FDSUFNb0FoUTJBaFFnQWlBRExRQVlPZ0FZSUFJZ0F5MEFHVG9BR1NBQ0lBTW9BaHcyQWh3Z0FrRWdhaUFEUVNCcUVLVUNHaUFDUVN4cUlBTkJMR29RcFFJaEJDQUNJQU1wQWpnM0FqZ2dCQ2dDQUNFRUlBSW9BakFoQmdOL0lBUWdCa1lFZnlBQ0JTQUVJQU1wQWpnM0FqZ2dCRUZBYXlFRURBRUxDeG9nQVNBQktBSUVRVUJxTmdJRURBRUxDeUFBS0FJQUlRSWdBQ0FCS0FJRU5nSUFJQUVnQWpZQ0JDQUFLQUlFSVFJZ0FDQUJLQUlJTmdJRUlBRWdBallDQ0NBQUtBSUlJUUlnQUNBQktBSU1OZ0lJSUFFZ0FqWUNEQ0FCSUFFb0FnUTJBZ0FMU2dFQmZ5QUFRUUEyQWd3Z0FDQUROZ0lRSUFFRVFDQUJFTjhYSVFRTElBQWdCRFlDQUNBQUlBUWdBa0VHZEdvaUFqWUNDQ0FBSUFRZ0FVRUdkR28yQWd3Z0FDQUNOZ0lFSUFBTEdBRUJmMEVNRUJVaUFFRUFOZ0lJSUFCQ0FEY0NBQ0FBQzlnREFRaC9JQVFvQWdBaEJTQURLQUlBSVFNZ0FTQUNLQUlBTmdJQUlBRkJCR29pQVVFQU5nSVVJQUZCQURZQ0JDQUJJQUZCREdvMkFnZ2dBVUdFNFJJMkFnQWdBUkRRQnlFQUlBRW9BaFFpQkNBQlFRaHFJZ2tnQkJzb0FnQWhDaUFFSUFVZ0EydEJBblVpQ3lBQktBSUVhaUlNUVFOSmNrVUVRRUVBSVFRakFFRVFheUlHSkFBQ1FDQUJLQUlVUlFSQUVNd1hJUUlnQmtFQU5nSUlJQUZCRkdvZ0FoQ05CU0FHUVFocUVMc0dBMEFnQkNBQktBSUVUdzBDSUFFb0FnZ2dCRUVDZEdvaEJ3SkFJQUVvQWhRaUFpZ0NCQ0lJSUFJb0FnaEpCRUFnQ0NBSEtBSUFOZ0lBSUFJZ0NFRUVhallDQkF3QkN5QUNJQWNRdUE0Z0FpZ0NCQm9MSUFSQkFXb2hCQXdBQ3dBTFFhYTlCVUdKckFOQnZRTkJ6TG9GRUFBQUN5QUJRUUEyQWdRZ0JrRVFhaVFBSUFFb0FoUWhCQXNDUUNBRUJFQWdCQ0FFS0FJQUlBQWdDbXRCZkhGcUlBTWdCUkRqQ2lBQktBSVVJZ0FnQ1NBQUd5Z0NBQm9NQVFzZ0FTZ0NDQ0FNUVFKMGFpRUNJQUVRMEFjaEJBTi9JQUFnQkVFRWF5SUVTd1IvSUFBaEJBTkFJQU1nQlVjRVFDQUVJQU1vQWdBMkFnQWdBMEVFYWlFRElBUkJCR29oQkF3QkN3c2dBU0FCS0FJRUlBdHFOZ0lFSUFBRklBSkJCR3NpQWlBRUtBSUFOZ0lBREFFTEN4b0xDeVFBSUFBb0FnQUVRQ0FBRVBRS0lBQW9BZ0FRSHlBQVFRQTJBZ2dnQUVJQU53SUFDd3REQVFOL0lBQVEwZ2NoQVFOL0lBQW9BaVFnQUNnQ0lDSURhMEVjYlNBQlRRUi9JQUlGSUFNZ0FVRWNiR3BCQkdvUTJRY2dBbW9oQWlBQlFRRnFJUUVNQVFzTEM1d0NBUVYvSUFBZ0FVY0VRQUpBSUFFb0FnUWlCU0FCS0FJQUlnSnJRUVoxSWdNZ0FDZ0NDQ0FBS0FJQUlnRnJRUVoxVFFSQUlBSWdBQ2dDQkNBQmF5SUVhaUFGSUFNZ0JFRUdkU0lHU3hzaEJBTkFJQUlnQkVjRVFBSkFJQUV0QUF4RkJFQWdBU2dDQkFSQUlBRVE4Z29MREFFTFFZRzhCVUhWdFFOQi9BQkJqZVlHRUFBQUN5QUJJQUlwQWhnM0FoZ2dBU0FDS1FJUU53SVFJQUZCSUdvZ0FrRWdhaERSRnlBQlFTeHFJQUpCTEdvUTBCY2dBU0FDS1FJNE53STRJQUZCUUdzaEFTQUNRVUJySVFJTUFRc0xJQU1nQmtzRVFDQUFJQVFnQlNBRElBQW9BZ1FnQUNnQ0FHdEJCblZyRUxJT0RBSUxJQUFnQVJEekdBd0JDeUFBRU00WElBQWdBQ0FERUtZT0VPQVhJQUFnQWlBRklBTVFzZzRMQ3d2Q0FRRUVmeUFBSUFGSEJFQUNRQ0FCS0FJRUlnUWdBU2dDQUNJQ2EwRWNiU0lCSUFBb0FnZ2dBQ2dDQUNJRGEwRWNiVTBFUUNBQ0lBSWdBQ2dDQkNBRGEwRWNiU0lGUVJ4c2FpQUVJQUVnQlVzaUFoc2lCU0FERU4wWElRTWdBZ1JBSUFBZ0JTQUVJQUFvQWdRZ0FDZ0NBR3RCWkcwZ0FXb1F6QWdNQWdzZ0FDQURFUElZREFFTElBQW9BZ0FFUUNBQUVQUVlJQUFvQWdBUUh5QUFRUUEyQWdnZ0FFSUFOd0lBQ3lBQUlBQWdBUkRJQ0JDOURpQUFJQUlnQkNBQkVNd0lDd3NMNndFQkEzOUJ3QUFRRlNJQ1FnQTNBZ1FnQWtFQU93RVlJQUpCQURZQ0ZDQUNJQUUyQWhBZ0FrRUFPZ0FNSUFKQjlPQVNOZ0lBSUFFUXZRY2hBeUFDUWdBM0FpQWdBaUFETmdJY0lBSkNBRGNDS0NBQ1FnQTNBakFnQWtJQU53STRJQUlnQUNnQ0ZEWUNGQ0FDSUFBdEFCZzZBQmdnQWlBQUxRQVpPZ0FaSUFJZ0FSQzlCellDSENBQ1FTQnFJQUJCSUdvUTBSY2dBa0VzYWlBQVFTeHFFTkFYSUFJb0FqQWhCQ0FDS0FJc0lRTURRQ0FESUFSSEJFQWdBeUFCRUwwSE5nSWNJQU1RcWc0RVFDQURJQUVRc0FZUXFRNExJQU5CUUdzaEF3d0JDd3NnQWlBQUtRSTROd0k0SUFJTDhBRUJBMzhqQUVFUWF5SUVKQUFnQUVJQU53SUVJQUFnQVRZQ0VDQUFRUUE2QUF3Z0FFSDA0QkkyQWdBZ0FDQUNMd0VHTmdJVUlBQWdBaWdDREVFQVJ6b0FHQ0FBSUFJb0FoQkJBRWM2QUJrZ0FSQzlCeUVCSUFCQ0FEY0NJQ0FBSUFFMkFod2dBRUlBTndJb0lBQkNBRGNDTUNBQUlBTXBBZ0EzQWpnZ0FFRWdhaUlESUFJdkFSZ1FyUTREZnlBQ0x3RVlJQVZOQkg4Z0JFRVFhaVFBSUFBRklBUWdBaWdDQUNBQ0tBSVVJQVZCQkhScUlnRXZBUUJCQW5ScUlnWTJBZ3dnQkNBR0lBRXZBUUpCQW5ScU5nSUlJQU1nQVVFRWFpQUVRUXhxSUFSQkNHb1ExQmNnQlVFQmFpRUZEQUVMQ3d1b0FRRUNmd0pBSUFBb0FnUWdBQ2dDQ0VrRVFDQUFRUWhxSUFBb0FnUWlCQ0FCSUFJZ0F4RE5GeUFBSUFSQkhHbzJBZ1FNQVFzakFFRWdheUlGSkFBZ0FFRUlhaUlFSUFWQkNHb2dBQ0FBS0FJRUlBQW9BZ0JyUVJ4dFFRRnFFTWdJSUFBb0FnUWdBQ2dDQUd0QkhHMGdCQkRIQ0NJRUtBSUlJQUVnQWlBREVNMFhJQVFnQkNnQ0NFRWNhallDQ0NBQUlBUVEzQW9nQkJER0NDQUZRU0JxSkFBTElBQW9BZ1FhQ3hnQkFYOUJBU0VCSUFBUXJBNEVmMEVCQlNBQUVOUUtDd3MzQVFGL0lBQW9BZ0FpQVFSQUlBRWhBQU5BSUFBaUFTZ0NCQ0lBRFFBTElBRVBDd05BSUFBZ0FDZ0NDQ0lBS0FJQVJnMEFDeUFBQzAwQkEzOGdBU2dDQkNJRElBRW9BaEFnQVNnQ0ZHb2lCRUVJZGtIOC8vOEhjV29oQWlBQUlBTWdBU2dDQ0VZRWYwRUFCU0FDS0FJQUlBUkIvd2R4UVFKMGFnczJBZ1FnQUNBQ05nSUFDNmNCQVFOL0lBRXRBQVFFUUNBQUVLd0RJQUFnQVNnQ0FDSUNLUUlBTndJTUlBQWdBaWdDQ0RZQ0ZDQUJLQUlBSWdCQkFEWUNDQ0FBUWdBM0FnQVBDd0pBSUFBb0FoUWdBU2dDQUNJQktBSUVTUVJBSUFBUXJBTWdBQ0FCS0FJRUVJQVdEQUVMSUFCQkFEWUNFQXNnQUNBQktBSUVJZ00yQWhBRFFDQUNJQU5IQkVBZ0FrRUNkQ0lFSUFBb0FneHFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3dS9BZ0VFZnlNQVFSQnJJZ0lrQUNBQUtBSUVJZ01nQUNnQ0VDSUVRUWgyUWZ6Ly93ZHhhaUVCSUFJZ0F5QUFLQUlJUmdSL1FRQUZJQUVvQWdBZ0JFSC9CM0ZCQW5ScUN6WUNEQ0FDSUFFMkFnZ2dBaUFBRU5jWElBSW9BZ3doQVNBQ0tBSUVJUVFEUUFKQUlBRWdCRVlFUUNBQVFRQTJBaFFnQUNnQ0JDRUJBMEFnQUNnQ0NDQUJheUlEUVFsSkRRSWdBU2dDQUJBZklBQWdBQ2dDQkVFRWFpSUJOZ0lFREFBTEFBc2dBaUFCUVFScUlnRTJBZ3dnQVNBQ0tBSUlJZ01vQWdCclFZQWdSdzBCSUFJZ0EwRUVhallDQ0NBQ0lBTW9BZ1FpQVRZQ0RBd0JDd3RCZ0FRaEFRSkFBa0FDUUNBRFFRSjJRUUZyRGdJQkFBSUxRWUFJSVFFTElBQWdBVFlDRUFzZ0FrRVFhaVFBSUFBb0FnZ2hBaUFBS0FJRUlRRURRQ0FCSUFKSEJFQWdBU2dDQUJBZklBRkJCR29oQVF3QkN3c2dBQkNhQXdzOUFRSi9JQUFvQWdRaEFnTkFJQUlnQUNnQ0NDSUJSd1JBSUFBZ0FVRUVheUlCTmdJSUlBRVF1Z1lhREFFTEN5QUFLQUlBSWdBRVFDQUFFQjhMQys4SEFRMS9Jd0JCSUdzaUJpUUFJQVpCQURZQ0dDQUdJQUFvQWxnMkFoUWdCaUFBUWRRQWFqWUNFQ0FHSUFZcEF4QTNBd2dqQUVFUWF5SUtKQUFnQVNBQU5nSUFJQXBCQURZQ0NDTUFRUkJySWdza0FDQUxJQUUyQWdnZ0JpZ0NDQ0lBS0FJQUlRMGdCaWdDRENFQklBdEJDR29oQ0NNQVFTQnJJZ3drQUFKQUlBQW9BZ1FpQWlBQUtBSUlTUVJBSUFFZ0FrWUVRQ0FJS0FJQUlRSWdDRUVBTmdJQUlBRWdBallDQUNBQUlBRkJCR28yQWdRTUFnc2dBQ2dDQkNJSElRVWdBU0FISUFGQkJHcHJhaUlESVFRRFFDQUNJQVJOQkVBZ0FDQUZOZ0lFSUFNaEFBTkFJQUFnQVVjRVFDQUhRUVJySWdjZ0FFRUVheUlBRUxBT0RBRUxDd1VnQkNnQ0FDRUpJQVJCQURZQ0FDQUZJQWsyQWdBZ0JVRUVhaUVGSUFSQkJHb2hCQXdCQ3dzZ0FTQUlFTEFPREFFTElBeEJDR29nQUNBQ0lBQW9BZ0JyUVFKMVFRRnFFSXNFSUFFZ0FDZ0NBR3RCQW5VZ0FFRUlhaENuQWlFRUl3QkJJR3NpQnlRQUFrQWdCQ2dDQ0NJRElBUW9BZ3hIRFFBZ0JDZ0NCQ0lGSUFRb0FnQWlBa3NFUUNBRklBVWdBbXRCQW5WQkFXcEJmbTFCQW5RaUNXb2hBZ05BSUFNZ0JVY0VRQ0FDSUFVUXNBNGdBa0VFYWlFQ0lBVkJCR29oQlF3QkN3c2dCQ0FDSWdNMkFnZ2dCQ0FFS0FJRUlBbHFOZ0lFREFFTElBZEJDR3BCQVNBRElBSnJRUUYxSUFJZ0EwWWJJZ0lnQWtFQ2RpQUVLQUlRRUtjQ0lnTW9BZ2dpQlNBRUtBSUlJQVFvQWdRaUFtdHFJUWtEUUNBRklBbEhCRUFnQWlnQ0FDRU9JQUpCQURZQ0FDQUZJQTQyQWdBZ0FrRUVhaUVDSUFWQkJHb2hCUXdCQ3dzZ0F5QUpOZ0lJSUFRb0FnQWhBaUFFSUFNb0FnQTJBZ0FnQXlBQ05nSUFJQVFvQWdRaEFpQUVJQU1vQWdRMkFnUWdBeUFDTmdJRUlBUW9BZ2doQWlBRUlBTW9BZ2cyQWdnZ0F5QUNOZ0lJSUFRb0Fnd2hBaUFFSUFNb0FndzJBZ3dnQXlBQ05nSU1JQU1RMmhjZ0JDZ0NDQ0VEQ3lBSUtBSUFJUUlnQ0VFQU5nSUFJQU1nQWpZQ0FDQUVJQVFvQWdoQkJHbzJBZ2dnQjBFZ2FpUUFJQVFpQWlnQ0JCb2dBQ2dDQUNBQklnTWdBa0VFYWhDOUdpQUFLQUlFSVFRRFFDQURJQVJIQkVBZ0F5Z0NBQ0VGSUFJb0FnZ2hCeUFEUVFBMkFnQWdCeUFGTmdJQUlBSWdBaWdDQ0VFRWFqWUNDQ0FEUVFScUlRTU1BUXNMSUFBb0FnQWhBeUFBSUFJb0FnUTJBZ0FnQWlBRE5nSUVJQUFvQWdRaEF5QUFJQUlvQWdnMkFnUWdBaUFETmdJSUlBQW9BZ2doQXlBQUlBSW9BZ3cyQWdnZ0FpQUROZ0lNSUFJZ0FpZ0NCRFlDQUNBQ0VOb1hDeUFNUVNCcUpBQWdCaWdDQ0NJQUtBSUFJUUlnQ2lBQU5nSUFJQW9nQWlBQklBMXJhallDQkNBSUVMb0dHaUFMUVJCcUpBQWdDa0VJYWhDNkJob2dDa0VRYWlRQUlBWkJHR29RdWdZYUlBWkJJR29rQUFzeUFRRi9JQUFvQWdnaEFpQUFLQUlFSVFBRFFDQUFJQUpIQkVBZ0FDZ0NBQ0FCUVFBUWpRTWdBRUVFYWlFQURBRUxDd3MyQUFOQUlBQWdBVWNFUUNBQ0lBQW9BZ0EyQWdBZ0FrRUVhaUFBUVFScUVJY1lJQUpCSEdvaEFpQUFRUnhxSVFBTUFRc0xJQUlMTndFQmZ5QUFLQUlBSVFBRFFDQUJCRUFnQWlBQklBRW9BaEFnQUVraUF4c2hBaUFCUVFScUlBRWdBeHNvQWdBaEFRd0JDd3NnQWdzWUFDQUFRWUNBZ0NCUEJFQVErd0VBQ3lBQVFRWjBFQlVMTWdFQmZ5QUJRWUNBZ0NCUEJFQVFBUUFMSUFBZ0FSRGZGeUlDTmdJQUlBQWdBallDQkNBQUlBSWdBVUVHZEdvMkFnZ0xpQUVCQW44akFFRXdheUlDSkFBQ1FDQUFRUmhxSWdNZ0FSQm9EUUFnQXlBQkVOQUVJQUpCQURZQ0xDQUFLQUlBUVNBZ0FTQUNRU3hxRU4wQ0RRQWdBa0VZYWlBQ0tBSXNJZ0VvQWdnZ0FTZ0NEQkRFQ0NFQklBSWdBRFlDQkNBQ1FhanlFallDQUNBQ0lBSTJBaEFnQVNBQ0VOWUtJQUlRRmlBQlFRaHFFTVVEQ3lBQ1FUQnFKQUFMSWdFQmYwRUJJUUVnQUVISEFHdEJCVWtnQUVHQUxHdEJBa2x5SUFCQnpBSkdjZ3RQQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDQ0NBRElBRTJBZ3dnQTBFTWFpRUJJQU5CQ0dvaEFpQUFLQUlRSWdCRkJFQVFid0FMSUFBZ0FTQUNJQUFvQWdBb0FoZ1JCUUFnQTBFUWFpUUFDemtCQVg4Z0FFRUlhaUVBQTBBZ0FnUkFJQU1nQWlBQ1FSQnFJQUVRMlFvaUJCc2hBeUFDUVFScUlBSWdCQnNvQWdBaEFnd0JDd3NnQXd0VEFRRi9Jd0JCRUdzaUF5UUFJQU1nQWpZQ0NDQURJQUUyQWd3Z0EwRU1haUVCSUFOQkNHb2hBaUFBS0FJUUlnQkZCRUFRYndBTElBQWdBU0FDSUFBb0FnQW9BaGdSQkFBaEFDQURRUkJxSkFBZ0FBczJBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBSUFKQkRHb1FuZ0lpQUFSL0lBQW9BZ3dGUVFBTElRRWdBa0VRYWlRQUlBRUxPUUFnQUJDNUJpSUFRZkQ3RHpZQ0JDQUFRY0Q4RHpZQ0FDQUFJQU0yQWhBZ0FDQUNOZ0lNSUFBZ0FUWUNDQ0FBUVpEOER6WUNBQ0FBQ3o4QkFYOGpBRUVRYXlJQ0pBQWdBa0VBTmdJTUlBSWdBVFlDQ0NBQVFSUnFJZ0FnQWtFSWFpQUFLQUlFSUFCQkJHb1E1QmNoQUNBQ1FSQnFKQUFnQUF2WUFRRUhmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUVnYWlJSElBSkJER29ROVFNaUJRUkFJQUJCRkdvaEF5QUZLQUlRSVFnZ0JTZ0NEQ0VCQTBBZ0FTQUlSZ1JBSXdCQkVHc2lBQ1FBSUFVb0FnQWFJQUFnQnlBRkVMQVpJQUFRMXc0Z0FFRVFhaVFBQlNBQ0lBQWdBU2dDQUJDVUFUWUNBQ0FDSUFJb0FndzJBZ1FDUUNBRElBSWdBeWdDQkNBRFFRUnFJZ1lRNUJjaUJDQUdSd1JBSUFJZ0JFRVFhaERaQ2tVTkFRc2dCaUVFQ3lBRUlBTkJCR3BIQkVBZ0F5QUVFTE1PR2dzZ0FVRUVhaUVCREFFTEN3c2dBa0VRYWlRQUM3UUJBUVIvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQUpBSUFCQklHb2dBa0VNYWhEMUEwVU5BQ0FBSUFJb0Fnd1E2UmNnQWlnQ0RCQmdSUTBBSUFCQkdHb2hBeUFBUVJScUlRVWdBQ0FDS0FJTUVPZ1hJZ1FoQVFOQUFrQWdBU0FEUndSQUlBRW9BaEFnQWlnQ0RFWU5BU0FCSVFNTEEwQWdBeUFFUndSQUlBVWdCQkN6RGlFRURBRUxDeUFDSUFJb0Fnd1FZRFlDQ0NBQUlBSkJDR29RMXdjTUFnc2dBUkJNSVFFTUFBc0FDeUFDUVJCcUpBQUxod0VCQTM4akFFRVFheUlESkFBZ0F5QUJFR0FpQWpZQ0RBSkFJQUlFUUNBQUlBTkJER29RN0FFaUFnUkFJQUFnQWlnQ0RCRHFGd3NqQUVFZ2F5SUNKQUFnQWlBRFFReHFJZ1EyQWhBZ0FrRVlhaUFBSUFRZ0FrRVFhaENPRHlBQ0tBSVlJUUFnQWtFZ2FpUUFJQUJCREdvZ0FUWUNBQXdCQ3lBQUlBRVE2aGNMSUFOQkVHb2tBQXNzQVFGL1FmcWhBeUVDQWtBQ1FBSkFJQUZCQVdzT0FnRUFBZ3RCK3lvaEFnc2dBRUVJYWlBQ0VBNGFDd3ZkQVFFRGZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Q1FBSkFBa0FDUUNBQktBSVVJZ05CeHdCckRnVUJBUU1DQWdBTElBTkJnQ3hHRFFBZ0EwSE1Ba2NOQWdzZ0FpQUJRUUFRT0RZQ0NDQUFJQUpCQ0dvUXRRNGdBa0VNYWhEUEFRd0JDMEVCUVFJZ0EwSEtBRVliSWdRaEF3TkFJQUVReUFFZ0EwMEVRQ0FDSUFJb0FneEJBQkE0TmdJSUlBQWdBa0VJYWhDMURrRVlhaUFDUVF4cUVNOEJCU0FDSUFJb0Fnd2dBeEE0TmdJSUlBQWdBa0VJYWhDMURrRU1haUFDUVF4cUVNOEJJQU1nQkdvaEF5QUNLQUlNSVFFTUFRc0xDeUFDUVJCcUpBQUxkQUVEZnlNQVFSQnJJZ0lrQUNBQktBSUVJUVFnQVNnQ0FDRUJBMEFnQVNBRVJrVUVRQ0FDSUFFb0FnQWlBellDREFKQUFrQWdBeWdDRkVISEFFY05BQ0FEUVFFUU9FRXBSdzBBSUFBdEFBQkZEUUVMSUFBb0FnUWdBa0VNYWhEUEFRc2dBVUVFYWlFQkRBRUxDeUFDUVJCcUpBQUx1QUVCQW44akFFRWdheUlESkFBZ0F5QUNOZ0ljSUFCQkFEWUNDQ0FBUWdBM0FnQUNRQUpBSUFFZ0EwRWNhaERzQVNJQ1JRMEFJQU1nQURZQ0ZDQURRUUU2QUJBZ0EwRVFhaUFDUVF4cUVPNFhJQUlvQWh3aEJDQUNLQUlZSVFBRFFDQUFJQVJHRFFFZ0F5QUFLQUlBUVFBUU9EWUNEQ0FCSUFOQkRHb1E3QUVpQWtVTkFpQURRUkJxSUFKQkRHb1E3aGNnQUVFRWFpRUFEQUFMQUFzZ0EwRWdhaVFBRHd0QnVxd0pRZHVpQWtISEEwR1oxUUVRQUFBTERBQWdBQ0FBRU5JSEVMOE9DeThBQTBBZ0FDQUJSd1JBSUFJb0FnQkJIR3NnQVVFY2F5SUJFTVVJR2lBQ0lBSW9BZ0JCSEdzMkFnQU1BUXNMQzFZQ0FYOEJmaU1BUVRCcklnQWtBQ0FDS0FJQUlRUWdBQ0FES1FJQUlnVTNBd2dnQUNBRk53TVFJQUJCR0dvZ0FFRUlhaENyQVNFQ0lBRWdCRFlDQUNBQlFRUnFJQUlRcGdFYUlBSVFiUm9nQUVFd2FpUUFDeFVBSUFCQm5Pd1NOZ0lBSUFCQkNHb1FNaG9nQUFzZkFDQUFJQUUyQWdRZ0FFRzg2QkkyQWdBZ0FFRUlhaUFDRUxBQkdpQUFDeFVBSUFCQnZPZ1NOZ0lBSUFCQkNHb1FNaG9nQUFzeUFRRi9BMEFDUUNBQUlBRkdJZ01OQUNBQUtBSUFJQUlvQWdCSERRQWdBa0VFYWlFQ0lBQkJCR29oQUF3QkN3c2dBd3ZTQVFFRmZ5TUFRUkJySWdZa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdVMkFnd2dCaUFGTmdJSUlBQkJqQUZxSWdVUXRRY2hCeUFBS0FJSUlRZ2dCaWdDQ0NFSklBSW9BZ0FoQWlBREtBSUFJUU1nQkNnQ0FDRUVJd0JCRUdzaUFDUUFJQUFnQ1RZQ0FDQUFJQWcyQWdnZ0J5QUFLQUlJSUFBb0FnQWdBUkR6QmlJQlFhajZEellDQkNBQlFlRDZEellDQUNBQklBUTJBaXdnQVNBRE5nSW9JQUVnQWpZQ0pDQUJRY2o2RHpZQ0FDQUFRUkJxSkFBZ0JTQUhFQ2dnQlNBRktBSVlRUUZxTmdJWUlBWkJFR29rQUNBSEN4QUFJQUJCQUJEaENpQUFJQUVRNFFvTHVnRUJBbjhDUUFKQUFrQWdBQ2dDQkNBQktBSUVSdzBBSUFBZ0FDZ0NBQ2dDTkJFQUFDSUNCRUFnQVNBQktBSUFLQUkwRVFBQUlnQkZEUUVNQXdzZ0FDQUFLQUlBS0FKRUVRQUFJZ0lFUUNBQklBRW9BZ0FvQWtRUkFBQWlBRVVOQVF3REN5QUFJQUFvQWdBb0FsZ1JBQUJGRFFFZ0FTQUJLQUlBS0FKWUVRQUFRUUJISVFNTElBTVBDMEdHc2dsQjBLa0RRZThEUWR6eENCQUFBQXNnQWlBQ0tBSUFLQUpnRVFBQUlBQWdBQ2dDQUNnQ1lCRUFBQkRMQ0F1a0FRRUNmd0pBSUFBb0FnUWdBQ2dDQ0VrRVFDQUFRUWhxSUFBb0FnUWlBeUFCSUFJUThoY2dBQ0FEUVJ4cU5nSUVEQUVMSXdCQklHc2lCQ1FBSUFCQkNHb2lBeUFFUVFocUlBQWdBQ2dDQkNBQUtBSUFhMEVjYlVFQmFoRElDQ0FBS0FJRUlBQW9BZ0JyUVJ4dElBTVF4d2dpQXlnQ0NDQUJJQUlROGhjZ0F5QURLQUlJUVJ4cU5nSUlJQUFnQXhEY0NpQURFTVlJSUFSQklHb2tBQXNnQUNnQ0JCb0x1QUVCQTM4Z0FTQUJLQUlFSUFJZ0FDZ0NBQ0lFYXlJRGF5SUZOZ0lFSUFOQkFFb0VRQ0FGSUFRZ0F4QjlHZ3NnQUNnQ0JDRUVJQUVvQWdnaEF3TkFJQUlnQkVjRVFDQURJQUlvQWdBMkFnQWdBU0FEUVFScUlnTTJBZ2dnQWtFRWFpRUNEQUVMQ3lBQUtBSUFJUUlnQUNBQktBSUVOZ0lBSUFFZ0FqWUNCQ0FBS0FJRUlRSWdBQ0FCS0FJSU5nSUVJQUVnQWpZQ0NDQUFLQUlJSVFJZ0FDQUJLQUlNTmdJSUlBRWdBallDRENBQklBRW9BZ1EyQWdBTGR3RUNmeU1BUVRCcklnTWtBQ0FEUVFFMkFod2dBeUFDTmdJVUlBTWdBMEVVYWpZQ0dDQURJQU1wQXhnM0F3Z2dBMEVnYWlBRFFRaHFFT2NESVFRZ0FDQUJOZ0lFSUFCQnZPZ1NOZ0lBSUFCQkNHb2dCQkNsQWhvZ0JCQXlHaUFBSUFJNkFCUWdBRUc0NXhJMkFnQWdBMEV3YWlRQUlBQUxHd0JCRkJBVklBQW9BZ0FnQVJEZ0NpSUFRZmp1RWpZQ0FDQUFDeHNBUVJRUUZTQUFLQUlBSUFFUTRBb2lBRUdBN2hJMkFnQWdBQXNiQUVFVUVCVWdBQ2dDQUNBQkVQUVhJZ0JCb09vU05nSUFJQUFMR3dCQkZCQVZJQUFvQWdBZ0FSRDBGeUlBUWFqcEVqWUNBQ0FBQ3lNQkFYOUJDQkFWSVFFZ0FDZ0NBQ0VBSUFGQnZPWVNOZ0lBSUFFZ0FEWUNCQ0FCQys4QkFRUi9Jd0JCSUdzaUFpUUFJQUpCQURZQ0dDQUNRZ0EzQXhBQ1FBSkFBMEFnQVJESUFTQURUUVJBQWtCQkFDRURJQUVvQWhSQktXc2lCRUVLU3cwRVFRRWdCSFJCckFoeERRTWdCRVVOQUNBRVFRRkhEUVFnQWtFQU5nSU1JQUpCRUdvZ0FrRU1haERmQWd3REN3VWdBa0VRYWlBQ0tBSVVJQUVnQXhDUEJTSUVLQUlZSWdVZ0JFRU1haUFGR3lnQ0FDQUJJQU1RandWQkJHb1EwQWNRNHdvZ0EwRUJhaUVEREFFTEN5QUNRUUUyQWd3Z0FrRVFhaUFDUVF4cUVOOENDeUFBSUFBb0FnQVEzd2dnQVJCNkVPa0JJQUpCRUdvUTRnb2hBd3NnQWtFUWFoQXlHaUFDUVNCcUpBQWdBd3NPQUNBQVFaTFZBMEhMQVJDOUVnc09BQ0FBUVlQVkEwR3BBUkM5RWd1WUFRRUJmd0pBQWtBZ0FDZ0NCQ0lCSUFFb0FnQW9BaWdSQUFBRVFDQUFLQUlFSWdFZ0FTZ0NBQ2dDS0JFQUFDZ0NGRUVnUncwQklBQWdBQ2dDQUNnQ09CRUFBQ0lCQkVBZ0FSQ0VHQThMSUFBZ0FDZ0NBQ2dDV0JFQUFFVU5Ba0VBRHd0Qmk4Z0JRYmFaQWtFN1FmRCtCaEFBQUF0QjlZQUhRYmFaQWtFOFFmRCtCaEFBQUF0QjA3RUpRYmFaQWtIQkFFSHcvZ1lRQUFBTEN3QkJEQkFWSUFBUXNBRUw0d01CQjM4akFFRVFheUlISkFBZ0FDZ0NDQVJBSUFCQkZHb2hBd0pBSUFFb0FoUWlBZ1JBSUFNb0FnQWlBQVJBSUFBZ0FrY0VRQUpBSUFJb0FnUWlCU0FDS0FJQUlnRnJJZ0pCQW5VaUF5QUFLQUlJSUFBb0FnQWlCR3RCQW5WTkJFQWdBU0FBS0FJRUlBUnJJZ0pxSUFVZ0F5QUNRUUoxSWdoTEd5SUNJQUZySVFZZ0FTQUNSd1JBSUFRZ0FTQUdFT2NCR2dzZ0F5QUlTd1JBSUFBb0FnUWhBU0FBSUFVZ0Ftc2lBRUVBU2dSL0lBRWdBaUFBRUgwZ0FHb0ZJQUVMTmdJRURBSUxJQUFnQkNBR2FqWUNCQXdCQ3lBQUVJZ09JQUFnQUNBREVLTUpFTThGSUFBb0FnUWhBeUFBSUFKQkFFb0VmeUFESUFFZ0FoQjlJQUpxQlNBREN6WUNCQXNMREFJTElBSVFoaGdoQUNBSFFRQTJBZ2dnQXlBQUVJMEZJQWRCQ0dvUXV3WU1BUXRCQUNFQ0lBTkJBQkNOQlNBQUtBSUlJUVFnQVNnQ0NDRUZJQUFvQWdRaEJnTkFJQUVvQWdRaUF5QUNUU0FDSUFaUGNrVUVRQ0FFSUFKQkFuUWlBMm9nQXlBRmFpZ0NBRFlDQUNBQ1FRRnFJUUlNQVFzTEFrQWdBaUFEVHcwQUlBRW9BZ2doQVNBQUtBSUlJUVFEUUNBQ0lBTkdEUUVnQkNBQ1FRSjBJZ1ZxSUFFZ0JXb29BZ0EyQWdBZ0FrRUJhaUVDREFBTEFBc2dBQ0FETmdJRUN5QUhRUkJxSkFBUEMwR2F2UVZCaWF3RFFlY0FRWTNtQmhBQUFBdEFBUUYvSUFBZ0FTZ0NBRFlDQUNBQVFRUnFJZ0pCQURZQ0ZDQUNRUUEyQWdRZ0FpQUNRUXhxTmdJSUlBSkJoT0VTTmdJQUlBSWdBVUVFYWhDSEdDQUFDeGtBSUFCQnlxU1N5UUJQQkVBUSt3RUFDeUFBUVJ4c0VCVUxKUUFnQUNBQklBSWdBeUFFSUFVZ0JpQUhRZCtXQlVHQStnOUJtUG9QUWVENUR4RElFZ3NVQUNBQVFhRGpFallDQUNBQVFRaHFFQllnQUFzN0FRRi9JQUJCQURZQ0NDQUFRZ0EzQWdBZ0FTZ0NCQ0lDQkVBZ0FDQUNFTDBPSUFBZ0FTZ0NBQ0lCSUFFZ0FrRWNiR29nQWhETUNBc2dBQXM4QVFGL0lBQkI3SXdPS0FJQUlnSTJBZ0FnQUNBQ1FReHJLQUlBYWtId2pBNG9BZ0EyQWdBZ0FDQUFLQUlBUVF4cktBSUFhaUFCRU84R0lBQUxxQUVCQVg4akFFRWdheUlDSkFBZ0FDZ0NGQ0lBTFFBTVFRRWdBQnNFUUVIWnJ3bEJtcWdEUWJnQ1FaU2ZBeEFBQUFzQ1FBSkFBa0FnQUNnQ0ZFSDVBV3NPQXdBQkFRSUxJQUVnQUVFQUVORUhJZ0FvQWhnaUFTQUFRUXhxSUFFYktBSUFLQUlBRUlvQ0dnd0JDeUFDUVFFNkFCOGdBaUFCTmdJSUlBSkI2T01TTmdJQUlBSWdBallDRUNBQ0lBSkJIMm8yQWdRZ0FDQUNFUEFPR2lBQ0VCWUxJQUpCSUdva0FBc2FBUUYvSXdCQkVHc2lBU0FBTmdJTUlBRW9BZ3hCQURZQ0FBc3pBUUYvSXdCQkVHc2lBU1FBSUFFZ0FEWUNEQ0FCS0FJTUlnQkJBRFlDQUNBQUVJOFlJQUJCQURZQ0JDQUJRUkJxSkFBTDdnUUJBWDhqQUVGQWFpSURKQUFnQXlBQk5nSThJQU1nQWpZQ09BSkFJQU1vQWpoRkJFQWdBQkNRR0F3QkN5QURLQUk4TFFBQVFmOEFUUVJBSUFOQk1Hb2lBaUFES0FJOExRQUFFSkFESUFOQkFUWUNMQ01BUVJCcklnRWdBRFlDRENBQklBSTJBZ2dnQVNBRFFTeHFOZ0lFSUFFb0Fnd2lBQ0FCS0FJSUtBSUFOZ0lBSUFBZ0FTZ0NCQ2dDQURZQ0JBd0JDeUFESUFNb0Fqd3RBQUJCMElJTmFpMEFBRG9BS3lBRExRQXJJQU1vQWpoTEJFQWdBQkNRR0F3QkN5QURRU0JxRUk4WUlBTkJnQUU2QUI4Q1FBSkFBa0FDUUFKQUlBTXRBQ3RCQVdzT0JBQUJBZ01FQ3lBRFFSaHFJQU1vQWp3dEFBQVFrQU1nQXlBREtBSVlOZ0lnREFNTElBTWdBeWdDUEMwQUFTQURMUUFmY1RvQUh5QURRUkJxSUFNb0Fqd3RBQUZCUDNFZ0F5Z0NQQzBBQUVFZmNVRUdkSElRa0FNZ0F5QURLQUlRTmdJZ0RBSUxJQU1nQXkwQUh5QURLQUk4TFFBQklBTW9Band0QUFKeGNUb0FIeUFEUVFocUlBTW9Band0QUFKQlAzRWdBeWdDUEMwQUFFRVBjVUVNZENBREtBSThMUUFCUVQ5eFFRWjBjbklRa0FNZ0F5QURLQUlJTmdJZ0RBRUxJQU1nQXkwQUh5QURLQUk4TFFBRElBTW9Band0QUFFZ0F5Z0NQQzBBQW5GeGNUb0FIeUFESUFNb0Fqd3RBQU5CUDNFZ0F5Z0NQQzBBQUVFSGNVRVNkQ0FES0FJOExRQUJRVDl4UVF4MGNpQURLQUk4TFFBQ1FUOXhRUVowY25JUWtBTWdBeUFES0FJQU5nSWdDeUFETFFBZlJRUkFJQU5CQURvQUt5QURRU0JxUVFBUWtBTUxJd0JCRUdzaUFTQUFOZ0lNSUFFZ0EwRWdhallDQ0NBQklBTkJLMm8yQWdRZ0FTZ0NEQ0lBSUFFb0FnZ29BZ0EyQWdBZ0FDQUJLQUlFTFFBQU5nSUVDeUFEUVVCckpBQUxDUUFnQUVFQU9nQUlDdzBBSUFCQnpKbXo1Z0FRdmhJTFZnRUNmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2dBaUFCTmdJSUlBSW9BZ3doQVNBQ0tBSUlJUU1qQUVFUWF5SUFKQUFnQUNBQk5nSU1JQUFnQXpZQ0NDQUFLQUlJRU1RSElBQkJFR29rQUNBQ1FSQnFKQUFMT0FFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWdRZ0FpQUJOZ0lBSUFKQkNHb2dBaWdDQUJDUUF5QUNLQUlJSVFBZ0FrRVFhaVFBSUFBTERRQWdBQ0FCSUFKQkZCQzhEQXRZQVFKL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1JZ0FRNmdFaEFpQUFJQUlnQUJEcUFTQUFFTEVHUVJSc2FpQUFFT29CSUFBUXd3ZEJGR3hxSUFBUTZnRWdBQkN4QmtFVWJHb1F0Z1lnQVVFUWFpUUFDekFCQVg4akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFJZ0FUWUNDQ0FDS0FJTUlBSW9BZ2dReXdNYUlBSkJFR29rQUFzL0FRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQ0lBSUFJZ0FpZ0NDQkRCRGhvZ0FCQ3ZBeUFBRUZVZ0FrRVFhaVFBSUFBTHBnSUJDWDhqQUVFUWF5SUVKQUFnQkNBQU5nSUlJQVFnQkNnQ0NDSUFOZ0lNSXdCQkVHc2lCU1FBSUFVZ0FEWUNEQ0FGS0FJTUlnRWhBeUFCS0FJRUlRSWpBRUVRYXlJQkpBQWdBU0FETmdJTUlBRWdBallDQ0NBQktBSU1JUUlnQVNnQ0NDRUdJd0JCRUdzaUF5UUFJQU1nQWpZQ0JDQURJQVkyQWdBZ0F5Z0NCQ0VDQTBBZ0F5Z0NBQ0FDS0FJSVJ3UkFJQUlReUFjaEJpQUNJQUlvQWdoQkZHc2lCellDQ0NBR0lBY1Fnd0VRbEJnTUFRc0xJQU5CRUdva0FDQUJRUkJxSkFBZ0JVRVFhaVFBSUFBb0FnQUVRQ0FBRU1nSElRa2dBQ2dDQUNFSUl3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1JZ0FReHdjb0FnQWdBQ2dDQUd0QkZHMGhBQ0FCUVJCcUpBQWdDU0FJSUFBUWxoZ0xJQVFvQWd3YUlBUkJFR29rQUF2dkFnRUZmeU1BUVJCcklnTWtBQ0FESUFBMkFnd2dBeUFCTmdJSUlBTW9BZ3dpQVJDWEdDQUJFTGNCSVFJZ0FTZ0NBQ0VFSUFFb0FnUWhCU0FES0FJSVFRUnFJUVlqQUVFUWF5SUFKQUFnQUNBQ05nSU1JQUFnQkRZQ0NDQUFJQVUyQWdRZ0FDQUdOZ0lBQTBBZ0FDZ0NCQ0FBS0FJSVJ3UkFJQUFvQWd3aEFpQUFLQUlBS0FJQVFSUnJFSU1CSVFRZ0FDQUFLQUlFUVJScklnVTJBZ1FnQWlBRUlBVVF3ZzRnQUNnQ0FDSUNJQUlvQWdCQkZHczJBZ0FNQVFzTElBQkJFR29rQUNBQklBTW9BZ2hCQkdvUXdnTWdBVUVFYWlBREtBSUlRUWhxRU1JRElBRVF0d0VnQXlnQ0NCREhCeERDQXlBREtBSUlJQU1vQWdnb0FnUTJBZ0FnQVJEREJ5RUFJd0JCRUdzaUFpUUFJQUlnQVRZQ0RDQUNJQUEyQWdnZ0FpZ0NEQ0lBRU9vQklRUWdBQ0FFSUFBUTZnRWdBQkN4QmtFVWJHb2dBQkRxQVNBQUVMRUdRUlJzYWlBQUVPb0JJQUlvQWdoQkZHeHFFTFlHSUFKQkVHb2tBQ0FCRUs4RElBTkJFR29rQUF1bkFnRUNmeU1BUVNCcklnUWtBQ0FFSUFBMkFoZ2dCQ0FCTmdJVUlBUWdBallDRUNBRUlBTTJBZ3dnQkNBRUtBSVlJZ0EyQWh3Z0JFRUFOZ0lJSUFCQkRHb2dCRUVJYWlBRUtBSU1FSzRZSUFBQ2Z5QUVLQUlVQkVBZ0FCRElCeUVCSUFRb0FoUWhBeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBaUFETmdJSUlBSW9BZ3doQXlBQ0tBSUlJUVVqQUVFUWF5SUJKQUFnQVNBRE5nSU1JQUVnQlRZQ0NDQUJLQUlJSUFFb0Fnd1FreGhMQkVBUSt3RUFDeUFCS0FJSVFSUnNRUVFRMHdnaEF5QUJRUkJxSkFBZ0F5RUJJQUpCRUdva0FDQUJEQUVMUVFBTE5nSUFJQUFnQUNnQ0FDQUVLQUlRUVJSc2FpSUJOZ0lJSUFBZ0FUWUNCQ0FBS0FJQUlBUW9BaFJCRkd4cUlRRWdBQkRIQnlBQk5nSUFJQVFvQWh3YUlBUkJJR29rQUF0S0FRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJJQUVvQWd3UXR3RVFreGcyQWdnZ0FVSC8vLy8vQnpZQ0JDQUJRUWhxSUFGQkJHb1FpQVVvQWdBaEFDQUJRUkJxSkFBZ0FBc3pBUUYvSXdCQkVHc2lBaVFBSUFJZ0FEWUNEQ0FDSUFFMkFnZ2dBaWdDREVFTWFpQUNLQUlJRU1VT0dpQUNRUkJxSkFBTE13RUJmeU1BUVJCcklnSWtBQ0FDSUFBMkFnd2dBaUFCTmdJSUlBSW9BZ3hCREdvZ0FpZ0NDQkRvQ2hvZ0FrRVFhaVFBQzN3QkFYOGpBRUdnQVdzaUFpUUFJQUlnQURZQ25BRWdBaUFCTmdLWUFTQUNRUWhxRUVrYUlBSW9BcGdCS0FJQUJFQWdBa0VJYWlBQ0tBS1lBUkNZR0NBQ0tBS1lBU2dDQkFSQUlBSkJDR3BCMWVvR0VPZ0tJQUlvQXBnQlFRUnFFSmdZQ3dzZ0FDQUNRUWhxSWdBUTdRb2dBQkJSSUFKQm9BRnFKQUFMMWdvQkduOGpBRUdnQVdzaUJpUUFJQVlnQURZQ25BRWdCa0dRQVdvaUFpQUdLQUtjQVNJQVFReHFFTzBLSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCS0FJTUVEc2hBaUFCUVJCcUpBQWdBZ1JBSUFBb0FnQWlBU0FHUVpBQmFpQUFRUVJxSUFFb0FnQW9BZ2dSQlFBZ0JoQkpHaU1BUVJCcklnc2tBQ0FMSUFCQkRHbzJBZ3dnQ3lBR05nSUlJQXNvQWd3aEFDQUxLQUlJSVFFakFFRVFheUlJSkFBZ0NDQUFOZ0lNSUFnZ0FUWUNDQ0FJS0FJTUlRUWdDQ2dDQ0NFQUl3QkJFR3NpQlNRQUlBVWdCRFlDRENBRklBQTJBZ2dnQlNnQ0RDRUFJQVVvQWdnaEFTTUFRUkJySWdNa0FDQURJQUEyQWd3Z0F5QUJOZ0lJSUFNb0Fnd2lBRUVFYWlBREtBSUlRUVJxRU1JRElBQW9BZ0JCREdzb0FnQWdBR29oQUNBREtBSUlJZ0VnQVNnQ0FFRU1heWdDQUdvaEFTTUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2lBRUVFYWlBQ0tBSUlJZ0ZCQkdvUXFRRWdBRUVJYWlBQlFRaHFFTUlESUFCQkRHb2dBVUVNYWhEQ0F5QUFRUkJxSUFGQkVHb1FxUUVnQUVFVWFpQUJRUlJxRUtrQkl3QkJFR3NpQ1NRQUlBbEJDR29pQ2lBQVFSeHFJZ2NRK1FZZ0J5QUJRUnhxSWdjUWxnb2dCeUFLRUpZS0lBb1FaQ0FKUVJCcUpBQWdBRUVnYWlBQlFTQnFFS2tCSUFCQkpHb2dBVUVrYWhDcEFTQUFRU2hxSUFGQktHb1FxUUVnQUVFc2FpQUJRU3hxRUtrQklBQkJNR29nQVVFd2FoQ3BBU0FBUVRScUlBRkJOR29RcVFFZ0FFRTRhaUFCUVRocUVLa0JJQUJCUEdvZ0FVRThhaENwQVNBQVFVQnJJQUZCUUdzUXFRRWdBRUhFQUdvZ0FVSEVBR29RcVFFZ0FFSElBR29nQWlnQ0NFSElBR29Rd2dNZ0FFSE1BR29nQWlnQ0NFSE1BR29Rd2dNZ0FrRVFhaVFBSUFOQkVHb2tBQ0FGUVJCcUpBQWdCRUVNYWlFQUlBZ29BZ2hCREdvaEFTTUFRU0JySWdVa0FDQUJRU0JxSWc0UWV5RUNBbjhnQVNnQ0NDSURSUVJBUVg4aEQwRi9JUWxCZnd3QkN5QURJQUpySVFrZ0FTZ0NEQ0FDYXlFUElBRW9BaEFnQW1zTElSZ0NmeUFCS0FJVUlnTkZCRUJCZnlFS1FYOGhFRUYvREFFTElBTWdBbXNoQ2lBQktBSVlJQUpySVJBZ0FTZ0NIQ0FDYXdzaEdTQUJLQUlzSVJFZ0FFRWdhaUlTRUhzaEEwRi9JUWRCZnlFVFFYOGhGQ0FBS0FJSUlnUUVRQ0FBS0FJTUlBTnJJUk1nQUNnQ0VDQURheUVVSUFRZ0Eyc2hCd3RCZnlFTVFYOGhGVUYvSVJZZ0FDZ0NGQ0lFQkVBZ0FDZ0NHQ0FEYXlFVklBQW9BaHdnQTJzaEZpQUVJQU5ySVF3TElCRWdBbXNoR2lBQUtBSXNJUmNnQUVFd2FpQUJRVEJxRUtrQklCSVErZ0loQWlBT0VQb0NJUVFqQUVFUWF5SU5JQUlvQWdnMkFnZ2dEU0FDS1FJQU53TUFJQUlnQkNnQ0NEWUNDQ0FDSUFRcEFnQTNBZ0FnQkNBTktBSUlOZ0lJSUFRZ0RTa0RBRGNDQUNBU0VIc2hBZ0pBSUFsQmYwY0VRQ0FBSUFJZ0NXb2dBaUFQYWlBQ0lCaHFFTUVFREFFTElBQkJBRUVBUVFBUXdRUUxJQnBCZnlBUkd5RUVBa0FnQ2tGL1J3UkFJQUFnQWlBS2FpQUNJQmxxRUprR0lBQWdFQkNQQnd3QkN5QUFRUUJCQUJDWkJnc2dBQ0FDSUFScVFRQWdCRUYvUnhzMkFpd2dEaEI3SVFJQ1FDQUhRWDlIQkVBZ0FTQUNJQWRxSUFJZ0Uyb2dBaUFVYWhEQkJBd0JDeUFCUVFCQkFFRUFFTUVFQ3dKQUlBeEJmMGNFUUNBQklBSWdER29nQWlBV2FoQ1pCaUFCSUJVUWp3Y01BUXNnQVVFQVFRQVFtUVlMSUFFZ0FpQVhJQU5yUVg4Z0Z4c2lBMnBCQUNBRFFYOUhHellDTENBRlFSaHFJZ0lnQVJDT0J5QUZRUWhxSWdNZ0FCQ09CeUFGUVJCcUlnUWdBU0FERUxFTUlBUVFaQ0FERUdRZ0JTQUFJQUlRc1F3Z0JSQmtJQUlRWkNBRlFTQnFKQUFnQ0VFUWFpUUFJQXRCRUdva0FDQUdFRkVMSUFaQmtBRnFFQThhSUFaQm9BRnFKQUFMWHdFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2lBQkRxQVNFQklBQWdBU0FBRU9vQklBQVEyUVZCTkd4cUlBQVE2Z0VnQWlnQ0NFRTBiR29nQUJEcUFTQUFFTGNHUVRSc2FoQzJCaUFDUVJCcUpBQUxqQUVCQTM4akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFJb0Fnd2lBQ2dDQUFSQUl3QkJFR3NpQVNRQUlBRWdBRFlDRENBQklBRW9BZ3dpQXhDM0JqWUNDQ0FERUtZWUlBTWdBU2dDQ0JDaUdDQURFSzhESUFGQkVHb2tBQ0FBRUxjQklBQW9BZ0FnQUJEWkJSREZHQ0FBRUxjQlFRQTJBZ0FnQUVFQU5nSUVJQUJCQURZQ0FBc2dBa0VRYWlRQUN4MEJBWDhqQUVFUWF5SUNJQUEyQWd3Z0FpQUJOZ0lJSUFJb0Fnd2FDNzBCQVFSL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dnQWlBQ0tBSU1JZ1FvQWdRMkFnUURRQ0FDS0FJSUlBSW9BZ1JIQkVBZ0JCQzNBU0VCSUFJZ0FpZ0NCRUUwYXlJQU5nSUVJQUFRZ3dFaEF5TUFRUkJySWdBa0FDQUFJQUUyQWd3Z0FDQUROZ0lJSUFBb0Fnd2hBeUFBS0FJSUlRVWpBRUVRYXlJQkpBQWdBU0FETmdJTUlBRWdCVFlDQ0NBQktBSUlFSWNGSUFGQkVHb2tBQ0FBUVJCcUpBQU1BUXNMSUFRZ0FpZ0NDRFlDQkNBQ1FSQnFKQUFMS2dFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQ0lBSUFBb0FnQVFwUmdnQVVFUWFpUUFDNDhEQVFOL0l3QkJJR3NpQkNRQUlBUWdBRFlDSENBRUlBRTJBaGdnQkNBQ05nSVVJQVFnQXpZQ0VDQUVLQUljSWdJaEFTQUVLQUlRSVFNakFFRVFheUlBSUFRMkFnd2dBQ0FCTmdJSUlBQWdBellDQkNBQUtBSU1JZ0VnQUNnQ0NEWUNBQ0FCSUFBb0FnZ29BZ1EyQWdRZ0FTQUFLQUlJS0FJRUlBQW9BZ1JCTkd4cU5nSUlJQUlRdHdFaEFTQUVLQUlZSVFJZ0JDZ0NGQ0VESXdCQkVHc2lBQ1FBSUFBZ0FUWUNEQ0FBSUFJMkFnZ2dBQ0FETmdJRUlBQWdCRUVFYWpZQ0FBTkFJQUFvQWdnZ0FDZ0NCRWNFUUNBQUtBSU1JUUlnQUNnQ0FDZ0NBQkNEQVNFRElBQW9BZ2doQlNNQVFSQnJJZ0VrQUNBQklBSTJBZ3dnQVNBRE5nSUlJQUVnQlRZQ0JDQUJLQUlNSVFNZ0FTZ0NDQ0VGSUFFb0FnUWhCaU1BUVJCcklnSWtBQ0FDSUFNMkFnd2dBaUFGTmdJSUlBSWdCallDQkNBQ0tBSUlJQUlvQWdRUXhRY2FJQUpCRUdva0FDQUJRUkJxSkFBZ0FDQUFLQUlJUVRScU5nSUlJQUFvQWdBaUFTQUJLQUlBUVRScU5nSUFEQUVMQ3lBQVFSQnFKQUFnQkJETkRpQUVRU0JxSkFBTGZBRUJmeU1BUVJCcklnSWtBQ0FDSUFBMkFnZ2dBaUFCTmdJRUlBSWdBaWdDQ0NJQU5nSU1JQUFnQWlnQ0JDZ0NBRFlDQUNBQUlBSW9BZ1FvQWdRMkFnUWdBQ2dDQkFSQUlBQW9BZ1FoQVNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNnQ0RCQzBCaUFBUVJCcUpBQUxJQUlvQWd3YUlBSkJFR29rQUFzSEFDQUFLQUlnQzFRQkFYOGpBRUVnYXlJREpBQWdBeUFBTmdJY0lBTWdBVFlDR0NBRElBSTZBQmNnQXlnQ0hDSUFJQU5CRUdvZ0EwRUlhaERwQ2hvZ0FDQURLQUlZSUFNc0FCY1FpUVlnQUJDdkF5QURRU0JxSkFBZ0FBc1hBUUYvSXdCQkVHc2lBaUFBTmdJTUlBSWdBVFlDQ0FzdkFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQ0FDS0FJSUVLc1lJQUpCRUdva0FBc05BQ0FBUWYvLy8vOEJFTDRTQzBVQkFYOGpBRUVRYXlJREpBQWdBeUFBTmdJTUlBTWdBVFlDQ0NBRElBSTJBZ1FnQXlnQ0RDSUFJQU1vQWdnUXpBNGdBRUVFYWlBREtBSUVFSkFESUFOQkVHb2tBQXRrQVFGL0l3QkJFR3NpQXlRQUlBTWdBRFlDRENBRElBRTJBZ2dnQXlBQ05nSUVJQU1vQWdnaEFTQURLQUlFSVFJakFFRVFheUlBSUFNb0FndzJBZ3dnQUNBQk5nSUlJQUFnQWpZQ0JDQUFLQUlJSUFBb0FnUXBBZ0EzQWdBZ0EwRVFhaVFBQ3hjQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUVBRUFDellCQVg4akFFRVFheUlCSkFBZ0FTQUFOZ0lNSXdCQkVHc2lBQ0FCS0FJTU5nSU1JQUFvQWd4QkJHb2hBQ0FCUVJCcUpBQWdBQXRoQVFKL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQ0lBRTJBZ2dnQWlnQ0RDRUJJQUlvQWdnaEF5TUFRUkJySWdBa0FDQUFJQUUyQWd3Z0FDQUROZ0lJSUFBb0FneEJDR29nQUNnQ0NDd0FBQkRlQkNBQVFSQnFKQUFnQWtFUWFpUUFDMmtCQW44akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFJZ0FUWUNDQ0FDS0FJTUlRRWdBaWdDQ0NFREl3QkJFR3NpQUNRQUlBQWdBVFlDRENBQUlBTTJBZ2dnQUNnQ0RDSUJRUWhxSUFBb0FnZ29BZ0FRSVJvZ0FFRVFhaVFBSUFFaEFDQUNRUkJxSkFBZ0FBdDFBUUovSXdCQkVHc2lBeVFBSUFNZ0FEWUNEQ0FESUFFMkFnZ2dBeUFDTmdJRUlBTW9BZ3doQVNBREtBSUlJUUlnQXlnQ0JDRUVJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFJQUkyQWdnZ0FDQUVOZ0lFSUFBb0FnZ2dBQ2dDQkVFRGRFRUVFT3NLSUFCQkVHb2tBQ0FEUVJCcUpBQUxXQUVDZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDSUFFT29CSVFJZ0FDQUNJQUFRNmdFZ0FCREtCMEVEZEdvZ0FCRHFBU0FBRU1zSFFRTjBhaUFBRU9vQklBQVF5Z2RCQTNScUVMWUdJQUZCRUdva0FBdmRBUUVHZnlNQVFSQnJJZ0lrQUNBQ0lBQTJBZ2dnQWlBQ0tBSUlJZ0UyQWd3Z0FSQzFHQ0FCS0FJQUJFQWpBRUVRYXlJRUpBQWdCQ0FCTmdJTUlBUW9BZ3dpQUNFRElBQW9BZ0FoQlNNQVFSQnJJZ0FrQUNBQUlBTTJBZ3dnQUNBRk5nSUlJQUFnQUNnQ0RDSURLQUlFTmdJRUEwQWdBQ2dDQ0NBQUtBSUVSd1JBSUFNUXR3RWhCU0FBSUFBb0FnUkJDR3NpQmpZQ0JDQUZJQVlRZ3dFUXJCZ01BUXNMSUFNZ0FDZ0NDRFlDQkNBQVFSQnFKQUFnQkVFUWFpUUFJQUVRdHdFZ0FTZ0NBQ0FCRU1vSEVMUVlDeUFDS0FJTUdpQUNRUkJxSkFBTHpnc0JDbjhqQUVFUWF5SUlKQUFnQ0NBQU5nSU1JQWdnQVRZQ0NBSkFJQWdvQWd3aUFTZ0NCQ0FCRUxjQktBSUFTUVJBSUFnb0FnZ2hBaU1BUVNCcklnQWtBQ0FBSUFFMkFod2dBQ0FDTmdJWUlBQW9BaHdpQXlFQ0l3QkJFR3NpQVNBQVFRaHFJZ1EyQWd3Z0FTQUNOZ0lJSUFGQkFUWUNCQ0FCS0FJTUlnSWdBU2dDQ0RZQ0FDQUNJQUVvQWdnb0FnUTJBZ1FnQWlBQktBSUlLQUlFSUFFb0FnUkJBM1JxTmdJSUlBTVF0d0VnQUNnQ0RCQ0RBU0FBS0FJWUVLOFlJQUFnQUNnQ0RFRUlhallDRENBRUVNME9EQUVMSUFnb0FnZ2hBaU1BUVNCcklnQWtBQ0FBSUFFMkFod2dBQ0FDTmdJWUlBQWdBQ2dDSENJRkVMY0JOZ0lVSUFVUXl3ZEJBV29oQWlNQVFTQnJJZ0VrQUNBQklBVTJBaGdnQVNBQ05nSVVJQUVvQWhnaEF5TUFRUkJySWdJa0FDQUNJQU0yQWd3Z0FpQUNLQUlNRUxjQkVLMFlOZ0lJSUFKQi8vLy8vd2MyQWdRZ0FrRUlhaUFDUVFScUVJZ0ZLQUlBSVFRZ0FrRVFhaVFBSUFFZ0JEWUNFQ0FCS0FJVUlBRW9BaEJMQkVBZ0F4RHNDZ0FMSUFFZ0F4REtCellDREFKQUlBRW9BZ3dnQVNnQ0VFRUJkazhFUUNBQklBRW9BaEEyQWh3TUFRc2dBU0FCS0FJTVFRRjBOZ0lJSUFFZ0FVRUlhaUFCUVJScUVJa0ZLQUlBTmdJY0N5QUJLQUljSVFJZ0FVRWdhaVFBSUFVUXl3Y2hBeUFBS0FJVUlRUWpBRUVnYXlJQkpBQWdBU0FBTmdJWUlBRWdBallDRkNBQklBTTJBaEFnQVNBRU5nSU1JQUVnQVNnQ0dDSUNOZ0ljSUFGQkFEWUNDQ0FDUVF4cUlBRkJDR29nQVNnQ0RCQ3VHQ0FDQW44Z0FTZ0NGQVJBSUFJUXlBY2hBeUFCS0FJVUlRWWpBRUVRYXlJRUpBQWdCQ0FETmdJTUlBUWdCallDQ0NBRUtBSU1JUVlnQkNnQ0NDRUhJd0JCRUdzaUF5UUFJQU1nQmpZQ0RDQURJQWMyQWdnZ0F5Z0NDQ0FES0FJTUVLMFlTd1JBRVBzQkFBc2dBeWdDQ0VFRGRFRUVFTk1JSVFZZ0EwRVFhaVFBSUFZaEF5QUVRUkJxSkFBZ0F3d0JDMEVBQ3pZQ0FDQUNJQUlvQWdBZ0FTZ0NFRUVEZEdvaUF6WUNDQ0FDSUFNMkFnUWdBaWdDQUNBQktBSVVRUU4wYWlFRElBSVF4d2NnQXpZQ0FDQUJLQUljR2lBQlFTQnFKQUFnQUNnQ0ZDQUFLQUlJRUlNQklBQW9BaGdRcnhnZ0FDQUFLQUlJUVFocU5nSUlJd0JCRUdzaUFpUUFJQUlnQlRZQ0RDQUNJQUEyQWdnZ0FpZ0NEQ0lERUxVWUlBTVF0d0VoQkNBREtBSUFJUVVnQXlnQ0JDRUdJQUlvQWdoQkJHb2hCeU1BUVNCcklnRWtBQ0FCSUFRMkFod2dBU0FGTmdJWUlBRWdCallDRkNBQklBYzJBaEFnQVNBQktBSVVJQUVvQWhoclFRTjFOZ0lNSUFFb0FoQWlCQ0FFS0FJQVFRQWdBU2dDREd0QkEzUnFOZ0lBSUFFb0FneEJBRW9FUUNBQktBSVFLQUlBSUFFb0FoZ2dBU2dDREVFRGRCQjlHZ3NnQVVFZ2FpUUFJQU1nQWlnQ0NFRUVhaERDQXlBRFFRUnFJQUlvQWdoQkNHb1F3Z01nQXhDM0FTQUNLQUlJRU1jSEVNSURJQUlvQWdnZ0FpZ0NDQ2dDQkRZQ0FDQURFTXNISVFFakFFRVFheUlFSkFBZ0JDQUROZ0lNSUFRZ0FUWUNDQ0FFS0FJTUlnRVE2Z0VoQlNBQklBVWdBUkRxQVNBQkVNb0hRUU4wYWlBQkVPb0JJQUVReWdkQkEzUnFJQUVRNmdFZ0JDZ0NDRUVEZEdvUXRnWWdCRUVRYWlRQUlBTVFyd01nQWtFUWFpUUFJd0JCRUdzaUFTUUFJQUVnQURZQ0NDQUJJQUVvQWdnaUFqWUNEQ01BUVJCcklnWWtBQ0FHSUFJMkFnd2dCaWdDRENJRElRUWdBeWdDQkNFRkl3QkJFR3NpQXlRQUlBTWdCRFlDRENBRElBVTJBZ2dnQXlnQ0RDRUZJQU1vQWdnaEJ5TUFRUkJySWdRa0FDQUVJQVUyQWdRZ0JDQUhOZ0lBSUFRb0FnUWhCUU5BSUFRb0FnQWdCU2dDQ0VjRVFDQUZFTWdISVFjZ0JTQUZLQUlJUVFocklnazJBZ2dnQnlBSkVJTUJFS3dZREFFTEN5QUVRUkJxSkFBZ0EwRVFhaVFBSUFaQkVHb2tBQ0FDS0FJQUJFQWdBaERJQnlFTElBSW9BZ0FoQ2lNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQXlnQ0RDSUNFTWNIS0FJQUlBSW9BZ0JyUVFOMUlRSWdBMEVRYWlRQUlBc2dDaUFDRUxRWUN5QUJLQUlNR2lBQlFSQnFKQUFMSUFCQklHb2tBQ0FJUVJCcUpBQUxkUUVCZnlNQVFSQnJJZ1FrQUNBRUlBRTJBZ3dnQkNBQ05nSUlJQVFnQXpZQ0JDQUVLQUlJSUFRb0Fnd2lBUkM0QVVzRVFFSFN4Z0VRc0JnQUN5QUJFSklDSUFRb0FnaHFJUUlnQkNBQkVMZ0JJQVFvQWdock5nSUFJQUFnQWlBRVFRUnFJQVFRaUFVb0FnQVF4eGdnQkVFUWFpUUFDeU1CQVg4akFFRVFheUlCSkFBZ0FTQUFOZ0lFSUFFb0FnUVF5QmdnQVVFUWFpUUFDeFlCQVg4akFFRVFheUlCSUFBMkFnUWdBU2dDQkJvTEpBRUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBU2dDREJES0Rob2dBVUVRYWlRQUN6TUJBWDhqQUVFUWF5SUJKQUFnQVNBQU5nSU1JQUVvQWd3aUFFSEU0aEkyQWdBZ0FFRU1haEM3R0NBQlFSQnFKQUFnQUFzeEFRRi9Jd0JCRUdzaUFpQUFOZ0lNSUFJZ0FUWUNDQ0FDS0FJTUlnQkIwT0lQTmdJQUlBQWdBaWdDQ0RZQ0JDQUFDeFFBSUFCQmlQa1BOZ0lBSUFCQkRHb1FYaUFBQ3cwQUlBQWdBU0FDUVRBUXZBd0xLd0VCZnlNQVFSQnJJZ0lrQUNBQ0lBQTJBZ3dnQWlBQk5nSUlJQUlvQWd3UWd3RWFJQUpCRUdva0FBdEJBUUovSXdCQkVHc2lBU0FBTmdJTUlBRW9BZ3doQUNBQlFYODJBZ2dnQUNBQktBSUlJZ0lnQUNnQ0FDSUFhallDQUNBQklBQWdBbW8yQWdRZ0FTZ0NCQXZWQVFBZ0FCQzVCaUlBUWVqNER6WUNCQ0FBUWJqNUR6WUNBQ0FBSUFFMkFnZ2dBRUdJK1E4MkFnQWdBRUVNYWlBQ0VPa0dJQUFnQkRvQUtTQUFJQU02QUNnZ0FFRUlhaEQ1QWtHU3NhajZCMnBCazZRR2N5SUJRUUoyUVpiNHFmb0hjeUFBTFFBb2FpQUJjeUlCUVFKMlFaYjRxZm9IY3lBQUxRQXBhaUFCY3lFQklBQW9BaHdpQWlBQUtBSWdRUUowYWlFRElBQURmeUFDSUFOR0JIOGdBUVVnQWlnQ0FDSUVJQVFvQWdBb0Fod1JBQUFnQVVFQ2RrR1crS242QjNOcUlBRnpJUUVnQWtFRWFpRUNEQUVMQ3pZQ0xDQUFDeGdCQVg4akFFRVFheUlCSUFBMkFnd2dBU2dDREVFSVN3c3ZBUUYvSXdCQkVHc2lBeUFBTmdJTUlBTWdBVFlDQ0NBRElBSTJBZ1FnQXlnQ0NDZ0NBQ0FES0FJRUtBSUFTUXNOQUNBQUlBRWdBa0UwRUx3TUMwRUJBWDhqQUVFUWF5SUNKQUFnQWlBQU5nSU1JQUlnQVRZQ0NDQUNLQUlNSWdBZ0FpZ0NDQkRDQXlBQVFRUnFJQUlvQWdoQkJHb1F3Z01nQWtFUWFpUUFDemNCQVg4akFFRVFheUlESUFBMkFnd2dBeUFCTmdJSUlBTWdBallDQkNBREtBSU1JZ0FnQXlnQ0NEWUNBQ0FBSUFNb0FnUTJBZ1FMSkFFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQkNEQVJvZ0FVRVFhaVFBQzBvQkFYOGpBRUVRYXlJQ0lBQTJBZ3dnQWlBQk5nSUlJQUlvQWd3aUFDQUNLQUlJS0FJQU5nSUFJQUFnQWlnQ0NDZ0NCRFlDQkNBQ0tBSUlRUUEyQWdBZ0FpZ0NDRUVBTmdJRUN5MEJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUFnQWlnQ0RDSUFFSHNnQUJBN0VNY1lJQUpCRUdva0FBc0xBQ0FBUWFlTURCRENFZ3VKQXdFQmZ5TUFRUkJySWdNa0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQWc0VEVnQUJBZ01FQlFZSENBa0tDd3dORGc4UUVSTUxJQUZCQ0dwQjlwb0pFQTRhREJJTElBRkJDR3BCaFFnUURob01FUXNnQVVFSWFrR3p2UVVRRGhvTUVBc2dBVUVJYWtIMW1na1FEaG9NRHdzZ0FVRUlha0dFQ0JBT0dnd09DeUFCUVFocVFhTG1CaEFPR2d3TkN5QUJRUWhxUWFqbUJoQU9HZ3dNQ3lBQlFRaHFRZHJwQmhBT0dnd0xDeUFCUVFocVFZdm1CaEFPR2d3S0N5QUJRUWhxUWFYbUJoQU9HZ3dKQ3lBQlFRaHFRWmZtQmhBT0dnd0lDeUFCUVFocVFhL29CaEFPR2d3SEN5QUJRUWhxUWYva0JoQU9HZ3dHQ3lBQlFRaHFRZHVZQ0JBT0dnd0ZDeUFCUVFocVFjeVlDQkFPR2d3RUN5QUJRUWhxUWQyWUNCQU9HZ3dEQ3lBQlFRaHFRZG1TQnhBT0dnd0NDeUFCUVFocVFaK2RDUkFPR2d3QkN5QURRUjAyQWd3Z0EwSG9pQVEyQWdnZ0F5QURLUU1JTndNQUlBQkI5QUpxUVE4Z0F4Q3BCd3NnQTBFUWFpUUFDeDhBSUFBb0FvUURJZ0JCQWlBQUtBSUFJZ0FnQUVFQ1RSdEJBbXMyQWdBTEZRQWdBQ2dDaEFNaUFDQUFLQUlBUVFKcU5nSUFDemtCQVg4Z0FTZ0NBQ0lDS0FJQUlnRWdBaWdDQkVFQ2RHb2hBZ05BSUFFZ0FrY0VRQ0FBSUFFb0FnQVF6dzRnQVVFRWFpRUJEQUVMQ3dzTkFDQUFRY2VMQkVFVUVNRVNDM0lCQVg0Z0FFVUVRRUVBRHdzQ2YwRUFJQUFvQWdRaUFDa0RFRUtCb0lDZ2dJQ0lnTkFBZ3lJQklBRkNBWDJEVUEwQUdrRUJJQUFRbFJBTkFCb0NmMEVBSUFBcEF4QkNnSUNBb0lDQWlJRFFBSU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFRYmp1RHhCSURRQWFJQUFRb2gwTEN3dDNBUVIvSUFBZ0FTQUNLQUlrRUpJQklBRkJDR29pQkVHWi93Z1FEaG9nQWlnQ1NDSURJQUlvQWt4QkFuUnFJUVZCQVNFQ0EwQWdBeUFGUndSQUlBTW9BZ0FoQmlBQ1FRRnhSUVJBSUFSQjlPME1FQTRhQ3lBQUlBRWdCaENTQVNBRFFRUnFJUU5CQUNFQ0RBRUxDeUFFUWUvMkNCQU9HZ3NOQUNBQVFibUpCRUVYRU1FU0N3c0FJQUJCdVpRTUVNSVNDMVVCQVg4akFFRVFheUlDSkFBZ0FFRUlha0hNK1FnUURob2dBQ0FCS0FJQUVLWWJRUWhxSWdCQjlPME1FQTRhSUFJZ0FTZ0NCQkQvR1NBQUlBSVFFaG9nQUVIdjlnZ1FEaG9nQWhBUEdpQUNRUkJxSkFBTFNnRURmeU1BUWFBQmF5SUNKQUFnQWtFSWFpSURJQUFRakFFZ0FrRVFhaUlFUWN6R0NSQU9HaUFBSUFNZ0FTZ0NKQkNTQVNBRVFmcnBCaEFPR2lBREVKQUJJQUpCb0FGcUpBQUwxd01CQTM4akFFRWdheUlESkFBZ0F5QUNOZ0ljSUFJb0Fqd0VRQ0FEUVFBNkFCUWdBeUFDUVRocU5nSVFJQUFnQVNBRFFSQnFFUHNDSUFGQkNHcEI5L0FNRUE0YUN5QURJQUEyQWdBZ0F5QURRUnhxTmdJRUFrQWdBaWdDQkNJRVFkajRFVVlFUUNBQlFRaHFJZ1JCblA4QkVBNGFJQUlvQWtSRkJFQWdBaWdDU0VVTkFnc2dCRUhhNlFZUURob2dBQ0FCSUFJb0FrUVFrZ0VnQWlnQ1NBUkFJQVJCOU8wTUVBNGFJQUFnQVNBQ0tBSklFSklCQ3lBRVFZdm1CaEFPR2d3QkN5QUVRZUQ1RDBZRVFDQUJRUWhxUVovcEFCQU9HZ3dCQ3lBRVFlajVFVVlFUUNBQlFRaHFRY1RTQkJBT0dnd0JDeUFFUWFENUVVWUVRQ0FCUVFocVFZSXVFQTRhREFFTEl3QkJvQUZySWdJa0FDQUNRZTZwQlVINEFrRVBJQU1vQWdCQjlBSnFFQmNpQkVFWWFrR2F2QW9RRGhvZ0JDQURLQUlFS0FJQUtBSUVRUVJxRUpvQkdpQUVFQmdnQWtHZ0FXb2tBQXNnQVVFSWFpSUNRZmZ3REJBT0dpQURJQU1vQWh3b0FpUkJKR29RVXlBQ0lBTVFFaG9nQXhBUEdpQURLQUljSWdRb0FpZ2lCUVIvSUFKQjdMVU1FQTRhSUFBZ0FTQUZFSklCSUFNb0Fod0ZJQVFMS0FJc0JFQWdBa0dlM1FzUURob2dBQ0FCSUFNb0Fod29BaXdRa2dFTElBSkIrdWtHRUE0YUlBTkJJR29rQUFzOEFRRi9Jd0JCb0FGcklnRWtBQ0FCUWU2cEJVSE1BRUVQSUFBb0FnQkI5QUpxRUJjaUFFRVlha0h1dndzUURob2dBQkFZSUFGQm9BRnFKQUFMUmdBQ2YwRUNJQUJFQUFBQUFBQUFBQUJoRFFBYUlBQWdBR0lFUUVFQUR3dEJBU0FBbVNJQVJBQUFBQUFBQVBCL1lRMEFHa0VEUVFRZ0FFUUFBQUFBQUFBUUFHTWJDd3M2QUFKL1FRSWdBRU1BQUFBQVd3MEFHaUFBSUFCY0JFQkJBQThMUVFFZ0FJc2lBRU1BQUlCL1d3MEFHa0VEUVFRZ0FFTUFBSUFBWFJzTEN4a0FJQUJCZ0lDQWdBRlBCRUFRK3dFQUN5QUFRUVIwRUJVTEhnQWdBQ2dDQUNJQVFRSWdBQ2dDQUNJQUlBQkJBazBiUVFKck5nSUFDeDRBSUFBZ0FTZ0NoQU1pQVRZQ0FDQUJJQUVvQWdCQkFtbzJBZ0FnQUFzUkFDQUFLQUlBUVFocVFlLzJDQkFPR2dzWEFDQUFJQUUyQWdBZ0FVRUlha0daL3dnUURob2dBQXNkQUNBQUlBRkI4UC8vL3dkQkEwSC8vLy8vQUVHQWdJQ0FBUkRZQ1FzUUFDQUFRUUU2QUFjZ0FFRUJPZ0FDQ3hBQUlBQkJBVG9BQmlBQVFRRTZBQUlMbWdFQUlBQWdBQzBBQUNBQkxRQUFja0VBUnpvQUFDQUFJQUF0QUFFZ0FTMEFBWEpCQUVjNkFBRWdBQ0FBTFFBQ0lBRXRBQUp5UVFCSE9nQUNJQUFnQUMwQUF5QUJMUUFEY2tFQVJ6b0FBeUFBSUFBdEFBUWdBUzBBQkhKQkFFYzZBQVFnQUNBQUxRQUZJQUV0QUFWeVFRQkhPZ0FGSUFBZ0FDMEFCaUFCTFFBR2NrRUFSem9BQmlBQUlBQXRBQWNnQVMwQUIzSkJBRWM2QUFjTFB3RUJmd0pBSUFBUTVSaEZEUUFnQUMwQUFBUkFRUUVQQ3lBQUxRQUNSUTBBUVFFaEFTQUFMUUFERFFBZ0FDMEFCaUFBTFFBSGNrRUFSeUVCQ3lBQkM1c0JBUWgvSUFBdEFBQWhBZ0pBSUFBdEFBRUVRQ0FDUlEwQkN5QUFMUUFDSWdFZ0FDMEFCU0lGSUFBdEFBUWlCaUFBTFFBR0lnY2dBQzBBQnlJSWNpSURJQUF0QUFNaUJISnlja1Z5UlFSQVFRQVBDd0pBSUFGRkRRQkJBQ0VCSUFSRklnQWdCa0VBUjNFZ0JVRUFSeUFBY1hJTkFTQUVCRUFnQTBVTkFRd0NDeUFEUlNBQ1JYSkZEUUVnQjBVTkFDQUlEUUVMUVFFaEFRc2dBUXUzQVFFQmZ5QUJRUWhxSWdKQnAva0lFQTRhSUFBdEFBQUVRQ0FDUVpmM0NCQU9HaUFBTFFBQkJFQWdBa0dVd3dJUURob0xJQUpCN3ZZSUVBNGFDeUFBTFFBQ0JFQWdBa0dZK1FnUURob2dBQzBBQXdSQUlBSkJwZmdFRUE0YUN5QUFMUUFFQkVBZ0FrSERvZ0VRRGhvTElBQXRBQVVFUUNBQ1FZZWlBeEFPR2dzZ0FDMEFCZ1JBSUFKQitQOEVFQTRhQ3lBQUxRQUhCRUFnQWtHdDNnTVFEaG9MSUFKQjd2WUlFQTRhQ3lBQ1FlLzJDQkFPR2lBQkN3NEFJQUFnQVNrQUFEY0FBQ0FBQ3drQUlBQkNBRGNBQUF1dkFRRUVmeU1BUVJCcklnTWtBQ01BUVNCcklnUWtBQ01BUVNCcklnSWtBQ0FDUVFocUlnVWdBUkQxRUNBQ0lBSW9BZ3dnQWkwQUV5SUJJQUZCR0hSQkdIVkJBRWdpQVJzMkFod2dBaUFDS0FJSUlBVWdBUnMyQWhnZ0FpQUNLUU1ZTndNQUlBUWdBQ0FDRU9FQklBVVFEeG9nQWtFZ2FpUUFJQUFnQUVIWUFtb2dCQkRPQWlFQklBUkJJR29rQUNBRElBRTJBZ3dnQUNBQlFSQnFJQU5CREdvUXN3TWhBQ0FEUVJCcUpBQWdBQXN2QVFGL0l3QkJFR3NpQXlRQUlBTWdBallDRENBQ0JFQWdBQ0FCSUFOQkRHb1F6QTgyQWdRTElBTkJFR29rQUF1YkFRRURmeUFCSUFBb0FvZ0NTd1JBSUFBb0FvQUNJUVJCRUNFQ0lBQWhBeUFCUVJCUEJFQkJmeUFCUVFSMElBRkIvLy8vL3dCTEd4QVZJUU1nQVNFQ0N5QUFJQU0yQW9BQ0lBQWdBallDaUFKQkFDRUJBMEFnQUNnQ2hBSWdBVTBFUUNBQUlBUVFOZ1VnQVVFRWRDSUNJQUFvQW9BQ2FpSURJQUlnQkdvaUFpa0NBRGNDQUNBRElBSXBBZ2czQWdnZ0FVRUJhaUVCREFFTEN3c0xvZ1FDQ244QmZRSkFBbjlCQWlBQlFRRkdEUUFhSUFFZ0FTQUJRUUZyY1VVTkFCb2dBUkIvQ3lJQ0lBQW9BZ1FpQVUwRVFDQUJJQUpORFFFZ0FVRURTU0VEQW44Z0FDZ0NETE1nQUNvQ0VKV05JZ3hEQUFDQVQxMGdERU1BQUFBQVlIRUVRQ0FNcVF3QkMwRUFDeUVFSUFFZ0FpQURJQUZwUVFGTGNnUi9JQVFRZndVZ0JFRUJRU0FnQkVFQmEyZHJkQ0FFUVFKSkd3c2lBU0FCSUFKSkd5SUNUUTBCQ3lBQUlRTkJBQ0VBQWtBZ0FnUkFJQU1nQWhDWEF4QnNJQU1nQWpZQ0JBTkFJQUFnQWtZRVFDQURLQUlJSWdSRkRRTWdBMEVJYWlFQUlBUW9BZ1FoQlFKQUlBSnBJZ0ZCQVUwRVFDQUZJQUpCQVd0eElRVU1BUXNnQWlBRlN3MEFJQVVnQW5BaEJRc2dBeWdDQUNBRlFRSjBhaUFBTmdJQUlBSkJBV3NoQ0NBQlFRRkxJUWtEUUNBRUtBSUFJZ0ZGRFFRZ0FTZ0NCQ0VBQWtBZ0NVVUVRQ0FBSUFoeElRQU1BUXNnQUNBQ1NRMEFJQUFnQW5BaEFBc2dBQ0FGUndSQUlBQkJBblFpQnlBREtBSUFhaUlHS0FJQUJFQWdBVUVJYWlFS0lBRWhBQU5BQWtBZ0FDSUdLQUlBSWdCRkJFQkJBQ0VBREFFTElBb2dBRUVJYWhDMkFpRUxJQVlvQWdBaEFDQUxEUUVMQ3lBRUlBQTJBZ0FnQmlBREtBSUFJQWRxS0FJQUtBSUFOZ0lBSUFNb0FnQWdCMm9vQWdBZ0FUWUNBQXdDQ3lBR0lBUTJBZ0FnQUNFRkN5QUJJUVFNQUFzQUJTQURLQUlBSUFCQkFuUnFRUUEyQWdBZ0FFRUJhaUVBREFFTEFBc0FDeUFEUVFBUWJDQURRUUEyQWdRTEN3dm1BUUVCZnlNQVFVQnFJZ0FrQUNBQVFUQnFJQUlRVkNFSklBUXRBQUFoQkNBREtBSUFJUU1nQUVFZ2FpQUZFRlFoQWlBQUlBWkJJR28yQWhnZ0JpZ0NJQ0VGSUFBZ0IwRWdhallDRUNBQUlBVWdCa2M2QUJ3Z0FDQUhLQUlnSUFkSE9nQVVJQUFnQ0NnQ0NEWUNDQ0FBSUFncEFnQTNBd0FnQVNBSkVGUWlBU0FFT2dBUUlBRWdBellDRENBQklBSXBBZ0EzQWhRZ0FTQUNLQUlJTmdJY0lBSVFWU0FCUVNCcUlBQkJHR29RL1FvYUlBRkJ6QUJxSUFCQkVHb1EvUW9hSUFFZ0FDZ0NDRFlDZ0FFZ0FTQUFLUUlBTndKNElBSVFEeG9nQ1JBUEdpQUFRVUJySkFBTHh3VUNCMzhDZmlNQVFiQUJheUlFSkFBZ0FTZ0N4QUVpQnlBQktBTE1BU0lEUVpZQmJFR1dBV3BCNUFCdVNRUkFJd0JCUUdvaUJTUUFRUXdnQTBFQmRFRUNha0dXQVd4QjVBQnVJZ01nQTBFTVRSc2lCaUFCS0FMRUFVc0VRQ0FGUW9DQWdJQ0FBVGNDTkNBRklBVkJFR29pQXpZQ01DQURJQUVvQXN3QkVMc0pJQUVvQXNBQklnTWdBU2dDeEFGQkJIUnFJUWNEUUFKQUlBTWdCMFlFUUNBQkVPb0VJQUVnQmhEa0JDQUZLQUl3SWdNZ0JTZ0NORUVDZEdvaEJnd0JDeUFETFFBRUJFQWdCVUVRYWlBREVMNEJFSjhGQ3lBRFFSQnFJUU1NQVFzTEEwQWdBeUFHUndSQUlBVWdBU0FERU80WUlBTkJCR29oQXd3QkN3c2dCVUVRYWhBakN5QUZRVUJySkFBZ0FTZ0N4QUVoQndzZ0IwRUJheUVKSUFJb0FnQWlCU0FIY0NFR0lBRW9Bc0FCSVFoQkFDRUNBa0FEUUNBQ0lBZEhCRUFnQ0NBR1FRUjBhaUlETFFBRVJRUkFJQU5CQVRvQUJDQURJQVUyQWdBZ0NDQUdRUVIwYWlJRElBSTJBZ3dnQXlBRk5nSUlJQUVnQVNnQ3pBRkJBV28yQXN3QklBRWdBU2dDMEFGQkFXbzJBdEFCSUFCQ0FEY0NBQXdEQ3dKQUlBTW9BZ2dnQlVjTkFDQUZJQU1vQWdCSERRQWdBRUlDTndJQURBTUxJQUlnQXlnQ0RFc0VRQ0FFSUFVMkFxZ0JJQVFnQlRZQ29BRWdCQ0FDTmdLc0FTQUVRUUU2QUtRQklBUWdCQ2tEcUFFaUNqY0RDQ0FFSUFRcEE2QUJJZ3MzQXdBZ0JDQURLUUlJTndPb0FTQUVJQU1wQWdBM0E2QUJJQU1nQ3pjQ0FDQURJQW8zQWdnZ0JDQUVLQUtzQVVFQmFqWUNyQUVnQVNBR1FRRnFJQUVvQXNRQmNDQUVRYUFCYWhEckJDQUJJQUVvQXN3QlFRRnFOZ0xNQVNBQklBRW9BdEFCUVFGcU5nTFFBU0FBUWdBM0FnQU1Bd1VnQmtFQmFrRUFJQVlnQ1VjYklRWWdBa0VCYWlFQ0RBSUxBQXNMSUFSQmhyVURRZXNEUVE0Z0JFR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUd3QVdva0FBc1hBQ0FCUlFSQVFRQVBDeUFBSUFJdEFBQWdBUkNyRFF2L0JBSUlmd0o5SXdCQkVHc2lCaVFBSUFJUTlBTWhCeUFBQW44Q1FDQUJLQUlFSWdSRkRRQWdBU2dDQUFKL0lBUkJBV3NnQjNFZ0JHa2lDVUVCVFEwQUdpQUhJQVFnQjBzTkFCb2dCeUFFY0FzaUNFRUNkR29vQWdBaUJVVU5BQ0FFUVFGcklRb2dBaWdDQUNFTElBbEJBVXNoQ1FOQUlBVW9BZ0FpQlVVTkFTQUhJQVVvQWdRaUFrY0VRQUpBSUFsRkJFQWdBaUFLY1NFQ0RBRUxJQUlnQkVrTkFDQUNJQVJ3SVFJTElBSWdDRWNOQWdzZ0JTZ0NDQ0FMUncwQUMwRUFEQUVMUVJRUUZTRUNJQVlnQVVFSWFqWUNCQ0FHSUFJMkFnQWdBeWdDQUNnQ0FDRURJQUpDQURjQ0RDQUNJQU0yQWdnZ0JrRUJPZ0FJSUFKQkFEWUNBQ0FDSUFjMkFnUUNRRUVBSUFRZ0FTZ0NERUVCYXJNaURDQUJLZ0lRSWcwZ0JMT1VYaHNOQUNBQklBUWdCRUVCYTNGQkFFY2dCRUVEU1hJZ0JFRUJkSElpQWdKL0lBd2dEWldOSWd4REFBQ0FUMTBnREVNQUFBQUFZSEVFUUNBTXFRd0JDMEVBQ3lJRElBSWdBMHNiRU1NQklBRW9BZ1FpQkNBRVFRRnJjVVVFUUNBRVFRRnJJQWR4SVFnTUFRc2dCQ0FIU3dSQUlBY2hDQXdCQ3lBSElBUndJUWdMQWtBZ0NFRUNkQ0lESUFFb0FnQnFLQUlBSWdKRkJFQWdCaWdDQUNBQktBSUlOZ0lBSUFFZ0JpZ0NBRFlDQ0NBQktBSUFJQU5xSUFGQkNHbzJBZ0FnQmlnQ0FDSUNLQUlBSWdORkRRRWdBeWdDQkNFRkFrQWdCQ0FFUVFGcklnTnhSUVJBSUFNZ0JYRWhCUXdCQ3lBRUlBVkxEUUFnQlNBRWNDRUZDeUFCS0FJQUlBVkJBblJxSUFJMkFnQU1BUXNnQmlnQ0FDQUNLQUlBTmdJQUlBSWdCaWdDQURZQ0FBc2dCaWdDQUNFRklBWkJBRFlDQUNBQklBRW9BZ3hCQVdvMkFnd2dCaENMQVVFQkN6b0FCQ0FBSUFVMkFnQWdCa0VRYWlRQUN4Z0JBWDhnQUVFTWFpSUJJQUVvQWdRUTNRNGdBQkF5R2dzdkFRRi9JQUFvQWdRaEFnTkFJQUVnQWtaRkJFQWdBa0VZYXhCdEdpQUNRUnhySVFJTUFRc0xJQUFnQVRZQ0JBc3pBUUYvSUFBb0FnUWhBZ05BSUFFZ0FrWkZCRUFnQWtGQWFpSUNJQUlvQWdBb0FnQVJBQUFhREFFTEN5QUFJQUUyQWdRTERBQWdBQ0FBS0FJQUVQSVlDekFCQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUpCSUdvUXhRTWdBa0VRYWhERkF3c2dBaEFmQ3d0Z0FRRi9JQUFvQWdRaUFnUkFJQUlvQWdBZ0FSQlhRUUZCQVVIVm5naEIwS2NEUWZBQUVFc0xJQUFnQVJETkF5SUJSUVJBUVFBUEN5QUFJQUVRdkFZaEFTQUFLQUlBS0FJSUlBRVFWMEVCUVFGQm9ac0lRZENuQTBIMEFCQkxJQUVMQ1FBZ0FFRUFFUFVZQ3p3QkFuOGdBQ2dDQkNFQ0EwQWdBaUFBS0FJSUlnRkhCRUFnQUNBQlFReHJJZ0UyQWdnZ0FSQXlHZ3dCQ3dzZ0FDZ0NBQ0lBQkVBZ0FCQWZDd3VSQVFFQ2Z5QUFLQUlBSVFNZ0FDZ0NCQ0VDQTBBZ0FpQURSd1JBSUFFb0FnUkJER3NnQWtFTWF5SUNFS1VDR2lBQklBRW9BZ1JCREdzMkFnUU1BUXNMSUFBb0FnQWhBaUFBSUFFb0FnUTJBZ0FnQVNBQ05nSUVJQUFvQWdRaEFpQUFJQUVvQWdnMkFnUWdBU0FDTmdJSUlBQW9BZ2doQWlBQUlBRW9BZ3cyQWdnZ0FTQUNOZ0lNSUFFZ0FTZ0NCRFlDQUF0QUFRSi9JQUFvQWdBRVFDQUFLQUlBSVFJZ0FDZ0NCQ0VCQTBBZ0FTQUNSd1JBSUFGQmhBRnJFS01aSVFFTUFRc0xJQUFnQWpZQ0JDQUFLQUlBRUI4TEM1Y0JBUVYvSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBellDRENBRUlBTTJBZ2dqQUVFUWF5SURKQUFnQUVHTUFXb2lCUkQ5QlNFR0lBSW9BZ0FoQWlBRUtBSUlJUWNnQUNnQ0NDRUFJQU5CQURvQURDQURRZGljSURZQ0NDQUZJQVlnQUNBSElBRWdBaUFEUVFocUVQNEZJZ0FRS0NBRklBVW9BaGhCQVdvMkFoZ2dBMEVRYWlRQUlBUkJFR29rQUNBQUN4Y0FJQUJCR0dvUU1ob2dBRUVNYWhBeUdpQUFFRElhQ3drQUlBQkJBQkQrR0F0TkFRRi9JQUFvQWdBaEFpQUFJQUUyQWdBZ0FnUkFJQUlFUUNBQ0tBSUlJUUFEUUNBQUJFQWdBQ2dDQUNFQklBQkJER29RL0JnZ0FCQWZJQUVoQUF3QkN3c2dBaEMzQWdzZ0FoQWZDd3NKQUNBQVFRQVFnQmtMdUFFQkFuOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBZ1JBSUFKQjVBQnFFRThnQWtIUUFHb1FUeUFDUWNRQWFpSUFLQUlBQkVBZ0FDZ0NBQ0VESUFBb0FnUWhBUU5BSUFFZ0EwY0VRQ0FCUVFSckVJVURHaUFCUVFocklRRU1BUXNMSUFBZ0F6WUNCQ0FBS0FJQUVCOExJQUpCTUdvaUF5Z0NDQ0VBQTBBZ0FBUkFJQUFvQWdBaEFTQUFRUWhxRUlVREdpQUFFQjhnQVNFQURBRUxDeUFERUpzRElBSkJIR29RVHlBQ1FRaHFFRThMSUFJUUh3c0xDUUFnQUVFQUVJSVpDME1CQVg4Z0FDZ0NBQ0VDSUFBZ0FUWUNBQ0FDQkVBZ0FnUkFJQUpCT0dvUWh3a2dBa0VrYWhCUElBSkJHR29nQWlnQ0hCRHBEaUFDUVFScUVFOExJQUlRSHdzTENRQWdBRUVBRUlRWkN6a0JBWDhnQUNnQ0FDRUNJQUFnQVRZQ0FDQUNCRUFnQWdSQUlBSkJJR29RMVFRZ0FrRVVhaUFDS0FJWUVPb09JQUlRVHdzZ0FoQWZDd3Y1QVFFSGZ3Si9JQUpCQ0dvaEJ3SkFJQUZCd0ExcUlnUW9BZ1FpQWtVTkFDQUVLQUlBQW44Z0J5Z0NBQ0lHSUFKQkFXdHhJQUpwSWdSQkFVME5BQm9nQmlBQ0lBWkxEUUFhSUFZZ0FuQUxJZ2hCQW5ScUtBSUFJZ1ZGRFFBZ0FrRUJheUVKSUFSQkFVc2hDZ05BSUFVb0FnQWlCVVVOQVNBR0lBVW9BZ1FpQkVjRVFBSkFJQXBGQkVBZ0JDQUpjU0VFREFFTElBSWdCRXNOQUNBRUlBSndJUVFMSUFRZ0NFY05BZ3dCQ3lBRlFRaHFJQWNRdGdKRkRRQUxJQVVNQVF0QkFBc2lBa1VFUUNBQlFRQTZBSlFESUFGQnFBUnFRZWI4QWhBWkdpQUFRZHo0REJBVUdnOExJQUFnQVVISUJHb2dBaWdDSkNBREVQVUlDNzhFQWdkL0FuMGpBRUVRYXlJR0pBQWdBaWdDQUNFRklBQUNmd0pBSUFFb0FnUWlCRVVOQUNBQktBSUFBbjhnQkVFQmF5QUZjU0FFYVNJSFFRRk5EUUFhSUFVZ0JDQUZTdzBBR2lBRklBUndDeUlJUVFKMGFpZ0NBQ0lDUlEwQUlBUkJBV3NoQ1NBSFFRRkxJUW9EUUNBQ0tBSUFJZ0pGRFFFZ0JTQUNLQUlFSWdkSEJFQUNRQ0FLUlFSQUlBY2dDWEVoQnd3QkN5QUVJQWRMRFFBZ0J5QUVjQ0VIQ3lBSElBaEhEUUlMSUFJb0FnZ2dCVWNOQUF0QkFBd0JDeUFHSUFFZ0JTQURFUFFJQWtCQkFDQUVJQUVvQWd4QkFXcXpJZ3NnQVNvQ0VDSU1JQVN6bEY0YkRRQWdBU0FFSUFSQkFXdHhRUUJISUFSQkEwbHlJQVJCQVhSeUlnSUNmeUFMSUF5VmpTSUxRd0FBZ0U5ZElBdERBQUFBQUdCeEJFQWdDNmtNQVF0QkFBc2lBeUFDSUFOTEd4RERBU0FCS0FJRUlnUWdCRUVCYTNGRkJFQWdCRUVCYXlBRmNTRUlEQUVMSUFRZ0JVc0VRQ0FGSVFnTUFRc2dCU0FFY0NFSUN3SkFJQWhCQW5RaUF5QUJLQUlBYWlnQ0FDSUNSUVJBSUFZb0FnQWdBU2dDQ0RZQ0FDQUJJQVlvQWdBMkFnZ2dBU2dDQUNBRGFpQUJRUWhxTmdJQUlBWW9BZ0FpQXlnQ0FDSUNSUTBCSUFJb0FnUWhBZ0pBSUFRZ0JFRUJheUlGY1VVRVFDQUNJQVZ4SVFJTUFRc2dBaUFFU1EwQUlBSWdCSEFoQWdzZ0FTZ0NBQ0FDUVFKMGFpQUROZ0lBREFFTElBWW9BZ0FnQWlnQ0FEWUNBQ0FDSUFZb0FnQTJBZ0FMSUFZb0FnQWhBaUFHUVFBMkFnQWdBU0FCS0FJTVFRRnFOZ0lNSUFZUTF3NUJBUXM2QUFRZ0FDQUNOZ0lBSUFaQkVHb2tBQXVBQVFFQ2Z5TUFRU0JySWdNa0FBSkFBa0FnQWlnQ0FDSUVSUTBBSUFRUXBBOUZEUUFnQVNBQ0tBSUFFSWdaSVFRZ0EwRUFOZ0lZSUFOQ0FEY0RFQ0FEUWdBM0F3Z2dBQ0FFSUFGQklHb2lBQ0FEUVFocUlBUWdBQ0FFS0FJQUtBSUlFUUVBSUFKQkJHb1ExZ1FRYVJvTUFRc2dBQ0FDRUZzYUN5QURRU0JxSkFBTGp3RUJBWDhnQVVVRVFDQUFRUUE2QUpRRElBQkJxQVJxUWZmOEJCQVpHa0VBRHdzZ0FTZ0NCQ0lDUWVETEVrWWdBa0hJeXhKR2NrVWdBa0d3eXhKSGNVVUVRQ0FBUVpBRGFoRHRBdzhMSUFKQnFNd1NSZ1JBSUFCQmtBTnFJZ0FnQUJEdEF5QUJLQUlNRVA4Q0R3c2dBRUVBT2dDVUF5QUFRYWdFYWtHV3h3a1FHU0FCS0FJRVFRUnFFTEFER2tFQUM1RUJBUUYvSUFGRkJFQWdBRUVBT2dDVUF5QUFRYWdFYWtIMy9BUVFHUm9MSUFFb0FnUWlBa0hneXhKR0lBSkJ5TXNTUm5KRklBSkJzTXNTUjNGRkJFQWdBRUdRQTJvUTdBTVBDeUFCUlNBQ1Fhak1Fa2R5UlFSQUlBQkJrQU5xSWdBZ0FCRHNBeUFCS0FJTUVQOENEd3NnQUVFQU9nQ1VBeUFBUWFnRWFrR1d4d2tRR1NBQktBSUVRUVJxRUxBREdrRUFDeUVBSUFFb0FnQWlBVUVBT2dDVUF5QUJRYWdFYWtIVTFBQVFHUm9nQUJCbkdndEpBUUYvSXdCQkVHc2lBaVFBSUFCQ2dJQ0FnREEzQWhBZ0FDQUFOZ0lNSUFJZ0FVRU1hallDQ0NBQ0lBRW9BZ3dnQVVjNkFBd2dBQ0FDUVFocUVOZ1hJQUpCRUdva0FDQUFDMklCQW44akFFRVFheUlFSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlETmdJTUlBUWdBellDQ0NBQVFZd0JhaUlESUFNUXZ3RWdBQ2dDQ0NBRUtBSUlJQUVnQWlnQ0FCRCtIaUlBRUNnZ0F5QURLQUlZUVFGcU5nSVlJQVJCRUdva0FDQUFDNUlCQVFGL0l3QkJFR3NpQkNRQUlBQkJBRFlDQ0NBQVFnQTNBZ0FnQkNBQklBRkJ3QTFxSUFKQkNHb1FtaGtvQWdBZ0F4RDdEaUFFS0FJRUlRSWdCQ2dDQUNFQkEwQWdBU0FDUndSQUlBRVErZzRFUUFKQUlBQW9BZ1FnQUNnQ0NFa0VRQ0FBSUFFUW1Sa01BUXNnQUNBQkVKZ1pDeUFBS0FJRUdnc2dBVUVNYWlFQkRBRUxDeUFFRUtRQ0lBUkJFR29rQUF0UkFRSi9JQUVvQWdRaUEwSGd5eEpHQkVBZ0FFR1FBMm9RN1FNUEN3SkFJQU5CcU13U1J3MEFJQUVvQWdnb0FnUkI0TXNTUncwQUlBQkJrQU5xSWdBZ0FCRHRBeUFCS0FJTUVQOENJUUlMSUFJTGp3TUJBMzhqQUVFUWF5SUNKQUFDUUNBQUxRQ1VBMFVFUUF3QkN5QUFLQUswQlNBQkVIb1FsQUVpQTBVRVFFRUFJUU1nQUVFQU9nQ1VBeUFBUWFnRWFrSFQrQWtRR1NFQUlBSWdBUkJZSUFBZ0FoQk5HaUFDRUE4YURBRUxJQU1vQWhRaUJFRVphMEVDU1EwQUlBUkJJRWNFUUVFQUlRTWdBRUVBT2dDVUF5QUFRYWdFYWtIVCtBa1FHU0VBSUFJZ0FSQllJQUFnQWhCTkdpQUNFQThhREFFTElBQW9BclFGSUFOQkFSQTRFSlFCSWdORkJFQkJBQ0VESUFCQkFEb0FsQU1nQUVHb0JHcEJ1dlVKRUJraEFDQUNJQUVRV0NBQUlBSVFUUm9nQWhBUEdnd0JDd0pBQWtBQ1FDQURLQUlVUVJsckRnVURBd0VBQUFJTFFRQWhBeUFBUVFBNkFKUURJQUJCcUFScVFiMzJDeEFaSVFBZ0FpQUJFRmdnQUNBQ0VFMGFJQUlRRHhvTUFndEJBQ0VESUFCQkFEb0FsQU1nQUVHb0JHcEIwT1lMRUJraEFDQUNJQUVRV0NBQUlBSVFUUm9nQWhBUEdnd0JDMEVBSVFNZ0FFRUFPZ0NVQXlBQVFhZ0Vha0g2OVFzUUdTRUFJQUlnQVJCWUlBQWdBaEJOR2lBQ0VBOGFDeUFDUVJCcUpBQWdBd3NNQUNBQUlBRkIrQVVReFJJTDB3Z0JCbjhqQUVHZ0FXc2lDQ1FBSXdCQk1Hc2lBeVFBSUFCQkpHb2lCeUFDS0FLb0FoRDJDaUFEUVFBMkFpZ2dBeUFDUVNScU5nSWtJQU1nQVVISUlHbzJBaUFnQXlBQlFkeUFBV29vQWdCQkFXczJBaXdDUUNBRFFTQnFFTFVCQkVBZ0EwRWdhaEJhSWdVb0F0Z0JJZ1FnQlNnQzNBRkJHR3hxSVFVRFFDQUVJQVZHQkVBZ0FpZ0NwQUlpQlNBQ0tBS29Ba0VDZEdvaEFnTkFJQUlnQlVZRVFDQURRU0JxRUZvaUFpZ0N5QUlpQkNBQ0tBTE1Ba0VZYkdvaEFnTkFJQUlnQkVZTkJpQURJQUVnQkJCbUVMd0dOZ0lRSUFjZ0EwRVFhaENVQXlBRVFSaHFJUVFNQUFzQUN5QURJQU5CSUdvUVdpSUVRZGdDYWpZQ0VDQUZLQUlBSVFZZ0EwRUFOZ0lZSUFNZ0JqWUNGQ0FESUFSQm5BbHFLQUlBUVFGck5nSWNBa0FnQTBFUWFoQzBBVVVOQUNBRFFSQnFFS3dCSWdZb0FtQWlCQ0FHS0FKa1FSaHNhaUVHQTBBZ0JDQUdSZzBCSUFNZ0FTQUVFR1lRdkFZMkFnd2dCeUFEUVF4cUVKUURJQVJCR0dvaEJBd0FDd0FMSUFOQklHb1FXaUVFSUFNZ0JTZ0NBRFlDRUNBRUlBTkJFR29ReGdORkJFQWdBeUFCSUFVb0FnQVE5aGcyQWhBZ0J5QURRUkJxRUpRREN5QURJQU5CSUdvUVdpSUVRYUFKYWpZQ0VDQUZLQUlBSVFZZ0EwRUFOZ0lZSUFNZ0JqWUNGQ0FESUFSQjVBOXFLQUlBUVFGck5nSWNBa0FnQTBFUWFoQzBBVVVOQUNBRFFSQnFFS3dCSWdZb0FtQWlCQ0FHS0FKa1FSaHNhaUVHQTBBZ0JDQUdSZzBCSUFNZ0FTQUVFR1lRdkFZMkFnd2dCeUFEUVF4cUVKUURJQVJCR0dvaEJBd0FDd0FMSUFWQkJHb2hCUXdBQ3dBRklBTWdBU0FFRUdZUXZBWTJBaEFnQnlBRFFSQnFFSlFESUFSQkdHb2hCQXdCQ3dBTEFBc2dBaWdDcEFJaUJTQUNLQUtvQWtFQ2RHb2hBZ05BSUFJZ0JVWUVRQ0FEUVNCcUVMVUJSUTBDSUFOQklHb1FXaUlDS0FMSUFpSUVJQUlvQXN3Q1FSaHNhaUVDQTBBZ0FpQUVSZzBESUFNZ0FTQUVFR1lRdkFZMkFoQWdCeUFEUVJCcUVKUURJQVJCR0dvaEJBd0FDd0FGSUFNZ0FTQUZLQUlBRVBZWU5nSVFJQWNnQTBFUWFoQ1VBd0pBSUFOQklHb1F0UUZGRFFBZ0F5QURRU0JxRUZvaUJFR2dDV28yQWhBZ0JTZ0NBQ0VHSUFOQkFEWUNHQ0FESUFZMkFoUWdBeUFFUWVRUGFpZ0NBRUVCYXpZQ0hDQURRUkJxRUxRQlJRMEFJQU5CRUdvUXJBRWlCaWdDWUNJRUlBWW9BbVJCR0d4cUlRWURRQ0FFSUFaR0RRRWdBeUFCSUFRUVpoQzhCallDRENBSElBTkJER29RbEFNZ0JFRVlhaUVFREFBTEFBc2dCVUVFYWlFRkRBRUxBQXNBQ3lBRFFUQnFKQUFnQUVFQU5nS0VCU0FBUVFBMkFxd0VJQUJCQURZQ29BTWdBRUVBTmdMMEFpQUFRUUEyQXRnRUlBQW9BcVFDSWdJZ0FDZ0NxQUpCQW5ScUlRTWdDRUVZYWlFRUEwQWdBaUFEUndSQUFrQWdBaWdDQUNJRlJRUkFJQUVvQWdBaUJSQWNJQWhCMDdRRlFaY0JRUUFnQlVISUFtb1FGeUVGSUFSQjVzWUJFQTRhSUFVUUdBd0JDeUFCS0FJQUlnY1FIQ0FBSUFVZ0IwSElBbW9RekJrTElBSkJCR29oQWd3QkN3c2dDRUdnQVdva0FBdnZBUUVGZnlBQ1FRZEdCSDhnQVVFQUlBRUVmeUFCS0FJRVFaak9FaEJJQlVFQUN4c2lBVVVFUUVFQ0R3dEJBVUVDQW44Z0FVRUlhaUVFQWtBZ0FDZ0MzQVlpQVVVTkFDQUFLQUxZQmdKL0lBUW9BZ0FpQXlBQlFRRnJjU0FCYVNJQVFRRk5EUUFhSUFNZ0FTQURTdzBBR2lBRElBRndDeUlGUVFKMGFpZ0NBQ0lDUlEwQUlBRkJBV3NoQmlBQVFRRkxJUWNEUUNBQ0tBSUFJZ0pGRFFFZ0FpZ0NCQ0lBSUFOSEJFQUNRQ0FIUlFSQUlBQWdCbkVoQUF3QkN5QUFJQUZKRFFBZ0FDQUJjQ0VBQ3lBQUlBVkhEUUlNQVFzZ0FrRUlhaUFFRUxZQ1JRMEFDeUFDREFFTFFRQUxHd1ZCQUFzTHB5Z0JFSDhqQUVFUWF5SU1KQUFDUUFKQUFrQWdBQ2dDQkNBQUxRQUxJZ1VnQlVFWWRFRVlkVUVBU0JzRVFDTUFRUkJySWcwa0FFR29BUkFWSVFVZ0RVRyszZ1lRRkNJT0lRSWdCVUVBRUtNQklnZEIrSlFQTmdJQUlBZEJDR29RNlJNaEFTQUhRWmdCYWlBQ0VGUWhCUkNMQmlnQ0FDSUNRUWhxSUFGSEJFQWdBaWdDQ0NFR0lBSW9BZ3doQWlNQVFSQnJJZ2trQUFKQUlBWWdBaENkQ0NJSUlBRVE3d2xOQkVBZ0FpRURJQWdnQVNnQ0FDSUtJQUVvQWdRUWdnUWlDMDBpRDBVRVFDQUpJQVkyQWd3Z0NVRU1haUFMRVBRVUlBRW9BZ0FoQ2lBSktBSU1JUU1MSUFZZ0F5QUtFUFlNSVFZZ0QwVUVRQ0FCSUFNZ0FpQUlJQUVvQWdBZ0FTZ0NCQkNDQkdzUW94TU1BZ3NnQVNBR0VOZ1REQUVMSUFFb0FnQUVRQ0FCRVBJTUlBRVE4QWtnQVNnQ0FDQUJFTzhKRU84TUlBRVExZ1ZCQURZQ0FDQUJRZ0EzQXdBTElBRWdBU0FJRU5jVEVPZ1RJQUVnQmlBQ0lBZ1FveE1MSUFsQkVHb2tBQXNEUUNBQktBSUFJZ0lnQnlnQ0RCQ0NCQ0FFU3dSQUlBSWdCQkNIQnlnQ0FDSUNCRUFnQWhDMEJnc2dCRUVCYWlFRURBRUxDMEVNRUJVaEFTTUFRUkJySWdJa0FDQUJRUUFRNWhNaUFVR01sUTgyQWdBZ0FTQUZFSHNRL0FRaUF6WUNDQ0FEUlFSQUlBSkIxdXNKSUFVUXhBRU1CQXNnQWtFUWFpUUFJQWNnQVVHb3V5QVFnQUVRZ2dGQkRCQVZJUUVqQUVFUWF5SUNKQUFnQVVFQUVPVVRJZ0ZCckpVUE5nSUFJQUVnQlJCN0VQd0VJZ00yQWdnZ0EwVUVRQ0FDUVl2dENTQUZFTVFCREFRTElBSkJFR29rQUNBSElBRkJzTHNnRUlBQkVJSUJJQWRCRkJBVklBVkJBQkRBRTBIMHZDQVFnQUVRZ2dFZ0IwRU1FQlVnQlVFQUVMOFRRZXk4SUJDQUFSQ0NBVUVJRUJVaEFpQUZFSHNhSUFKQkFCQ2pBU0lDUVpTa0R6WUNBQ0FDUVlEUUR6WUNBQ0FISUFKQi9Md2dFSUFCRUlJQlFRd1FGU0VESUFVUWV5RUJJd0JCSUdzaUFpUUFJQU5CQUJDakFTSURRWUNmRHpZQ0FDQURJQUVRL0FRaUJEWUNDQ0FFUlFSQUlBSkJFR3BCaE9rSklBSWdBUkFVRURVTUJBc2dBa0VnYWlRQUlBTWlBa0hvMEE4MkFnQWdCeUFDUVlTOUlCQ0FBUkNDQVVFSUVCVWhBaUFGRUhzYUlBSkJBQkNqQVNJQ1FhaWxEellDQUNBQ1FkRFJEellDQUNBSElBSkJqTDBnRUlBQkVJSUJRUWdRRlNFQ0lBVVFleG9nQWtFQUVLTUJJZ0pCa0tjUE5nSUFJQUpCdU5JUE5nSUFJQWNnQWtHY3ZTQVFnQUVRZ2dGQkNCQVZJUUlnQlJCN0dpQUNRUUFRb3dFaUFrR2NwZzgyQWdBZ0FrR2cwdzgyQWdBZ0J5QUNRWlM5SUJDQUFSQ0NBVUVJRUJVaEFpQUZFSHNhSUFKQkFCQ2pBU0lDUVlTb0R6WUNBQ0FDUVlqVUR6WUNBQ0FISUFKQnBMMGdFSUFCRUlJQlFSZ1FGVUVBRU9JVElnSkJyS0FQTmdJQUlBVVFleUVESXdCQk1Hc2lBU1FBQWtBQ1FDQURRYjdlQmhDaUFnUkFJQUZCS0dvZ0F4RDhCaUlFS0FJQUlnWVFqUVpGRFFFZ0JoQ01CaUFDUVFocVFmeVhDQ0FFS0FJQUVQb0dSUVJBSUFJZ0Fpd0FDRG9BQ0FzZ0FrRUpha0hjK0F3Z0JDZ0NBQkQ2QmtVRVFDQUNJQUlzQUFrNkFBa0xJQUpCREdwQjNQZ01FSFVnQkJEN0Jnc2dBVUV3YWlRQURBRUxJQUZCR0dwQmx1c0pJQUZCQ0dvZ0F4QVVFRFVNQkFzZ0J5QUNRYXk5SUJDQUFSQ0NBVUVjRUJWQkFCRGhFeUlDUWRTZ0R6WUNBQ0FGRUhzaEF5TUFRVEJySWdFa0FBSkFBa0FnQTBHKzNnWVFvZ0lFUUNBQlFTaHFJQU1RL0FZaUJDZ0NBQ0lHRUkwR1JRMEJJQVlRakFZZ0FrRUlha0g4bHdnZ0JDZ0NBQkNLQmhvZ0FrRU1ha0hjK0F3Z0JDZ0NBQkNLQmhvZ0FrRVFha0hjK0F3UWRTQUVFUHNHQ3lBQlFUQnFKQUFNQVFzZ0FVRVlha0hUNmdrZ0FVRUlhaUFERUJRUU5Rd0VDeUFISUFKQnRMMGdFSUFCRUlJQlFjZ0FFQlZCQUJEZ0V5SUNRZWpFRHpZQ0FDQUNRUXhxRUhRYUlBSkJHR29RZEJvZ0FrRWthaEIwR2lBQ1FUQnFFSFFhSUFVUWV5RUVJd0JCTUdzaUFTUUFBa0FnQVVFb2FpQUVFUHdHSWdNb0FnQWlCaENOQmdSQUlBWVFqQVlnQWtFSWFrSGMrQXdnQXlnQ0FCRDZCa1VFUUNBQ1FmOEFPZ0FJQ3lBQ1FRbHFRZHo0RENBREtBSUFFUG9HUlFSQUlBSkIvd0E2QUFrTElBSkJER3BCM1BnTUVIVWdBa0VZYWlJRVFkejREQkIxSUFKQkFEWUNQQ0FDUVNScVFkejREQkIxSUFKQk1HcEIzUGdNRUhVZ0FrRkFheUFCUVJocUlBUVFWQ0lHUVFBUTZRa2dBa0hFQUdvZ0JFRUFFT2tKSUFZUUR4b2dBeEQ3QmlBQlFUQnFKQUFNQVFzTUFnc2dCeUFDUWZpN0lCQ0FBUkNDQVVISUFCQVZRUUFRM3hNaUFrSFF4UTgyQWdBZ0FrRU1haEIwR2lBQ1FSaHFFSFFhSUFKQkpHb1FkQm9nQWtFd2FoQjBHaUFGRUhzaEJDTUFRVEJySWdFa0FBSkFJQUZCS0dvZ0JCRDhCaUlES0FJQUlnWVFqUVlFUUNBR0VJd0dJQUpCQ0dwQjNQZ01JQU1vQWdBUStnWkZCRUFnQWtIL0FEb0FDQXNnQWtFSmFrSGMrQXdnQXlnQ0FCRDZCa1VFUUNBQ1FmOEFPZ0FKQ3lBQ1FReHFRZHo0REJCMUlBSkJHR29pQkVIYytBd1FkU0FDUVFBMkFqd2dBa0VrYWtIYytBd1FkU0FDUVRCcVFkejREQkIxSUFKQlFHc2dBVUVZYWlBRUVGUWlCa0VCRU9rSklBSkJ4QUJxSUFSQkFSRHBDU0FHRUE4YUlBTVErd1lnQVVFd2FpUUFEQUVMREFJTElBY2dBa0dBdkNBUWdBRVFnZ0ZCekFBUUZVRUFFTjRUSWdKQnVNWVBOZ0lBSUFKQkVHb1FkQm9nQWtFY2FoRHpBUm9nQWtFb2FoRHpBUm9nQWtFMGFoRHpBUm9nQlJCN0lRUWpBRUhBQTJzaUFTUUFBa0FnQVVHNEEyb2dCQkQ4QmlJREtBSUFJZ1lRalFZRVFDQUdFSXdHSUFKQkNHcEIzUGdNSUFNb0FnQVFpZ1pGQkVBZ0FrSC8vLy8vQnpZQ0NBc2dBa0VNYWtIYytBd2dBeWdDQUJDS0JrVUVRQ0FDUWYvLy8vOEhOZ0lNQ3lBQ1FSQnFRZHo0REJCMUlBRkNBRGNEQ0NBQlFkejRERFlDQkNBQlFSQnFJQUZCQkdwQjVBQWdBVUVJYWlBREtBSUFFS0lESWdaQmYwWU5CU0FDUVJ4cUlBRkJFR29pQkNBR1FRSjBJQVJxRU5VRElRWWdBa0VBTmdKQUlBRkIzUGdNTmdJRUlBRkNBRGNEQ0NBRUlBRkJCR3BCNUFBZ0FVRUlhaUFES0FJQUVLSURJZ2xCZjBZTkJTQUNRU2hxSUFGQkVHb2lCQ0FKUVFKMElBUnFFTlVER2lBQlFkejRERFlDQkNBQlFnQTNBd2dnQkNBQlFRUnFRZVFBSUFGQkNHb2dBeWdDQUJDaUF5SUVRWDlHRFFVZ0FrRTBhaUFCUVJCcUlna2dCRUVDZENBSmFoRFZBeG9nQVVHb0Eyb2dCaENBQnlFRUlBSkJ4QUJxUVFBUTJRTWdBa0hJQUdwQkFCRFpBeUFFRUljQkdpQURFUHNHSUFGQndBTnFKQUFNQVFzTUF3c2dCeUFDUVlpOElCQ0FBUkNDQVVITUFCQVZRUUFRM1JNaUFrR2d4dzgyQWdBZ0FrRVFhaEIwR2lBQ1FSeHFFUE1CR2lBQ1FTaHFFUE1CR2lBQ1FUUnFFUE1CR2lBRkVIc2hCQ01BUWNBRGF5SUJKQUFDUUNBQlFiZ0RhaUFFRVB3R0lnTW9BZ0FpQmhDTkJnUkFJQVlRakFZZ0FrRUlha0hjK0F3Z0F5Z0NBQkNLQmtVRVFDQUNRZi8vLy84SE5nSUlDeUFDUVF4cVFkejREQ0FES0FJQUVJb0dSUVJBSUFKQi8vLy8vd2MyQWd3TElBSkJFR3BCM1BnTUVIVWdBVUlBTndNSUlBRkIzUGdNTmdJRUlBRkJFR29nQVVFRWFrSGtBQ0FCUVFocUlBTW9BZ0FRb2dNaUJrRi9SZzBGSUFKQkhHb2dBVUVRYWlJRUlBWkJBblFnQkdvUTFRTWhCaUFDUVFBMkFrQWdBVUhjK0F3MkFnUWdBVUlBTndNSUlBUWdBVUVFYWtIa0FDQUJRUWhxSUFNb0FnQVFvZ01pQ1VGL1JnMEZJQUpCS0dvZ0FVRVFhaUlFSUFsQkFuUWdCR29RMVFNYUlBRkIzUGdNTmdJRUlBRkNBRGNEQ0NBRUlBRkJCR3BCNUFBZ0FVRUlhaUFES0FJQUVLSURJZ1JCZjBZTkJTQUNRVFJxSUFGQkVHb2lDU0FFUVFKMElBbHFFTlVER2lBQlFhZ0RhaUFHRUlBSElRUWdBa0hFQUdwQkFSRFpBeUFDUWNnQWFrRUJFTmtESUFRUWh3RWFJQU1RK3dZZ0FVSEFBMm9rQUF3QkN3d0RDeUFISUFKQmtMd2dFSUFCRUlJQlFhQUVFQlZCQUJEY0V5SUdRUXhxSVFKQkFDRUVJd0JCSUdzaUNDUUFJQUlnQlJDOUV5SUJRYXdCYWlFRElBRkJCR29oQWdOQUlBSVFkRUVNYWlJQ0lBTkhEUUFMSUFGQnpBTnFJUUlEUUNBREVIUkJER29pQXlBQ1J3MEFDeUFCUWVRRGFpRURBMEFnQWhCMFFReHFJZ0lnQTBjTkFBc2dBeEIwR2lBQlFmQURhaEIwR2lBQlFmd0RhaEIwR2lBQlFZZ0VhaEIwR2lBSVFRaHFJQVZCQVJEQUV5SUNRYXpjRHpZQ0FDTUFRYkFCYXlJREpBQWdBMEdBQVdwQkFFRXNFSGthQTBBZ0JFRUhSZ1JBQWtCQkFDRUVBMEFnQkVFTVJnMEJJQU1nQkRZQ2tBRWdBMEVRYWlJSlFlUUFRWVRmQmlBRFFZQUJhaUlLSUFFb0FnQVFBaG9nQVNBRVFReHNhaUlMUWF3QmFpQUpFSFVnQ1VIa0FFR2R1Z1VnQ2lBQktBSUFFQUlhSUF0QnZBSnFJQWtRZFNBRVFRRnFJUVFNQUFzQUN3VWdBeUFFTmdLWUFTQURRUkJxSWdsQjVBQkJtdDhHSUFOQmdBRnFJZ29nQVNnQ0FCQUNHaUFCSUFSQkRHeHFJZ3RCQkdvZ0NSQjFJQWxCNUFCQnVyc0ZJQW9nQVNnQ0FCQUNHaUFMUWRnQWFpQUpFSFVnQkVFQmFpRUVEQUVMQ3lBRFFRRTJBb2dCSUFOQkVHb2lCRUhrQUVIQ3Z3SWdBMEdBQVdvaUNTQUJLQUlBRUFJYUlBRkJ6QU5xSUFRUWRTQURRUTAyQW9nQklBUkI1QUJCd3I4Q0lBa2dBU2dDQUJBQ0dpQUJRZGdEYWlBRUVIVWdBeUFCUWVNQUlBSVE2Z2tnQVVIa0Eyb2dBeENhQWlBREVBOGFJQU1nQVVIeUFDQUNFT29KSUFGQjhBTnFJQU1RbWdJZ0F4QVBHaUFESUFGQitBQWdBaERxQ1NBQlFmd0RhaUFERUpvQ0lBTVFEeG9nQXlBQlFkZ0FJQUlRNmdrZ0FVR0lCR29nQXhDYUFpQURFQThhSUFOQnNBRnFKQUFnQWhEZkRCb2dDRUVnYWlRQUlBWkJqTGtQTmdJSUlBWkJ3TGdQTmdJQUlBY2dCa0hZdXlBUWdBRVFnZ0ZCb0FRUUZVRUFFTnNUSWdaQkRHb2hBa0VBSVFRakFFRVFheUlKSkFBZ0FpQUZJZ0lRdlJNaUEwR3NBV29oQVNBRFFRUnFJUVVEUUNBRkVQTUJRUXhxSWdVZ0FVY05BQXNnQTBITUEyb2hCUU5BSUFFUTh3RkJER29pQVNBRlJ3MEFDeUFEUWVRRGFpRUJBMEFnQlJEekFVRU1haUlGSUFGSERRQUxJQUVROHdFYUlBTkI4QU5xRVBNQkdpQURRZndEYWhEekFSb2dBMEdJQkdvUTh3RWFJQWtnQWtFQkVMOFRJZ1ZCak4wUE5nSUFJd0JCMEFScklnRWtBQ0FCUWFBRWFrRUFRU3dRZVJvZ0FVSUFOd01ZQWtBRFFBSkFJQVJCQjBZRVFFRUFJUVFEUUFKQUlBUkJERVlFUUNBQlFRRTJBcWdFSUFGQnNBTnFJZ1JCNUFCQndyOENJQUZCb0FScUlBTW9BZ0FRQWhvZ0FVSUFOd01ZSUFFZ0JEWUNGQ0FCUVNCcUlBRkJGR3BCNUFBZ0FVRVlhaUFES0FJQUVLSURJZ2hCZjBjTkFRd0VDeUFCSUFRMkFyQUVJQUZCc0FOcUlnaEI1QUJCaE44R0lBRkJvQVJxSUFNb0FnQVFBaG9nQVVJQU53TVlJQUVnQ0RZQ0NDQUJRU0JxSUFGQkNHcEI1QUFnQVVFWWFpQURLQUlBRUtJRElncEJBV3BCQVUwTkF5QURJQVJCREd4cUlndEJyQUZxSUFGQklHb2lDQ0FLUVFKMElBaHFFTlVER2lBQlFiQURhaUlLUWVRQVFaMjZCU0FCUWFBRWFpQURLQUlBRUFJYUlBRkNBRGNER0NBQklBbzJBZ2dnQ0NBQlFRaHFRZVFBSUFGQkdHb2dBeWdDQUJDaUF5SUlRUUZxUVFGTkRRTWdDMEc4QW1vZ0FVRWdhaUlLSUFoQkFuUWdDbW9RMVFNYUlBUkJBV29oQkF3QkN3c2dBMEhNQTJvZ0FVRWdhaUlFSUFoQkFuUWdCR29RMVFNYUlBRkJEVFlDcUFRZ0FVR3dBMm9pQ0VIa0FFSEN2d0lnQVVHZ0JHb2dBeWdDQUJBQ0dpQUJRZ0EzQXhnZ0FTQUlOZ0lVSUFRZ0FVRVVha0hrQUNBQlFSaHFJQU1vQWdBUW9nTWlCRUYvUmcwQklBTkIyQU5xSUFGQklHb2lDQ0FFUVFKMElBaHFFTlVER2lBQlFRaHFJZ1FnQTBIakFDQUZFT3NKSUFOQjVBTnFJQVFRb1FNZ0JCQ0hBUm9nQkNBRFFmSUFJQVVRNndrZ0EwSHdBMm9nQkJDaEF5QUVFSWNCR2lBRUlBTkIrQUFnQlJEckNTQURRZndEYWlBRUVLRURJQVFRaHdFYUlBUWdBMEhZQUNBRkVPc0pJQU5CaUFScUlBUVFvUU1nQVVFSWFoQ0hBUm9nQVVIUUJHb2tBQXdEQ3lBQklBUTJBcmdFSUFGQnNBTnFJZ2hCNUFCQm10OEdJQUZCb0FScUlBTW9BZ0FRQWhvZ0FVSUFOd01ZSUFFZ0NEWUNDQ0FCUVNCcUlBRkJDR3BCNUFBZ0FVRVlhaUFES0FJQUVLSURJZ3BCQVdwQkFVME5BQ0FESUFSQkRHeHFJZ3RCQkdvZ0FVRWdhaUlJSUFwQkFuUWdDR29RMVFNYUlBRkJzQU5xSWdwQjVBQkJ1cnNGSUFGQm9BUnFJQU1vQWdBUUFob2dBVUlBTndNWUlBRWdDallDQ0NBSUlBRkJDR3BCNUFBZ0FVRVlhaUFES0FJQUVLSURJZ2hCQVdwQkFVME5BQ0FMUWRnQWFpQUJRU0JxSWdvZ0NFRUNkQ0FLYWhEVkF4b2dCRUVCYWlFRURBRUxDd3dFQ3lBRkVPa01HaUFKUVJCcUpBQWdCa0cwdXc4MkFnZ2dCa0hvdWc4MkFnQWdCeUFHUWVDN0lCQ0FBUkNDQVVFTUVCVkJBQkNqQVNJRlFRaHFJQUlRdmhNZ0JVSDB2QTgyQWdBZ0JVR1F2dzgyQWdBZ0J5QUZRZWk3SUJDQUFSQ0NBVUVNRUJWQkFCQ2pBU0lGUVFocUlBSVF2aE1nQlVHUXZnODJBZ0FnQlVHRXdBODJBZ0FnQnlBRlFmQzdJQkNBQVJDQ0FVRUlFQlZCQUJEYUV5SUZRZWpPRHpZQ0FDQUhJQVZCdUx3Z0VJQUJFSUlCUVFnUUZVRUFFTmtUSWdWQnRNOFBOZ0lBSUFjZ0JVSEF2Q0FRZ0FFUWdnRWdEaEFQR2lBTVFRaHFJZ1VnQnpZQ0FDQUhFTFFHSUExQkVHb2tBQUpBQWtBZ0FDZ0NBQ0lFSUFBZ0FDMEFDeUlDUVJoMFFSaDFJZ0ZCQUVnYklnY3RBQUFpQTBIZkFFWUVRQ0FBS0FJRUlnTWdBaUFCUVFCSUcwRUJSZzBDSUFjdEFBRkIzd0JIRFFFTUFnc2dCUkREQWlFQ0lBTkJHSFJCR0hVaUFVRUFUZ1IvSUFJb0FnZ2dBVUgvQVhGQkFuUnFMUUFBUVNCeFFRVjJCVUVBQzBVTkFTQUFLQUlFSVFNZ0FDZ0NBQ0VFSUFBdEFBc2lBaUVCQ3lBRUlBQWdBVUVZZEVFWWRVRUFTQ0lCR3lJQUlBTWdBaUFCRzJvaEFnTkFJQUFnQWtZaUVBMEJJQUF0QUFBaUFVSGZBRWNFUUNBRkVNTUNJUU1nQVVFWWRFRVlkU0lCUVFCT0JIOGdBeWdDQ0NBQlFmOEJjVUVDZEdvdEFBQkI0QUJ4UVFCSEJVRUFDMFVOQWdzZ0FFRUJhaUVBREFBTEFBc2dCUkJrQ3lBTVFSQnFKQUFnRUE4TElBRkJHR3BCcU9vSklBRkJDR29nQkJBVUVEVU1BUXNnQVVFUWFrR282Z2tnQVVHb0Eyb2dCQkFVRURVTEVHOEFDK1VCQVFkL0FuOGdBQ2dDQUNBQUlBQXRBQXNpQVVFWWRFRVlkVUVBU0NJREd5RUVJQUFvQWdRZ0FTQURHeUVCUVFCQmc0a0lFTndCSWdKRkRRQWFJQUVnQkNJQWFpSUZJUUVqQUVFUWF5SURKQUFDUUNBQ1FZT0pDR29pQWtHRGlRaEdCRUFnQUNFQkRBRUxJQUpCZzRrSWF5SUNJQUVnQUd0S0RRQWdBMEdEaVFndEFBQTZBQTlCQVNBQ2F5RUdBMzhnQVNBQWF5SUhJQUpJRFFFZ0FDQUdJQWRxSUFOQkQyb1E3eGdpQUVVTkFTQUFRWU9KQ0NBQ0VNc0xCSDhnQUVFQmFpRUFEQUVGSUFBTEN5RUJDeUFEUVJCcUpBQkJmeUFCSWdBZ0JHc2dBQ0FGUmhzTEMyY0NBWDhCZmlNQVFSQnJJZ01rQUNBRElBSTJBZ3dDUUNBQlFkQUZhaUFEUVF4cUVLVUpJZ0ZGQkVBZ0FFSUFOd0lBSUFCQkFEWUNFQ0FBUWdBM0FnZ01BUXNnQVNrQ0RDRUVJQUJCQURZQ0VDQUFJQVEzQWdnZ0FDQUVOd0lBQ3lBRFFSQnFKQUFMRlFBZ0FDQUJFTlVHSWdBZ0FTa0RNRGNETUNBQUM1TUJBUU4vSXdCQndBRnJJZ0lrQUNBQ0lBRTJBcndCSUFGRkJFQWdBa0VJYWtIVHRBVkI5d0JCQUNBQ1FhZ0JhaEFkSWdNUUZ5SUVRUmhxUWR1OENCQU9HaUFFRUJnZ0F4QWVDeUFCRUZjZ0FDZ0NDRUVCUVFCQmo4MElRZE8wQlVINEFCQkxJQUJCc0FKcUlBSkJ2QUZxRUxrWklBSWdBaWdDdkFFMkFnZ2dBRUVrYWlBQ1FRaHFFSlFESUFKQndBRnFKQUFMYVFFQ2Z5TUFRU0JySWdNa0FDQURRUWhxSUFBZ0FDZ0NCQ0FBS0FJQWEwRU1iVUVCYWhDYUR5QUFLQUlFSUFBb0FnQnJRUXh0SUFCQkNHb1FtUThpQWlnQ0NDQUJFTEFCR2lBQ0lBSW9BZ2hCREdvMkFnZ2dBQ0FDRVBrWUlBSVErQmdnQTBFZ2FpUUFDeFFBSUFBZ0FDZ0NCQ0FCRUxBQlFReHFOZ0lFQzU0RkFncC9BbjBqQUVFZ2F5SUlKQUFnQ0NBQk5nSVFJQWhCRUdvaENTTUFRUkJySWdVa0FDQUJLQUlBSVFNZ0NBSi9Ba0FnQUNnQ0JDSUNSUTBBSUFBb0FnQUNmeUFDUVFGcklBTnhJQUpwSWdaQkFVME5BQm9nQXlBQ0lBTkxEUUFhSUFNZ0FuQUxJZ2RCQW5ScUtBSUFJZ1JGRFFBZ0FrRUJheUVLSUFaQkFVc2hDd05BSUFRb0FnQWlCRVVOQVNBRElBUW9BZ1FpQmtjRVFBSkFJQXRGQkVBZ0JpQUtjU0VHREFFTElBSWdCa3NOQUNBR0lBSndJUVlMSUFZZ0IwY05BZ3NnQkVFSWFpQUJFTFlDUlEwQUMwRUFEQUVMUVNnUUZTRUJJQVVnQUVFSWFqWUNCQ0FGSUFFMkFnQWdBVUVJYWlBSktBSUFFRlpCQURZQ0hDQUZRUUU2QUFnZ0FVRUFOZ0lBSUFFZ0F6WUNCQUpBUVFBZ0FpQUFLQUlNUVFGcXN5SU1JQUFxQWhBaURTQUNzNVJlR3cwQUlBQWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJQkFuOGdEQ0FObFkwaURFTUFBSUJQWFNBTVF3QUFBQUJnY1FSQUlBeXBEQUVMUVFBTElnY2dBU0FIU3hzUTdCZ2dBQ2dDQkNJQ0lBSkJBV3R4UlFSQUlBSkJBV3NnQTNFaEJ3d0JDeUFDSUFOTEJFQWdBeUVIREFFTElBTWdBbkFoQndzQ1FDQUhRUUowSWdNZ0FDZ0NBR29vQWdBaUFVVUVRQ0FGS0FJQUlBQW9BZ2cyQWdBZ0FDQUZLQUlBTmdJSUlBQW9BZ0FnQTJvZ0FFRUlhallDQUNBRktBSUFJZ0VvQWdBaUEwVU5BU0FES0FJRUlRUUNRQ0FDSUFKQkFXc2lBM0ZGQkVBZ0F5QUVjU0VFREFFTElBSWdCRXNOQUNBRUlBSndJUVFMSUFBb0FnQWdCRUVDZEdvZ0FUWUNBQXdCQ3lBRktBSUFJQUVvQWdBMkFnQWdBU0FGS0FJQU5nSUFDeUFGS0FJQUlRUWdCVUVBTmdJQUlBQWdBQ2dDREVFQmFqWUNEQ0FGRUlBSlFRRUxPZ0FjSUFnZ0JEWUNHQ0FGUVJCcUpBQWdDQ2dDR0NFQUlBaEJJR29rQUNBQVFTUnFDNUVGQWdsL0FuMGpBRUVRYXlJSkpBQWpBRUVRYXlJR0pBQWdBaWdDQUNFRklBa0Nmd0pBSUFFb0FnUWlBMFVOQUNBQktBSUFBbjhnQTBFQmF5QUZjU0FEYVNJSVFRRk5EUUFhSUFVZ0F5QUZTdzBBR2lBRklBTndDeUlIUVFKMGFpZ0NBQ0lFUlEwQUlBTkJBV3NoQ2lBSVFRRkxJUXNEUUNBRUtBSUFJZ1JGRFFFZ0JTQUVLQUlFSWdoSEJFQUNRQ0FMUlFSQUlBZ2dDbkVoQ0F3QkN5QURJQWhMRFFBZ0NDQURjQ0VJQ3lBSElBaEhEUUlMSUFSQkNHb2dBaEMyQWtVTkFBdEJBQXdCQzBFa0VCVWhCQ0FHSUFGQkNHbzJBZ1FnQmlBRU5nSUFJQVJCQ0dvZ0FoQldHaUFHUVFFNkFBZ2dCRUVBTmdJQUlBUWdCVFlDQkFKQVFRQWdBeUFCS0FJTVFRRnFzeUlNSUFFcUFoQWlEU0FEczVSZUd3MEFJQUVnQXlBRFFRRnJjVUVBUnlBRFFRTkpjaUFEUVFGMGNpSUNBbjhnRENBTmxZMGlERU1BQUlCUFhTQU1Rd0FBQUFCZ2NRUkFJQXlwREFFTFFRQUxJZ2NnQWlBSFN4c1E3QmdnQVNnQ0JDSURJQU5CQVd0eFJRUkFJQU5CQVdzZ0JYRWhCd3dCQ3lBRElBVkxCRUFnQlNFSERBRUxJQVVnQTNBaEJ3c0NRQ0FIUVFKMElnVWdBU2dDQUdvb0FnQWlBa1VFUUNBR0tBSUFJQUVvQWdnMkFnQWdBU0FHS0FJQU5nSUlJQUVvQWdBZ0JXb2dBVUVJYWpZQ0FDQUdLQUlBSWdJb0FnQWlCVVVOQVNBRktBSUVJUVFDUUNBRElBTkJBV3NpQlhGRkJFQWdCQ0FGY1NFRURBRUxJQU1nQkVzTkFDQUVJQU53SVFRTElBRW9BZ0FnQkVFQ2RHb2dBallDQUF3QkN5QUdLQUlBSUFJb0FnQTJBZ0FnQWlBR0tBSUFOZ0lBQ3lBR0tBSUFJUVFnQmtFQU5nSUFJQUVnQVNnQ0RFRUJhallDRENBR0VJQUpRUUVMT2dBTUlBa2dCRFlDQ0NBR1FSQnFKQUFnQUNBSktBSUlOZ0lBSUFBZ0NTMEFERG9BQkNBSlFSQnFKQUFMa2c4Q0QzOENmU01BUVlBQmF5SUlKQUFnQ0NBQk5nSjhBa0FnQUMwQWxBTkZCRUJCQUNFRERBRUxBa0FDUUFKQUlBSW9BaEJCQ1dzT0FnRUFBd3NnQUVISUJHb2dBU0FJUWRBQWFrSHJ5QUVRRkNJQ0VNVUdEQUVMSUFoQjBBQnFJZ0lnQUNBQkVOUUhJQWdvQWxRaEJDQUlLQUpRSVFZZ0FoQ2tBaUFFSUFaR0RRRWdBRUhJQkdvZ0FTQUlRZEFBYWtIdHlBRVFGQ0lDRU1VR0N5QUNFQThhSUFORkJFQkJBQ0VESUFCQkFEb0FsQU1nQUVHb0JHcEIvTE1NRUJrZ0NFSDhBR29RTHhvTUFRc2dDRUh3QUdvZ0FFSElCR29nQVJEVEJ4QlVJUTBnQUVFZ2FpSUJFQndnRFNnQ0FDRUNJQWdnRFNnQ0JDQU5MUUFMSWdRZ0JFRVlkRUVZZFVFQVNDSUVHellDVENBSUlBSWdEU0FFR3pZQ1NDQUlJQWdwQTBnM0F3QWdDRUhRQUdvaUJDQUFRYWdDYWlBSUVKZ0RJQU1nQVNBREtBSUFLQUlJRVFFQUlRSWdBQ2dDSkVIWUFtb2hCeU1BUVJCcklnRWtBQ0FCSUFJMkFnZ2dBU0FBS0FJa0lnSWdCQkR6QWpZQ0JDTUFRUkJySWdZa0FDQUNFQndnQWlBQ0tBSU1RUUZxSWdVMkFnd2dCaUFGTmdJSUlBSkJqQUZxSWdVZ0JSREZBaUFDS0FJSUlBWW9BZ2dnQnlBQktBSUVJQUVvQWdnUWlSOGlBaEFvSUFVZ0JTZ0NHRUVCYWpZQ0dDQUdRUkJxSkFBZ0FVRVFhaVFBSUFBZ0NFRW9haUFFRUZZZ0FoRDVEaUFJUVFocUlBUVFWaUVDUVFBaEJpTUFRZEFBYXlJTEpBQWdDeUFETmdJRUlBQW9BcEFESVFVZ0MwRW9haUFMUVFocUlBSVFWaUFERUt3YUlBVkJ2QUpxSVFrZ0N5Z0NNQ0VFQWtBQ1FDQUZLQUxBQWlJQVJRMEFJQWtvQWdBQ2Z5QUFRUUZySUFSeElBQnBJZ05CQVUwTkFCb2dCQ0FBSUFSTERRQWFJQVFnQUhBTElnWkJBblJxS0FJQUlnRkZEUUFnQzBFd2FpRUhJQUJCQVdzaENpQURRUUZMSVF3RFFDQUJLQUlBSWdGRkRRRWdCQ0FCS0FJRUlnTkhCRUFDUUNBTVJRUkFJQU1nQ25FaEF3d0JDeUFBSUFOTERRQWdBeUFBY0NFREN5QURJQVpHRFFFTUFnc2dBU2dDREVFSWFpQUhFTFlDUlEwQUN5QUJLQUlNSVF3TUFRc2pBRUVnYXlJQkpBQWdCVUdnQW1vaUFCQy9BU0lNSUFFZ0FoQldJQXNvQWdRUXJCb2dBQ0FNRUNnZ0FDQUFLQUlZUVFGcU5nSVlJQUZCSUdva0FBSkFJQVVvQXNBQ0lnSkZEUUFnQ1NnQ0FBSi9JQUpCQVdzZ0JIRWdBbWtpQUVFQlRRMEFHaUFFSUFJZ0JFc05BQm9nQkNBQ2NBc2lCa0VDZEdvb0FnQWlBVVVOQUNBTVFRaHFJUWNnQWtFQmF5RUtJQUJCQVVzaEFBTkFJQUVvQWdBaUFVVU5BU0FFSUFFb0FnUWlBMGNFUUFKQUlBQkZCRUFnQXlBS2NTRUREQUVMSUFJZ0Ewc05BQ0FESUFKd0lRTUxJQU1nQmtjTkFnc2dBU2dDREVFSWFpQUhFTFlDUlEwQUN3d0JDMEVRRUJVaUNpQUVOZ0lFSUFvZ0JLMGdESzFDSUlhRU53SUlJQXBCQURZQ0FDQUZRY1FDYWlFUEFrQkJBQ0FDSUFVb0FzZ0NRUUZxc3lJVElBVXFBc3dDSWhRZ0FyT1VYaHNOQUFKQUFrQUNmMEVDSUFJZ0FrRUJhM0ZCQUVjZ0FrRURTWElnQWtFQmRISWlBQUovSUJNZ0ZKV05JaE5EQUFDQVQxMGdFME1BQUFBQVlIRUVRQ0FUcVF3QkMwRUFDeUlCSUFBZ0FVc2JJZ0JCQVVZTkFCb2dBQ0FBSUFCQkFXdHhSUTBBR2lBQUVIOExJZ2NnQlNnQ3dBSWlBRTBFUUNBQUlBZE5EUUlnQUVFRFNTRUNBbjhnQlNnQ3lBS3pJQVVxQXN3Q2xZMGlFME1BQUlCUFhTQVRRd0FBQUFCZ2NRUkFJQk9wREFFTFFRQUxJUUVnQUNBSElBSWdBR2xCQVV0eUJIOGdBUkIvQlNBQlFRRkJJQ0FCUVFGcloydDBJQUZCQWtrYkN5SUJJQUVnQjBrYklnZE5EUUlnQjBVTkFRc2dCMEdBZ0lDQUJFa0VRQ0FKSUFkQkFuUVFGUkJzSUFVZ0J6WUN3QUpCQUNFQkEwQWdBU0FIUmdSQUlBVW9Bc1FDSWdKRkRRUWdBaWdDQkNFR0FrQWdCMmtpQUVFQlRRUkFJQVlnQjBFQmEzRWhCZ3dCQ3lBR0lBZEpEUUFnQmlBSGNDRUdDeUFKS0FJQUlBWkJBblJxSUE4MkFnQWdCMEVCYXlFUklBQkJBVXNoRWdOQUlBSW9BZ0FpQUVVTkJTQUFLQUlFSVFNQ1FDQVNSUVJBSUFNZ0VYRWhBd3dCQ3lBRElBZEpEUUFnQXlBSGNDRURDd0pBSUFNZ0JrWU5BQ0FBSVFFZ0EwRUNkQ0lRSUFrb0FnQnFJZzRvQWdCRkJFQWdEaUFDTmdJQUlBTWhCZ3dCQ3dOQUFrQWdBU0lES0FJQUlnRkZCRUJCQUNFQkRBRUxJQUFvQWd4QkNHb2dBU2dDREVFSWFoQzJBaUVPSUFNb0FnQWhBU0FPRFFFTEN5QUNJQUUyQWdBZ0F5QUpLQUlBSUJCcUtBSUFLQUlBTmdJQUlBa29BZ0FnRUdvb0FnQWdBRFlDQUF3QkN5QUFJUUlNQUFzQUJTQUpLQUlBSUFGQkFuUnFRUUEyQWdBZ0FVRUJhaUVCREFFTEFBc0FDeEQ3QVFBTElBbEJBQkJzSUFWQkFEWUN3QUlMSUFVb0FzQUNJZ0lnQWtFQmF5SUFjVVVFUUNBQUlBUnhJUVlNQVFzZ0FpQUVTd1JBSUFRaEJnd0JDeUFFSUFKd0lRWUxBa0FDUUNBSktBSUFJQVpCQW5ScUlnQW9BZ0FpQVVVRVFDQUtJQVVvQXNRQ05nSUFJQVVnQ2pZQ3hBSWdBQ0FQTmdJQUlBb29BZ0FpQUVVTkFpQUFLQUlFSVFFQ1FDQUNJQUpCQVdzaUFIRkZCRUFnQUNBQmNTRUJEQUVMSUFFZ0Fra05BQ0FCSUFKd0lRRUxJQWtvQWdBZ0FVRUNkR29oQVF3QkN5QUtJQUVvQWdBMkFnQUxJQUVnQ2pZQ0FBc2dCU0FGS0FMSUFrRUJhallDeUFJTElBdEJLR29RK1FnYUlBdEIwQUJxSkFBZ0RDRURJQTBRRHhvTElBaEJnQUZxSkFBZ0F3dmxBZ0VEZnlNQVFUQnJJZ01rQUNBQ1FRQTJBZ0FnQXlBQUtBSzhCU0FCRUk4RUlnRTJBaXdnQTBFZ2FpQUFJQUVRMUFjZ0F5Z0NKQ0VGSUFNb0FpQWhBUU5BQWtBQ1FDQUJJQVZHQkVCQkFTRUJEQUVMQWtBZ0FTZ0NCQ0FCS0FJQUlnUnJRUWhIRFFBZ0JDZ0NBRUVHUncwQUlBUW9BZ1FpQkEwQ0lBQkJBRG9BbEFNZ0FFR29CR3BCbThNTEVCa2dBMEVzYWhBdlFmQ09CeEFaS0FJQUxRQUFRUUJISVFFTUFRc2dBRUVBT2dDVUF5QUFRYWdFYWtHYnd3c1FHU0FEUVN4cUVDOUI5SWdLRUJraEFBSkFJQUVvQWdBaUFpQUJLQUlFUmdSQUlBTkJFR3BCMzVnSUVCUWFEQUVMSUFOQkVHb2dBaWdDQUJCZkN5QUFJQU5CRUdvaUFoQk5RYSttQ2hBWklRQWdBeUFCS0FJRUlBRW9BZ0JyUVFKMU5nSU1JQUFnQTBFTWFoQXZRZURBQVJBWktBSUFMUUFBUVFCSElRRWdBaEFQR2dzZ0EwRWdhaENrQWlBRFFUQnFKQUFnQVE4TElBSWdCRFlDQUNBQlFReHFJUUVNQUFzQUM5a0JBUWQvSXdCQkVHc2lBaVFBSUFJZ0FUWUNBQUpBSUFCQkJHb2lCQ0FDRVBjSERRQWdBaUFCTmdJTUlBSWdCQ0FDUVF4cUVLc0ZJQUJCR0dvaEJTQUJLQUpZSVFZZ0FTZ0NWQ0VFQTBBZ0JDQUdSZ1JBSUFJZ0FUWUNBQ0FBUVN4cUlBSVEvUUlNQWdzZ0JDZ0NBQ0lEUVF4cUlRY2dBMEVRYWlFREEwQWdCeUFES0FJQUlnTkdCRUFnQkVFRWFpRUVEQUlGQWtBZ0F5Z0NGRUU1UncwQUlBSWdBMEVBRURnMkFnQWdCU0FDRU5BQktBSUFJZ2hGRFFBZ0FDQUlFSjRaQ3lBRFFRUnFJUU1NQVFzQUN3QUxBQXNnQWtFUWFpUUFDOW9JQWhKL0FuMGdBQzBBYlVIQUFIRkZCRUFqQUVFUWF5SU9KQUFnRGlBQU5nSUVRY1FBRUJVaEJDQU9LQUlFSVFVakFFRVFheUlQSkFBZ0JFSUFOd0lFSUFRZ0JUWUNBQ0FFUWdBM0FpUWdCRUlBTndJTUlBUkJIR29pQVVJQU53SUFJQVJCZ0lDQS9BTTJBaFFnQkNBQk5nSVlJQVJDQURjQ0xDQUVRZ0EzQWp3Z0JFS0FnSUQ4QXpjQ05DQVBJQVVvQWhnUXhSY2dEeWdDQkNFU0lBOG9BZ0FoRUFOL0lCQWdFa1lFZnlBUEVESWFJQTlCRUdva0FDQUVCU0FFSUJBb0FnQWlDeENDR0NJTUJFQWpBRUVRYXlJRkpBQWdDeEJnSVFFZ0JTQU1OZ0lFSUFVZ0FUWUNBQ01BUVJCcklnY2tBRUVBSVFFakFFRVFheUlKSkFBZ0JTZ0NBQ0VESUFjQ2Z3SkFJQVJCQkdvaUJpZ0NCQ0lDUlEwQUlBWW9BZ0FDZnlBQ1FRRnJJQU54SUFKcElncEJBVTBOQUJvZ0F5QUNJQU5MRFFBYUlBTWdBbkFMSWdGQkFuUnFLQUlBSWdoRkRRQWdBa0VCYXlFUklBcEJBVXNoQ2dOQUlBZ29BZ0FpQ0VVTkFTQURJQWdvQWdRaURVY0VRQUpBSUFwRkJFQWdEU0FSY1NFTkRBRUxJQUlnRFVzTkFDQU5JQUp3SVEwTElBRWdEVWNOQWdzZ0NDZ0NDQ0FEUncwQUMwRUFEQUVMSUFrZ0JpQURJQVVROXdzQ1FFRUFJQUlnQmlnQ0RFRUJhck1pRkNBR0tnSVFJaE1nQXJPVVhoc05BQ0FHSUFJZ0FrRUJhM0ZCQUVjZ0FrRURTWElnQWtFQmRISWlDZ0ovSUJRZ0U1V05JaE5EQUFDQVQxMGdFME1BQUFBQVlIRUVRQ0FUcVF3QkMwRUFDeUlCSUFFZ0Nra2JFTU1CSUFZb0FnUWlBaUFDUVFGcmNVVUVRQ0FDUVFGcklBTnhJUUVNQVFzZ0FpQURTd1JBSUFNaEFRd0JDeUFESUFKd0lRRUxBa0FnQVVFQ2RDSUJJQVlvQWdCcUtBSUFJZ05GQkVBZ0NTZ0NBQ0FHS0FJSU5nSUFJQVlnQ1NnQ0FEWUNDQ0FHS0FJQUlBRnFJQVpCQ0dvMkFnQWdDU2dDQUNJREtBSUFJZ0ZGRFFFZ0FTZ0NCQ0VJQWtBZ0FpQUNRUUZySWdGeFJRUkFJQUVnQ0hFaENBd0JDeUFDSUFoTERRQWdDQ0FDY0NFSUN5QUdLQUlBSUFoQkFuUnFJQU0yQWdBTUFRc2dDU2dDQUNBREtBSUFOZ0lBSUFNZ0NTZ0NBRFlDQUFzZ0NTZ0NBQ0VJSUFsQkFEWUNBQ0FHSUFZb0FneEJBV28yQWd3Z0NSQ0xBVUVCQ3pvQURDQUhJQWcyQWdnZ0NVRVFhaVFBSUFVZ0J5Z0NDRFlDQ0NBRklBY3RBQXc2QUF3Z0IwRVFhaVFBSUFVdEFBd0VRQ0FGSUFzUVlEWUNEQ0FGSUF3MkFnZ2pBRUVnYXlJSEpBQkJHQkFWSVFzZ0J5QUVRUmhxSWd4QkJHbzJBaFFnQ3lBRktRSUlOd0lRSUFkQkFUb0FHQUpBSUF3b0FnUWlDa1VFUUNBTVFRUnFJZ0VoQXd3QkN5QUxLQUlRSVJFRFFDQUtJZ0VvQWhBZ0VVc0VRQ0FCSWdNb0FnQWlDZzBCREFJTElBRW9BZ1FpQ2cwQUN5QUJRUVJxSVFNTElBY2dBVFlDRENBTUlBY29BZ3dnQXlBTEVQZ0NJQWRCQURZQ0VDQUhRUkJxRUlzQklBZEJJR29rQUFzZ0JVRVFhaVFBQ3lBUVFRUnFJUkFNQVFzTElRRWdEa0VBTmdJSUlBQkJ5QUZxSUFFUWdoa2dEa0VJYWhDQkdTQUFJQUFvQW14QmdJQUJjallDYkNBT1FSQnFKQUFMSUFBb0FzZ0JDNjd0Q2dNc2Z3SjlBWDRqQUVFZ2F5SWdKQUJCQkJBVklnRkJFaEM1Q0RZQ0FDQWdJQUUyQWhnZ0lDQUFRYkFFYWhEUkFTRUJJd0JCSUdzaUF5UUFJQ0FvQWhnb0FnQWdBMEVJYWlBQkVPc0ZJZ0lReFFvZ0FoQVdJQU5CSUdva0FDQUJFQllDUUNBQUxRQ1VBMFVOQUNBQUtBSVVJZ0VoQnlBQUtBSVlJQUZyUVFKMUlRUWdJQ2dDR0NnQ0FDRUJJd0JCd0FWcklnNGtBQ0FPUVpnRmFpQUJFTXNLSWhraEFnSi9RVEFRRlVFQVFTUVFlU0lCUWYvLy93RTJBaUFnQVVML2g0Q0E4QjgzQWhnZ0FVTC8vNENBOEI4M0FoQWdBVUwvLzUrQThQOC9Od0lJSUFGQy8vK0FnUEFmTndJQUlBRkNBRGNDSkNBQlFZQUNPd0VzSXdCQlFHb2lBeVFBSUE1Q0FEY0RFQ0FPSUFRMkFnd2dEaUFITmdJSUlBNGdBU0ljTmdJRUlBNGdHVFlDQUNBT1FnQTNBalFnRGtJQU53TklJQTVDQURjQ1hDQU9RZ0EzQTVBQklBNUNBRGNER0NBT1FnQTNBeUFnRGtJQU53TW9JQTVCZ0lDQS9BTTJBakFnRGtJQU53SThJQTVCZ0lDQS9BTTJBa1FnRGtJQU53TlFJQTVCZ0lDQS9BTTJBbGdnRGtJQU53SmtJQTVCZ0lDQS9BTTJBbXdnRGtFQU5nS1lBU0FPUVFBMkFvZ0JJQTVDQURjRGdBRWdEa0lBTndONElBNUNBRGNEY0NBT1FnQTNBNkFCSUE1Q0FEY0RxQUVnRGtJQU53T3dBU0FPUW9DQWdJQ0FnSURBUHpjRHVBRWdEa0lBTndQQUFTQU9RZ0EzQThnQklBNUNBRGNEMEFFZ0RrSGtBV29pQVVJQU53SUFJQTVDZ0lDQWdJQ0FnTUEvTndQWUFTQU9RZ0EzQXV3QklBNGdBVFlDNEFFZ0RrSUFOd0wwQVNBT1FZQ0FnUHdETmdMOEFTQU9RZ0EzQW93Q0lBNUNBRGNDaEFJZ0RrSUFOd09ZQWlBT1FZQ0FnUHdETmdLVUFpQU9RZ0EzQTZBQ0lBNUNBRGNDckFJZ0RrR0FnSUQ4QXpZQ3FBSWdEa0lBTndLMEFpQU9RZ0EzQThBQ0lBNUJnSUNBL0FNMkFyd0NJQTVDQURjRHlBSWdEa0lBTndMVUFpQU9RWUNBZ1B3RE5nTFFBaUFPUWdBM0F0d0NJQTVCZ0lDQS9BTTJBdVFDSUE1QjdBSnFJZ0ZDQURjQ0FDQU9RZmdDYWlJRlFnQTNBd0FnRGlBQk5nTG9BaUFPSUFVMkF2UUNJQTRnR1NnQ0FEWUNnQU1nRGlBWktBSUlOZ0tFQXlBT0lCa29BZ1EyQW9nRElCa29BZ3doQVNBT1FnQTNBN0FESUE1Qy8vLy8vL2YvLy8vL0FEY0RrQU1nRGlBQk5nS01BeUFPUWdBM0E3Z0RJQTVDQURjRG1BTWdEa0lBTndPZ0F5QU9RZ0EzQWFZRElBNUNBRGNDeEFNZ0RrR0FnSUQ4QXpZQ3dBTWdEa0lBTndMTUF5QU9RZ0EzQTlnRElBNUJnSUNBL0FNMkF0UURJQTVDQURjRDRBTWdEa0lBTndMc0F5QU9RWUNBZ1B3RE5nTG9BeUFPUWdBM0F2UURJQTVCZ0lDQS9BTTJBdndESUE1QkFEWUNtQVFnRGtJQU53T1FCQ0FPUWdBM0E0Z0VJQTVDQURjRGdBUWdEa0lBTndPZ0JDQU9RWUNBZ1B3RE5nS2NCQ0FPUWdBM0E2Z0VJQTVCZ0lDQS9BTTJBckFFSUE1Q0FEY0N0QVFnRGtJQU53SzhCQ0FPUVlDQWdQd0ROZ0xFQkNBT1FnQTNBOGdFSUE1Q0FEY0QwQVFnRGtHQWdJRDhBellDMkFRZ0RrSUFOd0xjQkNBT1FnQTNBdVFFSUE1QkFEWUNpQVVnRGtFQU5nS1FCU0FPUVFFMkFwUUZJQTVDZ0lDQS9BTTNBdXdFSUJ3RVFDQVpLQUlBSWdFUVIwVWdBVUVCUm5KRkJFQWdEa0VCT2dDbkF3c2dEZ0ovSUFGQkYwMEVRRUVBUVFFZ0FYUkJnb0NRQlhFTkFSb0xRUUVMT2dDdEF5QUVCRUFnQXlBWkVNc0tJUUVnQTBHSWxTQTJBaWdnQXlBRFFTaHFJZ1UyQWpnZ0JTQUJRUkJxSWdZUXJBSWdCUkFXSUFFZ0RpQUhJQVJCK1JaQitoWkJBQkMwQnhvZ0RpZ0NHQ0VGSXdCQklHc2lDaVFBQWtBQ1FDQUZJQTVCb0FGcUlnRW9BZ2dnQVNnQ0FDSUlhMEhNQUcxTEJFQWdCVUhZb2ZrYVR3MEJJQUVnQ2tFSWFpQUZJQUVvQWdRZ0NHdEJ6QUJ0SUFGQkNHb1F5eFVpQVJES0ZTQUJFTWtWQ3lBS1FTQnFKQUFNQVFzUUFRQUxJQTRvQWh3aEJTTUFRU0JySWdva0FBSkFBa0FnQlNBT1FmUUFhaUlCS0FJSUlBRW9BZ0FpQ0d0QnhBTnRTd1JBSUFWQnZmdkRCRThOQVNBQklBcEJDR29nQlNBQktBSUVJQWhyUWNRRGJTQUJRUWhxRU1nVklnRVF4eFVnQVJER0ZRc2dDa0VnYWlRQURBRUxFQUVBQ3lBR0VCWUxJQTRvQWhSQmdJZ0VUd1JBSUE1QmdZS0VDRFlBcVFNTElBTVFpQmNnRGtINEJHb2lBU0FERUlnSklBTVFGaUFPS0FJRUxRQXRCRUFnRGlBT1FRaHFJQTVCREdvUWpCY2hCU0FEUVFBMkFnQWdEa0h3QkdvZ0JSQ09EaUFERU1nS0lBTWdEaWdDOEFRMkFnUWdBMEdzc2hNMkFnQWdBeUFETmdJUUlBRWdBeENJQ1NBREVCWUxJQU5CUUdza0FDQU9EQUVMUWNPMENVSDRxd0pCckFGQnkvc0FFQUFBQ3lFRkl3QkJrQVZySWhJa0FFRUlFQlVpQVNBRU5nSUVJQUVnQnpZQ0FDQVNJQUUyQXZBQkFrQWdBU0FTUWV3QmFoRDZGZ1JBSUJKQkFEWUM2QUVnRWtJQU53UGdBU0FTUWNBQ2FrSGMrQXdRRkNFRElCSWdFaWdDNkFFMkFsZ2dFaUFTS1FQZ0FUY0RVQ0FTUWRBRGFpQVNRZEFBYWlBQ1FSQnFJQU5CZkJEU0JTSUNRY1BNQnhBT0dpQUNLQUs4QVNFQklBSVFFU0FERUE4YURBRUxJQUVnRWlnQzdBRWdFa0hJQVdvUW14Y0VRQ0FTUVFBMkFzQUJJQkpDQURjRHVBRWdFa0hBQW1wQjNQZ01FQlFoQXlBU0lCSW9Bc0FCTmdKSUlCSWdFaWtEdUFFM0EwQWdFa0hRQTJvZ0VrRkFheUFDUVJCcUlBTkJmQkRTQlNJQ1FlZkxCeEFPR2lBQ0tBSzhBU0VCSUFJUUVTQURFQThhREFFTElCSW9Bc3dCSUFJb0FnQVFodzVMQkVBZ0VrRUFOZ0t3QVNBU1FnQTNBNmdCSUJKQndBSnFRZHo0REJBVUlRUWdFaUFTS0FLd0FUWUNFQ0FTSUJJcEE2Z0JOd01JSUJKQjBBTnFJQkpCQ0dvZ0FrRVFhaUFFUVhBUTBnVWlBMEdIaWdvUURob2dBeUFTTFFET0FSQWhHaUFEUWZ5WENCQU9HaUFESUJJdEFNMEJFQ0VhSUFOQm9zd0pFQTRhSUFNQ2YwR3pqQWNoQVFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBSW9BZ0FPR3hzQUFRWUlDZ3NNRFE0UEFnTUVCUWNKRUJFU0V4UVZGaGNZR1JvTFFmR21DQXdiQzBHRGhnY01HZ3RCaHFFSURCa0xRZDZpQ0F3WUMwSHdvUWdNRnd0QjBLTUlEQllMUWJ1aENBd1ZDMEdYb3dnTUZBdEIwYUFJREJNTFFhV2lDQXdTQzBISnBnZ01FUXRCMGFVSURCQUxRWUdsQ0F3UEMwR3hwQWdNRGd0QmlhUUlEQTBMUVppQkJ3d01DMEh5OWdZTUN3dEJvYVlJREFvTFFiZTJDVUhQbHdKQndRQkJ5TU1DRUFBQUMwSC84d1lNQ0F0QithVUlEQWNMUWIveEJnd0dDMEdwcFFnTUJRdEJtUEVHREFRTFFkbWtDQXdEQzBHS3RnbEJ6NWNDUWRBQVFjakRBaEFBQUF0QjNQZ01JUUVMSUFFTEVBNGFJQU5CL0pjSUVBNGFJQU1vQXJ3QklRRWdBeEFSSUFRUUR4b01BUXNnRWlnQzFBRWdCU2dDQkNnQ0lFc0VRQ0FTUVFBMkFxQUJJQkpDQURjRG1BRWdFa0hBQW1wQjNQZ01FQlFoQXlBU0lCSW9BcUFCTmdJZ0lCSWdFaWtEbUFFM0F4Z2dFa0hRQTJvZ0VrRVlhaUFDUVJCcUlBTkJmQkRTQlNJQ1FhM0tDaEFPR2lBQ0lBVW9BZ1JCSUdvUXN3Y2lBVUg4bHdnUURob2dBU2dDdkFFaEFTQUNFQkVnQXhBUEdnd0JDeUFTUWZBQWFpQUNFTXNLSVFFZ0VrRzg4QjgyQXRBRElCSWdFa0hRQTJvaUF6WUM0QU1nQXlBQlFSQnFJaU1RckFJZ0F4QVdJQUVnQlNBSElBUkJBRUd2RUVFQUVMUUhHaUFDSUFVZ0J5QUVRUUJCc0JCQkFCQzBCeUlCUlFSQUlCSkJBRFlDYUNBU1FnQTNBMkFnQlNnQ3BBRWhFeUFTUWN3Q2FpRVZJQVVvQXFBQklRcEJBQ0VEQTBBQ1FBSkFJQW9nRTBjRVFDQVNJQW8yQXZnQklBb3ZBUjRpQVVFUFJ3MEJJQXBCQVJBYklRUWdFaWdDK0FGQkFCQWJJUkFnRWtHd0Ftb2lBU0FTS0FMNEFVRUNFTVVGSUJKQndBSnFJZ1lRVlNBR1FRQTJBaFFnQmtJQU53SU1JQVlnQVJEZ0FpQVNRUUEyQXFBQ0lCSkNBRGNEbUFKQkF5RUJBMEFnRWlnQytBRWlBaWdDRUNBQ0tBSU1JZ2RyUVFSMUlBRk5CRUFqQUVFUWF5SUpKQUFnQ1NBUU5nSUlJQWtnQkRZQ0RDQUZRY0FCYWlBSlFReHFJZzhRM2dKQkFDRUVJd0JCSUdzaURTUUFJQTBnRHpZQ0VDQU5RUkJxSVJZakFFRVFheUlCSkFBZ0NTZ0NEQ0VDSUEwQ2Z3SkFJQVZCeEFOcUlnZ29BZ1FpQjBVTkFDQUlLQUlBQW44Z0IwRUJheUFDY1NBSGFTSU1RUUZORFFBYUlBSWdBaUFIU1EwQUdpQUNJQWR3Q3lJRVFRSjBhaWdDQUNJVVJRMEFJQWRCQVdzaEZ5QU1RUUZMSVJzRFFDQVVLQUlBSWhSRkRRRWdBaUFVS0FJRUlneEhCRUFDUUNBYlJRUkFJQXdnRjNFaERBd0JDeUFISUF4TERRQWdEQ0FIY0NFTUN5QUVJQXhIRFFJTElCUW9BZ2dnQWtjTkFBdEJBQXdCQ3lBQklBZ2dBaUFXRVBVV0FrQkJBQ0FISUFnb0FneEJBV3F6SWkwZ0NDb0NFQ0l1SUFlemxGNGJEUUFnQ0NBSElBZEJBV3R4UVFCSElBZEJBMGx5SUFkQkFYUnlJZ1FDZnlBdElDNlZqU0l0UXdBQWdFOWRJQzFEQUFBQUFHQnhCRUFnTGFrTUFRdEJBQXNpQnlBRUlBZExHeEREQVNBSUtBSUVJZ2NnQjBFQmEzRkZCRUFnQjBFQmF5QUNjU0VFREFFTElBSWdCMGtFUUNBQ0lRUU1BUXNnQWlBSGNDRUVDd0pBSUFSQkFuUWlCQ0FJS0FJQWFpZ0NBQ0lDUlFSQUlBRW9BZ0FnQ0NnQ0NEWUNBQ0FJSUFFb0FnQTJBZ2dnQ0NnQ0FDQUVhaUFJUVFocU5nSUFJQUVvQWdBaUFpZ0NBQ0lFUlEwQklBUW9BZ1FoRkFKQUlBY2dCMEVCYXlJRWNVVUVRQ0FFSUJSeElSUU1BUXNnQnlBVVN3MEFJQlFnQjNBaEZBc2dDQ2dDQUNBVVFRSjBhaUFDTmdJQURBRUxJQUVvQWdBZ0FpZ0NBRFlDQUNBQ0lBRW9BZ0EyQWdBTElBRW9BZ0FoRkNBQlFRQTJBZ0FnQ0NBSUtBSU1RUUZxTmdJTUlBRW9BZ0FoQWlBQlFRQTJBZ0FnQWdSQUlBRXRBQWdFUUNBQ1FReHFFSU1PQ3lBQ0JFQWdBaEFmQ3d0QkFRczZBQndnRFNBVU5nSVlJQUZCRUdva0FDQU5LQUlZSVFFZ0RVRWdhaVFBSUFrZ0FVRU1haUFKUVFocUVOVUZRUUFoQWlNQVFTQnJJZzBrQUNBTklBODJBaEFnRFVFUWFpRVBJd0JCRUdzaUFTUUFJQWtvQWd3aEJDQU5BbjhDUUNBRlFjd0JhaUlJS0FJRUlnZEZEUUFnQ0NnQ0FBSi9JQWRCQVdzZ0JIRWdCMmtpREVFQlRRMEFHaUFFSUFRZ0Iwa05BQm9nQkNBSGNBc2lBa0VDZEdvb0FnQWlGRVVOQUNBSFFRRnJJUllnREVFQlN5RVhBMEFnRkNnQ0FDSVVSUTBCSUFRZ0ZDZ0NCQ0lNUndSQUFrQWdGMFVFUUNBTUlCWnhJUXdNQVFzZ0J5QU1TdzBBSUF3Z0IzQWhEQXNnQWlBTVJ3MENDeUFVS0FJSUlBUkhEUUFMUVFBTUFRc2dBU0FJSUFRZ0R4RDBDQUpBUVFBZ0J5QUlLQUlNUVFGcXN5SXRJQWdxQWhBaUxpQUhzNVJlR3cwQUlBZ2dCeUFIUVFGcmNVRUFSeUFIUVFOSmNpQUhRUUYwY2lJQ0FuOGdMU0F1bFkwaUxVTUFBSUJQWFNBdFF3QUFBQUJnY1FSQUlDMnBEQUVMUVFBTElnY2dBaUFIU3hzUXd3RWdDQ2dDQkNJSElBZEJBV3R4UlFSQUlBZEJBV3NnQkhFaEFnd0JDeUFFSUFkSkJFQWdCQ0VDREFFTElBUWdCM0FoQWdzQ1FDQUNRUUowSWdRZ0NDZ0NBR29vQWdBaUFrVUVRQ0FCS0FJQUlBZ29BZ2cyQWdBZ0NDQUJLQUlBTmdJSUlBZ29BZ0FnQkdvZ0NFRUlhallDQUNBQktBSUFJZ0lvQWdBaUJFVU5BU0FFS0FJRUlSUUNRQ0FISUFkQkFXc2lCSEZGQkVBZ0JDQVVjU0VVREFFTElBY2dGRXNOQUNBVUlBZHdJUlFMSUFnb0FnQWdGRUVDZEdvZ0FqWUNBQXdCQ3lBQktBSUFJQUlvQWdBMkFnQWdBaUFCS0FJQU5nSUFDeUFCS0FJQUlSUWdBVUVBTmdJQUlBZ2dDQ2dDREVFQmFqWUNEQ0FCS0FJQUlRSWdBVUVBTmdJQUlBSUVRQ0FCTFFBSUJFQWdBa0VNYWhEMEZnc2dBZ1JBSUFJUUh3c0xRUUVMT2dBY0lBMGdGRFlDR0NBQlFSQnFKQUFnRFNnQ0dDRUJJQTFCSUdva0FBSkFJQUZCREdvaUFpZ0NCQ0FDS0FJSVNRUkFJQUlnQWlnQ0JDQUdFUE1XUVJocU5nSUVEQUVMSXdCQklHc2lDQ1FBSUFoQkNHb2hBU0FDS0FJRUlBSW9BZ0JyUVJodFFRRnFJZ1JCcTlXcTFRQlBCRUFRQVFBTFFhclZxdFVBSUFJb0FnZ2dBaWdDQUd0QkdHMGlCMEVCZENJTUlBUWdCQ0FNU1JzZ0IwSFZxdFVxVHhzaEJDQUNLQUlFSUFJb0FnQnJRUmh0SVF4QkFDRUhJQUZCQURZQ0RDQUJJQUpCQ0dvMkFoQWdCQVJBSUFSQnE5V3ExUUJQQkVBUSt3RUFDeUFFUVJoc0VCVWhCd3NnQVNBSE5nSUFJQUVnQnlBTVFSaHNhaUlNTmdJSUlBRWdCeUFFUVJoc2FqWUNEQ0FCSUF3MkFnUWdBU2dDQ0NBR0VQTVdHaUFCSUFFb0FnaEJHR28yQWdnZ0FpZ0NBQ0VNSUFJb0FnUWhCQU5BSUFRZ0RFY0VRQ0FCS0FJRVFSaHJJZ2NnQkVFWWF5SUVLUUlBTndJQUlBY2dCQ2dDQ0RZQ0NDQUVFRlVnQjBFTWFpQUVRUXhxRUtVQ0dpQUJJQUVvQWdSQkdHczJBZ1FNQVFzTElBSW9BZ0FoQkNBQ0lBRW9BZ1EyQWdBZ0FTQUVOZ0lFSUFJb0FnUWhCQ0FDSUFFb0FnZzJBZ1FnQVNBRU5nSUlJQUlvQWdnaEJDQUNJQUVvQWd3MkFnZ2dBU0FFTmdJTUlBRWdBU2dDQkRZQ0FDQUJLQUlFSVFRRFFDQUVJQUVvQWdnaUIwY0VRQ0FCSUFkQkdHc2lCellDQ0NBSEVJUU9HZ3dCQ3dzZ0FTZ0NBQ0lCQkVBZ0FSQWZDeUFJUVNCcUpBQUxJQUlvQWdRYUlBbEJFR29rQUFKL0FrQWdFaWdDWkNJRUlCSW9BbUFpQVVZTkFBTkFJQUVnQkVZTkFTQUJLQUlBSWdKQkFCQWJJUWNnRWtHSUFtb2lDQ0FDUVFJUXhRVWdFa0d3QW1vZ0NCRHlBeUFISUJCR2NTSUhCRUFnRWtIUUEyb2lBaUFGUVhJZ0VpZ0MrQUVRRUNBQ1FiLzdCeEFPR2lBU0tBS01CU0VESUFJUUVRc2dBVUVFYWlFQklCSkJpQUpxRUE4YUlBZEZEUUFMUVFBTUFRc2dFU0FRUVg1eFFmUXBSbkloRVNBTElCQkJreWxyUVFKSmNpRUxJQkpCNEFCcUlCSkIrQUZxRU04QlFRRUxJUUVnRWtHWUFtb1FNaG9nQmhDRURob2dFa0d3QW1vUUR4b2dBVVVFUUNBRElRRU1CUXNnRWlnQytBRXZBUjRoQVF3REJTQVNJQUlvQWdBZ0J5QUJRUVIwYWk4QkFFRUNkR29vQWdBMkF0QURJQlVnRWtIUUEyb1Ezd0lnQVVFQmFpRUJEQUVMQUFzQUN3SkFJQVVvQXBBRFFmLy8vLzhIUndSQUlBVW9BcFFEUWYvLy8vOEhSdzBCQ3lBU1FkQURhaUlESUFWQmRFRUFFQkFnQTBHOTB3Y1FEaG9nRWlnQ2pBVWhBU0FERUJFTUFnc2dCUzBBb0FNRVFDQVNRZEFEYWlJRElBVkJkRUVBRUJBZ0EwR1k5d2NRRGhvZ0VpZ0NqQVVoQVNBREVCRU1BZ3NDUUNBRlFZQUJha0dPS2hCb1JRMEFJQVVvQXB3RERRQWdFa0hRQTJvaUF5QUZRWFJCQUJBUUlBTkJsZFFIRUE0YUlCSW9Bb3dGSVFFZ0F4QVJEQUlMSUFzZ0VYRkJBWEVFUUNBU1FkQURhaUlESUFWQmRFRUFFQkFnRWtIQUFtb2lBaUFGUWI0M0VEY2dBeUFDRUJJYUlBTkI4T1VIRUE0YUlCSW9Bb3dGSVFFZ0FoQVBHaUFERUJFTUFnc2dCU2dDTEFSQUlCSkJ3QUpxRUlnRElRUWdCU2dDS0NFQlFRQWhDaUFTUWJBQ2FpSUlJZ0pCQURZQ0NDQUNRZ0EzQWdBZ0FTRURBMEFnQXdSQUlBcEJBV29oQ2lBREtBSUFJUU1NQVFzTElBb0VRQ0FDSUFvUXp3VWdBaWdDQkNFREEwQWdBUVJBSUFNZ0FTZ0NDRFlDQUNBRFFRUnFJUU1nQVNnQ0FDRUJEQUVMQ3lBQ0lBTTJBZ1FMSUJJZ0JUWUNvQUlnRWlBRk5nSXdJQkpCOS9BTU5nS3NBaUFTSUFSQkNHbzJBcWdDSUJKQkFEWUNuQUlnRWtHeEVEWUNtQUlnRWlBU0tRT29BamNET0NBU0lCSXBBNWdDTndNb0lCSkIwQU5xSVFNZ0VpZ0NzQUloQVNBU0tBSzBBaUVKSUJKQktHb2hCeU1BUVJCcklnSWtBQU5BSUFFZ0NVY0VRQ01BUVJCcklnb2tBQ0FLSUFFMkFnZ2dCeWdDQUNFR0lBSWdCeWdDQ0NBSEtBSUVJZ3RCQVhWcUlnd2dDaWdDQ0NnQ0FDQUxRUUZ4Qkg4Z0RDZ0NBQ0FHYWlnQ0FBVWdCZ3NSQlFBZ0NrRVFhaVFBSUJJb0FqZ2dBaEFTR2lBU0tBSThJZ29FUUNBU0tBSTRJQW9RRGhvTElBRkJCR29oQVNBQ0VBOGFEQUVMQ3lBRElCSXBBamczQWdBZ0FrRVFhaVFBSUJKQmlBSnFJZ0lnQkVFTWFoQkNJQU1nQlVGMlFRQVFFQ0FEUWZmMURCQU9HaUFTUWZnQmFpSUhJQUpCQUNBU0tBS01BaUFTTEFDVEFpSUJRZjhCY1NBQlFRQklHMEVCYXhEdkNpQURJQWNRRWhvZ0VpZ0NqQVVoQVNBSEVBOGFJQU1RRVNBQ0VBOGFJQWdRTWhvZ0JCQzdBaG9nQVEwQ0N5TUFRU0JySWdNa0FDQUZFS1lLSWdFb0FnUWhCQ0FCS0FJQUlRRURRQUpBSUFFZ0JFWUVRQ0FGRUtZS0lnRW9BZ1FoQkNBQktBSUFJUUVNQVFzZ0EwRUFOZ0lZSUFOQ0FEY0RFQ0FESUFFUXFBb2lBallDRENBQ0JFQWdBMEVRYWlBRFFReHFFTThCQ3dOQUlBTW9BaFFpQWlBREtBSVFSd1JBSUFKQkJHc2lCeWdDQUNFQ0lBTWdCellDRkNBQ0xRQXNEUUVnQWtFQk9nQXNJQUlvQWlBaEJ5QUNLQUljSVFvRFFDQUhJQXBHRFFJZ0F5QUtLQUlBTmdJSUlBcEJCR29oQ2lBRFFSQnFJQU5CQ0dvUXp3RU1BQXNBQ3dzZ0FVSEVBMm9oQVNBRFFSQnFFRElhREFFTEN3TkFBa0FDUUNBQklBUkhCRUFnQTBFQU5nSVlJQU5DQURjREVDQURJQUVRcUFvaUFqWUNEQ0FDQkVBZ0EwRVFhaUFEUVF4cUVNOEJDd05BSUFNb0FoUWlBaUFES0FJUVJnMENJQUpCQkdzaUJ5Z0NBQ0VDSUFNZ0J6WUNGQ0FDTFFBdERRQWdBa0VCT2dBdElBSW9Ba2doQnlBQ0tBSkVJUW9EUUNBSElBcEdEUUVnQXlBS0tBSUFOZ0lJSUFwQkJHb2hDaUFEUVJCcUlBTkJDR29RendFTUFBc0FDd0FMSUFOQklHb2tBQXdCQ3lBQlFjUURhaUVCSUFOQkVHb1FNaG9NQVFzTFFRQWhDa0VBSVFNQ1FBTkFBa0FnQlNnQ3BBRWdCU2dDb0FFaUFXdEJ6QUJ0SUFOTkJFQURRQ0FGS0FLa0FTQUZLQUtnQVNJRGEwSE1BRzBnQ2tzRVFDTUFRZkFCYXlJQkpBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBTWdDa0hNQUd4cUlnZ3ZBUjRpQTBFQlJnUi9Ba0FDUUNBRklBZ29BaVFRblFjRVFDQUJRVEJxSWdjZ0JVRjJJQWdRRUNBSFFkV1NCQkFPR2d3QkN5QUZMUUNBQVVFQ2NVVU5BU0FGSUFnb0FpUVE4UUpGRFFFZ0JTQUlLQUlrRUlFRkRRRWdBVUV3YWlJSElBVkJkaUFJRUJBZ0IwSDdzd0VRRGhvTElBRW9BdXdCSVFJZ0J4QVJJQUlOQ1FzZ0NDOEJIZ1VnQXd0Qi8vOERjU0lEUWZRcGEwRUNUd1JBQWtBZ0EwR0VLbXNPQWdJREFBc2dBMEgrSzJzT0FnTUVCUXNnQlNBSUtBSTRLQUlBRUo4QlFRUWdBVUV3YWtHNmd3TVFGQ0lERU1jRUlBTVFEeG9nQlNBSUtBSTRLQUlBRUo4QklRSWdBVUhnalNBMkFnZ2dBU0FCUVFocUlnTTJBaGdnQWtHc0Eyb2dBeEROQVNBREVCWU1CZ3NnQlNBSUtBSTRLQUlBRUo4QlFRUWdBVUV3YWtINmdnTVFGQ0lERU1jRUlBTVFEeG9NQlFzZ0NDZ0NKQ0VESUFVZ0NDZ0NPQ2dDQUJDZkFVRUVJQUZCTUdwQndJSURFQlFpQWhESEJDQUNFQThhSUFVZ0F4Qy9BZzBFSUFGQk1Hb2lBeUFGUVhJZ0NCQVFJQU5CNXB3TUVBNGFJQU1nQ0M4QkhoQXBFQTRhSUFFb0F1d0JJUUlnQXhBUkRBVUxJQVVnQ0VFQUVDWWlBd1JBSUFVZ0F4Qy9BZzBFQ3lBQlFUQnFJZ2NnQlVGMklBZ1FFQ0FIUWF5T0FoQU9HaUFCS0FMc0FTRUNEQUlMQWtBZ0JTQUlLQUlrSWdNUXV4VU5BQ0FGSUFNUXh3RU5BQ0FCUVRCcUlnY2dCVUYySUFnUUVDQUhRZEdKQkJBT0dpQUJLQUxzQVNFQ0RBSUxJQVVnQ0VFQ0VDWWdBMGNFUUNBQlFUQnFJZ2NnQlVGMklBZ1FFQ0FIUWVDNUNoQU9HaUFCS0FMc0FTRUNEQUlMSUFVZ0NFRURFQ1lnQTBZTkFpQUJRVEJxSWdjZ0JVRjJJQWdRRUNBSFFaTzVDaEFPR2lBQktBTHNBU0VDREFFTElBTkJ3Q2RIRFFFZ0JTQUlJQWhCQWhBYklnTVF5ZzBpQWcwQ0lBRkJNR29nQlNBREVOMEJBa0FnQVMwQU1VVU5BQ0FCS0FJMElnTkJBMFlnQTBFQlJuSU5BQ0FCUVRCcUlnY2dCVUZ5SUFnUUVDQUJRU0JxSWdNZ0JVR3NKQkEzSUFjZ0F4QVNHaUFIUWVyWEJCQU9HaUFCS0FMc0FTRUNJQU1RRHhvTUFRc2dCU0FJS0FJa0VMb1ZEUUVnQVVFd2FpSUhJQVZCY2lBSUVCQWdCMEh5OFFFUURob2dBU2dDN0FFaEFnc2dCeEFSSUFJTkFRdEJBQ0VDQ3lBQlFmQUJhaVFBSUFJaUFRMEhJd0JCNEFGcklnRWtBQUpBQWtBQ1FBSkFBa0FnQ0M4QkhrRUdhdzREQUFNQkF3c0NRQ0FGSUFoQkFCQWJJZ1FRSUNJREJFQWdBeThCSGtFZVJnMEJDeUFCUVNCcUlnSWdCVUYySUFnUUVDQUNRYzNZQ3hBT0dpQUJRUkJxSWdZZ0JTQUVFQ29nQWlBR0VCSWFJQUpCeU80SEVBNGFJQUVvQXR3QklRUU1BZ3NnQ0VFQkVCc2lCQ0FES0FJRUlBTW9BZ0JyUVFKMVFRSnJTUTBDSUFGQklHb2lBaUFGUVhZZ0NCQVFJQUpCcjhnTEVBNGFJQUZCRUdvaUJpQUZJQVFRS2lBQ0lBWVFFaG9nQWtHczJBc1FEaG9nQVNBRklBTW9BaWdRS2lBQ0lBRVFFaG9nQWtIMm1BY1FEaG9nQVNnQzNBRWhCQ0FCRUE4YURBRUxJQVVnQ0VFQUVCc2lBeEFnSWdJRVFDQUNMd0VlUVFkR0RRSUxJQUZCSUdvaUFpQUZRWFlnQ0JBUUlBSkI3c1FMRUE0YUlBRkJFR29pQmlBRklBTVFLaUFDSUFZUUVob2dBa0c1NkFjUURob2dBU2dDM0FFaEJBc2dCaEFQR2lBQ0VCRWdCQTBCQzBFQUlRUUxJQUZCNEFGcUpBQWdCQ0lCRFFjakFFSHdBV3NpQ3lRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUlJZ012QVI0aUJFSEhBR3NPQlFBQ0F3VUVBUXNnQTBFQkVCc2hBU0FGSUFOQkFCQWJFQ0FpQWtVRVFDQUxRVEJxSWdFZ0JVRjJJQU1RRUNBQlFhejNCQkFPR2lBTEtBTHNBU0VHSUFFUUVRd0tDeUFGS0FJQUtBSUFFRWRGSUFGQmZuRkJDRWR5UlFSQUlBdEJNR29pQWlBRlFYWWdBeEFRSUF0QklHb2lCQ0FGUWIwa0VEY2dBaUFFRUJJYUlBSkJwbzBKRUE0YUlBdEJFR29pQnlBRklBRVF2d01nQWlBSEVCSWFJQUpCdlpzSEVBNGFJQXNvQXV3QklRWWdCeEFQR2lBRUVBOGFJQUlRRVF3S0N5QUJFTzRXQkVBZ0MwRXdhaUlCSUFWQmRpQURFQkFnQVVHbWd3VVFEaG9nQ3lnQzdBRWhCaUFCRUJFTUNnc2dBaThCSGlJRVFja0FSZzBLUVFFZ0FYUkJzQUZ4UlNBQlFRZExja1VFUUNBTFFUQnFJZ0lnQlVGMklBTVFFQ0FMUVNCcUlnUWdCU0FCRUw4RElBSWdCQkFTR2lBQ1FmR1pBUkFPR2lBTEtBTHNBU0VHSUFRUUR4b2dBaEFSREFvTElBc2dBallDTENBTElBTTJBaWdnQ3lBRk5nSWdJQXNnQVRZQ0pBSkFBa0FDUUFKQUFrQUNRQ0FCUVFGckRpc0FBUUVNREFJTUFRRUJBd3dMQ3dzTEN3UUxDd3NFQ3dzTERBd01Dd1FMQkFRRURBc0xEQXdNREF3RUJRc2dCRUV3YTBFRFNRMExJQXRCTUdvaUFTQUxRU0JxUVFBUXZnTWdBVUh0MUFBUURob2dDeWdDN0FFaEJpQUJFQkVNRGdzZ0JFRWVSZzBLSUF0Qk1Hb2lBU0FMUVNCcVFRQVF2Z01nQVVITGpnUVFEaG9nQ3lnQzdBRWhCaUFCRUJFTURRc2dCRUVjYXlJRVFRUk5RUUJCQVNBRWRFRVRjUnNOQ1NBTFFUQnFJZ0VnQzBFZ2FrRUFFTDRESUFGQnRmOERFQTRhSUFzb0F1d0JJUVlnQVJBUkRBd0xBa0FnQkVFN1JnMEFJQVFRb3dJTkFDQUxRVEJxSWdFZ0JVRnlJQU1RRUNBQlFmeUhBUkFPR2lBTEtBTHNBU0VHSUFFUUVRd01Dd0pBSUFVdEFJQUJRUUp4UlEwQUlBTkJBaEFiUVJsSERRQWdBaThCSGhDakFnMEpJQXRCTUdvaUFTQUxRU0JxUVFBUXZnTWdBVUgveHdNUURob2dDeWdDN0FFaEJpQUJFQkVNREFzZ0FpOEJIa0U3UmcwSUlBdEJNR29pQVNBTFFTQnFRUUFRdmdNZ0FVR1d1d1FRRGhvZ0N5Z0M3QUVoQmlBQkVCRU1Dd3NnQkVFN1JnMEhJQXRCTUdvaUFTQUxRU0JxUVFBUXZnTWdBVUdXdXdRUURob2dDeWdDN0FFaEJpQUJFQkVNQ2dzZ0FVSHJLV3RCQWtrTkJRd0dDeUFFUWN3Q1J3MEtJQU5CQVJBYkVPNFdEUWtnQzBFd2FpSUJJQVZCZGlBREVCQWdBVUhwZ3dVUURob2dDeWdDN0FFaEJpQUJFQkVNQ0FzQ1FDQUZJQU5CQUJBYklnSVFJQ0lCQkVBZ0FTOEJIa0VlUmcwQkN5QUxRVEJxSWdFZ0JVRjJJQU1RRUNBQlFjalBDeEFPR2lBTFFTQnFJZ1FnQlNBQ0VDb2dBU0FFRUJJYUlBRkJ5TzRIRUE0YUlBc29BdXdCSVFZZ0JCQVBHaUFCRUJFTUNBc2dBMEVCRUJzaEJDQUVJQUVvQWdRZ0FTZ0NBR3RCQW5VaUIwRUNheUlHVHdSQUlBdEJNR29pQVNBRlFYWWdBeEFRSUFGQnI4UUpFQTRhSUFFZ0JCQWhHaUFCUWJiRkN4QU9HaUFMUVNCcUlnUWdCU0FDRUNvZ0FTQUVFQklhSUFGQmhPUUpFQTRhSUFFZ0JoQWhHaUFCUWNuYkNSQU9HaUFCSUFkQkEyc1FJUm9nQVVIOGx3Z1FEaG9nQ3lnQzdBRWhCaUFFRUE4YUlBRVFFUXdJQ3dKQUFrQWdBMEVDRUJzaUFVRUJhdzR2QVFFQkNnb0JDZ0VCQVFvS0Nnb0tDZ29LQ2dFS0FRb0tDZ0VCQVFvS0NnRUJBUW9LQ2dFQkFRRUJBUUVCQVFFQUN5QUJRZlVpYTBFQ1NTQUJRZXNwYTBFQ1NYSWdBVUdDTEVaeURRQWdBVUcwS1VjTkNRc2dDMEV3YWlJQ0lBVkJkaUFERUJBZ0MwRWdhaUlFSUFVZ0FSQy9BeUFDSUFRUUVob2dBa0dibWdFUURob2dDeWdDN0FFaEJpQUVFQThhSUFJUUVRd0hDeUFGSUFOQkFCQWJFQ0FpQVNnQ1FDRUVJQUVvQWtRaEFnTkFJQUlnQkVZTkNBSkFJQVFvQWdBaUJ5OEJIaUlCUWNjQWF5SUdRUVJOUVFCQkFTQUdkRUVaY1JzZ0FVRUZSaUFCUWN3Q1JuSnlSUVJBSUFjUXpRVkZEUUVMSUFSQkNHb2hCQXdCQ3dzZ0MwRXdhaUlCSUFWQmRpQURFQkFnQVVIZXdBa1FEaG9nQVVHTDdBd1FEaG9nQVVHMTN3TVFEaG9nQ3lnQzdBRWhCaUFCRUJFTUJnc0NRQ0FGSUFOQkFCQWJJZ1FRSUNJQlJRMEFJQUV2QVI1QnlRQkhEUUJCQVNFRUEwQWdCRUVCYWlJQklBTW9BaEFnQXlnQ0RHdEJCSFZQRFFnZ0F5QUVFQnNoQWlBRElBRVFHeUVIQWtBZ0JTQUNFQ0FpQVFSQUlBRXZBUjVCSGtZTkFRc2dDMEV3YWlJQklBVkJkaUFERUJBZ0FVR2R6d3NRRGhvZ0MwRWdhaUlFSUFVZ0FoQXFJQUVnQkJBU0dpQUJRY2p1QnhBT0dpQUxLQUxzQVNFR0lBUVFEeG9nQVJBUkRBZ0xJQVJCQW1vaEJDQUhJQUVvQWdRZ0FTZ0NBR3RCQW5VaUJrRUNheUlKU1EwQUN5QUxRVEJxSWdFZ0JVRjJJQU1RRUNBQlFhL0VDUkFPR2lBQklBY1FJUm9nQVVHQ3hRc1FEaG9nQzBFZ2FpSUVJQVVnQWhBcUlBRWdCQkFTR2lBQlFZVGtDUkFPR2lBQklBa1FJUm9nQVVISjJ3a1FEaG9nQVNBR1FRTnJFQ0VhSUFGQi9KY0lFQTRhSUFzb0F1d0JJUVlnQkJBUEdpQUJFQkVNQmdzZ0MwRXdhaUlCSUFWQmRpQURFQkFnQVVISnlBc1FEaG9nQzBFZ2FpSUNJQVVnQkJBcUlBRWdBaEFTR2lBQlFlTE9CeEFPR2lBTEtBTHNBU0VHSUFJUUR4b2dBUkFSREFVTEFrQWdCU0FEUVFBUUd5SUVFQ0FpQVVVTkFDQUJMd0VlUWNrQVJ3MEFRUUVoQkFOQUlBUWdBeWdDRUNBREtBSU1hMEVFZFU4TkJ5QUZJQU1nQkJBYklnY1FJQ0lCQkVBZ0JFRUJhaUVFSUFFdkFSNUJ5UUJIRFFFTEN5QUxRVEJxSWdFZ0JVRjJJQU1RRUNBQlFaM0pDeEFPR2lBTFFTQnFJZ0lnQlNBSEVDb2dBU0FDRUJJYUlBc29BdXdCSVFZZ0FoQVBHaUFCRUJFTUJRc2dDMEV3YWlJQklBVkJkaUFERUJBZ0FVSDJ5QXNRRGhvZ0MwRWdhaUlDSUFVZ0JCQXFJQUVnQWhBU0dpQUJRZUxPQnhBT0dpQUxLQUxzQVNFR0lBSVFEeG9nQVJBUkRBUUxBa0FnQkVFM2F3NEZBQUlDQWdBQ0N5QUZJQUlvQWlRUWNFRWdSZzBBSUF0Qk1Hb2lBU0FMUVNCcVFRQVF2Z01nQVVINy93TVFEaG9nQ3lnQzdBRWhCaUFCRUJFTUF3c2dCU2dDQUNnQ0FCQkhSUTBEUVFJaEJBSkFJQVVnQWlnQ0pCQWdJZ2RGRFFBZ0J5Z0NFQ0FIS0FJTWEwRWhTUTBBSUFkQkFSQWJJUVFMQWtBQ1FBSkFBa0FDUUFKQUFrQWdBVUVOYXc0V0JRVUtCUVVLQ2dvS0Nnb0tDZ29LQ2dvQkFRSURBd0FMSUFGQkswWU5BeUFFUVFGR0lBRkJwU2xIY2cwSklBdEJNR29pQVNBTFFTQnFRZmswRUw0RElBRkJpQ3dRRGhvZ0N5Z0M3QUVoQmlBQkVCRU1DQXNnQkVIUUtXc2lCMEVQVFEwRURBWUxJQVJCQTBZTkJ5QUxRVEJxSWdFZ0MwRWdha0VBRUw0RElBRkJ2WTRCRUE0YUlBc29BdXdCSVFZZ0FSQVJEQVlMQWtBQ1FDQUVEZ01JQVFnQUN5QUVRUXhHRFFjTElBdEJNR29pQVNBTFFTQnFRZHN5RUw0RElBRkI0WTRCRUE0YUlBc29BdXdCSVFZZ0FSQVJEQVVMSUFSRkRRVWdDMEV3YWlJQklBdEJJR3BCbGpRUXZnTWdBVUdwandFUURob2dDeWdDN0FFaEJpQUJFQkVNQkFzZ0JFRjljVUVCUmcwRUlBdEJNR29pQVNBTFFTQnFRYjRrRUw0RElBRkJ0Q3NRRGhvZ0N5Z0M3QUVoQmlBQkVCRU1Bd3RCQVNBSGRFR0RtQU54UlEwQkRBTUxJQXRCTUdvaUFTQUxRU0JxUVFBUXZnTWdBVUdRM1FJUURob2dDeWdDN0FFaEJpQUJFQkVNQVFzQ1FBSkFJQVJCQVdzT0F3TUJBd0FMSUFSQmlTcEdEUUlMSUF0Qk1Hb2lCQ0FGUVhZZ0FoQVFJQXRCRUdvaUFpQUZRWkEwRURjZ0JDQUNFQklhSUFzZ0JTQUJFTDhESUFRZ0N4QVNHaUFFUWRhUEFSQU9HaUFMS0FMc0FTRUdJQXNRRHhvZ0FoQVBHaUFFRUJFTElBWU5BZ3NnQXk4QkhpRUVDMEVBSVFZQ1FBSkFBa0FDUUFKQUlBUkIvLzhEY1NJQlFjY0FhdzRGQVFJRkF3UUFDeUFCUWN3Q1J3MEVDeUFES0FJQUlnRW9BZ2doQWlBQktBSUVJUVFnQzBFQU5nSW9JQXRDQURjRElDQURLQUlFSWdjZ0FXdEJEVThFUUNBTFFTQnFRUUFnQVVFTWFpQUhFTklLQ3lBTElBSTJBakFnQzBFd2FpSUJRUVJ5SUF0QklHb2lBaEN3QVNFSElBdEJmellDUUNBRklBUWdBUkR0RmlBSEVESWFJQUlRTWhvTUF3c2dBeWdDQUNJQktBSU1JUUlnQVNnQ0NDRUVJQUVvQWdRaEJ5QUxRUUEyQWlnZ0MwSUFOd01nSUFNb0FnUWlDU0FCYTBFUlR3UkFJQXRCSUdwQkFDQUJRUkJxSUFrUTBnb0xJQXNnQWpZQ01DQUxRVEJxSWdGQkJISWdDMEVnYWlJQ0VMQUJJUWtnQ3lBRU5nSkFJQVVnQnlBQkVPMFdJQWtRTWhvZ0FoQXlHZ3dDQ3lBRklBTW9BZ0FvQWdRUTNnRWlFMEVFYWlFVVFRSWhCQU5BSUFRZ0F5Z0NCQ0FES0FJQUlnRnJRUUoxVHcwQ0lBRWdCRUVDZEdvb0FnQWhBU0FUS0FJQUlRY2pBRUVRYXlJUEpBQWdEeUFCTmdJTUlBVkI2QUpxSUE5QkRHb1F0d2dpQ1VFRWFpRUJBMEFnQnlBVVJ3UkFJQWRCRUdvaEVTTUFRUkJySWhBa0FDTUFRU0JySWd3a0FDQVFBbjhnREVFY2FpRU5JQXhCR0dvaEFnSkFBa0FDUUNBQklBbEJCR29pRlVjRVFDQVJJQUZCRUdvaUZoRE1CVVVOQVFzZ0FTRUNJQUVnQ1NnQ0FFY0VRQ0FCRU5ZWElnSkJFR29nRVJETUJVVU5BZ3NnQVNnQ0FFVUVRQ0FOSUFFMkFnQWdBUXdFQ3lBTklBSTJBZ0FnQWtFRWFnd0RDeUFXSUJFUXpBVkZEUUVnRlNBQkVKOFhJZ0pIQkVBZ0VTQUNRUkJxRU13RlJRMEJDeUFCS0FJRVJRUkFJQTBnQVRZQ0FDQUJRUVJxREFNTElBMGdBallDQUNBQ0RBSUxJQWtnRFNBUkVPc1dEQUVMSUEwZ0FUWUNBQ0FDSUFFMkFnQWdBZ3NpRFNnQ0FDSUNCSDlCQUFVZ0RFRUlhaUlWSUFrZ0VSRHFGaUFKSUF3b0Fod2dEU0FNS0FJSUVQZ0NJQXdvQWdnaEFpQU1RUUEyQWdnZ0ZSRHBGa0VCQ3pvQURDQVFJQUkyQWdnZ0RFRWdhaVFBSUJBb0FnZ2FJQkJCRUdva0FDQUhFRXdoQnd3QkN3c2dEMEVRYWlRQUlBUkJBV29oQkF3QUN3QUxJQVVnQXlnQ0FDZ0NCQkRlQVNJQ1FRUnFJUWxCQWlFRUEwQWdCRUVCY2lJSElBTW9BZ1FnQXlnQ0FDSUJhMEVDZFU4TkFTQUJJQVJCQW5ScUtBSUFJUXdnQVNBSFFRSjBhaWdDQUNFUklBSW9BZ0FoQnlNQVFTQnJJZ0VrQUNBQklBdzJBaHdnQVVFSWFrRUVjaUVNSUFWQjZBSnFJQUZCSEdvUXR3Z2hEUU5BSUFjZ0NVWUVRQ0FCUVNCcUpBQUZJQUZCQ0dvZ0IwRVFhaEMwQWlFUUlBRWdFVFlDR0NBQklBMGdFQkRzRmlBTUVESWFJQWNRVENFSERBRUxDeUFFUVFKcUlRUU1BQXNBQ3lBTFFmQUJhaVFBSUFZaUFRMEhBbjlCQUNFQkFrQUNRQUpBQWtBZ0F5OEJIa0VLYXc0REFBRUNBd3NqQUVIUUFXc2lBaVFBQWtBZ0JTSUJLQUlVUWYrSEJFMEVRQ0FDUWNBQmFpSUVJQU5CR0dvUWhnNENmd0pBSUFSQjNRQVF4d29RcGdrTkFDQUNRY0FCYWtFUkVNY0tFS1lKRFFBZ0FrSEFBV3BCNlFBUXh3b1FwZ2tOQUVFQkRBRUxJQUlnQVVGd0lBTVFFQ0FDSUFKQndBRnFFQklhSUFKQm9za0hFQTRhSUFJb0Fyd0JJUUVnQWhBUlFRQUxJUVFnQWtIQUFXb1FEeG9nQkVVTkFRdEJBQ0VCQ3lBQ1FkQUJhaVFBSUFFTUF3dEJBQ0VDSXdCQjBBRnJJZ0VrQUFKQUFrQWdCU2dDRkVHQWlnUkxEUUFnQlVHUUFXcEJ5d0FRYUEwQUlBRkJ3QUZxSWdRZ0EwRUJFTVVGSUFRUWxCa2lCRVVFUUNBQklBVkJjaUFERUJBZ0FVSEN6d2NRRGhvZ0FTZ0N2QUVoQWlBQkVCRUxJQUZCd0FGcUVBOGFJQVJGRFFFTFFRQWhBZ3NnQVVIUUFXb2tBQ0FDREFJTEl3QkJrQUpySWdZa0FDQURJZ0VvQWlRaENTQUJLQUlRSVFJZ0FTZ0NJQ0VFSUFFb0Fnd2hCeUFCS0FJQUlnc29BZ3doRENBR0lBc29BaEFpQ3pZQ2pBSWdCaUFFTmdLSUFpQUdJQXcyQW9RQ0lBWWdCVFlDZ0FJZ0FpQUhhMEVFZFNFSEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRVFRRnJEZ0lBQVFJTFFRQWhBZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDdzVURmdBQUFBQUJBQUVBQUFBQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQUFBd1FGQmdBQkFRQUJBUUFCQVFBVkFBQUFCd2tJQ2dvTEN3c01EZzRPRFEwUEVCRVNBQUFBRXdFQkFSUVVGQUFBQUJjZ0N5QUZJQWtRcmdGRkRSZEJCQ0VFUVFRZ0J5QUhRUVJOR3lFSEEwQWdCQ0FIUmcwZ0lBVWdBU0FFRUNZaEN5QUVRUUZxSVFRZ0NTQUxSZzBBQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR05ud1FRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3WUN5QUZJQWtReHdGRkJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCc1BvREVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1HQXNnQzBGK2NVSEtBRVlnQlNBSkVENGlDMEVnUjNFaERFRUVJUVJCQkNBSElBZEJCRTBiSVJFZ0JTQUpFRVVoQ1FOQUlBUWdFVVlOSHdKQUlBVWdBU0FFRUNZaUJ3UkFJQVVnQnhESEFRMEJDeUFHUVVCcklnSWdCVUZ5SUFFUUVDQUdRVEJxSWdRZ0JrR0FBbW9RTGlBQ0lBUVFFaG9nQWtIdHRRd1FEaG9nQWtIcWxRRVFEaG9nQmlnQy9BRWhBU0FFRUE4YUlBSVFFUXdaQ3lBRklBY1FSU0FKUndSQUlBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQk1Hb2lCQ0FHUVlBQ2FoQXVJQUlnQkJBU0dpQUNRZTIxREJBT0dpQUNRY1RsQ1JBT0dpQUNRZnlwQkJBT0dpQUdLQUw4QVNFQklBUVFEeG9nQWhBUkRCa0xJQVVnQnhBK0lBdEhCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQnJlWUpFQTRhSUFKQi9La0VFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNR1FzZ0JFRUJhaUVFSUF4RkRRQUxJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWJhbUNoQU9HaUFDUWFlRkFSQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQmNMSUFVZ0NSQ3VBVVVFUUNBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR2U5QU1RRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3WEN5QUZJQWtRUGlJRVFSQkdJQVJCSUVaeVJRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUVo3MEF4QU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQmNMUVFRaEJFRUVJQWNnQjBFRVRSc2hCd05BSUFRZ0IwWU5IaUFGSUFFZ0JCQW1JUXNnQkVFQmFpRUVJQWtnQzBZTkFBc2dCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCalo4RUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1GZ3NnQlNBQlFRUVFKaUVDSUFaQkFEWUNHQ0FHUVFBMkFnZ2dCa0VBTmdJc0lBWkJBRFlDS0FKQUlBVWdBaUFHUVJocUlBWkJDR29nQmtFc2FpQUdRU2hxRUtjREJFQWdCaWdDR0NBR0tBSUlSZzBCQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrSDlIaEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREJZTElBa2dCaWdDS0VZTkd5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0hqZ1FvUURob2dBa0g4cVFRUURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd1ZDeUFHUVFBMkFoZ2dCa0VBTmdJSUlBWkJBRFlDTENBR1FRQTJBaWdDUUNBRklBa2dCa0VZYWlBR1FRaHFJQVpCTEdvZ0JrRW9haENuQXdSQUlBWW9BaGdnQmlnQ0NFWU5BUXNnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQjBoNFFEaG9nQmlnQy9BRWhBU0FFRUE4YUlBSVFFUXdWQ3lBRklBRkJCQkFtSUFsR0RSb2dCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCeWFNRUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1GQXNnQlNBSkVLNEJSUVJBSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FlVDBBeEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREJRTElBVWdBVUVFRUNZaEFpQUZJQUZCQlJBbUlRUWdBaUFKUndSQUlBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQk1Hb2lCQ0FHUVlBQ2FoQXVJQUlnQkJBU0dpQUNRZTIxREJBT0dpQUNRY21qQkJBT0dpQUdLQUw4QVNFQklBUVFEeG9nQWhBUkRCUUxJQVpCQURZQ0NDQUZJQVFnQmtFSWFpQUdRUmhxRUlnQ1JRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWJ2Y0FSQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQlFMSUFZb0FnZ2dDVVlOR1NBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrSGVvZ1FRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3VEMwRUFJUVFnQmtFQU5nSTRJQVpDQURjRE1BSkFBa0FDUUNBRklBa2dCa0V3YWhDL0RVVU5BQ0FHS0FJMElBWW9BakFpQW10QkNFY05BQ0FGSUFJb0FnQVFyZ0ZGRFFBZ0JpZ0NNQ0lDS0FJRUlBSW9BZ0JHRFFFTElBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQkdHb2lCeUFHUVlBQ2FoQXVJQUlnQnhBU0dpQUNRZTIxREJBT0dpQUNRYjJaQ2hBT0dpQUNRY09hQVJBT0dpQUdLQUw4QVNFQklBY1FEeG9nQWhBUkRBRUxJQVVnQVVFRUVDWWdCaWdDTUNnQ0FFWUVRRUVCSVFRTUFRc2dCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRVlhaUlISUFaQmdBSnFFQzRnQWlBSEVCSWFJQUpCN2JVTUVBNGFJQUpCenEwS0VBNGFJQUpCcU8wQUVBNGFJQVlvQXZ3QklRRWdCeEFQR2lBQ0VCRUxJQVpCTUdvUU1ocEJBQ0VDSUFSRkRSSU1HUXNnQlNBSkVLNEJSUVJBSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FlVDBBeEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREJJTElBVWdBVUVFRUNZaEFpQUZJQUZCQlJBbUlRUWdBaUFKUndSQUlBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQk1Hb2lCQ0FHUVlBQ2FoQXVJQUlnQkJBU0dpQUNRZTIxREJBT0dpQUNRY21qQkJBT0dpQUdLQUw4QVNFQklBUVFEeG9nQWhBUkRCSUxJQVpCQURZQ0NDQUZJQVFnQmtFSWFpQUdRUmhxRUlnQ1JRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWNuYkFSQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQklMQWtBQ1FDQUZJQVlvQWdnUXh3RkZEUUFnQlMwQWtBRkJDSEZGQkVBZ0JTQUdLQUlJRUQ1QklFY05BU0FGTFFDUUFVRUljVVVOQWdzZ0JTQUdLQUlJRUQ1QkVFWU5BU0FGSUFZb0FnZ1FQa0VnUmcwQkN5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0hVM3dvUURob2dBa0h1ekFsQjVNd0pJQVVwQTVBQlFnaURVQnNRRGhvZ0FrRzMrd01RRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3U0N5QUZJQWtRUlNBRklBWW9BZ2dRUlVZTkZ5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0hleWdrUURob2dBa0h2bkFRUURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd1JDeUFGSUFrUXJnRkZCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQjVQUURFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNRVFzZ0JTQUJRUVFRSmlFSElBVWdBVUVGRUNZaEJDQUhJQWxIQkVBZ0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkJ5YU1FRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTUVRc2dCU0FFRU1jQlJRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWNuK0NSQU9HaUFDUVpEK0F4QU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQkVMSUFVZ0NSQkZJQVVnQkJCRlJnMFhJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWEzS0NSQU9HaUFDUWUrY0JCQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQkFMUVFBaEJDQUdRUUEyQWpnZ0JrSUFOd013QWtBQ1FBSkFJQVVnQ1NBR1FUQnFFTDhOUlEwQUlBWW9BalFnQmlnQ01DSUNhMEVJUncwQUlBVWdBaWdDQUJDdUFVVU5BQ0FGSUFZb0FqQW9BZ1FReHdGRkRRQUNRQ0FGTFFDUUFVRUljVVVFUUNBRklBWW9BakFvQWdRUVBrRWdSdzBDSUFVdEFKQUJRUWh4UlEwQkN5QUZJQVlvQWpBb0FnUVFQa0VRUmcwQUlBVWdCaWdDTUNnQ0JCQStRU0JIRFFFTElBVWdCaWdDTUNnQ0FCQkZJQVVnQmlnQ01DZ0NCQkJGUmcwQkN5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FSaHFJZ2NnQmtHQUFtb1FMaUFDSUFjUUVob2dBa0h0dFF3UURob2dBa0hCNXd3UURob2dBa0dLM3dvUURob2dBa0h1ekFsQjVNd0pJQVVwQTVBQlFnaURVQnNRRGhvZ0FrR2lyZ29RRGhvZ0FrSDgrd0VRRGhvZ0JpZ0MvQUVoQVNBSEVBOGFJQUlRRVF3QkN5QUZJQUZCQkJBbUlBWW9BakFvQWdCR0JFQkJBU0VFREFFTElBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQkdHb2lCeUFHUVlBQ2FoQXVJQUlnQnhBU0dpQUNRZTIxREJBT0dpQUNRZnI4Q1JBT0dpQUNRYVh0QUJBT0dpQUdLQUw4QVNFQklBY1FEeG9nQWhBUkN5QUdRVEJxRURJYVFRQWhBaUFFUlEwUERCWUxBa0FnQlNBSkVGQUVRQ0FGSUFrUVBrRWdSZzBCQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrSHJnUVFRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3UEN3SkFJQVVnQlNBQlFRUVFKaUlFRUk0QlJRMEFJQVVnQkJCRlFRUkhEUUFnQlNBRUVENUJJRVlORmdzZ0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkIydlVHRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTURnc0NRQ0FGSUFrUVVBUkFJQVVnQ1JBK1FTQkdEUUVMSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FldUJCQkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREE0TEFrQWdCU0FGSUFGQkJCQW1JZ1FRamdGRkRRQWdCU0FFRUVWQkFrY05BQ0FGSUFRUVBrRWdSZzBWQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR0FoQWNRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3TkN3SkFJQVVnQ1JCM0JFQWdCU0FKRUQ1QndBQkdEUUVMSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FjaUNCQkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREEwTEFrQWdCU0FGSUFGQkJCQW1JZ1FRdGdGRkRRQWdCU0FFRUVWQkFrY05BQ0FGSUFRUVBrRWdSZzBVQ3lBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR09nd2NRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3TUN3SkFBa0FnQlNBSkVJNEJSUTBBSUFVZ0NSQkZRUVJIRFFBZ0JTQUpFRDVCSUVZTkFRc2dCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCbi9VR0VBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1EQXNnQlNBRklBRkJCQkFtSWdRUVVBUkFJQVVnQkJBK1FTQkdEUk1MSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FjeURBaEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFzTEFrQUNRQ0FGSUFrUWpnRkZEUUFnQlNBSkVFVkJBa2NOQUNBRklBa1FQa0VnUmcwQkN5QUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0hGZ3djUURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd0xDeUFGSUFVZ0FVRUVFQ1lpQkJCUUJFQWdCU0FFRUQ1QklFWU5FZ3NnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQnpJTUNFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQ2dzQ1FBSkFJQVVnQ1JDMkFVVU5BQ0FGSUFrUVJVRUNSdzBBSUFVZ0NSQStRU0JHRFFFTElBWkJRR3NpQWlBRlFYSWdBUkFRSUFaQk1Hb2lCQ0FHUVlBQ2FoQXVJQUlnQkJBU0dpQUNRZTIxREJBT0dpQUNRZFdDQnhBT0dpQUdLQUw4QVNFQklBUVFEeG9nQWhBUkRBb0xJQVVnQlNBQlFRUVFKaUlFRUhjRVFDQUZJQVFRUGtIQUFFWU5FUXNnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQno0b0NFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQ1FzZ0JTQUpFSGRGQkVBZ0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkI2b1FFRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTUNRc2dCU0FGSUFGQkJCQW1JZ1FRcmdGRkJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCdlB3REVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1DUXNnQlNBRUVNRUJJQWxHRFE4Z0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkJ2cUFFRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTUNBc2dCU0FKRUhkRkJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCNm9RRUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1DQXNnQlNBRklBRkJCQkFtSWdRUXJnRkZCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQnJmMERFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQ0FzZ0JTQUVFTUVCSUFsSEJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCeUlJS0VBNGFJQUpCL0trRUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1DQXNnQlNBRklBRkJCUkFtSWdjUXJnRkZCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQjlQd0RFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQ0FzZ0JTQUhFTUVCSUFsSEJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCbFlJS0VBNGFJQUpCL0trRUVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1DQXNnQlNBRUVFVWdCU0FIRUVWR0RRNGdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCMEs0S0VBNGFJQUpCcDRVQkVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1Cd3NnQlNBSkVJNEJSUVJBSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FmajRBeEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFjTElBVWdDUkJGUVFOSEJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCM29RQkVBNGFJQVlvQXZ3QklRRWdCQkFQR2lBQ0VCRU1Cd3NnQlNBQlFRUVFKaUVFSUFVZ0FVRUZFQ1loQnlBRUlBbEhCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQnlhTUVFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQndzZ0J5QUpSZzBOSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FaYWpCQkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFZTElBVWdDUkN1QVVVRVFDQUdRVUJySWdJZ0JVRnlJQUVRRUNBR1FUQnFJZ1FnQmtHQUFtb1FMaUFDSUFRUUVob2dBa0h0dFF3UURob2dBa0htL1FNUURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd0dDeUFGSUFGQkJCQW1JUVFnQlNBQlFRVVFKaUVISUFVZ0FVRUdFQ1loQ3lBRUlBbEhCRUFnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQjE1NEVFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQmdzZ0J5QUpSd1JBSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FhR2VCQkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFZTElBVWdDeEIzRFF3Z0JrRkFheUlDSUFWQmNpQUJFQkFnQmtFd2FpSUVJQVpCZ0FKcUVDNGdBaUFFRUJJYUlBSkI3YlVNRUE0YUlBSkIwSXdDRUE0YUlBWW9BdndCSVFFZ0JCQVBHaUFDRUJFTUJRc2dCUzBBaGdGQkVIRkZCRUFnQmtGQWF5SUNJQVZCY3lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjF0TUNFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQlFzQ1FDQUZJQWtRcmdFRVFDQUZJQWtRUGtFZ1JnMEJDeUFHUVVCcklnSWdCVUZ5SUFFUUVDQUdRVEJxSWdRZ0JrR0FBbW9RTGlBQ0lBUVFFaG9nQWtIdHRRd1FEaG9nQWtINS9na1FEaG9nQWtHUS9nTVFEaG9nQmlnQy9BRWhBU0FFRUE4YUlBSVFFUXdGQ3lBRklBRkJCQkFiRUNBaEFnSi9Ba0FnQlNnQ0JDMEFMRVVOQUNBQ0x3RWVRVDFIRFFBZ0JTQUNRUUlRSmd3QkN5QUZJQUZCQkJBbUN5RUNJQVpCQURZQ0xDQUZJQUlnQmtFc2FpQUdRUWhxRUlnQ1JRUkFJQVpCUUdzaUFpQUZRWElnQVJBUUlBWkJNR29pQkNBR1FZQUNhaEF1SUFJZ0JCQVNHaUFDUWUyMURCQU9HaUFDUWRmYUFSQU9HaUFHS0FMOEFTRUJJQVFRRHhvZ0FoQVJEQVVMSUFZb0Fpd2dDVWNFUUNBR1FVQnJJZ0lnQlVGeUlBRVFFQ0FHUVRCcUlnUWdCa0dBQW1vUUxpQUNJQVFRRWhvZ0FrSHR0UXdRRGhvZ0FrR2tvZ1FRRGhvZ0JpZ0MvQUVoQVNBRUVBOGFJQUlRRVF3RkN5QUdLQUlJUVFGSEJFQWdCa0ZBYXlJQ0lBVkJjaUFCRUJBZ0JrRXdhaUlFSUFaQmdBSnFFQzRnQWlBRUVCSWFJQUpCN2JVTUVBNGFJQUpCcEN3UURob2dCaWdDL0FFaEFTQUVFQThhSUFJUUVRd0ZDd0pBQWtBQ1FDQUxRYzBBYXc0Q0FBRUNDeUFGSUFVZ0FVRUZFQ1lpQWhCUUJFQWdCU0FDRUQ1QklFWU5BZ3NnQmtGQWF5SUNJQVZCY2lBQkVCQWdCa0V3YWlJRUlBWkJnQUpxRUM0Z0FpQUVFQklhSUFKQjdiVU1FQTRhSUFKQmsvQUJFQTRhSUFZb0F2d0JJUUVnQkJBUEdpQUNFQkVNQmdzQ1FDQUZJQVVnQVVFRkVDWWlBaENPQVVVTkFDQUZJQUlRUlVFQ1J3MEFJQVVnQWhBK1FTQkdEUUVMSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FZZUxBUkFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSREFVTElBVWdBU2dDT0NnQ0FCQ2ZBU0VFSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVpCUUdzaUFpQUJJQVpCR0dwQmw0TURFQlFpQnhCT0lBUkJCQ0FDRU1jRUlBSVFEeG9nQnhBUEdpQUJFQThhREFvTElBWkJRR3NpQWlBRlFYSWdBUkFRSUFKQjFmQUVFQTRhSUFZb0F2d0JJUUVnQWhBUkRBTUxJQVpCUUdzaUFpQUZRWElnQVJBUUlBSkIxSUFGRUE0YUlBWW9BdndCSVFFZ0FoQVJEQUlMUWRXU0IwR2xtd0pCbUE1QnJpOFFBQUFMSUFaQlFHc2lBaUFGUVhJZ0FSQVFJQVpCTUdvaUJDQUdRWUFDYWhBdUlBSWdCQkFTR2lBQ1FlMjFEQkFPR2lBQ1FlYjlBeEFPR2lBR0tBTDhBU0VCSUFRUUR4b2dBaEFSQ3lBQklRSU1CZ3RCQUNFQ0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUxEczBCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSUFBd1FBQWdBQUFBQUFBQUFBQVFVQUFBUUFBQUlBQkFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpDZ3NNQ2dzTUhCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZSEJ3WUlDQWdJRHhBUkVoTVRFeE1TRXhNVUZCVVdEUTRjSEJ3Y0hCd2NIQndjSEJ3Y0JnWUdCaHdMSUFVZ0NSQ3VBVVVFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSG0vUU1RRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3Y0N5QUZJQWtRUlNJRVFSQk5RUUJCQVNBRWRFR2ZnZ1J4RzBVRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhSZ0FFUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd2NDMEVFSVFSQkJDQUhJQWRCQkUwYklRY0RRQ0FFSUFkR0RSd2dCU0FCSUFRUUppRUxJQVJCQVdvaEJDQUpJQXRHRFFBTElBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRWTJmQkJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRCc0xJQVVnQ1JDdUFVVUVRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIbS9RTVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdiQ3lBRklBa1FSU0lDUVJCTlFRQkJBU0FDZEVHZmdnUnhHMFVFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSFJnQUVRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3YkN5QUZJQUZCQkJBbUlBbEhCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQnk2VUVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNR3dzZ0JTQUJRUVVRSmlFQ0lBWkJBRFlDQ0NBRklBSWdCa0VJYWlBR1FSaHFFSWdDUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZTdiQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRCc0xJQVlvQWhnaUFrRUlUVUVBUVFFZ0FuUkJzQU54RzBVRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdpMVFJUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd2JDeUFKSUFZb0FnaEdEUmtnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQng1OEVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNR2dzZ0JTQUpFSzRCUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZWI5QXhBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRCb0xJQVVnQ1JCRklnUkJFRTFCQUVFQklBUjBRWitDQkhFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWRHQUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQm9MSUFVZ0FVRUVFQ1lnQ1VjRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhMcFFRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd2FDMEVGSVFJQ1FDQUxRVFJIRFFCQkJpRUNJQVVnQVVFRkVDWWdDVVlOQUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR1ZwUVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3YUN5QUZJQUVnQWhBbUlRSWdCa0VBTmdJSUlBVWdBaUFHUVFocUlBWkJHR29RaUFKRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCN3RzQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1HZ3NnQmlnQ0dDSUNRUWhOUVFCQkFTQUNkRUd3QTNFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWFMVkFoQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQm9MQWtBZ0JTQUdLQUlJRU1jQkJFQWdCU0FHS0FJSUVENUJJRVlOQVFzZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJwL2tERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUdnc2dCU0FHS0FJSUVFVWdCRVlOR0NBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSHZtUVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3WkN3SkFJQVVnQ1JESEFRUkFJQVVnQ1JBK1FTQkdEUUVMSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFmTDVBeEFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREJrTElBVWdDUkJGSWdSQkVFMUJBRUVCSUFSMFFaK0NCSEViUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZEdBQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRCa0xJQVVnQlNBQlFRUVFKaUlIRUs0QlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWRyT0FSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQmtMSUFVZ0J4QkZJQVJHRFJnZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIzNXNFRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUdBc2dCU0FKRUs0QlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWViOUF4QU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQmdMSUFVZ0NSQkZJZ1JCRUUxQkFFRUJJQVIwUVorQ0JIRWJSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFkR0FBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREJnTElBVWdBVUVFRUNZZ0NVY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVITHBRUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdZQ3dKQUlBVWdCU0FCUVFVUUppSUhFTWNCQkVBZ0JTQUhFRDVCSUVZTkFRc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbk13QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1HQXNnQlNBSEVFVWdCRVlORnlBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSFRtQVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3WEN5QUZJQWtRcmdGRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCNXYwREVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1Gd3NnQlNBSkVFVWlCRUVRVFVFQVFRRWdCSFJCbjRJRWNSdEZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjBZQUJFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRndzZ0JTQUZJQUZCQkJBbUlnY1F4d0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkI2UG9ERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUZ3c2dCU0FIRUVVZ0JFY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHWm13UVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdYQ3lBRklBa1FQaUFGSUFjUVBrWU5GaUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHRm5RUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdXQ3lBRklBa1F4d0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJzUG9ERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUZnc2dCU0FKRUVVaUJFRVFUVUVBUVFFZ0JIUkJuNElFY1J0RkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCMFlBQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1GZ3RCQkNFRVFRUWdCeUFIUVFSTkd5RUhBMEFnQkNBSFJnMFdJQVVnQVNBRUVDWWhDeUFFUVFGcUlRUWdDU0FMUmcwQUN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdObndRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1ZDeUFGSUFrUXh3RkZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQnNQb0RFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRlFzZ0JTQUpFRVVpQjBFUVRVRUFRUUVnQjNSQm40SUVjUnRGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIwWUFCRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUZRc2dCU0FKRUQ0aUJFRVFSaUFFUVNCR2NpQUVRY0FBUm5KRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCaVBNR0VBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1GUXNnQlNBQlFRUVFKaUlKSUFVZ0FVRUZFQ1pIQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJ5SThFRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUZRc2dCU0FKRUVVZ0IwY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHZW1RUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdWQ3lBRUlBVWdDUkErUVFGMFJnMFVJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWN1bUJCQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQlFMQWtBZ0JTQUpFTWNCQkVBZ0JTQUpFRDVCSUVZTkFRc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCOHZrREVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1GQXNnQlNBSkVFVWlCRUVRVFVFQVFRRWdCSFJCbjRJRWNSdEZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjBZQUJFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRkF0QkJDRUVRUVFnQnlBSFFRUk5HeUVIQTBBZ0JDQUhSZzBVSUFVZ0FTQUVFQ1loQ3lBRVFRRnFJUVFnQ1NBTFJnMEFDeUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHTm53UVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdUQ3lBRklBa1FqZ0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIrUGdERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUV3c2dCU0FKRUVWQkJXdEJmVTBFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSDNnZ0VRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3VEN5QUZJQUZCQkJBbUlRUWdCU0FCUVFVUUppRUhJQVFnQ1VjRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhKb3dRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1RDeUFISUFsR0RSSWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbHFNRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1FZ3NnQlNBSkVIZEZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjZvUUVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRWdzZ0JTQUZJQUZCQkJBbUlnUVFyZ0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJyZjBERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUVnc2dCU0FFRUVWQkJVOEVRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHU2hBRVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdTQ3lBRklBUVF3UUVnQ1VjRVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhJZ2dvUURob2dCRUg4cVFRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1NDeUFGSUFGQkJSQW1JQVJHRFJFZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJsWThFRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUVRc2dCU0FKRUhkRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCNm9RRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1FUXNnQlNBRklBRkJCQkFtSWdRUXJnRkZCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQmpNOEJFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRVFzZ0JTQUVFRVZCQlU4RVFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhkZ3dFUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1JDeUFGSUFRUXdRRWdDVVlORUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSDdvQVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3UUN5QUZJQWtRcmdGRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCNXYwREVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1FQXNnQlNBSkVFVkJCVThFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR21nd0VRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3UUN5QUZJQUZCQkJBbUlBbEdEUThnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQi9LTUVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNRHdzQ1FDQUZJQWtRcmdFTkFDQUZJQWtReHdFTkFDQUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUhSK3dNUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd1BDeUFGSUFrUVJTSUVRUkJOUVFCQkFTQUVkRUdmZ2dSeEcwVUVRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIUmdBRVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdQQzBFRUlRUkJCQ0FISUFkQkJFMGJJUWNEUUNBRUlBZEdEUThnQlNBQklBUVFKaUVMSUFSQkFXb2hCQ0FKSUF0R0RRQUxJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUVkyZkJCQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTRMQWtBZ0JTQUpFSzRCRFFBZ0JTQUpFTWNCRFFBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIwZnNERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURnc2dCU0FKRUVVaUIwRVFUVUVBUVFFZ0IzUkJuNElFY1J0RkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCMFlBQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EZ3NnQlNBQlFRUVFKaUVMSUFVZ0FVRUZFQ1loRENBRklBRkJCaEFtSVFRZ0NTQUxSd1JBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFlS2tCQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREE0TElBa2dERWNFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR3ZwQVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3T0N5QUZJQVFReHdGRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCMXN3QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EZ3NnQlNBRUVFVWdCMGNFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR25uQVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3T0N5QUZJQWtRUGlBRklBUVFQa1lORFNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSEFuUVFRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3TkN3SkFJQVVnQ1JDT0FRMEFJQVVnQ1JDMkFRMEFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWZUM0F4QU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTBMSUFVZ0NSQkZJZ0pCRUUxQkFFRUJJQUowUVorQ0JIRWJSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFhS0JBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREEwTElBVWdBVUVFRUNZaEJDQUZJQUZCQlJBbUlRc2dCUkNrQnlJSFJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUVl1cUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTBMQWtBZ0JTQUVFRkFFUUNBRklBUVFQaUFIUmcwQkN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdDL0FnUURob2dCQ0FIRUNFYUlBUkJwcjRJRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURRc2dCa0VBTmdJSUlBVWdDeUFHUVFocUlBWkJHR29RaUFKRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbU53QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EUXNnQmlnQ0dDSUVRUWhOUVFCQkFTQUVkRUd4QTNFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWYzVkFoQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTBMSUFVZ0NSREJBU0FHS0FJSVJ3UkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWVXbkJCQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQTBMSUFJZ0FTZ0NBQ2dDSEVZTkN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdCcGdRUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd01DeUFGSUFrUWNFRVRSd1JBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFhdnJCQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREF3TElBVWdBVUVFRUNZaEFpQUZJQUZCQlJBbUlRUWdCU0FCUVFZUUppRUpBa0FnQlNBQ0VJNEJEUUFnQlNBQ0VMWUJEUUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQndjc0JFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNREFzZ0JTQUNFRVVpQjBFUVRVRUFRUUVnQjNSQm40SUVjUnRGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkIyNEVCRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURBc2dCUkNrQnlJSFJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUVl1cUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXdMQWtBZ0JTQUVFRkFFUUNBRklBUVFQaUFIUmcwQkN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdDL0FnUURob2dCQ0FIRUNFYUlBUkJwcjRJRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURBc2dCa0VBTmdJSUlBVWdDU0FHUVFocUlBWkJHR29RaUFKRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbU53QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EQXNnQmlnQ0dDSUVRUWhOUVFCQkFTQUVkRUd3QTNFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWN6VUFoQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXdMSUFVZ0FoREJBU0FHS0FJSVJnMEtJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUVlHQUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXNMSUFVZ0NSQjNSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFlcUVCQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFzTElBVWdBVUVFRUNZaEFpQUZJQUZCQlJBbUlRUWdCUkNrQnlJSFJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUVl1cUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXNMQWtBZ0JTQUNFRkFFUUNBRklBSVFQaUFIUmcwQkN5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdDL0FnUURob2dCQ0FIRUNFYUlBUkJwcjRJRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUN3c2dCa0VBTmdJSUlBVWdCQ0FHUVFocUlBWkJHR29RaUFKRkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCbU53QkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1Dd3NnQmlnQ0dDSUNRUWhOUVFCQkFTQUNkRUd4QTNFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWYzVkFoQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQXNMSUFVZ0JpZ0NDQkIzQkVBZ0JTQUdLQUlJRUQ1QkVFWU5DZ3NnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjZJa0NFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNQ2dzZ0JTQUpFSTRCUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZmo0QXhBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBb0xJQVVnQ1JCRklnSkJFRTFCQUVFQklBSjBRWitDQkhFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWFLQkFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQW9MSUFVZ0FVRUVFQ1loQkNBRklBRkJCUkFtSVFrZ0JSQ2tCeUlIUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRWXVxQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBb0xBa0FnQlNBRUVGQUVRQ0FGSUFRUVBpQUhSZzBCQ3lBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFR0MvQWdRRGhvZ0JDQUhFQ0VhSUFSQnByNElFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNQ2dzZ0JrRUFOZ0lJSUFVZ0NTQUdRUWhxSUFaQkdHb1FpQUpGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJtTndCRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUNnc2dCaWdDR0NJRVFRaE5RUUJCQVNBRWRFR3hBM0ViUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZjNWQWhBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBb0xBa0FnQlNBR0tBSUlFSGNFUUNBRklBWW9BZ2dRUGtFUVJnMEJDeUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIb2lRSVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdLQ3lBQ0lBRW9BZ0FvQWh4R0RRZ2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCZ2FZRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1DUXNnQlNBSkVIQkJFMGNFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFR3I2d1FRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3SkN5QUZJQUZCQkJBbUlRUWdCU0FCUVFVUUppRUpJQVVnQVVFR0VDWWhEQ0FGSUFRUVBpRUhJQXRCcndGclFRRk5CRUFnQlNBRUVIZEJBQ0FIUVNCR0lBZEJ3QUJHY2hzTkJ5QUdRVUJySWdRZ0JVRnlJQUVRRUNBR1FUQnFJZ0VnQmtHQUFtb1FMaUFFSUFFUUVob2dCRUh0dFF3UURob2dCRUdmaWdJUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd0pDeUFGSUFRUWpnRkJBQ0FIUVNCR0lBZEJ3QUJHY2h0RkJFQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCa2NzQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1DUXNnQlNBRUVFVWlCMEVSVDBHZmdnUWdCM1pCQVhGRmNnMEVEQVVMQWtBZ0JTQUpFSTRCRFFBZ0JTQUpFTFlCRFFBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkI5UGNERUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUNBc2dCU0FKRUVVaURFRWZkQ0FNUVFKclFRRjJjaUlFUVFkTlFRQkJBU0FFZEVHTEFYRWJSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFZMkNBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFnTFFRVWhCeUFGSUFGQkJCQW1JUVFDUUNBTFFiY0JSdzBBUVFZaEJ5QUZJQUZCQlJBbUlBUkdEUUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjVJNEVFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNQ0FzZ0JTQUJJQWNRSmlFSEFrQWdCU0FFRUk0QkRRQWdCU0FFRUxZQkRRQWdCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCN01zQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1DQXNnQlNBRUVFVWlDMEVmZENBTFFRSnJRUUYyY2lJTFFRZE5RUUJCQVNBTGRFR0xBWEViUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRY09DQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBZ0xJQVVnQ1JEQkFTSUpJQVVnQkJEQkFVY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVHNnN3RVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdJQ3lBRklBY1F0Z0ZGQkVBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJxTWtCRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUNBc2dCU0FIRUVVZ0RFY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIR21nUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdJQ3lBRklBa1FQaUFGSUFjUVBrWU5CeUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVINi9nQVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdIQ3dKQUlBVWdDUkJRQkVBZ0JTQUpFRDVCSUVZTkFRc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCcS9FREVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1Cd3NnQlNBQlFRUVFKaUVDSUFaQkFEWUNDQ0FGSUFJZ0JrRUlhaUFHUVJocUVJZ0NSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFmemFBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFjTElBWW9BaGdFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSDgzd0FRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3SEN5QUZJQVlvQWdnUVVBUkFJQVVnQmlnQ0NCQStRUWhHRFFZTElBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZW85RUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUJnc2dCU0FKRUhCQkUwY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVHcjZ3UVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdHQ3lBRklBRkJCQkFtSVFRZ0JTQUJRUVVRSmlFQ0lBWkJBRFlDQ0NBRklBUWdCa0VJYWlBR1FSaHFFSWdDUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRYVRiQVJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBWUxJQVlvQWhoQkJVY0VRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIN2tRSVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdHQ3dKQUlBVWdCaWdDQ0JDdUFRMEFJQVVnQmlnQ0NCREhBUTBBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFlN05BUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFZTElBVWdCaWdDQ0JCRklnUkJFRTFCQUVFQklBUjBRWitDQkhFYlJRUkFJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWRHQUFSQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQVlMSUFVUXBBY2lCMFVFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFR0xxZ0VRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3R0N5QUZJQUlRVUFSQUlBVWdBaEErSUFkR0RRVUxJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQVNBR1FZQUNhaEF1SUFRZ0FSQVNHaUFFUWUyMURCQU9HaUFFUWJIOENCQU9HaUFFSUFjUUlSb2dCRUdtdmdnUURob2dCaWdDL0FFaEFpQUJFQThhSUFRUUVRd0ZDMEVBSVFJQ1FBSkFBa0FDUUFKQUlBUkJDR3NPQXdBQkFBa0xJQVVnQ1JDZEIwVUVRQ0FHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIdnNBb1FEaG9nQkVIcTdBUVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdKQ3lBQktBSUVJQUVvQWdBaUFtc2lCMEVDZFNFSkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVRUXBHQkVBQ1FDQUxRUUZyRGlNRUJ3Z0pDd29NRFE4UUVSSWhHaHNoSVJ3VUV4VWhGaUVkRnlFWUh3SVpJU0VoQmdBTElBdEI3QUJIQkVBZ0MwSC8vLzgvUncwaFFkV1NCMEdsbXdKQnV4aEJyaThRQUFBTElBWkJNR3BCaUtvRUVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVJCQmlBQlFRVWdCa0ZBYXlJSEVQWUJJUUlnQnhBV0lBUVFEeG9nQWcwcElBWkJNR3BCaHpvUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVFZZ0JrRkFheUlIRUtBQklRSWdCeEFXSUFRUUR4b2dBZzBwSUFVZ0FTZ0NBQ2dDR0NBR1FSaHFFTU1GUlFSQUlBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRWUxXQUJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRDb0xJQVlvQWhoQkJXdEJlMHNOSUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHdzZ29RRGhvZ0JFR0s5QVlRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3cEN5QUxRU1JHSUFSQkNFWnhEUjhnQzBFQmF3NGpBd1VHQndrSUNnd05EZzhRSHhnWkh4OGFFaEVUSHhRZkhCVWZGaDBCRng4Zkh3UWVDeUFHUVRCcVFjM2NBaEFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSElBRkJCU0FHUVVCcklnc1FvQUVoQWlBTEVCWWdCeEFQR2lBQ0RTY0xRUVloQjBFR0lBa2dDVUVHVFJzaENTQUVRUXBISVFzRFFDQUhJQWxHRFI0Z0MwVUVRQ0FHUVRCcVFZYnFCQkFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRUlBRWdCeUFHUVVCcklnd1FvQUVoQWlBTUVCWWdCQkFQR2lBQ0RTZ0xJQWRCQVdvaEJ3d0FDd0FMSUFaQk1HcEI2dTBDRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBY2dBVUVGSUFaQlFHc2lDUkNnQVNFQ0lBa1FGaUFIRUE4YUlBSU5KU0FHUVRCcVFlVHRBaEFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSElBRkJCaUFHUVVCcklna1FvQUVoQWlBSkVCWWdCeEFQR2lBQ0RTVUxJQVpCTUdwQjl0SUVFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFkQkl5QUJRUWNnQmtGQWF5SUpFUFlCSVFJZ0NSQVdJQWNRRHhvZ0FnMGtJQVJCQ2tjTkd5QUdRVEJxUWEvQkJCQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFSUFGQkNDQUdRVUJySWdFUW9BRWhBaUFCRUJZZ0JCQVBHaUFDUlEwYkRDUUxJQVpCTUdwQnRMWUVFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFSQkJ5QUJRUVVnQmtGQWF5SUpFTXdCSVFJZ0NSQVdJQVFRRHhvZ0FnMGpJQWRCSEVjTkdpQUdRVEJxUVlJckVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVJCQnlBQlFRWWdCa0ZBYXlJQkVNd0JJUUlnQVJBV0lBUVFEeG9nQWtVTkdnd2pDeUFHUVRCcVFaS3pCQkFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSFFRY2dBVUVGSUFaQlFHc2lDUkRNQVNFQ0lBa1FGaUFIRUE4YUlBSU5JaUFHUVRCcVFidkpBeEFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSFFTc2dBVUVHSUFaQlFHc2lDUkRNQVNFQ0lBa1FGaUFIRUE4YUlBSU5JaUFFUVFwSERSa2dCa0V3YWtHc3Z3TVFGQ0VFUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQkNBQlFRY2dCa0ZBYXlJQkVLQUJJUUlnQVJBV0lBUVFEeG9nQWtVTkdRd2lDMEVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQUZCQlNBR1FVQnJJZ2NRcndvaEFpQUhFQllnQWcwaElBUkJDa2NOR0NBR1FUQnFRZEtVQVJBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCQmlBR1FVQnJJZ2NRb0FFaEFpQUhFQllnQkJBUEdpQUNEU0VnQmtFd2FrSFNyUUVRRkNFRVFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0JDQUJRUWNnQmtGQWF5SUJFS0FCSVFJZ0FSQVdJQVFRRHhvZ0FrVU5HQXdoQzBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFGQkJTQUdRVUJySWdjUXJ3b2hBaUFIRUJZZ0FnMGdJQVJCQ2tjTkZ5QUdRVEJxUWRidEFSQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFSUFGQkJpQUdRVUJySWdFUW9BRWhBaUFCRUJZZ0JCQVBHaUFDUlEwWERDQUxRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdBVUVGSUFaQlFHc2lCeEN2Q2lFQ0lBY1FGaUFDRFI4Q2Z5QUVRUXBHQkVBZ0JrRXdha0gzT1JBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCQmlBR1FVQnJJZ2NRb0FFaEFpQUhFQllnQkJBUEdpQUNEU0VnQlNBQktBSUFLQUlZSUFaQkdHb1F3d1VFUUNBR0tBSVlEQUlMSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFjN1ZBQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSRENFTElBRW9BZ0FvQWhnTFFRVnJRWHRMRFJZZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkJ6TElLRUE0YUlBUkJpdlFHRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTUh3c2dCa0V3YWtHc3FnUVFGQ0VIUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQnlBQlFRVWdCa0ZBYXlJTFFRQVF5UVFoQWlBTEVCWWdCeEFQR2lBQ0RSNUJCaUFKSUFsQkJrMGJJUXNnQkVFS1JpRU1RUVloQndOQUlBY2dDMFlORmdKQUFrQWdCU0FCS0FJQUlBZEJBblJxS0FJQUVDQWlBaThCSGtFclJ3MEFJQVVnQWlnQ0pCQlFSUTBBSUFVZ0FpZ0NKQkErSWdsQndBQkhJQWxCSUVkeERRQWdEQTBCSUFJb0FnQW9BZ3dOQVF3Y0N5QUNLQUlFSUFJb0FnQWlBbXRCR1VrTkd5QUNLQUlRUVFoeVFScEhEUnNnQlNBQ0tBSVlFQ0FpQ1NnQ0JDQUpLQUlBSWdKclFSMUpEUnNnQWlnQ0VFRUNSdzBiSUFJb0Fod2hBaUFFUVFwR0JIOGdCU0FDRUhoRkRSd2dCU0FDRUlNV0JTQUNDMEVHUncwYklBVWdCU0FKS0FJQUtBSVlFQ0FpQWlnQ0pCQlFSUTBiSUFJb0FnQW9BZ3dpQWtFZ1JnMEFJQUpCd0FCSERSc0xJQWRCQVdvaEJ3d0FDd0FMSUFaQk1HcEJrck1FRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBZEJCeUFCUVFVZ0JrRkFheUlKRU13QklRSWdDUkFXSUFjUUR4b2dBZzBkUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQVVFR0lBWkJRR3NpQnhDdkNpRUNJQWNRRmlBQ0RSMGdCa0V3YWtIMjBnUVFGQ0VIUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQjBFaklBRkJCeUFHUVVCcklna1E5Z0VoQWlBSkVCWWdCeEFQR2lBQ0RSMGdCRUVLUmdSQUlBWkJNR3BCMHE4RUVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVFnQVVFSUlBWkJRR3NpQnhDZ0FTRUNJQWNRRmlBRUVBOGFJQUlOSGlBR1FUQnFRWS92QWhBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCQ1NBR1FVQnJJZ2NRb0FFaEFpQUhFQllnQkJBUEdpQUNEUjRMSUFaQk1HcEI5TVVBRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVLSUFaQlFHc2lBUkRJQkNFQ0lBRVFGaUFFRUE4YUlBSkZEUlFNSFFzZ0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVFVZ0JrRkFheUlIRUtBQklRSWdCeEFXSUFRUUR4b2dBZzBjSUFFb0FnQWhBZ3NnQlNBQ0tBSVlFQ0F2QVI1QkUwY0VRQ0FHUVRCcVFaU3FCQkFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRUlBRkJCaUFHUVVCcklnZEJBUkRKQkNFQ0lBY1FGaUFFRUE4YUlBSU5IQXRCQnlFRVFRY2dDU0FKUVFkTkd5RUpBMEFnQkNBSlJnMFRJQVpCTUdwQmpib0JFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFjZ0FTQUVJQVpCUUdzaUMwRUJFTWtFSVFJZ0N4QVdJQWNRRHhvZ0JFRUJhaUVFSUFKRkRRQUxEQnNMSUFaQk1HcEJrck1FRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBZEJCeUFCUVFVZ0JrRkFheUlMRU13QklRSWdDeEFXSUFjUUR4b2dBZzBhSUFaQjRJZ2dOZ0pBSUFZZ0JrRkFheUlDTmdKUUlBVWdBaUFCUVFZUWlRUWhCeUFDRUJZZ0IwVUVRQ0FHUVRCcVFaMjZBUkFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSElBRkJCaUFHUVVCcklndEJBQkRKQkNFQ0lBc1FGaUFIRUE4YUlBSU5Hd3NnQmtFd2FrSDIwZ1FRRkNFSFFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0IwRWpJQUZCQnlBR1FVQnJJZ3NROWdFaEFpQUxFQllnQnhBUEdpQUNEUm9nQkVFS1JnUkFJQVpCTUdwQjBxOEVFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFjZ0FVRUlJQVpCUUdzaUN4Q2dBU0VDSUFzUUZpQUhFQThhSUFJTkd5QUdRVEJxUVkvdkFoQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FISUFGQkNTQUdRVUJySWdzUW9BRWhBaUFMRUJZZ0J4QVBHaUFDRFJzTElBWkJNR3BCOU1VQUVCUWhCMEVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQWNnQVVFS0lBWkJRR3NpQ3hESUJDRUNJQXNRRmlBSEVBOGFJQUlOR2lBR1FUQnFRYnZKQXhBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRU3NnQVVFTElBWkJRR3NpQ3hETUFTRUNJQXNRRmlBSEVBOGFJQUlOR2dKQUlBVWdCU0FCS0FJQUtBSXNFQ0FpQWlnQ0pCQlFCRUFnQWlnQ0FDZ0NEQTBCQ3lBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHMzZ29RRGhvZ0JFSGg4UUVRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3YkN5QUVRUXBHQkVBZ0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVF3Z0JrRkFheUlIRUtBQklRSWdCeEFXSUFRUUR4b2dBZzBiQzBFTklRUURRQ0FFUVFGcUlnc2dDVThORWlBR1FUQnFRWnpXQXhBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRU3NnQVNBRUlBWkJRR3NpREJETUFTRUNJQXdRRmlBSEVBOGFJQUlOR3lBR1FUQnFRWkt6QkJBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRUWNnQVNBTElBWkJRR3NpQ3hETUFTRUNJQXNRRmlBSEVBOGFJQVJCQW1vaEJDQUNSUTBBQ3d3YUN5QUdRVEJxUVpLekJCQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVFjZ0FVRUZJQVpCUUdzaUN4RE1BU0VDSUFzUUZpQUhFQThhSUFJTkdTQUdRVEJxUWZiU0JCQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVNNZ0FVRUhJQVpCUUdzaUN4RDJBU0VDSUFzUUZpQUhFQThhSUFJTkdTQUVRUXBHQkVBZ0JrRXdha0hTcndRUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCeUFCUVFnZ0JrRkFheUlMRUtBQklRSWdDeEFXSUFjUUR4b2dBZzBhSUFaQk1HcEJqKzhDRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBY2dBVUVKSUFaQlFHc2lDeENnQVNFQ0lBc1FGaUFIRUE4YUlBSU5HZ3NnQmtFd2FrSDB4UUFRRkNFSFFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0J5QUJRUW9nQmtGQWF5SUxFTWdFSVFJZ0N4QVdJQWNRRHhvZ0FnMFpJQVpCTUdwQmlyTUVFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFkQkJ5QUJRUXNnQmtGQWF5SUxFTXdCSVFJZ0N4QVdJQWNRRHhvZ0FnMFpJQVpCaElrZ05nSkFJQVlnQmtGQWF5SUNOZ0pRSUFVZ0FpQUJRUXdRaVFRaEJ5QUNFQllnQjBVRVFDQUdRVEJxUWJ2SkF4QVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVNzZ0FVRU1JQVpCUUdzaUN4RE1BU0VDSUFzUUZpQUhFQThhSUFJTkdnc2dCRUVLUmdSQUlBWkJNR3BCMHEwQkVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVFnQVVFTklBWkJRR3NpQnhDZ0FTRUNJQWNRRmlBRUVBOGFJQUlOR2d0QkRpRUVRUTRnQ1NBSlFRNU5HeUVIQTBBZ0JDQUhSZzBSSUFaQnFJa2dOZ0pBSUFZZ0JrRkFheUlDTmdKUUlBVWdBaUFCSUFRUWlRUWhDU0FDRUJZZ0JFRUJhaUVFSUFrTkFBc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCdnRnSkVBNGFJQVJCbE5jRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1HUXNnQmtFd2FrR1Nzd1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NVRUhJQUZCQlNBR1FVQnJJZ3NRekFFaEFpQUxFQllnQ1JBUEdpQUNEUmdnQmtFd2FrR3hxZ1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NTQUJRUVlnQmtGQWF5SUxRUUVReVFRaEFpQUxFQllnQ1JBUEdpQUNEUmdnQmtFd2FrSDIwZ1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NVRWpJQUZCQnlBR1FVQnJJZ3NROWdFaEFpQUxFQllnQ1JBUEdpQUNEUmdnQkVFS1JnUkFJQVpCTUdwQjBxOEVFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFRZ0FVRUlJQVpCUUdzaUNSQ2dBU0VDSUFrUUZpQUVFQThhSUFJTkdTQUdRVEJxUVkvdkFoQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFSUFGQkNTQUdRVUJySWdrUW9BRWhBaUFKRUJZZ0JCQVBHaUFDRFJrZ0JrRXdha0dUNlFBUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVySUFGQkNpQUdRVUJySWdrUXpBRWhBaUFKRUJZZ0JCQVBHaUFDRFJrZ0JrRXdha0c3eVFNUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVySUFGQkN5QUdRVUJySWdrUXpBRWhBaUFKRUJZZ0JCQVBHaUFDRFJrZ0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVF3Z0JrRkFheUlKRUtBQklRSWdDUkFXSUFRUUR4b2dBZzBaSUFkQk9FY05FQ0FHUVRCcVFaeldBeEFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRVFTc2dBVUVOSUFaQlFHc2lBUkRNQVNFQ0lBRVFGaUFFRUE4YUlBSkZEUkFNR1FzZ0JrRXdha0gweFFBUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVLSUFGQkNpQUdRVUJySWdrUTlnRWhBaUFKRUJZZ0JCQVBHaUFDRFJnZ0JrRXdha0dUNlFBUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVySUFGQkN5QUdRVUJySWdrUXpBRWhBaUFKRUJZZ0JCQVBHaUFDRFJnZ0JrRXdha0c3eVFNUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVySUFGQkRDQUdRVUJySWdrUXpBRWhBaUFKRUJZZ0JCQVBHaUFDRFJnZ0IwRThSdzBQSUFaQk1HcEJuTllERUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUkJLeUFCUVE0Z0JrRkFheUlCRU13QklRSWdBUkFXSUFRUUR4b2dBa1VORHd3WUN5QUdRVEJxUVovckJCQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVFvZ0FVRUZJQVpCUUdzaUNSRDJBU0VDSUFrUUZpQUhFQThhSUFJTkZ5QUZJQUVvQWdBb0FoUVFJQ2dDQUNnQ0dFRUNUd1JBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFaZU1CQkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREJnTElBWkJNR3BCOU1VQUVCUWhCMEVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQWRCQ2lBQlFRWWdCa0ZBYXlJSkVQWUJJUUlnQ1JBV0lBY1FEeG9nQWcwWElBVWdBU2dDQUNnQ0dCQWdLQUlBS0FJWVFRSlBCRUFnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQjNJc0VFQTRhSUFZb0F2d0JJUUlnQVJBUEdpQUVFQkVNR0FzZ0JrRXdha0dUNlFBUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCMEVySUFGQkJ5QUdRVUJySWdrUXpBRWhBaUFKRUJZZ0J4QVBHaUFDRFJjZ0JrRXdha0c3eVFNUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCMEVySUFGQkNDQUdRVUJySWdrUXpBRWhBaUFKRUJZZ0J4QVBHaUFDRFJjZ0JFRUtSdzBPSUFaQk1HcEIwcTBCRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVKSUFaQlFHc2lBUkNnQVNFQ0lBRVFGaUFFRUE4YUlBSkZEUTRNRndzZ0JrRXdha0dTc3dRUUZDRUpRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdDVUVISUFGQkJTQUdRVUJySWdzUXpBRWhBaUFMRUJZZ0NSQVBHaUFDRFJZZ0JrRXdha0d4cWdRUUZDRUpRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdDU0FCUVFZZ0JrRkFheUlMUVFBUXlRUWhBaUFMRUJZZ0NSQVBHaUFDRFJZZ0JrRXdha0gyMGdRUUZDRUpRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdDVUVqSUFGQkJ5QUdRVUJySWdzUTlnRWhBaUFMRUJZZ0NSQVBHaUFDRFJZZ0JFRUtSZ1JBSUFaQk1HcEIwcThFRUJRaENVRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBa2dBVUVJSUFaQlFHc2lDeENnQVNFQ0lBc1FGaUFKRUE4YUlBSU5GeUFHUVRCcVFZL3ZBaEFVSVFsQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSklBRkJDU0FHUVVCcklnc1FvQUVoQWlBTEVCWWdDUkFQR2lBQ0RSY0xJQVpCTUdwQjlNVUFFQlFoQ1VFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFrZ0FVRUtJQVpCUUdzaUN4RElCQ0VDSUFzUUZpQUpFQThhSUFJTkZpQUdRVEJxUVlxekJCQVVJUWxCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FKUVFjZ0FVRUxJQVpCUUdzaUN4RE1BU0VDSUFzUUZpQUpFQThhSUFJTkZpQUVRUXBHQkVBZ0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVF3Z0JrRkFheUlKRUtBQklRSWdDUkFXSUFRUUR4b2dBZzBYSUFaQk1HcEJ6SzhFRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVOSUFaQlFHc2lDUkNnQVNFQ0lBa1FGaUFFRUE4YUlBSU5GeUFIUVR4SERRNGdCa0V3YWtIejNnSVFGQ0VFUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQkVFVElBRkJEaUFHUVVCcklnRVE5Z0VoQWlBQkVCWWdCQkFQR2lBQ1JRME9EQmNMSUFaQnpJa2dOZ0pBSUFZZ0JrRkFheUlDTmdKUUlBVWdBaUFCUVE0UWlRUWhCQ0FDRUJZZ0JFVUVRQ0FHUVRCcVFkdldBaEFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRVFUWWdBVUVPSUFaQlFHc2lDUkRNQVNFQ0lBa1FGaUFFRUE4YUlBSU5Gd3NnQjBIQUFFY05EU0FHUVRCcVFmUGVBaEFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRVFSTWdBVUVQSUFaQlFHc2lBUkQyQVNFQ0lBRVFGaUFFRUE4YUlBSkZEUTBNRmdzZ0JrRXdha0dTc3dRUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCMEVISUFGQkJTQUdRVUJySWdrUXpBRWhBaUFKRUJZZ0J4QVBHaUFDRFJVZ0JrRXdha0d4cWdRUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCeUFCUVFZZ0JrRkFheUlKUVFBUXlRUWhBaUFKRUJZZ0J4QVBHaUFDRFJVZ0JrRXdha0gyMGdRUUZDRUhRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCMEVqSUFGQkJ5QUdRVUJySWdrUTlnRWhBaUFKRUJZZ0J4QVBHaUFDRFJVZ0JFRUtSZ1JBSUFaQk1HcEIwcThFRUJRaEIwRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBY2dBVUVJSUFaQlFHc2lDUkNnQVNFQ0lBa1FGaUFIRUE4YUlBSU5GaUFHUVRCcVFZL3ZBaEFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSElBRkJDU0FHUVVCcklna1FvQUVoQWlBSkVCWWdCeEFQR2lBQ0RSWUxJQVpCTUdwQjlNVUFFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFjZ0FVRUtJQVpCUUdzaUNSRElCQ0VDSUFrUUZpQUhFQThhSUFJTkZTQUdRVEJxUVlxekJCQVVJUWRCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FIUVFjZ0FVRUxJQVpCUUdzaUNSRE1BU0VDSUFrUUZpQUhFQThhSUFJTkZTQUVRUXBIRFF3Z0JrRXdha0hTclFFUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVF3Z0JrRkFheUlCRUtBQklRSWdBUkFXSUFRUUR4b2dBa1VOREF3VkN5QUdRVEJxUWZiU0JCQVVJUWxCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FKUVNNZ0FVRUZJQVpCUUdzaUN4RDJBU0VDSUFzUUZpQUpFQThhSUFJTkZDQUVRUXBHQkVBZ0JrRXdha0hTcndRUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCQ0FCUVFZZ0JrRkFheUlKRUtBQklRSWdDUkFXSUFRUUR4b2dBZzBWSUFaQk1HcEJqKzhDRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVISUFaQlFHc2lDUkNnQVNFQ0lBa1FGaUFFRUE4YUlBSU5GUXNnQmtFd2FrSDB4UUFRRkNFRVFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0JDQUJRUWdnQmtGQWF5SUpFTWdFSVFJZ0NSQVdJQVFRRHhvZ0FnMFVJQWRCS0VjTkN5QUdRVEJxUVpLekJCQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFUVFjZ0FVRUpJQVpCUUdzaUFSRE1BU0VDSUFFUUZpQUVFQThhSUFKRkRRc01GQXNnQmtFd2FrR2JyUVFRRkNFRVFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0JDQUJRUVVnQmtGQWF5SUpFTWdFSVFJZ0NSQVdJQVFRRHhvZ0FnMFRJQWRCSEVjTkNpQUdRVEJxUWZQN0FCQVVJUVJCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FFUVJrZ0FVRUdJQVpCUUdzaUFSRDJBU0VDSUFFUUZpQUVFQThhSUFKRkRRb01Fd3NnQmtFd2FrR1Nzd1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NVRUhJQUZCQlNBR1FVQnJJZ3NRekFFaEFpQUxFQllnQ1JBUEdpQUNEUklnQmtFd2FrR3hxZ1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NTQUJRUVlnQmtGQWF5SUxRUUVReVFRaEFpQUxFQllnQ1JBUEdpQUNEUklnQmtFd2FrSDIwZ1FRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NVRWpJQUZCQnlBR1FVQnJJZ3NROWdFaEFpQUxFQllnQ1JBUEdpQUNEUklnQkVFS1JnUkFJQVpCTUdwQjBxOEVFQlFoQ1VFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFrZ0FVRUlJQVpCUUdzaUN4Q2dBU0VDSUFzUUZpQUpFQThhSUFJTkV5QUdRVEJxUVkvdkFoQVVJUWxCRkJBVklnSkJ2SWdnTmdJQUlBSWdCaWtEZ0FJM0FnUWdBaUFHS1FPSUFqY0NEQ0FHSUFJMkFsQWdCU0FKSUFGQkNTQUdRVUJySWdzUW9BRWhBaUFMRUJZZ0NSQVBHaUFDRFJNTElBWkJNR3BCOU1VQUVCUWhDVUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQWtnQVVFS0lBWkJRR3NpQ3hESUJDRUNJQXNRRmlBSkVBOGFJQUlORWlBRVFRcEhEUWtnQmtFd2FrSFNyUUVRRkNFSlFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0NTQUJRUXNnQmtGQWF5SUxFS0FCSVFJZ0N4QVdJQWtRRHhvZ0FnMFNJQWRCTkVjZ0JFRUtSM0lOQ1NBR1FUQnFRYmI3QVJBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCRENBR1FVQnJJZ0VRb0FFaEFpQUJFQllnQkJBUEdpQUNSUTBKREJJTElBWkJNR3BCMEwwRUVCUWhCMEVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQWRCR2lBQlFRVWdCa0ZBYXlJTEVQWUJJUUlnQ3hBV0lBY1FEeG9nQWcwUkFrQUNRQ0FGSUFFb0FnQW9BaGdRSUM4QkhrRTNhdzRGQVFBQUFBRUFDeUFHUVVCcklnUWdCVUZ5SUFFUUVDQUdRVEJxSWdFZ0JrR0FBbW9RTGlBRUlBRVFFaG9nQkVIdHRRd1FEaG9nQkVIKzRnRVFEaG9nQmlnQy9BRWhBaUFCRUE4YUlBUVFFUXdTQ3lBR1FUQnFRYTdzQWhBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRUjhnQVVFSElBWkJRR3NpQ3hEMkFTRUNJQXNRRmlBSEVBOGFJQUlORVNBRVFRcEhEUWhCQ0NFRVFRZ2dDU0FKUVFoTkd5RUNBMEFnQWlBRVJnMEpBa0FnQlNBQktBSUFJQVJCQW5ScUtBSUFFQ0FpQjBVTkFDQUhLQUlrSWdkRkRRQWdCRUVCYWlFRUlBVWdCMEVBUVFBUWdoWU5BUXNMSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFiandBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREJFTFFRVWhCRUVGSUFrZ0NVRUZUUnNoQ1FOQUlBUWdDVVlOQ0NBR1FUQnFRYzNjQWhBVUlRZEJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUhRUjRnQVNBRUlBWkJRR3NpQ3hEMkFTRUNJQXNRRmlBSEVBOGFJQVJCQVdvaEJDQUNSUTBBQ3d3UUN5QUdRZkNKSURZQ1FDQUdJQVpCUUdzaUFqWUNVQ0FGSUFJZ0FVRUZFSWtFSVFRZ0FoQVdJQVJGRFFoQkJpRUVRUVlnQ1NBSlFRWk5HeUVIQTBBZ0JDQUhSZzBISUFaQmxJb2dOZ0pBSUFZZ0JrRkFheUlDTmdKUUlBVWdBaUFCSUFRUWlRUWhDU0FDRUJZZ0JFRUJhaUVFSUFrTkFBc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCN2JVTUVBNGFJQVJCMk1RS0VBNGFJQVJCeVBFSkVBNGFJQVJCMGVNQkVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1Ed3NnQmtFd2FrR1Nzd1FRRkNFSFFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0IwRUhJQUZCQlNBR1FVQnJJZ2tRekFFaEFpQUpFQllnQnhBUEdpQUNEUTRnQmtFd2FrR2dxZ1FRRkNFSFFSUVFGU0lDUWJ5SUlEWUNBQ0FDSUFZcEE0QUNOd0lFSUFJZ0Jpa0RpQUkzQWd3Z0JpQUNOZ0pRSUFVZ0J5QUJRUVlnQmtGQWF5SUpRUUFReVFRaEFpQUpFQllnQnhBUEdpQUNEUTRnQmtHNGlpQTJBa0FnQmlBR1FVQnJJZ0kyQWxBZ0JTQUNJQUZCQnhDSkJDRUhJQUlRRmlBSFJRUkFJQVpCTUdwQm5OWURFQlFoQjBFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFkQkt5QUJRUWNnQmtGQWF5SUpFTXdCSVFJZ0NSQVdJQWNRRHhvZ0FnMFBDeUFHUVRCcVFmYlNCQkFVSVFkQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBSFFTTWdBVUVJSUFaQlFHc2lDUkQyQVNFQ0lBa1FGaUFIRUE4YUlBSU5EaUFFUVFwSERRVWdCa0V3YWtIU3J3UVFGQ0VFUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQkNBQlFRa2dCa0ZBYXlJSEVLQUJJUUlnQnhBV0lBUVFEeG9nQWcwT0lBWkJNR3BCais4Q0VCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVFnQVVFS0lBWkJRR3NpQVJDZ0FTRUNJQUVRRmlBRUVBOGFJQUpGRFFVTURnc2dCa0V3YWtHU3N3UVFGQ0VKUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQ1VFSElBRkJCU0FHUVVCcklnc1F6QUVoQWlBTEVCWWdDUkFQR2lBQ0RRMGdCa0V3YWtHeHFnUVFGQ0VKUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQ1NBQlFRWWdCa0ZBYXlJTFFRQVF5UVFoQWlBTEVCWWdDUkFQR2lBQ0RRMGdCa0V3YWtIMjBnUVFGQ0VKUVJRUUZTSUNRYnlJSURZQ0FDQUNJQVlwQTRBQ053SUVJQUlnQmlrRGlBSTNBZ3dnQmlBQ05nSlFJQVVnQ1VFaklBRkJCeUFHUVVCcklnc1E5Z0VoQWlBTEVCWWdDUkFQR2lBQ0RRMGdCRUVLUmdSQUlBWkJNR3BCMHE4RUVCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVFnQVVFSUlBWkJRR3NpQ1JDZ0FTRUNJQWtRRmlBRUVBOGFJQUlORGlBR1FUQnFRWS92QWhBVUlRUkJGQkFWSWdKQnZJZ2dOZ0lBSUFJZ0Jpa0RnQUkzQWdRZ0FpQUdLUU9JQWpjQ0RDQUdJQUkyQWxBZ0JTQUVJQUZCQ1NBR1FVQnJJZ2tRb0FFaEFpQUpFQllnQkJBUEdpQUNEUTRMSUFaQk1HcEJtNjBFRUJRaEJFRVVFQlVpQWtHOGlDQTJBZ0FnQWlBR0tRT0FBamNDQkNBQ0lBWXBBNGdDTndJTUlBWWdBallDVUNBRklBUWdBVUVLSUFaQlFHc2lDUkRJQkNFQ0lBa1FGaUFFRUE4YUlBSU5EU0FHUVRCcVFZcXpCQkFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRVFRY2dBVUVMSUFaQlFHc2lDUkRNQVNFQ0lBa1FGaUFFRUE4YUlBSU5EU0FHUWR5S0lEWUNRQ0FHSUFaQlFHc2lBallDVUNBRklBSWdBVUVNRUlrRUlRUWdBaEFXQWtBZ0JBMEFJQVVnQVNnQ0FDZ0NNQkFnTHdFZVFSQnlRVHRHRFFBZ0JrRkFheUlFSUFWQmNpQUJFQkFnQmtFd2FpSUJJQVpCZ0FKcUVDNGdCQ0FCRUJJYUlBUkI3YlVNRUE0YUlBUkJrNjRFRUE0YUlBWW9BdndCSVFJZ0FSQVBHaUFFRUJFTURnc2dCMEU4UncwRUlBWkJNR3BCNWQ0Q0VCUWhCRUVVRUJVaUFrRzhpQ0EyQWdBZ0FpQUdLUU9BQWpjQ0JDQUNJQVlwQTRnQ053SU1JQVlnQWpZQ1VDQUZJQVJCQ3lBQlFRNGdCa0ZBYXlJQkVQWUJJUUlnQVJBV0lBUVFEeG9nQWtVTkJBd05DeUFHUVRCcVFkS3ZCQkFVSVFSQkZCQVZJZ0pCdklnZ05nSUFJQUlnQmlrRGdBSTNBZ1FnQWlBR0tRT0lBamNDRENBR0lBSTJBbEFnQlNBRUlBRkJCU0FHUVVCcklna1FvQUVoQWlBSkVCWWdCQkFQR2lBQ0RRd0xJQVpCTUdwQm02MEVFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFRZ0FVRUdJQVpCUUdzaUNSRElCQ0VDSUFrUUZpQUVFQThhSUFJTkN5QUhRU0JIRFFJZ0JrRXdha0dhOXdRUUZDRUVRUlFRRlNJQ1FieUlJRFlDQUNBQ0lBWXBBNEFDTndJRUlBSWdCaWtEaUFJM0Fnd2dCaUFDTmdKUUlBVWdCRUVaSUFGQkJ5QUdRVUJySWdFUTlnRWhBaUFCRUJZZ0JCQVBHaUFDUlEwQ0RBc0xJQVpCTUdwQjBMMEVFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFSQkdpQUJRUVVnQmtGQWF5SUhFUFlCSVFJZ0J4QVdJQVFRRHhvZ0FnMEtJQVpCTUdwQnJ1d0NFQlFoQkVFVUVCVWlBa0c4aUNBMkFnQWdBaUFHS1FPQUFqY0NCQ0FDSUFZcEE0Z0NOd0lNSUFZZ0FqWUNVQ0FGSUFSQkh5QUJRUWNnQmtGQWF5SUhFUFlCSVFJZ0J4QVdJQVFRRHhvZ0FnMEtRUWdnQ1NBSlFRaE5HeUVIUVFnaEJBTkFJQVFnQjBZTkFnSkFJQVVnQkVFQ2RDSUNJQUVvQWdCcUtBSUFFQ0FpQ1M4QkhrRXJSZ1JBSUFVZ0NTZ0NKQkJRRFFFTEFrQWdCU0FCS0FJQUlBSnFLQUlBRUNBb0FnQWlBaWdDRUVFSWNrRWFSdzBBSUFVZ0FpZ0NHQkFnS0FJQUlnSW9BaEJCQWtjTkFDQUNLQUljSVFJZ0FTZ0NJRUVLUmdSL0lBVWdBaEI0UlEwQklBVWdBaENERmdVZ0FndEJmWEZCQkVZTkFRc2dCa0ZBYXlJRUlBVkJjaUFCRUJBZ0JrRXdhaUlCSUFaQmdBSnFFQzRnQkNBQkVCSWFJQVJCeWR3SkVBNGFJQVJCbGZRSkVBNGFJQVJCbVlVRUVBNGFJQVlvQXZ3QklRSWdBUkFQR2lBRUVCRU1EQXNnQkVFQmFpRUVEQUFMQUFzZ0MwSC8vLzgvUmcwREMwRUFJUUlNQ0FzZ0JrRXdhaUlFSUFVZ0FVRUNFQnNRSUNJQ1FRRVF4UVVnQmtFSWFpQUVJQVpCR0dwQm1kVUhFQlFpQ3lnQ0JDQUxMUUFMSWdRZ0JFRVlkRUVZZFVFQVNCdEJmeER2Q2dKQUlBWW9BZ3dnQmkwQUV5SUVJQVJCR0hSQkdIVkJBRWdpQkJ0RkJFQWdCa0ZBYXlJQklBVkJjaUFDRUJBZ0FVR3g3UUlRRGhvZ0JpZ0MvQUVoQWlBQkVCRU1BUXNnQmlnQ0NDQUdRUWhxSUFRYklBWkJMR3BCQ2tMLy8vLy9EeENrRGFjaENRSkFJQVlvQWl3aUJFVU5BQ0FFTFFBQVJRMEFJQVpCUUdzaUFTQUZRWElnQWhBUUlBRkIreE1RRGhvZ0JpZ0MvQUVoQWlBQkVCRU1BUXNnQ1VFR2EwRjZUUVJBSUFaQlFHc2lBU0FGUVhJZ0FoQVFJQUZCL3V3Q0VBNGFJQVlvQXZ3QklRSWdBUkFSREFFTEl3QkI0QUZySWdJa0FBSkFJQVVnQVNnQ0pCQ2RCMFVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWRic0JCQU9HaUFDS0FMY0FTRUVJQWNRRVF3QkN3SkFBa0FDUUNBQlFRTVFHeUlIUVFGcklnUkJKMHNOQUNBSklBUkJBblJCZ01jTmFpZ0NBQ0lFU1FSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFKQkVHb2lEQ0FGSUFFUWdSWWdCeUFNRUJJYUlBZEJwb29LRUE0YUlBY2dCQkFoR2lBSFFmM2NDUkFPR2lBSElBa1FJUm9nQWlnQzNBRWhCQ0FNRUE4YUlBY1FFUXdFQzBFQUlRUUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQWRCQVdzT0tBQUJBZ0lEQXdRQ0FnSUZCZ1lIQ0FnSUNBZ0lDUWtLQ3d3RUF3a05EZzRQRHdJQ0VCQVJFaE1hQ3lBQ1FSQnFJQVVnQVJDQkZpQUZJQUZCQkJBYklnY1FJQzhCSGtFMlJ3UkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBY2dBa0VRYWhBU0dpQUhRZmZTQWhBT0dpQUNLQUxjQVNFRUlBY1FFUXdaQ3lBRktBTEVBU0VNSUFVb0FzQUJJUVFEUUNBRUlBeEdEUlFnQkNnQ0FDRVJJQVJCQkdvaEJDQUhJQkZIRFFBTEFrQWdCU0FIRUtVR0lnUUVRQ0FFS0FJSURRRUxJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBY2dBa0VRYWhBU0dpQUhRZFU4RUE0YUlBSW9BdHdCSVFRZ0J4QVJEQmtMSUFSQkJHb2hEQ0FFS0FJQUlRUURRQ0FFSUF4SEJFQWdCQ2dDRUVFRlJ3UkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBY2dBa0VRYWhBU0dpQUhRWnIrQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdiQlNBRUVFd2hCQXdDQ3dBTEN3SkFJQVVnQVVFRkVCc1FJQ0lFQkVBZ0JDOEJIa0VIUmcwQkN5QUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFjMjlBeEFPR2lBQ0tBTGNBU0VFSUFjUUVRd1pDeUFDSUFSQkFSREZCU0FGSUFjUTNnMGlCQ2dDQkNFSElBUW9BZ0FoQkFOQUlBUWdCMFlORlNBQ0lBUVE4Z01oRENBRVFSaHFJUVFnREVVTkFBc2dBU2dDRUNBQktBSU1heUlIUWVFQVNTQUpRUVJMY2tVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFkU0tDaEFPR2lBSElBa1FJUm9nQjBHcHd3b1FEaG9nQnlBQ1FSQnFFQklhSUFkQjBjRUJFQTRhSUFJb0F0d0JJUVFnQnhBUkRCZ0xRUUFoQkNBSFFlRUFTUTBYSUFVZ0FVRUdFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFlUFhBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd1lDeUFIUWZFQVNRMFhJQVVnQVVFSEVCc1FlRVVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUVozWUFCQU9HaUFDS0FMY0FTRUVJQWNRRVF3WUN5QUhRWUVCU1EwWElBVWdBVUVJRUJzUWNFRUhSZzBYSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCaWIwREVBNGFJQUlvQXR3QklRUWdCeEFSREJjTElBRW9BaEFoQkNBQktBSU1JUWNnQlNBQlFRUVFHeEJ3UVFkSEJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSE52UU1RRGhvZ0FpZ0MzQUVoQkNBSEVCRU1HUXNnQkNBSGF5SUVRZEVBU1EwVklBVWdBVUVGRUJzUWNFRUhSd1JBSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCeWIwREVBNGFJQUlvQXR3QklRUWdCeEFSREJrTElBUkI0UUJKRFJVZ0JTQUJRUVlRR3hCNFJRUkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEJpOWtBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQmtMSUFSQjhRQkpEUlVnQlNBQlFRY1FHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQnlka0FFQTRhSUFJb0F0d0JJUVFnQnhBUkRCa0xJQVJCZ1FGSkRSVkJBQ0VFSUFVZ0FVRUlFQnNRZUEwWUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQmh0b0FFQTRhSUFJb0F0d0JJUVFnQnhBUkRCZ0xJQUVvQWhBaEJ5QUJLQUlNSVFrZ0JTQUJFS01HSWdRTkZ5QUZJQUZCQlJBYkVIaEZCRUFnQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEh5MmdBUURob2dBaWdDM0FFaEJDQUhFQkVNR0FzZ0JTQUJRUVlRR3hCNFJRUkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEJxTmNBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQmdMSUFVZ0FVRUhFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFkbmJBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd1lDeUFISUFsclFaQUJSdzBVSUFVZ0FVRUlFSzRLSWdRTkZ3d1VDeUFCS0FJUUlRY2dBU2dDRENFSklBVWdBUkNqQmlJRURSWWdCU0FCUVFVUUd4QjRSUVJBSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCOHRvQUVBNGFJQUlvQXR3QklRUWdCeEFSREJjTElBVWdBVUVHRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRYWpYQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdYQ3lBRklBRkJCeEFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSFoyd0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1Gd3NnQlNBQlFRZ1FHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQjlOWUFFQTRhSUFJb0F0d0JJUVFnQnhBUkRCY0xJQVVnQVVFSkVCc1FlRVVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUVlQZEFCQU9HaUFDS0FMY0FTRUVJQWNRRVF3WEN5QUhJQWxyUWJBQlJ3MFRJQVVnQVVFS0VLNEtJZ1JGRFJNTUZnc2dBU2dDRUNFSElBRW9BZ3doQ1NBRklBRVFvd1lpQkEwVklBVWdBVUVGRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRZkxhQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdXQ3lBRklBRkJCaEFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSDAxZ0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1GZ3NnQlNBQlFRY1FHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQmc5MEFFQTRhSUFJb0F0d0JJUVFnQnhBUkRCWUxJQWNnQ1d0QmtBRkhEUklnQlNBQlFRZ1FyZ29pQkVVTkVnd1ZDeUFCS0FJUUlRY2dBU2dDRENFSklBVWdBUkNqQmlJRURSUWdCU0FCUVFVUUd4QjRSUVJBSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCOHRvQUVBNGFJQUlvQXR3QklRUWdCeEFSREJVTElBVWdBVUVHRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRYlhkQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdWQ3lBRklBRkJCeEFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSC8zQUFRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1GUXNnQnlBSmEwR1FBVWNORVNBRklBRkJDQkN1Q2lJRVJRMFJEQlFMSUFVZ0FVRUVFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFjZmVBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd1VDeUFGSUFGQkJSQWJFSGhGQkVBZ0FrRWdhaUlISUFWQmRpQUJFQkFnQjBHWTNnQVFEaG9nQWlnQzNBRWhCQ0FIRUJFTUZBc2dCU0FCUVFZUUd4QjREUk1nQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEhwM1FBUURob2dBaWdDM0FFaEJDQUhFQkVNRXdzZ0JTQUJRUVFRR3hCNERSSWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSEIyZ0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1FZ3NnQlNBQlFRUVFHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQjlOWUFFQTRhSUFJb0F0d0JJUVFnQnhBUkRCSUxJQVVnQVVFRkVCc1FlQTBSSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCZzkwQUVBNGFJQUlvQXR3QklRUWdCeEFSREJFTElBVWdBVUVFRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRYWpYQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdSQ3lBRklBRkJCUkFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSFoyd0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1FUXNnQlNBQlFRWVFHeEJ3UVFkR0RSQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSG12UU1RRGhvZ0FpZ0MzQUVoQkNBSEVCRU1FQXNnQlNBQlFRUVFHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQnFOY0FFQTRhSUFJb0F0d0JJUVFnQnhBUkRCQUxJQVVnQVVFRkVCc1FlRVVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWRuYkFCQU9HaUFDS0FMY0FTRUVJQWNRRVF3UUN5QUZJQUZCQmhBYkVIZ05EeUFDUVNCcUlnY2dCVUYySUFFUUVDQUhRYWZiQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdQQ3lBRklBRVFvd1lpQkEwT0lBVWdBVUVGRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRY2ZlQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdQQ3lBRklBRkJCaEFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwR1kzZ0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1Ed3RCQUNFRUlBVWdBVUVIRUJzUWVBME9JQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEI2ZDBBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQTRMSUFVZ0FVRUVFQnNRZUEwTklBSkJJR29pQnlBRlFYWWdBUkFRSUFkQmc5MEFFQTRhSUFJb0F0d0JJUVFnQnhBUkRBMExJQVVnQVVFRUVCc1FlRVVFUUNBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWJQV0FCQU9HaUFDS0FMY0FTRUVJQWNRRVF3TkN5QUZJQUZCQlJBYkVIaEZCRUFnQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEh0MWdBUURob2dBaWdDM0FFaEJDQUhFQkVNRFFzZ0JTQUJRUVlRR3hCNERRd2dBa0VnYWlJSElBVkJkaUFCRUJBZ0IwR08zQUFRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1EQXNnQlNBQkVLTUdJZ1FOQ3lBRklBRkJCUkFiRUhoRkJFQWdBa0VnYWlJSElBVkJkaUFCRUJBZ0IwSHkyZ0FRRGhvZ0FpZ0MzQUVoQkNBSEVCRU1EQXNnQlNBQlFRWVFHeEI0UlFSQUlBSkJJR29pQnlBRlFYWWdBUkFRSUFkQjlOWUFFQTRhSUFJb0F0d0JJUVFnQnhBUkRBd0xRUUFoQkNBRklBRkJCeEFiRUhnTkN5QUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFZUGRBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0xDeUFGSUFFUW93WWlCQTBLSUFVZ0FVRUZFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFmTGFBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0xDeUFGSUFGQkJoQWJFSGhGQkVBZ0FrRWdhaUlISUFWQmRpQUJFQkFnQjBHbzF3QVFEaG9nQWlnQzNBRWhCQ0FIRUJFTUN3c2dCU0FCUVFjUUd4QjRSUVJBSUFKQklHb2lCeUFGUVhZZ0FSQVFJQWRCMmRzQUVBNGFJQUlvQXR3QklRUWdCeEFSREFzTElBVWdBVUVJRUJzUWVFVUVRQ0FDUVNCcUlnY2dCVUYySUFFUUVDQUhRZlRXQUJBT0dpQUNLQUxjQVNFRUlBY1FFUXdMQzBFQUlRUWdCU0FCUVFrUUd4QjREUW9nQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEdEM1FBUURob2dBaWdDM0FFaEJDQUhFQkVNQ2dzZ0JTQUJRUVFRR3hCNFJRUkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEI5TllBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQW9MSUFVZ0FVRUZFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFZUGRBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0tDeUFGSUFGQkJoQWJFSEJCQjBZTkNTQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFlYTlBeEFPR2lBQ0tBTGNBU0VFSUFjUUVRd0pDeUFGSUFGQkJCQWJFSGhGQkVBZ0FrRWdhaUlISUFWQmRpQUJFQkFnQjBIMjNnQVFEaG9nQWlnQzNBRWhCQ0FIRUJFTUNRc2dCU0FCUVFVUUd4QndRUWRIRFFSQkJpRUVBMEFnQkNBQktBSVFJQUVvQWd4clFRUjFUdzBHSUFFZ0JCQWJJUWNnQkVFQmFpRUVJQVVnQnhCNERRQUxJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEIwTmdBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQWdMSUFVZ0FVRUVFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFhalhBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0lDeUFGSUFGQkJSQWJFSGhGQkVBZ0FrRWdhaUlISUFWQmRpQUJFQkFnQjBIWjJ3QVFEaG9nQWlnQzNBRWhCQ0FIRUJFTUNBc2dCU0FCUVFZUUd4QjREUWNnQWtFZ2FpSUhJQVZCZGlBQkVCQWdCMEdEM1FBUURob2dBaWdDM0FFaEJDQUhFQkVNQndzZ0JTQUJRUVFRR3hCNFJRUkFJQUpCSUdvaUJ5QUZRWFlnQVJBUUlBZEI5TllBRUE0YUlBSW9BdHdCSVFRZ0J4QVJEQWNMSUFVZ0FVRUZFQnNRZUVVRVFDQUNRU0JxSWdjZ0JVRjJJQUVRRUNBSFFZUGRBQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0hDeUFGSUFGQkJoQWJFSGdOQmlBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWNmY0FCQU9HaUFDS0FMY0FTRUVJQWNRRVF3R0N5QUNRU0JxSWdjZ0JVRjJJQUVRRUNBSElBSkJFR29RRWhvZ0IwSFZQQkFPR2lBQ0tBTGNBU0VFSUFjUUVRd0VDeUFDUVNCcUlnY2dCVUYySUFFUUVDQUhRZDJBQXhBT0dpQUNLQUxjQVNFRUlBY1FFUXdDQ3lBQ1FTQnFJZ2NnQlVGMklBRVFFQ0FIUWFpOUF4QU9HaUFDS0FMY0FTRUVJQWNRRVF3REMwRUFJUVFNQWdzZ0FoQVBHZ3NnQWtFUWFoQVBHZ3NnQWtIZ0FXb2tBQ0FFSVFJTElBWkJDR29RRHhvZ0N4QVBHaUFHUVRCcUVBOGFEQWNMSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFZKzJDaEFPR2lBRVFZSFVBaEFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFZTFFkV1NCMEdsbXdKQjNSeEJyaThRQUFBTElBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRYjNFQ2hBT0dpQUVRZWJ5Q1JBT0dpQUVRZHp6Q1JBT0dpQUVRZm1GQkJBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBUUxJQVpCUUdzaUJDQUZRWElnQVJBUUlBWkJNR29pQ3lBR1FZQUNhaEF1SUFRZ0N4QVNHaUFFUWUyMURCQU9HaUFFUWR1QkFSQU9HaUFHS0FMOEFTRUNJQXNRRHhvZ0JCQVJDMEVCSUFkMFFaK0NCSEZGSUFkQkVFdHlEUUlMSUFVUXBBY2lBa1VFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFR0xxZ0VRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3Q0N3SkFJQVVnQ1JCUUJFQWdCU0FKRUQ0Z0FrWU5BUXNnQmtGQWF5SUVJQVZCY2lBQkVCQWdCa0V3YWlJQklBWkJnQUpxRUM0Z0JDQUJFQklhSUFSQjdiVU1FQTRhSUFSQmd2d0lFQTRhSUFRZ0FoQWhHaUFFUWFhK0NCQU9HaUFHS0FMOEFTRUNJQUVRRHhvZ0JCQVJEQUlMSUFaQkFEWUNDQ0FGSUF3Z0JrRUlhaUFHUVJocUVJZ0NSUVJBSUFaQlFHc2lCQ0FGUVhJZ0FSQVFJQVpCTUdvaUFTQUdRWUFDYWhBdUlBUWdBUkFTR2lBRVFlMjFEQkFPR2lBRVFaamNBUkFPR2lBR0tBTDhBU0VDSUFFUUR4b2dCQkFSREFJTElBWW9BaGdpQWtFSVRVRUFRUUVnQW5SQnNBTnhHMFVFUUNBR1FVQnJJZ1FnQlVGeUlBRVFFQ0FHUVRCcUlnRWdCa0dBQW1vUUxpQUVJQUVRRWhvZ0JFSHR0UXdRRGhvZ0JFSE0xQUlRRGhvZ0JpZ0MvQUVoQWlBQkVBOGFJQVFRRVF3Q0N5QUZJQVlvQWdnUWR3UkFJQVVnQmlnQ0NCQStRUkJHRFFFTElBWkJRR3NpQkNBRlFYSWdBUkFRSUFaQk1Hb2lBU0FHUVlBQ2FoQXVJQVFnQVJBU0dpQUVRZTIxREJBT0dpQUVRZWlKQWhBT0dpQUdLQUw4QVNFQ0lBRVFEeG9nQkJBUkRBRUxRUUFoQWdzZ0JrR1FBbW9rQUNBQ0lRRUxJQUVMSWdFTkJ5TUFRZUFCYXlJQ0pBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBeThCSGlJQlFRNXJEZ01CQUFNQ0N3SkFJQVVnQTBFQkVCc2lCQkFnSWdFRVFDQUJMd0VlUVRaR0RRRUxJQUpCSUdvaUFTQUZRWFlnQXhBUUlBRkJ6TU1MRUE0YUlBSkJFR29pQmlBRklBUVFLaUFCSUFZUUVob2dBVUdGMVFjUURob2dBaWdDM0FFaEJ5QUdFQThhREFZTEFrQWdBMEVBRUJzaUNVRUdSZzBBSUFVZ0FVRURFQnNRSUNJSEJFQWdCeWdDQkNBSEtBSUFhMEVNUmcwQkN5QUNRU0JxSWdFZ0JVRjJJQU1RRUNBQ1FSQnFJZ1lnQlVHWkpCQTNJQUVnQmhBU0dpQUJRY3pEQ3hBT0dpQUNJQVVnQkJBcUlBRWdBaEFTR2lBQlFmN09CeEFPR2lBQ0tBTGNBU0VISUFJUUR4b2dCaEFQR2d3R0N3SkFJQVVnQVNnQ0pCQWdJZ0VFUUNBQkx3RWVRUk5HRFFFTElBSkJJR29pQVNBRlFYWWdBeEFRSUFKQkVHb2lCaUFGUVpra0VEY2dBU0FHRUJJYUlBRkJ6TU1MRUE0YUlBSWdCU0FFRUNvZ0FTQUNFQklhSUFGQnFQd0hFQTRhSUFJb0F0d0JJUWNnQWhBUEdpQUdFQThhREFZTElBVWdCQkMwQ0NFRUlBVXRBSUFCUVFKeFJRMEVBa0FDUUFKQUFrQWdDVUVCYXc0RUFRRUNBQU1MQWtBZ0JBUkFJQUpCQnpZQ0lBSkFJQVFnQWtFZ2FoRFVCVVVOQUNBQ1FRZzJBaEFnQkNBQ1FSQnFFTlFGUlEwQUlBSkJJR29pQVNBRlFYSWdBeEFRSUFGQnM3Z0hFQTRhSUFJb0F0d0JJUWNNQ3dzZ0FrRUhOZ0lnSUFRZ0FrRWdhaERVQlEwQklBSkJDRFlDRUNBRUlBSkJFR29RMUFVTkFRc2dBa0VnYWlJQklBVkJjaUFERUJBZ0FVSCsrQWNRRGhvZ0FpZ0MzQUVoQnd3SkN5QUVRUVJxSVFZZ0JDZ0NBQ0VIUVFBaEFRTkFJQVlnQjBjRVFDQUJJQWNvQWhCQkRtdEJBMGxxSVFFZ0J4Qk1JUWNNQVFzTElBRkJBazhFUUNBQ1FTQnFJZ0VnQlVGeUlBTVFFQ0FCUWJLOEJ4QU9HaUFDS0FMY0FTRUhEQWtMSUFRb0FnQWhCMEVBSVFFRFFDQUdJQWRIQkVBZ0FTQUhLQUlRUWZZcGEwRUdTV29oQVNBSEVFd2hCd3dCQ3dzZ0FVRUNUd1JBSUFKQklHb2lBU0FGUVhJZ0F4QVFJQUZCNmZrSEVBNGFJQUlvQXR3QklRY01DUXNnQkNnQ0FDRUhRUUFoQVFOQUlBWWdCMGNFUUNBQklBY29BaEJCMXlkclFRTkphaUVCSUFjUVRDRUhEQUVMQ3lBQlFRSlBCRUFnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUd1dlFjUURob2dBaWdDM0FFaEJ3d0pDeUFFS0FJQUlRZEJBQ0VCQTBBZ0JpQUhSd1JBSUFFZ0J5Z0NFRUhhSjJ0QkEwbHFJUUVnQnhCTUlRY01BUXNMSUFGQkFra05CeUFDUVNCcUlnRWdCVUZ5SUFNUUVDQUJRZEcrQnhBT0dpQUNLQUxjQVNFSERBZ0xJQVJGRFFZZ0JFRUVhaUVHSUFRb0FnQWhCMEVBSVFFRFFDQUdJQWRIQkVBZ0FTQUhLQUlRUVFGclFRTkphaUVCSUFjUVRDRUhEQUVMQ3lBQlFRSlBCRUFnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUdndXdjUURob2dBaWdDM0FFaEJ3d0lDeUFFS0FJQUlRZEJBQ0VCQTBBZ0JpQUhSd1JBSUFFZ0FVRUJhaUFIS0FJUUlnRkJHVXRCQVNBQmRFR0FnSUFhY1VWeUd5RUJJQWNRVENFSERBRUxDeUFCUVFKT0JFQWdBa0VnYWlJQklBVkJjaUFERUJBZ0FVR2x1UWNRRGhvZ0FpZ0MzQUVoQnd3SUN5QUVLQUlBSVFkQkFDRUJBMEFnQmlBSFJ3UkFJQUVnQnlnQ0VFRitjVUVFUm1vaEFTQUhFRXdoQnd3QkN3c2dBVUVDU1EwR0lBSkJJR29pQVNBRlFYSWdBeEFRSUFGQnZiY0hFQTRhSUFJb0F0d0JJUWNNQndzQ1FDQUVCRUFnQkVFRWFpRUdJQVFvQWdBaEIwRUFJUUVEUUNBR0lBZEhCRUFnQVNBSEtBSVFRUk5yUVFWSmFpRUJJQWNRVENFSERBRUxDeUFCUVFGR0RRRUxJQUpCSUdvaUFTQUZRWElnQXhBUUlBRkJsN1lIRUE0YUlBSW9BdHdCSVFjTUJ3c2dCQ2dDQUNFSFFRQWhBUU5BSUFZZ0IwY0VRQ0FCSUFjb0FoQkJHMnRCQTBscUlRRWdCeEJNSVFjTUFRc0xJQUZCQVVZTkJTQUNRU0JxSWdFZ0JVRnlJQU1RRUNBQlFaaTZCeEFPR2lBQ0tBTGNBU0VIREFZTElBbEI5U2xHRFFNTUJBc0NRQ0FGS0FLVUEwRURSZzBBSUFWQmdBRnFRZUVwRUdoRkRRQWdBa0VnYWlJQklBVkJjaUFERUJBZ0FVSDEvUWNRRGhvZ0FpZ0MzQUVoQnd3RkN3SkFJQVVvQWdBb0FnQVFwZ1pGRFFBQ1FDQUZLQUtRQTBFQlJnMEFJQVVvQXBBRFFRSkdEUUFnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUd0dGd3UURob2dBVUhkb2djUURob2dBaWdDM0FFaEJ3d0dDeUFGS0FLVUEwRUNSZzBBSUFKQklHb2lBU0FGUVhJZ0F4QVFJQUZCN0tFSEVBNGFJQUlvQXR3QklRY01CUXNnQlNnQ0FDZ0NBQkJIUlEwRklBVW9BcEFEUlEwRklBVW9BcEFEUWVRcFJnMEZJQUpCSUdvaUFTQUZRWElnQXhBUUlBSkJFR29pQkNBRlFac2tFRGNnQVNBRUVCSWFJQUZCOExVTUVBNGFJQUZCdEtBSEVBNGFJQUlvQXR3QklRY2dCQkFQR2d3RUN5QUJRY3NDUncwRUN5QUNJQU5CQUJBYk5nSUFJQVVvQXNBQklBVW9Bc1FCSUFJUW1nVWdCU2dDeEFGR0JFQWdBa0VnYWlJQklBVkJkaUFERUJBZ0FVSHJ3d3NRRGhvZ0FrRVFhaUlFSUFVZ0FpZ0NBQkFxSUFFZ0JCQVNHaUFCUWJ1YUJ4QU9HaUFDS0FMY0FTRUhJQVFRRHhvTUF3c2dBMEVCRUJzaEJBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0F5OEJIa0hMQWtZRVFFRUNJQU1vQWhBZ0F5Z0NER3RCQkhVaUFTQUJRUUpOR3lFQklBUkJKV3RCQWtzaEJrRUNJUWNEUUNBQklBZEdEUUlnQlNBRFFRSVFHeEFnSVFrZ0JnMERJQWRCQVdvaEJ5QUpMd0VlRUtNQ0RRQUxJQUpCSUdvaUFTQUZRWFlnQXhBUUlBRkI0cTRIRUE0YUlBSW9BdHdCSVFjTUN3c2dCRUVsYTBFQ1N3MEFJQUpCSUdvaUFTQUZRWElnQXhBUUlBRkI3c0VIRUE0YUlBSW9BdHdCSVFjTUNnc2dCU0FDS0FJQUVLVUdJUUVDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQkE0b0FRTURBd01ERGc0T0RnTVBEZzhPRGc0SUJ3RUJBUVFCQXdNRkFnRUJCd2NQRHc4UER3OElCd0FMSUFSQjF5ZHJRUVpKSUFSQjlpbHJRUVpKY2cwTklBUkJsU2xySWdkQkhVME5CUXdNQ3lBQlFRUnFJUVlnQVNnQ0FDRUhBMEFnQmlBSFJnME9JQWNvQWhCQkEwWUVRQ0FIRUV3aEJ3d0JDd3NnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUdWM3djUURob2dBaWdDM0FFaEJ3d1FDeUFGUVlBQmFpRUdJQUZCQkdvaENTQUJLQUlBSVFjRFFDQUhJQWxHRFEwQ1FDQUhLQUlRSWdGQkEwWU5BQ0FCUVpRcFJ3UkFJQUZCOVNsSERRd2dCa0dqS1JCb0RRRU1EQXNnQmtHU0tSQm9SUTBMQ3lBSEVFd2hCd3dBQ3dBTElBRkJCR29oQmlBQktBSUFJUWNEUUNBR0lBZEdEUXdnQnlnQ0VFRUJhMEVCVFFSQUlBY1FUQ0VIREFFTEN5QUNRU0JxSWdFZ0JVRnlJQU1RRUNBQlFlemdCeEFPR2lBQ0tBTGNBU0VIREE0TElBRkJCR29oQmlBQktBSUFJUWNEUUNBR0lBZEdEUXNnQnlnQ0VFRUJhMEVDVFFSQUlBY1FUQ0VIREFFTEN5QUNRU0JxSWdFZ0JVRnlJQU1RRUNBQlFadmdCeEFPR2lBQ0tBTGNBU0VIREEwTElBVkJnQUZxSVFZZ0FVRUVhaUVKSUFFb0FnQWhCd05BSUFjZ0NVWU5DZ0pBSUFjb0FoQWlBVUVCYTBFRFNRMEFJQUZCbENsSEJFQWdBVUgxS1VjTkNDQUdRYU1wRUdnTkFRd0lDeUFHUVpJcEVHaEZEUWNMSUFjUVRDRUhEQUFMQUF0QkFTQUhkRUdEZ0lDQUFuRkZEUVlnQVVFRWFpRUdJQUVvQWdBaEJ3TkFJQVlnQjBZTkNTQUhLQUlRSWdGQjlTbEhJQUZCbENsSGNVVUVRQ0FIRUV3aEJ3d0JDd3NnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUcrNGdjUURob2dBaWdDM0FFaEJ3d0xDeUFCUVFScUlRWWdBU2dDQUNFSEEwQWdCaUFIUmcwSUlBY29BaEJCQmtZRVFDQUhFRXdoQnd3QkN3c2dBa0VnYWlJQklBVkJjaUFERUJBZ0FVR3g0UWNRRGhvZ0FpZ0MzQUVoQnd3S0N3SkFJQVJCSmtjTkFDQUZMUUN0QXcwQUlBVW9BZ1F0QUNzTkFDQUNRU0JxSWdFZ0JVRnlJQU1RRUNBQlFZR2JCeEFPR2lBQ0tBTGNBU0VIREFvTElBVkJnQUZxSVFZZ0FVRUVhaUVKSUFFb0FnQWhCd05BSUFjZ0NVWU5Cd0pBSUFjb0FoQWlBVUVGYTBFQ1NRMEFJQUZCa3lsclFRSlBCRUFnQVVIMEtXdEJBVXNOQkNBR1FhTXBFR2dOQVF3RUN5QUdRWklwRUdoRkRRTUxJQWNRVENFSERBQUxBQXNnQWtFZ2FpSUJJQVZCZGlBREVCQWdBVUdId3djUURob2dBaWdDM0FFaEJ3d0lDd0pBSUFaQmtpa1FhRVVFUUNBR1FhTXBFR2hGRFFFTElBSkJJR29pQVNBRlFYSWdBeEFRSUFGQml1TUhFQTRhSUFJb0F0d0JJUWNNQ0FzZ0FrRWdhaUlCSUFWQmNpQURFQkFnQVVIeTRRY1FEaG9nQWlnQzNBRWhCd3dIQ3dKQUlBWkJraWtRYUVVRVFDQUdRYU1wRUdoRkRRRUxJQUpCSUdvaUFTQUZRWElnQXhBUUlBRkJ6ZVFIRUE0YUlBSW9BdHdCSVFjTUJ3c2dBa0VnYWlJQklBVkJjaUFERUJBZ0FVR2I0QWNRRGhvZ0FpZ0MzQUVoQnd3R0N3SkFJQVpCa2lrUWFFVUVRQ0FHUWFNcEVHaEZEUUVMSUFKQklHb2lBU0FGUVhJZ0F4QVFJQUZCK09NSEVBNGFJQUlvQXR3QklRY01CZ3NnQWtFZ2FpSUJJQVZCY2lBREVCQWdBVUdWM3djUURob2dBaWdDM0FFaEJ3d0ZDeUFFUVprblJ3MEJDeUFCUVFScUlRWWdBU2dDQUNFSEEwQWdCaUFIUmcwQklBY29BaEJCQkVZRVFDQUhFRXdoQnd3QkN3c2dBa0VnYWlJQklBVkJjaUFERUJBZ0FVSFkzd2NRRGhvZ0FpZ0MzQUVoQnd3REN5QUZLQUlBS0FJQUVFZEZEUU1DUUFKQUlBUkJCbXNPQXdFRkFBVUxJQUpCSUdvaUFTQUZRWElnQXhBUUlBSkJFR29pQkNBRlFhMGtFRGNnQVNBRUVCSWFJQUZCdVA4SEVBNGFJQUlvQXR3QklRY2dCQkFQR2d3REN5QUNRU0JxSWdFZ0JVRnlJQU1RRUNBQ1FSQnFJZ1FnQlVHdUpCQTNJQUVnQkJBU0dpQUJRWWlBQ0JBT0dpQUNLQUxjQVNFSElBUVFEeG9NQWdzQ1FDQUVCRUFnQkVFRWFpRUdJQVFvQWdBaEIwRUFJUUVEUUNBR0lBZEhCRUFnQVNBQlFRRnFJQWNvQWhBaUFVRWJSaUFCUWJJcFJuSkZJQUZCbFNsSGNSc2hBU0FIRUV3aEJ3d0JDd3NnQVVFQlJnMEJDeUFDUVNCcUlnRWdCVUZ5SUFNUUVDQUJRZURBQnhBT0dpQUNLQUxjQVNFSERBSUxJQVFvQWdBaEIwRUFJUUVEUUNBR0lBZEhCRUFnQVNBSEtBSVFJZ3RCbGlsR0lBdEJHa1p5YWlFQklBY1FUQ0VIREFFTEN5QUJRUUpHRFFBZ0FrRWdhaUlCSUFWQmNpQURFQkFnQVVIeHZ3Y1FEaG9nQWlnQzNBRWhCd3dCQ3lBRktBSUFLQUlBRUVkRklBbEJCVWR5RFFFZ0JBUkFJQUpCRVRZQ0lDQUVJQUpCSUdvUTFBVU5BZ3NnQlNnQ3BBRWhBU0FGS0FLZ0FTRUhBMEFnQVNBSFJ3UkFJQWN2QVI0aUJFSEhBRVlFZndKQUlBY29BaEFnQnlnQ0RHdEJJVWtOQUNBSFFRRVFHMEVMUncwQUlBZEJBaEFiUVJsR0RRVUxJQWN2QVI0RklBUUxRZi8vQTNGQnl3SkdCRUFnQjBFQkVCdEJKa1lOQkFzZ0IwSE1BR29oQnd3QkN3c2dBa0VnYWlJQklBVkJjaUFERUJBZ0FrRVFhaUlFSUFWQm1qSVFOeUFCSUFRUUVob2dBVUdvaFFnUURob2dBaWdDM0FFaEJ5QUVFQThhQ3lBQkVCRWdCdzBCQzBFQUlRY0xJQUpCNEFGcUpBQWdCeUlCRFFkQkFDRUhJd0JCZ0FKcklna2tBQUpBSUFOQkhtb2lCQzhCQUJEUUFrVUVRQ0FFTHdFQVFTZEhEUUVMSUFRaEFRSkFJQVZCa0FGcVFlOEFFR2dOQUNBRUx3RUFJZzlCSEdzaUFVSC8vd054UVFWUFFSY2dBWFpCQVhGRmNrVUVRQ0FCUVJCMFFSQjFRUUYwUWVySURXb2hBUXdCQ3lBRUlRRUNmeU1BUVNCcklnc2tBQ0FMUVFBMkFoZ2dDMElBTndNUUlBc2dBeThCSGpZQ0NDQUxRUkJxSUF0QkNHb1Ezd0lDUUFOQUlBTW9BaEFnQXlnQ0RDSUNhMEVFZFNBSFN3UkFJQUlnQjBFRWRHb2lBaWdDQkVFRFJ3UkFJQUl2QVFBaUJpQUNMd0VDYWlJTUlBTW9BZ1FnQXlnQ0FDSUNhMEVDZFVvTkF5QUxRUkJxSUFzb0FoUWdBaUFHUVFKMGFpQUNJQXhCQW5ScUVOSUtDeUFIUVFGcUlRY01BUXNMSXdCQkVHc2lFU1FBSXdCQkVHc2lEQ1FBSUF0QkVHb2hEU0FGUWZRQ2FpSVFRUVJxSVFjQ1FDQVFLQUlFSWdaRkJFQWdCeUVDREFFTEEwQWdEU0FHSWdKQkVHb2lCaEQ4RFFSQUlBSWhCeUFDS0FJQUlnWU5BUXdDQ3lBR0lBMFEvQTFGRFFFZ0FrRUVhaUVISUFJb0FnUWlCZzBBQ3dzZ0RDQUNOZ0lNSUJFZ0J5Z0NBQ0lDQkg5QkFBVkJIQkFWSVFJZ0RDQVFRUVJxTmdJRUlBd2dBallDQUNBQ1FSQnFJQTBRcFFJYUlBeEJBVG9BQ0NBUUlBd29BZ3dnQnlBTUtBSUFFUGdDSUF3b0FnQWhBaUFNUVFBMkFnQWdEQ2dDQUNFSElBeEJBRFlDQUNBSEJFQWdEQzBBQ0FSQUlBZEJFR29RTWhvTElBY0VRQ0FIRUI4TEMwRUJDem9BRENBUklBSTJBZ2dnREVFUWFpUUFJQXNnRVNnQ0NEWUNDQ0FMSUJFdEFBdzZBQXdnRVVFUWFpUUFJQXN0QUF3aEFpQU5FRElhSUF0QklHb2tBQ0FDREFFTFFhN29DRUg0cXdKQnVnWkJzOTRDRUFBQUN3MEFJQWxCUUdzaUFTQUZRWElnQXhBUUlBRkI4YVlNRUE0YUlBRWdEeEFwRUE0YUlBRkJ1cTBNRUE0YUlBRWdBeWdDS0JBaEdpQUpLQUw4QVNFSElBRVFFU0FFSVFFZ0J3MEJDd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQkx3RUFJZ0ZCRldzT0V3QUJBZ01PRGc0RUJRWU9EQXNPRGc0T0Rnb0pDd0pBQWtBQ1FBSkFBa0FnQTBFQkVCc2lBa0VkZENBQ1FRaHJRUU4yY2c0SUFBRURCQU1EQXdJREN5QUZMUUNtQXcwUklBbEJRR3NpQVNBRlFYSWdBeEFRSUFGQnZhd0hFQTRhSUFrb0F2d0JJUWNnQVJBUkRCQUxJQVV0QUtFRERSQWdDVUZBYXlJQklBVkJjaUFERUJBZ0FVR3ZyUWNRRGhvZ0NTZ0MvQUVoQnlBQkVCRU1Ed3NnQlMwQWdRRkJDSEVORHlBSlFVQnJJZ0VnQlVGeUlBTVFFQ0FCUWR1U0J4QU9HaUFKS0FMOEFTRUhJQUVRRVF3T0N5QUpRVUJySWdFZ0JVRnlJQU1RRUNBQlFZWDlDQkFPR2lBQklBSVFJUm9nQVVHQ3FBY1FEaG9nQ1NnQy9BRWhCeUFCRUJFTURRc2dBMEVDRUJ0QkFrOEVRQ0FKUVVCcklnRWdCVUY1SUFNUUVDQUJRZnpwQmhBT0dpQUpLQUw4QVNFSElBRVFFUXdOQ3lBRUx3RUFRUlZIRFEwZ0JTMEFnQUZCd0FCeFJRME5JQU5CQWhBYlJRME5JQWxCUUdzaUFTQUZRWHdnQXhBUUlBRkJxUDBIRUE0YUlBa29BdndCSVFjZ0FSQVJEQXdMQWtBZ0EwRUJFQnNpQWtIQUFFY0VRQ0FDUVNCR0RRNGdBa0VRUncwQklBVXRBS0lERFE0Z0NVRkFheUlCSUFWQmNpQURFQkFnQVVHb3lRa1FEaG9nQVVIRm1RY1FEaG9nQ1NnQy9BRWhCeUFCRUJFTURRc2dCUzBBZ1FGQkJIRU5EU0FKUVVCcklnRWdCVUZ5SUFNUUVDQUJRY2ZKQ1JBT0dpQUJRWmFUQnhBT0dpQUpLQUw4QVNFSElBRVFFUXdNQ3lBSlFVQnJJZ0VnQlVGeUlBTVFFQ0FCUVlYOUNCQU9HaUFCSUFJUUlSb2dBVUdOcXdjUURob2dDU2dDL0FFaEJ5QUJFQkVNQ3dzQ1FDQUZJQU5CQVJBYklnUVFJQ0lCQkVBZ0FTOEJIaENERncwQkN5QUpRVUJySWdFZ0JVRjJJQU1RRUNBQlFlN1BDeEFPR2lBSlFRaHFJZ0lnQlNBRUVDb2dBU0FDRUJJYUlBRkIvdkFIRUE0YUlBa29BdndCSVFjZ0FoQVBHaUFCRUJFTUN3c2dBMEVDRUJzaUFrRUNhMEVEU1EwTElBSkJFRWNnQWtFSVIzRkZCRUFnQlMwQWdBRkJnQUZ4RFF3Z0NVRkFheUlCSUFWQmNpQURFQkFnQVVHUHFnb1FEaG9nQVNBQ0VDRWFJQUZCMmUwSkVBNGFJQUVnQXk4QkhoQXBFQTRhSUFGQnl4RVFEaG9nQ1NnQy9BRWhCeUFCRUJFTUN3c2dDVUZBYXlJQklBVkJjaUFERUJBZ0FVSG0vQWdRRGhvZ0FTQUNFQ0VhSUFGQmhQRUpFQTRhSUFFZ0F5OEJIaEFwRUE0YUlBa29BdndCSVFjZ0FSQVJEQW9MQWtBZ0JTQURRUUVRR3hBZ0lnRUVRQ0FCTHdFZVFSZEdEUUVMSUFsQlFHc2lBU0FGUVhZZ0F4QVFJQUZCMThRSEVBNGFJQWtvQXZ3QklRY2dBUkFSREFvTElBVWdBVUVCRUJzUUlDOEJIa0VXUndSQUlBbEJRR3NpQVNBRlFYSWdBeEFRSUFGQmhMUUhFQTRhSUFrb0F2d0JJUWNnQVJBUkRBb0xJQU5CQWhBYlFRVnJRWHhMRFFvZ0NVRkFheUlCSUFWQmNpQURFQkFnQVVHZXNRY1FEaG9nQ1NnQy9BRWhCeUFCRUJFTUNRc0NRQ0FGSUFOQkFSQWJJZ0lRSUNJQkJFQWdBUzhCSGhEUUFnMEJDeUFKUVVCcklnRWdCVUYySUFNUUVDQUJRYi9RQ3hBT0dpQUpRUWhxSWdRZ0JTQUNFQ29nQVNBRUVCSWFJQUZCZy9VSEVBNGFJQWtvQXZ3QklRY2dCQkFQR2lBQkVCRU1DUXNnQVM4QkhrRVRSZ1JBSUFsQlFHc2lBU0FGUVhZZ0F4QVFJQUZCdjlBTEVBNGFJQWxCQ0dvaUJDQUZJQUlRS2lBQklBUVFFaG9nQVVITDlBY1FEaG9nQ1NnQy9BRWhCeUFFRUE4YUlBRVFFUXdKQ3dKQUlBVW9BZ0FvQWdBUVIwVU5BQ0FCTHdFZVFSMUhEUUFnQ1VGQWF5SUJJQVZCZGlBREVCQWdDVUVJYWlJRUlBVkJ5Q1FRTnlBQklBUVFFaG9nQVVHLzBBc1FEaG9nQ1VFd2FpSUdJQVVnQWhBcUlBRWdCaEFTR2lBQlFaaVJDaEFPR2lBSlFTQnFJZ0lnQlNnQ0FDZ0NBQkNCQWlBQklBSVFFaG9nQVVHK3F3Y1FEaG9nQ1NnQy9BRWhCeUFDRUE4YUlBWVFEeG9nQkJBUEdpQUJFQkVNQ1FzQ1FDQUZJQU5CQWhBYklnSVFJQ0lCQkVBZ0FTOEJIaENqQWcwQkN5QUpRVUJySWdFZ0JVRjJJQU1RRUNBQlFlakxDeEFPR2lBSlFRaHFJZ1FnQlNBQ0VDb2dBU0FFRUJJYUlBRkIwK3dIRUE0YUlBa29BdndCSVFjZ0JCQVBHaUFCRUJFTUNRc0NRQUpBSUFVZ0NVRUlhaUFCRUxBQklnd29BZ0FvQWdRUUlDSUVCRUFnQkM4QkhrRVZSZzBCQ3lBSlFVQnJJZ0VnQlVGMklBTVFFQ0FCUWVqTEN4QU9HaUFKUVRCcUlnUWdCU0FDRUNvZ0FTQUVFQklhSUFGQjllOEhFQTRhSUFrb0F2d0JJUWNnQkJBUEdpQUJFQkVNQVF0QkFDRUhBa0FDUUFKQUlBRXZBUjVCSzJzT0NnQUJBUUlCQVFFQUFRTUJDeUFCS0FJQUlnWW9BZ3doQ3lBRUtBSUFJZ1FvQWd3aEVTQUVLQUlJSWdSQklFMEVmaUFMckFVZ0JFSEJBRThOQnlBQktBSUVJQVpyUVJCTkRRWWdDNjBnQmpVQ0VFSWdob1FMSWk5UVJTQVJSU0F2UWdCWmNuRU5BaUFKUVVCcklnRWdCVUYySUFNUUVDQUJRZWpMQ3hBT0dpQUpRVEJxSWdRZ0JTQUNFQ29nQVNBRUVCSWFJQUZCK3NrS0VBNGFJQUVnTHhDYUJpQUpLQUw4QVNFSElBUVFEeG9nQVJBUkRBSUxRZFNkQ1VIeHJBSkJsQUpCeFJ3UUFBQUxJQWxCUUdzaUFTQUZRWFlnQXhBUUlBRkI2TXNMRUE0YUlBbEJNR29pQkNBRklBSVFLaUFCSUFRUUVob2dBVUdEbFFnUURob2dDU2dDL0FFaEJ5QUVFQThhSUFFUUVRc2dEQkF5R2d3SUN3SkFJQVVnQTBFQkVCc2lBaEFnSWdFRVFDQUJMd0VlRU5BQ0RRRUxJQWxCUUdzaUFTQUZRWFlnQXhBUUlBRkIzdEFMRUE0YUlBbEJDR29pQkNBRklBSVFLaUFCSUFRUUVob2dBVUdEOVFjUURob2dDU2dDL0FFaEJ5QUVFQThhSUFFUUVRd0lDeUFCTHdFZVFSTkdCRUFnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUhlMEFzUURob2dDVUVJYWlJRUlBVWdBaEFxSUFFZ0JCQVNHaUFCUWN2MEJ4QU9HaUFKS0FMOEFTRUhJQVFRRHhvZ0FSQVJEQWdMSUFVb0FnQW9BZ0FRUjBVTkNDQUJMd0VlUVIxSERRZ2dDVUZBYXlJQklBVkJkaUFERUJBZ0NVRUlhaUlFSUFWQnlDUVFOeUFCSUFRUUVob2dBVUhlMEFzUURob2dDVUV3YWlJR0lBVWdBaEFxSUFFZ0JoQVNHaUFCUVppUkNoQU9HaUFKUVNCcUlnSWdCU2dDQUNnQ0FCQ0JBaUFCSUFJUUVob2dBVUcrcXdjUURob2dDU2dDL0FFaEJ5QUNFQThhSUFZUUR4b2dCQkFQR2lBQkVCRU1Cd3NnQTBFQUVCc2hCRUVCSVFjRFFDQURLQUlRSUFNb0FneHJRUVIxSUFkTkJFQkJBQ0VCUVFJaEJ3TkFJQU1vQWdRZ0F5Z0NBQ0lDYTBFQ2RTQUhUUVJBQWtBZ0F5Z0NLQ0VISXdCQkVHc2lBaVFBSUFJZ0J6WUNEQ0FGUWRRQ2FpQUNRUXhxRU4wVklBRkJBWEU2QUFBZ0FrRVFhaVFBSUFVZ0F5Z0NLQkRlRlVVTkFDQUZJQU1vQWloQkF4REFBa1VFUUNBRklBTW9BaWhCQWhEQUFrVU5BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUhGNVF3UURob2dDU2dDL0FFaEJ5QUJFQkVNQ3dzRkFrQWdCU0FDSUFkQkFuUnFLQUlBRUNBaUFrVU5BQ0FDTHdFZVFSNUhEUUFDUUNBRklBSW9BaWhCQWhEQUFnMEFJQVVnQWlnQ0tFRURFTUFDRFFBZ0JTQUNLQUlvRU40VlJRMEJDMEVCSVFFTElBZEJBV29oQnd3QkN3c2dDVUlBTndNUUlBbENBRGNEQ0NBSlFZQ0FnUHdETmdJWUlBVWdCQkRlQVNJQlFRUnFJUUlnQVNnQ0FDRUhJQWxCUUd0QkJISWhBUUpBQTBBZ0FpQUhSZ1JBQWtBZ0NTZ0NGQ0lCUVFCTUlnSU5BQ0FCSUFNb0FoQWdBeWdDREd0QkJIVkJBV3RHRFFBZ0NVRkFheUlCSUFWQmRpQURFQkFnQVVHdzZBd1FEaG9nQVVHRnBBb1FEaG9nQVVHOHpRb1FEaG9nQVVHZzJRb1FEaG9nQVNBRUVDRWFJQUZCbGFZSEVBNGFJQWtvQXZ3QklRY2dBUkFSREFNTEJRSkFJQWxCUUdzZ0IwRVFhaEMwQWlnQ0FFRUxSdzBBSUFrb0FsQWlCa0YvUmcwQUlBa2dCallDSUNBSlFUQnFJQWxCQ0dvZ0NVRWdhaENXQVFzZ0FSQXlHaUFIRUV3aEJ3d0JDd3NnQWtVRVFDTUFRUkJySWdFa0FDQUJJQVEyQWd3Z0FTQUZRYXdDYWlBQlFReHFFSllCSUFGQkVHb2tBQXRCQUNFSElBVW9BZ0FvQWdBUVIwVU5BQ0FGS0FJRUxRQXNEUUFnQXlnQ0tDRUNJQWtnQlRZQ1JDQUpRWkNSSURZQ1FDQUpJQWxCUUdzaUFUWUNVQ0FGSUFJZ0FVRUJFS01LSVFJZ0FSQVdJQUpGRFFBZ0NVRkFheUlCSUFWQmRpQURFQkFnQ1VFd2FpSUNJQVZCdXlRUU55QUJJQUlRRWhvZ0FVSHlsZ29RRGhvZ0NVRWdhaUlFSUFVb0FnQW9BZ0FRZ1FJZ0FTQUVFQklhSUFGQmgvTUhFQTRhSUFrb0F2d0JJUWNnQkJBUEdpQUNFQThhSUFFUUVRc2dDVUVJYWhCUERBZ0xJQU1nQnhBYklnSWdBeWdDS0VZRVFDQUpRVUJySWdFZ0JVRjJJQU1RRUNBQlFjeStBUkFPR2lBSktBTDhBU0VISUFFUUVRd0lDd0pBSUFVZ0FoQWdJZ0VFUUNBQkx3RWVFTkFDRFFFTElBbEJRR3NpQVNBRlFYWWdBeEFRSUFGQnpkY0xFQTRhSUFsQkNHb2lCQ0FGSUFJUUtpQUJJQVFRRWhvZ0FVR0Q5UWNRRGhvZ0NTZ0MvQUVoQnlBRUVBOGFJQUVRRVF3SUN3SkFJQUV2QVI0aUJrRWVSd1JBSUFaQkUwY05BU0FKUVVCcklnRWdCVUYySUFNUUVDQUJRZHowQnhBT0dpQUpLQUw4QVNFSElBRVFFUXdKQ3lNQVFSQnJJZ1lrQUNBR0lBSTJBZ3dnQlVHc0Ftb2dCa0VNYWhDZUFpRUxJQVpCRUdva0FDQUxSUTBBSUFsQlFHc2lBU0FGUVhZZ0F4QVFJQUZCd00wTEVBNGFJQWxCQ0dvaUJpQUZJQUlRS2lBQklBWVFFaG9nQVVHMzJna1FEaG9nQVVHbytRa1FEaG9nQVVIRHVBb1FEaG9nQVVHNnpRc1FEaG9nQ1VFd2FpSUxJQVVnQkJBcUlBRWdDeEFTR2lBQlFZYk5DeEFPR2lBSlFTQnFJZ1FnQlNBQ0VDb2dBU0FFRUJJYUlBRkIvSmNJRUE0YUlBa29BdndCSVFjZ0JCQVBHaUFMRUE4YUlBWVFEeG9nQVJBUkRBZ0xBa0FnQlNnQ0FDZ0NBQkJIUlEwQUlBRXZBUjVCSFVjTkFDQURLQUlRSUFNb0FneHJRUVIxUVFGcklBZEhCRUFnQ1VGQWF5SUJJQVZCZGlBREVCQWdDVUVJYWlJQ0lBVkJ5Q1FRTnlBQklBSVFFaG9nQVVIeWxnb1FEaG9nQ1VFd2FpSUVJQVVvQWdBb0FnQVFnUUlnQVNBRUVCSWFJQUZCdGU4QUVBNGFJQWtvQXZ3QklRY2dCQkFQR2lBQ0VBOGFJQUVRRVF3SkN5QUZJQU1vQWloQkFoREFBZzBBSUFVZ0F5Z0NLRUVERU1BQ0RRQWdDVUZBYXlJQklBVkJkaUFERUJBZ0NVRUlhaUlDSUFWQnlDUVFOeUFCSUFJUUVob2dDVUV3YWlJRUlBVW9BZ0FvQWdBUWdRSWdBU0FFRUJJYUlBRkJ1c0lKRUE0YUlBRkJ3T2NIRUE0YUlBa29BdndCSVFjZ0JCQVBHaUFDRUE4YUlBRVFFUXdJQ3lBSFFRRnFJUWNNQUFzQUMwR1Q5Z1pCOGF3Q1FTVkJ3dklHRUFBQUMwSEk4d1pCOGF3Q1FTUkJ3dklHRUFBQUN5QUJRZTRwUncwRUFrQWdCU0FEUVFFUUd5SUVFQ0FpQVFSQUlBRXZBUjVCRld0QkFra05BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUdRMEFzUURob2dDVUVJYWlJQ0lBVWdCQkFxSUFFZ0FoQVNHaUFCUWVieUJ4QU9HaUFKS0FMOEFTRUhJQUlRRHhvZ0FSQVJEQVFMQWtBQ1FDQUZJQU5CQWhBYklnUVFJQ0lCUlEwQUlBVWdBU2dDSkJCUVJRMEFJQUV2QVI0UW93SU5BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUhsMkFzUURob2dDVUVJYWlJQ0lBVWdCQkFxSUFFZ0FoQVNHaUFCUVpid0J4QU9HaUFKS0FMOEFTRUhJQUlRRHhvZ0FSQVJEQVFMQWtBQ1FDQUZJQU5CQXhBYklnUVFJQ0lCUlEwQUlBVWdBU2dDSkJCUVJRMEFJQUV2QVI0UW93SU5BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUhDeGdzUURob2dDVUVJYWlJQ0lBVWdCQkFxSUFFZ0FoQVNHaUFCUVpid0J4QU9HaUFKS0FMOEFTRUhJQUlRRHhvZ0FSQVJEQVFMQWtBZ0JTQURRUVFRR3lJRUVDQWlBVVVOQUNBRklBRW9BaVFRVUVVTkFDQUJMd0VlRUtNQ0RRVUxJQWxCUUdzaUFTQUZRWFlnQXhBUUlBRkI1OFlMRUE0YUlBbEJDR29pQWlBRklBUVFLaUFCSUFJUUVob2dBVUdXOEFjUURob2dDU2dDL0FFaEJ5QUNFQThhSUFFUUVRd0RDeUFGSUFOQkFCQWJFQ0FpQVM4QkhrRWdSd1JBSUFsQlFHc2lBU0FGUVhZZ0F4QVFJQUZCais4SEVBNGFJQWtvQXZ3QklRY2dBUkFSREFNTElBTkJBUkFiSWdJZ0FVRUJFQnRIQkVBZ0NVRkFheUlCSUFWQmRpQURFQkFnQVVIaHdnb1FEaG9nQVVHZTBBY1FEaG9nQ1NnQy9BRWhCeUFCRUJFTUF3c0NRQ0FGSUFGQkFoQWJFQ0FpQVFSQUlBRXZBUjVCSGtZTkFRc2dDVUZBYXlJQklBVkJkaUFERUJBZ0FVR002Z01RRGhvZ0NTZ0MvQUVoQnlBQkVCRU1Bd3NnQlNnQ0FDZ0NBQkJIUlNBQ1FlVXBSbklOQXlBSlFVQnJJZ0VnQlVGMklBTVFFQ0FKUVFocUlnSWdCVUhuSkJBM0lBRWdBaEFTR2lBQlFjeXpDaEFPR2lBQlFlSEtCeEFPR2lBSktBTDhBU0VISUFJUUR4b2dBUkFSREFJTEFrQWdCU0FEUVFFUUd5SUVFQ0FpQVVVTkFDQUJMd0VlRU5BQ1JRMEFRUUloQjBFQUlRRURRQ0FES0FJUUlBTW9BZ3hyUVFSMUlBZExCRUFDUUNBRklBTWdCeEFiSWdJUUlDSUVCRUFnQkM4QkhoRFFBZzBCQ3lBSlFVQnJJZ0VnQlVGMklBTVFFQ0FCUWFuWEN4QU9HaUFKUVFocUlnUWdCU0FDRUNvZ0FTQUVFQklhSUFGQmcvVUhFQTRhSUFrb0F2d0JJUWNnQkJBUEdpQUJFQkVNQlFzZ0JDOEJIa0VUUmdSQUlBbEJRR3NpQVNBRlFYWWdBeEFRSUFGQnFkY0xFQTRhSUFsQkNHb2lCQ0FGSUFJUUtpQUJJQVFRRWhvZ0FVSHgvQWNRRGhvZ0NTZ0MvQUVoQnlBRUVBOGFJQUVRRVF3RkJTQUJRUUZxSVFFZ0IwRUJhaUVIREFJTEFBc0xJQVVvQWdRb0FoUWlCQ0FCU1FSQUlBbEJRR3NpQWlBRlFYWWdBeEFRSUFKQjlaTUtFQTRhSUFJZ0JCQWhHaUFDUWJYS0N4QU9HaUFKUVFocUlnUWdCU0FEUVFBUUd4QXFJQUlnQkJBU0dpQUNRYjdsQ1JBT0dpQUNJQUVRSVJvZ0FrR3lxd2NRRGhvZ0NTZ0MvQUVoQnlBRUVBOGFJQUlRRVF3REN5QURLQUpFSVFFZ0F5Z0NRQ0VIQTBBZ0FTQUhSZzBFQWtBZ0J5Z0NBQ0lDTHdFZUlnUkJOa1lOQUNBRUVMd0lEUUFnQWhETkJRMEFJQUl2QVI0UXZRZ05BQ0FKUVVCcklnRWdCVUYySUFJUUVDQUJRYlRYQ2hBT0dpQUpRUWhxSWdJZ0JTQURLQUlvRUNvZ0FTQUNFQklhSUFGQi9KY0lFQTRhSUFrb0F2d0JJUWNnQWhBUEdpQUJFQkVNQkFzZ0IwRUlhaUVIREFBTEFBc2dDVUZBYXlJQklBVkJkaUFERUJBZ0FVSHMxd3NRRGhvZ0NVRUlhaUlDSUFVZ0JCQXFJQUVnQWhBU0dpQUJRWVAxQnhBT0dpQUpLQUw4QVNFSElBSVFEeG9nQVJBUkRBRUxBa0FnQlNBRFFRSVFHeUlFRUNBaUJ3UkFJQWN2QVI0UTBBSU5BUXNnQ1VGQWF5SUJJQVZCZGlBREVCQWdBVUdRMXdzUURob2dDVUVJYWlJQ0lBVWdCQkFxSUFFZ0FoQVNHaUFCUVlQMUJ4QU9HaUFKS0FMOEFTRUhJQUlRRHhvZ0FSQVJEQUVMQWtBZ0EwRUJFQnNpQWcwQUlBY3ZBUjRpQVVIKy93TnhRUnhHQkg4Z0JTQUhRUUVRR3hBZ0lnY3ZBUjRGSUFFTFFmLy9BM0ZCR1VjTkFDQUhRUVlRRzBFQ1J3MEFJQU1vQWlnaEJDTUFRUkJySWdFa0FDQUJJQVEyQWd3Z0FTQUZRZHdFYWlBQlFReHFFSllCSUFGQkVHb2tBQXNnQlNBQ0VMY1ZEUUVnQ1VGQWF5SUJJQVZCZkNBREVCQWdDVUVJYWlJQ0lBVkJveVFRTnlBQklBSVFFaG9nQVVHSXh3QVFEaG9nQ1NnQy9BRWhCeUFDRUE4YUlBRVFFUXNnQncwQkMwRUFJUWNMSUFsQmdBSnFKQUFnQnlJQkRRY2pBRUh3QVdzaUFTUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FETHdFZVFTbHJEZ3dBQUF3QkFnTU1BQUFFQVFVTUN5QUZJQU1vQWlRUUlDSUNCRUFnQWk4QkhrRVVSZzBNQ3lBQlFUQnFJZ1FnQlVGMklBTVFFQ0FFUWJDL0FoQU9HaUFFSUFNdkFSNFFLUkFPR2lBRVFmM1dDeEFPR2lBQlFTQnFJZ2NnQlNBREtBSWtFQ29nQkNBSEVCSWFJQVJCenZJSEVBNGFJQUVvQXV3QklRSWdCeEFQR2lBRUVCRU1DZ3NnQVVFZ2FpQUJRVEJxUWJDL0FoQVVJZ0lnQXk4QkhoQXBFQzBnQWhBUEdnSkFJQVVnQXlnQ0pCQWdJZ1FFUUNBRUx3RWVJZ0pCN2lsR0lBSkJIazFCQUVFQklBSjBRWUNBZ0l3RmNSdHlEUUVMSUFGQk1Hb2lCQ0FGUVhZZ0F4QVFJQVFnQVVFZ2FoQVNHaUFFUWYzV0N4QU9HaUFCUVJCcUlnY2dCU0FES0FJa0VDb2dCQ0FIRUJJYUlBUkJ0L01IRUE0YUlBRW9BdXdCSVFJZ0J4QVBHaUFFRUJFTUNRc2dBeWdDQkNBREtBSUFhMEVDZFNJR1FRTnJJUWRCQUNFQ0FrQUNRQUpBQWtBQ1FDQUVMd0VlSWdsQkYyc09DQUFCRFEwTkFnMERCQXNnQkVFQ0VCc2dCMGNFUUNBQlFUQnFJZ2NnQlVGMklBTVFFQ0FISUFGQklHb1FFaG9nQjBIazB3c1FEaG9nQVVFUWFpSUdJQVVnQkNnQ0tCQXFJQWNnQmhBU0dpQUhRZk9YQnhBT0dpQUJLQUxzQVNFQ0lBWVFEeG9nQnhBUkRBMExJQVVnQkVFQkVCc1FJQ0lMUlEwSVFRSWhCd05BSUFjZ0F5Z0NFQ0FES0FJTWEwRUVkVThORFFKQUlBVWdBeUFIRUJzaUJoQWdJZ2tFUUNBSkx3RWVFTDRJRFFFTElBRkJNR29pQkNBRlFYWWdBeEFRSUFRZ0FVRWdhaEFTR2lBRVFZM0VDeEFPR2lBQlFSQnFJZ2NnQlNBR0VDb2dCQ0FIRUJJYUlBUkIyT2dIRUE0YUlBRW9BdXdCSVFJZ0J4QVBHaUFFRUJFTURnc2dCU0FKS0FJa0VDQWlDUVJBSUFkQkFXb2hCeUFMTHdFZUlBa3ZBUjVHRFFFTEN5QUJRVEJxSWdjZ0JVRjJJQU1RRUNBSElBRkJJR29RRWhvZ0IwR054QXNRRGhvZ0FVRVFhaUlKSUFVZ0JoQXFJQWNnQ1JBU0dpQUhRYzdVQ3hBT0dpQUJJQVVnQkNnQ0tCQXFJQWNnQVJBU0dpQUhRYnpzQnhBT0dpQUJLQUxzQVNFQ0lBRVFEeG9nQ1JBUEdpQUhFQkVNREFzZ0JFRUNFQnNnQjBjRVFDQUJRVEJxSWdjZ0JVRjJJQU1RRUNBSElBRkJJR29RRWhvZ0IwSGswd3NRRGhvZ0FVRVFhaUlHSUFVZ0JDZ0NLQkFxSUFjZ0JoQVNHaUFIUVlhWkJ4QU9HaUFCS0FMc0FTRUNJQVlRRHhvZ0J4QVJEQXdMSUFVZ0JDZ0NBQ2dDQ0JBZ0lnWkZCRUFnQVVFd2FpSUhJQVZCZGlBRUVCQWdCMEhiZ3dnUURob2dBU2dDN0FFaEFpQUhFQkVNREF0QkFpRUhJQVpCQWhBYklSRWdCU0FHUVFFUUd4QWdJZzFGRFFnRFFDQUhJQU1vQWhBZ0F5Z0NER3RCQkhWUERRd0NRQ0FGSUFNZ0J4QWJJZ2tRSUNJTEJFQWdDeThCSGhDK0NBMEJDeUFCUVRCcUlnUWdCVUYySUFNUUVDQUVJQUZCSUdvUUVob2dCRUdOeEFzUURob2dBVUVRYWlJSElBVWdDUkFxSUFRZ0J4QVNHaUFFUWRqb0J4QU9HaUFCS0FMc0FTRUNJQWNRRHhvZ0JCQVJEQTBMSUFVZ0N5Z0NKQkFnSWd4RkJFQWdBVUV3YWlJRUlBVkJkaUFMRUJBZ0JFRy9nd2dRRGhvZ0FTZ0M3QUVoQWlBRUVCRU1EUXNnQmk4QkhpQU1Md0VlUndSQUlBRkJNR29pQnlBRlFYWWdBeEFRSUFjZ0FVRWdhaEFTR2lBSFFZM0VDeEFPR2lBQlFSQnFJZ1lnQlNBSkVDb2dCeUFHRUJJYUlBZEJ6OVFMRUE0YUlBRWdCU0FFS0FJb0VDb2dCeUFCRUJJYUlBZEIzdkVIRUE0YUlBRW9BdXdCSVFJZ0FSQVBHaUFHRUE4YUlBY1FFUXdOQ3lBRklBeEJBUkFiRUNBaEN5QU5LQUlvSUFzb0FpaEhCRUFnQVVFd2FpSUhJQVZCZGlBREVCQWdCeUFCUVNCcUVCSWFJQWRCamNRTEVBNGFJQUZCRUdvaUJpQUZJQWtRS2lBSElBWVFFaG9nQjBHZDFBc1FEaG9nQVNBRklBUW9BaWdRS2lBSElBRVFFaG9nQjBHRzdBY1FEaG9nQVNnQzdBRWhBaUFCRUE4YUlBWVFEeG9nQnhBUkRBMExJQWRCQVdvaEJ5QVJJQXdvQWdBb0FneEdEUUFMSUFGQk1Hb2lCeUFGUVhZZ0F4QVFJQWNnQVVFZ2FoQVNHaUFIUVkzRUN4QU9HaUFCUVJCcUlnWWdCU0FKRUNvZ0J5QUdFQklhSUFkQjRkSUxFQTRhSUFFZ0JTQUVLQUlvRUNvZ0J5QUJFQklhSUFkQjg1Y0hFQTRhSUFFb0F1d0JJUUlnQVJBUEdpQUdFQThhSUFjUUVRd0xDeUFGSUFSQkFSQWJFQ0FpQzBVRVFDQUJRVEJxSWdjZ0JVRjJJQVFRRUNBSFFhS0RDQkFPR2lBQktBTHNBU0VDSUFjUUVRd0xDeUFGSUFSQkFoQWJFQ0FpQmtVRVFDQUJRVEJxSWdjZ0JVRjJJQVFRRUNBSFFleUNDQkFPR2lBQktBTHNBU0VDSUFjUUVRd0xDeUFCUVRCcUlBVWdCaWdDS0JEZEFRSkFJQUV0QURCRkRRQWdBUzBBTVVVTkFDQUJLQUkwSUFkSERRa0xRUUloQndOQUlBY2dBeWdDRUNBREtBSU1hMEVFZFU4TkN3SkFJQVVnQXlBSEVCc2lDUkFnSWdZRVFDQUdMd0VlRUw0SURRRUxJQUZCTUdvaUJDQUZRWFlnQXhBUUlBUWdBVUVnYWhBU0dpQUVRWTNFQ3hBT0dpQUJRUkJxSWdjZ0JTQUpFQ29nQkNBSEVCSWFJQVJCMk9nSEVBNGFJQUVvQXV3QklRSWdCeEFQR2lBRUVCRU1EQXNnQlNBR0tBSWtFQ0FpREVVRVFDQUJRVEJxSWdRZ0JVRjJJQVlRRUNBRVFiK0RDQkFPR2lBQktBTHNBU0VDSUFRUUVRd01DeUFIUVFGcUlRY2dDeWdDS0NBTUtBSW9SZzBBQ3lBQlFUQnFJZ2NnQlVGMklBTVFFQ0FISUFGQklHb1FFaG9nQjBHTnhBc1FEaG9nQVVFUWFpSUdJQVVnQ1JBcUlBY2dCaEFTR2lBSFFjN1VDeEFPR2lBQklBVWdCQ2dDS0JBcUlBY2dBUkFTR2lBSFFhYnNCeEFPR2lBQktBTHNBU0VDSUFFUUR4b2dCaEFQR2lBSEVCRU1DZ3NnQmtFQmF5QUVLQUlFSUFRb0FnQnJRUUoxUncwSVFRSWhCMEVCSVFrRFFDQUhJQU1vQWhBZ0F5Z0NER3RCQkhWUERRb0NRQ0FGSUFNZ0J4QWJJZ3NRSUNJR0JFQWdCaThCSGhDK0NBMEJDeUFCUVRCcUlnUWdCVUYySUFNUUVDQUVJQUZCSUdvUUVob2dCRUdOeEFzUURob2dBVUVRYWlJSElBVWdDeEFxSUFRZ0J4QVNHaUFFUWRqb0J4QU9HaUFCS0FMc0FTRUNJQWNRRHhvZ0JCQVJEQXNMSUFVZ0JpZ0NKQkFnSWd4RkJFQWdBVUV3YWlJRUlBVkJkaUFHRUJBZ0JFRy9nd2dRRGhvZ0FTZ0M3QUVoQWlBRUVCRU1Dd3NDUUNBRklBUWdDUkFiRUNBaUJnUkFJQVlvQWlnZ0RDZ0NLRVlOQVFzZ0FVRXdhaUlISUFWQmRpQURFQkFnQnlBQlFTQnFFQklhSUFkQmpjUUxFQTRhSUFGQkVHb2lCaUFGSUFzUUtpQUhJQVlRRWhvZ0IwR1QxUXNRRGhvZ0FTQUZJQVFvQWlnUUtpQUhJQUVRRWhvZ0IwSHY4QWNRRGhvZ0FTZ0M3QUVoQWlBQkVBOGFJQVlRRHhvZ0J4QVJEQXNMSUFsQkFXb2hDU0FIUVFGcUlRY01BQXNBQ3lBSlFlNHBSdzBJSUFkQkFVY0VRQ0FCUVRCcUlnUWdCVUYySUFNUUVDQUVJQUZCSUdvUUVob2dCRUdOeEFzUURob2dBVUVRYWlJSElBVWdBeWdDSkJBcUlBUWdCeEFTR2lBRVFmVDJCeEFPR2lBQktBTHNBU0VDSUFjUUR4b2dCQkFSREFrTEFrQWdCU0FEUVFJUUd5SUdFQ0FpQndSQUlBY3ZBUjRRdmdnTkFRc2dBVUV3YWlJRUlBVkJkaUFERUJBZ0JDQUJRU0JxRUJJYUlBUkJqY1FMRUE0YUlBRkJFR29pQnlBRklBWVFLaUFFSUFjUUVob2dCRUhZNkFjUURob2dBU2dDN0FFaEFpQUhFQThhSUFRUUVRd0pDeUFGSUFjb0FpUVFJQ0lKUlFSQUlBRkJNR29pQkNBRlFYWWdCeEFRSUFSQnY0TUlFQTRhSUFFb0F1d0JJUUlnQkJBUkRBa0xJQVVnQkVFQkVCc1FJQ0lIQkVBZ0J5Z0NLQ0FKS0FJb1JnMEpDeUFCUVRCcUlnY2dCVUYySUFNUUVDQUhJQUZCSUdvUUVob2dCMEdOeEFzUURob2dBVUVRYWlJSklBVWdCaEFxSUFjZ0NSQVNHaUFIUVpQVkN4QU9HaUFCSUFVZ0JDZ0NLQkFxSUFjZ0FSQVNHaUFIUWZUckJ4QU9HaUFCS0FMc0FTRUNJQUVRRHhvZ0NSQVBHaUFIRUJFTUNBc2dCU0FES0FJa0VDQWlBZ1JBSUFJdkFSNUJHa1lOQ2dzZ0FVRXdhaUlFSUFWQmRpQUNFQkFnQkVHcTBRc1FEaG9nQVVFZ2FpSUhJQVVnQXlnQ0pCQXFJQVFnQnhBU0dpQUVRZDN2QnhBT0dpQUJLQUxzQVNFQ0lBY1FEeG9nQkJBUkRBZ0xJQVVnQXlnQ0pCQWdJZ0lFUUNBQ0lBVVEzdzBOQ1FzZ0FVRXdhaUlFSUFWQmRpQURFQkFnQkVIcjBRc1FEaG9nQVVFZ2FpSUhJQVVnQXlnQ0pCQXFJQVFnQnhBU0dpQUVRZlhvQnhBT0dpQUJLQUxzQVNFQ0lBY1FEeG9nQkJBUkRBY0xJQVVnQTBFQUVCc1FJQzhCSGtFWGEwRjlTdzBISUFGQk1Hb2lCQ0FGUVhJZ0F4QVFJQVJCL3NzSEVBNGFJQUVvQXV3QklRSWdCQkFSREFZTEFrQUNRQUpBQWtBZ0EwRUNFQnNpQWtIdEFHc09JUUVCQVFFRENnb0NBUW9LQVFFQkNnRUtDZ0VLQVFvQkNnRUtDZ0VLQ2dvQkFRQUxJQUpCd1FCcklnUkJCVXRCQVNBRWRFRW5jVVZ5RFFrTElBVXRBSUFCUWNBQWNRMElJQUZCTUdvaUJDQUZRWFlnQXhBUUlBUkJpb2tLRUE0YUlBUWdBaEFwRUE0YUlBUkJndzRRRGhvZ0FTZ0M3QUVoQWlBRUVCRU1Cd3NnQlMwQWdBRkJBbkVOQnlBQlFUQnFJZ1FnQlVGMklBTVFFQ0FFUVlxSkNoQU9HaUFFUWZRQUVDa1FEaG9nQkVIbkRSQU9HaUFCS0FMc0FTRUNJQVFRRVF3R0N5QUZMUUNyQXcwR0lBVXRBSUFCUWNBQWNRMEdJQUZCTUdvaUJDQUZRWFlnQXhBUUlBUkJuTzBHRUE0YUlBRW9BdXdCSVFJZ0JCQVJEQVVMSUFGQk1Hb2lCeUFGUVhZZ0JCQVFJQWRCZzRNSUVBNGFJQUVvQXV3QklRSWdCeEFSREFNTElBRkJNR29pQkNBRlFYWWdCaEFRSUFSQmc0TUlFQTRhSUFFb0F1d0JJUUlnQkJBUkRBSUxJQUZCTUdvaUJ5QUZRWFlnQXhBUUlBY2dBVUVnYWhBU0dpQUhRYTNTQ3hBT0dpQUJRUkJxSWdZZ0JTQUVLQUlvRUNvZ0J5QUdFQklhSUFkQm11Z0hFQTRhSUFFb0F1d0JJUUlnQmhBUEdpQUhFQkVNQVFzZ0FVRXdhaUlISUFWQmRpQURFQkFnQnlBQlFTQnFFQklhSUFkQmpjUUxFQTRhSUFGQkVHb2lCaUFGSUFNb0FpUVFLaUFISUFZUUVob2dCMEgxMHdzUURob2dBU0FGSUFRb0FpZ1FLaUFISUFFUUVob2dCMEhmbUFjUURob2dBU2dDN0FFaEFpQUJFQThhSUFZUUR4b2dCeEFSQ3lBQlFTQnFFQThhQ3lBQ0RRRUxRUUFoQWlBREx3RWVFS01DUlEwQUlBVXRBSUFCUVFKeFJRMEFJQVVnQXlnQ0pCQ0JCUTBBSUFVZ0F5Z0NKQkR4QWtVTkFDQUJRVEJxSWdRZ0JVRjJJQU1RRUNBRVFhYTFBUkFPR2lBQktBTHNBU0VDSUFRUUVRc2dBVUh3QVdva0FDQUNJZ0VOQjBFQUlRY2pBRUdRQW1zaUJpUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU12QVI0aUFVRTdhdzRNQVJBQ0F3UUVCZ1lGQnhBR0FBc2dBVUdSQTJ0QkEwa05Da0huMGdVaEJ5QURJUUlnQVVIdktXc09CQWdIRHdrUEMwRUFJUWtqQUVHZ0Ftc2lCeVFBQWtBQ1FDQUZJQU1pQWlnQ0pCQWdJZ01FUUNBREx3RWVRU0JHRFFFTElBZEI0QUJxSWdFZ0JVRjJJQUlRRUNBQlFmYlVDeEFPR2lBSFFkQUFhaUlFSUFVZ0FpZ0NKQkFxSUFFZ0JCQVNHaUFCUWJQdkJ4QU9HaUFIS0FLY0FpRURJQVFRRHhvZ0FSQVJEQUVMSUFVZ0EwRUNFQnNpRVJBZ0lRUUNRQ0FDS0FJUUlBSW9BZ3hyUVRGSkRRQUNRQ0FGSUFKQkF4QWJJZ3NRSUNJQkJFQWdBUzhCSGlJTVFUdEdCSDhnQVVFQ0VCdEJCMGNoQ1NBQkx3RWVCU0FNQ3hDakFpQUpjZzBCQ3lBSFFlQUFhaUlCSUFWQmRpQUNFQkFnQVVHTXh3c1FEaG9nQjBIUUFHb2lBaUFGSUFzUUtpQUJJQUlRRWhvZ0FVSEE5d2NRRGhvZ0J5Z0NuQUloQXlBQ0VBOGFJQUVRRVF3Q0N5QUJLQUlrSUJGR0RRQWdCMEhnQUdvaUFTQUZRWFlnQWhBUUlBRkJ4YWtFRUE0YUlBY29BcHdDSVFNZ0FSQVJEQUVMQWtBZ0FrRUNFQnNpQ1VIUUtXc2lBVUVPVFVFQVFRRWdBWFJCZzVnQmNSc2dDVUdKS2tZZ0NVRUVhMEVFU1hKeUlBbEJtaXBHY2cwQUFrQWdDVUY5Y1NJTFFRRkhEUUFnQlNBQ0tBSW9FTjRCSWdGQkJHb2hEQ0FCS0FJQUlRRURRQ0FCSUF4R0RRRWdBU2dDRUVFTFJnMENJQUVRVENFQkRBQUxBQXNnQlNBRUlBdEJBVVlRN2hWRkRRQWdDMEVCUmdSQUlBZEI0QUJxSWdFZ0JVRjJJQUlRRUNBSFFkQUFhaUlDSUFWQitqZ1FOeUFCSUFJUUVob2dBVUhyMkFJUURob2dCeWdDbkFJaEF5QUNFQThhSUFFUUVRd0NDeUFIUWVBQWFpSUJJQVZCZGlBQ0VCQWdBVUg4L1FVUURob2dCeWdDbkFJaEF5QUJFQkVNQVFzZ0JTQUpFTGNWUlFSQUlBZEI0QUJxSWdFZ0JVRjhJQUlRRUNBSFFkQUFhaUlDSUFWQm95UVFOeUFCSUFJUUVob2dBVUdJeHdBUURob2dCeWdDbkFJaEF5QUNFQThhSUFFUUVRd0JDeUFKUVFoR0JFQWdCMEhnQUdvaUFTQUZRWHdnQWhBUUlBRkJ3b2dGRUE0YUlBY29BcHdDSVFNZ0FSQVJEQUVMSUFJb0FqZ2lBVVVnQ1VFSFJuSkZCRUFnQjBIZ0FHb2lBU0FGUVhRZ0FoQVFJQUZCc3RJQ0VBNGFJQWNvQXB3Q0lRTWdBUkFSREFFTElBbEJCMGNnQVhKRkJFQWdCMEhnQUdvaUFTQUZRWFFnQWhBUUlBRkI2ZEVDRUE0YUlBY29BcHdDSVFNZ0FSQVJEQUVMSUFOQkFSQWJJQWxIQkVBZ0IwSGdBR29pQVNBRlFYWWdBaEFRSUFGQnh2VU1FQTRhSUFGQmw5WUpFQTRhSUFGQjgrd0hFQTRhSUFjb0Fwd0NJUU1nQVJBUkRBRUxJQVVnQXlnQ0FDZ0NEQkFnSVFFQ1FDQUZLQUtRQXcwQUlBVW9BZ1F0QUNVTkFDQUJMd0VlUVNCSERRQWdCVUdBQVdwQjJTSVFhRVVFUUNBSFFlQUFhaUlCSUFWQmRpQUNFQkFnQVVHNjlBa1FEaG9nQVVIeGxRUVFEaG9nQnlnQ25BSWhBeUFCRUJFTUFnc2dDVUVJYTBGOVN3MEFJQWRCNEFCcUlnRWdCVUYySUFJUUVDQUJRWlhoQ1JBT0dpQUJRWU8zQ2hBT0dpQUJRZnl5QVJBT0dpQUhLQUtjQWlFRElBRVFFUXdCQ3dKQUlBVW9BZ0FvQWdBUVIwVU5BQUpBQWtBQ1FBSkFBa0FDUUNBSkRnMEJCUUlGQkFRRUJBUUFCQVFEQkFzZ0FTOEJIa0VlUmcwRElBZEI0QUJxSWdFZ0JVRjJJQUlRRUNBSFFkQUFhaUlFSUFWQm1EVVFOeUFCSUFRUUVob2dBVUdzMlFzUURob2dCMEZBYXlJSklBVWdBaWdDS0JBcUlBRWdDUkFTR2lBQlFmTDNEQkFPR2lBQlFicjBEQkFPR2lBQlFZanZBQkFPR2lBSEtBS2NBaUVESUFrUUR4b2dCQkFQR2lBQkVCRU1CZ3NnQjBFRU5nSThJQWRDbTRDQWdOQ2JCVGNDYUNBSFFwbUFnSUNnQXpjQ1lDQUhJQWRCNEFCcU5nSTRJQWNnQnlrRE9EY0RBQ0FGSUFFZ0J4RE5EUTBDSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUVJQVZCcnlRUU55QUJJQVFRRWhvZ0FVR0wyUXNRRGhvZ0IwRkFheUlKSUFVZ0FpZ0NLQkFxSUFFZ0NSQVNHaUFCUWZMM0RCQU9HaUFCUWZmVUNSQU9HaUFCUWNTb0NoQU9HaUFCUWZqbkRCQU9HaUFCUVpMdERCQU9HaUFCUWNhMEJ4QU9HaUFIS0FLY0FpRURJQWtRRHhvZ0JCQVBHaUFCRUJFTUJRc2dCMEVCTmdJMElBZEJIallDWUNBSElBZEI0QUJxTmdJd0lBY2dCeWtETURjRENDQUZJQUVnQjBFSWFoRE5EUTBCSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUVJQVZCbHpVUU55QUJJQVFRRWhvZ0FVSHAyUXNRRGhvZ0IwRkFheUlKSUFVZ0FpZ0NLQkFxSUFFZ0NSQVNHaUFCUWZMM0RCQU9HaUFCUWJUMkRCQU9HaUFCUWM2NENoQU9HaUFCUVlHcENoQU9HaUFCUWJlckNoQU9HaUFCUWN6MkF4QU9HaUFIS0FLY0FpRURJQWtRRHhvZ0JCQVBHaUFCRUJFTUJBc2dCMEVCTmdJc0lBZEJIallDWUNBSElBZEI0QUJxTmdJb0lBY2dCeWtES0RjREVDQUZJQUVnQjBFUWFoRE5EUTBBSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUVJQVZCbHpVUU55QUJJQVFRRWhvZ0FVSEsyUXNRRGhvZ0IwRkFheUlKSUFVZ0FpZ0NLQkFxSUFFZ0NSQVNHaUFCUWZMM0RCQU9HaUFCUWJUMkRCQU9HaUFCUVozMUF4QU9HaUFIS0FLY0FpRURJQWtRRHhvZ0JCQVBHaUFCRUJFTUF3c2dCU0FDS0FJb1FSSVF3QUlFUUNBSFFlQUFhaUlCSUFWQmRpQUNFQkFnQjBIUUFHb2lBaUFGUWNVa0VEY2dBU0FDRUJJYUlBRkJwWjhIRUE0YUlBY29BcHdDSVFNZ0FoQVBHaUFCRUJFTUF3c2dCRVVOQUNBRUx3RWVRUjVIRFFBZ0JTQVJRUklRd0FKRkRRQWdCMEhnQUdvaUFTQUZRWFlnQWhBUUlBZEIwQUJxSWdJZ0JVSEZKQkEzSUFFZ0FoQVNHaUFCUVorZUJ4QU9HaUFIS0FLY0FpRURJQUlRRHhvZ0FSQVJEQUlMSUFJb0FoQWdBaWdDREd0Qk1Va05BQUpBQWtBZ0NVRURhdzRGQWdBQkFnSUJDeUFGSUFKQkF4QWJFQ0F2QVI1QkxrWU5BU0FIUWVBQWFpSUJJQVZCZGlBQ0VCQWdCMEhRQUdvaUJDQUZRZjRrRURjZ0FTQUVFQklhSUFGQmt0c0xFQTRhSUFkQlFHc2lDU0FGSUFJb0FpZ1FLaUFCSUFrUUVob2dBVUd0a2dFUURob2dCeWdDbkFJaEF5QUpFQThhSUFRUUR4b2dBUkFSREFJTElBZEI0QUJxSWdFZ0JVRjJJQUlRRUNBSFFkQUFhaUlFSUFWQnF5UVFOeUFCSUFRUUVob2dBVUdTMndzUURob2dCMEZBYXlJSklBVWdBaWdDS0JBcUlBRWdDUkFTR2lBQlFlZlZDUkFPR2lBQlFlVDNEQkFPR2lBQlFaR1hDaEFPR2lBSFFSaHFJZ0lnQlNnQ0FDZ0NBQkNCQWlBQklBSVFFaG9nQVVHLzlnd1FEaG9nQVVHUnN3b1FEaG9nQVVIVDZ3d1FEaG9nQVVIL2tnSVFEaG9nQnlnQ25BSWhBeUFDRUE4YUlBa1FEeG9nQkJBUEdpQUJFQkVNQVFzQ1FBSkFJQUlvQWhBZ0FpZ0NER3RCTVU4RVFBSkFJQWxCQVVjRVFDQUpRZVVwUmcwRElBbEJpU3BHRFFFZ0FTRURJQWxCbWlwSERRUWdCMEhnQUdvaUFTQUZRWFlnQWhBUUlBRkJrdHNMRUE0YUlBZEIwQUJxSWdRZ0JTQUNLQUlvRUNvZ0FTQUVFQklhSUFGQjI5Z0ZFQTRhSUFjb0Fwd0NJUU1nQkJBUEdpQUJFQkVNQlFzZ0IwSGdBR29pQVNBRlFYWWdBaEFRSUFGQmt0c0xFQTRhSUFkQjBBQnFJZ1FnQlNBQ0tBSW9FQ29nQVNBRUVCSWFJQUZCNENzUURob2dCeWdDbkFJaEF5QUVFQThhSUFFUUVRd0VDeUFIUWVBQWFpSUJJQVZCZGlBQ0VCQWdBVUdTMndzUURob2dCMEhRQUdvaUJDQUZJQUlvQWlnUUtpQUJJQVFRRWhvZ0FVR3N6Z1VRRGhvZ0J5Z0NuQUloQXlBRUVBOGFJQUVRRVF3REN5QUJJUU1nQ1VIbEtVY05BUXNnQjBIZ0FHb2lBU0FGUVhZZ0FoQVFJQUZCN2ZjSEVBNGFJQWNvQXB3Q0lRTWdBUkFSREFFTEFrQURRQUpBQWtBZ0F5OEJIa0VjYXc0RkFBTURBd0VEQ3lBRklBTkJBUkFiRUNBaEF3d0JDd3NnQTBFQkVCdEI1U2xIRFFBZ0JTQUNLQUlvUWV3cEVNQUNJZ01nQlNBQ0tBSW9RZXNwRU1BQ0lndHlSUVJBSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FCUVpDL0NoQU9HaUFCSUFJb0FpZ1FJUm9nQVVIQjdna1FEaG9nQVVHYXlBY1FEaG9nQnlnQ25BSWhBeUFCRUJFTUFnc2dBeUFMY1VFQlJ3MEFJQWRCNEFCcUlnRWdCVUYySUFJUUVDQUJRWkMvQ2hBT0dpQUJJQUlvQWlnUUlSb2dBVUh5elFvUURob2dBVUdHeUFjUURob2dCeWdDbkFJaEF5QUJFQkVNQVFzQ1FBSkFBa0FnQkVVZ0JTZ0NBQ2dDQUJCSElnTkZjZzBBSUFRdkFSNGlBMEVkUmdSQUlBVkJnQUZxUWJZcEVHaEZCRUFnQjBIZ0FHb2lBU0FGUVhZZ0FoQVFJQWRCMEFCcUlnUWdCVUhJSkJBM0lBRWdCQkFTR2lBQlFaTGJDeEFPR2lBSFFVQnJJZ2tnQlNBQ0tBSW9FQ29nQVNBSkVCSWFJQUZCMit3TUVBNGFJQUZCb3NBSkVBNGFJQUZCMnNZSkVBNGFJQUZCdnJzRUVBNGFJQWNvQXB3Q0lRTWdDUkFQR2lBRUVBOGFJQUVRRVF3RkN3SkFBa0FDUUNBSkRnTUNBUUlBQ3lBSlFReEdEUUVMSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUNJQVZCeUNRUU55QUJJQUlRRWhvZ0FVSFp2Z29RRGhvZ0FVR1VyUW9RRGhvZ0FVSFdwd2NRRGhvZ0J5Z0NuQUloQXlBQ0VBOGFJQUVRRVF3RkN5QUVMd0VlSVFNTElBTkIvLzhEY1VFZVJ3MEFRUUVoQXdOQUlBTWdCQ2dDRUNBRUtBSU1hMEVFZFU4TkFTQUVJQU1RR3lFTElBTkJBV29oQXlBRklBc1F1Z0V2QVI1QkhVY05BQXNDUUNBSlFRSkhCRUFnQ1VFTVJ3MEJJQVVnRVVFQ0VNQUNEUU1nQjBIZ0FHb2lBU0FGUVhZZ0FoQVFJQWRCMEFCcUlnSWdCVUhJSkJBM0lBRWdBaEFTR2lBQlFZR1ZDaEFPR2lBQlFmYk1DUkFPR2lBQlFhZktCeEFPR2lBSEtBS2NBaUVESUFJUUR4b2dBUkFSREFVTElBVWdFVUVERU1BQ0RRSWdCMEhnQUdvaUFTQUZRWFlnQWhBUUlBZEIwQUJxSWdJZ0JVSElKQkEzSUFFZ0FoQVNHaUFCUVlHVkNoQU9HaUFCUWVPaUNoQU9HaUFCUVpyYkJ4QU9HaUFIS0FLY0FpRURJQUlRRHhvZ0FSQVJEQVFMSUFkQjRBQnFJZ0VnQlVGMklBSVFFQ0FIUWRBQWFpSUNJQVZCeUNRUU55QUJJQUlRRWhvZ0FVSDNxZ29RRGhvZ0FVR2ZyUW9RRGhvZ0FVRzcyd2NRRGhvZ0J5Z0NuQUloQXlBQ0VBOGFJQUVRRVF3REN5QUpRUWhyUVgxTERRRUxJQVVnQVJEc0ZVVU5BQ0FIUWVBQWFpSUJJQVZCZGlBQ0VCQWdBVUhFMndvUURob2dBVUdibUFFUURob2dCeWdDbkFJaEF5QUJFQkVNQVFzQ1FDQUZLUU9BQVNJdlFnS0RVQTBBSUFWQmdBRnFJUXNDUUFKQUlDOUNnSUNBQW9OUUJINGdCU0FSUVJWQkVCQ0dCQTBCSUFzcEF3QUZJQzhMUW9BRWcwSUFVZzBCSUFVZ0VVRVdRUkFRaGdSRkRRRUxJQVFoQVFOQUlBRXZBUjVCSUVZRVFDQUJRUUVRR3lFSklBVWdBVUVDRUJzUUlDRUJEQUVMQ3lBSFFkQUFhaUFGUVlBRGFrRVFJQWtRandFUUZDRU5Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSlFRRnJEZ3dFQWdRR0JRVUZCUU1GQlFFQUN5QUpRZVVwUncwRUN5QUxRZEVpRUdoRkRRVU1Cd3RCQVNFTUlBdEIwaUlRYUEwSElBRXZBUjVCL3Y4RGNVRWNSZ1JBSUFVZ0FVRUJFQnNRSUNFQkN5QUxRZEVpRUdoRkRRUWdCU0FCS0FJb1FRTVF3QUpGRFFRTUJ3c2dDMEhUSWhCb0RRVU1Bd3NnQzBIVUloQm9EUVFNQWdzZ0IwSGdBR29pQVNBRlFYWWdBaEFRSUFGQnFKQUtFQTRhSUFFZ0RSQVNHaUFCUWFhVUFSQU9HZ3dDQ3lBTFFjNGlFR2dOQWdzZ0IwSGdBR29pQVNBRlFYWWdBaEFRSUFGQjhZMEtFQTRhSUFFZ0RSQVNHaUFCUVo4T0VBNGFDeUFIS0FLY0FpRURJQUVRRVVFQUlRd01BUXRCQVNFTUN5QU5FQThhSUF4RkRRSUxJQXN0QUFSQmdBRnhEUUFnQlNBUlFSVkJDQkNHQkVVTkFBTkFJQVF2QVI1QklFWUVRQ0FFUVFFUUd5RUpJQVVnQkVFQ0VCc1FJQ0VFREFFTEN5QUhRZEFBYWlBRlFZQURha0VRSUFrUWp3RVFGQ0VCQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FKUVFKckRnTUJBd1FBQ3dKQUFrQWdDVUVKYXc0RUF3UUVBUUFMSUFsQjVTbEhEUU1MUVFFaENTQUxRZUFpRUdoRkRRUU1CZ3RCQVNFSklBdEI0U0lRYUEwRklBUXZBUjVCL3Y4RGNVRWNSZ1JBSUFVZ0JFRUJFQnNRSUNFRUN5QUxRZUFpRUdoRkRRTWdCU0FFS0FJb1FRTVF3QUpGRFFNTUJRdEJBU0VKSUF0QjRpSVFhRVVOQWd3RUN5QUhRZUFBYWlJRUlBVkJkaUFDRUJBZ0JFSHhqd29RRGhvZ0JDQUJFQklhSUFSQnBwUUJFQTRhREFJTFFRRWhDU0FMUWMwaUVHZ05BZ3NnQjBIZ0FHb2lCQ0FGUVhZZ0FoQVFJQVJCdkkwS0VBNGFJQVFnQVJBU0dpQUVRWjhPRUE0YUN5QUhLQUtjQWlFRElBUVFFVUVBSVFrTElBRVFEeG9nQ1VVTkFRdEJBQ0VEQ3lBSFFhQUNhaVFBSUFNaEJ3d05DeUFGSUFNb0FpUVFJQ0lFUlFSQUlBWkIwQUJxSWdFZ0JVRjJJQU1RRUNBQlFjTFdDeEFPR2lBR1FTQnFJZ0lnQlNBREtBSWtFQ29nQVNBQ0VCSWFJQUZCNW9NSUVBNGFJQVlvQW93Q0lRY2dBaEFQR2lBQkVCRU1EUXNDUUFKQUlBVWdBMEVDRUJzaUJ4QWdJZ0pGRFFBZ0JTZ0NrQU1OQVNBRkxRQ2tBMFVFUUNBQ0x3RWVFSXNPUlEwQklBVXRBS1FEUlEwQ0N5QUNMd0VlRUl3T0RRRUxJQVpCMEFCcUlnRWdCVUYySUFNUUVDQUJRWnJJQ3hBT0dpQUdRU0JxSWdNZ0JTQUhFQ29nQVNBREVCSWFJQUZCdWNnSEVBNGFJQVlvQW93Q0lRY2dBeEFQR2lBQkVCRU1EUXNDUUNBRklBSW9BaVFRSUNJQkJFQWdBUzhCSGtFZ1JnMEJDeUFHUWRBQWFpSUJJQVZCZGlBREVCQWdBVUhJeHdzUURob2dCa0VnYWlJRElBVWdCeEFxSUFFZ0F4QVNHaUFCUWJQdkJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0FSQVJEQTBMQWtBZ0JTQUJLQUlvSUFaQkVHb2dCaENJQWdSQUlBUW9BaWdnQmlnQ0VFWU5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUZCd3RZTEVBNGFJQVpCSUdvaUJDQUZJQU1vQWlRUUtpQUJJQVFRRWhvZ0FVSG14d3NRRGhvZ0JrRkFheUlESUFVZ0FpZ0NLQkFxSUFFZ0F4QVNHaUFCUWQvdUJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0JCQVBHaUFCRUJFTURRc0NRQ0FGS0FJRUxRQXNEUUFnQXlnQ0pDRUhJd0JCSUdzaUFTUUFJQUZCM0pnZ05nSUlJQUVnQVVFSWFpSUNOZ0lZSUFVZ0J5QUNRUUFRb3dvaEJ5QUNFQllnQVVFZ2FpUUFJQWRGRFFBZ0JrSFFBR29pQVNBRlFYWWdBeEFRSUFGQjBCc1FEaG9nQmlnQ2pBSWhCeUFCRUJFTURRc2dCU0FEUVFNUXJBZ2lCdzBNUVFBaEJ5QUZMUUNBQVVFQ2NVVU5EQ0FGSUFNb0FpUVE4UUpGRFF3Z0JDOEJIa0VWYTBILy93TnhJZ0ZCREU5Qmp4QWdBWFpCQVhGRmNnMExEQXdMQWtBQ1FDQUZJQU5CQUJBYklnSVFJQ0lCUlEwQUlBVW9BcEFERFFFZ0JTMEFwQU5GQkVBZ0FTOEJIaENMRGtVTkFTQUZMUUNrQTBVTkFnc2dBUzhCSGhDTURnMEJDeUFHUWRBQWFpSUJJQVZCZGlBREVCQWdBVUdFeUFzUURob2dCa0ZBYXlJRElBVWdBaEFxSUFFZ0F4QVNHaUFCUWJuSUJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0FSQVJEQXdMQWtBZ0JTQUJLQUlrRUNBaUJ3UkFJQWN2QVI1QklFWU5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUZCcWNjTEVBNGFJQVpCUUdzaUF5QUZJQUlRS2lBQklBTVFFaG9nQVVHejd3Y1FEaG9nQmlnQ2pBSWhCeUFERUE4YUlBRVFFUXdNQ3dKQUlBVWdCMEVDRUJzUUlDSUVCRUFnQkM4QkhrRVRSdzBCQ3lBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHRXlBc1FEaG9nQmtGQWF5SURJQVVnQWhBcUlBRWdBeEFTR2lBQlFjejhCeEFPR2lBR0tBS01BaUVISUFNUUR4b2dBUkFSREF3TElBVWdCeWdDS0NBR0lBWkJQR29RaUFKRkJFQWdCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJoTWdMRUE0YUlBWkJRR3NpQXlBRklBSVFLaUFCSUFNUUVob2dBVUdnL3dNUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd01DeUFHS0FJOElnZEJDVXRCQVNBSGRFR0RCSEZGY2cwSklBWkIwQUJxSWdFZ0JVRjJJQU1RRUNBQlFZVElDeEFPR2lBR1FVQnJJZ01nQlNBQ0VDb2dBU0FERUJJYUlBRkJ4QlFRRGhvZ0JpZ0NqQUloQnlBREVBOGFJQUVRRVF3TEN5QUZJQU5CQUJBYklnY1FJQ0lCUlFSQUlBWkIwQUJxSWdFZ0JVRjJJQU1RRUNBQlFhWGFDeEFPR2lBR1FTQnFJZ01nQlNBSEVDb2dBU0FERUJJYUlBRkI1b01JRUE0YUlBWW9Bb3dDSVFjZ0F4QVBHaUFCRUJFTUN3c2dCU0FEUVFFUUd5SUVFQ0FpQ1VVRVFDQUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVSDkyZ3NRRGhvZ0JrRWdhaUlESUFVZ0JCQXFJQUVnQXhBU0dpQUJRZWFEQ0JBT0dpQUdLQUtNQWlFSElBTVFEeG9nQVJBUkRBc0xBa0FnQlNBQktBSWtFQ0FpQWdSQUlBSXZBUjVCSUVZTkFRc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJwZG9MRUE0YUlBWkJJR29pQXlBRklBY1FLaUFCSUFNUUVob2dBVUh2eUFjUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd0xDd0pBSUFVZ0NTZ0NKQkFnSWdFRVFDQUJMd0VlUVNCR0RRRUxJQVpCMEFCcUlnRWdCVUYySUFNUUVDQUJRZjNhQ3hBT0dpQUdRU0JxSWdNZ0JTQUVFQ29nQVNBREVCSWFJQUZCNzhnSEVBNGFJQVlvQW93Q0lRY2dBeEFQR2lBQkVCRU1Dd3NDUUNBREx3RWVRVDlHQkVBQ1FDQUZJQUpCQWhBYkVDQWlDUVJBSUFrdkFSNUJFMGNOQVFzZ0JrSFFBR29pQVNBRlFYWWdBeEFRSUFGQnBkb0xFQTRhSUFaQklHb2lBeUFGSUFjUUtpQUJJQU1RRWhvZ0FVSFV5QWNRRGhvZ0JpZ0NqQUloQnlBREVBOGFJQUVRRVF3TkN3SkFJQVVnQVVFQ0VCc1FJQ0lIQkVBZ0J5OEJIa0VUUncwQkN5QUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVSDkyZ3NRRGhvZ0JrRWdhaUlESUFVZ0JCQXFJQUVnQXhBU0dpQUJRZFRJQnhBT0dpQUdLQUtNQWlFSElBTVFEeG9nQVJBUkRBMExJQWtvQWlnZ0J5Z0NLRVlOQVNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVIMXhBc1FEaG9nQmtFZ2FpSURJQVVnQkJBcUlBRWdBeEFTR2lBQlFZTGFDeEFPR2lBR1FVQnJJZ0lnQlNBSEtBSW9FQ29nQVNBQ0VCSWFJQUZCMys0SEVBNGFJQVlvQW93Q0lRY2dBaEFQR2lBREVBOGFJQUVRRVF3TUN5QUZJQU5CQWhBYklnRVFJQ0lFUlFSQUlBWkIwQUJxSWdJZ0JVRjJJQU1RRUNBQ1FkWGFDeEFPR2lBR1FTQnFJZ01nQlNBQkVDb2dBaUFERUJJYUlBSkI1b01JRUE0YUlBWW9Bb3dDSVFjZ0F4QVBHaUFDRUJFTURBc2dCU0FGSUFRb0FpUVFJQ0lIS0FJb0VGQkZCRUFnQmtIUUFHb2lBaUFGUVhZZ0F4QVFJQUpCMWRvTEVBNGFJQVpCSUdvaUF5QUZJQUVRS2lBQ0lBTVFFaG9nQWtIUDhBY1FEaG9nQmlnQ2pBSWhCeUFERUE4YUlBSVFFUXdNQ3dKQUFrQWdCQzhCSGtFcmF3NEVBUUlDQUFJTElBWkIwQUJxSWdJZ0JVRjJJQU1RRUNBQ1FkWGFDeEFPR2lBR1FTQnFJZ01nQlNBQkVDb2dBaUFERUJJYUlBSkJwczhIRUE0YUlBWW9Bb3dDSVFjZ0F4QVBHaUFDRUJFTURBc0NRQ0FIS0FJQUtBSU1RUUZIRFFBZ0JDZ0NCRUVFYXlnQ0FFRUFUZzBBSUFaQjBBQnFJZ0lnQlVGMklBTVFFQ0FDUWRYYUN4QU9HaUFHUVNCcUlnTWdCU0FCRUNvZ0FpQURFQklhSUFKQnBwVUlFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUNFQkVNREF0QkF5RUhRUUVoRVFOQUlCRkZEUUVnQkNnQ0JDQUVLQUlBSWdsclFRSjFJQWRMQkVBZ0NTQUhRUUowYWlnQ0FFVWhFU0FIUVFGcUlRY01BUXNMSUFaQjBBQnFJZ0lnQlVGMklBTVFFQ0FDUWRYYUN4QU9HaUFHUVNCcUlnTWdCU0FCRUNvZ0FpQURFQklhSUFKQnBzOEhFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUNFQkVNQ3dzZ0F5OEJIaUlCUVQ5clFRSlBEUWNDUUVFQ1FRTWdBVUUvUmhzaUFTQURLQUlRSUFNb0FneHJRUVIxVHcwQUlBVWdBeUFCRUt3SUlnY05EU0FESUFFUUd5RUVJQU1vQWhBZ0F5Z0NER3RCQkhVZ0JCRE9EU0FCYWlJQlRRMEFBa0FnQlMwQXFnTUVRQ0FGSUFNZ0FSQ3NDQ0lIRFE4Z0JFRVFjUVJBSUFaQjBBQnFJZ1FnQlVGeUlBTVFFQ0FFUWFQM0JSQU9HZ3dDQ3lBRElBRVFHMEVJY1VVTkFpQUdRZEFBYWlJRUlBVkJjaUFERUJBZ0JFR1YrQVVRRGhvTUFRc2dCa0hRQUdvaUJDQUZRWElnQXhBUUlBUWdBeThCSGhBcEVBNGFJQVJCMnVRQkVBNGFDeUFHS0FLTUFpRUhJQVFRRVNBSERRMExBMEFnQlNBQ1FRSVFHeEFnSWdJdkFSNUJJRVlOQUFzZ0JTMEFnQUZCQW5GRkRRc2dCU0FDS0FJb0VQRUNSUTBMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWJLMEFSQU9HaUFHS0FLTUFpRUhJQUVRRVF3S0N3SkFJQVVvQXBBRERRQWdCUzBBcEFNTkFDQUdRZEFBYWlJQklBVkJjaUFERUJBZ0FVSGF1d2tRRGhvZ0FVRzM5QUVRRGhvZ0JpZ0NqQUloQnlBQkVCRU1DZ3NnQlNBREVQQVZJZ2NOQ3lBRlFZQUJhaUVDSUFVZ0JTQURRUUlRR3hBZ0tBSWtFQ0FpQkVFQkVCc2hBUUpBSUFVdEFJQUJRUUp4UlEwQUFrQUNRQUpBSUFGQkNXc09CQUlCQVFJQUN5QUJRUUpHSUFGQjVTbEdjZzBCQ3lBQ1Fjd2lFR2hGSUFGQkJFZHlEUUVMSUFVZ0JDZ0NLRUVHRU1BQ0RRQWdCa0hRQUdvaUFTQUZRWElnQXhBUUlBRkI0dEVFRUE0YUlBWW9Bb3dDSVFjZ0FSQVJEQW9MSUFVb0FnQW9BZ0FRUjBVZ0FVSGxLVVp5RFFvQ1FDQUJRUXhIQkVBZ0FVRUVSdzBCSUFKQjJpSVFhQTBNSUFaQjBBQnFJZ0VnQlVGeUlBTVFFQ0FHUVNCcUlnTWdCVUhqT3hBM0lBRWdBeEFTR2lBQlFiOExFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUJFQkVNQ3dzZ0JTMEFwQU1OQ3lBR1FkQUFhaUlCSUFWQmNpQURFQkFnQmtFZ2FpSURJQVZCNURzUU55QUJJQU1RRWhvZ0FVSGJEQkFPR2lBR0tBS01BaUVISUFNUUR4b2dBUkFSREFvTElBWkIwQUJxSWdFZ0JVRnlJQU1RRUNBR1FTQnFJZ01nQlVIaU94QTNJQUVnQXhBU0dpQUJRYXFRQVJBT0dpQUdLQUtNQWlFSElBTVFEeG9nQVJBUkRBa0xJQVVnQXhEd0ZTRUhEQWdMSUFaQklHcEJzTDhDSUFaQjBBQnFJQUVRS1JBVUlnRVFOU0FCRUE4YUFrQUNRQUpBSUFVZ0F5Z0NKQkFnSWdFdkFSNUJGVWNOQUNBQlFRRVFHMEVnUncwQUlBRkJBaEFiUlEwQkN5QUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVR2lzQW9RRGhvZ0FTQUdRU0JxRUJJYUlBRkJuZHNMRUE0YUlBWkJRR3NpQWlBRklBTW9BaWdRS2lBQklBSVFFaG9nQVVIS2xRZ1FEaG9nQmlnQ2pBSWhCeUFDRUE4YUlBRVFFUXdCQ3lBRklBVWdBMEVDRUJzUUlDZ0NKQkFnSWdFdkFSNUJJRWNFUUNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVIZ2tBb1FEaG9nQVNBR1FTQnFFQklhSUFGQm5kc0xFQTRhSUFaQlFHc2lBaUFGSUFNb0FpZ1FLaUFCSUFJUUVob2dBVUhEcUFjUURob2dCaWdDakFJaEJ5QUNFQThhSUFFUUVRd0JDeUFGSUFGQkFoQWJFQ0FpQVM4QkhrRWVSd1JBSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWVDUUNoQU9HaUFCSUFaQklHb1FFaG9nQVVHZDJ3c1FEaG9nQmtGQWF5SUNJQVVnQXlnQ0tCQXFJQUVnQWhBU0dpQUJRY09vQnhBT0dpQUdLQUtNQWlFSElBSVFEeG9nQVJBUkRBRUxJQVVnQVNBQktBSVFJQUVvQWd4clFRUjFJZ0ZCQVdzUUd4QWdMd0VlUVIxSEJFQWdCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJtbzhLRUE0YUlBRWdCa0VnYWhBU0dpQUJRWjNiQ3hBT0dpQUdRVUJySWdJZ0JTQURLQUlvRUNvZ0FTQUNFQklhSUFGQmdaUUhFQTRhSUFZb0Fvd0NJUWNnQWhBUEdpQUJFQkVNQVFzZ0EwRURFQnNnQVVFQ2EwWU5BQ0FHUWRBQWFpSUJJQVZCZGlBREVCQWdBVUdGandvUURob2dBU0FHUVNCcUVCSWFJQUZCbmRzTEVBNGFJQVpCUUdzaUFpQUZJQU1vQWlnUUtpQUJJQUlRRWhvZ0FVR1lxQWNRRGhvZ0JpZ0NqQUloQnlBQ0VBOGFJQUVRRVFzZ0JrRWdhaEFQR2d3SEMwRzN6d1VoQnlBRklBTkJBUkFiRUNBaEFnc2dCU0FDS0FJa0lnSVFJQ0VFSUFNdkFSNGhBUUpBSUFRdkFSNUI3aWxIQkVBZ0FVSHZLVWNOQVNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVIYjFnc1FEaG9nQmtFZ2FpSURJQVVnQWhBcUlBRWdBeEFTR2lBQlFkSHJCeEFPR2lBR0tBS01BaUVISUFNUUR4b2dBUkFSREFjTEFrQUNRQ0FGSUFNZ0FVSHZLVVpCQVhRUUd5SUVFQ0FpQWtVTkFDQUZLQUtRQXcwQklBVXRBS1FEUlFSQUlBSXZBUjRRaXc1RkRRRWdCUzBBcEFORkRRSUxJQUl2QVI0UWpBNE5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUVnQnhBT0dpQUJRYURJQ3hBT0dpQUdRU0JxSWdNZ0JTQUVFQ29nQVNBREVCSWFJQUZCdWNnSEVBNGFJQVlvQW93Q0lRY2dBeEFQR2lBQkVCRU1Cd3NDUUNBRklBSW9BaVFpQ1JBZ0lnRUVRQ0FCTHdFZVFTQkdEUUVMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCSUFjUURob2dBVUhPeHdzUURob2dCa0VnYWlJRElBVWdCQkFxSUFFZ0F4QVNHaUFCUWJQdkJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0FSQVJEQWNMSUFGQkFSQWJJZ1JCQkVZZ0JFRU1SbklnQkVIbEtVWnlSUVJBSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCSUFjUURob2dBVUhCemdzUURob2dCa0VnYWlJRElBVWdDUkFxSUFFZ0F4QVNHaUFCUVl2TEJ4QU9HaUFHS0FLTUFpRUhJQU1RRHhvZ0FSQVJEQWNMQWtBZ0JTQUJRUUlRR3lJQkVDQUVRQ0FGSUFFUXh3RU5BU0FGSUFFUXJnRU5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUVnQnhBT0dpQUJRYURJQ3hBT0dpQUdRU0JxSWdNZ0JTQUNLQUlvRUNvZ0FTQURFQklhSUFGQjUrNEhFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUJFQkVNQndzQ1FDQUZJQU5CQTBFQ0lBTXZBUjVCN3lsR0d4QWJJZ0lRSUNJQkJFQWdCU0FCS0FJa0VGQU5BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUZCNk5vTEVBNGFJQVpCSUdvaUF5QUZJQUlRS2lBQklBTVFFaG9nQVVIUDhBY1FEaG9nQmlnQ2pBSWhCeUFERUE4YUlBRVFFUXdIQ3dKQUFrQWdCU0FEUVFSQkF5QURMd0VlUWU4cFJoc1FHeUlDRUNBaUFVVU5BQ0FGSUFFb0FpUVF2d0pGRFFBZ0FTOEJIaENqQWcwQklBRXZBUjRRdndnTkFRc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJ1dG9MRUE0YUlBWkJJR29pQXlBRklBSVFLaUFCSUFNUUVob2dBVUdFMGdjUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd0hDMEVGUVFRZ0F5OEJIa0h2S1VZYklnRWdBeWdDRUNBREtBSU1hMEVFZFU4TkJ5QUZJQU1nQVJDc0NDRUhEQVlMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWVyTkN4QU9HaUFHUVNCcUlnTWdCU0FDRUNvZ0FTQURFQklhSUFGQjBlc0hFQTRhSUFZb0Fvd0NJUWNnQXhBUEdpQUJFQkVNQlFzZ0JrRWdha0d3dndJZ0JrSFFBR29nQVJBcEVCUWlBUkExSUFFUUR4b0NRQUpBQWtBZ0JTQURLQUlrRUNBaUFTOEJIa0VWUncwQUlBRkJBUkFiUVNCSERRQWdBVUVDRUJ0RkRRRUxJQVpCMEFCcUlnRWdCVUYySUFNUUVDQUJRYUt3Q2hBT0dpQUJJQVpCSUdvUUVob2dBVUdkMndzUURob2dCa0ZBYXlJQ0lBVWdBeWdDS0JBcUlBRWdBaEFTR2lBQlFjcVZDQkFPR2lBR0tBS01BaUVISUFJUUR4b2dBUkFSREFFTFFRQWhCeUFGSUFOQkFoQWJJZ0lRSUM4QkhrSHVLVVlOQUNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVINWtBb1FEaG9nQVNBR1FTQnFFQklhSUFGQm5kc0xFQTRhSUFaQlFHc2lBeUFGSUFJUUtpQUJJQU1RRWhvZ0FVR0NpZ2dRRGhvZ0JpZ0NqQUloQnlBREVBOGFJQUVRRVFzZ0JrRWdhaEFQR2d3RUN3SkFJQVVvQXBBRERRQWdCUzBBcEFNTkFDQUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVRzNDaEFPR2lBR0tBS01BaUVISUFFUUVRd0VDeUFGSUFNb0FpUVFJQ0VCQWtBZ0F5OEJIa0dUQTBZRVFDQUJCRUFnQVM4QkhrRVZSZzBDQ3lBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVIaGpRSVFEaG9nQmlnQ2pBSWhCeUFCRUJFTUJRc2dBUVJBSUFFdkFSNUJGRVlOQVFzZ0JrSFFBR29pQVNBRlFYWWdBeEFRSUFGQmtQd0NFQTRhSUFZb0Fvd0NJUWNnQVJBUkRBUUxBa0FnQlNBRFFRSVFHeEFnSWdGRklBVWdBMEVERUJzUUlDSUNSWEpGQkVBZ0FTZ0NKQ0lCSUFJb0FpUkdEUUVMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWNLbEF4QU9HaUFHS0FLTUFpRUhJQUVRRVF3RUN3SkFJQVVnQVJBZ0lnRUVRQ0FCTHdFZVFTQkdEUUVMSUFaQjBBQnFJZ0VnQlVGMklBTVFFQ0FCUWJqYUFSQU9HaUFHS0FLTUFpRUhJQUVRRVF3RUN5QUJRUUVRR3lFQklBVW9BcEFEUlFSQUlBRkJkM0ZCQkVjRVFDQUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVR01rQUVRRGhvZ0JpZ0NqQUloQnlBQkVCRU1CUXNnQVVFRVJ3MEZJQVZCZ0FGcVFkb2lFR2dOQlNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHVitnUVFEaG9nQmlnQ2pBSWhCeUFCRUJFTUJBc2dBVUhsS1VjTkJDQUdRZEFBYWlJQklBVkJkaUFERUJBZ0FVR1hrUUVRRGhvZ0JpZ0NqQUloQnlBQkVCRU1Bd3RCaGU4RVFmK1VBa0hVQ0VHTWpRRVFBQUFMQWtBQ1FBSkFJQWRCMnlsckRnVUFBUUVCQWdFTElBWkIwQUJxSWdzZ0JVSGZKQkEzSUFVZ0F5Z0NPQ2dDQUJDZkFTRU1JQVpCRUdvZ0N4QlVJUWRCRUJBVklnbEI5SXdnTmdJQUlBa2dCeWtDQURjQ0JDQUpJQWNvQWdnMkFnd2dCeEJWSUFZZ0NUWUNNQ0FNUWFBRGFpQUdRU0JxSWdrUXpRRWdDUkFXSUFjUUR4b2dDeEFQR2dzQ1FDQUZLQUlBS0FJQUVFZEZEUUFnQmlnQ1BFRUNSdzBBQTBBZ0FTOEJIa0hCQUdzaUIwRVNTMEVCSUFkMFFhZUFFSEZGY2tVRVFDQUZJQUZCQWhBYkVMb0JJUUVNQVFzTElBRXZBUjVCTzBjTkFDQUZJQVVnQlNBQlFRQVFHeEFnUVFJUUd4QWdJZ0V2QVI1Qi92OERjVUVjUmdSL0lBVWdBVUVCRUJzUUlBVWdBUXNvQWloQkFoREFBa1VOQUNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQmtGQWF5SURJQVZCalRZUU55QUJJQU1RRWhvZ0FVR2tyQUVRRGhvZ0JpZ0NqQUloQnlBREVBOGFJQUVRRVF3REN3SkFJQVVnQTBFQkVCc2lDUkFnSWdjRVFDQUhLQUlrSWdFTkFRc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJyY1lMRUE0YUlBWkJRR3NpQXlBRklBa1FLaUFCSUFNUUVob2dBVUg2cWdjUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd0RDd0pBSUFVZ0FSQWdJZ0VFUUNBQkx3RWVJZ3RCRTBjTkFRc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkJyY1lMRUE0YUlBWkJRR3NpQXlBRklBa1FLaUFCSUFNUUVob2dBVUhNL0FjUURob2dCaWdDakFJaEJ5QURFQThhSUFFUUVRd0RDd0pBSUFRb0FpZ2dBU2dDS0VZTkFBSkFBa0FnQlNnQ0JDMEFKRVVOQUNBRUx3RWVRUjVIRFFBZ0MwRWVSZzBCQ3lBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHRXlBc1FEaG9nQmtGQWF5SURJQVVnQWhBcUlBRWdBeEFTR2lBQlFZckdDeEFPR2lBR0lBVWdCeWdDS0JBcUlBRWdCaEFTR2lBQlFkL3VCeEFPR2lBR0tBS01BaUVISUFZUUR4b2dBeEFQR2lBQkVCRU1CQXNnQlNBRUlBRVE3eFVOQUNBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHRXlBc1FEaG9nQmtGQWF5SURJQVVnQWhBcUlBRWdBeEFTR2lBQlFlWEZDeEFPR2lBR0lBVWdCeWdDS0JBcUlBRWdCaEFTR2lBQlFlbVhCeEFPR2lBR0tBS01BaUVISUFZUUR4b2dBeEFQR2lBQkVCRU1Bd3NnQlNBRFFRSVFyQWdpQncwRUlBVXRBSUFCUVFKeFJRMERJQVVnQXlnQ0pCRHhBa1VOQXlBQkx3RWVRUlZySWdGQkMwMUJBRUVCSUFGMFFZOFFjUnNOQXlBR1FkQUFhaUlCSUFWQmRpQURFQkFnQVVHTDhBTVFEaG9nQmlnQ2pBSWhCeUFCRUJFTUFnc2dCa0hRQUdvaUFTQUZRWFlnQXhBUUlBRkI0QlFRRGhvZ0JpZ0NqQUloQnlBQkVCRU1BUXNnQmtIUUFHb2lBU0FGUVhZZ0F4QVFJQUZCeC9BREVBNGFJQVlvQW93Q0lRY2dBUkFSQ3lBSERRRUxRUUFoQndzZ0JrR1FBbW9rQUNBSElnRU5CMEVBSVFRakFFSHdBV3NpQVNRQUFrQUNRQUpBQWtBQ1FBSkFJQWd2QVI1Qk5tc09CQUFDQkFFRUN3SkFJQVVnQ0VFREVCc2lBaEFnSWdNRVFDQURMd0VlUVNGR0RRRUxJQUZCTUdvaUF5QUZRWFlnQ0JBUUlBTkJqZGdMRUE0YUlBRkJJR29pQkNBRklBSVFLaUFESUFRUUVob2dBMEhGOFFjUURob2dBU2dDN0FFaEFpQUVFQThhSUFNUUVRd0RDeUFEUVFFUUd5SUNJQWdvQWlSSEJFQWdBVUV3YWlJRElBVkJkaUFJRUJBZ0EwSE8wUXNRRGhvZ0FVRWdhaUlFSUFVZ0NDZ0NKQkFxSUFNZ0JCQVNHaUFEUWVmT0N4QU9HaUFCUVJCcUlnY2dCU0FDRUNvZ0F5QUhFQklhSUFOQi9KY0lFQTRhSUFFb0F1d0JJUUlnQnhBUEdpQUVFQThhSUFNUUVRd0RDeUFCUVRCcUlnTkJvTWdOUVRnUWZSb2dBVUVPTmdJTUlBRWdBellDQ0NBQklBRXBBd2czQXdBZ0FVRWdhaUFCRU9jRElRTWdDQ2dDUkNFRUlBZ29Ba0FoQWdOQUFrQUNRQ0FDSUFSR0JFQkJBQ0VDREFFTElBTW9BZ1FoQmlBREtBSUFJUWtnQVNBQ0tBSUFJZ2N2QVI0MkFqQWdDU0FHSUFGQk1Hb1FtZ1VnQXlnQ0JFY05BU0FIRU0wRkRRRWdCeERYRFEwQklBRkJNR29pQkNBRlFYWWdCeEFRSUFSQmtkY0tFQTRhSUFGQkVHb2lCeUFGSUFnb0FpZ1FLaUFFSUFjUUVob2dCRUg4bHdnUURob2dBU2dDN0FFaEFpQUhFQThhSUFRUUVRc2dBeEF5R2d3RUN5QUNRUWhxSVFJTUFBc0FDd0pBSUFVZ0NFRUNFQnNpQWhBZ0lnTUVRQ0FETHdFZVFUWkdEUUVMSUFGQk1Hb2lBeUFGUVhZZ0NCQVFJQU5CMXNvTEVBNGFJQUZCSUdvaUJDQUZJQUlRS2lBRElBUVFFaG9nQTBHRjFRY1FEaG9nQVNnQzdBRWhBaUFFRUE4YUlBTVFFUXdDQ3dKQUlBVWdBeWdDSkJBZ0lnSUVRQ0FDS0FJb0lBZ29BaVJHRFFFTElBRkJNR29pQXlBRlFYWWdDQkFRSUFOQmpOSUxFQTRhSUFGQklHb2lCQ0FGSUFnb0FpUVFLaUFESUFRUUVob2dBMEgweWdzUURob2dBVUVRYWlJSElBVWdBaWdDS0JBcUlBTWdCeEFTR2lBRFFiYnhCeEFPR2lBQktBTHNBU0VDSUFjUUR4b2dCQkFQR2lBREVCRU1BZ3NDUUNBRklBTkJBeEFiRUNBaUJ3UkFJQWN2QVI1QklVWU5BUXNnQVVFd2FpSURJQVZCZGlBSUVCQWdBMEgyMEFjUURob2dBU2dDN0FFaEFpQURFQkVNQWdzZ0NDZ0NCQ0FJS0FJQWEwRUNkVUVCYXlBSEtBSUVJQWNvQWdCclFRSjFSZ1JBSUFWQmdBRnFJUTFCQXlFRVFRSWhDd05BSUFRZ0NDZ0NFQ0FJS0FJTWEwRUVkVThOQkNBRklBZ2dCQkFiSWdZUUlDSU1SUVJBSUFGQk1Hb2lBeUFGUVhZZ0NCQVFJQU5Ca013SkVBNGFJQU1nQkVFRGF4QWhHaUFEUVl2UkJ4QU9HaUFCS0FMc0FTRUNJQU1RRVF3RUN5QUZJQXdvQWlRUUlDSUpSUVJBSUFGQk1Hb2lBeUFGUVhZZ0NCQVFJQU5Ca013SkVBNGFJQU1nQkVFRGF4QWhHaUFEUVliUkJ4QU9HaUFCS0FMc0FTRUNJQU1RRVF3RUN3SkFJQVVnQnlBTEVCc2lFQkFnSWdNRVFDQUpLQUlvSUFNb0FpaEdEUUVMQWtBZ0JTZ0NCQzBBTEVVTkFDQUpMd0VlUVNCSERRQWdBeThCSGtFZ1J3MEFJQVVnQ1NnQ0tCRGVBU0lQUVFScUlSRWdCU0FES0FJb0VONEJJZ0pCQkdvaEV5QUNLQUlBSVFJRFFDQUNJQk5IQkVBZ0R5Z0NBQ0FSSUFKQkVHb1EvQlVnRVVZTkFpQUNFRXdoQWd3QkN3c2dDVUVDRUJzaUFpQURRUUlRR3lJSlJnMEJJQVVnQlNBQ0VDQWdCU0FKRUNCQkFSQzlEUTBCQ3lBQlFUQnFJZ01nQlVGMklBZ1FFQ0FEUWFERUN4QU9HaUFCUVNCcUlnUWdCU0FHRUNvZ0F5QUVFQklhSUFOQjlNb0xFQTRhSUFGQkVHb2lCeUFGSUJBUUtpQURJQWNRRWhvZ0EwSEw3d2NRRGhvZ0FTZ0M3QUVoQWlBSEVBOGFJQVFRRHhvZ0F4QVJEQVFMQWtBZ0JTZ0NrQU1OQUNBREx3RWVRU0JIRFFBZ0JTZ0NCQzBBSlEwQUFrQUNRQ0FEUVFFUUd5SURRUXhMRFFCQkFTQURkRUhSQ1hFTkFTQURRUXhIRFFBZ0JTMEFwQU1OQVNBQlFUQnFJZ01nQlVGMklBZ1FFQ0FEUWVUTUNoQU9HaUFCUVNCcUlnUWdCU0FHRUNvZ0F5QUVFQklhSUFOQmxnc1FEaG9nQVNnQzdBRWhBaUFFRUE4YUlBTVFFUXdHQ3lBQlFUQnFJZ01nQlVGMklBZ1FFQ0FEUWJuTUNoQU9HaUFCUVNCcUlnUWdCU0FHRUNvZ0F5QUVFQklhSUFFb0F1d0JJUUlnQkJBUEdpQURFQkVNQlFzQ1FDQU1Md0VlUVRkckRnVUJBQUFBQVFBTElBTkZJQU5CREVZZ0JTMEFwQU5CQUVkeGNpQU5RZG9pRUdnZ0EwRUVSbkZ5RFFBZ0FVRXdhaUlESUFWQmRpQUlFQkFnQTBHRHpRb1FEaG9nQVVFZ2FpSUVJQVVnQmhBcUlBTWdCQkFTR2lBRFFZL2RBaEFPR2lBQktBTHNBU0VDSUFRUUR4b2dBeEFSREFRTElBdEJBV29oQ3lBRVFRRnFJUVFNQUFzQUN5QUJRVEJxSWdNZ0JVRjJJQWdRRUNBRFFZMllCeEFPR2lBQktBTHNBU0VDSUFNUUVRd0JDeUFJS0FJMFFRRnJJZ0pGQkVBZ0FVRXdhaUlESUFWQmRDQUlFQkFnQTBHWTBRY1FEaG9nQVNnQzdBRWhBaUFERUJFTUFRc2dCU2dDb0FFaUEwSE1BR29oQmdKQUEwQWdBa0VCYXlJQ1JRMEJJQU1nQWtITUFHeHFMd0VlSWdkQk5rY0VRQ0FFSUFkQk4wWnFJUVFNQVFzTElBTWdBa0hNQUd4cUlRWUxJQVl2QVI1Qk5rY0VRQ0FCUVRCcUlnTWdCVUYwSUFnUUVDQURRZExVQnhBT0dpQUJLQUxzQVNFQ0lBTVFFUXdCQ3lBRklBWkJBeEFiRUNBaUFrVUVRQ0FCUVRCcUlnTWdCVUYySUFZUUVDQURRZmJRQnhBT0dpQUJLQUxzQVNFQ0lBTVFFUXdCQ3lBQ0tBSUVJQUlvQWdCclFRSjFRUU5ySUFSTkJFQWdBVUV3YWlJRElBVkJkaUFJRUJBZ0EwSHE3UWtRRGhvZ0F5QUdLQUlvRUNFYUlBTkI0dG9LRUE0YUlBTWdBaWdDQkNBQ0tBSUFhMEVDZFVFRGF4QWhHaUFEUWRiMkF4QU9HaUFCS0FMc0FTRUNJQU1RRVF3QkN3SkFJQVVnQWlBRVFRSnFFQnNRSUNJRFJRMEFJQWdvQWlRaUFpQURLQUlvUncwQUEwQWdCU0FDRUhCQkhFWUVRQ0FGSUFJUUlFRUJFQnNoQWd3QkN3c2dCU0FDRUhCQklFY05BaUFGSUFJUUlDSURRUUVRRzBIbEtVWUVRQ0FGSUFnb0FpZ1EzZ0VpQkVFRWFpRURJQVFvQWdBaEFnTkFBa0FnQWlBRFJpSUhEUUFnQWlnQ0VFRVVSZzBBSUFJUVRDRUNEQUVMQ3lBRUtBSUFJUVFDUUFOQUlBTWdCRWNFUUNBRUtBSVFRUk5HRFFJZ0JCQk1JUVFNQVFzTElBSWdBMGNOQkNBQlFUQnFJZ01nQlVGMklBZ1FFQ0FEUWI3NENSQU9HaUFESUFnb0FpZ1FJUm9nQTBIL3hRY1FEaG9nQVNnQzdBRWhBaUFERUJFTUF3c2dCdzBESUFGQk1Hb2lBeUFGUVhZZ0NCQVFJQU5CdnZnSkVBNGFJQU1nQ0NnQ0tCQWhHaUFEUWNIR0J4QU9HaUFCS0FMc0FTRUNJQU1RRVF3Q0N5QUZJQU5CQWhBYkVDQWlBeThCSGtFZ1J3MENJQU5CQVJBYlFlVXBSdzBDSUFVZ0NDZ0NLQkRlQVNJRVFRUnFJUU1nQkNnQ0FDRUNBMEFDUUNBQ0lBTkdJZ2NOQUNBQ0tBSVFRZXdwUmcwQUlBSVFUQ0VDREFFTEN5QUVLQUlBSVFRQ1FBTkFJQU1nQkVjRVFDQUVLQUlRUWVzcFJnMENJQVFRVENFRURBRUxDeUFDSUFOSERRTWdBVUV3YWlJRElBVkJkaUFJRUJBZ0EwRysrQWtRRGhvZ0F5QUlLQUlvRUNFYUlBTkJqc2NIRUE0YUlBRW9BdXdCSVFJZ0F4QVJEQUlMSUFjTkFpQUJRVEJxSWdNZ0JVRjJJQWdRRUNBRFFiNzRDUkFPR2lBRElBZ29BaWdRSVJvZ0EwSGV4d2NRRGhvZ0FTZ0M3QUVoQWlBREVCRU1BUXNnQVVFd2FpSURJQVZCZGlBSUVCQWdBMEdFMFFzUURob2dBVUVnYWlJRUlBVWdDQ2dDSkJBcUlBTWdCQkFTR2lBRFFhU1hCeEFPR2lBQktBTHNBU0VDSUFRUUR4b2dBeEFSQ3lBQ0RRRUxRUUFoQWdzZ0FVSHdBV29rQUNBQ0lnRU5CeU1BUWRBQ2F5SUJKQUFnQ0NJQ0x3RWVJZ01RK3hVRVFDQUZJQUlvQWpnb0FnQVFud0VoQnlBQklBTTJBaHdnQVVISWl5QTJBaGdnQVNBQlFSaHFJZ1EyQWlnZ0IwR2dBMm9nQkJETkFTQUVFQllnQlNBQ0tBSTRLQUlBRUo4QklRUWdBU0FETmdJRUlBRkI3SXNnTmdJQUlBRWdBVFlDRUNBRVFhd0RhaUFCRU0wQklBRVFGZ3RCQUNFRUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFOQlBHc09NQkVVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVBUkFRRHc4UUVBOFBEZzBOREFzS0NRa0lCd1lGQlFBTEFrQWdBMEd4QW1zT0VCQVFEdzhFQkFRRURnME5BeFFVRkF3QUN3SkFBa0FnQTBFWmF3NERBQlVCRlFzZ0FpZ0NKQTBDSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdBaWdDQUNnQ0JDQUJRZkFBYWhDcEEwVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdUeFFJUURob2dBU2dDekFJaEJDQURFQkVNRlFzQ1FDQUZJQUVvQW5BUVVFVU5BQ0FGSUFFb0FuQVFQa0hBQUVjTkFDQUZRWUFCYWtHWUp4Qm9EUUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CbEQ0UURob2dBU2dDekFJaEJDQURFQkVNRlFzQ1FDQUZLQUlBS0FJQUlnTVFSd1JBQWtBZ0JTQUJLQUp3RUhkRkJFQWdCU0FCS0FKd0VGQkZEUUVMSUFVZ0FTZ0NjQkErUVNCSEJFQWdCU0FCS0FKd0VENUJ3QUJIRFFFTElBVWdBU2dDY0JBK1FjQUFSdzBDSUFVZ0FTZ0NjQkIzUlEwQ0N5QUJRWkFCYWlJRElBVkJjaUFDRUJBZ0FVSFlBR29pQnlBRlFiQWtFRGNnQXlBSEVCSWFJQU5CM3NnQUVBNGFJQUVvQXN3Q0lRUWdCeEFQR2lBREVCRU1GZ3NnQXhDbUJpRUVJQUVvQW5BaEJ5QUVCRUFnQlNBSEVKMEhEUUVnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CejZBSEVBNGFJQUVvQXN3Q0lRUWdBeEFSREJZTElBVWdCeEJ3SWdkQkZrMUJBRUVCSUFkMFFZQ0FvQU54RzBVRVFDQUJRWkFCYWlJR0lBVkJjaUFDRUJBZ0JrR3oxUUVRRGhvZ0JrSDRoZ1FRRGhvZ0FTZ0N6QUloQkNBR0VCRUxRUUVnQjNSQmdJQ2dBM0ZGSUFkQkZrdHlEUlVMSUFFb0FuaEJBMDhFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHbm93b1FEaG9nQXlBQktBSjRFQ0VhSUFOQm05WUlFQTRhSUFFb0Fzd0NJUVFnQXhBUkRCVUxJQUVvQW54QkFrOEVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEhoMlFvUURob2dBeUFCS0FKOEVDRWFJQU5Cc05ZSUVBNGFJQUVvQXN3Q0lRUWdBeEFSREJVTElBRW9Bb0FCSWdkQkFrOEVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdydndzUURob2dBeUFCS0FLQUFSQWhHaUFEUWJEV0NCQU9HaUFCS0FMTUFpRUVJQU1RRVF3VkN5QUJLQUtFQVNJRVFRTlBCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CdXQwS0VBNGFJQU1nQVNnQ2hBRVFJUm9nQTBHYjFnZ1FEaG9nQVNnQ3pBSWhCQ0FERUJFTUZRc0NRQ0FCS0FKMFFRWkdCRUFnQkVFQ1J3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQUJRZGdBYWlJSElBVkJ4akFRTnlBRElBY1FFaG9nQTBHNWhBY1FEaG9nQVNnQ3pBSWhCQ0FIRUE4YUlBTVFFUXdYQ3lBQktBS0lBVVVOQVNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHaXdnSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUZnc2dCMFVnQkVFQ1IzSU5BQ0FGTFFDREFVRUljUTBBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWJUR0JCQU9HaUFCS0FMTUFpRUVJQU1RRVF3VkN3SkFJQU1RcGdaRkRRQUNRQ0FCS0FKOFFRRkhEUUFnQVNnQ2RFRUNTUTBBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWNHM0RCQU9HaUFEUVoyVUNCQU9HaUFCS0FMTUFpRUVJQU1RRVF3V0N5QUJLQUtBQVFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFkQ2lCeEFPR2lBQktBTE1BaUVFSUFNUUVRd1dDeUFCS0FLRUFRUkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRYU9pQnhBT0dpQUJLQUxNQWlFRUlBTVFFUXdXQ3lBQktBS01BVUgvLy8vL0IwY05BQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdkN1FFUURob2dBMEh2bWdjUURob2dBU2dDekFJaEJDQURFQkVNRlF0QkFDRUVJQU1RUjBVTkZDQUJLQUtFQVVVRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0FVSFlBR29pQnlBRlFiRWtFRGNnQXlBSEVCSWFJQU5CbmFBSEVBNGFJQUVvQXN3Q0lRUWdCeEFQR2lBREVCRU1GUXNnQVNnQ2RFRUdSdzBVSUFFb0FueEZEUlFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQUZCMkFCcUlnY2dCVUhHTUJBM0lBTWdCeEFTR2lBRFFZK1FCeEFPR2lBQktBTE1BaUVFSUFjUUR4b2dBeEFSREJRTElBVWdBaWdDQUNnQ0NDSURFSEJCR1VjRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwSHd4d1FRRGhvZ0FTZ0N6QUloQkNBREVCRU1GQXNnQVVJQU53T0FBU0FCUWdBM0EzZ2dBVUtBZ0lDQThQLy8vLzhBTndOd0lBRkMvLy8vLy9mLy8vLy9BRGNEaUFFZ0JTQURJQUZCOEFCcUVLa0RSUVJBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVpQRkFoQU9HaUFCS0FMTUFpRUVJQU1RRVF3VUN5QUJLQUtFQVVFQ1R3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQUJRZGdBYWlJSElBVkJzU1FRTnlBRElBY1FFaG9nQTBHbGh3Y1FEaG9nQVNnQ3pBSWhCQ0FIRUE4YUlBTVFFUXdVQ3lBRktBSVVRWUNNQkVrTkV5QUJLQUowUVFWSERSTWdBVUdRQVdvaUF5QUZRWFlnQWhBUUlBTkJzUFlCRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQk1MSUFVZ0FpZ0NKQkJ3UVJ0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ6L2dIRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQk1MSUFVZ0JTQUNRUUlRSmlJREVIQkJHVWNFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHbCtBY1FEaG9nQVNnQ3pBSWhCQ0FERUJFTUV3c2dBVUlBTndPQUFTQUJRZ0EzQTNnZ0FVS0FnSUNBOFAvLy8vOEFOd053SUFGQy8vLy8vL2YvLy8vL0FEY0RpQUVnQlNBRElBRkI4QUJxRUtrRFJRUkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWlBGQWhBT0dpQUJLQUxNQWlFRUlBTVFFUXdUQ3lBRktBSUFLQUlBRUVjaEJDQUJLQUtFQVNFREFrQWdCQVJBSUFOQkFVWU5BU0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBVUhZQUdvaUJ5QUZRWTgwRURjZ0F5QUhFQklhSUFOQjNKMEhFQTRhSUFFb0Fzd0NJUVFnQnhBUEdpQURFQkVNRkFzZ0EwRUNTUTBBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWZTSEJ4QU9HaUFCS0FMTUFpRUVJQU1RRVF3VEN5QUJLQUowUVFaR0JFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJrSWtJRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQk1MSUFVZ0JTQUNRUU1RSmhCd1FScEhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CMCtZQkVBNGFJQUVvQXN3Q0lRUWdBeEFSREJNTElBSW9BaWdoQkNNQVFSQnJJZ01rQUNBRElBUTJBZ3dnQVVIWUFHb2lCRUVBTmdJSUlBUkNBRGNDQUNBRlFjZ0FhaUFEUVF4cUVKNENJZ2NFUUNBRUlBZEJER29RdUFjTElBTkJFR29rQUNBQktBSllJZ1lnQVNnQ1hDSURSZzBRSUFWQmdBRnFJUWtEUUNBRElBWkdEUkVnQmlnQ0FDSUhLQUk4SUFJb0FqeEhCRUFnQVVHUUFXb2lBeUFGUVhZZ0FoQVFJQU5CdnRVTEVBNGFJQUZCUUdzaUJpQUZJQUlvQWlnUUtpQURJQVlRRWhvZ0EwR3kzd2tRRGhvZ0FVRXdhaUlKSUFVZ0J5Z0NLQkFxSUFNZ0NSQVNHaUFEUWZ5WENCQU9HaUFCS0FMTUFpRUVJQWtRRHhvZ0JoQVBHaUFERUJFTUV3c0NRQ0FITHdFZUlnUkIwd0JySWd0QkZrMUJBRUVCSUF0MFFmbmZpUUp4R3cwQUlBUkJzUUpySWd0QkNrMUJBRUVCSUF0MFFZOE1jUnNOQUFKQUlBUkJQa2NFUUNBRVFmVUJSeUFFUWFrQlIzRU5BU0FCUVpBQmFpSURJQVZCZGlBQ0VCQWdBMEdIdkFJUURob2dBeUFFRUNrUURob2dBMEg4bHdnUURob2dBMEcreEFzUURob2dBVUZBYXlJR0lBVWdBaWdDS0JBcUlBTWdCaEFTR2lBRFFhRE1DeEFPR2lBQlFUQnFJZ2tnQlNBSEtBSW9FQ29nQXlBSkVCSWFJQU5CL0pjSUVBNGFJQUVvQXN3Q0lRUWdDUkFQR2lBR0VBOGFJQU1RRVF3VkN5QUpRWTRxRUdnTkFRc2dBVUdRQVdvaUF5QUZRWFlnQWhBUUlBTkJoYmtDRUE0YUlBTWdCQkFwRUE0YUlBTkJ0WlVLRUE0YUlBTkI2dmdIRUE0YUlBTkJ2c1FMRUE0YUlBRkJRR3NpQmlBRklBSW9BaWdRS2lBRElBWVFFaG9nQTBHZ3pBc1FEaG9nQVVFd2FpSUpJQVVnQnlnQ0tCQXFJQU1nQ1JBU0dpQURRZnlYQ0JBT0dpQUJLQUxNQWlFRUlBa1FEeG9nQmhBUEdpQURFQkVNRXdzZ0JrRUVhaUVHREFBTEFBdEI1WkVIUWNhdkFrR0xCa0dreVFRUUFBQUxJQVVnQWlnQ0pCQy9Ba1VFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBITWhnUVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUVRc2dCU0FGSUFKQkFoQW1FRkFORUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVmhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUVBc2dBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkI3NFVLRUE0YUlBTkJ3dTBFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQThMSUFVZ0FpZ0NKQkJRUlFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFaMkNCQkFPR2lBQktBTE1BaUVFSUFNUUVRd1BDeUFGSUFVZ0FrRUNFQ1lpQXhCd1FSbEhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5COE1jRUVBNGFJQUVvQXN3Q0lRUWdBeEFSREE4TElBRkNBRGNEZ0FFZ0FVSUFOd040SUFGQ2dJQ0FnUEQvLy8vL0FEY0RjQ0FCUXYvLy8vLzMvLy8vL3dBM0E0Z0JJQVVnQXlBQlFmQUFhaENwQTBVRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR1R4UUlRRGhvZ0FTZ0N6QUloQkNBREVCRU1Ed3NDUUFKQUFrQWdBaThCSGtIcUFHc09BZ0FDQVFzZ0FTZ0NkRUVFVHdSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFadmRCQkFPR2lBQktBTE1BaUVFSUFNUUVRd1JDeUFGS0FJQUtBSUFFRWRGRFJBZ0FTZ0NoQUZCQVVZTkVDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0FVSFlBR29pQnlBRlFiTWtFRGNnQXlBSEVCSWFJQU5CcElnSEVBNGFJQUVvQXN3Q0lRUWdCeEFQR2lBREVCRU1FQXRCcXJzQlFjYXZBa0dERUVIUnV3RVFBQUFMSUFFb0FuUkJBVWNFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHTzNnWVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUR3c2dBU2dDZ0FGQkFVWU5EaUFCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEh4aVFjUURob2dBU2dDekFJaEJDQURFQkVNRGdzZ0JTQUNLQUk0S0FJQUVKOEJJUWNnQVVHQWl5QTJBbGdnQVNBQlFkZ0FhaUlETmdKb0lBZEJvQU5xSUFNUXpRRWdBeEFXSUFVZ0FpZ0NPQ2dDQUJDZkFTRUhJQUZCcElzZ05nSkFJQUVnQVVGQWF5SUROZ0pRSUFkQnJBTnFJQU1RelFFZ0F4QVdJQVVnQWlnQ0pDSURFSTRCUlFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFjdjRBeEFPR2lBQktBTE1BaUVFSUFNUUVRd09DeUFGSUFNUVJVRUNSd1JBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVlpRkFSQU9HaUFCS0FMTUFpRUVJQU1RRVF3T0N5QUZJQVVnQWtFQ0VDWWlBeEJ3UVJ0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ6c29FRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQTRMSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdBeUFCUWZBQWFoQ3BBMFVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVHhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTURnc2dBU2dDZEVFRVR3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWnZkQkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdPQ3lBRklBSkJBeEFtSVFNZ0JTa0RnQUVoTHlBRklBTVFyZ0VoQndKQUlDOUN3QUNEVUVVRVFDQUhEUUVnQlNBREVNY0JEUUVnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CdHMwQkVBNGFJQUVvQXN3Q0lRUWdBeEFSREE4TElBY05BQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdwemdFUURob2dBU2dDekFJaEJDQURFQkVNRGdzZ0FVSHdBR29Rb2djaUJ5QUZJQU1RUlNJR1RRME5JQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWXJHQ1JBT0dpQURJQWNRSVJvZ0EwR0Z3QWtRRGhvZ0F5QUdFQ0VhSUFFb0Fzd0NJUVFnQXhBUkRBMExJQVVnQWlnQ0pDSUhFTWNCUlFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFaejdBeEFPR2lBQktBTE1BaUVFSUFNUUVRd05DeUFGSUFVZ0FrRUNFQ1lpQXhCd1FSbEhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5COE1jRUVBNGFJQUVvQXN3Q0lRUWdBeEFSREEwTElBRkNBRGNEZ0FFZ0FVSUFOd040SUFGQ2dJQ0FnUEQvLy8vL0FEY0RjQ0FCUXYvLy8vLzMvLy8vL3dBM0E0Z0JJQVVnQXlBQlFmQUFhaENwQTBVRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR1R4UUlRRGhvZ0FTZ0N6QUloQkNBREVCRU1EUXNDUUFKQUFuOENRQ0FCS0FKMElnTkJCVTBFUUNBQktBSjhJUVJCQVNBRGRDSUdRUnB4RFFGQkFTQUdRU0Z4RFFJYUlBUkJBMm9oQmd3REN5QUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwSHU4d0FRRGhvZ0FTZ0N6QUloQkNBREVCRU1FQXRCQWdzZ0JHb2hCaUFEUVFOTERRRUxJQUVvQW9BQlFRRkdEUUFnQVNnQ2hBRWlBMFVnQTBFQ1JuSU5BQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEd0K1FZUURob2dBU2dDekFJaEJDQURFQkVNRFF0QkFDRUVJQVVnQnhCRklnY2dCa1lORENBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHcTVBa1FEaG9nQXlBSEVDRWFJQU5CZ2VjTUVBNGFJQU5COE1RSkVBNGFJQU1nQmhBaEdpQURRZjN4QkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdNQ3lBRklBSW9BaVFpQXhESEFVVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdjK3dNUURob2dBU2dDekFJaEJDQURFQkVNREFzZ0JTQUZJQUpCQWhBbUlnUVFjRUVaUndSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFmREhCQkFPR2lBQktBTE1BaUVFSUFNUUVRd01DeUFCUWdBM0E0QUJJQUZDQURjRGVDQUJRb0NBZ0lEdy8vLy8vd0EzQTNBZ0FVTC8vLy8vOS8vLy8vOEFOd09JQVNBRklBUWdBVUh3QUdvUXFRTkZCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CazhVQ0VBNGFJQUVvQXN3Q0lRUWdBeEFSREF3TElBRW9BblFpQkVFRVR3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWnZkQkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdNQ3lBQktBS0FBUVJBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWR1T0J4QU9HaUFCS0FMTUFpRUVJQU1RRVF3TUN5QUVRUUowUWRqSURXb29BZ0FoQkNBQktBSjhJUWNDUUNBRktBSUFLQUlBRUVkRkRRQWdBU2dDaEFGQkFVWU5BQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBVUhZQUdvaUJ5QUZRYk1rRURjZ0F5QUhFQklhSUFOQmlva0hFQTRhSUFFb0Fzd0NJUVFnQnhBUEdpQURFQkVNREFzZ0JTQURFRVVpQmlBRUlBZHFJZ1JIQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnF1UUpFQTRhSUFNZ0JoQWhHaUFEUVlIbkRCQU9HaUFEUWZERUNSQU9HaUFESUFRUUlSb2dBMEg5OFFRUURob2dBU2dDekFJaEJDQURFQkVNREF0QkFDRUVJQVVnQlNBQ1FRTVFKaEJRRFFzZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnZJUUNFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBc0xJQVVnQWlnQ0pCQlFSUVJBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVoyQ0JCQU9HaUFCS0FMTUFpRUVJQU1RRVF3TEN5QUZJQVVnQWtFQ0VDWVFjRUVaUmcwS0lBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFabklCQkFPR2lBQktBTE1BaUVFSUFNUUVRd0tDeUFGSUFJb0FpUWlCeEJ3UVJsSEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkIvY2dFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQW9MSUFVZ0JTQUNRUUlRSmhBZ0lnTUVRQ0FETHdFZVFSdEhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CdHNrRUVBNGFJQUVvQXN3Q0lRUWdBeEFSREFzTElBTW9BZ0FvQWdnZ0IwWU5DaUFCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEhvb1FRUURob2dBU2dDekFJaEJDQURFQkVNQ2d0QmpTOUJ4cThDUWQ0TlFlTEhCQkFBQUFzZ0JTQUZJQUpCQUJBbUlnTVFjRUVaUndSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFmREhCQkFPR2lBQktBTE1BaUVFSUFNUUVRd0pDeUFCUWdBM0E0QUJJQUZDQURjRGVDQUJRb0NBZ0lEdy8vLy8vd0EzQTNBZ0FVTC8vLy8vOS8vLy8vOEFOd09JQVNBRklBTWdBVUh3QUdvUXFRTkZCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CazhVQ0VBNGFJQUVvQXN3Q0lRUWdBeEFSREFrTElBRW9BblJCQmtZRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR3F1Z1VRRGhvZ0FTZ0N6QUloQkNBREVCRU1DUXNnQlNBQ0lBRkI4QUJxRVBvVklnUU5DQ0FGSUFVZ0FrRUJFQ1lpQXhESEFVVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdIelFFUURob2dBU2dDekFJaEJDQURFQkVNQ1FzZ0FpOEJIaUFCUWZBQWFoQ2hCeUlFSUFVZ0F4QkZJZ2RMQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQmlzWUpFQTRhSUFNZ0JCQWhHaUFEUVlYQUNSQU9HaUFESUFjUUlSb2dBU2dDekFJaEJDQURFQkVNQ1FzQ1FDQUZJQVVnQWtFQ0VDWWlBeERIQVEwQUlBVWdBeEN1QVEwQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFmcU1BaEFPR2lBQktBTE1BaUVFSUFNUUVRd0pDd0pBSUFVZ0FTZ0NjQkJ3UVJOR0RRQWdCU0FERU1FQklBRW9BbkJHRFFBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnpwY0tFQTRhSUFOQnA0VUJFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBa0xBa0FnQlNnQ0FDZ0NBQkJIUlEwQUlBRW9Bb2dCRFFBZ0FTZ0NkRUVHUmcwQUlBVXRBSWNCUVFGeERRQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ3N1lLRUE0YUlBTkJvOFlFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWtMQWtBZ0FpZ0NCQ0FDS0FJQWEwRVJTUTBBSUFVb0FnQW9BZ0FRcGdaRkRRQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ0NzhMRUE0YUlBTkI2NklIRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWtMSUFVZ0FpQUJRZkFBYWtFRkVLQUhJUVFNQ0FzZ0FpOEJIaUVESUFGQkFEWUNRQ0FGSUFJZ0FVRkFheEN1Q0NJRURRY0NRQ0FGSUFFb0FrQWlCQkRIQVEwQUlBVWdCQkN1QVEwQUlBRkJrQUZxSWdjZ0JVRnlJQUlRRUNBSFFicmJDaEFPR2lBSElBTkJzUUpySWdOQi8vOERjVUVQU3dSL1FmeXBCQVVnQTBFUWRFRVFkVUVDZEVHSWpDQnFLQUlBQ3hBT0dpQUhRWkw4QXhBT0dpQUJLQUxNQWlFRUlBY1FFUXdJQ3dKQUlBVW9BZ0FvQWdBaUJ4QkhSUTBBSUFVZ0JCQkZRUVJHRFFBZ0FVR1FBV29pQnlBRlFYSWdBaEFRSUFGQjhBQnFJZ1FnQlVHc0pSQTNJQWNnQkJBU0dpQUhRYnJiQ2hBT0dpQUhJQU5Cc1FKcklnTkIvLzhEY1VFUFN3Ui9RZnlwQkFVZ0EwRVFkRUVRZFVFQ2RFR0lqQ0JxS0FJQUN4QU9HaUFIUWNpRUFSQU9HaUFCS0FMTUFpRUVJQUZCOEFCcUVBOGFJQWNRRVF3SUN5QUZJQVVnQWtFQ0VDWWlCaEJ3UVJsSEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkI4TWNFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWdMSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdCaUFCUWZBQWFoQ3BBMFVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVHhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUNBc0NRQ0FIRUtZR1JRMEFBa0FnQVNnQ2VBUkFJQVVnQkJCM0RRRWdBVUdRQVdvaUJ5QUZRWElnQWhBUUlBZEJ1dHNLRUE0YUlBY2dBMEd4QW1zaUEwSC8vd054UVE5TEJIOUIvS2tFQlNBRFFSQjBRUkIxUVFKMFFZaU1JR29vQWdBTEVBNGFJQWRCMU04REVBNGFJQUVvQXN3Q0lRUWdCeEFSREFvTElBVWdCQkJGUVFSR0RRQWdBVUdRQVdvaUJ5QUZRWElnQWhBUUlBZEJ1dHNLRUE0YUlBY2dBMEd4QW1zaUEwSC8vd054UVE5TEJIOUIvS2tFQlNBRFFSQjBRUkIxUVFKMFFZaU1JR29vQWdBTEVBNGFJQWRCeUlRQkVBNGFJQUVvQXN3Q0lRUWdCeEFSREFrTElBSW9BZ1FnQWlnQ0FDSUhhMEVZU1EwQUlBY3RBQlJCQ0hGRkRRQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkIrOWtLRUE0YUlBTkIzYUlIRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWdMSUFFb0FuUkJCa1lFUUNBRFFjQUNSZ1JBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVpDQUJSQU9HaUFCS0FMTUFpRUVJQU1RRVF3SkN5QUZJQUlvQWpnb0FnQVFud0VoQmlBQlFaQUJhaUlISUFGQjJBQnFRZTJBREJBVUlna2dBeEFwRUMwZ0JrRUVJQWNReHdRZ0J4QVBHaUFKRUE4YUN3SkFJQVVnQVNnQ2NCQndRUk5HRFFBZ0JTQUVFTUVCSUFFb0FuQkdEUUFnQVVHUUFXb2lCeUFGUVhJZ0FoQVFJQWRCNHVZSkVBNGFJQWNnQTBHeEFtc2lBMEgvL3dOeFFROUxCSDlCL0trRUJTQURRUkIwUVJCMVFRSjBRWWlNSUdvb0FnQUxFQTRhSUFkQnBvVUJFQTRhSUFFb0Fzd0NJUVFnQnhBUkRBZ0xJQVVnQWlBQlFmQUFhaEQ2RlNJRURRY2dCU0FGSUFKQkF4QW1JZ1FReHdGRkJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJoODBCRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQWdMSUFNZ0FVSHdBR29Rb1FjaUJ5QUZJQVFRUlNJRVN3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWXJHQ1JBT0dpQURJQWNRSVJvZ0EwR0Z3QWtRRGhvZ0F5QUVFQ0VhSUFFb0Fzd0NJUVFnQXhBUkRBZ0xBa0FnQlNnQ0FDZ0NBQkJIUlEwQUlBRW9Bb2dCRFFBZ0FTZ0NkRUVHUmcwQUlBVXRBSVlCUVlBQmNRMEFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWnVFQ2hBT0dpQURRWW5IQkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdJQ3lBRklBSWdBVUh3QUdwQkJoQ2dCeUVFREFjTElBRkJBRFlDUUNBRklBSWdBVUZBYXhDdUNDSUVEUVlnQWk4QkhpRURBa0FnQlNBQktBSkFJZ1FRdGdFTkFDQUZJQVFRamdFTkFDQUJRWkFCYWlJSElBVkJjaUFDRUJBZ0IwRzYyd29RRGhvZ0J5QURRYkVDYXlJRFFmLy9BM0ZCRDBzRWYwSDhxUVFGSUFOQkVIUkJFSFZCQW5SQmlJd2dhaWdDQUFzUURob2dCMEdyK0FNUURob2dBU2dDekFJaEJDQUhFQkVNQndzZ0JTQUVFRVZCQkVjRVFDQUJRWkFCYWlJSElBVkJjaUFDRUJBZ0IwRzYyd29RRGhvZ0J5QURRYkVDYXlJRFFmLy9BM0ZCRDBzRWYwSDhxUVFGSUFOQkVIUkJFSFZCQW5SQmlJd2dhaWdDQUFzUURob2dCMEhJaEFFUURob2dBU2dDekFJaEJDQUhFQkVNQndzZ0JTQUZJQUpCQWhBbUlnY1FjRUViUndSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFaYktCQkFPR2lBQktBTE1BaUVFSUFNUUVRd0hDeUFCUWdBM0E0QUJJQUZDQURjRGVDQUJRb0NBZ0lEdy8vLy8vd0EzQTNBZ0FVTC8vLy8vOS8vLy8vOEFOd09JQVNBRklBY2dBVUh3QUdvUXFRTkZCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CazhVQ0VBNGFJQUVvQXN3Q0lRUWdBeEFSREFjTElBRW9Bb0FCQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQjJjTUVFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBY0xBa0FnQTBIaEFFWWdBMEc3QWtaeVJRUkFJQVVnQVNnQ2NCQndRUk5HRFFFTElBVWdCQkRCQVNBQktBSndSZzBBSUFGQmtBRnFJZ2NnQlVGeUlBSVFFQ0FIUWVMbUNSQU9HaUFISUFOQnNRSnJJZ05CLy84RGNVRVBTd1IvUWZ5cEJBVWdBMEVRZEVFUWRVRUNkRUdJakNCcUtBSUFDeEFPR2lBSFFhYUZBUkFPR2lBQktBTE1BaUVFSUFjUUVRd0hDeUFCS0FKMElnUkJCRTFCQUVFQklBUjBRUnB4RzBVRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0FVSFlBR29pQnlBRlFha2xFRGNnQXlBSEVCSWFJQU5CMi9RQUVBNGFJQUVvQXN3Q0lRUWdCeEFQR2lBREVCRU1Cd3NnQlNBRklBSkJBeEFtSWdRUXJnRkZCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CcWM0QkVBNGFJQUVvQXN3Q0lRUWdBeEFSREFjTElBTWdBVUh3QUdvUW9RY2lCeUFGSUFRUVJTSUVTd1JBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVlyR0NSQU9HaUFESUFjUUlSb2dBMEdGd0FrUURob2dBeUFFRUNFYUlBRW9Bc3dDSVFRZ0F4QVJEQWNMQWtBQ1FBSkFBa0FDUUNBRFFlQUFhdzRDQVFNQUN5QURRYm9DYXc0Q0FBSUJDd0pBSUFVZ0JTQUNRUVFRR3lJREVNMENJZ1FRVUFSQUlBVWdCQkErUVNCR0RRRUxJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRZHovQVJBT0dpQUJLQUxNQWlFRUlBTVFFUXdLQ3lBRktBSUFLQUlBRUVkRkRRSWdCU0FERUhBUW93SU5BaUFCUVpBQmFpSURJQVZCY2lBQ0VCQWdBVUhZQUdvaUJ5QUZRYmdrRURjZ0F5QUhFQklhSUFOQnRjY0FFQTRhSUFFb0Fzd0NJUVFnQnhBUEdpQURFQkVNQ1F0QnQrNEJRY2F2QWtHQURFSC83d0VRQUFBTElBVWdBaUFCUWZBQWFoRDRGU0lFRFFjTElBVWdBaUFCUWZBQWFrRUhFS0FISVFRTUJnc2dBVUVBTmdKWUlBVWdBaUFCUWRnQWFoQ3VDQ0lFRFFVZ0FpOEJIaUVEQWtBZ0JTQUJLQUpZSWdRUXRnRU5BQ0FGSUFRUWpnRU5BQ0FCUVpBQmFpSUhJQVZCY2lBQ0VCQWdCMEc2MndvUURob2dCeUFEUWJFQ2F5SURRZi8vQTNGQkQwc0VmMEg4cVFRRklBTkJFSFJCRUhWQkFuUkJpSXdnYWlnQ0FBc1FEaG9nQjBHcitBTVFEaG9nQVNnQ3pBSWhCQ0FIRUJFTUJnc2dCU0FFRUVWQkJFY0VRQ0FCUVpBQmFpSUhJQVZCY2lBQ0VCQWdCMEc2MndvUURob2dCeUFEUWJFQ2F5SURRZi8vQTNGQkQwc0VmMEg4cVFRRklBTkJFSFJCRUhWQkFuUkJpSXdnYWlnQ0FBc1FEaG9nQjBISWhBRVFEaG9nQVNnQ3pBSWhCQ0FIRUJFTUJnc2dCU0FGSUFKQkFoQW1JZ2NRY0VFWlJ3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRZkRIQkJBT0dpQUJLQUxNQWlFRUlBTVFFUXdHQ3lBQlFnQTNBNEFCSUFGQ0FEY0RlQ0FCUW9DQWdJRHcvLy8vL3dBM0EzQWdBVUwvLy8vLzkvLy8vLzhBTndPSUFTQUZJQWNnQVVId0FHb1FxUU5GQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQms4VUNFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBWUxBa0FnQlNBQktBSndFSEJCRTBZTkFDQUZJQVFRd1FFZ0FTZ0NjRVlOQUNBQlFaQUJhaUlISUFWQmNpQUNFQkFnQjBIaTVna1FEaG9nQnlBRFFiRUNheUlEUWYvL0EzRkJEMHNFZjBIOHFRUUZJQU5CRUhSQkVIVkJBblJCaUl3Z2FpZ0NBQXNRRGhvZ0IwR21oUUVRRGhvZ0FTZ0N6QUloQkNBSEVCRU1CZ3NnQVNnQ2RFRURSZ1JBSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUVpMZkJCQU9HaUFCS0FMTUFpRUVJQU1RRVF3R0N5QUJLQUtFQVVFQlJ3UkFJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQURRWWFLQnhBT0dpQUJLQUxNQWlFRUlBTVFFUXdHQ3lBRklBVWdBa0VERUNZaUJCREhBVVVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHSHpRRVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUJnc2dBeUFCUWZBQWFoQ2hCeUlISUFVZ0JCQkZJZ1JMQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQmlzWUpFQTRhSUFNZ0J4QWhHaUFEUVlYQUNSQU9HaUFESUFRUUlSb2dBU2dDekFJaEJDQURFQkVNQmdzZ0JTQUNJQUZCOEFCcVFRWVFvQWNoQkF3RkN5QUNMd0VlSVFNZ0FVRUFOZ0pZSUFVZ0FpQUJRZGdBYWhDdUNDSUVEUVFDUUNBRklBRW9BbGdpQnhCUURRQWdCU0FIRUhjTkFDQUJRWkFCYWlJSElnUWdCVUZ5SUFJUUVDQUVRYnJiQ2hBT0dpQUhJQU5Cc1FKcklnTkIvLzhEY1VFUFN3Ui9RZnlwQkFVZ0EwRVFkRUVRZFVFQ2RFR0lqQ0JxS0FJQUN4QU9HaUFIUWVHREJCQU9HaUFCS0FMTUFpRUVJQWNRRVF3RkN5QUZJQVVnQWtFQ0VDWWlCQkJ3UVJ0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJsc29FRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQVVMSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdCQ0FCUWZBQWFoQ3BBMFVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVHhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUJRc2dBeERXRFFSQUlBVWdBaUFCUWZBQWFoRDNGU0lFRFFVTElBRW9Bb0FCQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQmk4UUVFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBVUxJQUVvQW5BZ0IwY0VRQ0FCUVpBQmFpSUhJZ1FnQlVGeUlBSVFFQ0FFUWVMbUNSQU9HaUFISUFOQnNRSnJJZ05CLy84RGNVRVBTd1IvUWZ5cEJBVWdBMEVRZEVFUWRVRUNkRUdJakNCcUtBSUFDeEFPR2lBQktBTE1BaUVFSUFjUUVRd0ZDeUFGSUFVZ0FrRURFQ1lpQkJDdUFVVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdwemdFUURob2dBU2dDekFJaEJDQURFQkVNQlFzZ0F5QUJRZkFBYWhDaEJ5SUhJQVVnQkJCRklnUkxCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CaXNZSkVBNGFJQU1nQnhBaEdpQURRWVhBQ1JBT0dpQURJQVFRSVJvZ0FTZ0N6QUloQkNBREVCRU1CUXNnQlNBQ0lBRkI4QUJxRVBnVklnUU5CQ0FGSUFJZ0FVSHdBR3BCQnhDZ0J5RUVEQVFMSUFJdkFSNGhBeUFCUVFBMkFsZ2dCU0FDSUFGQjJBQnFFSzRJSWdRTkF3SkFJQVVnQVNnQ1dDSUhFTFlCRFFBZ0JTQUhFSTRCRFFBZ0FVR1FBV29pQnlJRUlBVkJjaUFDRUJBZ0JFRzYyd29RRGhvZ0J5QURRYkVDYXlJRFFmLy9BM0ZCRDBzRWYwSDhxUVFGSUFOQkVIUkJFSFZCQW5SQmlJd2dhaWdDQUFzUURob2dCMEdyK0FNUURob2dBU2dDekFJaEJDQUhFQkVNQkFzZ0JTQUhFRVZCQkVjRVFDQUJRWkFCYWlJSElnUWdCVUZ5SUFJUUVDQUVRYnJiQ2hBT0dpQUhJQU5Cc1FKcklnTkIvLzhEY1VFUFN3Ui9RZnlwQkFVZ0EwRVFkRUVRZFVFQ2RFR0lqQ0JxS0FJQUN4QU9HaUFIUWNpRUFSQU9HaUFCS0FMTUFpRUVJQWNRRVF3RUN5QUZJQVVnQWtFQ0VDWWlCQkJ3UVJ0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJsc29FRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQVFMSUFGQ0FEY0RnQUVnQVVJQU53TjRJQUZDZ0lDQWdQRC8vLy8vQURjRGNDQUJRdi8vLy8vMy8vLy8vd0EzQTRnQklBVWdCQ0FCUWZBQWFoQ3BBMFVFUUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBHVHhRSVFEaG9nQVNnQ3pBSWhCQ0FERUJFTUJBc2dBeERXRFFSQUlBVWdBaUFCUWZBQWFoRDNGU0lFRFFRTElBRW9Bb0FCQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnhNUUVFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBUUxBa0FnQlNBQktBSndFSEJCRTBZTkFDQUZJQWNRd1FFZ0FTZ0NjRVlOQUNBQlFaQUJhaUlISWdRZ0JVRnlJQUlRRUNBRVFlTG1DUkFPR2lBSElBTkJzUUpySWdOQi8vOERjVUVQU3dSL1FmeXBCQVVnQTBFUWRFRVFkVUVDZEVHSWpDQnFLQUlBQ3hBT0dpQUhRYWFGQVJBT0dpQUJLQUxNQWlFRUlBY1FFUXdFQ3lBRklBSkJBeEFtSVFRQ1FBSkFJQU5Cc2dKSElBTkIyQUJIY1EwQUlBVXRBSUFCUWNBQWNVVU5BQ0FGSUFRUXJnRU5BU0FGSUFRUXh3RU5BU0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEcyelFFUURob2dBU2dDekFJaEJDQURFQkVNQlFzZ0JTQUVFSzRCRFFBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQnFjNEJFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBUUxJQU1nQVVId0FHb1FvUWNpQnlBRklBUVFSU0lFU3dSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFZckdDUkFPR2lBRElBY1FJUm9nQTBHRndBa1FEaG9nQXlBRUVDRWFJQUVvQXN3Q0lRUWdBeEFSREFRTEFrQWdBaWdDQkNBQ0tBSUFJZ1JyUVJoSkRRQWdCQzBBRkVFSWNVVU5BQ0FGS0FJQUtBSUFFS1lHUlNBRFFkZ0FSM0lOQUNBQlFaQUJhaUlESUFWQmNpQUNFQkFnQTBINzJRb1FEaG9nQTBIZG9nY1FEaG9nQVNnQ3pBSWhCQ0FERUJFTUJBc2dCU0FDSUFGQjhBQnFRUVlRb0FjaEJBd0RDeUFGSUFJb0FpUVFJQ0lETHdFZVFTQkhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CLzkwQkVBNGFJQUVvQXN3Q0lRUWdBeEFSREFNTElBTkJBUkFiUVF0SEJFQWdBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJoc3NFRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQU1MSUFVZ0EwRUNFQnNpQnhCd0lnTkJGazFCQUVFQklBTjBRWUNBb0FOeEcwVUVRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEhzNndRUURob2dBU2dDekFJaEJDQURFQkVNQXdzQ1FDQUZJQVVnQWtFQ0VDWVFJQ0lEQkVBZ0F5OEJIa0VnUmcwQkN5QUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR28zZ0VRRGhvZ0FTZ0N6QUloQkNBREVCRU1Bd3NnQlNBRFFRSVFHeUlERUhCQkdVY0VRQ0FCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEhFeUFRUURob2dBU2dDekFJaEJDQURFQkVNQXdzZ0FVSUFOd09BQVNBQlFnQTNBM2dnQVVLQWdJQ0E4UC8vLy84QU53TndJQUZDLy8vLy8vZi8vLy8vQURjRGlBRWdCU0FESUFGQjhBQnFFS2tEUlFSQUlBRkJrQUZxSWdNZ0JVRnlJQUlRRUNBRFFaUEZBaEFPR2lBQktBTE1BaUVFSUFNUUVRd0RDeUFISUFFb0FuQkhCRUFnQVVHUUFXb2lBeUFGUVhJZ0FoQVFJQU5CZ0pnRUVBNGFJQUVvQXN3Q0lRUWdBeEFSREFNTElBRW9BblJCQmtZRVFDQUJRWkFCYWlJRElBVkJjaUFDRUJBZ0EwR0EzUUVRRGhvZ0FTZ0N6QUloQkNBREVCRU1Bd3NDUUNBRklBSkJBeEFtSWdNRVFDQUZJQU1ReHdFTkFRc2dBVUdRQVdvaUF5QUZRWElnQWhBUUlBTkJ2czhCRUE0YUlBRW9Bc3dDSVFRZ0F4QVJEQU1MQWtBQ1FBSkFJQUVvQW53T0FnRUFBZ3RCQWlFRUFrQUNRQ0FCS0FKMERnUURBQUVBQVF0QkF5RUVEQUlMSUFGQmtBRnFJZ01nQlVGeUlBSVFFQ0FEUWQrR0J4QU9HaUFCS0FMTUFpRUVJQU1RRVF3RUN5QUJRZkFBYWhDaUJ5RUVDeUFGSUFNUVJTSUhJQVJIQkVBZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQm1yVUtFQTRhSUFNZ0JCQWhHaUFEUWVpUkNoQU9HaUFESUFjUUlSb2dBU2dDekFJaEJDQURFQkVNQXdzQ1FDQUZJQUpCQkJBbUlnTUVRQ0FGSUFNUVVBMEJDeUFCUVpBQmFpSURJQVZCY2lBQ0VCQWdBMEdIamdJUURob2dBU2dDekFJaEJDQURFQkVNQXdzQ1FDQUJLQUtBQVEwQUlBRkNBRGNEV0NBRklBSkJCQkFiSUFGQjJBQnFFTU1GQkVBZ0FTa0RXRkFOQVFzZ0FVR1FBV29pQXlBRlFYSWdBaEFRSUFOQjlJMEhFQTRhSUFFb0Fzd0NJUVFnQXhBUkRBTUxRUUFoQkNBRktBSUFLQUlBRUVkRkRRSWdBU2dDaUFFaUEwRVlheUlIUVJGTlFRQkJBU0FIZEVHQmhBeHhHeUFEUVFOR2NnMENJQUZCa0FGcUlnTWdCVUZ5SUFJUUVDQUJRZGdBYWlJSElBVkJzaVFRTnlBRElBY1FFaG9nQTBIOHh3QVFEaG9nQVNnQ3pBSWhCQ0FIRUE4YUlBTVFFUXdDQzBFQUlRUUxJQUZCMkFCcUVESWFDeUFCUWRBQ2FpUUFJQVFpQVEwSEl3QkI0QUZySWdFa0FDQUNLQUlrSVFNQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUl2QVI0aUJFSHRBR3NPRUFBQkFnSURCQVVHQndnSUNRb0xEQTBPQ3dKQUlBVWdBeER2QVEwQUlBVWdBeENjQncwQUlBVWdBeEMrRFEwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQjZaa01FQTRhSUFOQjdRQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd1RDd0pBSUFVZ0FrRUNFQ1lpQkFSQUlBVWdCQkIzRFFFZ0JTQUVFSTRCRFFFZ0JTQUVFSnNIRFFFTElBRkJJR29pQXlBRlFYSWdBaEFRSUFOQjdmRUxFQTRhSUFOQjdRQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd1RDd0pBSUFVZ0F4Q3hBa1VFUUNBRklBUVFzUUpGRFFFTElBVWdBaUFESUFRUW1nY2lCRVVORWd3VEN5QUZJQU1RUlNBRklBUVFSVVlORVNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUWNxWERCQU9HaUFEUWUwQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUVnc0NRQ0FGSUFNUVVBMEFJQVVnQXhDMkFRMEFJQVVnQXhDZUJnMEFJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJ0WmtNRUE0YUlBTkI3Z0FRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdTQ3dKQUlBVWdBa0VDRUNZaUJBUkFJQVVnQkJCM0RRRWdCU0FFRUk0QkRRRWdCU0FFRUpzSERRRUxJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkI3ZkVMRUE0YUlBTkI3Z0FRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdTQ3dKQUlBVWdBeEN4QWtVRVFDQUZJQVFRc1FKRkRRRUxJQVVnQWlBRElBUVFtZ2NpQkVVTkVRd1NDeUFGSUFNUVJTQUZJQVFRUlVZTkVDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFjcVhEQkFPR2lBRFFlNEFFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1FUXNDUUNBRklBTVFkdzBBSUFVZ0F4Q09BUTBBSUFVZ0F4Q2JCdzBBSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CNDVvTUVBNGFJQU1nQkJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREJFTEFrQWdCU0FDUVFJUUppSUhCRUFnQlNBSEVGQU5BU0FGSUFjUXRnRU5BU0FGSUFjUW5nWU5BUXNnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEhxOEFzUURob2dBeUFFRUNrUURob2dBU2dDM0FFaEJDQURFQkVNRVFzQ1FDQUZJQU1Rc1FKRkJFQWdCU0FIRUxFQ1JRMEJDeUFGSUFJZ0F5QUhFSm9ISWdSRkRSQU1FUXNnQlNBREVFVWdCU0FIRUVWR0RROGdBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSEtsd3dRRGhvZ0F5QUVFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1FQXNDUUNBRklBTVE3d0VOQUNBRklBTVFuQWNOQUNBRklBTVF2ZzBOQUNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUWVtWkRCQU9HaUFEUWZFQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUVBc0NRQ0FGSUFKQkFoQW1JZ2NFUUNBRklBY1FVQTBCSUFVZ0J4QzJBUTBCSUFVZ0J4Q2VCZzBCQ3lBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUWVyd0N4QU9HaUFEUWZFQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUVBc0NRQ0FGSUFNUXNRSkZCRUFnQlNBSEVMRUNSUTBCQ3lBRklBSWdBeUFIRUpvSElnUU5FQXdPQ3lBRklBTVFSU0FGSUFjUVJVWU5EU0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRY3FYREJBT0dpQURRZkVBRUNrUURob2dBU2dDM0FFaEJDQURFQkVNRHdzQ1FDQUZJQU1RVUEwQUlBVWdBeEMyQVEwQUlBVWdBeENlQmcwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQnRaa01FQTRhSUFOQjhnQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd1BDd0pBSUFVZ0FrRUNFQ1lpQndSQUlBVWdCeEJRRFFFZ0JTQUhFTFlCRFFFZ0JTQUhFSjRHRFFFTElBRkJJR29pQXlBRlFYSWdBaEFRSUFOQjZ2QUxFQTRhSUFOQjhnQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd1BDd0pBSUFVZ0F4Q3hBa1VFUUNBRklBY1FzUUpGRFFFTElBVWdBaUFESUFjUW1nY2lCQTBQREF3TElBVWdBeEJGSUFVZ0J4QkZSZzBMSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CeXBjTUVBNGFJQU5COGdBUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3T0N3SkFJQVVnQXhCM0RRQWdCU0FERUk0QkRRQWdCU0FERUpzSERRQWdBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSGptZ3dRRGhvZ0EwSHpBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQTRMQWtBZ0JTQUNRUUlRSmlJSEJFQWdCU0FIRUhjTkFTQUZJQWNRamdFTkFTQUZJQWNRbXdjTkFRc2dBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSHQ4UXNRRGhvZ0EwSHpBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQTRMQWtBZ0JTQURFTEVDUlFSQUlBVWdCeEN4QWtVTkFRc2dCU0FDSUFNZ0J4Q2FCeUlFRFE0TUNnc2dCU0FERUVVZ0JTQUhFRVZHRFFrZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBIS2x3d1FEaG9nQTBIekFCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBMExBa0FDUUNBRklBTVFkMFVFUUNBRklBTVFqZ0ZGRFFFTElBVWdBeEErUVNCR0RRRUxJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJwcG9NRUE0YUlBTkI5QUFRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdOQ3lBRklBSkJBaEFtSUFOR0RRc2dBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSFJuUXdRRGhvZ0EwSDBBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQXdMSUFVZ0F4RHZBVVVFUUNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUVllY0RCQU9HaUFEUWZVQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTURBc2dCU0FGSUFKQkFoQW1JZ1FRZ1FWRkJFQWdBVUVnYWlJRElBVkJjaUFDRUJBZ0EwSDk5QXNRRGhvZ0EwSDFBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQXdMSUFVb0FwQURSUVJBSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CdWE0TUVBNGFJQU5COVFBUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3TUN5QUZLQUtRQTBIa0tVY05DaUFCUVFBMkFoZ2dCU0FFSUFGQkdHb2dBVUVjYWhDSUFob2dBU2dDSEVIbEtVY0VRQ0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRZjM0Q3hBT0dpQURRZlVBRUNrUURob2dBU2dDM0FFaEJDQURFQkVNREFzZ0JTZ0NBQ2dDQUJCSFJRMEtJQVVnQXhBK1FjQUFSZzBLSUFGQklHb2lBeUFGUVhJZ0FoQVFJQUZCQ0dvaUJ5QUZRZVlrRURjZ0F5QUhFQklhSUFOQjVKd0hFQTRhSUFFb0F0d0JJUVFnQnhBUEdpQURFQkVNQ3dzQ1FDQUZJQU1RVUEwQUlBVWdBeEMyQVEwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQnRaa01FQTRhSUFNZ0JCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBc0xBa0FnQlNBQ1FRSVFKaUlIQkVBZ0JTQUhFRkFOQVNBRklBY1F0Z0VOQVFzZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBINTNnc1FEaG9nQXlBRUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUN3c2dCU0FERUVVZ0JTQUhFRVZHRFFrZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBIS2x3d1FEaG9nQXlBRUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUNnc2dCU0FERUlFRlJRUkFJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJudlVMRUE0YUlBTkIrQUFRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdLQ3dKQUlBVWdBa0VDRUNZaUJBUkFJQVVnQkJCUURRRUxJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJvdDhMRUE0YUlBTkIrQUFRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdLQ3lBRktBS1FBMFVFUUNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUWJtdURCQU9HaUFEUWZnQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUNnc2dCU2dDa0FOQjVDbEhEUWdnQVVFQU5nSVlJQVVnQXlBQlFSaHFJQUZCSEdvUWlBSWFJQUVvQWh4QjVTbEhCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEg5K0FzUURob2dBMEg0QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFvTElBVW9BZ0FvQWdBUVIwVU5DQ0FGSUFRUVBrSEFBRVlOQ0NBQlFTQnFJZ01nQlVGeUlBSVFFQ0FCUVFocUlnY2dCVUhtSkJBM0lBTWdCeEFTR2lBRFFmS2JCeEFPR2lBQktBTGNBU0VFSUFjUUR4b2dBeEFSREFrTElBRkJBRFlDSENBRklBTWdBVUVjYWlBQlFRaHFFSWdDUlFSQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQm52VUxFQTRhSUFOQitRQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0pDeUFCS0FJSVFRaEhCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEc1c1F3UURob2dBMEg1QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFrTElBVWdBa0VDRUNZaEF5QUJRUUEyQWdRZ0JTQURJQUZCQkdvZ0FVRVlhaENJQWtVRVFDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFmMzBDeEFPR2lBRFFma0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1DUXNnQVNnQ0dDSURRUWROUVFCQkFTQURkRUd3QVhFYlJRUkFJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkI4T2dNRUE0YUlBTkJwUDBMRUE0YUlBTkIrUUFRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdKQ3lBQktBSWNJQUVvQWdSR0RRY2dBVUVnYWlJRElBVkJjaUFDRUJBZ0EwR0RrUXdRRGhvZ0EwSDVBQkFwRUE0YUlBRW9BdHdCSVFRZ0F4QVJEQWdMSUFGQkFEWUNIQ0FGSUFNZ0FVRWNhaUFCUVFocUVJZ0NSUVJBSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CbnZVTEVBNGFJQU5CK2dBUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3SUN5QUJLQUlJSWdOQkIwMUJBRUVCSUFOMFFiQUJjUnRGQkVBZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBHaDZRd1FEaG9nQTBHay9Rc1FEaG9nQTBINkFCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBZ0xJQVVnQWtFQ0VDWWhBeUFCUVFBMkFnUWdCU0FESUFGQkJHb2dBVUVZYWhDSUFrVUVRQ0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRZjMwQ3hBT0dpQURRZm9BRUNrUURob2dBU2dDM0FFaEJDQURFQkVNQ0FzZ0FTZ0NHRUVJUndSQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQmlyRU1FQTRhSUFOQitnQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0lDeUFCS0FJY0lBRW9BZ1JHRFFZZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBHRGtRd1FEaG9nQTBINkFCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBY0xJQUZCQURZQ0hDQUZJQU1nQVVFY2FpQUJRUWhxRUlnQ1JRUkFJQUZCSUdvaUF5QUZRWElnQWhBUUlBTkJudlVMRUE0YUlBTkIrd0FRS1JBT0dpQUJLQUxjQVNFRUlBTVFFUXdIQ3lBQ1FRTVFHeUlESUFFb0FnaEhCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEdrNVFzUURob2dBMEg3QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFjTElBVWdBa0VDRUNZaEJDQUJRUUEyQWdRZ0JTQUVJQUZCQkdvZ0FVRVlhaENJQWtVRVFDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFmMzBDeEFPR2lBRFFmc0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1Cd3NnQVNnQ0dFRUlSd1JBSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5CaXJFTUVBNGFJQU5CK3dBUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3SEN5QUJLQUljSUFFb0FnUkhCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEdEa1F3UURob2dBMEg3QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFjTElBTkJCMDFCQUVFQklBTjBRYkFCY1JzTkJTQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFkanBEQkFPR2lBRFFhVDlDeEFPR2lBRFFmc0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1CZ3NnQlNBQ1FRSVFKaUlFUlFSQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQjg1UU1FQTRhSUFOQi9BQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0dDeUFGSUFNUWdRVWhCeUFGSUFNUVVDRUpJQVVnQkJDQkJTRUdJQVVnQkJCUUlRc0NRQ0FISUFseURRQWdCU0FERUxZQkRRQWdCU0FERUhjTkFDQUZJQU1RamdFTkFDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFmVG5DUkFPR2lBRFFkU05EQkFPR2lBRFFmd0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1CZ3NDUUNBR0lBdHlEUUFnQlNBRUVMWUJEUUFnQlNBRUVIY05BQ0FGSUFRUWpnRU5BQ0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRYjNuQ1JBT0dpQURRZFg3Q3hBT0dpQURRZndBRUNrUURob2dBU2dDM0FFaEJDQURFQkVNQmdzQ1FBSkFJQVVvQWhSQi80a0VUUVJBSUFWQmtBRnFRY3dBRUdoRkRRRUxJQVVnQXhDMkFTRU1JQVVnQTBFVlFTQVFoZ1FoRVNBRklBUVF0Z0VnQlNBRVFSVkJJQkNHQkhFZ0IwRUJjM0lnQm5JZ0MzSkZCRUFnQVVFZ2FpSURJQVZCY2lBQ0VCQWdBMEhZOHdzUURob2dBMEg4QUJBcEVBNGFJQUVvQXR3QklRUWdBeEFSREFnTElBd2dFWEVnQmtFQmMzSWdCM0lnQ1hJTkFTQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFlN3VDeEFPR2lBRFFmd0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1Cd3NnQmlBSFFRRnpjaUFMY2tVRVFDQUJRU0JxSWdNZ0JVRnlJQUlRRUNBRFFiVDBDeEFPR2lBRFFmd0FFQ2tRRGhvZ0FTZ0MzQUVoQkNBREVCRU1Cd3NnQ1NBSElBWkJBWE55Y2cwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQnhmb0xFQTRhSUFOQi9BQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0dDeUFHSUFkeURRUWdCU0FERUQ0Z0JTQURFRVZzSUFVZ0JCQStJQVVnQkJCRmJFWU5CQ0FCUVNCcUlnTWdCVUZ5SUFJUUVDQURRZm5sQ1JBT0dpQURRZlNoREJBT0dpQURRZndBRUNrUURob2dBU2dDM0FFaEJDQURFQkVNQlFzZ0JFSGZJa2NOQXlBRklBTVF1Z0VpQXdSL0lBTXZBUjVCM1NsR0JVRUFDMFVFUUNBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUVppTERCQU9HaUFEUWQ4aUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUJRc2dCU0FDUVFJUUppSURCRUFnQlNBREVMb1ZEUVFMSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5Cc040TEVBNGFJQU5CM3lJUUtSQU9HaUFCS0FMY0FTRUVJQU1RRVF3RUN5QUZJQU1RUGlBRklBY1FQa2NOQWlBQlFTQnFJZ01nQlVGeUlBSVFFQ0FEUVkyZ0RCQU9HaUFEUWZNQUVDa1FEaG9nQVNnQzNBRWhCQ0FERUJFTUF3c2dCU0FERUQ0Z0JTQUhFRDVIRFFFZ0FVRWdhaUlESUFWQmNpQUNFQkFnQTBHTm9Bd1FEaG9nQTBIeUFCQXBFQTRhSUFFb0F0d0JJUVFnQXhBUkRBSUxJQVVnQXhBK0lBVWdCeEErUncwQUlBRkJJR29pQXlBRlFYSWdBaEFRSUFOQmphQU1FQTRhSUFOQjhRQVFLUkFPR2lBQktBTGNBU0VFSUFNUUVRd0JDMEVBSVFRZ0JTMEFnQUZCQW5GRkRRQWdBaThCSGtIdEFHc2lBMEVQUzBFQklBTjBRWStBQW5GRmNnMEFJQVVnQWlnQ0pCRHhBa1VFUUNBRklBVWdBa0VDRUNZUThRSkZEUUVMSUFGQklHb2lBeUFGUVhJZ0FoQVFJQU5Ca0tFQkVBNGFJQUVvQXR3QklRUWdBeEFSQ3lBQlFlQUJhaVFBSUFRaUFRMEhBbjlCQUNFRUl3QkI4QUZySWdFa0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBaThCSGlJRFFjMEFhdzRJQUFFQ0F3UUZCZ2NJQ3lBRklBSW9BaVFpQXhCd0VJTVhSUVJBSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5CajRjRUVBNGFJQUVvQXV3QklRUWdBeEFSREJVTElBVWdCU0FDUVFJUUppSUhFSEJCRjBjRVFDQUJRVEJxSWdNZ0JVRnlJQUlRRUNBRFFaUFJBUkFPR2lBQktBTHNBU0VFSUFNUUVRd1ZDeUFGSUFjUXdRRWdBMGNFUUNBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUVlTZ0JCQU9HaUFCS0FMc0FTRUVJQU1RRVF3VkN3SkFBa0FnQlNBQ1FRTVFHeEFnSWdORkRRQWdBeWdDSkNJRFJRMEFJQVVnQXhCUURRRUxJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkIrWU1DRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQlVMSUFVdEFJQUJRUUp4UlEwVUlBVWdBaWdDSkJEeEFrVU5GQ0FCUVRCcUlnTWdCVUZ5SUFJUUVDQURRYkcyQVJBT0dpQUJLQUxzQVNFRUlBTVFFUXdVQ3lBRklBSW9BaVFpQXhCd1FSZEhCRUFnQVVFd2FpSURJQVZCY2lBQ0VCQWdBMEc3MFFFUURob2dBU2dDN0FFaEJDQURFQkVNRkFzZ0JTQUNRUUlRSmlBRFJ3UkFJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkJ1S0VFRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQlFMSUFVZ0FrRURFQ1lnQlNBREVNRUJSd1JBSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5CbUwwS0VBNGFJQU5Cc3ZJREVBNGFJQUVvQXV3QklRUWdBeEFSREJRTElBVWdCU0FDUVFRUUpoQlFSUVJBSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5CK1lNQ0VBNGFJQUVvQXV3QklRUWdBeEFSREJRTElBVXRBSUFCUVFKeFJRMFRJQVVnQWlnQ0pCRHhBa1VORXlBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUWYrMUFSQU9HaUFCS0FMc0FTRUVJQU1RRVF3VEN3SkFJQVVnQWlnQ0pCQWdJZ01FUUNBREx3RWVRUmRHRFFFTElBRkJNR29pQnlBRlFYWWdBaEFRSUFkQnJkOEVFQTRhSUFkQjdyd0NFQTRhSUFjZ0F5OEJIaEFwRUE0YUlBZEIvSmNJRUE0YUlBRW9BdXdCSVFRZ0J4QVJEQk1MSUFJb0FoQWdBaWdDREd0QkJIVkJCR3NnQTBFQ0VCdEhCRUFnQVVFd2FpSUhJQVZCZGlBQ0VCQWdCMEdhMHdzUURob2dBVUVJYWlJR0lBVWdBeWdDS0JBcUlBY2dCaEFTR2lBSFFmT1hCeEFPR2lBQktBTHNBU0VFSUFZUUR4b2dCeEFSREJNTElBVWdCU0FDUVFJUUd4QWdLQUlrRUNBaEJ5QUZJQVVnQWtFREVCc1FJQ2dDSkJBZ0lRWUNRQ0FIQkVBZ0J5OEJIa0VYUmcwQkN5QUJRVEJxSWdNZ0JVRjJJQUlRRUNBRFFhN0ZCeEFPR2lBQktBTHNBU0VFSUFNUUVRd1RDd0pBSUFZRVFDQUdMd0VlUVJkR0RRRUxJQUZCTUdvaUF5QUZRWFlnQWhBUUlBTkJnOFVIRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQk1MSUFOQkFSQWJJZ01nQjBFQkVCdEhCRUFnQVVFd2FpSURJQVZCZGlBQ0VCQWdBMEhTOVFjUURob2dBU2dDN0FFaEJDQURFQkVNRXdzZ0JrRUJFQnNnQTBjRVFDQUJRVEJxSWdNZ0JVRjJJQUlRRUNBRFFaUDFCeEFPR2lBQktBTHNBU0VFSUFNUUVRd1RDeUFIUVFJUUd5QUdRUUlRRzJvaENVRUVJUVlDUUFOQUlBWWdBaWdDRUNBQ0tBSU1hMEVFZFU4TkFTQUNJQVlRR3lFSElBWkJBV29oQmlBSFFYOUdJQWNnQ1VseURRQUxJQUZCTUdvaUF5QUZRWFlnQWhBUUlBTkJwY01KRUE0YUlBTWdCeEFoR2lBRFFZM3VDUkFPR2lBRFFmeXZDaEFPR2lBRElBa1FJUm9nQTBIOGx3Z1FEaG9nQVNnQzdBRWhCQ0FERUJFTUV3c2dCUzBBZ0FGQkFuRkZEUklnQlNBQ0tBSWtFUEVDUlEwU0lBRkJNR29pQXlBRlFYSWdBaEFRSUFOQjVMWUJFQTRhSUFFb0F1d0JJUVFnQXhBUkRCSUxJQUlvQWhBZ0FpZ0NER3NpQmtFRWRTRURBa0FDUUFKQUFrQUNRQUpBSUFVZ0FpZ0NKQ0lIRUhBaUNVRVhhdzRJQUFFRkJRVUNCUU1FQ3lBRklBY1FSU0VNSUFVZ0J4REJBU0VKSUFaQndBQkpEUXBCQWlFR1FRSWdBeUFEUVFKTkd5RVJRUUFoQndOQUlBWWdFVWNFUUVFQklRc2dDU0FGSUFJZ0JoQW1JZ05IQkVBZ0JTQURFSEJCRjBjTkRpQUZJQU1Rd1FFZ0NVY05EaUFGSUFNUVJTRUxDeUFHUVFGcUlRWWdCeUFMYWlFSERBRUxDeUFISUF4R0RSVWdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwR0dtUW9RRGhvZ0EwR1IwQUVRRGhvZ0FTZ0M3QUVoQkNBREVCRU1GZ3NnQVVFQU5nSUlJQUZCQURZQ0xDQUJRUUEyQWlnZ0FVRUFOZ0lrSUFVZ0J5QUJRUWhxSUFGQkxHb2dBVUVvYWlBQlFTUnFFS2NEUlEwTFFRSWhCaUFCS0FJc1FRSnFJQU5IRFF4QkFpQURJQU5CQWswYklRTURRQ0FESUFaR0RSVWdCU0FDSUFZUUppRUhJQVpCQVdvaEJpQUhJQUVvQWloR0RRQUxJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkI4WXdLRUE0YUlBTkIxUjhRRGhvZ0FTZ0M3QUVoQkNBREVCRU1GUXNnQlNBSEVDQWlCMFVORENBSEx3RWVRUnhIRFEwZ0JTQUhLQUlBS0FJTUVDQXZBUjRRdndnTkV5QUJRZ0EzQXdnZ0JTQUhLQUlBS0FJTUlBRkJDR29Rd3dWRkRRNGdBNjBnQVNrRENFSUNmRklFUUNBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUWRPWUNoQU9HaUFEUWFnYUVBNGFJQUVvQXV3QklRUWdBeEFSREJVTFFRSWhCa0VDSUFNZ0EwRUNUUnNoQXlBSEtBSUFLQUlJSVFjRFFDQURJQVpHRFJRZ0JTQUNJQVlRSmlFSklBWkJBV29oQmlBSElBbEdEUUFMSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5COFl3S0VBNGFJQU5CMXhvUURob2dBU2dDN0FFaEJDQURFQkVNRkFzZ0JTQUhFQ0FpQjBVTkRpQUhMd0VlUVI1SERROGdCeWdDRUNBSEtBSU1hMEVFZFVFQmFpQURSdzBRUVFJZ0F5QURRUUpOR3lFRFFRSWhCZ05BSUFNZ0JrWU5FeUFHUVFKMElRa2dCU0FDSUFZUUppRUxJQVpCQVdvaEJpQUxJQWtnQnlnQ0FHb29BZ0JHRFFBTElBRkJNR29pQXlBRlFYSWdBaEFRSUFOQjlzRUtFQTRhSUFOQmkrMEFFQTRhSUFFb0F1d0JJUVFnQXhBUkRCTUxJQWxCN2lsR0RSQUxJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkJ5NDBFRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQkVMSUFGQkFEWUNDQ0FGSUFJZ0FVRUlhaENQRmlJRURSQWdBaWdDSkNJSElBRW9BZ2dpQkVjRVFDQUJRVEJxSWdNZ0JVRnlJQUlRRUNBRFFmMjNBaEFPR2lBRElBVWdCeEJ3RUNrUURob2dBMEhVdGdJUURob2dBeUFGSUFRUWNCQXBFQTRhSUFOQitKY0lFQTRhSUFFb0F1d0JJUVFnQXhBUkRCRUxRUUFoQkNBRkxRQ0FBVUVDY1VVTkVDQUZJQWNROFFKRkRSQWdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwSEh0d0VRRGhvZ0FTZ0M3QUVoQkNBREVCRU1FQXNnQlNBQ1FRSVFKaUVISUFVZ0FrRURFQ1lnQWlnQ0pDSUVSd1JBSUFGQk1Hb2lBeUFGUVhJZ0FoQVFJQU5CcjdvQ0VBNGFJQU1nQWk4QkhoQXBFQTRhSUFOQmpONEtFQTRhSUFNZ0JCQWhHaUFEUWZ5WENCQU9HaUFCS0FMc0FTRUVJQU1RRVF3UUN5QUJRUUEyQWdnZ0JTQUNJQUZCQ0dvUWp4WWlCQTBQSUFFb0FnZ2lCQ0FIUndSQUlBRkJNR29pQXlBRlFYSWdBaEFRSUFOQmpiZ0NFQTRhSUFNZ0JTQUhFSEFRS1JBT0dpQURRYUMzQWhBT0dpQURJQVVnQkJCd0VDa1FEaG9nQTBINGx3Z1FEaG9nQVNnQzdBRWhCQ0FERUJFTUVBdEJBQ0VFSUFVdEFJQUJRUUp4UlEwUElBVWdBaWdDSkJEeEFrVU5EeUFCUVRCcUlnTWdCVUZ5SUFJUUVDQURRWkszQVJBT0dpQUJLQUxzQVNFRUlBTVFFUXdQQ3lBQ0tBSWtJZ01nQlNBQ1FRSVFKa2NFUUNBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUWF5eUJCQU9HaUFCS0FMc0FTRUVJQU1RRVF3UEN5QUZJQU1RblFkRkRRNGdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwSDI4Z01RRGhvZ0FTZ0M3QUVoQkNBREVCRU1EZ3NnQVVFQU5nSUlJQUZCQURZQ0xDQUJRUUEyQWlnZ0FVRUFOZ0lrSUFVZ0FpZ0NKQ0FCUVFocUlBRkJMR29nQVVFb2FpQUJRU1JxRUtjRFJRUkFJQUZCTUdvaUF5QUZRWElnQWhBUUlBTkJndkVERUE0YUlBRW9BdXdCSVFRZ0F4QVJEQTRMSUFVZ0FrRUNFQ1loQXlBQlFRQTJBaUFnQVVFQU5nSWNJQUZCQURZQ0dDQUJRUUEyQWhRZ0JTQURJQUZCSUdvZ0FVRWNhaUFCUVJocUlBRkJGR29RcHdORkJFQWdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwR1JJQkFPR2lBQktBTHNBU0VFSUFNUUVRd09DeUFCS0FJa0lBRW9BaFJIQkVBZ0FVRXdhaUlESUFWQmNpQUNFQkFnQTBHVHh3b1FEaG9nQTBINWxnTVFEaG9nQVNnQzdBRWhCQ0FERUJFTURnc0NRQ0FCS0FJSUlBRW9BaHhHQkVBZ0FTZ0NMQ0FCS0FJZ1JnMEJDeUFCUVRCcUlnTWdCVUZ5SUFJUUVDQURRZXZDQ1JBT0dpQURRYnVuQkJBT0dpQUJLQUxzQVNFRUlBTVFFUXdPQ3lBRkxRQ0FBVUVDY1VVTkRTQUZJQUlvQWlRUThRSkZEUTBnQVVFd2FpSURJQVZCY2lBQ0VCQWdBMEhjaWdFUURob2dBU2dDN0FFaEJDQURFQkVNRFFzZ0EwR1FBMGNORENBRklBSW9BaVFRSUNJRElBVWdCU0FDUVFJUUd4QWdLQUlrRUNBaUIwWWdBMFZ5UVFFZ0J4c0VRQ0FCUVRCcUlnTWdCVUYySUFJUUVDQURRZk9SQkJBT0dpQUJLQUxzQVNFRUlBTVFFUXdOQ3lBRklBY2dBMEVBRUwwTlJRUkFJQUZCTUdvaUF5QUZRWFlnQWhBUUlBTkJuNUlFRUE0YUlBRW9BdXdCSVFRZ0F4QVJEQTBMSUFVdEFJQUJRUUp4UlEwTUlBVWdBaWdDSkJEeEFrVU5EQ0FCUVRCcUlnTWdCVUZ5SUFJUUVDQURRZEsxQVJBT0dpQUJLQUxzQVNFRUlBTVFFUXdNQ3lBQlFUQnFJZ01nQlVGeUlBSVFFQ0FEUWFPQkJ4QU9HaUFCS0FMc0FTRUVJQU1RRVF3TEN5QUJRVEJxSWdNZ0JVRnlJQUlRRUNBRFFZbkJBeEFPR2lBRFFkai9BQkFPR2lBQktBTHNBU0VFSUFNUUVRd0tDMEhWa2dkQmhKOENRWVFDUWZQckFCQUFBQXNnQVVFd2FpSURJQVZCY2lBQ0VCQWdBMEhUbUFvUURob2dBMEdtSHhBT0dpQUJLQUxzQVNFRUlBTVFFUXdJQzBHcUxrR0Vud0pCbXdKQjgrc0FFQUFBQzBHSkhFR0Vud0pCbkFKQjgrc0FFQUFBQzBHc25RbEJoSjhDUWFZQ1FmUHJBQkFBQUF0QjFpNUJoSjhDUWI0Q1FmUHJBQkFBQUF0QnN1NEFRWVNmQWtHL0FrSHo2d0FRQUFBTElBRkJNR29pQXlBRlFYSWdBaEFRSUFOQjA1Z0tFQTRhSUFOQjNPd0FFQTRhSUFFb0F1d0JJUVFnQXhBUkRBSUxJQVVnQnhBZ0lnTkZEUUlnQTBFQkVCc2hBeUFHUVRCSEJFQWdBVUV3YWlJRElBVkJjaUFDRUJBZ0EwRzh3QUFRRGhvZ0FTZ0M3QUVoQkNBREVCRU1BZ3NnQlNBQ1FRSVFKaUFEUmcwQUlBRkJNR29pQXlBRlFYSWdBaEFRSUFOQmhmSURFQTRhSUFFb0F1d0JJUVFnQXhBUkRBRUxJQVV0QUlBQlFRSnhSUTBBSUFVZ0FpZ0NKQkR4QWtVTkFDQUJRVEJxSWdNZ0JVRnlJQUlRRUNBRFFlNjBBUkFPR2lBQktBTHNBU0VFSUFNUUVRc2dBVUh3QVdva0FDQUVEQUVMUWVzdVFZU2ZBa0hXQWtIejZ3QVFBQUFMSWdFTkIwRUFJUUZCQUNFSkl3QkJnQUpySWdRa0FDQUNLQUlrSVFjQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FDTHdFZUlnTkIvZ0JyRGhzREFBTUFBd0FFQVFJREFBSUVCQUVCRFF3TENna0lCUWNIQndjR0MwRUJJUUVMQWtBZ0JTQUhFSGNOQUNBRklBY1FqZ0VOQUNBQkJFQWdCU0FIRUpzSERRRUxJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJ6cHNNRUE0YUlBRWdBeEFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQTRMUVFJaENRTkFJQWtnQWlnQ0VDQUNLQUlNYTBFRWRVOE5EU0FGSUFJZ0NSQW1JQWRHQkVBZ0NVRUJhaUVKREFFTEN5QUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFhYWhEQkFPR2lBQklBTVFLUkFPR2lBQlFaL0VDUkFPR2lBQklBa1FJUm9nQkNnQy9BRWhBaUFCRUJFTURRc0NRQ0FGSUFjUTd3RU5BQ0FGSUFjUW5BY05BQ0FEUVlZQlJnUkFJQVVnQnhDK0RRMEJDeUFFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZW1aREJBT0dpQUJJQU1RS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdOQzBFQ0lRa0RRQ0FKSUFJb0FoQWdBaWdDREd0QkJIVlBEUXdnQlNBQ0lBa1FKaUFIUmdSQUlBbEJBV29oQ1F3QkN3c2dCRUZBYXlJQklBVkJjaUFDRUJBZ0FVR21vUXdRRGhvZ0FTQURFQ2tRRGhvZ0FVR2Z4QWtRRGhvZ0FTQUpFQ0VhSUFRb0F2d0JJUUlnQVJBUkRBd0xRUUVoQVFzQ1FDQUZJQWNRVUEwQUlBVWdCeEMyQVEwQUlBRUVRQ0FGSUFjUW5nWU5BUXNnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUcxbVF3UURob2dBU0FERUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQ3d0QkFpRUpJQVVnQnhCRklRc2dCU0FIRUQ0aERBTkFJQWtnQWlnQ0VDQUNLQUlNYTBFRWRVOE5DZ0pBQWtBZ0JTQUNJQWtRSmlJR1JRMEFJQVVnQmhCUURRRWdCU0FHRUxZQkRRRWdBVVVOQUNBRklBY1FuZ1lOQVFzZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVISnFnd1FEaG9nQVNBREVDa1FEaG9nQVVHZnhBa1FEaG9nQVNBSkVDRWFJQVFvQXZ3QklRSWdBUkFSREF3TElBVWdCaEJGSUF0SEJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVSHBpd29RRGhvZ0FVR0FuUXdRRGhvZ0FTQURFQ2tRRGhvZ0FVR2Z4QWtRRGhvZ0FTQUpFQ0VhSUFRb0F2d0JJUUlnQVJBUkRBd0xJQVVnQmhBK0lBeEhCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUhMcHdvUURob2dBVUdBblF3UURob2dBU0FERUNrUURob2dBVUdmeEFrUURob2dBU0FKRUNFYUlBUW9BdndCSVFJZ0FSQVJEQXdGSUFsQkFXb2hDUXdCQ3dBTEFBc2dCU0FIRUhjRVFFRUNJUWtEUUNBSklBSW9BaEFnQWlnQ0RHdEJCSFZQRFFvQ1FDQUZJQUlnQ1JBbUlnTUVRQ0FGSUFNUWpnRU5BUXNnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUg3cVF3UURob2dBVUdVQVJBcEVBNGFJQUZCbjhRSkVBNGFJQUVnQ1JBaEdpQUVLQUw4QVNFQ0lBRVFFUXdNQ3lBRklBTVF3UUVnQjBjRVFDQUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFZS2VEQkFPR2lBQlFaUUJFQ2tRRGhvZ0FVR2Z4QWtRRGhvZ0FTQUpFQ0VhSUFRb0F2d0JJUUlnQVJBUkRBd0xJQVVnQXhCRklRTUNRQ0FKUVFKR0JFQWdBeUVCREFFTElBRWdBMFlOQUNBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUVlqa0N4QU9HaUFCUVpRQkVDa1FEaG9nQkNnQy9BRWhBaUFCRUJFTURBc2dDVUVCYWlFSkRBQUxBQXNnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUc2bkF3UURob2dBVUdVQVJBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFrTElBTkI4U2xIRFFjZ0JTQUNRUUVRSmlFQklBVWdBa0VDRUNZaEF5QUZJQUpCQXhBbUlRY2dCU0FDUVFRUUppRUdJQVVnQXhDeEFrVUVRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZHlpREJBT0dpQUJRZkVwRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQ1FzZ0JTQUhFTEVDUlFSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQnI2SU1FQTRhSUFGQjhTa1FLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0pDeUFGSUFZUXNRSkZCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdDb2d3UURob2dBVUh4S1JBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFrTElBVWdBUkN4QWtVRVFDQUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFiR1lEQkFPR2lBQlFmRXBFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1DUXNnQlNBREVDQWhBeUFGSUFjUUlDRUhJQVVnQmhBZ0lRWWdCU0FCRUNBaENTQUVRVUJySWdFZ0JTQURRUUlRR3hEZEFTQUVLQUpFSVFzZ0JDMEFRU0VNSUFFZ0JTQUhRUUlRR3hEZEFTQUVLQUpFSVJFZ0JDMEFRU0VOSUFFZ0JTQUdRUUlRR3hEZEFTQUVLQUpFSVJBZ0JDMEFRU0VQSUFFZ0JTQUpRUUlRR3hEZEFTQUVLQUpFSVJNZ0JDMEFRU0VVSUFFZ0JTQURRUU1RR3hEZEFTQUVLQUpFSVJVZ0JDMEFRU0VXSUFFZ0JTQUhRUU1RR3hEZEFTQUVLQUpFSVI4Z0JDMEFRU0VoSUFFZ0JTQUdRUU1RR3hEZEFTQUVLQUpFSVJjZ0JDMEFRU0ViSUFFZ0JTQUpRUU1RR3hEZEFTQUVLQUpFSVJnZ0JDMEFRU0VhSUFFZ0JTQURRUVFRR3hEZEFTQUVLQUpFSVIwZ0JDMEFRU0VpSUFFZ0JTQUhRUVFRR3hEZEFTQUVLQUpFSVFNZ0JDMEFRU0VISUFFZ0JTQUdRUVFRR3hEZEFTQUVLQUpFSVFZZ0JDMEFRU0VlSUFFZ0JTQUpRUVFRR3hEZEFTQUVLQUpFSVFFZ0JDMEFRU0VKSUF4RklCUkZja1VnQ3lBVFIzRWdERVVnRFVWeVJTQUxJQkZIY1NBTVJTQVBSWEpGSUFzZ0VFZHhjbklnRFVVZ0QwVnlSU0FRSUJGSGNTQU5SU0FVUlhKRklCRWdFMGR4Y25KRklBOUZJQlJGY2lBUUlCTkdjbkZGQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVIbWlRd1FEaG9nQVVIeEtSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBa0xJQlpGSUJ0RmNrVWdGU0FYUjNFZ0ZrVWdHa1Z5UlNBVklCaEhjWEpGSUJ0RklCcEZjaUFYSUJoR2NuRkZCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdpaVF3UURob2dBVUh4S1JBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFrTElBZEZJQjVGY2tVZ0F5QUdSM0VnQjBVZ0NVVnlSU0FCSUFOSGNYSkZJQjVGSUFsRmNpQUJJQVpHY25GRkJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVR0FpUXdRRGhvZ0FVSHhLUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQWtMSUNKRklDRkZjaUFkSUI5R2NnMEhJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJ4SWtNRUE0YUlBRkI4U2tRS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdJQ3lBRVFRQTJBaEFnQkVJQU53TUlBa0FnQlNBSElBUkJDR29RdncxRkJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVR3RsUXdRRGhvZ0FTQURFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1BUXNnQkNnQ0RDQUVLQUlJSWdGclFRaEhCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdxNXdzUURob2dBU0FERUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQVFzZ0FTZ0NBQ0VCQWtBZ0EwR1lBVVlFUUNBRklBRVFVQTBCSUFVZ0JDZ0NDQ2dDQUJDMkFRMEJJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJxLzhKRUE0YUlBRkI5L0lMRUE0YUlBRkJtQUVRS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdDQ3lBRklBRVE3d0VOQUNBRklBUW9BZ2dvQWdBUW5BY05BQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZXpjQ2hBT0dpQUJRWnZ5Q3hBT0dpQUJJQU1RS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdCQ3lBRUtBSUlJZ0VvQWdBZ0FTZ0NCRWNFUUNBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUWFlSERCQU9HaUFCSUFNUUtSQU9HaUFFS0FMOEFTRUNJQUVRRVF3QkN5QUZJQUpCQWhBbUlRRWdCU0FDUVFNUUppRUhJQUVnQkNnQ0NDZ0NBQ0lHUnlBR0lBZEhja1VFUUVFQklRa01BUXNnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdhalF3UURob2dBU0FERUNrUURob2dCQ2dDL0FFaEFpQUJFQkVMSUFSQkNHb1FNaG9nQ1EwR0RBY0xJQVVnQWtFQ0VDWWhBeUFGSUFKQkF4QW1JUUVnQkVFQU5nSUlJQVJCQURZQ1BDQUVRUUEyQWpnZ0JFRUFOZ0kwSUFVZ0J5QUVRUWhxSUFSQlBHb2dCRUU0YWlBRVFUUnFFS2NEUlFSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQmhaZ01FQTRhSUFGQmt3RVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0hDeUFFS0FJNElBTkhCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUd6dkFvUURob2dBVUhscVF3UURob2dBVUdUQVJBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFjTEFrQWdBUVJBSUFVZ0FSQ09BUTBCQ3lBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUWJxb0RCQU9HaUFCUVpNQkVDa1FEaG9nQkNnQy9BRWhBaUFCRUJFTUJ3c2dCQ2dDTkNBRklBRVF3UUZIQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHa2hRd1FEaG9nQVVHVEFSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBY0xJQVFvQWp3Z0JTQUJFRVZHRFFVZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHNXdRb1FEaG9nQVVIb3FBd1FEaG9nQVVHVEFSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBWUxJQVVnQWtFQ0VDWWhBU0FGSUFKQkF4QW1JUU1nQkVFQU5nSUlJQVJCQURZQ1BDQUVRUUEyQWpnZ0JFRUFOZ0kwSUFVZ0J5QUVRUWhxSUFSQlBHb2dCRUU0YWlBRVFUUnFFS2NEUlFSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQmhaZ01FQTRhSUFGQmtnRVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0dDeUFFUVFBMkFqQWdCRUVBTmdJc0lBUkJBRFlDS0NBRVFRQTJBaVFnQlNBQklBUkJNR29nQkVFc2FpQUVRU2hxSUFSQkpHb1Fwd05GQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHTHFRd1FEaG9nQVVHU0FSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBWUxJQVJCQURZQ0lDQUVRUUEyQWh3Z0JFRUFOZ0lZSUFSQkFEWUNGQ0FGSUFNZ0JFRWdhaUFFUVJ4cUlBUkJHR29nQkVFVWFoQ25BMFVFUUNBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUVl5b0RCQU9HaUFCUVpJQkVDa1FEaG9nQkNnQy9BRWhBaUFCRUJFTUJnc2dCU0FFS0FJMEVIZEZCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUdGbUF3UURob2dBVUdTQVJBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFZTElBUW9BamdnQkNnQ0tFY0VRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZVBGQ2hBT0dpQUJRWitIREJBT0dpQUJRWklCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQmdzZ0JDZ0NOQ0FFS0FJVVJ3UkFJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJvOFVLRUE0YUlBRkJuNGNNRUE0YUlBRkJrZ0VRS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdHQ3lBRUtBSThJQVFvQWh4SEJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVSDIvd2tRRGhvZ0FVR2Nod3dRRGhvZ0FVR1NBUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQVlMSUFRb0Fpd2dCQ2dDSUVjRVFDQUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFhdlNDUkFPR2lBQlFZYUZEQkFPR2lBQlFaSUJFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1CZ3NnQkNnQ01DQUVLQUlJUmcwRVFhYjhBRUh1b0FKQjhnSkIvSlFCRUFBQUN5QUZJQUpCQWhBbUlRTWdCU0FDUVFNUUppRUJJQVVnQnhDT0FVVUVRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRWW1aREJBT0dpQUJRWkVCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQlFzZ0JFRUFOZ0lJSUFSQkFEWUNQQ0FFUVFBMkFqZ2dCRUVBTmdJMElBVWdBeUFFUVFocUlBUkJQR29nQkVFNGFpQUVRVFJxRUtjRFJRUkFJQVJCUUdzaUFTQUZRWElnQWhBUUlBRkJpNmtNRUE0YUlBRkJrUUVRS1JBT0dpQUVLQUw4QVNFQ0lBRVFFUXdGQ3lBRUtBSTRJQWRIQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHUm5Rd1FEaG9nQVVHUkFSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBVUxBa0FnQVFSQUlBVWdBUkNPQVEwQkN5QUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFicW9EQkFPR2lBQlFaRUJFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1CUXNnQkNnQ05DQUZJQUVRd1FGSEJFQWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVR2toUXdRRGhvZ0FVR1JBUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQVVMSUFRb0Fqd2dCU0FCRUVWR0RRTWdCRUZBYXlJQklBVkJjaUFDRUJBZ0FVRzV3UW9RRGhvZ0FVR1ppZ3dRRGhvZ0FVR1JBUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQVFMSUFVZ0FrRUNFQ1loQVNBRklBSkJBeEFtSVFZZ0JTQUhFSTRCUlFSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQmlaa01FQTRhSUFGQmtBRVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0VDeUFGSUFjUXdRRWhBd0pBSUFFRVFDQUZJQUVRamdFTkFRc2dCRUZBYXlJQklBVkJjaUFDRUJBZ0FVRzRxUXdRRGhvZ0FVR1FBUkFwRUE0YUlBUW9BdndCSVFJZ0FSQVJEQVFMSUFVZ0FSREJBU0FEUndSQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQjJjWUtFQTRhSUFGQm40Y01FQTRhSUFGQmtBRVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0VDeUFFUVFBMkFnZ2dCRUVBTmdJOElBUkJBRFlDT0NBRVFRQTJBalFnQlNBR0lBUkJDR29nQkVFOGFpQUVRVGhxSUFSQk5Hb1Fwd05GQkVBZ0JFRkFheUlCSUFWQmNpQUNFQkFnQVVHTXFBd1FEaG9nQVVHUUFSQXBFQTRhSUFRb0F2d0JJUUlnQVJBUkRBUUxJQVFvQWpRZ0EwY0VRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRWi9HQ2hBT0dpQUJRWitIREJBT0dpQUJRWkFCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQkFzZ0JDZ0NQQ0FGSUFjUVJVY0VRQ0FFUVVCcklnRWdCVUZ5SUFJUUVDQUJRYXFCQ2hBT0dpQUJRWTJLREJBT0dpQUJRWkFCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQkFzZ0JDZ0NDQ0FGSUFFUVJVWU5BaUFFUVVCcklnRWdCVUZ5SUFJUUVDQUJRZi9BQ2hBT0dpQUJRYWVLREJBT0dpQUJRWkFCRUNrUURob2dCQ2dDL0FFaEFpQUJFQkVNQXdzQ1FDQUZJQWNRdWdFaUEwVU5BQ0FETHdFZVFSaEhEUUFnQlNBRklBY1F3UUVRZHlFQkN3SkFJQUVOQUNBRklBY1FzUUlOQUNBRVFVQnJJZ0VnQlVGeUlBSVFFQ0FCUVlXWURCQU9HaUFCUVk4QkVDa1FEaG9nQkNnQy9BRWhBaUFCRUJFTUF3c2dCU0FDUVFJUUppQUhSd1JBSUFSQlFHc2lBU0FGUVhJZ0FoQVFJQUZCdDU0TUVBNGFJQUZCandFUUtSQU9HaUFFS0FMOEFTRUNJQUVRRVF3REN5QUZJQWNRd1FFZ0JTQUNRUU1RSmtZTkFTQUVRVUJySWdFZ0JVRnlJQUlRRUNBQlFabkxDUkFPR2lBQlFlK25EQkFPR2lBQlFZOEJFQ2tRRGhvZ0JDZ0MvQUVoQWlBQkVCRU1BZ3NnQlNBSEVJNEJSUVJBSUFSQlFHc2lBU0FGUVhJZ0FoQVFJQUZCaVprTUVBNGFJQUZCamdFUUtSQU9HaUFFS0FMOEFTRUNJQUVRRVF3Q0N5QUZJQUpCQWhBbUlBZEhCRUFnQkVGQWF5SUJJQVZCY2lBQ0VCQWdBVUh4bmd3UURob2dBVUdPQVJBcEVBNGFJQVFvQXZ3QklRSWdBUkFSREFJTElBVWdCeERCQVNBRklBSkJBeEFtUmcwQUlBUkJRR3NpQVNBRlFYSWdBaEFRSUFGQm1jc0pFQTRhSUFGQithb01FQTRhSUFGQmpnRVFLUkFPR2lBRUtBTDhBU0VDSUFFUUVRd0JDMEVBSVFJTElBUkJnQUpxSkFBZ0FpSUJEUWNqQUVIQUFXc2lBU1FBSUFnb0FpUWhBZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDQzhCSGlJRVFjSUJhdzRNQUFBQUFRRUJBUUlEQXdVRUJnc0NRQ0FGSUFJUVVBMEFJQVVnQWhDMkFRMEFJQUVnQlVGeUlBZ1FFQ0FCUWJXWkRCQU9HaUFCSUFRUUtSQU9HaUFCS0FLOEFTRURJQUVRRVF3SEN5QUZJQUlRUlNFR0lBVWdDRUVDRUNZaEF5QUZJQWhCQXhBbUlRY0NRQ0FEQkVBZ0JTQURFRkFOQVNBRklBTVF0Z0VOQVFzZ0FTQUZRWElnQ0JBUUlBRkJ3dkVMRUE0YUlBRWdCQkFwRUE0YUlBRW9BcndCSVFNZ0FSQVJEQWNMSUFVZ0F4QkZJQVpIQkVBZ0FTQUZRWElnQ0JBUUlBRkJvb3dLRUE0YUlBRkJnSjBNRUE0YUlBRWdCQkFwRUE0YUlBRW9BcndCSVFNZ0FSQVJEQWNMSUFVZ0F4QStJQVVnQWhBK1J3UkFJQUVnQlVGeUlBZ1FFQ0FCUVlTb0NoQU9HaUFCUVlDZERCQU9HaUFCSUFRUUtSQU9HaUFCS0FLOEFTRURJQUVRRVF3SEN3SkFJQWNFUUNBRklBY1FVQTBCSUFVZ0J4QzJBUTBCQ3lBQklBVkJjaUFJRUJBZ0FVR1c4UXNRRGhvZ0FTQUVFQ2tRRGhvZ0FTZ0N2QUVoQXlBQkVCRU1Cd3NnQlNBSEVFVWdCa1lOQlNBQklBVkJjaUFJRUJBZ0FVR1Fpd29RRGhvZ0FVR0FuUXdRRGhvZ0FTQUVFQ2tRRGhvZ0FTZ0N2QUVoQXlBQkVCRU1CZ3NDUUNBRklBSVFVQTBBSUFVZ0FoQzJBUTBBSUFFZ0JVRnlJQWdRRUNBQlFiV1pEQkFPR2lBQklBUVFLUkFPR2lBQktBSzhBU0VESUFFUUVRd0dDMEVDSVFNZ0JTQUNFRVVoQnlBRklBSVFQaUVHQTBBZ0F5QUlLQUlRSUFnb0FneHJRUVIxVHcwRkFrQWdCU0FJSUFNUUppSUNCRUFnQlNBQ0VGQU5BU0FGSUFJUXRnRU5BUXNnQVNBRlFYSWdDQkFRSUFGQm5xb01FQTRhSUFFZ0JCQXBFQTRhSUFGQm44UUpFQTRhSUFFZ0F4QWhHaUFCS0FLOEFTRURJQUVRRVF3SEN5QUZJQUlRUlNBSFJ3UkFJQUVnQlVGeUlBZ1FFQ0FCUWJ1TENoQU9HaUFCUVlDZERCQU9HaUFCSUFRUUtSQU9HaUFCUVovRUNSQU9HaUFCSUFNUUlSb2dBU2dDdkFFaEF5QUJFQkVNQndzZ0JTQUNFRDRnQmtjRVFDQUJJQVZCY2lBSUVCQWdBVUdkcHdvUURob2dBVUdBblF3UURob2dBU0FFRUNrUURob2dBVUdmeEFrUURob2dBU0FERUNFYUlBRW9BcndCSVFNZ0FSQVJEQWNGSUFOQkFXb2hBd3dCQ3dBTEFBc2dCU0FJUVFJUUppRURJQVVnQ0VFREVDWWhCaUFGSUFoQkJCQW1JUVFnQlNBSVFRVVFKaUVISUFVZ0NDQURFTUlLSWdNTkJDQUNJQVpIQkVBZ0FTQUZRWElnQ0JBUUlBRkJxNThNRUE0YUlBRkJ5UUVRS1JBT0dpQUJLQUs4QVNFRElBRVFFUXdGQ3dKQUlBUUVRQ0FGSUFRUVVBMEJDeUFCSUFWQmNpQUlFQkFnQVVHdCt3c1FEaG9nQVVISkFSQXBFQTRhSUFFb0Fyd0JJUU1nQVJBUkRBVUxJQWNFUUNBRklBY1FVQTBFQ3lBQklBVkJjaUFJRUJBZ0FVR0crd3NRRGhvZ0FVSEpBUkFwRUE0YUlBRW9BcndCSVFNZ0FSQVJEQVFMSUFVZ0NFRUNFQ1loQXlBRklBaEJBeEFtSVFJZ0JTQUlRUVFRSmlFSElBVWdDQ0FERU1JS0lnTU5Bd0pBSUFJRVFDQUZJQUlRVUEwQkN5QUJJQVZCY2lBSUVCQWdBVUd0K3dzUURob2dBU0FFRUNrUURob2dBU2dDdkFFaEF5QUJFQkVNQkFzZ0J3UkFJQVVnQnhCUURRTUxJQUVnQlVGeUlBZ1FFQ0FCUVliN0N4QU9HaUFCSUFRUUtSQU9HaUFCS0FLOEFTRURJQUVRRVF3REN3SkFJQVVnQWhCUURRQWdCU0FDRUxZQkRRQWdBU0FGUVhJZ0NCQVFJQUZCdFprTUVBNGFJQUZCelFFUUtSQU9HaUFCS0FLOEFTRURJQUVRRVF3REN5QUZJQWdnQlNBSVFRSVFKaUlFRU1JS0lnTU5BaUFGSUFRUVJTQUZJQUlRUlVZTkFTQUJJQVZCY2lBSUVCQWdBVUdwL2dzUURob2dBVUhOQVJBcEVBNGFJQUVvQXJ3QklRTWdBUkFSREFJTElBVWdDQ0FGSUFoQkFoQW1FTUlLSWdNTkFRdEJBQ0VEQ3lBQlFjQUJhaVFBSUFNaUFRMEhBbjlCQUNFRUl3QkIwQUZySWdFa0FDQUlLQUlrSVFNQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0NDOEJIaUlDUVpvQmF3NG1BQUFCQVFFQkFRSUNBZ01EQXdNRUJRWUdCZ1lHQmdZR0JnWUNBZ0lDQWdJQ0FnSUNBZ0lIQ3lBRklBTVF2d0pGQkVBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBIbW5Bd1FEaG9nQXlBQ0VDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUJ3c2dCU0FJUVFJUUppSURCRUFnQlNBREVNUUZEUWNMSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQU5CbUlBTUVBNGFJQU1nQWhBcEVBNGFJQUVvQXN3QklRUWdBeEFSREFZTEFrQWdCU0FERUw4Q0RRQWdCU0FERU1RRkRRQWdBVUVRYWlJRElBVkJjaUFJRUJBZ0EwR1ptd3dRRGhvZ0F5QUNFQ2tRRGhvZ0FTZ0N6QUVoQkNBREVCRU1CZ3NDUUNBRklBaEJBaEFtSWdjRVFDQUZJQWNRZHcwQklBVWdCeENPQVEwQkN5QUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFiempDeEFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0dDeUFGSUFNUVJTQUZJQWNRUlVZTkJTQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFlU0dEQkFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0ZDd0pBSUFVZ0F4Qy9BZzBBSUFVZ0F4REVCUTBBSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQU5CbVpzTUVBNGFJQU1nQWhBcEVBNGFJQUVvQXN3QklRUWdBeEFSREFVTEFrQWdCU0FJUVFJUUppSUhCRUFnQlNBSEVIY05BU0FGSUFjUWpnRU5BUXNnQVVFUWFpSURJQVZCY2lBSUVCQWdBMEdMNHdzUURob2dBeUFDRUNrUURob2dBU2dDekFFaEJDQURFQkVNQlFzZ0JTQURFRVVnQlNBSEVFVkhCRUFnQVVFUWFpSURJQVZCY2lBSUVCQWdBMEhiaFF3UURob2dBeUFDRUNrUURob2dBU2dDekFFaEJDQURFQkVNQlFzZ0JTQUlRUU1RSmlBSFJnMEVJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkJ2cEVNRUE0YUlBTWdBaEFwRUE0YUlBRW9Bc3dCSVFRZ0F4QVJEQVFMQWtBZ0JTQURFTDhDRFFBZ0JTQURFTVFGRFFBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBHWm13d1FEaG9nQXlBQ0VDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUJBc2dCU0FJUVFJUUppQURSZ1JBSUFVZ0NFRURFQ1lnQTBZTkJBc2dBVUVRYWlJRElBVkJjaUFJRUJBZ0EwSDRvQXdRRGhvZ0F5QUNFQ2tRRGhvZ0FTZ0N6QUVoQkNBREVCRU1Bd3NDUUNBRklBTVF2d0lOQUNBRklBTVF4QVVOQUNBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUVptYkRCQU9HaUFEUWFnQkVDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUF3c2dCU0FJUVFJUUppQURSZzBDSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQU5CMnFFTUVBNGFJQU5CcUFFUUtSQU9HaUFCS0FMTUFTRUVJQU1RRVF3Q0N5QUZJQU1RSUNJQ1JRMENJQVV0QUtrRElRY2dBVUdwQVRZQ0RDQUJJQWcyQWdnZ0FTQUhPZ0FFSUFFZ0JUWUNBRUVCSVFrQ1FBSkFBa0FDUUFKQUFrQWdBaThCSGtFVWF3NE5CUVVGQkFJQkFRRUNBd0lEQUFNTElBVW9BcEFERFFRZ0JTMEFwQU1OQkNBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWZHNkNSQU9HaUFEUWJmMEFSQU9HaUFCS0FMTUFTRUVJQU1RRVF3R0N5QUZRWUFCYWtHT0toQm9EUU1nQVVFUWFpSURJQVZCY2lBSUVCQWdBMEdqdXdrUURob2dBMEh4emdVUURob2dBU2dDekFFaEJDQURFQkVNQlFzZ0J3MENDeU1BUWNBQmF5SURKQUFnQXlBQktBSUFRWElnQVNnQ0NCQVFJQU5CMHZJSkVBNGFJQU5CcjkwRFFielFBU0FCTFFBRUd4QU9HaUFEUWZxY0RCQU9HaUFESUFFb0Fnd1FnUUVRRGhvZ0F5Z0N2QUVoQkNBREVCRWdBMEhBQVdva0FBd0RDeUFDS0FJQUtBSU1JUWtMSUFVZ0NFRUNFQ1loQWlBRklBaEJBeEFtSVFZZ0JTQUlRUVFRSmlFTEFrQWdBZ1JBSUFVZ0FoQy9BZzBCSUFVZ0FoREVCUTBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUVkvOEN4QU9HaUFEUWFrQkVDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUFnc0NRQ0FGSUFJUVJTQUpSZzBBSUFjRVFDQUZJQUlReEFWRkRRRUxJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkJuNFlNRUE0YUlBTkJxUUVRS1JBT0dpQUJLQUxNQVNFRUlBTVFFUXdDQ3lBRElBWkdJQU1nQzBaeERRRWdBVUVRYWlJRElBVkJjaUFJRUJBZ0EwSExvQXdRRGhvZ0EwR3BBUkFwRUE0YUlBRW9Bc3dCSVFRZ0F4QVJEQUVMQWtBZ0JTQURFTDhDRFFBZ0JTQURFTVFGRFFBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBHWm13d1FEaG9nQXlBQ0VDa1FEaG9nQVNnQ3pBRWhCQ0FERUJFTUFRc2dCU0FJUVFJUUppRUhJQVVnQ0VFREVDWWhCZ0pBSUFjRVFDQUZJQWNRVUEwQklBVWdCeEMyQVEwQkN5QUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFaL2dDeEFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0JDeUFGSUFNUVJTQUZJQWNRUlVjRVFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFkamZCQkFPR2lBRFFaNkhEQkFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0JDd0pBSUFZRVFDQUZJQVlRVUEwQklBVWdCaEMyQVEwQkN5QUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFaL2dDeEFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0JDeUFGSUFNUVJTQUZJQVlRUlVjRVFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFkamZCQkFPR2lBRFFaNkhEQkFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRd0JDeUFGSUFjUVBpQUZJQVlRUGtZTkFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFaQ0lEQkFPR2lBRElBSVFLUkFPR2lBQktBTE1BU0VFSUFNUUVRc2dBVUhRQVdva0FDQUVEQUVMUVpzdlFZcWVBa0dZQVVIdmxBRVFBQUFMSWdFTkJ5TUFRYUFDYXlJREpBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUlMd0VlUWZVQmF3NEtBQVVMQ3dFQ0JBc0xBd3NMSUFnb0FnUWdDQ2dDQUd0QkFuVkJBMnNpQjBFQmNRUkFJQU5CNEFCcUlnRWdCVUYySUFnUUVDQUJRZWl4QnhBT0dpQURLQUtjQWlFQ0lBRVFFUXdLQ3lBSUtBSThJUVFnQlNBSUtBSWtFSjBIQkVBZ0EwSGdBR29pQVNBRlFYSWdDQkFRSUFGQm9QTURFQTRhSUFNb0Fwd0NJUUlnQVJBUkRBb0xBa0FnQlNBSUtBSWtFSUVGUlEwQUlBVW9BcEFERFFBZ0JTMEFwQU1OQUNBRFFlQUFhaUlCSUFWQmNpQUlFQkFnQVVHTXZBa1FEaG9nQVVHMzlBRVFEaG9nQXlnQ25BSWhBaUFCRUJFTUNnc2dCU0FJS0FJa0VDQWlBVVVOQlFKQUlBVW9BZ1F0QUN3TkFDQUJMd0VlSVFFZ0JVR0FBV3BCamlvUWFBMEFJQUZCRzBjRVFDQUJRUmxyUVFGTERRRWdCU2tEZ0FGQ0FvTlFEUUVMSUFOQjRBQnFJZ1FnQlVGMklBZ1FFQ0FFUWRXOEFoQU9HaUFFSUFFUUtSQU9HaUFES0FLY0FpRUNJQVFRRVF3S0N5QURRUUEyQWxnZ0EwSUFOd05RSUFRb0FoUWhBU0FFS0FJUUlRSURRQ0FCSUFKSEJFQWdBeUFDS0FJQUtBSUFOZ0pnSUFKQkJHb2hBaUFEUWRBQWFpQURRZUFBYWhEZkFnd0JDd3NnQXlnQ1VDQURLQUpVRVB3S0lBTkIwQUJxSUFNb0FsQWdBeWdDVkJEcERTQURLQUpVRU9nTklBZEJBWFlpQWlBREtBSlVJQU1vQWxCclFRSjFSd1JBSUFOQjRBQnFJZ0VnQlVGMklBZ1FFQ0FCUWIvOUNCQU9HaUFCSUFJUUlSb2dBVUhwK1FnUURob2dBU0FFS0FJVUlBUW9BaEJyUVFKMUVDRWFJQUZCK0pjSUVBNGFJQU1vQXB3Q0lRSWdBUkFSREFrTElBTkJRR3RDQURjREFDQURRZ0EzQXpnZ0EwR0FnSUQ4QXpZQ1NFRURJUUlEUUNBSUtBSUVJQWdvQWdBaUFXdEJBblVnQWswRVFFRUFJUUlNQ1FzZ0F5QUJJQUpCQW5ScUtBSUFJZ0UyQWpRQ1FDQUNRUUZ4QkVBZ0JTQUJFTTBDSWdrZ0NDZ0NKRVlOQVNBRFFlQUFhaUlCSUFWQmRpQUlFQkFnQVVIUXpRc1FEaG9nQTBFb2FpSUVJQVVnQ0NnQ0pCQXFJQUVnQkJBU0dpQUJRYmpNQ3hBT0dpQURRUmhxSWdjZ0JTQURLQUkwRUNvZ0FTQUhFQklhSUFGQjRzOExFQTRhSUFOQkNHb2lCaUFGSUFrUUtpQUJJQVlRRWhvZ0FVSDhsd2dRRGhvZ0F5Z0NuQUloQWlBR0VBOGFJQWNRRHhvZ0JCQVBHaUFCRUJFTUNnc2dCU0FCRUhCQitBRkhCRUFnQTBIZ0FHb2lBU0FGUVhZZ0NCQVFJQUZCeGNzTEVBNGFJQU5CS0dvaUJDQUZJQU1vQWpRUUtpQUJJQVFRRWhvZ0FVRzE1Z2NRRGhvZ0F5Z0NuQUloQWlBRUVBOGFJQUVRRVF3S0N5QURLQUpRSVFFZ0F5Z0NWQ0VHSXdCQkVHc2lDeVFBSUFZZ0FXdEJBblVoQnlBREtBSTBJUXdEUUNBSEJFQWdCeUFIUVFGMklnbEJmM05xSUFrZ0FTQUpRUUowYWlJSktBSUFJQXhKSWhFYklRY2dDVUVFYWlBQklCRWJJUUVNQVFzTElBWWdBVVlFZjBFQUJTQURLQUkwSUFFb0FnQlBDeUVCSUF0QkVHb2tBQ0FCUlFSQUlBTkI0QUJxSWdFZ0JVRjJJQWdRRUNBQlFjWExDeEFPR2lBRFFTaHFJZ2NnQlNBREtBSTBFQ29nQVNBSEVCSWFJQUZCZ2N3TEVBNGFJQU5CR0dvaUJpQUZJQVFvQWdBUUtpQUJJQVlRRWhvZ0FVSDhsd2dRRGhvZ0F5Z0NuQUloQWlBR0VBOGFJQWNRRHhvZ0FSQVJEQW9MSUFOQk9Hb2dBMEUwYWhDcEFnUkFJQU5CNEFCcUlnRWdCVUYySUFnUUVDQUJRWm5MQ3hBT0dpQURRU2hxSWdRZ0JTQURLQUkwRUNvZ0FTQUVFQklhSUFGQjZiUUhFQTRhSUFNb0Fwd0NJUUlnQkJBUEdpQUJFQkVNQ2dzZ0EwSGdBR29nQTBFNGFpQURRVFJxRUpZQkN5QUNRUUZxSVFJTUFBc0FDeUFGSUFoQkFCQWJFQ0FpQVFSQUlBRXZBUjVCK0FGR0RRb0xJQU5CNEFCcUlnRWdCVUYySUFnUUVDQUJRWlhKQWhBT0dpQURLQUtjQWlFQ0lBRVFFUXdJQ3dKQUFrQWdDQ2dDRUNBSUtBSU1hMEVFZFVFRGF3NERBUUFCQUFzZ0EwSGdBR29pQVNBRlFYWWdDQkFRSUFGQjNKZ0JFQTRhSUFNb0Fwd0NJUUlnQVJBUkRBZ0xBa0FDUUNBRklBaEJBQkFiRUNBaUFVVU5BQ0FCS0FJa0lnRkZEUUFnQlNBQkVMOENEUUVMSUFOQjRBQnFJZ0VnQlVGMklBZ1FFQ0FCUWFLS0JCQU9HaUFES0FLY0FpRUNJQUVRRVF3SUN3SkFJQVVnQ0VFQkVCc2lBUkFnSWdJRVFDQUNMd0VlUWZnQlJnMEJDeUFEUWVBQWFpSUJJQVZCZGlBSUVCQWdBVUhneHdJUURob2dBeWdDbkFJaEFpQUJFQkVNQ0FzQ1FDQUZJQWhCQWhBYklnSVFJQ0lFQkVBZ0JDOEJIa0g0QVVZTkFRc2dBMEhnQUdvaUFTQUZRWFlnQ0JBUUlBRkJ1c2dDRUE0YUlBTW9BcHdDSVFJZ0FSQVJEQWdMSUFFZ0FrY05DQ0FGS0FJVVFZQ01CRWtOQ0NBRFFlQUFhaUlCSUFWQmRpQUlFQkFnQVVHT3F3RVFEaG9nQXlnQ25BSWhBaUFCRUJFTUJ3c0NRQ0FGSUFoQkFCQWJJZ1FRSUNJQ0JFQWdBaWdDSkNJQkRRRUxJQU5CNEFCcUlnRWdCVUYySUFnUUVDQUJRZDNNQ3hBT0dpQURRVGhxSWdjZ0JTQUVFQ29nQVNBSEVCSWFJQUZCa09rSEVBNGFJQU1vQXB3Q0lRSWdCeEFQR2lBQkVCRU1Cd3NDUUNBRklBRVFJQ0lCQkVBZ0FTOEJIa0VUUncwQkN5QURRZUFBYWlJQklBVkJkaUFJRUJBZ0FVR2d6Z3NRRGhvZ0EwRTRhaUlFSUFVZ0FpZ0NKQkFxSUFFZ0JCQVNHaUFCUWR6OEJ4QU9HaUFES0FLY0FpRUNJQVFRRHhvZ0FSQVJEQWNMQWtBZ0JTZ0NrQU1OQUNBQkx3RWVRU0JIRFFBZ0JTMEFwQU1OQUNBRktBSUVMUUFsRFFBZ0EwSGdBR29pQVNBRlFYWWdDQkFRSUFGQm9NNExFQTRhSUFOQk9Hb2lCQ0FGSUFJb0FpUVFLaUFCSUFRUUVob2dBVUd2NVFjUURob2dBeWdDbkFJaEFpQUVFQThhSUFFUUVRd0hDeUFGSUFnb0FqZ29BZ2dRSUNJQ0JFQWdBaWdDS0NBQktBSW9SZzBJQ3lBRFFlQUFhaUlCSUFWQmRpQUlFQkFnQVVIZHpBc1FEaG9nQTBFNGFpSUhJQVVnQkJBcUlBRWdCeEFTR2lBQlFaWHhCeEFPR2lBREtBS2NBaUVDSUFjUUR4b2dBUkFSREFZTElBZ29BaEFoQVNBSUtBSU1JUUlnQlNBRklBaEJBQkFtRUZCRkJFQWdBMEhnQUdvaUFTQUZRWFlnQ0JBUUlBRkJ5dU1BRUE0YUlBTW9BcHdDSVFJZ0FSQVJEQVlMSUFVZ0NFRUJFQnNRSUM4QkhrSDRBVWNOQWlBQklBSnJRUVIxSVFGQkFpRUNBMEFnQVNBQ1RRMEhJQVVnQ0NBQ1FRRnlFQnNRSUNJRUJFQWdBa0VDYWlFQ0lBUXZBUjVCK0FGR0RRRUxDeUFEUWVBQWFpSUJJQVZCZGlBSUVCQWdBVUdWeHdJUURob2dBeWdDbkFJaEFpQUJFQkVNQlFzQ1FDQUZJQWhCQUJBYklnSVFJQ0lCQkVBZ0FTOEJIa0g0QVVZTkFRc2dBMEhnQUdvaUFTQUZRWFlnQ0JBUUlBRkJtcU1LRUE0YUlBTkJPR29pQkNBRklBSVFLaUFCSUFRUUVob2dBVUd6a2dNUURob2dBeWdDbkFJaEFpQUVFQThhSUFFUUVRd0ZDeUFJS0FJOEtBSUFJQUpHQkVBZ0EwSGdBR29pQVNBRlFYWWdDQkFRSUFGQjF2SU1FQTRhSUFNb0Fwd0NJUUlnQVJBUkRBVUxBa0FnQlNBSVFRRVFHeUlFRUNBaUFRUkFJQUV2QVI1QitBRkdEUUVMSUFOQjRBQnFJZ0VnQlVGMklBZ1FFQ0FCUWF6UENSQU9HaUFEUVRocUlnY2dCU0FFRUNvZ0FTQUhFQklhSUFGQnM1SURFQTRhSUFNb0Fwd0NJUUlnQnhBUEdpQUJFQkVNQlFzZ0FpQUVSZ1JBSUFOQjRBQnFJZ0VnQlVGMklBZ1FFQ0FCUVpqQ0FSQU9HaUFES0FLY0FpRUNJQUVRRVF3RkN5QUlRUUlRR3lJQlFRTnhRUU5HQkVBZ0EwSGdBR29pQVNBRlFYSWdDQkFRSUFGQjhmc0VFQTRhSUFNb0Fwd0NJUUlnQVJBUkRBVUxBa0FnQVVFQ2NVVU5BQ0FCUVlBQmNRUkFJQU5CNEFCcUlnRWdCVUZ5SUFnUUVDQUJRZXI2QkJBT0dpQURLQUtjQWlFQ0lBRVFFUXdHQ3lBQlFZQUNjVVVOQUNBRFFlQUFhaUlCSUFWQmNpQUlFQkFnQVVHcyt3UVFEaG9nQXlnQ25BSWhBaUFCRUJFTUJRc2dBVUhBQUhGRkRRVWdBVUVGZGtFQmNTQUJRUVIyUVFGeGFrRUVRUU1nQVVFSWNSdHFJZ0VnQ0NnQ0VDQUlLQUlNYTBFRWRVMEVRQ0FJSUFFUUd3MEdDeUFEUWVBQWFpSUJJQVZCY2lBSUVCQWdBVUhNdndJUURob2dBeWdDbkFJaEFpQUJFQkVNQkF0Qm15OUJnNnNDUWNJQVFhT2hBeEFBQUFzZ0EwSGdBR29pQVNBRlFYWWdDQkFRSUFGQjQ4a0NFQTRhSUFNb0Fwd0NJUUlnQVJBUkRBSUxJQU5CT0dvUVR3c2dBMEhRQUdvUU1ob0xJQUlOQVF0QkFDRUNDeUFEUWFBQ2FpUUFJQUlpQVEwSFFRQWhBaU1BUWZBQmF5SUJKQUFDUUNBSUx3RWVJZ05CendGclFRaExEUUFnQlNBSUtBSWtJZ1FRcmdGRkJFQWdBVUV3YWlJRUlBVkJjaUFJRUJBZ0JFSEFqQXdRRGhvZ0JDQURFQ2tRRGhvZ0FTZ0M3QUVoQWlBRUVCRU1BUXNnQlNBRVFSWkJJQkNHQkVVRVFDQUJRVEJxSWdNZ0JVRnlJQWdRRUNBRFFlQ0lBUkFPR2lBQktBTHNBU0VDSUFNUUVRd0JDeUFGSUFoQkFoQW1JQVJHQkVBZ0JTQUlLQUk0S0FJQUVKOEJJUWNnQVNBRE5nSWNJQUZCNUlZZ05nSVlJQUVnQVVFWWFpSUVOZ0lvSUFkQm9BTnFJQVFRelFFZ0JCQVdJQVVnQ0NnQ09DZ0NBQkNmQVNFRUlBRWdBellDQkNBQlFZaUhJRFlDQUNBQklBRTJBaEFnQkVHc0Eyb2dBUkROQVNBQkVCWU1BUXNnQVVFd2FpSUVJQVZCY2lBSUVCQWdCRUczb3d3UURob2dCQ0FERUNrUURob2dBU2dDN0FFaEFpQUVFQkVMSUFGQjhBRnFKQUFnQWlJQkRRZEJBQ0VCSXdCQjRBRnJJZ0lrQUFKQUlBZ3ZBUjRpQkVIakFXdEJFRWtnQkVHK0FtdEJBa2x5SUFSQjdpdHJRUUpKY2tVZ0JFR1RMMGR4RFFBZ0NDZ0NKQ0VIQWtBQ1FBSkFJQVJCN2l0clFRSlBCRUFnQkVIa0FVWWdCRUcvQWtaeURRTWdCRUdUTDBjTkFRc2dCU0FIRUhjTkFTQUNRU0JxSWdNZ0JVRnlJQWdRRUNBRElBUVFLUkFPR2lBRFFidUVCQkFPR2lBQ0tBTGNBU0VCSUFNUUVRd0RDeUFFUWVZQmEwRU1TdzBBSUFVZ0J4QlFEUUFnQWtFZ2FpSURJQVZCY2lBSUVCQWdBeUFFRUNrUURob2dBMEhJaFFRUURob2dBaWdDM0FFaEFTQURFQkVNQWdzQ1FDQUVRZU1CYTBGOWNRMEFJQVVnQnhCM0RRQWdCU0FIRUZBTkFDQUNRU0JxSWdNZ0JVRnlJQWdRRUNBRElBUVFLUkFPR2lBRFFZR0VCQkFPR2lBQ0tBTGNBU0VCSUFNUUVRd0NDeUFFUWI0Q1J3MEFJQVVnQnhDL0FnMEFJQUpCSUdvaUF5QUZRWElnQ0JBUUlBTWdCQkFwRUE0YUlBTkJub1lFRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQUVMSUFVZ0NFRUNRUUFnQkVIa0FVY2dCRUcvQWtkeEd5SUdFQ1loQVNBQ1FRQTJBaHdnQlNBQklBSkJIR29nQWtFWWFoQ0lBa1VFUUNBQ1FTQnFJZ01nQlVGeUlBZ1FFQ0FESUFRUUtSQU9HaUFEUWREZEFSQU9HaUFDS0FMY0FTRUJJQU1RRVF3QkN3SkFJQVVnQWlnQ0hCQlFSUTBBSUFVZ0FpZ0NIQkErUWNBQVJ3MEFJQVV0QUlFQlFSQnhEUUFnQWtFZ2FpSURJQVZCY2lBSUVCQWdBeUFFRUNrUURob2dBMEdtREJBT0dpQUNLQUxjQVNFQklBTVFFUXdCQ3lBQ0tBSVlJZ0ZCREUxQkFFRUJJQUYwUWJRN2NSc2dBVUhsS1VZZ0FVR2FLa1p5Y2tVRVFDQUNRU0JxSWdNZ0JVRnlJQWdRRUNBRElBUVFLUkFPR2lBRFFmcTBCeEFPR2lBQ0tBTGNBU0VCSUFNUUVRd0JDd0pBSUFVdEFJQUJRUUp4UlEwQUlBVW9BZ0FvQWdBUVJ5RURJQUlvQWhnaEFRSkFJQU1FUUFKQUFrQWdBVUVDYXc0REF3RURBQXNnQVVIbEtVWWdBVUVMYTBFQ1NYSWdBVUdhS2taeURRSUxJQUpCSUdvaUF5QUZRWElnQ0JBUUlBSkJDR29pQnlBRlFjNGtFRGNnQXlBSEVCSWFJQU1nQkJBcEVBNGFJQU5Ccll3SUVBNGFJQUlvQXR3QklRRWdCeEFQR2lBREVCRU1Bd3NnQVVFSFJ3MEFJQUpCSUdvaUF5QUZRWElnQ0JBUUlBTWdCQkFwRUE0YUlBTkJvWUlJRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQUlMSUFWQmdBRnFJUUVnQkVHVEwwWUVRQUpBSUFVZ0J4QStRUkJIRFFBZ0FVSFBMeEJvRFFBZ0FrRWdhaUlESUFWQmNpQUlFQkFnQTBHVEx4QXBFQTRhSUFOQjRSQVFEaG9nQWlnQzNBRWhBU0FERUJFTUF3c0NRQ0FGSUFjUVBrRWdSdzBBSUFGQmtTOFFhQTBBSUFKQklHb2lBeUFGUVhJZ0NCQVFJQU5Ca3k4UUtSQU9HaUFEUWVFUUVBNGFJQUlvQXR3QklRRWdBeEFSREFNTElBVWdCeEErUWNBQVJ3MEJJQUZCa2k4UWFBMEJJQUpCSUdvaUF5QUZRWElnQ0JBUUlBTkJreThRS1JBT0dpQURRYUlRRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQUlMSUFSQi92OERjVUh1SzBjTkFBSkFJQVVnQnhBK1FSQkhEUUFnQVVId0t4Qm9EUUFnQWtFZ2FpSURJQVZCY2lBSUVCQWdBeUFFRUNrUURob2dBMEhRRGhBT0dpQUNLQUxjQVNFQklBTVFFUXdDQ3dKQUlBVWdCeEErUVNCSERRQWdBVUhzS3hCb0RRQWdBa0VnYWlJRElBVkJjaUFJRUJBZ0F5QUVFQ2tRRGhvZ0EwSGNEeEFPR2lBQ0tBTGNBU0VCSUFNUUVRd0NDeUFGSUFjUVBrSEFBRWNOQUNBQlFlMHJFR2dOQUNBQ1FTQnFJZ01nQlVGeUlBZ1FFQ0FESUFRUUtSQU9HaUFEUVpZUEVBNGFJQUlvQXR3QklRRWdBeEFSREFFTEFrQWdCU2dDQUNnQ0FCQ21Ca1VOQUNBQ0tBSVlJZ0ZCQ0UxQkFFRUJJQUYwUWJBRGNSdEZCRUFnQWtFZ2FpSURJQVZCY2lBSUVCQWdBeUFFRUNrUURob2dBMEdLb1FjUURob2dBaWdDM0FFaEFTQURFQkVNQWdzZ0JTZ0NBQ2dDQUVFTFJ5QUJRUWhIY2cwQUlBSkJJR29pQXlBRlFYSWdDQkFRSUFOQnhza0FFQTRhSUFJb0F0d0JJUUVnQXhBUkRBRUxBa0FnQkVIKy93TnhJZ2xCdmdKR0JFQWdCU0FDS0FJY0VGQUVRQ0FGSUFJb0Fod1FQa0VnUmcwQ0N5QUNRU0JxSWdNZ0JVRnlJQWdRRUNBRElBUVFLUkFPR2lBRFFlZUFCQkFPR2lBQ0tBTGNBU0VCSUFNUUVRd0NDeUFDS0FJY0lRRWdCRUhrQVVZRVFDQUZJQUVRZHcwQklBVWdBaWdDSEJCUURRRWdBa0VnYWlJRElBVkJjaUFJRUJBZ0EwSGtBUkFwRUE0YUlBTkIvOUFKRUE0YUlBTkJySWNFRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQUlMSUFFZ0IwWU5BQ0FDUVNCcUlnTWdCVUZ5SUFnUUVDQURJQVFRS1JBT0dpQURRYStvQkJBT0dpQUNLQUxjQVNFQklBTVFFUXdCQ3lBRklBZ2dDQ0FHUVFGeUVCc2lDeERJQlNJQkRRQWdCU0FJSUFaQkFtb2lEQ0FMRUtzSUlnRU5BQ0FHUVFOcUlRTUNRQ0FKUWVZQlJ3UkFJQU1oQVF3QkN5QUZJQWdnQXlBTEVLc0lJZ0VOQVNBR1FRUnlJUUVnQWtFZ2FpSUdJQVVnQ0NBTUVCc1EzUUVnQWlnQ0pDRUxJQUl0QUNFaERDQUdJQVVnQ0NBREVCc1EzUUVnREVVTkFDQUNMUUFoUlEwQUlBSW9BaVFnQzNOQmdJQUNjVVVOQUNBQ1FTQnFJZ01nQlVGMklBZ1FFQ0FEUWRUQ0FSQU9HaUFDS0FMY0FTRUJJQU1RRVF3QkN3SkFBa0FDUUFKQUFrQUNRQ0FFUWVNQmF3NEhBZ01CQVFFQ0FnQUxJQVJCdmdKclFRSkpEUUVMSUFVZ0NDQUJFQ1lnQjBjTkFpQUJRUUZxSVFFTElBbEI1Z0ZIRFFJZ0JTQUlJQUVRSmlBSFJnMENJQUpCSUdvaUF5QUZRWElnQ0JBUUlBTWdCQkFwRUE0YUlBTkI2cWdFRUE0YUlBSW9BdHdCSVFFZ0F4QVJEQU1MSUFVZ0NFRURFQ1lnQWlnQ0hFWU5BU0FDUVNCcUlnTWdCVUZ5SUFnUUVDQURRZVFCRUNrUURob2dBMEhrc1FRUURob2dBaWdDM0FFaEFTQURFQkVNQWdzZ0FrRWdhaUlESUFWQmNpQUlFQkFnQXlBRUVDa1FEaG9nQTBHYXFRUVFEaG9nQWlnQzNBRWhBU0FERUJFTUFRdEJBQ0VCQ3lBQ1FlQUJhaVFBSUFFTkJ5TUFRZEFCYXlJQkpBQWdDQzhCSGlJRFFkb0JhMEVEVFFSQUlBVWdDQ2dDT0NnQ0FCQ2ZBU0VDSUFFZ0FVSEFBV29nQXhBcEVCUWlCRUd3Z1FNUUxTQUNRUU1nQVJESEJDQUJFQThhSUFRUUR4b0xRUUFoQkFKQUlBTkIvdjhEY1VIY0FVY05BQ0FGSUFVZ0NDZ0NBQ2dDQkNJQ0VNMENFRkJGQkVBZ0FTQUZRWElnQ0JBUUlBRWdBeEFwRUE0YUlBRkJtWVFDRUE0YUlBRW9BcndCSVFRZ0FSQVJEQUVMSUFVZ0FoQndFS01DRFFBZ0FTQUZRWElnQ0JBUUlBRWdBeEFwRUE0YUlBRkJ0Y1lDRUE0YUlBRW9BcndCSVFRZ0FSQVJDeUFCUWRBQmFpUUFJQVFpQVEwSEl3QkI0QUZySWdNa0FBSkFBa0FDUUFKQUFrQUNRQUpBSUFndkFSNGlBVUhnQVdzT0FnRUNBQXNnQVVISUFtc09BZ0lEQkFzZ0JTZ0NGRUgvaFFSTkJFQWdCU0FJS0FJNEtBSUFFSjhCSVFJZ0EwSGc4QjgyQXNnQklBTWdBMEhJQVdvaUFUWUMyQUVnQWtHZ0Eyb2dBUkROQVNBQkVCWUxJQWdvQWdBaUFTZ0NDQ0VDSUFVZ0NDQUJLQUlFRU1rTklnRU5CQ0FGSUFnZ0FoRElCU0lCRFFRZ0JTQUlRUUlnQWhDckNDSUJSUTBEREFRTElBVWdDQ0FJS0FJQUtBSUVJZ0lReUFVaUFRMERJQVVnQ0VFQklBSVFxd2dpQVVVTkFnd0RDeUFGSUFnb0FpUVFjRUhIQWtjRVFDQURRUWhxSWdJZ0JVRnlJQWdRRUNBQ1FjZ0NFQ2tRRGhvZ0FrR2g2d0VRRGhvZ0F5Z0N4QUVoQVNBQ0VCRU1Bd3NnQlNBRklBaEJBaEFtSWdFUVVBUkFJQVVnQVJBK1FTQkdEUUlMSUFOQkNHb2lBaUFGUVhJZ0NCQVFJQUpCeUFJUUtSQU9HaUFDUWQ4K0VBNGFJQU1vQXNRQklRRWdBaEFSREFJTElBVWdCU0FJUVFBUUpoQndRY2NDUndSQUlBTkJDR29pQWlBRlFYSWdDQkFRSUFKQnlRSVFLUkFPR2lBQ1FlZnFBUkFPR2lBREtBTEVBU0VCSUFJUUVRd0NDeUFGSUFnZ0NDZ0NBQ2dDQ0NJQ0VNZ0ZJZ0VOQVNBRklBaEJBaUFDRUtzSUlnRU5BUXRCQUNFQkN5QURRZUFCYWlRQUlBRU5CeU1BUWRBQmF5SUJKQUFDUUNBSUx3RWVJZ01RaVE0RVFDQUZJQWdnQ0NnQ0FDZ0NEQkRKRFNJQ0RRRUxRUUFoQWlBRFFjOGlSd1JBSUFOQjFnSkhEUUVnQlNBSUtBSWtFTzhCUlFSQUlBRkJFR29pQXlBRlFYSWdDQkFRSUFOQnBzNEhFQTRhSUFFb0Fzd0JJUUlnQXhBUkRBSUxBa0FnQlNBRklBaEJCQkFiRUNBb0FpUWlBeENjQndSQUlBVWdBeEJGUVFSR0RRRUxJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkI1bzRDRUE0YUlBRW9Bc3dCSVFJZ0F4QVJEQUlMSUFoQkF4QWJJUU1nQlNnQ0FDZ0NBQkJIUlNBRFFRTkpjZzBCSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQUVnQlVITkpCQTNJQU1nQVJBU0dpQURRZS9aQnhBT0dpQUJLQUxNQVNFQ0lBRVFEeG9nQXhBUkRBRUxBa0FnQlNBSUtBSWtJZ01ReHdFTkFDQUZJQU1RcmdFTkFDQUZJQU1RdXhVTkFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFmVHhCeEFPR2lBQktBTE1BU0VDSUFNUUVRd0JDeUFGSUFoQkF4QWJFTTBDSUFOSEJFQWdBVUVRYWlJRElBVkJjaUFJRUJBZ0EwR3Q2UWNRRGhvZ0FTZ0N6QUVoQWlBREVCRU1BUXNnQlNBRklBaEJCQkFiRU0wQ0VPOEJSUVJBSUFGQkVHb2lBeUFGUVhJZ0NCQVFJQU5CeXBZSUVBNGFJQUVvQXN3QklRSWdBeEFSREFFTElBZ29BZ1FnQ0NnQ0FHdEJHVWtOQUNBRklBVWdDRUVGRUJzaUF4RE5BaER2QVVVRVFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFmMlZDQkFPR2lBQktBTE1BU0VDSUFNUUVRd0JDeUFGSUFNZ0FSRERCVVVFUUNBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWEzU0J4QU9HaUFCS0FMTUFTRUNJQU1RRVF3QkN5QUJLUU1BZTBJQlVRMEFJQUZCRUdvaUF5QUZRUU1nQ0JBUUlBTkJ1cFFJRUE0YUlBRW9Bc3dCSVFJZ0F4QVJDeUFCUWRBQmFpUUFJQUlpQVEwSEFuOUJBQ0VDUVFBaEJpTUFRY0FCYXlJQkpBQWdDQ2dDRUNBSUtBSU1JZ2RyUVFSMUlRa0RRQUpBSUFJZ0NVY0VRQ0FISUFKQkJIUnFJZ01vQWdnaUMwRUJhMEVDU3cwQklBTW9BZ3hCSDNFaUJFVU5BU0FJS0FJQUlBTXZBUUFnQXk4QkFtcEJBblJxUVFScktBSUFJZ05CZnlBRWRDSU1jVUVBSUFNZ0JFRUJhM1pCQVhGcklBeHhRUUFnQzBFQ1JodEdEUUVnQVNBRlFYa2dDQkFRSUFGQjFNa0xFQTRhSUFFZ0NDZ0NLQkFoR2lBQlFiVHNEQkFPR2lBQlFjZnREQkFPR2lBQlFibUdCeEFPR2lBQktBSzhBU0VHSUFFUUVRc2dBVUhBQVdva0FDQUdEQUlMSUFKQkFXb2hBZ3dBQ3dBTElnRU5CeU1BUWRBQmF5SUJKQUFnQ0NnQ0pDRURBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ0M4QkhpSUVRWUF2YXc0UkFnTUNBd01EQXdNRkFRRUVCQVFFQmdZQUN3SkFBa0FDUUNBRVFma2lhdzRIQUFFQ0FRTUtCUW9MSUFVZ0NFRUFFSUlGSWdJTkNpQUZJQVVnQ0VFQkVDWVFjRUhkS1VjRVFDQUJRUkJxSWdNZ0JVRnlJQWdRRUNBRFFaRDFCUkFPR2lBQktBTE1BU0VDSUFNUUVRd0xDd0pBSUFVZ0JTQUlRUUlRSmlJREVGQUVRQ0FGSUFNUVBrRWdSZzBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWVLQkFoQU9HaUFCS0FMTUFTRUNJQU1RRVF3TEN3SkFJQVVnQlNBSVFRTVFKaUlERUZBRVFDQUZJQU1RUGtFZ1JnMEJDeUFCUVJCcUlnTWdCVUZ5SUFnUUVDQURRYTZDQWhBT0dpQUJLQUxNQVNFQ0lBTVFFUXdMQ3dKQUFrQWdCU0FGSUFoQkJCQW1JZ01RamdGRkRRQWdCU0FERUVWQkEwY05BQ0FGSUFNUVBrRWdSZzBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUVpMS0FSQU9HaUFCS0FMTUFTRUNJQU1RRVF3TEN3SkFJQVVnQlNBSVFRVVFKaUlERUhjRVFDQUZJQU1RUGtFZ1JnMEJDeUFCUVJCcUlnTWdCVUZ5SUFnUUVDQURRYVdMQWhBT0dpQUJLQUxNQVNFQ0lBTVFFUXdMQ3dKQUFrQWdCU0FGSUFoQkJoQW1JZ01RamdGRkRRQWdCU0FERUVWQkEwY05BQ0FGSUFNUVBrRWdSZzBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWRySkFSQU9HaUFCS0FMTUFTRUNJQU1RRVF3TEN5QUZJQVVnQ0VFSEVDWWlBeEIzQkVBZ0JTQURFRDVCSUVZTkNnc2dBVUVRYWlJRElBVkJjaUFJRUJBZ0EwSCtpZ0lRRGhvZ0FTZ0N6QUVoQWlBREVCRU1DZ3NnQlNBSVFRQVFnZ1VpQWtVTkNBd0pDeUFGSUFoQkFCQ0NCU0lDRFFnZ0JTQUZJQWhCQVJBbUlnTVFkd1JBSUFVZ0F4QStRU0JHRFFnTElBRkJFR29pQXlBRlFYSWdDQkFRSUFOQnpJc0NFQTRhSUFFb0Fzd0JJUUlnQXhBUkRBZ0xJQVVnQ0VFQ0VJSUZJZ0lOQnlBRklBTVF2d0pGQkVBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBHZ2hnUVFEaG9nQVNnQ3pBRWhBaUFERUJFTUNBc2dCRUdKTDBjTkJnd0ZDeUFGSUFoQkFoQ0NCU0lDRFFZQ1FDQUZJQU1RZHdSQUlBVWdBeEErUVNCR0RRRUxJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkIvSUlFRUE0YUlBRW9Bc3dCSVFJZ0F4QVJEQWNMSUFSQmdpOUdEUVFNQlFzZ0JTQUlRUUlRZ2dVaUFnMEZBa0FnQlNBREVGQUVRQ0FGSUFNUVBrRWdSZzBCQ3lBQlFSQnFJZ01nQlVGeUlBZ1FFQ0FEUWV1QkJCQU9HaUFCS0FMTUFTRUNJQU1RRVF3R0N5QUVRWUV2UncwRERBUUxJQVVnQ0VFQ0VJSUZJZ0lOQkFKQUFrQWdCU0FERUk0QlJRMEFJQVVnQXhCRlFRTkhEUUFnQlNBREVENUJJRVlOQVFzZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBIMDlnTVFEaG9nQVNnQ3pBRWhBaUFERUJFTUJRc2dCRUdMTDJ0QkFVME5BZ3dEQ3lBRklBaEJBaENDQlNJQ0RRTWdCU0FJRU13TklnSU5Bd0pBSUFVZ0F4Q09BVVVOQUNBRklBTVFSVUVDUncwQUlBVWdBeEErUVNCR0RRTUxJQUZCRUdvaUF5QUZRWElnQ0JBUUlBTkJ0UGNERUE0YUlBRW9Bc3dCSVFJZ0F4QVJEQU1MSUFVZ0NFRUNFSUlGSWdJTkFpQUZJQWdRekEwaUFnMENJQUZCQURZQ0RDQUJRUUEyQWdnZ0FVRUFOZ0lFSUFGQkFEWUNBQ0FGSUFNZ0FVRU1haUFCUVFocUlBRkJCR29nQVJDbkEwVUVRQ0FCUVJCcUlnTWdCVUZ5SUFnUUVDQURRZjJkQkJBT0dpQUJLQUxNQVNFQ0lBTVFFUXdEQ3lBQktBSUlRUVJIQkVBZ0FVRVFhaUlESUFWQmNpQUlFQkFnQTBHcTlBWVFEaG9nQVNnQ3pBRWhBaUFERUJFTUF3c0NRQ0FGSUFFb0FnQVFkMFVOQUNBRklBTVFQa0VnUncwQUlBRW9BZ3hCQTBZTkFnc2dBVUVRYWlJRElBVkJjaUFJRUJBZ0EwR1VsUUVRRGhvZ0FTZ0N6QUVoQWlBREVCRU1BZ3NnQlNBSUVNd05JZ0lOQVF0QkFDRUNDeUFCUWRBQmFpUUFJQUlpQVEwSFFRQWhBaU1BUVpBQ2F5SUJKQUFDUUFKQUFrQUNRQ0FJTHdFZUlnTkIzU0pyRGdJQUFnRUxJQVVnQ0NnQ09DZ0NBQkNmQVNFRUlBRkJoSTRnTmdMNEFTQUJJQUZCK0FGcUlnTTJBb2dDSUFSQm9BTnFJQU1RelFFZ0F4QVdJQVVnQlNBSVFRQVFKaEJ3UWQwcFJ3UkFJQUZCT0dvaUF5QUZRWElnQ0JBUUlBTkJrUFVGRUE0YUlBRW9BdlFCSVFJZ0F4QVJEQU1MQWtBZ0JTQUZJQWhCQVJBbUlnTVFVQVJBSUFVZ0F4QStRU0JHRFFFTElBRkJPR29pQXlBRlFYSWdDQkFRSUFOQjRvRUNFQTRhSUFFb0F2UUJJUUlnQXhBUkRBTUxBa0FnQlNBRklBaEJBaEFtSWdNUVVBUkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5Ccm9JQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFNTEFrQWdCU0FGSUFoQkF4QW1JZ01RVUFSQUlBVWdBeEErUVNCR0RRRUxJQUZCT0dvaUF5QUZRWElnQ0JBUUlBTkJtb0VDRUE0YUlBRW9BdlFCSVFJZ0F4QVJEQU1MQWtBZ0JTQUZJQWhCQkJBbUlnTVFVQVJBSUFVZ0F4QStRU0JHRFFFTElBRkJPR29pQXlBRlFYSWdDQkFRSUFOQjFJSUNFQTRhSUFFb0F2UUJJUUlnQXhBUkRBTUxBa0FnQlNBRklBaEJCUkFtSWdNUVVBUkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5Cc29BQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFNTEFrQUNRQ0FGSUFVZ0NFRUdFQ1lpQXhDT0FVVU5BQ0FGSUFNUVJVRURSdzBBSUFVZ0F4QStRU0JHRFFFTElBRkJPR29pQXlBRlFYSWdDQkFRSUFOQmtzb0JFQTRhSUFFb0F2UUJJUUlnQXhBUkRBTUxBa0FnQlNBRklBaEJCeEFtSWdNUWR3UkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5CcFlzQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFNTEFrQUNRQ0FGSUFVZ0NFRUlFQ1lpQXhDT0FVVU5BQ0FGSUFNUVJVRURSdzBBSUFVZ0F4QStRU0JHRFFFTElBRkJPR29pQXlBRlFYSWdDQkFRSUFOQjJza0JFQTRhSUFFb0F2UUJJUUlnQXhBUkRBTUxBa0FnQlNBRklBaEJDUkFtSWdNUWR3UkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5CL29vQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFNTElBVWdDRUVLRUJzUUlDSURMd0VlUVR0SEJFQWdBVUU0YWlJRElBVkJjaUFJRUJBZ0EwSGR1d1FRRGhvZ0FTZ0M5QUVoQWlBREVCRU1Bd3NnQTBFQ0VCdEIyaWxHRFFJZ0EwRUNFQnRCM2lsR0RRSWdBVUU0YWlJRElBVkJjaUFJRUJBZ0EwRzErd1VRRGhvZ0FTZ0M5QUVoQWlBREVCRU1BZ3NnQTBIV0tVY05BU0FJS0FJa0lRUWdCU0FJS0FJNEtBSUFFSjhCSVFjZ0FVR29qaUEyQWlBZ0FTQUJRU0JxSWdNMkFqQWdCMEdnQTJvZ0F4RE5BU0FERUJZZ0JTQUVFTDhDUlFSQUlBRkJPR29pQXlBRlFYSWdDQkFRSUFOQm9JWUVFQTRhSUFFb0F2UUJJUUlnQXhBUkRBSUxBa0FnQlNBRklBaEJBaEFtSWdNUWR3UkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5CK29BQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFJTElBVWdCU0FJUVFNUUppSURFTzhCQkVBZ0JTQURFRDVCSUVZTkFnc2dBVUU0YWlJRElBVkJjaUFJRUJBZ0EwR2hpQUlRRGhvZ0FTZ0M5QUVoQWlBREVCRU1BUXNnQlNBSUtBSTRLQUlBRUo4QklRUWdBVUhNamlBMkFnZ2dBU0FCUVFocUlnTTJBaGdnQkVHZ0Eyb2dBeEROQVNBREVCWUNRQ0FGSUFVZ0NFRUFFQ1lpQXhEdkFRUkFJQVVnQXhBK1FTQkdEUUVMSUFGQk9Hb2lBeUFGUVhJZ0NCQVFJQU5CdllVQ0VBNGFJQUVvQXZRQklRSWdBeEFSREFFTElBVWdDRUVCRUJzUUlDSURMd0VlUVR0SEJFQWdBVUU0YWlJRElBVkJjaUFJRUJBZ0EwR0l2QVFRRGhvZ0FTZ0M5QUVoQWlBREVCRU1BUXNnQTBFQ0VCdEIwQ2xHRFFBZ0EwRUNFQnRCMFNsR0RRQWdBVUU0YWlJRElBVkJjaUFJRUJBZ0EwR3IvUVVRRGhvZ0FTZ0M5QUVoQWlBREVCRUxJQUZCa0FKcUpBQWdBaUlCRFFjakFFR3dBbXNpQVNRQUlBZ29BaVFoQXdKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSUx3RWVJZ1JCaENsckRoMEVCQVVGREFFQ0NBMExDZ2tIQXdZQ0FnSUNBZ1VGQXdNQUFBQU9EeEFMSUFVZ0NCQ29BeUFGSUFNUXZ3SkZCRUFnQVVId0FHb2lBeUFGUVhJZ0NCQVFJQU5Cb0lZRUVBNGFJQUVvQXF3Q0lRSWdBeEFSREJFTElBVWdDRUVDRUlzRElnSkZEUThNRUFzZ0JTQUlFS2dESUFVZ0NFRUNFSXNESWdJTkR3SkFJQVVnQXhDMkFVVU5BQ0FGSUFNUVJVRUNSdzBBSUFVZ0F4QStRU0JHRFE4TElBRkI4QUJxSWdNZ0JVRnlJQWdRRUNBRFFaaVdEQkFPR2lBRFFZa3BFQ2tRRGhvZ0FTZ0NyQUloQWlBREVCRU1Ed3NnQlNBSUVLZ0RJQVVnQ0VFQ0VJc0RJZ0lORGlBRklBTVFVQVJBSUFVZ0F4QStEUTRMSUFGQjhBQnFJZ01nQlVGeUlBZ1FFQ0FEUVpXWERCQU9HaUFESUFRUUtSQU9HaUFCS0FLc0FpRUNJQU1RRVF3T0N5QUZJQWdRcUFNZ0JTQUlRUUlRaXdNaUFnME5JQVVnQXhCM0JFQWdCU0FERUQ1QklFWU5EUXNnQVVId0FHb2lBeUFGUVhJZ0NCQVFJQU5CMlpZTUVBNGFJQU1nQkJBcEVBNGFJQUVvQXF3Q0lRSWdBeEFSREEwTElBVWdDQkNvQXlBRklBaEJBaENMQXlJQ0RRd2dBVUVBTmdKWUlBRkJBRFlDYkNBQlFRQTJBbWdnQVVFQU5nSmtJQVVnQXlBQlFkZ0FhaUFCUWV3QWFpQUJRZWdBYWlBQlFlUUFhaENuQTBVRVFDQUJRZkFBYWlJRElBVkJjaUFJRUJBZ0EwSGptQXdRRGhvZ0F5QUVFQ2tRRGhvZ0FTZ0NyQUloQWlBREVCRU1EUXNnQVNnQ2JFRUVSd1JBSUFGQjhBQnFJZ01nQlVGeUlBZ1FFQ0FEUWFyMEJoQU9HaUFESUFRUUtSQU9HaUFCS0FLc0FpRUNJQU1RRVF3TkN3SkFJQVVnQVNnQ1pCQjNSUTBBSUFVZ0F4QStRU0JIRFFBZ0FTZ0NXRUVEUmcwTUN5QUJRZkFBYWlJRElBVkJjaUFJRUJBZ0EwSDQ1UXNRRGhvZ0F5QUVFQ2tRRGhvZ0FTZ0NyQUloQWlBREVCRU1EQXNnQlNBSUVLZ0RJQVVnQ0VFQ0VJc0RJZ0lOQ3dKQUlBVWdBeENPQVVVTkFDQUZJQU1RUlVFRFJ3MEFJQVVnQXhBK1FTQkdEUXNMSUFGQjhBQnFJZ01nQlVGeUlBZ1FFQ0FEUWRDVkRCQU9HaUFESUFRUUtSQU9HaUFCS0FLc0FpRUNJQU1RRVF3TEN5QUZJQWdRcUFNZ0JTQUlRUUFRaXdNaUFnMEtJQVVnQ0VFQkVCc1FJQ0lETHdFZVFUdEdCRUFnQTBFQ0VCdEJpU3BHRFFvTElBRkI4QUJxSWdNZ0JVRnlJQWdRRUNBRFFkak5CUkFPR2lBQktBS3NBaUVDSUFNUUVRd0tDeUFGSUFnUXFBTWdCU0FJUVFBUWl3TWlBZzBKSUFVZ0NFRUJFQnNRSUNJREx3RWVRVHRHQkVBZ0EwRUNFQnRCMmlsR0RRa0xJQUZCOEFCcUlnTWdCVUZ5SUFnUUVDQURRZno3QlJBT0dpQUJLQUtzQWlFQ0lBTVFFUXdKQ3lBRklBZ1FxQU1nQlNBSVFRQVFpd01pQWtVTkJ3d0lDeUFGSUFnUXFBTWdCU0FJUVFBUWl3TWlBZzBIQWtBZ0JTQUZJQWhCQVJBbUlnTVE3d0VFUUNBRklBTVFQa0VnUmcwQkN5QUJRZkFBYWlJRElBVkJjaUFJRUJBZ0EwR3lnQUlRRGhvZ0FTZ0NyQUloQWlBREVCRU1DQXNDUUFKQUlBVWdCU0FJUVFJUUppSURFSTRCUlEwQUlBVWdBeEJGUVFOSERRQWdCU0FERUQ1QklFWU5BUXNnQVVId0FHb2lBeUFGUVhJZ0NCQVFJQU5Ca3NvQkVBNGFJQUVvQXF3Q0lRSWdBeEFSREFnTEFrQWdCU0FGSUFoQkF4QW1JZ01RZHdSQUlBVWdBeEErUVNCR0RRRUxJQUZCOEFCcUlnTWdCVUZ5SUFnUUVDQURRYVdMQWhBT0dpQUJLQUtzQWlFQ0lBTVFFUXdJQ3dKQUFrQWdCU0FGSUFoQkJCQW1JZ01RamdGRkRRQWdCU0FERUVWQkEwY05BQ0FGSUFNUVBrRWdSZzBCQ3lBQlFmQUFhaUlESUFWQmNpQUlFQkFnQTBIYXlRRVFEaG9nQVNnQ3JBSWhBaUFERUJFTUNBc2dCU0FGSUFoQkJSQW1JZ01RZHdSQUlBVWdBeEErUVNCR0RRY0xJQUZCOEFCcUlnTWdCVUZ5SUFnUUVDQURRZjZLQWhBT0dpQUJLQUtzQWlFQ0lBTVFFUXdIQ3lBRklBZ1FxQU1nQlNBSVFRQVFpd01pQWcwR0lBVWdDRUVDUVFOQkJFRi9RWDlCQlVFR1FYOUJmMEYvUVg5QmYwRUhRUWhCQ1VFS1FYOUJDeENzQ2lJQ1JRMEZEQVlMSUFVZ0NCQ29BeUFGSUFoQkFCQ0xBeUlDRFFVZ0JTQUlRUUpCQTBFRVFYOUJmMEVGUVg5QmYwRi9RUVpCQjBGL1FRaEJDVUVLUVF0QmYwRU1FS3dLSWdKRkRRUU1CUXNnQlNBSUVLZ0RJQVVnQ0VFQUVJc0RJZ0lOQkNBRklBaEJmMEYvUVg5QkFrRURRWDlCZjBFRVFRVkJmMEYvUVFaQkIwRUlRUWxCQ2tFTVFYOFFyQW9pQWcwRUlBVWdCU0FJUVFzUUppSURFSGNFUUNBRklBTVFQa0VnUmcwRUN5QUJRZkFBYWlJRElBVkJjaUFJRUJBZ0EwR3dnd1FRRGhvZ0FTZ0NyQUloQWlBREVCRU1CQXNnQlNBSUVLZ0RJQVVnQ0VFQUVJc0RJZ0lOQXlBRklBaEJmMEYvUVg5QkFrRURRWDlCZjBFRVFRVkJmMEYvUVFaQkIwRUlRUWxCQ2tFTFFYOFFyQW9pQWtVTkFnd0RDeUFCUWRnQWFpQUVFQ2tRRkNFSElBVWdDQ2dDT0NnQ0FCQ2ZBU0VFSUFGQk1Hb2dCeEJVSVFOQkVCQVZJZ0pCbEk4Z05nSUFJQUlnQXlrQ0FEY0NCQ0FDSUFNb0FnZzJBZ3dnQXhCVklBRWdBallDVUNBRVFhQURhaUFCUVVCcklnSVF6UUVnQWhBV0lBTVFEeG9DZjBFQUlBVWdDRUVBRUlzRElnSU5BQnBCQUNFQ1FRRWdDQ2dDRUNBSUtBSU1heUlEUVJGSkRRQWFBa0FnQTBFd1J3UkFJQUZCOEFCcUlnUWdCVUZ5SUFnUUVDQUVRZW5JQ2hBT0dpQUVRZFBKQnhBT0dnd0JDd0pBSUFVZ0JTQUlRUUVRSmlJREVGQUVRQ0FGSUFNUVBrRWdSZzBCQ3lBQlFmQUFhaUlFSUFWQmNpQUlFQkFnQkVIWmdBSVFEaG9NQVFzZ0JTQUZJQWhCQWhBbUlnTVFVQVJBUVFFZ0JTQURFRDVCSUVZTkFob0xJQUZCOEFCcUlnUWdCVUZ5SUFnUUVDQUVRY0dCQWhBT0dnc2dBU2dDckFJaEFpQUVFQkZCQUFzaEF5QUhFQThhSUFNTkFRd0NDeUFCUWRnQWFpQUVFQ2tRRkNFSElBVWdDQ2dDT0NnQ0FCQ2ZBU0VFSUFGQkNHb2dCeEJVSVFOQkVCQVZJZ0pCdUk4Z05nSUFJQUlnQXlrQ0FEY0NCQ0FDSUFNb0FnZzJBZ3dnQXhCVklBRWdBallDS0NBRVFhQURhaUFCUVJocUlnSVF6UUVnQWhBV0lBTVFEeG9DUUFKQUFrQWdCU0FGSUFoQkFCQW1JZ0lRVUFSQUlBVWdBaEErUVNCR0RRRUxJQUZCOEFCcUlnUWdCVUZ5SUFnUUVDQUVRZG1BQWhBT0dnd0JDMEVCSVFRZ0JTQUZJQWhCQVJBbUlnTVFVQVJBSUFVZ0F4QStRU0JHRFFJTElBRkI4QUJxSWdRZ0JVRnlJQWdRRUNBRVFjR0JBaEFPR2dzZ0FTZ0NyQUloQWlBRUVCRkJBQ0VFQ3lBSEVBOGFJQVJGRFFFTFFRQWhBZ3NnQVVHd0Ftb2tBQ0FDSWdFTkJ5QUtRUUZxSVFwQkFDRUJJd0JCOEFGcklnTWtBQUpBQWtBQ1FDQUlMd0VlUWE0cGF3NENBQUVDQ3lBRklBZ29BamdvQWdBUW53RWhBaUFEUVppTklEWUMyQUVnQXlBRFFkZ0JhaUlCTmdMb0FTQUNRYUFEYWlBQkVNMEJJQUVRRmdKQUlBVWdCU0FJUVFBUUppSUJFTzhCQkVBZ0JTQUJFRDVCSUVZTkFRc2dBMEVZYWlJQ0lBVkJjaUFJRUJBZ0FrRzFpUUlRRGhvZ0F5Z0MxQUVoQVNBQ0VCRU1BZ3NDUUNBRklBVWdDRUVCRUNZaUFSRHZBUVJBSUFVZ0FSQStRU0JHRFFFTElBTkJHR29pQWlBRlFYSWdDQkFRSUFKQmdva0NFQTRhSUFNb0F0UUJJUUVnQWhBUkRBSUxBa0FnQlNBRklBaEJBaEFtSWdFUTd3RUVRQ0FGSUFFUVBrRWdSZzBCQ3lBRFFSaHFJZ0lnQlVGeUlBZ1FFQ0FDUWMrSUFoQU9HaUFES0FMVUFTRUJJQUlRRVF3Q0MwRUFJUUVnQ0NnQ0VDQUlLQUlNYTBIQUFFY05BU0FGSUFoQkF4QWJFQ0FpQWk4QkhrRTdSd1JBSUFOQkdHb2lBaUFGUVhJZ0NCQVFJQUpCM2JzRUVBNGFJQU1vQXRRQklRRWdBaEFSREFJTElBSkJBaEFiUVpvcVJnMEJJQU5CR0dvaUFpQUZRWElnQ0JBUUlBSkJsZGtGRUE0YUlBTW9BdFFCSVFFZ0FoQVJEQUVMSUFVZ0NDZ0NPQ2dDQUJDZkFTRUJJQU5CdkkwZ05nSUFJQU1nQXpZQ0VDQUJRYUFEYWlBREVNMEJJQU1RRmdKQUlBVWdCU0FJUVFBUUppSUJFTzhCQkVBZ0JTQUJFRDVCSUVZTkFRc2dBMEVZYWlJQ0lBVkJjaUFJRUJBZ0FrSHNoUUlRRGhvZ0F5Z0MxQUVoQVNBQ0VCRU1BUXNnQlNBRklBaEJBUkFtSWdJUTd3RUVRRUVBSVFFZ0JTQUNFRDVCSUVZTkFRc2dBMEVZYWlJQ0lBVkJjaUFJRUJBZ0FrR2VoZ0lRRGhvZ0F5Z0MxQUVoQVNBQ0VCRUxJQU5COEFGcUpBQWdBVVVOQVF3SEN3c0NmMEVBSVFkQkFDRUNJd0JCd0FGcklnTWtBRUVESVFFRFFBSkFBa0FDUUFKQUlBY2dCU2dDcEFFZ0JTZ0NvQUVpQkd0QnpBQnRJZ1pQRFFBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FFSUFkQnpBQnNhaUlFTHdFZUlncEI5UUZyRGdRREJBVUJBQXNDUUFKQUlBcEJObXNPQmdFQkNnb0tCd0FMSUFwQkNHc09CUW9KQ1FrQ0NBdEJBQ0VCREFrTFFRSkJBU0FCR3lFQkRBZ0xJQVFvQWlBUTBRVkZEUVlnQkNnQ0lFRUtSZzBHREFjTElBRkJBa1loQ2tFQ0lRRWdDZzBHSUFNZ0JVRnlJQVFRRUNBRFFaZVhDaEFPR2lBRFFkallDUkFPR2lBRFFjZVhDQkFPR2lBREtBSzhBU0VDSUFNUUVRd0RDMEVESVFFZ0J5QUdRUUZyUmcwRklBUXZBV3BCK1FGclFRSkpEUVVnQXlBRlFYSWdCQkFRSUFOQm5KUUtFQTRhSUFOQnZkd01FQTRhSUFOQnVvOEtFQTRhSUFOQnRlY0hFQTRhSUFNb0Fyd0JJUUlnQXhBUkRBSUxRUU1oQVNBSElBWkJBV3RHRFFRZ0JDOEJha0grL3dOeFFmb0JSZzBFSUFNZ0JVRnlJQVFRRUNBRFFjeVVDaEFPR2lBRFFldmNEQkFPR2lBRFFjakZDUkFPR2lBRFFhYm5CeEFPR2lBREtBSzhBU0VDSUFNUUVRd0JDeUFCUVFGR0lBUkJBaEFiUVFkSGNnMERJQU1nQlVGeUlBUVFFQ0FEUWNubUJ4QU9HaUFES0FLOEFTRUNJQU1RRVFzZ0EwSEFBV29rQUNBQ0RBUUxJQXBCdlFKR0RRRUxRUU1oQVFzZ0IwRUJhaUVIREFBTEFBc2lBUTBGSXdCQjBBQnJJZ0VrQUNBRlFld0RhaUVESUFVb0FzUUJJUUlnQVVFUWFrRUVjaUVFSUFGQklHcEJCSEloQmlBRktBTEFBU0VLSUFGQlFHc2hDQU5BQWtBQ1FDQUNJQXBIQkVBZ0FTQUtLQUlBTmdKTUlBaENBRGNEQUNBQlFnQTNBemdnQVVJQU53TXdJQUVnQmpZQ0lDQUJRZ0EzQWlRZ0FVRXdhaUFCUWN3QWFoRFJDZ05BSUFFb0FrUWlCMFVOQWlBQklBRW9BalFnQnlBQktBSkFha0VCYXlJSFFRaDJRZnovL3dkeGFpZ0NBQ0FIUWY4SGNVRUNkR29vQWdBMkFod2dBVUV3YWhDNUZTQUJRUkJxSUFGQklHb2dBVUVjYWhEVkJTQUJMUUFVUlEwQUlBTWdBVUVjYWhEN0NpQUJRY3dBYWhEZUFpQUZJQUVvQWh3UW53RWlCMFVOQUNBQlFSQnFJQWRCdUFOcUVLMEtJZ2tvQWdBaEJ3TkFJQVFnQjBZRVFDQUpFTVFEREFJRklBRWdCeWdDRURZQ0RDQUJRVEJxSUFGQkRHb1EwUW9nQnhCTUlRY01BUXNBQ3dBTEFBc2dBVUhRQUdva0FBd0JDeUFLUVFScUlRb2dBVUVnYWhERUF5QUJRVEJxRU5rWERBRUxDeU1BUVVCcUlnRWtBQ0FGUWVBQmFpRUVJQVZCN0FOcUlRb2dCU2dDZUNFR0lBRkJDR3BCQkhJaEFpQUJRUmhxUVFSeUlRZ2dCU2dDZENFSEEwQUNRQUpBSUFZZ0IwY0VRQ0FCUWdBM0F6Z2dBVUlBTndNd0lBRkNBRGNES0NBQklBZzJBaGdnQVVJQU53SWNJQUZCQ0dvZ0IwRzRBMm9RclFvaUNTZ0NBQ0VEQTBBZ0FpQURSZ1JBSUFrUXhBTURRQ0FCS0FJOElnTkZEUVFnQVNBQktBSXNJQU1nQVNnQ09HcEJBV3NpQTBFSWRrSDgvLzhIY1dvb0FnQWdBMEgvQjNGQkFuUnFLQUlBTmdJRUlBRkJLR29RdVJVZ0FVRUlhaUFCUVJocUlBRkJCR29RMVFVZ0FTMEFERVVOQUNBQktBSUVJZ01nQnlnQ0FFWUVRQ0FLSUFGQkJHb1Erd29pQXlnQ0JDRUpJQU1vQWdBaEF3TkFJQU1nQ1VZTkJpQUJJQU1vQWdBMkFnQWdBVUVJYWlBRUlBRVExUVVnQTBFRWFpRUREQUFMQUFzZ0JTQURFSjhCSWdORkRRQWdBVUVJYWlBRFFiZ0RhaEN0Q2lJSktBSUFJUU1EUUNBQ0lBTkdCRUFnQ1JERUF3d0NCU0FCSUFNb0FoQTJBZ0FnQVVFb2FpQUJFTkVLSUFNUVRDRUREQUVMQUFzQUN3QUZJQUVnQXlnQ0VEWUNCQ0FCUVNocUlBRkJCR29RMFFvZ0F4Qk1JUU1NQVFzQUN3QUxJQUZCUUdza0FBd0JDeUFIUWNRRGFpRUhJQUZCR0dvUXhBTWdBVUVvYWhEWkZ3d0JDd3NDUUNBRktBTEFBU0lCSUFVb0FzUUJJZ0pIRFFBZ0JTMEFnQUZCSUhFTkFDQVNRZEFEYWlJRElBVkJmRUVBRUJBZ0EwSFQvZ2NRRGhvZ0VpZ0NqQVVoQVF3Q0N5QUZRZVFCYWlFRUlBVkI0QUZxSVFjRFFDQUJJQUpHRFFRZ0FTZ0NBQ0VLSXdCQkVHc2lBeVFBSUFNZ0NqWUNEQ0FGUWV3QmFpQURRUXhxRU93QklRb2dBMEVRYWlRQUlBb0VRQ0FTUWRBRGFpSURJQVZCZkNBRklBRW9BZ0FRSUJBUUlBTkJqZjRJRUE0YUlBTWdBUkN6QnlJQlFlRFNCeEFPR2lBQktBSzhBU0VCREFNTEFrQWdCU2dDQUNnQ0FCQkhSUTBBSUFjZ0FSREFBeUFFUmcwQUlCSkIwQU5xSWdNZ0JVRjhJQVVnQVNnQ0FCQWdFQkFnRWtIQUFtb2lBaUFGUVpva0VEY2dBeUFDRUJJYUlBTkJzN1VIRUE0YUlCSW9Bb3dGSVFFZ0FoQVBHZ3dEQ3lBQlFRUnFJUUVNQUFzQUN5QURRY3dBYkNFQ0lBTkJBV29oQXlBQklBSnFJZ1FvQWhBaEJ5QUVLQUlNSVFFRFFDQUJJQWRIQkVBZ0JDZ0NBQ0FCTHdFQVFRSjBhaWdDQUNFQ0FrQWdBU2dDQkJER0NrVU5BQ0FCS0FJRVFRTkdEUUFnQlNBQ0VDQWlCa1VOQUNBQkx3RUFJUWdqQUVFUWF5SUNKQUFnQWlBSU5nSU1JQUlnQkRZQ0NDQUdRVUJySUFKQkNHb1E2ZzBnQWtFUWFpUUFDeUFCUVJCcUlRRU1BUXNMUVFBaUFVVU5BUXdFQ3dzZ0F4QVJJQUVOQWdzQ2YwRUFJUUZCQUNFSEl3QkI0QVZySWhBa0FDQUZFS1lLSWdNb0FnUWhIaUFES0FJQUlRUURRQUpBQWtBZ0JDQWVSZzBBSUFRb0FrUUVRQ0FFUVVCcklRTWdFRUhRQldwQmlBZ1FGQ0VDUVFFaEJnTkFJQU1vQWdBaUEwVUVRQ0FRUVpBRWFpSUJJQVZCZFNBRklBUW9BZ0FRSUJBUUlBRkJrKzRNRUE0YUlBRWdBaEFTR2lBQlFZSUlFQTRhSUFGQnBvY0tFQTRhSUJCQmdBUnFJZ01nQlNBRUtBSUFFQ29nQVNBREVCSWFJQkFvQXN3RklRY2dBeEFQR2lBQkVCRWdBaEFQR2d3REN5QVFRWkFFYWlJQklBVWdBeWdDQ0JBcUlBSWdBUkQwR1JvZ0JrRUJjU0VISUFFUUR4cEJBQ0VHSUFjTkFDQUNRZmZ3REJENEJob01BQXNBQ3lBUVFRQTJBdGdGSUJCQ0FEY0QwQVVDUUNBRUVLa0tJZ01vQWdBZ0F5Z0NCRVlOQUNBRUVLZ0tJUWdnRUVIb0Eyb2lBeUFFTmdJRUlBTkJvSklnTmdJQUlBTWdBellDRUNBUVFmQ0RJRFlDMEFNZ0VFR1VoQ0EyQXJnRElCQkJ1SVFnTmdLZ0F5QVFJQkJCMEFOcUlnSTJBdUFESUJBZ0VFRzRBMm9pQ2pZQ3lBTWdFQ0FRUWRBRmFpSUpOZ0s4QXlBUUlCQkJvQU5xSWdZMkFyQURJQWdnQXlBQ0lBb2dCaEM1Q2lBR0VCWWdDaEFXSUFJUUZpQURFQllnRUVHSUEyb2lBeUFFTmdJRUlBTkJ4SklnTmdJQUlBTWdBellDRUNBUVFaQUVhaUFKSUFNUTZ3MGdBeEFXSUJBb0FwUUVJUUlnRUNnQ2tBUWhBd05BSUFJZ0EwWUVRQ0FRUVpBRWFoQXlHZ3dDQ3lBREtBSUFJZ29nQXlnQ0JDSUdSd1JBSUFvZ0JoQ0hCQXNnQTBFSWFpRUREQUFMQUFzQ2Z3SkFJQVFRcVFvaUFpZ0NBQ0lESUFJb0FnUWlCa1lOQUNBRVFkQUFhaUVJQWtBRFFDQURRUVJxSWdNZ0JrWU5BU0FRSUFNb0FnQW9BZ1FpQ2pZQ2tBRUNRQ0FLUlNBSUlBcEdja1VFUUNBQ0tBSUFJQU1nRUVHUUFXb1FtZ1VnQTBZTkFRc2dBaWdDQkNFR0RBRUxDeUFRUVpBRWFpSUJJQVZCZFNBRklCQW9BcEFCS0FJQUVDQVFFQ0FCUWFDakNoQU9HaUFRUVlBRWFpSUNJQVVnQXlnQ0FDZ0NBQkFxSUFFZ0FoQVNHaUFCUWJIb0NSQU9HaUFRUWZnQ2FpSUtJQVVnRUNnQ2tBRW9BZ0FRS2lBQklBb1FFaG9nRUNnQ3pBVWhBeUFLRUE4YUlBSVFEeG9nQVJBUlFRQU1BZ3NnQlMwQWdBRkJBbkZGRFFBZ0FpZ0NBQ0VESUFVb0FnUW9BaGdoQ2dOQUlBTWdCa1lOQVNBRUlBTW9BZ0FRb0FZZ0Nrb0VRQ0FRUVpBRWFpSUJJQVZCZFNBRklBTW9BZ0FvQWdBUUlCQVFJQUZCNG9ZSUVBNGFJQkFvQXN3RklRTWdBUkFSUVFBTUF3VWdBMEVFYWlFRElBSW9BZ1FoQmd3QkN3QUxBQXNnQlMwQWdBRkJBbkVFUUNBUUlCQW9BdEFGTmdMVUJTQVFRUUEyQXBnRUlCQkNBRGNEa0FRZ0VFRUFOZ0tJQkNBUVFnQTNBNEFFSUFRUXFRb2lBeWdDQUNBREtBSUVSd1JBSUFRUXFBb2hDQ0FRUWVBQ2FpSURJQVFRd3cwZ0VFSHdneUEyQXNnQ0lCQkIzSVFnTmdLd0FpQVFRYmlFSURZQ21BSWdFQ0FRUWNnQ2FpSUNOZ0xZQWlBUUlCQkJzQUpxSWdvMkFzQUNJQkFnRUVIUUJXb2lDVFlDdEFJZ0VDQVFRWmdDYWlJR05nS29BaUFJSUFNZ0FpQUtJQVlRdVFvZ0JoQVdJQW9RRmlBQ0VCWWdBeEFXSUJCQmdBSnFJZ01nQkJEU0ZTQVFRZmdDYWlBSklBTVE2dzBnQXhBV0lCQW9BdndDSVFJZ0VDZ0MrQUloQXdOQUFrQWdBaUFEUmdSQUlCQkI2QUZxSWdNZ0JCRFNGU0FRUWZDRElEWUMwQUVnRUVHQWhTQTJBcmdCSUJCQnVJUWdOZ0tnQVNBUUlCQkIwQUZxSWdJMkF1QUJJQkFnRUVHNEFXb2lDallDeUFFZ0VDQVFRWkFFYWlJSU5nSzhBU0FRSUJCQm9BRnFJZ1kyQXJBQklBUkJvQUZxSUFNZ0FpQUtJQVlRdVFvZ0JoQVdJQW9RRmlBQ0VCWWdBeEFXSUJCQitBQnFJZ01nQkJERERTQVFRWkFCYWlBSUlBTVE2dzBnQXhBV0lCQW9BcFFCSVFJZ0VDZ0NrQUVoQXd3QkN5QURLQUlBSWdvZ0F5Z0NCQ0lHUndSQUlBb2dCallDQ0FzZ0EwRUlhaUVEREFFTEN3TkFJQUlnQTBjRVFDQURLQUlBSUFNb0FnUTJBZ3dnQTBFSWFpRUREQUVMQ3lBUVFlQUFhaUlESUFRUXd3MGdFRUh3Z3lBMkFrZ2dFRUh3Z3lBMkFqQWdFRUdraFNBMkFoZ2dFRUc0aENBMkFnQWdFQ0FRUWNnQWFpSUNOZ0pZSUJBZ0VFRXdhaUlLTmdKQUlCQWdFRUVZYWlJR05nSW9JQkFnRUVHQUJHbzJBaHdnRUNBUU5nSVFJQVJCMEFCcUlBTWdBaUFLSUFZZ0VCQ1NGaUFRRUJZZ0JoQVdJQW9RRmlBQ0VCWWdBeEFXSUJCQmtBRnFFRElhSUJCQitBSnFFRElhQ3lNQVFTQnJJZ29rQUNBS1FRaHFRUVJ5SVFrZ0JCRFVGU0VDSUJCQmdBUnFJaGNpQXlnQ0JDRUxJQU1vQWdBaEJnSkFBa0FEUUNBR0lBdEhCRUFnQmlnQ0JDRU1JQVlvQWdBaEVTQUNJUU1EUUNBQ0lBTW9BZ1FpQTBZRVFDQUdRUWhxSVFZTUF3c0NRQ0FLUVFocUlBTkJDR29RbEJZaUNDZ0NBRUVEUncwQUlBZ29BaEFvQWdBZ0RFY05BQ0FJRU1ZRktBSUVRUVJyS0FJQUlnZ29BZ0JCQWtjTkJDQUtJQVFnRVJERURTQUlJQW9vQWdBUWhBVUxJQWtRTWhvTUFBc0FDd3NnQ2tFZ2FpUUFEQUVMUWVyTUEwR0Rxd0pCbUFOQmdxd0JFQUFBQ3lNQVFaQURheUlOSkFBZ0RVSUFOd0tFQXlBTklBMUJnQU5xUVFSeU5nS0FBeUFYS0FJRUlRSWdGeWdDQUNFREFrQURRQ0FDSUFOSEJFQWdEU0FES1FJQUlpOCtBcEFCSUEwZ0wwSWdpS2NpQ2pZQ2dBRWdCQ0FLUVFJUTB4VUVRQ0FOUWNBQmFpQU5RWUFEYWlBTlFZQUJhaENURmlBTlFaQUJhaENXQVNBRFFRaHFJUU1NQWdVZ0RVSEFBV29pQWlBRlFYVWdCU0FOS0FLUUFSQWdFQkFnQWtIai9RZ1FEaG9nRFVHd0FXb2lDaUFGSUEwb0FwQUJFQ29nQWlBS0VCSWFJQUpCMWRzTEVBNGFJQTFCb0FGcUlnWWdCU0FOS0FLQUFSQXFJQUlnQmhBU0dpQUNRYS9MQnhBT0dpQU5LQUw4QWlFRElBWVFEeG9nQ2hBUEdpQUNFQkVNQXdzQUN3c2dCQkNwQ2lJREtBSUVJUW9nQXlnQ0FDRURBMEFnQXlBS1J3UkFBa0FnQXlnQ0FDSUNMUUF0UlEwQUlBSXRBQ2hCQkhGRkRRQWdEU0FDS0FJQU5nS2dBU0FOUVlBRGFpQU5RYUFCYWhDVEZpZ0NEQ0lHUVFGR0RRQWdEVUhBQVdvaUFpQUZRWFVnQlNBTktBS2dBUkFnRUJBZ0FrSFkrZ2tRRGhvZ0RVR3dBV29pQ2lBRklBMG9BcUFCRUNvZ0FpQUtFQklhSUFKQnVjRUpFQTRhSUFJZ0JoQWhHaUFDUWU2dUJCQU9HaUFOS0FMOEFpRURJQW9RRHhvZ0FoQVJEQU1MSUFOQkJHb2hBd3dCQ3dzZ0RVR3dBV3BCQkhJaEh5QUVFTlFWSWlFaEZBTkFJQU1oQmdKQUEwQWdGQ2dDQkNJVUlDRkdEUUVnRkVFSWFpSVRLQUlRSWdndEFDMUZEUUFMSUJNb0FoUWlDMFVFUUNBTlFiQUJhaUlLRUZVZ0RVR2dBV29pQmhCVklBMUJrQUZxSWdrUVZTQU5RY0FCYWlJQ0lCTW9BZ0FRN3cwZ0RTQUpOZ0tJQVNBTklBWTJBb1FCSUEwZ0NqWUNnQUVnRFVHQUFXb2lDeUFDRU8wTklBSVE3QTBnQWlBRlFYOGdCU0FJS0FJQUVDQVFFQ0FOUVJCcUlneEJxdEFKSUFvUXhBRWdEVUVnYWlJUklBeEJyNllLRUMwZ0RVRXdhaUlQSUJFZ0JoQk9JQTFCUUdzaUV5QVBRZmZ3REJBdElBMGdCU0FJS0FJQUVDb2dEVUhRQUdvaUNDQVRJQTBRVGlBTlFlQUFhaUlVSUFoQnd0OEtFQzBnRFVId0FHb2lGU0FVSUFrUVRpQUxJQlZCMmNVSEVDMGdBaUFMRUJJYUlBMG9BdndDSVFNZ0N4QVBHaUFWRUE4YUlCUVFEeG9nQ0JBUEdpQU5FQThhSUJNUUR4b2dEeEFQR2lBUkVBOGFJQXdRRHhvZ0FoQVJJQWtRRHhvZ0JoQVBHaUFLRUE4YURBTUxJQWdnQ3hESEJVVUVRQ0FOUWNBQmFpSUNJQVZCZFNBRklBc29BZ0FRSUJBUUlBMUJvQUZxSWdvZ0JTQUlLQUlBRUNvZ0RVR1FBV29pQmlBRklBc29BZ0FRS2lBTlFiQUJhaUlJSUJNZ0NpQUdJQTFCZ0FGcVFZbmhBeEFVSWdrUTdnMGdBaUFJRUJJYUlBMG9BdndDSVFNZ0NCQVBHaUFKRUE4YUlBWVFEeG9nQ2hBUEdpQUNFQkVNQXdzQ1FDQUlJQXRIRFFBZ0V5Z0NBRUY5Y1VFQlJ3MEFJQTFCd0FGcUlnSWdCVUYxSUFVZ0NDZ0NBQkFnRUJBZ0RVR2dBV29pQ2lBRklBZ29BZ0FRS2lBTlFaQUJhaUlHSUFVZ0NDZ0NBQkFxSUExQnNBRnFJZ2dnRXlBS0lBWWdEVUdBQVdwQjRlQURFQlFpQ1JEdURTQUNJQWdRRWhvZ0RTZ0MvQUloQXlBSUVBOGFJQWtRRHhvZ0JoQVBHaUFLRUE4YUlBSVFFUXdEQ3dKQUlCTW9BZ0JCQWtjTkFDQUxJQWdRMnhVTkFDQU5RY0FCYWlJQ0lBVkJkU0FGSUFzb0FnQVFJQkFRSUExQm9BRnFJZ29nQlNBSUtBSUFFQ29nRFVHUUFXb2lCaUFGSUFzb0FnQVFLaUFOUWJBQmFpSUlJQk1nQ2lBR0lBMUJnQUZxUWNZWUVCUWlDUkR1RFNBQ0lBZ1FFaG9nRFNnQy9BSWhBeUFJRUE4YUlBa1FEeG9nQmhBUEdpQUtFQThhSUFJUUVRd0RDMEVBSVJFakFFRWdheUlLSkFBZ0V5Z0NFQ0VXSUJNb0FnQWlBMEVEUnlJYVJRUkFJQk1vQWdRb0FnQW9BaEFoRVFzZ0V5Z0NGQ0ViSUFwQkFEWUNHQ0FLUWdBM0F4QWdDaUFXTmdJQUlBcEJFR29nQ2hEOUFpQU5RYkFCYWlJSklBbEJCR28yQWdBZ0NVSUFOd0lFSUFOQkFrY2hIUU5BSUFvb0FoUWlBeUFLS0FJUVJ3UkFJQU5CQkdzaUFpZ0NBQ0VESUFvZ0FqWUNGQ0FLSUFNMkFnd2dGaUFERU1jRlJRMEJBa0FnSFVVRVFDQWJJQW9vQWd3UTJ4VU5BUXNnR3lBS0tBSU1FTWNGSWdNZ0duSkZCRUFnRVNBS0tBSU1FTWNGRFFNTUFRc2dBdzBDQ3lNQVFSQnJJaFVrQUNNQVFSQnJJZzhrQUNBSlFRUnFJUUlDUUNBSktBSUVJZ3hGQkVBZ0FpRUREQUVMSUFvb0Fnd29BZ0FoR0FOQUlBd2lBeWdDRUNnQ0FDSU1JQmhMQkVBZ0F5SUNLQUlBSWd3TkFRd0NDeUFNSUJoUERRRWdBMEVFYWlFQ0lBTW9BZ1FpREEwQUN3c2dEeUFETmdJTUlCVWdBaWdDQUNJREJIOUJBQVZCRkJBVklRTWdEeUFKUVFScU5nSUVJQU1nQ2lnQ0REWUNFQ0FQUVFFNkFBZ2dDU0FQS0FJTUlBSWdBeEQ0QWlBUFFRQTJBZ0FnRHhDTEFVRUJDem9BRENBVklBTTJBZ2dnRDBFUWFpUUFJQW9nRlNnQ0NEWUNBQ0FLSUJVdEFBdzZBQVFnRlVFUWFpUUFJQW90QUFSRkRRRWdDaWdDRENJREtBSklJUXdnQXlnQ1JDRUNBMEFnQWlBTVJnMENJQW9nQWlnQ0FEWUNBQ0FDUVFScUlRSWdDa0VRYWlBS0VNOEJEQUFMQUFzTElBcEJFR29RTWhvZ0NrRWdhaVFBSUExQm9BRnFJZ0lRVlNBTlFaQUJhaUlLRUZVZ0RVR0FBV29pQ1JCVklBMUJ3QUZxSWdNZ0V5Z0NBQkR2RFNBTklBazJBbmdnRFNBS05nSjBJQTBnQWpZQ2NDQU5RZkFBYWlBREVPME5JQU1RN0EwZ0RTZ0NzQUVoRlFKL0EwQWdGU0FmUndSQUlCVW9BaEFpQWlnQ0lDRWRJQUlvQWh3aEF3TkFJQU1nSFVjRVFDQU5JQU1vQWdBMkFsQUNRQ0FOUWJBQmFpQU5RZEFBYWhDNkNnMEFJQTBvQWxBaENrRUFJUkVqQUVFUWF5SU1KQUFDUUFKQUFrQUNRQUpBQWtBQ1FDQVRLQUlBUVFGckRnUUVBZ0VBQXd0QmkrVURRY1NZQWtHSEFVRzM1UUFRQUFBTFFRRWhEeUFUS0FJUUtBSTBJQVVvQXFBQklnbHJRY3dBYlVITUFHd2dDV3BCekFCcklnbEJBQkFiSVJFZ0NVRUJFQnNoQ1NBUklBb29BZ0FpQ2tZTkJDQUpJQXBIRFFNTUJBdEJBU0VQSUJNb0FnUW9BZ0FvQWhBaUNTZ0NOQ0FGS0FLZ0FTSVJhMEhNQUcxQnpBQnNJQkZxUWN3QWEwRUFFQnNoRVNBSklBcEdEUU1nQ2lnQ0FDQVJSZzBEREFJTFFkL1hBa0hFbUFKQm5RRkJ0K1VBRUFBQUN3SkFJQk1vQWhRZ0NrWU5BQ0FUS0FJUUloc1ExeFVoRmdOQUlCWkZEUUlDUUNBRktBS2dBU0lKSUJZb0FqUWlHQ0FKYTBITUFHMUJBV3RCekFCc2FpSUpMd0VlSWc5QjlnRkhCRUFnR3lnQ05DOEJIa0g3QVVZZ0QwSDNBVWR5RFFFZ0dDOEJIa0g3QVVjTkFRc2dDVUVBRUJzaEdpQU1RUWhxSUFrb0FqZ2dHaENuQ2lBTUtBSUlJQnNReHdVTkFBSkFJQkZCQVhFRVFDQUpMd0VlSWc5QjlnRkhEUUVMSUFvb0FnQWdHa1lOQXlBSkx3RWVJZzlCOWdGSERRQkJBU0VQSUFsQkFSQWJJQW9vQWdCR0RRVWdDUzhCSGlFUEN5QVBRZllCUmcwRElCZ3ZBUjVCK3dGR0lCRnlJUkVMSUJZUTF4VWhGZ3dBQ3dBTFFRRWhEd3dCQzBFQUlROExJQXhCRUdva0FDQVBEUUFnRFVIQUFXb2lDaUFGUVhVZ0JTQUNLQUlBRUNBUUVDQUtRYlhiQ3hBT0dpQU5RZkFBYWlJR0lBVWdBaWdDQUJBcUlBb2dCaEFTR2lBS1FaeS9DaEFPR2lBS0lBMUJvQUZxRUJJYUlBcEJwTnNMRUE0YUlBMUI0QUJxSWdJZ0JTQUlLQUlBRUNvZ0NpQUNFQklhSUFwQmwrVUFFQTRhSUEwb0F2d0NJUU1nQWhBUEdpQUdFQThhSUFvUUVVRUFEQVVMSUFOQkJHb2hBd3dCQ3dzQ1FDQUNJQWhHRFFBZ0FpZ0NGQ0VLSUFJb0FoQWhBd05BSUFNZ0NrY0VRQ0FOSUFNb0FnQWlDVFlDY0FKQUlBa3RBQzFGRFFBZ0RVR3dBV29nRFVId0FHb1F1Z29OQUNBTlFjQUJhaUlDSUFWQmRTQUZJQTBvQW5Bb0FnQVFJQkFRSUFKQnRkc0xFQTRhSUFJZ0RTZ0NjQ2dDQUJBaEdpQUNRZTNBQ2hBT0dpQUNJQTFCb0FGcUVCSWFJQUpCMGNBS0VBNGFJQUlnRFVHUUFXb1FFaG9nQWtHNjJ3c1FEaG9nQWlBSUtBSUFFQ0VhSUEwb0F2d0NJUU1nQWhBUlFRQU1CZ3NnQTBFRWFpRUREQUVMQ3lBQ0xRQW9RUVp4UlEwQUlBVW9BcUFCSWdNZ0FpZ0NOQ0FEYTBITUFHMUJBV3RCekFCc2FpSURMd0VlUWY3L0EzRkI5Z0ZIRFFBZ0RVSEFBV29nQkNBRFFRQVFHeUlERU1RTklBMGdEU2dDd0FFaUNqWUNRQ0FLTFFBdFJRMEFJQTFCc0FGcUlBMUJRR3NRdWdvTkFDQU5RY0FCYWlJS0lBVkJkU0FGSUFJb0FnQVFJQkFRSUFwQnlaOEtFQTRhSUExQjhBQnFJZ1lnQlNBQ0tBSUFFQ29nQ2lBR0VCSWFJQXBCdHNJS0VBNGFJQW9nRFVHZ0FXb1FFaG9nQ2tHS3dna1FEaG9nRFVIZ0FHb2lBaUFGSUFnb0FnQVFLaUFLSUFJUUVob2dDa0c1b1FvUURob2dEVUhRQUdvaUNDQUZJQU1RS2lBS0lBZ1FFaG9nQ2tHT05SQU9HaUFOS0FMOEFpRURJQWdRRHhvZ0FoQVBHaUFHRUE4YUlBb1FFVUVBREFNTElCVVFUQ0VWREFFTEN3SkFJQk1vQWdCQkEwY05BQ0FGSUFnb0FqUWdCU2dDb0FFaUEydEJ6QUJ0UWN3QWJDQURha0hNQUd0QkFSQWJJZ29RSUNFRElBb2dDQ2dDQUVZTkFDQURJQVVvQXFBQklnTnJRY3dBYlVITUFHd2dBMm9vQW9nQklnTW9BaEFoRVNBREtBSVVJUUlEUUNBQ0lCRkdEUUVnRFNBUktBSUFJZ2syQWtBZ0Z5Z0NCQ0VNSUJjb0FnQWhBMEVBSVE4RFFDQURJQXhHQkVBZ0RVR3dBV29nRFVGQWF4QzZDa0VBUnlBUGNrRUJjUVJBSUJGQkJHb2hFUXdEQ3dVZ0F5a0NBQ0l2UWlDSXB5QUtSZ1JBSUFrb0FnQWdMNmRHSUE5eUlROExJQU5CQ0dvaEF3d0JDd3NMSUExQndBRnFJZ0lnQlVGMUlBMG9Ba0FvQWpRUUVDQUNRYUNqQ2hBT0dpQU5RZkFBYWlJR0lBVWdEU2dDUUNnQ0FCQXFJQUlnQmhBU0dpQUNRZUxPQ1JBT0dpQU5RZUFBYWlJSklBVWdDaEFxSUFJZ0NSQVNHaUFDUWIzUENSQU9HaUFOUWRBQWFpSUtJQVVnQ0NnQ0FCQXFJQUlnQ2hBU0dpQU5LQUw4QWlFRElBb1FEeG9nQ1JBUEdpQUdFQThhSUFJUUVVRUFEQUVMQWtBZ0V5Z0NBRUVCUncwQUlBZ29BalFpQ1M4QkhrSDdBVWNOQUVFQUFuOGdDQ0VNUVFBaEFpTUFRYkFDYXlJUEpBQWdEMElBTndPZ0FpQVBRZ0EzQTVnQ0lBOUJnSUNBL0FNMkFxZ0NRUUVoQ2dOQUlBa29BaEFnQ1NnQ0RHdEJCSFVnQ2swRVFDQVBRZ0EzQW93Q0lBOGdEMEdJQW1wQkJISWlGallDaUFKQkF5RUtJQWxCQVJBYklSc0RRQ0FLSWhFZ0NTZ0NFQ0FKS0FJTWEwRUVkU0lhU1FSQUlCRkJBbW9oQ2lBSklCRVFHeUFiUncwQkN3c2dEMElBTndQNEFTQVBRZ0EzQS9BQklBOUJnSUNBL0FNMkFvQUNRUUVoQ0FKQUFrQURRQ0FKS0FJUUlBa29BZ3hyUVFSMUlBaExCRUFnRHlBSklBZ1FHeUlETmdMc0FTQUxLQUlBSUFOSEJFQWdEMEVBTmdMb0FRSkFJQTlCOEFGcUlBOUI3QUZxRU93QklnTkZCRUFnRDBFb2FpQUVJQThvQXV3QkVNUU5JQThvQWlnaENnSkFJQXd0QUMxRkRRQWdDaTBBTFVVTkFDQU1JQW9ReHdVTkFDQVBRU2hxSWdNZ0JVRjFJQXdvQWpBUUVDQURRYlA4Q1JBT0dpQVBRUmhxSWdJZ0JTQU1LQUlBRUNvZ0F5QUNFQklhSUFOQjlzOEpFQTRhSUE5QkNHb2lDQ0FGSUE4b0F1d0JFQ29nQXlBSUVCSWFJQThvQXVRQklRb2dDQkFQR2lBQ0VBOGFJQU1RRVF3SEN5QVBRWmdDYWlFWVFRQWhBeU1BUWFBQ2F5SVRKQUFnRXlBS05nS2NBaUFUUVFBMkFwZ0NJQk5DQURjRGtBSWdFMEdRQW1vZ0UwR2NBbW9RendFZ0UwSUFOd09BQWlBVFFnQTNBL2dCSUJOQmdJQ0EvQU0yQW9nQ0lCTW9BcHdDSWdvdEFDMGhIU0FFSUFvUW9BWWhGUUpBQTBBZ0V5Z0NsQUlpQ2lBVEtBS1FBa1lOQVNBS1FRUnJJaUlvQWdBaENpQVRJQ0kyQXBRQ0lCTWdDallDOUFFZ0NpQUxSZzBBSUJOQk1Hb2dFMEg0QVdvZ0UwSDBBV29RcXdVZ0V5MEFORVVOQUFKQUlCMUZEUUFnRXlnQzlBRWlDaTBBTFVVTkFDQVRLQUtjQWlBS0VNY0ZSUTBBSUJNb0F2UUJJZ29vQWlBaElpQUtLQUljSVFvRFFDQUtJQ0pHRFFJZ0V5QUtLQUlBTmdJd0lBcEJCR29oQ2lBVFFaQUNhaUFUUVRCcUVNOEJEQUFMQUFzZ0V5QVRLQUwwQVNnQ0FEWUNNQ0FZSUJOQk1Hb1FxUUpGQkVBZ0JDQVRLQUwwQVJDZ0JpSUtJQlZJRFFFZ0NpQVZSZ1JBSUJNb0F2UUJMUUFvUVNCeERRSUxJQk5CTUdvaUNpQUZRWFVnRXlnQ25BSW9BakFRRUNBS1FhblVDUkFPR2lBVFFTQnFJaFVnQlNBVEtBS2NBaWdDQUJBcUlBb2dGUkFTR2lBS1FldWZDaEFPR2lBVFFSQnFJaGdnQlNBVEtBTDBBU2dDQUJBcUlBb2dHQkFTR2lBS1FjRzRDQkFPR2lBVEtBTHNBU0VESUJnUUR4b2dGUkFQR2lBS0VCRU1BZ3NnRHlnQzZBRWlDa1VFUUNBVEtBTDBBU0lLSUJNb0Fwd0NSZzBCSUE4Z0NpZ0NBRFlDNkFFTUFRc2dDaUFUS0FMMEFTZ0NBRVlOQUFzZ0UwRXdhaUlLSUFWQmRTQVRLQUtjQWlnQ01CQVFJQXBCcWRRSkVBNGFJQk5CSUdvaUZTQUZJQk1vQXB3Q0tBSUFFQ29nQ2lBVkVCSWFJQXBCOU5JSkVBNGFJQk5CRUdvaUdDQUZJQThvQXVnQkVDb2dDaUFZRUJJYUlBcEI2YzRLRUE0YUlCTWdCU0FUS0FMMEFTZ0NBQkFxSUFvZ0V4QVNHaUFUS0FMc0FTRURJQk1RRHhvZ0dCQVBHaUFWRUE4YUlBb1FFUXNnRTBINEFXb1FUeUFUUVpBQ2FoQXlHaUFUUWFBQ2FpUUFJQU1pQ2cwR0FrQWdEeWdDNkFGRkJFQkJBQ0VLREFFTEFrQUNRQ0FXSUE5QjZBRnFJQTlCaUFKcUlnTW9BZ1FnQTBFRWFoRGVGeUlUUmdSQUlBOG9BdWdCSVFNTUFRc2dFeWdDRUNJS0lBOG9BdWdCSWdOR0RRRUxJQTlCQVRZQ0xDQVBJQU0yQWlnakFFRVFheUlLSkFBakFFRWdheUlESkFBZ0NpQVBRWWdDYWlJWUlCTWdBMEVjYWlBRFFSaHFJQTlCS0dvUWtnNGlIU2dDQUNJVEJIOUJBQVZCR0JBVklSTWdBMEVJYWlJVklCaEJCR28yQWdRZ0ZTQVROZ0lBSUJNZ0R5Z0NLRFlDRUNBVElBOG9BaXcyQWhRZ0ZVRUJPZ0FJSUJnZ0F5Z0NIQ0FkSUFNb0FnZ1ErQUlnQXlnQ0NDRVRJQU5CQURZQ0NDQVZFSXNCUVFFTE9nQU1JQW9nRXpZQ0NDQURRU0JxSkFBZ0NpZ0NDQm9nQ2tFUWFpUUFJQThvQXVnQklRb01BUXNnRXlBVEtBSVVRUUZxTmdJVUN5QVBJQW8yQWl3Z0R5QVBLQUxzQVRZQ0tDQVBRUmhxSUE5QjhBRnFJQTlCS0dvUStSWWdEeWdDNkFFaEF3d0JDeUFQSUFNb0Fnd2lBellDNkFFTElBTWdHMGNnRVNBYVNYSkZCRUFnRHlBQ05nTG9BU0FDSVFNTEFrQWdBMFVFUUNBQ0lRTU1BUXNnQ0NJS1FRRkdEUUFDUUFOQUlBcEJBbW9pQ2lBSktBSVFJQWtvQWd4clFRUjFJZ05QRFFFZ0R5Z0M3QUVnQ1NBS0VCdEdEUUFMSUFrb0FoQWdDU2dDREd0QkJIVWhBd3NnQXlBS1NRMEVJQUloQXlBUEtBTG9BU0FKSUFvUUcwY05CQXNnQXlFQ0N5QUlRUUpxSVFnTUFRc0xJQThvQW9nQ0lRTURRQ0FESUJaR0JFQkJBQ0VLREFNTElBTW9BaFJCQWs4RVFDQVBRU2hxSWdJZ0JVRjFJQVVnQXlnQ0VCQWdFQkFnQWtIZTB3a1FEaG9nRDBFWWFpSUlJQVVnQXlnQ0VCQXFJQUlnQ0JBU0dpQVBLQUxrQVNFS0lBZ1FEeG9nQWhBUkRBTUZJQU1RVENFRERBRUxBQXNBQ3lBUFFTaHFJZ01nQlVGMUlBa1FFQ0FEUWFuVUNSQU9HaUFQUVJocUlnSWdCU0FQS0FMc0FSQXFJQU1nQWhBU0dpQURRYXpUQ1JBT0dpQVBRUWhxSWdnZ0JTQVBLQUxvQVJBcUlBTWdDQkFTR2lBRFFjNHZFQTRhSUE4b0F1UUJJUW9nQ0JBUEdpQUNFQThhSUFNUUVRc2dEMEh3QVdvUVR5QVBRWWdDYWlBUEtBS01BaEN2RGlBUFFaZ0NhaEJQSUE5QnNBSnFKQUFnQ2d3Q0N5QVBJQWtnQ2hBYklnTTJBdkFCSUFzb0FnQWdBMGNFUUNBUFFTaHFJQTlCbUFKcUlBOUI4QUZxRUpZQkN5QUtRUUpxSVFvTUFBc0FDeUlERFFFYUN5QUdJUU5CQVFzaEFpQU5RWUFCYWhBUEdpQU5RWkFCYWhBUEdpQU5RYUFCYWhBUEdpQU5RYkFCYWlBTktBSzBBUkRtRFNBQ0RRRU1BZ3NMUVFBaEFpTUFRZUFCYXlJSUpBQWdDRUlBTndQUUFTQUlRZ0EzQThnQklBaEJnSUNBL0FNMkF0Z0JJQkFvQXRRRklRTUNRQU5BSUFNZ0VDZ0MwQVZHRFFFZ0EwRUVheUlES0FJQUlnc29BalFpQ1VVTkFFRUFJUW9DUUFKQUFrQUNRQ0FKSUFVb0FxQUJJZ1pyUWN3QWJVSE1BR3dnQm1wQnpBQnJJZ1l2QVI1QjlnRnJEZ0lCQUFNTElBZ2dCa0VBRUJzMkFzUUJJQWdnQ0VISUFXb2dDRUhFQVdvUWxnRU1BUXNnQ0NBR1FRQVFHellDeEFFZ0NDQUlRY2dCYWlJS0lBaEJ4QUZxSWd3UWxnRWdDQ0FHUVFFUUd6WUN4QUVnQ0NBS0lBd1FsZ0VMSUFZaENnc2dDeTBBTFVVTkFBSkFBa0FnQ1M4QkhrSDZBV3NPQWdBQkFnc2dDQ0FKUVFFUUd6WUN4QUVnQ0NBSlFRSVFHellDd0FFZ0NDQUlRY2dCYWlJTElBaEJ4QUZxRUpZQklBZ3RBQVFoQmlBSUlBc2dDRUhBQVdvUWxnRWdDQzBBQkNFTEFrQWdDZ1JBSUF0RklBWkZJQW92QVI1QjlnRkhjbklOQXd3QkN5QUdSU0FMUlhJTkFnc2dDQ0FGUVhVZ0NSQVFJQWhCOVBNRUVBNGFJQWdvQXJ3QklRSWdDQkFSREFJTElBb0VRRUVCSVFvRFFDQUtJQWtvQWhBZ0NTZ0NER3RCQkhWUERRSWdDQ0FKSUFvUUd6WUN4QUVnQ2tFQ2FpRUtJQWdnQ0VISUFXb2dDRUhFQVdvUWxnRU1BQXNBQ3dzZ0NDQUZRWFVnQ1JBUUlBaEJpc3NDRUE0YUlBZ29BcndCSVFJZ0NCQVJDeUFJUWNnQmFoQlBJQWhCNEFGcUpBQWdBaUVEQ3lBTlFZQURhaUFOS0FLRUF4RG5EU0FOUVpBRGFpUUFJQmNRTWhvZ0VFR1FCR29RTWhwQkFDQUREUUVhQ3lBQklRTkJBUXNoQVNBUVFkQUZhaEF5R2lBQkRRRWdBeUVIQ3lBUVFlQUZhaVFBSUFjTUFnc2dCRUhFQTJvaEJDQURJUUVNQUFzQUN5SUJEUUVqQUVHZ0Ftc2lBeVFBSUFOQkFEWUNtQUlnQTBJQU53T1FBaUFEUWdBM0E0QUNJQU5DQURjRCtBRWdBMEdBZ0lEOEF6WUNpQUlnQlNnQ3BBRWhDQ0FGS0FLZ0FTRUJBa0FDUUFOQUlBRWdDRWNFUUFKQUlBRW9BaWhGRFFBZ0FTZ0NPQ0lFUlEwQUlBRW9Ba1FoQ2lBQktBSkFJUWNnQVNnQ1BDSUdCRUFEUUNBSElBcEdEUUlnQXlBSEtBSUFJZ0kyQXZRQkFrQWdBaWdDUENJRVJRMEFJQVF0QUN4RkRRQWdBaThCSGtIMUFVWUVRQ0FESUFJb0FpZzJBaUFnQTBFd2FpQURRZmdCYWlBRFFTQnFFSllCSUFNdEFEUkZEUUVnQTBHUUFtb2dBMEgwQVdvUXp3RU1BUXNnQmlBRUVOd1ZSUTBHQ3lBSFFRaHFJUWNNQUFzQUN3TkFJQWNnQ2tZTkFTQUhLQUlBSVFZZ0IwRUlhaUVISUFZb0FqZ2lBa1VnQWlBRVJuSU5BQXNnQTBFd2FpSUNJQVZCZGlBRklBUW9BZ0FRSUJBUUlBSkJ5TU1MRUE0YUlBTkJJR29pQ2lBRklBRW9BaWdRS2lBQ0lBb1FFaG9nQWtHVGh3b1FEaG9nQTBFUWFpSUJJQVVnQmlnQ09DZ0NBQkFxSUFJZ0FSQVNHaUFDUWRPSENoQU9HaUFESUFVZ0JDZ0NBQkFxSUFJZ0F4QVNHaUFES0FMc0FTRUhJQU1RRHhvZ0FSQVBHaUFLRUE4YUlBSVFFUXdFQ3lBQlFjd0FhaUVCREFFTEN5QURLQUtVQWlFR0lBTW9BcEFDSVFFRFFDQUJJQVpHQkVCQkFDRUhEQU1MQWtBZ0FTZ0NBQ0lFS0FJOExRQXNSUTBBUVFNaEFnTkFJQUlnQkNnQ0VDQUVLQUlNYTBFRWRVOE5BU0FGSUFKQkFuUWlDaUFFS0FJQWFpZ0NBQkFnSVFjZ0EwRXdhaUFFS0FJNElBb2dCQ2dDQUdvb0FnUVFwd29DUUFKQUlBY29BandpQ0VVTkFDQURLQUl3SWdvdEFDeEZEUUFnQ0NBS0VOd1ZSUTBCQ3lBQ1FRSnFJUUlNQVFzTElBTkJNR29pQVNBRlFYWWdCQkFRSUFGQnJZWUtFQTRhSUFOQklHb2lBaUFGSUFRb0FpZ1FLaUFCSUFJUUVob2dBVUhHd3dzUURob2dBMEVRYWlJRUlBVWdCeWdDS0JBcUlBRWdCQkFTR2lBQlFlYkpDUkFPR2lBRElBVWdDaWdDQUJBcUlBRWdBeEFTR2lBREtBTHNBU0VISUFNUUR4b2dCQkFQR2lBQ0VBOGFJQUVRRVF3REN5QUJRUVJxSVFFTUFBc0FDeUFEUVRCcUlnSWdCVUYySUFRb0FqQVFFQ0FDUWNqREN4QU9HaUFEUVNCcUlnb2dCU0FCS0FJb0VDb2dBaUFLRUJJYUlBSkJ4YUFLRUE0YUlBTkJFR29pQVNBRklBWW9BZ0FRS2lBQ0lBRVFFaG9nQWtHZ29Bb1FEaG9nQXlBRklBUW9BZ0FRS2lBQ0lBTVFFaG9nQXlnQzdBRWhCeUFERUE4YUlBRVFEeG9nQ2hBUEdpQUNFQkVMSUFOQitBRnFFRThnQTBHUUFtb1FNaG9nQTBHZ0Ftb2tBQ0FISWdFTkFVRUFJUU1qQUVIZ0Eyc2lCaVFBSUFWQmpBSnFJUUlDUUFKQUEwQWdBaWdDQUNJQ1JRMEJJQVVnQWlnQ0NDSUVFQ0FpQVNnQ0JDQUJLQUlBYTBFVVJ3MEFJQVFnQlJDT0ZrVU5BQXNnQmtHZ0Ftb2lBaUFGUVhZZ0FSQVFJQUpCa2ZZSEVBNGFJQVlvQXR3RElRTWdBaEFSSUFNTkFRc2dCVUdBQVdvaEd5QUZLQUxFQVNFZUlBWkI4QUJxUVFSeUlSOGdCa0VZYWtFRWNpRWhJQVpCTUdwQkJISWhIU0FHUWFBQ2FrRUVjaUVpSUFVb0FzQUJJUkFEUUFKQUlCQWdIa1lOQUNBRklCQW9BZ0FpQkJEZURTSUJLQUlFSVNRZ0FTZ0NBQ0VKUVFBaEVVRUFJUWRCQUNFQlFRQWhERUVBSVJVRFFDQUpJQ1JIQkVBZ0JrSUFOd09nQVNBR1FnQTNBNWdCSUFaQmdJQ0EvQU0yQXFnQklBa29BaEFoSlNBSktBSU1JUThEUUFKQUFuOENRQUpBQWtBZ0R5QWxSZzBBSUFZZ0JTQVBLQUlBSWcwUUlDSUNOZ0lVQWtBZ0FnUkFJQUl2QVI1Qk8wWU5BUXNnQmtHZ0Ftb2lDaUFGUVhZZ0FoQVFJQXBCcDcwQ0VBNGFJQW9nQmlnQ0ZDOEJIaEFwRUE0YUlBcEIvSmNJRUE0YUlBWW9BdHdESVFNZ0NoQVJEQU1MSUFKQkFoQWJJUWdDUUNBRktBSVVRWUNJQkU4RVFDQUlRUWRHQkVBZ0JrR2dBbW9pQWlBRlFYWWdCaWdDRkJBUUlBSkJ4cndCRUE0YUlBWW9BdHdESVFNZ0FoQVJEQVVMSUFaQm9BSnFJQVpCbUFGcUlBWkJGR29RcXdVZ0JpMEFwQUlOQVNBR1FhQUNhaUlDSUFWQmRpQUdLQUlVRUJBZ0FrR2F4QW9RRGhvZ0JrRXdhaUlLSUFVZ0RSQXFJQUlnQ2hBU0dpQUNRZVh2QkJBT0dpQUdLQUxjQXlFRElBb1FEeG9nQWhBUkRBUUxJQWhCZlhGQkFVWU5BQ0FHUWFBQ2FpSUNJQVZCZGlBR0tBSVVFQkFnQWtIWTFna1FEaG9nQWlBSUVDRWFJQUpCMHRVS0VBNGFJQUlnQkJBaEdpQUNRZnlYQ0JBT0dpQUdLQUxjQXlFRElBSVFFUXdEQ3dKQUFrQWdCU0FGSUFZb0FoUW9BZ0FvQWdRUUlDZ0NBQ2dDRENJTEVDQWlDa1VOQUNBS0x3RWVRUjVIRFFBZ0JTQUxFTjRCSWdKQkJHb2hFeUFDS0FJQUlRSURRQ0FDSUJOR0RRRUNRQ0FDS0FJUVFRdEdCRUFnQWlnQ0lFRi9SdzBCQ3lBQ0VFd2hBZ3dCQ3dzZ0JTQUxFTjRCSWdKQkJHb2hFeUFDS0FJQUlRSURRQ0FDSUJOR0RRUWdBaWdDRUVFQ1J3UkFJQUlRVENFQ0RBRUxDeUFWSUFoQkFVWnFJaFZCQVVvZ0RDQUlRUU5HYWlJTVFRRktjZzBDSUEwZ0JSQ05GaUlDUlEwQklBSWhBd3dFQ3lBRklBMFEzZ0VpQWtFRWFpRVRJQUlvQWdBaEFnTkFJQUlnRTBZTkFTQUNLQUlRUVF0SEJFQWdBaEJNSVFJTUFRc0xJQTBnQlJDTkZpSUNSUTBBSUFJaEF3d0RDd0pBSUFoQkJFY05BQ0FCUVFGcUlRRWdDa1VOQUNBS0x3RWVRUjVIRFFBZ0MwRUNJQVVRdXdNZ0Iyb2hCeUFHS0FJVUtBSW9RUlFnQlJDN0F5QVJhaUVSQ3lBRktBSUFLQUlBRUVkRkRRUWdCU0FFRUtVR0lSTWdCa0VFTmdLZ0FpQVRJQVpCb0FKcUVNQURJUmdnQmtFQU5nS2dBaUFUUVFScUlSWWdFeUFHUWFBQ2FoREFBeUVtSUFVZ0JpZ0NGQ2dDS0JEZUFTSUNRUVJxSVNjZ0FpZ0NBQ0VDQTBBQ1FDQUNJQ2RIQkVBZ0JrRU9OZ0tnQWlBR1FRQTJBbUFnQmtJQU53TllJQ0lnQmtIWUFHb1FzQUVoRnlBR1FYODJBckFDQWtBQ1FDQUNRUkJxSWhRZ0JrR2dBbW9Rc1FoRkJFQWdCa0VOTmdJd0lBWkJBRFlDa0FFZ0JrSUFOd09JQVNBZElBWkJpQUZxRUxBQklSb2dCa0YvTmdKQUlCUWdCa0V3YWhDeENBMEJJQVpCRVRZQ0dDQUdRUUEyQWxBZ0JrSUFOd05JSUNFZ0JrSElBR29Rc0FFaEtDQUdRWDgyQWloQkFTRUtJQlFnQmtFWWFoQ3hDRVVFUUNBR1FSQTJBbkFnQmtFQU5nSVFJQVpDQURjRENDQWZJQVpCQ0dvaUtSQ3dBU0VxSUFaQmZ6WUNnQUVnRkNBR1FmQUFhaEN4Q0NFS0lDb1FNaG9nS1JBeUdnc2dLQkF5R2lBR1FjZ0FhaEF5R2lBYUVESWFJQVpCaUFGcUVESWFJQmNRTWhvZ0JrSFlBR29RTWhvZ0NnMENEQVFMSUJjUU1ob2dCa0hZQUdvUU1ob01BUXNnR2hBeUdpQUdRWWdCYWhBeUdpQVhFRElhSUFaQjJBQnFFRElhQ3dKQUFrQWdDRUVCYXc0REFBTUJBd3NnRmlBbVJnUkFJQk1vQWdoQkFra05Bd3NnQmtHZ0Ftb2lBaUFGUVhZZ0JpZ0NGQkFRSUFaQk1Hb2lDaUFGUWJvd0VEY2dBaUFLRUJJYUlBWkJHR29pQ0NBRklCUW9BZ0FRdndNZ0FpQUlFQklhSUFKQm1OUUtFQTRhSUFJZ0JCQWhHaUFDUWZ5WENCQU9HaUFHS0FMY0F5RURJQWdRRHhvZ0NoQVBHaUFDRUJFTUJnc2dGaUFZUmdSQUlCTW9BZ2hCQWtrTkFnc2dCa0dnQW1vaUFpQUZRWFlnQmlnQ0ZCQVFJQVpCTUdvaUNpQUZRYmt3RURjZ0FpQUtFQklhSUFaQkdHb2lDQ0FGSUJRb0FnQVF2d01nQWlBSUVCSWFJQUpCcU5NS0VBNGFJQUlnQkJBaEdpQUNRZnlYQ0JBT0dpQUdLQUxjQXlFRElBZ1FEeG9nQ2hBUEdpQUNFQkVNQlFzZ0JpZ0NGQ2dDS0VFT0lBVVF1d01nQ0VFQlIzSWdGaUFZUm5JTkJnSkFJQVVnQ3hCM0JFQWdCU0FMRUQ1QndBQkdEUUVMSUFVZ0N4REhBVVVOQndzZ0JrR2dBbW9pQWlBRlFYWWdCaWdDRkJBUUlBWkJNR29pQ2lBRlFZZ2xFRGNnQWlBS0VCSWFJQUpCbXN3S0VBNGFJQUlnRFJBaEdpQUNRWVhWQ2hBT0dpQUNJQVFRSVJvZ0FrSDhsd2dRRGhvZ0JpZ0MzQU1oQXlBS0VBOGFJQUlRRVF3RUN5QUNFRXdoQWd3QUN3QUxJQXhCQWtnZ0ZVRUJUSEZGQkVBZ0JrR2dBbW9pQWlBRlFYd2dCU0FFRUNBUUVDQUNRZWZWQ2hBT0dpQUNJQVFRSVJvZ0FrR1ZwZ2NRRGhvZ0JpZ0MzQU1oQXlBQ0VCRU1BZ3NnQlNBRUVONEJJZ0pCQkdvaENpQUNLQUlBSVFJRFFDQUNJQXBIQkVBZ0FpZ0NFRUVwUmdSQUlBWkJNR29pQ2lBQ0tBSVVJQUlvQWhoQkFSRG9EaUFHUWFBQ2FpSUNJQVZCZkNBRklBUVFJQkFRSUFKQjZLTU1FQTRhSUFJZ0NoQVNHaUFDUWJQWUNoQU9HaUFDSUFRUUlSb2dBa0hNMFFjUURob2dCaWdDM0FNaEF5QUNFQkVnQ2hBUEdnd0VCU0FDRUV3aEFnd0NDd0FMQzBFQklCdEJ6Q0lRYUVVZ0FVRUFUSElnQjBFQVRISU5BaG9nQVNBSFJ3UkFJQVpCb0FKcUlnSWdCVUY4SUFVZ0JCQWdFQkFnQWtIYzBRb1FEaG9nQWlBRUVDRWFJQUpCbGFZSEVBNGFJQVlvQXR3RElRTWdBaEFSREFJTElCRWdCeUlCUmlBQlFRSkpjZ1IvUVFFRklBWkJvQUpxSWdJZ0JVRjhJQVVnQkJBZ0VCQWdBa0g2endvUURob2dBaUFFRUNFYUlBSkJsYVlIRUE0YUlBWW9BdHdESVFNZ0FoQVJRUUFMREFJTElBWkJvQUpxSWdJZ0JVRnlJQVVnQ3hBZ0VCQWdCa0V3YWlJS0lBVkJ0eVlRTnlBQ0lBb1FFaG9nQWtIZTF3Y1FEaG9nQmlnQzNBTWhBeUFLRUE4YUlBSVFFUXRCQUFzaEFpQUpRUmhxSVFrZ0JrR1lBV29RVHlBQ0RRTWdBdzBHREFRTElBOUJCR29oRHd3QUN3QUxDeUFRUVFScUlSQU1BUXNMSUFaQ0FEY0RlQ0FHUWdBM0EzQWdCa0dBZ0lEOEF6WUNnQUVnQlNnQ3BBRWhGU0FHUWRnQWFrRUVjaUVQSUFVb0FxQUJJUWNEUUFKQUlBY2dGVVlFUUVFQUlRTU1BUXNDUUNBSEx3RWVRVHRIRFFBZ0J5Z0NLQ0VFSUFkQkFoQWJJUWdDUUNBRktBSUFLQUlBRUVkRkRRQUNRQ0FJUVFsSERRQWdCa0hZQUdvZ0JTQUVFS1FLSUFZb0FsZ2hBZ05BQWtBZ0FpQVBSd1JBSUFZZ0FpZ0NFRFlDU0NBR1FhQUNhaUFHUWZBQWFpQUdRY2dBYWhDV0FTQUdMUUNrQWcwQklBWkJvQUpxSWdFZ0JVRjJJQVVnQkJBZ0VCQWdCa0dJQVdvaUNpQUZRWkkwRURjZ0FTQUtFQklhSUFGQjNKY0pFQTRhSUFFZ0JpZ0NTQkFoR2lBQlFZYjREQkFPR2lBQlFiVDJEQkFPR2lBQlFjZWJDaEFPR2lBQlFaMlpCeEFPR2lBR0tBTGNBeUVESUFvUUR4b2dBUkFSQ3lBR1FkZ0FhaERFQXlBQ0lBOUhEUVVNQWdzZ0FoQk1JUUlNQUFzQUN5QUlEUUFnQmtIWUFHb2dCU0FFRUtRS1FRRWhBZ0pBSUFZb0FtQkZEUUFnQkVFaUlBVVF1d05GQkVBZ0JrR2dBbW9pQVNBRlFYWWdCU0FFRUNBUUVFRUFJUUlnQmtHSUFXb2lDaUFGUVpVMEVEY2dBU0FLRUJJYUlBRkI3WmNKRUE0YUlBRWdCQkFoR2lBQlFjdjJEQkFPR2lBQlFiVDJEQkFPR2lBQlFjdjVCQkFPR2lBR0tBTGNBeUVESUFvUUR4b2dBUkFSREFFTElBWW9BbUJGRFFBZ0JFRWhJQVVRdXdNTkFDQUdRYUFDYWlJQklBVkJkaUFGSUFRUUlCQVFRUUFoQWlBR1FZZ0JhaUlLSUFWQmxUUVFOeUFCSUFvUUVob2dBVUh0bHdrUURob2dBU0FFRUNFYUlBRkJ3dmNNRUE0YUlBRkJ0UFlNRUE0YUlBRkJ5L2tFRUE0YUlBWW9BdHdESVFNZ0NoQVBHaUFCRUJFTElBWkIyQUJxRU1RRElBSkZEUUlMQWtBQ2Z3SkFBa0FDUUFKQUFrQWdCU2dDQUNnQ0FDSUJRUVZyRGc4QUFBQUFBQU1EQXdNREF3TURBd0VDQzBFQkRBUUxRYmUyQ1VIUGx3SkJ0d0pCc3lvUUFBQUxJQUZCR2tZTkFRdEJBQXdCQzBHS3RnbEJ6NWNDUWJvQ1FiTXFFQUFBQzBVTkFDQUVRUUlnQlJDN0F5SUJJQWhCREVaeElBaEJBa1lpQ2lBRVFRTWdCUkM3QXlBQmNuRnlSUTBBSUFaQjJBQnFJQVVnQkJDa0NrRUJJUUlDUUNBR0tBSmdSUTBBSUFSQklTQUZFTHNERFFBZ0JrR2dBbW9pQVNBRlFYWWdCU0FFRUNBUUVDQUJRWno0QWtHaDlnRWdDaHNRRGhvZ0FVSENtQWtRRGhvZ0FTQUVFQ0VhSUFGQnd2Y01FQTRhSUFGQjd2UU1FQTRhSUFGQjljUUpFQTRhSUFGQm81Y0lFQTRhSUFZb0F0d0RJUU1nQVJBUlFRQWhBZ3NnQmtIWUFHb1F4QU1nQWtVTkFndEJBQ0VMQWtBQ1FBSkFJQWhCQW1zT0F3SURBUUFMQWtBZ0NFRUphdzRFQWdNREFnQUxJQWhCNVNsR0RRRU1BZ3RCQVNFTElCdEJ6Q0lRYUVVTkFRc0NRQ0FGSUFjb0FnQW9BZ1FRSUNJTkx3RWVRU0JHQkVBZ0JTQU5LQUlBS0FJTUlnSVFJQ0VCQWtBZ0N3MEFJQUV2QVI1Qi92OERjVUVjUncwQUlBVWdBVUVCRUJzaUFoQWdJUUVMSUFFdkFSNUJIa2NOQWlBR1FnQTNBMkFnQmtJQU53TllJQVpCZ0lDQS9BTTJBbWdnQmtJQk53T2dBaUFHUWRnQWFpQUNJQVpCb0FKcUlBVVEzUTFCblBnQ1FaYmlBRUdMa3dKQjRmVUJJQXNiSUFoQkNVWWJJQWhCQWtZaUV4c2hFUUpBSUFVb0FnQW9BZ0FRUjBVTkFDQUNRUUlnQlJDN0F5RUJJQWhCREVjaUNpQUNRUU1nQlJDN0F5SUpSWEpGQkVBZ0JrR2dBbW9pQVNBRlFYWWdCU0FFRUNBUUVFRUFJUWtnQmtHSUFXb2lBaUFGUVpNMEVEY2dBU0FDRUJJYUlBRkJsSmdKRUE0YUlBRWdCQkFoR2lBQlFkZVJBUkFPR2lBR0tBTGNBeUVESUFJUUR4b2dBUkFSREFNTElBRWdDRUVKUjNKRkJFQWdCa0dnQW1vaUFTQUZRWFlnQlNBQ0VDQVFFRUVBSVFrZ0JrR0lBV29pQkNBRlFaTTBFRGNnQVNBRUVCSWFJQUZCZ3BnSkVBNGFJQUVnQWhBaEdpQUJRYUwzREJBT0dpQUJRYlQyREJBT0dpQUJRYkxhQWhBT0dpQUdLQUxjQXlFRElBUVFEeG9nQVJBUkRBTUxJQUVnQ25KRkJFQWdCa0dnQW1vaUFTQUZRWFlnQlNBQ0VDQVFFRUVBSVFrZ0JrR0lBV29pQkNBRlFaTTBFRGNnQVNBRUVCSWFJQUZCcUpnSkVBNGFJQUVnQWhBaEdpQUJRYUwzREJBT0dpQUJRYlQyREJBT0dpQUJRYkxhQWhBT0dpQUdLQUxjQXlFRElBUVFEeG9nQVJBUkRBTUxJQWtnQVNBSVFRSkhJZ3B5Y2tVRVFDQUdRYUFDYWlJQklBVkJkaUFGSUFJUUlCQVFRUUFoQ1NBR1FZZ0JhaUlFSUFWQmxEUVFOeUFCSUFRUUVob2dBVUc3bUFrUURob2dBU0FDRUNFYUlBRkI4L1lNRUE0YUlBRkJ0UFlNRUE0YUlBRkI2ZGtDRUE0YUlBWW9BdHdESVFNZ0JCQVBHaUFCRUJFTUF3c2dDRUVNUnlBS2NRMEFJQVpCaUFGcUlBVWdCQkNrQ2tFQklRRUNRQ0FHS0FLUUFVVU5BQ0FFUVNJZ0JSQzdBMFVFUUNBR1FhQUNhaUlLSUFWQmRpQUZJQVFRSUJBUVFRQWhBU0FHUWNnQWFpSUpJQVZCbFRRUU55QUtJQWtRRWhvZ0NpQVJFQTRhSUFwQndwZ0pFQTRhSUFvZ0JCQWhHaUFLUWN2MkRCQU9HaUFLUWJUMkRCQU9HaUFLUWN2NUJCQU9HaUFHS0FMY0F5RURJQWtRRHhvZ0NoQVJEQUVMSUFZb0FwQUJSUTBBSUFSQklTQUZFTHNERFFBZ0JrR2dBbW9pQ2lBRlFYWWdCU0FFRUNBUUVFRUFJUUVnQmtISUFHb2lDU0FGUVpVMEVEY2dDaUFKRUJJYUlBb2dFUkFPR2lBS1FjS1lDUkFPR2lBS0lBUVFJUm9nQ2tIQzl3d1FEaG9nQ2tHMDlnd1FEaG9nQ2tITCtRUVFEaG9nQmlnQzNBTWhBeUFKRUE4YUlBb1FFUXNnQmtHSUFXb1F4QU5CQUNFSklBRkZEUUlMSUFNaENpQUlRZVVwUmlJV0lBaEJERVp5SVJjZ0JTQUNFTjRCSWdGQkJHb2hHQ0FCS0FJQUlRUURRQ0FFSUJoR0lna0VRQ0FLSVFNTUF3c2dFeUFFS0FJUUlneEJBa1lpQTNFaEVFRUJJUUVDUUNBVElBeEJBMFp4SWhRTkFBSkFJQXNOQUVFQUlRRUNRQ0FJUVFsckRnUUJBZ0lCQUFzZ0ZrVU5BUXNnQXlFQkN5QVFCRUFnRFNnQ0tDRWFJd0JCRUdzaUF5UUFJQU1nR2pZQ0RDQURJQVZCakFScUlBTkJER29RbGdFZ0EwRVFhaVFBSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FESUFWQm9BUnFJQU5CREdvUWxnRWdBMEVRYWlRQUN5QVVJQmNnREVFQ1JpSU1jWElFUUNBTktBSW9JUlFqQUVFUWF5SURKQUFnQXlBVU5nSU1JQU1nQlVHMEJHb2dBMEVNYWhDV0FTQURRUkJxSkFBakFFRVFheUlESkFBZ0F5QUNOZ0lNSUFNZ0JVSElCR29nQTBFTWFoQ1dBU0FEUVJCcUpBQUxBa0FnQVNBUWNrRUJSdzBBSUFVb0FnUkJLVUVvSUFzYmFpMEFBQ0VVUWFtZUEwR1JuZ01nREJzaERDQUNJQVVRaXhZRVFDQUdRYUFDYWlJQklBVkJkaUFGSUFJUUlCQVFJQUZCMDlrS0VBNGFJQUVnQWhBaEdpQUJRYTduQ1JBT0dpQUJJQXdRRGhvZ0FVR3Ryd2NRRGhvZ0JpZ0MzQU1oQXlBQkVCRkJBQ0VKREFRTElBWkIrSVVnTmdLWUFTQUdJQVpCbUFGcUlnTTJBcWdCSUFJZ0EwRWNJQVVRdUFvaEdpQURFQllnR2tVRVFDQUdRYUFDYWlJQklBVkJkaUFGSUFJUUlCQVFJQUZCMDlrS0VBNGFJQUVnQWhBaEdpQUJRYTduQ1JBT0dpQUJJQXdRRGhvZ0FVR25zQWNRRGhvZ0JpZ0MzQU1oQXlBQkVCRkJBQ0VKREFRTElBWkJuSVlnTmdJd0lBWWdCa0V3YWlJRE5nSkFJQUlnQTBFWUlBVVF1QW9oR2lBREVCWWdHa1VFUUNBR1FhQUNhaUlCSUFWQmRpQUZJQUlRSUJBUUlBRkIwOWtLRUE0YUlBRWdBaEFoR2lBQlFhN25DUkFPR2lBQklBd1FEaG9nQVVIaXNBY1FEaG9nQmlnQzNBTWhBeUFCRUJGQkFDRUpEQVFMSUFaQndJWWdOZ0lZSUFZZ0JrRVlhaUlETmdJb0lBSWdBMEVZSUFVUXVBb2hHaUFERUJZZ0drVUVRQ0FHUWFBQ2FpSUJJQVZCZGlBRklBSVFJQkFRSUFGQjA5a0tFQTRhSUFFZ0FoQWhHaUFCUWE3bkNSQU9HaUFCSUF3UURob2dBVUhqcndjUURob2dCaWdDM0FNaEF5QUJFQkZCQUNFSkRBUUxJQVVvQWdBb0FnQVFSMFVOQUNBUUJFQWdBaUFSSUF4QkFTQVVRUUJIUVFBZ0JrSFlBR29nQlJDM0NpSUREUVFMSUFGRkRRQWdBaUFSSUF4QkFDQVVRUUJIUVFBZ0JrSFlBR29nQlJDM0NpSUREUU1MSUFRUVRDRUVEQUFMQUF0Qm4vSUlRYWlhQWtIZENFSEltUUVRQUFBTElBWW9BbUFoQWdOQUlBSUVRQ0FDS0FJQUlRRWdBaEFmSUFFaEFnd0JDd3NnQmlnQ1dDRUJJQVpCQURZQ1dDQUJCRUFnQVJBZkN5QUpSUTBCQ3lBSFFjd0FhaUVIREFFTEN5QUdRZkFBYWhCUElBTU5BQ0FHUWdBM0Fwd0JJQVlnQmtHWUFXcEJCSElpRFRZQ21BRWdCaUFHUVRCcVFRUnlJaEEyQWpBZ0JrSUFOd0kwSUFVb0FxUUJJUThnQlNnQ29BRWhBUUpBQTBBZ0FTQVBSZ1JBUVFBaEF3d0NDd0pBQWtBQ1FBSkFJQUV2QVI1Qnh3QnJEZ0lBQVFJTElBRW9BZ0FpQXlnQ0NDRUlJQVlnQXlnQ0JDSUpOZ0pjSUFZZ0NEWUNXQ0FHUWFBQ2FpQUdRWmdCYWlBR1FkZ0FhaENxRjBFQUlRSWdCaTBBcEFJZ0NFRUdSM0pGQkVBZ0JrR2dBbW9pQVNBRlFYWWdCU0FKRUNBUUVDQUJRZWlaQ1JBT0dpQUJJQWtRSVJvZ0FVSEZwQW9RRGhvZ0JrRVlhaUlDSUFWQkJoQy9BeUFCSUFJUUVob2dBVUdJL1FjUURob2dCaWdDM0FNaEF5QUNFQThhSUFFUUVRd0ZDd05BSUFKQkFrWU5BaUFDUVFOMFFmREdEV29pQkNnQ0JDRURBa0FDUUNBSUlBUW9BZ0FpQkVZRVFDQURJUVFNQVFzZ0F5QUlSdzBCQ3lBR0lBazJBb3dCSUFZZ0JEWUNpQUVnQmtHSUFXb2hDeUFHUVpnQmFpSURLQUlFSVFjZ0EwRUVhaUlLSVFNRFFDQUhCRUFnQXlBSElBZEJFR29nQ3hETkNpSU1HeUVESUFkQkJHb2dCeUFNR3lnQ0FDRUhEQUVMQ3dKQUlBTWdDa2NFUUNBTElBTkJFR29RelFwRkRRRUxJQW9oQXdzZ0F5QU5SdzBFQ3lBQ1FRRnFJUUlNQUFzQUN5QUJLQUlBSWdNb0Fnd2hDU0FES0FJRUlRZ2dCaUFES0FJSUlndzJBaUFnQmlBSU5nSWNJQVlnQ1RZQ0dDTUFRUkJySWdza0FDQUdRUmhxSVFjakFFRVFheUlLSkFBZ0JrRXdhaUlSUVFScUlRSUNRQ0FSS0FJRUlnUkZCRUFnQWlFRERBRUxBMEFnQnlBRUlnTkJFR29pQkJDeENnUkFJQU1pQWlnQ0FDSUVEUUVNQWdzZ0JDQUhFTEVLUlEwQklBTkJCR29oQWlBREtBSUVJZ1FOQUFzTElBb2dBellDRENBTElBSW9BZ0FpQXdSL1FRQUZRUndRRlNFRElBb2dFVUVFYWpZQ0JDQURJQWNvQWdnMkFoZ2dBeUFIS1FJQU53SVFJQXBCQVRvQUNDQVJJQW9vQWd3Z0FpQURFUGdDSUFwQkFEWUNBQ0FLRUlzQlFRRUxPZ0FNSUFzZ0F6WUNDQ0FLUVJCcUpBQWdCaUFMS0FJSU5nS2dBaUFHSUFzdEFBdzZBS1FDSUF0QkVHb2tBQ0FHTFFDa0FrVUVRQ0FKUVFScklnTkJIMHRCQVNBRGRFR0xnSUNBZUhGRmNnMEJJQVpCb0FKcUlnRWdCVUYySUFVZ0NCQWdFQkFnQVVIb21Ra1FEaG9nQVNBSUVDRWFJQUZCeVlzSkVBNGFJQUVnREJBaEdpQUJRY1drQ2hBT0dpQUdRZkFBYWlJQ0lBVWdDUkMvQXlBQklBSVFFaG9nQVVHSS9RY1FEaG9nQmlnQzNBTWhBeUFDRUE4YUlBRVFFUXdFQzBFRklRUUNRQUpBSUFsQkJHc09BZ0VBQWd0QkJDRUVDeUFHSUF3MkFuZ2dCaUFJTmdKMElBWWdCRFlDY0NBR1FmQUFhaUVLSUFaQk1Hb2lBeWdDQkNFSElBTkJCR29pQWlFREEwQWdCd1JBSUFNZ0J5QUhRUkJxSUFvUXNRb2lDeHNoQXlBSFFRUnFJQWNnQ3hzb0FnQWhCd3dCQ3dzQ1FDQUNJQU5IQkVBZ0NpQURRUkJxRUxFS1JRMEJDeUFDSVFNTElBTWdFRVlOQUNBR1FhQUNhaUlCSUFWQmRpQUZJQWdRSUJBUUlBRkI2SmtKRUE0YUlBRWdDQkFoR2lBQlFjbUxDUkFPR2lBQklBd1FJUm9nQVVHMm93b1FEaG9nQmtIWUFHb2lBaUFGSUFrUXZ3TWdBU0FDRUJJYUlBRkI2YzRLRUE0YUlBWkJpQUZxSWdjZ0JTQUVFTDhESUFFZ0J4QVNHaUFCUVpmOUJ4QU9HaUFHS0FMY0F5RURJQWNRRHhvZ0FoQVBHaUFCRUJFTUF3c2dBVUhNQUdvaEFRd0JDd3NnQmtHZ0Ftb2lBU0FGUVhZZ0JTQUpFQ0FRRUNBQlFlaVpDUkFPR2lBQklBa1FJUm9nQVVHMm93b1FEaG9nQmtFWWFpSUNJQVVnQ0JDL0F5QUJJQUlRRWhvZ0FVSHB6Z29RRGhvZ0JrSHdBR29pQnlBRklBUVF2d01nQVNBSEVCSWFJQUZCbC8wSEVBNGFJQVlvQXR3RElRTWdCeEFQR2lBQ0VBOGFJQUVRRVFzZ0JrRXdhaUFHS0FJMEVOa05JQVpCbUFGcUlBWW9BcHdCRU5nTklBTU5BQ0FGRUtZS0lnRW9BZ1FoQXlBQktBSUFJUUlDUUFOQUFrQUNRQ0FDSUFOSEJFQWdBaWdDSkNFRUlBSW9BZ0FnQlJDT0ZpRUJBa0FnQkVVRVFDQUJEUU1nQmtHZ0Ftb2lCeUFGUVh3Z0JTQUNLQUlBRUNBUUVDQUhRY2pQQ2hBT0dpQUhJQUlvQWdBUUlSb2dCMEdDOUFjUURob01BUXNnQVVVTkFpQUdRYUFDYWlJSElBVkJmQ0FGSUFJb0FnQVFJQkFRSUFkQnI4OEtFQTRhSUFjZ0FpZ0NBQkFoR2lBSFFkSHpCeEFPR2dzZ0JpZ0MzQU1oQXlBSEVCRWdBdzBGQ3lBRktBS1VBMEVEUncwRElBVkJ0QUZxSVFFZ0JrRXdhaUlIRUZVZ0JrR1lBV29pQTBIZ2pBNDJBamdnQTBITWpBNDJBZ0FnQXlBRFFRUnFJZ0lRalJnaUJFSE1qQTQyQWdBZ0EwSGdqQTQyQWpnZ0FoQ1hDaUlEUWVDRURqWUNBQ0FEUVNCcUlnSVFWU0FEUVJBMkFqQWdBMEVBTmdJc0lBSWdCeERnQWlBRFFRQTJBaXdDUUNBREtBSXdJZ2RCQ0hFRWZ5QURJQUlRZXlBQ0VEdHFOZ0lzSUFNZ0FoQjdJQUlRZXlBREtBSXNFTUVFSUFNb0FqQUZJQWNMUVJCeFJRMEFJQU1nQWhBN0lnY2dBaEI3YWpZQ0xDQUNJQUlRbXdFUWRpQURJQUlRZXlBQ0VIc2dBaEE3YWhDWkJpQURMUUF3UVFOeFJRMEFBMEFnQjBFQVNBUkFJQU5CLy8vLy93Y1Fqd2NnQjBILy8vLy9CMnNoQnd3QkN3c2dCMFVOQUNBRElBY1Fqd2NMQTBBZ0FTZ0NBQ0lCUlFSQVFRQWhBd3dEQ3lBRklBRW9BZ3dpQnlnQ0tDSUtFTjRCSWdOQkJHb2hDQ0FES0FJQUlRSURRQ0FDSUFoR0RRRUNRQUpBSUFJb0FoQWlBMEVWYXc0REFBRUFBUXNnQWlnQ0lDRUJJQVJCNjhVQVFhVzJCQ0FEUVJkR0d4QU9HaUFFUWFPcUNoQU9JUUlnQmtHZ0Ftb2lBeUFGSUFvUUtpQUNJQU1RRWhvZ0F4QVBHaUFCUVg5SEJFQWdCRUcyd3drUURpQUJFTHdDUWUvMkNCQU9HZ3NnQkVHTzNnY1FEaG9nQmtHZ0Ftb2lBU0FGUVhZZ0J4QVFJQVpCR0dvaUFpQUVRUVJxRUVJZ0FTQUNFQklhSUFZb0F0d0RJUU1nQWhBUEdpQUJFQkVNQkFzZ0FoQk1JUUlNQUFzQUN3QUxJQUpCeEFOcUlRSU1BUXNMSUFRUXV3RWFJQVpCTUdvUUR4b2dBdzBCQ3lBRlFld0NhaUVMSUFVcEE0QUJRZ0tESVM4Z0JTZ0M2QUloQVFOQUlBRWdDMFlFUUVFQUlRTU1BZ3NDUUNBQktBSWNSUTBBSUFVZ0FTZ0NFQkFnSWdRRVFDQUVMd0VlUWNrQVJnMEJJQUZCR0dvaERDQUJLQUlVSVFJRFFDQUNJQXhHRFFJQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ0tBSVFJZ05CR0dzT0NBb01DUWtNREFZQkFBc0NRQ0FERGdRRkRBY0hBQXNnQTBIMUltdEJBa2tOQnlBdlVDQURRU2RIY2cwTElBUXZBUjVCOHdCR0RRRWdCa0dnQW1vaUJ5QUZRWFlnQkJBUUlBZEI2cWdIRUE0YUlBWW9BdHdESVFNZ0J4QVJEQW9MSUFRb0FpaEZEUUlnQWlnQ0dDQUNLQUlVYTBFRVJ3MEJJQVF2QVI0aEF3SkFJQUlvQWlBaUIwRi9SZ1JBQWtBQ1FBSkFJQU5CTjJzT0JRSUFBQUFCQUFzZ0JrR2dBbW9pQnlBRlFYWWdCQkFRSUFkQjJxMElFQTRhSUFZb0F0d0RJUU1nQnhBUkRBMExBa0FDUUNBRVFRSVFHeUlEUVFGckRnTUNBUUlBQ3lBRFFmLy8vLzhIUmcwQkN5QUdRYUFDYWlJSElBVkJkaUFFRUJBZ0IwSEcxd2tRRGhvZ0J5QURFQ0VhSUFZb0F0d0RJUU1nQnhBUkRBd0xJQVVnQkNnQ0pDSUhFSUVGUlEwQklBVWdCeEFnUVFJUUd5RUhEQUVMSUFOQkhrY0VRQ0FHUWFBQ2FpSUhJQVZCY2lBRUVCQWdCMEdQN1FjUURob2dCaWdDM0FNaEF5QUhFQkVNQ3dzZ0JDZ0NBQ0FIUVFKMGFpZ0NDQ0VIQ3lBRktBSUFLQUlBRUVkRkRRb2dCU0FIRUhCQkhFWUVRQ0FGSUFjUUlDZ0NBQ2dDQ0NFSEN3SkFJQVVnQnhESEFRMEFJQVVnQnhDdUFRMEFJQVpCb0FKcUlnb2dCVUYySUFRUUVDQUdRWmdCYWlJSUlBVkJ2Q1lRTnlBS0lBZ1FFaG9nQ2tHQ3V3b1FEaG9nQmtFd2FpSUpJQVVnQnhBcUlBb2dDUkFTR2lBS1FmSFBBUkFPR2lBR0tBTGNBeUVESUFrUUR4b2dDQkFQR2lBS0VCRU1DZ3NnQWlnQ0ZDZ0NBQ0lEUVFSUEJFQWdCa0dnQW1vaUJ5QUZRWFlnQkJBUUlBWkJtQUZxSWdvZ0JVRzRKaEEzSUFjZ0NoQVNHaUFIUWYzMkJoQU9HaUFHS0FMY0F5RURJQW9RRHhvZ0J4QVJEQW9MSUFVZ0J4QkZJUW9DUUNBRklBY1FQaUlIUVJCSEJFQWdCMEhBQUVZTkFTQUhRU0JIRFF3TElBTWdDbW9pQ0VFRlNRMExJQVpCb0FKcUlnY2dCVUYySUFRUUVDQUdRWmdCYWlJS0lBVkJ1U1lRTnlBSElBb1FFaG9nQjBITm93b1FEaG9nQnlBREVDRWFJQWRCODZNS0VBNGFJQWNnQ0VFQmF4QWhHaUFIUWJQM0JoQU9HaUFHS0FMY0F5RURJQW9RRHhvZ0J4QVJEQW9MSUFwQkEwOEVRQ0FHUWFBQ2FpSUhJQVZCZGlBRUVCQWdCa0dZQVdvaUNpQUZRWmM4RURjZ0J5QUtFQklhSUFkQng4b0JFQTRhSUFZb0F0d0RJUU1nQ2hBUEdpQUhFQkVNQ2dzZ0EwRjljVUVCUmdSQUlBWkJvQUpxSWdjZ0JVRjJJQVFRRUNBR1FaZ0JhaUlLSUFWQnV5WVFOeUFISUFvUUVob2dCMEc4dUFFUURob2dCaWdDM0FNaEF5QUtFQThhSUFjUUVRd0tDeUFLUVFGMElBTnFJZ2hCQlVrTkNpQUdRYUFDYWlJSElBVkJkaUFFRUJBZ0JrR1lBV29pQ2lBRlFib21FRGNnQnlBS0VCSWFJQWRCemFNS0VBNGFJQWNnQXhBaEdpQUhRZk9qQ2hBT0dpQUhJQWhCQVdzUUlSb2dCMEd6OXdZUURob2dCaWdDM0FNaEF5QUtFQThhSUFjUUVRd0pDd0pBSUFVb0FnQW9BZ0FRUjBVTkFDQUNLQUlVS0FJQVFRSkpEUUFnQmtHZ0Ftb2lCeUFGUVhZZ0JCQVFJQVpCbUFGcUlnb2dCVUhESkJBM0lBY2dDaEFTR2lBSFFjYUpDQkFPR2lBR0tBTGNBeUVESUFvUUR4b2dCeEFSREFrTElBUW9Ba1FoQ2lBRUtBSkFJUWNEUUNBSElBcEdEUW9DUUNBSEtBSUFJZ012QVI0aUNFSHpBRVlOQUNBSUVMd0lEUUFnQXhETkJRMEFJQU12QVI0UXZRZ05BQ0FETHdFZVFUNUhCRUFnQmtHZ0Ftb2lCeUFGUVhZZ0JCQVFJQWRCeStvSEVBNGFJQVlvQXR3RElRTWdCeEFSREFzTElBY29BZ1JCQWtjRVFDQUdRYUFDYWlJSElBVkJkaUFFRUJBZ0IwSEw2Z2NRRGhvZ0JpZ0MzQU1oQXlBSEVCRU1Dd3NDUUNBRklBVWdCU0FEUVFBUUd4QWdRUUFRR3hBZ0lnTkJBaEFiSWdnUXJnRUVRQ0FGSUFnUVBrRVFSZzBCQ3lBR1FhQUNhaUlISUFWQmRpQUVFQkFnQjBIYXFRY1FEaG9nQmlnQzNBTWhBeUFIRUJFTUN3c2dBMEVCRUJzaUEwRU1UVUVBUVFFZ0EzUkJqaVJ4R3lBRFFlVXBSbklOQUNBR1FhQUNhaUlISUFWQmRpQUVFQkFnQjBITXNnY1FEaG9nQmlnQzNBTWhBeUFIRUJFTUNnc2dCMEVJYWlFSERBQUxBQXRCa1o0SlFhaWFBa0h0REVIczJnSVFBQUFMUWZ5c0NVR29tZ0pCNnd4QjdOb0NFQUFBQ3lBRUx3RWVFTkFDUlEwR0lBSW9BaUJCZjBjRVFDQUVMd0VlUVI1R0RRY0xJQVpCb0FKcUlnY2dCVUYySUFRUUVDQUhRYTZWQkJBT0dpQUdLQUxjQXlFRElBY1FFUXdGQ3lBRUx3RWVJZ05CTzBZTkJTQURRUjVHSUFJb0FpQkJmMGR4RFFVZ0JrR2dBbW9pQnlBRlFYWWdCQkFRSUFkQjk0MEVFQTRhSUFZb0F0d0RJUU1nQnhBUkRBUUxJQVFvQWlnRVFDQUVMd0VlUVI1R0RRVWdCa0dnQW1vaUJ5QUZRWFlnQkJBUUlBZEJxWjREUVpHZUF5QURRUUpHR3hBT0dpQUhRZHZ0QnhBT0dpQUdLQUxjQXlFRElBY1FFUXdFQzBIOHJBbEJxSm9DUWRnTlFjL2JBaEFBQUFzZ0JDOEJIaUlEUWY0QWF5SUhRUVpOUVFCQkFTQUhkRUhWQUhFYklBTkJERVlnQTBIRUFVWnljZzBESUFaQm9BSnFJZ2NnQlVGMklBUVFFQ0FIUWZxMUFrSHJ0UUlnQWlnQ0VFSDFJa1liRUE0YUlBZEI2SVFLRUE0YUlBY2dCQzhCSGhBcEVBNGFJQVlvQXR3RElRTWdCeEFSREFJTFFaejRBa0dqZ2dVZ0EwRWFSaHNoQXlBRUtBSWtJZ2RGQkVBZ0JrR2dBbW9pQnlBRlFYWWdCQkFRSUFjZ0F4QU9HaUFIUVlMeUFCQU9HaUFHS0FMY0F5RURJQWNRRVF3Q0N3SkFJQVVnQnhBZ0lnY0VRQ0FITHdFZVFSTkdCRUFnQmtHZ0Ftb2lCeUFGUVhZZ0JCQVFJQWNnQXhBT0dpQUhRWU9UQkJBT0dpQUdLQUxjQXlFRElBY1FFUXdFQ3lBQ0tBSVFRUnRIRFFRZ0FpZ0NHQ0FDS0FJVUlnTnJRUVJIRFFFZ0JTQUVJQU1vQWdBUXlRMGhBd3dEQ3lBR1FhQUNhaUlISUFWQmRpQUVFQkFnQnlBREVBNGFJQWRCc1pNRUVBNGFJQVlvQXR3RElRTWdCeEFSREFJTFFlS2VDVUdvbWdKQnZBeEJtZHNDRUFBQUN5QUVLQUlvQkVBZ0FpZ0NJRUYvUncwQ0lBUW9BaVFoQXdKQUFrQUNRQ0FFTHdFZVFUZHJEZ1VDQUFBQUFRQUxJQVpCb0FKcUlnY2dCVUYySUFRUUVDQUhRY0t1Q0JBT0dpQUdLQUxjQXlFRElBY1FFUXdEQ3lBRVFRSVFHMEYrY1VFR1J3MEFJQVV0QUt3RERRTUxJd0JCRUdzaUJ5UUFJQWNnQXpZQ0RDQUZRWXdFYWlBSFFReHFFSjRDSVFvZ0IwRVFhaVFBSUFvTkFpTUFRUkJySWdja0FDQUhJQU0yQWd3Z0JVRzBCR29nQjBFTWFoQ2VBaUVLSUFkQkVHb2tBQ0FLRFFJakFFRVFheUlISkFBZ0J5QUROZ0lNSUFWQjNBUnFJQWRCREdvUW5nSWhBeUFIUVJCcUpBQWdBdzBDSUFaQm9BSnFJZ2NnQlVGMklBUVFFQ0FIUWIzcURCQU9HaUFIUWZXU0FVSEw4d0VnQlMwQXJBTWJFQTRhSUFZb0F0d0RJUU1nQnhBUkRBRUxRZnlzQ1VHb21nSkI3UXRCK05zQ0VBQUFDeUFERFFVTElBSVFUQ0VDREFBTEFBdEJxUzlCcUpvQ1FaZ09RYkRiQWhBQUFBc2dBUkJNSVFFTUFBc0FDeUFHUWVBRGFpUUFJQU1pQVEwQkFuOGpBRUdBQTJzaUNDUUFJQVVvQXFRQklRSWdCU2dDb0FFaEF5QUZLQUlVUVlDSUJFa2hCd05BQWtBQ1FDQUNJQU5IQkVBZ0F5OEJIaUVCQWtBZ0IwVUVRQ0FCUVR0SERRUWdBMEVDRUJ0QkIwY05BUXdFQ3lBQlFUdEhEUU1nQTBFQ0VCdEJBVVlOQUNBRFFRSVFHMEVEUncwREN5QUlRUUEyQXFBQklBaENBRGNEbUFFZ0NFRUFOZ0tJQVNBSVFnQTNBNEFCSUFNb0FrUWhBU0FES0FKQUlRb0RRQ0FCSUFwR0JFQkJBQ0VFQTBBZ0NDZ0NoQUVnQ0NnQ2dBRWlBV3RCQW5VZ0JFMEVRQ0FJS0FLWUFTSUJJQWdvQXB3QklnUWdCQ0FCYTBFQ2RSRFlDa0VCZEJEVURTQUlRWmdCYWlBSUtBS1lBU0FJS0FLY0FSRHBEU0FJS0FLY0FSRG9EU0FJUVFBMkFtQWdDRUlBTndOWUlBZ29BcHdCSVFFZ0NDZ0NtQUVoQkFOQUlBRWdCRVlFUUNBSUtBSllJQWdvQWx3US9Bb2dDRUhZQUdvZ0NDZ0NXQ0FJS0FKY0VPa05JQWdvQWx3UTZBMGdDQ2dDWENFQklBZ29BbGdoQ3dKQUEwQWdBU0FMUmdSQVFRQWhDZ3dDQ3lBRklBc29BZ0FpQmhEZURTSUVLQUlFSVFrZ0JDZ0NBQ0VFQWtBRFFDQUVJQWxIQkVBZ0JDZ0NFQ0VNSUFRb0Fnd2hDZ05BSUFvZ0RFWU5BeUFLS0FJQUlSRWdDa0VFYWlFS0lCRWdBeWdDS0VjTkFBc2dCRUVZYWlFRURBRUxDeUFMUVFScUlRc01BUXNMSUFoQndBRnFJZ0VnQlVGMklBTVFFQ0FCUWFmcEJoQU9HaUFCSUFNb0FpZ1FJUm9nQVVHdWlRa1FEaG9nQVNBRUVCSWFJQUZCditrR0VBNGFJQUVnQmhBaEdpQUJRZGJjQkJBT0dpQUlLQUw4QWlFS0lBRVFFUXNnQ0VIWUFHb1FNaG9nQ0VHQUFXb1FNaG9nQ0VHWUFXb1FNaG9nQ2cwSERBZ0xJQVVnQkNnQ0FDZ0NBQkNsQ2lJS0tBSUVJUVlnQ2lnQ0FDRUtBMEFnQmlBS1JnUkFJQVJCQkdvaEJBd0NCU0FJSUFvb0FnQTJBc0FCSUFwQkJHb2hDaUFJUWRnQWFpQUlRY0FCYWhEZUFnd0JDd0FMQUFzQUJTQUlJQUVnQkVFQ2RHb29BZ0FpQVNnQ09DSUtOZ0pZQWtBZ0NnUkFJQWhCbUFGcUlBaEIyQUJxRU04QkRBRUxJQUVvQWtRaEJpQUJLQUpBSVFvRFFDQUdJQXBHRFFFZ0NDQUtLUUlBTndQQUFTQUtRUWhxSVFvZ0NFR0FBV29nQ0VIQUFXb1F6d0VNQUFzQUN5QUVRUUZxSVFRTUFRc0FDd0FGSUFnZ0Npa0NBRGNEd0FFZ0NrRUlhaUVLSUFoQmdBRnFJQWhCd0FGcUVNOEJEQUVMQUFzQUMwRUFJUW9nQlNnQ0FDZ0NBQkJIUlEwQUlBVW9BcVFCSVJzZ0JTZ0NvQUVoRVFOQUlCRWdHMGNFUUNBUkx3RWVJZ3BCRDBZRVFDQVJRUUFRRzBFRVRRUkFJQWhDQURjRFlDQUlRZ0EzQTFnZ0NFR0FnSUQ4QXpZQ2FDQUlRZ0EzQTBnZ0NFSUFOd05BSUFoQmdJQ0EvQU0yQWxBZ0NFSUFOd013SUFoQ0FEY0RLQ0FJUVlDQWdQd0ROZ0k0SUFoQ0FEY0RHQ0FJUWdBM0F4QWdDRUdBZ0lEOEF6WUNJRUVESVJBRFFBSkFJQkVvQWhBZ0VTZ0NER3RCQkhVZ0VFMEVRRUVBSVFvTUFRc2dDQ0FSSUJBUUd5SUJOZ0lNQWtBZ0JTQUJFQ0FpRFVFQ0VCc2lBVUY5Y1VFQlJ3MEFJQWhCd0FGcUlBaEJFR29nQ0VFTWFoQ1dBU0FJTFFERUFVVU5BRUVBSVJRZ0VVRUFFQnRCQkVZaUdDQU5RUUlRR3lJYVFRTkdJaE54SVI0Z0JTQUZJQTFCQUJBYkVDQkJBaEFiSWc4UUlDRUpJQVVnRFNnQ0tCRGVBU0lEUVFScUlSOGdDRUhZQUdvZ0NFRkFheUFCUVFGR0d5RVZJQU1vQWdBaENrRUFJUlpCQUNFRFFRQWhCRUVBSVF4QkFDRUdRUUFoQWtFQUlRZEJBQ0VMQWtBRFFBSkFJQU1oQVNBS0lCOUdEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQW9vQWhBaUYwRWVhdzREQVFJREFBdEJBU0VEQWtBZ0YwRUxhdzRGQ3dZR0JnY0FDeUFYUVprcFJnMEVJQmRCcFNsSERRVWdHQTBESUFoQndBRnFJZ0VnQlVGeUlBMFFFQ0FJUVpnQmFpSURJQVZCK1RRUU55QUJJQU1RRWhvZ0FVSFFxZ0VRRGhvZ0NDZ0MvQUloQ2lBREVBOGFJQUVRRVF3SkN5QUtLQUlVS0FJQUlRRWdDMEVCY1VVRVFDQUJJUWRCQVNFTERBWUxRUUVoQ3lBQklBZEdEUVVnQ0VIQUFXb2lBU0FGUVhJZ0RSQVFJQUZCeDU4QkVBNGFJQWdvQXZ3Q0lRb2dBUkFSREFnTElBb29BaFFvQWdBaEFTQUNRUUZ4UlFSQUlBRWhCa0VCSVFJTUJRdEJBU0VDSUFFZ0JrWU5CQ0FJUWNBQmFpSUJJQVZCY2lBTkVCQWdBVUhrbmdFUURob2dDQ2dDL0FJaENpQUJFQkVNQndzZ0hrVUVRQ0FJUWNBQmFpSUJJQVZCY2lBTkVCQWdBVUdQdkFFUURob2dDQ2dDL0FJaENpQUJFQkVNQndzZ0NpZ0NGQ2dDQUNFQklBeEZCRUFnQVNFRVFRRWhEQXdFQzBFQklRd2dBU0FFUmcwRElBaEJ3QUZxSWdFZ0JVRnlJQTBRRUNBQlFibWVBUkFPR2lBSUtBTDhBaUVLSUFFUUVRd0dDMEVCSVJRZ0FTRURJQWt2QVI1Qi92OERjVUVjUmcwQ0lBaEJ3QUZxSWdFZ0JVRnlJQTBRRUNBSVFaZ0JhaUlESUFWQitqUVFOeUFCSUFNUUVob2dBVUgrK3dBUURob2dDQ2dDL0FJaENpQURFQThhSUFFUUVRd0ZDMEVCSVJZTElBRWhBd3NnQ2hCTUlRb01BUXNMQWtBQ1FBSkFBa0FDUUFKQUFrQWdFVUVBRUJzaUEwRUJhdzRFQVFJREJBQUxJQU5CbENsSElCcEJBMGR5RFFVZ0ZrVU5CQXdGQ3lBQlFRRnhSUTBEREFRTElBRWdFM0pCQVhGRkRRSU1Bd3NnRTBVTkFRd0NDeUFUSUJSRmNnMEJDeUFKTHdFZVFmNy9BM0ZCSEVjTkFDQUZJQWxCQVJBYklnOFFJQ0VKQ3lBSkx3RWVRUjVHQkVBZ0JTQVBRUXNRd0FJTkFnc2dCU0FQUVFJUXdBSWdDM0pCQVhGRkJFQWdDUzhCSGlFQ0lBaEJ3QUZxSWdFZ0JVRnlJQTBRRUNBSVFaZ0JhaUlESUFWQnRTWkJ0Q1lnQWtFZVJoc1FOeUFCSUFNUUVob2dBVUhRNGdJUURob2dDQ2dDL0FJaENpQURFQThhSUFFUUVRd0JDeUFJUWJBQmFrR3RLMEhhS3lBVEd4QVVJUTBDUUFKQUlBdEJBWEVFUUVFQklRc2dDUzhCSGtFY1JnUkFJQWhCd0FGcUlBVWdDVUVDRUJzUTNRRWdDQ2dDeEFGQkFTQUlMUURCQVJ0QkFTQUlMUURBQVJzaEN5QUZJQWxCQVJBYkVDQWhDUXNnQ0VFb2FpQVZJQVJCQVVZYklCVWdEQnNoQWtFQUlRUURRQ0FFSUF0R0RRSWdDRUVBTmdLWUFTQUZJQWtnQ0VHWUFXb1FyUWdpQ2cwRElBVWdDUkRTRFNFQklBZ29BcGdCSWdvZ0JHd2dCMm9pREVFQ2RDSURRZi8vQUVzTkFpQURJQVpxSWc4Z0FXb2dDaUFNYWtFQ2RDQUJHeUVNSUE4Z0F5QUJHeUVLQWtBRFFDQUlJQW8yQW9BQklBb2dERThOQVNBSVFjQUJhaUFDSUFoQmdBRnFFSllCSUFndEFNUUJCRUFnQ0NnQ2dBRkJBV29oQ2d3QkN3c2dDRUhBQVdvaUFTQUZRWElnRVJBUUlBRkJ1cW9LRUE0YUlBRWdEUkFTR2lBQlFlV0pDaEFPR2lBQklBZ29Bb0FCUVFKMkVDRWFJQUZCNThzSkVBNGFJQUVnQ0NnQ2dBRkJBM0VRSVJvZ0NDZ0MvQUloQ2lBQkVCRU1CQXNnQkVFQmFpRUVEQUFMQUFzZ0NFSUFOd09nQVNBSVFnQTNBNWdCSUFoQmdJQ0EvQU0yQXFnQklBaENBRGNEaUFFZ0NFSUFOd09BQVNBSVFZQ0FnUHdETmdLUUFTQUZJQThRM2dFaUFVRUVhaUVESUFFb0FnQWhDZ05BQWtBQ1FDQURJQXBHQkVCQkFTRUVBMEFnQkNBSktBSVFJQWtvQWd4clFRUjFUeUlMQkVBZ0J5RUtEQU1MSUFnZ0JFRUJheUlHTmdMQUFTQUlRWmdCYWlBSVFjQUJhaERzQVNJQlJRUkFJQWhCd0FGcUlnRWdCVUZ5SUFrUUVDQUlRZkFBYWlJRElBVkJ0eVlRTnlBQklBTVFFaG9nQVVIR3d3a1FEaG9nQVNBR0VDRWFJQUZCZ01vQUVBNGFJQWdvQXZ3Q0lRb2dBeEFQR2lBQkVCRU1Bd3NnQVNnQ0RDRURJQVVnQ1NBRUVCc1FJQ0VNSUFoQkFEWUNjQ0FGSUF3Z0NFSHdBR29RclFnaUNnMENJQVVnREJEU0RTRUNJQWdnQmpZQ3dBRWdDRUdBQVdvZ0NFSEFBV29RcVFJRWZ5QUlJQVkyQXNBQklBaEJnQUZxSUFoQndBRnFFTkFCS0FJQUJVRUFDeUVCQWtBZ0EwRUNkQ0lHUWYvL0FFc05BQUpBQWtBZ0FrRUJhMEVDU3cwQUlBd3ZBUjVCSEVjTkFDQUJJQUVnQW1vaUFpQUJJQUpMR3lFR0lBTWhBZ05BSUFJZ0NDZ0NjQ0FEYWs4TkF5QUNRUUowSVF3Z0FTRUtBMEFnQmlBS1J3UkFJQWdnQ2lBTWFqWUNiQ0FJUWNBQmFpQVZJQWhCN0FCcUVKWUJJQWd0QU1RQlJRMEVJQXBCQVdvaENnd0JDd3NnQWtFQmFpRUNEQUFMQUFzZ0NpQUhJQW9iSVFjZ0FTQUdhaUlCSUFKcUlBZ29BbkFnQTJwQkFuUWdBaHNoQXlBQklBWWdBaHNoQ2dOQUlBZ2dDallDYkNBRElBcE5EUUlnQ0VIQUFXb2dGU0FJUWV3QWFoQ1dBU0FJTFFERUFRUkFJQWdvQW14QkFXb2hDZ3dCQlNBSVFjQUJhaUlCSUFWQmNpQVJFQkFnQVVHNnFnb1FEaG9nQVNBTkVCSWFJQUZCNVlrS0VBNGFJQUVnQ0NnQ2JFRUNkaEFoR2lBQlFlZkxDUkFPR2lBQklBZ29BbXhCQTNFUUlSb2dDQ2dDL0FJaENpQUJFQkVNQmdzQUN3QUxJQWhCd0FGcUlnRWdCVUZ5SUJFUUVDQUJRYnFxQ2hBT0dpQUJJQTBRRWhvZ0FVSGxpUW9RRGhvZ0FTQUNFQ0VhSUFGQjU4c0pFQTRhSUFFZ0NoQWhHaUFJS0FMOEFpRUtJQUVRRVF3REN5QUVRUUZxSVFRTUFBc0FDd0pBQWtBZ0NpZ0NFRUVlYXc0Q0FBRURDeUFJSUFvb0FpQTJBc0FCSUFoQm1BRnFJQWhCd0FGcUVPd0JJZ0ZGQkVBZ0NpZ0NGQ2dDQUNFQklBZ2dDaWdDSURZQ3dBRWdDRUdZQVdvZ0NFSEFBV29RMEFFZ0FUWUNBQXdEQ3lBQktBSU1JQW9vQWhRb0FnQkdEUUlnQ0VIQUFXb2lBU0FGUVhJZ0NSQVFJQUZCeHNNSkVBNGFJQUVnQ2lnQ0lCQzhBaG9nQVVHK2hnRVFEaG9nQ0NnQy9BSWhDaUFCRUJGQkFDRUxEQUVMSUFnZ0NpZ0NJRFlDd0FFZ0NFR0FBV29nQ0VIQUFXb1E3QUVpQVVVRVFDQUtLQUlVS0FJQUlRRWdDQ0FLS0FJZ05nTEFBU0FJUVlBQmFpQUlRY0FCYWhEUUFTQUJOZ0lBREFJTElBRW9BZ3dnQ2lnQ0ZDZ0NBRVlOQVNBSVFjQUJhaUlCSUFWQmNpQUpFQkFnQVVIR3d3a1FEaG9nQVNBS0tBSWdFTHdDR2lBQlFaZUdBUkFPR2lBSUtBTDhBaUVLSUFFUUVVRUFJUXNMSUFoQmdBRnFFRThnQ0VHWUFXb1FUeUFMUlEwRERBSUxJQW9RVENFS0RBQUxBQXRCQUNFS0N5QU5FQThhQ3lBS0RRRUxJQkJCQVdvaEVBd0JDd3NnQ0VFUWFoQlBJQWhCS0dvUVR5QUlRVUJyRUU4Z0NFSFlBR29RVHlBS0RRUUxJQkV2QVI0aENnc2dFVUhNQUdvaEVTQUtRZi8vQTNGQkUwY05BUXNMUVFBaENnc2dDRUdBQTJva0FDQUtEQUlMSUFOQnpBQnFJUU1NQUFzQUN5SUJEUUVqQUVIUUFHc2lDaVFBSUFwQkNHb2lEVUlBTndNQUlBcENBRGNER0NBS1FTaHFJZ0ZDQURjREFDQUtRZ0EzQXhBZ0NpQU5OZ0lFSUFvZ0NrRVVhaUlRTmdJZ0lBb2dBVFlDSkNBS0lBVTJBZ0FnQlVIc0Ftb2hFeUFLUVNScUlRa2dDa0VFY2lFTUlBVW9BdWdDSVFjQ1FBSkFBa0FEUUNBSElCTkhCRUFDUUNBSEtBSWNSUTBBSUFvb0FnQWdCeWdDRUJBZ0lnSkZEUU1nQjBFWWFpRVVJQWNvQWhRaEFRTkFJQUVnRkVZTkFTQUJLQUlRUVF0R0JFQkJBQ0VFSXdCQmtBSnJJZ01rQUNBQlFSQnFJZ1lvQWdRb0FnQWhDQUpBQWtBZ0NpZ0NBQ2dDQUNnQ0FCQkhSUTBBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSURpd1BEak1DQWh3QkVBa0xDeGdaRnd3RERRVVJFeEl6QkFnR0d3WUdCaDB6TXpNek16TVZNeFF6RkJVYUNnQUxBa0FnQ0VISEtXc09JZ0VCQVFFQkFRRUJBVE16QVFFQkFUTXpNek16TXpNek16TXpNek16TXpNekFRRUFDd0pBSUFoQndDSnJEaDBXRmhZV0ZqTXpNeDhmSURNek16TXpMek16TXpNeklqTWhNek16TUFBTElBaEJ3Q0JyUVFWSkRSMENRQ0FJUWFZcGF3NElCd2N6TXpNekpDTUFDeUFJUWY0cGEwRUVTUTBkSUFoQmxpZEdEU1FnQ0VHUUtVWU5KU0FJUVlVdlJ3MHlDeUFLS0FJQUtBSUFLQUlBRUVkRkRTd2dCaWdDQkNnQ0FDSUVRY2NwYXc0aUtDZ25KeWNuS3lzbUtpb3BLU3NtS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9tSmlVTElBb2dCaUFDSUFJZ0FoRG1GaUVFRERBTElBb29BZ0FvQWdBb0FnQVFSd1JBSUFNZ0FqWUNLQ0FESUFvMkFpUWdBMEdrOHg4MkFpQWdBeUFEUVNCcUlnZzJBakFnQ2lBR0lBSkJCQ0FJRU1zRklRUWdDQkFXSUFRTk1Bc2dDaUFHSUFJZ0FpQUNFT1VXSVFRTUx3c2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWNqekh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU1FS0lRUWdDQkFXSUFRTkx3c2dDaUFHSUFJZ0FpQUNFT1FXSVFRTUxnc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWV6ekh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRVBvTklRUWdDQkFXSUFRTkxnc2dDaUFHSUFJZ0FpQUNFT01XSVFRTUxRc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUdLQUlFS0FJQU5nSXNJQU1nQWpZQ0tDQURJQW8yQWlRZ0EwR1E5QjgyQWlBZ0F5QURRU0JxSWdnMkFqQWdDaUFHSUFKQkF5QUlFTFlJSVFRZ0NCQVdJQVFOTFFzZ0NpQUdJQUlnQWlBQ0VPSVdJUVFNTEFzZ0NpZ0NBQ2dDQUNnQ0FCQkhCRUFnQXlBR0tBSUVLQUlBTmdJc0lBTWdBallDS0NBRElBbzJBaVFnQTBHMDlCODJBaUFnQXlBRFFTQnFJZ2cyQWpBZ0NpQUdJQUpCQXlBSUVNc0ZJUVFnQ0JBV0lBUU5MQXNnQ2lBR0lBSWdBaUFDRU9FV0lRUU1Ld3NnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdJb0lBTWdDallDSkNBRFFkajBIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVQb05JUVFnQ0JBV0lBUU5Ld3NnQ2lBR0lBSWdBaUFDRU9BV0lRUU1LZ3NnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdJb0lBTWdDallDSkNBRFFmejBIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5LZ3NnQ2lBR0lBSWdBaUFDRU44V0lRUU1LUXNnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdJb0lBTWdDallDSkNBRFFhRDFIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5LUXNnQ2lBR0lBSWdBaUFDRU40V0lRUU1LQXNDUUNBS0tBSUFLQUlBS0FJQUVFZEZEUUFnQmlnQ0VFRi9Sd1JBSUFNZ0FqWUNMQ0FESUFZMkFpZ2dBeUFLTmdJa0lBTkJ4UFVmTmdJZ0lBTWdBMEVnYWlJSU5nSXdJQW9nQmlBQ0lBZ1F6d0loQkNBSUVCWWdCRVVOQVF3cEN5QURJQUkyQWl3Z0F5QUdOZ0lvSUFNZ0NqWUNKQ0FEUWVqMUh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU4wV0lRUWdDQkFXSUFRTktBc2dDaUFHSUFJZ0FpQUNFTndXSVFRTUp3c2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWRUMkh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFRTkp3c2dDaUFHSUFJZ0FpQUNFTnNXSVFRTUpnc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWZqMkh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBa0VDSUFnUXl3VWhCQ0FJRUJZZ0JBMG1DeUFLSUFZZ0FpQUNJQUlRMmhZaEJBd2xDeUFLSUFZZ0FpQUNJQUlRMlJZaEJBd2tDeUFLSUFZZ0FpQUNJQUlRMkJZaEJBd2pDd0pBSUFvb0FnQW9BZ0FvQWdBUVIwVU5BQ0FHS0FJUVFYOUhCRUFnQXlBQ05nSW9JQU1nQ2pZQ0pDQURRYno1SHpZQ0lDQURJQU5CSUdvaUNEWUNNQ0FLSUFZZ0FpQUlFTThDSVFRZ0NCQVdJQVJGRFFFTUpBc2dBeUFDTmdJb0lBTWdDallDSkNBRFFlRDVIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVOMFdJUVFnQ0JBV0lBUU5Jd3NnQ2lBR0lBSWdBaUFDRU5jV0lRUU1JZ3NnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdJb0lBTWdDallDSkNBRFFkejdIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5JZ3NnQ2lBR0lBSWdBaUFDRU5ZV0lRUU1JUXNnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFDTmdMb0FTQURRWUQ4SHpZQzRBRWdBeUFEUWVBQmFqWUM4QUVnQXlBS05nTGtBU0FEUVFBMkFoQUNRQ0FLS0FJQUlBWWdBaUFEUVJCcUVMMERJZ1FOQUNBS0tBSUFJQU1vQWhBUUlDSUVMd0VlUVJ4SEJFQWdBMEg0QVdvaUNDQUdJQUlRc3dJZ0EwRWdhaUlMSUFoQjc1TUhFQzBnQTBIZ0FXb2dDeENKQWlFRUlBc1FEeG9nQ0JBUEdnd0JDeUFLS0FJQUlBUW9BZ0FvQWdnaUNCQlFSUVJBSUFOQitBRnFJZ2dnQmlBQ0VMTUNJQU5CSUdvaUN5QUlRWjdOQnhBdElBTkI0QUZxSUFzUWlRSWhCQ0FMRUE4YUlBZ1FEeG9NQVF0QkFDRUVJQW9vQWdBZ0NCQStJaEZCSUVZTkFDQURRU0JxRU00QklRc2dBMEg0QVdvaUNDQUdJQUlRc3dJZ0N5QUlFQkpCL2FZS0VBNGdFUkFoUWZ5WENCQU9HaUFJRUE4YUlBZ2dDMEVFYWhCQ0lBTkI0QUZxSUFnUWlRSWhCQ0FJRUE4YUlBc1F1d0VhQ3lBRFFlQUJhaEFXSUFRTklRc2dDaUFHSUFJZ0FpQUNFTlVXSVFRTUlBc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWFUOEh6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBa0VDSUFnUXl3VWhCQ0FJRUJZZ0JBMGdDeUFLSUFZZ0FpQUNJQUlRMUJZaEJBd2ZDeUFLS0FJQUtBSUFLQUlBRUVjRVFDQUdLQUlFS0FJQUlRUWdCaWdDRUVGL1J3UkFJQU5CSUdvaUJpQUtLQUlBUVhJZ0FoQVFJQVpCN1pZS0VBNGFJQVlnQ2lnQ0FFR0FBMnBCSENBRUVJOEJFQTRhSUFaQnpJZ0tFQTRhSUFNb0F0d0JJUVFnQmhBUkRDQUxJQU1nQkRZQ0xDQURJQUkyQWlnZ0F5QUtOZ0lrSUFOQnlQd2ZOZ0lnSUFNZ0EwRWdhaUlJTmdJd0lBb2dCaUFDSUFnUXp3SWhCQ0FJRUJZZ0JBMGZDeUFLSUFZZ0FpQUNJQUlRMHhZaEJBd2VDeUFLS0FJQUtBSUFLQUlBRUVkRkRSd2dCaWdDQkNnQ0FDRUxJQVlvQWhCQmYwY0VRQ0FEUVNCcUlnWWdDaWdDQUVGeUlBSVFFQ0FHUWUyV0NoQU9HaUFHSUFvb0FnQkJnQU5xUVJ3Z0N4Q1BBUkFPR2lBR1FjeUlDaEFPR2lBREtBTGNBU0VFSUFZUUVRd2VDeUFESUFzMkFpd2dBeUFDTmdJb0lBTWdDallDSkNBRFFlejhIellDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5IU0FDRVBjQklnaEJBVVlOSEVFQUlRUWdDRUgvLy8vL0IwWU5IU0FMUVFFUTRnTWhCQ0FEUVNCcUlnZ2dDaWdDQUVGeUlBSVFFQ0FEUWVBQmFpSVJJQW9vQWdBZ0JCQTNJQWdnRVJBU0dpQURRZmdCYWlJUElBb29BZ0FvQWdBb0FnQVFnUUlnQ0NBUEVCSWFJQWhCaVpZS0VBNGFJQWdnQ2lnQ0FFR0FBMnBCSENBTEVJOEJFQTRhSUFoQnk4Y01FQTRhSUFOQkVHb2lDeUFLSUFZZ0FpQUNJQUpCLy8vLy93Y1FpZ0VnQ0NBTEVCSWFJQWhCOS9BTUVBNGFJQU1nQ2lBQ0VJQUNJQWdnQXhBU0dpQURLQUxjQVNFRUlBTVFEeG9nQ3hBUEdpQVBFQThhSUJFUUR4b2dDQkFSREIwTElBb29BZ0FvQWdBb0FnQVFSMFVOR3lBR0tBSUVLQUlBSVFzZ0JpZ0NFRUYvUndSQUlBTkJJR29pQmlBS0tBSUFRWElnQWhBUUlBWkI3WllLRUE0YUlBWWdDaWdDQUVHQUEycEJIQ0FMRUk4QkVBNGFJQVpCeklnS0VBNGFJQU1vQXR3QklRUWdCaEFSREIwTElBTWdDellDTENBRElBSTJBaWdnQXlBS05nSWtJQU5Ca1AwZk5nSWdJQU1nQTBFZ2FpSUlOZ0l3SUFvZ0JpQUNRUVFnQ0JDMkNDRUVJQWdRRmlBRURSd2dBaEQzQVNJSVFRRkdEUnRCQUNFRUlBaEIvLy8vL3dkR0RSd2dDMEVCRU9JRElRUWdBMEVnYWlJSUlBb29BZ0JCY2lBQ0VCQWdBMEhnQVdvaUVTQUtLQUlBSUFRUU55QUlJQkVRRWhvZ0EwSDRBV29pRHlBS0tBSUFLQUlBS0FJQUVJRUNJQWdnRHhBU0dpQUlRWW1XQ2hBT0dpQUlJQW9vQWdCQmdBTnFRUndnQ3hDUEFSQU9HaUFJUWN2SERCQU9HaUFEUVJCcUlnc2dDaUFHSUFJZ0FpQUNRZi8vLy84SEVJb0JJQWdnQ3hBU0dpQUlRZmZ3REJBT0dpQURJQW9nQWhDQUFpQUlJQU1RRWhvZ0F5Z0MzQUVoQkNBREVBOGFJQXNRRHhvZ0R4QVBHaUFSRUE4YUlBZ1FFUXdjQ3lBS0tBSUFLQUlBS0FJQUVFY0VRQ0FESUFJMkFpZ2dBeUFLTmdJa0lBTkJ0UDBmTmdJZ0lBTWdBMEVnYWlJSU5nSXdJQW9nQmlBQ1FRTWdDQkRMQlNFRUlBZ1FGaUFFRFJ3TElBb2dCaUFDSUFJZ0FoRFNGaUVFREJzTElBb29BZ0FvQWdBb0FnQVFSMFVOR0NBRElBSTJBaWdnQXlBS05nSWtJQU5CMlAwZk5nSWdJQU1nQTBFZ2FpSUlOZ0l3SUFvZ0JpQUNRUVFnQ0JDL0NpRUVJQWdRRmlBRURSb01HQXNnQ2lnQ0FDZ0NBQ2dDQUJCSFJRMFhJQU1nQWpZQ0tDQURJQW8yQWlRZ0EwSEUvaDgyQWlBZ0F5QURRU0JxSWdnMkFqQWdDaUFHSUFKQkFpQUlFTDhLSVFRZ0NCQVdJQVJGRFJjTUdRc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWVqK0h6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFRTkdRc2dDaUFHSUFJZ0FpQUNFTkVXSVFRTUdBc2dDaWdDQUNnQ0FDZ0NBQkJIQkVBQ1FDQUtLQUlBS0FJQUtBSUFFRWRGRFFBZ0FpOEJIaENqQWcwQUlBTkJJR29pQmlBS0tBSUFRWElnQWhBUUlBTkI0QUZxSWdnZ0NpZ0NBRUhLSWhBM0lBWWdDQkFTR2lBR1FZcTdEQkFPR2lBRFFmZ0JhaUlMSUFJUTRRTWdCaUFMRUJJYUlBWkJrS2NIRUE0YUlBTW9BdHdCSVFRZ0N4QVBHaUFJRUE4YUlBWVFFUXdaQ3lBRElBSTJBaWdnQXlBS05nSWtJQU5CalA4Zk5nSWdJQU1nQTBFZ2FpSUlOZ0l3SUFvZ0JpQUNRUU1nQ0JDMkNDRUVJQWdRRmlBRURSZ0xJQW9nQmlBQ0lBSWdBaERRRmlFRURCY0xJQW9vQWdBb0FnQW9BZ0FRUjBVTkZpQURRU0JxSWdZZ0NpZ0NBRUZ5SUFJUUVDQUdRZHVBQ0JBT0dpQURLQUxjQVNFRUlBWVFFUXdXQ3lBS0lBWWdBaUFESUFJUXpoWWFEQlFMSUFvb0FnQW9BZ0FvQWdBUVJ3UkFJQU1nQmpZQ0xDQURJQUkyQWlnZ0F5QUtOZ0lrSUFOQnNQOGZOZ0lnSUFNZ0EwRWdhaUlJTmdJd0lBb2dCaUFDSUFnUXp3SWhCQ0FJRUJZZ0JBMFZDeUFLSUFZZ0FpQUNJQUlRelJZaEJBd1VDeUFLS0FJQUtBSUFLQUlBRUVjRVFDQURJQVkyQWl3Z0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWRUL0h6WUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFRTkZBc2dDaUFHSUFJZ0FpQUNFTXdXSVFRTUV3c2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUdOZ0lzSUFNZ0FqWUNLQ0FESUFvMkFpUWdBMEg0L3g4MkFpQWdBeUFEUVNCcUlnZzJBakFnQ2lBR0lBSWdDQkRQQWlFRUlBZ1FGaUFFRFJNTElBb2dCaUFDSUFJZ0FoRExGaUVFREJJTElBb29BZ0FvQWdBb0FnQVFSd1JBSUFNZ0JqWUNMQ0FESUFJMkFpZ2dBeUFLTmdJa0lBTkJuSUFnTmdJZ0lBTWdBMEVnYWlJSU5nSXdJQW9nQmlBQ0lBZ1F6d0loQkNBSUVCWWdCQTBTQ3lBS0lBWWdBaUFDSUFJUXloWWhCQXdSQ3lBS0tBSUFLQUlBS0FJQUVFY0VRQ0FESUFZMkFpd2dBeUFDTmdJb0lBTWdDallDSkNBRFFjQ0FJRFlDSUNBRElBTkJJR29pQ0RZQ01DQUtJQVlnQWlBSUVNOENJUVFnQ0JBV0lBUU5FUXNnQ2lBR0lBSWdBaUFDRU1rV0lRUU1FQXNnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFHS0FJRUtBSUFOZ0xnQVNBRElBSTJBaWdnQXlBRFFlQUJhallDTENBRElBbzJBaVFnQTBIa2dDQTJBaUFnQXlBRFFTQnFJZ2cyQWpBZ0NpQUdJQUlnQ0JEUEFpRUVJQWdRRmlBRURSQUxJQW9nQmlBQ0lBSWdBaERJRmlFRURBOExJQW9vQWdBb0FnQW9BZ0FRUndSQUlBTWdCaWdDQkNnQ0FEWUM0QUVnQXlBQ05nSW9JQU1nQTBIZ0FXbzJBaXdnQXlBS05nSWtJQU5CaUlFZ05nSWdJQU1nQTBFZ2FpSUlOZ0l3SUFvZ0JpQUNRUUlnQ0JDMkNDRUVJQWdRRmlBRURROExJQW9nQmlBQ0lBSWdBaERIRmlFRURBNExJQW9vQWdBb0FnQW9BZ0FRUndSQUlBTWdCaWdDQkNnQ0FEWUNBQ0FESUFJMkFpZ2dBeUFETmdJc0lBTkJySUVnTmdJZ0lBTWdBMEVnYWpZQ01DQURJQW8yQWlRZ0EwRUFOZ0lRQWtBZ0NpZ0NBQ0FHSUFJZ0EwRVFhaEM5QXlJRURRQkJBQ0VFSUFvb0FnQWdBeWdDRUJCUURRQWdBMEg0QVdvaUNDQUdJQUlRc3dJZ0EwSGdBV29pQ3lBSVFiN05CeEF0SUFOQklHb2dDeENKQWlFRUlBc1FEeG9nQ0JBUEdnc2dBMEVnYWhBV0lBUU5EZ3NnQ2lBR0lBSWdBaUFDRU1ZV0lRUU1EUXNnQ2lnQ0FDZ0NBQ2dDQUJCSEJFQWdBeUFHS0FJRUtBSUFOZ0xnQVNBRElBSTJBaWdnQXlBRFFlQUJhallDTENBRElBbzJBaVFnQTBIUWdTQTJBaUFnQXlBRFFTQnFJZ2cyQWpBZ0NpQUdJQUlnQ0JENkRTRUVJQWdRRmlBRURRMExJQW9nQmlBQ0lBSWdBaERGRmlFRURBd0xJQVJCQmtZTkFDQUVRWVV2UncwRUN5QURJQVEyQWl3Z0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUVppQ0lEWUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFSRkRRVU1DZ3NnQXlBRU5nSXNJQU1nQWpZQ0tDQURJQW8yQWlRZ0EwRzhnaUEyQWlBZ0F5QURRU0JxSWdnMkFqQWdDaUFHSUFKQkF5QUlFTXNGSVFRZ0NCQVdJQVJGRFFRTUNRc2dBeUFFTmdJc0lBTWdBallDS0NBRElBbzJBaVFnQTBIZ2dpQTJBaUFnQXlBRFFTQnFJZ2cyQWpBZ0NpQUdJQUpCQXlBSUVMWUlJUVFnQ0JBV0lBUkZEUU1NQ0FzZ0F5QUVOZ0xzQVNBRElBSTJBdWdCSUFOQmhJTWdOZ0xnQVNBRElBTkI0QUZxTmdMd0FTQURJQW8yQXVRQklBTkJBRFlDRUNBRFFRQTJBZ0FnQTBFQU5nS01BaUFEUVFBMkFvZ0NJQU5CQURZQ2hBSUNRQ0FLS0FJQUlBWWdBaUFEUVJCcUVMMERJZ1FOQUFKQUFrQWdDaWdDQUNBREtBSVFJQU1nQTBHTUFtb2dBMEdJQW1vZ0EwR0VBbW9RcHdORkRRQWdBeWdDQUVFRFJ3MEFJQU1vQW93Q1FRUkdEUUVMSUFOQklHb1F6Z0VoQ3lBRFFmZ0JhaUlJSUFZZ0FoQ3pBaUFMSUFnUUVrR0wyUWtRRGlBREtBS01BaEFoUWVuU0NSQU9JQU1vQWdBUUlVR3UyZ29RRGtFRUVDRkIyaWNRRGtFREVDRkIvSmNJRUE0YUlBZ1FEeG9nQ0NBTFFRUnFFRUlnQTBIZ0FXb2dDQkNKQWlFRUlBZ1FEeG9nQ3hDN0FSb01BUXNnQ2lBR0lBSkJBeUFEUWVBQmFpQURLQUtJQWhEM0RTRUVDeUFEUWVBQmFoQVdJQVJGRFFJTUJ3dEJoS0lKUVpDZEFrSFlIMEd4eFFJUUFBQUxJQU1nQkRZQ0xDQURJQUkyQWlnZ0F5QUtOZ0lrSUFOQjlJRWdOZ0lnSUFNZ0EwRWdhaUlJTmdJd0lBb2dCaUFDSUFnUXdRb2hCQ0FJRUJZZ0JBMEZDeUFLSUFZZ0FpQUNJQUlReEJZaEJBd0VDeUFLS0FJQUtBSUFLQUlBRUVjRVFDQURJQVkyQWl3Z0F5QUNOZ0lvSUFNZ0NqWUNKQ0FEUWFpRElEWUNJQ0FESUFOQklHb2lDRFlDTUNBS0lBWWdBaUFJRU04Q0lRUWdDQkFXSUFRTkJBc2dDaUFHSUFJZ0FpQUNFTU1XSVFRTUF3c2dDaWdDQUNnQ0FDZ0NBQkJIQkVBZ0F5QUdOZ0lzSUFNZ0FqWUNLQ0FESUFvMkFpUWdBMEhNZ3lBMkFpQWdBeUFEUVNCcUlnZzJBakFnQ2lBR0lBSWdDQkRQQWlFRUlBZ1FGaUFFRFFNTElBb2dCaUFDSUFJZ0FoRENGaUVFREFJTElBb2dCaUFDSUFJZ0FoREJGaUVFREFFTFFRQWhCQXNnQTBHUUFtb2tBQ0FFSWdNTkJ3c2dBUkJNSVFFTUFBc0FDeUFIRUV3aEJ3d0JDd3NnQ2lnQ0RFVU5BU0FLS0FJQUlnRW9BcVFCSVFRZ0NrRkFhMEVFY2lFR0lBRW9BcUFCSVFkQkFDRURBa0FEUUNBRUlBZEdEUU1DUUFKQUFrQUNRQ0FITHdFZVFUWnJEZ01BQWdFQ0N5QUtLQUlRRFFRZ0NpQUhLQUlvTmdJUUlBa1E2QllnQ2lBS0tBSUFJQW9vQWhBUXBRb2lBVFlDSUNBQktBSUVJUWdnQVNnQ0FDRUJBMEFnQVNBSVJnMENJQW9vQWdBZ0FTZ0NBQkNsQmlJQ0JFQWdDU0FDS0FJQUlBSkJCR29RNXhZTElBRkJCR29oQVF3QUN3QUxJQW9vQWhCRkRRRWdDaUFRTmdJZ0lBcEJBRFlDRUNBSkVPZ1dDeUFLSUFZMkFrQWdDa0lBTndKRUlBY29BaEFoQ0NBSEtBSU1JUUlEUUFKQUlBSWdDRVlpQzBVRVFDQUNLQUlFRU1ZS1JRMEJJQW9nQnlnQ0FDQUNMd0VBUVFKMGFpZ0NBQ0lCTmdJOElBRWdCeWdDS0VZTkFTQUtRVEJxSUFwQlFHc2dDa0U4YWhEVkJTQUtMUUEwUlEwQklBd2dDa0U4YWhEQUF5SUJJQTFHRFFFZ0FVRVlhaUVSSUFGQkZHb2hEd05BSUJFb0FnQWlBU0FQUmcwQ0lBRkJCR29oRVNBQlFRaHFJQWNRaVFJaUFVVU5BQXNnQVNFREN5QUhRY3dBYWlFSElBcEJRR3NReEFNZ0N3MEREQWNMSUFKQkVHb2hBZ3dBQ3dBTEMwRzFrZ2RCa0owQ1FiZ0ZRZGJoQXhBQUFBdEIwNUVIUVpDZEFrR3BCVUhXNFFNUUFBQUxRYWt2UVpDZEFrSFdJVUhZeFFJUUFBQUxRUUFoQXdzZ0NSQ0REaUFRRURJYUlBd2dEQ2dDQkJEd0RTQUtRZEFBYWlRQUlBTWlBUTBCSUFVb0FxUUJJUkFnQlNnQ29BRWhBd05BSUFNZ0VFWUVRRUVBSVFFTUF3dEJBQ0VISXdCQjhBRnJJZ0VrQUFKQUFrQWdBeThCSGtFMlJ3MEFJQVVnQXlnQ0tCQ2ZBU0lJUlFSQUlBRkJNR29pQWlBRlFYOGdBeEFRSUFKQjE5Z0tFQTRhSUFJZ0F5Z0NLQkFoR2lBQ1FmeVhDQkFPR2lBQktBTHNBU0VISUFJUUVRd0NDeUFGSUFNb0FpZ1FwUW9pQWlnQ0JDRVBJQUlvQWdBaEFnTkFJQUlnRDBZTkFRSkFJQVVnQWlnQ0FDSUpFS1VHSWdSRkRRQWdCQ2dDQ0VVRVFDQUJRVEJxSWdJZ0JVRi9JQU1RRUNBQ1FmdlhDaEFPR2lBQ0lBa1FJUm9nQWtIOGx3Z1FEaG9nQVNnQzdBRWhCeUFDRUJFTUJBc2dCRUVFYWlFVElBUW9BZ0FoQmdOQUlBWWdFMFlOQVNBR0tBSVFJUlFnQVVFZ2FpSUtFRlVqQUVHZ0FXc2lCQ1FBSUFoQnBBTnFJUkVnQ0VHZ0Eyb2hGU0FFUVJCcUVJZ0RJZzFCQ0dvaEZrRUJJUXNDUUFKQUEwQWdGU0FSS0FJQUloRkhCRUFnQkJCVkFrQWdFVUVJYWlBVUlBUVE1UmNpRENBS1JYSU5BRUVBSVF0QkFTRU1JQVFvQWdRZ0JDMEFDeUlYSUJkQkdIUkJHSFZCQUVnYlJRMEFJQllnQkJBU1FkdjREQkFPR2dzZ0VVRUVhaUVSSUFRUUR4b2dEQTBCREFJTEN5QUxJQXBGY2cwQklBUWdEVUVNYWhCQ0lBb2dCQkNlQVNBRUVBOGFDMEVBSVFzTElBMFF1d0lhSUFSQm9BRnFKQUFnQzBVRVFDQUJRVEJxSWdRZ0JVRjJJQU1RRUNBRVFjekRDeEFPR2lBQlFSQnFJZ29nQlNBSkVDb2dCQ0FLRUJJYUlBUkJrY29MRUE0YUlBRWdCU0FES0FJb0VDb2dCQ0FCRUJJYUlBUkJqUFVNRUE0YUlBUWdBVUVnYWhBU0dpQUJLQUxzQVNFSElBRVFEeG9nQ2hBUEdpQUVFQkVMSUFGQklHb1FEeG9nQzBVTkJDQUdFRXdoQmd3QUN3QUxJQUZCSUdvaURCQlZJQVVnQ1JDZkFTRVRJd0JCb0FGcklnUWtBQ0FJUWJBRGFpRUdJQWhCckFOcUlSUWdCRUVRYWhDSUF5SVJRUWhxSVJWQkFTRUxBa0FDUUFOQUlCUWdCaWdDQUNJTlJ3UkFJQVFRVlNNQVFSQnJJZ1lrQUNBR0lBUTJBZ2dnQmlBVE5nSU1JQVpCREdvaEZpQUdRUWhxSVJjZ0RTZ0NHQ0lLUlFSQUVHOEFDeUFLSUFVZ0ZpQVhJQW9vQWdBb0FoZ1JCd0FoQ2lBR1FSQnFKQUFDUUNBTVJTQUtjZzBBUVFBaEMwRUJJUW9nQkNnQ0JDQUVMUUFMSWdZZ0JrRVlkRUVZZFVFQVNCdEZEUUFnRlNBRUVCSkIyL2dNRUE0YUN5QU5RUVJxSVFZZ0JCQVBHaUFLRFFFTUFnc0xJQXNnREVWeURRRWdCQ0FSUVF4cUVFSWdEQ0FFRUo0QklBUVFEeG9MUVFBaEN3c2dFUkM3QWhvZ0JFR2dBV29rQUNBTFJRUkFJQUZCTUdvaUJDQUZRWFlnQXhBUUlBUkJ6TU1MRUE0YUlBRkJFR29pQ2lBRklBa1FLaUFFSUFvUUVob2dCRUdSeWdzUURob2dBU0FGSUFNb0FpZ1FLaUFFSUFFUUVob2dCRUhpOHd3UURob2dCQ0FCUVNCcUVCSWFJQUVvQXV3QklRY2dBUkFQR2lBS0VBOGFJQVFRRVFzZ0FrRUVhaUVDSUFGQklHb1FEeG9nQ3cwQUN3d0JDMEVBSVFjTElBRkI4QUZxSkFBZ0J5SUJEUUpCQUNFSEl3QkJ3QUZySWdFa0FBSkFJQVV0QUlBQlFRSnhSUTBBSUFNb0FpUWlBa1VOQUNBRklBSVE4UUpGRFFBZ0JTQURLQUlrRUlFRkRRQWdBeWdDUkNFRUlBTW9Ba0FoQ2dOQUlBUWdDa1lOQVNBS0tBSUFJZ1l2QVI0aUFrRStheUlJUVJWTlFRQkJBU0FJZEVHQmhJQUJjUnNnQWtITUFrWWdBa0h4QUd0QkEwbHljZ1JBSUFwQkNHb2hDZ3dCQlNBQklBVkJkaUFHRUJBZ0FVSHE0d0FRRGhvZ0FTZ0N2QUVoQnlBQkVCRUxDd3NnQVVIQUFXb2tBQ0FEUWN3QWFpRURJQWNpQVVVTkFBc01BUXNnQVVILy93TnhRVGxHQkVBZ0JTMEFvQU5GQkVBZ0VrSFFBMm9pQXlBRlFYUWdDaEFRSUFOQnZKTUhFQTRhSUJJb0Fvd0ZJUUVnQXhBUkRBSUxJQklvQXZnQlFRSVFHeUVDSXdCQkVHc2lBU1FBSUFFZ0FqWUNEQ0FCSUFWQjdBRnFJQUZCREdvUWxnRWdCUkRMQVNFRUlBRW9BZ3doQnlNQVFSQnJJZ0lrQUNBQ0lBYzJBZ3dnQWlBRVFiZ0RhaUFDUVF4cUVOVUZJQUpCRUdva0FDQUJRUkJxSkFBTEFrQWdCUzBBb0FORkRRQWdFaWdDK0FFZ0JSRExBVFlDT0NBU0tBTDRBU0FGRU1zQktBSk1OZ0k4SUFVUW53WkZEUUFnRWlnQytBRXZBUjRRaWc1RkRRQWdCUkRMQVNnQ1RDQVNLQUw0QVRZQ05Bc2dFaWdDK0FFaENFRUFJUUVqQUVId0FXc2lCQ1FBSUFSQjJBRnFJUVlDUUFKQUlBZ3ZBUjRpQWtFTVJnUi9JQWdvQWlBUTBRVU5BU0FJTHdFZUJTQUNDMEgvL3dOeElRY2pBRUVnYXlJQ0pBQWdCa0VBTmdJUUFrQWdCeERRQWdSQUlBSkI2T2dmTmdJSURBRUxBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUhRZlVCYXlJSlFRWkxEUUJCQVNBSmRDSU1RUlp4RFFFZ0RFSGdBSEVOQWlBSkRRQWdBa0g0NlI4MkFnZ01DQXNDUUNBSFFSeExEUUJCQVNBSGRFSGdnQVp4RFFFZ0IwRWNSdzBBSUFKQnJPc2ZOZ0lJREFnTEFrQWdCMEdrQW1zT0JRTUVCQVVGQUFzQ1FDQUhRY2NBYXc0RkFRRUhBZ0lBQ3lBSFFjc0NhMEVDU1NBSFFZQXNhMEVDU1hJTkFDQUhRU2RHRFFVZ0IwRTVSdzBHSUFKQjFPa2ZOZ0lJREFjTElBSkJqT2tmTmdJSURBWUxJQUpCc09rZk5nSUlEQVVMSUFKQm5Pb2ZOZ0lJREFRTElBSkJ3T29mTmdJSURBTUxJQUpCNU9vZk5nSUlEQUlMSUFKQmlPc2ZOZ0lJREFFTElBSkIwT3NmTmdJSUN5QUNJQUpCQ0dvaUJ6WUNHQ0FISUFZUXJBSWdCeEFXREFFTElBUkIyQUZxSVFjZ0NDZ0NJQ0VKSUFnb0FnQW9BaEFoQmlNQVFTQnJJZ0lrQUFKQUlBbEJDa1lFUUNBSFFmVHJIellDQUNBSElBYzJBaEFNQVFzZ0IwRUFOZ0lRSUFsQkNFWUVRQUpBSUFaQkNrY0VRQ0FHUVJSSERRRWdBa0dZN0I4MkFnZ2dBaUFDUVFocUlnWTJBaGdnQmlBSEVLd0NJQVlRRmd3REN5QUNRYnpzSHpZQ0NDQUNJQUpCQ0dvaUJqWUNHQ0FHSUFjUXJBSWdCaEFXREFJTElBSkI0T3dmTmdJSUlBSWdBa0VJYWlJR05nSVlJQVlnQnhDc0FpQUdFQllNQVFzQ1FDQUdRUXBIQkVBZ0JrRVVSdzBCSUFKQmhPMGZOZ0lJSUFJZ0FrRUlhaUlHTmdJWUlBWWdCeENzQWlBR0VCWU1BZ3NnQWtHbzdSODJBZ2dnQWlBQ1FRaHFJZ1kyQWhnZ0JpQUhFS3dDSUFZUUZnd0JDeUFDUWN6dEh6WUNDQ0FDSUFKQkNHb2lCallDR0NBR0lBY1FyQUlnQmhBV0N3c2dBa0VnYWlRQVFRQWhCd0pBQWtBQ1FBTkFBa0FnQVNFQ0lBY2dDQ2dDRUNBSUtBSU1JZ0ZyUVFSMVR3MEFJQWdvQWdBZ0FTQUhRUVIwYWlJSkx3RUFRUUowYWlnQ0FDSUdJUUVDUUFKQUFrQUNRQUpBQWtBZ0NTZ0NCRUVCYXc0RkFBRUZBQUFDQ3lBRklBWVFJQ0lKQkVBZ0NDOEJIaUVCQWtBZ0NTOEJIaERRQWtVTkFDQUJFTkFDRFFBZ0FSQzhDQTBBSUFnUTF3ME5BQ0FJRU0wRkRRQWdBUkM5Q0EwQUFrQUNRQ0FCUVRSckRnTUFEQUlCQ3lBSUtBSUFLQUlNUWZJcFJnMEJEQXNMSUFGQjhpbEhEUW9MQWtBZ0NTZ0NKQTBBSUFFUTBBSU5BQ0FCRUx3SURRQWdDQkRYRFEwQUlBZ1F6UVVOQUNBQkVMMElJQUZCK1FGclFRTkpJQUZCOVFGclFRTkpjaUFCUVF0clFRSkpjbklOQUFKQUFrQWdBVUUwYXc0REFBc0NBUXNnQ0NnQ0FDZ0NERUh5S1VZTkFRd0tDeUFCUWZJcFJ3MEpDeUFKRU0wRlJRMENJQUloQVNBSUVNMEZEUVVnQkVFWWFpSUJJQVZCZGlBSUVCQWdBVUd6elFvUURob2dCRUVJYWlJQ0lBVWdCaEFxSUFFZ0FoQVNHaUFCUWNyTUFoQU9HaUFFS0FMVUFTRUdJQUlRRHhvZ0FSQVJEQW9MSUFSQjJBRnFJQWNRaWdJRVFDQUlMd0VlRU5BQ1JRMERJQVVnQmhERkZRMERJQVJCR0dvaUFTQUZRWFlnQ0JBUUlBRkJzODBLRUE0YUlBUkJDR29pQ1NBRklBWVFLaUFCSUFrUUVob2dBVUdXeEFJUURob2dCQ2dDMUFFaEJpQUpFQThhSUFFUUVRd0VDeUFFUVJocUlnRWdCVUYySUFnUUVDQUJRY2pEQ3hBT0dpQUVRUWhxSWdrZ0JTQUdFQ29nQVNBSkVCSWFJQUZCd3ZjRUVBNGFJQVFvQXRRQklRWWdDUkFQR2lBQkVCRU1Bd3NqQUVFUWF5SUJKQUFnQVNBR05nSU1JQVZCckFGcUlBRkJER29RbmdJaENTQUJRUkJxSkFBZ0NRUkFJQVVnQmhBZ0x3RWVFTkFDRFFFZ0JFRVlhaUlCSUFWQmRpQUlFQkFnQVVISXd3c1FEaG9nQkVFSWFpSUpJQVVnQmhBcUlBRWdDUkFTR2lBQlFicnVCQkFPR2lBRUtBTFVBU0VHSUFrUUR4b2dBUkFSREFNTElBUkJHR29pQVNBRlFYWWdDQkFRSUFGQnlNTUxFQTRhSUFSQkNHb2lDU0FGSUFZUUtpQUJJQWtRRWhvZ0FVSEM5d1FRRGhvZ0JDZ0MxQUVoQmlBSkVBOGFJQUVRRVF3Q0N5QUNJUUVNQWdzakFFRVFheUlCSkFBZ0FTQUdOZ0lNSUFFZ0JVRWdhaUFCUVF4cUVKWUJJQUZCRUdva0FFRUFJUVlMSUFJaEFTQUdEUVVMSUFkQkFXb2hCd3dCQ3d0QkFDRUdJQUpGRFFJakFFRVFheUlCSkFBZ0FTQUNOZ0lNSUFWQklHb2dBVUVNYWhEWEJ5QUJRUkJxSkFBTUFnc2dCRUVZYWlJQklBVkJkaUFJRUJBZ0FVR3p6UW9RRGhvZ0JFRUlhaUlDSUFVZ0JoQXFJQUVnQWhBU0dpQUJRWjJWQkJBT0dpQUVLQUxVQVNFR0lBSVFEeG9nQVJBUkRBRUxJQVJCR0dvaUFTQUZRWFlnQ0JBUUlBRkJzODBLRUE0YUlBUkJDR29pQWlBRklBWVFLaUFCSUFJUUVob2dBVUhrbFFRUURob2dCQ2dDMUFFaEJpQUNFQThhSUFFUUVRc2dCRUhZQVdvUUZpQUVRZkFCYWlRQUlBWWlBUTBBUVFBaEJDTUFRZkFCYXlJQkpBQWdDaThCSGtFUlJnUkFBa0FDUUFKQUFrQWdDaWdDRUNBS0tBSU1JZ0pyUVJCR0JFQWdBaThCQWtFQlJ3MEJJQUl2QVFBaUFpQUtLQUlFSUFvb0FnQWlCMnRCQW5WUERRSWdBU0FISUFKQkFuUnFLQUlBSWdJMkF1d0JJQUVnQlRZQzZBRWdBVUhZQVdvQ2Z3SkFJQVVvQWdBb0FnQWlCa0VRVFFSQVFRRWhCMEVCSUFaMFFZQ2dCM0VOQVF0QkFDRUhRYno5QWd3QkMwR0kvUVFMRUJRaENBSkFJQVpCRjBjRVFDQUdRUkpIQkVBZ0JrRUJSdzBDSUFJUW5CWU5CeUFDRUpzV0RRY2dCU0FDRUtzSERRY2dBVUVZYWlJQ0lBVkJjeUFLRUJBZ0FrR1d2Z2tRRGhvZ0FVRUlhaUlISUFGQjZBRnFFS29ISUFJZ0J4QVNHaUFDUVpua0FoQU9HaUFDUWIyMENCQU9HaUFCS0FMVUFTRUVJQWNRRHhvZ0FoQVJEQWNMSUFJUW1oWU5CaUFDRUprV0RRWWdCU0FDRUtzSERRWWdBVUVZYWlJQ0lBVkJjeUFLRUJBZ0FrR1d2Z2tRRGhvZ0FVRUlhaUlISUFGQjZBRnFFS29ISUFJZ0J4QVNHaUFDUWUzakFoQU9HaUFDUWIyMENCQU9HaUFCS0FMVUFTRUVJQWNRRHhvZ0FoQVJEQVlMSUFJUW1oWWdBa0cxS1VaeURRVWdBaENaRmcwRklBSkJ0aWxySWdkQkNrc2dCMEVCUm5JTkJBd0ZDeUFHUVF0clFRRk5CRUFnQWlBSEVKZ1dEUVVDUUNBQ1FRcHJEZ1FHQUFBR0FBc2dCU0FDRUtzSERRVUNRQ0FGTFFDQkFVRWdjVVVOQUNBQ1FSUnJJZ0pCRzBzTkFFRUJJQUowUVlHQWdPd0FjUTBHQ3lBQlFSaHFJZ0lnQlVGeklBb1FFQ0FDUVphK0NSQU9HaUFCUVFocUlnY2dBVUhvQVdvUXFnY2dBaUFIRUJJYUlBSkIvN1lNRUE0YUlBSWdDQkFTR2lBQ1FhcmpBaEFPR2lBQ1FlZVlDQkFPR2lBQktBTFVBU0VFSUFjUUR4b2dBaEFSREFVTElBWkJFRXNOQkFKQVFRRWdCblFpQmtHSXdBTnhSUVJBSUFaQmtJQUVjVVVOQmlBQ0lBY1FseFlnQWtFNmEwRjljVVZ5RFFZZ0FrRUthdzRFQmdFQkJnRUxJQUlnQnhDWEZnMEZBa0FnQWtFS2F3NEVCZ0FBQmdBTElBVWdBaENyQncwRklBVWdBaENXRmcwRklBRkJHR29pQWlBRlFYTWdDaEFRSUFKQmxyNEpFQTRhSUFGQkNHb2lCeUFCUWVnQmFoQ3FCeUFDSUFjUUVob2dBa0dldHd3UURob2dBaUFJRUJJYUlBSkJxdU1DRUE0YUlBSkI1NWdJRUE0YUlBRW9BdFFCSVFRZ0J4QVBHaUFDRUJFTUJRc2dCU0FDRUtzSERRUWdCU0FDRUpZV0RRUWdBVUVZYWlJQ0lBVkJjeUFLRUJBZ0FrR1d2Z2tRRGhvZ0FVRUlhaUlISUFGQjZBRnFFS29ISUFJZ0J4QVNHaUFDUWVDMkRCQU9HaUFDSUFnUUVob2dBa0dxNHdJUURob2dBa0hubUFnUURob2dBU2dDMUFFaEJDQUhFQThhSUFJUUVRd0VDMEgwaWdkQmc1UUNRYVlDUWVDVUFSQUFBQXRCc1lvSFFZT1VBa0dxQWtIZ2xBRVFBQUFMUWZueENFR0RsQUpCcXdKQjRKUUJFQUFBQ3lBQ1FlRXBhMEVEU1NBQ1FjVUFhMEVDU1hJZ0FrSGdJbXNpQjBFVVRVRUFRUUVnQjNSQmg0RDhBSEViY2cwQUlBVWdBaENyQncwQUlBRkJHR29pQWlBRlFYTWdDaEFRSUFKQmxyNEpFQTRhSUFGQkNHb2lCeUFCUWVnQmFoQ3FCeUFDSUFjUUVob2dBa0hCNHdJUURob2dBa0c5dEFnUURob2dBU2dDMUFFaEJDQUhFQThhSUFJUUVRc2dDQkFQR2dzZ0FVSHdBV29rQUNBRUlnRU5BQ0FGSUFvUThSVWlBUTBBQW45QkFDRUJJd0JCc0FKcklnUWtBQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBS0lnY3ZBUjRpQWtIMkFXc09DZ01FQWdVR0J3RUlBUUVBQ3lBQ1FjQWlSaUFDUWVBaWEwRUNTWElOQUNBQ1FhNHBSdzBNQ3lBRkVNc0JJUW9nQkVFQU5nSVlJQVJDQURjREVDQUtJQVJCRUdvaUNoQ29DQ0FLRURJYUlBSkI0Q0pyRGdJSUNRY0xJQVVReXdFZ0J5Z0NLRUVCRUtvS0lnRU5DaUFGRU1zQktBSk1JQWMyQWpCQkFDRUJEQW9MSUFkQkFCQWJJUVlnQjBFQkVCc2hDQ0FGSUFZUWxSWWlBa1VFUUFKL0lBVVF5d0VoQ2lNQVFaQUJheUlDSkFBZ0FpQUlOZ0tJQVNBQ0lBWTJBb3dCSUFvZ0JrRUFFS29LR2lBS0lBaEJBQkNxQ2hvZ0NrRVlhaUlHSUFKQmpBRnFFTFlLSVFrZ0JpQUNRWWdCYWhDMkNpRUdJQW9vQWt3aUNBUkFJQXBCekFCcUlRd2dDQ0FKRU1jTklBb29Ba3dnQmhESERTQUtLQUpNUVFJUXFnZ2dDVUVERUtvSUlBWkJCUkNxQ0NBS0tBSk1JUTBnQWtFQU5nSm9JQUpDQURjRFlDQUtJQUpCOEFCcUlnaEJBeUFOSUFrZ0FrSGdBR29pRUJESURTSVBFTVlOSVEwZ0QwRUVhaEF5R2lBUUVESWFJQUpCQURZQ1dDQUNRZ0EzQTFBZ0NpQUlRUUlnQmtFQUlBSkIwQUJxSWc4UXlBMGlGQkRHRFNFUUlCUkJCR29RTWhvZ0R4QXlHaUFDUVFFMkFqd2dBaUFOTmdKd0lBSWdDRFlDT0NBQ0lBSXBBemczQXhBZ0VDQUNRVUJySUFKQkVHb1E1d01pRHhEWUZTQVBFRElhSUFKQkFUWUNKQ0FDSUJBMkFuQWdBaUFJTmdJZ0lBSWdBaWtESURjRENDQU5JQUpCS0dvZ0FrRUlhaERuQXlJTkVOZ1ZJQTBRTWhvZ0NpZ0NUQ0VOSUFJZ0NUWUNjQ0FLUWVRQ2FpQUlFSjRISUEwMkFnQWdBaUFHTmdKd0FrQWdDa0g0QW1vaUNpQUlFUFVEUlFSQUlBSWdEQ2dDQURZQ2NDQUNJQVkyQWh3Z0NpQUNRUnhxRUlZRklBSkI4QUJxSUFKQjlBQnFFUDBXREFFTElBSWdCallDY0NBS0lBSkI4QUJxRUlZRklBd1F6d0VMSUFKQmtBRnFKQUJCQUF3QkMwR0Rvd2xCa3FvQ1Fjc0FRZDYvQkJBQUFBc2lBa1VOQ2dzZ0FpRUJEQWtMSUFVZ0IwRUFFQnNpQmhDVkZpSUNSUVJBSUFVUXl3RWhDaU1BUVRCcklnSWtBQ0FDSUFZMkFpd2dDaUFHUVFBUXFnb2FJQXBCR0dvZ0FrRXNhaEMyQ2lFR0lBb29Ba3hCQVJDcUNDQUdRUU1RcWdnZ0NpZ0NUQ0VJSUFJZ0JqWUNFQ0FLUWVRQ2FpQUNRUkJxSWdrUW5nY2dDRFlDQUNBS0tBSk1JQVlReHcwZ0NpZ0NUQ0VJSUFKQkFEWUNDQ0FDUWdBM0F3QWdDaUFKUVFFZ0NDQUdJQUlReUEwaUNoREdEUm9nQ2tFRWFoQXlHaUFDRURJYUlBSkJNR29rQUVFQUlnSkZEUWtMSUFJaEFRd0lDeUFGSUFkQkFCQWJJZ0lRdXdvaUFRMEhJQVVReXdFaEFTQUVRUUUyQXB3Q0lBUWdBallDTUNBRUlBUkJNR28yQXBnQ0lBUWdCQ2tEbUFJM0F3QWdBU0FFUWFBQ2FpQUVFT2NESWdFUXFBZ2dBUkF5R2tFQUlRRU1Cd3NnQjBFQkVCc2hBaUFIUVFJUUd5RUtJQVVnQWhDN0NpSUJEUVlnQlNBS0VMc0tJZ0VOQmlBRkVNc0JJUUVnQkVFQ05nS0VBaUFFSUFvMkFqUWdCQ0FDTmdJd0lBUWdCRUV3YWpZQ2dBSWdCQ0FFS1FPQUFqY0RDQ0FCSUFSQmlBSnFJQVJCQ0dvUTV3TWlBUkNvQ0NBQkVESWFRUUFoQVF3R0N5QUVRUUEyQWpnZ0JFSUFOd013UVFFaEFnTkFJQWNvQWhBZ0J5Z0NER3RCQkhVZ0Frc0VRQ0FFSUFjZ0FoQWJJZ0UyQXZ3QklBVWdBUkM3Q2lJQkRRWWdBa0VDYWlFQ0lBUkJNR29nQkVIOEFXb1EzZ0lNQVFzTElBVVF5d0VnQkVId0FXb2dCRUV3YWlJQkVMQUJJZ0lRcUFnZ0FoQXlHaUFCRURJYVFRQWhBUXdGQ3lBRklBVVF5d0VvQWdnUUlDSUJSUTBGSUFFdkFSNUJFMFlFUUVFQUlRRWdCUkRMQVNFQ0lBUkJBRFlDS0NBRVFnQTNBeUFnQWlBRVFTQnFJZ0lRcUFnZ0FoQXlHZ3dGQ3lBRVFUQnFJZ0lnQlVGMUlBY1FFQ0FDUWUvT0NoQU9HaUFDUWJqeEJ4QU9HaUFFS0FMc0FTRUJJQUlRRVF3RUN5QUNRY0FpUndSQUlBSkIvQUZIRFFRZ0JSRExBVUVFSUFSQk1HcEJsNElERUJRaUFoREhCQ0FDRUE4YURBUUxJQVVReXdGQkJDQUVRVEJxUWQrQkF4QVVJZ0lReHdRZ0FoQVBHZ3dEQ3lBRkVNc0JRY01wSUFSQk1HcEJrWWtERUJRaUFoREhCQ0FDRUE4YURBSUxJQVVReXdGQnd5a2dCRUV3YWtIY2lBTVFGQ0lDRU1jRUlBSVFEeG9NQVFzZ0JFRXdhaEF5R2dzZ0JFR3dBbW9rQUNBQkRBRUxRZnd1UVlPckFrR25DRUdNbFFFUUFBQUxJZ0VOQUFKL1FRQWhCaU1BUWZBQmF5SUtKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBSEx3RWVJZ0ZCQ21zT0NBRUhCd2NEQndRQ0FBc2dBVUU3UmcwRUlBRkJsU3BIRFFZZ0JVR0FBV3BCamlvUWFBMEZJQXBCS0dvaUFTQUZRWEVnQnhBUUlBRkJpK1lERUE0YUlBb29BdVFCSVFJZ0FSQVJEQWNMSUFwQkdHb2lBU0FIUVJocUVJWU9JQW9vQWhnZ0FTQUtMQUFqUVFCSUd5QUtRUWhxRUkwT1JRUkFJQXBCS0dvaUFTQUZRUU1nQnhBUUlBRkI4b29LRUE0YUlBRWdDa0VZYWhBU0dpQUJFQkVMSUFwQkdHb1FEeG9NQlFzZ0JTQUhRUUFRR3hDL0ZRd0VDd0pBSUFVb0FwQURRZi8vLy84SFJnMEFJQVVvQXBRRFFmLy8vLzhIUmcwQUlBcEJLR29pQVNBRlFYUWdCeEFRSUFGQi9Qc0hFQTRhSUFvb0F1UUJJUUlnQVJBUkRBVUxJQVVnQjBFQUVCc2lBVFlDa0FNZ0JVRUVRUWdnQVVFQlJoczJBcGdESUFVZ0IwRUJFQnMyQXBRRERBTUxJQWNvQWdBaUFTZ0NCQ0VDSUFFb0FnZ2hBU01BUVJCcklnMGtBQ0FOSUFFMkFnZ2dEU0FDTmdJTUl3QkJJR3NpRUNRQUlCQWdEVUVNYWlJQk5nSVFJQkJCRUdvaEZFRUFJUUlqQUVFUWF5SU1KQUFnQVNnQ0FDRUJJQkFDZndKQUlBVkIyQU5xSWdnb0FnUWlCRVVOQUNBSUtBSUFBbjhnQkVFQmF5QUJjU0FFYVNJUFFRRk5EUUFhSUFFZ0FTQUVTUTBBR2lBQklBUndDeUlDUVFKMGFpZ0NBQ0lKUlEwQUlBUkJBV3NoRmlBUFFRRkxJUmNEUUNBSktBSUFJZ2xGRFFFZ0FTQUpLQUlFSWc5SEJFQUNRQ0FYUlFSQUlBOGdGbkVoRHd3QkN5QUVJQTlMRFFBZ0R5QUVjQ0VQQ3lBQ0lBOUhEUUlMSUFrb0FnZ2dBVWNOQUF0QkFBd0JDeUFNSUFnZ0FTQVVFUFVXQWtCQkFDQUVJQWdvQWd4QkFXcXpJaTBnQ0NvQ0VDSXVJQVN6bEY0YkRRQWdDQ0FFSUFSQkFXdHhRUUJISUFSQkEwbHlJQVJCQVhSeUlnSUNmeUF0SUM2VmpTSXRRd0FBZ0U5ZElDMURBQUFBQUdCeEJFQWdMYWtNQVF0QkFBc2lCQ0FDSUFSTEd4RERBU0FJS0FJRUlnUWdCRUVCYTNGRkJFQWdCRUVCYXlBQmNTRUNEQUVMSUFFZ0JFa0VRQ0FCSVFJTUFRc2dBU0FFY0NFQ0N3SkFJQUpCQW5RaUFpQUlLQUlBYWlnQ0FDSUJSUVJBSUF3b0FnQWdDQ2dDQ0RZQ0FDQUlJQXdvQWdBMkFnZ2dDQ2dDQUNBQ2FpQUlRUWhxTmdJQUlBd29BZ0FpQVNnQ0FDSUNSUTBCSUFJb0FnUWhDUUpBSUFRZ0JFRUJheUlDY1VVRVFDQUNJQWx4SVFrTUFRc2dCQ0FKU3cwQUlBa2dCSEFoQ1FzZ0NDZ0NBQ0FKUVFKMGFpQUJOZ0lBREFFTElBd29BZ0FnQVNnQ0FEWUNBQ0FCSUF3b0FnQTJBZ0FMSUF3b0FnQWhDU0FNUVFBMkFnQWdDQ0FJS0FJTVFRRnFOZ0lNSUF3b0FnQWhBU0FNUVFBMkFnQWdBUVJBSUF3dEFBZ0VRQ0FCUVF4cUVQSVdDeUFCQkVBZ0FSQWZDd3RCQVFzNkFCd2dFQ0FKTmdJWUlBeEJFR29rQUNBUUtBSVlJUUVnRUVFZ2FpUUFJQTBnQVVFTWFpQU5RUWhxRU5VRklBMUJFR29rQUF3Q0N5QUhRUUlRR3lFQklBY29BaWdoQWdKQUlBRkJCMFlFUUNNQVFSQnJJZ0VrQUNBQklBSTJBZ3dnQVNBRlFaZ0NhaUFCUVF4cUVKWUJJQUZCRUdva0FDQUZLQUlFS0FJSUlnSWdCU2dDcEFKUERRTWdDa0VvYWlJRUlBVkJmRUVBRUJBZ0JFSFcrZ2dRRGhvTUFRc2pBRUVRYXlJQkpBQWdBU0FDTmdJTUlBRWdCVUdFQW1vZ0FVRU1haENXQVNBQlFSQnFKQUFnQlNnQ0JDZ0NEQ0lDSUFVb0FwQUNUdzBDSUFwQktHb2lCQ0FGUVh4QkFCQVFJQVJCcHZzSUVBNGFDeUFFSUFJUUlSb2dCRUg0bHdnUURob2dDaWdDNUFFaEFpQUVFQkVnQWtVTkFRd0NDeUFIUVFBUUd5RUJJQVVvQXB3REJFQWdDa0VvYWlJQklBVkJkQ0FIRUJBZ0FVR1kwd1FRRGhvZ0NpZ0M1QUVoQWlBQkVCRU1BZ3NnQVVFZ1JpQUJRY0FBUm5KRkJFQWdDa0VvYWlJQklBVkJjaUFIRUJBZ0FVSDUvd1lRRGhvZ0NpZ0M1QUVoQWlBQkVCRU1BZ3NnQlNBQk5nS2NBd3NnQnk4QkhpSUVRYlVDYTBFRFRRUkFJQVZCZ0FOcUlBUWdDa0VZYWhDcEJob2dDa0VvYWlJQklBVkJmQ0FIRUJBZ0FVSHR1QUlRRGhvZ0FTQUtLQUlZRUkwRUlnSkI4NW9KRUE0YUlBSW9BcndCSVFJZ0FSQVJJQUlOQVNBSEx3RWVJUVFMQWtBQ1FDQUVRZmovQTNGQmlDZEhEUUFnQlMwQWtBRkJFSEZGRFFBZ0NrRUFOZ0lnSUFwQ0FEY0RHQXdCQ3lBS1FRQTJBaWdnQlVHQUEyb2lBU0FFSUFwQktHb1FxUVpGQkVBZ0NrRVlhaUFCSUFvb0FpZ2lBU2dDRENBQktBSUlFSjBYREFFTElBcEJBRFlDSUNBS1FnQTNBeGdMQWtBZ0JTQUtRUmhxRUw0VkJFQURRQ0FIS0FJUUlBY29BZ3dpQVd0QkJIVWdCazBFUUVFQUlRSU1Bd3NnQnlnQ0FDQUJJQVpCQkhScUlnRXZBUUJCQW5ScUtBSUFJUWdnQVNnQ0JCQ0JGd1JBSUFaQkFXb2hCa0dBZ0lDQWVDRUVBMEFnQkVVTkFpQUVJQWh4QkVBZ0JTQUhJQVlnQVNBRUVQTVZJZ0lOQlFzZ0JFRUJkaUVFREFBTEFBc2dCa0VCYWlFR0lBRW9BZ1FReGdvTkFDQUZJQWNnQmlBQklBZ1E4eFVpQWtVTkFBc01BUXNnQ2tFb2FpSUJJQVZCY3lBSEVCQWdBVUhhd3dvUURob2dBU0FFRUNrUURob2dBVUhYNndzUURob2dDa0VJYWlJRUlBcEJHR29nQlVHQUEyb1E4aFVnQVNBRUVCSWFJQW9vQXVRQklRSWdCQkFQR2lBQkVCRUxJQXBCSUdvUXhRTWdBZzBBSUFVb0FvQUNJQWNvQWloTkJFQWdDa0VvYWlJQklBVkJmQ0FIRUJBZ0FVSHRtUWtRRGhvZ0FTQUhLQUlvRUNFYUlBRkJzWmNKRUE0YUlBRWdCU2dDZ0FJUUlSb2dBVUg3bHdnUURob2dDaWdDNUFFaEFpQUJFQkVnQWcwQkN5QUhMd0VlSWdSQkhrWUVRQUpBQWtBZ0JTZ0NCQzhCQUNJQklBY29BaEFnQnlnQ0RHdEJCSFZCQVd0UEJFQkJBQ0VHUVFJaEJBTkFJQWNvQWdRZ0J5Z0NBQ0lCYTBFQ2RTQUVUUVJBSUFVb0FnUW9BZ1FoQWlBSEtBSW9JUVFqQUVFUWF5SUJKQUFnQVNBRU5nSU1JQVZCd0FKcUlBRkJER29RMEFFZ0JrRUJhaUlHTmdJQUlBRkJFR29rQUNBQ0lBWlBEUVFnQ2tFb2FpSUVJQVZCZkNBSEVCQWdCRUdta3dvUURob2dCQ0FDRUNFYUlBUkI3TW9LRUE0YUlBUWdCaEFoR2lBRVFmeVhDQkFPR2d3REJRSkFJQVVnQVNBRVFRSjBhaWdDQUJBZ0lnRkZEUUFnQVM4QkhrRWVSdzBBSUFFb0FpZ2hBaU1BUVJCcklnRWtBQ0FCSUFJMkFnd2dCVUhBQW1vZ0FVRU1haERRQVNnQ0FDRUNJQUZCRUdva0FDQUdJQUlnQWlBR1NSc2hCZ3NnQkVFQmFpRUVEQUVMQUFzQUN5QUtRU2hxSWdRZ0JVRjhJQWNRRUNBRVFaNzlDQkFPR2lBRUlBY29BaEFnQnlnQ0RHdEJCSFZCQVdzUUlSb2dCRUc3K2dnUURob2dCQ0FCRUNFYUlBUkIrSmNJRUE0YUN5QUtLQUxrQVNFQ0lBUVFFU0FDRFFJTElBY3ZBUjRoQkFzQ1FDQUVRZi8vQTNGQit3RkhEUUJCK3dFaEJDQUhLQUlRSUFjb0FneHJRUVIxUVFKclFRRjJJZ0lnQlNnQ0JDZ0NFQ0lHVFEwQUlBcEJLR29pQVNBRlFYd2dCeEFRSUFGQm12NElFQTRhSUFFZ0FoQWhHaUFCUWFYNkNCQU9HaUFCSUFZUUlSb2dBVUg0bHdnUURob2dDaWdDNUFFaEFpQUJFQkVnQWcwQklBY3ZBUjRoQkFzZ0JVR0FBMm9nQkVILy93TnhJZ1lnQ2tIc0FXb1FxUVlOQVNBS0tBTHNBU0lFS0FKa0lnSWdCU2dDRkNJSlNRUkFJQXBCS0dvaUFTQUZRWEFnQnhBUUlBRWdCaEFwRUE0YUlBRkJ1b29LRUE0YUlBRWdBa0VRZGtIL0FYRVFJUm9nQVVIOGx3Z1FEaG9nQVNBQ1FRaDJRZjhCY1JBaEdpQUJRZEhyQVJBT0dpQUtLQUxrQVNFQ0lBRVFFUXdCQ3lBRUtBSmdJUUVnQnk4QkhrSEFJa2NFUUVFQUlRSWdCQ2dDQ0EwQkN3SkFBa0FnQ2tFWWFpQUVLQUpZSUFRb0Fsd1F4QWdpQ0NrREFFSUFVZzBBSUFnb0FnZ2lBZ1JBSUFJb0FnZ05BUXNnQVVGL1JnUkFJQXBCS0dvaUFTQUZRWEFnQnhBUUlBRWdCaEFwRUE0YUlBRkJydW9IRUE0YUlBb29BdVFCSVFJZ0FSQVJEQUlMUVFBaEFpQUJJQWxORFFFZ0NrRW9haUlFSUFWQmNDQUhFQkFnQkNBR0VDa1FEaG9nQkVHNmlnb1FEaG9nQkNBQlFSQjJRZjhCY1JBaEdpQUVRZnlYQ0JBT0dpQUVJQUZCQ0haQi93RnhFQ0VhSUFSQjVkb0hFQTRhSUFvb0F1UUJJUUlnQkJBUkRBRUxRUUFoQWlBRklBZ1F3QTBOQUNBQlFYOUdCRUFnQ2tFb2FpSUJJQVZCY1NBSEVCQWdBU0FHRUNrUURob2dBVUczNkFzUURob2dDa0VJYWlJRUlBZ1FoUTRnQVNBRUVCSWFJQW9vQXVRQklRSWdCQkFQR2lBQkVCRU1BUXNnQVNBSlRRMEFJQXBCS0dvaUJDQUZRWEFnQnhBUUlBUWdCaEFwRUE0YUlBUkJ1b29LRUE0YUlBUWdBVUVRZGtIL0FYRVFJUm9nQkVIOGx3Z1FEaG9nQkNBQlFRaDJRZjhCY1JBaEdpQUVRZVBvQ3hBT0dpQUtRUWhxSWdFZ0NCQ0ZEaUFFSUFFUUVob2dDaWdDNUFFaEFpQUJFQThhSUFRUUVRc2dDRUVJYWhERkF3c2dDa0h3QVdva0FDQUNEQUVMUWZQaUJVR3Rwd0pCbmdKQnI1NERFQUFBQ3lJQkRRQWpBRUVRYXlJRUpBQWdCeWdDS0NJQkJFQWdCQ0FITmdJTUlBUWdBVFlDQ0NBRUlBVkJyQUZxSUFSQkNHb1ErUllMUVFBaENnTkFJQWNvQWhBZ0J5Z0NEQ0lCYTBFRWRTQUtTd1JBQWtBZ0FTQUtRUVIwYWlJQktBSUVRUUZyUVFGTERRQWdCU0FIS0FJQUlBRXZBUUJCQW5ScUtBSUFJZ0lRSUNJR1JRMEFBa0FnQVNnQ0JFRUJSdzBBSUFZdkFSNUIxZ0JIRFFBakFFRVFheUlCSkFBZ0FTQUhOZ0lJSUFFZ0FqWUNEQ01BUVNCcklnSWtBQ0FDSUFGQkRHb2lDRFlDRUNBQ1FSaHFJQVZCeUFCcUlBZ2dBa0VRYWhDR0dTQUNLQUlZSVFnZ0FrRWdhaVFBSUFoQkRHb2dBVUVJYWhEUEFTQUJRUkJxSkFBTElBY29BamhGRFFBZ0JpQUdMd0VlSWdGQklFWUVmMEVCQlNBQlFUdEhEUUZCQWdzUUd5RUNJd0JCZ0FOcklnRWtBQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FGS0FJQUtBSUFFRWNFUUFKQUlBSkIyaWxyRGdZRkJnb0tCd2dBQ3dKQUFrQUNRQ0FDUVFOckRnSUJBZ0FMQWtBZ0FrSFFLV3NPQWdVR0FBc2dBa0dKS2tZTkNpQUNRWm9xUmcwRERBc0xJQUZCOEFKcUlnZ2dCVUdrSkJBM0lBVWdCeWdDT0NnQ0FCQ2ZBU0VKSUFGQnlBSnFJQWdRVkNFQ1FSQVFGU0lHUWRDVklEWUNBQ0FHSUFJcEFnQTNBZ1FnQmlBQ0tBSUlOZ0lNSUFJUVZTQUJJQVkyQXVnQ0lBbEJvQU5xSUFGQjJBSnFJZ1lRelFFZ0JoQVdJQUlRRHhvZ0NCQVBHZ3dLQ3lBQlFmQUNhaUlJSUFWQnBTUVFOeUFGSUFjb0FqZ29BZ0FRbndFaENTQUJRYUFDYWlBSUVGUWhBa0VRRUJVaUJrSDBsU0EyQWdBZ0JpQUNLUUlBTndJRUlBWWdBaWdDQ0RZQ0RDQUNFRlVnQVNBR05nTEFBaUFKUWFBRGFpQUJRYkFDYWlJR0VNMEJJQVlRRmlBQ0VBOGFJQWdRRHhvTUNRc0NRQ0FDUWRvcGF3NEdCQVVKQ1FZSEFBc0NRQ0FDUWRBcGF3NENBZ01BQ3lBQ1FZa3FSZzBISUFKQm1pcEhEUWdMSUFVZ0J5Z0NPQ2dDQUJDZkFTRUdJQUZCOEpjZ05nSVlJQUVnQVVFWWFpSUNOZ0lvSUFaQm9BTnFJQUlRelFFZ0FoQVdEQWNMSUFGQjhBSnFJZ2dnQlVIZ0pCQTNJQVVnQnlnQ09DZ0NBQkNmQVNFSklBRkIrQUZxSUFnUVZDRUNRUkFRRlNJR1FaaVdJRFlDQUNBR0lBSXBBZ0EzQWdRZ0JpQUNLQUlJTmdJTUlBSVFWU0FCSUFZMkFwZ0NJQWxCb0FOcUlBRkJpQUpxSWdZUXpRRWdCaEFXSUFJUUR4b2dDQkFQR2d3R0N5QUJRZkFDYWlJSUlBVkI0U1FRTnlBRklBY29BamdvQWdBUW53RWhDU0FCUWRBQmFpQUlFRlFoQWtFUUVCVWlCa0c4bGlBMkFnQWdCaUFDS1FJQU53SUVJQVlnQWlnQ0NEWUNEQ0FDRUZVZ0FTQUdOZ0x3QVNBSlFhQURhaUFCUWVBQmFpSUdFTTBCSUFZUUZpQUNFQThhSUFnUUR4b01CUXNnQVVId0Ftb2lDQ0FGUWRva0VEY2dCU0FIS0FJNEtBSUFFSjhCSVFrZ0FVR29BV29nQ0JCVUlRSkJFQkFWSWdaQjRKWWdOZ0lBSUFZZ0Fpa0NBRGNDQkNBR0lBSW9BZ2cyQWd3Z0FoQlZJQUVnQmpZQ3lBRWdDVUdnQTJvZ0FVRzRBV29pQmhETkFTQUdFQllnQWhBUEdpQUlFQThhREFRTElBRkI4QUpxSWdnZ0JVSGRKQkEzSUFVZ0J5Z0NPQ2dDQUJDZkFTRUpJQUZCZ0FGcUlBZ1FWQ0VDUVJBUUZTSUdRWVNYSURZQ0FDQUdJQUlwQWdBM0FnUWdCaUFDS0FJSU5nSU1JQUlRVlNBQklBWTJBcUFCSUFsQm9BTnFJQUZCa0FGcUlnWVF6UUVnQmhBV0lBSVFEeG9nQ0JBUEdnd0RDeUFCUWZBQ2FpSUlJQVZCMnlRUU55QUZJQWNvQWpnb0FnQVFud0VoQ1NBQlFkZ0FhaUFJRUZRaEFrRVFFQlVpQmtHb2x5QTJBZ0FnQmlBQ0tRSUFOd0lFSUFZZ0FpZ0NDRFlDRENBQ0VGVWdBU0FHTmdKNElBbEJvQU5xSUFGQjZBQnFJZ1lRelFFZ0JoQVdJQUlRRHhvZ0NCQVBHZ3dDQ3lBQlFmQUNhaUlJSUFWQnp6Y1FOeUFGSUFjb0FqZ29BZ0FRbndFaENTQUJRVEJxSUFnUVZDRUNRUkFRRlNJR1FjeVhJRFlDQUNBR0lBSXBBZ0EzQWdRZ0JpQUNLQUlJTmdJTUlBSVFWU0FCSUFZMkFsQWdDVUdnQTJvZ0FVRkFheUlHRU0wQklBWVFGaUFDRUE4YUlBZ1FEeG9NQVFzZ0JTQUhLQUk0S0FJQUVKOEJJUUlnQVVHVW1DQTJBZ0FnQVNBQk5nSVFJQUpCb0FOcUlBRVF6UUVnQVJBV0N5QUJRWUFEYWlRQUN5QUtRUUZxSVFvTUFRc0xJQVJCRUdva0FDQUhMd0VlUVNkR0JFQWdCMEVBRUJzaEFpTUFRUkJySWdFa0FDQUJJQUkyQWd3Z0FTQUZRVFJxSUFGQkRHb1FsZ0VnQVVFUWFpUUFDeUFIUWN3QWFpRUtEQUVMQ3lBU1FlQUFhaEF5R2dzZ0l4QVdDeUFTUWZBQmFoQ0xBU0FTUVpBRmFpUUFJQUVoQWlBY0VCOGdCVUg0QkdvUUZpQUZRZkFFYWhESUNpQUZRZHdFYWhCUElBVkJ5QVJxRUU4Z0JVRzBCR29RVHlBRlFhQUVhaEJQSUFWQmpBUnFFRThnQlVHQUJHb1FNaG9nQlVIc0Eyb1ExUVFnQlVIWUEyb2lCQ2dDQ0NFQkEwQWdBUVJBSUFFb0FnQWhBeUFCUVF4cUVQSVdJQUVRSHlBRElRRU1BUXNMSUFRUW13TWdCVUhFQTJvaUJDZ0NDQ0VCQTBBZ0FRUkFJQUVvQWdBaEF5QUJRUXhxRUlNT0lBRVFIeUFESVFFTUFRc0xJQVFRbXdNZ0JVR3dBMm9RVHlBRlFmUUNhaUFGS0FMNEFoQ0FEaUFGUWVnQ2FpQUZLQUxzQWhEL0RTQUZRZFFDYWhCUElBVkJ3QUpxRUU4Z0JVR3NBbW9RVHlBRlFaZ0NhaEJQSUFWQmhBSnFFRThnQlVIc0FXb1FUeUFGUWVBQmFoREVBeUFGUWN3QmFpSUVLQUlJSVFFRFFDQUJCRUFnQVNnQ0FDRURJQUZCREdvUTlCWWdBUkFmSUFNaEFRd0JDd3NnQkJDYkF5QUZRY0FCYWhBeUdpQUZRYXdCYWhCUElBVW9BcUFCQkVBZ0JTZ0NvQUVoQVNBRktBS2tBU0VEQTBBZ0FTQURSd1JBSUFOQnpBQnJFSzRISVFNTUFRc0xJQVVnQVRZQ3BBRWdCU2dDb0FFUUh3c2dCVUdZQVdvUXhRTWdCVUdJQVdvUXhRTWdCU2dDZEFSQUlBVW9BblFoQVNBRktBSjRJUU1EUUNBQklBTkhCRUFnQTBIRUEyc1E4QlloQXd3QkN3c2dCU0FCTmdKNElBVW9BblFRSHdzZ0JVSGNBR29RbVFzZ0JVSElBR29RMVFRZ0JVRTBhaEJQSUFWQklHb1FUeUFaUVJCcUVCWWdEa0hBQldva0FDQUNCRUFnQUVFQU9nQ1VBd3dCQ3lNQVFlQUFheUlISkFBQ2YwRUFJQUF0QUpRRFJRMEFHaUFBS0FLb0JTSURLQUlBSVFFZ0IwSElBR29nQTBFUWFoRFJBU0laSVFNZ0FDZ0NGQ0lDSVFzZ0FDZ0NHQ0FDYTBFQ2RTRU1Jd0JCSUdzaURpUUFJQTVCQ0dvZ0F4RFJBU0VJSXdCQjhBQnJJZ1VrQUNBRklBRTJBbXdnQVJDNUNDSUpJQVZCMEFCcUlBZ1EwUUVpQVJERkNpQUJFQllqQUVFZ2F5SUNKQUJCK0FFUUZTRUJJQVVvQW13aEF5QUNRUWhxSUFnUTBRRWhCQ01BUVNCcklnb2tBQ0FCSUFNUXVRZ2lBellDQUNBQklBTW9BZ0EyQWdRZ0FTQURLQUlJTmdJSUlBRWdBeWdDQkRZQ0RDQURLQUlNSVFNZ0FVRUFOZ0lVSUFFZ0F6WUNFRUdvQmhBVklnTkNBRGNDQUNBRFFRQTJBaEFnQTBJQU53SUlJQU5DQURjQ0xDQURRUnhxSWdaQjlPQVNOZ0lBSUFOQkFEc0JOQ0FEUVRocVFRQkJKQkI1R2lBRFFRRTZBQ2dnQXlBR05nSWtJQU1nQmpZQ0lDQURRZ0EzQW5BZ0EwSGdBR29pQmtIMDRCSTJBZ0FnQTBHazRSSTJBaGdnQTBFQU93RjRJQU5CL0FCcVFRQkJKQkI1R2lBRFFRRTZBR3dnQXlBR05nSm9JQU1nQmpZQ1pDQURRZ0EzQXJRQklBTkJwQUZxSWdaQjlPQVNOZ0lBSUFOQnBPRVNOZ0pjSUFOQkFEc0J2QUVnQTBIQUFXcEJBRUVrRUhrYUlBTkJBVG9Bc0FFZ0F5QUdOZ0tzQVNBRElBWTJBcWdCSUFOQ0FEY0NnQUlnQTBId0FXb2lCa0gwNEJJMkFnQWdBMElBTndMa0FTQURRYVRoRWpZQ29BRWdBMEVBT3dHSUFpQURRWXdDYWtFQVFTUVFlUm9nQTBFQk9nRDhBU0FESUFZMkF2Z0JJQU1nQmpZQzlBRWdBMElBTndMRUFpQURRYlFDYWlJR1FmVGdFallDQUNBRFFhVGhFallDN0FFZ0EwRUFPd0hNQWlBRFFkQUNha0VBUVNRUWVSb2dBMEVCT2dEQUFpQURJQVkyQXJ3Q0lBTWdCallDdUFJZ0EwSUFOd0tJQXlBRFFmZ0NhaUlHUWZUZ0VqWUNBQ0FEUWFUaEVqWUNzQUlnQTBFQU93R1FBeUFEUVpRRGFrRUFRU1FRZVJvZ0EwRUJPZ0NFQXlBRElBWTJBb0FESUFNZ0JqWUMvQUlnQTBJQU53TE1BeUFEUWJ3RGFpSUdRZlRnRWpZQ0FDQURRYVRoRWpZQzlBSWdBMEVBT3dIVUF5QURRZGdEYWtFQVFTUVFlUm9nQTBFQk9nRElBeUFESUFZMkFzUURJQU1nQmpZQ3dBTWdBMElBTndLUUJDQURRWUFFYWlJR1FmVGdFallDQUNBRFFhVGhFallDdUFNZ0EwRUFPd0dZQkNBRFFad0Vha0VBUVNRUWVSb2dBMEVCT2dDTUJDQURJQVkyQW9nRUlBTWdCallDaEFRZ0EwSUFOd0xVQkNBRFFjUUVhaUlHUWZUZ0VqWUNBQ0FEUWFUaEVqWUMvQU1nQTBFQU93SGNCQ0FEUWVBRWFrRUFRU1FRZVJvZ0EwRUJPZ0RRQkNBRElBWTJBc3dFSUFNZ0JqWUN5QVFnQTBJQU53S1lCU0FEUVlnRmFpSUdRZlRnRWpZQ0FDQURRYVRoRWpZQ3dBUWdBMEVBT3dHZ0JTQURRYVFGYWtFQVFTUVFlUm9nQTBFQk9nQ1VCU0FESUFZMkFwQUZJQU1nQmpZQ2pBVWdBMElBTndMY0JTQURRY3dGYWlJR1FmVGdFallDQUNBRFFhVGhFallDaEFVZ0EwRUFPd0hrQlNBRFFlZ0Zha0VBUVNRUWVSb2dBMEVCT2dEWUJTQURJQVkyQXRRRklBTWdCallDMEFVZ0EwSUFOd0tNQmlBRFFhVGhFallDeUFVZ0EwSUFOd0tVQmlBRFFnQTNBcHdHSUFOQkFEb0FwQVlnQVNBRE5nSVlJQUZCSUdvZ0JCRHJCU0VESUFGQ0FEY0RTQ0FCUVVCclFnQTNBd0FnQVVJQU53TTRJQUZDQURjRFdDQUJRb0NBZ0lDQWdJREFQemNEVUNBQlFnQTNBMkFnQVVJQU53SnNJQUZCZ0lDQS9BTTJBbWdnQVVJQU53SjBJQUZDQURjQ2hBRWdBVUtBZ0lDQWdJQ0F3RDgzQW53Z0FVSUFOd0tNQVNBQlFhQUJhaUlHUWdBM0F3QWdBVUtBZ0lEOEF6Y0NsQUVnQVVHc0FXb2lFVUlBTndJQUlBRWdCallDbkFFZ0FTQVJOZ0tvQVNBQlFnQTNBcndCSUFGQ0FEY0N0QUVnQVVHQWdJRDhBellDeEFFZ0FVSElBV3BCQUVFb0VIa2FJQUZCQURzQjlBRWdBVUgvLy84Qk5nTHdBU0FCS0FJQUlBcEJDR29nQXhEUkFTSURFTVVLSUFNUUZpQUJLQUlZSUFFMkFoUWdDa0VnYWlRQUlBUVFGaUFDUVNCcUpBQWdCU0FCTmdKSUlBVkJDR29pQXlBQktBSVlOZ0lFSUFNZ0NEWUNBQ0FEUVFocVFiYmlCaEFVR2lBRFFSUnFRUUJCSkJCNUdpQURRUUU2QURnZ0EwRUJPZ0E0UVFBaEFpQUpJQU1nQ3lBTVFaVU1RWllNUVFBUXRBY2hEQUpBSUFNb0Fod2lCRVVOQUNBREtBSVlJZ3BGRFFBZ0EwRWNhaUlHUVFBMkFnQWdDaUFFRU5zWElBWkJBQkRZQ0FzZ0F5Z0NHQ0lFQkVBZ0EwRUFOZ0lZSUFNb0FnUWdCQkRIRnlBRFFSaHFRUUFROFFvTElBTW9BZ1FpQmlnQ2tBWWhFU0FHS0FLTUJpRUVBMEFnQkNBUlJ3UkFJQVFvQWdBaUN5Z0NXQ0VjSUFzb0FsUWhDZ05BSUFvZ0hFWUVRQ0FFUVFScUlRUU1Bd1VnQ2lnQ0FDQUxOZ0lBSUFwQkJHb2hDZ3dCQ3dBTEFBc0xJQVpCbUFacUVNNFhJQVlnQXlnQ0lEWUNtQVlnQmlBREtBSWtOZ0tjQmlBR0lBTW9BaWcyQXFBR0lBTkJBRFlDS0NBRFFnQTNBaUFnQ1JDNENDQU1SUVJBSUFWQkFEWUNTQ0FCSVFJTElBTkJMR29RaFFNYUlBTkJJR29RNWc0Z0EwRWNhaEM2QmhvZ0EwRVlhaERaQ0JvZ0EwRUlhaEFQR2lBRlFjZ0FhaEQ5RGlBRlFmQUFhaVFBSUFnUUZpQU9RU0JxSkFBZ0IwRUFOZ0lBSUFCQnJBVnFJQUlRb1JrZ0J4RDlEaUFaRUJZZ0FDZ0NyQVVpQVVVRVFDQUFRUUE2QUpRRElBQkJxQVJxUVlhMEJCQVpLQUlBTFFBQVFRQkhEQUVMSUFBZ0FTZ0NHRFlDc0FVZ0FDQUJFTUFHTmdLMEJTQUFJQUFvQXF3RkVKOFpOZ0s0QlNBQUlBQW9BcXdGRU44SU5nSzhCU0FBSUFBb0Fxd0ZFTjRJTmdMQUJTQUFLQUt3QlNFQklBZENBRGNDRENBSFFZQ0FnUHdETmdJVUlBZENBRGNESUNBSFFnQTNBekFnQjBLQWdJRDhBemNES0NBSFFnQTNBZ1FnQnlBQk5nSUFJQWRDQURjREdDQUhRUVJ5SWdRUWpna2dCeUFIS0FJc05nSXdJQWRCR0dvaUF4Q09DU0FIS0FJQUlnRW9BcEFHSVFVZ0IwRXNhaUVDSUFFb0Fvd0dJUUVEZnlBQklBVkdCSDhnQnlnQ0FDSUJLQUtRQmlFRklBRW9Bb3dHSVFFRFFDQUJJQVZIQkVBZ0J5QUJLQUlBRUo0WklBRkJCR29oQVF3QkN3c2dBRUhFQldvZ0IwRTRhaUFDRUxBQklnRVE3UVVnQVJBeUdpQUNFRElhSUFNUVR5QUVFRThnQUMwQWxBTkJBRWNGSUFjZ0FTZ0NBQ0lLRU4wSU5nSTRJQU1nQjBFNGFoRFFBU0FLTmdJQUlBRkJCR29oQVF3QkN3c0xJUUVnQjBIZ0FHb2tBQ0FCUlEwQVFRQWhFZ0pBSUFBdEFKUURSUTBBSXdCQk1Hc2lBU1FBSUFGQ0FEY0RLQ0FCUVFBNkFDY2dBVUlBTndNWUlBQW9BckFGSVFKQkZCQVZJZ01nQURZQ0JDQURRY1RoRWpZQ0FDQURJQUZCS0dvMkFoQWdBeUFCUVJocU5nSU1JQU1nQVVFbmFqWUNDQ0FCSUFNMkFoQWdBaUFCRUtFT0lBRVFGaUFCUVRCcUpBQkJBQ0VFUVFBaEZBSkFJQUF0QUpRRFJRMEFJd0JCSUdzaUFTUUFJQUJCNUFWcUlRY2dBRUg0QldvaEJTQUFRYWdFYWlFS0lBQW9BckFGSWdOQnBBRnFJUVlnQTBHb0FXb2hBZ05BQWtBZ0JpQUNLQUlBSWdOR0JFQkJBU0VFREFFTEFuOGdBVUVRYWlBRFFRQVFqd1VpQWlnQ0dDSUlJQUpCREdvZ0NCc29BZ0FRRkNJQ1FiR0xCeENtQ1FSQUlBRWdBeEJnTmdJTUlBRWdCeUFCUVF4cUVKWUJRUUVNQVFzZ0FoQ1VHVVVFUUNBQklBTVFZRFlDRENBQklBVWdBVUVNYWhDV0FVRUJEQUVMSUFCQkFEb0FsQU1nQ2tHbTRnc1FHU0FDRUUwb0FnQXRBQUJCQUVjaEJFRUFDeUVJSUFJUUR4b2dBMEVFYWlFQ0lBZ05BUXNMSUFGQklHb2tBQ0FFUlEwQVFRQWhBU01BUVJCcklnTWtBQUpBSUFBdEFKUURSUTBBSUFCQnlBUnFJUUlnQUVHb0JHb2hCeUFBS0FLd0JTSUVRZkFCYWlFRklBUkI5QUZxSVFRRFFDQUZJQVFvQWdBaUJFY0VRQ0FFUVFFUU9DRUtJQU1nQkVFQ0VJOEZFTDhHQW44Z0F4Q1RHVVVFUUVFQUlRb2dBRUVBT2dDVUF5QUhRZm4zQ3hBWklBTVFUU2dDQUMwQUFFRUFSd3dCQ3lBQ0lBb2dBeERGQmlBQ0lBTVE5UTVGQkVCQkFDRUtRUUFnQWlBREVKNFBSUTBCR2d0QkFTRUtJQUVMSVFFZ0JFRUVhaUVFSUFNUUR4b2dDZzBCREFJTEN5QUFLQUt3QlNJQlFid0RhaUVLSUFGQndBTnFJUVFEUUNBS0lBUW9BZ0FpQVVZRVFDQURJQUFvQXJBRkVNWVhJQU1vQWdRaENDQURLQUlBSVFRRFFDQUVJQWhHQkVBZ0F4QXlHa0VCSVFFTUJBc2dCQ2dDQUNJQktBSVVRUjVHQkVBZ0FSQmdJUWNnQVJESUFTRUZJd0JCMEFGcklnRWtBQ0FCSUFjMkFzd0JJQUpCTUdvZ0FVSE1BV29RbkJvaUJ5QUZFSnNhSUFGQ0FEY0R3QUVnQVVJQU53TzRBU0FCUVlDQWdQd0ROZ0xJQVNBQklBRkJ1QUZxTmdLd0FTQUhLQUlFSVFZZ0J5Z0NBQ0VLQTBBQ1FDQUdJQXBHQkVBZ0FVRXNhaUVPSUFGQktHb2hCaUFIS0FJRUlRa2dCeWdDQUNFS1FRQWhCd05BSUFrZ0NrWU5BaUFLS0FJRUlBb3RBQXNpQlNBRlFSaDBRUmgxUVFCSUcwVUVRQ0FCUVNCcUVFa2hDeUFHUWFYckJCQU9HaUFHSUFjUUlSb2dBU0FPRUVJZ0FVRVFhaUlGSUFGQnNBRnFJQUVRbVJvZ0NpQUZFSjRCSUFVUUR4b2dBUkFQR2lBRklBRkJ1QUZxSUFvUWx3c2dDeEJSQ3lBS1FReHFJUW9nQjBFQmFpRUhEQUFMQUFzZ0NpZ0NCQ0FLTFFBTElnVWdCVUVZZEVFWWRVRUFTQnNFUUNBQlFTQnFJZ1VnQVVHd0FXb2dDaENaR2lBS0lBVVFuZ0VnQlJBUEdpQUZJQUZCdUFGcUlBb1Fsd3NMSUFwQkRHb2hDZ3dCQ3dzZ0FVRzRBV29RbWdzZ0FVSFFBV29rQUFzZ0JFRUVhaUVFREFBTEFBVUNRQUpBQWtBZ0FTZ0NGRUVGYXc0Q0FBRUNDeUFESUFGQkFSQ1BCUkMvQmlBREtBSUVJQU10QUFzaUJDQUVRUmgwUVJoMVFRQklHd1JBSUFJZ0FVRUFFRGdnQXhERkJnc2dBeEFQR2d3QkN5QURJQUZCQWhDUEJSQy9CaUFES0FJRUlBTXRBQXNpQkNBRVFSaDBRUmgxUVFCSUd3UkFJQUZCQUJBNElRY2dBVUVCRURnaEJTTUFRUkJySWdRa0FDQUVJQWMyQWd3Z0FrRXdhaUFFUVF4cUVKd2FJZ2NnQnlnQ0JDQUhLQUlBYTBFTWJTSUdJQVZCQVdvaUNDQUdJQWhMR3hDYkdpQUhLQUlBSUFWQkRHeHFJZ2NvQWdRZ0J5MEFDeUlGSUFWQkdIUkJHSFZCQUVnYlJRUkFJQVFnQXhDZUdpQUhJQVFRbmdFZ0JCQVBHZ3NnQkVFUWFpUUFDeUFERUE4YUN5QUJRUVJxSVFRTUFRc0FDd0FMSUFOQkVHb2tBQ0FCUVFGeFJRMEFJd0JCRUdzaUFTUUFJQUFvQXJBRklnTkJpQVZxSVFRZ0EwR01CV29oQWdKQUEwQWdCQ0FDS0FJQUlnTkdCRUFnQUNnQzZBMGlBMFVFUUVFQklRSU1Bd3NGQWtBZ0F5Z0NGRUhIQUVjTkFDQURRUUVRT0VFTFJ3MEFJQU5CQWhBNFFSbEhEUUFnQUNBRFFRQVFPRFlDNkEwTElBTkJCR29oQWd3QkN3c2dBQ2dDdEFVZ0F4Q1VBU0lEUlFSQUlBQkJBRG9BbEFNZ0FFR29CR3BCdGRBREVCa29BZ0F0QUFCQkFFY2hBZ3dCQ3lBREtBSVVJZ0pCTEVZZ0FrRXpSbkpGQkVBZ0FFRUFPZ0NVQXlBQVFhZ0Vha0hCN3d3UUdTRUNJQUVnQXhCWUlBSWdBUkJOS0FJQUxRQUFRUUJISVFJZ0FSQVBHZ3dCQ3lBQVFld05haUFERUhvaUJEWUNBRUVBSVFJZ0FFSHdEV29nQUNnQ3RBVWdCQkNVQVVFQUVEZzJBZ0FnQVNBRE5nSUVJQUVnQURZQ0FDQUJJQUJCOUExcUlBQkJnQTVxUVFBUTlBNUZEUUFnQVNBQVFmZ05haUFBUVlRT2FrRUJFUFFPUlEwQUlBRWdBRUg4RFdvZ0FFR0lEbXBCQWhEMERpRUNDeUFCUVJCcUpBQWdBa1VOQUVFQUlRZ2pBRUd3QldzaUJTUUFJQVZDQURjRG9BVWdCVUlBTndPWUJTQUZRWUNBZ1B3RE5nS29CU0FBS0FLd0JTSUJRYlFDYWlFSklBRkJ1QUpxSVFvQ1FBSkFBMEFnQ1NBS0tBSUFJZ1pIQkVBZ0JrRUJFRGhCRVVZRVFDQUdFTWdCUVFWSERRTWdCU0FHUVFBUU9EWUMrQUlnQmtFQ0VEZ2hHU0FHUVFNUU9DRU1JQVpCQkJBNElSRkJBQ0VCSXdCQklHc2lEaVFBSUE0Z0JVSDRBbW8yQWhBakFFRVFheUlLSkFBZ0JTZ0MrQUloQXlBT0FuOENRQ0FGUVpnRmFpSUhLQUlFSWdKRkRRQWdCeWdDQUFKL0lBSkJBV3NnQTNFZ0Fta2lDMEVCVFEwQUdpQURJQUlnQTBzTkFCb2dBeUFDY0FzaUFVRUNkR29vQWdBaUJFVU5BQ0FDUVFGcklSd2dDMEVCU3lFTkEwQWdCQ2dDQUNJRVJRMEJJQU1nQkNnQ0JDSUxSd1JBQWtBZ0RVVUVRQ0FMSUJ4eElRc01BUXNnQWlBTFN3MEFJQXNnQW5BaEN3c2dBU0FMUncwQ0N5QUVLQUlJSUFOSERRQUxRUUFNQVF0QkdCQVZJUVFnQ2lBSFFRaHFOZ0lFSUFvZ0JEWUNBQ0FPS0FJUUtBSUFJUXNnQkVJQU53SU1JQVFnQ3pZQ0NDQUVRUUEyQWhRZ0NrRUJPZ0FJSUFSQkFEWUNBQ0FFSUFNMkFnUUNRRUVBSUFJZ0J5Z0NERUVCYXJNaUxTQUhLZ0lRSWk0Z0FyT1VYaHNOQUNBSElBSWdBa0VCYTNGQkFFY2dBa0VEU1hJZ0FrRUJkSElpQVFKL0lDMGdMcFdOSWkxREFBQ0FUMTBnTFVNQUFBQUFZSEVFUUNBdHFRd0JDMEVBQ3lJQ0lBRWdBa3NiRU1NQklBY29BZ1FpQWlBQ1FRRnJjVVVFUUNBQ1FRRnJJQU54SVFFTUFRc2dBaUFEU3dSQUlBTWhBUXdCQ3lBRElBSndJUUVMQWtBZ0FVRUNkQ0lESUFjb0FnQnFLQUlBSWdGRkJFQWdDaWdDQUNBSEtBSUlOZ0lBSUFjZ0NpZ0NBRFlDQ0NBSEtBSUFJQU5xSUFkQkNHbzJBZ0FnQ2lnQ0FDSUJLQUlBSWdORkRRRWdBeWdDQkNFRUFrQWdBaUFDUVFGcklnTnhSUVJBSUFNZ0JIRWhCQXdCQ3lBQ0lBUkxEUUFnQkNBQ2NDRUVDeUFIS0FJQUlBUkJBblJxSUFFMkFnQU1BUXNnQ2lnQ0FDQUJLQUlBTmdJQUlBRWdDaWdDQURZQ0FBc2dDaWdDQUNFRUlBcEJBRFlDQUNBSElBY29BZ3hCQVdvMkFnd2dDaENMQVVFQkN6b0FIQ0FPSUFRMkFoZ2dDa0VRYWlRQUlBNG9BaGdoQVNBT1FTQnFKQUFnQVNBUk5nSVVJQUVnRERZQ0VDQUJJQmsyQWd3TElBWkJCR29oQ2d3QkN3c2dBRUhJQkdvaEZpQUFRWlFIYWlFR0lBQkJxQVJxSVJjZ0FDZ0NzQVVpQVVId0FXb2hHeUFCUWZRQmFpRUtJQVZCbUFGcUlSZ2dCVUdZQTJvaEdpQUZRWkFEYWlFTkEwQWdHeUFLS0FJQUlobEhCRUFnR1VFQUVEZ2hBeUFGSUJsQkFSQTROZ0tVQlNBRlFZZ0ZhaUlCSUJsQkFoRFJCeEMvQmdKQUlBRVFreGtpSGtVRVFDQUFRUUE2QUpRRElCZEIrZmNMRUJrZ0JVR0lCV29RVFNnQ0FDMEFBRUVBUnlFSURBRUxJQVZCQURvQWh3VWdCVUg0QkdvUVZRSkFJQVlnQlVHVUJXb1E3QUVpQVVVRVFDQUZRUUU2QUljRklBVkIrQUpxSWdFZ0ZpQUZRWWdGYWhEbEJTQUZRZmdFYWlBQkVKNEJJQUVRRHhvTUFRc2dCVUg0QkdvZ0FTZ0NERUVVYWhEZ0Fnc2dCU2dDL0FRZ0JTMEFnd1VpQVNBQlFSaDBRUmgxUVFCSUcwVUVRQ0FGUWZnQ2FrSEdxZ1ZCOWdaQkJ5QUZRZmdBYWhBZElnRVFGeUVDSUExQjMrRUlFQTRhSUFJUUdDQUJFQjRMSUFWQmlBVnFJQVZCK0FScUVQSURRUUZ6UlFSQUlBVkIrQUpxUWNhcUJVSDNCa0VISUFWQitBQnFFQjBpQVJBWElRSWdEVUdhdlFnUURob2dBaEFZSUFFUUhnc2dCVUg0QW1vUWtna2hBa0VESVFvZ0JVSDRBR29Ra2draEJ3SkFBMEFnR1JESUFTQUtUUVJBQWtBZ0JVRUFPZ0FjSUFVZ0dqWUNHQ0FGUWNnQWFpQUZRUmhxSWdRUS9Rb2hBU0FGS0FKb0lnb2dDaUFGS0FKc1FRSjBhaEQ4Q2lBRlFRQTZBQXdnQlNBWU5nSUlJQVFnQlVFSWFoRDlDaUVSSUFVb0FqZ2lCQ0FFSUFVb0FqeEJBblJxRVB3S0lBVUNmd0pBQWtBQ1FBSkFJQU1PQmdNQ0FnSUFBUUlMUVFFTUF3dEJBZ3dDQ3lBQUtBS2dCVUVBT2dBQUlBQW9BcVFGUVFocUlnUkJ0WVFNRUE0YUlBUWdBeEFoR2tGL0lRTUxJQU1MSWdNMkFoUWdCVUVBTmdJUUlBVkNBRGNEQ0NBRFFRSkhEUU1nQUNnQzZBMUZEUUFnQUNrRGdBNGhMeUFGSUFBb0FvZ09OZ0lRSUFVZ0x6Y0RDQXdEQ3dVZ0JTQVpJQW9RT0NJQk5nSklBa0FnQUNnQ3RBVWdBUkNVQVNJRVJRMEFJQUloQVFKQUFrQWdCRUVBRURoQkFXc09Bd0VDQUFJTElBY2hBUXNqQUVFUWF5SUVKQUFnQkVFSWFpQUJRU3hxSUFWQnlBQnFJZzRRN2hnZ0JDZ0NDQ0VKSUFSQkVHb2tBQ0FKUVFKSEJFQWdBU0FPRUo4RkN3c2dDa0VCYWlFS0RBRUxDeUFGUVpnRmFpQUZRWlFGYWhEc0FTSURSUTBBSUFVZ0F5Z0NGRFlDRUNBRklBTXBBZ3czQXdnTElBVkJpQVZxSVJBZ0JVRVVhaUVQSUFWQmh3VnFJUk1nQlVINEJHb2hIQ0FCSVFNZ0JVRUlhaUVWUVFBaEJDTUFRU0JySWdza0FDQUxJQVZCbEFWcU5nSVFJQXRCRUdvaEl5TUFRUkJySWdra0FDQUZLQUtVQlNFQklBc0Nmd0pBSUFZb0FnUWlDa1VOQUNBR0tBSUFBbjhnQ2tFQmF5QUJjU0FLYVNJTVFRRk5EUUFhSUFFZ0FTQUtTUTBBR2lBQklBcHdDeUlFUVFKMGFpZ0NBQ0lPUlEwQUlBcEJBV3NoSHlBTVFRRkxJU0VEUUNBT0tBSUFJZzVGRFFFZ0FTQU9LQUlFSWd4SEJFQUNRQ0FoUlFSQUlBd2dIM0VoREF3QkN5QUtJQXhMRFFBZ0RDQUtjQ0VNQ3lBRUlBeEhEUUlMSUE0b0FnZ2dBVWNOQUF0QkFBd0JDeUFKSUFZZ0FTQWpFUFFJQWtCQkFDQUtJQVlvQWd4QkFXcXpJaTBnQmlvQ0VDSXVJQXF6bEY0YkRRQWdCaUFLSUFwQkFXdHhRUUJISUFwQkEwbHlJQXBCQVhSeUlnUUNmeUF0SUM2VmpTSXRRd0FBZ0U5ZElDMURBQUFBQUdCeEJFQWdMYWtNQVF0QkFBc2lDaUFFSUFwTEd4RERBU0FHS0FJRUlnb2dDa0VCYTNGRkJFQWdDa0VCYXlBQmNTRUVEQUVMSUFFZ0Nra0VRQ0FCSVFRTUFRc2dBU0FLY0NFRUN3SkFJQVJCQW5RaUJDQUdLQUlBYWlnQ0FDSUJSUVJBSUFrb0FnQWdCaWdDQ0RZQ0FDQUdJQWtvQWdBMkFnZ2dCaWdDQUNBRWFpQUdRUWhxTmdJQUlBa29BZ0FpQVNnQ0FDSUVSUTBCSUFRb0FnUWhEZ0pBSUFvZ0NrRUJheUlFY1VVRVFDQUVJQTV4SVE0TUFRc2dDaUFPU3cwQUlBNGdDbkFoRGdzZ0JpZ0NBQ0FPUVFKMGFpQUJOZ0lBREFFTElBa29BZ0FnQVNnQ0FEWUNBQ0FCSUFrb0FnQTJBZ0FMSUFrb0FnQWhEaUFKUVFBMkFnQWdCaUFHS0FJTVFRRnFOZ0lNSUFrb0FnQWhBU0FKUVFBMkFnQWdBUVJBSUFrdEFBZ0VRQ0FCUVF4cUVQb1lDeUFCQkVBZ0FSQWZDd3RCQVFzNkFCd2dDeUFPTmdJWUlBbEJFR29rQUNBTEtBSVlJUUVnQzBFZ2FpUUFBa0FnQVVFTWFpSUVLQUlFSUFRb0FnaEpCRUFnQkVFSWFpQUVLQUlFSWdFZ0VDQVBJQk1nSENBRElCRWdGUkR0R0NBRUlBRkJoQUZxTmdJRURBRUxJd0JCSUdzaUNTUUFJQVJCQ0dvaUN5RXNJQVFvQWdRZ0JDZ0NBR3RCaEFGdFFRRnFJZ0ZCb1BqQkQwOEVRQkFCQUF0Qm4vakJEeUFFS0FJSUlBUW9BZ0JyUVlRQmJTSUtRUUYwSWc0Z0FTQUJJQTVKR3lBS1FZLzg0QWRQR3lFT0lBUW9BZ1FnQkNnQ0FHdEJoQUZ0SVF4QkFDRUtJQWxCQ0dvaUFVRUFOZ0lNSUFFZ0N6WUNFQ0FPQkVBZ0RrR2crTUVQVHdSQUVQc0JBQXNnRGtHRUFXd1FGU0VLQ3lBQklBbzJBZ0FnQVNBS0lBeEJoQUZzYWlJTE5nSUlJQUVnQ2lBT1FZUUJiR28yQWd3Z0FTQUxOZ0lFSUN3Z0FTZ0NDQ0FRSUE4Z0V5QWNJQU1nRVNBVkVPMFlJQUVnQVNnQ0NFR0VBV28yQWdnZ0JDZ0NBQ0VNSUFRb0FnUWhDd05BSUFzZ0RFY0VRQ0FCS0FJRVFZUUJheUFMUVlRQmF5SUxJZ29RVkNJT0lBb3RBQkE2QUJBZ0RpQUtLQUlNTmdJTUlBNUJGR29nQ2tFVWFoQlVHaUFPUVNCcUlBcEJJR29RNHdVYUlBNUJ6QUJxSUFwQnpBQnFFT01GR2lBT0lBb29Bb0FCTmdLQUFTQU9JQW9wQW5nM0FuZ2dBU0FCS0FJRVFZUUJhellDQkF3QkN3c2dCQ2dDQUNFS0lBUWdBU2dDQkRZQ0FDQUJJQW8yQWdRZ0JDZ0NCQ0VLSUFRZ0FTZ0NDRFlDQkNBQklBbzJBZ2dnQkNnQ0NDRUtJQVFnQVNnQ0REWUNDQ0FCSUFvMkFnd2dBU0FCS0FJRU5nSUFJQUVvQWdRaENnTkFJQW9nQVNnQ0NDSU9Sd1JBSUFFZ0RrR0VBV3NpRGpZQ0NDQU9FS01aR2d3QkN3c2dBU2dDQUNJQkJFQWdBUkFmQ3lBSlFTQnFKQUFMSUFRb0FnUWFJQkVRSXlBREVDTWdCeENSQ1NBQ0VKRUpJQndRRHhvTElCbEJCR29oQ2lBRlFZZ0ZhaEFQR2lBZURRRU1Bd3NMSUFBdEFKUURRUUJISVFnTUFRc2dBRUVBT2dDVUF5QUFRYWdFYWtHTHBnd1FHU0VESUFWQitBSnFJZ0VnQmhCWUlBTWdBUkJOS0FJQUxRQUFRUUJISVFnZ0FSQVBHZ3NnQlVHWUJXb1FUeUFGUWJBRmFpUUFJQWhGRFFCQkFDRUNJd0JCMEFCcklnRWtBQUpBSUFBdEFKUURSUTBBSUFGQlFHdENBRGNEQUNBQlFnQTNBemdnQVVHQWdJRDhBellDU0NBQUtBTElCU0VFSUFBb0FzUUZJUUlEUUNBQ0lBUkdCRUFnQVNBQU5nSVlJQUVnQURZQ0VDQUFRZEFIYWlFRUlBQW9Bc2dGSVFzZ0FDZ0N4QVVoQ2dOQUFrQUNRQ0FLSUF0SEJFQWdDaWdDQUNJREtBSllJUmtnQXlnQ1ZDRUhBMEFnQnlBWlJnMERJQWNvQWdBaUEwRU1haUVNSUFOQkVHb2hBZ05BQWtBQ1FDQU1JQUlvQWdBaUEwY0VRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFNb0FoUWlBa0hYQUdzT0ZRTURCQVFEQXdRRUFnTUVBQUVNREF3RkRBWUhDQWtMSUFFZ0FVRVlhaUFERUk0Rk5nSWdJQVFnQVVFZ2FoQ1RBeERpR0F3TEN5QUJJQUZCR0dvZ0F4Q09CVFlDSUNBRUlBRkJJR29Ra3dNUTRSZ01DZ3NnQVNBQlFSaHFJQU1RamdVMkFpQWdCQ0FCUVNCcUVKTURFTmNJREFrTElBRWdBVUVZYWlBREVJNEZOZ0lnSUFRZ0FVRWdhaENUQXhEWENDQUJJQUZCRUdvZ0F4RHpEallDSUNBRUlBRkJJR29Ra3dNUTFRNE1DQXNnQVNBQlFSaHFJQU1RamdVMkFpQWdCQ0FCUVNCcUVKTURJZ0pCQVRvQUJTQUNRWUVDT3dBQ0lBRWdBVUVRYWlBREVQTU9OZ0lnSUFRZ0FVRWdhaENUQTBHQkFqc0FBQXdIQ3lBQklBRkJHR29nQXhDT0JUWUNJQ0FFSUFGQklHb1Frd01RMXdnTUJnc2dBU0FCUVJocUlBTVFqZ1UyQWlBZ0JDQUJRU0JxRUpNREVOY0lJQUVnQVVFUWFpQURFUE1PTmdJZ0lBUWdBVUVnYWhDVEF4RFZEZ3dGQ3lBQklBRkJHR29nQXhDT0JUWUNJQ0FFSUFGQklHb1Frd05CQVRvQUFnd0VDeUFCSUFGQkdHb2dBeENPQlRZQ0lDQUVJQUZCSUdvUWt3TWlBa0VCT2dBRUlBSkJnUUk3QUFJTUF3c2dBa0U1UmcwQkRBSUxJQWRCQkdvaEJ3d0RDeUFERU1nQklnWkZCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrSGE2QVFRR1NFQ0lBRkJJR29pQkNBREVGZ2dBaUFFRUUwb0FnQXRBQUFoQWlBRUVBOGFEQVVMSUFFZ0EwRUFFRGcyQWd4QkFTRUlJQVpCQVdzaUFpQUJRVGhxSUFGQkRHb1Erd29pQlNnQ0JDQUZLQUlBYTBFQ2RVWUVRQU5BSUFZZ0NFWU5BZ0pBSUFRZ0JTZ0NBQ0FJUVFKMGFrRUVheEQxQXlJSlJRMEFRUUFoQWlBQklBQWdBeUFJRURnaURrRUFFTDRHTmdJZ0lBRWdBQ0FPUVFFUXZnWWlEallDQ0NBSlFReHFJUWtnQVNnQ0lBUkFJQVFnQVVFZ2FoQ1RBeUFKRU9NWUlBRW9BZ2doRGlBQktBSWdJUUlMSUE1RklBSWdEa1p5RFFBZ0JDQUJRUWhxRUpNRElBa1E0eGdMSUFoQkFXb2hDQXdBQ3dBTElBQkJBRG9BbEFNZ0FFR29CR3BCdE9NSkVCa2hCQ0FCSUFVb0FnUWdCU2dDQUd0QkFuVTJBZ2dnQkNBQlFRaHFFQzlCeWVNSkVCa2hCQ0FCSUFJMkFnUWdCQ0FCUVFScUVDOUJocGtCRUJraEFpQUJRU0JxSWdRZ0F4QllJQUlnQkJCTktBSUFMUUFBSVFJZ0JCQVBHZ3dFQ3lBRFFRUnFJUUlNQUFzQUN3QUxJQUF0QUpRRElRSUxJQUpCL3dGeFFRQkhJUUlnQVVFNGFoRFZCQXdFQ3lBS1FRUnFJUW9NQUFzQUJTQUJJQUlvQWdBaUJ4RGRDRFlDSUNBQklBRkJPR29nQVVFZ2FpSURFUHNLTmdJa0lBRkJqT0lTTmdJZ0lBRWdBellDTUNBSElBTVEzQmNnQWtFRWFpRUNJQU1RRmd3QkN3QUxBQXNnQVVIUUFHb2tBQ0FDUlEwQVFRQWhBU01BUVNCcklnTWtBQUpBSUFBdEFKUURSUTBBSUFCQmpBWnFJUWNnQUVHb0JHb2hBaUFBS0FLd0JTSUJRY3dGYWlFRklBRkIwQVZxSVFFQ1FBTkFJQUVvQWdBaUFTQUZSZzBCQWtBQ1FDQUJLQUlVUVR0SERRQWdBVUVBRURnaUJFRU1SeUFFUVFKSGNRMEFJQUFvQXJRRklBRVFlaENVQVNJRUtBSVVRU0JIRFFFZ0FDZ0N0QVVnQkVFQkVEZ1FsQUVpQkNnQ0ZFRWVSZ1JBSUFNZ0JCQmdOZ0lNSUFOQkVHb2dCeUFEUVF4cUVKWUJEQUVMSUFCQkFEb0FsQU1nQWtHQTV3c1FHU0VLSUFOQkVHb2lCQ0FCRUZnZ0NpQUVFRTBhSUFRUUR4b0xJQUZCQkdvaEFRd0JDd3NnQUVFQU9nQ1VBeUFDUWNYMUN4QVpJUVFnQTBFUWFpSUNJQUVRV0NBRUlBSVFUU2dDQUMwQUFFRUFSeUVCSUFJUUR4b01BUXNnQUNnQ3NBVWlBVUhNQldvaEFpQUJRZEFGYWlFQkEwQWdBaUFCS0FJQUlnRkdCRUFDUUNBQUtBS2dCa1VOQUNBQUtBSzRCZzBBSUFBZ0FDZ0N2QVVnQUNnQ3JBWWdBQ2dDdEFZUXdCY2lBVFlDdUFZZ0FDQUJRUUFRaFFFYUN5QUFMUUNVQTBFQVJ5RUJEQUlMSUFBb0Fyd0ZJQUVRWUJEcEFRUkFJQUFnQVJCZ1FRQVFoUUVhQ3lBQlFRUnFJUUVNQUFzQUN5QURRU0JxSkFBZ0FVVU5BRUVBSVFJakFFRVFheUlCSkFBQ1FDQUFMUUNVQTBVTkFDQUFLQUt3QlNJRFFjd0ZhaUVFSUFOQjBBVnFJUUlEUUNBRUlBSW9BZ0FpQTBjRVFBSkFJQUFvQXJ3RklBTVFlaERwQVNJQ1JRMEFJQUlnQWlnQ0FDZ0NnQUVSQUFCRkRRQWdBeWdDRkNJQ1FUdEdEUUFDUUNBQ1FTNUhCRUFnQWtFQlJ3MEJJQUJCQURvQWxBTWdBRUdvQkdwQithd01FQmtoQWlBQklBTVFXQ0FDSUFFUVRTZ0NBQzBBQUVFQVJ5RUNJQUVRRHhvTUJRc2dBRUVBT2dDVUF5QUFRYWdFYWtIZHJBd1FHU0VDSUFFZ0F4QllJQUlnQVJCTktBSUFMUUFBUVFCSElRSWdBUkFQR2d3RUN5QUFRUUE2QUpRRElBQkJxQVJxUVphdERCQVpJUUlnQVNBREVGZ2dBaUFCRUUwb0FnQXRBQUJCQUVjaEFpQUJFQThhREFNTElBTkJCR29oQWd3QkN3c2dBQzBBbEFOQkFFY2hBZ3NnQVVFUWFpUUFJQUpGRFFCQkFDRUhJd0JCb0FGcklnTWtBQUpBSUFBdEFKUURSUTBBSUFCQmdBZHFJUkVnQUVHb0JHb2hEQ0FBUVNCcUlRWWdBQ2dDc0FVaUFVSE1CV29oSENBQlFkQUZhaUVFQWtBRFFDQUVLQUlBSWdVZ0hFWU5BUUpBQWtBQ1FBSkFBa0FnQlNnQ0ZFRXdhdzREQVFFQUF3c2dBQ0FGRUhwQkFCQ0ZBU0VLSUFWQkFCQTRJUUVDUUNBS1JRMEFBbjhnQ2lnQ0JDSUNRZURMRWtZRVFDQURRUUEyQW5nZ0EwSUFOd053SUFOQ0FEY0RhQ0FESUFHdE53TkFJQU5CQVRZQ1dDQUdJQU5CNkFCcUlBTkJRR3NnQTBIWUFHb1FnZ2tNQVFzZ0FrR3d5eEpHQkVBZ0EwRUFOZ0o0SUFOQ0FEY0RjQ0FEUWdBM0EyZ2dBeUFCclRjRFFDQURRUUkyQWxnZ0JpQURRZWdBYWlBRFFVQnJJQU5CMkFCcUVJSUpEQUVMSUFKQnlNc1NSdzBCSUFOQkFEWUNlQ0FEUWdBM0EzQWdBMElBTndOb0lBTWdBYjY3T1FOQUlBTkJBVFlDV0NBR0lBTkI2QUJxSUFOQlFHc2dBMEhZQUdvUStnb0xJZ2dOQWdzZ0FFRUFPZ0NVQXlBTVFidk1DUkFaSVFJZ0EwSG9BR29pQVNBRkVGZ2dBaUFCRUUwb0FnQXRBQUJCQUVjaEJ5QUJFQThhREFZTElBQWdCUkI2UVFBUWhRRWhDaUFEUVFBMkFuZ2dBMElBTndOd0lBTkNBRGNEYUNBRElBVW9BaFJCTUVZNkFFQWdCaUFEUWVnQWFpQURRVUJyRVBJT0lRZ0xJQWhGSUFwRmNnMEFJQU5DQURjRG1BRWdBMEtBZ0lDQWdBRTNBb3dCSUFNZ0EwSG9BR28yQW9nQklBTkIyQUJxSUFBZ0JSQmdFTlFISUFNb0Fsd2hBaUFES0FKWUlRUUNRQU5BUVFVaERpQUNJQVJHRFFFQ1FBSkFJQVFvQWdRZ0JDZ0NBQ0lCYTBFSVJ3MEFJQUVvQWdCQkFVY05BQ0FESUFFb0FnUWlBVFlDVkNBQlFZQ0FCRWtOQVNBQVFRQTZBSlFESUF4QjI1d0pFQmtoQVNBRElBVVFZRFlDUUNBQklBTkJRR3NRTDBILzNRb1FHU0FEUWRRQWFoQXZLQUlBTFFBQVFRQkhJUWRCQVNFT0RBTUxJQVJCREdvaEJBd0JDd3NnQTBFQU5nSlFJQU5DQURjRFNDQURRZ0EzQTBBZ0F5QUJyVGNET0NNQVFSQnJJZ0VrQUNBQklBWWdBMEU0YWhEcEJUWUNEQ01BUVJCcklnSWtBQ0FHRUJ3Z0JpQUdLQUlNUVFGcUlnUTJBZ3dnQWlBRU5nSUlJQVpCakFGcUlnUWdCQkMvQVNBR0tBSUlJQUlvQWdnZ0EwRkFheUFCS0FJTUVQOGVJZ2tRS0NBRUlBUW9BaGhCQVdvMkFoZ2dBa0VRYWlRQUlBRkJFR29rQUNBRFFlZ0FhaUFKRUpBRkN5QURRZGdBYWhDa0FpQU9RUVZIRFFFZ0JSQmdJUWtnQXlBRFFlZ0FhaENXR1NJTklRNGpBRUhnQUdzaUFpUUFJQUlnQ0RZQ1dDQUNJQW8yQWx4QkFDRUJJQUFnQ1NBQ1Fkd0FhaUFPUVFBUTJ3Z0VRQ0FBUVNCcUlnUVFIQ0FBUWNnRWFpQUpFSk1DSWdFb0FnQWhDaUFDSUFFb0FnUWdBUzBBQ3lJSUlBaEJHSFJCR0hWQkFFZ2lDQnMyQWpRZ0FpQUtJQUVnQ0JzMkFqQWdBaUFDS1FNd053TUlJQUpCT0dvaUN5QUFRYWdDYWlBQ1FRaHFFSmdESUFKQkFEWUNLQ0FDUWdBM0F5QWdBa0lBTndNWUlBSWdBaWdDWENJQklBUWdBU2dDQUNnQ0NCRUJBRFlDRUNNQVFUQnJJZ2drQUNNQVFSQnJJZ0VrQUNBSVFRaHFJZ3BDQURjQ0FDQUtRb0NBZ0lEQUFEY0NIQ0FLSUFwQkNHb2lDVFlDR0NBS0lBSW9BaEEyQWdBZ0NpQUNLQUpZTmdJRUlBRWdEa0VnYWpZQ0NDQUJJQTRvQWlBZ0RrYzZBQXdnQ1NBQlFRaHFFSU1KSUFGQkVHb2tBQ0FJSUFRZ0N4RHpBallDQkNNQVFSQnJJZ3NrQUNBRUVCd2dCQ0FFS0FJTVFRRnFJZ0UyQWd3Z0N5QUJOZ0lJSXdCQkVHc2lEaVFBSUFSQmpBRnFJaGtRdHdRaEFTQUtLQUlFSVJBZ0NpZ0NBQ0VQSUFnb0FnUWhFeUFMS0FJSUlSVWdCQ2dDQ0NFV0lBNGdDVUVRYWpZQ0NDQU9JQWtvQWhBZ0NVYzZBQXdnR1NBQklCWWdGU0FDUVJocUlCTWdEeUFRSUE1QkNHb1FoQjhpQVJBb0lCa2dHU2dDR0VFQmFqWUNHQ0FPUVJCcUpBQWdDMEVRYWlRQUlBUVE4Z0lnQVJDQkN5QUtFTHdISUFoQk1Hb2tBQXNnQWtIZ0FHb2tBQ0FORUNNZ0FRUkFJQU1nQlJCZ05nSllJQU5CUUdzZ0VTQURRZGdBYWhDV0FRc2dBMEhvQUdvUUl3c2dCVUVFYWlFRURBRUxDeUFEUWVnQWFoQWpEQUVMSUFBdEFKUURRUUJISVFjTElBTkJvQUZxSkFBZ0IwVU5BQ01BUWJBQ2F5SUJKQUFDUUFKQUlBQXRBSlFEUlEwQUlBQkJ2QVpxSVFjZ0FFSDRCMm9oQlNBQVFTQnFJUVlnQUVHZ0JXb2hDQ0FBS0FLd0JTSURRY3dGYWlFWklBTkIwQVZxSVFJZ0FVR1lBV29oREFOQUlCa2dBaWdDQUNJRFJ3UkFBa0FnQXlnQ0ZFRTdSdzBBSUFOQkFCQTRJUUlnQXhCNklRUUNRQ0FDUVgxeFFRRkhEUUFnQkNBQUtBS3dCa2NOQUNBSEtBSUFCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrSEJzd1FRR1NnQ0FDMEFBRUVBUnlFRURBWUxJQWNnQXhCZ05nSUFJQUFnQXhESUFVRUNUd1IvSUFOQkFSQTRCVUVBQ3pZQ3dBWU1BUXNnQ0NBQ0VKZ1BJZ3BCQ1UxQkFFRUJJQXAwUWJjSGNSdEZCRUFnQUVFQU9nQ1VBeUFBUWFnRWFrSEoxUWtRR1NFRUlBRWdBallDb0FJZ0JDQUJRYUFDYWhDUkJVRzRwQXdRR1NFRUlBRkJnQUZxSWdJZ0F4QllJQVFnQWhCTktBSUFMUUFBUVFCSElRUWdBaEFQR2d3RkN5QUFMUUNVQTBVTkF3SkFJQUpGQkVCQkFDRUVJQUFnQXhEY0NDSUtEUUVNQmdzZ0FDQUVRUUFRaFFFaUFrVUVRQ0FBUVFBNkFKUURJQUJCcUFScVFiS3lEQkFaSVFJZ0FTQURFSG8yQW9BQklBSWdBVUdBQVdvUUx5Z0NBQzBBQUVFQVJ5RUVEQVlMSUFJb0FnUkIrTXNTUndSQUlBQkJBRG9BbEFNZ0FFR29CR3BCL2NJTEVCa2hBaUFCSUFNUVlEWUNnQUVnQWlBQlFZQUJhaEF2UWF1N0NoQVpJUUlnQVNBREVIbzJBcUFDSUFJZ0FVR2dBbW9RTHlnQ0FDMEFBRUVBUnlFRURBWUxJQUlvQWd3aEJDQUNLQUlJSWdvTkFDQUJRWUFCYWtIR3FnVkIxd3RCQnlBQlFhQUNhaEFkSWdJUUZ5RUtJQXhCa0t3SUVBNGFJQW9RR0NBQ0VCNUJBQ0VLQzBFQUlRNGdBeERJQVVFQ1R3UkFJQUZCZ0FGcUlBQWdBMEVCRURnUTJ3VWdBU2dDaEFFaERnc2dBQ0FLSUFRUWtoa2hDU0FERUdBaEFpQUJRZ0EzQTJBZ0FVSUFOd05ZSUFGQ0FEY0RVQ0FCUWdBM0EwZ2dBVUlBTndONElBRkNnSUNBZ0lBQk53SnNJQUVnQVVISUFHb2lDellDYUNBQUlBSWdCQ0FKSUFvZ0RpQUxFUGtLSVFJZ0N4QWpJQUpGRFFBZ0JoRHlBaUFDRUlFTElBRWdBeEJnTmdKRUlBRkJBRFlDaUFFZ0FVSUFOd09BQVNBQlFhQUNhaUFGSUFGQnhBQnFJQUZCZ0FGcUVQRU9JQUVvQXFBQ0RRQWdBU2dDcEFJaUNpQUpOZ0lJSUFvZ0JEWUNCQ0FLSUFJMkFnQUxJQU5CQkdvaEFnd0JDd3NDUUFKQUlBY29BZ0FpQTBVTkFDQUFRY2dFYWlBRElBRkJnQUZxUVlyRUFoQVVJZ01ReFFZZ0F4QVBHa0VBSVFJZ0FDZ0N3QVlpQXdSQUlBQW9BclFGSUFNUWxBRWlBeWdDRkNJQ1FUTkhJQUpCTEVkeERRSWdBVUdBQVdvZ0FDQURJQUFvQXFRR0VEZ1Eyd1VnQVNnQ2hBRWhBZ3NnQUNBQUlBQW9BcXdHUVFBUWhRRWlDaUFJSUFBb0FyUUdFSmdQSWdNUWtoa2hDQ0FBS0FLOEJpRU9JQUZDQURjRElDQUJRZ0EzQXhnZ0FVSUFOd01RSUFGQ2dJQ0FnSUFCTndJc0lBRkNBRGNEQ0NBQlFnQTNBemdnQVNBQlFRaHFJZ1EyQWlnZ0FDQU9JQU1nQ0NBS0lBSWdCQkQ1Q2lFQ0lBUVFJeUFHRVBJQ0lBSVFnUXNnQVVFQU5nS0lBU0FCUWdBM0E0QUJJQUZCb0FKcUlBVWdCeUFCUVlBQmFoRHhEaUFCS0FLZ0FnMEFJQUVvQXFRQ0lnUkJBRFlDQ0NBRUlBTTJBZ1FnQkNBQ05nSUFDeUFBTFFDVUEwRUFSeUVFREFJTElBQkJBRG9BbEFNZ0FFR29CR3BCNmE4TUVCa2hCQ0FCUVlBQmFpSUNJQU1RV0NBRUlBSVFUU2dDQUMwQUFFRUFSeUVFSUFJUUR4b01BUXRCQUNFRUN5QUJRYkFDYWlRQUlBUkZEUUFnQUMwQWxBTkJBRWNoRkFzZ0ZFVU5BRUVBSVFjakFFSGdCMnNpQVNRQUFrQWdBQzBBbEFORkRRQWdBRUdVQjJvaEJTQUFLQUxJQlNFS0lBQW9Bc1FGSVFJRFFBSkFJQUlnQ2tjRVFDQUFMUUNVQTBVTkF5QUJJQUlvQWdBaUF4RGRDRFlDM0FjZ0JTQUJRZHdIYWhEc0FTSUVSUVJBSUFBZ0FVRUlhaUFBSUFOQkFCQ1VHaUlERUlvYU9nQ1VBeUFERUpJYURBSUxJQVFvQWhBaEJpQUVLQUlNSVFRRFFDQUVJQVpHRFFJZ0FDQUJRUWhxSUFBZ0F5QUVFSlFhSWdnUWlob2lEam9BbEFNZ0NCQ1NHaUFFUVlRQmFpRUVJQTROQUFzTUF3c2dBQzBBbEFOQkFFY2hCd3dDQ3lBQ1FRUnFJUUlNQUFzQUN5QUJRZUFIYWlRQUlBZEZEUUFnQUMwQWxBTkJBRWNoRWdzZ0VrVU5BQ0FBTFFDVUEwRUFSeUVyQ3lBZ0tBSVlJUUFnSUVFQU5nSVlJQUFFUUNBQUJFQWdBQkNKRndzZ0FCQWZDeUFnUVNCcUpBQWdLd3V6Q2dFSWZ5QUFLQUlBSVFNZ0FDQUJOZ0lBSUFNRVFDQURCRUFnQXlnQ0FCQzRDQ0FES0FMc0FTRUFJQU5CQURZQzdBRWdBQVJBSUFBRVFDQUFRUnhxRUU4Z0FFRUlhaEJQQ3lBQUVCOExJQU1vQXVnQklRQWdBMEVBTmdMb0FTQUFCRUFnQUFSQUlBQkJHR29RTWhvZ0FFRUVhaEJQQ3lBQUVCOExJQU1vQXVRQklRQWdBMEVBTmdMa0FTQUFCRUFnQUFSQUlBQkJDR29RaFFNYUlBQkJCR29RaFFNYUN5QUFFQjhMSUFNb0F1QUJJUUlnQTBFQU5nTGdBU0FDQkVBZ0FnUkFJQUpCRkdvUVR5QUNLQUlJSVFBRFFDQUFCRUFnQUNnQ0FDRUJJQUJCQ0dvUTJnZ2FJQUFRSHlBQklRQU1BUXNMSUFJUW13TUxJQUlRSHdzZ0F5Z0MzQUVoQlNBRFFRQTJBdHdCSUFVRVFDQUZCRUFnQlVFRWFpSUhLQUlJSVFBRFFDQUFCRUFnQUNnQ0FDRUNJQUJCRUdvaUNDZ0NDQ0VCQTBBZ0FRUkFJQUVvQWdBaEJDQUJRUXhxSWdaQkxHb1FNaG9nQmtFVWFoQlBJQVlRVHlBQkVCOGdCQ0VCREFFTEN5QUlFTGNDSUFBUUh5QUNJUUFNQVFzTElBY1F0d0lMSUFVUUh3c2dBeWdDMkFFaEFpQURRUUEyQXRnQklBSUVRQ0FDQkVBZ0FrRW9haUFDS0FJc0VPTU9JQUpCRkdvaUJTZ0NDQ0VBQTBBZ0FBUkFJQUFvQWdBaEFTQUFLQUlJSVFRZ0FFRUFOZ0lJSUFRRVFDQUVJQVFvQWdBb0FnZ1JBd0FMSUFBUUh5QUJJUUFNQVFzTElBVVFtd01nQWtFRWFpQUNLQUlJRU9JT0N5QUNFQjhMSUFNb0F0UUJJUUFnQTBFQU5nTFVBU0FBQkVBZ0FBUkFJQUFnQUNnQ0JCRGhEZ3NnQUJBZkN5QURLQUxRQVNFQ0lBTkJBRFlDMEFFZ0FnUkFJQUlFUUNBQ1FkUUFhaERuRGlBQ1FVQnJFT2NPSUFKQkxHb2lCQ2dDQ0NFQUEwQWdBQVJBSUFBb0FnQWhBU0FBUVF4cUlBQW9BaEFRNEE0Z0FCQWZJQUVoQUF3QkN3c2dCQkNiQXlBQ1FSaHFFRThnQWtFRWFoQlBDeUFDRUI4TElBTkJ6QUZxRVA4WUlBTkJ5QUZxRUlFWklBTkJ0QUZxSWdnb0FnZ2hBQU5BSUFBRVFDQUFLQUlBSVFFZ0FFRU1haUlFS0FJRUlRWWdCQ2dDQUNFQ0EwQWdBaUFHUndSQUlBSW9BZ0FpQlFSQUlBVVFvZzRMSUFVUUh5QUNRUVJxSVFJTUFRc0xJQVFnQkNnQ0FEWUNCQ0FFUWVBQWFpSUNLQUlBQkVBZ0FpZ0NBQ0VISUFJb0FnUWhCUU5BSUFVZ0IwY0VRQ0FGUVFScklna29BZ0FoQmlBSlFRQTJBZ0FnQmdSQUlBWUVRQ0FHRUtJT0N5QUdFQjhMSUFWQkNHc2hCUXdCQ3dzZ0FpQUhOZ0lFSUFJb0FnQVFId3NnQkVITUFHb1FUeUFFUVF4cUVLSU9JQVFRTWhvZ0FCQWZJQUVoQUF3QkN3c2dDQkNiQXlBRFFhZ0JhaUFES0FLc0FSRGZEaUFEUVp3QmFpQURLQUtnQVJEY0RpQURLQUtZQVNFQUlBTkJBRFlDbUFFZ0FBUkFJQUFFUUNBQVFjUUJhaEJQSUFCQnNBRnFFTlVFSUFCQjVBQnFFTnNPSUFCQkdHb1EydzRnQUVFRWFoRFZCQXNnQUJBZkN5QURRWVFCYWhCUElBTkI4QUJxRU9jT0lBTkIyQUJxRUU4Z0EwSEVBR29RVHlBRFFVQnJFUGNZSUFOQlBHb1EvUmdnQTBFNGFoQ0RHU0FEUVNCcUVCWWdBeWdDR0NFQklBTkJBRFlDR0NBQkJFQWdBUVJBSUFGQm1BWnFFT1lPSUFGQmpBWnFJZ0FvQWdBRVFDQUFLQUlBSVFRZ0FDZ0NCQ0VDQTBBZ0FpQUVSd1JBSUFKQkJHc1EyUWdoQWd3QkN3c2dBQ0FFTmdJRUlBQW9BZ0FRSHdzZ0FVSElCV29Ra2dNYUlBRkJoQVZxRUpJREdpQUJRY0FFYWhDU0F4b2dBVUg4QTJvUWtnTWFJQUZCdUFOcUVKSURHaUFCUWZRQ2FoQ1NBeG9nQVVHd0Ftb1FrZ01hSUFGQjdBRnFFSklER2lBQlFlZ0JhaENGQXhvZ0FVSGtBV29RaFFNYUlBRkJvQUZxRUpJREdpQUJRZHdBYWhDU0F4b2dBVUVZYWhDU0F4b0xJQUVRSHdzTElBTVFId3NMS0FBZ0FFRUFOZ0trQlNBQVFSZ1E2dzRnQUVFQU5nS3NCU0FBSUFBb0FyQUZRUUZxTmdLd0JRc2RBQ0FBUWN3QWFoQWpJQUJCSUdvUUl5QUFRUlJxRUE4YUlBQVFEd3NLQUNBQVFiak5FaEJJQzVNQkFRRi9Jd0JCSUdzaUJ5UUFJQWNnQWlnQ0FEWUNIQ01BUVNCcklnSWtBQ0FDSUFNb0FnQTJBZ2dnQWlBRUtBSUFOZ0lNSUFJZ0JTZ0NBRFlDRUNBR0tBSUFJUU1nQWtFRU5nSWNJQUlnQXpZQ0ZDQUNJQUpCQ0dvMkFoZ2dBaUFDS1FNWU53TUFJQWNnQWhEZEdSb2dBa0VnYWlRQUlBQWdBU0FIUVJ4cUlBY1F4UmtoQUNBSEVGNGdCMEVnYWlRQUlBQUxpZ0VCQVg4akFFRWdheUlHSkFBZ0JpQUNLQUlBTmdJY0l3QkJJR3NpQWlRQUlBSWdBeWdDQURZQ0RDQUNJQVFvQWdBMkFoQWdCU2dDQUNFRElBSkJBellDSENBQ0lBTTJBaFFnQWlBQ1FReHFOZ0lZSUFJZ0Fpa0RHRGNEQUNBR0lBSVE4Z1lhSUFKQklHb2tBQ0FBSUFFZ0JrRWNhaUFHRU93T0lRQWdCaENzQXlBR1FTQnFKQUFnQUFzUUFDQUFJQUFvQWdCQjJBSnFFT01hQytzQkFRTi9Jd0JCb0FKcklnSWtBRUVNSUFGQmxnRnNRZVFBYmlJQklBRkJERTBiSWdNZ0FDZ0NsQVJMQkVBZ0FrS0FnSUNBZ0FFM0FwUUNJQUlnQWtFUWFpSUJOZ0tRQWlBQklBQW9BcHdFRUtvTElBQW9BcEFFSWdFZ0FDZ0NsQVJCTEd4cUlRUURRQUpBSUFFZ0JFWUVRQ0FBRUxBTElBQWdBeENHQ1NBQ0tBS1FBaUlCSUFJb0FwUUNRUVYwYWlFRERBRUxJQUV0QUNBRVFDQUNRUkJxSUFFUTRBWVF3UThMSUFGQkxHb2hBUXdCQ3dzRFFDQUJJQU5HUlFSQUlBSkJDR29nQUNBQklBRkJCR29ROEJrZ0FVRWdhaUVCREFFTEN5QUNRUkJxRU1BUEN5QUNRYUFDYWlRQUM1MERBUU4vQWtBQ1FBSkFBa0FnQXc0REF3SUJBQXNnQTBFSVRBUkFJQUFnQVVZTkF5QUVJZ01oQlFOQUlBVWhCaUFESUFBcEFnQTNBZ0FnQUVFSWFpSUFJQUZHRFFRZ0JrRUlhaUVGSUFVaEF5QUNJQUFnQmhEb0EwVU5BQU5BSUFNZ0JpSURLUUlBTndJQUlBTWdCRVlFUUNBRUlRTU1BZ3NnQWlBQUlBTkJDR3NpQmhEb0F3MEFDd3dBQ3dBTElBQWdBQ0FEUVFGMklnWkJBM1FpQjJvaUJTQUNJQVlnQkNBR0VPb0lJQVVnQVNBQ0lBTWdCbXNpQXlBRUlBZHFJQU1RNmdnZ0JTRURBMEFnQUNBRlJnUkFBMEFnQVNBRFJnMEZJQVFnQXlrQ0FEY0NBQ0FFUVFocUlRUWdBMEVJYWlFRERBQUxBQXNnQVNBRFJnUkFBMEFnQUNBRlJnMEZJQVFnQUNrQ0FEY0NBQ0FFUVFocUlRUWdBRUVJYWlFQURBQUxBQVVDUUNBQ0lBTWdBQkRvQXdSQUlBUWdBeWtDQURjQ0FDQURRUWhxSVFNTUFRc2dCQ0FBS1FJQU53SUFJQUJCQ0dvaEFBc2dCRUVJYWlFRURBRUxBQXNBQ3lBRUlBRkJDR3NpQVNBQUlBSWdBU0FBRU9nRElnSWJLUUlBTndJQUlBQWdBU0FDR3lFQUlBUkJDR29oQkFzZ0JDQUFLUUlBTndJQUN3c2tBQ0FBSUFFcEFnQTNBZ0FnQUNBQktBSUlOZ0lJSUFCQkRHb2dBVUVNYWhDZERCb0xGQUFnQUVHdzNCSTJBZ0FnQUVFUWFoQmVJQUFMb2dFQkFuNERRQUpBSUFBZ0FVWUVRQU5BSUFJZ0EwWU5BaUFFSUFJcEF3QTNBd0FnQkVFSWFpRUVJQUpCQ0dvaEFnd0FDd0FMSUFJZ0EwWUVRQU5BSUFBZ0FVWU5BaUFFSUFBcEF3QTNBd0FnQkVFSWFpRUVJQUJCQ0dvaEFBd0FDd0FGQWtBZ0Fpa0RBQ0lGSUFBcEF3QWlCbFFFUUNBRUlBVTNBd0FnQWtFSWFpRUNEQUVMSUFRZ0JqY0RBQ0FBUVFocUlRQUxJQVJCQ0dvaEJBd0NDd0FMQ3d2UUFnSUNmZ04vQWtBQ1FBSkFBa0FnQXc0REF3QUJBZ3NnQkNBQUtRTUFOd01BRHdzZ0FVRUlheUlCS1FNQUlnVWdBQ2tEQUNJR1ZBUkFJQVFnQlRjREFDQUVJQUFwQXdBM0F3Z1BDeUFFSUFZM0F3QWdCQ0FCS1FNQU53TUlEd3NnQTBFSVRBUkFBa0FnQUNJRElBRWlCMFlOQUNBRUlBTXBBd0EzQXdBZ0JDRUFBMEFnQTBFSWFpSURJQWRHRFFFZ0FFRUlhaUVCQWtBZ0F5a0RBQ0lGSUFBcEF3QWlCbFFFUUNBQklBWTNBd0FEUUNBQUlBUkdCRUFnQXlrREFDRUZJQVFoQUF3REN5QURLUU1BSWdVZ0FFRUlheUlDS1FNQUlnWmFEUUlnQUNBR053TUFJQUloQUF3QUN3QUxJQUVnQlRjREFDQUJJUUFNQVFzZ0FDQUZOd01BSUFFaEFBd0FDd0FMRHdzZ0FDQUFJQU5CQVhZaUIwRURkQ0lKYWlJSUlBSWdCeUFFSUFjUTRBZ2dDQ0FCSUFJZ0F5QUhheUlDSUFRZ0NXb2dBaERnQ0NBQUlBZ2dDQ0FCSUFRUXJCa0xDK0FEQVFSL0FrQUNRQUpBQWtBQ1FDQUNEZ01FQWdFQUN5QUNRUWhLRFFJZ0FDQUJSZzBESUFNZ0FDZ0NBRFlDQUNBRElRSURRQ0FBUVFScUlnQWdBVVlOQkNBQ1FRUnFJUVFDUUNBQUtBSUFJZ1VvQWdnZ0FpZ0NBQ0lHS0FJSVNRUkFJQVFnQmpZQ0FBTkFJQUFvQWdBaEJpQUNJQU5HQkVBZ0F5RUNEQU1MSUFZb0FnZ2dBa0VFYXlJRktBSUFJZ2NvQWdoUERRSWdBaUFITmdJQUlBVWhBZ3dBQ3dBTElBUWdCVFlDQUNBRUlRSU1BUXNnQWlBR05nSUFJQVFoQWd3QUN3QUxJQU1nQVVFRWF5SUJLQUlBSWdJZ0FDZ0NBQ0lFSUFJb0FnZ2dCQ2dDQ0VraUFoczJBZ0FnQUNBQklBSWJJUUFnQTBFRWFpRURDeUFESUFBb0FnQTJBZ0FNQVFzZ0FDQUFJQUpCQVhZaUJVRUNkQ0lHYWlJRUlBVWdBeUFGRU9rSUlBUWdBU0FDSUFWcklnSWdBeUFHYWlBQ0VPa0lJQVFoQWdOQUlBQWdCRVlFUUFOQUlBRWdBa1lOQXlBRElBSW9BZ0EyQWdBZ0EwRUVhaUVESUFKQkJHb2hBZ3dBQ3dBTElBRWdBa1lFUUFOQUlBQWdCRVlOQXlBRElBQW9BZ0EyQWdBZ0EwRUVhaUVESUFCQkJHb2hBQXdBQ3dBRkFrQWdBaWdDQUNJRktBSUlJQUFvQWdBaUJpZ0NDRWtFUUNBRElBVTJBZ0FnQWtFRWFpRUNEQUVMSUFNZ0JqWUNBQ0FBUVFScUlRQUxJQU5CQkdvaEF3d0JDd0FMQUFzTEN3QWdBRUVvYWhCZUlBQUw2d0lCQjM4Z0FpZ0NCQ0VGQWtBZ0FTZ0NCQ0lFYVNJSVFRRk5CRUFnQkVFQmF5QUZjU0VGREFFTElBUWdCVXNOQUNBRklBUndJUVVMSUFFb0FnQWdCVUVDZEdvaUJpZ0NBQ0VEQTBBZ0F5SUhLQUlBSWdNZ0FrY05BQXNDUUNBQlFRaHFJZ2tnQjBjRVFDQUhLQUlFSVFNQ1FDQUlRUUZOQkVBZ0F5QUVRUUZyY1NFRERBRUxJQU1nQkVrTkFDQURJQVJ3SVFNTElBTWdCVVlOQVFzZ0FpZ0NBQ0lEQkVBZ0F5Z0NCQ0VEQWtBZ0NFRUJUUVJBSUFNZ0JFRUJhM0VoQXd3QkN5QURJQVJKRFFBZ0F5QUVjQ0VEQ3lBRElBVkdEUUVMSUFaQkFEWUNBQXNnQndKL1FRQWdBaWdDQUNJR1JRMEFHaUFHS0FJRUlRTUNRQ0FJUVFGTkJFQWdBeUFFUVFGcmNTRUREQUVMSUFNZ0JFa05BQ0FESUFSd0lRTUxJQVlnQXlBRlJnMEFHaUFCS0FJQUlBTkJBblJxSUFjMkFnQWdBaWdDQUFzMkFnQWdBa0VBTmdJQUlBRWdBU2dDREVFQmF6WUNEQ0FBUVFFNkFBZ2dBQ0FKTmdJRUlBQWdBallDQUF0SEFRRi9JQUV0QUFRRVFDQUFFQ01nQUNBQktBSUFJZ0lwQWdBM0FpQWdBQ0FDS0FJSU5nSW9JQUVvQWdBaUFFRUFOZ0lJSUFCQ0FEY0NBQThMSUFBZ0FTZ0NBQkRxR1FzK0FDQUFRWXdGYWhBaklBQkI0QVJxRUNNZ0FFRzBCR29RSXlBQVFhZ0RhaERjQlNBQVFmd0NhaEFqSUFCQnNBSnFFSlVCSUFCQkpHb1Frd1VnQUF1b0FRRUVmeUFBS0FLRUFTSUNJQUFvQW9nQlR3UkFJQUFvQW9nQklnSkJBWFJCQWlBQ0d5SUNJQUFvQW9nQlN3UkFJQUFvQW9BQklRTWdBQ0FDRU40T0lBQW9Bb1FCSVFSQkFDRUNBMEFnQWlBRVJnUkFJQUFnQXhBMkJTQUNRUUowSWdVZ0FDZ0NnQUZxSUFNZ0JXb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3c2dBQ2dDaEFFaEFnc2dBQ0FDUVFGcU5nS0VBU0FBS0FLQUFTQUNRUUowYWlBQktBSUFOZ0lBQ3k0QUlBQWdBQkRmQ3lBQktBSUFJQUlvQWdBZ0F5Z0NBQkROSENJQkVDZ2dBQ0FBS0FJWVFRRnFOZ0lZSUFFTDNBSUJDMzhnQUNnQ0FDSUVLQUt3QlNJSklBQW9BZ3hHQkVBZ0FDZ0NDQThMSXdCQkVHc2lBU1FBSXdCQnNBRnJJZ1VrQUNBRUtBS2tCU0lIUVFGcklRb2dBQ2dDQkNJSUlBZHdJUUlnQkNnQ29BVWhDd0pBQTBBZ0F5QUhSd1JBSUFzZ0FrRWNiR29pQmkwQUVFVUVRQ0FCUVFBMkFnd2dBVUVBT2dBSURBTUxBa0FnQmlnQ0ZDQUlSdzBBSUFnZ0JpZ0NBRWNOQUNBQklBSTJBZ3dnQVVFQk9nQUlEQU1MSUFNZ0JpZ0NHRXNFUUNBQlFRQTJBZ3dnQVVFQU9nQUlEQU1GSUFKQkFXcEJBQ0FDSUFwSEd5RUNJQU5CQVdvaEF3d0NDd0FMQ3lBRlFZYTFBMEdlQkVFT0lBVkJvQUZxRUIwaUFoQVhJZ05CR0dwQjBqVVFEaG9nQXhBWUlBRkJBRFlDRENBQlFRQTZBQWdnQWhBZUN5QUZRYkFCYWlRQUlBRW9BZ3doQWlBRUtBS2dCU0VESUFFdEFBZ2hCQ0FCUVJCcUpBQWdBQ0FKTmdJTUlBQWdBeUFDUVJ4c2FrRUVha0VBSUFRYklnQTJBZ2dnQUFzNkFDQUFJQUFRdFFjZ0FTZ0NBQ0FDS0FJQUlBTWdCQ2dDQUNBRktBSUFJQVlvQWdBUTloNGlBUkFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJDLzBDQVFaL0lBQWdBVWNFZnlBQklBSkdCRUFnQUE4TEFuOGdBU0FBUVFScVJnUkFJQUlnQVdzaEJDQUFLQUlBSVFVZ0FTQUNSd1JBSUFBZ0FTQUVFT2NCR2dzZ0FDQUVhaUlBSUFVMkFnQWdBQXdCQ3lBQ0lBRkJCR3BHQkVBZ0FrRUVheUlCS0FJQUlRVWdBQ0FCUndSQUlBSWdBU0FBYXlJQmF5SUNJQUFnQVJEbkFSb0xJQUFnQlRZQ0FDQUNEQUVMQW44Z0FTQUFJZ05yUVFKMUlnUWdBaUFCYTBFQ2RTSUZSd1JBSUFVaEFDQUVJUUVEUUNBQklBQWlBVzhpQUEwQUN5QURJQUZCQW5ScUlRWURRQ0FESUFaR0JFQWdBeUFGUVFKMGFnd0RCU0FHUVFScklnWWdCRUVDZENJSGFpRUJJQVlvQWdBaENDQUdJUUFEUUNBQUlBRW9BZ0EyQWdBZ0FTSUFJQWRxSUFNZ0JDQUNJQUZyUVFKMUlnRnJRUUowYWlBQklBUktHeUlCSUFaSERRQUxJQUFnQ0RZQ0FBd0JDd0FMQUFzZ0FTRUFBMEFnQVNBRFJ3UkFJQU1vQWdBaEFpQURJQUFvQWdBMkFnQWdBQ0FDTmdJQUlBQkJCR29oQUNBRFFRUnFJUU1NQVFzTElBRUxDd1VnQWdzTHRRTUJBMzhDUUFKQUFrQUNRQ0FERGdNREFnRUFDeUFEUVFoTUJFQWdBQ0FCUmcwRElBUWlBeUVGQTBBZ0JTRUdJQU1nQUNnQ0FEWUNBQ0FBUVFScUlnQWdBVVlOQkNBR1FRUnFJUVVnQlNFRElBSWdBQ2dDQUNBR0tBSUFFT2tEUlEwQUEwQWdBeUFHSWdNb0FnQTJBZ0FnQXlBRVJnUkFJQVFoQXd3Q0N5QUNJQUFvQWdBZ0EwRUVheUlHS0FJQUVPa0REUUFMREFBTEFBc2dBQ0FBSUFOQkFYWWlCa0VDZENJSGFpSUZJQUlnQmlBRUlBWVE2d2dnQlNBQklBSWdBeUFHYXlJRElBUWdCMm9nQXhEckNDQUZJUU1EUUNBQUlBVkdCRUFEUUNBQklBTkdEUVVnQkNBREtBSUFOZ0lBSUFSQkJHb2hCQ0FEUVFScUlRTU1BQXNBQ3lBQklBTkdCRUFEUUNBQUlBVkdEUVVnQkNBQUtBSUFOZ0lBSUFSQkJHb2hCQ0FBUVFScUlRQU1BQXNBQlFKQUlBSWdBeWdDQUNBQUtBSUFFT2tEQkVBZ0JDQURLQUlBTmdJQUlBTkJCR29oQXd3QkN5QUVJQUFvQWdBMkFnQWdBRUVFYWlFQUN5QUVRUVJxSVFRTUFRc0FDd0FMSUFRZ0FVRUVheUlCSUFBZ0FpQUJLQUlBSUFBb0FnQVE2UU1pQWhzb0FnQTJBZ0FnQUNBQklBSWJJUUFnQkVFRWFpRUVDeUFFSUFBb0FnQTJBZ0FMQzg0QkFRUi9JQUFvQWtRaUFpQUFLQUpJVHdSQUlBQW9Ba2dpQWtFQmRFRUNJQUliSWdJZ0FDZ0NTRXNFUUNBQUtBSkFJUVZCRUNFRElBQWhCQ0FDUVJCUEJFQkJmeUFDUVFKMElBSkIvLy8vL3dOTEd4QVZJUVFnQWlFREN5QUFJQVEyQWtBZ0FDQUROZ0pJSUFBb0FrUWhBMEVBSVFJRFFDQUNJQU5HQkVBZ0FDQUZFRFlGSUFKQkFuUWlCQ0FBS0FKQWFpQUVJQVZxS0FJQU5nSUFJQUpCQVdvaEFnd0JDd3NMSUFBb0FrUWhBZ3NnQUNBQ1FRRnFOZ0pFSUFBb0FrQWdBa0VDZEdvZ0FTZ0NBRFlDQUF0dUFRUi9Ba0FnQUNnQ0JDSURCRUFnQXlBQklBSVEvZ0pGRFFFTFFRRWhCQ0FBS0FJUUlnTXRBQXdnQTBWeURRQWdBRUVJYWhEekNpRUFBMEFnQUVVaEJDQUFSUTBCSUFBb0FnUWlBeTBBRENFRklBQWdBU0FDRVA0Q0lRWkJBQ0FESUFVYklRQWdCZzBBQ3dzZ0JBdXNBUUVGZnlBQUtBS0VBU0lDSUFBb0FvZ0JUd1JBSUFBb0FvZ0JJZ0pCQVhSQkFpQUNHeUlDSUFBb0FvZ0JTd1JBSUFBb0FvQUJJUU1nQUNBQ0VONE9JQUFvQW9RQklRUWdBQ2dDZ0FFaEJVRUFJUUlEUUNBQ0lBUkdCRUFnQUNBREVEWUZJQVVnQWtFQ2RDSUdhaUFESUFacUtBSUFOZ0lBSUFKQkFXb2hBZ3dCQ3dzTElBQW9Bb1FCSVFJTElBQWdBa0VCYWpZQ2hBRWdBQ2dDZ0FFZ0FrRUNkR29nQVNnQ0FEWUNBQXM5QVFGL0l3QkJFR3NpQXlRQUlBTWdBU2dDQURZQ0RDQURJQUFnQWhDckJqWUNDQ0FBSUFOQkRHb2dBMEVJYWhDa0N5RUFJQU5CRUdva0FDQUFDM01CQTM4Q1FDQUFLQUlvSUFFb0FnUkpCRUFnQUJBaklBQWdBU2dDQkJDK0NRd0JDeUFBUVFBMkFpUUxJQUFnQVNnQ0JDSUNOZ0lrSUFBb0FpQWhBeUFCS0FJQUlRRkJBQ0VBQTBBZ0FDQUNSd1JBSUFNZ0FFRUNkQ0lFYWlBQklBUnFLQUlBTmdJQUlBQkJBV29oQUF3QkN3c0xFUUFnQUNBQVFkZ0NhaUFCSUFJUWh3c0xOQUVCZnlNQVFSQnJJZ01rQUNBRElBSW9BZ0EyQWd3Z0FDQUFRZGdDYWlBQklBTkJER29RMWdRaEFDQURRUkJxSkFBZ0FBc3hBUUYvSXdCQkVHc2lBU1FBSUFGQkFEb0FEQ0FCSUFCQklHbzJBZ2dnQVVFSWFoRFBIQ0VBSUFGQkVHb2tBQ0FBQ3hrQUlBQkIwQUJxRUNNZ0FFRWdhaEFqSUFCQkZHb1FEeG9MT0FFQmZ5TUFRYUFCYXlJQkpBQWdBVUhUdEFWQjF3QkJBQ0FBS0FJQUVCY2lBRUVZYWtHR2lRUVFEaG9nQUJBWUlBRkJvQUZxSkFBTFZnQWdBRUlBTndNQUlBQkJBRFlDRUNBQVFnQTNBd2dnQUVFVWFoQlZJQUJDQURjRGdBRWdBRUtBZ0lDQWdBRTNBblFnQUNBQVFkQUFhallDY0NBQVFvQ0FnSUNBQVRjQ1JDQUFRVUJySUFCQklHbzJBZ0FMWHdFQmZ5TUFRUkJySWdRa0FDQUVJQU1wQWdBM0F3Z2pBRUVRYXlJREpBQWdBeUFDTmdJSUlBTWdBQ0FCRU9jRk5nSUVJQUFnQUVIWUFtb2dBMEVFYWlBRFFRaHFJQVJCQ0dvUTlob2hBQ0FEUVJCcUpBQWdCRUVRYWlRQUlBQUxuZ0VCQlg4akFFRVFheUlGSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlFTmdJTUlBVWdCRFlDQ0NNQVFSQnJJZ1FrQUNBQVFZd0JhaUlHRVAwRklRY2dBaWdDQUNFQ0lBVW9BZ2doQ0NBQUtBSUlJUUFnQkNBRFFSQnFOZ0lJSUFRZ0F5Z0NFQ0FEUnpvQURDQUdJQWNnQUNBSUlBRWdBaUFFUVFocUVQNEZJZ0FRS0NBR0lBWW9BaGhCQVdvMkFoZ2dCRUVRYWlRQUlBVkJFR29rQUNBQUM1UUNBUVYvSXdCQk1Hc2lBU1FBUVFFaEJDQUFLQUlBSVFJQ1FDQUFLQUlFSWdOQkFVWUVRQ0FBS0FJSUlRTU1BUXNnQWlnQ0JDQUFLQUlJSUFNUS93SWhBeUFBS0FJRUlRUUxJQUZCQURZQ0tDQUJRZ0EzQXlBZ0FVSUFOd01ZSUFFZ0FpQUVFT0laTmdJVUlBRWdBaUFCUVJocUlBQkJGR29pQkNBQlFSUnFFSlFGSWdVMkFpd0NRQ0FBTFFBTUJFQWdBVUVBTmdJb0lBRkNBRGNESUNBQlFnQTNBeGdnQVNBQ0lBQW9BZ1FRNFFVMkFoQWdBU0FDSUFGQkdHb2lBQ0FFSUFGQkVHb1FsQVUyQWhRZ0FDQUNJQUZCQ0dvZ0F5QUNLQUlJSUFGQkxHb2dBVUVVYWhEVUdSQnBFTllIREFFTElBRkJHR29nQWlBQklBTWdCUkJwRU5ZSEN5QUJLQUljSVFBZ0FVRXdhaVFBSUFBTHd3SUJBbjhqQUVHd0FXc2lBeVFBSUFFb0FnQWhCQUpBQWtBQ1FBSkFJQUlvQWhSQk4yc09CUUVDQWdJQUFnc2dCQ2dDQUNFQ0lBRW9BZ1FvQWdBaEJDTUFRUkJySWdFa0FDQUJRUUEyQWdnZ0FTQUVOZ0lFSUFFZ0FrSDRCMm8yQWdBZ0FTQUNRYWdOYWlnQ0FFRUJhellDREFKQUlBRVF0UmtFUUNBRElBRVF0UmtpQWlrQ0FEY0NBQ0FESUFJb0FnZzJBZ2dNQVFzZ0EwRUFOZ0lJSUFOQ0FEY0NBQXNnQVVFUWFpUUFJQU1vQWdBRVFDQUFJQU1vQWdRMkFnQWdBQ0FES0FJSU5nSUVEQU1MSUFCQ0F6Y0NBQXdDQ3lBRUtBSUFJQUlRZWtFQUVJVUJJZ0ZCQUNBQktBSUVRZmpMRWtZYktBSU1JUUVnQUVFQU5nSUVJQUFnQVRZQ0FBd0JDeUFEUWJtaEJVR0FKa0VISUFOQm9BRnFFQjBpQVJBWElnSkJHR3BCeS9RSUVBNGFJQUlRR0NBQkVCNGdBRUlBTndJQUN5QURRYkFCYWlRQUMxWUJBWDhqQUVFZ2F5SUNKQUFnQWlBQk5nSWNJQUFvQWdBaEFDQUNRUUEyQWhnZ0FrSUFOd01RSUFKQ0FEY0RDQ0FDUVFJMkFnUWdBQ0FDUVFocUlBSkJIR29nQWtFRWFoRHRHU0VBSUFKQklHb2tBQ0FBQ3hFQUlBQkJDR29nQVNrREFCQ2FCaUFBQ3cwQUlBQWdBU0FDUVE0UTJRa0xQUUVCZnlNQVFSQnJJZ01rQUNBRElBRW9BZ0EyQWd3Z0F5QUFJQUlRc1FzMkFnZ2dBQ0FEUVF4cUlBTkJDR29RcEFzaEFDQURRUkJxSkFBZ0FBdWJBd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ2dDUUNBQlJRUkFJQU5CQ0dvUXdoa01BUXNnQVNnQ0JDSUNFT0VJQkVBZ0F5QUJOZ0lNSUFFb0FnZ2dBQ2dDQ0VFQlFRQkJqODBJUWRPMEJVSEFBQkJMSUFCQnNBSnFJQU5CREdvUXVSa01BUXNnQWtINDh3OUdCRUFnQXlBQk5nSU1JQUVvQWdnZ0FDZ0NDRUVCUVFCQmpjOElRZE8wQlVIRUFCQkxJQUJCL0FKcUlBTkJER29RSkF3QkN5QUNFTjBGQkVBZ0F5QUJOZ0lNSUFFb0FnZ2dBQ2dDQ0VFQlFRQkIyc2NJUWRPMEJVSElBQkJMSUFCQnFBTnFJQU5CREdvUXN4a01BUXNnQWtIbzlROUdCRUFnQXlBQk5nSU1JQUVvQWdnZ0FDZ0NDRUVCUVFCQnk4OElRZE8wQlVITUFCQkxJQUJCdEFScUlBTkJER29RSkF3QkN5QUNRYWoyRDBZRVFDQURJQUUyQWd3Z0FTZ0NDQ0FBS0FJSVFRRkJBRUdMemdoQjA3UUZRZEFBRUVzZ0FFSGdCR29nQTBFTWFoQWtEQUVMSUFKQndQWVBSZ1JBSUFNZ0FUWUNEQ0FCS0FJSUlBQW9BZ2hCQVVFQVFaZklDRUhUdEFWQjFBQVFTeUFBUVl3RmFpQURRUXhxRUNRTUFRc2dBMEVJYWhEQ0dRc2dBMEVRYWlRQUN6a0JBWDhqQUVFUWF5SURKQUFnQXlBQVFRUnFFS2NaTmdJSUlBQWdBRUhZQW1vZ0EwRUlhaUFCSUFJUXF3OGhBQ0FEUVJCcUpBQWdBQXM2QVFGL0l3QkJFR3NpQWlRQUlBSkJBellDRENBQ0lBQWdBUkRhQkRZQ0NDQUFJQUpCREdvZ0FrRUlhaEM2RHlFQUlBSkJFR29rQUNBQUM4WUJBUU4vSUFCQ2dJQ0FnSUFJTndLRUFpQUFJQUEyQW9BQ0FrQWdBUzBBQkFSQUlBQVFrd1VnQUNBQktBSUFJZ0lwQWdBM0FvQUNJQUFnQWlnQ0NEWUNpQUlnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBREFFTEFrQWdBQ2dDaUFJZ0FTZ0NBQ0lCS0FJRVNRUkFJQUFRa3dVZ0FDQUJLQUlFRU9RT0RBRUxJQUJCQURZQ2hBSUxJQUFnQVNnQ0JDSUROZ0tFQWdOQUlBSWdBMGNFUUNBQ1FRSjBJZ1FnQUNnQ2dBSnFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3c0xQQUVCZnlNQVFTQnJJZ1FrQUNBRUlBSW9BZ0EyQWh3Z0FDQUJJQVJCSEdvZ0JDQURFSXNaSWdBUTdBNGhBU0FBRUt3RElBUkJJR29rQUNBQkN5Y0FJQUFnQVVFQmF5SUJRZEFBU3dSL1FkejREQVVnQVVFQ2RFSHMzUkpxS0FJQUN4QVVHZ3VyQVFFRGZ5TUFRUkJySWdVa0FDQUZJQUJCQkdvUXB4azJBZ2dqQUVFZ2F5SUVKQUFnQkNBRktBSUlOZ0ljSXdCQklHc2lBeVFBSUFNZ0FTZ0NBRFlDRUNBQUlBSVE1QWdoQVNBRFFRSTJBaHdnQXlBQk5nSVVJQU1nQTBFUWFqWUNHQ0FESUFNcEF4ZzNBd2dnQkVFSWFpSUJJQU5CQ0dvUXRRSWFJQU5CSUdva0FDQUFJQUJCMkFKcUlBUkJIR29nQVJDcUR5RUFJQUVRcWdFZ0JFRWdhaVFBSUFWQkVHb2tBQ0FBQ3ljQUlBQWdBU2dDQUNBQ0tBSUFJQU1RMlFRaUFFR1k5dzgyQWdRZ0FFSE05dzgyQWdBZ0FBc05BQ0FBSUFFZ0FrRVJFTmtKQzAwQkFuOGpBRUVRYXlJRkpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJR05nSU1JQVVnQmpZQ0NDQUFRWXdCYWlBQVFRaHFJQVZCQ0dvZ0FTQUNJQU1nQkJDMkdTRUFJQVZCRUdva0FDQUFDelFCQVg4akFFRVFheUlDSkFBZ0FpQUFJQUVRd2dZMkFnd2dBQ0FBUWRnQ2FpQUNRUXhxRUlNTElRQWdBa0VRYWlRQUlBQUxsQW9CQm44akFFRkFhaUlHSkFBZ0JrRTRhaUFERUZzaENpQUdJQVEyQWpRZ0JpQUJOZ0l3SUFJUXlBRWlBeUFGSUFNZ0JVc2JJUXNnQ2tFRWFpRUpJQVVoQXdOQUFrQUNRQUpBSUFNZ0MwY0VRQ0FHSUFJZ0F4QTROZ0lzSUFFb0FoQWdCQkNVQVNJSVJRUkFJQUVvQWh3aUFTZ0NBRUVBT2dBQUlBRkI0WnNKRUJrZ0JrRTBhaEF2UWVtcENoQVpJUUVnQmlBRElBVnJOZ0lBSUFFZ0JoQXZRWmZzQ3hBWklRRWdCa0VRYWlJRElBSVFXQ0FCSUFNUVRSb2dBeEFQR2lBQUVHY2FEQUlMSUFaQkFEWUNLRUdvOVFBaEJ3SkFBa0FDUUNBQ0tBSVVRZEVBYXc0Q0FnRUFDeUFCS0FJY0lnRW9BZ0JCQURvQUFDQUJRZFBkQ2hBWklRRWdCa0VRYWlJRElBSVFXQ0FCSUFNUVRSb2dBeEFQR2lBQUVHY2FEQU1MUWRRMElRY0xJQVlnQnpZQ0tBSkFBa0FDUUFKQUFrQUNRQ0FJS0FJVVFSZHJEZ2dBQVFVRkJRSURCQVVMSUFZZ0NFRUJFRGdpQkRZQ0FBSkFBa0FnQkNBR0tBSXNJZ1JOQkVBZ0FTZ0NIQ0lCS0FJQVFRQTZBQUFnQVNBR1FTaHFFTEFEUVo2ZENSQVpJUUVnQmlBQ0VHQTJBaEFnQVNBR1FSQnFFQzlCdDdVS0VCa2dCa0VzYWhBdlFZR3VDaEFaSUFZUUwwSHlod0VRR1JvTUFRc2dCRUVFU1EwQklBRW9BaHdpQVNnQ0FFRUFPZ0FBSUFGQjFNTUpFQmtnQmtFc2FoQXZRZXZiQ1JBWklRRWdCa0VETmdJUUlBRWdCa0VRYWhBdkdnc2dBQkJuR2d3SEN5QUdRUUEyQWlBZ0JrSUFOd01ZSUFaQ0FEY0RFQ0FHSUFFZ0JCRGhCVFlDRENBQklBWkJFR29nQ1NBR1FReHFFSlFGSVFjTUJ3c2dCaUFJUVFFUU9DSUVOZ0lBSUFRZ0JpZ0NMQ0lFU3dSQUlBUkJCRThFUUNBQktBSWNJZ1FvQWdCQkFEb0FBQ0FFUWRURENSQVpJQVpCTEdvUUwwSHIyd2tRR1NFRUlBWkJBellDRUNBRUlBWkJFR29RTHhvZ0JpZ0NMQ0VFQ3lBR1FRQTJBaUFnQmtJQU53TVlJQVpDQURjREVDQUdJQVpCTUdvZ0JCRElHVFlDRENBQklBWkJFR29nQ1NBR1FReHFFT0lGSVFjTUJ3c2dBU2dDSENJQktBSUFRUUE2QUFBZ0FTQUdRU2hxRUxBRFFaNmRDUkFaSVFFZ0JpQUNFR0EyQWhBZ0FTQUdRUkJxRUM5QnQ3VUtFQmtnQmtFc2FoQXZRZkNyQ2hBWklBWVFMMEh5aHdFUUdSb2dBQkJuR2d3RkN5QUdRUUEyQWlBZ0JrSUFOd01ZSUFaQ0FEY0RFQ0FHSUFaQk1Hb2dCaWdDTEJESUdUWUNBQ0FCSUFaQkVHb2dDU0FHRU9JRklRY01CUXNnQVNnQ0hDSUJLQUlBUVFBNkFBQWdBVUhGaFFvUUdTQUdRU2hxRUxBRFFkYmRDeEFaSVFFZ0JrRVFhaUlESUFJUVdDQUJJQU1RVFJvZ0F4QVBHaUFBRUdjYURBTUxJQVlnQ0JESUFTSUhOZ0lNSUFjZ0JpZ0NMQ0lIU3dSQUlBWWdBU2dDSUNBRUlBY1E5UWdnQVNnQ0NDRUVJQVpCQURZQ0lDQUdRZ0EzQXhnZ0JrSUFOd01RSUFRZ0JrRVFhaUFKSUFZUWh3c2hCeUFHSUFnZ0JpZ0NMQkE0SWdRMkFqUWdCaEFQR2d3RkN5QUJLQUljSWdFb0FnQkJBRG9BQUNBQklBWkJLR29Rc0FOQm5wMEpFQmtoQVNBR0lBSVFZRFlDRUNBQklBWkJFR29RTDBHM3RRb1FHU0FHUVN4cUVDOUJrNXNKRUJrZ0JrRTBhaEF2UVlhcUNoQVpJQVpCREdvUUwwSGVtZ0VRR1JvZ0FCQm5HZ3dDQ3lBQktBSWNJZ0VvQWdCQkFEb0FBQ0FCSUFaQktHb1FzQU5CcHB3SkVCa2dCa0UwYWhBdlFlMjFEQkFaSVFFZ0JrRVFhaUlDSUFnUVdDQUJJQUlRVFJvZ0FoQVBHaUFBRUdjYURBRUxJQUFnQ2hCYkdnc2dCa0ZBYXlRQUR3c2dCaUFJUVFBUU9DSUVOZ0kwQ3lBS0lBWkJFR29nQVNnQ0FDQUVRUUFRaFFFZ0J4QnBFRnNhSUFOQkFXb2hBd3dBQ3dBTEt3RUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBQ0FCSUFOQkRHb1FpUjRoQUNBRFFSQnFKQUFnQUF1Y0FRRUNmeU1BUVVCcUlnWWtBQ0FHUVJCcUlnVkNBRGNDQUNBRlFnQTNBZ2dnQlVLQWdJQ0F3QUEzQWlRZ0JTQUZRUkJxTmdJZ0lBVWdBaWdDQURZQ0FDQUZJQUFnQXlnQ0FCRHFHQ0FGSUFRb0FnQTJBZ3dnQlNFQ0lBWWdBQ0FCRU9jRk5nSU1JQUFnQUVIWUFtb2dCa0VNYWlBQ0lBSkJCR29nQWtFSWFpQUNRUXhxSUFKQkVHb1FxUXNoQUNBQ0VNTUlJQVpCUUdza0FDQUFDK2tCQVFGL0l3QkJFR3NpQkNRQUlBUWdBallDQUNBRUlBRTJBZ2dnQUNBRVFRaHFJQVFnQXhEVEdTSUFRYmozRHpZQ0FDQUFRb0NBZ0lDQUFUY0NzQVVnQUNBQVFZd0ZhallDckFVZ0FFS0FnSUNBZ0FFM0FvUUZJQUFnQUVIZ0JHbzJBb0FGSUFCQ2dJQ0FnSUFCTndMWUJDQUFJQUJCdEFScU5nTFVCQ0FBUW9DQWdJQ0FCRGNDckFRZ0FDQUFRYWdEYWpZQ3FBUWdBRUtBZ0lDQWdBRTNBcUFESUFBZ0FFSDhBbW8yQXB3RElBQkNnSUNBZ0lBQ053TDBBaUFBSUFCQnNBSnFOZ0x3QWlBQVFvQ0FnSUNBQ0RjQ3FBSWdBQ0FBUVNScU5nS2tBaUFFUVJCcUpBQWdBQXM2QVFGL0l3QkJFR3NpQkNRQUlBUWdBaWdDQURZQ0RDQUVJQU1vQWdBMkFnZ2dBQ0FCSUFSQkRHb2dCRUVJYWhEb0dSb2dCRUVRYWlRQUM0b0JBUU4vSXdCQkVHc2lBeVFBQWtBZ0FTZ0NBQ0lDS0FJQUlBRW9BZ1FRZWtFQUVJVUJJZ0VvQWdRaUJFSGd5eEpHQkVBZ0FpZ0NDQ0VDSUFOQkFUWUNDQ0FBSUFFZ0FpQURRUWhxRUtzR0VHa2FEQUVMSUFSQnNNc1NSZ1JBSUFJb0FnZ2hBaUFEUVFFMkFnQWdBQ0FCSUFJZ0F4Q3hDeEJwR2d3QkN5QUFFR2NhQ3lBRFFSQnFKQUFMY3dFRGZ5QUFRb0NBZ0lEQUFEY0NGQ0FBSUFBMkFoQWdBQ0FCS0FJRUlnSVExZ0lnQVNnQ0FDSUJJQUpCQW5ScUlRUWdBQ2dDRkNFREEzOGdBU0FFUmdSL0lBQUZJQUFnQTBFQmFpSUNOZ0lVSUFBb0FoQWdBMEVDZEdvZ0FTZ0NBRFlDQUNBQlFRUnFJUUVnQWlFRERBRUxDd3MyQVFGL0l3QkJFR3NpQXlRQUlBTWdBQ0FCRU5JQ05nSU1JQUFnQUVIWUFtb2dBMEVNYWlBQ0VKVUVJUUFnQTBFUWFpUUFJQUFMb3dFQkJIOGpBRUVRYXlJQ0pBQWdBQ2dDRENFQkFrQWdBQ2dDQUNnQ0FDSURJQUFvQWdRb0FnQkpCRUFnQUNnQ0NDRUVJQUlnQVNBQUtBSVFJQU1RYmlBRUlBSkJCSElRSkVFQklRRWdBQ2dDQUNJQUlBQW9BZ0JCQVdvMkFnQU1BUXNnQVNnQ0hDSUJLQUlBUVFBNkFBQWdBVUcvcXd3UUdTRUJJQUlnQUNnQ0VCQllJQUVnQWhCTktBSUFMUUFBUVFCSElRRWdBaEFQR2dzZ0FrRVFhaVFBSUFFTDBBRUJBWDhqQUVIQUFXc2lCU1FBSUFVZ0FqWUNzQUVnQlNBQk5nSzRBU0FBSUFVb0FyZ0JJQVVvQXJBQklBTVEyUVFpQUVIWTlnODJBZ1FnQUVHTTl3ODJBZ0FnQUNBRU5nSWtJQUJCK1BZUE5nSUFBa0FnQkVVRVFDQUZRZnFzQlVFWlFRQWdCVUdnQVdvUUhTSUJFQmNpQWtFWWFrSFV2UWdRRGhvZ0FoQVlJQUVRSGlBQUtBSWtJZ1JGRFFFTElBUW9BZ1JCeU9rUFJ3MEFJQVZCK3F3RlFSdEJBQ0FGUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRYjdyQ0JBT0dpQUNFQmdnQVJBZUN5QUZRY0FCYWlRQUlBQUxHZ0FnQUVFQUlBQUVmeUFBS0FJRVFZak5FaEJJQlVFQUN4c0xnUUVCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lNQW44Q1FBSkFBa0FDUUNBQlFRRnJEZ01BQVFJREN5QUFLQUlJUWRvbkVPRUhEQU1MSUFBb0FnaEJsZ2dRNFFjTUFnc2dBQ2dDQ0VHS0NCRGhCd3dCQ3lBQUtBSWNJZ0FvQWdCQkFEb0FBQ0FBUWQvZkN4QVpJQUpCREdvUUx4cEJBQXNoQVNBQ1FSQnFKQUFnQVFzMkFRRi9Jd0JCRUdzaUF5UUFJQU1nQUNBQkVNSUdOZ0lNSUFBZ0FFSFlBbW9nQTBFTWFpQUNFSlVFSVFBZ0EwRVFhaVFBSUFBTDZBRUJCSDhqQUVHd0FXc2lBeVFBSUFBb0FnQWdBUkRjQ0NFQ0FrQWdBQ2dDQUMwQWxBTkZCRUJCQUNFQ0lBQW9BaHdvQWdCQkFEb0FBQXdCQ3lBQ1JRUkFJQU5CdWFFRlFZTXFRUWNnQTBHZ0FXb1FIU0lGRUJjaUJFRVlha0cvckFnUURob2dCQkFZSUFVUUhnc0RRQUpBSUFKRklBSW9BZ1FpQkVHd3poSkhjZ1IvSUFKRklBUkIrTXNTUjNJTkFTQUNRUWhxQlNBQ1FTUnFDeWdDQUNFQ0RBRUxDeUFDRU9FWklnSU5BRUVBSVFJZ0FDZ0NIQ0lBS0FJQVFRQTZBQUFnQUVHVThBa1FHU0VBSUFNZ0FSQllJQUFnQXhCTkdpQURFQThhQ3lBRFFiQUJhaVFBSUFJTHNnRUJCWDhqQUVFUWF5SUVKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUROZ0lNSUFRZ0F6WUNDQ0FBUVl3QmFpSURFTVVDSVFVZ0FDZ0NDQ0VHSUFRb0FnZ2hCeU1BUVJCcklnQWtBQ0FBSUFjMkFnQWdBQ0FHTmdJSUlBVWdBQ2dDQ0NBQUtBSUFJQUVRMlFRaUFVSG85UTgyQWdRZ0FVR2M5ZzgyQWdBZ0FVR0k5ZzgyQWdBZ0FVRWthaUFDRUZzYUlBQkJFR29rQUNBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JFRVFhaVFBSUFVTEVBQWdBQ2dDQ0NBQklBSWdBeERCRVF1cEFRRUZmeU1BUVJCcklnWWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnVTJBZ3dnQmlBRk5nSUlJd0JCRUdzaUJTUUFJQUJCakFGcUlnY1EvQWNoQ0NBRUtBSUFJUVFnQXlnQ0FDRURJQUlvQWdBaEFpQUdLQUlJSVFrZ0FDZ0NDQ0VBSUFWQkFEb0FEQ0FGUWNDY0lEWUNDQ0FISUFnZ0FDQUpJQUVnQWlBRElBUWdCVUVJYWhDQkh5SUFFQ2dnQnlBSEtBSVlRUUZxTmdJWUlBVkJFR29rQUNBR1FSQnFKQUFnQUF0TEFRSi9Jd0JCRUdzaUJDUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUJUWUNEQ0FFSUFVMkFnZ2dBRUdNQVdvZ0FFRUlhaUFFUVFocUlBRWdBaUFERU04YUlRQWdCRUVRYWlRQUlBQUxFQUFnQUNnQ0NDQUJJQUlnQXhEb0dRdHpBUU4vQWtBZ0FDZ0NLQ0FCS0FJRVNRUkFJQUFRSXlBQUlBRW9BZ1FRaUE4TUFRc2dBRUVBTmdJa0N5QUFJQUVvQWdRaUFqWUNKQ0FBS0FJZ0lRTWdBU2dDQUNFQlFRQWhBQU5BSUFBZ0FrY0VRQ0FESUFCQkEzUWlCR29nQVNBRWFpa0RBRGNEQUNBQVFRRnFJUUFNQVFzTEN3MEFJQUFnQVNBQ1FRQVFpUThMb0FFQkJuOGpBRUVRYXlJREpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJQ05nSU1JQU1nQWpZQ0NDQUFRWXdCYWlJQ0lRY2dBaEMvQVNFRUlBQW9BZ2doQlNBREtBSUlJUVlqQUVFUWF5SUFKQUFnQUNBR05nSUFJQUFnQlRZQ0NDQUVJQUJCQ0dvZ0FDQUJFTEVlSWdGQkFEWUNKQ0FCUWRqeER6WUNBQ0FBUVJCcUpBQWdCeUFCSWdBUUtDQUNJQUlvQWhoQkFXbzJBaGdnQTBFUWFpUUFJQUFMRUFBZ0FDZ0NDQ0FCSUFJZ0F4Q0RHd3RtQVFKL0lBQW9BZ2doQUNNQVFSQnJJZ01rQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0kyQWd3Z0F5QUNOZ0lJSUFCQmpBRnFJZ0lnQWhDL0FTQUFLQUlJSUFNb0FnZ2dBVUVBRUs4TUlnQVFLQ0FDSUFJb0FoaEJBV28yQWhnZ0EwRVFhaVFBSUFBTHRBRUJCWDhqQUVFd2F5SUJKQUFnQUNnQ0NDRUVJQUFvQWd3aEJTQUFLQUlFSVFNZ0FTQUFLQUlBSWdJMkFpQWdBU0FETmdJY0lBRkIxTmdTTmdJWUlBRWdBVUVZYWlJRE5nSW9JQUlnQlNBRUlBTVEyQVFnQXhBV0lBQXRBQkFFUUNBQlFRQTJBaEFnQVVJQU53TUlJQUZDQURjREFDQUNJQUlnQVJDUkN4REpBUm9MSUFBdEFCRUVRQ0FCUVFBMkFoQWdBVUlBTndNSUlBRkNBRGNEQUNBQ0lBSWdBUkNLRHhESkFSb0xJQUZCTUdva0FBdUNCQUVHZnlNQVFkQUJheUlGSkFBZ0FTZ0NsQVFpQkNBQktBS2NCQ0lHUVpZQmJFR1dBV3BCNUFCdVNRUkFJQUVnQmtFQmRFRUNhaENvR1NBQktBS1VCQ0VFQ3lBQ0tBSUFJUWNnQlNBRE5nTE1BU0FGSUFJMkFzZ0JJQVJCQVdzaENTQUhJQVJ3SVFNZ0FTZ0NrQVFoQ0VFQUlRSUNRQU5BSUFJZ0JFY0VRQ0FJSUFOQkxHeHFJZ1l0QUNCRkJFQWdCVUVJYWlJRUlBVkJ5QUZxRUpnRklBWWdCQkN0Q3lBSUlBTkJMR3hxSWdNZ0FqWUNLQ0FESUFjMkFpUWdBU0FCS0FLY0JFRUJhallDbkFRZ0FTQUJLQUtnQkVFQmFqWUNvQVFnQUNBR1FRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBWW9BaVFnQjBjTkFDQUhJQVlvQWdCSERRQWdBRUVDTmdJQUlBQWdCa0VFYWpZQ0JBd0RDeUFDSUFZb0FpaExCRUFnQlVHb0FXb2lCQ0FGUWNnQmFoQ1lCU0FGUVFocUlBUVFyQXNpQkNBQ05nSW9JQVFnQnpZQ0pDQUVJQVlRaEFrZ0JDQUVLQUlvUVFGcU5nSW9JQUVnQTBFQmFpQUJLQUtVQkhBZ0JCQ3JDeUFCSUFFb0Fwd0VRUUZxTmdLY0JDQUJJQUVvQXFBRVFRRnFOZ0tnQkNBQUlBWkJCR28yQWdRZ0FFRUFOZ0lBSUFRUXFnSU1Bd1VnQTBFQmFrRUFJQU1nQ1VjYklRTWdBa0VCYWlFQ0RBSUxBQXNMSUFWQkNHcEJoclVEUWVzRFFRNGdCVUdvQVdvUUhTSUJFQmNpQWtFWWFrR1dOUkFPR2lBQ0VCZ2dBRUlBTndJQUlBRVFIZ3NnQlVIUUFXb2tBQXZjQWdFTGZ5QUFLQUlBSWdRb0FxQUVJZ2tnQUNnQ0RFWUVRQ0FBS0FJSUR3c2pBRUVRYXlJQkpBQWpBRUd3QVdzaUJTUUFJQVFvQXBRRUlnZEJBV3NoQ2lBQUtBSUVJZ2dnQjNBaEFpQUVLQUtRQkNFTEFrQURRQ0FESUFkSEJFQWdDeUFDUVN4c2FpSUdMUUFnUlFSQUlBRkJBRFlDRENBQlFRQTZBQWdNQXdzQ1FDQUdLQUlrSUFoSERRQWdDQ0FHS0FJQVJ3MEFJQUVnQWpZQ0RDQUJRUUU2QUFnTUF3c2dBeUFHS0FJb1N3UkFJQUZCQURZQ0RDQUJRUUE2QUFnTUF3VWdBa0VCYWtFQUlBSWdDa2NiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVZCaHJVRFFaNEVRUTRnQlVHZ0FXb1FIU0lDRUJjaUEwRVlha0hTTlJBT0dpQURFQmdnQVVFQU5nSU1JQUZCQURvQUNDQUNFQjRMSUFWQnNBRnFKQUFnQVNnQ0RDRUNJQVFvQXBBRUlRTWdBUzBBQ0NFRUlBRkJFR29rQUNBQUlBazJBZ3dnQUNBRElBSkJMR3hxUVFScVFRQWdCQnNpQURZQ0NDQUFDeEVBSUFBZ0FVRURRZi8vLy84QUVNa1NDMWNCQW44Z0FTQUFLQUlvU3dSQUlBQW9BaUFoQWlBQUlBRVFpQTlCQUNFQkEwQWdBQ2dDSkNBQlRRUkFJQUFnQWhBMkJTQUJRUU4wSWdNZ0FDZ0NJR29nQWlBRGFpa0NBRGNDQUNBQlFRRnFJUUVNQVFzTEN3c3RBUUYvSUFBZ0FTZ0NBQ0FCSUFFdEFBc2lBRUVZZEVFWWRVRUFTQ0lDR3lBQktBSUVJQUFnQWhzUS9nWUxFUUFnQUNBQlFRSkIvLy8vL3dFUXlSSUw0QUlCQm44akFFSFFBV3NpQkNRQUlBQW9BclFHSWdKRkJFQWdCRUVnYWtITHNnTkJpZ2xCQnlBRVFjQUJhaEFkSWdJUUZ5SURRUmhxUWVQa0NCQU9HaUFERUJnZ0FoQWVJQUFvQXJRR0lRSUxJQUFvQXJBR0lRVkJMQkFWUVFCQkxCQjVFSXNQSWdOQ0FEY0NKQ0FEUWRUY0VqWUNBQ0FEUWVqY0VqWUNCQ0FGSUFKQkFXdEI0QUJzYWlJQ0lBTVE4Z2dDUUNBQ0tBSlFJZ1VnQWtIVUFHb2lCaWdDQUVrRVFDQUZJQU0yQWdBZ0FpQUZRUVJxTmdKUURBRUxJQVJCSUdvZ0FrSE1BR29pQnlBRklBSW9Ba3hyUVFKMVFRRnFFSXNFSUFJb0FsQWdBaWdDVEd0QkFuVWdCaENuQWlJQ0tBSUlJZ1VnQXpZQ0FDQUNJQVZCQkdvMkFnZ2dCeUFDRVBzSUlBSVFuZ3NMSUFFb0Fod2hBaUFFSUFBMkFoQWdCQ0FETmdJTUlBUkJpTjBTTmdJSUlBUWdCRUVJYWlJRE5nSVlJQUFnQVNBQ0lBTVEyQVFnQXhBV0lBQW9BaHdvQWdBdEFBQWhBQ0FFUWRBQmFpUUFJQUFMTWdFQmZ5QUJLQUlRSWdJdEFBeEJBU0FDR3dSQVFlWHZDRUdkc3dOQi9nQkJudjhDRUFBQUN5QUFJQUVvQWhRMkFnQUxUQUVCZnlBQUtBSWtJZ0lnQUNnQ0tFOEVRQ0FBSUFBb0FpZ2lBa0VCZEVFQ0lBSWJFUE1aSUFBb0FpUWhBZ3NnQUNBQ1FRRnFOZ0lrSUFBb0FpQWdBa0VEZEdvZ0FTa0NBRGNDQUF1UEFRRUNmd0pBSUFBb0FnQWlCQ0FCRUpRQ0lnQkZEUUFnQUMwQUhFVU5BQ0FBUVFocUVQMEhJZ0FnQUNnQ0JFRUJhallDQkNBQUlBSW9BZ2dpQVNBQUtBSUlJZ01nQVNBRFNSczJBZ2dnQUNBQUtBSU1JZ0VnQWlnQ0NDSURJQUVnQTBzYk5nSU1JQVFnQkNnQzZBWWdBQ2dDQUVFQ2RHb29BZ0FRZkNnQ0lDQUNLQUlnUmcwQUlBQkJBVG9BRUFzTGl3SUJBMzhqQUVHd0FXc2lBeVFBSUFBZ0FDZ0M2QVlnQVVFQ2RHb29BZ0FRZkNnQ0lDSUJSUVJBSUFOQnVhRUZRZlluUVFjZ0EwR2dBV29RSFNJRUVCY2lCVUVZYWtISHFBZ1FEaG9nQlJBWUlBUVFIZ3NDUUFOQUlBRUVRQ0FDSUFFb0FpQlBCRUFnQVNnQ0tDQUNTdzBEQ3dKL0FrQWdBU0lFUlEwQUlBUW9BaFJCQkVjTkFDQUFJQVFvQWhnaUFSQjhLQUlZSWdVZ0FVWU5BQ0FBSUFVUWZFRWdhaUVCQTBBZ0FTZ0NBQ0lCUlEwQklBRW9BaFJCQTBjTkFBc2dBUXdCQzBFQUN5SUJEUUVnQkNnQ0FDRUJEQUVMQ3lBRFFibWhCVUdBS0VFSElBTkJvQUZxRUIwaUFCQVhJZ0pCR0dwQng2Z0lFQTRhSUFJUUdDQUFFQjRMSUFOQnNBRnFKQUFnQVF0QkFRRi9Ba0FnQVVVTkFDQUFBbjhDUUFKQUlBRW9BaFJCQW1zT0F3QUFBUU1MSUFGQkdHb01BUXNnQUNBQktBSVlFSHhCR0dvTEtBSUFFSHdoQWdzZ0FndlNCUUlJZndKOUl3QkJJR3NpQnlRQUlBY2dBVFlDRUNNQVFSQnJJZ1FrQUNBQktBSUFJUUVnQndKL0FrQWdBQ2dDQkNJQ1JRMEFJQUFvQWdBQ2Z5QUNRUUZySUFGeElBSnBJZ1pCQVUwTkFCb2dBU0FCSUFKSkRRQWFJQUVnQW5BTElnVkJBblJxS0FJQUlnTkZEUUFnQWtFQmF5RUlJQVpCQVVzaENRTkFJQU1vQWdBaUEwVU5BU0FCSUFNb0FnUWlCa2NFUUFKQUlBbEZCRUFnQmlBSWNTRUdEQUVMSUFJZ0Jrc05BQ0FHSUFKd0lRWUxJQVVnQmtjTkFnc2dBeWdDQ0NBQlJ3MEFDMEVBREFFTFFjQUFFQlVoQXlBRUlBQkJDR28yQWdRZ0JDQUROZ0lBSUFNZ0J5Z0NFQ2dDQURZQ0NDQURRUkJxUVFCQk1CQjVJUVlnQTBFRU5nSTRJQU1nQmpZQ01DQUVRUUU2QUFnZ0EwRUFOZ0lBSUFNZ0FUWUNCQUpBUVFBZ0FpQUFLQUlNUVFGcXN5SUtJQUFxQWhBaUN5QUNzNVJlR3cwQUlBQWdBaUFDUVFGcmNVRUFSeUFDUVFOSmNpQUNRUUYwY2lJRkFuOGdDaUFMbFkwaUNrTUFBSUJQWFNBS1F3QUFBQUJnY1FSQUlBcXBEQUVMUVFBTElnSWdBaUFGU1JzUXd3RWdBQ2dDQkNJQ0lBSkJBV3R4UlFSQUlBSkJBV3NnQVhFaEJRd0JDeUFCSUFKSkJFQWdBU0VGREFFTElBRWdBbkFoQlFzQ1FDQUZRUUowSWdVZ0FDZ0NBR29vQWdBaUFVVUVRQ0FFS0FJQUlBQW9BZ2cyQWdBZ0FDQUVLQUlBTmdJSUlBQW9BZ0FnQldvZ0FFRUlhallDQUNBRUtBSUFJZ0VvQWdBaUJVVU5BU0FGS0FJRUlRTUNRQ0FDSUFKQkFXc2lCWEZGQkVBZ0F5QUZjU0VEREFFTElBSWdBMHNOQUNBRElBSndJUU1MSUFBb0FnQWdBMEVDZEdvZ0FUWUNBQXdCQ3lBRUtBSUFJQUVvQWdBMkFnQWdBU0FFS0FJQU5nSUFDeUFFS0FJQUlRTWdCRUVBTmdJQUlBQWdBQ2dDREVFQmFqWUNEQ0FFS0FJQUlRQWdCRUVBTmdJQUlBQUVRQ0FFTFFBSUJFQWdBRUVRYWhBakN5QUFCRUFnQUJBZkN3dEJBUXM2QUJ3Z0J5QUROZ0lZSUFSQkVHb2tBQ0FIS0FJWUlRQWdCMEVnYWlRQUlBQkJFR29MTVFFQmZ3TkFJQUFvQWlRZ0FVMEVRQ0FBUVFBMkFpUUZJQUFvQWlBZ0FVRUNkR29RaXdFZ0FVRUJhaUVCREFFTEN3dGFBUUYvSUFCQkFEWUNDQ0FBUWdBM0FnQWdBU0FDUndSQUlBQWdBU0FDYTBFQ2RSRFBCU0FBS0FJRUlRTURRQ0FCSUFKSEJFQWdBeUFCUVFScklnRW9BZ0EyQWdBZ0EwRUVhaUVEREFFTEN5QUFJQU0yQWdRTElBQUxid0VEZnlNQVFUQnJJZ0lrQUFKQUlBRW9BaVFpQXdSQUlBSkJFR29pQkNBRFFTUnFFRk1nQWtFZ2FpSURJQVJCL0pjSUVDMGdBaUFCS0FJb1FTUnFFRk1nQUNBRElBSVFUaUFDRUE4YUlBTVFEeG9nQkJBUEdnd0JDeUFBSUFFb0FpaEJKR29RVXdzZ0FrRXdhaVFBQzFvQkFYOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBZ1JBSUFKQjZBRnFFRjRnQWtHOEFXb1FJeUFDUWFBQmFoQmVJQUpCbEFGcUVBOGFJQUpCeUFCcUlnQXRBREFFUUNBQUVDTUxJQUpCSkdvUVR3c2dBaEFmQ3d2WEFRRURmeU1BUWJBQmF5SUNKQUFnQVJCNlJRUkFJQUpCdWFFRlFhMExRUWNnQWtHZ0FXb1FIU0lERUJjaUJFRVlha0g0bWdnUURob2dCQkFZSUFNUUhnc2dBQ2dDR0NBQkVIb1E2UUVpQVVVRVFDQUNRYm1oQlVHdkMwRUhJQUpCb0FGcUVCMGlBQkFYSWdOQkdHcEJ1YnNJRUE0YUlBTVFHQ0FBRUI0TFFRRWhBQUpBSUFFZ0FTZ0NBQ2dDUkJFQUFBMEFJQUVnQVNnQ0FDZ0NUQkVBQUEwQUlBRWdBU2dDQUNnQ2ZCRUFBRVVFUUVFQUlRQU1BUXNnQVNBQktBSUFLQUo4RVFBQUtBSVlSU0VBQ3lBQ1FiQUJhaVFBSUFBTHRnUUJDWDhqQUVFd2F5SUJKQUFnQUNnQ0RDRURJQUJCQkVFSUlBQW9BZ0FRd0JraUNCdHFLQUlBS0FJQUlRSWdBVUVRYWlJSElBTW9BaUFnQUNnQ0VCRGxCU0FBS0FJVUlRVWdBaUFES0FJSUlnWWdBaWdDQUNnQ0NCRUJBQ0VDSUFBb0FnQWhCQ0FCUVFBNkFBd2dBU0FFUVNCcU5nSUlJQUVnQmlBSElBSWdBVUVJYWhDdUR6WUNJQ0FGSUFGQklHb1FKQ0FCSUFNb0FnZ2dBQ2dDRUJEU0FqWUNCQ0FBS0FJWUtBSUFFTWdERU80REVNZ0RJUUlnQUNnQ0hDSUdLQUlnSWdVZ0JpZ0NKRUVDZEdvaENRTi9JQVVnQ1VZRWZ3SkFJQWhGRFFBZ0FDZ0NCQ2dDQUNJQ0lBQW9BZ2dvQWdCR0RRQWdBU0FES0FJSUlnVWdBaUFGSUFJb0FnQW9BZ2dSQVFBZ0FVRUVhaEMvR1RZQ0JBc2dBQ2dDSUNBQlFRUnFFQ1FnQXlBQUtBSUFFSU1hSUFNb0Fod29BZ0F0QUFBaEFDQUJRUkJxRUE4YUlBRkJNR29rQUNBQUJRSkFJQUpGQkVCQkFDRUNEQUVMSUFVb0FnQWhCaUFDS0FJRUlnUkJ3TXdTUmdSQUlBTW9BZ2doQkNBQklBWTJBaUFnQVNBRUlBRkJCR29nQVVFZ2FoQzhHVFlDQkNBREtBSUVJQUlvQWdnZ0FpZ0NFQkQvQWlFQ0RBRUxJQVJCMk13U1JnUkFJQU1vQWdnaEJDQUJJQVkyQWlBZ0FTQUVJQUZCQkdvZ0FVRWdhaEM4R1RZQ0JDQUNLQUlJRU1nRElRSU1BUXNnQkVISXpoSkhEUUFnQXlnQ0NDRUVJQUZCSUdvaUJ5QURLQUlBSUFJZ0JoQ0ZHU0FCSUFRZ0FVRUVhaUFIRUw0Wk5nSUVJQWNRRHhvZ0FpZ0NKQ0FHUVFKMGFpZ0NBQ0VDQ3lBRlFRUnFJUVVNQVFzTEM2NEJBUVYvSXdCQkVHc2lCQ1FBSUFFb0FpQWlBaUFCS0FJa1FRSjBhaUVHQTBBZ0FpQUdSd1JBSUFJb0FnQWlBU2dDQkVHWS9SRkhJQUZGY2tVRVFDQUFLQUlJSVFVZ0JDQUJLQUlrSWdOQkFDQURLQUlFUWJEN0QwWWJLUU1vUWdGOE53TUlJd0JCRUdzaUF5UUFJQU1nQlNBRVFRaHFFT2tGTmdJTUlBVWdBVUVRYWlBRFFReHFFSXdaSVFFZ0EwRVFhaVFBSUFJZ0FUWUNBQXNnQWtFRWFpRUNEQUVMQ3lBRVFSQnFKQUFMYkFFRGZ5TUFRUkJySWdFa0FDQUJRUUE2QUF3Z0FTQUFRU0JxTmdJSUFuOGdBU2dDQ0NJQ0tBSUFJZ0FnQWlnQ0JFRUNkR29oQXdOQVFRQWdBQ0FEUmcwQkdpQUFLQUlBSVFJZ0FFRUVhaUVBSUFJb0FnUkJtUDBSUncwQUN5QUNDeUVBSUFGQkVHb2tBQ0FBQzhJQ0FRVi9Jd0JCRUdzaUJDUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FFSUFNMkFnZ2dBRUdNQVdvaUF4REZBaUVGSUFBb0FnZ2hCaUFFS0FJSUlRY2dBaWdDQUNFQ0l3QkJ3QUZySWdBa0FDQUFJQWMyQXJBQklBQWdCallDdUFFZ0JTQUFRYmdCYWlBQVFiQUJhaUFCRUk4YUlnRWdBallDS0NBQlFRQTJBaVFnQVVISTlRODJBZ0FnQWdSL0lBSUZJQUJCL2JNRlFSNUJBQ0FBUWFBQmFoQWRJZ0lRRnlJR1FSaHFRZVNzQ0JBT0dpQUdFQmdnQWhBZUlBRW9BaWdMRUZjZ0FTZ0NDRUVCUVFCQnpjMElRZjJ6QlVFZkVFc0NRQ0FCS0FJb0lnRkZEUUFnQVNnQ0JFSEk2UTlIRFFBZ0FFSDlzd1ZCSWtFQUlBQkJvQUZxRUIwaUFSQVhJZ0pCR0dwQnZ1c0lFQTRhSUFJUUdDQUJFQjRMSUFCQndBRnFKQUFnQXlBRkVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFSQkVHb2tBQ0FGQ3hVQUlBQWdBUkNvRUNJQUlBRXBBekEzQXpBZ0FBdVVCUUVKZnlNQVFVQnFJZ0VrQUNBQUtBSU1JUU1nQUVFRVFRZ2dBQ2dDQUJEQUdTSUpHMm9vQWdBb0FnQWhBaUFES0FJZ0lRVWdBVUV3YWlJSElBQW9BaEJCMWZrQ0VMZ0NJQUZCR0dvaUNDQUZJQWNRNVFVZ0J4QVBHaUFBS0FJVUlRVWdBaUFES0FJSUlnWWdBaWdDQUNnQ0NCRUJBQ0VDSUFBb0FnQWhCQ0FCUVFBNkFCUWdBU0FFUVNCcU5nSVFJQUVnQmlBSUlBSWdBVUVRYWhERUdUWUNNQ0FGSUFjUUpDQUJJQU1vQWdnZ0NCRFNBallDRENBQklBTW9BZ2dnQUNnQ0VCRFNBallDQ0NBQUtBSVlLQUlBRU1nREVPNERFTWdESVFJZ0FDZ0NIQ0lHS0FJZ0lnVWdCaWdDSkVFQ2RHb2hDQU4vSUFVZ0NFWUVmd0pBSUFsRkRRQWdBQ2dDQ0NnQ0FDSUNJQUFvQWdRb0FnQkdEUUFnQVNBREtBSUlJZ1VnQWlBRklBSW9BZ0FvQWdnUkFRQWdBVUVNYWhDL0dUWUNEQXNnQUNnQ0lDRUNJQUVnQXlnQ0NDQUJRUWhxSUFGQkRHb1FnUWsyQWpBZ0FpQUJRVEJxRUNRZ0F5QUFLQUlBRUlNYUlBTW9BaHdvQWdBdEFBQWhBQ0FCUVJocUVBOGFJQUZCUUdza0FDQUFCUUpBSUFKRkJFQkJBQ0VDREFFTElBVW9BZ0FoQmlBQ0tBSUVJZ1JCd013U1JnUkFJQU1vQWdnaEJDQUJJQVkyQWlnZ0FTQUVJQUZCS0dvUXF3WTJBakFnQVNBRUlBRkJDR29nQVVFd2FoQzBEellDQ0NBREtBSUVJQUlvQWdnZ0FpZ0NFQkQvQWlFQ0RBRUxJQVJCMk13U1JnUkFJQU1vQWdnaEJDQUJJQVkyQWlnZ0FTQUVJQUZCS0dvUXF3WTJBakFnQVNBRUlBRkJDR29nQVVFd2FoQzBEellDQ0NBQ0tBSUlFTWdESVFJTUFRc2dCRUhJemhKSERRQWdBeWdDQ0NFRUlBRkJNR29pQnlBREtBSUFJQUlnQmhDRkdTQUJJQVFnQVVFSWFpQUhFTDRaTmdJSUlBY1FEeG9nQWlnQ0pDQUdRUUowYWlnQ0FDRUNDeUFGUVFScUlRVU1BUXNMQzZJQ0FRVi9Jd0JCRUdzaUJDUUFJd0JCRUdzaUJTUUFJd0JCSUdzaUJpUUFJd0JCSUdzaUF5UUFJQU5CQ0dvaUJ5QUNFUGNRSUFNZ0F5Z0NEQ0FETFFBVElnSWdBa0VZZEVFWWRVRUFTQ0lDR3pZQ0hDQURJQU1vQWdnZ0J5QUNHellDR0NBRElBTXBBeGczQXdBZ0JpQUFJQU1RNFFFZ0J4QVBHaUFEUVNCcUpBQWdBQ0FBUWRnQ2FpQUdFTTRDSVFJZ0JrRWdhaVFBSUFVZ0FqWUNEQ0FBSUFKQkVHb2dCVUVNYWhDekF5RUNJQVZCRUdva0FDQUVJQUkyQWd3akFFRVFheUlDSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlETmdJTUlBSWdBellDQ0NBQVFZd0JhaUlESUFNUXZ3RWdBQ2dDQ0NBQ0tBSUlJQUVnQkNnQ0RCQ0NIeUlBRUNnZ0F5QURLQUlZUVFGcU5nSVlJQUpCRUdva0FDQUVRUkJxSkFBZ0FBdDNBUVIvSUFCQ2dJQ0FnSUFCTndJa0lBQWdBRFlDSUNBQUlBRW9BZ1FpQWhDN0NTQUJLQUlBSWdFZ0FrRUNkR29oQkNBQUtBSWtJUU1nQUNnQ0lDRUZBMzhnQVNBRVJnUi9JQUFGSUFBZ0EwRUJhaUlDTmdJa0lBVWdBMEVDZEdvZ0FTZ0NBRFlDQUNBQlFRUnFJUUVnQWlFRERBRUxDd3YydFFFRElYOENmUUYrSXdCQjBBSnJJaEFrQUFKQUlBQW9BaHdvQWdBdEFBQkZEUUFnQUNnQ0pDSUJLQUpVSUFFb0FsaEdCRUJCQVNFVERBRUxJQkJCeUFGcUlnSVF3eGtqQUVHQUFXc2lBU1FBSUFBb0Fod29BZ0F0QUFBRVFDQUJRZkFBYWlBQUtBSWdJQUFvQWlRUTNRZ1Frd0lRVkNFRUlBQW9BZ0FnQUNnQ0pCQ1VEMEVBRUlVQklRVUNRQ0FBS0FJY0lnWW9BZ0FpRHkwQUFFVU5BQ0FGUlFSQUlBOUJBRG9BQUNBR1FZVENDeEFaSVFNZ0FTQUFLQUlrRU4wSU5nSUlJQU1nQVVFSWFoQXZLQUlBTFFBQVFRQkhJUU1NQVFzZ0FVS0FnSUNBZ0FFM0FtUWdBU0FCUVVCcklnTTJBbUFnQUNnQ0pDRVBJQUVnQXpZQ0VDQUJJQUEyQWd3Z0FVR28yaEkyQWdnZ0FTQUJRUWhxSWdZMkFoaEJBQ0VESUE4Z0JoRGNGeUFHRUJZZ0FDZ0NIQ2dDQUMwQUFBUkFJQUpCRkdvZ0JCRGdBaUFDUVNCcUlBRkJRR3NRb0FzZ0FpQUZOZ0pNSUFGQ0FEY0RJQ0FCUWdBM0F4Z2dBVUlBTndNUUlBRkNnSUNBZ0lBQk53SXNJQUZDQURjRENDQUJRZ0EzQXpnZ0FTQUJRUWhxSWdNMkFpZ2dBa0hRQUdvZ0F4Q2dDeUFDSUFNcEF6QTNBNEFCSUFNUUl5QUFLQUljS0FJQUxRQUFRUUJISVFNTElBRkJRR3NRSXdzZ0JCQVBHZ3NnQVVHQUFXb2tBQUpBSUFORkRRQUNRQUpBSUFBb0FzZ0hJZ01FUUNBREtBSVlJQU10QUI4aUFTQUJRUmgwUVJoMVFRQklHMFVFUUNBUVFSaHFRYm1oQlVHa0IwRUhJQkJCdUFGcUVCMGlBUkFYSWdOQkdHcEJyT0VJRUE0YUlBTVFHQ0FCRUI0Z0FDZ0N5QWNoQXdzZ0F5MEFFRVVOQVNBUVFkd0JhaUFEUVJScUVPQUNDeU1BUWRBQmF5SVVKQUFnQUNnQ3RBWkJBVWNFUUNBVVFTQnFRYm1oQlVIQ0IwRUhJQlJCd0FGcUVCMGlBUkFYSWdOQkdHcEJtOWNJRUE0YUlBTVFHQ0FCRUI0TFFRQWhEeU1BUVJCcklnY2tBQ0FBUWZRR2FpRUZJQUFvQWlRaUFTZ0NXQ0VMSUFFb0FsUWhBd05BSUFNZ0MwWUVRQ0FIUVJCcUpBQUZJQU1vQWdBaEFrR0lBaEFWSWdFZ0FqWUNBQ0FDRU9vRElRUWdBVUlBTndJTUlBRkJmellDQ0NBQklBUTJBZ1FnQVVJQU53SVVJQUZCQURvQUhDQUJRZ0EzQXlBZ0FVSUFOd01vSUFGQkFEb0FlQ0FCUVFBNkFFZ2dBVUtBZ0lDQWdJQ0F3RDgzQXpBZ0FVSUFOd000SUFGQlFHdEJBRG9BQUNBQlFRQTJBcEFCSUFGQ0FEY0RpQUVnQVVLR2dJQ0E0QUEzQTRBQklBRkJsQUZxUWR6NERCQVVHaUFCUW9DQWdJREFBRGNDL0FFZ0FTQUJRZWdCYWpZQytBRWdBVUtBZ0lDQXdBQTNBK0FCSUFFZ0FVRzhBV28yQXR3QklBRkNnSUNBZ01BQU53SzBBU0FCSUFGQm9BRnFOZ0t3QVNBSElBRTJBZ2dnQnlBQ0VPb0ROZ0lFUVFBaEFpTUFRU0JySWdna0FDQUlJQWRCQkdvMkFoQWdDRUVRYWlFS0l3QkJFR3NpQmlRQUlBY29BZ1FoQVNBSUFuOENRQ0FGS0FJRUlnUkZEUUFnQlNnQ0FBSi9JQVJCQVdzZ0FYRWdCR2tpQ1VFQlRRMEFHaUFCSUFFZ0JFa05BQm9nQVNBRWNBc2lBa0VDZEdvb0FnQWlERVVOQUNBRVFRRnJJUTRnQ1VFQlN5RU5BMEFnRENnQ0FDSU1SUTBCSUFFZ0RDZ0NCQ0lKUndSQUFrQWdEVVVFUUNBSklBNXhJUWtNQVFzZ0JDQUpTdzBBSUFrZ0JIQWhDUXNnQWlBSlJ3MENDeUFNS0FJSUlBRkhEUUFMUVFBTUFRc2dCaUFGSUFFZ0NoRGlDQUpBUVFBZ0JDQUZLQUlNUVFGcXN5SWlJQVVxQWhBaUl5QUVzNVJlR3cwQUlBVWdCQ0FFUVFGcmNVRUFSeUFFUVFOSmNpQUVRUUYwY2lJQ0FuOGdJaUFqbFkwaUlrTUFBSUJQWFNBaVF3QUFBQUJnY1FSQUlDS3BEQUVMUVFBTElnUWdBaUFFU3hzUXd3RWdCU2dDQkNJRUlBUkJBV3R4UlFSQUlBUkJBV3NnQVhFaEFnd0JDeUFCSUFSSkJFQWdBU0VDREFFTElBRWdCSEFoQWdzQ1FDQUNRUUowSWdJZ0JTZ0NBR29vQWdBaUFVVUVRQ0FHS0FJQUlBVW9BZ2cyQWdBZ0JTQUdLQUlBTmdJSUlBVW9BZ0FnQW1vZ0JVRUlhallDQUNBR0tBSUFJZ0VvQWdBaUFrVU5BU0FDS0FJRUlRd0NRQ0FFSUFSQkFXc2lBbkZGQkVBZ0FpQU1jU0VNREFFTElBUWdERXNOQUNBTUlBUndJUXdMSUFVb0FnQWdERUVDZEdvZ0FUWUNBQXdCQ3lBR0tBSUFJQUVvQWdBMkFnQWdBU0FHS0FJQU5nSUFDeUFHS0FJQUlRd2dCa0VBTmdJQUlBVWdCU2dDREVFQmFqWUNEQ0FHS0FJQUlRRWdCa0VBTmdJQUlBRUVRQ0FHTFFBSUJFQWdBVUVNYWhDUUR3c2dBUVJBSUFFUUh3c0xRUUVMT2dBY0lBZ2dERFlDR0NBR1FSQnFKQUFnQ0NnQ0dDRUJJQWhCSUdva0FDQUhLQUlJSVFJZ0IwRUFOZ0lJSUFGQkRHb2dBaENBR2lBRFFRUnFJUU1nQjBFSWFoQ1FEd3dCQ3dzakFFRWdheUlCSkFBQ2YwRUFJQUFvQWh3b0FnQXRBQUJGRFFBYUlBQW9BaVFvQWxRb0FnQVE2Z01oQlNBQUtBSWtJZ01vQWxnaEJDQURLQUpVSVFNQ1FBTkFJQU1nQkVZTkFTQURLQUlBSVFJZ0EwRUVhaUVESUFJUTF3UU5BQXNnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdnb3dvUUdTRURJQUVnQWhEcUF6WUNDQ0FESUFGQkNHb1FMMEcyMGdFUUdTZ0NBQzBBQUVFQVJ3d0JDeUFBS0FJa0lnTW9BbGdoQmlBREtBSlVJUU1EZnlBRElBWkdCSDhnQUNnQ0hDZ0NBQzBBQUVFQVJ3VWdBeWdDQUNFQ0lBRWdCVFlDRkNBQklBSTJBaEFnQVNBQU5nSU1JQUZCek5vU05nSUlJQUVnQVVFSWFpSUVOZ0lZSUFJZ0JCQ09HQ0FEUVFScUlRTWdCQkFXREFFTEN3c2hBeUFCUVNCcUpBQUNRQ0FEUlEwQUl3QkJNR3NpQVNRQUlBQW9BaHdvQWdBdEFBQUVmeUFCSUFBb0FpUW9BbFFvQWdBUTZnTWlDellDTENBQUtBSWtJZ01vQWxnaERDQURLQUpVSVFJQ2Z3TkFJQUlnREVjRVFDQUJJQUlvQWdBaUJSRHFBeUlITmdJb0lBQWdCeEI4SWdORkJFQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwSE1vZ29RR1NBQlFTaHFFQzlCb1BVRUVCa29BZ0F0QUFBTUF3c0NRQ0FGRU9ZS0lnUkZEUUFnQlJEWEJDZ0NGQ0VHQWtBQ1FBSkFJQVFvQWhSQjlnRnJEZ0lCQUFJTElBWkIvQUZyUVgxTERRRWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwR2gvQWtRR1NBQlFTaHFFQzlCeXNvQ0VCa29BZ0F0QUFBTUJRc2dCa0g3QVd0QmZVc05BQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRZGo2Q1JBWklBRkJLR29RTDBHS3lnSVFHU2dDQUMwQUFBd0VDeUFCSUFVUTZnTWlCVFlDQ0NBQklBUkJBQkE0SWdZMkFpUWdBQ0FHRUh3aUNFVUVRQ0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRYkNmQ2hBWklBRkJDR29RTDBHZ29nb1FHU0FCUVNScUVDOG9BZ0F0QUFBTUJBc2dCU0FHUmdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQnNKOEtFQmtnQVVFSWFoQXZRZTJhQXhBWktBSUFMUUFBREFRTElBaEJGR29oQ1NBSUtBSVVCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdnb3dvUUdTQUJRU1JxRUM5QjYva0xFQmtnQ1JBdlFmVHREQkFaSUFGQkNHb1FMeWdDQUMwQUFBd0VDeUFKSUFVMkFnQWdBeUFHTmdJTUlBUW9BaFJCOWdGSERRQWdCU0FMUmdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQm1Kb0tFQmtnQVVFc2FoQXZRYXo2QVJBWktBSUFMUUFBREFRTElBRWdCRUVCRURnaUJEWUNJQUpBQW44Z0FDQUVFSHdpQ0VVRVFDQUFLQUljSWdNb0FnQkJBRG9BQUNBRFFjTDhDUkFaSUFGQkNHb1FMMEdKendrUUdTQUJRU0JxRUM4TUFRc2dCQ0FHUmdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQmo1OEtFQmtnQVVFSWFoQXZRYldlQ2hBWklBRkJJR29RTDBIbTZRQVFHUXdCQ3lBSVFSaHFJUVlnQ0NnQ0dFVU5BU0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRYUNqQ2hBWklBRkJJR29RTDBHeitRc1FHU0FHRUM5QjlPME1FQmtnQVVFSWFoQXZDeWdDQUMwQUFBd0VDeUFHSUFVMkFnQWdBeUFFTmdJUUN5QUJRUUE2QUNRZ0F5Z0NBQ0VGSUFGQjhOb1NOZ0lJSUFFZ0FVRUlhaUlFTmdJWUlBRWdBVUVrYWpZQ0RDQUJJQWMyQWhBZ0JTQUVFT1VLSUFRUUZpQURJQU1vQWhBZ0IwWWlBem9BSENBQkxRQWtSU0FEY2dSQUlBSkJCR29oQWd3Q0JTQUFLQUljSWdNb0FnQkJBRG9BQUNBRFFhQ2pDaEFaSUFGQktHb1FMMEd2NlFBUUdTZ0NBQzBBQUF3REN3QUxDeUFBS0FJY0tBSUFMUUFBQzBIL0FYRkJBRWNGUVFBTElRTWdBVUV3YWlRQUlBTkZEUUFqQUVIUUFXc2lBU1FBSUFBb0FpUWhBeUFCUWdBM0FoUWdBVUtBZ0lDQWdBUTNBcVFCSUFFZ0FVRWdhaUlGTmdLZ0FTQUJRWUNBZ1B3RE5nSWNJQUZDQURjQ3RBRWdBVUdBZ0lEOEF6WUN2QUVnQVVJQU53SU1JQUVnQXpZQ0NDQUJRZ0EzQXF3QklBTW9BbGdoQmlBQlFhd0JhaUVDSUFGQkNHcEJCSEloQkNBREtBSlVJUU1EUUNBRElBWkhCRUFnQVNBREtBSUFJZ2NRNmdNMkFzQUJJQVFnQVVIQUFXb1EwQUVnQnpZQ0FDQURRUVJxSVFNTUFRc0xRUUFoQXlBQlFRQTJBcVFCSUFJUWpna2dBVUVJYWlBQktBSUlLQUpVS0FJQUVPb0RFTVFHSUFCQjZBWnFJQUZCd0FGcUlBRW9BcUFCSWdZZ0FTZ0NwQUZCQW5ScUlBWVEvaGtpQmhEdEJTQUdFRElhSUFJUVR5QUZFTndGSUFRUVR3TkFJQUFvQXV3R0lBQW9BdWdHSWdKclFRSjFJQU5OQkVBZ0FVSFFBV29rQUFVZ0FDQUNJQU5CQW5ScUtBSUFFSHdnQXpZQ0NDQURRUUZxSVFNTUFRc0xJd0JCRUdzaUFTUUFJQUFvQXV3R0lRWWdBQ2dDNkFZaEF3Si9BMEFnQXlBR1J3UkFJQUVnQUNBREtBSUFJZ1VRZkNJQ0tBSU1JZ1EyQWd3Q1FDQUVSUTBBSUFFZ0JUWUNDQ0FDS0FJSUlRVWdCU0FBSUFRUWZDZ0NDQ0lFVHdSQUlBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQjFmd0pFQmtnQVVFSWFoQXZRZENoQ2hBWklBRkJER29RTHlnQ0FDMEFBQXdFQ3lBQklBSW9BaEFpQWpZQ0JDQUNSUTBBSUFVZ0FDQUNFSHdvQWdnaUFrc0VRQ0FBS0FJY0lnVW9BZ0JCQURvQUFDQUZRZGo2Q1JBWklBRkJDR29RTDBHNnpna1FHU0FCUVFScUVDOGFDeUFDSUFSSkRRQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwRy9vZ29RR1NBQlFReHFFQzlCK0owS0VCa2dBVUVJYWhBdlFjV2FDaEFaSUFGQkJHb1FMeWdDQUMwQUFBd0RDeUFEUVFScUlRTU1BUXNMSUFBb0Fod29BZ0F0QUFBTElRTWdBVUVRYWlRQUlBTkIvd0Z4UlEwQVFRQWhCQ01BUWZBQmF5SUNKQUFnQUNnQzdBWWdBQ2dDNkFaR0JFQWdBa0hRQUdwQnVhRUZRZWtOUVFjZ0FrRXdhaEFkSWdFUUZ5SURRUmhxUWJIWkNCQU9HaUFERUJnZ0FSQWVDeUFBUVp3SGFoRDlHU0FBS0FMb0JpZ0NBQ0VCSUFKQ2dJQ0FnTUFBTndKRUlBSWdBa0V3YWlJRE5nSkFJQUlnQURZQ0tDQUNJQU0yQWl3Z0FrRW9ha0VBUVFBZ0FVRUFFTzhJR2lBQ1FlZ0FhaUVIQW44RFFDQUFLQUxzQmlBQUtBTG9CaUlCYTBFQ2RTQUVTd1JBSUFJZ0FTQUVRUUowYWlnQ0FDSUZOZ0lrSUFWRkJFQWdBa0hRQUdwQnVhRUZRWkFPUVFjZ0FrRUlhaEFkSWdFUUZ5RURJQWRCbDlnSUVBNGFJQU1RR0NBQkVCNExJQUFnQlJCOElnWkZCRUFnQWtIUUFHcEJ1YUVGUVpJT1FRY2dBa0VJYWhBZElnRVFGeUVESUFkQnNMQUlFQTRhSUFNUUdDQUJFQjRMSUFJb0FrUWlBMFVFUUNBQUtBSWNJZ0VvQWdCQkFEb0FBQ0FCUVlXaENoQVpJQUpCSkdvUUx5Z0NBQzBBQUF3REN5QUNLQUpBSVFnQ1FBTkFJQVVnQ0NBRFFRRnJJZ0ZCQW5ScUtBSUFJZ3dvQWh4SERRRWdBU0lERFFBTElBSkJBRFlDUkNBQUtBSWNJZ0VvQWdCQkFEb0FBQ0FCUVlXaENoQVpJQUpCSkdvUUx5Z0NBQzBBQUF3REN5QUNJQU0yQWtRQ1FDQUdLQUlNSWdoRkRRQWdEQ2dDRUNJSlFRRnFJUU1DUUNBR0tBSVFJZ0VFUUNBQ1FTaHFJQU5CQkNBQklBZ1E3d2doRENBQklBVkdEUUVnQWtFb2FpQURRUU1nQlNBQkVPOElJUXdnQWtLQWdJQ0F3QUEzQW1RZ0FpQUNRZEFBYWlJSU5nSmdJQVlvQWdBaEN5QUNRWlRiRWpZQ0NDQUNJQUpCQ0dvaUF6WUNHQ0FDSUFnMkFnd2dDeUFERU9VS0lBTVFGZ0pBSUFJb0FtUkJBa2NOQUNBQ0tBSmdJZ01vQWdBaUNDQURLQUlFUmcwQUlBQWdDQkI4S0FJSUlRTWdBQ0FDS0FKZ0tBSUVFSHdoQ0NBTUtBSWdJZ3NnQTBzTkFDQURJQXdvQWlRaUNrOE5BQ0FMSUFnb0FnZ2lBMHNnQXlBS1QzSU5BQ0FDUVNocUlBbEJBbXBCQVNBRklBRVE3d2doREFzZ0FrSFFBR29RWGd3QkN5QUNRU2hxSUFOQkFVRUNJQVlvQWdBUTF3UW9BaFJCK2dGR0d5QUZJQWdRN3dnaERBc2dEQTBBSUFKQjBBQnFRYm1oQlVIWERrRUhJQUpCQ0dvUUhTSUJFQmNoQXlBSFFkdXZDQkFPR2lBREVCZ2dBUkFlUVFBaERBc2dCaUFNTmdJZ0lBUkJBV29oQkF3QkN3c2dBaWdDUkVFQlJ3UkFJQUFvQWh3aUFTZ0NBRUVBT2dBQUlBRkIxS1VLRUJraEFTQUNJQUlvQWtSQkFXczJBbEFnQVNBQ1FkQUFhaEF2UWNPS0FSQVpLQUlBTFFBQURBRUxBa0FnQWlnQ1FDZ0NBQ0lCS0FJVVJRUkFJQUVvQWhCRkRRRUxJQUFvQWh3aUFTZ0NBRUVBT2dBQUlBRkJsTG9KRUJrb0FnQXRBQUFNQVFzZ0FDZ0NIQ2dDQUMwQUFBc2hBU0FDUVRCcUVGNGdBa0h3QVdva0FDQUJSUTBBUVFBaERDTUFRZkFBYXlJS0pBQUNRQ0FBS0FJY0tBSUFMUUFBUlEwQUlBQW9BcndISWdNZ0FDZ0N3QWRCQW5ScUlSRUNRQU5BSUFNZ0VVY0VRQ0FES0FJQUlnRW9BaFJCQWtZRVFDQUtJQUFnQVNnQ0dCQjhLQUlBRU5jRUloSkJBUkE0SWdFMkFtd2dBQ0FCRUh3aUFTZ0NDQ0lFSUFNb0FnQWlBaWdDSUUwRVFDQUFLQUljSWdFb0FnQkJBRG9BQUNBQlFkaWdDaEFaSUFNb0FnQkJHR29RTDBHT25Bb1FHU0FLUWV3QWFoQXZRZXpBQkJBWklRSU1CQXNnQkNBQ0tBSWtTd1JBSUFBb0Fod2lBU2dDQUVFQU9nQUFJQUZCMktBS0VCa2dBeWdDQUVFWWFoQXZRZnViQ2hBWklBcEI3QUJxRUM5QnN1c0FFQmtoQWd3RUN5QUJLQUk4QkVBZ0FDZ0NIQ0lDS0FJQVFRQTZBQUFnQWtHZ293b1FHU0FLUWV3QWFoQXZRWm5aQ1JBWklBRW9BanhCR0dvUUwwSHB6Z29RR1NBREtBSUFRUmhxRUM4aEFnd0VDd0pBSUFFb0FoUWlCVVVOQUNBRklBSW9BaGhHRFFBZ0FDZ0NIQ0lDS0FJQVFRQTZBQUFnQWtHZ293b1FHU0FCUVFScUVDOUI1Zm9KRUJrZ0F5Z0NBRUVZYWhBdlFiZnZDUkFaSUFGQkZHb1FMMEdMdmdnUUdTRUNEQVFMSUFFZ0FqWUNQQ0FCSUFRZ0F5Z0NBQ2dDSkVZNkFFQWdDa0lBTndOZ0lBcENBRGNEV0NBS1FZQ0FnUHdETmdKb0lBcENnSUNBZ01BQU53Sk1JQW9nQ2tFNGFqWUNTQ0FLUWdBM0F5Z2dDa0lBTndNZ0lBcEJnSUNBL0FNMkFqQkJBaUVDQW44Q1FBTkFJQklReUFFZ0FrRUJjaUlGU3dSQUlBb0NmZ0pBQWtBQ1FDQVNJQUlRandVaUFTZ0NBQ0lFUVFackRnUUNBUUVDQUFzZ0JFRXJhdzREQVFBQkFBdEI0b0FHUWVld0EwSHdBRUdkOGdZUUFBQUxBa0FnQVVFRWFpSUVFTmtIQkVBZ0JCRFpCMEVEVHcwQklBUVEyUWNFZmlBQktBSVlJZ1lnQVVFTWFpQUdHeWdDQURVQ0FBVkNBQXNoSkNBRUVOa0hRUUpQQkg0Z0FTZ0NHQ0lFSUFGQkRHb2dCQnNvQWdBMUFnUkNJSVlnSklRRklDUUxEQUlMUWVmeENFSG5zQU5COFFCQm5mSUdFQUFBQzBITWhRZEI1N0FEUWZJQVFaM3lCaEFBQUFzM0F4Z2dDaUFTSUFVUU9EWUNGQUovSUFvcEF4Z1FzZ3doQlFKQUlBb29BaVFpQVVVTkFDQUtLQUlnQW44Z0FVRUJheUFGY1NBQmFTSUVRUUZORFFBYUlBVWdBU0FGU3cwQUdpQUZJQUZ3Q3lJR1FRSjBhaWdDQUNJSFJRMEFJQUZCQVdzaENDQUtLUU1ZSVNRZ0JFRUJTeUVKQTBBZ0J5Z0NBQ0lIUlEwQklBY29BZ1FpQkNBRlJ3UkFBa0FnQ1VVRVFDQUVJQWh4SVFRTUFRc2dBU0FFU3cwQUlBUWdBWEFoQkFzZ0JDQUdSdzBDREFFTElBY3BBd2dnSkZJTkFBc2dCd3dCQzBFQUN3MENRUUFoQkNNQVFSQnJJZzBrQUNNQVFSQnJJZzRrQUNBS0tRTVlFTElNSVFjZ0RRSi9Ba0FnQ2tFZ2FpSUdLQUlFSWdWRkRRQWdCaWdDQUFKL0lBVkJBV3NnQjNFZ0JXa2lBVUVCVFEwQUdpQUhJQVVnQjBzTkFCb2dCeUFGY0FzaUJFRUNkR29vQWdBaUNFVU5BQ0FGUVFGcklRa2dDaWtER0NFa0lBRkJBVXNoQ3dOQUlBZ29BZ0FpQ0VVTkFTQUhJQWdvQWdRaUFVY0VRQUpBSUF0RkJFQWdBU0FKY1NFQkRBRUxJQUVnQlVrTkFDQUJJQVZ3SVFFTElBRWdCRWNOQWdzZ0NDa0RDQ0FrVWcwQUMwRUFEQUVMUVJBUUZTRUJJQTRnQmtFSWFqWUNCQ0FPSUFFMkFnQWdBU0FLS1FNWU53TUlJQTVCQVRvQUNDQUJRUUEyQWdBZ0FTQUhOZ0lFQWtCQkFDQUZJQVlvQWd4QkFXcXpJaUlnQmlvQ0VDSWpJQVd6bEY0YkRRQUNRQUovUVFJZ0JTQUZRUUZyY1VFQVJ5QUZRUU5KY2lBRlFRRjBjaUlCQW44Z0lpQWpsWTBpSWtNQUFJQlBYU0FpUXdBQUFBQmdjUVJBSUNLcERBRUxRUUFMSWdRZ0FTQUVTeHNpQVVFQlJnMEFHaUFCSUFFZ0FVRUJhM0ZGRFFBYUlBRVFmd3NpQVNBR0tBSUVJZ1JOQkVBZ0FTQUVUdzBCSUFSQkEwa2hDQUovSUFZb0FneXpJQVlxQWhDVmpTSWlRd0FBZ0U5ZElDSkRBQUFBQUdCeEJFQWdJcWtNQVF0QkFBc2hCU0FFSUFFZ0NDQUVhVUVCUzNJRWZ5QUZFSDhGSUFWQkFVRWdJQVZCQVd0bmEzUWdCVUVDU1JzTElnVWdBU0FGU3hzaUFVME5BUXRCQUNFRUFrQWdBU0lJQkVBZ0JpQUlFSmNERUd3Z0JpQUlOZ0lFQTBBZ0JDQUlSZ1JBSUFZb0FnZ2lCVVVOQXlBR1FRaHFJUUVnQlNnQ0JDRUpBa0FnQ0draUJFRUJUUVJBSUFrZ0NFRUJhM0VoQ1F3QkN5QUlJQWxMRFFBZ0NTQUljQ0VKQ3lBR0tBSUFJQWxCQW5ScUlBRTJBZ0FnQ0VFQmF5RVZJQVJCQVVzaEdBTkFJQVVvQWdBaUFVVU5CQ0FCS0FJRUlRc0NRQ0FZUlFSQUlBc2dGWEVoQ3d3QkN5QUlJQXRMRFFBZ0N5QUljQ0VMQ3dKQUlBa2dDMFlOQUNBQklRUWdDMEVDZENJV0lBWW9BZ0JxSWhrb0FnQkZCRUFnR1NBRk5nSUFJQXNoQ1F3QkN3TkFJQVFpQ3lnQ0FDSUVCRUFnQVNrRENDQUVLUU1JVVEwQkN3c2dCU0FFTmdJQUlBc2dCaWdDQUNBV2FpZ0NBQ2dDQURZQ0FDQUdLQUlBSUJacUtBSUFJQUUyQWdBTUFRc2dBU0VGREFBTEFBVWdCaWdDQUNBRVFRSjBha0VBTmdJQUlBUkJBV29oQkF3QkN3QUxBQXNnQmtFQUVHd2dCa0VBTmdJRUN3c2dCaWdDQkNJRklBVkJBV3R4UlFSQUlBVkJBV3NnQjNFaEJBd0JDeUFGSUFkTEJFQWdCeUVFREFFTElBY2dCWEFoQkFzQ1FDQUVRUUowSWdRZ0JpZ0NBR29vQWdBaUFVVUVRQ0FPS0FJQUlBWW9BZ2cyQWdBZ0JpQU9LQUlBTmdJSUlBWW9BZ0FnQkdvZ0JrRUlhallDQUNBT0tBSUFJZ0VvQWdBaUJFVU5BU0FFS0FJRUlRZ0NRQ0FGSUFWQkFXc2lCSEZGQkVBZ0JDQUljU0VJREFFTElBVWdDRXNOQUNBSUlBVndJUWdMSUFZb0FnQWdDRUVDZEdvZ0FUWUNBQXdCQ3lBT0tBSUFJQUVvQWdBMkFnQWdBU0FPS0FJQU5nSUFDeUFPS0FJQUlRZ2dEa0VBTmdJQUlBWWdCaWdDREVFQmFqWUNEQ0FPRUlzQlFRRUxPZ0FNSUEwZ0NEWUNDQ0FPUVJCcUpBQWdDaUFOS0FJSU5nSUlJQW9nRFMwQUREb0FEQ0FOUVJCcUpBQWdDa0hZQUdvZ0NrRVVhaENwQWtVRVFDQUtRVGhxSUFwQkZHb1Fwd1FMSUFwQjJBQnFJQXBCRkdvUS9Ca2lBU2dDSkNJRUlBRW9BaWhQQkVBZ0FTZ0NLQ0lFUVFGMFFRSWdCQnNpQkNBQktBSW9Td1JBSUFFb0FpQWhCU0FCSUFRUWlBOGdBU2dDSkNFR0lBRW9BaUFoQjBFQUlRUURRQ0FFSUFaR0JFQWdBU0FGRURZRklBY2dCRUVEZENJSWFpQUZJQWhxS1FNQU53TUFJQVJCQVdvaEJBd0JDd3NMSUFFb0FpUWhCQXNnQVNBRVFRRnFOZ0lrSUFFb0FpQWdCRUVEZEdvZ0Npa0RHRGNEQUNBQ1FRSnFJUUlNQVFzTElBb29Ba2dpQlNBS0tBSk1RUUowYWlFSEEwQkJBU0FGSUFkR0RRSWFJQW9nQlNnQ0FDSUJOZ0lZSUFBZ0FSQjhJZ0pCeUFCcUlRRWdDa0hZQUdvZ0NrRVlhaEQ4R1NFRUFrQWdBUzBBTUFSQUl3QkJFR3NpQmlRQUlBRWdCRWNFUUNBR0lBUkJJR28yQWdnZ0JpQUVLQUlnSUFSSE9nQU1JQUVnQmtFSWFoQ3hHUXNnQmtFUWFpUUFEQUVMSXdCQkVHc2lCaVFBSUFGQ2dJQ0FnTUFBTndJa0lBRWdBVFlDSUNBR0lBUkJJR28yQWdnZ0JpQUVLQUlnSUFSSE9nQU1JQUVnQmtFSWFoQ3hHU0FHUVJCcUpBQWdBVUVCT2dBd0N3SkFBbjhnQWlnQ0NDSUVJQU1vQWdBaUFTZ0NJRTBFUUNBQUtBSWNJZ0VvQWdCQkFEb0FBQ0FCUWRpZ0NoQVpJQU1vQWdCQkdHb1FMMEdvbkFvUUdTQUtRUmhxRUM5QjdNQUVFQmtNQVFzZ0JDQUJLQUlrU3dSQUlBQW9BaHdpQVNnQ0FFRUFPZ0FBSUFGQjJLQUtFQmtnQXlnQ0FFRVlhaEF2UWFpY0NoQVpJQXBCR0dvUUwwR3k2d0FRR1F3QkN3SkFJQUlvQWhRaUJFVU5BQ0FFSUFFb0FoaEdEUUFnQUNnQ0hDSUJLQUlBUVFBNkFBQWdBVUdnb3dvUUdTQUNRUVJxRUM5Qm1Qc0pFQmtnQXlnQ0FFRVlhaEF2UWJmdkNSQVpJQUpCRkdvUUwwR0x2Z2dRR1F3QkN5QUNLQUk0UlEwQklBQW9BaHdpQVNnQ0FFRUFPZ0FBSUFGQm9LTUtFQmtnQ2tFWWFoQXZRZWJaQ1JBWklBSW9BamhCR0dvUUwwSHB6Z29RR1NBREtBSUFRUmhxRUM4TEtBSUFMUUFBUVFCSElReEJBQXdEQ3lBQ0lBRTJBamdnQlVFRWFpRUZEQUFMQUFzZ0FDZ0NIQ0lCS0FJQVFRQTZBQUFnQVVIRnRRb1FHU0FLUVJocUVQd09RWW1nQ2hBWklBTW9BZ0JCR0dvUUx5Z0NBQzBBQUVFQVJ5RU1RUUFMSVFRZ0NrRWdhaEJQSUFwQk9Hb1FYaUFLUWRnQWFpSUZLQUlJSVFFRFFDQUJCRUFnQVNnQ0FDRUNJQUZCRUdvUUl5QUJFQjhnQWlFQkRBRUxDeUFGRUxjQ0lBUkZEUVFMSUFOQkJHb2hBd3dCQ3dzZ0FDZ0NIQ2dDQUMwQUFFRUFSeUVNREFFTElBSW9BZ0F0QUFCQkFFY2hEQXNnQ2tId0FHb2tBQ0FNUlEwQVFRQWhCQ01BUWFBQ2F5SUNKQUFDUUNBQUtBSWNLQUlBTFFBQVJRMEFJQUFvQXV3R0lSSWdBa0dRQVdvaERDQUFLQUxvQmlFQkEwQUNRQ0FCSUJKSEJFQWdBaUFCS0FJQUlnTTJBcHdDSUFBZ0F3Ui9JQU1GSUFKQitBQnFRYm1oQlVHZ0VFRUhJQUpCMkFCcUVCMGlBeEFYSVFVZ0RFRzUyQWdRRGhvZ0JSQVlJQU1RSGlBQ0tBS2NBZ3NRZkNJSlJRUkFJQUpCK0FCcVFibWhCVUdpRUVFSElBSkIyQUJxRUIwaUF4QVhJUVVnREVIUXNBZ1FEaG9nQlJBWUlBTVFIZ3NnQ1NnQ0lDRUhJQWtvQWdnaENDQUNRb0NBZ0lEQUFEY0NiQ0FDSUFKQjJBQnFJZ1kyQW1nZ0FrRkFhMElBTndNQUlBSkNBRGNET0NBQ1FZQ0FnUHdETmdKSUlBa29BZ0FoQ3lBQ1FiamJFallDZUNBQ0lBSkIrQUJxSWdNMkFvZ0JJQUlnQWtFNGFpSUZOZ0tBQVNBQ0lBWTJBbndnQ3lBREVPVUtJQU1RRmlBRkVFOGdBa0VBTmdKVUlBSkNnSUNBZ01BQU53Sk1JQUlnQlRZQ1NDQUNRb0NBZ0lEQUFEY0NMQ0FDSUFKQkdHbzJBaWdDUUNBQ0tBSnNJZ01OQUNBSEtBSUlSUTBBUVFBaEF5QUFLQUljSWdRb0FnQkJBRG9BQUNBRVFmQ2NDaEFaSUFKQm5BSnFFQzlCeDlFSkVCa2dCeWdDQ0VFWWFoQXZLQUlBTFFBQVFRQkhJUVFNQWdzZ0IwRVlhaUVLSUFsQkpHb2hGaUFDS0FKb0lnVWdBMEVDZEdvaEVRTkFBa0FDZndKQUFrQUNRQUpBQWtBZ0JTQVJSd1JBSUFJZ0JTZ0NBQ0lETmdJVUlBQWdBeEI4SWd0RkJFQWdBa0g0QUdwQnVhRUZRY2NRUVFjZ0FoQWRJZ01RRnlFR0lBeEI5SzhJRUE0YUlBWVFHQ0FERUI0TElBc29BZ2doQXlBV0lBSkJGR29RMEFFaEJpQURJQWhOQkVBZ0JrRUFOZ0lBSUFJZ0FpZ0NWRUVCYWpZQ1ZDQUhLQUlJSWdORkJFQWdBQ2dDSENJREtBSUFRUUE2QUFBZ0EwR0kvd2dRR1NBQ1Fad0NhaUlERUM5Qml1WUdFQmtnQWtFVWFoQXZRY0cxREJBWklBTVFMMEhUNndBUUdTZ0NBQzBBQUF3SUN5QURLQUlrUVFGcklBaEhCRUFnQUNnQ0hDSURLQUlBUVFBNkFBQWdBMEdXK2dnUUdTQUNRWndDYWlJREVDOUJpdVlHRUJrZ0FrRVVhaEF2UWUvaUN4QVpJQU1RTDBIdDBRa1FHU0FLRUM5QjY3MElFQmtvQWdBdEFBQU1DQXNnQUNBREtBSVlFSHdpQTBVRVFDQUNRZmdBYWtHNW9RVkIzeEJCQnlBQ0VCMGlCaEFYSVFzZ0RFR1RzQWdRRGhvZ0N4QVlJQVlRSGdzZ0F5Z0NHQ0FDS0FJVVJnMElJQUFvQWh3aUJDZ0NBRUVBT2dBQUlBUkJpUDhJRUJrZ0FrR2NBbW9RTDBHSzVnWVFHU0FDUVJScUVDOUI3dG9LRUJrZ0EwRVlhaEF2S0FJQUxRQUFEQWNMSUFaQkJqWUNBQUpBSUFjb0FnZ2lEa1VOQUNBT0tBSWdJaFVnQ0VzTkFDQU9LQUlrSWcwZ0NFMGdBeUFOU1NBRElCVlBjWElnQ0NBTlFRRnJSbklOQUNBQUtBSWNJZ01vQWdCQkFEb0FBQ0FEUVpiNkNCQVpJQUpCbkFKcUlnTVFMMEdLNWdZUUdTQUNRUlJxRUM5QjcrSUxFQmtnQXhBdlFlM1JDUkFaSUE1QkdHb1FMMEhydlFnUUdTZ0NBQzBBQUF3SEN3SkFJQUFnQnlnQ0RCRDdHU0lEUlEwQUlBSW9BaFFnQXlnQ0RFY05BQ0FHUVFGQkFpQURLQUlnS0FJVVFRSkdHeUlETmdJQURBSUxJQVlvQWdBaUEwRUdSdzBCQWtBZ0FDQUhLQUlFRVBzWklnTkZEUUFnQWlnQ0ZDQURLQUlRUncwQUlBWkJBellDQUF3SUN5QUdLQUlBSWdOQkJrY05BU0FBSUFvb0FnQVFmQ0VESUFJb0FoUWdBeWdDREVZRVFDQUdRUVEyQWdBTUJRc2dCaWdDQUNJRFFRWkhEUUVnQ3lnQ09DSURSUVJBSUFzb0Fqd2lBMFVOQXdzZ0FpZ0NuQUlnQXlnQ0dFWU5BaUFHUVFVMkFnQU1BZ3NnQWlnQ1ZFRUNUd1JBUVFBaEF5QUFLQUljSWdRb0FnQkJBRG9BQUNBRVFhQ2pDaEFaSUFKQm5BSnFFQzlCL2VzTEVCa2dBa0hVQUdvUUx5Z0NBQzBBQUVFQVJ5RUVEQW9MQWtBZ0FpZ0NUQ0lGUVFKSkRRQWdDU2dDREEwQVFRQWhBeUFBS0FJY0lnUW9BZ0JCQURvQUFDQUVRWkNkQ2hBWklBSkJuQUpxRUM5QjhQOEpFQmtnQWlnQ1NCQXZRZlR0REJBWklBSW9Ba2hCQkdvUUwwR0tzUWdRR1NnQ0FDMEFBRUVBUnlFRURBb0xRUUVoQXlBRklBSW9BaXdpQm1wQkFra05DU0FKS0FJTURRa2dBaWdDS0NJRklBWkJBblJxSVFnRFFDQUZJQWhHRFFvZ0FDQUFJQVVvQWdBUWZDZ0NGQkI4SWdZb0FwZ0JJQVl0QUo4QklnY2dCMEVZZEVFWWRVRUFTQnRGQkVBZ0FpQUdLQUlFRUY4Z0FrSDRBR29pQjBIdzRBUWdBaEExSUFJUUR4b2dBaUFBS0FJZ0lBY1E1UVVnQmtHVUFXb2dBaENlQVNBQ0VBOGFJQWNRRHhvTElBVkJCR29oQlF3QUN3QUxJQU5CQld0QkFVc05BUXNnQWtFNGFpQUNRUlJxRUtjRUlBWW9BZ0FoQXdzZ0EwRUVSdzBCQ3lBQ1FSaHFJQUpCRkdvUXB3UWdCaWdDQUNFREN5QURRUVZyUVFGTERRRWdDeWdDQ0NBSEtBSWtTd1JBSUFJZ0J5Z0NIRFlDZUNBQ1FZQ2JBellDQUFKQUlBY29BaFJCQTBjTkFDQUFJQW9vQWdBUWZDRURJQXNvQWdnZ0FDQURLQUlNSWdNUWZDZ0NDRThFUUNBQ0lBTTJBbmdNQVFzZ0FrR0Q2Z0EyQWdBTElBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQjhxQUtFQmtnQWtHY0Ftb1FMMEgrbndvUUdTQUNRUlJxRUM5QnNKMEtFQmtnQ2hBdlFZRGdDUkFaSUFJUXNBTkI5L0FNRUJrZ0FrSDRBR29RTHlnQ0FDMEFBQXdCQ3dKQUlBSW9BaFFnQ3lnQ0lDSUdLQUlZUmcwQUlBZ2dCaWdDSUU4RVFDQUdLQUlrSUFoTERRRUxJQUFvQWh3aUF5Z0NBRUVBT2dBQUlBTkI5cFlLRUJrZ0FrR2NBbW9RTDBHR2hRb1FHU0FDUVJScUVDOUJpT0FKRUJraEF5QUNRWnZQQ1VITi9Ba2dCaWdDRkVFRVJoczJBbmdnQXlBQ1FmZ0FhaEN3QXlBR1FSaHFFQzlCK3RBSUVCa29BZ0F0QUFBTUFRc2dBMEVGUncwQklBQW9BaHdpQXlnQ0FFRUFPZ0FBSUFOQitZVUdFQmtvQWdBdEFBQUxJUVJCQUNFRElBUkIvd0Z4UVFCSElRUU1Bd3NnQlVFRWFpRUZEQUFMQUFzZ0FDZ0NIQ2dDQUMwQUFFRUFSeUVFREFJTElBRkJCR29oQVNBQ1FSaHFFRjRnQWtFNGFoQmVJQUpCMkFCcUVGNGdBdzBBQ3dzZ0FrR2dBbW9rQUNBRVJRMEFRUUFoQkNNQVFjQUJheUlHSkFBQ1FDQUFLQUljS0FJQUxRQUFSUTBBSUFBb0Fyd0hJZ1VnQUNnQ3dBZEJBblJxSVF3Z0JrRWdhaUVLQTBBQ1FDQUZJQXhIQkVBZ0JTZ0NBQ0lCS0FJVVFRRkhEUUVnQmlBQUlBRW9BaGdRZkNJSEtBSUFFTmNFSWdGQkFSQTROZ0s4QVNBR0lBRkJBaEE0TmdLNEFTQUFJQVlvQXJ3QkVId2hBaUFBSUFZb0FyZ0JFSHdoQkNBQ0tBSUlJUUVnQkNnQ0NDRURJQVVvQWdBaUNTZ0NJQ0VJSUFrb0FpUWhDU0FISUFkQkpHb2lDeUFHUWJ3QmFoRFFBU2dDQURZQ2dBRWdCeUFMSUFaQnVBRnFFTkFCS0FJQU5nS0VBU0FCSUFsSklBRWdDRTl4SWdzRVFDQUhJQVlvQXJ3Qk5nS0lBUXNnQXlBSlNTQURJQWhQY1NJSUJFQWdCeUFHS0FLNEFUWUNqQUVMQW44Q1FDQUxSUTBBSUFJb0FoUWlDVVVOQUNBSklBVW9BZ0FvQWhoR0RRQWdBQ2dDSENJQktBSUFRUUE2QUFBZ0FVR2dvd29RR1NBR1Fid0JhaEF2UWNiN0NSQVpJQVVvQWdCQkdHb1FMMEhIbmdvUUdTQUNRUlJxRUM5Qmk3NElFQmtvQWdBdEFBQU1BUXNnQ0VVTkFnSkFJQVFvQWhRaUFrVU5BQ0FDSUFVb0FnQW9BaGhHRFFBZ0FDZ0NIQ0lCS0FJQVFRQTZBQUFnQVVHZ293b1FHU0FHUWJnQmFoQXZRZlA3Q1JBWklBVW9BZ0JCR0dvUUwwSEhuZ29RR1NBRVFSUnFFQzlCaTc0SUVCa29BZ0F0QUFBTUFRc2dDMFVnQVNBRFJuSU5BaUFCSUFNZ0FTQURTeHRCQVdzaUFTQUFLQUxzQmlBQUtBTG9CaUlFYTBFQ2RVOEVRQ0FHUVFocVFibWhCVUg2RWtFSElBWkJxQUZxRUIwaUF4QVhJUUlnQ2tIdTV3Z1FEaG9nQWhBWUlBTVFIaUFBS0FMb0JpRUVDeUFHSUFRZ0FVRUNkR29vQWdBaUFUWUNDRUVBSVFNZ0JrRUFOZ0tvQVNBR1FRQTJBZ1FnQUNBQkVIeEJMR29oQkVFQUlRSURRQ0FFS0FJQUlnUUVRQ0FHSUFRb0FnZ2lBVFlDQUFKQUFrQWdCQ2dDREVFRWF3NERBUU1BQXdzZ0JTZ0NBQ0VJSUFBZ0FSQjhLQUlJSWdrZ0NDZ0NJRWtOQWlBSUtBSWtJQWxORFFJQ2Z5QUNCRUFnQUNnQ0hDSUJLQUlBUVFBNkFBQWdBVUdLbXdvUUdTQUdRYndCYWhBdlFlYWRDaEFaSUFaQkNHb1FMMEdjMXdJUUdVSDdnZ29RR1NBR1FhZ0JhaEF2UWVuT0NoQVpJQVlRTHd3QkN5QUdJQUUyQXFnQklBQWdBUkI4SVFnZ0J5QUJOZ0tRQVNBQklRSWdDQ2dDRkVVTkF5QUFLQUljSWdFb0FnQkJBRG9BQUNBQlFhQ2pDaEFaSUFaQnFBRnFFQzlCbnU4SkVCa2dDRUVVYWhBdlFhVDRBaEFaUWE3YUNSQVpJQVpCdkFGcUVDOUI2YzRLRUJrZ0JrRzRBV29RTDBHbXZ3UVFHVUh6bmdvUUdTQUZLQUlBUVJocUVDOUJpNzRJRUJrTEtBSUFMUUFBREFNTElBWWdBVFlDQkNBQklRTU1BUXNMSUFORklBSkZjZzBDSUFBb0Fod2lBU2dDQUVFQU9nQUFJQUZCb0tNS0VCa2dCa0VJYWhBdlFaT2VDaEFaSUFVb0FnQkJHR29RTDBIOW9Rb1FHU0FHUVFScUVDOUIxNThLRUJrZ0JrR29BV29RTDBISDF3SVFHU2dDQUMwQUFBdEIvd0Z4UVFCSElRUU1Bd3NnQUNnQ0hDZ0NBQzBBQUVFQVJ5RUVEQUlMSUFWQkJHb2hCUXdBQ3dBTElBWkJ3QUZxSkFBZ0JFVU5BQUovSXdCQkVHc2lBU1FBSUFFZ0FDZ0NsQWMyQWd3Z0FFR0lCMm9oQmlBQUtBSUFRZHdOYWlFRFFRRWhCQU5BQWtBZ0F5Z0NBQ0lEQkVBZ0FTQURLQUlJSWdJMkFnZ2dBeWdDRENFRklBQW9BaEFnQWhDVUFTRUhRVGdRRlNFQ0lBRW9BZ3doQ0NBQ1FRQTdBU0FnQWtFQU9nQUlJQUlnQnpZQ0JDQUNJQWcyQWdBZ0FrRUFPZ0FjSUFKQkpHb1FaeG9nQWtFQU5nSTBJQUpDQURjQ0xDQUJJQUkyQWdBZ0JpQUJRUWhxRUpZTElRSWdBU2dDQUNFSUlBRkJBRFlDQUNBQ0lBZ1FqdzhnQVJDVkN5QUJJQUVvQWd4QkFXbzJBZ3dnQmlBQlFRaHFFSllMSVFnQ1FDQUZRUkpySWdKQkdVc05BRUVCSUFKMFFjR2VnQmh4RFFNZ0FrRUNSdzBBSUFkQkFCQTRJUVVnQVNnQ0NDRUNJQVZCQVVZRVFDQUFJQUkyQWloQkJTRU1EQU1MSUFBZ0FqWUNMRUVHSVF3TUFndEJBeUVNSUFWQkFVWU5BU0FBS0FJY0lnTW9BZ0JCQURvQUFDQURRZnorQ3hBWklRTWdBU0FGTmdJQUlBTWdBUkNSQlNnQ0FDMEFBRUVBUnlFRUN5QUJRUkJxSkFBZ0JBd0NDeUFJS0FJQUlBdzJBalFNQUFzQUMwVU5BQUovSXdCQklHc2lBU1FBSUFFZ0FDZ0NsQWMyQWh3Z0FFR0lCMm9oQnlBQUtBTHNCaUVJSUFBb0F1Z0dJUXhCQVNFRUEwQUNRQ0FJSUF4SEJFQWdBU0FBSUF3b0FnQVFmQ0lES0FJSU5nSVlJQU1vQWdBaUEwRU1haUVKSUFOQkVHb2hBd0ovQTBBZ0F5Z0NBQ0lDSUFsR0RRTWdBU0FDRUdBaUF6WUNGQUpBQWtBZ0EwVU5BQ0FDS0FJVVFmZ0JSZzBBUVRnUUZTRURJQUVvQWh3aEJpQUJLQUlZSVFzakFFRWdheUlGSkFBZ0F5QUNOZ0lFSUFNZ0JqWUNBQ0FGUVFBN0FSZ2dCVUVBTmdJVUlBVkNnSUNBZ0hBM0Fnd2dCU0FMTmdJSUlBTWdCU2tDQ0RjQ0NDQURJQVV2QVJnN0FSZ2dBeUFGS1FJUU53SVFJQU5CQVRvQUhDQURRUUE3QVNBZ0EwRWthaEJuR2lBRFFRQTJBalFnQTBJQU53SXNJQVZCSUdva0FDQUJJQU0yQWdnZ0J5QUJRUlJxRUpZTElRTWdBU2dDQ0NFRklBRkJBRFlDQ0NBRElBVVFqdzhnQVVFSWFoQ1ZDeUFCSUFFb0FoeEJBV28yQWh3Z0J5QUJRUlJxRUpZTElRVWdBQ2dDR0NBQ0VIb1E2UUVpQTBVTkFBSkFJQU1nQXlnQ0FDZ0NnQUVSQUFCRkRRQUNRQUpBSUFJb0FoUWlCa0hCQUd0QkFra05BQ0FHUVR0R0RRRWdCa0hUQUVZTkFDQUdRUUZIRFFRZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBINXJBd1FHUXdHQ3lBQlFRaHFJQUFnQWtFQUVEZ1FsQXNnQlNnQ0FDQUJLUU1JTndJc0RBRUxJQUZCQ0dvZ0FDQUJLQUlVRUpRTElBVW9BZ0FnQVNrRENEY0NMQXNEUUNBRElBTW9BZ0FvQW9BQkVRQUFJZ1lFUUNBR0tBSVVJUU1NQVFzTEFrQWdBeUFES0FJQUtBSlFFUUFBRFFBZ0F5QURLQUlBS0FKSUVRQUFEUUFnQXlBREtBSUFLQUpZRVFBQVJRMEJDeUFGS0FJQVFRRTJBalFMSUFKQkJHb2hBd3dCQ3dzZ0FDZ0NIQ0lES0FJQVFRQTZBQUFnQTBHdXBnd1FHUXNoQkNBQlFRaHFJZ01nQWhCWUlBUWdBeEJOS0FJQUxRQUFJUUlnQXhBUEdpQUNRUUJISVFRTElBRkJJR29rQUNBRURBSUxJQXhCQkdvaERBd0FDd0FMUlEwQUl3QkJNR3NpQVNRQUlBRWdBRFlDS0NBQVFaQUhhaUlGSVF3RFFBSkFJQXdvQWdBaURFVUVRQ0FCSUFBMkFpQWdBQ2dDN0FZaERDQUFLQUxvQmlFRUEwQWdCQ0FNUmdSQUEwQWdCU2dDQUNJRkJFQWdBU0FGS0FJSU5nSUFJQVVvQWd3aUJpMEFIRVVOQVNBR0tBSTBRUUZHRFFFZ0JrRUlhaEQ5QnlJQ0tBSUVSUTBCSUFBZ0FDZ0M2QVlnQWlnQ0FFRUNkR29vQWdBUWZDRURBa0FnQWlnQ0FDSUVJQU1vQWlBaUF5Z0NJRWNOQUNBREtBSVVRUUZyUVFGTERRQWdBeWdDQUNFREN5QUNLQUlJSWdjZ0JDQUVJQWRMR3lFSElBSW9BZ3doQ0VFQUlRUUNRQ0FDTFFBUkRRQWdBeWdDSUNJSklBZExEUUFnQ0NBSlNTQURLQUlrSWdrZ0IwMXlJQWdnQ1U5eURRQWdCaWdDTEEwQ1FRRWhCQ0FDTFFBUVJRMENDeUFFUlNBRElBQWdCeUFJRVBvWklnSkhjZ1JBSUFaQkFUb0FJU0FBSUFJb0FoZ1FmRUdnQVdvZ0FSQ25CQVVnQmtFQk9nQWdDd3dCQ3dzZ0FVRXdhaVFBREFNTElBQWdCQ2dDQUJCOElna29BZ0FpQTBFTWFpRUtJQU5CRUdvaEF3TkFJQW9nQXlnQ0FDSUNSZ1JBSUFSQkJHb2hCQXdDQlFKQUlBSW9BaFJCOVFGR0JFQWdBU0FDRUdBaUF6WUNIQ0FBSUFNUWxBSkJDR29RL1FjaUJrRUJPZ0FSUVFBaEF3TkFJQUlReUFFZ0EwRUJjaUlIVFFSQUlBQWdBQ0FHS0FJSUlBWW9BZ3dRK2hrb0FoZ1FmRUhvQVdvZ0FVRWNhaENuQkF3REJTQUNJQU1RT0NFTEFrQWdBQ0FDSUFjUU9CQjhJZ2RGRFFBZ0J5Z0NDRUYvUmcwQUlBRkJJR29nQ3lBSkVQa1pJQVlnQnlnQ0NDSUlJQVlvQWdnaURpQUlJQTVKR3pZQ0NDQUdJQVlvQWd3aURpQUlJQWdnRGtrYk5nSU1JQUVnQ3pZQ0JDQUJJQUVvQWh3MkFnQWdCMEc4QVdvZ0FSRDRHUXNnQTBFQ2FpRUREQUVMQUFzQUN5QUJJQWsyQWdRZ0FVSFEzUkkyQWdBZ0FTQUJOZ0lRSUFFZ0FVRWdhallDQ0NNQVFTQnJJZ01rQUNBRElBRTJBZ3dnQTBINDJCSTJBZ2dnQXlBRFFRaHFJZ1kyQWhnZ0FpQUdFUEFPR2lBR0VCWWdBMEVnYWlRQUlBRVFGZ3NnQWtFRWFpRUREQUVMQUFzQUN3QUxJQXdvQWd3b0FnUWlBaWdDRkNJRFFaTUJSeUFEUWM4QVIzRkZCRUFnQVVFb2FpSURJQUpCQUJDVEN5QURJQUpCQVJDVEN3c2dBQ2dDQUNBQ0VQZ0tSUTBCUVFJaEF3SkFBa0FnQWtFQkVEaEJ4Z0JyRGdJQkFBTUxJQUZCS0dvZ0FrRUNFSk1MUVFNaEF3c2dBVUVvYWlBQ0lBTVFrd3NNQVFzTEl3QkI0QUJySWdFa0FBSi9Ba0FnQUNnQ0hDZ0NBQzBBQUVVTkFDQUFRY0FHYWlFRklBQW9BaVFvQWxRb0FnQWlBMEVNYWlFR0lBTkJFR29oQXdOQUlBWWdBeWdDQUNJRFJ3UkFJQU1vQWhSQk8wWUVRQ0FBSUFNUWt3OGhBaUFBS0FJY0tBSUFMUUFBUlEwRFFRQWhEQ0FERU1nQlFRSlBCRUFnQVVFSWFpQUFLQUlBSUFOQkFSQTRFTnNGSUFFb0Fnd2lERVVOQkFzZ0FDZ0NBQ0VISUFNUVlDRUlJQUZDQURjRE9DQUJRZ0EzQXpBZ0FVSUFOd01vSUFGQ0FEY0RJQ0FCUWdBM0ExQWdBVUtBZ0lDQWdBRTNBa1FnQVNBQlFTQnFJZ1EyQWtBZ0J5QUlRUUJCQUNBQ0lBd2dCQkQ1Q2lFSElBUVFJeUFCSUFjMkFsd2dBVUVBTmdJWUlBRkNBRGNERUNBQlFnQTNBd2dnQUNBQUlBRkJDR29pQkNBQlFkd0FhaENTQ3hESkFSb2dBU0FBS0FJRUlBSkJBRUVBRUpzTE5nSUVJQUVnQXhCZ05nSUFJQVFnQlNBQklBRkJCR29RN2dnTElBTkJCR29oQXd3QkN3c2dBQ2dDSENnQ0FDMEFBRUVBUnd3QkMwRUFDeUVESUFGQjRBQnFKQUFnQTBVTkFDTUFRYkFCYXlJTUpBQWdBQ2dDd0FkRkJFQWdERUc1b1FWQnl4UkJCeUFNUWFBQmFoQWRJZ0VRRnlJRFFSaHFRYmZrQ0JBT0dpQURFQmdnQVJBZUN5QUFLQUs4QnlnQ0FDSUJSUVJBSUF4QnVhRUZRYzBVUVFjZ0RFR2dBV29RSFNJREVCY2lBa0VZYWtHVXFBZ1FEaG9nQWhBWUlBTVFIZ3NnQVNnQ0ZBUkFJQXhCdWFFRlFjNFVRUWNnREVHZ0FXb1FIU0lERUJjaUFrRVlha0hzc1FnUURob2dBaEFZSUFNUUhnc2dBQ2dDdEFaQkFVY0VRQ0FNUWJtaEJVSFRGRUVISUF4Qm9BRnFFQjBpQXhBWElnSkJHR3BCbTljSUVBNGFJQUlRR0NBREVCNExJQUFvQXJBR0lBRTJBZ0FnQUNnQzdBWWhHU0FBS0FMb0JpRURBbjhDUUFOQUlBTWdHVVlOQVNBREtBSUFJUUVnQTBFRWFpRURJQUFnQVJCOElRWWpBRUdRQVdzaUNTUUFJQVpCQkdvaEFRSkFBa0FEUUNBQUtBSzBCaUlDQkVBZ0FDZ0NzQVlpQkNBQ1FRRnJJZ0pCNEFCc2FpSUZLQUlFSUFFb0FnQkhEUUlnQlNBQUtBSUlFSkVhSUFBZ0FDZ0N0QVpCQVdzaUFqWUN0QVlnQ1VFd2FpSUVJQUFvQXJBR0lBSkI0QUJzYWlJQ0VKY1BJQUlROHdnZ0JCRHpDQXdCQ3dzZ0FDZ0NIQ0lDS0FJQVFRQTZBQUFnQWtHL25Bb1FHU0FCRUM4b0FnQXRBQUJCQUVjaENBd0JDeUFKUW9DQWdJREFBRGNDSkNBSklBbEJFR28yQWlBZ0NTQUdLQUlnSWdvMkFnd2dCQ0FDUWVBQWJHb29BZ0FoQWdOQUlBSWdDa2NFUUNBSklBb29BaGdnQVNnQ0FFWUVmeUFKUVJCcUlBbEJER29RY1NBSktBSU1CU0FLQ3lnQ0FDSUtOZ0lNREFFTEN3SkFJQWtvQWlRaUFrRURUd1JBSUFBb0Fod2lBU2dDQUVFQU9nQUFJQUZCcGVZRUVCa29BZ0F0QUFCQkFFY2hDQXdCQ3lBSktBSWdJUWdDUUNBQ1FRSkhEUUFnQ0NnQ0FDZ0NGQ0VCSUFnb0FnUW9BaFFpQkVFRmEwRjlUUVJBSUFBb0Fod2lBaWdDQUVFQU9nQUFJQUpCOWNvS0VCa2hBaUFKSUFRMkFnd2dBaUFKUVF4cUVKRUZRZmZMQ2hBWklRSWdDU0FCTmdJSUlBSWdDVUVJYWhDUkJTZ0NBQzBBQUVFQVJ5RUlEQUlMSUFGQkJFWUVRQ0FBS0FJY0lnRW9BZ0JCQURvQUFDQUJRYUhOQXhBWktBSUFMUUFBUVFCSElRZ01BZ3NnQVVFRWEwRjhTdzBBSUFBb0Fod2lBU2dDQUVFQU9nQUFJQUZCb3JNQ0VCa29BZ0F0QUFCQkFFY2hDQXdCQ3lBSlFRQTZBQXdnQ0NBQ1FRSjBhaUVLUVFFaEZnSkFBbjhEUUNBSUlBcEhCRUFDUUFKQUFrQUNRQUpBQWtBZ0NrRUVheUlLS0FJQUlnVW9BaFFPQlFBREJBRUNCUXNnQUNnQ0hDSUJLQUlBUVFBNkFBQWdBVUdJNndBUUdRd0hDMEVBSVFnZ0FDQUZFUFlaUlEwSUlBQWdCaUFKUVF4cUVPd0lEUU1NQ0FzZ0JpMEFIQVJBUVFBaENDQUFJQVVROWhsRkRRZ2dBQ0FHSUFsQkRHb1E3QWdOQXd3SUN5TUFRU0JySWdJa0FBSi9Jd0JCc0FGcklnUWtBQ0FBS0FLMEJpSUJSUVJBSUFSQnVhRUZRWXdIUVFjZ0JFR2dBV29RSFNJQkVCY2lCMEVZYWtIajVBZ1FEaG9nQnhBWUlBRVFIaUFBS0FLMEJpRUJDeUFBS0FLd0JpQUJRZUFBYkdvaUFVRkFhaUVISUFGQkhHc29BZ0FpQVVVRVFDQUVRYm1oQlVHT0IwRUhJQVJCb0FGcUVCMGlBUkFYSWdoQkdHcEI0K0lJRUE0YUlBZ1FHQ0FCRUI0Z0J5Z0NKQ0VCQ3lBSEtBSWdJQUZCQW5ScVFRUnJLQUlBSVFFZ0JFR3dBV29rQUFKQUlBRUVRQ0FCS0FJRVFlamNFa1lOQVFzZ0FDZ0NIQ0lCS0FJQVFRQTZBQUFnQVVHOG5nTVFHUXdCQ3lBRktBSWNJUVFnQWlBQU5nSVFJQUlnQVRZQ0RDQUNRYXpkRWpZQ0NDQUNJQUpCQ0dvaUFUWUNHQ0FBSUFVZ0JDQUJFTmdFSUFFUUZpQUFLQUljQ3lnQ0FDMEFBQ0VCSUFKQklHb2tBQ0FCRFFJTUJnc2dBQ0FHSUFsQkRHb1E3QWhGRFFWQkFDRVdRUUFoQ0NNQVFmQUJheUlFSkFBZ0JpZ0NJQ0lMS0FJVVFRRkhCRUFnQkVIUUFHcEJ1YUVGUVpVV1FRY2dCQkFkSWdFUUZ5SUNRUmhxUWYyekNCQU9HaUFDRUJnZ0FSQWVDeUFMS0FJWUlBWW9BZ1JIQkVBZ0JFSFFBR3BCdWFFRlFaWVdRUWNnQkJBZElnRVFGeUlDUVJocVFjRFFDQkFPR2lBQ0VCZ2dBUkFlQ3lBR0tBS1FBU0VDSUFZb0Fvd0JJUTRnQmlnQ2lBRWhHRUVBSVFFZ0JFRkFheUFHUVpRQmFoQlVJZ2NvQWdRZ0J5MEFDeUlGSUFWQkdIUkJHSFZCQUVnYkJFQWdCQ0FBS0FJSUlnMUJCR29RMGc4MkFqZ2dCRUVBTmdKZ0lBUkNBRGNEV0NBRVFnQTNBMUFnQkNBQUlBUkIwQUJxSWhJUWpSbzJBalFqQUVGQWFpSUZKQUFnQlVLQWdJQ0F3QUEzQWpRZ0JTQUZRU0JxSWhFMkFqQWdCVUlBTndJVUlBVWdCQ2dDT0RZQ0VDQUZJQVFvQWpRMkFod2dCU0FOSUFjUTV3VTJBZ3dnRFNBTlFkZ0NhaUFGUVF4cUlBVkJFR29pRFNBTlFRUnlJQVZCR0dvZ0JVRWNhaUFSRUtrTElSRWdEUkREQ0NBRlFVQnJKQUFnQkNBUk5nSUFJQVJCQURZQ1lDQUVRZ0EzQTFnZ0JFSUFOd05RSUFBZ0FDQVNJQVFRa2dzUXlRRWFDeUFFUWRBQWFpQUFJQVlvQWdBUTF3UkJBQkE0RUpZRElBUWdCQ2dDVkNJRk5nSTRJQVVFUUNBQUlBUkJPR29RakJvaEJTQUNJZ0ZGQkVBZ0N5Z0NIQ0VCQ3lBR0tBS0FBU0VTSUFRZ0JpZ0NoQUVpRFVFRFJqb0FZU0FFSUFzMkFsd2dCQ0FGTmdKVUlBUWdBRFlDVUNBRUlBMUJBV3RCQWtrNkFHQWdCQ0FCTmdKWUlBNGdBU0FPR3lFUkFrQUNRQ0FTUVFGcklocEJBMGtOQUNBQUlBRVFmQ2dDQ0NBQUlCRVFmQ2dDQ0U4TkFDQUVRZEFBYWhEdkdRd0JDd0pBSUFKRkRRQWdDeWdDSENFVklBY29BZ1FnQnkwQUN5SUNJQUpCR0hSQkdIVkJBRWdiUlFSQUl3QkIwQUZySWdJa0FDQUFLQUswQmlJTlJRUkFJQUpCSUdwQnVhRUZRZkVHUVFjZ0FrSEFBV29RSFNJTkVCY2lGMEVZYWtIajVBZ1FEaG9nRnhBWUlBMFFIaUFBS0FLMEJpRU5DeUFBS0FLd0JpRVhJQUpCQURZQ01DQUNRZ0EzQXlnZ0FrSUFOd01nSUFJZ0FDQUNRU0JxRUkwYU5nTEFBU0FBSUFKQndBRnFFSXdhSVJzZ0Z5QU5RZUFBYkdwQjRBQnJLQUlBSVJjZ0FpQUFOZ0lRSUFJZ0d6WUNEQ0FDUVlUYUVqWUNDQ0FDSUFKQkNHb2lEVFlDR0NBQUlCY2dGU0FORU5nRUlBMFFGaUFDUWRBQmFpUUFEQUVMSUFBZ0J5QVZFSlVQQ3lBRVFkQUFhaER2R1FKQUlCaEZJQTVGY2cwQUlBY29BZ1FnQnkwQUN5SUNJQUpCR0hSQkdIVkJBRWdiUlEwQUlBQWdCeUFCRUpVUEN5QUVJQUEyQWlBZ0JDQUZOZ0ljSUFSQjNOc1NOZ0lZSUFRZ0JFRVlhaUlCTmdJb0lBQWdDeUFSSUFFUTJBUWdBUkFXSUJwQkFVMEVRQ0FFUVFBMkFoQWdCRUlBTndNSUlBUkNBRGNEQUNBQUlBQWdCQkNSQ3hESkFSb01BUXNnRWtFRFJ3MEFJQVJCQURZQ0VDQUVRZ0EzQXdnZ0JFSUFOd01BSUFBZ0FDQUVFSW9QRU1rQkdnc2dBQ2dDSENnQ0FDMEFBRUVBUnlFQkN5QUhFQThhSUFSQjhBRnFKQUFnQVEwQkRBWUxJQUFnQmlBSlFReHFFT3dJUlEwRVFRQWhGa0VBSVFoQkFDRU5Jd0JCZ0FOcklnVWtBQ0FHS0FJZ0lnNG9BaFJCQWtjRVFDQUZRZUFCYWtHNW9RVkJuQmRCQnlBRlFhQUJhaEFkSWdFUUZ5SUNRUmhxUWJtekNCQU9HaUFDRUJnZ0FSQWVDeUFPS0FJWUlBWW9BZ1JIQkVBZ0JVSGdBV3BCdWFFRlFaMFhRUWNnQlVHZ0FXb1FIU0lCRUJjaUFrRVlha0hBMEFnUURob2dBaEFZSUFFUUhndEJBQ0VCSUFWQjJBRnFJQUFnQmlnQ0FCRFhCQ0lDUVFBUU9CQ1dBd0pBSUFVb0F0Z0JSUTBBSUFVb0F0d0JJZ2RGRFFBZ0FDZ0N0QVlpQVVVRVFDQUZRZUFCYWtITHNnTkJpZ2xCQnlBRlFhQUJhaEFkSWdFUUZ5SUVRUmhxUWVQa0NCQU9HaUFFRUJnZ0FSQWVJQVVvQXR3QklRY2dBQ2dDdEFZaEFRc2dBQ2dDc0FZaEJFSEVBQkFWRUlzUElnc2dCellDSkNBTFFZRGNFallDQUNBTFFaRGNFallDQkNBTFFvQ0FnSURBQURjQ1BDQUxJQXRCS0dvaUdqWUNPQ0FFSUFGQkFXdEI0QUJzYWlJQklBc1E4Z2dDUUNBQktBSlFJZ1FnQVVIVUFHb2lCeWdDQUVrRVFDQUVJQXMyQWdBZ0FTQUVRUVJxTmdKUURBRUxJQVZCNEFGcUlBRkJ6QUJxSWhJZ0JDQUJLQUpNYTBFQ2RVRUJhaENMQkNBQktBSlFJQUVvQWt4clFRSjFJQWNRcHdJaUFTZ0NDQ0lFSUFzMkFnQWdBU0FFUVFScU5nSUlJQklnQVJEN0NDQUJFSjRMQ3lBT0tBSWNJUUVnQlVFQU5nTFFBU0FBSUE0Z0FTQUZRY0FCYWlJQkVOZ0VJQUVRRmlBRlFvQ0FnSURBQURjQ3RBRWdCU0FGUWFBQmFpSUJOZ0t3QVNBRklBQWdBa0VCRURnUWZEWUNuQUVnRGtFY2FpRVhJQUVnQlVHY0FXb1FjVUVDSVFjRFFDQUNFTWdCSUFkQkFYSWlBVTBFUUNBRktBS3dBU0VDSUFVb0FyUUJJUUZCQUNFSElBVkJBRFlDZ0FGQkFDRUVJQUZCZ1FGT0JFQWdCVUhnQVdvZ0FSRDFHU0FGS0FMa0FTRU5JQVZCZ0FGcUlBVW9BdUFCSWdRUWJBc2dBaUFDSUFGQkFuUnFJQUVnQkNBTkVPa0lJQVZCZ0FGcUVJc0JJQVVvQXJRQklRSkJBQ0VCQTBBZ0FpQUhSZ1JBSUFKRkJFQWdCVUhnQVdwQnVhRUZRY3dYUVFjZ0JVR0FBV29RSFNJQ0VCY2lCRUVZYWtHSzVBZ1FEaG9nQkJBWUlBSVFIZ3NnQlVHZ0FXb2dBVUVCYWhDZkRDQUZRUXhxSVJzZ0JVSDRBV29oSENBRktBSzBBU0VCQTBBZ0JVS0FnSUNBd0FBM0FwUUJJQVVvQXJBQklRUWdCU0FGUVlBQmFqWUNrQUVDUUNBRUlBRkJBV3NpQWtFQ2RDSWRhaWdDQUNJRUxRQjRCRUFnQkVISUFHb1FwUjBoQkNBRlFlQUJhaUlTUW9DQWdJREFBRGNDSkNBU0lCSTJBaUFnRWlBRVFTQnFFT29aSUFVb0FvQUNJZ1FoQnlBRUlBVW9Bb1FDUVFOMGFpRVJRUUFoRlVFQUlRMGpBRUVnYXlJRUpBQWdCRUVBTmdJUUlCRWdCMnNpSGtFRGRTRVlJQjVCZ1FoT0JFQWdCRUVJYWlBWUVQSVpJQVFvQWd3aERTQUVRUkJxSUFRb0FnZ2lGUkJzQ3lBSElCRWdCRUVZYWlBWUlCVWdEUkRnQ0NBRVFSQnFFSXNCSUFSQklHb2tBQ0FGS0FLQUFpSUhJQVVvQW9RQ1FRTjBhaUVWQTBBZ0J5QVZSZ1JBQWtBZ0JTZ0NuQUVpQkNBRktBS3dBU0FkYWlnQ0FFY05BQ0FFS0FJSUlnUWdEaWdDSUVrTkFDQU9LQUlrSUFSTkRRQWdCVUVBTmdKd0lBVkNBRGNEYUNBRlFnQTNBMkFnQlNBQUlBVkI0QUJxRU80Wk5nSklJQVZCZ0FGcUlBVkJ5QUJxRUhFTElCSVFJd3dEQlNBRklBY3BBd0ErQW53Q1FDQUZLQUxZQVJEM0NBUkFJQVZCQURZQ2NDQUZRZ0EzQTJnZ0JVSUFOd05nSUFWQkFEWUNXQ0FGUWdBM0ExQWdCVUlBTndOSUlBVkJBallDUkNBRklBQWdCVUhJQUdvZ0JVSDhBR29nQlVIRUFHb1E3UmsyQWx3TUFRc2dCVUVBTmdKd0lBVkNBRGNEYUNBRlFnQTNBMkFnQlVFQU5nSllJQVZDQURjRFVDQUZRZ0EzQTBnZ0JTQUZLQUo4TmdKRUlBVkJBVFlDUUNBRklBQW9BZ2dnQlVISUFHb2dCVUhFQUdvZ0JVRkFheEN6Q0RZQ1hBc2dBQ2dDQ0NFRUl3QkJFR3NpRFNRQUlBUVFIQ0FFSUFRb0FneEJBV29pRVRZQ0RDQU5JQkUyQWdnZ0JFR01BV29pRVNBUkVMOEJJQVFvQWdnZ0RTZ0NDQ0FGUWVBQWFpQUZLQUpjRUs4TUlnUVFLQ0FSSUJFb0FoaEJBV28yQWhnZ0RVRVFhaVFBSUFVZ0JEWUNlQ0FGUVlBQmFpQUZRZmdBYWhCeElBZEJDR29oQnd3QkN3QUxBQXNnQlVFQU5nTHdBU0FGUWdBM0ErZ0JJQVZDQURjRDRBRWdCU0FBSUFWQjRBRnFFTzRaTmdKZ0lBVkJnQUZxSUFWQjRBQnFFSEVMSUFVb0FwUUJSUVJBSUFWQjRBRnFRYm1oQlVIeUYwRUhJQVZCNEFCcUVCMGlCQkFYSVFjZ0hFRzU0d2dRRGhvZ0J4QVlJQVFRSGdzZ0JTZ0N0QUVnQVVzRWZ5QUZLQUt3QVNBQlFRSjBhaWdDQUVFRWFnVWdGd3NvQWdBaEJ5QUxLQUk4SVFFZ0JVRUFOZ0xnQVNBYUlBVkI0QUZxRUhFZ0JTQUJOZ0lJSUFVZ0N6WUNCQ0FGSUFBMkFnQWdHeUFGUVlBQmFpSU5FSjBNSVFRZ0JVRUFOZ0k0UVN3UUZTSUJRYkRjRWpZQ0FDQUJJQVVwQXdBM0FnUWdBU0FGS0FJSU5nSU1JQUZCRUdvZ0JCQ2VEQm9nQlNBQk5nSTRJQUFnRGlBSElBVkJLR29pQVJEWUJDQUJFQllnQkJCZUlBMFFYaUFDSWdFTkFBc2dBQ2dDSENnQ0FDMEFBRUVBUnlFQklBVkJvQUZxRUY0RklBVW9BckFCSWdRZ0FTQUVJQWRCQW5ScUtBSUFJZzBnQkNBQlFRSjBhaWdDQUVkcUlnRkJBblJxSUEwMkFnQWdCMEVCYWlFSERBRUxDd1VnQlNBQUlBSWdBUkE0RUh3MkF1QUJJQWRCQW1vaEJ5QUZRYUFCYWlBRlFlQUJhaEJ4REFFTEN3c2dCVUdBQTJva0FDQUJSUTBGQ3lBSktBSWdJUWdNQVFzTFFRQWhDQ0FBSUFZZ0NVRU1haERzQ0VVTkFpQVdCRUFqQUVIUUFXc2lBU1FBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JpZ0NBQkRYQkNJRUtBSVVRZmtCYXc0SEJBVUhBZ0FCQXdnTElBQW9BZ2doQWlBQlFRQTJBakFnQVVJQU53TW9JQUZDQURjRElDQUFJQUlnQVVFZ2FoRHNHUkRKQVJvTUJRc2dBVUVJYWlBQUlBUkJBQkE0RUpZRElBRW9BZ2hCQUVjZ0FTZ0NERUVBUjNFaUFrVU5CeUFBS0FJSUlRUWdBVUVBTmdJd0lBRkNBRGNES0NBQlFnQTNBeUFnQUNBRUlBRkJJR29nQVVFSWFrRUVjaENSRHhESkFSb01Cd3NnQUNnQ0NDRUNJQUZCQURZQ01DQUJRZ0EzQXlnZ0FVSUFOd01nSUFBZ0FpQUJRU0JxRUlVZkVNa0JHZ3dEQ3lBQUtBSVlJQUFvQWlRUWxBOFE2UUVpQWlBQ0tBSUFLQUlZRVFBQUJFQWdBQ2dDQ0NFQ0lBRkJBRFlDTUNBQlFnQTNBeWdnQVVJQU53TWdJQUFnQWlBQlFTQnFFT3daRU1rQkdnd0RDeUFBS0FJQUlBQW9BaVFRbEE5QkFCQ0ZBU0VDSUFBb0FnZ2hCQ0FCUVFBMkFqQWdBVUlBTndNb0lBRkNBRGNESUNBQklBQW9BZ0FnQWhDVEJEWUNDQ0FBSUFRZ0FVRWdhaUFCUVFocUVKRVBFTWtCR2d3Q0N5QUFJQUFnQmlBQUlBUkJBQkE0RUh3UTZ4a1F5UUVhREFFTFFRRWhBaUFCSUFSQkFSQTRJZ1UyQXN3QklBRWdCRUVDRURnaUJ6WUN5QUVnQlNBSFJnUkFJQUFnQUNBR0lBQWdCUkI4RU9zWkVNa0JHZ3dFQ3lBR1FTUnFJZ0lnQVVITUFXb1FuZ0lvQWd3aEJTQUNJQUZCeUFGcUVKNENLQUlNSVFjZ0FDQUJLQUxNQVJCOElRb2dBQ0FCS0FMSUFSQjhJUTVCQUNFQ0lBRkJJR29nQUNBRVFRQVFPQkNXQXlBQklBRW9BaVFpQ3pZQ3hBRWdDMFVOQXlBRlFRVkhJQWRCQlVkeFJRUkFJQUFvQWh3aUFpZ0NBRUVBT2dBQUlBSkJtNFlHRUJrb0FnQXRBQUJCQUVjaEFnd0VDd0pBSUFWQkFrY2dCMEVDUjNFTkFDQUdLQUlnSWdKRkRRQWdBaWdDRkVFRVJ3MEFBa0FnQUNBQ0tBSVlFSHdpQWlnQ0lDSUVCRUFnQkNnQ0ZFRUVSZzBCQ3lBQlFTQnFRYm1oQlVIdkdFRUhJQUZCQ0dvUUhTSUVFQmNpRFVFWWFrSFh1UWdRRGhvZ0RSQVlJQVFRSGdzZ0FpMEFIQTBBSUFWQkFrY2lBaUFIUVFKSGNrVUVRQ0FBS0FJY0lnSW9BZ0JCQURvQUFDQUNRZTNuQnhBWktBSUFMUUFBUVFCSElRSU1CUXNnQWtVRVFDQUJRUUEyQWpBZ0FVSUFOd01vSUFGQ0FEY0RJQ0FBSUFBb0FnZ2dBVUVnYWlBQlFjUUJhaER0SGhESkFSb01BZ3NnQVVFQU5nSXdJQUZDQURjREtDQUJRZ0EzQXlBZ0FVRUFOZ0lZSUFGQ0FEY0RFQ0FCUWdBM0F3Z2dBVUVFTmdJRUlBRWdBQ0FCUVFocUlBRkJCR29nQVVIRUFXb1EyQWMyQWh3Z0FDZ0NDQ0VDSXdCQkVHc2lCQ1FBSUFJUUhDQUNJQUlvQWd4QkFXb2lCVFlDRENBRUlBVTJBZ2dnQWtHTUFXb2lCU0FGRUw4QklBSW9BZ2dnQkNnQ0NDQUJRU0JxSUFFb0Fod1E3aDRpQWhBb0lBVWdCU2dDR0VFQmFqWUNHQ0FFUVJCcUpBQWdBQ0FDRU1rQkdnd0JDeUFCUVNCcUlnSVFWU0FBSUFZZ0NpQUNFSWtQSVFRZ0FDQUdJQTRnQWhDSkR5RUZJd0JCa0FGcklnSWtBQ0FDSUFRMkFvZ0JJQUlnQ3pZQ2pBRkJBQ0VISUFRZ0JYSUVRQ0FDUW9DQWdJQ0FBVGNDZkNBQ0lBSkIyQUJxTmdKNElBUUVRQ0FDUWRnQWFpQUNRWWdCYWhBa0N5QUNRUUEyQWpBZ0FrSUFOd01vSUFKQ0FEY0RJQ0FDSUFBZ0FrRWdhaUFDUWRnQWFoRGFCellDVkNBQ1FRQTJBbEFnQlFSQUlBSkJBVFlDSENBQ0lBVTJBaFFnQWlBQ1FSUnFOZ0lZSUFJZ0Fpa0RHRGNEQ0NBQ1FTQnFJQUpCQ0dvUXNna2hCaUFBS0FJSUlRVWpBRUVRYXlJSEpBQWdCUkFjSUFVZ0JTZ0NERUVCYWlJRU5nSU1JQWNnQkRZQ0NDTUFRUkJySWdRa0FDQUZRWXdCYWlJTEVMMEtJUW9nQnlnQ0NDRU9JQVVvQWdnaERTQUVJQVpCSUdvMkFnZ2dCaWdDSUNFU0lBUkJBRG9BQkNBRVFjQ2NJRFlDQUNBRUlBWWdFa2M2QUF3Z0N5QUtJQTBnRGlBRlFkZ0NhaUFFUVFocUlBUVFnQXdpQlJBb0lBc2dDeWdDR0VFQmFqWUNHQ0FFUVJCcUpBQWdCMEVRYWlRQUlBSWdCVFlDVUNBR0VDTUxJQUpCQURZQ01DQUNRZ0EzQXlnZ0FrSUFOd01nSUFBb0FnZ2dBa0VnYWlBQ1FZd0JhaUFDUWRRQWFpQUNRZEFBYWhEbkdTRUhJQUpCMkFCcUVDTUxJQUpCa0FGcUpBQWdBQ0FIRU1rQkdpQUJLQUlrSUFFdEFDc2lBaUFDUVJoMFFSaDFRUUJJR3dSQUlBQWdBVUVnYWlBQUtBS3dCaUFBS0FLMEJrSGdBR3hxUWR3QWF5Z0NBQkNWRHdzZ0FVRWdhaEFQR2d0QkFTRUNEQUlMSUFBb0Fod2lBaWdDQUVFQU9nQUFJQUpCMWFRTUVCa2hBaUFCUVNCcUlnVWdCQkJZSUFJZ0JSQk5LQUlBTFFBQVFRQkhJUUlnQlJBUEdnd0JDeUFBS0FJY0tBSUFMUUFBUVFCSElRSUxJQUZCMEFGcUpBQWdBa1VOQXdzZ0FDZ0NIQXNvQWdBdEFBQkJBRWNoQ0F3QkMwRUFJUWdMSUFsQkVHb1FYZ3NnQ1VHUUFXb2tBQ0FJRFFBTFFRQU1BUXNnQUNnQ0hDZ0NBQzBBQUVFQVJ3c2hBU0FNUWJBQmFpUUFJQUZGRFFBZ0FDZ0NIQ2dDQUMwQUFFRUFSeUVmQ3dKQUlCOUZEUUFnQUNnQ3RBWkJBVWNFUUNBQUtBSWNJZ0VvQWdCQkFEb0FBQ0FCUWN6aUNSQVpJUUVnRkNBQUtBSzBCallDSUNBQklCUkJJR29RTHhvTUFRc2dBQ2dDc0FZZ0FDZ0NDQkNSR2lBQUtBS3dCaUVCSUJSQkFEWUNNQ0FVUWdBM0F5Z2dGRUlBTndNZ0lBQWdGRUVnYWlBQlFTQnFFTm9ISVE4Z0FFRXdhaENUR2lBQUtBSzhCeWdDQUNFQklCUkJBRFlDR0NBQUlBRkJBQ0FVUVFocUlnRVEyQVFnQVJBV0N5QVVRZEFCYWlRQUlCQWdEellDR0NBUFJRMENJQUFvQWdnaEF5QVFJQkJCaUFKcU5nSVFJQkFnRUNnQ2lBSWdFRUhvQVdwSE9nQVVJQkFvQXBRQ0lnRWdBeUFCS0FJQUtBSUlFUUVBSVFJZ0VFRUFPZ0FFSUJCQndKd2dOZ0lBSUJBZ0VFRzRBbW8yQWdnZ0VDQVFLQUs0QWlBUVFaZ0Nha2M2QUF3akFFRVFheUlCSkFBZ0FTQUNOZ0lJSUFFZ0VDZ0NHRFlDQkNBQklBTWdFRUhjQVdvUTV3VTJBZ0FnQXlBUVFjZ0JhaUFCSUJCQkVHb2dBVUVJYWlBQlFRUnFJQkJCQ0dvZ0VCQytDaUVDSUFNUThnSWdBaEQrQ2lBQlFSQnFKQUFnQUNnQ3lBY2lBMFVOQVFzZ0F5Z0NHQ0FETFFBZklnRWdBVUVZZEVFWWRVRUFTQnRGRFFBakFFSHdCMnNpQVNRQUlBRkJBRFlDNkFjZ0FVSUFOd1BnQnlBQlFnQTNBOWdISUFGQ2dJQ0FnSUFCTndMTUJ5QUJJQUZCcUFkcU5nTElCeUFCUWFBR2FoRERHU0FCSUFFb0F1Z0hOZ0t3QmlBQklBRXBBK0FITndPb0JpQUJJQUVwQTlnSE53T2dCaUFCUWJRR2FpQUFLQUxJQnhEZ0FpQUJRUUEyQXBnR0lBQW9Bc2dISWdOQlFHc29BZ0FpRXlBREtBSkVRUUowYWlFSUlBRkJ3QVpxSVFVZ0FVR1FCV29oQkFKQUFrQUNRQU5BSUFnZ0UwY0VRQ0FBS0FJUUlCTW9BZ0FpQXhDVUFTSUNSUVJBSUFGQitBUnFRYm1oQlVIbUNVRUhJQUZCd0FScUVCMGlCaEFYSVE4Z0JFSEpxUWdRRGhvZ0R4QVlJQVlRSGdzZ0FpZ0NGRUU3UndSQUlBRkIrQVJxUWJtaEJVSG5DVUVISUFGQndBUnFFQjBpQmhBWElROGdCRUg3dmdnUURob2dEeEFZSUFZUUhnc2dBU0FBSUFJUWt3OGlBallDaUFNZ0FVSUFOd1B3QkNBQlFvQ0FnSUNBQVRjQzVBUWdBU0FCUWNBRWFpSUdOZ0xnQkFKQUlBQW9BZ0FnQXlBQlFZZ0RhaUFHUVFFUTJ3aEZCRUFnQUNnQ0hDZ0NBQzBBQUEwQkRBUUxJQUZCb0FKcUlBQW9BaUFnQXhEVEJ4QlVJUVlDUUNBQkxRRHdCRUVCY1FSQUlBSVE3Z01ReUFNaUEwRUFJQU1vQWdSQjJNd1NSaHNpRDBVRVFDQUJRZmdFYWtHNW9RVkIvd2xCQnlBQlFkQUNhaEFkSWdNUUZ5RUhJQVJCamJzSUVBNGFJQWNRR0NBREVCNExJQUZCc0FScUlBWVFWQ0VESUFGQkFUWUMvQU1nQVVFQU5nTDRCQ0FCSUFGQitBUnFOZ0w0QXlBQklBRXBBL2dETndNZ0lBQWdBeUFDSUFGQmdBUnFJQUZCSUdvUWlSb2lBaUFQS0FJSUlBRW9Bb2dESUFGQndBUnFJQVVnQVVHb0Iyb1E4UWdoRHlBQ0VDTU1BUXNnQVVIb0Eyb2dCaEJVSVFNZ0FVSUFOd1BRQXlBQlFnQTNBOGdESUFGQ0FEY0R3QU1nQVVJQU53TzRBeUFCUW9DQWdJQ0FBVGNDM0FNZ0FTQUJRYmdEYWlJSE5nTFlBeUFBSUFNZ0FpQUhJQUlnQVNnQ2lBTWdBVUhBQkdvZ0JTQUJRYWdIYWhEeENDRVBJQWNRSXdzZ0F4QVBHaUFHRUE4YUlBOUZEUU1MSUJOQkJHb2hFeUFCUWNBRWFoQWpEQUVMQ3lBQklBQW9BZ2dpQWlFaElBRkIyQWRxSWdRaElDQUFLQUxJQjBFVWFpRUdJd0JCRUdzaUF5UUFJQU1nQWlBR0VOSUNOZ0lNSUFJZ0JDQURRUXhxRVBzWUlRSWdBMEVRYWlRQUlDRWdJQ0FDRUpJUE5nTDRCQ0FCUWFnSGFpQUJRZmdFYWhBa0FrQUNRQ0FBS0FMSUJ5SUNLQUp3UlFSQUlBQW9BZ1FRbkFzYUlBQW9BZ2dhSUFGQkFEWUNtQVlNQVFzZ0FDZ0NJQ0VFSUFGQitBUnFJZ01nQWtHL0xSQzRBaUFCUWFnRGFpSUNJQVFnQXhEbEJTQURFQThhSUFBb0FnZ2lCQkFjSUFFZ0FTZ0NyQU1nQVMwQXN3TWlCaUFHUVJoMFFSaDFRUUJJSWdZYk5nS0VBeUFCSUFFb0FxZ0RJQUlnQmhzMkFvQURJQUVnQVNrRGdBTTNBeGdnQVVHSUEyb2dCRUdJQW1vZ0FVRVlhaENZQXlBQlFvQ0FnSUNBQVRjQzlBSWdBU0FCUWRBQ2FqWUM4QUlnQVVLQWdJQ0FnQUUzQXNRQ0lBRWdBVUdnQW1vMkFzQUNJQUFvQXNnSElnSW9BbXdpRXlBQ0tBSndRUUowYWlFSUlBTkJCSEloQ1NBQlFaQUZhaUVFSUFBb0FnQWhDd05BSUFnZ0UwY0VRQUpBSUJNb0FnQWlBeUFMS0FLOEJrWUVRQ0FBS0FJRUlnSWdBaENXQlVFRUVQOENJUUlnQVVIQUJHb2dBQ2dDSUNBREVOTUhFRlFoQXlBQ0lBQW9BZ2dpQmlBQ0tBSUFLQUlJRVFFQUlROGdBQ2dDQ0NFQ0lBRkJDVFlDakFJZ0FpQUJRZGdIYWlBQlFZd0NhaENJR2lFQ0lBRkJBVFlDbEFJZ0FTQUNOZ0tBQWlBQklBRkJnQUpxTmdLUUFpQUJJQUVwQTVBQ053TUlJQUZCK0FScUlnY2dBVUVJYWhDWEFpRUNJQUVnQ1RZQ21BSWdBU0FDSUFFb0F2d0VSem9BbkFJZ0FTQUdJQU1nRHlBQlFaZ0NhaEN1RHpZQzhBRWdBVUhRQW1vZ0FVSHdBV29RSkNBQ0VLZ0JJQUVnQUNnQ0NDQURFTklDTmdMNEJDQUJRYUFDYWlBSEVDUWdBeEFQR2d3QkN5QUFLQUlRSUFNUWxBRWlBa1VFUUNBQlFmZ0Vha0c1b1FWQnJ3cEJCeUFCUWNBRWFoQWRJZ1lRRnlFUElBUkJ5YWtJRUE0YUlBOFFHQ0FHRUI0TElBSW9BaFJCTzBjRVFDQUJRZmdFYWtHNW9RVkJzQXBCQnlBQlFjQUVhaEFkSWdZUUZ5RVBJQVJCKzc0SUVBNGFJQThRR0NBR0VCNExJQUVnQUNBQ0VKTVBJZ0kyQW93Q0lBRkNBRGNEOEFRZ0FVS0FnSUNBZ0FFM0F1UUVJQUVnQVVIQUJHb2lCallDNEFRZ0FDZ0NBQ0FESUFGQmpBSnFJQVpCQVJEYkNFVUVRQ0FBS0FJY0tBSUFMUUFBSVFNZ0FVSEFCR29RSXlBRERRRWdBVUdnQW1vUUl5QUJRZEFDYWhBaklBRkJxQU5xRUE4YURBY0xJQUZCZ0FKcUlBQW9BaUFnQXhEVEJ4QlVJUVlDUUNBQkxRRHdCRUVCY1FSQUlBSVE3Z01ReUFNaUEwRUFJQU1vQWdSQjJNd1NSaHNpQTBVRVFDQUJRZmdFYWtHNW9RVkJ4UXBCQnlBQlFmQUJhaEFkSWc4UUZ5RUhJQVJCamJzSUVBNGFJQWNRR0NBUEVCNExJQUZCNEFGcUlBWVFWQ0VQSUFGQkFUWUNyQUVnQVVFQU5nTDRCQ0FCSUFGQitBUnFOZ0tvQVNBQklBRXBBNmdCTndNUUlBQWdEeUFDSUFGQnNBRnFJQUZCRUdvUWlSb2lBaUFES0FJSUlBRW9Bb3dDSUFGQndBUnFJQUZCMEFKcUlBRkJvQUpxRVBBSUlRTWdBaEFqREFFTElBRkJtQUZxSUFZUVZDRVBJQUZDQURjRGdBRWdBVUlBTndONElBRkNBRGNEY0NBQlFnQTNBMmdnQVVLQWdJQ0FnQUUzQW93QklBRWdBVUhvQUdvaUJ6WUNpQUVnQUNBUElBSWdCeUFDSUFFb0Fvd0NJQUZCd0FScUlBRkIwQUpxSUFGQm9BSnFFUEFJSVFNZ0J4QWpDeUFQRUE4YUlBWVFEeG9nQVVIQUJHb1FJeUFEUlEwRUN5QVRRUVJxSVJNTUFRc0xBa0FnQVNnQzlBSkZCRUFnQUNnQ0JCQ2NDeG9nQUNnQ0NCb2dBVUVBTmdLWUJnd0JDeUFCUVFBMkFvZ0ZJQUZDQURjRGdBVWdBVUlBTndQNEJDQUJJQUFvQWdnZ0FVR0lBMm9pRHhEekFqWUN3QVFnQUNnQ0NDRUNJd0JCRUdzaUJDUUFJQUlRSENBQ0lBSW9BZ3hCQVdvaUF6WUNEQ0FFSUFNMkFnZ2pBRUVRYXlJREpBQWdBa0dNQVdvaUJoQ1hEQ0VUSUFGQndBUnFJZ2NvQWdBaENDQUVLQUlJSVFrZ0FpZ0NDQ0VDSUFOQkFEb0FEQ0FESUFGQjhBSnFOZ0lJSUFOQkFEb0FCQ0FEUWNDY0lEWUNBQ0FHSUJNZ0FpQUpJQUZCK0FScUloTWdDQ0FEUVFocUlBTVFtQXdpQWhBb0lBWWdCaWdDR0VFQmFqWUNHQ0FEUVJCcUpBQWdCRUVRYWlRQUlBQW9BZ0FnQVVISUFHb2dEeEJXSUFJUStRNGdBU0FBS0FJSVFRUnFJQUlvQWlSQkpHb1F5d1kyQXBnR0lBRWdBQ2dDQ0NJRElBRkIyQWRxSWdJZ0FVR1lCbW9nQVVHZ0Ftb1FsUVEyQXNBRUlBRWdBeUFDSUFjUWtRODJBdmdFSUFGQnFBZHFJQk1RSkFzZ0FVR2dBbW9RSXlBQlFkQUNhaEFqSUFGQnFBTnFFQThhQzBFQklROGdBQ2dDQ0NBQlFkZ0hhaUFBS0FMSUIwRU1haEQvRVNFRElBRkJBVFlDUkNBQklBTTJBc0FFSUFFZ0FVSEFCR28yQWtBZ0FTQUJLUU5BTndNQUlBRkIrQVJxSUFFUXRRSWhBZ0pBSUFBb0FzZ0hJZ01vQWd4QkFrY05BQ0FES0FKNElnUkZEUUFnQXlnQ2ZFVU5BQ0FES0FLQUFVVU5BQ0FBS0FJSUlRWWdBU0FFTmdMQUJDQUJJQVlnQVVIQUJHb1Fxd1kyQXRBQ0lBRWdBeWdDZkNJRUJIOGdBQ2dDQ0NFR0lBRWdCRFlDd0FRZ0JpQUJRY0FFYWhDckJnVkJBQXMyQXFBQ0lBRWdBeWdDZ0FFaUF3Ui9JQUFvQWdnaEJDQUJJQU0yQXNBRUlBUWdBVUhBQkdvUXF3WUZRUUFMTmdLSUF5QUJRUUEyQXRBRUlBRkNBRGNEeUFRZ0FVSUFOd1BBQkNBQklBQW9BZ2dnQVVIQUJHb2dBVUhRQW1vZ0FVR2dBbW9nQVVHSUEyb1E5eGMyQXZBQklBSWdBVUh3QVdvUXNnTWdBQ2dDeUFjaEF3c2dBQ2dDQ0NFRUlBRWdBa0VJYWpZQ01DQUJJQUZCNEFacU5nSTRJQUVnQVNnQzRBWWdCVWM2QUR3Z0FpZ0NDQ0VBSUFGQkFEb0FMQ0FCUWNDY0lEWUNLQ0FCSUFBZ0FrYzZBRFFnQVNnQ21BWWhCU01BUVRCcklnQWtBQ0FBSUFVMkFpZ2dBQ0FCUWFnSGFpSUZRU0JxTmdJWUlBVW9BaUFoQmlBQVFRQTZBQlFnQUVIQW5DQTJBaEFnQUNBRklBWkhPZ0FjSUFBZ0JDQUFRUmhxSUFCQkVHb1FxUlkyQWlRZ0FDQUVJQU1RNXdVMkFnd2dCQ0FCUWRnSGFpQUFRUXhxSUFGQk9Hb2dBRUVvYWlBQVFTUnFJQUZCTUdvZ0FVRW9haEMrQ2lFRElBUVE4Z0lnQXhEK0NpQUFRVEJxSkFBZ0FoQ3FBUXdEQ3lBQlFhQUNhaEFqSUFGQjBBSnFFQ01nQVVHb0Eyb1FEeG9NQVFzZ0FVSEFCR29RSXd0QkFDRVBDeUFCUWFBR2FoREJHU0FCUWFnSGFoQWpJQUZCOEFkcUpBQWdEeUVUREFFTElBQW9BaHdvQWdBdEFBQkJBRWNoRXdzZ0VFSElBV29Rd1JrTElCQkIwQUpxSkFBZ0V3c09BQ0FBS0FJSUlBRWdBaER5RGd1VkFRRURmeU1BUWJBQmF5SUNKQUFnQUNnQ3RBWWlBMFVFUUNBQ1FjdXlBMEdLQ1VFSElBSkJvQUZxRUIwaUF4QVhJZ1JCR0dwQjQrUUlFQTRhSUFRUUdDQURFQjRnQUNnQ3RBWWhBd3NnQUNnQ3NBWWhCQ0FDUVRBUUZTQUJLQUlBRUpBYUlnQTJBZ0FnQkNBRFFlQUFiR29pQVVIZ0FHc2dBQkR5Q0NBQlFSUnJJQUlRamhvZ0FoQzNBaUFDUWJBQmFpUUFJQUFMS3dFQmZ5TUFRUkJySWdJa0FDQUNRUUU2QUE4Z0FDQUJJQUpCRDJvUWl4b2hBQ0FDUVJCcUpBQWdBQXVvQVFFRWZ5TUFRU0JySWdRa0FBSkFJQUFvQWdRaUFpQUFLQUlJU1FSQUlBRW9BZ0FoQXlBQlFRQTJBZ0FnQWlBRE5nSUFJQUFnQWtFRWFqWUNCQXdCQ3lBRVFRaHFJQUFnQWlBQUtBSUFhMEVDZFVFQmFoQ0xCQ0FBS0FJRUlBQW9BZ0JyUVFKMUlBQkJDR29RcHdJaUFpZ0NDQ0VESUFFb0FnQWhCU0FCUVFBMkFnQWdBeUFGTmdJQUlBSWdBMEVFYWpZQ0NDQUFJQUlRK3dnZ0FoQ2VDd3NnQkVFZ2FpUUFDeWNBSUFBZ0FTZ0NBQ0FDS0FJQUlBTVEyUVFpQUVHbzlRODJBZ1FnQUVIYzlRODJBZ0FnQUFzcEFDQUFFSXNQSWdCQ0FEY0NLQ0FBSUFFMkFpUWdBRUhBMlJJMkFnUWdBRUdjMlJJMkFnQWdBQXZOQVFFRWZ5TUFRYkFCYXlJRUpBQWdBQzBBV0FSQUlBUkJ1YUVGUWNZR1FRY2dCRUdnQVdvUUhTSUNFQmNpQTBFWWFrR24xQWdRRGhvZ0F4QVlJQUlRSGd0QkFDRURBMEFnQUNnQ1JDQURUUVJBSUFBb0FoZ0VRQ0FBUVFocUlBQkJJR29RbGc4TElBQkJBVG9BV0NBRVFiQUJhaVFBRHdzZ0EwRUNkQ0lGSUFBb0FrQnFLQUlBSWdKQkFDQUNCSDhnQWlnQ0JFR3cxeElRU0FWQkFBc2JJZ0lFUUNBQ0lBRWdBaWdDQUNnQ0RCRUJBQ0VDSUFBb0FrQWdCV29nQWpZQ0FBc2dBMEVCYWlFRERBQUxBQXVyQVFFRGZ5QUFRWndIYWlJQkVQMFpJQUVnQVNnQ0lCQTJJQUJCaUFkcUlnSW9BZ2doQVFOQUlBRUVRQ0FCS0FJQUlRTWdBVUVNYWhDVkN5QUJFQjhnQXlFQkRBRUxDeUFDRUpzRElBQkI5QVpxSWdJb0FnZ2hBUU5BSUFFRVFDQUJLQUlBSVFNZ0FVRU1haENRRHlBQkVCOGdBeUVCREFFTEN5QUNFSnNESUFCQjZBWnFFRElhSUFCQjFBWnFFRThnQUVIQUJtb1FUeUFBUVRCcUlnQVFreG9nQUNBQUtBS0FCaEEyQ3pVQkFYOERRQ0FBS0FLRUJpQUJUUVJBSUFCQkFEWUNoQVlGSUFBb0FvQUdJQUZCNEFCc2FoRHpDQ0FCUVFGcUlRRU1BUXNMQzk4Q0FRSi9Jd0JCSUdzaUJDUUFJQUFnQVRZQ0FDQUFJQUZCSUdvMkFnZ2dBQ0FCUVpBRGFqWUNCQ0FBSUFFb0Fxd0ZJZ1UyQWd3Z0FDQUZFTUFHTmdJUUlBQWdBQ2dDREJDZkdUWUNGQ0FBS0FJTUVOOElJUVVnQUVJQU53UEFCaUFBUW9DQWdJQ0FBVGNDdEFZZ0FDQUFRVEJxTmdLd0JpQUFRZ0EzQXlnZ0FDQUNOZ0lrSUFBZ0FVSElCR28yQWlBZ0FDQUJRYWdFYWpZQ0hDQUFJQVUyQWhnZ0FFSUFOd1BJQmlBQVFnQTNBdFFHSUFCQmdJQ0EvQU0yQXRBR0lBQkNBRGNDM0FZZ0FFSUFOd1BvQmlBQVFZQ0FnUHdETmdMa0JpQUFRZ0EzQS9BR0lBQkNBRGNEK0FZZ0FFRUFOZ0tBQnlBQVFnQTNBNGdISUFCQmdJQ0EvQU0yQW9RSElBQkNBRGNEa0FjZ0FFR0FnSUQ4QXpZQ21BY2dBRUtBZ0lDQWdBRTNBOEFISUFBZ0F6WUN5QWNnQUNBQVFad0hhallDdkFjZ0JFRUFOZ0lZSUFCQkFFRUFJQVJCQ0dvaUFSRFlCQ0FCRUJZZ0JFRWdhaVFBSUFBTEdRQWdBRUhXcXRXcUFVOEVRQkQ3QVFBTElBQkJER3dRRlF0V0FRRi9Jd0JCc0FGcklnTWtBQ0FBSUFJMkFnUWdBQ0FCTmdJQUlBSkZCRUFnQTBHY3F3VkJIa0VBSUFOQm9BRnFFQjBpQVJBWElnSkJHR3BCaHEwSUVBNGFJQUlRR0NBQkVCNExJQU5Cc0FGcUpBQWdBQXNiQUNBQUtBSUFCRUFnQUNBQUtBSUFFSm9hSUFBb0FnQVFId3NMc3dFQkJuOGdBUkRPQmlFRUFrQWdBQ2dDQkNJRFJRMEFJQUFvQWdBQ2Z5QURRUUZySUFSeElBTnBJZ0pCQVUwTkFCb2dCQ0FESUFSTERRQWFJQVFnQTNBTElnVkJBblJxS0FJQUlnQkZEUUFnQTBFQmF5RUdJQUpCQVVzaEJ3TkFJQUFvQWdBaUFFVU5BU0FFSUFBb0FnUWlBa2NFUUFKQUlBZEZCRUFnQWlBR2NTRUNEQUVMSUFJZ0Ewa05BQ0FDSUFOd0lRSUxJQUlnQlVjTkFnd0JDeUFBUVFocUlBRVE4Z05GRFFBTElBQVBDMEVBQzVJQkFRVi9Jd0JCb0FGcklnTWtBQUpBSUFFb0FnQWdBaENZR2tVRVFDQUFJQUlRVkJvTUFRc2dBQkJWSUFOQkhHb2hCaUFEUVJocUlRUkJBU0VGQTBBZ0EwRVFhaEJKSVFjZ0JDQUNFQklhSUFSQnNiMEZFQTRhSUFRZ0JSQWhHaUFESUFZUVFpQUFJQU1RbmdFZ0F4QVBHaUFIRUZFZ0JVRUJhaUVGSUFFb0FnQWdBQkNZR2cwQUN3c2dBMEdnQVdva0FBc3BBUUYvSUFBb0FnUWhBZ05BSUFFZ0FrWkZCRUFnQWtFTWF4QVBJUUlNQVFzTElBQWdBVFlDQkF2RUF3RUVmeUFCSUFBb0FnUWdBQ2dDQUNJRGEwRU1iU0lDU3dSQUl3QkJJR3NpQkNRQUFrQWdBU0FDYXlJRElBQW9BZ2dnQUNnQ0JDSUJhMEVNYlUwRVFDQUFLQUlFSWdFZ0EwRU1iR29oQWdOQUlBRWdBa1lFUUNBQUlBSTJBZ1FGSUFFUVZTQUJRUXhxSVFFTUFRc0xEQUVMSUFSQkNHb2dBQ0FCSUFBb0FnQnJRUXh0SUFOcUVKb1BJQUFvQWdRZ0FDZ0NBR3RCREcwZ0FFRUlhaENaRHlJQktBSUlJZ0lnQTBFTWJHb2hBd05BSUFJZ0EwY0VRQ0FDRUZVZ0FrRU1haUVDREFFTEN5QUJJQU0yQWdnZ0FDZ0NBQ0VESUFBb0FnUWhBZ05BSUFJZ0EwY0VRQ0FCS0FJRVFReHJJZ1VnQWtFTWF5SUNLUUlBTndJQUlBVWdBaWdDQ0RZQ0NDQUNFRlVnQVNBQktBSUVRUXhyTmdJRURBRUxDeUFBS0FJQUlRSWdBQ0FCS0FJRU5nSUFJQUVnQWpZQ0JDQUFLQUlFSVFJZ0FDQUJLQUlJTmdJRUlBRWdBallDQ0NBQUtBSUlJUUlnQUNBQktBSU1OZ0lJSUFFZ0FqWUNEQ0FCSUFFb0FnUTJBZ0FnQVNnQ0JDRUFBMEFnQUNBQktBSUlJZ0pIQkVBZ0FTQUNRUXhySWdJMkFnZ2dBaEFQR2d3QkN3c2dBU2dDQUNJQUJFQWdBQkFmQ3dzZ0JFRWdhaVFBRHdzZ0FTQUNTUVJBSUFBZ0F5QUJRUXhzYWhDYUdnc0xrQVVDQ1g4Q2ZTTUFRU0JySWdja0FDQUhJQUUyQWhBZ0IwRVFhaUVJSXdCQkVHc2lCU1FBSUFFb0FnQWhBU0FIQW44Q1FDQUFLQUlFSWdKRkRRQWdBQ2dDQUFKL0lBSkJBV3NnQVhFZ0Fta2lCa0VCVFEwQUdpQUJJQUVnQWtrTkFCb2dBU0FDY0FzaUEwRUNkR29vQWdBaUJFVU5BQ0FDUVFGcklRa2dCa0VCU3lFS0EwQWdCQ2dDQUNJRVJRMEJJQUVnQkNnQ0JDSUdSd1JBQWtBZ0NrVUVRQ0FHSUFseElRWU1BUXNnQWlBR1N3MEFJQVlnQW5BaEJnc2dBeUFHUncwQ0N5QUVLQUlJSUFGSERRQUxRUUFNQVFzZ0JTQUFJQUVnQ0JEMENBSkFRUUFnQWlBQUtBSU1RUUZxc3lJTElBQXFBaEFpRENBQ3M1UmVHdzBBSUFBZ0FpQUNRUUZyY1VFQVJ5QUNRUU5KY2lBQ1FRRjBjaUlEQW44Z0N5QU1sWTBpQzBNQUFJQlBYU0FMUXdBQUFBQmdjUVJBSUF1cERBRUxRUUFMSWdJZ0FpQURTUnNRd3dFZ0FDZ0NCQ0lDSUFKQkFXdHhSUVJBSUFKQkFXc2dBWEVoQXd3QkN5QUJJQUpKQkVBZ0FTRUREQUVMSUFFZ0FuQWhBd3NDUUNBRFFRSjBJZ01nQUNnQ0FHb29BZ0FpQVVVRVFDQUZLQUlBSUFBb0FnZzJBZ0FnQUNBRktBSUFOZ0lJSUFBb0FnQWdBMm9nQUVFSWFqWUNBQ0FGS0FJQUlnRW9BZ0FpQTBVTkFTQURLQUlFSVFRQ1FDQUNJQUpCQVdzaUEzRkZCRUFnQXlBRWNTRUVEQUVMSUFJZ0JFc05BQ0FFSUFKd0lRUUxJQUFvQWdBZ0JFRUNkR29nQVRZQ0FBd0JDeUFGS0FJQUlBRW9BZ0EyQWdBZ0FTQUZLQUlBTmdJQUN5QUZLQUlBSVFRZ0JVRUFOZ0lBSUFBZ0FDZ0NERUVCYWpZQ0RDQUZLQUlBSVFBZ0JVRUFOZ0lBSUFBRVFDQUZMUUFJQkVBZ0FFRU1haENYR2dzZ0FBUkFJQUFRSHdzTFFRRUxPZ0FjSUFjZ0JEWUNHQ0FGUVJCcUpBQWdCeWdDR0NFQUlBZEJJR29rQUNBQVFReHFDNUlDQVFkL0l3QkJ3QUZySWdNa0FDQURRYkFCYWhCVklBTkJER29oQ0NBRFFRaHFJUVlnQVVIRUFHb2dBaENmRHlFRUFrQURRQ0FFS0FJQVFYOUhCRUFnQXhCSklRY2dCaUFDRUJJYUlBUW9BZ0FFUUNBR1FiRzlCUkFPR2lBSElBUVF5d01hQ3lBRFFhQUJhaUlGSUFnUVFpQURRYkFCYWlJSklBVVFuZ0VnQlJBUEdnSkFJQUVnQ1JEMURpSUZSUVJBSUFBZ0F5a0RzQUUzQWdBZ0FDQURLQUs0QVRZQ0NDQURRYkFCYWhCVkRBRUxJQVFnQkNnQ0FFRUJhallDQUFzZ0J4QlJJQVVOQVF3Q0N3c2dBMEdoblFWQjZRRkJCeUFEUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRYmU2Q0JBT0dpQUNFQmdnQVJBZUlBQkJ4dUFHRUJRYUN5QURRYkFCYWhBUEdpQURRY0FCYWlRQUM0QUNBUVovSXdCQklHc2lBeVFBQWtBZ0FTZ0NCQ0FCTFFBTElnSWdBa0VZZEVFWWRVRUFTQnRGQkVBZ0FFSEpDQkFVR2d3QkN5QUFFRlVnQTBFUWFrR0w2d1lRRkNFR0lBTkIxK29HRUJRaEJBSkFJQVlnQVNnQ0FDQUJJQUVzQUF0QkFFZ2JMQUFBRU9jSlFYOUdCRUFnQkNBQktBSUFJQUVnQVN3QUMwRUFTQnNzQUFBUTV3bEJmMGNOQVFzZ0FFSGFKeERTQVFzZ0FTZ0NBQ0FCSUFFdEFBc2lCVUVZZEVFWWRVRUFTQ0lIR3lJQ0lBRW9BZ1FnQlNBSEcyb2hBUU5BSUFFZ0FrWkZCRUFnQUVIZkFDQUNMQUFBSWdVZ0JDQUZFT2NKUVg5R0d4Q2tBU0FDUVFGcUlRSU1BUXNMSUFRUUR4b2dCaEFQR2dzZ0EwRWdhaVFBQ3dvQUlBQkI0TXNTRUVnTENnQWdBRUd3eXhJUVNBdWJDd0lOZndKOUl3QkJNR3NpQnlRQUlBY2dBallDQ0NBSElBRTJBZ3dnQnlBRE5nSUVJQUFvQWdBaEJTQUhRUkJxSUFFZ0FpQURFTFVhSUFkQkdHb2dCMEVjYWlBSFFTQnFFTDhISVFZZ0JVR01BbW9oQ1FKQUFrQWdCU2dDa0FJaUEwVU5BQ0FKS0FJQUFuOGdBMEVCYXlBR2NTQURhU0lCUVFGTkRRQWFJQVlnQXlBR1N3MEFHaUFHSUFOd0N5SUFRUUowYWlnQ0FDSUNSUTBBSUFOQkFXc2hDQ0FIS0FJZ0lRUWdCeWdDSENFS0lBY29BaGdoRENBQlFRRkxJUTBEUUNBQ0tBSUFJZ0pGRFFFZ0JpQUNLQUlFSWdGSEJFQUNRQ0FOUlFSQUlBRWdDSEVoQVF3QkN5QUJJQU5KRFFBZ0FTQURjQ0VCQ3lBQUlBRkdEUUVNQWdzZ0Fpa0NDRUlnaUtjaUN5Z0NDQ0FNUncwQUlBc29BZ3dnQ2tjTkFDQUxLQUlRSUFSSERRQUxEQUVMSUFWQjhBRnFJZ0VRcWdNaUFpQUhLQUlNSUFjb0FnZ2dCeWdDQkJDMUdpQUJJQUlRS0NBQklBRW9BaGhCQVdvMkFoZ2dBaUVMQWtBZ0JTZ0NrQUlpQTBVTkFDQUpLQUlBQW44Z0EwRUJheUFHY1NBRGFTSUJRUUZORFFBYUlBWWdBeUFHU3cwQUdpQUdJQU53Q3lJQVFRSjBhaWdDQUNJQ1JRMEFJQU5CQVdzaENDQUJRUUZMSVFRRFFDQUNLQUlBSWdKRkRRRWdCaUFDS0FJRUlnRkhCRUFDUUNBRVJRUkFJQUVnQ0hFaEFRd0JDeUFCSUFOSkRRQWdBU0FEY0NFQkN5QUFJQUZIRFFJTElBSW9BZ3dnQ3hEbUJVVU5BQXNNQVF0QkVCQVZJZ29nQmpZQ0JDQUtJQWF0SUF1dFFpQ0doRGNDQ0NBS1FRQTJBZ0FnQlVHVUFtb2hEQUpBUVFBZ0F5QUZLQUtZQWtFQmFyTWlFU0FGS2dLY0FpSVNJQU96bEY0YkRRQUNRQUpBQW45QkFpQURJQU5CQVd0eFFRQkhJQU5CQTBseUlBTkJBWFJ5SWdBQ2Z5QVJJQktWalNJUlF3QUFnRTlkSUJGREFBQUFBR0J4QkVBZ0Vha01BUXRCQUFzaUFTQUFJQUZMR3lJQVFRRkdEUUFhSUFBZ0FDQUFRUUZyY1VVTkFCb2dBQkIvQ3lJRUlBVW9BcEFDSWdCTkJFQWdBQ0FFVFEwQ0lBQkJBMGtoQWdKL0lBVW9BcGdDc3lBRktnS2NBcFdOSWhGREFBQ0FUMTBnRVVNQUFBQUFZSEVFUUNBUnFRd0JDMEVBQ3lFQklBQWdCQ0FDSUFCcFFRRkxjZ1IvSUFFUWZ3VWdBVUVCUVNBZ0FVRUJhMmRyZENBQlFRSkpHd3NpQUNBQUlBUkpHeUlFVFEwQ0lBUkZEUUVMSUFSQmdJQ0FnQVJKQkVBZ0NTQUVRUUowRUJVUWJDQUZJQVEyQXBBQ1FRQWhBZ05BSUFJZ0JFWUVRQ0FGS0FLVUFpSURSUTBFSUFNb0FnUWhDQUpBSUFScElnQkJBVTBFUUNBSUlBUkJBV3R4SVFnTUFRc2dCQ0FJU3cwQUlBZ2dCSEFoQ0FzZ0NTZ0NBQ0FJUVFKMGFpQU1OZ0lBSUFSQkFXc2hEeUFBUVFGTElSQURRQ0FES0FJQUlnQkZEUVVnQUNnQ0JDRUJBa0FnRUVVRVFDQUJJQTl4SVFFTUFRc2dBU0FFU1EwQUlBRWdCSEFoQVFzQ1FDQUJJQWhHRFFBZ0FDRUNJQUZCQW5RaURTQUpLQUlBYWlJT0tBSUFSUVJBSUE0Z0F6WUNBQ0FCSVFnTUFRc0RRQUpBSUFJaUFTZ0NBQ0lDUlFSQVFRQWhBZ3dCQ3lBQUtBSU1JQUlvQWd3UTVnVWhEaUFCS0FJQUlRSWdEZzBCQ3dzZ0F5QUNOZ0lBSUFFZ0NTZ0NBQ0FOYWlnQ0FDZ0NBRFlDQUNBSktBSUFJQTFxS0FJQUlBQTJBZ0FNQVFzZ0FDRUREQUFMQUFVZ0NTZ0NBQ0FDUVFKMGFrRUFOZ0lBSUFKQkFXb2hBZ3dCQ3dBTEFBc1Erd0VBQ3lBSlFRQVFiQ0FGUVFBMkFwQUNDeUFGS0FLUUFpSURJQU5CQVdzaUFIRkZCRUFnQUNBR2NTRUFEQUVMSUFNZ0Jrc0VRQ0FHSVFBTUFRc2dCaUFEY0NFQUN3SkFBa0FnQ1NnQ0FDQUFRUUowYWlJQUtBSUFJZ0pGQkVBZ0NpQUZLQUtVQWpZQ0FDQUZJQW8yQXBRQ0lBQWdERFlDQUNBS0tBSUFJZ0JGRFFJZ0FDZ0NCQ0VDQWtBZ0F5QURRUUZySWdCeFJRUkFJQUFnQW5FaEFnd0JDeUFDSUFOSkRRQWdBaUFEY0NFQ0N5QUpLQUlBSUFKQkFuUnFJUUlNQVFzZ0NpQUNLQUlBTmdJQUN5QUNJQW8yQWdBTElBVWdCU2dDbUFKQkFXbzJBcGdDQ3lBSFFUQnFKQUFnQ3d0V0FRSi9JQUFvQWdBaUFTZ0NJQ0lDQkg4Z0FnVWdBUkQyQ0NJQ1FkRFJFallDQUNBQ1FaakxFallDQkNBQklBSVFLQ0FCSUFFb0FoaEJBV28yQWhnZ0FpRUJJQUFvQWdBZ0FUWUNJQ0FBS0FJQUtBSWdDd3NKQUNBQVFRQVFwQm9MNkFrQkJIOGdBQ2dDQUNFQ0lBQWdBVFlDQUNBQ0JFQWdBZ1JBSUFJb0FwUUZJUUFEUUNBQUJFQWdBQ2dDQUNFQklBQVFIeUFCSVFBTUFRc0xJQUlvQW93RklRQWdBa0VBTmdLTUJTQUFCRUFnQUJBZkN5QUNRZkFFYWhDVUJDQUNLQUxrQkNFQUEwQWdBQVJBSUFBb0FnQWhBU0FBRUI4Z0FTRUFEQUVMQ3lBQ0tBTGNCQ0VBSUFKQkFEWUMzQVFnQUFSQUlBQVFId3NnQWtIQUJHb1FsQVFnQWlnQ3RBUWhBQU5BSUFBRVFDQUFLQUlBSVFFZ0FCQWZJQUVoQUF3QkN3c2dBaWdDckFRaEFDQUNRUUEyQXF3RUlBQUVRQ0FBRUI4TElBSkJrQVJxRUpRRUlBSW9Bb1FFSVFBRFFDQUFCRUFnQUNnQ0FDRUJJQUFRSHlBQklRQU1BUXNMSUFJb0F2d0RJUUFnQWtFQU5nTDhBeUFBQkVBZ0FCQWZDeUFDUWVBRGFoQ1VCQ0FDS0FMVUF5RUFBMEFnQUFSQUlBQW9BZ0FoQVNBQUVCOGdBU0VBREFFTEN5QUNLQUxNQXlFQUlBSkJBRFlDekFNZ0FBUkFJQUFRSHdzZ0FrR3dBMm9RbEFRZ0FpZ0NwQU1oQUFOQUlBQUVRQ0FBS0FJQUlRRWdBQkFmSUFFaEFBd0JDd3NnQWlnQ25BTWhBQ0FDUVFBMkFwd0RJQUFFUUNBQUVCOExJQUpCZ0FOcUVKUUVJQUlvQXZRQ0lRQURRQ0FBQkVBZ0FDZ0NBQ0VCSUFBUUh5QUJJUUFNQVFzTElBSW9BdXdDSVFBZ0FrRUFOZ0xzQWlBQUJFQWdBQkFmQzBFQUlBSkIwQUpxSWdNb0FoUWlBQ0FBUVI5TElnQWJJUVJCQUNBREtBSVFJQUFiSVFVZ0EwRU1haUVBQTBBZ0FDZ0NBQ0VCUVFBaEFBSkFBMEFnQVNBRlJ5QUFJQVJIY2tVRVFDQURLQUlBSVFBRFFDQUFSUTBESUFBb0FvQ0FCQ0VCSUFBUUh5QUJJUUFNQUFzQUN5QUJJQUJCQW5ScUtBSUFFSjBMR2lBQVFRRnFJZ0JCSUVjTkFBc2dBVUdBQVdvaEFBd0JDd3NnQTBFQU5nSVlJQU5DZ0lDQWdJQUVOd0lRSUFOQ2dJQUVOd0lJSUFOQ0FEY0NBQ0FDS0FMRUFpRUFBMEFnQUFSQUlBQW9BZ0FoQVNBQUVCOGdBU0VBREFFTEN5QUNLQUs4QWlFQUlBSkJBRFlDdkFJZ0FBUkFJQUFRSHd0QkFDQUNRYUFDYWlJREtBSVVJZ0FnQUVFZlN5SUFHeUVFUVFBZ0F5Z0NFQ0FBR3lFRklBTkJER29oQUFOQUlBQW9BZ0FoQVVFQUlRQUNRQU5BSUFFZ0JVY2dBQ0FFUjNKRkJFQWdBeWdDQUNFQUEwQWdBRVVOQXlBQUtBS0FnQVFoQVNBQUVCOGdBU0VBREFBTEFBc2dBU0FBUVFKMGFpZ0NBQkQ1Q0JvZ0FFRUJhaUlBUVNCSERRQUxJQUZCZ0FGcUlRQU1BUXNMSUFOQkFEWUNHQ0FEUW9DQWdJQ0FCRGNDRUNBRFFvQ0FCRGNDQ0NBRFFnQTNBZ0FnQWlnQ2xBSWhBQU5BSUFBRVFDQUFLQUlBSVFFZ0FCQWZJQUVoQUF3QkN3c2dBaWdDakFJaEFDQUNRUUEyQW93Q0lBQUVRQ0FBRUI4TElBSkI4QUZxRUpRRUlBSW9BdVFCSVFBRFFDQUFCRUFnQUNnQ0FDRUJJQUFRSHlBQklRQU1BUXNMSUFJb0F0d0JJUUFnQWtFQU5nTGNBU0FBQkVBZ0FCQWZDeUFDUWNBQmFoQ1VCQ0FDS0FLMEFTRUFBMEFnQUFSQUlBQW9BZ0FoQVNBQUVCOGdBU0VBREFFTEN5QUNLQUtzQVNFQUlBSkJBRFlDckFFZ0FBUkFJQUFRSHdzZ0FrR1FBV29RbEFRZ0FpZ0NoQUVoQUFOQUlBQUVRQ0FBS0FJQUlRRWdBQkFmSUFFaEFBd0JDd3NnQWlnQ2ZDRUFJQUpCQURZQ2ZDQUFCRUFnQUJBZkN5QUNRZUFBYWhDVUJDQUNLQUpVSVFBRFFDQUFCRUFnQUNnQ0FDRUJJQUFRSHlBQklRQU1BUXNMSUFJb0Frd2hBQ0FDUVFBMkFrd2dBQVJBSUFBUUh3c2dBa0V3YWhDVUJDQUNFTW9FQ3lBQ0VCOExDeUVCQVg4Z0FDZ0NCRUdvekJKR0JIOGdBQ2dDQ0NnQ0JFR3d5eEpHQlVFQUN3c2hBUUYvSUFBb0FnUkJxTXdTUmdSL0lBQW9BZ2dvQWdSQjRNc1NSZ1ZCQUFzTEVRQWdBQzBBT0FSQUlBQkJBRG9BT0FzTElRRUJmeUFBS0FJRVFhak1Fa1lFZnlBQUtBSUlLQUlFUWNqTEVrWUZRUUFMQzVRQkFnTi9BWDRnQVNBQVFZZ09haWdDQUVzRVFDQUFLQUtBRGlFRFFTQWhBaUFBSVFRZ0FVRWdUd1JBUVg4Z0FhMUNPSDRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUNnQTRnQUVHSURtb2dBallDQUVFQUlRRURRQ0FBS0FLRURpQUJUUVJBSUFBZ0F4QTJCU0FCUVRoc0lnSWdBQ2dDZ0E1cUlBSWdBMm9RNWdjYUlBRkJBV29oQVF3QkN3c0xDMFVCQVg4akFFRWdheUlESkFBZ0FDQURJQUVRVmhDdEdpSUFRY2pPRWpZQ0JDQUFRY2pTRWpZQ0FDQURRU0JxSkFBZ0FFR2cwUkkyQWdBZ0FFRWthaUFDRUtVQ0dnc1BBQ0FCUVFScUlBQkJDR29ReXdZTFFRRUJmeU1BUVNCcklnTWtBQ0FBSUFNZ0FSQldFSzBhSWdCQnNNNFNOZ0lFSUFCQnNOSVNOZ0lBSUFOQklHb2tBQ0FBSUFJMkFpUWdBRUdJMFJJMkFnQUxJQUFnQUVHWXpoSTJBZ1FnQUVIdzBCSTJBZ0FnQUVFSWFpQUJFRllhSUFBTEtRQWdBRUdBemhJMkFnUWdBQ0FCTmdJSUlBQWdBellDRUNBQUlBSTJBZ3dnQUVIWTBCSTJBZ0FMSWdBZ0FFSG96UkkyQWdRZ0FDQUJOZ0lJSUFBZ0FqWUNEQ0FBUWNEUUVqWUNBQXQ4QVFWL0lBQkJ4QmxxS0FJQUlnVkJBV3NoQmdKQUEwQWdBeUFGUmcwQklBQW9Bc0FaSUFGQnhBQnNhaUlFTFFBNEJFQWdBaUFDS0FKQUlnY2dCQ2dDUUVzRWZ5QUVJQUlRcUE4Z0FpZ0NRQVVnQnd0QkFXbzJBa0FnQVVFQmFrRUFJQUVnQmtjYklRRWdBMEVCYWlFRERBRUxDeUFFSUFJUW9nOExDeUlBSUFCQjBNMFNOZ0lFSUFBZ0FUWUNDQ0FBSUFJMkFnd2dBRUdvMEJJMkFnQUxHd0FnQUVHNHpSSTJBZ1FnQUNBQk5nSUlJQUJCa05BU05nSUFDeHNBSUFCQm9NMFNOZ0lFSUFBZ0FUWUNDQ0FBUWZqUEVqWUNBQXNiQUNBQUlBRTJBZ2dnQUVId3pCSTJBZ1FnQUVIZ3p4STJBZ0FMS1FBZ0FDQUROZ0lRSUFBZ0FqWUNEQ0FBSUFFMkFnZ2dBRUhZekJJMkFnUWdBRUhJenhJMkFnQUxLZ0VCZnlBQlFRUnFJQUFvQWdnaUFpQUJJQUlvQWdBb0FnZ1JBUUFnQUNnQ0RDQUFLQUlRRUpRYkN5a0FJQUFnQXpZQ0VDQUFJQUkyQWd3Z0FDQUJOZ0lJSUFCQndNd1NOZ0lFSUFCQnNNOFNOZ0lBQ3lJQUlBQWdBallDRENBQUlBRTJBZ2dnQUVHb3pCSTJBZ1FnQUVHWXp4STJBZ0FMS1FBZ0FDQUROZ0lRSUFBZ0FqWUNEQ0FBSUFFMkFnZ2dBRUdRekJJMkFnUWdBRUdBenhJMkFnQUxLUUFnQUNBRE5nSVFJQUFnQWpZQ0RDQUFJQUUyQWdnZ0FFSDR5eEkyQWdRZ0FFSG96aEkyQWdBTEVnQWdBQ0FCRU9ZSElnQkJBVG9BT0NBQUN4UUFJQUJCMU1vU05nSUFJQUJCQkdvUUhpQUFDMElCQW44RFFDQUFJQUZIQkVBZ0FVRUVheUlCS0FJQUlRTWdBaWdDQUNFRUlBRkJBRFlDQUNBRVFRUnJJQU0yQWdBZ0FpQUNLQUlBUVFSck5nSUFEQUVMQ3dzWkFRRi9JQUVnQUNnQ1BFWUVmeUFDSUFBUXRnSUZRUUFMQ3c0QUlBQVFweG9nQUNBQkVNb0xDejRCQVg4akFFRVFheUlGSkFBZ0JTQUROZ0lJSUFVZ0FDQUNFT2NGTmdJRUlBQWdBU0FGUVFScUlBVkJDR29nQkJETEdpRUFJQVZCRUdva0FDQUFDdzBBSUFBZ0FVR1ltUklRalFnTENRQWdBRUVjYWhCUEM4VUhBZ3QvQW4wakFFSHdBR3NpQlNRQUlBVWdBVFlDYkNNQVFTQnJJZ29rQUNBS0lBVkI3QUJxSWdnMkFoQWpBRUVRYXlJQkpBQWdDQkQwQXlFRElBb0Nmd0pBSUFCQjhJTUJhaUlIS0FJRUlnSkZEUUFnQnlnQ0FBSi9JQUpCQVdzZ0EzRWdBbWtpQ1VFQlRRMEFHaUFESUFJZ0Ewc05BQm9nQXlBQ2NBc2lCa0VDZEdvb0FnQWlCRVVOQUNBQ1FRRnJJUXNnQ0NnQ0FDRU1JQWxCQVVzaENRTkFJQVFvQWdBaUJFVU5BU0FESUFRb0FnUWlDRWNFUUFKQUlBbEZCRUFnQ0NBTGNTRUlEQUVMSUFJZ0NFc05BQ0FJSUFKd0lRZ0xJQVlnQ0VjTkFnc2dCQ2dDQ0NBTVJ3MEFDMEVBREFFTFFUd1FGU0VFSUFFZ0IwRUlhallDQkNBQklBUTJBZ0FnQ2lnQ0VDRUpJd0JCRUdzaUNDUUFJQWdnQ1RZQ0NDQUVRUWhxSWdrZ0NDZ0NDQ2dDQURZQ0FDQUpRUVJxUVFCQk1CQjVFSnNGSWdsQ0FEY0NIQ0FKUWdBM0FpUWdDVUdBZ0lEOEF6WUNMQ0FJUVJCcUpBQWdBVUVCT2dBSUlBUkJBRFlDQUNBRUlBTTJBZ1FDUUVFQUlBSWdCeWdDREVFQmFyTWlEU0FIS2dJUUlnNGdBck9VWGhzTkFDQUhJQUlnQWtFQmEzRkJBRWNnQWtFRFNYSWdBa0VCZEhJaUJnSi9JQTBnRHBXTklnMURBQUNBVDEwZ0RVTUFBQUFBWUhFRVFDQU5xUXdCQzBFQUN5SUNJQUlnQmtrYkVNTUJJQWNvQWdRaUFpQUNRUUZyY1VVRVFDQUNRUUZySUFOeElRWU1BUXNnQWlBRFN3UkFJQU1oQmd3QkN5QURJQUp3SVFZTEFrQWdCa0VDZENJR0lBY29BZ0JxS0FJQUlnTkZCRUFnQVNnQ0FDQUhLQUlJTmdJQUlBY2dBU2dDQURZQ0NDQUhLQUlBSUFacUlBZEJDR28yQWdBZ0FTZ0NBQ0lES0FJQUlnWkZEUUVnQmlnQ0JDRUVBa0FnQWlBQ1FRRnJJZ1p4UlFSQUlBUWdCbkVoQkF3QkN5QUNJQVJMRFFBZ0JDQUNjQ0VFQ3lBSEtBSUFJQVJCQW5ScUlBTTJBZ0FNQVFzZ0FTZ0NBQ0FES0FJQU5nSUFJQU1nQVNnQ0FEWUNBQXNnQVNnQ0FDRUVJQUZCQURZQ0FDQUhJQWNvQWd4QkFXbzJBZ3dnQVNnQ0FDRURJQUZCQURZQ0FDQURCRUFnQVMwQUNBUkFJQU5CREdvUXdob0xJQU1FUUNBREVCOExDMEVCQ3pvQUhDQUtJQVEyQWhnZ0FVRVFhaVFBSUFvb0FoZ2hBU0FLUVNCcUpBQWdBVUVNYWlJQktBSUFRWDlHQkVBZ0FFRUVhaEFjSUFWQktHb2lBeUFGUVFocUlBVW9BbXhCR0dvUVZoQlRJQVZCT0dvaUJpQURRWW1KQlJBdElBVWdCU2dDUENBRkxRQkRJZ0lnQWtFWWRFRVlkVUVBU0NJQ0d6WUNUQ0FGSUFVb0FqZ2dCaUFDR3pZQ1NDQUZJQVVwQTBnM0F3QWdCVUhRQUdvaUFpQUFRWXdDYWlBRkVKOEVJQUVnQWhEZkJDQUdFQThhSUFNUUR4b0xJQVZCOEFCcUpBQWdBUXNnQUNBQUtBSUFJZ0ZCQ0dvZ0FVSDRBbW9nQUNnQ0JDZ0NBQkRkQkJDY0d3dHZBUU4vSXdCQnNBRnJJZ0VrQUNBQUtBSUFJZ0pCQkdvUUhDQUJRUkJxUVplNEJVSGZBVUVNSUFKQnpBSnFFQmNpQWtFWWFpSURRZEdVREJBT0dpQUJJQUFvQWdRb0FnQWlBQ0FBS0FJQUtBSU1FUUlBSUFNZ0FSQVNHaUFCRUE4YUlBSVFHQ0FCUWJBQmFpUUFRUUFMM0FVQ0NIOENmaU1BUWNBQmF5SUVKQUFnQVNnQ3hBRWdBU2dDekFFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFVQnFJZ1VrQUVFTUlBTkJBWFJCQW1wQmxnRnNRZVFBYmlJRElBTkJERTBiSWdZZ0FTZ0N4QUZMQkVBZ0JVS0FnSUNBZ0FFM0FqUWdCU0FGUVJCcUlnTTJBakFnQXlBQktBTE1BUkE1SUFFb0FzQUJJZ01nQVNnQ3hBRkJCSFJxSVFjRFFBSkFJQU1nQjBZRVFDQUJFT29FSUFFZ0JoRGtCQ0FGS0FJd0lnTWdCU2dDTkVFQ2RHb2hCZ3dCQ3lBRExRQUVCRUFnQlVFUWFpQURFTDRCRUNRTElBTkJFR29oQXd3QkN3c0RRQ0FESUFaSEJFQWdCU0FCSUFNUXhob2dBMEVFYWlFRERBRUxDeUFGUVJCcUVDTUxJQVZCUUdza0FBc2dCRUc0QVdvZ0FTQUNFUFVMSUFFb0FzUUJJZ2xCQVdzaENpQUNLQUlBSVFZZ0FTZ0N3QUVoQ0NBRUtBSzhBU0VISUFRb0FyZ0JJUVZCQUNFQ0FrQURRQ0FDSUFsSEJFQWdDQ0FGUVFSMGFpSURMUUFFUlFSQUlBTkJBVG9BQkNBRElBWTJBZ0FnQ0NBRlFRUjBhaUlESUFJMkFnd2dBeUFITmdJSUlBRWdBU2dDekFGQkFXbzJBc3dCSUFFZ0FTZ0MwQUZCQVdvMkF0QUJJQUJDQURjQ0FBd0RDd0pBSUFNb0FnZ2dCMGNOQUNBR0lBTW9BZ0JIRFFBZ0FFSUNOd0lBREFNTElBSWdBeWdDREVzRVFDQUVJQWMyQXJBQklBUWdCallDcUFFZ0JDQUNOZ0swQVNBRVFRRTZBS3dCSUFRZ0JDa0RzQUVpQ3pjREVDQUVJQVFwQTZnQklndzNBd2dnQkNBREtRSUlOd093QVNBRUlBTXBBZ0EzQTZnQklBTWdERGNDQUNBRElBczNBZ2dnQkNBRUtBSzBBVUVCYWpZQ3RBRWdBU0FGUVFGcUlBRW9Bc1FCY0NBRVFhZ0JhaERyQkNBQklBRW9Bc3dCUVFGcU5nTE1BU0FCSUFFb0F0QUJRUUZxTmdMUUFTQUFRZ0EzQWdBTUF3VWdCVUVCYWtFQUlBVWdDa2NiSVFVZ0FrRUJhaUVDREFJTEFBc0xJQVJCQ0dwQmhyVURRZXNEUVE0Z0JFR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdUFBd0VGZnlNQVFhQU9heUlDSkFCQk1DQUJRWllCYkVIa0FHNGlBU0FCUVRCTkd5SUZJQUJCeEJscUtBSUFTd1JBSUFKQmxBNXFRb0NBZ0lDQUJEY0NBQ0FDSUFKQkVHb2lBVFlDa0E0Z0FTQUFLQUxNR1JDcEdpQUFLQUxBR1NJQklBQW9Bc1FaUWNRQWJHb2hCZ05BQWtBZ0FTQUdSZ1JBSUFBUTVod2dBQ0FGRU9vUElBSW9BcEFPSWdFZ0FpZ0NsQTVCT0d4cUlRTU1BUXNnQVMwQU9BUkFJQUV0QURoRkJFQVFid0FMSUFKQkVHb2lBMEdFRG1vb0FnQWlCQ0FEUVlnT2FpZ0NBRThFUUNBRElBTkJpQTVxS0FJQUlnUkJBWFJCQWlBRUd4Q3BHaUFES0FLRURpRUVDeUFESUFSQkFXbzJBb1FPSUFNb0FvQU9JQVJCT0d4cUlBRVE1Z2NhQ3lBQlFjUUFhaUVCREFFTEN3TkFJQUVnQTBjRVFDQUNRUWhxSUFBZ0FTQUJRUnhxRU5vY0lBRkJPR29oQVF3QkN3c2dBa0VRYWlFQlFRQWhBQU5BSUFFb0FvUU9JQUJOQkVBZ0FVRUFOZ0tFRGdVZ0FTZ0NnQTRhSUFCQkFXb2hBQXdCQ3dzZ0FTQUJLQUtBRGhBMkN5QUNRYUFPYWlRQUMwTUJBWDhqQUVFUWF5SURKQUFnQXlBQktBSUFOZ0lNSUFNZ0FDQUNFT0VITmdJSUlBQWdBRUhZQW1vZ0EwRU1haUFEUVFocUVQNElJUUFnQTBFUWFpUUFJQUFMR1FBZ0FDQUJJQUlnQTBHTXlCSkJ1TW9TUWRqSEVoRGJFZ3RQQVFGL0l3QkJNR3NpQXlRQUlBTWdBaWdDQUNJQ05nSUlJQU1nQWhEY0FUWUNEQ0FESUFNcEF3ZzNBd0FnQTBFUWFpSUNJQUFnQXhEaEFTQUFJQUVnQWhET0FpRUFJQU5CTUdva0FDQUFDNW9CQVFWL0l3QkJFR3NpQmlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQlRZQ0RDQUdJQVUyQWdnakFFRVFheUlGSkFBZ0FFR01BV29pQnhDR0VTRUlJQU1vQWdBaEF5QUNLQUlBSVFJZ0JpZ0NDQ0VKSUFBb0FnZ2hBQ0FGSUFRcEFnQTNBd2dnQnlBSUlBQWdDU0FCSUFJZ0F5QUZRUWhxRUljUklnQVFLQ0FISUFjb0FoaEJBV28yQWhnZ0JVRVFhaVFBSUFaQkVHb2tBQ0FBQyswQkFRWi9Jd0JCRUdzaUJDUUFJQVFnQWlrQ0FEY0RDQ0FFSUFNcEFnQTNBd0FqQUVFUWF5SUNKQUFnQWlBQUlBRVE4d0kyQWd3akFFRVFheUlESkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlCTmdJTUlBTWdBVFlDQ0NNQVFSQnJJZ0VrQUNBQVFZd0JhaUlGRUpjTUlRWWdBaWdDRENFSElBTW9BZ2doQ0NBQUtBSUlJUWtnQVNBRUtRSUlOd01JSUFFZ0JDa0NBRGNEQUNBRklBWWdDU0FJSUFCQjJBSnFJQWNnQVVFSWFpQUJFSmdNSWdZUUtDQUZJQVVvQWhoQkFXbzJBaGdnQVVFUWFpUUFJQU5CRUdva0FDQUdJUUVnQUJEeUFpQUJFSmNaSUFKQkVHb2tBQ0FFUVJCcUpBQUxOQUVCZndOQUlBQW9Bc1FFSUFGTkJFQWdBRUVBTmdMRUJBVWdBQ2dDd0FRZ0FVRXdiR29RbVFNZ0FVRUJhaUVCREFFTEN3c1ZBQ0FBS0FJQUlBQW9BZ1FRN3dNb0FnUVEzUVFMTlFBZ0FDQUFFTVVDSUFFb0FnQWdBaWdDQUNBRElBUW9BZ0FnQlNnQ0FCRE5FU0lCRUNnZ0FDQUFLQUlZUVFGcU5nSVlJQUVMTUFBZ0FDQUFFTDhCSUFFb0FnQWdBaWdDQUNBRElBUW9BZ0FRcmg0aUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkN6VUJBWDhEUUNBQUtBTEVHU0FCVFFSQUlBQkJBRFlDeEJrRklBQW9Bc0FaSUFGQnhBQnNhaERuQnlBQlFRRnFJUUVNQVFzTEMrd0lBZ3QvQW4wZ0FpQUNRUVJxRUtFTElRZ2dBQUovQWtBZ0FTZ0NCQ0lFUlEwQUlBRW9BZ0FDZnlBRVFRRnJJQWh4SUFScElnVkJBVTBOQUJvZ0NDQUVJQWhMRFFBYUlBZ2dCSEFMSWdaQkFuUnFLQUlBSWdkRkRRQWdCRUVCYXlFSklBSW9BZ1FoQ2lBQ0tBSUFJUXNnQlVFQlN5RU1BMEFnQnlnQ0FDSUhSUTBCSUFnZ0J5Z0NCQ0lGUndSQUFrQWdERVVFUUNBRklBbHhJUVVNQVFzZ0JDQUZTdzBBSUFVZ0JIQWhCUXNnQlNBR1J3MENDeUFIS0FJSUlBdEhEUUFnQnlnQ0RDQUtSdzBBQzBFQURBRUxRU3dRRlNJSElBSXBBZ0EzQWdnZ0IwRVFhaUFERUZZYUlBZEJBRFlDQUNBSElBZzJBZ1FnQVVFSWFpRUtBa0JCQUNBRUlBRW9BZ3hCQVdxekloQWdBU29DRUNJUElBU3psRjRiRFFBQ1FBSkFBa0FDZjBFQ0lBUWdCRUVCYTNGQkFFY2dCRUVEU1hJZ0JFRUJkSElpQWdKL0lCQWdENVdOSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRUlBSWdCRXNiSWdKQkFVWU5BQm9nQWlBQ0lBSkJBV3R4UlEwQUdpQUNFSDhMSWdNZ0FTZ0NCQ0lFVFFSQUlBTWdCRThOQXlBRVFRTkpJUUlDZnlBQktBSU1zeUFCS2dJUWxZMGlEME1BQUlCUFhTQVBRd0FBQUFCZ2NRUkFJQStwREFFTFFRQUxJUVVnQkNBRElBSWdCR2xCQVV0eUJIOGdCUkIvQlNBRlFRRkJJQ0FGUVFGcloydDBJQVZCQWtrYkN5SUZJQU1nQlVzYklnTk5CRUFnQVNnQ0JDRUVEQVFMSUFORkRRRUxJQU5CZ0lDQWdBUkpCRUFnQVNBRFFRSjBFQlVRYkNBQklBTTJBZ1JCQUNFRkEwQWdBeUFGUmdSQUFrQWdBU2dDQ0NJRURRQU1CUXNGSUFFb0FnQWdCVUVDZEdwQkFEWUNBQ0FGUVFGcUlRVU1BUXNMSUFRb0FnUWhDUUpBSUFOcElnSkJBVTBFUUNBSklBTkJBV3R4SVFrTUFRc2dBeUFKU3cwQUlBa2dBM0FoQ1FzZ0FTZ0NBQ0FKUVFKMGFpQUtOZ0lBSUFOQkFXc2hEQ0FDUVFGTElRMERRQ0FFS0FJQUlnSkZEUU1nQWlnQ0JDRUdBa0FnRFVVRVFDQUdJQXh4SVFZTUFRc2dBeUFHU3cwQUlBWWdBM0FoQmdzQ1FDQUdJQWxHRFFBZ0FpRUZJQVpCQW5RaUN5QUJLQUlBYWlJT0tBSUFSUVJBSUE0Z0JEWUNBQ0FHSVFrTUFRc0RRQUpBSUFVaUJpZ0NBQ0lGUlEwQUlBSW9BZ2dnQlNnQ0NFY05BQ0FDS0FJTUlBVW9BZ3hHRFFFTEN5QUVJQVUyQWdBZ0JpQUJLQUlBSUF0cUtBSUFLQUlBTmdJQUlBRW9BZ0FnQzJvb0FnQWdBallDQUF3QkN5QUNJUVFNQUFzQUN4RDdBUUFMUVFBaEJDQUJRUUFRYkNBQlFRQTJBZ1FNQVFzZ0F5RUVDeUFFSUFSQkFXc2lBbkZGQkVBZ0FpQUljU0VHREFFTElBUWdDRXNFUUNBSUlRWU1BUXNnQ0NBRWNDRUdDd0pBQWtBZ0FTZ0NBQ0FHUVFKMGFpSUNLQUlBSWdWRkJFQWdCeUFCS0FJSU5nSUFJQUVnQnpZQ0NDQUNJQW8yQWdBZ0J5Z0NBQ0lDUlEwQ0lBSW9BZ1FoQlFKQUlBUWdCRUVCYXlJQ2NVVUVRQ0FDSUFWeElRVU1BUXNnQkNBRlN3MEFJQVVnQkhBaEJRc2dBU2dDQUNBRlFRSjBhaUVGREFFTElBY2dCU2dDQURZQ0FBc2dCU0FITmdJQUN5QUJJQUVvQWd4QkFXbzJBZ3hCQVFzNkFBUWdBQ0FITmdJQUM4a0JBUUYvSXdCQklHc2lCeVFBSUFjZ0Fpa0NBRGNER0NBSElBVXBBZ0EzQXhBZ0J5QUdLUUlBTndNSUl3QkJNR3NpQWlRQUlBSWdBellDS0NBQ0lBUkJCR28yQWhnZ0JDZ0NCQ0VESUFKQkFEb0FGQ0FDUWNDY0lEWUNFQ0FDSUFNZ0JFYzZBQndnQWlBQUlBSkJHR29nQWtFUWFoQ3BGallDSkNBQ0lBQWdBUkR6QWpZQ0RDQUFJQUJCMkFKcUlBSkJER29nQjBFWWFpQUNRU2hxSUFKQkpHb2dCMEVRYWlBSFFRaHFFTDRLSVFFZ0FCRHlBaUFCRVA0S0lBSkJNR29rQUNBSFFTQnFKQUFMYWdFQ2Z5TUFRUkJySWdJa0FDQUNJQUVvQWdBMkFnd2pBRUVRYXlJQkpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRE5nSU1JQUVnQXpZQ0NDQUFRWXdCYWlBQVFRaHFJQUZCQ0dvZ0FFSFlBbW9nQWtFTWFoRFFHaUVBSUFGQkVHb2tBQ0FDUVJCcUpBQWdBQXZhQVFFSGZ5TUFRUkJySWdRa0FDQUVJQUVvQWdBMkFnd2pBRUVRYXlJQkpBQWdBU0FFS0FJTU5nSU1JQUZCQURvQUJDQUJJQUpCRUdvMkFnQWpBRUVRYXlJQ0pBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRE5nSU1JQUlnQXpZQ0NDTUFRUkJySWdNa0FDQUFRWXdCYWlJRkVQMEZJUVlnQVNnQ0RDRUhJQUlvQWdnaENDQUFLQUlJSVFrZ0F5QUJLUUlBTndNSUlBVWdCaUFKSUFnZ0FFSFlBbW9nQnlBRFFRaHFFUDRGSWdBUUtDQUZJQVVvQWhoQkFXbzJBaGdnQTBFUWFpUUFJQUpCRUdva0FDQUJRUkJxSkFBZ0JFRVFhaVFBSUFBTEZRQWdBQ2dDQUJEdkF5QUFLQUlFS0FJQUVMWVBDellCQVg4akFFRVFheUlFSkFBZ0JDQURLUUlBTndNSUlBQWdBRUhZQW1vZ0FTQUNJQVJCQ0dvUXZnOGhBQ0FFUVJCcUpBQWdBQXMvQVFGL0l3QkJFR3NpQXlRQUlBTWdBQ0FCRU5vRU5nSU1JQU1nQUNBQ0VMRUxOZ0lJSUFBZ0EwRU1haUFEUVFocUVLUUxJUUFnQTBFUWFpUUFJQUFMelFFQkIzOGdBU0FCUVFScUVLRUxJUU1DUUNBQUtBSUVJZ0pGRFFBZ0FDZ0NBQUovSUFKQkFXc2dBM0VnQW1raUJFRUJUUTBBR2lBRElBSWdBMHNOQUJvZ0F5QUNjQXNpQlVFQ2RHb29BZ0FpQUVVTkFDQUNRUUZySVFZZ0FTZ0NCQ0VISUFFb0FnQWhDQ0FFUVFGTElRUURRQ0FBS0FJQUlnQkZEUUVnQXlBQUtBSUVJZ0ZIQkVBQ1FDQUVSUVJBSUFFZ0JuRWhBUXdCQ3lBQklBSkpEUUFnQVNBQ2NDRUJDeUFCSUFWSERRSU1BUXNnQUNnQ0NDQUlSdzBBSUFBb0Fnd2dCMGNOQUFzZ0FBOExRUUFMTkFFQmZ3TkFJQUFvQW9SZ0lBRk5CRUFnQUVFQU5nS0VZQVVnQUNnQ2dHQWdBVUVMZEdvUWp3a2dBVUVCYWlFQkRBRUxDd3NLQUNBQUVLTUxRUUJIQ3pVQUlBQWdBQkRGQWlBQktBSUFJQUlvQWdBZ0F5QUVLQUlBSUFVb0FnQVErUjRpQVJBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FCQzRvQ0FRZC9Jd0JCc0FGcklnUWtBQ0FDS0FJQUVQd0NJUVVnQVNnQ3BBSWlCa0VCYXlFSElBVWdCbkFoQXlBQ0tBSUFJUWdnQVNnQ29BSWhDVUVBSVFFQ1FBTkFJQUVnQmtjRVFDQUpJQU5CR0d4cUlnSXRBQXhGQkVBZ0FFRUFOZ0lFSUFCQkFEb0FBQXdEQ3dKQUlBSW9BaEFnQlVjTkFDQUlJQUlvQWdCSERRQWdBQ0FETmdJRUlBQkJBVG9BQUF3REN5QUJJQUlvQWhSTEJFQWdBRUVBTmdJRUlBQkJBRG9BQUF3REJTQURRUUZxUVFBZ0F5QUhSeHNoQXlBQlFRRnFJUUVNQWdzQUN3c2dCRUdHdFFOQm5nUkJEaUFFUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRZEkxRUE0YUlBSVFHQ0FBUVFBMkFnUWdBRUVBT2dBQUlBRVFIZ3NnQkVHd0FXb2tBQXNOQUNBQUlBRkJvSllTRUkwSUM1WUJBZ04vQVg0Z0FTQUFLQUpvU3dSQUlBQW9BbUFoQkNBQUlRSkJDQ0VESUFGQkNFOEVRRUYvSUFFaUE2MUNESDRpQmFjZ0JVSWdpS2NiRUJVaEFnc2dBQ0FETmdKb0lBQWdBallDWUVFQUlRRURRQ0FBS0FKa0lBRk5CRUFnQUNBRUVEWUZJQUZCREd3aUFpQUFLQUpnYWlJRElBSWdCR29pQWlrQ0FEY0NBQ0FESUFJb0FnZzJBZ2dnQVVFQmFpRUJEQUVMQ3dzTFlnRUNmeU1BUVJCcklnUWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQkNBRE5nSUlJQUJCakFGcUlnTWdBeEMvQVNBQUtBSUlJQVFvQWdnZ0FTQUNLQUlBRU84ZUlnQVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JFRVFhaVFBSUFBTERRQWdBQ0FCUWZueEJoQy9EQXNOQUNBQUlBRkI0dllHRUw4TUN3MEFJQUFnQVVHUCtRWVF2d3dMS0FBZ0FFRUFOZ0trQWlBQVFRd1F1UThnQUVFQU5nS3NBaUFBSUFBb0FyQUNRUUZxTmdLd0FnczdBUUovSUFBb0FnZ2hBUU5BSUFFRVFDQUJLQUlBSVFJZ0FSQWZJQUloQVF3QkN3c2dBQ2dDQUNFQ0lBQkJBRFlDQUNBQ0JFQWdBaEFmQ3d1NUJnSUxmd04rSXdCQnNBSnJJZ0lrQUFKQVFRd2dBVUdXQVd4QjVBQnVJZ0VnQVVFTVRSc2lCU0FBS0FLa0FrME5BQ0FDUW9DQWdJQ0FBVGNDYkNBQ0lBSkJDR29pQVRZQ2FDQUJJQUFvQXF3Q0VOOGFJQUFvQXFBQ0lnRWdBQ2dDcEFKQkdHeHFJUVlEUUNBQklBWkdCRUFnQUJEa0dpQUFJQVVRdVE4Z0FpZ0NhQ0lGSUFJb0FteEJER3hxSVFrZ0FrR1FBV29oQ2dOQUlBVWdDVVlFUUNBQ1FRQTJBbXdnQWtFSWFpQUNLQUpvRURZTUJBc2dBQ2dDcEFJZ0FDZ0NyQUlpQVVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FBSUFGQkFYUkJBbW9RNWhvTElBVW9BZ0FRL0FJaEJpQUFLQUtrQWlJSFFRRnJJUXNnQmlBSGNDRUVJQUFvQXFBQ0lReEJBQ0VCQWtBRFFDQUJJQWRIQkVBZ0RDQUVRUmhzYWlJRExRQU1SUVJBSUFVb0FnQWhCQ0FGS1FJRUlRMGdBMEVCT2dBTUlBTWdEVGNDQkNBRElBUTJBZ0FnQXlBQk5nSVVJQU1nQmpZQ0VDQUFJQUFvQXF3Q1FRRnFOZ0tzQWlBQUlBQW9BckFDUVFGcU5nS3dBZ3dEQ3lBRktBSUFJUWdnQmlBREtBSVFSZ1JBSUFnZ0F5Z0NBRVlOQXdzZ0FTQURLQUlVU3dSQUlBVXBBZ1FoRFNBQ0lBWTJBcWdDSUFJZ0RUY0NuQUlnQWlBSU5nS1lBaUFDSUFFMkFxd0NJQUpCQVRvQXBBSWdBaUFDS1FPb0FpSU5Od09JQVNBQ0lBSXBBNkFDSWc0M0E0QUJJQUlnQWlrRG1BSWlEemNEZUNBQ0lBTXBBaEEzQTZnQ0lBSWdBeWtDQ0RjRG9BSWdBaUFES1FJQU53T1lBaUFESUE4M0FnQWdBeUFOTndJUUlBTWdEamNDQ0NBQ0lBSW9BcXdDUVFGcU5nS3NBaUFBSUFSQkFXb2dBQ2dDcEFKd0lBSkJtQUpxRUlJUUlBQWdBQ2dDckFKQkFXbzJBcXdDSUFBZ0FDZ0NzQUpCQVdvMkFyQUNEQU1GSUFSQkFXcEJBQ0FFSUF0SEd5RUVJQUZCQVdvaEFRd0NDd0FMQ3lBQ1FmZ0Fha0dHdFFOQjZ3TkJEaUFDUVpnQ2FoQWRJZ0VRRnlFRElBcEJsalVRRGhvZ0F4QVlJQUVRSGdzZ0JVRU1haUVGREFBTEFBc2dBUzBBREFSQUlBSW9BbXdpQkNBQ0tBSndJZ05QQkVBZ0FrRUlhaUFEUVFGMFFRSWdBeHNRM3hvZ0FpZ0NiQ0VFQ3lBQ0lBUkJBV28yQW13Z0FpZ0NhQ0FFUVF4c2FpSURJQUVvQWdnMkFnZ2dBeUFCS1FJQU53SUFDeUFCUVJocUlRRU1BQXNBQ3lBQ1FiQUNhaVFBQ3pBQkFYOGpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQkIzQUJxSUFKQkRHb1FxUUloQUNBQ1FSQnFKQUFnQUVFQVJ3c05BQ0FBSUFGQmdKa1NFSTBJQ3pVQUlBQWdBQkRGQWlBQktBSUFJQUlvQWdBZ0F5QUVLQUlBSUFVb0FnQVE4eDRpQVJBb0lBQWdBQ2dDR0VFQmFqWUNHQ0FCQ3kwQUlBQkJBRG9BZUNBQVFRQTZBQUFnQVMwQWVBUkFJQUFnQVJDNER3c2dBQ0FCS1FPQUFUY0RnQUVnQUFzWkFDQUFMUUI0QkVBZ0FFRUlhaENjQkNBQVFRQTZBSGdMQzVvQkFnTi9BWDRnQVNBQUtBTG9BMHNFUUNBQUtBTGdBeUVEUVFRaEFpQUFJUVFnQVVFRVR3UkFRWDhnQWExQytBQitJZ1duSUFWQ0lJaW5HeEFWSVFRZ0FTRUNDeUFBSUFRMkF1QURJQUFnQWpZQzZBTkJBQ0VCQTBBZ0FDZ0M1QU1nQVUwRVFDQUFJQU1RTmdVZ0FVSDRBR3dpQWlBQUtBTGdBMm9nQWlBRGFpSUNFS1lMR2lBQ1FRaHFFSndFSUFGQkFXb2hBUXdCQ3dzTEN6VUJBbjhqQUVHUUFXc2lBaVFBSUFKQkNHb2dBQkRxR2lFRElBQWdBUkM3RHlBQklBTVF1dzhnQXhDSkNTQUNRWkFCYWlRQUN4d0FJQUFnQVNnQ0FDZ0NBRFlDQUNBQVFRaHFJQUVvQWdRUXZ3c0x2Z2dCQ0g4akFFR3dBbXNpQnlRQUlBRW9BclFHSUFFb0FzQUdJZ1JCbGdGc1FaWUJha0hrQUc1SkJFQWpBRUdBQkdzaUJpUUFRUVlnQkVFQmRFRUNha0dXQVd4QjVBQnVJZ1FnQkVFR1RSc2lDU0FCS0FLMEJrc0VRQ0FHUW9DQWdJREFBRGNDOUFNZ0JpQUdRUkJxSWdRMkF2QURJQVFnQVNnQ3dBWVE3Qm9nQVNnQ3NBWWlCQ0FCS0FLMEJrR0lBV3hxSVFvRFFBSkFJQVFnQ2tZRVFDQUJFUGthSUFFZ0NSQzhEeUFHS0FMd0F5SUVJQVlvQXZRRFFmZ0FiR29oQlF3QkN5QUVMUUI0QkVBZ0JrRVFhaUVGSUFRdEFIaEZCRUFRYndBTElBUWhDeUFGS0FMa0F5SUlJQVVvQXVnRFR3UkFJQVVnQlNnQzZBTWlDRUVCZEVFQ0lBZ2JFT3dhSUFVb0F1UURJUWdMSUFVZ0NFRUJhallDNUFNZ0JTZ0M0QU1nQ0VINEFHeHFJQXNRcGdzYUN5QUVRWWdCYWlFRURBRUxDd05BSUFRZ0JVY0VRQ0FHUVFocUlBRWdCQ0FFUVFocUVPOGFJQVJCK0FCcUlRUU1BUXNMSUFaQkVHb2hCRUVBSVFVRFFDQUVLQUxrQXlBRlRRUkFJQVJCQURZQzVBTUZJQVFvQXVBRElBVkIrQUJzYWtFSWFoQ2NCQ0FGUVFGcUlRVU1BUXNMSUFRZ0JDZ0M0QU1RTmdzZ0JrR0FCR29rQUFzZ0IwR29BbW9nQVNBQ0VMQVNJQWNnQXpZQ3BBSWdCeUFDTmdLZ0FpQUJLQUswQmlJRlFRRnJJUWdnQWlnQ0FDRUpJQUVvQXJBR0lRUWdCeWdDckFJaENpQUhLQUtvQWlFRFFRQWhBZ0pBQTBBZ0FpQUZSd1JBSUFRZ0EwR0lBV3hxSWdZdEFIaEZCRUFnQjBFSWFpSUZJQWRCb0FKcUVPNGFJQVlRNnhvZ0JpQUZFTGdQSUFkQkVHb1FuQVFnQnlnQ3JBSWhCU0FFSUFOQmlBRnNhaUlESUFJMkFvUUJJQU1nQlRZQ2dBRWdBU0FCS0FMQUJrRUJhallDd0FZZ0FTQUJLQUxFQmtFQmFqWUN4QVlnQUNBR1FRaHFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBWW9Bb0FCSUFwSERRQWdDU0FHS0FJQVJ3MEFJQUJCQWpZQ0FDQUFJQVpCQ0dvMkFnUU1Bd3NnQWlBR0tBS0VBVXNFUUNBSFFhZ0JhaUlFSUFkQm9BSnFFTzRhSUFkQkNHb2dCQkNtQ3lJRVFRRTZBSGdnQnlnQ3JBSWhCU0FFSUFJMkFvUUJJQVFnQlRZQ2dBRWdCMEd3QVdvUW5BUWdCQ0FHRU8wYUlBUWdCQ2dDaEFGQkFXbzJBb1FCSUFOQkFXb2dBU2dDdEFad0lRSkJBQ0VESUFFb0FyUUdJZ2hCQVdzaENRSkFBMEFnQXlBSVJnMEJJQUVvQXJBR0lBSkJpQUZzYWlJRkxRQjRCRUFnQkNBRUtBS0VBU0lLSUFVb0FvUUJTd1IvSUFVZ0JCRHRHaUFFS0FLRUFRVWdDZ3RCQVdvMkFvUUJJQUpCQVdwQkFDQUNJQWxIR3lFQ0lBTkJBV29oQXd3QkN3c2dCU0FFRUxzUEN5QUJJQUVvQXNBR1FRRnFOZ0xBQmlBQklBRW9Bc1FHUVFGcU5nTEVCaUFBSUFaQkNHbzJBZ1FnQUVFQU5nSUFJQVFRaVFrTUF3VWdBMEVCYWtFQUlBTWdDRWNiSVFNZ0FrRUJhaUVDREFJTEFBc0xJQWRCQ0dwQmhyVURRZXNEUVE0Z0IwR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCMEd3QW1va0FBdjZCUUVIZnlNQVFkQUJheUlHSkFBZ0FTZ0NsQVFnQVNnQ25BUWlCRUdXQVd4QmxnRnFRZVFBYmtrRVFDTUFRYUFDYXlJRkpBQkJEQ0FFUVFGMFFRSnFRWllCYkVIa0FHNGlCQ0FFUVF4Tkd5SUhJQUVvQXBRRVN3UkFJQVZDZ0lDQWdJQUJOd0tVQWlBRklBVkJFR29pQkRZQ2tBSWdCQ0FCS0FLY0JCQ3FDeUFCS0FLUUJDSUVJQUVvQXBRRVFTeHNhaUVJQTBBQ1FDQUVJQWhHQkVBZ0FSQ3dDeUFCSUFjUWhna2dCU2dDa0FJaUJDQUZLQUtVQWtFRmRHb2hCd3dCQ3lBRUxRQWdCRUFnQlVFUWFpQUVFT0FHRU1FUEN5QUVRU3hxSVFRTUFRc0xBMEFnQkNBSFJ3UkFJQVZCQ0dvZ0FTQUVJQVJCQkdvUThCb2dCRUVnYWlFRURBRUxDeUFGUVJCcUVNQVBDeUFGUWFBQ2FpUUFDeUFHUWNnQmFpQUJJQUlRd2c4Z0JpQUROZ0xFQVNBR0lBSTJBc0FCSUFFb0FwUUVJZ2RCQVdzaENDQUNLQUlBSVFrZ0FTZ0NrQVFoQlNBR0tBTE1BU0VLSUFZb0FzZ0JJUU5CQUNFQ0FrQURRQ0FDSUFkSEJFQWdCU0FEUVN4c2FpSUVMUUFnUlFSQUlBWWdCa0hBQVdvUW1BVWdCQ0FHRUswTElBWW9Bc3dCSVFjZ0JTQURRU3hzYWlJRElBSTJBaWdnQXlBSE5nSWtJQUVnQVNnQ25BUkJBV28yQXB3RUlBRWdBU2dDb0FSQkFXbzJBcUFFSUFBZ0JFRUVhallDQkNBQVFRQTJBZ0FNQXdzQ1FDQUVLQUlrSUFwSERRQWdDU0FFS0FJQVJ3MEFJQUJCQWpZQ0FDQUFJQVJCQkdvMkFnUU1Bd3NnQWlBRUtBSW9Td1JBSUFaQm9BRnFJZ1VnQmtIQUFXb1FtQVVnQmlBRkVLd0xJUVVnQmlnQ3pBRWhCeUFGSUFJMkFpZ2dCU0FITmdJa0lBVWdCQkNFQ1NBRklBVW9BaWhCQVdvMkFpZ2dBU0FEUVFGcUlBRW9BcFFFY0NBRkVLc0xJQUVnQVNnQ25BUkJBV28yQXB3RUlBRWdBU2dDb0FSQkFXbzJBcUFFSUFBZ0JFRUVhallDQkNBQVFRQTJBZ0FnQlJDcUFnd0RCU0FEUVFGcVFRQWdBeUFJUnhzaEF5QUNRUUZxSVFJTUFnc0FDd3NnQmtHR3RRTkI2d05CRGlBR1FhQUJhaEFkSWdFUUZ5SUNRUmhxUVpZMUVBNGFJQUlRR0NBQVFnQTNBZ0FnQVJBZUN5QUdRZEFCYWlRQUMrOEJBUVovSXdCQjBBQnJJZ0lrQUNBQ0lBRTJBa3dnQUNnQ0FDSUhLQUw0QWlJRUVCd2dBa0VJYWlJR0lBQW9BZ1FvQWdBb0FnZ29BaVJCSkdvUVV5QUNRUmhxSWdVZ0JrSDZ5d01RTFNBQ0lBSW9BaHdnQWkwQUl5SURJQU5CR0hSQkdIVkJBRWdpQXhzMkFpd2dBaUFDS0FJWUlBVWdBeHMyQWlnZ0FpQUNLUU1vTndNQUlBSkJNR29pQXlBRVFZZ0NhaUFDRUo4RUlBVVFEeG9nQmhBUEdpQUhLQUw0QWlFRUlBSWdCMEg0QW1vZ0FSQ1hBVFlDR0NBQ0lBUWdCQ0FESUFVUXB3c1F6d28yQWdnZ0FDZ0NDQ0FHRUNRZ0JTQUFLQUlNSUFKQnpBQnFJQU1ROEJvZ0FrSFFBR29rQUFzVEFDQUFSUVJBUVFBUEN5QUFLQUlFRUtzSkM5QUVBUU4vSXdCQjBBRnJJZ1FrQUNBRUlBSTJBc3dCSUFBb0FnUW9BZ0FnQWhCWFFRRkJBVUhTdWdoQjBLY0RRYzRERUVzZ0FDZ0NBQ2dDQ0NBREVGZEJBVUVCUVpxZUNFSFFwd05CendNUVN3SkFJQUVvQWlBaUFpQUNJQUVvQWlSQkFuUnFJQVJCekFGcUVKb0ZJQUVvQWlBZ0FTZ0NKRUVDZEdwR0JFQWdCRUVvYWtIUXB3TkIwUU5CQVNBQUVNd0RFQmNpQUVFWWFrR2E2d01RRGhvZ0FCQVlEQUVMSUFRZ0FUWUNCQ0FFUVFocUlnRWdBRUhJSUdvZ0JFRUVhaERVRHlBQkVGcEIyQUpxSVFJakFFR0FBV3NpQUNRQUlBQkJDR29pQVVFQVFmQUFFSGthSUFCQkJEWUNjQ0FBSUFFMkFtZ2dBRUg0QUdvZ0FpQUVRY3dCYWlBQkVPOGFJQUVRbkFRZ0FDZ0NmQ0VGSUFSQkdHb2lBU0FDTmdJQUlBUW9Bc3dCSVFZZ0FTQUZOZ0lJSUFFZ0JqWUNCQ0FCSUFJb0FzUUdOZ0lNSUFCQmdBRnFKQUFqQUVHd0FXc2lBaVFBSUFFUXJBRWlBRVVFUUNBQ1FkaXZBMEhOQUVFT0lBSkJvQUZxRUIwaUFSQVhJZ1ZCR0dwQjdha0lFQTRhSUFVUUdDQUJFQjRMSUFKQnNBRnFKQUFnQkNBRE5nSXNJQVJCck1NU05nSW9JQVFnQkVFb2FpSUROZ0k0SUFBb0FtUWlBaUFBS0FKb1R3UkFJQUFvQW1naUFVRUJkRUVDSUFFYklnRWdBQ2dDYUVzRVFDQUFLQUpnSVFJZ0FDQUJFSjRiUVFBaEFRTkFJQUFvQW1RZ0FVMEVRQ0FBSUFJUU5nVWdBVUVZYkNJRklBQW9BbUJxSUFJZ0JXb2lCUkRyQlJvZ0JSQVdJQUZCQVdvaEFRd0JDd3NMSUFBb0FtUWhBZ3NnQUNBQ1FRRnFOZ0prSUFBb0FtQWdBa0VZYkdvZ0F4RHJCUm9nQXhBV0N5QUVRZEFCYWlRQUM0OEVBUWgvSXdCQkVHc2lCQ1FBSUFRZ0FEWUNEQUpBSUFCRkRRQWdCQ0FBS0FJRU5nSUFJQVFnQkVFTWFqWUNCQ0FFS0FJQUlnbEJ1UElQUmdSQUlBUW9BZ1FvQWdBaEJpTUFRVUJxSWdNa0FBSkFJQVlvQWlRb0FnUkI0UGtQUncwQUlBRW9BZ0FpQlNnQy9BSWlBQkN2QVNBRElBQkIzQUZxSUFZb0FpUVFvd2NpQURZQ1BDQUFLQUlNS0FJRVFkaXNFa2NOQUNBRlFmZ0NhaUVJSUFOQ2dJQ0FnSUFCTndJMElBTWdBMEVRYWlJSE5nSXdJQUFvQWdnb0Fpd2hBQ0FESUFVMkFnQWdBeUFITmdJSUlBTWdBMEU4YWpZQ0JDQURJQUVvQWdRMkFnd0NRQ0FBUlNBQUtBSUVJZ0ZCd1A4UlIzSkZCRUFnQUNnQ0pDQURFS2dMSUFBb0FpZ1E4aG9OQVNBRElBQW9BaWdROFJvTUFRc2dBRVVnQVVIQWdCSkhja1VFUUNBQUtBSWtJQU1RcUFzTUFRc2dBRVVnQVVHQWdSSkhjZzBBSUFBb0FpZ2dBeENvQ3dzQ1FDQURLQUkwUlEwQUlBVW9BdndDSWdBUXJ3RWdBRUhjQVdvZ0JoRGhBaUlBRVAwYklRVURRQ0FGSUFBaUFTZ0NEQ0lBUncwQUN5QURLQUl3SWdBZ0F5Z0NORUVDZEdvaEJ3TkFJQUFnQjBZTkFTQUFLQUlBSVFvZ0NDQUZFTllMUVNScUlBRW9BZ2dnQ2hEekdpQUFRUVJxSVFBTUFBc0FDeUFJSUFZUW9Cc2dBMEVRYWhBakN5QURRVUJySkFBTElBbEJ1UElQUmcwQUlBUW9BZ0JCZ0lFU1J3MEFJQVFvQWdRb0FnQW9BaVFOQUNBQ0tBSUFRUUU2QUFBTElBUkJFR29rQUFzS0FDQUFFTDBQUVFCSEM1b0JBUVYvSXdCQkVHc2lCaVFBSUFBUUhDQUFJQUFvQWd4QkFXb2lCVFlDRENBR0lBVTJBZ2dqQUVFUWF5SUZKQUFnQUVHTUFXb2lCeEMzQkNFSUlBTW9BZ0FoQXlBQ0tBSUFJUUlnQmlnQ0NDRUpJQUFvQWdnaEFDQUZJQVFwQWdBM0F3Z2dCeUFJSUFBZ0NTQUJJQUlnQXlBRlFRaHFFT3NSSWdBUUtDQUhJQWNvQWhoQkFXbzJBaGdnQlVFUWFpUUFJQVpCRUdva0FDQUFDN0FCQVFWL0l3QkJFR3NpQnlRQUlBQVFIQ0FBSUFBb0FneEJBV29pQmpZQ0RDQUhJQVkyQWdnakFFRVFheUlHSkFBZ0FFR01BV29pQ0JDM0JDRUpJQVFvQWdBaEJDQURLQUlBSVFNZ0FpZ0NBQ0VDSUFjb0FnZ2hDaUFBS0FJSUlRQWdCaUFGUVJCcU5nSUlJQVlnQlNnQ0VDQUZSem9BRENBSUlBa2dBQ0FLSUFFZ0FpQURJQVFnQmtFSWFoQ0dIeUlBRUNnZ0NDQUlLQUlZUVFGcU5nSVlJQVpCRUdva0FDQUhRUkJxSkFBZ0FBdGtBUUovSXdCQkVHc2lCQ1FBSUFCQ0FEY0NBQ0FBUW9DQWdJREFBRGNDSENBQUlBQkJDR29pQlRZQ0dDQUFJQUVvQWdBMkFnQWdBQ0FDS0FJQU5nSUVJQVJCQURvQURDQUVJQU5CQ0dvMkFnZ2dCU0FFUVFocUVJTUpJQVJCRUdva0FDQUFDeVVBSUFBUXl3OGdBRUVHRUx3UElBQkJBRFlDd0FZZ0FDQUFLQUxFQmtFQmFqWUN4QVlMR1FBZ0FDQUJLQUlBTmdJQUlBQkJCR29nQVVFRWFoRGZCQXRaQVFKL0l3QkJvQUZySWdJa0FDQUFLQUlBSWdGQkJHb1FIQ0FDUVllTUJVSFBBRUVNSUFGQnpBSnFFQmNpQVVFWWFrRzJrd3dRRGhvZ0FTQUFLQUlFS0FJQUtBSUVRUVJxRUpvQkdpQUJFQmdnQWtHZ0FXb2tBQXY2QlFFSGZ5TUFRZEFCYXlJR0pBQWdBU2dDbEFRZ0FTZ0NuQVFpQkVHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUWFBQ2F5SUZKQUJCRENBRVFRRjBRUUpxUVpZQmJFSGtBRzRpQkNBRVFReE5HeUlISUFFb0FwUUVTd1JBSUFWQ2dJQ0FnSUFCTndLVUFpQUZJQVZCRUdvaUJEWUNrQUlnQkNBQktBS2NCQkNxQ3lBQktBS1FCQ0lFSUFFb0FwUUVRU3hzYWlFSUEwQUNRQ0FFSUFoR0JFQWdBUkN3Q3lBQklBY1FoZ2tnQlNnQ2tBSWlCQ0FGS0FLVUFrRUZkR29oQnd3QkN5QUVMUUFnQkVBZ0JVRVFhaUFFRU9BR0VNRVBDeUFFUVN4cUlRUU1BUXNMQTBBZ0JDQUhSd1JBSUFWQkNHb2dBU0FFSUFSQkJHb1EvQm9nQkVFZ2FpRUVEQUVMQ3lBRlFSQnFFTUFQQ3lBRlFhQUNhaVFBQ3lBR1FjZ0JhaUFCSUFJUXdnOGdCaUFETmdMRUFTQUdJQUkyQXNBQklBRW9BcFFFSWdkQkFXc2hDQ0FDS0FJQUlRa2dBU2dDa0FRaEJTQUdLQUxNQVNFS0lBWW9Bc2dCSVFOQkFDRUNBa0FEUUNBQ0lBZEhCRUFnQlNBRFFTeHNhaUlFTFFBZ1JRUkFJQVlnQmtIQUFXb1FtQVVnQkNBR0VLMExJQVlvQXN3QklRY2dCU0FEUVN4c2FpSURJQUkyQWlnZ0F5QUhOZ0lrSUFFZ0FTZ0NuQVJCQVdvMkFwd0VJQUVnQVNnQ29BUkJBV28yQXFBRUlBQWdCRUVFYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FFS0FJa0lBcEhEUUFnQ1NBRUtBSUFSdzBBSUFCQkFqWUNBQ0FBSUFSQkJHbzJBZ1FNQXdzZ0FpQUVLQUlvU3dSQUlBWkJvQUZxSWdVZ0JrSEFBV29RbUFVZ0JpQUZFS3dMSVFVZ0JpZ0N6QUVoQnlBRklBSTJBaWdnQlNBSE5nSWtJQVVnQkJDRUNTQUZJQVVvQWloQkFXbzJBaWdnQVNBRFFRRnFJQUVvQXBRRWNDQUZFS3NMSUFFZ0FTZ0NuQVJCQVdvMkFwd0VJQUVnQVNnQ29BUkJBV28yQXFBRUlBQWdCRUVFYWpZQ0JDQUFRUUEyQWdBZ0JSQ3FBZ3dEQlNBRFFRRnFRUUFnQXlBSVJ4c2hBeUFDUVFGcUlRSU1BZ3NBQ3dzZ0JrR0d0UU5CNndOQkRpQUdRYUFCYWhBZElnRVFGeUlDUVJocVFaWTFFQTRhSUFJUUdDQUFRZ0EzQWdBZ0FSQWVDeUFHUWRBQmFpUUFDNThMQVJaL0lBQW9BZ2doQWlBQUtBSUVJUUFqQUVId0FXc2lBU1FBSUFFZ0FEWUM3QUVnQWlnQ0FDRUhJQUVnQUNnQ0NDSUZOZ0xvQVNBQlFkZ0JhaUlHSUFVb0FpUkJKR29RVXlBSFFRUnFFQndnQVNBQktBTGNBU0FCTFFEakFTSUFJQUJCR0hSQkdIVkJBRWdpQUJzMkFyUUJJQUVnQVNnQzJBRWdCaUFBR3pZQ3NBRWdBU0FCS1FPd0FUY0RDQ0FCUWJnQmFpSUFJQWRCakFKcUlBRkJDR29RbndRZ0FVSGdBR29nQWlnQ0JDQUJRZXdCYWlBQUVQd2FJQUVnQlNnQ0lEWUNxQUVnQVNBRktRSVlOd09nQVNBQklBVXBBaEEzQTVnQklBZEIrQUpxSVFBZ0FTQUZLQUlvQkg4Z0FDQUZRU2hxRU9JRUJVRUFDellDa0FFZ0FTQUFJQVVvQWl3UWx3RTJBb3dCSUFGQitBQnFJZzBnQUNBRlFUQnFFUElGSUFFZ0J6WUNZQ0FCSUEwMkFuUWdBU0FCUVl3QmFpSUFOZ0p3SUFFZ0FVR1FBV29pQXpZQ2JDQUJJQUZCdUFGcUlnSTJBbWdnQVNBQlFaZ0JhaUlHTmdKa0lBRWdCellDU0NBQklBMDJBbHdnQVNBQU5nSllJQUVnQXpZQ1ZDQUJJQUkyQWxBZ0FTQUdOZ0pNSUFFZ0J6WUNNQ0FCSUEwMkFrUWdBU0FBTmdKQUlBRWdBellDUENBQklBSTJBamdnQVNBR05nSTBJQUVnQnpZQ0dDQUJJQTAyQWlnZ0FTQUROZ0lrSUFFZ0FqWUNJQ0FCSUFZMkFod2dBU0FITmdJUUlBRWdBVUhvQVdvMkFoUWdBVUhnQUdvaEF5QUJRY2dBYWlFQ0lBRkJNR29oQmlBQlFSaHFJUUFnQVVFUWFpRVFJd0JCSUdzaUJDUUFJQVFnQlRZQ0hBSi9JQVZGQkVBZ0VCRDdHa0VBREFFTElBUWdCRUVZYWpZQ0ZDQUVJQVVvQWdRMkFnd2dCQ0FFUVJ4cU5nSVFJQVFnQkVFVWFqWUNDQ0FFS0FJTUlncEIyUGdSUmdSQUlBUW9BZ2dvQWdBaEV5QURLQUlBUVFScUlSRWdBeWdDQkNFTUlBTW9BZ2doQ1NBREtBSU1JUVVnQkNnQ0VDZ0NBQ0VTSUFNb0FoQWhCeUFES0FJVUlRTWpBRUZBYWlJT0pBQWpBRUVRYXlJUEpBQWdEa0VRYWlJSVFnQTNBZ0FnQ0VJQU53SUlJQWhDZ0lDQWdNQUFOd0lrSUFnZ0NFRVFhaUlMTmdJZ0lBZ2dCU2dDQURZQ0FDQUlJQklvQWtRMkFnd2dDQ0FTS0FKSU5nSU1JQWdnQnlnQ0FEWUNEQ0FQUVFBNkFBd2dEeUFEUVFocU5nSUlJQXNnRDBFSWFoQ0RDU0FQUVJCcUpBQWdEaUFSSUFrUTh3STJBZ3dnRVNBTUlBNUJER29nQ0NBSVFRUnFJQWhCQ0dvZ0NFRU1haUFMRUtrTElRTWdDQkREQ0NBT1FVQnJKQUFnRXlBRE5nSUFDd0pBSUFwQjJQZ1JSZzBBSUFRb0Fnd2lERUhnK1E5R0JFQWdCQ2dDRUNnQ0FCb2dCQ2dDQ0NnQ0FDRVVJQUlvQWdCQkJHb2hDaUFDS0FJRUlRa2dBaWdDQ0NFRklBSW9BZ3doQnlBQ0tBSVFJUU1nQWlnQ0ZDRUNJd0JCTUdzaUN5UUFJQXRCQ0dvZ0J5QURJQUlRK0JvaEF5QUxJQW9nQlJEekFqWUNCQ0FLSUFrZ0MwRUVhaUFESUFOQkJHb2dBMEVJYWhEMERTRUNJQU1RdkFjZ0MwRXdhaVFBSUJRZ0FqWUNBQXNnREVIZytROUdEUUFnQkNnQ0RDSUpRYUQ1RVVZRVFDQUVLQUlRS0FJQUdpQUVLQUlJS0FJQUlSVWdCaWdDQUVFRWFpRU1JQVlvQWdRaEJTQUdLQUlJSVFjZ0JpZ0NEQ0VESUFZb0FoQWhBaUFHS0FJVUlRWWpBRUV3YXlJS0pBQWdDa0VJYWlBRElBSWdCaEQ0R2lFQ0lBb2dEQ0FIRVBNQ05nSUVJQXdnQlNBS1FRUnFJQUlnQWtFRWFpQUNRUWhxRVBjYUlRWWdBaEM4QnlBS1FUQnFKQUFnRlNBR05nSUFDeUFKUWFENUVVWU5BQ0FFS0FJTUlnVkJzT3NQUmdSQUlBUW9BZ2dvQWdBaEZpQUVLQUlRS0FJQUdpTUFRUkJySWdra0FDQUFLQUlJSVFjZ0FDZ0NCQ0VESUFBb0Fnd29BZ0FoQWlBQUtBSUFJUVlnQUNnQ0VDRUFJQWxCQURvQURDQUpJQUJCQ0dvMkFnZ2dCa0VFYWlBRElBY2dBaUFKUVFocUVMNFBJUUFnQ1VFUWFpUUFJQllnQURZQ0FBc2dCVUd3Nnc5R0RRQWdCQ2dDQ0NnQ0FDRUFJQkFRK3hvZ0FFRUFOZ0lBQ3lBRUtBSVVLQUlBQ3lFQUlBUkJJR29rQUNBTkVLb0JJQUZCMkFGcUVBOGFJQUZCOEFGcUpBQWdBQXNyQUNBQVFRQTZBQ0FnQUVFQU9nQUFJQUV0QUNBRVFDQUFJQUVRcndzTElBQWdBU2tDSkRjQ0pDQUFDd3dBSUFBUStSb2dBQkRPRHdzVUFDQUFRZmdDYWhEUUJpQUFRUVJxRUk0RUdnc2tBQ0FBSUFFMkFnQWdBRUg0QW1vZ0FFRUVhaENGQlNBQUtBSUFRUUVRMFFZYUlBQUxFQUFnQUMwQTFBSUVRQ0FBRUx3REN3dG5BUUovSXdCQkVHc2lCU1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lCRFlDRENBRklBUTJBZ2dnQUVHTUFXb2lCQ0FFRU1zRUlBQW9BZ2dnQlNnQ0NDQUJJQUkxQWdBZ0F5Z0NBQkRlQ2lJQUVDZ2dCQ0FFS0FJWVFRRnFOZ0lZSUFWQkVHb2tBQ0FBQ3gwQUlBQWdBU2dDQUNnQ0FEWUNBQ0FBUVFocUlBRW9BZ1FRNndVYUN4a0FJQUFnQVNnQ0FEWUNBQ0FBUVFocUlBRkJDR29RaUFrTEdBQWdBQzBBSUFSQUlBQkJDR29RRmlBQVFRQTZBQ0FMQzJJQkFuOGdBU0FBS0FLSUFrc0VRQ0FBS0FLQUFpRURJQUFnQVJEdEMwRUFJUUVEUUNBQUtBS0VBaUFCVFFSQUlBQWdBeEEyQlNBQlFRVjBJZ0lnQUNnQ2dBSnFJQUlnQTJvaUFoQ1FDUm9nQWtFSWFoQVdJQUZCQVdvaEFRd0JDd3NMQzBFQ0FuOEJma0VHSVFJZ0FDRURJQUZCQms4RVFFRi9JQUd0UW9nQmZpSUVweUFFUWlDSXB4c1FGU0VESUFFaEFnc2dBQ0FETmdLd0JpQUFJQUkyQXJnR0Mwc0JBWDhqQUVFUWF5SUNKQUFnQUNBQlJ3UkFJQUlnQVVHd0JtbzJBZ2dnQWlBQktBS3dCaUFCUnpvQURDQUFJQUpCQ0dvUWx4c0xJQUpCRUdva0FDQUFJQUVwQThBR053UEFCZ3NiQUNBQUxRRHdEd1JBSUFCQkNHb1F4d1lnQUVFQU9nRHdEd3NMb0FFQ0EzOEJmaUFCSUFCQnlEOXFLQUlBU3dSQUlBQW9Bc0EvSVFOQkJDRUNJQUFoQkNBQlFRUlBCRUJCZnlBQnJVTHdEMzRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUN3RDhnQUVISVAyb2dBallDQUVFQUlRRURRQ0FBS0FMRVB5QUJUUVJBSUFBZ0F4QTJCU0FCUWZBUGJDSUNJQUFvQXNBL2FpQUNJQU5xSWdJUXhBc2FJQUpCQ0dvUXh3WWdBVUVCYWlFQkRBRUxDd3NMTWdFQ2Z5TUFRWUFRYXlJQ0pBQWdBaUFBRU1rYklRTWdBQ0FCRU1vUElBRWdBeERLRHlBREVJOEpJQUpCZ0JCcUpBQUxIQUFnQUNBQktBSUFLQUlBTmdJQUlBQkJDR29nQVNnQ0JCREFHd3ZNQlFJSWZ3SitJd0JCd0FGcklnUWtBQ0FCS0FKa0lBRW9BbXdpQTBHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUVRCcklnVWtBRUVHSUFOQkFYUkJBbXBCbGdGc1FlUUFiaUlESUFOQkJrMGJJZ1lnQVNnQ1pFc0VRQ0FGUW9DQWdJREFBRGNDSkNBRklBVkJFR29pQXpZQ0lDQURJQUVvQW13UTFnSWdBU2dDWUNJRElBRW9BbVJCQkhScUlRY0RRQUpBSUFNZ0IwWUVRQ0FCRU9vRklBRWdCaERvQlNBRktBSWdJZ01nQlNnQ0pFRUNkR29oQmd3QkN5QURMUUFFQkVBZ0JVRVFhaUFERUw0QkVIRUxJQU5CRUdvaEF3d0JDd3NEUUNBRElBWkhCRUFnQlNBQklBTVFqaHNnQTBFRWFpRUREQUVMQ3lBRlFSQnFFRjRMSUFWQk1Hb2tBQXNnQkVHNEFXb2dBU0FDRU5ZT0lBRW9BbVFpQ1VFQmF5RUtJQUlvQWdBaEJpQUJLQUpnSVFnZ0JDZ0N2QUVoQnlBRUtBSzRBU0VGUVFBaEFnSkFBMEFnQWlBSlJ3UkFJQWdnQlVFRWRHb2lBeTBBQkVVRVFDQURRUUU2QUFRZ0F5QUdOZ0lBSUFnZ0JVRUVkR29pQXlBQ05nSU1JQU1nQnpZQ0NDQUJJQUVvQW14QkFXbzJBbXdnQVNBQktBSndRUUZxTmdKd0lBQkNBRGNDQUF3REN3SkFJQU1vQWdnZ0IwY05BQ0FHSUFNb0FnQkhEUUFnQUVJQ053SUFEQU1MSUFJZ0F5Z0NERXNFUUNBRUlBYzJBckFCSUFRZ0JqWUNxQUVnQkNBQ05nSzBBU0FFUVFFNkFLd0JJQVFnQkNrRHNBRWlDemNERUNBRUlBUXBBNmdCSWd3M0F3Z2dCQ0FES1FJSU53T3dBU0FFSUFNcEFnQTNBNmdCSUFNZ0REY0NBQ0FESUFzM0FnZ2dCQ0FFS0FLMEFVRUJhallDdEFFZ0FTQUZRUUZxSUFFb0FtUndJQVJCcUFGcUVQUUZJQUVnQVNnQ2JFRUJhallDYkNBQklBRW9BbkJCQVdvMkFuQWdBRUlBTndJQURBTUZJQVZCQVdwQkFDQUZJQXBIR3lFRklBSkJBV29oQWd3Q0N3QUxDeUFFUVFocVFZYTFBMEhyQTBFT0lBUkJxQUZxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBQkNBRGNDQUNBQkVCNExJQVJCd0FGcUpBQUwwQWdCQ0g4akFFR0FJR3NpQnlRQUlBRkJoT0FBYWlnQ0FDQUJLQUtRWUNJRVFaWUJiRUdXQVdwQjVBQnVTUVJBSXdCQjREOXJJZ1lrQUVFR0lBUkJBWFJCQW1wQmxnRnNRZVFBYmlJRUlBUkJCazBiSWdrZ0FVR0U0QUJxS0FJQVN3UkFJQVpCMUQ5cVFvQ0FnSURBQURjQ0FDQUdJQVpCRUdvaUJEWUMwRDhnQkNBQktBS1FZQkNMR3lBQktBS0FZQ0lFSUFFb0FvUmdRUXQwYWlFS0EwQUNRQ0FFSUFwR0JFQWdBUkRzSENBQklBa1E0ZzhnQmlnQzBEOGlCQ0FHS0FMVVAwSHdEMnhxSVFVTUFRc2dCQzBBOEE4RVFDQUdRUkJxSVFVZ0JDMEE4QTlGQkVBUWJ3QUxJQVFoQ3lBRlFjUS9haWdDQUNJSUlBVkJ5RDlxS0FJQVR3UkFJQVVnQlVISVAyb29BZ0FpQ0VFQmRFRUNJQWdiRUlzYklBVW9Bc1EvSVFnTElBVWdDRUVCYWpZQ3hEOGdCU2dDd0Q4Z0NFSHdEMnhxSUFzUXhBc2FDeUFFUVlBUWFpRUVEQUVMQ3dOQUlBUWdCVWNFUUNBR1FRaHFJQUVnQkNBRVFRaHFFSThiSUFSQjhBOXFJUVFNQVFzTElBWkJFR29oQkVFQUlRVURRQ0FFS0FMRVB5QUZUUVJBSUFSQkFEWUN4RDhGSUFRb0FzQS9JQVZCOEE5c2FrRUlhaERIQmlBRlFRRnFJUVVNQVFzTElBUWdCQ2dDd0Q4UU5nc2dCa0hnUDJva0FBc2dCMEg0SDJvZ0FTQUNFTklTSUFjZ0F6WUM5QjhnQnlBQ05nTHdIeUFCS0FLRVlDSUZRUUZySVFnZ0FpZ0NBQ0VKSUFFb0FvQmdJUVFnQnlnQy9COGhDaUFIS0FMNEh5RURRUUFoQWdKQUEwQWdBaUFGUndSQUlBUWdBMEVMZEdvaUJpMEE4QTlGQkVBZ0IwSHdEMm9pQlNBSFFmQWZhaENOR3lBR0VJb2JJQVlnQlJEZ0R5QUhRZmdQYWhESEJpQUhLQUw4SHlFRklBUWdBMEVMZEdvaUF5QUNOZ0w4RHlBRElBVTJBdmdQSUFFZ0FTZ0NrR0JCQVdvMkFwQmdJQUVnQVNnQ2xHQkJBV28yQXBSZ0lBQWdCa0VJYWpZQ0JDQUFRUUEyQWdBTUF3c0NRQ0FHS0FMNER5QUtSdzBBSUFrZ0JpZ0NBRWNOQUNBQVFRSTJBZ0FnQUNBR1FRaHFOZ0lFREFNTElBSWdCaWdDL0E5TEJFQWdCeUFIUWZBZmFoQ05HeUFIUWZBUGFpQUhFTVFMSWdSQkFUb0E4QThnQnlnQy9COGhCU0FFSUFJMkF2d1BJQVFnQlRZQytBOGdCMEVJYWhESEJpQUVJQVlRakJzZ0JDQUVLQUw4RDBFQmFqWUMvQThnQTBFQmFpQUJLQUtFWUhBaEFrRUFJUU1nQVVHRTRBQnFLQUlBSWdoQkFXc2hDUUpBQTBBZ0F5QUlSZzBCSUFFb0FvQmdJQUpCQzNScUlnVXRBUEFQQkVBZ0JDQUVLQUw4RHlJS0lBVW9BdndQU3dSL0lBVWdCQkNNR3lBRUtBTDhEd1VnQ2d0QkFXbzJBdndQSUFKQkFXcEJBQ0FDSUFsSEd5RUNJQU5CQVdvaEF3d0JDd3NnQlNBRUVNb1BDeUFCSUFFb0FwQmdRUUZxTmdLUVlDQUJJQUVvQXBSZ1FRRnFOZ0tVWUNBQUlBWkJDR28yQWdRZ0FFRUFOZ0lBSUFRUWp3a01Bd1VnQTBFQmFrRUFJQU1nQ0VjYklRTWdBa0VCYWlFQ0RBSUxBQXNMSUFkQjhBOXFRWWExQTBIckEwRU9JQWNRSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCMEdBSUdva0FBc21BQ0FBUWdBM0E4QUdJQUJDZ0lDQWdPQUFOd0swQmlBQUlBQTJBckFHSUFCQkJoQzhEd3V0QVFFR2Z5TUFRUkJySWdVa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdRMkFnd2dCU0FFTmdJSUl3QkJFR3NpQkNRQUlBQkJqQUZxSWdZUXN3VWhCeUFGS0FJSUlRZ2dBQ2dDQ0NFQUlBUWdBMEVJYWpZQ0NDQURLQUlJSVFrZ0JFRUFPZ0FFSUFSQndKd2dOZ0lBSUFRZ0F5QUpSem9BRENBR0lBY2dBQ0FJSUFFZ0FpQUVRUWhxSUFRUXdRY2lBQkFvSUFZZ0JpZ0NHRUVCYWpZQ0dDQUVRUkJxSkFBZ0JVRVFhaVFBSUFBTHBnRUJBWDhqQUVIUUFHc2lCQ1FBSUFSQlFHc2dBeERnQndKL0lBUW9Ba2hGQkVBZ0JDQUNOZ0lZSUFRZ0FoRGNBVFlDSENBRUlBUXBBeGczQXdBZ0JFRWdhaUlDSUFBZ0JCRGhBU0FBSUFFZ0FoRE9BZ3dCQ3lBRUlBSTJBaEFnQkNBQ0VOd0JOZ0lVSUFRZ0JDa0RFRGNEQ0NBRVFTQnFJZ0lnQUNBRVFRaHFFT0VCSUFBZ0FTQUNJQVJCUUdzUXN3c0xJUUFnQkVGQWF4Q29BU0FFUWRBQWFpUUFJQUFMTUFBZ0FDQUFFTDhCSUFFb0FnQWdBaWdDQUNBRElBUW9BZ0FROFI0aUFSQW9JQUFnQUNnQ0dFRUJhallDR0NBQkMrQUNBUU4vSUFBb0FnQkIyQUpxSVFVakFFR3dBV3NpQkNRQUlBUWdBVFlDcUFFQ2Z5QUNRUUpyUVFKTElBTkJBbXRCQWt0eVJRUkFJQU1nQWtFRGJHcEJBblJCb01BU2FpRUJJQUFvQWdBaUFpRUdJd0JCMEFCcklnQWtBQ0FBUVVCcklBUkJxQUZxRU9BSEFuOGdBQ2dDU0VVRVFDQUFJQUVvQWdBaUFUWUNHQ0FBSUFFUTNBRTJBaHdnQUNBQUtRTVlOd01BSUFCQklHb2lBU0FDSUFBUTRRRWdBaUFGSUFFUXpnSU1BUXNnQUNBQktBSUFJZ0UyQWhBZ0FDQUJFTndCTmdJVUlBQWdBQ2tERURjRENDQUFRU0JxSWdFZ0FpQUFRUWhxRU9FQklBSWdCU0FCSUFCQlFHc1Fzd3NMSVFFZ0FFRkFheENvQVNBQVFkQUFhaVFBSUFZZ0FSQ0JBd3dCQ3lBQUtBSUFJZ0FRSENBRVFRaHFRY0N1QTBITUJrRUdJQUJCeUFKcUVCY2lBVUVZYWlJQVFmRFlDUkFPR2lBQUlBSVFJUm9nQUVIYUp4QU9HaUFBSUFNUUlSb2dBUkFZUVFBTElRQWdCRUd3QVdva0FDQUFDNjBCQVFOL0lBQW9BZ0JCMkFKcUlRSWpBRUdnQVdzaUF5UUFBbjhDUUFKQUFrQWdBUTRDQUFFQ0N5QUFJQUpCbk9ZQkVNa0dEQUlMSUFBZ0FrR0J3d0lReVFZTUFRc2dBQ2dDQUNJQUVCd2dBMEhBcmdOQmlncEJCaUFBUWNnQ2FoQVhJZ0JCR0dwQmhNd0tFQTRhSUFCQkVHb2hCRUdjNWdFaEFnSkFBa0FDUUNBQkRnSUJBQUlMUVpIbUFTRUNDeUFFUVFocUlBSVFEaG9MSUFBUUdFRUFDeUVBSUFOQm9BRnFKQUFnQUF2dkFRRUNmeUFBS0FJQVFkZ0NhaUVGSXdCQnNBRnJJZ1FrQUNBRUlBTTJBcWdCSUFRZ0FqWUNyQUVDZndKQUFrQUNRQUpBQWtBZ0FRNEVBQUVDQXdRTElBQWdCVUdmaGdVZ0JFR3NBV29nQkVHb0FXb1FzZ3NNQkFzZ0FDQUZRY3VGQlNBRVFhd0JhaUFFUWFnQmFoQ3lDd3dEQ3lBQUlBVkI0QmtnQkVHc0FXb2dCRUdvQVdvUXNnc01BZ3NnQUNBRlFaeUZCU0FFUWF3QmFpQUVRYWdCYWhDeUN3d0JDeUFBS0FJQUlnQVFIQ0FFUVFocVFjQ3VBMEdVQzBFR0lBQkJ5QUpxRUJjaUFFRVlha0hiNmdzUURob2dBRUVRYWlBQkVKNEVHaUFBRUJoQkFBc2hBQ0FFUWJBQmFpUUFJQUFMaHdJQkJIOGdBUzBBQkFSQUlBQVF6ZzhnQUNBQktBSUFJZ0lwQWdBM0FyQUdJQUFnQWlnQ0NEWUN1QVlnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBRHdzQ1FDQUFLQUs0QmlBQktBSUFJZ01vQWdSSkJFQWdBQkRPRHlBQUlBTW9BZ1FRaUJzTUFRc2dBQkRMRHdzZ0FDQURLQUlFSWdFMkFyUUdBMEFnQVNBRVN3UkFJQVJCaUFGc0lnRWdBQ2dDc0FacUlRSWdBeWdDQUNBQmFpRUJJQUpCQURvQWVDQUNRUUE2QUFBZ0FTMEFlQVJBSUFJZ0FTZ0NBRFlDQUNBQ1FRaHFJZ1ZDZ0lDQWdNQUFOd0prSUFVZ0JUWUNZQ0FGSUFGQjZBQnFFS2diSUFKQkFUb0FlQXNnQWlBQktRT0FBVGNEZ0FFZ0JFRUJhaUVFSUFBb0FyUUdJUUVNQVFzTEMvd0JBUUovSUFBb0FnQkIyQUpxSVFRakFFR3dBV3NpQXlRQUlBTWdBallDcUFFQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBSUFFT0JnQUJBd0lFQlFZTElBQWdCRUdVaGdVZ0EwR29BV29RM0FRTUJnc2dBQ0FFUWNDRkJTQURRYWdCYWhEY0JBd0ZDeUFBSUFSQmtZVUZJQU5CcUFGcUVOd0VEQVFMSUFBZ0JFSFBHU0FEUWFnQmFoRGNCQXdEQ3lBQUlBUkJqdDBFSUFOQnFBRnFFTndFREFJTElBQWdCRUdsR1NBRFFhZ0JhaERjQkF3QkN5QUFLQUlBSWdBUUhDQURRUWhxUWNDdUEwSGFDa0VHSUFCQnlBSnFFQmNpQUVFWWFrRzI2Z3NRRGhvZ0FFRVFhaUFCRUo0RUdpQUFFQmhCQUFzaEFDQURRYkFCYWlRQUlBQUxod0VCQW44Z0FDZ0NBRUhZQW1vaEJDTUFRYkFCYXlJREpBQWdBeUFDTmdLb0FRSi9JQUZCQVVZRVFDQUFJQVJCL0lVRklBTkJxQUZxRU53RURBRUxJQUFvQWdBaUFCQWNJQU5CQ0dwQndLNERRZkFLUVFZZ0FFSElBbW9RRnlJQVFSaHFRWXpxQ3hBT0dpQUFRUkJxSUFFUW5nUWFJQUFRR0VFQUN5RUFJQU5Cc0FGcUpBQWdBQXQyQVFKL0lBQW9BZ0JCMkFKcUlRTWpBRUdnQVdzaUFpUUFBbjhnQVVFQlJnUkFJQUFnQTBIZWhRVVF5UVlNQVFzZ0FDZ0NBQ0lBRUJ3Z0FrSEFyZ05CdHdwQkJpQUFRY2dDYWhBWElnQkJHR3BCM09rTEVBNGFJQUJCRUdvZ0FSQ2VCQm9nQUJBWVFRQUxJUUFnQWtHZ0FXb2tBQ0FBQzY4QkFRSi9JQUFvQWdCQjJBSnFJUUlqQUVHZ0FXc2lBeVFBQW44Q1FBSkFBa0FDUUFKQUlBRkJBV3NPQlFBQkJBSURCQXNnQUNBQ1FhK0ZCUkRKQmd3RUN5QUFJQUpCdUJrUXlRWU1Bd3NnQUNBQ1FmdmNCQkRKQmd3Q0N5QUFJQUpCakJrUXlRWU1BUXNnQUNnQ0FDSUFFQndnQTBIQXJnTkJwQXBCQmlBQVFjZ0NhaEFYSWdCQkdHcEJ1ZWtMRUE0YUlBQkJFR29nQVJDZUJCb2dBQkFZUVFBTElRQWdBMEdnQVdva0FDQUFDejBCQVg4akFFRVFheUlDSkFBZ0FpQUJOZ0lJSUFBb0FnQWlBQ0FBSUFCQjJBSnFRWXFKQlNBQ1FRaHFFSkliRUlFRElRQWdBa0VRYWlRQUlBQUwvUUVCQW44Z0FDZ0NBRUhZQW1vaEF5TUFRYUFCYXlJRUpBQUNmd0pBQWtBQ1FBSkFJQUpCQW1zT0F3QUJBZ01MSXdCQkVHc2lBaVFBSUFJZ0FUWUNDQ0FBSUFOQmova0dJQUpCQ0dvUTNBUWhBQ0FDUVJCcUpBQWdBQXdEQ3lNQVFSQnJJZ0lrQUNBQ0lBRTJBZ2dnQUNBRFFlTDJCaUFDUVFocUVOd0VJUUFnQWtFUWFpUUFJQUFNQWdzakFFRVFheUlDSkFBZ0FpQUJOZ0lJSUFBZ0EwSDU4UVlnQWtFSWFoRGNCQ0VBSUFKQkVHb2tBQ0FBREFFTElBQW9BZ0FpQUJBY0lBUkJ3SzREUWI4RlFRWWdBRUhJQW1vUUZ5SUFRUmhxSWdGQnJxZ0tFQTRhSUFFZ0FoQWhHaUFBRUJoQkFBc2hBQ0FFUWFBQmFpUUFJQUFMUGdJQ2Z3RitRUVFoQWlBQUlRTWdBVUVFVHdSQVFYOGdBYTFDR0g0aUJLY2dCRUlnaUtjYkVCVWhBeUFCSVFJTElBQWdBellDWUNBQUlBSTJBbWdMSmdFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFBZ0FSQ09HeUFDS0FJSUdpQUNRUkJxSkFBTDFRZ0JDbjhqQUVHZ0FXc2lDU1FBSUFBb0FnUWlBaEN2QVFKQUlBSkIzQUZxSUFFUTRRSWlBaWdDREJEZ0N5SUVCRUFnQkJEV0N5SUVRU1JxSVFNakFFR3dBV3NpQWlRQUlBSWdBVFlDckFFZ0FDZ0NCQ2dDQUNBQkVGZEJBVUVCUWRXZUNFSFFwd05CakFNUVN3SkFJQVFvQWtRaUFTQUJJQVFvQWtoQkFuUnFJQUpCckFGcUVKb0ZJQVFvQWtRZ0JDZ0NTRUVDZEdwR0JFQWdBa0VJYWtIUXB3TkJqZ05CQVNBQUVNd0RFQmNpQUVFWWFrR1g4d0FRRGhvZ0FCQVlEQUVMSUFJZ0F6WUNCQ0FDUVFocUlnRWdBRUhJSUdvZ0FrRUVhaERVRHlBQkVGb2dBa0dzQVdvUW54c0xJQUpCc0FGcUpBQU1BUXNDUUNBQ0tBSU1JZ1JGRFFBZ0JDZ0NCRUdRa2hKSERRQWpBRUVRYXlJQ0pBQWdBaUFCTmdJTUlBQW9BZ1FvQWdBZ0FSQlhRUUZCQVVHcG53aEIwS2NEUWVzQ0VFc2dBQ2dDQUNnQ0NFRUFFRmRCQVVFQlFZbTJDRUhRcHdOQjdBSVFTeUFDUVFBMkFnZ2dBa0VNYWlFRUl3QkIwQUZySWdFa0FDQUFRUWhxSWdBb0FzUUVJQUFvQXRBRUlnTkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0FDQURRUUYwUVFKcUVKb0VDeUFCUWNnQmFpQUFJQVFRNndNZ0FDZ0N4QVFpQjBFQmF5RUtJQVFvQWdBaEF5QUFLQUxBQkNFSUlBRW9Bc3dCSVFzZ0FTZ0N5QUVoQlFKQUEwQWdCaUFIUndSQUlBZ2dCVUV3YkdvaUJDMEFJRVVFUUNBQklBTTJBZ2dnQWlnQ0NDRURJQUVnQVVFUWFpSUhOZ0lnSUFFZ0F6WUNGQ0FCUWV6QUVqWUNFQ0FFSUFGQkNHb1FtUVFnQnhBV0lBRW9Bc3dCSVFNZ0NDQUZRVEJzYWlJRklBWTJBaXdnQlNBRE5nSW9JQUFnQUNnQzBBUkJBV28yQXRBRUlBQWdBQ2dDMUFSQkFXbzJBdFFFSUFJZ0JFRUlhallDQkNBQ1FRQTJBZ0FNQXdzQ1FDQUVLQUlvSUF0SERRQWdBeUFFS0FJQVJ3MEFJQUVnQXpZQ0NDQUNLQUlJSVFNZ0FTQUJRUkJxSWdVMkFpQWdBU0FETmdJVUlBRkI3TUFTTmdJUUlBUWdBVUVJYWhEYkJDQUZFQllnQUNBQUtBTFVCRUVCYWpZQzFBUWdBaUFFUVFocU5nSUVJQUpCQVRZQ0FBd0RDeUFHSUFRb0FpeExCRUFnQVNBRE5nS29BU0FDS0FJSUlRTWdBU0FCUWJBQmFpSUlOZ0xBQVNBQklBTTJBclFCSUFGQjdNQVNOZ0t3QVNBQlFRaHFJQUZCcUFGcUVKY0VJUU1nQVNnQ3pBRWhCeUFESUFZMkFpd2dBeUFITmdJb0lBZ1FGaUFESUFRUThBTWdBeUFES0FJc1FRRnFOZ0lzSUFBZ0JVRUJhaUFBS0FMRUJIQWdBeENXQkNBQUlBQW9BdEFFUVFGcU5nTFFCQ0FBSUFBb0F0UUVRUUZxTmdMVUJDQUNJQVJCQ0dvMkFnUWdBa0VBTmdJQUlBTVFtUU1NQXdVZ0JVRUJha0VBSUFVZ0NrY2JJUVVnQmtFQmFpRUdEQUlMQUFzTElBRkJDR3BCaHJVRFFlc0RRUTRnQVVHb0FXb1FIU0lBRUJjaUJFRVlha0dXTlJBT0dpQUVFQmdnQWtJQU53SUFJQUFRSGdzZ0FVSFFBV29rQUNBQ1FSQnFKQUFNQVFzZ0FDZ0NBQ0lBRUJ3Z0NVSFlxQVZCeVFCQkRDQUFRY2dDYWhBWElnQkJHR3BCNnJzS0VBNGFJQUFnQWlnQ0JFRUVhaENhQVJvZ0FCQVlDeUFKUWFBQmFpUUFDekFCQVg4RFFDQUFLQUprSUFGTkJFQWdBRUVBTmdKa0JTQUFLQUpnSUFGQkdHeHFFQllnQVVFQmFpRUJEQUVMQ3dzeUFRSi9JQUFvQWdnaEFRTkFJQUVFUUNBQktBSUFJUUlnQVVFTWFoQ0ZBeG9nQVJBZklBSWhBUXdCQ3dzZ0FCQ2JBd3NkQUNBQVFnQTNBZ0FnQUVHQWdJRDhBellDRUNBQVFnQTNBZ2dnQUFzaEFDQUFRUUZxSWdCQkZrc0VRRUdzNGdZUEN5QUFRUUowUWF5L0Vtb29BZ0FMSkFBZ0FFRUlhaUFCUVFaTEJIOUJyT0lHQlNBQlFRSjBRWkM2RW1vb0FnQUxFQTRhQ3c4QUlBQWdBVUg4dVJKQkJCQ01DQXNsQVFGL1FRTWhBU0FBUVFGcklnQkJBMDBFZnlBQVFRSjBRWlNBRFdvb0FnQUZRUU1MQzJzQkFuOENRQ0FBS0FKb0lBRW9BZ1JKQkVBZ0FCQ2NCQ0FBSUFFb0FnUVFuaHNNQVFzZ0FCQ2hHd3NnQUNBQktBSUVJZ0kyQW1RRFFDQUNJQU5MQkVBZ0EwRVliQ0lDSUFBb0FtQnFJQUVvQWdBZ0Ftb1EwUUVhSUFOQkFXb2hBeUFBS0FKa0lRSU1BUXNMQ3hzQUlBQkJzTFVTUWRTMUVrR1F0UkpDQUVHQWlKQ0FlQkQwQmdzTEFDQUFRZkQ4QmhBVUdnc2JBQ0FBUWNDekVrSGtzeEpCb0xNU1FnZEJnSWlRZ0hnUTlBWUxPd0VDZjBFR0lRSWdBQ0VESUFGQkJrOEVRRUYvSUFGQkJIUWdBVUgvLy8vL0FFc2JFQlVoQXlBQklRSUxJQUFnQXpZQ1lDQUFJQUkyQW1nTEJ3QWdBQkRZRHdzN0FDQUFLQUlFUWFDekVrWUVmMEVCQlNBQUVLOGJDd1IvUVFFRklBQVFzQnNFZjBFQkJTQUFFTFFEQkg4Z0FDZ0NHQkN3R3dWQkFBc0xDd3NjQVFGL0lBQVF0QU1FZnlBQUtBSVlLQUlFUWFDekVrWUZRUUFMQ3hNQUlBQkZCRUJCQUE4TElBQW9BZ1FRbHhFTFFBRUJmaUFBUlFSQVFRQVBDd0ovUVFBZ0FDZ0NCQ0lBS1FNUVFvV2tnSUNDZ0FHRElnRWdBVUlCZllOUURRQWFRUUVnQUJDQkNBMEFHaUFBRUpVUkN3dVVBUUVCZmlBQVJRUkFRUUFQQ3dKL1FRQWdBQ2dDQkNJQUtRTVFRb1hrZ0lLQ2dJa0JneUlCSUFGQ0FYMkRVQTBBR2tFQkFuOUJBQ0FBS1FNUVFvR2tnSUNBZ0FHRElnRWdBVUlCZllOUURRQWFRUUVnQUJDQkNBMEFHaUFBRUlJSUN3MEFHZ0ovUVFBZ0FDa0RFRUtFd0lDQ2dvQ0lBWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFFSjhKRFFBYUlBQVFsUndMQ3dzVEFDQUFRUUZxSWdCQkIwbEJ5QUFnQUhaeEM3d0JBUU4vSUFFdEFBUUVRQ0FBRUxnTElBQWdBU2dDQUNJQ0tRSUFOd0pnSUFBZ0FpZ0NDRFlDYUNBQktBSUFJZ0JCQURZQ0NDQUFRZ0EzQWdBUEN3SkFJQUFvQW1nZ0FTZ0NBQ0lCS0FJRVNRUkFJQUFRdUFzZ0FDQUJLQUlFRUt3YkRBRUxJQUJCQURZQ1pBc2dBQ0FCS0FJRUlnTTJBbVFEUUNBQ0lBTkpCRUFnQWtFRWRDSURJQUFvQW1CcUlnUWdBU2dDQUNBRGFpSURLUUlBTndJQUlBUWdBeWtDQ0RjQ0NDQUNRUUZxSVFJZ0FDZ0NaQ0VEREFFTEN3dExBUUovQWtBZ0FFRVJTdzBBUVFFZ0FIUWlBMEdta2dweFJRUkFJQU5CeUtRQmNVVUVRRUVCSUFCMFFaREpCSEZGRFFJZ0FSQzhFQThMSUFFUXpCQVBDeUFCRU00UUlRSUxJQUlMU0FFQmZ5QUJMUUFFQkVBZ0FCQ2NCQ0FBSUFFb0FnQWlBaWtDQURjQ1lDQUFJQUlvQWdnMkFtZ2dBU2dDQUNJQVFRQTJBZ2dnQUVJQU53SUFEd3NnQUNBQktBSUFFS2diQzFnQkFYOGpBRUVRYXlJQ0pBQWdBRUtBZ0lDQTRBQTNBclFHSUFBZ0FEWUNzQVlnQWlBQlFiQUdhallDQ0NBQ0lBRW9BckFHSUFGSE9nQU1JQUFnQWtFSWFoQ1hHeUFDUVJCcUpBQWdBQ0FCS1FQQUJqY0R3QVlMRFFBZ0FDQUJRWmJuQmhEVEVnc1dBQ0FBUWJDc0VqWUNCQ0FBUWRDc0VqWUNBQ0FBQ3hRQUlBQW9BaHdpQUNBQUtBSUFLQUlVRVFBQUN6MEFJQUFRc3dSQmtyR28rZ2RxUVpPa0JuTWlBRUVDZGtHVytLbjZCM01nQVNnQ0FHb2dBSE1pQUVFQ2RrR1crS242QjNNZ0FoRDVBbW9nQUhNTERnQWdBRUVjYWhCUElBQVF5Z1FMRmdBZ0FDQUJFTW9GSUFCQkhHb2dBVUVjYWhEZUR3c1lBQ0FBSUFFUXNnZ2lBRUVjYWlBQlFSeHFFS0VFSUFBTFBRQWdBRUlBTndJWUlBQkNnSUFFTndJSUlBQkNBRGNDQUNBQVFvQ0FnSUNBQkRjQ0VDQUFRZ0EzQWlBZ0FFS0FnSUNBZ0lDQXdEODNBaWdnQUF0RkFDQUFJQUVRd1FzaUFFSDRBR29nQVVINEFHb1F2d3NnQUVIb0FXb2dBVUhvQVdvUXZ3c2dBRUhZQW1vZ0FVSFlBbW9RdHhzZ0FFR2dDV29nQVVHZ0NXb1F0eHNMQ3dBZ0FFRzYvUVlRRkJvTEd3QWdBRUd3cWhKQjFLb1NRWkNxRWtJSFFZRElrSUo0RVBRR0N3c0FJQUJCN1A0R0VCUWFDeHNBSUFCQjBLa1NRZlNwRWtHd3FSSkNCMEdCcUpDQWVCRDBCZ3NiQUNBQVFmQ29Fa0dVcVJKQjBLZ1NRZ2RCZ0l5UWdIZ1E5QVlMVWdFQmZ5TUFRUkJySWdFa0FDQUJRWUNLa0lCNU5nSU1JQUZCQVRZQ0NDQUFJQUVvQWd3Z0FTZ0NDQkNMQ1NJQVFmQ25FallDQkNBQVFiU29FallDQUNBQVFaQ29FallDQUNBQlFSQnFKQUFnQUF1bEFRRUNmeU1BUWNBQmF5SUNKQUFnQWlBQk5nSzhBU0FDUWFDbkVpQUNRYndCYWlJQkVNWUxOZ0lJSUFBZ0FpZ0NDQ0FCS0FJQUVJc0pJZ0JCa0tjU05nSUVJQUJCMUtjU05nSUFJQUJCc0tjU05nSUFJQUlvQXJ3QklnRkJCVTFCQUVFQklBRjBRVFp4RzBVRVFDQUNRUWhxUWVDd0JVRW1RUTBnQWtHb0FXb1FIU0lCRUJjaUEwRVlha0dyM1FnUURob2dBeEFZSUFFUUhnc2dBa0hBQVdva0FDQUFDNWNCQVFKL0l3QkJ3QUZySWdJa0FDQUNJQUUyQXJ3QklBSkJ3S1lTSUFKQnZBRnFJZ0VReGdzMkFnZ2dBQ0FDS0FJSUlBRW9BZ0FRaXdraUFFR3dwaEkyQWdRZ0FFSDBwaEkyQWdBZ0FFSFFwaEkyQWdBZ0FpZ0N2QUZCQVVjRVFDQUNRUWhxUWJDeEJVRWxRUTBnQWtHb0FXb1FIU0lCRUJjaUEwRVlha0dyM1FnUURob2dBeEFZSUFFUUhnc2dBa0hBQVdva0FDQUFDeThBSUFCQkFEb0E4QThnQUVFQU9nQUFJQUV0QVBBUEJFQWdBQ0FCRU9BUEN5QUFJQUVwQS9nUE53UDREeUFBQ3hzQUlBQkI4S1VTUVpTbUVrSFFwUkpDQjBHQXFKQ0FlQkQwQmd0R0FRRi9Jd0JCRUdzaUFTUUFJQUZCZ0lpUWlIZzJBZ3dnQUNBQktBSU1FTTBiSWdCQnFLTVNOZ0lFSUFCQjNLUVNOZ0lBSUFCQmdLUVNOZ0lBSUFGQkVHb2tBQ0FBQ3lzQUlBQVF1UnNpQUVHQXRCSTJBZ1FnQUVHd3BCSTJBZ0FnQUNBQk5nSUlJQUJCb0xRU05nSUFJQUFMUWdFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FDQUNLQUlNRU13YklnQkIrS0lTTmdJRUlBQkJuS1FTTmdJQUlBQkJ5S01TTmdJQUlBSkJFR29rQUNBQUMwNEJBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUpDQnpjREFDQUFJQUlvQWd3Z0Fpa0RBQkNkQkNJQVFiQ2hFallDQkNBQVFmU2hFallDQUNBQVFkQ2hFallDQUNBQ1FSQnFKQUFnQUF0SEFRRi9Jd0JCRUdzaUFTUUFJQUZCNEtBU0VMTUVOZ0lNSUFBZ0FTZ0NEQkRPR3lJQVFkQ2dFallDQkNBQVFaU2hFallDQUNBQVFmQ2dFallDQUNBQlFSQnFKQUFnQUF0SEFRRi9Jd0JCRUdzaUFTUUFJQUZCZ0tBU0VMTUVOZ0lNSUFBZ0FTZ0NEQkRPR3lJQVFmQ2ZFallDQkNBQVFiU2dFallDQUNBQVFaQ2dFallDQUNBQlFSQnFKQUFnQUFzdUFRRi9JQUFnQVNnQ0FDSUNLUUlBTndJQUlBQWdBaWdDQ0RZQ0NDQUNFRlVnQUNBQktBSUVLQUlBTmdJTUN4WUFJQUF0QUJBRVFDQUFFQThhSUFCQkFEb0FFQXNMRUFBZ0FDMEFFRVVFUUJCdkFBc2dBQXQzQVFKL0lBRWdBQ2dDQ0VzRVFDQUFLQUlBSVFOQmZ5QUJRUVIwSUFGQi8vLy8vd0JMR3hBVklRSWdBQ0FCTmdJSUlBQWdBallDQUVFQUlRRURRQ0FBS0FJRUlBRk5CRUFnQXhDSUJBVWdBVUVFZENJQ0lBQW9BZ0JxSUFJZ0Eyb2lBaERNQ3hvZ0FoQVBHaUFCUVFGcUlRRU1BUXNMQ3d0MkFRVi9JQUFvQWdRaUJVRUJheUVHQWtBRFFDQURJQVZHRFFFZ0FDZ0NBQ0FCUVJ4c2FpSUVMUUFRQkVBZ0FpQUNLQUlZSWdjZ0JDZ0NHRXNFZnlBRUlBSVE1QThnQWlnQ0dBVWdCd3RCQVdvMkFoZ2dBVUVCYWtFQUlBRWdCa2NiSVFFZ0EwRUJhaUVEREFFTEN5QUVJQUlRNHc4TEN4SUFJQUFnQVJETUN5SUFRUUU2QUJBZ0FBc09BQ0FBRU5JYklBQWdBUkRwRHdzV0FDQUFJQUVvQWdBUVZDQUJLQUlFS0FJQU5nSU1DNzBHQVFsL0l3QkJJR3NpQXlRQVFRUWdBVUdXQVd4QjVBQnVJZ0VnQVVFRVRSc2lCU0FBS0FJRVN3UkFJQU5CQURZQ0dDQURRZ0EzQXhBZ0EwRVFhaUFBS0FJTUVOUWJJQUFvQWdBaUFTQUFLQUlFUVJ4c2FpRUdBMEFDUUNBQklBWkdCRUFnQUJEc0d5QUFJQVVRNnc4Z0F5Z0NFQ0lCSUFNb0FoUkJCSFJxSVFvTUFRc2dBUzBBRUFSQUlBRVEweHNoQnlBRFFSQnFJZ0lvQWdRaUJDQUNLQUlJVHdSQUlBSWdBaWdDQ0NJRVFRRjBRUUlnQkJzUTFCc2dBaWdDQkNFRUN5QUNJQVJCQVdvMkFnUWdBaWdDQUNBRVFRUjBhaUFIRU13TEdnc2dBVUVjYWlFQkRBRUxDd05BSUFFZ0NrY0VRQ01BUWNBQmF5SUNKQUFnQUNnQ0JDQUFLQUlNSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFnQUNBRVFRRjBRUUpxRU5rYkN5QUNRYmdCYWlBQUlBRVE1ZzhnQWlBQlFReHFOZ0swQVNBQ0lBRTJBckFCSUFBb0FnUWlCVUVCYXlFSUlBSW9BcmdCSVFaQkFDRUhBa0FEUUNBRklBZEhCRUFnQUNnQ0FDSUpJQVpCSEd4cUlnUXRBQkJGQkVBZ0FpQUNRYkFCYWhEUkd5QUVJQUlRMXhzZ0FoQVBHaUFDS0FLOEFTRUZJQWtnQmtFY2JHb2lCaUFITmdJWUlBWWdCVFlDRkNBQUlBQW9BZ3hCQVdvMkFnd2dBQ0FBS0FJUVFRRnFOZ0lRSUFNZ0JFRU1hallDRENBRFFRQTJBZ2dNQXdzZ0JDQUNLQUs4QVNBQkVPVVBCRUFnQTBFQ05nSUlJQU1nQkVFTWFqWUNEQXdEQ3lBSElBUW9BaGhMQkVBZ0FrR2dBV29pQ0NBQ1FiQUJhaERSR3lBQ0lBZ1ExaHNoQlNBQ0tBSzhBU0VKSUFVZ0J6WUNHQ0FGSUFrMkFoUWdDQkFQR2lBRklBUVE1QThnQlNBRktBSVlRUUZxTmdJWUlBQWdCa0VCYWlBQUtBSUVjQ0FGRU5VYklBQWdBQ2dDREVFQmFqWUNEQ0FBSUFBb0FoQkJBV28yQWhBZ0F5QUVRUXhxTmdJTUlBTkJBRFlDQ0NBRkVLd0hEQU1GSUFaQkFXcEJBQ0FHSUFoSEd5RUdJQWRCQVdvaEJ3d0NDd0FMQ3lBQ1FZYTFBMEhyQTBFT0lBSkJvQUZxRUIwaUJCQVhJZ1ZCR0dwQmxqVVFEaG9nQlJBWUlBTkNBRGNDQ0NBRUVCNExJQUpCd0FGcUpBQWdBVUVRYWlFQkRBRUxDMEVBSVFBRFFDQURLQUlVSUFCTkJFQWdBMEVBTmdJVUJTQURLQUlRSUFCQkJIUnFFQThhSUFCQkFXb2hBQXdCQ3dzZ0F5Z0NFQkNJQkFzZ0EwRWdhaVFBQ3lzQUlBQkJBRG9BT0NBQVFRQTZBQUFnQVMwQU9BUkFJQUFnQVJES0N3c2dBQ0FCS1FJOE53SThJQUFMY3dJQ2Z3RitJQUVnQUNnQ0NFc0VRQ0FBS0FJQUlRTkJmeUFCclVJa2ZpSUVweUFFUWlDSXB4c1FGU0VDSUFBZ0FUWUNDQ0FBSUFJMkFnQkJBQ0VCQTBBZ0FDZ0NCQ0FCVFFSQUlBTVFpQVFGSUFGQkpHd2lBaUFBS0FJQWFpQUNJQU5xRU1BS0dpQUJRUUZxSVFFTUFRc0xDd3N3QVFKL0l3QkJNR3NpQWlRQUlBSWdBQkQ3RFNFRElBQWdBUkRuRHlBQklBTVE1dzhnQXhETUJDQUNRVEJxSkFBTEhBQWdBQ0FCS0FJQUtRSUFOd0lBSUFCQkNHb2dBU2dDQkJCV0dndHNBZ0ovQW40akFFRVFheUlESkFBakFFRWdheUlDSkFBZ0FTa0NBQ0VFSUFJZ0FDa0NBQ0lGTndNUVFRQWhBQ0FGUWlDSXB5QUVRaUNJcDBZRVFDQUNJQVEzQXdnZ0FpQUVOd01ZSUFKQkVHb2dBa0VJYWhBbFJTRUFDeUFDUVNCcUpBQWdBMEVRYWlRQUlBQUxHZ0VCZmlBQUtRSUFJZ0duSWdBZ0FDQUJRaUNJcDJvUTZBOExLZ0VDZnlNQVFSQnJJZ1FrQUNBQklBQW9BaWhHQkVBZ0FpQUFFTjRiSVFNTElBUkJFR29rQUNBREN6TUJBWDhqQUVFUWF5SURKQUFnQWhEZkd5RUNJQUVvQWdRaEFTQUFJQUkyQWdRZ0FDQUNJQUZ3TmdJQUlBTkJFR29rQUF0SUFRRi9JQUV0QUFRRVFDQUFFUGdOSUFBZ0FTZ0NBQ0lDS1FJQU53SUFJQUFnQWlnQ0NEWUNDQ0FCS0FJQUlnQkJBRFlDQ0NBQVFnQTNBZ0FQQ3lBQUlBRW9BZ0FRenhZTFNBRUJmeUFCTFFBRUJFQWdBQkNDRGlBQUlBRW9BZ0FpQWlrQ0FEY0NBQ0FBSUFJb0FnZzJBZ2dnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBRHdzZ0FDQUJLQUlBRVBnV0N5c0FJQUJCQURvQUVDQUFRUUE2QUFBZ0FTMEFFQVJBSUFBZ0FSRHBEd3NnQUNBQktRSVVOd0lVSUFBTCtRRUJCbjhqQUVIQUFXc2lBeVFBSUFOQnVBRnFJQUVnQWhEaEd5QUJLQUlFSWdkQkFXc2hDQ0FES0FLNEFTRUVBa0FEUUNBRklBZEhCRUFnQVNnQ0FDQUVRVEJzYWlJR0xRQWtSUVJBSUFCQkFEWUNCQ0FBUVFBNkFBQU1Bd3NnQmlBREtBSzhBU0FDRU9BYkJFQWdBQ0FFTmdJRUlBQkJBVG9BQUF3REN5QUZJQVlvQWl4TEJFQWdBRUVBTmdJRUlBQkJBRG9BQUF3REJTQUVRUUZxUVFBZ0JDQUlSeHNoQkNBRlFRRnFJUVVNQWdzQUN3c2dBMEVJYWtHR3RRTkJuZ1JCRGlBRFFhZ0JhaEFkSWdFUUZ5SUNRUmhxUWRJMUVBNGFJQUlRR0NBQVFRQTJBZ1FnQUVFQU9nQUFJQUVRSGdzZ0EwSEFBV29rQUFzS0FDQUFFTzBQUVFCSEN5a0FJQUFnQVRZQ0FDQUFRUVJxSUFJUVZCb2dBRUVBTmdJUUlBQWdBU2dDRUVFQmF6WUNGQ0FBQzdnSEFRaC9Jd0JCNEFGcklnY2tBQ0FCS0FJRUlBRW9BZ3dpQkVHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUVNCcklnVWtBRUVFSUFSQkFYUkJBbXBCbGdGc1FlUUFiaUlFSUFSQkJFMGJJZ2tnQVNnQ0JFc0VRQ0FGUVFBMkFoZ2dCVUlBTndNUUlBVkJFR29nQVNnQ0RCRGJHeUFCS0FJQUlnUWdBU2dDQkVFd2JHb2hDZ05BQWtBZ0JDQUtSZ1JBSUFFUTZ4c2dBU0FKRU93UElBVW9BaEFpQkNBRktBSVVRU1JzYWlFR0RBRUxJQVF0QUNRRVFDQUVFT2dMSVFzZ0JVRVFhaUlHS0FJRUlnZ2dCaWdDQ0U4RVFDQUdJQVlvQWdnaUNFRUJkRUVDSUFnYkVOc2JJQVlvQWdRaENBc2dCaUFJUVFGcU5nSUVJQVlvQWdBZ0NFRWtiR29nQ3hEQUNob0xJQVJCTUdvaEJBd0JDd3NEUUNBRUlBWkhCRUFnQlVFSWFpQUJJQVFnQkVFSWFoRG9HeUFFUVNScUlRUU1BUXNMUVFBaEJBTkFJQVVvQWhRZ0JFMEVRQ0FGUVFBMkFoUUZJQVVvQWhBYUlBUkJBV29oQkF3QkN3c2dCU2dDRUJDSUJBc2dCVUVnYWlRQUN5QUhRZGdCYWlBQklBSVE0UnNnQnlBRE5nTFVBU0FISUFJMkF0QUJJQUVvQWdRaUJrRUJheUVJSUFjb0F0Z0JJUVJCQUNFREFrQURRQ0FESUFaSEJFQWdBU2dDQUNJSklBUkJNR3hxSWdVdEFDUkZCRUFnQjBFSWFpSUNJQWRCMEFGcUVOMGJJQVVRMEFzZ0JTQUNFUGtOSUFjb0F0d0JJUUlnQ1NBRVFUQnNhaUlFSUFNMkFpd2dCQ0FDTmdJb0lBRWdBU2dDREVFQmFqWUNEQ0FCSUFFb0FoQkJBV28yQWhBZ0FDQUZRUWhxTmdJRUlBQkJBRFlDQUF3REN5QUZJQWNvQXR3QklBSVE0QnNFUUNBQVFRSTJBZ0FnQUNBRlFRaHFOZ0lFREFNTElBTWdCU2dDTEVzRVFDQUhRYWdCYWlJQ0lBZEIwQUZxRU4wYklBZEJDR29nQWhEQUNpSUNRUUU2QUNRZ0J5Z0MzQUVoQmlBQ0lBTTJBaXdnQWlBR05nSW9JQUlnQlJEY0d5QUNJQUlvQWl4QkFXbzJBaXdnQkVFQmFpQUJLQUlFY0NFRFFRQWhCQ0FCS0FJRUlnaEJBV3NoQ1FKQUEwQWdCQ0FJUmcwQklBRW9BZ0FnQTBFd2JHb2lCaTBBSkFSQUlBSWdBaWdDTENJS0lBWW9BaXhMQkg4Z0JpQUNFTndiSUFJb0Fpd0ZJQW9MUVFGcU5nSXNJQU5CQVdwQkFDQURJQWxIR3lFRElBUkJBV29oQkF3QkN3c2dCaUFDRU9jUEN5QUJJQUVvQWd4QkFXbzJBZ3dnQVNBQktBSVFRUUZxTmdJUUlBQWdCVUVJYWpZQ0JDQUFRUUEyQWdBZ0FoRE1CQXdEQlNBRVFRRnFRUUFnQkNBSVJ4c2hCQ0FEUVFGcUlRTU1BZ3NBQ3dzZ0IwRUlha0dHdFFOQjZ3TkJEaUFIUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBSFFlQUJhaVFBQzNVQkJYOGdBQ2dDQUNJQ0tBSVFJZ01nQUNnQ0VFWUVRQ0FBS0FJTUR3c2pBRUVRYXlJQkpBQWdBVUVJYWlBQ0lBQkJCR29RNVJzZ0FTZ0NEQ0VFSUFJb0FnQWhBaUFCTFFBSUlRVWdBVUVRYWlRQUlBSWdCRUV3YkdwQkNHcEJBQ0FGR3lFQklBQWdBellDRUNBQUlBRTJBZ3dnQVF1QkFnRURmeUFBSUFFb0FnQTJBZ0FqQUVFUWF5SUNKQUFnQUVFRWFpSURJQUZCQkdvaUJFY0VRQ0FDUVFFNkFBd2dBaUFFTmdJSUlBTWdBa0VJYWhEakd3c2dBa0VRYWlRQUlBQWdBU2tDRURjQ0VDTUFRUkJySWdJa0FDQUFRUmhxSWdNZ0FVRVlhaUlFUndSQUlBSkJBVG9BRENBQ0lBUTJBZ2dnQXlBQ1FRaHFFT0liQ3lBQ1FSQnFKQUFnQUNBQktRSWtOd0lrSUFBZ0FTZ0NMRFlDTENNQVFSQnJJZ0lrQUNBQVFUQnFJZ0FnQVVFd2FrY0VRQ0FBRU8wYklBSWdBQ2tDQ0RjRENDQUNJQUFwQWdBM0F3QWdBQ0FCS1FJNE53SUlJQUFnQVNrQ01EY0NBQ0FCSUFJcEF3ZzNBamdnQVNBQ0tRTUFOd0l3Q3lBQ1FSQnFKQUFMSWdBZ0FCRDlEU0FBUVFRUTdBOGdBRUVBTmdJTUlBQWdBQ2dDRUVFQmFqWUNFQXNpQUNBQUVQWU5JQUJCQkJEckR5QUFRUUEyQWd3Z0FDQUFLQUlRUVFGcU5nSVFDellCQW44Z0FDZ0NBQ0VCQTBBZ0FRUkFJQUVvQW9DQUJDRUNJQUVRSHlBQ0lRRU1BUXNMSUFCQ2dJQUVOd0lJSUFCQ0FEY0NBQXNxQVFGL0lBQkJNR29RN1JzZ0FFRVlhaUlCRU93YklBRVErQTBnQUVFRWFpSUFFT3NiSUFBUWdnNExqQUVCQVg4akFFRWdheUlJSkFBZ0NDQUNOZ0lZSUFnZ0FUWUNIQ0FJSUFNMkFoUWdDQ0FFTmdJUUlBZ2dCVFlDRENBSUlBYzJBZ2dnQUNBSUtBSWNJQWdvQWhnZ0NDZ0NGQ0FJS0FJUUlBZ29BZ3dnQ0NnQ0NCRDFEeUlBUWFpY0VqWUNCQ0FBUWRpZEVqWUNBQ0FBUVFBMkFsUWdBQ0FHTmdKUUlBQkJpSjBTTmdJQUlBaEJJR29rQUNBQUN4QUFJQUJCOEFKcUVESWFJQUFRNkFjTEVBQWdBRUhzQW1vUU1ob2dBQkRvQndzTUFDQUFFTGtMR2lBQUVCOExEQUFnQUJETkJob2dBQkFmQzlFQkFRRi9Jd0JCd0FGcklnY2tBQ0FISUFVMkFyZ0JJQWNnQkRZQ3ZBRWdCeUFHTmdLMEFTTUFRVEJySWdRa0FDQUVRUkJxSUFJUVZpRUNJQU1vQWdBaEF5QUVRUUE2QUF3Z0JDQUROZ0lJSUFBZ0FpQUVRUWhxSUFjb0Fyd0JJQWNvQXJnQklBY29BclFCRUkwSklnQkJnSmtTTmdJRUlBQkI3SmtTTmdJQUlBUkJNR29rQUNBQUlBRTJBcGdCSUFCQnVKa1NOZ0lBSUFGRkJFQWdCMEc1bUFWQkgwRUpJQWRCb0FGcUVCMGlBUkFYSWdKQkdHcEI4YW9JRUE0YUlBSVFHQ0FCRUI0TElBZEJ3QUZxSkFBZ0FBc3JBQ0FBUVFBNkFDQWdBRUVBT2dBQUlBRXRBQ0FFUUNBQUlBRVF6d3NMSUFBZ0FTa0RLRGNES0NBQUM0NEJBZ04vQVg0Z0FTQUFLQUtZQVVzRVFDQUFLQUtRQVNFRFFRUWhBaUFBSVFRZ0FVRUVUd1JBUVg4Z0FhMUNKSDRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUNrQUVnQUNBQ05nS1lBVUVBSVFFRFFDQUFLQUtVQVNBQlRRUkFJQUFnQXhBMkJTQUJRU1JzSWdJZ0FDZ0NrQUZxSUFJZ0Eyb1EwUXNhSUFGQkFXb2hBUXdCQ3dzTEN6QUJBbjhqQUVFd2F5SUNKQUFnQWlBQUVQb2JJUU1nQUNBQkVQWVBJQUVnQXhEMkR5QURFTXdFSUFKQk1Hb2tBQXNXQUNBQUlBRW9BZ0FRVmlBQktBSUVLUUlBTndJY0N6UUJBWDhEUUNBQUtBS2tBaUFCVFFSQUlBQkJBRFlDcEFJRklBQW9BcUFDSUFGQk1HeHFFTXdFSUFGQkFXb2hBUXdCQ3dzTEt3QWdBRUVBT2dBa0lBQkJBRG9BQUNBQkxRQWtCRUFnQUNBQkVQY1BDeUFBSUFFcEFpZzNBaWdnQUF2SUJ3RUlmeU1BUWRBQmF5SUlKQUFnQVNnQ3BBSWlCU0FCS0FLc0FpSUVRWllCYkVHV0FXcEI1QUJ1U1FSQUl3QkJzQUZySWdZa0FFRUdJQVJCQVhSQkFtcEJsZ0ZzUWVRQWJpSUVJQVJCQmswYklna2dBU2dDcEFKTEJFQWdCa0tBZ0lDQXdBQTNBcVFCSUFZZ0JrRVFhaUlFTmdLZ0FTQUVJQUVvQXF3Q0VQWWJJQUVvQXFBQ0lnUWdBU2dDcEFKQk1HeHFJUW9EUUFKQUlBUWdDa1lFUUNBQkVQd2JJQUVnQ1JENER5QUdLQUtnQVNJRUlBWW9BcVFCUVNSc2FpRUZEQUVMSUFRdEFDUUVRQ0FFRU9nTElRc2dCa0VRYWlJRktBS1VBU0lISUFVb0FwZ0JUd1JBSUFVZ0JTZ0NtQUVpQjBFQmRFRUNJQWNiRVBZYklBVW9BcFFCSVFjTElBVWdCMEVCYWpZQ2xBRWdCU2dDa0FFZ0IwRWtiR29nQ3hEUkN4b0xJQVJCTUdvaEJBd0JDd3NEUUNBRUlBVkhCRUFnQmtFSWFpQUJJQVFnQkVFY2FoRDdHeUFFUVNScUlRUU1BUXNMSUFaQkVHb2hCRUVBSVFVRFFDQUVLQUtVQVNBRlRRUkFJQVJCQURZQ2xBRUZJQVFvQXBBQkdpQUZRUUZxSVFVTUFRc0xJQVFnQkNnQ2tBRVFOZ3NnQmtHd0FXb2tBQ0FCS0FLa0FpRUZDeUFDS0FJQUlRY2dDQ0FETmdMTUFTQUlJQUkyQXNnQklBVkJBV3NoQ1NBSElBVndJUVJCQUNFREFrQURRQ0FESUFWSEJFQWdBU2dDb0FJaUNpQUVRVEJzYWlJR0xRQWtSUVJBSUFnZ0NFSElBV29RK0JzZ0JoRFFDeUFHSUFnUTl3OGdDaUFFUVRCc2FpSUNJQU0yQWl3Z0FpQUhOZ0lvSUFFZ0FTZ0NyQUpCQVdvMkFxd0NJQUVnQVNnQ3NBSkJBV28yQXJBQ0lBQWdCa0VjYWpZQ0JDQUFRUUEyQWdBTUF3c2dCaUFISUFJUXVoMEVRQ0FBUVFJMkFnQWdBQ0FHUVJ4cU5nSUVEQU1MSUFNZ0JpZ0NMRXNFUUNBSVFhQUJhaUlDSUFoQnlBRnFFUGdiSUFnZ0FoRFJDeUlDUVFFNkFDUWdBaUFETmdJc0lBSWdCellDS0NBQ0lBWVE5eHNnQWlBQ0tBSXNRUUZxTmdJc0lBUkJBV29nQVNnQ3BBSndJUU5CQUNFRUlBRW9BcVFDSWdkQkFXc2hDUUpBQTBBZ0JDQUhSZzBCSUFFb0FxQUNJQU5CTUd4cUlnVXRBQ1FFUUNBQ0lBSW9BaXdpQ2lBRktBSXNTd1IvSUFVZ0FoRDNHeUFDS0FJc0JTQUtDMEVCYWpZQ0xDQURRUUZxUVFBZ0F5QUpSeHNoQXlBRVFRRnFJUVFNQVFzTElBVWdBaEQyRHdzZ0FTQUJLQUtzQWtFQmFqWUNyQUlnQVNBQktBS3dBa0VCYWpZQ3NBSWdBQ0FHUVJ4cU5nSUVJQUJCQURZQ0FDQUNFTXdFREFNRklBUkJBV3BCQUNBRUlBbEhHeUVFSUFOQkFXb2hBd3dDQ3dBTEN5QUlRWWExQTBIckEwRU9JQWhCb0FGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFoQjBBRnFKQUFMSlFBZ0FCRDVHeUFBUVFZUStBOGdBRUVBTmdLc0FpQUFJQUFvQXJBQ1FRRnFOZ0t3QWdzdUFRRi9BbjhnQUJEZ0N5SUJSUVJBQTBCQkFDQUFLQUlNSWdCRkRRSWFJQUFRNEFzaUFVVU5BQXNMSUFFTEMyQUFJQUFRNlFjaUFFR1FtQkkyQWdRZ0FFSG9tQkkyQWdBZ0FFSUFOd0lrSUFCQkFUb0FJQ0FBUWdnM0F4Z2dBQ0FETmdJUUlBQWdBallDRENBQUlBRTJBZ2dnQUVISW1CSTJBZ0FnQUVJQU53SXNJQUJCZ0lDQS9BTTJBalFnQUFzZEFDQUFRYVFEYWhCUElBQkJsQUpxRUs0RUlBQkJDR29Ra3dVZ0FBc0xBQ0FBUVRCcUVGNGdBQXVSQVFFQmZ5TUFRU0JySWdra0FDQUpJQUkyQWhnZ0NTQUJOZ0ljSUFrZ0F6WUNGQ0FKSUFRMkFoQWdDU0FGTmdJTUlBa2dCem9BQ3lBSklBZzJBZ1FnQUNBSktBSWNJQWtvQWhnZ0NTZ0NGQ0FKS0FJUUlBa29BZ3dnQ1MwQUN5QUpLQUlFRUp3RklnQkJpSllTTmdJRUlBQkJpSmNTTmdJQUlBQWdCallDTENBQVFkaVdFallDQUNBSlFTQnFKQUFnQUFzbEFRRi9BMEFnQUFSQUlBQW9BZ0FoQVNBQVFReHFFSzRFSUFBUUh5QUJJUUFNQVFzTEN4NEFJQUZCcEFOcUlBQW9BZ0FRK2c4aUFFVUVRRUVBRHdzZ0FDZ0NFQXMrQVFGL0lBQW9BZ1FoQWdKQUlBRkJnQXBxSUFBb0FnQW9BZ0FRK2c4aUFRUkFJQUVvQWhBaUFRMEJDeUFBS0FJQUlBSW9BaUFRZ3h3aEFRc2dBUXRFQVFGL0FrQURRQ0FCSWdKQkpHb2dBQ2dDQUNnQ0FCRDZEeUlCQkVBZ0FTZ0NFQ0lCRFFJTElBSW9BZ3dpQVEwQUN5QUFLQUlFSUFJb0FoQVFoQndoQVFzZ0FRc1NBQ0FBS0FJQUlBQW9BZ1FvQWlBUWd4d0xaQUVCZnlBQVFZQUthaEJQSUFCQjVBbHFFRElhSUFCQjJBbHFFRElhSUFCQnpBbHFFRElhSUFCQi9BWnFJZ0ZCekFCcUVLRUdJQUVRbFFFZ0FFSHNCV29RcmdRZ0FFSHNBMm9Ra1FrZ0FFSHNBV29Ra1FrZ0FFSGNBR29RcmdRZ0FCQ1RDUXNMQUNBQVFUQnFFQ01nQUF2akFRRUJmeU1BUWRBQmF5SUlKQUFnQ0NBRE5nTElBU0FJSUFFMkFzd0JJQWdnQlRZQ3hBRWdDQ0FHTmdMQUFTQUlJQWM2QUw4QklBZ2dBaWdDQ0RZQ0NDQUFJQWdvQXN3QklBZ29BZ2dnQ0NnQ3lBRWdDQ2dDeEFFZ0NDZ0N3QUVnQ0MwQXZ3RkJBQkNjQlNJQVFhQ1JFallDQkNBQVFkQ1JFallDQUNBQUlBSTJBaXdnQUVIQWtSSTJBZ0FnQUVFd2FpQUVFTDhKSUFnb0FzZ0JJZ0VnQWlnQ09FNGdBVVZ5UlFSQUlBaEJDR3BCdEt3RlFTUkJDU0FJUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRZmZlQ0JBT0dpQUNFQmdnQVJBZUN5QUlRZEFCYWlRQUlBQUxId0FnQUVFQU5nSUFJQUJDZ0lDQWdJQUJOd0lvSUFBZ0FFRUVhallDSkFzYkFDQUFFT2tISWdCQjZKQVNOZ0lFSUFCQm1KRVNOZ0lBSUFBTEdnQWdBQ0FCS0FJQU5nSUFJQUJCQ0dvZ0FVRUlhaERSQVJvTENnQWdBQ2dDUUJESkF3c2JBQ0FBSUFGQnZJMFNRZlNORWtHQWpSSkJnSWlRaUhnUXdBd0xHd0FnQUNBQlFhQ05Fa0hZalJKQjZJd1NRY0NJa0poNEVNQU1DeEVBSUFBdEFEd0VRQ0FBUVFBNkFEd0xDNDRCQWdOL0FYNGdBU0FBS0FMb0Ewc0VRQ0FBS0FMZ0F5RURRUWdoQWlBQUlRUWdBVUVJVHdSQVFYOGdBYTFDUEg0aUJhY2dCVUlnaUtjYkVCVWhCQ0FCSVFJTElBQWdCRFlDNEFNZ0FDQUNOZ0xvQTBFQUlRRURRQ0FBS0FMa0F5QUJUUVJBSUFBZ0F4QTJCU0FCUVR4c0lnSWdBQ2dDNEFOcUlBSWdBMm9RMmdzYUlBRkJBV29oQVF3QkN3c0xDelVCQW44akFFSFFBR3NpQWlRQUlBSkJDR29nQUJDZEhDRURJQUFnQVJDQkVDQUJJQU1RZ1JBZ0F4Q1VDU0FDUWRBQWFpUUFDeGNBSUFBZ0FTZ0NBQkRtQnlBQktBSUVLQUlBTmdJNEM2Z0JBZ04vQVg0Z0FTQUFLQUxJQVVzRVFDQUFLQUxBQVNFRVFRZ2hBeUFBSVFJZ0FVRUlUd1JBUVg4Z0FhMUNHSDRpQmFjZ0JVSWdpS2NiRUJVaEFpQUJJUU1MSUFBZ0FqWUN3QUVnQUNBRE5nTElBVUVBSVFFRFFDQUFLQUxFQVNBQlRRUkFJQUFnQkJBMkJTQUJRUmhzSWdJZ0FDZ0N3QUZxSWdNZ0FpQUVhaUlDS1FJQU53SUFJQU1nQWlrQ0VEY0NFQ0FESUFJcEFnZzNBZ2dnQVVFQmFpRUJEQUVMQ3dzTE1BRUJmZ0ovUVFBZ0FDa0RFRUtFd0lDQ0FvTWlBU0FCUWdGOWcxQU5BQnBCQVNBQUVQSUhEUUFhSUFBUWdBWUxDMzBCQTM4Z0FTQUFLQUtJQVVzRVFDQUFLQUtBQVNFRUlBQWdBUkRCSGtFQUlRRURRQ0FBS0FLRUFTQUJUUVJBSUFBZ0JCQTJCU0FCUVFWMElnSWdBQ2dDZ0FGcUlnTWdBaUFFYWlJQ0tRTUFOd01BSUFNZ0Fpa0RHRGNER0NBRElBSXBBeEEzQXhBZ0F5QUNLUU1JTndNSUlBRkJBV29oQVF3QkN3c0xDNXdCQVFaL0l3QkJNR3NpQmlRQUlBQW9BcVFDSWdkQkFXc2hDQUpBQTBBZ0JDQUhSZzBCSUFBb0FxQUNJQUZCTUd4cUlnTXRBQ0FFUUNBQ0lBSW9BaXdpQlNBREtBSXNTd1IvSUFZZ0EwRXdFSDBoQlNBRElBSkJNQkI5R2lBQ0lBVkJNQkI5S0FJc0JTQUZDMEVCYWpZQ0xDQUJRUUZxUVFBZ0FTQUlSeHNoQVNBRVFRRnFJUVFNQVFzTElBTWdBa0V3RUgwYUN5QUdRVEJxSkFBTDNRY0NDbjhCZmlNQVFhQUJheUlGSkFCQkJpQUJRWllCYkVIa0FHNGlBU0FCUVFaTkd5SUdJQUFvQXFRQ1N3UkFJQVZDZ0lDQWdNQUFOd0tVQVNBRklBVkJFR29pQVRZQ2tBRWdBU0FBS0FLd0FoQ1dIQ0FBS0FLZ0FpSUJJQUFvQXFRQ1FUQnNhaUVIQTBBQ1FDQUJJQWRHQkVBZ0FCQ3FIQ0FBSUFZUWh4QWdCU2dDa0FFaUFTQUZLQUtVQVVFRmRHb2hDUXdCQ3lBQkxRQWdCRUFnQVJEZ0JpRURJQVZCRUdvaUFpZ0NoQUVpQkNBQ0tBS0lBVThFUUNBQ0lBSW9Bb2dCSWdSQkFYUkJBaUFFR3hDV0hDQUNLQUtFQVNFRUN5QUNJQVJCQVdvMkFvUUJJQUlvQW9BQklBUkJCWFJxSWdJZ0F5a0RHRGNER0NBQ0lBTXBBeEEzQXhBZ0FpQURLUU1JTndNSUlBSWdBeWtEQURjREFBc2dBVUV3YWlFQkRBRUxDd05BSUFFZ0NVY0VRQ01BUWVBQmF5SUNKQUFnQUNnQ3BBSWdBQ2dDc0FJaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBTkJBWFJCQW1vUW1Cd0xJd0JCRUdzaUJDUUFJQUVRc3d3aEF5QUFLQUtrQWlFR0lBSWdBellDM0FFZ0FpQURJQVp3TmdMWUFTQUVRUkJxSkFBZ0FDZ0NwQUlpQ2tFQmF5RUxJQUVwQXdBaERDQUFLQUtnQWlFSElBSW9BdHdCSVFnZ0FpZ0MyQUVoQkVFQUlRWUNRQU5BSUFZZ0NrY0VRQ0FISUFSQk1HeHFJZ010QUNCRkJFQWdBaUFCS0FJWU5nSVlJQUlnQVNrQ0VEY0RFQ0FDSUFFcEFnZzNBd2dnQXlBTU53TUFJQU1nQWlrRENEY0RDQ0FESUFJcEF4QTNBeEFnQXlBQ0tBSVlOZ0lZSUFOQkFUb0FJQ0FDS0FMY0FTRUlJQWNnQkVFd2JHb2lCQ0FHTmdJc0lBUWdDRFlDS0NBQUlBQW9BckFDUVFGcU5nS3dBaUFBSUFBb0FyUUNRUUZxTmdLMEFpQUZJQU5CQ0dvMkFnd2dCVUVBTmdJSURBTUxBa0FnQXlnQ0tDQUlSdzBBSUF3Z0F5a0RBRklOQUNBRlFRSTJBZ2dnQlNBRFFRaHFOZ0lNREFNTElBWWdBeWdDTEVzRVFDQUNJQUVvQWhnMkFzQUJJQUlnQVNrQ0VEY0R1QUVnQWlBQktRSUlOd093QVNBQ0lBWTJBdFFCSUFJZ0NEWUMwQUVnQWlBTU53T29BU0FDUVFFNkFNZ0JJQUpCQ0dvaUJ5QUNRYWdCYWlJR1FUQVFmUm9nQmlBRFFUQVFmUm9nQXlBSFFUQVFmU0VESUFJZ0FpZ0MxQUZCQVdvMkF0UUJJQUFnQkVFQmFpQUFLQUtrQW5BZ0JoQ1hIQ0FBSUFBb0FyQUNRUUZxTmdLd0FpQUFJQUFvQXJRQ1FRRnFOZ0swQWlBRklBTkJDR28yQWd3Z0JVRUFOZ0lJREFNRklBUkJBV3BCQUNBRUlBdEhHeUVFSUFaQkFXb2hCZ3dDQ3dBTEN5QUNRUWhxUVlhMUEwSHJBMEVPSUFKQnFBRnFFQjBpQXhBWElnUkJHR3BCbGpVUURob2dCQkFZSUFWQ0FEY0NDQ0FERUI0TElBSkI0QUZxSkFBZ0FVRWdhaUVCREFFTEN5QUZRUkJxRU53RkN5QUZRYUFCYWlRQUM1Z0JBZ04vQVg0Z0FTQUFLQUpvU3dSQUlBQW9BbUFoQkVFSUlRSWdBQ0VESUFGQkNFOEVRRUYvSUFHdFFneCtJZ1duSUFWQ0lJaW5HeEFWSVFNZ0FTRUNDeUFBSUFNMkFtQWdBQ0FDTmdKb1FRQWhBUU5BSUFBb0FtUWdBVTBFUUNBQUlBUVFOZ1VnQVVFTWJDSUNJQUFvQW1CcUlnTWdBaUFFYWlJQ0tRSUFOd0lBSUFNZ0FpZ0NDRFlDQ0NBQlFRRnFJUUVNQVFzTEN3c2ZBUUYrSUFFcEF3QWhBaUFBUWY4Qk9nQUlJQUFnQWpjREFDQUFFSU1RQ3dvQUlBQkIyS3dTRUVnTE5RRUJmd05BSUFBb0F1UUdJQUZOQkVBZ0FFRUFOZ0xrQmdVZ0FDZ0M0QVlnQVVISUFHeHFFSlFKSUFGQkFXb2hBUXdCQ3dzTEt3QWdBRUVBT2dBOElBQkJBRG9BQUNBQkxRQThCRUFnQUNBQkVJUVFDeUFBSUFFcEFrQTNBa0FnQUFzTkFDQUFJQUZDTUVFR0VONFNDNm9CQVFKL0l3QkJzQUZySWdRa0FDQUVJQUkyQXF3QklBRW9Bb3dFSWdJZ0FTZ0NrQVJCQW5ScUlRVUNRQUpBQWtBRFFDQUNJQVZHRFFFZ0FpZ0NBQ0lCSUFRb0Fxd0JSZzBDSUFKQkJHb2hBaUFCUVpnRWFpQUVRYXdCYWhEc0IwVU5BQXNnQUNBQklBUW9BcXdCSUFNUW54d01BUXNnQkVFSWFrSG5tZ1ZCa0FGQkNDQUFFQmNpQUVFWWFrR1JnUWtRRGhvZ0FCQVlEQUVMSUFNZ0FSRHJCd3NnQkVHd0FXb2tBQXUyQlFJSGZ3SitJd0JCc0FGcklnUWtBQ0FCS0FKa0lnY2dBU2dDYkNJRFFaWUJiRUdXQVdwQjVBQnVTUVJBSXdCQk1Hc2lCU1FBUVFZZ0EwRUJkRUVDYWtHV0FXeEI1QUJ1SWdNZ0EwRUdUUnNpQmlBQktBSmtTd1JBSUFWQ2dJQ0FnTUFBTndJa0lBVWdCVUVRYWlJRE5nSWdJQU1nQVNnQ2JCRDhDeUFCS0FKZ0lnTWdBU2dDWkVFRWRHb2hCd05BQWtBZ0F5QUhSZ1JBSUFFUTZnVWdBU0FHRU9nRklBVW9BaUFpQXlBRktBSWtRUUowYWlFR0RBRUxJQU10QUFRRVFDQUZRUkJxSUFNUXZnRVFwd1FMSUFOQkVHb2hBd3dCQ3dzRFFDQURJQVpIQkVBZ0JTQUJJQU1Rb0J3Z0EwRUVhaUVEREFFTEN5QUZRUkJxRUY0TElBVkJNR29rQUNBQktBSmtJUWNMSUFkQkFXc2hDU0FDS0FJQUlnVWdCM0FoQmlBQktBSmdJUWhCQUNFQ0FrQURRQ0FDSUFkSEJFQWdDQ0FHUVFSMGFpSURMUUFFUlFSQUlBTkJBVG9BQkNBRElBVTJBZ0FnQ0NBR1FRUjBhaUlESUFJMkFnd2dBeUFGTmdJSUlBRWdBU2dDYkVFQmFqWUNiQ0FCSUFFb0FuQkJBV28yQW5BZ0FFSUFOd0lBREFNTEFrQWdBeWdDQ0NBRlJ3MEFJQVVnQXlnQ0FFY05BQ0FBUWdJM0FnQU1Bd3NnQWlBREtBSU1Td1JBSUFRZ0JUWUNxQUVnQkNBRk5nS2dBU0FFSUFJMkFxd0JJQVJCQVRvQXBBRWdCQ0FFS1FPb0FTSUtOd01JSUFRZ0JDa0RvQUVpQ3pjREFDQUVJQU1wQWdnM0E2Z0JJQVFnQXlrQ0FEY0RvQUVnQXlBTE53SUFJQU1nQ2pjQ0NDQUVJQVFvQXF3QlFRRnFOZ0tzQVNBQklBWkJBV29nQVNnQ1pIQWdCRUdnQVdvUTlBVWdBU0FCS0FKc1FRRnFOZ0pzSUFFZ0FTZ0NjRUVCYWpZQ2NDQUFRZ0EzQWdBTUF3VWdCa0VCYWtFQUlBWWdDVWNiSVFZZ0FrRUJhaUVDREFJTEFBc0xJQVJCaHJVRFFlc0RRUTRnQkVHZ0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFR3dBV29rQUFzdEFDQUFBbjlCbHU4Q0lBRW9BZ1FpQUVINCtoRkdEUUFhUVFBZ0FFR1kvUkZIRFFBYVFjYmlBZ3NRRkJvTE53RUJmZ0ovUVFBZ0FDa0RFRUtBZ0lDUWlLQ0FnQVNESWdFZ0FVSUJmWU5RRFFBYVFRRWdBRUdRb2hJUVNBMEFHaUFBRU9ZREN3c2xBQ0FBRUp3Y0lBQkJEQkNGRUNBQVFRQTJBdXdHSUFBZ0FDZ0M4QVpCQVdvMkF2QUdDeWdBSUFCQkFEWUN0QU1nQUVFTUVJWVFJQUJCQURZQ3ZBTWdBQ0FBS0FMQUEwRUJhallDd0FNTHZBZ0JCMzhqQUVId0FXc2lCeVFBSUFFb0F1UUdJQUVvQXV3R0lnUkJsZ0ZzUVpZQmFrSGtBRzVKQkVBakFFR0FCR3NpQlNRQVFRd2dCRUVCZEVFQ2FrR1dBV3hCNUFCdUlnUWdCRUVNVFJzaUNTQUJLQUxrQmtzRVFDQUZRb0NBZ0lDQUFUY0M5QU1nQlNBRlFSQnFJZ1EyQXZBRElBUWdBU2dDN0FZUWtSd2dBU2dDNEFZaUJDQUJLQUxrQmtISUFHeHFJUW9EUUFKQUlBUWdDa1lFUUNBQkVLTWNJQUVnQ1JDRkVDQUZLQUx3QXlJRUlBVW9BdlFEUVR4c2FpRUdEQUVMSUFRdEFEd0VRQ0FFTFFBOFJRUkFFRzhBQ3lBRlFSQnFJZ1lvQXVRRElnZ2dCaWdDNkFOUEJFQWdCaUFHS0FMb0F5SUlRUUYwUVFJZ0NCc1FrUndnQmlnQzVBTWhDQXNnQmlBSVFRRnFOZ0xrQXlBR0tBTGdBeUFJUVR4c2FpQUVFTm9MR2dzZ0JFSElBR29oQkF3QkN3c0RRQ0FFSUFaSEJFQWdCVUVJYWlBQklBUWdCRUU0YWhDbEhDQUVRVHhxSVFRTUFRc0xJQVZCRUdvaEJFRUFJUVlEUUNBRUtBTGtBeUFHVFFSQUlBUkJBRFlDNUFNRklBUW9BdUFER2lBR1FRRnFJUVlNQVFzTElBUWdCQ2dDNEFNUU5nc2dCVUdBQkdva0FBc2dBU2dDNUFZaEJDQUhJQUlvQWdCQmtyR28rZ2RxSWdVZ0FpZ0NIQ0FGUVFKMlFaS3hxUG9IYzJwelFaT2tCbk1pQlRZQzdBRWdCeUFGSUFSd05nTG9BU0FISUFNMkF1UUJJQWNnQWpZQzRBRWdBU2dDNUFZaUJrRUJheUVJSUFjb0F1Z0JJUVJCQUNFREFrQURRQ0FESUFaSEJFQWdBU2dDNEFZaUNTQUVRY2dBYkdvaUJTMEFQRVVFUUNBSElBZEI0QUZxRUpNY0lBVVFrQndnQlNBSEVJUVFJQWNvQXV3QklRSWdDU0FFUWNnQWJHb2lCQ0FETmdKRUlBUWdBallDUUNBQklBRW9BdXdHUVFGcU5nTHNCaUFCSUFFb0F2QUdRUUZxTmdMd0JpQUFJQVZCT0dvMkFnUWdBRUVBTmdJQURBTUxJQVVvQWtBZ0J5Z0M3QUZHQkg4Z0FpQUZFTFlDQkg4Z0FrRWNhaUFGUVJ4cUVMWUNCVUVBQ3dWQkFBc0VRQ0FBUVFJMkFnQWdBQ0FGUVRocU5nSUVEQU1MSUFNZ0JTZ0NSRXNFUUNBSFFhQUJhaUlDSUFkQjRBRnFFSk1jSUFjZ0FoRGFDeUlDUVFFNkFEd2dCeWdDN0FFaEJpQUNJQU0yQWtRZ0FpQUdOZ0pBSUFJZ0JSQ1NIQ0FDSUFJb0FrUkJBV28yQWtRZ0JFRUJhaUFCS0FMa0JuQWhBMEVBSVFRZ0FTZ0M1QVlpQ0VFQmF5RUpBa0FEUUNBRUlBaEdEUUVnQVNnQzRBWWdBMEhJQUd4cUlnWXRBRHdFUUNBQ0lBSW9Ba1FpQ2lBR0tBSkVTd1IvSUFZZ0FoQ1NIQ0FDS0FKRUJTQUtDMEVCYWpZQ1JDQURRUUZxUVFBZ0F5QUpSeHNoQXlBRVFRRnFJUVFNQVFzTElBWWdBaENCRUFzZ0FTQUJLQUxzQmtFQmFqWUM3QVlnQVNBQktBTHdCa0VCYWpZQzhBWWdBQ0FGUVRocU5nSUVJQUJCQURZQ0FDQUNFSlFKREFNRklBUkJBV3BCQUNBRUlBaEhHeUVFSUFOQkFXb2hBd3dDQ3dBTEN5QUhRWWExQTBIckEwRU9JQWRCb0FGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFkQjhBRnFKQUFMM2dNQkJuOGpBRUhnQ0dzaUF5UUFJQU5CNkFGcUlnUkNBRGNDN0FZZ0JFS0FnSUNBd0FFM0F1UUdJQVFnQkRZQzRBWWdCRUVNRUlVUUlBRW9BZ0FpQlNnQ0FDSUJJQVVvQWdSQkFuUnFJUVVEUUFKQUlBRWdCVVlpQjBVRVFDQURJQUVvQWdBaUJqWUM1QUVDUUNBR0tBSUVLQUlrSWdZRVFDQURRY2dCYWlBR1FTUnFFRllhREFFTElBTkJ5QUZxRUpzRkdnc2dBMEdvQVdvZ0F5Z0M1QUVvQWdRb0FpaEJKR29RVmlFR0lBTkJFR29nQTBISUFXb1FWaUlJUVJ4cUlBWVFWaG9nQTBHZ0FXb2dCQ0FJSUFOQjVBRnFFS1VjSUFNb0FxQUJRUUpIRFFFZ0F5Z0NwQUVvQWdBb0FnQWdBeWdDNUFFb0FnQkdEUUVnQTBFUWFoQkpJZ0ZCQ0dvaUJVRzgzZ29RRGhvZ0JTQUNFQTRhSUFNZ0FVRU1haEJDSUFBZ0F5QURLQUxrQVNnQ0JFRVFhaEFuSUFNUUR4b2dBUkJSSUFOQkVHb1FTU0lCUVFocUlnSkJ0bzhKRUE0YUlBTWdBeWdDNUFFb0FnUVEveGtnQWlBREVCSWFJQUpCNzRzSkVBNGFJQUVnQXlnQzVBRW9BZ0FRcGh0QkNHcEJsZThERUE0YUlBTVFEeG9nQXlBQlFReHFFRUlnQUNBRElBTW9BcVFCS0FJQUtBSUVRUkJxRUlZQklBTVFEeG9nQVJCUkN5QUVFS01jSUFRUW5Cd2dCQ0FFS0FMZ0JoQTJJQU5CNEFocUpBQWdCdzhMSUFGQkJHb2hBUXdBQ3dBTGhRa0JDSDhqQUVIUUFXc2lCaVFBSUFFb0FyUURJQUVvQXJ3RElnUkJsZ0ZzUVpZQmFrSGtBRzVKQkVBakFFSGdBV3NpQlNRQVFRd2dCRUVCZEVFQ2FrR1dBV3hCNUFCdUlnUWdCRUVNVFJzaUN5QUJLQUswQTBzRVFDQUZRb0NBZ0lDQUFUY0MxQUVnQlNBRlFSQnFJZ1EyQXRBQklBUWdBU2dDdkFNUWxCd2dBU2dDc0FNaUJDQUJLQUswQTBFa2JHb2hDZ05BQWtBZ0JDQUtSZ1JBSUFFUXBCd2dBU0FMRUlZUUlBVW9BdEFCSWdRZ0JTZ0MxQUZCR0d4cUlRY01BUXNnQkMwQUdBUkFJQVZCRUdvaEJ5QUVMUUFZUlFSQUVHOEFDeUFFSVFrZ0J5Z0N4QUVpQ0NBSEtBTElBVThFUUNBSElBY29Bc2dCSWdoQkFYUkJBaUFJR3hDVUhDQUhLQUxFQVNFSUN5QUhJQWhCQVdvMkFzUUJJQWNvQXNBQklBaEJHR3hxSWdjZ0NTa0NFRGNDRUNBSElBa3BBZ2czQWdnZ0J5QUpLUUlBTndJQUN5QUVRU1JxSVFRTUFRc0xBMEFnQkNBSFJ3UkFJQVZCQ0dvZ0FTQUVJQVJCQkdvUXB4d2dCRUVZYWlFRURBRUxDeUFGUVJCcUVJc01DeUFGUWVBQmFpUUFDeU1BUVJCcklnVWtBQ0FDS0FJQUVQd0NJUVFnQVNnQ3RBTWhCeUFHSUFRMkFzd0JJQVlnQkNBSGNEWUN5QUVnQlVFUWFpUUFJQUVvQXJRRElndEJBV3NoQ2lBQ0tBSUFJUWNnQVNnQ3NBTWhDU0FHS0FMTUFTRUlJQVlvQXNnQklRVkJBQ0VDQWtBRFFDQUNJQXRIQkVBZ0NTQUZRU1JzYWlJRUxRQVlSUVJBSUFZZ0F5Z0NFRFlDRUNBR0lBTXBBZ2czQXdnZ0JpQURLUUlBTndNQUlBUWdCellDQUNBRUlBWXBBd0EzQWdRZ0JDQUdLUU1JTndJTUlBUWdCaWdDRURZQ0ZDQUVRUUU2QUJnZ0JpZ0N6QUVoQXlBSklBVkJKR3hxSWdVZ0FqWUNJQ0FGSUFNMkFod2dBU0FCS0FLOEEwRUJhallDdkFNZ0FTQUJLQUxBQTBFQmFqWUN3QU1nQUNBRVFRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBUW9BaHdnQ0VjTkFDQUhJQVFvQWdCSERRQWdBRUVDTmdJQUlBQWdCRUVFYWpZQ0JBd0RDeUFDSUFRb0FpQkxCRUFnQmlBSE5nS2dBU0FHSUFNcEFnZzNBcXdCSUFZZ0F5Z0NFRFlDdEFFZ0JpQURLUUlBTndLa0FTQUdJQUkyQXNBQklBWWdDRFlDdkFFZ0JrRUJPZ0M0QVNBR0lBWkJvQUZxUVNRUWZTSUNRYUFCYWlBRVFTUVFmUm9nQkNBQ1FTUVFmU0VKSUFJZ0FpZ0N3QUZCQVdvMkFzQUJJQVZCQVdvZ0FTZ0N0QU53SVFNZ0FrR2dBV29oQWtFQUlRVWpBRUV3YXlJSEpBQWdBU2dDdEFNaUNFRUJheUVMQWtBRFFDQUZJQWhHRFFFZ0FTZ0NzQU1nQTBFa2JHb2lCQzBBR0FSQUlBSWdBaWdDSUNJS0lBUW9BaUJMQkg4Z0IwRUlhaUlLSUFSQkpCQjlHaUFFSUFKQkpCQjlHaUFDSUFwQkpCQjlLQUlnQlNBS0MwRUJhallDSUNBRFFRRnFRUUFnQXlBTFJ4c2hBeUFGUVFGcUlRVU1BUXNMSUFRZ0FrRWtFSDBhQ3lBSFFUQnFKQUFnQVNBQktBSzhBMEVCYWpZQ3ZBTWdBU0FCS0FMQUEwRUJhallDd0FNZ0FDQUpRUVJxTmdJRUlBQkJBRFlDQUF3REJTQUZRUUZxUVFBZ0JTQUtSeHNoQlNBQ1FRRnFJUUlNQWdzQUN3c2dCa0dHdFFOQjZ3TkJEaUFHUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBR1FkQUJhaVFBQzc4QkFRTi9Jd0JCb0FGcklnTWtBQ0FBS0FJQUlnSVFIQUovSUFKQjVBRnFJQUVRc2dvaUFrVUVRQ0FBS0FJQUlnQVFIQ0FEUWYyc0EwRXpRUWdnQUVISUFtb1FGeUlDUVJocVFhYVdDUkFPR2lBQ0lBRW9BZ1JCQkdvUW1nRWlCRUVZYWlJQVFkenhEQkFPR2lBQVFZUGtDeEFPR2lBRVFSQnFJQUZCRUdvUXJnTWdBRUhiK0F3UURob2dBRUh3OVFzUURob2dBQ0FCRU4wRElBSVFHRUVBREFFTElBSkJBQ0FDS0FJRVFkaWNFa1liQ3lFQUlBTkJvQUZxSkFBZ0FBdmlCd0lGZndGK0l3QkI4QUZySWdNa0FBSkFBa0FnQVVFQUlBRW9BZ1FpQkVINDZ3OUdHeUFCUVFBZ0JFSEFoQkpHRzNKRkJFQWdBMEhRQUdwQjU1b0ZRZm9SUVFnZ0FDZ0NCQkFYSWdCQkdHcEI2TW9BRUE0YUlBQVFHQXdCQ3lBQktBSWtJZ1FvQWdSQjZJTVNSZ1JBSUFFb0FpZ2hCVUVCSVFRZ0FoQ0VBU0lCTFFBUVFRRnhEUUlnQVFSL0FuOUJBQ0FCS0FJRUlnRXBBeEJDeElDQWhKS0loSUFCZ3lJSUlBaENBWDJEVUEwQUdrRUJBbjlCQUNBQktRTVFRc0NBZ0lTUWdJQ0FBWU1pQ0NBSVFnRjlnMUFOQUJwQkFTQUJFSnNjRFFBYUlBRVEyUXNMRFFBYUFuOUJBQ0FCS1FNUVFvU0FnSUNDaUFTRElnZ2dDRUlCZllOUURRQWFRUUVnQVJEWUN3MEFHaUFCRUlBR0N3c0ZRUUFMRFFJZ0EwRXdhaUlCSUFBb0FnZ2dBaENuQVNBRFFVQnJJZ0pCazQ0SklBRVFOU0FEUWRBQWFpSUVJQUpCa29BRUVDMGdBQ0FFSUFWQkVHb1FKeUFFRUE4YUlBSVFEeG9nQVJBUEdnd0JDeUFBS0FJSUlBUVFxZ1FpQmlnQ0ZDSUZLQUlFUWJpdEVrWkJBQ0FGRzBVRVFDQURRVUJySWdFZ0FDZ0NDQ0FHRUpnZElBTkIwQUJxSWdKQjRZQUtJQUVRTlNBQUlBSWdCRUVRYWhBbklBSVFEeG9nQVJBUEdnTkFJQVFpQVVVTkFpQUJLQUlFSWdJUWxSQUVRQ0FCS0FJa0lRUU1BUXRCQUNFRUlBSkIrTzBQUncwQUlBQW9BZ2dnQVJDb0hDSUJSUTBBSUFFb0Fpd29BZ2dpQlVVTkFBSkFJQVVvQWdRaUFrSGcrUTlHQkVBZ0FDQURRZEFBYWtIZ3VBUVFGQ0lDSUFFb0FnaEJFR29RaGdFTUFRc2dBa0dnK1JGR0JFQWdBQ0FEUWRBQWFrSEF1QVFRRkNJQ0lBRW9BZ2hCRUdvUWhnRU1BUXNnQWtIbytSRkdCRUFnQUNBRFFkQUFha0grdUFRUUZDSUNJQUVvQWdoQkVHb1FoZ0VNQVFzZ0FrR3c2dzlIRFFFZ0FDQURRZEFBYWtHbnVBUVFGQ0lDSUFFb0FnaEJFR29RaGdFTElBSVFEeG9nQUNnQ0NDQUZFSjBKREFBTEFBc2dCU2dDR0NJR0lBSVFoQUZIQkVBZ0EwRVFhaUlFSUFBb0FnZ2dBaENuQVNBRFFTQnFJZ0pCazQ0SklBUVFOU0FEUVRCcUlnWWdBa0d6akFrUUxTQURJQUFvQWdnZ0JSQ25BU0FEUVVCcklnVWdCaUFERUU0Z0EwSFFBR29pQnlBRlFmT2FDUkF0SUFBZ0J5QUJRUkJxRUNjZ0J4QVBHaUFGRUE4YUlBTVFEeG9nQmhBUEdpQUNFQThhSUFRUUR4b01BUXRCQVNFRUlBWXRBQkJCQVhGRkJFQWdBQ0FEUWRBQWFrR1Z0d1FRRkNJQUlBRkJFR29RSnlBQUVBOGFEQUVMSUFVb0FpQkJBVWNOQVNBRFFUQnFJZ0lnQUNnQ0NDQUZFSmtkSUFOQlFHc2lCRUhQa1FrZ0FoQTFJQU5CMEFCcUlnVWdCRUh6bWdrUUxTQUFJQVVnQVVFUWFoQW5JQVVRRHhvZ0JCQVBHaUFDRUE4YUMwRUFJUVFMSUFOQjhBRnFKQUFnQkFzb0FDQUFRUUEyQXFRQ0lBQkJCaENIRUNBQVFRQTJBckFDSUFBZ0FDZ0N0QUpCQVdvMkFyUUNDOGNGQWdkL0FuNGpBRUd3QVdzaUJDUUFJQUVvQXNRQklnY2dBU2dDekFFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFVQnFJZ1VrQUVFTUlBTkJBWFJCQW1wQmxnRnNRZVFBYmlJRElBTkJERTBiSWdZZ0FTZ0N4QUZMQkVBZ0JVS0FnSUNBZ0FFM0FqUWdCU0FGUVJCcUlnTTJBakFnQXlBQktBTE1BUkM3Q1NBQktBTEFBU0lESUFFb0FzUUJRUVIwYWlFSEEwQUNRQ0FESUFkR0JFQWdBUkRxQkNBQklBWVE1QVFnQlNnQ01DSURJQVVvQWpSQkFuUnFJUVlNQVFzZ0F5MEFCQVJBSUFWQkVHb2dBeEMrQVJDZkJRc2dBMEVRYWlFRERBRUxDd05BSUFNZ0JrY0VRQ0FGSUFFZ0F4Q3JIQ0FEUVFScUlRTU1BUXNMSUFWQkVHb1FJd3NnQlVGQWF5UUFJQUVvQXNRQklRY0xJQWRCQVdzaENTQUNLQUlBSWdVZ0IzQWhCaUFCS0FMQUFTRUlRUUFoQWdKQUEwQWdBaUFIUndSQUlBZ2dCa0VFZEdvaUF5MEFCRVVFUUNBRFFRRTZBQVFnQXlBRk5nSUFJQWdnQmtFRWRHb2lBeUFDTmdJTUlBTWdCVFlDQ0NBQklBRW9Bc3dCUVFGcU5nTE1BU0FCSUFFb0F0QUJRUUZxTmdMUUFTQUFRZ0EzQWdBTUF3c0NRQ0FES0FJSUlBVkhEUUFnQlNBREtBSUFSdzBBSUFCQ0FqY0NBQXdEQ3lBQ0lBTW9BZ3hMQkVBZ0JDQUZOZ0tvQVNBRUlBVTJBcUFCSUFRZ0FqWUNyQUVnQkVFQk9nQ2tBU0FFSUFRcEE2Z0JJZ28zQXdnZ0JDQUVLUU9nQVNJTE53TUFJQVFnQXlrQ0NEY0RxQUVnQkNBREtRSUFOd09nQVNBRElBczNBZ0FnQXlBS053SUlJQVFnQkNnQ3JBRkJBV28yQXF3QklBRWdCa0VCYWlBQktBTEVBWEFnQkVHZ0FXb1E2d1FnQVNBQktBTE1BVUVCYWpZQ3pBRWdBU0FCS0FMUUFVRUJhallDMEFFZ0FFSUFOd0lBREFNRklBWkJBV3BCQUNBR0lBbEhHeUVHSUFKQkFXb2hBZ3dDQ3dBTEN5QUVRWWExQTBIckEwRU9JQVJCb0FGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFSQnNBRnFKQUFMTEFFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFBZ0FSQ3JIQ0FDS0FJSUlRQWdBa0VRYWlRQUlBQkJBa2NMNGdJQkFYOGpBRUhRQVdzaUNDUUFJQWdnQWpZQ3pBRWdDRUhBQVdwQmcvMEFRYTBySUFjYkVCUWhBZ0ovQWtBZ0JVRUNSZ1JBSUFoQmtBRnFJZ01nQVJEOUhpQUlRYUFCYWlJRVFaM2ZCaUFERURVZ0NFR3dBV29pQlNBRVFiYjZDUkF0SUFnZ0JTQUNFRTRnQUNBSUlBRkJFR29RSnlBSUVBOGFJQVVRRHhvZ0JCQVBHaUFERUE4YURBRUxJQU1RMlE5RkJFQWdDQ0FBS0FJSUlBTVFwd0VnQ0VHZ0FXb2lCRUc1bEFrZ0NCREVBU0FJUWJBQmFpSURJQVJCODVvSkVDMGdBQ0FESUFZUUp5QURFQThhSUFRUUR4b2dBQ0FEUVovK0F4QVVJZ0FnQVVFUWFoQ0dBU0FBRUE4YUlBZ1FEeG9NQVF0QkFTQUVJQWhCekFGcUVLd2NEUUVhSUFnUVNTSURRUWhxSWdSQjYvY0lFQTRhSUFRZ0NDZ0N6QUVRSVJvZ0JFSDB1Z0VRRGhvZ0NFR3dBV29pQkNBRFFReHFFRUlnQUNBRUlBRkJFR29RSnlBRUVBOGFJQU1RVVF0QkFBc2hCeUFDRUE4YUlBaEIwQUZxSkFBZ0J3c0VBRUVCQzZvQkFRSi9Jd0JCc0FGcklnUWtBQ0FFSUFJMkFxd0JJQUVvQW93RUlnSWdBU2dDa0FSQkFuUnFJUVVDUUFKQUFrQURRQ0FDSUFWR0RRRWdBaWdDQUNJQklBUW9BcXdCUmcwQ0lBSkJCR29oQWlBQlFaZ0VhaUFFUWF3QmFoRHNCMFVOQUFzZ0FDQUJJQVFvQXF3QklBTVFyeHdNQVFzZ0JFRUlha0hubWdWQmtBRkJDQ0FBRUJjaUFFRVlha0dSZ1FrUURob2dBQkFZREFFTElBTWdBUkRyQndzZ0JFR3dBV29rQUF1cUFRRUNmeU1BUWJBQmF5SUVKQUFnQkNBQ05nS3NBU0FCS0FLTUJDSUNJQUVvQXBBRVFRSjBhaUVGQWtBQ1FBSkFBMEFnQWlBRlJnMEJJQUlvQWdBaUFTQUVLQUtzQVVZTkFpQUNRUVJxSVFJZ0FVR1lCR29nQkVHc0FXb1E3QWRGRFFBTElBQWdBU0FFS0FLc0FTQURFTEFjREFFTElBUkJDR3BCNTVvRlFaQUJRUWdnQUJBWElnQkJHR3BCa1lFSkVBNGFJQUFRR0F3QkN5QURJQUVRNndjTElBUkJzQUZxSkFBTCtBVUJDSDhqQUVIQUFXc2lBeVFBSUFFb0Ftd2lCQ0FCS0FKd1FRSjBhaUVISUFBb0FnZ2hCUUpBQTBBZ0JDQUhSaUlJRFFFQ1FBSkFJQVFvQWdBaUJpZ0NGRUVHUncwQUlBWWdBQ2dDQUNJSktBSUFJZ3BHRFFBZ0NnMEJJQWtnQmpZQ0FDQUFLQUlFSUFFMkFnQUxJQVJCQkdvaEJBd0JDd3NnQXlBQ0tBSkFLQUlrUVNScUVGTWdBMEVRYWlJSFFmR0pDU0FERURVZ0EwRWdhaUlFSUFkQjU3VUhFQzBnQlNBRUlBSW9Ba0JCRUdvUUp5QUVFQThhSUFjUUR4b2dBeEFQR2lBRklBUkJoK3dERUJRaUJDQUdLQUlJUVJCcUVJWUJJQVFRRHhvZ0FTQUNSd1JBSUFVb0FnUWhCaUFESUFVMkFnQWdBeUFCTmdJUUlBSW9Bb3dFSWdRZ0FpZ0NrQVJCQW5ScUlRY0NRQUpBQWtBRFFDQUVJQWRHRFFFZ0JDZ0NBQ0lCSUFNb0FoQkdEUUlnQkVFRWFpRUVJQUZCbUFScUlBTkJFR29RN0FkRkRRQUxJQVlnQVNBREtBSVFJQU1Rc0J3TUFRc2dBMEVnYWtIbm1nVkJrQUZCQ0NBR0VCY2lBVUVZYWtHUmdRa1FEaG9nQVJBWURBRUxJQU1nQVJEckJ3c2dBeUFDS0FKQUtBSWtRU1JxRUZNZ0EwRVFhaUlCUWNtSkNTQURFRFVnQTBFZ2FpSUVJQUZCODVvSkVDMGdCU0FFSUFJb0FrQkJFR29RaGdFZ0JCQVBHaUFCRUE4YUlBTVFEeG9MSUFVZ0EwRWdha0c2N0FNUUZDSUJJQUFvQWdBb0FnQW9BZ2hCRUdvUWhnRWdBUkFQR2lBQUtBSUVLQUlBSWdBZ0FrWU5BQ0FGS0FJRUlRRWdBeUFGTmdJQUlBTWdBRFlDRUNBQ0tBS01CQ0lFSUFJb0FwQUVRUUowYWlFR0FrQUNRQUpBQTBBZ0JDQUdSZzBCSUFRb0FnQWlBQ0FES0FJUVJnMENJQVJCQkdvaEJDQUFRWmdFYWlBRFFSQnFFT3dIUlEwQUN5QUJJQUFnQXlnQ0VDQURFSzhjREFFTElBTkJJR3BCNTVvRlFaQUJRUWdnQVJBWElnQkJHR3BCa1lFSkVBNGFJQUFRR0F3QkN5QURJQUFRNndjTElBTWdBaWdDUUNnQ0pFRWthaEJUSUFOQkVHb2lBRUhKaVFrZ0F4QTFJQU5CSUdvaUFTQUFRZk9hQ1JBdElBVWdBU0FDS0FKQVFSQnFFSVlCSUFFUUR4b2dBQkFQR2lBREVBOGFDeUFEUWNBQmFpUUFJQWdMcmdVQ0IzOEJmaU1BUWNBQmF5SUZKQUFnQUNnQ0FDSUpLQUlBSVFnQ1FBSkFBa0FnQWlnQ1FCQ0VBeUlHUVFKR0RRQWdBU2dDYkNJRElBRW9BbkJCQW5ScUlRY0RRQ0FESUFkR0RRRWdBeWdDQUNFRUlBTkJCR29oQXlBRUtBSVVRUWxIRFFBTElBVkJNR29RU1NJQUlBWVFtUWthSUFRb0FrUWlBeUFFS0FKSVFRSjBhaUVIQWtBRFFDQURJQWRHRFFFZ0F5Z0NBQ0VHSUFOQkJHb2hBeUFHS0FJTUtBSVFJQUZIRFFBTElBVWdBRUVNYWhCQ0lBVkJFR29pQTBIS3dRa2dCUkExSUFWQklHb2lCeUFEUWJqQkJCQXRJQWdnQnlBR0tBSUlRUkJxRUNjZ0J4QVBHaUFERUE4YUlBVVFEeG9MSUFnZ0JVRWdha0h6N1FNUUZDSURJQVFvQWdoQkVHb1FoZ0VnQXhBUEdpQUpLQUlFSUFFZ0FoQ0pFQXdCQ3lBQUtBSUVJZ1lvQWdBaEJ5QUNLQUpBRUlRRElRZ2dBU2dDL0FVaUF5QUJLQUtBQmtFQ2RHb2hDVUlCSUFpdGhpRUtBa0FEUUNBRElBbEdEUUVnQXlnQ0FDRUVJQU5CQkdvaEF5QUVLUU5JSUFxRFFnQlNEUUFMQW44Z0FVSFFDV29vQWdBaENTQUJLQUxNQ1NFQUEwQkJBQ0FBSUFsR0RRRWFJQUFvQWdBaEF5QUFRUVJxSVFBZ0F5Z0NMQ0FFUncwQUN5QURDeUVFSUFWQk1Hb1FTU0lBUVFocVFlN0JDUkFPR2lBQUlBZ1FtUWxCQ0dwQnVNRUVFQTRhSUFWQklHb2lBeUFBUVF4cUVFSWdCeUFESUFSQkNHb2dBVUZBYXlBRUd5Z0NBRUVRYWhBbklBTVFEeG9nQmlnQ0JDQUJJQUlRaVJBTUFRdEJBU0VESUFJb0FrQVFoQU5CQVVZTkFTQUJLQUx3Q1NJSVJRMEJJQUFvQWdnaUF5Z0NBQ0VHSUFJb0FrQVFoQU1oQkNBRlFUQnFFRWtpQUVFSWFrR3FrUW9RRGhvZ0FDQUVFSmtKUVFocVFiakJCQkFPR2lBRlFTQnFJZ1FnQUVFTWFoQkNJQVlnQkNBSUtBSUlRUkJxRUNjZ0JCQVBHaUFES0FJRUlBRWdBaENKRUFzZ0FCQlJRUUFoQXdzZ0JVSEFBV29rQUNBREN6WUJBWDhqQUVFUWF5SURKQUFnQVJES0F5SUJSUVJBSUFBZ0EwR0Zod2tRRkNJQUlBSVFKeUFBRUE4YUN5QURRUkJxSkFBZ0FRdjhBZ0VNZnlBQUtBSUFJZ1FvQXRRRUlnY2dBQ2dDREVZRVFDQUFLQUlJRHdzakFFRVFheUlCSkFBakFFSEFBV3NpQXlRQUlBTkJ1QUZxSUFRZ0FFRUVhaUlDRU9zRElBUW9Bc1FFSWdoQkFXc2hDU0FDS0FJQUlRb2dCQ2dDd0FRaEN5QURLQUs4QVNFTUlBTW9BcmdCSVFJQ1FBTkFJQVVnQ0VjRVFDQUxJQUpCTUd4cUlnWXRBQ0JGQkVBZ0FVRUFOZ0lNSUFGQkFEb0FDQXdEQ3dKQUlBWW9BaWdnREVjTkFDQUtJQVlvQWdCSERRQWdBU0FDTmdJTUlBRkJBVG9BQ0F3REN5QUZJQVlvQWl4TEJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REJTQUNRUUZxUVFBZ0FpQUpSeHNoQWlBRlFRRnFJUVVNQWdzQUN3c2dBMEVJYWtHR3RRTkJuZ1JCRGlBRFFhZ0JhaEFkSWdJUUZ5SUZRUmhxUWRJMUVBNGFJQVVRR0NBQlFRQTJBZ3dnQVVFQU9nQUlJQUlRSGdzZ0EwSEFBV29rQUNBQktBSU1JUU1nQkNnQ3dBUWhBaUFCTFFBSUlRUWdBVUVRYWlRQUlBQWdCellDRENBQUlBSWdBMEV3YkdwQkNHcEJBQ0FFR3lJQU5nSUlJQUFMelFZQ0RuOERmaU1BUVlBQ2F5SUVKQUFnQUNnQ0NDRU9Ba0FnQUNnQ0FDQUJFUDRQSWdWQkFFZ0VRRUVCSVFZTUFRc2dCRUh3QVdvZ0FSQ2tHeEFVSVFFQ1FBSkFJQUFvQWdRb0FnQW9BbEFnQlVFQ2RHb29BZ0FpRHlnQ0hDSUZCRUFnQXF3aEV5QUZJQVVvQWdBb0FnZ1JBQUFRc2dJaUJ3UkFJQU90SVJSQkFDRUFRUUVoQmdOQUlBQWdCeWdDSEU4TkJDQVRJQVVnQUNBRktBSUFLQUlNRVFFQUVHTWlFbGNnRWlBVVYzRUVRQ0FBUVFGcUlRQU1BUVVnQkVGQWF5SUZRWnZEQ2lBQkVNUUJJQVJCMEFCcUlnWWdCVUd3eGdrUUxTQUVRVEJxSWdjZ0FoRDJCQ0FFUWVBQWFpSUNJQVlnQnhCT0lBUkI4QUJxSWdnZ0FrRzZ4UWtRTFNBRVFTQnFJZ2tnQXhEMkJDQUVRWUFCYWlJRElBZ2dDUkJPSUFSQmtBRnFJZ29nQTBIeTVnd1FMU0FFUWFBQmFpSUxJQW9nQVJCT0lBUkJzQUZxSWd3Z0MwSG95d2tRTFNBRVFSQnFJZzBnQUJCZklBUkJ3QUZxSWdBZ0RDQU5FRTRnQkVIUUFXb2lFQ0FBUWZ2ZkNSQXRJQVFnRWhEM0JpQUVRZUFCYWlJUklCQWdCQkJPSUE0Z0VTQVBLQUlJUVJCcUVDY2dFUkFQR2lBRUVBOGFJQkFRRHhvZ0FCQVBHaUFORUE4YUlBd1FEeG9nQ3hBUEdpQUtFQThhSUFNUUR4b2dDUkFQR2lBSUVBOGFJQUlRRHhvZ0J4QVBHaUFHRUE4YUlBVVFEeG9NQkFzQUN3QUxJQk1nQlJCakloSlhCRUJCQVNFR0lCSWdBNjFYRFFNTElBUkI0QUJxSWdCQnJjTUtJQUVReEFFZ0JFSHdBR29pQlNBQVFiREdDUkF0SUFSQjBBQnFJZ1lnQWhEMkJDQUVRWUFCYWlJQ0lBVWdCaEJPSUFSQmtBRnFJZ2NnQWtHNnhRa1FMU0FFUVVCcklnZ2dBeEQyQkNBRVFhQUJhaUlESUFjZ0NCQk9JQVJCc0FGcUlna2dBMEh5NWd3UUxTQUVRY0FCYWlJS0lBa2dBUkJPSUFSQjBBRnFJZ3NnQ2tINzN3a1FMU0FFUVRCcUlnd2dFaEQzQmlBRVFlQUJhaUlOSUFzZ0RCQk9JQTRnRFNBUEtBSUlRUkJxRUNjZ0RSQVBHaUFNRUE4YUlBc1FEeG9nQ2hBUEdpQUpFQThhSUFNUUR4b2dDQkFQR2lBSEVBOGFJQUlRRHhvZ0JoQVBHaUFGRUE4YUlBQVFEeG9NQVFzZ0JFSFFBV29pQUVHdHd3b2dBUkRFQVNBRVFlQUJhaUlDSUFCQnhlUUNFQzBnRGlBQ0lBOG9BZ2hCRUdvUUp5QUNFQThhSUFBUUR4b0xRUUFoQmdzZ0FSQVBHZ3NnQkVHQUFtb2tBQ0FHQ3hjQUlBQkJtSm9TUWNpT0VrS0FnTUNnZ01BRUVNWU1DeFVBSUFBUXNnSWlBRVVFUUVFQkR3c2dBQ2dDSEFzaEFDQUFJQUZCQTBzRWYwR3M0Z1lGSUFGQkFuUkIxSXdTYWlnQ0FBc1FGQm9MRkFBZ0FFRUFOZ0trQWlBQUlBQW9BcUFDRURZTEtBQWdBRUVBTmdLa0FpQUFRUXdRaUJBZ0FFRUFOZ0tzQWlBQUlBQW9BckFDUVFGcU5nS3dBZ3VpQ1FFSmZ5TUFRZkFCYXlJSEpBQWdBU2dDQUNJSktBSUFJZ3dnQ1NnQ0JFRUNkR29oRHlBQUtBSUFJUWdDUUFKQUFrQUNRQUpBQWtBQ1FBTkFJQXdnRDBjRVFBSkFJQXdvQWdBaUNTZ0NCQ0lMUWZqNkVVY2dDVVZ5UlFSQUlBY2dDQ2dDQ0NBSkVKWUpLQUlRTmdJd0lBb0VRQ0FJSUFkQlFHc2lBRUhyc1FFUUZDSUJJQWxCRUdvUUp5QUJFQThhSUFkQjRBRnFJZ0VnQ2hDaEhDQUFRYVhkQ2lBQkVEVWdDQ0FBSUFwQkVHb1FoZ0VnQUJBUEdpQUJFQThhREFvTElBQW9BZ1FnQjBFd2FoQ3RCQVJBSUFkQlFHc1FTU0lCUVFocVFZVDRDQkFPR2lBQklBY29BakFRbXdSQkNHb2lBa0hNdlFvUURob2dBa0d0SzBIYUt5QUVHeEFPR2lBSFFlQUJhaUlDSUFGQkRHb1FRaUFJSUFJZ0FDZ0NDQ2dDQUVFUWFoQW5JQUlRRHhvZ0FSQlJEQW9MSUFnZ0NTQUNJQUFvQWd3b0FnQWdCRVVRdnh4RkRRa2dBQ2dDQkNFTEl3QkJFR3NpQ2lRQUlBcEJDR29nQ3lBSFFUQnFFS0FjSUFvb0FnZ2FJQXBCRUdva0FDQUpJUW9NQVFzZ0NVVWdDMEdZL1JGSGNrVUVRQ0FLQkVBZ0NDQUhRVUJySWdCQjY3RUJFQlFpQVNBSlFSQnFFQ2NnQVJBUEdpQUhRZUFCYWlJQklBb1FvUndnQUVHbDNRb2dBUkExSUFnZ0FDQUtRUkJxRUlZQklBQVFEeG9nQVJBUEdnd0tDeUFHTFFBRVJRUkFJQWRCUUd0QjU1b0ZRZFlJUVFnZ0NDZ0NCQkFYSWdCQkdHcEJqOUFERUE0YUlBQVFHQXdLQ3lBSUlBa2lDaUFHRUw0QktBSUFJQUlnQUNnQ0VDQUFLQUlNS0FJQUlBTWdCRVVRclJ3TkFRd0pDeUFKUlNBTFFkRDhFVWR5UlFSQUlBQW9BZ2dvQWdBUWhBTkJBa1lOQkNBSUlBa2lEU0FDRUw0Y0RRRU1DUXNnQ1VVZ0MwR29naEpIY2cwQUlBQW9BZ2dvQWdBUWhBTkJBa1lOQXlBSklRNExJQXhCQkdvaERBd0JDd3NnQVNnQ0FDRUJJQWRCQURvQURDQUhJQUUyQWdoQkFTRUJJQWdnQjBFSWFrRURFTEVEUlEwR0FrQWdCVVVOQUNBQ0VNa0pSUTBBSUFnZ0IwRkFhMEhuZ2dZUUZDSUFJQU1RSnlBQUVBOGFEQVlMSUFJUXlRa2dDbkpGQkVBZ0IwRkFhMEdyMkFNUUZDRUFJQVZGQkVBZ0FFR01pQVJCdHVFQklBUWJFUGdHR2dzZ0NDQUFJQU1RSnlBQUVBOGFEQVlMSUFvRVFBSkFJQW9vQWdSQm1QMFJSdzBBSUFJUXJodEZJQTF5RFFBZ0FDZ0NDQ2dDQUJDRUF5QUVRUUZIY2tVRVFDQUlJQWRCUUd0Qmp0Y0RFQlFpQUNBREVDY2dBQkFQR2d3SUN5QUVJQUFvQWdnb0FnQVFoQU5CQVVkeURRVWdDQ0FIUVVCclFkelhBeEFVSWdBZ0F4QW5JQUFRRHhvTUJ3c2dEUTBDREFRTElBME5BaUFPUlEwR0RBUUxJQWRCUUd0QnJTdEJnLzBBSUFRYkVCUWhBQ0FIUVJCcUlnRWdDU0FKS0FJQUtBSU1FUUlBSUFkQklHb2lBa0dkM3dZZ0FSQTFJQWRCTUdvaUF5QUNRYmI2Q1JBdElBZEI0QUZxSWdRZ0F5QUFFRTRnQ0NBRUlBbEJFR29RSnlBRUVBOGFJQU1RRHhvZ0FoQVBHaUFCRUE4YUlBQVFEeG9NQkFzZ0NpZ0NCRUdZL1JGR0RRRUxJQWdnQjBGQWEwR1o0Z0lRRkNJQUlBMUJFR29RSnlBQUVBOGFEQUlMSUE1RkRRSWdDaWdDQkVINCtoRkhEUUFnQ0NnQ0NDQUtFSllKS0FJUVFRbEdEUUlMSUFnZ0IwRkFhMEdmN3dJUUZDSUFJQTVCRUdvUUp5QUFFQThhQzBFQUlRRUxJQWRCOEFGcUpBQWdBUXZaQndJSmZ3TitJd0JCd0FGcklnVWtBQ0FCS0FLa0FpQUJLQUtzQWlJRVFaWUJiRUdXQVdwQjVBQnVTUVJBSXdCQmdBRnJJZ1lrQUVFTUlBUkJBWFJCQW1wQmxnRnNRZVFBYmlJRUlBUkJERTBiSWdzZ0FTZ0NwQUpMQkVBZ0JrS0FnSUNBZ0FFM0FuUWdCaUFHUVJCcUlnUTJBbkFnQkNBQktBS3NBaENaSENBQktBS2dBaUlFSUFFb0FxUUNRUmhzYWlFTUEwQUNRQ0FFSUF4R0JFQWdBUkM2SENBQklBc1FpQkFnQmlnQ2NDSUVJQVlvQW5SQkRHeHFJUWNNQVFzZ0JDMEFEQVJBSUFRUXNBa2hDaUFHUVJCcUlnY29BbVFpQ0NBSEtBSm9Ud1JBSUFjZ0J5Z0NhQ0lJUVFGMFFRSWdDQnNRbVJ3Z0J5Z0NaQ0VJQ3lBSElBaEJBV28yQW1RZ0J5Z0NZQ0FJUVF4c2FpSUhJQW9vQWdnMkFnZ2dCeUFLS1FJQU53SUFDeUFFUVJocUlRUU1BUXNMQTBBZ0JDQUhSd1JBSUFaQkNHb2dBU0FFSUFSQkNHb1F2QndnQkVFTWFpRUVEQUVMQ3lBR1FSQnFFTGdMQ3lBR1FZQUJhaVFBQ3lBQktBS2tBaUVFSUFVZ0FpZ0NBRUdTc2FqNkIyb2lCaUFDS0FJRUlBWkJBblpCa3JHbytnZHphbk5CazZRR2N5SUdOZ0s4QVNBRklBWWdCSEEyQXJnQklBRW9BcVFDSWdkQkFXc2hDQ0FGS0FLNEFTRUdBa0FEUUNBSElBbEhCRUFnQVNnQ29BSWlDaUFHUVJoc2FpSUVMUUFNUlFSQUlBSXBBZ0FoRFNBREtBSUFJUUlnQkVFQk9nQU1JQVFnQWpZQ0NDQUVJQTAzQWdBZ0JTZ0N2QUVoQWlBS0lBWkJHR3hxSWdNZ0NUWUNGQ0FESUFJMkFoQWdBU0FCS0FLc0FrRUJhallDckFJZ0FTQUJLQUt3QWtFQmFqWUNzQUlnQUNBRVFRaHFOZ0lFSUFCQkFEWUNBQXdEQ3lBRUtBSVFJQVVvQXJ3QlJnUi9JQUlvQWdBZ0JDZ0NBRVlnQWlnQ0JDQUVLQUlFUm5FRlFRQUxCRUFnQUVFQ05nSUFJQUFnQkVFSWFqWUNCQXdEQ3lBSklBUW9BaFJMQkVBZ0Fpa0NBQ0VOSUFVZ0F5Z0NBRFlDcUFFZ0JTQUZLQUs4QVRZQ3NBRWdCU0FOTndPZ0FTQUZJQWsyQXJRQklBVkJBVG9BckFFZ0JTQUZLUU93QVNJT053TVFJQVVnQlNrRHFBRWlEemNEQ0NBRklBMDNBd0FnQlNBRUtRSVFOd093QVNBRklBUkJDR29pQWlrQ0FEY0RxQUVnQlNBRUtRSUFOd09nQVNBRUlBMDNBZ0FnQkNBT053SVFJQVFnRHpjQ0NDQUZJQVVvQXJRQlFRRnFOZ0swQVNBQklBWkJBV29nQVNnQ3BBSndJQVZCb0FGcUVJSVFJQUVnQVNnQ3JBSkJBV28yQXF3Q0lBRWdBU2dDc0FKQkFXbzJBckFDSUFBZ0FqWUNCQ0FBUVFBMkFnQU1Bd1VnQmtFQmFrRUFJQVlnQ0VjYklRWWdDVUVCYWlFSkRBSUxBQXNMSUFWQmhyVURRZXNEUVE0Z0JVR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCVUhBQVdva0FBdWNBd0lGZndGK0l3QkJrQUZySWdZa0FDQUFLQUlFSVFrZ0FDZ0NBQ0VJSUFFb0FnQWhBU0FHUVFBNkFJd0JJQVlnQVRZQ2lBRWdCaUFGS1FJQUlnczNBNEFCSUFZZ0F5a0NDRGNETUNBR0lBTW9BaEEyQWpnZ0JpQURLUUlBTndNb0lBWWdDemNESUFKQUlBZ2dCa0dJQVdvZ0FpQUdRU2hxSUFSQkFDQUdRU0JxRUxzY1JRMEFRUUVoQnlBQ1JRMEFJQUlvQWdSQmdKa1NSdzBBSUFJb0FrUWlBU0FDS0FKSVFRSjBhaUVGQTBBZ0FTQUZSZzBCSUFBb0FnQWhDQ0FCS0FJQUlnTW9BbHdoQWlBR1FRQTZBSHdnQmlBQ1FUeHFOZ0o0SUFNb0FpZ2hDaUFHSUFNcEFqd2lDemNEY0NBR0lBSXBBaGczQXhBZ0JpQUNLQUlnTmdJWUlBWWdBaWtDRURjRENDQUdJQXMzQXdBZ0FVRUVhaUVCSUFnZ0JrSDRBR29nQ2lBR1FRaHFJQVJCQVNBR0VMc2NEUUFMSUFaQlFHc2lBU0FBS0FJSUtBSUFLQUlrUVNScUVGTWdCa0hRQUdvaUFrSGhpUWtnQVJBMUlBWkI0QUJxSWdNZ0FrSHptZ2tRTFNBSklBTWdBQ2dDQ0NnQ0FFRVFhaENHQVNBREVBOGFJQUlRRHhvZ0FSQVBHa0VBSVFjTElBWkJrQUZxSkFBZ0J3dWRBUUVDZnlNQVFSQnJJZ01rQUNBQ0VJUUJJUVFDZjBFQUlBQW9BZ2dpQWlBQ0lBRW9BaVFRaWg0UWtCNGlBa1VOQUJvQ1FBSkFJQVFRcmh0RkRRQWdBaWdDRUVFQlJnMEFJQUFnQTBHQXVRRVFGQ0lBSUFGQkVHb1FKd3dCQzBFQklBRW9BaWhGRFFFYVFRRWdBaWdDRUVFQlJ3MEJHaUFBSUFOQnhPRUJFQlFpQUNBQlFSQnFFQ2NMSUFBUUR4cEJBQXNoQWlBRFFSQnFKQUFnQWd2N0JnRUZmeU1BUWJBQ2F5SUZKQUFnQWhDRUFTRUdJQVZCb0FGcUVFa2lDU0FERUprSkdrRUJJUUlDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQW9BZ2dnQVJDV0NTZ0NFQ0lJUVFKckRnd0NBd0VGQVFRQkFBY0dCUUVLQ3dKQUlBWVF0QU1FZnlBR0tBSVlFTEViQlVFQUMwVU5BQ0FHRUxJQ0tBSWNRUVJIRFFBZ0EwRUFSeUFFY2lBRFFRRkdJQVJ4SUFOQmYwWnljeUVIREFnTElBVkJFR29RU1NJQ1FRaHFRZmIzQ0JBT0dpQUNRUWtRbXdSQkNHcEJ4SVlKRUE0YURBZ0xBa0FDUUFKQUlBTkJBV29PQkFJQkFRQUJDeUFFRFFFTFFRRWhCd3NnQmhDdkd3UkFJQVlRc2dJb0FoeEJBMFlOQndzZ0JVRVFhaEJKSWdKQkNHcEI5dmNJRUE0YUlBSWdDQkNiQkVFSWFrR3VoZ2tRRGhvTUJ3c0NRQUpBQWtBZ0EwRUJhZzREQWdFQUFRc2dCRVVOQVF0QkFTRUhDeUFHS0FJRVFiQ3BFa1lOQlNBRlFSQnFFRWtpQWtFSWFrSDI5d2dRRGhvZ0FrRUNFSnNFUVFocVFkYUhDUkFPR2d3R0N3SkFBa0FDUUNBRFFRRnFEZ01DQVFBQkN5QUVEUUVMUVFFaEJ3c2dCaWdDQkVIUXBSSkdEUVFnQlVFUWFoQkpJZ0pCQ0dwQjl2Y0lFQTRhSUFKQkF4Q2JCRUVJYWtHd2hBa1FEaG9NQlFzQ1FBSkFBa0FnQTBFQmFnNEVBZ0VCQUFFTElBUU5BUXRCQVNFSEN5QUdLQUlFUWFDekVrWU5BeUFGUVJCcUVFa2lBa0VJYWtIMjl3Z1FEaG9nQWtFSEVKc0VRUWhxUWNhSENSQU9HZ3dFQ3dKQUFrQUNRQ0FEUVFGcURnSUNBQUVMSUFRTkFRdEJBU0VIQ3lBR0tBSUVRYUN6RWtZTkFpQUZRUkJxRUVraUFrRUlha0gyOXdnUURob2dBaUFJRUpzRVFRaHFRY2FIQ1JBT0dnd0RDeUFHS0FJRVFhQ3pFa1lFUUNBRFFRRkhJQU5CZjBkeElRY01BZ3NnQlVFUWFoQkpJZ0pCQ0dwQjl2Y0lFQTRhSUFKQkN4Q2JCRUVJYWtIR2h3a1FEaG9NQWdzQ1FBSkFBa0FnQTBFQmFnNERBZ0VBQVFzZ0JBMEJDMEVCSVFjTElBWW9BZ1JCb0xNU1JnMEFJQVZCRUdvUVNTSUNRUWhxUWZiM0NCQU9HaUFDUVFvUW13UkJDR3BCeG9jSkVBNGFEQUVMSUFkRkRRRWdCVUVRYWhCSklnSkJDR3BCaFBnSUVBNGFJQUlnQ0JDYkJFRUlhaUlEUWMrUkNoQU9HaUFEUVp5c0NrR1JyQW9nQkJzUURob2dCU0FKUVF4cUVFSWdBeUFGRUJJYUlBTkJ1TUVFRUE0YUlBVVFEeG9MSUFVZ0FrRU1haEJDSUFBZ0JTQUJRUkJxRUNjZ0JSQVBHaUFDRUZGQkFDRUNDeUFKRUZFZ0JVR3dBbW9rQUNBQ0N4SUFJQUJCOTVFTVFlWUVRZWVhQlJERERBc1pBQ0FBUVlDTkVrSG9qQkpDd0lDQWtJQ0FpSUFJRU1ZTUM4c0VBZ2QvQVg0akFFSFFBR3NpQWlRQUlBRW9BZ2dpQkVFQUlBUW9BZ1JCMlBnUlJoc2hCQUpBSUFFb0Fnd1FoQUVpQXhDWUNRUi9RUUVGSUFNRWZ3Si9RUUFnQXlnQ0JDSUZLUU1RUW9DQWdJQ1FpSVNBQVlNaUNTQUpRZ0Y5ZzFBTkFCcEJBU0FGRU5rTERRQWFJQVVRMkFzTEJVRUFDd3RGQkVBZ0FrRXdhaUlCSUFBb0FnZ2dBeENuQVNBQ1FVQnJJZ01nQVVINy9nRVFMU0FBSUFNZ0JFRVFhaEFuSUFNUUR4b2dBUkFQR2d3QkN3SkFJQU1RMkE5RkRRQWdCQ2dDUkVVTkFDQUNRU0JxSWdFZ0FDZ0NDQ0FERUtjQklBSkJNR29pQTBIOWt3a2dBUkExSUFKQlFHc2lCU0FEUWVmWUJCQXRJQUFnQlNBRVFSQnFFQ2NnQlJBUEdpQURFQThhSUFFUUR4b01BUXNDUUNBRUtBSklSUTBBSUFFb0FoUkJCMFlOQUNBQUlBSkJRR3RCN3N3RUVCUWlBQ0FFUVJCcUVDY2dBQkFQR2d3QkN3SkFJQVFvQWl4RkRRQUNRQ0FCS0FJVUlnTkJBMnNPQXdFQUFRQUxJQUlnQXpZQ0hDQUNRU0JxSWdFZ0FrRWNhaEQ3QlNBQ1FUQnFJZ05CajVjSklBRVFOU0FDUVVCcklnVWdBMEdGZ2drUUxTQUFJQVVnQkVFUWFoQW5JQVVRRHhvZ0F4QVBHaUFCRUE4YURBRUxJQUVvQWd3UWhBRWhBeUFCS0FJVUlRVWdBU2dDR0NFSElBSkJBRG9BRkNBQ0lBUkJPR29pQ0RZQ0VDQUFJQU1nQnlBRklBSkJFR29nQkVFUWFpSUVFTWdjUlEwQUlBSkJBRG9BRENBQ0lBZzJBZ2hCQVNFR0lBQWdBa0VJYWtFQ0VMRURSUTBBSUFFb0FoUkJBV3RCQVVzTkFDQUFJQUpCUUd0QnZkZ0VFQlFpQUNBRUVDY2dBQkFQR2tFQUlRWUxJQUpCMEFCcUpBQWdCZ3NTQUNBQVFmcVNERUcrQkVIbm1nVVF3d3dMaVFZQ0IzOENmaU1BUWNBQmF5SUVKQUFnQVNnQzlBRWdBU2dDL0FFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFlQUFheUlGSkFCQkRDQURRUUYwUVFKcVFaWUJiRUhrQUc0aUF5QURRUXhOR3lJSElBRW9BdlFCU3dSQUlBVkNnSUNBZ0lBQk53SlVJQVVnQlVFUWFpSUROZ0pRSUFNZ0FTZ0MvQUVRc1FRZ0FTZ0M4QUVpQXlBQktBTDBBVUVVYkdvaENBTkFBa0FnQXlBSVJnUkFJQUVRc2dVZ0FTQUhFUE1FSUFVb0FsQWlBeUFGS0FKVVFRTjBhaUVIREFFTElBTXRBQWdFUUNBRlFSQnFJQU1RdWdJUXNRVUxJQU5CRkdvaEF3d0JDd3NEUUNBRElBZEhCRUFnQlNBQklBTVF4QndnQTBFSWFpRUREQUVMQ3lBRlFSQnFFSlVCQ3lBRlFlQUFhaVFBQ3lBQ0lBSkJCR29Rc0F3aEF5QUJLQUwwQVNFRklBUWdBellDdkFFZ0JDQURJQVZ3TmdLNEFTQUJLQUwwQVNJSFFRRnJJUWdnQkNnQ3VBRWhCUUpBQTBBZ0JpQUhSd1JBSUFFb0F2QUJJZ2tnQlVFVWJHb2lBeTBBQ0VVRVFDQUNLUUlBSVFvZ0EwRUJPZ0FJSUFNZ0NqY0NBQ0FFS0FLOEFTRUNJQWtnQlVFVWJHb2lBeUFHTmdJUUlBTWdBallDRENBQklBRW9BdndCUVFGcU5nTDhBU0FCSUFFb0FvQUNRUUZxTmdLQUFpQUFRZ0EzQWdBTUF3c2dBeUFFS0FLOEFTQUNFTDRkQkVBZ0FFSUNOd0lBREFNTElBWWdBeWdDRUVzRVFDQUNLUUlBSVFvZ0JFRUJPZ0NvQVNBRUlBWTJBckFCSUFRZ0NqY0RvQUVnQkNBRUtBSzhBVFlDckFFZ0JDQUdOZ0lRSUFRZ0JDa0RxQUVpQ3pjRENDQUVJQW8zQXdBZ0JDQURLQUlRTmdLd0FTQUVJQU1wQWdnM0E2Z0JJQVFnQXlrQ0FEY0RvQUVnQXlBR05nSVFJQU1nQ2pjQ0FDQURJQXMzQWdnZ0JDQUVLQUt3QVVFQmFqWUNzQUVnQVNBRlFRRnFJQUVvQXZRQmNDQUVRYUFCYWhDeUJDQUJJQUVvQXZ3QlFRRnFOZ0w4QVNBQklBRW9Bb0FDUVFGcU5nS0FBaUFBUWdBM0FnQU1Bd1VnQlVFQmFrRUFJQVVnQ0VjYklRVWdCa0VCYWlFR0RBSUxBQXNMSUFSQmhyVURRZXNEUVE0Z0JFR2dBV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdEJBUUYrSUFCRkJFQkJBQThMQW45QkFDQUFLQUlFSWdBcEF4QkNnZUNBZ29DQWlBR0RJZ0VnQVVJQmZZTlFEUUFhUVFFZ0FCQ0NDQTBBR2lBQUVMY1FDd3UwQVFFRmZ5TUFRVUJxSWdFa0FDQUJRVGhxSUFBb0FnQWlBeWdDdkFvZ0FDZ0NCQkQvQzBFQklRSUNRQ0FCTFFBOFJRMEFJQUFvQWdnUXh4d2lCVVVOQUNBRElBRkJLR29pQkNBRkVCUWlBaUFBS0FJTUVDY2dBaEFQR2lBQlFRaHFJZ0lnQXlnQ0NDQUFLQUlFS0FJQUVLY0JJQUZCR0dvaUFFSFVrQWtnQWhBMUlBUWdBRUdON2dNUUxTQURJQVFnQVNnQ09CQ0dBU0FFRUE4YUlBQVFEeG9nQWhBUEdrRUFJUUlMSUFGQlFHc2tBQ0FDQ3p3QkFYOUJ5OW9FSVFFQ1FBSkFBa0FnQUNnQ0FDZ0NBRUVIYXc0REFBSUJBZ3NnQUNnQ0JDZ0NBRUVDUmcwQVFiUE5CQThMUVFBaEFRc2dBUXVQQXdFQ2Z5TUFRZUFBYXlJR0pBQWdCaUFDTmdKSUlBWWdBVFlDVENBR0lBTTJBa1FnQmlBRktRSUlOd01RSUFZZ0JTZ0NFRFlDR0NBR0lBVXBBZ0EzQXdnQ1FDQUFJQUVnQXlBR1FRaHFFSThRUlEwQUFrQWdBMEVHUmdSQUlBQW9BcmdLSVFJZ0JrRUVOZ0lnSUFKQkhHb2dCa0VnYWhDdEJBMEJJQVFvQWdBaEFpQUdRUUE2QUR3Z0JpQUNOZ0k0SUFBZ0JrRTRha0VDRUxFRFJRMEJJQUFnQmtFZ2FrR2Ivd2dRRkNJQUlBVVFKeUFBRUE4YURBSUxJQU5CQjBjZ0FrRURSM0lOQUNBQUlBWkJJR3BCbGR3RUVCUWlBQ0FGRUNjZ0FCQVBHZ3dCQ3lBR0lBWkJ5QUJxTmdJMElBWWdCa0hFQUdvMkFqQWdCaUFGTmdJc0lBWWdBRFlDSUNBR0lBWkJNR28yQWlnZ0JpQUdRY3dBYWpZQ0pFRUJJUWNnQVVVTkFDQUJLQUlFSWdGQjhLUVNSZ1JBSUFaQk1Hb1F4eHdpQVVVTkFTQUFJQVpCMEFCcUlBRVFGQ0lBSUFVUUp5QUFFQThhUVFBaEJ3d0JDeUFCRU9ZREJFQWdCa0VnYWhER0hDRUhEQUVMSUFGQmtLSVNSdzBBSUFaQklHb1F4aHdoQndzZ0JrSGdBR29rQUNBSEMvQUJBZ04vQVg0RFFDQUJCSDhDZjBFQUlBRW9BZ1FpQWlrREVFS0I1SUNDZ0lDSkFZTWlCU0FGUWdGOWcxQU5BQnBCQVNBQ0VMY1FEUUFhQW45QkFDQUNLUU1RUW9Ha2dJQ0FnQUdESWdVZ0JVSUJmWU5RRFFBYVFRRWdBaENDQ0EwQUdpQUNFSUVJQ3dzRlFRQUxCRUJCQVE4TEFrQWdBVVVOQUNBQktBSUVJZ0lRa1FNZ0FrSHdxaEpHY2lBQ1FaQ2lFa1p5UlFSQUlBSVE1Z01FUUNBQktBSkVJZ0lnQVNnQ1NFRUNkR29oQVFOQUlBRWdBa1lpQXcwRElBSW9BZ0FoQkNBQ1FRUnFJUUlnQUNBRUtBSW9FTWtjRFFBTERBSUxJQUpCOEtRU1J3MEJDeUFCS0FJWUlRRU1BUXNMSUFNTERRQWdBQ2dDQUNnQ0FCREtBd3NNQUNBQUVJTVJHaUFBRUI4TEJ3QWdBQkNERVFzWkFDQUFJQUVnQWlBRFFmQ0xFa0dNakJKQjBJc1NFTnNTQzB3QkEzOGdBQ2dDQUNJQUtBSUFJZ0VnQUNnQ0JFRUNkR29oQWdOQUlBSWdBU0lBUndSQUlBQkJCR29oQVNBQUtBSUFJZ01FZnlBREtBSUVFT3dkQlVFQUMwVU5BUXNMSUFBZ0FrY0xUQUVEZnlBQUtBSUFJZ0FvQWdBaUFTQUFLQUlFUVFKMGFpRUNBMEFnQWlBQklnQkhCRUFnQUVFRWFpRUJJQUFvQWdBaUF3Ui9JQU1vQWdRUXh4QUZRUUFMUlEwQkN3c2dBQ0FDUndzNkFRRi9Jd0JCb0FGcklnRWtBQ0FCUWFXS0JVSGZEa0VJSUFBb0FnQW9BZ2dRRnlJQVFSaHFRWlFLRUE0YUlBQVFHQ0FCUWFBQmFpUUFDOGNNQVFaL0l3QkJrQUpySWdJa0FDQUJSUVJBSUFKQjJBQnFRYVdLQlVHQURrRUlJQUpCeUFCcUVCMGlCUkFYSWdSQkdHcEJzNzhJRUE0YUlBUVFHQ0FGRUI0TElBRW9BZ2doQlNBQ0lBQTJBa0FDUUNBRlJRUkFJQUpCUUdzUTBCd01BUXNnQlNnQ0JDSUVRZmp0RDBZRVFDQUFLQUlFSUFVUWdnTVFvQVFpQVVFQUlBRW9BZ1JCMkp3U1Joc29BaXdoQVNBQ1FkZ0FhaEJKSVFRQ1FDQUJSU0FCS0FJRVFjQ2NFa2R5UlFSQUlBRW9BbGdpQXlnQ0JDRUdJQUlnQVNnQ0NFRTRhallDU0NBQ1FRQTZBRXdnQTBFQUlBWkJnSk1TUmhzaEJpQUNRY2dBYWhEUEhBUi9RYk9OQ2dVZ0FTZ0NDQ0VCSUFKQkFEb0EvQUVnQWlBQlFUaHFOZ0w0QVVIU3hBbEJzL2dKSUFKQitBRnFFTTRjR3dzaEF5QUVRUWhxSWdFZ0F4QU9HaUFCUWZPYUNSQU9HaUFDUWNnQWFpSURJQVVvQWlSQkpHb1FVeUFCSUFNUUVob2dBVUhwa0FrUURob2dBa0g0QVdvaUJ5QUdLQUpBS0FJa1FTUnFFRk1nQVNBSEVCSWFJQUZCMC9ZQ0VBNGFJQWNRRHhvZ0F4QVBHZ3dCQ3lBRVFRaHFJZ05CZzVjS0VBNGFJQU1nQVJDUkVCQU9HaUFEUWZPYUNSQU9HaUFDUWNnQWFpSUJJQVVvQWlSQkpHb1FVeUFESUFFUUVob2dBMEdNMFFNUURob2dBUkFQR2dzZ0FDZ0NDQ0VBSUFKQnlBQnFJZ01nQkVFTWFoQkNJQUlnQWlnQ1RDQUNMUUJUSWdFZ0FVRVlkRUVZZFVFQVNDSUJHellDL0FFZ0FpQUNLQUpJSUFNZ0FSczJBdmdCSUFJZ0Fpa0QrQUUzQXdnZ0FDQUNRUWhxSUFWQkVHb1FyQVFnQXhBUEdpQUVFRkVNQVFzZ0JCRGRCUVJBSUFBb0FnUWdCUkNqQnlFRElBSkIyQUJxRUVraUJFRUlhaUlCUVlPWENoQU9HaUFCSUFNUWtSQVFEaG9nQVVIem1na1FEaG9nQWtISUFHb2lBeUFGS0FJa1FTUnFFRk1nQVNBREVCSWFJQUZCak5FREVBNGFJQU1RRHhvZ0FDZ0NDQ0VBSUFNZ0JFRU1haEJDSUFJZ0FpZ0NUQ0FDTFFCVElnRWdBVUVZZEVFWWRVRUFTQ0lCR3pZQy9BRWdBaUFDS0FKSUlBTWdBUnMyQXZnQklBSWdBaWtEK0FFM0F4QWdBQ0FDUVJCcUlBVkJFR29RckFRZ0FrSElBR29RRHhvZ0JCQlJEQUVMSUFSQnVPNFBSZ1JBSUFKQnlBQnFJQVVvQWlRb0FpUkJKR29RVXdKQUFrQUNRQUpBQWtBQ1FDQUJLQUlBUVFGckRnUUNBUU1BQkFzZ0FDZ0NDQ0VBSUFKQitBRnFJZ1JCd3BBSklBSkJ5QUJxRU1RQklBSkIyQUJxSWdNZ0JFSFQ5Z0lRTFNBQ0lBSW9BbHdnQWkwQVl5SUJJQUZCR0hSQkdIVkJBRWdpQVJzMkFvd0NJQUlnQWlnQ1dDQURJQUViTmdLSUFpQUNJQUlwQTRnQ053TVlJQUFnQWtFWWFpQUZRUkJxRUt3RUlBTVFEeG9nQkJBUEdnd0VDeUFBS0FJRUlBVW9Ba2dnQVNnQ0RFRUNkR29vQWdBUWdnTW9BaEFoQlNBQ1FkZ0FhaEJKSWdSQkNHb2lBVUdEbHdvUURob2dBU0FGRUpFUUVBNGFJQUZCODVvSkVBNGFJQUpCK0FGcUlnTWdCUkNrQkNBQklBTVFFaG9nQVVHTTBRTVFEaG9nQXhBUEdpQUFLQUlJSVFBZ0F5QUVRUXhxRUVJZ0FpQUNLQUw4QVNBQ0xRQ0RBaUlCSUFGQkdIUkJHSFZCQUVnaUFSczJBb3dDSUFJZ0FpZ0MrQUVnQXlBQkd6WUNpQUlnQlNnQ0NDRUJJQUlnQWlrRGlBSTNBeUFnQUNBQ1FTQnFJQUZCRUdvUXJBUWdBa0g0QVdvUUR4b2dCQkJSREFNTElBVW9Ba2dnQVNnQ0RFRUNkR29vQWdBaEFTQUFLQUlJSVFBZ0FrSDRBV29pQkVINml3a2dBa0hJQUdvUXhBRWdBa0hZQUdvaUF5QUVRWkVyRUMwZ0FpQUNLQUpjSUFJdEFHTWlCU0FGUVJoMFFSaDFRUUJJSWdVYk5nS01BaUFDSUFJb0FsZ2dBeUFGR3pZQ2lBSWdBaUFDS1FPSUFqY0RLQ0FBSUFKQktHb2dBVUVRYWhDc0JDQURFQThhSUFRUUR4b01BZ3NnQUNnQ0NDRUFJQUpCK0FGcUlnTkIrNDRKSUFKQnlBQnFFTVFCSUFKQjJBQnFJZ1lnQTBIem1na1FMU0FDSUFJb0Fsd2dBaTBBWXlJRUlBUkJHSFJCR0hWQkFFZ2lCQnMyQW93Q0lBSWdBaWdDV0NBR0lBUWJOZ0tJQWlBRktBSklJQUVvQWd4QkFuUnFLQUlBSVFFZ0FpQUNLUU9JQWpjRE1DQUFJQUpCTUdvZ0FVRVFhaENzQkNBR0VBOGFJQU1RRHhvTUFRc2dBa0hZQUdwQnBZb0ZRZFVPUVFnZ0FDZ0NDQkFYSWdCQkdHcEJsQW9RRGhvZ0FCQVlDeUFDUWNnQWFoQVBHZ3dCQ3lBRUVMZ1NCRUFnQUNnQ0NDRUFJQUpCSnpZQ1hDQUNRYXYyQWpZQ1dDQUNJQUlwQTFnM0F6Z2dBQ0FDUVRocUlBVkJFR29RckFRTUFRc2dBa0ZBYXhEUUhBc2dBa0dRQW1va0FBc2hBQ0FCS0FJUUlnRkZCRUFRYndBTElBQWdBU0FDSUFFb0FnQW9BaGdSQlFBTHpBVUNDSDhDZmlNQVFjQUJheUlFSkFBZ0FTZ0NaQ0FCS0FKc0lnTkJsZ0ZzUVpZQmFrSGtBRzVKQkVBakFFRXdheUlGSkFCQkJpQURRUUYwUVFKcVFaWUJiRUhrQUc0aUF5QURRUVpOR3lJR0lBRW9BbVJMQkVBZ0JVS0FnSUNBd0FBM0FpUWdCU0FGUVJCcUlnTTJBaUFnQXlBQktBSnNFTllDSUFFb0FtQWlBeUFCS0FKa1FRUjBhaUVIQTBBQ1FDQURJQWRHQkVBZ0FSRHFCU0FCSUFZUTZBVWdCU2dDSUNJRElBVW9BaVJCQW5ScUlRWU1BUXNnQXkwQUJBUkFJQVZCRUdvZ0F4QytBUkJ4Q3lBRFFSQnFJUU1NQVFzTEEwQWdBeUFHUndSQUlBVWdBU0FERU5NY0lBTkJCR29oQXd3QkN3c2dCVUVRYWhCZUN5QUZRVEJxSkFBTElBUkJ1QUZxSUFFZ0FoRFdEaUFCS0FKa0lnbEJBV3NoQ2lBQ0tBSUFJUVlnQVNnQ1lDRUlJQVFvQXJ3QklRY2dCQ2dDdUFFaEJVRUFJUUlDUUFOQUlBSWdDVWNFUUNBSUlBVkJCSFJxSWdNdEFBUkZCRUFnQTBFQk9nQUVJQU1nQmpZQ0FDQUlJQVZCQkhScUlnTWdBallDRENBRElBYzJBZ2dnQVNBQktBSnNRUUZxTmdKc0lBRWdBU2dDY0VFQmFqWUNjQ0FBUWdBM0FnQU1Bd3NDUUNBREtBSUlJQWRIRFFBZ0JpQURLQUlBUncwQUlBQkNBamNDQUF3REN5QUNJQU1vQWd4TEJFQWdCQ0FITmdLd0FTQUVJQVkyQXFnQklBUWdBallDdEFFZ0JFRUJPZ0NzQVNBRUlBUXBBN0FCSWdzM0F4QWdCQ0FFS1FPb0FTSU1Od01JSUFRZ0F5a0NDRGNEc0FFZ0JDQURLUUlBTndPb0FTQURJQXczQWdBZ0F5QUxOd0lJSUFRZ0JDZ0N0QUZCQVdvMkFyUUJJQUVnQlVFQmFpQUJLQUprY0NBRVFhZ0JhaEQwQlNBQklBRW9BbXhCQVdvMkFtd2dBU0FCS0FKd1FRRnFOZ0p3SUFCQ0FEY0NBQXdEQlNBRlFRRnFRUUFnQlNBS1J4c2hCU0FDUVFGcUlRSU1BZ3NBQ3dzZ0JFRUlha0dHdFFOQjZ3TkJEaUFFUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBRVFjQUJhaVFBQzBFQkFYNGdBRVVFUUVFQUR3c0NmMEVBSUFBb0FnUWlBQ2tERUVLQWdJQ0FnTENDQ1lNaUFTQUJRZ0Y5ZzFBTkFCcEJBU0FBRU5ZY0RRQWFJQUFRMXh3TEM0SUJBUUovSUFFZ0FDZ0NTRXNFUUNBQUtBSkFJUU1nQUNFQ0lBQWdBVUVJVHdSL1FYOGdBVUVEZENBQlFmLy8vLzhCU3hzUUZTRUNJQUVGUVFnTE5nSklJQUFnQWpZQ1FFRUFJUUVEUUNBQUtBSkVJQUZOQkVBZ0FDQURFRFlGSUFGQkEzUWlBaUFBS0FKQWFpQUNJQU5xS1FJQU53SUFJQUZCQVdvaEFRd0JDd3NMQ3dvQUlBQkI0SlFTRUVnTE9RRUJmZ0ovUVFBZ0FDa0RFRUtBZ0lDQWdMQ0FDWU1pQVNBQlFnRjlnMUFOQUJwQkFTQUFRWkNTRWhCSURRQWFJQUJCdUo4U0VFZ0xDM0lCQVg0Z0FFVUVRRUVBRHdzQ2YwRUFJQUFvQWdRaUFDa0RFRUtBZ0lDQWdMQ2lpWUIvZ3lJQklBRkNBWDJEVUEwQUdrRUJBbjlCQUNBQUtRTVFRb0NBZ0lDQW9LS0FnSCtESWdFZ0FVSUJmWU5RRFFBYVFRRWdBRUhJbWhJUVNBMEFHaUFBRU5ZY0N3MEFHaUFBRU5jY0N3c0tBQ0FBUVpDWUVoQklDKzhEQVFkL0l3QkI0QUZySWdRa0FDQUJRY1FaYWlnQ0FDSUhJQUVvQXN3WklnVkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0FTQUZRUUYwUVFKcUVNY2FJQUVvQXNRWklRY0xJQUlvQWdBaENDQUVJQU0yQXR3QklBUWdBallDMkFFZ0IwRUJheUVKSUFnZ0IzQWhCa0VBSVFNQ1FBTkFJQU1nQjBjRVFDQUJLQUxBR1NJS0lBWkJ4QUJzYWlJRkxRQTRSUVJBSUFRZ0JFSFlBV29RL0FnZ0JTQUVFTDhhSUFvZ0JrSEVBR3hxSWdJZ0F6WUNRQ0FDSUFnMkFqd2dBU0FCS0FMTUdVRUJhallDekJrZ0FTQUJLQUxRR1VFQmFqWUMwQmtnQUNBRlFSeHFOZ0lFSUFCQkFEWUNBQXdEQ3lBRklBZ2dBaEMrR2dSQUlBQkJBallDQUNBQUlBVkJIR28yQWdRTUF3c2dBeUFGS0FKQVN3UkFJQVJCb0FGcUlnSWdCRUhZQVdvUS9BZ2dCQ0FDRUxzYUlnSWdBellDUUNBQ0lBZzJBandnQWlBRkVLZ1BJQUlnQWlnQ1FFRUJhallDUUNBQklBWkJBV29nQVNnQ3hCbHdJQUlRc0JvZ0FTQUJLQUxNR1VFQmFqWUN6QmtnQVNBQktBTFFHVUVCYWpZQzBCa2dBQ0FGUVJ4cU5nSUVJQUJCQURZQ0FDQUNFT2NIREFNRklBWkJBV3BCQUNBR0lBbEhHeUVHSUFOQkFXb2hBd3dDQ3dBTEN5QUVRWWExQTBIckEwRU9JQVJCb0FGcUVCMGlBUkFYSWdKQkdHcEJsalVRRGhvZ0FoQVlJQUJDQURjQ0FDQUJFQjRMSUFSQjRBRnFKQUFMaGdFQkEzOGdBU0FBS0FJWVN3UkFJQUFvQWhBaEF5QUFJUUlnQUNBQlFRUlBCSDlCZnlBQlFRSjBJQUZCLy8vLy93TkxHeEFWSVFJZ0FRVkJCQXMyQWhnZ0FDQUNOZ0lRSUFBb0FoUWhBa0VBSVFFRFFDQUJJQUpHQkVBZ0FDQURFRFlGSUFGQkFuUWlCQ0FBS0FJUWFpQURJQVJxS0FJQU5nSUFJQUZCQVdvaEFRd0JDd3NMQ3hZQUlBQWdBQ2dDR0NJQVFRRjBRUUlnQUJzUTJ4d0x1UVVDQzM4Q2ZpTUFRZEFCYXlJQ0pBQUNRRUVHSUFGQmxnRnNRZVFBYmlJQklBRkJCazBiSWdNZ0FDZ0NaRTBOQUNBQ1FvQ0FnSURBQURjQ0ZDQUNJQUkyQWhBZ0FpQUFLQUpzRU5zY0lBQW9BbUFpQVNBQUtBSmtRUVIwYWlFRkEwQWdBU0FGUmdSQUlBQVErUndnQUNBREVKOFFJQUlvQWhBaUJTQUNLQUlVUVFKMGFpRUpJQUpCT0dvaENnTkFJQVVnQ1VZRVFDQUNFRjRNQkFzZ0FDZ0NaQ0FBS0FKc0lnRkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0FDQUJRUUYwUVFKcUVOMGNDeUFGS0FJQUVNTURJUVlnQUNnQ1pDSUhRUUZySVFzZ0JpQUhjQ0VFSUFBb0FtQWhERUVBSVFFQ1FBTkFJQUVnQjBjRVFDQU1JQVJCQkhScUlnTXRBQVJGQkVBZ0JTZ0NBQ0VFSUFOQkFUb0FCQ0FESUFRMkFnQWdBeUFCTmdJTUlBTWdCallDQ0NBQUlBQW9BbXhCQVdvMkFtd2dBQ0FBS0FKd1FRRnFOZ0p3REFNTElBVW9BZ0FoQ0NBR0lBTW9BZ2hHQkVBZ0NDQURLQUlBUmcwREN5QUJJQU1vQWd4TEJFQWdBaUFHTmdMSUFTQUNJQWcyQXNBQklBSWdBVFlDekFFZ0FrRUJPZ0RFQVNBQ0lBSXBBOGdCSWcwM0F5Z2dBaUFDS1FQQUFTSU9Od01nSUFJZ0F5a0NDRGNEeUFFZ0FpQURLUUlBTndQQUFTQURJQTQzQWdBZ0F5QU5Od0lJSUFJZ0FpZ0N6QUZCQVdvMkFzd0JJQUFnQkVFQmFpQUFLQUprY0NBQ1FjQUJhaEQwQlNBQUlBQW9BbXhCQVdvMkFtd2dBQ0FBS0FKd1FRRnFOZ0p3REFNRklBUkJBV3BCQUNBRUlBdEhHeUVFSUFGQkFXb2hBUXdDQ3dBTEN5QUNRU0JxUVlhMUEwSHJBMEVPSUFKQndBRnFFQjBpQVJBWElRTWdDa0dXTlJBT0dpQURFQmdnQVJBZUN5QUZRUVJxSVFVTUFBc0FDeUFCTFFBRUJFQWdBaWdDRkNJRUlBSW9BaGhQQkVBZ0FoRGNIQ0FDS0FJVUlRUUxJQUlnQkVFQmFqWUNGQ0FDS0FJUUlBUkJBblJxSUFFb0FnQTJBZ0FMSUFGQkVHb2hBUXdBQ3dBTElBSkIwQUZxSkFBTGVnRUZmeU1BUVJCcklnRWtBQUpBSUFBb0FnQWlBaWdDaUFFaUF5QUFLQUlNUmdSQUlBQW9BZ2doQUF3QkN5QUJRUWhxSUFJZ0FFRUVhaENZRUNBQ0tBSjRJUUlnQVMwQUNDRUVJQUVvQWd3aEJTQUFJQU0yQWd3Z0FDQUNJQVZCRkd4cVFRUnFRUUFnQkJzaUFEWUNDQXNnQVVFUWFpUUFJQUFMUndFRGZ5TUFRYUFCYXlJQkpBQWdBVUdsaWdWQnVneEJDQ0FBS0FJQUtBSUlFQmNpQWtFWWFpSURRYzdpQ3hBT0dpQURJQUFvQWdRUUVob2dBaEFZSUFGQm9BRnFKQUFMSlFBZ0FCRE5HaUFBUVF3UStROGdBRUVBTmdMUUJDQUFJQUFvQXRRRVFRRnFOZ0xVQkFzTkFDQUFJQUZCMkp3U0VJMElDMndCQTM4akFFR3dBV3NpQWlRQUlBSkJFR3BCcFlvRlFjY0xRUWdnQVNnQ0FDZ0NDQkFYSWdOQkdHb2lCRUhuamd3UURob2dCQ0FDSUFFb0FnUW9BZ0FvQWdRb0FnUVFGQ0lCRUJJYUlBRVFEeG9nQXhBWUlBQkJBRFlDQ0NBQVFnQTNBZ0FnQWtHd0FXb2tBQXNRQUNBQUlBRkIvSTBNUVpFS0VOMFNDeEFBSUFBZ0FVSE5qZ3hCMmdvUTNSSUxnZ0VCQW44Z0FTQUFLQUlvU3dSQUlBQW9BaUFoQXlBQUlRSWdBQ0FCUVFSUEJIOUJmeUFCUVFOMElBRkIvLy8vL3dGTEd4QVZJUUlnQVFWQkJBczJBaWdnQUNBQ05nSWdRUUFoQVFOQUlBQW9BaVFnQVUwRVFDQUFJQU1RTmdVZ0FVRURkQ0lDSUFBb0FpQnFJQUlnQTJvcEFnQTNBZ0FnQVVFQmFpRUJEQUVMQ3dzTEpRQWdBQkRSR2lBQVFUQVE2ZzhnQUVFQU5nTE1HU0FBSUFBb0F0QVpRUUZxTmdMUUdRdmNCUUlJZndKK0l3QkJ3QUZySWdRa0FDQUJLQUxFQVNBQktBTE1BU0lEUVpZQmJFR1dBV3BCNUFCdVNRUkFJd0JCUUdvaUJTUUFRUXdnQTBFQmRFRUNha0dXQVd4QjVBQnVJZ01nQTBFTVRSc2lCaUFCS0FMRUFVc0VRQ0FGUW9DQWdJQ0FBVGNDTkNBRklBVkJFR29pQXpZQ01DQURJQUVvQXN3QkVEa2dBU2dDd0FFaUF5QUJLQUxFQVVFRWRHb2hCd05BQWtBZ0F5QUhSZ1JBSUFFUTZnUWdBU0FHRU9RRUlBVW9BakFpQXlBRktBSTBRUUowYWlFR0RBRUxJQU10QUFRRVFDQUZRUkJxSUFNUXZnRVFKQXNnQTBFUWFpRUREQUVMQ3dOQUlBTWdCa2NFUUNBRklBRWdBeERuSENBRFFRUnFJUU1NQVFzTElBVkJFR29RSXdzZ0JVRkFheVFBQ3lBRVFiZ0JhaUFCSUFJUTlBc2dBU2dDeEFFaUNVRUJheUVLSUFJb0FnQWhCaUFCS0FMQUFTRUlJQVFvQXJ3QklRY2dCQ2dDdUFFaEJVRUFJUUlDUUFOQUlBSWdDVWNFUUNBSUlBVkJCSFJxSWdNdEFBUkZCRUFnQTBFQk9nQUVJQU1nQmpZQ0FDQUlJQVZCQkhScUlnTWdBallDRENBRElBYzJBZ2dnQVNBQktBTE1BVUVCYWpZQ3pBRWdBU0FCS0FMUUFVRUJhallDMEFFZ0FFSUFOd0lBREFNTEFrQWdBeWdDQ0NBSFJ3MEFJQVlnQXlnQ0FFY05BQ0FBUWdJM0FnQU1Bd3NnQWlBREtBSU1Td1JBSUFRZ0J6WUNzQUVnQkNBR05nS29BU0FFSUFJMkFyUUJJQVJCQVRvQXJBRWdCQ0FFS1FPd0FTSUxOd01RSUFRZ0JDa0RxQUVpRERjRENDQUVJQU1wQWdnM0E3QUJJQVFnQXlrQ0FEY0RxQUVnQXlBTU53SUFJQU1nQ3pjQ0NDQUVJQVFvQXJRQlFRRnFOZ0swQVNBQklBVkJBV29nQVNnQ3hBRndJQVJCcUFGcUVPc0VJQUVnQVNnQ3pBRkJBV28yQXN3QklBRWdBU2dDMEFGQkFXbzJBdEFCSUFCQ0FEY0NBQXdEQlNBRlFRRnFRUUFnQlNBS1J4c2hCU0FDUVFGcUlRSU1BZ3NBQ3dzZ0JFRUlha0dHdFFOQjZ3TkJEaUFFUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBRVFjQUJhaVFBQzBzQkFYOGpBRUVRYXlJQ0pBQWdBQ0FCUndSQUlBSWdBVUdnQW1vMkFnZ2dBaUFCS0FLZ0FpQUJSem9BRENBQUlBSkJDR29RL2h3TElBSkJFR29rQUNBQUlBRXBBcXdDTndLc0FndExBUUYvSXdCQkVHc2lBaVFBSUFBZ0FVY0VRQ0FDSUFGQndBRnFOZ0lJSUFJZ0FTZ0N3QUVnQVVjNkFBd2dBQ0FDUVFocUVQOGNDeUFDUVJCcUpBQWdBQ0FCS1FMTUFUY0N6QUVMR3dBZ0FDMEF4QmdFUUNBQVFRUnFFS1VGSUFCQkFEb0F4QmdMQzU0QkFnSi9BWDRnQVNBQVFhakVBV29vQWdCTEJFQWdBQ2dDb01RQklRTWdBQ0VDSUFBZ0FVRUlUd1IvUVg4Z0FhMUN4QmgrSWdTbklBUkNJSWluR3hBVklRSWdBUVZCQ0FzMkFxakVBU0FBSUFJMkFxREVBVUVBSVFFRFFDQUFLQUtreEFFZ0FVMEVRQ0FBSUFNUU5nVWdBVUhFR0d3aUFpQUFLQUtneEFGcUlBSWdBMm9pQWhEcEN4b2dBa0VFYWhDbEJTQUJRUUZxSVFFTUFRc0xDd3NsQUNBQUVOb2FJQUJCQmhEaUR5QUFRUUEyQXBCZ0lBQWdBQ2dDbEdCQkFXbzJBcFJnQ3pZQkFYOGdBQ2dDQ0NJQ0lBRkJBblJxSVFFRFFDQUJJQUpHUlFSQUlBSkJBRFlDQUNBQ1FRUnFJUUlNQVFzTElBQWdBVFlDQ0Fza0FDQUNLQUlBRU1NRElRSWdBU2dDWkNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBTFNRRUNmeUFBS0FJa0lnSWdBQ2dDS0NJRFR3UkFJQUFnQTBFQmRFRUNJQU1iRUxFSklBQW9BaVFoQWdzZ0FDQUNRUUZxTmdJa0lBQW9BaUFnQWtFQ2RHb2dBU2dDQURZQ0FBdXdCQUlLZndKK0l3QkJ3QUZySWdJa0FDQUFRUnhxSVFZZ0FDZ0NnQUVnQUNnQ2lBRWlBMEdXQVd4QmxnRnFRZVFBYmtrRVFDQUdJQU5CQVhSQkFtb1EzUndMSUFKQnVBRnFJQVlnQVJEdUhDQUFLQUtBQVNJS1FRRnJJUXNnQUNnQ2ZDRUpJQUVvQWdBaEJ5QUNLQUs4QVNFSUlBSW9BcmdCSVFWQkFDRURBa0FDUUFOQUlBTWdDa2NFUUNBSklBVkJCSFJxSWdRdEFBUkZCRUFnQkVFQk9nQUVJQVFnQnpZQ0FDQUpJQVZCQkhScUlnUWdBellDRENBRUlBZzJBZ2dnQUNBQUtBS0lBVUVCYWpZQ2lBRWdBQ0FBS0FLTUFVRUJhallDakFFTUF3c2dDQ0FFS0FJSVJnUkFJQWNnQkNnQ0FFWU5CQXNnQXlBRUtBSU1Td1JBSUFJZ0NEWUNzQUVnQWlBSE5nS29BU0FDSUFNMkFyUUJJQUpCQVRvQXJBRWdBaUFDS1FPd0FTSU1Od01RSUFJZ0Fpa0RxQUVpRFRjRENDQUNJQVFwQWdnM0E3QUJJQUlnQkNrQ0FEY0RxQUVnQkNBTk53SUFJQVFnRERjQ0NDQUNJQUlvQXJRQlFRRnFOZ0swQVNBR0lBVkJBV29nQUNnQ2dBRndJQUpCcUFGcUVQUUZJQUFnQUNnQ2lBRkJBV28yQW9nQklBQWdBQ2dDakFGQkFXbzJBb3dCREFNRklBVkJBV3BCQUNBRklBdEhHeUVGSUFOQkFXb2hBd3dDQ3dBTEN5QUNRUWhxUVlhMUEwSHJBMEVPSUFKQnFBRnFFQjBpQXhBWElnUkJHR3BCbGpVUURob2dCQkFZSUFNUUhnc2dBQ2dDRkNJRElBQW9BaGhQQkVBZ0FCRGNIQ0FBS0FJVUlRTUxJQUFnQTBFQmFqWUNGQ0FBS0FJUUlBTkJBblJxSUFFb0FnQTJBZ0FMSUFKQndBRnFKQUFMemdzQkNIOGpBRUd3QTJzaUJDUUFJQVFnQXpZQzdBRWdCQ0FBTmdMa0FTQUVJQVJCN0FGcU5nTGdBU0FCRU9vTElBRWdCQ2dDN0FFUTdRZEJBQkNjQ1NBQ0tBS2dBVVVFUUNBRVFZQUNha0dsaWdWQjl3NUJDQ0FFUWFBRGFoQWRJZ01RRnlJRlFSaHFRWVcxQ0JBT0dpQUZFQmdnQXhBZUN5QUNJUU1EUUFKQUlBTkZEUUFnQXlnQ29BRWdBU0FFS0FMc0FSRHRCMFlOQUNBREtBS2dBU0VEREFFTEN5QURLQUlJSWdWQkFDQUZLQUlFUWJqdUQwWWJJZ2xGQkVBZ0JFR0FBbXBCcFlvRlFZQVBRUWdnQkVHZ0Eyb1FIU0lHRUJjaUNFRVlha0hUdFFnUURob2dDQkFZSUFZUUhnc2dBQ0FKRU9NTEtBSXNJUWdnQkVIUUFXb2dDU2dDSkNnQ0pFRWthaEJUQWtBZ0F5Z0NBQ0lHUVFGclFRRk5CRUFnQ0VFQUlBZ29BZ1JCZ0pNU1Joc2lBUVJBSUFFb0FrQWhCU0FFUVFBMkFvZ0NJQVFnQlRZQ2hBSWdCQ0FBUVF4cU5nS0FBaUFFSUFCQjNLY0NhaWdDQUVFQmF6WUNqQUlnQkVHQUFtb2lCeERoQ3lFRklBTW9BZ3doQ0NBRktBTDRCeUVGSUFBZ0J4RGlDeUFGSUFoQi9BQnNha0h3QUVIMEFDQUdRUUZHRzJvb0FnQWdCQ2dDN0FFUThSd0xJQVJCZ0FKcUVFa2lCVUVJYWlJSVFhRHpCQkFPR2lBSVFkejRERUh5MlFFZ0JrRUJSaHNRRGhvZ0NFR1c3d01RRGhvZ0JDQUpLQUpJSUFNb0FneEJBblJxS0FJQUlnTW9BaUEyQXNnQklBUWdBeWtDR0RjRHdBRWdCQ0FES1FJUU53TzRBU0FFUWFnQmFpSURJQVZCREdvUVFpQUVJQVFvQXNnQk5nSVlJQVFnQkNrRHdBRTNBeEFnQkNBRUtRTzRBVGNEQ0NBRVFlQUJhaUFFUVFocUlBTWdBVUVBUnhDU0VDQURFQThhSUFBZ0FpZ0NvQUVRMFJ3Z0JSQlJEQUVMSUFCQkRHb2hCeUFFS0FMc0FTRUxBa0FDUUFKQUEwQWdBQ0FGRU9NTEtBSXNJZ1lvQWdRaUNrSDRqeEpHRFFNZ0NrR0FreEpIRFFFZ0JpZ0NRQ0VGSUFSQkFEWUNxQU1nQkNBRk5nS2tBeUFFSUFjMkFxQURJQVFnQUNnQzNLY0NRUUZyTmdLc0F5QUVRYUFEYWhEaEN5QUxFTzBISWdZb0FpQWlCU0FHS0FJa1FRSjBhaUVLQWtBRFFDQUZJQXBHRFFFZ0JTZ0NBQ0VHSUFWQkJHb2hCU0FHS0FJQURRQUxJQVlvQWdnaUJVRUFJQVVvQWdSQnVPNFBSaHNoQlF3QkN3c2dCRUdBQW1wQnBZb0ZRZFVOUVFnZ0JFSHdBV29RSFNJRkVCY2lCa0VZYWtIejh3Z1FEaG9NQVFzZ0JFR0FBbXBCcFlvRlFkY05RUWdnQkVHZ0Eyb1FIU0lGRUJjaUJrRVlha0dROVFnUURob0xJQVlRR0NBRkVCNUJBQ0VGQ3lBRVFZQUNhaEJKSWdaQkNHb2lCMEh6bWdrUURob2dCRUdnQTJvaUNpQUZLQUlrS0FJa1FTUnFFRk1nQnlBS0VCSWFJQWRCMENnUURob2dDaEFQR2lBRUlBVXBBaGczQTVnQklBUWdCU2dDSURZQ29BRWdCQ0FGS1FJUU53T1FBU0FFUVlBQmFpSUhJQVpCREdvUVFpQUVJQVFvQXFBQk5nSlFJQVFnQkNrRG1BRTNBMGdnQkNBRUtRT1FBVGNEUUNBRVFlQUJhaUFFUVVCcklBZEJBQkNTRUNBSEVBOGFJQVlRVVNBRklBbEhCRUFnQkVHQUFtb1FTU0lIUVFocUlnWkJ5OTBLRUE0YUlBaEJBQ0FJS0FJRVFZQ1RFa1liSUFBZ0JSRGpDeWdDRENnQ0VFY0VRQ0FHUWRlL0NSQU9HZ3NnQmtIdmh3a1FEaG9nQmlBRVFkQUJhaEFTR2lBR1FkbU9DUkFPR2lBR0lBRVFFaG9nQmtIem1na1FEaG9nQkNBSktBSWdOZ0o0SUFRZ0NTa0NHRGNEY0NBRUlBa3BBaEEzQTJnZ0JFSFlBR29pQlNBSFFReHFFRUlnQkNBRUtBSjROZ0k0SUFRZ0JDa0RjRGNETUNBRUlBUXBBMmczQXlnZ0JFSGdBV29nQkVFb2FpQUZRUUVRa2hBZ0JSQVBHaUFIRUZFTElBRVE2Z3NnQTBFQUVKd0pJQUlvQXFBQklnRkZCRUFnQkVHQUFtcEJwWW9GUWVrTlFRZ2dCRUdnQTJvUUhTSUNFQmNpQTBFWWFrR3p2d2dRRGhvZ0F4QVlJQUlRSGdzZ0FTRURBa0FEUUNBRFJRMEJJQU10QUFSRkJFQWdBeWdDb0FFaEF3d0JDd3NnQUNnQ0NDRUNJQVJCTWpZQ2hBSWdCRUhaMEFNMkFvQUNJQU1vQWdnaEF5QUVJQVFwQTRBQ053TWdJQUlnQkVFZ2FpQURRUkJxRUt3RUN5QUFJQUVRMFJ3TElBUkIwQUZxRUE4YUlBUkJzQU5xSkFBTEV3QWdBRVVFUUVFQUR3c2dBQ2dDQkJDVkVBc3FBQU5BQWtBZ0FDZ0NLQ0lBS0FJRVFZQ0JFa2NnQUVWeURRQWdBQ2dDSkE0REFRQUJBQXNMSUFBTFdBQWdBQ2dDQUNJQUtBTGdwd0pCdUFocUVKNFFJQUFnQVNBQ0VPTUVJUUVnQXlBQUtBTGdwd0lpQWtHY0VXb29BZ0JCakFGc0lBSkJtQkZxS0FJQWFrR01BV3NROXh3YUlBQW9BdUNuQWtHNENHb1FuUkFnQVF1OUR3SVFmd0YrSXdCQndBSnJJZ1VrQUNBRlFmQUFhaUFES0FJa0tBSWtRU1JxRUZNZ0JVS0FnSUNBZ0FFM0FtUWdCU0FGUVVCck5nSmdJQVZDZ0lDQWdJQUJOd0kwSUFVZ0JVRVFhaUlFTmdJd0lBUWdBeWdDVENJR0VMRUpJQVVvQWpRaUJDQUdJQVFnQmtzYklRY2dCVUV3YWlFT0lBVkI0QUJxSVE4RFFDQUVJQWRIQkVBZ0JTZ0NNQ0FFUVFKMGFrRUFOZ0lBSUFSQkFXb2hCQXdCQ3dzZ0JTQUdOZ0kwUVFBaEJBTkFJQU1vQWt3Z0JFMEVRQ0FCS0FMZ3B3SWdBeENjQVNJTUlBSVFhaUFCS0FMZ3B3SWdBeENjQVNJSlFRUTJBZ0FnQVNnQzRLY0NJQU1RbkFFaERTQUJJQU1RNHdzaUVDZ0NMQ0VFSUFVZ0FUWUNDQ0FGSUFWQjhBQnFOZ0lNQWtBQ2Z3Si9JQVJGQkVBZ0JVRUlhaERmSEVFQklRSkJBQXdCQ3lBRUtBSUVJZ1pCK0k4U1JnUkFRUUVoQWlBRUtBSkFJZ1pCMVFCR0lBWkJ5d0JHY2dSQVFRRWhDQXdFQzBFQklRZ2dCQ2dDUUVIV0FFWU5Bd0pBSUFRMUFrQWlGRUlzVkVLQWdJRHdoOEFESUJTSXAzRkZCRUFnQkNnQ1FFSGRBR3RCQWtzTkFRc2dBU2dDQkNFRVFRQWhBaUFGUVFBNkFJUUJJQVZCQVRZQ2dBRWdCU0FGS1FPQUFUY0RBQ01BUWRBQmF5SUdKQUFnQmlBRk5nTElBU0FHSUFRMkFzUUJJQVlnQmtISUFXb2lCellDd0FFZ0JpQUdRY0FCYWpZQ3ZBRWdCaUFITmdLNEFRSi9JQVFnQXhDZ0hpSUhSUVJBSUFaQkNHb2lCMEh6b0FWQnpBQkJDQ0FHUWFnQmFoQWRJZ2dRRnlJS1FSaHFRWityQ0JBT0dpQUtFQmdnQ0JBZUlBWWdCRFlDRENBR0lBWkJ5QUZxTmdJSUlBY1FoaHdNQVFzZ0JpQUVOZ0lNSUFZZ0JrSElBV28yQWdnZ0J5Z0NCQ0lFRUs4SUJFQWdCa0c0QVdvZ0J5Z0NEQkNGSEF3QkN5QUVFTmtjQkVBZ0JrRzRBV29nQnhDRkhBd0JDeUFFUVlDVEVrWUVRQ0FHUWNBQmFpQUhFSVFjREFFTElBWkJDR29RaGh3TElnUkZCRUFnQmtFSWFrSHpvQVZCMWdCQkNDQUdRYWdCYWhBZElnY1FGeUlJUVJocVFiWFJDQkFPR2lBSUVCZ2dCeEFlQ3lBR1FkQUJhaVFBUVFBZ0JDQUVRUU5HSWdvYklRZ01CQXNnQkNnQ1FFSG1BR3RCQzA4aEFrRUJEQUlMSUFaQmdKTVNSZ1JBSUFRb0FrQWhBaUFGUVFBMkFyZ0NJQVVnQWpZQ3RBSWdCU0FCUVF4cU5nS3dBaUFGSUFGQjNLY0NhaWdDQUVFQmF6WUN2QUlnQlVHd0Ftb1E0Z3RGQkVBZ0JVR0FBV3BCcFlvRlFhd01RUWdnQlVHZ0Ftb1FIU0lDRUJjaUJFRVlha0hLcWdnUURob2dCQkFZSUFJUUhnc2dCVUd3QW1vaUFpSUVFT0VMS1FJTUloUkNJSWluSVFnZ0FoRGhDeWdDRkNFQ0lBUVE0Z3NoQ3lBVXB5RUtEQU1MUVFFaEFrRUFJQVpCa0o0U1JpQUdRY2llRWtaeURRQWFJQVZCQ0dvUTN4eEJBQXNoQzBFQkN5RUtRUUFoQ0FzZ0RTQU1FR29nQWtVRVFDQUpJQUVvQXVDbkFpZ0NyQWdRYWdzZ0NTQU5FR29nQlVHWUFXb2hFVUVBSVFJRFFDQUZLQUprSUFKTkJFQWdDa1VFUUNBQktBTGdwd0lnQ0JEdEJ5QU1FR29MSUFBZ0NUWUNCQ0FBSUEwMkFnQWdCVUVRYWhBaklBVkJRR3NRSXlBRlFmQUFhaEFQR2lBRlFjQUNhaVFBRHdVQ1FBSkFJQXNFUUNBUElRUUNRQUpBQWtBZ0N5Z0MrQWNnQWtIOEFHeHFJZ1lvQWdRT0FnRUFBZ3NnRGlFRUN5QUJLQUxncHdJZ0JpZ0NDQkR0QnlBRUtBSUFJQUpCQW5ScUtBSUFFR29MSUE4aEJBSkFBa0FDUUNBR0tBSU1EZ0lCQUFJTElBNGhCQXNnQ1NBRUtBSUFJQUpCQW5ScUtBSUFFR29MSUFFb0FnUWdBeWdDU0NBQ1FRSjBhaWdDQUJDQ0F5SVNLQUlVS0FJRVFkaXNFa2NOQWlBRlFZQUJhaUlFSUFJUVh5QUJLQUxncHdJZ0F4Q2NBU0VISUFRUUR4b2dCeUFDTmdJTUlBZEJBellDQUNBR0xRQVVCRUFnQnlBQktBTGdwd0lvQXF3SUVHb01BZ3NnQnlBTUVHb2dCaWdDT0NJRUlBWW9BanhCQW5ScUlSTURRQ0FFSUJOR0JFQWdCaWdDWkNJRUlBWW9BbWhCQW5ScUlRWURRQ0FFSUFaR0RRUWdCeUFGS0FJd0lBUW9BZ0FvQWxCQkFuUnFLQUlBRUdvZ0JFRUVhaUVFREFBTEFBVWdCeUFGS0FKZ0lBUW9BZ0FvQWxCQkFuUnFLQUlBRUdvZ0JFRUVhaUVFREFFTEFBc0FDd0pBSUJBb0Fpd2lCQ2dDQkVINGp4SkhJQVJGY2cwQUlBUW9Ba0JCMWdCSERRQWdBU2dDNEtjQ0tBS2dDQ0FGS0FKZ0lBSkJBblJxS0FJQUVHb01BZ3NnQ1NBRktBSmdJQUpCQW5ScUtBSUFFR29NQVFzZ0JTQVNLQUlRSWdRMkFxQUNJQVJGQkVBZ0JVR0FBV3BCcFlvRlFZRU5RUWdnQlVHd0Ftb1FIU0lFRUJjaEJpQVJRYWVkQ0JBT0dpQUdFQmdnQkJBZUN5QUJLQUxncHdKQnVBaHFJQVZCb0FKcUlBY1Fnd01MSUFKQkFXb2hBZ3dCQ3dBTEFBc2dCVUd3QW1vZ0FTQUNJQVJCQW5RaUJ5QURLQUpJYWlnQ0FFRUFFS1lDSUFWQmdBRnFJZ1lnQkJCZklBRW9BdUNuQWlBREVKd0JJUUlnQmhBUEdpQUZJQUkyQXFBQ0lBSWdCRFlDRENBQ1FRRTJBZ0FnQWlBRktBSzBBaEJxSUFFb0FnUWdBeWdDU0NBSGFpZ0NBQkNDQXlJSktBSVVLQUlFUWRpc0VrWUVRQ0FGUVlBQmFpSUlJQVFRWHlBQktBTGdwd0lnQXhDY0FTRUdJQWdRRHhvZ0JpQUVOZ0lNSUFaQkFqWUNBQ0FGSUFrb0FoQWlDVFlDZ0FFQ1FDQUdBbjhnQ1NnQ0JFR1FuQkpHQkVBZ0NTZ0NHRUVCUmcwQ0lBRW9BdUNuQWlnQ3JBZ01BUXNnQVNnQzRLY0NRYmdJYWlBRlFZQUJhaENEQWdzUWFnc2dCaUFDRUdvZ0JTZ0NNQ0FIYWlBR05nSUFDeUFFUVFGcUlRUWdCU2dDc0FJaEFpQUZRVUJySUFWQm9BSnFFTzhjREFBTEFBdnVBUUVJZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVJDTEhpQUNMUUFJQkVBZ0FDZ0N4QUVpQjBFQmF5RUlJQUlvQWd3aEEwRUFJUUVDUUFOQUlBWWdCMFlOQVNBQUtBTEFBU0lFSUFOQkJIUWlDV29oQlFKQUlBRUVRQ0FFSUFscUlnUW9BZ3hGRFFFZ0FTQUZLQUlBTmdJQUlBRWdCUzBBQkRvQUJDQUJJQVFvQWdnMkFnZ2dBU0FFS0FJTVFRRnJOZ0lNQ3lBRFFRRnFRUUFnQXlBSVJ4c2hBeUFHUVFGcUlRWWdCU0VCREFFTEN5QUJRZ0EzQWdnZ0FVRUFPZ0FFSUFGQkFEb0FBQXNnQUNBQUtBTE1BVUVCYXpZQ3pBRWdBQ0FBS0FMUUFVRUJhallDMEFFTElBSkJFR29rQUFzakFDQUFJQUZIQkVBZ0FDQUJRZmdBYWhDa0VBc2dBQ0FCS1FLRUFUY0NoQUVnQUFzakFRRi9JQUFvQWdBaUFTQUFLQUlFUndSQUlBQWdBVUV3YWpZQ0FDQUFFUDhJQ3dza0FDQUFRUUEyQW1RZ0FFRUdFSjhRSUFCQkFEWUNiQ0FBSUFBb0FuQkJBV28yQW5BTGtRSUJCSDhnQUNnQ3FBSkJERWtFUUNBQUtBS2dBaUVFSUFCQkRCQ2hFQU5BSUFBb0FxUUNJQUZOQkVBZ0FDQUVFRFlGSUFGQkdHd2lBaUFBS0FLZ0Ftb2lBMEVBT2dBTUlBTkJBRG9BQUNBQ0lBUnFJZ0l0QUF3RVFDQURJQUlwQWdBM0FnQWdBeUFDS0FJSU5nSUlJQUlRVlNBRFFRRTZBQXdMSUFNZ0Fpa0NFRGNDRUNBQ0VLQVFJQUZCQVdvaEFRd0JDd3NMSUFBb0FxUUNJUUVEUUNBQlFReE5CRUFDUUVFTUlBQW9BcVFDSWdFZ0FVRU1UUnNoQWdOQUlBRWdBa1lOQVNBQUtBS2dBaUFCUVJoc2FpSURRZ0EzQWhBZ0EwRUFPZ0FNSUFOQkFEb0FBQ0FCUVFGcUlRRU1BQXNBQ3dVZ0FDZ0NvQUlnQVVFQmF5SUJRUmhzYWhDZ0VBd0JDd3NnQUVFTU5nS2tBZ3U5QVFFRWYwRUFJQUFvQWhRaUFpQUNRUjlMSWdJYklRUkJBQ0FBS0FJUUlBSWJJUUlnQUNnQ0RDRURBMEFDUUNBQ0lBTkhJQUVnQkVkeVJRUkFJQUFvQWdBaEFRTkFJQUZGRFFJZ0FTZ0NnSUFFSVFJZ0FSQWZJQUloQVF3QUN3QUxJQU1FZnlBRElBRkJBblJxS0FJQVFSQnFFUEFISUFGQkFXb2lBVUVnUncwQ1FRQWhBU0FES0FLQUFRVkJFQkR3QjBFQUN5RUREQUVMQ3lBQVFRQTJBaGdnQUVLQWdJQ0FnQVEzQWhBZ0FFS0FnQVEzQWdnZ0FFSUFOd0lBQ3lnQUlBQkJBRFlDOUFFZ0FFRU1FSzhRSUFCQkFEWUMvQUVnQUNBQUtBS0FBa0VCYWpZQ2dBSUwyQUVCQlg5QkFDQUFLQUlVSWdJZ0FrRWZTeUlDR3lFRlFRQWdBQ2dDRUNBQ0d5RUNJQUFvQWd3aEF3TkFBa0FnQWlBRFJ5QUJJQVZIY2tVRVFDQUFLQUlBSVFFRFFDQUJSUTBDSUFFb0FvQ0FCQ0VDSUFFUUh5QUNJUUVNQUFzQUN5QURCSDhnQXlBQlFRSjBhaWdDQUNJRVFaZ0JhaERPQXlBRVFReHFFTTRESUFRUUR4b2dBVUVCYWlJQlFTQkhEUUpCQUNFQklBTW9Bb0FCQlVHWUFSRE9BMEVNRU00RFFRQVFEeHBCQUFzaEF3d0JDd3NnQUVFQU5nSVlJQUJDZ0lDQWdJQUVOd0lRSUFCQ2dJQUVOd0lJSUFCQ0FEY0NBQXZiQVFFRGZ5QUJMUUFFQkVBZ0FCQ2pFQ0FBSUFFb0FnQWlBaWtDQURjQ29BSWdBQ0FDS0FJSU5nS29BaUFCS0FJQUlnQkJBRFlDQ0NBQVFnQTNBZ0FQQ3dKQUlBQW9BcWdDSUFFb0FnQWlBeWdDQkVrRVFDQUFFS01RSUFBZ0F5Z0NCQkNoRUF3QkN5QUFFS0lRQ3lBQUlBTW9BZ1FpQVRZQ3BBSURRQ0FCSUFSTEJFQWdCRUVZYkNJQklBQW9BcUFDYWlFQ0lBTW9BZ0FnQVdvaEFTQUNRUUE2QUF3Z0FrRUFPZ0FBSUFFdEFBd0VRQ0FDSUFFUVZFRUJPZ0FNQ3lBQ0lBRXBBaEEzQWhBZ0JFRUJhaUVFSUFBb0FxUUNJUUVNQVFzTEM4TUJBUU4vSUFFdEFBUUVRQ0FBRUlzTUlBQWdBU2dDQUNJQ0tRSUFOd0xBQVNBQUlBSW9BZ2cyQXNnQklBRW9BZ0FpQUVFQU5nSUlJQUJDQURjQ0FBOExBa0FnQUNnQ3lBRWdBU2dDQUNJQktBSUVTUVJBSUFBUWl3d2dBQ0FCS0FJRUVPMGREQUVMSUFCQkFEWUN4QUVMSUFBZ0FTZ0NCQ0lETmdMRUFRTkFJQUlnQTBrRVFDQUNRUVIwSWdNZ0FDZ0N3QUZxSWdRZ0FTZ0NBQ0FEYWlJREtRSUFOd0lBSUFRZ0F5a0NDRGNDQ0NBQ1FRRnFJUUlnQUNnQ3hBRWhBd3dCQ3dzTFB3SUNmd0YrUVFZaEFpQUFJUU1nQVVFR1R3UkFRWDhnQWExQ0ZINGlCS2NnQkVJZ2lLY2JFQlVoQXlBQklRSUxJQUFnQXpZQ2VDQUFJQUkyQW9BQkN5Y0FJQUJCQURZQ2ZDQUFRUVlRcFJBZ0FFRUFOZ0tFQVNBQUlBQW9Bb2dCUVFGcU5nS0lBUXMxQVFGL0EwQWdBQ2dDNUFnZ0FVMEVRQ0FBUVFBMkF1UUlCU0FBS0FMZ0NDQUJRWXdCYkdvUXpnTWdBVUVCYWlFQkRBRUxDd3RFQWdKL0FYNUJDQ0VDSUFBaEF5QUJRUWhQQkVCQmZ5QUJyVUtNQVg0aUJLY2dCRUlnaUtjYkVCVWhBeUFCSVFJTElBQWdBellDNEFnZ0FFSG9DR29nQWpZQ0FBczFBUUYvQTBBZ0FDZ0M1QWNnQVUwRVFDQUFRUUEyQXVRSEJTQUFLQUxnQnlBQlFmd0FiR29RcmhBZ0FVRUJhaUVCREFFTEN3dlZBUUVEZndKQUlBRXRBQVFFUUNBQUVNNEpJQUFnQVNnQ0FDSUNLUUlBTndMd0FTQUFJQUlvQWdnMkF2Z0JJQUVvQWdBaUFFRUFOZ0lJSUFCQ0FEY0NBQXdCQ3dKQUlBQW9BdmdCSUFFb0FnQWlBaWdDQkVrRVFDQUFFTTRKSUFBZ0FpZ0NCQkN1REF3QkN5QUFRUUEyQXZRQkN5QUFJQUlvQWdRaUF6WUM5QUZCQUNFQkEwQWdBU0FEVHcwQklBRkJGR3dpQkNBQUtBTHdBV29pQXlBQ0tBSUFJQVJxSWdRcEFnQTNBZ0FnQXlBRUtBSVFOZ0lRSUFNZ0JDa0NDRGNDQ0NBQlFRRnFJUUVnQUNnQzlBRWhBd3dBQ3dBTEM4RUJBUUovQWtBZ0FTMEFCQVJBSUFBUXB4QWdBQ0FCS0FJQUlnSXBBZ0EzQXVBSUlBQkI2QWhxSUFJb0FnZzJBZ0FnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBREFFTEFrQWdBRUhvQ0dvb0FnQWdBU2dDQUNJQ0tBSUVTUVJBSUFBUXB4QWdBQ0FDS0FJRUVJTWREQUVMSUFBUWdoMExJQUJCNUFocUlBSW9BZ1FpQXpZQ0FFRUFJUUVEUUNBQklBTlBEUUVnQVVHTUFXd2lBeUFBS0FMZ0NHb2dBaWdDQUNBRGFoQ1VIU0FCUVFGcUlRRWdBQ2dDNUFnaEF3d0FDd0FMQzRFQ0FRTi9Ba0FnQVMwQUJBUkFJQUFRcVJBZ0FDQUJLQUlBSWdJcEFnQTNBdUFISUFBZ0FpZ0NDRFlDNkFjZ0FTZ0NBQ0lBUVFBMkFnZ2dBRUlBTndJQURBRUxBa0FnQUNnQzZBY2dBU2dDQUNJRUtBSUVTUVJBSUFBUXFSQWdBQ0FFS0FJRUVKTWREQUVMSUFBUWhCMExJQUFnQkNnQ0JDSUJOZ0xrQndOQUlBRWdBMDBOQVNBRFFmd0FiQ0lDSUFBb0F1QUhhaUlCSUFRb0FnQWdBbW9pQWlrQ0FEY0NBQ0FCSUFJcEFBMDNBQTBnQVNBQ0tRSUlOd0lJSUFGQkdHb2dBa0VZYWhDb0VCb2dBVUhFQUdvZ0FrSEVBR29RcUJBYUlBRWdBaWdDZURZQ2VDQUJJQUlwQW5BM0FuQWdBMEVCYWlFRElBQW9BdVFISVFFTUFBc0FDd3VwQndJRWZ3RitJd0JCSUdzaUFpUUFJQUFnQVNrQ0FEY0NBQ0FBSUFFb0FnZzJBZ2dnQVJCVklBQWdBU2dDRkRZQ0ZDQUFJQUVwQWd3M0Fnd2dBRUtBZ0lDQWdBRTNBdndISUFBZ0FFRVlhaUlETmdMNEJ5QUNJQUZCK0FkcU5nSUFJQUlnQVNnQytBY2dBVUVZYWtjNkFBUWdBeUFDRUljZElBQkJuQWhxSWdOQkFEWUNBQ0FBUVpRSWFpSUVRb0NBZ0lDQUJEY0NBQ0FBUVl3SWFpSUZRb0NBQkRjQ0FDQUFRZ0EzQW9RSUlBSWdBeWdDQURZQ0dDQUNJQVFwQWdBM0F4QWdBaUFGS1FJQU53TUlJQUlnQUNrQ2hBZzNBd0FnQXlBQlFad0lhaUlES0FJQU5nSUFJQVFnQVVHVUNHb2lCQ2tDQURjQ0FDQUZJQUZCakFocUlnVXBBZ0EzQWdBZ0FDQUJLUUtFQ0RjQ2hBZ2dBeUFDS0FJWU5nSUFJQVFnQWlrREVEY0NBQ0FGSUFJcEF3ZzNBZ0FnQVNBQ0tRTUFOd0tFQ0NBQVFiQUlhaUFCUWJBSWFpa0NBRGNDQUNBQVFhZ0lhaUFCUWFnSWFpa0NBRGNDQUNBQUlBRXBBcUFJTndLZ0NDQUFRWndSYWtLQWdJQ0FnQUUzQWdBZ0FFR1lFV29nQUVHNENHb2lBellDQUNBQ0lBRkJtQkZxSWdRMkFnQWdBaUFFS0FJQUlBRkJ1QWhxUnpvQUJDQURJQUlRaGgwakFFRVFheUlESkFBZ0FFR2tFV29pQkVLQWdJQ0F3QUUzQXNRQklBUWdCRFlDd0FFZ0F5QUJRYVFSYWlJRlFjQUJhallDQ0NBRElBVW9Bc0FCSUFWSE9nQU1JQVFnQTBFSWFoRC9IQ0FEUVJCcUpBQWdCQ0FGS1FMTUFUY0N6QUVnQUVINEVtb2dBVUg0RW1vUXdRc2FJd0JCRUdzaUF5UUFJQUJCN0JOcUlnUkNnSUNBZ01BQk53S2tBaUFFSUFRMkFxQUNJQU1nQVVIc0Uyb2lCVUdnQW1vMkFnZ2dBeUFGS0FLZ0FpQUZSem9BRENBRUlBTkJDR29RL2h3Z0EwRVFhaVFBSUFRZ0JTa0NyQUkzQXF3Q0lBQkJsQmhxUW9DQWdJREFBVGNDQUNBQVFaQVlhaUFBUWFBV2FpSUROZ0lBSUFJZ0FVR1FHR29pQkRZQ0FDQUNJQVFvQWdBZ0FVR2dGbXBIT2dBRUlBTWdBaENGSFNBQlFad1lhaWtDQUNFR0lBQkJ2QmhxSWdOQkFEWUNBQ0FBUWJRWWFpSUVRb0NBZ0lDQUJEY0NBQ0FBUWF3WWFpSUZRb0NBQkRjQ0FDQUFRZ0EzQXFRWUlBQkJuQmhxSUFZM0FnQWdBaUFES0FJQU5nSVlJQUlnQkNrQ0FEY0RFQ0FDSUFVcEFnQTNBd2dnQWlBQUtRS2tHRGNEQUNBRElBRkJ2QmhxSWdNb0FnQTJBZ0FnQkNBQlFiUVlhaUlFS1FJQU53SUFJQVVnQVVHc0dHb2lCU2tDQURjQ0FDQUFJQUVwQXFRWU53S2tHQ0FESUFJb0FoZzJBZ0FnQkNBQ0tRTVFOd0lBSUFVZ0Fpa0RDRGNDQUNBQklBSXBBd0EzQXFRWUlBSkJJR29rQUFzdkFDQUFRUUE2QU1RWUlBQkJBRG9BQUNBQkxRREVHQVJBSUFBZ0FSQ3FFQXNnQUNBQktRTElHRGNDeUJnZ0FBczRBUUYvQTBBZ0FDZ0N4S2NDSUFGTkJFQWdBRUVBTmdMRXB3SUZJQUFvQXNDbkFpQUJRZEFZYkdvUThRY2dBVUVCYWlFQkRBRUxDd3NvQUNBQUVJb2RJQUJCREJDd0VDQUFRUUEyQXN5bkFpQUFJQUFvQXRDbkFrRUJhallDMEtjQ0M0TUJBUVYvSUFCQnhLY0NhaWdDQUNJRlFRRnJJUVlDUUFOQUlBTWdCVVlOQVNBQUtBTEFwd0lnQVVIUUdHeHFJZ1F0QU1RWUJFQWdBaUFDS0FMTUdDSUhJQVFvQXN3WVN3Ui9JQVFnQWhDdEVDQUNLQUxNR0FVZ0J3dEJBV28yQXN3WUlBRkJBV3BCQUNBQklBWkhHeUVCSUFOQkFXb2hBd3dCQ3dzZ0JDQUNFSnNRQ3dzVEFDQUFJQUVRNlFzaUFFRUJPZ0RFR0NBQUN4QUFJQUFRNmh3Z0FDQUJFS29RSUFBTER3QWdBQ0FCSUFKQnhLY0NFTDBNQzRNSEFRMS9Jd0JCNFBVQmF5SUNKQUFDUUVFTUlBRkJsZ0ZzUWVRQWJpSUJJQUZCREUwYklnVWdBRUhFcHdKcUtBSUFUUTBBSUFKQnJNUUJha0tBZ0lDQWdBRTNBZ0FnQWlBQ1FRaHFJZ0UyQXFqRUFTQUJJQUFvQXN5bkFoRHJIQ0FBS0FMQXB3SWlBU0FBS0FMRXB3SkIwQmhzYWlFSEEwQWdBU0FIUmdSQUlBQVFpeDBnQUNBRkVMQVFJQUlvQXFqRUFTSUVJQUlvQXF6RUFVSEVHR3hxSVFrZ0FrR0EzUUZxUVFSeUlRb2dBa0c0eEFGcVFRUnlJUXNnQWtHWTNRRnFJUXhCQUNFSEEwQUNRQ0FFSUFsR0JFQURRQ0FISUFJb0FxekVBVThOQWlBQ0tBS294QUVnQjBIRUdHeHFRUVJxRUtVRklBZEJBV29oQnd3QUN3QUxJQUFvQXNTbkFpQUFLQUxNcHdJaUFVR1dBV3hCbGdGcVFlUUFia2tFUUNBQUlBRkJBWFJCQW1vUWtCMExJQUpCMlBVQmFpQUFJQVFRangwZ0FpQUVRUVJxTmdMVTlRRWdBaUFFTmdMUTlRRWdBQ2dDeEtjQ0lnWkJBV3NoRFNBQUtBTEFwd0loRGtFQUlRRWdBaWdDM1BVQklRZ2dBaWdDMlBVQklRTUNRQU5BSUFFZ0JrY0VRQ0FPSUFOQjBCaHNhaUlGTFFERUdFVUVRQ0FDUVlEZEFXb2lBeUFDUWREMUFXb1E3QXNnQlNBREVJNGRHaUFLRUtVRklBVWdBVFlDekJnZ0JTQUlOZ0xJR0NBQUlBQW9Bc3luQWtFQmFqWUN6S2NDSUFBZ0FDZ0MwS2NDUVFGcU5nTFFwd0lNQXdzZ0NDQUZLQUxJR0VZRVFDQUVLQUlBSUFVb0FnQkdEUU1MSUFFZ0JTZ0N6QmhMQkVBZ0FrRzR4QUZxSWdZZ0FrSFE5UUZxRU93TElBSkJnTjBCYWlBR0VJMGRJUVlnQWlBQk5nTE05UUVnQWlBSU5nTEk5UUVnQ3hDbEJTQUdJQVVRclJBZ0FpQUNLQUxNOVFGQkFXbzJBc3oxQVNBQUlBTkJBV29nQUNnQ3hLY0NjQ0FHRUl3ZElBQWdBQ2dDektjQ1FRRnFOZ0xNcHdJZ0FDQUFLQUxRcHdKQkFXbzJBdENuQWlBR0VQRUhEQU1GSUFOQkFXcEJBQ0FESUExSEd5RURJQUZCQVdvaEFRd0NDd0FMQ3lBQ1FZRGRBV3BCaHJVRFFlc0RRUTRnQWtHNHhBRnFFQjBpQVJBWElRTWdERUdXTlJBT0dpQURFQmdnQVJBZUN5QUVRY1FZYWlFRURBRUxDeUFDUVFBMkFxekVBU0FDUVFocUlBSW9BcWpFQVJBMkRBSUxJQUV0QU1RWUJFQWdBaWdDck1RQklnTWdBaWdDc01RQklnUlBCRUFnQWtFSWFpQUVRUUYwUVFJZ0JCc1E2eHdnQWlnQ3JNUUJJUU1MSUFJZ0EwRUJhallDck1RQklBSW9BcWpFQVNBRFFjUVliR29nQVJEcEN4b0xJQUZCMEJocUlRRU1BQXNBQ3lBQ1FlRDFBV29rQUFzbUFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJFT2NjSUFJb0FnZ2FJQUpCRUdva0FBc05BQ0FBSUFGQndKd1NFSTBJQzBFQ0FuOEJma0VJSVFJZ0FDRURJQUZCQ0U4RVFFRi9JQUd0UXZ3QWZpSUVweUFFUWlDSXB4c1FGU0VESUFFaEFnc2dBQ0FETmdMZ0J5QUFJQUkyQXVnSEN5d0FJQUJDZ0lDQWdPQUFOd0o4SUFBZ0FEWUNlQ0FBSUFGQitBQnFFS1FRSUFBZ0FTa0NoQUUzQW9RQkMyUUJBbjhnQVNBQVFlZ0lhaWdDQUVzRVFDQUFLQUxnQ0NFRElBQWdBUkNESFVFQUlRRURRQ0FBS0FMa0NDQUJUUVJBSUFBZ0F4QTJCU0FCUVl3QmJDSUNJQUFvQXVBSWFpQUNJQU5xSWdJUW1SQWFJQUlRemdNZ0FVRUJhaUVCREFFTEN3c0xDZ0FnQUVISWtoSVFTQXR2QVFOL0l3QkJvQUZySWdNa0FDQUJLQUlBS0FJQUlnSVFIQ0FEUWRDY0JVSGJBRUVJSUFKQnlBSnFFQmNpQWtFWWFpSUVRYVNQREJBT0dpQUVJQUVvQWdRb0FnQWlBUVIvSUFFb0FnUW9BZ1FGUWVIaUJnc1FEaG9nQWhBWUlBQkJyT0lHRUJRYUlBTkJvQUZxSkFBTHV3Y0JBMzhqQUVIZ0FHc2lBeVFBSUFNZ0FqWUNEQ0FESUFFMkFnQWdBeUFEUVF4cU5nSUVBa0FnQWtVRVFDQUFJQU1RbHgwTUFRc0NRQ0FDS0FJRUlnRkIySndTUmdSQUlBTkIwQUJxSUFJb0Fpd29BZ2dpQVNnQ0pFRWthaEJUSUFOQk1Hb2lBaUFEUVNCcUFuOUJuUDhCSUFFb0FnUWlBVUhZK0JGR0RRQWFRWi9wQUNBQlFlRDVEMFlOQUJwQmdpNGdBVUdnK1JGR0RRQWFRZHJpQVNBQlFiRHJEMFlOQUJwQnhOSUVRYUM3QkNBQlFlajVFVVliQ3hBVUlnRkI4cG9KRUMwZ0EwRkFheUlFSUFJZ0EwSFFBR29pQlJCT0lBTkJFR29nQkVIem1na1FMU0FFRUE4YUlBSVFEeG9nQVJBUEdpQUZFQThhREFFTElBRVFyd2dFUUNBRFFkQUFhaUlFSUFJb0FoUWlBU0FCS0FJQUtBSU1FUUlBSUFOQlFHc2lBVUhwbEFrZ0JCREVBU0FEUVJCcUlBRkI4NW9KRUMwZ0FSQVBHaUFFRUE4YURBRUxJQUVRc0FvRVFDQURRZEFBYWlJRUlBSW9BaEFpQVNBQktBSUFLQUlNRVFJQUlBTkJRR3NpQVVINWxRa2dCQkRFQVNBRFFSQnFJQUZCODVvSkVDMGdBUkFQR2lBRUVBOGFEQUVMSUFFUWxoMEVRQ0FEUWRBQWFpSUJJQUlvQWhBb0FrQW9BaVJCSkdvUVV5QURRVUJySWdKQm00MEpJQUVReEFFZ0EwRVFhaUFDUWZPYUNSQXRJQUlRRHhvZ0FSQVBHZ3dCQ3lBQkVOOGRCRUFnQXlBQ0tBSVFOZ0l3SUFOQlFHc2lBU0FEUVRCcUVQWVFJQU5CMEFCcUlnSkJ0b29KSUFFUU5TQURRUkJxSUFKQjg1b0pFQzBnQWhBUEdpQUJFQThhREFFTElBRVE0aDBFUUNBRElBSW9BaEEyQWpBZ0EwRkFheUlCSUFOQk1Hb1Erd1VnQTBIUUFHb2lBa0dXbHdrZ0FSQTFJQU5CRUdvZ0FrSHptZ2tRTFNBQ0VBOGFJQUVRRHhvTUFRc2dBUkRoSFFSQUlBTWdBaWdDRURZQ01DQURRVUJySWdFZ0EwRXdhaEQzRUNBRFFkQUFhaUlDUWZDUUNTQUJFRFVnQTBFUWFpQUNRZk9hQ1JBdElBSVFEeG9nQVJBUEdnd0JDeUFCRU40ZEJFQWdBeUFDS0FJUU5nSXdJQU5CUUdzaUFTQURRVEJxRVBRUUlBTkIwQUJxSWdKQjRvNEpJQUVRTlNBRFFSQnFJQUpCODVvSkVDMGdBaEFQR2lBQkVBOGFEQUVMSUFFUTNSMEVRQ0FESUFJb0FoQTJBakFnQTBGQWF5SUJJQU5CTUdvUTlSQWdBMEhRQUdvaUFrSGVrZ2tnQVJBMUlBTkJFR29nQWtIem1na1FMU0FDRUE4YUlBRVFEeG9NQVFzZ0FSRGdIUVJBSUFNZ0FpZ0NFRFlDTUNBRFFVQnJJZ0VnQTBFd2FoRHpFQ0FEUWRBQWFpSUNRYWVLQ1NBQkVEVWdBMEVRYWlBQ1FmT2FDUkF0SUFJUUR4b2dBUkFQR2d3QkN5QURRUkJxSUFNUWx4MExJQUFnQTBFUWFpSUFFRlFhSUFBUUR4b0xJQU5CNEFCcUpBQUxFUUFnQUNBQ0lBSW9BZ0FvQWd3UkFnQUxZQUVCZnlBQUtBSUVJZ0lFUUNBQ0tBSUFJQUVRVjBFQlFRRkIxWjRJUWRDbkEwSHdBQkJMQ3lBQUlBRVF6UU1pQVVVRVFFRUFEd3NnQUNBQkVOUUdJUUVnQUNnQ0FDZ0NDQ0FCRUZkQkFVRUJRYUdiQ0VIUXB3TkI5QUFRU3lBQkMxa0JBbjhnQVNBQUtBS0lBa3NFUUNBQUtBS0FBaUVDSUFBZ0FSRHRDMEVBSVFFRFFDQUFLQUtFQWlBQlRRUkFJQUFnQWhBMkJTQUJRUVYwSWdNZ0FDZ0NnQUpxSUFJZ0Eyb1ErZ1VhSUFGQkFXb2hBUXdCQ3dzTEM3WUZBZ2QvQW40akFFR3dBV3NpQkNRQUlBRW9BbVFpQnlBQktBSnNJZ05CbGdGc1FaWUJha0hrQUc1SkJFQWpBRUV3YXlJRkpBQkJCaUFEUVFGMFFRSnFRWllCYkVIa0FHNGlBeUFEUVFaTkd5SUdJQUVvQW1STEJFQWdCVUtBZ0lDQXdBQTNBaVFnQlNBRlFSQnFJZ00yQWlBZ0F5QUJLQUpzRVB3TElBRW9BbUFpQXlBQktBSmtRUVIwYWlFSEEwQUNRQ0FESUFkR0JFQWdBUkRxQlNBQklBWVE2QVVnQlNnQ0lDSURJQVVvQWlSQkFuUnFJUVlNQVFzZ0F5MEFCQVJBSUFWQkVHb2dBeEMrQVJDbkJBc2dBMEVRYWlFRERBRUxDd05BSUFNZ0JrY0VRQ0FGSUFFZ0F4Q2NIU0FEUVFScUlRTU1BUXNMSUFWQkVHb1FYZ3NnQlVFd2FpUUFJQUVvQW1RaEJ3c2dCMEVCYXlFSklBSW9BZ0FpQlNBSGNDRUdJQUVvQW1BaENFRUFJUUlDUUFOQUlBSWdCMGNFUUNBSUlBWkJCSFJxSWdNdEFBUkZCRUFnQTBFQk9nQUVJQU1nQlRZQ0FDQUlJQVpCQkhScUlnTWdBallDRENBRElBVTJBZ2dnQVNBQktBSnNRUUZxTmdKc0lBRWdBU2dDY0VFQmFqWUNjQ0FBUWdBM0FnQU1Bd3NDUUNBREtBSUlJQVZIRFFBZ0JTQURLQUlBUncwQUlBQkNBamNDQUF3REN5QUNJQU1vQWd4TEJFQWdCQ0FGTmdLb0FTQUVJQVUyQXFBQklBUWdBallDckFFZ0JFRUJPZ0NrQVNBRUlBUXBBNmdCSWdvM0F3Z2dCQ0FFS1FPZ0FTSUxOd01BSUFRZ0F5a0NDRGNEcUFFZ0JDQURLUUlBTndPZ0FTQURJQXMzQWdBZ0F5QUtOd0lJSUFRZ0JDZ0NyQUZCQVdvMkFxd0JJQUVnQmtFQmFpQUJLQUprY0NBRVFhQUJhaEQwQlNBQklBRW9BbXhCQVdvMkFtd2dBU0FCS0FKd1FRRnFOZ0p3SUFCQ0FEY0NBQXdEQlNBR1FRRnFRUUFnQmlBSlJ4c2hCaUFDUVFGcUlRSU1BZ3NBQ3dzZ0JFR0d0UU5CNndOQkRpQUVRYUFCYWhBZElnRVFGeUlDUVJocVFaWTFFQTRhSUFJUUdDQUFRZ0EzQWdBZ0FSQWVDeUFFUWJBQmFpUUFDNWdCQWdOL0FYNGdBU0FBS0FJNFN3UkFJQUFvQWpBaEJFRUVJUUlnQUNFRElBRkJCRThFUUVGL0lBR3RRZ3grSWdXbklBVkNJSWluR3hBVklRTWdBU0VDQ3lBQUlBTTJBakFnQUNBQ05nSTRRUUFoQVFOQUlBQW9BalFnQVUwRVFDQUFJQVFRTmdVZ0FVRU1iQ0lDSUFBb0FqQnFJZ01nQWlBRWFpSUNLUUlBTndJQUlBTWdBaWdDQ0RZQ0NDQUJRUUZxSVFFTUFRc0xDd3NaQVFGL0lBRWdBQ2dDRUVZRWZ5QUNJQUFRN2dzRlFRQUxDNm9CQVFSL0l3QkJFR3NpQmlRQUl3QkJFR3NpQlNRQUlBSXRBQVJCL3dGR0JFQVFid0FMSXdCQkVHc2lBeVFBSUFNZ0JVRUlhallDQ0NNQVFSQnJJZ1FrQUNBRVFiQ0xFaWtEQURjRENDQURRUWhxSUFJZ0JFRUlha0YvSUFJdEFBUWlBaUFDUWY4QlJodEJBblJxS0FJQUVRRUFJUUlnQkVFUWFpUUFJQU5CRUdva0FDQUZRUkJxSkFBZ0FTZ0NsQUVoQVNBQUlBSTJBZ1FnQUNBQ0lBRndOZ0lBSUFaQkVHb2tBQXN6QVFGK0FuOUJBQ0FBS1FNUVFzQ0FnSUNBZ0lnaGd5SUJJQUZDQVgyRFVBMEFHa0VCSUFBUW53a05BQm9nQUJDeEVBc0wzQVVDQ0g4Q2ZpTUFRY0FCYXlJRUpBQWdBU2dDeEFFZ0FTZ0N6QUVpQTBHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUVVCcUlnVWtBRUVNSUFOQkFYUkJBbXBCbGdGc1FlUUFiaUlESUFOQkRFMGJJZ1lnQVNnQ3hBRkxCRUFnQlVLQWdJQ0FnQUUzQWpRZ0JTQUZRUkJxSWdNMkFqQWdBeUFCS0FMTUFSQTVJQUVvQXNBQklnTWdBU2dDeEFGQkJIUnFJUWNEUUFKQUlBTWdCMFlFUUNBQkVPb0VJQUVnQmhEa0JDQUZLQUl3SWdNZ0JTZ0NORUVDZEdvaEJnd0JDeUFETFFBRUJFQWdCVUVRYWlBREVMNEJFQ1FMSUFOQkVHb2hBd3dCQ3dzRFFDQURJQVpIQkVBZ0JTQUJJQU1Rb1IwZ0EwRUVhaUVEREFFTEN5QUZRUkJxRUNNTElBVkJRR3NrQUFzZ0JFRzRBV29nQVNBQ0VQUUxJQUVvQXNRQklnbEJBV3NoQ2lBQ0tBSUFJUVlnQVNnQ3dBRWhDQ0FFS0FLOEFTRUhJQVFvQXJnQklRVkJBQ0VDQWtBRFFDQUNJQWxIQkVBZ0NDQUZRUVIwYWlJRExRQUVSUVJBSUFOQkFUb0FCQ0FESUFZMkFnQWdDQ0FGUVFSMGFpSURJQUkyQWd3Z0F5QUhOZ0lJSUFFZ0FTZ0N6QUZCQVdvMkFzd0JJQUVnQVNnQzBBRkJBV28yQXRBQklBQkNBRGNDQUF3REN3SkFJQU1vQWdnZ0IwY05BQ0FHSUFNb0FnQkhEUUFnQUVJQ053SUFEQU1MSUFJZ0F5Z0NERXNFUUNBRUlBYzJBckFCSUFRZ0JqWUNxQUVnQkNBQ05nSzBBU0FFUVFFNkFLd0JJQVFnQkNrRHNBRWlDemNERUNBRUlBUXBBNmdCSWd3M0F3Z2dCQ0FES1FJSU53T3dBU0FFSUFNcEFnQTNBNmdCSUFNZ0REY0NBQ0FESUFzM0FnZ2dCQ0FFS0FLMEFVRUJhallDdEFFZ0FTQUZRUUZxSUFFb0FzUUJjQ0FFUWFnQmFoRHJCQ0FCSUFFb0Fzd0JRUUZxTmdMTUFTQUJJQUVvQXRBQlFRRnFOZ0xRQVNBQVFnQTNBZ0FNQXdVZ0JVRUJha0VBSUFVZ0NrY2JJUVVnQWtFQmFpRUNEQUlMQUFzTElBUkJDR3BCaHJVRFFlc0RRUTRnQkVHb0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFSEFBV29rQUFzS0FDQUFRZmp0RHhCSUN4SUFJQUJCK0FKQmlmMERRWGhCQnhES0FRc1JBQ0FBTFFBd0JFQWdBRUVBT2dBd0N3c1FBQ0FBTFFBd1JRUkFFRzhBQ3lBQUM0NEJBZ04vQVg0Z0FTQUFLQUtJQTBzRVFDQUFLQUtBQXlFRFFRZ2hBaUFBSVFRZ0FVRUlUd1JBUVg4Z0FhMUNNSDRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUNnQU1nQUNBQ05nS0lBMEVBSVFFRFFDQUFLQUtFQXlBQlRRUkFJQUFnQXhBMkJTQUJRVEJzSWdJZ0FDZ0NnQU5xSUFJZ0Eyb1ErQXNhSUFGQkFXb2hBUXdCQ3dzTEN6QUJBbjhqQUVGQWFpSUNKQUFnQWlBQUVPVWRJUU1nQUNBQkVMTVFJQUVnQXhDekVDQURFS1FKSUFKQlFHc2tBQXRvQVFOL0FrQWdBQ2dDRUNBQktBSUVTUVJBSUFBUXFnRWdBQ0FCS0FJRUVLd1dEQUVMSUFCQkFEWUNEQXNnQUNBQktBSUVJZ00yQWd3RFFDQUNJQU5IQkVBZ0FrRUNkQ0lFSUFBb0FnaHFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3c3VBQ0FBSUFFb0FnQVFWaUlBSUFFb0FnUWlBU2tDQURjQ0hDQUFJQUVvQWhBMkFpd2dBQ0FCS1FJSU53SWtDMEFDQW44QmZrRUdJUUlnQUNFRElBRkJCazhFUUVGL0lBR3RRaGgrSWdTbklBUkNJSWluR3hBVklRTWdBU0VDQ3lBQUlBTTJBcEFCSUFBZ0FqWUNtQUVMakFFQkEzOENRQ0FBS0FLWUFTQUJLQUlFU1FSQUlBQVF0QkFnQUNBQktBSUVFS29kREFFTElBQkJBRFlDbEFFTElBQWdBU2dDQkNJQ05nS1VBUU5BSUFJZ0Ewc0VRQ0FEUVJoc0lnUWdBQ2dDa0FGcUlnSWdBU2dDQUNBRWFpSUVLUUlBTndJQUlBSWdCQ2tDRURjQ0VDQUNJQVFwQWdnM0FnZ2dBMEVCYWlFRElBQW9BcFFCSVFJTUFRc0xDNXdCQWdOL0FYNGdBU0FBUWFnS2FpZ0NBRXNFUUNBQUtBS2dDaUVEUVFnaEFpQUFJUVFnQVVFSVR3UkFRWDhnQWExQ3BBRitJZ1duSUFWQ0lJaW5HeEFWSVFRZ0FTRUNDeUFBSUFRMkFxQUtJQUJCcUFwcUlBSTJBZ0JCQUNFQkEwQWdBQ2dDcEFvZ0FVMEVRQ0FBSUFNUU5nVWdBVUdrQVd3aUFpQUFLQUtnQ21vZ0FpQURhaUlDRUxZUUlBSVErQWNnQVVFQmFpRUJEQUVMQ3dzTEtBQWdBRUVBTmdLVUFTQUFRUVlRdFJBZ0FFRUFOZ0tjQVNBQUlBQW9BcUFCUVFGcU5nS2dBUXNTQUNBQVFkZ0FRYW4vQTBGOFFRTVF5Z0VMRFFBZ0FTZ0NBQ0FDS0FJQVJndEtBZ0YvQVg1QkZCQVZJUVFnQUNBQlFRaHFOZ0lFSUFBZ0JEWUNBQ0FES0FJQUtRSUFJUVVnQkVFQU5nSVFJQVFnQlRjQ0NDQUFRUUU2QUFnZ0JFRUFOZ0lBSUFRZ0FqWUNCQXZaQVFFRGZ5TUFRUkJySWdNa0FBSkFBa0FnQUMwQUJFSC9BVVlFUUVISzhQbU9BU0VDREFFTEl3QkJFR3NpQVNRQUlBRkJrSWtTS1FNQU53TUlJQU5CQ0dvZ0FDQUJRUWhxUVg4Z0FDMEFCQ0lDSUFKQi93RkdHMEVDZEdvb0FnQVJBUUFoQWlBQlFSQnFKQUFnQUMwQUJDSUFRZjhCUncwQkMwRi9JUUFMSXdCQklHc2lBU1FBSUFFZ0FEWUNGQ0FCSUFJMkFoQWdBU0FCS1FNUU53TUlJd0JCRUdzaUFDUUFJQUFnQVNrQ0NEY0RDQ0FBUVFocVFRZ1F6d2NoQWlBQVFSQnFKQUFnQWlFQUlBRkJJR29rQUNBRFFSQnFKQUFnQUF0ekFRTi9Ba0FnQUNnQ0dDQUJLQUlFU1FSQUlBQVFYaUFBSUFFb0FnUVF3UWtNQVFzZ0FFRUFOZ0lVQ3lBQUlBRW9BZ1FpQWpZQ0ZDQUFLQUlRSVFNZ0FTZ0NBQ0VCUVFBaEFBTkFJQUFnQWtjRVFDQURJQUJCQW5RaUJHb2dBU0FFYWlnQ0FEWUNBQ0FBUVFGcUlRQU1BUXNMQzBjQkFYOGdBUzBBQkFSQUlBQVFYaUFBSUFFb0FnQWlBaWtDQURjQ0VDQUFJQUlvQWdnMkFoZ2dBU2dDQUNJQVFRQTJBZ2dnQUVJQU53SUFEd3NnQUNBQktBSUFFTElkQzBvQkFYOGpBRUVRYXlJQ0pBQWdBRUtBZ0lDQXdBQTNBaFFnQUNBQU5nSVFJQUlnQVVFUWFqWUNDQ0FDSUFFb0FoQWdBVWM2QUF3Z0FDQUNRUWhxRUxNZElBSkJFR29rQUNBQUN4a0FJQUFnQVJDMEhTSUFRUnhxSUFGQkhHb1F3UXNhSUFBTEd3QWdBRUU4YWhCUElBQkJLR29RVHlBQVFSUnFFRThnQUJCUEN3Y0FJQUVwQXdBTEJBQkNBQXRBQWdKL0FYNUJEQ0VDSUFBaEF5QUJRUXhQQkVCQmZ5QUJyVUlzZmlJRXB5QUVRaUNJcHhzUUZTRURJQUVoQWdzZ0FDQUROZ0tRQkNBQUlBSTJBcGdFQ3hrQkFYOGdBU0FBS0FJb1JnUi9JQUlnQUJDMkFnVkJBQXNMMGdJQkMzOGdBQ2dDQUNJRUtBS3dBaUlJSUFBb0FpUkdCRUFnQUNnQ0lBOExJd0JCRUdzaUFTUUFJd0JCc0FGcklnVWtBQ0FFS0FLa0FpSUdRUUZySVFrZ0FFRUVhaUlLS0FJQUlnc2dCbkFoQWdKQUEwQWdBeUFHUndSQUlBUW9BcUFDSUFKQk1HeHFJZ2N0QUNSRkJFQWdBVUVBTmdJTUlBRkJBRG9BQ0F3REN5QUhJQXNnQ2hDNkhRUkFJQUVnQWpZQ0RDQUJRUUU2QUFnTUF3c2dBeUFIS0FJc1N3UkFJQUZCQURZQ0RDQUJRUUE2QUFnTUF3VWdBa0VCYWtFQUlBSWdDVWNiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVZCaHJVRFFaNEVRUTRnQlVHZ0FXb1FIU0lDRUJjaUEwRVlha0hTTlJBT0dpQURFQmdnQVVFQU5nSU1JQUZCQURvQUNDQUNFQjRMSUFWQnNBRnFKQUFnQVNnQ0RDRUNJQVFvQXFBQ0lRUWdBUzBBQ0NFRElBRkJFR29rQUNBQUlBZzJBaVFnQUNBRUlBSkJNR3hxUVJ4cVFRQWdBeHNpQURZQ0lDQUFDNElCQVFSL0l3QkJJR3NpQVNRQUlBRkJDR29RenhzaUFpZ0NDQ0VESUFFZ0FqWUNCQ0FCSUFNMkFnQUNRQ0FBUVJ4cUlnUWdBUkM5QVNJQ0JFQWdBaWdDRENFQURBRUxJQUFnQUJDMEJCRFBHeUlDRUNnZ0FDQUFLQUlZUVFGcU5nSVlJQUVnQWlJQU5nSUVJQUVnQXpZQ0FDQUVJQUVRdkFFTElBRkJJR29rQUNBQUMwTUJBWDhqQUVFZ2F5SUNKQUFnQWlBQUtBSVFOZ0lZSUFJZ0FDa0NDRGNERUNBQ0lBQXBBZ0EzQXdnZ0FDQUJFTHNRSUFFZ0FrRUlhaEM3RUNBQ1FTQnFKQUFMS1FFQmZ5QUJJQUFvQWd4R0JIOGdBaWdDQUNBQUtBSUFSaUFDS0FJRUlBQW9BZ1JHY1FWQkFBc0x5d1lDQjM4QmZpTUFRY0FCYXlJRkpBQWdBU2dDOUFFZ0FTZ0MvQUVpQTBHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUWVBQWF5SUVKQUJCRENBRFFRRjBRUUpxUVpZQmJFSGtBRzRpQXlBRFFReE5HeUlISUFFb0F2UUJTd1JBSUFSQ2dJQ0FnSUFCTndKVUlBUWdCRUVRYWlJRE5nSlFJQU1nQVNnQy9BRVFzUVFnQVNnQzhBRWlBeUFCS0FMMEFVRVViR29oQ0FOQUFrQWdBeUFJUmdSQUlBRVFzZ1VnQVNBSEVQTUVJQVFvQWxBaUF5QUVLQUpVUVFOMGFpRUhEQUVMSUFNdEFBZ0VRQ0FFUVJCcUlBTVF1Z0lRc1FVTElBTkJGR29oQXd3QkN3c0RRQ0FESUFkSEJFQWdCQ0FCSUFNUXZ4MGdBMEVJYWlFRERBRUxDeUFFUVJCcUVKVUJDeUFFUWVBQWFpUUFDeUFDRVBrQ1FaS3hxUG9IYWtHVHBBWnpJZ05CQW5aQmx2aXArZ2R6SUFKQkJHb1ErUUpxSUFOeklRTWdBU2dDOUFFaEJDQUZJQU0yQXJ3QklBVWdBeUFFY0RZQ3VBRWdBU2dDOUFFaUIwRUJheUVJSUFVb0FyZ0JJUU1DUUFOQUlBWWdCMGNFUUNBQktBTHdBU0lKSUFOQkZHeHFJZ1F0QUFoRkJFQWdBaWtDQUNFS0lBUkJBVG9BQ0NBRUlBbzNBZ0FnQlNnQ3ZBRWhBaUFKSUFOQkZHeHFJZ01nQmpZQ0VDQURJQUkyQWd3Z0FTQUJLQUw4QVVFQmFqWUMvQUVnQVNBQktBS0FBa0VCYWpZQ2dBSWdBRUlBTndJQURBTUxJQVFnQlNnQ3ZBRWdBaEMrSFFSQUlBQkNBamNDQUF3REN5QUdJQVFvQWhCTEJFQWdCU0FDS1FJQU53TUlJQVVnQmpZQ0dDQUZJQVVvQXJ3Qk5nSVVJQVZCQVRvQUVDQUZRUWhxSWdJZ0JCQzlIU0FGSUFVb0FoaEJBV28yQWhnZ0EwRUJhaUFCS0FMMEFYQWhBMEVBSVFRZ0FTZ0M5QUVpQjBFQmF5RUlBa0FEUUNBRUlBZEdEUUVnQVNnQzhBRWdBMEVVYkdvaUJpMEFDQVJBSUFJZ0FpZ0NFQ0lKSUFZb0FoQkxCSDhnQmlBQ0VMMGRJQUlvQWhBRklBa0xRUUZxTmdJUUlBTkJBV3BCQUNBRElBaEhHeUVESUFSQkFXb2hCQXdCQ3dzZ0JpQUNFTHNRQ3lBQklBRW9BdndCUVFGcU5nTDhBU0FCSUFFb0FvQUNRUUZxTmdLQUFpQUFRZ0EzQWdBTUF3VWdBMEVCYWtFQUlBTWdDRWNiSVFNZ0JrRUJhaUVHREFJTEFBc0xJQVZCQ0dwQmhyVURRZXNEUVE0Z0JVR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCVUhBQVdva0FBdUNBUUVFZnlNQVFTQnJJZ0VrQUNBQlFRaHFFTkFiSWdJb0FnZ2hBeUFCSUFJMkFnUWdBU0FETmdJQUFrQWdBRUVjYWlJRUlBRVF2UUVpQWdSQUlBSW9BZ3doQUF3QkN5QUFJQUFRdEFRUTBCc2lBaEFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJJQUlpQURZQ0JDQUJJQU0yQWdBZ0JDQUJFTHdCQ3lBQlFTQnFKQUFnQUF1SUFRRUVmeU1BUVNCcklnRWtBQ0FCUVJCcUVNc2JJZ0lvQWdnaEF5QUJJQUkyQWd3Z0FTQUROZ0lJQWtBZ0FFRWNhaUlFSUFGQkNHb1FvUWtpQWdSQUlBSW9BZ3doQUF3QkN5QUFJQUFROFFzUXl4c2lBaEFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJJQUlpQURZQ0RDQUJJQU0yQWdnZ0JDQUJRUWhxRUtBSkN5QUJRU0JxSkFBZ0FBdUNBUUVFZnlNQVFTQnJJZ0VrQUNBQlFRaHFFTVViSWdJb0FnZ2hBeUFCSUFJMkFnUWdBU0FETmdJQUFrQWdBRUVjYWlJRUlBRVF2UUVpQWdSQUlBSW9BZ3doQUF3QkN5QUFJQUFRdEFRUXhSc2lBaEFvSUFBZ0FDZ0NHRUVCYWpZQ0dDQUJJQUlpQURZQ0JDQUJJQU0yQWdBZ0JDQUJFTHdCQ3lBQlFTQnFKQUFnQUF2ckFRRURmeU1BUWNBQmF5SUNKQUJCRENBQlFaWUJiRUhrQUc0aUFTQUJRUXhOR3lJRElBQW9Bb1FEU3dSQUlBSkNnSUNBZ0lBQk53SzBBU0FDSUFKQkVHb2lBVFlDc0FFZ0FTQUFLQUtNQXhDL0VDQUFLQUtBQXlJQklBQW9Bb1FEUVFWMGFpRUVBMEFDUUNBQklBUkdCRUFnQUJEbEVDQUFJQU1RK1FzZ0FpZ0NzQUVpQVNBQ0tBSzBBVUVVYkdvaEF3d0JDeUFCTFFBVUJFQWdBa0VRYWlBQkVQMEhFTWNkQ3lBQlFTQnFJUUVNQVFzTEEwQWdBU0FEUmtVRVFDQUNRUWhxSUFBZ0FTQUJRUkJxRU5JZElBRkJGR29oQVF3QkN3c2dBa0VRYWhER0hRc2dBa0hBQVdva0FBczNBQ0FBTFFBVUJFQWdBQ0FCRU1VZER3c2dBQ0FCS1FJQU53SUFJQUFnQVNnQ0VEWUNFQ0FBSUFFcEFnZzNBZ2dnQUVFQk9nQVVDelFBSUFBZ0FTZ0NBRFlDQUNBQUlBRW9BZ1EyQWdRZ0FDQUJLQUlJTmdJSUlBQWdBU2dDRERZQ0RDQUFJQUVvQWhBMkFoQUxGQUFnQUVFQU5nS2tBU0FBSUFBb0FxQUJFRFlMYUFFQmZ5QUFLQUtrQVNJQ0lBQW9BcWdCVHdSQUlBQWdBQ2dDcUFFaUFrRUJkRUVDSUFJYkVMOFFJQUFvQXFRQklRSUxJQUFnQWtFQmFqWUNwQUVnQUNnQ29BRWdBa0VVYkdvaUFDQUJLQUlRTmdJUUlBQWdBU2tDQ0RjQ0NDQUFJQUVwQWdBM0FnQUw2d0VCQTM4akFFSEFBV3NpQWlRQVFRd2dBVUdXQVd4QjVBQnVJZ0VnQVVFTVRSc2lBeUFBS0FLRUEwc0VRQ0FDUW9DQWdJQ0FBVGNDdEFFZ0FpQUNRUkJxSWdFMkFyQUJJQUVnQUNnQ2pBTVF2eEFnQUNnQ2dBTWlBU0FBS0FLRUEwRUZkR29oQkFOQUFrQWdBU0FFUmdSQUlBQVE1UkFnQUNBREVQa0xJQUlvQXJBQklnRWdBaWdDdEFGQkZHeHFJUU1NQVFzZ0FTMEFGQVJBSUFKQkVHb2dBUkQ5QnhESEhRc2dBVUVnYWlFQkRBRUxDd05BSUFFZ0EwWkZCRUFnQWtFSWFpQUFJQUVnQVVFUWFoRFdIU0FCUVJScUlRRU1BUXNMSUFKQkVHb1F4aDBMSUFKQndBRnFKQUFMM0FVQ0NIOENmaU1BUWNBQmF5SUVKQUFnQVNnQ3hBRWdBU2dDekFFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFVQnFJZ1VrQUVFTUlBTkJBWFJCQW1wQmxnRnNRZVFBYmlJRElBTkJERTBiSWdZZ0FTZ0N4QUZMQkVBZ0JVS0FnSUNBZ0FFM0FqUWdCU0FGUVJCcUlnTTJBakFnQXlBQktBTE1BUkE1SUFFb0FzQUJJZ01nQVNnQ3hBRkJCSFJxSVFjRFFBSkFJQU1nQjBZRVFDQUJFT29FSUFFZ0JoRGtCQ0FGS0FJd0lnTWdCU2dDTkVFQ2RHb2hCZ3dCQ3lBRExRQUVCRUFnQlVFUWFpQURFTDRCRUNRTElBTkJFR29oQXd3QkN3c0RRQ0FESUFaSEJFQWdCU0FCSUFNUXlSMGdBMEVFYWlFRERBRUxDeUFGUVJCcUVDTUxJQVZCUUdza0FBc2dCRUc0QVdvZ0FTQUNFUFFMSUFFb0FzUUJJZ2xCQVdzaENpQUNLQUlBSVFZZ0FTZ0N3QUVoQ0NBRUtBSzhBU0VISUFRb0FyZ0JJUVZCQUNFQ0FrQURRQ0FDSUFsSEJFQWdDQ0FGUVFSMGFpSURMUUFFUlFSQUlBTkJBVG9BQkNBRElBWTJBZ0FnQ0NBRlFRUjBhaUlESUFJMkFnd2dBeUFITmdJSUlBRWdBU2dDekFGQkFXbzJBc3dCSUFFZ0FTZ0MwQUZCQVdvMkF0QUJJQUJDQURjQ0FBd0RDd0pBSUFNb0FnZ2dCMGNOQUNBR0lBTW9BZ0JIRFFBZ0FFSUNOd0lBREFNTElBSWdBeWdDREVzRVFDQUVJQWMyQXJBQklBUWdCallDcUFFZ0JDQUNOZ0swQVNBRVFRRTZBS3dCSUFRZ0JDa0RzQUVpQ3pjREVDQUVJQVFwQTZnQklndzNBd2dnQkNBREtRSUlOd093QVNBRUlBTXBBZ0EzQTZnQklBTWdERGNDQUNBRElBczNBZ2dnQkNBRUtBSzBBVUVCYWpZQ3RBRWdBU0FGUVFGcUlBRW9Bc1FCY0NBRVFhZ0JhaERyQkNBQklBRW9Bc3dCUVFGcU5nTE1BU0FCSUFFb0F0QUJRUUZxTmdMUUFTQUFRZ0EzQWdBTUF3VWdCVUVCYWtFQUlBVWdDa2NiSVFVZ0FrRUJhaUVDREFJTEFBc0xJQVJCQ0dwQmhyVURRZXNEUVE0Z0JFR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdk1CUUlJZndKK0l3QkJ3QUZySWdRa0FDQUJLQUprSUFFb0Ftd2lBMEdXQVd4QmxnRnFRZVFBYmtrRVFDTUFRVEJySWdVa0FFRUdJQU5CQVhSQkFtcEJsZ0ZzUWVRQWJpSURJQU5CQmswYklnWWdBU2dDWkVzRVFDQUZRb0NBZ0lEQUFEY0NKQ0FGSUFWQkVHb2lBellDSUNBRElBRW9BbXdRMWdJZ0FTZ0NZQ0lESUFFb0FtUkJCSFJxSVFjRFFBSkFJQU1nQjBZRVFDQUJFT29GSUFFZ0JoRG9CU0FGS0FJZ0lnTWdCU2dDSkVFQ2RHb2hCZ3dCQ3lBRExRQUVCRUFnQlVFUWFpQURFTDRCRUhFTElBTkJFR29oQXd3QkN3c0RRQ0FESUFaSEJFQWdCU0FCSUFNUXloMGdBMEVFYWlFRERBRUxDeUFGUVJCcUVGNExJQVZCTUdva0FBc2dCRUc0QVdvZ0FTQUNFT2NkSUFFb0FtUWlDVUVCYXlFS0lBSW9BZ0FoQmlBQktBSmdJUWdnQkNnQ3ZBRWhCeUFFS0FLNEFTRUZRUUFoQWdKQUEwQWdBaUFKUndSQUlBZ2dCVUVFZEdvaUF5MEFCRVVFUUNBRFFRRTZBQVFnQXlBR05nSUFJQWdnQlVFRWRHb2lBeUFDTmdJTUlBTWdCellDQ0NBQklBRW9BbXhCQVdvMkFtd2dBU0FCS0FKd1FRRnFOZ0p3SUFCQ0FEY0NBQXdEQ3dKQUlBTW9BZ2dnQjBjTkFDQUdJQU1vQWdCSERRQWdBRUlDTndJQURBTUxJQUlnQXlnQ0RFc0VRQ0FFSUFjMkFyQUJJQVFnQmpZQ3FBRWdCQ0FDTmdLMEFTQUVRUUU2QUt3QklBUWdCQ2tEc0FFaUN6Y0RFQ0FFSUFRcEE2Z0JJZ3czQXdnZ0JDQURLUUlJTndPd0FTQUVJQU1wQWdBM0E2Z0JJQU1nRERjQ0FDQURJQXMzQWdnZ0JDQUVLQUswQVVFQmFqWUN0QUVnQVNBRlFRRnFJQUVvQW1Sd0lBUkJxQUZxRVBRRklBRWdBU2dDYkVFQmFqWUNiQ0FCSUFFb0FuQkJBV28yQW5BZ0FFSUFOd0lBREFNRklBVkJBV3BCQUNBRklBcEhHeUVGSUFKQkFXb2hBZ3dDQ3dBTEN5QUVRUWhxUVlhMUEwSHJBMEVPSUFSQnFBRnFFQjBpQVJBWElnSkJHR3BCbGpVUURob2dBaEFZSUFCQ0FEY0NBQ0FCRUI0TElBUkJ3QUZxSkFBTEhRQWdBRUh3QUdvUXFnRWdBRUhjQUdvUXFnRWdBRUVvYWhBaklBQUxTZ0VDZnlNQVFiQUJheUlCSkFBZ0FDMEFMRVVFUUNBQlFZZXBBMEdPQVVFT0lBRkJvQUZxRUIwaUFCQVhJZ0pCR0dwQnRONElFQTRhSUFJUUdDQUFFQjRMSUFGQnNBRnFKQUFMM0FVQ0NIOENmaU1BUWNBQmF5SUVKQUFnQVNnQ3hBRWdBU2dDekFFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFVQnFJZ1VrQUVFTUlBTkJBWFJCQW1wQmxnRnNRZVFBYmlJRElBTkJERTBiSWdZZ0FTZ0N4QUZMQkVBZ0JVS0FnSUNBZ0FFM0FqUWdCU0FGUVJCcUlnTTJBakFnQXlBQktBTE1BUkE1SUFFb0FzQUJJZ01nQVNnQ3hBRkJCSFJxSVFjRFFBSkFJQU1nQjBZRVFDQUJFT29FSUFFZ0JoRGtCQ0FGS0FJd0lnTWdCU2dDTkVFQ2RHb2hCZ3dCQ3lBRExRQUVCRUFnQlVFUWFpQURFTDRCRUNRTElBTkJFR29oQXd3QkN3c0RRQ0FESUFaSEJFQWdCU0FCSUFNUXpSMGdBMEVFYWlFRERBRUxDeUFGUVJCcUVDTUxJQVZCUUdza0FBc2dCRUc0QVdvZ0FTQUNFUFVMSUFFb0FzUUJJZ2xCQVdzaENpQUNLQUlBSVFZZ0FTZ0N3QUVoQ0NBRUtBSzhBU0VISUFRb0FyZ0JJUVZCQUNFQ0FrQURRQ0FDSUFsSEJFQWdDQ0FGUVFSMGFpSURMUUFFUlFSQUlBTkJBVG9BQkNBRElBWTJBZ0FnQ0NBRlFRUjBhaUlESUFJMkFnd2dBeUFITmdJSUlBRWdBU2dDekFGQkFXbzJBc3dCSUFFZ0FTZ0MwQUZCQVdvMkF0QUJJQUJDQURjQ0FBd0RDd0pBSUFNb0FnZ2dCMGNOQUNBR0lBTW9BZ0JIRFFBZ0FFSUNOd0lBREFNTElBSWdBeWdDREVzRVFDQUVJQWMyQXJBQklBUWdCallDcUFFZ0JDQUNOZ0swQVNBRVFRRTZBS3dCSUFRZ0JDa0RzQUVpQ3pjREVDQUVJQVFwQTZnQklndzNBd2dnQkNBREtRSUlOd093QVNBRUlBTXBBZ0EzQTZnQklBTWdERGNDQUNBRElBczNBZ2dnQkNBRUtBSzBBVUVCYWpZQ3RBRWdBU0FGUVFGcUlBRW9Bc1FCY0NBRVFhZ0JhaERyQkNBQklBRW9Bc3dCUVFGcU5nTE1BU0FCSUFFb0F0QUJRUUZxTmdMUUFTQUFRZ0EzQWdBTUF3VWdCVUVCYWtFQUlBVWdDa2NiSVFVZ0FrRUJhaUVDREFJTEFBc0xJQVJCQ0dwQmhyVURRZXNEUVE0Z0JFR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCRUhBQVdva0FBdmNCUUlJZndKK0l3QkJ3QUZySWdRa0FDQUJLQUxFQVNBQktBTE1BU0lEUVpZQmJFR1dBV3BCNUFCdVNRUkFJd0JCUUdvaUJTUUFRUXdnQTBFQmRFRUNha0dXQVd4QjVBQnVJZ01nQTBFTVRSc2lCaUFCS0FMRUFVc0VRQ0FGUW9DQWdJQ0FBVGNDTkNBRklBVkJFR29pQXpZQ01DQURJQUVvQXN3QkVEa2dBU2dDd0FFaUF5QUJLQUxFQVVFRWRHb2hCd05BQWtBZ0F5QUhSZ1JBSUFFUTZnUWdBU0FHRU9RRUlBVW9BakFpQXlBRktBSTBRUUowYWlFR0RBRUxJQU10QUFRRVFDQUZRUkJxSUFNUXZnRVFKQXNnQTBFUWFpRUREQUVMQ3dOQUlBTWdCa2NFUUNBRklBRWdBeERPSFNBRFFRUnFJUU1NQVFzTElBVkJFR29RSXdzZ0JVRkFheVFBQ3lBRVFiZ0JhaUFCSUFJUTlRc2dBU2dDeEFFaUNVRUJheUVLSUFJb0FnQWhCaUFCS0FMQUFTRUlJQVFvQXJ3QklRY2dCQ2dDdUFFaEJVRUFJUUlDUUFOQUlBSWdDVWNFUUNBSUlBVkJCSFJxSWdNdEFBUkZCRUFnQTBFQk9nQUVJQU1nQmpZQ0FDQUlJQVZCQkhScUlnTWdBallDRENBRElBYzJBZ2dnQVNBQktBTE1BVUVCYWpZQ3pBRWdBU0FCS0FMUUFVRUJhallDMEFFZ0FFSUFOd0lBREFNTEFrQWdBeWdDQ0NBSFJ3MEFJQVlnQXlnQ0FFY05BQ0FBUWdJM0FnQU1Bd3NnQWlBREtBSU1Td1JBSUFRZ0J6WUNzQUVnQkNBR05nS29BU0FFSUFJMkFyUUJJQVJCQVRvQXJBRWdCQ0FFS1FPd0FTSUxOd01RSUFRZ0JDa0RxQUVpRERjRENDQUVJQU1wQWdnM0E3QUJJQVFnQXlrQ0FEY0RxQUVnQXlBTU53SUFJQU1nQ3pjQ0NDQUVJQVFvQXJRQlFRRnFOZ0swQVNBQklBVkJBV29nQVNnQ3hBRndJQVJCcUFGcUVPc0VJQUVnQVNnQ3pBRkJBV28yQXN3QklBRWdBU2dDMEFGQkFXbzJBdEFCSUFCQ0FEY0NBQXdEQlNBRlFRRnFRUUFnQlNBS1J4c2hCU0FDUVFGcUlRSU1BZ3NBQ3dzZ0JFRUlha0dHdFFOQjZ3TkJEaUFFUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBRVFjQUJhaVFBQ3hJQUlBQkI0QUJCb2Y4RFFYaEJCeERLQVFzNEFRSi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FFRXNhaUFCRU0wZElBSW9BZ2doQXlBQ1FSQnFKQUFnQTBFQ1J3UkFJQUFnQVJBa0N3dGFBUU4vSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ01BUVJCcklnRWtBQ0FCUVFocUlBQkI3QU5xSWdCQkxHb2dBa0VNYWlJREVNNGRJQUVvQWdnaEJDQUJRUkJxSkFBZ0JFRUNSd1JBSUFBZ0F4QWtDeUFDUVJCcUpBQUwvUU1DQ0g4QmZpTUFRYkFCYXlJRUpBQWdBU2dDaEFNaUNDQUJLQUtNQXlJRlFaWUJiRUdXQVdwQjVBQnVTUVJBSUFFZ0JVRUJkRUVDYWhEREhTQUJLQUtFQXlFSUN5QUlRUUZySVFvZ0FpZ0NEQ0lKSUFod0lRWUNRQU5BSUFjZ0NFY0VRQ0FCS0FLQUF5SUxJQVpCQlhScUlnVXRBQlJGQkVBZ0F5Z0NBQ0VESUFJcEFnQWhEQ0FGSUFJcEFnZzNBZ2dnQlNBTU53SUFJQVZCQVRvQUZDQUZJQU0yQWhBZ0N5QUdRUVYwYWlJQ0lBYzJBaHdnQWlBSk5nSVlJQUVnQVNnQ2pBTkJBV28yQW93RElBRWdBU2dDa0FOQkFXbzJBcEFESUFBZ0JVRVFhallDQkNBQVFRQTJBZ0FNQXdzZ0JTQUpJQUlROHdzRVFDQUFRUUkyQWdBZ0FDQUZRUkJxTmdJRURBTUxJQWNnQlNnQ0hFc0VRQ0FFSUFJcEFnZzNBd2dnQkNBQ0tRSUFOd01BSUFNb0FnQWhBaUFFSUFrMkFoZ2dCQ0FITmdJY0lBUWdBallDRUNBRVFRRTZBQlFnQkNBRkVLSUpJQVFnQkNnQ0hFRUJhallDSENBQklBWkJBV29nQVNnQ2hBTndJQVFROGdzZ0FTQUJLQUtNQTBFQmFqWUNqQU1nQVNBQktBS1FBMEVCYWpZQ2tBTWdBQ0FGUVJCcU5nSUVJQUJCQURZQ0FBd0RCU0FHUVFGcVFRQWdCaUFLUnhzaEJpQUhRUUZxSVFjTUFnc0FDd3NnQkVHR3RRTkI2d05CRGlBRVFhQUJhaEFkSWdFUUZ5SUNRUmhxUVpZMUVBNGFJQUlRR0NBQVFnQTNBZ0FnQVJBZUN5QUVRYkFCYWlRQUMvOERBUVYvSXdCQjBBQnJJZ01rQUNBRElBSTJBa3dDZjBFQUlBQW9BZ0FpQnlBQUtBSUVJQUlROWd0RkRRQWFJQU1nQUNnQ0NDZ0NBQ0lDTmdKSUlBTkJBRFlDUkFKQUlBSkJBVWNOQUNBRElBQW9BZ3dvQWdBMkFoZ2dCMEdrT0dvZ0EwRVlhaEQyQlFSQUlBTkJBRFlDU0F3QkN5QUFLQUlFSWdRb0FpUWhCU0FEUW9DQWdJQ0FBVGNDUENBRElBTkJHR29pQWpZQ09DQUNJQVVRT1NBRFFUaHFJUVpCQUNFQ0EwQWdBaUFGUndSQUlBTWdCQ2dDSUNBQ1FRSjBhaWdDQUNnQ0hEWUNFQ0FDUVFGcUlRSWdBMEVZYWlBRFFSQnFFQ1FNQVFzTElBTWdCallDQ0NBRElBTW9BamdnQTBFWWFrYzZBQXdnQTBFUWFpRUZJQWRCQ0dvaEJDTUFRUkJySWdJa0FBSi9Ba0FDUUFKQUlBTW9BZ2dpQmlnQ0JBNENBQUVDQ3lBRUlBRVFrUUVNQWdzZ0JpZ0NBQ2dDQUNJR0lBWW9BZ0FvQWdnUkFBQWdBVWNOQUNBREtBSUlLQUlBS0FJQURBRUxJQVFvQWdBaEJDQUNJQU1wQWdnM0F3Z2dCQ0FCSUFKQkNHb1FPZ3NoQVNBRlFRRTZBQVFnQlNBQk5nSUFJQUpCRUdva0FBSkFJQVVRS3lJQlJRMEFJQU1nQTBFUWFoQWFLQUlBSWdJMkFrUWdBZzBBSUFOQkF6WUNTQXNnQTBFWWFoQWpRUUFnQVVVTkFSb0xJQWNvQWdBZ0FDZ0NEQ0FEUWN3QWFpQURRY2dBYWlBQUtBSUVJQWRCakRScUlBTkJ4QUJxSUFBb0FoQVF3QkFMSVFBZ0EwSFFBR29rQUNBQUM2Z0JBUUovSUFBUUhDTUFRVEJySWdVa0FDQUFRYWdCYWlJQUVMMFFJUVlnQkNnQ0FDRUVJQU1vQWdBaEF5QUNLQUlBSVFJZ0FTZ0NBQ0VCSUFWQkFEb0FLQ0FGSUFVb0FpZzJBaEFnQlVFQU9nQWdJQVZCQURvQUhDQUZRUUE2QUJnZ0JTQUZLUU1nTndNSUlBVWdCU2tER0RjREFDQUFJQVpCQUNBQklBSWdBeUFFUVg4Z0JVRUlhaUFGRVBJUElnRVFLQ0FBSUFBb0FoaEJBV28yQWhnZ0JVRXdhaVFBSUFFTFNBRUJmeUFCTFFBRUJFQWdBQkNxQVNBQUlBRW9BZ0FpQWlrQ0FEY0NDQ0FBSUFJb0FnZzJBaEFnQVNnQ0FDSUFRUUEyQWdnZ0FFSUFOd0lBRHdzZ0FDQUJLQUlBRUtnZEMvMERBZ2gvQVg0akFFR3dBV3NpQkNRQUlBRW9Bb1FESWdnZ0FTZ0NqQU1pQlVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FCSUFWQkFYUkJBbW9ReUIwZ0FTZ0NoQU1oQ0FzZ0NFRUJheUVLSUFJb0Fnd2lDU0FJY0NFR0FrQURRQ0FISUFoSEJFQWdBU2dDZ0FNaUN5QUdRUVYwYWlJRkxRQVVSUVJBSUFNb0FnQWhBeUFDS1FJQUlRd2dCU0FDS1FJSU53SUlJQVVnRERjQ0FDQUZRUUU2QUJRZ0JTQUROZ0lRSUFzZ0JrRUZkR29pQWlBSE5nSWNJQUlnQ1RZQ0dDQUJJQUVvQW93RFFRRnFOZ0tNQXlBQklBRW9BcEFEUVFGcU5nS1FBeUFBSUFWQkVHbzJBZ1FnQUVFQU5nSUFEQU1MSUFVZ0NTQUNFUE1MQkVBZ0FFRUNOZ0lBSUFBZ0JVRVFhallDQkF3REN5QUhJQVVvQWh4TEJFQWdCQ0FDS1FJSU53TUlJQVFnQWlrQ0FEY0RBQ0FES0FJQUlRSWdCQ0FKTmdJWUlBUWdCellDSENBRUlBSTJBaEFnQkVFQk9nQVVJQVFnQlJDaUNTQUVJQVFvQWh4QkFXbzJBaHdnQVNBR1FRRnFJQUVvQW9RRGNDQUVFUElMSUFFZ0FTZ0NqQU5CQVdvMkFvd0RJQUVnQVNnQ2tBTkJBV28yQXBBRElBQWdCVUVRYWpZQ0JDQUFRUUEyQWdBTUF3VWdCa0VCYWtFQUlBWWdDa2NiSVFZZ0IwRUJhaUVIREFJTEFBc0xJQVJCaHJVRFFlc0RRUTRnQkVHZ0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFR3dBV29rQUF0Q0FRRi9JQUFnQVNrQ0FEY0NBQ0FBSUFFb0FnZzJBZ2dqQUVFUWF5SUJKQUFnQUNBQVFRUnFJQUJCQ0dvUXZ3Y2hBaUFCUVJCcUpBQWdBQ0FDTmdJTUlBQUxLUUVCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQUVITUNXb2dBa0VNYWhEWkJpQUNRUkJxSkFBTFFRRUNmeU1BUVJCcklnRWtBQ0FBTFFBc0lnSkIvd0ZIQkVBZ0FVRUlhaUFBSUFKQkFuUkIwSWdTYWlnQ0FCRUNBQXNnQUVIL0FUb0FMQ0FCUVJCcUpBQUxGd0FnQUJETUhTQUFMUUFzUVFGSEJFQVFid0FMSUFBTER3QWdBQkRNSFNBQUxRQXNRUUpHQzV3Q0FRVi9Jd0JCUUdvaUJpUUFJd0JCRUdzaUJ5UUFJQUlvQWlRaENDQUdRUkJxSWdSQ2dJQ0FnSUFCTndJa0lBUWdCRFlDSUNBRUlBZ1FPUU5BSUFVZ0NFY0VRQ0FISUFJb0FpQWdCVUVDZEdvb0FnQW9BaHcyQWd3Z0JDQUhRUXhxRUNRZ0JVRUJhaUVGREFFTEN5QUhRUkJxSkFBZ0F5Z0NNQ0lGSUFJb0FpUWlCQ0FFSUFWTEd5RUhRUUFoQlFKQUFrQURRQ0FGSUFkR0RRRWdCVUVDZENFRUlBVkJBV29oQlNBQklBUWdCaWdDTUdvZ0JDQURLQUlzYWlnQ0FDZ0NEQ0FFSUFJb0FpQnFLQUlBS0FJSVFSQnFFTlVRRFFBTElBQkJBam9BTEF3QkN5TUFRVEJySWdFa0FDQUFJQUVnQmtFUWFoRFZCaUlBRU5VR1FRRTZBQ3dnQUJBaklBRkJNR29rQUFzZ0JrRVFhaEFqSUFaQlFHc2tBQXNLQUNBQVFkQ0dFaEJJQ3dvQUlBQkJ1SVlTRUVnTENnQWdBRUh3aFJJUVNBc0tBQ0FBUWVpR0VoQklDd29BSUFCQm9JWVNFRWdMQ2dBZ0FFR0loaElRU0F2aUJBRUJmeU1BUWNBQmF5SUtKQUFnQ2lBQ05nS3dBU0FLSUFFMkFyZ0JJQUFnQ2lnQ3VBRWdDaWdDc0FFZ0F4RFpCQ0lBUWZqekR6WUNCQ0FBUWF6MER6WUNBQ0FBSUFRMkFpUWdBRUdZOUE4MkFnQWdBRUVvYWlBRkVMOEpJQUFnQnpZQ1dDQUFJQVkyQWxRZ0FFSGNBR29nQ0JEQkVDQUFRZkFBYWlBSkVNRVFBa0FnQUNnQ0pDSUNSUVJBUVFBaEJDQUtRWXlpQlVFcFFRQWdDa0dnQVdvUUhTSUJFQmNpQWtFWWFrSFV2UWdRRGhvZ0FoQVlJQUVRSGlBQUtBSWtJZ0pGRFFFTElBSWlCQ2dDQkVISTZROUhEUUFnQ2tHTW9nVkJLMEVBSUFwQm9BRnFFQjBpQVJBWElnSkJHR3BCdnVzSUVBNGFJQUlRR0NBQkVCNGdBQ2dDSkNFRUN5QUVFRmNnQUNnQ0NFRUJRUUJCemMwSVFZeWlCVUV0RUVzZ0JoQlhJQUFvQWdoQkFVRUFRZDIvQ0VHTW9nVkJMaEJMSUFBb0FsZ1FWeUFBS0FJSVFRRkJBRUhpd0FoQmpLSUZRUzhRU3lBQUtBSklJZ0lnQUNnQ1RFRUNkR29oQVNBS1FSaHFJUU1EUUFKQUlBRWdBa1lFUUNBQUtBSmtJZ0lnQUNnQ2FFRUNkR29oQVF3QkN5QUNLQUlBSWdSRkJFQWdDa0dNb2dWQk1VRUFJQXBCb0FGcUVCMGlCUkFYSVFZZ0EwSFozUWdRRGhvZ0JoQVlJQVVRSGdzZ0JCQlhJQUFvQWdoQkFVRUFRZHJKQ0VHTW9nVkJNaEJMSUFKQkJHb2hBZ3dCQ3dzRFFDQUJJQUpIQkVBZ0FpZ0NBQkJYSUFBb0FnaEJBVUVBUWQzRUNFR01vZ1ZCTlJCTElBSkJCR29oQWd3QkN3c2dBQ2dDZUNJQ0lBQW9BbnhCQW5ScUlRRURmeUFCSUFKR0JIOGdDa0hBQVdva0FDQUFCU0FDS0FJQUVGY2dBQ2dDQ0VFQlFRQkIzY1FJUVl5aUJVRTRFRXNnQWtFRWFpRUNEQUVMQ3dzMEFRRi9BMEFnQUNnQzFBVWdBVTBFUUNBQVFRQTJBdFFGQlNBQUtBTFFCU0FCUVR4c2FoQ2tDU0FCUVFGcUlRRU1BUXNMQ3lzQUlBQkJBRG9BTUNBQVFRQTZBQUFnQVMwQU1BUkFJQUFnQVJERUVBc2dBQ0FCS1FJME53STBJQUFMU2dFQ2Z5TUFRYkFCYXlJQkpBQWdBQzBBSEVVRVFDQUJRWWVwQTBHT0FVRU9JQUZCb0FGcUVCMGlBQkFYSWdKQkdHcEJ0TjRJRUE0YUlBSVFHQ0FBRUI0TElBRkJzQUZxSkFBTE5nRUJmeU1BUVJCcklnTWtBQ0FDS0FJQUVNTURJUUlnQVNnQ1pDRUJJQUFnQWpZQ0JDQUFJQUlnQVhBMkFnQWdBMEVRYWlRQUM4d0ZBZ2gvQW40akFFSEFBV3NpQkNRQUlBRW9BbVFnQVNnQ2JDSURRWllCYkVHV0FXcEI1QUJ1U1FSQUl3QkJNR3NpQlNRQVFRWWdBMEVCZEVFQ2FrR1dBV3hCNUFCdUlnTWdBMEVHVFJzaUJpQUJLQUprU3dSQUlBVkNnSUNBZ01BQU53SWtJQVVnQlVFUWFpSUROZ0lnSUFNZ0FTZ0NiQkRXQWlBQktBSmdJZ01nQVNnQ1pFRUVkR29oQndOQUFrQWdBeUFIUmdSQUlBRVE2Z1VnQVNBR0VPZ0ZJQVVvQWlBaUF5QUZLQUlrUVFKMGFpRUdEQUVMSUFNdEFBUUVRQ0FGUVJCcUlBTVF2Z0VRY1FzZ0EwRVFhaUVEREFFTEN3TkFJQU1nQmtjRVFDQUZJQUVnQXhEb0hTQURRUVJxSVFNTUFRc0xJQVZCRUdvUVhnc2dCVUV3YWlRQUN5QUVRYmdCYWlBQklBSVE1eDBnQVNnQ1pDSUpRUUZySVFvZ0FpZ0NBQ0VHSUFFb0FtQWhDQ0FFS0FLOEFTRUhJQVFvQXJnQklRVkJBQ0VDQWtBRFFDQUNJQWxIQkVBZ0NDQUZRUVIwYWlJRExRQUVSUVJBSUFOQkFUb0FCQ0FESUFZMkFnQWdDQ0FGUVFSMGFpSURJQUkyQWd3Z0F5QUhOZ0lJSUFFZ0FTZ0NiRUVCYWpZQ2JDQUJJQUVvQW5CQkFXbzJBbkFnQUVJQU53SUFEQU1MQWtBZ0F5Z0NDQ0FIUncwQUlBWWdBeWdDQUVjTkFDQUFRZ0kzQWdBTUF3c2dBaUFES0FJTVN3UkFJQVFnQnpZQ3NBRWdCQ0FHTmdLb0FTQUVJQUkyQXJRQklBUkJBVG9BckFFZ0JDQUVLUU93QVNJTE53TVFJQVFnQkNrRHFBRWlERGNEQ0NBRUlBTXBBZ2czQTdBQklBUWdBeWtDQURjRHFBRWdBeUFNTndJQUlBTWdDemNDQ0NBRUlBUW9BclFCUVFGcU5nSzBBU0FCSUFWQkFXb2dBU2dDWkhBZ0JFR29BV29ROUFVZ0FTQUJLQUpzUVFGcU5nSnNJQUVnQVNnQ2NFRUJhallDY0NBQVFnQTNBZ0FNQXdVZ0JVRUJha0VBSUFVZ0NrY2JJUVVnQWtFQmFpRUNEQUlMQUFzTElBUkJDR3BCaHJVRFFlc0RRUTRnQkVHb0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFSEFBV29rQUFzd0FRRi9JQUFvQWdBaEFTQUFRUUEyQWdBZ0FRUkFJQUF0QUFnRVFDQUJRUXhxRUs0RUN5QUJCRUFnQVJBZkN3c0xDZ0FnQUVIUS9CRVFTQXNLQUNBQVFhaUNFaEJJQ3dvQUlBQkJtUDBSRUVnTFBRRUNmMEVNSVFJZ0FDRURJQUZCREU4RVFFRi9JQUZCQkhRZ0FVSC8vLy8vQUVzYkVCVWhBeUFCSVFJTElBQWdBellDd0FFZ0FDQUNOZ0xJQVFzbEFDQUFFTzhMSUFCQkRCQzZFQ0FBUVFBMkFwd0VJQUFnQUNnQ29BUkJBV28yQXFBRUN3c0FJQUJCaElrU0VPRVNDOGNIQVFoL0l3QkIwQUZySWdna0FDQUJLQUtVQkNJRklBRW9BcHdFSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVHZ0Ftc2lCaVFBUVF3Z0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRU1UUnNpQ1NBQktBS1VCRXNFUUNBR1FvQ0FnSUNBQVRjQ2xBSWdCaUFHUVJCcUlnUTJBcEFDSUFRZ0FTZ0NuQVFRbXgwZ0FTZ0NrQVFpQkNBQktBS1VCRUVzYkdvaENnTkFBa0FnQkNBS1JnUkFJQUVRN2gwZ0FTQUpFTG9RSUFZb0FwQUNJZ1FnQmlnQ2xBSkJCWFJxSVFVTUFRc2dCQzBBSUFSQUlBUVE0QVloQ3lBR1FSQnFJZ1VvQW9RQ0lnY2dCU2dDaUFKUEJFQWdCU0FGS0FLSUFpSUhRUUYwUVFJZ0J4c1FteDBnQlNnQ2hBSWhCd3NnQlNBSFFRRnFOZ0tFQWlBRktBS0FBaUFIUVFWMGFpQUxFUG9GR2dzZ0JFRXNhaUVFREFFTEN3TkFJQVFnQlVjRVFDQUdRUWhxSUFFZ0JDQUVRUnhxRVBBZElBUkJJR29oQkF3QkN3c2dCa0VRYWlFRVFRQWhCUU5BSUFRb0FvUUNJQVZOQkVBZ0JFRUFOZ0tFQWdVZ0JDZ0NnQUlhSUFWQkFXb2hCUXdCQ3dzZ0JDQUVLQUtBQWhBMkN5QUdRYUFDYWlRQUlBRW9BcFFFSVFVTElBSW9BZ0FoQnlBSUlBTTJBc3dCSUFnZ0FqWUN5QUVnQlVFQmF5RUpJQWNnQlhBaEJFRUFJUU1DUUFOQUlBTWdCVWNFUUNBQktBS1FCQ0lLSUFSQkxHeHFJZ1l0QUNCRkJFQWdDRUVJYWlJQ0lBaEJ5QUZxRVB3RklBWWdBaENWRENBS0lBUkJMR3hxSWdJZ0F6WUNLQ0FDSUFjMkFpUWdBU0FCS0FLY0JFRUJhallDbkFRZ0FTQUJLQUtnQkVFQmFqWUNvQVFnQUNBR1FSeHFOZ0lFSUFCQkFEWUNBQXdEQ3lBR0lBY2dBaEM1Q1FSQUlBQkJBallDQUNBQUlBWkJIR28yQWdRTUF3c2dBeUFHS0FJb1N3UkFJQWhCcUFGcUlnSWdDRUhJQVdvUS9BVWdDRUVJYWlBQ0VKUU1JZ0lnQXpZQ0tDQUNJQWMyQWlRZ0FpQUdFT0VHSUFJZ0FpZ0NLRUVCYWpZQ0tDQUVRUUZxSUFFb0FwUUVjQ0VEUVFBaEJDQUJLQUtVQkNJSFFRRnJJUWtDUUFOQUlBUWdCMFlOQVNBQktBS1FCQ0FEUVN4c2FpSUZMUUFnQkVBZ0FpQUNLQUlvSWdvZ0JTZ0NLRXNFZnlBRklBSVE0UVlnQWlnQ0tBVWdDZ3RCQVdvMkFpZ2dBMEVCYWtFQUlBTWdDVWNiSVFNZ0JFRUJhaUVFREFFTEN5QUZJQUlRc3drTElBRWdBU2dDbkFSQkFXbzJBcHdFSUFFZ0FTZ0NvQVJCQVdvMkFxQUVJQUFnQmtFY2FqWUNCQ0FBUVFBMkFnQWdBaENxQWd3REJTQUVRUUZxUVFBZ0JDQUpSeHNoQkNBRFFRRnFJUU1NQWdzQUN3c2dDRUVJYWtHR3RRTkI2d05CRGlBSVFhZ0JhaEFkSWdFUUZ5SUNRUmhxUVpZMUVBNGFJQUlRR0NBQVFnQTNBZ0FnQVJBZUN5QUlRZEFCYWlRQUN4UUFJQUFnQVNnQ0FDZ0NBQ2dDSkVFa2FoQlRDNElKQWdsL0EzNGpBRUhBQVdzaUJTUUFJQUVvQXBRQklBRW9BcHdCSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVIUUFHc2lCaVFBUVFZZ0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRUdUUnNpQ3lBQktBS1VBVXNFUUNBR1FvQ0FnSURBQURjQ1JDQUdJQVpCRUdvaUJEWUNRQ0FFSUFFb0Fwd0JFSjBkSUFFb0FwQUJJZ1FnQVNnQ2xBRkJHR3hxSVF3RFFBSkFJQVFnREVZRVFDQUJFSzBkSUFFZ0N4QzFFQ0FHS0FKQUlnUWdCaWdDUkVFTWJHb2hCd3dCQ3lBRUxRQU1CRUFnQkJDd0NTRUtJQVpCRUdvaUJ5Z0NOQ0lJSUFjb0FqaFBCRUFnQnlBSEtBSTRJZ2hCQVhSQkFpQUlHeENkSFNBSEtBSTBJUWdMSUFjZ0NFRUJhallDTkNBSEtBSXdJQWhCREd4cUlnY2dDaWdDQ0RZQ0NDQUhJQW9wQWdBM0FnQUxJQVJCR0dvaEJBd0JDd3NEUUNBRUlBZEhCRUFnQmtFSWFpQUJJQVFnQkVFSWFoRHlIU0FFUVF4cUlRUU1BUXNMSUFaQkVHb2lCRUVBTmdJMElBUWdCQ2dDTUJBMkN5QUdRZEFBYWlRQUN5QUZRYmdCYWlBQklBSVFueDBnQVNnQ2xBRWlCMEVCYXlFSUlBVW9BcmdCSVFZQ1FBTkFJQWNnQ1VjRVFDQUJLQUtRQVNJS0lBWkJHR3hxSWdRdEFBeEZCRUFnQWlrQ0FDRU5JQU1vQWdBaEFpQUVRUUU2QUF3Z0JDQUNOZ0lJSUFRZ0RUY0NBQ0FGS0FLOEFTRUNJQW9nQmtFWWJHb2lBeUFKTmdJVUlBTWdBallDRUNBQklBRW9BcHdCUVFGcU5nS2NBU0FCSUFFb0FxQUJRUUZxTmdLZ0FTQUFJQVJCQ0dvMkFnUWdBRUVBTmdJQURBTUxJQVFnQlNnQ3ZBRWdBaENlSFFSQUlBQkJBallDQUNBQUlBUkJDR28yQWdRTUF3c2dDU0FFS0FJVVN3UkFJQUlwQWdBaERTQUZJQU1vQWdBMkFxZ0JJQVVnQlNnQ3ZBRTJBckFCSUFVZ0RUY0RvQUVnQlNBSk5nSzBBU0FGUVFFNkFLd0JJQVVnQlNrRHNBRWlEamNERUNBRklBVXBBNmdCSWc4M0F3Z2dCU0FOTndNQUlBVWdCQ2tDRURjRHNBRWdCU0FFUVFocUlnY3BBZ0EzQTZnQklBVWdCQ2tDQURjRG9BRWdCQ0FOTndJQUlBUWdEamNDRUNBRUlBODNBZ2dnQlNBRktBSzBBVUVCYWpZQ3RBRWdCa0VCYWlBQktBS1VBWEFoQkVFQUlRWWpBRUVnYXlFRElBRW9BcFFCSWdsQkFXc2hDQUpBQTBBZ0JpQUpSZzBCSUFFb0FwQUJJQVJCR0d4cUlnSXRBQXdFUUNBRklBVW9BclFCSWdvZ0FpZ0NGRXNFZnlBRElBSXBBaEEzQXhnZ0F5QUNLUUlJTndNUUlBTWdBaWtDQURjRENDQUNJQVVwQXJBQk53SVFJQUlnQlNrQ3FBRTNBZ2dnQWlBRktRS2dBVGNDQUNBRklBTXBBeGczQXJBQklBVWdBeWtERURjQ3FBRWdCU0FES1FNSU53S2dBU0FGS0FLMEFRVWdDZ3RCQVdvMkFyUUJJQVJCQVdwQkFDQUVJQWhIR3lFRUlBWkJBV29oQmd3QkN3c2dBaUFGS1FLZ0FUY0NBQ0FDSUFVcEFyQUJOd0lRSUFJZ0JTa0NxQUUzQWdnTElBRWdBU2dDbkFGQkFXbzJBcHdCSUFFZ0FTZ0NvQUZCQVdvMkFxQUJJQUFnQnpZQ0JDQUFRUUEyQWdBTUF3VWdCa0VCYWtFQUlBWWdDRWNiSVFZZ0NVRUJhaUVKREFJTEFBc0xJQVZCaHJVRFFlc0RRUTRnQlVHZ0FXb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JVSEFBV29rQUFzS0FDQUFFTW9RUVFCSEMyMEJCSDhqQUVFd2F5SUJKQUFnQVNBQUtBSUFJZ1JCcUIxcUlBQW9BZ1FvQWdBUXB3RWdBVUVRYWlJQ1FiQ0lDU0FCRURVZ0FVRWdhaUlESUFKQjg1b0pFQzBnQkNBRElBQW9BZ2dvQWdBb0FpaEJFR29RSnlBREVBOGFJQUlRRHhvZ0FSQVBHaUFCUVRCcUpBQUxHUUFnQUNBQklBSWdBMEhva2hKQitKSVNRY2lTRWhEZ0Vnc3BBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBUWV3QmFpQUNRUXhxRU5BZElBSkJFR29rQUF0T0FRTi9Jd0JCc0FGcklnRWtBQ0FBRUxzZElnQkZCRUFnQVVIWXJ3TkJ6UUJCRGlBQlFhQUJhaEFkSWdJUUZ5SURRUmhxUWUycENCQU9HaUFERUJnZ0FoQWVDeUFCUWJBQmFpUUFJQUFMV2dFRGZ5TUFRYUFCYXlJQkpBQWdBVUczbXdWQnloZEJDQ0FBS0FJQUtBSUVFQmNpQWtFWWFpSURRZTYvQ3hBT0dpQURRZFNRREJBT0dpQUNJQUFvQWdRb0FnQW9BZ1JCQkdvUW1nRWFJQUlRR0NBQlFhQUJhaVFBQzJNQkFuOGpBRUVRYXlJREpBQWdBeUFDTmdJTUlBTWdBVFlDQ0NNQVFSQnJJZ0VrQUNBQlFRaHFJQUJCL0FacUlnQkJ6QUJxSUFOQkNHb2lBaEMvSFNBQktBSUlJUVFnQVVFUWFpUUFJQVJCQWtjRVFDQUFJQUlRc1FVTElBTkJFR29rQUF1U0FRRUNmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBaUFBTmdJQUlBSWdBa0VNYWpZQ0JBSi9Ba0FnQVVVTkFFRUJJQUVvQWdRaUFCQ1JBdzBCR2lBQVFmQ3FFa2NOQUVFQ0RBRUxJd0JCRUdzaUFDUUFJQUJCQ0dvZ0FpZ0NBRUdNT21vZ0FpZ0NCQkQvQ3lBQUxRQU1JUUVnQUNnQ0NDRURJQUJCRUdva0FDQURRUUFnQVJzTElRQWdBa0VRYWlRQUlBQUxpQUVCQkg4akFFRXdheUlCSkFBZ0FVRVFhaERHR3lJQ0tBSUlJUU1nQVNBQ05nSU1JQUVnQXpZQ0NBSkFJQUJCSEdvaUJDQUJRUWhxRUwwQklnSUVRQ0FDS0FJTUlRQU1BUXNnQUNBQUVLVUVFTVliSWdJUUtDQUFJQUFvQWhoQkFXbzJBaGdnQVNBQ0lnQTJBZ3dnQVNBRE5nSUlJQVFnQVVFSWFoQzhBUXNnQVVFd2FpUUFJQUFMa0FFQkJIOGpBRUV3YXlJQ0pBQWdBa0VRYWlBQktBSUFFTWdiSWdNb0FnZ2hCQ0FDSUFNMkFnd2dBaUFFTmdJSUFrQWdBRUVjYWlJRElBSkJDR29RdlFFaUJRUkFJQVVvQWd3aEFRd0JDeUFBSUFBUXBRUWdBU2dDQUJESUd5SUJFQ2dnQUNBQUtBSVlRUUZxTmdJWUlBSWdBVFlDRENBQ0lBUTJBZ2dnQXlBQ1FRaHFFTHdCQ3lBQ1FUQnFKQUFnQVF1UUFRRUVmeU1BUVRCcklnSWtBQ0FDUVJCcUlBRW9BZ0FReHhzaUF5Z0NDQ0VFSUFJZ0F6WUNEQ0FDSUFRMkFnZ0NRQ0FBUVJ4cUlnTWdBa0VJYWhDOUFTSUZCRUFnQlNnQ0RDRUJEQUVMSUFBZ0FCQ2xCQ0FCS0FJQUVNY2JJZ0VRS0NBQUlBQW9BaGhCQVdvMkFoZ2dBaUFCTmdJTUlBSWdCRFlDQ0NBRElBSkJDR29RdkFFTElBSkJNR29rQUNBQkM0SUJBUVIvSXdCQklHc2lBU1FBSUFGQkNHb1F5aHNpQWlnQ0NDRURJQUVnQWpZQ0JDQUJJQU0yQWdBQ1FDQUFRUnhxSWdRZ0FSQzlBU0lDQkVBZ0FpZ0NEQ0VBREFFTElBQWdBQkMwQkJES0d5SUNFQ2dnQUNBQUtBSVlRUUZxTmdJWUlBRWdBaUlBTmdJRUlBRWdBellDQUNBRUlBRVF2QUVMSUFGQklHb2tBQ0FBQzVrQkFRUi9JQUFRSENNQVFUQnJJZ0lrQUNBQ1FSQnFJQUVvQWdBUXh3c2lBeWdDQ0NFRUlBSWdBellDRENBQ0lBUTJBZ2dDUUNBQVFSQnFJZ05CSEdvaUJTQUNRUWhxRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQXlBREVLVUVJQUVvQWdBUXh3c2lBQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUNJQUEyQWd3Z0FpQUVOZ0lJSUFVZ0FrRUlhaEM4QVFzZ0FrRXdhaVFBSUFBTEV3QWdBRUhRQUdvUVhpQUFRU1JxRUNNZ0FBc1FBQ0FBRUJ3Z0FFRVFhaUFCRVB3ZEN3NEFJQUFRSENBQVFSQnFFUHNkQ3c0QUlBQVFIQ0FBUVVCckVNRWRDellCQVg4Z0FDZ0NCQ0lDSUFGQkFuUnFJUUVEUUNBQklBSkdCRUFnQUNBQk5nSUVCU0FDUVFBMkFnQWdBa0VFYWlFQ0RBRUxDd3VUQVFFRmZ5TUFRZEFBYXlJRUpBQWdCRUVRYWlJRklBSWdBQ2dDQkJEZEhpQUVRU0JxSWdaQnhiY0tJQVVRTlNBRVFUQnFJZ2NnQmtHNDV3a1FMU0FFUVVCcklnZ2dCeUFFSUFNUStRY2lBeEJPSUFBZ0NDQUJFQ2NnQ0JBUEdpQURFQThhSUFjUUR4b2dCaEFQR2lBRkVBOGFJQUJCcUIxcUlBSW9BZ0JCQUNBQ0xRQU1RUUZHR3hDZENTQUVRZEFBYWlRQUMrZ3BBaFYvQVg0akFFSFFBbXNpQXlRQUlBTWdBallDcEFJZ0FDZ0NBQ0VFSUFNZ0FEWUNtQUlnQXlBRFFhUUNhaUlHTmdLY0FpQURJQVEyQXBBQ0lBTWdBRFlDaUFJZ0F5QUdOZ0tNQWlBRElBQTJBb1FDSUFNZ0JqWUNnQUlnQXlBRU5nTDRBU0FESUFBMkF2QUJJQU1nQmpZQzlBRWdBeUFFTmdMc0FTQURJQUEyQXVBQklBTWdBMEh3QVdvaUNEWUM2QUVnQXlBR05nTGtBU0FESUFBMkF0UUJJQU1nQ0RZQzJBRWdBeUFEUVlBQ2FpSUlOZ0xRQVNBRElBQTJBc1FCSUFNZ0EwSGdBV28yQXNnQklBTWdDRFlDd0FFZ0F5QUVOZ0s0QVNBRElBQTJBclFCSUFNZ0JqWUN2QUVnQXlBSU5nS3dBU0FESUFRMkFxZ0JJQU1nQURZQ3BBRWdBeUFHTmdLc0FTQURJQWcyQXFBQkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCUVFGckRtQktTVWhIUmtWRVEwSkJRRDgrUFR3N09qazROelkxTkRNeU1Vc3ZZUUFEQkFFSUVSb0pFaHNLRXh3TEZCME1GUjRORmg4T0Z5QVBHQ0VRR1NKZlhsMWNXMXBaV0ZkV1ZWUlRVbEZRVDA1TlRBSUZJeVlwTEFZa0p5b3RCeVVvS3k0d0N5QURRWmdDYWlBRUVLb0pFSjBCSVFJTVl3c2dBMEdZQW1vZ0JCRFVBaENkQVNFQ0RHSUxJQU5CbUFKcUlBUVExd1lRblFFaEFneGhDeUFEUVpnQ2FpQURRWWdDYWhDb0FoQ2RBU0VDREdBTElBTkJtQUpxSUFRUTVBRVFuUUVoQWd4ZkN5QURRZEFCYWtFQ0VNOFFJUUlNWGdzZ0EwSFFBV3BCQXhEUEVDRUNERjBMSUFOQjBBRnFRUVFRenhBaEFneGNDeUFEUWNBQmFrRUNRUUlRcVFVaEFneGJDeUFEUWNBQmFrRUNRUU1RcVFVaEFneGFDeUFEUWNBQmFrRUNRUVFRcVFVaEFneFpDeUFEUWNBQmFrRURRUUlRcVFVaEFneFlDeUFEUWNBQmFrRURRUU1RcVFVaEFneFhDeUFEUWNBQmFrRURRUVFRcVFVaEFneFdDeUFEUWNBQmFrRUVRUUlRcVFVaEFneFZDeUFEUWNBQmFrRUVRUU1RcVFVaEFneFVDeUFEUWNBQmFrRUVRUVFRcVFVaEFneFRDeUFEUVpnQ2FpQURRZUFCYWlBRUVPUUJRUUpCQWhEQ0FoQ2RBU0VDREZJTElBTkJtQUpxSUFOQjRBRnFJQVFRNUFGQkFrRURFTUlDRUowQklRSU1VUXNnQTBHWUFtb2dBMEhnQVdvZ0JCRGtBVUVDUVFRUXdnSVFuUUVoQWd4UUN5QURRWmdDYWlBRFFlQUJhaUFFRU9RQlFRTkJBaERDQWhDZEFTRUNERThMSUFOQm1BSnFJQU5CNEFGcUlBUVE1QUZCQTBFREVNSUNFSjBCSVFJTVRnc2dBMEdZQW1vZ0EwSGdBV29nQkJEa0FVRURRUVFRd2dJUW5RRWhBZ3hOQ3lBRFFaZ0NhaUFEUWVBQmFpQUVFT1FCUVFSQkFoRENBaENkQVNFQ0RFd0xJQU5CbUFKcUlBTkI0QUZxSUFRUTVBRkJCRUVERU1JQ0VKMEJJUUlNU3dzZ0EwR1lBbW9nQTBIZ0FXb2dCQkRrQVVFRVFRUVF3Z0lRblFFaEFneEtDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFQ1FRSVF3Z0lRblFFaEFneEpDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFQ1FRTVF3Z0lRblFFaEFneElDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFQ1FRUVF3Z0lRblFFaEFneEhDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRFFRSVF3Z0lRblFFaEFneEdDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRFFRTVF3Z0lRblFFaEFneEZDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRFFRUVF3Z0lRblFFaEFneEVDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRVFRSVF3Z0lRblFFaEFneERDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRVFRTVF3Z0lRblFFaEFneENDeUFEUVpnQ2FpQURRZUFCYWlBRFFZZ0NhaENvQWtFRVFRUVF3Z0lRblFFaEFneEJDeUFEUVpnQ2FpQURRZkFCYWlBRUVPUUJRUUlRMHdFUW5RRWhBZ3hBQ3lBRFFaZ0NhaUFEUWZBQmFpQUVFT1FCUVFNUTB3RVFuUUVoQWd3L0N5QURRWmdDYWlBRFFmQUJhaUFFRU9RQlFRUVEwd0VRblFFaEFndytDeUFEUVpnQ2FpQURRZkFCYWlBRFFZZ0NhaENvQWtFQ0VOTUJFSjBCSVFJTVBRc2dBMEdZQW1vZ0EwSHdBV29nQTBHSUFtb1FxQUpCQXhEVEFSQ2RBU0VDRER3TElBTkJtQUpxSUFOQjhBRnFJQU5CaUFKcUVLZ0NRUVFRMHdFUW5RRWhBZ3c3Q3lBRFFaZ0NhaUFEUWZBQmFpQUVFTlFDUVFJUTB3RVFuUUVoQWd3NkN5QURRWmdDYWlBRFFmQUJhaUFFRU5RQ1FRTVEwd0VRblFFaEFndzVDeUFEUVpnQ2FpQURRZkFCYWlBRUVOUUNRUVFRMHdFUW5RRWhBZ3c0Q3lBRFFaZ0NhaUFEUWZBQmFpQUVFTmNHUVFJUTB3RVFuUUVoQWd3M0N5QURRWmdDYWlBRFFmQUJhaUFFRU5jR1FRTVEwd0VRblFFaEFndzJDeUFEUVpnQ2FpQURRZkFCYWlBRUVOY0dRUVFRMHdFUW5RRWhBZ3cxQ3lBREVOOEdJUW9nQUNnQ21EUWhEeUFBSUFvMkFwZzBJQU5CZ0FKcVFRRkJBaENvQlNJTFJRMHlJQXNvQWt3aUJDZ0NBQ0VOUVFBaEFrRUFJUUVnQ3lnQ1VFRUNUd1JBSUFRb0FnUWhBUXNnQXlBQUlBMFEwQU1pQ0RZQ3pBSWdDRVVOTXdKL0lBRUVRQ01BUVRCcklnWWtBQ0FHSUFBZ0FDQUJFSVVDUVFBUWxnSWlCRFlDTEFKQUlBUkZEUUFnQkNnQ0dFRUNSZ1JBQWtBZ0JCRHdEeUlFUlEwQUlBUW9BZ1JCMkp3U1J3MEFJQVlnQkNnQ0xDSUVRUUFnQkNnQ0JFR1FuQkpHR3lJRU5nSWdJQVJGRFFBZ0FDZ0NBQ0lFRUJ3akFFRWdheUlGSkFBZ0JVRVFhaUFHS0FJZ0VJOGNJZ2NvQWdnaENTQUZJQWMyQWd3Z0JTQUpOZ0lJQWtBZ0JFRkFheUlIUVJ4cUlnd2dCVUVJYWhDaENTSUVCRUFnQkNnQ0RDRUVEQUVMSUFjZ0J4RDhBeUFHS0FJZ0VJOGNJZ1FRS0NBSElBY29BaGhCQVdvMkFoZ2dCU0FFTmdJTUlBVWdDVFlDQ0NBTUlBVkJDR29Rb0FrTElBVkJJR29rQUNBRUlRVU1BZ3NnQUNnQ0FDSUVFQndqQUVFZ2F5SUZKQUFnQlVFUWFpQUdLQUlzRUk0Y0lnY29BZ2doQ1NBRklBYzJBZ3dnQlNBSk5nSUlBa0FnQkVGQWF5SUhRUnhxSWd3Z0JVRUlhaENoQ1NJRUJFQWdCQ2dDRENFRURBRUxJQWNnQnhEOEF5QUdLQUlzRUk0Y0lnUVFLQ0FISUFjb0FoaEJBV28yQWhnZ0JTQUVOZ0lNSUFVZ0NUWUNDQ0FNSUFWQkNHb1FvQWtMSUFWQklHb2tBQ0FFSVFVTUFRc2dCQ2dDSENJRVJRUkFJQUFnQmtFZ2FrSEd1Z1FRRkNJRUlBRkJFR29RSnlBRUVBOGFEQUVMSUFRZ0JDZ0NBQ2dDQ0JFQUFDSUhFUE1IUlFSQUlBWWdCeUFIS0FJQUtBSU1FUUlBSUFaQkVHb2lCRUdJa2drZ0JoQTFJQVpCSUdvaUJ5QUVRZk9hQ1JBdElBQWdCeUFCUVJCcUVDY2dCeEFQR2lBRUVBOGFJQVlRRHhvTUFRc2dCQkJqSWhoQ0FGY0VRQ0FHSUJnUTl3WWdCa0VRYWlJRVFkdjVDQ0FHRURVZ0JrRWdhaUlISUFSQjI0MEhFQzBnQUNBSElBRkJFR29RSnlBSEVBOGFJQVFRRHhvZ0JoQVBHZ3dCQ3lBQUtBSUFJUVFnQmlBWVBnSWdJQVFnQmtFZ2FoQ0hIaUVGQ3lBR1FUQnFKQUFnQlF3QkN5QUFLQUlBRUlNZUN5SVFSUTB6SUFOQkFEb0F4QUlnQTBFQU5nSzhBaUFESUF0QjJBQnFOZ0xBQWtFQUlRUWpBRUVnYXlJR0pBQWdBeWdDd0FJaEJTQUdRUUE2QUJ3Z0JpQUZOZ0lZQWtBZ0FFR3NIV29pRVNBR1FSaHFFRUZGRFFBZ0F5Z0N3QUlpQnlnQ0FDSUZJQWNvQWdSQkFuUnFJUklEUUNBRklCSkdCRUJCQVNFRURBSUxJQVlnQlNnQ0FDSUhOZ0lVSUFBZ0J4QXpHaUFHS0FJVUlRY2dCaUFBTmdJSUlBWWdCa0VVYWpZQ0RBSkFJQWRGRFFBZ0J5Z0NCRUhZZ2hKSERRQWdDQkNZQ1FSQUlBTWdCeWdDSkRZQ3ZBSWdDQ0FJS0FJQUtBSVFFUUFBSVJNZ0NDQUlLQUlBS0FJVUVRQUFJUWtqQUVFUWF5SU1KQUFDZndKQUlCTWdCeWdDSkNJT1N5QUpJQTVMY2cwQUlBNGdDWEFOQUVFQkRBRUxJQkVnREVIenpRTVFGQ0lKSUFkQkVHb1FKeUFKRUE4YVFRQUxJUWNnREVFUWFpUUFJQWRGRFFNTElBVkJCR29oQlF3QkN3c2pBRUVRYXlJRkpBQWdCaWdDQ0NFSElBWW9BZ3dvQWdBaENTQUZRUXMyQWd3Z0JVR01zd0UyQWdnZ0JTQUZLUU1JTndNQUlBY2dDU0FGRUVBZ0JVRVFhaVFBQ3lBR1FTQnFKQUFnQkVVTk15QURJQUFnQzBFUWFpQU5RUkJxSWdJZ0FTQURLQUtrQWlBQkcwRVFhaUFJSUJBZ0F5Z0N2QUlRMWhBaUFUWUN1QUlnQVVVTk1nSkFJQWdvQWdSQjhLUVNSZ1JBSUFNZ0FqWUNxQUlnQTBHd0Ftb2dBRUdzS1dvZ0EwRzRBbW9nQTBHb0Ftb1FxUWtNQVFzZ0EwR3dBbW9nQUVHc0tXb2lBU0FEUWN3Q2FoRC9DeUFETFFDMEFrVU5BQ0FEUWFnQ2FpQUJJQU5CdUFKcUlBTkJzQUpxRUtrSkN5QUtLQUlRSWdFZ0NpZ0NGRUVDZEdvaEFnTkFJQUVnQWtZRVFDQURLQUs0QWlFQ0REVUZJQUVvQWdBaEJDQUFLQUlBSWdVUUhDQUZRZVFCYWlBREtBSzRBaUFFRU5zUUlBRkJCR29oQVF3QkN3QUxBQXNnQTBIQUFtb2lBU0FDUVNScUVGTWdBMEczbXdWQnNCWkJDQ0FBS0FJRUVCY2lBRUVRYWlBREtBS2tBa0VRYWhDdUF5QUFRUmhxSWdKQjg1SUpFQTRhSUFJZ0FSQVNHaUFDUWZPYUNSQU9HaUFBRUJnZ0FSQVBHZ3d2Q3lBRUlBTkI4QUZxSUFRUTVBRkJCQkRUQVJDZUF5RUNERElMSUFRZ0EwSHdBV29nQTBHSUFtb1FxQUpCQkJEVEFSQ2VBeUVDRERFTElBUWdBMEh3QVdvZ0JCQ29CRUVFRU5NQkVKNERJUUlNTUFzZ0JDQURRZkFCYWlBRUVPUUJRUU1RMHdFUW5nTWhBZ3d2Q3lBRUlBTkI4QUZxSUFOQmlBSnFFS2dDUVFNUTB3RVFuZ01oQWd3dUN5QUVJQU5COEFGcUlBUVFxQVJCQXhEVEFSQ2VBeUVDREMwTElBUWdBMEh3QVdvZ0JCRGtBVUVDRU5NQkVKNERJUUlNTEFzZ0JDQURRZkFCYWlBRFFZZ0NhaENvQWtFQ0VOTUJFSjRESVFJTUt3c2dCQ0FEUWZBQmFpQUVFS2dFUVFJUTB3RVFuZ01oQWd3cUN5QUVJQVFRNUFFUW5nTWhBZ3dwQ3lBRUlBTkJpQUpxRUtnQ0VKNERJUUlNS0FzZ0JDQUVFS2dFRUo0RElRSU1Kd3NnQkNBRFFmQUJhaUFFRU9RQlFRUVEwd0VRblFNaEFnd21DeUFFSUFOQjhBRnFJQU5CaUFKcUVLZ0NRUVFRMHdFUW5RTWhBZ3dsQ3lBRUlBTkI4QUZxSUFRUXFBUkJCQkRUQVJDZEF5RUNEQ1FMSUFRZ0EwSHdBV29nQkJEa0FVRURFTk1CRUowRElRSU1Jd3NnQkNBRFFmQUJhaUFEUVlnQ2FoQ29Ba0VERU5NQkVKMERJUUlNSWdzZ0JDQURRZkFCYWlBRUVLZ0VRUU1RMHdFUW5RTWhBZ3doQ3lBRUlBTkI4QUZxSUFRUTVBRkJBaERUQVJDZEF5RUNEQ0FMSUFRZ0EwSHdBV29nQTBHSUFtb1FxQUpCQWhEVEFSQ2RBeUVDREI4TElBUWdBMEh3QVdvZ0JCQ29CRUVDRU5NQkVKMERJUUlNSGdzZ0JDQUVFT1FCRUowRElRSU1IUXNnQkNBRFFZZ0NhaENvQWhDZEF5RUNEQndMSUFRZ0JCQ29CQkNkQXlFQ0RCc0xJQVFnQkJEWEJoQ3JEQ0VDREJvTElBUWdCQkRVQWhDckRDRUNEQmtMUVFBaEFpQURRWUFDYWtFQlFRQVFxQVVpQVVVTkdDQURJQUFnQVNnQ1RDZ0NBQkRRQXlJQk5nSUFJQUZGRFJnZ0FFR3NIV29nQVNBREtBS2tBa0VRYWhDekhFVU5HQ0FEUVFNMkFzQUNJQU5CQVRvQXNBSWdCQ0FESUFOQndBSnFJQU5Cc0FKcUVLSWZJUUlNR0FzZ0EwR2dBV3BCQXhEK0N5RUNEQmNMSUFOQm9BRnFRUUlRL2dzaEFnd1dDeUFEUWFBQmFrRUJFUDRMSVFJTUZRc2dBMEdnQVdwQkFCRCtDeUVDREJRTElBTkJBVFlDQUVFQUlRSWdBMEdBQW1wQkFVRUFFS2dGSWdGRkRSTWdBQ0FCS0FKTUtBSUFFSzhKSWdGRkRSTWdBeUFCS0FJUU5nTEFBaUFFSUFNZ0EwSEFBbW9RcFI4aUFTRVdRUUFoRkNBQVFhd2RhaUVDSUFNb0FxUUNRUkJxSVFRakFFRVFheUlBSkFCQkFTRUZBa0FDUUNBQktBSVlRUUZIQkVBZ0FpQUFRY0h4QkJBVUlnRWdCQkFuREFFTElBRW9BaHdRaEFFUXhSd05BU0FDSUFCQmlmd0dFQlFpQVNBRUVDY0xJQUVRRHhwQkFDRUZDeUFBUVJCcUpBQWdGaUFVSUFVYklRSU1Fd3NnQTBHWUFtb2dCQkNDSGhDZEFTRUNEQklMSUFOQkFUWUNBQ0FEUVpnQ2FpQUVJQU1RZ1I0UW5RRWhBZ3dSQ3lBRFFRVTJBZ0FnQTBHWUFtb2dCQ0FERUtnSkVKMEJJUUlNRUFzZ0EwRUVOZ0lBSUFOQm1BSnFJQVFnQXhDb0NSQ2RBU0VDREE4TElBTkJBallDQUNBRFFaZ0NhaUFFSUFNUXFBa1FuUUVoQWd3T0N5QURRUUUyQWdBZ0EwR1lBbW9nQkNBREVLZ0pFSjBCSVFJTURRc2dBMEd3QVdwQkJSRDBCeUVDREF3TElBTkJzQUZxUVFRUTlBY2hBZ3dMQ3lBRFFiQUJha0VERVBRSElRSU1DZ3NnQTBHd0FXcEJBaEQwQnlFQ0RBa0xJQU5Cc0FGcVFRRVE5QWNoQWd3SUN5QURRYkFCYWtFQUVQUUhJUUlNQndzZ0EwRUJOZ0lBSUFOQm1BSnFJQVFnQXhEOUN4Q2RBU0VDREFZTElBTkJBRFlDQUNBRFFaZ0NhaUFFSUFNUS9Rc1FuUUVoQWd3RkMwRUFJUUlnQTBHQUFtcEJBa0VERUtnRklnVkZEUVFnQUNBRktBSk1LQUlBRUtNZUlnRkZEUVFnQXlBQktBSVFJZ0UyQXJBQ0lBQWdCU2dDVENnQ0JCQ3ZDU0lJUlEwQUlBTWdDQ2dDRURZQ3FBSWdBeUFCUVFScklnRkJCRTBFZnlBQlFRSjBRY3ovREdvb0FnQUZRUUlMTmdMTUFpQUZLQUpRUVFOUEJFQWdBQ0FGS0FKTUtBSUlFTjhRSWdGRkRRRWdBeUFCS0FJUU5nTE1BZ3NnQUVHc0hXb2hCaUFFSUFOQnFBSnFJQU5Cc0FKcUlBTkJ6QUpxRUpJUklRRWpBRUVnYXlJRUpBQUNmeUFCS0FJY0lnZEZCRUFnQmlBRVFSQnFRZlBaQkJBVUlnWWdCVUVRYWhBbklBWVFEeHBCQUF3QkN5QUhRUWRHSUFVb0FsQkJBMGx5UlFSQUlBWWdCRUVRYWtHcXpBUVFGQ0lHSUFWQkVHb1FKeUFHRUE4YVFRQU1BUXNnQVNnQ0lDRUtJQUVvQWhnaEN5QUVRUUE2QUF3Z0JFSEFuQ0EyQWdnZ0JpQUxJQW9nQnlBRVFRaHFJQVZCRUdvUXlCd0xJUVVnQkVFZ2FpUUFJQVZGRFFRZ0FDQURLQUt3QWlBREtBS29BaUFJS0FJSVFSQnFFT2dFQkVBZ0FTRUNEQVVMSUFOQndBSnFJZ1FnQVJDNEd5QURRZGVxQ2lBRUVEVWdBQ0FESUFNb0FxUUNRUkJxRUlZQklBTVFEeG9nQkJBUEdnd0VDMEVBSVFJTUF3dEJBQ0VDSUFOQmdBSnFRUUZCQUJDb0JTSUJSUTBDSUFBZ0FTZ0NUQ2dDQUJDdkNTSUVSUTBDSUFNZ0JDZ0NFRFlDQUNBQUtBSUFJQU1RL3gwaUFpRVhRUUFoRlNBQVFhd2RhaUVFSXdCQkVHc2lBQ1FBSUFJb0FoZ1E4d2NpQWtVRVFDQUVJQUJCeGJrQkVCUWlCQ0FCS0FKTUtBSUFRUkJxRUNjZ0JCQVBHZ3NnQUVFUWFpUUFJQmNnRlNBQ0d5RUNEQUlMUVFBaEFnc2dBQ0FQTmdLWU5DQUtFSzRFQ3lBRFFkQUNhaVFBSUFJTG1RRUJCSDhnQUJBY0l3QkJJR3NpQWlRQUlBSkJFR29nQVNnQ0FCRElDeUlES0FJSUlRUWdBaUFETmdJTUlBSWdCRFlDQ0FKQUlBQkJRR3NpQTBFY2FpSUZJQUpCQ0dvUW9Ra2lBQVJBSUFBb0Fnd2hBQXdCQ3lBRElBTVEvQU1nQVNnQ0FCRElDeUlBRUNnZ0F5QURLQUlZUVFGcU5nSVlJQUlnQURZQ0RDQUNJQVEyQWdnZ0JTQUNRUWhxRUtBSkN5QUNRU0JxSkFBZ0FBdFVBUU4vSXdCQkVHc2lBU1FBSUFBb0FnZ2hBaUFBS0FJQUlRTWdBQ2dDQkNnQ0FDRUFJQUZCQ3pZQ0RDQUJRYVBwQURZQ0NDQUJJQUVwQXdnM0F3QWdBeUFBUVJCcUlBSWdBUkNGSGlBQlFSQnFKQUFMYVFFRGZ5TUFRUkJySWdRa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdNMkFnd2dCQ0FETmdJSUlBQkJqQUZxSWdNUXZ3RWlCU0FBS0FJSUlBUW9BZ2dnQVNBQ0tBSUFFSlllR2lBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JTRUFJQVJCRUdva0FDQUFDNmNCQVFSL0l3QkJvQUZySWdNa0FDQUFLQUlBSWdJUUhDQUNRZVFCYWlBQkVMSUtJZ1JGQkVBZ0FDZ0NBQ0lBRUJ3Z0EwSDlyQU5CTTBFSUlBQkJ5QUpxRUJjaUFrRVlha0dtbGdrUURob2dBaUFCS0FJRVFRUnFFSm9CSWdWQkdHb2lBRUhjOFF3UURob2dBRUdENUFzUURob2dCVUVRYWlBQlFSQnFFSzRESUFCQjIvZ01FQTRhSUFCQjhQVUxFQTRhSUFBZ0FSRGRBeUFDRUJnTElBTkJvQUZxSkFBZ0JBdVpBZ0VIZnlNQVFjQUJheUlESkFBZ0EwRzRBV29nQVNBQ0VQUUxJQUVvQXNRQklnVkJBV3NoQmlBQ0tBSUFJUWNnQVNnQ3dBRWhDQ0FES0FLOEFTRUpJQU1vQXJnQklRSkJBQ0VCQWtBRFFDQUJJQVZIQkVBZ0NDQUNRUVIwYWlJRUxRQUVSUVJBSUFCQkFEWUNCQ0FBUVFBNkFBQU1Bd3NDUUNBRUtBSUlJQWxIRFFBZ0J5QUVLQUlBUncwQUlBQWdBallDQkNBQVFRRTZBQUFNQXdzZ0FTQUVLQUlNU3dSQUlBQkJBRFlDQkNBQVFRQTZBQUFNQXdVZ0FrRUJha0VBSUFJZ0JrY2JJUUlnQVVFQmFpRUJEQUlMQUFzTElBTkJDR3BCaHJVRFFaNEVRUTRnQTBHb0FXb1FIU0lCRUJjaUFrRVlha0hTTlJBT0dpQUNFQmdnQUVFQU5nSUVJQUJCQURvQUFDQUJFQjRMSUFOQndBRnFKQUFMUlFFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FDZ0NBQ2dDQUNFQklBSWdBQ2dDQkJDTkhqWUNDQ0FCSUFKQkNHb2dBa0VNYWhDZkFpRUFJQUpCRUdva0FDQUFDdzBBSUFBb0FnQW9BZ0FRNUFFTGl3RUJBWDhnQUNnQ0JDSUNCRUFnQWlnQ0FDQUJFRmRCQVVFQlFkV2VDRUhRcHdOQjhBQVFTd3NnQUNBQkVNMERJZ0ZGQkVCQkFBOExRUUFoQWdKQUlBRkZEUUFnQVVFQUlBRUVmeUFCS0FJRUVOMEZCVUVBQ3hzaUFnMEFJQUFnQVVIbzZnOFE0UVJCQUNFQ0N5QUFLQUlBS0FJSUlBSVFWMEVCUVFGQm9ac0lRZENuQTBIMEFCQkxJQUlMRFFBZ0FDZ0NBQ2dDQUJEVUFndGVBUUovSXdCQkVHc2lBaVFBQWtBZ0FVVU5BQ0FCUVFBZ0FRUi9JQUVvQWdRUTNSMEZRUUFMR3lJRERRQWdBa0VTTmdJTUlBSkJwb2tFTmdJSUlBSWdBaWtEQ0RjREFDQUFJQUVnQWhDbUJVRUFJUU1MSUFKQkVHb2tBQ0FEQ3hjQUlBQkJBQ0FBQkg4Z0FDZ0NCQkRoSFFWQkFBc2JDeElBSUFCQmlJOE1RZGtMUWJlYkJSREREQXRSQVFKL0l3QkJFR3NpQkNRQUlBQW9BZ0FoQlNBRUlBTTJBZ3dnQkNBQk5nSUlJQVVnQkVFSWFpSUJFUGtGSUFBb0FnQWhBQ0FFSUFNMkFnd2dCQ0FDTmdJSUlBQWdBUkQ1QlNBRVFSQnFKQUFMd2dZQ0NIOENmaU1BUWNBQmF5SUZKQUFnQVNnQzlBRWdBU2dDL0FFaUJFR1dBV3hCbGdGcVFlUUFia2tFUUNNQVFlQUFheUlHSkFCQkRDQUVRUUYwUVFKcVFaWUJiRUhrQUc0aUJDQUVRUXhOR3lJSElBRW9BdlFCU3dSQUlBWkNnSUNBZ0lBQk53SlVJQVlnQmtFUWFpSUVOZ0pRSUFRZ0FTZ0MvQUVRc1FRZ0FTZ0M4QUVpQkNBQktBTDBBVUVVYkdvaENBTkFBa0FnQkNBSVJnUkFJQUVRc2dVZ0FTQUhFUE1FSUFZb0FsQWlCQ0FHS0FKVVFRTjBhaUVIREFFTElBUXRBQWdFUUNBR1FSQnFJQVFRdWdJUXNRVUxJQVJCRkdvaEJBd0JDd3NEUUNBRUlBZEhCRUFnQmtFSWFpQUJJQVFnQkVFRWFoQ1VIaUFFUVFocUlRUU1BUXNMSUFaQkVHb1FsUUVMSUFaQjRBQnFKQUFMSUFWQnVBRnFJQUVnQWhEeUJDQUJLQUwwQVNJS1FRRnJJUXNnQWlnQ0FDRUhJQUVvQXZBQklRZ2dCU2dDdkFFaENTQUZLQUs0QVNFR1FRQWhBZ0pBQTBBZ0FpQUtSd1JBSUFnZ0JrRVViR29pQkMwQUNFVUVRQ0FES0FJQUlRTWdCRUVCT2dBSUlBUWdBellDQkNBRUlBYzJBZ0FnQlNnQ3ZBRWhBeUFJSUFaQkZHeHFJZ1lnQWpZQ0VDQUdJQU0yQWd3Z0FTQUJLQUw4QVVFQmFqWUMvQUVnQVNBQktBS0FBa0VCYWpZQ2dBSWdBQ0FFUVFScU5nSUVJQUJCQURZQ0FBd0RDd0pBSUFRb0Fnd2dDVWNOQUNBSElBUW9BZ0JIRFFBZ0FFRUNOZ0lBSUFBZ0JFRUVhallDQkF3REN5QUNJQVFvQWhCTEJFQWdBeWdDQUNFRElBVkJBVG9BcUFFZ0JTQUNOZ0t3QVNBRklBTTJBcVFCSUFVZ0J6WUNvQUVnQlNBSk5nS3NBU0FGSUFJMkFoQWdCU0FGS1FPb0FTSU1Od01JSUFVZ0JTa0RvQUVpRFRjREFDQUZJQVFvQWhBMkFyQUJJQVVnQkNrQ0NEY0RxQUVnQlNBRUtRSUFOd09nQVNBRUlBSTJBaEFnQkNBTk53SUFJQVFnRERjQ0NDQUZJQVVvQXJBQlFRRnFOZ0t3QVNBQklBWkJBV29nQVNnQzlBRndJQVZCb0FGcUVMSUVJQUVnQVNnQy9BRkJBV28yQXZ3QklBRWdBU2dDZ0FKQkFXbzJBb0FDSUFBZ0JFRUVhallDQkNBQVFRQTJBZ0FNQXdVZ0JrRUJha0VBSUFZZ0MwY2JJUVlnQWtFQmFpRUNEQUlMQUFzTElBVkJoclVEUWVzRFFRNGdCVUdnQVdvUUhTSUJFQmNpQWtFWWFrR1dOUkFPR2lBQ0VCZ2dBRUlBTndJQUlBRVFIZ3NnQlVIQUFXb2tBQXM0QUNBQUVCd2dBRUdvQVdvaUFDQUFFUEVGSUFFb0FnQWdBaWdDQUNBREtBSUFFTmNMSWdFUUtDQUFJQUFvQWhoQkFXbzJBaGdnQVFzbkFDQUFJQUVnQWlBRElBUkJ6cEVGUWN2T0NFSGd2Z2hCMlBJUFFlenlEMEc0OGc4UXlRd0xsUW9CQ0g4akFFSFFBR3NpQWlRQUlBQW9BZ0FoQXlBQ0lBRkJBQ0FCS0FJRVFianpEMFliTmdKQUlBTWdBa0ZBYXlBQVFaQTBhaUFBUVlnMGFoQ1ZIaUVJSUFBb0FnQWlBeEFjSUFOQjVBRnFJQUVnQ0JDNUFTQUFRYmdkYWlJSkVJMENJQUJCckIxcUlRY0NRQUpBQWtBQ1FDQUJLQUlFSWdOQnVQTVBSZ1JBSUFGQjRBQnFJZ1lvQWdBaUF5QUJLQUprUVFKMGFpRUZBa0FEUUNBRElBVkdEUUVnQUNBREtBSUFJZ1FRTXhvQ1FDQUVSUTBBSUFRb0FnUkJrSUlTUncwQUlBQWdCRUVrYWhCRElBTkJCR29oQXd3QkN3c2dBa0VRTmdKRUlBSkJnNGNCTmdKQUlBSWdBaWtEUURjREFDQUFJQVFnQWhCQURBUUxJQUpCQURvQU5DQUNJQVkyQWpBZ0J5QUNRVEJxRUVFTkFRd0RDeUFEUWRpRUVrWUVRQ0FCUVRocUlnWW9BZ0FpQXlBQktBSThRUUowYWlFRkFrQURRQ0FESUFWR0RRRWdBQ0FES0FJQUlnUVFNeG9DUUNBRVJRMEFJQVFvQWdSQmtJSVNSdzBBSUFBZ0JFRWthaEJESUFOQkJHb2hBd3dCQ3dzZ0FrRU9OZ0pFSUFKQjVJWUJOZ0pBSUFJZ0Fpa0RRRGNEQ0NBQUlBUWdBa0VJYWhCQURBUUxJQUpCQURvQU5DQUNJQVkyQWpBZ0J5QUNRVEJxRUVGRkRRTU1BUXNnQTBHNDhBOUdCRUFnQVVFMGFpSUdLQUlBSWdNZ0FTZ0NPRUVDZEdvaEJRSkFBMEFnQXlBRlJnMEJJQUFnQXlnQ0FDSUVFRE1hQWtBZ0JFVU5BQ0FFS0FJRVFaQ0NFa2NOQUNBQUlBUkJKR29RUXlBRFFRUnFJUU1NQVFzTElBSkJEVFlDUkNBQ1FhYUhBVFlDUUNBQ0lBSXBBMEEzQXhBZ0FDQUVJQUpCRUdvUVFBd0VDeUFDUVFBNkFEUWdBaUFHTmdJd0lBY2dBa0V3YWhCQlJRMEREQUVMSUFOQitQQVBSZ1JBSUFGQk1Hb2lCaWdDQUNJRElBRW9BalJCQW5ScUlRVUNRQU5BSUFNZ0JVWU5BU0FBSUFNb0FnQWlCQkF6R2dKQUlBUkZEUUFnQkNnQ0JFR1FnaEpIRFFBZ0FDQUVRU1JxRUVNZ0EwRUVhaUVEREFFTEN5QUNRUTgyQWtRZ0FrSHpoZ0UyQWtBZ0FpQUNLUU5BTndNWUlBQWdCQ0FDUVJocUVFQU1CQXNnQWtFQU9nQTBJQUlnQmpZQ01DQUhJQUpCTUdvUVFVVU5Bd3dCQ3lBRFFmanhEMFlFUUNBQlFjZ0FhaUlHS0FJQUlnTWdBU2dDVEVFQ2RHb2hCUUpBQTBBZ0F5QUZSZzBCSUFBZ0F5Z0NBQ0lFRURNYUFrQWdCRVVOQUNBRUtBSUVRWkNDRWtjTkFDQUFJQVJCSkdvUVF5QURRUVJxSVFNTUFRc0xJQUpCRVRZQ1JDQUNRWlNIQVRZQ1FDQUNJQUlwQTBBM0F5QWdBQ0FFSUFKQklHb1FRQXdFQ3lBQ1FRQTZBRFFnQWlBR05nSXdJQWNnQWtFd2FoQkJSUTBEREFFTElBTkJpSVVTUncwQklBRkJNR29pQmlnQ0FDSURJQUVvQWpSQkFuUnFJUVVDUUFOQUlBTWdCVVlOQVNBQUlBTW9BZ0FpQkJBekdnSkFJQVJGRFFBZ0JDZ0NCRUdRZ2hKSERRQWdBQ0FFUVNScUVFTWdBMEVFYWlFRERBRUxDeUFDUVJBMkFrUWdBa0cwaHdFMkFrQWdBaUFDS1FOQU53TW9JQUFnQkNBQ1FTaHFFRUFNQXdzZ0FrRUFPZ0EwSUFJZ0JqWUNNQ0FISUFKQk1Hb1FRVVVOQWdzZ0FDQUlFSXdDQ3lBQUtBS01OQ0VISUFBZ0NEWUNqRFFnQUNBSUlBQW9BcEEwSWdRZ0NCczJBcEEwSUFBZ0FDZ0NsRFFpQmtFQmFpSUROZ0tVTkFKL0lBTkJnQUZQQkVBZ0FrRXdhaUlEUWY4QUVGOGdBa0ZBYXlJRlFhYXNDaUFERURVZ0FDQUZJQUZCRUdvUUp5QUZFQThhSUFNUUR4cEJBQXdCQ3lBQ0lBRkJ4QUJxTmdKQUlBSkJBRG9BUkNBSVFRQWdBQ0FDUVVCckVOb0dHd3NoQXlBQUlBUTJBcEEwSUFBZ0JqWUNsRFFnQUNBSE5nS01OQXdCQzBFQUlRTUxJQWtRaXdJZ0FrSFFBR29rQUNBREN5VUFJQUFRNUIwZ0FFRU1FTVVRSUFCQkFEWUMzQVVnQUNBQUtBTGdCVUVCYWpZQzRBVUxnZ0VCQkg4akFFRWdheUlCSkFBZ0FVRUlhaENwR3lJQ0tBSUlJUU1nQVNBQ05nSUVJQUVnQXpZQ0FBSkFJQUJCSEdvaUJDQUJFTDBCSWdJRVFDQUNLQUlNSVFBTUFRc2dBQ0FBRUxRRUVLa2JJZ0lRS0NBQUlBQW9BaGhCQVdvMkFoZ2dBU0FDSWdBMkFnUWdBU0FETmdJQUlBUWdBUkM4QVFzZ0FVRWdhaVFBSUFBTEtBQWdBRUlBTndLY0FTQUFRb0NBZ0lEZ0FEY0NsQUVnQUNBQU5nS1FBU0FBUVFZUXRSQWdBQXRnQVFGL0lBQW9BZ1FpQWdSQUlBSW9BZ0FnQVJCWFFRRkJBVUhWbmdoQjBLY0RRZkFBRUVzTElBQWdBUkROQXlJQlJRUkFRUUFQQ3lBQUlBRVEyd1loQVNBQUtBSUFLQUlJSUFFUVYwRUJRUUZCb1pzSVFkQ25BMEgwQUJCTElBRUxLd0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRTJBZ3dnQWlBQVFmQUFhaUFDUVF4cUVKWUJJQUpCRUdva0FBc3VBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FCSUFBMkFsZ2dBRUVNYWlBQ1FReHFFQ1FnQWtFUWFpUUFDOThIQVFoL0l3QkI0QUZySWdna0FDQUJLQUxVQlNJRklBRW9BdHdGSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVHZ0Eyc2lCaVFBUVF3Z0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRU1UUnNpQ1NBQktBTFVCVXNFUUNBR1FvQ0FnSUNBQVRjQ2xBTWdCaUFHUVJCcUlnUTJBcEFESUFRZ0FTZ0MzQVVRcGgwZ0FTZ0MwQVVpQkNBQktBTFVCVUU4YkdvaENnTkFBa0FnQkNBS1JnUkFJQUVRbUI0Z0FTQUpFTVVRSUFZb0FwQURJZ1FnQmlnQ2xBTkJNR3hxSVFVTUFRc2dCQzBBTUFSQUlBUVFwUjBoQ3lBR1FSQnFJZ1VvQW9RRElnY2dCU2dDaUFOUEJFQWdCU0FGS0FLSUF5SUhRUUYwUVFJZ0J4c1FwaDBnQlNnQ2hBTWhCd3NnQlNBSFFRRnFOZ0tFQXlBRktBS0FBeUFIUVRCc2FpQUxFUGdMR2dzZ0JFRThhaUVFREFFTEN3TkFJQVFnQlVjRVFDQUdRUWhxSUFFZ0JDQUVRUnhxRUo0ZUlBUkJNR29oQkF3QkN3c2dCa0VRYWlFRVFRQWhCUU5BSUFRb0FvUURJQVZOQkVBZ0JFRUFOZ0tFQXdVZ0JDZ0NnQU1hSUFWQkFXb2hCUXdCQ3dzZ0JDQUVLQUtBQXhBMkN5QUdRYUFEYWlRQUlBRW9BdFFGSVFVTElBSW9BZ0FoQnlBSUlBTTJBdHdCSUFnZ0FqWUMyQUVnQlVFQmF5RUpJQWNnQlhBaEJFRUFJUU1DUUFOQUlBTWdCVWNFUUNBQktBTFFCU0lLSUFSQlBHeHFJZ1l0QURCRkJFQWdDRUVJYWlJQ0lBaEIyQUZxRUtrZElBWVFwQjBnQmlBQ0VNUVFJQW9nQkVFOGJHb2lBaUFETmdJNElBSWdCellDTkNBQklBRW9BdHdGUVFGcU5nTGNCU0FCSUFFb0F1QUZRUUZxTmdMZ0JTQUFJQVpCSEdvMkFnUWdBRUVBTmdJQURBTUxJQWNnQmlnQ05FWUVmeUFDSUFZUXRnSUZRUUFMQkVBZ0FFRUNOZ0lBSUFBZ0JrRWNhallDQkF3REN5QURJQVlvQWpoTEJFQWdDRUdvQVdvaUFpQUlRZGdCYWhDcEhTQUlRUWhxSUFJUStBc2lBa0VCT2dBd0lBSWdBellDT0NBQ0lBYzJBalFnQWlBR0VLY2RJQUlnQWlnQ09FRUJhallDT0NBRVFRRnFJQUVvQXRRRmNDRURRUUFoQkNBQktBTFVCU0lIUVFGcklRa0NRQU5BSUFRZ0IwWU5BU0FCS0FMUUJTQURRVHhzYWlJRkxRQXdCRUFnQWlBQ0tBSTRJZ29nQlNnQ09Fc0VmeUFGSUFJUXB4MGdBaWdDT0FVZ0NndEJBV28yQWpnZ0EwRUJha0VBSUFNZ0NVY2JJUU1nQkVFQmFpRUVEQUVMQ3lBRklBSVFzeEFMSUFFZ0FTZ0MzQVZCQVdvMkF0d0ZJQUVnQVNnQzRBVkJBV28yQXVBRklBQWdCa0VjYWpZQ0JDQUFRUUEyQWdBZ0FoQ2tDUXdEQlNBRVFRRnFRUUFnQkNBSlJ4c2hCQ0FEUVFGcUlRTU1BZ3NBQ3dzZ0NFRUlha0dHdFFOQjZ3TkJEaUFJUWFnQmFoQWRJZ0VRRnlJQ1FSaHFRWlkxRUE0YUlBSVFHQ0FBUWdBM0FnQWdBUkFlQ3lBSVFlQUJhaVFBQ3hrQUlBQWdBUkNlRENJQVFSeHFJQUZCSEdvUXdRc2FJQUFMTlFFQmZ3SkFJQUZGRFFBZ0FTZ0NEQ0lCSUFBb0FnUWdBQ2dDQUNJQWEwRUNkVThOQUNBQUlBRkJBblJxS0FJQUlRSUxJQUlML2dFQkJuOGpBRUd3QVdzaUF5UUFJQUVvQXZRQklnVkJBV3NoQnlBQ0x3RUFJZ1lnQlhBaEFpQUJLQUx3QVNFSVFRQWhBUUpBQTBBZ0FTQUZSd1JBSUFnZ0FrRVViR29pQkMwQUNFVUVRQ0FBUVFBMkFnUWdBRUVBT2dBQURBTUxBa0FnQkNnQ0RDQUdSdzBBSUFZZ0JDOEJBRWNOQUNBQUlBSTJBZ1FnQUVFQk9nQUFEQU1MSUFFZ0JDZ0NFRXNFUUNBQVFRQTJBZ1FnQUVFQU9nQUFEQU1GSUFKQkFXcEJBQ0FDSUFkSEd5RUNJQUZCQVdvaEFRd0NDd0FMQ3lBRFFZYTFBMEdlQkVFT0lBTkJvQUZxRUIwaUFSQVhJZ0pCR0dwQjBqVVFEaG9nQWhBWUlBQkJBRFlDQkNBQVFRQTZBQUFnQVJBZUN5QURRYkFCYWlRQUMxZ0JBMzhqQUVFZ2F5SUJKQUFnQUNnQ0FDRURJQUVnQUNnQ0JDZ0NBQ2dDSkVFa2FoQlRJQUZCRUdvaUFrR2YrQWtnQVJBMUlBTWdBaUFBS0FJRUtBSUFRUkJxRUlZQklBSVFEeG9nQVJBUEdpQUJRU0JxSkFBTG9RRUJBbjhnQUNBQk5nTDRPU0FBUVlRNmFrS0lnSUNBZ0FFM0FnQWdBRUdBT21wQmdJY1NOZ0lBSUFCQi9EbHFRY2pjQkRZQ0FDQUFRYWdkYWlFRElBQWdBUkNxQlNFQUl3QkJFR3NpQVNRQUFrQWdBRVVOQUNBQVFRQWdBQVIvSUFBb0FnUVE0aDBGUVFBTEd5SUNEUUFnQVVFTk5nSU1JQUZCeU53RU5nSUlJQUVnQVNrRENEY0RBQ0FESUFBZ0FSQ21CVUVBSVFJTElBRkJFR29rQUNBQ0M2a0dBZ2QvQW40akFFSEFBV3NpQlNRQUlBRW9BdlFCSWdnZ0FTZ0MvQUVpQkVHV0FXeEJsZ0ZxUWVRQWJra0VRQ01BUWVBQWF5SUdKQUJCRENBRVFRRjBRUUpxUVpZQmJFSGtBRzRpQkNBRVFReE5HeUlISUFFb0F2UUJTd1JBSUFaQ2dJQ0FnSUFCTndKVUlBWWdCa0VRYWlJRU5nSlFJQVFnQVNnQy9BRVFzUVFnQVNnQzhBRWlCQ0FCS0FMMEFVRVViR29oQ0FOQUFrQWdCQ0FJUmdSQUlBRVFzZ1VnQVNBSEVQTUVJQVlvQWxBaUJDQUdLQUpVUVFOMGFpRUhEQUVMSUFRdEFBZ0VRQ0FHUVJCcUlBUVF1Z0lRc1FVTElBUkJGR29oQkF3QkN3c0RRQ0FFSUFkSEJFQWdCa0VJYWlBQklBUWdCRUVFYWhDa0hpQUVRUWhxSVFRTUFRc0xJQVpCRUdvUWxRRUxJQVpCNEFCcUpBQWdBU2dDOUFFaENBc2dDRUVCYXlFS0lBSXZBUUFpQmlBSWNDRUhJQUVvQXZBQklRbEJBQ0VDQWtBRFFDQUNJQWhIQkVBZ0NTQUhRUlJzYWlJRUxRQUlSUVJBSUFNb0FnQWhBeUFFUVFFNkFBZ2dCQ0FETmdJRUlBUWdCallDQUNBSklBZEJGR3hxSWdNZ0FqWUNFQ0FESUFZMkFnd2dBU0FCS0FMOEFVRUJhallDL0FFZ0FTQUJLQUtBQWtFQmFqWUNnQUlnQUNBRVFRUnFOZ0lFSUFCQkFEWUNBQXdEQ3dKQUlBUW9BZ3dnQmtjTkFDQUdJQVF2QVFCSERRQWdBRUVDTmdJQUlBQWdCRUVFYWpZQ0JBd0RDeUFDSUFRb0FoQkxCRUFnQXlnQ0FDRURJQVZCQVRvQXNBRWdCU0FDTmdLNEFTQUZJQU0yQXF3QklBVWdCallDcUFFZ0JTQUdOZ0swQVNBRklBSTJBaGdnQlNBRktRT3dBU0lMTndNUUlBVWdCU2tEcUFFaUREY0RDQ0FGSUFRb0FoQTJBcmdCSUFVZ0JDa0NDRGNEc0FFZ0JTQUVLUUlBTndPb0FTQUVJQUkyQWhBZ0JDQU1Od0lBSUFRZ0N6Y0NDQ0FGSUFVb0FyZ0JRUUZxTmdLNEFTQUJJQWRCQVdvZ0FTZ0M5QUZ3SUFWQnFBRnFFTElFSUFFZ0FTZ0MvQUZCQVdvMkF2d0JJQUVnQVNnQ2dBSkJBV28yQW9BQ0lBQWdCRUVFYWpZQ0JDQUFRUUEyQWdBTUF3VWdCMEVCYWtFQUlBY2dDa2NiSVFjZ0FrRUJhaUVDREFJTEFBc0xJQVZCQ0dwQmhyVURRZXNEUVE0Z0JVR29BV29RSFNJQkVCY2lBa0VZYWtHV05SQU9HaUFDRUJnZ0FFSUFOd0lBSUFFUUhnc2dCVUhBQVdva0FBdXlBUUlDZndGK0FrQWdBVVVOQUNBQkVOa1FJZ0lOQUNNQVFVQnFJZ0lrQUNBQ1FRVTJBandnQWtITDFBTTJBamdnQWlBQ0tRTTROd01JSUFBZ0FTQUNRUWhxRUtZRkFrQWdBUkRZRUNJQlJRMEFJQUVvQWdnaUFTZ0NCRUg0N1E5SElBRkZjZzBBSUFKQktHcEJuOThHRUJRaEF5QUJLUUlZSVFRZ0FpQUJLQUlnTmdJZ0lBSWdCRGNER0NBQ0lBUTNBeEFnQUNBRElBSkJFR29RL0FFZ0F4QVBHZ3NnQWtGQWF5UUFRUUFoQWdzZ0FndkFBd0VEZnlNQVFTQnJJZ1FrQUNBRUlBQTJBaEFnQkNBQU5nSUlJQVFnQURZQ0FDQUVJQVJCQ0dvMkFnUUNRQ0FCUlEwQUlBRW9BZ1FpQmtIUW9CSkdCRUFnQWlJRkRRRWdCRUVRYWhDUEhpRUZEQUVMSUFaQjhKOFNSZ1JBSUFJaUJRMEJJQVJCQ0dvUWpSNGhCUXdCQ3lBR0VKRURCRUFnQVNnQ0dDSURSUTBCSUFNb0FnUWlBMEhRb0JKR0JFQWdBaUlGRFFJZ0JDQUJLQUljTmdJY0lBQW9BZ0FoQUNBRUlBUkJFR29Rang0MkFoZ2dBQ0FFUVJocUlBUkJIR29RbndJaEJRd0NDeUFEUWZDZkVrY05BU0FDSWdVTkFTQUVJQUVvQWh3UWpCNGhCUXdCQ3lBR1FmQ3FFa1lFUUNBQktBSVlJZ05GRFFFZ0F5Z0NCRUh3bnhKSERRRWdBaUlGRFFFZ0FTZ0NJQ0VDSUFRZ0FTZ0NKRFlDSENBQUtBSUFJUUFnQkNBRUlBSVFqQjQyQWhnZ0FDQUVRUmhxSUFSQkhHb1F3QWtoQlF3QkN5QUdRWkNpRWtZRVFDQUFJQUVvQWhnQ2YwRUFJQUpGRFFBYVFRQWdBaWdDQkVHUW9oSkhEUUFhSUFJb0FoZ0xJQU1RcGg0aUFrVU5BU0FBSUFNZ0F5QURJQUlnQVNnQ0hFRUFFTllRSVFVTUFRc2dCaERtQTBVTkFDQUJLQUtRQVVVTkFDQUNJZ1VOQUNBQktBS01BU2dDQUNFRkN5QUVRU0JxSkFBZ0JRc2RBQ0FBUWRRQWFoQ29BU0FBUWNRQWFoQ29BU0FBUVNocUVGNGdBQXNmQUNBQUlBRW9BZ3dRNUJBZ0FDZ0NBQ0FCS0FJTVFRSjBhaUFDTmdJQUMwa0FJQUFRSENBQVFhZ0JhaUlBSUFBUXJoMGdBU2dDQUNBQ0tBSUFJQU1vQWdBZ0JDZ0NBQ0FGS0FJQUlBWW9BZ0JCQUJEdkd5SUJFQ2dnQUNBQUtBSVlRUUZxTmdJWUlBRUxyd0VCQW44Z0FCQWNJd0JCTUdzaUJpUUFJQUJCcUFGcUlnQVF1QkFoQnlBRktBSUFJUVVnQkNnQ0FDRUVJQU1vQWdBaEF5QUNLQUlBSVFJZ0FTZ0NBQ0VCSUFaQkFEb0FLQ0FHSUFZb0FpZzJBaEFnQmtFQU9nQWdJQVpCQURvQUhDQUdRUUE2QUJnZ0JpQUdLUU1nTndNSUlBWWdCaWtER0RjREFDQUFJQWNnQVNBQ0lBTWdCQ0FGUVFBZ0JrRUlhaUFHRVBNUElnRVFLQ0FBSUFBb0FoaEJBV28yQWhnZ0JrRXdhaVFBSUFFTHd3UUJBWDhqQUVIQUFXc2lDQ1FBSUFnZ0FqWUNzQUVnQ0NBQk5nSzRBU0FBSUFnb0FyZ0JJQWdvQXJBQklBTVE1UVFpQUVINDhRODJBZ1FnQUVHczhnODJBZ0FnQUNBRU5nSWtJQUJCbVBJUE5nSUFJQUJCS0dvZ0JSRHBCaUFBUWNRQWFpQUdFTG9KSUFCQjFBQnFJQWNRdWdrZ0FDZ0NKQ0lCQkg4Z0FRVWdDRUhKa3dWQkpVRUFJQWhCb0FGcUVCMGlBUkFYSWdKQkdHcEI3ckFJRUE0YUlBSVFHQ0FCRUI0Z0FDZ0NKQXNRVnlBQUtBSUlRUUZCQUVIYXlBaEJ5Wk1GUVNZUVN5QUFLQUk0SWdJZ0FDZ0NQRUVDZEdvaEFTQUlRUmhxSVFNRFFDQUJJQUpHQkVBZ0FDZ0NTQ0lDSUFBb0FreEJBblJxSVFFZ0NFRVlhaUVEQTBBQ1FDQUJJQUpHQkVBZ0FDZ0NXQ0lDSUFBb0FseEJBblJxSVFFZ0NFRVlhaUVEQTBBZ0FTQUNSZzBDSUFJb0FnQWlCRVVFUUNBSVFjbVRCVUV3UVFBZ0NFR2dBV29RSFNJRkVCY2hCaUFEUVptbkNCQU9HaUFHRUJnZ0JSQWVDeUFFRUZjZ0FDZ0NDRUVCUVFCQjNjUUlRY21UQlVFeEVFc2dBa0VFYWlFQ0RBQUxBQXNnQWlnQ0FDSUVSUVJBSUFoQnlaTUZRU3hCQUNBSVFhQUJhaEFkSWdVUUZ5RUdJQU5CbWFjSUVBNGFJQVlRR0NBRkVCNExJQVFRVnlBQUtBSUlRUUZCQUVIZHhBaEJ5Wk1GUVMwUVN5QUNRUVJxSVFJTUFRc0xJQWhCd0FGcUpBQWdBQThMSUFJb0FnQWlCRVVFUUNBSVFjbVRCVUVvUVFBZ0NFR2dBV29RSFNJRkVCY2hCaUFEUWVxZENCQU9HaUFHRUJnZ0JSQWVDeUFFRUZjZ0FDZ0NDRUVCUVFCQnBjSUlRY21UQlVFcEVFc2dBa0VFYWlFQ0RBQUxBQXZmSHdJS2Z3SitJd0JCRUdzaUNTUUFJQWtnQVRZQ0RDQUFJQUVvQWlRUU14b2dDU0FBTmdJQUlBa2dDVUVNYWpZQ0JBSi9JQUVvQWdRaUEwSFkrQkZHQkVBakFFSHdBR3NpQXlRQUlBTWdBVFlDWENBRFFRQTJBbGdDUUFKQUlBRW9BaWdpQlFSQUlBTWdBQ0FGRU5BRElnUTJBbGdnQkVVTkFRc0NRQUpBSUFFb0Fpd0VRQ0FBS0FMQUt5RUZJQUJCQWtFRElBSWJOZ0xBS3lBQVFjUXJhaUlHS0FJQUlRY2dCa0hUMXdFMkFnQWdBQ0FBSUFBZ0FTZ0NMQkNGQWlBRUVKWUNFT01DSWdaRkRRRWdCRVVFUUNBRElBWW9BaFFpQkRZQ1dBc2dBQ0FITmdMRUt5QUFJQVUyQXNBckN5QUVSUVJBSUFBZ0EwSGdBR3BCOE5ZQkVCUWlBQ0FCUVJCcUVDY2dBQkFQR2d3REMwRUFJUVVnQTBFQU5nSlVBa0FnQVNnQ1JDSUhCRUFnQUNBSEVLTWVJZ1JGRFFVZ0F5QUVLQUlRSWdRMkFsUWdBaUFFUVFOR2NnMEJJQU5CQURvQVRDQURJQUZCT0dvMkFrZ2dBRUdzSFdvZ0EwSElBR3BCQWhDeEEwVU5BU0FBSUFOQjRBQnFRZExiQkJBVUlnQWdBVUVRYWhBbklBQVFEeG9NQlFzZ0FrVUVRQ0FEUVFNMkFsUU1BUXNnQkJDRUFSQ3RHMFVOQUNBRFFRUTJBbFFMSUFNQ2Z3Si9JQUVvQWtnaUJBUkFJQUFnQkJEZkVDSUVSUTBGSUFSQkVHb01BUXRCQWlBREtBSlVRUVJySWdSQkJFc05BUm9nQkVFQ2RFSE0vd3hxQ3lnQ0FBczJBa1FnQmdSQUlBQkJyQjFxSUFFZ0F5Z0NXQ0FHRU4wTFJRMEVDeUFESUFBb0FnQWdBMEhZQUdvZ0EwSFVBR29nQTBIRUFHb1FyUWtpQkRZQ1FDQUFJQU1vQWxRZ0JDQUJLQUlvSWdRZ0FTQUVHMEVRYWhEb0JFVUVRQ0FEUVRCcUlnSWdBU2dDSkVFa2FoQlRJQU5CNEFCcUlnUkIxZTRNSUFJUU5TQUFJQVFnQVVFUWFoQ0dBU0FFRUE4YUlBSVFEeG9NQXdzQ2Z5QUNCRUFnQXlnQ1ZDRUNRUUFoQnlBRFFRQTZBRFFnQTBFQU9nQXdJQU5CQURvQUxDQURRUUE2QUNnZ0EwRUFPZ0FrSUFOQkFEb0FJQ0FCS0FJNElnUWdBU2dDUEVFQ2RHb2hDQ0FDUVFGcklncEJBVXNoQlFOQUlBUWdDRWNFUUNBQUlBUW9BZ0FpQVJBekdpQUJSUTBGQWtBQ2Z5QUJLQUlFSWdKQnNQb1JSZ1JBSUFOQjRBQnFJZ0lnQUNBQkVONFFRUUVnQWhBd0RRRWFJQU5CNEFCcUVCb29BZ0FoQVVFQklRY2dBMEVCT2dBc0lBTWdBVFlDS0VFQURBRUxJQUpCd1BzUlJnUkFJQU5CNEFCcUlnSWdBQ0FCRU4wUVFRRWdBaEF3RFFFYUlBTkI0QUJxRUJvb0FnQWhBVUVCSVFzZ0EwRUJPZ0EwSUFNZ0FUWUNNRUVBREFFTElBSkJtUDBSUmdSQUlBVU5DQ0FEUWVBQWFpSUNJQUFnQVJDSURFRUJJQUlRTUEwQkdpQURRZUFBYWhBYUtBSUFJUUVnQTBFQk9nQWtJQU1nQVRZQ0lFRUFEQUVMSUFKQitQb1JSZ1JBSUFVTkNDQURRZUFBYWlJQ0lBQWdBUkNIRENBQ0VDdEJBWE1NQVFzZ0FrSFEvQkZHQkVBZ0JRMElJQU5CNEFCcUlnSWdBQ0FCRUlZTUlBSVFzZ0ZCQVhNTUFRc2dBa0dvZ2hKR0JFQWdDa0VDU1EwQ0RBZ0xJQUlROWdORkRRY2dBQ0FCRUt3RlFRRnpDdzBIQ3lBRVFRUnFJUVFNQVFzTElBTkJBRG9BYUNBRFFRQTZBR0FnQzBVZ0IwVnlSUVJBSUFOQk1Hb1F2Z0UxQWdBaERTQURRU2hxRUw0Qk5RSUFJUTRnQTBFQk9nQm9JQU1nRFNBT1FpQ0doRGNEWUFzZ0FDZ0NBQ0VDSUFOQkF6WUNGQ0FEUVFBMkFoQWdBaEFjSXdCQklHc2lBU1FBSUFKQnFBRnFJZ0lRdUJBaEJDQURLQUpFSVFVZ0F5Z0NWQ0VISUFNb0FoUWhDQ0FEUVVCcktBSUFJUW9nQXlnQ1hDRUxJQUVnQXlrQ0lDSU5Od01ZSUFFZ0F5Z0NhRFlDRUNBQklBTXBBbUEzQXdnZ0FTQU5Od01BSUFJZ0JDQUxJQW9nQ0NBSElBVkJBQ0FCUVFocUlBRVE4dzhpQkJBb0lBSWdBaWdDR0VFQmFqWUNHQ0FCUVNCcUpBQWdCQXdCQ3lBQktBSTRJZ1FnQVNnQ1BFRUNkR29oQWdOQUlBSWdCRWNFUUNBRElBUW9BZ0FpQVRZQ01DQUFJQUVRTXhvZ0F5Z0NNQ0VCSUFNZ0FEWUNZQ0FESUFOQk1HbzJBbVFDUUNBQkJFQWdBU2dDQkJEMkF3MEJDeU1BUVJCcklnQWtBQ0FES0FKZ0lRRWdBeWdDWkNnQ0FDRUNJQUJCRkRZQ0RDQUFRZW1BQ1RZQ0NDQUFJQUFwQXdnM0F3QWdBU0FDSUFBUVFDQUFRUkJxSkFBTUJnc2dCRUVFYWlFRUlBQWdBUkNzQlEwQkRBVUxDeUFBS0FJQUlRRWdBMEVETmdKZ0lBTkJBRFlDTUNBQklBTkIzQUJxSUFOQlFHc2dBMEhnQUdvZ0EwSFVBR29nQTBIRUFHb2dBRUdNTkdvUXFSNExJZ1VnQmpZQ0lDQUFLQUlBSWdBUUhDQUFRZVFCYWlBREtBSmNJQVVRdVFFTUF3c2dBQ0FITmdMRUt5QUFJQVUyQXNBckRBRUxJQU5CRWpZQ0hDQURRZjZBQ1RZQ0dDQURJQU1wQXhnM0F3Z2dBQ0FCSUFOQkNHb1FRQXRCQUNFRkN5QURRZkFBYWlRQUlBVU1BUXNnQTBIZytROUdCRUFqQUVFd2F5SURKQUFnQXlBQk5nSXNJQU5CQURZQ0tBSkFBa0FnQVNnQ0tDSUVCRUFnQXlBQUlBUVEwQU1pQmpZQ0tDQUdSUTBCQ3lBQktBSTRJZ1FnQVNnQ1BFRUNkR29oQndOQUlBUWdCMGNFUUNBRElBUW9BZ0FpQlRZQ0NDQUFJQVVRTXhvZ0F5Z0NDQ0VGSUFNZ0FEWUNHQ0FESUFOQkNHbzJBaHdDUUNBRkJFQWdCU2dDQkJEMkF3MEJDeU1BUVJCcklnQWtBQ0FES0FJWUlRRWdBeWdDSENnQ0FDRUNJQUJCRVRZQ0RDQUFRZkhkQWpZQ0NDQUFJQUFwQXdnM0F3QWdBU0FDSUFBUVFDQUFRUkJxSkFBTUF3c2dCRUVFYWlFRUlBQWdCUkNzQlEwQkRBSUxDeUFCS0FJc0lnVkZCRUFnQUNBRFFSaHFRWkRZQVJBVUlnQWdBVUVRYWhBbklBQVFEeG9NQVF0QkFDRUVJQUFnQUNBQUlBVVFoUUlnQmhDV0FoRGpBaUlGUlEwQklBWkZCRUFnQXlBRktBSVVFSVFCSWdZMkFpZ0xJQUJCckIxcUlBRWdCaUFGRU4wTFJRMEJJQUJCQUNBR0lBRkJFR29pQmhEb0JFVUVRQ0FEUVFocUlnSWdBU2dDSkVFa2FoQlRJQU5CR0dvaUFVRzY3Z3dnQWhBMUlBQWdBU0FHRUlZQklBRVFEeG9nQWhBUEdnd0NDeUFBS0FJQUlRRUNmeUFDQkVBZ0EwRUROZ0lZSUFOQkFEWUNDQ0FEUVFBMkFnUWdBMEVBTmdJQUlBRWdBMEVzYWlBRFFTaHFJQU5CR0dvZ0EwRUlhaUFEUVFScUVLb2VEQUVMSUFOQkF6WUNHQ0FEUVFBMkFnZ2dBMEVBTmdJRUlBTkJBRFlDQUNBQklBTkJMR29nQTBFb2FpQURRUmhxSUFOQkNHb2dBMEVFYWlBQVFZdzBhaENwSGdzaUJDQUZOZ0lnSUFBb0FnQWlBQkFjSUFCQjVBRnFJQU1vQWl3Z0JCQzVBUXdCQzBFQUlRUUxJQU5CTUdva0FDQUVEQUVMSUFOQjZQa1JSZ1JBSXdCQlFHb2lBaVFBSUFJZ0FUWUNIQ0FDUVFBMkFoZ0NRQUpBQWtBQ1FBSkFBbjhnQVNnQ0tDSURCRUFnQWlBQUlBTVEwQU1pQXpZQ0dDQURSUTBHSUFGQkxHb2dBU2dDTEEwQkdnd0NDeUFCS0FJc1JRMERRUUFoQXlBQlFTeHFDeUVFSUFBb0FzQXJJUVVnQUVFQ05nTEFLeUFBUWNRcmFpSUlLQUlBSVFjZ0NFRzcyQUUyQWdBZ0FDQUFJQVFvQWdBUWhRSWdBeENXQWlJRVJRMEJJQU5GQkVBZ0FpQUVLQUlVSWdNMkFoZ0xJQUFnQnpZQ3hDc2dBQ0FGTmdMQUt5QUFRYXdkYWlBQklBTWdCQkRkQzBVTkJBc2dBRUVBSUFNZ0FVRVFhaUlGRU9nRVJRUkFJQUpCSUdvaUF5QUJLQUlrUVNScUVGTWdBa0V3YWlJQlFmRHVEQ0FERURVZ0FDQUJJQVVRaGdFZ0FSQVBHaUFERUE4YURBUUxJQUFvQWdBaEFTQUNRUUkyQWpBZ0FrRUFOZ0lnSUFKQkFEWUNDQ0FDUVFBMkFoQWdBaUFCSUFKQkhHb2dBa0VZYWlBQ1FUQnFJQUpCSUdvZ0FrRUlhaENxSGlJQk5nSVVJQUVnQkRZQ0lDQUNLQUljSWdFb0FqZ2lBeUFCS0FJOFFRSjBhaUVISUFCQjNDdHFJUWdEUUNBRElBZEhCRUFnQWlBREtBSUFJZ0UyQWhBZ0FDQUJFRE1hSUFJb0FoQWhBU0FDSUFBMkFnZ2dBaUFDUVJCcU5nSU1JQUZGRFFRZ0FTZ0NCRUdJL0JGSERRUWdBQ2dDeENzaEJDQUFRYmJ1QkRZQ3hDc2dBQ2dDd0NzaEJpQUFRUUUyQXNBckFrQUNRQ0FBSUFBZ0FTZ0NKQkNGQWtFQUVKWUNJZ1ZGRFFBZ0JTZ0NGQkN1Q1VVRVFDQUFJQUpCTUdwQnNkUURFQlFpQXlBQlFSQnFFQ2NnQXhBUEdnd0JDeUFGS0FJY0VHTWlEVUlBVXdSQUlBQWdBa0V3YWtIYnl3TVFGQ0lESUFGQkVHb1FKeUFERUE4YURBRUxJQTFDZ0lBRVZBMEJJQUpCSUdvaUEwSC8vd01ROWdRZ0FrRXdhaUlGUWM3T0NpQURFRFVnQUNBRklBRkJFR29RSnlBRkVBOGFJQU1RRHhvTElBQWdCRFlDeENzZ0FDQUdOZ0xBSzBFQUlRWU1CZ3NnQWlBTnB5SUJPd0VnSUFJb0FoUWdBVHNCWENBQ1FUQnFJQWdnQWtFZ2FpQUNRUlJxRUtRZUlBQWdCRFlDeENzZ0FDQUdOZ0xBS3lBRFFRUnFJUU1NQVFzTElBQW9BZ0FpQUJBY0lBQkI1QUZxSUFJb0Fod2dBaWdDRkJDNUFTQUNLQUlVSVFZTUF3c2dBQ0FITmdMRUt5QUFJQVUyQXNBckRBSUxJQUFnQWtFd2FrR2Yxd0VRRkNJQUlBRkJFR29RSnlBQUVBOGFEQUVMSXdCQkVHc2lBQ1FBSUFJb0FnZ2hBU0FDS0FJTUtBSUFJUU1nQUVFV05nSU1JQUJCZzk0Q05nSUlJQUFnQUNrRENEY0RBQ0FCSUFNZ0FCQkFJQUJCRUdva0FFRUFJUVlMSUFKQlFHc2tBQ0FHREFFTElBTkJvUGtSUmdSQUl3QkJRR29pQXlRQUlBTWdBVFlDUENBRFFRQTJBamdDUUNBQktBSW9JZ1lFUUNBRElBQWdCaERRQXlJRU5nSTRJQVJGRFFFTElBRW9BaXhGQkVBZ0FDQURRU2hxUWVQWEFSQVVJZ0FnQVVFUWFoQW5JQUFRRHhvTUFRc2dBU2dDUEFSQUlBQWdBU2dDT0NnQ0FDSUJFRE1hSUFOQkV6WUNMQ0FEUWQzZEFqWUNLQ0FESUFNcEF5ZzNBd2dnQUNBQklBTkJDR29RUUF3QkN5QUFLUUxBS3lFTklBQkJ4Q3RxUWQ3V0FUWUNBQ0FBUVFFMkFzQXJJQUFnQVNnQ0xCQ0ZBaUVHSUFBZ0RUY0N3Q3NnQmtVTkFBSkFJQVFFUUNBQUlBWWdCQkNXQWlJR0RRRU1BZ3NnQXlBR0tBSVVJZ1EyQWpnTElBQkJyQjFxSUFFZ0JDQUdFTjBMUlEwQUlBQkJBQ0FFSUFGQkVHb2lCQkRvQkVVRVFDQURRUmhxSWdJZ0FTZ0NKRUVrYWhCVElBTkJLR29pQVVHZDdnd2dBaEExSUFBZ0FTQUVFSVlCSUFFUUR4b2dBaEFQR2d3QkN5QURJQVlvQWh3MkFpZ2dBQ2dDQUNFRUFuOGdBZ1JBSUFOQkFEWUNGQ0FEUVFFMkFoZ2dBMEVBTmdJUUlBUVFIQ01BUVRCcklnRWtBQ0FFUWFnQmFpSUNFTGdRSVFRZ0F5Z0NLQ0VGSUFNb0FoQWhCeUFES0FJVUlRZ2dBeWdDR0NFS0lBTW9BamdoQ3lBREtBSThJUXdnQVVFQU9nQW9JQUVnQVNnQ0tEWUNFQ0FCUVFBNkFDQWdBVUVBT2dBY0lBRkJBRG9BR0NBQklBRXBBeUEzQXdnZ0FTQUJLUU1ZTndNQUlBSWdCQ0FNSUFzZ0NpQUlJQWNnQlNBQlFRaHFJQUVROHc4aUJCQW9JQUlnQWlnQ0dFRUJhallDR0NBQlFUQnFKQUFnQkF3QkN5QURRUUEyQWhRZ0EwRUJOZ0lZSUFOQkFEWUNFQ0FFRUJ3Z0JFR29BV29pQVNBQkVLNGRJQU1vQWp3Z0F5Z0NPQ0FES0FJWUlBTW9BaFFnQXlnQ0VDQUFRWXcwYWlnQ0FDQURLQUlvRU84YklnSVFLQ0FCSUFFb0FoaEJBV28yQWhnZ0Fnc2lCU0FHTmdJZ0lBQW9BZ0FpQUJBY0lBQkI1QUZxSUFNb0Fqd2dCUkM1QVFzZ0EwRkFheVFBSUFVTUFRc2pBRUdnQVdzaUFDUUFJQUJCdDVzRlFlZ0JRUWdnQ1NnQ0FDZ0NCQkFYSWdGQkdHcEJ1WklNRUE0YUlBRWdDU2dDQkNnQ0FDZ0NCRUVFYWhDYUFSb2dBUkFZSUFCQm9BRnFKQUJCQUFzaEFDQUpRUkJxSkFBZ0FBdXVBZ0VHZnlNQVFUQnJJZ0lrQUNBQ0lBRTJBaXdnQUVIRUsyb2lCQ2dDQUNFR0lBUkJ1TU1DTmdJQUlBQW9Bc0FySVFjZ0FFRUJOZ0xBSzBFQUlRUUNRQ0FBSUFFb0FpUVFoUUlpQTBVTkFDQURLQUljSWdNZ0F5Z0NBQ2dDQ0JFQUFDSUZLQUlFUWRDbEVrY0VRQ0FDSUFVZ0JTZ0NBQ2dDREJFQ0FDQUNRUkJxSWdOQjlZZ0pJQUlRTlNBQ1FTQnFJZ1VnQTBIem1na1FMU0FBSUFVZ0FTZ0NKRUVRYWhBbklBVVFEeG9nQXhBUEdpQUNFQThhREFFTElBTVErZ0ZGQkVBZ0FDQUNRU0JxUWJINEJCQVVJZ01nQVVFUWFoQW5JQU1RRHhvTUFRc2dBQ2dDQUNBQ1FTeHFJQUJCa0RScUlBQkJpRFJxRU9ZRUlRUWdBQ2dDQUNJQkVCd2dBVUhrQVdvZ0FpZ0NMQ0FFRUxrQkN5QUFJQVkyQXNRcklBQWdCellDd0NzZ0FrRXdhaVFBSUFRTFd3RUJmeU1BUVJCcklnVWtBQ0FGSUFJMkFnQWdCU0FCTmdJSUlBQWdCVUVJYWlBRklBTVFzUjRpQUNBRU5nSWtJQUJCMlBFUE5nSUFJQVFRVnlBQUtBSUlRUUZCQUVIUXpBaEJySkFGUVI4UVN5QUZRUkJxSkFBZ0FBc1pBQ0FBRU9VUUlBQkJBRFlDaEFNZ0FDQUFLQUtBQXhBMkN5WUFJQUJDQURjQ2pBTWdBRUtBZ0lDQXdBRTNBb1FESUFBZ0FEWUNnQU1nQUVFTUVQa0xDeWNBSUFBZ0FTZ0NBQ0FDS0FJQUlBTVE1UVFpQUVHNDhRODJBZ1FnQUVIczhRODJBZ0FnQUF1NUFRRUJmeU1BUVJCcklnTWtBQ0FESUFJMkFnd2dBeUFCTmdJQUlBTWdBMEVNYWpZQ0JBSkFJQUlFUUNBQ0tBSUVJZ0ZCMlBjUlJnUkFRZkx0QUNFQ0RBSUxJQUZCbVBnUlJnUkFRYkhGQVNFQ0RBSUxJQUZCK1BNUFJnUkFRWTNUQWlFQ0RBSUxJQUVRM1FVRVFDQUNJQUlvQWdBb0Fnd1JBQUFoQWd3Q0N5QUJRY0QyRDBZRVFFSDBNeUVDREFJTEMwR1M0Z1loQWlBREtBSUFLQUlBSUFNb0FnUW9BZ0FRdEFrTElBQWdBaEFVR2lBRFFSQnFKQUFMb2dJQkRIOGpBRUd3QVdzaUJTUUFBa0FnQUNnQ0FDSUJLQUtRSGlJSUlBQW9BaEJHQkVBZ0FDZ0NEQ0VCREFFTElBQkJCR29RdWg0aUNTQUJRWVFlYWlnQ0FDSUdjQ0VDSUFaQkFXc2hDaUFBS0FJSUlRc2dBQ2dDQkNFTUlBRW9Bb0FlSVFjQ1FBSkFBMEFnQXlBR1J3UkFRUUFoQVNBSElBSkJLR3hxSWdRdEFCeEZEUU1DUUNBRUtBSWdJQWxIRFFBZ0RDQUVLQUlBUncwQUlBc2dCQ2dDQkVZTkF3c2dCQ2dDSkNBRFNRMERJQUpCQVdwQkFDQUNJQXBIR3lFQ0lBTkJBV29oQXd3QkN3c2dCVUdHdFFOQm5nUkJEaUFGUWFBQmFoQWRJZ0VRRnlJQ1FSaHFRZEkxRUE0YUlBSVFHQ0FCRUI1QkFDRUJEQUVMSUFjZ0FrRW9iR3BCQ0dvaEFRc2dBQ0FJTmdJUUlBQWdBVFlDREFzZ0JVR3dBV29rQUNBQkN4WUFJQUFnQUNnQ0tDSUFRUUYwUVFJZ0FCc1FzUWtMSlFBZ0FpZ0NBQkREQXlFQ0lBRW9Bc1FCSVFFZ0FDQUNOZ0lFSUFBZ0FpQUJjRFlDQUF2TEJRSUxmd0orSXdCQjRBRnJJZ0lrQUFKQVFRd2dBVUdXQVd4QjVBQnVJZ0VnQVVFTVRSc2lBeUFBS0FMRUFVME5BQ0FDUW9DQWdJQ0FBVGNDSkNBQ0lBSTJBaUFnQWlBQUtBTE1BUkN4Q1NBQUtBTEFBU0lCSUFBb0FzUUJRUVIwYWlFRkEwQWdBU0FGUmdSQUlBQVE0aDRnQUNBREVQb1FJQUlvQWlBaUJTQUNLQUlrUVFKMGFpRUpJQUpCeUFCcUlRb0RRQ0FGSUFsR0JFQWdBaEFqREFRTElBQW9Bc1FCSUFBb0Fzd0JJZ0ZCbGdGc1FaWUJha0hrQUc1SkJFQWdBQ0FCUVFGMFFRSnFFTFllQ3lBRktBSUFFTU1ESVFZZ0FDZ0N4QUVpQjBFQmF5RUxJQVlnQjNBaEJDQUFLQUxBQVNFTVFRQWhBUUpBQTBBZ0FTQUhSd1JBSUF3Z0JFRUVkR29pQXkwQUJFVUVRQ0FGS0FJQUlRUWdBMEVCT2dBRUlBTWdCRFlDQUNBRElBRTJBZ3dnQXlBR05nSUlJQUFnQUNnQ3pBRkJBV28yQXN3QklBQWdBQ2dDMEFGQkFXbzJBdEFCREFNTElBVW9BZ0FoQ0NBR0lBTW9BZ2hHQkVBZ0NDQURLQUlBUmcwREN5QUJJQU1vQWd4TEJFQWdBaUFHTmdMWUFTQUNJQWcyQXRBQklBSWdBVFlDM0FFZ0FrRUJPZ0RVQVNBQ0lBSXBBOWdCSWcwM0F6Z2dBaUFDS1FQUUFTSU9Od013SUFJZ0F5a0NDRGNEMkFFZ0FpQURLUUlBTndQUUFTQURJQTQzQWdBZ0F5QU5Od0lJSUFJZ0FpZ0MzQUZCQVdvMkF0d0JJQUFnQkVFQmFpQUFLQUxFQVhBZ0FrSFFBV29RNndRZ0FDQUFLQUxNQVVFQmFqWUN6QUVnQUNBQUtBTFFBVUVCYWpZQzBBRU1Bd1VnQkVFQmFrRUFJQVFnQzBjYklRUWdBVUVCYWlFQkRBSUxBQXNMSUFKQk1HcEJoclVEUWVzRFFRNGdBa0hRQVdvUUhTSUJFQmNoQXlBS1FaWTFFQTRhSUFNUUdDQUJFQjRMSUFWQkJHb2hCUXdBQ3dBTElBRXRBQVFFUUNBQ0tBSWtJZ1FnQWlnQ0tFOEVRQ0FDRUxRZUlBSW9BaVFoQkFzZ0FpQUVRUUZxTmdJa0lBSW9BaUFnQkVFQ2RHb2dBU2dDQURZQ0FBc2dBVUVRYWlFQkRBQUxBQXNnQWtIZ0FXb2tBQXVOQVFFRGZ5QUJJQUFvQW9nQlN3UkFJQUFvQW9BQklRTkJFQ0VDSUFBaEJDQUJRUkJQQkVCQmZ5QUJRUU4wSUFGQi8vLy8vd0ZMR3hBVklRUWdBU0VDQ3lBQUlBUTJBb0FCSUFBZ0FqWUNpQUZCQUNFQkEwQWdBQ2dDaEFFZ0FVMEVRQ0FBSUFNUU5nVWdBVUVEZENJQ0lBQW9Bb0FCYWlBQ0lBTnFLUUlBTndJQUlBRkJBV29oQVF3QkN3c0xDeEVBSUFCQlBFSEYvd05CZkVFREVNb0JDeElBSUFBb0FnQVF3d01pQUVFRWRpQUFjd3N0QVFGL0lBQVF1UjVCa3JHbytnZHFJZ0VnQUVFRWFoQzVIaUFCUVFKMlFaS3hxUG9IYzJwelFaT2tCbk1Mc2dFQ0EzOEJmaUFCSUFCQmlBNXFLQUlBU3dSQUlBQW9Bb0FPSVFRZ0FDRUNJQUFnQVVIQUFFOEVmMEYvSUFHdFFoeCtJZ1duSUFWQ0lJaW5HeEFWSVFJZ0FRVkJ3QUFMTmdLSURpQUFJQUkyQW9BT1FRQWhBUU5BSUFBb0FvUU9JQUZOQkVBZ0FDQUVFRFlGSUFGQkhHd2lBeUFBS0FLQURtb2lBaUFESUFScUlnTXBBZ0EzQWdBZ0FpQURLQUlZTmdJWUlBSWdBeWtDRURjQ0VDQUNJQU1wQWdnM0FnZ2dBVUVCYWlFQkRBRUxDd3NMVVFFQmZ5TUFRUkJySWdJa0FDQUFJQUVvQWdBb0FnQTJBZ0FnQWlBQktBSUVJZ0VvQWdnMkFnZ2dBaUFCS1FJQU53TUFJQUVRVlNBQVFRUnFJQUlRVkVFQU9nQU1JQUlRRHhvZ0FrRVFhaVFBQ3dvQUlBQkJ3SUlTRUVnTDV3b0NESDhEZmlNQVFiQU9heUlFSkFBQ1FDQUJRWVFlYWlnQ0FDSUlJQUVvQW93ZUlnWkJsZ0ZzUVpZQmFrSGtBRzVQRFFBZ0NFSGdBQ0FHUWF3Q2JFR3NBbXBCNUFCdUlnVWdCVUhnQUUwYklnVlBEUUFnQkVHa0RtcENnSUNBZ0lBSU53SUFJQVFnQkVFZ2FpSUhOZ0tnRGlBSElBWVF1eDRnQVNnQ2dCNGlCaUFCS0FLRUhrRW9iR29oQ1FOQUFrQWdCaUFKUmdSQUlBRVE0UjRnQVNBRkVJRVJJQVFvQXFBT0lnWWdCQ2dDcEE1QkhHeHFJUWdNQVFzZ0JpMEFIQVJBSUFRb0FxUU9JZ2NnQkNnQ3FBNGlDRThFUUNBRVFTQnFJQWhCQVhSQkFpQUlHeEM3SGlBRUtBS2tEaUVIQ3lBRUlBZEJBV28yQXFRT0lBUW9BcUFPSUFkQkhHeHFJZ2dnQmlnQ0dEWUNHQ0FJSUFZcEFoQTNBaEFnQ0NBR0tRSUlOd0lJSUFnZ0Jpa0NBRGNDQUFzZ0JrRW9haUVHREFFTEN3TkFJQVlnQ0VaRkJFQWdCRUVJYWlBQklBWWdCa0VJYWhDK0hpQUdRUnhxSVFZTUFRc0xJQVJCQURZQ3BBNGdCRUVnYWlBRUtBS2dEaEEyQ3lBQ0VMb2VJUW9nQVNnQ2hCNGlDMEVCYXlFTklBb2dDM0FoQ1NBQ0tBSUVJUTRnQWlnQ0FDRVBJQUVvQW9BZUlReEJBQ0VIQWtBRFFDQUhJQXRIQkVBZ0RDQUpRU2hzYWlJRkxRQWNSUVJBSUFJcEFnQWhFQ0FFSUFNb0FoQTJBakFnQkNBREtRSUlOd01vSUFRZ0F5a0NBRGNESUNBRklCQTNBZ0FnQlNBRUtRTWdOd0lJSUFVZ0JDa0RLRGNDRUNBRklBUW9BakEyQWhnZ0JVRUJPZ0FjSUF3Z0NVRW9iR29pQWlBSE5nSWtJQUlnQ2pZQ0lDQUJJQUVvQW93ZVFRRnFOZ0tNSGlBQklBRW9BcEFlUVFGcU5nS1FIaUFBSUFWQkNHbzJBZ1FnQUVFQU5nSUFEQU1MQWtBZ0JTZ0NJQ0lHSUFwSERRQWdEeUFGS0FJQVJ3MEFJQTRnQlNnQ0JFY05BQ0FBUVFJMkFnQWdBQ0FGUVFocU5nSUVEQU1MSUFjZ0JTZ0NKQ0lJU3dSQUlBSXBBZ0FoRVNBRUlBTW9BaEEyQWpBZ0JDQURLUUlJTndNb0lBUWdBeWtDQURjRElDQUZLUUlBSVJBZ0JDQUZLQUlZTmdJWUlBUWdCU2tDRURjREVDQUVJQVVwQWdnM0F3Z2dCQ0FGTFFBZk9nQUdJQVFnQlM4QUhUc0JCQ0FGSUJFM0FnQWdCQ2tES0NFUklBUW9BakFoQWlBRUtRTWdJUklnQlVFQk9nQWNJQVVnQ2pZQ0lDQUZJQWMyQWlRZ0JTQUNOZ0lZSUFVZ0VUY0NFQ0FGSUJJM0FnZ2dCVUVJYWlFTElBRW9Bb1FlSWdwQkFXc2hEQ0FKUVFGcUlBcHdJUWRCQUNFSkFrQURRQ0FKSUFwR0RRRWdDRUVCYWlFQ0lBRW9Bb0FlSUFkQktHeHFJZ1V0QUJ3RVFBSkFJQUlnQlNnQ0pDSUlUUVJBSUFJaENBd0JDeUFGS1FJQUlSRWdCQ0FGS0FJWU5nSXdJQVFnQlNrQ0VEY0RLQ0FFSUFVcEFnZzNBeUFnQkVHdURtb2lEU0FGTFFBZk9nQUFJQVFnQlM4QUhUc0JyQTRnQlNBUU53SUFJQVVnQkNrRENEY0NDQ0FGSUFRcEF4QTNBaEFnQlNBRUtBSVlOZ0lZSUFWQkFUb0FIQ0FGSUFRdkFRUTdBQjBnQlNnQ0lDRURJQVF0QUFZaERpQUZJQVkyQWlBZ0JTQUNOZ0lrSUFVZ0Rqb0FIeUFFSUFRcEF5ZzNBeEFnQkNBRUtBSXdOZ0lZSUFRZ0RTMEFBRG9BQmlBRUlBUXBBeUEzQXdnZ0JDQUVMd0dzRGpzQkJDQURJUVlnRVNFUUN5QUhRUUZxUVFBZ0J5QU1SeHNoQnlBSlFRRnFJUWtNQVFzTElBVWdFRGNDQUNBRklBUXBBd2czQWdnZ0JTQUVLUU1RTndJUUlBVWdCQ2dDR0RZQ0dDQUZRUUU2QUJ3Z0JTQUVMd0VFT3dBZElBVWdCQzBBQmpvQUh5QUZJQUkyQWlRZ0JTQUdOZ0lnQ3lBQklBRW9Bb3dlUVFGcU5nS01IaUFCSUFFb0FwQWVRUUZxTmdLUUhpQUFJQXMyQWdRZ0FFRUFOZ0lBREFNRklBbEJBV3BCQUNBSklBMUhHeUVKSUFkQkFXb2hCd3dDQ3dBTEN5QUVRU0JxUVlhMUEwSHJBMEVPSUFSQkNHb1FIU0lCRUJjaUFrRVlha0dXTlJBT0dpQUNFQmdnQUVJQU53SUFJQUVRSGdzZ0JFR3dEbW9rQUF0WkFRTi9Jd0JCRUdzaUF5UUFJQUVvQWdBaEJTQURJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFZCQUVnaUJCczJBZ3dnQXlBRklBRWdCQnMyQWdnZ0F5QURLUU1JTndNQUlBQWdBeUFDRUt3RUlBTkJFR29rQUF0WkFRTi9Jd0JCRUdzaUF5UUFJQUVvQWdBaEJTQURJQUVvQWdRZ0FTMEFDeUlFSUFSQkdIUkJHSFZCQUVnaUJCczJBZ3dnQXlBRklBRWdCQnMyQWdnZ0F5QURLUU1JTndNQUlBQWdBeUFDRU5VQklBTkJFR29rQUFzU0FDQUFJQUZCLy8vL1AwRUZRUVFReWhJTFdRRUNmeUFCSUFBb0FvZ0JTd1JBSUFBb0FvQUJJUUlnQUNBQkVNRWVRUUFoQVFOQUlBQW9Bb1FCSUFGTkJFQWdBQ0FDRURZRklBRkJCWFFpQXlBQUtBS0FBV29nQWlBRGFoRDZCUm9nQVVFQmFpRUJEQUVMQ3dzTGJ3RUNmd0pBSUFBb0FwQUNJQUVvQWdSSkJFQWdBQkRvRUNBQUlBRW9BZ1FReEI0TUFRc2dBQkRtRUFzZ0FDQUJLQUlFSWdJMkFvd0NBMEFnQWlBRFN3UkFJQU5CTEd3aUFpQUFLQUtJQW1vZ0FTZ0NBQ0FDYWhDMUNSb2dBMEVCYWlFRElBQW9Bb3dDSVFJTUFRc0xDMEFDQW44QmZrRUdJUUlnQUNFRElBRkJCazhFUUVGL0lBR3RRaXgrSWdTbklBUkNJSWluR3hBVklRTWdBU0VDQ3lBQUlBTTJBb2dDSUFBZ0FqWUNrQUlMSlFBZ0FCRG1FQ0FBUVFZUTZSQWdBRUVBTmdLVUFpQUFJQUFvQXBnQ1FRRnFOZ0tZQWd1Y0FRSURmd0YrSUFFZ0FFSG9FV29vQWdCTEJFQWdBQ2dDNEJFaEEwRUlJUUlnQUNFRUlBRkJDRThFUUVGL0lBR3RRcHdDZmlJRnB5QUZRaUNJcHhzUUZTRUVJQUVoQWdzZ0FDQUVOZ0xnRVNBQVFlZ1JhaUFDTmdJQVFRQWhBUU5BSUFBb0F1UVJJQUZOQkVBZ0FDQURFRFlGSUFGQm5BSnNJZ0lnQUNnQzRCRnFJQUlnQTJvaUFoRG5FQ0FDRVBzSElBRkJBV29oQVF3QkN3c0xDOGNIQVFoL0l3QkIwQUZySWdna0FDQUJLQUtNQWlJRklBRW9BcFFDSWdSQmxnRnNRWllCYWtIa0FHNUpCRUFqQUVHZ0FXc2lCaVFBUVFZZ0JFRUJkRUVDYWtHV0FXeEI1QUJ1SWdRZ0JFRUdUUnNpQ1NBQktBS01Ba3NFUUNBR1FvQ0FnSURBQURjQ2xBRWdCaUFHUVJCcUlnUTJBcEFCSUFRZ0FTZ0NsQUlRd2g0Z0FTZ0NpQUlpQkNBQktBS01Ba0VzYkdvaENnTkFBa0FnQkNBS1JnUkFJQUVReFI0Z0FTQUpFT2tRSUFZb0FwQUJJZ1FnQmlnQ2xBRkJCWFJxSVFVTUFRc2dCQzBBSUFSQUlBUVE0QVloQ3lBR1FSQnFJZ1VvQW9RQklnY2dCU2dDaUFGUEJFQWdCU0FGS0FLSUFTSUhRUUYwUVFJZ0J4c1F3aDRnQlNnQ2hBRWhCd3NnQlNBSFFRRnFOZ0tFQVNBRktBS0FBU0FIUVFWMGFpQUxFUG9GR2dzZ0JFRXNhaUVFREFFTEN3TkFJQVFnQlVjRVFDQUdRUWhxSUFFZ0JDQUVRUnhxRU1jZUlBUkJJR29oQkF3QkN3c2dCa0VRYWlFRVFRQWhCUU5BSUFRb0FvUUJJQVZOQkVBZ0JFRUFOZ0tFQVFVZ0JDZ0NnQUVhSUFWQkFXb2hCUXdCQ3dzZ0JDQUVLQUtBQVJBMkN5QUdRYUFCYWlRQUlBRW9Bb3dDSVFVTElBSW9BZ0FoQnlBSUlBTTJBc3dCSUFnZ0FqWUN5QUVnQlVFQmF5RUpJQWNnQlhBaEJFRUFJUU1DUUFOQUlBTWdCVWNFUUNBQktBS0lBaUlLSUFSQkxHeHFJZ1l0QUNCRkJFQWdDRUVJYWlJQ0lBaEJ5QUZxRVB3RklBWWdBaENWRENBS0lBUkJMR3hxSWdJZ0F6WUNLQ0FDSUFjMkFpUWdBU0FCS0FLVUFrRUJhallDbEFJZ0FTQUJLQUtZQWtFQmFqWUNtQUlnQUNBR1FSeHFOZ0lFSUFCQkFEWUNBQXdEQ3lBR0lBY2dBaEM1Q1FSQUlBQkJBallDQUNBQUlBWkJIR28yQWdRTUF3c2dBeUFHS0FJb1N3UkFJQWhCcUFGcUlnSWdDRUhJQVdvUS9BVWdDRUVJYWlBQ0VKUU1JZ0lnQXpZQ0tDQUNJQWMyQWlRZ0FpQUdFT0VHSUFJZ0FpZ0NLRUVCYWpZQ0tDQUVRUUZxSUFFb0Fvd0NjQ0VEUVFBaEJDQUJLQUtNQWlJSFFRRnJJUWtDUUFOQUlBUWdCMFlOQVNBQktBS0lBaUFEUVN4c2FpSUZMUUFnQkVBZ0FpQUNLQUlvSWdvZ0JTZ0NLRXNFZnlBRklBSVE0UVlnQWlnQ0tBVWdDZ3RCQVdvMkFpZ2dBMEVCYWtFQUlBTWdDVWNiSVFNZ0JFRUJhaUVFREFFTEN5QUZJQUlRc3drTElBRWdBU2dDbEFKQkFXbzJBcFFDSUFFZ0FTZ0NtQUpCQVdvMkFwZ0NJQUFnQmtFY2FqWUNCQ0FBUVFBMkFnQWdBaENxQWd3REJTQUVRUUZxUVFBZ0JDQUpSeHNoQkNBRFFRRnFJUU1NQWdzQUN3c2dDRUVJYWtHR3RRTkI2d05CRGlBSVFhZ0JhaEFkSWdFUUZ5SUNRUmhxUVpZMUVBNGFJQUlRR0NBQVFnQTNBZ0FnQVJBZUN5QUlRZEFCYWlRQUN3b0FJQUFRNmhCQkFFY0xLZ0FnQUNBQk5nSUFJQUJCQkdvZ0FoQldHaUFBUVFBMkFpQWdBQ0FCS0FLWUFrRUJhellDSkNBQUN3d0FJQUJCTEdvUXFBRWdBQXNvQUNBQVFnQTNBcFFDSUFCQ2dJQ0FnT0FBTndLTUFpQUFJQUEyQW9nQ0lBQkJCaERwRUNBQUM0VUJBUUovSUFFZ0FDZ0NpQVJMQkVBZ0FDZ0NnQVFoQXlBQUlRSWdBQ0FCUVJCUEJIOUJmeUFCUVFWMElBRkIvLy8vUDBzYkVCVWhBaUFCQlVFUUN6WUNpQVFnQUNBQ05nS0FCRUVBSVFFRFFDQUFLQUtFQkNBQlRRUkFJQUFnQXhBMkJTQUJRUVYwSWdJZ0FDZ0NnQVJxSUFJZ0Eyb1ErZ1VhSUFGQkFXb2hBUXdCQ3dzTEN4c0FJQUVvQWdBb0FnQWdBU2dDQkNnQ0FCQzBDU0FBRUpzRkdnczZBUUYvSXdCQkVHc2lBeVFBSUFJb0FnQVF3d01oQWlBQlFZUU1haWdDQUNFQklBQWdBallDQkNBQUlBSWdBWEEyQWdBZ0EwRVFhaVFBQzlVRkFnaC9BbjRqQUVIQUFXc2lBeVFBSUFGQmhBeHFLQUlBSUFFb0Fvd01JZ1JCbGdGc1FaWUJha0hrQUc1SkJFQWdBU0FFUVFGMFFRSnFFTmNlQ3lBRFFiZ0JhaUFCSUFJUXpoNGdBU2dDaEF3aUNVRUJheUVLSUFJb0FnQWhCaUFCS0FLQURDRUlJQU1vQXJ3QklRY2dBeWdDdUFFaEJVRUFJUUlDUUFOQUlBSWdDVWNFUUNBSUlBVkJCSFJxSWdRdEFBUkZCRUFnQkVFQk9nQUVJQVFnQmpZQ0FDQUlJQVZCQkhScUlnUWdBallDRENBRUlBYzJBZ2dnQVNBQktBS01ERUVCYWpZQ2pBd2dBU0FCS0FLUURFRUJhallDa0F3Z0FFSUFOd0lBREFNTEFrQWdCQ2dDQ0NBSFJ3MEFJQVlnQkNnQ0FFY05BQ0FBUWdJM0FnQU1Bd3NnQWlBRUtBSU1Td1JBSUFNZ0J6WUNzQUVnQXlBR05nS29BU0FESUFJMkFyUUJJQU5CQVRvQXJBRWdBeUFES1FPd0FTSUxOd01RSUFNZ0F5a0RxQUVpRERjRENDQURJQVFwQWdnM0E3QUJJQU1nQkNrQ0FEY0RxQUVnQkNBTU53SUFJQVFnQ3pjQ0NDQURJQU1vQXJRQlFRRnFOZ0swQVNBRlFRRnFJQUVvQW9RTWNDRUVRUUFoQmlNQVFSQnJJUVVnQVVHRURHb29BZ0FpQjBFQmF5RUlBa0FEUUNBR0lBZEdEUUVnQVNnQ2dBd2dCRUVFZEdvaUFpMEFCQVJBSUFNZ0F5Z0N0QUVpQ1NBQ0tBSU1Td1IvSUFVZ0Fpa0NDRGNEQ0NBRklBSXBBZ0EzQXdBZ0FpQURLUUt3QVRjQ0NDQUNJQU1wQXFnQk53SUFJQU1nQlNrRENEY0NzQUVnQXlBRktRTUFOd0tvQVNBREtBSzBBUVVnQ1F0QkFXbzJBclFCSUFSQkFXcEJBQ0FFSUFoSEd5RUVJQVpCQVdvaEJnd0JDd3NnQWlBREtRS29BVGNDQUNBQ0lBTXBBckFCTndJSUN5QUJJQUVvQW93TVFRRnFOZ0tNRENBQklBRW9BcEFNUVFGcU5nS1FEQ0FBUWdBM0FnQU1Bd1VnQlVFQmFrRUFJQVVnQ2tjYklRVWdBa0VCYWlFQ0RBSUxBQXNMSUFOQkNHcEJoclVEUWVzRFFRNGdBMEdvQVdvUUhTSUJFQmNpQWtFWWFrR1dOUkFPR2lBQ0VCZ2dBRUlBTndJQUlBRVFIZ3NnQTBIQUFXb2tBQXZYQWdFQmZ5TUFRY0FCYXlJSEpBQWdCeUFDTmdLd0FTQUhJQUUyQXJnQklBQWdCeWdDdUFFZ0J5Z0NzQUVnQXhEbEJDSUFRZmp3RHpZQ0JDQUFRYXp4RHpZQ0FDQUFJQVUyQWlnZ0FDQUVOZ0lrSUFCQm1QRVBOZ0lBSUFCQkxHb2dCaEM2Q1NBQUtBSWtJZ0VFZnlBQkJTQUhRWXlQQlVFZ1FRQWdCMEdnQVdvUUhTSUJFQmNpQWtFWWFrSDZtUWdRRGhvZ0FoQVlJQUVRSGlBQUtBSWtDeEJYSUFBb0FnaEJBVUVBUWVMQUNFR01qd1ZCSVJCTElBQW9BaWdRVnlBQUtBSUlRUUZCQUVISnl3aEJqSThGUVNJUVN5QUFLQUl3SWdJZ0FDZ0NORUVDZEdvaEFTQUhRUmhxSVFNRFFDQUJJQUpIQkVBZ0FpZ0NBQ0lFUlFSQUlBZEJqSThGUVNSQkFDQUhRYUFCYWhBZElnVVFGeUVHSUFOQm1hY0lFQTRhSUFZUUdDQUZFQjRMSUFRUVZ5QUFLQUlJUVFGQkFFSGR4QWhCakk4RlFTVVFTeUFDUVFScUlRSU1BUXNMSUFkQndBRnFKQUFnQUFzc0FDQUFRWVFNYWtFQU5nSUFJQUJCNEFBUTdSQWdBRUVBTmdLTURDQUFJQUFvQXBBTVFRRnFOZ0tRREFzWkFDQUFMUUFVQkVBZ0FFRUVhaENWQWlBQVFRQTZBQlFMQzNzQkJYOGdBRUdFR0dvb0FnQWlCVUVCYXlFR0FrQURRQ0FESUFWR0RRRWdBQ2dDZ0JnZ0FVRUZkR29pQkMwQUZBUkFJQUlnQWlnQ0hDSUhJQVFvQWh4TEJIOGdCQ0FDRU93UUlBSW9BaHdGSUFjTFFRRnFOZ0ljSUFGQkFXcEJBQ0FCSUFaSEd5RUJJQU5CQVdvaEF3d0JDd3NnQkNBQ0VPc1FDd3NTQUNBQUlBRVFrZ3dpQUVFQk9nQVVJQUFMRGdBZ0FCRFNIaUFBSUFFUThSQUxIQUFnQUNBQktBSUFLQUlBTmdJQUlBQkJCR29nQVNnQ0JCRGFIZ3ZvQVFFRGZ5TUFRYUFDYXlJQ0pBQkI0QUFnQVVHV0FXeEI1QUJ1SWdFZ0FVSGdBRTBiSWdNZ0FFR0VER29vQWdCTEJFQWdBa0tBZ0lDQWdBZzNBcFFDSUFJZ0FrRVFhaUlCTmdLUUFpQUJJQUFvQW93TUVQWUtJQUFvQW9BTUlnRWdBQ2dDaEF4QkJIUnFJUVFEUUFKQUlBRWdCRVlFUUNBQUVORWVJQUFnQXhEdEVDQUNLQUtRQWlJQklBSW9BcFFDUVFKMGFpRUREQUVMSUFFdEFBUUVRQ0FDUVJCcUlBRVF2Z0VRbEFNTElBRkJFR29oQVF3QkN3c0RRQ0FCSUFOR1JRUkFJQUlnQUNBQkVNOGVJQUZCQkdvaEFRd0JDd3NnQWtFUWFoQ1RCUXNnQWtHZ0Ftb2tBQXVnQVFJRGZ3RitJQUVnQUVHSUNtb29BZ0JMQkVBZ0FDZ0NnQW9oQTBIQUFDRUNJQUFoQkNBQlFjQUFUd1JBUVg4Z0FhMUNGSDRpQmFjZ0JVSWdpS2NiRUJVaEJDQUJJUUlMSUFBZ0JEWUNnQW9nQUVHSUNtb2dBallDQUVFQUlRRURRQ0FBS0FLRUNpQUJUUVJBSUFBZ0F4QTJCU0FCUVJSc0lnSWdBQ2dDZ0FwcUlBSWdBMm9pQWhDU0RCb2dBa0VFYWhDVkFpQUJRUUZxSVFFTUFRc0xDd3MwQVFGL0EwQWdBQ2dDaEJnZ0FVMEVRQ0FBUVFBMkFvUVlCU0FBS0FLQUdDQUJRUVYwYWhEK0J5QUJRUUZxSVFFTUFRc0xDMWtCQW44Z0FFSC9BVG9BRENBQVFRQTZBQUFqQUVFUWF5SUNKQUFnQUJDVkFpQUJMUUFNSWdOQi93RkhCRUFnQWtFSWFpQUFJQUVnQTBFQ2RFR2doUkpxS0FJQUVRVUFJQUFnQVMwQUREb0FEQXNnQWtFUWFpUUFDeXNBSUFCQkFEb0FGQ0FBUVFBNkFBQWdBUzBBRkFSQUlBQWdBUkR4RUFzZ0FDQUJLUUlZTndJWUlBQUxNZ0FnQUFKL0lBRkZCRUJCQVNFQklBQU1BUXRCZnlBQlFRSjBJQUZCLy8vLy93TkxHeEFWQ3pZQ0JDQUFJQUUyQWd3TDRBa0JCSDhqQUVIQUFXc2lBeVFBQWtBZ0FTZ0NBQ0lFUlNBQkxRQU1JZ1pCQVVkeVJRUkFBa0FnQkNnQ0JDSUJFT0VJQkVBZ0EwRVFhaUlCSUFRb0FpUkJKR29RVXlBRFFTQnFJZ0pCK1pVSklBRVFOU0FESUFKQjg1b0pFQzBnQWhBUEdpQUJFQThhREFFTElBRkIyUGdSUmdSQUlBTkJFR29pQVNBRUtBSWtRU1JxRUZNZ0EwRWdhaUlDUWRXTENTQUJFRFVnQXlBQ1FmT2FDUkF0SUFJUUR4b2dBUkFQR2d3QkN5QUJRZUQ1RDBZRVFDQURRUkJxSWdFZ0JDZ0NKRUVrYWhCVElBTkJJR29pQWtIL2lRa2dBUkExSUFNZ0FrSHptZ2tRTFNBQ0VBOGFJQUVRRHhvTUFRc2dBVUdnK1JGR0JFQWdBMEVRYWlJQklBUW9BaVJCSkdvUVV5QURRU0JxSWdKQmdvZ0pJQUVRTlNBRElBSkI4NW9KRUMwZ0FoQVBHaUFCRUE4YURBRUxJQUZCNlBrUlJnUkFJQU5CRUdvaUFTQUVLQUlrUVNScUVGTWdBMEVnYWlJQ1FiR1dDU0FCRURVZ0F5QUNRZk9hQ1JBdElBSVFEeG9nQVJBUEdnd0JDeUFCUWZqekQwWUVRQ0FEUVJCcUlnRWdCQ2dDSkVFa2FoQlRJQU5CSUdvaUFrR2JqUWtnQVJBMUlBTWdBa0h6bWdrUUxTQUNFQThhSUFFUUR4b01BUXNnQVVHdzZ3OUdCRUFnQTBFUWFpSUJJQVFvQWlSQkpHb1FVeUFEUVNCcUlnSkJoNHNKSUFFUU5TQURJQUpCODVvSkVDMGdBaEFQR2lBQkVBOGFEQUVMSUFOQklHcEJscTRGUWJrR1FRZ2dBaEFYSWdGQkdHb2lBa0h1dndzUURob2dBa0cxcHd3UURob2dBU0FFS0FJRVFRUnFFSm9CR2lBQkVCZ2dBMEdzNGdZUUZCb0xJQUFnQXhCVUdpQURFQThhREFFTElBTkJmeUFFSUFaQkFrY2JJZ1UyQWdBZ0JVRi9Sd1JBSUFOQkVHb2lBU0FERVBnUUlBTkJJR29pQWtIUGpBa2dBUkExSUFBZ0FrSHptZ2tRTFNBQ0VBOGFJQUVRRHhvTUFRc2dBeUFFUVFBZ0JrRUZSaHNpQlRZQ0FDQUZCRUFnQTBFUWFpSUJJQU1Rb0JFZ0EwRWdhaUlDUWY2U0NTQUJFRFVnQUNBQ1FmT2FDUkF0SUFJUUR4b2dBUkFQR2d3QkN5QURJQVJCQUNBR1FRWkdHeUlGTmdJQUlBVUVRQ0FEUVJCcUlnRWdBeEQzRUNBRFFTQnFJZ0pCOEpBSklBRVFOU0FBSUFKQjg1b0pFQzBnQWhBUEdpQUJFQThhREFFTElBTWdCRUVBSUFaQkEwWWJJZ1UyQWdBZ0JRUkFJQU5CRUdvaUFTQURFUFlRSUFOQklHb2lBa0cyaWdrZ0FSQTFJQUFnQWtIem1na1FMU0FDRUE4YUlBRVFEeG9NQVFzZ0F5QUVRUUFnQmtFRVJoc2lCVFlDQUNBRkJFQWdBMEVRYWlJQklBTVErd1VnQTBFZ2FpSUNRWmFYQ1NBQkVEVWdBQ0FDUWZPYUNSQXRJQUlRRHhvZ0FSQVBHZ3dCQ3lBRElBUkJBQ0FHUVFoR0d5SUZOZ0lBSUFVRVFDQURRUkJxSWdFZ0F4RDFFQ0FEUVNCcUlnSkIzcElKSUFFUU5TQUFJQUpCODVvSkVDMGdBaEFQR2lBQkVBOGFEQUVMSUFNZ0JFRUFJQVpCQjBZYklnVTJBZ0FnQlFSQUlBTkJFR29pQVNBREVQUVFJQU5CSUdvaUFrSGlqZ2tnQVJBMUlBQWdBa0h6bWdrUUxTQUNFQThhSUFFUUR4b01BUXNnQXlBRVFRQWdCa0VKUmhzaUJEWUNBQ0FFQkVBZ0EwRVFhaUlCSUFNUTh4QWdBMEVnYWlJQ1FhZUtDU0FCRURVZ0FDQUNRZk9hQ1JBdElBSVFEeG9nQVJBUEdnd0JDeUFHUlFSQUlBTkJJR29pQWtHVGl3a2dBUkRFQVNBQUlBSkI4NW9KRUMwZ0FoQVBHZ3dCQ3lBRFFTQnFRWmF1QlVIYUJrRUlJQUlRRnlJQlFSaHFJZ0pCN3I4TEVBNGFJQUpCL2VzQkVBNGFJQUVRR0NBQVFhemlCaEFVR2dzZ0EwSEFBV29rQUF0ckFRRi9Jd0JCRUdzaUFpUUFBa0FnQVVVTkFDQUJLQUlFUWRqNEVVY05BQ0FBSUFFb0FrUVEzd0VnQUNBQktBSklFTjhCQ3lBQUlBRW9BaWdRM3dFZ0FrRUFPZ0FNSUFJZ0FVRTRhallDQ0NBQUlBSkJDR29RdUFrZ0FDQUJLQUlzRU44QklBSkJFR29rQUFzMEFRRi9BMEFnQUNnQ3BBZ2dBVTBFUUNBQVFRQTJBcVFJQlNBQUtBS2dDQ0FCUVN4c2FoQ3FBaUFCUVFGcUlRRU1BUXNMQ3lVQUlBQVEzeDRnQUVFWUVJSVJJQUJCQURZQ3JBZ2dBQ0FBS0FLd0NFRUJhallDc0FnTExBQWdBRUdFSG1wQkFEWUNBQ0FBUWVBQUVJRVJJQUJCQURZQ2pCNGdBQ0FBS0FLUUhrRUJhallDa0I0TEtBQWdBRUVBTmdMRUFTQUFRUXdRK2hBZ0FFRUFOZ0xNQVNBQUlBQW9BdEFCUVFGcU5nTFFBUXV0QXdFSmZ5TUFRY0FCYXlJRkpBQWdCVUc0QVdvZ0FFRXNhaUFBS0FJZ0lBQW9BaVJCQW5ScVFRUnJJZ0lRdFI0Z0FDZ0M4QUVpQ0VFQmF5RUpJQUlvQWdBaEJ5QUFLQUxzQVNFR0lBVW9BcndCSVFJZ0JTZ0N1QUVoQXdKQUFrQURRQ0FCSUFoSEJFQWdCaUFEUVFSMGFpSUVMUUFFUlEwRElBSWdCQ2dDQ0VZRVFDQUhJQVFvQWdCR0RRTUxJQVFvQWd3Z0FVa05BeUFEUVFGcVFRQWdBeUFKUnhzaEF5QUJRUUZxSVFFTUFRc0xJQVZCQ0dwQmhyVURRWjRFUVE0Z0JVR29BV29RSFNJQkVCY2lBa0VZYWtIU05SQU9HaUFDRUJnZ0FSQWVEQUVMUVFBaEFVRUFJUVFDUUFOQUlBUWdDRVlOQVNBQUtBTHNBU0lISUFOQkJIUWlCbW9oQWdKQUlBRUVRQ0FHSUFkcUlnWW9BZ3hGRFFFZ0FTQUNLQUlBTmdJQUlBRWdBaTBBQkRvQUJDQUJJQVlvQWdnMkFnZ2dBU0FHS0FJTVFRRnJOZ0lNQ3lBRFFRRnFRUUFnQXlBSlJ4c2hBeUFFUVFGcUlRUWdBaUVCREFFTEN5QUJRZ0EzQWdnZ0FVRUFPZ0FFSUFGQkFEb0FBQXNnQUNBQUtBTDRBVUVCYXpZQytBRWdBQ0FBS0FMOEFVRUJhallDL0FFTElBQWdBQ2dDSkVFQmF6WUNKQ0FGUWNBQmFpUUFDNGdCQVFKL0lBRWdBQ2dDaUFGTEJFQWdBQ2dDZ0FFaEF5QUFJUUlnQUNBQlFSQlBCSDlCZnlBQlFRTjBJQUZCLy8vLy93RkxHeEFWSVFJZ0FRVkJFQXMyQW9nQklBQWdBallDZ0FGQkFDRUJBMEFnQUNnQ2hBRWdBVTBFUUNBQUlBTVFOZ1VnQVVFRGRDSUNJQUFvQW9BQmFpQUNJQU5xS1FJQU53SUFJQUZCQVdvaEFRd0JDd3NMQzhZTkFoSi9BbjRqQUVHQUJHc2lBaVFBSUFJZ0FUWUNEQ0FBS0FJQUlnUkJMR29oQ2lBQUtBSUVJUVVnQkNnQzhBRWdCQ2dDK0FFaUEwR1dBV3hCbGdGcVFlUUFia2tFUUNBS0lBTkJBWFJCQW1vUXRoNExJQUpCNkFOcUlBb2dBa0VNYWhDMUhpQUVLQUx3QVNJTFFRRnJJUXdnQkNnQzdBRWhDU0FDS0FMc0F5RUlJQUlvQXVnRElRZEJBQ0VEQW44Q1FBSkFBa0FEUUNBRElBdEhCRUFnQ1NBSFFRUjBhaUlHTFFBRVJRUkFJQVpCQVRvQUJDQUdJQUUyQWdBZ0NTQUhRUVIwYWlJR0lBTTJBZ3dnQmlBSU5nSUlJQVFnQkNnQytBRkJBV28yQXZnQklBUWdCQ2dDL0FGQkFXbzJBdndCREFNTElBZ2dCaWdDQ0VZRVFDQUdLQUlBSUFGR0RRUUxJQU1nQmlnQ0RFc0VRQ0FDSUFnMkFyQUJJQUlnQVRZQ3FBRWdBaUFETmdLMEFTQUNRUUU2QUt3QklBSWdBaWtEc0FFaUZEY0QwQUlnQWlBQ0tRT29BU0lWTndQSUFpQUNJQVlwQWdnM0E3QUJJQUlnQmlrQ0FEY0RxQUVnQmlBVk53SUFJQVlnRkRjQ0NDQUNJQUlvQXJRQlFRRnFOZ0swQVNBS0lBZEJBV29nQkNnQzhBRndJQUpCcUFGcUVPc0VJQVFnQkNnQytBRkJBV28yQXZnQklBUWdCQ2dDL0FGQkFXbzJBdndCREFNRklBZEJBV3BCQUNBSElBeEhHeUVISUFOQkFXb2hBd3dDQ3dBTEN5QUNRY2dDYWtHR3RRTkI2d05CRGlBQ1FhZ0JhaEFkSWdNUUZ5SUdRUmhxUVpZMUVBNGFJQVlRR0NBREVCNExJQVFvQWlRaUF5QUVLQUlvVHdSQUlBUVF0QjRnQkNnQ0pDRURDeUFFSUFOQkFXbzJBaVFnQkNnQ0lDQURRUUowYWlBQk5nSUFJd0JCRUdzaUF5UUFJd0JCd0FGcklnUWtBQ0FFUWJnQmFpQUZRWVFyYWlJRklBRVF6aDRnQlVHRURHb29BZ0FpQjBFQmF5RUtJQUVvQWdBaENDQUZLQUtBRENFSklBUW9BcndCSVFzZ0JDZ0N1QUVoQVVFQUlRVUNRQU5BSUFVZ0IwY0VRQ0FKSUFGQkJIUnFJZ1l0QUFSRkJFQWdBMEVBTmdJTUlBTkJBRG9BQ0F3REN3SkFJQVlvQWdnZ0MwY05BQ0FJSUFZb0FnQkhEUUFnQXlBQk5nSU1JQU5CQVRvQUNBd0RDeUFGSUFZb0FneExCRUFnQTBFQU5nSU1JQU5CQURvQUNBd0RCU0FCUVFGcVFRQWdBU0FLUnhzaEFTQUZRUUZxSVFVTUFnc0FDd3NnQkVFSWFrR0d0UU5CbmdSQkRpQUVRYWdCYWhBZElnRVFGeUlGUVJocVFkSTFFQTRhSUFVUUdDQURRUUEyQWd3Z0EwRUFPZ0FJSUFFUUhnc2dCRUhBQVdva0FDQURMUUFJSVFFZ0EwRVFhaVFBUVFFZ0FVVU5BaG9nQUNnQ0FCRGpIZ3dCQ3lBQUtBSUFJUVlnQWtHb0FXb1FTU0lLUVFocUlnQkJ5NmNNRUE0YVFRQWhBMEYvSVFRRFFDQUdLQUlrSUFOTkJFQWdBRUh6bWdrUURob2dBa0hJQW1vaUF5QUZJQUVvQWdBUStnY2dBQ0FERUJJYUlBQkI4NW9KRUE0YUlBTVFEeG9nQlNnQ0FDRUFJQU1nQ2tFTWFoQkNJQUFnQXlBQktBSUFRUkJxRU1BZUlBVkIyQWhxSVJJZ0F4QVBHaUFDUWVBQ2FpRUJJQVFoQXdOQUlBWW9BaVFpQnlBRFN3UkFJQVlvQWlBaUNDQURRUUZxSWdBZ0JDQUFJQWRKRzBFQ2RHb29BZ0FoQnlBSUlBTkJBblJxS0FJQUlRTWdBa0VBTmdMMEF5QUNJQWMyQXZBRElBSWdBellDN0FNZ0FpQVNOZ0xvQXlBQ0lBVW9BdWdtUVFGck5nTDRBd0pBSUFKQjZBTnFFTE1lQkVBZ0FpQUNRZWdEYWhDekhpSUlLQUlRTmdLZ0FTQUNJQWdwQWdnM0E1Z0JJQUlnQ0NrQ0FEY0RrQUVNQVFzZ0FrSElBbXBCbHE0RlFjQUZRUWdnQlNnQ0FCQVhJUXNnQVVHYm1na1FEaG9nQWtHUUFXb2lDQ0FGSUFNb0FnQVErZ2NnQVNBSUVCSWFJQUZCbEpvSkVBNGFJQUpCdUFKcUlna2dCU0FIS0FJQUVQb0hJQUVnQ1JBU0dpQUJRZk9hQ1JBT0dpQUpFQThhSUFnUUR4b2dDeEFZSUFKQ0FEY0RtQUVnQWtFQU5nS2dBU0FDUWdBM0E1QUJDeUFGS0FJQUlSTWdBa0ZBYXlJSUlBVWdBeWdDQUJDeUhpQUNRZEFBYWlJSklBaEI4cG9KRUMwZ0FrRXdhaUlMSUFVZ0F5Z0NBQkQ2QnlBQ1FlQUFhaUlESUFrZ0N4Qk9JQUpCOEFCcUlnd2dBMEdMNGdrUUxTQUNRU0JxSWcwZ0JTQUhLQUlBRUxJZUlBSkJnQUZxSWc0Z0RDQU5FRTRnQWtHNEFtb2lEeUFPUWZLYUNSQXRJQUpCRUdvaUVDQUZJQWNvQWdBUStnY2dBa0hvQTJvaUJ5QVBJQkFRVGlBQ1FjZ0NhaUlSSUFkQmxlOERFQzBnRXlBUklBSkJrQUZxRUw4ZUlCRVFEeG9nQnhBUEdpQVFFQThhSUE4UUR4b2dEaEFQR2lBTkVBOGFJQXdRRHhvZ0F4QVBHaUFMRUE4YUlBa1FEeG9nQ0JBUEdpQUFJUU1NQVFzTElBb1FVUXdDQzBGL0lBTWdCaWdDSUNBRFFRSjBhaWdDQUNJSUlBRkhHeUFFSUFSQmYwWWJJZ1JCZjBjRVFDQUFRZk9hQ1JBT0dpQUNRY2dDYWlJSElBVWdDQ2dDQUJENkJ5QUFJQWNRRWhvZ0FFSFUyd3NRRGhvZ0J4QVBHZ3NnQTBFQmFpRUREQUFMQUF0QkFBc2hBQ0FDUVlBRWFpUUFJQUFMR0FBZ0FDZ0NBQ2dDQkNBQUtBSUVLQUlBS0FJQUVMUUpDMzBCQkg4akFFRXdheUlESkFBZ0F5QUNOZ0lzSUFNZ0FDZ0M0QkVnQUVIa0VXb29BZ0JCbkFKc2FrR2NBbXNpQUNBQkVNa2VJZ1VReUI0aUJnUkFJQU1nQlJEcUVDSUVLQUlBTmdJc0lBUWdBallDQUNBREtBSXNJUVFMSUFaRkJFQWdBeUFBSUFFZ0EwRXNhaERISGtFQUlRUUxJQU5CTUdva0FDQUVDM3NCQlg4Z0FFR2tDR29vQWdBaUJVRUJheUVHQWtBRFFDQURJQVZHRFFFZ0FDZ0NvQWdnQVVFc2JHb2lCQzBBSUFSQUlBSWdBaWdDS0NJSElBUW9BaWhMQkg4Z0JDQUNFT0VHSUFJb0FpZ0ZJQWNMUVFGcU5nSW9JQUZCQVdwQkFDQUJJQVpIR3lFQklBTkJBV29oQXd3QkN3c2dCQ0FDRUxNSkN3dnlCUUVLZnlNQVFlQUZheUlDSkFBQ1FFRVlJQUZCbGdGc1FlUUFiaUlCSUFGQkdFMGJJZ1lnQUVHa0NHb29BZ0JORFFBZ0FrS0FnSUNBZ0FJM0Fvd0VJQUlnQWtFSWFpSUJOZ0tJQkNBQklBQW9BcXdJRU13ZUlBQW9BcUFJSWdFZ0FDZ0NwQWhCTEd4cUlRTURRQ0FCSUFOR0JFQWdBQkRnSGlBQUlBWVFnaEVnQWlnQ2lBUWlCU0FDS0FLTUJFRUZkR29oQ1NBQ1FiQUVhaUVLQTBBZ0JTQUpSZ1JBQTBBZ0FpZ0NqQVFnQ0VzRVFDQUNLQUtJQkJvZ0NFRUJhaUVJREFFTEN3VWdBQ2dDcEFnaUF5QUFLQUtzQ0NJQlFaWUJiRUdXQVdwQjVBQnVTUVJBSUFBZ0FVRUJkRUVDYWhEcEhpQUFLQUtrQ0NFREN5QUZLQUlBSVFjZ0FpQUZRUnhxTmdMY0JTQUNJQVUyQXRnRklBTkJBV3NoQ3lBSElBTndJUVJCQUNFQkFrQURRQ0FCSUFOSEJFQWdBQ2dDb0FnZ0JFRXNiR29pQmkwQUlFVUVRQ0FDUVpnRWFpSUVJQUpCMkFWcUVQd0ZJQVlnQkJDVkRDQUdJQUUyQWlnZ0JpQUhOZ0lrSUFBZ0FDZ0NyQWhCQVdvMkFxd0lJQUFnQUNnQ3NBaEJBV28yQXJBSURBTUxJQVlnQnlBRkVMa0pEUUlnQVNBR0tBSW9Td1JBSUFKQnVBVnFJZ01nQWtIWUJXb1EvQVVnQWtHWUJHb2dBeENVRENFRElBSWdBVFlDd0FRZ0FpQUhOZ0s4QkNBRElBWVE0UVlnQWlBQ0tBTEFCRUVCYWpZQ3dBUWdBQ0FFUVFGcUlBQW9BcVFJY0NBREVPZ2VJQUFnQUNnQ3JBaEJBV28yQXF3SUlBQWdBQ2dDc0FoQkFXbzJBckFJSUFNUXFnSU1Bd1VnQkVFQmFrRUFJQVFnQzBjYklRUWdBVUVCYWlFQkRBSUxBQXNMSUFKQm1BUnFRWWExQTBIckEwRU9JQUpCdUFWcUVCMGlBUkFYSVFRZ0NrR1dOUkFPR2lBRUVCZ2dBUkFlQ3lBRlFTQnFJUVVNQVFzTElBSkJBRFlDakFRZ0FrRUlhaUFDS0FLSUJCQTJEQUlMSUFFdEFDQUVRQ0FDS0FLTUJDSUVJQUlvQXBBRUlnVlBCRUFnQWtFSWFpQUZRUUYwUVFJZ0JSc1F6QjRnQWlnQ2pBUWhCQXNnQWlBRVFRRnFOZ0tNQkNBQ0tBS0lCQ0FFUVFWMGFpQUJFUG9GR2dzZ0FVRXNhaUVCREFBTEFBc2dBa0hnQldva0FBdnBBUUVCZnlNQVFUQnJJZ01rQUNBRElBSTJBZ3dnQXlBQk5nSUFJQU1nQTBFTWFqWUNCQUpBSUFKRkJFQWdBQ0FERU0wZURBRUxBa0FnQWlnQ0JDSUJFT0VJQkVBZ0EwRVFhaUFDS0FJa1FTUnFFRllhREFFTElBRkIrUE1QUmdSQUlBTkJFR29nQWlnQ0pFRWthaEJXR2d3QkN5QUJFTjBGQkVBZ0EwRVFhaUFDS0FJa1FTUnFFRllhREFFTElBRkI2UFVQUmdSQUlBTkJFR29RbXdVYURBRUxJQUZCcVBZUFJnUkFJQU5CRUdvUW13VWFEQUVMSUFGQndQWVBSZ1JBSUFOQkVHb1Ftd1VhREFFTElBTkJFR29nQXhETkhnc2dBQ0FEUVJCcUVGWWFDeUFEUVRCcUpBQUxKZ0FnQUJEWkhpQUFRZUFBRVBJUUlBQkJBRFlDakJnZ0FDQUFLQUtRR0VFQmFqWUNrQmdMS0FBZ0FFRUFOZ0xrQXlBQVFSZ1E3eEFnQUVFQU5nTHNBeUFBSUFBb0F2QURRUUZxTmdMd0F3dHBBUU4vSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBellDRENBRUlBTTJBZ2dnQUVHTUFXb2lBeEMvQVNJRklBQW9BZ2dnQkNnQ0NDQUJJQUlvQWdBUTdoNGFJQU1nQlJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FGSVFBZ0JFRVFhaVFBSUFBTEp3QWdBQ0FCSUFJZ0F5QUVRZTJVQlVIYXlBaEI3ckFJUWFDRUVrRzBoQkpCZ0lRU0VNa01DeHNBSUFBZ0FTQUNJQU1nQkVIQWd4SkIySU1TUWFDREVoQ0lCZ3RwQVFOL0l3QkJFR3NpQkNRQUlBQVFIQ0FBSUFBb0FneEJBV29pQXpZQ0RDQUVJQU0yQWdnZ0FFR01BV29pQXhDL0FTSUZJQUFvQWdnZ0JDZ0NDQ0FCSUFJb0FnQVE4UjRhSUFNZ0JSQW9JQU1nQXlnQ0dFRUJhallDR0NBRklRQWdCRUVRYWlRQUlBQUxHd0FnQUNBQklBSWdBeUFFUWZpQ0VrR1FneEpCMklJU0VJZ0dDd3dBSUFCQk1Hb1FxQUVnQUF1eUFRRUJmeU1BUWNBQmF5SUdKQUFnQmlBQ05nS3dBU0FHSUFFMkFyZ0JJQUFnQmlnQ3VBRWdCaWdDc0FFZ0F4RE5CeUlBUVlDQkVqWUNCQ0FBUWJTQkVqWUNBQ0FBSUFVMkFpZ2dBQ0FFTmdJa0lBQkJvSUVTTmdJQUlBVUVmeUFGQlNBR1FlQ21CVUVkUVFBZ0JrR2dBV29RSFNJQkVCY2lBa0VZYWtHb3JRZ1FEaG9nQWhBWUlBRVFIaUFBS0FJb0N4QlhJQUFvQWdoQkFVRUFRWnZGQ0VIZ3BnVkJIaEJMSUFaQndBRnFKQUFnQUF2RUFRRURmeU1BUVNCcklnSWtBQ0FDSUFBb0FpQTJBaGdnQWlBQUtRSVlOd01RSUFJZ0FDa0NFRGNEQ0NBQ0lBRWdBQ2dDSkJDWEFUWUNCQ0FDSUFFZ0FDZ0NLQkRQQXpZQ0FDQUJLQUlBSVFBakFFRVFheUlCSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlETmdJTUlBRWdBellDQ0NBQVFZd0JhaUlERU1VQ0lnUWdBQ2dDQ0NBQktBSUlJQUpCQ0dvZ0FpZ0NCQ0FDS0FJQUVQVWVHaUFESUFRUUtDQURJQU1vQWhoQkFXbzJBaGdnQkNFQUlBRkJFR29rQUNBQ1FTQnFKQUFnQUF1Q0FnRUJmeU1BUWRBQmF5SUdKQUFnQmlBQ05nTEFBU0FHSUFFMkFzZ0JJQVlnQkRZQ3ZBRWdBQ0FHS0FMSUFTQUdLQUxBQVNBRElBWW9BcndCRVBvZUlnQkJ3SUFTTmdJRUlBQkI5SUFTTmdJQUlBQWdCVFlDS0NBQVFlQ0FFallDQUNBRkJIOGdCUVVnQmtFSWFrSFlwQVZCSFVFQUlBWkJxQUZxRUIwaUFSQVhJZ0pCR0dwQnJLOElFQTRhSUFJUUdDQUJFQjRnQUNnQ0tBc1FWeUFBS0FJSVFRRkJBRUdheHdoQjJLUUZRUjRRU3dKQUlBQW9BaWdpQVVVTkFDQUJLQUlFUWNqcEQwY05BQ0FHUVFocVFkaWtCVUVpUVFBZ0JrR29BV29RSFNJQkVCY2lBa0VZYWtHSjZ3Z1FEaG9nQWhBWUlBRVFIZ3NnQmtIUUFXb2tBQ0FBQzc4Q0FRRi9Jd0JCd0FGcklnY2tBQ0FISUFJMkFyQUJJQWNnQVRZQ3VBRWdBQ0FIS0FLNEFTQUhLQUt3QVNBREVNMEhJZ0JCZ0lBU05nSUVJQUJCdElBU05nSUFJQUFnQmpZQ0xDQUFJQVUyQWlnZ0FDQUVOZ0lrSUFCQm9JQVNOZ0lBSUFVRWZ5QUZCU0FIUWRhaUJVRWVRUUFnQjBHZ0FXb1FIU0lCRUJjaUFrRVlha0c3b0FnUURob2dBaEFZSUFFUUhpQUFLQUlvQ3hCWElBQW9BZ2hCQVVFQVFhREVDRUhXb2dWQkh4QkxJQUFvQWl3aUFRUi9JQUVGSUFkQjFxSUZRU0JCQUNBSFFhQUJhaEFkSWdFUUZ5SUNRUmhxUWFXZ0NCQU9HaUFDRUJnZ0FSQWVJQUFvQWl3TEVGY2dBQ2dDQ0VFQlFRQkI0OE1JUWRhaUJVRWhFRXNnQUNnQ0pFVUVRQ0FIUWRhaUJVRWlRUUFnQjBHZ0FXb1FIU0lCRUJjaUFrRVlha0h5dkFnUURob2dBaEFZSUFFUUhnc2dCMEhBQVdva0FDQUFDOFFCQVFOL0l3QkJJR3NpQWlRQUlBSWdBQ2dDSURZQ0dDQUNJQUFwQWhnM0F4QWdBaUFBS1FJUU53TUlJQUlnQVNBQUtBSWtFSmNCTmdJRUlBSWdBU0FBS0FJb0VKY0JOZ0lBSUFFb0FnQWhBQ01BUVJCcklnRWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQVNBRE5nSUlJQUJCakFGcUlnTVF4UUlpQkNBQUtBSUlJQUVvQWdnZ0FrRUlhaUFDS0FJRUlBSW9BZ0FRK1I0YUlBTWdCQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUVJUUFnQVVFUWFpUUFJQUpCSUdva0FDQUFDNmNCQVFOL0lBRXRBQVFFUUNBQUVLZ0JJQUFnQVNnQ0FDSUNLUUlBTndJRUlBQWdBaWdDQ0RZQ0RDQUJLQUlBSWdCQkFEWUNDQ0FBUWdBM0FnQVBDd0pBSUFBb0Fnd2dBU2dDQUNJQktBSUVTUVJBSUFBUXFBRWdBQ0FCS0FJRUVOd2VEQUVMSUFCQkFEWUNDQXNnQUNBQktBSUVJZ00yQWdnRFFDQUNJQU5IQkVBZ0FrRUNkQ0lFSUFBb0FnUnFJQUVvQWdBZ0JHb29BZ0EyQWdBZ0FrRUJhaUVDREFFTEN3dTNBUUVCZnlNQVFkQUJheUlHSkFBZ0JpQUNOZ0xBQVNBR0lBRTJBc2dCSUFZZ0JEWUN2QUVnQUNBR0tBTElBU0FHS0FMQUFTQURJQVlvQXJ3QkVQb2VJZ0JCd1A4Uk5nSUVJQUJCOVA4Uk5nSUFJQUFnQlRZQ0tDQUFRZUQvRVRZQ0FDQUZSUVJBSUFaQkNHcEIvYU1GUVIxQkFDQUdRYWdCYWhBZElnRVFGeUlDUVJocVFaR2FDQkFPR2lBQ0VCZ2dBUkFlQ3lBRkVGY2dBQ2dDQ0VFQlFRQkJvTUVJUWYyakJVRWVFRXNnQmtIUUFXb2tBQ0FBQ3lrQUlBQWdBU0FDSUFNZ0JFRzBwUVZCbzhNSVFRRkJrSjhJUWFEL0VVRzAveEZCZ1A4UkVPa1NDK2tCQVFGL0l3QkJ3QUZySWdZa0FDQUdJQUkyQXJBQklBWWdBVFlDdUFFZ0FDQUdLQUs0QVNBR0tBS3dBU0FERU0wSElnQkJ3UDRSTmdJRUlBQkI5UDRSTmdJQUlBQWdCVFlDS0NBQUlBUTJBaVFnQUVIZy9oRTJBZ0FnQkVVRVFDQUdRYW1qQlVFZFFRQWdCa0dnQVdvUUhTSUJFQmNpQWtFWWFrSGJ2QWdRRGhvZ0FoQVlJQUVRSGlBQUtBSW9JUVVMSUFVRWZ5QUZCU0FHUWFtakJVRWVRUUFnQmtHZ0FXb1FIU0lCRUJjaUFrRVlha0dvclFnUURob2dBaEFZSUFFUUhpQUFLQUlvQ3hCWElBQW9BZ2hCQVVFQVFadkZDRUdwb3dWQkh4QkxJQVpCd0FGcUpBQWdBQXNiQUNBQUlBRWdBaUFESUFSQm1QNFJRYkQrRVVINC9SRVFpQVlMQ3dBZ0FFR1k0d0lRRkJvTEd3QWdBQ0FCSUFJZ0F5QUVRYmo5RVVIUS9SRkJtUDBSRUlnR0N4c0FJQUFnQVNBQ0lBTWdCRUdvL0JGQndQd1JRWWo4RVJDSUJnc2JBQ0FBSUFFZ0FpQURJQVJCNFBzUlFmajdFVUhBK3hFUWlBWUxzQVFDQVg4QmZpTUFRY0FCYXlJSUpBQWdDQ0FDTmdLd0FTQUlJQUUyQXJnQklBQWdDQ2dDdUFFZ0NDZ0NzQUVnQXhEbEJDSUFRYmp3RHpZQ0JDQUFRZXp3RHpZQ0FDQUFJQVkyQWl3Z0FDQUZOZ0lvSUFBZ0JEWUNKQ0FBUWRqd0R6WUNBQ0FBUVRCcUlBY1F1Z2tnQUNnQ0pDSUJCSDhnQVFVZ0NFSEJsUVZCSTBFQUlBaEJvQUZxRUIwaUFSQVhJZ0pCR0dwQjdyQUlFQTRhSUFJUUdDQUJFQjRnQUNnQ0pBc1FWeUFBS0FJSVFRRkJBRUhheUFoQndaVUZRU1FRU3lBQUtBSW9JZ0VFZnlBQkJTQUlRY0dWQlVFbFFRQWdDRUdnQVdvUUhTSUJFQmNpQWtFWWFrSDZtUWdRRGhvZ0FoQVlJQUVRSGlBQUtBSW9DeEJYSUFBb0FnaEJBVUVBUWVMQUNFSEJsUVZCSmhCTEFrQWdBQ2dDTENJQlJRMEFJQUVvQWdnZ0FDZ0NDRUVCUVFCQjNjRUlRY0dWQlVFb0VFc2dBQ2dDTENJQkJIOENmMEVBSUFFb0FnUWlBU2tERUVLQXdJQ01nSUFJZ3lJSklBbENBWDJEVUEwQUdrRUJJQUZCdVBBUEVFZ05BQm9nQVVHNDh3OFFTQXNGUVFBTERRQWdDRUhCbFFWQktVRUFJQWhCb0FGcUVCMGlBUkFYSWdKQkdHcEI0ZUFJRUE0YUlBSVFHQ0FCRUI0TElBQW9BalFpQWlBQUtBSTRRUUowYWlFQklBaEJHR29oQXdOQUlBRWdBa2NFUUNBQ0tBSUFJZ1JGQkVBZ0NFSEJsUVZCTEVFQUlBaEJvQUZxRUIwaUJSQVhJUVlnQTBHWnB3Z1FEaG9nQmhBWUlBVVFIZ3NnQkJCWElBQW9BZ2hCQVVFQVFkM0VDRUhCbFFWQkxSQkxJQUpCQkdvaEFnd0JDd3NnQ0VIQUFXb2tBQ0FBQzNBQkFYOGpBRUVRYXlJRkpBQWdCU0FDTmdJQUlBVWdBVFlDQ0NBQUlBVW9BZ2dnQlNnQ0FDQURFUE1HSWdCQitQb1JOZ0lFSUFCQnNQc1JOZ0lBSUFBZ0JEWUNKQ0FBUVpqN0VUWUNBQ0FFRUZjZ0FDZ0NDRUVBUVFCQmo5QUlRWTJ3QlVFZUVFc2dCVUVRYWlRQUlBQUxHd0FnQUNBQklBSWdBeUFFUWRENkVVSG8raEZCc1BvUkVJZ0dDNmNCQVFKL0l3QkJJR3NpQ0NRQUlBZ2dBallDRUNBSUlBRTJBaGdnQ0NBRk5nSUlJQWdnQkRZQ0JDQUlJQVkyQWdBakFFRVFheUlCSkFBZ0NDZ0NBQ0VDSUFnb0FnZ2hCQ0FJS0FJRUlRVWdDQ2dDRUNFR0lBZ29BaGdoQ1NBQklBY3BBZ0EzQXdnZ0FDQUpJQVlnQXlBRklBUWdBaUFCUVFocUVOY0pJZ0JCNlBrUk5nSUVJQUJCb1BvUk5nSUFJQUZCRUdva0FDQUFRWWo2RVRZQ0FDQUlRU0JxSkFBZ0FBc1ZBQ0FBSUFGQm1QQVBRYXp3RDBINDd3OFF6Z3dMSlFBZ0FDQUJJQUlnQXlBRUlBVWdCaUFIUWFLTkJVSEErUkZCMlBrUlFhRDVFUkRJRWdzU0FDQUFRY3dBUWJYL0EwRjhRUU1ReWdFTHRRRUJBbjhqQUVFZ2F5SUtKQUFnQ2lBQ05nSVFJQW9nQVRZQ0dDQUtJQVUyQWdnZ0NpQUVOZ0lFSUFvZ0NEWUNBQ01BUVJCcklnRWtBQ0FLS0FJQUlRSWdDaWdDQ0NFRUlBb29BZ1FoQlNBS0tBSVFJUWdnQ2lnQ0dDRUxJQUVnQ1NrQ0FEY0RDQ0FBSUFzZ0NDQURJQVVnQkNBQ0lBRkJDR29RMXdraUFFSFkrQkUyQWdRZ0FFR1ErUkUyQWdBZ0FVRVFhaVFBSUFBZ0J6WUNTQ0FBSUFZMkFrUWdBRUg0K0JFMkFnQWdDa0VnYWlRQUlBQUxuZ0VCQVg4akFFSFFBV3NpQmlRQUlBWWdBallDd0FFZ0JpQUJOZ0xJQVNBR0lBUTJBcndCSUFBZ0JpZ0N5QUVnQmlnQ3dBRWdBeUFHS0FLOEFSRGdHU0lBUVpqNEVUWUNCQ0FBUWN6NEVUWUNBQ0FBSUFVMkFpZ2dBRUc0K0JFMkFnQWdCVVVFUUNBR1FRaHFRZGVaQlVFWlFRQWdCa0dvQVdvUUhTSUJFQmNpQWtFWWFrSGJ2QWdRRGhvZ0FoQVlJQUVRSGdzZ0JrSFFBV29rQUNBQUN4TUFJQUJCMUFCcUVGNGdBRUVvYWhBaklBQUxDd0FnQUVFc2FoQmVJQUFMRlFBZ0FDQUJRZGp2RDBIczd3OUJ1TzhQRU00TUN6VUFJQUFnQVNnQ0FEWUNBQ0FBUVFScUlBRkJCR29RZ3dnYUlBQkJQR29nQVVFOGFoQ0xFU0FBSUFFb0FvZ0JOZ0tJQVNBQUN4a0FJQUF0QUZnRVFDQUFRUWhxRUpVQklBQkJBRG9BV0FzTG93RUJCSDhqQUVFUWF5SUNKQUFnQUNnQ1NDSUJJQUFvQWt3aUEwRURkR29oQkFOL0lBRWdCRVlFZnlBQ0lBQW9BZ0EyQWdnZ0FrRUlha0VFRU04SElRRWdBRUVFYWhENUFpRUFJQUpCRUdva0FDQUJJQUZCQkhaeklBTkJrckdvK2dkcUlnRkJBblpCa3JHbytnZHphaUFCY3lJQklBQWdBVUVDZGtHU3NhajZCM05xYzBHVHBBWnpCU0FESUFFZ0FVRUVhaEMwRVNFRElBRkJDR29oQVF3QkN3c0xtZ0VDQW44QmZpQUJJQUJCaUN4cUtBSUFTd1JBSUFBb0FvQXNJUU1nQUNFQ0lBQWdBVUhBQUU4RWYwRi9JQUd0UXRnQWZpSUVweUFFUWlDSXB4c1FGU0VDSUFFRlFjQUFDellDaUN3Z0FDQUNOZ0tBTEVFQUlRRURRQ0FBS0FLRUxDQUJUUVJBSUFBZ0F4QTJCU0FCUWRnQWJDSUNJQUFvQW9Bc2FpQUNJQU5xSWdJUTR3WWFJQUpCQ0dvUWxRRWdBVUVCYWlFQkRBRUxDd3NMYVFFRGZ5TUFRUkJySWdRa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdNMkFnd2dCQ0FETmdJSUlBQkJqQUZxSWdNUXZ3RWlCU0FBS0FJSUlBUW9BZ2dnQVNBQ0tBSUFFSm9mR2lBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JTRUFJQVJCRUdva0FDQUFDeWdBSUFBb0FnQkJDR3BCem9zTVFmVHREQ0FBS0FJRUxRQUFHeEFPR2lBQUtBSUVRUUE2QUFBTG93VUJCSDhqQUVFUWF5SUVKQUFDUUFKQUFrQUNRQ0FDRGdNREFBRUNDeUFESUFBUTVRSWFEQUlMSUFSQkFEWUNDQ0FFSUFSQkNHbzJBZ1FnQXlBQlFZd0JheUlCSUFBZ0FTZ0NpQUVnQUNnQ2lBRkpJZ0liRU9VQ0lRTWdCQ0FFS0FJSVFRRnFOZ0lJSUFOQmpBRnFJQUFnQVNBQ0d4RGxBaG9nQkVFQU5nSUFJQVFRdkFrTUFRc2dBa0VJVEFSQUlBQWdBVVlOQVNBRVFRQTJBZ2dnQkNBRVFRaHFOZ0lFSUFNZ0FCRGxBaUVDSUFRZ0JDZ0NDRUVCYWpZQ0NDQUNJUU1EUUFKQUFrQWdBU0FBUVl3QmFpSUZSd1JBSUFOQmpBRnFJUVlnQUNnQ2xBSWdBeWdDaUFGSkJFQWdCaUFERU9VQ0dpQUVJQVFvQWdoQkFXbzJBZ2dEUUNBQ0lBTkdCRUFnQWlFRERBUUxJQUFvQXBRQ0lBTkJCR3NvQWdCUERRTWdBeUFEUVl3QmF5SURFT1FDR2d3QUN3QUxJQVlnQlJEbEFob2dCQ0FFS0FJSVFRRnFOZ0lJREFJTElBUkJBRFlDQUNBRUVMd0pEQVFMSUFNZ0JSRGtBaG9MSUFVaEFDQUdJUU1NQUFzQUN5QUFJQUFnQWtFQmRpSUdRWXdCYkNJSGFpSUZJQVlnQXlBR0VMMEpJQVVnQVNBQ0lBWnJJZ0lnQXlBSGFpQUNFTDBKSUFSQkFEWUNDQ0FFSUFSQkNHbzJBZ1FnQlNFQ0EwQUNRQ0FBSUFWR0JFQURRQ0FCSUFKR0RRSWdBeUFDRU9VQ0lRQWdCQ0FFS0FJSVFRRnFOZ0lJSUFKQmpBRnFJUUlnQUVHTUFXb2hBd3dBQ3dBTElBRWdBa1lFUUFOQUlBQWdCVVlOQWlBRElBQVE1UUloQVNBRUlBUW9BZ2hCQVdvMkFnZ2dBRUdNQVdvaEFDQUJRWXdCYWlFRERBQUxBQVVDUUNBQ0tBS0lBU0FBS0FLSUFVa0VRQ0FESUFJUTVRSWFJQVFnQkNnQ0NFRUJhallDQ0NBQ1FZd0JhaUVDREFFTElBTWdBQkRsQWhvZ0JDQUVLQUlJUVFGcU5nSUlJQUJCakFGcUlRQUxJQU5CakFGcUlRTU1BZ3NBQ3dzZ0JFRUFOZ0lBSUFRUXZBa0xJQVJCRUdva0FBdHVBUUovQWtBZ0FDZ0NHQ0FCS0FJRVNRUkFJQUFRWGlBQUlBRW9BZ1FRbVJFTUFRc2dBRUVBTmdJVUN5QUFJQUVvQWdRaUFqWUNGQU5BSUFJZ0Ewc0VRQ0FEUVFOMElnSWdBQ2dDRUdvZ0FTZ0NBQ0FDYWlrQ0FEY0NBQ0FEUVFGcUlRTWdBQ2dDRkNFQ0RBRUxDd3M5QVFGL0l3QkJFR3NpQWlRQUlBQWdBVWNFUUNBQ0lBRkJRR3MyQWdnZ0FpQUJLQUpBSUFGSE9nQU1JQUFnQWtFSWFoQ2VId3NnQWtFUWFpUUFDMGNCQVg4Z0FTMEFCQVJBSUFBUVhpQUFJQUVvQWdBaUFpa0NBRGNDRUNBQUlBSW9BZ2cyQWhnZ0FTZ0NBQ0lBUVFBMkFnZ2dBRUlBTndJQUR3c2dBQ0FCS0FJQUVKUWZDNWNHQWdWL0FYNGpBRUh3QUdzaUJDUUFJQVJDZ0lDQWdDQTNBMmdnQkNBRVFkUUFhallDWkNBRVFvQ0FnSURBQURjQ1RDQUVJQVJCT0dvMkFrZ2dBVUVJYWlJRklBTVFEaG9DUUNBQ0xRQUJSUTBBSUFJcEF4Z2lDVUlJZzFBRVFDQUNMUUFBSUFsQ0JJTlFjZzBCQ3lBRlFkcnBCaEFPR2lBRklBSW9BZ1FvQWdBUURob2dCVUdMNWdZUURob0xJQVZCbWY4SUVBNGFJQUJCQ0dvaEIwRUFJUU1EUUNBQ0xRQUFJQU5OQkVBZ0JVSHY5Z2dRRGhvZ0FpZ0NFQVJBSUFWQjFkc0xFQTRhSUFBb0FnUWhBeUFFSUFJb0FoQTJBaVFnQkVFQk5nSWdJQVFnQWpZQ0hDQUVJQWMyQWhnZ0JDQUROZ0lRSUFRZ0JFRTRhallDRkNBRVFTaHFJZ01nQkVFUWFoRHVCQ0FGSUFNUUVob2dBeEFQR2dzZ0JFRUJPZ0FQSUFRZ0FUWUNBQ0FFSUFSQkQybzJBZ1JCQUNFREEwQUNRQ0FDTFFBQklBTk5CRUJCQUNFREEwQWdBeUFDTFFBQ1R3MENJQUlvQWdnZ0EwRURkR29pQVMwQUJFSC9BVWNFUUNBRUVKSWZJQVVnQVNnQ0FCQU9HaUFGUWZ2ZkNSQU9HaUFBS0FJRUlRWWdCQ0FCUVFScU5nSWtJQVJCQVRZQ0lDQUVJQUkyQWh3Z0JDQUhOZ0lZSUFRZ0JqWUNFQ0FFSUFSQk9HbzJBaFFnQkVFb2FpSUJJQVJCRUdvUTdRUWdCU0FCRUJJYUlBRVFEeG9MSUFOQkFXb2hBd3dBQ3dBTElBSW9BZ1FnQTBFRGRHb2lBUzBBQkVIL0FVY0VRQ0FFRUpJZklBVWdBU2dDQUJBT0dpQUZRZnZmQ1JBT0dpQUFLQUlFSVFZZ0JDQUJRUVJxTmdJa0lBUkJBVFlDSUNBRUlBSTJBaHdnQkNBSE5nSVlJQVFnQmpZQ0VDQUVJQVJCT0dvMkFoUWdCRUVvYWlJQklBUkJFR29RN2dRZ0JTQUJFQklhSUFFUUR4b0xJQU5CQVdvaEF3d0JDd3NnQkVFNGFoQ3dCQ0FFUWZBQWFpUUFEd3NnQWlnQ0RDQURRUU4wYWlFR0lBTUVRQ0FGUWZUdERCQU9HZ3NnQmlnQ0FDSUlRWDlIQkVBZ0JTQUlFS1FiRUE0YUlBVkI3YlVNRUE0YUN5QUFLQUlFSVFnZ0JDQUdLQUlFTmdJa0lBUWdBallDSENBRUlBYzJBaGdnQkNBSU5nSVFJQVFnQkVFNGFqWUNGQ0FFUVFFMkFpQWdCRUVvYWlJR0lBUkJFR29RN2dRZ0JTQUdFQklhSUFOQkFXb2hBeUFHRUE4YURBQUxBQXRZQVFKL0l3QkJFR3NpQWlRQUlBQWdBUkNlRENJQVFvQ0FnSUFnTndJd0lBQWdBRUVjYWlJRE5nSXNJQUlnQVVFc2FqWUNDQ0FDSUFFb0Fpd2dBVUVjYWtjNkFBd2dBeUFDUVFocUVKWWZJQUpCRUdva0FDQUFDeG9BSUFBZ0FFSG9DR29vQWdBaUFFRUJkRUVDSUFBYkVKd2ZDeWNBSUFBZ0FTQUNJQU1nQkVIK2tBVkJtOFVJUWFpdENFR1k3dzlCck84UFFmanVEeERKREF1V0FRRUVmeU1BUVJCcklnRWtBQ0FBUWVRSWFpZ0NBQ0VDSUFBb0F1QUlJUVFnQVVFQU5nSUlBa0FnQWtFQVRBUkFRUUFoQUF3QkN5QUNJUUFEUUFKQUlBQkJBRXdFUUVFQUlRQkJBQ0VEREFFTElBQkJqQUZzRUJVaUF3MEFJQUJCQVhZaEFBd0JDd3NnQVVFSWFpQURFR3dMSUFRZ0JDQUNRWXdCYkdvZ0FpQURJQUFRdlFrZ0FVRUlha0VBRUd3Z0FVRVFhaVFBQzVZQkFnSi9BWDRnQVNBQVFlZ0lhaWdDQUVzRVFDQUFLQUxnQ0NFRElBQWhBaUFBSUFGQkNFOEVmMEYvSUFHdFFvd0JmaUlFcHlBRVFpQ0lweHNRRlNFQ0lBRUZRUWdMTmdMb0NDQUFJQUkyQXVBSVFRQWhBUU5BSUFBb0F1UUlJQUZOQkVBZ0FDQURFRFlGSUFGQmpBRnNJZ0lnQUNnQzRBaHFJQUlnQTJvaUFoRGxBaG9nQWhDdkJSb2dBVUVCYWlFQkRBRUxDd3NMYndFQ2Z3SkFJQUFvQWtnZ0FTZ0NCRWtFUUNBQUVKVUJJQUFnQVNnQ0JCQ3ZFUXdCQ3lBQVFRQTJBa1FMSUFBZ0FTZ0NCQ0lDTmdKRUEwQWdBaUFEU3dSQUlBTkJBM1FpQWlBQUtBSkFhaUFCS0FJQUlBSnFLUUlBTndJQUlBTkJBV29oQXlBQUtBSkVJUUlNQVFzTEMwZ0JBWDhnQVMwQUJBUkFJQUFRbFFFZ0FDQUJLQUlBSWdJcEFnQTNBa0FnQUNBQ0tBSUlOZ0pJSUFFb0FnQWlBRUVBTmdJSUlBQkNBRGNDQUE4TElBQWdBU2dDQUJDZEh3c2JBQ0FBSUFFcEFnQTNBZ0FnQUVFSWFpQUJRUWhxRUl3UklBQUxad0VEZndKQUlBQW9BaWdnQVNnQ0JFa0VRQ0FBRUNNZ0FDQUJLQUlFRUw0SkRBRUxJQUJCQURZQ0pBc2dBQ0FCS0FJRUlnTTJBaVFEUUNBQ0lBTkhCRUFnQWtFQ2RDSUVJQUFvQWlCcUlBRW9BZ0FnQkdvb0FnQTJBZ0FnQWtFQmFpRUNEQUVMQ3d0Z0FDQUJJQUlRK2dNRVFDQUJFUGtERHdzZ0FTQUNFUGdEQkVBZ0FSRDNBdzhMSUFJUTZRSUVRQ0FCRU9nQ0R3c2dBaERVQXdSQUlBRVEwd01QQ3lBQ0VPY0NCRUFnQVJEbUFnOExRUUFoQUNBQ0VOSURCSDhnQVJEUkF3VkJBQXNMcHdFQkJIOGdBQkFjSXdCQk1Hc2lCQ1FBSUFSQkNHb2dBU2dDQUNBQ0tBSUFJQU10QUFBUTVRY2lCU2dDQ0NFR0lBUWdCVFlDQkNBRUlBWTJBZ0FDUUNBQVFSQnFJZ1ZCSEdvaUJ5QUVFTDBCSWdBRVFDQUFLQUlNSVFBTUFRc2dCU0FGRUtZRUlBRW9BZ0FnQWlnQ0FDQURMUUFBRU9VSElnQVFLQ0FGSUFVb0FoaEJBV28yQWhnZ0JDQUFOZ0lFSUFRZ0JqWUNBQ0FISUFRUXZBRUxJQVJCTUdva0FDQUFDN0VCQVFSL0lBQVFIQ01BUVRCcklnVWtBQ0FGUVFocUlBRW9BZ0FnQWlnQ0FDQURLQUlBSUFRb0FnQVF1Z3NpQmlnQ0NDRUhJQVVnQmpZQ0JDQUZJQWMyQWdBQ1FDQUFRUkJxSWdaQkhHb2lDQ0FGRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQmlBR0VLWUVJQUVvQWdBZ0FpZ0NBQ0FES0FJQUlBUW9BZ0FRdWdzaUFCQW9JQVlnQmlnQ0dFRUJhallDR0NBRklBQTJBZ1FnQlNBSE5nSUFJQWdnQlJDOEFRc2dCVUV3YWlRQUlBQUxDd0FnQUVFb2FoQWpJQUFMb3dFQkJIOGdBQkFjSXdCQk1Hc2lBeVFBSUFOQkVHb2dBU2dDQUNBQ0tBSUFFTUFMSWdRb0FnZ2hCU0FESUFRMkFnd2dBeUFGTmdJSUFrQWdBRUVRYWlJRVFSeHFJZ1lnQTBFSWFoQzlBU0lBQkVBZ0FDZ0NEQ0VBREFFTElBUWdCQkNsQkNBQktBSUFJQUlvQWdBUXdBc2lBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQURJQUEyQWd3Z0F5QUZOZ0lJSUFZZ0EwRUlhaEM4QVFzZ0EwRXdhaVFBSUFBTHl3RUJCSDhnQUJBY0l3QkJRR29pQnlRQUlBZEJFR29nQVNnQ0FDQUNLQUlBSUFNb0FnQWdCQ2dDQUNBRktBSUFJQVlvQWdBUXlRc2lDQ2dDQ0NFSklBY2dDRFlDRENBSElBazJBZ2dDUUNBQVFSQnFJZ2hCSEdvaUNpQUhRUWhxRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQ0NBSUVQTUZJQUVvQWdBZ0FpZ0NBQ0FES0FJQUlBUW9BZ0FnQlNnQ0FDQUdLQUlBRU1rTElnQVFLQ0FJSUFnb0FoaEJBV28yQWhnZ0J5QUFOZ0lNSUFjZ0NUWUNDQ0FLSUFkQkNHb1F2QUVMSUFkQlFHc2tBQ0FBQzU0Q0FnTitBbjhqQUVFd2F5SUFKQUFDUUNBQUFuNGdBaWdDQkNJSFFmQ0ZFRVlFUUVLQWdJQ0FJQXdCQ3lBSFFmQ3FFa2NOQVNBQ05RSWtJUU1nQWlnQ0hEVUNIQ0VGSUFJb0FoZ2hBa0tBZ0lDQUVBc2lCQ0FEaENJRE53TVlJQUFnQXpjRENDQUFRU0JxSUFFZ0FFRUlhaEN2QkNBQUtRTWdJZ05DZ0lDQWdIQ0RRb0NBZ0lBUVVnMEFJQUFnQkNBRmhDSUVOd01RSUFBZ0JEY0RBQ0FBUVNCcUlBRWdBQkN2QkNBQUtRTWdJZ1JDZ0lDQWdIQ0RRb0NBZ0lBUVVnMEFJQUVnQWhDckFpSUNSUTBBSUFBZ0FqWUNJQ0FCS0FJQUlRSWdBQ0FFUGdJb0lBQWdBaUFBUVNCcUlBQkJLR29pQWhDZkFqWUNMQ0FCS0FJQUlRRWdBQ0FEUGdJb0lBRWdBRUVzYWlBQ0VNQUpJUVlMSUFCQk1Hb2tBQ0FHQzNrQkEzOGpBRUd3QVdzaUFTUUFJQUZCb0FGcUlnTWdBaER0QkNBQlFaQUJhaUlFSUFJUTdnUWdBUkJKSWdWQkNHb2lBa0dkaWdVUURob2dBaUFERUJJYUlBSkIydWtHRUE0YUlBSWdCQkFTR2lBQ1FZdm1CaEFPR2lBQUlBVkJER29RUWlBRkVGRWdCQkFQR2lBREVBOGFJQUZCc0FGcUpBQUx1Z0VDQVg0QmZ5TUFRU0JySWdBa0FBSkFBa0FnQWlnQ0JFSHdoUkJHQkVCQ2dJQ0FnQ0FoQXd3QkN5QUNFTElDSWdKRkJFQU1BZ3NnQWpVQ0hFS0FnSUNBRUlRaEF5QUNLQUlZSVFJTElBQWdBemNEQ0NBQUlBTTNBd0FnQUVFUWFpQUJJQUFRcndRZ0FDa0RFQ0lEUW9DQWdJQndnMEtBZ0lDQUVGSU5BQ0FCSUFJUXF3SWlBa1VOQUNBQUlBSTJBaEFnQVNnQ0FDRUJJQUFnQXo0Q0hDQUJJQUJCRUdvZ0FFRWNhaENmQWlFRUN5QUFRU0JxSkFBZ0JBc1BBQ0FBSUFFZ0FrR3k2QVlRamdJTER3QWdBQ0FCSUFKQkJFRUVFUFVFQ3c4QUlBQWdBU0FDUWREb0JoQ09BZ3NQQUNBQUlBRWdBa0VFUVFNUTlRUUxEd0FnQUNBQklBSkIrdWdHRUk0Q0N3OEFJQUFnQVNBQ1FRUkJBaEQxQkFzUEFDQUFJQUVnQWtHNjZBWVFqZ0lMRHdBZ0FDQUJJQUpCQTBFRUVQVUVDdzhBSUFBZ0FTQUNRZGpvQmhDT0Fnc1BBQ0FBSUFFZ0FrRURRUU1ROVFRTER3QWdBQ0FCSUFKQmd1a0dFSTRDQ3c4QUlBQWdBU0FDUVFOQkFoRDFCQXNQQUNBQUlBRWdBa0hDNkFZUWpnSUxEd0FnQUNBQklBSkJBa0VFRVBVRUN3OEFJQUFnQVNBQ1FlRG9CaENPQWd0WEFRRi9Jd0JCSUdzaUFpUUFJQUlnQUNnQ0lEWUNHQ0FDSUFBcEFoZzNBeEFnQWlBQUtRSVFOd01JSUFJZ0FTQUFLQUlrRU04RE5nSUVJQUVvQWdBZ0FrRUlhaUFDUVFScUVMTURJUUFnQWtFZ2FpUUFJQUFMRHdBZ0FDQUJJQUpCQWtFREVQVUVDdzhBSUFBZ0FTQUNRWXJwQmhDT0Fnc1BBQ0FBSUFFZ0FrRUNRUUlROVFRTER3QWdBQ0FCSUFKQnl1Z0dFSTRDQ3cwQUlBQWdBU0FDUVFRUXl3d0xEd0FnQUNBQklBSkI2T2dHRUk0Q0N3MEFJQUFnQVNBQ1FRTVF5d3dMRHdBZ0FDQUJJQUpCa3VrR0VJNENDdzBBSUFBZ0FTQUNRUUlReXd3TEN3QWdBRUhkOEFZUUZCb0xGZ0JCQUNFQUlBSVEwZ01FZnlBQkVORURCVUVBQ3dzTEFDQUFRZXorQmhBVUdnc1dBRUVBSVFBZ0FoRG5BZ1IvSUFFUTVnSUZRUUFMQ3dzQUlBQkI4UHdHRUJRYUN4WUFRUUFoQUNBQ0VOUURCSDhnQVJEVEF3VkJBQXNMQ3dBZ0FFRzYvUVlRRkJvTEZnQkJBQ0VBSUFJUTZRSUVmeUFCRU9nQ0JVRUFDd3NZQUVFQUlRQWdBU0FDRVBnREJIOGdBUkQzQXdWQkFBc0xHQUJCQUNFQUlBRWdBaEQ2QXdSL0lBRVErUU1GUVFBTEN3c0FJQUJCaS93Q0VCUWFDeFlBUVFBaEFDQUNFSVVHQkg4Z0FSQ0VCZ1ZCQUFzTEd3QWdBQ0FDS0FJTUtBSUlJQUVvQWdSQkEzUnFLQUlBRUJRYUM3RUNBZ04vQVg0Z0FTZ0NCQ0VFSUFJb0FnUWhBU0FBQW40Z0F5Z0NCRUVDUmdSQVFnQWdBU2dDTUNBRVRRMEJHaUFCS0FJc0lBUkJBM1JxS1FJQURBRUxJQU1wQWdBaEJ5QUVJQUVvQWpBaUEwOEVRQ0FFUVFGcUlnSWdBU2dDTkVzRVFDQUJLQUlzSVFBZ0FVRWNhaUlGSUFJUW1SRkJBQ0VEQTM4Z0FTZ0NNQ0FEVFFSL0lBVWdBQkEySUFFb0FqQUZJQU5CQTNRaUJpQUJLQUlzYWlBQUlBWnFLUUlBTndJQUlBTkJBV29oQXd3QkN3c2hBd3NnQXlBQ0lBSWdBMGtiSVFBRFFDQUFJQU5HUlFSQUlBRW9BaXdnQTBFRGRHcENBRGNDQUNBRFFRRnFJUU1NQVFzTElBRWdBallDTUFzZ0I2Y2hBZ0pBSUFFb0Fpd2dCRUVEZEdvaUFTZ0NCRUVCUndSQUlBRWdBallDQUNBQlFRRTJBZ1FNQVF0Q0FDQUJLQUlBSUFKSERRRWFDeUFIQ3pjQ0FBc2JBQ0FBSUFJb0Fnd29BZ1FnQVNnQ0JFRURkR29vQWdBUUZCb0xSUUFnQUNnQ0JDRUFJQUVvQWdRaEFRSi9JQUlvQWdSQjhJVVFSZ1JBUVFBZ0FTZ0NGQ0FBVFEwQkdpQUJLQUlRSUFCQkFuUnFLQUlBRHdzZ0FTQUFJQUlRbWhFTEMvVVpBUVovSXdCQm9BUnJJZ2NrQUNBSElBTTJBcEFDSUFjZ0FrRUJhaUlJUVJKTEJIOUJyT0lHQlNBSVFRSjBRZUMrRW1vb0FnQUxJZ2cyQW93Q0lBZENnSUNBZ0NBM0E0QUNJQWNnQjBIc0FXbzJBdndCSUFkQ2dJQ0FnTUFBTndMa0FTQUhJQWRCMEFGcU5nTGdBU0FEQkVBZ0IwSFFBV3BCQUNBREVKb1JHaUFIS0FLTUFpRUlDeUFFS0FJQUlRTWdCMEVBT2dCMElBY2dBellDY0NBSFFUaHFJQWRCMEFGcUVJTUlJUWxCR0JBVklnTkI2UFlSTmdJQUlBTWdCallDRkNBRElBRTJBaEFnQXlBRU5nSUlJQU1nQjBHTUFtbzJBZ1FnQXlBSFFaQUNhallDRENBSElBTTJBckFDSUFkQitBQnFJQUVnQWtFRGRFSFE5UkZxSUFnZ0IwSHdBR29nQlNBSklBZEJvQUpxSWdJUXd3a2dBaEFXSUFrUXNBUUNRQ0FIS0FKNElnSkZCRUFnQUVJQU53SUFJQUJCQURZQ0NBd0JDeUFDTFFBWVFRUnhCRUFnQjBLQWdJQ0FnQUUzQWl3Z0J5QUhRUWhxSWdJMkFpZ2dBaUFIS0FMRUFSQTVJQWNvQXNBQklnTWdCeWdDeEFGQkEzUnFJUUlEUUNBQ0lBTkdCRUFnQjBFQlFRTWdCeWdDZUNJQ0tBSWtRUUZ4SUFJb0FpQnlHellDQkNBSFFRQTJBcFFDSUFGQjROQUFhaUVGSUFGQnhPTUFhaWdDQUNBQlFjempBR29vQWdBaUFrR1dBV3hCbGdGcVFlUUFia2tFUUNBRklBSkJBWFJCQW1vUW9nd0xJQWRCbUFScUlBVWdCMEg0QUdvaUFoRGxCaUFISUFkQmxBSnFOZ0tjQWlBSElBSTJBcGdDSUFFb0FzUmpJZ2xCQVdzaENpQUJRY0RqQUdvb0FnQWhCaUFIS0FLY0JDRUlJQWNvQXBnRUlRSkJBQ0VEQWtBQ2Z3SkFBMEFnQXlBSlJnMEJJQVlnQWtIa0FHeHFJZ1F0QUZoRkJFQWdCMEdnQW1vaUNTQUhRWmdDYWhDR0F5QUVJQWtROFFRaEJDQUhRYWdDYWhDVkFTQUdJQUpCNUFCc2FpSUNJQU0yQW1BZ0FpQUlOZ0pjSUFFZ0FTZ0N6R05CQVdvMkFzeGpJQUZCME9NQWFpSUNJQUlvQWdCQkFXbzJBZ0FnQkVIVUFHb01Bd3NnQkNBSUlBZEIrQUJxRVBBRVJRUkFJQU1nQkNnQ1lFc0VRQ0FIUWNBRGFpSUdJQWRCbUFKcUVJWURJQWRCb0FKcUlBWVE3d1FpQmlBRE5nSmdJQVlnQ0RZQ1hDQUhRY2dEYWhDVkFTQUdJQVFRK3dNZ0JpQUdLQUpnUVFGcU5nSmdJQVVnQWtFQmFpQUJLQUxFWTNBZ0JoRGtCaUFCSUFFb0FzeGpRUUZxTmdMTVl5QUJRZERqQUdvaUFpQUNLQUlBUVFGcU5nSUFJQVlRNmdJZ0JFSFVBR29NQkFzZ0FrRUJha0VBSUFJZ0NrY2JJUUlnQTBFQmFpRUREQUVMQ3lBRVFkUUFhaUVEREFJTElBZEJvQUpxUVlhMUEwSHJBMEVPSUFkQndBTnFFQjBpQWhBWElnTkJHR3BCbGpVUURob2dBeEFZSUFJUUhrRUFDeUVESUFGQjBPTUFhaUlDS0FJQUlRUWdCeUFCS0FJRUlBZEIrQUJxUVFSeUlBZEJDR29nQjBFRWFoQ2hEQ0lHTmdLVUFpQUNLQUlBSUFSR0JFQWdBeUFHTmdJQURBRUxJQUVvQXNSaklBRW9Bc3hqSWdKQmxnRnNRWllCYWtIa0FHNUpCRUFnQlNBQ1FRRjBRUUpxRUtJTUN5QUhRWmdFYWlBRklBZEIrQUJxSWdJUTVRWWdCeUFIUVpRQ2FqWUNuQUlnQnlBQ05nS1lBaUFCS0FMRVl5SUpRUUZySVFvZ0FTZ0N3R01oQmlBSEtBS2NCQ0VJSUFjb0FwZ0VJUUpCQUNFREEwQWdBeUFKUndSQUlBWWdBa0hrQUd4cUlnUXRBRmhGQkVBZ0IwR2dBbW9pQlNBSFFaZ0NhaENHQXlBRUlBVVE4UVFoQkNBSFFhZ0NhaENWQVNBR0lBSkI1QUJzYWlJQ0lBTTJBbUFnQWlBSU5nSmNJQUVnQVNnQ3pHTkJBV28yQXN4aklBRWdBU2dDMEdOQkFXbzJBdEJqSUFSQjFBQnFJUU1NQXdzZ0JDQUlJQWRCK0FCcUVQQUVCRUFnQjBHZ0Ftb2dCMEdZQW1vUWhnTUNRQ0FFTFFCWUJFQWdCQ0FIUWFBQ2FoRENDUXdCQ3lBRUlBZEJvQUpxRU9ZR0N5QUhRYWdDYWhDVkFTQUJJQUVvQXRCalFRRnFOZ0xRWXlBRVFkUUFhaUVEREFNTElBTWdCQ2dDWUVzRVFDQUhRY0FEYWlJR0lBZEJtQUpxRUlZRElBZEJvQUpxSUFZUTd3UWlCaUFETmdKZ0lBWWdDRFlDWENBSFFjZ0RhaENWQVNBR0lBUVErd01nQmlBR0tBSmdRUUZxTmdKZ0lBVWdBa0VCYWlBQktBTEVZM0FnQmhEa0JpQUJJQUVvQXN4alFRRnFOZ0xNWXlBQklBRW9BdEJqUVFGcU5nTFFZeUFHRU9vQ0lBUkIxQUJxSVFNTUF3VWdBa0VCYWtFQUlBSWdDa2NiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQWRCb0FKcVFZYTFBMEhyQTBFT0lBZEJ3QU5xRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBRVFIa0VBSVFNTElBQWdBeWdDQURZQ0FDQUFJQWNvQW5ncEF5QTNBZ1FnQjBFSWFoQWpEQU1GSUFFb0FnUWhCQ0FIUVFBMkFzQURJQWNnQnlnQ0xEWUNtQVFnQjBFQU5nS1lBaUFIUVFBMkFwUUNJQWNnQkNBSFFjQURhaUFIUVpnRWFpQURJQWRCbUFKcUlBZEJsQUpxSUFOQkJHb1Fvd3cyQXFBQ0lBTkJDR29oQXlBSFFRaHFJQWRCb0FKcUVDUU1BUXNBQ3dBTElBZEJBRFlDbUFJZ0FVSFU0d0JxSVFVZ0FVRzQ5Z0JxS0FJQUlBRkJ3UFlBYWlnQ0FDSUNRWllCYkVHV0FXcEI1QUJ1U1FSQUlBVWdBa0VCZEVFQ2FoQ2dEQXNnQjBFSWFpQUZJQWRCK0FCcUlnSVE1UVlnQnlBSFFaZ0NhallDbkFRZ0J5QUNOZ0tZQkNBQktBSzRkaUlKUVFGcklRb2dBVUcwOWdCcUtBSUFJUVlnQnlnQ0RDRUlJQWNvQWdnaEFrRUFJUU1DUUFKL0FrQURRQ0FESUFsR0RRRWdCaUFDUWVRQWJHb2lCQzBBV0VVRVFDQUhRYUFDYWlJSklBZEJtQVJxRUlZRElBUWdDUkR4QkNFRUlBZEJxQUpxRUpVQklBWWdBa0hrQUd4cUlnSWdBellDWUNBQ0lBZzJBbHdnQVNBQktBTEFka0VCYWpZQ3dIWWdBVUhFOWdCcUlnSWdBaWdDQUVFQmFqWUNBQ0FFUWRRQWFnd0RDeUFFSUFnZ0IwSDRBR29ROEFSRkJFQWdBeUFFS0FKZ1N3UkFJQWRCd0FOcUlnWWdCMEdZQkdvUWhnTWdCMEdnQW1vZ0JoRHZCQ0lHSUFNMkFtQWdCaUFJTmdKY0lBZEJ5QU5xRUpVQklBWWdCQkQ3QXlBR0lBWW9BbUJCQVdvMkFtQWdCU0FDUVFGcUlBRW9BcmgyY0NBR0VPUUdJQUVnQVNnQ3dIWkJBV28yQXNCMklBRkJ4UFlBYWlJQ0lBSW9BZ0JCQVdvMkFnQWdCaERxQWlBRVFkUUFhZ3dFQ3lBQ1FRRnFRUUFnQWlBS1J4c2hBaUFEUVFGcUlRTU1BUXNMSUFSQjFBQnFJUU1NQWdzZ0IwR2dBbXBCaHJVRFFlc0RRUTRnQjBIQUEyb1FIU0lDRUJjaUEwRVlha0dXTlJBT0dpQURFQmdnQWhBZVFRQUxJUU1nQVVIRTlnQnFJZ29vQWdBaERDQUJLQUlFSVFRZ0IwRUFOZ0xBQXlBSFFRQTJBZ2dnQnlnQ3dBRWhBaUFIUVFBMkFwZ0VJQWRCQURZQ21BSWdCeUFFSUFkQndBTnFJQWRCQ0dvZ0FpQUhRWmdFYWlBSFFaZ0NhaUFDUVFScUVLTU1OZ0tnQWlBSFFRRkJBeUFIS0FKNElnSW9BaVJCQVhFZ0FpZ0NJSEliTmdMQUF5QUJLQUlFSWdJUUhDQUNRYWdCYWlJSUVQd0hJUWtnQjBINEFHcEJCSElvQWdBaEFpQUhLQUtnQWlFR0lBY29Bc0FESVFzakFFRXdheUlFSkFBZ0JFRUJOZ0lVSUFRZ0N6WUNLQ0FFSUFJMkFpd2dCQ0FFUVF4cU5nSVFJQVFnQkNrREVEY0RBQ0FFSUFZMkFnd2dCRUVZYWlBRUVKY0NJUVlnQkVFQk9nQUxJd0JCRUdzaUFpUUFJQVFvQWl3aEN5QUNJQVpCQkdvMkFnZ2dBaUFHS0FJRUlBWkhPZ0FNSUFrZ0N5QUNRUWhxSUFRb0FpZ2dCQzBBQ3hEL0R5SUpRY2llRWpZQ0JDQUpRZmllRWpZQ0FDQUNRUkJxSkFBZ0NTRUNJQVlRcUFFZ0FrSG9uaEkyQWdBZ0JFRXdhaVFBSUFnZ0FoQW9JQWdnQ0NnQ0dFRUJhallDR0NBSElBSTJBcGdDSUFvb0FnQWdERVlFUUNBRElBSTJBZ0FNQVFzZ0FTZ0N1SFlnQVNnQ3dIWWlBa0dXQVd4QmxnRnFRZVFBYmtrRVFDQUZJQUpCQVhSQkFtb1FvQXdMSUFkQkNHb2dCU0FIUWZnQWFpSUNFT1VHSUFjZ0IwR1lBbW8yQXB3RUlBY2dBallDbUFRZ0FTZ0N1SFlpQ1VFQmF5RUtJQUVvQXJSMklRWWdCeWdDRENFSUlBY29BZ2doQWtFQUlRTURRQ0FESUFsSEJFQWdCaUFDUWVRQWJHb2lCQzBBV0VVRVFDQUhRYUFDYWlJRklBZEJtQVJxRUlZRElBUWdCUkR4QkNFRUlBZEJxQUpxRUpVQklBWWdBa0hrQUd4cUlnSWdBellDWUNBQ0lBZzJBbHdnQVNBQktBTEFka0VCYWpZQ3dIWWdBU0FCS0FMRWRrRUJhallDeEhZZ0JFSFVBR29oQXd3REN5QUVJQWdnQjBINEFHb1E4QVFFUUNBSFFhQUNhaUFIUVpnRWFoQ0dBd0pBSUFRdEFGZ0VRQ0FFSUFkQm9BSnFFTUlKREFFTElBUWdCMEdnQW1vUTVnWUxJQWRCcUFKcUVKVUJJQUVnQVNnQ3hIWkJBV28yQXNSMklBUkIxQUJxSVFNTUF3c2dBeUFFS0FKZ1N3UkFJQWRCd0FOcUlnWWdCMEdZQkdvUWhnTWdCMEdnQW1vZ0JoRHZCQ0lHSUFNMkFtQWdCaUFJTmdKY0lBZEJ5QU5xRUpVQklBWWdCQkQ3QXlBR0lBWW9BbUJCQVdvMkFtQWdCU0FDUVFGcUlBRW9BcmgyY0NBR0VPUUdJQUVnQVNnQ3dIWkJBV28yQXNCMklBRWdBU2dDeEhaQkFXbzJBc1IySUFZUTZnSWdCRUhVQUdvaEF3d0RCU0FDUVFGcVFRQWdBaUFLUnhzaEFpQURRUUZxSVFNTUFnc0FDd3NnQjBHZ0FtcEJoclVEUWVzRFFRNGdCMEhBQTJvUUhTSUJFQmNpQWtFWWFrR1dOUkFPR2lBQ0VCZ2dBUkFlUVFBaEF3c2dBQ0FES0FJQU5nSUFJQUFnQnlnQ2VDa0RJRGNDQkFzZ0IwR0FBV29RbFFFZ0IwSFFBV29Rc0FRZ0IwR2dCR29rQUF2ckJRRUVmeU1BUWVBQmF5SUlKQUJCa084TUlRbEJDQ0VLQWtBQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUNRUUZyRGhJQUFRSVRBd1FGQmdjSUNRb0xEQTBPRHhBUkMwSDMzQXRCbmU4TUlBY2JJUWxCQmlFS0RCSUxRZWJiQzBIbHVna2dCeHNoQ1VFSElRb01FUXRCODlzTFFmemZDaUFIR3lFSlFRVWhDZ3dRQzBIWXVna2hDVUVKSVFvTUR3dEJtOXdMSVFsQkNpRUtEQTRMUVpIZEN5RUpRUXNoQ2d3TkMwR3YzUXNoQ1VFTUlRb01EQXRCMnRzTElRbEJEU0VLREFzTFFiYmNDeUVKUVE0aENnd0tDMEdPM0FzaENVRVBJUW9NQ1F0QnFOd0xRYUxkQ3lBSEd5RUpRUkFoQ2d3SUMwR0EzQXRCd2RzTElBY2JJUWxCRVNFS0RBY0xRZDNjQzBIMzdRd2dCeHNNQlF0QjBOd0xRZlhtRENBSEd5RUpRUUVoQ2d3RkMwSHEzQXRCaCs0TUlBY2JJUWxCQWlFS0RBUUxRY1BjQzBINnR3d2dCeHNoQ1VFRElRb01Bd3RCaE4wTFFhbnZEQ0FIR3lFSlFRUWhDZ3dDQzBHczRnWUxJUWxCQUNFS0N5QUlRUUkyQXNRQklBZ2dCRFlDYkNBSUlBTTJBbWdnQ0NBSVFlZ0FhaUlMTmdMQUFTQUlJQWdwQThBQk53TUlRUUFoQXlBSVFjZ0JhaUFJUVFocUVMVUNJUVFnQ0VFQU9nQmtJQWdnQkVFSWFqWUNZQ0FJUVNocUlnZEJBRUVzRUhrYUlBaENnSUNBZ0NBM0ExZ2dDQ0FJUWNRQWFqWUNWQ0FJUVVCclFRUTJBZ0FnQ0NBSE5nSTRRUlFRRlNJQ0lBazJBZ1FnQWtHbzlSRTJBZ0FnQWlBR05nSVFJQUlnQVRZQ0RDQUNJQVEyQWdnZ0NDQUNOZ0lnSUFzZ0FTQUtRUU4wUVpEMEVXb2dDU0FJUWVBQWFpQUZJQWNnQ0VFUWFpSUJFTU1KSUFFUUZpQUhFTEFFQWtBZ0NDZ0NhQ0lDUlFSQUlBQkJBRFlDQUVFQUlRSkJBQ0VKUVFBaEFRd0JDeUFBSUFnb0FtdzJBZ0FnQWlnQ0pDRUJJQUlvQWlBaENTQUlLQUt3QVNJREtBSUlJUUlnQXlnQ0FDRURDeUFBSUFrMkFnd2dBQ0FDTmdJSUlBQWdBellDQkNBQUlBRTJBaEFnQ0VId0FHb1FsUUVnQkJDcUFTQUlRZUFCYWlRQUM0UURBUVYvSXdCQjBBRnJJZ1lrQUFKL0lBSkJBV3NpQWtFRFN3UkFRYXppQmlFSFFRQU1BUXNnQWtFQ2RDSUNRWVQzRVdvb0FnQWhCeUFDUWJqL0RHb29BZ0FMSVFrZ0JrRUJOZ0s4QVNBR0lBTTJBbUFnQmlBR1FlQUFhaUlLTmdLNEFTQUdJQVlwQTdnQk53TUFJQVpCd0FGcUlBWVFsd0loQXlBR1FRQTZBRndnQmlBRFFRUnFOZ0pZSUFaQklHb2lDRUVBUVN3UWVSb2dCa0tBZ0lDQUlEY0RVQ0FHSUFaQlBHbzJBa3dnQmtFRU5nSTRJQVlnQ0RZQ01FRVVFQlVpQWlBSE5nSUVJQUpCOFBNUk5nSUFJQUlnQlRZQ0VDQUNJQUUyQWd3Z0FpQUROZ0lJSUFZZ0FqWUNHQ0FLSUFFZ0NVRURkRUhROHhGcUlBY2dCa0hZQUdvZ0JDQUlJQVpCQ0dvaUFSRERDU0FCRUJZZ0NCQ3dCQ0FBQW44Z0JpZ0NZQ0lCUlFSQVFRQWhBaUFBUVFBMkFnQkJBQ0VIUVFBTUFRc2dBQ0FHS0FKa05nSUFJQUVvQWlRaEJ5QUdLQUtvQVNnQ0FDRUNJQUVvQWlBTE5nSUlJQUFnQWpZQ0JDQUFJQWMyQWd3Z0JrSG9BR29RbFFFZ0F4Q29BU0FHUWRBQmFpUUFDNTBRQWd0L0FYNGpBRUd3QTJzaUJpUUFJQVlnQWpZQ25BRWdCaUFDRU1rRElnZzJBcGdCSUFNb0FnQWhCeUFHUVFBNkFEd2dCaUFITmdJNElBWkJBRUVzRUhraUJrS0FnSUNBSURjRE1DQUdJQVpCSEdvMkFpd2dCa0VFTmdJWUlBWWdCallDRUVFVUVCVWlCMEdvOHhFMkFnQWdCeUFGTmdJUUlBY2dBVFlDRENBSElBTTJBZ2dnQnlBR1FaZ0JhallDQkNBR0lBYzJBcmdCSUFaQlFHc2dBU0FDUVFOMFFmQ1VFR29nQ0NBR1FUaHFJQVFnQmlBR1FhZ0JhaUlDRU1NSklBSVFGaUFHRUxBRUFrQWdCaWdDUUVVRVFDQUFRZ0EzQWdBTUFRc2dCa0VBTmdLa0FTQUJRY3dGYWlFRklBRkIwTkFBYWlnQ0FDQUJRZGpRQUdvb0FnQWlBa0dXQVd4QmxnRnFRZVFBYmtrRVFDQUZJQUpCQVhSQkFtb1Fwd3dMSUFaQnFBTnFJQVVnQmtGQWF5SUNFS1lNSUFZZ0JrR2tBV28yQXFRRElBWWdBallDb0FNZ0FTZ0MwRkFpQ1VFQmF5RUtJQUZCek5BQWFpZ0NBQ0VISUFZb0Fxd0RJUWdnQmlnQ3FBTWhBa0VBSVFNQ1FBSi9Ba0FEUUNBRElBbEdEUUVnQnlBQ1FlUUFiR29pQkMwQVdFVUVRQ0FHUWFnQmFpSUpJQVpCb0FOcUVJWURJQVFnQ1JEeEJDRUVJQVpCc0FGcUVKVUJJQWNnQWtIa0FHeHFJZ0lnQXpZQ1lDQUNJQWcyQWx3Z0FTQUJLQUxZVUVFQmFqWUMyRkFnQVVIYzBBQnFJZ0lnQWlnQ0FFRUJhallDQUNBRVFkUUFhZ3dEQ3lBRUlBZ2dCa0ZBYXhEd0JFVUVRQ0FESUFRb0FtQkxCRUFnQmtISUFtb2lCeUFHUWFBRGFoQ0dBeUFHUWFnQmFpQUhFTzhFSWdjZ0F6WUNZQ0FISUFnMkFsd2dCa0hRQW1vUWxRRWdCeUFFRVBzRElBY2dCeWdDWUVFQmFqWUNZQ0FGSUFKQkFXb2dBU2dDMEZCd0lBY1FwQXdnQVNBQktBTFlVRUVCYWpZQzJGQWdBVUhjMEFCcUlnSWdBaWdDQUVFQmFqWUNBQ0FIRU9vQ0lBUkIxQUJxREFRTElBSkJBV3BCQUNBQ0lBcEhHeUVDSUFOQkFXb2hBd3dCQ3dzZ0JFSFVBR29oQWd3Q0N5QUdRYWdCYWtHR3RRTkI2d05CRGlBR1FjZ0NhaEFkSWdJUUZ5SURRUmhxUVpZMUVBNGFJQU1RR0NBQ0VCNUJBQXNoQWlBQlFkelFBR29vQWdBaERTQUdRb0NBZ0lDQUFUY0N6QUVnQmlBR1FhZ0JhaUlETmdMSUFTQURJQVlvQW93QkVEa2dCaWdDaUFFaUF5QUdLQUtNQVVFRGRHb2hCQU5BSUFNZ0JFY0VRQ0FCS0FJRUlRY2dCa0VBTmdLb0F5QUdJQVlvQXN3Qk5nS2dBeUFHUVFBMkFxUUJJQVpCQURZQ29BRWdCaUFISUFaQnFBTnFJQVpCb0FOcUlBTWdCa0drQVdvZ0JrR2dBV29nQTBFRWFoQ2pERFlDeUFJZ0EwRUlhaUVESUFaQnFBRnFJQVpCeUFKcUVDUU1BUXNMSUFZZ0JpZ0NRQ0lES1FNWUloRkNCSWhDQjRNM0E4Z0NJQVpCQVVFRElBTW9BaUFnQXlnQ0pFRUJjWEliTmdLb0F5QUJLQUlFSVFNZ0JpQVJweUlFUVFoMlFRRnhPZ0NnQXlBR0lBUkJnQUZ4UVFkMk9nQ2tBU0FERUJ3Z0JrRkFhMEVFY2lFTElBWkJxQUZxSVFnakFFRVFheUlKSkFBZ0EwR29BV29pQnlnQ0JDRUVBa0FnQXlnQ3NBRkJCMnBCZUhFaUNrR3Avd05yUWY3L2Uwc0VRQ0FFSVFNTUFRc2dCMEdRZ0FSQkVCRFpBaUlETmdJRVFRQWhDaUFEUVFBMkFvQ0FCQ0FFQkVBZ0JDQUROZ0tBZ0FRTUFRc2dCeUFETmdJQUN5QUhJQXBCMkFCcU5nSUlJQXNvQWdBaEN5QUdLQUtjQVNFT0lBa2dDRUVnYWpZQ0NDQUpJQWdvQWlBZ0NFYzZBQXdnQmlnQ3FBTWhEQ0FHS1FQSUFpRVJJQVl0QUtBRElROGdCaTBBcEFFaEVDTUFRUkJySWdRa0FDQUVJQXcyQWdnZ0JDQUxOZ0lNSUFRZ0VEb0FCeU1BUVJCcklnc2tBQ0FFS0FJTUlRd2dDeUFKS1FJSU53TUlJQU1nQ21vZ0RDQUxRUWhxSUFRb0FnZ2dCQzBBQnhEL0R5SURRZmlQRWpZQ0JDQURRYWlRRWpZQ0FDQUxRUkJxSkFBZ0F5QVBPZ0JRSUFNZ0VUY0RTQ0FESUE0MkFrQWdBMEdZa0JJMkFnQWdCRUVRYWlRQUlBY2dBeEFvSUFjZ0J5Z0NHRUVCYWpZQ0dDQUpRUkJxSkFBZ0NCQWpJQVlnQXpZQ3BBRWdEU0FCS0FMY1VFWUVRQ0FDSUFNMkFnQU1BUXNnQVNnQzBGQWdBU2dDMkZBaUFrR1dBV3hCbGdGcVFlUUFia2tFUUNBRklBSkJBWFJCQW1vUXB3d0xJQVpCcUFOcUlBVWdCa0ZBYXlJQ0VLWU1JQVlnQmtHa0FXbzJBcVFESUFZZ0FqWUNvQU1nQVNnQzBGQWlDVUVCYXlFS0lBRW9Bc3hRSVFjZ0JpZ0NyQU1oQ0NBR0tBS29BeUVDUVFBaEF3TkFJQU1nQ1VjRVFDQUhJQUpCNUFCc2FpSUVMUUJZUlFSQUlBWkJxQUZxSWdVZ0JrR2dBMm9RaGdNZ0JDQUZFUEVFSVFRZ0JrR3dBV29RbFFFZ0J5QUNRZVFBYkdvaUFpQUROZ0pnSUFJZ0NEWUNYQ0FCSUFFb0F0aFFRUUZxTmdMWVVDQUJJQUVvQXR4UVFRRnFOZ0xjVUNBRVFkUUFhaUVDREFNTElBUWdDQ0FHUVVCckVQQUVCRUFnQmtHb0FXb2dCa0dnQTJvUWhnTUNRQ0FFTFFCWUJFQWdCQ0FHUWFnQmFoRENDUXdCQ3lBRUlBWkJxQUZxRU9ZR0N5QUdRYkFCYWhDVkFTQUJJQUVvQXR4UVFRRnFOZ0xjVUNBRVFkUUFhaUVDREFNTElBTWdCQ2dDWUVzRVFDQUdRY2dDYWlJSElBWkJvQU5xRUlZRElBWkJxQUZxSUFjUTd3UWlCeUFETmdKZ0lBY2dDRFlDWENBR1FkQUNhaENWQVNBSElBUVErd01nQnlBSEtBSmdRUUZxTmdKZ0lBVWdBa0VCYWlBQktBTFFVSEFnQnhDa0RDQUJJQUVvQXRoUVFRRnFOZ0xZVUNBQklBRW9BdHhRUVFGcU5nTGNVQ0FIRU9vQ0lBUkIxQUJxSVFJTUF3VWdBa0VCYWtFQUlBSWdDa2NiSVFJZ0EwRUJhaUVEREFJTEFBc0xJQVpCcUFGcVFZYTFBMEhyQTBFT0lBWkJ5QUpxRUIwaUFSQVhJZ0pCR0dwQmxqVVFEaG9nQWhBWUlBRVFIa0VBSVFJTElBQWdBaWdDQURZQ0FDQUdLQUpBSWdFb0FpUWhDU0FBSUFFb0FpQTJBZ1FMSUFBZ0NUWUNDQ0FHUWNnQWFoQ1ZBU0FHUWJBRGFpUUFDd2tBSUFBUW5SRVFId3VGQ1FFSGZ5TUFRVUJxSWdja0FDQUhJQUFvQWlBMkFqZ2dCeUFBS1FJWU53TXdJQWNnQUNrQ0VEY0RLQ0FIUVFocUlnWkNnSUNBZ01BQU53SVVJQVlnQmpZQ0VDTUFRVEJySWdJa0FDQUdJQUFvQWpnUTFnSWdBa0VBTmdJb0lBSWdBRUVrYWpZQ0pDQUNJQUZCeUNCcU5nSWdJQUlnQVVIY2dBRnFLQUlBUVFGck5nSXNBa0FnQWtFZ2FoQzFBUVJBSUFKQklHb1FXaUlFS0FMWUFTSURJQVFvQXR3QlFSaHNhaUVFQTBBZ0F5QUVSZ1JBSUFBb0FqUWlCQ0FBS0FJNFFRSjBhaUVJQTBBZ0JDQUlSZ1JBSUFKQklHb1FXaUlFS0FMSUFpSURJQVFvQXN3Q1FSaHNhaUVFQTBBZ0F5QUVSZzBHSUFJZ0FTQURFR1lRZ3dZMkFoQWdCaUFDUVJCcUVIRWdBMEVZYWlFRERBQUxBQXNnQWlBQ1FTQnFFRm9pQTBIWUFtbzJBaEFnQkNnQ0FDRUZJQUpCQURZQ0dDQUNJQVUyQWhRZ0FpQURRWndKYWlnQ0FFRUJhellDSEFKQUlBSkJFR29RdEFGRkRRQWdBa0VRYWhDc0FTSUZLQUpnSWdNZ0JTZ0NaRUVZYkdvaEJRTkFJQU1nQlVZTkFTQUNJQUVnQXhCbUVJTUdOZ0lNSUFZZ0FrRU1haEJ4SUFOQkdHb2hBd3dBQ3dBTElBSkJJR29RV2lFRElBSWdCQ2dDQURZQ0VDQURJQUpCRUdvUXhnTkZCRUFnQWlBQklBUW9BZ0FRbGhFMkFoQWdCaUFDUVJCcUVIRUxJQUlnQWtFZ2FoQmFJZ05Cb0FscU5nSVFJQVFvQWdBaEJTQUNRUUEyQWhnZ0FpQUZOZ0lVSUFJZ0EwSGtEMm9vQWdCQkFXczJBaHdDUUNBQ1FSQnFFTFFCUlEwQUlBSkJFR29RckFFaUJTZ0NZQ0lESUFVb0FtUkJHR3hxSVFVRFFDQURJQVZHRFFFZ0FpQUJJQU1RWmhDREJqWUNEQ0FHSUFKQkRHb1FjU0FEUVJocUlRTU1BQXNBQ3lBRVFRUnFJUVFNQUFzQUJTQUNJQUVnQXhCbUVJTUdOZ0lRSUFZZ0FrRVFhaEJ4SUFOQkdHb2hBd3dCQ3dBTEFBc2dBQ2dDTkNJRUlBQW9BamhCQW5ScUlRZ0RRQ0FFSUFoR0JFQWdBa0VnYWhDMUFVVU5BaUFDUVNCcUVGb2lCQ2dDeUFJaUF5QUVLQUxNQWtFWWJHb2hCQU5BSUFNZ0JFWU5BeUFDSUFFZ0F4Qm1FSU1HTmdJUUlBWWdBa0VRYWhCeElBTkJHR29oQXd3QUN3QUZJQUlnQVNBRUtBSUFFSllSTmdJUUlBWWdBa0VRYWhCeEFrQWdBa0VnYWhDMUFVVU5BQ0FDSUFKQklHb1FXaUlEUWFBSmFqWUNFQ0FFS0FJQUlRVWdBa0VBTmdJWUlBSWdCVFlDRkNBQ0lBTkI1QTlxS0FJQVFRRnJOZ0ljSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJRktBSmdJZ01nQlNnQ1pFRVliR29oQlFOQUlBTWdCVVlOQVNBQ0lBRWdBeEJtRUlNR05nSU1JQVlnQWtFTWFoQnhJQU5CR0dvaEF3d0FDd0FMSUFSQkJHb2hCQXdCQ3dBTEFBc2dBa0V3YWlRQUlBY2dBU0FBS0FKQUVKNEpOZ0lFSUFFb0FnQWhBQ01BUVJCcklnSWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnRTJBZ3dnQWlBQk5nSUlJd0JCRUdzaUFTUUFJQUJCakFGcUlnTVF0d1FoQkNBQ0tBSUlJUWdnQUNnQ0NDRUFJQUVnQmtFUWFqWUNDQ0FCSUFZb0FoQWdCa2M2QUF3Z0JDQUFJQWdnQjBFb2FpQUJRUWhxSUFjb0FnUVFyaEVhSUFNZ0JCQW9JQU1nQXlnQ0dFRUJhallDR0NBQlFSQnFKQUFnQkNFQUlBSkJFR29rQUNBR0VGNGdCMEZBYXlRQUlBQUxEQUFnQUJDb0VSb2dBQkFmQ3dnQUlBRXJBd0MyQ3dnQUlBRXBBd0MwQ3djQVF3QUFBQUFMQndBZ0FDZ0NCQXNWQUNBQlFaQ0ZFRFlDQUNBQklBQW9BZ1EyQWdRTEN3QWdBRUdRaFJBUTF3RUxHUUFnQUNnQ0JDZ0NSQ0FCS0FJQVFRSjBhaWdDQUNnQ0tBc1ZBQ0FCUWV5RUVEWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSHNoQkFRMXdFTFF3RUNmeU1BUVJCcklnSWtBQ0FDSUFBb0FnZ2lBeUFCSUFNb0FnQW9BaGdSQVFBMkFnd2dBU2dDRENBQ1FReHFJQUJCREdvUXFoRWhBQ0FDUVJCcUpBQWdBQXNaQVFGK0lBRTFBZ3doQWlBQVFRRTZBQWdnQUNBQ053TUFDME1CQW44akFFRVFheUlDSkFBZ0FpQUFLQUlJSWdNZ0FTQURLQUlBS0FJWUVRRUFOZ0lNSUFFb0Fnd2dBa0VNYWlBQVFReHFFS3NSSVFBZ0FrRVFhaVFBSUFBTEdRRUJmaUFCTVFBTUlRSWdBRUVCT2dBSUlBQWdBamNEQUF0REFRSi9Jd0JCRUdzaUFpUUFJQUlnQUNnQ0NDSURJQUVnQXlnQ0FDZ0NHQkVCQURZQ0RDQUJLQUlNSUFKQkRHb2dBRUVNYWhDdEVTRUFJQUpCRUdva0FDQUFDMHNCQVg4akFFRVFheUlCSkFBZ0FTQUFMUUFNT2dBUElBQkJDR29RK1FKQmtyR28rZ2RxUVpPa0JuTWlBRUVDZGtHVytLbjZCM01nQVMwQUQyb2dBSE1oQUNBQlFSQnFKQUFnQUFzUUFDQUFLQUlBR2lBQkt3TUF0aEJHQ3hBQUlBQW9BZ0FhSUFFcEF3QzBFRVlMQ1FCREFBQUFBQkJHQ3lNQkFYd2dBU3NEQUNJQ21VUUFBQUFBQUFEZ1FXTUVRQ0FDcWc4TFFZQ0FnSUI0Q3djQUlBRXJBd0FMQ0FBZ0FTa0RBTGtMQ3dCRUFBQUFBQUFBQUFBTHNBRUJBMzhqQUVFZ2F5SUNKQUFnQWlBQUtBSWdOZ0lZSUFJZ0FDa0NHRGNERUNBQ0lBQXBBaEEzQXdnZ0FpQUJJQUFvQWlRUWx3RTJBZ1FnQVNnQ0FDRUFJd0JCRUdzaUFTUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FCSUFNMkFnZ2dBRUdNQVdvaUF4Qy9BU0lFSUFBb0FnZ2dBU2dDQ0NBQ1FRaHFJQUlvQWdRUXJ3d2FJQU1nQkJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FFSVFBZ0FVRVFhaVFBSUFKQklHb2tBQ0FBQzBNQkFuOGpBRUVRYXlJQ0pBQWdBaUFBS0FJSUlnTWdBU0FES0FJQUtBSVlFUUVBTmdJTUlBRW9BZ3dnQWtFTWFpQUFRUXhxRUxNUklRQWdBa0VRYWlRQUlBQUxHUUVCZmlBQk5BSU1JUUlnQUVFQk9nQUlJQUFnQWpjREFBdERBUUovSXdCQkVHc2lBaVFBSUFJZ0FDZ0NDQ0lESUFFZ0F5Z0NBQ2dDR0JFQkFEWUNEQ0FCS0FJTUlBSkJER29nQUVFTWFoQzJFU0VBSUFKQkVHb2tBQ0FBQ3hrQkFYNGdBU2tERUNFQ0lBQkJBam9BQ0NBQUlBSTNBd0FMUXdFQ2Z5TUFRUkJySWdJa0FDQUNJQUFvQWdnaUF5QUJJQU1vQWdBb0FoZ1JBUUEyQWd3Z0FTZ0NEQ0FDUVF4cUlBQkJFR29RdVJFaEFDQUNRUkJxSkFBZ0FBdXNBUUlHZndGOEl3QkJFR3NpQVNRQUlBRWdBQ3NERURrRENDQUFRUWhxRVBrQ1FaS3hxUG9IYWtHVHBBWnpJZ0pCQW5aQmx2aXArZ2R6SVFZakFFRVFheUlESkFBakFFRVFheUlFSkFBZ0FTc0RDQ0lIUkFBQUFBQUFBQUFBWWdSL0l3QkJFR3NpQUNRQUlBQWdCemtEQ0NBQVFRaHFRUWdRendjaEJTQUFRUkJxSkFBZ0JRVkJBQXNoQUNBRVFSQnFKQUFnQTBFUWFpUUFJQVlnQUdvZ0FuTWhBQ0FCUVJCcUpBQWdBQXNSQUNBQVFTUkIzZjhEUVh4QkF4REtBUXNaQVFGK0lBRXBBeEFoQWlBQVFRRTZBQWdnQUNBQ053TUFDME1CQW44akFFRVFheUlDSkFBZ0FpQUFLQUlJSWdNZ0FTQURLQUlBS0FJWUVRRUFOZ0lNSUFFb0Fnd2dBa0VNYWlBQVFSQnFFTDBSSVFBZ0FrRVFhaVFBSUFBTFRnRUJmeU1BUVJCcklnRWtBQ0FCSUFBcEF4QTNBd2dnQUVFSWFoRDVBa0dTc2FqNkIycEJrNlFHY3lJQVFRSjJRWmI0cWZvSGN5QUJRUWhxRUxNRWFpQUFjeUVBSUFGQkVHb2tBQ0FBQzBNQkFYOGpBRUVnYXlJQ0pBQWdBaUFBS0FJZ05nSVlJQUlnQUNrQ0dEY0RFQ0FDSUFBcEFoQTNBd2dnQVNnQ0FDQUNRUWhxRUxzUklRQWdBa0VnYWlRQUlBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkMvRVF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVMNFJJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUVCQkg4akFFRXdheUlGSkFBZ0FoQmNJUWdnQXlnQ0FDZ0NBQ2dDQUJCWklRTWdCVUtBZ0lDQXdBQTNBaVFnQlNBRlFSQnFJZ2MyQWlBZ0IwRUVFTllDSUFWQklHb2hCd0pBQTBBZ0JrRUVSd1JBSUFBZ0FTQUVJQWdnQXlBR1FRTjBka0gvQVhHelF3QUFmME9WRUdzZ0FCQXdEUUlnQlVFUWFpQUFFQm9RY1NBR1FRRnFJUVlNQVFzTElBRW9BZ0FoQVNBRklBYzJBZ2dnQlNBRktBSWdJQVZCRUdwSE9nQU1JQUVnQWlBRlFRaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVJCcUVGNGdCVUV3YWlRQUM5d0JBUVIvSXdCQk1Hc2lCU1FBSUFJUVhDRUlJQU1vQWdBb0FnQW9BZ0FRV1NFRElBVkNnSUNBZ01BQU53SWtJQVVnQlVFUWFpSUhOZ0lnSUFkQkJCRFdBaUFGUVNCcUlRY0NRQU5BSUFaQkJFY0VRQ0FBSUFFZ0JDQUlJQU1nQmtFRGRIWkJHSFJCR0hXeVF3QUEva0tWUXdBQWdMK1hFR3NnQUJBd0RRSWdCVUVRYWlBQUVCb1FjU0FHUVFGcUlRWU1BUXNMSUFFb0FnQWhBU0FGSUFjMkFnZ2dCU0FGS0FJZ0lBVkJFR3BIT2dBTUlBRWdBaUFGUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRUkJxRUY0Z0JVRXdhaVFBQzlNQkFRUi9Jd0JCSUdzaUJTUUFJQUlRWENFSUlBTW9BZ0FvQWdBb0FnQVFXU0VESUFWQ2dJQ0FnQ0EzQWhRZ0JTQUZRUWhxSWdjMkFoQWdCMEVDRUxjSElBVkJFR29oQndKQUEwQWdCa0VDUndSQUlBQWdBU0FFSUFnZ0F5QUdRUVIwZGtILy93TnhzME1BLzM5SGxSQnJJQUFRTUEwQ0lBVkJDR29nQUJBYUVMSURJQVpCQVdvaEJnd0JDd3NnQVNnQ0FDRUJJQVVnQnpZQ0FDQUZJQVVvQWhBZ0JVRUlha2M2QUFRZ0FTQUNJQVVRT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFWQkNHb1FxZ0VnQlVFZ2FpUUFDOW9CQVFSL0l3QkJJR3NpQlNRQUlBSVFYQ0VJSUFNb0FnQW9BZ0FvQWdBUVdTRURJQVZDZ0lDQWdDQTNBaFFnQlNBRlFRaHFJZ2MyQWhBZ0IwRUNFTGNISUFWQkVHb2hCd0pBQTBBZ0JrRUNSd1JBSUFBZ0FTQUVJQWdnQXlBR1FRUjBka0VRZEVFUWRiSkRBUDcvUnBWREFBQ0F2NWNRYXlBQUVEQU5BaUFGUVFocUlBQVFHaEN5QXlBR1FRRnFJUVlNQVFzTElBRW9BZ0FoQVNBRklBYzJBZ0FnQlNBRktBSVFJQVZCQ0dwSE9nQUVJQUVnQWlBRkVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRUWhxRUtvQklBVkJJR29rQUF1M0JBSUlmd0Y5SXdCQjBBQnJJZ1VrQUNBQ0VGd2hDU0FES0FJQUtBSUFLQUlBRUZraENpQUZRb0NBZ0lBZ053SkVJQVVnQlVFNGFpSUROZ0pBSUFOQkFoQzNCeUFGUVVCcklRdEJBQ0VEQWtBQ1FBTkFJQU5CQWtZTkFTQUZBbjhnQ2lBRFFRUjBka0gvL3dOeElnWkJnUGdCUmdSOVF3QUFnSDhGQW4wQ2ZVTUFBSUQvSUFaQmdQZ0RSZzBBR2tNQUFBQ0FRd0FBQUFBZ0JrR0FnQUp4SWd3YklBWkIvLzhCY1VVTkFCb2dCa0gvQjNFaEJ5QUdRWUQ0QVhFaUNFR0ErQUZHQkVCREFBREFmeUFIRFFJYUN5QUlRUXAyUWZBQWFpRUdJQWdFZnlBR0JRTkFJQWRCZ0FoeFJRUkFJQVpCQVdzaEJpQUhRUUYwSVFjTUFRc0xJQWRCLzNkeElRY2dCa0VCYWd0QkYzUWdERUVRZEhJZ0IwRU5kSEsrQ3hCR0N3c2lEVVAvLzM5L1hnUkFJQVZCQURZQ01FRUNEQUVMSUExRC8vOS8vMTBFUUNBRlFRRTJBakJCQWd3QkN5QUZJQTA0QWpCQkFRczZBRFFDUUNBRlFUQnFFREFFUUNBRlFRTTJBaHdnQlVIcy9nWTJBaGdnQlNBRktRTVlOd01JSUFWQklHb2lCeUFOSUFWQkNHb1EvZ01nQVNBSElBUVFYU0FIRUE4YUlBRXRBQVJGRFFFZ0JVS0FnSUNBRURjRE1Bc2dBQ0FCSUFRZ0NTQUZRVEJxRUJvcUFnQVFheUFBRURBTkF5QUZRVGhxSUFBUUdoQ3lBeUFEUVFGcUlRTU1BUXNMSUFCQkFqb0FCQXdCQ3lBQktBSUFJUUVnQlNBTE5nSVFJQVVnQlNnQ1FDQUZRVGhxUnpvQUZDQUJJQUlnQlVFUWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUU0YWhDcUFTQUZRZEFBYWlRQUM5UUNBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQVExZ2tNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBRWdCVUVVYWhEREVTQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUMvRUNBUWQvSXdCQjRBQnJJZ1FrQUNBREtBSUFLQUlBS0FJQUlnWWdCaWdDQUNnQ0NCRUFBQ0lES0FJRUlRVWdBaWdDQkNFSElBUkNnSUNBZ01BQU53SlVJQU5CQUNBRlFmQ3FFa1liSVFrZ0FrRUFJQWRCOEtvU1Joc2hCeUFFSUFSQlFHczJBbEFnQkVFd2FpRUtJQVJCMEFCcUlRdEJBQ0VGQTBBZ0NTZ0NJQ0FGU3dSQUlBUkNnSUNBZ01BQU53STBJQVFnQkVFZ2FqWUNNRUVBSVFNRFFDQUpLQUlrSUFOTkJFQWdCeWdDSENFRElBRW9BZ0FoQ0NBRVFRQTZBQlFnQkNBS05nSVFJQVFnQ0NBRElBUkJFR29RT2pZQ0hDQUZRUUZxSVFVZ0JFRkFheUFFUVJ4cUVIRWdCRUVnYWhCZURBTUZJQVFnQmlBRElBWW9BZ0FvQWd3UkFRQWlDQ0FGSUFnb0FnQW9BZ3dSQVFBMkFod2dBMEVCYWlFRElBUkJJR29nQkVFY2FoQnhEQUVMQUFzQUN3c2dBU2dDQUNFQklBUkJBRG9BRENBRUlBczJBZ2dnQVNBQ0lBUkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FnQkVGQWF4QmVJQVJCNEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkRGRVF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVNUVJJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxhQUVCZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUNJQUVnQUNnQ0pCQ1hBVFlDQkNBQ0lBRWdBQ2dDS0JDWEFUWUNBQ0FCS0FJQUlBSkJDR29nQWtFRWFpQUNFTUVSSVFBZ0FrRWdhaVFBSUFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCREhFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU1ZUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCREpFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU1nUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDl3SUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FDQURLQUlFRU1zUkRBRUxJQVZDZ0lDQWdJQUJOd0pFSUFVZ0JVRWdhaUlCTmdKQUlBRWdCU2dDVEJBNUlBVkJRR3NoQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUpNVHcwQklBSkJBQkFpSVFnZ0JTQURLQUlBSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lVSUFVZ0F5Z0NCQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNFQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUlBVkJFR29ReWhFZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF1VUF3RUVmeU1BUWRBQWF5SUZKQUFnQlNBRU5nSUVJQVVnQVRZQ0FDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JTQURLQUlBSUFNb0FnUWdBeWdDQ0JET0VRd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRklBTW9BZ1FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaEFnQlNBREtBSUlJZ1lnQVNBR0tBSUFLQUlNRVFFQU5nSU1JQVZCR0dvaUJpQUVJQWdnQlNBQklBVkJGR29nQlVFUWFpQUZRUXhxRU13UklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCRFFFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU04UklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCRFNFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU5FUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCRFVFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU5NUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTGtnTUJCSDhqQUVIZ0FHc2lCU1FBSUFVZ0FqWUNIQ0FGSUFRMkFoQWdCU0FGUVJ4cU5nSVVJQVVnQXpZQ0NDQUZJQUUyQWd3Z0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQVNBRlFRQTJBbHdDUUNBQktBSUFJZ01nQXlnQ0FDZ0NDQkVBQUNJRElBVkIzQUJxRUNJZ0EwWUVRQ0FBSUFWQkNHb2dBU2dDQUNBQktBSUVRUUFRMWhFTUFRc2dCVUtBZ0lDQWdBRTNBbFFnQlNBRlFUQnFJZ00yQWxBZ0F5QUZLQUpjRURrZ0JVSFFBR29oQjBFQUlRTUNRQUpBQTBBZ0F5QUZLQUpjVHcwQklBSkJBQkFpSVFnZ0JTQUJLQUlBSWdZZ0F5QUdLQUlBS0FJTUVRRUFOZ0lrSUFVZ0FTZ0NCQ0lHSUFNZ0JpZ0NBQ2dDREJFQkFEWUNJQ0FGUVNocUlnWWdCQ0FJSUFWQkNHb2dBeUFGUVNScUlBVkJJR29RMVJFZ0JoQXJCRUFnQlVFd2FpQUZRU2hxRUJvUUpDQURRUUZxSVFNTUFRc0xJQVZCS0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0tDQUZJQVVvQWxBZ0JVRXdha2M2QUN3Z0JDQUNJQVZCS0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJNR29RSXdzZ0JVSGdBR29rQUF1bUF3RUVmeU1BUWVBQWF5SUZKQUFnQlNBQ05nSWNJQVVnQXlnQ0FDZ0NBQ2dDQ0JENkFUb0FHeUFGSUFRMkFnd2dCU0FGUVJ0cU5nSVVJQVVnQlVFY2FqWUNFQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEFTQUZRUUEyQWx3Q1FDQUJLQUlBSWdNZ0F5Z0NBQ2dDQ0JFQUFDSURJQVZCM0FCcUVDSWdBMFlFUUNBQUlBVkJDR29nQVNnQ0FDQUJLQUlFRU5nUkRBRUxJQVZDZ0lDQWdJQUJOd0pVSUFVZ0JVRXdhaUlETmdKUUlBTWdCU2dDWEJBNUlBVkIwQUJxSVFkQkFDRURBa0FDUUFOQUlBTWdCU2dDWEU4TkFTQUNRUUFRSWlFSUlBVWdBU2dDQUNJR0lBTWdCaWdDQUNnQ0RCRUJBRFlDSkNBRklBRW9BZ1FpQmlBRElBWW9BZ0FvQWd3UkFRQTJBaUFnQlVFb2FpSUdJQVFnQ0NBRlFRaHFJQU1nQlVFa2FpQUZRU0JxRU5jUklBWVFLd1JBSUFWQk1Hb2dCVUVvYWhBYUVDUWdBMEVCYWlFRERBRUxDeUFGUVNocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFpZ2dCU0FGS0FKUUlBVkJNR3BIT2dBc0lBUWdBaUFGUVNocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRVEJxRUNNTElBVkI0QUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCRGFFUXdCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRU5rUklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTG1BSUJDSDhqQUVGQWFpSUNKQUFnQWlBQUtBSWdOZ0k0SUFJZ0FDa0NHRGNETUNBQ0lBQXBBaEEzQXlnZ0FpQUJJQUFvQWlRUXp3TTJBaVFnQWlBQklBQkJLR29RNGdRMkFpQWdBa0VJYWlJRElBRWdBRUV3YWhEeUJTQUJLQUlBSVFBakFFRVFheUlFSkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlCTmdJTUlBUWdBVFlDQ0NNQVFSQnJJZ0VrQUNBQVFZd0JhaUlGRUxjRUlRWWdBaWdDSUNFSElBSW9BaVFoQ0NBRUtBSUlJUWtnQUNnQ0NDRUFJQUVnQTBFSWFqWUNDQ0FCSUFNb0FnZ2dBMGM2QUF3Z0JpQUFJQWtnQWtFb2FpQUlJQWNnQVVFSWFoRHJFUm9nQlNBR0VDZ2dCU0FGS0FJWVFRRnFOZ0lZSUFGQkVHb2tBQ0FHSVFBZ0JFRVFhaVFBSUFNUXFnRWdBa0ZBYXlRQUlBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkRjRVF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVOc1JJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkRlRVF3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVOMFJJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxCZ0JCMnVJQkM5b09Bd1ovQW4wQ2ZDTUFRZEFBYXlJRkpBQWdBaEN5QWlnQ0dDRUlJQU1vQWdBb0FnQWlCaWdDQ0NFRElBVkJDR29pQnlBQklBUWdCaWdDQkNJS0lBWW9BZ0FpQ1JDbkNBSkFJQWNRTUFSQUlBQkJBam9BQkF3QkN5QUZRUWhxRUJvaEJnSkFJQU1nQXlnQ0FDZ0NDQkVBQUNJSFJRUkFJQVZCQURvQUJBd0JDd0pBQWtBZ0J5Z0NCQ0lIUWZDZkVrWUVRQ0FERUR3aERTQUdLQUlBRUR3aERpQUZRVUJySWdZZ0FTQUVJQTBnRFJEYkFTQUdFR0lFUUNBRlFRSTZBQlFNQWdzZ0JVRXdhaUlHSUFFZ0JDQU9JQTRRMndFZ0JoQmlCRUFnQlVFQ09nQVVEQUlMSUFWQklHb2lCaUFCSUFSRUFBQUFBQUFBOEQ4Z0JVRXdhaEJLS3dNQUVJRUVJQVlRWWdSQUlBVkJBam9BRkF3Q0N5QUZRUkJxSUFFZ0JDQUZRVUJyRUVvckF3QWdCVUVnYWlJR0VFb3JBd0FRMndFZ0JTQUZLUU1ZTndNb0lBVWdCU2tERURjRElDQUdFR0lFUUNBRlFRSTZBQlFNQWdzZ0JVRVFhaUFCSUFSRUFBQUFBQUFBOEQ4Z0JVRWdhaUlHRUVvckF3QVFnUVFnQlNBRktRTVlOd01vSUFVZ0JTa0RFRGNESUNBR0VHSUVRQ0FGUVFJNkFCUU1BZ3NnQlVFUWFpQUJJQVFnQ0NBRlFTQnFFRW9yQXdBUWN3d0JDeUFIUWJDcEVrWUVRQ0FERURRaEN5QUdLQUlBRURRaERDQUZRVUJySWdZZ0FTQUVJQXNnQ3hEYUFTQUdFREFFUUNBRlFRSTZBQlFNQWdzZ0JVRXdhaUlHSUFFZ0JDQU1JQXdRMmdFZ0JoQXdCRUFnQlVFQ09nQVVEQUlMSUFWQklHb2lCaUFCSUFSREFBQ0FQeUFGUVRCcUVCb3FBZ0FRZ0FRZ0JoQXdCRUFnQlVFQ09nQVVEQUlMSUFWQkVHb2dBU0FFSUFWQlFHc1FHaW9DQUNBRlFTQnFJZ1lRR2lvQ0FCRGFBU0FGSUFVcEF4QTNBeUFnQmhBd0JFQWdCVUVDT2dBVURBSUxJQVZCRUdvZ0FTQUVRd0FBZ0Q4Z0JVRWdhaUlHRUJvcUFnQVFnQVFnQlNBRktRTVFOd01nSUFZUU1BUkFJQVZCQWpvQUZBd0NDeUFGUVJCcUlBRWdCQ0FJSUFWQklHb1FHaW9DQUJCckRBRUxJQWRCMEtnU1J3MEJJQU1RUHlFTElBWW9BZ0FRUHlFTUlBVkJRR3NpQmlBQklBUWdDeUFMRU5rQklBWVFNQVJBSUFWQkFqb0FGQXdCQ3lBRlFUQnFJZ1lnQVNBRUlBd2dEQkRaQVNBR0VEQUVRQ0FGUVFJNkFCUU1BUXNnQlVFZ2FpSUdJQUVnQkVNQUFJQS9FRVlnQlVFd2FoQWFLZ0lBRVA4RElBWVFNQVJBSUFWQkFqb0FGQXdCQ3lBRlFSQnFJQUVnQkNBRlFVQnJFQm9xQWdBZ0JVRWdhaUlHRUJvcUFnQVEyUUVnQlNBRktRTVFOd01nSUFZUU1BUkFJQVZCQWpvQUZBd0JDeUFGUVJCcUlBRWdCRU1BQUlBL0VFWWdCVUVnYWlJR0VCb3FBZ0FRL3dNZ0JTQUZLUU1RTndNZ0lBWVFNQVJBSUFWQkFqb0FGQXdCQ3lBRlFSQnFJQUVnQkNBSUlBVkJJR29RR2lvQ0FCQnlDeUFGSUFVcEF4QTNBd0FNQVFzZ0JVRUFPZ0FFQ3lBRkVEQUVRQ0FBUVFJNkFBUU1BUXNnQlJBYUtBSUFFRHhFQUFBQUFBQUFBQUJqQkVBZ0FTQUNFSkVCSVFJZ0FFRUJPZ0FFSUFBZ0FqWUNBQXdCQ3lBRlFSQnFJZ1lnQVNBRUlBSWdBeUFKRUprS0lBWVFNQVJBSUFCQkFqb0FCQXdCQ3lBRlFRaHFFQm9oQmlBRkVCb2hCd0pBSUFNZ0F5Z0NBQ2dDQ0JFQUFDSUpSUVJBSUFWQkFEb0FSQXdCQ3dKQUFrQWdDU2dDQkNJSlFmQ2ZFa1lFUUNBREVEd2hEU0FHS0FJQUVEd2hEaUFGUVVCcklnTWdBU0FFSUFjb0FnQVFQQkM0RENBREVHSUVRQ0FGUVFJNkFDUU1BZ3NnQlVFd2FpSURJQUVnQkNBTklBNFEyd0VnQXhCaUJFQWdCVUVDT2dBa0RBSUxJQVZCSUdvZ0FTQUVJQVZCTUdvaUF4QktLd01BSUFWQlFHc1FTaXNEQUJEWUF5QUZJQVVwQXlnM0F6Z2dCU0FGS1FNZ053TXdJQU1RWWdSQUlBVkJBam9BSkF3Q0N5QUZRU0JxSUFFZ0JDQUlJQVZCTUdvUVNpc0RBQkJ6REFFTElBbEJzS2tTUmdSQUlBTVFOQ0VMSUFZb0FnQVFOQ0VNSUFWQlFHc2lBeUFCSUFRZ0J5Z0NBQkEwRUxjTUlBTVFNQVJBSUFWQkFqb0FKQXdDQ3lBRlFUQnFJZ01nQVNBRUlBc2dEQkRhQVNBREVEQUVRQ0FGUVFJNkFDUU1BZ3NnQlVFZ2FpQUJJQVFnQlVFd2FpSURFQm9xQWdBZ0JVRkFheEFhS2dJQUVOY0RJQVVnQlNrRElEY0RNQ0FERURBRVFDQUZRUUk2QUNRTUFnc2dCVUVnYWlBQklBUWdDQ0FGUVRCcUVCb3FBZ0FRYXd3QkN5QUpRZENvRWtjTkFTQURFRDhoQ3lBR0tBSUFFRDhoRENBRlFVQnJJZ01nQVNBRUlBY29BZ0FRUHhDMkRDQURFREFFUUNBRlFRSTZBQ1FNQVFzZ0JVRXdhaUlESUFFZ0JDQUxJQXdRMlFFZ0F4QXdCRUFnQlVFQ09nQWtEQUVMSUFWQklHb2dBU0FFSUFWQk1Hb2lBeEFhS2dJQUlBVkJRR3NRR2lvQ0FCRFdBeUFGSUFVcEF5QTNBekFnQXhBd0JFQWdCVUVDT2dBa0RBRUxJQVZCSUdvZ0FTQUVJQWdnQlVFd2FoQWFLZ0lBRUhJTElBVWdCU2tESURjRFFBd0JDeUFGUVFBNkFFUUxJQVZCUUdzUU1BUkFJQUJCQWpvQUJBd0JDeUFGUVRCcUlnTWdBU0FFSUFJZ0JVRkFheEFhS0FJQUlBb1FtUW9nQXhBd0JFQWdBRUVDT2dBRURBRUxJQUFnQVNBRUlBSWdCVUVRYWhBYUtBSUFJQVZCTUdvUUdpZ0NBQkNURFFzZ0FCQXdCRUFnQVNBRlFVQnJRYmYzQUJBVUlnQWdCQkQ4QVNBQUVBOGFDeUFGUWRBQWFpUUFDL2tDQXdWL0FYd0JmU01BUVNCcklnVWtBQ0FES0FJQUtBSUFJZ01vQWdRaENDQURLQUlBSVFrZ0FoQ3lBaWdDR0NFRElBVkJHR29pQmlBQklBUWdDQ0FKRUtjSUFrQWdCaEF3QkVBZ0FFRUNPZ0FFREFFTEFrQWdCVUVZYWhBYUlnY29BZ0FpQmlBR0tBSUFLQUlJRVFBQUlnWkZCRUFnQlVFQU9nQVVEQUVMQWtBQ1FDQUdLQUlFSWdaQjhKOFNSZ1JBSUFVZ0FTQUVJQU1nQnlnQ0FCQThJZ29nQ3FBUWN3d0JDeUFHUWJDcEVrWUVRQ0FGSUFFZ0JDQURJQWNvQWdBUU5DSUxJQXVTRUdzTUFRc2dCa0hRcUJKSERRRWdCU0FCSUFRZ0F5QUhLQUlBRUQ5REFBQUFRQkJHbEJCR0VISUxJQVVnQlNrREFEY0RFQXdCQ3lBRlFRQTZBQlFMSUFWQkVHb1FNQVJBSUFCQkFqb0FCQXdCQ3lBRklBRWdCQ0FDSUFWQkVHb1FHaWdDQUNBSUVKa0tJQVVRTUFSQUlBQkJBam9BQkF3QkN5QUFJQUVnQkNBQ0lBa2dCUkFhS0FJQUVKTU5DeUFBRURBRVFDQUJJQVZCdS9FQUVCUWlBQ0FFRVB3QklBQVFEeG9MSUFWQklHb2tBQXZVQWdFRWZ5TUFRZEFBYXlJRkpBQWdCU0FFTmdJTUlBVWdBVFlDQ0NBQktBSUFJUVFnQXlnQ0FDZ0NBQ0VESUFWQkFEWUNUQUpBSUFNb0FnQWlBU0FCS0FJQUtBSUlFUUFBSWdFZ0JVSE1BR29RSWlBQlJnUkFJQUFnQlVFSWFpQURLQUlBRU9BUkRBRUxJQVZDZ0lDQWdJQUJOd0pFSUFVZ0JVRWdhaUlCTmdKQUlBRWdCU2dDVEJBNUlBVkJRR3NoQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUpNVHcwQklBSkJBQkFpSVFnZ0JTQURLQUlBSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lVSUFWQkdHb2lCaUFFSUFnZ0JVRUlhaUFCSUFWQkZHb1EzeEVnQmhBckJFQWdCVUVnYWlBRlFSaHFFQm9RSkNBQlFRRnFJUUVNQVFzTElBVkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBVWdCellDR0NBRklBVW9Ba0FnQlVFZ2FrYzZBQndnQkNBQ0lBVkJHR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFWQklHb1FJd3NnQlVIUUFHb2tBQXYzQWdFRWZ5TUFRZEFBYXlJRkpBQWdCU0FFTmdJTUlBVWdBVFlDQ0NBQktBSUFJUVFnQXlnQ0FDZ0NBQ0VESUFWQkFEWUNUQUpBSUFNb0FnQWlBU0FCS0FJQUtBSUlFUUFBSWdFZ0JVSE1BR29RSWlBQlJnUkFJQUFnQlVFSWFpQURLQUlBSUFNb0FnUVE0aEVNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCU0FES0FJRUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJUUlBVkJHR29pQmlBRUlBZ2dCVUVJYWlBQklBVkJGR29nQlVFUWFoRGhFU0FHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDNGNCQVFGL0lBTW9BZ0FvQWdBb0FnQWlBMEVBSUFNb0FnQW9BZ3dSQVFBUU5CRFVDU0VGSUFBZ0FTQUNJQU5CQVNBREtBSUFLQUlNRVFFQUVEUVExQWxCQ0hSQmdQNERjU0FGUWY4QmNYSWdBMEVDSUFNb0FnQW9BZ3dSQVFBUU5CRFVDVUVRZEVHQWdQd0hjWElnQTBFRElBTW9BZ0FvQWd3UkFRQVFOQkRVQ1VFWWRISVFyUUVMaHdFQkFYOGdBeWdDQUNnQ0FDZ0NBQ0lEUVFBZ0F5Z0NBQ2dDREJFQkFCQTBFTlVKSVFVZ0FDQUJJQUlnQTBFQklBTW9BZ0FvQWd3UkFRQVFOQkRWQ1VFSWRFR0EvZ054SUFWQi93RnhjaUFEUVFJZ0F5Z0NBQ2dDREJFQkFCQTBFTlVKUVJCMFFZQ0EvQWR4Y2lBRFFRTWdBeWdDQUNnQ0RCRUJBQkEwRU5VSlFSaDBjaEN0QVF0SEFDQUFJQUVnQWlBREtBSUFLQUlBS0FJQUlnQkJBQ0FBS0FJQUtBSU1FUUVBRURRUTR4RkIvLzhEY1NBQVFRRWdBQ2dDQUNnQ0RCRUJBQkEwRU9NUlFSQjBjaEN0QVF0SEFDQUFJQUVnQWlBREtBSUFLQUlBS0FJQUlnQkJBQ0FBS0FJQUtBSU1FUUVBRURRUTVCRkIvLzhEY1NBQVFRRWdBQ2dDQUNnQ0RCRUJBQkEwRU9RUlFSQjBjaEN0QVF1eEFRRUNmeU1BUVNCcklnVWtBQ0FGSUFRMkFod2dCU0FCTmdJWUlBVkJFR29pQmlBRlFSaHFJQU1vQWdBb0FnQW9BZ0FpQTBFQUlBTW9BZ0FvQWd3UkFRQVFOQkRsRVFKQUlBWVFNQVJBSUFCQkFqb0FCQXdCQ3lBRlFRaHFJZ1lnQlVFWWFpQURRUUVnQXlnQ0FDZ0NEQkVCQUJBMEVPVVJJQVlRTUFSQUlBQkJBam9BQkF3QkN5QUFJQUVnQWlBRlFSQnFFQm92QVFBZ0JVRUlhaEFhS0FJQVFSQjBjaEN0QVFzZ0JVRWdhaVFBQzZVQ0FRSi9Jd0JCUUdvaUJTUUFJQVZCT0dvaUJpQUJJQVFnQWhCY0lBTW9BZ0FvQWdBb0FnQVFxZzBDUUNBR0VEQUVRQ0FCSUFWQkdHcEJ6c1VERUJRaUFTQUVFUHdCSUFFUUR4b2dBRUVDT2dBRURBRUxJQVZCT0dvUUdpZ0NBQ0lHSUFZb0FnQW9BaFFSQUFBRVFDQUJJQVZCR0dwQjNPNEVFQlFpQXlBRUVGMGdBeEFQR2lBQkxRQUVCRUFnQVNBQ0VKRUJJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBd0NDeUFBUVFJNkFBUU1BUXNnQXlnQ0FDZ0NBQ2dDQUNFRElBVkJBallDRkNBRklBWTJBZ3dnQlNBRE5nSUlJQVVnQlVFSWFqWUNFQ0FGSUFVcEF4QTNBd0FnQlNBRlFSaHFJQVVRdFFJaUEwRUlhallDTUNBRklBTWdBeWdDQ0VjNkFEUWdBQ0FCSUFJZ0JVRXdhaUFFRU1nVElBTVFxZ0VMSUFWQlFHc2tBQXVCQndFSGZ5TUFRWUFCYXlJRkpBQWdCU0FFTmdJOElBVWdBVFlDT0NBRklBUTJBalFnQlNBQk5nSXdJQVZDZ0lDQWdDQTNBaVFnQlNBRlFSaHFOZ0lnSUFFb0FnQWhCeUFES0FJQUtBSUFLQUlBSWdRZ0JDZ0NBQ2dDQ0JFQUFDRUpJQU1vQWdBb0FnQWhCaUFGUVFBMkFud0NRQ0FHS0FJQUlnUWdCQ2dDQUNnQ0NCRUFBQ0lFSUFWQi9BQnFFQ0lnQkVZRVFDQUZRUkJxSUFWQk9Hb2dCaWdDQUJEb0VRd0JDeUFGUW9DQWdJQ0FBVGNDZENBRklBVkIwQUJxSWdRMkFuQWdCQ0FGS0FKOEVEa2dCVUh3QUdvaENrRUFJUVFDUUFKQUEwQWdCQ0FGS0FKOFR3MEJJQWxCQUJBaUlRZ2dCU0FHS0FJQUlnc2dCQ0FMS0FJQUtBSU1FUUVBTmdKRUlBVkJ5QUJxSWdzZ0J5QUlJQVZCT0dvZ0JDQUZRY1FBYWhEbkVTQUxFQ3NFUUNBRlFkQUFhaUFGUWNnQWFoQWFFQ1FnQkVFQmFpRUVEQUVMQ3lBRlFjZ0FhaEE5R2lBRlFRSTZBQlFNQVFzZ0JTQUtOZ0pJSUFVZ0JTZ0NjQ0FGUWRBQWFrYzZBRXdnQnlBSklBVkJ5QUJxRURvaEJDQUZRUUU2QUJRZ0JTQUVOZ0lRQ3lBRlFkQUFhaEFqQ3dKQUlBVkJFR29RSzBVRVFDQUFRUUk2QUFRTUFRc2dCVUVZYWlBRlFSQnFFQm9Rc2dNZ0FTZ0NBQ0VHSUFNb0FnQW9BZ0FvQWdBaUJDQUVLQUlBS0FJSUVRQUFJUWNnQXlnQ0FDZ0NBQ0VESUFWQkFEWUNmQUpBSUFNb0FnQWlCQ0FFS0FJQUtBSUlFUUFBSWdRZ0JVSDhBR29RSWlBRVJnUkFJQVZCRUdvZ0JVRXdhaUFES0FJQUVOWUpEQUVMSUFWQ2dJQ0FnSUFCTndKMElBVWdCVUhRQUdvaUJEWUNjQ0FFSUFVb0Fud1FPU0FGUWZBQWFpRUpRUUFoQkFKQUFrQURRQ0FFSUFVb0FueFBEUUVnQjBFQUVDSWhDaUFGSUFNb0FnQWlDQ0FFSUFnb0FnQW9BZ3dSQVFBMkFrUWdCVUhJQUdvaUNDQUdJQW9nQlVFd2FpQUVJQVZCeEFCcUVPWVJJQWdRS3dSQUlBVkIwQUJxSUFWQnlBQnFFQm9RSkNBRVFRRnFJUVFNQVFzTElBVkJ5QUJxRUQwYUlBVkJBam9BRkF3QkN5QUZJQWsyQWtnZ0JTQUZLQUp3SUFWQjBBQnFSem9BVENBR0lBY2dCVUhJQUdvUU9pRURJQVZCQVRvQUZDQUZJQU0yQWhBTElBVkIwQUJxRUNNTElBVkJFR29RSzBVRVFDQUFRUUk2QUFRTUFRc2dCVUVZYWlJRElBVkJFR29RR2hDeUF5QUJLQUlBSVFFZ0JTQUZRU0JxTmdJSUlBVWdBeUFGS0FJZ1J6b0FEQ0FCSUFJZ0JVRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFWWFoQ3FBU0FGUVlBQmFpUUFDNWtEQVFaL0l3QkIwQUJySWdVa0FDQUZJQVEyQWdnZ0JTQUJOZ0lFSUFVZ0F6WUNBQ0FCS0FJQUlRZ2dBeWdDQUNnQ0FDRUdJQVZCQURZQ1RBSkFJQVlvQWdBaUF5QURLQUlBS0FJSUVRQUFJZ01nQlVITUFHb1FJaUFEUmdSQUlBQWdCU0FHS0FJQUlBWW9BZ1JCQUJEcUVRd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQXpZQ1FDQURJQVVvQWt3UU9TQUZRVUJySVFsQkFDRURBa0FDUUFOQUlBTWdCU2dDVEU4TkFTQUNRUUFRSWlFS0lBVWdCaWdDQUNJSElBTWdCeWdDQUNnQ0RCRUJBRFlDRkNBRklBWW9BZ1FpQnlBRElBY29BZ0FvQWd3UkFRQTJBaEFnQlVFWWFpSUhJQWdnQ2lBRklBTWdCVUVVYWlBRlFSQnFFT2tSSUFjUUt3UkFJQVZCSUdvZ0JVRVlhaEFhRUNRZ0EwRUJhaUVEREFFTEN5QUZRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUZJQWsyQWhnZ0JTQUZLQUpBSUFWQklHcEhPZ0FjSUFnZ0FpQUZRUmhxRURvaEFpQUFRUUU2QUFRZ0FDQUNOZ0lBQ3lBRlFTQnFFQ01MSUFBUU1BUkFJQUVnQlVFZ2FrR2pJUkFVSWdBZ0JCRDhBU0FBRUE4YUN5QUZRZEFBYWlRQUMvY0NBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQWdBeWdDQkJEdEVRd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRklBTW9BZ1FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaEFnQlVFWWFpSUdJQVFnQ0NBRlFRaHFJQUVnQlVFVWFpQUZRUkJxRU93UklBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDl3SUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FDQURLQUlFRU84UkRBRUxJQVZDZ0lDQWdJQUJOd0pFSUFVZ0JVRWdhaUlCTmdKQUlBRWdCU2dDVEJBNUlBVkJRR3NoQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUpNVHcwQklBSkJBQkFpSVFnZ0JTQURLQUlBSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lVSUFVZ0F5Z0NCQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNFQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUlBVkJFR29RN2hFZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF2VUFnRUVmeU1BUWRBQWF5SUZKQUFnQlNBRU5nSU1JQVVnQVRZQ0NDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JVRUlhaUFES0FJQUVQRVJEQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVkJHR29pQmlBRUlBZ2dCVUVJYWlBQklBVkJGR29ROEJFZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF2VUFnRUVmeU1BUWRBQWF5SUZKQUFnQlNBRU5nSU1JQVVnQVRZQ0NDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JVRUlhaUFES0FJQUVQTVJEQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVkJHR29pQmlBRUlBZ2dCVUVJYWlBQklBVkJGR29ROGhFZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF0SEFRRi9Jd0JCRUdzaUJTUUFJQUFnQVNBRUlBSWdBeWdDQUNnQ0FDZ0NBQkNxRFNBQUVEQUVRQ0FCSUFWQmhxTURFQlFpQUNBRUVQd0JJQUFRRHhvTElBVkJFR29rQUF2b0FnRUVmeU1BUWRBQWF5SUZKQUFnQlNBQ05nSVFJQVVnQkRZQ0NDQUZJQVZCRUdvMkFnd2dCU0FETmdJQUlBVWdBVFlDQkNBQktBSUFJUVFnQXlnQ0FDZ0NBQ0VCSUFWQkFEWUNUQUpBSUFFb0FnQWlBeUFES0FJQUtBSUlFUUFBSWdNZ0JVSE1BR29RSWlBRFJnUkFJQUFnQlNBQktBSUFRUUFROVJFTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ00yQWtBZ0F5QUZLQUpNRURrZ0JVRkFheUVIUVFBaEF3SkFBa0FEUUNBRElBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBRW9BZ0FpQmlBRElBWW9BZ0FvQWd3UkFRQTJBaFFnQlVFWWFpSUdJQVFnQ0NBRklBTWdCVUVVYWhEMEVTQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQU5CQVdvaEF3d0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUM5UUNBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQVE5eEVNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBRWdCVUVVYWhEMkVTQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUMvZ0NBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ2dnQlNBRE5nSUFJQVVnQVRZQ0JDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFQklBVkJBRFlDVEFKQUlBRW9BZ0FpQXlBREtBSUFLQUlJRVFBQUlnTWdCVUhNQUdvUUlpQURSZ1JBSUFBZ0JTQUJLQUlBSUFFb0FnUVErUkVNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnTTJBa0FnQXlBRktBSk1FRGtnQlVGQWF5RUhRUUFoQXdKQUFrQURRQ0FESUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFFb0FnQWlCaUFESUFZb0FnQW9BZ3dSQVFBMkFoUWdCU0FCS0FJRUlnWWdBeUFHS0FJQUtBSU1FUUVBTmdJUUlBVkJHR29pQmlBRUlBZ2dCU0FESUFWQkZHb2dCVUVRYWhENEVTQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQU5CQVdvaEF3d0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUM1SUdBUWQvSXdCQnNBRnJJZ1VrQUNBREtBSUFLQUlBS0FJQUlRWWdCU0FFTmdLc0FTQUZJQUUyQXFnQkFrQWdCaUFHS0FJQUtBSUlFUUFBRUxJQ0lnUUVRQ0FGUW9DQWdJREFBRGNDbkFFZ0JTQUZRWWdCYWpZQ21BRWdCVUtBZ0lDQXdBQTNBbndnQlNBRlFlZ0FhallDZUNBRlFkQUFhaUVISUFWQitBQnFJUWtnQlVHWUFXb2hDa0VBSVFNQ1FBTkFJQVFvQWh3Z0Ewc0VRQ0FGUWNnQWFpSUlJQVZCcUFGcUlBWWdBeUFHS0FJQUtBSU1FUUVBRVBzUkFrQWdDQkF3UlFSQUlBY1FNRVVOQVFzZ0FFRUNPZ0FFREFNTElBVkJpQUZxSUFWQnlBQnFFQm9RY1NBRlFlZ0FhaUFIRUJvUWNTQURRUUZxSVFNTUFRc0xJQUVvQWdBaEF5QUZJQVVvQXBnQktBSUFJZ1lnQmlnQ0FDZ0NDQkVBQURZQ1NDQUZJQVFvQWh3MkFqZ2dBeUFGUWNnQWFpSUlJQVZCT0dvaUN4Q2ZBaUVHSUFFb0FnQWhBeUFGSUFVb0FuZ29BZ0FpQnlBSEtBSUFLQUlJRVFBQU5nSklJQVVnQkNnQ0hEWUNPQ0FESUFWQnlBQnFJQVZCT0dvUW53SWhCQ0FCS0FJQUlRTWdCU0FLTmdJd0lBVWdCU2dDbUFFZ0JVR0lBV3BIT2dBMElBVWdBeUFHSUFWQk1Hb1FPallDT0NBQktBSUFJUUVnQlNBSk5nSW9JQVVnQlNnQ2VDQUZRZWdBYWtjNkFDd2dBU0FFSUFWQktHb1FPaUVCSUFWQkFqWUNSQ0FGSUFFMkFqd2dCU0FMTmdKQUlBVWdCU2tEUURjREVDQUZJQWdnQlVFUWFoQzFBaUlCUVFocU5nSmdJQVVnQVNBQktBSUlSem9BWkNBRElBSWdCVUhnQUdvUU9pRUNJQUJCQVRvQUJDQUFJQUkyQWdBZ0FSQ3FBUXNnQlVIb0FHb1FYaUFGUVlnQmFoQmVEQUVMSUFWQjZBQnFJZ01nQlVHb0FXb2dCaEQ3RVFKQUlBTVFNRVVFUUNBRlFmQUFhaUlERURCRkRRRUxJQUJCQWpvQUJBd0JDeUFCS0FJQUlRUWdCU0FGUWVnQWFoQWFLQUlBTmdKSUlBTVFHaWdDQUNFQklBVkJBallDSENBRklBRTJBa3dnQlNBRlFjZ0FhallDR0NBRklBVXBBeGczQXdnZ0JTQUZRWWdCYWlBRlFRaHFFTFVDSWdGQkNHbzJBaUFnQlNBQklBRW9BZ2hIT2dBa0lBUWdBaUFGUVNCcUVEb2hBaUFBUVFFNkFBUWdBQ0FDTmdJQUlBRVFxZ0VMSUFWQnNBRnFKQUFMMUFJQkJIOGpBRUhRQUdzaUJTUUFJQVVnQkRZQ0RDQUZJQUUyQWdnZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFWQkNHb2dBeWdDQUJEOUVRd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRlFSaHFJZ1lnQkNBSUlBVkJDR29nQVNBRlFSUnFFUHdSSUFZUUt3UkFJQVZCSUdvZ0JVRVlhaEFhRUNRZ0FVRUJhaUVCREFFTEN5QUZRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUZJQWMyQWhnZ0JTQUZLQUpBSUFWQklHcEhPZ0FjSUFRZ0FpQUZRUmhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBRlFTQnFFQ01MSUFWQjBBQnFKQUFMbEFNQkJIOGpBRUhRQUdzaUJTUUFJQVVnQkRZQ0JDQUZJQUUyQWdBZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFVZ0F5Z0NBQ0FES0FJRUlBTW9BZ2dRZ0JJTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ0UyQWtBZ0FTQUZLQUpNRURrZ0JVRkFheUVIUVFBaEFRSkFBa0FEUUNBQklBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBTW9BZ0FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaFFnQlNBREtBSUVJZ1lnQVNBR0tBSUFLQUlNRVFFQU5nSVFJQVVnQXlnQ0NDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0RDQUZRUmhxSWdZZ0JDQUlJQVVnQVNBRlFSUnFJQVZCRUdvZ0JVRU1haEQrRVNBR0VDc0VRQ0FGUVNCcUlBVkJHR29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCU0FITmdJWUlBVWdCU2dDUUNBRlFTQnFSem9BSENBRUlBSWdCVUVZYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JVRWdhaEFqQ3lBRlFkQUFhaVFBQzlRQ0FRUi9Jd0JCMEFCcklnVWtBQ0FGSUFRMkFnd2dCU0FCTmdJSUlBRW9BZ0FoQkNBREtBSUFLQUlBSVFNZ0JVRUFOZ0pNQWtBZ0F5Z0NBQ0lCSUFFb0FnQW9BZ2dSQUFBaUFTQUZRY3dBYWhBaUlBRkdCRUFnQUNBRlFRaHFJQU1vQWdBUWdoSU1BUXNnQlVLQWdJQ0FnQUUzQWtRZ0JTQUZRU0JxSWdFMkFrQWdBU0FGS0FKTUVEa2dCVUZBYXlFSFFRQWhBUUpBQWtBRFFDQUJJQVVvQWt4UERRRWdBa0VBRUNJaENDQUZJQU1vQWdBaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhRZ0JVRVlhaUlHSUFRZ0NDQUZRUWhxSUFFZ0JVRVVhaENCRWlBR0VDc0VRQ0FGUVNCcUlBVkJHR29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCU0FITmdJWUlBVWdCU2dDUUNBRlFTQnFSem9BSENBRUlBSWdCVUVZYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JVRWdhaEFqQ3lBRlFkQUFhaVFBQzlRQ0FRUi9Jd0JCMEFCcklnVWtBQ0FGSUFRMkFnd2dCU0FCTmdJSUlBRW9BZ0FoQkNBREtBSUFLQUlBSVFNZ0JVRUFOZ0pNQWtBZ0F5Z0NBQ0lCSUFFb0FnQW9BZ2dSQUFBaUFTQUZRY3dBYWhBaUlBRkdCRUFnQUNBRlFRaHFJQU1vQWdBUWhCSU1BUXNnQlVLQWdJQ0FnQUUzQWtRZ0JTQUZRU0JxSWdFMkFrQWdBU0FGS0FKTUVEa2dCVUZBYXlFSFFRQWhBUUpBQWtBRFFDQUJJQVVvQWt4UERRRWdBa0VBRUNJaENDQUZJQU1vQWdBaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhRZ0JVRVlhaUlHSUFRZ0NDQUZRUWhxSUFFZ0JVRVVhaENERWlBR0VDc0VRQ0FGUVNCcUlBVkJHR29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCU0FITmdJWUlBVWdCU2dDUUNBRlFTQnFSem9BSENBRUlBSWdCVUVZYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JVRWdhaEFqQ3lBRlFkQUFhaVFBQzBnQkFYOGpBRUVnYXlJQ0pBQWdBaUFBS0FJZ05nSVlJQUlnQUNrQ0dEY0RFQ0FDSUFBcEFoQTNBd2dnQVNnQ0FDQUNRUWhxSUFCQkpHb1EveEVoQUNBQ1FTQnFKQUFnQUF2VUFnRUVmeU1BUWRBQWF5SUZKQUFnQlNBRU5nSU1JQVVnQVRZQ0NDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JVRUlhaUFES0FJQUVJWVNEQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVkJHR29pQmlBRUlBZ2dCVUVJYWlBQklBVkJGR29RaFJJZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF2UEFnRURmeU1BUVVCcUlnVWtBQ0FES0FJQUtBSUFJZ01vQWdBaEJ5QUZRVGhxSWdZZ0FTQUVJQU1vQWdRZ0F5Z0NDQkNuQ0FKQUlBWVFNQVJBSUFFZ0JVRWdha0hINEFRUUZDSUJJQVFRL0FFZ0FSQVBHaUFBUVFJNkFBUU1BUXNDUUNBRlFUaHFFQm9pQXlnQ0FDSUdJQVlvQWdBb0FnZ1JBQUFpQmtVTkFBSkFJQVlvQWdRaUJrSHdueEpHQkVBZ0F5Z0NBQkE4UkFBQUFBQUFBQUFBWTBVTkFnd0JDeUFHUWJDcEVrWUVRQ0FES0FJQUVEUkRBQUFBQUYwTkFRd0NDeUFHUWRDb0VrY05BU0FES0FJQUVEOURBQUFBQUYxRkRRRUxJQUJCQVRvQUJDQUFJQWMyQWdBTUFRc2dCVUVCTmdJY0lBVWdCellDRkNBRklBVkJGR28yQWhnZ0JTQUZLUU1ZTndNSUlBVWdCVUVnYWlBRlFRaHFFSmNDSWdOQkJHbzJBakFnQlNBRElBTW9BZ1JIT2dBMElBQWdBU0FDSUFWQk1Hb2dCQkNiRkNBREVLZ0JDeUFGUVVCckpBQUwyd0lCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRUNBRklBTTJBZ2dnQlNBQk5nSU1JQUVvQWdBaEJDQURLQUlBS0FJQUlRRWdCVUVBTmdKTUFrQWdBU2dDQUNJRElBTW9BZ0FvQWdnUkFBQWlBeUFGUWN3QWFoQWlJQU5HQkVBZ0FDQUZRUWhxSUFFb0FnQVFpQklNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnTTJBa0FnQXlBRktBSk1FRGtnQlVGQWF5RUhRUUFoQXdKQUFrQURRQ0FESUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFFb0FnQWlCaUFESUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBTWdCVUVVYWhDSEVpQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQU5CQVdvaEF3d0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUM5UUNBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQVFpaElNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBRWdCVUVVYWhDSkVpQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUN3c0FJQUJCd3NFRUVCUWFDOVFDQVFSL0l3QkIwQUJySWdVa0FDQUZJQVEyQWd3Z0JTQUJOZ0lJSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGUVFocUlBTW9BZ0FRakJJTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ0UyQWtBZ0FTQUZLQUpNRURrZ0JVRkFheUVIUVFBaEFRSkFBa0FEUUNBQklBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBTW9BZ0FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaFFnQlVFWWFpSUdJQVFnQ0NBRlFRaHFJQUVnQlVFVWFoQ0xFaUFHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDMGtBSXdCQkVHc2lBaVFBSUFBZ0FTQUVJQU1vQWdBb0FnQWlBeWdDQUNBREtBSUVFS2NJSUFBUU1BUkFJQUVnQWtIeE5oQVVJZ0FnQkJEOEFTQUFFQThhQ3lBQ1FSQnFKQUFMcmdFQkFuOGpBRUVnYXlJRkpBQWdCU0FFTmdJY0lBVWdBVFlDR0NBREtBSUFLQUlBS0FJQUlnWWdCaWdDQUNnQ0NCRUFBQ0VHSUFNb0FnQWhBeUFGUVFBNkFBd2dCU0FETmdJSUlBVkJFR29pQXlBQklBWWdCVUVJYWlBRUVPd1RBa0FnQXhBd0JFQWdBQ0FGUVJocUVJMFNEQUVMSUFVZ0FTQUVJQUlnQlVFUWFoQWFLQUlBRUtvTklBVVFNQVJBSUFBZ0JVRVlhaENORWd3QkN5QUFJQVVwQXdBM0FnQUxJQVZCSUdva0FBdWFHZ01SZnhCOUVId2pBRUhBQVdzaUJpUUFJQVlnQXlnQ0FDZ0NBQ2dDQUNJRE5nS2tBU0FESUFNb0FnQW9BZ2dSQUFBaUF5Z0NCQ0VISUFZZ0JrR2tBV28yQXFBQkFrQUNRQUpBQWtBQ1FDQURRUUFnQjBId3FoSkdHeWdDSUVFQ2F3NERBQUVDQXdzZ0JpQUJOZ0lBSUFZZ0JDa0NDRGNDRENBR0lBUW9BaEEyQWhRZ0JpQUVLUUlBTndJRUlBWWdBallDR0NBR1FhQUJhaUlEUVFCQkFCQ05BU0VDSUFOQkFVRUFFSTBCSVFjZ0EwRUFRUUVRalFFaEJTQURRUUZCQVJDTkFTRURJQUlnQWlnQ0FDZ0NDQkVBQUNJSlJRUkFJQUJCQURvQUJBd0VDd0pBQWtBZ0NTZ0NCQ0lKUWZDZkVrWUVRQ0FHUWJBQmFpQUdJQUlRUENBSEVEd2dCUkE4SUFNUVBCQ1NFZ3dCQ3lBSlFiQ3BFa1lFUUNBR1FiQUJhaUFHSUFJUU5DQUhFRFFnQlJBMElBTVFOQkNSRWd3QkN5QUpRZENvRWtjTkFTQUdRYkFCYWlBR0lBSVFQeUFIRUQ4Z0JSQS9JQU1RUHhDUUVnc2dBQ0FHS1FPd0FUY0NBQXdFQ3lBQVFRQTZBQVFNQXdzZ0JpQUJOZ0lBSUFZZ0JDa0NDRGNDRENBR0lBUW9BaEEyQWhRZ0JpQUVLUUlBTndJRUlBWWdBallDR0NBR1FhQUJhaUlDUVFCQkFCQ05BU0VESUFKQkFVRUFFSTBCSVFjZ0FrRUNRUUFRalFFaEJTQUNRUUJCQVJDTkFTRUpJQUpCQVVFQkVJMEJJUW9nQWtFQ1FRRVFqUUVoQ3lBQ1FRQkJBaENOQVNFTUlBSkJBVUVDRUkwQklRMGdBa0VDUVFJUWpRRWhEaUFESUFNb0FnQW9BZ2dSQUFBaUNFVUVRQ0FBUVFBNkFBUU1Bd3NnQmtFRWNpRUNBa0FDUUNBSUtBSUVJZ2hCOEo4U1JnUkFJQVpCc0FGcUlnZ2dBU0FDSUFNUVBDQUhFRHdnQlJBOElBa1FQQ0FLRUR3Z0N4QThJQXdRUENBTkVEd2dEaEE4RUlzSUlBZ1FzZ0VFUUNBR1FhZ0JhaUFCSUFJZ0JpZ0NHQ0FHUWJBQmFoQktLd01BRUhNTUFnc2dCa0VDT2dDc0FRd0JDeUFJUWJDcEVrWUVRQ0FHUWJBQmFpSUlJQUVnQWlBREVEUWdCeEEwSUFVUU5DQUpFRFFnQ2hBMElBc1FOQ0FNRURRZ0RSQTBJQTRRTkJDS0NDQUlFQ3NFUUNBR1FhZ0JhaUFCSUFJZ0JpZ0NHQ0FHUWJBQmFoQWFLZ0lBRUdzTUFnc2dCa0VDT2dDc0FRd0JDeUFJUWRDb0VrY05BU0FHUWJBQmFpSUlJQUVnQWlBREVEOGdCeEEvSUFVUVB5QUpFRDhnQ2hBL0lBc1FQeUFNRUQ4Z0RSQS9JQTRRUHhDSkNDQUlFQ3NFUUNBR1FhZ0JhaUFCSUFJZ0JpZ0NHQ0FHUWJBQmFoQWFLZ0lBRUhJTUFRc2dCa0VDT2dDc0FRc2dBQ0FHS1FPb0FUY0NBQXdEQ3lBQVFRQTZBQVFNQWdzZ0JpQUJOZ0lBSUFZZ0JDa0NDRGNDRENBR0lBUW9BaEEyQWhRZ0JpQUVLUUlBTndJRUlBWWdBallDR0NBR1FhQUJhaUlDUVFCQkFCQ05BU0VESUFKQkFVRUFFSTBCSVFVZ0FrRUNRUUFRalFFaENTQUNRUU5CQUJDTkFTRUtJQUpCQUVFQkVJMEJJUXNnQWtFQlFRRVFqUUVoRENBQ1FRSkJBUkNOQVNFTklBSkJBMEVCRUkwQklRNGdBa0VBUVFJUWpRRWhDQ0FDUVFGQkFoQ05BU0VQSUFKQkFrRUNFSTBCSVJBZ0FrRURRUUlRalFFaEVTQUNRUUJCQXhDTkFTRVNJQUpCQVVFREVJMEJJUk1nQWtFQ1FRTVFqUUVoRkNBQ1FRTkJBeENOQVNFVklBTWdBeWdDQUNnQ0NCRUFBQ0lIUlFSQUlBQkJBRG9BQkF3Q0N5QUdRUVJ5SVFJQ1FBSkFJQWNvQWdRaUIwSHdueEpHQkVBZ0JrR3dBV29oQnlBREVEd2hNaUFGRUR3aEppQUpFRHdoSnlBS0VEd2hLQ0FMRUR3aE15QU1FRHdoS1NBTkVEd2hLaUFPRUR3aEt5QUlFRHdoTkNBUEVEd2hMQ0FRRUR3aExTQVJFRHdoTGlBU0VEd2hOU0FURUR3aEx5QVVFRHdoTUNBVkVEd2hNU01BUWFBQmF5SURKQUFnQTBHUUFXb2lCU0FCSUFJZ0tTQXFJQ3NnTENBdElDNGdMeUF3SURFUWl3Z0NRQ0FGRUdJRVFDQUhRUUk2QUFnTUFRc2dBMEdBQVdvaUJTQUJJQUlnTWlBRFFaQUJhaEJLS3dNQUVOc0JJQVVRWWdSQUlBZEJBam9BQ0F3QkN5QURRZkFBYWlJRklBRWdBaUFtSUNjZ0tDQXNJQzBnTGlBdklEQWdNUkNMQ0NBRkVHSUVRQ0FIUVFJNkFBZ01BUXNnQTBIZ0FHb2lCU0FCSUFJZ015QURRZkFBYWhCS0t3TUFFTnNCSUFVUVlnUkFJQWRCQWpvQUNBd0JDeUFEUWRBQWFpSUZJQUVnQWlBbUlDY2dLQ0FwSUNvZ0t5QXZJREFnTVJDTENDQUZFR0lFUUNBSFFRSTZBQWdNQVFzZ0EwRkFheUlGSUFFZ0FpQTBJQU5CMEFCcUVFb3JBd0FRMndFZ0JSQmlCRUFnQjBFQ09nQUlEQUVMSUFOQk1Hb2lCU0FCSUFJZ0ppQW5JQ2dnS1NBcUlDc2dMQ0F0SUM0UWl3Z2dCUkJpQkVBZ0IwRUNPZ0FJREFFTElBTkJJR29pQlNBQklBSWdOU0FEUVRCcUVFb3JBd0FRMndFZ0JSQmlCRUFnQjBFQ09nQUlEQUVMSUFOQkVHb2lCU0FCSUFJZ0EwR0FBV29RU2lzREFDQURRZUFBYWhCS0t3TUFFSUVFSUFVUVlnUkFJQWRCQWpvQUNBd0JDeUFESUFFZ0FpQURRUkJxSWdVUVNpc0RBQ0FEUVVCckVFb3JBd0FRMkFNZ0F5QURLUU1JTndNWUlBTWdBeWtEQURjREVDQUZFR0lFUUNBSFFRSTZBQWdNQVFzZ0J5QUJJQUlnQTBFUWFoQktLd01BSUFOQklHb1FTaXNEQUJDQkJBc2dBMEdnQVdva0FDQUhFTElCQkVBZ0JrR29BV29nQVNBQ0lBWW9BaGdnQmtHd0FXb1FTaXNEQUJCekRBSUxJQVpCQWpvQXJBRU1BUXNnQjBHd3FSSkdCRUFnQmtHd0FXb2hCeUFERURRaElpQUZFRFFoRmlBSkVEUWhGeUFLRURRaEdDQUxFRFFoSXlBTUVEUWhHU0FORURRaEdpQU9FRFFoR3lBSUVEUWhKQ0FQRURRaEhDQVFFRFFoSFNBUkVEUWhIaUFTRURRaEpTQVRFRFFoSHlBVUVEUWhJQ0FWRURRaElTTUFRZEFBYXlJREpBQWdBMEhJQUdvaUJTQUJJQUlnR1NBYUlCc2dIQ0FkSUI0Z0h5QWdJQ0VRaWdnQ1FDQUZFREFFUUNBSFFRSTZBQVFNQVFzZ0EwRkFheUlGSUFFZ0FpQWlJQU5CeUFCcUVCb3FBZ0FRMmdFZ0JSQXdCRUFnQjBFQ09nQUVEQUVMSUFOQk9Hb2lCU0FCSUFJZ0ZpQVhJQmdnSENBZElCNGdIeUFnSUNFUWlnZ2dCUkF3QkVBZ0IwRUNPZ0FFREFFTElBTkJNR29pQlNBQklBSWdJeUFEUVRocUVCb3FBZ0FRMmdFZ0JSQXdCRUFnQjBFQ09nQUVEQUVMSUFOQktHb2lCU0FCSUFJZ0ZpQVhJQmdnR1NBYUlCc2dIeUFnSUNFUWlnZ2dCUkF3QkVBZ0IwRUNPZ0FFREFFTElBTkJJR29pQlNBQklBSWdKQ0FEUVNocUVCb3FBZ0FRMmdFZ0JSQXdCRUFnQjBFQ09nQUVEQUVMSUFOQkdHb2lCU0FCSUFJZ0ZpQVhJQmdnR1NBYUlCc2dIQ0FkSUI0UWlnZ2dCUkF3QkVBZ0IwRUNPZ0FFREFFTElBTkJFR29pQlNBQklBSWdKU0FEUVJocUVCb3FBZ0FRMmdFZ0JSQXdCRUFnQjBFQ09nQUVEQUVMSUFOQkNHb2lCU0FCSUFJZ0EwRkFheEFhS2dJQUlBTkJNR29RR2lvQ0FCQ0FCQ0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBeUFCSUFJZ0EwRUlhaUlGRUJvcUFnQWdBMEVnYWhBYUtnSUFFTmNESUFNZ0F5a0RBRGNEQ0NBRkVEQUVRQ0FIUVFJNkFBUU1BUXNnQnlBQklBSWdBMEVJYWhBYUtnSUFJQU5CRUdvUUdpb0NBQkNBQkFzZ0EwSFFBR29rQUNBSEVDc0VRQ0FHUWFnQmFpQUJJQUlnQmlnQ0dDQUdRYkFCYWhBYUtnSUFFR3NNQWdzZ0JrRUNPZ0NzQVF3QkN5QUhRZENvRWtjTkFTQUdRYkFCYWlFSElBTVFQeUVpSUFVUVB5RVdJQWtRUHlFWElBb1FQeUVZSUFzUVB5RWpJQXdRUHlFWklBMFFQeUVhSUE0UVB5RWJJQWdRUHlFa0lBOFFQeUVjSUJBUVB5RWRJQkVRUHlFZUlCSVFQeUVsSUJNUVB5RWZJQlFRUHlFZ0lCVVFQeUVoSXdCQjBBQnJJZ01rQUNBRFFjZ0FhaUlGSUFFZ0FpQVpJQm9nR3lBY0lCMGdIaUFmSUNBZ0lSQ0pDQUpBSUFVUU1BUkFJQWRCQWpvQUJBd0JDeUFEUVVCcklnVWdBU0FDSUNJZ0EwSElBR29RR2lvQ0FCRFpBU0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBMEU0YWlJRklBRWdBaUFXSUJjZ0dDQWNJQjBnSGlBZklDQWdJUkNKQ0NBRkVEQUVRQ0FIUVFJNkFBUU1BUXNnQTBFd2FpSUZJQUVnQWlBaklBTkJPR29RR2lvQ0FCRFpBU0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBMEVvYWlJRklBRWdBaUFXSUJjZ0dDQVpJQm9nR3lBZklDQWdJUkNKQ0NBRkVEQUVRQ0FIUVFJNkFBUU1BUXNnQTBFZ2FpSUZJQUVnQWlBa0lBTkJLR29RR2lvQ0FCRFpBU0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBMEVZYWlJRklBRWdBaUFXSUJjZ0dDQVpJQm9nR3lBY0lCMGdIaENKQ0NBRkVEQUVRQ0FIUVFJNkFBUU1BUXNnQTBFUWFpSUZJQUVnQWlBbElBTkJHR29RR2lvQ0FCRFpBU0FGRURBRVFDQUhRUUk2QUFRTUFRc2dBMEVJYWlJRklBRWdBaUFEUVVCckVCb3FBZ0FnQTBFd2FoQWFLZ0lBRVA4RElBVVFNQVJBSUFkQkFqb0FCQXdCQ3lBRElBRWdBaUFEUVFocUlnVVFHaW9DQUNBRFFTQnFFQm9xQWdBUTFnTWdBeUFES1FNQU53TUlJQVVRTUFSQUlBZEJBam9BQkF3QkN5QUhJQUVnQWlBRFFRaHFFQm9xQWdBZ0EwRVFhaEFhS2dJQUVQOERDeUFEUWRBQWFpUUFJQWNRS3dSQUlBWkJxQUZxSUFFZ0FpQUdLQUlZSUFaQnNBRnFFQm9xQWdBUWNnd0JDeUFHUVFJNkFLd0JDeUFBSUFZcEE2Z0JOd0lBREFJTElBQkJBRG9BQkF3QkN5QUJLQUlBSWdJUUhDQUdRY1d0QlVIQ0VrRUlJQUpCeUFKcUVCY2lBa0VZYWtIRS9BQVFEaG9nQWhBWUlBQkJBam9BQkFzZ0FCQXdCRUFnQVNBR1FmWGlBQkFVSWdBZ0JCRDhBU0FBRUE4YUN5QUdRY0FCYWlRQUM5UUNBUVIvSXdCQjBBQnJJZ1VrQUNBRklBUTJBZ3dnQlNBQk5nSUlJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZRUWhxSUFNb0FnQVFqeElNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCVUVZYWlJR0lBUWdDQ0FGUVFocUlBRWdCVUVVYWhDT0VpQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUMvWUVBUU4vSXdCQmdBRnJJZ1VrQUNBREtBSUFLQUlBSWdNb0FnUWhCaUFES0FJQUlnTWdBeWdDQUNnQ0NCRUFBQkN5QWlnQ0dDRUhJQVVnQTBFQUlBTW9BZ0FvQWd3UkFRQTJBbndnQlNBRFFRRWdBeWdDQUNnQ0RCRUJBRFlDZUNBRklBTkJBaUFES0FJQUtBSU1FUUVBTmdKMElBVWdCa0VBSUFZb0FnQW9BZ3dSQVFBMkFuQWdCU0FHUVFFZ0JpZ0NBQ2dDREJFQkFEWUNiQ0FGSUFaQkFpQUdLQUlBS0FJTUVRRUFOZ0pvSUFVZ0FUWUNRQ0FGSUFRcEFnZzNBa3dnQlNBRUtBSVFOZ0pVSUFVZ0JDa0NBRGNDUkNBRklBYzJBbGdnQlVIZ0FHb2lBeUFGUVVCcklBVkIrQUJxSUFWQjlBQnFJQVZCN0FCcUlBVkI2QUJxRUxzTUFrQWdBeEF3QkVBZ0FFRUNPZ0FFREFFTElBVWdBVFlDUUNBRklBUXBBZ2czQWt3Z0JTQUVLQUlRTmdKVUlBVWdCQ2tDQURjQ1JDQUZJQWMyQWxnZ0JVRTRhaUlESUFWQlFHc2dCVUh3QUdvZ0JVSG9BR29nQlVIOEFHb2dCVUgwQUdvUXV3d2dBeEF3QkVBZ0FFRUNPZ0FFREFFTElBVWdBVFlDUUNBRklBUXBBZ2czQWt3Z0JTQUVLQUlRTmdKVUlBVWdCQ2tDQURjQ1JDQUZJQWMyQWxnZ0JVRXdhaUlFSUFWQlFHc2dCVUg4QUdvZ0JVSDRBR29nQlVId0FHb2dCVUhzQUdvUXV3eEJBaUVESUFBZ0JCQXdCSDlCQWdVZ0FTZ0NBQ0VESUFVZ0JVSGdBR29RR2lnQ0FEWUNGQ0FGSUFWQk9Hb1FHaWdDQURZQ0dDQUZRVEJxRUJvb0FnQWhBU0FGUVFNMkFpUWdCU0FCTmdJY0lBVWdCVUVVYWpZQ0lDQUZJQVVwQXlBM0F3Z2dCU0FGUVVCcklBVkJDR29ROGdZaUFVRU1hallDS0NBRklBRWdBU2dDREVjNkFDd2dBQ0FESUFJZ0JVRW9haEE2TmdJQUlBRVFyQU5CQVFzNkFBUUxJQVZCZ0FGcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNVRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKTVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNXRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKVVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNZRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKY1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNhRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKa1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNkRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVKd1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxsQU1CQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDQkNBRklBRTJBZ0FnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVVnQXlnQ0FDQURLQUlFSUFNb0FnZ1FueElNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCU0FES0FJRUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJUUlBVWdBeWdDQ0NJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRENBRlFSaHFJZ1lnQkNBSUlBVWdBU0FGUVJScUlBVkJFR29nQlVFTWFoQ2VFaUFHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDOVFDQVFSL0l3QkIwQUJySWdVa0FDQUZJQVEyQWd3Z0JTQUJOZ0lJSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGUVFocUlBTW9BZ0FRb1JJTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ0UyQWtBZ0FTQUZLQUpNRURrZ0JVRkFheUVIUVFBaEFRSkFBa0FEUUNBQklBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBTW9BZ0FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaFFnQlVFWWFpSUdJQVFnQ0NBRlFRaHFJQUVnQlVFVWFoQ2dFaUFHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDL2NDQVFSL0l3QkIwQUJySWdVa0FDQUZJQVEyQWd3Z0JTQUJOZ0lJSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGUVFocUlBTW9BZ0FnQXlnQ0JCQ2pFZ3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZJQU1vQWdRaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhBZ0JVRVlhaUlHSUFRZ0NDQUZRUWhxSUFFZ0JVRVVhaUFGUVJCcUVLSVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNsRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVLUVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNuRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVLWVNJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNwRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVLZ1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUwxQUlCQkg4akFFSFFBR3NpQlNRQUlBVWdCRFlDRENBRklBRTJBZ2dnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVZCQ0dvZ0F5Z0NBQkNzRWd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGUVJocUlnWWdCQ0FJSUFWQkNHb2dBU0FGUVJScUVLc1NJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxKZ0FnQUNBQklBSWdBeWdDQUNnQ0FDZ0NBQ0lBSUFBb0FnQW9BaFFSQUFCQkFYTVFpQUVMSmdBZ0FDQUJJQUlnQXlnQ0FDZ0NBQ2dDQUNJQUlBQW9BZ0FvQWhnUkFBQkJBWE1RaUFFTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCQ3VFZ3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRUswU0lBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCQ3hFZ3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRUs4U0lBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTDFBSUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVkJDR29nQXlnQ0FCQ3pFZ3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZRUmhxSWdZZ0JDQUlJQVZCQ0dvZ0FTQUZRUlJxRUxJU0lBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTGdRUUJCSDhqQUVIUUFXc2lCU1FBSUFVZ0FqWUN0QUVnQlNBRU5nS3NBU0FGSUFFMkFxZ0JJQVVnQlVHMEFXbzJBckFCQWtBZ0F5Z0NBQ2dDQUNnQ0JDSUNJQUlvQWdBb0FnZ1JBQUFRWENnQ0JFR2dzeEpIQkVBZ0FTZ0NBQ0lCRUJ3Z0JVRUlha0hGclFWQjBnOUJDQ0FCUWNnQ2FoQVhJZ0ZCR0dwQnhmd0dFQTRhSUFFUUdDQUFRUUk2QUFRTUFRc2dBU2dDQUNFRUlBTW9BZ0FvQWdBaEFpQUZLQUswQVNFRElBVkJBRFlDekFFZ0FpZ0NBQ0lCSUFFb0FnQW9BZ2dSQUFBaUFTQUZRY3dCYWhBaUlBRkdCRUFnQUNBRlFhZ0JhaUFDS0FJQUlBSW9BZ1FRdFJJTUFRc2dCVUtBZ0lDQWdBRTNBaXdnQlNBRlFRaHFJZ0UyQWlnZ0FTQUZLQUxNQVJBNUlBVkJLR29oQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUxNQVU4TkFTQURRUUFRSWlFSUlBVWdBaWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDdkFFZ0JTQUNLQUlFSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0s0QVNBRlFjQUJhaUlHSUFRZ0NDQUZRYWdCYWlBQklBVkJ2QUZxSUFWQnVBRnFFTFFTSUFZUUt3UkFJQVZCQ0dvZ0JVSEFBV29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUhBQVdvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ3dBRWdCU0FGS0FJb0lBVkJDR3BIT2dERUFTQUVJQU1nQlVIQUFXb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVZCQ0dvUUl3c2dCVUhRQVdva0FBdUJCQUVFZnlNQVFkQUJheUlGSkFBZ0JTQUNOZ0swQVNBRklBUTJBcXdCSUFVZ0FUWUNxQUVnQlNBRlFiUUJhallDc0FFQ1FDQURLQUlBS0FJQUtBSUVJZ0lnQWlnQ0FDZ0NDQkVBQUJCY0tBSUVRYUN6RWtjRVFDQUJLQUlBSWdFUUhDQUZRUWhxUWNXdEJVR09EMEVJSUFGQnlBSnFFQmNpQVVFWWFrSEYvQVlRRGhvZ0FSQVlJQUJCQWpvQUJBd0JDeUFCS0FJQUlRUWdBeWdDQUNnQ0FDRUNJQVVvQXJRQklRTWdCVUVBTmdMTUFTQUNLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFGcUVDSWdBVVlFUUNBQUlBVkJxQUZxSUFJb0FnQWdBaWdDQkJDM0Vnd0JDeUFGUW9DQWdJQ0FBVGNDTENBRklBVkJDR29pQVRZQ0tDQUJJQVVvQXN3QkVEa2dCVUVvYWlFSFFRQWhBUUpBQWtBRFFDQUJJQVVvQXN3QlR3MEJJQU5CQUJBaUlRZ2dCU0FDS0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdLOEFTQUZJQUlvQWdRaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQXJnQklBVkJ3QUZxSWdZZ0JDQUlJQVZCcUFGcUlBRWdCVUc4QVdvZ0JVRzRBV29RdGhJZ0JoQXJCRUFnQlVFSWFpQUZRY0FCYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUWNBQmFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nTEFBU0FGSUFVb0FpZ2dCVUVJYWtjNkFNUUJJQVFnQXlBRlFjQUJhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFSWFoQWpDeUFGUWRBQmFpUUFDNElEQVFSL0l3QkIwQUJySWdVa0FDQUZJQUkyQWd3Z0JTQUVOZ0lFSUFVZ0JVRU1hallDQ0NBRklBRTJBZ0FnQVNnQ0FDRUVJQU1vQWdBb0FnQWhBeUFGUVFBMkFrd0NRQ0FES0FJQUlnRWdBU2dDQUNnQ0NCRUFBQ0lCSUFWQnpBQnFFQ0lnQVVZRVFDQUFJQVVnQXlnQ0FDQURLQUlFRUxvU0RBRUxJQVZDZ0lDQWdJQUJOd0pFSUFVZ0JVRWdhaUlCTmdKQUlBRWdCU2dDVEJBNUlBVkJRR3NoQjBFQUlRRUNRQUpBQTBBZ0FTQUZLQUpNVHcwQklBSkJBQkFpSVFnZ0JTQURLQUlBSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lVSUFVZ0F5Z0NCQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNFQ0FGUVJocUlnWWdCQ0FJSUFVZ0FTQUZRUlJxSUFWQkVHb1F1UklnQmhBckJFQWdCVUVnYWlBRlFSaHFFQm9RSkNBQlFRRnFJUUVNQVFzTElBVkJHR29RUFJvZ0FFRUNPZ0FFREFFTElBVWdCellDR0NBRklBVW9Ba0FnQlVFZ2FrYzZBQndnQkNBQ0lBVkJHR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFWQklHb1FJd3NnQlVIUUFHb2tBQXVDQXdFRWZ5TUFRZEFBYXlJRkpBQWdCU0FDTmdJTUlBVWdCRFlDQkNBRklBVkJER28yQWdnZ0JTQUJOZ0lBSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGSUFNb0FnQWdBeWdDQkJDOEVnd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRklBTW9BZ1FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaEFnQlVFWWFpSUdJQVFnQ0NBRklBRWdCVUVVYWlBRlFSQnFFTHNTSUFZUUt3UkFJQVZCSUdvZ0JVRVlhaEFhRUNRZ0FVRUJhaUVCREFFTEN5QUZRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUZJQWMyQWhnZ0JTQUZLQUpBSUFWQklHcEhPZ0FjSUFRZ0FpQUZRUmhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBRlFTQnFFQ01MSUFWQjBBQnFKQUFMZ2dNQkJIOGpBRUhRQUdzaUJTUUFJQVVnQWpZQ0RDQUZJQVEyQWdRZ0JTQUZRUXhxTmdJSUlBVWdBVFlDQUNBQktBSUFJUVFnQXlnQ0FDZ0NBQ0VESUFWQkFEWUNUQUpBSUFNb0FnQWlBU0FCS0FJQUtBSUlFUUFBSWdFZ0JVSE1BR29RSWlBQlJnUkFJQUFnQlNBREtBSUFJQU1vQWdRUXpSSU1BUXNnQlVLQWdJQ0FnQUUzQWtRZ0JTQUZRU0JxSWdFMkFrQWdBU0FGS0FKTUVEa2dCVUZBYXlFSFFRQWhBUUpBQWtBRFFDQUJJQVVvQWt4UERRRWdBa0VBRUNJaENDQUZJQU1vQWdBaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhRZ0JTQURLQUlFSWdZZ0FTQUdLQUlBS0FJTUVRRUFOZ0lRSUFWQkdHb2lCaUFFSUFnZ0JTQUJJQVZCRkdvZ0JVRVFhaERHRWlBR0VDc0VRQ0FGUVNCcUlBVkJHR29RR2hBa0lBRkJBV29oQVF3QkN3c2dCVUVZYWhBOUdpQUFRUUk2QUFRTUFRc2dCU0FITmdJWUlBVWdCU2dDUUNBRlFTQnFSem9BSENBRUlBSWdCVUVZYWhBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JVRWdhaEFqQ3lBRlFkQUFhaVFBQ3hrQUlBQWdBU0FDSUFNb0FnQW9BZ0FvQWdRUStnRVFpQUVMTHdFQmZ5QUFJQUVnQWlBREtBSUFLQUlBS0FJQUVQb0JCSDhnQXlnQ0FDZ0NBQ2dDQkJENkFRVkJBQXNRaUFFTGdnTUJCSDhqQUVIUUFHc2lCU1FBSUFVZ0FqWUNEQ0FGSUFRMkFnUWdCU0FGUVF4cU5nSUlJQVVnQVRZQ0FDQUJLQUlBSVFRZ0F5Z0NBQ2dDQUNFRElBVkJBRFlDVEFKQUlBTW9BZ0FpQVNBQktBSUFLQUlJRVFBQUlnRWdCVUhNQUdvUUlpQUJSZ1JBSUFBZ0JTQURLQUlBSUFNb0FnUVE2aElNQVFzZ0JVS0FnSUNBZ0FFM0FrUWdCU0FGUVNCcUlnRTJBa0FnQVNBRktBSk1FRGtnQlVGQWF5RUhRUUFoQVFKQUFrQURRQ0FCSUFVb0FreFBEUUVnQWtFQUVDSWhDQ0FGSUFNb0FnQWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoUWdCU0FES0FJRUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJUUlBVkJHR29pQmlBRUlBZ2dCU0FCSUFWQkZHb2dCVUVRYWhEbUVpQUdFQ3NFUUNBRlFTQnFJQVZCR0dvUUdoQWtJQUZCQVdvaEFRd0JDd3NnQlVFWWFoQTlHaUFBUVFJNkFBUU1BUXNnQlNBSE5nSVlJQVVnQlNnQ1FDQUZRU0JxUnpvQUhDQUVJQUlnQlVFWWFoQTZJUUVnQUVFQk9nQUVJQUFnQVRZQ0FBc2dCVUVnYWhBakN5QUZRZEFBYWlRQUM0SURBUVIvSXdCQjBBQnJJZ1VrQUNBRklBSTJBZ3dnQlNBRU5nSUVJQVVnQlVFTWFqWUNDQ0FGSUFFMkFnQWdBU2dDQUNFRUlBTW9BZ0FvQWdBaEF5QUZRUUEyQWt3Q1FDQURLQUlBSWdFZ0FTZ0NBQ2dDQ0JFQUFDSUJJQVZCekFCcUVDSWdBVVlFUUNBQUlBVWdBeWdDQUNBREtBSUVFSUVUREFFTElBVkNnSUNBZ0lBQk53SkVJQVVnQlVFZ2FpSUJOZ0pBSUFFZ0JTZ0NUQkE1SUFWQlFHc2hCMEVBSVFFQ1FBSkFBMEFnQVNBRktBSk1UdzBCSUFKQkFCQWlJUWdnQlNBREtBSUFJZ1lnQVNBR0tBSUFLQUlNRVFFQU5nSVVJQVVnQXlnQ0JDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0VDQUZRUmhxSWdZZ0JDQUlJQVVnQVNBRlFSUnFJQVZCRUdvUStSSWdCaEFyQkVBZ0JVRWdhaUFGUVJocUVCb1FKQ0FCUVFGcUlRRU1BUXNMSUFWQkdHb1FQUm9nQUVFQ09nQUVEQUVMSUFVZ0J6WUNHQ0FGSUFVb0FrQWdCVUVnYWtjNkFCd2dCQ0FDSUFWQkdHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVZCSUdvUUl3c2dCVUhRQUdva0FBdUNBd0VFZnlNQVFkQUFheUlGSkFBZ0JTQUNOZ0lNSUFVZ0JEWUNCQ0FGSUFWQkRHbzJBZ2dnQlNBQk5nSUFJQUVvQWdBaEJDQURLQUlBS0FJQUlRTWdCVUVBTmdKTUFrQWdBeWdDQUNJQklBRW9BZ0FvQWdnUkFBQWlBU0FGUWN3QWFoQWlJQUZHQkVBZ0FDQUZJQU1vQWdBZ0F5Z0NCQkNSRXd3QkN5QUZRb0NBZ0lDQUFUY0NSQ0FGSUFWQklHb2lBVFlDUUNBQklBVW9Ba3dRT1NBRlFVQnJJUWRCQUNFQkFrQUNRQU5BSUFFZ0JTZ0NURThOQVNBQ1FRQVFJaUVJSUFVZ0F5Z0NBQ0lHSUFFZ0JpZ0NBQ2dDREJFQkFEWUNGQ0FGSUFNb0FnUWlCaUFCSUFZb0FnQW9BZ3dSQVFBMkFoQWdCVUVZYWlJR0lBUWdDQ0FGSUFFZ0JVRVVhaUFGUVJCcUVJa1RJQVlRS3dSQUlBVkJJR29nQlVFWWFoQWFFQ1FnQVVFQmFpRUJEQUVMQ3lBRlFSaHFFRDBhSUFCQkFqb0FCQXdCQ3lBRklBYzJBaGdnQlNBRktBSkFJQVZCSUdwSE9nQWNJQVFnQWlBRlFSaHFFRG9oQVNBQVFRRTZBQVFnQUNBQk5nSUFDeUFGUVNCcUVDTUxJQVZCMEFCcUpBQUxEQUFnQUJEVERCb2dBQkFmQ3drQUlBQVEwd3dRSHdzR0FFSGxvZ01MQmdCQjBZWUZDd1lBUWVEREFnc1hBQ0FBUlFSQVFRQVBDeUFBUVpEa0R4Q1hFMEVBUndzY0FDQUFJQUVvQWdnZ0JSQ2dBd1JBSUFFZ0FpQURJQVFRMkF3TEM3RUNBUWQvSUFBZ0FTZ0NDQ0FGRUtBREJFQWdBU0FDSUFNZ0JCRFlEQThMSUFFdEFEVWhCaUFBS0FJTUlRa2dBVUVBT2dBMUlBRXRBRFFoQnlBQlFRQTZBRFFnQUVFUWFpSU1LQUlBSUFBb0FoUWdBU0FDSUFNZ0JDQUZFTlFNSUFZZ0FTMEFOU0lLY2lFR0lBY2dBUzBBTkNJTGNpRUhBa0FnQUVFWWFpSUlJQXdnQ1VFRGRHb2lDVThOQUFOQUlBZEJBWEVoQnlBR1FRRnhJUVlnQVMwQU5nMEJBa0FnQ3dSQUlBRW9BaGhCQVVZTkF5QUFMUUFJUVFKeERRRU1Bd3NnQ2tVTkFDQUFMUUFJUVFGeFJRMENDeUFCUVFBN0FUUWdDQ2dDQUNBSUtBSUVJQUVnQWlBRElBUWdCUkRVRENBQkxRQTFJZ29nQm5JaEJpQUJMUUEwSWdzZ0IzSWhCeUFJUVFocUlnZ2dDVWtOQUFzTElBRWdCa0gvQVhGQkFFYzZBRFVnQVNBSFFmOEJjVUVBUnpvQU5BdVVBUUFnQUNBQktBSUlJQVFRb0FNRVFDQUJJQUlnQXhEWERBOExBa0FnQUNBQktBSUFJQVFRb0FORkRRQUNRQ0FDSUFFb0FoQkhCRUFnQVNnQ0ZDQUNSdzBCQ3lBRFFRRkhEUUVnQVVFQk5nSWdEd3NnQVNBQ05nSVVJQUVnQXpZQ0lDQUJJQUVvQWloQkFXbzJBaWdDUUNBQktBSWtRUUZIRFFBZ0FTZ0NHRUVDUncwQUlBRkJBVG9BTmdzZ0FVRUVOZ0lzQ3d2REJBRURmeUFBSUFFb0FnZ2dCQkNnQXdSQUlBRWdBaUFERU5jTUR3c0NRQ0FBSUFFb0FnQWdCQkNnQXdSQUFrQWdBaUFCS0FJUVJ3UkFJQUVvQWhRZ0FrY05BUXNnQTBFQlJ3MENJQUZCQVRZQ0lBOExJQUVnQXpZQ0lDQUJLQUlzUVFSSEJFQWdBRUVRYWlJRklBQW9BZ3hCQTNScUlRZEJBQ0VESUFFQ2Z3SkFBMEFDUUNBRklBZFBEUUFnQVVFQU93RTBJQVVvQWdBZ0JTZ0NCQ0FCSUFJZ0FrRUJJQVFRMUF3Z0FTMEFOZzBBQWtBZ0FTMEFOVVVOQUNBQkxRQTBCRUJCQVNFRElBRW9BaGhCQVVZTkJFRUJJUVlnQUMwQUNFRUNjUTBCREFRTFFRRWhCaUFBTFFBSVFRRnhSUTBEQ3lBRlFRaHFJUVVNQVFzTFFRUWdCa1VOQVJvTFFRTUxOZ0lzSUFOQkFYRU5BZ3NnQVNBQ05nSVVJQUVnQVNnQ0tFRUJhallDS0NBQktBSWtRUUZIRFFFZ0FTZ0NHRUVDUncwQklBRkJBVG9BTmc4TElBQW9BZ3doQmlBQVFSQnFJZ2NvQWdBZ0FDZ0NGQ0FCSUFJZ0F5QUVFT1VKSUFCQkdHb2lCU0FISUFaQkEzUnFJZ1pQRFFBQ1FDQUFLQUlJSWdCQkFuRkZCRUFnQVNnQ0pFRUJSdzBCQ3dOQUlBRXRBRFlOQWlBRktBSUFJQVVvQWdRZ0FTQUNJQU1nQkJEbENTQUZRUWhxSWdVZ0Jra05BQXNNQVFzZ0FFRUJjVVVFUUFOQUlBRXRBRFlOQWlBQktBSWtRUUZHRFFJZ0JTZ0NBQ0FGS0FJRUlBRWdBaUFESUFRUTVRa2dCVUVJYWlJRklBWkpEUUFNQWdzQUN3TkFJQUV0QURZTkFTQUJLQUlrUVFGR0JFQWdBU2dDR0VFQlJnMENDeUFGS0FJQUlBVW9BZ1FnQVNBQ0lBTWdCQkRsQ1NBRlFRaHFJZ1VnQmtrTkFBc0xDM3dCQW44Z0FDQUJLQUlJUVFBUW9BTUVRQ0FCSUFJZ0F4RFdEQThMSUFBb0Fnd2hCQ0FBUVJCcUlnVW9BZ0FnQUNnQ0ZDQUJJQUlnQXhDVkV3SkFJQUJCR0dvaUFDQUZJQVJCQTNScUlnUlBEUUFEUUNBQUtBSUFJQUFvQWdRZ0FTQUNJQU1RbFJNZ0FTMEFOZzBCSUFCQkNHb2lBQ0FFU1EwQUN3c0xHZ0FnQUNBQktBSUlRUUFRb0FNRVFDQUJJQUlnQXhEV0RBc0xNd0FnQUNBQktBSUlRUUFRb0FNRVFDQUJJQUlnQXhEV0RBOExJQUFvQWdnaUFDQUJJQUlnQXlBQUtBSUFLQUljRVFZQUMvVUJBQ0FBSUFFb0FnZ2dCQkNnQXdSQUlBRWdBaUFERU5jTUR3c0NRQ0FBSUFFb0FnQWdCQkNnQXdSQUFrQWdBaUFCS0FJUVJ3UkFJQUVvQWhRZ0FrY05BUXNnQTBFQlJ3MENJQUZCQVRZQ0lBOExJQUVnQXpZQ0lBSkFJQUVvQWl4QkJFWU5BQ0FCUVFBN0FUUWdBQ2dDQ0NJQUlBRWdBaUFDUVFFZ0JDQUFLQUlBS0FJVUVRb0FJQUV0QURVRVFDQUJRUU0yQWl3Z0FTMEFORVVOQVF3REN5QUJRUVEyQWl3TElBRWdBallDRkNBQklBRW9BaWhCQVdvMkFpZ2dBU2dDSkVFQlJ3MEJJQUVvQWhoQkFrY05BU0FCUVFFNkFEWVBDeUFBS0FJSUlnQWdBU0FDSUFNZ0JDQUFLQUlBS0FJWUVRZ0FDd3M1QUNBQUlBRW9BZ2dnQlJDZ0F3UkFJQUVnQWlBRElBUVEyQXdQQ3lBQUtBSUlJZ0FnQVNBQ0lBTWdCQ0FGSUFBb0FnQW9BaFFSQ2dBTG9RRUJBbjhqQUVGQWFpSURKQUFDZjBFQklBQWdBVUVBRUtBRERRQWFRUUFnQVVVTkFCcEJBQ0FCUWJEakR4Q1hFeUlCUlEwQUdpQURRUWhxSWdSQkJISkJBRUUwRUhrYUlBTkJBVFlDT0NBRFFYODJBaFFnQXlBQU5nSVFJQU1nQVRZQ0NDQUJJQVFnQWlnQ0FFRUJJQUVvQWdBb0Fod1JCZ0FnQXlnQ0lDSUFRUUZHQkVBZ0FpQURLQUlZTmdJQUN5QUFRUUZHQ3lFQUlBTkJRR3NrQUNBQUN3VUFFRzhBQzRJREFRUi9Jd0JCMEFCcklnVWtBQ0FGSUFJMkFnd2dCU0FFTmdJRUlBVWdCVUVNYWpZQ0NDQUZJQUUyQWdBZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFVZ0F5Z0NBQ0FES0FJRUVKWVREQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVWdBeWdDQkNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRUNBRlFSaHFJZ1lnQkNBSUlBVWdBU0FGUVJScUlBVkJFR29RbEJNZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUF0RkFDTUFRUkJySWdFa0FDQUFRUUFnQVNBQ0lBTVFoUW9pQUJCN1FRQVF1UlJCQUJDcUdDSUNFSHNnQUJCN0lBSVFPMEVCYWhDNUZCb2dBQkFQR2lBQlFSQnFKQUFMVHdBakFFRWdheUlBSkFBZ0FFRVFhaUFCSUFJUWhRb2hBU0FBSUFNZ0JCQ0ZDaUVDSUFFUWV5QUNFSHNRb2dJaEF5QUNFQThhSUFFUUR4b2dBRUVnYWlRQVFYOGdBMEVBUnlBRFFRQklHd3NKQUNBQUVLUVRFQjhMVWdBakFFRVFheUlCSkFBZ0FFRUFJQUVnQWlBREVJd0hJZ0FRandKQkFCQzRGRUVBRVAwTUlnSVFqd0lnQUJDUEFpQUNLQUlFSUFJdEFBc1FtQUZCQVdvUXVCUWFJQUFRaHdFYUlBRkJFR29rQUF1Z0FRRUNmeU1BUVNCcklnQWtBQ0FBUVJCcUlBRWdBaENNQnlFRklBQWdBeUFFRUl3SElRWWdCUkNQQWlFQkFrQWdCaENQQWlJRUtBSUFJZ0pGSUFFb0FnQWlBMFZ5SUFJZ0EwZHlEUUFEUUNBRUtBSUVJZ0pGSUFFb0FnUWlBMFZ5RFFFZ0JFRUVhaUVFSUFGQkJHb2hBU0FDSUFOR0RRQUxDeUFESUFKcklRRWdCaENIQVJvZ0JSQ0hBUm9nQUVFZ2FpUUFRWDhnQVVFQVJ5QUJRUUJJR3d1Q0F3RUVmeU1BUWRBQWF5SUZKQUFnQlNBQ05nSU1JQVVnQkRZQ0JDQUZJQVZCREdvMkFnZ2dCU0FCTmdJQUlBRW9BZ0FoQkNBREtBSUFLQUlBSVFNZ0JVRUFOZ0pNQWtBZ0F5Z0NBQ0lCSUFFb0FnQW9BZ2dSQUFBaUFTQUZRY3dBYWhBaUlBRkdCRUFnQUNBRklBTW9BZ0FnQXlnQ0JCQ2lFd3dCQ3lBRlFvQ0FnSUNBQVRjQ1JDQUZJQVZCSUdvaUFUWUNRQ0FCSUFVb0Frd1FPU0FGUVVCcklRZEJBQ0VCQWtBQ1FBTkFJQUVnQlNnQ1RFOE5BU0FDUVFBUUlpRUlJQVVnQXlnQ0FDSUdJQUVnQmlnQ0FDZ0NEQkVCQURZQ0ZDQUZJQU1vQWdRaUJpQUJJQVlvQWdBb0Fnd1JBUUEyQWhBZ0JVRVlhaUlHSUFRZ0NDQUZJQUVnQlVFVWFpQUZRUkJxRUo0VElBWVFLd1JBSUFWQklHb2dCVUVZYWhBYUVDUWdBVUVCYWlFQkRBRUxDeUFGUVJocUVEMGFJQUJCQWpvQUJBd0JDeUFGSUFjMkFoZ2dCU0FGS0FKQUlBVkJJR3BIT2dBY0lBUWdBaUFGUVJocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRU0JxRUNNTElBVkIwQUJxSkFBTENRQWdBQkNsRXhBZkN3a0FJQUFRcGhNUUh3c0pBQ0FBRUtjVEVCOExDUUFnQUJDcUV4QWZDd2tBSUFBUXF4TVFId3NsQUFOQUlBRWdBa2NFUUNBQklBRXRBQUFRdGhRNkFBQWdBVUVCYWlFQkRBRUxDeUFDQ3hFQUlBRkIvd0Z4RUxZVVFSaDBRUmgxQ3lVQUEwQWdBU0FDUndSQUlBRWdBUzBBQUJDM0ZEb0FBQ0FCUVFGcUlRRU1BUXNMSUFJTEVRQWdBVUgvQVhFUXR4UkJHSFJCR0hVTHdnVUJBbjhnQUVHSUJHb2hBVUVBSVFBRFFBSkFJQUVRT3lBQVRRMEFJQUVnQUJEbUFTMEFBRUVsUmcwQUlBQkJBV29oQUF3QkN3c0NRQUpBQWtBQ1FDQUJJQUJCQVdvUTVnRXNBQUFpQWtINUFFY0VRQ0FDUWVRQVJnMENJQUpCN1FCR0RRRWdBa0haQUVjTkF3c2dBRUVDYWlFQUEwQUNRQ0FCRURzZ0FFME5BQ0FCSUFBUTVnRXRBQUJCSlVZTkFDQUFRUUZxSVFBTUFRc0xJQUVRT3lBQVJnMENJQUVnQUVFQmFoRG1BU3dBQUNJQ1FlUUFSd1JBSUFKQjdRQkhEUU1nQUVFQ2FpRUFBMEFDUUNBQkVEc2dBRTBOQUNBQklBQVE1Z0V0QUFCQkpVWU5BQ0FBUVFGcUlRQU1BUXNMSUFFUU95QUFSZzBEUVFNaEFpQUJJQUJCQVdvUTVnRXRBQUJCNUFCSERRTU1CQXNnQUVFQ2FpRUFBMEFDUUNBQkVEc2dBRTBOQUNBQklBQVE1Z0V0QUFCQkpVWU5BQ0FBUVFGcUlRQU1BUXNMSUFFUU95QUFSZzBDUVFRaEFpQUJJQUJCQVdvUTVnRXRBQUJCN1FCSERRSU1Bd3NnQUVFQ2FpRUFBMEFDUUNBQkVEc2dBRTBOQUNBQklBQVE1Z0V0QUFCQkpVWU5BQ0FBUVFGcUlRQU1BUXNMSUFFUU95QUFSZzBCSUFFZ0FFRUJhaERtQVMwQUFFSGtBRWNOQVNBQVFRSnFJUUFEUUFKQUlBRVFPeUFBVFEwQUlBRWdBQkRtQVMwQUFFRWxSZzBBSUFCQkFXb2hBQXdCQ3dzZ0FSQTdJQUJHRFFGQkFpRUNJQUVnQUVFQmFpSUFFT1lCTFFBQVFma0FSZzBDSUFFZ0FCRG1BUzBBQUVIWkFFY05BUXdDQ3lBQVFRSnFJUUFEUUFKQUlBRVFPeUFBVFEwQUlBRWdBQkRtQVMwQUFFRWxSZzBBSUFCQkFXb2hBQXdCQ3dzZ0FSQTdJQUJHRFFBZ0FTQUFRUUZxRU9ZQkxRQUFRZTBBUncwQUlBQkJBbW9oQUFOQUFrQWdBUkE3SUFCTkRRQWdBU0FBRU9ZQkxRQUFRU1ZHRFFBZ0FFRUJhaUVBREFFTEN5QUJFRHNnQUVZTkFFRUJJUUlnQVNBQVFRRnFJZ0FRNWdFdEFBQkIrUUJHRFFFZ0FTQUFFT1lCTFFBQVFka0FSZzBCQzBFQUlRSUxJQUlMQ1FBZ0FCQ3ZFeEFmQ3o0QkFYOERRQ0FCSUFKR1JRUkFJQVFnQXlBQktBSUFJQUFvQWdnUTRRd2lCU0FGUVg5R0d6b0FBQ0FFUVFGcUlRUWdBVUVFYWlFQkRBRUxDeUFDQzRJREFRUi9Jd0JCMEFCcklnVWtBQ0FGSUFJMkFnd2dCU0FFTmdJRUlBVWdCVUVNYWpZQ0NDQUZJQUUyQWdBZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFVZ0F5Z0NBQ0FES0FJRUVLd1REQUVMSUFWQ2dJQ0FnSUFCTndKRUlBVWdCVUVnYWlJQk5nSkFJQUVnQlNnQ1RCQTVJQVZCUUdzaEIwRUFJUUVDUUFKQUEwQWdBU0FGS0FKTVR3MEJJQUpCQUJBaUlRZ2dCU0FES0FJQUlnWWdBU0FHS0FJQUtBSU1FUUVBTmdJVUlBVWdBeWdDQkNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRUNBRlFSaHFJZ1lnQkNBSUlBVWdBU0FGUVJScUlBVkJFR29RcVJNZ0JoQXJCRUFnQlVFZ2FpQUZRUmhxRUJvUUpDQUJRUUZxSVFFTUFRc0xJQVZCR0dvUVBSb2dBRUVDT2dBRURBRUxJQVVnQnpZQ0dDQUZJQVVvQWtBZ0JVRWdha2M2QUJ3Z0JDQUNJQVZCR0dvUU9pRUJJQUJCQVRvQUJDQUFJQUUyQWdBTElBVkJJR29RSXdzZ0JVSFFBR29rQUFzY0FDQUNJQUVnQUNnQ0NCRGhEQ0lBSUFCQmYwWWJRUmgwUVJoMUN6SUFBMEFnQVNBQ1JrVUVRQ0FESUFFc0FBQWdBQ2dDQ0JDeEV6WUNBQ0FEUVFScUlRTWdBVUVCYWlFQkRBRUxDeUFDQ3d3QUlBRWdBQ2dDQ0JDeEV3c2xBQU5BSUFFZ0FrY0VRQ0FCSUFFb0FnQVFoUTAyQWdBZ0FVRUVhaUVCREFFTEN5QUNDd2NBSUFFUWhRMExKUUFEUUNBQklBSkhCRUFnQVNBQktBSUFFSVFOTmdJQUlBRkJCR29oQVF3QkN3c2dBZ3NIQUNBQkVJUU5DL0FCQVFsL0lBRkJnQVJ4SVFRZ0FVR0FBbkVoQlNBQlFZQUJjU0VHSUFGQndBQnhJUWNnQVVFZ2NTRUlJQUZCRUhFaENTQUJRUWh4SVFvZ0FVRUVjU0VMSUFGQkFuRWhEQ0FCUVFGeElRRUNRQU5BSUFJZ0EwWU5BU0FDS0FJQUlRQUNRQUpBSUFFRVFDQUFFSTRLRFFFTElBd0VRQ0FBRUkwS0RRRUxJQXNFUUNBQUVJd0tEUUVMSUFvRVFDQUFFSXNLRFFFTElBa0VRQ0FBRUlvS0RRRUxJQWdFUUNBQUVJa0tEUUVMSUFjRVFDQUFFTG9ERFFFTElBWUVRQ0FBRUlnS0RRRUxJQVVFUUNBQUVJY0tEUUVMSUFSRkRRRWdBQkNHQ2tVTkFRc2dBa0VFYWlFQ0RBRUxDeUFDSVFNTElBTUw3QUVCQ1g4Z0FVR0FCSEVoQkNBQlFZQUNjU0VGSUFGQmdBRnhJUVlnQVVIQUFIRWhCeUFCUVNCeElRZ2dBVUVRY1NFSklBRkJDSEVoQ2lBQlFRUnhJUXNnQVVFQ2NTRU1JQUZCQVhFaEFRSkFBMEFnQWlBRFJnMEJJQUlvQWdBaEFBSkFJQUVFUUNBQUVJNEtEUUVMSUF3RVFDQUFFSTBLRFFFTElBc0VRQ0FBRUl3S0RRRUxJQW9FUUNBQUVJc0tEUUVMSUFrRVFDQUFFSW9LRFFFTElBZ0VRQ0FBRUlrS0RRRUxJQWNFUUNBQUVMb0REUUVMSUFZRVFDQUFFSWdLRFFFTElBVUVRQ0FBRUljS0RRRUxJQVFFUUNBQUVJWUtEUUVMSUFKQkJHb2hBZ3dCQ3dzZ0FpRURDeUFEQzRJQ0FRcC9BMEFnQVNBQ1J3UkFBa0FnQXdKL0lBRW9BZ0FpQUVIL0FFMEVRQ0FBUVFKMFFZQ1dEMm9vQWdBTUFRc2dBMEVBTmdJQUlBTWdBQkNPQ2tFQVJ5SUxRUUp5SUFzZ0FCQ05DaUlNR3lJRVFRUnlJQVFnQUJDTUNpSUVHeUlGUVFoeUlBVWdBQkNMQ2lJRkd5SUdRUkJ5SUFZZ0FCQ0tDaUlHR3lJSFFTQnlJQWNnQUJDSkNpSUhHeUlJUWNBQWNpQUlJQUFRdWdNaUNCc2lDVUdBQVhJZ0NTQUFFSWdLSWdrYklncEJnQUp5SUFvZ0FCQ0hDaUlLR3lJTklBc2dDaUFKSUFnZ0J5QUdJQVVnQkNBTWNuSnljbkp5Y2hzMkFnQWdBQkNHQ2tVTkFTQU5RWUFFY2dzMkFnQUxJQU5CQkdvaEF5QUJRUVJxSVFFTUFRc0xJQUlMMmdFQVFRQWhBQ0FCUVFGeEJFQWdBaENPQ2tFQVJ5RUFDeUFCUVFKeEJFQWdBQ0FDRUkwS1FRQkhjaUVBQ3lBQlFRUnhCRUFnQUNBQ0VJd0tRUUJIY2lFQUN5QUJRUWh4QkVBZ0FDQUNFSXNLUVFCSGNpRUFDeUFCUVJCeEJFQWdBQ0FDRUlvS1FRQkhjaUVBQ3lBQlFTQnhCRUFnQUNBQ0VJa0tRUUJIY2lFQUN5QUJRY0FBY1FSQUlBQWdBaEM2QTBFQVIzSWhBQXNnQVVHQUFYRUVRQ0FBSUFJUWlBcEJBRWR5SVFBTElBRkJnQUp4QkVBZ0FDQUNFSWNLUVFCSGNpRUFDeUFCUVlBRWNRUi9JQUFnQWhDR0NrRUFSM0lGSUFBTEMwVUJBWDhqQUVFUWF5SUZKQUFnQlNBRU5nSU1JQVVnQVRZQ0NDQUFJQUVvQWdBZ0FpQUZRUWhxSUFNb0FnQW9BZ0FpQUNnQ0FDQUFLQUlFRUxJVElBVkJFR29rQUF1eEJnRURmeUFBUVF4cUlnQkIvQU5xSVFNZ0FDZ0NnQVFnQUMwQWh3UVFtQUVoQWdOQUFrQWdBU0FDUmdSQUlBSWhBUXdCQ3lBRElBRVE5UUVvQWdCQkpVWU5BQ0FCUVFGcUlRRU1BUXNMQWtBQ1FBSkFBa0FDUUNBRElBRkJBV29ROVFFb0FnQWlBRUg1QUVjRVFDQUFRZVFBUmcwQklBQkI3UUJHRFFJZ0FFSFpBRWNOQkFzZ0FpQUJRUUpxSWdFZ0FTQUNTUnNoQUFOQUFrQWdBU0FDU1FSQUlBTWdBUkQxQVNnQ0FFRWxSdzBCSUFFaEFBc2dBQ0FDUmcwRklBTWdBRUVCYWhEMUFTZ0NBQ0lCUWVRQVJnMEVJQUZCN1FCSERRVWdBaUFBUVFKcUlnRWdBU0FDU1JzaEFBTkFBa0FnQVNBQ1NRUkFJQU1nQVJEMUFTZ0NBRUVsUncwQklBRWhBQXNnQUNBQ1JnMEhRUU1oQVNBRElBQkJBV29ROVFFb0FnQkI1QUJIRFFjTUNBc2dBVUVCYWlFQkRBQUxBQXNnQVVFQmFpRUJEQUFMQUFzZ0FpQUJRUUpxSWdFZ0FTQUNTUnNoQUFOQUFrQWdBU0FDU1FSQUlBTWdBUkQxQVNnQ0FFRWxSdzBCSUFFaEFBc2dBQ0FDUmcwRUlBTWdBRUVCYWhEMUFTZ0NBRUh0QUVjTkJDQUNJQUJCQW1vaUFTQUJJQUpKR3lFQUEwQUNRQ0FCSUFKSkJFQWdBeUFCRVBVQktBSUFRU1ZIRFFFZ0FTRUFDeUFBSUFKR0RRWkJBU0VCSUFNZ0FFRUJhaUlBRVBVQktBSUFRZmtBUmcwSElBTWdBQkQxQVNnQ0FFSFpBRVlOQnd3R0N5QUJRUUZxSVFFTUFBc0FDeUFCUVFGcUlRRU1BQXNBQ3lBQ0lBRkJBbW9pQVNBQklBSkpHeUVBQTBBQ1FDQUJJQUpKQkVBZ0F5QUJFUFVCS0FJQVFTVkhEUUVnQVNFQUN5QUFJQUpHRFFNZ0F5QUFRUUZxRVBVQktBSUFRZVFBUncwRElBSWdBRUVDYWlJQklBRWdBa2tiSVFBRFFBSkFJQUVnQWtrRVFDQURJQUVROVFFb0FnQkJKVWNOQVNBQklRQUxJQUFnQWtZTkJVRUNJUUVnQXlBQVFRRnFJZ0FROVFFb0FnQkIrUUJHRFFZZ0F5QUFFUFVCS0FJQVFka0FSdzBGREFZTElBRkJBV29oQVF3QUN3QUxJQUZCQVdvaEFRd0FDd0FMSUFJZ0FFRUNhaUlCSUFFZ0Fra2JJUUFEUUFKQUlBRWdBa2tFUUNBRElBRVE5UUVvQWdCQkpVY05BU0FCSVFBTElBQWdBa1lOQWtFRUlRRWdBeUFBUVFGcUVQVUJLQUlBUWUwQVJ3MENEQU1MSUFGQkFXb2hBUXdBQ3dBTFFRQWhBUXNnQVFzSkFDQUFFTHdURUI4TENRQWdBQkRCRXhBZkN6UUFBMEFnQVNBQ1JrVUVRQ0FFSUFNZ0FTd0FBQ0lBSUFCQkFFZ2JPZ0FBSUFSQkFXb2hCQ0FCUVFGcUlRRU1BUXNMSUFJTERBQWdBaUFCSUFGQkFFZ2JDeW9BQTBBZ0FTQUNSa1VFUUNBRElBRXRBQUE2QUFBZ0EwRUJhaUVESUFGQkFXb2hBUXdCQ3dzZ0Fnc1BBQ0FBSUFFZ0FrR2dtdzRROHhJTEpBQWdBVUVBVGdSL0lBRkIvd0Z4UVFKMFFhQ2JEbW9vQWdBRklBRUxRUmgwUVJoMUN3OEFJQUFnQVNBQ1FhQ25EaER6RWdza0FDQUJRUUJPQkg4Z0FVSC9BWEZCQW5SQm9LY09haWdDQUFVZ0FRdEJHSFJCR0hVTENRQWdBQkRzREJBZkN6VUFBMEFnQVNBQ1JrVUVRQ0FFSUFFb0FnQWlBQ0FESUFCQmdBRkpHem9BQUNBRVFRRnFJUVFnQVVFRWFpRUJEQUVMQ3lBQ0N4TUFJQUVnQWlBQlFZQUJTUnRCR0hSQkdIVUxLZ0FEUUNBQklBSkdSUVJBSUFNZ0FTd0FBRFlDQUNBRFFRUnFJUU1nQVVFQmFpRUJEQUVMQ3lBQ0N3OEFJQUFnQVNBQ1FhQ2JEaEQwRWdzYkFDQUJRZjhBVFFSL0lBRkJBblJCb0pzT2FpZ0NBQVVnQVFzTER3QWdBQ0FCSUFKQm9LY09FUFFTQ3hzQUlBRkIvd0JOQkg4Z0FVRUNkRUdncHc1cUtBSUFCU0FCQ3d0QkFBSkFBMEFnQWlBRFJnMEJBa0FnQWlnQ0FDSUFRZjhBU3cwQUlBQkJBblJCZ0pZUGFpZ0NBQ0FCY1VVTkFDQUNRUVJxSVFJTUFRc0xJQUloQXdzZ0F3dEFBQU5BQWtBZ0FpQURSd1IvSUFJb0FnQWlBRUgvQUVzTkFTQUFRUUowUVlDV0Qyb29BZ0FnQVhGRkRRRWdBZ1VnQXdzUEN5QUNRUVJxSVFJTUFBc0FDMGtCQVg4RFFDQUJJQUpHUlFSQVFRQWhBQ0FESUFFb0FnQWlCRUgvQUUwRWZ5QUVRUUowUVlDV0Qyb29BZ0FGUVFBTE5nSUFJQU5CQkdvaEF5QUJRUVJxSVFFTUFRc0xJQUlMSlFCQkFDRUFJQUpCL3dCTkJIOGdBa0VDZEVHQWxnOXFLQUlBSUFGeFFRQkhCVUVBQ3dzM0FDTUFRUkJySWdBa0FDQUFJQVEyQWd3Z0FDQURJQUpyTmdJSUlBQkJER29nQUVFSWFoQ0lCU2dDQUNFQklBQkJFR29rQUNBQkN3c0FJQUJCNXVNREVCUWFDd3NBSUFCQmdNd0RFQlFhQ3dzQUlBQkJqS0FQRVAwR0N3c0FJQUJCK0o4UEVQMEdDeHNBUVpqQUlDRUFBMEFnQUVFTWF4QVBJZ0JCOEw0Z1J3MEFDd3NiQUVId3d5QWhBQU5BSUFCQkRHc1FEeUlBUWREQklFY05BQXNMR3dCQnlNWWdJUUFEUUNBQVFReHJFQThpQUVHd3hpQkhEUUFMQ3drQVFZeStJQkFQR2dzbEFFR1l2aUF0QUFCRkJFQkJqTDRnUVlUakJSQVVHa0dZdmlCQkFUb0FBQXRCakw0Z0N3a0FRZXk5SUJBUEdnc2tBRUg0dlNBdEFBQkZCRUJCN0wwZ1FhOGVFQlFhUWZpOUlFRUJPZ0FBQzBIc3ZTQUwxZ2dCQzM4akFFSEFBV3NpQlNRQUlBTW9BZ0FvQWdBaUF5Z0NCQ0VKSUFNb0FnQWlDeUFMS0FJQUtBSUlFUUFBSWdjb0FnUWhDQ0FKSUFrb0FnQW9BZ2dSQUFBaEF5QUhRUUFnQ0VId3FoSkdHeUlNS0FJWUlRb2dBeWdDQkNFSElBVkNnSUNBZ01BQU53SlVJQU5CQUNBSFFmQ3FFa1liSVEwZ0JTQUZRVUJyTmdKUUlBVkJnQUZxUVFSeUlRZ2dCVUV3YWlFT0lBVkIwQUJxSVE5QkFDRUhBa0FDUUFOQUlBY2dEU2dDSkU4TkFTQUZRb0NBZ0lEQUFEY0NOQ0FGSUFWQklHbzJBakJCQUNFREFrQURRQ0FNS0FJZ0lBTkxCRUFnQlNBTE5nSzhBU0FGSUFrMkFyZ0JJQVZCQURvQUhDQUZJQVZCdkFGcU5nS3dBU0FGSUFWQnVBRnFOZ0tvQVFKQUFrQUNRQUpBSUF3b0FpUkJBbXNPQXdBQkFnTUxJQVVnQVRZQ2dBRWdDQ0FFS0FJUU5nSVFJQWdnQkNrQ0NEY0NDQ0FJSUFRcEFnQTNBZ0FnQlNBS05nS1lBU0FGSUFWQnNBRnFJZ1lnQTBFQUVJMEJOZ0o4SUFVZ0JpQURRUUVRalFFMkFuZ2dCU0FGUWFnQmFpSUdRUUFnQnhDTkFUWUNkQ0FGSUFaQkFTQUhFSTBCTmdKd0lBVkJvQUZxSUFWQmdBRnFJQVZCL0FCcUlBVkIrQUJxSUFWQjlBQnFJQVZCOEFCcUVQRU1JQVVnQlNrRG9BRTNBeGdNQWdzZ0JTQUJOZ0tBQVNBSUlBUW9BaEEyQWhBZ0NDQUVLUUlJTndJSUlBZ2dCQ2tDQURjQ0FDQUZJQW8yQXBnQklBVWdCVUd3QVdvaUJpQURRUUFRalFFMkFud2dCU0FHSUFOQkFSQ05BVFlDZUNBRklBWWdBMEVDRUkwQk5nSjBJQVVnQlVHb0FXb2lCa0VBSUFjUWpRRTJBbkFnQlNBR1FRRWdCeENOQVRZQ2JDQUZJQVpCQWlBSEVJMEJOZ0pvSUFWQm9BRnFJQVZCZ0FGcUlBVkIvQUJxSUFWQitBQnFJQVZCOUFCcUlBVkI4QUJxSUFWQjdBQnFJQVZCNkFCcUVQQU1JQVVnQlNrRG9BRTNBeGdNQVFzZ0JTQUJOZ0tBQVNBSUlBUW9BaEEyQWhBZ0NDQUVLUUlJTndJSUlBZ2dCQ2tDQURjQ0FDQUZJQW8yQXBnQklBVWdCVUd3QVdvaUJpQURRUUFRalFFMkFud2dCU0FHSUFOQkFSQ05BVFlDZUNBRklBWWdBMEVDRUkwQk5nSjBJQVVnQmlBRFFRTVFqUUUyQW5BZ0JTQUZRYWdCYWlJR1FRQWdCeENOQVRZQ2JDQUZJQVpCQVNBSEVJMEJOZ0pvSUFVZ0JrRUNJQWNRalFFMkFtUWdCU0FHUVFNZ0J4Q05BVFlDWUNBRlFhQUJhaUFGUVlBQmFpQUZRZndBYWlBRlFmZ0FhaUFGUWZRQWFpQUZRZkFBYWlBRlFld0FhaUFGUWVnQWFpQUZRZVFBYWlBRlFlQUFhaER0RENBRklBVXBBNkFCTndNWUN5QUZRUmhxRURBTkFpQUZRU0JxSUFWQkdHb1FHaEJ4SUFOQkFXb2hBd3dCQ3dzZ0FrRUFJQUlvQWdSQjhLb1NSaHNvQWh3aEF5QUJLQUlBSVFZZ0JVRUFPZ0FVSUFVZ0RqWUNFQ0FGSUFZZ0F5QUZRUkJxRURvMkFvQUJJQWRCQVdvaEJ5QUZRVUJySUFWQmdBRnFFSEVnQlVFZ2FoQmVEQUVMQ3lBQVFRSTZBQVFnQlVFZ2FoQmVEQUVMSUFFb0FnQWhBU0FGUVFBNkFBd2dCU0FQTmdJSUlBRWdBaUFGUVFocUVEb2hBU0FBUVFFNkFBUWdBQ0FCTmdJQUN5QUZRVUJyRUY0Z0JVSEFBV29rQUFzSkFFSE12aUFRRHhvTEpRQkIyTDRnTFFBQVJRUkFRY3krSUVHNXZ3SVFGQnBCMkw0Z1FRRTZBQUFMUWN5K0lBc0pBRUdzdmlBUUR4b0xKUUJCdUw0Z0xRQUFSUVJBUWF5K0lFSHN2UVVRRkJwQnVMNGdRUUU2QUFBTFFheStJQXR0QUVIZ3ZTQXRBQUFFUUVIY3ZTQW9BZ0FQQzBISXhpQXRBQUJGQkVCQnNNWWdJUUFEUUNBQUVIUkJER29pQUVISXhpQkhEUUFMUWNqR0lFRUJPZ0FBQzBHd3hpQkIxb1VHRUhWQnZNWWdRZE9GQmhCMVFlQzlJRUVCT2dBQVFkeTlJRUd3eGlBMkFnQkJzTVlnQzhJQ0FFSFF2U0F0QUFBRVFFSE12U0FvQWdBUEMwSHd3eUF0QUFCRkJFQkIwTUVnSVFBRFFDQUFFSFJCREdvaUFFSHd3eUJIRFFBTFFmRERJRUVCT2dBQUMwSFF3U0JCcWhNUWRVSGN3U0JCb1JNUWRVSG93U0JCK0tVREVIVkI5TUVnUVlIL0FoQjFRWURDSUVHckhoQjFRWXpDSUVIMnJRUVFkVUdZd2lCQjloTVFkVUdrd2lCQnhDMFFkVUd3d2lCQnlmc0JFSFZCdk1JZ1FlNzZBUkIxUWNqQ0lFSEErd0VRZFVIVXdpQkIzdjBCRUhWQjRNSWdRY3IwQWhCMVFlekNJRUdadWdVUWRVSDR3aUJCbkpBQ0VIVkJoTU1nUWZISUFSQjFRWkRESUVHckhoQjFRWnpESUVIcHdnSVFkVUdvd3lCQnNQb0NFSFZCdE1NZ1FhMjNBeEIxUWNERElFSFB0UUlRZFVITXd5QkIzdmNBRUhWQjJNTWdRZllwRUhWQjVNTWdRYUdLQlJCMVFkQzlJRUVCT2dBQVFjeTlJRUhRd1NBMkFnQkIwTUVnQzkwQkFFSEF2U0F0QUFBRVFFRzh2U0FvQWdBUEMwR1l3Q0F0QUFCRkJFQkI4TDRnSVFBRFFDQUFFSFJCREdvaUFFR1l3Q0JIRFFBTFFaakFJRUVCT2dBQUMwSHd2aUJCbGg0UWRVSDh2aUJCblI0UWRVR0l2eUJCK3gwUWRVR1V2eUJCZ3g0UWRVR2d2eUJCOGgwUWRVR3N2eUJCcEI0UWRVRzR2eUJCalI0UWRVSEV2eUJCNWNJQ0VIVkIwTDhnUVl2dkFoQjFRZHkvSUVISzFnTVFkVUhvdnlCQmtmMEVFSFZCOUw4Z1FlY3FFSFZCZ01BZ1FjZWdBeEIxUVl6QUlFSEgrd0FRZFVIQXZTQkJBVG9BQUVHOHZTQkI4TDRnTmdJQVFmQytJQXNjQUVISXdTQWhBQU5BSUFCQkRHc1Fod0VpQUVHZ3dDQkhEUUFMQ3h3QVFhREdJQ0VBQTBBZ0FFRU1heENIQVNJQVFZREVJRWNOQUFzTDV3Z0JDWDhqQUVHQUFXc2lCU1FBSUFNb0FnQW9BZ0FvQWdBaUJpQUdLQUlBS0FJSUVRQUFFTElDSVFjZ0F5Z0NBQ2dDQUNnQ0JDSUdJQVlvQWdBb0FnZ1JBQUFoQmlBSEtBSVlJUXNnQmlnQ0JDRUhJQVZDZ0lDQWdNQUFOd0lzSUFaQkFDQUhRZkNxRWtZYklRd2dCU0FGUVJocU5nSW9JQVZCMkFCcVFRUnlJUW9nQlVFb2FpRU5Ba0FDUUFOQUlBZ2dEQ2dDSkU4TkFTQURLQUlBS0FJQUlnY29BZ1FoQmlBSEtBSUFJUWNnQlVFQU9nQVVBa0FDUUFKQUFrQWdEQ2dDSUVFQ2F3NERBQUVDQXdzZ0JTQUJOZ0pZSUFvZ0JDZ0NFRFlDRUNBS0lBUXBBZ2czQWdnZ0NpQUVLUUlBTndJQUlBVWdDellDY0NBRklBWWdDQ0FHS0FJQUtBSU1FUUVBSWdsQkFDQUpLQUlBS0FJTUVRRUFOZ0pVSUFVZ0JpQUlJQVlvQWdBb0Fnd1JBUUFpQmtFQklBWW9BZ0FvQWd3UkFRQTJBbEFnQlNBSFFRQWdCeWdDQUNnQ0RCRUJBRFlDVENBRklBZEJBU0FIS0FJQUtBSU1FUUVBTmdKSUlBVkIrQUJxSUFWQjJBQnFJQVZCMUFCcUlBVkIwQUJxSUFWQnpBQnFJQVZCeUFCcUVQRU1JQVVnQlNrRGVEY0RFQXdDQ3lBRklBRTJBbGdnQ2lBRUtBSVFOZ0lRSUFvZ0JDa0NDRGNDQ0NBS0lBUXBBZ0EzQWdBZ0JTQUxOZ0p3SUFVZ0JpQUlJQVlvQWdBb0Fnd1JBUUFpQ1VFQUlBa29BZ0FvQWd3UkFRQTJBbFFnQlNBR0lBZ2dCaWdDQUNnQ0RCRUJBQ0lKUVFFZ0NTZ0NBQ2dDREJFQkFEWUNVQ0FGSUFZZ0NDQUdLQUlBS0FJTUVRRUFJZ1pCQWlBR0tBSUFLQUlNRVFFQU5nSk1JQVVnQjBFQUlBY29BZ0FvQWd3UkFRQTJBa2dnQlNBSFFRRWdCeWdDQUNnQ0RCRUJBRFlDUkNBRklBZEJBaUFIS0FJQUtBSU1FUUVBTmdKQUlBVkIrQUJxSUFWQjJBQnFJQVZCMUFCcUlBVkIwQUJxSUFWQnpBQnFJQVZCeUFCcUlBVkJ4QUJxSUFWQlFHc1E4QXdnQlNBRktRTjROd01RREFFTElBVWdBVFlDV0NBS0lBUW9BaEEyQWhBZ0NpQUVLUUlJTndJSUlBb2dCQ2tDQURjQ0FDQUZJQXMyQW5BZ0JTQUdJQWdnQmlnQ0FDZ0NEQkVCQUNJSlFRQWdDU2dDQUNnQ0RCRUJBRFlDVkNBRklBWWdDQ0FHS0FJQUtBSU1FUUVBSWdsQkFTQUpLQUlBS0FJTUVRRUFOZ0pRSUFVZ0JpQUlJQVlvQWdBb0Fnd1JBUUFpQ1VFQ0lBa29BZ0FvQWd3UkFRQTJBa3dnQlNBR0lBZ2dCaWdDQUNnQ0RCRUJBQ0lHUVFNZ0JpZ0NBQ2dDREJFQkFEWUNTQ0FGSUFkQkFDQUhLQUlBS0FJTUVRRUFOZ0pFSUFVZ0IwRUJJQWNvQWdBb0Fnd1JBUUEyQWtBZ0JTQUhRUUlnQnlnQ0FDZ0NEQkVCQURZQ1BDQUZJQWRCQXlBSEtBSUFLQUlNRVFFQU5nSTRJQVZCK0FCcUlBVkIyQUJxSUFWQjFBQnFJQVZCMEFCcUlBVkJ6QUJxSUFWQnlBQnFJQVZCeEFCcUlBVkJRR3NnQlVFOGFpQUZRVGhxRU8wTUlBVWdCU2tEZURjREVBc2dCVUVRYWhBd1JRUkFJQVZCR0dvZ0JVRVFhaEFhRUhFZ0NFRUJhaUVJREFFTEN5QUFRUUk2QUFRTUFRc2dBU2dDQUNFQklBVkJBRG9BRENBRklBMDJBZ2dnQVNBQ0lBVkJDR29RT2lFQklBQkJBVG9BQkNBQUlBRTJBZ0FMSUFWQkdHb1FYaUFGUVlBQmFpUUFDeHdBUWVqR0lDRUFBMEFnQUVFTWF4Q0hBU0lBUWRER0lFY05BQXNMQ2dCQm5MNGdFSWNCR2dzbEFFR292aUF0QUFCRkJFQkJuTDRnUVppaER4RDlCa0dvdmlCQkFUb0FBQXRCbkw0Z0N3b0FRZnk5SUJDSEFSb0xKUUJCaUw0Z0xRQUFSUVJBUWZ5OUlFSDBvQThRL1FaQmlMNGdRUUU2QUFBTFFmeTlJQXNLQUVIY3ZpQVFod0VhQ3lVQVFlaStJQzBBQUVVRVFFSGN2aUJCa0tJUEVQMEdRZWkrSUVFQk9nQUFDMEhjdmlBTENnQkJ2TDRnRUljQkdnc2xBRUhJdmlBdEFBQkZCRUJCdkw0Z1FieWhEeEQ5QmtISXZpQkJBVG9BQUF0QnZMNGdDM0FBUWVpOUlDMEFBQVJBUWVTOUlDZ0NBQThMUWVqR0lDMEFBRVVFUUVIUXhpQWhBQU5BSUFBUTh3RkJER29pQUVIb3hpQkhEUUFMUWVqR0lFRUJPZ0FBQzBIUXhpQkJ4TnNQRUtJQlFkekdJRUhRMnc4UW9nRkI2TDBnUVFFNkFBQkI1TDBnUWRER0lEWUNBRUhReGlBTDRnSUFRZGk5SUMwQUFBUkFRZFM5SUNnQ0FBOExRYURHSUMwQUFFVUVRRUdBeENBaEFBTkFJQUFROHdGQkRHb2lBRUdneGlCSERRQUxRYURHSUVFQk9nQUFDMEdBeENCQnZOY1BFS0lCUVl6RUlFSGMxdzhRb2dGQm1NUWdRWURZRHhDaUFVR2t4Q0JCbU5nUEVLSUJRYkRFSUVHdzJBOFFvZ0ZCdk1RZ1FjRFlEeENpQVVISXhDQkIxTmdQRUtJQlFkVEVJRUhvMkE4UW9nRkI0TVFnUVlUWkR4Q2lBVUhzeENCQnJOa1BFS0lCUWZqRUlFSE0yUThRb2dGQmhNVWdRZkRaRHhDaUFVR1F4U0JCbE5vUEVLSUJRWnpGSUVHazJnOFFvZ0ZCcU1VZ1FiVGFEeENpQVVHMHhTQkJ4Tm9QRUtJQlFjREZJRUd3MkE4UW9nRkJ6TVVnUWRUYUR4Q2lBVUhZeFNCQjVOb1BFS0lCUWVURklFSDAyZzhRb2dGQjhNVWdRWVRiRHhDaUFVSDh4U0JCbE5zUEVLSUJRWWpHSUVHazJ3OFFvZ0ZCbE1ZZ1FiVGJEeENpQVVIWXZTQkJBVG9BQUVIVXZTQkJnTVFnTmdJQVFZREVJQXYwQVFCQnlMMGdMUUFBQkVCQnhMMGdLQUlBRHd0QnlNRWdMUUFBUlFSQVFhREFJQ0VBQTBBZ0FCRHpBVUVNYWlJQVFjakJJRWNOQUF0QnlNRWdRUUU2QUFBTFFhREFJRUhvMUE4UW9nRkJyTUFnUVlUVkR4Q2lBVUc0d0NCQm9OVVBFS0lCUWNUQUlFSEExUThRb2dGQjBNQWdRZWpWRHhDaUFVSGN3Q0JCak5ZUEVLSUJRZWpBSUVHbzFnOFFvZ0ZCOU1BZ1FjeldEeENpQVVHQXdTQkIzTllQRUtJQlFZekJJRUhzMWc4UW9nRkJtTUVnUWZ6V0R4Q2lBVUdrd1NCQmpOY1BFS0lCUWJEQklFR2MxdzhRb2dGQnZNRWdRYXpYRHhDaUFVSEl2U0JCQVRvQUFFSEV2U0JCb01BZ05nSUFRYURBSUF2bENBRUpmeU1BUVlBQmF5SUZKQUFnQXlnQ0FDZ0NBQ2dDQUNJSElBY29BZ0FvQWdnUkFBQWlCeWdDQkNFR0lBTW9BZ0FvQWdBb0FnUWlDQ0FJS0FJQUtBSUlFUUFBRUxJQ0tBSVlJUXNnQlVLQWdJQ0F3QUEzQWl3Z0IwRUFJQVpCOEtvU1Joc2hEQ0FGSUFWQkdHbzJBaWdnQlVIWUFHcEJCSEloQ2lBRlFTaHFJUTFCQUNFSUFrQUNRQU5BSUFnZ0RDZ0NJRThOQVNBREtBSUFLQUlBSWdZb0FnUWhCeUFHS0FJQUlRWWdCVUVBT2dBVUFrQUNRQUpBQWtBZ0RDZ0NKRUVDYXc0REFBRUNBd3NnQlNBQk5nSllJQW9nQkNnQ0VEWUNFQ0FLSUFRcEFnZzNBZ2dnQ2lBRUtRSUFOd0lBSUFVZ0N6WUNjQ0FGSUFaQkFDQUdLQUlBS0FJTUVRRUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSlVJQVVnQmtFQklBWW9BZ0FvQWd3UkFRQWlCaUFJSUFZb0FnQW9BZ3dSQVFBMkFsQWdCU0FIUVFBZ0J5Z0NBQ2dDREJFQkFEWUNUQ0FGSUFkQkFTQUhLQUlBS0FJTUVRRUFOZ0pJSUFWQitBQnFJQVZCMkFCcUlBVkIxQUJxSUFWQjBBQnFJQVZCekFCcUlBVkJ5QUJxRVBFTUlBVWdCU2tEZURjREVBd0NDeUFGSUFFMkFsZ2dDaUFFS0FJUU5nSVFJQW9nQkNrQ0NEY0NDQ0FLSUFRcEFnQTNBZ0FnQlNBTE5nSndJQVVnQmtFQUlBWW9BZ0FvQWd3UkFRQWlDU0FJSUFrb0FnQW9BZ3dSQVFBMkFsUWdCU0FHUVFFZ0JpZ0NBQ2dDREJFQkFDSUpJQWdnQ1NnQ0FDZ0NEQkVCQURZQ1VDQUZJQVpCQWlBR0tBSUFLQUlNRVFFQUlnWWdDQ0FHS0FJQUtBSU1FUUVBTmdKTUlBVWdCMEVBSUFjb0FnQW9BZ3dSQVFBMkFrZ2dCU0FIUVFFZ0J5Z0NBQ2dDREJFQkFEWUNSQ0FGSUFkQkFpQUhLQUlBS0FJTUVRRUFOZ0pBSUFWQitBQnFJQVZCMkFCcUlBVkIxQUJxSUFWQjBBQnFJQVZCekFCcUlBVkJ5QUJxSUFWQnhBQnFJQVZCUUdzUThBd2dCU0FGS1FONE53TVFEQUVMSUFVZ0FUWUNXQ0FLSUFRb0FoQTJBaEFnQ2lBRUtRSUlOd0lJSUFvZ0JDa0NBRGNDQUNBRklBczJBbkFnQlNBR1FRQWdCaWdDQUNnQ0RCRUJBQ0lKSUFnZ0NTZ0NBQ2dDREJFQkFEWUNWQ0FGSUFaQkFTQUdLQUlBS0FJTUVRRUFJZ2tnQ0NBSktBSUFLQUlNRVFFQU5nSlFJQVVnQmtFQ0lBWW9BZ0FvQWd3UkFRQWlDU0FJSUFrb0FnQW9BZ3dSQVFBMkFrd2dCU0FHUVFNZ0JpZ0NBQ2dDREJFQkFDSUdJQWdnQmlnQ0FDZ0NEQkVCQURZQ1NDQUZJQWRCQUNBSEtBSUFLQUlNRVFFQU5nSkVJQVVnQjBFQklBY29BZ0FvQWd3UkFRQTJBa0FnQlNBSFFRSWdCeWdDQUNnQ0RCRUJBRFlDUENBRklBZEJBeUFIS0FJQUtBSU1FUUVBTmdJNElBVkIrQUJxSUFWQjJBQnFJQVZCMUFCcUlBVkIwQUJxSUFWQnpBQnFJQVZCeUFCcUlBVkJ4QUJxSUFWQlFHc2dCVUU4YWlBRlFUaHFFTzBNSUFVZ0JTa0RlRGNERUFzZ0JVRVFhaEF3UlFSQUlBVkJHR29nQlVFUWFoQWFFSEVnQ0VFQmFpRUlEQUVMQ3lBQVFRSTZBQVFNQVFzZ0FTZ0NBQ0VCSUFWQkFEb0FEQ0FGSUEwMkFnZ2dBU0FDSUFWQkNHb1FPaUVCSUFCQkFUb0FCQ0FBSUFFMkFnQUxJQVZCR0dvUVhpQUZRWUFCYWlRQUN4VUFJQUFvQWdnaUFFVUVRRUVCRHdzZ0FCRHFFd3VJQVFFR2Z3TkFBa0FnQWlBRFJpQUVJQWROY2cwQVFRRWhCaUFBS0FJSUlRVWpBRUVRYXlJSUpBQWdDRUVJYWlBRkVMY0RJUXBCQUNBQ0lBTWdBbXNnQVVHa3V5QWdBUnNRandvaEJTQUtFTFlESUFoQkVHb2tBQUpBQWtBZ0JVRUNhZzREQWdJQkFBc2dCU0VHQ3lBSFFRRnFJUWNnQmlBSmFpRUpJQUlnQm1vaEFnd0JDd3NnQ1FzZkFDQUFJQUVnQkNBQ0lBTW9BZ0FvQWdBaUFDZ0NBQ0FBS0FJRUVKa0tDeUFBSUFBb0FnZ1FqQVlnQUNnQ0NDSUFSUVJBUVFFUEN5QUFFT29UUVFGR0M1SUJBUUYvSXdCQkVHc2lCU1FBSUFRZ0FqWUNBQUovUVFJZ0JVRU1ha0VBSUFBb0FnZ1E5QXdpQUVFQmFrRUNTUTBBR2tFQklBQkJBV3NpQWlBRElBUW9BZ0JyU3cwQUdpQUZRUXhxSVFFRGZ5QUNCSDhnQVMwQUFDRUFJQVFnQkNnQ0FDSURRUUZxTmdJQUlBTWdBRG9BQUNBQ1FRRnJJUUlnQVVFQmFpRUJEQUVGUVFBTEN3c2hBU0FGUVJCcUpBQWdBUXZIQmdFTmZ5TUFRUkJySWhFa0FDQUNJUWtEUUFKQUlBTWdDVVlFUUNBRElRa01BUXNnQ1MwQUFFVU5BQ0FKUVFGcUlRa01BUXNMSUFjZ0JUWUNBQ0FFSUFJMkFnQURRQUpBQW44Q1FDQUNJQU5HSUFVZ0JrWnlEUUFnRVNBQktRSUFOd01JSUFBb0FnZ2hDQ01BUVJCckloSWtBQ0FTUVFocUlBZ1F0d01oRXlBSklBSnJJUXhCQUNFS1FRQWhEU01BUVpBSWF5SU9KQUFnRGlBRUtBSUFJZ2cyQWd3Z0JTQU9RUkJxSUFVYklROENRQUpBSUFoRklBWWdCV3RCQW5WQmdBSWdCUnNpQzBWeVJRUkFBMEFDUUNBTVFRSjJJaEFnQzBrZ0RFR0RBVTF4RFFNZ0R5QU9RUXhxSUJBZ0N5QUxJQkJMR3lBQkVMTVVJaEJCZjBZRVFFRi9JUXBCQUNFTElBNG9BZ3doQ0F3QkN5QUxJQkJCQUNBUElBNUJFR3BIR3lJVWF5RUxJQThnRkVFQ2RHb2hEeUFJSUF4cUlBNG9BZ3dpQ0d0QkFDQUlHeUVNSUFvZ0VHb2hDaUFJUlEwQUlBc05BUXNMQ3lBSVJRMEJDeUFMUlNBTVJYSkZCRUFnQ0NFTklBb2hDQU5BQWtBQ1FDQVBJQTBnRENBQkVJOEtJZ3BCQW1wQkFrMEVRQUpBQWtBZ0NrRUJhZzRDQndBQkMwRUFJUTBNQWdzZ0FVRUFOZ0lBREFFTElBaEJBV29oQ0NBS0lBMXFJUTBnQzBFQmF5SUxEUUVMSUFnaENnd0RDeUFQUVFScUlROGdEQ0FLYXlFTUlBZ2hDaUFNRFFBTERBRUxJQWdoRFFzZ0JRUkFJQVFnRFRZQ0FBc2dEa0dRQ0dva0FDQUtJUWdnRXhDMkF5QVNRUkJxSkFBQ1FBSkFBa0FDUUNBSVFYOUdCRUFEUUFKQUlBY2dCVFlDQUNBQ0lBUW9BZ0JHRFFCQkFTRUdBa0FDUUFKQUlBVWdBaUFKSUFKcklCRkJDR29nQUNnQ0NCRHpEQ0lCUVFKcURnTUlBQUlCQ3lBRUlBSTJBZ0FNQlFzZ0FTRUdDeUFDSUFacUlRSWdCeWdDQUVFRWFpRUZEQUVMQ3lBRUlBSTJBZ0FNQlFzZ0J5QUhLQUlBSUFoQkFuUnFJZ1UyQWdBZ0JTQUdSZzBESUFRb0FnQWhBaUFESUFsR0JFQWdBeUVKREFnTElBVWdBa0VCSUFFZ0FDZ0NDQkR6REVVTkFRdEJBZ3dFQ3lBSElBY29BZ0JCQkdvMkFnQWdCQ0FFS0FJQVFRRnFJZ0kyQWdBZ0FpRUpBMEFnQXlBSlJnUkFJQU1oQ1F3R0N5QUpMUUFBUlEwRklBbEJBV29oQ1F3QUN3QUxJQVFnQWpZQ0FFRUJEQUlMSUFRb0FnQWhBZ3NnQWlBRFJ3c2hBQ0FSUVJCcUpBQWdBQThMSUFjb0FnQWhCUXdBQ3dBTG9RVUJDMzhqQUVFUWF5SU5KQUFnQWlFQkEwQUNRQ0FCSUFOR0JFQWdBeUVCREFFTElBRW9BZ0JGRFFBZ0FVRUVhaUVCREFFTEN5QUhJQVUyQWdBZ0JDQUNOZ0lBQTBBQ1FBSkFJQUlnQTBZZ0JTQUdSbklFZnlBQ0JVRUJJUTRnQUNnQ0NDRUlJd0JCRUdzaUVDUUFJQkJCQ0dvZ0NCQzNBeUVTSUFZZ0JTSUlheUVKUVFBaERDTUFRUkJySWc4a0FBSkFJQVFvQWdBaUNrVWdBU0FDYTBFQ2RTSVJSWElOQUNBSlFRQWdDQnNoQ1FOQUlBOUJER29nQ0NBSlFRUkpHeUFLS0FJQUVLTU5JZ3RCZjBZRVFFRi9JUXdNQWdzZ0NBUi9JQWxCQTAwRVFDQUpJQXRKRFFNZ0NDQVBRUXhxSUFzUWZSb0xJQWtnQzJzaENTQUlJQXRxQlVFQUN5RUlJQW9vQWdCRkJFQkJBQ0VLREFJTElBc2dER29oRENBS1FRUnFJUW9nRVVFQmF5SVJEUUFMQ3lBSUJFQWdCQ0FLTmdJQUN5QVBRUkJxSkFBZ0RDRUlJQklRdGdNZ0VFRVFhaVFBQWtBQ1FBSkFBa0FDUUNBSVFRRnFEZ0lBQmdFTElBY2dCVFlDQUFOQUFrQWdBaUFFS0FJQVJnMEFJQVVnQWlnQ0FDQUFLQUlJRVBRTUlnRkJmMFlOQUNBSElBY29BZ0FnQVdvaUJUWUNBQ0FDUVFScUlRSU1BUXNMSUFRZ0FqWUNBQXdCQ3lBSElBY29BZ0FnQ0dvaUJUWUNBQ0FGSUFaR0RRSWdBU0FEUmdSQUlBUW9BZ0FoQWlBRElRRU1Cd3NnRFVFTWFrRUFJQUFvQWdnUTlBd2lBVUYvUncwQkMwRUNJUTRNQXdzZ0RVRU1haUVDSUFZZ0J5Z0NBR3NnQVVrTkFnTkFJQUVFUUNBQ0xRQUFJUVVnQnlBSEtBSUFJZ2hCQVdvMkFnQWdDQ0FGT2dBQUlBRkJBV3NoQVNBQ1FRRnFJUUlNQVFzTElBUWdCQ2dDQUVFRWFpSUNOZ0lBSUFJaEFRTkFJQUVnQTBZRVFDQURJUUVNQlFzZ0FTZ0NBRVVOQkNBQlFRUnFJUUVNQUFzQUN5QUVLQUlBQ3lBRFJ5RU9DeUFOUVJCcUpBQWdEZzhMSUFjb0FnQWhCUXdBQ3dBTER3QWdBQ0FBS0FJQUtBSUVFUU1BQ3djQUlBQVE5UXdMQ2dBZ0FDQUZFSUFIR2dzSkFDQUFJQVVRVkJvTHdnTUJDSDhqQUVId0Eyc2lBQ1FBSUFCQjZBTnFJZ1lnQXhCK0lBWVE4QUloRENBRktBSUVJQVV0QUFzUW1BRUVRQ0FGUVFBUTlRRW9BZ0FnREVFdEVJa0RSaUVKQ3lBQ0lBa2dBRUhvQTJvZ0FFSGdBMm9nQUVIY0Eyb2dBRUhZQTJvZ0FFSElBMm9RZENJTklBQkJ1QU5xRVBNQklnSWdBRUdvQTJvUTh3RWlCaUFBUWFRRGFoRHZFeUFBUWRzWE5nSVFJQUJCQ0dwQkFDQUFRUkJxRVBRQklRb0NmeUFGS0FJRUlBVXRBQXNRbUFFaUJ5QUFLQUtrQXlJTFNnUkFJQVlvQWdRZ0JpMEFDeENZQVNBSElBdHJRUUYwYWlBQ0tBSUVJQUl0QUFzUW1BRnFRUUZxREFFTElBWW9BZ1FnQmkwQUN4Q1lBU0FDS0FJRUlBSXRBQXNRbUFGcVFRSnFDeUVJSUFCQkVHb2hCd0pBSUFnZ0Myb2lDRUhsQUVrTkFDQUtJQWhCQW5RUTRBRVFoZ0lnQ2lnQ0FDSUhEUUFRYndBTElBY2dBRUVFYWlBQUlBTVF1QUVnQlJDUEFpSUlJQWdnQlNnQ0JDQUZMUUFMRUpnQlFRSjBhaUFNSUFrZ0FFSGdBMm9nQUNnQzNBTWdBQ2dDMkFNZ0RTQUNJQVlnQ3hEdUV5QUJJQWNnQUNnQ0JDQUFLQUlBSUFNZ0JCQ1BCaUVCSUFvUTJBRWdCaENIQVJvZ0FoQ0hBUm9nRFJBUEdpQUFRZWdEYWhCa0lBQkI4QU5xSkFBZ0FRdURCUUVNZnlNQVFiQUlheUlBSkFBZ0FDQUZOd01RSUFBZ0JqY0RHQ0FBSUFCQndBZHFJZ2syQXJ3SElBbEI1QUJCeE1NRElBQkJFR29RbkFvaENDQUFRZHNYTmdLZ0JFRUFJUWtnQUVHWUJHcEJBQ0FBUWFBRWFpSUhFUFFCSVE4Z0FFSGJGellDb0FRZ0FFR1FCR3BCQUNBSEVQUUJJUXdDUUFKQUlBaEI1QUJKQkVBZ0FFR2dCR29oQ3lBQVFjQUhhaUVIREFFTEVNQUJJUWdnQUNBRk53TUFJQUFnQmpjRENDQUFRYndIYWlBSVFjVERBeUFBRUxzRUlnaEJmMFlOQVNBUElBQW9BcndISWdjUWhnSWdEQ0FJUVFKMEVPQUJFSVlDSUF3b0FnQWlDeEQwRXcwQkN5QUFRWWdFYWlJS0lBTVFmaUFLRVBBQ0loRWdCeUFISUFocUlBc1ErZ1FnQ0VFQVNnUkFJQWN0QUFCQkxVWWhDUXNnQWlBSklBQkJpQVJxSUFCQmdBUnFJQUJCL0FOcUlBQkIrQU5xSUFCQjZBTnFFSFFpRUNBQVFkZ0RhaER6QVNJQ0lBQkJ5QU5xRVBNQklnY2dBRUhFQTJvUTd4TWdBRUhiRnpZQ01DQUFRU2hxUVFBZ0FFRXdhaEQwQVNFS0lBQkJNR29oRFFKL0lBQW9Bc1FESWc0Z0NFZ0VRQ0FIS0FJRUlBY3RBQXNRbUFFZ0NDQU9hMEVCZEdvZ0FpZ0NCQ0FDTFFBTEVKZ0Jha0VCYWd3QkN5QUhLQUlFSUFjdEFBc1FtQUVnQWlnQ0JDQUNMUUFMRUpnQmFrRUNhZ3NnRG1vaUVrSGxBRThFUUNBS0lCSkJBblFRNEFFUWhnSWdDaWdDQUNJTlJRMEJDeUFOSUFCQkpHb2dBRUVnYWlBREVMZ0JJQXNnQ3lBSVFRSjBhaUFSSUFrZ0FFR0FCR29nQUNnQy9BTWdBQ2dDK0FNZ0VDQUNJQWNnRGhEdUV5QUJJQTBnQUNnQ0pDQUFLQUlnSUFNZ0JCQ1BCaUVCSUFvUTJBRWdCeENIQVJvZ0FoQ0hBUm9nRUJBUEdpQUFRWWdFYWhCa0lBd1EyQUVnRHhEWUFTQUFRYkFJYWlRQUlBRVBDeEJ2QUF1REF3RUlmeU1BUWNBQmF5SUFKQUFnQUVHNEFXb2lCaUFERUg0Z0JoRERBaUVNUVFBaEJpQUZFRHNFUUNBRlFRQVE1Z0V0QUFBZ0RFRXRFSTREUWY4QmNVWWhCZ3NnQWlBR0lBQkJ1QUZxSUFCQnNBRnFJQUJCcndGcUlBQkJyZ0ZxSUFCQm9BRnFFSFFpRFNBQVFaQUJhaEIwSWdJZ0FFR0FBV29RZENJSUlBQkIvQUJxRVBNVElBQkIyeGMyQWhBZ0FFRUlha0VBSUFCQkVHb1E5QUVoQ1FKL0lBVVFPeUFBS0FKOElncEtCRUFnQlJBN0lRY2dDQkE3SUFjZ0NtdEJBWFJxSUFJUU8ycEJBV29NQVFzZ0NCQTdJQUlRTzJwQkFtb0xJUXNnQUVFUWFpRUhBa0FnQ2lBTGFpSUxRZVVBU1EwQUlBa2dDeERnQVJDR0FpQUpLQUlBSWdjTkFCQnZBQXNnQnlBQVFRUnFJQUFnQXhDNEFTQUZFSHNnQlJCN0lBVVFPMm9nRENBR0lBQkJzQUZxSUFBc0FLOEJJQUFzQUs0QklBMGdBaUFJSUFvUThoTWdBU0FISUFBb0FnUWdBQ2dDQUNBRElBUVEvd1VoQVNBSkVOZ0JJQWdRRHhvZ0FoQVBHaUFORUE4YUlBQkJ1QUZxRUdRZ0FFSEFBV29rQUNBQkM5SUVBUXgvSXdCQjBBTnJJZ0FrQUNBQUlBVTNBeEFnQUNBR053TVlJQUFnQUVIZ0Ftb2lDVFlDM0FJZ0NVSGtBRUhFd3dNZ0FFRVFhaENjQ2lFSUlBQkIyeGMyQXZBQlFRQWhDU0FBUWVnQmFrRUFJQUJCOEFGcUlnY1E5QUVoRHlBQVFkc1hOZ0x3QVNBQVFlQUJha0VBSUFjUTlBRWhEQUpBQWtBZ0NFSGtBRWtFUUNBQVFmQUJhaUVMSUFCQjRBSnFJUWNNQVFzUXdBRWhDQ0FBSUFVM0F3QWdBQ0FHTndNSUlBQkIzQUpxSUFoQnhNTURJQUFRdXdRaUNFRi9SZzBCSUE4Z0FDZ0MzQUlpQnhDR0FpQU1JQWdRNEFFUWhnSWdEQ2dDQUNJTEVQUVREUUVMSUFCQjJBRnFJZ29nQXhCK0lBb1F3d0lpRVNBSElBY2dDR29nQ3hDL0JTQUlRUUJLQkVBZ0J5MEFBRUV0UmlFSkN5QUNJQWtnQUVIWUFXb2dBRUhRQVdvZ0FFSFBBV29nQUVIT0FXb2dBRUhBQVdvUWRDSVFJQUJCc0FGcUVIUWlBaUFBUWFBQmFoQjBJZ2NnQUVHY0FXb1E4eE1nQUVIYkZ6WUNNQ0FBUVNocVFRQWdBRUV3YWhEMEFTRUtJQUJCTUdvaERRSi9JQUFvQXB3QklnNGdDRWdFUUNBSEVEc2dDQ0FPYTBFQmRHb2dBaEE3YWtFQmFnd0JDeUFIRURzZ0FoQTdha0VDYWdzZ0Rtb2lFa0hsQUU4RVFDQUtJQklRNEFFUWhnSWdDaWdDQUNJTlJRMEJDeUFOSUFCQkpHb2dBRUVnYWlBREVMZ0JJQXNnQ0NBTGFpQVJJQWtnQUVIUUFXb2dBQ3dBendFZ0FDd0F6Z0VnRUNBQ0lBY2dEaER5RXlBQklBMGdBQ2dDSkNBQUtBSWdJQU1nQkJEL0JTRUJJQW9RMkFFZ0J4QVBHaUFDRUE4YUlCQVFEeG9nQUVIWUFXb1FaQ0FNRU5nQklBOFEyQUVnQUVIUUEyb2tBQ0FCRHdzUWJ3QUw4Z1FCQTM4akFFSEFBMnNpQUNRQUlBQWdBallDc0FNZ0FDQUJOZ0s0QXlBQVFkMFhOZ0lVSUFCQkdHb2dBRUVnYWlBQVFSUnFJZ2dROUFFaENTQUFRUkJxSWdjZ0JCQitJQWNROEFJaEFTQUFRUUE2QUE4Z0FFRzRBMm9nQWlBRElBY2dCQkM0QVNBRklBQkJEMm9nQVNBSklBZ2dBRUd3QTJvUStSTUVRQUpBSUFZdEFBc1Erd1FFUUNBR0tBSUFRUUFRbVFJZ0JrRUFFSWNFREFFTElBWkJBQkNaQWlBR1FRQVF3QVVMSUFBdEFBOEVRQ0FHSUFGQkxSQ0pBeEN6QVFzZ0FVRXdFSWtESVFFZ0FDZ0NGQ0lEUVFScklRUWdDU2dDQUNFQ0EwQUNRQ0FDSUFSUERRQWdBaWdDQUNBQlJ3MEFJQUpCQkdvaEFnd0JDd3NqQUVFUWF5SUlKQUFnQmlnQ0JDQUdMUUFMRUpnQklRRWdCaER6Q1NFRUFrQWdBaUFERUowSUlnZEZEUUFnQmlBQ0VQVVRSUVJBSUFjZ0JDQUJhMHNFUUNBR0lBUWdBU0FIYWlBRWF5QUJJQUZCQUJEM0RBc2dCaENQQWlBQlFRSjBhaUVFQTBBZ0FpQURSd1JBSUFRZ0FpZ0NBQkNaQWlBQ1FRUnFJUUlnQkVFRWFpRUVEQUVMQ3lBRVFRQVFtUUlnQmlBQklBZHFFUElKREFFTElBZ2dBaUFERUl3SElnTVFqd0loQkNBREtBSUVJQU10QUFzUW1BRWhBUUpBSUFFZ0JoRHpDU0lISUFZb0FnUWdCaTBBQ3hDWUFTSUNhMDBFUUNBQlJRMEJJQVlRandJaUJ5QUNRUUowYWlBRUlBRVF3Z1FnQmlBQklBSnFJZ0VROGdrZ0J5QUJRUUowYWtFQUVKa0NEQUVMSUFZZ0J5QUJJQUpxSUFkcklBSWdBa0VBSUFFZ0JCQ2FFd3NnQXhDSEFSb0xJQWhCRUdva0FBc2dBRUc0QTJvZ0FFR3dBMm9Ra0FJRVFDQUZJQVVvQWdCQkFuSTJBZ0FMSUFBb0FyZ0RJUUVnQUVFUWFoQmtJQWtRMkFFZ0FFSEFBMm9rQUNBQkMrQURBUUovSXdCQjhBUnJJZ0FrQUNBQUlBSTJBdUFFSUFBZ0FUWUM2QVFnQUVIZEZ6WUNFQ0FBUWNnQmFpQUFRZEFCYWlBQVFSQnFFUFFCSVFjZ0FFSEFBV29pQVNBRUVINGdBUkR3QWlFSUlBQkJBRG9BdndFQ1FDQUFRZWdFYWlBQ0lBTWdBU0FFRUxnQklBVWdBRUcvQVdvZ0NDQUhJQUJCeEFGcUlBQkI0QVJxRVBrVFJRMEFJQUJCaytzR0tBQUFOZ0MzQVNBQVFZenJCaWtBQURjRHNBRWdDQ0FBUWJBQmFpQUFRYm9CYWlBQVFZQUJhaEQ2QkNBQVFkc1hOZ0lRSUFCQkNHcEJBQ0FBUVJCcUlnUVE5QUVoQXdKQUlBQW9Bc1FCSWdFZ0J5Z0NBR3NpQWtHSkEwNEVRQ0FESUFKQkFuVkJBbW9RNEFFUWhnSWdBeWdDQUNJRVJRMEJDeUFBTFFDL0FRUkFJQVJCTFRvQUFDQUVRUUZxSVFRTElBY29BZ0FoQWdOQUlBRWdBazBFUUFKQUlBUkJBRG9BQUNBQUlBWTJBZ0FnQUVFUWFpQUFFTHdVUVFGSERRQWdBeERZQVF3RUN3VWdCQ0FBUWJBQmFpQUFRWUFCYWlJQklBRkJLR29nQWlnQ0FCQ0FEU0FCYTBFQ2RXb3RBQUE2QUFBZ0JFRUJhaUVFSUFKQkJHb2hBaUFBS0FMRUFTRUJEQUVMQ3hCdkFBc1Fid0FMSUFCQjZBUnFJQUJCNEFScUVKQUNCRUFnQlNBRktBSUFRUUp5TmdJQUN5QUFLQUxvQkNFQklBQkJ3QUZxRUdRZ0J4RFlBU0FBUWZBRWFpUUFJQUVMdndRQkEzOGpBRUdnQVdzaUFDUUFJQUFnQWpZQ2tBRWdBQ0FCTmdLWUFTQUFRZDBYTmdJVUlBQkJHR29nQUVFZ2FpQUFRUlJxSWdnUTlBRWhDU0FBUVJCcUlnRWdCQkIrSUFFUXd3SWhCeUFBUVFBNkFBOGdBRUdZQVdvZ0FpQURJQUVnQkJDNEFTQUZJQUJCRDJvZ0J5QUpJQWdnQUVHRUFXb1EveE1FUUNNQVFSQnJJZ0VrQUFKQUlBWVF1QVlFUUNBR0VOUUlJUUlnQVVFQU9nQVBJQUlnQVVFUGFoRFJBaUFHUVFBUTB3UU1BUXNnQmhDS0JTRUNJQUZCQURvQURpQUNJQUZCRG1vUTBRSWdCa0VBRUlzRkN5QUJRUkJxSkFBZ0FDMEFEd1JBSUFZZ0IwRXRFSTRERUtRQkN5QUhRVEFRamdNaEFTQUFLQUlVSWdkQkFXc2hBeUFKS0FJQUlRSWdBVUgvQVhFaEFRTkFBa0FnQWlBRFR3MEFJQUl0QUFBZ0FVY05BQ0FDUVFGcUlRSU1BUXNMSXdCQkVHc2lBeVFBSUFZUU95RUJJQVlRbXdFaEJBSkFJQUlnQnhEUUZDSUlSUTBBSUFZUWV5QUNUUVIvSUFZUWV5QUdFRHRxSUFKUEJVRUFDMFVFUUNBSUlBUWdBV3RMQkVBZ0JpQUVJQUVnQ0dvZ0JHc2dBU0FCUVFBUTlBa0xJQVlRd1FNZ0FXb2hCQU5BSUFJZ0IwY0VRQ0FFSUFJUTBRSWdBa0VCYWlFQ0lBUkJBV29oQkF3QkN3c2dBMEVBT2dBUElBUWdBMEVQYWhEUkFpQUdJQUVnQ0dvUW1BZ01BUXNnQmlBRElBSWdCeUFHRUpBTklnRVFleUFCRURzUS9nWWFJQUVRRHhvTElBTkJFR29rQUFzZ0FFR1lBV29nQUVHUUFXb1Fod0lFUUNBRklBVW9BZ0JCQW5JMkFnQUxJQUFvQXBnQklRRWdBRUVRYWhCa0lBa1EyQUVnQUVHZ0FXb2tBQ0FCQzlZREFRSi9Jd0JCb0FKcklnQWtBQ0FBSUFJMkFwQUNJQUFnQVRZQ21BSWdBRUhkRnpZQ0VDQUFRWmdCYWlBQVFhQUJhaUFBUVJCcUVQUUJJUWNnQUVHUUFXb2lBU0FFRUg0Z0FSRERBaUVJSUFCQkFEb0Fqd0VDUUNBQVFaZ0NhaUFDSUFNZ0FTQUVFTGdCSUFVZ0FFR1BBV29nQ0NBSElBQkJsQUZxSUFCQmhBSnFFUDhUUlEwQUlBQkJrK3NHS0FBQU5nQ0hBU0FBUVl6ckJpa0FBRGNEZ0FFZ0NDQUFRWUFCYWlBQVFZb0JhaUFBUWZZQWFoQy9CU0FBUWRzWE5nSVFJQUJCQ0dwQkFDQUFRUkJxSWdRUTlBRWhBd0pBSUFBb0FwUUJJZ0VnQnlnQ0FHc2lBa0hqQUU0RVFDQURJQUpCQW1vUTRBRVFoZ0lnQXlnQ0FDSUVSUTBCQ3lBQUxRQ1BBUVJBSUFSQkxUb0FBQ0FFUVFGcUlRUUxJQWNvQWdBaEFnTkFJQUVnQWswRVFBSkFJQVJCQURvQUFDQUFJQVkyQWdBZ0FFRVFhaUFBRUx3VVFRRkhEUUFnQXhEWUFRd0VDd1VnQkNBQVFmWUFhaUlCSUFGQkNtb2dBaTBBQUJDbkZDQUFheUFBYWkwQUNqb0FBQ0FFUVFGcUlRUWdBa0VCYWlFQ0lBQW9BcFFCSVFFTUFRc0xFRzhBQ3hCdkFBc2dBRUdZQW1vZ0FFR1FBbW9RaHdJRVFDQUZJQVVvQWdCQkFuSTJBZ0FMSUFBb0FwZ0NJUUVnQUVHUUFXb1FaQ0FIRU5nQklBQkJvQUpxSkFBZ0FRdEZBUUYvSXdCQkVHc2lCU1FBSUFVZ0JEWUNEQ0FGSUFFMkFnZ2dBQ0FCS0FJQUlBSWdCVUVJYWlBREtBSUFLQUlBSWdBb0FnQWdBQ2dDQkJDRUZDQUZRUkJxSkFBTDV3RUJBbjhqQUVHZ0Eyc2lBaVFBSUFJZ0FrR2dBMm9pQXpZQ0RDTUFRWkFCYXlJSEpBQWdCeUFIUVlRQmFqWUNIQ0FBS0FJSUlBZEJJR29pQ0NBSFFSeHFJQVFnQlNBR0VJNFVJQWRDQURjREVDQUhJQWcyQWd3Z0FrRVFhaUlFSUFkQkRHb2dCQ0FDS0FJTUVJSUVJQWRCRUdvZ0FDZ0NDQkNpQXlJQVFYOUdCRUFRYndBTElBSWdCQ0FBUVFKMGFqWUNEQ0FIUVpBQmFpUUFJQUlvQWd3aEFDTUFRUkJySWdJa0FDQUNJQUUyQWdnRFFDQUFJQVJIQkVBZ0FrRUlhaUFFS0FJQUVOTVVJQVJCQkdvaEJBd0JDd3NnQWlnQ0NDRUFJQUpCRUdva0FDQURKQUFnQUF1UUFRQWpBRUdBQVdzaUFpUUFJQUlnQWtIMEFHbzJBZ3dnQUNnQ0NDQUNRUkJxSWdBZ0FrRU1haUFFSUFVZ0JoQ09GQ0FDS0FJTUlRTWdBQkNEQVNFQUlBTVFnd0VoQkNNQVFSQnJJZ01rQUNBRElBRTJBZ2dEUUNBQUlBUkhCRUFnQTBFSWFpQUFMQUFBRUpjTkdpQUFRUUZxSVFBTUFRc0xJQU1vQWdnaEFDQURRUkJxSkFBZ0FrR0FBV29rQUNBQUM1NE5BUUYvSXdCQlFHb2lCeVFBSUFjZ0FUWUNPQ0FFUVFBMkFnQWdCeUFERUg0Z0J4RHdBaUVJSUFjUVpBSi9Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUdRY0VBYXc0NUFBRVhCQmNGRndZSEZ4Y1hDaGNYRnhjT0R4QVhGeGNURlJjWEZ4Y1hGeGNBQVFJREF4Y1hBUmNJRnhjSkN4Y01GdzBYQ3hjWEVSSVVGZ3NnQUNBRlFSaHFJQWRCT0dvZ0FpQUVJQWdRa2hRTUdBc2dBQ0FGUVJCcUlBZEJPR29nQWlBRUlBZ1FrQlFNRndzZ0J5QUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWd3UkFBQWlBQkNQQWlJQklBRWdBQ2dDQkNBQUxRQUxFSmdCUVFKMGFoRDRCRFlDT0F3V0N5QUhRVGhxSUFJZ0JDQUlRUUlRdVFRaEFBSkFJQVFvQWdBaUFVRUVjU0FBUVFGclFSNUxja1VFUUNBRklBQTJBZ3dNQVFzZ0JDQUJRUVJ5TmdJQUN3d1ZDeUFIUWRpVER5a0RBRGNER0NBSFFkQ1REeWtEQURjREVDQUhRY2lURHlrREFEY0RDQ0FIUWNDVER5a0RBRGNEQUNBSElBQWdBU0FDSUFNZ0JDQUZJQWNnQjBFZ2FoRDRCRFlDT0F3VUN5QUhRZmlURHlrREFEY0RHQ0FIUWZDVER5a0RBRGNERUNBSFFlaVREeWtEQURjRENDQUhRZUNURHlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVnYWhENEJEWUNPQXdUQ3lBSFFUaHFJQUlnQkNBSVFRSVF1UVFoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRUmRLY2tVRVFDQUZJQUEyQWdnTUFRc2dCQ0FCUVFSeU5nSUFDd3dTQ3lBSFFUaHFJQUlnQkNBSVFRSVF1UVFoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRUUZyUVF0TGNrVUVRQ0FGSUFBMkFnZ01BUXNnQkNBQlFRUnlOZ0lBQ3d3UkN5QUhRVGhxSUFJZ0JDQUlRUU1RdVFRaEFBSkFJQVFvQWdBaUFVRUVjU0FBUWUwQ1NuSkZCRUFnQlNBQU5nSWNEQUVMSUFRZ0FVRUVjallDQUFzTUVBc2dCMEU0YWlBQ0lBUWdDRUVDRUxrRUlRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFTVNuSkZCRUFnQlNBQVFRRnJOZ0lRREFFTElBUWdBVUVFY2pZQ0FBc01Ed3NnQjBFNGFpQUNJQVFnQ0VFQ0VMa0VJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRTdTbkpGQkVBZ0JTQUFOZ0lFREFFTElBUWdBVUVFY2pZQ0FBc01EZ3NnQjBFNGFpRUFJd0JCRUdzaUFTUUFJQUVnQWpZQ0NBTkFBa0FnQUNBQlFRaHFFTm9DUlEwQUlBaEJBU0FBS0FJQUVPMEJFTWtDUlEwQUlBQVFvUUlhREFFTEN5QUFJQUZCQ0dvUWtBSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBRkJFR29rQUF3TkN5QUhRVGhxSVFFQ1FDQUFRUWhxSUFBb0FnZ29BZ2dSQUFBaUFDZ0NCQ0FBTFFBTEVKZ0JRUUFnQUNnQ0VDQUFMUUFYRUpnQmEwWUVRQ0FFSUFRb0FnQkJCSEkyQWdBTUFRc2dBU0FDSUFBZ0FFRVlhaUFJSUFSQkFCRC9DU0lDSUFCSElBVW9BZ2dpQVVFTVIzSkZCRUFnQlVFQU5nSUlEQUVMSUFJZ0FHdEJERWNnQVVFTFNuSkZCRUFnQlNBQlFReHFOZ0lJQ3dzTURBc2dCMEdBbEE5QkxCQjlJZ1lnQUNBQklBSWdBeUFFSUFVZ0JpQUdRU3hxRVBnRU5nSTREQXNMSUFkQndKUVBLQUlBTmdJUUlBZEJ1SlFQS1FNQU53TUlJQWRCc0pRUEtRTUFOd01BSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVJScUVQZ0VOZ0k0REFvTElBZEJPR29nQWlBRUlBaEJBaEM1QkNFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCUEVweVJRUkFJQVVnQURZQ0FBd0JDeUFFSUFGQkJISTJBZ0FMREFrTElBZEI2SlFQS1FNQU53TVlJQWRCNEpRUEtRTUFOd01RSUFkQjJKUVBLUU1BTndNSUlBZEIwSlFQS1FNQU53TUFJQWNnQUNBQklBSWdBeUFFSUFVZ0J5QUhRU0JxRVBnRU5nSTREQWdMSUFkQk9Hb2dBaUFFSUFoQkFSQzVCQ0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkJCa3B5UlFSQUlBVWdBRFlDR0F3QkN5QUVJQUZCQkhJMkFnQUxEQWNMSUFBZ0FTQUNJQU1nQkNBRklBQW9BZ0FvQWhRUkN3QU1Cd3NnQnlBQUlBRWdBaUFESUFRZ0JTQUFRUWhxSUFBb0FnZ29BaGdSQUFBaUFCQ1BBaUlCSUFFZ0FDZ0NCQ0FBTFFBTEVKZ0JRUUowYWhENEJEWUNPQXdGQ3lBRlFSUnFJQWRCT0dvZ0FpQUVJQWdRanhRTUJBc2dCMEU0YWlBQ0lBUWdDRUVFRUxrRUlRQWdCQzBBQUVFRWNVVUVRQ0FGSUFCQjdBNXJOZ0lVQ3d3REN5QUdRU1ZHRFFFTElBUWdCQ2dDQUVFRWNqWUNBQXdCQ3lNQVFSQnJJZ0FrQUNBQUlBSTJBZ2hCQmlFQkFrQUNRQ0FIUVRocUlnSWdBRUVJYWhDUUFnMEFRUVFoQVNBSUlBSW9BZ0FRN1FFUTl3UkJKVWNOQUVFQ0lRRWdBaENoQWlBQVFRaHFFSkFDUlEwQkN5QUVJQVFvQWdBZ0FYSTJBZ0FMSUFCQkVHb2tBQXNnQnlnQ09Bc2hBQ0FIUVVCckpBQWdBQXRHQUNNQVFSQnJJZ0FrQUNBQUlBRTJBZ2dnQUNBREVINGdBQkR3QWlFQklBQVFaQ0FGUVJScUlBQkJDR29nQWlBRUlBRVFqeFFnQUNnQ0NDRUJJQUJCRUdva0FDQUJDMG9CQVg4akFFRVFheUlHSkFBZ0JpQUJOZ0lJSUFZZ0F4QitJQVlROEFJaEFTQUdFR1FnQUNBRlFSQnFJQVpCQ0dvZ0FpQUVJQUVRa0JRZ0JpZ0NDQ0VBSUFaQkVHb2tBQ0FBQzBvQkFYOGpBRUVRYXlJR0pBQWdCaUFCTmdJSUlBWWdBeEIrSUFZUThBSWhBU0FHRUdRZ0FDQUZRUmhxSUFaQkNHb2dBaUFFSUFFUWtoUWdCaWdDQ0NFQUlBWkJFR29rQUNBQUN6c0FJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0ZCRUFBQ0lBRUk4Q0lnRWdBU0FBS0FJRUlBQXRBQXNRbUFGQkFuUnFFUGdFQzEwQkFYOGpBRUVnYXlJR0pBQWdCa0hvbEE4cEF3QTNBeGdnQmtIZ2xBOHBBd0EzQXhBZ0JrSFlsQThwQXdBM0F3Z2dCa0hRbEE4cEF3QTNBd0FnQUNBQklBSWdBeUFFSUFVZ0JpQUdRU0JxSWdFUStBUWhBQ0FCSkFBZ0FBdXlEQUVDZnlNQVFTQnJJZ2NrQUNBSElBRTJBaGdnQkVFQU5nSUFJQWRCQ0dvaUNTQURFSDRnQ1JEREFpRUlJQWtRWkFKL0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBR1FjRUFhdzQ1QUFFWEJCY0ZGd1lIRnhjWENoY1hGeGNPRHhBWEZ4Y1RGUmNYRnhjWEZ4Y0FBUUlEQXhjWEFSY0lGeGNKQ3hjTUZ3MFhDeGNYRVJJVUZnc2dBQ0FGUVJocUlBZEJHR29nQWlBRUlBZ1FsUlFNR0FzZ0FDQUZRUkJxSUFkQkdHb2dBaUFFSUFnUWxCUU1Gd3NnQnlBQUlBRWdBaUFESUFRZ0JTQUFRUWhxSUFBb0FnZ29BZ3dSQUFBaUFCQjdJQUFRZXlBQUVEdHFFUGtFTmdJWURCWUxJQWRCR0dvZ0FpQUVJQWhCQWhDNkJDRUFBa0FnQkNnQ0FDSUJRUVJ4SUFCQkFXdEJIa3R5UlFSQUlBVWdBRFlDREF3QkN5QUVJQUZCQkhJMkFnQUxEQlVMSUFkQ3BkcTlxY0xzeTVMNUFEY0RDQ0FISUFBZ0FTQUNJQU1nQkNBRklBZEJDR29nQjBFUWFoRDVCRFlDR0F3VUN5QUhRcVd5dGFuU3JjdVM1QUEzQXdnZ0J5QUFJQUVnQWlBRElBUWdCU0FIUVFocUlBZEJFR29RK1FRMkFoZ01Fd3NnQjBFWWFpQUNJQVFnQ0VFQ0VMb0VJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRVhTbkpGQkVBZ0JTQUFOZ0lJREFFTElBUWdBVUVFY2pZQ0FBc01FZ3NnQjBFWWFpQUNJQVFnQ0VFQ0VMb0VJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRUJhMEVMUzNKRkJFQWdCU0FBTmdJSURBRUxJQVFnQVVFRWNqWUNBQXNNRVFzZ0IwRVlhaUFDSUFRZ0NFRURFTG9FSVFBQ1FDQUVLQUlBSWdGQkJIRWdBRUh0QWtweVJRUkFJQVVnQURZQ0hBd0JDeUFFSUFGQkJISTJBZ0FMREJBTElBZEJHR29nQWlBRUlBaEJBaEM2QkNFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCREVweVJRUkFJQVVnQUVFQmF6WUNFQXdCQ3lBRUlBRkJCSEkyQWdBTERBOExJQWRCR0dvZ0FpQUVJQWhCQWhDNkJDRUFBa0FnQkNnQ0FDSUJRUVJ4SUFCQk8wcHlSUVJBSUFVZ0FEWUNCQXdCQ3lBRUlBRkJCSEkyQWdBTERBNExJQWRCR0dvaEFDTUFRUkJySWdFa0FDQUJJQUkyQWdnRFFBSkFJQUFnQVVFSWFoREtBa1VOQUNBQUtBSUFFTzRCSVFJZ0NDZ0NDRUVCSUFJUXZRSkZEUUFnQUJDYkFob01BUXNMSUFBZ0FVRUlhaENIQWdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQVVFUWFpUUFEQTBMSUFkQkdHb2hBUUpBSUFCQkNHb2dBQ2dDQ0NnQ0NCRUFBQ0lBRUR0QkFDQUFRUXhxRUR0clJnUkFJQVFnQkNnQ0FFRUVjallDQUF3QkN5QUJJQUlnQUNBQVFSaHFJQWdnQkVFQUVJTUtJZ0lnQUVjZ0JTZ0NDQ0lCUVF4SGNrVUVRQ0FGUVFBMkFnZ01BUXNnQWlBQWEwRU1SeUFCUVF0S2NrVUVRQ0FGSUFGQkRHbzJBZ2dMQ3d3TUN5QUhRYWlURHlnQUFEWUFEeUFIUWFHVER5a0FBRGNEQ0NBSElBQWdBU0FDSUFNZ0JDQUZJQWRCQ0dvZ0IwRVRhaEQ1QkRZQ0dBd0xDeUFIUWJDVER5MEFBRG9BRENBSFFheVREeWdBQURZQ0NDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFkQkNHb2dCMEVOYWhENUJEWUNHQXdLQ3lBSFFSaHFJQUlnQkNBSVFRSVF1Z1FoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRVHhLY2tVRVFDQUZJQUEyQWdBTUFRc2dCQ0FCUVFSeU5nSUFDd3dKQ3lBSFFxV1E2YW5TeWM2UzB3QTNBd2dnQnlBQUlBRWdBaUFESUFRZ0JTQUhRUWhxSUFkQkVHb1ErUVEyQWhnTUNBc2dCMEVZYWlBQ0lBUWdDRUVCRUxvRUlRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFR1NuSkZCRUFnQlNBQU5nSVlEQUVMSUFRZ0FVRUVjallDQUFzTUJ3c2dBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVMQUF3SEN5QUhJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0dCRUFBQ0lBRUhzZ0FCQjdJQUFRTzJvUStRUTJBaGdNQlFzZ0JVRVVhaUFIUVJocUlBSWdCQ0FJRUpNVURBUUxJQWRCR0dvZ0FpQUVJQWhCQkJDNkJDRUFJQVF0QUFCQkJIRkZCRUFnQlNBQVFld09hellDRkFzTUF3c2dCa0VsUmcwQkN5QUVJQVFvQWdCQkJISTJBZ0FNQVFzakFFRVFheUlBSkFBZ0FDQUNOZ0lJUVFZaEFRSkFBa0FnQjBFWWFpSUNJQUJCQ0dvUWh3SU5BRUVFSVFFZ0NDQUNLQUlBRU80QkVMd0ZRU1ZIRFFCQkFpRUJJQUlRbXdJZ0FFRUlhaENIQWtVTkFRc2dCQ0FFS0FJQUlBRnlOZ0lBQ3lBQVFSQnFKQUFMSUFjb0FoZ0xJUUFnQjBFZ2FpUUFJQUFMMUFJQkJIOGpBRUhRQUdzaUJTUUFJQVVnQkRZQ0RDQUZJQUUyQWdnZ0FTZ0NBQ0VFSUFNb0FnQW9BZ0FoQXlBRlFRQTJBa3dDUUNBREtBSUFJZ0VnQVNnQ0FDZ0NDQkVBQUNJQklBVkJ6QUJxRUNJZ0FVWUVRQ0FBSUFWQkNHb2dBeWdDQUJDUkZBd0JDeUFGUW9DQWdJQ0FBVGNDUkNBRklBVkJJR29pQVRZQ1FDQUJJQVVvQWt3UU9TQUZRVUJySVFkQkFDRUJBa0FDUUFOQUlBRWdCU2dDVEU4TkFTQUNRUUFRSWlFSUlBVWdBeWdDQUNJR0lBRWdCaWdDQUNnQ0RCRUJBRFlDRkNBRlFSaHFJZ1lnQkNBSUlBVkJDR29nQVNBRlFSUnFFSTBVSUFZUUt3UkFJQVZCSUdvZ0JVRVlhaEFhRUNRZ0FVRUJhaUVCREFFTEN5QUZRUmhxRUQwYUlBQkJBam9BQkF3QkN5QUZJQWMyQWhnZ0JTQUZLQUpBSUFWQklHcEhPZ0FjSUFRZ0FpQUZRUmhxRURvaEFTQUFRUUU2QUFRZ0FDQUJOZ0lBQ3lBRlFTQnFFQ01MSUFWQjBBQnFKQUFMUmdBakFFRVFheUlBSkFBZ0FDQUJOZ0lJSUFBZ0F4QitJQUFRd3dJaEFTQUFFR1FnQlVFVWFpQUFRUWhxSUFJZ0JDQUJFSk1VSUFBb0FnZ2hBU0FBUVJCcUpBQWdBUXRLQVFGL0l3QkJFR3NpQmlRQUlBWWdBVFlDQ0NBR0lBTVFmaUFHRU1NQ0lRRWdCaEJrSUFBZ0JVRVFhaUFHUVFocUlBSWdCQ0FCRUpRVUlBWW9BZ2doQUNBR1FSQnFKQUFnQUF0S0FRRi9Jd0JCRUdzaUJpUUFJQVlnQVRZQ0NDQUdJQU1RZmlBR0VNTUNJUUVnQmhCa0lBQWdCVUVZYWlBR1FRaHFJQUlnQkNBQkVKVVVJQVlvQWdnaEFDQUdRUkJxSkFBZ0FBc3VBQ0FBSUFFZ0FpQURJQVFnQlNBQVFRaHFJQUFvQWdnb0FoUVJBQUFpQUJCN0lBQVFleUFBRUR0cUVQa0VDMEFCQVg4akFFRVFheUlHSkFBZ0JrS2xrT21wMHNuT2t0TUFOd01JSUFBZ0FTQUNJQU1nQkNBRklBWkJDR29nQmtFUWFpSUJFUGtFSVFBZ0FTUUFJQUFMbUFFQkJYOGpBRUhRQVdzaUFDUUFFTUFCSVFZZ0FDQUVOZ0lBSUFCQnNBRnFJZ2NnQnlBSFFSUWdCa0hDdndJZ0FCQ2pBeUlJYWlJRUlBSVF2QVFoQmlBQVFSQnFJZ1VnQWhCK0lBVVE4QUloQ1NBRkVHUWdDU0FISUFRZ0JSRDZCQ0FCSUFVZ0NFRUNkQ0FGYWlJQklBWWdBR3RCQW5RZ0FHcEJzQVZySUFRZ0JrWWJJQUVnQWlBREVJOEdJUUVnQUVIUUFXb2tBQ0FCQzR3RUFRZC9BbjhnQVNFS0l3QkJzQU5ySWdZa0FDQUdRaVUzQTZnRElBWkJxQU5xUVFGeVFhalRCaUFDRUxnQkVQa0pJUWdnQmlBR1FZQURhallDL0FJUXdBRWhBQUovSUFnRVFDQUNLQUlJSVFFZ0JrRkFheUFGTndNQUlBWWdCRGNET0NBR0lBRTJBakFnQmtHQUEycEJIaUFBSUFaQnFBTnFJQVpCTUdvUW93TU1BUXNnQmlBRU53TlFJQVlnQlRjRFdDQUdRWUFEYWtFZUlBQWdCa0dvQTJvZ0JrSFFBR29Rb3dNTElRY2dCa0hiRnpZQ2dBRWdCa0h3QW1wQkFDQUdRWUFCYWhEMEFTRUpJQVpCZ0FOcUlnRWhBQUpBSUFkQkhrNEVRQkRBQVNFQUFuOGdDQVJBSUFJb0FnZ2hCeUFHSUFVM0F4QWdCaUFFTndNSUlBWWdCellDQUNBR1Fmd0NhaUFBSUFaQnFBTnFJQVlRdXdRTUFRc2dCaUFFTndNZ0lBWWdCVGNES0NBR1Fmd0NhaUFBSUFaQnFBTnFJQVpCSUdvUXV3UUxJZ2RCZjBZTkFTQUpJQVlvQXZ3Q0lnQVFoZ0lMSUFBZ0FDQUhhaUlMSUFJUXZBUWhEQ0FHUWRzWE5nS0FBU0FHUWZnQWFrRUFJQVpCZ0FGcUVQUUJJUWdDUUNBR1FZQURhaUFBUmdSQUlBWkJnQUZxSVFjTUFRc2dCMEVEZEJEZ0FTSUhSUTBCSUFnZ0J4Q0dBaUFBSVFFTElBWkI2QUJxSWdBZ0FoQitJQUVnRENBTElBY2dCa0gwQUdvZ0JrSHdBR29nQUJDWEZDQUFFR1FnQ2lBSElBWW9BblFnQmlnQ2NDQUNJQU1RandZaEFDQUlFTmdCSUFrUTJBRWdCa0d3QTJva0FDQUFEQUVMRUc4QUN3dm9Bd0VIZndKL0lBRWhDU01BUVlBRGF5SUZKQUFnQlVJbE53UDRBaUFGUWZnQ2FrRUJja0hjK0F3Z0FoQzRBUkQ1Q1NFSElBVWdCVUhRQW1vMkFzd0NFTUFCSVFBQ2Z5QUhCRUFnQWlnQ0NDRUJJQVVnQkRrREtDQUZJQUUyQWlBZ0JVSFFBbXBCSGlBQUlBVkIrQUpxSUFWQklHb1Fvd01NQVFzZ0JTQUVPUU13SUFWQjBBSnFRUjRnQUNBRlFmZ0NhaUFGUVRCcUVLTURDeUVHSUFWQjJ4YzJBbEFnQlVIQUFtcEJBQ0FGUWRBQWFoRDBBU0VJSUFWQjBBSnFJZ0VoQUFKQUlBWkJIazRFUUJEQUFTRUFBbjhnQndSQUlBSW9BZ2doQmlBRklBUTVBd2dnQlNBR05nSUFJQVZCekFKcUlBQWdCVUg0QW1vZ0JSQzdCQXdCQ3lBRklBUTVBeEFnQlVITUFtb2dBQ0FGUWZnQ2FpQUZRUkJxRUxzRUN5SUdRWDlHRFFFZ0NDQUZLQUxNQWlJQUVJWUNDeUFBSUFBZ0Jtb2lDaUFDRUx3RUlRc2dCVUhiRnpZQ1VDQUZRY2dBYWtFQUlBVkIwQUJxRVBRQklRY0NRQ0FGUWRBQ2FpQUFSZ1JBSUFWQjBBQnFJUVlNQVFzZ0JrRURkQkRnQVNJR1JRMEJJQWNnQmhDR0FpQUFJUUVMSUFWQk9Hb2lBQ0FDRUg0Z0FTQUxJQW9nQmlBRlFjUUFhaUFGUVVCcklBQVFseFFnQUJCa0lBa2dCaUFGS0FKRUlBVW9Ba0FnQWlBREVJOEdJUUFnQnhEWUFTQUlFTmdCSUFWQmdBTnFKQUFnQUF3QkN4QnZBQXNMRVFBZ0FDQUJJQUlnQXlBRVFRQVE5UklMRVFBZ0FDQUJJQUlnQXlBRVFRQVE5aElMRVFBZ0FDQUJJQUlnQXlBRVFRRVE5UklMRVFBZ0FDQUJJQUlnQXlBRVFRRVE5aElMeUFFQkFYOGpBRUVnYXlJRkpBQWdCU0FCTmdJWUFrQWdBaEM0QVVFQmNVVUVRQ0FBSUFFZ0FpQURJQVFnQUNnQ0FDZ0NHQkVKQUNFQ0RBRUxJQVZCQ0dvaUFTQUNFSDRnQVJDRkJ5RUFJQUVRWkFKQUlBUUVRQ0FGUVFocUlBQVEzQU1NQVFzZ0JVRUlhaUFBRU5zREN5QUZJQVZCQ0dvUWtBWTJBZ0FEUUNBRlFRaHFFTDBGSVFBZ0JTZ0NBQ0lCSUFBUXZRUUVRQ0FGUVJocUlBRW9BZ0FRMHhRZ0JSQ0JCeG9NQVFVZ0JTZ0NHQ0VDSUFWQkNHb1Fod0VhQ3dzTElBVkJJR29rQUNBQ0M1QUJBUVYvSXdCQjRBQnJJZ0FrQUJEQUFTRUdJQUFnQkRZQ0FDQUFRVUJySWdjZ0J5QUhRUlFnQmtIQ3Z3SWdBQkNqQXlJSWFpSUVJQUlRdkFRaEJpQUFRUkJxSWdVZ0FoQitJQVVRd3dJaENTQUZFR1FnQ1NBSElBUWdCUkMvQlNBQklBVWdCU0FJYWlJQklBWWdBR3NnQUdwQk1Hc2dCQ0FHUmhzZ0FTQUNJQU1RL3dVaEFTQUFRZUFBYWlRQUlBRUxqQVFCQjM4Q2Z5QUJJUW9qQUVHQUFtc2lCaVFBSUFaQ0pUY0QrQUVnQmtINEFXcEJBWEpCcU5NR0lBSVF1QUVRK1FraENDQUdJQVpCMEFGcU5nTE1BUkRBQVNFQUFuOGdDQVJBSUFJb0FnZ2hBU0FHUVVCcklBVTNBd0FnQmlBRU53TTRJQVlnQVRZQ01DQUdRZEFCYWtFZUlBQWdCa0g0QVdvZ0JrRXdhaENqQXd3QkN5QUdJQVEzQTFBZ0JpQUZOd05ZSUFaQjBBRnFRUjRnQUNBR1FmZ0JhaUFHUWRBQWFoQ2pBd3NoQnlBR1Fkc1hOZ0tBQVNBR1FjQUJha0VBSUFaQmdBRnFFUFFCSVFrZ0JrSFFBV29pQVNFQUFrQWdCMEVlVGdSQUVNQUJJUUFDZnlBSUJFQWdBaWdDQ0NFSElBWWdCVGNERUNBR0lBUTNBd2dnQmlBSE5nSUFJQVpCekFGcUlBQWdCa0g0QVdvZ0JoQzdCQXdCQ3lBR0lBUTNBeUFnQmlBRk53TW9JQVpCekFGcUlBQWdCa0g0QVdvZ0JrRWdhaEM3QkFzaUIwRi9SZzBCSUFrZ0JpZ0N6QUVpQUJDR0Fnc2dBQ0FBSUFkcUlnc2dBaEM4QkNFTUlBWkIyeGMyQW9BQklBWkIrQUJxUVFBZ0JrR0FBV29ROUFFaENBSkFJQVpCMEFGcUlBQkdCRUFnQmtHQUFXb2hCd3dCQ3lBSFFRRjBFT0FCSWdkRkRRRWdDQ0FIRUlZQ0lBQWhBUXNnQmtIb0FHb2lBQ0FDRUg0Z0FTQU1JQXNnQnlBR1FmUUFhaUFHUWZBQWFpQUFFSm9VSUFBUVpDQUtJQWNnQmlnQ2RDQUdLQUp3SUFJZ0F4RC9CU0VBSUFnUTJBRWdDUkRZQVNBR1FZQUNhaVFBSUFBTUFRc1Fid0FMQytnREFRZC9BbjhnQVNFSkl3QkIwQUZySWdVa0FDQUZRaVUzQThnQklBVkJ5QUZxUVFGeVFkejREQ0FDRUxnQkVQa0pJUWNnQlNBRlFhQUJhallDbkFFUXdBRWhBQUovSUFjRVFDQUNLQUlJSVFFZ0JTQUVPUU1vSUFVZ0FUWUNJQ0FGUWFBQmFrRWVJQUFnQlVISUFXb2dCVUVnYWhDakF3d0JDeUFGSUFRNUF6QWdCVUdnQVdwQkhpQUFJQVZCeUFGcUlBVkJNR29Rb3dNTElRWWdCVUhiRnpZQ1VDQUZRWkFCYWtFQUlBVkIwQUJxRVBRQklRZ2dCVUdnQVdvaUFTRUFBa0FnQmtFZVRnUkFFTUFCSVFBQ2Z5QUhCRUFnQWlnQ0NDRUdJQVVnQkRrRENDQUZJQVkyQWdBZ0JVR2NBV29nQUNBRlFjZ0JhaUFGRUxzRURBRUxJQVVnQkRrREVDQUZRWndCYWlBQUlBVkJ5QUZxSUFWQkVHb1F1d1FMSWdaQmYwWU5BU0FJSUFVb0Fwd0JJZ0FRaGdJTElBQWdBQ0FHYWlJS0lBSVF2QVFoQ3lBRlFkc1hOZ0pRSUFWQnlBQnFRUUFnQlVIUUFHb1E5QUVoQndKQUlBVkJvQUZxSUFCR0JFQWdCVUhRQUdvaEJnd0JDeUFHUVFGMEVPQUJJZ1pGRFFFZ0J5QUdFSVlDSUFBaEFRc2dCVUU0YWlJQUlBSVFmaUFCSUFzZ0NpQUdJQVZCeEFCcUlBVkJRR3NnQUJDYUZDQUFFR1FnQ1NBR0lBVW9Ba1FnQlNnQ1FDQUNJQU1RL3dVaEFDQUhFTmdCSUFnUTJBRWdCVUhRQVdva0FDQUFEQUVMRUc4QUN3c1JBQ0FBSUFFZ0FpQURJQVJCQUJEM0Vnc1JBQ0FBSUFFZ0FpQURJQVJCQUJENEVnc1JBQ0FBSUFFZ0FpQURJQVJCQVJEM0Vnc1JBQ0FBSUFFZ0FpQURJQVJCQVJENEVndklBUUVCZnlNQVFTQnJJZ1VrQUNBRklBRTJBaGdDUUNBQ0VMZ0JRUUZ4UlFSQUlBQWdBU0FDSUFNZ0JDQUFLQUlBS0FJWUVRa0FJUUlNQVFzZ0JVRUlhaUlCSUFJUWZpQUJFSWtISVFBZ0FSQmtBa0FnQkFSQUlBVkJDR29nQUJEY0F3d0JDeUFGUVFocUlBQVEyd01MSUFVZ0JVRUlhaENTQmpZQ0FBTkFJQVZCQ0dvUXZnVWhBQ0FGS0FJQUlnRWdBQkM5QkFSQUlBVkJHR29nQVN3QUFCQ1hEUm9nQlJDQ0J4b01BUVVnQlNnQ0dDRUNJQVZCQ0dvUUR4b0xDd3NnQlVFZ2FpUUFJQUlML1FJQkFYOGpBRUhnQW1zaUFDUUFJQUFnQWpZQzBBSWdBQ0FCTmdMWUFpQUFRZEFCYWhCMElRWWdBRUVRYWlJQ0lBTVFmaUFDRVBBQ1FZQ1REMEdha3c4Z0FFSGdBV29RK2dRZ0FoQmtJQUJCd0FGcUVIUWlBeUFERUpzQkVIWWdBQ0FEUVFBUWlRRWlBVFlDdkFFZ0FDQUNOZ0lNSUFCQkFEWUNDQU5BQWtBZ0FFSFlBbW9nQUVIUUFtb1EyZ0pGRFFBZ0FDZ0N2QUVnQXhBN0lBRnFSZ1JBSUFNUU95RUNJQU1nQXhBN1FRRjBFSFlnQXlBREVKc0JFSFlnQUNBQ0lBTkJBQkNKQVNJQmFqWUN2QUVMSUFBb0F0Z0NFTzBCUVJBZ0FTQUFRYndCYWlBQVFRaHFRUUFnQmlBQVFSQnFJQUJCREdvZ0FFSGdBV29RZ3djTkFDQUFRZGdDYWhDaEFob01BUXNMSUFNZ0FDZ0N2QUVnQVdzUWRpQURFSHNoQWhEQUFTRUJJQUFnQlRZQ0FDQUNJQUVnQUJDakZFRUJSd1JBSUFSQkJEWUNBQXNnQUVIWUFtb2dBRUhRQW1vUWtBSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdGdDSVFFZ0F4QVBHaUFHRUE4YUlBQkI0QUpxSkFBZ0FRdmtBd0lDZndGK0l3QkJnQU5ySWdBa0FDQUFJQUkyQXZBQ0lBQWdBVFlDK0FJZ0FFSFlBV29nQXlBQVFmQUJhaUFBUWV3QmFpQUFRZWdCYWhEL0RDQUFRY2dCYWhCMElnRWdBUkNiQVJCMklBQWdBVUVBRUlrQklnTTJBc1FCSUFBZ0FFRWdhallDSENBQVFRQTJBaGdnQUVFQk9nQVhJQUJCeFFBNkFCWWdBQ2dDNkFFaEFpQUFLQUxzQVNFR0EwQUNRQ0FBUWZnQ2FpQUFRZkFDYWhEYUFrVU5BQ0FBS0FMRUFTQUJFRHNnQTJwR0JFQWdBUkE3SVFjZ0FTQUJFRHRCQVhRUWRpQUJJQUVRbXdFUWRpQUFJQWNnQVVFQUVJa0JJZ05xTmdMRUFRc2dBQ2dDK0FJUTdRRWdBRUVYYWlBQVFSWnFJQU1nQUVIRUFXb2dCaUFDSUFCQjJBRnFJQUJCSUdvZ0FFRWNhaUFBUVJocUlBQkI4QUZxRVA0TURRQWdBRUg0QW1vUW9RSWFEQUVMQ3lBQVFkZ0JhaEE3SVFZZ0FDZ0NIQ0VDQWtBZ0JrVU5BQ0FBTFFBWFJTQUNJQUJCSUdwclFaOEJTbklOQUNBQ0lBQW9BaGcyQWdBZ0FrRUVhaUVDQ3lBQUlBTWdBQ2dDeEFFZ0JCQ2tGQ0FBS1FNQUlRZ2dCU0FBS1FNSU53TUlJQVVnQ0RjREFDQUFRZGdCYWlBQVFTQnFJQUlnQkJESUFpQUFRZmdDYWlBQVFmQUNhaENRQWdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQytBSWhBaUFCRUE4YUlBQkIyQUZxRUE4YUlBQkJnQU5xSkFBZ0Fndk5Bd0VDZnlNQVFmQUNheUlBSkFBZ0FDQUNOZ0xnQWlBQUlBRTJBdWdDSUFCQnlBRnFJQU1nQUVIZ0FXb2dBRUhjQVdvZ0FFSFlBV29RL3d3Z0FFRzRBV29RZENJQklBRVFtd0VRZGlBQUlBRkJBQkNKQVNJRE5nSzBBU0FBSUFCQkVHbzJBZ3dnQUVFQU5nSUlJQUJCQVRvQUJ5QUFRY1VBT2dBR0lBQW9BdGdCSVFJZ0FDZ0MzQUVoQmdOQUFrQWdBRUhvQW1vZ0FFSGdBbW9RMmdKRkRRQWdBQ2dDdEFFZ0FSQTdJQU5xUmdSQUlBRVFPeUVISUFFZ0FSQTdRUUYwRUhZZ0FTQUJFSnNCRUhZZ0FDQUhJQUZCQUJDSkFTSURhallDdEFFTElBQW9BdWdDRU8wQklBQkJCMm9nQUVFR2FpQURJQUJCdEFGcUlBWWdBaUFBUWNnQmFpQUFRUkJxSUFCQkRHb2dBRUVJYWlBQVFlQUJhaEQrREEwQUlBQkI2QUpxRUtFQ0dnd0JDd3NnQUVISUFXb1FPeUVHSUFBb0Fnd2hBZ0pBSUFaRkRRQWdBQzBBQjBVZ0FpQUFRUkJxYTBHZkFVcHlEUUFnQWlBQUtBSUlOZ0lBSUFKQkJHb2hBZ3NnQlNBRElBQW9BclFCSUFRUXBoUTVBd0FnQUVISUFXb2dBRUVRYWlBQ0lBUVF5QUlnQUVIb0Ftb2dBRUhnQW1vUWtBSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdWdDSVFJZ0FSQVBHaUFBUWNnQmFoQVBHaUFBUWZBQ2FpUUFJQUlMelFNQkFuOGpBRUh3QW1zaUFDUUFJQUFnQWpZQzRBSWdBQ0FCTmdMb0FpQUFRY2dCYWlBRElBQkI0QUZxSUFCQjNBRnFJQUJCMkFGcUVQOE1JQUJCdUFGcUVIUWlBU0FCRUpzQkVIWWdBQ0FCUVFBUWlRRWlBellDdEFFZ0FDQUFRUkJxTmdJTUlBQkJBRFlDQ0NBQVFRRTZBQWNnQUVIRkFEb0FCaUFBS0FMWUFTRUNJQUFvQXR3QklRWURRQUpBSUFCQjZBSnFJQUJCNEFKcUVOb0NSUTBBSUFBb0FyUUJJQUVRT3lBRGFrWUVRQ0FCRURzaEJ5QUJJQUVRTzBFQmRCQjJJQUVnQVJDYkFSQjJJQUFnQnlBQlFRQVFpUUVpQTJvMkFyUUJDeUFBS0FMb0FoRHRBU0FBUVFkcUlBQkJCbW9nQXlBQVFiUUJhaUFHSUFJZ0FFSElBV29nQUVFUWFpQUFRUXhxSUFCQkNHb2dBRUhnQVdvUS9nd05BQ0FBUWVnQ2FoQ2hBaG9NQVFzTElBQkJ5QUZxRURzaEJpQUFLQUlNSVFJQ1FDQUdSUTBBSUFBdEFBZEZJQUlnQUVFUWFtdEJud0ZLY2cwQUlBSWdBQ2dDQ0RZQ0FDQUNRUVJxSVFJTElBVWdBeUFBS0FLMEFTQUVFS2dVT0FJQUlBQkJ5QUZxSUFCQkVHb2dBaUFFRU1nQ0lBQkI2QUpxSUFCQjRBSnFFSkFDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FMb0FpRUNJQUVRRHhvZ0FFSElBV29RRHhvZ0FFSHdBbW9rQUNBQ0M2TURBUU4vSXdCQjRBSnJJZ0FrQUNBQUlBSTJBdEFDSUFBZ0FUWUMyQUlnQXhDK0JDRUdJQU1nQUVIZ0FXb1FtZ2doQnlBQVFkQUJhaUFESUFCQnpBSnFFSmtJSUFCQndBRnFFSFFpQVNBQkVKc0JFSFlnQUNBQlFRQVFpUUVpQWpZQ3ZBRWdBQ0FBUVJCcU5nSU1JQUJCQURZQ0NDQUFLQUxNQWlFREEwQUNRQ0FBUWRnQ2FpQUFRZEFDYWhEYUFrVU5BQ0FBS0FLOEFTQUJFRHNnQW1wR0JFQWdBUkE3SVFnZ0FTQUJFRHRCQVhRUWRpQUJJQUVRbXdFUWRpQUFJQWdnQVVFQUVJa0JJZ0pxTmdLOEFRc2dBQ2dDMkFJUTdRRWdCaUFDSUFCQnZBRnFJQUJCQ0dvZ0F5QUFRZEFCYWlBQVFSQnFJQUJCREdvZ0J4Q0RCdzBBSUFCQjJBSnFFS0VDR2d3QkN3c2dBRUhRQVdvUU8wVWdBQ2dDRENJRElBQkJFR3ByUVo4QlNuSkZCRUFnQXlBQUtBSUlOZ0lBSUFOQkJHb2hBd3NnQlNBQ0lBQW9BcndCSUFRZ0JoQ3BGRGNEQUNBQVFkQUJhaUFBUVJCcUlBTWdCQkRJQWlBQVFkZ0NhaUFBUWRBQ2FoQ1FBZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDMkFJaEFpQUJFQThhSUFCQjBBRnFFQThhSUFCQjRBSnFKQUFnQWd1akF3RURmeU1BUWVBQ2F5SUFKQUFnQUNBQ05nTFFBaUFBSUFFMkF0Z0NJQU1RdmdRaEJpQURJQUJCNEFGcUVKb0lJUWNnQUVIUUFXb2dBeUFBUWN3Q2FoQ1pDQ0FBUWNBQmFoQjBJZ0VnQVJDYkFSQjJJQUFnQVVFQUVJa0JJZ0kyQXJ3QklBQWdBRUVRYWpZQ0RDQUFRUUEyQWdnZ0FDZ0N6QUloQXdOQUFrQWdBRUhZQW1vZ0FFSFFBbW9RMmdKRkRRQWdBQ2dDdkFFZ0FSQTdJQUpxUmdSQUlBRVFPeUVJSUFFZ0FSQTdRUUYwRUhZZ0FTQUJFSnNCRUhZZ0FDQUlJQUZCQUJDSkFTSUNhallDdkFFTElBQW9BdGdDRU8wQklBWWdBaUFBUWJ3QmFpQUFRUWhxSUFNZ0FFSFFBV29nQUVFUWFpQUFRUXhxSUFjUWd3Y05BQ0FBUWRnQ2FoQ2hBaG9NQVFzTElBQkIwQUZxRUR0RklBQW9BZ3dpQXlBQVFSQnFhMEdmQVVweVJRUkFJQU1nQUNnQ0NEWUNBQ0FEUVFScUlRTUxJQVVnQWlBQUtBSzhBU0FFSUFZUXJCUTdBUUFnQUVIUUFXb2dBRUVRYWlBRElBUVF5QUlnQUVIWUFtb2dBRUhRQW1vUWtBSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdGdDSVFJZ0FSQVBHaUFBUWRBQmFoQVBHaUFBUWVBQ2FpUUFJQUlMb3dNQkEzOGpBRUhnQW1zaUFDUUFJQUFnQWpZQzBBSWdBQ0FCTmdMWUFpQURFTDRFSVFZZ0F5QUFRZUFCYWhDYUNDRUhJQUJCMEFGcUlBTWdBRUhNQW1vUW1RZ2dBRUhBQVdvUWRDSUJJQUVRbXdFUWRpQUFJQUZCQUJDSkFTSUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFBb0Fzd0NJUU1EUUFKQUlBQkIyQUpxSUFCQjBBSnFFTm9DUlEwQUlBQW9BcndCSUFFUU95QUNha1lFUUNBQkVEc2hDQ0FCSUFFUU8wRUJkQkIySUFFZ0FSQ2JBUkIySUFBZ0NDQUJRUUFRaVFFaUFtbzJBcndCQ3lBQUtBTFlBaER0QVNBR0lBSWdBRUc4QVdvZ0FFRUlhaUFESUFCQjBBRnFJQUJCRUdvZ0FFRU1haUFIRUlNSERRQWdBRUhZQW1vUW9RSWFEQUVMQ3lBQVFkQUJhaEE3UlNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLY2tVRVFDQURJQUFvQWdnMkFnQWdBMEVFYWlFREN5QUZJQUlnQUNnQ3ZBRWdCQ0FHRUswVU53TUFJQUJCMEFGcUlBQkJFR29nQXlBRUVNZ0NJQUJCMkFKcUlBQkIwQUpxRUpBQ0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTFlBaUVDSUFFUUR4b2dBRUhRQVdvUUR4b2dBRUhnQW1va0FDQUNDOVFDQVFSL0l3QkIwQUJySWdVa0FDQUZJQVEyQWd3Z0JTQUJOZ0lJSUFFb0FnQWhCQ0FES0FJQUtBSUFJUU1nQlVFQU5nSk1Ba0FnQXlnQ0FDSUJJQUVvQWdBb0FnZ1JBQUFpQVNBRlFjd0FhaEFpSUFGR0JFQWdBQ0FGUVFocUlBTW9BZ0FRbnhRTUFRc2dCVUtBZ0lDQWdBRTNBa1FnQlNBRlFTQnFJZ0UyQWtBZ0FTQUZLQUpNRURrZ0JVRkFheUVIUVFBaEFRSkFBa0FEUUNBQklBVW9Ba3hQRFFFZ0FrRUFFQ0loQ0NBRklBTW9BZ0FpQmlBQklBWW9BZ0FvQWd3UkFRQTJBaFFnQlVFWWFpSUdJQVFnQ0NBRlFRaHFJQUVnQlVFVWFoQ2VGQ0FHRUNzRVFDQUZRU0JxSUFWQkdHb1FHaEFrSUFGQkFXb2hBUXdCQ3dzZ0JVRVlhaEE5R2lBQVFRSTZBQVFNQVFzZ0JTQUhOZ0lZSUFVZ0JTZ0NRQ0FGUVNCcVJ6b0FIQ0FFSUFJZ0JVRVlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNnQlVFZ2FoQWpDeUFGUWRBQWFpUUFDNk1EQVFOL0l3QkI0QUpySWdBa0FDQUFJQUkyQXRBQ0lBQWdBVFlDMkFJZ0F4QytCQ0VHSUFNZ0FFSGdBV29RbWdnaEJ5QUFRZEFCYWlBRElBQkJ6QUpxRUprSUlBQkJ3QUZxRUhRaUFTQUJFSnNCRUhZZ0FDQUJRUUFRaVFFaUFqWUN2QUVnQUNBQVFSQnFOZ0lNSUFCQkFEWUNDQ0FBS0FMTUFpRURBMEFDUUNBQVFkZ0NhaUFBUWRBQ2FoRGFBa1VOQUNBQUtBSzhBU0FCRURzZ0FtcEdCRUFnQVJBN0lRZ2dBU0FCRUR0QkFYUVFkaUFCSUFFUW13RVFkaUFBSUFnZ0FVRUFFSWtCSWdKcU5nSzhBUXNnQUNnQzJBSVE3UUVnQmlBQ0lBQkJ2QUZxSUFCQkNHb2dBeUFBUWRBQmFpQUFRUkJxSUFCQkRHb2dCeENEQncwQUlBQkIyQUpxRUtFQ0dnd0JDd3NnQUVIUUFXb1FPMFVnQUNnQ0RDSURJQUJCRUdwclFaOEJTbkpGQkVBZ0F5QUFLQUlJTmdJQUlBTkJCR29oQXdzZ0JTQUNJQUFvQXJ3QklBUWdCaEN2RkRZQ0FDQUFRZEFCYWlBQVFSQnFJQU1nQkJESUFpQUFRZGdDYWlBQVFkQUNhaENRQWdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQzJBSWhBaUFCRUE4YUlBQkIwQUZxRUE4YUlBQkI0QUpxSkFBZ0FndnJBUUVCZnlNQVFTQnJJZ1lrQUNBR0lBRTJBaGdDUUNBREVMZ0JRUUZ4UlFSQUlBWkJmellDQUNBQUlBRWdBaUFESUFRZ0JpQUFLQUlBS0FJUUVRc0FJUUVDUUFKQUFrQWdCaWdDQUE0Q0FBRUNDeUFGUVFBNkFBQU1Bd3NnQlVFQk9nQUFEQUlMSUFWQkFUb0FBQ0FFUVFRMkFnQU1BUXNnQmlBREVINGdCaER3QWlFQklBWVFaQ0FHSUFNUWZpQUdFSVVISVFBZ0JoQmtJQVlnQUJEY0F5QUdRUXh5SUFBUTJ3TWdCU0FHUVJocUlnTWdBaUFHSUFNZ0FTQUVRUUVRL3drZ0JrWTZBQUFnQmlnQ0dDRUJBMEFnQTBFTWF4Q0hBU0lESUFaSERRQUxDeUFHUVNCcUpBQWdBUXY5QWdFQmZ5TUFRWkFDYXlJQUpBQWdBQ0FDTmdLQUFpQUFJQUUyQW9nQ0lBQkIwQUZxRUhRaEJpQUFRUkJxSWdJZ0F4QitJQUlRd3dKQmdKTVBRWnFURHlBQVFlQUJhaEMvQlNBQ0VHUWdBRUhBQVdvUWRDSURJQU1RbXdFUWRpQUFJQU5CQUJDSkFTSUJOZ0s4QVNBQUlBSTJBZ3dnQUVFQU5nSUlBMEFDUUNBQVFZZ0NhaUFBUVlBQ2FoREtBa1VOQUNBQUtBSzhBU0FERURzZ0FXcEdCRUFnQXhBN0lRSWdBeUFERUR0QkFYUVFkaUFESUFNUW13RVFkaUFBSUFJZ0EwRUFFSWtCSWdGcU5nSzhBUXNnQUNnQ2lBSVE3Z0ZCRUNBQklBQkJ2QUZxSUFCQkNHcEJBQ0FHSUFCQkVHb2dBRUVNYWlBQVFlQUJhaENHQncwQUlBQkJpQUpxRUpzQ0dnd0JDd3NnQXlBQUtBSzhBU0FCYXhCMklBTVFleUVDRU1BQklRRWdBQ0FGTmdJQUlBSWdBU0FBRUtNVVFRRkhCRUFnQkVFRU5nSUFDeUFBUVlnQ2FpQUFRWUFDYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0NpQUloQVNBREVBOGFJQVlRRHhvZ0FFR1FBbW9rQUNBQkMrUURBZ0ovQVg0akFFR2dBbXNpQUNRQUlBQWdBallDa0FJZ0FDQUJOZ0tZQWlBQVFlQUJhaUFESUFCQjhBRnFJQUJCN3dGcUlBQkI3Z0ZxRUlJTklBQkIwQUZxRUhRaUFTQUJFSnNCRUhZZ0FDQUJRUUFRaVFFaUF6WUN6QUVnQUNBQVFTQnFOZ0ljSUFCQkFEWUNHQ0FBUVFFNkFCY2dBRUhGQURvQUZpQUFMQUR1QVNFQ0lBQXNBTzhCSVFZRFFBSkFJQUJCbUFKcUlBQkJrQUpxRU1vQ1JRMEFJQUFvQXN3QklBRVFPeUFEYWtZRVFDQUJFRHNoQnlBQklBRVFPMEVCZEJCMklBRWdBUkNiQVJCMklBQWdCeUFCUVFBUWlRRWlBMm8yQXN3QkN5QUFLQUtZQWhEdUFTQUFRUmRxSUFCQkZtb2dBeUFBUWN3QmFpQUdJQUlnQUVIZ0FXb2dBRUVnYWlBQVFSeHFJQUJCR0dvZ0FFSHdBV29RZ1EwTkFDQUFRWmdDYWhDYkFob01BUXNMSUFCQjRBRnFFRHNoQmlBQUtBSWNJUUlDUUNBR1JRMEFJQUF0QUJkRklBSWdBRUVnYW10Qm53RktjZzBBSUFJZ0FDZ0NHRFlDQUNBQ1FRUnFJUUlMSUFBZ0F5QUFLQUxNQVNBRUVLUVVJQUFwQXdBaENDQUZJQUFwQXdnM0F3Z2dCU0FJTndNQUlBQkI0QUZxSUFCQklHb2dBaUFFRU1nQ0lBQkJtQUpxSUFCQmtBSnFFSWNDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FLWUFpRUNJQUVRRHhvZ0FFSGdBV29RRHhvZ0FFR2dBbW9rQUNBQ0M4MERBUUovSXdCQmtBSnJJZ0FrQUNBQUlBSTJBb0FDSUFBZ0FUWUNpQUlnQUVIUUFXb2dBeUFBUWVBQmFpQUFRZDhCYWlBQVFkNEJhaENDRFNBQVFjQUJhaEIwSWdFZ0FSQ2JBUkIySUFBZ0FVRUFFSWtCSWdNMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ2dBRUVCT2dBSElBQkJ4UUE2QUFZZ0FDd0EzZ0VoQWlBQUxBRGZBU0VHQTBBQ1FDQUFRWWdDYWlBQVFZQUNhaERLQWtVTkFDQUFLQUs4QVNBQkVEc2dBMnBHQkVBZ0FSQTdJUWNnQVNBQkVEdEJBWFFRZGlBQklBRVFtd0VRZGlBQUlBY2dBVUVBRUlrQklnTnFOZ0s4QVFzZ0FDZ0NpQUlRN2dFZ0FFRUhhaUFBUVFacUlBTWdBRUc4QVdvZ0JpQUNJQUJCMEFGcUlBQkJFR29nQUVFTWFpQUFRUWhxSUFCQjRBRnFFSUVORFFBZ0FFR0lBbW9RbXdJYURBRUxDeUFBUWRBQmFoQTdJUVlnQUNnQ0RDRUNBa0FnQmtVTkFDQUFMUUFIUlNBQ0lBQkJFR3ByUVo4QlNuSU5BQ0FDSUFBb0FnZzJBZ0FnQWtFRWFpRUNDeUFGSUFNZ0FDZ0N2QUVnQkJDbUZEa0RBQ0FBUWRBQmFpQUFRUkJxSUFJZ0JCRElBaUFBUVlnQ2FpQUFRWUFDYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0NpQUloQWlBQkVBOGFJQUJCMEFGcUVBOGFJQUJCa0FKcUpBQWdBZ3ZOQXdFQ2Z5TUFRWkFDYXlJQUpBQWdBQ0FDTmdLQUFpQUFJQUUyQW9nQ0lBQkIwQUZxSUFNZ0FFSGdBV29nQUVIZkFXb2dBRUhlQVdvUWdnMGdBRUhBQVdvUWRDSUJJQUVRbXdFUWRpQUFJQUZCQUJDSkFTSUROZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFCQkFUb0FCeUFBUWNVQU9nQUdJQUFzQU40QklRSWdBQ3dBM3dFaEJnTkFBa0FnQUVHSUFtb2dBRUdBQW1vUXlnSkZEUUFnQUNnQ3ZBRWdBUkE3SUFOcVJnUkFJQUVRT3lFSElBRWdBUkE3UVFGMEVIWWdBU0FCRUpzQkVIWWdBQ0FISUFGQkFCQ0pBU0lEYWpZQ3ZBRUxJQUFvQW9nQ0VPNEJJQUJCQjJvZ0FFRUdhaUFESUFCQnZBRnFJQVlnQWlBQVFkQUJhaUFBUVJCcUlBQkJER29nQUVFSWFpQUFRZUFCYWhDQkRRMEFJQUJCaUFKcUVKc0NHZ3dCQ3dzZ0FFSFFBV29RT3lFR0lBQW9BZ3doQWdKQUlBWkZEUUFnQUMwQUIwVWdBaUFBUVJCcWEwR2ZBVXB5RFFBZ0FpQUFLQUlJTmdJQUlBSkJCR29oQWdzZ0JTQURJQUFvQXJ3QklBUVFxQlE0QWdBZ0FFSFFBV29nQUVFUWFpQUNJQVFReUFJZ0FFR0lBbW9nQUVHQUFtb1Fod0lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRSWdBUkFQR2lBQVFkQUJhaEFQR2lBQVFaQUNhaVFBSUFJTG1BTUJBbjhqQUVId0FXc2lBQ1FBSUFBZ0FqWUM0QUVnQUNBQk5nTG9BU0FERUw0RUlRWWdBRUhRQVdvZ0F5QUFRZDhCYWhDYkNDQUFRY0FCYWhCMElnRWdBUkNiQVJCMklBQWdBVUVBRUlrQklnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dnQUN3QTN3RWhBd05BQWtBZ0FFSG9BV29nQUVIZ0FXb1F5Z0pGRFFBZ0FDZ0N2QUVnQVJBN0lBSnFSZ1JBSUFFUU95RUhJQUVnQVJBN1FRRjBFSFlnQVNBQkVKc0JFSFlnQUNBSElBRkJBQkNKQVNJQ2FqWUN2QUVMSUFBb0F1Z0JFTzRCSUFZZ0FpQUFRYndCYWlBQVFRaHFJQU1nQUVIUUFXb2dBRUVRYWlBQVFReHFRWUNURHhDR0J3MEFJQUJCNkFGcUVKc0NHZ3dCQ3dzZ0FFSFFBV29RTzBVZ0FDZ0NEQ0lESUFCQkVHcHJRWjhCU25KRkJFQWdBeUFBS0FJSU5nSUFJQU5CQkdvaEF3c2dCU0FDSUFBb0Fyd0JJQVFnQmhDcEZEY0RBQ0FBUWRBQmFpQUFRUkJxSUFNZ0JCRElBaUFBUWVnQmFpQUFRZUFCYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0M2QUVoQWlBQkVBOGFJQUJCMEFGcUVBOGFJQUJCOEFGcUpBQWdBZ3VZQXdFQ2Z5TUFRZkFCYXlJQUpBQWdBQ0FDTmdMZ0FTQUFJQUUyQXVnQklBTVF2Z1FoQmlBQVFkQUJhaUFESUFCQjN3RnFFSnNJSUFCQndBRnFFSFFpQVNBQkVKc0JFSFlnQUNBQlFRQVFpUUVpQWpZQ3ZBRWdBQ0FBUVJCcU5nSU1JQUJCQURZQ0NDQUFMQURmQVNFREEwQUNRQ0FBUWVnQmFpQUFRZUFCYWhES0FrVU5BQ0FBS0FLOEFTQUJFRHNnQW1wR0JFQWdBUkE3SVFjZ0FTQUJFRHRCQVhRUWRpQUJJQUVRbXdFUWRpQUFJQWNnQVVFQUVJa0JJZ0pxTmdLOEFRc2dBQ2dDNkFFUTdnRWdCaUFDSUFCQnZBRnFJQUJCQ0dvZ0F5QUFRZEFCYWlBQVFSQnFJQUJCREdwQmdKTVBFSVlIRFFBZ0FFSG9BV29RbXdJYURBRUxDeUFBUWRBQmFoQTdSU0FBS0FJTUlnTWdBRUVRYW10Qm53Rktja1VFUUNBRElBQW9BZ2cyQWdBZ0EwRUVhaUVEQ3lBRklBSWdBQ2dDdkFFZ0JDQUdFS3dVT3dFQUlBQkIwQUZxSUFCQkVHb2dBeUFFRU1nQ0lBQkI2QUZxSUFCQjRBRnFFSWNDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FMb0FTRUNJQUVRRHhvZ0FFSFFBV29RRHhvZ0FFSHdBV29rQUNBQ0M1Z0RBUUovSXdCQjhBRnJJZ0FrQUNBQUlBSTJBdUFCSUFBZ0FUWUM2QUVnQXhDK0JDRUdJQUJCMEFGcUlBTWdBRUhmQVdvUW13Z2dBRUhBQVdvUWRDSUJJQUVRbXdFUWRpQUFJQUZCQUJDSkFTSUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFBc0FOOEJJUU1EUUFKQUlBQkI2QUZxSUFCQjRBRnFFTW9DUlEwQUlBQW9BcndCSUFFUU95QUNha1lFUUNBQkVEc2hCeUFCSUFFUU8wRUJkQkIySUFFZ0FSQ2JBUkIySUFBZ0J5QUJRUUFRaVFFaUFtbzJBcndCQ3lBQUtBTG9BUkR1QVNBR0lBSWdBRUc4QVdvZ0FFRUlhaUFESUFCQjBBRnFJQUJCRUdvZ0FFRU1ha0dBa3c4UWhnY05BQ0FBUWVnQmFoQ2JBaG9NQVFzTElBQkIwQUZxRUR0RklBQW9BZ3dpQXlBQVFSQnFhMEdmQVVweVJRUkFJQU1nQUNnQ0NEWUNBQ0FEUVFScUlRTUxJQVVnQWlBQUtBSzhBU0FFSUFZUXJSUTNBd0FnQUVIUUFXb2dBRUVRYWlBRElBUVF5QUlnQUVIb0FXb2dBRUhnQVdvUWh3SUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdWdCSVFJZ0FSQVBHaUFBUWRBQmFoQVBHaUFBUWZBQmFpUUFJQUlMcVFJQkJuOGpBRUhnQUdzaUJDUUFJQVJDZ0lDQWdNQUFOd0pVSUFRZ0JFRkFhellDVUNBRVFUQnFJUWdnQkVIUUFHb2hDUU5BSUFJb0FpUWdCa3NFUUNBRVFvQ0FnSURBQURjQ05DQUVJQVJCSUdvMkFqQkJBQ0VGQTBBZ0FpZ0NJQ0lISUFWTkJFQWdBaWdDSENFRklBRW9BZ0FoQnlBRUlBZzJBaEFnQkNBRVFTQnFJZ29nQkNnQ01FYzZBQlFnQkNBSElBVWdCRUVRYWhBNk5nSWNJQVpCQVdvaEJpQUVRVUJySUFSQkhHb1FjU0FLRUY0TUF3VWdCRUVnYWlBREtBSUFLQUlBSUFZZ0Iyd2dCV3BCQW5ScUVIRWdCVUVCYWlFRkRBRUxBQXNBQ3dzZ0FTZ0NBQ0VCSUFRZ0NUWUNDQ0FFSUFSQlFHc2lBeUFFS0FKUVJ6b0FEQ0FCSUFJZ0JFRUlhaEE2SVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQ0FERUY0Z0JFSGdBR29rQUF1WUF3RUNmeU1BUWZBQmF5SUFKQUFnQUNBQ05nTGdBU0FBSUFFMkF1Z0JJQU1RdmdRaEJpQUFRZEFCYWlBRElBQkIzd0ZxRUpzSUlBQkJ3QUZxRUhRaUFTQUJFSnNCRUhZZ0FDQUJRUUFRaVFFaUFqWUN2QUVnQUNBQVFSQnFOZ0lNSUFCQkFEWUNDQ0FBTEFEZkFTRURBMEFDUUNBQVFlZ0JhaUFBUWVBQmFoREtBa1VOQUNBQUtBSzhBU0FCRURzZ0FtcEdCRUFnQVJBN0lRY2dBU0FCRUR0QkFYUVFkaUFCSUFFUW13RVFkaUFBSUFjZ0FVRUFFSWtCSWdKcU5nSzhBUXNnQUNnQzZBRVE3Z0VnQmlBQ0lBQkJ2QUZxSUFCQkNHb2dBeUFBUWRBQmFpQUFRUkJxSUFCQkRHcEJnSk1QRUlZSERRQWdBRUhvQVdvUW13SWFEQUVMQ3lBQVFkQUJhaEE3UlNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLY2tVRVFDQURJQUFvQWdnMkFnQWdBMEVFYWlFREN5QUZJQUlnQUNnQ3ZBRWdCQ0FHRUs4VU5nSUFJQUJCMEFGcUlBQkJFR29nQXlBRUVNZ0NJQUJCNkFGcUlBQkI0QUZxRUljQ0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTG9BU0VDSUFFUUR4b2dBRUhRQVdvUUR4b2dBRUh3QVdva0FDQUNDeUlCQVg4Z0FDRUJRZWk4SUVIb3ZDQW9BZ0JCQVdvaUFEWUNBQ0FCSUFBMkFnUUx1d0lCQlg4akFFRXdheUlFSkFBZ0JFS0FnSUNBd0FBM0FpUWdCQ0FFUVJCcU5nSWdJQU1vQWdBaUF5Z0NBQ0lGSUFNb0FnUkJBblJxSVFjZ0JFRWdhaUVJQWtBRFFDQUZJQWRIQkVBZ0JDQUZLQUlBSWdNMkFnd2dBMFVFUUNBQVFRRTZBQVFnQUVFQU5nSUFEQU1MQWtBZ0F5QURLQUlBS0FJSUVRQUFFTElDSWdrRVFFRUFJUU1EUUNBRElBa29BaHhQRFFJZ0JDQUVLQUlNSWdZZ0F5QUdLQUlBS0FJTUVRRUFJZ1kyQWdnZ0JnUkFJQU5CQVdvaEF5QUVRUkJxSUFSQkNHb1FjUXdCQlNBQVFRRTZBQVFnQUVFQU5nSUFEQVlMQUFzQUN5QUVRUkJxSUFSQkRHb1FjUXNnQlVFRWFpRUZEQUVMQ3lBQktBSUFJUUVnQkNBSU5nSUFJQVFnQkNnQ0lDQUVRUkJxUnpvQUJDQUJJQUlnQkJBNklRRWdBRUVCT2dBRUlBQWdBVFlDQUFzZ0JFRVFhaEJlSUFSQk1Hb2tBQXZxQVFFQmZ5TUFRU0JySWdZa0FDQUdJQUUyQWhnQ1FDQURFTGdCUVFGeFJRUkFJQVpCZnpZQ0FDQUFJQUVnQWlBRElBUWdCaUFBS0FJQUtBSVFFUXNBSVFFQ1FBSkFBa0FnQmlnQ0FBNENBQUVDQ3lBRlFRQTZBQUFNQXdzZ0JVRUJPZ0FBREFJTElBVkJBVG9BQUNBRVFRUTJBZ0FNQVFzZ0JpQURFSDRnQmhEREFpRUJJQVlRWkNBR0lBTVFmaUFHRUlrSElRQWdCaEJrSUFZZ0FCRGNBeUFHUVF4eUlBQVEyd01nQlNBR1FSaHFJZ01nQWlBR0lBTWdBU0FFUVFFUWd3b2dCa1k2QUFBZ0JpZ0NHQ0VCQTBBZ0EwRU1heEFQSWdNZ0JrY05BQXNMSUFaQklHb2tBQ0FCQzBBQkFYOUJBQ0VBQTM4Z0FTQUNSZ1IvSUFBRklBRW9BZ0FnQUVFRWRHb2lBRUdBZ0lDQWYzRWlBMEVZZGlBRGNpQUFjeUVBSUFGQkJHb2hBUXdCQ3dzTERBQWdBQ0FDSUFNUWpBY2FDMVFCQW44Q1FBTkFJQU1nQkVjRVFFRi9JUUFnQVNBQ1JnMENJQUVvQWdBaUJTQURLQUlBSWdaSURRSWdCU0FHU2dSQVFRRVBCU0FEUVFScUlRTWdBVUVFYWlFQkRBSUxBQXNMSUFFZ0FrY2hBQXNnQUFzMkFDQURLQUlBS0FJQUtBSUFJZ01FZnlBQktBSUFJQUlnQXlBQ0tBSWNFS29HQlVFQUN5RUNJQUJCQVRvQUJDQUFJQUkyQWdBTFFBRUJmMEVBSVFBRGZ5QUJJQUpHQkg4Z0FBVWdBU3dBQUNBQVFRUjBhaUlBUVlDQWdJQi9jU0lEUVJoMklBTnlJQUJ6SVFBZ0FVRUJhaUVCREFFTEN3c01BQ0FBSUFJZ0F4Q0ZDaG9MWGdFRGZ5QUJJQVFnQTJ0cUlRVUNRQU5BSUFNZ0JFY0VRRUYvSVFBZ0FTQUNSZzBDSUFFc0FBQWlCaUFETEFBQUlnZElEUUlnQmlBSFNnUkFRUUVQQlNBRFFRRnFJUU1nQVVFQmFpRUJEQUlMQUFzTElBSWdCVWNoQUFzZ0FBc2RBQ0FES0FJQUtBSUFLQUlBSVFFZ0FFRUJPZ0FFSUFBZ0FUWUNBQXNaQUNBQklBSVFrUUVoQVNBQVFRRTZBQVFnQUNBQk5nSUFDMVFCQW44Z0FTQUFLQUpVSWdFZ0FVRUFJQUpCZ0FKcUlnTVFxdzBpQkNBQmF5QURJQVFiSWdNZ0FpQUNJQU5MR3lJQ0VIMGFJQUFnQVNBRGFpSUROZ0pVSUFBZ0F6WUNDQ0FBSUFFZ0FtbzJBZ1FnQWd2MUFRRURmeU1BUVNCcklnSWtBQ0FCUVg4UTJBVWhCQ0FBTFFBMElRTUNRQ0FFQkVBZ0F3MEJJQUFnQUNnQ01DSUJRWDhRMkFWQkFYTTZBRFFNQVFzQ1FDQURSUTBBSUFJZ0FDZ0NNQkNTQnpvQUV3SkFBa0FDUUNBQUtBSWtJQUFvQWlnZ0FrRVRhaUFDUVJScUlnTWdBa0VNYWlBQ1FSaHFJQUpCSUdvZ0F4Q1JDa0VCYXc0REFnSUFBUXNnQUNnQ01DRURJQUlnQWtFWmFqWUNGQ0FDSUFNNkFCZ0xBMEFnQWlnQ0ZDSURJQUpCR0dwTkRRSWdBaUFEUVFGcklnTTJBaFFnQXl3QUFDQUFLQUlnRUpBS1FYOUhEUUFMQzBGL0lRRU1BUXNnQUVFQk9nQTBJQUFnQVRZQ01Bc2dBa0VnYWlRQUlBRUxDUUFnQUVFQkVMOFVDd2tBSUFCQkFCQy9GQXN6QUNBQUlBRVFqZzBpQVRZQ0pDQUFJQUVRa1FjMkFpd2dBQ0FBS0FJa0VJMEhPZ0ExSUFBb0FpeEJDVTRFUUJCdkFBc0wrZ0VCQlg4akFFRWdheUlDSkFBQ2Z3SkFBa0FnQVVGL0VOZ0ZEUUFnQWlBQkVKSUhPZ0FYSUFBdEFDd0VRQ0FDUVJkcVFRRkJBU0FBS0FJZ0VJQUZRUUZIRFFJTUFRc2dBaUFDUVJocUlnVTJBaEFnQWtFZ2FpRUdJQUpCRjJvaEF3TkFJQUFvQWlRZ0FDZ0NLQ0FESUFVZ0FrRU1haUFDUVJocUlBWWdBa0VRYWhDUkNpRUVJQUlvQWd3Z0EwWU5BaUFFUVFOR0JFQWdBMEVCUVFFZ0FDZ0NJQkNBQlVFQlJnMENEQU1MSUFSQkFVc05BaUFDUVJocUlnTkJBU0FDS0FJUUlBTnJJZ01nQUNnQ0lCQ0FCU0FEUncwQ0lBSW9BZ3doQXlBRVFRRkdEUUFMQ3lBQkVJOE5EQUVMUVg4TElRQWdBa0VnYWlRQUlBQUxhUUVCZndKQUlBQXRBQ3hGQkVBZ0FrRUFJQUpCQUVvYklRSURRQ0FDSUFOR0RRSWdBQ0FCTEFBQUVLVURJQUFvQWdBb0FqUVJBUUJCZjBZRVFDQUREd1VnQVVFQmFpRUJJQU5CQVdvaEF3d0JDd0FMQUFzZ0FVRUJJQUlnQUNnQ0lCQ0FCU0VDQ3lBQ0N5WUFJQUFnQUNnQ0FDZ0NHQkVBQUJvZ0FDQUJFSTROSWdFMkFpUWdBQ0FCRUkwSE9nQXNDK29CQVFKL0l3QkJJR3NpQWlRQUlBQXRBRFFoQXdKQUlBRVFrQWNFUUNBRERRRWdBQ0FBS0FJd0lnRVFrQWRCQVhNNkFEUU1BUXNDUUNBRFJRMEFJQUlnQUNnQ01EWUNFQUpBQWtBQ1FDQUFLQUlrSUFBb0FpZ2dBa0VRYWlBQ1FSUnFJZ01nQWtFTWFpQUNRUmhxSUFKQklHb2dBeENSQ2tFQmF3NERBZ0lBQVFzZ0FDZ0NNQ0VESUFJZ0FrRVphallDRkNBQ0lBTTZBQmdMQTBBZ0FpZ0NGQ0lESUFKQkdHcE5EUUlnQWlBRFFRRnJJZ00yQWhRZ0F5d0FBQ0FBS0FJZ0VKQUtRWDlIRFFBTEMwRi9JUUVNQVFzZ0FFRUJPZ0EwSUFBZ0FUWUNNQXNnQWtFZ2FpUUFJQUVMQ1FBZ0FFRUJFTUlVQ3drQUlBQkJBQkRDRkFzekFDQUFJQUVRaWcwaUFUWUNKQ0FBSUFFUWtRYzJBaXdnQUNBQUtBSWtFSTBIT2dBMUlBQW9BaXhCQ1U0RVFCQnZBQXNMZ0FJQkJYOGpBRUVnYXlJQ0pBQUNRQUpBQWtBZ0FSQ1FCdzBBSUFJZ0FUWUNGQ0FBTFFBc0JFQkJmeUVESUFKQkZHcEJCRUVCSUFBb0FpQVFnQVZCQVVZTkFRd0RDeUFDSUFKQkdHb2lCVFlDRUNBQ1FTQnFJUVlnQWtFVWFpRURBMEFnQUNnQ0pDQUFLQUlvSUFNZ0JTQUNRUXhxSUFKQkdHb2dCaUFDUVJCcUVKRUtJUVFnQWlnQ0RDQURSZzBDSUFSQkEwWUVRQ0FEUVFGQkFTQUFLQUlnRUlBRlFRRkdEUUlNQXdzZ0JFRUJTdzBDSUFKQkdHb2lBMEVCSUFJb0FoQWdBMnNpQXlBQUtBSWdFSUFGSUFOSERRSWdBaWdDRENFRElBUkJBVVlOQUFzTFFRQWdBU0FCRUpBSEd5RUREQUVMUVg4aEF3c2dBa0VnYWlRQUlBTUxaZ0VCZndKQUlBQXRBQ3hGQkVBZ0FrRUFJQUpCQUVvYklRSURRQ0FDSUFOR0RRSWdBQ0FCS0FJQUlBQW9BZ0FvQWpRUkFRQkJmMFlFUUNBRER3VWdBVUVFYWlFQklBTkJBV29oQXd3QkN3QUxBQXNnQVVFRUlBSWdBQ2dDSUJDQUJTRUNDeUFDQzJrQkFYOGpBRUVRYXlJRkpBQWdCVUVBTmdJTUFrQWdBaUFGUVF4cUVDSkZCRUFnQUVFQk9nQUVJQUJCQURZQ0FBd0JDeUFES0FJQUtBSUFLQUlBSWdORkJFQWdBRUVCT2dBRUlBQkJBRFlDQUF3QkN5QUFJQUVnQWlBRElBUVFpUTBMSUFWQkVHb2tBQXNtQUNBQUlBQW9BZ0FvQWhnUkFBQWFJQUFnQVJDS0RTSUJOZ0lrSUFBZ0FSQ05Cem9BTEFzZUFFSFFzeUFRbkFoQm9MWWdFSndJUWFTMElCQ1VEVUgwdGlBUWxBMExFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRE5GQXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFTHNCQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RalEwTEV3QWdBQ0FBS0FJQVFReHJLQUlBYWhDN0Fnc0tBQ0FBUVFockVJME5Dd29BSUFCQkNHc1F1d0lMR2dBZ0FDQUJJQUlwQXdoQkFDQURJQUVvQWdBb0FoQVJLZ0FMQ1FBZ0FCRFJDUkFmQzVNQ0FnSi9BMzRnQVNnQ0xDSUZJQUVvQWhnaUJra0VRQ0FCSUFZMkFpd2dCaUVGQzBKL0lRa0NRQ0FFUVJoeElnWkZJQU5CQVVZZ0JrRVlSbkZ5RFFBZ0JRUkFJQVVnQVVFZ2FoQjdhNndoQ0FzQ1FBSkFBa0FnQXc0REFnQUJBd3NnQkVFSWNRUkFJQUVvQWd3Z0FTZ0NDR3VzSVFjTUFnc2dBU2dDR0NBQktBSVVhNndoQnd3QkN5QUlJUWNMSUFJZ0Izd2lBa0lBVXlBQ0lBaFZjZzBBSUFSQkNIRWhBd0pBSUFKUURRQWdBd1JBSUFFb0FneEZEUUlMSUFSQkVIRkZEUUFnQVNnQ0dFVU5BUXNnQXdSQUlBRWdBU2dDQ0NJRElBTWdBcWRxSUFFb0Fpd1F3UVFMSUFSQkVIRUVRQ0FCSUFFb0FoUWdBU2dDSEJDWkJpQUJJQUtuRUk4SEN5QUNJUWtMSUFBZ0NSQ2REUXVNQWdFSWZ5TUFRUkJySWdRa0FBSi9JQUZCZnhEWUJVVUVRQ0FBS0FJSUlRWWdBQ2dDRENFSElBUWdBQ2dDR0NJRElBQW9BaHhHQkg5QmZ5QUFMUUF3UVJCeFJRMENHaUFBS0FJVUlRVWdBQ2dDTENFSUlBQkJJR29pQWtFQUVLUUJJQUlnQWhDYkFSQjJJQUFnQWhCN0lna2dBaEE3SUFscUVKa0dJQUFnQXlBRmF4Q1BCeUFBSUFBb0FoUWdDQ0FGYTJvMkFpd2dBQ2dDR0FVZ0F3dEJBV28yQWd3Z0FDQUFRU3hxSWdJZ0JFRU1haUlESUFNb0FnQWdBaWdDQUJERkFSc29BZ0EyQWl3Z0FDMEFNRUVJY1FSQUlBQWdBRUVnYWhCN0lnSWdBaUFISUFacmFpQUFLQUlzRU1FRUN5QUFJQUVRa2djUTRSUU1BUXNnQVJDUERRc2hBQ0FFUVJCcUpBQWdBQXV0QVFFQ2Z5QUFLQUlZSWdJZ0FDZ0NMRXNFUUNBQUlBSTJBaXdMQWtBZ0FDZ0NDQ0FBS0FJTVR3MEFJQUZCZnhEWUJRUkFJQUFnQUNnQ0NDQUFLQUlNUVFGcklBQW9BaXdRd1FRZ0FSQ1BEUThMQWtBZ0FDMEFNRUVRY1FSQUlBQW9BZ3doQWlBQkVKSUhJUU1NQVFzZ0FSQ1NCeUlESUFBb0Fnd2lBa0VCYXl3QUFCQ2JEVVVOQVFzZ0FDQUFLQUlJSUFKQkFXc2dBQ2dDTEJEQkJDQUFLQUlNSUFNNkFBQWdBUThMUVg4TGFnRUNmeUFBS0FJc0lnRWdBQ2dDR0NJQ1NRUkFJQUFnQWpZQ0xDQUNJUUVMQWtBZ0FDMEFNRUVJY1VVTkFDQUJJQUFvQWhBaUFrc0VmeUFBSUFBb0FnZ2dBQ2dDRENBQkVNRUVJQUFvQWhBRklBSUxJQUFvQWd3aUFFME5BQ0FBTEFBQUVLVUREd3RCZnd1d0FRRUVmeU1BUVJCcklnUWtBQU5BQWtBZ0FpQURUQTBBSUFBb0FoZ2lCU0FBS0FJY0lnWlBCRUFnQUNBQktBSUFJQUFvQWdBb0FqUVJBUUJCZjBZTkFTQURRUUZxSVFNZ0FVRUVhaUVCREFJRklBUWdCaUFGYTBFQ2RUWUNEQ0FFSUFJZ0EyczJBZ2dnQlNBQklBUkJER29nQkVFSWFoQ1RCeWdDQUNJRkVNSUVJQUFnQlVFQ2RDSUdJQUFvQWhocU5nSVlJQU1nQldvaEF5QUJJQVpxSVFFTUFnc0FDd3NnQkVFUWFpUUFJQU1MTWdFQmYwRi9JUUVnQUNBQUtBSUFLQUlrRVFBQVFYOUhCSDhnQUNBQUtBSU1JZ0JCQkdvMkFnd2dBQ2dDQUFWQmZ3c0x3d0VCQkg4akFFRVFheUlFSkFBRFFBSkFJQUlnQlV3TkFBSi9JQUFvQWd3aUF5QUFLQUlRSWdaSkJFQWdCRUgvLy8vL0J6WUNEQ0FFSUFZZ0EydEJBblUyQWdnZ0JDQUNJQVZyTmdJRUlBRWdBeUFFUVF4cUlBUkJDR29nQkVFRWFoQ1RCeENUQnlnQ0FDSURFTUlFSUFBZ0EwRUNkQ0lHSUFBb0FneHFOZ0lNSUFFZ0Jtb01BUXNnQUNBQUtBSUFLQUlvRVFBQUlnTkJmMFlOQVNBQklBTTJBZ0JCQVNFRElBRkJCR29MSVFFZ0F5QUZhaUVGREFFTEN5QUVRUkJxSkFBZ0JRc1RBQ0FBSUFBb0FnQkJER3NvQWdCcUVKWU5DeE1BSUFBZ0FDZ0NBRUVNYXlnQ0FHb1Frd29MQ2dBZ0FFRUlheENXRFFzS0FDQUFRUWhyRUpNS0M2a0JBUVIvSXdCQkVHc2lCU1FBQTBBQ1FDQUNJQU5NRFFBZ0FDZ0NHQ0lFSUFBb0Fod2lCazhFUUNBQUlBRXNBQUFRcFFNZ0FDZ0NBQ2dDTkJFQkFFRi9SZzBCSUFOQkFXb2hBeUFCUVFGcUlRRUZJQVVnQmlBRWF6WUNEQ0FGSUFJZ0EyczJBZ2dnQkNBQklBVkJER29nQlVFSWFoQ1RCeWdDQUNJRUVMa0RHaUFBSUFRZ0FDZ0NHR28yQWhnZ0F5QUVhaUVESUFFZ0JHb2hBUXNNQVFzTElBVkJFR29rQUNBREN5OEFJQUFnQUNnQ0FDZ0NKQkVBQUVGL1JnUkFRWDhQQ3lBQUlBQW9BZ3dpQUVFQmFqWUNEQ0FBTEFBQUVLVURDOEFCQVFSL0l3QkJFR3NpQkNRQUEwQUNRQ0FDSUFWTURRQUNmeUFBS0FJTUlnTWdBQ2dDRUNJR1NRUkFJQVJCLy8vLy93YzJBZ3dnQkNBR0lBTnJOZ0lJSUFRZ0FpQUZhellDQkNBQklBTWdCRUVNYWlBRVFRaHFJQVJCQkdvUWt3Y1Frd2NvQWdBaUF4QzVBeUVCSUFBZ0FDZ0NEQ0FEYWpZQ0RDQUJJQU5xREFFTElBQWdBQ2dDQUNnQ0tCRUFBQ0lEUVg5R0RRRWdBU0FERUpJSE9nQUFRUUVoQXlBQlFRRnFDeUVCSUFNZ0JXb2hCUXdCQ3dzZ0JFRVFhaVFBSUFVTERBQWdBQkNhQ2hvZ0FCQWZDd3dBSUFBUS9nUWFJQUFRSHdzSkFDQUFLQUk4RUFZTFJnRUJmeUFBS0FJOElRTWpBRUVRYXlJQUpBQWdBeUFCcHlBQlFpQ0lweUFDUWY4QmNTQUFRUWhxRUFvUXFRMGhBaUFBS1FNSUlRRWdBRUVRYWlRQVFuOGdBU0FDR3d2WEFRRUVmeU1BUVNCcklnUWtBQ0FFSUFFMkFoQWdCQ0FDSUFBb0FqQWlBMEVBUjJzMkFoUWdBQ2dDTENFR0lBUWdBellDSENBRUlBWTJBaGhCSUNFREFrQUNRQ0FBSUFBb0Fqd2dCRUVRYWtFQ0lBUkJER29RQnhDcERRUi9RU0FGSUFRb0Fnd2lBMEVBU2cwQlFTQkJFQ0FER3dzZ0FDZ0NBSEkyQWdBTUFRc2dCQ2dDRkNJR0lBTWlCVThOQUNBQUlBQW9BaXdpQXpZQ0JDQUFJQU1nQlNBR2EybzJBZ2dnQUNnQ01BUkFJQUFnQTBFQmFqWUNCQ0FCSUFKcVFRRnJJQU10QUFBNkFBQUxJQUloQlFzZ0JFRWdhaVFBSUFVTHFBRUJCWDhnQUNnQ1ZDSURLQUlBSVFVZ0F5Z0NCQ0lFSUFBb0FoUWdBQ2dDSENJSGF5SUdJQVFnQmtrYklnWUVRQ0FGSUFjZ0JoQjlHaUFESUFNb0FnQWdCbW9pQlRZQ0FDQURJQU1vQWdRZ0Jtc2lCRFlDQkFzZ0JDQUNJQUlnQkVzYklnUUVRQ0FGSUFFZ0JCQjlHaUFESUFNb0FnQWdCR29pQlRZQ0FDQURJQU1vQWdRZ0JHczJBZ1FMSUFWQkFEb0FBQ0FBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQWdzRUFFSUFDNzRDQVFkL0l3QkJJR3NpQXlRQUlBTWdBQ2dDSENJRU5nSVFJQUFvQWhRaEJTQURJQUkyQWh3Z0F5QUJOZ0lZSUFNZ0JTQUVheUlCTmdJVUlBRWdBbW9oQlVFQ0lRWWdBMEVRYWlFQkFuOERRQUpBQWtBQ1FDQUFLQUk4SUFFZ0JpQURRUXhxRUFrUXFRMUZCRUFnQlNBREtBSU1JZ2RHRFFFZ0IwRUFUZzBDREFNTElBVkJmMGNOQWdzZ0FDQUFLQUlzSWdFMkFod2dBQ0FCTmdJVUlBQWdBU0FBS0FJd2FqWUNFQ0FDREFNTElBRWdCeUFCS0FJRUlnaExJZ2xCQTNScUlnUWdCeUFJUVFBZ0NSdHJJZ2dnQkNnQ0FHbzJBZ0FnQVVFTVFRUWdDUnRxSWdFZ0FTZ0NBQ0FJYXpZQ0FDQUZJQWRySVFVZ0JpQUpheUVHSUFRaEFRd0JDd3NnQUVFQU5nSWNJQUJDQURjREVDQUFJQUFvQWdCQklISTJBZ0JCQUNBR1FRSkdEUUFhSUFJZ0FTZ0NCR3NMSVFRZ0EwRWdhaVFBSUFRTERRQWdBU2dDQUM4QkhrRWRSZ3NMQUNBQlFkeVlJRFlDQUFzUkFFRUlFQlVpQUVIY21DQTJBZ0FnQUFzbUFRRi9JQUFvQWdRZ0FTZ0NBQ0lCTHdFZVJnUi9JQUZCQVJBYklBQW9BZ2hHQlVFQUN3c1ZBQ0FCUWJpWUlEWUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFRzRtQ0FRb1FFTER3QWdBQ0FCSUFKQnQ0b0RFSU1UQ3dzQUlBRkJsSmdnTmdJQUN4RUFRUWdRRlNJQVFaU1lJRFlDQUNBQUN5b0FBa0FnQVNnQ0FFRitjVUgwS1VZaUFBMEFJQUlvQWdBaUFVVU5BQ0FCUWV5UEF4RFNBUXNnQUFzTEFDQUJRZkNYSURZQ0FBc1JBRUVJRUJVaUFFSHdseUEyQWdBZ0FBc1VBQ0FBSUFFZ0FrSHlqQU5CQmtIQktSQ1FDQXNOQUNBQUlBRkJ6SmNnRU5jQ0N3c0FJQUJCekpjZ0VOZ0NDd2tBSUFBUXJoVVFId3NVQUNBQUlBRWdBa0dqaXdOQkEwSERLUkNRQ0FzTkFDQUFJQUZCcUpjZ0VOY0NDd3NBSUFCQnFKY2dFTmdDQ3drQUlBQVFyeFVRSHdzVUFDQUFJQUVnQWtITWlRTkJBMEhDS1JDUUNBc05BQ0FBSUFGQmhKY2dFTmNDQ3dzQUlBQkJoSmNnRU5nQ0N3a0FJQUFRc0JVUUh3c1BBQ0FBSUFFZ0FrR0xqQU1RZ2hNTERRQWdBQ0FCUWVDV0lCRFhBZ3NMQUNBQVFlQ1dJQkRZQWdzSkFDQUFFTEVWRUI4TEVnQWdBQ0FCSUFKQnhKQURRY1lwRUlBVEN3MEFJQUFnQVVHOGxpQVExd0lMQ3dBZ0FFRzhsaUFRMkFJTENRQWdBQkN5RlJBZkMya0JBbjhqQUVFUWF5SURKQUFnQWlnQ0FDSUNSU0FCS0FJQUlnRkJ3U2xySWdSQkJVMUJBRUVCSUFSMFFUbHhHM0pGQkVBZ0F5QUFRUVJxUVlxT0F4QzRBaUFDSUFNUW5nRWdBeEFQR2dzZ0EwRVFhaVFBSUFGQmUzRkJ3U2xHSUFGQmZYRkJ4Q2xHY2dzTkFDQUFJQUZCbUpZZ0VOY0NDd3NBSUFCQm1KWWdFTmdDQ3drQUlBQVFzeFVRSHd0MEFRRi9Jd0JCRUdzaUF5UUFBa0FnQVNnQ0FDSUJRWk1wYTBFQ1NTQUJRZlFwYTBFQ1NYSWdBVUVGUm5JTkFDQUNLQUlBSWdKRkRRQWdBeUFBUVFScVFZaUhBeEM0QWlBQ0lBTVFuZ0VnQXhBUEdnc2dBMEVRYWlRQUlBRkJCVVlnQVVHVktXdEJmVXR5SUFGQjlpbHJRWDFMY2dzTkFDQUFJQUZCOUpVZ0VOY0NDd3NBSUFCQjlKVWdFTmdDQ3drQUlBQVF0QlVRSHd0ZUFRRi9Jd0JCRUdzaUF5UUFJQUlvQWdBaUFrVWdBU2dDQUNJQlFjRXBhMEVHVHlBQlFRVkhjWEpGQkVBZ0F5QUFRUVJxUWZLbkFSQzRBaUFDSUFNUW5nRWdBeEFQR2dzZ0EwRVFhaVFBSUFGQkJVY2dBVUhIS1d0QmVrbHhDdzBBSUFBZ0FVSFFsU0FRMXdJTEN3QWdBRUhRbFNBUTJBSUxDUUFnQUJDMUZSQWZDdzhBSUFBb0FnUWdBU2dDQUJDL0ZRc1ZBQ0FCUWF5VklEWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFR3NsU0FRMXdFTEN3QWdBVUdJbFNBMkFnQUxFUUJCQ0JBVklnQkJpSlVnTmdJQUlBQUxLUUFnQVM4QkJrRTJSZ1JBSUFBZ0FDZ0NIRUVCYWpZQ0hBc2dBQ0FBS0FJWVFRRnFOZ0lZUVFBTEdnQWdBQ0FETmdJVUlBQWdCRFlDRUNBQUlBVTJBb0FDUVFBTEx3RUJmeUFDS0FJQUlnSkZJQUFvQWdRaUF5QUJLQUlBSWdGR2NrVUVRQ0FDSUFCQkNHb1E0QUlMSUFFZ0EwWUxEZ0FnQUVFSWFoQVBHaUFBRUI4TENnQWdBRUVJYWhBUEdnc1lBQ0FCUWVTVUlEWUNBQ0FCUVFScUlBQkJCR29RelJVTElBRUJmMEVVRUJVaUFVSGtsQ0EyQWdBZ0FVRUVhaUFBUVFScUVNMFZJQUVMQ1FBZ0FCRE9GUkFmQ3dvQUlBRW9BZ0JCT0dvTEN3QWdBVUhBbENBMkFnQUxFUUJCQ0JBVklnQkJ3SlFnTmdJQUlBQUxDd0FnQVNnQ0FFSEVBR29MQ3dBZ0FVR2NsQ0EyQWdBTEVRQkJDQkFWSWdCQm5KUWdOZ0lBSUFBTEN3QWdBVUg0a3lBMkFnQUxDd0FnQUVINGt5QVEveElMQ3dBZ0FVSFVreUEyQWdBTEN3QWdBRUhVa3lBUS94SUxNUUVCZnlBQktBSUFJUUlqQUVFUWF5SUJKQUFnQVNBQ05nSU1JQUVnQUNnQ0JDQUJRUXhxRUtzRklBRkJFR29rQUFzVkFDQUJRYkNUSURZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVHd2t5QVFud01MRGdBZ0FDQUJRVGhCaEFJUTRna0xGUUFnQVVHTWt5QTJBZ0FnQVNBQUtBSUVOZ0lFQ3dzQUlBQkJqSk1nRU5jQkN3OEFJQUFnQVVIRUFFSHdBUkRpQ1FzVkFDQUJRZWlTSURZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVIb2tpQVExd0VMRGdBZ0FDQUJRUkJCaEFJUTRna0xGUUFnQVVIRWtpQTJBZ0FnQVNBQUtBSUVOZ0lFQ3dzQUlBQkJ4SklnRU5jQkN3NEFJQUFnQVVFY1FmQUJFT0lKQ3hVQUlBRkJvSklnTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUWFDU0lCRFhBUXNLQUNBQktBSUFLQUlNQ3dzQUlBRkIvSkVnTmdJQUN4RUFRUWdRRlNJQVFmeVJJRFlDQUNBQUN3b0FJQUVvQWdBb0FnZ0xDd0FnQVVIWWtTQTJBZ0FMRVFCQkNCQVZJZ0JCMkpFZ05nSUFJQUFMQ2dBZ0FTZ0NBQ2dDQkFzTEFDQUJRYlNSSURZQ0FBc1JBRUVJRUJVaUFFRzBrU0EyQWdBZ0FBc1VBQ0FBSUFFMkFnQWdBRUVJYWlBQ0VORUJHZ3RXQVFKL0EwQUNRQ0FCS0FJQUlnUWdBaWdDQUVZTkFDQUVJQU1vQWdCR0RRQWdBU0FCUVFocUlnUWdBU2dDQUNJRkVJb0NJQVZHQkg5QkFBVWdCQ0FCS0FJQUVJb0NDellDQUF3QkN3c2dBQ0FCRUpBSkdndGFBQ0FCS0FJQUx3RWVJUUVDZnlBQUtBSUVRWUFCYWtHT0toQm9CRUJCQUNBQlFSbHJRUU5KRFFFYUN5QUJRY0lDUmlBQlFjY0NSbklnQVVFWmF5SUFRUTVOUVFCQkFTQUFkRUhIL0FGeEczSUVmMEVCQlVFQUN3c0xGUUFnQVVHUWtTQTJBZ0FnQVNBQUtBSUVOZ0lFQ3dzQUlBQkJrSkVnRU5jQkMwa0JBWDhqQUVFUWF5SURKQUFDUUNBQktBSUFRUUZISWdFTkFDQUNLQUlBSWdKRkRRQWdBeUFBUVFScVFiZVJBeEM0QWlBQ0lBTVFuZ0VnQXhBUEdnc2dBMEVRYWlRQUlBRUxEUUFnQUNBQlFleVFJQkRYQWdzTEFDQUFRZXlRSUJEWUFnc0pBQ0FBRU9BVkVCOExoZ0VCQVg4akFFRVFheUlESkFBZ0FpZ0NBQ0VDQWtBQ1FBSkFJQUVvQWdBaUFVRUJhdzRGQWdFQkFRSUFDeUFCUVpNcGEwRUNTU0FCUWZRcGEwRUNTWElOQVFzZ0FrVU5BQ0FESUFCQkJHcEJqb1lERUxnQ0lBSWdBeENlQVNBREVBOGFDeUFEUVJCcUpBQWdBVUY3Y1VFQlJpQUJRWlVwYTBGOVMzSWdBVUgyS1d0QmZVdHlDdzBBSUFBZ0FVSElrQ0FRMXdJTEN3QWdBRUhJa0NBUTJBSUxDUUFnQUJEaEZSQWZDeFFBSUFBZ0FTQUNRWldFQTBFR1FjRXBFSkFJQ3cwQUlBQWdBVUdra0NBUTF3SUxDd0FnQUVHa2tDQVEyQUlMQ1FBZ0FCRGlGUkFmQzRZQkFRRi9Jd0JCRUdzaUF5UUFJQUlvQWdBaEFnSkFBa0FDUUNBQktBSUFJZ0ZCQVdzT0JRSUJBUUVDQUFzZ0FVR1RLV3RCQWtrZ0FVSDBLV3RCQWtseURRRUxJQUpGRFFBZ0F5QUFRUVJxUVl1bUFSQzRBaUFDSUFNUW5nRWdBeEFQR2dzZ0EwRVFhaVFBSUFGQmxTbHJRWDFMSUFGQjlpbHJRWDFMY2lBQlFYdHhRUUZHY2dzTkFDQUFJQUZCZ0pBZ0VOY0NDd3NBSUFCQmdKQWdFTmdDQ3drQUlBQVE0eFVRSHd0d0FRRi9Jd0JCRUdzaUF5UUFJQUlvQWdBaUFrVWdBU2dDQUNJQlFjRXBhMEVGVHlBQlFRRkdJQUZCQkV0eWNYSkZCRUFnQXlBQVFRUnFRYitrQVJDNEFpQUNJQU1RbmdFZ0F4QVBHZ3NnQTBFUWFpUUFJQUZCZTNGQkFFY2dBVUYrY1VFQ1IzRWdBVUhCS1d0QkJFdHhDdzBBSUFBZ0FVSGNqeUFRMXdJTEN3QWdBRUhjanlBUTJBSUxDUUFnQUJEbEZSQWZDdzBBSUFBZ0FVRzRqeUFRMXdJTEN3QWdBRUc0anlBUTJBSUxDUUFnQUJEbUZSQWZDdzBBSUFBZ0FVR1VqeUFRMXdJTHBnRUJCSDhqQUVFZ2F5SUNKQUFnQWlBQUtBSWdOZ0lZSUFJZ0FDa0NHRGNERUNBQ0lBQXBBaEEzQXdnZ0FTZ0NBQ0VCSXdCQkVHc2lCQ1FBSUFFUUhDQUJJQUVvQWd4QkFXb2lBellDRENBRUlBTTJBZ2dnQVVHTUFXb2lBeERMQkNJRklBRW9BZ2dnQkNnQ0NDQUNRUWhxSUFBckF5Z2dBQ2dDTUJETERSb2dBeUFGRUNnZ0F5QURLQUlZUVFGcU5nSVlJQVVoQUNBRVFSQnFKQUFnQWtFZ2FpUUFJQUFMQ3dBZ0FFR1VqeUFRMkFJTENRQWdBQkRvRlJBZkN3OEFJQUFnQVNBQ1FhdW5BUkNDRXdzTkFDQUFJQUZCOEk0Z0VOY0NDd3NBSUFCQjhJNGdFTmdDQ3drQUlBQVE2UlVRSHd0SUFDQUNLQUlBSVFBZ0FFVWdBU2dDQUNJQlFjRXBheUlDUVFWTlFRQkJBU0FDZEVFNWNSdHlSUVJBSUFCQm82a0JFTklCQ3lBQlFYdHhRY0VwUmlBQlFYMXhRY1FwUm5JTEN3QWdBVUhNamlBMkFnQUxFUUJCQ0JBVklnQkJ6STRnTmdJQUlBQUxKd0FDUUNBQktBSUFRY0lwUmlJQURRQWdBaWdDQUNJQlJRMEFJQUZCZ0k4REVOSUJDeUFBQ3dzQUlBRkJxSTRnTmdJQUN4RUFRUWdRRlNJQVFhaU9JRFlDQUNBQUN3OEFJQUFnQVNBQ1FaNm5BUkNERXdzTEFDQUJRWVNPSURZQ0FBc1JBRUVJRUJVaUFFR0VqaUEyQWdBZ0FBdGdBUUYvSUFNb0FnQWhCQUpBSUFFZ0FpZ0NBQ2dDQUJDMENDSUFSUTBBSUFCQkJHb2hBU0FBS0FJQUlRTURRQ0FCSUFOR0RRRWdBeWdDRUVIMktXdEJCa2tFUUVFQkR3VWdBeEJNSVFNTUFRc0FDd0FMSUFSQjBmb0hFTklCUVFBTEN3QWdBVUhnalNBMkFnQUxFUUJCQ0JBVklnQkI0STBnTmdJQUlBQUxKd0FDUUNBQktBSUFRZlVwUmlJQURRQWdBaWdDQUNJQlJRMEFJQUZCcDRnREVOSUJDeUFBQ3dzQUlBRkJ2STBnTmdJQUN4RUFRUWdRRlNJQVFieU5JRFlDQUNBQUN5Y0FBa0FnQVNnQ0FFSDBLVVlpQUEwQUlBSW9BZ0FpQVVVTkFDQUJRZk9IQXhEU0FRc2dBQXNMQUNBQlFaaU5JRFlDQUF0SUFRRi9Jd0JCSUdzaUFpUUFJQUlnQUNnQ0lEWUNHQ0FDSUFBcEFoZzNBeEFnQWlBQUtRSVFOd01JSUFFb0FnQWdBa0VJYWlBQVFTUnFFT29WSVFBZ0FrRWdhaVFBSUFBTEVRQkJDQkFWSWdCQm1JMGdOZ0lBSUFBTEZBQWdBQ0FCSUFKQnd1WUZRWDVCeFNrUWtBZ0xEUUFnQUNBQlFmU01JQkRYQWdzTEFDQUFRZlNNSUJEWUFnc0pBQ0FBRU9zVkVCOExXZ0VDZnlNQVFSQnJJZ0lrQUNBQUtBSUVRU0FnQVNnQ0FDSUJJQUpCREdvUTNRSWhBeUFBS0FJSVFRaHFJUUFDZnlBRFJRUkFJQUFnQWlnQ0RDZ0NBQkFPREFFTElBQWdBUkFoQzBIMzhBd1FEaG9nQWtFUWFpUUFDeFVBSUFGQjBJd2dOZ0lBSUFFZ0FDa0NCRGNDQkFzTEFDQUFRZENNSUJDaEFRc1JBQ0FBSUFFZ0FpQURRYUtDREJDR0V3c1ZBQ0FCUWV5TElEWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSHNpeUFRMXdFTER3QWdBQ0FCSUFKQjdJTU1FSWNUQ3hVQUlBRkJ5SXNnTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUWNpTElCRFhBUXUyQVFFQmZ5TUFRU0JySWdBa0FDQURLQUlBSVFRZ0FTQUNLQUlBSWdNb0FnQVFwUVloQWlBQklBTW9BZ0FRdEFnaEFTQUFRUVUyQWdnQ1FBSkFJQUlnQUVFSWFoREFBeUFDUVFScVJnMEFJQUJCcWlrMkFod2dBU0FBUVJ4cUVNQURJZ0lnQVVFRWFrY05BQ0FBUWFrcE5nSVlRUUVoQXlBQklBQkJHR29Rd0FNZ0FrY05BVUVBSVFNZ0JFVU5BU0FFSUFCQkNHcEIxNFFERUJRaUFSQ2VBU0FCRUE4YURBRUxRUUVoQXdzZ0FFRWdhaVFBSUFNTEN3QWdBVUdraXlBMkFnQUxFUUJCQ0JBVklnQkJwSXNnTmdJQUlBQUxSQUFqQUVFUWF5SUFKQUFDUUNBQktBSUFRWDV4UVFSR0lnRU5BQ0FDS0FJQUlnSkZEUUFnQWlBQVFjK0ZBeEFVSWdJUW5nRWdBaEFQR2dzZ0FFRVFhaVFBSUFFTEN3QWdBVUdBaXlBMkFnQUxFUUJCQ0JBVklnQkJnSXNnTmdJQUlBQUxDd0FnQVVIY2lpQTJBZ0FMRVFCQkNCQVZJZ0JCM0lvZ05nSUFJQUFMQ3dBZ0FVRzRpaUEyQWdBTEVRQkJDQkFWSWdCQnVJb2dOZ0lBSUFBTERRQWdBU2dDQUVFUGEwRUNTUXNMQUNBQlFaU0tJRFlDQUFzUkFFRUlFQlVpQUVHVWlpQTJBZ0FnQUFzU0FDQUJLQUlBSWdCQkNrWWdBRUVVUm5JTEN3QWdBVUh3aVNBMkFnQUxFUUJCQ0JBVklnQkI4SWtnTmdJQUlBQUxDd0FnQVVITWlTQTJBZ0FMRVFCQkNCQVZJZ0JCeklrZ05nSUFJQUFMRlFBZ0FTZ0NBQ0lBUVJWSlFZQ3d3QUFnQUhaeEN3c0FJQUZCcUlrZ05nSUFDeEVBUVFnUUZTSUFRYWlKSURZQ0FDQUFDd3NBSUFGQmhJa2dOZ0lBQ3hFQVFRZ1FGU0lBUVlTSklEWUNBQ0FBQ3dzQUlBRkI0SWdnTmdJQUN4RUFRUWdRRlNJQVFlQ0lJRFlDQUNBQUN3c0FJQUFnQVVFRWFoQXVDdzBBSUFBZ0FVRzhpQ0FRdGdVTEN3QWdBRUc4aUNBUXR3VUxGUUFnQVNnQ0FDSUFRUlpKUVlLSXdBRWdBSFp4Q3dzQUlBRkJtSWdnTmdJQUN4RUFRUWdRRlNJQVFaaUlJRFlDQUNBQUN6RUJBWDlCQVNFQ0FrQWdBU2dDQUNJQlFROXJRUUZOQkVBZ0FDZ0NCQzBBQUEwQkN5QUJRUUpyUVExSklRSUxJQUlMRlFBZ0FVSDBoeUEyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCOUljZ0VOY0JDd3NBSUFFb0FnQkI3QUJHQ3dzQUlBRkIwSWNnTmdJQUN4RUFRUWdRRlNJQVFkQ0hJRFlDQUNBQUN3MEFJQUFvQWdRZ0FTZ0NBRVlMRlFBZ0FVR3NoeUEyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCckljZ0VOY0JDeEVBSUFBZ0FTQUNJQU5Cb1lFTUVJWVRDeFVBSUFGQmlJY2dOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRWWlISUJEWEFRc1BBQ0FBSUFFZ0FrR2tnd3dRaHhNTEZRQWdBVUhraGlBMkFnQWdBU0FBS0FJRU5nSUVDd3NBSUFCQjVJWWdFTmNCQ3cwQUlBRW9BZ0JCZm5GQkJFWUxDd0FnQVVIQWhpQTJBZ0FMRVFCQkNCQVZJZ0JCd0lZZ05nSUFJQUFMQ2dBZ0FTZ0NBRUVIUmdzTEFDQUJRWnlHSURZQ0FBc1JBRUVJRUJVaUFFR2NoaUEyQWdBZ0FBc0tBQ0FCS0FJQVFRWkdDd3NBSUFGQitJVWdOZ0lBQ3hFQVFRZ1FGU0lBUWZpRklEWUNBQ0FBQzU4Q0FRbC9Jd0JCRUdzaUJDUUFJQUVvQWdBaUJTZ0NJQ0VMSUFJb0FnQWhCaUFGS0FJY0lRRURRQ0FCSUF0SEJFQWdCaUFCS0FJQVJnUkFJQUFvQWdRaEFpQUVJQVVvQWdBMkFnd2dCQ0FHS0FJQU5nSUlJQVJCREdvaEJ5QUVRUWhxSVFnQ1FDQUNLQUlFSWdNZ0FpZ0NDRWtFUUNBRElBY29BZ0EyQWdBZ0F5QUlLQUlBTmdJRUlBSWdBMEVJYWpZQ0JBd0JDeU1BUVNCcklna2tBQ0FKUVFocUlBSWdBaWdDQkNBQ0tBSUFhMEVEZFVFQmFoQ2FEaUFDS0FJRUlBSW9BZ0JyUVFOMUlBSkJDR29RMEFvaUF5Z0NDQ0lLSUFjb0FnQTJBZ0FnQ2lBSUtBSUFOZ0lFSUFNZ0NrRUlhallDQ0NBQ0lBTVFvd1FnQXhEa0RTQUpRU0JxSkFBZ0FpZ0NCQm9MQ3lBQlFRUnFJUUVNQVFzTElBUkJFR29rQUFzVkFDQUJRYVNGSURZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVHa2hTQVExd0VMRlFBZ0FVR0FoU0EyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCZ0lVZ0VOY0JDeFVBSUFGQjNJUWdOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRZHlFSUJEWEFRc0xBQ0FCUWJpRUlEWUNBQXNSQUVFSUVCVWlBRUc0aENBMkFnQWdBQXNWQUNBQlFaU0VJRFlDQUNBQklBQW9BZ1EyQWdRTEN3QWdBRUdVaENBUTF3RUxDd0FnQVVId2d5QTJBZ0FMRVFCQkNCQVZJZ0JCOElNZ05nSUFJQUFMREFBZ0FDQUJRWXdqRUpFSUN3MEFJQUFnQVVITWd5QVExZ0VMQ3dBZ0FFSE1neUFRNVFFTERBQWdBQ0FCUVlZakVKRUlDdzBBSUFBZ0FVR29neUFRMWdFTEN3QWdBRUdvZ3lBUTVRRUxtd0VCQkg4akFFSFFBV3NpQXlRQUlBQW9BZ3hCQWhEaUF5RUZJQU5CRUdvaUFpQUFLQUlFSWdRb0FnQkJjaUFBS0FJSUVCQWdBeUFFS0FJQUlBVVFOeUFDSUFNUUVob2dBa0hRbGdvUURob2dBaUFFS0FJQVFZQURha0VjSUFBb0Fnd1Fqd0VRRGhvZ0FrR3BvZ01RRGhvZ0FrSEl1d3dRRGhvZ0FpQUJFQklhSUFNb0Fzd0JJUUFnQXhBUEdpQUNFQkVnQTBIUUFXb2tBQ0FBQ3cwQUlBQWdBVUdFZ3lBUTFnRUxDd0FnQUVHRWd5QVE1UUVMRFFBZ0FDQUJRYy9RREJEakNRc05BQ0FBSUFGQjRJSWdFTllCQ3dzQUlBQkI0SUlnRU9VQkN3MEFJQUFnQVVIUjB3d1E0d2tMRFFBZ0FDQUJRYnlDSUJEV0FRc0xBQ0FBUWJ5Q0lCRGxBUXNOQUNBQUlBRkJzZGtNRU9NSkN3MEFJQUFnQVVHWWdpQVExZ0VMQ3dBZ0FFR1lnaUFRNVFFTERRQWdBQ0FCUWZYYURCRGpDUXNOQUNBQUlBRkI5SUVnRU5ZQkN3c0FJQUJCOUlFZ0VPVUJDdzBBSUFBZ0FVR1gzQXdRNUFrTERRQWdBQ0FCUWRDQklCRFdBUXNMQUNBQVFkQ0JJQkRsQVFzTkFDQUFJQUZCM2RrTUVPUUpDdzBBSUFBZ0FVR3NnU0FRMWdFTEN3QWdBRUdzZ1NBUTVRRUxEUUFnQUNBQlFZZlJEQkRrQ1FzTkFDQUFJQUZCaUlFZ0VOWUJDd3NBSUFCQmlJRWdFT1VCQ3cwQUlBQWdBVUd4MlF3UTVBa0xEUUFnQUNBQlFlU0FJQkRXQVFzTEFDQUFRZVNBSUJEbEFRc01BQ0FBSUFGQjdpQVFrUWdMRFFBZ0FDQUJRY0NBSUJEV0FRc0xBQ0FBUWNDQUlCRGxBUXNNQUNBQUlBRkJzeUlRa1FnTERRQWdBQ0FCUVp5QUlCRFdBUXNMQUNBQVFaeUFJQkRsQVFzTUFDQUFJQUZCOFNBUWtRZ0xEUUFnQUNBQlFmai9IeERXQVFzTEFDQUFRZmovSHhEbEFRdWtBUUVFZnlNQVFkQUJheUlDSkFBZ0FDZ0NEQ2dDQkNnQ0FDRUZJQUpCRUdvaUF5QUFLQUlFSWdRb0FnQkJjaUFBS0FJSUVCQWdBaUFFS0FJQVFkY2dRZG9nSUFWQnlTSkdHeEEzSUFNZ0FoQVNHaUFEUWRDV0NoQU9HaUFESUFRb0FnQkJnQU5xUVJ3Z0FDZ0NEQ2dDQkNnQ0FCQ1BBUkFPR2lBRFFiSFpEQkFPR2lBRElBRVFFaG9nQWlnQ3pBRWhBQ0FDRUE4YUlBTVFFU0FDUWRBQmFpUUFJQUFMRFFBZ0FDQUJRZFQvSHhEV0FRc0xBQ0FBUWRUL0h4RGxBUXVhQVFFRGZ5TUFRZEFCYXlJREpBQWdBMEVRYWlJQ0lBQW9BZ1FpQkNnQ0FFRnlJQUFvQWdnUUVDQUNRYVRDQ2hBT0dpQURJQVFvQWdBb0FnQW9BZ0FRZ1FJZ0FpQURFQklhSUFKQjU1WUtFQTRhSUFJZ0JDZ0NBRUdBQTJwQkhDQUFLQUlNS0FJRUtBSUFFSThCRUE0YUlBSkJzZGtNRUE0YUlBSWdBUkFTR2lBREtBTE1BU0VBSUFNUUR4b2dBaEFSSUFOQjBBRnFKQUFnQUFzTkFDQUFJQUZCc1A4ZkVOWUJDd3NBSUFCQnNQOGZFT1VCQ3hBQUlBQWdBVUcwMEF4Qnl5SVE5Z1lMRlFBZ0FVR00veDgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCalA4ZkVLRUJDeEFBSUFBZ0FVSGgxUXhCc0NJUTlnWUxGUUFnQVVIby9oODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkI2UDRmRUtFQkN4QUFJQUFnQVVITXVReEJyU0lRdFFNTEZRQWdBVUhFL2g4MkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQnhQNGZFS0VCQ3cwQUlBQWdBVUdnL2g4UTZ3SUxDd0FnQUVHZy9oOFE3QUlMQ1FBZ0FCQ2VGaEFmQ3cwQUlBQWdBVUg4L1I4UTZ3SUxDd0FnQUVIOC9SOFE3QUlMQ1FBZ0FCQ2ZGaEFmQ3hBQUlBQWdBVUhndUF4QnFTSVF0UU1MRlFBZ0FVSFkvUjgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCMlAwZkVLRUJDeEFBSUFBZ0FVR2owd3hCcFNJUXRRTUxGUUFnQVVHMC9SODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJ0UDBmRUtFQkN3MEFJQUFnQVVIOHp3d1FrZ2dMRFFBZ0FDQUJRWkQ5SHhEV0FRc0xBQ0FBUVpEOUh4RGxBUXNOQUNBQUlBRkI1Ym9NRUpJSUN3MEFJQUFnQVVIcy9COFExZ0VMQ3dBZ0FFSHMvQjhRNVFFTERRQWdBQ0FCUWIvUkRCQ1NDQXNOQUNBQUlBRkJ5UHdmRU5ZQkN3c0FJQUJCeVB3ZkVPVUJDeEFBSUFBZ0FVR0wxQXhCaWlJUXRRTUxGUUFnQVVHay9CODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJwUHdmRUtFQkN4QUFJQUFnQVVHR3VBeEJoeUlRdFFNTENRQWdBQkNRQ3hBZkN4VUFJQUZCZ1B3Zk5nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFZRDhIeENoQVFzUUFDQUFJQUZCaE5rTVFZUWlFTFVEQ3hVQUlBRkIzUHNmTmdJQUlBRWdBQ2tDQkRjQ0JBc0xBQ0FBUWR6N0h4Q2hBUXNOQUNBQUlBRkJ1UHNmRU9zQ0N3c0FJQUJCdVBzZkVPd0NDd2tBSUFBUW9SWVFId3NOQUNBQUlBRkJsUHNmRU9zQ0N3c0FJQUJCbFBzZkVPd0NDd2tBSUFBUW94WVFId3NOQUNBQUlBRkI4UG9mRU9zQ0N3c0FJQUJCOFBvZkVPd0NDd2tBSUFBUXBCWVFId3NOQUNBQUlBRkJ6UG9mRU9zQ0N3c0FJQUJCelBvZkVPd0NDd2tBSUFBUXBSWVFId3NOQUNBQUlBRkJxUG9mRU9zQ0N3c0FJQUJCcVBvZkVPd0NDd2tBSUFBUXBoWVFId3NOQUNBQUlBRkJoUG9mRU9zQ0N3c0FJQUJCaFBvZkVPd0NDd2tBSUFBUXB4WVFId3NWQUNBQlFlRDVIellDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUhnK1I4UW9RRUxGUUFnQVVHOCtSODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJ2UGtmRUtFQkN4VUFJQUZCbVBrZk5nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFaajVIeENoQVFzVkFDQUJRZlQ0SHpZQ0FDQUJJQUFwQWdRM0FnUUxDd0FnQUVIMCtCOFFvUUVMRlFBZ0FVSFErQjgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCMFBnZkVLRUJDdzBBSUFBZ0FVR3MrQjhRNndJTEN3QWdBRUdzK0I4UTdBSUxDUUFnQUJDcUZoQWZDeFVBSUFGQmlQZ2ZOZ0lBSUFFZ0FDa0NCRGNDQkFzTEFDQUFRWWo0SHhDaEFRc1ZBQ0FCUWVUM0h6WUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFSGs5eDhRb1FFTEZRQWdBVUhBOXg4MkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQndQY2ZFS0VCQ3cwQUlBQWdBVUdjOXg4UTZ3SUxDd0FnQUVHYzl4OFE3QUlMQ1FBZ0FCQ3RGaEFmQ3hBQUlBQWdBVUg0MUF4QjJTRVF0UU1MRlFBZ0FVSDQ5aDgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCK1BZZkVLRUJDeEFBSUFBZ0FVSHQxZ3hCMWlFUXRRTUxGUUFnQVVIVTloODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkIxUFlmRUtFQkN3MEFJQUFnQVVHdzloOFE2d0lMQ3dBZ0FFR3c5aDhRN0FJTENRQWdBQkN2RmhBZkN3MEFJQUFnQVVHTTloOFE2d0lMQ3dBZ0FFR005aDhRN0FJTENRQWdBQkN3RmhBZkN3MEFJQUFnQVVIbzlSOFExZ0VMQ3dBZ0FFSG85UjhRNVFFTERRQWdBQ0FCUWNUMUh4RFdBUXNMQUNBQVFjVDFIeERsQVFzUUFDQUFJQUZCcHRZTVFha2hFUFlHQ3hVQUlBRkJvUFVmTmdJQUlBRWdBQ2tDQkRjQ0JBc0xBQ0FBUWFEMUh4Q2hBUXNRQUNBQUlBRkJ5OWNNUWFNaEVMVURDeFVBSUFGQi9QUWZOZ0lBSUFFZ0FDa0NCRGNDQkFzTEFDQUFRZnowSHhDaEFRc1FBQ0FBSUFGQm85c01RWkVoRUxVREN4VUFJQUZCMlBRZk5nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFkajBIeENoQVFzTkFDQUFJQUZCMGRNTUVKSUlDdzBBSUFBZ0FVRzA5QjhRMWdFTEN3QWdBRUcwOUI4UTVRRUxEUUFnQUNBQlFjL1FEQkNTQ0FzTkFDQUFJQUZCa1BRZkVOWUJDd3NBSUFCQmtQUWZFT1VCQ3hBQUlBQWdBVUgrMnd4Qmh5RVE5Z1lMRlFBZ0FVSHM4eDgyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCN1BNZkVLRUJDeEFBSUFBZ0FVR0MyZ3hCOXlBUTlnWUxGUUFnQVVISTh4ODJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJ5UE1mRUtFQkM4d1FBUWgvSXdCQmdBRnJJZ1lrQUNBR0lBQW9BaUEyQW5nZ0JpQUFLUUlZTndOd0lBWWdBQ2tDRURjRGFDQUdRY2dBYWlJSklBRWdCa0VvYWlBQVFTUnFFRllRN3djZ0JrRVFhaUlJUW9DQWdJQXdOd0lRSUFnZ0NEWUNEQ01BUVRCcklnSWtBQ0FJSUFCQlFHc2lCU2dDRUJDOERTQUNRUUEyQWlnZ0FpQUZOZ0lrSUFJZ0FVSElJR28yQWlBZ0FpQUJRZHlBQVdvb0FnQkJBV3MyQWl3Q1FDQUNRU0JxRUxVQkJFQWdBa0VnYWhCYUlnUW9BdGdCSWdNZ0JDZ0MzQUZCR0d4cUlRUURRQ0FESUFSR0JFQWdCU2dDRENJRUlBVW9BaEJCQW5ScUlRVURRQ0FFSUFWR0JFQWdBa0VnYWhCYUlnUW9Bc2dDSWdNZ0JDZ0N6QUpCR0d4cUlRUURRQ0FESUFSR0RRWWdBaUFCSUFNUVpoQ2tBellDRUNBSUlBSkJFR29Rd0FRZ0EwRVlhaUVEREFBTEFBc2dBaUFDUVNCcUVGb2lBMEhZQW1vMkFoQWdCQ2dDQUNFSElBSkJBRFlDR0NBQ0lBYzJBaFFnQWlBRFFad0phaWdDQUVFQmF6WUNIQUpBSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJSEtBSmdJZ01nQnlnQ1pFRVliR29oQndOQUlBTWdCMFlOQVNBQ0lBRWdBeEJtRUtRRE5nSU1JQWdnQWtFTWFoREFCQ0FEUVJocUlRTU1BQXNBQ3lBQ1FTQnFFRm9oQXlBQ0lBUW9BZ0EyQWhBZ0F5QUNRUkJxRU1ZRFJRUkFJQUlnQVNBRUtBSUFFSmNCTmdJUUlBZ2dBa0VRYWhEQUJBc2dBaUFDUVNCcUVGb2lBMEdnQ1dvMkFoQWdCQ2dDQUNFSElBSkJBRFlDR0NBQ0lBYzJBaFFnQWlBRFFlUVBhaWdDQUVFQmF6WUNIQUpBSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJSEtBSmdJZ01nQnlnQ1pFRVliR29oQndOQUlBTWdCMFlOQVNBQ0lBRWdBeEJtRUtRRE5nSU1JQWdnQWtFTWFoREFCQ0FEUVJocUlRTU1BQXNBQ3lBRVFRUnFJUVFNQUFzQUJTQUNJQUVnQXhCbUVLUUROZ0lRSUFnZ0FrRVFhaERBQkNBRFFSaHFJUU1NQVFzQUN3QUxJQVVvQWd3aUJDQUZLQUlRUVFKMGFpRUZBMEFnQkNBRlJnUkFJQUpCSUdvUXRRRkZEUUlnQWtFZ2FoQmFJZ1FvQXNnQ0lnTWdCQ2dDekFKQkdHeHFJUVFEUUNBRElBUkdEUU1nQWlBQklBTVFaaENrQXpZQ0VDQUlJQUpCRUdvUXdBUWdBMEVZYWlFRERBQUxBQVVnQWlBQklBUW9BZ0FRbHdFMkFoQWdDQ0FDUVJCcUVNQUVBa0FnQWtFZ2FoQzFBVVVOQUNBQ0lBSkJJR29RV2lJRFFhQUphallDRUNBRUtBSUFJUWNnQWtFQU5nSVlJQUlnQnpZQ0ZDQUNJQU5CNUE5cUtBSUFRUUZyTmdJY0lBSkJFR29RdEFGRkRRQWdBa0VRYWhDc0FTSUhLQUpnSWdNZ0J5Z0NaRUVZYkdvaEJ3TkFJQU1nQjBZTkFTQUNJQUVnQXhCbUVLUUROZ0lNSUFnZ0FrRU1haERBQkNBRFFSaHFJUU1NQUFzQUN5QUVRUVJxSVFRTUFRc0FDd0FMSUFKQk1Hb2tBQ0FHUVFBMkFnZ2dCa0lBTndJQUl3QkJNR3NpQWlRQUlBWWdBQ2dDWEJDcUVpQUNRUUEyQWlnZ0FpQUFRZGdBYWpZQ0pDQUNJQUZCeUNCcU5nSWdJQUlnQVVIY2dBRnFLQUlBUVFGck5nSXNBa0FnQWtFZ2FoQzFBUVJBSUFKQklHb1FXaUlFS0FMWUFTSURJQVFvQXR3QlFSaHNhaUVFQTBBZ0F5QUVSZ1JBSUFBb0FsZ2lCQ0FBS0FKY1FRSjBhaUVBQTBBZ0FDQUVSZ1JBSUFKQklHb1FXaUlBS0FMSUFpSURJQUFvQXN3Q1FSaHNhaUVBQTBBZ0FDQURSZzBHSUFJZ0FTQURFR1lRaEFJMkFoQWdCaUFDUVJCcUVMUUZJQU5CR0dvaEF3d0FDd0FMSUFJZ0FrRWdhaEJhSWdOQjJBSnFOZ0lRSUFRb0FnQWhCU0FDUVFBMkFoZ2dBaUFGTmdJVUlBSWdBMEdjQ1dvb0FnQkJBV3MyQWh3Q1FDQUNRUkJxRUxRQlJRMEFJQUpCRUdvUXJBRWlCU2dDWUNJRElBVW9BbVJCR0d4cUlRVURRQ0FESUFWR0RRRWdBaUFCSUFNUVpoQ0VBallDRENBR0lBSkJER29RdEFVZ0EwRVlhaUVEREFBTEFBc2dBa0VnYWhCYUlRTWdBaUFFS0FJQU5nSVFJQU1nQWtFUWFoREdBMFVFUUNBQ0lBRWdCQ2dDQUJEd0JUWUNFQ0FHSUFKQkVHb1F0QVVMSUFJZ0FrRWdhaEJhSWdOQm9BbHFOZ0lRSUFRb0FnQWhCU0FDUVFBMkFoZ2dBaUFGTmdJVUlBSWdBMEhrRDJvb0FnQkJBV3MyQWh3Q1FDQUNRUkJxRUxRQlJRMEFJQUpCRUdvUXJBRWlCU2dDWUNJRElBVW9BbVJCR0d4cUlRVURRQ0FESUFWR0RRRWdBaUFCSUFNUVpoQ0VBallDRENBR0lBSkJER29RdEFVZ0EwRVlhaUVEREFBTEFBc2dCRUVFYWlFRURBQUxBQVVnQWlBQklBTVFaaENFQWpZQ0VDQUdJQUpCRUdvUXRBVWdBMEVZYWlFRERBRUxBQXNBQ3lBQUtBSllJZ1FnQUNnQ1hFRUNkR29oQUFOQUlBQWdCRVlFUUNBQ1FTQnFFTFVCUlEwQ0lBSkJJR29RV2lJQUtBTElBaUlESUFBb0Fzd0NRUmhzYWlFQUEwQWdBQ0FEUmcwRElBSWdBU0FERUdZUWhBSTJBaEFnQmlBQ1FSQnFFTFFGSUFOQkdHb2hBd3dBQ3dBRklBSWdBU0FFS0FJQUVQQUZOZ0lRSUFZZ0FrRVFhaEMwQlFKQUlBSkJJR29RdFFGRkRRQWdBaUFDUVNCcUVGb2lBMEdnQ1dvMkFoQWdCQ2dDQUNFRklBSkJBRFlDR0NBQ0lBVTJBaFFnQWlBRFFlUVBhaWdDQUVFQmF6WUNIQ0FDUVJCcUVMUUJSUTBBSUFKQkVHb1FyQUVpQlNnQ1lDSURJQVVvQW1SQkdHeHFJUVVEUUNBRElBVkdEUUVnQWlBQklBTVFaaENFQWpZQ0RDQUdJQUpCREdvUXRBVWdBMEVZYWlFRERBQUxBQXNnQkVFRWFpRUVEQUVMQUFzQUN5QUNRVEJxSkFBZ0FTZ0NBQ0VCSXdCQkVHc2lBaVFBSUFFUUhDQUJJQUVvQWd4QkFXb2lBRFlDRENBQ0lBQTJBZ2dqQUVFUWF5SUFKQUFnQVVHTUFXb2lBeEN6QlNFRUlBSW9BZ2doQlNBQktBSUlJUUVnQUNBSVFReHFOZ0lJSUFnb0Fnd2hCeUFBSUFZMkFnQWdBQ0FISUFoSE9nQU1JQUJCQVRvQUJDQUVJQUVnQlNBR1FlZ0FhaUFKSUFCQkNHb2dBQkRCQnhvZ0F5QUVFQ2dnQXlBREtBSVlRUUZxTmdJWUlBQkJFR29rQUNBRUlRQWdBa0VRYWlRQUlBWVF3Z2dnQ0JDc0F5QUdRWUFCYWlRQUlBQUxFQUFnQUNBQlFkTFNERUgwSUJEMkJnc1ZBQ0FCUWFUekh6WUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFR2s4eDhRb1FFTFNBRURmeUFBS0FJRUlRSWdBQ2dDRENBQUtBSUlJZ05CQVhWcUlnUWdBRUVRYWlBQVFTUnFJQUJCOEFCcUlBRWdBMEVCY1FSL0lBUW9BZ0FnQW1vb0FnQUZJQUlMRVFrQUN3NEFJQUJCQkdvUTZBRWdBQkFmQ3dvQUlBQkJCR29RNkFFTEdBQWdBVUdBOHg4MkFnQWdBVUVFYWlBQVFRUnFFTFFXQ3lFQkFYOUJ2QUVRRlNJQlFZRHpIellDQUNBQlFRUnFJQUJCQkdvUXRCWWdBUXNKQUNBQUVMVVdFQjhMRFFBZ0FDQUJRZHp5SHhEV0FRc0xBQ0FBUWR6eUh4RGxBUXNOQUNBQUlBRkJ1UElmRU5ZQkN3c0FJQUJCdVBJZkVPVUJDdzBBSUFBZ0FVR1U4aDhRMWdFTEN3QWdBRUdVOGg4UTVRRUxEUUFnQUNBQlFmRHhIeERyQWdzTEFDQUFRZkR4SHhEc0Fnc0pBQ0FBRUxZV0VCOExEUUFnQUNBQlFjenhIeERyQWdzTEFDQUFRY3p4SHhEc0Fnc0pBQ0FBRUxjV0VCOExEUUFnQUNBQlFhanhIeERyQWdzTEFDQUFRYWp4SHhEc0Fnc0pBQ0FBRUxnV0VCOExEUUFnQUNBQlFZVHhIeERyQWdzTEFDQUFRWVR4SHhEc0Fnc0pBQ0FBRUxvV0VCOEx5UVFCQkg4akFFSFFBMnNpQ0NRQUlBZ2dBellDekFNQ1FDQUFLQUlRQkVBZ0FFRWthaUFJUWN3RGFoRFVCVVVFUUVFQUlRQU1BZ3NnQUVFUWFpRURJQUFvQWdCQmdBTnFRUXdnQ0NnQ3pBTVFqd0VoQ2lBQUtBSUFRWUFEYWtFY0lBUW9BZ1FvQWdBUWp3RWhCQ0FJUVlnQ2FpQUFLQUlBUVhJZ0J4QVFBa0FnQVVFQVNBUkFJQWhCK0FGcVFkejREQkFVR2d3QkN5QUlRZmdCYWlBQUtBSUFJQUVRTndzZ0NFR0lBbW9pQVNBSVFmZ0JhaUlMRUJJYUlBRWdBaEFPR2lBQlFmZndEQkFPR2lBSVFlZ0JhaUlDSUFZUTRRTWdBU0FDRUJJYUlBRkI1SXdLRUE0YUlBaEIyQUZxSWdrZ0JSRGhBeUFCSUFrUUVob2dBVUdmbGdvUURob2dBU0FFRUE0YUlBRkIvSmNJRUE0YUlBRkJ4dWtHRUE0YUlBRWdCaWdDS0JBaEdpQUJRYURDQ1JBT0dpQUlRY2dCYWlJRUlBY1E0UU1nQVNBRUVCSWFJQUZCbU9rR0VBNGFJQUVnQXhDekJ5SUFRWVdZQ2hBT0dpQUFJQW9RRGhvZ0FFSDhsd2dRRGhvZ0FDZ0N2QUVoQUNBRUVBOGFJQWtRRHhvZ0FoQVBHaUFMRUE4YUlBRVFFUXdCQ3lBSUlBY29BaWcyQXZnQklBQkJCR29nQ0VINEFXb1FtUUVoQmlBSUlBTTJBaFFnQ0NBQ05nSVFJQWdnQVRZQ0RDQUlJQUEyQWdoQkFDRUFJQWhCQURZQ0JDQUlRYjhRTmdJQUlBaEJHR29nQkJDMEFob2dDRUVzYWlBRkVNSUJJQWhCK0FCcUlBY1F3Z0ZCeUFFUUZTSUJRWVR4SHpZQ0FDQUJJQWdwQXdBM0FnUWdBVUVNYWlBSVFRaHFJZ0lRcXdNZ0NDQUJOZ0tZQWlBR0lBaEJpQUpxSWdFUWt3RWdBUkFXSUFJUW5BSUxJQWhCMEFOcUpBQWdBQXNNQUNBQUVMOFhHaUFBRUI4TFVBQWdBU2dDQUNJQVFRWk5RUUJCQVNBQWRFSGlBSEViSUFJb0FnQWlBa1VnQUVHVEtXdEJBa2x5Y2tVRVFDQUNRWVBMQlJEU0FRc2dBRUVHUmlBQVFYdHhRUUZHY2lBQVFaVXBhMEY5UzNJTEN3QWdBVUhnOEI4MkFnQUxFUUJCQ0JBVklnQkI0UEFmTmdJQUlBQUxDd0FnQVVHODhCODJBZ0FMRVFCQkNCQVZJZ0JCdlBBZk5nSUFJQUFMbVFNQkJYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUFrQWdBRUdnQVdvaUFTZ0NCQ0FCS0FJSVNRUkFJQUVnQVNnQ0JDQURLQUlNRU13VlFjd0FhallDQkF3QkN5TUFRU0JySWdRa0FDQUJLQUlFSUFFb0FnQnJRY3dBYlVFQmFpSUNRZGloK1JwUEJFQVFBUUFMSUFSQkNHcEIxNkg1R2lBQktBSUlJQUVvQWdCclFjd0FiU0lGUVFGMElnWWdBaUFDSUFaSkd5QUZRZXZRdkExUEd5QUJLQUlFSUFFb0FnQnJRY3dBYlNBQlFRaHFFTXNWSWdJb0FnZ2dBeWdDREJETUZSb2dBaUFDS0FJSVFjd0FhallDQ0NBQklBSVF5aFVnQWhESkZTQUVRU0JxSkFBTElBRW9BZ1FhSUFBb0FxUUJJZ0pCekFCcklnRWdBaUFBS0FLZ0FXdEJ6QUJ0TmdJMElBTkJFR29rQUNNQVFUQnJJZ01rQUFKQUFrQUNRQ0FCTHdFZVFRVnJEZ0lBQVFJTElBRkJBQkFiSVFRZ0EwRWdhaUlDSUFGQkFSREZCU0FBSUFRZ0EwRVFhaUFDRUZRaUFCREVGU0FBRUE4YUlBSVFEeG9NQVFzZ0FVRUFFQnNoQkNBRFFTQnFJZ0lnQVVFQ0VNVUZJQUFnQkNBRElBSVFWQ0lBRU1RVklBQVFEeG9nQWhBUEdnc2dBMEV3YWlRQVFRQUx1d0VCQTM4akFFRWdheUlDSkFBQ1FDQUJMd0VHSWdOQkVVWUVRRUVBSVFFTUFRc2dBMEVLUmdSQUlBSkJFR29pQXlBQkVJWU9RUUFoQVNBQ0tBSVFJQU1nQWl3QUcwRUFTQnNnQWtFTWFoQ05EZ1JBQWtBZ0FFR1FBV29pQkNBQ0tBSU1JZ01RYUEwQUlBUWdBeERRQkFKQUFrQUNRQ0FEUVFGckRnUUFBQUVDQXdzZ0FFRUJPZ0NpQXd3Q0N5QUFRUUU2QUtzRERBRUxJQUJCQVRvQXBRTUxDeUFDUVJCcUVBOGFEQUVMUVFVaEFRc2dBa0VnYWlRQUlBRUxHd0FnQUNnQ0JFRUlhaUFCS0FJQUVNY0tFQTVCOS9BTUVBNGFDeFVBSUFGQm1QQWZOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRWmp3SHhEWEFRc0xBQ0FCUWN6dEh6WUNBQXNSQUVFSUVCVWlBRUhNN1I4MkFnQWdBQXNLQUNBQktBSUFRUXRMQ3dzQUlBRkJxTzBmTmdJQUN4RUFRUWdRRlNJQVFhanRIellDQUNBQUN3c0FJQUZCaE8wZk5nSUFDeEVBUVFnUUZTSUFRWVR0SHpZQ0FDQUFDd3NBSUFGQjRPd2ZOZ0lBQ3hFQVFRZ1FGU0lBUWVEc0h6WUNBQ0FBQ3dvQUlBRW9BZ0JCREVzTEN3QWdBVUc4N0I4MkFnQUxFUUJCQ0JBVklnQkJ2T3dmTmdJQUlBQUxDd0FnQVVHWTdCODJBZ0FMRVFCQkNCQVZJZ0JCbU93Zk5nSUFJQUFMQ3dBZ0FVSDA2eDgyQWdBTEVRQkJDQkFWSWdCQjlPc2ZOZ0lBSUFBTEN3QWdBVUhRNng4MkFnQUxFUUJCQ0JBVklnQkIwT3NmTmdJQUlBQUxDZ0FnQVNnQ0FFRUJSZ3NMQUNBQlFhenJIellDQUFzUkFFRUlFQlVpQUVHczZ4ODJBZ0FnQUFzTEFDQUJRWWpySHpZQ0FBc1JBRUVJRUJVaUFFR0k2eDgyQWdBZ0FBc0xBQ0FCUWVUcUh6WUNBQXNSQUVFSUVCVWlBRUhrNmg4MkFnQWdBQXNLQUNBQktBSUFRUU5HQ3dzQUlBRkJ3T29mTmdJQUN4RUFRUWdRRlNJQVFjRHFIellDQUNBQUN3b0FJQUVvQWdCQkNFWUxDd0FnQVVHYzZoODJBZ0FMRVFCQkNCQVZJZ0JCbk9vZk5nSUFJQUFMQ2dBZ0FTZ0NBRUVCU3dzTEFDQUJRZmpwSHpZQ0FBc1JBRUVJRUJVaUFFSDQ2UjgyQWdBZ0FBc0xBQ0FCUWRUcEh6WUNBQXNSQUVFSUVCVWlBRUhVNlI4MkFnQWdBQXNLQUNBQktBSUFRUUJIQ3dzQUlBRkJzT2tmTmdJQUN4RUFRUWdRRlNJQVFiRHBIellDQUNBQUN3c0FJQUZCak9rZk5nSUFDeEVBUVFnUUZTSUFRWXpwSHpZQ0FDQUFDd3NBSUFGQjZPZ2ZOZ0lBQ3hFQVFRZ1FGU0lBUWVqb0h6WUNBQ0FBQ3hFQUlBQWdBaWdDQUNBQktBSUVFUUlBQ3hVQUlBRkJtTDRWTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUVppK0ZSQ2ZBd3Y0R2dFSGZ5TUFRZUFCYXlJREpBQWdBeUFCS0FJUUlnSTJBdHdCQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFFdkFRWWlCRUVGYXc0bkFSY1hGeGNYRnhjWEZ4Y1hGeGNEQkFVR0J3Z1hGeGNKQ2hNUkN4Y05EZzhRREJjWEZCVVdBQXNnQkVISEFFWU5BU0FFUWNJQ1JnMFJJQVJCeHdKSERSWWdBQ0FDSUFOQkNHcEJ4T3NCRUJRaUFCQmxJQUFRRHhvTUZ3c2dBU2dDQUNnQ0JDRUVJQU5CQ0dvaUFpQUJRUUVRekFvZ0FDQUVJQUlRWlNBQ0VBOGFEQllMSUFFb0FnQWlCQ2dDQ0VFTFJ3MFZJQUV2QVFSQkEwME5GaUFFS0FJRUlRSWdCQ2dDRENFRUl3QkJFR3NpQVNRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0JBNHNBUUl3QXdRRkJnY0lDUW9MREEwT0R4QVJFaE1VTUJVV0Z4Z1pHaHNjSFI0ZklDRXdJaU1rSlNZbktDa0FDeUFFUWNBaWF3NEtLaXNzTFM0dkx5OHZLUzhMSUFBZ0FpQUJRWXJFQWhBVUlnQVFaU0FBRUE4YURDNExJQUFnQWlBQlFZYkhBeEFVSWdBUVpTQUFFQThhREMwTElBQWdBaUFCUWZUV0JCQVVJZ0FRWlNBQUVBOGFEQ3dMSUFBZ0FpQUJRWVRYQkJBVUlnQVFaU0FBRUE4YURDc0xJQUFnQWlBQlFkRGNCaEFVSWdBUVpTQUFFQThhRENvTElBQWdBaUFCUWNIZEJoQVVJZ0FRWlNBQUVBOGFEQ2tMSUFBZ0FpQUJRYWJkQmhBVUlnQVFaU0FBRUE4YURDZ0xJQUFnQWlBQlFaYmRCaEFVSWdBUVpTQUFFQThhRENjTElBQWdBaUFCUWNuWkFSQVVJZ0FRWlNBQUVBOGFEQ1lMSUFBZ0FpQUJRYmtqRUJRaUFCQmxJQUFRRHhvTUpRc2dBQ0FDSUFGQjB0a0JFQlFpQUJCbElBQVFEeG9NSkFzZ0FDQUNJQUZCNE9VQkVCUWlBQkJsSUFBUUR4b01Jd3NnQUNBQ0lBRkJyZUFFRUJRaUFCQmxJQUFRRHhvTUlnc2dBQ0FDSUFGQmlMOEJFQlFpQUJCbElBQVFEeG9NSVFzZ0FDQUNJQUZCdXVBRUVCUWlBQkJsSUFBUUR4b01JQXNnQUNBQ0lBRkJuK0FFRUJRaUFCQmxJQUFRRHhvTUh3c2dBQ0FDSUFGQm84QURFQlFpQUJCbElBQVFEeG9NSGdzZ0FDQUNJQUZCdGQwR0VCUWlBQkJsSUFBUUR4b01IUXNnQUNBQ0lBRkIrTU1DRUJRaUFCQmxJQUFRRHhvTUhBc2dBQ0FDSUFGQjQ1Z0RFQlFpQUJCbElBQVFEeG9NR3dzZ0FDQUNJQUZCbktJREVCUWlBQkJsSUFBUUR4b01HZ3NnQUNBQ0lBRkJzdUFDRUJRaUFCQmxJQUFRRHhvTUdRc2dBQ0FDSUFGQjBwc0JFQlFpQUJCbElBQVFEeG9NR0FzZ0FDQUNJQUZCeU1nREVCUWlBQkJsSUFBUUR4b01Gd3NnQUNBQ0lBRkIzTndHRUJRaUFCQmxJQUFRRHhvTUZnc2dBQ0FDSUFGQjY5d0dFQlFpQUJCbElBQVFEeG9NRlFzZ0FDQUNJQUZCZ04wR0VCUWlBQkJsSUFBUUR4b01GQXNnQUNBQ0lBRkIzeU1RRkNJQUVHVWdBQkFQR2d3VEN5QUFJQUlnQVVINytBSVFGQ0lBRUdVZ0FCQVBHZ3dTQ3lBQUlBSWdBVUdqeVFNUUZDSUFFR1VnQUJBUEdnd1JDeUFBSUFJZ0FVSEx4d01RRkNJQUVHVWdBQkFQR2d3UUN5QUFJQUlnQVVILzZBQVFGQ0lBRUdVZ0FCQVBHZ3dQQ3lBQUlBSWdBVUhFZ1FVUUZDSUFFR1VnQUJBUEdnd09DeUFBSUFJZ0FVR2t5QU1RRkNJQUVHVWdBQkFQR2d3TkN5QUFJQUlnQVVIT3hnTVFGQ0lBRUdVZ0FCQVBHZ3dNQ3lBQUlBSWdBVUd3bXdFUUZDSUFFR1VnQUJBUEdnd0xDeUFBSUFJZ0FVRzltd0VRRkNJQUVHVWdBQkFQR2d3S0N5QUFJQUlnQVVIcmdRVVFGQ0lBRUdVZ0FCQVBHZ3dKQ3lBQUlBSWdBVUgyZ1FVUUZDSUFFR1VnQUJBUEdnd0lDeUFBSUFJZ0FVSGpJaEFVSWdBUVpTQUFFQThhREFjTElBQWdBaUFCUWZjakVCUWlBQkJsSUFBUUR4b01CZ3NnQUNBQ0lBRkJ2TllFRUJRaUFCQmxJQUFRRHhvTUJRc2dBQ0FDSUFGQjQvRUZFQlFpQUJCbElBQVFEeG9NQkFzZ0FDQUNJQUZCbHZJRkVCUWlBQkJsSUFBUUR4b01Bd3NnQUNBQ0lBRkIwZkVGRUJRaUFCQmxJQUFRRHhvTUFnc2dBQ0FDSUFGQmhQSUZFQlFpQUJCbElBQVFEeG9NQVFzZ0FDQUNJQUZCdi9FRkVCUWlBQkJsSUFBUUR4b0xJQUZCRUdva0FBd1ZDeUFBSUFJZ0EwRUlha0hJNndRUUZDSUFFR1VnQUJBUEdnd1VDeUFBSUFJZ0EwRUlha0dML0FJUUZDSUFFR1VnQUJBUEdnd1RDeUFEUVFocUVGVWdBMEhRQVdvUVZRSkFBa0FDUUFKQUFrQUNRQ0FCS0FJQUtBSUlJZ1JCSFhRZ0JFRUlhMEVEZG5JT0NBQUJCQUlFQkFRREJBc2dBMEhRQVdwQjBvOENFTklCREFRTElBTkIwQUZxUVpvekVOSUJEQU1MSUFOQjBBRnFRZHMvRU5JQkRBSUxJQU5CMEFGcVFkQzNBeERTQVF3QkN5QURRY0FCYWlJRklBUVFqQVFnQTBIUUFXb2dCUkNlQVNBRkVBOGFJQU5CQ0dwQitxRURFTklCQ3lBQktBSUFLQUlNUlFSQUlBTkJDR3BCK3lvUTBnRUxJQU5Cd0FGcUlnUVFWU0FFSUFOQkNHb2lCU0lCS0FJQUlBRWdBUzBBQ3lJR1FSaDBRUmgxUVFCSUlnY2JJQUVvQWdRZ0JpQUhHeUlHSUFZZ0EwSFFBV29pQVNnQ0JDQUJMUUFMSWdjZ0IwRVlkRUVZZFVFQVNCc2lCMm9RMmd3Z0JDQUJLQUlBSUFFZ0FTd0FDMEVBU0JzZ0J4RCtCaG9nQUNBQ0lBUVFaU0FFRUE4YUlBRVFEeG9nQlJBUEdnd1NDd0pBSUFFb0FnQW9BZ2dpQVVIQUFFY0VRQ0FCUVNCSEJFQWdBVUVRUncwQ0lBQWdBaUFEUVFocVFlVEJBeEFVSWdBUVpTQUFFQThhREJRTElBQWdBaUFEUVFocVFjajVBQkFVSWdBUVpTQUFFQThhREJNTElBQWdBaUFEUVFocVFmUzJCQkFVSWdBUVpTQUFFQThhREJJTElBTkIwQUZxUWFXMUFoQVVJUVFnQTBIQUFXb2lCU0FCRUl3RUlBTkJDR29pQVNBRUlBVVFUaUFBSUFJZ0FSQmxJQUVRRHhvZ0JSQVBHaUFFRUE4YURCRUxJQU5Cd0FGcVFkNHFFQlFoQkNBRFFiQUJhaUlGSUFFb0FnQW9BZ3dRakFRZ0EwSFFBV29pQmlBRUlBVVFUaUFEUWFBQmFpSUhJQUFnQVNnQ0FDZ0NDQkRRQlNBRFFRaHFJZ0VnQmlBSEVFNGdBQ0FDSUFFUVpTQUJFQThhSUFjUUR4b2dCaEFQR2lBRkVBOGFJQVFRRHhvTUVBc2dBMEhBQVdwQmlmc0FFQlFoQkNBRFFiQUJhaUlGSUFFb0FnQW9BZ3dRakFRZ0EwSFFBV29pQmlBRUlBVVFUaUFEUWFBQmFpSUhJQUFnQVNnQ0FDZ0NDQkRRQlNBRFFRaHFJZ0VnQmlBSEVFNGdBQ0FDSUFFUVpTQUJFQThhSUFjUUR4b2dCaEFQR2lBRkVBOGFJQVFRRHhvTUR3c2dBMEd3QVdwQis3c0ZFQlFoQkNBRFFhQUJhaUlGSUFBZ0FTZ0NBQ2dDQ0JEUUJTQURRY0FCYWlJR0lBUWdCUkJPSUFOQjBBRnFJZ2NnQmtHeHZRVVFMU0FEUVpBQmFpSUlJQUFnQVNnQ0FDZ0NEQkRRQlNBRFFRaHFJZ0VnQnlBSUVFNGdBQ0FDSUFFUVpTQUJFQThhSUFnUUR4b2dCeEFQR2lBR0VBOGFJQVVRRHhvZ0JCQVBHZ3dPQ3lBRFFkQUJha0h1dXdVUUZDRUVJQU5Cd0FGcUlnVWdBQ0FCS0FJQUtBSUlFTkFGSUFOQkNHb2lBU0FFSUFVUVRpQUFJQUlnQVJCbElBRVFEeG9nQlJBUEdpQUVFQThhREEwTElBTkJzQUZxUWVpN0JSQVVJUVFnQTBHZ0FXb2lCU0FBUVJBZ0FTZ0NBQ2dDQ0JDR0Z5QURRY0FCYWlJR0lBUWdCUkJPSUFOQjBBRnFJZ2NnQmtHeHZRVVFMU0FEUVpBQmFpSUlJQUFnQVNnQ0FDZ0NEQkRRQlNBRFFRaHFJZ0VnQnlBSUVFNGdBQ0FDSUFFUVpTQUJFQThhSUFnUUR4b2dCeEFQR2lBR0VBOGFJQVVRRHhvZ0JCQVBHZ3dNQ3lBRFFkQUJha0h4clFRUUZDRUVJQU5Cd0FGcUlnVWdBRUVaSUFFb0FnQW9BZ2dRaGhjZ0EwRUlhaUlCSUFRZ0JSQk9JQUFnQWlBQkVHVWdBUkFQR2lBRkVBOGFJQVFRRHhvTUN3c2dBQ0FDSUFOQkNHcEJ0c0FBRUJRaUFCQmxJQUFRRHhvTUNnc2dBQ0FDSUFOQkNHcEJvOEFBRUJRaUFCQmxJQUFRRHhvTUNRc2dBQ0FDSUFOQkNHcEIvNElGRUJRaUFCQmxJQUFRRHhvTUNBc2dBQ0FDSUFOQkNHcEJ4TllERUJRaUFCQmxJQUFRRHhvTUJ3c2dBMEhRQVdwQm5yd0ZFQlFoQkNBRFFiQUJhaUlGSUFGQkFSRE1DaUFEUWNBQmFpSUJJQVVRaHhjZ0EwRUlhaUlHSUFRZ0FSQk9JQUFnQWlBR0VHVWdCaEFQR2lBQkVBOGFJQVVRRHhvZ0JCQVBHZ3dHQ3lBQUlBSWdBMEVJYWtIaXdnUVFGQ0lBRUdVZ0FCQVBHZ3dGQ3lBRFFkQUJha0hmdXdVUUZDRUJJQU5Cd0FGcUlnUWdBaENNQkNBRFFRaHFJZ1VnQVNBRUVFNGdBQ0FDSUFVUVpTQUZFQThhSUFRUUR4b2dBUkFQR2d3RUN5QUFJQUlnQTBFSWFrR0F6QU1RRkNJQUVHVWdBQkFQR2d3REN5QUFJQUlnQTBFSWFrSG00d01RRkNJQUVHVWdBQkFQR2d3Q0N5QURRUWhxRU00QklnUWdBU0FCS0FJVVFTQnFFUHNXSUFOQjBBRnFJZ0lnQkVFRWFoQkNJQU1vQXRBQklBSWdBeTBBMndFaUJVRVlkRUVZZFVFQVNDSUdHeUlDSUFNb0F0UUJJQVVnQmh0cUlRVURRQ0FDSUFWR0JFQWdBeWdDM0FFaEJpQURRYUFCYWlJQ0lBQWdBU2dDREJEUUJTQURRYkFCYWlJQklBSkJzYjBGRUMwZ0EwSEFBV29pQlNBQklBTkIwQUZxSWdjUVRpQUFJQVlnQlJCbElBVVFEeG9nQVJBUEdpQUNFQThhSUFjUUR4b2dCQkM3QVJvTUF3c2dBaTBBQUVFdFJnUkFJQUpCN2dBNkFBQUxJQUpCQVdvaEFnd0FDd0FMSUFKRkRRQWdBQ0FEUWR3QmFoRHNBUTBBSUFOQkNHb2lBU0FES0FMY0FTSUNFSXdFSUFBZ0FpQUJFR1VnQVJBUEdnc2dBMEhnQVdva0FBd0JDMEhIOXdaQjY2RUNRYmdCUWZQTkFoQUFBQXRCQUFzUkFDQUFJQUVvQWdRZ0FpZ0NBQkRRQlFzVkFDQUJRYXl5RXpZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVHc3NoTVFud01MMHc4QkNuOGdBQVJBQWtBZ0FDZ0NDQ0lDSUFFdkFRUkhEUUFnQUNnQ0JDSUhJQWNnQWtFQ2RHb2dBU2dDQUJEMkYwVU5BQ0FBS0FJQUlnZEJvQUZxSVFBakFFRVFheUlDSkFBQ1FDQUFLQUlRSWdORklBRXZBUVlpQlVFMlIzSUVmeUFEQlNBQUtBSUVFT0lCR2lBQUtBSUVJUU1nQWlBQUtBSU1RU0FRaVFZZ0F5QUNFQklhSUFJUUR4b2dBQ2dDQkVIQWlBb1FEaUVESUFJZ0FFRVlhaUFCS0FJUUVNa0tJQU1nQWhBU0VPSUJHaUFDRUE4YUlBQW9BaEFMUlEwQUlBY3RBTmdCRFFBZ0JSQzlDRVVOQUNBSFFRRTZBTmdCSUFBb0FnUVE0Z0VhSUFBb0FnUWhBeUFDSUFBb0FneEJJQkNKQmlBRElBSVFFaG9nQWhBUEdpQUFLQUlFUWF1ZUFSQU9FT0lCR2dzQ1FDQUFLQUlRUlEwQUlBY3RBTmtCRFFBZ0JSQzhDRVVOQUNBSFFRRTZBTmtCSUFBb0FnUVE0Z0VhSUFBb0FnUWhBeUFDSUFBb0FneEJJQkNKQmlBRElBSVFFaG9nQWhBUEdpQUFLQUlFUVl2ZkFoQU9FT0lCR2dzQ1FDQUFLQUlRUlEwQUlBY3RBTm9CRFFBZ0JSRFFBa1VOQUNBSFFRRTZBTm9CSUFBb0FnUVE0Z0VhSUFBb0FnUWhCU0FDSUFBb0FneEJJQkNKQmlBRklBSVFFaG9nQWhBUEdpQUFLQUlFUWIrSUFSQU9FT0lCR2dzZ0FrRVFhaVFBSUFjb0F0UUJJUXNqQUVFUWF5SUZKQUFnQVM4QkJpRUtBa0FnQVNnQ0VBUkFJd0JCRUdzaUFpUUFJQUF0QUFrRVFDQUFLQUlFSVFNZ0FpQUFMUUFJT2dBSUlBTkI0L2tDRUE0YUN5QUNRUkJxSkFBZ0JTQUFRUmhxSUFFb0FoQVF5UW9nQUNnQ0JDRUNJQUFvQWd3aUF3UkFJQUlnQWlnQ0FFRU1heWdDQUdvZ0F5QUZLQUlFSUFVdEFBc2lBeUFEUVJoMFFSaDFRUUJJRzJ0QkEyc2lBMEVBSUFOQkFFb2JOZ0lNQ3lBQ1FaK2RDUkFPSUFVUUVob2dBQkRBQ0NBQUtBSUVRWjdkQ3hBT0dnd0JDeUFBS0FJRUlRSWdCU0FBS0FJTVFTQVFpUVlnQWlBRkVCSWFDeUFGRUE4YUlBQW9BZ1JCc0w4Q0VBNGdDaENCQVJBT0dnTkFJQUV2QVJnZ0NFMEVRQ0FBS0FJUVJTQUtRUVZIY2tVRVFDQUJLQUlBSUFFb0FoUXZBUUJCQW5ScUtBSUFJUUlnQUNnQ0JFRzNuQWtRRGlBQ0VDRWFDeUFBTFFBVUJFQWpBRUVRYXlJQ0pBQWdBQzBBQ1FSQUlBQW9BZ1FoQXlBQ0lBQXRBQWc2QUFnZ0EwR0ErZ0lRRGhvTElBSkJFR29rQUNBQUtBSUVJZ0lnQWlnQ0FFRU1heWdDQUdvaUFpZ0NCQ0VJSUFJUW5BTWhCQ0FBS0FJRVFkWW5FQTRpQWlBQ0tBSUFRUXhySWdNb0FnQnFRUWcyQWd3Z0FpQURLQUlBYWlJR0lBWW9BZ1JCdFg5eFFRaHlOZ0lFSUFJZ0F5Z0NBR3BCTURZQ1RDQUNJQXNRSVJvZ0FDZ0NCQ0lDSUFJb0FnQkJER3NpQXlnQ0FHb2dDRFlDQkNBQ0lBTW9BZ0JxSUFRMkFrd2dBQkRBQ0FzZ0FDZ0NCRUhiK0F3UURob2dCVUVRYWlRQUJRSkFBa0FDUUNBQktBSVVJQWhCQkhScUtBSUVEZ1FBQVFFQ0FRdEIxZFFHUWRhdUFrR0pBa0cxelFJUUFBQUxJQUFvQWdSQjkvQU1FQTRhSXdCQkVHc2lBaVFBQWtBQ1FBSkFBa0FDUUNBSVFmLy9BM0VpQ1NBQkx3RVlTUVJBSUFFb0FnQWdBU2dDRkNBSlFRUjBhaUlFTHdFQVFRSjBhaWdDQUNFREFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCQ2dDQkNJR1FRRnJEa2NJQ0FBSUNBTUJBZ01FQlFVRkJRVUZCUVVGQlFjSEJRVUZCUVVGQlFVRkJRWUdCZ1lHQmdjSEJ3Y0hCd2NIQndjSEJ3Y0hCZ1VGQlFVR0JRVUZCUVVGQlFVRkJRVUZCUWNMUWJHbkNVSFdyZ0pCeGdKQml1a0VFQUFBQ3lBQUVJOE9JQUFvQWdBZ0FTZ0NDQ0FESUFJUXdRaEZCRUFnQUNnQ0JDQUNLQUlBS0FJQUVBNGFEQWdMSUFFb0FnZ1FzQWRGRFFrZ0FDZ0NCQ0FERUNFYURBY0xJQUFvQWdBZ0F5QUNFS2tHRFFrZ0FCQ1BEaUFBS0FJRUlBSW9BZ0FvQWdBUURob01CZ3NnQUJDUERpQUFLQUlFSUFFZ0JCRDdGaUFBRU1BSURBVUxJQUFvQWdSQmtyb0pFQTRhSXdCQkVHc2lBeVFBSUFBdEFBa0VRQ0FBS0FJRUlRUWdBeUFBTFFBSU9nQUlJQVJCNy9rQ0VBNGFDeUFEUVJCcUpBQWdBaUFCSUFrUXpBb2dBaWdDQUNBQ0lBSXRBQXNpQkVFWWRFRVlkVUVBU0NJR0d5SURJQUlvQWdRZ0JDQUdHMm9oQmdOQUlBTWdCa1lFUUNBQUVNQUlJQUFvQWdSQkloRGVCQ0FDRUE4YURBWUZJQU10QUFBaUJFSGNBRWNnQkVFaVIzRkZCRUFnQUNnQ0JFSGNBQkRlQkNBRExRQUFJUVFMSUFBb0FnUWdCRUVZZEVFWWRSRGVCQ0FEUVFGcUlRTU1BUXNBQ3dBTElBQW9BZ0FnQmlBRElBSVEzUUlOQnlBQUtBSUVJQUlvQWdBb0FnQVFEaG9NQXdzZ0FDQUdJQU1RamhjTUFnc2dCaENCRnlFSklBUW9BZ1FoQmlBSkJFQWdBQ0FHSUFNUWpoY01BZ3NnQmhDQ0Z3UkFJQUFvQWdBZ0JDZ0NCQ0FESUFJUTNRSU5CeUFBS0FJRUlBSW9BZ0FvQWdBUURob01BZ3RCaktjSlFkYXVBa0cyQTBHSzZRUVFBQUFMSXdCQkVHc2lCQ1FBSUFBdEFBa0VRQ0FBS0FJRUlRWWdCQ0FBTFFBSU9nQUlJQVpCNmZrQ0VBNGFDeUFFUVJCcUpBQWdBQ2dDQkVHZm5Ra1FEaUVFSUFJZ0FFRVlhaUFERU1rS0lBUWdBaEFTR2lBQ0VBOGFDeUFBRU1BSUlBSkJFR29rQUF3RkMwR0R3UUZCMXE0Q1FjRUNRWXJwQkJBQUFBdEJzNThKUWRhdUFrSFpBa0dLNlFRUUFBQUxRYk9mQ1VIV3JnSkI0d0pCaXVrRUVBQUFDMEd6bndsQjFxNENRYUFEUVlycEJCQUFBQXRCczU4SlFkYXVBa0d6QTBHSzZRUVFBQUFMQ3lBSVFRRnFJUWdNQVFzTElBY2dCeWdDMUFFZ0FTOEJCRUVDZEdvMkF0UUJRUVVoQlFzZ0JROExRYUM2QlVIV3JnSkJ0QUZCeGMwQ0VBQUFDNjhDQUNBQVJRUkFRYUM2QlVIV3JnSkJyQUZCMXZvQkVBQUFDeUFBS0FJQUlnSWdBVFlDQkNBQ0xRRFFBUVJBSUFKQm9BRnFJZ0FvQWdSQmsvTU1FQTRhSUFBb0FnUkJuZjRMRUE0Z0EwRVFka0gvQVhFUUlVSDhsd2dRRGlBRFFRaDJRZjhCY1JBaFFkdjREQkFPR2dKL0lBUkJFSFloQTBIQXZoVWhBUU5BUWNMQ0FpQUJRWkRERlVZTkFSb2dBeUFCS0FJQVJ3UkFJQUZCRUdvaEFRd0JDd3NnQVNnQ0RBc2hBU0FBS0FJRVFZUHpDeEFPSUFFUURocEJ3c0lDSUFFUW9nSkZCRUFnQUNnQ0JFR1ovd2dRRGlBREVDRkI3L1lJRUE0YUN5QUFLQUlFUWJ2ZEN4QU9JQVJCLy84RGNSQWhRZHY0REJBT0dpQUFLQUlFUWVXbkRCQU9JQVVRSVVIYitBd1FEaG9nQUNnQ0JFSHVzUXdRRGlBR0VDRkIyL2dNRUE0YUN5QUNRUlEyQXRRQlFRQUxnd0VCQVg4akFFRVFheUlCSkFBZ0JDZ0NBQ0VFSUFFZ0F5Z0NDRFlDQ0NBQklBTXBBZ0EzQXdBZ0FDZ0NCQ2dDQUJDUkYwRVVFQlVpQWlBRUVOd0JRUUZxSWdNUUZTSUZOZ0lNSUFJZ0FTa0NBRGNDQUNBQ0lBRW9BZ2cyQWdnZ0FrRUFPZ0FRSUFWQkFDQURFSGtnQkJDRkZTQUFLQUlFSUFJMkFnQWdBVUVRYWlRQUN4VUFJQUZCaUxJVE5nSUFJQUVnQUNnQ0JEWUNCQXNMQUNBQVFZaXlFeERYQVFzSkFDQUFFSmdPRUI4TENRQWdBQkNpRnhBZkN5b0FJQUJCQkdvUTlnNGdBRUVnYWlJQUlBQW9BZ1FRemdvZ0FDQUFRUVJxTmdJQUlBQkNBRGNDQkFzVUFDQUFLQUlvUlNBQUtBSUVJQUFvQWdoR2NRc0pBQ0FBRUtNWEVCOExDUUFnQUJDa0Z4QWZDd2tBSUFBUXBSY1FId3RvQVFOL0FrQWdBU0FCS0FJQUtBTFlBUkVBQUNJRFJRMEFJQUFvQWhRaUJTQURLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBS0FJWUlBTW9BaGhIRFFBZ0FDZ0NIQ0FES0FJY1J3MEFJQUFvQWlBZ0F5Z0NJRWNOQUNBQUlBRVE4UUVoQkFzZ0JBc2tBQ0FCSUFCQkdHb2dBRUVjYWlBQVFTQnFFS1lYSVFFZ0FDZ0NGQ0FCSUFJUXpRUUxpUUVCQlg4akFFR2dBV3NpQWlRQUlBSkJHR29RemdFaUEwSGE2UVlRRGlFRklBSkJDR29pQkNBQktBSVVJZ1lnQmlnQ0FDZ0NEQkVDQUNBRklBUVFFa0gwN1F3UURpQUJLQUlZRUNGQjlPME1FQTRnQVNnQ0hCQWhRZlR0REJBT0lBRW9BaUFRSVVHTDVnWVFEaG9nQkJBUEdpQUFJQU5CQkdvUVFpQURFTHNCR2lBQ1FhQUJhaVFBQzBZQkFYOGpBRUVRYXlJREpBQWdBeUFBS0FJWU5nSU1JQUVnQUVFVWFpQURRUXhxRUtnWElRRWdBQ2dDSENJQUJFQWdBQ0FCSUFJUXpRUWhBUXNnQTBFUWFpUUFJQUVMZUFFRGZ5TUFRYUFCYXlJREpBQWdBMEVZYWhET0FTSUNRWWIzQ0JBT0dnSkFJQUVvQWh3aUJBUkFJQU5CQ0dvaUFTQUVJQVFvQWdBb0Fnd1JBZ0FnQWlBQkVCSWFJQUVRRHhvTUFRc2dBaUFCS0FJVUVDRWFDeUFDUWUvMkNCQU9HaUFBSUFKQkJHb1FRaUFDRUxzQkdpQURRYUFCYWlRQUM2a0JBUVIvQWtBZ0FTQUJLQUlBS0FLNEFSRUFBQ0lDUlEwQUFrQUNRQ0FBS0FJY0lnTkZEUUFnQWlnQ0hDSUVSUTBBQW44Q1FDQURLQUlRSWdVZ0JDZ0NFRVlFZnlBRlFSdFBEUUVnQXlBREtBSUFJQVZCQTNScUtBSVlFUUFBSUFRUXZnY0ZRUUFMREFFTFFhT29DVUdBb0FKQnVBRkJtdVlHRUFBQUN3MEJEQUlMSUFBb0FoUWdBaWdDRkVjTkFRc2dBQ2dDR0NBQ0tBSVlSdzBBSUFBZ0FSRHhBU0VHQ3lBR0MwTUJBbjhqQUVHUUFXc2lBaVFBSUFKQkNHb1F6Z0VpQTBHaCtRZ1FEaUFCS0FJVUVDRkI3L1lJRUE0YUlBQWdBMEVFYWhCQ0lBTVF1d0VhSUFKQmtBRnFKQUFMTmdFQmYwRUFJUUlDUUNBQklBRW9BZ0FvQXJBQkVRQUFJZ05GRFFBZ0FDZ0NGQ0FES0FJVVJ3MEFJQUFnQVJEeEFTRUNDeUFDQzBFQkFuOGdBQ2dDSENFRUlBQW9BaGdoQXdOL0lBTWdCRVlFZnlBQUtBSVVJQUVnQWhETkJBVWdBeWdDQUNBQklBSVF6UVFoQVNBRFFRUnFJUU1NQVFzTEM4MEJBUVovSXdCQm9BRnJJZ1VrQUVHWi93Z2hBaUFGUVJocUVNNEJJUVFnQVNnQ0hDQUJLQUlZYTBFQ2RTRUdBMEFnQkNBQ0VBNGFBa0FEUUNBRElBWkdEUUVnQlVFSWFpSUhJQUVvQWhnZ0EwRUNkR29vQWdBaUFpQUNLQUlBS0FJTUVRSUFJQVFnQnhBU0dpQUhFQThhSUFOQkFXb2lBeUFHUmcwQUMwSDA3UXdoQWd3QkN3c2dCRUhPMndzUURpRURJQVZCQ0dvaUFpQUJLQUlVSWdFZ0FTZ0NBQ2dDREJFQ0FDQURJQUlRRWhvZ0FoQVBHaUFBSUFSQkJHb1FRaUFFRUxzQkdpQUZRYUFCYWlRQUM2c0JBUVYvQWtBZ0FTQUJLQUlBS0FLSUFSRUFBQ0lFUlEwQUlBQW9BaFFpQXlBRUtBSVVJQUlnQXlnQ0FDZ0NDQkVFQUVVTkFDQUFLQUljSUFBb0FoaHJJQVFvQWh3Z0JDZ0NHR3RIRFFCQkFDRURBMEFnQUNnQ0hDQUFLQUlZSWdaclFRSjFJQU5MQkVBZ0EwRUNkQ0VISUFOQkFXb2hBeUFHSUFkcUtBSUFJZ1lnQnlBRUtBSVlhaWdDQUNBQ0lBWW9BZ0FvQWdnUkJBQU5BUXdDQ3dzZ0FDQUJFUEVCSVFVTElBVUxad0VFZnlNQVFhQUJheUlDSkFBZ0FrRVlhaERPQVNFRElBSkJDR29pQkNBQktBSVVJZ1VnQlNnQ0FDZ0NEQkVDQUNBRElBUVFFa0gzOEF3UURpQUJLQUlZRUNGQjNaZ0lFQTRhSUFRUUR4b2dBQ0FEUVFScUVFSWdBeEM3QVJvZ0FrR2dBV29rQUF1bUFRRURmeU1BUVJCcklnTWtBQUpBSUFFZ0FTZ0NBQ2dDZ0FFUkFBQWlCVVVOQUNBQUtBSVlJQVVvQWhoSERRQWdBeUFCSUFFb0FnQW9Bb0FCRVFBQU5nSUVJQU1nQURZQ0FDQURRUWhxSUFJZ0F4Q3FGeUFETFFBTVJRUkFRUUVoQkF3QkN5QUFLQUlVSWdRZ0JTZ0NGQ0FDSUFRb0FnQW9BZ2dSQkFBaEJTQUNJQU1vQWdnUXN3NGFRUUFoQkNBRlJRMEFJQUFnQVJEeEFTRUVDeUFEUVJCcUpBQWdCQXMwQUNNQVFSQnJJZ0lrQUNBQVFSUnFFTTRHSVFBZ0FrRVFhaVFBSUFBZ0FVRUdkQ0FCUVFKMmFtcEJ4NHlpamdacklBRnpDME1CQW44akFFR1FBV3NpQWlRQUlBSkJDR29RemdFaUEwSG1od2tRRGlBQlFSUnFFQkpCdS9NSUVBNGFJQUFnQTBFRWFoQkNJQU1RdXdFYUlBSkJrQUZxSkFBTE9BRUJmMEVBSVFJQ1FDQUJJQUVvQWdBb0FuZ1JBQUFpQTBVTkFDQUFRUlJxSUFOQkZHb1E4Z05GRFFBZ0FDQUJFUEVCSVFJTElBSUxxQUVCQW44Z0FDZ0NHQ0VFSUFBb0FoUWhBd05BSUFNZ0JFWUVRQUpBSUFCQkpHb2hBaUFBS0FJZ0lRTURRQ0FDSUFOR0RRRWdBeWdDRUNBQlFRWjBJQUZCQW5acWFrSEhqS0tPQm1zZ0FYTWhBU0FES0FJWUlRUWdBeWdDRkNFQUEzOGdBQ0FFUmdSL0lBRUZJQUVnQUJDWkRpRUJJQUJCREdvaEFBd0JDd3NoQVNBREVFd2hBd3dBQ3dBTEJTQURLQUlBSUFFZ0FoRE5CQ0VCSUFOQkJHb2hBd3dCQ3dzZ0FRdWRBUUVHZnlNQVFhQUJheUlFSkFBZ0JFRVlhaERPQVNJQ1FZZ0lFQTRhSUFFb0FoZ2dBU2dDRkd0QkFuVWhCUU5BSUFNZ0JVY0VRQ0FFUVFocUlnWWdBU2dDRkNBRFFRSjBhaWdDQUNJSElBY29BZ0FvQWd3UkFnQWdBaUFHRUJJYUlBWVFEeG9nQTBFQmFpSURJQVZHRFFFZ0FrSDA3UXdRRGhvTUFRc0xJQUpCZ2dnUURob2dBQ0FDUVFScUVFSWdBaEM3QVJvZ0JFR2dBV29rQUF2QUFnRUhmeU1BUVNCcklnVWtBQUpBSUFFZ0FTZ0NBQ2dDY0JFQUFDSURSUTBBSUFBb0FoZ2dBQ2dDRkdzZ0F5Z0NHQ0FES0FJVWEwY05BQ0FBS0FJb0lBTW9BaWhIRFFBZ0FDQUJFUEVCUlEwQUlBTkJJR29oQjBFQUlRRURRQ0FBS0FJWUlBQW9BaFFpQm10QkFuVWdBVXNFUUNBQlFRSjBJUVFnQVVFQmFpRUJJQVFnQm1vb0FnQWlCaUFFSUFNb0FoUnFLQUlBSUFJZ0JpZ0NBQ2dDQ0JFRUFBMEJEQUlMQ3lBQVFTUnFJUUlnQUNnQ0lDRUFBMEFnQUNBQ1JpSUlEUUVnQnlBQVFSQnFJZ01RMUFWRkRRRWdCVUVRYWlBQVFSUnFFTGtISWdRaENTTUFRUkJySWdFa0FDQUhJQUZCREdvZ0F4Q3RCaWdDQUNJRFJRUkFFQUVBQ3lBQlFSQnFKQUFnQ1NBRklBTkJGR29RdVFjaUFSQzdGeUVESUFFUXBBSWdCQkNrQWlBRFJRMEJJQUFRVENFQURBQUxBQXNnQlVFZ2FpUUFJQWdMRVFBZ0FDQUJRZFM5QlVIV3ZRVVFrQk1MUUFFRGZ3SkFJQUVnQVNnQ0FDZ0NhQkVBQUNJRVJRMEFJQUFvQWhRaUJTQUVLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBSUFFUThRRWhBd3NnQXdzYUFDQUJJQUJCSEdvUW1RNGhBU0FBS0FJVUlBRWdBaEROQkF1NUFRRUZmeU1BUWFBQmF5SUZKQUFnQlVFWWFoRE9BU0lDUWRhOUJSQU9JUU1nQlVFSWFpSUVJQUVvQWhRaUJpQUdLQUlBS0FJTUVRSUFJQU1nQkJBU1FjYjVDQkFPSUFFb0FoZ1FJVUg4OWdnUURocEIzUGdNSVFNZ0JCQVBHaUFCS0FJZ0lRWWdBU2dDSENFQkEwQWdBU0FHUmdSQUlBSkIwNzBGRUE0YUlBQWdBa0VFYWhCQ0lBSVF1d0VhSUFWQm9BRnFKQUFGSUFFb0FnQWhCQ0FDSUFNUURpQUVFQ0VhUWRTWUNDRURJQUZCQkdvaEFRd0JDd3NMVUFFRGZ3SkFJQUVnQVNnQ0FDZ0NZQkVBQUNJRVJRMEFJQUFvQWhRaUJTQUVLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBSUFFUThRRkZEUUFnQUVFY2FpQUVRUnhxRU1zSUlRTUxJQU1MRVFBZ0FDQUJRZS8yQ0VHdStRZ1FrQk1MUUFFRGZ3SkFJQUVnQVNnQ0FDZ0NXQkVBQUNJRVJRMEFJQUFvQWhRaUJTQUVLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBSUFFUThRRWhBd3NnQXd2Q0FRRUJmeU1BUVJCcklnTWtBQ0FESUFBb0FoZzJBZ3dnQXlBQUtBSW9OZ0lJSUFNZ0FDZ0NMRFlDQkNBREtBSU1JQUZCQm5RZ0FVRUNkbXBxUWNlTW9vNEdheUFCY3lJQklBQW9BaHdnQVVFR2RDQUJRUUoyYW1wQng0eWlqZ1pyY3lJQklBQXRBQ0FnQVVFR2RDQUJRUUoyYW1wQng0eWlqZ1pyY3lJQklBQXRBQ0VnQVVFR2RDQUJRUUoyYW1wQng0eWlqZ1pyY3lBQVFTUnFJQU5CQ0dvZ0EwRUVhaENtRnlFQklBQW9BaFFnQVNBQ0VNMEVJUUFnQTBFUWFpUUFJQUFMdndFQkJYOGpBRUdnQVdzaUFpUUFJQUpCR0dvUXpnRWlBMEcyK1FnUURpRUZJQUpCQ0dvaUJDQUJLQUlVSWdZZ0JpZ0NBQ2dDREJFQ0FDQUZJQVFRRWtIMDdRd1FEaUFCS0FJWUVDRkI5TzBNRUE0Z0FTZ0NIQkFoUWZUdERCQU9JQUV0QUNBUTNSUkI5TzBNRUE0Z0FTMEFJUkRkRkVIMDdRd1FEaUFCS0FJa0VDRkI5TzBNRUE0Z0FTZ0NLQkFoUWZUdERCQU9JQUVvQWl3UUlVSHY5Z2dRRGhvZ0JCQVBHaUFBSUFOQkJHb1FRaUFERUxzQkdpQUNRYUFCYWlRQUM1c0JBUU4vQWtBZ0FTQUJLQUlBS0FKSUVRQUFJZ05GRFFBZ0FDZ0NHQ0FES0FJWVJ3MEFJQUFvQWh3Z0F5Z0NIRWNOQUNBQUxRQWdJQU10QUNCSERRQWdBQzBBSVNBRExRQWhSdzBBSUFBb0FpUWdBeWdDSkVjTkFDQUFLQUlvSUFNb0FpaEhEUUFnQUNnQ0xDQURLQUlzUncwQUlBQW9BaFFpQlNBREtBSVVJQUlnQlNnQ0FDZ0NDQkVFQUVVTkFDQUFJQUVROFFFaEJBc2dCQXROQVFOL0FrQWdBU0FCS0FJQUtBSkFFUUFBSWdSRkRRQWdBQ2dDR0NBRUtBSVlSdzBBSUFBb0FoUWlCU0FFS0FJVUlBSWdCU2dDQUNnQ0NCRUVBRVVOQUNBQUlBRVE4UUVoQXdzZ0F3dE5BUU4vQWtBZ0FTQUJLQUlBS0FJNEVRQUFJZ1JGRFFBZ0FDZ0NHQ0FFS0FJWVJ3MEFJQUFvQWhRaUJTQUVLQUlVSUFJZ0JTZ0NBQ2dDQ0JFRUFFVU5BQ0FBSUFFUThRRWhBd3NnQXdzOUFRSi9Jd0JCa0FGcklnSWtBQ0FDUVFocUVNNEJJZ05CeVBrQUVBNGdBU2dDRkJBaEdpQUFJQU5CQkdvUVFpQURFTHNCR2lBQ1FaQUJhaVFBQ3pVQkFYOUJBQ0VDQWtBZ0FTQUJLQUlBS0FJd0VRQUFJZ05GRFFBZ0FDZ0NGQ0FES0FJVVJ3MEFJQUFnQVJEeEFTRUNDeUFDQ3pnQUlBQXRBQmdnQUNnQ0ZDQUJRUVowSUFGQkFuWnFha0hIaktLT0Jtc2dBWE1pQUVFR2RISWdBRUVDZG1wQng0eWlqZ1pySUFCekMwc0JBbjhqQUVHUUFXc2lBaVFBSUFKQkNHb1F6Z0VpQTBHTnhnRkIreW9nQVMwQUdCc1FEa0hiUHhBT0lBRW9BaFFRSVJvZ0FDQURRUVJxRUVJZ0F4QzdBUm9nQWtHUUFXb2tBQXRDQVFGL1FRQWhBZ0pBSUFFZ0FTZ0NBQ2dDS0JFQUFDSURSUTBBSUFBb0FoUWdBeWdDRkVjTkFDQUFMUUFZSUFNdEFCaEhEUUFnQUNBQkVQRUJJUUlMSUFJTEJnQkJnSThUQ3hRQUlBQkJCR3BCQUNBQktBSUVRZGFxRFVZYkN6MEFJQUVvQWhSQnh3QkhCRUJCOTk4RFFjYWxBa0hWQlVIYzhRZ1FBQUFMSUFGQkFoQ1JCQ0VCSUFBb0FnUWdBVFlDQUNBQUtBSUlRUUU2QUFBTEZRQWdBVUhRamhNMkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQjBJNFRFS0VCQ3dzQUlBQkI1c0lGRUJRYUN4NEFJQUVnQVNnQ0FDZ0M2QUVSQUFCRkJFQkJBQThMSUFBZ0FSRHhBUXNMQUNBQVFaM2pCUkFVR2dzZUFDQUJJQUVvQWdBb0F1QUJFUUFBUlFSQVFRQVBDeUFBSUFFUThRRUxDd0FnQUVHRHp3VVFGQm9MSGdBZ0FTQUJLQUlBS0FMUUFSRUFBRVVFUUVFQUR3c2dBQ0FCRVBFQkN3c0FJQUJCMmVrQkVCUWFDeDRBSUFFZ0FTZ0NBQ2dDeUFFUkFBQkZCRUJCQUE4TElBQWdBUkR4QVFzTEFDQUFRWTdDQkJBVUdnc2VBQ0FCSUFFb0FnQW9Bc0FCRVFBQVJRUkFRUUFQQ3lBQUlBRVE4UUVMQ3dBZ0FFR3ExZ01RRkJvTEhnQWdBU0FCS0FJQUtBS29BUkVBQUVVRVFFRUFEd3NnQUNBQkVQRUJDd3NBSUFCQmsrNEVFQlFhQ3g0QUlBRWdBU2dDQUNnQ29BRVJBQUJGQkVCQkFBOExJQUFnQVJEeEFRc0tBQ0FBUWQ4L0VCUWFDeDRBSUFFZ0FTZ0NBQ2dDbUFFUkFBQkZCRUJCQUE4TElBQWdBUkR4QVFzS0FDQUFRZVkvRUJRYUN3d0FJQUFRamdRYUlBQVFId3NlQUNBQklBRW9BZ0FvQXBBQkVRQUFSUVJBUVFBUEN5QUFJQUVROFFFTEN3QWdBRUdjNWdFUUZCb0xIUUFnQVNBQktBSUFLQUpRRVFBQVJRUkFRUUFQQ3lBQUlBRVE4UUVMSFFBZ0FTQUJLQUlBS0FJZ0VRQUFSUVJBUVFBUEN5QUFJQUVROFFFTEJnQkI0UGNTQ3hRQUlBQkJCR3BCQUNBQktBSUVRZnFrRFVZYkMxVUJBbjhnQVNnQ0FDRUNJQUFvQWdnUXp4Y2dBQ2dDQkNJREtBSUFJZ0ZOQkVCQnZDSkI1NjBDUWFvQlFkenhDQkFBQUFzZ0FpZ0NBQ0VDSUFBb0FnZ2hBQ0FESUFGQkFXbzJBZ0FnQUNBQkVEZ2dBa1lMRlFBZ0FVR3c5eEkyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCc1BjU0VLRUJDd1lBUWVqM0Vnc1VBQ0FBUVFScVFRQWdBU2dDQkVIcHBRMUdHd3VTQ0FFTGZ5TUFRU0JySWdNa0FDQUFLQUljSVFZZ0FTZ0NBQ0lCS0FJVUlRY0NRQ0FBS0FJVUxRQUFCRUFnQVJEVkZ3MEJDd0pBSUFBb0FoQW9BZ0JGRFFBZ0FSQ3NEZ1JBSUFOQkFEWUNIQ0FBS0FJUUtBSUFJUUlnQXlBQk5nSUlJQU5Cc1BjU05nSUFJQU1nQXpZQ0VDQURJQU5CSEdvMkFnUWdBaWdDSkNFRUlBSW9BaUFoQWdOQUFrQWdBaUFFUmlJRkRRQWdBaWdDQUVGK2NVRUNSd1JBSUFNZ0FpZ0NHQ0lJSUFKQkRHb2dDQnNvQWdBUWlnSkZEUUVMSUFKQkhHb2hBZ3dCQ3dzZ0F4QVdJQVZGRFFFTUFnc2dBUkRVQ2cwQUlBRW9BaXdnQVNnQ01FY05BQ0FESUFZb0FoUVExUW9vQWpBaUJEWUNBQ0FBS0FJRUlRSUNRQ0FFQkVBZ0EwR01nQlEyQWh3Z0FpQURRUnhxSWdRUTN3SWdBQ2dDQkNFSUlBTWhEQ0FHS0FJVUVOOElJZ1VoQ3lNQVFTQnJJZ0lrQUNBQ1FnQTNBaFFnQWtJQU53SU1JQUpCOFBRU05nSUlJQVVnQWtFSWFpSUpFSzBESWdvRWZ5QUZJQW9RNlFFRlFRQUxJUVVnQ1JEWEJSb2dBa0VnYWlRQUlBd2dDeUFGRUswRE5nSWNJQWdnQkJEZkFpQUFLQUlFSVFJZ0F5QUdLQUlVRUxBR05nSWNJQUlnQkJEZkFpQUFLQUlFSUFNUTNnSWdBQ2dDQkNFQ0lBTkI2QUEyQWh3Z0FpQUVFTjhDREFFTElBTkJ2WUlFTmdJY0lBSWdBMEVjYWhEZkFnc2dBQ2dDRUVFQU5nSUFDMEVCSVFJQ1FBSkFBa0FDUUNBSFFmVUJhdzRFQXdFQkFnQUxJQWRCQ0VZZ0IwRTdSbklnQjBHOUFrWnlEUUlMUVFBaEFnc2dBQ2dDR0NBQ09nQUFDd0pBSUFBdEFBZ0VRRUVBSVFJQ1FDQUJLQUlVRFFBZ0FTMEFHQTBBSUFFdEFCa05BQ0FCS0FJZ0lBRW9BaVJHSVFJTElBSU5BUXNDUUNBQktBSTRJQUFvQWd3aUFpZ0NBRVlFUUNBQktBSThJQUlvQWdSR0RRRUxJQUFvQWhRdEFBQU5BQUpBSUFBb0FoZ3RBQUFFUUNBR0tBSVVFTlVLS0FJc1JRMEJDeUFHS0FMSUJDSUNFSG9oQlNBR0tBSVVFTEFHSVFnZ0FrRUNFSkVFSVFrZ0FDZ0NCQ0VHSXdCQlFHb2lBaVFBSUFFb0Fqd2hDaUFCS0FJNElRUWdBa0VGTmdJc0lBSkJGMEVZSUFRYk5nSWtJQUlnQ1RZQ0lDQUNJQWcyQWh3Z0FpQUZOZ0lZSUFKQmpJQWNRWXlBR0NBS0cwR01nQlFnQkJzMkFoUWdBaUFDUVJScU5nSW9JQUlnQWlrREtEY0RDQ0FDUVRCcUlBSkJDR29RNXdNaEJDQUdJQVlvQWdRZ0JDZ0NBQ0FFS0FJRUVOSUtBa0FnQVNnQ09DSUZSUTBBSUFJZ0JUWUNGQ0FHSUFKQkZHb1Ezd0lnQVNnQ1BDSUZSUTBBSUFJZ0JUWUNGQ0FHSUFKQkZHb1Ezd0lMSUFRUU1ob2dBa0ZBYXlRQUN5QUFLQUlNSUFFcEFqZzNBZ0FMSUFFZ0FDZ0NCQkRUQ2dzZ0FDZ0NGRUVBT2dBQUFrQUNRQ0FIRUlvT0RRQWdBUkRVQ2cwQUlBZEJmbkZCOWdGR0JFQWdBQ2dDRkVFQk9nQUFEQUVMSUFFUXJBNUZEUUlNQVF0QkFDRUJDeUFBS0FJUUlBRTJBZ0FMSUFOQklHb2tBQXN6QUNBQlFmajJFallDQUNBQklBQXBBZ1EzQWdRZ0FTQUFLUUlNTndJTUlBRWdBQ2tDRkRjQ0ZDQUJJQUFvQWh3MkFod0xPd0VCZjBFZ0VCVWlBVUg0OWhJMkFnQWdBU0FBS1FJRU53SUVJQUVnQUNrQ0REY0NEQ0FCSUFBcEFoUTNBaFFnQVNBQUtBSWNOZ0ljSUFFTEhRQWdBU0FCS0FJQUtBSVlFUUFBUlFSQVFRQVBDeUFBSUFFUThRRUxCZ0JCNFBRU0N4UUFJQUJCQkdwQkFDQUJLQUlFUWVPaERVWWJDeFVBSUFGQnNQUVNOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRYkQwRWhEWEFRc0dBRUdnOUJJTEZBQWdBRUVFYWtFQUlBRW9BZ1JCL1o4TlJoc0xGUUFnQVVIdzh4STJBZ0FnQVNBQUtBSUVOZ0lFQ3dzQUlBQkI4UE1TRU5jQkN3WUFRZUR6RWd0QkFRSi9Jd0JCRUdzaUFTUUFJQUVnQUNnQ0RDSUNJQUlvQWdBb0Fod1JBQUEyQWd3Z0FFRUlhaUFCUVF4cUlBQkJFR29RdndjaEFDQUJRUkJxSkFBZ0FBc1VBQ0FBUVFScVFRQWdBU2dDQkVHZ25nMUdHd3NWQUNBQlFiRHpFallDQUNBQklBQW9BZ1EyQWdRTEN3QWdBRUd3OHhJUW53TUxCZ0JCb1BNU0N4UUFJQUJCQkdwQkFDQUJLQUlFUWN5Y0RVWWJDeFVBSUFGQjhQSVNOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRZkR5RWhDZkF3c1VBQ0FBS0FJTUlnQWdBQ2dDQUNnQ0dCRUFBQXNHQUVIZzhoSUxGQUFnQUVFRWFrRUFJQUVvQWdSQmdwc05SaHNMRHdBZ0FDZ0NCQ0FCS0FJQUVPRVhDeFVBSUFGQnFQSVNOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRYWp5RWhEWEFRc1VBQ0FBS0FJTUlnQWdBQ2dDQUNnQ0ZCRUFBQXNIQUNBQUtBSVFDd1lBUVpUeUVnc1VBQ0FBUVFScVFRQWdBU2dDQkVHb2x3MUdHd3M3QVFKL0lBQW9BZ1FoQWlBQUtBSU1JQUFvQWdnaUFFRUJkV29pQXlBQktBSUFJQUJCQVhFRWZ5QURLQUlBSUFKcUtBSUFCU0FDQ3hFQ0FBc05BQ0FBSUFGQjBQRVNFTllCQ3dzQUlBQkIwUEVTRU5FU0N4SUFJQUFvQWd4QkFDQUFLQUlRSUFGTEd3c0dBRUhBOFJJTEZBQWdBRUVFYWtFQUlBRW9BZ1JCdHBVTlJoc0xGQUFnQUNnQ0JDSUFJQUFvQWdCQkFXbzJBZ0FMRlFBZ0FVR0k4UkkyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCaVBFU0VOY0JDd1lBUWZqd0Vnc1VBQ0FBUVFScVFRQWdBU2dDQkVHSWt3MUdHd3NXQUNBQUtBSUVJQUVvQWdBZ0FpZ0NBQkRqRjBFQkMzNEJBbjhqQUVFUWF5SURKQUFnQXlBQUtBSUlJZ0lnQVNBQ0tBSUFLQUlZRVFFQU5nSU1JQU1nQUNnQ0RDSUNJQUVnQWlnQ0FDZ0NJQkVCQURZQ0NDQUJLQUlNSWdFUXFnTWlBaUFES0FJTUlBTW9BZ2dnQUNnQ0VCRG5GeG9nQVNBQ0VDZ2dBU0FCS0FJWVFRRnFOZ0lZSUFJaEFDQURRUkJxSkFBZ0FBc1ZBQ0FCUWNEd0VqWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSEE4QklRMXdFTHhnUUNDSDhDZlNNQVFSQnJJZ1lrQUNBQ0VQUURJUWNnQUFKL0FrQWdBU2dDQkNJRVJRMEFJQUVvQWdBQ2Z5QUVRUUZySUFkeElBUnBJZ2xCQVUwTkFCb2dCeUFFSUFkTERRQWFJQWNnQkhBTElnaEJBblJxS0FJQUlnVkZEUUFnQkVFQmF5RUtJQUlvQWdBaEN5QUpRUUZMSVFrRFFDQUZLQUlBSWdWRkRRRWdCeUFGS0FJRUlnSkhCRUFDUUNBSlJRUkFJQUlnQ25FaEFnd0JDeUFDSUFSSkRRQWdBaUFFY0NFQ0N5QUNJQWhIRFFJTElBVW9BZ2dnQzBjTkFBdEJBQXdCQ3lBR0lBRWdCeUFERVBRSUFrQkJBQ0FFSUFFb0FneEJBV3F6SWd3Z0FTb0NFQ0lOSUFTemxGNGJEUUFnQVNBRUlBUkJBV3R4UVFCSElBUkJBMGx5SUFSQkFYUnlJZ0lDZnlBTUlBMlZqU0lNUXdBQWdFOWRJQXhEQUFBQUFHQnhCRUFnREtrTUFRdEJBQXNpQXlBQ0lBTkxHeEREQVNBQktBSUVJZ1FnQkVFQmEzRkZCRUFnQkVFQmF5QUhjU0VJREFFTElBUWdCMHNFUUNBSElRZ01BUXNnQnlBRWNDRUlDd0pBSUFoQkFuUWlBeUFCS0FJQWFpZ0NBQ0lDUlFSQUlBWW9BZ0FnQVNnQ0NEWUNBQ0FCSUFZb0FnQTJBZ2dnQVNnQ0FDQURhaUFCUVFocU5nSUFJQVlvQWdBaUFpZ0NBQ0lEUlEwQklBTW9BZ1FoQlFKQUlBUWdCRUVCYXlJRGNVVUVRQ0FESUFWeElRVU1BUXNnQkNBRlN3MEFJQVVnQkhBaEJRc2dBU2dDQUNBRlFRSjBhaUFDTmdJQURBRUxJQVlvQWdBZ0FpZ0NBRFlDQUNBQ0lBWW9BZ0EyQWdBTElBWW9BZ0FoQlNBR1FRQTJBZ0FnQVNBQktBSU1RUUZxTmdJTUlBWVExdzVCQVFzNkFBUWdBQ0FGTmdJQUlBWkJFR29rQUFzR0FFR284QklMRkFBZ0FFRUVha0VBSUFFb0FnUkIrWThOUmhzTERnQWdBQ2dDQkNBQkVKWVBRUUVMRlFBZ0FVSHc3eEkyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCOE84U0VOY0JDNllCQVFSL0l3QkJJR3NpQWlRQUlBSWdBQ2dDSURZQ0dDQUNJQUFwQWhnM0F4QWdBaUFBS1FJUU53TUlJQUVvQWdBaEFTTUFRUkJySWdRa0FDQUJFQndnQVNBQktBSU1RUUZxSWdNMkFnd2dCQ0FETmdJSUlBRkJqQUZxSWdNUXl3UWlCU0FCS0FJSUlBUW9BZ2dnQWtFSWFpQUFLUU1vSUFBb0FqQVEzZ29hSUFNZ0JSQW9JQU1nQXlnQ0dFRUJhallDR0NBRklRQWdCRUVRYWlRQUlBSkJJR29rQUNBQUN6d0JBbjhqQUVFUWF5SUJKQUFnQVNBQUtBSUVJZ0lnQWlnQ0FDZ0NZQkVBQURZQ0RDQUJRUXhxSUFCQkNHb1EvUmNoQUNBQlFSQnFKQUFnQUFzOEFRSi9Jd0JCRUdzaUFTUUFJQUVnQUNnQ0JDSUNJQUlvQWdBb0FuQVJBQUEyQWd3Z0FVRU1haUFBUVFocUVQNFhJUUFnQVVFUWFpUUFJQUFMZVFFRGZ5TUFRUkJySWdJa0FDQUNJQUFvQWdRaUFTQUJLQUlBS0FKQUVRQUFOZ0lNUVJnUUZTRUJJQUlvQWd3aEF5QUJRUUEyQWhBZ0FVSUFOd0lJSUFFZ0F6WUNCQ0FCUVlqdEVqWUNBQ0FCSUFNb0FoUTJBaFFnQVVFSWFpQUJLQUlNSUFBb0FnZ2dBQ2dDREJEZENpQUNRUkJxSkFBZ0FRdE1BUU4vSUFBZ0FDZ0NBQ2dDWUJFQUFDSUFLQUlFSVFJZ0FDZ0NBQ0VBQTBBZ0FDQUNSaUlEUlFSQUlBQW9BZ0FoQVNBQVFRUnFJUUFnQVNBQktBSUFLQUpjRVFBQURRRUxDeUFEQzNrQkEzOGpBRUVRYXlJQ0pBQWdBaUFBS0FJRUlnRWdBU2dDQUNnQ09CRUFBRFlDREVFWUVCVWhBU0FDS0FJTUlRTWdBVUVBTmdJUUlBRkNBRGNDQ0NBQklBTTJBZ1FnQVVHWTZ4STJBZ0FnQVNBREtBSVVOZ0lVSUFGQkNHb2dBU2dDRENBQUtBSUlJQUFvQWd3UTNRb2dBa0VRYWlRQUlBRUxQQUVDZnlNQVFSQnJJZ0VrQUNBQklBQW9BZ1FpQWlBQ0tBSUFLQUl3RVFBQU5nSU1JQUZCREdvZ0FFRUlhaEQvRnlFQUlBRkJFR29rQUNBQUN6d0JBbjhqQUVFUWF5SUJKQUFnQVNBQUtBSUVJZ0lnQWlnQ0FDZ0NLQkVBQURZQ0RDQUJRUXhxSUFCQkNHb1FnQmdoQUNBQlFSQnFKQUFnQUF0Q0FRTi9JQUFnQUNnQ0FDZ0NZQkVBQUNJQUtBSUVJUUVnQUNnQ0FDRUFBMEFnQUNBQlJpSUNSUVJBSUFBb0FnQWhBeUFBUVFScUlRQWdBMFVOQVFzTElBSUxRQUVDZnlNQVFSQnJJZ0VrQUNBQklBQW9BZ1FpQWlBQ0tBSUFLQUlnRVFBQU5nSU1RUmdRRlNBQktBSU1JQUF0QUJRUS9CY2hBQ0FCUVJCcUpBQWdBQXNLQUNBQVFRUnFFSUVZQ3dvQUlBQkJCR29ROWc0TERRQWdBQ2dDQkNBQUtBSUlSZ3QvQVFGL0l3QkJNR3NpQWlRQUlBSWdBQ2dDSURZQ0tDQUNJQUFwQWhnM0F5QWdBaUFBS1FJUU53TVlJQUlnQVNBQUtBSWtFSmNCTmdJVUlBSWdBU0FBS0FJb0VKY0JOZ0lRSUFJZ0FTQUFLQUlzRUpjQk5nSU1JQUVvQWdBZ0FrRVlhaUFDUVJScUlBSkJFR29nQWtFTWFoRDNGeUVBSUFKQk1Hb2tBQ0FBQ3dzQUlBQkI2TVFERUJRYUM3QUNBUWwvSXdCQlFHb2lBaVFBSUFJZ0FDZ0NJRFlDT0NBQ0lBQXBBaGczQXpBZ0FpQUFLUUlRTndNb0lBSWdBU0FBS0FJa0VNOEROZ0lrSUFJZ0FTQUFRU2hxRU9JRU5nSWdJQUlnQVNBQUtBSXNFSmNCTmdJY0lBSkJDR29pQXlBQklBQkJNR29ROGdVZ0FTZ0NBQ0VBSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBVFlDRENBRUlBRTJBZ2dqQUVFUWF5SUJKQUFnQUVHTUFXb2lCUkMzQkNFR0lBSW9BaHdoQnlBQ0tBSWdJUWdnQWlnQ0pDRUpJQVFvQWdnaENpQUFLQUlJSVFBZ0FTQURRUWhxTmdJSUlBRWdBeWdDQ0NBRFJ6b0FEQ0FHSUFBZ0NpQUNRU2hxSUFrZ0NDQUhJQUZCQ0dvUWloZ2FJQVVnQmhBb0lBVWdCU2dDR0VFQmFqWUNHQ0FCUVJCcUpBQWdCaUVBSUFSQkVHb2tBQ0FERUtvQklBSkJRR3NrQUNBQUM0d2JBUWwvSXdCQk1Hc2lCQ1FBSUFBZ0FDZ0NGRUVCYWpZQ0ZBSkFBbjhDUUFKQUFrQUNmMEVCSVFJQ1FBSkFBa0FDUUNBQkx3RUdJZ1ZCQ0dzT0JRTUNBZ0lBQVF0QkFDRUNJQUVvQWdoQkNrY05BaUFCS0FJQUtBSVFRZWNBYTBFQ1NRd0RDeUFGUWIwQ1JnMEJDMEVBSVFJTElBSUxCRUFnQUNnQ0JDSUZRUUU2QUtRR0lBQW9BaXdoQWlBQVFRQTJBaXdnQkNBQ0JIOGdBaUFDS0FJQUtBSUVFUU1BSUFBb0FnUUZJQVVMS0FJVU5nSVlJQUJCTUdvaEJRSkFJQUJCSUdvaUFDZ0NCQ0FBS0FJSVNRUkFJQUFnQUNnQ0JDQUVLQUlZSUFFZ0JSRFRGMEZBYXpZQ0JBd0JDeU1BUVNCcklnTWtBQ0FEUVFocUlBQWdBQ2dDQkNBQUtBSUFhMEVHZFVFQmFoQ21EaUFBS0FJRUlBQW9BZ0JyUVFaMUlBQkJDR29ReXhjaUFpZ0NDQ0FFS0FJWUlBRWdCUkRURnhvZ0FpQUNLQUlJUVVCck5nSUlJQUFnQWhES0Z5QUNFTWtYSUFOQklHb2tBQXNnQUNnQ0JCb01BUXNnQkNBQkx3RUdJZ1UyQWl3Q1FDQUZRUXhIRFFBZ0FTZ0NDQkRSQlVVTkFDQUJLQUlBSWdJb0FoQWhBd0pBQWtBZ0FTZ0NDRUVJYXc0REFBRUFBUXNDUUFKQUlBTkJGMnNPQWdBQkF3c2dBQ0FCTHdFRVFRZFBCSDRnQWpVQ0dFSWdoZ1ZDQUFzZ0FqVUNGSVEzQWpCQkFTRUJJQUFvQWdSQkFUb0FwQVlNQndzZ0FFSUFOd0l3UVFFaEFTQUFLQUlFUVFFNkFLUUdEQVlMQWtBQ1FDQURRUmRyRGdJQUFRSUxJQUFnQVM4QkJFRUhUd1IrSUFJMUFoaENJSVlGUWdBTElBSTFBaFNFTndJd1FRRWhBU0FBS0FJRVFRRTZBS1FHREFZTElBQkNBRGNDTUVFQklRRWdBQ2dDQkVFQk9nQ2tCZ3dGQ3lBRUFuOUJ3QUFRRlNFQ0lBQW9BZ1FvQWhRaEJ5TUFRUkJySWdNa0FDQUNRZ0EzQWdRZ0FpQUhOZ0lRSUFKQkFEb0FEQ0FDUWZUZ0VqWUNBQ0FDSUFFdkFRWTJBaFFnQWlBQktBSU1RUUJIT2dBWUlBSWdBU2dDRUVFQVJ6b0FHU0FIRUwwSElRY2dBa0VBTmdJb0lBSkNBRGNDSUNBQ0lBYzJBaHdnQWtFc2FpQUFRU0JxSWdjUXBRSWFJQUpDQURjQ09DQUNRU0JxSWdrZ0FTOEJHQkN0RGdOQUlBRXZBUmdnQmswRVFBSkFJQUlRMVJjRVFDQUhLQUlBSUFjb0FnUkhEUUVMSUFOQkVHb2tBQ0FDREFNTEJTQURJQUVvQWdBZ0FTZ0NGQ0FHUVFSMGFpSUlMd0VBUVFKMGFpSUtOZ0lNSUFNZ0NpQUlMd0VDUVFKMGFqWUNDQ0FKSUFoQkJHb2dBMEVNYWlBRFFRaHFFTlFYSUFaQkFXb2hCZ3dCQ3d0Qm02a0pRYXFvQWtIVUFFR0x6Z0lRQUFBTElnSTJBaWdDUUNBQ0tBSXdJZ01nQWlnQ0xFY0VRQUpBSUFBdEFEaEZEUUFnQTBGQWFoRFVDZzBBSUFJb0FqQkJRR29nQUNnQ0JDZ0NGQkRTRnlFR0lBQW9BaXdoQXlBQUlBWTJBaXdnQXdSL0lBTWdBeWdDQUNnQ0JCRURBQ0FBS0FJc0JTQUdDeENxRGtVTkFDQUFLQUlzSUFBb0FnUW9BaFFRc0FZUXFRNExJQWNROUFvTUFRc2dBQ2dDTENJRFJRMEFJQU1nQUVFd2FoQ25EaUFBS0FJc0lRZ0NRQ0FDUVN4cUlnTW9BZ1FnQXlnQ0NFY0VRQ0FESUFNb0FnUWdDQkRYQ2tGQWF6WUNCQXdCQ3lNQVFTQnJJZ2trQUNBSlFRaHFJQU1nQXlnQ0JDQURLQUlBYTBFR2RVRUJhaENtRGlBREtBSUVJQU1vQWdCclFRWjFJQU5CQ0dvUXl4Y2lCaWdDQ0NBSUVOY0tHaUFHSUFZb0FnaEJRR3MyQWdnZ0F5QUdFTW9YSUFZUXlSY2dDVUVnYWlRQUN5QUNLQUl3UVVCcUlBQW9BZ1FvQWhRUTBoY2hCaUFBS0FJc0lRTWdBQ0FHTmdJc0lBTUVmeUFESUFNb0FnQW9BZ1FSQXdBZ0FDZ0NMQVVnQmdzUXFnNUZEUUFnQUNnQ0xDQUFLQUlFS0FJVUVMQUdFS2tPQ3lBQUtBSUlJUU1nQUN3QUV5RUdJQUFvQWhRaENDQUVRZ0EzQWh3Z0JDQUlOZ0lZSUFNZ0FFRUlhaUFHUVFCSUd5RURBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRlFUWnJEZ01BQXdFQ0N5QUFLQUlZUlEwRElBQW9BZ0FnQXlBRVFSaHFRY1hQQWhDc0JrRUFEQTBMSUFBb0FoZ2lCVVVFUUNBQUtBSUFJQU1nQkVFWWFrR24wd0lRckFaQkFBd05DeUFBS0FJY0JFQWdBQ2dDQUNBRElBUkJHR3BCL3B3REVLd0dRUUFNRFFzZ0JFRUFOZ0lvSUFVb0FtQWhBU0FGSUFJMkFtQWdBUVJBSUFFZ0FTZ0NBQ2dDQkJFREFBc2dBQ2dDR0NFQklBQkJBRFlDR0NBQUtBSUVJQUVReHhjZ0FFRVlha0VBRVBFS0RBc0xJQVZCK0FGR0RRa0xJQVVRaWc0aENDQUFLQUlZSVFZZ0NBUkFJQVpGQkVBZ0FDZ0NBQ0FESUFSQkdHcEJoTThDRUt3R1FRQU1EQXNnQUNnQ0hDSUJSUVJBSUFBb0FnQWdBeUFFUVJocVFiaWNBeENzQmtFQURBd0xJQUJCSEdvaEJTQUFLQUl3QkVBZ0FpQUFRVEJxRUtjT0lBVW9BZ0FoQVFzZ0JFRUFOZ0lvSUFJZ0FVRU1haEQ0QVNBQUtBSWNJUUVnQUVFQU5nSWNJQUFvQWhnZ0FSRGJGeUFGUVFBUTJBZ2dBRUlBTndJd0lBQW9BaXdoQVNBQVFRQTJBaXdnQVFSQUlBRWdBU2dDQUNnQ0JCRURBQXNnQnhEMENnd0tDeUFHUlFSQUlBQW9BaHdOQWdKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRlFRSnJEaEFIQndjSUNBY0lDQUlEQ0FnRUJRWUJBQXNnQlVITEFrWU5CU0FGUVpVcVJ3MEhJQUFvQWdRaEFTQUVRUUEyQWlnZ0FTZ0M2QUVoQUNBQklBSTJBdWdCSUFCRkRSQWdBQ0FBS0FJQUtBSUVFUU1BREJJTElBSWdBQ2dDQkVFY2FoRDRBUXdQQ3lBQ0lBQW9BZ1JCNEFCcUVQZ0JEQTRMSUFJZ0FDZ0NCRUdrQVdvUStBRU1EUXNnQUNnQ0JDRUJJQVJCQURZQ0tDQUJLQUxrQVNFQUlBRWdBallDNUFFZ0FFVU5EQ0FBSUFBb0FnQW9BZ1FSQXdBTURnc2dBaUFBS0FJRVFmQUJhaEQ0QVF3TEN5QUNJQUFvQWdSQnRBSnFFUGdCREFvTElBSWdBQ2dDQkVINEFtb1ErQUVNQ1FzZ0JVRUZhMEVCVFFSQUlBSWdBQ2dDQkVHOEEyb1ErQUVNQ1FzZ0JVSEtBa1lFUUNBQ0lBQW9BZ1JCZ0FScUVQZ0JEQWtMSUFVUTRoY0VRQ0FDSUFBb0FnUkJpQVZxRVBnQkRBa0xJQVVRcFE0RVFDQUNJQUFvQWdSQnpBVnFFUGdCREFrTEFrQUNRQ0FGUWVBclJpQUZRU2xyUVF4SmNpQUZRVHRHY2tVRVFDQUZRUXhHRFFFZ0JVRUJSdzBDQ3lBQ0lBQW9BZ1JCekFWcUVQZ0JEQW9MSUFFb0FnZ1EwUVVFUUNBQ0lBQW9BZ1JCeEFScUVQZ0JEQW9MSUFFb0FnZ1FzQWRGRFFBZ0FDZ0NCQ0lBS0FLTUJpQUFLQUtRQmlJQlJnUkFJQUlnQUVITUJXb1ErQUVNQ2dzZ0FVRUVheWdDQUNFQkl3QkJFR3NpQUNRQUlBQWdBallDQ0NBQlFlUUFhaUFBUVFocUVKY0ZJQUFvQWdnaEFTQUFRUUEyQWdnZ0FRUkFJQUVnQVNnQ0FDZ0NCQkVEQUFzZ0FFRVFhaVFBREFrTElBQW9BZ0FnQXlBRVFSaHFRYkxRQnlBRVFTeHFFTHNIUVFBTUN3c0NRQ0FGUWY3L0EzRkI5Z0ZHQkVBZ0FFSUFOd0l3REFFTElBQW9BakJGRFFBZ0FpQUFRVEJxRUtjT0N3SkFJQVZCREVZRVFDQUJLQUlJRU5FRkJFQWdBU2dDQUNnQ0VDRUZBa0FDUUFKQUlBRW9BZ2hCQ0dzT0F3QUNBUUlMQWtBQ1FBSkFJQVZCSEdzT0FnQUJBZ3NnQUNnQ0hDSUJSUVJBSUFJZ0FDZ0NHRUVVYWhENEFRd1BDeUFDSUFGQkRHb1ErQUVNRGdzZ0FDZ0NIQ0lCUlFSQUlBSWdBQ2dDR0VFVWFoRDRBUXdPQ3lBQ0lBRkJER29RK0FFTURRc2dBQ2dDQUNBRElBUkJHR3BCM3M4Q0lBUkJMR29RdXdkQkFBd1BDMEVCSUFWMFFZQ0FnSXdEY1VVZ0JVRWRTM0lOQ1F3S0N3SkFBa0FDUUNBRlFSeHJEZ0lBQVFJTElBQW9BaHdpQVVVRVFDQUNJQUFvQWhoQkZHb1ErQUVNRFFzZ0FpQUJRUXhxRVBnQkRBd0xJQUFvQWh3aUFVVUVRQ0FDSUFBb0FoaEJGR29RK0FFTURBc2dBaUFCUVF4cUVQZ0JEQXNMSUFBb0FnQWdBeUFFUVJocVFmRFFBaUFFUVN4cUVMc0hRUUFNRFFzZ0FDZ0NIQ0lCUlEwRkRBRUxJQUFvQWh3aUFVVU5Bd3NnQWlBQlFReHFFUGdCREFjTFFmQUFFQlVoQVNBRUtBSW9JUUlnQkVFQU5nSW9JQUZDQURjQ0JDQUJJQUkyQWdBZ0FVSUFOd0lrSUFGQkZHb2lBa0gwNEJJMkFnQWdBVUVBTmdJTUlBRkJBRHNCTENBQlFUQnFRUUJCSkJCNUdpQUJRUUU2QUNBZ0FTQUNOZ0ljSUFFZ0FqWUNHQ0FCUWdBM0FsUWdBVUdrNFJJMkFoQWdBVUlBTndKY0lBRkNBRGNDWkNBQlFRQTJBbXdnQkVFQU5nSUlJQUJCR0dvZ0FSRHhDaUFFUVFocUVOa0lHZ3dJQ3lBQUtBSUFJUUFnQkVFQU5nSVFJQVJDdHdFM0F3Z2dBRUVCUWJ1bUFpQUVRUWhxUWRQSEFSRFBCRUVCRUFNQUN5QUZRVGRHRFFFTElBQW9BZ0FnQXlBRVFSaHFRZVdiQXlBRVFTeHFFTHNIUVFBTUJnc2dBQ2dDR0NFQkl3QkJFR3NpQUNRQUlBQWdBallDQ0NBQlFRUnFJQUJCQ0dvUWx3VWdBQ2dDQ0NFQklBQkJBRFlDQ0NBQkJFQWdBU0FCS0FJQUtBSUVFUU1BQ3lBQVFSQnFKQUFNQWdzZ0JVSGxBRVlOQUNBQUtBSUFJQU1nQkVFWWFrSHcwQUlnQkVFc2FoQzdCMEVBREFRTElBQW9BaHdpQVVVRVFDQUFLQUlBSUFNZ0JFRVlha0djbXdNZ0JFRXNhaEM3Qnd3REN5QUNJQUZCREdvUStBRUxRUUVoQVF3REN5QUFLQUlZUlFSQUlBQW9BZ0FnQXlBRVFSaHFRYXpQQWhDc0JrRUFEQUlMSUFBb0Fod0VRQ0FBS0FJQUlBTWdCRUVZYWtIam5BTVFyQVpCQUF3Q0MwSE1BQkFWSVFFZ0JDZ0NLQ0VDSUFSQkFEWUNLQ0FCSUFJMkFnUWdBVUVBTmdJQUlBRkNBRGNDSENBQlFReHFJZ0pCOU9BU05nSUFJQUZCQURzQkpDQUJRU2hxUVFCQkpCQjVHaUFCUVFFNkFCZ2dBU0FDTmdJVUlBRWdBallDRUNBQlFhVGhFallDQ0NBRVFRQTJBZ2dnQUVFY2FpQUJFTmdJSUFSQkNHb1F1Z1lhQzBFQkN5RUJJQVFvQWlnaEFDQUVRUUEyQWlnZ0FFVU5BQ0FBSUFBb0FnQW9BZ1FSQXdBTElBUkJNR29rQUVFQVFYd2dBUnNMTEFBZ0FDZ0NCQ0lBSUFZMkFoQWdBQ0FGTmdJTUlBQWdCRFlDQ0NBQUlBTTJBZ1FnQUNBQ05nSUFRUUFMQmdCQm9PUVNDeFFBSUFCQkJHcEJBQ0FCS0FJRVFhNkpEVVliQ3dZQVFaL3BBQXNzQVFGL0lBQW9BZ1FpQWkwQUFFVUVRQ0FBS0FJSUlBRW9BZ0FvQWdBUWlnSVBDeUFDUVFBNkFBQkJBUXNWQUNBQlFlampFallDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUhvNHhJUW9RRUxCZ0JCMk9NU0N4UUFJQUJCQ0dwQkFDQUJLQUlFUWJDSERVWWJDeEVBSUFCQkNHb2dBU2dDQUJEQkJrRUJDdzBBSUFCQkNHb1FGaUFBRUI4TEdRQWdBVUdnNHhJMkFnQWdBVUVJYWlBQVFRaHFFTkVCR2dzaEFRRi9RU0FRRlNJQlFhRGpFallDQUNBQlFRaHFJQUJCQ0dvUTBRRWFJQUVMQ1FBZ0FCQ0xHQkFmQ3pvQkFYOGpBRUVRYXlJREpBQWdBeUFBTmdJTUlBTWdBVFlDQ0NBRElBSTJBZ1FnQXlnQ0RFRUVhaUFES0FJSUVNVU9HaUFEUVJCcUpBQUxLZ0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDSUFFTUFPR2lBQUVCOGdBVUVRYWlRQUN3MEFJd0JCRUdzZ0FEWUNEQUFMQndBZ0FDZ0NMQXNIQUNBQUxRQXBDd2NBSUFBdEFDZ0xJQUVCZnlBQklBQW9BaUJKQkg4Z0FDZ0NIQ0FCUVFKMGFpZ0NBQVZCQUFzTC9nRUJCWDhqQUVFd2F5SURKQUFnQXlBQUtBSUlJZ0lnQVNBQ0tBSUFLQUlZRVFFQU5nSXNJQU5DZ0lDQWdNQUFOd0lrSUFNZ0EwRVFhallDSUNBQUtBSWNJZ0lnQUNnQ0lFRUNkR29oQkFOL0lBSWdCRVlFZnlBQktBSU1JUUVqQUVFUWF5SUNKQUFnQVJDMUJ5RUVJQU1vQWl3aEJTQUNRUUE2QUF3Z0FpQURRUkJxSWdaQkVHbzJBZ2dnQkNBRklBSkJDR29nQUMwQUtDQUFMUUFwRU1JWUdpQUJJQVFRS0NBQklBRW9BaGhCQVdvMkFoZ2dBa0VRYWlRQUlBUWhBQ0FHRUY0Z0EwRXdhaVFBSUFBRklBTWdBaWdDQUNJRklBRWdCU2dDQUNnQ0lCRUJBRFlDRENBQ1FRUnFJUUlnQTBFUWFpQURRUXhxRUhFTUFRc0xDd3dBSUFBUXZoZ2FJQUFRSHd0REFRSi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJRUWhxSWdJZ0FTZ0NEQ0lBRU9vS0VNQVlJQUJCREdvUXV4Z2dBaUFBRUlNQlFRRVF2eGdnQVVFUWFpUUFDM1lCQkg4akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFJb0Fnd1E2Z29oQVNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNnQ0RDSUVRUXhxSVFNakFFRVFheUlCSkFBZ0FTQUROZ0lNSUFFb0Fnd2lBMEVNYWhDMkdDQURFQThhSUFGQkVHb2tBQ0FFRUE4YUlBQkJFR29rQUNBQ1FSQnFKQUFMS2dFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQ0lBRUx3WUdpQUFFQjhnQVVFUWFpUUFDeDRCQW53Z0Fpc0RBQ0lEdlNBQkt3TUFJZ1M5aFVJQVdTQURJQVJoY1FzTkFDQUJLUU1BSUFJcEF3QlJDd1FBUVFFTEZRQWdBVUdNNGhJMkFnQWdBU0FBS0FJRU5nSUVDd3NBSUFCQmpPSVNFTmNCQzNNQkEzOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQUtBSUVJZ01nQVNnQ0FDSUJLQUlBRU5zRkFrQWdBaWdDQ0VFQVJ5QUNLQUlNUVFCSGNTSUVSUVJBSUFOQkFEb0FsQU1nQTBHb0JHcEIyc0VMRUJrZ0FSQXZHZ3dCQ3lBQUtBSUlJQUpCQ0dwQkJISVFKQXNnQWtFUWFpUUFJQVFMRlFBZ0FVSG80UkkyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCNk9FU0VLRUJDK1VCQVFOL0l3QkJFR3NpQXlRQUlBTWdBU2dDQUNJQk5nSU1JQUFvQWdRaEJDQUFLQUlRSWdJZ0FpZ0NBRUVCYWpZQ0FBSkFJQUVvQWhRaUFrRzlBa2NFUUNBQ1FRaEhEUUVnQUNnQ0NFRUJPZ0FBSUFGQkFSQTRJUUlnQUNnQ0RDQUNOZ0lBSUFGQkFoQTRJUUVnQUNnQ0RDQUJOZ0lFREFFTElBQW9BZ2hCQURvQUFBc2dBRUVNUVJBZ0FDZ0NDQzBBQUJ0cUtBSUFJUUVqQUVFZ2F5SUFKQUFnQUNBRFFReHFJZ0kyQWhBZ0FFRVlhaUFFUWRBRmFpQUNJQUJCRUdvUThCZ2dBQ2dDR0NFRUlBQkJJR29rQUNBRVFReHFJQUVwQWdBM0FnQWdBMEVRYWlRQUN3MEFJQUFnQVVIRTRSSVF0Z1VMQ3dBZ0FFSEU0UklRdHdVTENRQWdBQkRhRGhBZkN3a0FJQUFRa2dNUUh3c0pBQ0FBRU9VT0VCOExDQUFnQUJCdEVCOExDUUFnQUJEYUNCQWZDMTBBSXdCQkVHc2lBaVFBSUFFb0FnQWhBU0FDSUFRb0FnQTJBZ3dnQVVFRGEwRUNUd1JBSUFBb0FnUWlBRUVBT2dDVUF5QUFRYWdFYWtIUjZnWVFHU0FEUVFocUVDOUI3YlVNRUJrZ0FrRU1haEN3QXhvTElBSkJFR29rQUFzVkFDQUJRZERnRWpZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVIUTRCSVExd0VMZUFFRWZ5QUJLQUlBSVFJakFFRVFheUlFSkFBZ0FoQWNJQUlnQWlnQ0RFRUJhaUlETmdJTUlBUWdBellDQ0NBQ1FZd0JhaUlERUtNT0lnVWdBaWdDQ0NBRUtBSUlJQUpCMkFKcUVOb1pHaUFESUFVUUtDQURJQU1vQWhoQkFXbzJBaGdnQlNFQ0lBUkJFR29rQUNBQ0lBRWdBQkNSR1NBQ0M4MEJBUVYvSXdCQjRBQnJJZ0lrQUNBQ0lBQW9BaUEyQWxnZ0FpQUFLUUlZTndOUUlBSWdBQ2tDRURjRFNDQUNRU2hxSWdZZ0FTQUNRUWhxSUFCQkpHb1FWaER2QnlBQktBSUFJUUFqQUVFUWF5SUJKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUROZ0lNSUFFZ0F6WUNDQ01BUVNCcklnUWtBQ0FBUVl3QmFpSURFUHdISWdVZ0FDZ0NDQ0FCS0FJSUlBSkJ5QUJxSUFRZ0JoQldFSjBQR2lBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JFRWdhaVFBSUFVaEFDQUJRUkJxSkFBZ0FrSGdBR29rQUNBQUN3MEFJQUFnQVVFZ2FoQ0tCQm9MREFBZ0FCRCtEaG9nQUJBZkN3d0FJQUFRc2hrYUlBQVFId3NYQUNBQUtBSUlJQUVvQWdBb0FnQWdBQ2dDQkJENUdRc1ZBQ0FCUWREZEVqWUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFSFEzUklRb1FFTEZRQWdBVUdzM1JJMkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQnJOMFNFS0VCQzBnQkFuOGpBRUVnYXlJQ0pBQWdBQ2dDQ0NFRElBSkJBRFlDR0NBQ1FnQTNBeEFnQWtJQU53TUlJQU1nQWtFSWFpQUJFTm9ISVFFZ0FDZ0NCQ0FCTmdJa0lBSkJJR29rQUFzVkFDQUJRWWpkRWpZQ0FDQUJJQUFwQWdRM0FnUUxDd0FnQUVHSTNSSVFvUUVMeUFFQkIzOGpBRUVnYXlJREpBQWdBMEVBTmdJWUlBTkNBRGNERUNBRFFnQTNBd2dqQUVFUWF5SUVKQUFnQVJBY0lBRWdBU2dDREVFQmFpSUNOZ0lNSUFRZ0FqWUNDQ01BUVJCcklnSWtBQ0FCUVl3QmFpSUZFTGdlSVFZZ0FDZ0NLQ0VISUFBb0FpUWhBQ0FFS0FJSUlRZ2dBU2dDQ0NFQklBSkJBRG9BRENBQ1FjQ2NJRFlDQ0NBRklBWWdBU0FJSUFOQkNHb2dBQ0FISUFKQkNHb1EwQjRpQUJBb0lBVWdCU2dDR0VFQmFqWUNHQ0FDUVJCcUpBQWdCRUVRYWlRQUlBTkJJR29rQUNBQUM0TUNBUWQvSXdCQklHc2lBaVFBSUFBb0FnUWhBeUFDUVFBMkFoZ2dBa0lBTndNUUlBSkNBRGNEQ0NBQ0lBTWdBa0VJYWlJR0lBRVEyZ2MyQWh3Z0FrRUFOZ0lZSUFKQ0FEY0RFQ0FDUWdBM0F3Z2dBeWdDQ0NFQkl3QkJFR3NpQkNRQUlBRVFIQ0FCSUFFb0FneEJBV29pQXpZQ0RDQUVJQU0yQWdnakFFRVFheUlESkFBZ0FVR01BV29pQlJDM0JDRUhJQVFvQWdnaENDQUJLQUlJSVFFZ0EwRUFPZ0FNSUFNZ0FFRWdhallDQ0NBRklBY2dBU0FJSUFZZ0EwRUlhaUFDS0FJY0VLNFJJZ0VRS0NBRklBVW9BaGhCQVdvMkFoZ2dBMEVRYWlRQUlBUkJFR29rQUNBQUtBSUlLQUk0SUFBb0FneEJBblJxSUFFMkFnQWdBa0VnYWlRQUN3MEFJQUJCRUdvUVhpQUFFQjhMR0FBZ0FVR3czQkkyQWdBZ0FVRUVhaUFBUVFScUVLb1pDeUFCQVg5QkxCQVZJZ0ZCc053U05nSUFJQUZCQkdvZ0FFRUVhaENxR1NBQkN3a0FJQUFRcXhrUUh3dVpBd0VKZnlNQVFkQUFheUlDSkFBQ1FDQUNRVEJxSUFCQktHb1FuUXdpQlNnQ0VDSURJQU1nQlNnQ0ZFRUNkR29pQkVZTkFBTkFJQU1nQkVFRWF5SUVUdzBCSUFNb0FnQWhCaUFESUFRb0FnQTJBZ0FnQkNBR05nSUFJQU5CQkdvaEF3d0FDd0FMSUFKQkFEWUNLQ0FDUWdBM0F5QWdBaUFGUVJCcU5nSVFJQUpDQURjREdDQUZLQUlRSVFNZ0FrRUFPZ0FNSUFKQndKd2dOZ0lJSUFKQkFEb0FCQ0FDUWNDY0lEWUNBQ0FDSUFNZ0JVYzZBQlFqQUVFUWF5SURKQUFnQXlBQUtBSWtOZ0lNSXdCQkVHc2lCQ1FBSUFFUUhDQUJJQUVvQWd4QkFXb2lBRFlDRENBRUlBQTJBZ2dqQUVFZ2F5SUFKQUFnQVVHTUFXb2lCaEN6QlNFSElBTW9BZ3doQ0NBRUtBSUlJUWtnQVNnQ0NDRUJJQUlvQWhBaENpQUFRUUE2QUJ3Z0FDQUtOZ0lZSUFBZ0Fpa0NDRGNERUNBQUlBSXBBZ0EzQXdnZ0JpQUhJQUVnQ1NBQ1FSaHFJQWdnQUVFWWFpQUFRUkJxSUFCQkNHb1FxeDRpQVJBb0lBWWdCaWdDR0VFQmFqWUNHQ0FBUVNCcUpBQWdCRUVRYWlRQUlBRWhBQ0FEUVJCcUpBQWdCUkJlSUFKQjBBQnFKQUFnQUFzSkFDQUFFSzhaRUI4TEZRQWdBVUhjMnhJMkFnQWdBU0FBS1FJRU53SUVDd3NBSUFCQjNOc1NFS0VCQzBvQkFYOGpBRUVRYXlJQ0pBQWdBaUFCS0FJQU5nSU1JQUFvQWdnZ0FrRU1haENwQWtVRVFDQUFLQUlFSUFKQkRHb2lBUkNuQkNBQ0lBQW9BZ2dnQVJDV0FRc2dBa0VRYWlRQUN4VUFJQUZCdU5zU05nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFiamJFaENoQVFzckFRRi9Jd0JCRUdzaUFpUUFJQUlnQVNnQ0FEWUNEQ0FBS0FJRUlBSkJER29RcHdRZ0FrRVFhaVFBQ3hVQUlBRkJsTnNTTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUVpUYkVoRFhBUXNhQUNBQUtBSUlJQUVvQWdCR0JFQWdBQ2dDQkVFQk9nQUFDd3NWQUNBQlFmRGFFallDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUh3MmhJUW9RRUwrQUVCQTM4akFFRVFheUlDSkFBZ0FpQUJLQUlBSWdRMkFnd2dBQ2dDQkNFQkFuOGdBRUVNYWlJREtBSUFJQVJHQkVBZ0FTZ0NIQ0lCS0FJQVFRQTZBQUFnQVVHZ293b1FHU0VCSUFJZ0FDZ0NDQkRxQXpZQ0NDQUJJQUpCQ0dvUUwwSDFtUW9RR1NBREVDOG9BZ0F0QUFCQkFFY01BUXRCQVNBQklBUVFmQTBBR2lBQktBSWNJZ01vQWdCQkFEb0FBQ0FEUWFDakNoQVpJUU1nQWlBQUtBSUlFT29ETmdJSUlBTWdBa0VJYWhBdlFjV0hDaEFaSVFBZ0FpQUJLQUlrS0FJQUVHQTJBZ1FnQUNBQ1FRUnFFQzlCMDRBS0VCa2dBa0VNYWhBdlFkN09BaEFaS0FJQUxRQUFRUUJIQ3lFRElBSkJFR29rQUNBREN3MEFJQUFnQVVITTJoSVExZ0VMQ3dBZ0FFSE0yaElRNVFFTDh3TUJDWDhqQUVIQUFXc2lBaVFBSUFBb0FnUWhCaUFCS0FJQUlnVkZCRUFnQWtFUWFrRzVvUVZCa1F0QkJ5QUNRYkFCYWhBZElnRVFGeUlEUVJocVFjV3JDQkFPR2lBREVCZ2dBUkFlQ3lBR0lBVVFnUm9oQXlBR0tBSUFJUUVnQWdKL0lBTUVRQ0FCSUFVUTNBZ01BUXNnQVNBRkVIcEJBQkNGQVFzaUJEWUNEQ0FFQkVBZ0JpZ0NBQ0VESUFVUVlDRUhJQUpDQURjREtDQUNRZ0EzQXlBZ0FrSUFOd01ZSUFKQ2dJQ0FnSUFCTndJMElBSkNBRGNERUNBQ1FnQTNBMEFnQWlBQ1FSQnFJZ2cyQWpBakFFSFFBR3NpQVNRQUlBRWdCRFlDVEVFQUlRUWdBeUFISUFGQnpBQnFJQWhCQUJEYkNBUkFJQU5CSUdvaUNoQWNJQU5CeUFScUlBY1Frd0lpQkNnQ0FDRUhJQUVnQkNnQ0JDQUVMUUFMSWdrZ0NVRVlkRUVZZFVFQVNDSUpHellDTENBQklBY2dCQ0FKR3pZQ0tDQUJJQUVwQXlnM0F3QWdBVUV3YWlJRUlBTkJxQUpxSUFFUW1BTWdBVUVBTmdJZ0lBRkNBRGNER0NBQlFnQTNBeEFnQVNnQ1RDSURJQW9nQXlnQ0FDZ0NDQkVCQUNFRElBRkJBRG9BRENBQklBaEJJR28yQWdnZ0NpQUJRUkJxSUFRZ0F5QUJRUWhxRUw0UElRUUxJQUZCMEFCcUpBQWdDQkFqSUFJZ0JEWUNDQ0FBS0FJSUlBSkJDR29RSkNBQ0lBVVFZRFlDQkNBQ1FiQUJhaUFHUWNBR2FpQUNRUVJxSUFKQkRHb1E3Z2dMSUFKQndBRnFKQUFMRlFBZ0FVR28yaEkyQWdBZ0FTQUFLUUlFTndJRUN3c0FJQUJCcU5vU0VLRUJDeFVBSUFGQmhOb1NOZ0lBSUFFZ0FDa0NCRGNDQkFzTEFDQUFRWVRhRWhDaEFRc1ZBQ0FCUWVEWkVqWUNBQ0FCSUFBcEFnUTNBZ1FMQ3dBZ0FFSGcyUklRb1FFTFJnRUJmeU1BUVNCcklnSWtBQ0FDUVFBMkFoZ2dBa0lBTndNUUlBSkNBRGNEQ0NBQklBSkJDR29nQUVFa2FpQUFRU2hxSUFCQkxHb1E1eGtoQUNBQ1FTQnFKQUFnQUFzVkFDQUJRZmpZRWpZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVINDJCSVFud01MREFBZ0FCQ1FDeG9nQUJBZkMxQUJBbjhqQUVFZ2F5SUNKQUFnQVNnQ0pBUkFJQUFvQWdnaEF5QUNRUUEyQWhnZ0FrSUFOd01RSUFKQ0FEY0RDQ0FESUFKQkNHb2dBUkRhQnlFQklBQW9BZ1FnQVRZQ0xBc2dBa0VnYWlRQUN4VUFJQUZCMU5nU05nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFkVFlFaENoQVF0dkFRTi9JQUVvQWdBaEFpTUFRUkJySWdFa0FDQUJJQUkyQWd3Z0FDZ0NDQ0VDSUFBb0FnUkJ4QUJxSVFNakFFRWdheUlBSkFBZ0FDQUJRUXhxSWdRMkFoQWdBRUVZYWlBRElBUWdBRUVRYWhDRER5QUFLQUlZSVFNZ0FFRWdhaVFBSUFNZ0FqWUNEQ0FCUVJCcUpBQUxGUUFnQVVHdzJCSTJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkJzTmdTRUljR0N4VUFJQUZCak5nU05nSUFJQUVnQUNnQ0JEWUNCQXNMQUNBQVFZellFaENmQXdzckFRRi9Jd0JCRUdzaUFpUUFJQUlnQVNnQ0FEWUNEQ0FBS0FJRUlBSkJER29RdXhrZ0FrRVFhaVFBQ3hVQUlBRkI2TmNTTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUWVqWEVoRFhBUXZYQVFFRGZ5TUFRU0JySWdNa0FDQURJQUFvQWlBMkFoZ2dBeUFBS1FJWU53TVFJQU1nQUNrQ0VEY0RDQUovSUFBb0FpZ2hBaUFCS0FJRUlnUUVRQ0FFS0FJQUlBSVFWMEVCUVFGQjFaNElRZENuQTBId0FCQkxDMEVBSUFFZ0FoRE5BeUlDUlEwQUdnSi9JQUlFUUNBQ0lBSW9BZ1JCcVBVUFJnMEJHaUFCSUFKQnFQVVBFT0VFQzBFQUN5RUNJQUVvQWdBb0FnZ2dBaEJYUVFGQkFVR2htd2hCMEtjRFFmUUFFRXNnQWdzaEFpQURJQUFvQWlRZ0FoQ1dHaUVBSUFFb0FnQWdBMEVJYWlBQUVPVVpJUUFnQTBFZ2FpUUFJQUFMcFFRQkIzOGpBRUVnYXlJREpBQWdBeUFBS0FJZ05nSVlJQU1nQUNrQ0dEY0RFQ0FESUFBcEFoQTNBd2dnQXlBQklBQW9BaWdRendNMkFnUWdBeUFCSUFBb0FpUVF6d01pQURZQ0FBSi9JQUFFUUNBQktBSUFJUUFqQUVFUWF5SUZKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUJOZ0lNSUFVZ0FUWUNDQ0FBUVl3QmFpSUdFTVVDSVFjZ0FDZ0NDQ0VCSUFVb0FnZ2hCQ0FES0FJQUlRZ2dBeWdDQkNFQ0l3QkJ3QUZySWdBa0FDQUFJQVEyQXJBQklBQWdBVFlDdUFFZ0J5QUFRYmdCYWlBQVFiQUJhaUFEUVFocUVJOGFJZ0VnQWpZQ0tDQUJJQWcyQWlRZ0FVSEk5UTgyQWdBZ0FnUi9JQUlGSUFCQi9iTUZRU3hCQUNBQVFhQUJhaEFkSWdJUUZ5SUVRUmhxUWVTc0NCQU9HaUFFRUJnZ0FoQWVJQUVvQWlnTEVGY2dBU2dDQ0VFQlFRQkJ6YzBJUWYyekJVRXRFRXNDUUNBQktBSW9JZ0pGRFFBZ0FpZ0NCRUhJNlE5SERRQWdBRUg5c3dWQk1FRUFJQUJCb0FGcUVCMGlBaEFYSWdSQkdHcEJ2dXNJRUE0YUlBUVFHQ0FDRUI0TEFrQWdBU2dDSkNJQ1JRMEFJQUlvQWdnZ0FTZ0NDRUVCUVFCQm9NQUlRZjJ6QlVFekVFc2dBU2dDSkNnQ0JFSEk2UTlIRFFBZ0FFSDlzd1ZCTlVFQUlBQkJvQUZxRUIwaUFSQVhJZ0pCR0dwQjB1b0lFQTRhSUFJUUdDQUJFQjRMSUFCQndBRnFKQUFnQmlBSEVDZ2dCaUFHS0FJWVFRRnFOZ0lZSUFjaEFDQUZRUkJxSkFBZ0FBd0JDeUFCS0FJQUlBTkJDR29nQTBFRWFoQ0ZHZ3NoQUNBRFFTQnFKQUFnQUFzSkFDQUFFUGtJRUI4TExBRUJmeU1BUVJCcklnSWtBQ0FDSUFFb0FnZ1FYeUFBUWFHZENTQUNFRFVnQWhBUEdpQUNRUkJxSkFBTGN3RURmeU1BUVpBQmF5SUVKQUFnQkJCSklnSkJDR3BCcjd3RkVBNGFJQUlnQVNnQ0NCQ2VCQ0lEUVFocVFkcnBCaEFPR2lBRElBRW9BZ3dRMVE4aUEwRUlha0gwN1F3UURob2dBeUFCS0FJUUVMWUxRUWhxUVl2bUJoQU9HaUFBSUFKQkRHb1FRaUFDRUZFZ0JFR1FBV29rQUFzTkFDQUFJQUZCcHJ3RkVNNFNDdzBBSUFBZ0FVSDB2QVVRemhJTERRQWdBQ0FCUWVDOEJSRFBFZ3NOQUNBQUlBRkJsN3dGRU04U0N5RUFJQUJCZ2NNQ1FacmlCaUFCS0FJSUlnQkJBVVliUVp6bUFTQUFHeEFVR2d1TEFRRUVmeU1BUWFBQmF5SUNKQUFnQWtFUWFoQkpJZ1JCQ0dvaUEwSGs1Z1lRRGhvZ0FpQUJLQUlJSWdVZ0JTZ0NBQ2dDREJFQ0FDQURJQUlRRWhvZ0EwSDA3UXdRRGhvZ0JDQUJRUXhxRU1zRElnTkJDR3BCOU8wTUVBNGFJQU1nQVVFUWFoRExBMEVJYWtHTDVnWVFEaG9nQWhBUEdpQUFJQVJCREdvUVFpQUVFRkVnQWtHZ0FXb2tBQXVLQVFFRGZ5TUFRYUFCYXlJQ0pBQWdBa0VRYWhCSklnUkJDR3BCaWZzQUVBNGFJQVFnQVVFTWFoRExBeUlEUVFocVFkb25FQTRhSUFNZ0FVRVFhaERMQTBFSWFpSURRZHJwQmhBT0dpQUNJQUVvQWdnaUFTQUJLQUlBS0FJTUVRSUFJQU1nQWhBU0dpQURRWXZtQmhBT0dpQUNFQThhSUFBZ0JFRU1haEJDSUFRUVVTQUNRYUFCYWlRQUMzVUJBMzhqQUVHZ0FXc2lBaVFBSUFKQkVHb1FTU0lEUVFocVFaMktCUkFPR2lBRElBRkJER29ReXdOQkNHb2lCRUhhNlFZUURob2dBaUFCS0FJSUlnRWdBU2dDQUNnQ0RCRUNBQ0FFSUFJUUVob2dCRUdMNWdZUURob2dBaEFQR2lBQUlBTkJER29RUWlBREVGRWdBa0dnQVdva0FBdVNBUUVGZnlNQVFjQUJheUlDSkFBZ0FrRXdhaEJKSVFNZ0FrRVFhaUlGSUFGQkRHb1Erd1VnQWtFZ2FpSUdRWnZuQmlBRkVEVWdBMEVJYWlJRUlBWVFFaG9nQkVIMDdRd1FEaG9nQWlBQktBSUlJZ0VnQVNnQ0FDZ0NEQkVDQUNBRUlBSVFFaG9nQkVHTDVnWVFEaG9nQWhBUEdpQUdFQThhSUFVUUR4b2dBQ0FEUVF4cUVFSWdBeEJSSUFKQndBRnFKQUFMa0FFQkJIOGpBRUhBQVdzaUFpUUFJQUpCTUdvUVNTSUVRUWhxSWdOQmx1Y0dFQTRhSUFKQklHb2lCU0FCUVF4cUVQc0ZJQU1nQlJBU0dpQURRZlR0REJBT0dpQUNJQUVvQWdnaUFTQUJLQUlBS0FJTUVRSUFJQUpCRUdvaUFTQUNRWXZtQmhBdElBTWdBUkFTR2lBQkVBOGFJQUlRRHhvZ0JSQVBHaUFBSUFSQkRHb1FRaUFFRUZFZ0FrSEFBV29rQUFzTUFDQUFFSjBMR2lBQUVCOExHUUFnQVVFRWFpQUFLQUlJSUFBb0Fnd2dBQ2dDRUJDV0d3c2pBQ0FCUVFScUlBQW9BZ2dnQUNnQ0RDSUFJQUVnQUNnQ0FDZ0NDQkVCQUJDWUd3c2pBQ0FCUVFScUlBQW9BZ2dnQUNnQ0RDSUFJQUVnQUNnQ0FDZ0NDQkVCQUJDWkd3c1BBQ0FCUVFScUlBQW9BZ2dRbWhzTER3QWdBVUVFYWlBQUtBSUlFSnNiQ3c4QUlBRkJCR29nQUNnQ0NCQ1ZHd3VEQXdFRmZ5TUFRZUFBYXlJQ0pBQWdBVUVFYWlFRUlBQW9BaEFoQlNBQUtBSU1JUVlnQUNnQ0NDSURJQUVnQXlnQ0FDZ0NDQkVCQUNFREFrQWdCZ1JBSUFVRVFDQUNJQUFvQWd3MkFsZ2dBU0FBS0FJUUVMVVBJUUFnQWtFQk5nSThJQUlnQURZQ05DQUNJQUpCTkdvMkFqZ2dBaUFDS1FNNE53TUlJQUlnQWtGQWF5QUNRUWhxRUpjQ0lnRkJCR28yQWxBZ0FpQUJJQUVvQWdSSE9nQlVJQVFnQXlBQ1FkZ0FhaUFDUWRBQWFoRGlCeUVBSUFFUXFBRU1BZ3NnQUNnQ0RDRUFJQUpCQURvQUxDQUNRY0NjSURZQ0tDQUNJQUEyQWtBZ0JDQURJQUpCUUdzZ0FrRW9haERpQnlFQURBRUxJQVVFUUNBQklBQW9BaEFRdFE4aEFDQUNRUUUyQWh3Z0FpQUFOZ0pZSUFJZ0FrSFlBR28yQWhnZ0FpQUNLUU1ZTndNQUlBSWdBa0ZBYXlBQ0VKY0NJZ0ZCQkdvMkFpQWdBaUFCSUFFb0FnUkhPZ0FrSUFRZ0F5QUNRU0JxRU9NSElRQWdBUkNvQVF3QkN5QUNRUUE2QUJRZ0FrSEFuQ0EyQWhBZ0JDQURJQUpCRUdvUTR3Y2hBQXNnQWtIZ0FHb2tBQ0FBQ3hZQUlBQW9BZ2dpQUNBQklBQW9BZ0FvQWdnUkFRQUxVQUVDZnlBQlFRUnFJUUlnQUNnQ0NDSURJQUVnQXlnQ0FDZ0NDQkVCQUVVRVFDQUNRZFB2QXhES0JnOExJQUlnQUNnQ0NDSUNJQUVnQWlnQ0FDZ0NDQkVCQUNBQUtBSU1JQUFvQWhBUTBBOExDZ0FnQVVFRWFoQzBDd3NLQUNBQlFRUnFFT1FIQ3dvQUlBRkJCR29RMHc4TENnQWdBVUVFYWhEU0R3dGhBUUovSXdCQkVHc2lBU1FBSUFFZ0FDZ0NCQ0lDUWZnQ2FpQUFLQUlJS0FJc0VNWUdOZ0lNSUFGQjVnQVF5UU0yQWdnZ0FTQUNRUVJxSWdBZ0FVRU1haERlQnpZQ0JDQUFJQUZCQ0dvZ0FVRUVhaENwRHlFQUlBRkJFR29rQUNBQUN4VUFJQUZCZ01vU05nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFZREtFaENIQmd0aEFRSi9Jd0JCRUdzaUFTUUFJQUVnQUNnQ0JDSUNRZmdDYWlBQUtBSUlLQUlvRU1ZR05nSU1JQUZCNWdBUXlRTTJBZ2dnQVNBQ1FRUnFJZ0FnQVVFTWFoRGVCellDQkNBQUlBRkJDR29nQVVFRWFoQ3BEeUVBSUFGQkVHb2tBQ0FBQ3hVQUlBRkIzTWtTTmdJQUlBRWdBQ2tDQkRjQ0JBc0xBQ0FBUWR6SkVoQ0hCZ3VwQVFFRWZ5TUFRUkJySWdFa0FDQUJJQUFvQWdRaUFrSDRBbW9pQXlBQUtBSUlLQUlrRU1ZR05nSU1JQUVnQXlBQUtBSUlLQUlvRU1ZR05nSUlJQUZCNXdBUXlRTTJBZ1FnQVNBQ1FRUnFJZ0FnQVVFTWFoRGVCellDQUNBQUlRUWpBRUVRYXlJQ0pBQWdBaUFBSUFGQkJHb1FydzgyQWd3Z0FDQUFRZGdDYWlBQ1FReHFJQUVnQVVFSWFoQ3JEeUVBSUFKQkVHb2tBQ0FFSUFBUW53c2hBQ0FCUVJCcUpBQWdBQXNWQUNBQlFiakpFallDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUc0eVJJUWh3WUx5Z01CQzM4Z0FTZ0NBQ0lCUVFBZ0FTZ0NCRUhZOXhGR0d5RURJd0JCZ0FGcklnRWtBQ0FBS0FJRUlnQW9BdndDSWdJUXJ3RWdBU0FDUWR3QmFpQURFT2dhTmdKUUlBQkI4SU1CYWlBQlFkQUFhaEQxQXlJRkJFQWdBRUg0QW1vaEJpQUJRb0NBZ0lDQUFUY0NkQ0FCSUFGQjBBQnFJZ0kyQW5BZ0FpQURLQUpNRURrZ0FFRUVhaUVISUFWQktHb2hDU0FCUVNCcUlRb2dBVUh3QUdvaEMwRUFJUUlEUUNBQklBSTJBa3dnQXlnQ1RDQUNUUVJBSUFFZ0N6WUNDQ0FCUVFBNkFBUWdBVUhBbkNBMkFnQWdBU0FCUWRBQWFpSUFJQUVvQW5CSE9nQU1JQWNnQlVFTWFpQUJRUWhxSUFFUXpCb2dBQkFqQlNBREtBSklJQUpCQW5ScUtBSUFJUUlDUUNBSklBRkJ6QUJxRUtrQ0JFQWdBQ2dDL0FJaUJCQ3ZBU0FBSUFSQjNBRnFJQUlRd1Jvb0FpZ1Eyd2NoRENBQlFVQnJJZ1FnQWlnQ0pFRWthaEJUSUFGQkVHb2lDQ0FHSUFKQkxHb1ErZ3NnQVNBS05nSXdJQUVnQ0NBQktBSWdSem9BTkNBQklBY2dCQ0FNSUFGQk1Hb1FyZzgyQWp3Z0FVSFFBR29nQVVFOGFoQWtJQWdRWGlBRUVBOGFEQUVMSUFFZ0JpQUNFSVVSTmdJUUlBRkIwQUJxSUFGQkVHb1FKQXNnQVNnQ1RFRUJhaUVDREFFTEN3c2dBVUdBQVdva0FFRUFDeFVBSUFGQmxNa1NOZ0lBSUFFZ0FDZ0NCRFlDQkFzTEFDQUFRWlRKRWhDZkF3c1ZBQ0FCUWZESUVqWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSHd5QklRbndNTEZRQWdBVUhNeUJJMkFnQWdBU0FBS0FJRU5nSUVDd3NBSUFCQnpNZ1NFSjhEQ3hVQUlBRkJxTWdTTmdJQUlBRWdBQ2dDQkRZQ0JBc0xBQ0FBUWFqSUVoQ2ZBd3ZIUEFNV2Z3RitBbjBqQUVHZ2hnRnJJZ0VrQUNBQlFRaHFJZ01nQWpZQ0FDQURRZmdDYWlJVElBTkJCR29pRmhDRkJTQURLQUlBUVFFUTBRWWFJQU5CK0lNQmFrSUFOd01BSUFOQ0FEY0Q4SU1CSUFOQ0FEY0NoSVFCSUFOQmdJUUJha0dBZ0lEOEF6WUNBQ0FEUVl5RUFXcENBRGNDQUNBRFFaU0VBV3BCZ0lDQS9BTTJBZ0FnQTBHWWhBRnFJZ3dRa2drYUl3QkJzQU5ySWcwa0FDQURLQUw4QWhET0JDSUNLQUtjQXlJT0lBSW9BcUFEUVFKMGFpRVFJQU5CakFKcUlSZ0RRQUpBQWtBQ1FBSkFJQTRnRUVZRVFDQVJRUUZ4RFFFZ0FFRUFPZ0RVQWlBQVFRQTZBQUFNQWdzZ0RpZ0NBQ0VISUExQkFEb0FyQU1nRFNBSFFlUUFhallDcUFNQ2Z5QU5LQUtvQXlJRUtBSUFJZ0lnQkNnQ0JFRUNkR29oQmdOQVFRQWdBaUFHUmcwQkdpQUNLQUlBSVFRZ0FrRUVhaUVDSUFRb0FnUkIyTWNTUncwQUN5QUVDeUlQUlEwQ0lBTW9BdndDSWdJUXJ3RkJBQ0VSQWtBZ0IwVU5BQ0FIS0FJTUlnUWdBaWdDNEFFZ0FpZ0MzQUVpQW10QkFuVlBEUUFnQWlBRVFRSjBhaWdDQUNJQ1JRMEFJQUpCQUNBQ0tBSUVRWUNURWtZYklSRUxJQTFCbUFOcUlCRkIyQWxxRUxBQkloVW9BZ0FoRVNBTktBS2NBeUVVQTBBZ0VTQVVSZ1JBSUJVUU1ob2dBeWdDL0FJUXpnUWlCRUVrYWlFR0l3QkJzQUZySWdJa0FDQUNJQWMyQXF3QklCTW9BZ1FvQWdBZ0J4QlhRUUZCQVVIVm5naEIwS2NEUVl3REVFc0NRQ0FFS0FLa0FpSUZJQVVnQkNnQ3FBSkJBblJxSUFKQnJBRnFFSm9GSUFRb0FxUUNJQVFvQXFnQ1FRSjBha1lFUUNBQ1FRaHFRZENuQTBHT0EwRUJJQk1RekFNUUZ5SUVRUmhxUVpmekFCQU9HaUFFRUJnTUFRc2dBaUFHTmdJRUlBSkJDR29pQkNBVFFjZ2dhaUFDUVFScUVOUVBJQVFRV2lBQ1Fhd0JhaENmR3dzZ0FrR3dBV29rQUVFQklSRU1CQVVnRFVFUWFpQVRJQkVvQWdBaUFpZ0NDQ0lYUVNocUVJOFJJQllnRFNnQ01CRGVCeUVFSUEwb0FqQWdCRFlDQUFKQUlBOG9BalFpQkVId0FFWUVRQ0FDS0FJTUVQMGJFTllMSVFZZ0ZoQWNJQTFCQ1RZQzlBSWdEVUhwelFNMkF2QUNJQTBnRFNrRDhBSTNBd2dnRFVINEFtb2lCQ0FZSUExQkNHb1Fud1FnRFNBUEtBSTBFTWtETmdMa0FpQU5JQllnRFVIa0Ftb2dEVUVRYWhDd0R6WUM2QUlnRFNBV0lBMUI2QUpxUWVuTkF4RElHallDN0FJZ0ZpQVdJQVFnRFVIc0Ftb1Fwd3NRendvaEJTQVRJQVpCSkdvZ0FpZ0NEQ2dDQ0NBRkVQTWFJQUlvQWdnaEFpQVdJQVFRMmdRaEJrRUFJUWtqQUVFUWF5SUVKQUFnQkNBQ05nSU1JQk1vQWdRb0FnQWdBaEJYUVFGQkFVR3Bud2hCMEtjRFFlc0NFRXNnRXlnQ0FDZ0NDQ0FHRUZkQkFVRUJRWW0yQ0VIUXB3TkI3QUlRU3lBRUlBWTJBZ2dqQUVIUUFXc2lBaVFBSUJOQkNHb2lCU2dDeEFRZ0JTZ0MwQVFpQmtHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FGSUFaQkFYUkJBbW9RbWdRTElBSkJ5QUZxSUFVZ0JFRU1haERyQXlBRktBTEVCQ0lTUVFGcklSa2dCQ2dDRENFSUlBVW9Bc0FFSVFvZ0FpZ0N6QUVoR2lBQ0tBTElBU0VHQWtBRFFDQUpJQkpIQkVBZ0NpQUdRVEJzYWlJTExRQWdSUVJBSUFJZ0NEWUNDQ0FFS0FJSUlRZ2dBaUFDUVJCcUloSTJBaUFnQWlBSU5nSVVJQUpCcU1nU05nSVFJQXNnQWtFSWFoQ1pCQ0FTRUJZZ0FpZ0N6QUVoQ0NBS0lBWkJNR3hxSWdZZ0NUWUNMQ0FHSUFnMkFpZ2dCU0FGS0FMUUJFRUJhallDMEFRZ0JTQUZLQUxVQkVFQmFqWUMxQVFnQkNBTFFRaHFOZ0lFSUFSQkFEWUNBQXdEQ3dKQUlBc29BaWdnR2tjTkFDQUlJQXNvQWdCSERRQWdBaUFJTmdJSUlBUW9BZ2doQmlBQ0lBSkJFR29pQ1RZQ0lDQUNJQVkyQWhRZ0FrR295QkkyQWhBZ0N5QUNRUWhxRU5zRUlBa1FGaUFGSUFVb0F0UUVRUUZxTmdMVUJDQUVJQXRCQ0dvMkFnUWdCRUVCTmdJQURBTUxJQWtnQ3lnQ0xFc0VRQ0FDSUFnMkFxZ0JJQVFvQWdnaENDQUNJQUpCc0FGcUlnbzJBc0FCSUFJZ0NEWUN0QUVnQWtHb3lCSTJBckFCSUFKQkNHb2dBa0dvQVdvUWx3UWhDQ0FDS0FMTUFTRVNJQWdnQ1RZQ0xDQUlJQkkyQWlnZ0NoQVdJQWdnQ3hEd0F5QUlJQWdvQWl4QkFXbzJBaXdnQlNBR1FRRnFJQVVvQXNRRWNDQUlFSllFSUFVZ0JTZ0MwQVJCQVdvMkF0QUVJQVVnQlNnQzFBUkJBV28yQXRRRUlBUWdDMEVJYWpZQ0JDQUVRUUEyQWdBZ0NCQ1pBd3dEQlNBR1FRRnFRUUFnQmlBWlJ4c2hCaUFKUVFGcUlRa01BZ3NBQ3dzZ0FrRUlha0dHdFFOQjZ3TkJEaUFDUWFnQmFoQWRJZ1lRRnlJRlFSaHFRWlkxRUE0YUlBVVFHQ0FFUWdBM0FnQWdCaEFlQ3d3QkN5QUNLQUlJSVFJZ0RTQUVFTWtETmdMNEFpQVdJQTFCK0FKcUlBMUJFR29Rc0E4aEJrRUFJUWtqQUVFUWF5SUVKQUFnQkNBQ05nSU1JQk1vQWdRb0FnQWdBaEJYUVFGQkFVR3Bud2hCMEtjRFFlc0NFRXNnRXlnQ0FDZ0NDQ0FHRUZkQkFVRUJRWW0yQ0VIUXB3TkI3QUlRU3lBRUlBWTJBZ2dqQUVIUUFXc2lBaVFBSUJOQkNHb2lCU2dDeEFRZ0JTZ0MwQVFpQmtHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FGSUFaQkFYUkJBbW9RbWdRTElBSkJ5QUZxSUFVZ0JFRU1haERyQXlBRktBTEVCQ0lTUVFGcklSa2dCQ2dDRENFSUlBVW9Bc0FFSVFvZ0FpZ0N6QUVoR2lBQ0tBTElBU0VHQWtBRFFDQUpJQkpIQkVBZ0NpQUdRVEJzYWlJTExRQWdSUVJBSUFJZ0NEWUNDQ0FFS0FJSUlRZ2dBaUFDUVJCcUloSTJBaUFnQWlBSU5nSVVJQUpCek1nU05nSVFJQXNnQWtFSWFoQ1pCQ0FTRUJZZ0FpZ0N6QUVoQ0NBS0lBWkJNR3hxSWdZZ0NUWUNMQ0FHSUFnMkFpZ2dCU0FGS0FMUUJFRUJhallDMEFRZ0JTQUZLQUxVQkVFQmFqWUMxQVFnQkNBTFFRaHFOZ0lFSUFSQkFEWUNBQXdEQ3dKQUlBc29BaWdnR2tjTkFDQUlJQXNvQWdCSERRQWdBaUFJTmdJSUlBUW9BZ2doQmlBQ0lBSkJFR29pQ1RZQ0lDQUNJQVkyQWhRZ0FrSE15QkkyQWhBZ0N5QUNRUWhxRU5zRUlBa1FGaUFGSUFVb0F0UUVRUUZxTmdMVUJDQUVJQXRCQ0dvMkFnUWdCRUVCTmdJQURBTUxJQWtnQ3lnQ0xFc0VRQ0FDSUFnMkFxZ0JJQVFvQWdnaENDQUNJQUpCc0FGcUlnbzJBc0FCSUFJZ0NEWUN0QUVnQWtITXlCSTJBckFCSUFKQkNHb2dBa0dvQVdvUWx3UWhDQ0FDS0FMTUFTRVNJQWdnQ1RZQ0xDQUlJQkkyQWlnZ0NoQVdJQWdnQ3hEd0F5QUlJQWdvQWl4QkFXbzJBaXdnQlNBR1FRRnFJQVVvQXNRRWNDQUlFSllFSUFVZ0JTZ0MwQVJCQVdvMkF0QUVJQVVnQlNnQzFBUkJBV28yQXRRRUlBUWdDMEVJYWpZQ0JDQUVRUUEyQWdBZ0NCQ1pBd3dEQlNBR1FRRnFRUUFnQmlBWlJ4c2hCaUFKUVFGcUlRa01BZ3NBQ3dzZ0FrRUlha0dHdFFOQjZ3TkJEaUFDUWFnQmFoQWRJZ1lRRnlJRlFSaHFRWlkxRUE0YUlBVVFHQ0FFUWdBM0FnQWdCaEFlQ3dzZ0FrSFFBV29rQUNBRVFSQnFKQUFnQXlnQy9BSWlBaEN2QVNBTklBSkIzQUZxSUJjb0FrZ29BZ0FRZ2dNMkF2Z0NJQXdnRFVINEFtb1EvUWdnRVVFRWFpRVJJQTFCRUdvUUl3d0JDd0FMQUF0QkFDRVJJd0JCSUdzaUNDUUFBMEFnQXlnQ3ZJUUJJQkZOQkVBZ0NFRWdhaVFBQlNBREtBSzRoQUVnRVVFQ2RHb29BZ0FRb0FRaEFpQUlJQU0yQWhnZ0NDQUROZ0lRSUFnZ0F6WUNDQ0FJSUFNMkFnQWpBRUVRYXlJSkpBQWdDU0FDTmdJTUFrQWdBa1VOQUNBSklBSW9BZ1EyQWdBZ0NTQUpRUXhxTmdJRVFRQWhEeUFKS0FJQUloaEIySndTUmdSQUlBa29BZ1FvQWdBaERDTUFRUkJySWdza0FDQUlLQUlZSVFvQ1FDQU1LQUlzSWdJb0FnZ2lCQ2dDS0VVTkFDQUxJQUkyQWdRZ0MwRUlhaUFLUVlTRUFXb2dDMEVFYWhDckJTQUxMUUFNUlEwQUlBUW9BaWdoQWlBS0lBd29BaXdvQWd3UTJ3Y2hCQ01BUVJCcklnWWtBQ0FHSUFJMkFnd2dDa0g0QW1vaUJTZ0NCQ2dDQUNBQ0VGZEJBVUVCUWFtZkNFSFFwd05CNndJUVN5QUZLQUlBS0FJSUlBUVFWMEVCUVFGQmliWUlRZENuQTBIc0FoQkxJQVlnQkRZQ0NDTUFRZEFCYXlJQ0pBQWdCVUVJYWlJRUtBTEVCQ0FFS0FMUUJDSUZRWllCYkVHV0FXcEI1QUJ1U1FSQUlBUWdCVUVCZEVFQ2FoQ2FCQXNnQWtISUFXb2dCQ0FHUVF4cUVPc0RJQVFvQXNRRUloVkJBV3NoRkNBR0tBSU1JUWNnQkNnQ3dBUWhFQ0FDS0FMTUFTRVhJQUlvQXNnQklRNENRQU5BSUE4Z0ZVY0VRQ0FRSUE1Qk1HeHFJZ1V0QUNCRkJFQWdBaUFITmdJSUlBWW9BZ2doQnlBQ0lBSkJFR29pRlRZQ0lDQUNJQWMyQWhRZ0FrSHd5QkkyQWhBZ0JTQUNRUWhxRUprRUlCVVFGaUFDS0FMTUFTRUhJQkFnRGtFd2JHb2lEaUFQTmdJc0lBNGdCellDS0NBRUlBUW9BdEFFUVFGcU5nTFFCQ0FFSUFRb0F0UUVRUUZxTmdMVUJDQUdJQVZCQ0dvMkFnUWdCa0VBTmdJQURBTUxBa0FnQlNnQ0tDQVhSdzBBSUFjZ0JTZ0NBRWNOQUNBQ0lBYzJBZ2dnQmlnQ0NDRUhJQUlnQWtFUWFpSU9OZ0lnSUFJZ0J6WUNGQ0FDUWZESUVqWUNFQ0FGSUFKQkNHb1Eyd1FnRGhBV0lBUWdCQ2dDMUFSQkFXbzJBdFFFSUFZZ0JVRUlhallDQkNBR1FRRTJBZ0FNQXdzZ0R5QUZLQUlzU3dSQUlBSWdCellDcUFFZ0JpZ0NDQ0VISUFJZ0FrR3dBV29pRURZQ3dBRWdBaUFITmdLMEFTQUNRZkRJRWpZQ3NBRWdBa0VJYWlBQ1FhZ0JhaENYQkNFSElBSW9Bc3dCSVJVZ0J5QVBOZ0lzSUFjZ0ZUWUNLQ0FRRUJZZ0J5QUZFUEFESUFjZ0J5Z0NMRUVCYWpZQ0xDQUVJQTVCQVdvZ0JDZ0N4QVJ3SUFjUWxnUWdCQ0FFS0FMUUJFRUJhallDMEFRZ0JDQUVLQUxVQkVFQmFqWUMxQVFnQmlBRlFRaHFOZ0lFSUFaQkFEWUNBQ0FIRUprRERBTUZJQTVCQVdwQkFDQU9JQlJIR3lFT0lBOUJBV29oRHd3Q0N3QUxDeUFDUVFocVFZYTFBMEhyQTBFT0lBSkJxQUZxRUIwaUJCQVhJZ1ZCR0dwQmxqVVFEaG9nQlJBWUlBWkNBRGNDQUNBRUVCNExJQUpCMEFGcUpBQWdCa0VRYWlRQUN5QUxJQXdvQWl3b0FpQWlBallDQ0NBQ0JFQWdDa0dZaEFGcUlBdEJDR29RL1FnTElBdEJFR29rQUFzZ0dFSFluQkpHRFFBZ0NTZ0NBQ0lZUWFDV0VrWUVRQ0FKS0FJRUtBSUFJUXdqQUVFUWF5SUhKQUFnQ0NnQ0VDSVZJQXdvQWpBaUFpZ0NKQkRER2lFRUlBY2dBaWdDTERZQ0RDTUFRUkJySWc4a0FDTUFRUkJySWc0a0FFRU1FQlVoQWlBT0lBUkJIR29pQkVFSWFqWUNCQ0FPSUFJMkFnQWdBaUFIS0FJTUlnWTJBZ2dnRGtFQk9nQUlJQUpCQURZQ0FDQUNJQVkyQWdSQkFDRVFJQTRvQWdBaUJpQUdLQUlJSWdJMkFnUUNRQUpBSUFRb0FnUWlDMFVOQUFKQUlBdHBJZ3BCQVUwRVFDQUxRUUZySUFKeElRSU1BUXNnQWlBTFNRMEFJQUlnQzNBaEFnc2dCQ2dDQUNBQ1FRSjBhaWdDQUNJRlJRMEFJQXRCQVdzaEZDQUdLQUlJSVJjZ0NrRUJTeUVTQTBBZ0JTZ0NBQ0lGUlEwQklBVW9BZ1FoQ2dKQUlCSkZCRUFnQ2lBVWNTRUtEQUVMSUFvZ0Mwa05BQ0FLSUF0d0lRb0xJQUlnQ2tjTkFTQUZLQUlJSUJkSERRQUxEQUVMSUFRcUFoQWhIQ0FFS0FJTVFRRnFzeUVkSUFzRVFFRUFJUVVnSENBTHM1UWdIVjFGRFFFTFFRQWhCU0FFSUFzZ0MwRUJhM0ZCQUVjZ0MwRURTWElnQzBFQmRISWlBZ0ovSUIwZ0hKV05JaHhEQUFDQVQxMGdIRU1BQUFBQVlIRUVRQ0FjcVF3QkMwRUFDeUlMSUFJZ0Mwc2JFTU1CQ3lBRklnSkZCRUFnQmlnQ0JDRUNBa0FnQkNnQ0JDSUZhU0lMUVFGTkJFQWdCVUVCYXlBQ2NTRUNEQUVMSUFJZ0JVa05BQ0FDSUFWd0lRSUxBa0FDUUNBQ1FRSjBJZ29nQkNnQ0FHb29BZ0FpQWtVRVFDQUdJQVFvQWdnMkFnQWdCQ0FHTmdJSUlBUW9BZ0FnQ21vZ0JFRUlhallDQUNBR0tBSUFJZ0pGRFFJZ0FpZ0NCQ0VDQWtBZ0MwRUJUUVJBSUFJZ0JVRUJhM0VoQWd3QkN5QUNJQVZKRFFBZ0FpQUZjQ0VDQ3lBRUtBSUFJQUpCQW5ScUlRSU1BUXNnQmlBQ0tBSUFOZ0lBQ3lBQ0lBWTJBZ0FMSUFRZ0JDZ0NERUVCYWpZQ0RFRUJJUkFnQmlFQ0N5QVBJQkE2QUF3Z0R5QUNOZ0lJSUE4dEFBd0VRQ0FPUVFBMkFnQUxJQTRRaXdFZ0RrRVFhaVFBSUFjZ0R5Z0NDRFlDQUNBSElBOHRBQXc2QUFRZ0QwRVFhaVFBSUFjZ0RDZ0NMRFlDQUNBVlFaaUVBV29nQnhEOUNDQUhRUkJxSkFBTElCaEJvSllTUmcwQUlBa29BZ0FpQkVId2t4SkdCRUFnQ1NnQ0JDZ0NBQ0VHSXdCQkVHc2lBaVFBSUFnb0FnZ2hCU0FDSUFZb0FpdzJBZ3dnQlVHWWhBRnFJQUpCREdvUS9RZ2dBa0VRYWlRQUN5QUVRZkNURWtZTkFDQUpLQUlBRUs4SUJFQWdDU2dDQkNnQ0FDRUVJd0JCRUdzaUFpUUFJQVFvQWdnaUJDZ0NCRUdBZ1JKSElBUkZja1VFUUNBSUtBSUFJZ1lvQXZ3Q0lnVVFyd0VnQWlBRlFkd0JhaUFFS0FJb0VJSUROZ0lNSUFaQm1JUUJhaUFDUVF4cUVQMElDeUFDUVJCcUpBQUxDeUFKUVJCcUpBQWdFVUVCYWlFUkRBRUxDeUFEUWZ5REFXb29BZ0FFUUNBTklBTTJBaEFqQUVHd0FXc2lBaVFBSUJOQnVDQnFLQUlBSWdRZ0UwRzhJR29vQWdCQkJYUnFJUVlnRTBHNEhtb2hFUUpBQWtBRFFDQUVJQVpHRFFFQ1FDQUVLQUlBUWRqM0VSQklEUUJCMlBjUklBUW9BZ0FRU0EwQUlBUkJJR29oQkF3QkN3c2dBa0VRYWtIUXB3TkJ1Z0pCQVNBVEVNd0RFQmNpQmtFWWFrSFZ1Z29RRGhvZ0JrSGM5eEVRbWdFaUJVRVlha0dsdWdvUURob2dCU0FFS0FJQVFRUnFFSm9CR2lBR0VCZ01BUXNnQWtFUWFoQ2VCU0lHUWRqM0VUWUNBQ0FDSUEwb0FoQTJBZ2dqQUVFZ2F5SUVKQUFnQkNBQ0tBSUlOZ0lNSUFSQmxNa1NOZ0lJSUFRZ0JFRUlhaUlGTmdJWUlBVWdCa0VJYWhDc0FpQUZFQllnQkVFZ2FpUUFJQkVnQmhDWkJTQUdFUE1EQ3lBQ1FiQUJhaVFBQ3lNQVFTQnJJZ3NrQUNBTElBTTJBaGdnQTBHTWhBRnFJUTREUUNBT0tBSUFJZzRFUUNBT0tBSUlJZ0lvQWtRaUVTQUNLQUpJUVFKMGFpRVlBMEFnRVNBWVJnMENJQkVvQWdBb0Fnd29BZ2doQkNBTElBTTJBaEFnQ3lBTFFSaHFJZ0kyQWhRZ0N5QUROZ0lJSUFzZ0FqWUNEQ0FMUVFocUlRSWpBRUVRYXlJUEpBQWdEeUFFTmdJTUFrQWdCRVVOQUNBUElBUW9BZ1EyQWdBZ0R5QVBRUXhxTmdJRVFRQWhDU0FQS0FJQUloVkIrT3NQUmdSQUlBOG9BZ1FvQWdBaEJDTUFRUkJySWdna0FDQUxLQUlRSWdZb0F2d0NJZ2NRcndFZ0JrSDRBbW9oQlNBSFFkd0JhaUFFS0FJa0VJSURJUWNDUUNBTEtBSVVJQWNRckE4RVFDQUlJQVEyQWd3Z0NDQUdOZ0lJSXdCQkVHc2lCeVFBSUFjZ0JEWUNEQ0FGS0FJRUtBSUFJQVFRVjBFQlFRRkJxWjhJUWRDbkEwR0FBeEJMSXdCQjBBRnJJZ1FrQUNBRlFRaHFJZ1VvQXNRRUlBVW9BdEFFSWdaQmxnRnNRWllCYWtIa0FHNUpCRUFnQlNBR1FRRjBRUUpxRUpvRUN5QUVRY2dCYWlBRklBZEJER29RNndNZ0JTZ0N4QVFpRkVFQmF5RVhJQWNvQWd3aERDQUZLQUxBQkNFUUlBUW9Bc3dCSVJJZ0JDZ0N5QUVoQmdKQUEwQWdDU0FVUndSQUlCQWdCa0V3YkdvaUNpMEFJRVVFUUNBRUlBdzJBZ2dnQ0NrQ0NDRWJJQVFnQkVFUWFpSU1OZ0lnSUFRZ0d6Y0NGQ0FFUWJqSkVqWUNFQ0FLSUFSQkNHb1FtUVFnREJBV0lBUW9Bc3dCSVF3Z0VDQUdRVEJzYWlJR0lBazJBaXdnQmlBTU5nSW9JQVVnQlNnQzBBUkJBV28yQXRBRUlBVWdCU2dDMUFSQkFXbzJBdFFFSUFjZ0NrRUlhallDQkNBSFFRQTJBZ0FNQXdzQ1FDQUtLQUlvSUJKSERRQWdEQ0FLS0FJQVJ3MEFJQVFnRERZQ0NDQUlLUUlJSVJzZ0JDQUVRUkJxSWdZMkFpQWdCQ0FiTndJVUlBUkJ1TWtTTmdJUUlBb2dCRUVJYWhEYkJDQUdFQllnQlNBRktBTFVCRUVCYWpZQzFBUWdCeUFLUVFocU5nSUVJQWRCQVRZQ0FBd0RDeUFKSUFvb0FpeExCRUFnQkNBTU5nS29BU0FJS1FJSUlSc2dCQ0FFUWJBQmFpSVFOZ0xBQVNBRUlCczNBclFCSUFSQnVNa1NOZ0t3QVNBRVFRaHFJQVJCcUFGcUVKY0VJUXdnQkNnQ3pBRWhGQ0FNSUFrMkFpd2dEQ0FVTmdJb0lCQVFGaUFNSUFvUThBTWdEQ0FNS0FJc1FRRnFOZ0lzSUFVZ0JrRUJhaUFGS0FMRUJIQWdEQkNXQkNBRklBVW9BdEFFUVFGcU5nTFFCQ0FGSUFVb0F0UUVRUUZxTmdMVUJDQUhJQXBCQ0dvMkFnUWdCMEVBTmdJQUlBd1FtUU1NQXdVZ0JrRUJha0VBSUFZZ0YwY2JJUVlnQ1VFQmFpRUpEQUlMQUFzTElBUkJDR3BCaHJVRFFlc0RRUTRnQkVHb0FXb1FIU0lHRUJjaUJVRVlha0dXTlJBT0dpQUZFQmdnQjBJQU53SUFJQVlRSGdzZ0JFSFFBV29rQUNBSFFSQnFKQUFNQVFzZ0JpZ0MvQUlpQnhDdkFTQUhRZHdCYWlBRUtBSW9FSUlESVFjZ0N5Z0NGQ0FIRUtBRUVLd1BSUTBBSUFRb0FpZ2hDaUFJSUFRMkFnd2dDQ0FHTmdJSUl3QkJFR3NpQnlRQUlBY2dDallDRENBRktBSUVLQUlBSUFvUVYwRUJRUUZCcVo4SVFkQ25BMEdBQXhCTEl3QkIwQUZySWdRa0FDQUZRUWhxSWdVb0FzUUVJQVVvQXRBRUlnWkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0JTQUdRUUYwUVFKcUVKb0VDeUFFUWNnQmFpQUZJQWRCREdvUTZ3TWdCU2dDeEFRaUZFRUJheUVYSUFjb0Fnd2hEQ0FGS0FMQUJDRVFJQVFvQXN3QklSSWdCQ2dDeUFFaEJnSkFBMEFnQ1NBVVJ3UkFJQkFnQmtFd2JHb2lDaTBBSUVVRVFDQUVJQXcyQWdnZ0NDa0NDQ0ViSUFRZ0JFRVFhaUlNTmdJZ0lBUWdHemNDRkNBRVFkekpFallDRUNBS0lBUkJDR29RbVFRZ0RCQVdJQVFvQXN3QklRd2dFQ0FHUVRCc2FpSUdJQWsyQWl3Z0JpQU1OZ0lvSUFVZ0JTZ0MwQVJCQVdvMkF0QUVJQVVnQlNnQzFBUkJBV28yQXRRRUlBY2dDa0VJYWpZQ0JDQUhRUUEyQWdBTUF3c0NRQ0FLS0FJb0lCSkhEUUFnRENBS0tBSUFSdzBBSUFRZ0REWUNDQ0FJS1FJSUlSc2dCQ0FFUVJCcUlnWTJBaUFnQkNBYk53SVVJQVJCM01rU05nSVFJQW9nQkVFSWFoRGJCQ0FHRUJZZ0JTQUZLQUxVQkVFQmFqWUMxQVFnQnlBS1FRaHFOZ0lFSUFkQkFUWUNBQXdEQ3lBSklBb29BaXhMQkVBZ0JDQU1OZ0tvQVNBSUtRSUlJUnNnQkNBRVFiQUJhaUlRTmdMQUFTQUVJQnMzQXJRQklBUkIzTWtTTmdLd0FTQUVRUWhxSUFSQnFBRnFFSmNFSVF3Z0JDZ0N6QUVoRkNBTUlBazJBaXdnRENBVU5nSW9JQkFRRmlBTUlBb1E4QU1nRENBTUtBSXNRUUZxTmdJc0lBVWdCa0VCYWlBRktBTEVCSEFnREJDV0JDQUZJQVVvQXRBRVFRRnFOZ0xRQkNBRklBVW9BdFFFUVFGcU5nTFVCQ0FISUFwQkNHbzJBZ1FnQjBFQU5nSUFJQXdRbVFNTUF3VWdCa0VCYWtFQUlBWWdGMGNiSVFZZ0NVRUJhaUVKREFJTEFBc0xJQVJCQ0dwQmhyVURRZXNEUVE0Z0JFR29BV29RSFNJR0VCY2lCVUVZYWtHV05SQU9HaUFGRUJnZ0IwSUFOd0lBSUFZUUhnc2dCRUhRQVdva0FDQUhRUkJxSkFBTElBaEJFR29rQUFzZ0ZVSDQ2dzlHRFFCQkFDRUlJQThvQWdCQnVQSVBSZ1JBSUE4b0FnUW9BZ0FoQkNNQVFSQnJJZ2NrQUNBRUtBSWtJUVFnQWlnQ0FDSUZLQUw4QWlJR0VLOEJBa0FnQmtIY0FXb2dCQ2dDTEJDQ0F5SUdSUTBBSUFJb0FnUWdCaENnQkJDc0QwVU5BQ0FFS0FJc0lRSWdCeUFFTmdJTUlBY2dCVFlDQ0NNQVFSQnJJZ1lrQUNBR0lBSTJBZ3dnQlVINEFtb2lCQ2dDQkNnQ0FDQUNFRmRCQVVFQlFhbWZDRUhRcHdOQmdBTVFTeU1BUWRBQmF5SUNKQUFnQkVFSWFpSUVLQUxFQkNBRUtBTFFCQ0lGUVpZQmJFR1dBV3BCNUFCdVNRUkFJQVFnQlVFQmRFRUNhaENhQkFzZ0FrSElBV29nQkNBR1FReHFFT3NESUFRb0FzUUVJaEJCQVdzaEZTQUdLQUlNSVFrZ0JDZ0N3QVFoRENBQ0tBTE1BU0VVSUFJb0FzZ0JJUW9DUUFOQUlBZ2dFRWNFUUNBTUlBcEJNR3hxSWdVdEFDQkZCRUFnQWlBSk5nSUlJQWNwQWdnaEd5QUNJQUpCRUdvaUNUWUNJQ0FDSUJzM0FoUWdBa0dBeWhJMkFoQWdCU0FDUVFocUVKa0VJQWtRRmlBQ0tBTE1BU0VKSUF3Z0NrRXdiR29pQ2lBSU5nSXNJQW9nQ1RZQ0tDQUVJQVFvQXRBRVFRRnFOZ0xRQkNBRUlBUW9BdFFFUVFGcU5nTFVCQ0FHSUFWQkNHbzJBZ1FnQmtFQU5nSUFEQU1MQWtBZ0JTZ0NLQ0FVUncwQUlBa2dCU2dDQUVjTkFDQUNJQWsyQWdnZ0J5a0NDQ0ViSUFJZ0FrRVFhaUlKTmdJZ0lBSWdHemNDRkNBQ1FZREtFallDRUNBRklBSkJDR29RMndRZ0NSQVdJQVFnQkNnQzFBUkJBV28yQXRRRUlBWWdCVUVJYWpZQ0JDQUdRUUUyQWdBTUF3c2dDQ0FGS0FJc1N3UkFJQUlnQ1RZQ3FBRWdCeWtDQ0NFYklBSWdBa0d3QVdvaUREWUN3QUVnQWlBYk53SzBBU0FDUVlES0VqWUNzQUVnQWtFSWFpQUNRYWdCYWhDWEJDRUpJQUlvQXN3QklSQWdDU0FJTmdJc0lBa2dFRFlDS0NBTUVCWWdDU0FGRVBBRElBa2dDU2dDTEVFQmFqWUNMQ0FFSUFwQkFXb2dCQ2dDeEFSd0lBa1FsZ1FnQkNBRUtBTFFCRUVCYWpZQzBBUWdCQ0FFS0FMVUJFRUJhallDMUFRZ0JpQUZRUWhxTmdJRUlBWkJBRFlDQUNBSkVKa0REQU1GSUFwQkFXcEJBQ0FLSUJWSEd5RUtJQWhCQVdvaENBd0NDd0FMQ3lBQ1FRaHFRWWExQTBIckEwRU9JQUpCcUFGcUVCMGlCQkFYSWdWQkdHcEJsalVRRGhvZ0JSQVlJQVpDQURjQ0FDQUVFQjRMSUFKQjBBRnFKQUFnQmtFUWFpUUFDeUFIUVJCcUpBQUxDeUFQUVJCcUpBQWdFVUVFYWlFUkRBQUxBQXNMSUF0QklHb2tBQ0FURU80RklBQWdEVUVRYWlBV0VJb0VJZ0FRM3djZ0FCQzhBd3NnRFVHd0Eyb2tBQXdCQ3lBT1FRUnFJUTRNQVFzTElBTkJtSVFCYWhDUkNTQURRWVNFQVdvUVR5QURRZkNEQVdvaUJDZ0NDQ0VBQTBBZ0FBUkFJQUFvQWdBaEFpQUFRUXhxRU1JYUlBQVFIeUFDSVFBTUFRc0xJQVFRdHdJZ0EwSDRBbW9RMEFZZ0EwRUVhaENPQkJvZ0FVR2doZ0ZxSkFBTGV3RUNmeU1BUVJCcklnSWtBQ0FCS0FJQUlnTVFIQ0FDSUFFb0FnQWlBU2dDQ0RZQ0NDQUJJQUVvQWd4QkFXb2lBVFlDRENBQ0lBRTJBZ0FnQTBHTUFXb2lBUkRmQ3lJRElBSW9BZ2dnQWlnQ0FDQUFLQUkwRU1rYUdpQUJJQU1RS0NBQklBRW9BaGhCQVdvMkFoZ2dBeUVBSUFKQkVHb2tBQ0FBQzBNQkFuOGpBRUVnYXlJQ0pBQWdBa0VRYWlJRFFkVGVDaUFDSUFFb0FqUVF5UU1RRkNJQkVEVWdBQ0FEUWUvMkNCQXRJQU1RRHhvZ0FSQVBHaUFDUVNCcUpBQUxuZ0lCQjM4akFFSEFoZ0ZySWdVa0FDQUZRZGdDYWlBRlFkQ0RBV29RaFFVaUNDQUNRUUVRMFFZaEJ5QUNFSzhCUVFBaEJFRUFJUUVnQWlnQ21BRWlBMEVmVFFSQUlBSW9BcFFCSVFrZ0F5RUJDeUFDS0FLUUFTRURJQUpCM0FGcUlRc0NRQU5BQWtBZ0F5QUpSeUFCSUFSSGNrVUVRQ0FLRFFFZ0FFRUFPZ0RVQWlBQVFRQTZBQUFNQXdzZ0F3Ui9JQU1nQkVFQ2RHb29BZ0FGUVFBTElRWWdBaEN2QVFKQUlBc2dCaERoQWlJR1JRMEFJQVl0QUNBTkFDQUhJQVlvQWdnUW9CdEJBU0VLQ3lBRFJRUkFRUUFoQXd3Q0N5QUVRUUZxSWdSQklFY05BU0FES0FLQUFTRURRUUFoQkF3QkN3c2dCeER1QlNBQUlBVWdDQkNLQkNJQUVOOEhJQUFRdkFNTElBY1EwQVlnQ0JDT0JCb2dCVUhBaGdGcUpBQUw5QUlCQkg4akFFSHdBR3NpQWlRQUFrQWdBU2dDQUNJQlFRQWdBU2dDQkVHNDdnOUdHeUlCS0FKTVJRMEFJQUFvQWdRZ0FSQ0NBeER3RHlJRFJRMEFJQU1vQWdSQm9KRVNSdzBBSUFNb0Fpd2lBeWdDQkVHUW5oSkhJQU5GY2cwQUlBSWdBeWdDQ0NJRFFRQWdBeWdDQkVHUW9oSkdHeUlETmdKc0lBTkZEUUFnQWlBQUtBSUlJQUVvQWlRUWxRazJBbWdnQWtLQWdJQ0FnQUUzQWx3Z0FpQUNRVGhxTmdKWUFrQWdBQ2dDRENBQ1Fld0FhaEQxQXlJREJFQWdBa0U0YWlBQktBSk1FRGtnQVNnQ1NDSUVJQUVvQWt4QkFuUnFJUUVnQTBFTWFpRURBMEFnQVNBRVJnMENJQUFvQWhBaEJTQUNJQUFvQWdnZ0JDZ0NBQkNYQVRZQ05DQUNJQVVnQXlBQ1FUUnFFTE1QTmdJSUlBUkJCR29oQkNBQ1FUaHFJQUpCQ0dvUUpBd0FDd0FMSUFKQkNHb2lBeUFBS0FJSUlBRkJLR29RanhFZ0FrRTRhaUFERUtBTElBTVFJd3NnQUNnQ0VDQUNRZWdBYWlBQ1FUaHFJZ0FRM0FjaEJDQUFFQ01MSUFKQjhBQnFKQUFnQkFzTkFDQUFJQUZCNU1ZU0VMWUZDd3NBSUFCQjVNWVNFTGNGQzlZQ0FRVi9Jd0JCRUdzaUJTUUFJQUVvQWdBaUJDZ0NCQ0VEUVFBaEFTQUVRUUFnQTBIQS94RkdHeUlFS0FJa0lRTWdBQ2dDQkNnQ0FDSUdFSzhCQWtBZ0JrSGNBV29nQXhDeUNpSURSUTBBSUFNb0FnUWlCaEN2Q0FSL0lBTkJGR29GSUFZUXNBcEZEUUVnQTBFUWFnc29BZ0FoQWdzQ1FDQUNSUTBBSUFJUWhBRWlBa1VOQUNBQ0tBSUVRWkNpRWtjTkFDQUNLQUlvSUFJb0FpeEdEUUFnQlFKL0lBQW9BZ2doQVVFQUlBUkZEUUFhSUFFb0FnUWlBZ1JBSUFJb0FnQWdCQ2dDQ0VFQlFRRkIwTklJUWRDbkEwR01BUkJMQ3dKL0lBUWdBUkQzSGlJQ0JFQWdBaUFDS0FJRVFjRC9FVVlOQVJvZ0FTQUNRY0QvRVJEaEJBdEJBQXNMTmdJTUlBQW9BZ3doQVNNQVFSQnJJZ0FrQUNBQUlBVW9BZ3cyQWd3Z0FDQUJRZnpGRWhDeER6WUNDQ0FCSUFGQjJBSnFJQUJCREdvZ0FFRUlhaEQrQ0NFQklBQkJFR29rQUFzZ0JVRVFhaVFBSUFFTERRQWdBQ0FCUWNER0VoRFdBUXNMQUNBQVFjREdFaERsQVF2SURRSVBmd0o5SXdCQmdBRnJJZ0lrQUFKQUlBRW9BZ0FpQVVFQUlBRW9BZ1JCK08wUFJoc2lCU2dDSkNJTktBSUVRY2pwRDBjZ0RVVnlEUUFnQUNnQ0JDRUJBa0FnQlVVTkFDQUZLQUlNSWdVZ0FTZ0NCQ0FCS0FJQUlnRnJRUUoxVHcwQUlBRWdCVUVDZEdvb0FnQVEyQkFoQXdzZ0EwVU5BQ0FDSUFNb0FoQWlBVUVBSUFFb0FnUkJrS0lTUmhzaUFUWUNOQ0FCUlEwQUlBRW9BaWdnQVNnQ0xFY0VRQ0FBS0FJUUlRTWdBQ2dDRENFRUFrQWdBQ2dDQ0NJRklBSkJOR29ROVFNaUFRUkFJQUpCR0dvZ0FVRU1haEJXR2d3QkN5QUVFQndnQWtFTE5nSjhJQUpCMzhnQk5nSjRJQUlnQWlrRGVEY0RFQ0FDUVJocUlnRWdCRUdJQW1vZ0FrRVFhaENmQkNBRElBMG9Ba3dvQWdBaUEwRUFJQU1vQWdSQitPMFBSaHNRbFFraER5QUNJQUlvQWpRMUFpZzNBMUFqQUVFUWF5SUlKQUFnQ0NBRUlBSkIwQUJxSWc0UTZRVTJBZ3dqQUVFUWF5SU1KQUFnQkJBY0lBUWdCQ2dDREVFQmFpSUROZ0lNSUF3Z0F6WUNDQ0FFUVl3QmFpSUhJQWNRdndFZ0JDZ0NDQ0FNS0FJSUlBUkIyQUpxSWdzZ0NDZ0NEQkQ4SGlJREVDZ2dCeUFIS0FJWVFRRnFOZ0lZSUF4QkVHb2tBQ0FJUVJCcUpBQWdBa0VCTmdKY0lBSWdBellDT0NBQ0lBSkJPR29pQnpZQ1dDQUNJQUlwQTFnM0F3Z2dBaUFDUWVBQWFpSVFJQUpCQ0dvUWx3SWlDRUVFYWpZQ2NDQUNJQWdnQ0NnQ0JFYzZBSFFqQUVFUWF5SU1KQUFnRENBQ0tRSndOd01JSXdCQkVHc2lDaVFBSUFvZ0R6WUNDQ0FLSUFSQi9NVVNFTEVQTmdJRUlBUWdDeUFLUVFScUlBcEJDR29nREVFSWFoRExHaUVESUFwQkVHb2tBQ0FNUVJCcUpBQWdDQkNvQVNBQ1FRRTJBa3dnQWlBQ1FjUUFhallDU0NBQ0lBSXBBMGczQXdBZ0FpQUROZ0pFSUFJZ0VDQUNFSmNDSWd0QkJHbzJBbEFnQ3lnQ0JDRURJQUpCQURvQVBDQUNRY0NjSURZQ09DQUNJQU1nQzBjNkFGUWdCQ0FCSUE0Z0J4RE1HaUFMRUtnQkl3QkJFR3NpQ0NRQVFRQWhCeU1BUVJCcklnUWtBQ0FDUVRScUlnd1E5QU1oQXlBSUFuOENRQ0FGS0FJRUlnWkZEUUFnQlNnQ0FBSi9JQVpCQVdzZ0EzRWdCbWtpQzBFQlRRMEFHaUFESUFNZ0Jra05BQm9nQXlBR2NBc2lCMEVDZEdvb0FnQWlDVVVOQUNBR1FRRnJJUThnRENnQ0FDRU9JQXRCQVVzaEN3TkFJQWtvQWdBaUNVVU5BU0FESUFrb0FnUWlDa2NFUUFKQUlBdEZCRUFnQ2lBUGNTRUtEQUVMSUFZZ0Nrc05BQ0FLSUFad0lRb0xJQWNnQ2tjTkFnc2dDU2dDQ0NBT1J3MEFDMEVBREFFTFFTZ1FGU0VPSUFRZ0JVRUlhallDQkNBRUlBNDJBZ0FnRGtFSWFpSUxJQXdvQWdBMkFnQWdDMEVFYWlBQkVGWWFJQVJCQVRvQUNDQU9RUUEyQWdBZ0RpQUROZ0lFQWtCQkFDQUdJQVVvQWd4QkFXcXpJaElnQlNvQ0VDSVJJQWF6bEY0YkRRQWdCU0FHSUFaQkFXdHhRUUJISUFaQkEwbHlJQVpCQVhSeUlnY0NmeUFTSUJHVmpTSVJRd0FBZ0U5ZElCRkRBQUFBQUdCeEJFQWdFYWtNQVF0QkFBc2lBU0FCSUFkSkd4RERBU0FGS0FJRUlnWWdCa0VCYTNGRkJFQWdCa0VCYXlBRGNTRUhEQUVMSUFNZ0Jra0VRQ0FESVFjTUFRc2dBeUFHY0NFSEN3SkFJQWRCQW5RaUFTQUZLQUlBYWlnQ0FDSURSUVJBSUFRb0FnQWdCU2dDQ0RZQ0FDQUZJQVFvQWdBMkFnZ2dCU2dDQUNBQmFpQUZRUWhxTmdJQUlBUW9BZ0FpQXlnQ0FDSUJSUTBCSUFFb0FnUWhDUUpBSUFZZ0JrRUJheUlCY1VVRVFDQUJJQWx4SVFrTUFRc2dCaUFKU3cwQUlBa2dCbkFoQ1FzZ0JTZ0NBQ0FKUVFKMGFpQUROZ0lBREFFTElBUW9BZ0FnQXlnQ0FEWUNBQ0FESUFRb0FnQTJBZ0FMSUFRb0FnQWhDU0FFUVFBMkFnQWdCU0FGS0FJTVFRRnFOZ0lNSUFRUWdBbEJBUXM2QUF3Z0NDQUpOZ0lJSUFSQkVHb2tBQ0FRSUFnb0FnZzJBZ0FnRUNBSUxRQU1PZ0FFSUFoQkVHb2tBQXNDZnlBTktBSlFRUUpQQkVBZ0FpQUFLQUlRSUEwb0Frd29BZ1FRbHdFMkFuZ2dBQ2dDREVFRWFpSUJJQUpCR0dvUXl3WWhBQ0FDUVFBNkFHUWdBa0hBbkNBMkFtQWdBU0FBSUFKQitBQnFJQUpCNEFCcUVORVBEQUVMSUFBb0FneEJCR29pQVNBQ1FSaHFFTXNHSVFBZ0FrRUFPZ0JrSUFKQndKd2dOZ0pnSUFFZ0FDQUNRZUFBYWhEakJ3c2hCd3dCQ3lBQ1FRQTZBQndnQWlBTlFkZ0FhallDR0NBQ1FSaHFFTGNQUlEwQUlBMG9Ba3dvQWdBaUJTZ0NCQ0VCSUFBb0FoQWdCVUVBSUFGQitPMFBSaHNRbFFraEFTQU5LQUpRUVFKUEJFQWdBaUFBS0FJUUlBMG9Ba3dvQWdRUWx3RTJBbmdnQUNnQ0RDRUFJQUpCQURvQVpDQUNRY0NjSURZQ1lDQUFRUVJxSUFFZ0FrSDRBR29nQWtIZ0FHb1EwUThoQnd3QkN5QUFLQUlNSVFBZ0FrRUFPZ0JrSUFKQndKd2dOZ0pnSUFCQkJHb2dBU0FDUWVBQWFoRGpCeUVIQ3lBQ1FZQUJhaVFBSUFjTERRQWdBQ0FCUVp6R0VoQzJCUXNMQUNBQVFaekdFaEMzQlF2Y0NBRUVmeU1BUVlDSEFXc2lCQ1FBSUFRZ0FqWUM1SVlCSUFJUXJ3RkJBQ0VCSUFJb0FwZ0JJZ05CSDAwRVFDQUNLQUtVQVNFSElBTWhBUXNnQWlnQ2tBRWhBd0pBQWtBRFFFRUFJUVVDUUFOQUlBTWdCMFlnQVNBRlJuRU5BU0FEQkg4Z0F5QUZRUUowYWlnQ0FBVkJBQXNpQmtVZ0JpZ0NCRUhJNlE5SGNrVUVRQ0FFUVFBNkFQd0NJQVFnQmtIWUFHbzJBdmdDSUFSQitBSnFFTGNQRFFRTElBTkZCRUJCQUNFRERBRUxJQVZCQVdvaUJVRWdSdzBBQ3lBREtBS0FBU0VEREFFTEN5QUFRUUE2QU5RQ0lBQkJBRG9BQUF3QkN5QUVRZmdDYWlBRVFmQ0RBV29RaFFVaUJTQUNRUUVRMFFZaEFTQUNFSzhCSUFSQ0FEY0Q2QUlnQkVJQU53UGdBaUFFUVlDQWdQd0ROZ0x3QWlBQlFiZ2dhaWdDQUNJRElBRkJ2Q0JxS0FJQVFRVjBhaUVJSUFGQnVCNXFJUVlnQWtIY0FXb2hCd0pBQWtBRFFDQURJQWhHRFFFQ1FDQURLQUlBUWZqdER4QklEUUJCK08wUElBTW9BZ0FRU0EwQUlBTkJJR29oQXd3QkN3c2dCRUVJYWtIUXB3TkJ1Z0pCQVNBQkVNd0RFQmNpQWtFWWFrSFZ1Z29RRGhvZ0FrSDg3UThRbWdFaUNFRVlha0dsdWdvUURob2dDQ0FES0FJQVFRUnFFSm9CR2lBQ0VCZ01BUXNnQkVFSWFoQ2VCU0lEUWZqdER6WUNBRUVVRUJVaUFpQUhOZ0lFSUFKQm5NWVNOZ0lBSUFJZ0FUWUNFQ0FDSUFVMkFnd2dBaUFFUWVBQ2FqWUNDQ0FFSUFJMkF2aUdBU0FFUWVpR0FXb2lBaUFEUVFocUVLd0NJQUlRRmlBR0lBTVFtUVVnQXhEekF3c2dBU2dDdUNBaUF5QUJLQUs4SUVFRmRHb2hBZ0pBQWtBRFFDQUNJQU5HRFFFQ1FDQURLQUlBUWNEL0VSQklEUUJCd1A4UklBTW9BZ0FRU0EwQUlBTkJJR29oQXd3QkN3c2dCRUVJYWtIUXB3TkJ1Z0pCQVNBQkVNd0RFQmNpQWtFWWFrSFZ1Z29RRGhvZ0FrSEUveEVRbWdFaUNFRVlha0dsdWdvUURob2dDQ0FES0FJQVFRUnFFSm9CR2lBQ0VCZ01BUXNnQkVFSWFoQ2VCU0lDUWNEL0VUWUNBQ0FFUWZTR0FXb2dCVFlDQUNBRVFmQ0dBV29nQVRZQ0FDQUVRY0RHRWpZQzZJWUJJQVFnQkVIb2hnRnFJZ00yQXZpR0FTQUVJQVJCNUlZQmFqWUM3SVlCSUFNZ0FrRUlhaENzQWlBREVCWWdCaUFDRUprRklBSVE4d01MSUFFb0FyZ2dJZ01nQVNnQ3ZDQkJCWFJxSVFJQ1FBSkFBMEFnQWlBRFJnMEJBa0FnQXlnQ0FFRzQ3ZzhRU0EwQVFianVEeUFES0FJQUVFZ05BQ0FEUVNCcUlRTU1BUXNMSUFSQkNHcEIwS2NEUWJvQ1FRRWdBUkRNQXhBWElnSkJHR3BCMWJvS0VBNGFJQUpCdk80UEVKb0JJZ1pCR0dwQnBib0tFQTRhSUFZZ0F5Z0NBRUVFYWhDYUFSb2dBaEFZREFFTElBUkJDR29RbmdVaUEwRzQ3ZzgyQWdCQkZCQVZJZ0lnQnpZQ0JDQUNRZVRHRWpZQ0FDQUNJQVUyQWhBZ0FpQUJOZ0lJSUFJZ0JFSGdBbW8yQWd3Z0JDQUNOZ0w0aGdFZ0JFSG9oZ0ZxSWdJZ0EwRUlhaENzQWlBQ0VCWWdCaUFERUprRklBTVE4d01MSUFFUTdnVWdBQ0FFUVFocUlBVVFpZ1FpQUJEZkJ5QUFFTHdESUFSQjRBSnFFTjBISUFFUTBBWWdCUkNPQkJvTElBUkJnSWNCYWlRQUM5Z0lBUkIvSXdCQnNBSnJJZ0lrQUNBQktBSUFJZ01vQWdRaEJTQUFLQUlFS0FJQUlnUVFyd0ZCQUNFQkFrQWdCRUhjQVdvZ0EwRUFJQVZCd0lBU1Joc2lCUkNDQXhDZ0JDSURSUTBBSUFNb0FnUkJvSllTUncwQUlBQW9BZ2doQkNBREtBSXdJUU1nQWtFQU5nSklJQUlnQXpZQ1JDQUNJQVEyQWtBZ0FpQUVLQUt3QWtFQmF6WUNUQ0FDUVVCckVOc2FSUTBBSUFBb0Fnd2hDaUFDUVVCckVLTUxJUXNnQUNnQ0ZDRUhJQUFvQWhBaEF3SkFJQW9nQ3hEWkdpSUJCRUFnQWtFZ2FpQUJRUkJxRUZZYURBRUxJQU1RSENBQ1FZZ0NhaUlJSUFKQlFHc2lBU0lSRU84REtBSUVLQUlrRUY4Z0FrR1lBbW9pREVHQyt3QWdDQkExSUFKQitBQnFJZzBnREVIYUp4QXRJQUpCK0FGcUlnNGdBUkR2QXlnQ0JDZ0NJQkJmSUFKQm1BRnFJZzhnRFNBT0VFNGdBa0dvQVdvaUJDQVBRY0M4QlJBdElBSkI2QUZxSWhBZ0FSRHZBeWdDQUJCZklBSkJ5QUZxSWdZZ0JDQVFFRTVCQUNFQklBSWdBaWdDekFFZ0FpMEEwd0VpQ1NBSlFSaDBRUmgxUVFCSUlna2JOZ0tzQWlBQ0lBSW9Bc2dCSUFZZ0NSczJBcWdDSUFJZ0Fpa0RxQUkzQXhnZ0FrRWdhaUFEUVlnQ2FpQUNRUmhxRUo4RUlBWVFEeG9nRUJBUEdpQUVFQThhSUE4UUR4b2dEaEFQR2lBTkVBOGFJQXdRRHhvZ0NCQVBHaUFDUVFNMkF2d0JJQUpCNThnQk5nTDRBU0FDSUFjMkFwZ0NJQUlnQWlrRCtBRTNBeEFnQWlBUk5nS2NBaUFHSUFNZ0FrRVFhaERoQVNBQ1FvQ0FnSURBQURjQ3ZBRWdBaUFFTmdLNEFRTkFJQUpCUUdzUTd3TW9BZ1FvQWlRZ0FVc0VRQ0FDSUFFMkFuZ2dBaUFESUFKQnlBRnFJQUpCK0FCcUVOZ2FOZ0tZQVNBQlFRRnFJUUVnQWtHb0FXb2dBa0dZQVdvUWNRd0JDd3NnQWtGQWF4RHZBeUFIS0FJQUVMWVBJUUVnQWtFQU9nQ01BU0FDUWNDY0lEWUNpQUVnQXlBQ1FjZ0JhaUlHSUFFZ0FrR0lBV29RMXhvaEFTQUNRUUUyQXV3QklBSWdBVFlDbEFFZ0FpQUNRWlFCYWpZQzZBRWdBaUFDS1FQb0FUY0RDQ0FDSUFKQm1BRnFJQUpCQ0dvUWx3SWlBVUVFYWpZQ2lBSWdBaUFCSUFFb0FnUkhPZ0NNQWlBQ1FaZ0NhaERPR2lFSElBSWdBa0dZQW1vUXpobzJBbUFnQWlBRElBSkI0QUJxSUFKQnFBRnFJZ2dRMVJvMkFtZ2dBeUFDUWVnQWFoRFVHaUVFSUFKQkFUWUNkQ0FDSUFRMkFtd2dBaUFDUWV3QWFqWUNjQ0FDSUFJcEEzQTNBd0FnQWtINEFHb2dBaENYQWlFRUlBSkJBRG9BWENBQ1FjQ2NJRFlDV0NBQ1FRQTZBRlFnQWtIQW5DQTJBbEFnQXlBQ1FTQnFJZ01nQWtHSUFtb2dCeUFFSUFKQjJBQnFJQUpCMEFCcUVOTWFJQVFRcUFFZ0FSQ29BU0FJRUY0Z0JpQUtJQXNnQXhEU0dnc2dBQ2dDRUNFRElBSUNmeUFBS0FJVUlRQkJBQ0FGUlEwQUdpQUFLQUlFSWdFRVFDQUJLQUlBSUFVb0FnaEJBVUVCUWREU0NFSFFwd05CakFFUVN3c0NmeUFGSUFBUTlCNGlBUVJBSUFFZ0FTZ0NCRUhBZ0JKR0RRRWFJQUFnQVVIQWdCSVE0UVFMUVFBTEN6WUN5QUVnQXlBQ1FTQnFJQUpCeUFGcUVMTVBJUUVMSUFKQnNBSnFKQUFnQVFzTkFDQUFJQUZCdE1VU0VNY01Dd3NBSUFCQnRNVVNFTWdNQzhZSUFSRi9Jd0JCd0FKcklnSWtBQ0FCS0FJQUlnTW9BZ1FoQkNBQUtBSUVLQUlBSWdVUXJ3RkJBQ0VCQWtBZ0JVSGNBV29nQTBFQUlBUkIrT3NQUmhzaUNTZ0NKQkRlR2lJRVJRMEFJQUFvQWdnaEF5QUVLQUl3SVFRZ0FrRUFOZ0pRSUFJZ0JEWUNUQ0FDSUFNMkFrZ2dBaUFES0FLd0FrRUJhellDVkNBQ1FjZ0FhaERiR2tVTkFDQUFLQUlNSVFvZ0FrSElBR29Rb3dzaEN5QUFLQUlVSVFZZ0FDZ0NFQ0VEQWtBZ0NpQUxFTmthSWdFRVFDQUNRU2hxSUFGQkVHb1FWaG9NQVFzZ0F4QWNJQUpCaUFKcUlnY2dBa0hJQUdvaUFTSVNFTzhES0FJRUtBSWtFRjhnQWtHWUFtb2lERUdKK3dBZ0J4QTFJQUpCcUFKcUlnMGdERUhhSnhBdElBSkIrQUZxSWc0Z0FSRHZBeWdDQkNnQ0lCQmZJQUpCZ0FGcUlnOGdEU0FPRUU0Z0FrR1lBV29pRUNBUFFjQzhCUkF0SUFKQjZBRnFJaEVnQWtISUFHb1E3d01vQWdBUVh5QUNRYWdCYWlJRUlCQWdFUkJPSUFKQnlBRnFJZ1VnQkVIWHlBRVFMVUVBSVFFZ0FpQUNLQUxNQVNBQ0xRRFRBU0lJSUFoQkdIUkJHSFZCQUVnaUNCczJBcndDSUFJZ0FpZ0N5QUVnQlNBSUd6WUN1QUlnQWlBQ0tRTzRBamNESUNBQ1FTaHFJQU5CaUFKcUlBSkJJR29RbndRZ0JSQVBHaUFFRUE4YUlCRVFEeG9nRUJBUEdpQVBFQThhSUE0UUR4b2dEUkFQR2lBTUVBOGFJQWNRRHhvZ0FrRUJOZ0w4QVNBQ1FZYjZBallDK0FFZ0FpQUdOZ0tzQWlBQ0lBSXBBL2dCTndNWUlBSWdFallDcUFJZ0JTQURJQUpCR0dvUTRRRWdBa0tBZ0lDQXdBQTNBcndCSUFJZ0JEWUN1QUVEUUNBQ1FjZ0FhaER2QXlnQ0JDZ0NKQ0FCU3dSQUlBSWdBVFlDZ0FFZ0FpQURJQUpCeUFGcUlBSkJnQUZxRU5nYU5nS1lBU0FCUVFGcUlRRWdBa0dvQVdvZ0FrR1lBV29RY1F3QkN3c2dCaUFDUWNnQWFoRHZBeWdDQkJEZEJDRUJJQUpCQURvQTdBRWdBa0hBbkNBMkF1Z0JJQU1nQWtISUFXb2lCU0FCSUFKQjZBRnFFTmNhSVFFZ0FrRUJOZ0tNQWlBQ0lBRTJBcFFCSUFJZ0FrR1VBV28yQW9nQ0lBSWdBaWtEaUFJM0F4QWdBaUFDUVpnQmFpQUNRUkJxRUpjQ0lnRkJCR28yQXBnQ0lBSWdBU0FCS0FJRVJ6b0FuQUlnQWtHb0Ftb1ExaG9oQmlBQ0lBSkJxQUpxRU5ZYU5nSm9JQUlnQXlBQ1FlZ0FhaUFDUWFnQmFpSUhFTlVhTmdKd0lBTWdBa0h3QUdvUTFCb2hCQ0FDUVFFMkFud2dBaUFFTmdKMElBSWdBa0gwQUdvMkFuZ2dBaUFDS1FONE53TUlJQUpCZ0FGcUlBSkJDR29RbHdJaEJDQUNRUUE2QUdRZ0FrSEFuQ0EyQW1BZ0FrRUFPZ0JjSUFKQndKd2dOZ0pZSUFNZ0FrRW9haUlESUFKQm1BSnFJQVlnQkNBQ1FlQUFhaUFDUWRnQWFoRFRHaUFFRUtnQklBRVFxQUVnQnhCZUlBVWdDaUFMSUFNUTBob0xJQUlnQUNnQ0ZDQUpLQUlrRU1ZR05nTElBU0FBS0FJUUlRRWdBaUFBS0FJVUlBa29BaWdRbHdFMkFwZ0JJQUlnQVNBQ1FTaHFJQUpCbUFGcUVMTVBOZ0tvQVNBQUtBSVFJQUpCeUFGcUlBSkJxQUZxRUlFSklRRUxJQUpCd0FKcUpBQWdBUXNOQUNBQUlBRkJrTVVTRU1jTUN3c0FJQUJCa01VU0VNZ01DN1VCQVFSL0l3QkJFR3NpQWlRQUlBRW9BZ0FpQXlnQ0JDRUVJQUFvQWdRb0FnQWlCUkN2QVVFQUlRRUNRQ0FGUWR3QmFpQURRUUFnQkVIQS94RkdHeUlES0FJa0VONGFJZ1JGRFFBZ0FDZ0NDQ0VGSUFJZ0JDZ0NNRFlDQkNBQ1FRaHFJQVVnQWtFRWFoRGRHaUFDTFFBSVJRMEFJQUlnQUNnQ0RDQURLQUlrRU1ZR05nSUlJQUlnQUNnQ0RDQURLQUlvRUpjQk5nSUVJQUFvQWhBZ0FrRUlhaUFDUVFScUVMUVBJUUVMSUFKQkVHb2tBQ0FCQ3cwQUlBQWdBVUhzeEJJUXRnVUxDd0FnQUVIc3hCSVF0d1VMRlFBZ0FVSEl4QkkyQWdBZ0FTQUFLQUlFTmdJRUN3c0FJQUJCeU1RU0VKOERDK1VYQWhKL0EzNGpBRUh3aVFGcklnUWtBQ0FFSUFJMkF0U0pBU0FFUWVnRmFpQUVRZUNHQVdvUWhRVWlDaUFDUVFFUTBRWWhDQ0FFUW9DQWdJREFBVGNDMUFVZ0JFSUFOd0xjQlNBRUlBUkJzQU5xSWdFMkF0QUZJQUZCREJDNUR5QUNFSzhCUVFBaEFTQUNLQUtZQVNJRFFSOU5CRUFnQWlnQ2xBRWhGQ0FESVFFTElBSW9BcEFCSVEwZ0JFRVlhaUVWQWtBRFFFRUFJUkFDUUFOQUlBMGdGRWNnQVNBUVIzSkZCRUFnQkNnQzNBVU5BaUFBUVFBNkFOUUNJQUJCQURvQUFBd0VDd0pBSUEwRWZ5QU5JQkJCQW5ScUtBSUFCVUVBQ3lJQ1JTQUNLQUlFUWRqM0VVZHlEUUFnQkNnQzFJa0JJZ01RcndFZ0EwSGNBV29nQWhEb0dpSUNRUWdRNXhwRkJFQWdBa0VIRU9jYVJRMEJDeUFDS0FKRUloRWdBaWdDU0VFQ2RHb2hGZ05BSUJFZ0ZrWU5BUUpBSUJFb0FnQWlEQ2dDS0NJQ0tBSUVRZkNxRWtjZ0FrVnlEUUFnRENnQ1hDRURJQVJCQURvQXJBTWdCQ0FEUVR4cU5nS29BeUFFUWFnRGFoQzNEeUlEUlEwQUlBTW9BaVFpQXlBQ0VMb2JSZzBBSUFRZ0FqWUM5QUlnQkNBRE5nTHdBaUFNS0FJd0lRTWdCQ0FJSUFSQmlBTnFJQXhCQ0dvUVZoRHZCeUFFUWZBQ2FpQUlLQUlBRUxZUElRVWpBRUZBYWlJQ0pBQWdBaUFGTmdJNElBSWdDaUFFRVBNQ05nSTBJQUlnQTYwM0F3Z2pBRUVRYXlJREpBQWdBeUFLSUFKQkNHb1E2UVUyQWd3Z0NpQUtRZGdDYWlJU0lBTkJER29RNEJvaEJTQURRUkJxSkFBZ0JTRURJQUpCQVRZQ0hDQUNJQU0yQWhRZ0FpQUNRUlJxTmdJWUlBSWdBaWtER0RjREFDQUNRU0JxSUFJUWx3SWhCU01BUVJCcklnY2tBQ0FLRUJ3Z0NpQUtLQUlNUVFGcUlnTTJBZ3dnQnlBRE5nSUlJd0JCRUdzaUF5UUFJQXBCakFGcUlnWVFoaEVoQ1NBQ0tBSTRJUXNnQWlnQ05DRVBJQWNvQWdnaERpQUtLQUlJSVJNZ0F5QUZRUVJxTmdJSUlBTWdCU2dDQkNBRlJ6b0FEQ0FHSUFrZ0V5QU9JQklnRHlBTElBTkJDR29RaHhFaUNSQW9JQVlnQmlnQ0dFRUJhallDR0NBRFFSQnFKQUFnQjBFUWFpUUFJQWtoQXlBRkVLZ0JJQUpCUUdza0FDQU1LQUpjSVFVakFFRVFheUlDSkFBZ0FpQUZOZ0lNSUFnb0FnUW9BZ0FnQlJCWFFRRkJBVUdwbndoQjBLY0RRZXNDRUVzZ0NDZ0NBQ2dDQ0NBREVGZEJBVUVCUVltMkNFSFFwd05CN0FJUVN5QUNJQU0yQWdnZ0FrRU1haUVISXdCQjBBRnJJZ01rQUNBSVFRaHFJZ1VvQXNRRUlBVW9BdEFFSWdaQmxnRnNRWllCYWtIa0FHNUpCRUFnQlNBR1FRRjBRUUpxRUpvRUN5QURRY2dCYWlBRklBY1E2d01nQlNnQ3hBUWlEa0VCYXlFVElBY29BZ0FoQmlBRktBTEFCQ0VQSUFNb0Fzd0JJUklnQXlnQ3lBRWhDVUVBSVFzQ1FBTkFJQXNnRGtjRVFDQVBJQWxCTUd4cUlnY3RBQ0JGQkVBZ0F5QUdOZ0lJSUFJb0FnZ2hCaUFESUFOQkVHb2lEallDSUNBRElBWTJBaFFnQTBISXhCSTJBaEFnQnlBRFFRaHFFSmtFSUE0UUZpQURLQUxNQVNFR0lBOGdDVUV3YkdvaUNTQUxOZ0lzSUFrZ0JqWUNLQ0FGSUFVb0F0QUVRUUZxTmdMUUJDQUZJQVVvQXRRRVFRRnFOZ0xVQkNBQ0lBZEJDR28yQWdRZ0FrRUFOZ0lBREFNTEFrQWdCeWdDS0NBU1J3MEFJQVlnQnlnQ0FFY05BQ0FESUFZMkFnZ2dBaWdDQ0NFR0lBTWdBMEVRYWlJSk5nSWdJQU1nQmpZQ0ZDQURRY2pFRWpZQ0VDQUhJQU5CQ0dvUTJ3UWdDUkFXSUFVZ0JTZ0MxQVJCQVdvMkF0UUVJQUlnQjBFSWFqWUNCQ0FDUVFFMkFnQU1Bd3NnQ3lBSEtBSXNTd1JBSUFNZ0JqWUNxQUVnQWlnQ0NDRUdJQU1nQTBHd0FXb2lEellDd0FFZ0F5QUdOZ0swQVNBRFFjakVFallDc0FFZ0EwRUlhaUFEUWFnQmFoQ1hCQ0VHSUFNb0Fzd0JJUTRnQmlBTE5nSXNJQVlnRGpZQ0tDQVBFQllnQmlBSEVQQURJQVlnQmlnQ0xFRUJhallDTENBRklBbEJBV29nQlNnQ3hBUndJQVlRbGdRZ0JTQUZLQUxRQkVFQmFqWUMwQVFnQlNBRktBTFVCRUVCYWpZQzFBUWdBaUFIUVFocU5nSUVJQUpCQURZQ0FDQUdFSmtEREFNRklBbEJBV3BCQUNBSklCTkhHeUVKSUF0QkFXb2hDd3dDQ3dBTEN5QURRUWhxUVlhMUEwSHJBMEVPSUFOQnFBRnFFQjBpQlJBWElnZEJHR3BCbGpVUURob2dCeEFZSUFKQ0FEY0NBQ0FGRUI0TElBTkIwQUZxSkFBZ0FrRVFhaVFBSUFRb0F0UUZJQVFvQXR3RklnSkJsZ0ZzUVpZQmFrSGtBRzVKQkVBZ0JFR3dBMm9nQWtFQmRFRUNhaERtR2dzZ0RCRDhBaUVISUFRb0F0UUZJZ1pCQVdzaENTQUhJQVp3SVFWQkFDRUNJQVFvQXRBRklRc0RRQ0FDSUFaSEJFQWdDeUFGUVJoc2FpSURMUUFNUlFSQUlBUXBBL0FDSVJjZ0EwRUJPZ0FNSUFNZ0Z6Y0NCQ0FESUF3MkFnQWdBeUFDTmdJVUlBTWdCellDRUNBRUlBUW9BdHdGUVFGcU5nTGNCU0FFSUFRb0F1QUZRUUZxTmdMZ0JRd0RDeUFISUFNb0FoQkdCRUFnRENBREtBSUFSZzBEQ3lBQ0lBTW9BaFJMQkVBZ0JFSG9pUUZxSWdZZ0J6WUNBQ0FFSUFRcEEvQUNOd0xjaVFFZ0JDQU1OZ0xZaVFFZ0JDQUNOZ0xzaVFFZ0JFRUJPZ0RraVFFZ0JDQUdLUU1BSWhjM0F4QWdCQ0FFUWVDSkFXb2lBaWtEQUNJWU53TUlJQVFnQkNrRDJJa0JJaGszQXdBZ0JpQURLUUlRTndNQUlBSWdBeWtDQ0RjREFDQUVJQU1wQWdBM0E5aUpBU0FESUJjM0FoQWdBeUFZTndJSUlBTWdHVGNDQUNBRUlBUW9BdXlKQVVFQmFqWUM3SWtCSUFSQnNBTnFJQVZCQVdvZ0JDZ0MxQVZ3SUFSQjJJa0JhaENDRUNBRUlBUW9BdHdGUVFGcU5nTGNCU0FFSUFRb0F1QUZRUUZxTmdMZ0JRd0RCU0FGUVFGcVFRQWdCU0FKUnhzaEJTQUNRUUZxSVFJTUFnc0FDd3NnQkVHR3RRTkI2d05CRGlBRVFkaUpBV29RSFNJQ0VCY2hBeUFWUVpZMUVBNGFJQU1RR0NBQ0VCNExJQkZCQkdvaEVRd0FDd0FMSUExRkJFQkJBQ0VOREFFTElCQkJBV29pRUVFZ1J3MEFDeUFOS0FLQUFTRU5EQUVMQ3lBSVFiZ2dhaWdDQUNJQ0lBaEJ2Q0JxS0FJQVFRVjBhaUVCSUFoQnVCNXFJUU1DUUFKQUEwQWdBU0FDUmcwQkFrQWdBaWdDQUVIQS94RVFTQTBBUWNEL0VTQUNLQUlBRUVnTkFDQUNRU0JxSVFJTUFRc0xJQVJCMEtjRFFib0NRUUVnQ0JETUF4QVhJZ0ZCR0dwQjFib0tFQTRhSUFGQnhQOFJFSm9CSWdWQkdHcEJwYm9LRUE0YUlBVWdBaWdDQUVFRWFoQ2FBUm9nQVJBWURBRUxJQVFRbmdVaUFrSEEveEUyQWdCQkZCQVZJZ0ZCN01RU05nSUFJQUVnQ2pZQ0VDQUJJQWcyQWd3Z0FTQUVRZFNKQVdvMkFnUWdBU0FFUWJBRGFqWUNDQ0FFSUFFMkF1aUpBU0FFUWRpSkFXb2lBU0FDUVFocUVLd0NJQUVRRmlBRElBSVFtUVVnQWhEekF3c2dCRUlBTndQNEFpQUVRZ0EzQS9BQ0lBUkJnSUNBL0FNMkFvQURJQWdvQXJnZ0lnSWdDQ2dDdkNCQkJYUnFJUUVDUUFKQUEwQWdBU0FDUmcwQkFrQWdBaWdDQUVINDZ3OFFTQTBBUWZqckR5QUNLQUlBRUVnTkFDQUNRU0JxSVFJTUFRc0xJQVJCMEtjRFFib0NRUUVnQ0JETUF4QVhJZ0ZCR0dwQjFib0tFQTRhSUFGQi9Pc1BFSm9CSWdWQkdHcEJwYm9LRUE0YUlBVWdBaWdDQUVFRWFoQ2FBUm9nQVJBWURBRUxJQVFRbmdVaUFrSDQ2dzgyQWdCQkdCQVZJZ0ZCa01VU05nSUFJQUVnQ0RZQ0ZDQUJJQW8yQWhBZ0FTQUVRZFNKQVdvMkFnUWdBU0FFUWZBQ2FqWUNEQ0FCSUFSQnNBTnFOZ0lJSUFRZ0FUWUM2SWtCSUFSQjJJa0JhaUlCSUFKQkNHb1FyQUlnQVJBV0lBTWdBaENaQlNBQ0VQTURDeUFFUWdBM0ErQUNJQVJDQURjRDJBSWdCRUdBZ0lEOEF6WUM2QUlnQ0NnQ3VDQWlBaUFJS0FLOElFRUZkR29oQVFKQUFrQURRQ0FCSUFKR0RRRUNRQ0FDS0FJQVFjQ0FFaEJJRFFCQndJQVNJQUlvQWdBUVNBMEFJQUpCSUdvaEFnd0JDd3NnQkVIUXB3TkJ1Z0pCQVNBSUVNd0RFQmNpQVVFWWFrSFZ1Z29RRGhvZ0FVSEVnQklRbWdFaUEwRVlha0dsdWdvUURob2dBeUFDS0FJQVFRUnFFSm9CR2lBQkVCZ01BUXNnQkJDZUJTSUNRY0NBRWpZQ0FFRVlFQlVpQVVHMHhSSTJBZ0FnQVNBSU5nSVVJQUVnQ2pZQ0VDQUJJQVJCMUlrQmFqWUNCQ0FCSUFSQjJBSnFOZ0lNSUFFZ0JFR3dBMm8yQWdnZ0JDQUJOZ0xvaVFFZ0JFSFlpUUZxSWdFZ0FrRUlhaENzQWlBQkVCWWdBeUFDRUprRklBSVE4d01MSUFnUTdnVWdBQ0FFSUFvUWlnUWlBQkRmQnlBQUVMd0RJQVJCMkFKcUVPVWFJQVJCOEFKcUVPVWFDeUFFUWJBRGFpSUFFT1FhSUFSQkFEWUMxQVVnQUNBRUtBTFFCUkEySUFnUTBBWWdDaENPQkJvZ0JFSHdpUUZxSkFBTHdRTUJCbjhnQVNnQ0FCQ1RDQ0VCSXdCQklHc2lBaVFBSUFBb0FnZ2hCQ0FBS0FJRUlRQWdBa0VBTmdJUUlBSWdBVFlDRENBQ0lBQTJBZ2dnQWlBQUtBS2dCRUVCYXpZQ0ZBSkFJQUpCQ0dvUTlSb0VRQ0FFS0FMNEFpQUNRUWhxRUwwUEVOb0VJUU1NQVFzRFFBSkFBa0FnQVVVZ0FTZ0NCRUdBZ1JKSGNnMEFRUUVoQUFKQUFrQWdBU2dDSkE0REFBSUJBZ3RCZnlFQUN5QUJRU2hxSVFFZ0FDQUZhaUVGREFFTElBUW9BdndDSWdBUXJ3RUNRQ0FBUWR3QmFpQUJFT0VjSWdCRkRRQWdBQ2dDTENJQUtBSUVRYWljRWtjTkFDQUFLQUlJSWdNb0FnUkI0UGtQUncwQUlBQW9BZ3dvQWdSQjJLd1NSdzBBSUFOQkxHb2hBUXdCQ3lBQ0lBUkIrQUpxSUFFUXhnWWlBellDSEVFQUlRRWdCVUVBSUFWQkFFb2JJUWRCQUNFQUEwQWdBQ0FIUmdSQUEwQWdBU0FGVEEwRklBSWdCQ2dDK0FJZ0FrRWNhaERlQnlJRE5nSWNJQUZCQVdzaEFRd0FDd0FGSUFRb0F2Z0NJUVlqQUVFUWF5SURKQUFnQTBFQ05nSU1JQU1nQWlnQ0hEWUNDQ0FHSUFOQkRHb2dBMEVJYWhDNkR5RUdJQU5CRUdva0FDQUNJQVlpQXpZQ0hDQUFRUUZxSVFBTUFRc0FDd0FMSUFFb0FnQWhBUXdBQ3dBTElBSkJJR29rQUNBREN4VUFJQUZCME1NU05nSUFJQUVnQUNrQ0JEY0NCQXNMQUNBQVFkRERFaENIQmdzVkFDQUJRYXpERWpZQ0FDQUJJQUFvQWdRMkFnUUxDd0FnQUVHc3d4SVFud01McmdZQkIzOGpBRUh3Z3dGcklnRWtBQ0FCSUFJUWdSc2hDRUVBSVFNakFFR1FCMnNpQkNRQUlBUkI2QUpxRU1RUElRc2dCRUVBT2dEbkFpQUlLQUw4QWlJRkVLOEJRUUFnQlNnQ0hDSUNJQUpCSDBzaUFoc2hCMEVBSUFVb0FoZ2dBaHNoQWlBSVFmZ0NhaUVKSUFVb0FoUWhCZ05BQWtBQ1FDQUNJQVpHSUFNZ0IwWnhSUVJBQWtBZ0JrVUVRRUVBSVFaQkJDZ0NBRUhZckJKSERRVU1BUXNnQmlBRFFRSjBhaWdDQUNnQ0JFSFlyQkpIRFFJTElBUkJBVG9BNXdJTElBZ29BdndDSWdjUXJ3RkJBQ0VGUVFBaEJrRUFJUUlnQnlnQ21BRWlBMEVmVFFSQUlBY29BcFFCSVFZZ0F5RUNDeUFIS0FLUUFTRURBa0FEUUFKQUlBTWdCa2NnQWlBRlIzSkZCRUFnQkMwQTV3SU5BU0FBUVFBNkFOUUNJQUJCQURvQUFBd0RDeUFEQkg4Z0F5QUZRUUowYWlnQ0FDRUhJQVFnQ3pZQ0RDQUVJQWcyQWdnZ0JDQUVRZWNDYWpZQzRBSWdCeUFFUVFocUlBUkI0QUpxRVBRYUlBVkJBV29pQlVFZ1J3MENRUUFoQlNBREtBS0FBUVVnQkNBTE5nSU1JQVFnQ0RZQ0NDQUVJQVJCNXdKcU5nTGdBa0VBSUFSQkNHb2dCRUhnQW1vUTlCcEJBQXNoQXd3QkN3c2dCQ0FMTmdJSUlBUWdDRFlDRENBRVFRaHFJUWNqQUVHd0FXc2lDaVFBSUFsQnVDQnFLQUlBSWdVZ0NVRzhJR29vQWdCQkJYUnFJUU1nQ1VHNEhtb2hBZ0pBQWtBRFFDQURJQVZHRFFFQ1FDQUZLQUlBUWRqb0R4QklEUUJCMk9nUElBVW9BZ0FRU0EwQUlBVkJJR29oQlF3QkN3c2dDa0VRYWtIUXB3TkJ1Z0pCQVNBSkVNd0RFQmNpQTBFWWFrSFZ1Z29RRGhvZ0EwSGM2QThRbWdFaUFrRVlha0dsdWdvUURob2dBaUFGS0FJQVFRUnFFSm9CR2lBREVCZ01BUXNnQ2tFUWFoQ2VCU0lGUWRqb0R6WUNBQ0FLSUFjcEFnQTNBd2dqQUVFZ2F5SUdKQUFnQmlBS0tRSUlOd0lNSUFaQjBNTVNOZ0lJSUFZZ0JrRUlhaUlETmdJWUlBTWdCVUVJYWhDc0FpQURFQllnQmtFZ2FpUUFJQUlnQlJDWkJTQUZFUE1EQ3lBS1FiQUJhaVFBSUFrUTdnVWdBQ0FISUFoQkJHb1FpZ1FpQUJEZkJ5QUFFTHdEQ3lBTEVNTVBJQVJCa0FkcUpBQU1BUXNnQTBFQmFpSURRU0JIRFFFZ0JpZ0NnQUVoQmtFQUlRTU1BUXNMSUFnUWdCc2dBVUh3Z3dGcUpBQUxvd0VCQTM4Z0FTZ0NBQ0lCUVFBZ0FTZ0NCRUg0N1E5R0d5RUNJd0JCRUdzaUFTUUFJQUFvQWd3aEJBSkFJQUFvQWdRZ0FoQ0NBeUlDUlEwQUlBSVFvQVFpQWtVTkFDQUNLQUlFUWRpY0VrY05BQ0FBS0FJSUlRQWdBaWdDTENFQ0lBRkJBRFlDQ0NBQklBSTJBZ1FnQVNBQU5nSUFJQUVnQUNnQ29BUkJBV3MyQWd3Z0FSRDFHa1VOQUNBRVFRUnFJQUVRdlE4UTJnUWhBd3NnQVVFUWFpUUFJQU1MRFFBZ0FDQUJRY1RDRWhEV0FRc0xBQ0FBUWNUQ0VoRFJFZ3NWQUNBQlFhRENFallDQUNBQklBQXBBZ1EzQWdRTEN3QWdBRUdnd2hJUWh3WUxGUUFnQVVIOHdSSTJBZ0FnQVNBQUtRSUVOd0lFQ3dzQUlBQkIvTUVTRUljR0Mva1NBaFovQVg0akFFSHdnd0ZySWdFa0FDQUJJQUlRZ1JzaEVrRUFJUUlqQUVHZ0Iyc2lCQ1FBSUJJb0FnQWlDeEN2QVNBRUlBUkIrQUpxRU1RUEloZzJBdlFDSUFRZ0VqWUM4QUlnQkVFQU9nRHZBaUFTS0FMOEFpSUhFSzhCSUFjb0FyUUJJZ05CSDAwRVFDQUhLQUt3QVNFWklBTWhBZ3NnRWtINEFtb2hGaUFMUWR3QmFpRWFJQWNvQXF3QklRTUNRQU5BQWtBZ0F5QVpSeUFDSUJkSGNrVUVRQ0FFTFFEdkFnMEJJQUJCQURvQTFBSWdBRUVBT2dBQURBTUxRUUFoQlNBREJFQWdBeUFYUVFKMGFpZ0NBQ0VGQ3lBRUlCSTJBZ2dnQkNBRVFlOENhaUlITmdJUUlBUWdCRUh3QW1vaUN6WUNEQ0FFSUJJMkF1QUNJQVFnQnpZQzZBSWdCQ0FMTmdMa0FpQUVRUWhxSVFjZ0JFSGdBbW9oQ3lNQVFSQnJJaE1rQUNBVElBVTJBZ3dDUUNBRlJRMEFJQk1nQlNnQ0JEWUNBQ0FUSUJOQkRHbzJBZ1FnRXlnQ0FDSVZRYWljRWtZRVFDQVRLQUlFS0FJQUlRNUJBQ0VNSXdCQkVHc2lEeVFBSUE0b0FsUUVRQ0FPS0FJSUlRZ2dCeWdDQUNFRklBOGdEallDQ0NBUElBY29BZ1EyQWd3akFFRVFheUlHSkFBZ0JpQUlOZ0lNSUFWQitBSnFJZ1VvQWdRb0FnQWdDQkJYUVFGQkFVR3Bud2hCMEtjRFFZQURFRXNqQUVIUUFXc2lDU1FBSUFWQkNHb2lEU2dDeEFRZ0RTZ0MwQVFpQlVHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FOSUFWQkFYUkJBbW9RbWdRTElBbEJ5QUZxSUEwZ0JrRU1haUlGRU9zRElBMG9Bc1FFSWc1QkFXc2hDQ0FGS0FJQUlSRWdEU2dDd0FRaEZDQUpLQUxNQVNFRklBa29Bc2dCSVJBQ1FBTkFJQXdnRGtjRVFDQVVJQkJCTUd4cUlnb3RBQ0JGQkVBZ0NTQVJOZ0lJSUE4cEFnZ2hHeUFKSUFsQkVHb2lCVFlDSUNBSklCczNBaFFnQ1VIOHdSSTJBaEFnQ2lBSlFRaHFFSmtFSUFVUUZpQUpLQUxNQVNFSUlCUWdFRUV3YkdvaUJTQU1OZ0lzSUFVZ0NEWUNLQ0FOSUEwb0F0QUVRUUZxTmdMUUJDQU5JQTBvQXRRRVFRRnFOZ0xVQkNBR0lBcEJDR28yQWdRZ0JrRUFOZ0lBREFNTEFrQWdDaWdDS0NBRlJ3MEFJQkVnQ2lnQ0FFY05BQ0FKSUJFMkFnZ2dEeWtDQ0NFYklBa2dDVUVRYWlJRk5nSWdJQWtnR3pjQ0ZDQUpRZnpCRWpZQ0VDQUtJQWxCQ0dvUTJ3UWdCUkFXSUEwZ0RTZ0MxQVJCQVdvMkF0UUVJQVlnQ2tFSWFqWUNCQ0FHUVFFMkFnQU1Bd3NnRENBS0tBSXNTd1JBSUFrZ0VUWUNxQUVnRHlrQ0NDRWJJQWtnQ1VHd0FXb2lDRFlDd0FFZ0NTQWJOd0swQVNBSlFmekJFallDc0FFZ0NVRUlhaUFKUWFnQmFoQ1hCQ0VPSUFrb0Fzd0JJUVVnRGlBTU5nSXNJQTRnQlRZQ0tDQUlFQllnRGlBS0VQQURJQTRnRGlnQ0xFRUJhallDTENBTklCQkJBV29nRFNnQ3hBUndJQTRRbGdRZ0RTQU5LQUxRQkVFQmFqWUMwQVFnRFNBTktBTFVCRUVCYWpZQzFBUWdCaUFLUVFocU5nSUVJQVpCQURZQ0FDQU9FSmtEREFNRklCQkJBV3BCQUNBSUlCQkhHeUVRSUF4QkFXb2hEQXdDQ3dBTEN5QUpRUWhxUVlhMUEwSHJBMEVPSUFsQnFBRnFFQjBpQ0JBWElnVkJHR3BCbGpVUURob2dCUkFZSUFaQ0FEY0NBQ0FJRUI0TElBbEIwQUZxSkFBZ0JrRVFhaVFBSUFjb0FnaEJBVG9BQUFzZ0QwRVFhaVFBQ3lBVlFhaWNFa1lOQUNBVEtBSUFRY0NjRWtZRVFDQVRLQUlFS0FJQUlRaEJBQ0VRSXdCQkVHc2lFU1FBSUFnb0Fsd0VRQ0FJS0FJSUlRVWdDeWdDQUNFSElCRWdDRFlDQ0NBUklBc29BZ1EyQWd3akFFRVFheUlNSkFBZ0RDQUZOZ0lNSUFkQitBSnFJZ2NvQWdRb0FnQWdCUkJYUVFGQkFVR3Bud2hCMEtjRFFZQURFRXNqQUVIUUFXc2lCaVFBSUFkQkNHb2lDaWdDeEFRZ0NpZ0MwQVFpQjBHV0FXeEJsZ0ZxUWVRQWJra0VRQ0FLSUFkQkFYUkJBbW9RbWdRTElBWkJ5QUZxSUFvZ0RFRU1haUlIRU9zRElBb29Bc1FFSWdoQkFXc2hCU0FIS0FJQUlSVWdDaWdDd0FRaERpQUdLQUxNQVNFSElBWW9Bc2dCSVJRQ1FBTkFJQWdnRUVjRVFDQU9JQlJCTUd4cUlnOHRBQ0JGQkVBZ0JpQVZOZ0lJSUJFcEFnZ2hHeUFHSUFaQkVHb2lCellDSUNBR0lCczNBaFFnQmtHZ3doSTJBaEFnRHlBR1FRaHFFSmtFSUFjUUZpQUdLQUxNQVNFRklBNGdGRUV3YkdvaUJ5QVFOZ0lzSUFjZ0JUWUNLQ0FLSUFvb0F0QUVRUUZxTmdMUUJDQUtJQW9vQXRRRVFRRnFOZ0xVQkNBTUlBOUJDR28yQWdRZ0RFRUFOZ0lBREFNTEFrQWdEeWdDS0NBSFJ3MEFJQlVnRHlnQ0FFY05BQ0FHSUJVMkFnZ2dFU2tDQ0NFYklBWWdCa0VRYWlJSE5nSWdJQVlnR3pjQ0ZDQUdRYURDRWpZQ0VDQVBJQVpCQ0dvUTJ3UWdCeEFXSUFvZ0NpZ0MxQVJCQVdvMkF0UUVJQXdnRDBFSWFqWUNCQ0FNUVFFMkFnQU1Bd3NnRUNBUEtBSXNTd1JBSUFZZ0ZUWUNxQUVnRVNrQ0NDRWJJQVlnQmtHd0FXb2lCVFlDd0FFZ0JpQWJOd0swQVNBR1FhRENFallDc0FFZ0JrRUlhaUFHUWFnQmFoQ1hCQ0VJSUFZb0Fzd0JJUWNnQ0NBUU5nSXNJQWdnQnpZQ0tDQUZFQllnQ0NBUEVQQURJQWdnQ0NnQ0xFRUJhallDTENBS0lCUkJBV29nQ2lnQ3hBUndJQWdRbGdRZ0NpQUtLQUxRQkVFQmFqWUMwQVFnQ2lBS0tBTFVCRUVCYWpZQzFBUWdEQ0FQUVFocU5nSUVJQXhCQURZQ0FDQUlFSmtEREFNRklCUkJBV3BCQUNBRklCUkhHeUVVSUJCQkFXb2hFQXdDQ3dBTEN5QUdRUWhxUVlhMUEwSHJBMEVPSUFaQnFBRnFFQjBpQlJBWElnZEJHR3BCbGpVUURob2dCeEFZSUF4Q0FEY0NBQ0FGRUI0TElBWkIwQUZxSkFBZ0RFRVFhaVFBSUFzb0FnaEJBVG9BQUFzZ0VVRVFhaVFBQ3dzZ0UwRVFhaVFBSUFORkJFQkJBQ0VEREFJTElCZEJBV29pRjBFZ1J3MEJJQU1vQW9BQklRTkJBQ0VYREFFTEN5QUVJQmcyQWd3Z0JDQWFOZ0lJSUFRZ0VqWUNFQ0FFUVFocUlRY2pBRUd3QVdzaUNDUUFJQlpCdUNCcUtBSUFJZ3NnRmtHOElHb29BZ0JCQlhScUlRTWdGa0c0SG1vaEFnSkFBa0FEUUNBRElBdEdEUUVDUUNBTEtBSUFRZmp0RHhCSURRQkIrTzBQSUFzb0FnQVFTQTBBSUF0QklHb2hDd3dCQ3dzZ0NFRVFha0hRcHdOQnVnSkJBU0FXRU13REVCY2lBMEVZYWtIVnVnb1FEaG9nQTBIODdROFFtZ0VpQWtFWWFrR2x1Z29RRGhvZ0FpQUxLQUlBUVFScUVKb0JHaUFERUJnTUFRc2dDRUVRYWhDZUJTSUxRZmp0RHpZQ0FDQUlJQWNvQWdnMkFnZ2dDQ0FIS1FJQU53TUFJd0JCSUdzaUJTUUFJQVZCeE1JU05nSUlJQVVnQ0NnQ0NEWUNGQ0FGSUFncEFnQTNBZ3dnQlNBRlFRaHFJZ00yQWhnZ0F5QUxRUWhxRUt3Q0lBTVFGaUFGUVNCcUpBQWdBaUFMRUprRklBc1E4d01MSUFoQnNBRnFKQUFnRmhEdUJTQUFJQWNnRWtFRWFoQ0tCQ0lBRU44SElBQVF2QU1MSUJnUXd3OGdCRUdnQjJva0FDQVNFSUFiSUFGQjhJTUJhaVFBQzdzQkFRTi9Jd0JCNEFKcklnVWtBQ0FBUVFBNkFOUUNJQUJCQURvQUFDQUJLQUlNSVFjZ0FTZ0NDQ0VCQTBBZ0FTQUhSd1JBSUFWQkNHb2dBU2dDQUNJR0lBSWdBeUFFSUFZb0FnQW9BZ2dSQ0FBQ2Z5QUZMUURjQWdSQUlBVkJDR29ReFE4aEFpQUFMUURVQWdSQUlBQVF2QU1nQUVFQU9nRFVBZ3NnQUNBQ0VMd0tRUUU2QU5RQ1FRQWdBQkRGRHlJQ0VJa1dSUTBCR2d0QkFRc2hCaUFCUVFScUlRRWdCVUVJYWhDQ0d5QUdEUUVMQ3lBRlFlQUNhaVFBQ3d3QUlBQVF4ZzhhSUFBUUh3c1ZBQ0FCUWV6QUVqWUNBQ0FCSUFBb0FnUTJBZ1FMQ3dBZ0FFSHN3QklRbndNTENnQWdBU2dDQ0JDWkhnc01BQ0FCS0FJRVFaQzFFa1lMMmdFQkJYOGpBRUVRYXlJRUpBQWdCQ0FBS0FJWUlnSWdBU0FDS0FJQUtBSVlFUUVBTmdJTUlBRW9BZ2doQXlNQVFUQnJJZ0lrQUNBQ1FRaHFJZ1VnQkNnQ0RDQUFJZ0ZCSEdvb0FnQWdBRUVnYWkwQUFCRGxCeG9nQWlBQ0tBSVFJZ1kyQWdBZ0FpQUZOZ0lFQWtBZ0EwRWNhaUlGSUFJUXZRRWlBQVJBSUFBb0Fnd2hBQXdCQ3lBREVLWUVJZ0FnQkNnQ0RDQUJLQUljSUFFdEFDQVE1UWNhSUFNZ0FCQW9JQU1nQXlnQ0dFRUJhallDR0NBQ0lBQTJBZ1FnQWlBR05nSUFJQVVnQWhDOEFRc2dBa0V3YWlRQUlBUkJFR29rQUNBQUMyc0JBWDhDUUFKQUFrQUNRQ0FBS0FJY1FRSnJEZ01BQVFJREN5QUFLQUlZSWdBZ0FDZ0NBQ2dDRUJFQUFFRUJkQThMSUFBb0FoZ2lBU0FCS0FJQUtBSVFFUUFBUVFGQkJDQUFMUUFnRzJ3UEN5QUFLQUlZSWdBZ0FDZ0NBQ2dDRUJFQUFFRUNkQ0VCQ3lBQkN4d0JBWDhnQUNnQ0dDSUJJQUVvQWdBb0FoQVJBQUFnQUNnQ0hHd0xpd0VCQTM4akFFR2dBV3NpQWlRQUlBSkJFR29RU1NFRElBRXRBQ0FFUUNBRFFRaHFRWXE5QlJBT0dnc2dBMEVJYWtHZGlnVVFEaG9nQXlBQlFSeHFFTXNEUVFocUlnUkIydWtHRUE0YUlBSWdBU2dDR0NJQklBRW9BZ0FvQWd3UkFnQWdCQ0FDRUJJYUlBUkJpK1lHRUE0YUlBSVFEeG9nQUNBRFFReHFFRUlnQXhCUklBSkJvQUZxSkFBTFFBRUJmd0pBSUFFUXNnSWlBVVVOQUNBQktBSWNJQUFvQWh4SERRQWdBU2dDR0NBQUtBSVlSdzBBSUFFdEFDQWdBQzBBSUVZaEFnc2dBVUVBUnlBQ2NRc0tBQ0FCS0FJSUVMd1FDd3dBSUFFb0FnUkJvTE1TUmd2aEJRRUxmeU1BUWVBQWF5SUNKQUFnQVNnQ0JDRUlJQUpCR0dvaUJ5QUFRUmhxRUZNZ0FpQUNLQUljSUFJdEFDTWlBeUFEUVJoMFFSaDFRUUJJSWdNYk5nSThJQUlnQWlnQ0dDQUhJQU1iTmdJNElBSWdBaWtET0RjRENDQUNRVUJySUFnZ0FrRUlhaENZQXlBSEVBOGFJQUpDZ0lDQWdNQUFOd0lzSUFJZ0J6WUNLQ0FBS0FKRUlna2dBQ2dDU0VFQ2RHb2hEQU4vSUFrZ0RFWUVmeUFCS0FJSUlRRWpBRUhRQVdzaUJTUUFJQVZCR0dvZ0FrRkFheUlLRUZZaENDQUZRUUE2QUJRZ0JTQUNRUmhxSWdsQkVHbzJBaEFnQlVFNGFpSURJQWdnQlVFUWFpQUFRZEFBYWlJTEtBSUFJQUJCMUFCcUlnd29BZ0FnQUVIWUFHb2lCeWdDQUJDTkNSb2dCU0FGS0FKQUlnZzJBZ2dnQlNBRE5nSU1Ba0FnQVVFY2FpSURJQVZCQ0dvUXZRRWlBQVJBSUFBb0Fnd2hBQXdCQ3lNQVFUQnJJZ1FrQUNBQkVKNFJJUVlnQkVFUWFpQUtFRlloQUNBRVFRQTZBQXdnQkNBSlFSQnFOZ0lJSUFZZ0FDQUVRUWhxSUFzb0FnQWdEQ2dDQUNBSEtBSUFFSTBKR2lBQklBWVFLQ0FCSUFFb0FoaEJBV28yQWhnZ0JFRXdhaVFBSUFVZ0JpSUFOZ0lNSUFVZ0NEWUNDQ0FESUFWQkNHb1F2QUVMSUFWQk9Hb1F6UVlhSUFWQjBBRnFKQUFnQ1JCZUlBSkI0QUJxSkFBZ0FBVWdDU2dDQUNFR0l3QkJRR29pQkNRQUlBRW9BZ1FoQnlBRVFRaHFJZ3NnQmtFSWFoQlRJQVFnQkNnQ0RDQUVMUUFUSWdNZ0EwRVlkRUVZZFVFQVNDSURHellDSENBRUlBUW9BZ2dnQ3lBREd6WUNHQ0FFSUFRcEF4ZzNBd0FnQkVFZ2FpSUlJQWNnQkJDWUF5QUxFQThhSUFRZ0JpZ0NLQ0lESUFFZ0F5Z0NBQ2dDR0JFQkFEWUNDQ0FCS0FJSVFlQUFhaUVLSXdCQklHc2lCeVFBSUFvUW54RWlBeUFISUFnUVZpQUxLQUlBSUFZb0Fpd2dCaWdDTUNBR0tBSTBJQVlvQWpnZ0JrRThhaERhRHhvZ0NpQURFQ2dnQ2lBS0tBSVlRUUZxTmdJWUlBZEJJR29rQUNBRVFVQnJKQUFnQWlBRE5nSVVJQWxCQkdvaENTQUNRUmhxSUFKQkZHb1FjUXdCQ3dzTEN3QWdBQ0FCUVJocUVGTUxCd0FnQUNnQ1ZBc0hBQ0FBS0FKUUN5SUFJQUVROEFZaUFRUi9JQUZCR0dvZ0FFRVlhaEMyQWdVZ0FBc2dBVUVBUjNFTDdnRUJCWDhqQUVFUWF5SURKQUFnQXlBQUtBSWtJZ0lnQVNBQ0tBSUFLQUlZRVFFQU5nSU1JQUVvQWdnaEJDQURJQUFvQWhnMkFnZ2pBRUV3YXlJQ0pBQWdBa0VJYWlJRklBTW9BZ2dnQUNJQlFSeHFLQUlBSUFCQklHb29BZ0FnQXlnQ0RCQzZDeG9nQWlBQ0tBSVFJZ1kyQWdBZ0FpQUZOZ0lFQWtBZ0JFRWNhaUlGSUFJUXZRRWlBQVJBSUFBb0Fnd2hBQXdCQ3lBRUVLWUVJZ0FnQXlnQ0NDQUJLQUljSUFFb0FpQWdBeWdDREJDNkN4b2dCQ0FBRUNnZ0JDQUVLQUlZUVFGcU5nSVlJQUlnQURZQ0JDQUNJQVkyQWdBZ0JTQUNFTHdCQ3lBQ1FUQnFKQUFnQTBFUWFpUUFJQUFMY3dFRGZ5TUFRWkFCYXlJRUpBQWdCQkJKSWdKQkNHcEJyN3dGRUE0YUlBSWdBU2dDR0JDZUJDSURRUWhxUWRycEJoQU9HaUFESUFFb0Fod1ExUThpQTBFSWFrSDA3UXdRRGhvZ0F5QUJLQUlnRUxZTFFRaHFRWXZtQmhBT0dpQUFJQUpCREdvUVFpQUNFRkVnQkVHUUFXb2tBQXRLQVFKL0FrQWdBU2dDQkNJRFFkaXZFa2NOQUNBQlFRQWdBMEhZcnhKR0d5SUJLQUlZSUFBb0FoaEhEUUFnQVNnQ0hDQUFLQUljUncwQUlBRW9BaUFnQUNnQ0lFWWhBZ3NnQWd1Z0FRRUVmeUFCS0FJSUlRTWpBRUV3YXlJQ0pBQWdBa0VRYWlJRUlBQWlBVUVZYWlnQ0FCQzdDeG9nQWlBQ0tBSVlJZ1UyQWdnZ0FpQUVOZ0lNQWtBZ0EwRWNhaUlFSUFKQkNHb1F2UUVpQUFSQUlBQW9BZ3doQUF3QkN5QURFS1VFSWdBZ0FTZ0NHQkM3Q3hvZ0F5QUFFQ2dnQXlBREtBSVlRUUZxTmdJWUlBSWdBRFlDRENBQ0lBVTJBZ2dnQkNBQ1FRaHFFTHdCQ3lBQ1FUQnFKQUFnQUFzVkFDQUFRWUhEQWtHYzVnRWdBU2dDR0JzUUZCb0xId0VCZnlBQktBSUVRZml1RWtZRWZ5QUJLQUlZSUFBb0FoaEdCVUVBQ3d2WUFRRUVmeU1BUVJCcklnSWtBQ0FDSUFBb0Fod2lBeUFCSUFNb0FnQW9BaGdSQVFBMkFnd2dBU2dDQ0NFRElBSWdBQ2dDR0RZQ0NDTUFRVEJySWdBa0FDQUFRUkJxSWdFZ0FpZ0NDQ0FDS0FJTUVMd0xHaUFBSUFBb0FoZ2lCRFlDQ0NBQUlBRTJBZ3dDUUNBRFFSeHFJZ1VnQUVFSWFoQzlBU0lCQkVBZ0FTZ0NEQ0VCREFFTElBTVFwUVFpQVNBQ0tBSUlJQUlvQWd3UXZBc2FJQU1nQVJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FBSUFFMkFnd2dBQ0FFTmdJSUlBVWdBRUVJYWhDOEFRc2dBRUV3YWlRQUlBSkJFR29rQUNBQkN3MEFJQUFnQVVHbXZBVVExaElMRFFBZ0FDQUJRWml1RWhEWEVndmFBUUVGZnlNQVFSQnJJZ1FrQUNBRUlBQW9BaGdpQWlBQklBSW9BZ0FvQWhnUkFRQTJBZ3dnQVNnQ0NDRURJd0JCTUdzaUFpUUFJQUpCQ0dvaUJTQUVLQUlNSUFBaUFVRWNhaWdDQUNBQVFTQnFLQUlBRUwwTEdpQUNJQUlvQWhBaUJqWUNBQ0FDSUFVMkFnUUNRQ0FEUVJ4cUlnVWdBaEM5QVNJQUJFQWdBQ2dDRENFQURBRUxJQU1RcGdRaUFDQUVLQUlNSUFFb0Fod2dBU2dDSUJDOUN4b2dBeUFBRUNnZ0F5QURLQUlZUVFGcU5nSVlJQUlnQURZQ0JDQUNJQVkyQWdBZ0JTQUNFTHdCQ3lBQ1FUQnFKQUFnQkVFUWFpUUFJQUFMRFFBZ0FDQUJRWnZuQmhEVEVnc05BQ0FBSUFGQnVLMFNFTlFTQzlvQkFRVi9Jd0JCRUdzaUJDUUFJQVFnQUNnQ0dDSUNJQUVnQWlnQ0FDZ0NHQkVCQURZQ0RDQUJLQUlJSVFNakFFRXdheUlDSkFBZ0FrRUlhaUlGSUFRb0Fnd2dBQ0lCUVJ4cUtBSUFJQUJCSUdvb0FnQVF2Z3NhSUFJZ0FpZ0NFQ0lHTmdJQUlBSWdCVFlDQkFKQUlBTkJIR29pQlNBQ0VMMEJJZ0FFUUNBQUtBSU1JUUFNQVFzZ0F4Q21CQ0lBSUFRb0Fnd2dBU2dDSENBQktBSWdFTDRMR2lBRElBQVFLQ0FESUFNb0FoaEJBV28yQWhnZ0FpQUFOZ0lFSUFJZ0JqWUNBQ0FGSUFJUXZBRUxJQUpCTUdva0FDQUVRUkJxSkFBZ0FBc05BQ0FBSUFGQjJLd1NFTlFTQzFJQUlBQVFzd1JCa3JHbytnZHFRWk9rQm5NaUFFRUNka0dXK0tuNkIzTWdBU2dDQUdvZ0FITWlBRUVDZGtHVytLbjZCM01nQWhENUFtb2dBSE1pQUVFQ2RrR1crS242QjNNZ0F5Z0NBR29nQUhNTDJBRUJCSDhqQUVFUWF5SUNKQUFnQWlBQUtBSWNJZ01nQVNBREtBSUFLQUlZRVFFQU5nSU1JQUVvQWdnaEF5QUNJQUFvQWhnMkFnZ2pBRUV3YXlJQUpBQWdBRUVRYWlJQklBSW9BZ2dnQWlnQ0RCREFDeG9nQUNBQUtBSVlJZ1EyQWdnZ0FDQUJOZ0lNQWtBZ0EwRWNhaUlGSUFCQkNHb1F2UUVpQVFSQUlBRW9BZ3doQVF3QkN5QURFS1VFSWdFZ0FpZ0NDQ0FDS0FJTUVNQUxHaUFESUFFUUtDQURJQU1vQWhoQkFXbzJBaGdnQUNBQk5nSU1JQUFnQkRZQ0NDQUZJQUJCQ0dvUXZBRUxJQUJCTUdva0FDQUNRUkJxSkFBZ0FRc05BQ0FBSUFGQjlMd0ZFTllTQ3cwQUlBQWdBVUhRcXhJUTF4SUx6UUVCQlg4akFFRVFheUlFSkFBZ0JDQUFLQUljSWdJZ0FTQUNLQUlBS0FJWUVRRUFOZ0lNSUFFb0FnZ2hBeU1BUVRCcklnSWtBQ0FDUVFocUlnVWdCQ2dDRENBQUlnRkJKR29vQWdBUXdnc2FJQUlnQWlnQ0VDSUdOZ0lBSUFJZ0JUWUNCQUpBSUFOQkhHb2lCU0FDRUwwQklnQUVRQ0FBS0FJTUlRQU1BUXNnQXhDbUJDSUFJQVFvQWd3Z0FTZ0NKQkRDQ3hvZ0F5QUFFQ2dnQXlBREtBSVlRUUZxTmdJWUlBSWdBRFlDQkNBQ0lBWTJBZ0FnQlNBQ0VMd0JDeUFDUVRCcUpBQWdCRUVRYWlRQUlBQUxIQUVCZnlBQUtBSWNJZ0VnQVNnQ0FDZ0NGQkVBQUNBQUtBSWtiQXVLQVFFRGZ5TUFRYUFCYXlJQ0pBQWdBa0VRYWhCSklnUkJDR3BCaWZzQUVBNGFJQVFnQVVFa2FoRExBeUlEUVFocVFkb25FQTRhSUFNZ0FVRWdhaERMQTBFSWFpSURRZHJwQmhBT0dpQUNJQUVvQWhnaUFTQUJLQUlBS0FJTUVRSUFJQU1nQWhBU0dpQURRWXZtQmhBT0dpQUNFQThhSUFBZ0JFRU1haEJDSUFRUVVTQUNRYUFCYWlRQUMwb0JBbjhDUUNBQktBSUVJZ05COEtvU1J3MEFJQUZCQUNBRFFmQ3FFa1liSWdFb0FpQWdBQ2dDSUVjTkFDQUJLQUlrSUFBb0FpUkhEUUFnQVNnQ0hDQUFLQUljUmlFQ0N5QUNDd29BSUFFb0FnZ1F6QkFMREFBZ0FTZ0NCRUdRcWhKR0N3b0FJQUVvQWdnUXpoQUxEQUFnQVNnQ0JFR3dxUkpHQ3dvQUlBRW9BZ2dRd2gwTEN3QWdBRUhkOEFZUUZCb0xEQUFnQVNnQ0JFSFFxQkpHQ3dvQUlBRW9BZ2dRK3gwTEN3QWdBRUdwbGdNUUZCb0xEQUFnQVNnQ0JFSHdweEpHQ3pNQkFYOGpBRUVRYXlJQ0pBQWdBU2dDQ0NFQklBSWdBQ2dDR0RZQ0RDQUJJQUpCREdvUS9SMGhBQ0FDUVJCcUpBQWdBQXNOQUNBQUlBRkJqN3dGRU5rU0N4OEJBWDhnQVNnQ0JFR1FweEpHQkg4Z0FTZ0NHQ0FBS0FJWVJnVkJBQXNMTXdFQmZ5TUFRUkJySWdJa0FDQUJLQUlJSVFFZ0FpQUFLQUlZTmdJTUlBRWdBa0VNYWhEOEhTRUFJQUpCRUdva0FDQUFDdzBBSUFBZ0FVSFl2QVVRMlJJTEh3RUJmeUFCS0FJRVFiQ21Fa1lFZnlBQktBSVlJQUFvQWhoR0JVRUFDd3NLQUNBQktBSUlFUDRkQ3d3QUlBRW9BZ1JCMEtVU1JndkVBUUVFZnlNQVFSQnJJZ01rQUNBRElBQW9BaGdpQUNBQklBQW9BZ0FvQWhnUkFRQTJBZ3dnQVNnQ0NDRUNJd0JCTUdzaUFDUUFJQUJCRUdvaUFTQURLQUlNRU1jTEdpQUFJQUFvQWhnaUJEWUNDQ0FBSUFFMkFnd0NRQ0FDUVJ4cUlnVWdBRUVJYWhDOUFTSUJCRUFnQVNnQ0RDRUJEQUVMSUFJUXBRUWlBU0FES0FJTUVNY0xHaUFDSUFFUUtDQUNJQUlvQWhoQkFXbzJBaGdnQUNBQk5nSU1JQUFnQkRZQ0NDQUZJQUJCQ0dvUXZBRUxJQUJCTUdva0FDQURRUkJxSkFBZ0FRc1VBQ0FBS0FJWUlnQWdBQ2dDQUNnQ0ZCRUFBQXNVQUNBQUtBSVlJZ0FnQUNnQ0FDZ0NFQkVBQUF0aEFRTi9Jd0JCb0FGcklnSWtBQ0FDUVJCcUVFa2lBMEVJYWlJRVFhZm9CaEFPR2lBQ0lBRW9BaGdpQVNBQktBSUFLQUlNRVFJQUlBUWdBaEFTR2lBRVFZdm1CaEFPR2lBQ0VBOGFJQUFnQTBFTWFoQkNJQU1RVVNBQ1FhQUJhaVFBQ3g4QkFYOGdBU2dDQkVId3BCSkdCSDhnQVNnQ0dDQUFLQUlZUmdWQkFBc0xEUUFnQVNnQ0NFRXdhaERCSFFzTEFDQUFRZHo0REJBVUdnc01BQ0FCS0FJRVFhaWpFa1lMb3dFQkJIOGdBU2dDQ0VFd2FpRURJd0JCSUdzaUFpUUFJQUpCRUdvaUJDQUFJZ0ZCREdvb0FnQVF5QXNhSUFJZ0FpZ0NHQ0lGTmdJSUlBSWdCRFlDREFKQUlBTkJIR29pQkNBQ1FRaHFFS0VKSWdBRVFDQUFLQUlNSVFBTUFRc2dBeEQ4QXlJQUlBRW9BZ3dReUFzYUlBTWdBQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUNJQUEyQWd3Z0FpQUZOZ0lJSUFRZ0FrRUlhaENnQ1FzZ0FrRWdhaVFBSUFBTEN3QWdBQ0FCS0FJTUVGOExId0VCZnlBQktBSUVRWkNqRWtZRWZ5QUFLQUlNSUFFb0FneEdCVUVBQ3d1ZEFnRUZmeU1BUVJCcklnTWtBQ0FESUFBb0FoZ2lBaUFCSUFJb0FnQW9BaGdSQVFBMkFnd2dBeUFBS0FJY0lnSWdBU0FDS0FJQUtBSVFFUUVBTmdJSUlBRW9BZ2doQkNNQVFVQnFJZ0lrQUNBQ1FSQnFJZ1VnQXlnQ0RDQURLQUlJSUFBaUFVRWdhaWdDQUNBQlFTUnFLQUlBSUFGQktHb29BZ0FnQVVFc2FpZ0NBQkRKQ3hvZ0FpQUNLQUlZSWdZMkFnZ2dBaUFGTmdJTUFrQWdCRUVjYWlJRklBSkJDR29RdlFFaUFBUkFJQUFvQWd3aEFBd0JDeUFFRVBNRklnQWdBeWdDRENBREtBSUlJQUVvQWlBZ0FTZ0NKQ0FCS0FJb0lBRW9BaXdReVFzYUlBUWdBQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUNJQUEyQWd3Z0FpQUdOZ0lJSUFVZ0FrRUlhaEM4QVFzZ0FrRkFheVFBSUFOQkVHb2tBQ0FBQ3djQUlBQW9BaVFMMVFFQkJIOGpBRUdnQVdzaUFpUUFJQUpCRUdvUVNTRURJQUVvQWlnZ0FTZ0NMRWNFUUNBRFFRaHFRYjM1Q0JBT0dpQURJQUZCS0dvUXl3TkJDR3BCbXU0TUVBNGFDeUFEUVFocUlnUkI1T1lHRUE0YUlBSWdBU2dDR0NJRklBVW9BZ0FvQWd3UkFnQWdCQ0FDRUJJYUlBSVFEeG9nQWlBQktBSWNJZ0VnQVNnQ0FDZ0NEQkVDQUNBQ0tBSUVJQUl0QUFzaUFTQUJRUmgwUVJoMVFRQklHd1JBSUFSQjlPME1FQTRhSUFRZ0FoQVNHZ3NnQkVHTDVnWVFEaG9nQUNBRFFReHFFRUlnQWhBUEdpQURFRkVnQWtHZ0FXb2tBQXRrQVFKL0FrQWdBU2dDQkNJRFFaQ2lFa2NOQUNBQlFRQWdBMEdRb2hKR0d5SUJLQUlZSUFBb0FoaEhEUUFnQVNnQ0hDQUFLQUljUncwQUlBRW9BaUFnQUNnQ0lFY05BQ0FCS0FJa0lBQW9BaVJIRFFBZ0FTZ0NLQ0FBS0FJb1JpRUNDeUFDQ3dvQUlBRW9BZ2dRdkIwTENnQWdBRUhkUFJBVUdnc01BQ0FCS0FJRVFkQ2dFa1lMQ2dBZ0FTZ0NDQkRBSFFzTEFDQUFRYi81QUJBVUdnc01BQ0FCS0FJRVFmQ2ZFa1lMREFBZ0FCRHdHeG9nQUJBZkN3d0FJQUFROFJzYUlBQVFId3NKQUNBQUVMa0xFQjhMQ1FBZ0FCRE5CaEFmQ3djQUlBQVF1UXNMQndBZ0FCRE5CZ3NKQUNBQUVOSUxFQjhMREFBZ0FCRFNDeG9nQUJBZkN3d0FJQUFRL3hzYUlBQVFId3NNQUNBQUVJQWNHaUFBRUI4TERBQWdBQkNISEJvZ0FCQWZDd3dBSUFBUWlCd2FJQUFRSHdzUEFDQUFJQUZCMHZVSVFUNFEyaElMQ3dBZ0FFRzF2UVVRRkJvTEh3RUJmeUFCS0FJRVFZQ05Fa1lFZnlBQUtBSU1JQUVvQWd4R0JVRUFDd3NQQUNBQUlBRkJvZllJUVNrUTJoSUxGQUFnQUNBQktBSU1LQUlJS0FJa1FTUnFFRk1MSHdFQmZ5QUJLQUlFUWVpTUVrWUVmeUFBS0FJTUlBRW9BZ3hHQlVFQUN3dDdBUUovSXdCQkVHc2lBaVFBSUFFb0FnQWlBeEFjSUFJZ0FTZ0NBQ0lCS0FJSU5nSUlJQUVnQVNnQ0RFRUJhaUlCTmdJTUlBSWdBVFlDQUNBRFFZd0JhaUlCRU44TElnTWdBaWdDQ0NBQ0tBSUFJQUFvQWpRUXpSd2FJQUVnQXhBb0lBRWdBU2dDR0VFQmFqWUNHQ0FESVFBZ0FrRVFhaVFBSUFBTEpnQWdBQ0FCS0FJMElnRkJDRXNFZjBIMTVBWUZJQUZCQW5SQm9Jd1NhaWdDQUFzUUZCb0xLd0VCZkNBQkt3TUFJZ0pFQUFBQUFBQUE4RUZqSUFKRUFBQUFBQUFBQUFCbWNRUkFJQUtyRHd0QkFBc0pBQ0FCSUFJUVZCb0xFUUFnQVNzREFFUUFBQUFBQUFBQUFHSUxDZ0FnQVNrREFFSUFVZ3NvQVFGOElBRXJBd0FpQXBsRUFBQUFBQUFBNEVOakJFQWdBckFQQzBLQWdJQ0FnSUNBZ0lCL0N5c0JBWHdnQVNzREFDSUNSQUFBQUFBQUFQQkRZeUFDUkFBQUFBQUFBQUFBWm5FRVFDQUNzUThMUWdBTEJ3QWdBUkFQR2d1TENnRUtmeU1BUVlBQmF5SUdKQUFnQmlBQUtBSWdOZ0o0SUFZZ0FDa0NHRGNEY0NBR0lBQXBBaEEzQTJnZ0JpQUJJQUFvQWlRUXp3TTJBbVFnQmtFNGFpSUhRb0NBZ0lDQUFUY0NKQ0FISUFjMkFpQWpBRUV3YXlJQ0pBQWdCeUFBS0FKTUVEa2dBa0VBTmdJb0lBSWdBRUVvYWpZQ0pDQUNJQUZCeUNCcU5nSWdJQUlnQVVIY2dBRnFLQUlBUVFGck5nSXNBa0FnQWtFZ2FoQzFBUVJBSUFKQklHb1FXaUlFS0FMWUFTSURJQVFvQXR3QlFSaHNhaUVFQTBBZ0F5QUVSZ1JBSUFBb0FrZ2lCQ0FBS0FKTVFRSjBhaUVJQTBBZ0JDQUlSZ1JBSUFKQklHb1FXaUlFS0FMSUFpSURJQVFvQXN3Q1FSaHNhaUVFQTBBZ0F5QUVSZzBHSUFJZ0FTQURFR1lRMUFZMkFoQWdCeUFDUVJCcUVDUWdBMEVZYWlFRERBQUxBQXNnQWlBQ1FTQnFFRm9pQTBIWUFtbzJBaEFnQkNnQ0FDRUZJQUpCQURZQ0dDQUNJQVUyQWhRZ0FpQURRWndKYWlnQ0FFRUJhellDSEFKQUlBSkJFR29RdEFGRkRRQWdBa0VRYWhDc0FTSUZLQUpnSWdNZ0JTZ0NaRUVZYkdvaEJRTkFJQU1nQlVZTkFTQUNJQUVnQXhCbUVOUUdOZ0lNSUFjZ0FrRU1haEFrSUFOQkdHb2hBd3dBQ3dBTElBSkJJR29RV2lFRElBSWdCQ2dDQURZQ0VDQURJQUpCRUdvUXhnTkZCRUFnQWlBQklBUW9BZ0FRbWgwMkFoQWdCeUFDUVJCcUVDUUxJQUlnQWtFZ2FoQmFJZ05Cb0FscU5nSVFJQVFvQWdBaEJTQUNRUUEyQWhnZ0FpQUZOZ0lVSUFJZ0EwSGtEMm9vQWdCQkFXczJBaHdDUUNBQ1FSQnFFTFFCUlEwQUlBSkJFR29RckFFaUJTZ0NZQ0lESUFVb0FtUkJHR3hxSVFVRFFDQURJQVZHRFFFZ0FpQUJJQU1RWmhEVUJqWUNEQ0FISUFKQkRHb1FKQ0FEUVJocUlRTU1BQXNBQ3lBRVFRUnFJUVFNQUFzQUJTQUNJQUVnQXhCbUVOUUdOZ0lRSUFjZ0FrRVFhaEFrSUFOQkdHb2hBd3dCQ3dBTEFBc2dBQ2dDU0NJRUlBQW9Ba3hCQW5ScUlRZ0RRQ0FFSUFoR0JFQWdBa0VnYWhDMUFVVU5BaUFDUVNCcUVGb2lCQ2dDeUFJaUF5QUVLQUxNQWtFWWJHb2hCQU5BSUFNZ0JFWU5BeUFDSUFFZ0F4Qm1FTlFHTmdJUUlBY2dBa0VRYWhBa0lBTkJHR29oQXd3QUN3QUZJQUlnQVNBRUtBSUFFSm9kTmdJUUlBY2dBa0VRYWhBa0FrQWdBa0VnYWhDMUFVVU5BQ0FDSUFKQklHb1FXaUlEUWFBSmFqWUNFQ0FFS0FJQUlRVWdBa0VBTmdJWUlBSWdCVFlDRkNBQ0lBTkI1QTlxS0FJQVFRRnJOZ0ljSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJRktBSmdJZ01nQlNnQ1pFRVliR29oQlFOQUlBTWdCVVlOQVNBQ0lBRWdBeEJtRU5RR05nSU1JQWNnQWtFTWFoQWtJQU5CR0dvaEF3d0FDd0FMSUFSQkJHb2hCQXdCQ3dBTEFBc2dBa0V3YWlRQUlBWWdBU0FBUWRRQWFoRGlCRFlDTUNBR0lBRWdBQ2dDV0JDZUNUWUNMQ0FHUVJocUlnZ2dBU0FBUWR3QWFoRHlCU0FHSUFFZ0FFSHdBR29ROGdVZ0FTZ0NBQ0VCSXdCQkVHc2lBaVFBSUFFUUhDQUJJQUVvQWd4QkFXb2lBRFlDRENBQ0lBQTJBZ2dqQUVFZ2F5SUFKQUFnQVVHTUFXb2lBeENpRmlFRUlBWW9BbVFoQlNBQ0tBSUlJUWtnQVNnQ0NDRUJJQUJCQURvQUhDQUFJQWRCSUdvMkFoZ2dCaWdDTENFS0lBWW9BakFoQ3lBQVFRQTZBQlFnQUNBSVFRaHFOZ0lRSUFCQkFEb0FEQ0FBSUFaQkNHbzJBZ2dnQkNBQklBa2dCa0hvQUdvZ0JTQUFRUmhxSUFzZ0NpQUFRUkJxSUFCQkNHb1E0eDBhSUFNZ0JCQW9JQU1nQXlnQ0dFRUJhallDR0NBQVFTQnFKQUFnQkNFQUlBSkJFR29rQUNBR0VLb0JJQWdRcWdFZ0J4QWpJQVpCZ0FGcUpBQWdBQXNNQUNBQUVNc2RHaUFBRUI4TEJnQWdBUkFqQzZZSkFRaC9Jd0JCOEFCcklnY2tBQ0FISUFBb0FpQTJBbWdnQnlBQUtRSVlOd05nSUFjZ0FDa0NFRGNEV0NBSFFTaHFJZ1pDZ0lDQWdJQUJOd0lrSUFZZ0JqWUNJQ01BUVRCcklnSWtBQ0FHSUFBb0FrZ1FPU0FDUVFBMkFpZ2dBaUFBUVNScU5nSWtJQUlnQVVISUlHbzJBaUFnQWlBQlFkeUFBV29vQWdCQkFXczJBaXdDUUNBQ1FTQnFFTFVCQkVBZ0FrRWdhaEJhSWdRb0F0Z0JJZ01nQkNnQzNBRkJHR3hxSVFRRFFDQURJQVJHQkVBZ0FDZ0NSQ0lFSUFBb0FraEJBblJxSVFnRFFDQUVJQWhHQkVBZ0FrRWdhaEJhSWdRb0FzZ0NJZ01nQkNnQ3pBSkJHR3hxSVFRRFFDQURJQVJHRFFZZ0FpQUJJQU1RWmhEV0JqWUNFQ0FHSUFKQkVHb1FKQ0FEUVJocUlRTU1BQXNBQ3lBQ0lBSkJJR29RV2lJRFFkZ0NhallDRUNBRUtBSUFJUVVnQWtFQU5nSVlJQUlnQlRZQ0ZDQUNJQU5CbkFscUtBSUFRUUZyTmdJY0FrQWdBa0VRYWhDMEFVVU5BQ0FDUVJCcUVLd0JJZ1VvQW1BaUF5QUZLQUprUVJoc2FpRUZBMEFnQXlBRlJnMEJJQUlnQVNBREVHWVExZ1kyQWd3Z0JpQUNRUXhxRUNRZ0EwRVlhaUVEREFBTEFBc2dBa0VnYWhCYUlRTWdBaUFFS0FJQU5nSVFJQU1nQWtFUWFoREdBMFVFUUNBQ0lBRWdCQ2dDQUJER0VEWUNFQ0FHSUFKQkVHb1FKQXNnQWlBQ1FTQnFFRm9pQTBHZ0NXbzJBaEFnQkNnQ0FDRUZJQUpCQURZQ0dDQUNJQVUyQWhRZ0FpQURRZVFQYWlnQ0FFRUJhellDSEFKQUlBSkJFR29RdEFGRkRRQWdBa0VRYWhDc0FTSUZLQUpnSWdNZ0JTZ0NaRUVZYkdvaEJRTkFJQU1nQlVZTkFTQUNJQUVnQXhCbUVOWUdOZ0lNSUFZZ0FrRU1haEFrSUFOQkdHb2hBd3dBQ3dBTElBUkJCR29oQkF3QUN3QUZJQUlnQVNBREVHWVExZ1kyQWhBZ0JpQUNRUkJxRUNRZ0EwRVlhaUVEREFFTEFBc0FDeUFBS0FKRUlnUWdBQ2dDU0VFQ2RHb2hDQU5BSUFRZ0NFWUVRQ0FDUVNCcUVMVUJSUTBDSUFKQklHb1FXaUlFS0FMSUFpSURJQVFvQXN3Q1FSaHNhaUVFQTBBZ0F5QUVSZzBESUFJZ0FTQURFR1lRMWdZMkFoQWdCaUFDUVJCcUVDUWdBMEVZYWlFRERBQUxBQVVnQWlBQklBUW9BZ0FReGhBMkFoQWdCaUFDUVJCcUVDUUNRQ0FDUVNCcUVMVUJSUTBBSUFJZ0FrRWdhaEJhSWdOQm9BbHFOZ0lRSUFRb0FnQWhCU0FDUVFBMkFoZ2dBaUFGTmdJVUlBSWdBMEhrRDJvb0FnQkJBV3MyQWh3Z0FrRVFhaEMwQVVVTkFDQUNRUkJxRUt3QklnVW9BbUFpQXlBRktBSmtRUmhzYWlFRkEwQWdBeUFGUmcwQklBSWdBU0FERUdZUTFnWTJBZ3dnQmlBQ1FReHFFQ1FnQTBFWWFpRUREQUFMQUFzZ0JFRUVhaUVFREFFTEFBc0FDeUFDUVRCcUpBQWdCMEVJYWlJQ0lBRWdBRUhRQUdvUStnc2dBU2dDQUNFQkl3QkJFR3NpQXlRQUlBRVFIQ0FCSUFFb0FneEJBV29pQURZQ0RDQURJQUEyQWdnakFFRVFheUlBSkFBZ0FVR01BV29pQkJDOUNpRUlJQU1vQWdnaEJTQUJLQUlJSVFFZ0FDQUdRU0JxTmdJSUlBWW9BaUFoQ1NBQUlBSkJFR28yQWdBZ0FDQUdJQWxIT2dBTUlBQWdBaWdDRUNBQ1J6b0FCQ0FJSUFFZ0JTQUhRZGdBYWlBQVFRaHFJQUFRZ0F3YUlBUWdDQkFvSUFRZ0JDZ0NHRUVCYWpZQ0dDQUFRUkJxSkFBZ0NDRUFJQU5CRUdva0FDQUNFRjRnQmhBaklBZEI4QUJxSkFBZ0FBc01BQ0FBRUlBZUdpQUFFQjhMVndFQmZ5TUFRU0JySWdJa0FDQUNJQUFvQWlBMkFoZ2dBaUFBS1FJWU53TVFJQUlnQUNrQ0VEY0RDQ0FDSUFFZ0FDZ0NKQkNPSGpZQ0JDQUJLQUlBSUFKQkNHb2dBa0VFYWhDSkhpRUFJQUpCSUdva0FDQUFDL29KQVFwL0l3QkI0QUJySWdja0FDQUhJQUFvQWlBMkFsZ2dCeUFBS1FJWU53TlFJQWNnQUNrQ0VEY0RTQ0FISUFFZ0FDZ0NKQkNYQVRZQ1JDQUhRU2hxSWdaQ2dJQ0FnTUFBTndJVUlBWWdCallDRUNNQVFUQnJJZ0lrQUNBR0lBQW9BandRMWdJZ0FrRUFOZ0lvSUFJZ0FFRW9hallDSkNBQ0lBRkJ5Q0JxTmdJZ0lBSWdBVUhjZ0FGcUtBSUFRUUZyTmdJc0FrQWdBa0VnYWhDMUFRUkFJQUpCSUdvUVdpSUVLQUxZQVNJRElBUW9BdHdCUVJoc2FpRUVBMEFnQXlBRVJnUkFJQUFvQWpnaUJDQUFLQUk4UVFKMGFpRUlBMEFnQkNBSVJnUkFJQUpCSUdvUVdpSUVLQUxJQWlJRElBUW9Bc3dDUVJoc2FpRUVBMEFnQXlBRVJnMEdJQUlnQVNBREVHWVEyd1kyQWhBZ0JpQUNRUkJxRUhFZ0EwRVlhaUVEREFBTEFBc2dBaUFDUVNCcUVGb2lBMEhZQW1vMkFoQWdCQ2dDQUNFRklBSkJBRFlDR0NBQ0lBVTJBaFFnQWlBRFFad0phaWdDQUVFQmF6WUNIQUpBSUFKQkVHb1F0QUZGRFFBZ0FrRVFhaENzQVNJRktBSmdJZ01nQlNnQ1pFRVliR29oQlFOQUlBTWdCVVlOQVNBQ0lBRWdBeEJtRU5zR05nSU1JQVlnQWtFTWFoQnhJQU5CR0dvaEF3d0FDd0FMSUFKQklHb1FXaUVESUFJZ0JDZ0NBRFlDRUNBRElBSkJFR29ReGdORkJFQWdBaUFCSUFRb0FnQVFteDQyQWhBZ0JpQUNRUkJxRUhFTElBSWdBa0VnYWhCYUlnTkJvQWxxTmdJUUlBUW9BZ0FoQlNBQ1FRQTJBaGdnQWlBRk5nSVVJQUlnQTBIa0Qyb29BZ0JCQVdzMkFod0NRQ0FDUVJCcUVMUUJSUTBBSUFKQkVHb1FyQUVpQlNnQ1lDSURJQVVvQW1SQkdHeHFJUVVEUUNBRElBVkdEUUVnQWlBQklBTVFaaERiQmpZQ0RDQUdJQUpCREdvUWNTQURRUmhxSVFNTUFBc0FDeUFFUVFScUlRUU1BQXNBQlNBQ0lBRWdBeEJtRU5zR05nSVFJQVlnQWtFUWFoQnhJQU5CR0dvaEF3d0JDd0FMQUFzZ0FDZ0NPQ0lFSUFBb0FqeEJBblJxSVFnRFFDQUVJQWhHQkVBZ0FrRWdhaEMxQVVVTkFpQUNRU0JxRUZvaUJDZ0N5QUlpQXlBRUtBTE1Ba0VZYkdvaEJBTkFJQU1nQkVZTkF5QUNJQUVnQXhCbUVOc0dOZ0lRSUFZZ0FrRVFhaEJ4SUFOQkdHb2hBd3dBQ3dBRklBSWdBU0FFS0FJQUVKc2VOZ0lRSUFZZ0FrRVFhaEJ4QWtBZ0FrRWdhaEMxQVVVTkFDQUNJQUpCSUdvUVdpSURRYUFKYWpZQ0VDQUVLQUlBSVFVZ0FrRUFOZ0lZSUFJZ0JUWUNGQ0FDSUFOQjVBOXFLQUlBUVFGck5nSWNJQUpCRUdvUXRBRkZEUUFnQWtFUWFoQ3NBU0lGS0FKZ0lnTWdCU2dDWkVFWWJHb2hCUU5BSUFNZ0JVWU5BU0FDSUFFZ0F4Qm1FTnNHTmdJTUlBWWdBa0VNYWhCeElBTkJHR29oQXd3QUN3QUxJQVJCQkdvaEJBd0JDd0FMQUFzZ0FrRXdhaVFBSUFkQkdHb2lBaUFCSUFCQnhBQnFFSk1NSUFkQkNHb2lBeUFCSUFCQjFBQnFFSk1NSUFFb0FnQWhBU01BUVJCcklnUWtBQ0FCRUJ3Z0FTQUJLQUlNUVFGcUlnQTJBZ3dnQkNBQU5nSUlJd0JCSUdzaUFDUUFJQUZCakFGcUlnZ1Fzd1VoQlNBSEtBSkVJUW9nQkNnQ0NDRUxJQUVvQWdnaEFTQUFJQVpCRUdvMkFoZ2dCaWdDRUNFSklBQWdBa0VFYWpZQ0VDQUFJQVlnQ1VjNkFCd2dBaWdDQkNFSklBQWdBMEVFYWpZQ0NDQUFJQUlnQ1VjNkFCUWdBQ0FES0FJRUlBTkhPZ0FNSUFVZ0FTQUxJQWRCeUFCcUlBb2dBRUVZYWlBQVFSQnFJQUJCQ0dvUXF4NGFJQWdnQlJBb0lBZ2dDQ2dDR0VFQmFqWUNHQ0FBUVNCcUpBQWdCU0VBSUFSQkVHb2tBQ0FERUtnQklBSVFxQUVnQmhCZUlBZEI0QUJxSkFBZ0FBc01BQ0FBRUtjZUdpQUFFQjhMc0FFQkEzOGpBRUVnYXlJQ0pBQWdBaUFBS0FJZ05nSVlJQUlnQUNrQ0dEY0RFQ0FDSUFBcEFoQTNBd2dnQWlBQklBQW9BaVFRbHdFMkFnUWdBU2dDQUNFQUl3QkJFR3NpQVNRQUlBQVFIQ0FBSUFBb0FneEJBV29pQXpZQ0RDQUJJQU0yQWdnZ0FFR01BV29pQXhDL0FTSUVJQUFvQWdnZ0FTZ0NDQ0FDUVFocUlBSW9BZ1FRcmg0YUlBTWdCQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUVJUUFnQVVFUWFpUUFJQUpCSUdva0FDQUFDNU1DQVFkL0l3QkJNR3NpQWlRQUlBSWdBQ2dDSURZQ0tDQUNJQUFwQWhnM0F5QWdBaUFBS1FJUU53TVlJQUlnQVNBQUtBSWtFSjRKTmdJVUlBSWdBU0FBS0FJb0VKNEpOZ0lRSUFJZ0FTQUFRU3hxRUpNTUlBRW9BZ0FoQUNNQVFSQnJJZ01rQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0UyQWd3Z0F5QUJOZ0lJSXdCQkVHc2lBU1FBSUFCQmpBRnFJZ1FRdUI0aEJTQUNLQUlRSVFZZ0FpZ0NGQ0VISUFNb0FnZ2hDQ0FBS0FJSUlRQWdBU0FDUVFScU5nSUlJQUVnQWlnQ0JDQUNSem9BRENBRklBQWdDQ0FDUVJocUlBY2dCaUFCUVFocUVOQWVHaUFFSUFVUUtDQUVJQVFvQWhoQkFXbzJBaGdnQVVFUWFpUUFJQVVoQUNBRFFSQnFKQUFnQWhDb0FTQUNRVEJxSkFBZ0FBc01BQ0FBRU1vZUdpQUFFQjhMRFFBZ0FDQUJJQUpCQ1JEMEJBc05BQ0FBSUFFZ0FrRUlFUFFFQ3cwQUlBQWdBU0FDUVFjUTlBUUxEUUFnQUNBQklBSkJCaEQwQkFzTkFDQUFJQUVnQWtFRkVQUUVDdzBBSUFBZ0FTQUNRUVFROUFRTERRQWdBQ0FCSUFKQkF4RDBCQXNOQUNBQUlBRWdBa0VDRVBRRUN3MEFJQUFnQVNBQ1FRRVE5QVFMYmdFQmZ5QUFLQUlBSVFNakFFRVFheUlBSkFBQ1FDQURMUUFNUlFSQUlBRWdBaENlQVF3QkN5QUFJQUkyQWd3Z0FDQUROZ0lJSUFBb0Fnd2hBU0FBS0FJSUlnSVFsUUlnQWlBQktBSUlOZ0lJSUFJZ0FTa0NBRGNDQUNBQkVGVWdBa0VBT2dBTUN5QUFRUkJxSkFBTEdnQWdBU0FDS1FJQU53SUFJQUVnQWlnQ0NEWUNDQ0FDRUZVTHNBSUJDWDhqQUVGQWFpSUNKQUFnQWlBQUtBSWdOZ0k0SUFJZ0FDa0NHRGNETUNBQ0lBQXBBaEEzQXlnZ0FpQUJJQUFvQWlRUWx3RTJBaVFnQWlBQklBQW9BaWdRbmdrMkFpQWdBaUFCSUFBb0Fpd1F4aEEyQWh3Z0FrRUlhaUlESUFFZ0FFRXdhaENURENBQktBSUFJUUFqQUVFUWF5SUVKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUJOZ0lNSUFRZ0FUWUNDQ01BUVJCcklnRWtBQ0FBUVl3QmFpSUZFUHdISVFZZ0FpZ0NIQ0VISUFJb0FpQWhDQ0FDS0FJa0lRa2dCQ2dDQ0NFS0lBQW9BZ2doQUNBQklBTkJCR28yQWdnZ0FTQURLQUlFSUFOSE9nQU1JQVlnQUNBS0lBSkJLR29nQ1NBSUlBY2dBVUVJYWhDQkh4b2dCU0FHRUNnZ0JTQUZLQUlZUVFGcU5nSVlJQUZCRUdva0FDQUdJUUFnQkVFUWFpUUFJQU1RcUFFZ0FrRkFheVFBSUFBTERBQWdBQkR5SGhvZ0FCQWZDMWNCQVg4akFFRWdheUlDSkFBZ0FpQUFLQUlnTmdJWUlBSWdBQ2tDR0RjREVDQUNJQUFwQWhBM0F3Z2dBaUFCSUFBb0FpUVFsd0UyQWdRZ0FTZ0NBQ0FDUVFocUlBSkJCR29RN1I0aEFDQUNRU0JxSkFBZ0FBdXdBUUVEZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUNJQUVnQUNnQ0pCQ1hBVFlDQkNBQktBSUFJUUFqQUVFUWF5SUJKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUROZ0lNSUFFZ0F6WUNDQ0FBUVl3QmFpSURFTDhCSWdRZ0FDZ0NDQ0FCS0FJSUlBSkJDR29nQWlnQ0JCRHZIaG9nQXlBRUVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFRaEFDQUJRUkJxSkFBZ0FrRWdhaVFBSUFBTEN3QWdBRUg4NXdBUUZCb0xTQUVCZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUJLQUlBSUFKQkNHb2dBRUVrYWhEd0hpRUFJQUpCSUdva0FDQUFDd3NBSUFCQjI5RUVFQlFhQ3dzQUlBQkJ1cFlERUJRYUMzSUJBWDhqQUVFd2F5SUVKQUFnQkNBQ05nSWdJQVFnQVRZQ0tDQUVRUUEyQWhnZ0JFSUFOd01RSUFSQ0FEY0RDQ0FBSUFRb0FpZ2dCQ2dDSUNBRVFRaHFFUE1HSWdCQndJRVNOZ0lFSUFCQi9JRVNOZ0lBSUFCQjRJRVNOZ0lBSUFCQkpHb2dBeEM2Q1NBRVFUQnFKQUFnQUF1MUFRRUVmeU1BUVNCcklnSWtBQ0FDSUFBb0FpQTJBaGdnQWlBQUtRSVlOd01RSUFJZ0FDa0NFRGNEQ0NBQ0lBRWdBQ2dDS0JDWEFUWUNCQ0FCS0FJQUlRRWpBRUVRYXlJRUpBQWdBUkFjSUFFZ0FTZ0NERUVCYWlJRE5nSU1JQVFnQXpZQ0NDQUJRWXdCYWlJREVNVUNJZ1VnQVNnQ0NDQUVLQUlJSUFKQkNHb2dBQ2dDSkNBQ0tBSUVFUE1lR2lBRElBVVFLQ0FESUFNb0FoaEJBV28yQWhnZ0JTRUFJQVJCRUdva0FDQUNRU0JxSkFBZ0FBdkpBUUVFZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUNJQUVnQUNnQ0tCQ1hBVFlDQkNBQ0lBRWdBQ2dDTEJDWEFUWUNBQ0FCS0FJQUlRRWpBRUVRYXlJRUpBQWdBUkFjSUFFZ0FTZ0NERUVCYWlJRE5nSU1JQVFnQXpZQ0NDQUJRWXdCYWlJREVMVUhJZ1VnQVNnQ0NDQUVLQUlJSUFKQkNHb2dBQ2dDSkNBQ0tBSUVJQUlvQWdBUTloNGFJQU1nQlJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FGSVFBZ0JFRVFhaVFBSUFKQklHb2tBQ0FBQzhRQkFRTi9Jd0JCTUdzaUFpUUFJQUlnQUNnQ0lEWUNLQ0FDSUFBcEFoZzNBeUFnQWlBQUtRSVFOd01ZSUFJZ0FTQUFRU1JxRU9JRU5nSVFJQUlnQVNBQUtBSW9FSmNCTmdJTUlBRW9BZ0FoQUNNQVFSQnJJZ0VrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ00yQWd3Z0FTQUROZ0lJSUFCQmpBRnFJZ01ReFFJaUJDQUFLQUlJSUFFb0FnZ2dBa0VZYWlBQ0tBSVFJQUlvQWd3USt4NGFJQU1nQkJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FFSVFBZ0FVRVFhaVFBSUFKQk1Hb2tBQ0FBQzdBQkFRTi9Jd0JCSUdzaUFpUUFJQUlnQUNnQ0lEWUNHQ0FDSUFBcEFoZzNBeEFnQWlBQUtRSVFOd01JSUFJZ0FTQUFLQUlrRUpjQk5nSUVJQUVvQWdBaEFDTUFRUkJySWdFa0FDQUFFQndnQUNBQUtBSU1RUUZxSWdNMkFnd2dBU0FETmdJSUlBQkJqQUZxSWdNUXZ3RWlCQ0FBS0FJSUlBRW9BZ2dnQWtFSWFpQUNLQUlFRVB3ZUdpQURJQVFRS0NBRElBTW9BaGhCQVdvMkFoZ2dCQ0VBSUFGQkVHb2tBQ0FDUVNCcUpBQWdBQXNMQUNBQVFickZBeEFVR2d1d0FRRURmeU1BUVNCcklnSWtBQ0FDSUFBb0FpQTJBaGdnQWlBQUtRSVlOd01RSUFJZ0FDa0NFRGNEQ0NBQ0lBRWdBQ2dDSkJDWEFUWUNCQ0FCS0FJQUlRQWpBRUVRYXlJQkpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJRE5nSU1JQUVnQXpZQ0NDQUFRWXdCYWlJREVMOEJJZ1FnQUNnQ0NDQUJLQUlJSUFKQkNHb2dBaWdDQkJEK0hob2dBeUFFRUNnZ0F5QURLQUlZUVFGcU5nSVlJQVFoQUNBQlFSQnFKQUFnQWtFZ2FpUUFJQUFMeEFFQkEzOGpBRUVnYXlJQ0pBQWdBaUFBS0FJZ05nSVlJQUlnQUNrQ0dEY0RFQ0FDSUFBcEFoQTNBd2dnQWlBQklBQW9BaVFRbHdFMkFnUWdBaUFCSUFBb0FpZ1Fsd0UyQWdBZ0FTZ0NBQ0VBSXdCQkVHc2lBU1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBellDRENBQklBTTJBZ2dnQUVHTUFXb2lBeERGQWlJRUlBQW9BZ2dnQVNnQ0NDQUNRUWhxSUFJb0FnUWdBaWdDQUJDRUVSb2dBeUFFRUNnZ0F5QURLQUlZUVFGcU5nSVlJQVFoQUNBQlFSQnFKQUFnQWtFZ2FpUUFJQUFMQ3dBZ0FFRzY0UU1RRkJvTHNBRUJBMzhqQUVFZ2F5SUNKQUFnQWlBQUtBSWdOZ0lZSUFJZ0FDa0NHRGNERUNBQ0lBQXBBaEEzQXdnZ0FpQUJJQUFvQWlRUWx3RTJBZ1FnQVNnQ0FDRUFJd0JCRUdzaUFTUUFJQUFRSENBQUlBQW9BZ3hCQVdvaUF6WUNEQ0FCSUFNMkFnZ2dBRUdNQVdvaUF4Qy9BU0lFSUFBb0FnZ2dBU2dDQ0NBQ1FRaHFJQUlvQWdRUS94NGFJQU1nQkJBb0lBTWdBeWdDR0VFQmFqWUNHQ0FFSVFBZ0FVRVFhaVFBSUFKQklHb2tBQ0FBQ3dzQUlBQkJ5ZTRFRUJRYUM3QUJBUU4vSXdCQklHc2lBaVFBSUFJZ0FDZ0NJRFlDR0NBQ0lBQXBBaGczQXhBZ0FpQUFLUUlRTndNSUlBSWdBU0FBS0FJa0VKY0JOZ0lFSUFFb0FnQWhBQ01BUVJCcklnRWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQVNBRE5nSUlJQUJCakFGcUlnTVF2d0VpQkNBQUtBSUlJQUVvQWdnZ0FrRUlhaUFDS0FJRUVJQWZHaUFESUFRUUtDQURJQU1vQWhoQkFXbzJBaGdnQkNFQUlBRkJFR29rQUNBQ1FTQnFKQUFnQUFzTEFDQUFRY0tUQWhBVUdndXdBUUVEZnlNQVFTQnJJZ0lrQUNBQ0lBQW9BaUEyQWhnZ0FpQUFLUUlZTndNUUlBSWdBQ2tDRURjRENDQUNJQUVnQUNnQ0pCQ1hBVFlDQkNBQktBSUFJUUFqQUVFUWF5SUJKQUFnQUJBY0lBQWdBQ2dDREVFQmFpSUROZ0lNSUFFZ0F6WUNDQ0FBUVl3QmFpSURFTDhCSWdRZ0FDZ0NDQ0FCS0FJSUlBSkJDR29nQWlnQ0JCQ0NIeG9nQXlBRUVDZ2dBeUFES0FJWVFRRnFOZ0lZSUFRaEFDQUJRUkJxSkFBZ0FrRWdhaVFBSUFBTEN3QWdBRUh3N3dJUUZCb0xzQUVCQTM4akFFRWdheUlDSkFBZ0FpQUFLQUlnTmdJWUlBSWdBQ2tDR0RjREVDQUNJQUFwQWhBM0F3Z2dBaUFCSUFBb0FpUVFsd0UyQWdRZ0FTZ0NBQ0VBSXdCQkVHc2lBU1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBellDRENBQklBTTJBZ2dnQUVHTUFXb2lBeEMvQVNJRUlBQW9BZ2dnQVNnQ0NDQUNRUWhxSUFJb0FnUVFneDhhSUFNZ0JCQW9JQU1nQXlnQ0dFRUJhallDR0NBRUlRQWdBVUVRYWlRQUlBSkJJR29rQUNBQUN3c0FJQUJCdHI4REVCUWFDN0FDQVFsL0l3QkJRR29pQWlRQUlBSWdBQ2dDSURZQ09DQUNJQUFwQWhnM0F6QWdBaUFBS1FJUU53TW9JQUlnQVNBQUtBSWtFTThETmdJa0lBSWdBU0FBUVNocUVPSUVOZ0lnSUFJZ0FTQUFLQUlzRUpjQk5nSWNJQUpCQ0dvaUF5QUJJQUJCTUdvUThnVWdBU2dDQUNFQUl3QkJFR3NpQkNRQUlBQVFIQ0FBSUFBb0FneEJBV29pQVRZQ0RDQUVJQUUyQWdnakFFRVFheUlCSkFBZ0FFR01BV29pQlJDM0JDRUdJQUlvQWh3aEJ5QUNLQUlnSVFnZ0FpZ0NKQ0VKSUFRb0FnZ2hDaUFBS0FJSUlRQWdBU0FEUVFocU5nSUlJQUVnQXlnQ0NDQURSem9BRENBR0lBQWdDaUFDUVNocUlBa2dDQ0FISUFGQkNHb1FoQjhhSUFVZ0JoQW9JQVVnQlNnQ0dFRUJhallDR0NBQlFSQnFKQUFnQmlFQUlBUkJFR29rQUNBREVLb0JJQUpCUUdza0FDQUFDd1lBUWNUU0JBdXdBZ0VKZnlNQVFVQnFJZ0lrQUNBQ0lBQW9BaUEyQWpnZ0FpQUFLUUlZTndNd0lBSWdBQ2tDRURjREtDQUNJQUVnQUNnQ0pCRFBBellDSkNBQ0lBRWdBRUVvYWhEaUJEWUNJQ0FDSUFFZ0FDZ0NMQkNYQVRZQ0hDQUNRUWhxSWdNZ0FTQUFRVEJxRVBJRklBRW9BZ0FoQUNNQVFSQnJJZ1FrQUNBQUVCd2dBQ0FBS0FJTVFRRnFJZ0UyQWd3Z0JDQUJOZ0lJSXdCQkVHc2lBU1FBSUFCQmpBRnFJZ1VRdHdRaEJpQUNLQUljSVFjZ0FpZ0NJQ0VJSUFJb0FpUWhDU0FFS0FJSUlRb2dBQ2dDQ0NFQUlBRWdBMEVJYWpZQ0NDQUJJQU1vQWdnZ0EwYzZBQXdnQmlBQUlBb2dBa0VvYWlBSklBZ2dCeUFCUVFocUVJWWZHaUFGSUFZUUtDQUZJQVVvQWhoQkFXbzJBaGdnQVVFUWFpUUFJQVloQUNBRVFSQnFKQUFnQXhDcUFTQUNRVUJySkFBZ0FBc0ZBRUdDTGd2YkFnRUtmeU1BUVVCcUlnSWtBQ0FDSUFBb0FpQTJBamdnQWlBQUtRSVlOd013SUFJZ0FDa0NFRGNES0NBQ0lBRWdBQ2dDSkJEUEF6WUNKQ0FDSUFFZ0FFRW9haERpQkRZQ0lDQUNJQUVnQUNnQ1JCQ1hBVFlDSENBQ0lBRWdBQ2dDU0JDWEFUWUNHQ0FDSUFFZ0FDZ0NMQkNYQVRZQ0ZDQUNJQUVnQUVFd2FoRHlCU0FCS0FJQUlRQWpBRUVRYXlJREpBQWdBQkFjSUFBZ0FDZ0NERUVCYWlJQk5nSU1JQU1nQVRZQ0NDTUFRUkJySWdFa0FDQUFRWXdCYWlJRUVJY2ZJUVVnQWlnQ0ZDRUdJQUlvQWhnaEJ5QUNLQUljSVFnZ0FpZ0NJQ0VKSUFJb0FpUWhDaUFES0FJSUlRc2dBQ2dDQ0NFQUlBRWdBa0VJYWpZQ0NDQUJJQUlvQWdnZ0FrYzZBQXdnQlNBQUlBc2dBa0VvYWlBS0lBa2dDQ0FISUFZZ0FVRUlhaENJSHhvZ0JDQUZFQ2dnQkNBRUtBSVlRUUZxTmdJWUlBRkJFR29rQUNBRklRQWdBMEVRYWlRQUlBSVFxZ0VnQWtGQWF5UUFJQUFMQmdCQm5QOEJDOFFCQVFOL0l3QkJJR3NpQWlRQUlBSWdBQ2dDSURZQ0dDQUNJQUFwQWhnM0F4QWdBaUFBS1FJUU53TUlJQUlnQVNBQUtBSWtFTThETmdJRUlBSWdBU0FBUVNocUVPSUVOZ0lBSUFFb0FnQWhBQ01BUVJCcklnRWtBQ0FBRUJ3Z0FDQUFLQUlNUVFGcUlnTTJBZ3dnQVNBRE5nSUlJQUJCakFGcUlnTVF4UUlpQkNBQUtBSUlJQUVvQWdnZ0FrRUlhaUFDS0FJRUlBSW9BZ0FRaVI4YUlBTWdCQkFvSUFNZ0F5Z0NHRUVCYWpZQ0dDQUVJUUFnQVVFUWFpUUFJQUpCSUdva0FDQUFDME1CQVg4akFFRWdheUlDSkFBZ0FpQUFLQUlnTmdJWUlBSWdBQ2tDR0RjREVDQUNJQUFwQWhBM0F3Z2dBU2dDQUNBQ1FRaHFFSVVmSVFBZ0FrRWdhaVFBSUFBTHZna0JDWDhqQUVId0FHc2lCeVFBSUFjZ0FDZ0NJRFlDYUNBSElBQXBBaGczQTJBZ0J5QUFLUUlRTndOWUlBY2dBU0FBS0FJa0VNOEROZ0pVSUFkQktHb2lCa0tBZ0lDQWdBRTNBaVFnQmlBR05nSWdJd0JCTUdzaUFpUUFJQVlnQUNnQ1RCQTVJQUpCQURZQ0tDQUNJQUJCS0dvMkFpUWdBaUFCUWNnZ2FqWUNJQ0FDSUFGQjNJQUJhaWdDQUVFQmF6WUNMQUpBSUFKQklHb1F0UUVFUUNBQ1FTQnFFRm9pQkNnQzJBRWlBeUFFS0FMY0FVRVliR29oQkFOQUlBTWdCRVlFUUNBQUtBSklJZ1FnQUNnQ1RFRUNkR29oQ0FOQUlBUWdDRVlFUUNBQ1FTQnFFRm9pQkNnQ3lBSWlBeUFFS0FMTUFrRVliR29oQkFOQUlBTWdCRVlOQmlBQ0lBRWdBeEJtRU9JR05nSVFJQVlnQWtFUWFoQWtJQU5CR0dvaEF3d0FDd0FMSUFJZ0FrRWdhaEJhSWdOQjJBSnFOZ0lRSUFRb0FnQWhCU0FDUVFBMkFoZ2dBaUFGTmdJVUlBSWdBMEdjQ1dvb0FnQkJBV3MyQWh3Q1FDQUNRUkJxRUxRQlJRMEFJQUpCRUdvUXJBRWlCU2dDWUNJRElBVW9BbVJCR0d4cUlRVURRQ0FESUFWR0RRRWdBaUFCSUFNUVpoRGlCallDRENBR0lBSkJER29RSkNBRFFSaHFJUU1NQUFzQUN5QUNRU0JxRUZvaEF5QUNJQVFvQWdBMkFoQWdBeUFDUVJCcUVNWURSUVJBSUFJZ0FTQUVLQUlBRUlVUk5nSVFJQVlnQWtFUWFoQWtDeUFDSUFKQklHb1FXaUlEUWFBSmFqWUNFQ0FFS0FJQUlRVWdBa0VBTmdJWUlBSWdCVFlDRkNBQ0lBTkI1QTlxS0FJQVFRRnJOZ0ljQWtBZ0FrRVFhaEMwQVVVTkFDQUNRUkJxRUt3QklnVW9BbUFpQXlBRktBSmtRUmhzYWlFRkEwQWdBeUFGUmcwQklBSWdBU0FERUdZUTRnWTJBZ3dnQmlBQ1FReHFFQ1FnQTBFWWFpRUREQUFMQUFzZ0JFRUVhaUVFREFBTEFBVWdBaUFCSUFNUVpoRGlCallDRUNBR0lBSkJFR29RSkNBRFFSaHFJUU1NQVFzQUN3QUxJQUFvQWtnaUJDQUFLQUpNUVFKMGFpRUlBMEFnQkNBSVJnUkFJQUpCSUdvUXRRRkZEUUlnQWtFZ2FoQmFJZ1FvQXNnQ0lnTWdCQ2dDekFKQkdHeHFJUVFEUUNBRElBUkdEUU1nQWlBQklBTVFaaERpQmpZQ0VDQUdJQUpCRUdvUUpDQURRUmhxSVFNTUFBc0FCU0FDSUFFZ0JDZ0NBQkNGRVRZQ0VDQUdJQUpCRUdvUUpBSkFJQUpCSUdvUXRRRkZEUUFnQWlBQ1FTQnFFRm9pQTBHZ0NXbzJBaEFnQkNnQ0FDRUZJQUpCQURZQ0dDQUNJQVUyQWhRZ0FpQURRZVFQYWlnQ0FFRUJhellDSENBQ1FSQnFFTFFCUlEwQUlBSkJFR29RckFFaUJTZ0NZQ0lESUFVb0FtUkJHR3hxSVFVRFFDQURJQVZHRFFFZ0FpQUJJQU1RWmhEaUJqWUNEQ0FHSUFKQkRHb1FKQ0FEUVJocUlRTU1BQXNBQ3lBRVFRUnFJUVFNQVFzQUN3QUxJQUpCTUdva0FDQUhRUWhxSWdJZ0FTQUFRZFFBYWhENkN5QUJLQUlBSVFFakFFRVFheUlESkFBZ0FSQWNJQUVnQVNnQ0RFRUJhaUlBTmdJTUlBTWdBRFlDQ0NNQVFSQnJJZ0FrQUNBQlFZd0JhaUlFRUpjTUlRZ2dCeWdDVkNFRklBTW9BZ2doQ1NBQktBSUlJUUVnQUNBR1FTQnFOZ0lJSUFZb0FpQWhDaUFBSUFKQkVHbzJBZ0FnQUNBR0lBcEhPZ0FNSUFBZ0FpZ0NFQ0FDUnpvQUJDQUlJQUVnQ1NBSFFkZ0FhaUFGSUFCQkNHb2dBQkNZREJvZ0JDQUlFQ2dnQkNBRUtBSVlRUUZxTmdJWUlBQkJFR29rQUNBSUlRQWdBMEVRYWlRQUlBSVFYaUFHRUNNZ0IwSHdBR29rQUNBQUN3d0FJQUFRaWg4YUlBQVFId3VTQWdFSGZ5TUFRVUJxSWdJa0FDQUNJQUFvQWlBMkFqZ2dBaUFBS1FJWU53TXdJQUlnQUNrQ0VEY0RLQ0FDSUFFZ0FDZ0NKQkRQQXpZQ0pDQUNJQUVnQUVFb2FoRGlCRFlDSUNBQ0lBRWdBRUVzYWhENkN5QUJLQUlBSVFBakFFRVFheUlESkFBZ0FCQWNJQUFnQUNnQ0RFRUJhaUlCTmdJTUlBTWdBVFlDQ0NNQVFSQnJJZ0VrQUNBQVFZd0JhaUlFRUlZUklRVWdBaWdDSUNFR0lBSW9BaVFoQnlBREtBSUlJUWdnQUNnQ0NDRUFJQUVnQWtFUWFqWUNDQ0FCSUFJb0FoQWdBa2M2QUF3Z0JTQUFJQWdnQWtFb2FpQUhJQVlnQVVFSWFoQ0hFUm9nQkNBRkVDZ2dCQ0FFS0FJWVFRRnFOZ0lZSUFGQkVHb2tBQ0FGSVFBZ0EwRVFhaVFBSUFJUVhpQUNRVUJySkFBZ0FBc01BQ0FBRUlzZkdpQUFFQjhMdFFVQkMzOGpBRUd3RkdzaUFpUUFJQUVvQWdBaEJTQUFLQUlRSVFjZ0FrR2dFMm9RU1NJR1FRaHFJZ05CcE80SkVBNGFJQUFvQWdnb0FnQWhBU0FBS0FJRUtBSUFJUVFnQWtFQU9nQ2NFeUFDSUFFMkFwZ1RJQUpCcUFwcUlnRWdCQ0FDUVpnVGFpQUFLQUlNS0FJQUVJZ1JJQU1nQVJBU0dpQURFT0lCR2lBQkVBOGFJQUpCakJOcVFvQ0FnSUNBQVRjQ0FDQUNJQUUyQW9nVElBSkJuQXBxUW9DQWdJQ0FBVGNDQUNBQ0lBSkJ1QUZxTmdLWUNpQUZLQUlBSWdFZ0JTZ0NCRUdNQVd4cUlRb2dBa0dZQ21vaEN5QUNRWWdUYWlFTUEwQWdBU0FLUmdSQUlBSW9Bb3dUQkVBZ0F4RGlBUm9nQXlBQ0tBS01FeEFoR2lBRFFmWElBUkFPR2lBRFFadnFCa0hWNmdZZ0FpZ0NqQk5CQVVzYkVBNGFJQU1RNGdFYUlBSkJBRG9BSkNBQ0lBdzJBaUFnQnlBR0lBSkJJR29nQUNnQ0JDZ0NBQkNiREFzZ0FpZ0NuQW9FUUNBREVPSUJHaUFESUFJb0Fwd0tFQ0VhSUFOQnVld0NFQTRhSUFOQm0rb0dRZFhxQmlBQ0tBS2NDa0VCU3hzUURob2dBeERpQVJvZ0FrRUFPZ0FjSUFJZ0N6WUNHQ0FISUFZZ0FrRVlhaUFBS0FJRUtBSUFFSnNNQ3lBSEtBSUVJZ0VRSENBQ1FTaHFJZ1FnQmtFTWFoQkNJQUlnQWlnQ0xDQUNMUUF6SWdNZ0EwRVlkRUVZZFVFQVNDSURHellDRkNBQ0lBSW9BaWdnQkNBREd6WUNFQ0FBS0FJVUlRQWdBaUFDS1FNUU53TUlJQUZCeUFKcUlBSkJDR29nQUJEVkFTQUVFQThhSUFKQnVBRnFFSW9SSUFKQnFBcHFFSW9SSUFZUVVTQUNRYkFVYWlRQUJTQUNRYmdCYWlBQ1FhZ0thaUFDUVNocUlBRVFqUjhpQ1NnQ0FDa0RHRUlFZzFBaUNCc2lCU2dDNUFnaUJDQUNRYUFLYWlBQ1FaQVRhaUFJR3lnQ0FFOEVRQ0FGRUprZklBVW9BdVFJSVFRTElBVW9BdUFJSVFnZ0JTQUVRUUZxTmdMa0NDQUlJQVJCakFGc2FpQUpFSTBmR2lBSkVLOEZHaUFCUVl3QmFpRUJEQUVMQ3dzTkFDQUFJQUZCNlBZUkVNY01Dd3NBSUFCQjZQWVJFTWdNQ3dzQUlBQWdBVUVJRU9JU0N3MEFJQUFnQVVHbzlSRVF0Z1VMQ3dBZ0FFR285UkVRdHdVTEN3QWdBQ0FCUVFRUTRoSUxEUUFnQUNBQlFmRHpFUkMyQlFzTEFDQUFRZkR6RVJDM0JRdERBUUYvSXdCQklHc2lBaVFBSUFJZ0FDZ0NJRFlDR0NBQ0lBQXBBaGczQXhBZ0FpQUFLUUlRTndNSUlBRW9BZ0FnQWtFSWFoQ01IeUVBSUFKQklHb2tBQ0FBQzhzQ0FRWi9Jd0JCd0FGcklnSWtBQ0FCS0FJQUlRTWdBQ2dDRENFRUlBSkJNR29RU1NJR1FRaHFJZ0ZCODRBS0VBNGFJQUFvQWdnb0FnQWhCU0FBS0FJRUtBSUFJUWNnQWtFQU9nQWNJQUlnQlRZQ0dDQUNRU0JxSWdVZ0J5QUNRUmhxUVFBUWlCRWdBU0FGRUJJYUlBRVE0Z0VhSUFVUUR4b2dBeWdDQkFSQUlBRVE0Z0VhSUFFZ0F5Z0NCQkFoR2lBQlFjck9BaEFPR2lBQlFadnFCa0hWNmdZZ0F5Z0NCRUVCU3hzUURob2dBUkRpQVJvZ0FrRUFPZ0FVSUFJZ0F6WUNFQ0FFSUFZZ0FrRVFhaUFBS0FJRUtBSUFFSnNNQ3lBRUtBSUVJZ0VRSENBQ1FTQnFJZ1FnQmtFTWFoQkNJQUlnQWlnQ0pDQUNMUUFySWdNZ0EwRVlkRUVZZFVFQVNDSURHellDRENBQ0lBSW9BaUFnQkNBREd6WUNDQ0FBS0FJUUlRQWdBaUFDS1FNSU53TUFJQUZCeUFKcUlBSWdBQkRWQVNBRUVBOGFJQVlRVVNBQ1FjQUJhaVFBQ3cwQUlBQWdBVUdvOHhFUXRnVUxDd0FnQUVHbzh4RVF0d1VMQ3dBZ0FFSEE0QVlRRkJvTHp3RUJBbjhqQUVFZ2F5SUNKQUFnQWlBQUtBSWdOZ0lZSUFJZ0FDa0NHRGNERUNBQ0lBQXBBaEEzQXdnZ0FnSi9JQUFvQWlRaEFDQUJLQUlFSWdNRVFDQURLQUlBSUFBUVYwRUJRUUZCMVo0SVFkQ25BMEh3QUJCTEMwRUFJQUVnQUJETkF5SUFSUTBBR2dKL0lBQUVRQ0FBSUFBb0FnUkJ1TzRQUmcwQkdpQUJJQUJCdU80UEVPRUVDMEVBQ3lFQUlBRW9BZ0FvQWdnZ0FCQlhRUUZCQVVHaG13aEIwS2NEUWZRQUVFc2dBQXMyQWdRZ0FTZ0NBQ0FDUVFocUlBSkJCR29Ra1I4aEFDQUNRU0JxSkFBZ0FBc0xBQ0FBUWQrUkFoQVVHZ3NWQUNBQUlBRWdBaUFEUW9tQWdJQVFRUWtRMndrTEN3QWdBRUdvd2dRUUZCb0xGUUFnQUNBQklBSWdBMEtIZ0lDQUVFRUhFTnNKQ3dzQUlBQkJtOElFRUJRYUN5WUJBWDRDUUFKQUlBTW9BZ0JCQjJzT0F3QUJBQUVMSUFNcEFnQWhCQXNnQUNBRU53SUFDd3NBSUFCQnlwRUNFQlFhQ3hJQUlBQWdBU0FDSUFOQnFBUkJDUkRjQ1FzTEFDQUFRYUxlQXhBVUdnc1ZBQ0FBSUFFZ0FpQURRb0tBZ0lBUVFRSVEyd2tMQ3dBZ0FFR3UzZ01RRkJvTEZRQWdBQ0FCSUFJZ0EwS0RnSUNBRUVFREVOc0pDd29BSUFCQndEb1FGQm9MRXdBZ0FDQUJJQUlnQTBHUXlRUkJFQkRjQ1FzS0FDQUFRWjA3RUJRYUN4TUFJQUFnQVNBQ0lBTkJ5S1FCUVE0UTNBa0xDd0FnQUVIcitBQVFGQm9MRXdBZ0FDQUJJQUlnQTBHbWtncEJFUkRjQ1FzVEFDQUFJQUVnQWtIdy9BWkJ1djBHRU1vTUN5UUFJQUlRNlFJRVFDQUJFT2dDRHd0QkFDRUFJQUlRMUFNRWZ5QUJFTk1EQlVFQUN3c1RBQ0FBSUFFZ0FrSGQ4QVpCN1A0R0VNb01DeVFBSUFJUTV3SUVRQ0FCRU9ZQ0R3dEJBQ0VBSUFJUTBnTUVmeUFCRU5FREJVRUFDd3NUQUNBQUlBRWdBa0c2L1FaQjdQNEdFTW9NQ3lRQUlBSVE2UUlFUUNBQkVPZ0NEd3RCQUNFQUlBSVE1d0lFZnlBQkVPWUNCVUVBQ3dzUEFDQUFJQUVnQWtIZDhBWVE1QklMTWdBZ0FoRHBBZ1JBSUFFUTZBSVBDeUFDRU9jQ0JFQWdBUkRtQWc4TFFRQWhBQ0FDRU5JREJIOGdBUkRSQXdWQkFBc0xEd0FnQUNBQklBSkI4UHdHRU9RU0N6SUFJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRFVBd1JBSUFFUTB3TVBDMEVBSVFBZ0FoRG5BZ1IvSUFFUTVnSUZRUUFMQzZNQkFRUi9Jd0JCMEFGcklnRWtBQ0FCUVVCckVFa2lBMEVJYWlJQ0lBRkJNR3BCN1A0R0VCUWlCQkFTR2lBQ1FmVHREQkFPR2lBQ0lBRkJJR3BCdXYwR0VCUWlCUkFTR2lBQ1FmVHREQkFPR2lBQ0lBRkJFR3BCOFB3R0VCUWlCaEFTR2lBQ1FiWDBDUkFPR2lBQ0lBRkIzZkFHRUJRaUFoQVNHaUFDRUE4YUlBWVFEeG9nQlJBUEdpQUVFQThhSUFBZ0EwRU1haEJDSUFNUVVTQUJRZEFCYWlRQUMwQUFJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRFVBd1JBSUFFUTB3TVBDeUFDRU9jQ0JFQWdBUkRtQWc4TFFRQWhBQ0FDRU5JREJIOGdBUkRSQXdWQkFBc0xhQUVDZnlNQVFiQUJheUlCSkFBZ0FVRWdhaEJKSVFJZ0FVRVFhaUlFSUFFZ0FSQ0NCaUFDUVFocUlnTWdCQkFTR2lBRFFiWDBDUkFPR2lBRElBRkJ1djBHRUJRaUF4QVNHaUFERUE4YUlBUVFEeG9nQUNBQ1FReHFFRUlnQWhCUklBRkJzQUZxSkFBTEpnQWdBU0FDRVBvREJFQWdBUkQ1QXc4TFFRQWhBQ0FDRU9rQ0JIOGdBUkRvQWdWQkFBc0xpQUVCQTM4akFFSEFBV3NpQVNRQUlBRkJNR29RU1NFRElBRkJJR29pQkNBQklBRVFnZ1lnQTBFSWFpSUNJQVFRRWhvZ0FrSDA3UXdRRGhvZ0FpQUJRUkJxUWJyOUJoQVVJZ1VRRWhvZ0FrRzE5QWtRRGhvZ0FpQUJRZkQ4QmhBVUlnSVFFaG9nQWhBUEdpQUZFQThhSUFRUUR4b2dBQ0FEUVF4cUVFSWdBeEJSSUFGQndBRnFKQUFMTkFBZ0FTQUNFUG9EQkVBZ0FSRDVBdzhMSUFJUTZRSUVRQ0FCRU9nQ0R3dEJBQ0VBSUFJUTFBTUVmeUFCRU5NREJVRUFDd3VJQVFFRGZ5TUFRY0FCYXlJQkpBQWdBVUV3YWhCSklRTWdBVUVnYWlJRUlBRWdBUkNCQmlBRFFRaHFJZ0lnQkJBU0dpQUNRZlR0REJBT0dpQUNJQUZCRUdwQjdQNEdFQlFpQlJBU0dpQUNRYlgwQ1JBT0dpQUNJQUZCM2ZBR0VCUWlBaEFTR2lBQ0VBOGFJQVVRRHhvZ0JCQVBHaUFBSUFOQkRHb1FRaUFERUZFZ0FVSEFBV29rQUFzMEFDQUJJQUlRK0FNRVFDQUJFUGNERHdzZ0FoRG5BZ1JBSUFFUTVnSVBDMEVBSVFBZ0FoRFNBd1IvSUFFUTBRTUZRUUFMQzJnQkFuOGpBRUd3QVdzaUFTUUFJQUZCSUdvUVNTRUNJQUZCRUdvaUJDQUJJQUVRZ1FZZ0FrRUlhaUlESUFRUUVob2dBMEcxOUFrUURob2dBeUFCUWV6K0JoQVVJZ01RRWhvZ0F4QVBHaUFFRUE4YUlBQWdBa0VNYWhCQ0lBSVFVU0FCUWJBQmFpUUFDeVlBSUFFZ0FoRDRBd1JBSUFFUTl3TVBDMEVBSVFBZ0FoRG5BZ1IvSUFFUTVnSUZRUUFMQ3c4QUlBQWdBU0FDUWZEOEJoRGxFZ3RTQUNBQklBSVErZ01FUUNBQkVQa0REd3NnQVNBQ0VQZ0RCRUFnQVJEM0F3OExJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRFVBd1JBSUFFUTB3TVBDMEVBSVFBZ0FoRG5BZ1IvSUFFUTVnSUZRUUFMQ3c4QUlBQWdBU0FDUWQzd0JoRGxFZ3RTQUNBQklBSVErZ01FUUNBQkVQa0REd3NnQVNBQ0VQZ0RCRUFnQVJEM0F3OExJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRG5BZ1JBSUFFUTVnSVBDMEVBSVFBZ0FoRFNBd1IvSUFFUTBRTUZRUUFMQyswQkFRWi9Jd0JCOEFGcklnRWtBQ0FCUWVBQWFoQkpJUU1nQVVIUUFHb2lCQ0FCSUFFUWdRWWdBMEVJYWlJQ0lBUVFFaG9nQWtIMDdRd1FEaG9nQVVGQWF5SUZJQUVnQVJDQ0JpQUNJQVVRRWhvZ0FrSDA3UXdRRGhvZ0FpQUJRVEJxUWV6K0JoQVVJZ1lRRWhvZ0FrSDA3UXdRRGhvZ0FpQUJRU0JxUWJyOUJoQVVJZ2NRRWhvZ0FrSDA3UXdRRGhvZ0FpQUJRUkJxUWZEOEJoQVVJZ2dRRWhvZ0FrRzE5QWtRRGhvZ0FpQUJRZDN3QmhBVUlnSVFFaG9nQWhBUEdpQUlFQThhSUFjUUR4b2dCaEFQR2lBRkVBOGFJQVFRRHhvZ0FDQURRUXhxRUVJZ0F4QlJJQUZCOEFGcUpBQUxHd0FnQUNBQklBSkI4UHdHUWJyOUJrSGQ4QVpCN1A0R0VJNElDeHNBSUFBZ0FTQUNRWXY4QWtHNi9RWkIzZkFHUWV6K0JoQ09DQXRnQUNBQklBSVErZ01FUUNBQkVQa0REd3NnQVNBQ0VQZ0RCRUFnQVJEM0F3OExJQUlRNlFJRVFDQUJFT2dDRHdzZ0FoRG5BZ1JBSUFFUTVnSVBDeUFDRU5JREJFQWdBUkRSQXc4TFFRQWhBQ0FDRUlVR0JIOGdBUkNFQmdWQkFBc0xHd0FnQUNBQklBSkJpL3dDUWZEOEJrSGQ4QVpCN1A0R0VJNElDMkFBSUFFZ0FoRDZBd1JBSUFFUStRTVBDeUFCSUFJUStBTUVRQ0FCRVBjRER3c2dBaERVQXdSQUlBRVEwd01QQ3lBQ0VPY0NCRUFnQVJEbUFnOExJQUlRMGdNRVFDQUJFTkVERHd0QkFDRUFJQUlRaFFZRWZ5QUJFSVFHQlVFQUN3c2JBQ0FBSUFFZ0FrR0wvQUpCOFB3R1FicjlCa0hzL2dZUWpnZ0xZQUFnQVNBQ0VQb0RCRUFnQVJENUF3OExJQUVnQWhENEF3UkFJQUVROXdNUEN5QUNFT2tDQkVBZ0FSRG9BZzhMSUFJUTFBTUVRQ0FCRU5NRER3c2dBaERuQWdSQUlBRVE1Z0lQQzBFQUlRQWdBaENGQmdSL0lBRVFoQVlGUVFBTEN4c0FJQUFnQVNBQ1FZdjhBa0h3L0FaQjNmQUdRYnI5QmhDT0NBdGdBQ0FCSUFJUStnTUVRQ0FCRVBrRER3c2dBU0FDRVBnREJFQWdBUkQzQXc4TElBSVE2UUlFUUNBQkVPZ0NEd3NnQWhEVUF3UkFJQUVRMHdNUEN5QUNFTklEQkVBZ0FSRFJBdzhMUVFBaEFDQUNFSVVHQkg4Z0FSQ0VCZ1ZCQUFzTHhBRUJCWDhqQUVIZ0FXc2lBaVFBSUFKQjBBQnFFRWtpQTBFSWFpSUJJQUpCUUd0QjdQNEdFQlFpQkJBU0dpQUJRZlR0REJBT0dpQUJJQUpCTUdwQjNmQUdFQlFpQlJBU0dpQUJRZlR0REJBT0dpQUJJQUpCSUdwQnV2MEdFQlFpQmhBU0dpQUJRZlR0REJBT0dpQUJJQUpCRUdwQjhQd0dFQlFpQnhBU0dpQUJRYlgwQ1JBT0dpQUJJQUpCaS93Q0VCUWlBUkFTR2lBQkVBOGFJQWNRRHhvZ0JoQVBHaUFGRUE4YUlBUVFEeG9nQUNBRFFReHFFRUlnQXhCUklBSkI0QUZxSkFBTFRnQWdBaERwQWdSQUlBRVE2QUlQQ3lBQ0VOUURCRUFnQVJEVEF3OExJQUlRNXdJRVFDQUJFT1lDRHdzZ0FoRFNBd1JBSUFFUTBRTVBDMEVBSVFBZ0FoQ0ZCZ1IvSUFFUWhBWUZRUUFMQzQ0Q0FRZC9Jd0JCZ0FKcklnRWtBQ0FCUWZBQWFoQkpJUU1nQVVIZ0FHb2lCQ0FCSUFFUWdnWWdBMEVJYWlJQ0lBUVFFaG9nQWtIMDdRd1FEaG9nQVVIUUFHb2lCU0FCSUFFUWdRWWdBaUFGRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUZBYTBIcy9nWVFGQ0lHRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUV3YWtIZDhBWVFGQ0lIRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUVnYWtHNi9RWVFGQ0lJRUJJYUlBSkI5TzBNRUE0YUlBSWdBVUVRYWtIdy9BWVFGQ0lKRUJJYUlBSkJ0ZlFKRUE0YUlBSWdBVUdML0FJUUZDSUNFQklhSUFJUUR4b2dDUkFQR2lBSUVBOGFJQWNRRHhvZ0JoQVBHaUFGRUE4YUlBUVFEeG9nQUNBRFFReHFFRUlnQXhCUklBRkJnQUpxSkFBTGJnQWdBU0FDRVBvREJFQWdBUkQ1QXc4TElBRWdBaEQ0QXdSQUlBRVE5d01QQ3lBQ0VPa0NCRUFnQVJEb0FnOExJQUlRMUFNRVFDQUJFTk1ERHdzZ0FoRG5BZ1JBSUFFUTVnSVBDeUFDRU5JREJFQWdBUkRSQXc4TFFRQWhBQ0FDRUlVR0JIOGdBUkNFQmdWQkFBc0xEd0FnQUNBQklBSkI5T1lHRUk0Q0N5OEFRUUFoQUFKQUlBSW9BZ1JCOElVUVJ3MEFJQUVnQWhDckFpSUNSUTBBSUFFb0FnQWdBaENyRENFQUN5QUFDdzhBSUFBZ0FTQUNRZnlKQlJEbkVndWVBUUlCZndGK0l3QkJJR3NpQUNRQUFrQWdBaWdDQkVId2hSQkhEUUFnQUVLQWdJQ0FJRGNEQ0NBQVFvQ0FnSUFnTndNQUlBQkJFR29nQVNBQUVLOEVJQUFwQXhBaUJFS0FnSUNBY0lOQ2dJQ0FnQkJTRFFBZ0FTQUNFS3NDSWdKRkRRQWdBQ0FDTmdJUUlBRW9BZ0FoQWlBQUlBUStBaHdnQWlBQVFSQnFJQUJCSEdvUW53SWhBaUFCS0FJQUlBSVFuUU1oQXdzZ0FFRWdhaVFBSUFNTGhBSUJCMzhqQUVIUUFHc2lBaVFBSUFJZ0FDZ0NJRFlDU0NBQ1FVQnJJQUFwQWhnM0F3QWdBaUFBS1FJUU53TTRJQUpCQ0dvaUF5QUJJQUJCS0dvUWp4RWdBaUFCSUFBb0FpUVFsUWsyQWdRZ0FTZ0NBQ0VBSXdCQkVHc2lCQ1FBSUFBUUhDQUFJQUFvQWd4QkFXb2lBVFlDRENBRUlBRTJBZ2dqQUVFUWF5SUJKQUFnQUVHTUFXb2lCUkQ5QlNFR0lBSW9BZ1FoQnlBRUtBSUlJUWdnQUNnQ0NDRUFJQUVnQTBFZ2FqWUNDQ0FCSUFNb0FpQWdBMGM2QUF3Z0JpQUFJQWdnQWtFNGFpQUhJQUZCQ0dvUS9nVWFJQVVnQmhBb0lBVWdCU2dDR0VFQmFqWUNHQ0FCUVJCcUpBQWdCaUVBSUFSQkVHb2tBQ0FERUNNZ0FrSFFBR29rQUNBQUN3OEFJQUFnQVNBQ1FjQzdCUkRvRWdzdkFFRUFJUUFDUUNBQ0tBSUVRZkNGRUVjTkFDQUJJQUlRcXdJaUFrVU5BQ0FCS0FJQUlBSVFuUU1oQUFzZ0FBc1BBQ0FBSUFFZ0FrR1BpZ1VRNXhJTG5nRUNBWDhCZmlNQVFTQnJJZ0FrQUFKQUlBSW9BZ1JCOElVUVJ3MEFJQUJDZ0lDQWdDQTNBd2dnQUVLQWdJQ0FJRGNEQUNBQVFSQnFJQUVnQUJDdkJDQUFLUU1RSWdSQ2dJQ0FnSENEUW9DQWdJQVFVZzBBSUFFZ0FoQ3JBaUlDUlEwQUlBQWdBallDRUNBQktBSUFJUUlnQUNBRVBnSWNJQUlnQUVFUWFpQUFRUnhxRUo4Q0lRSWdBU2dDQUNBQ0VKNERJUU1MSUFCQklHb2tBQ0FEQ3c4QUlBQWdBU0FDUWRDN0JSRG9FZ3N2QUVFQUlRQUNRQ0FDS0FJRVFmQ0ZFRWNOQUNBQklBSVFxd0lpQWtVTkFDQUJLQUlBSUFJUW5nTWhBQXNnQUFzUEFDQUFJQUVnQWtIdTZBWVFqZ0lMZndFQmZ5TUFRUkJySWdBa0FBSkFJQUVnQWlnQ0JFSHdoUkJIQkg4Z0FoQ3lBaUlDUlEwQklBSXRBQ0JGRFFFZ0FpZ0NHQVVnQWdzUXF3SWlBa1VFUUF3QkN5QUFJQUkyQWd3Z0FTZ0NBQ0VCSUFCQkF6WUNDQ0FBUVFFNkFBY2dBU0FBUVF4cUlBQkJDR29nQUVFSGFoQ2lIeUVEQ3lBQVFSQnFKQUFnQXdzTEFDQUFRYW1XQXhBVUdnc01BQ0FBRUtRZkdpQUFFQjhMU0FFQmZrRUFJUUFDUUNBQ0tBSUVJZ0lwQXhCQ2dJS0FpSUVJZ3lJRElBTkNBWDJEVUEwQUlBSVFzQVZGQkVBZ0FrSHdweElRU0VVTkFRc2dBU2dDQUJDQ0hpRUFDeUFBQ3c4QUlBQWdBU0FDUWJybkJoRGRDUXNOQUNBQUlBRWdBa0VERU40SkN3OEFJQUFnQVNBQ1FkSG1CaERkQ1FzTkFDQUFJQUVnQWtFQ0VONEpDdzhBSUFBZ0FTQUNRZHJuQmhEZENRc05BQ0FBSUFFZ0FrRUJFTjRKQ3c4QUlBQWdBU0FDUVpQb0JoRGRDUXRyQVFGL0FrQWdBd0orSUFBb0FnUWlCRUh3aFJCR0JFQWdBa0tBZ0lDQUlEY0NBRUtBZ0lDQUlBd0JDMEVBSVFNZ0JFSFlyeEpIRFFFZ0FDZ0NHQ0FCUncwQklBSWdBRFVDSEVLQWdJQ0FFSVEzQWdBZ0FEVUNJRUtBZ0lDQUVJUUxOd0lBUVFFaEF3c2dBd3NOQUNBQUlBRWdBa0VBRU40SkN3c0FJQUJCM29VRkVCUWFDMVVCQW44akFFRVFheUlBSkFBQ1FDQUNLQUlFSWdSQjhJVVFSd1JBSUFSQnNLWVNSdzBCSUFJb0FoaEJBVWNOQVFzZ0FTZ0NBQ0VCSUFCQkFUWUNEQ0FCSUFCQkRHb1FnUjRoQXdzZ0FFRVFhaVFBSUFNTENnQWdBRUdNR1JBVUdnc05BQ0FBSUFFZ0FrRUZFTjhKQ3dzQUlBQkIrOXdFRUJRYUN3MEFJQUFnQVNBQ1FRUVEzd2tMQ2dBZ0FFRzRHUkFVR2dzTkFDQUFJQUVnQWtFQ0VOOEpDd3NBSUFCQnI0VUZFQlFhQ3cwQUlBQWdBU0FDUVFFUTN3a0xEd0FnQUNBQklBSkI3dWNHRUk0Q0MzWUJBbjhqQUVFUWF5SUFKQUFDUUNBQklBSW9BZ1FpQkVId2hSQkhCSDhnQkVIUXF4SkhEUUVnQWlnQ0dFRUJSdzBCSUFJb0Fod0ZJQUlMRUtzQ0lnSkZCRUFNQVFzZ0FDQUNOZ0lNSUFFb0FnQWhBU0FBUVFFMkFnZ2dBU0FBUVFocUlBQkJER29RcFI4aEF3c2dBRUVRYWlRQUlBTUxEd0FnQUNBQklBSkJxK1lHRUk0Q0N3MEFJQUFnQVNBQ1FRVVFqd2dMRHdBZ0FDQUJJQUpCb09jR0VJNENDdzBBSUFBZ0FTQUNRUVFRandnTER3QWdBQ0FCSUFKQnJ1Y0dFSTRDQ3cwQUlBQWdBU0FDUVFNUWp3Z0xEd0FnQUNBQklBSkJ2K1lHRUk0Q0N3MEFJQUFnQVNBQ1FRSVFqd2dMRHdBZ0FDQUJJQUpCenVjR0VJNENDdzBBSUFBZ0FTQUNRUUVRandnTER3QWdBQ0FCSUFKQmgrZ0dFSTRDQzNNQkFuOGpBRUVRYXlJQUpBQUNRQ0FCSUFJb0FnUWlCRUh3aFJCSEJIOGdCRUdZcmhKSERRRWdBaWdDR0EwQklBSW9BaHdGSUFJTEVLc0NJZ0pGQkVBTUFRc2dBQ0FDTmdJTUlBRW9BZ0FoQVNBQVFRQTJBZ2dnQVNBQVFRaHFJQUJCREdvUWtSRWhBd3NnQUVFUWFpUUFJQU1MQ3dBZ0FFR0J3d0lRRkJvTFZRRUNmeU1BUVJCcklnQWtBQUpBSUFJb0FnUWlCRUh3aFJCSEJFQWdCRUg0cmhKSERRRWdBaWdDR0VFQlJ3MEJDeUFCS0FJQUlRRWdBRUVCTmdJTUlBRWdBRUVNYWhEOUN5RURDeUFBUVJCcUpBQWdBd3NMQUNBQVFaem1BUkFVR2d0U0FRSi9Jd0JCRUdzaUFDUUFBa0FnQWlnQ0JDSUVRZkNGRUVjRVFDQUVRZml1RWtjTkFTQUNLQUlZRFFFTElBRW9BZ0FoQVNBQVFRQTJBZ3dnQVNBQVFReHFFUDBMSVFNTElBQkJFR29rQUNBREN3OEFJQUFnQVNBQ1FlVG1CaENPQWd1c0FRRUNmeU1BUVNCcklnQWtBQUpBSUFFZ0FpZ0NCQ0lFUWZDRkVFY0VmeUFFUVpDaUVrY05BU0FDS0FJY0tBSUVRYWlqRWtjTkFTQUNLQUlZQlNBQ0N4Q3JBaUlDUlFSQURBRUxJQUFnQWpZQ0hDQUFJQUVvQWdBaUFSQ0RIallDR0NBQVFRQTJBaFFnQUVFQU5nSVFJQUJCQURZQ0RDQUFRUUEyQWdnZ0FTQUFRUnhxSUFCQkdHb2dBRUVVYWlBQVFSQnFJQUJCREdvZ0FFRUlhaENtSHlFREN5QUFRU0JxSkFBZ0F3c1BBQ0FBSUFFZ0FrR242QVlRamdJTFh3RUJmeU1BUVJCcklnQWtBQUovUVFBZ0FTQUNLQUlFSWdOQjhJVVFSd1IvUVFBZ0EwSHdwQkpIRFFFYUlBSW9BaGdGSUFJTEVLc0NJZ0pGRFFBYUlBQWdBallDRENBQktBSUFJQUJCREdvUS94MExJUUVnQUVFUWFpUUFJQUVMc2dFQkJuOGpBRUdBQVdzaUFTUUFJQUZCOEFCcUlnTWdBaER0QkNBQlFlQUFhaUlFSUFJUTdnUWdBVUhRQUdvaUJTQUNFTzBFSUFGQmx1Y0dJQU1ReEFFZ0FVRVFhaUlDSUFGQjlPME1FQzBnQVVFZ2FpSUdJQUlnQkJCT0lBRkJNR29pQnlBR1FmVHREQkF0SUFGQlFHc2lDQ0FISUFVUVRpQUFJQWhCaStZR0VDMGdDQkFQR2lBSEVBOGFJQVlRRHhvZ0FoQVBHaUFCRUE4YUlBVVFEeG9nQkJBUEdpQURFQThhSUFGQmdBRnFKQUFMaGdJQ0EzNENmeU1BUVRCcklnQWtBQUpBSUFBQ2ZpQUNLQUlFSWdkQjhJVVFSZ1JBUW9DQWdJQWdEQUVMSUFkQjJLd1NSdzBCSUFJMUFpQWhCU0FDTlFJY0lRTWdBaWdDR0NFQ1FvQ0FnSUFRQ3lJRUlBT0VJZ00zQXhnZ0FDQUROd01JSUFCQklHb2dBU0FBUVFocUVLOEVJQUFwQXlBaUEwS0FnSUNBY0lOQ2dJQ0FnQkJTRFFBZ0FTQUNFS3NDSWdKRkRRQWdBQ0FFSUFXRUlnUTNBeEFnQUNBRU53TUFJQUJCSUdvZ0FTQUFFSzhFSUFBcEF5QWlCRUtBZ0lDQWNJTkNnSUNBZ0JCU0RRQWdBQ0FDTmdJZ0lBRW9BZ0FoQVNBQUlBTStBaXdnQUNBRVBnSW9JQUVnQUVFZ2FpQUFRU3hxSUFCQktHb1FraEVoQmdzZ0FFRXdhaVFBSUFZTG1nRUJCSDhqQUVIQUFXc2lBU1FBSUFGQnNBRnFJZ01nQWhEdEJDQUJRYUFCYWlJRUlBSVE3UVFnQVVHUUFXb2lCU0FDRU80RUlBRVFTU0lHUVFocUlnSkJpZnNBRUE0YUlBSWdBeEFTR2lBQ1Fkb25FQTRhSUFJZ0JCQVNHaUFDUWRycEJoQU9HaUFDSUFVUUVob2dBa0dMNWdZUURob2dBQ0FHUVF4cUVFSWdCaEJSSUFVUUR4b2dCQkFQR2lBREVBOGFJQUZCd0FGcUpBQUxLQUJCMExNZ1FaZVhDQkFPRU9JQkdrSGcrQXhCa0FRUW9CWkIwTE1nUWM3b0J4QU9FT0lCR2dzTGhwWVkzU0lBUVlBSUM3WDFESDRBZlFCOGZBQWdld0I0ZVhvQVkzUjZBR05zZWdCNGVRQTZJR2wwSUdseklHVnRjSFI1QUcxaGJHWnZjbTFsWkNCVFVFbFNMVllnWkdWamIzSmhkR2x2YmpvZ2FYUW5jeUJsYlhCMGVRQlBjR1Z1UTB3dVJHVmlkV2RKYm1adkxqRXdNQ0JrWldKMVp5QnBiWEJ2Y25SbFpDQmxiblJwZEhrQVJHVmlkV2RKYlhCdmNuUmxaRVZ1ZEdsMGVRQlRZV0Z5YkdGdVpDQlZibWwyWlhKemFYUjVBRWx1ZEdWdWMybDBlUUJUVUZaZlJWaFVYMlp5WVdkdFpXNTBYMmx1ZG05allYUnBiMjVmWkdWdWMybDBlUUJuWm5ndGNuTWdZMjl0YlhWdWFYUjVBRk53ZGtkbGJsUjNieUJqYjIxdGRXNXBkSGtBYVc1bWFXNXBkSGtBWkdWeWFYWmhkR2wyWlY5MWJtbG1iM0p0YVhSNUFIVnVhR0Z1Wkd4bFpDQnpiM1Z5WTJVZ2IyWWdibTl1TFhWdWFXWnZjbTFwZEhrQVNXNXpkSEoxWTNScGIyNGdZMkZ1Ym05MElHWnZjaUJzYjJkcFkyRnNJR0ZrWkhKbGMzTnBibWNnYlc5a1pXd2dZbVVnZFhObFpDQjNhWFJvYjNWMElHRWdkbUZ5YVdGaWJHVWdjRzlwYm5SbGNuTWdZMkZ3WVdKcGJHbDBlUUFnY21WeGRXbHlaWE1nWVNCMllYSnBZV0pzWlNCd2IybHVkR1Z5Y3lCallYQmhZbWxzYVhSNUFFOXdVSFJ5UVdOalpYTnpRMmhoYVc0Z1FtRnpaU0J2Y0dWeVlXNWtJSEJ2YVc1MGFXNW5JSFJ2SUZkdmNtdG5jbTkxY0NCemRHOXlZV2RsSUdOc1lYTnpJRzExYzNRZ2RYTmxJRlpoY21saFlteGxVRzlwYm5SbGNuTWdZMkZ3WVdKcGJHbDBlUUE2SURZMExXSnBkQ0JoZEc5dGFXTnpJSEpsY1hWcGNtVWdkR2hsSUVsdWREWTBRWFJ2YldsamN5QmpZWEJoWW1sc2FYUjVBRTl3VUhSeVFXTmpaWE56UTJoaGFXNGdRbUZ6WlNCdmNHVnlZVzVrSUhCdmFXNTBhVzVuSUhSdklGTjBiM0poWjJWQ2RXWm1aWElnYzNSdmNtRm5aU0JqYkdGemN5QnRkWE4wSUhWelpTQldZWEpwWVdKc1pWQnZhVzUwWlhKeklHOXlJRlpoY21saFlteGxVRzlwYm5SbGNuTlRkRzl5WVdkbFFuVm1abVZ5SUdOaGNHRmlhV3hwZEhrQUlISmxjWFZwY21WeklGTm9ZV1JsY2lCallYQmhZbWxzYVhSNUFDQnlaWEYxYVhKbGN5QkxaWEp1Wld3Z1kyRndZV0pwYkdsMGVRQWdjM1J2Y21GblpTQmpiR0Z6Y3lCeVpYRjFhWEpsY3lCaGJpQmhaR1JwZEdsdmJtRnNJR05oY0dGaWFXeHBkSGtBT2lCbWJHOWhkQ0J0YVc0dmJXRjRJR0YwYjIxcFkzTWdjbVZ4ZFdseVpTQjBhR1VnUVhSdmJXbGpSbXh2WVhReE5rMXBiazFoZUVWWVZDQmpZWEJoWW1sc2FYUjVBRG9nWm14dllYUWdiV2x1TDIxaGVDQmhkRzl0YVdOeklISmxjWFZwY21VZ2RHaGxJRUYwYjIxcFkwWnNiMkYwTmpSTmFXNU5ZWGhGV0ZRZ1kyRndZV0pwYkdsMGVRQTZJR1pzYjJGMElHMXBiaTl0WVhnZ1lYUnZiV2xqY3lCeVpYRjFhWEpsSUhSb1pTQkJkRzl0YVdOR2JHOWhkRE15VFdsdVRXRjRSVmhVSUdOaGNHRmlhV3hwZEhrQU9pQm1iRzloZENCaFpHUWdZWFJ2YldsamN5QnlaWEYxYVhKbElIUm9aU0JCZEc5dGFXTkdiRzloZERZMFFXUmtSVmhVSUdOaGNHRmlhV3hwZEhrQU9pQm1iRzloZENCaFpHUWdZWFJ2YldsamN5QnlaWEYxYVhKbElIUm9aU0JCZEc5dGFXTkdiRzloZERNeVFXUmtSVmhVSUdOaGNHRmlhV3hwZEhrQVZuVnNhMkZ1VFdWdGIzSjVUVzlrWld4RVpYWnBZMlZUWTI5d1pVdElVaUJqWVhCaFltbHNhWFI1QUNCeVpYRjFhWEpsY3lCMGFHVWdWbVZqZEc5eU1UWWdZMkZ3WVdKcGJHbDBlUUJEWVhCaFltbHNhWFI1QUdScGJXVnVjMmx2Ym1Gc2FYUjVBRWRsYjIxbGRISjVBRWxCWkdSRFlYSnllUUJEYjNCNVRXVnRiM0o1QUU5MWRIQjFkRTFsYlc5eWVRQkJkRzl0YVdORGIzVnVkR1Z5VFdWdGIzSjVBRU55YjNOelYyOXlhMmR5YjNWd1RXVnRiM0o1QUZOMVltZHliM1Z3VFdWdGIzSjVBRlZ1YVdadmNtMU5aVzF2Y25rQVNXMWhaMlZOWlcxdmNua0FVMUJXWDB0SVVsOXlZWGxmY1hWbGNua0FTVzFoWjJWUmRXVnllUUJHWldKeWRXRnllUUJLWVc1MVlYSjVBRWR5YjNWd1FYTjVibU5EYjNCNUFHMWhibmtBUjNKdmRYQkJibmtBUjNKdmRYQk9iMjVWYm1sbWIzSnRRVzU1QUhScGJuUTZPbkpsYzI5c2RtVnlPanBCYm5rQVNuVnNlUUJPYjI1VFpXMWhiblJwWXk1RGJITndkbEpsWm14bFkzUnBiMjRnYVcxd2IzSjBJR1J2WlhNZ2JtOTBJR1Z1WTI5a1pTQjBhR1VnZG1WeWMybHZiaUJqYjNKeVpXTjBiSGtBSUhOMGIzSmhaMlVnWTJ4aGMzTWdhWE1nY21WaFpDMXZibXg1QUZOb1lXUmxjbEpsWTI5eVpFSjFabVpsY2t0SVVpQlRkRzl5WVdkbElFTnNZWE56SUhaaGNtbGhZbXhsY3lCaGNtVWdjbVZoWkNCdmJteDVBRmR5YVhSbFQyNXNlUUJTWldGa1QyNXNlUUJSZFdWMVpVWmhiV2xzZVFCVFVGWmZTVTVVUlV4ZmFXNXNhVzVsWDJGemMyVnRZbXg1QUdSd1pIa0FaR2x6WVdKc1pWOTJZV3hwWkdGMGFXOXVYMTltZFc1amRHbHZibDlvWVhOZmJtOWZZbTlrZVFBZ2FHRnpJRzV2SUdKdlpIa0FRMkZ1Ym05MElHUmxZMnhoY21VZ1lTQm1kVzVqZEdsdmJpQnBiaUJoSUdaMWJtTjBhVzl1SUdKdlpIa0FSblZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlJR2x1YzNSeWRXTjBhVzl1Y3lCdGRYTjBJR0psSUdsdUlHRWdablZ1WTNScGIyNGdZbTlrZVFCTVlXSmxiQ0JwYm5OMGNuVmpkR2x2Ym5NZ2JYVnpkQ0JpWlNCcGJpQmhJR1oxYm1OMGFXOXVJR0p2WkhrQVJuVnVZM1JwYjI0Z1pXNWtJR2x1YzNSeWRXTjBhVzl1Y3lCdGRYTjBJR0psSUdsdUlHRWdablZ1WTNScGIyNGdZbTlrZVFCemQybDBZMmdnWW05a2VRQmtaSGtBVTJGaGNteGhibVFnVlc1cGRtVnljMmwwZVNCVGFHRmtlUUJFVUdSNUFGTndZWEp6WlZKbGMybGtaVzVqZVFCSmJuQjFkRXhwYm1WelFXUnFZV05sYm1ONUFFbHVjSFYwVkhKcFlXNW5iR1Z6UVdScVlXTmxibU41QUdseklHNXZkQ0J6ZEhKMVkzUjFjbUZzYkhrZ2NHOXpkQ0JrYjIxcGJtRjBaV1FnWW5rQVUxQldYMGxPVkVWTVgzWmhjbWxoWW14bFgyeGxibWQwYUY5aGNuSmhlUUIwWlhoMGRYSmxYMlJsY0hSb1gyTjFZbVZmWVhKeVlYa0FkR1Y0ZEhWeVpWOWpkV0psWDJGeWNtRjVBSFJsZUhSMWNtVmZaR1Z3ZEdoZk1tUmZZWEp5WVhrQWRHVjRkSFZ5WlY4eVpGOWhjbkpoZVFCMFpYaDBkWEpsWDNOMGIzSmhaMlZmTW1SZllYSnlZWGtBSUdOaGJtNXZkQ0JpWlNCMWMyVmtJR0Z6SUdGdUlHVnNaVzFsYm5RZ2RIbHdaU0J2WmlCaGJpQmhjbkpoZVFCMGJ5QjBhR1VnYm5WdFltVnlJRzltSUdWc1pXMWxiblJ6SUc5bUlGSmxjM1ZzZENCVWVYQmxJR0Z5Y21GNUFIUjVjR1VnVW1WemRXeDBJRlI1Y0dVZ1lYSnlZWGtBWTJGdWJtOTBJR052Ym5OMGNuVmpkQ0JoSUhKMWJuUnBiV1V0YzJsNlpXUWdZWEp5WVhrQVlXNGdZWEp5WVhrZ1pXeGxiV1Z1ZENCMGVYQmxJR05oYm01dmRDQmpiMjUwWVdsdUlHRWdjblZ1ZEdsdFpTMXphWHBsWkNCaGNuSmhlUUJEWVc1dWIzUWdiRzloWkNCaElISjFiblJwYldVdGMybDZaV1FnWVhKeVlYa0FVblZ1ZEdsdFpVUmxjMk55YVhCMGIzSkJjbkpoZVFCaGNuSmhlVjlwYm5OMExUNXZjR052WkdVb0tTQTlQU0J6Y0hZNk9rOXdPanBQY0ZSNWNHVkJjbkpoZVFCRVpXSjFaMVI1Y0dWQmNuSmhlUUJXWVd4cFpHRjBaVlI1Y0dWQmNuSmhlUUJVZVhCbFVuVnVkR2x0WlVGeWNtRjVBRWx0WVdkbFEzVmlaVUZ5Y21GNUFGTmhiWEJzWldSRGRXSmxRWEp5WVhrQWRHbHVkRG82ZEhKaGJuTm1iM0p0T2pwRVpXTnZiWEJ2YzJWVGRISnBaR1ZrUVhKeVlYa0FTVzFoWjJWTlUwRnljbUY1QUhScGJuUTZPbkpsWVdSbGNqbzZjM0JwY25ZNk9rRnljbUY1QUhScGJuUTZPblI1Y0dVNk9rRnljbUY1QUVOdlpHVndiR0Y1QUZSb2RYSnpaR0Y1QUZSMVpYTmtZWGtBVjJWa2JtVnpaR0Y1QUZOaGRIVnlaR0Y1QUZOMWJtUmhlUUJOYjI1a1lYa0FSbkpwWkdGNUFFMWhlUUFsYlM4bFpDOGxlUUJUVUZaZlRsWmZZMjl2Y0dWeVlYUnBkbVZmYldGMGNtbDRBR1Y0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR0VnYzNGMVlYSmxJRzFoZEhKcGVBQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGZ2dkRzhnWW1VZ1lTQnpjWFZoY21VZ2JXRjBjbWw0QUhSdklIUm9aU0J1ZFcxaVpYSWdiMllnWTI5c2RXMXVjeUJ2WmlCU1pYTjFiSFFnVkhsd1pTQnRZWFJ5YVhnQWRIbHdaU0JTWlhOMWJIUWdWSGx3WlNCdFlYUnlhWGdBVFdGMGNtbDRWR2x0WlhOTllYUnlhWGdBVm1WamRHOXlWR2x0WlhOTllYUnlhWGdBUlhod1pXTjBaV1FnVFdGMGNtbDRJSFJ2SUdKbElHOW1JSFI1Y0dVZ1QzQlVlWEJsVFdGMGNtbDRBRVJsWW5WblZIbHdaVTFoZEhKcGVBQjBhVzUwT2pwMGNtRnVjMlp2Y20wNk9rUmxZMjl0Y0c5elpWTjBjbWxrWldSTllYUnlhWGdBZEdsdWREbzZjbVZoWkdWeU9qcHpjR2x5ZGpvNlRXRjBjbWw0QUhScGJuUTZPblI1Y0dVNk9rMWhkSEpwZUFCM2FHVnVJR05oYkdOMWJHRjBhVzVuSUcxcGVBQkpUV2w0QUVaTmFYZ0FkbVZ5ZEdWNEFFVnRhWFJXWlhKMFpYZ0FSVzFwZEZOMGNtVmhiVlpsY25SbGVBQkNZWE5sVm1WeWRHVjRBR0Z5Y21GNVgybHVaR1Y0QUhabGNuUmxlRjlwYm1SbGVBQnNiMk5oYkY5cGJuWnZZMkYwYVc5dVgybHVaR1Y0QUhOaGJYQnNaVjlwYm1SbGVBQnBibk4wWVc1alpWOXBibVJsZUFCcExUNU9kVzFKYms5d1pYSmhibVJYYjNKa2N5Z3BJRDRnYjNCbGNtRnVaRjlwYm1SbGVBQm5iRjlXWlhKMFpYaEpibVJsZUFCV2FXVjNTVzVrWlhnQVJISmhkMGx1WkdWNEFGTm9ZV1JsY2xacFpYZHdiM0owU1c1a1pYaE1ZWGxsY2tWWVZDQnZjaUJUYUdGa1pYSldhV1YzY0c5eWRFbHVaR1Y0QUdkc1gxWnBaWGR3YjNKMFNXNWtaWGdBU1c1d2RYUkJkSFJoWTJodFpXNTBTVzVrWlhnQVoyeGZURzlqWVd4SmJuWnZZMkYwYVc5dVNXNWtaWGdBWjJ4ZlNXNXpkR0Z1WTJWSmJtUmxlQUJFWlhacFkyVkpibVJsZUFCa2NHUjRBR1JrZUFCRVVHUjRBR1JsWTI5eVlYUnBiMjR0UG5OMGNuVmpkRjl0WlcxaVpYSmZhVzVrWlhnb0tTQTlQU0FvYVc1MEtXeGhjM1JKWkhnQVpHVmpiM0poZEdsdmJpMCtjM1J5ZFdOMFgyMWxiV0psY2w5cGJtUmxlQ2dwSUQwOUlDaHBiblFwYldWdFltVnlTV1I0QUZOUVZsOUJUVVJmYzJoaFpHVnlYM1J5YVc1aGNubGZiV2x1YldGNEFHWnRZWGdBZFY5dFlYZ0FjMTl0WVhnQVUxQldYMFZZVkY5emFHRmtaWEpmWVhSdmJXbGpYMlpzYjJGMFgyMXBibDl0WVhnQVlYUnZiV2xqVFdGNEFFZHliM1Z3VlUxaGVBQkhjbTkxY0U1dmJsVnVhV1p2Y20xVlRXRjRBRUYwYjIxcFkxVk5ZWGdBUjNKdmRYQlRUV0Y0QUVkeWIzVndUbTl1Vlc1cFptOXliVk5OWVhnQVFYUnZiV2xqVTAxaGVBQk9UV0Y0QUVkeWIzVndSazFoZUFCSGNtOTFjRTV2YmxWdWFXWnZjbTFHVFdGNEFGSjRBRkpIZUFCelVrZENlQUF0S3lBZ0lEQllNSGdBYzNSeWRXTjBJRzFsYldKbGNpQnZabVp6WlhRZ0tEQjRBSE4wY25WamRDQnphWHBsSUNnd2VBQmhjbkpoZVNCaWVYUmxJSE5wZW1VZ0tEQjRBQzB3V0Nzd1dDQXdXQzB3ZUNzd2VDQXdlQUFwSUcxMWMzUWdibTkwSUdWNFkyVmxaQ0F3ZUFBZ095QXdlQUJwYm5aaGJHbGtJRzFwZUdsdVp5QnZaaUIyWldOMGIzSWdjM2RwZW5wc1pTQmphR0Z5WVdOMFpYSnpJSEpuWW1FZ2QybDBhQ0I0ZVhwM0FIcDVkd0JKVTNWaVFtOXljbTkzQUhCdmR3QlRVRlpmUzBoU1gzTjFZbWR5YjNWd1gzVnVhV1p2Y20xZlkyOXVkSEp2YkY5bWJHOTNBQ2NnYlhWemRDQnZibXg1SUdKbElHTmhiR3hsWkNCbWNtOXRJSFZ1YVdadmNtMGdZMjl1ZEhKdmJDQm1iRzkzQUhScGJuUTZPblJ5WVc1elptOXliVG82Vlc1emFHRmtiM2NBVUc5M0FGTlFWbDlMU0ZKZmJYVnNkR2wyYVdWM0FFMTFiSFJwVm1sbGR3Qm1aWGNBVm1WeWRHVjRUM0prWlhKRFkzY0FWbVZ5ZEdWNFQzSmtaWEpEZHdCSGIyOW5iR1VnY25Od2FYSjJBRWR2YjJkc1pTQkRiSE53ZGdCT2IzWUFjM0IyVm1WeWMybHZia1p2Y2xSaGNtZGxkRVZ1ZGdCemNIWk1iMmRUZEhKcGJtZEdiM0pGYm5ZQWMzQjJTWE5XZFd4cllXNUZibllBYzNCMlNYTlBjR1Z1UjB4RmJuWUFjM0IyU1hOUGNHVnVRMHhGYm5ZQVZVUnBkZ0JUUkdsMkFFWkVhWFlBUTI5dWMzUjFBRlJvZFFCMlpXTTBkUUIyWldNemRRQjJaV015ZFFCYVpYaDBBRlJsZUhRQVUyVjRkQUJPWlhoMEFDY2diV0Y1SUhCeWIyUjFZMlVnWVNCdWIyNHRkVzVwWm05eWJTQnZkWFJ3ZFhRQWMzUnZjbUZuWlNCamJHRnpjeUJ0ZFhOMElHSmxJRWx1Y0hWMElHOXlJRTkxZEhCMWRBQnBibkIxZEFBc0lHbHVhWFJwWVd4cGVtVnlJR0Z5WlNCdWIzUWdZV3hzYjNkbFpDQm1iM0lnU1c1d2RYUUFjM1J2Y21GblpTQmpiR0Z6Y3lCdGRYTjBJR0psSUVsdWNIVjBBR1Y0Y0dWamRHVmtJRWx1ZEdWeWNHOXNZVzUwSUhOMGIzSmhaMlVnWTJ4aGMzTWdkRzhnWW1VZ1NXNXdkWFFBVTFCV1gwdElVbDkzYjNKclozSnZkWEJmYldWdGIzSjVYMlY0Y0d4cFkybDBYMnhoZVc5MWRBQmphSEp2YldsMWJWOXBiblJsY201aGJGOXlaV3hoZUdWa1gzVnVhV1p2Y20xZmJHRjViM1YwQUdOb1pXTnJUR0Y1YjNWMEFGSmhlV0Z1SUVoaGRHOTFkQUJmWDI5MWRBQkJkV2QxYzNRQWNtaHpMbVpwY25OMEFHeG9jeTVtYVhKemRBQkhjbTkxY0U1dmJsVnVhV1p2Y20xQ2NtOWhaR05oYzNSR2FYSnpkQUJRYkhWelZXTnZibk4wQUVWMllXeEpiblF6TWtsbVEyOXVjM1FBZEdsdWREbzZZWE4wT2pwRGIyNXpkQUJoY25KaGVWOXBibk4wQUdsdGNHOXlkRjlwYm5OMEFHeGxibWQwYUY5amIyNXpkR0Z1ZEY5cGJuTjBBSE4wY25WamRGOXBibk4wQUcxaGRGOXBibk4wQUhKbGMzVnNkRjkwZVhCbFgybHVjM1FBY21WMGRYSnVYM1I1Y0dWZmFXNXpkQUJ6WVcxd2JHVmtYMmx0WVdkbFgzUjVjR1ZmYVc1emRBQjJaV05mYVc1emRBQldZV3hwWkdGMFpVVjRkRWx1YzNRQVZXNXJibTkzYmlCRmVIUkpibk4wQUN3Z1luVjBJR1J2WlhNZ2JtOTBJR2x0YldWa2FXRjBaV3g1SUhCeVpXTmxaR1VnYVhRZ2FXNGdkR2hsSUU5d1UzZHBkR05vSjNNZ2RHRnlaMlYwSUd4cGMzUUFVbVZ0YjNabFJuSnZiVXhwYzNRQVRtVmhjbVZ6ZEFBbklHTmhibTV2ZENCaVpTQmlhWFJqWVhOMEFFSnBkR05oYzNRQVIzSnZkWEJDY205aFpHTmhjM1FBUjNKdmRYQk9iMjVWYm1sbWIzSnRRbkp2WVdSallYTjBBRWR5YjNWd1RtOXVWVzVwWm05eWJWRjFZV1JDY205aFpHTmhjM1FBUm1GemRBQm9ZV3htWDNKemNYSjBBRzVoZEdsMlpWOXljM0Z5ZEFCb1lXeG1YM054Y25RQWJtRjBhWFpsWDNOeGNuUUFkMmhsYmlCallXeGpkV3hoZEdsdVp5QnBiblpsY25ObFUzRnlkQUJKYm5abGNuTmxVM0Z5ZEFCVFVGWmZSVmhVWDNOb1lXUmxjbDl6ZEdWdVkybHNYMlY0Y0c5eWRBQkZlSEJ2Y25RQVRYVnNkR2xXYVdWM2NHOXlkQUJCY21kSmJtWnZJRzExYzNRZ1ltVWdabkp2YlNCMGFHVWdjMkZ0WlNCbGVIUmxibVJsWkNCcGJuTjBjblZqZEdsdmJpQnBiWEJ2Y25RQVMyVnlibVZzSUcxMWMzUWdZbVVnWm5KdmJTQjBhR1VnYzJGdFpTQmxlSFJsYm1SbFpDQnBibk4wY25WamRHbHZiaUJwYlhCdmNuUUFSWGgwU1c1emRFbHRjRzl5ZEFCemFHOXlkQUJwYm1OdmJuTnBjM1JsYm5RZ2RHRnlaMlYwSUhOMGNuVmpkQ0J0WlcxaVpYSWdkSGx3WlhNZ1ptOXlJRk53YkdGMFEyOXVkbVZ5ZEFCVlEyOXVkbVZ5ZEFCVFEyOXVkbVZ5ZEFCR1EyOXVkbVZ5ZEFCamIyNXpkRjloYzNObGNuUUFkR2x1ZERvNllYTjBPanBEYjI1emRFRnpjMlZ5ZEFCdmNHTnZaR1VnUFQwZ2MzQjJPanBQY0RvNlQzQkRiMjF3YjNOcGRHVkZlSFJ5WVdOMElIeDhJRzl3WTI5a1pTQTlQU0J6Y0hZNk9rOXdPanBQY0VOdmJYQnZjMmwwWlVsdWMyVnlkQUJDYVhSR2FXVnNaRWx1YzJWeWRBQmpZbkowQUV4cFptVjBhVzFsVTNSaGNuUUFhSGx3YjNRQUlHbHpJRzV2ZEFCSVlYTm9iV0Z3UW1GelpUbzZVSFYwS0NrZ2JHOXZjR1ZrSUdWdWRHbHlaU0J0WVhBZ2QybDBhRzkxZENCbWFXNWthVzVuSUdFZ2MyeHZkQUJJWVhOb2JXRndRbUZ6WlRvNlNXNWtaWGhQWmlncElHeHZiM0JsWkNCbGJuUnBjbVVnYldGd0lIZHBkR2h2ZFhRZ1ptbHVaR2x1WnlCaElITnNiM1FBVTFCV1gwdElVbDl6YUdGa1pYSmZZbUZzYkc5MEFGTlFWbDlCVFVSZmMyaGhaR1Z5WDJKaGJHeHZkQUJIY205MWNFNXZibFZ1YVdadmNtMUNZV3hzYjNRQVIzSnZkWEJPYjI1VmJtbG1iM0p0U1c1MlpYSnpaVUpoYkd4dmRBQjNhR1Z1SUdOaGJHTjFiR0YwYVc1bklHUnZkQUJNYjJkcFkyRnNUbTkwQUZOVlJHOTBBRk5FYjNRQWNHOXdZMjkxYm5RQVkyRnVibTkwSUdOdmJuTjBjblZqZENCaGJpQmhjbkpoZVNCMGFHRjBJR2hoY3lCaGJpQnZkbVZ5Y21sa1pTMWxlSEJ5WlhOemFXOXVJR052ZFc1MEFIUnBiblE2T25SNWNHVTZPa052Ym5OMFlXNTBRWEp5WVhsRGIzVnVkQUIwYVc1ME9qcDBlWEJsT2pwU2RXNTBhVzFsUVhKeVlYbERiM1Z1ZEFCMGFXNTBPanB6WlcwNk9sVnVibUZ0WldSUGRtVnljbWxrWlVGeWNtRjVRMjkxYm5RQWRHbHVkRG82YzJWdE9qcE9ZVzFsWkU5MlpYSnlhV1JsUVhKeVlYbERiM1Z1ZEFCMGFXNTBPanAwZVhCbE9qcEJjbkpoZVVOdmRXNTBBRWR5YjNWd1RtOXVWVzVwWm05eWJVSmhiR3h2ZEVKcGRFTnZkVzUwQUVkbGRFdGxjbTVsYkV4dlkyRnNVMmw2WlVadmNsTjFZbWR5YjNWd1EyOTFiblFBUjJWMFMyVnlibVZzVGtSeVlXNW5aVk4xWWtkeWIzVndRMjkxYm5RQVVHVmxiRU52ZFc1MEFGQmhjblJwWVd4RGIzVnVkQUJEYjIxd2IyNWxiblFnUTI5MWJuUUFWbVZqZEc5eUlFTnZkVzUwQUdaeWIyNTBBSEpuWW1FNGRXbHVkQUJ5WjJKaE1UWjFhVzUwQUhJek1uVnBiblFBY21jek1uVnBiblFBY21kaVlUaDFhVzUwTENCeVoySmhNVFoxYVc1MExDQnlNekoxYVc1MExDQnlaek15ZFdsdWRDQnZjaUJ5WjJKaE16SjFhVzUwQUhKblltRTRjMmx1ZEFCeVoySmhNVFp6YVc1MEFISXpNbk5wYm5RQWNtY3pNbk5wYm5RQWNtZGlZVGh6YVc1MExDQnlaMkpoTVRaemFXNTBMQ0J5TXpKemFXNTBMQ0J5WnpNeWMybHVkQ0J2Y2lCeVoySmhNekp6YVc1MEFGTlFWbDlPVmw5emFHRmtaWEpmYVcxaFoyVmZabTl2ZEhCeWFXNTBBR1Z1ZEhKNVgzQnZhVzUwQUZOUVZsOUpUbFJGVEY5aGNtSnBkSEpoY25sZmNISmxZMmx6YVc5dVgyWnNiMkYwYVc1blgzQnZhVzUwQUZOUVZsOUpUbFJGVEY5aGNtSnBkSEpoY25sZmNISmxZMmx6YVc5dVgyWnBlR1ZrWDNCdmFXNTBBQ0JrYjJWeklHNXZkQ0J5WldabGNtVnVZMlVnWVc0Z1pXNTBjbmt0Y0c5cGJuUUFZWE56WlhKMGFXOXVJR1poYVd4bFpEb2dkSGx3WlNCemFHOTFiR1FnYm05MElHSmxJRzUxYkd4d2RISWdZWFFnZEdocGN5QndiMmx1ZEFCRVpXSjFaMFZ1ZEhKNVVHOXBiblFBVEc5allXeFRhWHBsU0dsdWRBQldaV05VZVhCbFNHbHVkQUJoWW5OMGNtRmpkQzFwYm5RQVpYaHdaV04wWldRZ1JtOXliV0YwSUdSaGRHRWdkSGx3WlNCMGJ5QmlaU0E0TFdKcGRDQnBiblFBUTJGd1lXSnBiR2wwZVNCSmJuUTJORWx0WVdkbFJWaFVJR2x6SUhKbGNYVnBjbVZrSUhkb1pXNGdkWE5wYm1jZ1UyRnRjR3hsWkNCVWVYQmxJRzltSURZMExXSnBkQ0JwYm5RQU9pQmxlSEJsWTNSbFpDQlRkV0puY205MWNDQkRiM1Z1ZENCMGJ5QmlaU0JoSURNeUxXSnBkQ0JwYm5RQU9pQmxlSEJsWTNSbFpDQk5aVzF2Y25rZ1UyVnRZVzUwYVdOeklIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRBQTZJR1Y0Y0dWamRHVmtJSE5qYjNCbElIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRBQmtaWFpwWTJWZlpYWmxiblFBUTNKbFlYUmxWWE5sY2tWMlpXNTBBRkpsZEdGcGJrVjJaVzUwQUZKbGJHVmhjMlZGZG1WdWRBQlVlWEJsUlhabGJuUUFWSGx3WlVSbGRtbGpaVVYyWlc1MEFFbHpWbUZzYVdSRmRtVnVkQUJGZUhCbFkzUmxaQ0J6YVc1bmJHVWdZMjl1YzNScGRIVmxiblFBT2lCTlpXMXZjbmtnVTJWdFlXNTBhV056SUdOaGJpQm9ZWFpsSUdGMElHMXZjM1FnYjI1bElHOW1JSFJvWlNCbWIyeHNiM2RwYm1jZ1ltbDBjeUJ6WlhRNklFRmpjWFZwY21Vc0lGSmxiR1ZoYzJVc0lFRmpjWFZwY21WU1pXeGxZWE5sSUc5eUlGTmxjWFZsYm5ScFlXeHNlVU52Ym5OcGMzUmxiblFBT2lCV2RXeHJZVzRnYzNCbFkybG1hV05oZEdsdmJpQnlaWEYxYVhKbGN5Qk5aVzF2Y25rZ1UyVnRZVzUwYVdOeklIUnZJR2hoZG1VZ2IyNWxJRzltSUhSb1pTQm1iMnhzYjNkcGJtY2dZbWwwY3lCelpYUTZJRUZqY1hWcGNtVXNJRkpsYkdWaGMyVXNJRUZqY1hWcGNtVlNaV3hsWVhObElHOXlJRk5sY1hWbGJuUnBZV3hzZVVOdmJuTnBjM1JsYm5RQVZuVnNhMkZ1SUhOd1pXTWdaR2x6WVd4c2IzZHpJRTl3UVhSdmJXbGpURzloWkNCM2FYUm9JRTFsYlc5eWVTQlRaVzFoYm5ScFkzTWdVbVZzWldGelpTd2dRV054ZFdseVpWSmxiR1ZoYzJVZ1lXNWtJRk5sY1hWbGJuUnBZV3hzZVVOdmJuTnBjM1JsYm5RQVZuVnNhMkZ1SUhOd1pXTWdaR2x6WVd4c2IzZHpJRTl3UVhSdmJXbGpVM1J2Y21VZ2QybDBhQ0JOWlcxdmNua2dVMlZ0WVc1MGFXTnpJRUZqY1hWcGNtVXNJRUZqY1hWcGNtVlNaV3hsWVhObElHRnVaQ0JUWlhGMVpXNTBhV0ZzYkhsRGIyNXphWE4wWlc1MEFFMWxiVzl5ZVNCVFpXMWhiblJwWTNNZ2FXUnpJRzExYzNRZ1ltVWdUM0JEYjI1emRHRnVkQ0IzYUdWdUlGTm9ZV1JsY2lCallYQmhZbWxzYVhSNUlHbHpJSEJ5WlhObGJuUUFUV1Z0YjNKNUlGTmxiV0Z1ZEdsamN5QnRkWE4wSUdKbElHRWdZMjl1YzNSaGJuUWdhVzV6ZEhKMVkzUnBiMjRnZDJobGJpQkRiMjl3WlhKaGRHbDJaVTFoZEhKcGVFNVdJR05oY0dGaWFXeHBkSGtnYVhNZ2NISmxjMlZ1ZEFCRGIyaGxjbVZ1ZEFCUVlYSmxiblFBWTJGdWJtOTBJSFJoYTJVZ2RHaGxJR0ZrWkhKbGMzTWdiMllnWVNCMlpXTjBiM0lnWTI5dGNHOXVaVzUwQUVOdmJYQnZibVZ1ZEFCa2FYTmhZbXhsWDNaaGJHbGtZWFJwYjI1ZlgybG5ibTl5WlY5cGJuWmhiR2xrWDNCdmFXNTBaWEpmWVhKbmRXMWxiblFBYVc1MllXeHBaQ0JoYkdsaGMyVmtJSEJ2YVc1MFpYSWdZWEpuZFcxbGJuUUFTVzUyWVd4cFpDQnpkRzl5WVdkbElHTnNZWE56SUdadmNpQjBZWEpuWlhRZ1pXNTJhWEp2Ym0xbGJuUUFSWGh3WldOMFpXUWdRMjl0Y0c5dVpXNTBJRTl3WlhKaGJtUWdkRzhnWW1VZ1lTQmpiMjV6ZENCdlltcGxZM1FnWm05eUlGWjFiR3RoYmlCbGJuWnBjbTl1YldWdWRBQkZlSEJsWTNSbFpDQjBhR1VnU1cxaFoyVWdSbTl5YldGMElHbHVJRWx0WVdkbElIUnZJR0psSUZJMk5Ha3NJRkkyTkhWcExDQlNNekptTENCU016SnBMQ0J2Y2lCU016SjFhU0JtYjNJZ1ZuVnNhMkZ1SUdWdWRtbHliMjV0Wlc1MEFFVjRjR1ZqZEdWa0lGTmhiWEJzWldRZ1ZIbHdaU0IwYnlCaVpTQmhJRE15TFdKcGRDQnBiblFzSURZMExXSnBkQ0JwYm5RZ2IzSWdNekl0WW1sMElHWnNiMkYwSUhOallXeGhjaUIwZVhCbElHWnZjaUJXZFd4cllXNGdaVzUyYVhKdmJtMWxiblFBVTNSdmNtRm5aU0JqYkdGemN5QmpZVzV1YjNRZ1ltVWdSMlZ1WlhKcFl5QnBiaUJQY0dWdVEwd2dNUzR5SUdWdWRtbHliMjV0Wlc1MEFDQnBjeUJ0YVhOemFXNW5JR0VnYkc5allYUnBiMjRnWVhOemFXZHViV1Z1ZEFCblpYUlRZMkZzWVhKQmJHbG5ibTFsYm5RQVoyVjBRbUZ6WlVGc2FXZHViV1Z1ZEFCSmJuQjFkRUYwZEdGamFHMWxiblFBWm5KaFoyMWxiblFBUm5KaFoyMWxiblFBYVc1MllXeHBaQ0JoYzNOcFoyNXRaVzUwSUhOMFlYUmxiV1Z1ZEFCamIyNTBhVzUxYVc1bklHSnNiMk5yY3lCdGRYTjBJRzV2ZENCamIyNTBZV2x1SUdFZ2NtVjBkWEp1SUhOMFlYUmxiV1Z1ZEFCallYTmxJSE4wWVhSbGJXVnVkQ0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJR2x1YzJsa1pTQmhJSE4zYVhSamFDQnpkR0YwWlcxbGJuUUFZMjl1ZEdsdWRXbHVaeUJpYkc5amEzTWdiWFZ6ZENCdWIzUWdZMjl1ZEdGcGJpQmhJR052Ym5ScGJuVmxJSE4wWVhSbGJXVnVkQUJTWlhOdmJIWmxjam82Um5WdVkzUnBiMjRvS1NCallXeHNaV1FnZDJsMGFDQmhJR04xY25KbGJuUWdZMjl0Y0c5MWJtUWdjM1JoZEdWdFpXNTBBSFJwYm5RNk9tRnpkRG82UTI5dGNHOTFibVJCYzNOcFoyNXRaVzUwVTNSaGRHVnRaVzUwQUhScGJuUTZPbUZ6ZERvNlFYTnphV2R1YldWdWRGTjBZWFJsYldWdWRBQjBhVzUwT2pwaGMzUTZPa2x1WTNKbGJXVnVkRVJsWTNKbGJXVnVkRk4wWVhSbGJXVnVkQUIwYVc1ME9qcGhjM1E2T2tadmNreHZiM0JUZEdGMFpXMWxiblFBZEdsdWREbzZjMlZ0T2pwR2IzSk1iMjl3VTNSaGRHVnRaVzUwQUhScGJuUTZPbUZ6ZERvNlRHOXZjRk4wWVhSbGJXVnVkQUIwYVc1ME9qcHpaVzA2T2t4dmIzQlRkR0YwWlcxbGJuUUFkR2x1ZERvNllYTjBPanBTWlhSMWNtNVRkR0YwWlcxbGJuUUFkR2x1ZERvNllYTjBPanBEWVd4c1UzUmhkR1Z0Wlc1MEFIUnBiblE2T21GemREbzZWbUZ5YVdGaWJHVkVaV05zVTNSaGRHVnRaVzUwQUhScGJuUTZPbk5sYlRvNlRHOXZjRUpzYjJOclUzUmhkR1Z0Wlc1MEFIUnBiblE2T25ObGJUbzZSblZ1WTNScGIyNUNiRzlqYTFOMFlYUmxiV1Z1ZEFCMGFXNTBPanB6WlcwNk9reHZiM0JEYjI1MGFXNTFhVzVuUW14dlkydFRkR0YwWlcxbGJuUUFkR2x1ZERvNllYTjBPanBDYkc5amExTjBZWFJsYldWdWRBQjBhVzUwT2pwelpXMDZPa0pzYjJOclUzUmhkR1Z0Wlc1MEFIUnBiblE2T21GemREbzZRbkpsWVd0VGRHRjBaVzFsYm5RQWRHbHVkRG82WVhOME9qcFRkMmwwWTJoVGRHRjBaVzFsYm5RQWRHbHVkRG82YzJWdE9qcFRkMmwwWTJoVGRHRjBaVzFsYm5RQWRHbHVkRG82WVhOME9qcENjbVZoYTBsbVUzUmhkR1Z0Wlc1MEFIUnBiblE2T25ObGJUbzZRbkpsWVd0SlpsTjBZWFJsYldWdWRBQjBhVzUwT2pwaGMzUTZPa2xtVTNSaGRHVnRaVzUwQUhScGJuUTZPbk5sYlRvNlNXWlRkR0YwWlcxbGJuUUFkR2x1ZERvNllYTjBPanBEYjI1MGFXNTFaVk4wWVhSbGJXVnVkQUIwYVc1ME9qcGhjM1E2T2tOaGMyVlRkR0YwWlcxbGJuUUFkR2x1ZERvNmMyVnRPanBEWVhObFUzUmhkR1Z0Wlc1MEFIUnBiblE2T21GemREbzZWMmhwYkdWVGRHRjBaVzFsYm5RQWRHbHVkRG82YzJWdE9qcFhhR2xzWlZOMFlYUmxiV1Z1ZEFCMGFXNTBPanBoYzNRNk9rUnBjMk5oY21SVGRHRjBaVzFsYm5RQWRHbHVkRG82YzJWdE9qcERiMjF3YjNWdVpGTjBZWFJsYldWdWRBQjBhVzUwT2pwaGMzUTZPbE4wWVhSbGJXVnVkQUIwYVc1ME9qcHpaVzA2T2xOMFlYUmxiV1Z1ZEFCcGJtTnlaVzFsYm5RQVFYUnZiV2xqU1VsdVkzSmxiV1Z1ZEFCa1pXTnlaVzFsYm5RQVFYUnZiV2xqU1VSbFkzSmxiV1Z1ZEFCSmJXRm5aVk53WVhKelpWUmxlR1ZzYzFKbGMybGtaVzUwQUhWdWFXWnZjbTFmWTI5dWMzUmhiblFBWTJoeWIyMXBkVzFmWlhod1pYSnBiV1Z1ZEdGc1gzQjFjMmhmWTI5dWMzUmhiblFBWlhod1pXTjBaV1FnYzJOaGJHRnlJR052Ym5OMFlXNTBBRzExYzNRZ1ltVWdZU0J6WTJGc1lYSWdjM0JsWTJsaGJHbDZZWFJwYjI0Z1kyOXVjM1JoYm5RQUlHeGxibWQwYUNCcGN5QmhJSE53WldOcFlXeHBlbUYwYVc5dUlHTnZibk4wWVc1MEFDQnBjeUJ1YjNRZ1lTQmpiMjV6ZEdGdWRBQTZJRU52YlhCdmJtVnVkQ0JEYjNWdWRDQnRkWE4wSUdKbElETXlMV0pwZENCcGJuUmxaMlZ5SUU5d1EyOXVjM1JoYm5RQU9pQldaV04wYjNJZ1EyOTFiblFnYlhWemRDQmlaU0F6TWkxaWFYUWdhVzUwWldkbGNpQlBjRU52Ym5OMFlXNTBBRTlpYW1WamRFOW1abk5sZENCdGRYTjBJR0psSUdFZ016SXRZbWwwSUhWdWMybG5ibVZrSUdsdWRHVm5aWElnVDNCRGIyNXpkR0Z1ZEFCUWIybHVkR1Z5VDJabWMyVjBJRzExYzNRZ1ltVWdZU0F6TWkxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNpQlBjRU52Ym5OMFlXNTBBRVJsYzJOeWFYQjBiM0pUWlhRZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5SUU5d1EyOXVjM1JoYm5RQVRuVnRRWEpuZFcxbGJuUnpJRzExYzNRZ1ltVWdZU0F6TWkxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNpQlBjRU52Ym5OMFlXNTBBRVpzWVdkeklHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ2RXNXphV2R1WldRZ2FXNTBaV2RsY2lCUGNFTnZibk4wWVc1MEFFRnlaM1Z0Wlc1MFUybDZaWE1nYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRTl3UTI5dWMzUmhiblFBUVdSa2NtVnpjMUYxWVd4cFptbGxjaUJ0ZFhOMElHSmxJR0VnTXpJdFltbDBJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSWdUM0JEYjI1emRHRnVkQUJCWTJObGMzTlJkV0ZzYVdacFpYSWdiWFZ6ZENCaVpTQmhJRE15TFdKcGRDQjFibk5wWjI1bFpDQnBiblJsWjJWeUlFOXdRMjl1YzNSaGJuUUFWSGx3WlZGMVlXeHBabWxsY2lCdGRYTjBJR0psSUdFZ016SXRZbWwwSUhWdWMybG5ibVZrSUdsdWRHVm5aWElnVDNCRGIyNXpkR0Z1ZEFCRWFXMGdiWFZ6ZENCaVpTQmhJRE15TFdKcGRDQjFibk5wWjI1bFpDQnBiblJsWjJWeUlFOXdRMjl1YzNSaGJuUUFUM0prYVc1aGJDQnRkWE4wSUdKbElHRWdNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ1QzQkRiMjV6ZEdGdWRBQk5ZWE5ySUcxMWMzUWdZbVVnWVNBek1pMWlhWFFnZFc1emFXZHVaV1FnYVc1MFpXZGxjaUJQY0VOdmJuTjBZVzUwQUVKcGJtUnBibWNnYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRTl3UTI5dWMzUmhiblFBVUc5cGJuUmxjbE5wZW1VZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5SUU5d1EyOXVjM1JoYm5RQVFuVm1abVZ5VTJsNlpTQnRkWE4wSUdKbElHRWdNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ1QzQkRiMjV6ZEdGdWRBQkZiR1Z0VTJsNlpTQnRkWE4wSUdKbElHRWdNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ1QzQkRiMjV6ZEdGdWRBQlRjR1ZqU1dRZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5SUU5d1EyOXVjM1JoYm5RQVdpQnRkWE4wSUdKbElHRWdNekl0WW1sMElIVnVjMmxuYm1Wa0lHbHVkR1ZuWlhJZ1QzQkRiMjV6ZEdGdWRBQlpJRzExYzNRZ1ltVWdZU0F6TWkxaWFYUWdkVzV6YVdkdVpXUWdhVzUwWldkbGNpQlBjRU52Ym5OMFlXNTBBRmdnYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRTl3UTI5dWMzUmhiblFBVUhKcGJuUm1TVVFnYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRTl3UTI5dWMzUmhiblFBSUdSdlpYTWdibTkwSUc1aGJXVWdZVzRnVDNCRGIyNXpkR0Z1ZEFBZ2JYVnpkQ0JpWlNCaElISmxjM1ZzZENCcFpDQnZaaUF6TWkxaWFYUWdkVzV6YVdkdVpXUWdUM0JEYjI1emRHRnVkQUJsZUhCbFkzUmxaQ0JHYjNKdFlYUWdjM1J2Y21GblpTQmpiR0Z6Y3lCMGJ5QmlaU0JWYm1sbWIzSnRRMjl1YzNSaGJuUUFRWEpuZFcxbGJuUlFiMmx1ZEdWeVVIVnphRU52Ym5OMFlXNTBBRkJ5YVc1MFprSjFabVpsY2xCdmFXNTBaWEpRZFhOb1EyOXVjM1JoYm5RQVVISnZaM0poYlZOamIzQmxWbUZ5YVdGaWJHVlFiMmx1ZEdWeVVIVnphRU52Ym5OMFlXNTBBRU52Ym5OMFlXNTBSR0YwWVZCdmFXNTBaWEpRZFhOb1EyOXVjM1JoYm5RQVNXMWhaMlZCY21kMWJXVnVkRWx1Wm05RGFHRnVibVZzVDNKa1pYSlFkWE5vUTI5dWMzUmhiblFBU1cxaFoyVkJjbWQxYldWdWRFbHVabTlEYUdGdWJtVnNSR0YwWVZSNWNHVlFkWE5vUTI5dWMzUmhiblFBUVhKbmRXMWxiblJRYjJSUWRYTm9RMjl1YzNSaGJuUUFRM0psWVhSbFEyOXVjM1JoYm5RQWIzQmpiMlJsSUQwOUlITndkam82VDNBNk9rOXdRMjl1YzNSaGJuUWdmSHdnYjNCamIyUmxJRDA5SUhOd2RqbzZUM0E2T2s5d1UzQmxZME52Ym5OMFlXNTBBSGRvWlc0Z1kyRnNZM1ZzWVhScGJtY2daR1YwWlhKdGFXNWhiblFBUkdWMFpYSnRhVzVoYm5RQWFXNTJZWEpwWVc1MEFFbHVkbUZ5YVdGdWRBQjBhVzUwT2pwMGVYQmxPanBCWW5OMGNtRmpkRWx1ZEFCVFpXeGxZM1J2Y2lCMGVYQmxJRzExYzNRZ1ltVWdUM0JVZVhCbFNXNTBBRWx1ZG1Gc2FXUWdkWE5sSUc5bUlEZ3RJRzl5SURFMkxXSnBkQ0J5WlhOMWJIUUFiM0JqYjJSbFgyVnVkSEo1TFQ1b1lYTlNaWE4xYkhRQVpHVm1ZWFZzZEFCRGIyNTJaWEowVkhsd1pTQmpZV3hzWldRZ2QyaGxiaUIwYUdVZ2FXNTBaWEp1WVd3Z2JXOWtkV3hsSUdoaGN5QnViM1FnWW1WbGJpQmlkV2xzZEFCbWIzSXRiRzl2Y0NCa2IyVnpJRzV2ZENCbGVHbDBBSGRvYVd4bElHUnZaWE1nYm05MElHVjRhWFFBTENCaWRYUWdibTkwSUhacFlTQmhJSE4wY25WamRIVnlaV1FnWlhocGRBQkpjMU4wY25WamRIVnlaV1JGZUdsMEFFUmxZblZuUTI5dGNHbHNZWFJwYjI1VmJtbDBBRlJ2Y201aFpHOVdUU0JUVUVsU1ZpQkNaV1ZvYVhabElGUnZiMnhyYVhRQVIyVnVaWEpwWTBOaGMzUlViMUIwY2tWNGNHeHBZMmwwQUVac1lXZEZlSEJzYVdOcGRBQk9iMWRoYVhRQVptbHljM1JVY21GcGJHbHVaMEpwZEFCbWFYSnpkRXhsWVdScGJtZENhWFFBUkc5MFVISnZaSFZqZEVsdWNIVjBOSGc0UW1sMEFGQmhZMnRsWkZabFkzUnZja1p2Y20xaGREUjRPRUpwZEFCUGNtbG5hVzVNYjNkbGNreGxablFBVDNKcFoybHVWWEJ3WlhKTVpXWjBBSFZ6YVc1bklHWXhOaUIwZVhCbGN5QnBiaUFuY0hWemFGOWpiMjV6ZEdGdWRDY2dZV1JrY21WemN5QnpjR0ZqWlNCcGN5QnViM1FnYVcxd2JHVnRaVzUwWldRZ2VXVjBBR2x1YzNRdFBtNTFiVjkzYjNKa2N5QStJRzl3WlhKaGJtUXViMlptYzJWMEFFTnZibk4wVDJabWMyVjBBRWx1ZEdWeWNHOXNZWFJsUVhSUFptWnpaWFFBVUhWemFFTnZibk4wWVc1MFVtVm5hVzl1UjNKdmRYQlBabVp6WlhRQVVIVnphRU52Ym5OMFlXNTBVbVZuYVc5dVQyWm1jMlYwQUZCMWMyaERiMjV6ZEdGdWRFZHNiMkpoYkU5bVpuTmxkQUJUY0dWalEyOXVjM1JoYm5SSGJHOWlZV3hQWm1aelpYUUFUV0Y0UW5sMFpVOW1abk5sZEFCVGNtVjBBR3hsZEFCallXeHNJSFJoY21kbGRBQWdZbkpoYm1Ob1pYTWdkRzhnYVhSelpXeG1JR0oxZENCcGN5QnViM1FnYVhSeklHOTNiaUJqYjI1MGFXNTFaU0IwWVhKblpYUUFJR0Z6SUdKdmRHZ2dhWFJ6SUcxbGNtZGxJR0pzYjJOcklHRnVaQ0JqYjI1MGFXNTFaU0IwWVhKblpYUUFkR2x1ZERvNmMyVnRPanBEWVd4c1ZHRnlaMlYwQUZOcFoyNUNhWFJUWlhRQVJHVnpZM0pwY0hSdmNsTmxkQUJCZEc5dGFXTkdiR0ZuVkdWemRFRnVaRk5sZEFCMGFXNTBPanBoYzNRNk9reGxkQUJzYjI5d1gyTnZibk4wY25WamRBQmpiMjUwYVc1MVpWOWpiMjV6ZEhKMVkzUUFhVzUwWlhKdVlXd2daWEp5YjNJNklHNWxjM1JsWkNCbWRXNWpkR2x2YmlCamIyNXpkSEoxWTNRQUlHVnpZMkZ3WlhNZ2RHaGxJSE5sYkdWamRHbHZiaUJqYjI1emRISjFZM1FBSUdseklHNXZkQ0JwYmlCaElHTnZiblJwYm5WbElHTnZibk4wY25WamRBQldZV3hwWkdGMFpVTnZiWEJ2YzJsMFpVTnZibk4wY25WamRBQmhJSE4wY25WamRDQjBhR0YwSUdOdmJuUmhhVzV6SUdFZ2NuVnVkR2x0WlNCaGNuSmhlU0JqWVc1dWIzUWdZbVVnYm1WemRHVmtJR2x1YzJsa1pTQmhibTkwYUdWeUlITjBjblZqZEFCMGJ5QjBhR1VnYm5WdFltVnlJRzltSUcxbGJXSmxjbk1nYjJZZ1VtVnpkV3gwSUZSNWNHVWdjM1J5ZFdOMEFHTnZjbkpsYzNCdmJtUnBibWNnYldWdFltVnlJSFI1Y0dVZ2IyWWdVbVZ6ZFd4MElGUjVjR1VnYzNSeWRXTjBBSEoxYm5ScGJXVWdZWEp5WVhseklHMWhlU0J2Ym14NUlHRndjR1ZoY2lCaGN5QjBhR1VnYkdGemRDQnRaVzFpWlhJZ2IyWWdZU0J6ZEhKMVkzUUFRMjl0Y0hWMFpVMWxiV0psY2tOdmJuTjBjbUZwYm5SelJtOXlVM1J5ZFdOMEFFWnlaWGh3VTNSeWRXTjBBRTF2WkdaVGRISjFZM1FBYzNSeWRXTjBYMmx1YzNRdFBtOXdZMjlrWlNncElEMDlJSE53ZGpvNlQzQTZPazl3Vkhsd1pWTjBjblZqZEFCcGJuTjBMbTl3WTI5a1pTZ3BJRDA5SUhOd2RqbzZUM0E2T2s5d1ZIbHdaVk4wY25WamRBQlRkV05vSUhaaGNtbGhZbXhsY3lCdGRYTjBJR0psSUhSNWNHVmtJR0Z6SUU5d1ZIbHdaVk4wY25WamRBQXNJRTl3Vkhsd1pWSjFiblJwYldWQmNuSmhlU0J0ZFhOMElHOXViSGtnWW1VZ2RYTmxaQ0JtYjNJZ2RHaGxJR3hoYzNRZ2JXVnRZbVZ5SUc5bUlHRnVJRTl3Vkhsd1pWTjBjblZqZEFCRmVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCUGNGUjVjR1ZUZEhKMVkzUUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82VTNSeWRXTjBBSFJwYm5RNk9tRnpkRG82VTNSeWRXTjBBSFJwYm5RNk9uTmxiVG82VTNSeWRXTjBBSFJwYm5RNk9uUjVjR1U2T2xOMGNuVmpkQUJUVUZaZlMwaFNYMmx1ZEdWblpYSmZaRzkwWDNCeWIyUjFZM1FBUkc5MFVISnZaSFZqZEFCUGRYUmxjbEJ5YjJSMVkzUUFVbVZ6ZEhKcFkzUUFkMmhsYmlCallXeGpkV3hoZEdsdVp5QnlaV1pzWldOMEFGSmxabXhsWTNRQVltbDBjMlZzWldOMEFGTmxiR1ZqZEFCSGNtOTFjRTV2YmxWdWFXWnZjbTFGYkdWamRBQWdaR1ZqYjNKaGRHbHZiaUJoY0hCc2FXVmtJSFJ2SUdFZ2JtOXVMVzlpYW1WamRBQkZlSEJsWTNSbFpDQkpiV0ZuWlNCUGNHVnlZVzVrSUVOdmJuTjBUMlptYzJWMElIUnZJR0psSUdFZ1kyOXVjM1FnYjJKcVpXTjBBRVY0Y0dWamRHVmtJRWx0WVdkbElFOXdaWEpoYm1RZ1EyOXVjM1JQWm1aelpYUnpJSFJ2SUdKbElHRWdZMjl1YzNRZ2IySnFaV04wQUVOc2IyNWxRMjl1ZEdWNGREbzZVbVZ0YjNabEtDa2dkbVZqZEc5eUlHUnZaWE1nYm05MElHTnZiblJoYVc0Z2IySnFaV04wQUVOdmNIbFBZbXBsWTNRQVNXMWhaMlZTWldOMEFGTmhiWEJzWldSU1pXTjBBRWx0WVdkbElDZEVhVzBuSUcxMWMzUWdZbVVnTVVRc0lFSjFabVpsY2l3Z01rUXNJRU4xWW1Vc0lETkVJRzl5SUZKbFkzUUFSWGh3WldOMFpXUWdTVzFoWjJVZ0owUnBiU2NnY0dGeVlXMWxkR1Z5SUhSdklHSmxJREZFTENBeVJDd2dNMFFnYjNJZ1VtVmpkQUJGZUhCbFkzUmxaQ0JKYldGblpTQW5SR2x0SnlCMGJ5QmlaU0F5UkN3Z1EzVmlaU3dnYjNJZ1VtVmpkQUJIY205MWNFNXZibFZ1YVdadmNtMUNZV3hzYjNSQ2FYUkZlSFJ5WVdOMEFFOXdRMjl0Y0c5emFYUmxSWGgwY21GamRBQkNhWFJHYVdWc1pGVkZlSFJ5WVdOMEFFSnBkRVpwWld4a1UwVjRkSEpoWTNRQVgxOW1jbVY0Y0Y5eVpYTjFiSFJmWVdKemRISmhZM1FBWDE5dGIyUm1YM0psYzNWc2RGOWhZbk4wY21GamRBQmZYMlp5Wlhod1gzSmxjM1ZzZEY5MlpXTTBYMkZpYzNSeVlXTjBBRjlmYlc5a1psOXlaWE4xYkhSZmRtVmpORjloWW5OMGNtRmpkQUJmWDJaeVpYaHdYM0psYzNWc2RGOTJaV016WDJGaWMzUnlZV04wQUY5ZmJXOWtabDl5WlhOMWJIUmZkbVZqTTE5aFluTjBjbUZqZEFCZlgyWnlaWGh3WDNKbGMzVnNkRjkyWldNeVgyRmljM1J5WVdOMEFGOWZiVzlrWmw5eVpYTjFiSFJmZG1Wak1sOWhZbk4wY21GamRBQjNhR1Z1SUdOaGJHTjFiR0YwYVc1bklISmxabkpoWTNRQVVtVm1jbUZqZEFCR2NtRmpkQUJQWTNRQWRWOWhaR1JmYzJGMEFITmZZV1JrWDNOaGRBQjFYMjFoWkY5ellYUUFjMTl0WVdSZmMyRjBBSFZmYzNWaVgzTmhkQUJ6WDNOMVlsOXpZWFFBVTFCV1gwRk5SRjluY0hWZmMyaGhaR1Z5WDJoaGJHWmZabXh2WVhRQWRXNXdZV05yTW5neE5tWnNiMkYwQUhKblltRXhObVpzYjJGMEFISXpNbVpzYjJGMEFISm5NekptYkc5aGRBQmlaM0poT0hWdWIzSnRMQ0J5WjJKaE9IVnViM0p0TENCeVoySmhPSE51YjNKdExDQnlaMkpoTVRabWJHOWhkQ3dnY2pNeVpteHZZWFFzSUhKbk16Sm1iRzloZENCdmNpQnlaMkpoTXpKbWJHOWhkQUJoWW5OMGNtRmpkQzFtYkc5aGRBQkhaWFJHYkc5aGRBQjBhVzUwT2pwMGVYQmxPanBCWW5OMGNtRmpkRVpzYjJGMEFFaGhiR1pHYkc5aGRBQlVlWEJsUm14dllYUUFjR0ZqYTJWa0lIWmxZM1J2Y2lCbWIzSnRZWFFBZEdWNFpXd2dabTl5YldGMEFHbHRZV2RsSUdadmNtMWhkQUJKYldGblpWRjFaWEo1Um05eWJXRjBBRk4wYjNKaFoyVkpiV0ZuWlZkeWFYUmxWMmwwYUc5MWRFWnZjbTFoZEFCVGRHOXlZV2RsU1cxaFoyVlNaV0ZrVjJsMGFHOTFkRVp2Y20xaGRBQmhjbkpmZEc5ZmJXRjBBSFJwYm5RNk9tTnZibk4wWVc1ME9qcFRjR3hoZEFCbWJHRjBBRVpzWVhRQVVtVndaV0YwQUZOVlJHOTBRV05qVTJGMEFGTkViM1JCWTJOVFlYUUFWbUZzYVdSaGRHbHZibE4wWVhSbFgzUUFjR1ZsYTBGMEFFUmxZblZuU1c1c2FXNWxaRUYwQUVsdWJHbHVaV1FnUVhRQVVHVnlWbVZ5ZEdWNFMwaFNJRzExYzNRZ1ltVWdaR1ZqYkdGeVpXUWdZWE1nWVhKeVlYbHpBR3hsWm5SZmJuVnRYM0p2ZDNNZ1BUMGdjbVZ6WDI1MWJWOXliM2R6QUZWdVpYaHdaV04wWldRZ2JuVnRZbVZ5SUc5bUlHMWhkSEpwZUNCeWIzZHpBRk5sZEZWelpYSkZkbVZ1ZEZOMFlYUjFjd0JOYVc1MWN3QlFiSFZ6QUdsdWNIVjBjd0JUVUZaZlFVMUVYM05vWVdSbGNsOWxZWEpzZVY5aGJtUmZiR0YwWlY5bWNtRm5iV1Z1ZEY5MFpYTjBjd0JGWVhKc2VVWnlZV2R0Wlc1MFZHVnpkSE1BVkhKaGRtVnljMkZzVW05dmRITUFZMjl1YzNRdFpYWmhiQ0JqYjI1MlpYSnphVzl1SUc5bUlITjBjblZqZEhWeVpTQm9ZWE1nYldsemJXRjBZMmhsWkNCbGJHVnRaVzUwSUdOdmRXNTBjd0FnYlhWemRDQnlaV1psY2lCdmJteDVJSFJ2SUVkTVEyOXRjSFYwWlNCbGJuUnllUzF3YjJsdWRITUFUM1YwY0hWMFVHOXBiblJ6QUVsdWNIVjBVRzlwYm5SekFHTnZibk4wY21GcGJuUnpBRWR5YjNWd1YyRnBkRVYyWlc1MGN3QmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGTm9kV1ptYkdVZ1RXRnpheUJqYjIxd2IyNWxiblJ6SUhSdklHaGhkbVVnZEdobElITmhiV1VnWW1sMElIZHBaSFJvSUdGeklGSmxjM1ZzZENCVWVYQmxJR052YlhCdmJtVnVkSE1BSUhSb1pTQnpZVzFsSUhSNWNHVWdZWE1nVW1WemRXeDBJRlI1Y0dVZ1kyOXRjRzl1Wlc1MGN3QmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGQWdaR0YwWVNCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklIUm9aU0IwZVhCbElHOW1JRzl3WlhKaGJtUWdSR0YwWVNCamIyMXdiMjVsYm5SekFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdjMk5oYkdGeUlHOXlJR0VnZG1WamRHOXlJSGRwZEdnZ01pd2dNeXdnTkN3Z09DQnZjaUF4TmlCamIyMXdiMjVsYm5SekFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdoaGRtVWdNaXdnTXl3Z05Dd2dPQ0J2Y2lBeE5pQmpiMjF3YjI1bGJuUnpBR1Y0Y0dWamRHVmtJRVJoZEdFZ2RHOGdhR0YyWlNBeUxDQXpMQ0EwTENBNElHOXlJREUySUdOdmJYQnZibVZ1ZEhNQVpYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnYUdGMlpTQXlMQ0EwTENBNElHOXlJREUySUdOdmJYQnZibVZ1ZEhNQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCWUlIUnZJR2hoZG1VZ01pd2dOQ3dnT0NCdmNpQXhOaUJqYjIxd2IyNWxiblJ6QUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR2hoZG1VZ015QnZjaUEwSUdOdmJYQnZibVZ1ZEhNQVpYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnYUdGMlpTQnVieUJ0YjNKbElIUm9ZVzRnTkNCamIyMXdiMjVsYm5SekFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1VDQjBieUJvWVhabElHNXZJRzF2Y21VZ2RHaGhiaUEwSUdOdmJYQnZibVZ1ZEhNQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUU1DQjBieUJvWVhabElHNXZJRzF2Y21VZ2RHaGhiaUEwSUdOdmJYQnZibVZ1ZEhNQUlIUnZJR2hoZG1VZ05DQmpiMjF3YjI1bGJuUnpBR1Y0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHaGhkbVVnTXlCamIyMXdiMjVsYm5SekFFVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdoaGRtVWdNaUJqYjIxd2IyNWxiblJ6QUdOaGJtNXZkQ0JwYm1abGNpQmpiMjF0YjI0Z1lYSnlZWGtnWld4bGJXVnVkQ0IwZVhCbElHWnliMjBnWTI5dWMzUnlkV04wYjNJZ1lYSm5kVzFsYm5SekFDY2daRzlsY3lCdWIzUWdkR0ZyWlNCMFpXMXdiR0YwWlNCaGNtZDFiV1Z1ZEhNQUlHaGhjeUJqYjI1bWJHbGpkR2x1WnlCamIyMXdiMjVsYm5RZ1lYTnphV2R1YldWdWRITUFJR2hoY3lCamIyNW1iR2xqZEdsdVp5QnNiMk5oZEdsdmJpQmhjM05wWjI1dFpXNTBjd0JtYjNJZ2MzUmhkR1Z0Wlc1MGN3QnNiMjl3SUhOMFlYUmxiV1Z1ZEhNQVlteHZZMnNnYzNSaGRHVnRaVzUwY3dCemQybDBZMmdnYzNSaGRHVnRaVzUwY3dCcFppQnpkR0YwWlcxbGJuUnpBSGRvYVd4bElITjBZWFJsYldWdWRITUFkR2x1ZERvNmRISmhibk5tYjNKdE9qcFNaVzF2ZG1WVmJuSmxZV05vWVdKc1pWTjBZWFJsYldWdWRITUFJR1ZzWlcxbGJuUnpBRUoxYVd4MFNXNXpJR05oYmlCdmJteDVJSFJoY21kbGRDQjJZWEpwWVdKc1pYTXNJSE4wY25WamRIVnlaU0J0WlcxaVpYSnpJRzl5SUdOdmJuTjBZVzUwY3dBN0lGUjVjR1Z6TENCMllYSnBZV0pzWlhNZ1lXNWtJR052Ym5OMFlXNTBjd0JTWlhOMWJIUWdkSGx3WlNCamIyMXdiMjVsYm5RZ2QybGtkR2dnYlhWemRDQmlaU0F6TWlCaWFYUnpBR2x1YzJWeWRFSnBkSE1BWlhoMGNtRmpkRUpwZEhNQWNtVjJaWEp6WlVKcGRITUFZMjkxYm5SUGJtVkNhWFJ6QUVOdmJuTjBUMlptYzJWMGN3QkhaWFJOWVhoUWFYQmxVR0ZqYTJWMGN3QkhaWFJPZFcxUWFYQmxVR0ZqYTJWMGN3QkhjbTkxY0ZKbGMyVnlkbVZYY21sMFpWQnBjR1ZRWVdOclpYUnpBRWR5YjNWd1VtVnpaWEoyWlZKbFlXUlFhWEJsVUdGamEyVjBjd0J6WlhSZlkyOXljbVZ6Y0c5dVpHbHVaMTlqYjI1emRISjFZM1J6QUNCMWJuUmxjbTFwYm1GMFpXUWdZMjl1YzNSeWRXTjBjd0JEWVc1dWIzUWdkSEpoYm5Od2IzTmxJRzFoZEhKcFkyVnpJRzltSURFMkxXSnBkQ0JtYkc5aGRITUFaWGh3WldOMFpXUWdUMlptYzJWMElIUnZJR0psSUdFZ2RtVmpkRzl5SUc5bUlESWdNekl0WW1sMElHWnNiMkYwY3dCcGJXRm5aU0JtYjNKdFlYUWdiWFZ6ZENCaVpTQnZibVVnYjJZZ2RHaGxJSFJsZUdWc0lHWnZjbTFoZEhNZ2MzQmxZMmxtYVdWa0lHWnZjaUJ6ZEc5eVlXZGxJSFJsZUhSMVpYTWdhVzRnYUhSMGNITTZMeTluY0hWM1pXSXVaMmwwYUhWaUxtbHZMMmR3ZFhkbFlpOTNaM05zTHlOMFpYaGxiQzFtYjNKdFlYUnpBRk4wYjNKaFoyVkpiV0ZuWlVWNGRHVnVaR1ZrUm05eWJXRjBjd0JqY205emN3QkRjbTl6Y3dCQlpHUnlaWE56QUhWdWJHVnpjd0J5WldkaGNtUnNaWE56QUcxbGJXOXllU0JoWTJObGMzTUFWbUZzYVdSaGRHVkRiM0I1VFdWdGIzSjVUV1Z0YjNKNVFXTmpaWE56QUZWdWFXWnZjbTFCYm1SVGRHOXlZV2RsUW5WbVptVnlPRUpwZEVGalkyVnpjd0JWYm1sbWIzSnRRVzVrVTNSdmNtRm5aVUoxWm1abGNqRTJRbWwwUVdOalpYTnpBSFJwYm5RNk9uTmxiVG82VTNSeWRXTjBUV1Z0WW1WeVFXTmpaWE56QUVSbGNIUm9UR1Z6Y3dCVFVGWmZTMGhTWDNOMGIzSmhaMlZmWW5WbVptVnlYM04wYjNKaFoyVmZZMnhoYzNNQWJYVnpkQ0JpWlNCcGJpQjBhR1VnVDNWMGNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNQWJYVnpkQ0JpWlNCcGJpQjBhR1VnVTNSdmNtRm5aVUoxWm1abGNpd2dWVzVwWm05eWJTd2diM0lnVlc1cFptOXliVU52Ym5OMFlXNTBJSE4wYjNKaFoyVWdZMnhoYzNNQWJYVnpkQ0JpWlNCcGJpQjBhR1VnVlc1cFptOXliVU52Ym5OMFlXNTBJSE4wYjNKaFoyVWdZMnhoYzNNQUlHUmxZMjl5WVhScGIyNGdiWFZ6ZENCdWIzUWdZbVVnWVhCd2JHbGxaQ0IwYnlCMGFHbHpJSE4wYjNKaFoyVWdZMnhoYzNNQVNXNTJZV3hwWkNCd2IybHVkR1Z5SUhOMGIzSmhaMlVnWTJ4aGMzTUFUM0JRZEhKQlkyTmxjM05EYUdGcGJpQkNZWE5sSUc5d1pYSmhibVFnYlhWemRDQndiMmx1ZENCMGJ5QlhiM0pyWjNKdmRYQXNJRk4wYjNKaFoyVkNkV1ptWlhJc0lHOXlJRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2lCemRHOXlZV2RsSUdOc1lYTnpBRU5oYm01dmRDQjFjMlVnWVNCd2IybHVkR1Z5SUdsdUlIUm9aU0JRYUhsemFXTmhiRk4wYjNKaFoyVkNkV1ptWlhJZ2MzUnZjbUZuWlNCamJHRnpjd0FnU1c0Z1ZuVnNhMkZ1TENCQ2RXWm1aWEpDYkc5amF5QnBjeUJrYVhOaGJHeHZkMlZrSUc5dUlIWmhjbWxoWW14bGN5QnBiaUIwYUdVZ1UzUnZjbUZuWlVKMVptWmxjaUJ6ZEc5eVlXZGxJR05zWVhOekFDd2dhVzVwZEdsaGJHbDZaWEp6SUdGeVpTQnNhVzFwZEdWa0lIUnZJRTl3UTI5dWMzUmhiblJPZFd4c0lHbHVJRmR2Y210bmNtOTFjQ0J6ZEc5eVlXZGxJR05zWVhOekFITjBiM0poWjJVZ1luVm1abVZ5TENCdmNpQjJZWEpwWVdKc1pTQnBiaUJRY21sMllYUmxJRzl5SUVaMWJtTjBhVzl1SUhOMGIzSmhaMlVnWTJ4aGMzTUFPaUJsZUhCbFkzUmxaQ0JOWlcxdmNua2dVMlZ0WVc1MGFXTnpJSFJ2SUdsdVkyeDFaR1VnWVNCV2RXeHJZVzR0YzNWd2NHOXlkR1ZrSUhOMGIzSmhaMlVnWTJ4aGMzTUFPaUJsZUhCbFkzUmxaQ0JOWlcxdmNua2dVMlZ0WVc1MGFXTnpJSFJ2SUdsdVkyeDFaR1VnWVNCemRHOXlZV2RsSUdOc1lYTnpBRVpzWVdkSmMwVnVkVzFEYkdGemN3QlRkRzl5WVdkbFEyeGhjM01BVTNSdmNtRm5aU0JEYkdGemN3QkRZWEJoWW1sc2FYUjVVR0Z6Y3dCTWIyZHBZMkZzYzFCaGMzTUFRWEpwZEdodFpYUnBZM05RWVhOekFFTm1aMUJoYzNNQVpYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdiV0YwY21sNElIUnZJR2hoZG1VZ1lTQkRiMngxYlc0Z1ZIbHdaU0J2WmlBekxXTnZiWEJ2Ym1WdWRDQXpNaTFpYVhRZ1pteHZZWFFnZG1WamRHOXljd0JsZUhCbFkzUmxaQ0JoYkd3Z2IzQmxjbUZ1WkhNZ2RHOGdZbVVnYVc1MElITmpZV3hoY25NZ2IzSWdkbVZqZEc5eWN3QjBaWGgwZFhKbFRuVnRUR0Y1WlhKekFGTlFWbDlKVGxSRlRGOW1kVzVqZEdsdmJsOXdiMmx1ZEdWeWN3QlRVRlpmUzBoU1gzWmhjbWxoWW14bFgzQnZhVzUwWlhKekFIUnBiblE2T25SeVlXNXpabTl5YlRvNlUybHRjR3hwWm5sUWIybHVkR1Z5Y3dCV1lYSnBZV0pzWlZCdmFXNTBaWEp6QUZKbGNHeGhZMlZHYjNKM1lYSmtVRzlwYm5SbGNuTUFVMUJXWDB0SVVsOXphR0ZrWlhKZlpISmhkMTl3WVhKaGJXVjBaWEp6QUdOb2NtOXRhWFZ0WDJWNGNHVnlhVzFsYm5SaGJGOW1kV3hzWDNCMGNsOXdZWEpoYldWMFpYSnpBRzV2YmkxbGJuUnllU0J3YjJsdWRDQm1kVzVqZEdsdmJpQndZWEpoYldWMFpYSnpBR2x1SUVaMWJtTjBhVzl1SUc5eUlGQnlhWFpoZEdVZ2MzUnZjbUZuWlNCamJHRnpjMlZ6SUc5eUlHRnpJR1oxYm1OMGFXOXVJSEJoY21GdFpYUmxjbk1BVDNCQ2NtRnVZMmhEYjI1a2FYUnBiMjVoYkNCeVpYRjFhWEpsY3lCbGFYUm9aWElnTXlCdmNpQTFJSEJoY21GdFpYUmxjbk1BUkhKaGQxQmhjbUZ0WlhSbGNuTUFVMUJXWDBsT1ZFVk1YMkZ5WW1sMGNtRnllVjl3Y21WamFYTnBiMjVmYVc1MFpXZGxjbk1BUTJobFkydEVaV052Y21GMGFXOXVjMDltUW5WbVptVnljd0J6ZEhKMVkzUWdiV1Z0WW1WeWN3QWdZMkZ1SUc5dWJIa2dZbVVnWVhCd2JHbGxaQ0IwYnlCemRISjFZM1IxY21VZ2JXVnRZbVZ5Y3dBZ1kyRnVibTkwSUdKbElHRndjR3hwWldRZ2RHOGdjM1J5ZFdOMGRYSmxJRzFsYldKbGNuTUFjMk5oYkdGeUlHOXlJSFpsWTNSdmNpQm1iRzloZENCMGVYQmxJRzFsYldKbGNuTUFiblZ0WDNkdmNtdG5jbTkxY0hNQVVIVnphRU52Ym5OMFlXNTBUblZ0VjI5eWEyZHliM1Z3Y3dCVFVGWmZTVTVVUlV4ZmMzVmlaM0p2ZFhCekFFZGxkRXRsY201bGJFMWhlRTUxYlZOMVltZHliM1Z3Y3dCT2RXMUZibkYxWlhWbFpGTjFZbWR5YjNWd2N3Qm5iRjlPZFcxWGIzSnJSM0p2ZFhCekFGTlFWbDlMU0ZKZmMyaGhaR1Z5WDJGMGIyMXBZMTlqYjNWdWRHVnlYMjl3Y3dCQmRHOXRhV05UZEc5eVlXZGxUM0J6QUdOdmRXNTBWSEpoYVd4cGJtZGFaWEp2Y3dCamIzVnVkRXhsWVdScGJtZGFaWEp2Y3dCTGFISnZibTl6QUVWdFltRnlheUJUZEhWa2FXOXpBSE5wYm1OdmN3QmhZMjl6QUdoaGJHWmZZMjl6QUc1aGRHbDJaVjlqYjNNQVFXTnZjd0JEYjNNQVUxQldYMHRJVWw5aWFYUmZhVzV6ZEhKMVkzUnBiMjV6QUZOUVZsOUxTRkpmZFc1cFptOXliVjluY205MWNGOXBibk4wY25WamRHbHZibk1BVFdWdGIzSjVJRk5sYldGdWRHbGpjeUJXYjJ4aGRHbHNaU0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJSGRwZEdnZ1lYUnZiV2xqSUdsdWMzUnlkV04wYVc5dWN3QkNhWFJKYm5OMGNuVmpkR2x2Ym5NQVRXbHJhMjl6YjJaMElGQnliMlIxWTNScGIyNXpBR1oxYm1OMGFXOXVjd0E3SUVGdWJtOTBZWFJwYjI1ekFGWmhjbWxoWW14bElHaGhjeUJqYjI1bWJHbGpkR2x1WnlCcGJtUmxlQ0JrWldOdmNtRjBhVzl1Y3dCV1lYSnBZV0pzWlNCb1lYTWdZMjl1Wm14cFkzUnBibWNnWTI5dGNHOXVaVzUwSUdSbFkyOXlZWFJwYjI1ekFDa2dZMkZ1Ym05MElHaGhkbVVnWVc1NUlFeHZZMkYwYVc5dUlHOXlJRU52YlhCdmJtVnVkQ0JrWldOdmNtRjBhVzl1Y3dCV1lYSnBZV0pzWlNCb1lYTWdZMjl1Wm14cFkzUnBibWNnYkc5allYUnBiMjRnWkdWamIzSmhkR2x2Ym5NQVNHRjJaVk5oYldWTVlYbHZkWFJFWldOdmNtRjBhVzl1Y3dCTllYaEpkR1Z5WVhScGIyNXpBRTFwYmtsMFpYSmhkR2x2Ym5NQVNXMWhaMlVnVDNCbGNtRnVaQ0JQWm1aelpYUWdZMkZ1SUc5dWJIa2dZbVVnZFhObFpDQjNhWFJvSUU5d1NXMWhaMlVxUjJGMGFHVnlJRzl3WlhKaGRHbHZibk1BYzNSeWRXTjBJR1JsWTJ4aGNtRjBhVzl1Y3dCSmJuWnZZMkYwYVc5dWN3QTRMU0J2Y2lBeE5pMWlhWFFnZEhsd1pYTWdZMkZ1SUc5dWJIa2dZbVVnZFhObFpDQjNhWFJvSUhkcFpIUm9MVzl1YkhrZ1kyOXVkbVZ5YzJsdmJuTUFkR1Y0ZEhWeVpVUnBiV1Z1YzJsdmJuTUFVMUJXWDA1V1gzTm9ZV1JsY2w5emJWOWlkV2xzZEdsdWN3QlRVRlpmUVZKTlgyTnZjbVZmWW5WcGJIUnBibk1BZDJobGJpQmpZV3hqZFd4aGRHbHVaeUJ5WVdScFlXNXpBRkpoWkdsaGJuTUFSMlZ2YldWMGNubFRkSEpsWVcxekFDQnRjd0JUVUZaZlMwaFNYMlpzYjJGMFgyTnZiblJ5YjJ4ekFGTlFWbDlKVGxSRlRGOTFibk4wY25WamRIVnlaV1JmYkc5dmNGOWpiMjUwY205c2N3QlRVRlpmU1U1VVJVeGZabkJuWVY5c2IyOXdYMk52Ym5SeWIyeHpBRk53YVhKMlZHOXZiSE1BVTNCMlIyVnVWSGR2SUdOdmJXMTFibWwwZVNCVGNIWkhaVzVVZDI4Z1UxQkpVaTFXSUVsU0lGUnZiMnh6QUVodmNtbDZiMjUwWVd3MFVHbDRaV3h6QUZabGNuUnBZMkZzTkZCcGVHVnNjd0JJYjNKcGVtOXVkR0ZzTWxCcGVHVnNjd0JXWlhKMGFXTmhiREpRYVhobGJITUFTVzFoWjJWUmRXVnllVXhsZG1Wc2N3QjBaWGgwZFhKbFRuVnRUR1YyWld4ekFHbHVJRloxYkd0aGJpQmxiblpwY205dWJXVnVkQ3dnVDNCRGIyNTBjbTlzUW1GeWNtbGxjaUJsZUdWamRYUnBiMjRnYzJOdmNHVWdiWFZ6ZENCaVpTQlRkV0puY205MWNDQm1iM0lnUm5KaFoyMWxiblFzSUZabGNuUmxlQ3dnUjJWdmJXVjBjbmtzSUZSbGMzTmxiR3hoZEdsdmJrVjJZV3gxWVhScGIyNHNJRkpoZVVkbGJtVnlZWFJwYjI0c0lFbHVkR1Z5YzJWamRHbHZiaXdnUVc1NVNHbDBMQ0JEYkc5elpYTjBTR2wwTENCaGJtUWdUV2x6Y3lCbGVHVmpkWFJwYjI0Z2JXOWtaV3h6QUdsdUlGWjFiR3RoYmlCbGJuWnBjbTl1YldWdWRDd2dWMjl5YTJkeWIzVndJR1Y0WldOMWRHbHZiaUJ6WTI5d1pTQnBjeUJ2Ym14NUlHWnZjaUJVWVhOclRsWXNJRTFsYzJoT1Zpd2dWR0Z6YTBWWVZDd2dUV1Z6YUVWWVZDd2dWR1Z6YzJWc2JHRjBhVzl1UTI5dWRISnZiQ3dnWVc1a0lFZE1RMjl0Y0hWMFpTQmxlR1ZqZFhScGIyNGdiVzlrWld4ekFFOXdWSEpoWTJWU1lYbExTRklnY21WeGRXbHlaWE1nVW1GNVIyVnVaWEpoZEdsdmJrdElVaXdnUTJ4dmMyVnpkRWhwZEV0SVVpQmhibVFnVFdsemMwdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXeHpBR2x1SUZaMWJHdGhiaUJsYm5acGNtOXViV1Z1ZEN3Z1QzVjBjSFYwSUZOMGIzSmhaMlVnUTJ4aGMzTWdiWFZ6ZENCdWIzUWdZbVVnZFhObFpDQnBiaUJIVEVOdmJYQjFkR1VzSUZKaGVVZGxibVZ5WVhScGIyNUxTRklzSUVsdWRHVnljMlZqZEdsdmJrdElVaXdnUVc1NVNHbDBTMGhTTENCRGJHOXpaWE4wU0dsMFMwaFNMQ0JOYVhOelMwaFNMQ0J2Y2lCRFlXeHNZV0pzWlV0SVVpQmxlR1ZqZFhScGIyNGdiVzlrWld4ekFFOXdSWGhsWTNWMFpVTmhiR3hoWW14bFMwaFNJSEpsY1hWcGNtVnpJRkpoZVVkbGJtVnlZWFJwYjI1TFNGSXNJRU5zYjNObGMzUklhWFJMU0ZJc0lFMXBjM05MU0ZJZ1lXNWtJRU5oYkd4aFlteGxTMGhTSUdWNFpXTjFkR2x2YmlCdGIyUmxiSE1BSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQndhSGx6YVdOaGJDQmhaR1J5WlhOemFXNW5JRzF2WkdWc2N3QkhaWFJGZUdWamRYUnBiMjVOYjJSbGJITUFVR1Z5Vm1WeWRHVjRTMGhTSUdOaGJpQnZibXg1SUdKbElHRndjR3hwWldRZ2RHOGdSbkpoWjIxbGJuUWdSWGhsWTNWMGFXOXVJRTF2WkdWc2N3QkpiaUJUVUVsU0xWWWdNUzQySUc5eUlHeGhkR1Z5TENCVWNuVmxJRXhoWW1Wc0lHRnVaQ0JHWVd4elpTQk1ZV0psYkNCdGRYTjBJR0psSUdScFptWmxjbVZ1ZENCc1lXSmxiSE1BUm5WdVkzUnBiMjRnWlc1a0lHTmhibTV2ZENCaVpTQmpZV3hzWldRZ2FXNGdZbXh2WTJ0ekFGVndaR0YwWlVOdmJuUnBiblZsUTI5dWMzUnlkV04wUlhocGRFSnNiMk5yY3dCSmJpQjBhR1VnVm5Wc2EyRnVJR1Z1ZG1seWIyNXRaVzUwTENCallXNXViM1FnYzNSdmNtVWdkRzhnVlc1cFptOXliU0JDYkc5amEzTUFZMmh5YjIxcGRXMWZaR2x6WVdKc1pWOTFibWxtYjNKdGFYUjVYMkZ1WVd4NWMybHpBR3hvY3lBbUppQnlhSE1BY21GNUlHWnNZV2R6QUU5d1pXNURUQzVFWldKMVowbHVabTh1TVRBd0lHUmxZblZuSUdsdVptOGdabXhoWjNNQWEyVnlibVZzSUdWdWNXVjFaU0JtYkdGbmN3QkdiR0ZuY3dCVFVGWmZUbFpmWTI5dGNIVjBaVjl6YUdGa1pYSmZaR1Z5YVhaaGRHbDJaWE1BZEdobElGTndhWEoyUVhSdmJXbGpJSFJ5WVc1elptOXliU0JrYjJWeklHNXZkQ0JqZFhKeVpXNTBiSGtnYzNWd2NHOXlkQ0JoY25KaGVTQmpiM1Z1ZEhNZ2RHaGhkQ0IxYzJVZ2IzWmxjbkpwWkdVZ2RtRnNkV1Z6QUNrZ2JYVnpkQ0J1YjNRZ1pYaGpaV1ZrSURCNFptWm1abVptWm1ZZ1lubDBaWE1BVTFCV1gwbE9WRVZNWDJad1oyRmZiV1Z0YjNKNVgyRjBkSEpwWW5WMFpYTUFVMUJXWDA1V1dGOXRkV3gwYVhacFpYZGZjR1Z5WDNacFpYZGZZWFIwY21saWRYUmxjd0JUVUZaZlNVNVVSVXhmWm5CbllWOWpiSFZ6ZEdWeVgyRjBkSEpwWW5WMFpYTUFVMUJXWDBsT1ZFVk1YMnRsY201bGJGOWhkSFJ5YVdKMWRHVnpBRk5RVmw5SlRsUkZURjltY0dkaFgybHVkbTlqWVhScGIyNWZjR2x3Wld4cGJtbHVaMTloZEhSeWFXSjFkR1Z6QUdFZ1kyOXRjSFYwWlNCemFHRmtaWElnYlhWemRDQnBibU5zZFdSbElDZDNiM0pyWjNKdmRYQmZjMmw2WlNjZ2FXNGdhWFJ6SUdGMGRISnBZblYwWlhNQWJtOXVMWEpsYzI5MWNtTmxJSFpoY21saFlteGxjeUJ0ZFhOMElHNXZkQ0JvWVhabElFQm5jbTkxY0NCdmNpQkFZbWx1WkdsdVp5QmhkSFJ5YVdKMWRHVnpBSEpsYzI5MWNtTmxJSFpoY21saFlteGxjeUJ5WlhGMWFYSmxJRUJuY205MWNDQmhibVFnUUdKcGJtUnBibWNnWVhSMGNtbGlkWFJsY3dCdGRXeDBhWEJzWlNCbGJuUnllU0J3YjJsdWRDQkpUeUJoZEhSeWFXSjFkR1Z6QUV4cGJtdGhaMlZCZEhSeWFXSjFkR1Z6QUZCb2VYTnBZMkZzVTNSdmNtRm5aVUoxWm1abGNrRmtaSEpsYzNObGN3QlRVRlpmU1U1VVJVeGZabkJuWVY5dFpXMXZjbmxmWVdOalpYTnpaWE1BVTFCV1gwbE9WRVZNWDNWemJWOXpkRzl5WVdkbFgyTnNZWE56WlhNQWMzUnZjbUZuWlNCamJHRnpjMlZ6QUdGeWNtRjVJSFI1Y0dWekFFVjRjR1ZqZEdWa0lHTnZiM0JsY21GMGFYWmxJRzFoZEhKcGVDQjBlWEJsY3dCbGVIQmxZM1JsWkNCdmNHVnlZVzVrSUZnZ1lXNWtJRkpsYzNWc2RDQlVlWEJsSUhSdklHaGhkbVVnWlhGMVlXd2dZMjl0Y0c5dVpXNTBJSFI1Y0dWekFFTmhibTV2ZENCamNtVmhkR1VnZFc1a1pXWnBibVZrSUhaaGJIVmxjeUIzYVhSb0lEZ3RJRzl5SURFMkxXSnBkQ0IwZVhCbGN3QkRZVzV1YjNRZ1kyOXdlU0J0WlcxdmNua2diMllnYjJKcVpXTjBjeUJqYjI1MFlXbHVhVzVuSURndElHOXlJREUyTFdKcGRDQjBlWEJsY3dCRFlXNXViM1FnWTNKbFlYUmxJR0VnWTI5dGNHOXphWFJsSUdOdmJuUmhhVzVwYm1jZ09DMGdiM0lnTVRZdFltbDBJSFI1Y0dWekFFTmhibTV2ZENCbWIzSnRJR052Ym5OMFlXNTBjeUJ2WmlBNExTQnZjaUF4TmkxaWFYUWdkSGx3WlhNQVEyRnVibTkwSUdOdmNIa2dZMjl0Y0c5emFYUmxjeUJ2WmlBNExTQnZjaUF4TmkxaWFYUWdkSGx3WlhNQVEyRnVibTkwSUdsdWMyVnlkQ0JwYm5SdklHRWdkbVZqZEc5eUlHOW1JRGd0SUc5eUlERTJMV0pwZENCMGVYQmxjd0JEWVc1dWIzUWdaWGgwY21GamRDQm1jbTl0SUdFZ2RtVmpkRzl5SUc5bUlEZ3RJRzl5SURFMkxXSnBkQ0IwZVhCbGN3QkRZVzV1YjNRZ2MyaDFabVpzWlNCaElIWmxZM1J2Y2lCdlppQTRMU0J2Y2lBeE5pMWlhWFFnZEhsd1pYTUFRMkZ1Ym05MElHbHVjMlZ5ZENCcGJuUnZJR0VnWTI5dGNHOXphWFJsSUc5bUlEZ3RJRzl5SURFMkxXSnBkQ0IwZVhCbGN3QkRZVzV1YjNRZ1pYaDBjbUZqZENCbWNtOXRJR0VnWTI5dGNHOXphWFJsSUc5bUlEZ3RJRzl5SURFMkxXSnBkQ0IwZVhCbGN3QmxiblJ5ZVNCd2IybHVkQ0J5WlhSMWNtNGdkSGx3WlhNQWJtOXVMV1Z1ZEhKNUlIQnZhVzUwSUdaMWJtTjBhVzl1SUhKbGRIVnliaUIwZVhCbGN3QkRiMjF3YjI1bGJuUWdaR1ZqYjNKaGRHbHZiaUIyWVd4MVpTQnRkWE4wSUc1dmRDQmlaU0F4SUc5eUlETWdabTl5SURZMExXSnBkQ0JrWVhSaElIUjVjR1Z6QUdsdWRHVnljRzlzWVhScGIyNGdkSGx3WlNCdGRYTjBJR0psSUNkbWJHRjBKeUJtYjNJZ2FXNTBaV2R5WVd3Z2RYTmxjaTFrWldacGJtVmtJRWxQSUhSNWNHVnpBR0YwYjIxcFl5QnZibXg1SUhOMWNIQnZjblJ6SUdrek1pQnZjaUIxTXpJZ2RIbHdaWE1BUjJWMFUzUnlkV04wVFdWdFltVnlWSGx3WlhNQVFXNWhiSGw2WlZSNWNHVnpBRkJoY21GdFpYUmxjaUJVZVhCbGN3QlZibVJsY214NWFXNW5JRlI1Y0dWekFGTlFWbDlKVGxSRlRGOXBiMTl3YVhCbGN3QlRVRlpmU1U1VVJVeGZZbXh2WTJ0cGJtZGZjR2x3WlhNQVVHbHdaWE1BU1hOdmJHbHVaWE1BU1c1d2RYUk1hVzVsY3dBcElHRndjR1ZoY25NZ2JYVnNkR2x3YkdVZ2RHbHRaWE1BUTI5dWMzUnlkV04wVG1GdFpYTUFUbVYwWldGelpTQkhZVzFsY3dCdmNHTnZaR1VnUFQwZ2MzQjJPanBQY0RvNlQzQkpiV0ZuWlZGMVpYSjVVMkZ0Y0d4bGN3QldZV3hwWkdGMFpVbHRZV2RsVVhWbGNubE1aWFpsYkhOUGNsTmhiWEJzWlhNQWRHVjRkSFZ5WlU1MWJWTmhiWEJzWlhNQVZISnBZVzVuYkdWekFFbHVaR1Y0SUdOaGJpQnZibXg1SUdKbElHRndjR3hwWldRZ2RHOGdSbkpoWjIxbGJuUWdiM1YwY0hWMElIWmhjbWxoWW14bGN3QlBjRVZ1ZEhKNVVHOXBiblFnYVc1MFpYSm1ZV05sY3lCemFHOTFiR1FnYjI1c2VTQnNhWE4wSUdkc2IySmhiQ0IyWVhKcFlXSnNaWE1BUUhkdmNtdG5jbTkxY0Y5emFYcGxJR2x6SUc5dWJIa2dkbUZzYVdRZ1ptOXlJR052YlhCMWRHVWdjM1JoWjJWekFIZG9aVzRnWTJGc1kzVnNZWFJwYm1jZ1pHVm5jbVZsY3dCRVpXZHlaV1Z6QUVsdFlXZGxJRTl3WlhKaGJtUWdSM0poWkNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dSWGh3YkdsamFYUk1iMlFnYjNCamIyUmxjd0JKYldGblpTQlBjR1Z5WVc1a0lFSnBZWE1nWTJGdUlHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lFbHRjR3hwWTJsMFRHOWtJRzl3WTI5a1pYTUFVM1J5ZFdOMGRYSmxJRzFsYldKbGNuTWdiV0Y1SUc1dmRDQmlaU0J6Wld4bUlISmxabVZ5Wlc1alpYTUFUM1YwY0hWMFZtVnlkR2xqWlhNQVoyeGZVR0YwWTJoV1pYSjBhV05sY3dCamRYTjBiMjBnYldGMGNtbDRJSE4wY21sa1pYTWdibTkwSUdOMWNuSmxiblJzZVNCemRYQndiM0owWldRZ2IyNGdZWEp5WVhrZ2IyWWdiV0YwY21salpYTUFVMUJXWDBsT1ZFVk1YMlp3WjJGZllYSm5kVzFsYm5SZmFXNTBaWEptWVdObGN3QnZMbTltWm5ObGRDQXJJRzh1Ym5WdFgzZHZjbVJ6SUR3OUlHbHVjM1JmTG01MWJWOTNiM0prY3dCZkxuZHZjbVJmYVc1a1pYZ2dQVDBnWHk1dWRXMWZkMjl5WkhNQVh5NTNiM0prWDJsdVpHVjRJRHdnWHk1dWRXMWZkMjl5WkhNQUlIUnZkR0ZzSUhkdmNtUnpBR052YjNKa2N3QWdiM1YwSUc5bUlHSnZkVzVrY3dCdmNHVnlZVzVrWDJsdVpHVjRJRHdnYVc1emRDNXVkVzFmYjNCbGNtRnVaSE1BYVc1MllXeHBaQ0JoWTJObGMzTWdZMmhoYVc0NklHaGhjeUJ1YnlCcGJuQjFkQ0J2Y0dWeVlXNWtjd0FnYVc1emRISjFZM1JwYjI0Z1kyRnVJRzl1YkhrZ2FHRjJaU0F5SUdGa1pHbDBhVzl1WVd3Z2IzQmxjbUZ1WkhNQVZtRnNhV1JoZEdWSmJXRm5aVTl3WlhKaGJtUnpBRTFsY21kbElFSnNiMk5ySUdGdVpDQkRiMjUwYVc1MVpTQlVZWEpuWlhRZ2JYVnpkQ0JpWlNCa2FXWm1aWEpsYm5RZ2FXUnpBRkYxWVdSekFGWnZiR0YwYVd4bElHMWhjMnNnYzJWMGRHbHVaeUJ0ZFhOMElHMWhkR05vSUdadmNpQkZjWFZoYkNCaGJtUWdWVzVsY1hWaGJDQnRaVzF2Y25rZ2MyVnRZVzUwYVdOekFFZGxibVZ5YVdOUWRISk5aVzFUWlcxaGJuUnBZM01BT2lCTllXdGxRWFpoYVd4aFlteGxTMGhTSUUxbGJXOXllU0JUWlcxaGJuUnBZM01nWVd4emJ5QnlaWEYxYVhKbGN5QmxhWFJvWlhJZ1VtVnNaV0Z6WlNCdmNpQkJZM0YxYVhKbFVtVnNaV0Z6WlNCTlpXMXZjbmtnVTJWdFlXNTBhV056QURvZ1RXRnJaVlpwYzJsaWJHVkxTRklnVFdWdGIzSjVJRk5sYldGdWRHbGpjeUJoYkhOdklISmxjWFZwY21WeklHVnBkR2hsY2lCQlkzRjFhWEpsSUc5eUlFRmpjWFZwY21WU1pXeGxZWE5sSUUxbGJXOXllU0JUWlcxaGJuUnBZM01BU1c1ME5qUkJkRzl0YVdOekFGUmhhV05vYVNCSGNtRndhR2xqY3dCbVlXSnpBSFZmWVdKekFITmZZV0p6QUZOQlluTUFSa0ZpY3dCaGJHbGhjd0JPYjBGc2FXRnpBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2tGc2FXRnpBSFJwYm5RNk9tRnpkRG82UVd4cFlYTUFZbWxoY3dCMFpYaDBkWEpsVTJGdGNHeGxRbWxoY3dCSFpYUlBjR1Z5WVc1a1FYTUFhR0ZzWmw5d2IzZHlBRzVoZEdsMlpWOXdiM2R5QUZOUVZsOU9WbDl5WVhsZmRISmhZMmx1WjE5dGIzUnBiMjVmWW14MWNnQkdkVzVqVUdGeVlXMUJkSFJ5QUhOMGNtbHVaMTkyYVdWM09qcHpkV0p6ZEhJQWMzSmpJR2RzYjJKaGJDQmtaV05zWVhKaGRHbHZiaUIzWVhNZ2JuVnNiSEIwY2dCU1pYTnZiSFpsY2pvNlRXRnlheWdwSUdOaGJHeGxaQ0IzYVhSb0lHNTFiR3h3ZEhJQVpHbGhaMjV2YzNScFl5QW1KaUFxWkdsaFoyNXZjM1JwWXlBOVBTQnVkV3hzY0hSeUFHRnpjMlZ5ZEdsdmJpQm1ZV2xzWldRNklHSnNiMk5yWHlBOVBTQnVkV3hzY0hSeUFHbHVkRjkwZVhCbElDRTlJRzUxYkd4d2RISUFkSGx3WlNncExUNUJjMGx1ZEdWblpYSW9LU0FoUFNCdWRXeHNjSFJ5QUdOdmJuTjBjblZqZEY5d2RISUFSMlZ1WlhKcFkwTmhjM1JVYjFCMGNnQkRiMjUyWlhKMFZWUnZVSFJ5QUY5MGIxOWhjbklBYzNSeWFXUmxaRjloY25JQVVsUkJjbklBUVhCeUFDQmpZVzVrYVdSaGRHVWdZMjl1YzNSeWRXTjBiM0lBZEdsdWREbzZjMlZ0T2pwV1lXeDFaVU52Ym5OMGNuVmpkRzl5QUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVTJoMVptWnNaU0JOWVhOcklIUnZJR0psSUdGdUlHbHVkQ0IyWldOMGIzSUFVbUY1SUVScGNtVmpkR2x2YmlCdGRYTjBJR0psSUdFZ016SXRZbWwwSUdac2IyRjBJRE10WTI5dGNHOXVaVzUwSUhabFkzUnZjZ0JTWVhrZ1QzSnBaMmx1SUcxMWMzUWdZbVVnWVNBek1pMWlhWFFnWm14dllYUWdNeTFqYjIxd2IyNWxiblFnZG1WamRHOXlBRU52YlhCdmJtVnVkQ0JrWldOdmNtRjBhVzl1SUc5dWJIa2dZV3hzYjNkbFpDQnZiaUEyTkMxaWFYUWdjMk5oYkdGeUlHRnVaQ0F5TFdOdmJYQnZibVZ1ZENCMlpXTjBiM0lBWlhod1pXTjBaV1FnUkdGMFlTQjBieUJpWlNCaElETXlJRzl5SURZMExXSnBkQ0JtYkc5aGRDQjJaV04wYjNJQVpYaHdaV04wWldRZ1JHRjBZU0IwYnlCaVpTQmhiaUJwYm5RZ2IzSWdabXh2WVhRZ2RtVmpkRzl5QUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnV0NCMGJ5QmlaU0JoYmlCcGJuUWdiM0lnWm14dllYUWdkbVZqZEc5eUFHVjRjR1ZqZEdWa0lIUm9aU0JsZUhCdmJtVnVkQ0IwYnlCaVpTQmhJRE15TFdKcGRDQnBiblFnYzJOaGJHRnlJRzl5SUhabFkzUnZjZ0JsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRU1nZEc4Z1ltVWdZVzRnYVc1MElITmpZV3hoY2lCdmNpQjJaV04wYjNJQVJYaHdaV04wWldRZ1EyOXZjbVJwYm1GMFpTQjBieUJpWlNCcGJuUWdjMk5oYkdGeUlHOXlJSFpsWTNSdmNnQkZlSEJsWTNSbFpDQkRiMjl5WkdsdVlYUmxJSFJ2SUdKbElHbHVkQ0J2Y2lCbWJHOWhkQ0J6WTJGc1lYSWdiM0lnZG1WamRHOXlBR1Y0Y0dWamRHVmtJRkIwY2lCa1lYUmhJSFI1Y0dVZ2RHOGdZbVVnYVc1MElHOXlJR1pzYjJGMElITmpZV3hoY2lCdmNpQjJaV04wYjNJQVJYaHdaV04wWldRZ1EyOXZjbVJwYm1GMFpTQjBieUJpWlNCbWJHOWhkQ0J6WTJGc1lYSWdiM0lnZG1WamRHOXlBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdXQ0IwYnlCaVpTQmhJR1pzYjJGMElITmpZV3hoY2lCdmNpQjJaV04wYjNJQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUUlIUnZJR0psSUdFZ1pteHZZWFFnYzJOaGJHRnlJRzl5SUhabFkzUnZjZ0JGZUhCbFkzUmxaQ0JEYjI5eVpHbHVZWFJsSUhSdklHSmxJR2x1ZEdWblpYSWdjMk5oYkdGeUlHOXlJSFpsWTNSdmNnQWdkR2hoZENCcGN5QnViM1FnWVNCelkyRnNZWElnYjNJZ2RtVmpkRzl5QUhSdklIUm9aU0J6YVhwbElHOW1JRkpsYzNWc2RDQlVlWEJsSUhabFkzUnZjZ0JGZUhCbFkzUmxaQ0IyWldOMGIzSUFZMkZ6WlNCelpXeGxZM1J2Y2dCMGFXNTBPanBoYzNRNk9rTmhjMlZUWld4bFkzUnZjZ0IwYVc1ME9qcHpaVzA2T2tOaGMyVlRaV3hsWTNSdmNnQk5ZWFJ5YVhoVWFXMWxjMVpsWTNSdmNnQkZlSEJsWTNSbFpDQldaV04wYjNJZ2RIbHdaU0IwYnlCaVpTQlBjRlI1Y0dWV1pXTjBiM0lBUlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnVDNCVWVYQmxWbVZqZEc5eUFFUmxZblZuVkhsd1pWWmxZM1J2Y2dCMGFXNTBPanB5WldGa1pYSTZPbk53YVhKMk9qcFdaV04wYjNJQWRHbHVkRG82ZEhsd1pUbzZWbVZqZEc5eUFDQmpZVzVrYVdSaGRHVWdiM0JsY21GMGIzSUFJR2hoY3lCdWJ5QjBaWEp0YVc1aGRHOXlBRVJsWW5WblRHVjRhV05oYkVKc2IyTnJSR2x6WTNKcGJXbHVZWFJ2Y2dCWE0wTWdWMlZpUjFCVklFZHliM1Z3SUZkSVRGTk1JRk5vWVdSbGNpQlVjbUZ1YzJ4aGRHOXlBRmhsYm1saElGaGxibWxoSUVWdGRXeGhkRzl5SUUxcFkzSnZZMjlrWlNCVWNtRnVjMnhoZEc5eUFGZ3RURVZIUlU1RUlFMWxjMkV0U1ZJdlUxQkpVaTFXSUZSeVlXNXpiR0YwYjNJQVMyaHliMjV2Y3lCTVRGWk5MMU5RU1ZJdFZpQlVjbUZ1YzJ4aGRHOXlBR2x1ZEdWeWJtRnNJR052YlhCcGJHVnlJR1Z5Y205eUFHWnNiMjl5QUVac2IyOXlBRkp2ZDAxaGFtOXlBRU52YkUxaGFtOXlBR1p2Y2dCSGNtOTFjRTV2YmxWdWFXWnZjbTFNYjJkcFkyRnNXRzl5QUVkeWIzVndUbTl1Vlc1cFptOXliVUpwZEhkcGMyVlliM0lBUjNKdmRYQk9iMjVWYm1sbWIzSnRVMmgxWm1ac1pWaHZjZ0JoZEc5dGFXTlliM0lBUVhSdmJXbGpXRzl5QUVsdWRHVnlibUZzUjJWMFJHVmpiM0poZEdsdmJuTkdiM0lBUlhod1pXTjBaV1FnVTJGdGNHeGxaQ0JVZVhCbElIUnZJR0psSUdWcGRHaGxjaUIyYjJsa0lHOXlBQ0IwYnlCaVpTQjFjMlZrSUc5dWJIa2dkMmwwYUNCSFRFTnZiWEIxZEdVc0lFMWxjMmhPVml3Z1ZHRnphMDVXTENCTlpYTm9SVmhVSUc5eUFDQjBieUJpWlNCMWMyVmtJRzl1YkhrZ2QybDBhQ0JXWlhKMFpYZ3NJRTFsYzJoT1Zpd2dWR0Z6YTA1V0lDd2dUV1Z6YUVWWVZDQnZjZ0JHYVc1aGJHbDZaWElBWTI5dWMzUWdhVzVwZEdsaGJHbDZaWElBZG1GeUlHUmxZMnhoY21GMGFXOXVJSEpsY1hWcGNtVnpJR0VnZEhsd1pTQnZjaUJwYm1sMGFXRnNhWHBsY2dCdmRtVnljbWxrWlNCa1pXTnNZWEpoZEdsdmJpQnlaWEYxYVhKbGN5QmhJSFI1Y0dVZ2IzSWdhVzVwZEdsaGJHbDZaWElBZG1GeUlHbHVhWFJwWVd4cGVtVnlBQ2RqYjI1emRDY2daR1ZqYkdGeVlYUnBiMjRnYlhWemRDQm9ZWFpsSUdGdUlHbHVhWFJwWVd4cGVtVnlBQ2RzWlhRbklHUmxZMnhoY21GMGFXOXVJRzExYzNRZ2FHRjJaU0JoYmlCcGJtbDBhV0ZzYVhwbGNnQnZkbVZ5Y21sa1pTQnBibWwwYVdGc2FYcGxjZ0JKYm1sMGFXRnNhWHBsY2dCSGIyOW5iR1VnVFV4SlVpQlRVRWxTTFZZZ1UyVnlhV0ZzYVhwbGNnQlRVRlpmUlZoVVgzTm9ZV1JsY2w5MmFXVjNjRzl5ZEY5cGJtUmxlRjlzWVhsbGNnQlRhR0ZrWlhKV2FXVjNjRzl5ZEVsdVpHVjRUR0Y1WlhKRldGUWdiM0lnVTJoaFpHVnlUR0Y1WlhJQVoyeGZUR0Y1WlhJQVoyeGZWR1Z6YzB4bGRtVnNUM1YwWlhJQVFYUnZiV2xqUTI5MWJuUmxjZ0FnZG1saElIQnZhVzUwWlhJQVVtRjVJRkYxWlhKNUlHMTFjM1FnWW1VZ1lTQndiMmx1ZEdWeUFFaHBkQ0JQWW1wbFkzUWdiWFZ6ZENCaVpTQmhJSEJ2YVc1MFpYSUFUM0JsY21GdVpDQjBlWEJsSUcxMWMzUWdZbVVnWVNCd2IybHVkR1Z5QUdWNGNHVmpkR1ZrSUVsdWRHVnljRzlzWVc1MElIUnZJR0psSUdFZ2NHOXBiblJsY2dCbGVIQmxZM1JsWkNCdmNHVnlZVzVrSUVadmNtMWhkQ0IwYnlCaVpTQmhJSEJ2YVc1MFpYSUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQlFkSElnZEc4Z1ltVWdZU0J3YjJsdWRHVnlBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdSWGh3SUhSdklHSmxJR0VnY0c5cGJuUmxjZ0JsZUhCbFkzUmxaQ0IwYUdVZ2JHRnpkQ0J2Y0dWeVlXNWtJSFJ2SUdKbElHRWdjRzlwYm5SbGNnQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGQWdkRzhnWW1VZ1lTQndiMmx1ZEdWeUFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1NTQjBieUJpWlNCaElIQnZhVzUwWlhJQVVtVnpkSEpwWTNSUWIybHVkR1Z5QUVac1lXZFBZbXBsWTNSUWIybHVkR1Z5QUVsdFlXZGxJRVJwYlNCVGRXSndZWE56UkdGMFlTQmpZVzV1YjNRZ1ltVWdkWE5sWkNCM2FYUm9JRTl3U1cxaFoyVlVaWGhsYkZCdmFXNTBaWElBVG05dVVISnBkbUYwWlZCdmFXNTBaWElBT2lCbGVIQmxZM1JsWkNCUWIybHVkR1Z5SUhSdklHSmxJRzltSUhSNWNHVWdUM0JVZVhCbFVHOXBiblJsY2dCRmVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCUGNGUjVjR1ZRYjJsdWRHVnlBRVY0Y0dWamRHVmtJRWx0WVdkbElIUnZJR0psSUU5d1ZIbHdaVkJ2YVc1MFpYSUFSR1ZpZFdkVWVYQmxVRzlwYm5SbGNnQlVlWEJsUm05eWQyRnlaRkJ2YVc1MFpYSUFRV3hwWVhObFpGQnZhVzUwWlhJQVIyVnVaWEpwWTFCdmFXNTBaWElBZEdsdWREbzZjbVZoWkdWeU9qcHpjR2x5ZGpvNlVHOXBiblJsY2dCMGFXNTBPanAwZVhCbE9qcFFiMmx1ZEdWeUFHTmxiblJsY2dCRWNtRm5iMjVLYjJ0bGNpQlRhR0ZrWlhKWGNtbDBaWElBYm1WNGRHRm1kR1Z5QUZOUVZsOUJUVVJmYzJoaFpHVnlYMlY0Y0d4cFkybDBYM1psY25SbGVGOXdZWEpoYldWMFpYSUFaR2x6WVdKc1pWOTJZV3hwWkdGMGFXOXVYMTlsYm5SeWVWOXdiMmx1ZEY5d1lYSmhiV1YwWlhJQVpHbHpZV0pzWlY5MllXeHBaR0YwYVc5dVgxOW1kVzVqZEdsdmJsOXdZWEpoYldWMFpYSUFZMkZ1Ym05MElHMXZaR2xtZVNCbWRXNWpkR2x2YmlCd1lYSmhiV1YwWlhJQWFXNTJZV3hwWkNCb1lXNWtiR1VnYjJKcVpXTjBJSEJoYzNObFpDQmhjeUJtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElBSUc5dUlIQmhjbUZ0WlhSbGNnQm1iR0YwSUdsdWRHVnljRzlzWVhScGIyNGdZWFIwY21saWRYUmxJRzExYzNRZ2JtOTBJR2hoZG1VZ1lTQnpZVzF3YkdsdVp5QndZWEpoYldWMFpYSUFkR1Y0ZEhWeVpTQmlkV2xzZEdsdUlIZHBkR2h2ZFhRZ2RHVjRkSFZ5WlNCd1lYSmhiV1YwWlhJQVNXMWhaMlVnVDNCbGNtRnVaQ0JUWVcxd2JHVWdjbVZ4ZFdseVpYTWdibTl1TFhwbGNtOGdKMDFUSnlCd1lYSmhiV1YwWlhJQVVtVm5hWE4wWlhKR2RXNWpkR2x2YmxCaGNtRnRaWFJsY2dCbGVIQmxZM1JsWkNCdmNHVnlZVzVrSUZaaGNtbGhZbXhsSUcxMWMzUWdZbVVnWVNCeVpYTjFiSFFnYVdRZ2IyWWdUM0JXWVhKcFlXSnNaU0J2Y2lCUGNFWjFibU4wYVc5dVVHRnlZVzFsZEdWeUFFUmxZblZuVkhsd1pWUmxiWEJzWVhSbFZHVnRjR3hoZEdWUVlYSmhiV1YwWlhJQVJHVmlkV2RVZVhCbFZHVnRjR3hoZEdWUVlYSmhiV1YwWlhJQWRHbHVkRG82WVhOME9qcFFZWEpoYldWMFpYSUFkR2x1ZERvNmMyVnRPanBRWVhKaGJXVjBaWElBYVc1MllXeHBaQ0IyWldOMGIzSWdjM2RwZW5wc1pTQmphR0Z5WVdOMFpYSUFJSGRwZEdnZ2RIZHZJRzFsYlc5eWVTQmhZMk5sYzNNZ2IzQmxjbUZ1WkhNZ2NtVnhkV2x5WlhNZ1UxQkpVaTFXSURFdU5DQnZjaUJzWVhSbGNnQk1aWE56VDNKSGNtVmhkR1Z5QUVSbGNIUm9SM0psWVhSbGNnQjBhVzUwT2pwelpXMDZPbFpoY21saFlteGxWWE5sY2dCV1lXeHBaR0YwWlVZek1rRnlja2hsYkhCbGNnQm5iRjlVWlhOelRHVjJaV3hKYm01bGNnQlZjMlZFYVdGbmJtOXpkR2xqUVhOTlpYTnpZV2RsUTI5dWMzVnRaWElBWTI5dGNHRnlhWE52Ymw5ellXMXdiR1Z5QUVGeVozVnRaVzUwVTJGdGNHeGxjZ0JEYjI1emRHRnVkRk5oYlhCc1pYSUFUR2wwWlhKaGJGTmhiWEJzWlhJQVJYaHdaV04wWldRZ1UyRnRjR3hsY2lCMGJ5QmlaU0J2WmlCMGVYQmxJRTl3Vkhsd1pWTmhiWEJzWlhJQWRHbHVkRG82Y21WaFpHVnlPanB6Y0dseWRqbzZVMkZ0Y0d4bGNnQjBhVzUwT2pwMGVYQmxPanBUWVcxd2JHVnlBRWR2YjJkc1pTQlVhVzUwSUVOdmJYQnBiR1Z5QUZSbGJHeDFjMmx0SUVOc1lYa2dVMmhoWkdWeUlFTnZiWEJwYkdWeUFFNWxkR1ZoYzJVZ1IyRnRaWE1nVFdWemMybGhhQ0JUYUdGa1pYSWdRMjl0Y0dsc1pYSUFUV2xyYTI5emIyWjBJRkJ5YjJSMVkzUnBiMjV6SUUxVFVDQlRhR0ZrWlhJZ1EyOXRjR2xzWlhJQVIyOXZaMnhsSUVGT1IweEZJRk5vWVdSbGNpQkRiMjF3YVd4bGNnQlhhVzVsSUZaTFJETkVJRk5vWVdSbGNpQkRiMjF3YVd4bGNnQkxhSEp2Ym05eklGTlFTVkl0VmlCVWIyOXNjeUJCYzNObGJXSnNaWElBUlc1eGRXVjFaVTFoY210bGNnQkVjbUZuYjI1S2IydGxjZ0JMYUhKdmJtOXpJRk5RU1ZJdFZpQlViMjlzY3lCTWFXNXJaWElBVTFCV1gwbE9WRVZNWDNOd2JHbDBYMkpoY25KcFpYSUFibUZ0WldSZlltRnljbWxsY2dCcGJuWmhiR2xrSUc5eUlHMXBjM05wYm1jZ2IzQmxjbUZ1WkhNZ1ptOXlJR052Ym5SeWIyd2dZbUZ5Y21sbGNnQk5aVzF2Y25sQ1lYSnlhV1Z5QUhkdmNtdG5jbTkxY0VKaGNuSnBaWElBUTI5dWRISnZiRUpoY25KcFpYSUFjM1J2Y21GblpVSmhjbkpwWlhJQVRXVnRiM0o1VG1GdFpXUkNZWEp5YVdWeUFEb2daWGh3WldOMFpXUWdUbUZ0WldRZ1FtRnljbWxsY2lCMGJ5QmlaU0J2WmlCMGVYQmxJRTl3Vkhsd1pVNWhiV1ZrUW1GeWNtbGxjZ0E2SUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUU5d1ZIbHdaVTVoYldWa1FtRnljbWxsY2dBZ2IzSWdaV0Z5YkdsbGNnQnBaR1Z1ZEdsbWFXVnlBRVJsWW5WblFuVnBiR1JKWkdWdWRHbG1hV1Z5QUhWdWFHRnVaR3hsWkNCU1pYTnZiSFpsWkVsa1pXNTBhV1pwWlhJQWRHbHVkRG82WVhOME9qcFVaVzF3YkdGMFpXUkpaR1Z1ZEdsbWFXVnlBSFJwYm5RNk9tRnpkRG82U1dSbGJuUnBabWxsY2dCaFkyTmxjM01nY1hWaGJHbG1hV1Z5QUU5d1pXNURUQzVFWldKMVowbHVabTh1TVRBd0lHUmxZblZuSUhSNWNHVWdjWFZoYkdsbWFXVnlBRVJsWW5WblZIbHdaVkYxWVd4cFptbGxjZ0JKYmlCMGFHVWdUM0JsYmtOTUlHVnVkbWx5YjI1dFpXNTBMQ0IwYUdVZ2IzQjBhVzl1WVd3Z1FXTmpaWE56SUZGMVlXeHBabWxsY2dCVWVYQmxJRkYxWVd4cFptbGxjZ0JKYldGblpTQlBjR1Z5WVc1a2N5QlBabVp6WlhRc0lFTnZibk4wVDJabWMyVjBMQ0JEYjI1emRFOW1abk5sZEhNc0lFOW1abk5sZEhNZ1kyRnVibTkwSUdKbElIVnpaV1FnZEc5blpYUm9aWElBYjNCamIyUmxJRDA5SUhOd2RqbzZUM0E2T2s5d1NXMWhaMlZFY21WbVIyRjBhR1Z5SUh4OElHOXdZMjlrWlNBOVBTQnpjSFk2T2s5d09qcFBjRWx0WVdkbFUzQmhjbk5sUkhKbFprZGhkR2hsY2dCSmJXRm5aU0JQY0dWeVlXNWtJRU52Ym5OMFQyWm1jMlYwY3lCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dUM0JKYldGblpVZGhkR2hsY2lCaGJtUWdUM0JKYldGblpVUnlaV1pIWVhSb1pYSUFTVzFoWjJWVGNHRnljMlZIWVhSb1pYSUFkR1Y0ZEhWeVpVZGhkR2hsY2dCV1lXeHBaR0YwWlVsdFlXZGxSMkYwYUdWeUFHVjRjR1ZqZEdWa0lGTmhiWEJzWlNCMGJ5QmlaU0F6TWkxaWFYUWdhVzUwWldkbGNnQmxlSEJsWTNSbFpDQnBibVJsZUNCdGRYTjBJR0psSUhOallXeGhjaUJwYm5SbFoyVnlBQ0JwY3lCdWIzUWdZU0J6WTJGc1lYSWdhVzUwWldkbGNnQkFZV3hwWjI0Z2RtRnNkV1VnYlhWemRDQmlaU0JoSUhCdmMybDBhWFpsTENCd2IzZGxjaTF2WmkxMGQyOGdhVzUwWldkbGNnQndiM056YVdKc2VTQnRkV3gwYVMxM2IzSmtJR3hwZEdWeVlXd2dhVzUwWldkbGNnQkFjMmw2WlNCdGRYTjBJR0psSUdFZ2NHOXphWFJwZG1VZ2FXNTBaV2RsY2dCRmVIQmxZM1JsWkNCV1lXeDFaU0IwYnlCaVpTQmhJSFpsWTNSdmNpQnZaaUIwZDI4Z1kyOXRjRzl1Wlc1MGN5QnZaaUIxYm5OcFoyNWxaQ0JwYm5SbFoyVnlJRzl5SURZMFltbDBJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSUFVR2w0Wld4RFpXNTBaWEpKYm5SbFoyVnlBSFJwYm5RNk9uUnlZVzV6Wm05eWJUbzZUV0Z1WVdkbGNnQlRVRlpmUlZoVVgzQm9lWE5wWTJGc1gzTjBiM0poWjJWZlluVm1abVZ5QUZOUVZsOUxTRkpmY0doNWMybGpZV3hmYzNSdmNtRm5aVjlpZFdabVpYSUFkVzVwWm05eWJTQmlkV1ptWlhJQWIzSWdjM1J2Y21GblpTQmlkV1ptWlhJQVEyOTFiblJsY2tKMVptWmxjZ0JCY21kMWJXVnVkRlZ1YVdadmNtMVVaWGhsYkVKMVptWmxjZ0JCY21kMWJXVnVkRk4wYjNKaFoyVlVaWGhsYkVKMVptWmxjZ0JCY21kMWJXVnVkRk4wYjNKaFoyVkNkV1ptWlhJQVZtRnlhV0ZpYkdWUWIybHVkR1Z5Y3lCdmNpQldZWEpwWVdKc1pWQnZhVzUwWlhKelUzUnZjbUZuWlVKMVptWmxjZ0JRY205bmNtRnRVMk52Y0dWV1lYSnBZV0pzWlhOVGRHOXlZV2RsUW5WbVptVnlBRkJ5YVc1MFprSjFabVpsY2xOMGIzSmhaMlZDZFdabVpYSUFVR2g1YzJsallXeFRkRzl5WVdkbFFuVm1abVZ5QUVGeVozVnRaVzUwVUc5a1UzUnZjbUZuWlVKMVptWmxjZ0JEYjI1emRHRnVkRVJoZEdGVGRHOXlZV2RsUW5WbVptVnlBRWx0WVdkbFFuVm1abVZ5QUZOaGJYQnNaV1JDZFdabVpYSUFXR1ppUW5WbVptVnlBRVpzYjJGME1UWkNkV1ptWlhJQVUzUnZjbUZuWlNCQ2RXWm1aWElBU1c0Z1UxQkpVaTFXSURFdU5pQnZjaUJzWVhSbGNpd2djMkZ0Y0d4bFpDQnBiV0ZuWlNCa2FXMWxibk5wYjI0Z2JYVnpkQ0J1YjNRZ1ltVWdRblZtWm1WeUFGTlFWbDlPVmw5emFHRmtaWEpmYVc1MmIyTmhkR2x2Ymw5eVpXOXlaR1Z5QUdsdFlXZGxJR05vWVc1dVpXd2diM0prWlhJQWIyWm1jMlYwY3lCdGRYTjBJR0psSUdsdUlHRnpZMlZ1WkdsdVp5QnZjbVJsY2dCSmJXRm5aVkYxWlhKNVQzSmtaWElBY21WdFlXbHVaR1Z5QUhScGJuUTZPbkpsWVdSbGNqbzZjM0JwY25ZNk9reHZiM0JUZEdGMFpXMWxiblJDZFdsc1pHVnlBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2xOM2FYUmphRk4wWVhSbGJXVnVkRUoxYVd4a1pYSUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82U1daVGRHRjBaVzFsYm5SQ2RXbHNaR1Z5QUhScGJuUTZPbkpsWVdSbGNqbzZjM0JwY25ZNk9sTjBZWFJsYldWdWRFSjFhV3hrWlhJQVUxQldYMEZOUkY5blkyNWZjMmhoWkdWeUFGTlFWbDlPVmw5dFpYTm9YM05vWVdSbGNnQlRVRlpmUlZoVVgyMWxjMmhmYzJoaFpHVnlBRG9nVFdWdGIzSjVJRk5sYldGdWRHbGpjeUJWYm1sbWIzSnRUV1Z0YjNKNUlISmxjWFZwY21WeklHTmhjR0ZpYVd4cGRIa2dVMmhoWkdWeUFDQnBjeUJoYkhKbFlXUjVJR0VnYldWeVoyVWdZbXh2WTJzZ1ptOXlJR0Z1YjNSb1pYSWdhR1ZoWkdWeUFDQmpZVzV1YjNRZ1ltVWdZU0JzYjI5d0lHaGxZV1JsY2dCelpXeGxZM1JwYjI0Z2FHVmhaR1Z5QUVScGMyRnpjMlZ0WW14bFZHRnlaMlYwU0dWaFpHVnlBRTlqZEc5aVpYSUFaWGgwWlc1emFXOXVJR2x1YzNSeWRXTjBhVzl1SUc1MWJXSmxjZ0J3YjNOemFXSnNlU0J0ZFd4MGFTMTNiM0prSUd4cGRHVnlZV3dnYm5WdFltVnlBRUZ5WjA1MWJXSmxjZ0JPYjNabGJXSmxjZ0JUWlhCMFpXMWlaWElBWkdsellXSnNaVjkyWVd4cFpHRjBhVzl1WDE5cFoyNXZjbVZmYzNSeWRXTjBYMjFsYldKbGNnQmpiMjF3YjI1bGJuUnpJR0Z6SUhSb1pTQm1hWEp6ZENCdFpXMWlaWElBSnk0Z1EyOXVjMmxrWlhJZ2MyVjBkR2x1WnlCQVlXeHBaMjRvTVRZcElHOXVJSFJvYVhNZ2JXVnRZbVZ5QUNCallXNXViM1FnWW1VZ2RYTmxaQ0JoY3lCMGFHVWdkSGx3WlNCdlppQmhJSE4wY25WamRIVnlaU0J0WlcxaVpYSUFjM1J5ZFdOMGRYSmxjeUJ0ZFhOMElHaGhkbVVnWVhRZ2JHVmhjM1FnYjI1bElHMWxiV0psY2dCcGJuWmhiR2xrSUhabFkzUnZjaUJ6ZDJsNmVteGxJRzFsYldKbGNnQlNaWE4xYkhRZ1ZIbHdaU2R6SUhObFkyOXVaQ0J0WlcxaVpYSUFSR1ZqWlcxaVpYSUFkR2x1ZERvNllYTjBPanBUZEhKMVkzUk5aVzFpWlhJQWRHbHVkRG82YzJWdE9qcFRkSEoxWTNSTlpXMWlaWElBZEdsdWREbzZkSGx3WlRvNlUzUnlkV04wVFdWdFltVnlBRVJsWW5WblZIbHdaVkIwY2xSdlRXVnRZbVZ5QUVSbFluVm5WSGx3WlUxbGJXSmxjZ0JHYkdGblUzUmhkR2xqVFdWdFltVnlBRk5RVmw5TFNGSmZiR2x1YTI5dVkyVmZiMlJ5QUNCallXNXViM1FnWW1VZ2RYTmxaQ0JoY3lCMGFHVWdkSGx3WlNCdlppQmhJSFpoY2dCbGVIQmxZM1JsWkNCSmJuUmxjbk5sWTNScGIyNGdTVVFnZEc4Z1ltVWdZU0JqYjI1emRHRnVkQ0F6TWkxaWFYUWdhVzUwSUhOallXeGhjZ0JGZUhCbFkzUmxaQ0JEYjIxd2IyNWxiblFnZEc4Z1ltVWdNekl0WW1sMElHbHVkQ0J6WTJGc1lYSUFSMlZ2YldWMGNua2dTVzVrWlhnZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCcGJuUWdjMk5oYkdGeUFFMXBjM01nU1c1a1pYZ2diWFZ6ZENCaVpTQmhJRE15TFdKcGRDQnBiblFnYzJOaGJHRnlBRWhwYm5RZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCcGJuUWdjMk5oYkdGeUFFaHBkQ0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBVTBKVUlFOW1abk5sZENCdGRYTjBJR0psSUdFZ016SXRZbWwwSUdsdWRDQnpZMkZzWVhJQVltbDBjeUJ0ZFhOMElHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBVW1GNUlFWnNZV2R6SUcxMWMzUWdZbVVnWVNBek1pMWlhWFFnYVc1MElITmpZV3hoY2dCRGRXeHNJRzFoYzJzZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCcGJuUWdjMk5oYkdGeUFFTjFiR3dnVFdGemF5QnRkWE4wSUdKbElHRWdNekl0WW1sMElHbHVkQ0J6WTJGc1lYSUFVMEpVSUZOMGNtbGtaU0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBVUhKcGJXbDBhWFpsSUVsa0lHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ2FXNTBJSE5qWVd4aGNnQkpibk4wWVc1alpTQkpaQ0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JRSUhSdklHSmxJR0VnTXpJdFltbDBJR2x1ZENCelkyRnNZWElBUlhod1pXTjBaV1FnU1c1a1pYZ2dkRzhnWW1VZ2FXNTBJSE5qWVd4aGNnQTZJR1Y0Y0dWamRHVmtJRk4wY21WaGJTQjBieUJpWlNCcGJuUWdjMk5oYkdGeUFFVjRjR1ZqZEdWa0lFeGxkbVZzSUc5bUlFUmxkR0ZwYkNCMGJ5QmlaU0JwYm5RZ2MyTmhiR0Z5QUVWNGNHVmpkR1ZrSUVsdFlXZGxJRTl3WlhKaGJtUWdVMkZ0Y0d4bElIUnZJR0psSUdsdWRDQnpZMkZzWVhJQVJYaHdaV04wWldRZ1VtVnphV1JsYm5RZ1EyOWtaU0IwYnlCaVpTQnBiblFnYzJOaGJHRnlBRk5DVkNCSmJtUmxlQ0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJSFZ1YzJsbmJtVmtJR2x1ZENCelkyRnNZWElBVm1WeWRHVjRJRU52ZFc1MElHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ2RXNXphV2R1WldRZ2FXNTBJSE5qWVd4aGNnQlFjbWx0YVhScGRtVWdRMjkxYm5RZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUWdjMk5oYkdGeUFGTkNWQ0J5WldOdmNtUWdiMlptYzJWMElHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ2RXNXphV2R1WldRZ2FXNTBJSE5qWVd4aGNnQlRRbFFnVDJabWMyVjBJRzExYzNRZ1ltVWdZU0F6TWkxaWFYUWdkVzV6YVdkdVpXUWdhVzUwSUhOallXeGhjZ0JUUWxRZ2NtVmpiM0prSUhOMGNtbGtaU0J0ZFhOMElHSmxJR0VnTXpJdFltbDBJSFZ1YzJsbmJtVmtJR2x1ZENCelkyRnNZWElBVTBKVUlGTjBjbWxrWlNCdGRYTjBJR0psSUdFZ016SXRZbWwwSUhWdWMybG5ibVZrSUdsdWRDQnpZMkZzWVhJQVNHbDBJRXRwYm1RZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUWdjMk5oYkdGeUFFZHliM1Z3SUVOdmRXNTBJRm9nYlhWemRDQmlaU0JoSURNeUxXSnBkQ0IxYm5OcFoyNWxaQ0JwYm5RZ2MyTmhiR0Z5QUVkeWIzVndJRU52ZFc1MElGa2diWFZ6ZENCaVpTQmhJRE15TFdKcGRDQjFibk5wWjI1bFpDQnBiblFnYzJOaGJHRnlBRWR5YjNWd0lFTnZkVzUwSUZnZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCMWJuTnBaMjVsWkNCcGJuUWdjMk5oYkdGeUFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1VDQmtZWFJoSUhSNWNHVWdkRzhnWW1VZ01UWXRZbWwwSUdac2IyRjBJSE5qWVd4aGNnQmxlSEJsWTNSbFpDQkVZWFJoSUhSdklHSmxJR0VnTXpJZ2IzSWdOalF0WW1sMElHWnNiMkYwSUhOallXeGhjZ0JsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRllnZEc4Z1ltVWdZU0EyTkMxaWFYUWdabXh2WVhRZ2MyTmhiR0Z5QUZKaGVTQlVUV0Y0SUcxMWMzUWdZbVVnWVNBek1pMWlhWFFnWm14dllYUWdjMk5oYkdGeUFGSmhlU0JVVFdsdUlHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ1pteHZZWFFnYzJOaGJHRnlBRWhwZENCVUlHMTFjM1FnWW1VZ1lTQXpNaTFpYVhRZ1pteHZZWFFnYzJOaGJHRnlBRVY0Y0dWamRHVmtJRWx0WVdkbElFOXdaWEpoYm1RZ1FtbGhjeUIwYnlCaVpTQm1iRzloZENCelkyRnNZWElBUlhod1pXTjBaV1FnU1cxaFoyVWdUM0JsY21GdVpDQk5hVzVNYjJRZ2RHOGdZbVVnWm14dllYUWdjMk5oYkdGeUFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1JYUmhJSFJ2SUdKbElHRWdabXh2WVhRZ2MyTmhiR0Z5QUVWNGNHVmpkR1ZrSUZSbGVHVnNJSFJ2SUdKbElHbHVkQ0J2Y2lCbWJHOWhkQ0IyWldOMGIzSWdiM0lnYzJOaGJHRnlBQ0J6ZEdGMFpXMWxiblFnWTJGdUlHOXViSGtnWW1VZ1lYQndiR2xsWkNCMGJ5QmhiaUJwYm5SbFoyVnlJSE5qWVd4aGNnQlNaWE4xYkhRZ1ZIbHdaU0J0ZFhOMElHSmxJR0Z1SUdsdWRHVm5aWElnYzJOaGJHRnlBRVY0Y0dWamRHVmtJRk5oYlhCc1pTQjBieUJpWlNCcGJuUmxaMlZ5SUhOallXeGhjZ0JXWVd4MVpTQnZjR1Z5WVc1a0lHOW1JRTl3UVhOemRXMWxWSEoxWlV0SVVpQnRkWE4wSUdKbElHRWdZbTl2YkdWaGJpQnpZMkZzWVhJQVJYaHdaV04wWldRZ1ZtRnNkV1VnZEc4Z1ltVWdZU0IyWldOMGIzSWdiMllnWm05MWNpQmpiMjF3YjI1bGJuUnpJRzltSUdsdWRHVm5aWElnZEhsd1pTQnpZMkZzWVhJQVRXRjBjbWw0VkdsdFpYTlRZMkZzWVhJQVZtVmpkRzl5VkdsdFpYTlRZMkZzWVhJQVkyaGhjZ0JWYm5OcFoyNWxaRU5vWVhJQVUybG5ibVZrUTJoaGNnQnNhVzVsWVhJQVRHbHVaV0Z5QUVGMGIyMXBZMFpzWVdkRGJHVmhjZ0IwYVc1ME9qcGhjM1E2T2xaaGNnQk5ZWElBZG5OMGIzSmxYMmhoYkdadVgzSUFkbk4wYjNKbFlWOW9ZV3htYmw5eUFIWnpkRzl5WlY5b1lXeG1YM0lBYkdkaGJXMWhYM0lBUjNKdmRYQk9iMjVWYm1sbWIzSnRURzluYVdOaGJFOXlBRWR5YjNWd1RtOXVWVzVwWm05eWJVSnBkSGRwYzJWUGNnQmhkRzl0YVdOUGNnQkJkRzl0YVdOUGNnQm1jbVY0Y0FCR2NtVjRjQUJzWkdWNGNBQk1aR1Y0Y0FCb1lXeG1YMlY0Y0FCdVlYUnBkbVZmWlhod0FFVjRjQUJtZFc1amRHbHZiaXdnY0hKcGRtRjBaU0J2Y2lCM2IzSnJaM0p2ZFhBQVFYSm5kVzFsYm5SWGIzSnJaM0p2ZFhBQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUWRISWdjM1J2Y21GblpTQmpiR0Z6Y3lCMGJ5QmlaU0JEY205emMxZHZjbXRuY205MWNBQlRkV0puY205MWNITlFaWEpYYjNKclozSnZkWEFBT2lCRmVHVmpkWFJwYjI0Z2MyTnZjR1VnYVhNZ2JHbHRhWFJsWkNCMGJ5QlRkV0puY205MWNDQnZjaUJYYjNKclozSnZkWEFBUm5WdVkzUnBiMjRnYjNJZ1YyOXlhMmR5YjNWd0FGZHZjbXRuY205MWNDQmhibVFnVTNWaVozSnZkWEFBVTFCV1gwdElVbDlrWlhacFkyVmZaM0p2ZFhBQVFHZHliM1Z3QUVSbFkyOXlZWFJwYjI1SGNtOTFjQUJYWVdsMFYyOXlhMGR5YjNWd0FFUmxkbWxqWlVkeWIzVndBRmN6UXlCWFpXSkhVRlVnUjNKdmRYQUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNSb2FYSmtYM0JoY25SNUwzWjFiR3RoYmkxa1pYQnpMM053YVhKMkxYUnZiMnh6TDNOeVl5OXpiM1Z5WTJVdmRtRnNMM1poYkdsa1lYUmxYMk5oY0dGaWFXeHBkSGt1WTNCd0FDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzkwYUdseVpGOXdZWEowZVM5MmRXeHJZVzR0WkdWd2N5OXpjR2x5ZGkxMGIyOXNjeTl6Y21NdmMyOTFjbU5sTDNaaGJDOTJZV3hwWkdGMFpWOXRaVzF2Y25rdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwySnBibUZ5ZVM1amNIQUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNSb2FYSmtYM0JoY25SNUwzWjFiR3RoYmkxa1pYQnpMM053YVhKMkxYUnZiMnh6TDNOeVl5OXpiM1Z5WTJVdmJHbGljM0JwY25ZdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwzTndhWEoyWDNSaGNtZGxkRjlsYm5ZdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwzWmhiQzlqYjI1emRISjFZM1F1WTNCd0FDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzkwYUdseVpGOXdZWEowZVM5MmRXeHJZVzR0WkdWd2N5OXpjR2x5ZGkxMGIyOXNjeTl6Y21NdmMyOTFjbU5sTDI5d2RDOWpiMjV6ZEdGdWRITXVZM0J3QUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1poYkM5MllXeHBaR0YwWlY5a1pXTnZjbUYwYVc5dWN5NWpjSEFBTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzUm9hWEprWDNCaGNuUjVMM1oxYkd0aGJpMWtaWEJ6TDNOd2FYSjJMWFJ2YjJ4ekwzTnlZeTl6YjNWeVkyVXZkbUZzTDNaaGJHbGtZWFJsWDJWNGRHVnVjMmx2Ym5NdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwyVjRkR1Z1YzJsdmJuTXVZM0J3QUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1poYkM5MllXeHBaR0YwWlY5aWRXbHNkR2x1Y3k1amNIQUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNSb2FYSmtYM0JoY25SNUwzWjFiR3RoYmkxa1pYQnpMM053YVhKMkxYUnZiMnh6TDNOeVl5OXpiM1Z5WTJVdmRtRnNMM1poYkdsa1lYUmxYMnh2WjJsallXeHpMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkyWVd3dmRtRnNhV1JoZEdWZlkyOXRjRzl6YVhSbGN5NWpjSEFBTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzUm9hWEprWDNCaGNuUjVMM1oxYkd0aGJpMWtaWEJ6TDNOd2FYSjJMWFJ2YjJ4ekwzTnlZeTl6YjNWeVkyVXZiM0IwTDNSNWNHVnpMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkyWVd3dmRtRnNhV1JoZEdWZllYSnBkR2h0WlhScFkzTXVZM0J3QUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMMjVoYldWZmJXRndjR1Z5TG1Od2NBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5dmNIUXZaR1ZqYjNKaGRHbHZibDl0WVc1aFoyVnlMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzl2Y0hRdlpHVm1YM1Z6WlY5dFlXNWhaMlZ5TG1Od2NBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5dmNIUXZabVZoZEhWeVpWOXRZVzVoWjJWeUxtTndjQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmRHaHBjbVJmY0dGeWRIa3ZkblZzYTJGdUxXUmxjSE12YzNCcGNuWXRkRzl2YkhNdmMzSmpMM052ZFhKalpTOXZjSFF2ZEhsd1pWOXRZVzVoWjJWeUxtTndjQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmRHaHBjbVJmY0dGeWRIa3ZkblZzYTJGdUxXUmxjSE12YzNCcGNuWXRkRzl2YkhNdmMzSmpMM052ZFhKalpTOXZjSFF2YVhKZmJHOWhaR1Z5TG1Od2NBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5MllXd3ZkbUZzYVdSaGRHVmZhVzV6ZEhKMVkzUnBiMjR1WTNCd0FDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzkwYUdseVpGOXdZWEowZVM5MmRXeHJZVzR0WkdWd2N5OXpjR2x5ZGkxMGIyOXNjeTl6Y21NdmMyOTFjbU5sTDI5d2RDOXBibk4wY25WamRHbHZiaTVqY0hBQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2ZG1Gc0wybHVjM1J5ZFdOMGFXOXVMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkyWVd3dlpuVnVZM1JwYjI0dVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwzWmhiQzkyWVd4cFpHRjBaVjlqWm1jdVkzQndBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5MGFHbHlaRjl3WVhKMGVTOTJkV3hyWVc0dFpHVndjeTl6Y0dseWRpMTBiMjlzY3k5emNtTXZjMjkxY21ObEwzWmhiQzkyWVd4cFpHRjBhVzl1WDNOMFlYUmxMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkyWVd3dmRtRnNhV1JoZEdWZmRIbHdaUzVqY0hBQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2YjNCMEwyMXZaSFZzWlM1amNIQUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNSb2FYSmtYM0JoY25SNUwzWjFiR3RoYmkxa1pYQnpMM053YVhKMkxYUnZiMnh6TDNOeVl5OXpiM1Z5WTJVdlpHbHpZWE56WlcxaWJHVXVZM0J3QUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1poYkM5MllXeHBaR0YwWlY5cGJXRm5aUzVqY0hBQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2YjNCamIyUmxMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzl2Y0dWeVlXNWtMbU53Y0FBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzlrYVdGbmJtOXpkR2xqTG1Od2NBQk1hV1psZEdsdFpWTjBiM0FBWm05eWJHOXZjQUIzYUdsc1pXeHZiM0FBYVc1MFpYSnVZV3dnWlhKeWIzSTZJR0poWkNCamIyNXpkSEoxWTNRZ2JtVnpkR2x1Wnk0Z1EyOXVkR2x1ZFdVZ1lYSnZkVzVrSUhOdmJXVjBhR2x1WnlCdmRHaGxjaUIwYUdGdUlHbG1MQ0J6ZDJsMFkyZ3NJRzl5SUd4dmIzQUFZMjl1ZEdsdWRXVWdjM1JoZEdWdFpXNTBJRzExYzNRZ1ltVWdhVzRnWVNCc2IyOXdBRTV2Y0FCbVkyeGhiWEFBZFY5amJHRnRjQUJ6WDJOc1lXMXdBRlZEYkdGdGNBQlRRMnhoYlhBQVRrTnNZVzF3QUVaRGJHRnRjQUJQZFhSd2RYUk1hVzVsVTNSeWFYQUFUM1YwY0hWMFZISnBZVzVuYkdWVGRISnBjQUJvWVd4bVgzSmxZMmx3QUc1aGRHbDJaVjl5WldOcGNBQkJiR3h2ZDFKbFkybHdBR1p3QUhkb1pXNGdZMkZzWTNWc1lYUnBibWNnYzIxdmIzUm9jM1JsY0FCVGJXOXZkR2hUZEdWd0FGTmxjQUJIY205MWNFNXZibFZ1YVdadmNtMVJkV0ZrVTNkaGNBQk9iMVZ1YzJsbmJtVmtWM0poY0FCT2IxTnBaMjVsWkZkeVlYQUFTVzFoWjJWTmFYQnRZWEFBVTFCV1gwVllWRjl2Y0dGamFYUjVYMjFwWTNKdmJXRndBRWR5YjNWd1RtOXVWVzVwWm05eWJWTm9kV1ptYkdWVmNBQlRjR1ZqUTI5dWMzUmhiblJQY0FBcElHUnZaWE1nYm05MElHMWhkR05vSUhSb1pTQjBlWEJsSUhSb1lYUWdjbVZ6ZFd4MGN5Qm1jbTl0SUdsdVpHVjRhVzVuSUdsdWRHOGdkR2hsSUdOdmJYQnZjMmwwWlNBb1QzQUFLU0JrYjJWeklHNXZkQ0J0WVhSamFDQjBhR1VnZEhsd1pTQjBhR0YwSUhKbGMzVnNkSE1nWm5KdmJTQnBibVJsZUdsdVp5QnBiblJ2SUhSb1pTQkRiMjF3YjNOcGRHVWdLRTl3QUNCeVpYTjFiSFFnZEhsd1pTQW9UM0FBVW1WemRXeDBJSFI1Y0dVZ0tFOXdBRlJvWlNCUFltcGxZM1FnZEhsd1pTQW9UM0FBS1NCa2IyVnpJRzV2ZENCdFlYUmphQ0IwYUdVZ2RIbHdaU0IwYUdGMElISmxjM1ZzZEhNZ1puSnZiU0JwYm1SbGVHbHVaeUJwYm5SdklIUm9aU0JpWVhObElEeHBaRDRnS0U5d0FFbHVkbUZzYVdRZ1QzQmpiMlJsSUc1aGJXVWdKMDl3QUZKbGMzVnNkQ0E4YVdRK0lHWnliMjBnVDNCVFlXMXdiR1ZrU1cxaFoyVWdhVzV6ZEhKMVkzUnBiMjRnYlhWemRDQnViM1FnWVhCd1pXRnlJR0Z6SUc5d1pYSmhibVFnWm05eUlFOXdBQ0J2Y2lCUGNBQkZlSEJsWTNSbFpDQmhkQ0JzWldGemRDQnZibVVnYVc1a1pYZ2dkRzhnVDNBQVNXNTJZV3hwWkNCcGJuTjBjblZqZEdsdmJpQlBjQUJVYUdVZ2JuVnRZbVZ5SUc5bUlHbHVaR1Y0WlhNZ2FXNGdUM0FBVkdobElGSmxjM1ZzZENCVWVYQmxJRzExYzNRZ1ltVWdkR2hsSUhOaGJXVWdZWE1nUTI5dGNHOXphWFJsSUhSNWNHVWdhVzRnVDNBQVNXMWhaMlVnVDNCbGNtRnVaQ0JOWVd0bFZHVjRaV3hXYVhOcFlteGxTMGhTSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQlBjQUJKYldGblpTQlBjR1Z5WVc1a0lFMWhhMlZVWlhobGJFRjJZV2xzWVdKc1pVdElVaUJqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJSGRwZEdnZ1QzQUFSVzVrSUc5bUlHbHVjSFYwSUhKbFlXTm9aV1FnZDJocGJHVWdaR1ZqYjJScGJtY2dUM0FBVW1WemRXeDBJRHhwWkQ0Z1puSnZiU0JQY0ZOaGJYQnNaV1JKYldGblpTQnBibk4wY25WamRHbHZiaUJ0ZFhOMElHNXZkQ0JoY0hCbFlYSWdZWE1nYjNCbGNtRnVaSE1nYjJZZ1QzQUFVbVZ6ZFd4MElIUjVjR1VnWTJGdWJtOTBJR0psSUU5d0FDQlBjRlI1Y0dWV1pXTjBiM0l1SUVadmRXNWtJRTl3QUNCdGRYTjBJR0psSUU5d1ZIbHdaVkJ2YVc1MFpYSXVJRVp2ZFc1a0lFOXdBRWx1ZEdWeVptRmpaWE1nY0dGemMyVmtJSFJ2SUU5d1JXNTBjbmxRYjJsdWRDQnRkWE4wSUdKbElHOW1JSFI1Y0dVZ1QzQlVlWEJsVm1GeWFXRmliR1V1SUVadmRXNWtJRTl3QUVsdWRtRnNhV1FnZDI5eVpDQmpiM1Z1ZERvZ1QzQUFTVzFoWjJVZ1QzQmxjbUZ1WkNCTllXdGxWR1Y0Wld4V2FYTnBZbXhsUzBoU0lISmxjWFZwY21WeklFNXZibEJ5YVhaaGRHVlVaWGhsYkV0SVVpQnBjeUJoYkhOdklITndaV05wWm1sbFpEb2dUM0FBU1cxaFoyVWdUM0JsY21GdVpDQk5ZV3RsVkdWNFpXeEJkbUZwYkdGaWJHVkxTRklnY21WeGRXbHlaWE1nVG05dVVISnBkbUYwWlZSbGVHVnNTMGhTSUdseklHRnNjMjhnYzNCbFkybG1hV1ZrT2lCUGNBQnNiMmN4Y0FBbFNUb2xUVG9sVXlBbGNBQnlaVzF4ZFc4QVNYUmxjbUYwYVc5dVRYVnNkR2x3YkdVZ2JHOXZjQ0JqYjI1MGNtOXNJRzl3WlhKaGJtUWdiWFZ6ZENCaVpTQm5jbVZoZEdWeUlIUm9ZVzRnZW1WeWJ3QkVaVzV2Y20xR2JIVnphRlJ2V21WeWJ3QlRVRlpmU1U1VVJVeGZiV1ZrYVdGZllteHZZMnRmYVc4QVUxQldYMHRJVWw5dWIyNWZjMlZ0WVc1MGFXTmZhVzVtYndCclpYSnVaV3dnY0hKdlptbHNhVzVuSUdsdVptOEFRWEpuZFcxbGJuUkpibVp2QUVSbFluVm5TVzVtYndCRFlYQjBkWEpsUlhabGJuUlFjbTltYVd4cGJtZEpibVp2QUZCeWFXNTBaa2x1Wm04QVIyVjBUV0YwY21sNFZIbHdaVWx1Wm04QVIyVjBVRzlwYm5SbGNsUjVjR1ZKYm1adkFFZGxkRWx0WVdkbFZIbHdaVWx1Wm04QVpHOEFjRzkzYmdCMWJtdHViM2R1QUdSbFkyeGhjbUYwYVc5dVgzUjVjR1ZmSUQwOUlFWjFibU4wYVc5dVJHVmpiRG82YTBaMWJtTjBhVzl1UkdWamJGVnVhMjV2ZDI0QVJHbHRJRk4xWW5CaGMzTkVZWFJoSUhKbGNYVnBjbVZ6SUdadmNtMWhkQ0JWYm10dWIzZHVBRWR5YjNWd1RtOXVWVzVwWm05eWJWTm9kV1ptYkdWRWIzZHVBRk4xYmdCS2RXNEFjbTl2ZEc0QWNtVjBkWEp1QUZKbGRIVnliZ0J6WVcxd2JHVnlYMk52YlhCaGNtbHpiMjRBSUdOdmJYQmhjbWx6YjI0QVptMWhlRjlqYjIxdGIyNEFabTFwYmw5amIyMXRiMjRBWTI5dWMzUWdZWE56WlhKMGFXOXVBSE53ZGxSaGNtZGxkRVZ1ZGtSbGMyTnlhWEIwYVc5dUFITjBaRG82WlhoalpYQjBhVzl1QUhCdmMybDBhVzl1QUdkc1gxTmhiWEJzWlZCdmMybDBhVzl1QUdkc1gxQnZjMmwwYVc5dUFDQnlaWEYxYVhKbGN5QmhJSEJ5WlhacGIzVnpJR1JsWm1sdWFYUnBiMjRBYm04Z1pHVm1hVzVwZEdsdmJnQkdkVzVqZEdsdmJpQndZWEpoYldWMFpYSnpJRzExYzNRZ2IyNXNlU0JoY0hCbFlYSWdhVzF0WldScFlYUmxiSGtnWVdaMFpYSWdkR2hsSUdaMWJtTjBhVzl1SUdSbFptbHVhWFJwYjI0QVEyOXljblZ3ZENCcGJXRm5aU0IwZVhCbElHUmxabWx1YVhScGIyNEFWbUZzYVdSaGRHVlNZWGxVY21GamFXNW5RblZwYkhScGJuTkJkRVJsWm1sdWFYUnBiMjRBVm1Gc2FXUmhkR1ZDZFdsc2RFbHVjMEYwUkdWbWFXNXBkR2x2YmdCR2JHRm5TWE5FWldacGJtbDBhVzl1QUVSbFluVm5SblZ1WTNScGIyNUVaV1pwYm1sMGFXOXVBRkpsWTI5eVpFbG1WSGx3WlVSbFptbHVhWFJwYjI0QU9pQmxlSEJsWTNSbFpDQlRkSEpsWVcwZ2RHOGdZbVVnWTI5dWMzUmhiblFnYVc1emRISjFZM1JwYjI0QUlHTmhibTV2ZENCaGNIQmxZWElnWW1WbWIzSmxJSFJvWlNCdFpXMXZjbmtnYlc5a1pXd2dhVzV6ZEhKMVkzUnBiMjRBSjFSaGNtZGxkQ0JNWVdKbGJDY2diM0JsY21GdVpITWdabTl5SUU5d1UzZHBkR05vSUcxMWMzUWdZbVVnU1VSeklHOW1JR0Z1SUU5d1RHRmlaV3dnYVc1emRISjFZM1JwYjI0QVZHaGxJQ2RVY25WbElFeGhZbVZzSnlCdmNHVnlZVzVrSUdadmNpQlBjRUp5WVc1amFFTnZibVJwZEdsdmJtRnNJRzExYzNRZ1ltVWdkR2hsSUVsRUlHOW1JR0Z1SUU5d1RHRmlaV3dnYVc1emRISjFZM1JwYjI0QVZHaGxJQ2RHWVd4elpTQk1ZV0psYkNjZ2IzQmxjbUZ1WkNCbWIzSWdUM0JDY21GdVkyaERiMjVrYVhScGIyNWhiQ0J0ZFhOMElHSmxJSFJvWlNCSlJDQnZaaUJoYmlCUGNFeGhZbVZzSUdsdWMzUnlkV04wYVc5dUFDZFVZWEpuWlhRZ1RHRmlaV3duSUc5d1pYSmhibVJ6SUdadmNpQlBjRUp5WVc1amFDQnRkWE4wSUdKbElIUm9aU0JKUkNCdlppQmhiaUJQY0V4aFltVnNJR2x1YzNSeWRXTjBhVzl1QUVSbFptRjFiSFFnYlhWemRDQmlaU0JoYmlCUGNFeGhZbVZzSUdsdWMzUnlkV04wYVc5dUFDQmtiMlZ6SUc1dmRDQmxibVFnYVc0Z1lXNGdUM0JDY21GdVkyZ2diM0lnVDNCQ2NtRnVZMmhEYjI1a2FYUnBiMjVoYkNCcGJuTjBjblZqZEdsdmJnQWdaRzlsY3lCdWIzUWdaVzVrSUdsdUlHRnVJRTl3UW5KaGJtTm9RMjl1WkdsMGFXOXVZV3dnYjNJZ1QzQlRkMmwwWTJnZ2FXNXpkSEoxWTNScGIyNEFUM0JUZDJsMFkyZ2diWFZ6ZENCaVpTQndjbVZqWldSbFpDQmllU0JoYmlCUGNGTmxiR1ZqZEdsdmJrMWxjbWRsSUdsdWMzUnlkV04wYVc5dUFDQnBjeUJ1YjNRZ1lTQnlaV2RwYzNSbGNtVmtJR2x1YzNSeWRXTjBhVzl1QUVGeVowbHVabThnYlhWemRDQmlaU0JoYmlCQmNtZDFiV1Z1ZEVsdVptOGdaWGgwWlc1a1pXUWdhVzV6ZEhKMVkzUnBiMjRBUzJWeWJtVnNJRzExYzNRZ1ltVWdZU0JMWlhKdVpXd2daWGgwWlc1a1pXUWdhVzV6ZEhKMVkzUnBiMjRBSUdsdUlITmxiV0Z1ZEdsaklHbHVjM1J5ZFdOMGFXOXVJR05oYm01dmRDQmlaU0JoSUc1dmJpMXpaVzFoYm5ScFl5QnBibk4wY25WamRHbHZiZ0FnWkc5bGN5QnViM1FnYUdGMlpTQmhJR1JsWm1sdWFXNW5JRk5RU1ZJdFZpQnBibk4wY25WamRHbHZiZ0JGYldsMFNXNXpkSEoxWTNScGIyNEFSR2x6WVhOelpXMWliR1ZVWVhKblpYUkpibk4wY25WamRHbHZiZ0J3WVhKelpVbHVjM1J5ZFdOMGFXOXVBRkJoY25ObFNXNXpkSEoxWTNScGIyNEFSMlYwVkhsd1pVbHVjM1J5ZFdOMGFXOXVBR04xY25KbGJuUmZablZ1WTNScGIyNEFiV2x6YzJsdVp5QnlaWFIxY200Z1lYUWdaVzVrSUc5bUlHWjFibU4wYVc5dUFDQmpZVzVrYVdSaGRHVWdablZ1WTNScGIyNEFJSGRvYVdOb0lHbHpJRzV2ZENCaElHSnNiMk5ySUdsdUlIUm9aU0JtZFc1amRHbHZiZ0IwWlhKdGFXNWhkRzl5SUdsdWMzUnlkV04wYVc5dUlHOTFkSE5wWkdVZ1puVnVZM1JwYjI0QVQzQk1ZV0psYkNCdmRYUnphV1JsSUdaMWJtTjBhVzl1QUdaMWJtTjBhVzl1SUdsdWMybGtaU0JtZFc1amRHbHZiZ0JFWldKMVp5QnBibVp2SUdWNGRHVnVjMmx2YmlCcGJuTjBjblZqZEdsdmJpQnZkR2hsY2lCMGFHRnVJRVJsWW5WblUyTnZjR1VzSUVSbFluVm5UbTlUWTI5d1pTd2dSR1ZpZFdkR2RXNWpkR2x2YmtSbFptbHVhWFJwYjI0c0lFUmxZblZuUkdWamJHRnlaU3dnWVc1a0lFUmxZblZuVm1Gc2RXVWdabTkxYm1RZ2FXNXphV1JsSUdaMWJtTjBhVzl1QUVSbFluVm5JR2x1Wm04Z1pYaDBaVzV6YVc5dUlHbHVjM1J5ZFdOMGFXOXVJRzkwYUdWeUlIUm9ZVzRnUkdWaWRXZFRZMjl3WlN3Z1JHVmlkV2RPYjFOamIzQmxMQ0JFWldKMVowUmxZMnhoY21Vc0lHRnVaQ0JFWldKMVoxWmhiSFZsSUdadmRXNWtJR2x1YzJsa1pTQm1kVzVqZEdsdmJnQldZWEpwWVdKc1pYTWdZMkZ1SUc1dmRDQm9ZWFpsSUdFZ1puVnVZM1JwYjI1Yk4xMGdjM1J2Y21GblpTQmpiR0Z6Y3lCdmRYUnphV1JsSUc5bUlHRWdablZ1WTNScGIyNEFWbUZ5YVdGaWJHVnpJRzExYzNRZ2FHRjJaU0JoSUdaMWJtTjBhVzl1V3pkZElITjBiM0poWjJVZ1kyeGhjM01nYVc1emFXUmxJRzltSUdFZ1puVnVZM1JwYjI0QUlHUnZaWE1nYm05MElISmxabVZ5Wlc1alpTQmhJR1oxYm1OMGFXOXVBRkpsWjJsemRHVnlSblZ1WTNScGIyNEFUM0JHZFc1amRHbHZia1Z1WkNCM2FYUm9iM1YwSUdOdmNuSmxjM0J2Ym1ScGJtY2dUM0JHZFc1amRHbHZiZ0FnY21WeGRXbHlaWE1nWTJGd1lXSnBiR2wwZVNCSmJuUmxjbkJ2YkdGMGFXOXVSblZ1WTNScGIyNEFiM0lnUkdWaWRXZEdkVzVqZEdsdmJnQkVaV0oxWjFSNWNHVkdkVzVqZEdsdmJnQjBhVzUwT2pwaGMzUTZPa1oxYm1OMGFXOXVBSFJwYm5RNk9uTmxiVG82Um5WdVkzUnBiMjRBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JRSUhOMGIzSmhaMlVnWTJ4aGMzTWdkRzhnWW1VZ1IyVnVaWEpwWXl3Z1EzSnZjM05YYjNKclozSnZkWEFzSUZkdmNtdG5jbTkxY0NCdmNpQkdkVzVqZEdsdmJnQmxlSEJsWTNSbFpDQnpkRzl5WVdkbElHTnNZWE56SUc5bUlIUm9aU0J3YjJsdWRHVnlJSFJ2SUdKbElFZGxibVZ5YVdNc0lFTnliM056VjI5eWEyZHliM1Z3TENCWGIzSnJaM0p2ZFhBZ2IzSWdSblZ1WTNScGIyNEFaWGh3WldOMFpXUWdiM0JsY21GdVpDQlFJSE4wYjNKaFoyVWdZMnhoYzNNZ2RHOGdZbVVnVlc1cFptOXliVU52Ym5OMFlXNTBMQ0JIWlc1bGNtbGpMQ0JEY205emMxZHZjbXRuY205MWNDd2dWMjl5YTJkeWIzVndJRzl5SUVaMWJtTjBhVzl1QUhKaGVTQnhkV1Z5ZVNCcGJuUmxjbk5sWTNScGIyNEFJR2x6SUdsdUlHRnVJR2x1ZG1Gc2FXUWdiR0Y1YjNWMElITmxZM1JwYjI0QUlHaGhjeUIwZDI4Z1ptOXlkMkZ5WkNCbFpHZGxjeUIwYnlCM2FYUm9hVzRnYzJWc1pXTjBhVzl1QUNCc1lYUmxjaUJwYmlCMGFHVWdjMlZzWldOMGFXOXVBSFI1Y0dVb0tTQTlQU0JEYjI1emRISjFZM1JVZVhCbE9qcHJVMlZzWldOMGFXOXVBRTV2UTI5dWRISmhZM1JwYjI0QVZHVnpjMlZzYkdGMGFXOXVSWFpoYkhWaGRHbHZiZ0JUVUZaZlMwaFNYMjV2WDJsdWRHVm5aWEpmZDNKaGNGOWtaV052Y21GMGFXOXVBR2x6SUcxcGMzTnBibWNnWVc0Z1QyWm1jMlYwSUdSbFkyOXlZWFJwYjI0QVNXWWdUM0JVZVhCbFFtOXZiQ0JwY3lCemRHOXlaV1FnYVc0Z1kyOXVhblZ1WTNScGIyNGdkMmwwYUNCUGNGWmhjbWxoWW14bElIVnphVzVuSUVsdWNIVjBJRzl5SUU5MWRIQjFkQ0JUZEc5eVlXZGxJRU5zWVhOelpYTWdhWFFnY21WeGRXbHlaWE1nWVNCQ2RXbHNkRWx1SUdSbFkyOXlZWFJwYjI0QVUzVmphQ0IyWVhKcFlXSnNaWE1nYlhWemRDQmlaU0JwWkdWdWRHbG1hV1ZrSUhkcGRHZ2dZU0JDYkc5amF5QnZjaUJDZFdabVpYSkNiRzlqYXlCa1pXTnZjbUYwYVc5dUFGTjFZMmdnZG1GeWFXRmliR1Z6SUcxMWMzUWdZbVVnYVdSbGJuUnBabWxsWkNCM2FYUm9JR0VnUW14dlkyc2daR1ZqYjNKaGRHbHZiZ0JEYUdWamEwTnZiWEJ2Ym1WdWRFUmxZMjl5WVhScGIyNEFRV1JrVFdWdFltVnlSR1ZqYjNKaGRHbHZiZ0JEYUdWamExVnVhV1p2Y20xRVpXTnZjbUYwYVc5dUFFTm9aV05yUkdWamIzSmhkR2x2Ym5OR2NtOXRSR1ZqYjNKaGRHbHZiZ0JEYUdWamEwSnNiMk5yUkdWamIzSmhkR2x2YmdCWGFHbHNaVVZoWTJoRVpXTnZjbUYwYVc5dUFFTm9aV05yVG05dVYzSnBkR0ZpYkdWRVpXTnZjbUYwYVc5dUFHZHliM1Z3SUc5d1pYSmhkR2x2YmdCUGNHVnVRMHd1UkdWaWRXZEpibVp2TGpFd01DQmtaV0oxWnlCdmNHVnlZWFJwYjI0QVJHVmlkV2RQY0dWeVlYUnBiMjRBVW1GNUlGRjFaWEo1SUcxMWMzUWdZbVVnWVNCdFpXMXZjbmtnYjJKcVpXTjBJR1JsWTJ4aGNtRjBhVzl1QUVocGRDQlBZbXBsWTNRZ2JYVnpkQ0JpWlNCaElHMWxiVzl5ZVNCdlltcGxZM1FnWkdWamJHRnlZWFJwYjI0QUlHTmhibTV2ZENCaGNIQmxZWElnYVc0Z1lTQm1kVzVqZEdsdmJpQmtaV05zWVhKaGRHbHZiZ0FuWTI5dWMzUW5JR1JsWTJ4aGNtRjBhVzl1QUNkc1pYUW5JR1JsWTJ4aGNtRjBhVzl1QUNkdmRtVnljbWxrWlNjZ1pHVmpiR0Z5WVhScGIyNEFSR1ZpZFdkR2RXNWpkR2x2YmtSbFkyeGhjbUYwYVc5dUFGSmxaMmx6ZEdWeVZXNXBjWFZsVkhsd1pVUmxZMnhoY21GMGFXOXVBRWx0Y0c5eWRHVmtSR1ZqYkdGeVlYUnBiMjRBVTNSaGRHbGpJRTFsYldKbGNpQkVaV05zWVhKaGRHbHZiZ0JKYldGbmFXNWhkR2x2YmdBN0lFUmxZblZuSUVsdVptOXliV0YwYVc5dUFGTlFWbDlKVGxSRlRGOWtaWFpwWTJWZmMybGtaVjloZG1OZmJXOTBhVzl1WDJWemRHbHRZWFJwYjI0QVZHVnpjMlZzYkdGMGFXOXVBRk5RVmw5RldGUmZaR1Z0YjNSbFgzUnZYMmhsYkhCbGNsOXBiblp2WTJGMGFXOXVBRk5RVmw5TFNGSmZkR1Z5YldsdVlYUmxYMmx1ZG05allYUnBiMjRBUkdWdGIzUmxWRzlJWld4d1pYSkpiblp2WTJGMGFXOXVBR2RzWDBobGJIQmxja2x1ZG05allYUnBiMjRBVkdWeWJXbHVZWFJsU1c1MmIyTmhkR2x2YmdBNklHbHVJRloxYkd0aGJpQmxiblpwY205dWJXVnVkQ0JOWlcxdmNua2dVMk52Y0dVZ2FYTWdiR2x0YVhSbFpDQjBieUJFWlhacFkyVXNJRkYxWlhWbFJtRnRhV3g1TENCWGIzSnJaM0p2ZFhBc0lGTm9ZV1JsY2tOaGJHeExTRklzSUZOMVltZHliM1Z3TENCdmNpQkpiblp2WTJGMGFXOXVBRkJ5YjJkeVlXMVRZMjl3WlZaaGNtbGhZbXhsVUc5cGJuUmxjbEpsYkc5allYUnBiMjRBVTFCV1gwbE9WRVZNWDJad1oyRmZZblZtWm1WeVgyeHZZMkYwYVc5dUFHbHVkR1Z5Y0c5c1lYUmxJR0YwZEhKcFluVjBaU0J0ZFhOMElHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lFQnNiMk5oZEdsdmJnQldZWEpwWVdKc1pTQnRkWE4wSUdKbElHUmxZMjl5WVhSbFpDQjNhWFJvSUdFZ2JHOWpZWFJwYjI0QVRXVnRZbVZ5Y3lCallXNXViM1FnWW1VZ1lYTnphV2R1WldRZ1lTQnNiMk5oZEdsdmJnQk1iMk5oZEdsdmJnQWdVSEp2Wm1sc1pTQnpjR1ZqYVdacFkyRjBhVzl1QUNCcGN5QnViM1FnWVd4c2IzZGxaQ0JpZVNCV2RXeHJZVzRnTVM0eUlITndaV05wWm1sallYUnBiMjRBSUdseklHNXZkQ0JoYkd4dmQyVmtJR0o1SUZaMWJHdGhiaUF4TGpFZ2MzQmxZMmxtYVdOaGRHbHZiZ0FnYVhNZ2JtOTBJR0ZzYkc5M1pXUWdZbmtnVm5Wc2EyRnVJREV1TUNCemNHVmphV1pwWTJGMGFXOXVBQ0JoY21kMWJXVnVkQ0J0ZFhOMElHSmxJR0VnWTI5dWMzUXRaWGh3Y21WemMybHZiZ0JoSUhKMWJuUnBiV1V0Wlhod2NtVnpjMmx2YmdCdGIyUjFiR1V0YzJOdmNHVWdKM1poY2ljZ2FXNXBkR2xoYkdsNlpYSWdiWFZ6ZENCaVpTQmhJR052Ym5OMFlXNTBJRzl5SUc5MlpYSnlhV1JsTFdWNGNISmxjM05wYjI0QUoyOTJaWEp5YVdSbEp5QnBibWwwYVdGc2FYcGxjaUJ0ZFhOMElHSmxJR0Z1SUc5MlpYSnlhV1JsTFdWNGNISmxjM05wYjI0QVFHOW1abk5sZENCdGRYTjBJR0psSUdOdmJuTjBZVzUwSUdWNGNISmxjM05wYjI0QVFHRnNhV2R1SUcxMWMzUWdZbVVnWTI5dWMzUmhiblFnWlhod2NtVnpjMmx2YmdCQWMybDZaU0J0ZFhOMElHSmxJR052Ym5OMFlXNTBJR1Y0Y0hKbGMzTnBiMjRBWTJGelpTQnpaV3hsWTNSdmNpQnRkWE4wSUdKbElHRWdZMjl1YzNSaGJuUWdaWGh3Y21WemMybHZiZ0JqWVc1dWIzUWdkR0ZyWlNCMGFHVWdZV1JrY21WemN5QnZaaUJsZUhCeVpYTnphVzl1QUdGdUlIVnVaWFpoYkhWaGRHVmtJR1Y0Y0hKbGMzTnBiMjRBZEdsdWREbzZZWE4wT2pwQ2FXNWhjbmxGZUhCeVpYTnphVzl1QUhScGJuUTZPbUZ6ZERvNlVHaHZibmxGZUhCeVpYTnphVzl1QUhScGJuUTZPbUZ6ZERvNlFtbDBZMkZ6ZEVWNGNISmxjM05wYjI0QWRHbHVkRG82WVhOME9qcEpibVJsZUVGalkyVnpjMjl5Ulhod2NtVnpjMmx2YmdCMGFXNTBPanB6WlcwNk9rbHVaR1Y0UVdOalpYTnpiM0pGZUhCeVpYTnphVzl1QUhScGJuUTZPbUZ6ZERvNlRXVnRZbVZ5UVdOalpYTnpiM0pGZUhCeVpYTnphVzl1QUhScGJuUTZPbk5sYlRvNlRXVnRZbVZ5UVdOalpYTnpiM0pGZUhCeVpYTnphVzl1QUhScGJuUTZPbUZ6ZERvNlFXTmpaWE56YjNKRmVIQnlaWE56YVc5dUFIUnBiblE2T21GemREbzZTV1JsYm5ScFptbGxja1Y0Y0hKbGMzTnBiMjRBZEdsdWREbzZZWE4wT2pwVmJtRnllVTl3Ulhod2NtVnpjMmx2YmdCMGFXNTBPanB6WlcwNk9rWjFibU4wYVc5dVJYaHdjbVZ6YzJsdmJnQjBhVzUwT2pwaGMzUTZPa05oYkd4RmVIQnlaWE56YVc5dUFIUnBiblE2T21GemREbzZTVzUwVEdsMFpYSmhiRVY0Y0hKbGMzTnBiMjRBZEdsdWREbzZZWE4wT2pwR2JHOWhkRXhwZEdWeVlXeEZlSEJ5WlhOemFXOXVBSFJwYm5RNk9tRnpkRG82UW05dmJFeHBkR1Z5WVd4RmVIQnlaWE56YVc5dUFIUnBiblE2T21GemREbzZUR2wwWlhKaGJFVjRjSEpsYzNOcGIyNEFSR1ZpZFdkRmVIQnlaWE56YVc5dUFIUnBiblE2T25ObGJUbzZWbUZzZFdWRmVIQnlaWE56YVc5dUFIUnBiblE2T25ObGJUbzZWSGx3WlVWNGNISmxjM05wYjI0QWRHbHVkRG82WVhOME9qcEZlSEJ5WlhOemFXOXVBSFJwYm5RNk9uTmxiVG82Ulhod2NtVnpjMmx2YmdBZ1kyRnVaR2xrWVhSbElHTnZiblpsY25OcGIyNEFkR2x1ZERvNmMyVnRPanBXWVd4MVpVTnZiblpsY25OcGIyNEFVMkYwZFhKaGRHVmtRMjl1ZG1WeWMybHZiZ0JWYm10dWIzZHVJRTV2YmxObGJXRnVkR2xqTGtOc2MzQjJVbVZtYkdWamRHbHZiaUJwYlhCdmNuUWdkbVZ5YzJsdmJnQk5hWE56YVc1bklFNXZibE5sYldGdWRHbGpMa05zYzNCMlVtVm1iR1ZqZEdsdmJpQnBiWEJ2Y25RZ2RtVnljMmx2YmdCRVYwRlNSaUJXWlhKemFXOXVBRVZTVWs5U1gyNXZkRjl2Y0Y5bGVIUmxibk5wYjI0QVNYTkZibUZpYkdWa1FubEZlSFJsYm5OcGIyNEFVMjkxY21ObFJYaDBaVzV6YVc5dUFFRmtaRVY0ZEdWdWMybHZiZ0JIWlhSRWFXMWxibk5wYjI0QVpHbHpZV0pzWlY5MllXeHBaR0YwYVc5dVgxOWlhVzVrYVc1blgzQnZhVzUwWDJOdmJHeHBjMmx2YmdCU1pXeGhlR1ZrVUhKbFkybHphVzl1QUZWdWFXOXVBRTF2YmdCRGIyeDFiVzRBUUdKMWFXeDBhVzRBYVc1MllYSnBZVzUwSUdGMGRISnBZblYwWlNCdGRYTjBJRzl1YkhrZ1ltVWdZWEJ3YkdsbFpDQjBieUJoSUhCdmMybDBhVzl1SUdKMWFXeDBhVzRBZFhObElHOW1JR1JsY0hKbFkyRjBaV1FnWW5WcGJIUnBiZ0IwYVc1ME9qcHpaVzA2T2tKMWFXeDBhVzRBWVhOcGJnQm9ZV3htWDNOcGJnQnVZWFJwZG1WZmMybHVBRUZ6YVc0QVptMXBiZ0IxWDIxcGJnQnpYMjFwYmdCSmJrSnZkVzVrYzBGalkyVnpjME5vWVdsdUFFbHVRbTkxYm1SelVIUnlRV05qWlhOelEyaGhhVzRBWDE5cGJnQlRhVzRBWVhSdmJXbGpUV2x1QUVkeWIzVndWVTFwYmdCSGNtOTFjRTV2YmxWdWFXWnZjbTFWVFdsdUFFRjBiMjFwWTFWTmFXNEFSM0p2ZFhCVFRXbHVBRWR5YjNWd1RtOXVWVzVwWm05eWJWTk5hVzRBUVhSdmJXbGpVMDFwYmdCT1RXbHVBRWR5YjNWd1JrMXBiZ0JIY205MWNFNXZibFZ1YVdadmNtMUdUV2x1QUdKMWFXeDBMV2x1QUdOdmNIbHphV2R1QUVCaGJHbG5iZ0JUVTJsbmJnQkdVMmxuYmdCMmMzUnZjbVZmYUdGc1ptNEFkbXh2WVdSZmFHRnNabTRBZG5OMGIzSmxZVjlvWVd4bWJnQjJiRzloWkdGZmFHRnNabTRBVTNCaFkybHVaMFp5WVdOMGFXOXVZV3hGZG1WdUFGSnZkVzVrUlhabGJnQkViMjUwUm14aGRIUmxiZ0IyYzNSdmNtVnVBSFpzYjJGa2JnQmhkR0Z1QUdoaGJHWmZkR0Z1QUc1aGRHbDJaVjkwWVc0QVFYUmhiZ0J1WVc0QVZuVnNhMkZ1QUVaVmJtOXlaRXhsYzNOVWFHRnVBRVpQY21STVpYTnpWR2hoYmdCVlRHVnpjMVJvWVc0QVUweGxjM05VYUdGdUFFWlZibTl5WkVkeVpXRjBaWEpVYUdGdUFFWlBjbVJIY21WaGRHVnlWR2hoYmdCVlIzSmxZWFJsY2xSb1lXNEFVMGR5WldGMFpYSlVhR0Z1QUVKdmIyeGxZVzRBUlhoamJIVnphWFpsVTJOaGJnQkpibU5zZFhOcGRtVlRZMkZ1QUZSaGJnQnBjMDVoYmdCSmMwNWhiZ0JLWVc0QVFuVnBiSFJKYmdCbGJuVnRBRVJsWW5WblZIbHdaVVZ1ZFcwQVkyaHliMjFwZFcwQVlYTnRBSFZ1Y0dGamF6UjRPSFZ1YjNKdEFHSm5jbUU0ZFc1dmNtMEFjbWRpWVRoMWJtOXliUUIxYm5CaFkyc3llREUyZFc1dmNtMEFkVzV3WVdOck5IZzRjMjV2Y20wQWNtZGlZVGh6Ym05eWJRQjFibkJoWTJzeWVERTJjMjV2Y20wQVVtYzRVMjV2Y20wQVVtZGlZVGhUYm05eWJRQlNPRk51YjNKdEFGSm5NVFpUYm05eWJRQlNaMkpoTVRaVGJtOXliUUJTTVRaVGJtOXliUUIwYVc1ME9qcDBjbUZ1YzJadmNtMDZPbFJ5WVc1elptOXliUUJ5WlhOMWJIUWdiMllnWlhod2NtVnpjMmx2YmlCdFlYa2dZbVVnYm05dUxYVnVhV1p2Y20wQUp5QnRZWGtnWW1VZ2JtOXVMWFZ1YVdadmNtMEFRWEpuZFcxbGJuUlZibWxtYjNKdEFFRnlaM1Z0Wlc1MFVHOXBiblJsY2xWdWFXWnZjbTBBU1cxaFoyVkJjbWQxYldWdWRFbHVabTlEYUdGdWJtVnNUM0prWlhKVmJtbG1iM0p0QUZOb1lXUmxjazV2YmxWdWFXWnZjbTBBUjNKdmRYQk9iMjVWYm1sbWIzSnRBRWx0WVdkbFFYSm5kVzFsYm5SSmJtWnZRMmhoYm01bGJFUmhkR0ZVZVhCbFZXNXBabTl5YlFCQmNtZDFiV1Z1ZEZCdlpGVnVhV1p2Y20wQVEyOXVjM1JoYm5SRVlYUmhWVzVwWm05eWJRQWdZblYwSUdoaGN5QmhiSFJsY201aGRHVWdjR0YwYUhNZ2NtVmhZMmhwYm1jZ2FYUXNJSE4wWVhKMGFXNW5JR1p5YjIwQVVYVmhiR052YlcwQVZHVnNiSFZ6YVcwQVptUnBiUUJUY0dWalEyOXVjM1JoYm5SWGIzSnJSR2x0QUVsdUlGWjFiR3RoYml3Z1QzQkpiV0ZuWlNwRWNtVm1LaUJwYm5OMGNuVmpkR2x2Ym5NZ2JYVnpkQ0J1YjNRZ2RYTmxJR2x0WVdkbGN5QjNhWFJvSUdFZ00wUWdSR2x0QUZOU1pXMEFSbEpsYlFCZmNHRnlZVzBBVTNSeVpXRnRBQnRiTXpSdEFCdGJNek50QUJ0Yk16SnRBQnRiTXpGdEFCdGJNRzBBRzFzeE96TXdiUUJIY205MWNFNXZibFZ1YVdadmNtMUpUWFZzQUVkeWIzVndUbTl1Vlc1cFptOXliVVpOZFd3QVNuVnNBRk5RVmw5SlRsUkZURjltY0dkaFgyUnpjRjlqYjI1MGNtOXNBSE4wYjNKaFoyVWdkR1Y0ZEhWeVpTQnRhWE56YVc1bklHRmpZMlZ6Y3lCamIyNTBjbTlzQUhOMGIzSmhaMlVnZEdWNGRIVnlaWE1nWTNWeWNtVnVkR3g1SUc5dWJIa2djM1Z3Y0c5eWRDQW5kM0pwZEdVbklHRmpZMlZ6Y3lCamIyNTBjbTlzQUd4dmIzQWdZMjl1ZEhKdmJBQm1kVzVqZEdsdmJpQmpiMjUwY205c0FITmxiR1ZqZEdsdmJpQmpiMjUwY205c0FGUmxjM05sYkd4aGRHbHZia052Ym5SeWIyd0FSR1Z5YVhaaGRHbDJaVU52Ym5SeWIyd0FZbTl2YkFCU1pYTjFiSFFnVkhsd1pTQnRkWE4wSUdKbElFOXdWSGx3WlVKdmIyd0FkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82UW05dmJBQjBhVzUwT2pwMGVYQmxPanBDYjI5c0FIUnBiblJmYzNsdFltOXNBRzV2SUhOMGNuVmpkSFZ5WlNCMGVYQmxJSEpsWjJsemRHVnlaV1FnWm05eUlITjViV0p2YkFCTllYUmphRk4wWVhSbExrMWhkR05vS0NrZ2NtVjBkWEp1WldRZ2JuVnNiQUJEYjI1emRHRnVkRTUxYkd3QVJuVnNiQUJFYjI1MFZXNXliMnhzQUV0cGJHd0FiV2x6YzJsdVp5QW5LQ2NnWm05eUlHSjFhV3gwYVc0Z1puVnVZM1JwYjI0Z1kyRnNiQUJsYm5SeWVTQndiMmx1ZENCbWRXNWpkR2x2Ym5NZ1kyRnVibTkwSUdKbElIUm9aU0IwWVhKblpYUWdiMllnWVNCbWRXNWpkR2x2YmlCallXeHNBRVoxYm1OMGFXOXVRMkZzYkFCMGFXNTBPanB6WlcwNk9rTmhiR3dBUkc5MFVISnZaSFZqZEVsdWNIVjBRV3hzQUVkeWIzVndRV3hzQUVkeWIzVndUbTl1Vlc1cFptOXliVUZzYkFCQmNISnBiQUJqWldsc0FFTmxhV3dBUkdWd2RHaFRkR1Z1WTJsc0FHTjBZV2xzQUVWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdFZ2MzUnlkV04wSUdOdmJuUmhhVzVwYm1jZ1lXNGdhVzUwSUhOallXeGhjaUJoYm1RZ1lTQjBaWGhsYkFCT2IyNVFjbWwyWVhSbFZHVjRaV3dBVm05c1lYUnBiR1ZVWlhobGJBQnNaWFpsYkFCMFpYaDBkWEpsVTJGdGNHeGxRMjl0Y0dGeVpVeGxkbVZzQUhSbGVIUjFjbVZUWVcxd2JHVk1aWFpsYkFCSmJuUmxiQUJYWVdsMFMyVnlibVZzQUVWdWNYVmxkV1ZMWlhKdVpXd0FUbUZ0WlNCdGRYTjBJRzFoZEdOb0lHRnVJR1Z1ZEhKNUxYQnZhVzUwSUdadmNpQkxaWEp1Wld3QVUxQldYMHRJVWw5MmRXeHJZVzVmYldWdGIzSjVYMjF2WkdWc0FHMWxiVzl5ZVNCdGIyUmxiQUFnYVc1emRISjFZM1JwYjI1eklISmxjWFZwY21VZ1IyVnZiV1YwY25rZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzQUU5d1ZHVnliV2x1WVhSbFNXNTJiMk5oZEdsdmJpQnlaWEYxYVhKbGN5QkdjbUZuYldWdWRDQmxlR1ZqZFhScGIyNGdiVzlrWld3QVQzQkxhV3hzSUhKbGNYVnBjbVZ6SUVaeVlXZHRaVzUwSUdWNFpXTjFkR2x2YmlCdGIyUmxiQUJQY0VselNHVnNjR1Z5U1c1MmIyTmhkR2x2YmtWWVZDQnlaWEYxYVhKbGN5QkdjbUZuYldWdWRDQmxlR1ZqZFhScGIyNGdiVzlrWld3QVQzQkVaVzF2ZEdWVWIwaGxiSEJsY2tsdWRtOWpZWFJwYjI1RldGUWdjbVZ4ZFdseVpYTWdSbkpoWjIxbGJuUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0FFOXdRbVZuYVc1SmJuWnZZMkYwYVc5dVNXNTBaWEpzYjJOclJWaFVMMDl3Ulc1a1NXNTJiMk5oZEdsdmJrbHVkR1Z5Ykc5amEwVllWQ0J5WlhGMWFYSmxJRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJBQlRhR0ZrWlhKRFlXeHNTMGhTSUUxbGJXOXllU0JUWTI5d1pTQnlaWEYxYVhKbGN5QmhJSEpoZVNCMGNtRmphVzVuSUdWNFpXTjFkR2x2YmlCdGIyUmxiQUJQY0VsdFlXZGxVWFZsY25sTWIyUWdjbVZ4ZFdseVpYTWdSR1Z5YVhaaGRHbDJaVWR5YjNWd1VYVmhaSE5PVmlCdmNpQkVaWEpwZG1GMGFYWmxSM0p2ZFhCTWFXNWxZWEpPVmlCbGVHVmpkWFJwYjI0Z2JXOWtaU0JtYjNJZ1IweERiMjF3ZFhSbElHVjRaV04xZEdsdmJpQnRiMlJsYkFCUGNFbHRZV2RsVVhWbGNubE1iMlFnY21WeGRXbHlaWE1nUm5KaFoyMWxiblFnYjNJZ1IweERiMjF3ZFhSbElHVjRaV04xZEdsdmJpQnRiMlJsYkFCWGIzSnJaM0p2ZFhBZ1RXVnRiM0o1SUZOamIzQmxJR2x6SUd4cGJXbDBaV1FnZEc4Z1RXVnphRTVXTENCVVlYTnJUbFlzSUUxbGMyaEZXRlFzSUZSaGMydEZXRlFzSUZSbGMzTmxiR3hoZEdsdmJrTnZiblJ5YjJ3c0lHRnVaQ0JIVEVOdmJYQjFkR1VnWlhobFkzVjBhVzl1SUcxdlpHVnNBR2x1SUZaMWJHdGhiaUJsYm5acGNtOXViV1Z1ZEN3Z1YyOXlhMmR5YjNWd0lGTjBiM0poWjJVZ1EyeGhjM01nYVhNZ2JHbHRhWFJsWkNCMGJ5Qk5aWE5vVGxZc0lGUmhjMnRPVml3Z1lXNWtJRWRNUTI5dGNIVjBaU0JsZUdWamRYUnBiMjRnYlc5a1pXd0FUM0JGYldsMFRXVnphRlJoYzJ0elJWaFVJSEpsY1hWcGNtVnpJRlJoYzJ0RldGUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0FFOXdVMlYwVFdWemFFOTFkSEIxZEhORldGUWdjbVZ4ZFdseVpYTWdUV1Z6YUVWWVZDQmxlR1ZqZFhScGIyNGdiVzlrWld3QVQzQlVaWEp0YVc1aGRHVlNZWGxMU0ZJZ2NtVnhkV2x5WlhNZ1FXNTVTR2wwUzBoU0lHVjRaV04xZEdsdmJpQnRiMlJsYkFCUGNFbG5ibTl5WlVsdWRHVnljMlZqZEdsdmJrdElVaUJ5WlhGMWFYSmxjeUJCYm5sSWFYUkxTRklnWlhobFkzVjBhVzl1SUcxdlpHVnNBRWhwZEVGMGRISnBZblYwWlV0SVVpQlRkRzl5WVdkbElFTnNZWE56SUdseklHeHBiV2wwWldRZ2RHOGdTVzUwWlhKelpXTjBhVzl1UzBoU0xDQkJibmxJYVhSTFNGSXNJSE5oYm1RZ1EyeHZjMlZ6ZEVocGRFdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FTR2wwVDJKcVpXTjBRWFIwY21saWRYUmxUbFlnVTNSdmNtRm5aU0JEYkdGemN5QnBjeUJzYVcxcGRHVmtJSFJ2SUZKaGVVZGxibVZ5WVhScGIyNUxTRklzSUVOc2IzTmxjM1JJYVhSTFNGSWdiM0lnVFdsemMwdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FTVzVqYjIxcGJtZFNZWGxRWVhsc2IyRmtTMGhTSUZOMGIzSmhaMlVnUTJ4aGMzTWdhWE1nYkdsdGFYUmxaQ0IwYnlCQmJubElhWFJMU0ZJc0lFTnNiM05sYzNSSWFYUkxTRklzSUdGdVpDQk5hWE56UzBoU0lHVjRaV04xZEdsdmJpQnRiMlJsYkFCU1lYbFFZWGxzYjJGa1MwaFNJRk4wYjNKaFoyVWdRMnhoYzNNZ2FYTWdiR2x0YVhSbFpDQjBieUJTWVhsSFpXNWxjbUYwYVc5dVMwaFNMQ0JEYkc5elpYTjBTR2wwUzBoU0xDQmhibVFnVFdsemMwdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FVMmhoWkdWeVVtVmpiM0prUW5WbVptVnlTMGhTSUZOMGIzSmhaMlVnUTJ4aGMzTWdhWE1nYkdsdGFYUmxaQ0IwYnlCU1lYbEhaVzVsY21GMGFXOXVTMGhTTENCSmJuUmxjbk5sWTNScGIyNUxTRklzSUVGdWVVaHBkRXRJVWl3Z1EyeHZjMlZ6ZEVocGRFdElVaXdnUTJGc2JHRmliR1ZMU0ZJc0lHRnVaQ0JOYVhOelMwaFNJR1Y0WldOMWRHbHZiaUJ0YjJSbGJBQkRZV3hzWVdKc1pVUmhkR0ZMU0ZJZ1UzUnZjbUZuWlNCRGJHRnpjeUJwY3lCc2FXMXBkR1ZrSUhSdklGSmhlVWRsYm1WeVlYUnBiMjVMU0ZJc0lFTnNiM05sYzNSSWFYUkxTRklzSUVOaGJHeGhZbXhsUzBoU0xDQmhibVFnVFdsemMwdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FUM0JTWlhCdmNuUkpiblJsY25ObFkzUnBiMjVMU0ZJZ2NtVnhkV2x5WlhNZ1NXNTBaWEp6WldOMGFXOXVTMGhTSUdWNFpXTjFkR2x2YmlCdGIyUmxiQUFnY21WeGRXbHlaWE1nVW1GNVIyVnVaWEpoZEdsdmJrdElVaUJsZUdWamRYUnBiMjRnYlc5a1pXd0FWR0Z6YTFCaGVXeHZZV1JYYjNKclozSnZkWEJGV0ZRZ1UzUnZjbUZuWlNCRGJHRnpjeUJwY3lCc2FXMXBkR1ZrSUhSdklGUmhjMnRGV0ZRZ1lXNWtJRTFsYzJoTFNGSWdaWGhsWTNWMGFXOXVJRzF2WkdWc0FFbHVZMjl0YVc1blEyRnNiR0ZpYkdWRVlYUmhTMGhTSUZOMGIzSmhaMlVnUTJ4aGMzTWdhWE1nYkdsdGFYUmxaQ0IwYnlCRFlXeHNZV0pzWlV0SVVpQmxlR1ZqZFhScGIyNGdiVzlrWld3QVlXUmtjbVZ6YzJsdVp5QnRiMlJsYkFCV2RXeHJZVzVOWlcxdmNubE5iMlJsYkFCWGIzSnJaM0p2ZFhBZ1RXVnRiM0o1SUZOamIzQmxJR05oYmlkMElHSmxJSFZ6WldRZ2QybDBhQ0JVWlhOelpXeHNZWFJwYjI1RGIyNTBjbTlzSUhWemFXNW5JRWRNVTB3ME5UQWdUV1Z0YjNKNUlFMXZaR1ZzQUVFZ1puVnVZM1JwYjI0Z2JYVnpkQ0JpWldkcGJpQjNhWFJvSUdFZ2JHRmlaV3dBSUcxMWMzUWdZbVVnWVc0Z1QzQk1ZV0psYkFCMGFXNTBPanBoYzNRNk9sUjVjR1ZFWldOc0FGVnVhR0Z1Wkd4bFpDQlVlWEJsUkdWamJBQkdiR0ZuUm5ka1JHVmpiQUE2SUUxbGJXOXllU0JUWlcxaGJuUnBZM01nVW1Wc1pXRnpaU0JoYm1RZ1FXTnhkV2x5WlZKbGJHVmhjMlVnWTJGdWJtOTBJR0psSUhWelpXUWdabTl5SUc5d1pYSmhibVFnVlc1bGNYVmhiQUJRZEhKT2IzUkZjWFZoYkFCTWIyZHBZMkZzVG05MFJYRjFZV3dBUmxWdWIzSmtUbTkwUlhGMVlXd0FSazl5WkU1dmRFVnhkV0ZzQUVsT2IzUkZjWFZoYkFCUWRISkZjWFZoYkFCR1ZXNXZjbVJNWlhOelZHaGhia1Z4ZFdGc0FFWlBjbVJNWlhOelZHaGhia1Z4ZFdGc0FGVk1aWE56VkdoaGJrVnhkV0ZzQUZOTVpYTnpWR2hoYmtWeGRXRnNBRVpWYm05eVpFZHlaV0YwWlhKVWFHRnVSWEYxWVd3QVJrOXlaRWR5WldGMFpYSlVhR0Z1UlhGMVlXd0FWVWR5WldGMFpYSlVhR0Z1UlhGMVlXd0FVMGR5WldGMFpYSlVhR0Z1UlhGMVlXd0FSM0p2ZFhCT2IyNVZibWxtYjNKdFFXeHNSWEYxWVd3QVRHOW5hV05oYkVWeGRXRnNBRk53WVdOcGJtZEZjWFZoYkFCR1ZXNXZjbVJGY1hWaGJBQkdUM0prUlhGMVlXd0FTVVZ4ZFdGc0FHWmhkR0ZzQUZWdWFYWmxjbk5oYkFCRVpYQjBhRVpwY25OMFZISmhkbVZ5YzJGc0FFNXZiblJsYlhCdmNtRnNBSFJsZUhSMWNtVmZaWGgwWlhKdVlXd0FhVzUwWlhKdVlXd0FRbkpoYm1Ob1EyOXVaR2wwYVc5dVlXd0FTWE5PYjNKdFlXd0FSbXhoWjBGeWRHbG1hV05wWVd3QVJteGhaMGx6VEc5allXd0FhV1JsYm5ScFkyRnNBRU52Y0hsTWIyZHBZMkZzQUZOb2FXWjBVbWxuYUhSTWIyZHBZMkZzQUZOb2FXWjBUR1ZtZEV4dloybGpZV3dBUW5sV1lXd0FVMUJXWDBGTlJGOXphR0ZrWlhKZlpuSmhaMjFsYm5SZmJXRnphd0JUVUZaZlMwaFNYM0poZVY5amRXeHNYMjFoYzJzQWMyRnRjR3hsWDIxaGMyc0FUblZ0WW1WeUlHOW1JR2x0WVdkbElHOXdaWEpoYm1RZ2FXUnpJR1J2WlhOdUozUWdZMjl5Y21WemNHOXVaQ0IwYnlCMGFHVWdZbWwwSUcxaGMyc0FVM1ZpWjNKdmRYQk1kRTFoYzJzQVUzVmlaM0p2ZFhCSGRFMWhjMnNBVTNWaVozSnZkWEJGY1UxaGMyc0FaMnhmVTJGdGNHeGxUV0Z6YXdCVGRXSm5jbTkxY0V4bFRXRnphd0JUZFdKbmNtOTFjRWRsVFdGemF3Qk9iMEZzYVdGelNVNVVSVXhOWVhOckFFRnNhV0Z6VTJOdmNHVkpUbFJGVEUxaGMyc0FVMUJXWDBWWVZGOW1jbUZuYldWdWRGOXphR0ZrWlhKZmFXNTBaWEpzYjJOckFGTlFWbDlMU0ZKZmMyaGhaR1Z5WDJOc2IyTnJBR05oYzJVZ1pXNTBjbmtnWW14dlkyc0FZMkZ6WlNCbGVHbDBJR0pzYjJOckFHSnlaV0ZyTFdsbUlHMTFjM1FnWW1VZ2RHaGxJR3hoYzNRZ2MzUmhkR1Z0Wlc1MElHbHVJR0VnWTI5dWRHbHVkV2x1WnlCaWJHOWphd0JpY21WaGF5MXBaaUJ0ZFhOMElHSmxJR2x1SUdFZ1kyOXVkR2x1ZFdsdVp5QmliRzlqYXdBZ1kyRnVibTkwSUdKbElHbDBjeUJ2ZDI0Z2JXVnlaMlVnWW14dlkyc0FZbUZqYXkxbFpHZGxJR0pzYjJOckFFUmxZblZuSUdsdVptOGdaWGgwWlc1emFXOXVJR2x1YzNSeWRXTjBhVzl1SUdadmRXNWtJR2x1YzJsa1pTQm1kVzVqZEdsdmJpQmlkWFFnYjNWMGMybGtaU0JpYkc5amF3Qk9iMjR0VDNCR2RXNWpkR2x2YmxCaGNtRnRaWFJsY2lBb2IzQmpiMlJsT2lBbFpDa2dabTkxYm1RZ2FXNXphV1JsSUdaMWJtTjBhVzl1SUdKMWRDQnZkWFJ6YVdSbElHSmhjMmxqSUdKc2IyTnJBSFJsY20xcGJtRjBiM0lnYVc1emRISjFZM1JwYjI0Z2IzVjBjMmxrWlNCaVlYTnBZeUJpYkc5amF3QlBjRXhoWW1Wc0lHbHVjMmxrWlNCaVlYTnBZeUJpYkc5amF3QlBjRVoxYm1OMGFXOXVSVzVrSUdsdWMybGtaU0JpWVhOcFl5QmliRzlqYXdCT2IyNHRjMlZ0WVc1MGFXTWdUM0JGZUhSSmJuTjBJSGRwZEdocGJpQm1kVzVqZEdsdmJpQmtaV1pwYm1sMGFXOXVJRzExYzNRZ1lYQndaV0Z5SUdsdUlHRWdZbXh2WTJzQVJtbHVaRU52Ym5OMGNuVmpkRVp2Y2tWdWRISjVRbXh2WTJzQVVtVm5hWE4wWlhKQ2JHOWphd0JDZFdabVpYSkNiRzlqYXdCRVpXSjFaMHhsZUdsallXeENiRzlqYXdCV1pYSnphVzl1UTJobFkyc0FhVzUwWlhKdVlXd2daWEp5YjNJNklITjBZWEowYVc1bklHTnZiblJwYm5WbElHTnZibk4wY25WamRDd2daWGh3WldOMFpXUWdiRzl2Y0NCdmJpQjBiM0FnYjJZZ2MzUmhZMnNBVkhKaGJuTm1iM0p0Um1WbFpHSmhZMnNBUkdWaWRXZFVlWEJsVkdWdGNHeGhkR1ZRWVhKaGJXVjBaWEpRWVdOckFHSnlaV0ZyQUVKeVpXRnJBR0YwYjIxcFkwTnZiWEJoY21WRmVHTm9ZVzVuWlZkbFlXc0FRWFJ2YldsalEyOXRjR0Z5WlVWNFkyaGhibWRsVjJWaGF3QlNaemgxYVFCU1oySmhPSFZwQUZJNGRXa0FVbWN4Tm5WcEFGSm5ZbUV4Tm5WcEFGSXhOblZwQUZJMk5IVnBBRkpuWWpFd1lUSjFhUUJTWnpNeWRXa0FVbWRpWVRNeWRXa0FVak15ZFdrQVJuSnBBR0ZqYjNOd2FRQmhjMmx1Y0drQVlYUmhibkJwQUdGMFlXNHljR2tBVkdGcFkyaHBJRWR5WVhCb2FXTnpJRlJoYVdOb2FRQjFYMjExYkY5b2FRQnpYMjExYkY5b2FRQjFYMjFoWkY5b2FRQnpYMjFoWkY5b2FRQldZV3hwWkdGMFpWQm9hUUJTWnpocEFGSm5ZbUU0YVFCU09Ha0FVbWN4Tm1rQVVtZGlZVEUyYVFCU01UWnBBSFpsWXpScEFGSTJOR2tBZG1Wak0ya0FkbVZqTW1rQVVtY3pNbWtBVW1kaVlUTXlhUUJTTXpKcEFHWnlZV2RmWkdWd2RHZ0FJR1JsY0hSb0FFZGxkRUpzYjJOclJHVndkR2dBWjJ4ZlJuSmhaMFJsY0hSb0FDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSUcxaGRISnBlQ0IzYVhSb0FGSmhlV0Z1SUVoaGRHOTFkQ0JUVUVsU1ZsTnRhWFJvQUdKaFpGOWhjbkpoZVY5dVpYZGZiR1Z1WjNSb0FHWmhjM1JmYkdWdVozUm9BSGRvWlc0Z1kyRnNZM1ZzWVhScGJtY2diR1Z1WjNSb0FFUmxjR1Z1WkdWdVkzbE1aVzVuZEdnQVlYSnlZWGxNWlc1bmRHZ0FRWEp5WVhsTVpXNW5kR2dBWm5kcFpIUm9BRVozYVdSMGFBQkhaWFJDYVhSWGFXUjBhQUJFWldKMVoxTjBiM0poWjJWUVlYUm9BR0ZqYjNOb0FFRmpiM05vQUVOdmMyZ0FZWE5wYm1nQVFYTnBibWdBVTJsdWFBQmhkR0Z1YUFCQmRHRnVhQUJVWVc1b0FGTlFWbDlPVmw5blpXOXRaWFJ5ZVY5emFHRmtaWEpmY0dGemMzUm9jbTkxWjJnQVptRnNiSFJvY205MVoyZ0FjM2RwZEdOb0FGTjNhWFJqYUFCd2NtVm1aWFJqYUFCVFVGWmZRVTFFWDJkd2RWOXphR0ZrWlhKZmFHRnNabDltYkc5aGRGOW1aWFJqYUFCSmJXRm5aVk53WVhKelpVWmxkR05vQUdGdVpDQlBjRWx0WVdkbFJtVjBZMmdBVTNWaVozSnZkWEJFYVhOd1lYUmphQUJVYUdVZ2RIbHdaWE1nYjJZZ1QzQmxjbUZ1WkNBeElHRnVaQ0JQY0dWeVlXNWtJRElnYlhWemRDQnRZWFJqYUFCUVlYUmphQUJOWVhKamFBQkNjbUZ1WTJnQWJXRjBOSGcwYUFCdFlYUXplRFJvQUcxaGRESjROR2dBZG1Wak5HZ0FiV0YwTkhnemFBQnRZWFF6ZUROb0FHMWhkREo0TTJnQWRtVmpNMmdBYldGME5IZ3lhQUJ0WVhRemVESm9BRzFoZERKNE1tZ0FkbVZqTW1nQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2YjNCMEwybHlYMk52Ym5SbGVIUXVhQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdlkyeHZibVZmWTI5dWRHVjRkQzVvQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1YwYVd3dmFXeHBjM1F1YUFBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZkWFJwYkhNdmNtVnpkV3gwTG1nQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM1JvYVhKa1gzQmhjblI1TDNaMWJHdGhiaTFrWlhCekwzTndhWEoyTFhSdmIyeHpMM055WXk5emIzVnlZMlV2YjNCMEwyTnZibk4wWVc1MGN5NW9BQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZkSEpoZG1WeWMyVmZaWGh3Y21WemMybHZibk11YUFBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzkxZEdsc0wzTjBjbWx1WjE5MWRHbHNjeTVvQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1YwYVd3dmMyMWhiR3hmZG1WamRHOXlMbWdBTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwzSmxjMjlzZG1WeUwzTmxiVjlvWld4d1pYSXVhQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmRHaHBjbVJmY0dGeWRIa3ZkblZzYTJGdUxXUmxjSE12YzNCcGNuWXRkRzl2YkhNdmMzSmpMM052ZFhKalpTOXZjSFF2ZEhsd1pWOXRZVzVoWjJWeUxtZ0FMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDNCeWIyZHlZVzFmWW5WcGJHUmxjaTVvQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOWpiMjV6ZEdGdWRDOXpZMkZzWVhJdWFBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZFhScGJITXZhR0Z6YUcxaGNDNW9BQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZhVzVtYnk1b0FDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzkwYUdseVpGOXdZWEowZVM5MmRXeHJZVzR0WkdWd2N5OXpjR2x5ZGkxMGIyOXNjeTl6Y21NdmMyOTFjbU5sTDI5d2RDOXBibk4wY25WamRHbHZiaTVvQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOTBhR2x5WkY5d1lYSjBlUzkyZFd4cllXNHRaR1Z3Y3k5emNHbHlkaTEwYjI5c2N5OXpjbU12YzI5MWNtTmxMM1poYkM5cGJuTjBjblZqZEdsdmJpNW9BQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5eVpXRmtaWEl2YzNCcGNuWXZablZ1WTNScGIyNHVhQUF2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmRHaHBjbVJmY0dGeWRIa3ZkblZzYTJGdUxXUmxjSE12YzNCcGNuWXRkRzl2YkhNdmMzSmpMM052ZFhKalpTOXZjSFF2WW1GemFXTmZZbXh2WTJzdWFBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5MllXd3ZkbUZzYVdSaGRHbHZibDl6ZEdGMFpTNW9BQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5MWRHbHNjeTlvWVhOb2JXRndYMkpoYzJVdWFBQXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2ZEdocGNtUmZjR0Z5ZEhrdmRuVnNhMkZ1TFdSbGNITXZjM0JwY25ZdGRHOXZiSE12YzNKakwzTnZkWEpqWlM5MWRHbHNMMmxzYVhOMFgyNXZaR1V1YUFBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZkR2hwY21SZmNHRnlkSGt2ZG5Wc2EyRnVMV1JsY0hNdmMzQnBjbll0ZEc5dmJITXZjM0pqTDNOdmRYSmpaUzlqWm1FdWFBQkJkV2NBYUdGc1psOXNiMmNBYm1GMGFYWmxYMnh2WndCTWIyY0FJSGR2Y21SeklHeHZibWNBVTFCV1gwVllWRjlrWlhOamNtbHdkRzl5WDJsdVpHVjRhVzVuQUVsdWNIVjBRWFIwWVdOb2JXVnVkRUZ5Y21GNVRtOXVWVzVwWm05eWJVbHVaR1Y0YVc1bkFGVnVhV1p2Y20xQ2RXWm1aWEpCY25KaGVVNXZibFZ1YVdadmNtMUpibVJsZUdsdVp3QlZibWxtYjNKdFZHVjRaV3hDZFdabVpYSkJjbkpoZVU1dmJsVnVhV1p2Y20xSmJtUmxlR2x1WndCVGRHOXlZV2RsVkdWNFpXeENkV1ptWlhKQmNuSmhlVTV2YmxWdWFXWnZjbTFKYm1SbGVHbHVad0JUZEc5eVlXZGxRblZtWm1WeVFYSnlZWGxPYjI1VmJtbG1iM0p0U1c1a1pYaHBibWNBVTNSdmNtRm5aVWx0WVdkbFFYSnlZWGxPYjI1VmJtbG1iM0p0U1c1a1pYaHBibWNBVTJGdGNHeGxaRWx0WVdkbFFYSnlZWGxPYjI1VmJtbG1iM0p0U1c1a1pYaHBibWNBU1c1d2RYUkJkSFJoWTJodFpXNTBRWEp5WVhsRWVXNWhiV2xqU1c1a1pYaHBibWNBVlc1cFptOXliVUoxWm1abGNrRnljbUY1UkhsdVlXMXBZMGx1WkdWNGFXNW5BRlZ1YVdadmNtMVVaWGhsYkVKMVptWmxja0Z5Y21GNVJIbHVZVzFwWTBsdVpHVjRhVzVuQUZOMGIzSmhaMlZVWlhobGJFSjFabVpsY2tGeWNtRjVSSGx1WVcxcFkwbHVaR1Y0YVc1bkFGTjBiM0poWjJWQ2RXWm1aWEpCY25KaGVVUjVibUZ0YVdOSmJtUmxlR2x1WndCVGRHOXlZV2RsU1cxaFoyVkJjbkpoZVVSNWJtRnRhV05KYm1SbGVHbHVad0JUWVcxd2JHVmtTVzFoWjJWQmNuSmhlVVI1Ym1GdGFXTkpibVJsZUdsdVp3QjFjMmx1WndCVFVGWmZTVTVVUlV4ZmJXVnRiM0o1WDJGalkyVnpjMTloYkdsaGMybHVad0JrYVhOaFlteGxYM1poYkdsa1lYUnBiMjVmWDJsbmJtOXlaVjl3YjJsdWRHVnlYMkZzYVdGemFXNW5BRk5RVmw5SFQwOUhURVZmWkdWamIzSmhkR1ZmYzNSeWFXNW5BR0poYzJsalgzTjBjbWx1WndCc2FYUmxjbUZzSUhOMGNtbHVad0JCYzFOMGNtbHVad0JCZEhSeWFXSjFkR1Z6SUcxMWMzUWdZbVVnWVc0Z1QzQlRkSEpwYm1jQVJtOXliV0YwVTNSeWFXNW5JRzExYzNRZ1ltVWdZVzRnVDNCVGRISnBibWNBVkhsd1pVNWhiV1VnYlhWemRDQmlaU0JoYmlCUGNGTjBjbWx1WndCRVlYUmhJRzExYzNRZ1ltVWdZVzRnVDNCVGRISnBibWNBUjJWMFJYaDBaVzV6YVc5dVUzUnlhVzVuQUUxbGJXSmxja1JsWTI5eVlYUmxVM1J5YVc1bkFFMWhhMlZUZEhKcGJtY0FjM0IyVDNCamIyUmxVM1J5YVc1bkFGTlFWbDlPVmw5emRHVnlaVzlmZG1sbGQxOXlaVzVrWlhKcGJtY0FkMkZ5Ym1sdVp3QnBiblJsY25CdmJHRjBhVzl1SUhOaGJYQnNhVzVuQUU5d1pXNURUQzVFWldKMVowbHVabTh1TVRBd0lHUmxZblZuSUdKaGMyVWdkSGx3WlNCbGJtTnZaR2x1WndCRmJtTnZaR2x1WndCQVltbHVaR2x1WndCQ2FXNWthVzVuQUhCaFpHUnBibWNBVTJGdGNHeGxVbUYwWlZOb1lXUnBibWNBVTFCV1gwNVdYM0poZVY5MGNtRmphVzVuQUZOUVZsOUxTRkpmY21GNVgzUnlZV05wYm1jQVJHVndkR2hTWlhCc1lXTnBibWNBWm5KdmJuUmZabUZqYVc1bkFHZHNYMFp5YjI1MFJtRmphVzVuQUVkdmIyZHNaU0JUYUdGa1pYSmpJRzkyWlhJZ1IyeHpiR0Z1WndCSGIyOW5iR1VnYzNCcGNtVm5ad0JUVUZaZlNVNVVSVXhmWm5CbllWOXlaV2NBYldGNGJXRm5BRzFwYm0xaFp3QndjbWx1ZEdZQVpYSm1BRVY0Y0dWamRHVmtJRU52Ym5OMGFYUjFaVzUwY3lCMGJ5QmlaU0J6WTJGc1lYSnpJRzl5SUhabFkzUnZjbk1nYjJZQWFXNW1BRTV2ZEVsdVpnQnBjMGx1WmdCSmMwbHVaZ0IyYzNSdmNtVmZhR0ZzWmdCMmJHOWhaRjlvWVd4bUFHVnNjMlZwWmdCdlptWUFkVjloWW5OZlpHbG1aZ0J6WDJGaWMxOWthV1ptQUZCMGNrUnBabVlBZEc5MFlXd2dkMjl5YTJkeWIzVndJR2R5YVdRZ2MybDZaU0JqWVc1dWIzUWdaWGhqWldWa0lEQjRabVptWm1abVptWUFiMlptYzJWMElDRTlJREI0Wm1abVptWm1abVlBUTI5dWRISmhZM1JwYjI1UFptWUFXR1JsY21WbUFFUmxjbVZtQUdSbGNIUm9YM0psWmdCRVpXSjFaMDFoWTNKdlZXNWtaV1lBZEhsd1pXUmxaZ0JFWldKMVoxUjVjR1ZrWldZQVJHVmlkV2ROWVdOeWIwUmxaZ0J0YjJSbUFFMXZaR1lBVTJsNlpVOW1BQ1V1TUV4bUFDVk1aZ0JTWnpFMlpnQlNaMkpoTVRabUFGSXhObVlBYldGME5IZzBaZ0J0WVhRemVEUm1BRzFoZERKNE5HWUFkbVZqTkdZQWJXRjBOSGd6WmdCdFlYUXplRE5tQUcxaGRESjRNMllBZG1Wak0yWUFiV0YwTkhneVpnQnRZWFF6ZURKbUFHMWhkREo0TW1ZQWRtVmpNbVlBVW1jek1tWUFVbWRpWVRNeVpnQlNNekptQUZJeE1XWkhNVEZtUWpFd1pnQmZYM0J2YVc1MFgzTnBlbVVBZDI5eWEyZHliM1Z3WDNOcGVtVUFRRzltWm5ObGRDQmpZVzV1YjNRZ1ltVWdkWE5sWkNCM2FYUm9JRUJoYkdsbmJpQnZjaUJBYzJsNlpRQnBiblpoYkdsa0lIWmxZM1J2Y2lCemQybDZlbXhsSUhOcGVtVUFabUZ6ZEY5dWIzSnRZV3hwZW1VQWQyaGxiaUJqWVd4amRXeGhkR2x1WnlCdWIzSnRZV3hwZW1VQVRtOXliV0ZzYVhwbEFFNWhiV1ZrUW1GeWNtbGxja2x1YVhScFlXeHBlbVVBWDNScGJuUmZiV0YwWlhKcFlXeHBlbVVBZEdsdWREbzZjMlZ0T2pwTllYUmxjbWxoYkdsNlpRQkpiV0ZuWlZGMVpYSjVVMmw2WlFCVGNHVmpRMjl1YzNSaGJuUlRkV0puY205MWNFMWhlRk5wZW1VQVIyVnZiV1YwY25sUWIybHVkRk5wZW1VQVZHVnpjMlZzYkdGMGFXOXVVRzlwYm5SVGFYcGxBR2RzWDFCdmFXNTBVMmw2WlFCblpYUlRhWHBsQUZaaGJHbGtZWFJsUTI5dWMzUnlkV04wVTJsNlpRQlRjR1ZqUTI5dWMzUmhiblJYYjNKclozSnZkWEJUYVhwbEFFVnVjWFZsZFdWa1YyOXlhMmR5YjNWd1UybDZaUUJRY205d1pYSjBlVkpsY1hWcGNtVmtWMjl5YTJkeWIzVndVMmw2WlFCdGRYTjBJR0psSUdFZ1kyOXVjM1JoYm5RZ1ptOXlJRmR2Y210bmNtOTFjRk5wZW1VQVUzVmlaM0p2ZFhCVGFYcGxBRWRsZEV0bGNtNWxiRmR2Y210SGNtOTFjRk5wZW1VQVoyeGZWMjl5YTBkeWIzVndVMmw2WlFCSFpYUkxaWEp1Wld4T1JISmhibWRsVFdGNFUzVmlSM0p2ZFhCVGFYcGxBRkIxYzJoRGIyNXpkR0Z1ZEVWdWNYVmxkV1ZrVEc5allXeFRhWHBsQUZCMWMyaERiMjV6ZEdGdWRFZHNiMkpoYkZOcGVtVUFSMlYwVUd4aGJtVkRiMjl5WkZOcGVtVUFVMmxuYm1Wa1dtVnliMGx1Wms1aGJsQnlaWE5sY25abEFFUmxibTl5YlZCeVpYTmxjblpsQUZaaGJIWmxBRVZ1WkZOMGNtVmhiVkJ5YVcxcGRHbDJaUUJGYm1SUWNtbHRhWFJwZG1VQVpHbHlaV04wYVhabEFIUnBiblE2T21GemREbzZSR2xoWjI1dmMzUnBZMFJwY21WamRHbDJaUUJ3WlhKemNHVmpkR2wyWlFCT2IxQmxjbk53WldOMGFYWmxBRWR5YjNWd1RtOXVWVzVwWm05eWJWTm9kV1ptYkdWU1pXeGhkR2wyWlFCQVozSnZkWEFnZG1Gc2RXVWdiWFZ6ZENCaVpTQnViMjR0Ym1WbllYUnBkbVVBUUd4dlkyRjBhVzl1SUhaaGJIVmxJRzExYzNRZ1ltVWdibTl1TFc1bFoyRjBhWFpsQUVCaWFXNWthVzVuSUhaaGJIVmxJRzExYzNRZ1ltVWdibTl1TFc1bFoyRjBhWFpsQUVCcFpDQjJZV3gxWlNCdGRYTjBJR0psSUc1dmJpMXVaV2RoZEdsMlpRQmZjMkYyWlFCMGNuVmxBRk53WldORGIyNXpkR0Z1ZEZSeWRXVUFVMUJXWDFaQlRFbEVRVlJQVWw5cFoyNXZjbVZmZEhsd1pWOWtaV05zWDNWdWFYRjFaUUJBYVdRZ2RtRnNkV1Z6SUcxMWMzUWdZbVVnZFc1cGNYVmxBRlI1Y0dWUGNHRnhkV1VBWTI5dWRHbHVkV1VBWTI5dWRHbHVkV1ZmWTI5dWMzUnlkV04wTFQ1MGVYQmxLQ2tnUFQwZ1EyOXVjM1J5ZFdOMFZIbHdaVG82YTBOdmJuUnBiblZsQUdsdWRHVnlibUZzSUdWeWNtOXlPaUIxYm5OMWNIQnZjblJsWkNCamIyNXpkSEoxWTNRZ2JtVnpkR2x1WnpvZ1EyOXVkR2x1ZFdVZ1lYSnZkVzVrSUVOdmJuUnBiblZsQUc5c1pGOTJZV3gxWlFCaGNuSmhlWE1nWkdWamIzSmhkR1ZrSUhkcGRHZ2dkR2hsSUhOMGNtbGtaU0JoZEhSeWFXSjFkR1VnYlhWemRDQm9ZWFpsSUdFZ2MzUnlhV1JsSUhSb1lYUWdhWE1nWVhRZ2JHVmhjM1FnZEdobElITnBlbVVnYjJZZ2RHaGxJR1ZzWlcxbGJuUWdkSGx3WlN3Z1lXNWtJR0psSUdFZ2JYVnNkR2x3YkdVZ2IyWWdkR2hsSUdWc1pXMWxiblFnZEhsd1pTZHpJR0ZzYVdkdWJXVnVkQ0IyWVd4MVpRQXBJR05oYkd4bFpDQnZiaUJsZUhCeVpYTnphVzl1SUhkcGRHZ2dibThnWTI5dWMzUmhiblFnZG1Gc2RXVUFRRzltWm5ObGRDQjJZV3gxWlFBZ1puSnZiU0JoSUdSbGNIUm9JR2x0WVdkbElISmxZV1FnZEc4Z2NtVnpkV3gwSUdsdUlHRWdjMk5oYkdGeUlHWnNiMkYwSUhaaGJIVmxBRXh2WTJGMGFXOXVJR2hoY3lCdWJ5QjJZV3gxWlFCQWJHOWpZWFJwYjI0Z2RtRnNkV1VBU1c1MllXeHBaQ0JYYjNKclozSnZkWEJUYVhwbElHSjFhV3gwYVc0Z2RtRnNkV1VBWTI5dWRISnZiQ0JtYkc5M0lHUmxjR1Z1WkhNZ2IyNGdjRzl6YzJsaWJIa2dibTl1TFhWdWFXWnZjbTBnZG1Gc2RXVUFKeUJ0WVhrZ2NtVnpkV3gwSUdsdUlHRWdibTl1TFhWdWFXWnZjbTBnZG1Gc2RXVUFZMjl1ZEdWNGRDMXBibk5sYm5OcGRHbDJaU0IyWVd4MVpRQXBJSEpsZEhWeWJtVmtJR2x1ZG1Gc2FXUWdkbUZzZFdVQUlHbHpJR0VnZEhsd1pTd2dibTkwSUdFZ2RtRnNkV1VBSnlCa2IyVnpJRzV2ZENCeVpYUjFjbTRnWVNCMllXeDFaUUJBYlhWemRGOTFjMlVnWTJGdUlHOXViSGtnWW1VZ1lYQndiR2xsWkNCMGJ5Qm1kVzVqZEdsdmJuTWdkR2hoZENCeVpYUjFjbTRnWVNCMllXeDFaUUJqWVhObElITmxiR1ZqZEc5eUlHMTFjM1FnWW1VZ1lXNGdhVE15SUc5eUlIVXpNaUIyWVd4MVpRQkFaM0p2ZFhBZ2JYVnpkQ0JpWlNCaGJpQnBNeklnYjNJZ2RUTXlJSFpoYkhWbEFFQnNiMk5oZEdsdmJpQnRkWE4wSUdKbElHRnVJR2t6TWlCdmNpQjFNeklnZG1Gc2RXVUFRR0ZzYVdkdUlHMTFjM1FnWW1VZ1lXNGdhVE15SUc5eUlIVXpNaUIyWVd4MVpRQkFZbWx1WkdsdVp5QnRkWE4wSUdKbElHRnVJR2t6TWlCdmNpQjFNeklnZG1Gc2RXVUFRSE5wZW1VZ2JYVnpkQ0JpWlNCaGJpQnBNeklnYjNJZ2RUTXlJSFpoYkhWbEFFQnBaQ0J0ZFhOMElHSmxJR0Z1SUdrek1pQnZjaUIxTXpJZ2RtRnNkV1VBUm14aFoxUjVjR1ZRWVhOelFubFdZV3gxWlFCSFpYUlZOalJDYVhSV1lXeDFaUUJIWlhSVE5qUkNhWFJXWVd4MVpRQkhaWFJWTXpKQ2FYUldZV3gxWlFCSFpYUlRNekpDYVhSV1lXeDFaUUJIWlhSR2JHOWhkRlpoYkhWbEFGSmxkSFZ5YmxaaGJIVmxBRk4wWVdOclZtRnNkV1VBUTI5dGNIVjBaVWhoYzJoV1lXeDFaUUJFWldKMVoxWmhiSFZsQUVkbGRGcGxjbTlGZUhSbGJtUmxaRlpoYkhWbEFFZGxkRk5wWjI1RmVIUmxibVJsWkZaaGJIVmxBSFJwYm5RNk9tTnZibk4wWVc1ME9qcFdZV3gxWlFCRVpYWnBZMlZGYm5GMVpYVmxBRWRsZEVSbFptRjFiSFJSZFdWMVpRQlVlWEJsVVhWbGRXVUFWSFZsQUZOUVZsOUpUbFJGVEY5MlpXTjBiM0pmWTI5dGNIVjBaUUJIVEVOdmJYQjFkR1VBWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5SUdGMGRISnBZblYwWlFCcGJuUmxaM0poYkNCMWMyVnlMV1JsWm1sdVpXUWdkbVZ5ZEdWNElHOTFkSEIxZEhNZ2JYVnpkQ0JvWVhabElHRWdabXhoZENCcGJuUmxjbkJ2YkdGMGFXOXVJR0YwZEhKcFluVjBaUUJwYm5SbFozSmhiQ0IxYzJWeUxXUmxabWx1WldRZ1puSmhaMjFsYm5RZ2FXNXdkWFJ6SUcxMWMzUWdhR0YyWlNCaElHWnNZWFFnYVc1MFpYSndiMnhoZEdsdmJpQmhkSFJ5YVdKMWRHVUFiV2x6YzJsdVp5QmxiblJ5ZVNCd2IybHVkQ0JKVHlCaGRIUnlhV0oxZEdVQWRHbHVkRG82WVhOME9qcEpiblpoY21saGJuUkJkSFJ5YVdKMWRHVUFkR2x1ZERvNllYTjBPanBUZEhKMVkzUk5aVzFpWlhKUFptWnpaWFJCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwWGIzSnJaM0p2ZFhCQmRIUnlhV0oxZEdVQWRHbHVkRG82WVhOME9qcEhjbTkxY0VGMGRISnBZblYwWlFCMGFXNTBPanBoYzNRNk9rUnBjMkZpYkdWV1lXeHBaR0YwYVc5dVFYUjBjbWxpZFhSbEFIUnBiblE2T21GemREbzZURzlqWVhScGIyNUJkSFJ5YVdKMWRHVUFkR2x1ZERvNllYTjBPanBDZFdsc2RHbHVRWFIwY21saWRYUmxBSFJwYm5RNk9tRnpkRG82VTNSeWRXTjBUV1Z0WW1WeVFXeHBaMjVCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwSmJuUmxjbTVoYkVGMGRISnBZblYwWlFCMGFXNTBPanBoYzNRNk9rSnBibVJwYm1kQmRIUnlhV0oxZEdVQWRHbHVkRG82WVhOME9qcFRkSEoxWTNSTlpXMWlaWEpUYVhwbFFYUjBjbWxpZFhSbEFIUnBiblE2T21GemREbzZTVzUwWlhKd2IyeGhkR1ZCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwTmRYTjBWWE5sUVhSMGNtbGlkWFJsQUhScGJuUTZPbUZ6ZERvNlUzUmhaMlZCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwVGRISnBaR1ZCZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwSlpFRjBkSEpwWW5WMFpRQjBhVzUwT2pwaGMzUTZPa1JwWVdkdWIzTjBhV05CZEhSeWFXSjFkR1VBZEdsdWREbzZZWE4wT2pwQmRIUnlhV0oxZEdVQVUxQldYMHRJVWw5emRXSm5jbTkxY0Y5MmIzUmxBRzV2ZEdVQVIzSnZkWEJPYjI1VmJtbG1iM0p0Vm05MFpRQlRVRlpmU1U1VVJVeGZiRzl1WjE5amIyNXpkR0Z1ZEY5amIyMXdiM05wZEdVQWRXNXBiWEJzWlcxbGJuUmxaRG9nVDNCVGNHVmpRMjl1YzNSaGJuUlBjQ0JoYm1RZ1QzQlRjR1ZqUTI5dWMzUmhiblJEYjIxd2IzTnBkR1VBUkdWaWRXZFVlWEJsUTI5dGNHOXphWFJsQUhScGJuUTZPbU52Ym5OMFlXNTBPanBEYjIxd2IzTnBkR1VBY21WaFpGOTNjbWwwWlFBZ2QzSnBkR1VBVG05WGNtbDBaUUJKYldGblpWZHlhWFJsQUU1dlVtVmhaRmR5YVhSbEFFbHRZV2RsVW1WaFpGZHlhWFJsQUVSbGNHVnVaR1Z1WTNsSmJtWnBibWwwWlFCSmMwWnBibWwwWlFCd2NtbDJZWFJsQUVac1lXZEpjMUJ5YVhaaGRHVUFVMUJXWDB0SVVsOXpkV0puY205MWNGOXliM1JoZEdVQWMyRjBkWEpoZEdVQVQzQkVaV052Y21GMFpTd2dUM0JFWldOdmNtRjBaVWxrTENCaGJtUWdUM0JIY205MWNFMWxiV0psY2tSbFkyOXlZWFJsQUVkeWIzVndSR1ZqYjNKaGRHVUFaR1ZqYjNKaGRHbHZiaTV2Y0dOdlpHVW9LU0E5UFNCemNIWTZPazl3T2pwUGNFUmxZMjl5WVhSbEFGTlFWbDlMU0ZKZlpuSmhaMjFsYm5SZmMyaGhaR2x1WjE5eVlYUmxBRk5RVmw5T1ZsOXphR0ZrYVc1blgzSmhkR1VBYzJoaFpHbHVaeUJ5WVhSbEFHUnZaWE1nYm05MElITjBjbWxqZEd4NUlITjBjblZqZEhWeVlXeHNlU0JrYjIxcGJtRjBaUUJrYjJWeklHNXZkQ0J6ZEhKMVkzUjFjbUZzYkhrZ1pHOXRhVzVoZEdVQVJHVmlkV2RVZVhCbFZHVnRjR3hoZEdVQWFXNTBaWEp3YjJ4aGRHVUFVMDVsWjJGMFpRQkdUbVZuWVhSbEFGVndaR0YwWlFCVFVGWmZTVTVVUlV4ZmJHOXZjRjltZFhObEFITjNhWFJqYUNCemRHRjBaVzFsYm5RZ2JYVnpkQ0JvWVhabElHVjRZV04wYkhrZ2IyNWxJR1JsWm1GMWJIUWdZMnhoZFhObEFITjNhWFJqYUNCemRHRjBaVzFsYm5RZ2JYVnpkQ0JvWVhabElHRWdaR1ZtWVhWc2RDQmpiR0YxYzJVQUp5QmhibTV2ZEdGMFpXUWdkMmwwYUNCQWJYVnpkRjkxYzJVQVRXRjBjbWw0U1c1MlpYSnpaUUJDYVhSU1pYWmxjbk5sQUdSd1pIbERiMkZ5YzJVQVJGQmtlVU52WVhKelpRQmtjR1I0UTI5aGNuTmxBRVJRWkhoRGIyRnljMlVBWm5kcFpIUm9RMjloY25ObEFFWjNhV1IwYUVOdllYSnpaUUIwY21GdWMzQnZjMlVBVkhKaGJuTndiM05sQUdWc2MyVUFabUZzYzJVQVUzQmxZME52Ym5OMFlXNTBSbUZzYzJVQVkyOXVkSEp2YkNCaVlYSnlhV1Z5SUhObGJXRnVkR2xqY3lCeVpYRjFhWEpsY3lCaFkzRjFhWEpsSUdGdVpDQnlaV3hsWVhObEFFRmpjWFZwY21WU1pXeGxZWE5sQUhCeVpYWnBiM1Z6SUdSbFptRjFiSFFnWTJGelpRQmljbVZoYXlCemRHRjBaVzFsYm5RZ2JYVnpkQ0JpWlNCcGJpQmhJR3h2YjNBZ2IzSWdjM2RwZEdOb0lHTmhjMlVBZEhsd1pTZ3BJQ0U5SUVOdmJuTjBjblZqZEZSNWNHVTZPbXREWVhObEFIUnBiblE2T25ObGJUbzZRblZwYkhScGJrVnVkVzFGZUhCeVpYTnphVzl1UW1GelpRQkRZWE4wWVdKc1pVSmhjMlVBZmtsdWRISjFjMmwyWlU1dlpHVkNZWE5sQUVGdVlXeDVlbVZKYm5OMFZYTmxBRmRvYVd4bFJXRmphRlZ6WlFCUGNGTmhiWEJzWlhKSmJXRm5aVUZrWkhKbGMzTnBibWROYjJSbFRsWWdjM1Z3Y0c5eWRHVmtJRzl1YkhrZ2QybDBhQ0JsZUhSbGJuTnBiMjRnVTFCV1gwNVdYMkpwYm1Sc1pYTnpYM1JsZUhSMWNtVUFkR2x1ZERvNmRIbHdaVG82UlhoMFpYSnVZV3hVWlhoMGRYSmxBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2tSbGNIUm9WR1Y0ZEhWeVpRQjBhVzUwT2pwMGVYQmxPanBFWlhCMGFGUmxlSFIxY21VQWRHbHVkRG82Y21WaFpHVnlPanB6Y0dseWRqbzZVM1J2Y21GblpWUmxlSFIxY21VQWRHbHVkRG82ZEhsd1pUbzZVM1J2Y21GblpWUmxlSFIxY21VQWRHbHVkRG82Y21WaFpHVnlPanB6Y0dseWRqbzZSR1Z3ZEdoTmRXeDBhWE5oYlhCc1pXUlVaWGgwZFhKbEFIUnBiblE2T25SNWNHVTZPa1JsY0hSb1RYVnNkR2x6WVcxd2JHVmtWR1Y0ZEhWeVpRQjBhVzUwT2pweVpXRmtaWEk2T25Od2FYSjJPanBOZFd4MGFYTmhiWEJzWldSVVpYaDBkWEpsQUhScGJuUTZPblI1Y0dVNk9rMTFiSFJwYzJGdGNHeGxaRlJsZUhSMWNtVUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82VTJGdGNHeGxaRlJsZUhSMWNtVUFkR2x1ZERvNmRIbHdaVG82VTJGdGNHeGxaRlJsZUhSMWNtVUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82VkdWNGRIVnlaUUIwYVc1ME9qcDBlWEJsT2pwVVpYaDBkWEpsQUU1dlEyRndkSFZ5WlFCR2IzSjNZWEprSUhCdmFXNTBaWEp6SUcxMWMzUWdjRzlwYm5RZ2RHOGdZU0J6ZEhKMVkzUjFjbVVBVTNSeWRXTjBkWEpsQUVsdWRHVnlibUZzSUdWeWNtOXlPaUIxYm1oaGJtUnNaV1FnYUdWaFpHVnlJSEJoY25ObElHWmhhV3gxY21VQVVIVnlaUUIwWlhoMGRYSmxVM1J2Y21VQVlYUnZiV2xqVTNSdmNtVUFRWFJ2YldsalUzUnZjbVVBUTJ4dmJtVkRiMjUwWlhoME9qcEpibk5sY25SQ1pXWnZjbVVvS1NCMlpXTjBiM0lnWkc5bGN5QnViM1FnWTI5dWRHRnBiaUJpWldadmNtVUFTVzV6WlhKMFFtVm1iM0psQUVGamNYVnBjbVVBY0hKbGRtbHZkWE1nWkdWbWFXNXBkR2x2YmlCcGN5Qm9aWEpsQUdacGNuTjBJQ2R3ZFhOb1gyTnZibk4wWVc1MEp5QjJZWEpwWVdKc1pTQmtaV05zWVhKaGRHbHZiaUJwY3lCb1pYSmxBSE5sWTI5dVpDQW5jSFZ6YUY5amIyNXpkR0Z1ZENjZ2RtRnlhV0ZpYkdVZ1pHVmpiR0Z5WVhScGIyNGdhWE1nYUdWeVpRQW5JSEpsWm1WeVpXNWpaV1FnYVc0Z1kyOXVkR2x1ZFdsdVp5QmliRzlqYXlCb1pYSmxBSE5sWlNCamIyNTBhVzUxYVc1bklHSnNiMk5ySUdobGNtVUFZV3hwWVhObGN5QjNhWFJvSUdGdWIzUm9aWElnWVhKbmRXMWxiblFnY0dGemMyVmtJR2hsY21VQUp5QndjbVYyYVc5MWMyeDVJR1JsWTJ4aGNtVmtJR2hsY21VQWRtRnlhV0ZpYkdVZ2FYTWdaR1ZqYkdGeVpXUWdhR1Z5WlFBbklHbHpJR1JsWTJ4aGNtVmtJR2hsY21VQVptbHljM1FnWVhSMGNtbGlkWFJsSUdSbFkyeGhjbVZrSUdobGNtVUFjSEpsZG1sdmRYTWdZMkZ6WlNCa1pXTnNZWEpsWkNCb1pYSmxBR1pwY25OMElISmxjMjkxY21ObElHSnBibVJwYm1jZ2RYTmhaMlVnWkdWamJHRnlaV1FnYUdWeVpRQW5JR1JsWTJ4aGNtVmtJR2hsY21VQUp5Qm9aWEpsQUhSbGVIUjFjbVZIWVhSb1pYSkRiMjF3WVhKbEFIUmxlSFIxY21WVFlXMXdiR1ZEYjIxd1lYSmxBRVJsWW5WblJHVmpiR0Z5WlFCcGJuWmhiR2xrWDNOd2FYSjJYM0IwY2w5MGVYQmxBRk5RVmw5SFQwOUhURVZmZFhObGNsOTBlWEJsQUcxbGJXSmxjbDkwZVhCbEFEZ3RJRzl5SURFMkxXSnBkQ0J6ZEc5eVpYTWdiWFZ6ZENCaVpTQmhJSE5qWVd4aGNpd2dkbVZqZEc5eUlHOXlJRzFoZEhKcGVDQjBlWEJsQURndElHOXlJREUyTFdKcGRDQnNiMkZrY3lCdGRYTjBJR0psSUdFZ2MyTmhiR0Z5TENCMlpXTjBiM0lnYjNJZ2JXRjBjbWw0SUhSNWNHVUFSWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZU0J0WVhSeWFYZ2dkSGx3WlFCbGVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCaElETXlMV0pwZENCcGJuUWdkSGx3WlFCellXMXdiR1ZrSUdsdFlXZGxJRzExYzNRZ2FHRjJaU0JtYkc5aGRDQmpiMjF3YjI1bGJuUWdkSGx3WlFCRmVIQmxZM1JsWkNCRGIyNXpkR2wwZFdWdWRDQjBlWEJsSUhSdklHSmxJR1Z4ZFdGc0lIUnZJSFJvWlNCamIyMXdiMjVsYm5RZ2RIbHdaUUJoY25KaGVTQmpiMjV6ZEhKMVkzUnZjaUJvWVhNZ2JtOXVMV052Ym5OMGNuVmpkR2xpYkdVZ1pXeGxiV1Z1ZENCMGVYQmxBRTl3UTI5d2VVOWlhbVZqZENCallXNXViM1FnYUdGMlpTQjJiMmxrSUhKbGMzVnNkQ0IwZVhCbEFFOXdVR2hwSUcxMWMzUWdibTkwSUdoaGRtVWdkbTlwWkNCeVpYTjFiSFFnZEhsd1pRQjFibWx0Y0d4bGJXVnVkR1ZrT2lCUGNFMWxiV0psY2tSbFkyOXlZWFJsSUc1dmJpMXpkSEoxWTNRZ2RIbHdaUUJGZUhCbFkzUmxaQ0JFY21WbUlIUnZJR0psSUc5bUlETXlMV0pwZENCbWJHOWhkQ0IwZVhCbEFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdNVFlnYjNJZ016SXRZbWwwSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0lnWm14dllYUWdkSGx3WlFCbGVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCaElITmpZV3hoY2lCdmNpQjJaV04wYjNJZ1pteHZZWFFnZEhsd1pRQldZWEpwWVdKc1pYTWdhV1JsYm5ScFptbGxaQ0IzYVhSb0lIUm9aU0JUZEc5eVlXZGxRblZtWm1WeUlITjBiM0poWjJVZ1kyeGhjM01nWVhKbElIVnpaV1FnZEc4Z1lXTmpaWE56SUhSeVlXNXpjR0Z5Wlc1MElHSjFabVpsY2lCaVlXTnJaV1FnY21WemIzVnlZMlZ6TGlCVGRXTm9JSFpoY21saFlteGxjeUJ0ZFhOMElHSmxJSFI1Y0dWa0lHRnpJRTl3Vkhsd1pWTjBjblZqZEN3Z2IzSWdZVzRnWVhKeVlYa2diMllnZEdocGN5QjBlWEJsQUNCaVlYTmxaQ0J2YmlCMGFHVWdablZ1WTNScGIyNG5jeUIwZVhCbEFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElETXlMV0pwZENCbWJHOWhkQ0F6TFdOdmJYQnZibVZ1ZENCMlpXTjBiM0lnZEhsd1pRQmxlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQXpNaTFpYVhRZ1pteHZZWFFnTWkxamIyMXdiMjVsYm5RZ2RtVmpkRzl5SUhSNWNHVUFaWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZVzRnYVc1MElHOXlJR1pzYjJGMElIWmxZM1J2Y2lCMGVYQmxBQ0IwYnlCaVpTQnBiblFnYjNJZ1pteHZZWFFnZG1WamRHOXlJSFI1Y0dVQVJYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnWW1VZ1pteHZZWFFnZG1WamRHOXlJSFI1Y0dVQVpYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnWW1VZ1lTQm1iRzloZENCMlpXTjBiM0lnZEhsd1pRQmxlSEJsWTNSbFpDQmtZWFJoSUhSNWNHVWdiMllnZEdobElIQnZhVzUwWlhJZ2RHOGdZbVVnWVNBek1pMWlhWFFnYVc1MElITmpZV3hoY2lCdmNpQjJaV04wYjNJZ2RIbHdaUUJsZUhCbFkzUmxaQ0JTWlhOMWJIUWdWSGx3WlNCMGJ5QmlaU0JoSURNeUxXSnBkQ0JwYm5RZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCMGVYQmxBR1Y0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR0Z1SUdsdWRDQnpZMkZzWVhJZ2IzSWdkbVZqZEc5eUlIUjVjR1VBWlhod1pXTjBaV1FnVG1GdVkyOWtaU0IwYnlCaVpTQmhiaUJwYm5RZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCMGVYQmxBRVY0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR2x1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5SUhSNWNHVUFaWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZVzRnYVc1MElHOXlJR1pzYjJGMElITmpZV3hoY2lCdmNpQjJaV04wYjNJZ2RIbHdaUUFnZEc4Z1ltVWdhVzUwSUc5eUlHWnNiMkYwSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0lnZEhsd1pRQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGZ2dkRzhnWW1VZ2IyWWdabXh2WVhRZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCMGVYQmxBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdVREVnZEc4Z1ltVWdiMllnWm14dllYUWdjMk5oYkdGeUlHOXlJSFpsWTNSdmNpQjBlWEJsQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVURBZ2RHOGdZbVVnYjJZZ1pteHZZWFFnYzJOaGJHRnlJRzl5SUhabFkzUnZjaUIwZVhCbEFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdabXh2WVhRZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCMGVYQmxBRUJzYjJOaGRHbHZiaUJ0ZFhOMElHOXViSGtnWW1VZ1lYQndiR2xsWkNCMGJ5QmtaV05zWVhKaGRHbHZibk1nYjJZZ2JuVnRaWEpwWXlCelkyRnNZWElnYjNJZ2JuVnRaWEpwWXlCMlpXTjBiM0lnZEhsd1pRQkVaWEpsWm1WeVpXNWpaU2dwSUdOaGJHeGxaQ0J2YmlCdWIyNHRjRzlwYm5SbGNpQjBlWEJsQUNCcGN5QnViM1FnY0c5cGJuUmxjaUIwZVhCbEFHMTFjM1FnWW1VZ1lXNGdZWEp5WVhrZ2IzSWdjRzlwYm5SbGNpQjBlWEJsQUNCaVlYTmxJSEJ2YVc1MFpYSWdhWE1nYm05MElHOW1JSEJ2YVc1MFpYSWdkSGx3WlFCdGRYTjBJR0psSUdFZ2NHOXBiblJsY2lCMGVYQmxBQ2NnZEc4Z0oxOG5MaUFuWHljZ1kyRnVJRzl1YkhrZ1ltVWdZWE56YVdkdVpXUWdZU0JqYjI1emRISjFZM1JwWW14bExDQndiMmx1ZEdWeUxDQjBaWGgwZFhKbElHOXlJSE5oYlhCc1pYSWdkSGx3WlFBNklHVjRjR1ZqZEdWa0lGQnZhVzUwWlhJZ2RHOGdjRzlwYm5RZ2RHOGdZU0IyWVd4MVpTQnZaaUF6TWkxaWFYUWdhVzUwWldkbGNpQjBlWEJsQUhOM2FYUmphQ0J6ZEdGMFpXMWxiblFnYzJWc1pXTjBiM0lnWlhod2NtVnpjMmx2YmlCdGRYTjBJR0psSUc5bUlHRWdjMk5oYkdGeUlHbHVkR1ZuWlhJZ2RIbHdaUUJsZUhCbFkzUmxaQ0JTWlhOMWJIUWdWSGx3WlNCMGJ5QmlaU0F6TWkxaWFYUWdhVzUwSUhOallXeGhjaUIwZVhCbEFFVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHbHVkQ0J6WTJGc1lYSWdkSGx3WlFCbGVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNBMk5DMWlhWFFnWm14dllYUWdjMk5oYkdGeUlIUjVjR1VBWlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnTXpJdFltbDBJR1pzYjJGMElITmpZV3hoY2lCMGVYQmxBRU4xY25KbGJuUWdWR2x0WlhNZ2JYVnpkQ0JpWlNCaElETXlMV0pwZENCbWJHOWhkQ0J6WTJGc1lYSWdkSGx3WlFBZ2RHOGdZbVVnYVc1MElHOXlJR1pzYjJGMElITmpZV3hoY2lCMGVYQmxBRG9nWlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnYVc1MFpXZGxjaUJ2Y2lCbWJHOWhkQ0J6WTJGc1lYSWdkSGx3WlFBNklHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHWnNiMkYwSUhOallXeGhjaUIwZVhCbEFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdabXh2WVhRZ2MyTmhiR0Z5SUhSNWNHVUFkSGx3WlNCcGN5QlBjRU52Ym5OMFlXNTBJSGRwZEdnZ1lXNGdhVzUwWldkbGNpQnpZMkZzWVhJZ2RIbHdaUUE2SUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdsdWRHVm5aWElnYzJOaGJHRnlJSFI1Y0dVQU5qUXRZbWwwY3lCMWJuTnBaMjVsWkNCcGJuUmxaMlZ5SUhOallXeGhjaUIwZVhCbEFEb2daWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZbTl2YkNCelkyRnNZWElnZEhsd1pRQkZlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQmliMjlzSUhOallXeGhjaUIwZVhCbEFDQnVkVzFsY21sallXd2djMk5oYkdGeUlIUjVjR1VBUlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnWVNCelkyRnNZWElnZEhsd1pRQWdhR0Z6SUc1dklIUjVjR1VBWVNCMlpYSjBaWGdnYzJoaFpHVnlJRzExYzNRZ2FXNWpiSFZrWlNCMGFHVWdKM0J2YzJsMGFXOXVKeUJpZFdsc2RHbHVJR2x1SUdsMGN5QnlaWFIxY200Z2RIbHdaUUFnYjI0Z2NtVjBkWEp1SUhSNWNHVUFjbUY1SUhGMVpYSjVJR05oYm1ScFpHRjBaU0JwYm5SbGNuTmxZM1JwYjI0Z2RIbHdaUUJ5WVhrZ2NYVmxjbmtnWTI5dGJXbDBkR1ZrSUdsdWRHVnljMlZqZEdsdmJpQjBlWEJsQUcxcGMzTnBibWNnWW1sdVlYSjVJRzl3WlhKaGRHbHZiaUIwZVhCbEFGVnVhMjV2ZDI0Z1oyeHZZbUZzSUdSbFkyeGhjbUYwYVc5dUlIUjVjR1VBYVc1MFpYSndiMnhoZEdsdmJpQjBlWEJsQUhWdWEyNXZkMjRnWlhod2NtVnpjMmx2YmlCMGVYQmxBRkpsYzNWc2RDQnZaaUJQY0VWNGNHVmpkRXRJVWlCdGRYTjBJR0psSUdFZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCdlppQnBiblJsWjJWeUlIUjVjR1VnYjNJZ1ltOXZiR1ZoYmlCMGVYQmxBRU52Ym1ScGRHbHZiaUJ2Y0dWeVlXNWtJR1p2Y2lCUGNFSnlZVzVqYUVOdmJtUnBkR2x2Ym1Gc0lHMTFjM1FnWW1VZ2IyWWdZbTl2YkdWaGJpQjBlWEJsQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJqWVc0bmRDQnRZV3RsSUdGemREbzZWbUZ5YVdGaWJHVWdabTl5SUc1MWJHd2dkSGx3WlFCMGNubHBibWNnZEc4Z1kzSmxZWFJsSUc1MWJHd2dkbUZzZFdVZ1ptOXlJR0VnYm5Wc2JDQjBlWEJsQUhWdWEyNXZkMjRnYkdsMFpYSmhiQ0IwZVhCbEFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1VHRnlaVzUwSUcxMWMzUWdZbVVnWTJ4aGMzTWdiM0lnYzNSeWRXTjBJR1JsWW5WbklIUjVjR1VBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JEYUdsc1pDQnRkWE4wSUdKbElHTnNZWE56SUc5eUlITjBjblZqZENCa1pXSjFaeUIwZVhCbEFDQnBjeUJ1YjNRZ1lTQjJZV3hwWkNCa1pXSjFaeUIwZVhCbEFFOXdaVzVEVEM1RVpXSjFaMGx1Wm04dU1UQXdJR1JsWW5WbklHTnZiWEJ2YzJsMFpTQjBlWEJsQUVWNGNHVmpkR1ZrSUVOdmJYQnZjMmwwWlNCMGJ5QmlaU0JoYmlCdlltcGxZM1FnYjJZZ1kyOXRjRzl6YVhSbElIUjVjR1VBUlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnWVNCamIyMXdiM05wZEdVZ2RIbHdaUUJNYjJOaGRHbHZiaUJrWldOdmNtRjBhVzl1SUdOaGJpQnZibXg1SUdKbElHRndjR3hwWldRZ2RHOGdZU0IyWVhKcFlXSnNaU0J2Y2lCdFpXMWlaWElnYjJZZ1lTQnpkSEoxWTNSMWNtVWdkSGx3WlFCdGRYTjBJR0psSUdFZ2MzUnlkV04wZFhKbElIUjVjR1VBWlhod1pXTjBaV1FnYjNCbGNtRnVaSE1nV0NCaGJtUWdXU0IwYnlCaVpTQnZaaUIwYUdVZ2MyRnRaU0IwZVhCbEFHVjRjR1ZqZEdWa0lHOXdaWEpoYm1SeklGQXdJR0Z1WkNCUU1TQjBieUJpWlNCdlppQjBhR1VnYzJGdFpTQjBlWEJsQUdWNGNHVmpkR1ZrSUVocElHRnVaQ0JNYnlCdmNHVnlZVzVrY3lCMGJ5Qm9ZWFpsSUhSb1pTQnpZVzFsSUhSNWNHVUFjM1J5ZFdOMGRYSmxJR052Ym5OMGNuVmpkRzl5SUdoaGN5QnViMjR0WTI5dWMzUnlkV04wYVdKc1pTQjBlWEJsQUdaMWJtTjBhVzl1TFhOamIzQmxJQ2QyWVhJbklHMTFjM1FnYUdGMlpTQmhJR052Ym5OMGNuVmpkR2xpYkdVZ2RIbHdaUUJtZFc1amRHbHZiaUJ5WlhSMWNtNGdkSGx3WlNCdGRYTjBJR0psSUdFZ1kyOXVjM1J5ZFdOMGFXSnNaU0IwZVhCbEFHbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCRGIzVnNaRzRuZENCc2IyOXJJSFZ3SUdsdFlXZGxJSFI1Y0dVQWJHbHVhMkZuWlNCMGVYQmxBRUZrWkhKbGMzTlBaaWdwSUdOaGJHeGxaQ0J2YmlCdWIyNHRjbVZtWlhKbGJtTmxJSFI1Y0dVQVVtVnpkV3gwSUZSNWNHVWdiWFZ6ZENCdWIzUWdaWEYxWVd3Z2RHaGxJRTl3WlhKaGJtUWdkSGx3WlFCU1pYTjFiSFFnVkhsd1pTQmtiMlZ6SUc1dmRDQnNiMmRwWTJGc2JIa2diV0YwWTJnZ2RHaGxJRTl3WlhKaGJtUWdkSGx3WlFCRFlXNXViM1FnWTNKbFlYUmxJSFZ1WkdWbWFXNWxaQ0IyWVd4MVpYTWdkMmwwYUNCMmIybGtJSFI1Y0dVQUlHUmxZMjl5WVhScGIyNGdZWEJ3YkdsbFpDQjBieUJoSUhaaGJIVmxJSGRwZEdnZ2RtOXBaQ0IwZVhCbEFDQmtaV052Y21GMGFXOXVJR0Z3Y0d4cFpXUWdkRzhnWVc0Z2IySnFaV04wSUhkcGRHZ2dhVzUyWVd4cFpDQjBlWEJsQUhWdWFXMXdiR1Z0Wlc1MFpXUTZJSFZ1YUdGdVpHeGxaQ0IwZVhCbEFDQnBjeUJ1YjNRZ1lTQnpZMkZzWVhJZ2JuVnRaWEpwWXlCMGVYQmxBSGR2Y210bmNtOTFjRlZ1YVdadmNtMU1iMkZrSUcxMWMzUWdibTkwSUdKbElHTmhiR3hsWkNCM2FYUm9JR0Z1SUdGeVozVnRaVzUwSUhSb1lYUWdZMjl1ZEdGcGJuTWdZVzRnWVhSdmJXbGpJSFI1Y0dVQWFXMWhaMlVnWTJoaGJtNWxiQ0JrWVhSaElIUjVjR1VBSUdseklHNXZkQ0JoSUhSNWNHVUFJSEpsY1hWcGNtVnpJR0VnZEhsd1pRQlNaV3hoZUZCeVpXTnBjMmx2YmlCa1pXTnZjbUYwYVc5dUlHTmhibTV2ZENCaVpTQmhjSEJzYVdWa0lIUnZJR0VnZEhsd1pRQWdZMkZ1Ym05MElHSmxJR0VnZEhsd1pRQkRiMjV6ZEZSNWNHVUFSMlYwUTI5dGNHOXVaVzUwVkhsd1pRQkhaWFJCWTNSMVlXeFNaWE4xYkhSVWVYQmxBRkpsYzNSeWFXTjBWSGx3WlFCdmNHTnZaR1ZmWlc1MGNua3RQbWhoYzFSNWNHVUFjMlYwVG5WdFpYSnBZMVI1Y0dWSmJtWnZSbTl5Vkhsd1pRQlNaV2RwYzNSbGNsUjVjR1VBVW1WbmFYTjBaWEpUWlhSR2RXNWpkR2x2YmtSbFkyeFVlWEJsQUVkbGRFVjRkSEpoWTNSSmJuTmxjblJXWVd4MVpWUjVjR1VBVm05c1lYUnBiR1ZVZVhCbEFGSmxjR3hoWTJWVWVYQmxBRkpsWW5WcGJHUlVlWEJsQUVGMGIyMXBZMVI1Y0dVQWRHbHVkRG82Y21WaFpHVnlPanB6Y0dseWRqbzZWSGx3WlFCMGFXNTBPanAwZVhCbE9qcFVlWEJsQUVWNGNHVmpkR1ZrSUVsdFlXZGxJQ2RUWVcxd2JHVmtJRlI1Y0dVbklIUnZJR0psSUhSb1pTQnpZVzFsSUdGeklIUm9aU0JVZVhCbElIQnZhVzUwWldRZ2RHOGdZbmtnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2RHaGxJR1Y0Y0c5dVpXNTBJSFJ2SUdoaGRtVWdkR2hsSUhOaGJXVWdiblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkSE1nWVhNZ1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdTR2tnWVc1a0lFeHZJRzl3WlhKaGJtUnpJSFJ2SUdoaGRtVWdkR2hsSUhOaGJXVWdiblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkSE1nWVhNZ1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdaR0YwWVNCMGVYQmxJRzltSUhSb1pTQndiMmx1ZEdWeUlIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdZWE1nVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCVGFIVm1abXhsSUUxaGMyc2dkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQnVkVzFpWlhJZ2IyWWdZMjl0Y0c5dVpXNTBjeUJoY3lCU1pYTjFiSFFnVkhsd1pRQmxlSEJsWTNSbFpDQk9ZVzVqYjJSbElIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdZWE1nVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCWUlIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdZWE1nVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCRElIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdZWE1nVW1WemRXeDBJRlI1Y0dVQWJuVnRZbVZ5SUdGeklGSmxjM1ZzZENCVWVYQmxBR1Y0Y0dWamRHVmtJRTVoYm1OdlpHVWdkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQmlhWFFnZDJsa2RHZ2dZWE1nVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCRElIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1ltbDBJSGRwWkhSb0lHRnpJRkpsYzNWc2RDQlVlWEJsQUdWNGNHVmpkR1ZrSUcxaGRISnBlQ0IwZVhCbElHRnpJRkpsYzNWc2RDQlVlWEJsQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVGlCMGJ5QmlaU0J2WmlCMGVYQmxJR1Z4ZFdGc0lIUnZJRkpsYzNWc2RDQlVlWEJsQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnU1NCMGJ5QmlaU0J2WmlCMGVYQmxJR1Z4ZFdGc0lIUnZJRkpsYzNWc2RDQlVlWEJsQUdWNGNHVmpkR1ZrSUhSNWNHVnpJRzltSUdGc2JDQnZjR1Z5WVc1a2N5QjBieUJpWlNCbGNYVmhiQ0IwYnlCU1pYTjFiSFFnVkhsd1pRQmxlSEJsWTNSbFpDQmtZWFJoSUhSNWNHVWdiMllnZEdobElIQnZhVzUwWlhJZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVJYaHdaV04wWldRZ1ZtVmpkRzl5SUdOdmJYQnZibVZ1ZENCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklGSmxjM1ZzZENCVWVYQmxBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdXQ0JqYjIxd2IyNWxiblFnZEhsd1pTQjBieUJpWlNCbGNYVmhiQ0IwYnlCU1pYTjFiSFFnVkhsd1pRQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGQWdZMjl0Y0c5dVpXNTBJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVJYaHdaV04wWldRZ1ZtVmpkRzl5SUhSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z1VtVnpkV3gwSUZSNWNHVUFSWGh3WldOMFpXUWdVMkZ0Y0d4bElFbHRZV2RsSUdsdFlXZGxJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ1NXNTBaWEp3YjJ4aGJuUWdaR0YwWVNCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklGSmxjM1ZzZENCVWVYQmxBR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdTU0JrWVhSaElIUjVjR1VnZEc4Z1ltVWdaWEYxWVd3Z2RHOGdVbVZ6ZFd4MElGUjVjR1VBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JaSUhSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQllJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUUlIUjVjR1VnZEc4Z1ltVWdaWEYxWVd3Z2RHOGdVbVZ6ZFd4MElGUjVjR1VBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JDSUhSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQkJJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2RIbHdaU0J2WmlCdmNHVnlZVzVrSUZrZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2RIbHdaU0J2WmlCdmNHVnlZVzVrSUZnZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVQVpYaHdaV04wWldRZ2JHbDBaWEpoYkNCT0lIUnZJR0psSUdWeGRXRnNJSFJ2SUhSb1pTQnVkVzFpWlhJZ2IyWWdZMjl0Y0c5dVpXNTBjeUJ2WmlCU1pYTjFiSFFnVkhsd1pRQmxlSEJsWTNSbFpDQmlhWFFnZDJsa2RHZ2diMllnWTI5dGNHOXVaVzUwY3lCdlppQklhU0JoYm1RZ1RHOGdiM0JsY21GdVpITWdkRzhnWW1VZ2FHRnNaaUJ2WmlCMGFHVWdZbWwwSUhkcFpIUm9JRzltSUdOdmJYQnZibVZ1ZEhNZ2IyWWdVbVZ6ZFd4MElGUjVjR1VBZEc4Z1ltVWdkR2hsSUhKbGRtVnljMlVnYjJZZ2RHaHZjMlVnYjJZZ1VtVnpkV3gwSUZSNWNHVUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQlFJR1JoZEdFZ2RIbHdaU0IwYnlCaVpTQmxjWFZoYkNCMGJ5QmpiMjF3YjI1bGJuUWdkSGx3WlNCdlppQlNaWE4xYkhRZ1ZIbHdaUUE2SUdWNGNHVmpkR1ZrSUZCdmFXNTBaWElnZEc4Z2NHOXBiblFnZEc4Z1lTQjJZV3gxWlNCdlppQjBlWEJsSUZKbGMzVnNkQ0JVZVhCbEFEb2daWGh3WldOMFpXUWdRMjl0Y0dGeVlYUnZjaUIwYnlCaVpTQnZaaUIwZVhCbElGSmxjM1ZzZENCVWVYQmxBRG9nWlhod1pXTjBaV1FnVm1Gc2RXVWdkRzhnWW1VZ2IyWWdkSGx3WlNCU1pYTjFiSFFnVkhsd1pRQkpibWwwYVdGc2FYcGxjaUIwZVhCbElHMTFjM1FnYldGMFkyZ2dkR2hsSUhSNWNHVWdjRzlwYm5SbFpDQjBieUJpZVNCMGFHVWdVbVZ6ZFd4MElGUjVjR1VBVm1WamRHOXlJRlI1Y0dVQVVtVjBkWEp1SUZSNWNHVUFRV04wZFdGc0lGUjVjR1VBUW1GelpTQlVlWEJsQUdaMWJtTjBhVzl1Y3lCallXNXViM1FnWW1VZ1kyRnNiR1ZrSUdGMElHMXZaSFZzWlMxelkyOXdaUUJqWVc1dWIzUWdZbVVnY21WbVpYSmxibU5sWkNCaGRDQnRiMlIxYkdVdGMyTnZjR1VBZDI5eWEyZHliM1Z3UW1GeWNtbGxjaUJ5WlhGMWFYSmxjeUIzYjNKclozSnZkWEFnYldWdGIzSjVJSE5qYjNCbEFITjBiM0poWjJWQ1lYSnlhV1Z5SUhKbGNYVnBjbVZ6SUdSbGRtbGpaU0J0WlcxdmNua2djMk52Y0dVQUlHMTFjM1FnWW1VZ1lTQnlaWE4xYkhRZ2FXUWdiMllnWVNCc1pYaHBZMkZzSUhOamIzQmxBRVJsWW5WblRtOVRZMjl3WlFCRVpXSjFaMU5qYjNCbEFGWjFiR3RoYmsxbGJXOXllVTF2WkdWc1JHVjJhV05sVTJOdmNHVUFPaUJXZFd4cllXNGdjM0JsWTJsbWFXTmhkR2x2YmlCeVpYRjFhWEpsY3lCTlpXMXZjbmtnVTJWdFlXNTBhV056SUhSdklHSmxJRTV2Ym1VZ2FXWWdkWE5sWkNCM2FYUm9JRWx1ZG05allYUnBiMjRnVFdWdGIzSjVJRk5qYjNCbEFFZHliM1Z3UTI5dGJXbDBWM0pwZEdWUWFYQmxBRkpsYzJWeWRtVmtWM0pwZEdWUWFYQmxBRlI1Y0dWUWFYQmxBRWR5YjNWd1EyOXRiV2wwVW1WaFpGQnBjR1VBVW1WelpYSjJaV1JTWldGa1VHbHdaUUJLZFc1bEFGTlFWbDlKVGxSRlRGOXZjSFJ1YjI1bEFFTnNiMjVsQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVm1GeWFXRmliR1VnYlhWemRDQmlaU0JoSUhKbGMzVnNkQ0JwWkNCdlppQlBjRlpoY21saFlteGxJRzl5SUU5d1EyOXVjM1JoYm5RZ2IzSWdSR1ZpZFdkSmJtWnZUbTl1WlFBZ1ltRmpheTFsWkdkbElHSnNiMk5yY3lCaWRYUWdkR2hsSUhOMFlXNWtZWEprSUhKbGNYVnBjbVZ6SUdWNFlXTjBiSGtnYjI1bEFFUnZiblJKYm14cGJtVUFWMmx1WlFCRVpXSjFaMDV2VEdsdVpRQkVaV0oxWjB4cGJtVUFVMk52Y0dVZ1RHbHVaUUJrY0dSNVJtbHVaUUJFVUdSNVJtbHVaUUJrY0dSNFJtbHVaUUJFVUdSNFJtbHVaUUJtZDJsa2RHaEdhVzVsQUVaM2FXUjBhRVpwYm1VQVUxQldYMHRJVWw5bGVIQmxZM1JmWVhOemRXMWxBRUJ6YVhwbElHTmhiaUJ2Ym14NUlHSmxJR0Z3Y0d4cFpXUWdkRzhnYldWdFltVnljeUIzYUdWeVpTQjBhR1VnYldWdFltVnlKM01nZEhsd1pTQnphWHBsSUdOaGJpQmlaU0JtZFd4c2VTQmtaWFJsY20xcGJtVmtJR0YwSUhOb1lXUmxjaUJqY21WaGRHbHZiaUIwYVcxbEFFbHRZV2RsSUU5d1pYSmhibVFnWW1sMGN5Qk1iMlFnWVc1a0lFZHlZV1FnWTJGdWJtOTBJR0psSUhObGRDQmhkQ0IwYUdVZ2MyRnRaU0IwYVcxbEFFTnRaRVY0WldOVWFXMWxBRG9nWlhod1pXTjBaV1FnVm1Gc2RXVWdkSGx3WlNCaGJtUWdkR2hsSUhSNWNHVWdjRzlwYm5SbFpDQjBieUJpZVNCUWIybHVkR1Z5SUhSdklHSmxJSFJvWlNCellXMWxBRVY0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUdGdVpDQlBjR1Z5WVc1a0lIUjVjR1VnZEc4Z1ltVWdkR2hsSUhOaGJXVUFUV1Z0WW1WeVRtRnRaUUIwYVc1ME9qcGhjM1E2T2tScFlXZHViM04wYVdOU2RXeGxUbUZ0WlFCTWFXNXJZV2RsSUU1aGJXVUFkR2x1ZERvNmMyVnRPanBUZDJsNmVteGxBRk5RVmw5SlRsUkZURjlrWldKMVoxOXRiMlIxYkdVQWRXNXpkWEJ3YjNKMFpXUTZJRzExYkhScGNHeGxJRkJ2YzJsMGFXOXVJR0oxYVd4MExXbHVJSFpoY21saFlteGxjeUJwYmlCMGFHVWdjMkZ0WlNCdGIyUjFiR1VBYVc1MFpYSnVZV3dnWlhKeWIzSTZJR052ZFd4a2JpZDBJR0oxYVd4a0lIUm9aU0JwYm5SbGNtNWhiQ0J5WlhCeVpYTmxiblJoZEdsdmJpQnZaaUIwYUdVZ2JXOWtkV3hsQUhCaGNuTmxUVzlrZFd4bEFFbHRjRzl5ZEdWa1RXOWtkV3hsQUhScGJuUTZPbUZ6ZERvNlRXOWtkV3hsQUhScGJuUTZPbk5sYlRvNlRXOWtkV3hsQUZOcGJYQnNaUUIxWDNWd2MyRnRjR3hsQUhOZmRYQnpZVzF3YkdVQVUzUnZjbUZuWlVsdFlXZGxUWFZzZEdsellXMXdiR1VBU1c1MFpYSndiMnhoZEdWQmRGTmhiWEJzWlFCMFpYaDBkWEpsVTJGdGNHeGxBRWwwWlhKaGRHbHZiazExYkhScGNHeGxBRWRsZEV0bGNtNWxiRkJ5WldabGNuSmxaRmR2Y210SGNtOTFjRk5wZW1WTmRXeDBhWEJzWlFCM2FHOXNaUUJXYjJ4aGRHbHNaUUIzYUdsc1pRQkdhV3hsQUVkdmIyZHNaUUJ6YUhWbVpteGxBRlpsWTNSdmNsTm9kV1ptYkdVQVIzSnZkWEJPYjI1VmJtbG1iM0p0VTJoMVptWnNaUUJvWVc1a2JHVUFaRzkxWW14bEFIUjVjR1VnYVhNZ2JtOTBJR052Ym5OMGNuVmpkR2xpYkdVQWMzUnZjbUZuWlNCMGVYQmxJRzltSUdGemMybG5ibTFsYm5RZ2JYVnpkQ0JpWlNCamIyNXpkSEoxWTNScFlteGxBSFI1Y0dVZ2IyWWdablZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlJRzExYzNRZ1ltVWdZMjl1YzNSeWRXTjBhV0pzWlFCTllXdGxVRzlwYm5SbGNsWnBjMmxpYkdVQVRXRnJaVlJsZUdWc1ZtbHphV0pzWlFCTllXdGxWbWx6YVdKc1pRQndZWEpoYldWMFpYSnpJR0Z5WlNCcGJXMTFkR0ZpYkdVQUoyTnZibk4wSnlCMllYSnBZV0pzWlhNZ1lYSmxJR2x0YlhWMFlXSnNaUUFuYkdWMEp5QjJZWEpwWVdKc1pYTWdZWEpsSUdsdGJYVjBZV0pzWlFBbmIzWmxjbkpwWkdVbklIWmhjbWxoWW14bGN5QmhjbVVnYVcxdGRYUmhZbXhsQUU1dmJsZHlhWFJoWW14bEFIUnBiblE2T21GemREbzZSVzVoWW14bEFFMWhhMlZRYjJsdWRHVnlRWFpoYVd4aFlteGxBRTFoYTJWVVpYaGxiRUYyWVdsc1lXSnNaUUJOWVd0bFFYWmhhV3hoWW14bEFHRnlaM1Z0Wlc1MGN5QnZaaUJ3YjJsdWRHVnlJSFI1Y0dVZ2JYVnpkQ0J1YjNRZ2NHOXBiblFnZEc4Z1lTQnpkV0p6WlhRZ2IyWWdkR2hsSUc5eWFXZHBibUYwYVc1bklIWmhjbWxoWW14bEFHRnljbUY1SUdOdmRXNTBJRzExYzNRZ1pYWmhiSFZoZEdVZ2RHOGdZU0JqYjI1emRHRnVkQ0JwYm5SbFoyVnlJR1Y0Y0hKbGMzTnBiMjRnYjNJZ2IzWmxjbkpwWkdVZ2RtRnlhV0ZpYkdVQWJYVnpkQ0JpWlNCaElIWmhjbWxoWW14bEFFWnNZV2RKYm1ScGNtVmpkRlpoY21saFlteGxBR0psSUdsdWMzUmhiblJwWVhSbFpDQjJhV0VnVDNCV1lYSnBZV0pzWlFCUVlYbHNiMkZrSUcxMWMzUWdZbVVnZEdobElISmxjM1ZzZENCdlppQmhJRTl3Vm1GeWFXRmliR1VBUTJGc2JHRmliR1VnUkdGMFlTQnRkWE4wSUdKbElIUm9aU0J5WlhOMWJIUWdiMllnWVNCUGNGWmhjbWxoWW14bEFFUmxZblZuVEc5allXeFdZWEpwWVdKc1pRQjBhVzUwT2pwelpXMDZPa3h2WTJGc1ZtRnlhV0ZpYkdVQVJHVmlkV2RIYkc5aVlXeFdZWEpwWVdKc1pRQjBhVzUwT2pwelpXMDZPa2RzYjJKaGJGWmhjbWxoWW14bEFFUmxZblZuU1c1c2FXNWxaRlpoY21saFlteGxBSFJwYm5RNk9tRnpkRG82Vm1GeWFXRmliR1VBZEdsdWREbzZjMlZ0T2pwV1lYSnBZV0pzWlFCTWIyTmhiQ0JXWVhKcFlXSnNaUUJqYjJSbElHbHpJSFZ1Y21WaFkyaGhZbXhsQUZWdWNtVmhZMmhoWW14bEFDY2dZWE1nYVhRZ2FYTWdibTl1TFdodmMzUXRjMmhoY21WaFlteGxBSFJwYm5RNk9rTnNiMjVsWVdKc1pRQnpkRzl5WVdkbElHbHRZV2RsSUhaaGNtbGhZbXhsSUdseklHNWxhWFJvWlhJZ1RtOXVWM0pwZEdGaWJHVWdibTl5SUU1dmJsSmxZV1JoWW14bEFITjBiM0poWjJVZ2FXMWhaMlVnZG1GeWFXRmliR1VnYVhNZ1ltOTBhQ0JPYjI1WGNtbDBZV0pzWlNCaGJtUWdUbTl1VW1WaFpHRmliR1VBSUhkb2FXTm9JR0Z5WlNCMGFHVWdkSEoxWlNCaGJtUWdabUZzYzJVZ1luSmhibU5vWlhNZ1ptOXlJSFJvWlFCd2NtVnRaWEpuWlFCU1pXZHBjM1JsY2t4dmIzQk5aWEpuWlFCVFpXeGxZM1JwYjI1TlpYSm5aUUJCZEc5dGFXTkRiMjF3WVhKbFJYaGphR0Z1WjJVQVlYUnZiV2xqUlhoamFHRnVaMlVBUVhSdmJXbGpSWGhqYUdGdVoyVUFjMmhwWm5RZ2JHVm1kQ0J2Y0dWeVlYUnBiMjRnY21WemRXeDBjeUJwYmlCemFXZHVJR05vWVc1blpRQkNkV2xzWkU1RVVtRnVaMlVBSUdOaGJpZDBJR0psSUdFZ1ltRmpheTFsWkdkbEFIUmxlSFIxY21WVFlXMXdiR1ZDWVhObFEyeGhiWEJVYjBWa1oyVUFjMjkxY21ObElHeGhibWQxWVdkbEFFeGhibWQxWVdkbEFDQndhWEJsYkdsdVpTQnpkR0ZuWlFCallXNXViM1FnWTI5dGNHOXpaU0JzYjJjZ2JXVnpjMkZuWlFCVFVGWmZTMGhTWHpoaWFYUmZjM1J2Y21GblpRQlRVRlpmUzBoU1h6RTJZbWwwWDNOMGIzSmhaMlVBY0dsd1pWOXpkRzl5WVdkbEFIZHZjbXRuY205MWNDQnZjaUJ6ZEc5eVlXZGxBRU52Ym5OMFlXNTBVR2x3WlZOMGIzSmhaMlVBUTNKbFlYUmxVR2x3WlVaeWIyMVFhWEJsVTNSdmNtRm5aUUJVZVhCbFVHbHdaVk4wYjNKaFoyVUFRWFJ2YldsalUzUnZjbUZuWlFCVFVGWmZTMGhTWDNCdmMzUmZaR1Z3ZEdoZlkyOTJaWEpoWjJVQVUxQldYMDVXWDNOaGJYQnNaVjl0WVhOclgyOTJaWEp5YVdSbFgyTnZkbVZ5WVdkbEFGTmhiWEJzWlUxaGMydFFiM04wUkdWd2RHaERiM1psY21GblpRQkhZWFJvWlhJZ2IzQmxjbUYwYVc5dUlHbHpJR2x1ZG1Gc2FXUWdabTl5SUcxMWJIUnBjMkZ0Y0d4bElHbHRZV2RsQUVSeVpXWWdjMkZ0Y0d4cGJtY2diM0JsY21GMGFXOXVJR2x6SUdsdWRtRnNhV1FnWm05eUlHMTFiSFJwYzJGdGNHeGxJR2x0WVdkbEFGTmhiWEJzYVc1bklHOXdaWEpoZEdsdmJpQnBjeUJwYm5aaGJHbGtJR1p2Y2lCdGRXeDBhWE5oYlhCc1pTQnBiV0ZuWlFCRFlYQmhZbWxzYVhSNUlFbHRZV2RsVW1WamRDQnBjeUJ5WlhGMWFYSmxaQ0IwYnlCaFkyTmxjM01nYzNSdmNtRm5aU0JwYldGblpRQkRZWEJoWW1sc2FYUjVJRWx0WVdkbFFuVm1abVZ5SUdseklISmxjWFZwY21Wa0lIUnZJR0ZqWTJWemN5QnpkRzl5WVdkbElHbHRZV2RsQUVOaGNHRmlhV3hwZEhrZ1NXMWhaMlV4UkNCcGN5QnlaWEYxYVhKbFpDQjBieUJoWTJObGMzTWdjM1J2Y21GblpTQnBiV0ZuWlFCMGJ5QnpkRzl5WVdkbElHbHRZV2RsQUVOaGNHRmlhV3hwZEhrZ1UzUnZjbUZuWlVsdFlXZGxUWFZzZEdsellXMXdiR1VnYVhNZ2NtVnhkV2x5WldRZ2QyaGxiaUIxYzJsdVp5QnRkV3gwYVhOaGJYQnNaV1FnYzNSdmNtRm5aU0JwYldGblpRQnlaV0ZrSUhOMGIzSmhaMlVnYVcxaFoyVUFTVzFoWjJVZ1QzQmxjbUZ1WkNCVFlXMXdiR1VnYVhNZ2NtVnhkV2x5WldRZ1ptOXlJRzl3WlhKaGRHbHZiaUJ2YmlCdGRXeDBhUzF6WVcxd2JHVmtJR2x0WVdkbEFGWmhiR2xrWVhSbFNXMWhaMlVBUlhod1pXTjBaV1FnU1cxaFoyVWdkRzhnWW1VZ2IyWWdkSGx3WlNCUGNGUjVjR1ZKYldGblpRQkZlSEJsWTNSbFpDQnZjR1Z5WVc1a0lIUnZJR0psSUc5bUlIUjVjR1VnVDNCVWVYQmxTVzFoWjJVQVJYaHdaV04wWldRZ1NXMWhaMlVnZEc4Z1ltVWdUM0JVZVhCbFVHOXBiblJsY2lCM2FYUm9JRlI1Y0dVZ1QzQlVlWEJsU1cxaFoyVUFSWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdUM0JVZVhCbFNXMWhaMlVBVm1Gc2FXUmhkR1ZVZVhCbFNXMWhaMlVBUlhod1pXTjBaV1FnVTJGdGNHeGxJRWx0WVdkbElIUnZJR0psSUc5bUlIUjVjR1VnVDNCVWVYQmxVMkZ0Y0d4bFNXMWhaMlVBUVhKbmRXMWxiblJUZEc5eVlXZGxTVzFoWjJVQVFYSm5kVzFsYm5SVFlXMXdiR1ZrU1cxaFoyVUFSWGh3WldOMFpXUWdVMkZ0Y0d4bFpDQkpiV0ZuWlNCMGJ5QmlaU0J2WmlCMGVYQmxJRTl3Vkhsd1pWTmhiWEJzWldSSmJXRm5aUUJGZUhCbFkzUmxaQ0JKYldGblpTQnZjR1Z5WVc1a0lIUnZJR0psSUc5bUlIUjVjR1VnVDNCVWVYQmxVMkZ0Y0d4bFpFbHRZV2RsQUVWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUU5d1ZIbHdaVkJ2YVc1MFpYSWdkMmh2YzJVZ1UzUnZjbUZuWlNCRGJHRnpjeUJ2Y0dWeVlXNWtJR2x6SUVsdFlXZGxBRXhwYm10aFoyVUFSWGh3Y21WemMybHZiaWdwSUdScFpDQnViM1FnWm1sdVpDQnliMjkwSUc1dlpHVUFVMUJXWDBsT1ZFVk1YMlp3WDJaaGMzUmZiV0YwYUY5dGIyUmxBRzkyWlhKbWJHOTNJRzF2WkdVQWIyNXNlU0J3YjJsdWRHVnljeUJwYmlBOGMzUnZjbUZuWlQ0Z1lXUmtjbVZ6Y3lCemNHRmpaU0J0WVhrZ2MzQmxZMmxtZVNCaGJpQmhZMk5sYzNNZ2JXOWtaUUJ2Ym14NUlIWmhjbWxoWW14bGN5QnBiaUE4YzNSdmNtRm5aVDRnWVdSa2NtVnpjeUJ6Y0dGalpTQnRZWGtnYzNCbFkybG1lU0JoYmlCaFkyTmxjM01nYlc5a1pRQmhkRzl0YVdNZ2RtRnlhV0ZpYkdWeklHbHVJRHh6ZEc5eVlXZGxQaUJoWkdSeVpYTnpJSE53WVdObElHMTFjM1FnYUdGMlpTQnlaV0ZrWDNkeWFYUmxJR0ZqWTJWemN5QnRiMlJsQUhOaGJYQnNaWElnWm1sc2RHVnlJRzF2WkdVQVpYaGxZM1YwYVc5dUlHMXZaR1VBY1hWaGJuUnBlbUYwYVc5dUlHMXZaR1VBUmxBZ2IzQmxjbUYwYVc5dUlHMXZaR1VBUmxBZ1pHVnViM0p0SUcxdlpHVUFabXh2WVhScGJtY3RjRzlwYm5RZ1ptRnpkQ0J0WVhSb0lHMXZaR1VBYzJGdGNHeGxjaUJoWkdSeVpYTnphVzVuSUcxdlpHVUFabXh2WVhScGJtY3RjRzlwYm5RZ2NtOTFibVJwYm1jZ2JXOWtaUUJQY0ZOd1pXTkRiMjV6ZEdGdWRFOXdJRzl3WTI5a1pRQnpjSFk2T2s5d09qcFBjRVY0ZEVsdWMzUWdQVDBnYjNCamIyUmxBSE53ZGpvNlQzQTZPazl3VTNCbFkwTnZibk4wWVc1MFQzQWdQVDBnYjNCamIyUmxBSFZ1Y21WaFkyaGhZbXhsWDJOdlpHVUFkR2x1ZERvNmRIbHdaVG82Vlc1cGNYVmxUbTlrWlFCMGFXNTBPanBoYzNRNk9rNXZaR1VBZEdsdWREbzZZMjl1YzNSaGJuUTZPazV2WkdVQWRHbHVkRG82YzJWdE9qcE9iMlJsQUhScGJuUTZPblI1Y0dVNk9rNXZaR1VBVUc5cGJuUk5iMlJsQUVWNFpXTjFkR2x2YmsxdlpHVUFSbEJHWVhOMFRXRjBhRTF2WkdVQVJsQlNiM1Z1WkdsdVowMXZaR1VBYUdGc1psOWthWFpwWkdVQWJtRjBhWFpsWDJScGRtbGtaUUJrYVhOaFlteGxYM1poYkdsa1lYUnBiMjVmWDJsbmJtOXlaVjl6ZEhKcFpHVUFUM0JRZEhKQlkyTmxjM05EYUdGcGJpQnRkWE4wSUdoaGRtVWdZU0JDWVhObElIZG9iM05sSUhSNWNHVWdhWE1nWkdWamIzSmhkR1ZrSUhkcGRHZ2dRWEp5WVhsVGRISnBaR1VBVFdGMGNtbDRVM1J5YVdSbEFGaG1ZbE4wY21sa1pRQnZkbVZ5Y21sa1pRQjBhVzUwT2pwaGMzUTZPazkyWlhKeWFXUmxBRU5zZFhOMFpYSmxaRkpsWkhWalpRQkVaV0oxWjFOdmRYSmpaUUFnYVhNZ1pHVm1hVzVsWkNCdGIzSmxJSFJvWVc0Z2IyNWpaUUJQY0ZOaGJYQnNaWEpKYldGblpVRmtaSEpsYzNOcGJtZE5iMlJsVGxZZ2MyaHZkV3hrSUc5dWJIa2dZbVVnY0hKdmRtbGtaV1FnYjI1alpRQlBjRXh2WVdRZ1pYaHdjbVZ6YzJsdmJpQnBjeUJ1YjNRZ1lTQndiMmx1ZEdWeUlHOXlJSEpsWm1WeVpXNWpaUUJHYkdGblZIbHdaVkJoYzNOQ2VWSmxabVZ5Wlc1alpRQldZV3hwWkdGMFpVeGhlV1Z5VDNKV2FXVjNjRzl5ZEVsdVpHVjRRWFJTWldabGNtVnVZMlVBVm1Gc2FXUmhkR1ZRYjNOcGRHbHZia0YwVW1WbVpYSmxibU5sQUZaaGJHbGtZWFJsVkdWemMweGxkbVZzUVhSU1pXWmxjbVZ1WTJVQVZtRnNhV1JoZEdWUWIybHVkRk5wZW1WQmRGSmxabVZ5Wlc1alpRQldZV3hwWkdGMFpVTnNhWEJQY2tOMWJHeEVhWE4wWVc1alpVRjBVbVZtWlhKbGJtTmxBRlpoYkdsa1lYUmxVSEpwYldsMGFYWmxTV1JCZEZKbFptVnlaVzVqWlFCR2JHRm5VbFpoYkhWbFVtVm1aWEpsYm1ObEFFWnNZV2RNVm1Gc2RXVlNaV1psY21WdVkyVUFkR2x1ZERvNmNtVmhaR1Z5T2pwemNHbHlkam82VW1WbVpYSmxibU5sQUhScGJuUTZPblI1Y0dVNk9sSmxabVZ5Wlc1alpRQm5iRjlDWVhObFNXNXpkR0Z1WTJVQVptRnpkRjlrYVhOMFlXNWpaUUIzYUdWdUlHTmhiR04xYkdGMGFXNW5JR1JwYzNSaGJtTmxBR2RzWDBOc2FYQkVhWE4wWVc1alpRQm5iRjlEZFd4c1JHbHpkR0Z1WTJVQWJYVnpkQ0JpWlNCRVpXSjFaMVI1Y0dWTlpXMWlaWElzSUVSbFluVm5SblZ1WTNScGIyNHNJRzl5SUVSbFluVm5WSGx3WlVsdWFHVnlhWFJoYm1ObEFFeDFiV2x1WVc1alpRQkRjbTl6YzBSbGRtbGpaUUJUWTI5d1pTQnRkWE4wSUdKbElGTjFZbWR5YjNWd0lHOXlJRVJsZG1salpRQkNhWFJRYVdWalpRQmthWE5oWW14bFgzWmhiR2xrWVhScGIyNWZYMmxuYm05eVpWOWhaR1J5WlhOelgzTndZV05sQUdsdWRtRnNhV1FnZFhObElHOW1JR2x1Y0hWMEwyOTFkSEIxZENCaFpHUnlaWE56SUhOd1lXTmxBQ2NnYlhWemRDQnViM1FnYzNCbFkybG1hWGtnWVc0Z1lXUmtjbVZ6Y3lCemNHRmpaUUJ0YjJSMWJHVXRjMk52Y0dVZ0ozWmhjaWNnWkdWamJHRnlZWFJwYjI1eklIUm9ZWFFnWVhKbElHNXZkQ0J2WmlCMFpYaDBkWEpsSUc5eUlITmhiWEJzWlhJZ2RIbHdaWE1nYlhWemRDQndjbTkyYVdSbElHRnVJR0ZrWkhKbGMzTWdjM0JoWTJVQWNIUnlJRzFwYzNOcGJtY2dZV1JrY21WemN5QnpjR0ZqWlFCallXNXViM1FnZEdGclpTQjBhR1VnWVdSa2NtVnpjeUJ2WmlCbGVIQnlaWE56YVc5dUlHbHVJR2hoYm1Sc1pTQmhaR1J5WlhOeklITndZV05sQUdGMGIyMXBZeUIyWVhKcFlXSnNaWE1nYlhWemRDQm9ZWFpsSUR4emRHOXlZV2RsUGlCdmNpQThkMjl5YTJkeWIzVndQaUJoWkdSeVpYTnpJSE53WVdObEFISjFiblJwYldVdGMybDZaV1FnWVhKeVlYbHpJR05oYmlCdmJteDVJR0psSUhWelpXUWdhVzRnZEdobElEeHpkRzl5WVdkbFBpQmhaR1J5WlhOeklITndZV05sQUdaMWJtTjBhVzl1TFhOamIzQmxJQ2QyWVhJbklHUmxZMnhoY21GMGFXOXVJRzExYzNRZ2RYTmxJQ2RtZFc1amRHbHZiaWNnWVdSa2NtVnpjeUJ6Y0dGalpRQmhZMk5sYzNNZ2JXOWtaU0FuZDNKcGRHVW5JR2x6SUc1dmRDQjJZV3hwWkNCbWIzSWdkR2hsSUNkemRHOXlZV2RsSnlCaFpHUnlaWE56SUhOd1lXTmxBRDRzSUdKMWRDQnBjeUJ1YjNRZ2JHbHpkR1ZrSUdGeklHRnVJR2x1ZEdWeVptRmpaUUIwWlhoMGRYSmxYMlJsY0hSb1gyTjFZbVVBZEdWNGRIVnlaVjlqZFdKbEFFbHRZV2RsSUNkRWFXMG5JRzExYzNRZ1ltVWdNVVFzSURKRUxDQXpSQ0J2Y2lCRGRXSmxBRWx0WVdkbElFOXdaWEpoYm1RZ1FtbGhjeUJ5WlhGMWFYSmxjeUFuUkdsdEp5QndZWEpoYldWMFpYSWdkRzhnWW1VZ01VUXNJREpFTENBelJDQnZjaUJEZFdKbEFFbHRZV2RsSUU5d1pYSmhibVFnVFdsdVRHOWtJSEpsY1hWcGNtVnpJQ2RFYVcwbklIQmhjbUZ0WlhSbGNpQjBieUJpWlNBeFJDd2dNa1FzSURORUlHOXlJRU4xWW1VQVNXMWhaMlVnVDNCbGNtRnVaQ0JNYjJRZ2NtVnhkV2x5WlhNZ0owUnBiU2NnY0dGeVlXMWxkR1Z5SUhSdklHSmxJREZFTENBeVJDd2dNMFFnYjNJZ1EzVmlaUUJKYldGblpTQW5SR2x0SnlCallXNXViM1FnWW1VZ1EzVmlaUUJVYUdVZ1VtVnpkV3gwSUZSNWNHVWdiMllnVDNCV1pXTjBiM0pUYUhWbVpteGxJRzExYzNRZ1ltVUFSWGh3WldOMFpXUWdkbVZqZEc5eUlITnBlbVZ6SUc5bUlGSmxjM1ZzZENCVWVYQmxJR0Z1WkNCMGFHVWdiM0JsY21GdVpITWdkRzhnWW1VQVQzQmxia05NTG5OMFpBQm5iRjlRYjJsdWRFTnZiM0prQUdkc1gxUmxjM05EYjI5eVpBQm5iRjlHY21GblEyOXZjbVFBZDJobGJpQmpZV3hqZFd4aGRHbHVaeUJtWVdObFJtOXlkMkZ5WkFCR1lXTmxSbTl5ZDJGeVpBQm5kV0Z5WkFCa2FYTmpZWEprQUdadGIyUUFVMUJXWDBGTlJGOTBaWGgwZFhKbFgyZGhkR2hsY2w5aWFXRnpYMnh2WkFCVFVGWmZRVTFFWDNOb1lXUmxjbDlwYldGblpWOXNiMkZrWDNOMGIzSmxYMnh2WkFCVlRXOWtBRk5OYjJRQVJrMXZaQUJKYldGblpWRjFaWEo1VEc5a0FFbHRZV2RsVTNCaGNuTmxVMkZ0Y0d4bFVISnZha1Y0Y0d4cFkybDBURzlrQUVsdFlXZGxVMkZ0Y0d4bFVISnZha1Y0Y0d4cFkybDBURzlrQUVsdFlXZGxVM0JoY25ObFUyRnRjR3hsVUhKdmFrUnlaV1pGZUhCc2FXTnBkRXh2WkFCSmJXRm5aVk5oYlhCc1pWQnliMnBFY21WbVJYaHdiR2xqYVhSTWIyUUFTVzFoWjJWVGNHRnljMlZUWVcxd2JHVkVjbVZtUlhod2JHbGphWFJNYjJRQVNXMWhaMlZUWVcxd2JHVkVjbVZtUlhod2JHbGphWFJNYjJRQVNXMWhaMlZUY0dGeWMyVlRZVzF3YkdWRmVIQnNhV05wZEV4dlpBQkpiV0ZuWlZOaGJYQnNaVVY0Y0d4cFkybDBURzlrQUhkcGRHZ2dSWGh3YkdsamFYUk1iMlFBU1cxaFoyVlRjR0Z5YzJWVFlXMXdiR1ZRY205cVNXMXdiR2xqYVhSTWIyUUFTVzFoWjJWVFlXMXdiR1ZRY205cVNXMXdiR2xqYVhSTWIyUUFTVzFoWjJWVGNHRnljMlZUWVcxd2JHVlFjbTlxUkhKbFprbHRjR3hwWTJsMFRHOWtBRWx0WVdkbFUyRnRjR3hsVUhKdmFrUnlaV1pKYlhCc2FXTnBkRXh2WkFCSmJXRm5aVk53WVhKelpWTmhiWEJzWlVSeVpXWkpiWEJzYVdOcGRFeHZaQUJKYldGblpWTmhiWEJzWlVSeVpXWkpiWEJzYVdOcGRFeHZaQUJKYldGblpWTndZWEp6WlZOaGJYQnNaVWx0Y0d4cFkybDBURzlrQUVsdFlXZGxVMkZ0Y0d4bFNXMXdiR2xqYVhSTWIyUUFUV2x1VEc5a0FFbHRZV2RsVVhWbGNubFRhWHBsVEc5a0FISnZkVzVrQUNCdWIzUWdabTkxYm1RQVNXNTJZV3hwWkNCQmNuSmhlVU52ZFc1MElHWnZkVzVrQUN3Z2VtVnlieUJtYjNWdVpBQnBiblJsY201aGJDQmxjbkp2Y2pvZ1ltRmtJR052Ym5OMGNuVmpkQ0J1WlhOMGFXNW5JR1p2ZFc1a0FHRnpjMlZ5ZEdsdmJpQm1ZV2xzWldRNklHbHVjM1J5ZFdOMGFXOXVJSGRwZEdodmRYUWdjbVZ6ZFd4MElHbGtJR1p2ZFc1a0FGSnZkVzVrQUhKb2N5NXpaV052Ym1RQWJHaHpMbk5sWTI5dVpBQmFaWEp2UlhoMFpXNWtBRk5wWjI1RmVIUmxibVFBUlcxaVlYSnJJRk4wZFdScGIzTWdVblZ6ZENCSFVGVWdRMjl0Y0dsc1pYSWdRbUZqYTJWdVpBQTZJR2hoY3lCdWJ5QnZjR1Z5WVc1a0FIVnVaWGh3WldOMFpXUWdabUZwYkhWeVpTQjBieUJ0WVd0bElHRnVJRzl3WlhKaGJtUUFiV0ZzWm05eWJXVmtJRXh2WTJGMGFXOXVJR1JsWTI5eVlYUnBiMjRnYjI0Z1NVUWdjbVZ4ZFdseVpYTWdiMjVsSUd4cGRHVnlZV3dnYjNCbGNtRnVaQUJEWVd4c0lHbHVjM1J5ZFdOMGFXOXVJRzExYzNRZ2FHRjJaU0JoZENCc1pXRnpkQ0J2Ym1VZ2IzQmxjbUZ1WkFCRmJXbDBUM0JsY21GdVpBQkhaWFJQY0dWeVlXNWtBRVZ0YVhSTllYTnJUM0JsY21GdVpBQnpjSFpFWldOdlpHVk1hWFJsY21Gc1UzUnlhVzVuVDNCbGNtRnVaQUJ3WVhKelpVOXdaWEpoYm1RQWMzQjJWR0ZyWlVacGNuTjBUV0YwWTJoaFlteGxUM0JsY21GdVpBQkhaWFJUYVc1bmJHVlhiM0prVDNCbGNtRnVaQUJTWldkcGMzUmxja1oxYm1OMGFXOXVSVzVrQUZKbFoybHpkR1Z5UW14dlkydEZibVFBUzJoeWIyNXZjeUJIYkhOc1lXNW5JRkpsWm1WeVpXNWpaU0JHY205dWRDQkZibVFBUjNKdmRYQk9iMjVWYm1sbWIzSnRURzluYVdOaGJFRnVaQUJIY205MWNFNXZibFZ1YVdadmNtMUNhWFIzYVhObFFXNWtBR0YwYjIxcFkwRnVaQUJCZEc5dGFXTkJibVFBUTJocGJHUUFabWxsYkdRQU9pQmxlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQjJiMmxrQUdObGJuUnliMmxrQUVsdWRHVnljRzlzWVhSbFFYUkRaVzUwY205cFpBQkZlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQlBjRlI1Y0dWUWIybHVkR1Z5SUhkb2IzTmxJRlI1Y0dVZ2IzQmxjbUZ1WkNCdGRYTjBJR0psSUdFZ2MyTmhiR0Z5SUc1MWJXVnlhV05oYkNCMGVYQmxJRzl5SUU5d1ZIbHdaVlp2YVdRQVVtVjBkWEp1SUZSNWNHVWdiWFZ6ZENCaVpTQlBjRlI1Y0dWV2IybGtBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2xadmFXUUFkR2x1ZERvNmRIbHdaVG82Vm05cFpBQnBiblJsY201aGJDQmxjbkp2Y2pvZ1FYSnlZWGtnYkdWdVozUm9JR2x1Wm04Z2FYTWdhVzUyWVd4cFpBQnBibk4wTFQ1eVpYTjFiSFJmYVdRQWQyOXlhMmR5YjNWd1gybGtBR3h2WTJGc1gybHVkbTlqWVhScGIyNWZhV1FBWjJ4dlltRnNYMmx1ZG05allYUnBiMjVmYVdRQWNtVnpaWEoyWlY5cFpBQjFibWx4ZFdWZmFXUUFhVzV6ZEMwK2RIbHdaVjlwWkFCQWFXUUFJR2x6SUc1dmRDQmhJSFI1Y0dVZ2FXUUFSbXhoWjBselQzQjBhVzFwZW1Wa0FIcGxjbThnYkdWdVozUm9JSFpsWTNSdmNpQmpZVzRnYm05MElHSmxJRzV2Y20xaGJHbDZaV1FBYVc1emRDMCtiM0JqYjJSbEtDa2dQVDBnYzNCMk9qcFBjRG82VDNCRGIzQjVUV1Z0YjNKNUlIeDhJR2x1YzNRdFBtOXdZMjlrWlNncElEMDlJSE53ZGpvNlQzQTZPazl3UTI5d2VVMWxiVzl5ZVZOcGVtVmtBRkpsYkdGNFpXUUFJR2x6SUdScGMyRnNiRzkzWldRQVFYUjBaVzF3ZEdsdVp5QjBieUIxYzJVZ1VISnZaM0poYlVKMWFXeGtaWElnWVdaMFpYSWdhWFFnYUdGeklHSmxaVzRnYlc5MlpXUUFKeUIzWVhNZ2JtOTBJSEpsYzI5c2RtVmtBRVJsWW5WblUyOTFjbU5sUTI5dWRHbHVkV1ZrQUVWNGRHVnVaR1ZrSUdsdWMzUnlkV04wYVc5dUlFZE1VMHh6ZEdRME5UQkpUV2w0SUdseklHNXZkQ0J6ZFhCd2IzSjBaV1FBWTNWaVpTQmthVzFsYm5OcGIyNXpJR1p2Y2lCemRHOXlZV2RsSUhSbGVIUjFjbVZ6SUdGeVpTQnViM1FnYzNWd2NHOXlkR1ZrQUc5dWJIa2dNbVFnYlhWc2RHbHpZVzF3YkdWa0lIUmxlSFIxY21WeklHRnlaU0J6ZFhCd2IzSjBaV1FBUm14aFowbHpVSEp2ZEdWamRHVmtBQ0JsZUhCbFkzUmxaQUJwYm5aaGJHbGtJSEJ5YjJkeVlXMGdaMlZ1WlhKaGRHVmtBSFpoYkhWbElHTnZibk4wY25WamRHOXlJR1YyWVd4MVlYUmxaQ0JpZFhRZ2JtOTBJSFZ6WldRQWRtRnNkV1VnWTI5dWRtVnljMmx2YmlCbGRtRnNkV0YwWldRZ1luVjBJRzV2ZENCMWMyVmtBSEpsZEhWeWJpQjJZV3gxWlNCdlppQmpZV3hzSUc1dmRDQjFjMlZrQUUxdlpIVnNaVkJ5YjJObGMzTmxaQUJ3YjNOemFXSnNlU0J1YjI0dGRXNXBabTl5YlNCMllXeDFaU0J3WVhOelpXUUFjbVZ6YjJ4MmFXNW5JR1poYVd4bFpDd2dZblYwSUc1dklHVnljbTl5SUhkaGN5QnlZV2x6WldRQVFXeHBZWE5sWkFCVFpXeGxZM1JwYjI0Z2JYVnpkQ0JpWlNCemRISjFZM1IxY21Wa0FGSmxjR1ZoZEUxcGNuSnZjbVZrQUNCcGN5QnViM1FnYzNWd2NHOXlkR1ZrTGlCUGJteDVJRkJ2YzJsMGFXOXVJR2x6SUhOMWNIQnZjblJsWkN3Z1lXNWtJRkJ2YVc1MFUybDZaU0JwY3lCcFoyNXZjbVZrQUZOUVZsOUZXRlJmWm5KaFoyMWxiblJmWm5Wc2JIbGZZMjkyWlhKbFpBQkhjbTkxY0U1dmJsVnVhV1p2Y20xRGJIVnpkR1Z5WldRQUlHMXBjM05wYm1jN0lHSnNiMk5yY3lCemFHOTFiR1FnWVd4eVpXRmtlU0JvWVhabElHSmxaVzRnY21WbmFYTjBaWEpsWkFCVmJtOXlaR1Z5WldRQVQzSmtaWEpsWkFBNklHbHVJRloxYkd0aGJpQXhMakFnWlc1MmFYSnZibTFsYm5RZ1RXVnRiM0o1SUZOamIzQmxJR2x6SUdOaGJpQnViM1FnWW1VZ1UzVmlaM0p2ZFhBZ2QybDBhRzkxZENCVGRXSm5jbTkxY0VKaGJHeHZkRXRJVWlCdmNpQlRkV0puY205MWNGWnZkR1ZMU0ZJZ1pHVmpiR0Z5WldRQVIweFRURk5vWVhKbFpBQkdiR0ZuVUhKdmRHOTBlWEJsWkFCVFVGWmZUbFpmYzJoaFpHVnlYM04xWW1keWIzVndYM0JoY25ScGRHbHZibVZrQUVsdWJHbHVaV1FBZFc1a1pXWnBibVZrQUhSaGNtZGxkQ0JwY3lCdWIzUWdaR1ZtYVc1bFpBQWdhR0Z6SUc1dmRDQmlaV1Z1SUdSbFptbHVaV1FBVlc1emFXZHVaV1FBVTFCV1gwbE9WRVZNWDNKMWJuUnBiV1ZmWVd4cFoyNWxaQUJCYkdsbmJtVmtBRk5wWjI1bFpBQjBhVzUwT2pweVpXRmtaWEk2T25Od2FYSjJPanBPWVcxbFpBQWdhWE5mYzJGdGNHeGxaQUJqYjI1emRDQmhjM05sY25ScGIyNGdabUZwYkdWa0FHWXhOaUIwZVhCbElIVnpaV1FnZDJsMGFHOTFkQ0FuWmpFMkp5QmxlSFJsYm5OcGIyNGdaVzVoWW14bFpBQkViM1JRY205a2RXTjBTVzV3ZFhRMGVEaENhWFJRWVdOclpXUUFSMHhUVEZCaFkydGxaQUJEVUdGamEyVmtBR1J2ZERSVk9GQmhZMnRsWkFCa2IzUTBTVGhRWVdOclpXUUFWVzV6Y0dWamFXWnBaV1FBVkdobGMyVWdkbUZ5YVdGaWJHVnpJRzExYzNRZ2FHRjJaU0JFWlhOamNtbHdkRzl5VTJWMElHRnVaQ0JDYVc1a2FXNW5JR1JsWTI5eVlYUnBiMjV6SUhOd1pXTnBabWxsWkFCWGIzSnJaM0p2ZFhBZ2MzUnZjbUZuWlNCamJHRnpjeUJ3YjJsdWRHVnlJSEpsY1hWcGNtVnpJRlpoY21saFlteGxVRzlwYm5SbGNuTWdZMkZ3WVdKcGJHbDBlU0IwYnlCaVpTQnpjR1ZqYVdacFpXUUFVR1ZsYkVOdmRXNTBJR0Z1WkNCRWIyNTBWVzV5YjJ4c0lHeHZiM0FnWTI5dWRISnZiSE1nYlhWemRDQnViM1FnWW05MGFDQmlaU0J6Y0dWamFXWnBaV1FBVUdGeWRHbGhiRU52ZFc1MElHRnVaQ0JFYjI1MFZXNXliMnhzSUd4dmIzQWdZMjl1ZEhKdmJITWdiWFZ6ZENCdWIzUWdZbTkwYUNCaVpTQnpjR1ZqYVdacFpXUUFWVzV5YjJ4c0lHRnVaQ0JFYjI1MFZXNXliMnhzSUd4dmIzQWdZMjl1ZEhKdmJITWdiWFZ6ZENCdWIzUWdZbTkwYUNCaVpTQnpjR1ZqYVdacFpXUUFaWGhqYUdGdVoyVmtBRVJsY0hSb1ZXNWphR0Z1WjJWa0FFbHRZV2RsUjJGMGFHVnlSWGgwWlc1a1pXUUFWVTExYkVWNGRHVnVaR1ZrQUZOTmRXeEZlSFJsYm1SbFpBQnVieUIwZVhCbElIQnliM1pwWkdWa0FFVnRZbVZrWkdWa0FGZGxaQUIxWDNKb1lXUmtBSE5mY21oaFpHUUFkVjlvWVdSa0FITmZhR0ZrWkFCVFVGWmZSVmhVWDNOb1lXUmxjbDloZEc5dGFXTmZabXh2WVhSZllXUmtBRk5RVmw5RldGUmZjMmhoWkdWeVgyRjBiMjFwWTE5bWJHOWhkREUyWDJGa1pBQlRjR0ZqYVc1blJuSmhZM1JwYjI1aGJFOWtaQUJoZEc5dGFXTkJaR1FBUjNKdmRYQkpRV1JrQUVkeWIzVndUbTl1Vlc1cFptOXliVWxCWkdRQVFYUnZiV2xqU1VGa1pBQkhjbTkxY0VaQlpHUUFSM0p2ZFhCT2IyNVZibWxtYjNKdFJrRmtaQUJIY205MWNFNXZibFZ1YVdadmNtMVJkV0ZrQUhSbGVIUjFjbVZUWVcxd2JHVkhjbUZrQUc5d1kyOWtaWE1nYjNJZ2RHOW5aWFJvWlhJZ2QybDBhQ0JKYldGblpTQlBjR1Z5WVc1a0lFZHlZV1FBZDI5eWEyZHliM1Z3Vlc1cFptOXliVXh2WVdRQWRHVjRkSFZ5WlV4dllXUUFZWFJ2YldsalRHOWhaQUJCZEc5dGFXTk1iMkZrQUhScGJuUTZPbk5sYlRvNlRHOWhaQUJ0WVdRQUlISmxZV1FBVDNCSmJXRm5aVk53WVhKelpWSmxZV1FBU1cxaFoyVWdSR2x0SUZOMVluQmhjM05FWVhSaElHTmhibTV2ZENCaVpTQjFjMlZrSUhkcGRHZ2dTVzFoWjJWVGNHRnljMlZTWldGa0FFbHRZV2RsVW1WaFpBQkZibU52ZFc1MFpYSmxaQ0JsZUhSbGJtUmxaQ0JwYm5OMGNuVmpkR2x2YmlCSFRGTk1jM1JrTkRVd1FtRmtBRlpsY25SbGVFbGtBRXh2WTJGc1UybDZaVWhwYm5SSlpBQkJiR2xuYm0xbGJuUkpaQUJUWlhSU1pYTjFiSFJKWkFCTllYaENlWFJsVDJabWMyVjBTV1FBUjJ4dlltRnNUR2x1WldGeVNXUUFVM1ZpWjNKdmRYQnpVR1Z5VjI5eWEyZHliM1Z3U1dRQVUzVmlaM0p2ZFhCSlpBQlRkV0puY205MWNFeHZZMkZzU1c1MmIyTmhkR2x2Ymtsa0FFZHNiMkpoYkVsdWRtOWpZWFJwYjI1SlpBQlZibWxtYjNKdFNXUUFaWGgwY21GZmQyOXlaSE5iTUYwZ1BUMGdRWEp5WVhrNk9reGxibWQwYUVsdVptODZPbXRFWldacGJtbHVaMGxrQUV4dlkyRnNVMmw2WlVsa0FGUjVjR1ZTWlhObGNuWmxTV1FBU1hOV1lXeHBaRkpsYzJWeWRtVkpaQUJRY21sdGFYUnBkbVZKWkFCVVlXdGxUbVY0ZEZWdWFYRjFaVWxrQUVSbFkyOXlZWFJwYjI1eklIUmhhMmx1WnlCSlJDQndZWEpoYldWMFpYSnpJRzFoZVNCdWIzUWdZbVVnZFhObFpDQjNhWFJvSUU5d1JHVmpiM0poZEdWSlpBQkVaV052Y21GMGFXOXVjeUIwYUdGMElHUnZiaWQwSUhSaGEyVWdTVVFnY0dGeVlXMWxkR1Z5Y3lCdFlYa2dibTkwSUdKbElIVnpaV1FnZDJsMGFDQlBjRVJsWTI5eVlYUmxTV1FBVTJGdGNHeGxTV1FBUlhobFkzVjBhVzl1VFc5a1pVbGtBRWx1YzNSaGJtTmxTV1FBVTNCbFkwbGtBQ0JrYjJWeklHNXZkQ0J5WldabGNtVnVZMlVnWVc0Z1QzQkZlSFJKYm5OMFNXMXdiM0owSUhKbGMzVnNkQ0JKWkFCMFpYaDBkWEpsWHpOa0FIUmxlSFIxY21WZmMzUnZjbUZuWlY4elpBQjBaWGgwZFhKbFgyUmxjSFJvWHpKa0FIUmxlSFIxY21WZk1tUUFkR1Y0ZEhWeVpWOXpkRzl5WVdkbFh6SmtBSFJsZUhSMWNtVmZaR1Z3ZEdoZmJYVnNkR2x6WVcxd2JHVmtYekprQUhSbGVIUjFjbVZmYlhWc2RHbHpZVzF3YkdWa1h6SmtBSFJsZUhSMWNtVmZNV1FBZEdWNGRIVnlaVjl6ZEc5eVlXZGxYekZrQUc5d1pYSmhibVJmWkdWell3QkhaWFJFWldacGJtbDBhVzl1UkdWell3QnpkR1E2T21KaFpGOWhiR3h2WXdCUGNGTndaV05EYjI1emRHRnVkQ0J2Y0dOdlpHVWdkR0ZpYkdVZ2IzVjBJRzltSUhONWJtTUFkSEoxYm1NQVZISjFibU1BVlhObGNsTmxiV0Z1ZEdsakFGTm9hV1owVW1sbmFIUkJjbWwwYUcxbGRHbGpBRWR5YjNWd1RtOXVWVzVwWm05eWJVRnlhWFJvYldWMGFXTUFSR1ZpZFdkVWVYQmxRbUZ6YVdNQVNXMWhaMlZDWVhOcFl3QlRVRlpmVGxaZlpuSmhaMjFsYm5SZmMyaGhaR1Z5WDJKaGNubGpaVzUwY21sakFGTlFWbDlMU0ZKZlpuSmhaMjFsYm5SZmMyaGhaR1Z5WDJKaGNubGpaVzUwY21sakFGQjBja05oYzNSVWIwZGxibVZ5YVdNQVQzQldZWEpwWVdKc1pTQnpkRzl5WVdkbElHTnNZWE56SUdOaGJtNXZkQ0JpWlNCSFpXNWxjbWxqQUhScGJuUTZPblI1Y0dVNk9rRmljM1J5WVdOMFRuVnRaWEpwWXdCZllYUnZiV2xqQUhScGJuUTZPblJ5WVc1elptOXliVG82VTNCcGNuWkJkRzl0YVdNQWRHbHVkRG82ZEhsd1pUbzZRWFJ2YldsakFGWmxZM1J2Y2tsdWMyVnlkRVI1Ym1GdGFXTUFWbVZqZEc5eVJYaDBjbUZqZEVSNWJtRnRhV01BUm14aFowbHpVSFZpYkdsakFHVnlabU1BWDE5bWNtVjRjRjl5WlhOMWJIUmZkbVZqQUY5ZmJXOWtabDl5WlhOMWJIUmZkbVZqQUVSbFl3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2Y21WemIyeDJaWEl2ZFc1cFptOXliV2wwZVM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOWhjbkpoZVM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOXRZWFJ5YVhndVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDNSeVlXNXpabTl5YlM5MWJuTm9ZV1J2ZHk1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WTJ4dmJtVmZZMjl1ZEdWNGRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMMk52Ym5OMExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZZWEp5WVhsZlkyOTFiblF1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5aGMzTnBaMjV0Wlc1MFgzTjBZWFJsYldWdWRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMMnh2YjNCZmMzUmhkR1Z0Wlc1MExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZiRzl2Y0Y5emRHRjBaVzFsYm5RdVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDJGemRDOXlaWFIxY201ZmMzUmhkR1Z0Wlc1MExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZZMkZzYkY5emRHRjBaVzFsYm5RdVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDJGemRDOTJZWEpwWVdKc1pWOWtaV05zWDNOMFlYUmxiV1Z1ZEM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WVhOMEwySnNiMk5yWDNOMFlYUmxiV1Z1ZEM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2YzJWdEwySnNiMk5yWDNOMFlYUmxiV1Z1ZEM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WVhOMEwzTjNhWFJqYUY5emRHRjBaVzFsYm5RdVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDNObGJTOXpkMmwwWTJoZmMzUmhkR1Z0Wlc1MExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZZbkpsWVd0ZmFXWmZjM1JoZEdWdFpXNTBMbU5qQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOWhjM1F2YVdaZmMzUmhkR1Z0Wlc1MExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZZMkZ6WlY5emRHRjBaVzFsYm5RdVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDJGemRDOXNaWFF1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM05sYlM5allXeHNYM1JoY21kbGRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMM04wY25WamRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmMyVnRMM04wY25WamRDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNtVnpiMngyWlhJdlluVnBiSFJwYmw5emRISjFZM1J6TG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzloYzNRdllXeHBZWE11WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM1I1Y0dVdmRtVmpkRzl5TG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzl5WlhOdmJIWmxjaTkyWVd4cFpHRjBiM0l1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM0psYzI5c2RtVnlMM0psYzI5c2RtVnlMbU5qQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOTBlWEJsTDNCdmFXNTBaWEl1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM0psYzI5c2RtVnlMM05sYlY5b1pXeHdaWEl1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM0psWVdSbGNpOXpjR2x5ZGk5dVlXMWxjaTVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZZWE4wTDNSbGJYQnNZWFJsWkY5cFpHVnVkR2xtYVdWeUxtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZhV1JsYm5ScFptbGxjaTVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZjSEp2WjNKaGJWOWlkV2xzWkdWeUxtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5dWRXMWlaWEl1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5emRISjFZM1JmYldWdFltVnlMbU5qQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOXpaVzB2YVc1bWJ5NWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNtVmhaR1Z5TDNOd2FYSjJMMloxYm1OMGFXOXVMbU5qQUM5VmMyVnljeTl5ZFc1dVpYSXZkMjl5YXk5MGQyZHpiQzkwZDJkemJDOUVaWEJsYm1SbGJtTnBaWE12ZEdsdWRDOXpjbU12ZEdsdWRDOWhjM1F2Wm5WdVkzUnBiMjR1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5aWFXNWhjbmxmWlhod2NtVnpjMmx2Ymk1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WVhOMEwySnBkR05oYzNSZlpYaHdjbVZ6YzJsdmJpNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMMmx1WkdWNFgyRmpZMlZ6YzI5eVgyVjRjSEpsYzNOcGIyNHVZMk1BTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwyRnpkQzl0WlcxaVpYSmZZV05qWlhOemIzSmZaWGh3Y21WemMybHZiaTVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZZWE4wTDJGalkyVnpjMjl5WDJWNGNISmxjM05wYjI0dVkyTUFMMVZ6WlhKekwzSjFibTVsY2k5M2IzSnJMM1IzWjNOc0wzUjNaM05zTDBSbGNHVnVaR1Z1WTJsbGN5OTBhVzUwTDNOeVl5OTBhVzUwTDJGemRDOXBaR1Z1ZEdsbWFXVnlYMlY0Y0hKbGMzTnBiMjR1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5MWJtRnllVjl2Y0Y5bGVIQnlaWE56YVc5dUxtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZZMkZzYkY5bGVIQnlaWE56YVc5dUxtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZkbUZzZFdWZlpYaHdjbVZ6YzJsdmJpNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmRISmhibk5tYjNKdEwzUnlZVzV6Wm05eWJTNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNISnZaM0poYlM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZDNKcGRHVnlMM2RuYzJ3dloyVnVaWEpoZEc5eVgybHRjR3d1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMM0psWVdSbGNpOXpjR2x5ZGk5d1lYSnpaWEpmYVcxd2JDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdllYTjBMMlJwWVdkdWIzTjBhV05mWTI5dWRISnZiQzVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZjM2x0WW05c0xtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5elpXMHZZMkZzYkM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2WVhOMEwzUjVjR1ZmWkdWamJDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNtVnpiMngyWlhJdlkyOXVjM1JmWlhaaGJDNWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdmNtVnpiMngyWlhJdlpHVndaVzVrWlc1amVWOW5jbUZ3YUM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZDNKcGRHVnlMMlpzYjJGMFgzUnZYM04wY21sdVp5NWpZd0F2VlhObGNuTXZjblZ1Ym1WeUwzZHZjbXN2ZEhkbmMyd3ZkSGRuYzJ3dlJHVndaVzVrWlc1amFXVnpMM1JwYm5RdmMzSmpMM1JwYm5RdlkyOXVjM1JoYm5RdmRtRnNkV1V1WTJNQUwxVnpaWEp6TDNKMWJtNWxjaTkzYjNKckwzUjNaM05zTDNSM1ozTnNMMFJsY0dWdVpHVnVZMmxsY3k5MGFXNTBMM055WXk5MGFXNTBMMkZ6ZEM5aWRXbHNkR2x1WDJGMGRISnBZblYwWlM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOWtaWEIwYUY5MFpYaDBkWEpsTG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzkwZVhCbEwyUmxjSFJvWDIxMWJIUnBjMkZ0Y0d4bFpGOTBaWGgwZFhKbExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5MGVYQmxMMjExYkhScGMyRnRjR3hsWkY5MFpYaDBkWEpsTG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzkwZVhCbEwzTmhiWEJzWldSZmRHVjRkSFZ5WlM1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOTBlWEJsTG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzloYzNRdlpHbGhaMjV2YzNScFkxOXlkV3hsWDI1aGJXVXVZMk1BTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwyRnpkQzl0YjJSMWJHVXVZMk1BTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwzTjViV0p2YkY5MFlXSnNaUzVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZjbVZ6YjJ4MlpYSXZhVzUwY21sdWMybGpYM1JoWW14bExtTmpBQzlWYzJWeWN5OXlkVzV1WlhJdmQyOXlheTkwZDJkemJDOTBkMmR6YkM5RVpYQmxibVJsYm1OcFpYTXZkR2x1ZEM5emNtTXZkR2x1ZEM5aGMzUXZkbUZ5YVdGaWJHVXVZMk1BTDFWelpYSnpMM0oxYm01bGNpOTNiM0pyTDNSM1ozTnNMM1IzWjNOc0wwUmxjR1Z1WkdWdVkybGxjeTkwYVc1MEwzTnlZeTkwYVc1MEwzUjVjR1V2Y21WbVpYSmxibU5sTG1OakFDOVZjMlZ5Y3k5eWRXNXVaWEl2ZDI5eWF5OTBkMmR6YkM5MGQyZHpiQzlFWlhCbGJtUmxibU5wWlhNdmRHbHVkQzl6Y21NdmRHbHVkQzl6WlcwdmJHOWhaQzVqWXdBdlZYTmxjbk12Y25WdWJtVnlMM2R2Y21zdmRIZG5jMnd2ZEhkbmMyd3ZSR1Z3Wlc1a1pXNWphV1Z6TDNScGJuUXZjM0pqTDNScGJuUXZkSEpoYm5ObWIzSnRMM053YVhKMlgyRjBiMjFwWXk1all3QXZWWE5sY25NdmNuVnVibVZ5TDNkdmNtc3ZkSGRuYzJ3dmRIZG5jMnd2UkdWd1pXNWtaVzVqYVdWekwzUnBiblF2YzNKakwzUnBiblF2ZEhsd1pTOWhkRzl0YVdNdVkyTUFYMk1BZEdsdWREbzZkSEpoYm5ObWIzSnRPanBUY0dseWRrRjBiMjFwWXpvNlUzUjFZZ0JoZEc5dGFXTlRkV0lBUVhSdmJXbGpTVk4xWWdCR1UzVmlBRVpwYm1SVlRYTmlBRVpwYm1SVFRYTmlBRVpwYm1SSlRITmlBR2xzYjJkaUFGaG1ZZ0JHWldJQUpXSUFkWE5sY2w5a1lYUmhBRWx0WVdkbElDZEVhVzBuSUdOaGJtNXZkQ0JpWlNCVGRXSndZWE56UkdGMFlRQk5iM1psVkc5TVlYSm5aVVJoZEdFQWRHZGhiVzFoQUd4bllXMXRZUUIzYUdWdUlHTmhiR04xYkdGMGFXNW5JR1p0WVFCR2JXRUFXR1Z1YVdFQVoyWjRMWEp6SUdOdmJXMTFibWwwZVNCT1lXZGhBR05vY205dGFYVnRYMlY0Y0dWeWFXMWxiblJoYkY5a2NEUmhBQ1ZoQUhoZkFGOWZabkpsZUhCZmNtVnpkV3gwWHdCZlgyMXZaR1pmY21WemRXeDBYd0JmYzNSeWRXTjBYd0JmY0hSeVh3QmZjblZ1ZEdsdFpXRnljbDhBWDJGeWNsOEFJV2x6WDNObGJuUnBibVZzWHdCMFpYaDBkWEpsWDJSbGNIUm9Yd0JQY0dGeGRXVmZBSFJsZUhSMWNtVmZBSFJsZUhSMWNtVmZjM1J2Y21GblpWOEFYM04wY21sa1pWOEFhR0Z6WDNKbGMzVnNkRjlwWkY4QWRHVjRkSFZ5WlY5a1pYQjBhRjl0ZFd4MGFYTmhiWEJzWldSZkFIUmxlSFIxY21WZmJYVnNkR2x6WVcxd2JHVmtYd0JmWDNCaFkydGxaRjhBYzNSMVlsOEFjMjFoYkd4ZlpHRjBZVjhBSVd4aGNtZGxYMlJoZEdGZkFGNEFXM1Z1Ym1GdFpXUWdiM1psY25KcFpHVXRaWGh3Y21WemMybHZibDBBS1YwQVd3QlNiM1Z1WkdsdVowMXZaR1ZTVkZvQVRsTmFBQ1ZoSUNWaUlDVmtJQ1ZJT2lWTk9pVlRJQ1ZaQUZCUFUwbFlBRWhwZEU5aWFtVmpkRWx6Ulcxd2RIbE9WZ0JJYVhSUFltcGxZM1JTWldOdmNtUkZiWEIwZVU1V0FGUmxjbTFwYm1GMFpWSmhlVTVXQUVocGRFOWlhbVZqZEZSeVlXTmxVbUY1VGxZQVZIbHdaVU52YjNCbGNtRjBhWFpsVFdGMGNtbDRUbFlBVUdWeVZtVnlkR1Y0VGxZQVNHbDBUMkpxWldOMFIyVjBSMlZ2YldWMGNubEpibVJsZUU1V0FFaHBkRTlpYW1WamRFZGxkRWx1YzNSaGJtTmxRM1Z6ZEc5dFNXNWtaWGhPVmdCSWFYUlBZbXBsWTNSU1pXTnZjbVJJYVhSWGFYUm9TVzVrWlhoT1ZnQklhWFJQWW1wbFkzUkhaWFJRY21sdGFYUnBkbVZKYm1SbGVFNVdBRWhwZEU5aWFtVmpkRWRsZEZOb1lXUmxja0pwYm1ScGJtZFVZV0pzWlZKbFkyOXlaRWx1WkdWNFRsWUFVbUY1VkcxaGVFNVdBRWhwZEU5aWFtVmpkRWRsZEZKaGVWUk5ZWGhPVmdCTVlYbGxjbEJsY2xacFpYZE9WZ0JRYjNOcGRHbHZibEJsY2xacFpYZE9WZ0JXYVdWM2NHOXlkRTFoYzJ0UVpYSldhV1YzVGxZQVEyeHBjRVJwYzNSaGJtTmxVR1Z5Vm1sbGQwNVdBRU4xYkd4RWFYTjBZVzVqWlZCbGNsWnBaWGRPVmdCVGFHRmtaWEpUZEdWeVpXOVdhV1YzVGxZQVRXVnphRlpwWlhkRGIzVnVkRTVXQUZSaGMydERiM1Z1ZEU1V0FGQnlhVzFwZEdsMlpVTnZkVzUwVGxZQVUwMURiM1Z1ZEU1V0FFbHRZV2RsVTJGdGNHeGxSbTl2ZEhCeWFXNTBUbFlBU1cxaFoyVkdiMjkwY0hKcGJuUk9WZ0JTWlc5eVpHVnlWR2h5WldGa1YybDBhRWhwYm5ST1ZnQkJibmxJYVhST1ZnQkRiRzl6WlhOMFNHbDBUbFlBU0dsMFQySnFaV04wU1hOSWFYUk9WZ0JJYVhSUFltcGxZM1JTWldOdmNtUklhWFJPVmdCb2FYUlBZbXBsWTNST1ZnQlNaVzl5WkdWeVZHaHlaV0ZrVjJsMGFFaHBkRTlpYW1WamRFNVdBRlI1Y0dVZ2JYVnpkQ0JpWlNCUGNGUjVjR1ZJYVhSUFltcGxZM1JPVmdCSWFYUlBZbXBsWTNSSFpYUlhiM0pzWkZSdlQySnFaV04wVGxZQVNHbDBUMkpxWldOMFNYTk5hWE56VGxZQVNHbDBUMkpxWldOMFVtVmpiM0prVFdsemMwNVdBRk5vWVdSbGNsTk5RblZwYkhScGJuTk9WZ0JKYm1OdmJXbHVaMUpoZVVac1lXZHpUbFlBVDNWMGNIVjBVSEpwYldsMGFYWmxjMDVXQUZCbGNsWnBaWGRCZEhSeWFXSjFkR1Z6VGxZQVNHbDBUMkpxWldOMFIyVjBRWFIwY21saWRYUmxjMDVXQUU5MWRIQjFkRXhwYm1WelRsWUFUM1YwY0hWMFZISnBZVzVuYkdWelRsWUFUV1Z6YUZacFpYZEpibVJwWTJWelRsWUFVSEpwYldsMGFYWmxTVzVrYVdObGMwNVdBRU52YlhCMWRHVkVaWEpwZG1GMGFYWmxSM0p2ZFhCUmRXRmtjMDVXQUZKaGVWUnlZV05wYm1kTmIzUnBiMjVDYkhWeVRsWUFVMmhoWkdWeVZtbGxkM0J2Y25SSmJtUmxlRXhoZVdWeVRsWUFRbWx1Wkd4bGMzTlRZVzF3YkdWeVRsWUFRMjl1ZG1WeWRGVlViMU5oYlhCc1pYSk9WZ0JDYjNWdVpGTmhiWEJzWlhKT1ZnQklhWFJQWW1wbFkzUlRhR0ZrWlhKU1pXTnZjbVJDZFdabVpYSk9WZ0JUYUdGa1pYSkpiblp2WTJGMGFXOXVVbVZ2Y21SbGNrNVdBRWhwZEU5aWFtVmpkRVY0WldOMWRHVlRhR0ZrWlhKT1ZnQkRiMjF3ZFhSbFJHVnlhWFpoZEdsMlpVZHliM1Z3VEdsdVpXRnlUbFlBUW1GeWVVTnZiM0prVG05UVpYSnpjRTVXQUVocGRFOWlhbVZqZEZSeVlXTmxVbUY1VFc5MGFXOXVUbFlBU0dsMFQySnFaV04wVW1WamIzSmtTR2wwVjJsMGFFbHVaR1Y0VFc5MGFXOXVUbFlBU0dsMFQySnFaV04wVW1WamIzSmtTR2wwVFc5MGFXOXVUbFlBU0dsMFQySnFaV04wVW1WamIzSmtUV2x6YzAxdmRHbHZiazVXQUZSeVlXTmxUVzkwYVc5dVRsWUFSM0p2ZFhCT2IyNVZibWxtYjNKdFVHRnlkR2wwYVc5dVRsWUFVMlZqYjI1a1lYSjVVRzl6YVhScGIyNU9WZ0JTWlhCdmNuUkpiblJsY25ObFkzUnBiMjVPVmdCSloyNXZjbVZKYm5SbGNuTmxZM1JwYjI1T1ZnQklhWFJQWW1wbFkzUkhaWFJQWW1wbFkzUlNZWGxFYVhKbFkzUnBiMjVPVmdCSWFYUlBZbXBsWTNSSFpYUlhiM0pzWkZKaGVVUnBjbVZqZEdsdmJrNVdBRkpoZVVkbGJtVnlZWFJwYjI1T1ZnQlNZWGxVYldsdVRsWUFTR2wwVDJKcVpXTjBSMlYwVDJKcVpXTjBVbUY1VDNKcFoybHVUbFlBU0dsMFQySnFaV04wUjJWMFYyOXliR1JTWVhsUGNtbG5hVzVPVmdCSWFYUlBZbXBsWTNSSFpYUlNZWGxVVFdsdVRsWUFVR0Z5ZEdsMGFXOXVaV1JGZUdOc2RYTnBkbVZUWTJGdVRsWUFVR0Z5ZEdsMGFXOXVaV1JKYm1Oc2RYTnBkbVZUWTJGdVRsWUFTVzUyYjJOaGRHbHZibk5RWlhKUWFYaGxiRTVXQUZCbGNsUmhjMnRPVmdCUGNFTnZiblJ5YjJ4Q1lYSnlhV1Z5SUhKbGNYVnBjbVZ6SUc5dVpTQnZaaUIwYUdVZ1ptOXNiRzkzYVc1bklFVjRaV04xZEdsdmJpQk5iMlJsYkhNNklGUmxjM05sYkd4aGRHbHZia052Ym5SeWIyd3NJRWRNUTI5dGNIVjBaU3dnUzJWeWJtVnNMQ0JOWlhOb1RsWWdiM0lnVkdGemEwNVdBRk5sWTI5dVpHRnllVlpwWlhkd2IzSjBUV0Z6YTA1V0FGTm9ZV1JsY2xacFpYZHdiM0owVFdGemEwNVdBRU52YjNCbGNtRjBhWFpsVFdGMGNtbDRUR1Z1WjNSb1RsWUFUV1Z6YUU1V0FFZGxiMjFsZEhKNVUyaGhaR1Z5VUdGemMzUm9jbTkxWjJoT1ZnQk5aWE5vVTJoaFpHbHVaMDVXQUZKaGVWUnlZV05wYm1kT1ZnQkdjbUZuYldWdWRGTnBlbVZPVmdCTVlYVnVZMmhUYVhwbFRsWUFVR1Z5VUhKcGJXbDBhWFpsVGxZQVUyVmpiMjVrWVhKNVZtbGxkM0J2Y25SU1pXeGhkR2wyWlU1V0FFaHBkRUYwZEhKcFluVjBaVTVXQUVocGRDQlBZbXBsWTNRZ1FYUjBjbWxpZFhSbGN5QnBaQ0J0ZFhOMElHSmxJR0VnVDNCV1lYSnBZV0pzWlNCdlppQnpkRzl5WVdkbElHTnNZWE56SUVocGRFOWlhbVZqZEVGMGRISnBZblYwWlU1V0FDd2dhVzVwZEdsaGJHbDZaWElnWVhKbElHNXZkQ0JoYkd4dmQyVmtJR1p2Y2lCSWFYUlBZbXBsWTNSQmRIUnlhV0oxZEdWT1ZnQlRhR0ZrYVc1blVtRjBaVTVXQUVKcGJtUnNaWE56VkdWNGRIVnlaVTVXQUdGalkyVnNaWEpoZEdsdmJsTjBjblZqZEhWeVpVNVdBRlI1Y0dWQlkyTmxiR1Z5WVhScGIyNVRkSEoxWTNSMWNtVk9WZ0J6Y0hZNk9rOXdPanBQY0VOdmIzQmxjbUYwYVhabFRXRjBjbWw0VTNSdmNtVk9WZ0JEZFhKeVpXNTBVbUY1VkdsdFpVNVdBRWhwZEU5aWFtVmpkRWRsZEVOMWNuSmxiblJVYVcxbFRsWUFTR2wwVDJKcVpXTjBSMlYwVTJoaFpHVnlVbVZqYjNKa1FuVm1abVZ5U0dGdVpHeGxUbFlBUlhobFkzVjBaVU5oYkd4aFlteGxUbFlBVTJGdGNHeGxUV0Z6YTA5MlpYSnlhV1JsUTI5MlpYSmhaMlZPVmdCQ2FXNWtiR1Z6YzBsdFlXZGxUbFlBUTI5dWRtVnlkRlZVYjBsdFlXZGxUbFlBUW05MWJtUkpiV0ZuWlU1V0FFTnZiblpsY25SVlZHOVRZVzF3YkdWa1NXMWhaMlZPVmdCVFlXMXdiR1Z5U1cxaFoyVkJaR1J5WlhOemFXNW5UVzlrWlU1V0FGQmhjblJwZEdsdmJtVmtVbVZrZFdObFRsWUFWSEpoWTJWT1ZnQkNZWEo1UTI5dmNtUk9WZ0JJYVhSUFltcGxZM1JIWlhSSWFYUkxhVzVrVGxZQVNHbDBUMkpxWldOMFIyVjBUMkpxWldOMFZHOVhiM0pzWkU1V0FFZHliM1Z3VG05dVZXNXBabTl5YlZCaGNuUnBkR2x2Ym1Wa1RsWUFRMjl2Y0dWeVlYUnBkbVZOWVhSeWFYaE5kV3hCWkdST1ZnQkpibU52YldsdVoxSmhlVkJoZVd4dllXUk9WZ0J6Y0hZNk9rOXdPanBQY0VOdmIzQmxjbUYwYVhabFRXRjBjbWw0VEc5aFpFNVdBRXhoZFc1amFFbGtUbFlBU0dsMFQySnFaV04wUjJWMFNXNXpkR0Z1WTJWSlpFNVdBRVp5WVdkdFpXNTBRbUZ5ZVdObGJuUnlhV05PVmdCSmJtTnZiV2x1WjBOaGJHeGhZbXhsUkdGMFlVNVdBRU52Ym5abGNuUlRZVzF3YkdWeVZHOVZUbFlBUTI5dWRtVnlkRWx0WVdkbFZHOVZUbFlBUTI5dWRtVnlkRk5oYlhCc1pXUkpiV0ZuWlZSdlZVNVdBRWhwZEZST1ZnQlNUa1JmUTA5T1ZnQlhZWEp3YzFCbGNsTk5UbFlBVjJGeWNFbEVUbFlBVTAxSlJFNVdBRmR5YVhSbFVHRmphMlZrVUhKcGJXbDBhWFpsU1c1a2FXTmxjelI0T0U1V0FFTnZiblpsY25SUWRISlViMVVBVTJGMFEyOXVkbVZ5ZEZOVWIxVUFRMjl1ZG1WeWRFWlViMVVBUm5KaFoyMWxiblJFWlc1emFYUjVSVmhVQUZKMWJuUnBiV1ZFWlhOamNtbHdkRzl5UVhKeVlYbEZXRlFBUVhSdmJXbGpSbXh2WVhReE5rMXBiazFoZUVWWVZBQkJkRzl0YVdOR2JHOWhkRFkwVFdsdVRXRjRSVmhVQUVGMGIyMXBZMFpzYjJGME16Sk5hVzVOWVhoRldGUUFRWFJ2YldsalJrMWhlRVZZVkFCVGRHVnVZMmxzUlhod2IzSjBSVmhVQUVaeVlXZEpiblp2WTJGMGFXOXVRMjkxYm5SRldGUUFVMlYwVFdWemFFOTFkSEIxZEhORldGUUFSVzFwZEUxbGMyaFVZWE5yYzBWWVZBQlBkWFJ3ZFhSUWNtbHRhWFJwZG1WelJWaFVBRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2tGa1pISmxjM05sYzBWWVZBQlBkWFJ3ZFhSTWFXNWxjMFZZVkFCUGRYUndkWFJVY21saGJtZHNaWE5GV0ZRQVVISnBiV2wwYVhabFVHOXBiblJKYm1ScFkyVnpSVmhVQUZCeWFXMXBkR2wyWlV4cGJtVkpibVJwWTJWelJWaFVBRkJ5YVcxcGRHbDJaVlJ5YVdGdVoyeGxTVzVrYVdObGMwVllWQUJUYUdGa1pYSldhV1YzY0c5eWRFbHVaR1Y0VEdGNVpYSkZXRlFBVW1WemRISnBZM1JRYjJsdWRHVnlSVmhVQUVGc2FXRnpaV1JRYjJsdWRHVnlSVmhVQUZCb2VYTnBZMkZzVTNSdmNtRm5aVUoxWm1abGNrVllWQUFzSUdsdWFYUnBZV3hwZW1WeUlHRnlaU0J1YjNRZ1lXeHNiM2RsWkNCbWIzSWdWR0Z6YTFCaGVXeHZZV1JYYjNKclozSnZkWEJGV0ZRQVVHRjViRzloWkNCUGNGWmhjbWxoWW14bElHMTFjM1FnYUdGMlpTQmhJSE4wYjNKaFoyVWdZMnhoYzNNZ2IyWWdWR0Z6YTFCaGVXeHZZV1JYYjNKclozSnZkWEJGV0ZRQVVtRjVWSEpoWTJsdVowOXdZV05wZEhsTmFXTnliMjFoY0VWWVZBQkpjMGhsYkhCbGNrbHVkbTlqWVhScGIyNUZXRlFBUkdWdGIzUmxWRzlJWld4d1pYSkpiblp2WTJGMGFXOXVSVmhVQUVGMGIyMXBZMFpOYVc1RldGUUFVMmhoWkdWeVRtOXVWVzVwWm05eWJVVllWQUJVWVhOclJWaFVBRUpsWjJsdVNXNTJiMk5oZEdsdmJrbHVkR1Z5Ykc5amEwVllWQUJGYm1SSmJuWnZZMkYwYVc5dVNXNTBaWEpzYjJOclJWaFVBRVp5WVdkdFpXNTBVMmhoWkdWeVVHbDRaV3hKYm5SbGNteHZZMnRGV0ZRQVJuSmhaMjFsYm5SVGFHRmtaWEpUYUdGa2FXNW5VbUYwWlVsdWRHVnliRzlqYTBWWVZBQkdjbUZuYldWdWRGTm9ZV1JsY2xOaGJYQnNaVWx1ZEdWeWJHOWphMFZZVkFCTlpYTm9SVmhVQUVsdWNIVjBRWFIwWVdOb2JXVnVkRUZ5Y21GNVRtOXVWVzVwWm05eWJVbHVaR1Y0YVc1blJWaFVBRlZ1YVdadmNtMUNkV1ptWlhKQmNuSmhlVTV2YmxWdWFXWnZjbTFKYm1SbGVHbHVaMFZZVkFCVmJtbG1iM0p0VkdWNFpXeENkV1ptWlhKQmNuSmhlVTV2YmxWdWFXWnZjbTFKYm1SbGVHbHVaMFZZVkFCVGRHOXlZV2RsVkdWNFpXeENkV1ptWlhKQmNuSmhlVTV2YmxWdWFXWnZjbTFKYm1SbGVHbHVaMFZZVkFCVGRHOXlZV2RsUW5WbVptVnlRWEp5WVhsT2IyNVZibWxtYjNKdFNXNWtaWGhwYm1kRldGUUFVM1J2Y21GblpVbHRZV2RsUVhKeVlYbE9iMjVWYm1sbWIzSnRTVzVrWlhocGJtZEZXRlFBVTJGdGNHeGxaRWx0WVdkbFFYSnlZWGxPYjI1VmJtbG1iM0p0U1c1a1pYaHBibWRGV0ZRQVNXNXdkWFJCZEhSaFkyaHRaVzUwUVhKeVlYbEVlVzVoYldsalNXNWtaWGhwYm1kRldGUUFWVzVwWm05eWJWUmxlR1ZzUW5WbVptVnlRWEp5WVhsRWVXNWhiV2xqU1c1a1pYaHBibWRGV0ZRQVUzUnZjbUZuWlZSbGVHVnNRblZtWm1WeVFYSnlZWGxFZVc1aGJXbGpTVzVrWlhocGJtZEZXRlFBVFdWemFGTm9ZV1JwYm1kRldGUUFVM1JsYm1OcGJGSmxabEpsY0d4aFkybHVaMFZZVkFCR2NtRm5VM1JsYm1OcGJGSmxaa1ZZVkFCR2NtRm5VMmw2WlVWWVZBQlFaWEpRY21sdGFYUnBkbVZGV0ZRQVEzVnNiRkJ5YVcxcGRHbDJaVVZZVkFCR2IzSmpaVTl3WVdOcGRIbE5hV055YjIxaGNESlRkR0YwWlVWWVZBQkpiblEyTkVsdFlXZGxSVmhVQUVaeVlXZHRaVzUwUm5Wc2JIbERiM1psY21Wa1JWaFVBRkJwZUdWc1NXNTBaWEpzYjJOclZXNXZjbVJsY21Wa1JWaFVBRk5vWVdScGJtZFNZWFJsU1c1MFpYSnNiMk5yVlc1dmNtUmxjbVZrUlZoVUFGTmhiWEJzWlVsdWRHVnliRzlqYTFWdWIzSmtaWEpsWkVWWVZBQlFhWGhsYkVsdWRHVnliRzlqYTA5eVpHVnlaV1JGV0ZRQVUyaGhaR2x1WjFKaGRHVkpiblJsY214dlkydFBjbVJsY21Wa1JWaFVBRk5oYlhCc1pVbHVkR1Z5Ykc5amEwOXlaR1Z5WldSRldGUUFRWFJ2YldsalJrRmtaRVZZVkFCQmRHOXRhV05HYkc5aGRERTJRV1JrUlZoVUFFRjBiMjFwWTBac2IyRjBOalJCWkdSRldGUUFRWFJ2YldsalJteHZZWFF6TWtGa1pFVllWQUJRYUhsemFXTmhiRk4wYjNKaFoyVkNkV1ptWlhJMk5FVllWQUJCVEZRQVUwRlVBRk5oZEVOdmJuWmxjblJWVkc5VEFFTnZiblpsY25SR1ZHOVRBSElnUFQwZ1UxQldYMU5WUTBORlUxTUFKVWc2SlUwNkpWTUFUM1YwY0hWMFRXVnRiM0o1UzBoU0FISmhlVkYxWlhKNVMwaFNBRkpoZVNCUmRXVnllU0J0ZFhOMElHSmxJR0VnY0c5cGJuUmxjaUIwYnlCUGNGUjVjR1ZTWVhsUmRXVnllVXRJVWdCVGRXSm5jbTkxY0VGdWVVdElVZ0JSZFdWMVpVWmhiV2xzZVV0SVVnQlVaWEp0YVc1aGRHVlNZWGxMU0ZJQVZISmhZMlZTWVhsTFNGSUFVR1Z5Vm1WeWRHVjRTMGhTQUZKaGVVZGxiMjFsZEhKNVNXNWtaWGhMU0ZJQVVtRjVVWFZsY25sSFpYUkpiblJsY25ObFkzUnBiMjVIWlc5dFpYUnllVWx1WkdWNFMwaFNBRkpoZVZGMVpYSjVSMlYwU1c1MFpYSnpaV04wYVc5dVNXNXpkR0Z1WTJWRGRYTjBiMjFKYm1SbGVFdElVZ0JTWVhsUmRXVnllVWRsZEVsdWRHVnljMlZqZEdsdmJsQnlhVzFwZEdsMlpVbHVaR1Y0UzBoU0FGSmhlVlJ0WVhoTFNGSUFVM1ZpWjNKdmRYQlZibWxtYjNKdFEyOXVkSEp2YkVac2IzZExTRklBVjI5eWEyZHliM1Z3VFdWdGIzSjVSWGh3YkdsamFYUk1ZWGx2ZFhSTFNGSUFVM1ZpWjNKdmRYQkNZV3hzYjNSTFNGSUFVMVZFYjNSTFNGSUFVMFJ2ZEV0SVVnQkJibmxJYVhSTFNGSUFWR1Z5YldsdVlYUmxUMjVHYVhKemRFaHBkRXRJVWdCSWFYUkJkSFJ5YVdKMWRHVkxTRklnVTNSdmNtRm5aU0JEYkdGemN5QjJZWEpwWVdKc1pYTWdZWEpsSUhKbFlXUWdiMjVzZVNCM2FYUm9JRUZ1ZVVocGRFdElVaUJoYm1RZ1EyeHZjMlZ6ZEVocGRFdElVZ0JFYjNSUWNtOWtkV04wU1c1d2RYUTBlRGhDYVhSTFNGSUFVR0ZqYTJWa1ZtVmpkRzl5Um05eWJXRjBOSGc0UW1sMFMwaFNBRkpoZVZGMVpYSjVSMlYwU1c1MFpYSnpaV04wYVc5dVNXNXpkR0Z1WTJWVGFHRmtaWEpDYVc1a2FXNW5WR0ZpYkdWU1pXTnZjbVJQWm1aelpYUkxTRklBUkc5MFVISnZaSFZqZEV0SVVnQkZlSEJsWTNSTFNGSUFVbUY1VVhWbGNubEhaWFJKYm5SbGNuTmxZM1JwYjI1WGIzSnNaRlJ2VDJKcVpXTjBTMGhTQUZOVlJHOTBRV05qVTJGMFMwaFNBRk5FYjNSQlkyTlRZWFJMU0ZJQVRXbHpjMHRJVWdCWGIzSnJaM0p2ZFhCTlpXMXZjbmxGZUhCc2FXTnBkRXhoZVc5MWREaENhWFJCWTJObGMzTkxTRklBVjI5eWEyZHliM1Z3VFdWdGIzSjVSWGh3YkdsamFYUk1ZWGx2ZFhReE5rSnBkRUZqWTJWemMwdElVZ0JTWVhsUmRXVnllVWRsZEZKaGVVWnNZV2R6UzBoU0FFbHVZMjl0YVc1blVtRjVSbXhoWjNOTFNGSUFVMnRwY0ZSeWFXRnVaMnhsYzB0SVVnQkRkV3hzUm5KdmJuUkdZV05wYm1kVWNtbGhibWRzWlhOTFNGSUFRM1ZzYkVKaFkydEdZV05wYm1kVWNtbGhibWRzWlhOTFNGSUFVbUY1VVhWbGNubEhaWFJKYm5SbGNuTmxZM1JwYjI1Q1lYSjVZMlZ1ZEhKcFkzTkxTRklBVTJ0cGNFRkJRa0p6UzBoU0FFZHliM1Z3VEc5bmFXTmhiRmh2Y2t0SVVnQkhjbTkxY0VKcGRIZHBjMlZZYjNKTFNGSUFUbTl1VUhKcGRtRjBaVkJ2YVc1MFpYSkxTRklBVTJoaFpHVnlVbVZqYjNKa1FuVm1abVZ5UzBoU0FGTnJhWEJEYkc5elpYTjBTR2wwVTJoaFpHVnlTMGhTQUVkeWIzVndURzluYVdOaGJFOXlTMGhTQUVkeWIzVndRbWwwZDJselpVOXlTMGhTQUVKaGNubERiMjl5WkU1dlVHVnljM0JMU0ZJQVVtVndiM0owU1c1MFpYSnpaV04wYVc5dVMwaFNBRkpoZVZGMVpYSjVRMjl1Wm1seWJVbHVkR1Z5YzJWamRHbHZia3RJVWdCU1lYbFJkV1Z5ZVVkbGJtVnlZWFJsU1c1MFpYSnpaV04wYVc5dVMwaFNBRkpoZVZGMVpYSjVRMkZ1Wkdsa1lYUmxTVzUwWlhKelpXTjBhVzl1UzBoU0FFbG5ibTl5WlVsdWRHVnljMlZqZEdsdmJrdElVZ0JTWVhsUmRXVnllVU52YlcxcGRIUmxaRWx1ZEdWeWMyVmpkR2x2Ymt0SVVnQlNZWGxSZFdWeWVVZGxkRWx1ZEdWeWMyVmpkR2x2Yms5aWFtVmpkRkpoZVVScGNtVmpkR2x2Ymt0SVVnQlNZWGxSZFdWeWVVZGxkRmR2Y214a1VtRjVSR2x5WldOMGFXOXVTMGhTQUZKaGVVZGxibVZ5WVhScGIyNUxTRklBVTNWaVozSnZkWEJHYVhKemRFbHVkbTlqWVhScGIyNUxTRklBVTNWaVozSnZkWEJTWldGa1NXNTJiMk5oZEdsdmJrdElVZ0JTWVhsVWJXbHVTMGhTQUZKaGVWRjFaWEo1UjJWMFNXNTBaWEp6WldOMGFXOXVUMkpxWldOMFVtRjVUM0pwWjJsdVMwaFNBRkpoZVZGMVpYSjVSMlYwVjI5eWJHUlNZWGxQY21sbmFXNUxTRklBVW1GNVVYVmxjbmxIWlhSU1lYbFVUV2x1UzBoU0FGWjFiR3RoYmt0SVVnQkhjbTkxY0VsTmRXeExTRklBUjNKdmRYQkdUWFZzUzBoU0FGTm9ZV1JsY2tOaGJHeExTRklBUkc5MFVISnZaSFZqZEVsdWNIVjBRV3hzUzBoU0FGTjFZbWR5YjNWd1FXeHNTMGhTQUU1dmJsQnlhWFpoZEdWVVpYaGxiRXRJVWdCV2IyeGhkR2xzWlZSbGVHVnNTMGhTQURvZ1RXVnRiM0o1SUZObGJXRnVkR2xqY3lCV2IyeGhkR2xzWlNCeVpYRjFhWEpsY3lCallYQmhZbWxzYVhSNUlGWjFiR3RoYmsxbGJXOXllVTF2WkdWc1MwaFNBRk4xWW1keWIzVndRV3hzUlhGMVlXeExTRklBVW1GNVVYVmxjbmxRY205MmFYTnBiMjVoYkV0SVVnQlNZWGxVY21GamFXNW5VSEp2ZG1semFXOXVZV3hMU0ZJQVUzVmlaM0p2ZFhCTWRFMWhjMnRMU0ZJQVUzVmlaM0p2ZFhCSGRFMWhjMnRMU0ZJQVUzVmlaM0p2ZFhCRmNVMWhjMnRMU0ZJQVVtRjVRM1ZzYkUxaGMydExTRklBVTNWaVozSnZkWEJNWlUxaGMydExTRklBVTNWaVozSnZkWEJIWlUxaGMydExTRklBVTJoaFpHVnlRMnh2WTJ0TFNGSUFVbVZoWkVOc2IyTnJTMGhTQUZKaGVWUnlZWFpsY25OaGJGQnlhVzFwZEdsMlpVTjFiR3hwYm1kTFNGSUFVbUY1VkhKaFkybHVaMHRJVWdCU1lYbFJkV1Z5ZVVsdWFYUnBZV3hwZW1WTFNGSUFUR0YxYm1Ob1UybDZaVXRJVWdCQmMzTjFiV1ZVY25WbFMwaFNBRU4xYkd4T2IwOXdZWEYxWlV0SVVnQkRkV3hzVDNCaGNYVmxTMGhTQUZKaGVWRjFaWEo1UjJWMFNXNTBaWEp6WldOMGFXOXVRMkZ1Wkdsa1lYUmxRVUZDUWs5d1lYRjFaVXRJVWdCSWFYUkJkSFJ5YVdKMWRHVkxTRklBVTNWaVozSnZkWEJXYjNSbFMwaFNBRWR5YjNWd1RtOXVWVzVwWm05eWJWSnZkR0YwWlV0SVVnQlNZWGxSZFdWeWVWUmxjbTFwYm1GMFpVdElVZ0JHY21GbmJXVnVkRk5vWVdScGJtZFNZWFJsUzBoU0FGQnlhVzFwZEdsMlpWTm9ZV1JwYm1kU1lYUmxTMGhTQUVOdmJuWmxjblJWVkc5QlkyTmxiR1Z5WVhScGIyNVRkSEoxWTNSMWNtVkxTRklBUlhod1pXTjBaV1FnUVdOalpXeGxjbUYwYVc5dUlGTjBjblZqZEhWeVpTQjBieUJpWlNCdlppQjBlWEJsSUU5d1ZIbHdaVUZqWTJWc1pYSmhkR2x2YmxOMGNuVmpkSFZ5WlV0SVVnQlNZWGxSZFdWeWVVZGxkRWx1ZEdWeWMyVmpkR2x2YmxSNWNHVkxTRklBVm5Wc2EyRnVUV1Z0YjNKNVRXOWtaV3hFWlhacFkyVlRZMjl3WlV0SVVnQlNZWGxSZFdWeWVVTnZiVzFwZEhSbFpFbHVkR1Z5YzJWamRHbHZiazV2Ym1WTFNGSUFSWGh3WldOMFFYTnpkVzFsUzBoU0FGSmhlVkYxWlhKNVEyRnVaR2xrWVhSbFNXNTBaWEp6WldOMGFXOXVWSEpwWVc1bmJHVkxTRklBVW1GNVVYVmxjbmxEYjIxdGFYUjBaV1JKYm5SbGNuTmxZM1JwYjI1VWNtbGhibWRzWlV0SVVnQlVZWEpuWlhRZ2JXVnRiM0o1SUdGalkyVnpjeUJ0ZFhOMElHNXZkQ0JwYm1Oc2RXUmxJRTFoYTJWUWIybHVkR1Z5Vm1semFXSnNaVXRJVWdCTllXdGxWR1Y0Wld4V2FYTnBZbXhsUzBoU0FFMWhhMlZXYVhOcFlteGxTMGhTQUVWNFpXTjFkR1ZEWVd4c1lXSnNaVXRJVWdCVGIzVnlZMlVnYldWdGIzSjVJR0ZqWTJWemN5QnRkWE4wSUc1dmRDQnBibU5zZFdSbElFMWhhMlZRYjJsdWRHVnlRWFpoYVd4aFlteGxTMGhTQUUxaGEyVlVaWGhsYkVGMllXbHNZV0pzWlV0SVVnQk5ZV3RsUVhaaGFXeGhZbXhsUzBoU0FGSmhlVkYxWlhKNVIyVjBTVzUwWlhKelpXTjBhVzl1Um5KdmJuUkdZV05sUzBoU0FFSmhjbmxEYjI5eVpFdElVZ0JJYVhSTGFXNWtTMGhTQUVkeWIzVndURzluYVdOaGJFRnVaRXRJVWdCSGNtOTFjRUpwZEhkcGMyVkJibVJMU0ZJQVVtRjVVWFZsY25sSFpYUkpiblJsY25ObFkzUnBiMjVQWW1wbFkzUlViMWR2Y214a1MwaFNBRkpoZVZGMVpYSjVRMjl0YldsMGRHVmtTVzUwWlhKelpXTjBhVzl1UjJWdVpYSmhkR1ZrUzBoU0FFUnZkRkJ5YjJSMVkzUkpibkIxZERSNE9FSnBkRkJoWTJ0bFpFdElVZ0JTWVhsUmRXVnllVkJ5YjJObFpXUkxTRklBY0dGNWJHOWhaQ0J0ZFhOMElHSmxJR0VnVDNCV1lYSnBZV0pzWlNCdlppQnpkRzl5WVdkbElHTnNZWE56SUZKaGVWQmhlV3h2WVdSTFNGSWdiM0lnU1c1amIyMXBibWRTWVhsUVlYbHNiMkZrUzBoU0FGQmhlV3h2WVdRZ2JYVnpkQ0JvWVhabElITjBiM0poWjJVZ1kyeGhjM01nVW1GNVVHRjViRzloWkV0SVVpQnZjaUJKYm1OdmJXbHVaMUpoZVZCaGVXeHZZV1JMU0ZJQVNHbDBJRTlpYW1WamRDQkJkSFJ5YVdKMWRHVnpJR2xrSUcxMWMzUWdZbVVnWVNCUGNGWmhjbWxoWW14bElHOW1JSE4wYjNKaFoyVWdZMnhoYzNNZ1VtRjVVR0Y1Ykc5aFpFdElVZ0JNWVhWdVkyaEpaRXRJVWdCU1lYbFJkV1Z5ZVVkbGRFbHVkR1Z5YzJWamRHbHZia2x1YzNSaGJtTmxTV1JMU0ZJQVIzSnZkWEJWYm1sbWIzSnRRWEpwZEdodFpYUnBZMHRJVWdCR2NtRm5iV1Z1ZEVKaGNubGpaVzUwY21salMwaFNBRU5oYkd4aFlteGxJRVJoZEdFZ2JYVnpkQ0JvWVhabElITjBiM0poWjJVZ1kyeGhjM01nUTJGc2JHRmliR1ZFWVhSaFMwaFNJRzl5SUVsdVkyOXRhVzVuUTJGc2JHRmliR1ZFWVhSaFMwaFNBRWxtSUU5d1ZIbHdaVUp2YjJ3Z2FYTWdjM1J2Y21Wa0lHbHVJR052Ym1wMWJtTjBhVzl1SUhkcGRHZ2dUM0JXWVhKcFlXSnNaU3dnYVhRZ1kyRnVJRzl1YkhrZ1ltVWdkWE5sWkNCM2FYUm9JRzV2YmkxbGVIUmxjbTVoYkd4NUlIWnBjMmxpYkdVZ2MyaGhaR1Z5SUZOMGIzSmhaMlVnUTJ4aGMzTmxjem9nVjI5eWEyZHliM1Z3TENCRGNtOXpjMWR2Y210bmNtOTFjQ3dnVUhKcGRtRjBaU3dnUm5WdVkzUnBiMjRzSUVsdWNIVjBMQ0JQZFhSd2RYUXNJRkpoZVZCaGVXeHZZV1JMU0ZJc0lFbHVZMjl0YVc1blVtRjVVR0Y1Ykc5aFpFdElVaXdnU0dsMFFYUjBjbWxpZFhSbFMwaFNMQ0JEWVd4c1lXSnNaVVJoZEdGTFNGSXNJRzl5SUVsdVkyOXRhVzVuUTJGc2JHRmliR1ZFWVhSaFMwaFNBRkpoZVZGMVpYSjVSMlYwU1c1MFpYSnpaV04wYVc5dVZFdElVZ0JTWVhsUmRXVnllVU5oYm1ScFpHRjBaVWx1ZEdWeWMyVmpkR2x2YmtGQlFrSkxTRklBUVVKSFVnQjBlWEJsSUQwOUlGTlFWbDlQVUVWU1FVNUVYMVJaVUVWZlRFbFVSVkpCVEY5SlRsUkZSMFZTSUh4OElIUjVjR1VnUFQwZ1UxQldYMDlRUlZKQlRrUmZWRmxRUlY5VVdWQkZSRjlNU1ZSRlVrRk1YMDVWVFVKRlVpQjhmQ0IwZVhCbElEMDlJRk5RVmw5UFVFVlNRVTVFWDFSWlVFVmZUMUJVU1U5T1FVeGZURWxVUlZKQlRGOUpUbFJGUjBWU0lIeDhJSFI1Y0dVZ1BUMGdVMUJXWDA5UVJWSkJUa1JmVkZsUVJWOVBVRlJKVDA1QlRGOVVXVkJGUkY5TVNWUkZVa0ZNWDBsT1ZFVkhSVklBVEdsdWEwOXVZMlZQUkZJQVVsUlFBRTl3Wlc1RFRGOURVRkFBVjFKQlVBQlRRVlJmV2tWU1R3QlVVazVmV2tWU1R3QlNUa1JmV2tWU1R3QnVaWE4wWldRZ2MzUnlkV04wZFhKbGN5QmpZVzV1YjNRZ1ltVWdkWE5sWkNCbWIzSWdaVzUwY25rZ2NHOXBiblFnU1U4QVUyRnRjR3hsSUdsdWRHVnljRzlzWVhScGIyNGdjMkZ0Y0d4cGJtY2dhWE1nYVc1MllXeHBaQ0J2YmlCcGJuUmxaM0poYkNCSlR3QkRaVzUwY205cFpDQnBiblJsY25CdmJHRjBhVzl1SUhOaGJYQnNhVzVuSUdseklHbHVkbUZzYVdRZ2IyNGdhVzUwWldkeVlXd2dTVThBVG05UVpYSnpjR1ZqZEdsMlpTQnBjeUJwYm5aaGJHbGtJRzl1SUdsdWRHVm5jbUZzSUVsUEFISjFiblJwYldVdGMybDZaU0JoY25KaGVTQnViM1FnWVd4c2IzZGxaQ0J2YmlCd2FYQmxiR2x1WlNCSlR3Qk9iM1JPWVU0QVVsUk9BRlJTVGdCT1FVNEFVMEZVWDFOWlRRQlViM0p1WVdSdlZrMEFRMjl5WlVOdmRXNTBRVkpOQUVOdmNtVkNkV2xzZEdsdWMwRlNUUUJYWVhKd1RXRjRTVVJCVWswQVEyOXlaVTFoZUVsRVFWSk5BRmRoY25CSlJFRlNUUUJEYjNKbFNVUkJVazBBVUUwQVFVMEFSMjl2WjJ4bElGTnJhV0VnVTJ0VFRBQkZVMU5NQUVoTVUwd0FSMHhUVEFCR1lXeHNkR2h5YjNWbmFDQnViM1FnY0dWeWJXbDBkR1ZrSUdsdUlGZEhVMHdBUm1Gc2JIUm9jbTkxWjJnZ2JtOTBJSE4xY0hCdmNuUmxaQ0JwYmlCWFIxTk1BRXhEWDBGTVRBQlBjR1Z1UjB3QVUyTm9aV1IxYkdWeVZHRnlaMlYwUm0xaGVFMW9la2xPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sUjJWMFJHVm1ZWFZzZEVsdWRHVnlSR2x5WldOMGFXOXVVR1Z1WVd4MGVVbE9WRVZNQUZOMVltZHliM1Z3UVhaalRXTmxVMlYwU1c1MFpYSkVhWEpsWTNScGIyNVFaVzVoYkhSNVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVkhaWFJFWldaaGRXeDBTVzUwY21GRGFISnZiV0ZOYjJSbFFtRnpaVkJsYm1Gc2RIbEpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVWRsZEVSbFptRjFiSFJKYm5SbGNsTm9ZWEJsVUdWdVlXeDBlVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sVTJWMFNXNTBaWEpUYUdGd1pWQmxibUZzZEhsSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTAxalpVZGxkRVJsWm1GMWJIUkpiblJ5WVV4MWJXRlRhR0Z3WlZCbGJtRnNkSGxKVGxSRlRBQlRkV0puY205MWNFRjJZMU5wWTFObGRFbHVkSEpoVEhWdFlWTm9ZWEJsVUdWdVlXeDBlVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sUjJWMFJHVm1ZWFZzZEVsdWRISmhUSFZ0WVUxdlpHVlFaVzVoYkhSNVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVkhaWFJFWldaaGRXeDBTVzUwWlhKQ1lYTmxUWFZzZEdsU1pXWmxjbVZ1WTJWUVpXNWhiSFI1U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5OWTJWVFpYUkpiblJsY2tKaGMyVk5kV3gwYVZKbFptVnlaVzVqWlZCbGJtRnNkSGxKVGxSRlRBQlRkV0puY205MWNFRjJZMDFqWlVkbGRFUmxabUYxYkhST2IyNUVZMHgxYldGSmJuUnlZVkJsYm1Gc2RIbEpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVk5sZEZOdmRYSmpaVWx1ZEdWeWJHRmpaV1JHYVdWc1pGQnZiR0Z5YVhSNVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVlRaWFJUYVc1bmJHVlNaV1psY21WdVkyVkpiblJsY214aFkyVmtSbWxsYkdSUWIyeGhjbWwwZVVsT1ZFVk1BRkp2ZFc1a1ZHOUpibVpwYm1sMGVVbE9WRVZNQUZOaGRtVk5aVzF2Y25sSlRsUkZUQUJTWlhOMGIzSmxUV1Z0YjNKNVNVNVVSVXdBVm1WamRHOXlRVzU1U1U1VVJVd0FVbVZtWlhKbGJtTmxaRWx1WkdseVpXTjBiSGxKVGxSRlRBQkliM04wVDI1c2VVbE9WRVZNQUVSbGRtbGpaVTl1YkhsSlRsUkZUQUJOVFVodmMzUkpiblJsY21aaFkyVk1ZWFJsYm1ONVNVNVVSVXdBVFdGNFEyOXVZM1Z5Y21WdVkzbEpUbFJGVEFCRVpYQmxibVJsYm1ONVFYSnlZWGxKVGxSRlRBQldZWEpwWVdKc1pVeGxibWQwYUVGeWNtRjVTVTVVUlV3QVRXRjRVbVZwYm5adlkyRjBhVzl1UkdWc1lYbEpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRkJ2ZDBsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFJHbDJTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTkpiV1ZGZG1Gc2RXRjBaVmRwZEdoRWRXRnNVbVZtWlhKbGJtTmxVM1J5WldGdGFXNXZkWFJKVGxSRlRBQlRkV0puY205MWNFRjJZMGx0WlVWMllXeDFZWFJsVjJsMGFGTnBibWRzWlZKbFptVnlaVzVqWlZOMGNtVmhiV2x1YjNWMFNVNVVSVXdBVkhsd1pVRjJZMGx0WlZKbGMzVnNkRVIxWVd4U1pXWmxjbVZ1WTJWVGRISmxZVzF2ZFhSSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpWTjBjbWx3UkhWaGJGSmxabVZ5Wlc1alpWTjBjbVZoYlc5MWRFbE9WRVZNQUZOMVltZHliM1Z3UVhaalNXMWxSWFpoYkhWaGRHVlhhWFJvUkhWaGJGSmxabVZ5Wlc1alpWTjBjbVZoYlc5MWRFbE9WRVZNQUZSNWNHVkJkbU5KYldWU1pYTjFiSFJUYVc1bmJHVlNaV1psY21WdVkyVlRkSEpsWVcxdmRYUkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwbHRaVk4wY21sd1UybHVaMnhsVW1WbVpYSmxibU5sVTNSeVpXRnRiM1YwU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5KYldWRmRtRnNkV0YwWlZkcGRHaFRhVzVuYkdWU1pXWmxjbVZ1WTJWVGRISmxZVzF2ZFhSSlRsUkZUQUJOVFVodmMzUkpiblJsY21aaFkyVk5ZWGhDZFhKemRFbE9WRVZNQUUxTlNHOXpkRWx1ZEdWeVptRmpaVmRoYVhSU1pYRjFaWE4wU1U1VVJVd0FRV3hzYjNkRGIyNTBjbUZqZEVaaGMzUkpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRU5oYzNSSlRsUkZUQUJHYVhobFpGSnpjWEowU1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSVGNYSjBTVTVVUlV3QVJtbDRaV1JUY1hKMFNVNVVSVXdBUVhKaWFYUnlZWEo1Um14dllYUlNVM0Z5ZEVsT1ZFVk1BRk5wYlhCc1pVUjFZV3hRYjNKMFNVNVVSVXdBUVhKaWFYUnlZWEo1Um14dllYUkRZbkowU1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSSWVYQnZkRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpTVzFsVTJWMFRXRjRUVzkwYVc5dVZtVmpkRzl5UTI5MWJuUkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVWRsZEVsdWRHVnlUVzkwYVc5dVZtVmpkRzl5UTI5MWJuUkpUbFJGVEFCT1lXMWxaRUpoY25KcFpYSkRiM1Z1ZEVsT1ZFVk1BRXh2YjNCRGIzVnVkRWxPVkVWTUFFRnlZbWwwY21GeWVWQnlaV05wYzJsdmJrWnNiMkYwYVc1blVHOXBiblJKVGxSRlRBQkJjbUpwZEhKaGNubFFjbVZqYVhOcGIyNUdhWGhsWkZCdmFXNTBTVTVVUlV3QVEyOXVaSFZwZEV0bGNtNWxiRUZ5WjNWdFpXNTBTVTVVUlV3QVVtVm5hWE4wWlhKTllYQkxaWEp1Wld4QmNtZDFiV1Z1ZEVsT1ZFVk1BRk4wWVdKc1pVdGxjbTVsYkVGeVozVnRaVzUwU1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSRFlYTjBWRzlKYm5SSlRsUkZUQUJCY21KcGRISmhjbmxHYkc5aGRFTmhjM1JHY205dFNXNTBTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZEYjI1MlpYSjBWRzlTWldaU1pYTjFiSFJKVGxSRlRBQlVlWEJsUVhaalVtVm1VbVZ6ZFd4MFNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVkRiMjUyWlhKMFZHOUpiV1ZTWlhOMWJIUkpUbFJGVEFCVWVYQmxRWFpqU1cxbFVtVnpkV3gwU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5TWldaRGIyNTJaWEowVkc5TlkyVlNaWE4xYkhSSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpVTnZiblpsY25SVWIwMWpaVkpsYzNWc2RFbE9WRVZNQUZOMVltZHliM1Z3UVhaalUybGpRMjl1ZG1WeWRGUnZUV05sVW1WemRXeDBTVTVVUlV3QVZIbHdaVUYyWTAxalpWSmxjM1ZzZEVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVFdObFEyOXVkbVZ5ZEZSdlUybGpVbVZ6ZFd4MFNVNVVSVXdBVkhsd1pVRjJZMU5wWTFKbGMzVnNkRWxPVkVWTUFFTnZiblJ5YjJ4Q1lYSnlhV1Z5VjJGcGRFbE9WRVZNQUU1dlIyeHZZbUZzVDJabWMyVjBTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTkpiV1ZCWkdwMWMzUlNaV1pQWm1aelpYUkpUbFJGVEFCSGJHOWlZV3hXWVhKcFlXSnNaVTltWm5ObGRFbE9WRVZNQUVGemJWUmhjbWRsZEVsT1ZFVk1BRlZCWkdSVFlYUkpUbFJGVEFCSlFXUmtVMkYwU1U1VVJVd0FWVk4xWWxOaGRFbE9WRVZNQUVsVGRXSlRZWFJKVGxSRlRBQkNZVzVyUW1sMGMwbE9WRVZNQUZOcFpHVkZabVpsWTNSelNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVkhaWFJOYjNScGIyNVdaV04wYjNKelNVNVVSVXdBVTNWaVozSnZkWEJCZG1OSmJXVkhaWFJUZEhKbFlXMXZkWFJFZFdGc1VtVm1aWEpsYm1ObFRXRnFiM0pUYUdGd1pVMXZkR2x2YmxabFkzUnZjbk5KVGxSRlRBQlRkV0puY205MWNFRjJZMGx0WlVkbGRGTjBjbVZoYlc5MWRGTnBibWRzWlZKbFptVnlaVzVqWlUxaGFtOXlVMmhoY0dWTmIzUnBiMjVXWldOMGIzSnpTVTVVUlV3QVJuVnVZM1JwYjI1UWIybHVkR1Z5YzBsT1ZFVk1BRUZ5WW1sMGNtRnllVkJ5WldOcGMybHZia2x1ZEdWblpYSnpTVTVVUlV3QVZVTnZkVzUwVkhKaGFXeHBibWRhWlhKdmMwbE9WRVZNQUZWRGIzVnVkRXhsWVdScGJtZGFaWEp2YzBsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFEyOXpTVTVVUlV3QVFYSmlhWFJ5WVhKNVJteHZZWFJUYVc1RGIzTkpUbFJGVEFCR2FYaGxaRk5wYmtOdmMwbE9WRVZNQUVacGVHVmtRMjl6U1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSQlEyOXpTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZIWlhSQ1pYTjBTVzUwWlhKRWFYTjBiM0owYVc5dWMwbE9WRVZNQUZOMVltZHliM1Z3UVhaalRXTmxSMlYwU1c1MFpYSkVhWE4wYjNKMGFXOXVjMGxPVkVWTUFGTjFZbWR5YjNWd1FYWmpTVzFsUjJWMFUzUnlaV0Z0YjNWMFJIVmhiRkpsWm1WeVpXNWpaVTFoYW05eVUyaGhjR1ZFYVhOMGIzSjBhVzl1YzBsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFIyVjBVM1J5WldGdGIzVjBVMmx1WjJ4bFVtVm1aWEpsYm1ObFRXRnFiM0pUYUdGd1pVUnBjM1J2Y25ScGIyNXpTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZIWlhSSmJuUmxja1JwY21WamRHbHZibk5KVGxSRlRBQlRjR1ZqZFd4aGRHVmtTWFJsY21GMGFXOXVjMGxPVkVWTUFFNTFiVk5KVFVSWGIzSnJhWFJsYlhOSlRsUkZUQUJWYm5OMGNuVmpkSFZ5WldSTWIyOXdRMjl1ZEhKdmJITkpUbFJGVEFCR1VFZEJURzl2Y0VOdmJuUnliMnh6U1U1VVJVd0FUblZ0WW1GdWEzTkpUbFJGVEFCR1VFZEJUV1Z0YjNKNVFYUjBjbWxpZFhSbGMwbE9WRVZNQUVaUVIwRkRiSFZ6ZEdWeVFYUjBjbWxpZFhSbGMwbE9WRVZNQUVaUVIwRkxaWEp1Wld4QmRIUnlhV0oxZEdWelNVNVVSVXdBUmxCSFFVbHVkbTlqWVhScGIyNVFhWEJsYkdsdWFXNW5RWFIwY21saWRYUmxjMGxPVkVWTUFFMWhlRkpsY0d4cFkyRjBaWE5KVGxSRlRBQkdVRWRCVFdWdGIzSjVRV05qWlhOelpYTkpUbFJGVEFCVlUwMVRkRzl5WVdkbFEyeGhjM05sYzBsT1ZFVk1BRUpzYjJOcmFXNW5VR2x3WlhOSlRsUkZUQUJKVDFCcGNHVnpTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZIWlhSSmJuUmxjbEpsWm1WeVpXNWpaVWx1ZEdWeWJHRmpaV1JHYVdWc1pGQnZiR0Z5YVhScFpYTkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVk5sZEVSMVlXeFNaV1psY21WdVkyVkpiblJsY214aFkyVmtSbWxsYkdSUWIyeGhjbWwwYVdWelNVNVVSVXdBVFdGNFVISnBkbUYwWlVOdmNHbGxjMGxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVMmxqUjJWMFVHRmphMlZrU1hCbFRIVnRZVTF2WkdWelNVNVVSVXdBU1c1a2FYSmxZM1JTWldabGNtVnVZMlZ6U1U1VVJVd0FSbEJIUVVGeVozVnRaVzUwU1c1MFpYSm1ZV05sYzBsT1ZFVk1BRk4xWW1keWIzVndRWFpqVTJsalIyVjBTVzUwWlhKU1lYZFRZV1J6U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5OWTJWSFpYUkpiblJsY2xKbFptVnlaVzVqWlVsa2MwbE9WRVZNQUZOMVltZHliM1Z3UVhaalNXMWxSMlYwVTNSeVpXRnRiM1YwUkhWaGJGSmxabVZ5Wlc1alpVMWhhbTl5VTJoaGNHVlNaV1psY21WdVkyVkpaSE5KVGxSRlRBQlRkV0puY205MWNFRjJZMGx0WlVkbGRGTjBjbVZoYlc5MWRGTnBibWRzWlZKbFptVnlaVzVqWlUxaGFtOXlVMmhoY0dWU1pXWmxjbVZ1WTJWSlpITkpUbFJGVEFCT2IwRnNhV0Z6U1U1VVJVd0FRM0p2YzNOWGIzSnJaM0p2ZFhCRFlYTjBWRzlRZEhKSlRsUkZUQUJUYVc1bmJHVkZiR1Z0Wlc1MFZtVmpkRzl5U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5KYldWSFpYUlhaV2xuYUhScGJtZFFZWFIwWlhKdVRXbHVhVzExYlUxdmRHbHZibFpsWTNSdmNrbE9WRVZNQUZOMVltZHliM1Z3VTJoMVptWnNaVmh2Y2tsT1ZFVk1BRkpsWjJsemRHVnlTVTVVUlV3QVEyOXVjM1JoYm5SR2RXNWpkR2x2YmxCdmFXNTBaWEpKVGxSRlRBQlRjR3hwZEVKaGNuSnBaWEpKVGxSRlRBQkRiRzlpWW1WeVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OTlkyVlRaWFJCWTA5dWJIbElZV0Z5U1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSRmVIQkpUbFJGVEFCR2FYaGxaRVY0Y0VsT1ZFVk1BRkIwY2tOaGMzUlViME55YjNOelYyOXlhMmR5YjNWd1NVNVVSVXdBVTJsdVoyeGxjSFZ0Y0VsT1ZFVk1BRVJ2ZFdKc1pYQjFiWEJKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEZKbFkybHdTVTVVUlV3QVJtbDRaV1JTWldOcGNFbE9WRVZNQUZOMVltZHliM1Z3VTJoMVptWnNaVlZ3U1U1VVJVd0FRWEppYVhSeVlYSjVSbXh2WVhSTWIyY3hjRWxPVkVWTUFGTjFZbWR5YjNWd1UyaDFabVpzWlVSdmQyNUpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwbHRaVWRsZEZkbGFXZG9kR2x1WjFCaGRIUmxjbTVOYVc1cGJYVnRSR2x6ZEc5eWRHbHZia2xPVkVWTUFGTjFZbWR5YjNWd1FYWmpVMmxqUjJWMFFtVnpkRWx3WlV4MWJXRkVhWE4wYjNKMGFXOXVTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTlRhV05IWlhSQ1pYTjBTWEJsUTJoeWIyMWhSR2x6ZEc5eWRHbHZia2xPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sVTJWMFRXOTBhVzl1Vm1WamRHOXlRMjl6ZEVaMWJtTjBhVzl1U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5UYVdOVFpYUkpiblJ5WVV4MWJXRk5iMlJsUTI5emRFWjFibU4wYVc5dVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OVGFXTlRaWFJKYm5SeVlVTm9jbTl0WVUxdlpHVkRiM04wUm5WdVkzUnBiMjVKVGxSRlRBQkdkWE5sVEc5dmNITkpia1oxYm1OMGFXOXVTVTVVUlV3QVZtVmpkRzl5UTI5dGNIVjBaVVoxYm1OMGFXOXVTVTVVUlV3QVZtVmpkRzl5UTI5dGNIVjBaVU5oYkd4aFlteGxSblZ1WTNScGIyNUpUbFJGVEFCRGIyUmxVMlZqZEdsdmJrbE9WRVZNQUZOMVltZHliM1Z3UVhaalNXMWxSMlYwVlc1cFpHbHlaV04wYVc5dVlXeEZZWEpzZVZObFlYSmphRlJsY20xcGJtRjBhVzl1U1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5OYjNScGIyNUZjM1JwYldGMGFXOXVTVTVVUlV3QVJsQkhRVUoxWm1abGNreHZZMkYwYVc5dVNVNVVSVXdBVTNWaVozSnZkWEJCZG1OSmJXVkhaWFJVY25WdVkyRjBaV1JUWldGeVkyaEpibVJwWTJGMGFXOXVTVTVVUlV3QVRtOUdkWE5wYjI1SlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpVZGxkRVIxWVd4U1pXWmxjbVZ1WTJWVGRISmxZVzFwYmtsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFJYWmhiSFZoZEdWWGFYUm9SSFZoYkZKbFptVnlaVzVqWlZOMGNtVmhiV2x1U1U1VVJVd0FWSGx3WlVGMlkwbHRaVVIxWVd4U1pXWmxjbVZ1WTJWVGRISmxZVzFwYmtsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFIyVjBVMmx1WjJ4bFVtVm1aWEpsYm1ObFUzUnlaV0Z0YVc1SlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpVVjJZV3gxWVhSbFYybDBhRk5wYm1kc1pWSmxabVZ5Wlc1alpWTjBjbVZoYldsdVNVNVVSVXdBVkhsd1pVRjJZMGx0WlZOcGJtZHNaVkpsWm1WeVpXNWpaVk4wY21WaGJXbHVTVTVVUlV3QVFYSmlhWFJ5WVhKNVJteHZZWFJUYVc1SlRsUkZUQUJHYVhobFpGTnBia2xPVkVWTUFFRnlZbWwwY21GeWVVWnNiMkYwUVZOcGJrbE9WRVZNQUVGeVltbDBjbUZ5ZVVac2IyRjBRVlJoYmtsT1ZFVk1BRUZ6YlVsT1ZFVk1BRTFoZUZkdmNtdEVhVzFKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEUxMWJFbE9WRVZNQUVaMWJtTjBhVzl1Um14dllYUkRiMjUwY205c1NVNVVSVXdBVEc5dmNFTnZiblJ5YjJ4SlRsUkZUQUJHVUVkQlJGTlFRMjl1ZEhKdmJFbE9WRVZNQUVaMWJtTjBhVzl1VUc5cGJuUmxja05oYkd4SlRsUkZUQUJCYzIxRFlXeHNTVTVVUlV3QVUzUmhZMnREWVd4c1NVNVVSVXdBVTBsTlZFTmhiR3hKVGxSRlRBQkJiR2xoYzFOamIzQmxUR2x6ZEVSbFkyeEpUbFJGVEFCQmJHbGhjMFJ2YldGcGJrUmxZMnhKVGxSRlRBQkJiR2xoYzFOamIzQmxSR1ZqYkVsT1ZFVk1BRWx1YVhScFlYUnBiMjVKYm5SbGNuWmhiRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVMmxqUjJWMFRXOTBhVzl1Vm1WamRHOXlUV0Z6YTBsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFEyOXpVR2xKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEZOcGJrTnZjMUJwU1U1VVJVd0FSbWw0WldSVGFXNURiM05RYVVsT1ZFVk1BRVpwZUdWa1EyOXpVR2xKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEVGRGIzTlFhVWxPVkVWTUFFRnlZbWwwY21GeWVVWnNiMkYwVTJsdVVHbEpUbFJGVEFCR2FYaGxaRk5wYmxCcFNVNVVSVXdBUVhKaWFYUnlZWEo1Um14dllYUkJVMmx1VUdsSlRsUkZUQUJCY21KcGRISmhjbmxHYkc5aGRFRlVZVzVRYVVsT1ZFVk1BRVp2Y21ObFVHOTNNa1JsY0hSb1NVNVVSVXdBUW1GdWEzZHBaSFJvU1U1VVJVd0FUVTFJYjNOMFNXNTBaWEptWVdObFFXUmtjbVZ6YzFkcFpIUm9TVTVVUlV3QVRVMUliM04wU1c1MFpYSm1ZV05sUkdGMFlWZHBaSFJvU1U1VVJVd0FVSEpsWm1WMFkyaEpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRXh2WjBsT1ZFVk1BRVpwZUdWa1RHOW5TVTVVUlV3QVRXRjRTVzUwWlhKc1pXRjJhVzVuU1U1VVJVd0FUV1Z0YjNKNVFXTmpaWE56UVd4cFlYTnBibWRKVGxSRlRBQlhjbWwwWlZCcGNHVkNiRzlqYTJsdVowbE9WRVZNQUZKbFlXUlFhWEJsUW14dlkydHBibWRKVGxSRlRBQkdVRWRCVW1WblNVNVVSVXdBVTNWaVozSnZkWEJCZG1OSmJXVkpibWwwYVdGc2FYcGxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTkdiV1ZKYm1sMGFXRnNhWHBsU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5DYldWSmJtbDBhV0ZzYVhwbFNVNVVSVXdBVTNWaVozSnZkWEJCZG1OVGFXTkpibWwwYVdGc2FYcGxTVTVVUlV3QVUyaGhjbVZrVEc5allXeE5aVzF2Y25sVGFYcGxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTkpiV1ZTWldaWGFXNWtiM2RUYVhwbFNVNVVSVXdBVFdGNFYyOXlhMmR5YjNWd1UybDZaVWxPVkVWTUFFTmhZMmhsVTJsNlpVbE9WRVZNQUVOdmJuUnliMnhDWVhKeWFXVnlRWEp5YVhabFNVNVVSVXdBVm1WamRHOXlRMjl0Y0hWMFpVbE9WRVZNQUZKMWJuUnBiV1ZCYkdsbmJtVmtRWFIwY21saWRYUmxTVTVVUlV3QVRHOXVaME52Ym5OMFlXNTBRMjl0Y0c5emFYUmxTVTVVUlV3QVUzVmlaM0p2ZFhCQ2JHOWphMWR5YVhSbFNVNVVSVXdBVTNWaVozSnZkWEJKYldGblpVSnNiMk5yVjNKcGRHVkpUbFJGVEFCVGRXSm5jbTkxY0VsdFlXZGxUV1ZrYVdGQ2JHOWphMWR5YVhSbFNVNVVSVXdBVEc5dmNFWjFjMlZKVGxSRlRBQkJiR2xoYzFOamIzQmxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZIWlhSSmJuUmxjazFwYm05eVUyaGhjR1ZKVGxSRlRBQlRkV0puY205MWNFRjJZMDFqWlVkbGRFbHVkR1Z5VFdGcWIzSlRhR0Z3WlVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVTJsalIyVjBTWEJsVEhWdFlWTm9ZWEJsU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5UYVdORmRtRnNkV0YwWlVsd1pVbE9WRVZNQUU5d2RFNXZibVZKVGxSRlRBQkVaV0oxWjBsdVptOU5iMlIxYkdWSlRsUkZUQUJFWldKMVowMXZaSFZzWlVsT1ZFVk1BRk4xWW1keWIzVndVMmgxWm1ac1pVbE9WRVZNQUZOMVltZHliM1Z3UVhaalNXMWxVMlYwVlc1cFpHbHlaV04wYVc5dVlXeE5hWGhFYVhOaFlteGxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTlNaV1pUWlhSQ2FXUnBjbVZqZEdsdmJtRnNUV2w0UkdsellXSnNaVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVbVZtVTJWMFFtbHNhVzVsWVhKR2FXeDBaWEpGYm1GaWJHVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxTnBZMU5sZEVKcGJHbHVaV0Z5Um1sc2RHVnlSVzVoWW14bFNVNVVSVXdBVTNWaVozSnZkWEJCZG1OVGFXTlRaWFJUYTJOR2IzSjNZWEprVkhKaGJuTm1iM0p0Ulc1aFlteGxTVTVVUlV3QVUzUmhiR3hGYm1GaWJHVkpUbFJGVEFCUWFYQmxiR2x1WlVWdVlXSnNaVWxPVkVWTUFGWmxZM1J2Y2tOdmJYQjFkR1ZXWVhKcFlXSnNaVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sUjJWMFJHVm1ZWFZzZEV4dmQxQmxibUZzZEhsRGIzTjBWR0ZpYkdWSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTAxalpVZGxkRVJsWm1GMWJIUk5aV1JwZFcxUVpXNWhiSFI1UTI5emRGUmhZbXhsU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5OWTJWSFpYUkVaV1poZFd4MFNHbG5hRkJsYm1Gc2RIbERiM04wVkdGaWJHVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwMWpaVWRsZEVSbFptRjFiSFJKYm5SbGNrMXZkR2x2YmxabFkzUnZja052YzNSVVlXSnNaVWxPVkVWTUFFMWxjbWRsU1U1VVJVd0FTVTlRYVhCbFUzUnZjbUZuWlVsT1ZFVk1BRlZCZG1WeVlXZGxTVTVVUlV3QVNVRjJaWEpoWjJWSlRsUkZUQUJVZVhCbFZtMWxTVzFoWjJWSlRsUkZUQUJHZFc1amRHbHZia1pzYjJGMGFXNW5VRzlwYm5STmIyUmxTVTVVUlV3QVJuVnVZM1JwYjI1RVpXNXZjbTFOYjJSbFNVNVVSVXdBUmxCR1lYTjBUV0YwYUUxdlpHVkpUbFJGVEFCR2RXNWpkR2x2YmxKdmRXNWthVzVuVFc5a1pVbE9WRVZNQUUxTlNHOXpkRWx1ZEdWeVptRmpaVkpsWVdSWGNtbDBaVTF2WkdWSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTFOcFkwZGxkRWx3WlVOb2NtOXRZVTF2WkdWSlRsUkZUQUJOWVhSb1QzQkVVMUJOYjJSbFNVNVVSVXdBUkc5dWRGTjBZWFJwWTJGc2JIbERiMkZzWlhOalpVbE9WRVZNQUVKMWNuTjBRMjloYkdWelkyVkpUbFJGVEFCTWIyOXdRMjloYkdWelkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwbHRaVk5sZEVSMVlXeFNaV1psY21WdVkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxSmxaa1YyWVd4MVlYUmxWMmwwYUVSMVlXeFNaV1psY21WdVkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkwbHRaVVYyWVd4MVlYUmxWMmwwYUVSMVlXeFNaV1psY21WdVkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxTnBZMFYyWVd4MVlYUmxWMmwwYUVSMVlXeFNaV1psY21WdVkyVkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxSmxaa1YyWVd4MVlYUmxWMmwwYUUxMWJIUnBVbVZtWlhKbGJtTmxTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTlRhV05GZG1Gc2RXRjBaVmRwZEdoTmRXeDBhVkpsWm1WeVpXNWpaVWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpTVzFsVTJWMFUybHVaMnhsVW1WbVpYSmxibU5sU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5TWldaRmRtRnNkV0YwWlZkcGRHaFRhVzVuYkdWU1pXWmxjbVZ1WTJWSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTBsdFpVVjJZV3gxWVhSbFYybDBhRk5wYm1kc1pWSmxabVZ5Wlc1alpVbE9WRVZNQUZOMVltZHliM1Z3UVhaalUybGpSWFpoYkhWaGRHVlhhWFJvVTJsdVoyeGxVbVZtWlhKbGJtTmxTVTVVUlV3QVZIbHdaVUoxWm1abGNsTjFjbVpoWTJWSlRsUkZUQUJUZEhKbFlXMXBibWRKYm5SbGNtWmhZMlZKVGxSRlRBQkdkVzVqVUdGeVlXMUpUMHRwYm1SSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTFOcFkwZGxkRkJoWTJ0bFpGTnJZMHgxYldGRGIzVnVkRlJvY21WemFHOXNaRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpTVzFsVTJWMFJXRnliSGxUWldGeVkyaFVaWEp0YVc1aGRHbHZibFJvY21WemFHOXNaRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVMmxqUjJWMFVHRmphMlZrVTJ0alRIVnRZVk4xYlZSb2NtVnphRzlzWkVsT1ZFVk1BRlI1Y0dWVGRISjFZM1JEYjI1MGFXNTFaV1JKVGxSRlRBQlRjR1ZqUTI5dWMzUmhiblJEYjIxd2IzTnBkR1ZEYjI1MGFXNTFaV1JKVGxSRlRBQlNkVzUwYVcxbFFXeHBaMjVsWkVsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFIyVjBRbTl5WkdWeVVtVmhZMmhsWkVsT1ZFVk1BRlZCZG1WeVlXZGxVbTkxYm1SbFpFbE9WRVZNQUVsQmRtVnlZV2RsVW05MWJtUmxaRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpVbVZtUlhaaGJIVmhkR1ZYYVhSb1RYVnNkR2xTWldabGNtVnVZMlZKYm5SbGNteGhZMlZrU1U1VVJVd0FVM1ZpWjNKdmRYQkJkbU5UYVdORmRtRnNkV0YwWlZkcGRHaE5kV3gwYVZKbFptVnlaVzVqWlVsdWRHVnliR0ZqWldSSlRsUkZUQUJCY21KcGRISmhjbmxHYkc5aGRFRmtaRWxPVkVWTUFGTjFZbWR5YjNWd1FYWmpUV05sUTI5dWRtVnlkRlJ2VW1WbVVHRjViRzloWkVsT1ZFVk1BRlI1Y0dWQmRtTlNaV1pRWVhsc2IyRmtTVTVVUlV3QVUzVmlaM0p2ZFhCQmRtTk5ZMlZEYjI1MlpYSjBWRzlKYldWUVlYbHNiMkZrU1U1VVJVd0FWSGx3WlVGMlkwbHRaVkJoZVd4dllXUkpUbFJGVEFCVGRXSm5jbTkxY0VGMlkxSmxaa052Ym5abGNuUlViMDFqWlZCaGVXeHZZV1JKVGxSRlRBQlRkV0puY205MWNFRjJZMGx0WlVOdmJuWmxjblJVYjAxalpWQmhlV3h2WVdSSlRsUkZUQUJUZFdKbmNtOTFjRUYyWTFOcFkwTnZiblpsY25SVWIwMWpaVkJoZVd4dllXUkpUbFJGVEFCVWVYQmxRWFpqVFdObFVHRjViRzloWkVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVFdObFEyOXVkbVZ5ZEZSdlUybGpVR0Y1Ykc5aFpFbE9WRVZNQUZSNWNHVkJkbU5UYVdOUVlYbHNiMkZrU1U1VVJVd0FVM1ZpWjNKdmRYQkNiRzlqYTFKbFlXUkpUbFJGVEFCVGRXSm5jbTkxY0VsdFlXZGxRbXh2WTJ0U1pXRmtTVTVVUlV3QVUzVmlaM0p2ZFhCSmJXRm5aVTFsWkdsaFFteHZZMnRTWldGa1NVNVVSVXdBVTNWaVozSnZkWEJCZG1OVGFXTlRaWFJDYkc5amEwSmhjMlZrVW1GM1UydHBjRk5oWkVsT1ZFVk1BRk4xWW1keWIzVndRWFpqU1cxbFUyVjBWMlZwWjJoMFpXUlRZV1JKVGxSRlRBQkJiR3h2ZDFKbFlYTnpiMk5KVGxSRlRBQlRkV0puY205MWNFRjJZMU5wWTBOdmJtWnBaM1Z5WlZOclkwbE9WRVZNQUVGeVltbDBjbUZ5ZVVac2IyRjBVM1ZpU1U1VVJVd0FRV0p6VlZOMVlrbE9WRVZNQUVGaWMwbFRkV0pKVGxSRlRBQlRkV0puY205MWNFRjJZMDF2ZEdsdmJrVnpkR2x0WVhScGIyNUpiblJ5WVVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVTJsalEyOXVabWxuZFhKbFNYQmxUSFZ0WVVsT1ZFVk1BRk4xWW1keWIzVndRWFpqVFc5MGFXOXVSWE4wYVcxaGRHbHZia05vY205dFlVbE9WRVZNQUZOMVltZHliM1Z3UVhaalUybGpRMjl1Wm1sbmRYSmxTWEJsVEhWdFlVTm9jbTl0WVVsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFRGUkpUbFJGVEFCR2JHOWhkR2x1WjFCdmFXNTBUVzlrWlVGTVZFbE9WRVZNQUVGeVltbDBjbUZ5ZVVac2IyRjBSMVJKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEZCdmQxSkpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRVZSU1U1VVJVd0FVbTkxYm1ScGJtZE5iMlJsVWxSUVNVNVVSVXdBVTNWaVozSnZkWEJDZFdabVpYSkNiRzlqYTBsUFNVNVVSVXdBVTNWaVozSnZkWEJKYldGblpVSnNiMk5yU1U5SlRsUkZUQUJUZFdKbmNtOTFjRWx0WVdkbFRXVmthV0ZDYkc5amEwbFBTVTVVUlV3QVFYSmlhWFJ5WVhKNVJteHZZWFJRYjNkT1NVNVVSVXdBVW05MWJtUnBibWROYjJSbFVsUk9TVTVVUlV3QVFYSmlhWFJ5WVhKNVJteHZZWFJNUlVsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFIwVkpUbFJGVEFCR2JHOWhkR2x1WjFCdmFXNTBUVzlrWlVsRlJVVkpUbFJGVEFCVlRYVnNNeko0TVRaSlRsUkZUQUJKVFhWc016SjRNVFpKVGxSRlRBQkpiblJsWjJWeVJuVnVZM1JwYjI1ek1rbE9WRVZNQUVGeVltbDBjbUZ5ZVVac2IyRjBSWGh3TWtsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFFWUmhiakpKVGxSRlRBQkJjbUpwZEhKaGNubEdiRzloZEV4dlp6SkpUbFJGVEFCQmNtSnBkSEpoY25sR2JHOWhkRVY0Y0cweFNVNVVSVXdBUVhKaWFYUnlZWEo1Um14dllYUkZlSEF4TUVsT1ZFVk1BRUZ5WW1sMGNtRnllVVpzYjJGMFRHOW5NVEJKVGxSRlRBQkRVRkJmWm05eVgwOXdaVzVEVEFCVFdVTk1BRXNBVEhWdVlYSkhBRkpIQUc5d1pYSmhibVF1ZEhsd1pTQTlQU0JUVUZaZlQxQkZVa0ZPUkY5VVdWQkZYMHhKVkVWU1FVeGZVMVJTU1U1SEFFeEJUa2NBUTI5dWRtVnlkRlZVYjBZQVEyOXVkbVZ5ZEZOVWIwWUFVazVFWDAxSlRsOUpUa1lBVWs1RVgwbE9SZ0JTYjNWdVpHbHVaMDF2WkdWU1ZFVUFhVzV6ZEMwK1pYaDBYMmx1YzNSZmRIbHdaU0FoUFNCVFVGWmZSVmhVWDBsT1UxUmZWRmxRUlY5T1QwNUZBSFI1Y0dVZ0lUMGdVMUJXWDA5UVJWSkJUa1JmVkZsUVJWOU9UMDVGQUVoc2MyeERiM1Z1ZEdWeVFuVm1abVZ5UjA5UFIweEZBRTFsYldKbGNrUmxZMjl5WVhSbFUzUnlhVzVuUjA5UFIweEZBRlZ6WlhKVWVYQmxSMDlQUjB4RkFFaHNjMnhUWlcxaGJuUnBZMGRQVDBkTVJRQkpSVVZGQUZKT1JBQllMVXhGUjBWT1JBQkpiblJsY25CdmJHRjBaVUYwVm1WeWRHVjRRVTFFQUVOMVltVkdZV05sU1c1a1pYaEJUVVFBVTNSbGJtTnBiRkpsWmt4bGMzTkdjbTl1ZEVGTlJBQlRkR1Z1WTJsc1VtVm1SM0psWVhSbGNrWnliMjUwUVUxRUFGTjBaVzVqYVd4U1pXWlZibU5vWVc1blpXUkdjbTl1ZEVGTlJBQk5ZbU51ZEVGTlJBQkZZWEpzZVVGdVpFeGhkR1ZHY21GbmJXVnVkRlJsYzNSelFVMUVBRk4zYVhwNmJHVkpiblp2WTJGMGFXOXVjMEZOUkFCQ1lYSjVRMjl2Y21ST2IxQmxjbk53UVUxRUFFVjRjR3hwWTJsMFNXNTBaWEp3UVUxRUFGZHlhWFJsU1c1MmIyTmhkR2x2YmtGTlJBQkhjbTkxY0ZWTllYaE9iMjVWYm1sbWIzSnRRVTFFQUVkeWIzVndVMDFoZUU1dmJsVnVhV1p2Y20xQlRVUUFSM0p2ZFhCR1RXRjRUbTl1Vlc1cFptOXliVUZOUkFCSGNtOTFjRlZOYVc1T2IyNVZibWxtYjNKdFFVMUVBRWR5YjNWd1UwMXBiazV2YmxWdWFXWnZjbTFCVFVRQVIzSnZkWEJHVFdsdVRtOXVWVzVwWm05eWJVRk5SQUJIY205MWNFbEJaR1JPYjI1VmJtbG1iM0p0UVUxRUFFZHliM1Z3UmtGa1pFNXZibFZ1YVdadmNtMUJUVVFBUW1GeWVVTnZiM0prVUhWc2JFMXZaR1ZzUVUxRUFFWnlZV2R0Wlc1MFRXRnphMEZOUkFCVGRHVnVZMmxzVW1WbVRHVnpjMEpoWTJ0QlRVUUFVM1JsYm1OcGJGSmxaa2R5WldGMFpYSkNZV05yUVUxRUFGTjBaVzVqYVd4U1pXWlZibU5vWVc1blpXUkNZV05yUVUxRUFFSmhjbmxEYjI5eVpGTnRiMjkwYUVGTlJBQkdjbUZuYldWdWRFWmxkR05vUVUxRUFFWnlZV2R0Wlc1MFRXRnphMFpsZEdOb1FVMUVBRlJwYldWQlRVUUFRbUZ5ZVVOdmIzSmtUbTlRWlhKemNGTmhiWEJzWlVGTlJBQkNZWEo1UTI5dmNtUlRiVzl2ZEdoVFlXMXdiR1ZCVFVRQVJteHZZWFF4TmtsdFlXZGxRVTFFQUVOMVltVkdZV05sUTI5dmNtUkJUVVFBU1cxaFoyVkhZWFJvWlhKQ2FXRnpURzlrUVUxRUFFbHRZV2RsVW1WaFpGZHlhWFJsVEc5a1FVMUVBRUpoY25sRGIyOXlaRTV2VUdWeWMzQkRaVzUwY205cFpFRk5SQUJDWVhKNVEyOXZjbVJUYlc5dmRHaERaVzUwY205cFpFRk5SQUJUZDJsNmVteGxTVzUyYjJOaGRHbHZibk5OWVhOclpXUkJUVVFBVlUxaGVETkJUVVFBVTAxaGVETkJUVVFBUmsxaGVETkJUVVFBVlUxcGJqTkJUVVFBVTAxcGJqTkJUVVFBUmsxcGJqTkJUVVFBVlUxcFpETkJUVVFBVTAxcFpETkJUVVFBUmsxcFpETkJUVVFBWjJ4ZlZtVnlkR1Y0U1VRQVoyeGZWMjl5YTBkeWIzVndTVVFBWjJ4ZlRHOWpZV3hKYm5adlkyRjBhVzl1U1VRQVoyeGZSMnh2WW1Gc1NXNTJiMk5oZEdsdmJrbEVBR2RzWDBsdWRtOWpZWFJwYjI1SlJBQm5iRjlRY21sdGFYUnBkbVZKUkFCbmJGOVRZVzF3YkdWSlJBQm5iRjlKYm5OMFlXNWpaVWxFQUhKbGMzVnNkQ0JKUkFCdFpXMXZjbmtnYzJWdFlXNTBhV056SUVsRUFIUjVjR1VnU1VRQWMyTnZjR1VnU1VRQVVrNUVYME5QVGxaZlQwUkVBRE5FQUVsdFlXZGxJQ2RFYVcwbklHMTFjM1FnWW1VZ01rUUFTVzFoWjJVeFJBQlRZVzF3YkdWa01VUUFUM0JsYmtOTVgwTUFSM0p2ZFhCT2IyNVZibWxtYjNKdFFtRnNiRzkwUm1sdVpFMVRRZ0JIY205MWNFNXZibFZ1YVdadmNtMUNZV3hzYjNSR2FXNWtURk5DQUhOU1IwSUFRVkpIUWdBbFFnQnpRa2RTUVFCT1ZrbEVTVUVBYzFKSFFrRUFKVUVBUUFCaGNtVWdlVzkxSUcxcGMzTnBibWNnSnlncEp5Qm1iM0lnZG1Gc2RXVWdZMjl1YzNSeWRXTjBiM0kvQUdGeWNtRjVJSE5wZW1VZ2FYTWdZVzRnYjNabGNuSnBaR1V0Wlhod2NtVnpjMmx2Yml3Z2QyaGxiaUJsZUhCbFkzUmxaQ0JoSUdOdmJuTjBZVzUwTFdWNGNISmxjM05wYjI0dUNsZGhjeUIwYUdVZ1UzVmljM1JwZEhWMFpVOTJaWEp5YVdSbElIUnlZVzV6Wm05eWJTQnlkVzQvQUR4aGJuaytBRHgxTXpJZ2IzWmxjbVpzYjNjK0FIUnBiblE2T21OdmJuTjBZVzUwT2pwVFkyRnNZWEk4ZEdsdWREbzZRVWx1ZEQ0QWRHbHVkRG82WTI5dWMzUmhiblE2T2xOallXeGhjangwYVc1ME9qcEJSbXh2WVhRK0FIUnBiblE2T25ObGJUbzZRblZwYkhScGJrVnVkVzFGZUhCeVpYTnphVzl1UEhScGJuUTZPbUoxYVd4MGFXNDZPbFJsZUdWc1JtOXliV0YwUGdCMGFXNTBPanB6WlcwNk9rSjFhV3gwYVc1RmJuVnRSWGh3Y21WemMybHZiangwYVc1ME9qcGlkV2xzZEdsdU9qcEJZMk5sYzNNK0FEeGxjbkp2Y2o0QVBIVnVhMjV2ZDI0Z2MyRnRjR3hsY2o0QVBIVnVhMjV2ZDI0K0FEeHBibk4wY25WamRHbHZiajRBZEdsdWREbzZZMjl1YzNSaGJuUTZPbE5qWVd4aGNqeGliMjlzUGdBOGJuVnNiRDRBZEdsdWREbzZjMlZ0T2pwQ2RXbHNkR2x1Ulc1MWJVVjRjSEpsYzNOcGIyNDhkR2x1ZERvNlluVnBiSFJwYmpvNlNXNTBaWEp3YjJ4aGRHbHZibE5oYlhCc2FXNW5QZ0IwYVc1ME9qcHpaVzA2T2tKMWFXeDBhVzVGYm5WdFJYaHdjbVZ6YzJsdmJqeDBhVzUwT2pwaWRXbHNkR2x1T2pwQ2RXbHNkR2x1Vm1Gc2RXVStBSFJwYm5RNk9uTmxiVG82UW5WcGJIUnBia1Z1ZFcxRmVIQnlaWE56YVc5dVBIUnBiblE2T21KMWFXeDBhVzQ2T2tsdWRHVnljRzlzWVhScGIyNVVlWEJsUGdBOGJtOXVaVDRBZEdsdWREbzZjMlZ0T2pwQ2RXbHNkR2x1Ulc1MWJVVjRjSEpsYzNOcGIyNDhkR2x1ZERvNlluVnBiSFJwYmpvNlFXUmtjbVZ6YzFOd1lXTmxQZ0E4YVc1MllXeHBaRDRBUGo0QWRHbHVkRG82WTI5dWMzUmhiblE2T2xOallXeGhjangwYVc1ME9qcG1NVFkrQUhScGJuUTZPbU52Ym5OMFlXNTBPanBUWTJGc1lYSThkR2x1ZERvNmRUTXlQZ0IwYVc1ME9qcGpiMjV6ZEdGdWREbzZVMk5oYkdGeVBIUnBiblE2T21rek1qNEFkR2x1ZERvNlkyOXVjM1JoYm5RNk9sTmpZV3hoY2p4MGFXNTBPanBtTXpJK0FDMCtBRzl3WlhKaGRHOXlQUUErUFFCdmNHVnlZWFJ2Y2owOUFEdzlBQ0U5QUhSbGVIUjFjbVZmWTNWaVpWOWhjbkpoZVR3QWRHVjRkSFZ5WlY4eVpGOWhjbkpoZVR3QWRHVjRkSFZ5WlY5emRHOXlZV2RsWHpKa1gyRnljbUY1UEFCaWFYUmpZWE4wUEFCZlgyRjBiMjFwWTE5amIyMXdZWEpsWDJWNFkyaGhibWRsWDNKbGMzVnNkRHdBY0hSeVBBQnlaV1k4QUhSbGVIUjFjbVZmWTNWaVpUd0FkR1Y0ZEhWeVpWOHpaRHdBZEdWNGRIVnlaVjl6ZEc5eVlXZGxYek5rUEFCMFpYaDBkWEpsWHpKa1BBQjBaWGgwZFhKbFgzTjBiM0poWjJWZk1tUThBSFJsZUhSMWNtVmZiWFZzZEdsellXMXdiR1ZrWHpKa1BBQjBaWGgwZFhKbFh6RmtQQUIwWlhoMGRYSmxYM04wYjNKaFoyVmZNV1E4QUdGMGIyMXBZendBUER3QWJXRjBOSGcwUEFCdFlYUXplRFE4QUcxaGRESjRORHdBZG1Wak5Ed0FiV0YwTkhnelBBQnRZWFF6ZURNOEFHMWhkREo0TXp3QWRtVmpNendBY0dGamEyVmtWbVZqTXp3QWJXRjBOSGd5UEFCdFlYUXplREk4QUcxaGRESjRNandBZG1Wak1qd0FJR2x1SUdaMWJtTjBhVzl1SUR3QVNXNTBaWEptWVdObElIWmhjbWxoWW14bElHbGtJRHdBSnlCcFpDQThBQ0JKWkNBOEFDQnZaaUJ6ZEhKMVkzUWdTVVFnUEFBcUx5QjlPd0JpY21WaGF6c0FZMjl1ZEdsdWRXVTdBR1JwYzJOaGNtUTdBRTl3Vkhsd1pVbHVkQ0JvWVhNZ2FXNTJZV3hwWkNCemFXZHVaV1J1WlhOek9nQWdkMkZ6SUhCeVpYWnBiM1Z6YkhrZ1pHVmpiR0Z5WldRZ2FHVnlaVG9BSnlCcGN5QmtaV05zWVhKbFpDQm9aWEpsT2dCc2FXNWxPZ0JoWW1Oa1pXWm5hR2xxYTJ4dGJtOXdjWEp6ZEhWMmQzaDVla0ZDUTBSRlJrZElTVXBMVEUxT1QxQlJVbE5VVlZaWFdGbGFYekF4TWpNME5UWTNPRGtBVlc1d1lXTnJWVzV2Y20wMGVEZ0FVR0ZqYTFWdWIzSnROSGc0QUZWdWNHRmphMU51YjNKdE5IZzRBRkJoWTJ0VGJtOXliVFI0T0FCMU9BQlRkRzl5WVdkbFVIVnphRU52Ym5OMFlXNTBPQUJWYm05eWJVbHVkRGdBVTI1dmNtMUpiblE0QUZWdWMybG5ibVZrU1c1ME9BQlRhV2R1WldSSmJuUTRBR2s0QUZKbk9BQlNaMkpoT0FCU09BQkRMbFZVUmkwNEFGVnVjR0ZqYTFWdWIzSnRNbmd4TmdCUVlXTnJWVzV2Y20weWVERTJBRlZ1Y0dGamExTnViM0p0TW5neE5nQlFZV05yVTI1dmNtMHllREUyQUZWdWNHRmphMGhoYkdZeWVERTJBRkJoWTJ0SVlXeG1Nbmd4TmdCMU1UWUFVM1J2Y21GblpVbHVjSFYwVDNWMGNIVjBNVFlBVUhKcGIzSWdkRzhnVTFCSlVpMVdJREV1TkN3Z2MzQmxZMmxoYkdsNllYUnBiMjRnWTI5dWMzUmhiblFnYjNCbGNtRjBhVzl1SUZWRGIyNTJaWEowSUhKbGNYVnBjbVZ6SUV0bGNtNWxiQ0JqWVhCaFltbHNhWFI1SUc5eUlHVjRkR1Z1YzJsdmJpQlRVRlpmUVUxRVgyZHdkVjl6YUdGa1pYSmZhVzUwTVRZQVUzUnZjbUZuWlZCMWMyaERiMjV6ZEdGdWRERTJBRlZ1YjNKdFNXNTBNVFlBVTI1dmNtMUpiblF4TmdCVmJuTnBaMjVsWkVsdWRERTJBRk5wWjI1bFpFbHVkREUyQUVac2IyRjBNVFlBVm1WamRHOXlNVFlBVTNSdmNtRm5aVlZ1YVdadmNtMHhOZ0JUZEc5eVlXZGxWVzVwWm05eWJVSjFabVpsY2tKc2IyTnJNVFlBYVRFMkFGSm5NVFlBWW1ZeE5nQmZYMlp5Wlhod1gzSmxjM1ZzZEY5bU1UWUFYMTl0YjJSbVgzSmxjM1ZzZEY5bU1UWUFYMTltY21WNGNGOXlaWE4xYkhSZmRtVmpORjltTVRZQVgxOXRiMlJtWDNKbGMzVnNkRjkyWldNMFgyWXhOZ0JmWDJaeVpYaHdYM0psYzNWc2RGOTJaV016WDJZeE5nQmZYMjF2WkdaZmNtVnpkV3gwWDNabFl6TmZaakUyQUY5ZlpuSmxlSEJmY21WemRXeDBYM1psWXpKZlpqRTJBRjlmYlc5a1psOXlaWE4xYkhSZmRtVmpNbDltTVRZQVVtZGlZVEUyQUZJeE5nQnhkV0Z1ZEdsNlpWUnZSakUyQUZGMVlXNTBhWHBsVkc5R01UWUFkR2x1ZERvNmRIbHdaVG82UmpFMkFGTlFTVkl0VmlBeExqWUFWVzV2Y20xVGFHOXlkRFUyTlFCVmJtOXliVk5vYjNKME5UVTFBRk5RU1ZJdFZpQXhMalVBYVc1emRDMCtkMjl5WkhNb0tTNXphWHBsS0NrZ1BUMGdOUUJ0WVhRMGVEUUFiV0YwTTNnMEFHMWhkREo0TkFCMlpXTTBBSFUyTkFCVFVGWmZSVmhVWDNOb1lXUmxjbDlwYldGblpWOXBiblEyTkFCQmMweHBkR1Z5WVd4VmFXNTBOalFBUjJWMFEyOXVjM1JoYm5SV1lXeFZhVzUwTmpRQVEyOXVjM1JoYm5STWFYUmxjbUZzUVhOSmJuUTJOQUJHYkc5aGREWTBBRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2pZMEFGQm9lWE5wWTJGc05qUUFhVFkwQUdWNGNHVmpkR1ZrSUdKcGRDQjNhV1IwYUNCdlppQlNaWE4xYkhRZ1ZIbHdaU0JqYjIxd2IyNWxiblJ6SUhSdklHSmxJREUyTENBek1pQnZjaUEyTkFCM2FXUjBhQ0E4UFNBMk5BQlZibTl5YlVsdWRESTBBSFZmYlhWc01qUUFjMTl0ZFd3eU5BQjFYMjFoWkRJMEFITmZiV0ZrTWpRQVUxQkpVaTFXSURFdU5BQnBiblJsWjJWeUlHeGxjM01nZEdoaGJpQnZjaUJsY1hWaGJDQjBieUEwQUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElHMWhkSEpwZUNCMGJ5Qm9ZWFpsSUdFZ1EyOXNkVzF1SUVOdmRXNTBJRzltSURRQVJYaHdaV04wWldRZ1NXMWhaMlVnVDNCbGNtRnVaQ0JEYjI1emRFOW1abk5sZEhNZ2RHOGdZbVVnWVc0Z1lYSnlZWGtnYjJZZ2MybDZaU0EwQUdWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdFZ016SXRZbWwwSUdac2IyRjBJSFpsWTNSdmNpQnZaaUJ6YVhwbElEUUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQldJSFJ2SUdKbElHRWdNekl0WW1sMElHWnNiMkYwSUhabFkzUnZjaUJ2WmlCemFYcGxJRFFBWTI5dWMzUmZkMjl5WkhNdWMybDZaU2dwSUQ0Z05BQnBibk4wTFQ1M2IzSmtjeWdwTG5OcGVtVW9LU0E5UFNBMEFHMWhkRFI0TXdCdFlYUXplRE1BYldGME1uZ3pBRjlmY0dGamEyVmtYM1psWXpNQWNHRmphMlZrVm1Wak13QlRVRWxTTFZZZ01TNHpBRU52YlhCdmJtVnVkQ0JrWldOdmNtRjBhVzl1SUhaaGJIVmxJRzExYzNRZ2JtOTBJR0psSUdkeVpXRjBaWElnZEdoaGJpQXpBQ0JuWlhSeklHeGhjbWRsY2lCMGFHRnVJRE1BYVc1emRDNXVkVzFmZDI5eVpITWdQaUF6QUZOUVZsOU9WbDkyYVdWM2NHOXlkRjloY25KaGVUSUFiV0YwTkhneUFHMWhkRE40TWdCdFlYUXllRElBVTFCV1gwbE9WRVZNWDNOb1lXUmxjbDlwYm5SbFoyVnlYMloxYm1OMGFXOXVjeklBVTFCV1gwbE9WRVZNWDJac2IyRjBYMk52Ym5SeWIyeHpNZ0JvWVd4bVgyVjRjRElBYm1GMGFYWmxYMlY0Y0RJQVJYaHdNZ0JoZEdGdU1nQkJkR0Z1TWdCb1lXeG1YMnh2WnpJQWJtRjBhWFpsWDJ4dlp6SUFURzluTWdCemFIVm1abXhsTWdCMlpXTXlBRlZ1YjNKdFNXNTBNVEF4TURFd1h6SUFVbWRpTVRCQk1nQkpiV0ZuWlNCdGRYTjBJR2hoZG1VZ1pXbDBhR1Z5SUNkTlV5YzlNU0J2Y2lBblUyRnRjR3hsWkNjOU1DQnZjaUFuVTJGdGNHeGxaQ2M5TWdCVmJuQmhZMnRFYjNWaWJHVXllRE15QUZCaFkydEViM1ZpYkdVeWVETXlBRjlmWVhSdmJXbGpYMk52YlhCaGNtVmZaWGhqYUdGdVoyVmZjbVZ6ZFd4MFgzVXpNZ0IzYjNKclozSnZkWEJmYzJsNlpTQmhjbWQxYldWdWRITWdiWFZ6ZENCaVpTQnZaaUIwYUdVZ2MyRnRaU0IwZVhCbExDQmxhWFJvWlhJZ2FUTXlJRzl5SUhVek1nQjNiM0pyWjNKdmRYQmZjMmw2WlNCaGNtZDFiV1Z1ZENCdGRYTjBJR0psSUdFZ1kyOXVjM1JoYm5RZ2IzSWdiM1psY25KcFpHVXRaWGh3Y21WemMybHZiaUJ2WmlCMGVYQmxJR0ZpYzNSeVlXTjBMV2x1ZEdWblpYSXNJR2t6TWlCdmNpQjFNeklBZEdWNGRIVnlaVjh5WkR4MGVYQmxQam9nZEhsd1pTQnRkWE4wSUdKbElHWXpNaXdnYVRNeUlHOXlJSFV6TWdCMFpYaDBkWEpsWDIxMWJIUnBjMkZ0Y0d4bFpGOHlaRHgwZVhCbFBqb2dkSGx3WlNCdGRYTjBJR0psSUdZek1pd2dhVE15SUc5eUlIVXpNZ0JGYkdWdFpXNTBJSFI1Y0dVZ2IyWWdjbWh6SUc5bUlGTm9hV1owVEdWbWRDQnRkWE4wSUdKbElHRWdkVE15QUZWdWMybG5ibVZrU1c1ME16SUFVMmxuYm1Wa1NXNTBNeklBVUdoNWMybGpZV3d6TWdCZlgyRjBiMjFwWTE5amIyMXdZWEpsWDJWNFkyaGhibWRsWDNKbGMzVnNkRjlwTXpJQVgxOW1jbVY0Y0Y5eVpYTjFiSFJmWmpNeUFGOWZiVzlrWmw5eVpYTjFiSFJmWmpNeUFGOWZabkpsZUhCZmNtVnpkV3gwWDNabFl6UmZaak15QUY5ZmJXOWtabDl5WlhOMWJIUmZkbVZqTkY5bU16SUFYMTltY21WNGNGOXlaWE4xYkhSZmRtVmpNMTltTXpJQVgxOXRiMlJtWDNKbGMzVnNkRjkyWldNelgyWXpNZ0JmWDJaeVpYaHdYM0psYzNWc2RGOTJaV015WDJZek1nQmZYMjF2WkdaZmNtVnpkV3gwWDNabFl6SmZaak15QUVkbGRGVXpNZ0IwYVc1ME9qcHlaV0ZrWlhJNk9uTndhWEoyT2pwVk16SUFkR2x1ZERvNmRIbHdaVG82VlRNeUFFZGxkRk16TWdCMGFXNTBPanB5WldGa1pYSTZPbk53YVhKMk9qcEpNeklBZEdsdWREbzZkSGx3WlRvNlNUTXlBSFJwYm5RNk9uSmxZV1JsY2pvNmMzQnBjblk2T2tZek1nQjBhVzUwT2pwMGVYQmxPanBHTXpJQVQzQlRZVzF3YkdWeVNXMWhaMlZCWkdSeVpYTnphVzVuVFc5a1pVNVdJR0pwZEhkcFpIUm9JSE5vYjNWc1pDQmlaU0EyTkNCdmNpQXpNZ0IwZVhCbEtDa3RQa0Z6Um14dllYUW9LU0FoUFNCdWRXeHNjSFJ5SUNZbUlIUjVjR1VvS1MwK1FYTkdiRzloZENncExUNTNhV1IwYUNncElEMDlJRE15QUhSNWNHVW9LUzArUVhOSmJuUmxaMlZ5S0NrdFBuZHBaSFJvS0NrZ1BUMGdNeklBVTFCSlVpMVdJREV1TWdCRmVIQmxZM1JsWkNCdWRXMWlaWElnYjJZZ1kyOXVjM1JwZEhWbGJuUnpJSFJ2SUdKbElHRjBJR3hsWVhOMElESUFSWGh3WldOMFpXUWdTVzFoWjJVZ0oxTmhiWEJzWldRbklIQmhjbUZ0WlhSbGNpQjBieUJpWlNBd0lHOXlJRElBUlhod1pXTjBaV1FnU1cxaFoyVWdUM0JsY21GdVpDQkRiMjV6ZEU5bVpuTmxkSE1nWVhKeVlYa2dZMjl0Y0c5dVpXNTBjeUIwYnlCaVpTQnBiblFnZG1WamRHOXljeUJ2WmlCemFYcGxJRElBWlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnWVNBek1pMWlhWFFnYVc1MElIWmxZM1J2Y2lCdlppQnphWHBsSURJQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCV0lIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQjJaV04wYjNJZ2IyWWdjMmw2WlNBeUFHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdNekl0WW1sMElHWnNiMkYwSUhabFkzUnZjaUJ2WmlCemFYcGxJRElBWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0JXSUhSdklHSmxJR0VnTXpJdFltbDBJR1pzYjJGMElIWmxZM1J2Y2lCdlppQnphWHBsSURJQVJHbHRJRk4xWW5CaGMzTkVZWFJoSUhKbGNYVnBjbVZ6SUZOaGJYQnNaV1FnZEc4Z1ltVWdNZ0J2Y0dOdlpHVmZaVzUwY25rdFBtNTFiVlI1Y0dWeklENDlJRElBWlhoMGNtRmZkMjl5WkhNdWMybDZaU2dwSUQ0OUlESUFiR1Z1WjNSb1gybHVabTlmWVhKbkxuZHZjbVJ6TG5OcGVtVW9LU0ErUFNBeUFIZHZjbVJ6S0NrdWMybDZaU2dwSUQwOUlESUFkMjl5WkhNdWMybDZaU2dwSUR3OUlESUFVMUJXWDBkUFQwZE1SVjlvYkhOc1gyWjFibU4wYVc5dVlXeHBkSGt4QUdWNGNHMHhBRk5RU1ZJdFZpQXhMakVBZDI5eWEyZHliM1Z3WDNOcGVtVWdZWEpuZFcxbGJuUWdiWFZ6ZENCaVpTQmhkQ0JzWldGemRDQXhBRzl5SUhOcFoyNGdaWGgwWlc1a1pXUWdkMmhsYmlCVGFXZHVaV1J1WlhOeklHbHpJREVBUlhod1pXTjBaV1FnU1cxaFoyVWdKMFJwYlNjZ2JYVnpkQ0JpWlNCdmJtVWdiMllnTVVRc0lESkVMQ0J2Y2lCRGRXSmxJSGRvWlc0Z1FYSnlZWGxsWkNCcGN5QXhBRk5oYlhCc1pXUWdhVzFoWjJVZ2RIbHdaU0J5WlhGMWFYSmxjeUJoYmlCcGJXRm5aU0IwZVhCbElIZHBkR2dnSWxOaGJYQnNaV1FpSUc5d1pYSmhibVFnYzJWMElIUnZJREFnYjNJZ01RQkZlSEJsWTNSbFpDQkpiV0ZuWlNBblUyRnRjR3hsWkNjZ2NHRnlZVzFsZEdWeUlIUnZJR0psSURBZ2IzSWdNUUJQY0VsdFlXZGxVWFZsY25sTVpYWmxiSE1nYlhWemRDQnZibXg1SUdOdmJuTjFiV1VnWVc0Z0lrbHRZV2RsSWlCdmNHVnlZVzVrSUhkb2IzTmxJSFI1Y0dVZ2FHRnpJR2wwY3lBaVUyRnRjR3hsWkNJZ2IzQmxjbUZ1WkNCelpYUWdkRzhnTVFCUGNFbHRZV2RsVVhWbGNubFRhWHBsVEc5a0lHMTFjM1FnYjI1c2VTQmpiMjV6ZFcxbElHRnVJQ0pKYldGblpTSWdiM0JsY21GdVpDQjNhRzl6WlNCMGVYQmxJR2hoY3lCcGRITWdJbE5oYlhCc1pXUWlJRzl3WlhKaGJtUWdjMlYwSUhSdklERUFTVzFoWjJVZ0owMVRKeUJ0ZFhOMElHSmxJREVBUlhod1pXTjBaV1FnU1cxaFoyVWdKMU5oYlhCc1pXUW5JSEJoY21GdFpYUmxjaUIwYnlCaVpTQXhBRzl3WlhKaGJtUXViblZ0WDNkdmNtUnpJRDA5SURFQWFXNXpkQzArYm5WdFgyOXdaWEpoYm1SeklEMDlJREVBZDI5eVpITW9LUzV6YVhwbEtDa2dQVDBnTVFCcGJuTjBMVDV2Y0dWeVlXNWtjeWdwTG5OcGVtVW9LU0E5UFNBeEFHVnVkaUFoUFNCVFVGWmZSVTVXWDFkRlFrZFFWVjh3QUVkTVUwdzBOVEFBUjB4VFRDNXpkR1F1TkRVd0FHaGhiR1pmWlhod01UQUFibUYwYVhabFgyVjRjREV3QUdoaGJHWmZiRzluTVRBQWJtRjBhWFpsWDJ4dlp6RXdBRlZ1YjNKdFNXNTBNVEF4TURFd0FFNXZibE5sYldGdWRHbGpMbE5vWVdSbGNpNUVaV0oxWjBsdVptOHVNVEF3QUU5d1pXNURUQzVFWldKMVowbHVabTh1TVRBd0FGTlFTVkl0VmlBeExqQUFZV052YzJnZ2JYVnpkQ0JpWlNCallXeHNaV1FnZDJsMGFDQmhJSFpoYkhWbElENDlJREV1TUFCWFIxTk1JR052YlhCaGNtbHpiMjRnYzJGdGNHeHBibWNnZDJsMGFHOTFkQ0JrWlhKcGRtRjBhWFpsY3lCeVpYRjFhWEpsY3lCc1pYWmxiQzF2Wmkxa1pYUmhhV3dnTUM0d0FFVnljbTl5T2lCU1pYTjFiSFFnU1dRZ2FYTWdNQUJGY25KdmNqb2dWSGx3WlNCSlpDQnBjeUF3QUNrZ2JYVnpkQ0JpWlNCbmNtVmhkR1Z5SUhSb1lXNGdNQUJGZUhCbFkzUmxaQ0JUWVcxd2JHVWdabTl5SUVsdFlXZGxJSGRwZEdnZ1RWTWdNQ0IwYnlCaVpTQmhJSFpoYkdsa0lEeHBaRDRnWm05eUlIUm9aU0IyWVd4MVpTQXdBR052Ym5SaGFXNXpJR0Z1SUdGeWNtRjVJSGRwZEdnZ2MzUnlhV1JsSURBQVNXMWhaMlVnSjAxVEp5QnRkWE4wSUdKbElEQUFPaUJCY25KaGVWTjBjbWxrWlNCallXNG5kQ0JpWlNBd0FFVjRjR1ZqZEdWa0lFbHRZV2RsSUNkaGNuSmhlV1ZrSnlCd1lYSmhiV1YwWlhJZ2RHOGdZbVVnTUFCSmJXRm5aU0JQY0dWeVlXNWtJRTFwYmt4dlpDQnlaWEYxYVhKbGN5QW5UVk1uSUhCaGNtRnRaWFJsY2lCMGJ5QmlaU0F3QUVWNGNHVmpkR1ZrSUVsdFlXZGxJQ2ROVXljZ2NHRnlZVzFsZEdWeUlIUnZJR0psSURBQVJHbHRJRk4xWW5CaGMzTkVZWFJoSUhKbGNYVnBjbVZ6SUVGeWNtRjVaV1FnZEc4Z1ltVWdNQUJwYm5abGNuTmxVM0Z5ZENCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYVhSb0lHRWdkbUZzZFdVZ1BpQXdBR3h2WnlCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYVhSb0lHRWdkbUZzZFdVZ1BpQXdBR3h2WnpJZ2JYVnpkQ0JpWlNCallXeHNaV1FnZDJsMGFDQmhJSFpoYkhWbElENGdNQUJ6Y1hKMElHMTFjM1FnWW1VZ1kyRnNiR1ZrSUhkcGRHZ2dZU0IyWVd4MVpTQStQU0F3QUdaMWJtTjBhVzl1WDJsa1h5QTlQU0F3QUdsdWMzUXRQblI1Y0dWZmFXUW9LU0E5UFNBd0FISnZkM01nSVQwZ01BQmpiMngxYlc1eklDRTlJREFBYzJOdmNHVWdJVDBnTUFCeVpYTmZhV1FnSVQwZ01BQjBlWEJsWDJsa0lDRTlJREFBWm5WdVkzUnBiMjVmYVdSZklDRTlJREFBZFc1cGNYVmxYMmxrWHlBaFBTQXdBQ0FxTHdCVmMybHVaeUJoSURZMExXSnBkQ0JwYm5SbFoyVnlJSFI1Y0dVZ2NtVnhkV2x5WlhNZ2RHaGxJRWx1ZERZMElHTmhjR0ZpYVd4cGRIa3VBSFI1Y0dVZ2NtVnhkV2x5WlhNZ2RHaGxJRVpzYjJGME5qUWdZMkZ3WVdKcGJHbDBlUzRBUVNCR2RXNWpkR2x2YmtOaGJHd2diWFZ6ZENCb1lYQndaVzRnZDJsMGFHbHVJR0VnWm5WdVkzUnBiMjRnWW05a2VTNEFJR2x6SUc1dmRDQmhiaUJoY25KaGVTNEFJRzExYzNRZ1ltVWdZVzRnVDNCVWVYQmxVblZ1ZEdsdFpVRnljbUY1TGdCV2RXeHJZVzRnYzNCbFl5QmtiMlZ6YmlkMElHRnNiRzkzSUVKMWFXeDBTVzRnVUc5emFYUnBiMjRnZEc4Z1ltVWdkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5QnBaaUJsZUdWamRYUnBiMjRnYlc5a1pXd2dhWE1nVm1WeWRHVjRMZ0JXZFd4cllXNGdjM0JsWXlCa2IyVnpiaWQwSUdGc2JHOTNJRUoxYVd4MFNXNGdVRzlwYm5SVGFYcGxJSFJ2SUdKbElIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUVsdWNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNZ2FXWWdaWGhsWTNWMGFXOXVJRzF2WkdWc0lHbHpJRlpsY25SbGVDNEFWblZzYTJGdUlITndaV01nWkc5bGMyNG5kQ0JoYkd4dmR5QkNkV2xzZEVsdUlFTnNhWEJFYVhOMFlXNWpaUzlEZFd4c1JHbHpkR0Z1WTJVZ2RHOGdZbVVnZFhObFpDQm1iM0lnZG1GeWFXRmliR1Z6SUhkcGRHZ2dTVzV3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwWmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnYVhNZ1ZtVnlkR1Y0TGdBZ1pHOWxjeUJ1YjNRZ2JXRjBZMmdnZEdobElFOXdWSGx3WlVaMWJtTjBhVzl1SUhCaGNtRnRaWFJsY2lCMGVYQmxJRzltSUhSb1pTQnpZVzFsSUdsdVpHVjRMZ0J6SUd4aGVXOTFkQzRBY3lCMlpXTjBiM0lnWTI5dGNHOXVaVzUwSUdOdmRXNTBMZ0JQY0VaMWJtTjBhVzl1UTJGc2JDQkdkVzVqZEdsdmJpQThhV1ErSjNNZ2NHRnlZVzFsZEdWeUlHTnZkVzUwSUdSdlpYTWdibTkwSUcxaGRHTm9JSFJvWlNCaGNtZDFiV1Z1ZENCamIzVnVkQzRBY3lCemRISjFZM1FnYldWdFltVnlJR052ZFc1MExnQnpJRzFsYldKbGNpQmpiM1Z1ZEM0QWN5QnRZWFJ5YVhnZ1kyOXNkVzF1SUdOdmRXNTBMZ0J6ZEdGMGFXTmhiR3g1SUhWelpXUWdjR1Z5SUhOb1lXUmxjaUJsYm5SeWVTQndiMmx1ZEM0QWRIbHdaU0J5WlhGMWFYSmxjeUIwYUdVZ1JteHZZWFF4TmlCdmNpQkdiRzloZERFMlFuVm1abVZ5SUdOaGNHRmlhV3hwZEhrc0lHOXlJR0Z1SUdWNGRHVnVjMmx2YmlCMGFHRjBJR1Y0Y0d4cFkybDBiSGtnWlc1aFlteGxjeUF4TmkxaWFYUWdabXh2WVhScGJtY2djRzlwYm5RdUFDQnBjeUJ1YjNRZ2RHaGxJRVZ1ZEhKNUlGQnZhVzUwSUc5d1pYSmhibVFnYjJZZ1lXNGdUM0JGYm5SeWVWQnZhVzUwTGdBZ2JYVnpkQ0JpWlNCd2NtVnpaVzUwTGdCTWIyTmhiRk5wZW1WSlpDQnRiMlJsSUdseklHNXZkQ0JoYkd4dmQyVmtJR0o1SUhSb1pTQmpkWEp5Wlc1MElHVnVkbWx5YjI1dFpXNTBMZ0FuSUdseklHNXZkQ0IyWVd4cFpDQm1iM0lnZEdobElGWjFiR3RoYmlCbGVHVmpkWFJwYjI0Z1pXNTJhWEp2Ym0xbGJuUXVBRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2pZMElHRmtaSEpsYzNOcGJtY2diVzlrWlNCeVpYRjFhWEpsY3lCMGFHVWdhVzV3ZFhRZ2FXNTBaV2RsY2lCMGJ5Qm9ZWFpsSUdFZ05qUXRZbWwwSUhkcFpIUm9JR1p2Y2lCV2RXeHJZVzRnWlc1MmFYSnZibTFsYm5RdUFGQm9lWE5wWTJGc1UzUnZjbUZuWlVKMVptWmxjalkwSUdGa1pISmxjM05wYm1jZ2JXOWtaU0J5WlhGMWFYSmxjeUIwYUdVZ2NtVnpkV3gwSUdsdWRHVm5aWElnZEhsd1pTQjBieUJvWVhabElHRWdOalF0WW1sMElIZHBaSFJvSUdadmNpQldkV3hyWVc0Z1pXNTJhWEp2Ym0xbGJuUXVBRVY0Y0dWamRHVmtJRWx0WVdkbElDZFRZVzF3YkdWa0p5QndZWEpoYldWMFpYSWdkRzhnWW1VZ01TQm1iM0lnVm5Wc2EyRnVJR1Z1ZG1seWIyNXRaVzUwTGdCV1lYSnBZV0pzWlNCemRISjFZM1FnYldWdFltVnlJR1JsWTI5eVlYUmxaQ0IzYVhSb0lFbHVkbUZ5YVdGdWRDQnRkWE4wSUc5dWJIa2dZbVVnYVdSbGJuUnBabWxsWkNCM2FYUm9JSFJvWlNCSmJuQjFkQ0J2Y2lCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5QnBiaUJXZFd4cllXNGdaVzUyYVhKdmJtMWxiblF1QUZaaGNtbGhZbXhsSUdSbFkyOXlZWFJsWkNCM2FYUm9JRWx1ZG1GeWFXRnVkQ0J0ZFhOMElHOXViSGtnWW1VZ2FXUmxiblJwWm1sbFpDQjNhWFJvSUhSb1pTQkpibkIxZENCdmNpQlBkWFJ3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwYmlCV2RXeHJZVzRnWlc1MmFYSnZibTFsYm5RdUFGTmhiWEJzWldRZ2JYVnpkQ0JpWlNBeElHOXlJRElnYVc0Z2RHaGxJRloxYkd0aGJpQmxiblpwY205dWJXVnVkQzRBVTJGdGNHeGxaQ0JVZVhCbElHMTFjM1FnWW1VZ1QzQlVlWEJsVm05cFpDQnBiaUIwYUdVZ1QzQmxia05NSUdWdWRtbHliMjV0Wlc1MExnQTZJSE4wYjNKaFoyVWdZMnhoYzNNZ2JYVnpkQ0JpWlNCR2RXNWpkR2x2Yml3Z1YyOXlhMmR5YjNWd0xDQkRjbTl6YzFkdmNtdEhjbTkxY0NCdmNpQkhaVzVsY21saklHbHVJSFJvWlNCUGNHVnVRMHdnWlc1MmFYSnZibTFsYm5RdUFFMWxiVzl5ZVNCdGIyUmxiQ0J0ZFhOMElHSmxJRTl3Wlc1RFRDQnBiaUIwYUdVZ1QzQmxia05NSUdWdWRtbHliMjV0Wlc1MExnQlRZVzF3YkdWa0lHMTFjM1FnWW1VZ01DQnBiaUIwYUdVZ1QzQmxia05NSUdWdWRtbHliMjV0Wlc1MExnQk5VeUJ0ZFhOMElHSmxJREFnYVc0Z2RHaGxJRTl3Wlc1RFRDQmxiblpwY205dWJXVnVkQzRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJDZFdsc2RFbHVJRXhoZVdWeUlHRnVaQ0JXYVdWM2NHOXlkRWx1WkdWNElIUnZJR0psSUhWelpXUWdabTl5SUhaaGNtbGhZbXhsY3lCM2FYUm9JRTkxZEhCMWRDQnpkRzl5WVdkbElHTnNZWE56SUdsbUlHVjRaV04xZEdsdmJpQnRiMlJsYkNCcGN5QkdjbUZuYldWdWRDNEFWblZzYTJGdUlITndaV01nWkc5bGMyNG5kQ0JoYkd4dmR5QkNkV2xzZEVsdUlFTnNhWEJFYVhOMFlXNWpaUzlEZFd4c1JHbHpkR0Z1WTJVZ2RHOGdZbVVnZFhObFpDQm1iM0lnZG1GeWFXRmliR1Z6SUhkcGRHZ2dUM1YwY0hWMElITjBiM0poWjJVZ1kyeGhjM01nYVdZZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzSUdseklFWnlZV2R0Wlc1MExnQldkV3hyWVc0Z2MzQmxZeUJrYjJWemJpZDBJR0ZzYkc5M0lFSjFhV3gwU1c0Z1VISnBiV2wwYVhabFNXUWdkRzhnWW1VZ2RYTmxaQ0JtYjNJZ2RtRnlhV0ZpYkdWeklIZHBkR2dnVDNWMGNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNZ2FXWWdaWGhsWTNWMGFXOXVJRzF2WkdWc0lHbHpJRVp5WVdkdFpXNTBMZ0FnWkc5bGN5QnViM1FnYldWbGRDQjBhR2x6SUhKbGNYVnBjbVZ0Wlc1MExnQlhSMU5NSUhOMWNIQnZjblJ6SUdFZ2MyRnRjR3hsSUcxaGMyc2diMllnWVhRZ2JXOXpkQ0F6TWlCaWFYUnpMaUJUWVcxd2JHVk5ZWE5ySUcxMWMzUWdZbVVnWVc0Z1lYSnlZWGtnYjJZZ01TQmxiR1Z0Wlc1MExnQWdhWE1nYm05MElHRWdZMjl1YzNSaGJuUXVBQ0IwYnlCcGJtUmxlQ0JwYm5SdklHRWdjM1J5ZFdOMGRYSmxJRzExYzNRZ1ltVWdZVzRnVDNCRGIyNXpkR0Z1ZEM0QVUzUnZjbUZuWlVKMVptWmxjaXdnVlc1cFptOXliU3dnYjNJZ1ZXNXBabTl5YlVOdmJuTjBZVzUwTGdBcElIVnpaV1FnWm05eUlFOXdWSGx3WlVsdWRDNEFJRzExYzNRZ1ltVWdZVzRnZEdobElHeGhjM1FnYldWdFltVnlJRzltSUhSb1pTQnpkSEoxWTNRdUFDQnRkWE4wSUdKbElHRWdjRzlwYm5SbGNpQjBieUJoYmlCUGNGUjVjR1ZUZEhKMVkzUXVBRVpRVW05MWJtUnBibWROYjJSbElHUmxZMjl5WVhScGIyNGdZMkZ1SUdKbElHRndjR3hwWldRZ2IyNXNlU0IwYnlCaElIZHBaSFJvTFc5dWJIa2dZMjl1ZG1WeWMybHZiaUJwYm5OMGNuVmpkR2x2YmlCbWIzSWdabXh2WVhScGJtY3RjRzlwYm5RZ2IySnFaV04wTGdCR1VGSnZkVzVrYVc1blRXOWtaU0JrWldOdmNtRjBhVzl1SUdOaGJpQmlaU0JoY0hCc2FXVmtJRzl1YkhrZ2RHOGdkR2hsSUU5aWFtVmpkQ0J2Y0dWeVlXNWtJRzltSUdGdUlFOXdVM1J2Y21VZ2MzUnZjbWx1WnlCMGFISnZkV2RvSUdFZ2NHOXBiblJsY2lCMGJ5QmhJREUyTFdKcGRDQm1iRzloZEdsdVp5MXdiMmx1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5SUc5aWFtVmpkQzRBSUdseklHNXZkQ0JoYmlCdlltcGxZM1F1QUNrZ2RYTmxaQ0JtYjNJZ1QzQlVlWEJsUm14dllYUXVBQ0JqYjIxd2IyNWxiblJ6TGdBZ1lYSm5kVzFsYm5SekxnQWdaVzUyYVhKdmJtMWxiblJ6TGdBZ2FYTWdaR1ZqYjNKaGRHVmtJSGRwZEdnZ1FuVnBiSFJKYmk0Z1FuVnBiSFJKYmlCa1pXTnZjbUYwYVc5dUlITm9iM1ZzWkNCdmJteDVJR0psSUdGd2NHeHBaV1FnZEc4Z2MzUnlkV04wSUhSNWNHVnpMQ0IyWVhKcFlXSnNaWE1nWVc1a0lHTnZibk4wWVc1MGN5NEFWWE5wYm1jZ1lXNGdPQzFpYVhRZ2FXNTBaV2RsY2lCMGVYQmxJSEpsY1hWcGNtVnpJSFJvWlNCSmJuUTRJR05oY0dGaWFXeHBkSGtzSUc5eUlHRnVJR1Y0ZEdWdWMybHZiaUIwYUdGMElHVjRjR3hwWTJsMGJIa2daVzVoWW14bGN5QTRMV0pwZENCcGJuUmxaMlZ5Y3k0QVZYTnBibWNnWVNBeE5pMWlhWFFnYVc1MFpXZGxjaUIwZVhCbElISmxjWFZwY21WeklIUm9aU0JKYm5ReE5pQmpZWEJoWW1sc2FYUjVMQ0J2Y2lCaGJpQmxlSFJsYm5OcGIyNGdkR2hoZENCbGVIQnNhV05wZEd4NUlHVnVZV0pzWlhNZ01UWXRZbWwwSUdsdWRHVm5aWEp6TGdCR2RXNWpkR2x2YmlCa1pXTnNZWEpoZEdsdmJuTWdiWFZ6ZENCaGNIQmxZWElnWW1WbWIzSmxJR1oxYm1OMGFXOXVJR1JsWm1sdWFYUnBiMjV6TGdCR2IzSWdUM0JGZUdWamRYUnBiMjVOYjJSbFNXUWdZV3hzSUVWNGRISmhJRTl3WlhKaGJtUWdhV1J6SUcxMWMzUWdZbVVnWTI5dWMzUmhiblFnYVc1emRISjFZM1JwYjI1ekxnQWdiWFZ6ZENCaVpTQmxlSEJzYVdOcGRHeDVJR3hoYVdRZ2IzVjBJSGRwZEdnZ1QyWm1jMlYwSUdSbFkyOXlZWFJwYjI1ekxnQWdiWFZ6ZENCaVpTQmxlSEJzYVdOcGRHeDVJR3hoYVdRZ2IzVjBJSGRwZEdnZ1VtOTNUV0ZxYjNJZ2IzSWdRMjlzVFdGcWIzSWdaR1ZqYjNKaGRHbHZibk11QUNCdGRYTjBJR0psSUdWNGNHeHBZMmwwYkhrZ2JHRnBaQ0J2ZFhRZ2QybDBhQ0JCY25KaGVWTjBjbWxrWlNCa1pXTnZjbUYwYVc5dWN5NEFJRzExYzNRZ1ltVWdaWGh3YkdsamFYUnNlU0JzWVdsa0lHOTFkQ0IzYVhSb0lFMWhkSEpwZUZOMGNtbGtaU0JrWldOdmNtRjBhVzl1Y3k0QVRXRjBjbWw0SUhSNWNHVnpJR05oYmlCdmJteDVJR0psSUhCaGNtRnRaWFJsY21sNlpXUWdZWE1nYUdGMmFXNW5JRzl1YkhrZ01pd2dNeXdnYjNJZ05DQmpiMngxYlc1ekxnQlBjRkJvYVNCa2IyVnpJRzV2ZENCb1lYWmxJR0Z1SUdWeGRXRnNJRzUxYldKbGNpQnZaaUJwYm1OdmJXbHVaeUIyWVd4MVpYTWdZVzVrSUdKaGMybGpJR0pzYjJOcmN5NEFJR2x1WkdWNFpYTXVBSE4wYjNKaFoyVWdZMnhoYzNObGN5NEFSbEJTYjNWdVpHbHVaMDF2WkdVZ1pHVmpiM0poZEdsdmJpQmpZVzRnWW1VZ1lYQndiR2xsWkNCdmJteDVJSFJ2SUhSb1pTQlBZbXBsWTNRZ2IzQmxjbUZ1WkNCdlppQmhiaUJQY0ZOMGIzSmxJR2x1SUhSb1pTQlRkRzl5WVdkbFFuVm1abVZ5TENCUWFIbHphV05oYkZOMGIzSmhaMlZDZFdabVpYSXNJRlZ1YVdadmNtMHNJRkIxYzJoRGIyNXpkR0Z1ZEN3Z1NXNXdkWFFzSUc5eUlFOTFkSEIxZENCVGRHOXlZV2RsSUVOc1lYTnpaWE11QUUxaGRISnBlQ0IwZVhCbGN5QmpZVzRnYjI1c2VTQmlaU0J3WVhKaGJXVjBaWEpwZW1Wa0lIZHBkR2dnWm14dllYUnBibWN0Y0c5cGJuUWdkSGx3WlhNdUFHOXlJR0Z1SUdGeWNtRjVJRzltSUc5dVpTQnZaaUIwYUdWelpTQjBlWEJsY3k0QUlHMTFiSFJwY0d4bElIUnBiV1Z6TGdBNklITjBiM0poWjJVZ1kyeGhjM01nWm05eVltbGtaR1Z1SUdKNUlIVnVhWFpsY25OaGJDQjJZV3hwWkdGMGFXOXVJSEoxYkdWekxnQkZiblJ5ZVNCd2IybHVkSE1nYldGNUlHNXZkQ0JvWVhabElHRWdZMkZzYkNCbmNtRndhQ0IzYVhSb0lHTjVZMnhsY3k0QUp5QjFjMlZ6SUhSM2J5QmthV1ptWlhKbGJuUWdKM0IxYzJoZlkyOXVjM1JoYm5RbklIWmhjbWxoWW14bGN5NEFSMlZ2YldWMGNua2daWGhsWTNWMGFXOXVJRzF2WkdWc0lHVnVkSEo1SUhCdmFXNTBjeUJ0ZFhOMElITndaV05wWm5rZ1pYaGhZM1JzZVNCdmJtVWdiMllnU1c1d2RYUlFiMmx1ZEhNc0lFbHVjSFYwVEdsdVpYTXNJRWx1Y0hWMFRHbHVaWE5CWkdwaFkyVnVZM2tzSUZSeWFXRnVaMnhsY3lCdmNpQkpibkIxZEZSeWFXRnVaMnhsYzBGa2FtRmpaVzVqZVNCbGVHVmpkWFJwYjI0Z2JXOWtaWE11QUZSbGMzTmxiR3hoZEdsdmJpQmxlR1ZqZFhScGIyNGdiVzlrWld3Z1pXNTBjbmtnY0c5cGJuUnpJR05oYmlCemNHVmphV1o1SUdGMElHMXZjM1FnYjI1bElHOW1JRlpsY25SbGVFOXlaR1Z5UTNjZ2IzSWdWbVZ5ZEdWNFQzSmtaWEpEWTNjZ1pYaGxZM1YwYVc5dUlHMXZaR1Z6TGdCR2NtRm5iV1Z1ZENCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnWlc1MGNua2djRzlwYm5SeklHTmhiaUJ2Ym14NUlITndaV05wWm5rZ2IyNWxJRzltSUU5eWFXZHBibFZ3Y0dWeVRHVm1kQ0J2Y2lCUGNtbG5hVzVNYjNkbGNreGxablFnWlhobFkzVjBhVzl1SUcxdlpHVnpMZ0JVWlhOelpXeHNZWFJwYjI0Z1pYaGxZM1YwYVc5dUlHMXZaR1ZzSUdWdWRISjVJSEJ2YVc1MGN5QmpZVzRnYzNCbFkybG1lU0JoZENCdGIzTjBJRzl1WlNCdlppQlVjbWxoYm1kc1pYTXNJRkYxWVdSeklHOXlJRWx6YjJ4cGJtVnpJR1Y0WldOMWRHbHZiaUJ0YjJSbGN5NEFSMlZ2YldWMGNua2daWGhsWTNWMGFXOXVJRzF2WkdWc0lHVnVkSEo1SUhCdmFXNTBjeUJ0ZFhOMElITndaV05wWm5rZ1pYaGhZM1JzZVNCdmJtVWdiMllnVDNWMGNIVjBVRzlwYm5SekxDQlBkWFJ3ZFhSTWFXNWxVM1J5YVhBZ2IzSWdUM1YwY0hWMFZISnBZVzVuYkdWVGRISnBjQ0JsZUdWamRYUnBiMjRnYlc5a1pYTXVBRlJsYzNObGJHeGhkR2x2YmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnWlc1MGNua2djRzlwYm5SeklHTmhiaUJ6Y0dWamFXWjVJR0YwSUcxdmMzUWdiMjVsSUc5bUlGTndZV05wYm1kRmNYVmhiQ3dnVTNCaFkybHVaMFp5WVdOMGFXOXVZV3hQWkdRZ2IzSWdVM0JoWTJsdVowWnlZV04wYVc5dVlXeEZkbVZ1SUdWNFpXTjFkR2x2YmlCdGIyUmxjeTRBUm5KaFoyMWxiblFnWlhobFkzVjBhVzl1SUcxdlpHVnNJR1Z1ZEhKNUlIQnZhVzUwY3lCallXNGdjM0JsWTJsbWVTQmhkQ0J0YjNOMElHOXVaU0J2WmlCRVpYQjBhRWR5WldGMFpYSXNJRVJsY0hSb1RHVnpjeUJ2Y2lCRVpYQjBhRlZ1WTJoaGJtZGxaQ0JsZUdWamRYUnBiMjRnYlc5a1pYTXVBRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQmxiblJ5ZVNCd2IybHVkSE1nWTJGdUlITndaV05wWm5rZ1lYUWdiVzl6ZENCdmJtVWdiMllnVTNSbGJtTnBiRkpsWmxWdVkyaGhibWRsWkVaeWIyNTBRVTFFTENCVGRHVnVZMmxzVW1WbVRHVnpjMFp5YjI1MFFVMUVJRzl5SUZOMFpXNWphV3hTWldaSGNtVmhkR1Z5Um5KdmJuUkJUVVFnWlhobFkzVjBhVzl1SUcxdlpHVnpMZ0JHY21GbmJXVnVkQ0JsZUdWamRYUnBiMjRnYlc5a1pXd2daVzUwY25rZ2NHOXBiblJ6SUdOaGJpQnpjR1ZqYVdaNUlHRjBJRzF2YzNRZ2IyNWxJRzltSUZOMFpXNWphV3hTWldaVmJtTm9ZVzVuWldSQ1lXTnJRVTFFTENCVGRHVnVZMmxzVW1WbVRHVnpjMEpoWTJ0QlRVUWdiM0lnVTNSbGJtTnBiRkpsWmtkeVpXRjBaWEpDWVdOclFVMUVJR1Y0WldOMWRHbHZiaUJ0YjJSbGN5NEFUV1Z6YUVWWVZDQmxlR1ZqZFhScGIyNGdiVzlrWld3Z1pXNTBjbmtnY0c5cGJuUnpJRzExYzNRZ2MzQmxZMmxtZVNCaWIzUm9JRTkxZEhCMWRGQnlhVzFwZEdsMlpYTkZXRlFnWVc1a0lFOTFkSEIxZEZabGNuUnBZMlZ6SUVWNFpXTjFkR2x2YmlCTmIyUmxjeTRBVFdWemFFVllWQ0JsZUdWamRYUnBiMjRnYlc5a1pXd2daVzUwY25rZ2NHOXBiblJ6SUcxMWMzUWdjM0JsWTJsbWVTQmxlR0ZqZEd4NUlHOXVaU0J2WmlCUGRYUndkWFJRYjJsdWRITXNJRTkxZEhCMWRFeHBibVZ6UlZoVUxDQnZjaUJQZFhSd2RYUlVjbWxoYm1kc1pYTkZXRlFnUlhobFkzVjBhVzl1SUUxdlpHVnpMZ0FnZDI5eVpITXVBRTl3UlhobFkzVjBhVzl1VFc5a1pTQnBjeUJ2Ym14NUlIWmhiR2xrSUhkb1pXNGdkR2hsSUUxdlpHVWdiM0JsY21GdVpDQnBjeUJoYmlCbGVHVmpkWFJwYjI0Z2JXOWtaU0IwYUdGMElIUmhhMlZ6SUc1dklFVjRkSEpoSUU5d1pYSmhibVJ6TENCdmNpQjBZV3RsY3lCRmVIUnlZU0JQY0dWeVlXNWtjeUIwYUdGMElHRnlaU0J1YjNRZ2FXUWdiM0JsY21GdVpITXVBRTl3UlhobFkzVjBhVzl1VFc5a1pVbGtJR2x6SUc5dWJIa2dkbUZzYVdRZ2QyaGxiaUIwYUdVZ1RXOWtaU0J2Y0dWeVlXNWtJR2x6SUdGdUlHVjRaV04xZEdsdmJpQnRiMlJsSUhSb1lYUWdkR0ZyWlhNZ1JYaDBjbUVnVDNCbGNtRnVaSE1nZEdoaGRDQmhjbVVnYVdRZ2IzQmxjbUZ1WkhNdUFFbEVJRzkyWlhKbWJHOTNMaUJVY25rZ2NuVnVibWx1WnlCamIyMXdZV04wTFdsa2N5NEFJR2x6SUc1dmRDQmhiaUJwYm5RZ2RtVmpkRzl5TGdBZ2FYTWdibTkwSUdFZ1pteHZZWFFnZG1WamRHOXlMZ0JEYjJ4MWJXNXpJR2x1SUdFZ2JXRjBjbWw0SUcxMWMzUWdZbVVnYjJZZ2RIbHdaU0IyWldOMGIzSXVBRlJvWlNCMGVYQmxJRzltSUZabFkzUnZjaUF5SUcxMWMzUWdZbVVnVDNCVWVYQmxWbVZqZEc5eUxnQlVhR1VnZEhsd1pTQnZaaUJXWldOMGIzSWdNU0J0ZFhOMElHSmxJRTl3Vkhsd1pWWmxZM1J2Y2k0QUxpQlVhR2x6SUcxaGVTQmlaU0JoSUdKMVp5QnBiaUIwYUdVZ2RtRnNhV1JoZEc5eUxnQTZJR1Y0Y0dWamRHVmtJRUZzYVdGelpXUWdiM0lnVW1WemRISnBZM1FnWm05eUlGQm9lWE5wWTJGc1UzUnZjbUZuWlVKMVptWmxjaUJ3YjJsdWRHVnlMZ0E2SUdOaGJpZDBJSE53WldOcFpua2dZbTkwYUNCQmJHbGhjMlZrSUdGdVpDQlNaWE4wY21samRDQm1iM0lnVUdoNWMybGpZV3hUZEc5eVlXZGxRblZtWm1WeUlIQnZhVzUwWlhJdUFEb2daWGh3WldOMFpXUWdRV3hwWVhObFpGQnZhVzUwWlhJZ2IzSWdVbVZ6ZEhKcFkzUlFiMmx1ZEdWeUlHWnZjaUJRYUhsemFXTmhiRk4wYjNKaFoyVkNkV1ptWlhJZ2NHOXBiblJsY2k0QU9pQmpZVzRuZENCemNHVmphV1o1SUdKdmRHZ2dRV3hwWVhObFpGQnZhVzUwWlhJZ1lXNWtJRkpsYzNSeWFXTjBVRzlwYm5SbGNpQm1iM0lnVUdoNWMybGpZV3hUZEc5eVlXZGxRblZtWm1WeUlIQnZhVzUwWlhJdUFDQnBjeUJ1YjNRZ1lTQnNiMmRwWTJGc0lIQnZhVzUwWlhJdUFDQmpZVzV1YjNRZ1ltVWdZU0IyYjJsa0lIQnZhVzUwWlhJdUFDQnBjeUJ1YjNRZ1lTQndiMmx1ZEdWeUxnQWdhVzV6ZEhKMVkzUnBiMjRnYlhWemRDQmlaU0JoSUhCdmFXNTBaWEl1QUNCbGVIUmxibk5wYjI0Z2NtVnhkV2x5WlhNZ1UxQkpVaTFXSUhabGNuTnBiMjRnTVM0MElHOXlJR3hoZEdWeUxnQWdSV2wwYUdWeUlHSnZkR2dnU0dsdWRDQmhibVFnUW1sMGN5QnphRzkxYkdRZ1ltVWdjSEp2ZG1sa1pXUWdiM0lnYm1WcGRHaGxjaTRBSUcxMWMzUWdZbVVnYjJZZ2RIbHdaU0JwYm5SbFoyVnlMZ0JvWVhNZ2MzUnZjbUZuWlNCamJHRnpjeUJUZEc5eVlXZGxRblZtWm1WeUlHOXlJRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2k0QVlTQnpkRzl5WVdkbElHTnNZWE56SUc5bUlGQm9lWE5wWTJGc1UzUnZjbUZuWlVKMVptWmxjaTRBSUdseklHNXZkQ0JYYjNKclozSnZkWEFnYjNJZ1UzUnZjbUZuWlVKMVptWmxjaTRBS1NCallXNGdiMjVzZVNCaVpTQm1iM0p0WldRZ1ltVjBkMlZsYmlCaElHSnNiMk5ySUdGdVpDQmhJR3h2YjNBZ2FHVmhaR1Z5TGdCSmJuWmhiR2xrSUZOUVNWSXRWaUJvWldGa1pYSXVBRk53WldOcFlXeHBlbUYwYVc5dUlHTnZibk4wWVc1MElHMTFjM1FnWW1VZ1lXNGdhVzUwWldkbGNpQnZjaUJtYkc5aGRHbHVaeTF3YjJsdWRDQnVkVzFpWlhJdUFFbHVkbUZzYVdRZ1UxQkpVaTFXSUcxaFoybGpJRzUxYldKbGNpNEFRMjl1YzJsa1pYSWdkWE5wYm1jZ2RHaGxJRUJ6YVhwbElHRjBkSEpwWW5WMFpTQnZiaUIwYUdVZ2JHRnpkQ0J6ZEhKMVkzUWdiV1Z0WW1WeUxnQWdZMjl0Y0c5dVpXNTBjeUJoY21VZ2JtOTBJR2x1ZENCelkyRnNZWEl1QUNCcGN5QnViM1FnWVc0Z2FXNTBJSE5qWVd4aGNpNEFJR052YlhCdmJtVnVkSE1nWVhKbElHNXZkQ0JtYkc5aGRDQnpZMkZzWVhJdUFDQnBjeUJ1YjNRZ1lTQm1iRzloZENCelkyRnNZWEl1QUNCcGN5QnViM1FnWVNCaWIyOXNJSE5qWVd4aGNpNEFSWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdZVzRnZFc1emFXZHVaV1FnYVc1MFpXZGxjaUIwZVhCbElITmpZV3hoY2k0QUlHbHpJRzV2ZENCaElHUmxZMjl5WVhScGIyNGdaM0p2ZFhBdUFITWdablZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlJR052ZFc1MElHbHpJRzV2ZENCNlpYSnZMZ0FnWTJGdWJtOTBJR0psSUdFZ1kyOXVjM1JoYm5RZ2VtVnlieTRBVG05dVUyVnRZVzUwYVdNZ1pYaDBaVzVrWldRZ2FXNXpkSEoxWTNScGIyNGdjMlYwY3lCallXNXViM1FnWW1VZ1pHVmpiR0Z5WldRZ2QybDBhRzkxZENCVFVGWmZTMGhTWDI1dmJsOXpaVzFoYm5ScFkxOXBibVp2TGdCd2IybHVkR1Z5SUdSbFptbHVhWFJwYjI0dUFGVnVhR0Z1Wkd4bFpDQnBibk4wSUhSNWNHVWdLRzl3WTI5a1pUb2dKV1FwSUdadmRXNWtJRzkxZEhOcFpHVWdablZ1WTNScGIyNGdaR1ZtYVc1cGRHbHZiaTRBVFdsemMybHVaeUJtZFc1amRHbHZiaUIwZVhCbElHUmxabWx1YVhScGIyNHVBRVoxYm1OMGFXOXVJSEJoY21GdFpYUmxjaUJqWVc1dWIzUWdZbVVnZEdobElHWnBjbk4wSUdsdWMzUnlkV04wYVc5dUxnQWdZbVZqWVhWelpTQnBkQ0JwY3lCMFlYSm5aWFJsWkNCaWVTQmhiaUJQY0VWdWRISjVVRzlwYm5RZ2FXNXpkSEoxWTNScGIyNHVBQ0J0ZFhOMElHSmxJR0VnWW05dmJHVmhiaUJqYjI1emRHRnVkQ0JwYm5OMGNuVmpkR2x2Ymk0QVEyeDFjM1JsY2xOcGVtVWdiWFZ6ZENCamIyMWxJR1p5YjIwZ1lTQmpiMjV6ZEdGdWRDQnBibk4wY25WamRHbHZiaTRBS1NCdFlYa2dibTkwSUdKbElIUmhjbWRsZEdWa0lHSjVJR0p2ZEdnZ1lXNGdUM0JGYm5SeWVWQnZhVzUwSUdsdWMzUnlkV04wYVc5dUlHRnVaQ0JoYmlCUGNFWjFibU4wYVc5dVEyRnNiQ0JwYm5OMGNuVmpkR2x2Ymk0QVRXbHpjMmx1WnlCeVpYRjFhWEpsWkNCUGNFMWxiVzl5ZVUxdlpHVnNJR2x1YzNSeWRXTjBhVzl1TGdCQklHSnNiMk5ySUcxMWMzUWdaVzVrSUhkcGRHZ2dZU0JpY21GdVkyZ2dhVzV6ZEhKMVkzUnBiMjR1QUUxcGMzTnBibWNnY21WeGRXbHlaV1FnVDNCVFlXMXdiR1Z5U1cxaFoyVkJaR1J5WlhOemFXNW5UVzlrWlU1V0lHbHVjM1J5ZFdOMGFXOXVMZ0JHZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElnYlhWemRDQmlaU0J3Y21WalpXUmxaQ0JpZVNCaElHWjFibU4wYVc5dUxnQWdhWE1nYm05MElHRWdablZ1WTNScGIyNHVBRTV2YmxObGJXRnVkR2xqTGtOc2MzQjJVbVZtYkdWamRHbHZiaTRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJVWlhOelRHVjJaV3hQZFhSbGNpOVVaWE56VEdWMlpXeEpibTVsY2lCMGJ5QmlaU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQlBkWFJ3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwWmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnYVhNZ1ZHVnpjMlZzYkdGMGFXOXVSWFpoYkhWaGRHbHZiaTRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJDZFdsc2RFbHVJRkJ5YVcxcGRHbDJaVWxrSUhSdklHSmxJSFZ6WldRZ1ptOXlJSFpoY21saFlteGxjeUIzYVhSb0lFOTFkSEIxZENCemRHOXlZV2RsSUdOc1lYTnpJR2xtSUdWNFpXTjFkR2x2YmlCdGIyUmxiQ0JwY3lCVVpYTnpaV3hzWVhScGIyNUZkbUZzZFdGMGFXOXVMZ0JKYm5SbGNtWmhZMlVnYzNSeWRXTjBJR2hoY3lCdWJ5QkNiRzlqYXlCa1pXTnZjbUYwYVc5dUlHSjFkQ0JvWVhNZ1FuVnBiSFJKYmlCdFpXMWlaWEp6TGlCTWIyTmhkR2x2YmlCa1pXTnZjbUYwYVc5dWN5QnRkWE4wSUdKbElIVnpaV1FnYjI0Z1pXRmphQ0J0WlcxaVpYSWdiMllnVDNCV1lYSnBZV0pzWlNCM2FYUm9JR0VnYzNSeWRXTjBkWEpsSUhSNWNHVWdkR2hoZENCcGN5QmhJR0pzYjJOcklHNXZkQ0JrWldOdmNtRjBaV1FnZDJsMGFDQk1iMk5oZEdsdmJpNEFkR2hsSUdOaGMyVWdjMlZzWldOMGIzSWdkbUZzZFdWeklHMTFjM1FnYUdGMlpTQjBhR1VnYzJGdFpTQjBlWEJsSUdGeklIUm9aU0J6Wld4bFkzUnZjaUJsZUhCeVpYTnphVzl1TGdCSmJpQldkV3hyWVc0NklGUm9aU0JQY0VkeWIzVndUbTl1Vlc1cFptOXliVUpoYkd4dmRFSnBkRU52ZFc1MElHZHliM1Z3SUc5d1pYSmhkR2x2YmlCdGRYTjBJR0psSUc5dWJIazZJRkpsWkhWalpTd2dTVzVqYkhWemFYWmxVMk5oYml3Z2IzSWdSWGhqYkhWemFYWmxVMk5oYmk0QUlHRjBJRzFwYm1sdGRXMHVBSFZ1Y21WamIyZHVhWHBsWkNCa2FXRm5ibTl6ZEdsaklISjFiR1VnSjJOb2NtOXRhWFZ0TGdCcFppQnBkQ0JvWVhNZ2MzUnZjbUZuWlNCamJHRnpjeUJWYm1sbWIzSnRMZ0JUZEc5eVlXZGxRblZtWm1WeUxDQlFhSGx6YVdOaGJGTjBiM0poWjJWQ2RXWm1aWElzSUc5eUlGVnVhV1p2Y20wdUFGWjFiR3RoYmlCemNHVmpJR1J2WlhOdUozUWdZV3hzYjNjZ1FuVnBiSFJKYmlCUWNtbHRhWFJwZG1WSlpDQjBieUJpWlNCMWMyVmtJR1p2Y2lCMllYSnBZV0pzWlhNZ2QybDBhQ0JQZFhSd2RYUWdjM1J2Y21GblpTQmpiR0Z6Y3lCcFppQmxlR1ZqZFhScGIyNGdiVzlrWld3Z2FYTWdWR1Z6YzJWc2JHRjBhVzl1UTI5dWRISnZiQzRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJVWlhOelRHVjJaV3hQZFhSbGNpOVVaWE56VEdWMlpXeEpibTVsY2lCMGJ5QmlaU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQkpibkIxZENCemRHOXlZV2RsSUdOc1lYTnpJR2xtSUdWNFpXTjFkR2x2YmlCdGIyUmxiQ0JwY3lCVVpYTnpaV3hzWVhScGIyNURiMjUwY205c0xnQWdhWE1nWW1GdWJtVmtJSGRvWlc0Z2RYTnBibWNnZEdobElGWjFiR3RoYmlCdFpXMXZjbmtnYlc5a1pXd3VBRk5sY1hWbGJuUnBZV3hzZVVOdmJuTnBjM1JsYm5RZ2JXVnRiM0o1SUhObGJXRnVkR2xqY3lCallXNXViM1FnWW1VZ2RYTmxaQ0IzYVhSb0lIUm9aU0JXZFd4cllXNUxTRklnYldWdGIzSjVJRzF2WkdWc0xnQkZlR1ZqZFhScGIyNGdiVzlrWlNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dkR2hsSUVkbGIyMWxkSEo1SUdWNFpXTjFkR2x2YmlCdGIyUmxiQzRBUlhobFkzVjBhVzl1SUcxdlpHVWdZMkZ1SUc5dWJIa2dZbVVnZFhObFpDQjNhWFJvSUhSb1pTQkdjbUZuYldWdWRDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUFFVjRaV04xZEdsdmJpQnRiMlJsSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQmhJRWRsYjIxbGRISjVJRzl5SUhSbGMzTmxiR3hoZEdsdmJpQmxlR1ZqZFhScGIyNGdiVzlrWld3dUFFVjRaV04xZEdsdmJpQnRiMlJsSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQmhJSFJsYzNObGJHeGhkR2x2YmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3d1QUVWNFpXTjFkR2x2YmlCdGIyUmxJR05oYmlCdmJteDVJR0psSUhWelpXUWdkMmwwYUNCMGFHVWdTMlZ5Ym1Wc0lHVjRaV04xZEdsdmJpQnRiMlJsYkM0QVJYaGxZM1YwYVc5dUlHMXZaR1VnWTJGdUlHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lHRWdTMlZ5Ym1Wc0lHOXlJRWRNUTI5dGNIVjBaU0JsZUdWamRYUnBiMjRnYlc5a1pXd3VBRVY0WldOMWRHbHZiaUJ0YjJSbElHTmhiaUJ2Ym14NUlHSmxJSFZ6WldRZ2QybDBhQ0IwYUdVZ1RXVnphRVZZVkNCdmNpQk5aWE5vVGxZZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzTGdCRmVHVmpkWFJwYjI0Z2JXOWtaU0JqWVc0Z2IyNXNlU0JpWlNCMWMyVmtJSGRwZEdnZ1lTQkxaWEp1Wld3c0lFZE1RMjl0Y0hWMFpTd2dUV1Z6YUU1V0xDQk5aWE5vUlZoVUxDQlVZWE5yVGxZZ2IzSWdWR0Z6YTBWWVZDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUFFVjRaV04xZEdsdmJpQnRiMlJsSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnZDJsMGFDQjBhR1VnUjJWdmJXVjBjbmtnVFdWemFFNVdJRzl5SUUxbGMyaEZXRlFnWlhobFkzVjBhVzl1SUcxdlpHVnNMZ0JGZUdWamRYUnBiMjRnYlc5a1pTQmpZVzRnYjI1c2VTQmlaU0IxYzJWa0lIZHBkR2dnWVNCSFpXOXRaWFJ5ZVN3Z2RHVnpjMlZzYkdGMGFXOXVMQ0JOWlhOb1RsWWdiM0lnVFdWemFFVllWQ0JsZUdWamRYUnBiMjRnYlc5a1pXd3VBQ0JwY3lCaElIQnZhVzUwWlhJc0lIZG9hV05vSUdseklHbHVkbUZzYVdRZ2FXNGdkR2hsSUV4dloybGpZV3dnWVdSa2NtVnpjMmx1WnlCdGIyUmxiQzRBVFc5a2RXeGxJR05oYmlkMElHMXBlQ0JOWlhOb1JWaFVMMVJoYzJ0RldGUWdkMmwwYUNCTlpYTm9UbFl2VkdGemEwNVdJRVY0WldOMWRHbHZiaUJOYjJSbGJDNEFJR2x6SUc1dmRDQmhiaUJQY0V4aFltVnNMZ0JCYkd3Z1QzQldZWEpwWVdKc1pTQnBibk4wY25WamRHbHZibk1nYVc0Z1lTQm1kVzVqZEdsdmJpQnRkWE4wSUdKbElIUm9aU0JtYVhKemRDQnBibk4wY25WamRHbHZibk1nYVc0Z2RHaGxJR1pwY25OMElHSnNiMk5yTGdCcGJuTjBjblZqZEdsdmJpQnBiaUJwZEhNZ1lteHZZMnN1QUcxMWMzUWdZbVVnWkdWamIzSmhkR1ZrSUhkcGRHZ2dRbXh2WTJzZ2IzSWdRblZtWm1WeVFteHZZMnN1QUVKdmRHZ2dZbkpoYm1Ob1pYTWdiMllnYVdZZ2FXNXphV1JsSUdOdmJuUnBiblZwYm1jZ1luSmxZV3N1QUhNZ1lYSnlZWGtnYkdWdVozUm9MZ0FnWkc4Z2JtOTBJRzFoZEdOb0xnQWdhWE1nYm05MElHRnVJRTl3VTNSeWFXNW5MZ0JUZEc5d2NHbHVaeTRBSUdseklHNXZkQ0JoSUdOdmJuTjBZVzUwSUc5eUlIVnVaR1ZtTGdBZ1kyRnVibTkwSUdoaGRtVWdZU0J1ZFd4c0lIWmhiSFZsTGdBZ1pHOWxjeUJ1YjNRZ2NtVndjbVZ6Wlc1MElHRWdkbUZzZFdVdUFGSmxjM1ZzZENCVWVYQmxJRzExYzNRZ1ltVWdkR2hsSUhOaGJXVWdZWE1nZEdobElIUjVjR1VnYjJZZ1ZtRnNkV1V1QUVOdmJuTnBaR1Z5SUhkeVlYQndhVzVuSUhSb1pTQmxiR1Z0Wlc1MElIUjVjR1VnYVc0Z1lTQnpkSEoxWTNRZ1lXNWtJSFZ6YVc1bklIUm9aU0JBYzJsNlpTQmhkSFJ5YVdKMWRHVXVBQ0JwY3lCeVpYTmxjblpsWkNCbWIzSWdablYwZFhKbElIVnpaUzRBUmxCU2IzVnVaR2x1WjAxdlpHVWdaR1ZqYjNKaGRHbHZiaUJqWVc0Z1ltVWdZWEJ3YkdsbFpDQnZibXg1SUhSdklIUm9aU0JQWW1wbFkzUWdiM0JsY21GdVpDQnZaaUJoYmlCUGNGTjBiM0psTGdCTllXdGxVRzlwYm5SbGNsWnBjMmxpYkdWTFNGSWdZMkZ1Ym05MElHSmxJSFZ6WldRZ2QybDBhQ0JQY0ZOMGIzSmxMZ0FnYVhNZ2JtOTBJR0VnWTI5dmNHVnlZWFJwZG1VZ2JXRjBjbWw0SUhSNWNHVXVBSE1nWTI5dGNHOXVaVzUwSUhSNWNHVXVBSE1nYldGMGNtbDRJR052YkhWdGJpQmpiMjF3YjI1bGJuUWdkSGx3WlM0QWN5QmhjbkpoZVNCbGJHVnRaVzUwSUhSNWNHVXVBSE1nZG1WamRHOXlJR1ZzWlcxbGJuUWdkSGx3WlM0QUlHbHpJRzV2ZENCaElITmpZV3hoY2lCamIyNXpkR0Z1ZENCMGVYQmxMZ0J2Y0dWeVlXNWtJRzltSUhSb1pTQnlaWE4xYkhRZ2RIbHdaUzRBUVhSMFpXMXdkR1ZrSUhSdklHZGxkQ0IxYm1SbGNteDVhVzVuSUdSaGRHRWdkSGx3WlNCMmFXRWdiV1Z0WW1WeUlHbHVaR1Y0SUdadmNpQnViMjR0YzNSeWRXTjBJSFI1Y0dVdUFDQmtaV052Y21GMGFXOXVJRzl1SUdFZ2JtOXVMWE4wY25WamRDQjBlWEJsTGdBZ1pHbGtJRzV2ZENCbWFXNWtJR0Z1SUcxbGJXSmxjaUJwYm1SbGVDQjBieUJuWlhRZ2RXNWtaWEpzZVdsdVp5QmtZWFJoSUhSNWNHVWdabTl5SUhOMGNuVmpkQ0IwZVhCbExnQWdhWE1nYm05MElHRWdjM1J5ZFdOMElIUjVjR1V1QUhNZ2RIbHdaUzRBY3lCVWVYQmxJRzExYzNRZ1ltVWdZU0J6WTJGc1lYSWdiM0lnZG1WamRHOXlJSFI1Y0dVdUFGQnZhVzUwWlhJZ2RIbHdaU0JwYmlCUGNGUjVjR1ZHYjNKM1lYSmtVRzlwYm5SbGNpQnBjeUJ1YjNRZ1lTQndiMmx1ZEdWeUlIUjVjR1V1QUhNZ2NHRnlZVzFsZEdWeUlIUjVjR1V1QUNCcGN5QnViM1FnWVNCellXMXdiR1Z5SUhSNWNHVXVBQ0JwY3lCdWIzUWdZU0JqYjI1emRHRnVkQ0JwYm5SbFoyVnlJSFI1Y0dVdUFDQnBjeUJ1YjNRZ1lTQmpiMjV6ZEdGdWRDQnBibk4wY25WamRHbHZiaUIzYVhSb0lITmpZV3hoY2lCcGJuUmxaMlZ5SUhSNWNHVXVBQ0J0ZFhOMElHSmxJR0VnYzJOaGJHRnlJR2x1ZEdWblpYSWdkSGx3WlM0QWN5QnRaVzFpWlhJZ2RIbHdaUzRBSUdseklHNXZkQ0JoSUhOallXeGhjaUIwZVhCbExnQnpJSFI1Y0dVZ1pHOWxjeUJ1YjNRZ2JXRjBZMmdnVDNCR2RXNWpkR2x2YmlkeklISmxkSFZ5YmlCMGVYQmxMZ0FnYVhNZ2JtOTBJR0VnWm5WdVkzUnBiMjRnZEhsd1pTNEFjeUJ0WVhSeWFYZ2dZMjlzZFcxdUlIUjVjR1V1QUVWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdFZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCdlppQm1iRzloZEdsdVp5MXdiMmx1ZEN3Z2FXNTBaV2RsY2lCdmNpQmliMjlzWldGdUlIUjVjR1V1QUNCcGN5QnViM1FnWVNCaWIyOXNaV0Z1SUhSNWNHVXVBQ0JwY3lCdWIzUWdZU0J6WTJGc1lYSWdiblZ0WlhKcFkyRnNJSFI1Y0dVdUFDd2dUM0JVZVhCbFUzUnlkV04wSUcxMWMzUWdibTkwSUdOdmJuUmhhVzRnWVc0Z2IzQmhjWFZsSUhSNWNHVXVBQ0JwY3lCdWIzUWdZU0JqYjIxd2IzTnBkR1VnZEhsd1pTNEFLU0J0WVhrZ2JtOTBJR0psSUdSbFkyOXlZWFJsWkNCM2FYUm9JRWx0Y0c5eWRDQk1hVzVyWVdkbElIUjVjR1V1QUNrZ2JYVnpkQ0JvWVhabElHRWdUR2x1YTJGblpVRjBkSEpwWW5WMFpYTWdaR1ZqYjNKaGRHbHZiaUIzYVhSb0lIUm9aU0JKYlhCdmNuUWdUR2x1YTJGblpTQjBlWEJsTGdBZ2FYTWdZU0IyYjJsa0lIUjVjR1V1QUZOMGNuVmpkSFZ5WlhNZ1kyRnVibTkwSUdOdmJuUmhhVzRnWVNCMmIybGtJSFI1Y0dVdUFDQnBjeUJ1YjNRZ1lTQjBlWEJsTGdCVWFHVWdRMjl0Y0c5dVpXNTBJRlI1Y0dVZ2IyWWdWbVZqZEc5eUlESWdiWFZ6ZENCaVpTQjBhR1VnYzJGdFpTQmhjeUJTWlhOMWJIUlVlWEJsTGdCVWFHVWdRMjl0Y0c5dVpXNTBJRlI1Y0dVZ2IyWWdWbVZqZEc5eUlERWdiWFZ6ZENCaVpTQjBhR1VnYzJGdFpTQmhjeUJTWlhOMWJIUlVlWEJsTGdCQklHMXZaSFZzWlMxelkyOXdaU0JQY0ZaaGNtbGhZbXhsSUhkcGRHZ2dhVzVwZEdsaGJHbDZZWFJwYjI0Z2RtRnNkV1VnWTJGdWJtOTBJR0psSUcxaGNtdGxaQ0IzYVhSb0lIUm9aU0JKYlhCdmNuUWdUR2x1YTJGblpTQlVlWEJsTGdBZ1kyOTFiblFnYlhWemRDQmlaU0J2Ym1VdUFFMXBjM05wYm1jZ2JXOWtkV3hsTGdCTmFYTnphVzVuSUU5d1JuVnVZM1JwYjI1RmJtUWdZWFFnWlc1a0lHOW1JRzF2WkhWc1pTNEFJR2x6SUc1dmRDQmhJR052Ym5OMFlXNTBJRzl5SUcxdlpIVnNaUzF6WTI5d1pTQjJZWEpwWVdKc1pTNEFVR2g1YzJsallXeFRkRzl5WVdkbFFuVm1abVZ5SUcxMWMzUWdibTkwSUdKbElIVnpaV1FnZDJsMGFDQlBjRlpoY21saFlteGxMZ0JGZUhCbFkzUmxaQ0JKYldGblpTQjBieUJpWlNCdlppQjBlWEJsSUU5d1ZIbHdaVWx0WVdkbExnQkZlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCaVpTQlBjRlI1Y0dWVFlXMXdiR1ZrU1cxaFoyVXVBRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQmxiblJ5ZVNCd2IybHVkSE1nY21WeGRXbHlaU0JsYVhSb1pYSWdZVzRnVDNKcFoybHVWWEJ3WlhKTVpXWjBJRzl5SUU5eWFXZHBia3h2ZDJWeVRHVm1kQ0JsZUdWamRYUnBiMjRnYlc5a1pTNEFSbkpoWjIxbGJuUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0lHVnVkSEo1SUhCdmFXNTBjeUJqWVc0Z2MzQmxZMmxtZVNCaGRDQnRiM04wSUc5dVpTQm1jbUZuYldWdWRDQnphR0ZrWlhJZ2FXNTBaWEpzYjJOcklHVjRaV04xZEdsdmJpQnRiMlJsTGdCUGNFSmxaMmx1U1c1MmIyTmhkR2x2YmtsdWRHVnliRzlqYTBWWVZDOVBjRVZ1WkVsdWRtOWpZWFJwYjI1SmJuUmxjbXh2WTJ0RldGUWdjbVZ4ZFdseVpTQmhJR1p5WVdkdFpXNTBJSE5vWVdSbGNpQnBiblJsY214dlkyc2daWGhsWTNWMGFXOXVJRzF2WkdVdUFESWdSVzUwY25rZ2NHOXBiblJ6SUdOaGJtNXZkQ0J6YUdGeVpTQjBhR1VnYzJGdFpTQnVZVzFsSUdGdVpDQkZlR1ZqZFhScGIyNU5iMlJsTGdCUGNFMWxiVzl5ZVUxdlpHVnNJSE5vYjNWc1pDQnZibXg1SUdKbElIQnliM1pwWkdWa0lHOXVZMlV1QUhNZ1puVnVZM1JwYjI0Z2NtVjBkWEp1SUhSNWNHVWdhWE1nYm05MElIWnZhV1F1QUhNZ2RIbHdaU0JwY3lCMmIybGtMZ0FnYVhNZ2JXbHpjMmx1WnlCdmNpQjJiMmxrTGdBZ1kyRnVibTkwSUdKbElFOXdWSGx3WlZadmFXUXVBQ0J0ZFd4MGFYQnNaU0IwYVcxbGN5QnBjeUJ1YjNRZ1lXeHNiM2RsWkM0QVZHaGxJRk5wWjI1bFpHNWxjM01nYVc0Z1QzQlVlWEJsU1c1MElHMTFjM1FnWVd4M1lYbHpJR0psSURBZ2QyaGxiaUJMWlhKdVpXd2dZMkZ3WVdKcGJHbDBlU0JwY3lCMWMyVmtMZ0JXZFd4cllXNU5aVzF2Y25sTmIyUmxiRXRJVWlCallYQmhZbWxzYVhSNUlHMTFjM1FnYjI1c2VTQmlaU0J6Y0dWamFXWnBaV1FnYVdZZ2RHaGxJRloxYkd0aGJrdElVaUJ0WlcxdmNua2diVzlrWld3Z2FYTWdkWE5sWkM0QVRtOGdUM0JGYm5SeWVWQnZhVzUwSUdsdWMzUnlkV04wYVc5dUlIZGhjeUJtYjNWdVpDNGdWR2hwY3lCcGN5QnZibXg1SUdGc2JHOTNaV1FnYVdZZ2RHaGxJRXhwYm10aFoyVWdZMkZ3WVdKcGJHbDBlU0JwY3lCaVpXbHVaeUIxYzJWa0xnQkpiaUIwYUdVZ1ZuVnNhMkZ1SUdWdWRtbHliMjV0Wlc1MExDQjBhR1VnVDNKcFoybHVURzkzWlhKTVpXWjBJR1Y0WldOMWRHbHZiaUJ0YjJSbElHMTFjM1FnYm05MElHSmxJSFZ6WldRdUFFbHVJSFJvWlNCV2RXeHJZVzRnWlc1MmFYSnZibTFsYm5Rc0lIUm9aU0JRYVhobGJFTmxiblJsY2tsdWRHVm5aWElnWlhobFkzVjBhVzl1SUcxdlpHVWdiWFZ6ZENCdWIzUWdZbVVnZFhObFpDNEFWblZzYTJGdUlITndaV01nWkc5bGMyNG5kQ0JoYkd4dmR5QkNkV2xzZEVsdUlGWmxjblJsZUVsa0lIUnZJR0psSUhWelpXUXVBQ0J5WldGamFHVmtJRzV2YmkxamIyMXdiM05wZEdVZ2RIbHdaU0IzYUdsc1pTQnBibVJsZUdWeklITjBhV3hzSUhKbGJXRnBiaUIwYnlCaVpTQjBjbUYyWlhKelpXUXVBRkpsWVdOb1pXUWdibTl1TFdOdmJYQnZjMmwwWlNCMGVYQmxJSGRvYVd4bElHbHVaR1Y0WlhNZ2MzUnBiR3dnY21WdFlXbHVJSFJ2SUdKbElIUnlZWFpsY25ObFpDNEFPaUJHZFc1amRHbHZiaUJ6ZEc5eVlXZGxJR05zWVhOeklHWnZjbUpwWkdSbGJpQjNhR1Z1SUhSb1pTQlRhR0ZrWlhJZ1kyRndZV0pwYkdsMGVTQnBjeUJrWldOc1lYSmxaQzRBVEdWdVozUm9JR2x6SUc1dmRDQmtaV1pwYm1Wa0xnQkRiMjF3YjI1bGJuUWdkSGx3WlNCcGN5QnViM1FnWkdWbWFXNWxaQzRBUld4bGJXVnVkQ0IwZVhCbElHbHpJRzV2ZENCa1pXWnBibVZrTGdCU1pYTjFiSFFnZEhsd1pTQnBjeUJ1YjNRZ1pHVm1hVzVsWkM0QVEyOXNkVzF1SUhSNWNHVWdhWE1nYm05MElHUmxabWx1WldRdUFFMWxiVzl5ZVNCaFkyTmxjM05sY3lCM2FYUm9JRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2lCdGRYTjBJSFZ6WlNCQmJHbG5ibVZrTGdCTllXdGxVRzlwYm5SbGNsWnBjMmxpYkdWTFNGSWdhWE1nYzNCbFkybG1hV1ZrTGdCT2IyNVFjbWwyWVhSbFVHOXBiblJsY2t0SVVpQnRkWE4wSUdKbElITndaV05wWm1sbFpDQnBaaUJOWVd0bFVHOXBiblJsY2tGMllXbHNZV0pzWlV0SVVpQnBjeUJ6Y0dWamFXWnBaV1F1QUVsdUlIUm9aU0JXZFd4cllXNGdaVzUyYVhKdmJtMWxiblFzSUVkTVEyOXRjSFYwWlNCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnWlc1MGNua2djRzlwYm5SeklISmxjWFZwY21VZ1pXbDBhR1Z5SUhSb1pTQk1iMk5oYkZOcGVtVWdiM0lnVEc5allXeFRhWHBsU1dRZ1pYaGxZM1YwYVc5dUlHMXZaR1VnYjNJZ1lXNGdiMkpxWldOMElHUmxZMjl5WVhSbFpDQjNhWFJvSUZkdmNtdG5jbTkxY0ZOcGVtVWdiWFZ6ZENCaVpTQnpjR1ZqYVdacFpXUXVBRTFoZUdsdGRXMGdRMjl1ZEhKdmJDQkdiRzkzSUc1bGMzUnBibWNnWkdWd2RHZ2daWGhqWldWa1pXUXVBRTFoYTJWUWIybHVkR1Z5UVhaaGFXeGhZbXhsUzBoU0lHTmhibTV2ZENCaVpTQjFjMlZrSUhkcGRHZ2dUM0JNYjJGa0xnQWdkMjl5WkhNZ2FXNXpkR1ZoWkM0QVEyOXVjMmxrWlhJZ2RYTnBibWNnWVNCMlpXTjBiM0lnYjNJZ2MzUnlkV04wSUdGeklIUm9aU0JsYkdWdFpXNTBJSFI1Y0dVZ2FXNXpkR1ZoWkM0QVlHSnlaV0ZyWUNCdGRYTjBJRzV2ZENCaVpTQjFjMlZrSUhSdklHVjRhWFFnWm5KdmJTQmhJR052Ym5ScGJuVnBibWNnWW14dlkyc3VJRlZ6WlNCZ1luSmxZV3N0YVdaZ0lHbHVjM1JsWVdRdUFFTnZibk5wWkdWeUlIVnphVzVuSUdFZ2RtVmpOQ0JwYm5OMFpXRmtMZ0JPYjI1VFpXMWhiblJwWXk0QVJYaHdaV04wWldRZ1NXMWhaMlVnSjBScGJTY2djR0Z5WVcxbGRHVnlJSFJ2SUdKbElHNXZkQ0JUZFdKd1lYTnpSR0YwWVM0QVNXNGdWblZzYTJGdUxDQjBhR1VnUmxCU2IzVnVaR2x1WjAxdlpHVWdiVzlrWlNCdGRYTjBJRzl1YkhrZ1lua2dVbFJGSUc5eUlGSlVXaTRBSUcxMWMzUWdZbVVnVDNCVWVYQmxRMjl2Y0dWeVlYUnBkbVZOWVhSeWFYaE9WaTRBVm5Wc2EyRnVJSE53WldNZ1pHOWxjMjRuZENCaGJHeHZkeUJDZFdsc2RFbHVJRkJ2YzJsMGFXOXVJSFJ2SUdKbElIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUVsdWNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNZ2FXWWdaWGhsWTNWMGFXOXVJRzF2WkdWc0lHbHpJRTFsYzJoT1ZpNEFWblZzYTJGdUlITndaV01nWkc5bGMyNG5kQ0JoYkd4dmR5QkNkV2xzZEVsdUlFTnNhWEJFYVhOMFlXNWpaUzlEZFd4c1JHbHpkR0Z1WTJVZ2RHOGdZbVVnZFhObFpDQm1iM0lnZG1GeWFXRmliR1Z6SUhkcGRHZ2dTVzV3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwWmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnYVhNZ1RXVnphRTVXTGdBNklGWjFiR3RoYmlCemNHVmpJRzl1YkhrZ1lXeHNiM2R6SUhOMGIzSmhaMlVnWTJ4aGMzTmxjeUJtYjNJZ1lYUnZiV2xqSUhSdklHSmxPaUJWYm1sbWIzSnRMQ0JYYjNKclozSnZkWEFzSUVsdFlXZGxMQ0JUZEc5eVlXZGxRblZtWm1WeUxDQlFhSGx6YVdOaGJGTjBiM0poWjJWQ2RXWm1aWElnYjNJZ1ZHRnphMUJoZVd4dllXUlhiM0pyWjNKdmRYQkZXRlF1QUZaMWJHdGhiaUJ6Y0dWaklHUnZaWE51SjNRZ1lXeHNiM2NnUW5WcGJIUkpiaUJRYjNOcGRHbHZiaUIwYnlCaVpTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCSmJuQjFkQ0J6ZEc5eVlXZGxJR05zWVhOeklHbG1JR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQnBjeUJOWlhOb1JWaFVMZ0JXZFd4cllXNGdjM0JsWXlCa2IyVnpiaWQwSUdGc2JHOTNJRUoxYVd4MFNXNGdRMnhwY0VScGMzUmhibU5sTDBOMWJHeEVhWE4wWVc1alpTQjBieUJpWlNCMWMyVmtJR1p2Y2lCMllYSnBZV0pzWlhNZ2QybDBhQ0JKYm5CMWRDQnpkRzl5WVdkbElHTnNZWE56SUdsbUlHVjRaV04xZEdsdmJpQnRiMlJsYkNCcGN5Qk5aWE5vUlZoVUxnQldkV3hyWVc0Z2MzQmxZeUJrYjJWemJpZDBJR0ZzYkc5M0lFSjFhV3gwU1c0Z1RHRjVaWElnWVc1a0lGWnBaWGR3YjNKMFNXNWtaWGdnZEc4Z1ltVWdkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5QnBaaUJsZUdWamRYUnBiMjRnYlc5a1pXd2dhWE1nVm1WeWRHVjRMQ0JVWlhOelpXeHNZWFJwYjI1RmRtRnNkV0YwYVc5dUxDQkhaVzl0WlhSeWVTd2dUV1Z6YUU1V0lHOXlJRTFsYzJoRldGUXVBRloxYkd0aGJpQnpjR1ZqSUdSdlpYTnVKM1FnWVd4c2IzY2dRblZwYkhSSmJpQlFjbWx0YVhScGRtVkpaQ0IwYnlCaVpTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5QnBaaUJsZUdWamRYUnBiMjRnYlc5a1pXd2dhWE1nUVc1NVNHbDBTMGhTTGdCV2RXeHJZVzRnYzNCbFl5QmtiMlZ6YmlkMElHRnNiRzkzSUVKMWFXeDBTVzRnVUhKcGJXbDBhWFpsU1dRZ2RHOGdZbVVnZFhObFpDQm1iM0lnZG1GeWFXRmliR1Z6SUhkcGRHZ2dUM1YwY0hWMElITjBiM0poWjJVZ1kyeGhjM01nYVdZZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzSUdseklFTnNiM05sYzNSSWFYUkxTRkl1QUZaMWJHdGhiaUJ6Y0dWaklHUnZaWE51SjNRZ1lXeHNiM2NnUW5WcGJIUkpiaUJRY21sdGFYUnBkbVZKWkNCMGJ5QmlaU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQlBkWFJ3ZFhRZ2MzUnZjbUZuWlNCamJHRnpjeUJwWmlCbGVHVmpkWFJwYjI0Z2JXOWtaV3dnYVhNZ1NXNTBaWEp6WldOMGFXOXVTMGhTTGdCM2FHVnVJRVJwYlNCcGN5QmxhWFJvWlhJZ01VUWdiM0lnTWtRdUFFSmxhR0YyYVc5eUlHbHpJSFZ1WkdWbWFXNWxaQ0IxYm14bGMzTWdRMngxYzNSbGNsTnBlbVVnYVhNZ1lYUWdiR1ZoYzNRZ01TQmhibVFnWVNCd2IzZGxjaUJ2WmlBeUxnQWdaR1ZtWVhWc2RDQjJZV3gxWlNCdGRYTjBJR0psSUdGMElHeGxZWE4wSURFdUFDQmpZVzV1YjNRZ2FHRjJaU0IwYUdVZ2MybG5iaUJpYVhRZ2MyVjBJSFJ2SURFdUFDQnRkWE4wSUdKbElFOXdWSGx3WlVsdWRDQjNhWFJvSUhkcFpIUm9JRE15SUdGdVpDQnphV2R1WldSdVpYTnpJREF1QUVOc2RYTjBaWEpUYVhwbElHMTFjM1FnWW1VZ1lTQnpZMkZzWVhJZ2IyWWdhVzUwWldkbGNpQjBlWEJsTENCM2FHOXpaU0JUYVdkdVpXUnVaWE56SUc5d1pYSmhibVFnYVhNZ01DNEFSR1ZzZEdFZ2JYVnpkQ0JpWlNCaElITmpZV3hoY2lCdlppQnBiblJsWjJWeUlIUjVjR1VzSUhkb2IzTmxJRk5wWjI1bFpHNWxjM01nYjNCbGNtRnVaQ0JwY3lBd0xnQWdXekF1TGdCVGRHRnlkR2x1Wnk0dUxnQmhiSE52SUdKbElHUmxZMjl5WVhSbFpDQjNhWFJvSUdFZ0trSnBibVJwYm1jcUxnQW9aWGhqWlhCMElHWnZjaUJQY0V4cGJtVXNJSGRvYVdOb0lHTmhiaUJpWlNCdGFYaGxaQ0IzYVhSb0lFOXdVR2hwS1M0QUp5NEFMeThnTFMwZ2FXMXdiR2xqYVhRZ1ptbGxiR1FnWVd4cFoyNXRaVzUwSUhCaFpHUnBibWNnTFMwQUx5OGdMUzBnYVcxd2JHbGphWFFnYzNSeWRXTjBJSE5wZW1VZ2NHRmtaR2x1WnlBdExRQWdPaUIxTXpJc0FERndLd0FyS3dBcUFDaGxiWEIwZVNrQUlDaHZjaUJ5WlhGMWFYSmxjeUJsZUhSbGJuTnBiMjRnYjNJZ1kyRndZV0pwYkdsMGVTa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0J0WVhSZmRIa3BBRlJKVGxSZlFWTlRSVkpVS0ZKbGMyOXNkbVZ5TENCeWIyOTBYM0IwY2w5MGVTQjhmQ0J5YjI5MFgzSmxabDkwZVNrQVZFbE9WRjlCVTFORlVsUW9VbVZ6YjJ4MlpYSXNJSFpsWTE5MGVTa0FWRWxPVkY5QlUxTkZVbFFvUVZOVUxDQmliMlI1S1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUdsa2VDa0FWRWxPVkY5QlUxTkZVbFFvVW1WemIyeDJaWElzSUhZdFBsZHBaSFJvS0NrZ1BUMGdNM1VwQUZSSlRsUmZRVk5UUlZKVUtGUnlZVzV6Wm05eWJTd2dkaTArVjJsa2RHZ29LU0E5UFNBemRTa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0J2WW1vdWRIbHdaVjlwWkNncElDRTlJREIxS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaERiRzl1WlN3Z1pITjBMQ0J2ZFhRcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2daR1ZtWDJsdWMzUXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnYVc1emRDa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JrWlhOMFgzUjVjR1V0UGtselBGWmxZM1J2Y2o0b0tTQW1KaUJrWlhOMFgzUjVjR1V0UGtGelBGWmxZM1J2Y2o0b0tTMCtjMmw2WlNBOVBTQmtaWE4wWDJOdmRXNTBLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUhCaGNtVnVkQ2tBVkVsT1ZGOUJVMU5GVWxRb1UyVnRZVzUwYVdNc0lIQmhjbVZ1ZENrQVZFbE9WRjlCVTFORlVsUW9VbVZ6YjJ4MlpYSXNJSEp2YjNSZmFXUmxiblFwQUZSSlRsUmZRVk5UUlZKVUtGSmxjMjlzZG1WeUxDQnpaVzFmYVdSbGJuUXBBRlJKVGxSZlFWTlRSVkpVS0VGVFZDd2djM1J0ZENrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENCMFlYSm5aWFFwQUZSSlRsUmZRVk5UUlZKVVgxQlNUMGRTUVUxZlNVUlRYMFZSVlVGTVgwbEdYMVpCVEVsRUtFTnNiMjVsTENCa2MzUXNJRzlpYW1WamRDa0FWRWxPVkY5QlUxTkZVbFJmVUZKUFIxSkJUVjlKUkZOZlJWRlZRVXhmU1VaZlZrRk1TVVFvUTJ4dmJtVXNJSE55WXl3Z2IySnFaV04wS1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUc5aWFtVmpkQ2tBVkVsT1ZGOUJVMU5GVWxSZlVGSlBSMUpCVFY5SlJGTmZSVkZWUVV4ZlNVWmZWa0ZNU1VRb1EyeHZibVVzSUhOeVl5d2dkMmhoZENrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQnRZWFJmZEhrdFBtTnZiSFZ0Ym5NZ1BUMGdiV0YwWDNSNUxUNXliM2R6S1FCa1pXTnNZWEpoZEdsdmJuTXBBRlJKVGxSZlFWTlRSVkpVS0VGVFZDd2djbWh6S1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUd4b2N5a0FVMUJKVWkxV0lERXVNaUFvZFc1a1pYSWdUM0JsYmtOTUlESXVNaUJHZFd4c0lGQnliMlpwYkdVZ2MyVnRZVzUwYVdOektRQlRVRWxTTFZZZ01TNHdJQ2gxYm1SbGNpQlBjR1Z1UTB3Z01TNHlJRVoxYkd3Z1VISnZabWxzWlNCelpXMWhiblJwWTNNcEFGTlFTVkl0VmlBeExqQWdLSFZ1WkdWeUlFOXdaVzVEVENBeUxqRWdSblZzYkNCUWNtOW1hV3hsSUhObGJXRnVkR2xqY3lrQVUxQkpVaTFXSURFdU1DQW9kVzVrWlhJZ1QzQmxia05NSURJdU1DQkdkV3hzSUZCeWIyWnBiR1VnYzJWdFlXNTBhV056S1FCVFVFbFNMVllnTVM0eUlDaDFibVJsY2lCUGNHVnVRMHdnTWk0eUlFVnRZbVZrWkdWa0lGQnliMlpwYkdVZ2MyVnRZVzUwYVdOektRQlRVRWxTTFZZZ01TNHdJQ2gxYm1SbGNpQlBjR1Z1UTB3Z01TNHlJRVZ0WW1Wa1pHVmtJRkJ5YjJacGJHVWdjMlZ0WVc1MGFXTnpLUUJUVUVsU0xWWWdNUzR3SUNoMWJtUmxjaUJQY0dWdVEwd2dNaTR4SUVWdFltVmtaR1ZrSUZCeWIyWnBiR1VnYzJWdFlXNTBhV056S1FCVFVFbFNMVllnTVM0d0lDaDFibVJsY2lCUGNHVnVRMHdnTWk0d0lFVnRZbVZrWkdWa0lGQnliMlpwYkdVZ2MyVnRZVzUwYVdOektRQlRVRWxTTFZZZ01TNHdJQ2gxYm1SbGNpQlBjR1Z1UjB3Z05DNDFJSE5sYldGdWRHbGpjeWtBVTFCSlVpMVdJREV1TUNBb2RXNWtaWElnVDNCbGJrZE1JRFF1TXlCelpXMWhiblJwWTNNcEFGTlFTVkl0VmlBeExqWWdLSFZ1WkdWeUlGWjFiR3RoYmlBeExqTWdjMlZ0WVc1MGFXTnpLUUJUVUVsU0xWWWdNUzR3SUNoMWJtUmxjaUJQY0dWdVIwd2dOQzR5SUhObGJXRnVkR2xqY3lrQVUxQkpVaTFXSURFdU5TQW9kVzVrWlhJZ1ZuVnNhMkZ1SURFdU1pQnpaVzFoYm5ScFkzTXBBRk5RU1ZJdFZpQXhMakFnS0hWdVpHVnlJRTl3Wlc1SFRDQTBMakVnYzJWdFlXNTBhV056S1FCVFVFbFNMVllnTVM0MElDaDFibVJsY2lCV2RXeHJZVzRnTVM0eElITmxiV0Z1ZEdsamN5a0FVMUJKVWkxV0lERXVNeUFvZFc1a1pYSWdWblZzYTJGdUlERXVNU0J6WlcxaGJuUnBZM01wQUZOUVNWSXRWaUF4TGpBZ0tIVnVaR1Z5SUU5d1pXNUhUQ0EwTGpBZ2MyVnRZVzUwYVdOektRQlRVRWxTTFZZZ01TNHdJQ2gxYm1SbGNpQldkV3hyWVc0Z01TNHdJSE5sYldGdWRHbGpjeWtBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0JoZEhSeUtRQlVTVTVVWDBGVFUwVlNWQ2hUWlcxaGJuUnBZeXdnYm05a1pYTmZXMkZ6ZEY5dWIyUmxMVDV1YjJSbFgybGtMblpoYkhWbFhTQTlQU0J1ZFd4c2NIUnlLUUJVU1U1VVgwRlRVMFZTVkNoQlUxUXNJR2x1YVhRZ0lUMGdiblZzYkhCMGNpa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JtZFc1amRHbHZibDlqYjI1emRISjFZM1FnSVQwZ2JuVnNiSEIwY2lrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQmxibU5zYjNOcGJtZGZZMjl1YzNSeWRXTjBJQ0U5SUc1MWJHeHdkSElwQUZSSlRsUmZRVk5UUlZKVUtGSmxjMjlzZG1WeUxDQndkSElnSVQwZ2JuVnNiSEIwY2lrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENCcFpHVnVkR2xtYVdWeUlDRTlJRzUxYkd4d2RISXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnZG1GeUlDRTlJRzUxYkd4d2RISXBBRlJKVGxSZlFWTlRSVkpVS0ZWMGFXeHpMQ0JvWVhOb2JXRndYM0psWm1WeVpXNWpaVjlzYjI5cmRYQWdJVDBnYm5Wc2JIQjBjaWtBVkVsT1ZGOUJVMU5GVWxRb1VtVnpiMngyWlhJc0lIUnZJQ0U5SUc1MWJHeHdkSElwQUZSSlRsUmZRVk5UUlZKVUtGSmxjMjlzZG1WeUxDQnBibVp2SUNFOUlHNTFiR3h3ZEhJcEFGUkpUbFJmUVZOVFJWSlVLRk5sYldGdWRHbGpMQ0JrWldOc1lYSmhkR2x2YmlBaFBTQnVkV3hzY0hSeUtRQlVTVTVVWDBGVFUwVlNWQ2hTWlhOdmJIWmxjaXdnYzJWdElDRTlJRzUxYkd4d2RISXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnY0dGeVlXMGdJVDBnYm5Wc2JIQjBjaWtBVkVsT1ZGOUJVMU5GVWxRb1VtVnpiMngyWlhJc0lHTm1JQ0U5SUc1MWJHeHdkSElwQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z1lYTjBYM04wYjNKbFgzUjVjR1VnSVQwZ2JuVnNiSEIwY2lrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQjBlWEJsSUNFOUlHNTFiR3h3ZEhJcEFGUkpUbFJmUVZOVFJWSlVLRUZUVkN3Z2JtRnRaU0FoUFNCdWRXeHNjSFJ5S1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUhKMWJHVWdJVDBnYm5Wc2JIQjBjaWtBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0JsZUhCeUtRQlVTVTVVWDBGVFUwVlNWQ2hCVTFRc0lITmxiR1ZqZEc5eUtRQlVZWEpuWlhRZ2IyWWdRMjl0Y0c5dVpXNTBJR1JsWTI5eVlYUnBiMjRnYlhWemRDQmlaU0JoSUcxbGJXOXllU0J2WW1wbFkzUWdaR1ZqYkdGeVlYUnBiMjRnS0dFZ2RtRnlhV0ZpYkdVZ2IzSWdZU0JtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElwQUZSaGNtZGxkQ0J2WmlCT2IyNVhjbWwwWVdKc1pTQmtaV052Y21GMGFXOXVJRzExYzNRZ1ltVWdZU0J0WlcxdmNua2diMkpxWldOMElHUmxZMnhoY21GMGFXOXVJQ2hoSUhaaGNtbGhZbXhsSUc5eUlHRWdablZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlLUUJVU1U1VVgwRlRVMFZTVkNoQlUxUXNJRzFsYldKbGNpa0FWRWxPVkY5QlUxTkZVbFFvUVZOVUxDQjJZWElwQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z2RHOXdLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUdSbGMzUmZhVzVtYnlrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQmpkRjlwYm1adktRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJR0pzYjJOclgybHVabThwQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z2MzSmpYMmx1Wm04cEFGUkpUbFJmUVZOVFJWSlVLRUZUVkN3Z1kyOXVaR2wwYVc5dUtRQXBJR0oxZENCcGRDQnBjeUJ1YjNRZ1lTQnpkSEoxWTNSMWNtVmtJR2hsWVdSbGNpQW9hWFFnYUdGeklHNXZJRzFsY21kbElHbHVjM1J5ZFdOMGFXOXVLUUJVU1U1VVgwRlRVMFZTVkNoVFpXMWhiblJwWXl3Z1puVnVZM1JwYjI0cEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2dablZ1WTNScGIyNWZZMjl1YzNSeWRXTjBMVDVyYVc1a0lEMDlJRU52Ym5OMGNuVmpkRG82YTBaMWJtTjBhVzl1S1FCVVNVNVVYMEZUVTBWU1ZDaFNaWE52YkhabGNpd2dkUzArYjNBZ1BUMGdZWE4wT2pwVmJtRnllVTl3T2pwclNXNWthWEpsWTNScGIyNHBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnWlhocGRHbHVaMTlqYjI1emRISjFZM1F0UG10cGJtUWdQVDBnUTI5dWMzUnlkV04wT2pwclUzZHBkR05vVTJWc1pXTjBhVzl1S1FCVVNVNVVYMEZUVTBWU1ZDaFNaV0ZrWlhJc0lHTnZibk4wY25WamRDMCthMmx1WkNBOVBTQkRiMjV6ZEhKMVkzUTZPbXRUZDJsMFkyaFRaV3hsWTNScGIyNHBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnWTI5dWMzUnlkV04wTFQ1cmFXNWtJRDA5SUVOdmJuTjBjblZqZERvNmEwbG1VMlZzWldOMGFXOXVLUUFnS0c5eUlISmxjWFZwY21WeklHVjRkR1Z1YzJsdmJpa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0J6ZFdKZmFXNWtaWGdnUENCclRXRjRWbVZqZEc5eVRHVnVLUUJVU1U1VVgwRlRVMFZTVkNoU1pYTnZiSFpsY2l3Z2MyOTFjbU5sWDI1dlpHVXRQblpwYzJsMFpXUmZabkp2YlNrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENCdFpXMHBBQ2h1ZFd4c0tRQlVTVTVVWDBGVFUwVlNWQ2hTWlhOdmJIWmxjaXdnWTJGc2JDa0FWRWxPVkY5QlUxTkZVbFFvVW1WemIyeDJaWElzSUdWc0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hEYkc5dVpTd2daSE4wTENCM2FYUm9LUUJVU1U1VVgwRlRVMFZTVkNoQlUxUXNJR0Z5WnlrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENCa2FYSmxZM1JwZG1VcEFHRjBZVzVvSUcxMWMzUWdZbVVnWTJGc2JHVmtJSGRwZEdnZ1lTQjJZV3gxWlNCcGJpQjBhR1VnY21GdVoyVWdLQzB4SUM0dUlERXBJQ2hsZUdOc2RYTnBkbVVwQUdGamIzTWdiWFZ6ZENCaVpTQmpZV3hzWldRZ2QybDBhQ0JoSUhaaGJIVmxJR2x1SUhSb1pTQnlZVzVuWlNCYkxURWdMaTRnTVYwZ0tHbHVZMngxYzJsMlpTa0FZWE5wYmlCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYVhSb0lHRWdkbUZzZFdVZ2FXNGdkR2hsSUhKaGJtZGxJRnN0TVNBdUxpQXhYU0FvYVc1amJIVnphWFpsS1FBZ0tHNXZkQ0JoYm05MGFHVnlJR05oYzJVZ1kyOXVjM1J5ZFdOMExDQmpiM0p5WlhOd2IyNWthVzVuSUcxbGNtZGxMQ0J2ZFhSbGNpQnNiMjl3SUcxbGNtZGxJRzl5SUc5MWRHVnlJR3h2YjNBZ1kyOXVkR2x1ZFdVcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2djR0Z5Wlc1MExUNXJhVzVrSUQwOUlFTnZibk4wY25WamREbzZhME52Ym5ScGJuVmxLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUdobFlXUmxjaTArWTI5dWMzUnlkV04wSUNZbUlHaGxZV1JsY2kwK1kyOXVjM1J5ZFdOMExUNXJhVzVrSUQwOUlFTnZibk4wY25WamREbzZTMmx1WkRvNmEwTnZiblJwYm5WbEtRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJR1poYkhObEtRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hEYkc5dVpTd2djM0pqTENCaVpXWnZjbVVwQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z2MyRnRjR3hsWDIxaGMydGZZWEp5WVhsZmRIbHdaU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENCemNHbHlkbDkwZVhCbEtRQlVTVTVVWDBGVFUwVlNWQ2hUWlcxaGJuUnBZeXdnY21WMGRYSnVYM1I1Y0dVcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2diR2h6TG5SNWNHVXBBSE53ZGs5d1pYSmhibVJKYzBOdmJtTnlaWFJsS0hCaGNuTmxaRjl2Y0dWeVlXNWtMblI1Y0dVcEFISmxZblZwYkhRdFBrbHpVMkZ0WlNnbWRIbHdaU2tBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0IwZVhCbEtRQlVTVTVVWDBGVFUwVlNWQ2hCVTFRc0lHOXdJQ0U5SUVKcGJtRnllVTl3T2pwclRtOXVaU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENCbGNGOXVZVzFsSUNFOUlHbHVibVZ5WDJsdGNHeGxiV1Z1ZEdGMGFXOXVYMjVoYldVcEFGUkpUbFJmUVZOVFJWSlVLRUZUVkN3Z2JtRnRaU2tBSUNoMmFXOXNZWFJsY3lCd2IzTjBMV1J2YldsdVlXNWpaU0J5ZFd4bEtRQWdLSFpwYjJ4aGRHVnpJR1J2YldsdVlXNWpaU0J5ZFd4bEtRQXRZbWwwSUdsdWRHVm5aWElnWm05eUlIUm9aU0JoWkdSeVpYTnphVzVuSUcxdlpHVnNJSFZ6WldRZ2FXNGdkR2hsSUcxdlpIVnNaU2tBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0IyWVhKcFlXSnNaU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENCdmNHTnZaR1VvZG1GeUtTQTlQU0J6Y0hZNk9rOXdPanBQY0ZaaGNtbGhZbXhsS1FCVVNVNVVYMEZUVTBWU1ZDaFNaWE52YkhabGNpd2dibTl1WDNWdWFXWnZjbTFmYzI5MWNtTmxLUUJVU1U1VVgwRlRVMFZTVkY5UVVrOUhVa0ZOWDBsRVUxOUZVVlZCVEY5SlJsOVdRVXhKUkNoQlUxUXNJSEpsZEhWeWJsOTBlU3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCallYUmxaMjl5ZVN3Z2NISnZaM0poYlY5cFpDa0FWRWxPVkY5QlUxTkZVbFJmVUZKUFIxSkJUVjlKUkZOZlJWRlZRVXhmU1VaZlZrRk1TVVFvUVZOVUxDQmliMlI1TENCd2NtOW5jbUZ0WDJsa0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hCVTFRc0lHbGtlQ3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCbGJITmxYM04wWVhSbGJXVnVkQ3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCemRHMTBMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUhSaGNtZGxkQ3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCdlltcGxZM1FzSUhCeWIyZHlZVzFmYVdRcEFGUkpUbFJmUVZOVFJWSlVYMUJTVDBkU1FVMWZTVVJUWDBWUlZVRk1YMGxHWDFaQlRFbEVLRUZUVkN3Z2NtaHpMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUd4b2N5d2djSEp2WjNKaGJWOXBaQ2tBVkVsT1ZGOUJVMU5GVWxSZlVGSlBSMUpCVFY5SlJGTmZSVkZWUVV4ZlNVWmZWa0ZNU1VRb1FWTlVMQ0JoZEhSeUxDQndjbTluY21GdFgybGtLUUJVU1U1VVgwRlRVMFZTVkY5UVVrOUhVa0ZOWDBsRVUxOUZVVlZCVEY5SlJsOVdRVXhKUkNoQlUxUXNJR1Y0Y0hJc0lIQnliMmR5WVcxZmFXUXBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNWDBsR1gxWkJURWxFS0VGVFZDd2djMlZzWldOMGIzSXNJSEJ5YjJkeVlXMWZhV1FwQUZSSlRsUmZRVk5UUlZKVVgxQlNUMGRTUVUxZlNVUlRYMFZSVlVGTVgwbEdYMVpCVEVsRUtFRlRWQ3dnYVc1cGRHbGhiR2w2WlhJc0lIQnliMmR5WVcxZmFXUXBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNS0VGVFZDeHBaR1Z1ZEdsbWFXVnlMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUcxbGJXSmxjaXdnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCMllYSXNJSEJ5YjJkeVlXMWZhV1FwQUZSSlRsUmZRVk5UUlZKVVgxQlNUMGRTUVUxZlNVUlRYMFZSVlVGTVgwbEdYMVpCVEVsRUtFRlRWQ3dnWVhOelpYSjBhVzl1TENCd2NtOW5jbUZ0WDJsa0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hCVTFRc0lHTnZibVJwZEdsdmJpd2djSEp2WjNKaGJWOXBaQ2tBVkVsT1ZGOUJVMU5GVWxSZlVGSlBSMUpCVFY5SlJGTmZSVkZWUVV4ZlNVWmZWa0ZNU1VRb1FWTlVMQ0J0Wlcwc0lIQnliMmR5WVcxZmFXUXBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNWDBsR1gxWkJURWxFS0VGVFZDd2djR0Z5WVcwc0lIQnliMmR5WVcxZmFXUXBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNWDBsR1gxWkJURWxFS0VGVFZDd2djM2x0WW05c0xDQndjbTluY21GdFgybGtLUUJVU1U1VVgwRlRVMFZTVkY5UVVrOUhVa0ZOWDBsRVUxOUZVVlZCVENoQlUxUXNZWEpuTENCd2NtOW5jbUZ0WDJsa0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hCVTFRc0lHRnlaeXdnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCamIyNTBhVzUxYVc1bkxDQndjbTluY21GdFgybGtLUUJVU1U1VVgwRlRVMFZTVkY5UVVrOUhVa0ZOWDBsRVUxOUZVVlZCVEY5SlJsOVdRVXhKUkNoQlUxUXNJR1JwY21WamRHbDJaU3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCMllXeDFaU3dnY0hKdlozSmhiVjlwWkNrQVZFbE9WRjlCVTFORlVsUmZVRkpQUjFKQlRWOUpSRk5mUlZGVlFVeGZTVVpmVmtGTVNVUW9RVk5VTENCMGVYQmxMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUc1aGJXVXNJSEJ5YjJkeVlXMWZhV1FwQUZSSlRsUmZRVk5UUlZKVVgxQlNUMGRTUVUxZlNVUlRYMFZSVlVGTVgwbEdYMVpCVEVsRUtFRlRWQ3dnWlc1aFlteGxMQ0J3Y205bmNtRnRYMmxrS1FCVVNVNVVYMEZUVTBWU1ZGOVFVazlIVWtGTlgwbEVVMTlGVVZWQlRGOUpSbDlXUVV4SlJDaEJVMVFzSUhaaGNtbGhZbXhsTENCd2NtOW5jbUZ0WDJsa0tRQlVTVTVVWDBGVFUwVlNWRjlRVWs5SFVrRk5YMGxFVTE5RlVWVkJURjlKUmw5V1FVeEpSQ2hCVTFRc0lHWjFibU1zSUhCeWIyZHlZVzFmYVdRcEFGUkpUbFJmUVZOVFJWSlVYMUJTVDBkU1FVMWZTVVJUWDBWUlZVRk1YMGxHWDFaQlRFbEVLRUZUVkN3Z1pHbGhaMjV2YzNScFl5d2djSEp2WjNKaGJWOXBaQ2tBVkVsT1ZGOUJVMU5GVWxSZlVGSlBSMUpCVFY5SlJGTmZSVkZWUVV3b1FWTlVMR0lzSUhCeWIyZHlZVzFmYVdRcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2dZMjl1YzNSeWRXTjBMVDVpWldkcGJsOXBaQ0E5UFNCaWJHOWphMTlwYm1adkxtbGtLUUFnS0dSdmJXbHVZVzVqWlNCeWRXeGxJSFpwYjJ4aGRHVmtLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUhKbFoybHpkR1Z5WldRcEFGUkpUbFJmUVZOVFJWSlVLRkpsYzI5c2RtVnlMQ0J6WlhabGNtbDBlU0FoUFNCaWRXbHNkR2x1T2pwRWFXRm5ibTl6ZEdsalUyVjJaWEpwZEhrNk9tdFZibVJsWm1sdVpXUXBBRlJKVGxSZlFWTlRSVkpVS0ZSNWNHVXNJR0ZqWTJWemN5QWhQU0JpZFdsc2RHbHVPanBCWTJObGMzTTZPbXRWYm1SbFptbHVaV1FwQUZSSlRsUmZRVk5UUlZKVUtFRlRWQ3dnWm5WdVl5a0FWRWxPVkY5QlUxTkZVbFJmVUZKUFIxSkJUVjlKUkZOZlJWRlZRVXhmU1VaZlZrRk1TVVFvUTJ4dmJtVXNJSE55WXl3Z1lTa0FWRWxPVkY5QlUxTkZVbFFvVkhsd1pTd2daV3hsYldWdWRGOHBBRlJKVGxSZlFWTlRSVkpVS0ZSNWNHVXNJSFI1Y0dWZktRQlVTVTVVWDBGVFUwVlNWQ2hUWlcxaGJuUnBZeXdnZEhsd1pWOHBBRlJKVGxSZlFWTlRSVkpVWDFCU1QwZFNRVTFmU1VSVFgwVlJWVUZNWDBsR1gxWkJURWxFS0ZONWJXSnZiQ3dnY0hKdlozSmhiVjlwWkY4c0lHOTBhR1Z5TG5CeWIyZHlZVzFmYVdSZktRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJQ0ZtYVc1aGJHbDZaV1JmS1FCVVNVNVVYMEZUVTBWU1ZDaFFjbTluY21GdExDQWhiVzkyWldSZktRQnZMbTUxYlY5M2IzSmtjeUFxSURRZ1BqMGdjMmw2Wlc5bUtGUXBBRlJKVGxSZlFWTlRSVkpVS0VGVFZDd2djbTkzYzE4Z1BDQTFLUUJVU1U1VVgwRlRVMFZTVkNoQlUxUXNJR052YkhWdGJuTmZJRHdnTlNrQVZFbE9WRjlCVTFORlVsUW9WSGx3WlN3Z2QybGtkR2hmSUR3Z05Ta0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0F3SUR3Z2NtVnhkV2x5WldSZlkyOTFiblFnSmlZZ2NtVnhkV2x5WldSZlkyOTFiblFnUEQwZ05Da0FJQ2h0ZFhOMElHSmxJREFzSURFZ2IzSWdNaWtBSUNodGRYTjBJR0psSURBZ2IzSWdNU2tBVkVsT1ZGOUJVMU5GVWxRb1FWTlVMQ0J5YjNkelh5QStJREVwQUZSSlRsUmZRVk5UUlZKVUtFRlRWQ3dnWTI5c2RXMXVjMThnUGlBeEtRQlVTVTVVWDBGVFUwVlNWQ2hVZVhCbExDQjNhV1IwYUY4Z1BpQXhLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUhOMFlYUmxiV1Z1ZEhOZmMzUmhZMnRmTGt4bGJtZDBhQ2dwSUQwOUlERXBBRjh1Y21WeGRXbHlaWE5mWlc1a2FXRnVYMk52Ym5abGNuTnBiMjRnZkh3Z0tGOHVaVzVrYVdGdVgyTnZiblpsY25SbFpGOTNiM0prY3k1emFYcGxLQ2tnUFQwZ01Ta0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JpYkc5amExOXBaQ0ErSURBcEFGUkpUbFJmUVZOVFJWSlVLRkpsWVdSbGNpd2djM0pqSUQ0Z01Da0FWRWxPVkY5QlUxTkZVbFFvVW1WemIyeDJaWElzSUdOaGJHd3RQa0Z5WjNWdFpXNTBjeWdwTGt4bGJtZDBhQ2dwSUQ0Z01Da0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JrWldOdkxuTnBlbVVvS1NBK0lEQXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnWW14dlkydGZiM0prWlhKZkxuTnBlbVVvS1NBK0lEQXBBRlJKVGxSZlFWTlRSVkpVS0ZObGJXRnVkR2xqTENBb1pqRTJYMlY0Y0Y5d1lYSjBJQ1lnZm10R01UWkZlSEJ2Ym1WdWRFMWhjMnNwSUQwOUlEQXBBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnYUdWaFpHVnlJQ0U5SURBcEFGUkpUbFJmUVZOVFJWSlVLRmR5YVhSbGNpd2diV0Z1ZEdsemMyRWdJVDBnTUNrQVZFbE9WRjlCVTFORlVsUW9VMlZ0WVc1MGFXTXNJQ2hqYjI1emRHRnVkQ0FoUFNCdWRXeHNjSFJ5S1NBOVBTQW9jM1JoWjJVZ1BUMGdSWFpoYkhWaGRHbHZibE4wWVdkbE9qcHJRMjl1YzNSaGJuUXBLUUJVU1U1VVgwRlRVMFZTVkNoVFpXMWhiblJwWXl3Z0tERTBJRHc5SUdScGMyTmhjbVJmWW1sMGN5a2dKaVlnS0dScGMyTmhjbVJmWW1sMGN5QThQU0JyUmpNeVRXRnVkR2x6YzJGQ2FYUnpLU2tBVkVsT1ZGOUJVMU5GVWxRb1UyVnRZVzUwYVdNc0lDaHJUV2x1UmpNeVFtbGhjMlZrUlhod1JtOXlSakUyVTNWaWJtOXliV0ZzVG5WdFltVnlJRHc5SUdKcFlYTmxaRjlsZUhCdmJtVnVkRjl2Y21sbmFXNWhiQ2tnSmlZZ0tHSnBZWE5sWkY5bGVIQnZibVZ1ZEY5dmNtbG5hVzVoYkNBOFBTQnJUV0Y0UmpNeVFtbGhjMlZrUlhod1JtOXlSakUyVTNWaWJtOXliV0ZzVG5WdFltVnlLU2tBVkVsT1ZGOUJVMU5GVWxRb1ZIbHdaU3dnU1hOV1lXeHBaRVJsY0hSb1JHbHRaVzV6YVc5dUtHUnBiU2twQUZSSlRsUmZRVk5UUlZKVUtFRlRWQ3dnZEdsdWREbzZTWE04VUdGeVlXMWxkR1Z5UGlod1lYSmhiU2twQUZSSlRsUmZRVk5UUlZKVUtFTnZibk4wWVc1MExDQnpkR1E2T21selptbHVhWFJsS0hZdWRtRnNkV1VwS1FCVVNVNVVYMEZUVTBWU1ZDaFZkR2xzY3l3Z0lYTjBaRG82YUc5c1pITmZZV3gwWlhKdVlYUnBkbVU4YzNSa09qcHRiMjV2YzNSaGRHVStLSFpoYkhWbEtTa0FWRWxPVkY5QlUxTkZVbFFvVTJWdFlXNTBhV01zSUNoMFlYSm5aWFF0UGxOMFlXZGxLQ2tnUEQwZ2MzUmhaMlVwSUh4OElDaHpkR0ZuWlNBOVBTQnpaVzA2T2tWMllXeDFZWFJwYjI1VGRHRm5aVG82YTA1dmRFVjJZV3gxWVhSbFpDa3BBRlJKVGxSZlFWTlRSVkpVS0ZKbGMyOXNkbVZ5TENBaGMzUmtPanBvYjJ4a2MxOWhiSFJsY201aGRHbDJaVHh6ZEdRNk9tMXZibTl6ZEdGMFpUNG9kbUlwS1FCVVNVNVVYMEZUVTBWU1ZDaFNaWE52YkhabGNpd2dJWE4wWkRvNmFHOXNaSE5mWVd4MFpYSnVZWFJwZG1VOGMzUmtPanB0YjI1dmMzUmhkR1UrS0haaEtTa0FWRWxPVkY5QlUxTkZVbFFvUVZOVUxDQW9aV3h6WlY5emRHRjBaVzFsYm5RdFBrbHpRVzU1VDJZOFNXWlRkR0YwWlcxbGJuUXNJRUpzYjJOclUzUmhkR1Z0Wlc1MFBpZ3BLU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENBaFpYQmZhVzVtYjE4dFBtbHVibVZ5WDI1aGJXVXVaVzF3ZEhrb0tTa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0FoYVc1dVpYSmZhVzF3YkdWdFpXNTBZWFJwYjI1ZmJtRnRaUzVsYlhCMGVTZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUNGbmRXRnlaRjl1WVcxbExtVnRjSFI1S0NrcEFGUkpUbFJmUVZOVFJWSlVLRk41YldKdmJDd2dJVzVoYldVdVpXMXdkSGtvS1NrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQWhjM1JoZEdWdFpXNTBYMnhwYzNRdVNYTkZiWEIwZVNncEtRQlVTVTVVWDBGVFUwVlNWQ2hCVTFRc0lDRmhjbWQxYldWdWRITXVTWE5GYlhCMGVTZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUNGelpXeGxZM1J2Y25NdVNYTkZiWEIwZVNncEtRQlVTVTVVWDBGVFUwVlNWQ2hCVTFRc0lDRnpaV3hsWTNSdmNuTXVTWE5GYlhCMGVTZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUNGamJHRjFjMlZmYUdWaFpITXVTWE5GYlhCMGVTZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUNGamIyNXpkSEoxWTNSelh5NUpjMFZ0Y0hSNUtDa3BBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnSVhOMFlYUmxiV1Z1ZEhOZmMzUmhZMnRmTGtselJXMXdkSGtvS1NrQVZFbE9WRjlCVTFORlVsUW9WSGx3WlN3Z1NHRnpRM0psWVhScGIyNUdhWGhsWkVadmIzUndjbWx1ZENncEtRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJR1JsYzNSZmRIbHdaUzArU1hOR2JHOWhkRlpsWTNSdmNpZ3BJSHg4SUdSbGMzUmZkSGx3WlMwK1NYTlZibk5wWjI1bFpFbHVkR1ZuWlhKV1pXTjBiM0lvS1NCOGZDQmtaWE4wWDNSNWNHVXRQa2x6VTJsbmJtVmtTVzUwWldkbGNsWmxZM1J2Y2lncEtRQlVTVTVVWDBGVFUwVlNWQ2hTWlhOdmJIWmxjaXdnZEMwK2FYTmZjMk5oYkdGeUtDa3BBRlpoYkdsa1lYUmxRMjl1YzNSeWRXTjBVMmw2WlNoMGVYQmxYeXdnWTI5dWMzUnlkV04wY3k1emFYcGxLQ2twQUNGZkxuSmxjWFZwY21WelgyVnVaR2xoYmw5amIyNTJaWEp6YVc5dUlIeDhJQ2hwYm5OMFgzZHZjbVJmWTI5MWJuUWdQVDBnWHk1bGJtUnBZVzVmWTI5dWRtVnlkR1ZrWDNkdmNtUnpMbk5wZW1Vb0tTa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JsYm1SZlptbHljM1JmWTJ4aGRYTmxYM0J2Y3lBOElHSnNiMk5yWDI5eVpHVnlYeTV6YVhwbEtDa3BBSGR2Y21SelgyVnVaQ0E4UFNCemRHRjBhV05mWTJGemREeHBiblErS0dsdWMzUXRQbmR2Y21SektDa3VjMmw2WlNncEtRQlVTVTVVWDBGVFUwVlNWQ2hTWlhOdmJIWmxjaXdnYldWdFltVnlMVDVCZEhSeWFXSjFkR1Z6S0NrdWJHOWpZWFJwYjI0dWFHRnpYM1poYkhWbEtDa3BBRlJKVGxSZlFWTlRSVkpVS0ZKbFlXUmxjaXdnWkdWbVgybHVabTh0UG14dlkyRnNMbWhoYzE5MllXeDFaU2dwS1FCVVNVNVVYMEZUVTBWU1ZDaFRaVzFoYm5ScFl5d2dkSGx3WlY4Z1BUMGdZMjl1YzNSaGJuUXRQbFI1Y0dVb0tTa0FWRWxPVkY5QlUxTkZVbFFvUVZOVUxDQnplVzFpYjJ3dVNYTldZV3hwWkNncEtRQlVTVTVVWDBGVFUwVlNWQ2hTWldGa1pYSXNJRzB1ZEhsd1pTMCtTWE04VFdGMGNtbDRQaWdwS1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUNGallYUmxaMjl5ZVMwK1NYTThWR1Z0Y0d4aGRHVmtTV1JsYm5ScFptbGxjajRvS1NrQVZFbE9WRjlCVTFORlVsUW9RVk5VTENBaGJXVnRZbVZ5TFQ1SmN6eFVaVzF3YkdGMFpXUkpaR1Z1ZEdsbWFXVnlQaWdwS1FCVVNVNVVYMEZUVTBWU1ZDaEJVMVFzSUNGdVlXMWxMVDVKY3p4VVpXMXdiR0YwWldSSlpHVnVkR2xtYVdWeVBpZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pYTnZiSFpsY2l3Z1pTMCtTWE04WVhOME9qcEJZMk5sYzNOdmNrVjRjSEpsYzNOcGIyNCtLQ2twQUZSSlRsUmZRVk5UUlZKVUtGUjVjR1VzSUNGemRXSjBlWEJsTFQ1SmN6eFNaV1psY21WdVkyVStLQ2twQUZSSlRsUmZRVk5UUlZKVUtFRlRWQ3dnSVhOMVluUjVjR1V0UGtselBGSmxabVZ5Wlc1alpUNG9LU2tBVkVsT1ZGOUJVMU5GVWxRb1VtVmhaR1Z5TENCemIzVnlZMlZmWlhod2NpNTBlWEJsTFQ1SmN6eFNaV1psY21WdVkyVStLQ2twQUZSSlRsUmZRVk5UUlZKVUtGSmxZV1JsY2l3Z2RIbHdaU0FtSmlCMGVYQmxMVDVKY3p4U1pXWmxjbVZ1WTJVK0tDa3BBRlJKVGxSZlFWTlRSVkpVS0ZObGJXRnVkR2xqTENCeVpXWXRQbFI1Y0dVb0tTMCtTWE04ZEhsd1pUbzZVbVZtWlhKbGJtTmxQaWdwS1FCVVNVNVVYMEZUVTBWU1ZDaFNaV0ZrWlhJc0lHbHVZMmxrWlc1MExuUjVjR1V0UGtselBFWXpNajRvS1NrQVZFbE9WRjlCVTFORlVsUW9VbVZoWkdWeUxDQnViM0p0WVd3dWRIbHdaUzArU1hNOFJqTXlQaWdwS1FCVVNVNVVYMEZUVTBWU1ZDaFNaV0ZrWlhJc0lHNXlaV1l1ZEhsd1pTMCtTWE04UmpNeVBpZ3BLUUJVU1U1VVgwRlRVMFZTVkNoU1pXRmtaWElzSUdWMFlTNTBlWEJsTFQ1SmN6eEdNekkrS0NrcEFDRndZWFIwWlhKdUxUNWxiWEIwZVNncEFDRnBibk4wYzE4dVpXMXdkSGtvS1FCcGJsOW1kVzVqZEdsdmJsOWliMlI1S0NrQWRXNXBjWFZsWDJsa1h5QWhQU0J6ZEdRNk9tNTFiV1Z5YVdOZmJHbHRhWFJ6UEhWcGJuUXpNbDkwUGpvNmJXRjRLQ2tBYVhOZmMyVnVkR2x1Wld4ZklIeDhJQ0ZKYzBsdVFVeHBjM1FvS1FCMGVYQmxMVDVCYzBKdmIyd29LU0I4ZkNCMGVYQmxMVDVCYzBsdWRHVm5aWElvS1NCOGZDQjBlWEJsTFQ1QmMwWnNiMkYwS0NrQWMzUmhZMnNnYm05MElHVnRjSFI1SUdGbWRHVnlJSEpsZEhWeWJtbHVaeUJtY205dElGUnlZWFpsY25ObFJHVndaVzVrWlc1amFXVnpLQ2tBZEhsd1pTMCtRWE5XWldOMGIzSW9LUUJ2Y0dWeVlYUnZjaWdwQURFZ1BEMGdkMjl5WkhNdWMybDZaU2dwQUc5d1pYSmhibVF1YjJabWMyVjBJRHdnYVc1emRDMCtkMjl5WkhNb0tTNXphWHBsS0NrQWMzQjJPanBQY0RvNlQzQlVlWEJsVUc5cGJuUmxjaUE5UFNCd2RISkpibk4wTFQ1dmNHTnZaR1VvS1FCemNIWTZPazl3T2pwUGNFTnZibk4wWVc1MElEMDlJSE5wZW1WSmJuTjBMVDV2Y0dOdlpHVW9LUUIzYUdWeVpTQWhQU0JsYm5SeWVWOWliRzlqYTE5MGIxOWpiMjV6ZEhKMVkzUmZMbVZ1WkNncEFDRjBMVDVCYzFadmFXUW9LUUFoZEhsd1pTMCtRWE5XYjJsa0tDa0FKeWtBVkVsT1ZGOUJVMU5GVWxRb1VtVnpiMngyWlhJc0lHWmhiSE5sSUNZbUlDSjFibWhoYm1Sc1pXUWdjMlYyWlhKcGRIa2lLUUJVU1U1VVgwRlRVMFZTVkNoU1pYTnZiSFpsY2l3Z1ptRnNjMlVnSmlZZ0luVnVZV0pzWlNCMGJ5Qm1hVzVrSUdOb2FXeGtJR05oYkd3Z2QybDBhQ0IxYm1sbWIzSnRhWFI1SUhKbGNYVnBjbVZ0Wlc1MElpa0FWRWxPVkY5QlUxTkZVbFFvVW1WaFpHVnlMQ0JtWVd4elpTQW1KaUFpWlhod1pXTjBaV1FnWVNCdFpXMXZjbmtnYjJKcVpXTjBJR1JsWTJ4aGNtRjBhVzl1SWlrQVZFbE9WRjlCVTFORlVsUW9VbVZ6YjJ4MlpYSXNJR1poYkhObElDWW1JQ0oxYm1WNGNHVmpkR1ZrSUdOaGJHd2daWGh3Y21WemMybHZiaUIwZVhCbElpa0FWRWxPVkY5QlUxTkZVbFFvVkhsd1pTd2dabUZzYzJVZ0ppWWdJbFZ1Ym1GdFpXUWdiM1psY25KcFpHVWdZWEp5WVhrZ1kyOTFiblFnWTJ4dmJtVWdibTkwSUdGMllXbHNZV0pzWlNJcEFGUkpUbFJmUVZOVFJWSlVLRlI1Y0dVc0lHWmhiSE5sSUNZbUlDSk9ZVzFsWkNCdmRtVnljbWxrWlNCaGNuSmhlU0JqYjNWdWRDQmpiRzl1WlNCdWIzUWdZWFpoYVd4aFlteGxJaWtBSUNrQUx5b2diMlptYzJWMEtBQXBMQ0IzYjNKa2N5Z0FabTl5ZDJGeVpGOXdiMmx1ZEdWeUtBQlRZVzF3YkdWeUtBQW5JSEpsWm1WeVpXNWpaWE1nYlhWc2RHbHdiR1VnZG1GeWFXRmliR1Z6SUhSb1lYUWdkWE5sSUhSb1pTQnpZVzFsSUhKbGMyOTFjbU5sSUdKcGJtUnBibWNnUUdkeWIzVndLQUJBYkc5allYUnBiMjRvQUhOMGIzSmxJSFI1Y0dVZ2IyWWdRR0oxYVd4MGFXNG9BQzRnUTI5dWMybGtaWElnYzJWMGRHbHVaeUJBWVd4cFoyNG9BQ2tnWVd4cFoyNG9BR2x1ZEdWeWJtRnNLQUJ6ZDJsMFkyZ29BQ2tzSUVCaWFXNWthVzVuS0FCM2IzSnJaM0p2ZFhCZmMybDZaU2dBUUhOcGVtVW9BQ2tnYzJsNlpTZ0FUV0YwWlhKcFlXeHBlbVVvQUVOdmJuWmxjblJXWVd4MVpTZ0FhVzUwWlhKd2IyeGhkR1VvQUZSbGVIUjFjbVVvQUhCcGNHVW9BRlZ6WVdkbEtBQnpZVzF3YkdWa1gybHRZV2RsS0FCQWMzUnlhV1JsS0FBc0lHbGtLQUJrYVdGbmJtOXpkR2xqS0FBK0tBQmhjbkpoZVNCamIzVnVkQ0FvQUNrZ1pHOWxjeUJ1YjNRZ2JXRjBZMmdnWW14dlkyc25jeUJ3Y21Wa1pXTmxjM052Y2lCamIzVnVkQ0FvQUVsdWRtRnNhV1FnWlhocGRDQW9BQ2tnWlhoalpXVmtjeUIwYUdVZ2JHbHRhWFFnS0FBcElHaGhjeUJsZUdObFpXUmxaQ0IwYUdVZ2JHbHRhWFFnS0FCT2RXMWlaWElnYjJZZ2JHOWpZV3dnZG1GeWFXRmliR1Z6SUNnblJuVnVZM1JwYjI0bklGTjBiM0poWjJVZ1EyeGhjM01wSUdWNFkyVmxaR1ZrSUhSb1pTQjJZV3hwWkNCc2FXMXBkQ0FvQUU1MWJXSmxjaUJ2WmlCSGJHOWlZV3dnVm1GeWFXRmliR1Z6SUNoVGRHOXlZV2RsSUVOc1lYTnpJRzkwYUdWeUlIUm9ZVzRnSjBaMWJtTjBhVzl1SnlrZ1pYaGpaV1ZrWldRZ2RHaGxJSFpoYkdsa0lHeHBiV2wwSUNnQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUFptWnpaWFFnZEc4Z1ltVWdiMllnZEhsd1pTQnphWHBsWDNRZ0tBQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lFNTFiU0JGYkdWdFpXNTBjeUIwYnlCaVpTQnZaaUIwZVhCbElITnBlbVZmZENBb0FFbHNiR1ZuWVd3Z2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdLQUJKYm5aaGJHbGtJRzUxYldKbGNpQnZaaUJpYVhSeklDZ0FUblZ0WW1WeUlHOW1JRTl3Vkhsd1pWTjBjblZqZENCdFpXMWlaWEp6SUNnQVQzQlFhR2tuY3lCdWRXMWlaWElnYjJZZ2FXNWpiMjFwYm1jZ1lteHZZMnR6SUNnQVFtRmpheTFsWkdkbGN5QW9BSFZ1YzNWd2NHOXlkR1ZrSUdsdFlXZGxJRzl3WlhKaGJtUnpJQ2dBUVNCbWRXNWpkR2x2YmlBb0FFNTFiV0psY2lCdlppQW9iR2wwWlhKaGJDd2diR0ZpWld3cElIQmhhWEp6SUdsdUlFOXdVM2RwZEdOb0lDZ0FmU0JsYkhObElHbG1JQ2dBUUhOcGVtVWdiWFZ6ZENCaVpTQmhkQ0JzWldGemRDQmhjeUJpYVdjZ1lYTWdkR2hsSUhSNWNHVW5jeUJ6YVhwbElDZ0FTVzUyWVd4cFpDQmlZV05yWldSblpTQW9BSFZ6WlNCdlppQjJZWEpwWVdKc1pTQmhaR1J5WlhOeklITndZV05sSUNkd2RYTm9YMk52Ym5OMFlXNTBKeUJ5WlhGMWFYSmxjeUJsYm1GaWJHbHVaeUJsZUhSbGJuTnBiMjRnSjJOb2NtOXRhWFZ0WDJWNGNHVnlhVzFsYm5SaGJGOXdkWE5vWDJOdmJuTjBZVzUwSndCallXNXViM1FnYlc5a2FXWjVJQ2RzWlhRbkFHTnZibk5wWkdWeUlHTm9ZVzVuYVc1bklDZGpiMjV6ZENjZ2RHOGdKMnhsZENjQUlHTmhibTV2ZENCaVpTQjFjMlZrSUdGeklIUm9aU0IwZVhCbElHOW1JR0VnSjJ4bGRDY0FablZ1WTNScGIyNHRjMk52Y0dVZ0ozWmhjaWNBYlc5a2RXeGxMWE5qYjNCbElDZDJZWEluQUZSeVlYWmxjbk5sUTJGc2JFTm9ZV2x1S0NrZ0oyWnliMjBuSUdSdlpYTWdibTkwSUhSeVlXNXphWFJwZG1Wc2VTQmpZV3hzSUNkMGJ5Y0FiVzlrZFd4bExYTmpiM0JsSUNkMllYSW5JRzExYzNRZ2JtOTBJSFZ6WlNCaFpHUnlaWE56SUhOd1lXTmxJQ2RtZFc1amRHbHZiaWNBSnlCallXNXViM1FnYUdGMlpTQmhiaUJwYm1sMGFXRnNhWHBsY2k0Z2RtRnlJR2x1YVhScFlXeHBlbVZ5Y3lCaGNtVWdiMjVzZVNCemRYQndiM0owWldRZ1ptOXlJSFJvWlNCaFpHUnlaWE56SUhOd1lXTmxjeUFuY0hKcGRtRjBaU2NnWVc1a0lDZG1kVzVqZEdsdmJpY0FTVzFoWjJVZ1QzQmxjbUZ1WkNCRGIyNXpkRTltWm5ObGRDQmpZVzV1YjNRZ1ltVWdkWE5sWkNCM2FYUm9JRU4xWW1VZ1NXMWhaMlVnSjBScGJTY0FTVzFoWjJVZ1QzQmxjbUZ1WkNCUFptWnpaWFFnWTJGdWJtOTBJR0psSUhWelpXUWdkMmwwYUNCRGRXSmxJRWx0WVdkbElDZEVhVzBuQUVsdFlXZGxJRTl3WlhKaGJtUWdRMjl1YzNSUFptWnpaWFJ6SUdOaGJtNXZkQ0JpWlNCMWMyVmtJSGRwZEdnZ1EzVmlaU0JKYldGblpTQW5SR2x0SndBcElHMTFjM1FnWW1VZ0oySnZiMnduQUdOaGJtNXZkQ0J0YjJScFpua2dKMjkyWlhKeWFXUmxKd0FnWTJGdWJtOTBJR0psSUhWelpXUWdZWE1nZEdobElIUjVjR1VnYjJZZ1lTQW5iM1psY25KcFpHVW5BQ2R2Wm1aelpYUWdLeUFuWTI5MWJuUW5JRzExYzNRZ1ltVWdiR1Z6Y3lCMGFHRnVJRzl5SUdWeGRXRnNJSFJ2SUhSb1pTQmlhWFFnZDJsa2RHZ2diMllnSjJVbkFGMG5BR0Z5Y21GNUlIZHBkR2dnWVc0Z0oyOTJaWEp5YVdSbEp5QmxiR1Z0Wlc1MElHTnZkVzUwSUdOaGJpQnZibXg1SUdKbElIVnpaV1FnWVhNZ2RHaGxJSE4wYjNKbElIUjVjR1VnYjJZZ1lTQW5kbUZ5UEhkdmNtdG5jbTkxY0Q0bkFDa2diWFZ6ZENCaVpTQW5kbVZqTXp4MU16SStKd0FwSUcxMWMzUWdZbVVnSjNabFl6UThaak15UGljQWJXRjBjbWw0SUdWc1pXMWxiblFnZEhsd1pTQnRkWE4wSUdKbElDZG1NekluSUc5eUlDZG1NVFluQUhabFkzUnZjaUJsYkdWdFpXNTBJSFI1Y0dVZ2JYVnpkQ0JpWlNBblltOXZiQ2NzSUNkbU16SW5MQ0FuWmpFMkp5d2dKMmt6TWljZ2IzSWdKM1V6TWljQUtTQnRkWE4wSUdKbElDZDFNekluQUNrZ2JYVnpkQ0JpWlNBblpqTXlKd0J2Y0dGeGRXVW9Kd0JpZVNBbkFDQmllWFJsY3l3Z1luVjBJQ2NBWTI5dWMzUWdKd0JKYm5aaGJHbGtJR1Y0ZEdWdVpHVmtJR2x1YzNSeWRXTjBhVzl1SUdsdGNHOXlkQ0FuQUdsdWRtRnNhV1FnYldWdFltVnlJR0ZqWTJWemMyOXlJR1Y0Y0hKbGMzTnBiMjR1SUVWNGNHVmpkR1ZrSUhabFkzUnZjaUJ2Y2lCemRISjFZM1FzSUdkdmRDQW5BR052Ym5OMElHRnpjMlZ5ZEdsdmJpQmpiMjVrYVhScGIyNGdiWFZ6ZENCaVpTQmhJR0p2YjJ3c0lHZHZkQ0FuQUNjc0lHZHZkQ0FuQUQ0Z2FYTWdkWE5sWkNCaWVTQmxiblJ5ZVNCd2IybHVkQ0FuQUdOaGJHeGxaQ0JpZVNCbGJuUnllU0J3YjJsdWRDQW5BSGRvYVd4bElHRnVZV3g1ZW1sdVp5QmxiblJ5ZVNCd2IybHVkQ0FuQUd4bGRDQW5BSFZ1Y21WemIyeDJaV1FnWTJGc2JDQjBZWEpuWlhRZ0p3QnpkSEoxWTNRZ0p3QjBaWGhsYkNCbWIzSnRZWFFnSndCaFkyTmxjM01nSndCaGJHbGhjeUFuQUNjZ1kyRnVibTkwSUdKbElISmxjSEpsYzJWdWRHVmtJR0Z6SUNjQVpYaHdaV04wWldRZ0p6d25JR1p2Y2lBbkFISmxaR1ZtYVc1cGRHbHZiaUJ2WmlCd1lYSmhiV1YwWlhJZ0p3QjFibkpsYzI5c2RtVmtJR2xrWlc1MGFXWnBaWElnSndCSmJuWmhiR2xrSUZOUVNWSXRWaUJ0WVdkcFl5QnVkVzFpWlhJZ0p3QW5MQ0J0WlcxaVpYSWdKd0IyWVhJZ0p3QmpZVzV1YjNRZ1ltbDBZMkZ6ZENCMGJ5QW5BQ2NnYzJWMElIUnZJQ2NBY0dGemMybHVaeUJ1YjI0dGRXNXBabTl5YlNCd2IybHVkR1Z5SUhSdklDY0FJR0Z5WjNWdFpXNTBjeUJwYmlCallXeHNJSFJ2SUNjQUp5QjBieUFuQUdOaGJHeGxaQ0JpZVNCbWRXNWpkR2x2YmlBbkFHSjFhV3gwYVc0Z1puVnVZM1JwYjI0Z0p3QmpZVzV1YjNRZ1kyRnNiQ0JpZFdsc2RDMXBiaUJtZFc1amRHbHZiaUFuQUdsbmJtOXlhVzVuSUhKbGRIVnliaUIyWVd4MVpTQnZaaUJtZFc1amRHbHZiaUFuQUU5d1JHVmpiM0poZEdVZ1pHVmpiM0poZEdsdmJpQW5BR2xuYm05eWFXNW5JSEpsZEhWeWJpQjJZV3gxWlNCdlppQmlkV2xzZEdsdUlDY0FablZ1WTNScGIyNGdjR0Z5WVcxbGRHVnlJRzltSUhCdmFXNTBaWElnZEhsd1pTQmpZVzV1YjNRZ1ltVWdhVzRnSndCallXNXViM1FnWVhOemFXZHVJQ2NBSUdKNWRHVnpJR0psZEhkbFpXNGdKd0JFYVdRZ2VXOTFJRzFsWVc0Z0p3QmpZVzV1YjNRZ1ltbDBZMkZ6ZENCbWNtOXRJQ2NBSnlCbWNtOXRJQ2NBYVc1MFpYSndiMnhoZEdsdmJpQnpZVzF3YkdsdVp5QW5BR052Ym5SbGJuUnpJRzltSUhCdmFXNTBaWElnYldGNUlHSmxZMjl0WlNCdWIyNHRkVzVwWm05eWJTQmhablJsY2lCallXeHNhVzVuSUNjQWMyVjJaWEpwZEhrZ2IyWWdKd0FuSUdOaGJtNXZkQ0JpWlNCMWMyVmtJSFJ2SUdOdmJuTjBjblZqZENCaGJpQmhjbkpoZVNCdlppQW5BSEpsWkdWbWFXNXBkR2x2YmlCdlppQW5BSEpsWkdWamJHRnlZWFJwYjI0Z2IyWWdKd0JqYjI1MGFXNTFaU0J6ZEdGMFpXMWxiblFnWW5sd1lYTnpaWE1nWkdWamJHRnlZWFJwYjI0Z2IyWWdKd0J5WlhSMWNtNGdkbUZzZFdVZ2IyWWdKd0JoZEc5dGFXTWdjM1ZpTFhSNWNHVWdiMllnSndBbklHOW1JQ2NBWW5WcGJIUnBiaUIyWVd4MVpTQW5BRlZ1YzNWd2NHOXlkR1ZrSUdGMGRISnBZblYwWlNBbkFHUjFjR3hwWTJGMFpTQnpkMmwwWTJnZ1kyRnpaU0FuQUdOaGJtNXZkQ0J0YjJScFpua2djbVZoWkMxdmJteDVJSFI1Y0dVZ0p3QmpZVzV1YjNRZ2MzUnZjbVVnYVc1MGJ5QmhJSEpsWVdRdGIyNXNlU0IwZVhCbElDY0FZMkZ1Ym05MElHbHVaR1Y0SUhSNWNHVWdKd0JoY25KaGVTQmpiM1Z1ZENCdGRYTjBJR1YyWVd4MVlYUmxJSFJ2SUdFZ1kyOXVjM1JoYm5RZ2FXNTBaV2RsY2lCbGVIQnlaWE56YVc5dUxDQmlkWFFnYVhNZ2RIbHdaU0FuQUNjZ2RHOGdkSGx3WlNBbkFHbHVkR1Z5Y0c5c1lYUnBiMjRnZEhsd1pTQW5BQ0IxYm1oaGJtUnNaV1FnWW5WcGJIUnBiaUIwZVhCbElDY0FkVzVwWm05eWJTQnpkRzl5WVdkbElISmxjWFZwY21WeklIUm9ZWFFnWVhKeVlYa2daV3hsYldWdWRITWdZWEpsSUdGc2FXZHVaV1FnZEc4Z01UWWdZbmwwWlhNc0lHSjFkQ0JoY25KaGVTQmxiR1Z0Wlc1MElHOW1JSFI1Y0dVZ0p3QWdhWE1nYjJZZ2RIbHdaU0FuQUhaaGNtbGhZbXhsY3lCdlppQjBlWEJsSUNjQWRHaGxJRzltWm5ObGRDQnZaaUJoSUhOMGNuVmpkQ0J0WlcxaVpYSWdiMllnZEhsd1pTQW5BR05oYm01dmRDQmhjSEJzZVNCQWJHOWpZWFJwYjI0Z2RHOGdaR1ZqYkdGeVlYUnBiMjRnYjJZZ2RIbHdaU0FuQUhaaGJIVmxJR1Y0Y0hKbGMzTnBiMjRnYjJZZ2RIbHdaU0FuQUdOaGJtNXZkQ0JrWlhKbFptVnlaVzVqWlNCbGVIQnlaWE56YVc5dUlHOW1JSFI1Y0dVZ0p3QmpZVzV1YjNRZ2JXOWthV1o1SUhaaGJIVmxJRzltSUhSNWNHVWdKd0JqWVc1dWIzUWdZMjl1ZG1WeWRDQjJZV3gxWlNCdlppQjBlWEJsSUNjQUp5QjNhWFJvSUhaaGJIVmxJRzltSUhSNWNHVWdKd0JVZVhCbElDY0FkVzV5WldOdloyNXBlbVZrSUdScFlXZHViM04wYVdNZ2NuVnNaU0FuQUVGVFZDQnViMlJsSUNjQWIzWmxjbkpwWkdVZ0p3QW5JR05oYm01dmRDQmlaU0IxYzJWa0lHbHVJR0ZrWkhKbGMzTWdjM0JoWTJVZ0p3QW5JSFZ6WldRZ2FXNGdZV1JrY21WemN5QnpjR0ZqWlNBbkFDY2dhVzRnWVdSa2NtVnpjeUJ6Y0dGalpTQW5BSFpoY2lCdlppQmhaR1J5WlhOeklITndZV05sSUNjQUp5d2dabTkxYm1RZ0p3QW5JRzExYzNRZ1ltVWdiR1Z6Y3lCMGFHRnVJSFJvWlNCSlJDQmliM1Z1WkNBbkFDY2dZVzVrSUNjQVJXNTBjbmtnY0c5cGJuUWdhV1FnSndCVmJtbG1iM0p0UTI5dWMzUmhiblFnYVdRZ0p3QlFkWE5vUTI5dWMzUmhiblFnYVdRZ0p3QlRkRzl5WVdkbElHSjFabVpsY2lCcFpDQW5BRk4wYjNKaFoyVkNkV1ptWlhJZ2FXUWdKd0JWYm1sbWIzSnRJR2xrSUNjQWRIbHdaU0JwYmlCemRISjFZM1IxY21VZ1kyOXVjM1J5ZFdOMGIzSWdaRzlsY3lCdWIzUWdiV0YwWTJnZ2MzUnlkV04wSUcxbGJXSmxjaUIwZVhCbE9pQmxlSEJsWTNSbFpDQW5BQ2NzSUdWNGNHVmpkR1ZrSUNjQWNtVjBkWEp1SUhOMFlYUmxiV1Z1ZENCMGVYQmxJRzExYzNRZ2JXRjBZMmdnYVhSeklHWjFibU4wYVc5dUlISmxkSFZ5YmlCMGVYQmxMQ0J5WlhSMWNtNWxaQ0FuQUVsRUlDY0FVbVZ6ZFd4MElEeHBaRDRnSndBZ2FXNGdkR2hsSUhOMGNuVmpkSFZ5WlNBOGFXUStJQ2NBSnlBdFBpQW5BR1poYVd4bFpDQjBieUJtYVc1a0lHUmxjR1Z1WkdWdVkza2dhVzVtYnlCbWIzSWdaV1JuWlRvZ0p3QnBibVJsZUNCdGRYTjBJR0psSUc5bUlIUjVjR1VnSjJrek1pY2diM0lnSjNVek1pY3NJR1p2ZFc1a09pQW5BQ1ltQUZzbEFDQnBibVJsZUNBbEFFRmpZMlZ6Y3lCamFHRnBiaUFsQUNCcGN5QnZkWFFnYjJZZ1ltOTFibVJ6SUdadmNpQnpkSEoxWTNSMWNtVWdKUUFnYVhNZ1lTQnViMjR0WTI5dWMzUmhiblFnYVc1a1pYZ2dhVzUwYnlCaElITjBjblZqZEhWeVpTQWxBR052YlhCdmMybDBaU0IwZVhCbElDVUFRV05qWlhOeklHTm9ZV2x1SUhkcGRHZ2dkVzVyYm05M2JpQnZjaUJwYm5aaGJHbGtJSEJ2YVc1MFpXVWdkSGx3WlNBbEFDQjNhWFJvSUdKaFpDQjBlWEJsSUNVQUlDQTdJR2xrSUNVQWFXNTJZV3hwWkNCMlpXTjBiM0p6YUhWbVpteGxJRWxFSUNVQVUzQmxZMGxrSUhSdmJ5QnNZWEpuWlM0Z1YwZFRUQ0J2ZG1WeWNtbGtaU0JKUkhNZ2JYVnpkQ0JpWlNCaVpYUjNaV1Z1SURBZ1lXNWtJRFkxTlRNMU9pQkpSQ0FsQUNRQVRXVnRZbVZ5SUNNQU1DQW1KaUFpUVhKeVlYa2dkSGx3WlNCa1pXWnBibWwwYVc5dUlHbHpJR052Y25KMWNIUWlBREFnSmlZZ0ltSjFaeUJwYmlCemNIWlBjR052WkdWSmMwTnZibk4wWVc1MEtDa2diM0lnY21WemRXeDBJSFI1Y0dVZ2FYTnVKM1FnYVc1MElnQmtaV052Y21GMGFXOXVMbkJoY21GdGN5Z3BMbk5wZW1Vb0tTQTlQU0F4SUNZbUlDSkhjbUZ0YldGeUlHVnVjM1Z5WlhNZ1EyOXRjRzl1Wlc1MElHaGhjeUJ2Ym1VZ2NHRnlZVzFsZEdWeUlnQmtaV052Y21GMGFXOXVMbkJoY21GdGN5Z3BMbk5wZW1Vb0tTQTlQU0F4SUNZbUlDSkhjbUZ0YldGeUlHVnVjM1Z5WlhNZ1ZXNXBabTl5YlVsa0lHaGhjeUJ2Ym1VZ2NHRnlZVzFsZEdWeUlnQm1ZV3h6WlNBbUppQWljMmh2ZFd4a0lHaGhkbVVnWTJGMVoyaDBJSFJvYVhNZ1pXRnliR2xsY2lJQVptRnNjMlVnSmlZZ0lsVnVaWGh3WldOMFpXUWdaR1ZqYjNKaGRHbHZiaUJwYm5OMGNuVmpkR2x2YmlJQWFXNWZablZ1WTNScGIyNWZZbTlrZVNncElEMDlJR1poYkhObElDWW1JQ0pTWldkcGMzUmxja1oxYm1OMGFXOXVJR05oYmlCdmJteDVJR0psSUdOaGJHeGxaQ0IzYUdWdUlIQmhjbk5wYm1jZ2RHaGxJR0pwYm1GeWVTQnZkWFJ6YVdSbElDSWdJbTltSUdGdWIzUm9aWElnWm5WdVkzUnBiMjRpQUdsdVgyWjFibU4wYVc5dVgySnZaSGtvS1NBOVBTQjBjblZsSUNZbUlDSlNaV2RwYzNSbGNrWjFibU4wYVc5dVJXNWtJR05oYmlCdmJteDVJR0psSUdOaGJHeGxaQ0IzYUdWdUlIQmhjbk5wYm1jZ2RHaGxJR0pwYm1GeWVTQWlJQ0pwYm5OcFpHVWdiMllnWVc1dmRHaGxjaUJtZFc1amRHbHZiaUlBTUNBbUppQWlWVzVsZUhCbFkzUmxaQ0J5WVhrZ2RISmhZMmx1WnlCaWRXbHNkR2x1SWdCdmNtbG5hVzVoYkY5MGVYQmxMVDVyYVc1a0tDa2dQVDBnYm1WM1gzUjVjR1V0UG10cGJtUW9LU0FtSmlBaVZIbHdaWE1nYlhWemRDQmlaU0IwYUdVZ2MyRnRaU0JtYjNJZ2NtVndiR0ZqWlcxbGJuUXVYRzRpQUdOMWNuSmxiblJmWW14dlkydGZJQ1ltSUNKU1pXZHBjM1JsY2t4dmIzQk5aWEpuWlNCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYUdWdUlHTmhiR3hsWkNCM2FYUm9hVzRnWVNCaWJHOWpheUlBWTNWeWNtVnVkRjlpYkc5amExOGdKaVlnSWxKbFoybHpkR1Z5UW14dlkydEZibVFnWTJGdUlHOXViSGtnWW1VZ1kyRnNiR1ZrSUhkb1pXNGdjR0Z5YzJsdVp5QmhJR0pwYm1GeWVTQnBiaUJoSUdKc2IyTnJJZ0JqZFhKeVpXNTBYMkpzYjJOclh5QTlQU0J1ZFd4c2NIUnlJQ1ltSUNKU1pXZHBjM1JsY2taMWJtTjBhVzl1VUdGeVlXMWxkR1Z5SUdOaGJpQnZibXg1SUdKbElHTmhiR3hsWkNCM2FHVnVJSEJoY25OcGJtY2dkR2hsSUdKcGJtRnllU0FpSUNKdmRYUnphV1JsSUc5bUlHRWdZbXh2WTJzaUFHbHVYMkpzYjJOcktDa2dQVDBnWm1Gc2MyVWdKaVlnSWxKbFoybHpkR1Z5Um5WdVkzUnBiMjVRWVhKaGJXVjBaWElnWTJGdUlHOXViSGtnWW1VZ1kyRnNiR1ZrSUhkb1pXNGdjR0Z5YzJsdVp5QjBhR1VnWW1sdVlYSjVJQ0lnSW05MWRITnBaR1VnYjJZZ1lTQmliRzlqYXlJQVkzVnljbVZ1ZEY5aWJHOWphMThnUFQwZ2JuVnNiSEIwY2lBbUppQWlVbVZuYVhOMFpYSWdRbXh2WTJzZ1kyRnVJRzl1YkhrZ1ltVWdZMkZzYkdWa0lIZG9aVzRnY0dGeWMybHVaeUJoSUdKcGJtRnllU0J2ZFhSemFXUmxJRzltSUNJZ0ltRWdRbUZ6YVdOQ2JHOWpheUlBWm1Gc2MyVWdKaVlnSW5WdWFHRnVaR3hsWkNCdmNpQnBiblpoYkdsa0lHTmhjMlVpQUdaaGJITmxJQ1ltSUNJOGNtVnpkV3gwTFdsa1BpQnBjeUJ1YjNRZ2MzVndjRzl6WldRZ2RHOGdZbVVnYUdGdVpHeGxaQ0JvWlhKbElnQm1ZV3h6WlNBbUppQWlWVzVsZUhCbFkzUmxaQ0IwZVhCbElnQXhJRDA5SURBZ0ppWWdJazV2ZENCa1pXWnBibVZrSUhSNWNHVWlBR1poYkhObElDWW1JQ0pWYm1oaGJtUnNaV1FnZEhsd1pTSUFkMjl5WkhNdWMybDZaU2dwSUQwOUlERWdKaVlnSW1WNGNHVmpkR1ZrSUhSb1pTQnZjR1Z5WVc1a0lHOXViSGtnZEdGcmFXNW5JRzl1WlNCM2IzSmtJZ0F3SUNZbUlDSkpibk4wY25WamRHbHZiaUJ1YjNRZ1ptOTFibVFpQUNnaFNYTk1hVzVsU1c1emRDZ3BJSHg4SUdSaVoxOXNhVzVsTG1WdGNIUjVLQ2twSUNZbUlDSlBjQ2hPYnlsTWFXNWxJR0YwZEdGamFHbHVaeUIwYnlCUGNDaE9ieWxNYVc1bElHWnZkVzVrSWdBd0lDWW1JQ0pwYm1SbGVDQnZkWFFnYjJZZ1ltOTFibVFpQUdsdVpHVjRJRHdnYjNCbGNtRnVaSE5mTG5OcGVtVW9LU0FtSmlBaWIzQmxjbUZ1WkNCcGJtUmxlQ0J2ZFhRZ2IyWWdZbTkxYm1RaUFHeHBkR1Z5WVd4ZmQyOXlaSE5mYjNKZmFXUnpMbk5wZW1Vb0tTQTlQU0F4SUNZbUlDSkNiMjlzSUdOdmJuTjBZVzUwSUhOb2IzVnNaQ0JpWlNCa1pXTnNZWEpsWkNCM2FYUm9JRzl1WlNCdmNHVnlZVzVrSWdBeElEMDlJREFnSmlZZ0lsUjVjR1VnYm05MElHUmxabWx1WldRaUFHUmxZMnhoY21GMGFXOXVYM1I1Y0dWZklEMDlJRVoxYm1OMGFXOXVSR1ZqYkRvNmEwWjFibU4wYVc5dVJHVmpiRVJsWm1sdWFYUnBiMjRnSmlZZ0lsSmxaMmx6ZEdWeVFteHZZMnR6SUdOaGJpQnZibXg1SUdKbElHTmhiR3hsWkNCaFpuUmxjaUJrWldOc1lYSmhkR2x2Ymw5MGVYQmxYeUJwY3lCa1pXWnBibVZrSWdCbmNtOTFjRjlwZEdWeUlDRTlJR2xrWDNSdlgyUmxZMjl5WVhScGIyNWZhVzV6ZEhOZkxtVnVaQ2dwSUNZbUlDSlZibXR1YjNkdUlHZHliM1Z3SUVsRUlnQnBibk4wTG1sa0tDa2dKaVlnSWxCaGNuTmxjaUJsYm5OMWNtVnpJSFJvWlNCMFlYSm5aWFFnYjJZZ2RHaGxJR1JsWTI5eVlYUnBiMjRnYUdGeklHRnVJRWxFSWdCemRXTmpaWE56YjNKZlpuVnVZeUFtSmlBaVZHaGxJSE4xWTJObGMzTnZjaUJtZFc1amRHbHZiaUJqWVc1dWIzUWdZbVVnWlcxd2RIa3VJZ0J3YjNOMGIzSmtaWElnSmlZZ0lsUm9aU0J3YjNOMGIzSmtaWElnWm5WdVkzUnBiMjRnWTJGdWJtOTBJR0psSUdWdGNIUjVMaUlBY0hKbGIzSmtaWElnSmlZZ0lsUm9aU0J3Y21WdmNtUmxjaUJtZFc1amRHbHZiaUJqWVc1dWIzUWdZbVVnWlcxd2RIa3VJZ0IwWlhKdGFXNWhiQ0FtSmlBaVZHaGxJSFJsY20xcGJtRnNJR1oxYm1OMGFXOXVJR05oYm01dmRDQmlaU0JsYlhCMGVTNGlBRzV2WkdVZ0lUMGdiblZzYkhCMGNpQW1KaUFpUTJGdUozUWdaMlYwSUhSb1pTQm1jbTl1ZENCdlppQmhiaUJsYlhCMGVTQnNhWE4wTGlJQWJtOWtaU0FoUFNCdWRXeHNjSFJ5SUNZbUlDSkRZVzRuZENCblpYUWdkR2hsSUdKaFkyc2diMllnWVc0Z1pXMXdkSGtnYkdsemRDNGlBSFJvYVhNdFBrbHpTVzVCVEdsemRDZ3BJQ1ltSUNKRFlXNXViM1FnY21WdGIzWmxJR0VnYm05a1pTQm1jbTl0SUdFZ2JHbHpkQ0JwWmlCcGRDQnBjeUJ1YjNRZ2FXNGdZU0JzYVhOMExpSUFjRzl6TFQ1SmMwbHVRVXhwYzNRb0tTQW1KaUFpVUc5eklITm9iM1ZzWkNCaGJISmxZV1I1SUdKbElHbHVJR0VnYkdsemRDNGlBRUZ6VG5Wc2JFTnZibk4wWVc1MEtDa2dKaVlnSWsxMWMzUWdZbVVnWVNCbWJHOWhkR2x1WnlCd2IybHVkQ0JqYjI1emRHRnVkQzRpQUVGelRuVnNiRU52Ym5OMFlXNTBLQ2tnSmlZZ0lrMTFjM1FnWW1VZ1lXNGdhVzUwWldkbGNpQmpiMjV6ZEdGdWRDNGlBR1poYkhObElDWW1JQ0pVY21sbFpDQjBieUJqYjIxd1lYSmxJSFIzYnlCcGJuWmhiR2xrSUVOdmJuTjBZVzUwSUdsdWMzUmhibU5sY3k0aUFIUjVjR1V5TFQ1dmNHTnZaR1VvS1NBOVBTQnpjSFk2T2s5d09qcFBjRlI1Y0dWVGRISjFZM1FnSmlZZ0luUjVjR1V5SUcxMWMzUWdZbVVnWVc0Z1QzQlVlWEJsVTNSeWRXTjBJR2x1YzNSeWRXTjBhVzl1TGlJQWRIbHdaVEV0UG05d1kyOWtaU2dwSUQwOUlITndkam82VDNBNk9rOXdWSGx3WlZOMGNuVmpkQ0FtSmlBaWRIbHdaVEVnYlhWemRDQmlaU0JoYmlCUGNGUjVjR1ZUZEhKMVkzUWdhVzV6ZEhKMVkzUnBiMjR1SWdCbGVIUXRQbTl3WTI5a1pTZ3BJRDA5SUhOd2RqbzZUM0E2T2s5d1JYaDBaVzV6YVc5dUlDWW1JQ0pGZUhCbFkzUnBibWNnWVc0Z1pYaDBaVzV6YVc5dUlHbHVjM1J5ZFdOMGFXOXVMaUlBYjNCMElDWW1JQ0pXWVd4cFpHRjBiM0lnYjNCMGFXOXVjeUJ0WVhrZ2JtOTBJR0psSUU1MWJHd3VJZ0FoWVhOelpYSjBYMlp2ZFc1a1gzUmxjbTFwYm1GMGFXNW5YMjUxYkd3Z0ppWWdJa1JwWkNCdWIzUWdabWx1WkNCMFpYSnRhVzVoZEdsdVp5QnVkV3hzSUdadmNpQjBhR1VnYzNSeWFXNW5MaUlBZEhsd1pTZ3BMVDVCYzBac2IyRjBLQ2t0UG5kcFpIUm9LQ2tnUFQwZ016SWdKaVlnSWs1dmRDQmhJRE15TFdKcGRDQm1iRzloZEdsdVp5QndiMmx1ZENCMllXeDFaUzRpQUdaaGJITmxJQ1ltSUNKSmJuWmhiR2xrSUhSaGNtZGxkQ0JsYm5acGNtOXViV1Z1ZENCMllXeDFaUzRpQUdaaGJITmxJQ1ltSUNKRVpYQnlaV05oZEdWa0lIUmhjbWRsZENCbGJuWnBjbTl1YldWdWRDQjJZV3gxWlM0aUFDaDBhU0E5UFNCMGFpQjhmQ0FoZEdrdFBrbHpVMkZ0WlNoMGFpa3BJQ1ltSUNKVWVYQmxJSEJ2YjJ3Z1kyOXVkR0ZwYm5NZ2RIZHZJSFI1Y0dWeklIUm9ZWFFnWVhKbElIUm9aU0J6WVcxbExpSUFabUZzYzJVZ0ppWWdJbFJ5YVdWa0lIUnZJR052YlhCMWRHVWdkR2hsSUdoaGMyZ2dkbUZzZFdVZ2IyWWdZVzRnYVc1MllXeHBaQ0JEYjI1emRHRnVkQ0JwYm5OMFlXNWpaUzRpQUNGMGFHbHpMVDVwYzE5elpXNTBhVzVsYkY4Z0ppWWdJbE5sYm5ScGJtVnNJRzV2WkdWeklHTmhibTV2ZENCaVpTQnRiM1psWkNCaGNtOTFibVF1SWdCa1pXWWdKaVlnSWtSbFptbHVhWFJwYjI0Z2FYTWdibTkwSUhKbFoybHpkR1Z5WldRdUlnQmtaV1lnSmlZZ0tDRmtaV1l0UGtoaGMxSmxjM1ZzZEVsa0tDa2dmSHdnWkdWbUlEMDlJRWRsZEVSbFppaGtaV1l0UG5KbGMzVnNkRjlwWkNncEtTa2dKaVlnSWtSbFptbHVhWFJwYjI0Z2FYTWdibTkwSUhKbFoybHpkR1Z5WldRdUlnQjJhWE5wZEdWa0xtTnZkVzUwS0dKc2IyTnJLU0E5UFNBd0lDWW1JQ0pOWVd4bWIzSnRaV1FnWjNKaGNHZ2hJZ0F3SUNZbUlDSlZibkpsWVdOb1lXSnNaU0VpQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJ2ZFhSbGNtMXZjM1FnWTI5dWMzUnlkV04wSUdseklHNXZkQ0JoSUdaMWJtTjBhVzl1UHlFQWIzQmxjbUYwYjNJZ2ZpQUFiM0JsY21GMGIzSWdmSHdnQUc5d1pYSmhkRzl5SUh3Z0FGVnphVzVuSUhCdmFXNTBaWEp6SUhkcGRHZ2dUM0JUWld4bFkzUWdjbVZ4ZFdseVpYTWdZMkZ3WVdKcGJHbDBlU0FBVlhOcGJtY2dhVzFoWjJVdmMyRnRjR3hsY2lCM2FYUm9JRTl3VTJWc1pXTjBJSEpsY1hWcGNtVnpJR05oY0dGaWFXeHBkSGtnQUVkbGJtVnlZWFJwYm1jZ2RtRnlhV0ZpYkdVZ2NHOXBiblJsY25NZ2NtVnhkV2x5WlhNZ1kyRndZV0pwYkdsMGVTQUFWWE5wYm1jZ2NHOXBiblJsY25NZ2QybDBhQ0JQY0ZCb2FTQnlaWEYxYVhKbGN5QmpZWEJoWW1sc2FYUjVJQUE2SUUxbGJXOXllU0JUWlcxaGJuUnBZM01nVDNWMGNIVjBUV1Z0YjNKNVMwaFNJSEpsY1hWcGNtVnpJR05oY0dGaWFXeHBkSGtnQURvZ1RXVnRiM0o1SUZOamIzQmxJRkYxWlhWbFJtRnRhV3g1UzBoU0lISmxjWFZwY21WeklHTmhjR0ZpYVd4cGRIa2dBRG9nVFdWdGIzSjVJRk5sYldGdWRHbGpjeUJOWVd0bFZtbHphV0pzWlV0SVVpQnlaWEYxYVhKbGN5QmpZWEJoWW1sc2FYUjVJQUE2SUUxbGJXOXllU0JUWlcxaGJuUnBZM01nVFdGclpVRjJZV2xzWVdKc1pVdElVaUJ5WlhGMWFYSmxjeUJqWVhCaFltbHNhWFI1SUFCRFlYQmhZbWxzYVhSNUlBQjFibWxtYjNKdElITjBiM0poWjJVZ2NtVnhkV2x5WlhNZ2RHaGhkQ0IwYUdVZ2JuVnRZbVZ5SUc5bUlHSjVkR1Z6SUdKbGRIZGxaVzRnZEdobElITjBZWEowSUc5bUlIUm9aU0J3Y21WMmFXOTFjeUJ0WlcxaVpYSWdiMllnZEhsd1pTQnpkSEoxWTNRZ1lXNWtJSFJvWlNCamRYSnlaVzUwSUcxbGJXSmxjaUJpWlNCaElHMTFiSFJwY0d4bElHOW1JREUySUdKNWRHVnpMQ0JpZFhRZ2RHaGxjbVVnWVhKbElHTjFjbkpsYm5Sc2VTQUFhVzVrYVhKbFkzUnNlU0FBSUdOdmIzSmthVzVoZEdVZ1kyOXRjRzl1Wlc1MGN5d2dZblYwSUc5dWJIa2dBQ0JqYjIxd2IyNWxiblJ6TENCaWRYUWdaMmwyWlc0Z2IyNXNlU0FBVDNCVWVYQmxVblZ1ZEdsdFpVRnljbUY1TGdwR2IzSWdWblZzYTJGdUlFOXdWSGx3WlZKMWJuUnBiV1ZCY25KaGVTQmpZVzRnYjI1c2VTQUFVbVZ6ZFd4MElHbGtJRzltSUU5d1JHVmpiM0poZEdsdmJrZHliM1Z3SUdOaGJpQnZibXg1SUFCTmIyUjFiR1VnYUdGeklHbHVZMjl0Y0d4bGRHVWdhR1ZoWkdWeU9pQnZibXg1SUFBZ2NISnZiWEIwWldRZ1lua2dBQ0JwY3lCMFlYSm5aWFJsWkNCaWVTQUFkMjl5YTJkeWIzVndJRzFsYlc5eWVTQmpZVzV1YjNRZ1ltVWdkWE5sWkNCaWVTQUFZblZwYkhRdGFXNGdZMkZ1Ym05MElHSmxJSFZ6WldRZ1lua2dBQ0JqYjI1emRISjFZM1FnYUdWaFpHVmtJR0o1SUFBK0lHbHpJR3hoZEdWeUlISmxabVZ5Wlc1alpXUWdZbmtnQUN3Z1QzQlVlWEJsVTNSeWRXTjBJR052Ym5SaGFXNXBibWNnWVc0Z1QzQlVlWEJsVW5WdWRHbHRaVUZ5Y21GNUlBQkZlSEJsWTNSbFpDQnVkVzFpWlhJZ2IyWWdZMjlzZFcxdWN5QmhibVFnZEdobElHTnZiSFZ0YmlCemFYcGxJRzltSUUxaGRISnBlQ0FBUTI5dGNHOXVaVzUwSUdsdVpHVjRJQUFnS0cxbGJXSmxjaUJwYm1SbGVDQUFUV1Z0WW1WeUlHbHVaR1Y0SUFCcGJuUmxjbTVoYkNCbGNuSnZjam9nYzNkcGVucHNaU0JwYm1SbGVDQUFTVzVrWlhnZ2FYTWdiM1YwSUc5bUlHSnZkVzVrY3l3Z1kyRnVJRzV2ZENCbWFXNWtJR2x1WkdWNElBQWdiM0JsY21GdVpDQnBibVJsZUNBQVNXNWtaWGdnQUNCemRHOXlZV2RsSUdOc1lYTnpJRzExYzNRZ1ptOXNiRzkzSUFCMWMyVnlMV1JsWm1sdVpXUWdhVzV3ZFhRZ0FDQndjbTkyYVdSbFpDQmlkWFFnQUZWdWFXWnZjbTBnWVc1a0lITm9ZV1JsY2lCemRHOXlZV2RsSUdKc2IyTnJJSFpoY21saFlteGxjeUJ0ZFhOMElBQW5JSEpsY1hWcGNtVnpJR0YwSUcxdmMzUWdBQ0JoYm1RZ1lYUWdiVzl6ZENBQVQzQlRaV3hsWTNScGIyNU5aWEpuWlNCdGRYTjBJR0psSUhSb1pTQnpaV052Ym1RdGRHOHRiR0Z6ZENBQUp5QnlaWEYxYVhKbGN5QmhkQ0JzWldGemRDQUFSWGh3WldOMFpXUWdRMjl2Y21ScGJtRjBaU0IwYnlCb1lYWmxJR0YwSUd4bFlYTjBJQUFnWVhKbmRXMWxiblFnYlhWemRDQmlaU0JoZENCc1pXRnpkQ0FBWTI5dWMzUmZZWE56WlhKMElBQmhjSEJsWVhJZ1lYTWdkR2hsSUdacGJtRnNJRzFsYldKbGNpQnZaaUJoYmlCUGNGUjVjR1ZUZEhKMVkzUXNJSFJvZFhNZ1kyRnVibTkwSUFCeVpYRjFhWEpsWkNCdWRXMWxjbWxqSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0lzSUdKMWRDQm5iM1FnQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJ6YUc5MWJHUWdhR0YyWlNCcGJtWmxjbkpsWkNCaElHTnZiWEJzWlhSbElHaGhibVJzWlNCMGVYQmxMaUJuYjNRZ0FHSnlaV0ZyTFdsbUlITjBZWFJsYldWdWRDQmpiMjVrYVhScGIyNGdiWFZ6ZENCaVpTQmliMjlzTENCbmIzUWdBR1p2Y2kxc2IyOXdJR052Ym1ScGRHbHZiaUJ0ZFhOMElHSmxJR0p2YjJ3c0lHZHZkQ0FBZDJocGJHVWdZMjl1WkdsMGFXOXVJRzExYzNRZ1ltVWdZbTl2YkN3Z1oyOTBJQUJoY25KaGVXVmtJR1JwYldWdWMybHZiaUJ0ZFhOMElHSmxJREpFSUc5eUlFTjFZbVV1SUVkdmRDQUFWWE5wYm1jZ1lTQXhOaTFpYVhRZ1pteHZZWFJwYm1jZ2NHOXBiblFnQUZWemFXNW5JR0VnTmpRdFltbDBJR1pzYjJGMGFXNW5JSEJ2YVc1MElBQWdaR1ZtYVc1cGRHbHZiaUJrYjJWeklHNXZkQ0JrYjIxcGJtRjBaU0JwZEhNZ2NHRnlaVzUwSUFBZ2FHRnpJR2x1ZG1Gc2FXUWdiV0Z6YXlCamIyMXdiMjVsYm5RZ0FHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1JYaHdJSFJ2SUdoaGRtVWdkR2hsSUhOaGJXVWdZMjl0Y0c5dVpXNTBJQUJsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRVY0Y0NCa1lYUmhJSFI1Y0dVZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCamIyMXdiMjVsYm5RZ0FFVjRjR1ZqZEdWa0lITmpZV3hoY2lCdmNHVnlZVzVrSUhSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z2RHaGxJR052YlhCdmJtVnVkQ0FBYVc1MllXeHBaQ0JqYjIxd2IyNWxiblFnQUN3Z1kyOXRjRzl1Wlc1MElBQjBlWEJsSUcxcGMyMWhkR05vSUdadmNpQmhjbWQxYldWdWRDQUFUV2x6YzJsdVp5QmhjbWQxYldWdWRDQUFJR1p2Y2lCMFlYSm5aWFFnWlc1MmFYSnZibTFsYm5RZ0FDQnBiblpoYkdsa0lISmxjM1ZzZENCMGVYQmxJR1p2Y2lCUGNGTndaV05EYjI1emRHRnVkQ0FBTVRZdFltbDBJRzl5SURNeUxXSnBkQ0FBVDNCVWVYQmxVblZ1ZEdsdFpVRnljbUY1SUcxMWMzUWdZbVVnWkdWamIzSmhkR1ZrSUhkcGRHZ2dRbXh2WTJzZ2FXWWdhWFFnQUNjZ2FYTWdZM1Z5Y21WdWRHeDVJR0YwSUc5bVpuTmxkQ0FBYVhNZ1lXNGdhVzF3Y205d1pYSnNlU0J6ZEhKaFpHUnNhVzVuSUhabFkzUnZjaUJoZENCdlptWnpaWFFnQUNCdmRtVnliR0Z3Y3lCd2NtVjJhVzkxY3lCdFpXMWlaWElnWlc1a2FXNW5JR0YwSUc5bVpuTmxkQ0FBSUc5d1pYSmhibVFnWVhRZ2QyOXlaQ0J2Wm1aelpYUWdBQ0JrYjJWeklHNXZkQ0JrYjIxcGJtRjBaU0JwZEhNZ1kyOXVkR2x1ZFdVZ2RHRnlaMlYwSUFBZ1luSmhibU5vWlhNZ2RHOGdkR2hsSUd4dmIzQWdZMjl1ZEdsdWRXVWdkR0Z5WjJWMElBQWdaR1ZqYkdGeVpYTWdhVzUyWVd4cFpDQmpiMjUwYVc1MVpTQjBZWEpuWlhRZ0FFTnZiblJwYm5WbElGUmhjbWRsZENBQUxDQmlkWFFnYVhNZ2JtOTBJR052Ym5SaGFXNWxaQ0JwYmlCMGFHVWdZWE56YjJOcFlYUmxaQ0JzYjI5d0lHTnZibk4wY25WamRDQUFJR1J2WlhNZ2JtOTBJSE4wY25WamRIVnlZV3hzZVNCa2IyMXBibUYwWlNCcGRITWdZMkZ6WlNCamIyNXpkSEoxWTNRZ0FFTnZibk4wY25WamRDQUFZMkZ1SjNRZ2FHRnVaR3hsSUdFZ2MzUnlkV04wSUhkcGRHZ2diVzl5WlNCMGFHRnVJRzl1WlNCa1pXTnZjbUYwYVc5dU9pQnpkSEoxWTNRZ0FDa2dLaThnYzNSeWRXTjBJQUE2SUdWNGNHVmpkR1ZrSUZCdmFXNTBaWElnZEc4Z1ltVWdZU0J3YjJsdWRHVnlJSFJ2SUdsdWRHVm5aWElnYjNJZ1pteHZZWFFnQUhWdWEyNXZkMjRnWm05eWJXRjBJQUFnWm5KdmJTQmpiMjUwYVc1MVpTQmpiMjV6ZEhKMVkzUWdjM1JoY25ScGJtY2dZWFFnQUNCcGN5QnViM1FnZEdobElHeGhjM1FnWW14dlkyc2dhVzRnZEdobElHTnZiblJwYm5WbElHTnZibk4wY25WamRDQnpkR0Z5ZEdsdVp5QmhkQ0FBUlhod1pXTjBaV1FnYm5WdFltVnlJRzltSUdOdmJIVnRibk1nYjJZZ2JHVm1kQ0J0WVhSeWFYZ2dZVzVrSUc1MWJXSmxjaUJ2WmlCeWIzZHpJQUFnWVc1a0lISnZkM01nQUNCb1lYTWdZbkpoYm1Ob1pYTWdkRzhnYlhWc2RHbHdiR1VnYjNSb1pYSWdZMkZ6WlNCamIyNXpkSEoxWTNRZ2RHRnlaMlYwY3lBQUlHaGhjeUJpY21GdVkyaGxjeUIwYnlCMGFHVWdZMkZ6WlNCamIyNXpkSEoxWTNRZ2RHaGhkQ0IwWVhKblpYUnpJQUJOZFd4MGFYQnNaU0JqWVhObElHTnZibk4wY25WamRITWdhR0YyWlNCaWNtRnVZMmhsY3lCMGJ5QjBhR1VnWTJGelpTQmpiMjV6ZEhKMVkzUWdkR2hoZENCMFlYSm5aWFJ6SUFCRFlYTmxJR052Ym5OMGNuVmpkQ0IwYUdGMElIUmhjbWRsZEhNZ0FFTmhjR0ZpYVd4cGRIa2dTVzFoWjJWRGRXSmxRWEp5WVhrZ2FYTWdjbVZ4ZFdseVpXUWdkRzhnWVdOalpYTnpJQUJXWVhKcFlXSnNaWE1nYVdSbGJuUnBabWxsWkNCM2FYUm9JSFJvWlNCVmJtbG1iM0p0UTI5dWMzUmhiblFnYzNSdmNtRm5aU0JqYkdGemN5QUFJSFZ6WlhNZ2MzUnZjbUZuWlNCamJHRnpjeUFBYVc1MllXeHBaQ0JUVUVsU0xWWWdjM1J2Y21GblpTQmpiR0Z6Y3lBQUxDQm9ZWE1nWVNCa2FYTmhiR3h2ZDJWa0lHbHVhWFJwWVd4cGVtVnlJQ1lnYzNSdmNtRm5aU0JqYkdGemN5QUFTWFJ6SUZOMGIzSmhaMlVnUTJ4aGMzTWdiM0JsY21GdVpDQnRkWE4wSUdKbElIUm9aU0J6WVcxbElHRnpJSFJvWlNCVGRHOXlZV2RsSUVOc1lYTnpJQUJQY0VWdWRISjVVRzlwYm5RZ2FXNTBaWEptWVdObGN5QnRkWE4wSUdKbElFOXdWbUZ5YVdGaWJHVnpJSGRwZEdnZ1UzUnZjbUZuWlNCRGJHRnpjeUJ2WmlCSmJuQjFkQ2d4S1NCdmNpQlBkWFJ3ZFhRb015a3VJRVp2ZFc1a0lGTjBiM0poWjJVZ1EyeGhjM01nQUZSaGNtZGxkQ0J2WmlCRGIyMXdiMjVsYm5RZ1pHVmpiM0poZEdsdmJpQnBjeUJwYm5aaGJHbGtPaUJ0ZFhOMElIQnZhVzUwSUhSdklHRWdVM1J2Y21GblpTQkRiR0Z6Y3lCdlppQkpibkIxZENneEtTQnZjaUJQZFhSd2RYUW9NeWt1SUVadmRXNWtJRk4wYjNKaFoyVWdRMnhoYzNNZ0FHVjRjR1ZqZEdWa0lHOXdaWEpoYm1RZ1RXVnRZbVZ5Y3lBQWJtOXVMVTl3VUdocElHbHVjM1J5ZFdOMGFXOXVjeUFBYVc1MllXeHBaQ0J0WVhSeWFYZ2daR2x0Wlc1emFXOXVjeUFBSUdoaGN5QmpiMngxYlc1eklBQWdhWE1nWkdWamJHRnlaV1FnWVhNZ2RHaGxJR1JsWm1GMWJIUWdkR0Z5WjJWMElHWnZjaUIwZDI4Z1QzQlRkMmwwWTJnZ2FXNXpkSEoxWTNScGIyNXpMQ0JoZENCaWJHOWphM01nQUNCcGN5QmtaV05zWVhKbFpDQmhjeUIwYUdVZ2MzZHBkR05vSUdOaGMyVWdkR0Z5WjJWMElHWnZjaUIwZDI4Z1QzQlRkMmwwWTJnZ2FXNXpkSEoxWTNScGIyNXpMQ0JoZENCaWJHOWphM01nQUNCamIyNTBZV2x1Y3lCdFpXMWlaWEp6SUhkcGRHZ2dRblZwYkhSSmJpQmtaV052Y21GMGFXOXVMaUJVYUdWeVpXWnZjbVVnZEdocGN5QUFVMk52Y0dVZ2FXUnpJRzExYzNRZ1ltVWdUM0JEYjI1emRHRnVkQ0IzYUdWdUlGTm9ZV1JsY2lCallYQmhZbWxzYVhSNUlHbHpJQUFnWTI5c2RXMXVjeXdnWW5WMElHRmpZMlZ6Y3lCcGJtUmxlQ0JwY3lBQUlHMWxiV0psY25NdUlFeGhjbWRsYzNRZ2RtRnNhV1FnYVc1a1pYZ2dhWE1nQUNCcGN5QjBiMjhnWW1sbkxpQk5ZWGdnYUdGdVpHeGxaQ0JwYm1SbGVDQnBjeUFBSUdOaGMyVWdjMlZzWldOMGIzSnpMQ0J0WVhnZ2FYTWdBQ0IzYjNKa2N5d2dZblYwSUhOMFlYUmxaQ0IzYjNKa0lHTnZkVzUwSUdseklBQTZJR1Y0Y0dWamRHVmtJRzl3WlhKaGJtUWdTVzVrWlhobGN5QnBjeUFBTENCaWRYUWdaWGh3Y21WemMybHZiaUJwY3lBQUxDQmlkWFFnY0dGeWMyVmtJSFpsY25OcGIyNGdhWE1nQUNCd1lYSmhiV1YwWlhKekxDQnRZWGhwYlhWdElHbHpJQUFnYldWdFltVnljeXdnYldGNGFXMTFiU0JwY3lBQWMyaHBablFnY21sbmFIUWdkbUZzZFdVZ2JYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z2RHaGxJR0pwZENCM2FXUjBhQ0J2WmlCMGFHVWdiR2h6TENCM2FHbGphQ0JwY3lBQWMyaHBablFnYkdWbWRDQjJZV3gxWlNCdGRYTjBJR0psSUd4bGMzTWdkR2hoYmlCMGFHVWdZbWwwSUhkcFpIUm9JRzltSUhSb1pTQnNhSE1zSUhkb2FXTm9JR2x6SUFCQmNuSmhlU0JoWTJObGMzTWdhWE1nYjNWMElHOW1JR0p2ZFc1a2N5d2dZWEp5WVhrZ2MybDZaU0JwY3lBQVZtVmpkRzl5SUdGalkyVnpjeUJwY3lCdmRYUWdiMllnWW05MWJtUnpMQ0IyWldOMGIzSWdjMmw2WlNCcGN5QUFJR2hoY3lCaElHTnZibk4xYldWeUlHbHVJR0VnWkdsbVptVnlaVzUwSUdKaGMybGpJR0pzYjJOckxpQlVhR1VnWTI5dWMzVnRaWElnYVc1emRISjFZM1JwYjI0Z1BHbGtQaUJwY3lBQU95QmljbUZ1WTJnZ1lubHdZWE56WlhNZ0FDY2djbVZ4ZFdseVpYTWdBR1oxYm1OMGFXOXVJR1JsWTJ4aGNtVnpJQUJPYjI0dGMyVnRZVzUwYVdNZ1QzQkZlSFJKYm5OMElHMTFjM1FnYm05MElHRndjR1ZoY2lCaVpXWnZjbVVnZEhsd1pYTWdBR2x1ZG1Gc2FXUWdiM1YwWlhJZ2NISnZaSFZqZENCcGJuTjBjblZqZEdsdmJqb2dZbUZrSUhSNWNHVnpJQUJKYmlCTWIyZHBZMkZzSUdGa1pISmxjM05wYm1jZ2QybDBhQ0IyWVhKcFlXSnNaU0J3YjJsdWRHVnljeXdnZG1GeWFXRmliR1Z6SUFCSmJXRm5aU0JQY0dWeVlXNWtJRXh2WkNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dSWGh3YkdsamFYUk1iMlFnYjNCamIyUmxjeUFBSnlCeVpXWmxjbVZ1WTJWeklBQmhiR2xoY3lBQVRXRjBjbWw0SUdGalkyVnpjeUJwY3lCdmRYUWdiMllnWW05MWJtUnpMQ0J0WVhSeWFYZ2dhR0Z6SUFCcGJuUmxjbTVoYkNCbGNuSnZjam9nYzNSaGRHVnRaVzUwTFd4cGMzUWdjM1JoWTJzZ2MyaHZkV3hrSUdoaGRtVWdNU0JsYkdWdFpXNTBJR0oxZENCb1lYTWdBSE4zYVhSamFDQnpkR0YwWlcxbGJuUWdhR0Z6SUFBZ2MyRjVjeUJwZENCb1lYTWdBRU5oYkd4bFpDQm1kVzVqZEdsdmJpQm9ZWE1nQUNCd1lYSmhiV1YwWlhKekxDQmlkWFFnWm5WdVkzUnBiMjRnWTJGc2JDQm9ZWE1nQUNjdUlGUm9hWE1nYzNSeWRXTjBkWEpsSUdoaGN5QUFJR2x6SUc5MWRDQnZaaUJpYjNWdVpITXVJRlJvWlNCemRISjFZM1IxY21VZ2FHRnpJQUJTWlhOMWJIUWdWSGx3WlNCb1lYTWdBRzFoYkdadmNtMWxaQ0JQWm1aelpYUWdaR1ZqYjNKaGRHbHZiam9nWlhod1pXTjBaV1FnTVNCc2FYUmxjbUZzSUc5d1pYSmhibVFzSUdoaGN5QUFiV0ZzWm05eWJXVmtJRTFoZEhKcGVGTjBjbWxrWlNCa1pXTnZjbUYwYVc5dU9pQmxlSEJsWTNSbFpDQXhJR3hwZEdWeVlXd2diM0JsY21GdVpDd2dhR0Z6SUFBbklHaGhjeUFBWlhod1pXTjBaV1FnWVd4c0lHOXdaWEpoYm1SeklIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUlHRnpJQUJGZUhCbFkzUmxaQ0JwYm5CMWRDQjBieUJvWVhabElIUm9aU0J6WVcxbElIUnZkR0ZzSUdKcGRDQjNhV1IwYUNCaGN5QUFaWGh3WldOMFpXUWdZV3hzSUc5d1pYSmhibVJ6SUhSdklHaGhkbVVnZEdobElITmhiV1VnWW1sMElIZHBaSFJvSUdGeklBQkZlSEJsWTNSbFpDQkpiV0ZuWlNBblUyRnRjR3hsWkNCVWVYQmxKeUIwYnlCaVpTQjBhR1VnYzJGdFpTQmhjeUFBSUdOaGJtNXZkQ0JpWlNCeVpYQnlaWE5sYm5SbFpDQmhjeUFBSUdSbFkyOXlZWFJsWkNCaGN5QUFSWGh3WldOMFpXUWdhVzV3ZFhRZ2RHOGdZbVVnWVNCd2IybHVkR1Z5SUc5eUlHbHVkQ0J2Y2lCbWJHOWhkQ0IyWldOMGIzSWdBRVY0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR0VnY0c5cGJuUmxjaUJ2Y2lCcGJuUWdiM0lnWm14dllYUWdkbVZqZEc5eUlBQWdZWEJ3WldGeWN5QnBiaUIwYUdVZ1ltbHVZWEo1SUdKbFptOXlaU0JwZEhNZ1pHOXRhVzVoZEc5eUlBQjFibk4xY0hCdmNuUmxaQ0JwYldGblpTQmthVzFsYm5OcGIyNWhiR2wwZVNCbWIzSWdBR052WkdWamRuUmZZbmx1WVcxbFBIZGphR0Z5WDNRc0lHTm9ZWElzSUcxaWMzUmhkR1ZmZEQ0Nk9tTnZaR1ZqZG5SZllubHVZVzFsSUdaaGFXeGxaQ0IwYnlCamIyNXpkSEoxWTNRZ1ptOXlJQUIwYVcxbFgzQjFkRjlpZVc1aGJXVWdabUZwYkdWa0lIUnZJR052Ym5OMGNuVmpkQ0JtYjNJZ0FIUnBiV1ZmWjJWMFgySjVibUZ0WlNCbVlXbHNaV1FnZEc4Z1kyOXVjM1J5ZFdOMElHWnZjaUFBYlc5dVpYbHdkVzVqZEY5aWVXNWhiV1VnWm1GcGJHVmtJSFJ2SUdOdmJuTjBjblZqZENCbWIzSWdBRzUxYlhCMWJtTjBYMko1Ym1GdFpUeDNZMmhoY2w5MFBqbzZiblZ0Y0hWdVkzUmZZbmx1WVcxbElHWmhhV3hsWkNCMGJ5QmpiMjV6ZEhKMVkzUWdabTl5SUFCdWRXMXdkVzVqZEY5aWVXNWhiV1U4WTJoaGNqNDZPbTUxYlhCMWJtTjBYMko1Ym1GdFpTQm1ZV2xzWldRZ2RHOGdZMjl1YzNSeWRXTjBJR1p2Y2lBQVkyOXNiR0YwWlY5aWVXNWhiV1U4WTJoaGNqNDZPbU52Ykd4aGRHVmZZbmx1WVcxbElHWmhhV3hsWkNCMGJ5QmpiMjV6ZEhKMVkzUWdabTl5SUFCamRIbHdaVjlpZVc1aGJXVThkMk5vWVhKZmRENDZPbU4wZVhCbFgySjVibUZ0WlNCbVlXbHNaV1FnZEc4Z1kyOXVjM1J5ZFdOMElHWnZjaUFBWTNSNWNHVmZZbmx1WVcxbFBHTm9ZWEkrT2pwamRIbHdaVjlpZVc1aGJXVWdabUZwYkdWa0lIUnZJR052Ym5OMGNuVmpkQ0JtYjNJZ0FHTnZiR3hoZEdWZllubHVZVzFsUEhkamFHRnlYM1ErT2pwamIyeHNZWFJsWDJKNWJtRnRaU2h6YVhwbFgzUWdjbVZtY3lrZ1ptRnBiR1ZrSUhSdklHTnZibk4wY25WamRDQm1iM0lnQUNCamIyMXdiMjVsYm5SeklHWnZjaUFBVkc5dklHMWhibmtnVDNCR2RXNWpkR2x2YmxCaGNtRnRaWFJsY25NZ1ptOXlJQUFnYVhNZ2IzVjBJRzltSUdKdmRXNWtjeUJtYjNJZ0FHNXZJRzFoZEdOb2FXNW5JR052Ym5OMGNuVmpkRzl5SUdadmNpQUFPaUJsZUhCbFkzUmxaQ0JCYkdsaGMyVmtVRzlwYm5SbGNpQnZjaUJTWlhOMGNtbGpkRkJ2YVc1MFpYSWdabTl5SUFCcGJuUmxjbTVoYkNCbGNuSnZjam9nWTI5MWJHUnVKM1FnWm1sdVpDQnpZVzF3YkdWeUlHWnZjaUFBSUdseklIUm9aU0J0WlhKblpTQmliRzlqYXlCbWIzSWdBQ0JoYm1RZ1lXeHpieUIwYUdVZ2JXVnlaMlVnWW14dlkyc2dabTl5SUFCcGJuWmhiR2xrSUcxaGRISnBlQ0J6YVhwbElHWnZjaUFBZDJocGJHVWdhVzV6ZEdGdWRHbGhkR2x1WnlCeVpYUjFjbTRnZEhsd1pTQm1iM0lnQUdsdWRtRnNhV1FnZEdWNGRIVnlaU0IwZVhCbElHWnZjaUFBYVc1MFpYSnVZV3dnWlhKeWIzSTZJR052ZFd4a2JpZDBJR1pwYm1RZ2FXMWhaMlVnWm05eUlBQWdhWE1nYm05MElIWmhiR2xrSUdadmNpQUFibThnYldGMFkyaHBibWNnYjNabGNteHZZV1FnWm05eUlBQXBJR1p2Y2lBQVJYaHdaV04wWldRZ1ltOTBhQ0JKYldGblpTQlBjR1Z5WVc1a0lFZHlZV1FnYVdSeklIUnZJR0psSUdac2IyRjBJSE5qWVd4aGNuTWdiM0lnQUVSbFluVm5WSGx3WlZSbGJYQnNZWFJsVUdGeVlXMWxkR1Z5SUc5eUlBQkZlSEJsWTNSbFpDQkpiV0ZuWlNCUGNHVnlZVzVrSUVOdmJuTjBUMlptYzJWMElIUnZJR0psSUdsdWRDQnpZMkZzWVhJZ2IzSWdBRVY0Y0dWamRHVmtJRWx0WVdkbElFOXdaWEpoYm1RZ1QyWm1jMlYwSUhSdklHSmxJR2x1ZENCelkyRnNZWElnYjNJZ0FFVjRjR1ZqZEdWa0lITmpZV3hoY2lCdmNpQUFUM0JEYjI1emRHRnVkQ0IzYVhSb0lHRWdNekl0SUc5eUlEWTBMV0pwZEhNZ2FXNTBaV2RsY2lCelkyRnNZWElnZEhsd1pTQnZjaUFBSUhSdklHSmxJSFZ6WldRZ2IyNXNlU0IzYVhSb0lFZE1RMjl0Y0hWMFpTd2dUV1Z6YUU1V0xDQlVZWE5yVGxZc0lFMWxjMmhGV0ZRZ2IzSWdBRVJsWW5WblIyeHZZbUZzVm1GeWFXRmliR1VnYjNJZ1JHVmlkV2RNYjJOaGJGWmhjbWxoWW14bElIZHBkR2dnWVNBek1pMGdiM0lnQUU5d1EyOXVjM1JoYm5Rc0lFUmxZblZuUjJ4dlltRnNWbUZ5YVdGaWJHVXNJRzl5SUFCSmJpQk1iMmRwWTJGc0lHRmtaSEpsYzNOcGJtY3NJSFpoY21saFlteGxjeUJ0WVhrZ2JtOTBJR0ZzYkc5allYUmxJR0VnY0c5cGJuUmxjaUFBT2lCbGVIQmxZM1JsWkNCdWJ5QnRiM0psSUc5d1pYSmhibVJ6SUdGbWRHVnlJQUE2SUdWNGNHVmpkR1ZrSUcxdmNtVWdiM0JsY21GdVpITWdZV1owWlhJZ0FFbHVkbUZzYVdRZ2NHOXBiblJsY2lCMGVYQmxJR1p2Y2lCMllYSnBZV0pzWlNCdmNpQm1kVzVqZEdsdmJpQndZWEpoYldWMFpYSWdBRWx1ZG1Gc2FXUWdjMkZ0Y0d4bGNpQnZjaUIwWlhoMGRYSmxJSFZ6WVdkbElHWnZjaUIyWVhKcFlXSnNaU0J2Y2lCbWRXNWpkR2x2YmlCd1lYSmhiV1YwWlhJZ0FGZEhVMHdnWVhKeVlYbGxaQ0IwWlhoMGRYSmxjeUJ0ZFhOMElHSmxJREprWDJGeWNtRjVJRzl5SUdOMVltVmZZWEp5WVhrNklHbHVkbUZzYVdRZ2JYVnNkR2x6WVcxd2JHVmtJSFJsZUhSMWNtVWdkbUZ5YVdGaWJHVWdiM0lnWm5WdVkzUnBiMjRnY0dGeVlXMWxkR1Z5SUFCWFIxTk1JRzExYkhScGMyRnRjR3hsWkNCMFpYaDBkWEpsY3lCdGRYTjBJR0psSURKa0lHRnVaQ0J1YjI0dFlYSnlZWGxsWkRvZ2FXNTJZV3hwWkNCdGRXeDBhWE5oYlhCc1pXUWdkR1Y0ZEhWeVpTQjJZWEpwWVdKc1pTQnZjaUJtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElnQUhkb2FXeGxJR2x1YzNSaGJuUnBZWFJwYm1jZ2NHRnlZVzFsZEdWeUlBQlBjRVoxYm1OMGFXOXVVR0Z5WVcxbGRHVnlJQUJKYm5aaGJHbGtJSFI1Y0dVZ1ptOXlJR2x0WVdkbExDQnpZVzF3YkdWeUxDQjJZWEpwWVdKc1pTQnZjaUJtZFc1amRHbHZiaUJ3WVhKaGJXVjBaWElnZEc4Z2FXMWhaMlVnYjNJZ2MyRnRjR3hsY2lBQWMzUnlkV04wZFhKbElHMWhlU0J1YjNRZ1ltVWdZMjl1ZEdGcGJtVmtJR0Z6SUdFZ2JXVnRZbVZ5SUc5bUlHRnViM1JvWlhJZ0FISmxZV1JmZDNKcGRHVWdjM1J2Y21GblpTQmlkV1ptWlhJZ0FGZHZjbXRuY205MWNDd2dRM0p2YzNOWGIzSnJaM0p2ZFhBc0lFZGxibVZ5YVdNc0lFbHRZV2RsSUc5eUlGTjBiM0poWjJWQ2RXWm1aWElnQUNCcGN5QnViM1FnZG1Gc2FXUWdabTl5SUdOdmJYQjFkR1VnYzJoaFpHVnlJQUJNYjI5d0lHaGxZV1JsY2lBQUlHbHpJSFJvWlNCa1pXWmhkV3gwSUdKc2IyTnJJR1p2Y2lCemQybDBZMmd0YzJWc1pXTjBhVzl1SUdobFlXUmxjaUFBSUdseklHRWdZMkZ6WlNCaWJHOWpheUJtYjNJZ2MzZHBkR05vTFhObGJHVmpkR2x2YmlCb1pXRmtaWElnQUNCcGN5QjBhR1VnZEhKMVpTQmljbUZ1WTJnZ1ptOXlJR2xtTFhObGJHVmpkR2x2YmlCb1pXRmtaWElnQUNCcGN5QjBhR1VnWm1Gc2MyVWdZbkpoYm1Ob0lHWnZjaUJwWmkxelpXeGxZM1JwYjI0Z2FHVmhaR1Z5SUFCVFpXeGxZM1JwYjI0Z2FHVmhaR1Z5SUFCVGQybDBZMmdnYUdWaFpHVnlJQUJUZEhKMVkzUjFjbVZrSUdobFlXUmxjaUFBU0dWaFpHVnlJQUJoWTJObGMzTnBibWNnY0dWeUxYWmxjblJsZUNCdFpXMWlaWElnQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnV0NCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklIUm9aU0JtYVhKemRDQnRaVzFpWlhJZ0FITjBjblZqZENCdFpXMWlaWElnQUNCdmJpQnRaVzFpWlhJZ0FGZEhVMHdnWkc5bGN5QnViM1FnYzNWd2NHOXlkQ0J5YjNjdGJXRnFiM0lnYldGMGNtbGpaWE02SUdOaGJpZDBJSFJ5WVc1emJHRjBaU0J0WlcxaVpYSWdBSGRvYVd4bElHRnVZV3g1ZW1sdVp5QnpkSEoxWTNSMWNtVWdiV1Z0WW1WeUlBQWdiR0Y1YjNWMElISjFiR1Z6T2lCdFpXMWlaWElnQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnUlhod0lIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQnpZMkZzWVhJZ0FHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdNekl0WW1sMElHWnNiMkYwSUhOallXeGhjaUFBUlhod1pXTjBaV1FnVW1WemRXeDBJRlI1Y0dVZ2MzUnlkV04wSUcxbGJXSmxjaUIwZVhCbGN5QjBieUJpWlNCcGJuUmxaMlZ5SUhOallXeGhjaUFBYkc5dmNDQUFJQ2gwYnlBQVJYaHdaV04wWldRZ2JuVnRZbVZ5SUc5bUlHTnZiSFZ0Ym5NZ2IyWWdVbVZ6ZFd4MElGUjVjR1VnWVc1a0lISnBaMmgwSUcxaGRISnBlQ0IwYnlBQUlHNXZkQ0J6WVhScGMyWjVhVzVuSUdGc2FXZHViV1Z1ZENCMGJ5QUFJR0p5WVc1amFHVnpJSFJ2SUFCallXNXViM1FnWVhOemFXZHVJSFJ2SUFCdWJ5QnRZWFJqYUdsdVp5QmpZV3hzSUhSdklBQmxNaUJ0ZFhOMElHSmxJR3hsYzNNZ2RHaGhiaUJ2Y2lCbGNYVmhiQ0IwYnlBQVJYaHdaV04wWldRZ2JuVnRZbVZ5SUc5bUlHTnZiSFZ0Ym5NZ2IyWWdkR2hsSUcxaGRISnBlQ0IwYnlCaVpTQmxjWFZoYkNCMGJ5QUFaWGh3WldOMFpXUWdiM0JsY21GdVpDQllJR052YlhCdmJtVnVkQ0IwZVhCbElIUnZJR0psSUdWeGRXRnNJSFJ2SUFCbGVIQmxZM1JsWkNCdmNHVnlZVzVrSUZBeElHTnZiWEJ2Ym1WdWRDQjBlWEJsSUhSdklHSmxJR1Z4ZFdGc0lIUnZJQUJsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRkF3SUdOdmJYQnZibVZ1ZENCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklBQWdaMjlwYm1jZ2RHOGdBRG9nYVc0Z1ZuVnNhMkZ1SUdWdWRtbHliMjV0Wlc1MElFVjRaV04xZEdsdmJpQnpZMjl3WlNCcGN5QnNhVzFwZEdWa0lIUnZJQUE2SUdsdUlGWjFiR3RoYmlCbGJuWnBjbTl1YldWdWRDQkZlR1ZqZFhScGIyNGdVMk52Y0dVZ2FYTWdiR2x0YVhSbFpDQjBieUFBU1c1a1pYaGxjeUJ3WVhOelpXUWdkRzhnQUZSb1pTQThhV1ErSUhCaGMzTmxaQ0IwYnlBQVEyRndZV0pwYkdsMGVTQlRkRzl5WVdkbFNXMWhaMlZTWldGa1YybDBhRzkxZEVadmNtMWhkQ0JwY3lCeVpYRjFhWEpsWkNCMGJ5QUFJR2x6SUc1dmRDQmhiR2xuYm1Wa0lIUnZJQUFnWkdWamIzSmhkR2x2YmlCdFlYa2dibTkwSUdKbElHRndjR3hwWldRZ2RHOGdBR0Z5Y21GNUlHTnZibk4wY25WamRHOXlJR2hoY3lCMGIyOGdBSE4wY25WamRIVnlaU0JqYjI1emRISjFZM1J2Y2lCb1lYTWdkRzl2SUFCallXNG5kQ0JrYnlBQWRXNW9ZVzVrYkdWa0lHTnZibk4wWVc1MElHbHVjM1J5ZFdOMGFXOXVJQUJKYm5OMGNuVmpkR2x2YmlCeVpYTmxjblpsWkNCbWIzSWdablYwZFhKbElIVnpaU3dnZFhObElHOW1JSFJvYVhNZ2FXNXpkSEoxWTNScGIyNGdBRWx1SUU5d1VHaHBJR2x1YzNSeWRXTjBhVzl1SUFCMWJtaGhibVJzWldRZ1IweFRUQzV6ZEdRdU5EVXdJR2x1YzNSeWRXTjBhVzl1SUFCbmJHOWlZV3dnZG1GeWFXRmliR1Z6S1NCaGJtUWdjMlZqZEdsdmJpQXhNQ0FvWm5WdVkzUnBiMjRnQUNCMWMyVmtJR2x1SUdaMWJtTjBhVzl1SUFBZ1lYSmxJSEpsWm1WeVpXNWpaV1FnWW5WMElHNXZkQ0JrWldacGJtVmtJR2x1SUdaMWJtTjBhVzl1SUFBZ2FYTWdkWE5sWkNCdmRYUnphV1JsSUc5bUlHbDBKM01nWkdWbWFXNXBibWNnWm5WdVkzUnBiMjRnQUNCdlppQm1kVzVqZEdsdmJpQUFiMllnWkdWaWRXY2dhVzVtYnlCbGVIUmxibk5wYjI0Z2JYVnpkQ0JoY0hCbFlYSWdhVzRnWVNCbWRXNWpkR2x2YmlBQU95QkdkVzVqZEdsdmJpQUFJR05oYm01dmRDQmlaU0IxYzJWa0lHRnpJR0VnYldWdFltVnlJR1JsWTI5eVlYUnBiMjRnQURvZ2RXNXJibTkzYmlCa1pXTnZjbUYwYVc5dUlBQlRjR1ZqYVdGc2FYcGhkR2x2YmlCamIyNXpkR0Z1ZENCdmNHVnlZWFJwYjI0Z0FHbHVkbUZzYVdRZ2FXMWhaMlVnZEhsd1pTQm1iM0lnYVcxaFoyVWdiV1Z0YjNKNUlHOWlhbVZqZENCa1pXTnNZWEpoZEdsdmJpQUFJR3h2WTJGMGFXOXVJR0Z6YzJsbmJtMWxiblFnWVhRZ2JHOWpZWFJwYjI0Z0FFbHVkbUZzYVdRZ1UxQkpVaTFXSUdKcGJtRnllU0IyWlhKemFXOXVJQUFnY21WeGRXbHlaWE1nZG1WeWMybHZiaUFBS1NCeVpYRjFhWEpsY3lCVFVFbFNMVllnZG1WeWMybHZiaUFBVm1WeWMybHZiaUFBSnlCM2FYUm9iM1YwSUdWNGRHVnVjMmx2YmlBQVJtOTFibVFnZFc1eVpXTnZaMjVwZW1Wa0lHVjRkR1Z1YzJsdmJpQUFSWGh3WldOMFpXUWdVMmhwWm5RZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCa2FXMWxibk5wYjI0Z0FFVjRjR1ZqZEdWa0lHOXdaWEpoYm1SeklIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUlBQkZlSEJsWTNSbFpDQmhjbWwwYUcxbGRHbGpJRzl3WlhKaGJtUnpJSFJ2SUdoaGRtVWdkR2hsSUhOaGJXVWdaR2x0Wlc1emFXOXVJQUJGZUhCbFkzUmxaQ0JDWVhObElIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUlBQWdkMmhwWTJnZ2FYTWdaR1Z3Wlc1a1pXNTBJRzl1SUFBZ1pHVndaVzVrY3lCdmJpQUFSWGh3WldOMFpXUWdRMjl1YzNScGRIVmxiblFnZEhsd1pTQjBieUJpWlNCbGNYVmhiQ0IwYnlCMGFHVWdZMjlzZFcxdUlBQjFibkpsWTI5bmJtbDZaV1FnWW5WcGJIUnBiaUFBUVd4c2IyTmhkR2x1WnlCaElIWmhjbWxoWW14bElHTnZiblJoYVc1cGJtY2dZU0E0TFdKcGRDQmxiR1Z0Wlc1MElHbHVJQUJCYkd4dlkyRjBhVzVuSUdFZ2RtRnlhV0ZpYkdVZ1kyOXVkR0ZwYm1sdVp5QmhJREUyTFdKcGRDQmxiR1Z0Wlc1MElHbHVJQUJVYUdVZ2NtVnpkV3gwSUhCdmFXNTBaWElnYzNSdmNtRm5aU0JqYkdGemN5QmhibVFnWW1GelpTQndiMmx1ZEdWeUlITjBiM0poWjJVZ1kyeGhjM01nYVc0Z0FGUm9aU0J1ZFcxaVpYSWdiMllnYVc1a1pYaGxjeUJwYmlBQVZHaGxJR0Z5Y21GNUlHMWxiV0psY2lCcGJpQUFWR2hsSUZOMGNuVmpkSFZ5WlNkeklHeGhjM1FnYldWdFltVnlJR2x1SUFCUGNFeHZiM0JOWlhKblpTQnRkWE4wSUdKbElIUm9aU0J6WldOdmJtUXRkRzh0YkdGemRDQnBibk4wY25WamRHbHZiaUJwYmlBQVEyRnVibTkwSUdGc2JHOWpZWFJsSUdFZ2RtRnlhV0ZpYkdVZ1kyOXVkR0ZwYm1sdVp5QmhJRGd0WW1sMElIUjVjR1VnYVc0Z0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCaElIWmhjbWxoWW14bElHTnZiblJoYVc1cGJtY2dZU0F4TmkxaWFYUWdkSGx3WlNCcGJpQUFWR2hsSUZOMGNuVmpkSFZ5WlNkeklIUjVjR1VnYVc0Z0FGUm9aU0IwZVhCbElHbHVJQUFnWm05eUlIWmhjbWxoWW14bElHbHVJQUFnYVhNZ2JtOTBJSFpoYkdsa0lHbHVJQUJrYVhOallYSmtJSE4wWVhSbGJXVnVkQ0JqWVc1dWIzUWdZbVVnZFhObFpDQnBiaUFBS1NCallXNXViM1FnWW1VZ2RYTmxaQ0JwYmlBQVptNGdBQ0JqYjIxd2IyNWxiblJ6TENCaWRYUWdaMmwyWlc0Z0FGTmpiM0JsSUdsa2N5QnRkWE4wSUdKbElHTnZibk4wWVc1MElHOXlJSE53WldOcFlXeHBlbUYwYVc5dUlHTnZibk4wWVc1MElIZG9aVzRnQUNrZ2JYVnpkQ0JpWlNCc1pYTnpJSFJvWVc0Z0FFUmxZblZuSUdsdVptOGdaWGgwWlc1emFXOXVJR2x1YzNSeWRXTjBhVzl1Y3lCdmRHaGxjaUIwYUdGdUlBQjJaV04wYjNJZ1kyOXRjRzl1Wlc1MElHbHVaR1Y0SUdseklHeGhjbWRsY2lCMGFHRnVJQUJUZEhKMVkzUjFjbVVnVG1WemRHbHVaeUJFWlhCMGFDQnRZWGtnYm05MElHSmxJR3hoY21kbGNpQjBhR0Z1SUFCTWFYUmxjbUZzSUhOMGNtbHVaeUJwY3lCc2IyNW5aWElnZEdoaGJpQUFUM0JVZVhCbFJuVnVZM1JwYjI0Z2JXRjVJRzV2ZENCMFlXdGxJRzF2Y21VZ2RHaGhiaUFBVDNCTWIyOXdUV1Z5WjJVZ2JYVnpkQ0JwYlcxbFpHbGhkR1ZzZVNCd2NtVmpaV1JsSUdWcGRHaGxjaUJoYmlBQVQzQlRaV3hsWTNScGIyNU5aWEpuWlNCdGRYTjBJR2x0YldWa2FXRjBaV3g1SUhCeVpXTmxaR1VnWldsMGFHVnlJR0Z1SUFCR2IzSWdWblZzYTJGdUxDQmhiaUJQY0ZSNWNHVlRkSEoxWTNRZ2RtRnlhV0ZpYkdVZ1kyOXVkR0ZwYm1sdVp5QmhiaUFBTENCemFXNWpaU0JwZENCcGN5QnViM1FnYzNCbFkybG1hV1ZrSUdGeklIUmhhMmx1WnlCaGJpQUFWblZzYTJGdUlITndaV01nWkc5bGN5QnViM1FnWVd4c2IzY2dRblZwYkhSSmJpQUFWblZzYTJGdUlITndaV01nWVd4c2IzZHpJRUoxYVd4MFNXNGdBQ0IzYUdsamFDQnBjeUJrWldOdmNtRjBaV1FnZDJsMGFDQkNkV2xzZEVsdUlBQlZjMmx1WnlCQ2RXbHNkRWx1SUFCQlkyTnZjbVJwYm1jZ2RHOGdkR2hsSUZaMWJHdGhiaUJ6Y0dWaklFSjFhV3gwU1c0Z0FFSnlZVzVqYUNCbWNtOXRJQUJ5WldGa2FXNW5JR1p5YjIwZ0FFWnliMjBnQUU5d1VHaHBJRzExYzNRZ1lYQndaV0Z5SUhkcGRHaHBiaUJoSUc1dmJpMWxiblJ5ZVNCaWJHOWpheUJpWldadmNtVWdZV3hzSUFCRmVIQmxZM1JsWkNCSmJXRm5aU0FuVTJGdGNHeGxaQ0JVZVhCbEp5QjBieUJpWlNCMGFHVWdjMkZ0WlNCaGN5QlVaWGhsYkNBQVBpQjNhR2xqYUNCcGN5QmpZV3hzWldRZ2QybDBhQ0JsZUdWamRYUnBiMjRnYlc5a1pXd2dBQ0IwYnlCaVpTQjFjMlZrSUhkcGRHZ2dkR2hsSUdWNFpXTjFkR2x2YmlCdGIyUmxiQ0FBUlhod1pXTjBaV1FnZEc5MFlXd2diblZ0WW1WeUlHOW1JRU52Ym5OMGFYUjFaVzUwY3lCMGJ5QmlaU0JsY1hWaGJDQUFSWGh3WldOMFpXUWdkRzkwWVd3Z2JuVnRZbVZ5SUc5bUlHZHBkbVZ1SUdOdmJYQnZibVZ1ZEhNZ2RHOGdZbVVnWlhGMVlXd2dBR1Y0Y0dWamRHVmtJRkpsYzNWc2RDQlVlWEJsSUhSdklHSmxJR0VnYzNSeWRXTjBJSGRwZEdnZ2RIZHZJR2xrWlc1MGFXTmhiQ0FBSUdKeVlXNWphR1Z6SUhSdklHWjFibU4wYVc5dUlHVnVkSEo1SUdKc2IyTnJJQUJHZFc1amRHbHZiaUJsYm5SeWVTQmliRzlqYXlBQUlHbHpJSFJoY21kbGRHVmtJR0o1SUdKc2IyTnJJQUFnWVhCd1pXRnljeUJoZENCdmNpQmlaV1p2Y21VZ2RHaGxJR3h2YjNBbmN5QmpiMjUwYVc1MVpTQmpiMjV6ZEhKMVkzUWdhR1ZoWkdWa0lHSjVJR0pzYjJOcklBQnBiblpoYkdsa0lITjBjblZqZEhWeVpUb2dkR2hsYmkxamJHRjFjMlVnYUdWaFpHVmtJR0o1SUdKc2IyTnJJQUJHYVhKemRDQmliRzlqYXlBQVZHaGxjbVVnYlhWemRDQmlaU0J1YnlCdGIzSmxJSFJvWVc0Z2IyNWxJSEIxYzJnZ1kyOXVjM1JoYm5RZ1lteHZZMnNnQUNCMGJ5QmtaV1poZFd4MElHSnNiMk5ySUFBZ2RHOGdaR1ZtWVhWc2RDQjBZWEpuWlhRZ1lteHZZMnNnQUNCMGJ5QmpZWE5sSUhSaGNtZGxkQ0JpYkc5amF5QUFhVzUwWlhKdVlXd2daWEp5YjNJNklITjBZWFJsYldWdWRITWdjM1JoWTJzZ1pXMXdkSGtnWVhRZ1lteHZZMnNnQUVsdWRtRnNhV1FnWm5WdVkzUnBiMjRnWlhocGRDQmhkQ0JpYkc5amF5QUFRMjl1ZEhKdmJDQm1iRzkzSUdScGRtVnlaMlZ6SUdGMElHSnNiMk5ySUFBZ2FYTWdZVzRnYVc1MllXeHBaQ0JsZUdsMElHWnliMjBnWTI5dWMzUnlkV04wSUhOMFlYSjBhVzVuSUdGMElHSnNiMk5ySUFBZ1pXNWthVzVuSUdGMElHSnNiMk5ySUFBZ1ptOXlJR3h2YjNBZ2FHVmhaR1ZrSUdGMElHSnNiMk5ySUFBZ2FXNGdhV1l0YzJWc1pXTjBhVzl1SUdobFlXUmxaQ0JoZENCaWJHOWpheUFBT2lCa1pXTnNZWEpsY3lCaWJHOWpheUFBSUdGdVpDQmhiSE52SUhSb1pTQnRaWEpuWlNCaWJHOWpheUJtYjNJZ2FHVmhaR1Z5SUdKc2IyTnJJQUFnYVdZdGMyVnNaV04wYVc5dUlHaGxZV1JsY2lCaWJHOWpheUFBU1c1MllXeHBaQ0J6ZEhKMVkzUjFjbVZrSUdobFlXUmxjaUJpYkc5amF5QUFVM1J5ZFdOMGRYSmxaQ0JvWldGa1pYSWdZbXh2WTJzZ0FFaGxZV1JsY2lCaWJHOWpheUFBSUdGdVpDQmhiSE52SUhSdklHSnNiMk5ySUFBZ2FHRnpJR2x1ZG1Gc2FXUWdZbkpoYm1Ob0lIUnZJR0pzYjJOcklBQWdhVzRnVDNCVGQybDBZMmdnYVc0Z1lteHZZMnNnQUNCa2IyVnpJRzV2ZENCa2IyMXBibUYwWlNCcGRITWdkWE5sSUdsdUlHSnNiMk5ySUFBZ1pHVm1hVzVsWkNCcGJpQmliRzlqYXlBQVUzZHBkR05vSUdKeVlXNWphQ0JtY205dElHSnNiMk5ySUFCQ2NtRnVZMmdnWm5KdmJTQmliRzlqYXlBQWFXNTBaWEp1WVd3Z1pYSnliM0k2SUhSdmJ5QnRZVzU1SUcxbGNtZGxJR0pzYjJOcmN5QmlaV1p2Y21VZ1lteHZZMnNnQUN3Z1luVjBJR2wwY3lCdFpYSm5aU0JpYkc5amF5QUFJR1J2WlhNZ2JtOTBJSE4wY21samRHeDVJR1J2YldsdVlYUmxJR2wwY3lCdFpYSm5aU0JpYkc5amF5QUFJR0p5WVc1amFHVnpJSFJ2SUdKdmRHZ2dkR2hsSUcxbGNtZGxJR0pzYjJOcklBQWdaR1ZqYkdGeVpYTWdhVzUyWVd4cFpDQnRaWEpuWlNCaWJHOWpheUFBVFdWeVoyVWdZbXh2WTJzZ0FHbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCaWJHOWpheUFBVDNCVWVYQmxVblZ1ZEdsdFpVRnljbUY1SUcxMWMzUWdZbVVnWkdWamIzSmhkR1ZrSUhkcGRHZ2dRblZtWm1WeVFteHZZMnNnQUUxbGNtZGxJRUpzYjJOcklBQkpiblpoYkdsa0lFUmxjSFJvSUFBbklHUmxZMjl5WVhSbFpDQjNhWFJvSUdKdmRHZ2dBRk5sY1hWbGJtTmxJRzltSUdOdmJYQnZibVZ1ZEhNZ2MzUmhjblJwYm1jZ2QybDBhQ0FBSUdGdVpDQmxibVJwYm1jZ2QybDBhQ0FBWVd4c0lHMWxiV0psY25NZ2IyWWdkR2hoZENCemRISjFZM1IxY21VZ2RIbHdaU0J0ZFhOMElHRnNjMjhnWW1VZ1pHVmpiM0poZEdWa0lIZHBkR2dnQUNjZ1pHVmpiM0poZEdWa0lIZHBkR2dnQUVWNGNHVmpkR1ZrSUVsdFlXZGxJRTl3WlhKaGJtUWdURzlrSUhSdklHSmxJR2x1ZENCelkyRnNZWElnZDJobGJpQjFjMlZrSUhkcGRHZ2dBRTFsYlc5eWVTQlRaVzFoYm5ScFkzTWdRV054ZFdseVpTQmhibVFnUVdOeGRXbHlaVkpsYkdWaGMyVWdZMkZ1Ym05MElHSmxJSFZ6WldRZ2QybDBhQ0FBYVc1MFpYSnVZV3dnWlhKeWIzSTZJSFZ1WW1Gc1lXNWpaV1FnYzNSeWRXTjBkWEpsWkNCamIyNXpkSEoxWTNSeklIZG9aVzRnYkdGaVpXeHBibWNnYzNSeWRXTjBkWEpsWkNCamIyNXpkSEoxWTNSek9pQmxibVJsWkNCM2FYUm9JQUIwYUdseklHbHVjM1J5ZFdOMGFXOXVJR2x6SUdOMWNuSmxiblJzZVNCc2FXMXBkR1ZrSUhSdklETXlMV0pwZENCM2FXUjBhQ0FBSUdoaGN5QmlhWFFnZDJsa2RHZ2dBQ0JvWVhNZ1kyOXRjRzl1Wlc1MGN5QjNhWFJvSUdKcGRDQjNhV1IwYUNBQVJYaHdaV04wWldRZ2IzQmxjbUZ1WkhNZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCaWFYUWdkMmxrZEdnZ0FFVjRjR1ZqZEdWa0lHRnlhWFJvYldWMGFXTWdiM0JsY21GdVpITWdkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQmlhWFFnZDJsa2RHZ2dBRVY0Y0dWamRHVmtJRUpoYzJVZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCaWFYUWdkMmxrZEdnZ0FHbHVkbUZzYVdRZ2RtVmpkRzl5SUhkcFpIUm9JQUJoY21VZ2RYTmxaQ0J2Ym14NUlHRnpJR2hoYm1Sc1pYTWdkRzhnY21WbVpYSWdkRzhnYjNCaGNYVmxJSEpsYzI5MWNtTmxjeTRnVTNWamFDQUFkWE5sWkNCMGJ5QmhZMk5sYzNNZ2RISmhibk53WVhKbGJuUWdZblZtWm1WeUlHSmhZMnRsWkNCeVpYTnZkWEpqWlhNdUlGTjFZMmdnQUdGdFltbG5kVzkxY3lCdmRtVnliRzloWkNCM2FHbHNaU0JoZEhSbGJYQjBhVzVuSUhSdklHMWhkR05vSUFBZ2FYTWdhVzUyWVd4cFpDQmhablJsY2lCbWIyeHNiM2RwYm1jZ0FDQm9ZWFpwYm1jZ0FFaGhkbWx1WnlBQVkyOXVkR2x1ZFdsdVp5QUFJR1JsWTI5eVlYUnBiMjRnZEdGeVoyVjBhVzVuSUFCRmJuUnllUzF3YjJsdWRDQm9ZWE1nWTI5dVpteHBZM1JwYm1jZ0FIZG9hV3hsSUdsdWMzUmhiblJwWVhScGJtY2dBRG9nYldsemMybHVaeUFBUm05eUlGWjFiR3RoYml3Z1QzQlVlWEJsVTNSeWRXTjBJSFpoY21saFlteGxjeUJqYjI1MFlXbHVhVzVuSUFBZ2FYTWdjbVZtWlhKbGJtTnBibWNnQUhaaGNtbGhZbXhsY3lCdGRYTjBJR0psSUhSNWNHVmtJR0Z6SUU5d1ZIbHdaVk4wY25WamRDd2diM0lnWVc0Z1lYSnlZWGtnYjJZZ0FDQnBjeUJ2ZFhRZ2IyWWdZbTkxYm1SeklHWnZjaUJ0WVhSeWFYZ2diMllnQUc5MWRIQjFkQ0J2WmlBQWFXNXdkWFFnYjJZZ0FITjBZWFJsYldWdWRDQnVaWE4wYVc1bklHUmxjSFJvSUM4Z1kyaGhhVzVwYm1jZ2JHVnVaM1JvSUdWNFkyVmxaSE1nYkdsdGFYUWdiMllnQUc1MWJXSmxjaUJ2WmlBbmIzWmxjbkpwWkdVbklIWmhjbWxoWW14bGN5QmxlR05sWldSbFpDQnNhVzFwZENCdlppQUFZMjl1ZEdGcGJtbHVaeUJQY0ZSNWNHVlNkVzUwYVcxbFFYSnlZWGtnYlhWemRDQm9ZWFpsSUhOMGIzSmhaMlVnWTJ4aGMzTWdiMllnQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnV0NCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklHMWxiV0psY25NZ2IyWWdBQ0JwY3lCdmRYUWdiMllnWW05MWJtUnpJR1p2Y2lCMlpXTjBiM0lnYjJZZ0FHbHVkQ0J6WTJGc1lYSWdiM0lnZG1WamRHOXlJSGRwZEdnZ2RHaGxJSE5oYldVZ2JuVnRZbVZ5SUc5bUlBQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a2N5QlFNQ0JoYm1RZ1VERWdkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQnVkVzFpWlhJZ2IyWWdBSEpsWVdOb1pXUWdiV0Y0SUdWNGNISmxjM05wYjI0Z1pHVndkR2dnYjJZZ0FHRnljbUY1SUdoaGN5QnVaWE4wYVc1bklHUmxjSFJvSUc5bUlBQW5JR2hoY3lCdVpYTjBhVzVuSUdSbGNIUm9JRzltSUFBc0lHSjFkQ0IzYVhSb0lHRnVJR1ZzWlcxbGJuUWdjMmw2WlNCdlppQUFZMjl0WW1sdVpXUWdLRlpsWTNSdmNqRWdLeUJXWldOMGIzSXlLU0J6YVhwbElHOW1JQUJVYUdVZ1VtVnpkV3gwSUZSNWNHVWdiMllnQUNjZ2JYVnpkQ0JpWlNCaElHMTFiSFJwY0d4bElHOW1JQUFuSUdoaGN5QmhJSE4wY21sa1pTQnZaaUFBSUc5d1pYSmhibVFnYjJZZ0FHVjRjR1ZqZEdWa0lISmxjM1ZzZENCMGVYQmxJRzExYzNRZ1ltVWdZU0J5WlhOMWJIUWdhV1FnYjJZZ0FDQjNiM0prY3lCcGJuTjBaV0ZrSUc5bUlBQmhJRzkyWlhKeWFXUmxJSGRwZEdnZ1lXNGdTVVFnYjJZZ0FHSnlaV0ZySUdsbUlBQk9iMjVRY21sMllYUmxVRzlwYm5SbGNrdElVaUJ0ZFhOMElHSmxJSE53WldOcFptbGxaQ0JwWmlBQUlHOW1JSGR2Y210bmNtOTFjSE5wZW1VZ0FDQnBjeUJ1YjNRZ1lXeHBaMjVsWkNCMGJ5QnpZMkZzWVhJZ1pXeGxiV1Z1ZENCemFYcGxJQUJqWVc1dWIzUWdhVzVwZEdsaGJHbDZaU0FBT2lCRGIyMXdiMjVsYm5RZ1EyOTFiblFnYlhWemRDQmlaU0J3YjNOcGRHbDJaU0FBT2lCV1pXTjBiM0lnUTI5MWJuUWdiWFZ6ZENCaVpTQndiM05wZEdsMlpTQUFWbUZ5YVdGaWJHVWdaR1ZqYkdGeVlYUnBiMjV6SUhSb1lYUWdhVzVqYkhWa1pTQnBibWwwYVdGc2FYcGxjbk1nYlhWemRDQm9ZWFpsSUFCSmJpQldkV3hyWVc0c0lFOXdWSGx3WlVadmNuZGhjbVJRYjJsdWRHVnlJRzExYzNRZ2FHRjJaU0FBUlhod1pXTjBaV1FnU1cxaFoyVWdUM0JsY21GdVpDQkhjbUZrSUdSNUlIUnZJR2hoZG1VZ0FFVjRjR1ZqZEdWa0lFbHRZV2RsSUU5d1pYSmhibVFnUjNKaFpDQmtlQ0IwYnlCb1lYWmxJQUJGZUhCbFkzUmxaQ0JKYldGblpTQlBjR1Z5WVc1a0lFTnZibk4wVDJabWMyVjBJSFJ2SUdoaGRtVWdBRVY0Y0dWamRHVmtJRWx0WVdkbElFOXdaWEpoYm1RZ1QyWm1jMlYwSUhSdklHaGhkbVVnQUVWNGNHVmpkR1ZrSUVOdmIzSmthVzVoZEdVZ2RHOGdhR0YyWlNBQUlHbHVaR1Y0SUhaaGJIVmxJQUJFZFhCc2FXTmhkR1VnWTJGelpTQjJZV3gxWlNBQVJHVmlkV2RUWTI5d1pTd2dSR1ZpZFdkT2IxTmpiM0JsTENCRVpXSjFaMFJsWTJ4aGNtVXNJRVJsWW5WblZtRnNkV1VnQUdWNGNHVmpkR1ZrSUc5d1pYSmhibVFnVkdGeVoyVjBJRzExYzNRZ1ltVWdSR1ZpZFdkVWVYQmxRMjl0Y0c5emFYUmxJQUJEWVhCaFltbHNhWFI1SUZOMGIzSmhaMlZKYldGblpWZHlhWFJsVjJsMGFHOTFkRVp2Y20xaGRDQnBjeUJ5WlhGMWFYSmxaQ0IwYnlCM2NtbDBaU0FBZEdoaGRDQmhiR3h2WTJGMFpTQndiMmx1ZEdWeWN5QnRkWE4wSUdKbElHbHVJRVoxYm1OMGFXOXVJRzl5SUZCeWFYWmhkR1VnQUdSMWNHeHBZMkYwWlNBQVkyRnVibTkwSUhWelpTQUFmU0JsYkhObElBQmpZWE5sSUFCMWJuTjFjSEJ2Y25SbFpEb2dWVzVwWm05eWJVTnZibk4wWVc1MElIWmhjbWxoWW14bElHOXlJR1oxYm1OMGFXOXVJSEJoY21GdFpYUmxjaUJwY3lCdWIzUWdZU0J5WldOdloyNXBlbVZrSUhOaGJYQnNaWElnYjNJZ2RHVjRkSFZ5WlNBQWMzUnlkV04wZFhKbElBQldZWEpwWVdKc1pYTWdhV1JsYm5ScFptbGxaQ0IzYVhSb0lIUm9aU0JWYm1sbWIzSnRJSE4wYjNKaFoyVWdZMnhoYzNNZ1lYSmxJQUJCY25KaGVTQjBlWEJsSUFCVWVYQmxJRzltSUVWNGNHVmpkR1ZrVm1Gc2RXVWdiM0JsY21GdVpDQnZaaUJQY0VWNGNHVmpkRXRJVWlCa2IyVnpJRzV2ZENCdFlYUmphQ0IwYUdVZ2NtVnpkV3gwSUhSNWNHVWdBRlI1Y0dVZ2IyWWdWbUZzZFdVZ2IzQmxjbUZ1WkNCdlppQlBjRVY0Y0dWamRFdElVaUJrYjJWeklHNXZkQ0J0WVhSamFDQjBhR1VnY21WemRXeDBJSFI1Y0dVZ0FDQjBhR0YwSUdseklHRnNjbVZoWkhrZ2FHRnVaR3hsWkNCaWVTQmhJR2hoYm1Sc1pYSWdabTl5SUhSNWNHVWdBRkpsY0d4aFkyVkJiR3dvS1NCallXeHNaV1FnZDJsMGFDQmhJR2hoYm1Sc1pYSWdabTl5SUhSNWNHVWdBRU52YlhCdmJtVnVkQ0JrWldOdmNtRjBhVzl1SUhOd1pXTnBabWxsWkNCbWIzSWdkSGx3WlNBQUlHaGhjeUJ1YjI0dGNHOXBiblJsY2lCMGVYQmxJQUJOWVhSeWFYaFRkSEpwWkdVZ1kyRnVibTkwSUdKbElHRndjR3hwWldRZ2RHOGdkSGx3WlNBQWRXNWhZbXhsSUhSdklISmxiVzkyWlNCemRHRjBaVzFsYm5RZ1puSnZiU0J3WVhKbGJuUWdiMllnZEhsd1pTQUFkVzVvWVc1a2JHVmtJSFpoY21saFlteGxJSFI1Y0dVZ0FFVjRjR1ZqZEdWa0lHTnZiSFZ0YmlCMGVYQmxJRzltSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdWeGRXRnNJSFJ2SUhSb1pTQjBlWEJsSUFBZ2FHRnpJR2x1ZG1Gc2FXUWdjRzlwYm5SbFpTQjBlWEJsSUFCVFVFbFNMVllnZEhsd1pTQUFSWGh3WldOMFpXUWdRMjl0Y0c5dVpXNTBJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVZ0FDa2dZWEJ3WldGeWN5QnRkV3gwYVhCc1pTQjBhVzFsY3lCaGN5QndhWEJsYkdsdVpTQUFaVzVoWW14bElBQnRiMlIxYkdVdGMyTnZjR1VnY0hKcGRtRjBaU0IyWVhKcFlXSnNaU0FBWVd4cFlYTmxjeUIzYVhSb0lHMXZaSFZzWlMxelkyOXdaU0IyWVhKcFlXSnNaU0FBZDI5eWEyZHliM1Z3SUhOMGIzSmhaMlVnZG1GeWFXRmliR1VnQUVadmNpQldkV3hyWVc0Z2QybDBhQ0JTZFc1MGFXMWxSR1Z6WTNKcGNIUnZja0Z5Y21GNVJWaFVMQ0JoSUhaaGNtbGhZbXhsSUFCUGNGWmhjbWxoWW14bElBQWdaWGhwZEhNZ2RHaGxJQUJWYzJVZ2IyWWdaR1YyYVdObElITmpiM0JsSUhkcGRHZ2dWblZzYTJGdVMwaFNJRzFsYlc5eWVTQnRiMlJsYkNCeVpYRjFhWEpsY3lCMGFHVWdBQ0JwYmlCV1pYSjBaWGdnYjNJZ1ZHVnpjMlZzYkdGMGFXOXVJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQnlaWEYxYVhKbGN5QjBhR1VnQUVOdmRXeGtJRzV2ZENCbWFXNWtJRzFsYlc5eWVTQnZZbXBsWTNRZ1pHVmpiR0Z5WVhScGIyNGdabTl5SUhSb1pTQUFJR052Ym5OMGNuVmpkQ3dnWW5WMElHNXZkQ0IwYnlCMGFHVWdBQ0JpY21GdVkyaGxjeUIwYnlCMGFHVWdBRVY0Y0dWamRHVmtJRzUxYldKbGNpQnZaaUJ5YjNkeklHOW1JSFJvWlNCdFlYUnlhWGdnZEc4Z1ltVWdaWEYxWVd3Z2RHOGdkR2hsSUFCRmVIQmxZM1JsWkNCdWRXMWlaWElnYjJZZ1kyOXNkVzF1Y3lCdlppQjBhR1VnYldGMGNtbDRJSFJ2SUdKbElHVnhkV0ZzSUhSdklIUm9aU0FBUlhod1pXTjBaV1FnUTI5dWMzUnBkSFZsYm5RZ2RIbHdaU0IwYnlCaVpTQmxjWFZoYkNCMGJ5QjBhR1VnQUVGalkyOXlaR2x1WnlCMGJ5QjBhR1VnQUNCcGN5QmpiMjUwWVdsdVpXUWdhVzRnZEdobElBQWdZMjl1YzNSeWRXTjBJSGRwZEdnZ2RHaGxJQUJUZEc5eVlXZGxJR05zWVhOeklHbHVJRTl3Vkhsd1pVWnZjbmRoY21SUWIybHVkR1Z5SUdSdlpYTWdibTkwSUcxaGRHTm9JSFJvWlNBQVpXRmphQ0JqYjIxd2IyNWxiblFnYjJZZ2RHaGxJQUJVYUdVZ0FIVnVhR0Z1Wkd4bFpDQnBibk4wY25WamRHbHZiaUIzYVhSb0lHOXdZMjlrWlNBQVQzQmpiMlJsSUFCamIyNTBZV2x1Y3lCaGJpQmhjbkpoZVNCM2FYUm9JSE4wY21sa1pTQUFhWE1nWVNCdFlYUnlhWGdnZDJsMGFDQnpkSEpwWkdVZ0FFNXZiaTExYm1seGRXVWdUM0JGYm5SeWVWQnZhVzUwSUdsdWRHVnlabUZqWlNBQU9pQkRiMjF3YjI1bGJuUWdRMjkxYm5RZ2JYVnpkQ0JpWlNBQVpYaHdaV04wWldRZ2IzQmxjbUZ1WkNCUVlYSmhiV1YwWlhKeklHMTFjM1FnWW1VZ0FIUjVjR1VnYjJZZ1puVnVZM1JwYjI0Z2NHRnlZVzFsZEdWeUlHTmhibTV2ZENCaVpTQUFSWGh3WldOMFpXUWdZMjl0Y0c5dVpXNTBJSFI1Y0dWeklHOW1JRkpsYzNWc2RDQlVlWEJsSUdGdVpDQnlhV2RvZENCdFlYUnlhWGdnZEc4Z1ltVWdBRVY0Y0dWamRHVmtJR052YkhWdGJpQjBlWEJsY3lCdlppQlNaWE4xYkhRZ1ZIbHdaU0JoYm1RZ2JHVm1kQ0J0WVhSeWFYZ2dkRzhnWW1VZ0FFVjRjR1ZqZEdWa0lHTnZiWEJ2Ym1WdWRDQjBlWEJsY3lCdlppQlNaWE4xYkhRZ1ZIbHdaU0JoYm1RZ2JXRjBjbWw0SUhSdklHSmxJQUJGZUhCbFkzUmxaQ0JqYjIxd2IyNWxiblFnZEhsd1pYTWdiMllnVW1WemRXeDBJRlI1Y0dVZ1lXNWtJSFpsWTNSdmNpQjBieUJpWlNBQVJYaHdaV04wWldRZ1kyOXRjRzl1Wlc1MElIUjVjR1Z6SUc5bUlFMWhkSEpwZUNCaGJtUWdVbVZ6ZFd4MElGUjVjR1VnZEc4Z1ltVWdBRVY0Y0dWamRHVmtJSE5qYjNCbGN5QnZaaUJOWVhSeWFYZ2dZVzVrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUFCRmVIQmxZM1JsWkNCeWIzZHpJRzltSUUxaGRISnBlQ0IwZVhCbElHRnVaQ0JTWlhOMWJIUWdWSGx3WlNCMGJ5QmlaU0FBUlhod1pXTjBaV1FnWTI5c2RXMXVjeUJ2WmlCTllYUnlhWGdnZEhsd1pTQmhibVFnVW1WemRXeDBJRlI1Y0dVZ2RHOGdZbVVnQUVocGJuUWdZVzVrSUVKcGRITWdZWEpsSUc5d2RHbHZibUZzSUhSdloyVjBhR1Z5SUdrdVpTQUFJSE4wWVhKMGFXNW5JR0YwSUhkdmNtUWdBSE4wWVc1a1lYSmtJQUJKYldGblpTQlBjR1Z5WVc1a0lFMXBia3h2WkNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dTVzF3YkdsamFYUk1iMlFnQUNCM2IzSmtjeXdnWW5WMElHWnZkVzVrSUFBZ1pHVm1ZWFZzZENCMllXeDFaU0J0ZFhOMElHSmxJR0YwSUd4bFlYTjBJREU2SUdadmRXNWtJQUFzSUdadmRXNWtJQUJKYm5aaGJHbGtJRk5RU1ZJdFZpNGdJRlJvWlNCcFpDQmliM1Z1WkNCcGN5QnNZWEpuWlhJZ2RHaGhiaUIwYUdVZ2JXRjRJR2xrSUdKdmRXNWtJQUF1SUVadmRXNWtJQUJwYm5SbGNtNWhiQ0JsY25KdmNqb2dZbUZrSUdOdmJuTjBjblZqZENCdVpYTjBhVzVuTGlCUGJteDVJR0VnUTI5dWRHbHVkV1VnYjNJZ1lTQk1iMjl3SUdOdmJuTjBjblZqZENCallXNGdZbVVnYjNWMFpYSWdZMjl1YzNSeWRXTjBJRzl1SUhOaGJXVWdZbXh2WTJzdUlDQkhiM1FnYjNWMFpYSWdhMmx1WkNBQUlHbHVibVZ5SUd0cGJtUWdBR2x1ZG1Gc2FXUWdjMkZ0Y0d4bGNpQnJhVzVrSUFCR2NtRm5iV1Z1ZENCUGNFVnVkSEo1VUc5cGJuUWdiM0JsY21GdVpDQUFTVzUyWVd4cFpDQnpkRzl5WVdkbElHTnNZWE56SUdadmNpQndiMmx1ZEdWeUlHOXdaWEpoYm1RZ0FGTjBiM0poWjJWQ2RXWm1aWElnY0c5cGJuUmxjaUJ2Y0dWeVlXNWtJQUJRYjJsdWRHVnlJRzl3WlhKaGJtUWdBRG9nWlhod1pXTjBaV1FnYjNCbGNtRnVaQ0FBT2lCdmNHVnlZVzVrSUFCUGNHVnlZVzVrSUFCQ2RXbHNkRWx1SUNoT2J5QmhiR3h2ZDJWa0lHMXBlR2x1WnlCdlppQmlkV2xzZEMxcGJpQjJZWEpwWVdKc1pYTWdZVzVrSUFBNklHTmhiaWQwSUhOd1pXTnBabmtnWW05MGFDQkJiR2xoYzJWa1VHOXBiblJsY2lCaGJtUWdBRTl3U1cxaFoyVlNaV0ZrTENCUGNFbHRZV2RsVjNKcGRHVXNJRTl3U1cxaFoyVlRjR0Z5YzJWR1pYUmphQ0JoYm1RZ0FFQnBaQ0IyWVd4MVpTQnRkWE4wSUdKbElHSmxkSGRsWlc0Z01DQmhibVFnQUU5d1VtVjBkWEp1SUdOaGJpQnZibXg1SUdKbElHTmhiR3hsWkNCbWNtOXRJR0VnWm5WdVkzUnBiMjRnZDJsMGFDQjJiMmxrSUFCSmJuWmhiR2xrSUFCR2RXNWpkR2x2YmlCa1pXWnBibWwwYVc5dUlDaHBaQ0FBUm5WdVkzUnBiMjRnWkdWamJHRnlZWFJwYjI0Z0tHbGtJQUJCSUVKMWFXeDBTVzRnZG1GeWFXRmliR1VnS0dsa0lBQlhhR1Z1SUdSbFkyeGhjbWx1WnlCWGIzSnJaM0p2ZFhCTlpXMXZjbmxGZUhCc2FXTnBkRXhoZVc5MWRFdElVaXdnYVdZZ2JXOXlaU0IwYUdGdUlHOXVaU0JYYjNKclozSnZkWEFnVTNSdmNtRm5aU0JEYkdGemN5QjJZWEpwWVdKc1pTQnBiaUIwYUdVZ1pXNTBjbmtnY0c5cGJuUWdhVzUwWlhKbVlXTmxJSEJ2YVc1MElIUnZJR0VnZEhsd1pTQmtaV052Y21GMFpXUWdkMmwwYUNCQ2JHOWpheXdnWVd4c0lHOW1JSFJvWlcwZ2JYVnpkQ0JpWlNCa1pXTnZjbUYwWldRZ2QybDBhQ0JCYkdsaGMyVmtMaUJGYm5SeWVTQndiMmx1ZENCcFpDQUFWMmhsYmlCa1pXTnNZWEpwYm1jZ1YyOXlhMmR5YjNWd1RXVnRiM0o1Ulhod2JHbGphWFJNWVhsdmRYUkxTRklzSUdWcGRHaGxjaUJoYkd3Z2IzSWdibTl1WlNCdlppQjBhR1VnVjI5eWEyZHliM1Z3SUZOMGIzSmhaMlVnUTJ4aGMzTWdkbUZ5YVdGaWJHVnpJR2x1SUhSb1pTQmxiblJ5ZVNCd2IybHVkQ0JwYm5SbGNtWmhZMlVnYlhWemRDQndiMmx1ZENCMGJ5QnpkSEoxWTNRZ2RIbHdaWE1nWkdWamIzSmhkR1ZrSUhkcGRHZ2dRbXh2WTJzdUlDQkZiblJ5ZVNCd2IybHVkQ0JwWkNBQUlHUmxZMjl5WVhSbFpDQjJZWEpwWVdKc1pTQnRkWE4wSUc1dmRDQmlaU0IxYzJWa0lHbHVJR1p5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDQmhjeUJoYmlCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5Qm1iM0lnUlc1MGNua2dVRzlwYm5RZ2FXUWdBQ0JrWldOdmNtRjBaV1FnZG1GeWFXRmliR1VnYlhWemRDQnViM1FnWW1VZ2RYTmxaQ0JwYmlCMlpYSjBaWGdnWlhobFkzVjBhVzl1SUcxdlpHVnNJR0Z6SUdGdUlFbHVjSFYwSUhOMGIzSmhaMlVnWTJ4aGMzTWdabTl5SUVWdWRISjVJRkJ2YVc1MElHbGtJQUFnZDJsMGFDQkpibkIxZENCcGJuUmxjbVpoWTJWeklIZHBkR2dnYVc1MFpXZGxjaUJ2Y2lCbWJHOWhkQ0IwZVhCbElHMTFjM1FnYUdGMlpTQmhJRVpzWVhRZ1pHVmpiM0poZEdsdmJpQm1iM0lnUlc1MGNua2dVRzlwYm5RZ2FXUWdBRlJvWlhKbElHMTFjM1FnWW1VZ1lYUWdiVzl6ZENCdmJtVWdiMkpxWldOMElIQmxjaUJUZEc5eVlXZGxJRU5zWVhOeklIUm9ZWFFnWTJGdUlHTnZiblJoYVc0Z1lTQnpkSEoxWTNSMWNtVWdkSGx3WlNCamIyNTBZV2x1YVc1bklHMWxiV0psY25NZ1pHVmpiM0poZEdWa0lIZHBkR2dnUW5WcGJIUkpiaXdnWTI5dWMzVnRaV1FnY0dWeUlHVnVkSEo1TFhCdmFXNTBMaUJGYm5SeWVTQlFiMmx1ZENCcFpDQUFTVzUyWVd4cFpDQjFjMlVnYjJZZ1puVnVZM1JwYjI0Z2NtVnpkV3gwSUdsa0lBQkpiblpoYkdsa0lIVnpaU0J2WmlCbWRXNWpkR2x2YmlCMGVYQmxJSEpsYzNWc2RDQnBaQ0FBU1c1MllXeHBaQ0JQY0ZOM2FYUmphRG9nYzJWc1pXTjBiM0lnYVdRZ0FFbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCbGJYQjBlU0JsZUdWamRYUnBiMjRnYlc5a1pXeHpJR1p2Y2lCbWRXNWpkR2x2YmlCcFpDQUFLU0JqWVc1dWIzUWdZbVVnWVhCd2JHbGxaQ0IwYnlCbWRXNWpkR2x2YmlCcFpDQUFTVzUwWlhKdVlXd2daWEp5YjNJNklHMXBjM05wYm1jZ1puVnVZM1JwYjI0Z2FXUWdBQ0FvWm5KdmJTQnZjbWxuYVc1aGJDQnBaQ0FBSUhWdVpHVnliSGxwYm1jZ2FXUWdBRzV2YmkxaWRXbHNkQzFwYmlCMllYSnBZV0pzWlhNZ2QybDBhR2x1SUdFZ2MybHVaMnhsSUhOMGNuVmpkSFZ5WlNrdUlGTjBjblZqZEhWeVpTQnBaQ0FBU1c1MllXeHBaQ0JCY25KaGVXVmtJQUJ5Wld4aGVHVmtJQUJEYjI1emRFOW1abk5sZENCcGJXRm5aU0J2Y0dWeVlXNWtJRzV2ZENCaGJHeHZkMlZrSUFCMWJuSmxjMjlzZG1Wa0lBQWdibTkwSUdWeGRXRnNJSFJ2SUdWNGNHVmpkR1ZrSUFBZ2FXNXdkWFJ6T2lCbGVIQmxZM1JsWkNBQUlHVnNaVzFsYm5Sek9pQmxlSEJsWTNSbFpDQUFLVG9nWkc5bGN5QnViM1FnWW5KaGJtTm9JSFJ2SUhSb1pTQmpiM0p5WlhOd2IyNWthVzVuSUd4dmIzQWdhR1ZoWkdWeUxDQmxlSEJsWTNSbFpDQUFKeXdnWlhod1pXTjBaV1FnQUVWNGNHVmpkR1ZrSUFCRGIyOXdaWEpoZEdsMlpTQnRZWFJ5YVhnZ2RIbHdaWE1nS0c5eUlIUjVjR1Z6SUdOdmJuUmhhVzVwYm1jZ2RHaGxiU2tnWTJGdUlHOXViSGtnWW1VZ1lXeHNiMk5oZEdWa0lBQTZJSFJ5ZFc1allYUmxaQ0FBUlhod1pXTjBaV1FnU1cxaFoyVWdUM0JsY21GdVpDQk1iMlFnZEc4Z1ltVWdabXh2WVhRZ2MyTmhiR0Z5SUhkb1pXNGdkWE5sWkNBQWFXMWhaMlVnWVdOalpYTnpJSEpsY1hWcGNtVmtJQUJGZUhCbFkzUmxaQ0JTWlhOMWJIUWdWSGx3WlNCemRISjFZM1FnYldWdFltVnlJSFI1Y0dWeklIUnZJR0psSUhWdWMybG5ibVZrSUFCd2NtVjJhVzkxYzJ4NUlHTnZibk4xYldWa0lBQkpiblpoYkdsa0lGTmhiWEJzWldRZ0FHTmhiR3hsWkNBQWFXNTBaWEp1WVd3Z1pYSnliM0k2SUhWdWFHRnVaR3hsWkNBQUlHMWhlU0J1YjNRZ1pYaGpaV1ZrSUFBZ2FHRnpJRk53WldOSlpDQUFJSGxwWld4a2FXNW5JRkpsYzNWc2RDQkpaQ0FBVDNCRmVIUkpibk4wSUhObGRDQkpaQ0FBVkhsd1pTQkpaQ0FBWTI5dVpteHBZM1JwYm1jZ1pHbGhaMjV2YzNScFl5QUFRR2x1ZEdWeWJtRnNLSE53YVhKMkxXRjBiMjFwWXlBQU9pQmxlSEJsWTNSbFpDQnZjR1Z5WVc1a0lGTnBlbVVnYVhNZ1lTQUFabWx5YzNRZ2JXVnRZbVZ5SUdFZ1pteHZZWFFnYzJOaGJHRnlJRzl5SUhabFkzUnZjaXdnYzJWamIyNWtJRzFsYldKbGNpQmhJQUFnWkc5bGN5QnViM1FnYUdGMlpTQmhJQUJsZUhCbFkzUmxaQ0J2Y0dWeVlXNWtJRVY0Y0NCa1lYUmhJSFI1Y0dVZ2RHOGdZbVVnWVNBQWIzQmxjbUYwYjNJZ1hpQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFVsdVkyOXRhVzVuVW1GNVVHRjViRzloWkV0SVVpMHdORFk1T1YwZ0FGdFdWVWxFTFZabGNuUmxlRWx1WkdWNExWWmxjblJsZUVsdVpHVjRMVEEwTXprNVhTQUFXMVpWU1VRdFQySnFaV04wVW1GNVJHbHlaV04wYVc5dVMwaFNMVTlpYW1WamRGSmhlVVJwY21WamRHbHZia3RJVWkwd05ESTVPVjBnQUZ0V1ZVbEVMVU4xYkd4RWFYTjBZVzVqWlMxRGRXeHNSR2x6ZEdGdVkyVXRNRFF4T1RsZElBQmJWbFZKUkMxVVpYTnpRMjl2Y21RdFZHVnpjME52YjNKa0xUQTBNemc1WFNBQVcxWlZTVVF0UTJ4cGNFUnBjM1JoYm1ObExVTnNhWEJFYVhOMFlXNWpaUzB3TkRFNE9WMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1RIUk5ZWE5yTFZOMVltZHliM1Z3VEhSTllYTnJMVEEwTXpjNVhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFVkTVUweFRhR0Z5WldRdE1EUTJOamxkSUFCYlZsVkpSQzFUZFdKbmNtOTFjRWxrTFZOMVltZHliM1Z3U1dRdE1EUXpOamxkSUFCYlZsVkpSQzFNWVhWdVkyaFRhWHBsUzBoU0xVeGhkVzVqYUZOcGVtVkxTRkl0TURReU5qbGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFQzQkpiV0ZuWlZGMVpYSjVVMmw2WlV4dlpDMHdORFkxT1YwZ0FGdFdWVWxFTFZOaGJYQnNaVTFoYzJzdFUyRnRjR3hsVFdGemF5MHdORE0xT1YwZ0FGdFdWVWxFTFVsdWRtOWpZWFJwYjI1SlpDMUpiblp2WTJGMGFXOXVTV1F0TURReU5UbGRJQUJiVmxWSlJDMVNZWGxVYldGNFMwaFNMVkpoZVZSdFlYaExTRkl0TURRek5EbGRJQUJiVmxWSlJDMUpibU52YldsdVoxSmhlVVpzWVdkelMwaFNMVWx1WTI5dGFXNW5VbUY1Um14aFozTkxTRkl0TURReU5EbGRJQUJiVmxWSlJDMUlaV3h3WlhKSmJuWnZZMkYwYVc5dUxVaGxiSEJsY2tsdWRtOWpZWFJwYjI0dE1EUXlNemxkSUFCYlZsVkpSQzFYYjNKc1pGSmhlVVJwY21WamRHbHZia3RJVWkxWGIzSnNaRkpoZVVScGNtVmpkR2x2Ymt0SVVpMHdORFF5T1YwZ0FGdFdWVWxFTFVaeWIyNTBSbUZqYVc1bkxVWnliMjUwUm1GamFXNW5MVEEwTWpJNVhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFV4dlkyRjBhVzl1TFRBME9URTVYU0FBVzFaVlNVUXRVRzl6YVhScGIyNHRVRzl6YVhScGIyNHRNRFF6TVRsZElBQmJWbFZKUkMxR2NtRm5TVzUyYjJOaGRHbHZia052ZFc1MFJWaFVMVVp5WVdkSmJuWnZZMkYwYVc5dVEyOTFiblJGV0ZRdE1EUXlNVGxkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRVMmhoWkdWeVVtVmpiM0prUW5WbVptVnlTMGhTTFRBM01URTVYU0FBVzFaVlNVUXRVR0YwWTJoV1pYSjBhV05sY3kxUVlYUmphRlpsY25ScFkyVnpMVEEwTXpBNVhTQUFXMVpWU1VRdFJISmhkMGx1WkdWNExVUnlZWGRKYm1SbGVDMHdOREl3T1YwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFTWVhsUVlYbHNiMkZrUzBoU0xUQTBOams0WFNBQVcxWlZTVVF0Vm1WeWRHVjRTVzVrWlhndFZtVnlkR1Y0U1c1a1pYZ3RNRFF6T1RoZElBQmJWbFZKUkMxT2RXMVhiM0pyWjNKdmRYQnpMVTUxYlZkdmNtdG5jbTkxY0hNdE1EUXlPVGhkSUFCYlZsVkpSQzFEZFd4c1JHbHpkR0Z1WTJVdFEzVnNiRVJwYzNSaGJtTmxMVEEwTVRrNFhTQUFXMVpWU1VRdFZHVnpjME52YjNKa0xWUmxjM05EYjI5eVpDMHdORE00T0YwZ0FGdFdWVWxFTFVOc2FYQkVhWE4wWVc1alpTMURiR2x3UkdsemRHRnVZMlV0TURReE9EaGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFNXNXdkWFF0TURZM056aGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFNXNXdkWFJCZEhSaFkyaHRaVzUwU1c1a1pYZ3RNRFkyTnpoZElBQmJWbFZKUkMxVGRXSm5jbTkxY0V4MFRXRnpheTFUZFdKbmNtOTFjRXgwVFdGemF5MHdORE0zT0YwZ0FGdFdWVWxFTFZOMVltZHliM1Z3U1dRdFUzVmlaM0p2ZFhCSlpDMHdORE0yT0YwZ0FGdFdWVWxFTFV4aGRXNWphRWxrUzBoU0xVeGhkVzVqYUVsa1MwaFNMVEEwTWpZNFhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU5d1NXMWhaMlZVWlhobGJGQnZhVzUwWlhJdE1EUTJOVGhkSUFCYlZsVkpSQzFUWVcxd2JHVk5ZWE5yTFZOaGJYQnNaVTFoYzJzdE1EUXpOVGhkSUFCYlZsVkpSQzFKYm5adlkyRjBhVzl1U1dRdFNXNTJiMk5oZEdsdmJrbGtMVEEwTWpVNFhTQUFXMVpWU1VRdFVtRjVWRzFoZUV0SVVpMVNZWGxVYldGNFMwaFNMVEEwTXpRNFhTQUFXMVpWU1VRdFNXNWpiMjFwYm1kU1lYbEdiR0ZuYzB0SVVpMUpibU52YldsdVoxSmhlVVpzWVdkelMwaFNMVEEwTWpRNFhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU1dmJtVXRNRFEyTXpoZElBQmJWbFZKUkMxSGJHOWlZV3hKYm5adlkyRjBhVzl1U1dRdFIyeHZZbUZzU1c1MmIyTmhkR2x2Ymtsa0xUQTBNak00WFNBQVcxWlZTVVF0VjI5eWJHUlNZWGxFYVhKbFkzUnBiMjVMU0ZJdFYyOXliR1JTWVhsRWFYSmxZM1JwYjI1TFNGSXRNRFEwTWpoZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VEc5allYUnBiMjR0TURRNU1UaGRJQUJiVmxWSlJDMVFiM05wZEdsdmJpMVFiM05wZEdsdmJpMHdORE14T0YwZ0FGdFdWVWxFTFVaeVlXZEpiblp2WTJGMGFXOXVRMjkxYm5SRldGUXRSbkpoWjBsdWRtOWpZWFJwYjI1RGIzVnVkRVZZVkMwd05ESXhPRjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVFkWE5vUTI5dWMzUmhiblF0TURZNE1EaGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFVHaDVjMmxqWVd4VGRHOXlZV2RsUW5WbVptVnlOalF0TURRM01EaGRJQUJiVmxWSlJDMVdhV1YzY0c5eWRFbHVaR1Y0TFZacFpYZHdiM0owU1c1a1pYZ3RNRFEwTURoZElBQmJWbFZKUkMxUVlYUmphRlpsY25ScFkyVnpMVkJoZEdOb1ZtVnlkR2xqWlhNdE1EUXpNRGhkSUFCYlZsVkpSQzFFY21GM1NXNWtaWGd0UkhKaGQwbHVaR1Y0TFRBME1qQTRYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxWTjFZbWR5YjNWd1ZtOTBaVXRJVWkwd05qazVOMTBnQUZ0V1ZVbEVMVlJsYzNOTVpYWmxiRWx1Ym1WeUxWUmxjM05NWlhabGJFbHVibVZ5TFRBME16azNYU0FBVzFaVlNVUXRUblZ0VjI5eWEyZHliM1Z3Y3kxT2RXMVhiM0pyWjNKdmRYQnpMVEEwTWprM1hTQUFXMVpWU1VRdFEzVnNiRVJwYzNSaGJtTmxMVU4xYkd4RWFYTjBZVzVqWlMwd05ERTVOMTBnQUZ0V1ZVbEVMVlJsYzNORGIyOXlaQzFVWlhOelEyOXZjbVF0TURRek9EZGRJQUJiVmxWSlJDMURiR2x3UkdsemRHRnVZMlV0UTJ4cGNFUnBjM1JoYm1ObExUQTBNVGczWFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVkJsY2xabGNuUmxlRXRJVWkwd05qYzNOMTBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVBjRWx0WVdkbExUQTBOemMzWFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVlZ1YVdadmNtMURiMjV6ZEdGdWRDMHdOalkzTjEwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFKYm5aaGNtbGhiblF0TURRMk56ZGRJQUJiVmxWSlJDMVRkV0puY205MWNFeGxUV0Z6YXkxVGRXSm5jbTkxY0V4bFRXRnpheTB3TkRNM04xMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxT2IyNWxMVEEwTmpZM1hTQUFXMVpWU1VRdFUzVmlaM0p2ZFhCSlpDMVRkV0puY205MWNFbGtMVEEwTXpZM1hTQUFXMVpWU1VRdFRHRjFibU5vU1dSTFNGSXRUR0YxYm1Ob1NXUkxTRkl0TURReU5qZGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFQzQlVlWEJsU1cxaFoyVXRNRFEyTlRkZElBQmJWbFZKUkMxVFlXMXdiR1ZOWVhOckxWTmhiWEJzWlUxaGMyc3RNRFF6TlRkZElBQmJWbFZKUkMxSmJuWnZZMkYwYVc5dVNXUXRTVzUyYjJOaGRHbHZia2xrTFRBME1qVTNYU0FBVzFaVlNVUXRVbUY1UjJWdmJXVjBjbmxKYm1SbGVFdElVaTFTWVhsSFpXOXRaWFJ5ZVVsdVpHVjRTMGhTTFRBME16UTNYU0FBVzFaVlNVUXRTR2wwVkU1V0xVaHBkRlJPVmkwd05ESTBOMTBnQUZ0V1ZVbEVMVU4xYkd4TllYTnJTMGhTTFVOMWJHeE5ZWE5yUzBoU0xUQTJOek0zWFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTV2Ym1VdE1EUTJNemRkSUFCYlZsVkpSQzFRY21sdGFYUnBkbVZKWkMxUWNtbHRhWFJwZG1WSlpDMHdORE16TjEwZ0FGdFdWVWxFTFVkc2IySmhiRWx1ZG05allYUnBiMjVKWkMxSGJHOWlZV3hKYm5adlkyRjBhVzl1U1dRdE1EUXlNemRkSUFCYlZsVkpSQzFYYjNKclozSnZkWEJUYVhwbExWZHZjbXRuY205MWNGTnBlbVV0TURRME1qZGRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFRHOWpZWFJwYjI0dE1EUTVNVGRkSUFCYlZsVkpSQzFRYjJsdWRGTnBlbVV0VUc5cGJuUlRhWHBsTFRBME16RTNYU0FBVzFaVlNVUXRSbkpoWjBsdWRtOWpZWFJwYjI1RGIzVnVkRVZZVkMxR2NtRm5TVzUyYjJOaGRHbHZia052ZFc1MFJWaFVMVEEwTWpFM1hTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFZWdWFXWnZjbTB0TURZNE1EZGRJQUJiVmxWSlJDMVdhV1YzY0c5eWRFbHVaR1Y0TFZacFpYZHdiM0owU1c1a1pYZ3RNRFEwTURkZElBQmJWbFZKUkMxUFltcGxZM1JVYjFkdmNteGtTMGhTTFU5aWFtVmpkRlJ2VjI5eWJHUkxTRkl0TURRek1EZGRJQUJiVmxWSlJDMUVjbUYzU1c1a1pYZ3RSSEpoZDBsdVpHVjRMVEEwTWpBM1hTQUFXMVpWU1VRdFZHVnpjMHhsZG1Wc1NXNXVaWEl0VkdWemMweGxkbVZzU1c1dVpYSXRNRFF6T1RaZElBQmJWbFZKUkMxT2RXMVhiM0pyWjNKdmRYQnpMVTUxYlZkdmNtdG5jbTkxY0hNdE1EUXlPVFpkSUFCYlZsVkpSQzFEZFd4c1JHbHpkR0Z1WTJVdFEzVnNiRVJwYzNSaGJtTmxMVEEwTVRrMlhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU1dmJtVXRNRFEyT0RaZElBQmJWbFZKUkMxUWNtbHRhWFJwZG1WVGFHRmthVzVuVW1GMFpVdElVaTFRY21sdGFYUnBkbVZUYUdGa2FXNW5VbUYwWlV0SVVpMHdORFE0TmwwZ0FGdFdWVWxFTFVKaGMyVldaWEowWlhndFFtRnpaVlpsY25SbGVDMHdOREU0TmwwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFWYm1sbWIzSnRMVEEyTmpjMlhTQUFXMVpWU1VRdFUzVmlaM0p2ZFhCTVpVMWhjMnN0VTNWaVozSnZkWEJNWlUxaGMyc3RNRFF6TnpaZElBQmJWbFZKUkMxTVlYbGxjaTFNWVhsbGNpMHdOREkzTmwwZ0FGdFdWVWxFTFV4aGRXNWphRWxrUzBoU0xVeGhkVzVqYUVsa1MwaFNMVEEwTWpZMlhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU5d1ZIbHdaVWx0WVdkbExUQTBOalUyWFNBQVcxWlZTVVF0VTJGdGNHeGxTV1F0VTJGdGNHeGxTV1F0TURRek5UWmRJQUJiVmxWSlJDMUpibk4wWVc1alpVbGtMVWx1YzNSaGJtTmxTV1F0TURReU5UWmRJQUJiVmxWSlJDMUNZWEo1UTI5dmNtUkxTRkl0UW1GeWVVTnZiM0prUzBoU0xUQTBNVFUyWFNBQVcxWlZTVVF0VW1GNVIyVnZiV1YwY25sSmJtUmxlRXRJVWkxU1lYbEhaVzl0WlhSeWVVbHVaR1Y0UzBoU0xUQTBNelEyWFNBQVcxWlZTVVF0U0dsMFZFNVdMVWhwZEZST1ZpMHdOREkwTmwwZ0FGdFdWVWxFTFVOMWJHeE5ZWE5yUzBoU0xVTjFiR3hOWVhOclMwaFNMVEEyTnpNMlhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFU1dmJtVXRNRFEyTXpaZElBQmJWbFZKUkMxWGIzSnNaRlJ2VDJKcVpXTjBTMGhTTFZkdmNteGtWRzlQWW1wbFkzUkxTRkl0TURRME16WmRJQUJiVmxWSlJDMUhiRzlpWVd4SmJuWnZZMkYwYVc5dVNXUXRSMnh2WW1Gc1NXNTJiMk5oZEdsdmJrbGtMVEEwTWpNMlhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFV4dlkyRnNVMmw2WlMwd05qUXlObDBnQUZ0V1ZVbEVMVmR2Y210bmNtOTFjRk5wZW1VdFYyOXlhMmR5YjNWd1UybDZaUzB3TkRReU5sMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxTWIyTmhkR2x2Ymkwd05Ea3hObDBnQUZ0V1ZVbEVMVkJ2YVc1MFUybDZaUzFRYjJsdWRGTnBlbVV0TURRek1UWmRJQUJiVmxWSlJDMUdjbUZuUkdWd2RHZ3RSbkpoWjBSbGNIUm9MVEEwTWpFMlhTQUFXMVpWU1VRdFZtbGxkM0J2Y25SSmJtUmxlQzFXYVdWM2NHOXlkRWx1WkdWNExUQTBOREEyWFNBQVcxWlZTVVF0VDJKcVpXTjBWRzlYYjNKc1pFdElVaTFQWW1wbFkzUlViMWR2Y214a1MwaFNMVEEwTXpBMlhTQUFXMVpWU1VRdFJHVjJhV05sU1c1a1pYZ3RSR1YyYVdObFNXNWtaWGd0TURReU1EWmRJQUJiVmxWSlJDMVVaWE56VEdWMlpXeEpibTVsY2kxVVpYTnpUR1YyWld4SmJtNWxjaTB3TkRNNU5WMGdBRnRXVlVsRUxVNTFiVk4xWW1keWIzVndjeTFPZFcxVGRXSm5jbTkxY0hNdE1EUXlPVFZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRUM0JIY205MWNFNXZibFZ1YVdadmNtMUNZV3hzYjNSQ2FYUkRiM1Z1ZEMwd05EWTROVjBnQUZ0V1ZVbEVMVkJ5YVcxcGRHbDJaVk5vWVdScGJtZFNZWFJsUzBoU0xWQnlhVzFwZEdsMlpWTm9ZV1JwYm1kU1lYUmxTMGhTTFRBME5EZzFYU0FBVzFaVlNVUXRRbUZ6WlZabGNuUmxlQzFDWVhObFZtVnlkR1Y0TFRBME1UZzFYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxWQjFjMmhEYjI1emRHRnVkQzB3TmpZM05WMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxR1VGSnZkVzVrYVc1blRXOWtaUzB3TkRZM05WMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1IzUk5ZWE5yTFZOMVltZHliM1Z3UjNSTllYTnJMVEEwTXpjMVhTQUFXMVpWU1VRdFRHRjVaWEl0VEdGNVpYSXRNRFF5TnpWZElBQmJWbFZKUkMxSmJuTjBZVzVqWlVsdVpHVjRMVWx1YzNSaGJtTmxTVzVrWlhndE1EUXlOalZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRWVzVwWm05eWJVTnZibk4wWVc1MExUQTBOalUxWFNBQVcxWlZTVVF0VTJGdGNHeGxTV1F0VTJGdGNHeGxTV1F0TURRek5UVmRJQUJiVmxWSlJDMUpibk4wWVc1alpVbGtMVWx1YzNSaGJtTmxTV1F0TURReU5UVmRJQUJiVmxWSlJDMUNZWEo1UTI5dmNtUkxTRkl0UW1GeWVVTnZiM0prUzBoU0xUQTBNVFUxWFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTV2Ym1VdE1EUTJORFZkSUFCYlZsVkpSQzFTWVhsSFpXOXRaWFJ5ZVVsdVpHVjRTMGhTTFZKaGVVZGxiMjFsZEhKNVNXNWtaWGhMU0ZJdE1EUXpORFZkSUFCYlZsVkpSQzFJYVhSVVRsWXRTR2wwVkU1V0xUQTBNalExWFNBQVcxWlZTVVF0UTNWc2JFMWhjMnRMU0ZJdFEzVnNiRTFoYzJ0TFNGSXRNRFkzTXpWZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VG05dVpTMHdORFl6TlYwZ0FGdFdWVWxFTFZkdmNteGtWRzlQWW1wbFkzUkxTRkl0VjI5eWJHUlViMDlpYW1WamRFdElVaTB3TkRRek5WMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxVmJtbG1iM0p0TFRBMk9USTFYU0FBVzFaVlNVUXRWMjl5YTJkeWIzVndVMmw2WlMxWGIzSnJaM0p2ZFhCVGFYcGxMVEEwTkRJMVhTQUFXMVpWU1VRdFJuSmhaMU4wWlc1amFXeFNaV1pGV0ZRdFJuSmhaMU4wWlc1amFXeFNaV1pGV0ZRdE1EUXlNalZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRURzlqWVhScGIyNHRNRFE1TVRWZElBQmJWbFZKUkMxUWIybHVkRk5wZW1VdFVHOXBiblJUYVhwbExUQTBNekUxWFNBQVcxWlZTVVF0Um5KaFowUmxjSFJvTFVaeVlXZEVaWEIwYUMwd05ESXhOVjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMUpibU52YldsdVowTmhiR3hoWW14bFJHRjBZVXRJVWkwd05EY3dOVjBnQUZ0V1ZVbEVMVlpwWlhkd2IzSjBTVzVrWlhndFZtbGxkM0J2Y25SSmJtUmxlQzB3TkRRd05WMGdBRnRXVlVsRUxVOWlhbVZqZEZSdlYyOXliR1JMU0ZJdFQySnFaV04wVkc5WGIzSnNaRXRJVWkwd05ETXdOVjBnQUZ0V1ZVbEVMVVJsZG1salpVbHVaR1Y0TFVSbGRtbGpaVWx1WkdWNExUQTBNakExWFNBQVcxWlZTVVF0VkdWemMweGxkbVZzU1c1dVpYSXRWR1Z6YzB4bGRtVnNTVzV1WlhJdE1EUXpPVFJkSUFCYlZsVkpSQzFPZFcxVGRXSm5jbTkxY0hNdFRuVnRVM1ZpWjNKdmRYQnpMVEEwTWprMFhTQUFXMVpWU1VRdFVISnBiV2wwYVhabFUyaGhaR2x1WjFKaGRHVkxTRkl0VUhKcGJXbDBhWFpsVTJoaFpHbHVaMUpoZEdWTFNGSXRNRFEwT0RSZElBQmJWbFZKUkMxQ1lYTmxWbVZ5ZEdWNExVSmhjMlZXWlhKMFpYZ3RNRFF4T0RSZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VDNCRmJuUnllVkJ2YVc1MExUQTJOamMwWFNBQVcxWlZTVVF0VTNWaVozSnZkWEJIZEUxaGMyc3RVM1ZpWjNKdmRYQkhkRTFoYzJzdE1EUXpOelJkSUFCYlZsVkpSQzFNWVhsbGNpMU1ZWGxsY2kwd05ESTNORjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVBjRWx0WVdkbFIyRjBhR1Z5TFRBME5qWTBYU0FBVzFaVlNVUXRTVzV6ZEdGdVkyVkpibVJsZUMxSmJuTjBZVzVqWlVsdVpHVjRMVEEwTWpZMFhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFZCcGVHVnNRMlZ1ZEdWeVNXNTBaV2RsY2kwd05EWTFORjBnQUZ0V1ZVbEVMVk5oYlhCc1pVbGtMVk5oYlhCc1pVbGtMVEEwTXpVMFhTQUFXMVpWU1VRdFNXNXpkR0Z1WTJWSlpDMUpibk4wWVc1alpVbGtMVEEwTWpVMFhTQUFXMVpWU1VRdFFtRnllVU52YjNKa1MwaFNMVUpoY25sRGIyOXlaRXRJVWkwd05ERTFORjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMUdiR0YwTFRBME56UTBYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVNXZibVV0TURRMk5EUmRJQUJiVmxWSlJDMUlhWFJMYVc1a1MwaFNMVWhwZEV0cGJtUkxTRkl0TURReU5EUmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFQzQldZWEpwWVdKc1pTMHdORGN6TkYwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFPYjI1bExUQTBOak0wWFNBQVcxWlZTVVF0VjI5eWJHUlViMDlpYW1WamRFdElVaTFYYjNKc1pGUnZUMkpxWldOMFMwaFNMVEEwTkRNMFhTQUFXMVpWU1VRdFVISnBiV2wwYVhabFNXUXRVSEpwYldsMGFYWmxTV1F0TURRek16UmRJQUJiVmxWSlJDMUdkV3hzZVVOdmRtVnlaV1JGV0ZRdFJuVnNiSGxEYjNabGNtVmtSVmhVTFRBME1qTTBYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVTnZiWEJ2Ym1WdWRDMHdORGt5TkYwZ0FGdFdWVWxFTFZkdmNtdG5jbTkxY0Vsa0xWZHZjbXRuY205MWNFbGtMVEEwTkRJMFhTQUFXMVpWU1VRdFJuSmhaMU4wWlc1amFXeFNaV1pGV0ZRdFJuSmhaMU4wWlc1amFXeFNaV1pGV0ZRdE1EUXlNalJkSUFCYlZsVkpSQzFRYjJsdWRGTnBlbVV0VUc5cGJuUlRhWHBsTFRBME16RTBYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVOXdWSGx3WlVsdFlXZGxMVEEyTWpFMFhTQUFXMVpWU1VRdFJuSmhaMFJsY0hSb0xVWnlZV2RFWlhCMGFDMHdOREl4TkYwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFEWVd4c1lXSnNaVVJoZEdGTFNGSXRNRFEzTURSZElBQmJWbFZKUkMxV2FXVjNjRzl5ZEVsdVpHVjRMVlpwWlhkd2IzSjBTVzVrWlhndE1EUTBNRFJkSUFCYlZsVkpSQzFQWW1wbFkzUlNZWGxQY21sbmFXNUxTRkl0VDJKcVpXTjBVbUY1VDNKcFoybHVTMGhTTFRBME16QTBYU0FBVzFaVlNVUXRWR1Z6YzB4bGRtVnNUM1YwWlhJdFZHVnpjMHhsZG1Wc1QzVjBaWEl0TURRek9UTmRJQUJiVmxWSlJDMU9kVzFUZFdKbmNtOTFjSE10VG5WdFUzVmlaM0p2ZFhCekxUQTBNamt6WFNBQVcxWlZTVVF0VTNWaVozSnZkWEJUYVhwbExWTjFZbWR5YjNWd1UybDZaUzB3TkRNNE0xMGdBRnRXVlVsRUxVeHZZMkZzU1c1MmIyTmhkR2x2Ymtsa0xVeHZZMkZzU1c1MmIyTmhkR2x2Ymtsa0xUQTBNamd6WFNBQVcxWlZTVVF0UW1GelpVbHVjM1JoYm1ObExVSmhjMlZKYm5OMFlXNWpaUzB3TkRFNE0xMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1IyVk5ZWE5yTFZOMVltZHliM1Z3UjJWTllYTnJMVEEwTXpjelhTQUFXMVpWU1VRdFRHRjVaWEl0VEdGNVpYSXRNRFF5TnpOZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VDJabWMyVjBMVEEwTmpZelhTQUFXMVpWU1VRdFNXNXpkR0Z1WTJWSmJtUmxlQzFKYm5OMFlXNWpaVWx1WkdWNExUQTBNall6WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTl5YVdkcGJreHZkMlZ5VEdWbWRDMHdORFkxTTEwZ0FGdFdWVWxFTFZKaGVWUnRhVzVMU0ZJdFVtRjVWRzFwYmt0SVVpMHdORE0xTTEwZ0FGdFdWVWxFTFVsdWMzUmhibU5sUTNWemRHOXRTVzVrWlhoTFNGSXRTVzV6ZEdGdVkyVkRkWE4wYjIxSmJtUmxlRXRJVWkwd05ESTFNMTBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMU9iMjVsTFRBME5qUXpYU0FBVzFaVlNVUXRTR2wwUzJsdVpFdElVaTFJYVhSTGFXNWtTMGhTTFRBME1qUXpYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVOXdUV1Z0YjNKNVFtRnljbWxsY2kwd05EY3pNMTBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMU9iMjVsTFRBME5qTXpYU0FBVzFaVlNVUXRWMjl5YkdSU1lYbFBjbWxuYVc1TFNGSXRWMjl5YkdSU1lYbFBjbWxuYVc1TFNGSXRNRFEwTXpOZElBQmJWbFZKUkMxR2RXeHNlVU52ZG1WeVpXUkZXRlF0Um5Wc2JIbERiM1psY21Wa1JWaFVMVEEwTWpNelhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFVOdmJYQnZibVZ1ZEMwd05Ea3lNMTBnQUZ0V1ZVbEVMVmR2Y210bmNtOTFjRWxrTFZkdmNtdG5jbTkxY0Vsa0xUQTBOREl6WFNBQVcxWlZTVVF0Um5KaFoxTjBaVzVqYVd4U1pXWkZXRlF0Um5KaFoxTjBaVzVqYVd4U1pXWkZXRlF0TURReU1qTmRJQUJiVmxWSlJDMVFiMmx1ZEVOdmIzSmtMVkJ2YVc1MFEyOXZjbVF0TURRek1UTmRJQUJiVmxWSlJDMUdjbUZuUkdWd2RHZ3RSbkpoWjBSbGNIUm9MVEEwTWpFelhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFVOdmJYQnZibVZ1ZEMwd056Y3dNMTBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMUlhWFJCZEhSeWFXSjFkR1ZMU0ZJdE1EUTNNRE5kSUFCYlZsVkpSQzFXYVdWM1NXNWtaWGd0Vm1sbGQwbHVaR1Y0TFRBME5EQXpYU0FBVzFaVlNVUXRUMkpxWldOMFVtRjVUM0pwWjJsdVMwaFNMVTlpYW1WamRGSmhlVTl5YVdkcGJrdElVaTB3TkRNd00xMGdBRnRXVlVsRUxWTm9ZV1JwYm1kU1lYUmxTMGhTTFZOb1lXUnBibWRTWVhSbFMwaFNMVEEwTkRreVhTQUFXMVpWU1VRdFZHVnpjMHhsZG1Wc1QzVjBaWEl0VkdWemMweGxkbVZzVDNWMFpYSXRNRFF6T1RKZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0VDNCRGIyNTBjbTlzUW1GeWNtbGxjaTB3TkRZNE1sMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1UybDZaUzFUZFdKbmNtOTFjRk5wZW1VdE1EUXpPREpkSUFCYlZsVkpSQzFNYjJOaGJFbHVkbTlqWVhScGIyNUpaQzFNYjJOaGJFbHVkbTlqWVhScGIyNUpaQzB3TkRJNE1sMGdBRnRXVlVsRUxVSmhjMlZKYm5OMFlXNWpaUzFDWVhObFNXNXpkR0Z1WTJVdE1EUXhPREpkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRURzlqWVhScGIyNHRNRFkyTnpKZElBQmJWbFZKUkMxVGRXSm5jbTkxY0VkbFRXRnpheTFUZFdKbmNtOTFjRWRsVFdGemF5MHdORE0zTWwwZ0FGdFdWVWxFTFV4aGVXVnlMVXhoZVdWeUxUQTBNamN5WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTltWm5ObGRDMHdORFkyTWwwZ0FGdFdWVWxFTFZOaGJYQnNaVkJ2YzJsMGFXOXVMVk5oYlhCc1pWQnZjMmwwYVc5dUxUQTBNell5WFNBQVcxWlZTVVF0UW1GeWVVTnZiM0prVG05UVpYSnpjRXRJVWkxQ1lYSjVRMjl2Y21ST2IxQmxjbk53UzBoU0xUQTBNVFl5WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVUpoYzJVdE1EYzJOVEpkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRUM0JTWldGa1EyeHZZMnRMU0ZJdE1EUTJOVEpkSUFCYlZsVkpSQzFTWVhsVWJXbHVTMGhTTFZKaGVWUnRhVzVMU0ZJdE1EUXpOVEpkSUFCYlZsVkpSQzFKYm5OMFlXNWpaVU4xYzNSdmJVbHVaR1Y0UzBoU0xVbHVjM1JoYm1ObFEzVnpkRzl0U1c1a1pYaExTRkl0TURReU5USmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFRtOXVaUzB3TkRZME1sMGdBRnRXVlVsRUxVaHBkRXRwYm1STFNGSXRTR2wwUzJsdVpFdElVaTB3TkRJME1sMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxUGNFMWxiVzl5ZVVKaGNuSnBaWEl0TURRM016SmRJQUJiVmxWSlJDMVhiM0pzWkZKaGVVOXlhV2RwYmt0SVVpMVhiM0pzWkZKaGVVOXlhV2RwYmt0SVVpMHdORFF6TWwwZ0FGdFdWVWxFTFVaMWJHeDVRMjkyWlhKbFpFVllWQzFHZFd4c2VVTnZkbVZ5WldSRldGUXRNRFF5TXpKZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0UTI5dGNHOXVaVzUwTFRBME9USXlYU0FBVzFaVlNVUXRWMjl5YTJkeWIzVndTV1F0VjI5eWEyZHliM1Z3U1dRdE1EUTBNakpkSUFCYlZsVkpSQzFHY21GblUybDZaVVZZVkMxR2NtRm5VMmw2WlVWWVZDMHdOREl5TWwwZ0FGdFdWVWxFTFZCdmFXNTBRMjl2Y21RdFVHOXBiblJEYjI5eVpDMHdORE14TWwwZ0FGdFdWVWxFTFVaeVlXZERiMjl5WkMxR2NtRm5RMjl2Y21RdE1EUXlNVEpkSUFCYlZsVkpSQzFXYVdWM1NXNWtaWGd0Vm1sbGQwbHVaR1Y0TFRBME5EQXlYU0FBVzFaVlNVUXRUMkpxWldOMFVtRjVUM0pwWjJsdVMwaFNMVTlpYW1WamRGSmhlVTl5YVdkcGJrdElVaTB3TkRNd01sMGdBRnRXVlVsRUxWTjBZVzVrWVd4dmJtVlRjR2x5ZGkxR2JHRjBMVEEyTWpBeVhTQUFXMVpWU1VRdFUzUmhibVJoYkc5dVpWTndhWEoyTFUxbGMyaEZXRlF0TURjeE1ESmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFJHVnpZM0pwY0hSdmNsTmxkQzB3TmpRNU1WMGdBRnRXVlVsRUxWTm9ZV1JwYm1kU1lYUmxTMGhTTFZOb1lXUnBibWRTWVhSbFMwaFNMVEEwTkRreFhTQUFXMVpWU1VRdFZHVnpjMHhsZG1Wc1QzVjBaWEl0VkdWemMweGxkbVZzVDNWMFpYSXRNRFF6T1RGZElBQmJWbFZKUkMxRGJHbHdSR2x6ZEdGdVkyVXRRMnhwY0VScGMzUmhibU5sTFRBME1Ua3hYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVSmhjMlV0TURRM09ERmRJQUJiVmxWSlJDMVRkV0puY205MWNFeHZZMkZzU1c1MmIyTmhkR2x2Ymtsa0xWTjFZbWR5YjNWd1RHOWpZV3hKYm5adlkyRjBhVzl1U1dRdE1EUXpPREZkSUFCYlZsVkpSQzFNYjJOaGJFbHVkbTlqWVhScGIyNUpaQzFNYjJOaGJFbHVkbTlqWVhScGIyNUpaQzB3TkRJNE1WMGdBRnRXVlVsRUxVSmhjMlZKYm5OMFlXNWpaUzFDWVhObFNXNXpkR0Z1WTJVdE1EUXhPREZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRUM0JVZVhCbFUyRnRjR3hsWkVsdFlXZGxMVEEyTmpjeFhTQUFXMVpWU1VRdFUzVmlaM0p2ZFhCRmNVMWhjMnN0VTNWaVozSnZkWEJGY1UxaGMyc3RNRFF6TnpGZElBQmJWbFZKUkMxTVlYVnVZMmhUYVhwbFMwaFNMVXhoZFc1amFGTnBlbVZMU0ZJdE1EUXlOekZkSUFCYlZsVkpSQzFUWVcxd2JHVlFiM05wZEdsdmJpMVRZVzF3YkdWUWIzTnBkR2x2Ymkwd05ETTJNVjBnQUZ0V1ZVbEVMVUpoY25sRGIyOXlaRTV2VUdWeWMzQkxTRkl0UW1GeWVVTnZiM0prVG05UVpYSnpjRXRJVWkwd05ERTJNVjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMUNZWE5sTFRBM05qVXhYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVOXdWbUZ5YVdGaWJHVXRNRFEyTlRGZElBQmJWbFZKUkMxU1lYbFViV2x1UzBoU0xWSmhlVlJ0YVc1TFNGSXRNRFF6TlRGZElBQmJWbFZKUkMxSmJuTjBZVzVqWlVOMWMzUnZiVWx1WkdWNFMwaFNMVWx1YzNSaGJtTmxRM1Z6ZEc5dFNXNWtaWGhMU0ZJdE1EUXlOVEZkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRUbTl1WlMwd05EWTBNVjBnQUZ0V1ZVbEVMVWhsYkhCbGNrbHVkbTlqWVhScGIyNHRTR1ZzY0dWeVNXNTJiMk5oZEdsdmJpMHdOREkwTVYwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFQY0VGMGIyMXBZMHh2WVdRdE1EUTNNekZkSUFCYlZsVkpSQzFYYjNKc1pGSmhlVTl5YVdkcGJrdElVaTFYYjNKc1pGSmhlVTl5YVdkcGJrdElVaTB3TkRRek1WMGdBRnRXVlVsRUxVWnliMjUwUm1GamFXNW5MVVp5YjI1MFJtRmphVzVuTFRBME1qTXhYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxVTnZiWEJ2Ym1WdWRDMHdORGt5TVYwZ0FGdFdWVWxFTFZOMFlXNWtZV3h2Ym1WVGNHbHlkaTFPYjI1bExUQTNNekl4WFNBQVcxWlZTVVF0VUc5emFYUnBiMjR0VUc5emFYUnBiMjR0TURRek1qRmRJQUJiVmxWSlJDMUdjbUZuVTJsNlpVVllWQzFHY21GblUybDZaVVZZVkMwd05ESXlNVjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVBjRlI1Y0dWR2IzSjNZWEprVUc5cGJuUmxjaTB3TkRjeE1WMGdBRnRXVlVsRUxWQnZhVzUwUTI5dmNtUXRVRzlwYm5SRGIyOXlaQzB3TkRNeE1WMGdBRnRXVlVsRUxVWnlZV2REYjI5eVpDMUdjbUZuUTI5dmNtUXRNRFF5TVRGZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0U0dsMFFYUjBjbWxpZFhSbFMwaFNMVEEwTnpBeFhTQUFXMVpWU1VRdFZtbGxkMGx1WkdWNExWWnBaWGRKYm1SbGVDMHdORFF3TVYwZ0FGdFdWVWxFTFU5aWFtVmpkRkpoZVVScGNtVmpkR2x2Ymt0SVVpMVBZbXBsWTNSU1lYbEVhWEpsWTNScGIyNUxTRkl0TURRek1ERmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFJteGhkQzB3TmpJd01WMGdBRnRXVlVsRUxWTm9ZV1JwYm1kU1lYUmxTMGhTTFZOb1lXUnBibWRTWVhSbFMwaFNMVEEwTkRrd1hTQUFXMVpWU1VRdFZHVnpjMHhsZG1Wc1QzVjBaWEl0VkdWemMweGxkbVZzVDNWMFpYSXRNRFF6T1RCZElBQmJWbFZKUkMxVGRHRnVaR0ZzYjI1bFUzQnBjbll0U1c1d2RYUXRNRGN5T1RCZElBQmJWbFZKUkMxRGJHbHdSR2x6ZEdGdVkyVXRRMnhwY0VScGMzUmhibU5sTFRBME1Ua3dYU0FBVzFaVlNVUXRVM1JoYm1SaGJHOXVaVk53YVhKMkxWSmxjM1ZzZEMwd05EYzRNRjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVBjRlI1Y0dWU2RXNTBhVzFsUVhKeVlYa3RNRFEyT0RCZElBQmJWbFZKUkMxVGRXSm5jbTkxY0V4dlkyRnNTVzUyYjJOaGRHbHZia2xrTFZOMVltZHliM1Z3VEc5allXeEpiblp2WTJGMGFXOXVTV1F0TURRek9EQmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFJteGhkQzB3TkRZM01GMGdBRnRXVlVsRUxWTjFZbWR5YjNWd1JYRk5ZWE5yTFZOMVltZHliM1Z3UlhGTllYTnJMVEEwTXpjd1hTQUFXMVpWU1VRdFRHRjFibU5vVTJsNlpVdElVaTFNWVhWdVkyaFRhWHBsUzBoU0xUQTBNamN3WFNBQVcxWlZTVVF0VTJGdGNHeGxVRzl6YVhScGIyNHRVMkZ0Y0d4bFVHOXphWFJwYjI0dE1EUXpOakJkSUFCYlZsVkpSQzFDWVhKNVEyOXZjbVJPYjFCbGNuTndTMGhTTFVKaGNubERiMjl5WkU1dlVHVnljM0JMU0ZJdE1EUXhOakJkSUFCYlZsVkpSQzFUZEdGdVpHRnNiMjVsVTNCcGNuWXRRbUZ6WlMwd056WTFNRjBnQUZ0V1ZVbEVMVkpoZVZSdFlYaExTRkl0VW1GNVZHMWhlRXRJVWkwd05ETTFNRjBnQUZ0V1ZVbEVMVWx1WTI5dGFXNW5VbUY1Um14aFozTkxTRkl0U1c1amIyMXBibWRTWVhsR2JHRm5jMHRJVWkwd05ESTFNRjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMU9iMjVsTFRBME5qUXdYU0FBVzFaVlNVUXRTR1ZzY0dWeVNXNTJiMk5oZEdsdmJpMUlaV3h3WlhKSmJuWnZZMkYwYVc5dUxUQTBNalF3WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVTl3UVhSdmJXbGpVM1J2Y21VdE1EUTNNekJkSUFCYlZsVkpSQzFYYjNKc1pGSmhlVVJwY21WamRHbHZia3RJVWkxWGIzSnNaRkpoZVVScGNtVmpkR2x2Ymt0SVVpMHdORFF6TUYwZ0FGdFdWVWxFTFZCeWFXMXBkR2wyWlVsa0xWQnlhVzFwZEdsMlpVbGtMVEEwTXpNd1hTQUFXMVpWU1VRdFJuSnZiblJHWVdOcGJtY3RSbkp2Ym5SR1lXTnBibWN0TURReU16QmRJQUJiVmxWSlJDMVRkR0Z1WkdGc2IyNWxVM0JwY25ZdFEyOXRjRzl1Wlc1MExUQTBPVEl3WFNBQVcxWlZTVVF0VTNSaGJtUmhiRzl1WlZOd2FYSjJMVVY0WldOMWRHbHZiazF2WkdWc0xUQTNNekl3WFNBQVcxWlZTVVF0VUc5emFYUnBiMjR0VUc5emFYUnBiMjR0TURRek1qQmRJQUJiVmxWSlJDMUdjbUZuVTJsNlpVVllWQzFHY21GblUybDZaVVZZVkMwd05ESXlNRjBnQUZ0V1ZVbEVMVk4wWVc1a1lXeHZibVZUY0dseWRpMVFhSGx6YVdOaGJGTjBiM0poWjJWQ2RXWm1aWEkyTkMwd05EY3hNRjBnQUZ0V1ZVbEVMVkJoZEdOb1ZtVnlkR2xqWlhNdFVHRjBZMmhXWlhKMGFXTmxjeTB3TkRNeE1GMGdBRnRXVlVsRUxVWnlZV2REYjI5eVpDMUdjbUZuUTI5dmNtUXRNRFF5TVRCZElBQmJWbFZKUkMxV1pYSjBaWGhKYm1SbGVDMVdaWEowWlhoSmJtUmxlQzB3TkRRd01GMGdBRnRXVlVsRUxVOWlhbVZqZEZKaGVVUnBjbVZqZEdsdmJrdElVaTFQWW1wbFkzUlNZWGxFYVhKbFkzUnBiMjVMU0ZJdE1EUXpNREJkSUFCYlZsVkpSQzFEZFd4c1JHbHpkR0Z1WTJVdFEzVnNiRVJwYzNSaGJtTmxMVEEwTWpBd1hTQUFTVzUyWVd4cFpDQk5VeUFBVDNCMGFXOXVZV3dnU1cxaFoyVWdUM0JsY21GdVpITWdZWEpsSUc1dmRDQmhiR3h2ZDJWa0lHbHVJSFJvWlNCUGNHVnVRMHdnQUZSSlRsUmZWVTVTUlVGRFNFRkNURVVnQUhWdWFHRnVaR3hsWkNCbGVIQnlaWE56YVc5dUlHWnZjaUJKUkNBQWJXRnNabTl5YldWa0lFUmxjMk55YVhCMGIzSlRaWFFnWkdWamIzSmhkR2x2YmlCdmJpQkpSQ0FBYldGc1ptOXliV1ZrSUVKMWFXeDBTVzRnWkdWamIzSmhkR2x2YmlCdmJpQkpSQ0FBYldGc1ptOXliV1ZrSUVKcGJtUnBibWNnWkdWamIzSmhkR2x2YmlCdmJpQkpSQ0FBYldGc1ptOXliV1ZrSUdSbFkyOXlZWFJwYjI0Z2IyNGdTVVFnQUhWdWFHRnVaR3hsWkNCbGVIUmxibVJsWkNCcGJuTjBjblZqZEdsdmJpQnBiWEJ2Y25RZ2QybDBhQ0JKUkNBQWFXNTJZV3hwWkNCamIyNXpkR0Z1ZENCM2FYUm9JRWxFSUFCemRISjFZM1FnZDJsMGFDQkpSQ0FBYVc1MFpYSnVZV3dnWlhKeWIzSTZJSFZ1Y21WbmFYTjBaWEpsWkNCeVpYUjFjbTRnZEhsd1pTQm1iM0lnWm5WdVkzUnBiMjRnZDJsMGFDQkpSQ0FBVTFCSlVpMVdJSEJ2YVc1MFpYSWdkSGx3WlNCM2FYUm9JRWxFSUFCMWJtdHViM2R1SUZOUVNWSXRWaUIwZVhCbElIZHBkR2dnU1VRZ0FIWmhjbWxoWW14bElIZHBkR2dnU1VRZ0FDQnNaVzVuZEdnZ1NVUWdBR2x1ZG1Gc2FXUWdZWEp5WVhrZ2RIbHdaU0JKUkNBQWFXNTBaWEp1WVd3Z1pYSnliM0k2SUVsRUlBQXNJRWxFSUFCUGNFVnVkSEo1VUc5cGJuUWdSVzUwY25rZ1VHOXBiblFnUEdsa1BpQUFUM0JGZUdWamRYUnBiMjVOYjJSbElFVnVkSEo1SUZCdmFXNTBJRHhwWkQ0Z0FDQkRiMjV6ZEdsMGRXVnVkQ0E4YVdRK0lBQlBjRVoxYm1OMGFXOXVRMkZzYkNCQmNtZDFiV1Z1ZENBOGFXUStJQUFnUm05MWJtUWdjbVZ6ZFd4MElEeHBaRDRnQUNCa1pXTnZjbUYwYVc5dUlHOXVJSFJoY21kbGRDQThhV1ErSUFCUGNFeHBibVVnVkdGeVoyVjBJRHhwWkQ0Z0FDQndjbTkyYVdSbFpDQnBiaUJQY0VkeWIzVndUV1Z0WW1WeVJHVmpiM0poZEdVZ1ptOXlJSE4wY25WamRDQThhV1ErSUFBZ2NISnZkbWxrWldRZ2FXNGdUM0JOWlcxaVpYSkVaV052Y21GMFpTQm1iM0lnYzNSeWRXTjBJRHhwWkQ0Z0FITWdiR0Y1YjNWMElHUnZaWE1nYm05MElHMWhkR05vSUU5aWFtVmpkQ0E4YVdRK0lBQnpJSFI1Y0dVZ1pHOWxjeUJ1YjNRZ2JXRjBZMmdnVDJKcVpXTjBJRHhwWkQ0Z0FFOXdVM1J2Y21VZ1QySnFaV04wSUR4cFpENGdBRTl3Vkhsd1pVTnZiM0JsY21GMGFYWmxUV0YwY21sNFRsWWdVbTkzY3lBOGFXUStJQUJQY0ZSNWNHVkRiMjl3WlhKaGRHbDJaVTFoZEhKcGVFNVdJRU52YkhNZ1BHbGtQaUFBVDNCV1lYSnBZV0pzWlNCSmJtbDBhV0ZzYVhwbGNpQThhV1ErSUFCUGNGTjBiM0psSUhSNWNHVWdabTl5SUhCdmFXNTBaWElnUEdsa1BpQUFUM0JNYjJGa0lIUjVjR1VnWm05eUlIQnZhVzUwWlhJZ1BHbGtQaUFBSUdSdlpYTWdibTkwSUcxaGRHTm9JRkJ2YVc1MFpYSWdQR2xrUGlBQVQzQlRkRzl5WlNCUWIybHVkR1Z5SUR4cFpENGdBRTl3VEc5aFpDQlFiMmx1ZEdWeUlEeHBaRDRnQUU5d1RXVnRZbVZ5VG1GdFpTQk5aVzFpWlhJZ1BHbGtQaUFBVDNCSGNtOTFjRTFsYldKbGNrUmxZMjl5WVhSbElFUmxZMjl5WVhScGIyNGdaM0p2ZFhBZ1BHbGtQaUFBVDNCSGNtOTFjRVJsWTI5eVlYUmxJRVJsWTI5eVlYUnBiMjRnWjNKdmRYQWdQR2xrUGlBQVQzQkhjbTkxY0VSbFkyOXlZWFJsSUcxaGVTQnViM1FnZEdGeVoyVjBJRTl3UkdWamIzSmhkR2x2YmtkeWIzVndJRHhwWkQ0Z0FGUm9aU0JvYVdkb0xXOXlaR1Z5SUdKcGRITWdiMllnWVNCc2FYUmxjbUZzSUc1MWJXSmxjaUJwYmlCcGJuTjBjblZqZEdsdmJpQThhV1ErSUFCeklHTmhiR3huY21Gd2FDQmpiMjUwWVdsdWN5Qm1kVzVqZEdsdmJpQThhV1ErSUFBZ1lYSm5kVzFsYm5SekxpQlBjRlI1Y0dWR2RXNWpkR2x2YmlBOGFXUStJQUJQY0VaMWJtTjBhVzl1UTJGc2JDQkdkVzVqZEdsdmJpQThhV1ErSUFCeklIUjVjR1VnWkc5bGN5QnViM1FnYldGMFkyZ2dSblZ1WTNScGIyNGdQR2xrUGlBQVQzQlFhR2tnY21WbVpYSmxibU5sY3lCcGJtTnZiV2x1WnlCaVlYTnBZeUJpYkc5amF5QThhV1ErSUFCUGNGQm9hU2R6SUdsdVkyOXRhVzVuSUdKaGMybGpJR0pzYjJOcklEeHBaRDRnQUU5d1ZIbHdaVUZ5Y21GNUlFeGxibWQwYUNBOGFXUStJQUFnYVhNZ2JtOTBJR0VnY0hKbFpHVmpaWE56YjNJZ2IyWWdQR2xrUGlBQUlHRnpJR0Z1SUc5d1pYSmhibVFnYjJZZ1BHbGtQaUFBSUdSdlpYTWdibTkwSUcxaGRHTm9JR2x1WTI5dGFXNW5JSFpoYkhWbElEeHBaRDRnQUU5d1VtVjBkWEp1Vm1Gc2RXVWdWbUZzZFdVZ1BHbGtQaUFBVkdobElFSmhjMlVnUEdsa1BpQUFJR052Ym5SaGFXNXpJSE4wY25WamRIVnlaU0E4YVdRK0lBQWdhVzUwYnlCMGFHVWdjM1J5ZFdOMGRYSmxJRHhwWkQ0Z0FIUjVjR1V1SUZOMGNuVmpkSFZ5WlNBOGFXUStJQUJQY0ZCb2FTZHpJSEpsYzNWc2RDQjBlWEJsSUR4cFpENGdBSE53ZGpvNlQzQTZPazl3UTI5dmNHVnlZWFJwZG1WTllYUnlhWGhUZEc5eVpVNVdJRTlpYW1WamRDQjBlWEJsSUR4cFpENGdBRTl3VW1WMGRYSnVWbUZzZFdVZ2RtRnNkV1VuY3lCMGVYQmxJRHhwWkQ0Z0FDQnpkRzl5WVdkbElHTnNZWE56SUdadmNpQndiMmx1ZEdWeUlIUjVjR1VnUEdsa1BpQUFJR1J2WlhNZ2JtOTBJRzFoZEdOb0lIUm9aU0JHZFc1amRHbHZiaUJVZVhCbEozTWdjbVYwZFhKdUlIUjVjR1VnUEdsa1BpQUFUM0JIY205MWNFMWxiV0psY2tSbFkyOXlZWFJsSUZOMGNuVmpkSFZ5WlNCMGVYQmxJRHhwWkQ0Z0FFOXdUV1Z0WW1WeVJHVmpiM0poZEdVZ1UzUnlkV04wZFhKbElIUjVjR1VnUEdsa1BpQUFUM0JVZVhCbFZtVmpkRzl5SUVOdmJYQnZibVZ1ZENCVWVYQmxJRHhwWkQ0Z0FFOXdWSGx3WlVOdmIzQmxjbUYwYVhabFRXRjBjbWw0VGxZZ1EyOXRjRzl1Wlc1MElGUjVjR1VnUEdsa1BpQUFUM0JVZVhCbFFYSnlZWGtnUld4bGJXVnVkQ0JVZVhCbElEeHBaRDRnQUU5d1ZIbHdaVkoxYm5ScGJXVkJjbkpoZVNCRmJHVnRaVzUwSUZSNWNHVWdQR2xrUGlBQVQzQkdkVzVqZEdsdmJsQmhjbUZ0WlhSbGNpQlNaWE4xYkhRZ1ZIbHdaU0E4YVdRK0lBQlBjRU52Ym5OMFlXNTBVMkZ0Y0d4bGNpQlNaWE4xYkhRZ1ZIbHdaU0E4YVdRK0lBQlBjRVoxYm1OMGFXOXVJRkpsYzNWc2RDQlVlWEJsSUR4cFpENGdBRTl3UTI5dWMzUmhiblJPZFd4c0lGSmxjM1ZzZENCVWVYQmxJRHhwWkQ0Z0FFOXdSblZ1WTNScGIyNURZV3hzSUZKbGMzVnNkQ0JVZVhCbElEeHBaRDRnQUNCRGIyNXpkR2wwZFdWdWRDQmpiM1Z1ZENCa2IyVnpJRzV2ZENCdFlYUmphQ0JTWlhOMWJIUWdWSGx3WlNBOGFXUStJQUFnZG1WamRHOXlJR052YlhCdmJtVnVkQ0JqYjNWdWRDQmtiMlZ6SUc1dmRDQnRZWFJqYUNCU1pYTjFiSFFnVkhsd1pTQThhV1ErSUFCUGNGWmxZM1J2Y2xOb2RXWm1iR1VnWTI5dGNHOXVaVzUwSUd4cGRHVnlZV3h6SUdOdmRXNTBJR1J2WlhNZ2JtOTBJRzFoZEdOb0lGSmxjM1ZzZENCVWVYQmxJRHhwWkQ0Z0FDQkRiMjV6ZEdsMGRXVnVkQ0E4YVdRK0lHTnZkVzUwSUdSdlpYTWdibTkwSUcxaGRHTm9JRkpsYzNWc2RDQlVlWEJsSUR4cFpENGdBQ0JqYjIxd2IyNWxiblFnZEhsd1pTQmtiMlZ6SUc1dmRDQnRZWFJqYUNCU1pYTjFiSFFnVkhsd1pTQThhV1ErSUFCeklIUjVjR1VnWkc5bGN5QnViM1FnYldGMFkyZ2dVbVZ6ZFd4MElGUjVjR1VnUEdsa1BpQUFUM0JXWVhKcFlXSnNaU0JTWlhOMWJIUWdWSGx3WlNBOGFXUStJQUFnZEhsd1pTQmtiMlZ6SUc1dmRDQnRZWFJqYUNCMGFHVWdVbVZ6ZFd4MElGUjVjR1VnUEdsa1BpQUFRV3hzSUU5d1UyRnRjR3hsWkVsdFlXZGxJR2x1YzNSeWRXTjBhVzl1Y3lCdGRYTjBJR0psSUdsdUlIUm9aU0J6WVcxbElHSnNiMk5ySUdsdUlIZG9hV05vSUhSb1pXbHlJRkpsYzNWc2RDQThhV1ErSUdGeVpTQmpiMjV6ZFcxbFpDNGdUM0JUWVcxd2JHVmtTVzFoWjJVZ1VtVnpkV3gwSUZSNWNHVWdQR2xrUGlBQVQzQk1iMkZrSUZKbGMzVnNkQ0JVZVhCbElEeHBaRDRnQUhOd2RqbzZUM0E2T2s5d1EyOXZjR1Z5WVhScGRtVk5ZWFJ5YVhoTWIyRmtUbFlnVW1WemRXeDBJRlI1Y0dVZ1BHbGtQaUFBVDNCVWVYQmxVRzlwYm5SbGNpQlVlWEJsSUR4cFpENGdBRTl3Vkhsd1pVWjFibU4wYVc5dUlGQmhjbUZ0WlhSbGNpQlVlWEJsSUR4cFpENGdBRTl3Vkhsd1pWTjBjblZqZENCTlpXMWlaWElnVkhsd1pTQThhV1ErSUFCUGNGUjVjR1ZHZFc1amRHbHZiaUJTWlhSMWNtNGdWSGx3WlNBOGFXUStJQUJQY0VaMWJtTjBhVzl1SUVaMWJtTjBhVzl1SUZSNWNHVWdQR2xrUGlBQUlHbHVaR1Y0SUdseklHeGhjbWRsY2lCMGFHRnVJRlI1Y0dVZ1BHbGtQaUFBVDNCTlpXMWlaWEpPWVcxbElGUjVjR1VnUEdsa1BpQUFUM0JVZVhCbFEyOXZjR1Z5WVhScGRtVk5ZWFJ5YVhoT1ZpQlRZMjl3WlNBOGFXUStJQUJWYm1sbWIzSnRRMjl1YzNSaGJuUWdUM0JXWVhKcFlXSnNaU0E4YVdRK0lBQlFkWE5vUTI5dWMzUmhiblFnVDNCV1lYSnBZV0pzWlNBOGFXUStJQUJUZEc5eVlXZGxRblZtWm1WeUlFOXdWbUZ5YVdGaWJHVWdQR2xrUGlBQVZXNXBabTl5YlNCUGNGWmhjbWxoWW14bElEeHBaRDRnQUhNZ2RIbHdaU0JrYjJWeklHNXZkQ0J0WVhSamFDQlRiM1Z5WTJVZ1BHbGtQaUFBVkdGeVoyVjBJRzl3WlhKaGJtUWdQR2xrUGlBQVEyOXNkVzF1SUUxaGFtOXlJRzl3WlhKaGJtUWdQR2xrUGlBQVUybDZaU0J2Y0dWeVlXNWtJRHhwWkQ0Z0FGTjBjbWxrWlNCdmNHVnlZVzVrSUR4cFpENGdBRk52ZFhKalpTQnZjR1Z5WVc1a0lEeHBaRDRnQUU5d1ZtRnlhV0ZpYkdVc0lEeHBaRDRnQUNCb1pXRmtaV1FnWW5rZ1BFbEVQaUFBWW14dlkyc2dQRWxFUGlBQWIzQmxjbUYwYjNJZ1BqNGdBQ2tnTFQ0Z0FDY2dMVDRnQUc5d1pYSmhkRzl5SUQ0Z0FHOXdaWEpoZEc5eUlIdzlJQUJ2Y0dWeVlYUnZjaUJlUFNBQWIzQmxjbUYwYjNJZ1BqNDlJQUJ2Y0dWeVlYUnZjaUErUFNBQWIzQmxjbUYwYjNJZ1BUMGdBRzl3WlhKaGRHOXlJRHc4UFNBQWIzQmxjbUYwYjNJZ1BEMGdBRzl3WlhKaGRHOXlJQzg5SUFCdmNHVnlZWFJ2Y2lBdFBTQUFiM0JsY21GMGIzSWdLejBnQUc5d1pYSmhkRzl5SUNvOUlBQnZjR1Z5WVhSdmNpQW1QU0FBYjNCbGNtRjBiM0lnSlQwZ0FHOXdaWEpoZEc5eUlDRTlJQUFnUFNBQWIzQmxjbUYwYjNJZ1BEd2dBRzl3WlhKaGRHOXlJRHdnQURzZ0FIVnVhR0Z1Wkd4bFpDQnBiV0ZuWlNCeGRXVnllVG9nQUNCdmJpQmhJSEoxYm5ScGJXVWdZWEp5WVhrNklBQlZibWhoYm1Sc1pXUWdabXh2WVhRZ2JHbDBaWEpoYkNCemRXWm1hWGc2SUFCVmJtaGhibVJzWldRZ2FXNTBaV2RsY2lCc2FYUmxjbUZzSUhOMVptWnBlRG9nQUVWNGNHVmpkR1ZrSURZMExXSnBkQ0IxYVc1MElITmpZV3hoY2lCdmNpQXlMV052YlhCdmJtVnVkQ0F6TWkxaWFYUWdkV2x1ZENCMlpXTjBiM0lnWVhNZ2FXNXdkWFE2SUFCRmVIQmxZM1JsWkNCcGJuUWdjMk5oYkdGeUlHOXlJSFpsWTNSdmNpQmhjeUJwYm5CMWREb2dBRVY0Y0dWamRHVmtJR2x1ZENCelkyRnNZWElnWVhNZ2FXNXdkWFE2SUFCbGVIQmxZM1JsWkNCWGIzSnJaM0p2ZFhBZ0tESXBMQ0JuYjNRNklBQnBiblpoYkdsa0lITjNhWHA2YkdVZ2NISmxabWw0SUdOdmRXNTBPaUFBU1c1MllXeHBaQ0JwYm5OMGNuVmpkR2x2YmlCM2IzSmtJR052ZFc1ME9pQUFSWGh3WldOMFpXUWdiM0JsY21GdVpITWdkRzhnWW1VZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2lCcGJuUTZJQUJYUjFOTUlHUnZaWE1nYm05MElITjFjSEJ2Y25RZ2FXMWhaMlVnWjJGMGFHVnlJSGRwZEdnZ1pYaHdiR2xqYVhRZ1ozSmhaR2xsYm5RNklBQlhSMU5NSUdSdlpYTWdibTkwSUhOMWNIQnZjblFnWkdWd2RHZ3RjbVZtWlhKbGJtTmxJSE5oYlhCc2FXNW5JSGRwZEdnZ1pYaHdiR2xqYVhRZ1ozSmhaR2xsYm5RNklBQm1hWEp6ZENCcGJtUmxlQ0J2WmlCaFkyTmxjM01nWTJoaGFXNGdhVzUwYnlCd1pYSXRkbVZ5ZEdWNElITjBjblZqZEhWeVpTQnBjeUJ1YjNRZ1lTQmpiMjV6ZEdGdWREb2dBR1JsWm1GMWJIUTZJQUJWYm5KbFkyOW5ibWw2WldRZ1pYaDBaVzVrWldRZ2FXNXpkSEoxWTNScGIyNGdjMlYwT2lBQWRXNW9ZVzVrYkdWa0lHWjFibU4wYVc5dUlHTmhiR3dnZEdGeVoyVjBPaUFBS1NCbWNtOXRJR052Ym5ScGJuVmxJR052Ym5OMGNuVmpkRG9nQUVWNGNHVmpkR1ZrSUc5d1pYSmhibVJ6SUhSdklHSmxJSE5qWVd4aGNpQnZjaUIyWldOMGIzSWdabXh2WVhRNklBQkZlSEJsWTNSbFpDQnZjR1Z5WVc1a0lIUnZJR0psSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0lnWm14dllYUTZJQUJwYm5aaGJHbGtJR2x0WVdkbElHWnZjbTFoZERvZ0FFRjBPaUFBUlhod1pXTjBaV1FnYjNCbGNtRnVaSE1nZEc4Z2FHRjJaU0IwYUdVZ2MyRnRaU0J1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwY3pvZ0FHSmhaQ0J2Y2lCMWJuTjFjSEJ2Y25SbFpDQmpiMjl5WkdsdVlYUmxJSFI1Y0dVZ1ptOXlJR2x0WVdkbElHRmpZMlZ6Y3pvZ0FHbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCMWJuSmxZMjluYm1sNlpXUWdhVzFoWjJVZ1lXTmpaWE56T2lBQVJYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnWW1VZ2IyWWdkR0Z5WjJWMElITjBiM0poWjJVZ1kyeGhjM002SUFCMWJtdHViM2R1SUZOUVNWSXRWaUJ6ZEc5eVlXZGxJR05zWVhOek9pQUFaWGh3WldOMFpXUWdVbVZ6ZFd4MElGUjVjR1VnYldGMGNtbDRJSFJ2SUdoaGRtVWdZU0JEYjJ4MWJXNGdWSGx3WlNCdlppQXpMV052YlhCdmJtVnVkQ0F6TWkxaWFYUWdabXh2WVhRZ2RtVmpkRzl5Y3pvZ0FGZEhVMHdnWkc5bGN5QnViM1FnYzNWd2NHOXlkQ0JqYjIxaWFXNWxaQ0JwYldGblpTMXpZVzF3YkdWeWN6b2dBRmRIVTB3Z1pHOWxjeUJ1YjNRZ2MzVndjRzl5ZENCaGNuSmhlWE1nYjJZZ1luVm1abVZ5Y3pvZ0FFVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSE4wY25WamRDQjBieUJvWVhabElIUjNieUJ0WlcxaVpYSnpPaUFBUTI5dWMzUlBabVp6WlhRZ2FYTWdiMjVzZVNCd1pYSnRhWFIwWldRZ1ptOXlJSE5oYlhCc2FXNW5MQ0JuWVhSb1pYSXNJRzl5SUdSbGNIUm9MWEpsWm1WeVpXNWpaU0JuWVhSb1pYSWdiM0JsY21GMGFXOXVjem9nQUNCeVpYRjFhWEpsY3lCdmJtVWdiMllnZEdobElHWnZiR3h2ZDJsdVp5QmxlSFJsYm5OcGIyNXpPaUFBSUdGMElHMXBibWx0ZFcwZ2IzSWdiMjVsSUc5bUlIUm9aU0JtYjJ4c2IzZHBibWNnWlhoMFpXNXphVzl1Y3pvZ0FDa2djbVZ4ZFdseVpYTWdiMjVsSUc5bUlIUm9aWE5sSUdWNGRHVnVjMmx2Ym5NNklBQnBiblpoYkdsa0lHUmxjSFJvWDNSbGVIUjFjbVVnWkdsdFpXNXphVzl1Y3pvZ0FHbHVkbUZzYVdRZ1pHVndkR2hmYlhWc2RHbHpZVzF3YkdWa1gzUmxlSFIxY21VZ1pHbHRaVzV6YVc5dWN6b2dBR2x1ZG1Gc2FXUWdiWFZzZEdsellXMXdiR1ZrWDNSbGVIUjFjbVVnWkdsdFpXNXphVzl1Y3pvZ0FHbHVkbUZzYVdRZ2MyRnRjR3hsWkY5MFpYaDBkWEpsSUdScGJXVnVjMmx2Ym5NNklBQnBiblpoYkdsa0lITjBiM0poWjJWZmRHVjRkSFZ5WlNBZ1pHbHRaVzV6YVc5dWN6b2dBRkJ2YzNOcFlteGxJSFpoYkhWbGN6b2dBRU52Ym5OMFQyWm1jMlYwSUdseklHOXViSGtnY0dWeWJXbDBkR1ZrSUdadmNpQXlSQ3dnTWtRZ1FYSnlZWGxsWkN3Z1lXNWtJRE5FSUhSbGVIUjFjbVZ6T2lBQUlISmxjWFZwY21WeklHOXVaU0J2WmlCMGFHVnpaU0JqWVhCaFltbHNhWFJwWlhNNklBQWdhR0Z6SUhSdmJ5QnRZVzU1SUdKaFkydGxaR2RsY3pvZ0FDQnBibVJwWTJWek9pQUFJSGR2Y21Sek9pQUFTVzVrWlhnZ2FYTWdiM1YwSUc5bUlHSnZkVzVrY3pvZ0FHbHVkbUZzYVdRZ1UxQkpVaTFXSUdsdFlXZGxJSFI1Y0dVNklHVjRjR1ZqZEdWa0lEY2diM0JsY21GdVpITTZJQUJwYm5aaGJHbGtJR0Z5Y21GNUlHeGxibWQwYURvZ2NtVnhkV2x5WlhNZ01pQnZjR1Z5WVc1a2N6b2dBSFZ1YzNWd2NHOXlkR1ZrSUdOdmJuUnliMndnWW1GeWNtbGxjaUJ6WlcxaGJuUnBZM002SUFCWFIxTk1JR1J2WlhNZ2JtOTBJSE4xY0hCdmNuUWdhVzFoWjJVZ1oyRjBhR1Z5SUhkcGRHZ2diR1YyWld3dGIyWXRaR1YwWVdsc0lHSnBZWE02SUFCWFIxTk1JR1J2WlhNZ2JtOTBJSE4xY0hCdmNuUWdaR1Z3ZEdndGNtVm1aWEpsYm1ObElITmhiWEJzYVc1bklIZHBkR2dnYkdWMlpXd3RiMll0WkdWMFlXbHNJR0pwWVhNNklBQnBiblpoYkdsa0lIWmhiSFZsSUdadmNpQndkSEpmWVhNNklBQlFiMmx1ZEdWeUlHTmhiaUJ2Ym14NUlHSmxJR052Ym5abGNuUmxaQ0IwYnlCaGJtOTBhR1Z5SUhCdmFXNTBaWElzSUdsdWRDQnpZMkZzWVhJZ2IzSWdNekl0WW1sMElHbHVkQ0IyWldOMGIzSTZJQUJ2Y0dWeVlXNWtJR1p2Y2lCamIyNTJaWEp6YVc5dUlIUnZJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSWdiWFZ6ZENCaVpTQm1iRzloZEdsdVp5QndiMmx1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5T2lBQWIzQmxjbUZ1WkNCbWIzSWdZMjl1ZG1WeWMybHZiaUIwYnlCemFXZHVaV1FnYVc1MFpXZGxjaUJ0ZFhOMElHSmxJR1pzYjJGMGFXNW5JSEJ2YVc1MElITmpZV3hoY2lCdmNpQjJaV04wYjNJNklBQkZlSEJsWTNSbFpDQnBibkIxZENCMGJ5QmlaU0JwYm5RZ2MyTmhiR0Z5SUc5eUlIWmxZM1J2Y2pvZ0FFVjRjR1ZqZEdWa0lGTm9hV1owSUhSdklHSmxJR2x1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5T2lBQVJYaHdaV04wWldRZ1FtRnpaU0IwYnlCaVpTQnBiblFnYzJOaGJHRnlJRzl5SUhabFkzUnZjam9nQUVWNGNHVmpkR1ZrSUdsdWNIVjBJSFJ2SUdKbElHWnNiMkYwSUhOallXeGhjaUJ2Y2lCMlpXTjBiM0k2SUFCcGJuUmxaMlZ5SUhOallXeGhjaUJ2Y2lCMlpXTjBiM0k2SUFCdmNHVnlZVzVrSUdadmNpQmpiMjUyWlhKemFXOXVJSFJ2SUdac2IyRjBhVzVuSUhCdmFXNTBJRzExYzNRZ1ltVWdhVzUwWldkeVlXd2djMk5oYkdGeUlHOXlJSFpsWTNSdmNqb2dBRHNnUjJWdVpYSmhkRzl5T2lBQVkyOTFiR1J1SjNRZ1kyOXVkbVZ5ZENCeVpYTjFiSFFnZEhsd1pTQm1iM0k2SUFCcGJuUmxjbTVoYkNCbGNuSnZjam9nZFc1dFlYQndaV1FnZEhsd1pTQm1iM0k2SUFCRmVIQmxZM1JsWkNCcGJuQjFkQ0IwYnlCaVpTQmhJSEJ2YVc1MFpYSXNJR2x1ZENCelkyRnNZWElnYjNJZ016SXRZbWwwSUdsdWRDQjJaV04wYjNJZ2FXWWdVbVZ6ZFd4MElGUjVjR1VnYVhNZ2NHOXBiblJsY2pvZ0FFVjRjR1ZqZEdWa0lHbHVjSFYwSUhSdklHSmxJR0VnY0c5cGJuUmxjaUJ2Y2lCcGJuUWdjMk5oYkdGeUlHbG1JRkpsYzNWc2RDQlVlWEJsSUdseklIQnZhVzUwWlhJNklBQkZlSEJsWTNSbFpDQnBibkIxZENCMGJ5QmlaU0JoSUhCdmFXNTBaWEk2SUFCRmVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQjBieUJpWlNCaElIQnZhVzUwWlhJNklBQlBjRlpoY21saFlteGxJSFI1Y0dVZ1pYaHdaV04wWldRZ2RHOGdZbVVnWVNCd2IybHVkR1Z5T2lBQVVHOXBiblJsY2pvZ0FHbHVkbUZzYVdRZ2RIbHdaU0JtYjNJZ2FXMWhaMlVnYjNJZ2MyRnRjR3hsY2lCMllYSnBZV0pzWlNCdmNpQm1kVzVqZEdsdmJpQndZWEpoYldWMFpYSTZJQUJoY25KaGVYTWdiMllnZEdWNGRIVnlaWE1nYjNJZ2MyRnRjR3hsY25NZ1lYSmxJRzV2ZENCemRYQndiM0owWldRZ2FXNGdWMGRUVERzZ1kyRnVKM1FnZEhKaGJuTnNZWFJsSUhaaGNtbGhZbXhsSUc5eUlHWjFibU4wYVc5dUlIQmhjbUZ0WlhSbGNqb2dBR2x0WVdkbElHRmpZMlZ6Y3lCcGN5QnRhWE56YVc1bklHRWdZMjl2Y21ScGJtRjBaU0J3WVhKaGJXVjBaWEk2SUFCMWJtaGhibVJzWldRZ2NtVnpiMngyWldRZ2FXUmxiblJwWm1sbGNqb2dBR1Z1ZEhKNUlIQnZhVzUwSUc1aGJXVWdhWE1nYm05MElHRWdkbUZzYVdRZ1YwZFRUQ0JwWkdWdWRHbG1hV1Z5T2lBQVptbHljM1FnYVc1a1pYZ2diMllnWVdOalpYTnpJR05vWVdsdUlHbHVkRzhnY0dWeUxYWmxjblJsZUNCemRISjFZM1IxY21VZ2FYTWdibTkwSUdFZ1kyOXVjM1JoYm5RZ2FXNTBaV2RsY2pvZ0FGQnZhVzUwWlhJZ2MzUnZjbUZuWlNCamJHRnpjeUJ0ZFhOMElHSmxJRkJvZVhOcFkyRnNVM1J2Y21GblpVSjFabVpsY2pvZ0FDQmtaV05zWVhKbFpDQmhjeUJqYjI1MGFXNTFaU0IwWVhKblpYUWdabTl5SUcxdmNtVWdkR2hoYmlCdmJtVWdhR1ZoWkdWeU9pQUFJR1JsWTJ4aGNtVmtJR0Z6SUcxbGNtZGxJR0pzYjJOcklHWnZjaUJ0YjNKbElIUm9ZVzRnYjI1bElHaGxZV1JsY2pvZ0FFbHVkbUZzYVdRZ1pYaDBaVzVrWldRZ2FXNXpkSEoxWTNScGIyNGdiblZ0WW1WeU9pQUFVRzlwYm5SbGNpQmpZVzRnYjI1c2VTQmlaU0JqYjI1MlpYSjBaV1FnZEc4Z1lXNXZkR2hsY2lCd2IybHVkR1Z5SUc5eUlHbHVkQ0J6WTJGc1lYSTZJQUJGZUhCbFkzUmxaQ0JEYjNWdWRDQlVlWEJsSUhSdklHSmxJR2x1ZENCelkyRnNZWEk2SUFCRmVIQmxZM1JsWkNCUFptWnpaWFFnVkhsd1pTQjBieUJpWlNCcGJuUWdjMk5oYkdGeU9pQUFiM0lnYzJOaGJHRnlPaUFBZFc1emRYQndiM0owWldRZ1lYUnZiV2xqSUc5d09pQUFkVzVvWVc1a2JHVmtJR0YwYjIxcFl5QnZjRG9nQUVWNGNHVmpkR1ZrSUdKdmIyd2djMk5oYkdGeUlHOXlJSFpsWTNSdmNpQjBlWEJsSUdGeklHTnZibVJwZEdsdmJqb2dBRzV2ZENCaGJpQnBiV0ZuWlNCaFkyTmxjM01nYVc1emRISjFZM1JwYjI0NklBQm1hWEp6ZENCcGJtUmxlQ0J2WmlCaFkyTmxjM01nWTJoaGFXNGdaRzlsY3lCdWIzUWdjbVZtWlhKbGJtTmxJR0Z1SUdsdWMzUnlkV04wYVc5dU9pQUFRM0p2YzNOWGIzSnJaM0p2ZFhBZ2IzSWdSblZ1WTNScGIyNDZJQUIxYm1oaGJtUnNaV1FnYldWdFltVnlJR1JsWTI5eVlYUnBiMjQ2SUFBZ2FHRnpJSFZ1Y21WamIyZHVhWHBsWkNCa1pXTnZjbUYwYVc5dU9pQUFkVzVvWVc1a2JHVmtJR2RzYjJKaGJDQmtaV05zWVhKaGRHbHZiam9nQURzZ1ZtVnljMmx2YmpvZ0FFVjRjR1ZqZEdWa0lFSmhjMlVnWkdsdFpXNXphVzl1SUhSdklHSmxJR1Z4ZFdGc0lIUnZJRkpsYzNWc2RDQlVlWEJsSUdScGJXVnVjMmx2YmpvZ0FHbHVkbUZzYVdRZ1pHbHRaVzV6YVc5dU9pQUFkVzV5WldOdloyNXBlbVZrSUhOd1pXTnBZV3dnWW5WcGJIUnBiam9nQUdOaGJtNXZkQ0J6ZEc5eVpTQmhJSFpoYkhWbElHOTBhR1Z5SUhSb1lXNGdZMjl1YzNSaGJuUWdNUzR3SUhSdklGQnZhVzUwVTJsNlpTQmlkV2xzZEdsdU9pQUFkVzVyYm05M2JpQlRVRWxTTFZZZ1luVnBiSFJwYmpvZ0FDQnlaWEYxYVhKbFpDd2dhVzQ2SUFBZ2NISnZkbWxrWldRc0lHbHVPaUFBUlhod1pXTjBaV1FnYjNCbGNtRnVaQ0IwYnlCaVpTQjJaV04wYjNJZ1ltOXZiRG9nQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJ1YnlCdFlYQndaV1FnZEhsd1pTQnlaWE4xYkhRZ2IyWWdZMkZzYkRvZ0FFUnBiU0JUZFdKd1lYTnpSR0YwWVNCeVpYRjFhWEpsY3lCR2NtRm5iV1Z1ZENCbGVHVmpkWFJwYjI0Z2JXOWtaV3c2SUFCRVpYSnBkbUYwYVhabElHbHVjM1J5ZFdOMGFXOXVjeUJ5WlhGMWFYSmxJRVJsY21sMllYUnBkbVZIY205MWNGRjFZV1J6VGxZZ2IzSWdSR1Z5YVhaaGRHbDJaVWR5YjNWd1RHbHVaV0Z5VGxZZ1pYaGxZM1YwYVc5dUlHMXZaR1VnWm05eUlFZE1RMjl0Y0hWMFpTQmxlR1ZqZFhScGIyNGdiVzlrWld3NklBQkpiWEJzYVdOcGRFeHZaQ0JwYm5OMGNuVmpkR2x2Ym5NZ2NtVnhkV2x5WlNCRVpYSnBkbUYwYVhabFIzSnZkWEJSZFdGa2MwNVdJRzl5SUVSbGNtbDJZWFJwZG1WSGNtOTFjRXhwYm1WaGNrNVdJR1Y0WldOMWRHbHZiaUJ0YjJSbElHWnZjaUJIVEVOdmJYQjFkR1VnWlhobFkzVjBhVzl1SUcxdlpHVnNPaUFBUkdWeWFYWmhkR2wyWlNCcGJuTjBjblZqZEdsdmJuTWdjbVZ4ZFdseVpTQkdjbUZuYldWdWRDQnZjaUJIVEVOdmJYQjFkR1VnWlhobFkzVjBhVzl1SUcxdlpHVnNPaUFBU1cxd2JHbGphWFJNYjJRZ2FXNXpkSEoxWTNScGIyNXpJSEpsY1hWcGNtVWdSbkpoWjIxbGJuUWdiM0lnUjB4RGIyMXdkWFJsSUdWNFpXTjFkR2x2YmlCdGIyUmxiRG9nQUhWdWEyNXZkMjRnVTFCSlVpMVdJR1Y0WldOMWRHbHZiaUJ0YjJSbGJEb2dBSFZ1YUdGdVpHeGxaQ0JsYkdWdFpXNTBJSFI1Y0dVZ1ptOXlJR1p5Wlhod0tDa2dZMjl1YzNRdFpYWmhiRG9nQUc5bUlISnBaMmgwSUcxaGRISnBlQ0IwYnlCaVpTQmxjWFZoYkRvZ0FFVjRjR1ZqZEdWa0lHTnZiWEJ2Ym1WdWRDQjBlWEJsY3lCdlppQjBhR1VnYjNCbGNtRnVaSE1nZEc4Z1ltVWdaWEYxWVd3NklBQkZlSEJsWTNSbFpDQjJaV04wYjNJZ2MybDZaWE1nYjJZZ1VtVnpkV3gwSUZSNWNHVWdZVzVrSUhSb1pTQnZjR1Z5WVc1a2N5QjBieUJpWlNCbGNYVmhiRG9nQUVWNGNHVmpkR1ZrSUhabFkzUnZjaUJ6YVhwbGN5QnZaaUJTWlhOMWJIUWdWSGx3WlNCaGJtUWdkR2hsSUdOdmJtUnBkR2x2YmlCMGJ5QmlaU0JsY1hWaGJEb2dBRVY0Y0dWamRHVmtJSFpsWTNSdmNpQnphWHBsY3lCdlppQlNaWE4xYkhRZ1ZIbHdaU0JoYm1RZ2RHaGxJRzl3WlhKaGJtUWdkRzhnWW1VZ1pYRjFZV3c2SUFCRmVIQmxZM1JsWkNCU1pYTjFiSFFnVkhsd1pTQnpkSEoxWTNRZ2JXVnRZbVZ5SUhSNWNHVnpJSFJ2SUdKbElHbGtaVzUwYVdOaGJEb2dBSE4wY25WamRDQnBibVJsZUNCdmRYUWdiMllnWW05MWJtUnpJR1p2Y2lCaGNuSmhlU0JzWlc1bmRHZzZJQUJGZUhCbFkzUmxaQ0JpYjNSb0lHOXdaWEpoYm1SeklIUnZJR2hoZG1VZ2RHaGxJSE5oYldVZ1kyOXRjRzl1Wlc1MElHSnBkQ0IzYVdSMGFEb2dBSFZ1YUdGdVpHeGxaQ0JtYkc5aGRDQjNhV1IwYURvZ0FIVnVhR0Z1Wkd4bFpDQnBiblJsWjJWeUlIZHBaSFJvT2lBQVEyOXZjR1Z5WVhScGRtVWdiV0YwY21sNElDZE9KeUJ0YVhOdFlYUmphRG9nQUVOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNBblRTY2diV2x6YldGMFkyZzZJQUJEYjI5d1pYSmhkR2wyWlNCdFlYUnlhWGdnSjBzbklHMXBjMjFoZEdOb09pQUFRMjl2Y0dWeVlYUnBkbVVnYldGMGNtbDRJSE5qYjNCbGN5QnRkWE4wSUcxaGRHTm9PaUFBVW1WemRXeDBJRlI1Y0dVZ2RtVmpkRzl5SUhOcGVtVTZJQUIyWldOMGIzSWdiM0JsY21GdVpDQnphWHBsT2lBQWRHVjRaV3dnYUdGeklIUnZieUJtWlhjZ1kyOXRjRzl1Wlc1MGN5Qm1iM0lnYzNSdmNtRm5aU0IwWlhoMGRYSmxPaUFBZDNKcGRHbHVaeUIwYnlCdmRHaGxjaUIwYUdGdUlITjBiM0poWjJVZ2RHVjRkSFZ5WlRvZ0FFVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdRV05qWld4bGNtRjBhVzl1SUZOMGNuVmpkSFZ5WlRvZ0FDQWdkMmhsY21VNklBQW5JR0psYUdGMmFXOXljeUJoY21VNklBQlhSMU5NSUdSdlpYTWdibTkwSUhOMWNIQnZjblFnWlcxd2RIa2djM1J5ZFdOMGRYSmxjeTRnWTJGdUozUWdZMjl1ZG1WeWRDQjBlWEJsT2lBQWRXNXJibTkzYmlCemRHRjBaVzFsYm5RZ2RIbHdaVG9nQUVWNGNHVmpkR1ZrSUZKbGMzVnNkQ0JVZVhCbElIUnZJR0psSUdac2IyRjBJSE5qWVd4aGNpQnZjaUIyWldOMGIzSWdkSGx3WlRvZ0FHTmhiaWQwSUcxaGEyVWdiblZzYkNCMllXeDFaU0JtYjNJZ2RIbHdaVG9nQUVWNGNHVmpkR1ZrSUdKdmRHZ2diM0JsY21GdVpITWdkRzhnWW1VZ2IyWWdVbVZ6ZFd4MElGUjVjR1VnYldWdFltVnlJSFI1Y0dVNklBQnZjaUJ6WTJGc1lYSWdkSGx3WlRvZ0FIVnVhR0Z1Wkd4bFpDQm1jbVY0Y0NCMGVYQmxPaUFBZFc1cmJtOTNiaUJwWkdWdWRHbG1hV1Z5SUdWNGNISmxjM05wYjI0Z2RIbHdaVG9nQUhWdWEyNXZkMjRnYkhaaGJIVmxJR2xrWlc1MGFXWnBaWElnWlhod2NtVnpjMmx2YmlCMGVYQmxPaUFBZFc1cmJtOTNiaUJsZUhCeVpYTnphVzl1SUhSNWNHVTZJQUIxYm10dWIzZHVJR3gyWVd4MVpTQmxlSEJ5WlhOemFXOXVJSFI1Y0dVNklBQjFibWhoYm1Sc1pXUWdaWGh3Y21WemMybHZiaUIwZVhCbE9pQUFkVzVvWVc1a2JHVmtJSE5sYlRvNlJYaHdjbVZ6YzJsdmJpQjBlWEJsT2lBQWFXNTJZV3hwWkNCMFpYaGxiQ0IwZVhCbElHWnZjaUJ6ZEc5eVlXZGxJSFJsZUhSMWNtVWdkM0pwZEdVNklHTnZiWEJ2Ym1WdWRDQnRkWE4wSUdKbElHWnNiMkYwTENCemFXZHVaV1FnYVc1MFpXZGxjaXdnYjNJZ2RXNXphV2R1WldRZ2FXNTBaV2RsY2lCMGJ5QnRZWFJqYUNCMGFHVWdkR1Y0ZEhWeVpTQmphR0Z1Ym1Wc0lIUjVjR1U2SUFCVmJtaGhibVJzWldRZ2JHbDBaWEpoYkNCMGVYQmxPaUFBZFc1b1lXNWtiR1ZrSUcxdlpHWWdkSGx3WlRvZ0FFVjRjR1ZqZEdWa0lHbHVjSFYwSUdGdVpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCd2IybHVkQ0IwYnlCMGFHVWdjMkZ0WlNCMGVYQmxPaUFBUlhod1pXTjBaV1FnYkdWbWRDQmhibVFnY21sbmFIUWdiM0JsY21GdVpITWdkRzhnYUdGMlpTQjBhR1VnYzJGdFpTQjBlWEJsT2lBQVZtRnNhV1JoZEc5eU9qcEhiRzlpWVd4V1lYSnBZV0pzWlNncElHTmhiR3hsWkNCM2FYUm9JR0VnZFc1cmJtOTNiaUIyWVhKcFlXSnNaU0IwZVhCbE9pQUFVbVZ6YjJ4MlpYSTZPa2RzYjJKaGJGWmhjbWxoWW14bEtDa2dZMkZzYkdWa0lIZHBkR2dnWVNCMWJtdHViM2R1SUhaaGNtbGhZbXhsSUhSNWNHVTZJQUJXWVd4cFpHRjBiM0k2T2xaaGNtbGhZbXhsS0NrZ1kyRnNiR1ZrSUhkcGRHZ2dZU0IxYm10dWIzZHVJSFpoY21saFlteGxJSFI1Y0dVNklBQjFibVY0Y0dWamRHVmtJSFpoY21saFlteGxJSFI1Y0dVNklBQjFibWhoYm1Sc1pXUWdZWFJ2YldsalgyTnZiWEJoY21WZlpYaGphR0Z1WjJVZ2RIbHdaVG9nQUhWdWFHRnVaR3hsWkNCdWIyUmxJSFI1Y0dVNklBQkpiblJsY201aGJDQmxjbkp2Y2pvZ1ZXNW9ZVzVrYkdWa0lHOXdaWEpoYm1RZ2RIbHdaVG9nQUhWdWEyNXZkMjRnWkdWamJHRnlaV1FnZEhsd1pUb2dBSFZ1YUdGdVpHeGxaQ0IwZVhCbE9pQUFWVzVvWVc1a2JHVmtJSFI1Y0dVNklBQkZlSEJsWTNSbFpDQnBibkIxZENCMGJ5Qm9ZWFpsSUdFZ2RIbHdaVG9nQUVsRUlHbHpJRzV2ZENCaElGTlFTVkl0VmlCMGVYQmxPaUFBUlhod1pXTjBaV1FnWVNCemRISjFZM1FnWVhNZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0F6TWkxaWFYUWdabXh2WVhScGJtY3RjRzlwYm5RZ2RIbHdaU0F6TFdOdmJYQnZibVZ1ZENCMlpXTjBiM0lnWVhNZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0F6TWkxaWFYUWdhVzUwWldkbGNpQjBlWEJsSURJdFkyOXRjRzl1Wlc1MElIWmxZM1J2Y2lCaGN5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSURNeUxXSnBkQ0JtYkc5aGRHbHVaeTF3YjJsdWRDQjBlWEJsSUhOallXeGhjaUJoY3lCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJRE15TFdKcGRDQnBiblJsWjJWeUlIUjVjR1VnYzJOaGJHRnlJR0Z6SUZKbGMzVnNkQ0JVZVhCbE9pQUFSWGh3WldOMFpXUWdhVzV3ZFhRZ2RHOGdhR0YyWlNCMGFHVWdjMkZ0WlNCa2FXMWxibk5wYjI0Z1lYTWdVbVZ6ZFd4MElGUjVjR1U2SUFCRmVIQmxZM1JsWkNCbWJHOWhkQ0J0WVhSeWFYZ2dkSGx3WlNCaGN5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxJR0Z6SUZKbGMzVnNkQ0JVZVhCbE9pQUFaWGh3WldOMFpXUWdiV0YwY21sNElIUjVjR1VnWVhNZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0JtYkc5aGRDQjJaV04wYjNJZ2RIbHdaU0JoY3lCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJR2x1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5SUhSNWNHVWdZWE1nVW1WemRXeDBJRlI1Y0dVNklBQkZlSEJsWTNSbFpDQjFibk5wWjI1bFpDQnBiblFnYzJOaGJHRnlJRzl5SUhabFkzUnZjaUIwZVhCbElHRnpJRkpsYzNWc2RDQlVlWEJsT2lBQVJYaHdaV04wWldRZ016SXRZbWwwSUdac2IyRjBJSE5qWVd4aGNpQnZjaUIyWldOMGIzSWdkSGx3WlNCaGN5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdac2IyRjBJSE5qWVd4aGNpQnZjaUIyWldOMGIzSWdkSGx3WlNCaGN5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdKdmIyd2djMk5oYkdGeUlHOXlJSFpsWTNSdmNpQjBlWEJsSUdGeklGSmxjM1ZzZENCVWVYQmxPaUFBUlhod1pXTjBaV1FnWm14dllYUnBibWNnYzJOaGJHRnlJRzl5SUhabFkzUnZjaUIwZVhCbElHRnpJRkpsYzNWc2RDQlVlWEJsT2lBQVJYaHdaV04wWldRZ2RXNXphV2R1WldRZ2FXNTBJSE5qWVd4aGNpQjBlWEJsSUdGeklGSmxjM1ZzZENCVWVYQmxPaUFBUlhod1pXTjBaV1FnWm14dllYUWdjMk5oYkdGeUlIUjVjR1VnWVhNZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0JpYjI5c0lITmpZV3hoY2lCMGVYQmxJR0Z6SUZKbGMzVnNkQ0JVZVhCbE9pQUFSWGh3WldOMFpXUWdZMjlzZFcxdUlIUjVjR1VnYjJZZ2RHaGxJRzFoZEhKcGVDQjBieUJpWlNCbGNYVmhiQ0IwYnlCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJR2x1Y0hWMElIUjVjR1VnZEc4Z1ltVWdaWEYxWVd3Z2RHOGdVbVZ6ZFd4MElGUjVjR1U2SUFCRmVIQmxZM1JsWkNCamIyMXdiMjVsYm5RZ2RIbHdaU0IwYnlCaVpTQmxjWFZoYkNCMGJ5QlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUcxaGRISnBlQ0J2Y0dWeVlXNWtJSFI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVNklBQkZlSEJsWTNSbFpDQjJaV04wYjNJZ2IzQmxjbUZ1WkNCMGVYQmxJSFJ2SUdKbElHVnhkV0ZzSUhSdklGSmxjM1ZzZENCVWVYQmxPaUFBUlhod1pXTjBaV1FnU1c1elpYSjBJRlI1Y0dVZ2RHOGdZbVVnWlhGMVlXd2dkRzhnVW1WemRXeDBJRlI1Y0dVNklBQkZlSEJsWTNSbFpDQkNZWE5sSUZSNWNHVWdkRzhnWW1VZ1pYRjFZV3dnZEc4Z1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0JwYm5CMWRDQjBieUJvWVhabElHUnBabVpsY21WdWRDQmlhWFFnZDJsa2RHZ2dabkp2YlNCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJR0p2ZEdnZ2IySnFaV04wY3lCMGJ5QmlaU0J2WmlCU1pYTjFiSFFnVkhsd1pUb2dBRVY0Y0dWamRHVmtJR0p2ZEdnZ2IzQmxjbUZ1WkhNZ2RHOGdZbVVnYjJZZ1VtVnpkV3gwSUZSNWNHVTZJQUJGZUhCbFkzUmxaQ0JoY21sMGFHMWxkR2xqSUc5d1pYSmhibVJ6SUhSdklHSmxJRzltSUZKbGMzVnNkQ0JVZVhCbE9pQUFSWGh3WldOMFpXUWdiM0JsY21GdVpDQjBieUJpWlNCdlppQlNaWE4xYkhRZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxJR0Z6SUVNZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxJR0Z6SUVJZ1ZIbHdaVG9nQUVWNGNHVmpkR1ZrSUdOdmIzQmxjbUYwYVhabElHMWhkSEpwZUNCMGVYQmxJR0Z6SUVFZ1ZIbHdaVG9nQUhWdWMzVndjRzl5ZEdWa0lHTnZiblJ5YjJ3Z1ltRnljbWxsY2lCbGVHVmpkWFJwYjI0Z2MyTnZjR1U2SUFCRmVIQmxZM1JsWkNCUUlIUjVjR1VnWVc1a0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElIUm9aU0J6WVcxbE9pQUFWR2hsSUV4cGJtdGhaMlZCZEhSeWFXSjFkR1Z6SUVSbFkyOXlZWFJwYjI0Z0tFeHBibXRoWjJVZ2JtRnRaVG9nQUNCaGJISmxZV1I1SUdoaGN5QnlaV2RwYzNSbGNtVmtJRzVoYldVNklBQWdabTl5SUcxdlpIVnNaU0J6WTI5d1pTQjJZWEpwWVdKc1pUb2dBR2x1ZG1Gc2FXUWdjM1J5ZFdOMGRYSmxaQ0JqYjI1MGNtOXNJR1pzYjNjNklHWnZkVzVrSUdGdUlFOXdVM2RwZEdOb0lIUm9ZWFFnYVhNZ2JtOTBJSEJ5WldObFpHVmtJR0o1SUdGdUlFOXdVMlZzWldOMGFXOXVUV1Z5WjJVNklBQTZJR2x1WkdWNElIUnZieUJzWVhKblpUb2dBRmRIVTB3Z1pHOWxjeUJ1YjNRZ2MzVndjRzl5ZENCeGRXVnllV2x1WnlCMGFHVWdiR1YyWld3Z2IyWWdaR1YwWVdsc0lHOW1JR0Z1SUdsdFlXZGxPaUFBYVc1MllXeHBaQ0JNYjJOaGJGTnBlbVVnWlhobFkzVjBhVzl1SUcxdlpHVTZJQUJ3YjJsdWRHVnlJR1JsWm1sdVpXUWdhVzRnWm5WdVkzUnBiMjRnWm5KdmJTQjFibXR1YjNkdUlHOXdZMjlrWlRvZ0FFbHVkbUZzYVdRZ2IzQmpiMlJsT2lBQVJIVndiR2xqWVhSbElHNXZiaTFoWjJkeVpXZGhkR1VnZEhsd1pTQmtaV05zWVhKaGRHbHZibk1nWVhKbElHNXZkQ0JoYkd4dmQyVmtMaUJQY0dOdlpHVTZJQUIxYm1oaGJtUnNaV1FnWVhOME9qcE9iMlJsT2lBQVkzbGpiR2xqSUdSbGNHVnVaR1Z1WTNrZ1ptOTFibVE2SUFBN0lFSnZkVzVrT2lBQWRIbHdaU0J2WmlCMGFHVWdiV0YwY21sNElHOXdaWEpoYm1RNklBQkZlSEJsWTNSbFpDQm1iRzloZENCdFlYUnlhWGdnZEhsd1pTQmhjeUJ5YVdkb2RDQnZjR1Z5WVc1a09pQUFSWGh3WldOMFpXUWdabXh2WVhRZ2RtVmpkRzl5SUhSNWNHVWdZWE1nY21sbmFIUWdiM0JsY21GdVpEb2dBSFpsWTNSdmNpQnphWHBsSUc5bUlIUm9aU0J5YVdkb2RDQnZjR1Z5WVc1a09pQUFSWGh3WldOMFpXUWdabXh2WVhRZ2JXRjBjbWw0SUhSNWNHVWdZWE1nYkdWbWRDQnZjR1Z5WVc1a09pQUFSWGh3WldOMFpXUWdabXh2WVhRZ2RtVmpkRzl5SUhSNWNHVWdZWE1nYkdWbWRDQnZjR1Z5WVc1a09pQUFiMllnZEdobElHeGxablFnYjNCbGNtRnVaRG9nQUVWNGNHVmpkR1ZrSUdac2IyRjBJSFpsWTNSdmNpQmhjeUJ2Y0dWeVlXNWtPaUFBUlhod1pXTjBaV1FnYVc1MElITmpZV3hoY2lCdmNpQjJaV04wYjNJZ1lYTWdiM0JsY21GdVpEb2dBRVY0Y0dWamRHVmtJR2x1ZENCelkyRnNZWElnYjNJZ2RtVmpkRzl5SUhSNWNHVWdZWE1nYjNCbGNtRnVaRG9nQUhSNWNHVWdiMllnZEdobElIWmxZM1J2Y2lCdmNHVnlZVzVrT2lBQWFXMWhaMlVnZDNKcGRHVWdhWE1nYldsemMybHVaeUJoSUZSbGVHVnNJRzl3WlhKaGJtUTZJQUJwYldGblpTQmtaWEIwYUMxamIyMXdZWEpsSUdsdWMzUnlkV04wYVc5dUlHbHpJRzFwYzNOcGJtY2dZU0JFY21WbUlHOXdaWEpoYm1RNklBQkZlSEJsWTNSbFpDQXpNaTFpYVhRZ2FXNTBJSFI1Y0dVZ1ptOXlJRUpoYzJVZ2IzQmxjbUZ1WkRvZ0FFVjRjR1ZqZEdWa0lHbHVkQ0J6WTJGc1lYSWdiM0lnZG1WamRHOXlJSFI1Y0dVZ1ptOXlJRUpoYzJVZ2IzQmxjbUZ1WkRvZ0FHNTFiR3dnY0c5cGJuUmxjaUJwY3lCdWIzUWdkbUZzYVdRNklBQjFibVJsWmlCd2IybHVkR1Z5SUdseklHNXZkQ0IyWVd4cFpEb2dBRzF2WkhWc1pTMXpZMjl3WlNCd2IybHVkR1Z5SUdseklHNXZkQ0IyWVd4cFpEb2dBQ0JwWkRvZ0FHeHZZV1JwYm1jZ2RHaGxJSGRvYjJ4bElGTmhiWEJzWlUxaGMyc2dhVzV3ZFhRZ1lYSnlZWGtnYVhNZ2JtOTBJSE4xY0hCdmNuUmxaRG9nQUhOMGIzSnBibWNnZEc4Z2RHaGxJSGRvYjJ4bElIQmxjaTEyWlhKMFpYZ2djM1J5ZFdOMGRYSmxJR2x6SUc1dmRDQnpkWEJ3YjNKMFpXUTZJQUJNYjJkcFkyRnNJR0ZrWkhKbGMzTnBibWNnYm05MElITjFjSEJ2Y25SbFpEb2dBRzl3WlhKaGRHbHZibk1nY0hKdlpIVmphVzVuSUdFZ2NHOXBiblJsY2lCMGJ5QmhJSEJsY2kxMlpYSjBaWGdnYzNSeWRXTjBkWEpsSUdGeVpTQnViM1FnYzNWd2NHOXlkR1ZrT2lBQWIzQmxjbUYwYVc5dWN5QndjbTlrZFdOcGJtY2dZU0J3WlhJdGRtVnlkR1Y0SUhOMGNuVmpkSFZ5WlNCaGNtVWdibTkwSUhOMWNIQnZjblJsWkRvZ0FHZHNYMUJsY2xabGNuUmxlQ0JwYm1sMGFXRnNhWHBsY2lCMGIyOGdZMjl0Y0d4bGVDNGdiMjVzZVNCUGNFTnZiWEJ2YzJsMFpVTnZibk4wY25WamRDQmhibVFnVDNCVGNHVmpRMjl1YzNSaGJuUkRiMjF3YjNOcGRHVWdZWEpsSUhOMWNIQnZjblJsWkRvZ0FHVjRjR1ZqZEdWa09pQUFhVzUwWlhKdVlXd2daWEp5YjNJNklHNWhiV1VnWVd4eVpXRmtlU0J5WldkcGMzUmxjbVZrT2lBQVJYaHdaV04wWldRZ2FXNXdkWFFnZEc4Z2FHRjJaU0J6ZEc5eVlXZGxJR05zWVhOeklFZGxibVZ5YVdNNklBQkZlSEJsWTNSbFpDQlNaWE4xYkhRZ1ZIbHdaU0IwYnlCb1lYWmxJSE4wYjNKaFoyVWdZMnhoYzNNZ1IyVnVaWEpwWXpvZ0FEc2dVMk5vWlcxaE9pQUFhVzUwWlhKdVlXd2daWEp5YjNJNklIVnVhR0Z1Wkd4bFpDQjFjMlVnYjJZZ2IzQmhjWFZsSUc5aWFtVmpkQ0IzYVhSb0lFbEVPaUFBYVc1MFpYSnVZV3dnWlhKeWIzSTZJR1poYVd4bFpDQjBieUJ5WldkcGMzUmxjaUJVYVc1MElFRlRWQ0IwZVhCbElHWnZjaUJUVUVsU0xWWWdkSGx3WlNCM2FYUm9JRWxFT2lBQWRXNW9ZVzVrYkdWa0lIVnpaU0J2WmlCaElIQnZhVzUwWlhJZ2RHOGdkR2hsSUZOaGJYQnNaVTFoYzJzZ1luVnBiSFJwYml3Z2QybDBhQ0JKUkRvZ0FIVnVhR0Z1Wkd4bFpDQjFjMlVnYjJZZ1lTQndiMmx1ZEdWeUlIUnZJSFJvWlNCUWIybHVkRk5wZW1VZ1luVnBiSFJwYml3Z2QybDBhQ0JKUkRvZ0FHbHVkR1Z5Ym1Gc0lHVnljbTl5T2lCdWJ5QjBlWEJsSUhKbFoybHpkR1Z5WldRZ1ptOXlJRk5RU1ZJdFZpQkpSRG9nQUdWNGRHVnVaR1ZrSUdGeWFYUm9iV1YwYVdNZ2FYTWdibTkwSUdacGJtRnNhWHBsWkNCbWIzSWdWMGRUVERvZ2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwyZHdkWGRsWWk5bmNIVjNaV0l2YVhOemRXVnpMekUxTmpVNklBQWdhR0Z6SUhSdmJ5QnRZVzU1SUdWc1pXMWxiblJ6SUNodGIzSmxJSFJvWVc0Z1kyRnVJR1pwZENCcGJpQXpNaUJpYVhSektUb2dBSFpoYkhWbElHTmhibTV2ZENCaVpTQnlaWEJ5WlhObGJuUmxaQ0JoY3lBblpqTXlKem9nQUNBNklBQkJaR1J5WlhOemFXNW5JRzF2WkdWc0lHMTFjM1FnWW1VZ1RHOW5hV05oYkNCdmNpQlFhSGx6YVdOaGJGTjBiM0poWjJWQ2RXWm1aWEkyTkNBQVFXUmtjbVZ6YzJsdVp5QnRiMlJsYkNCdGRYTjBJR0psSUZCb2VYTnBZMkZzTXpJZ2IzSWdVR2g1YzJsallXdzJOQ0FBSUdseklHNXZkQ0JoYkd4dmQyVmtJR0o1SUU5d1pXNURUQ0F5TGpJZ0FDQnBjeUJ1YjNRZ1lXeHNiM2RsWkNCaWVTQlBjR1Z1UTB3Z01TNHlJQUFnYVhNZ2JtOTBJR0ZzYkc5M1pXUWdZbmtnVDNCbGJrTk1JREl1TUM4eUxqRWdBRWx1SUhSb1pTQlBjR1Z1UTB3Z1pXNTJhWEp2Ym0xbGJuUXNJRUZ5Y21GNVpXUWdiV0Y1SUc5dWJIa2dZbVVnYzJWMElIUnZJREVnQUc5d1pYSmhkRzl5SUM4Z0FFRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1ZuVnNhMkZ1SUhOd1pXTWdRblZwYkhSSmJpQlRZVzF3YkdWTllYTnJJSFpoY21saFlteGxJRzVsWldSeklIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQmhjbkpoZVM0Z0FFRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1ZuVnNhMkZ1SUhOd1pXTWdRblZwYkhSSmJpQlVaWE56VEdWMlpXeFBkWFJsY2lCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJRFF0WTI5dGNHOXVaVzUwSURNeUxXSnBkQ0JtYkc5aGRDQmhjbkpoZVM0Z0FFRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1ZuVnNhMkZ1SUhOd1pXTWdRblZwYkhSSmJpQlVaWE56VEdWMlpXeFBkWFJsY2lCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJREl0WTI5dGNHOXVaVzUwSURNeUxXSnBkQ0JtYkc5aGRDQmhjbkpoZVM0Z0FDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSURNeUxXSnBkQ0JtYkc5aGRDQmhjbkpoZVM0Z0FDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSURNeUxXSnBkQ0JwYm5RdUlBQldkV3hyWVc0Z2MzQmxZeUJ5WlhGMWFYSmxjeUJDZFdsc2RFbHVJRmR2Y210bmNtOTFjRk5wZW1VZ2RHOGdZbVVnWVNCamIyNXpkR0Z1ZEM0Z0FDQTBJR052YkhWdGJuTWdiMllnTXkxamIyMXdiMjVsYm5RZ2RtVmpkRzl5Y3lCdlppQXpNaTFpYVhRZ1pteHZZWFJ6TGlBQVZuVnNhMkZ1SUhOd1pXTWdZV3hzYjNkeklFSjFhV3gwU1c0Z1VHOXphWFJwYjI0Z2RHOGdZbVVnYjI1c2VTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCSmJuQjFkQ0J2Y2lCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRk5oYlhCc1pVMWhjMnNnZEc4Z1ltVWdiMjVzZVNCMWMyVmtJR1p2Y2lCMllYSnBZV0pzWlhNZ2QybDBhQ0JKYm5CMWRDQnZjaUJQZFhSd2RYUWdjM1J2Y21GblpTQmpiR0Z6Y3k0Z0FGWjFiR3RoYmlCemNHVmpJR0ZzYkc5M2N5QkNkV2xzZEVsdUlGQnZhVzUwVTJsNlpTQjBieUJpWlNCdmJteDVJSFZ6WldRZ1ptOXlJSFpoY21saFlteGxjeUIzYVhSb0lFbHVjSFYwSUc5eUlFOTFkSEIxZENCemRHOXlZV2RsSUdOc1lYTnpMaUFBVm5Wc2EyRnVJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnVUhKcGJXbDBhWFpsU1dRZ2RHOGdZbVVnYjI1c2VTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCSmJuQjFkQ0J2Y2lCUGRYUndkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBQ0J6Y0dWaklHRnNiRzkzY3lCQ2RXbHNkRWx1SUVaeVlXZEVaWEIwYUNCMGJ5QmlaU0J2Ym14NUlIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUU5MWRIQjFkQ0J6ZEc5eVlXZGxJR05zWVhOekxpQUFJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnVm1WeWRHVjRTVzVrWlhnZ2RHOGdZbVVnYjI1c2VTQjFjMlZrSUdadmNpQjJZWEpwWVdKc1pYTWdkMmwwYUNCSmJuQjFkQ0J6ZEc5eVlXZGxJR05zWVhOekxpQUFJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnU1c1emRHRnVZMlZKYm1SbGVDQjBieUJpWlNCdmJteDVJSFZ6WldRZ1ptOXlJSFpoY21saFlteGxjeUIzYVhSb0lFbHVjSFYwSUhOMGIzSmhaMlVnWTJ4aGMzTXVJQUJXZFd4cllXNGdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJRWVhSamFGWmxjblJwWTJWeklIUnZJR0psSUc5dWJIa2dkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRk5oYlhCc1pWQnZjMmwwYVc5dUlIUnZJR0psSUc5dWJIa2dkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRWhsYkhCbGNrbHVkbTlqWVhScGIyNGdkRzhnWW1VZ2IyNXNlU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQkpibkIxZENCemRHOXlZV2RsSUdOc1lYTnpMaUFBSUhOd1pXTWdZV3hzYjNkeklFSjFhV3gwU1c0Z1JuSnZiblJHWVdOcGJtY2dkRzhnWW1VZ2IyNXNlU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQkpibkIxZENCemRHOXlZV2RsSUdOc1lYTnpMaUFBVm5Wc2EyRnVJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnVUc5cGJuUkRiMjl5WkNCMGJ5QmlaU0J2Ym14NUlIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUVsdWNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNdUlBQldkV3hyWVc0Z2MzQmxZeUJoYkd4dmQzTWdRblZwYkhSSmJpQlVaWE56UTI5dmNtUWdkRzhnWW1VZ2IyNXNlU0IxYzJWa0lHWnZjaUIyWVhKcFlXSnNaWE1nZDJsMGFDQkpibkIxZENCemRHOXlZV2RsSUdOc1lYTnpMaUFBSUhOd1pXTWdZV3hzYjNkeklFSjFhV3gwU1c0Z1JuSmhaME52YjNKa0lIUnZJR0psSUc5dWJIa2dkWE5sWkNCbWIzSWdkbUZ5YVdGaWJHVnpJSGRwZEdnZ1NXNXdkWFFnYzNSdmNtRm5aU0JqYkdGemN5NGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRWx1ZG05allYUnBiMjVKWkNCMGJ5QmlaU0J2Ym14NUlIVnpaV1FnWm05eUlIWmhjbWxoWW14bGN5QjNhWFJvSUVsdWNIVjBJSE4wYjNKaFoyVWdZMnhoYzNNdUlBQldkV3hyWVc0Z2MzQmxZeUJoYkd4dmQzTWdRblZwYkhSSmJpQlRZVzF3YkdWSlpDQjBieUJpWlNCdmJteDVJSFZ6WldRZ1ptOXlJSFpoY21saFlteGxjeUIzYVhSb0lFbHVjSFYwSUhOMGIzSmhaMlVnWTJ4aGMzTXVJQUJXZFd4cllXNGdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJRYjNOcGRHbHZiaUIwYnlCaVpTQjFjMlZrSUc5dWJIa2dkMmwwYUNCV1pYSjBaWGdzSUZSbGMzTmxiR3hoZEdsdmJrTnZiblJ5YjJ3c0lGUmxjM05sYkd4aGRHbHZia1YyWVd4MVlYUnBiMjRnYjNJZ1IyVnZiV1YwY25rZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzY3k0Z0FGWjFiR3RoYmlCemNHVmpJR0ZzYkc5M2N5QkNkV2xzZEVsdUlGQnZhVzUwVTJsNlpTQjBieUJpWlNCMWMyVmtJRzl1YkhrZ2QybDBhQ0JXWlhKMFpYZ3NJRlJsYzNObGJHeGhkR2x2YmtOdmJuUnliMndzSUZSbGMzTmxiR3hoZEdsdmJrVjJZV3gxWVhScGIyNGdiM0lnUjJWdmJXVjBjbmtnWlhobFkzVjBhVzl1SUcxdlpHVnNjeTRnQUNCMGJ5QmlaU0IxYzJWa0lHOXViSGtnZDJsMGFDQkdjbUZuYldWdWRDd2dWbVZ5ZEdWNExDQlVaWE56Wld4c1lYUnBiMjVEYjI1MGNtOXNMQ0JVWlhOelpXeHNZWFJwYjI1RmRtRnNkV0YwYVc5dUlHOXlJRWRsYjIxbGRISjVJR1Y0WldOMWRHbHZiaUJ0YjJSbGJITXVJQUJXZFd4cllXNGdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJKYm5adlkyRjBhVzl1U1dRZ2RHOGdZbVVnZFhObFpDQnZibXg1SUhkcGRHZ2dWR1Z6YzJWc2JHRjBhVzl1UTI5dWRISnZiQ0J2Y2lCSFpXOXRaWFJ5ZVNCbGVHVmpkWFJwYjI0Z2JXOWtaV3h6TGlBQUlIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRlpsY25SbGVDd2dWR1Z6YzJWc2JHRjBhVzl1UlhaaGJIVmhkR2x2Yml3Z1IyVnZiV1YwY25rc0lHOXlJRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJITXVJQUJXZFd4cllXNGdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJRWVhSamFGWmxjblJwWTJWeklIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRlJsYzNObGJHeGhkR2x2YmtOdmJuUnliMndnYjNJZ1ZHVnpjMlZzYkdGMGFXOXVSWFpoYkhWaGRHbHZiaUJsZUdWamRYUnBiMjRnYlc5a1pXeHpMaUFBSUhSdklHSmxJSFZ6WldRZ2IyNXNlU0IzYVhSb0lGWmxjblJsZUN3Z1IyVnZiV1YwY25rc0lHOXlJRTFsYzJoT1ZpQmxlR1ZqZFhScGIyNGdiVzlrWld4ekxpQUFWblZzYTJGdUlITndaV01nWVd4c2IzZHpJRUoxYVd4MFNXNGdVSEpwYldsMGFYWmxTV1FnZEc4Z1ltVWdkWE5sWkNCdmJteDVJSGRwZEdnZ1JuSmhaMjFsYm5Rc0lGUmxjM05sYkd4aGRHbHZia052Ym5SeWIyd3NJRlJsYzNObGJHeGhkR2x2YmtWMllXeDFZWFJwYjI0c0lFZGxiMjFsZEhKNUxDQk5aWE5vVGxZc0lFMWxjMmhGV0ZRc0lFbHVkR1Z5YzJWamRHbHZia3RJVWl3Z1FXNTVTR2wwUzBoU0xDQmhibVFnUTJ4dmMyVnpkRWhwZEV0SVVpQmxlR1ZqZFhScGIyNGdiVzlrWld4ekxpQUFJR0o1ZEdWekxpQUFJSFpoY21saFlteGxJRzVsWldSeklIUnZJR0psSUdFZ05DMWpiMjF3YjI1bGJuUWdNekl0WW1sMElHbHVkQ0IyWldOMGIzSXVJQUFnYzNCbFl5QkNkV2xzZEVsdUlGZHZjbXRuY205MWNGTnBlbVVnZG1GeWFXRmliR1VnYm1WbFpITWdkRzhnWW1VZ1lTQXpMV052YlhCdmJtVnVkQ0F6TWkxaWFYUWdhVzUwSUhabFkzUnZjaTRnQUNCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJREl0WTI5dGNHOXVaVzUwSURNeUxXSnBkQ0JwYm5RZ2RtVmpkRzl5TGlBQUlIWmhjbWxoWW14bElHNWxaV1J6SUhSdklHSmxJR0VnTXpJdFltbDBJR2x1ZENCMlpXTjBiM0l1SUFCQlkyTnZjbVJwYm1jZ2RHOGdkR2hsSUZaMWJHdGhiaUJ6Y0dWaklFSjFhV3gwU1c0Z1VHOXphWFJwYjI0Z2RtRnlhV0ZpYkdVZ2JtVmxaSE1nZEc4Z1ltVWdZU0EwTFdOdmJYQnZibVZ1ZENBek1pMWlhWFFnWm14dllYUWdkbVZqZEc5eUxpQUFJSE53WldNZ1FuVnBiSFJKYmlCR2NtRm5RMjl2Y21RZ2RtRnlhV0ZpYkdVZ2JtVmxaSE1nZEc4Z1ltVWdZU0EwTFdOdmJYQnZibVZ1ZENBek1pMWlhWFFnWm14dllYUWdkbVZqZEc5eUxpQUFRV05qYjNKa2FXNW5JSFJ2SUhSb1pTQldkV3hyWVc0Z2MzQmxZeUJDZFdsc2RFbHVJRlJsYzNORGIyOXlaQ0IyWVhKcFlXSnNaU0J1WldWa2N5QjBieUJpWlNCaElETXRZMjl0Y0c5dVpXNTBJRE15TFdKcGRDQm1iRzloZENCMlpXTjBiM0l1SUFCQlkyTnZjbVJwYm1jZ2RHOGdkR2hsSUZaMWJHdGhiaUJ6Y0dWaklFSjFhV3gwU1c0Z1UyRnRjR3hsVUc5emFYUnBiMjRnZG1GeWFXRmliR1VnYm1WbFpITWdkRzhnWW1VZ1lTQXlMV052YlhCdmJtVnVkQ0F6TWkxaWFYUWdabXh2WVhRZ2RtVmpkRzl5TGlBQVFXTmpiM0prYVc1bklIUnZJSFJvWlNCV2RXeHJZVzRnYzNCbFl5QkNkV2xzZEVsdUlGQnZhVzUwUTI5dmNtUWdkbUZ5YVdGaWJHVWdibVZsWkhNZ2RHOGdZbVVnWVNBeUxXTnZiWEJ2Ym1WdWRDQXpNaTFpYVhRZ1pteHZZWFFnZG1WamRHOXlMaUFBSUhOd1pXTWdRblZwYkhSSmJpQldaWEowWlhoSmJtUmxlQ0IyWVhKcFlXSnNaU0J1WldWa2N5QjBieUJpWlNCaElETXlMV0pwZENCcGJuUWdjMk5oYkdGeUxpQUFJSE53WldNZ1FuVnBiSFJKYmlCSmJuTjBZVzVqWlVsdVpHVjRJSFpoY21saFlteGxJRzVsWldSeklIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQnpZMkZzWVhJdUlBQkJZMk52Y21ScGJtY2dkRzhnZEdobElGWjFiR3RoYmlCemNHVmpJRUoxYVd4MFNXNGdVR0YwWTJoV1pYSjBhV05sY3lCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJRE15TFdKcGRDQnBiblFnYzJOaGJHRnlMaUFBUVdOamIzSmthVzVuSUhSdklIUm9aU0JXZFd4cllXNGdjM0JsWXlCQ2RXbHNkRWx1SUVsdWRtOWpZWFJwYjI1SlpDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSURNeUxXSnBkQ0JwYm5RZ2MyTmhiR0Z5TGlBQVFXTmpiM0prYVc1bklIUnZJSFJvWlNCV2RXeHJZVzRnYzNCbFl5QkNkV2xzZEVsdUlGQnlhVzFwZEdsMlpVbGtJSFpoY21saFlteGxJRzVsWldSeklIUnZJR0psSUdFZ016SXRZbWwwSUdsdWRDQnpZMkZzWVhJdUlBQkJZMk52Y21ScGJtY2dkRzhnZEdobElGWjFiR3RoYmlCemNHVmpJRUoxYVd4MFNXNGdVMkZ0Y0d4bFNXUWdkbUZ5YVdGaWJHVWdibVZsWkhNZ2RHOGdZbVVnWVNBek1pMWlhWFFnYVc1MElITmpZV3hoY2k0Z0FDQjJZWEpwWVdKc1pTQnVaV1ZrY3lCMGJ5QmlaU0JoSUdsdWRDQnpZMkZzWVhJdUlBQWdjM0JsWXlCQ2RXbHNkRWx1SUVaeVlXZEVaWEIwYUNCMllYSnBZV0pzWlNCdVpXVmtjeUIwYnlCaVpTQmhJRE15TFdKcGRDQm1iRzloZENCelkyRnNZWEl1SUFCQlkyTnZjbVJwYm1jZ2RHOGdkR2hsSUZaMWJHdGhiaUJ6Y0dWaklFSjFhV3gwU1c0Z1VHOXBiblJUYVhwbElIWmhjbWxoWW14bElHNWxaV1J6SUhSdklHSmxJR0VnTXpJdFltbDBJR1pzYjJGMElITmpZV3hoY2k0Z0FFRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1ZuVnNhMkZ1SUhOd1pXTWdRblZwYkhSSmJpQklaV3h3WlhKSmJuWnZZMkYwYVc5dUlIWmhjbWxoWW14bElHNWxaV1J6SUhSdklHSmxJR0VnWW05dmJDQnpZMkZzWVhJdUlBQWdjM0JsWXlCQ2RXbHNkRWx1SUVaeWIyNTBSbUZqYVc1bklIWmhjbWxoWW14bElHNWxaV1J6SUhSdklHSmxJR0VnWW05dmJDQnpZMkZzWVhJdUlBQlBjRUp5WVc1amFDQnZjaUJQY0VKeVlXNWphRU52Ym1ScGRHbHZibUZzSUdsdWMzUnlkV04wYVc5dUxpQUFUM0JDY21GdVkyaERiMjVrYVhScGIyNWhiQ0J2Y2lCUGNGTjNhWFJqYUNCcGJuTjBjblZqZEdsdmJpNGdBQ0J6Y0dWaklHRnNiRzkzY3lCQ2RXbHNkRWx1SUZabGNuUmxlRWx1WkdWNElIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRlpsY25SbGVDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUlBQWdjM0JsWXlCaGJHeHZkM01nUW5WcGJIUkpiaUJKYm5OMFlXNWpaVWx1WkdWNElIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRlpsY25SbGVDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUlBQldkV3hyWVc0Z2MzQmxZeUJoYkd4dmQzTWdRblZwYkhSSmJpQlRZVzF3YkdWUWIzTnBkR2x2YmlCMGJ5QmlaU0IxYzJWa0lHOXViSGtnZDJsMGFDQkdjbUZuYldWdWRDQmxlR1ZqZFhScGIyNGdiVzlrWld3dUlBQldkV3hyWVc0Z2MzQmxZeUJoYkd4dmQzTWdRblZwYkhSSmJpQklaV3h3WlhKSmJuWnZZMkYwYVc5dUlIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDNGdBRloxYkd0aGJpQnpjR1ZqSUdGc2JHOTNjeUJDZFdsc2RFbHVJRk5oYlhCc1pVMWhjMnNnZEc4Z1ltVWdkWE5sWkNCdmJteDVJSGRwZEdnZ1JuSmhaMjFsYm5RZ1pYaGxZM1YwYVc5dUlHMXZaR1ZzTGlBQUlITndaV01nWVd4c2IzZHpJRUoxYVd4MFNXNGdSbkpoWjBSbGNIUm9JSFJ2SUdKbElIVnpaV1FnYjI1c2VTQjNhWFJvSUVaeVlXZHRaVzUwSUdWNFpXTjFkR2x2YmlCdGIyUmxiQzRnQUNCemNHVmpJR0ZzYkc5M2N5QkNkV2xzZEVsdUlFWnliMjUwUm1GamFXNW5JSFJ2SUdKbElIVnpaV1FnYjI1c2VTQjNhWFJvSUVaeVlXZHRaVzUwSUdWNFpXTjFkR2x2YmlCdGIyUmxiQzRnQUZaMWJHdGhiaUJ6Y0dWaklHRnNiRzkzY3lCQ2RXbHNkRWx1SUZCdmFXNTBRMjl2Y21RZ2RHOGdZbVVnZFhObFpDQnZibXg1SUhkcGRHZ2dSbkpoWjIxbGJuUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0xpQUFJSE53WldNZ1lXeHNiM2R6SUVKMWFXeDBTVzRnUm5KaFowTnZiM0prSUhSdklHSmxJSFZ6WldRZ2IyNXNlU0IzYVhSb0lFWnlZV2R0Wlc1MElHVjRaV04xZEdsdmJpQnRiMlJsYkM0Z0FGWjFiR3RoYmlCemNHVmpJR0ZzYkc5M2N5QkNkV2xzZEVsdUlGTmhiWEJzWlVsa0lIUnZJR0psSUhWelpXUWdiMjVzZVNCM2FYUm9JRVp5WVdkdFpXNTBJR1Y0WldOMWRHbHZiaUJ0YjJSbGJDNGdBQ0IwYnlCaVpTQjFjMlZrSUc5dWJIa2dkMmwwYUNCMGFHVWdSbkpoWjIxbGJuUWdaWGhsWTNWMGFXOXVJRzF2WkdWc0xpQUFWblZzYTJGdUlITndaV01nWVd4c2IzZHpJRUoxYVd4MFNXNGdWR1Z6YzBOdmIzSmtJSFJ2SUdKbElIVnpaV1FnYjI1c2VTQjNhWFJvSUZSbGMzTmxiR3hoZEdsdmJrVjJZV3gxWVhScGIyNGdaWGhsWTNWMGFXOXVJRzF2WkdWc0xpQUFJSFJ2SUdKbElHNXZkQ0JpWlNCMWMyVmtJSGRwZEdnZ1IweERiMjF3ZFhSbElHVjRaV04xZEdsdmJpQnRiMlJsYkM0Z0FDQlVZWE5yUlZoVUlHVjRaV04xZEdsdmJpQnRiMlJsYkM0Z0FISjFiR1Z6T2lCQklFSnNiMk5ySUc5eUlFSjFabVpsY2tKc2IyTnJJR05oYm01dmRDQmlaU0J1WlhOMFpXUWdkMmwwYUdsdUlHRnViM1JvWlhJZ1FteHZZMnNnYjNJZ1FuVm1abVZ5UW14dlkyc3VJQUFnYzNCbFl5QnlaWEYxYVhKbGN5QkVaWEIwYUZKbGNHeGhZMmx1WnlCbGVHVmpkWFJwYjI0Z2JXOWtaU0IwYnlCaVpTQmtaV05zWVhKbFpDQjNhR1Z1SUhWemFXNW5JRUoxYVd4MFNXNGdSbkpoWjBSbGNIUm9MaUFBYjNCbGNtRjBiM0lnTFNBQUlHTnZiWEJ2Ym1WdWRITXNJQUJ0ZFhOMElHRndjR1ZoY2lCaVpYUjNaV1Z1SUhObFkzUnBiMjRnT1NBb2RIbHdaWE1zSUdOdmJuTjBZVzUwY3l3Z0FHVjRjR1ZqZEdWa0lGSmxjM1ZzZENCVWVYQmxJSFJ2SUdKbElHRWdjM1J5ZFdOMElIZHBkR2dnZEhkdklHMWxiV0psY25Nc0lBQjJZWEpwWVdKc1pYTWdiWFZ6ZENCaVpTQjBlWEJsWkNCaGN5QlBjRlI1Y0dWSmJXRm5aU3dnVDNCVWVYQmxVMkZ0Y0d4bGNpd2dBRmRvWlc0Z1FuVnBiSFJKYmlCa1pXTnZjbUYwYVc5dUlHbHpJR0Z3Y0d4cFpXUWdkRzhnWVNCemRISjFZM1IxY21VdGRIbHdaU0J0WlcxaVpYSXNJQUJGZUhCbFkzUmxaQ0JwYm5CMWRDQjBieUJvWVhabElITjBiM0poWjJVZ1kyeGhjM01nVjI5eWEyZHliM1Z3TENBQVJYaHdaV04wWldRZ1VtVnpkV3gwSUZSNWNHVWdkRzhnYUdGMlpTQnpkRzl5WVdkbElHTnNZWE56SUZkdmNtdG5jbTkxY0N3Z0FFVjRjR1ZqZEdWa0lIUmhjbWRsZENCemRHOXlZV2RsSUdOc1lYTnpJSFJ2SUdKbElGZHZjbXRuY205MWNDd2dBRTV2YmxCeWFYWmhkR1ZRYjJsdWRHVnlTMGhTSUhKbGNYVnBjbVZ6SUdFZ2NHOXBiblJsY2lCcGJpQlZibWxtYjNKdExDQUFWR0Z5WjJWMElHOW1JRTV2YmxkeWFYUmhZbXhsSUdSbFkyOXlZWFJwYjI0Z2FYTWdhVzUyWVd4cFpEb2diWFZ6ZENCd2IybHVkQ0IwYnlCaElITjBiM0poWjJVZ2FXMWhaMlVzSUhWdWFXWnZjbTBnWW14dlkyc3NJQUJKYldGblpTQlBjR1Z5WVc1a0lGTmhiWEJzWlNCallXNGdiMjVzZVNCaVpTQjFjMlZrSUhkcGRHZ2dUM0JKYldGblpVWmxkR05vTENBQWIyNWxJRzltSUhSb1pTQm1iMnhzYjNkcGJtY2djM1J2Y21GblpTQmpiR0Z6YzJWek9pQlBkWFJ3ZFhRc0lGQnlhWFpoZEdVc0lBQmlaU0IwWVhKblpYUmxaQ0JpZVNCUGNFNWhiV1VzSUU5d1IzSnZkWEJFWldOdmNtRjBaU3dnQUNCdGRYTjBJR0psSURBZ1ptOXlJR0VnWm14dllYUnBibWN0Y0c5cGJuUWdkSGx3WlN3Z0FDd2dhWE1nWVhSMFpXMXdkR2x1WnlCMGJ5QmpjbVZoZEdVZ2JXVnRiM0o1SUdadmNpQmhiaUJwYkd4bFoyRnNJSFI1Y0dVc0lBQlBjRlI1Y0dWVFlXMXdiR1ZrU1cxaFoyVXNJRTl3Vkhsd1pVRmpZMlZzWlhKaGRHbHZibE4wY25WamRIVnlaVXRJVWl3Z0FHOXlJREFnWm05eUlHRnVJR2x1ZEdWblpYSWdkSGx3WlNCM2FYUm9JRk5wWjI1bFpHNWxjM01nYjJZZ01Dd2dBRzl3WlhKaGRHOXlJQ3NnQUM4cUlBQnZjR1Z5WVhSdmNpQXFJQUJDYkc5amF5aHpLU0FBZDJocGJHVWdhVzV6ZEdGdWRHbGhkR2x1WnlBblkyOXVjM1FuSUFCM2FHbHNaU0JwYm5OMFlXNTBhV0YwYVc1bklDZHNaWFFuSUFCM2FHbHNaU0JwYm5OMFlXNTBhV0YwYVc1bklDZDJZWEluSUFCM2FHbHNaU0JwYm5OMFlXNTBhV0YwYVc1bklDZHZkbVZ5Y21sa1pTY2dBRzl3WlhKaGRHOXlJQ1ltSUFCdmNHVnlZWFJ2Y2lBbUlBQnZjR1Z5WVhSdmNpQWxJQUJ2Y0dWeVlYUnZjaUFoSUFCSmJuWmhiR2xrSUZkdmNtdG5jbTkxY0ZOcGVtVWdZblZwYkhScGJpNGdJRVY0Y0dWamRHVmtJRE10Wld4bGJXVnVkQ0JQY0ZOd1pXTkRiMjV6ZEdGdWRFTnZiWEJ2YzJsMFpTQnZjaUJQY0VOdmJuTjBZVzUwUTI5dGNHOXphWFJsT2lBZ0FDa2dLaThnSUNBQVoyOTBPaUFnSUNBZ0lBQXZLaUFnSUNBZ0lDQWdJQ0FBTHlvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQUVsdWRtRnNhV1FnYzJOdmNHVWdkbUZzZFdVNkNpQUFJSHNLQUdsdWRHVnlibUZzSUdWeWNtOXlPaUJTWldOMGFXWjVUM0JsY21GdVpGTnBaMjVsWkc1bGMzTWdaMmwyWlc0Z1lTQnVkV3hzSUdWNGNISUtBQ2NnZDJGeklHNXZkQ0J5WldGamFHVmtJR0o1SUhSb1pTQnlaWE52YkhabGNnb0FKeUJvWVdRZ2JtOGdjMlZ0WVc1MGFXTWdhVzVtYndvQUp5QjNZWE1nWlc1amIzVnVkR1Z5WldRZ2RIZHBZMlVnYVc0Z2RHaGxJSE5oYldVZ1FWTlVJRzltSUdFZ1VISnZaM0poYlFvQVEyeHZibVZrSUc5aWFtVmpkQ0IzWVhNZ2JtOTBJRzltSUhSb1pTQmxlSEJsWTNSbFpDQjBlWEJsQ2dCTlpYSm5aU0JDYkc5amF5QnRZWGtnYm05MElHSmxJSFJvWlNCaWJHOWpheUJqYjI1MFlXbHVhVzVuSUhSb1pTQlBjRXh2YjNCTlpYSm5aUW9BT3lCVFVFbFNMVllLQUNjL0NnQTdDZ0JoYm1RZ2JHRjViM1YwSUc5bUlIQnlaWFpwYjNWeklHMWxiV0psY2lCemRISjFZM1E2Q2dCelpXVWdiR0Y1YjNWMElHOW1JSE4wY25WamREb0tBQ3dnZDJocFkyZ2dZMkZ1Ym05MElHSmxJSFZ6WldRZ2QybDBhQ0IwYUdVZ1kzVnljbVZ1ZENCbGVHVmpkWFJwYjI0Z2JXOWtaWE02Q2dCaGJtUWdiR0Y1YjNWMElHOW1JSE4wY25WamRDQnRaVzFpWlhJNkNnQkdjbTl0SUZaMWJHdGhiaUJ6Y0dWakxDQlFkWE5vSUVOdmJuTjBZVzUwSUVsdWRHVnlabUZqWlNCelpXTjBhVzl1T2dvQVJuSnZiU0JCVWtKZloyeGZjM0JwY25ZZ1pYaDBaVzV6YVc5dU9nb0FMQ0IzYUdsamFDQmpZVzV1YjNRZ1ltVWdkWE5sWkNCM2FYUm9JSFJvWlNCamRYSnlaVzUwSUdWNFpXTjFkR2x2YmlCdGIyUmxiRG9LQUVaeWIyMGdVMUJKVWkxV0lITndaV01zSUhObFkzUnBiMjRnTXk0ek1pNDRJRzl1SUU5d1ZtRnlhV0ZpYkdVNkNnQlVhR1VnWm05c2JHOTNhVzVuSUdadmNuZGhjbVFnY21WbVpYSmxibU5sWkNCSlJITWdhR0YyWlNCdWIzUWdZbVZsYmlCa1pXWnBibVZrT2dvQVJuSnZiU0JXZFd4cllXNGdjM0JsWXpvS0FDazZDZ0FuSUdseklHMXBjM05wYm1jZ1JHVnpZM0pwY0hSdmNsTmxkQ0JrWldOdmNtRjBhVzl1TGdvQUp5QnBjeUJ0YVhOemFXNW5JRUpzYjJOcklHOXlJRUoxWm1abGNrSnNiMk5ySUdSbFkyOXlZWFJwYjI0dUNnQW5JR2x6SUcxcGMzTnBibWNnUW14dlkyc2daR1ZqYjNKaGRHbHZiaTRLQUNjZ2FYTWdiV2x6YzJsdVp5QkNhVzVrYVc1bklHUmxZMjl5WVhScGIyNHVDZ0JqYjIxaWFXNWhkR2x2Ymk0S0FDQm9ZWE1nYVd4c1pXZGhiQ0IwZVhCbExnb0FKeUIxYzJWeklHMXZjbVVnZEdoaGJpQnZibVVnVUhWemFFTnZibk4wWVc1MElHbHVkR1Z5Wm1GalpTNEtBRTkwYUdWeUlIZGhjbTVwYm1keklHaGhkbVVnWW1WbGJpQnpkWEJ3Y21WemMyVmtMZ29BSndvQUFBQUFBd0lqQndBQUFRQUlBQWdBRWdBQUFBQUFBQUFSQUFJQUFRQUFBQXNBQmdBQkFBQUFSMHhUVEM1emRHUXVORFV3QUFBQUFBNEFBd0FBQUFBQUFRQUFBQThBQmdBQUFBQUFCQUFBQUcxaGFXNEFBQUFBQ2dBQUFBTUFBd0FCQUFBQU5nRUFBQVVBQkFBRUFBQUFiV0ZwYmdBQUFBQUZBQVlBQ0FBQUFHZHNYMUJsY2xabGNuUmxlQUFBQUFBR0FBWUFDQUFBQUFBQUFBQm5iRjlRYjNOcGRHbHZiZ0FHQUFjQUNBQUFBQUVBQUFCbmJGOVFiMmx1ZEZOcGVtVUFBQUFBQlFBREFBb0FBQUFBQUFBQVNBQUZBQWdBQUFBQUFBQUFDd0FBQUFBQUFBQklBQVVBQ0FBQUFBRUFBQUFMQUFBQUFRQUFBRWNBQXdBSUFBQUFBZ0FBQUJNQUFnQUNBQUFBSVFBREFBTUFBQUFDQUFBQUZnQURBQVlBQUFBZ0FBQUFGd0FFQUFjQUFBQUdBQUFBQkFBQUFCNEFCQUFJQUFBQUJ3QUFBQVlBQUFBZ0FBUUFDUUFBQUFNQUFBQUlBQUFBT3dBRUFBa0FBQUFLQUFBQUF3QUFBQlVBQkFBTEFBQUFJQUFBQUFFQUFBQXJBQVFBQ3dBQUFBd0FBQUFBQUFBQUt3QUVBQVlBQUFBTkFBQUFBQUFBQUNzQUJBQUdBQUFBRGdBQUFBQUFnRDhzQUFjQUJ3QUFBQThBQUFBTkFBQUFEUUFBQUEwQUFBQU9BQUFBSUFBRUFCQUFBQUFEQUFBQUJ3QUFBRFlBQlFBQ0FBQUFCQUFBQUFBQUFBQURBQUFBK0FBQ0FBVUFBQUJCQUFVQUVBQUFBQkVBQUFBS0FBQUFEQUFBQUQ0QUF3QVJBQUFBRHdBQUFQMEFBUUE0QUFFQUZBQUFBQmNBQUFBYUFBQUFFd0FBQUJZQUFBQVpBQUFBRWdBQUFCVUFBQUFZQUFBQUNBQUFBQXNBQUFBT0FBQUFCd0FBQUFvQUFBQU5BQUFBQmdBQUFBa0FBQUFNQUVIQS9Rd0xnUUlaQ2hzQUFCa0FHZ0FIR0FBQUFCZ0FBUUFZQVFBQUdRc0FCeGdBQWdBWUFRSUFGd0FBRndBRUZ3QUpNd0FBRndBQk1RQUFLZ0FCS3dBQkxBQUJMUUFCS2dNR0t3TUdMQU1HTFFNR0tnUUdLd1FHTEFRR0xRUUdLZ1VHS3dVR0xBVUdMUVVHRndFQUZ3QUlEQUF5QURBQUN3a05DUjRBSHdBTENDQUFJUUFNQ0NJQUl3QWtBQTBBQ3djTUNSNEpId2tnQ1NFSkRBY2lDU01KRFFjTkNBc0JEQUUwQUFzRkN3b0xCQXdGREFvTUJBMEZEUUVOQ2cwRURnQU9DUTRLRHdBUENROEtFQUFRQ1JBS0VRQVJDUkVLRWdBU0NSSUtFd0FUQ1JNS0ZBQVVDUlFLRlFBVkNSVUtGZ0FXQ1JZS0x3QWxKaWNvS1M0Y0hRRUFBQUFBQUFBQUFnQkJ6UDhNQzFVQkFBQUFBZ0FBQUFJQUFBQUJBQUFBQVFBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFEQUFBQUF3QUFBQU1BQUFBQ0FBQUFBQUFBQUFNQUFBQUJBRUd3Z0EwTFdRRUFBQUFJQUFBQUFnQUFBQWtBQUFBQkFBQUFCUUFBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUJ3QUFBQUFBQUFBQkFBQUFBd0FBQUFRQUFBQUFBQUFBQ3dBQUFBZ0FBQUFDQUFBQUVRQUFBQThBQUFBRkFFSEVnUTBMRVF3QUFBQUpBQUFBRGdBQUFBTUFBQUFHQUVIb2dRMExXUTBBQUFBS0FBQUFFQUFBQUFRQUFBQUFBQUFBQndBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQ0FBQUFBZ0FBQUFJQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBRUhRZ2cwTGdBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUJCa29RTkN6TUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEQXdNREF3TURBd01EQXdNREF3TURCQVFFQkFRQVFkQ0VEUXZSSzA1VGRETmZYekl4TUY5ZlpuVnVZM1JwYjI0MlgxOWlZWE5sU1VaaVVFNDRjM0IyZEc5dmJITXpiM0IwTVRGSmJuTjBjblZqZEdsdmJrVkZSVVVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgySmhjMlZKUm1KUVMwNDRjM0IyZEc5dmJITXpiM0IwTVRGSmJuTjBjblZqZEdsdmJrVkZSVVVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgySmhjMlZKUm5aUVRqaHpjSFowYjI5c2N6TnZjSFF4TVVsdWMzUnlkV04wYVc5dVJVVkZSUUJPVTNRelgxOHlNVEJmWDJaMWJtTjBhVzl1Tmw5ZlpuVnVZMGxhVGtzNGMzQjJkRzl2YkhNemIzQjBNVEJDWVhOcFkwSnNiMk5yTWpGR2IzSkZZV05vVTNWalkyVnpjMjl5VEdGaVpXeEZVa3RPVTE4NFpuVnVZM1JwYjI1SlJuWnFSVVZGUlRNa1h6Rk9VMTg1WVd4c2IyTmhkRzl5U1ZOQlgwVkZSbUpxUlVWRkFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTlpWVhObFNVWmlha1ZGUlFCYVRrczRjM0IyZEc5dmJITXpiM0IwTVRCQ1lYTnBZMEpzYjJOck1qRkdiM0pGWVdOb1UzVmpZMlZ6YzI5eVRHRmlaV3hGVWt0T1UzUXpYMTh5T0daMWJtTjBhVzl1U1VaMmFrVkZSVVV6SkY4eEFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTltZFc1alNWcE9Temh6Y0haMGIyOXNjek52Y0hReE1FSmhjMmxqUW14dlkyc3lNMWRvYVd4bFJXRmphRk4xWTJObGMzTnZja3hoWW1Wc1JWSkxUbE5mT0daMWJtTjBhVzl1U1VaaWFrVkZSVVV6SkY4eVRsTmZPV0ZzYkc5allYUnZja2xUUVY5RlJVWmlVRXRxUlVWRkFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTlpWVhObFNVWmlVRXRxUlVWRkFGcE9Temh6Y0haMGIyOXNjek52Y0hReE1FSmhjMmxqUW14dlkyc3lNMWRvYVd4bFJXRmphRk4xWTJObGMzTnZja3hoWW1Wc1JWSkxUbE4wTTE5Zk1qaG1kVzVqZEdsdmJrbEdZbXBGUlVWRk15UmZNZ0JPVTNRelgxOHlNVEJmWDJaMWJtTjBhVzl1Tmw5ZlltRnpaVWxHZGxCTFRqaHpjSFowYjI5c2N6TnZjSFF4TVVsdWMzUnlkV04wYVc5dVJVVkZSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6UlVlWEJsUlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekV5VG5Wc2JFTnZibk4wWVc1MFJRQk9PSE53ZG5SdmIyeHpNMjl3ZERoaGJtRnNlWE5wY3poRGIyNXpkR0Z1ZEVVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE14TWtKdmIyeERiMjV6ZEdGdWRFVUFUamh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE5GTmpZV3hoY2tOdmJuTjBZVzUwUlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekV4U1c1MFEyOXVjM1JoYm5SRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TVROR2JHOWhkRU52Ym5OMFlXNTBSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6RTBWbVZqZEc5eVEyOXVjM1JoYm5SRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TVRkRGIyMXdiM05wZEdWRGIyNXpkR0Z1ZEVVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE14TkUxaGRISnBlRU52Ym5OMFlXNTBSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6RTBVM1J5ZFdOMFEyOXVjM1JoYm5SRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TVROQmNuSmhlVU52Ym5OMFlXNTBSUUFBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgyWjFibU5KV2s0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVGRFWldOdmNtRjBhVzl1VFdGdVlXZGxjakUzUm05eVJXRmphRVJsWTI5eVlYUnBiMjVGYW1wT1UxODRablZ1WTNScGIyNUpSblpTUzA1VE0xOHhNVWx1YzNSeWRXTjBhVzl1UlVWRlJVVXpKRjh6VGxOZk9XRnNiRzlqWVhSdmNrbFRRMTlGUlVaaVV6bGZSVVZGQUU1VGRETmZYekl4TUY5ZlpuVnVZM1JwYjI0MlgxOWlZWE5sU1VaaVVrdE9PSE53ZG5SdmIyeHpNMjl3ZERFeFNXNXpkSEoxWTNScGIyNUZSVVZGQUZwT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekUzUkdWamIzSmhkR2x2YmsxaGJtRm5aWEl4TjBadmNrVmhZMmhFWldOdmNtRjBhVzl1UldwcVRsTjBNMTlmTWpobWRXNWpkR2x2YmtsR2RsSkxUbE13WHpFeFNXNXpkSEoxWTNScGIyNUZSVVZGUlRNa1h6TUFUbE4wTTE5Zk1qRXdYMTltZFc1amRHbHZialpmWDJKaGMyVkpSblpTUzA0NGMzQjJkRzl2YkhNemIzQjBNVEZKYm5OMGNuVmpkR2x2YmtWRlJVVUFBRTVUZEROZlh6SXhNRjlmWm5WdVkzUnBiMjQyWDE5bWRXNWpTVnBPU3poemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTXhNMFJsWmxWelpVMWhibUZuWlhJeE1FWnZja1ZoWTJoVmMyVkZVRXRPVXpOZk1URkpibk4wY25WamRHbHZia1ZTUzA1VFh6aG1kVzVqZEdsdmJrbEdkbEJUTmw5cVJVVkZSVE1rWHpGT1UxODVZV3hzYjJOaGRHOXlTVk5HWDBWRlJtSlRRVjlxUlVWRkFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTlpWVhObFNVWmlVRTQ0YzNCMmRHOXZiSE16YjNCME1URkpibk4wY25WamRHbHZia1ZxUlVWRkFGcE9Temh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE0wUmxabFZ6WlUxaGJtRm5aWEl4TUVadmNrVmhZMmhWYzJWRlVFdE9VekJmTVRGSmJuTjBjblZqZEdsdmJrVlNTMDVUZEROZlh6STRablZ1WTNScGIyNUpSblpRVXpOZmFrVkZSVVV6SkY4eEFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTltZFc1alNWcE9Temh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE0wUmxabFZ6WlUxaGJtRm5aWEkzVG5WdFZYTmxjMFZRUzA1VE0xOHhNVWx1YzNSeWRXTjBhVzl1UlVVekpGOHpUbE5mT1dGc2JHOWpZWFJ2Y2tsVE9WOUZSVVoyVUZNMlgycEZSVVVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgySmhjMlZKUm5aUVRqaHpjSFowYjI5c2N6TnZjSFF4TVVsdWMzUnlkV04wYVc5dVJXcEZSVVVBV2s1TE9ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekV6UkdWbVZYTmxUV0Z1WVdkbGNqZE9kVzFWYzJWelJWQkxUbE13WHpFeFNXNXpkSEoxWTNScGIyNUZSVE1rWHpNQVRsTjBNMTlmTWpFd1gxOW1kVzVqZEdsdmJqWmZYMloxYm1OSlRsTmZObDlmWW1sdVpFbE5Uamh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE0wUmxabFZ6WlUxaGJtRm5aWEpGUm5aUVRsTTBYekV4U1c1emRISjFZM1JwYjI1RlJVcFFVelpmVWt0T1UxOHhNbkJzWVdObGFHOXNaR1Z5Y3pSZlgzQm9TVXhwTVVWRlJVVkZSVTVUWHpsaGJHeHZZMkYwYjNKSlUwaGZSVVZHZGxNNFgwVkZSUUJPVTNRelgxOHlObDlmWW1sdVpFbE5Uamh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNeE0wUmxabFZ6WlUxaGJtRm5aWEpGUm5aUVRsTXlYekV4U1c1emRISjFZM1JwYjI1RlJVcFFVelJmVWt0T1UxOHhNbkJzWVdObGFHOXNaR1Z5Y3pSZlgzQm9TVXhwTVVWRlJVVkZSUUJPVTNRelgxOHlNVGhmWDNkbFlXdGZjbVZ6ZFd4MFgzUjVjR1ZKVFU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVE5FWldaVmMyVk5ZVzVoWjJWeVJVWjJVRTVUTWw4eE1VbHVjM1J5ZFdOMGFXOXVSVVZGUlFCT1UzUXpYMTh5TVRWaWFXNWhjbmxmWm5WdVkzUnBiMjVKVUU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVE5FWldaVmMyVk5ZVzVoWjJWeVJWQk9VekpmTVRGSmJuTjBjblZqZEdsdmJrVjJSVVVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgyWjFibU5KV2s0NGMzQjJkRzl2YkhNemIzQjBNVFJHWldGMGRYSmxUV0Z1WVdkbGNqRXpRV1JrUTJGd1lXSnBiR2wwZVVWT00zTndkakV3UTJGd1lXSnBiR2wwZVVWRk15UmZNRTVUWHpsaGJHeHZZMkYwYjNKSlV6ZGZSVVZHZGxNMlgwVkZSUUJPVTNRelgxOHlNVEJmWDJaMWJtTjBhVzl1Tmw5ZlltRnpaVWxHZGs0emMzQjJNVEJEWVhCaFltbHNhWFI1UlVWRlJRQmFUamh6Y0haMGIyOXNjek52Y0hReE5FWmxZWFIxY21WTllXNWhaMlZ5TVROQlpHUkRZWEJoWW1sc2FYUjVSVTR6YzNCMk1UQkRZWEJoWW1sc2FYUjVSVVV6SkY4d0FBQk9VM1F6WDE4eU1UQmZYMloxYm1OMGFXOXVObDlmWm5WdVkwbGFUamh6Y0haMGIyOXNjek52Y0hReE1VbHVjM1J5ZFdOMGFXOXVNVEZHYjNKRllXTm9TVzV6ZEVWU1MwNVRYemhtZFc1amRHbHZia2xHZGxCVE5GOUZSVVZpUlZWc1V6WmZSVjlPVTE4NVlXeHNiMk5oZEc5eVNWTkNYMFZGUm1KVE5sOUZSVVVBV2s0NGMzQjJkRzl2YkhNemIzQjBNVEZKYm5OMGNuVmpkR2x2YmpFeFJtOXlSV0ZqYUVsdWMzUkZVa3RPVTNRelgxOHlPR1oxYm1OMGFXOXVTVVoyVUZNeFgwVkZSV0pGVld4VE5GOUZYd0JPVTNRelgxOHlNVEJmWDJaMWJtTjBhVzl1Tmw5ZlpuVnVZMGxhVGtzNGMzQjJkRzl2YkhNemIzQjBNVEZKYm5OMGNuVmpkR2x2YmpFeFJtOXlSV0ZqYUVsdWMzUkZVa3RPVTE4NFpuVnVZM1JwYjI1SlJuWlFTMU0wWDBWRlJXSkZWV3hUTjE5RlgwNVRYemxoYkd4dlkyRjBiM0pKVTBOZlJVVkdZbE0zWDBWRlJRQmFUa3M0YzNCMmRHOXZiSE16YjNCME1URkpibk4wY25WamRHbHZiakV4Um05eVJXRmphRWx1YzNSRlVrdE9VM1F6WDE4eU9HWjFibU4wYVc5dVNVWjJVRXRUTVY5RlJVVmlSVlZzVXpWZlJWOEFUbE4wTTE5Zk1qRXdYMTltZFc1amRHbHZialpmWDJaMWJtTkpXazQ0YzNCMmRHOXZiSE16YjNCME9FWjFibU4wYVc5dU1URkdiM0pGWVdOb1NXNXpkRVZTUzA1VFh6aG1kVzVqZEdsdmJrbEdkbEJPVXpOZk1URkpibk4wY25WamRHbHZia1ZGUlVWaVlrVXpKRjh4VGxOZk9XRnNiRzlqWVhSdmNrbFRRMTlGUlVaaVV6ZGZSVVZGQUZwT09ITndkblJ2YjJ4ek0yOXdkRGhHZFc1amRHbHZiakV4Um05eVJXRmphRWx1YzNSRlVrdE9VM1F6WDE4eU9HWjFibU4wYVc5dVNVWjJVRTVUTUY4eE1VbHVjM1J5ZFdOMGFXOXVSVVZGUldKaVJUTWtYekVBVGxOME0xOWZNakV3WDE5bWRXNWpkR2x2YmpaZlgyWjFibU5KV2s1TE9ITndkblJ2YjJ4ek0yOXdkRGhHZFc1amRHbHZiakV4Um05eVJXRmphRWx1YzNSRlVrdE9VMTg0Wm5WdVkzUnBiMjVKUm5aUVMwNVRNMTh4TVVsdWMzUnlkV04wYVc5dVJVVkZSV0ppUlRNa1h6Sk9VMTg1WVd4c2IyTmhkRzl5U1ZORVgwVkZSbUpUT0Y5RlJVVUFXazVMT0hOd2RuUnZiMnh6TTI5d2REaEdkVzVqZEdsdmJqRXhSbTl5UldGamFFbHVjM1JGVWt0T1UzUXpYMTh5T0daMWJtTjBhVzl1U1VaMlVFdE9VekJmTVRGSmJuTjBjblZqZEdsdmJrVkZSVVZpWWtVekpGOHlBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek5GWnZhV1JGQUFCT1UzUXpYMTh5TVRCZlgyWjFibU4wYVc5dU5sOWZablZ1WTBsYVRrczRjM0IyZEc5dmJITXpiM0IwTmsxdlpIVnNaVGhVYjBKcGJtRnllVVZRVGxOZk5uWmxZM1J2Y2tscVRsTmZPV0ZzYkc5allYUnZja2xxUlVWRlJXSkZNeVJmTUU1VE5sOUpVMEZmUlVWR2RsQkxUbE16WHpFeFNXNXpkSEoxWTNScGIyNUZSVVZGQUU1VGRETmZYekl4TUY5ZlpuVnVZM1JwYjI0MlgxOW1kVzVqU1ZwYVRrczRjM0IyZEc5dmJITXpiM0IwTmsxdlpIVnNaVGhVYjBKcGJtRnllVVZRVGxOZk5uWmxZM1J2Y2tscVRsTmZPV0ZzYkc5allYUnZja2xxUlVWRlJXSkZUa3N6SkY4d1kyeEZVRXRPVXpOZk1URkpibk4wY25WamRHbHZia1ZGVld4UVMycEZYMDVUTmw5SlUwZGZSVVZHWWxOR1gwVkZSUUJhV2s1TE9ITndkblJ2YjJ4ek0yOXdkRFpOYjJSMWJHVTRWRzlDYVc1aGNubEZVRTVUZEROZlh6STJkbVZqZEc5eVNXcE9VekpmT1dGc2JHOWpZWFJ2Y2tscVJVVkZSV0pGVGtzekpGOHdZMnhGVUV0T1V6QmZNVEZKYm5OMGNuVmpkR2x2YmtWRlZXeFFTMnBGWHdCYVRrczRjM0IyZEc5dmJITXpiM0IwTmsxdlpIVnNaVGhVYjBKcGJtRnllVVZRVGxOME0xOWZNaloyWldOMGIzSkphazVUTWw4NVlXeHNiMk5oZEc5eVNXcEZSVVZGWWtVekpGOHdBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek5FSnZiMnhGQUU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpOMU5oYlhCc1pYSkZBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek5VVjJaVzUwUlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekV4UkdWMmFXTmxSWFpsYm5SRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6T1ZKbGMyVnlkbVZKWkVVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE0xVVhWbGRXVkZBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek1URlFhWEJsVTNSdmNtRm5aVVVBVGpoemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTXhNazVoYldWa1FtRnljbWxsY2tVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE15TTBGalkyVnNaWEpoZEdsdmJsTjBjblZqZEhWeVpVNVdSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6RXhVbUY1VVhWbGNubExTRkpGQUU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVEZJYVhSUFltcGxZM1JPVmtVQUFFNVRkRE5mWHpJeE1GOWZablZ1WTNScGIyNDJYMTltZFc1alNWcE9PSE53ZG5SdmIyeHpNMjl3ZERoaGJtRnNlWE5wY3pFeFZIbHdaVTFoYm1GblpYSXlNbEpsWTI5eVpFbG1WSGx3WlVSbFptbHVhWFJwYjI1RlVrdE9Vek5mTVRGSmJuTjBjblZqZEdsdmJrVkZNeVJmTUU1VFh6bGhiR3h2WTJGMGIzSkpVemxmUlVWR2RsTTRYMFZGUlFCYVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE14TVZSNWNHVk5ZVzVoWjJWeU1qSlNaV052Y21SSlpsUjVjR1ZFWldacGJtbDBhVzl1UlZKTFRsTXdYekV4U1c1emRISjFZM1JwYjI1RlJUTWtYekFBVGpoemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTTNTVzUwWldkbGNrVUFUamh6Y0haMGIyOXNjek52Y0hRNFlXNWhiSGx6YVhNMVJteHZZWFJGQUU0NGMzQjJkRzl2YkhNemIzQjBPR0Z1WVd4NWMybHpNVEpUWVcxd2JHVmtTVzFoWjJWRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6Tms5d1lYRjFaVVVBVGpoemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTTBVR2x3WlVVQVRqaHpjSFowYjI5c2N6TnZjSFE0WVc1aGJIbHphWE14TkVadmNuZGhjbVJRYjJsdWRHVnlSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6WldaV04wYjNKRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TmsxaGRISnBlRVVBVGpoemNIWjBiMjlzY3pOdmNIUTRZVzVoYkhsemFYTTFTVzFoWjJWRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6TlVGeWNtRjVSUUJPT0hOd2RuUnZiMnh6TTI5d2REaGhibUZzZVhOcGN6RXlVblZ1ZEdsdFpVRnljbUY1UlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjelpUZEhKMVkzUkZBRTQ0YzNCMmRHOXZiSE16YjNCME9HRnVZV3g1YzJsek4xQnZhVzUwWlhKRkFFNDRjM0IyZEc5dmJITXpiM0IwT0dGdVlXeDVjMmx6T0VaMWJtTjBhVzl1UlFCT09ITndkblJ2YjJ4ek0yOXdkRGhoYm1Gc2VYTnBjekU1UTI5dmNHVnlZWFJwZG1WTllYUnlhWGhPVmtVQVRqaHpjSFowYjI5c2N6VjFkR2xzY3pFeFUyMWhiR3hXWldOMGIzSkpVRXRPVTE4emIzQjBPR0Z1WVd4NWMybHpORlI1Y0dWRlRHMDRSVVZGQUFBQUFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBQUFBQUFCQUFBQUJBQUFBQUVBQUFBQ0FBQUFBd0FBQUFJQUFBQUVBRUcwc0EwTHdRd0JBQUFBQWdBQUFBTUFBQUFFQUFBQUJRQUFBQVlBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBRkFBQUFCVUFBQUFXQUFBQUZ3QUFBQmdBQUFBWkFBQUFHZ0FBQUJzQUFBQWNBQUFBSFFBQUFCNEFBQUFmQUFBQUlBQUFBQ0VBQUFBaUFBQUFJd0FBQUNRQUFBQWxBQUFBSmdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFMQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBUVFBQUFFSUFBQUJEQUFBQVJBQUFBRVVBQUFCR0FBQUFSd0FBQUVnQUFBQkpBQUFBU2dBQUFFc0FBQUJNQUFBQVRRQUFBRTRBQUFCUEFBQUFVQUFBQUZFQUFBQlNBQUFBVXdBQUFGUUFBQUJWQUFBQVZnQUFBRmNBQUFCWUFBQUFXUUFBQUZvQUFBQmJBQUFBWEFBQUFGMEFBQUJlQUFBQVh3QUFBR0FBQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQUJuQUFBQWFBQUFBR2tBQUFCcUFBQUFhd0FBQUd3QUFBQnRBQUFBYmdBQUFHOEFBQUFLQUFBQU5BQUFBQUFBQUFBQkFBQUFCZ0FBQUJNQUFBQVJBQUFBQkFBQUFPTVVBQUFVQUFBQUJBQUFBQUFBQUFBRUFBQUFXaEVBQUZrUkFBRGpGQUFBQmdBQUFESUFBQUF5QUFBQUFRQUFBSWtYQUFBekFBQUFBZ0FBQURZQUFBQVNBQUFBS1FBQUFEd0FBQUE2QUFBQU93QUFBQnNBQUFBOUFBQUFQZ0FBQUVBQUFBQkJBQUFBUWdBQUFEOEFBQUJEQUFBQXNSUUFBRVFBQUFBRUFBQUFXaEVBQUZrUkFBQlpBQUFBUnhFQUFGSUFBQUJQRVFBQVdBQUFBSW9YQUFCL0VRQUFVQUFBQUg4UkFBQjRFUUFBVUFBQUFFOEFBQUNERndBQWd4Y0FBRWNBQUFCNEVRQUFUd0FBQUFRQUFBQ1NFd0FBQndBQUFMOFRBQUFIRlFBQTNSUUFBQWNWQUFDaUZBQUFhQUFBQUtNVUFBQ3hGQUFBYXdBQUFKSVVBQUJrQUFBQTNCUUFBSDhSQUFCbEFBQUFVQUFBQU53VUFBQmxBQUFBM1JRQUFHWUFBQURjRkFBQWZ4RUFBSGdSQUFCbEFBQUFVQUFBQUU4QUFBRHRGQUFBWVFBQUFQTVVBQUFDRlFBQS9CUUFBQkFBQUFBREZRQUFBeFVBQUF3QUFBQU9GUUFBd0JVQUFNRVZBQURDRlFBQXl4VUFBTkFWQUFEakZRQUFMZ0FBQU9ZVkFBRHdGUUFBN0JVQUFPMFZBQUQ5RlFBQVF3QUFBQm9BQUFBYkFBQUFRQllBQUVBV0FBQkJGZ0FBUUJZQUFFSVdBQUM1RmdBQTFSWUFBUDRXQUFBN0FBQUFGaGNBQURVQUFBQWlGd0FBTHhjQUFEa1hBQUFnQUFBQVBCY0FBQzBBQUFEUEZ3QUFrUmNBQUpJWEFBQVZBQUFBOFJVQUFNa1hBQUQ5RndBQUFCa0FBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQVpBQUFBS2dBQUFPRVVBQUJjQUFBQXpSWUFBQUFYQUFET0Z3QUFGUUFBQUJZWEFBQTFBQUFBQmdBQUFIZ1JBQUIvRVFBQWZoRUFBQVVWQUFCR0VRQUFBd0FBQUFJQUFBQ1NGQUFBM0JRQUFIOFJBQUNqRkFBQUJBQUFBT01VQUFBVEFBQUFUQUFBQURVQUFBQUNBQUFBQXdBQUFBQUFBQUFDQUFBQUF3QUFBSklVQUFDakZBQUFBZ0FBQUpJVUFBQ2pGQUFBT2dBQUFGY0FBQUJmRVFBQVRRQUFBSEFSQUFCRUFBQUFjUkVBQUhJUkFBQnpFUUFBZEJFQUFBVUFBQUNWRXdBQUdBQUFBQVVBQUFBWUFBQUFraFFBQUtNVUFBQVJBQUFBWkFBQUFLZ1VBQUJnQUFBQTVoUUFBQUlWQUFBUUFBQUE4eFFBQVB3VUFBRHhGUUFBemhVQUFBUVhBQUF4QUFBQUNSY0FBQUVBQUFEeEZRQUFKZ0FBQUZVQUFBQmJBQUFBVUFBQUFHVUFBQUFIRlFBQUVRQUFBT01WQUFBdUFBQUFMeGNBQUR3QUFBQXJBQUFBTEFBQUFBRUFBQUFHQUFBQU1BQUFBQUVBQUFBaUFBQUFKUUFBQUNRQUFBQXVBQUFBTHdBQUFDZ0FBQUF4QUFBQW1CTUFBTDBXQUFBaUZ3QUFCUUFBQUVnQUFBQXpGd0FBQVFBQUFBWUFBQUFBQUFBQUl3QUFBQUVBQUFCSEFBQUFOZ0FBQUVvQUFBQUdBQUFBZ1JRQUFHY0FBQUNERkFBQVl3QUFBSWNVQUFDTEZBQUFiUUFBQUdRQUFBQ2tGQUFBcEJRQUFFVUFBQUJpQUFBQXRSUUFBQTBBQUFBT0ZRQUE1QlVBQU9ZVkFBQWJBQUFBSEFBQUFNQVdBQUFzQUFBQUNoY0FBQkFYQUFBU0Z3QUFGQmNBQUJ3WEFBQWdGd0FBTnhjQUFCNFlBQUFnQUFBQUlRQkJnTDBOQ3hZQ0FBQUFBd0FBQU53VUFBQi9FUUFBa2hRQUFLTVVBRUdndlEwTEVnSUFBQUJGQUFBQWhoUUFBSklVQUFDakZBQkJ3TDBOQzdNTE9RQUFBRVlBQUFDR0ZBQUFraFFBQUtNVUFBQUdBQUFBUFFBQUFFY1JBQUFHQUFBQVBRQUFBRVVRQUFCSEVRQUFRQUFBQUZJQUFBQkxFUUFBVkFBQUFFc1JBQUNTRkFBQW94UUFBQkVBQUFCVUFBQUFaQUFBQUVZQUFBQlZFUUFBUWdBQUFGY1JBQUJKQUFBQWh4UUFBSklVQUFCa0FBQUFiZ0FBQUl3VUFBQ1NGQUFBWGdBQUFHUUFBQUNSRkFBQURnQUFBS3NVQUFDckZBQUFEd0FBQUd3QUFBQ3JGQUFBcXhRQUFOd1VBQUJsQUFBQTNSUUFBR1lBQUFCL0VRQUFVQUFBQVAwVUFBQnFBQUFBaEJjQUFFNEFBQUFHQUFBQVB3QUFBRUFBQUFCREFBQUFzUlFBQUdzQUFBQUxBQUFBRFFBQUFBUUFBQUF0QUFBQUpRQUFBQ3NBQUFBdUFBQUFFd0FBQUJFQUFBQTlBQUFBQ3dBQUFGMEFBQUJNRVFBQVdBQUFBRDhBQUFCUkVRQUFVUkVBQUZzQUFBQlpFUUFBVVFBQUFFQUFBQUJnRVFBQVR3QUFBRThBQUFCUUFBQUFBZ0FBQUFvQUFBQUhBQUFBQ0FBQUFCY0FBQUJUQUFBQU9RQUFBQmtBQUFCdUFBQUFoaFFBQUc0QUFBQmVBQUFBYUFBQUFDOEFBQUFvQUFBQXRSUUFBQzRBQUFDMUZBQUFMd0FBQUxVVUFBQmhBQUFBREFBQUFCSUFBQUJwQUFBQVh3QUFBRG9BQUFBMEFBQUFJd0FBQURnQUFBQXZBQUFBRmdBQUFQTVZBQUErQUFBQVF3QUFBQ0lBQUFBOUFBQUFKQUFBQUI4QUFBQWVBQUFBT3dBQUFDb0FBQUFyQUFBQUp3QUFBRE1BQUFBb0FBQUFLUUFBQUNZQUFBQWRBQUFBTndBQUFEQUFBQUFnQUFBQUxRQUFBRWNBQUFBbkFBQUFRUUFBQUZZQUFBQVZBQUFBTWdBQUFEWUFBQUFVQUFBQUlRQUFBRGtBQUFBbEFBQUFXZ0FBQUhnUkFBQUFBQUFBUUJFQUFBQUFBQUFTRVFBQUV4RUFBRUVSQUFBQUFBQUFGQkVBQUJVUkFBQkNFUUFBQUFBQUFCWVJBQUFYRVFBQVF4RUFBQUFBQUFBWUVRQUFHUkVBQUVRUkFBQUFBQUFBR2hFQUFCc1JBQUFwQUFBQUFBQUFBQndSQUFBZEVRQUFKQUFBQUFBQUFBQWVFUUFBSHhFQUFCd0FBQUNNRUFBQWpSQUFBSTRRQUFBYkFBQUF1UkFBQUxvUUFBQzdFQUFBR0FBQUFNZ1FBQURKRUFBQXloQUFBQ1lBQUFERkVBQUF4aEFBQU1jUUFBQW9BQUFBRHhFQUFCQVJBQUFSRVFBQUdnQUFBRVlSQUFCSEVRQUFTQkVBQU5VVUFBQ1NFQUFBa3hBQUFKUVFBQURVRkFBQWxSQUFBSllRQUFDWEVBQUF6eFFBQUpzUUFBQ2NFQUFBblJBQUFBWUFBQUNlRUFBQW54QUFBS0FRQUFEb0ZBQUErUkFBQVBvUUFBRDdFQUFBekJRQUFNc1FBQURNRUFBQXpSQUFBTXNVQUFET0VBQUF6eEFBQU5BUUFBRFNGQUFBMFJBQUFOSVFBQURURUFBQTB4UUFBRklSQUFCVEVRQUFWQkVBQU9jVUFBQ1lFQUFBbVJBQUFKb1FBQURORkFBQS94QUFBQUFSQUFBQkVRQUF6aFFBQVB3UUFBRDlFQUFBL2hBQUFNb1VBQUJNRVFBQVRSRUFBRTRSQUFESkZBQUFUeEVBQUZBUkFBQlJFUUFBeHhRQUFLb1FBQUNyRUFBQXJCQUFBTWdVQUFDdEVBQUFyaEFBQUs4UUFBQ3RGQUFBZVJBQUFIb1FBQUI3RUFBQXJCUUFBSHdRQUFCOUVBQUFmaEFBQUpZVEFBQi9FQUFBZ0JBQUFJRVFBQUNRRkFBQWlCQUFBSWtRQUFDS0VBQUFoUmNBQUU4YUFBQlFHZ0FBVVJvQUFLWVVBQUE2RUFBQU94QUFBRHdRQUFDbkZBQUFRQkFBQUVFUUFBQkNFQUFBQUFBQUFBSUFBQUFEQUFBQWxCUUFBUFVVQUFBQUFBQUFBZ0FBQUFNQUFBQVRBQUFBRkFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFRQUFBQUVBQUFBQlFBQUFBVUFBQUFGQUFBQUJRQUFBQVVBQUFCS0FBQUFSd0FBQUNRQkFBQVBBQUFBRUFBQUFFc0JBQUE1QUFBQUpRRUFBQ1lCQUFBbkFRQUFLQUVBQUVVQkFBQkdBUUFBQlFBQUFBRUFBQUFDQUFBQUF3QUFBQUlBQUFBQUFCd0FIUUFlQUNBQUlBQkJoc2tOQ3hyd1B3QUFBQUFBQVBnL0FBQUFBQUFBQUFBRzBNOUQ2LzFNUGdCQnE4a05DNzBEUUFPNDRqOEFBQUFBQUFEd1AzU0ZGZE93MmU4L0Q0bjViRmkxN3o5Uld4TFFBWlB2UDN0UmZUeTRjdTgvcXJsb01ZZFU3ejg0WW5WdWVqanZQK0hlSC9XZEh1OC9GYmN4Q3Y0Rzd6L0xxVG8zcC9IdVB5STBFa3ltM3U0L0xZbGhZQWpPN2o4bktqYlYyci91UDRKUG5WWXJ0TzQvS1ZSSTNRZXI3aitGVlRxd2ZxVHVQODA3ZjJhZW9PNC9kRi9zNkhXZjdqK0hBZXR6RktIdVB4UE9USm1KcGU0LzI2QXFRdVdzN2ovbHhjMndON2Z1UDVEd280S1J4TzQvWFNVK3NnUFY3ait0MDFxWm4ranVQMGRlKy9KMi8rNC9uRktGM1pzWjd6OXBrTy9jSURmdlA0ZWsrOXdZV084L1g1dDdNNWQ4N3ovYWtLU2lyNlR2UDBCRmJsdDIwTzgvQUFBQUFBQUE2RUtVSTVGTCtHcXNQL1BFK2xET3Y4NC8xbElNLzBJdTVqOEFBQUFBQUFBNFEvNkNLMlZIRlVkQWxDT1JTL2hxdkQ3enhQcFF6cjh1UDlaU0RQOUNMcFkvL29JclpVY1ZaMEFBQUFBQUFBQTRRd0FBK3Y1Q0xuYS9PanVldkpyM0RMMjkvZi8vLy8vZlB6eFVWVlZWVmNVL2tTc1h6MVZWcFQ4WDBLUm5FUkdCUHdBQUFBQUFBTWhDN3puNi9rSXU1ajhreElML3ZiL09QN1gwRE5jSWE2dy96RkJHMHF1eWd6K0VPazZiNE5kVlB3QkI5c3dOQzVvVjhEOXV2NGdhVHp1YlBEVXorNms5OXU4L1hkelluQk5nY2J4aGdIYyttdXp2UDlGbWh4QjZYcEM4aFg5dTZCWGo3ejhUOW1jMVV0S01QSFNGRmRPdzJlOC8rbzc1STRET2k3emU5dDBwYTlEdlAySEk1bUZPOTJBOHlKdDFHRVhIN3orWjB6TmI1S09RUElQenhzbyt2dTgvYlh1RFhhYWFsendQaWZsc1dMWHZQL3p2L1pJYXRZNDg5MGR5SzVLczd6L1JuQzl3UGI0K1BLTFIwekxzbys4L0MyNlFpVFFEYXJ3YjAvNnZacHZ2UHc2OUx5cFNWcFc4VVZzUzBBR1Q3ejlWNms2TTc0QlF2TXd4Yk1DOWl1OC9GdlRWdVNQSmtiemdMYW11bW9MdlA2OVZYT25qMDRBOFVZNmx5Smg2N3o5SWs2WHFGUnVBdkh0UmZUeTRjdTgvUFRMZVZmQWZqN3pxall3NCtXcnZQNzlURXorTWlZczhkY3R2NjF0ajd6OG02eEYybk5tV3ZOUmNCSVRnVys4L1lDODZQdmZzbWp5cXVXZ3hoMVR2UDUwNGhzdUM1NCs4SGRuOElsQk43eitOdzZaRVFXK0tQTmFNWW9nN1J1OC9mUVRrc0FWNmdEeVczSDJSU1QvdlA1U29xT1A5anBZOE9HSjFibm80N3o5OVNIVHlHRjZIUEQrbXNrL09NZTgvOHVjZm1DdEhnRHpkZk9KbFJTdnZQMTRJY1Q5N3VKYThnV1AxNGQ4azd6OHhxd2x0NGZlQ1BPSGVIL1dkSHU4LytyOXZHcHNoUGJ5UTJkclFmeGp2UDdRS0RIS0NONHM4Q3dQa3BvVVM3eitQeTg2SmtoUnVQRll2UHFtdkRPOC90cXV3VFhWTmd6d1Z0ekVLL2didlAweDByT0lCUW9ZOE1kaE0vSEFCN3o5SytOTmRPZDJQUFA4V1pMSUkvTzQvQkZ1T080Q2pocnp4bjVKZnhmYnVQMmhRUzh6dFNwSzh5Nms2TjZmeDdqK09MVkViK0FlWnZHYllCVzJ1N080LzBqYVVQdWpSY2J6M24rVTAyK2Z1UHhVYnpyTVpHWm04NWFnVHd5M2o3ajl0VENxblNKK0ZQQ0kwRWt5bTN1NC9pbWtvZW1BU2s3d2NnS3dFUmRydVAxdUpGMGlQcDFpOEtpNzNJUXJXN2o4Ym1rbG5teXg4dkplb1VObjEwZTQvRWF6Q1lPMWpRend0aVdGZ0NNN3VQKzlrQmpzSlpwWThWd0FkN1VISzdqOTVBNkhhNGN4dVBOQTh3YldpeHU0L01CSVBQNDcva3p6ZTA5ZndLc1B1UDdDdmVydk9rSFk4SnlvMjFkcS83ajkzNEZUcnZSMlRQQTNkL1pteXZPNC9qcU54QURTVWo3eW5MSjEyc3JudVAwbWprOXpNM29lOFFtYlBvdHEyN2o5Zk9BKzl4dDU0dklKUG5WWXJ0TzQvOWx4NzdFWVNocndQa2wzS3BMSHVQNDdYL1JnRk5aTTgyaWUxTmtldjdqOEZtNG92dDVoN1BQM0hsOVFTcmU0L0NWUWM0dUZqa0R3cFZFamRCNnZ1UCtyR0dWQ0Z4elE4dDBaWmlpYXA3ajgxd0dRcjVqS1VQRWdoclJWdnArNC9uM2FaWVVya2pMd0ozSGE1NGFYdVA2aE43enZGTTR5OGhWVTZzSDZrN2ordTZTdUplRk9FdkNERHpEUkdvKzQvV0ZoV2VOM09rN3dsSWxXQ09LTHVQMlFaZm9DcUVGYzhjNmxNMUZXaDdqOG9JbDYvNzdPVHZNMDdmMmFlb080L2dyazBoNjBTYXJ5LzJndDFFcUR1UCs2cGJianZaMk84THhwbFBMS2Y3ajlSaU9CVVBkeUF2SVNVVWZsOW4rNC96ejVhZm1RZmVMeDBYK3pvZFovdVA3QjlpOEJLN29hOGRJR2xTSnFmN2orSzVsVWVNaG1Hdk1sblFsYnJuKzQvMDlRSlhzdWNrRHcvWGQ1UGFhRHVQeDJsVGJuY01udThod0hyY3hTaDdqOXJ3R2RVL2V5VVBETEJNQUh0b2U0L1ZXeldxK0hyWlR4aVRzODI4Nkx1UDBMUHN5L0ZvWWk4RWhvK1ZDZWs3ajgwTnp2eHRtbVR2QlBPVEptSnBlNC9IdjhaT29SZWdMeXR4eU5HR3FmdVAyNVhjdGhRMUpTODdaSkVtOW1vN2o4QWlnNWJaNjJRUEpsbWl0bkhxdTQvdE9yd3dTKzNqVHpib0NwQzVhenVQLy9ueFp4Z3RtVzhqRVMxRmpLdjdqOUVYL05aZy9aN1BEWjNGWm11c2U0L2d6MGVweDhKazd6Ry81RUxXN1R1UHlrZWJJdTRxVjI4NWNYTnNEZTM3ajladVpCOCtTTnN2QTlTeU10RXV1NC9xdm4wSWtORGtyeFFUdDZmZ3IzdVAwdU9adGRzeW9XOHVnZktjUEhBN2o4bnpwRXIvSzl4UEpEd280S1J4TzQvdTNNSzRUWFNiVHdqSStNWlk4anVQMk1pWWlJRXhZZThaZVZkZTJiTTdqL1ZNZUxqaGh5TFBETXRTdXliME80L0ZidTgwOUc3a2J4ZEpUNnlBOVh1UDlJeDdwd3h6SkE4V0xNd0U1N1o3ait6V25OdWhHbUVQTC85ZVZWcjN1NC90SjJPbDgzZmdyeDY4OU8vYStQdVA0Y3p5NUozR293OHJkTmFtWi9vN2ovNjJkRktqM3VRdkdhMmpTa0g3dTQvdXE3Y1Z0bkRWYno3RlUrNG92UHVQMEQycGowT3BKQzhPbG5salhMNTdqODBrNjA0OU5ab3ZFZGUrL0oyLys0L05ZcFlhK0x1a2J4S0JxRXdzQVh2UDgzZFh3clgvM1E4MHNGTGtCNE03eitzbUpMNis3MlJ2QWtlMTF2Q0V1OC9zd3l2TUs1dWN6eWNVb1hkbXhudlA1VDluMXd5NDQ0OGV0RC9YNnNnN3orc1dRblJqK0NFUEV2UlZ5N3hKKzgvWnhwT09LL05ZenkxNXdhVWJTL3ZQMmdaa213c2EyYzhhWkR2M0NBMzd6L1N0Y3lER0lxQXZQckRYVlVMUCs4L2Ivci9QMTJ0ajd4OGlRZEtMVWZ2UDBtcGRUaXVEWkM4OG9rTkNJZFA3eituQnoybWhhTjBQSWVrKzl3WVdPOC9EeUpBSUo2UmdyeVlnOGtXNDJEdlA2eVN3ZFZRV280OGhUTGJBK1pwN3o5TGF3R3NXVHFFUEdDMEFmTWhjKzgvSHo2MEJ5SFZncnhmbTNzemwzenZQOGtOUnp1NUtvbThLYUgxRkVhRzd6L1RpRHBnQkxaMFBQWS9pK2N1a084L2NYS2RVZXpGZ3p5RFRNZjdVWnJ2UC9DUjA0OFM5NCs4MnBDa29xK2s3ejk5ZENQaW1LNk52UEZuamkxSXIrOC9DQ0NxUWJ6RGpqd25XbUh1RzdydlB6THJxY09VSzRROGw3cHJOeXZGN3ovdWhkRXhxV1NLUEVCRmJsdDIwTzgvN2VNNzVMbzNqcndVdnB5dC9kdnZQNTNOa1UwN2lYYzgySkNlZ2NIbjd6K0p6R0JCd1FWVFBQRnhqeXZDOCs4L3Z2UDRlZXhoOWo4Wk1KWmJ4djdldnoySXIwcnRjZlUvcFB6VU1tZ0wyNyt3RVBEd09aWDBQM3UzSHdxTFFkZS9oUU80c0pYSjh6OTd6MjBhNlozVHY2VmtpQXdaRGZNL01iYnk4NXNkMEwrZ2pndDdJbDd5UC9CNk94c2RmTW0vUHpRYVNrcTc4VCtmUEsrVDQvbkN2N3JsaXZCWUkvRS9YSTE0djh0Z3ViK25BSmxCUDVYd1A4NWZSN2FkYjZxL0FBQUFBQUFBOEQ4QUFBQUFBQUFBQUt4SG12Mk1ZTzQvUGZVa244bzRzeitnYWdJZnM2VHNQN3FST0ZTcGRzUS81dnhxVnpZZzZ6L1M1TVJLQzRUT1B5MnFvV1BSd3VrL0hHWEc4RVVHMUQvdFFYZ0Q1b2JvUC9pZkd5eWNqdGcvWWtoVDlkeG41ei9NZTdGT3BPRGNQMDErQ3ZlMkV0ZS80REpvU2IvSzNqL2U0L3FmUnhYbnY3aklOVjlIRmZjL3Z2UDRlZXhoOWovZXFveUE5M3ZWdnoySXIwcnRjZlUvMjIzQXAvQyswcit3RVBEd09aWDBQMmM2VVgrdUh0Qy9oUU80c0pYSjh6L3BKSUttMkRITHY2VmtpQXdaRGZNL1dIZkFDazlYeHIrZ2pndDdJbDd5UHdDQm5NY3Jxc0cvUHpRYVNrcTc4VDllRG96T2RrNjZ2N3JsaXZCWUkvRS96QnhoV2p5WHNiK25BSmxCUDVYd1B4NE00VGowVXFLL0FBQUFBQUFBOEQ4QUFBQUFBQUFBQUt4SG12Mk1ZTzQvaEZueVhhcWxxaitnYWdJZnM2VHNQN1F1TnFwVFhydy81dnhxVnpZZzZ6OEkyeUIzNVNiRlB5MnFvV1BSd3VrL2NFY2lEWWJDeXovdFFYZ0Q1b2JvUCtGK29NaUxCZEUvWWtoVDlkeG41ejhKN3JaWE1BVFVQKzg1K3Y1Q0x1WS9OSU80U0tNTzBMOXFDK0FMVzFmVlB5TkJDdkwrLzkrL0FBQUFBQUFBQUFCUHUyRUZaNnpkUHhndFJGVDdJZWsvbS9hQjBndHo3ejhZTFVSVSt5SDVQK0psTHlKL0szbzhCMXdVTXlhbWdUeTl5L0I2aUFkd1BBZGNGRE1tcHBFOEdDMUVWUHNoNlQ4WUxVUlUreUhwdjlJaE0zOTgyUUpBMGlFemYzelpBc0FBUVovaURRdW9Gb0FZTFVSVSt5RUpRQmd0UkZUN0lRbkEydzlKUDlzUFNiL2t5eFpBNU1zV3dBQUFBQUFBQUFDQTJ3OUpRTnNQU2NBNFkrMCsyZzlKUDE2WWV6L2FEOGsvYVRlc01XZ2hJak8wRHhRemFDR2lNd01BQUFBRUFBQUFCQUFBQUFZQUFBQ0QrYUlBUkU1dUFQd3BGUURSVnljQTNUVDFBR0xid0FBOG1aVUFRWkJEQUdOUi9nQzczcXNBdDJIRkFEcHVKQURTVFVJQVNRYmdBQW5xTGdBY2t0RUE2eDMrQUNteEhBRG9QcWNBOVRXQ0FFUzdMZ0NjNllRQXRDWndBRUYrWHdEV2tUa0FVNE01QUp6ME9RQ0xYNFFBS1BtOUFQZ2ZPd0RlLzVjQUQ1Z0ZBQkV2N3dBS1dvc0FiUjl0QU05K05nQUp5eWNBUmsrM0FKNW1Qd0F0Nmw4QXVpZDFBT1hyeHdBOWUvRUE5emtIQUpKU2lnRDdhK29BSDdGZkFBaGRqUUF3QTFZQWUveEdBUENyYXdBZ3ZNOEFOdlNhQU9PcEhRQmVZWkVBQ0J2bUFJV1paUUNnRkY4QWpVQm9BSURZL3dBbmMwMEFCZ1l4QU1wV0ZRREpxSE1BZStKZ0FHdU13QUFaeEVjQXpXZkRBQW5vM0FCWmd5b0FpM2JFQUtZY2xnQkVyOTBBR1ZmUkFLVStCUUFGQi84QU0zNC9BTUl5NkFDWVQ5NEF1MzB5QUNZOXd3QWVhKzhBbi9oZUFEVWZPZ0IvOHNvQThZY2RBSHlRSVFCcUpId0ExVzc2QURBdGR3QVZPME1BdFJUR0FNTVpuUUN0eE1JQUxFMUJBQXdBWFFDR2ZVWUE0M0V0QUp2R21nQXpZZ0FBdE5KOEFMU25sd0EzVmRVQTF6NzJBS01RR0FCTmR2d0FaSjBxQUhEWHF3QmpmUGdBZXJCWEFCY1Y1d0RBU1ZZQU85YlpBS2VFT0FBa0k4c0Exb3AzQUZwVUl3QUFIN2tBOFFvYkFCbk8zd0NmTWY4QVpoNXFBSmxYWVFDcyswY0Fmbi9ZQUNKbHR3QXk2SWtBNXI5Z0FPL0V6UUJzTmdrQVhUL1VBQmJlMXdCWU85NEEzcHVTQU5JaUtBQW9odWdBNGxoTkFNYktNZ0FJNHhZQTRIM0xBQmZBVUFEekhhY0FHT0JiQUM0VE5BQ0RFbUlBZzBnQkFQV09Xd0N0c0g4QUh1bnlBRWhLUXdBUVo5TUFxdDNZQUs1ZlFnQnFZYzRBQ2lpa0FOT1p0QUFHcHZJQVhIZC9BS1BDZ3dCaFBJZ0Fpbk40QUsrTVdnQnYxNzBBTGFaakFQUy95d0NOZ2U4QUpzRm5BRlhLUlFESzJUWUFLS2pTQU1KaGpRQVN5WGNBQkNZVUFCSkdtd0RFV2NRQXlNVkVBRTJ5a1FBQUYvTUExRU90QUNsSjVRRDkxUkFBQUw3OEFCNlV6QUJ3enU0QUV6NzFBT3p4Z0FDejU4TUF4L2dvQUpNRmxBREJjVDRBTGdtekFBdEY4d0NJRXB3QXF5QjdBQzYxbndCSGtzSUFlekl2QUF4VmJRQnlwNUFBYStjZkFESExsZ0I1RmtvQVFYbmlBUFRmaVFEb2xKY0E0dWFFQUpreGx3Q0k3V3NBWDE4MkFMdjlEZ0JJbXJRQVo2UnNBSEZ5UWdDTlhUSUFueFc0QUx6bENRQ05NU1VBOTNRNUFEQUZIQUFOREFFQVN3aG9BQ3p1V0FCSHFwQUFkT2NDQUwzV0pBRDNmYVlBYmtoeUFKOFc3d0NPbEtZQXRKSDJBTkZUVVFEUEN2SUFJSmd6QVBWTGZnQ3lZMmdBM1Q1ZkFFQmRBd0NGaVg4QVZWSXBBRGRrd0FCdDJCQUFNa2d5QUZ0TWRRQk9jZFFBUlZSdUFBc0p3UUFxOVdrQUZHYlZBQ2NIblFCZEJGQUF0RHZiQU9wMnhRQ0grUmNBU1d0OUFCMG51Z0NXYVNrQXhzeXNBSzBVVkFDUTRtb0FpTm1KQUN4eVVBQUVwTDRBZHdlVUFQTXdjQUFBL0NjQTZuR29BR2JDU1FCazREMEFsOTJEQUtNL2x3QkRsUDBBRFlhTUFERkIzZ0NTT1owQTNYQ01BQmUzNXdBSTN6c0FGVGNyQUZ5QW9BQmFnSk1BRUJHU0FBL28yQUJzZ0s4QTIvOUxBRGlRRHdCWkdIWUFZcVVWQUdITHV3REhpYmtBRUVDOUFOTHlCQUJKZFNjQTY3YjJBTnNpdXdBS0ZLb0FpU1l2QUdTRGRnQUpPek1BRHBRYUFGRTZxZ0FkbzhJQXIrMnVBRndtRWdCdHdrMEFMWHFjQU1CV2x3QURQNE1BQ2ZEMkFDdEFqQUJ0TVprQU9iUUhBQXdnRlFEWXcxc0E5WkxFQU1hdFN3Qk95cVVBcHpmTkFPYXBOZ0Nya3BRQTNVSm9BQmxqM2dCMmpPOEFhSXRTQVB6Yk53Q3VvYXNBM3hVeEFBQ3VvUUFNKzlvQVpFMW1BTzBGdHdBcFpUQUFWMWEvQUVmL09nQnErYmtBZGI3ekFDaVQzd0NyZ0RBQVpvejJBQVRMRlFENklnWUEyZVFkQUQyenBBQlhHNDhBTnMwSkFFNUM2UUFUdnFRQU15TzFBUENxR2dCUFphZ0Ewc0dsQUFzL0R3QmJlTTBBSS9sMkFIdUxCQUNKRjNJQXhxWlRBRzl1NGdEdjZ3QUFtMHBZQU1UYXR3Q3Facm9BZHMvUEFORUNIUUN4OFMwQWpKbkJBTU90ZHdDR1NOb0E5MTJnQU1hQTlBQ3M4QzhBM2V5YUFEOWN2QURRM20wQWtNY2ZBQ3JidGdDakpUb0FBSythQUsxVGt3QzJWd1FBS1MyMEFFdUFmZ0RhQjZjQWRxb09BSHRab1FBV0Vpb0EzTGN0QVBybC9RQ0oyLzRBaWI3OUFPUjJiQUFHcWZ3QVBvQndBSVZ1RlFEOWgvOEFLRDRIQUdGbk13QXFHSVlBVGIzcUFMUG5yd0NQYlc0QWxXYzVBREcvV3dDRTEwZ0FNTjhXQU1jdFF3QWxZVFVBeVhET0FEREx1QUMvYlAwQXBBQ2lBQVZzNUFCYTNhQUFJVzlIQUdJUzBnQzVYSVFBY0dGSkFHdFc0QUNaVWdFQVVGVTNBQjdWdHdBejhjUUFFMjVmQUYwdzVBQ0ZMcWtBSGJMREFLRXlOZ0FJdDZRQTZySFVBQmIzSVFDUGFlUUFKLzkzQUF3RGdBQ05RQzBBVDgyZ0FDQ2xtUUN6b3RNQUwxMEtBTFQ1UWdBUjJzc0FmYjdRQUp2YndRQ3JGNzBBeXFLQkFBaHFYQUF1VlJjQUp3QlZBSDhVOEFEaEI0WUFGQXRrQUpaQmpRQ0h2dDRBMnYwcUFHc2x0Z0I3aVRRQUJmUCtBTG0vbmdCb2FrOEFTaXFvQUUvRVdnQXQrTHdBMTFxWUFQVEhsUUFOVFkwQUlEcW1BS1JYWHdBVVA3RUFnRGlWQU13Z0FRQngzWVlBeWQ2MkFMOWc5UUJOWlJFQUFRZHJBSXl3ckFDeXdOQUFVVlZJQUI3N0RnQ1Zjc01Bb3dZN0FNQkFOUUFHM0hzQTRFWE1BRTRwK2dEV3lzZ0E2UE5CQUh4azNnQ2JaTmdBMmI0eEFLU1h3d0IzV05RQWFlUEZBUERhRXdDNk9qd0FSaGhHQUZWMVh3RFN2ZlVBYnBMR0FLd3VYUUFPUk8wQUhENUNBR0hFaHdBcC9la0E1OWJ6QUNKOHlnQnZrVFVBQ09ERkFQL1hqUUJ1YXVJQXNQM0dBSk1Jd1FCOFhYUUFhNjJ5QU0xdW5RQStjbnNBeGhGcUFQZlBxUUFwYzk4QXRjbTZBTGNBVVFEaXNnMEFkTG9rQU9WOVlBQjAySW9BRFJVc0FJRVlEQUIrWnBRQUFTa1dBSjk2ZGdEOS9iNEFWa1h2QU5sK05nRHMyUk1BaTdxNUFNU1gvQUF4cUNjQThXN0RBSlRGTmdEWXFGWUF0S2kxQU0vTURnQVNpUzBBYjFjMEFDeFdpUUNaenVNQTFpQzVBR3RlcWdBK0twd0FFVi9NQVAwTFNnRGg5UHNBamp0dEFPS0dMQURwMUlRQS9MU3BBTy91MFFBdU5ja0FMemxoQURnaFJBQWIyY2dBZ2Z3S0FQdEthZ0F2SE5nQVU3U0VBRTZaakFCVUlzd0FLbFhjQU1ERzFnQUxHWllBR25DNEFHbVZaQUFtV21BQVAxTHVBSDhSRHdEMHRSRUEvTXYxQURTOExRQTB2TzRBNkYzTUFOMWVZQUJuanBzQWtqUHZBTWtYdUFCaFdKc0E0VmU4QUZHRHhnRFlQaEFBM1hGSUFDMGMzUUN2R0tFQUlTeEdBRm56MXdEWmVwZ0FubFRBQUUrRytnQldCdndBNVhtdUFJa2lOZ0E0clNJQVo1UGNBRlhvcWdDQ0pqZ0F5dWViQUZFTnBBQ1pNN0VBcWRjT0FHa0ZTQUJsc3ZBQWY0aW5BSWhNbHdENTBUWUFJWkt6QUh1Q1NnQ1l6eUVBUUovY0FOeEhWUURoZERvQVordENBUDZkM3dCZTFGOEFlMmVrQUxxc2VnQlY5cUlBSzRnakFFRzZWUUJaYmdnQUlTcUdBRGxIZ3dDSjQrWUE1WjdVQUVuN1FBRC9WdWtBSEEvS0FNVlppZ0NVK2lzQTA4SEZBQS9GendEYldxNEFSOFdHQUlWRFlnQWhoanNBTEhtVUFCQmhod0FxVEhzQWdDd2FBRU8vRWdDSUpwQUFlRHlKQUtqRTVBRGwyM3NBeERyQ0FDYjA2Z0QzWjRvQURaSy9BR1dqS3dBOWs3RUF2WHdMQUtSUjNBQW4zV01BYWVIZEFKcVVHUUNvS1pVQWFNNG9BQW50dEFCRW55QUFUcGpLQUhDQ1l3QitmQ01BRDdreUFLZjFqZ0FVVnVjQUlmRUlBTFdkS2dCdmZrMEFwUmxSQUxYNXF3Q0MzOVlBbHQxaEFCWTJBZ0RFT3A4QWc2S2hBSEx0YlFBNWpYb0FncmlwQUdzeVhBQkdKMXNBQURUdEFOSUFkd0Q4OUZVQUFWbE5BT0J4Z0FCQjAvZ05DLzREUVBzaCtUOEFBQUFBTFVSMFBnQUFBSUNZUnZnOEFBQUFZRkhNZURzQUFBQ0FneHZ3T1FBQUFFQWdKWG80QUFBQWdDS0M0ellBQUFBQUhmTnBOYjd6K0huc1lmWS9HVENXVzhiKzNyODlpSzlLN1hIMVA2VDgxREpvQzl1L3NCRHc4RG1WOUQ5N3R4OEtpMEhYdjRVRHVMQ1Z5Zk0vZTg5dEd1bWQwNytsWklnTUdRM3pQekcyOHZPYkhkQy9vSTRMZXlKZThqL3dlanNiSFh6SnZ6ODBHa3BLdS9FL256eXZrK1A1d3IrNjVZcndXQ1B4UDF5TmVML0xZTG0vcHdDWlFUK1Y4RC9PWDBlMm5XK3F2d0FBQUFBQUFQQS9BQUFBQUFBQUFBQ3NSNXI5akdEdVB6MzFKSi9LT0xNL29Hb0NIN09rN0QrNmtUaFVxWGJFUCtiOGFsYzJJT3MvMHVURVNndUV6ajh0cXFGajBjTHBQeHhseHZCRkJ0US83VUY0QSthRzZELzRueHNzbkk3WVAySklVL1hjWitjL3pIdXhUcVRnM0Q4TGJrbkpGbmJTUDNyR2RhQnBHZGUvM2JxbmJBckgzai9JOXI1SVJ4WG52eXU0S21WSEZmYy9BQUFBQUFBQUFBRFJkSjRBVjUyOUtvQndVZy8vL3o0bkNnQUFBR1FBQUFEb0F3QUFFQ2NBQUtDR0FRQkFRZzhBZ0phWUFBRGg5UVVZQUFBQU5RQUFBSEVBQUFCci8vLy96dnYvLzVLLy8vOEFBQUFBQUFBQUFCa0FDZ0FaR1JrQUFBQUFCUUFBQUFBQUFBa0FBQUFBQ3dBQUFBQUFBQUFBR1FBUkNoa1pHUU1LQndBQkFBa0xHQUFBQ1FZTEFBQUxBQVlaQUFBQUdSa1pBRUhoL0EwTElRNEFBQUFBQUFBQUFCa0FDZzBaR1JrQURRQUFBZ0FKRGdBQUFBa0FEZ0FBRGdCQm0vME5Dd0VNQUVHbi9RMExGUk1BQUFBQUV3QUFBQUFKREFBQUFBQUFEQUFBREFCQjFmME5Dd0VRQUVIaC9RMExGUThBQUFBRUR3QUFBQUFKRUFBQUFBQUFFQUFBRUFCQmovNE5Dd0VTQUVHYi9nMExIaEVBQUFBQUVRQUFBQUFKRWdBQUFBQUFFZ0FBRWdBQUdnQUFBQm9hR2dCQjB2NE5DdzRhQUFBQUdob2FBQUFBQUFBQUNRQkJnLzhOQ3dFVUFFR1AvdzBMRlJjQUFBQUFGd0FBQUFBSkZBQUFBQUFBRkFBQUZBQkJ2ZjhOQ3dFV0FFSEovdzBMMnhZVkFBQUFBQlVBQUFBQUNSWUFBQUFBQUJZQUFCWUFBREF4TWpNME5UWTNPRGxCUWtORVJVWUFBQUFBQWdBQUFBTUFBQUFGQUFBQUJ3QUFBQXNBQUFBTkFBQUFFUUFBQUJNQUFBQVhBQUFBSFFBQUFCOEFBQUFsQUFBQUtRQUFBQ3NBQUFBdkFBQUFOUUFBQURzQUFBQTlBQUFBUXdBQUFFY0FBQUJKQUFBQVR3QUFBRk1BQUFCWkFBQUFZUUFBQUdVQUFBQm5BQUFBYXdBQUFHMEFBQUJ4QUFBQWZ3QUFBSU1BQUFDSkFBQUFpd0FBQUpVQUFBQ1hBQUFBblFBQUFLTUFBQUNuQUFBQXJRQUFBTE1BQUFDMUFBQUF2d0FBQU1FQUFBREZBQUFBeHdBQUFOTUFBQUFCQUFBQUN3QUFBQTBBQUFBUkFBQUFFd0FBQUJjQUFBQWRBQUFBSHdBQUFDVUFBQUFwQUFBQUt3QUFBQzhBQUFBMUFBQUFPd0FBQUQwQUFBQkRBQUFBUndBQUFFa0FBQUJQQUFBQVV3QUFBRmtBQUFCaEFBQUFaUUFBQUdjQUFBQnJBQUFBYlFBQUFIRUFBQUI1QUFBQWZ3QUFBSU1BQUFDSkFBQUFpd0FBQUk4QUFBQ1ZBQUFBbHdBQUFKMEFBQUNqQUFBQXB3QUFBS2tBQUFDdEFBQUFzd0FBQUxVQUFBQzdBQUFBdndBQUFNRUFBQURGQUFBQXh3QUFBTkVBQUFBQUFBQUFZSWNEQU84TEFBRHdDd0FBOFFzQUFQSUxBQUR6Q3dBQTlBc0FBUFVMQUFEMkN3QUE5d3NBQVBnTEFBRDVDd0FBK2dzQUFQc0xBQUQ4Q3dBQWdJY0RBSlNIQXdCY2lBTUFjSWdEQUF3QUFBQUFBQUFBMUlNREFQMExBQUQrQ3dBQUJBQUFBUGovLy8vVWd3TUEvd3NBQUFBTUFBRDAvLy8vOVAvLy85U0RBd0FCREFBQUFnd0FBTXlCQXdCZ2d3TUFkSU1EQUlpREF3Q2Nnd01BOUlFREFPQ0JBd0FBQUFBQTZJZ0RBQU1NQUFBRURBQUFCUXdBQUFZTUFBQUhEQUFBQ0F3QUFBa01BQUFLREFBQUN3d0FBQXdNQUFBTkRBQUFEZ3dBQUE4TUFBQVFEQUFBQUFBQUFQQ0VBd0FSREFBQUVnd0FBUEVMQUFEeUN3QUFFd3dBQUJRTUFBRDFDd0FBOWdzQUFQY0xBQUFWREFBQStRc0FBQllNQUFEN0N3QUFGd3dBQUU1VGRETmZYekk1WW1GemFXTmZhVzl6U1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZBRTVUZEROZlh6SXhOV0poYzJsalgzTjBjbVZoYldKMVprbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFCT1UzUXpYMTh5TVROaVlYTnBZMTlwYzNSeVpXRnRTV05PVTE4eE1XTm9ZWEpmZEhKaGFYUnpTV05GUlVWRkFFNVRkRE5mWHpJeE0ySmhjMmxqWDI5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBQUFBREFBQUFBQUFBQUNjaHdNQUdBd0FBQmtNQUFEMC8vLy85UC8vLzV5SEF3QWFEQUFBR3d3QUFBUUFBQUFBQUFBQWVJZ0RBQndNQUFBZERBQUEvUC8vLy96Ly8vOTRpQU1BSGd3QUFCOE1BQUJPVTNRelgxOHlNVFJpWVhOcFkxOXBiM04wY21WaGJVbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFCWThnTUFwSU1EQUFNQUFBQUNBQUFBbkljREFBSUFBQUI0aUFNQUFnZ0FBRTVUZEROZlh6STVZbUZ6YVdOZmFXOXpTWGRPVTE4eE1XTm9ZWEpmZEhKaGFYUnpTWGRGUlVWRkFFNVRkRE5mWHpJeE5XSmhjMmxqWDNOMGNtVmhiV0oxWmtsM1RsTmZNVEZqYUdGeVgzUnlZV2wwYzBsM1JVVkZSUUJPVTNRelgxOHlNVE5pWVhOcFkxOXBjM1J5WldGdFNYZE9VMTh4TVdOb1lYSmZkSEpoYVhSelNYZEZSVVZGQUU1VGRETmZYekl4TTJKaGMybGpYMjl6ZEhKbFlXMUpkMDVUWHpFeFkyaGhjbDkwY21GcGRITkpkMFZGUlVVQVRsTjBNMTlmTWpFMVltRnphV05mYzNSeWFXNW5ZblZtU1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVNVRYemxoYkd4dlkyRjBiM0pKWTBWRlJVVUFBTkR6QXdDdGhBTUFZSWNEQUVBQUFBQUFBQUFBTklZREFDQU1BQUFoREFBQU9BQUFBUGovLy84MGhnTUFJZ3dBQUNNTUFBREEvLy8vd1AvLy96U0dBd0FrREFBQUpRd0FBQWlGQXdCc2hRTUFxSVVEQUx5RkF3RFFoUU1BNUlVREFKU0ZBd0NBaFFNQU1JVURBQnlGQXdCQUFBQUFBQUFBQU5TREF3RDlDd0FBL2dzQUFEZ0FBQUQ0Ly8vLzFJTURBUDhMQUFBQURBQUF3UC8vLzhELy8vL1Vnd01BQVF3QUFBSU1BQUJBQUFBQUFBQUFBSnlIQXdBWURBQUFHUXdBQU1ELy8vL0EvLy8vbkljREFCb01BQUFiREFBQU9BQUFBQUFBQUFCNGlBTUFIQXdBQUIwTUFBREkvLy8veVAvLy8zaUlBd0FlREFBQUh3d0FBRTVUZEROZlh6SXhPR0poYzJsalgzTjBjbWx1WjNOMGNtVmhiVWxqVGxOZk1URmphR0Z5WDNSeVlXbDBjMGxqUlVWT1UxODVZV3hzYjJOaGRHOXlTV05GUlVWRkFBQUFBTkR6QXdEc2hRTUExSU1EQURnQUFBQUFBQUFBNklZREFDWU1BQUFuREFBQXlQLy8vOGovLy8vb2hnTUFLQXdBQUNrTUFBQk1oZ01BaElZREFKaUdBd0JnaGdNQU9BQUFBQUFBQUFCNGlBTUFIQXdBQUIwTUFBREkvLy8veVAvLy8zaUlBd0FlREFBQUh3d0FBRTVUZEROZlh6SXhPV0poYzJsalgyOXpkSEpwYm1kemRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlRsTmZPV0ZzYkc5allYUnZja2xqUlVWRlJRQUFBTkR6QXdDZ2hnTUFlSWdEQUU1VGRETmZYekk0YVc5elgySmhjMlZGQUFBQUFBQUFBR2lIQXdEdkN3QUFMUXdBQUM0TUFBRHlDd0FBOHdzQUFQUUxBQUQxQ3dBQTlnc0FBUGNMQUFBdkRBQUFNQXdBQURFTUFBRDdDd0FBL0FzQUFFNVRkRE5mWHpJeE1GOWZjM1JrYVc1aWRXWkpZMFZGQUpEekF3RENnZ01BMFBNREFFaUhBd0JnaHdNQUNBQUFBQUFBQUFDY2h3TUFHQXdBQUJrTUFBRDQvLy8vK1AvLy81eUhBd0FhREFBQUd3d0FBRmp5QXdEemdnTUFBQUFBQUFFQUFBREVod01BQS9ULy93QUFBQURFaHdNQU1nd0FBRE1NQUFEUTh3TUFtSUlEQU9DSEF3QUFBQUFBNEljREFEUU1BQUExREFBQWtQTURBUFNHQXdBQUFBQUFSSWdEQU84TEFBQTJEQUFBTnd3QUFQSUxBQUR6Q3dBQTlBc0FBRGdNQUFEMkN3QUE5d3NBQVBnTEFBRDVDd0FBK2dzQUFEa01BQUE2REFBQVRsTjBNMTlmTWpFeFgxOXpkR1J2ZFhSaWRXWkpZMFZGQUFBQUFORHpBd0FvaUFNQVlJY0RBQVFBQUFBQUFBQUFlSWdEQUJ3TUFBQWREQUFBL1AvLy8vei8vLzk0aUFNQUhnd0FBQjhNQUFCWThnTUFJb01EQUFBQUFBQUJBQUFBeEljREFBUDAvLzhBQUFBQThJZ0RBQU1NQUFBN0RBQUFQQXdBQUFZTUFBQUhEQUFBQ0F3QUFBa01BQUFLREFBQUN3d0FBRDBNQUFBK0RBQUFQd3dBQUE4TUFBQVFEQUFBVGxOME0xOWZNakV3WDE5emRHUnBibUoxWmtsM1JVVUFrUE1EQUI2RUF3RFE4d01BMElnREFPaUlBd0FJQUFBQUFBQUFBQ1NKQXdCQURBQUFRUXdBQVBqLy8vLzQvLy8vSklrREFFSU1BQUJEREFBQVdQSURBRStFQXdBQUFBQUFBUUFBQUV5SkF3QUQ5UC8vQUFBQUFFeUpBd0JFREFBQVJRd0FBTkR6QXdEMGd3TUE0SWNEQUFBQUFBQzBpUU1BQXd3QUFFWU1BQUJIREFBQUJnd0FBQWNNQUFBSURBQUFTQXdBQUFvTUFBQUxEQUFBREF3QUFBME1BQUFPREFBQVNRd0FBRW9NQUFCT1UzUXpYMTh5TVRGZlgzTjBaRzkxZEdKMVprbDNSVVVBQUFBQTBQTURBSmlKQXdEb2lBTUFCQUFBQUFBQUFBRG9pUU1BU3d3QUFFd01BQUQ4Ly8vLy9QLy8vK2lKQXdCTkRBQUFUZ3dBQUZqeUF3QitoQU1BQUFBQUFBRUFBQUJNaVFNQUEvVC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84QUFRSURCQVVHQndnSi8vLy8vLy8vL3dvTERBME9EeEFSRWhNVUZSWVhHQmthR3h3ZEhoOGdJU0lqLy8vLy8vLy9DZ3NNRFE0UEVCRVNFeFFWRmhjWUdSb2JIQjBlSHlBaElpUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FBRUNCQWNEQmdVQUFBQUFBQUFBM2hJRWxRQUFBQUQvLy8vLy8vLy8vLy8vLy84QVFiQ1dEZ3RYVEVOZlExUlpVRVVBQUFBQVRFTmZUbFZOUlZKSlF3QUFURU5mVkVsTlJRQUFBQUFBVEVOZlEwOU1URUZVUlFBQVRFTmZUVTlPUlZSQlVsa0FURU5mVFVWVFUwRkhSVk1BRUlzREFCUUFBQUJETGxWVVJpMDRBRUdrbXc0TCtRTUJBQUFBQWdBQUFBTUFBQUFFQUFBQUJRQUFBQVlBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBRkFBQUFCVUFBQUFXQUFBQUZ3QUFBQmdBQUFBWkFBQUFHZ0FBQUJzQUFBQWNBQUFBSFFBQUFCNEFBQUFmQUFBQUlBQUFBQ0VBQUFBaUFBQUFJd0FBQUNRQUFBQWxBQUFBSmdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFMQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBWVFBQUFHSUFBQUJqQUFBQVpBQUFBR1VBQUFCbUFBQUFad0FBQUdnQUFBQnBBQUFBYWdBQUFHc0FBQUJzQUFBQWJRQUFBRzRBQUFCdkFBQUFjQUFBQUhFQUFBQnlBQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSGNBQUFCNEFBQUFlUUFBQUhvQUFBQmJBQUFBWEFBQUFGMEFBQUJlQUFBQVh3QUFBR0FBQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQUJuQUFBQWFBQUFBR2tBQUFCcUFBQUFhd0FBQUd3QUFBQnRBQUFBYmdBQUFHOEFBQUJ3QUFBQWNRQUFBSElBQUFCekFBQUFkQUFBQUhVQUFBQjJBQUFBZHdBQUFIZ0FBQUI1QUFBQWVnQUFBSHNBQUFCOEFBQUFmUUFBQUg0QUFBQi9BRUdrcHc0TCtRTUJBQUFBQWdBQUFBTUFBQUFFQUFBQUJRQUFBQVlBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBRkFBQUFCVUFBQUFXQUFBQUZ3QUFBQmdBQUFBWkFBQUFHZ0FBQUJzQUFBQWNBQUFBSFFBQUFCNEFBQUFmQUFBQUlBQUFBQ0VBQUFBaUFBQUFJd0FBQUNRQUFBQWxBQUFBSmdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFMQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBUVFBQUFFSUFBQUJEQUFBQVJBQUFBRVVBQUFCR0FBQUFSd0FBQUVnQUFBQkpBQUFBU2dBQUFFc0FBQUJNQUFBQVRRQUFBRTRBQUFCUEFBQUFVQUFBQUZFQUFBQlNBQUFBVXdBQUFGUUFBQUJWQUFBQVZnQUFBRmNBQUFCWUFBQUFXUUFBQUZvQUFBQmJBQUFBWEFBQUFGMEFBQUJlQUFBQVh3QUFBR0FBQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIQUFBQVNBQUFBRWtBQUFCS0FBQUFTd0FBQUV3QUFBQk5BQUFBVGdBQUFFOEFBQUJRQUFBQVVRQUFBRklBQUFCVEFBQUFWQUFBQUZVQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnQUFBSHNBQUFCOEFBQUFmUUFBQUg0QUFBQi9BRUdncnc0TFlTQUFBQUFKQUFBQUNnQUFBQTBBQUFBTEFBQUFEQUFBQUlVQUFBQUFJQUFBQVNBQUFBSWdBQUFESUFBQUJDQUFBQVVnQUFBR0lBQUFDQ0FBQUFrZ0FBQUtJQUFBS0NBQUFDa2dBQUJmSUFBQUFEQUFBQUFBQUFBQUNBQUFWZ0VBQURrQVFaU3dEZ3ZNRGdFZ0FBQUE0UC8vQUw4ZEFBRG5BZ0FBZVFBQUFpUUFBQUVCQUFBQS8vLy9BQUFBQUFFQ0FBQUEvdi8vQVRuLy93QVkvLzhCaC8vL0FOVCsvd0REQUFBQjBnQUFBYzRBQUFITkFBQUJUd0FBQWNvQUFBSExBQUFCendBQUFHRUFBQUhUQUFBQjBRQUFBS01BQUFIVkFBQUFnZ0FBQWRZQUFBSGFBQUFCMlFBQUFkc0FBQUE0QUFBREFBQUFBTEgvL3dHZi8vOEJ5UC8vQWlna0FBQUFBQUFCQVFBQUFQLy8vd0F6Ly84QUp2Ly9BWDcvL3dFcktnQUJYZi8vQVNncUFBQS9LZ0FCUGYvL0FVVUFBQUZIQUFBQUh5b0FBQndxQUFBZUtnQUFMdi8vQURMLy93QTIvLzhBTmYvL0FFK2xBQUJMcFFBQU1mLy9BQ2lsQUFCRXBRQUFMLy8vQUMzLy93RDNLUUFBUWFVQUFQMHBBQUFyLy84QUt2Ly9BT2NwQUFCRHBRQUFLcVVBQUx2Ly93QW4vLzhBdWYvL0FDWC8vd0FWcFFBQUVxVUFBaVJNQUFBQUFBQUJJQUFBQU9ELy93RUJBQUFBLy8vL0FGUUFBQUYwQUFBQkpnQUFBU1VBQUFGQUFBQUJQd0FBQU5yLy93RGIvLzhBNGYvL0FNRC8vd0RCLy84QkNBQUFBTUwvL3dESC8vOEEwZi8vQU1yLy93RDQvLzhBcXYvL0FMRC8vd0FIQUFBQWpQLy9BY1QvL3dDZy8vOEIrZi8vQWhwd0FBRUJBQUFBLy8vL0FTQUFBQURnLy84QlVBQUFBUThBQUFEeC8vOEFBQUFBQVRBQUFBRFEvLzhCQVFBQUFQLy8vd0FBQUFBQXdBc0FBV0FjQUFBQUFBQUIwSmNBQVFnQUFBRDQvLzhDQllvQUFBQUFBQUZBOVA4QW51Zi9BTUtKQUFEYjUvOEFrdWYvQUpQbi93Q2M1LzhBbmVmL0FLVG4vd0FBQUFBQU9Jb0FBQVNLQUFEbURnQUJBUUFBQVAvLy93QUFBQUFBeGYvL0FVSGkvd0lkandBQUNBQUFBZmovL3dBQUFBQUFWZ0FBQWFyLy93QktBQUFBWkFBQUFJQUFBQUJ3QUFBQWZnQUFBQWtBQUFHMi8vOEI5Ly8vQU52ai93R2MvLzhCa1AvL0FZRC8vd0dDLy84Q0Jhd0FBQUFBQUFFUUFBQUE4UC8vQVJ3QUFBRUJBQUFCbytML0FVSGYvd0c2My84QTVQLy9BZ3V4QUFFQkFBQUEvLy8vQVRBQUFBRFEvLzhBQUFBQUFRblcvd0VhOGY4QkdkYi9BTlhWL3dEWTFmOEI1TlgvQVFQVy93SGgxZjhCNHRYL0FjSFYvd0FBQUFBQW9PUC9BQUFBQUFFQkFBQUEvLy8vQWd5OEFBQUFBQUFCQVFBQUFQLy8vd0c4V3Y4Qm9BTUFBZngxL3dIWVd2OEFNQUFBQWJGYS93RzFXdjhCdjFyL0FlNWEvd0hXV3Y4QjYxci9BZEQvL3dHOVd2OEJ5SFgvQUFBQUFBQXdhUDhBWVB6L0FBQUFBQUVnQUFBQTRQLy9BQUFBQUFFb0FBQUEyUC8vQUFBQUFBRkFBQUFBd1AvL0FBQUFBQUVnQUFBQTRQLy9BQUFBQUFFZ0FBQUE0UC8vQUFBQUFBRWlBQUFBM3YvL01Bd3hEWGdPZncrQUVJRVJoaEtKRTRvVGpoU1BGWkFXa3hPVUY1VVlsaG1YR3BvYm5CbWRISjRkbng2bUg2a2ZyaCt4SUxJZ3R5Ry9Jc1VqeUNQTEk5MGs4aVAySmZjbUlDMDZMajB2UGpBL01VQXhRekpFTTBVMFVEVlJObEkzVXpoVU9WazZXenRjUEdFOVl6NWxQMlpBYUVGcFFtcEFhME5zUkc5Q2NVVnlSblZIZlVpQ1NZZEtpVXVLVEl0TWpFMlNUcDFQbmxCRlYzc2RmQjE5SFg5WWhsbUlXb2xhaWxxTVc0NWNqMXlzWGExZXJsNnZYc0pmekdETlljNWh6MkxRWTlGazFXWFdadGRuOEdqeGFmSnE4MnYwYlBWdCtXNzlMZjR0L3kxUWFWRnBVbWxUYVZScFZXbFdhVmRwV0dsWmFWcHBXMmxjYVYxcFhtbGZhWUlBZ3dDRUFJVUFoZ0NIQUlnQWlRREFkYzkyZ0ltQmlvS0xoWXlHalhDZGNaMTJubmVlZUo5NW4zcWdlNkI4b1gyaHM2SzZvN3VqdktTK3BjT2l6S1RhcHR1bTVXcnFwK3VuN0c3em92aW8rYWo2cWZ1cC9LUW1zQ3F4SzdKT3M0UUlZcnBqdTJTOFpiMW12bTIvYnNCdndYRENmc04vdzMzUGpkQ1UwYXZTck5PdDFMRFZzZGF5MThUWXhkbkcyZ2NJQ1FvTERBWUdCZ1lHQmdZR0JnWU5CZ1lPQmdZR0JnWUdCZ1lQRUJFU0JoTUdCZ1lHQmdZR0JnWUdGQlVHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZV0Z3WUdCaGdHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmhrR0JnWUdHZ1lHQmdZR0JnWWJCZ1lHQmdZR0JnWUdCZ1ljQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JoMEdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmg0R0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdBRUhQdnc0TEZDUXJLeXNyS3lzckt3RUFWRlpXVmxaV1ZsWldBRUgydnc0TG53TVlBQUFBS3lzckt5c3JLd2NySzF0V1ZsWldWbFpXU2xaV0JURlFNVkF4VURGUU1WQXhVREZRTVZBa1VIa3hVREZRTVRoUU1WQXhVREZRTVZBeFVERlFNVkJPTVFKT0RRMU9BMDRBSkc0QVRqRW1ibEZPSkZCT09SU0JHeDBkVXpGUU1WQU5NVkF4VURGUUcxTWtVREVDWEh0Y2UxeDdYSHRjZXhSNVhIdGNlMXd0SzBrRFNBTjRYSHNVQUpZS0FTc29CZ1lBS2dZcUtpc0h1N1VySGdBckJ5c3JLd0VyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt3RXJLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lvckt5c3JLeXNyS3lzckt5c3J6VWJOS3dBbEt3Y0JCZ0ZWVmxaV1ZsWlZWbFlDSklHQmdZR0JGWUdCZ1FBQUt3Q3kwYkxSc3RHeTBRQUF6Y3dCQU5mWDE5ZlhnNEdCZ1lHQmdZR0JnWUdzckt5c3JLeXNyS3lzSEFBQUFBQUFNVkF4VURGUU1WQXhVREVDQUFBeFVERlFNVkF4VURGUU1WQXhVREZRTVZCT01WQXhVRTR4VURGUU1WQXhVREZRTVZBeFVERUNoNmFIcG9lbWg2YUhwb2VtaDZhSHBpb3JLeXNyS3lzckt5c3JLeXNBQUFCVVZsWldWbFpXVmxaV1ZsWldBRUh6d3c0TElWUldWbFpXVmxaV1ZsWldWbFlNQUF3cUt5c3JLeXNyS3lzckt5c3JLd2NxQVFCQnljUU9DM2NxS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXRXVm15QkZRQXJLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzSGJBTkJLeXRXVmxaV1ZsWldWbFpXVmxaV1ZpeFdLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyQVFCQjZNVU9Dd2dNYkFBQUFBQUFCZ0JCbHNZT0MrZ0NCaVVHSlFZbEJpVUdKUVlsQmlVR0pRWWxCaVVHSlFZbEJpVUdKUVlsQmlVR0pRWWxCaVVHSlFZbEJpVUdKUVlsQmlWV2VwNG1CaVVHSlFZbEJpVUdKUVlsQmlVR0pRWWxCaVVHSlFZbEJpVUdKUVlsQmdFckswOVdWaXdyZjFaV09Tc3JWVlpXS3l0UFZsWXNLMzlXVm9FM2RWdDdYQ3NyVDFaV0Fxd0VBQUE1S3l0VlZsWXJLMDlXVml3cksxWldNaE9CVndCdmdYN0oxMzR0Z1lFT2ZqbC9iMWNBZ1lGK0ZRQitBeXNyS3lzckt5c3JLeXNyS3djckpDdVhLeXNyS3lzckt5c3JLaXNyS3lzclZsWldWbGFBZ1lHQmdUbTdLaXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzQmdZR0JnWUdCZ1lHQmdZR0JnWUdCeWF5c3JLeXNyS3lzckt5c3JLeXNyTkFOQUU0eEFyVEJ3ZGZYSkZBeFVERlFNVkF4VURGUU1WQXhVREZRTVZBeFVERlFNVkF4VURGUU1WQXhVTmZYVThGSDFOZlgxd1VyS3lzckt5c3JLeXNyS3lzSEFRQUJBRUhaeVE0TEgwNHhVREZRTVZBeFVERlFNVkF4VUEwQUFBQUFBQ1JRTVZBeFVERlFNVkFBUVpyS0RndFdLeXNyS3lzckt5c3JLeXQ1WEh0Y2UwOTdYSHRjZTF4N1hIdGNlMXg3WEh0Y2UxeDdYQzBySzNrVVhIdGNMWGtxWENkY2UxeDdYSHVrQUFxMFhIdGNlMDhES2lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3dFQVFZdkxEZ3NCU0FCQmxjc09DeHNxS3lzckt5c3JLeXNyS3lzckt5c3JLeXNyS3lzckt5c3JLeXNBUWRITERnc1VLeXNyS3lzckt5c0hBRWhXVmxaV1ZsWldWZ0lBUVp6TURnc2JLeXNyS3lzckt5c3JLeXNySzFWV1ZsWldWbFpXVmxaV1ZsWU9BRUhXekE0TEdpUXJLeXNyS3lzckt5c3JLd2NBVmxaV1ZsWldWbFpXVmxaV0FFR2N6UTRMSnlRckt5c3JLeXNyS3lzckt5c3JLeXNyQndBQUFBQldWbFpXVmxaV1ZsWldWbFpXVmxaV1ZnQkIvYzBPQ3hZcUt5c3JLeXNyS3lzcksxWldWbFpXVmxaV1ZsWU9BRUd6emc0TEZpb3JLeXNyS3lzckt5c3JWbFpXVmxaV1ZsWldWZzRBUWZUT0Rnc1hLeXNyS3lzckt5c3JLeXRWVmxaV1ZsWldWbFpXVmc0QVFkSFBEZ3NGQmlkUmIzY0FRZURQRGdzU2ZBQUFmd0FBQUFBQUFBQUFnNDZTbHdDcUFFSDh6dzRMQXJURUFFSDIwQTRMQnNiSkFBQUEyd0JCejlFT0N3N2VBQUFBQU9FQUFBQUFBQUFBNUFCQjZORU9Dd0huQUVHKzBnNExBZW9BUWJuVERnc0I3UUJCME5NT0M0QUVFaEVURkJVV0Z4Z1pHaHNjSFI0ZklDRVJJaU1rRVNVbUp5Z3BLaXNzRVMwdUx4QVFNQkFRRUJBUUVCQXhNak1RTkRVUUVCRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFMkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUk54RVJFUkU0RVRrNk96dzlQaEVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRS9FQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVVQkJFVUpEUkVWR1IwaEpTaEZMVEUxT1QxQlJFRkpUVkZWV1YxaFpXbHRjWFJCZVgyQVFFUkVSWVdKakVCQVFFQkFRRUJBUUVCRVJFUkZrRUJBUUVCQVFFQkFRRUJBUUVCQVFFUkZsRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFUkZtWnhBUWFHa1JFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVdvUkVXc1FFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFV3h0RUJBUUVCQVFFQkFRYmhBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFiM0J4Y2hBUUVCQVFFQkFRYzNSMUVCQVFFQkIyZHhBUUVCQjRFQkI1RUJBUUVCQVFFQkFRRUJBUUVCQUFRZkRYRGd0ZS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhBQUFBQUFBQUFBUDcvL3dmKy8vOEhBQUFBQUFBRUlBVC8vMy8vLy85Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhQL0F3QWZVQUJCMk5nT0M2MEZJQUFBQUFBQTM3eEExLy8vKy8vLy8vLy8vLy8vLzcvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3dQOC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLysvLy8vZndMLy8vLy8vd0VBQUFBQS83KzJBUC8vLzRjSEFBQUEvd2YvLy8vLy8vLy8vdi9ELy8vLy8vLy8vLy8vLy8vLzd4Lys0ZitmQUFELy8vLy8vLzhBNFAvLy8vLy8vLy8vLy8vLy93TUEvLy8vLy84SE1BVC8vLy84L3g4QUFQLy8vd0gvQndBQUFBQUFBUC8vM3o4QUFQRC8rQVAvLy8vLy8vLy8vLy92LzkvaC84Ly8vdi92bi9uLy8vM0Y0NTlaZ0xEUC93TVE3b2Y1Ly8vOWJjT0hHUUpld1A4L0FPNi8rLy8vL2UzanZ4c0JBTS8vQUI3dW4vbi8vLzN0NDU4WndMRFAvd0lBN01jOTFoakgvOFBISFlFQXdQOEFBTy9mL2YvLy9mL2ozeDFnQjgvL0FBRHYzLzMvLy8zdjQ5OGRZRURQL3dZQTc5LzkvLy8vLytmZlhmQ0F6LzhBL096L2Yvei8vL3N2ZjRCZi84RC9EQUQrLy8vLy8zLy9CejhnL3dNQUFBQUExdmYvLzYvLy96dGZJUC96QUFBQUFBRUFBQUQvQXdBQS8vNy8vLzhmL3Y4RC8vLysvLy8vSHdBQUFBQUFBQUFBLy8vLy8vLy9mL24vQS8vLy8vLy8vLy8vL3ovLy8vLy92eUQvLy8vLy8vZi8vLy8vLy8vLy8vODlmejMvLy8vLy96My8vLy8vUFg4OS8zLy8vLy8vLy8vL1BmLy8vLy8vLy8vL0J3QUFBQUQvL3dBQS8vLy8vLy8vLy8vLy96OC8vdi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9uLy8vL3YvL0IvLy8vLy8vLy8vLy84Zi9BZi9mRHdELy93OEEvLzhQQVAvZkRRRC8vLy8vLy8vUC8vOEJnQkQvQXdBQUFBRC9BLy8vLy8vLy8vLy8vLy8vQWYvLy8vLy9CLy8vLy8vLy8vLy9Qd0QvLy85Ly93Ly9BY0QvLy8vL1B4OEEvLy8vLy84UC8vLy9BLzhEQUFBQUFQLy8vdy8vLy8vLy8vLy9mLzcvSHdEL0EvOERnQUJCa040T0M0QUIvLy8vLy8vLzcvL3ZELzhEQUFBQUFQLy8vLy8vOC8vLy8vLy8vNy8vQXdELy8vLy8vLzkvQVAvai8vLy8vLzgvL3dILy8vLy8vK2NBQUFBQUFONXZCUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUFBQUNBL3g4QS8vOC9QLy8vLy84L1AvK3EvLy8vUC8vLy8vLy8vOTlmM0IvUEQvOGYzQjhBUVo3ZkRnc0dBb0FBQVA4ZkFFR3czdzRMRW9UOEx6NVF2Zi96NEVNQUFQLy8vLy8vQVFCQjV0OE9DMURBLy8vLy8vLy9Bd0FBLy8vLy8vOS8vLy8vLy85Ly8vLy8vLy8vLy8vLy8vLy8vLy8vL3g5NERBRC8vLy8vdnlELy8vLy8vLy8vZ0FBQS8vOS9BSDkvZjM5L2YzOS8vLy8vL3dBQUFBQUFnQUJCME9BT0MxZmdBQUFBL2dNK0gvNy8vLy8vLy8vLy8vOS80UDcvLy8vLy8vLy8vLy8vOStELy8vLy8vLzcvLy8vLy8vLy8vLy8vZndBQS8vLy9Cd0FBQUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3o4QVFiRGhEZ3VBQS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUEvLy8vLy8vLy8vLy8vLy8vLy8vLy8vOGZBQUFBQUFBQUFBRC8vLy8vL3ovL0gvLy8vdzhBQVAvLy8vLy9mL0NQLy8vLy8vLy8vLy8vLy8vLy8vOEFBQUFBZ1AvOC8vLy8vLy8vLy8vLy8vLy8rZi8vLy8vLy8zd0FBQUFBQUlEL3YvLy8vLzhBQUFELy8vLy8vLzhQQVAvLy8vLy8vLy8vTHdEL0F3QUEvT2ovLy8vLy93Zi8vLy8vQndELy8vOGYvLy8vLy8vLzkvOEFnUDhELy8vL2YvLy8vLy8vLzM4QS96Ly9BLy8vZi96Ly8vLy8vLy8vZndVQUFEai8vendBZm41K0FIOS8vLy8vLy8vMy93RC8vLy8vLy8vLy8vLy8vLy8vLy84SC93UC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vdzhBLy85LytQLy8vLy8vRC8vLy8vLy8vLy8vLy8vLy8vOC8vLy8vLy8vLy8vLy8vLy8vL3dNQUFBQUFmd0Q0NFAvOWYxL2IvLy8vLy8vLy8vLy8vLy8vL3dNQUFBRDQvLy8vLy8vLy8vLy8vLy8vUHdBQS8vLy8vLy8vLy8vOC8vLy8vLy8vQUFBQUFBRC9Ed0JCdnVRT0MySGYvLy8vLy8vLy8vLy8vLy8vLy8vLy94OEFBUDhEL3YvL0IvNy8vd2ZBLy8vLy8vLy8vLy8vLzMvOC9Qd2NBQUFBQVAvdi8vOS8vLyszL3ovL1B3QUFBQUQvLy8vLy8vLy8vLy8vLy8vLy8vOEhBQUFBQUFBQUFBRC8vLy8vLy84ZkFFSEE1UTRMWGYvLy94Ly8vLy8vLy84QkFBQUFBQUQvLy8vL0FPRC8vLzhILy8vLy8vOEgvLy8vUC8vLy8vOFAvejRBQUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOC8vd1AvLy8vL0QvLy8vLzhQLy8vLy8vOEEvLy8vLy8vL0R3QkJzT1lPQ3czLy8vLy8vLzkvQVAvL1B3RC9BRUhRNWc0TGN6LzkvLy8vLzcrUi8vOC9BUC8vZndELy8vOS9BQUFBQUFBQUFBRC8vemNBLy84L0FQLy8vd01BQUFBQUFBQUFBUC8vLy8vLy8vL0FBQUFBQUFBQUFBQnY4Ty8rLy84L0FBQUFBQUQvLy84Zi8vLy9Id0FBQUFELy92Ly9Id0FBQVAvLy8vLy8vejhBLy84L0FQLy9Cd0QvL3dNQVFkRG5EZ3NvLy8vLy8vLy8vLy8vQVFBQUFBQUFBUC8vLy8vLy93Y0EvLy8vLy8vL0J3RC8vLy8vL3dEL0F3QkJrT2dPQ3duLy8vOGZnQUQvL3o4QVFhem9EZ3R4Ly85L0FQLy8vLy8vLy8vL1B3QUFBTUQvQUFEOC8vLy8vLy8vQVFBQS8vLy9BZjhELy8vLy8vLy94Lzl3QVAvLy8vOUhBUC8vLy8vLy8vLy9IZ0QvRndBQUFBRC8vL3YvLy8rZlFBQUFBQUFBQUFBQWY3My92LzhCLy8vLy8vLy8vd0gvQSsrZitmLy8vZTNqbnhtQjRBOEFRYkRwRGdzYy8vLy8vLy8vLy8rN0IvK0RBQUFBQVAvLy8vLy8vLy8vc3dEL0F3QkI0T2tPQ3pqLy8vLy8vLzgvZndBQUFEOEFBQUFBLy8vLy8vLy8vMzhSQVA4REFBQUFBUC8vLy8vLy96OEIvd01BQUFBQUFBRC8vLy9uL3dmL0F3QkJzT29PQ3dqLy8vLy8vLy8vQVFCQnhPb09Dd3ovLy8vLy8vLy8vLzhEQUlBQVFlVHFEZ3RELy96Ly8vLy8vL3dhQUFBQS8vLy8vLy8vNTM4QUFQLy8vLy8vLy8vLy95QUFBQUFBLy8vLy8vLy8vd0gvL2YvLy8vOS9md0VBL3dNQUFQei8vLy84Ly8vK2Z3QkJzT3NPQ3haLysvLy8vLzkvdE1zQS93Ty8vZi8vLzM5N0FmOERBRUhzNnc0TEdQLy9md0QvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQXdCQmtPd09DeW4vLy8vLy8vLy8vLy8vLy8vL2Z3QUEvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0R3QkIwT3dPQ3diLy8vLy8vMzhBUWZEc0Rnc0ovLy8vLy8vLy8vOS9BRUdRN1E0TER2Ly8vLy8vLy84Qi8vLy9mLzhEQUVHcTdRNExHUC8vL3o4QUFQLy8vLy8vL3dBQUR3RC9BL2ovLytELy93QkIyTzBPQ3dqLy8vLy8vLy8vL3dCQjhPME9DN1FCLy8vLy8vLy8vLy8vaC8vLy8vLy8vLytBLy84QUFBQUFBQUFBQUFzQUFBRC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQVAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93Y0EvLy8vZndBQUFBQUFBQWNBOEFELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9ELy8vLy8vLy8vLy8vLy8vLy84SC94Ly9BZjlEQUVHdzd3NExoZ0gvLy8vLy8vLy8vLy8vMy8vLy8vLy8vLy8vMzJUZS8rdnYvLy8vLy8vLy83L24zOS8vLy85N1gvejkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84Ly8vLy8vZi8vOS8vLy8vZi8vOS8vLy8vZi8vOS8vLy8vZi8vLy8vMy8vLy85Ly8vM3ovLy8vLy8vLzMvLy8vbmJCd0JCMFBBT0N3ci8vLy8vL3grQVAvOURBRUdJOFE0TE5QLy8vLy8vRC84RC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vSHdBQUFBQUFBQUQvLy8vLy8vLy8vNDhJL3dNQVFkRHhEZ3NZNy8vLy81Yis5d3FFNnBhcWx2ZjNYdi83L3cvdSsvOFBBRUgyOFE0TERQLy8vd1AvLy84RC8vLy9Bd0JCa1BJT0M0QUVFaEFURkJVV0Z4Z1pHaHNjSFI0ZklDRVFFQ0lqRUNRbEppY29LU29yRUN3dExoRVJMeEVSRVJFUkVUQXhNak0wTlRZM0VSQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBNEVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkE1RURvN1BEMCtQeEFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQkFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJCQkVCQkNFRU5FUlJCR1IwZ1FTUkFRU2t0TVRVNFFUMUJSVWxOVVZWWlhXRmxhV3hCY1hWNWZFQkFRRUdBUUVCQVFFQkFRRUJBUUVCQVFFQkJoRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkJpWXhBUVpHVVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRWmhBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJCbmFHbHFFQkJyYkJFUmJSQVFFQkFRRUc1dkVCQVFFQkJ3Y1JBUWNuTjBFSFYyZHhFUkVYaDVlbnQ4RUJBUUVCQUFRYkQyRGdzLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhBQUFBQS92OEEvQUVBQVBnQkFBQjRBQUFBQVAvNzMvc0FBSUFBQUFDQUFFR0k5dzRMR1R3QS9QL2dyLy8vLy8vLy8vLy8vLy9mLy8vLy8vOGdRTEFBUWE3M0Rnc0JRQUJCd1BjT0N3TDhBd0JCMi9jT0N5UDhBQUFBQUFEbS92Ly8vd0JBU1FBQUFBQUFHQUQvL3dEWUFBQUFBQUFBQUFFQVBBQkJpdmdPQ3hBUTRBRWVBR0QvdndBQUFBQUFBUDhIQUVHdCtBNExEL2pQNHdBQUFBTUFJUDkvQUFBQVRnQkJ5dmdPQ3dRSUFBZjhBRUhYK0E0TFNCQUFJQjRBTUFBQkFBQUFBQUFBQUFBUUFDQUFBQUFBL0c4QUFBQUFBQUFBRUFBZ0FBQUFBRUFBQUFBQUFBQUFBQkFBSUFBQUFBQUQ0QUFBQUFBQUFBQVFBQ0FBQUFBQS9RQkJxZmtPQ3lFZ0FBQUFBUDhIRUFBQUFBQUFBQUFBSUFBQUFBQ0EveEFBQUFBQUFBQVFBQ0FBUWRmNURnc0pHQUNnQUg4QUFQOERBRUhwK1E0TEV3UUFBQUFBRUFBQUFBQUFBSUFBZ01EZkFBd0FRWWY2RGdzbEJBQWZBQUFBQUFBQS92Ly8vd0Q4Ly84QUFBQUFBQUFBQVB3QUFBQUFBQURBLzkvL0J3QkJ0dm9PQ3dTQUJnRDhBRUhEK2c0TEFjQUFRYy82RGdzQkNBQkIyL29PQ3duZy8vLy9Id0FBL3dNQVFmRDZEZ3NCQVFCQm5mc09Dd2RnQUFBQkFBQVlBRUd0K3c0TENqZ0FBQUFBRUFBQUFIQUFRY2I3RGdzTU1BQUEvbjh2QUFEL0EvOS9BRUgzK3c0TEFnNHhBRUdML0E0TEhjVC8vLy8vQUFBQXdBQUFBQUFBQUFBQUFRRGdud0FBQUFCL1AvOS9BRUcyL0E0TE9oQUFFQUFBL1AvLy94OEFBQUFBQUF3QUFBQUFBQUJBQUF6d0FBQUFBQUFBZ1BnQUFBQUFBQUFBd0FBQUFBQUFBQUFBL3dELy8vOGhrQU1BUVlqOURnc0kvLy8vLzM4QTRQc0FRYWY5RGd1SkFhQUQ0QURnQU9BQVlJRDQvLy8vL1AvLy8vLy9mOS8vOFgvL2Z3QUEvLy8vL3dBQS8vLy8vd0VBZXdQUXdhOUNBQXdmdlAvL0FBQUFBQUFPLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vZndBQUFQOEhBQUQvLy8vLy8vLy8vLy8vUHdBQUFBQUFBUHovLy8vLy8vLy8vLy8vLy8vLy8vLy96Ly8vL3ovLy8vLy8vLy8vLy8vLy8vLy9BRUhNL2c0TEJPQ0hBLzRBUWQ3K0Rnc0NBWUFBUWZEK0RndEkvLy8vLy85Ly8vLy8vd0FBQUFBQUFQLy8vL3YvLy8vLy8vLy8vLy8vRHdELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3o4QUFBRC9EeDcvLy84Qi9NSGdBRUhEL3c0TEFoNEJBRUhQL3c0TEFRZ0FRZUwvRGdzdS8vOEFBQUFBLy8vLy93OEFBQUQvLy85Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QkJxSUFQQ3dqLy8vLy8vLy8vL3dCQndvQVBDeEQvLy8vLy8vOS9BQUFBQUFBQXdBRGdBRUhkZ0E4TEE0QVBjQUJCN29BUEN3Zi9BUC8vZndBREFFR0JnUThMQVFZQVFaQ0JEd3NQUUFBQUFBQVAvd01BQUFBQUFBRHdBRUdvZ1E4TEZCREFBQUQvL3dNWEFBQUFBQUQ0QUFBQUFBaUFBRUhHZ1E4TEJnZ0EvejhBd0FCQjI0RVBDeFR3QUFDQUF3QUFBQUFBQUFDQUFnQUF3QUFBUXdCQis0RVBDd0VJQUVHTmdnOExCRGdBQUFFQVFjK0NEd3NIZ0FBQUFBQUFBZ0JCNW9JUEN3UDgvd01BUWZlQ0R3c0J3QUJCajRNUEN3OHcvLy8vQS8vLy8vLy8vL2YvZnc4QVFhK0REd3NPZ1A3L0FQd0JBQUQ0QVFBQStEOEFRY3lERHdza2YzOEFNSWYvLy8vLy80Ly9BQUFBQUFBQTRQLy9mLzhQQVFBQUFBQUEvLy8vLy84L0FFR01oQThMQ2YvLy93OEFBQUFBRHdCQm80UVBDd2lBQUFBQUFBQUFBUUJCdllRUEN3R0FBRUhhaEE4TERJRC9BQUNBL3dBQUFBQ0Evd0JCNzRRUEN3bjRBQURBandBQUFJQUFRWWVGRHdzL01QLy8vUC8vLy8vL0FBQUFBQUFBQUlmL0FmOEJBQUFBNEFBQUFPQUFBQUFBQUFFQUFHRDRmd0FBQUFBQUFBQUEvZ0FBQVA4QUFBRC9BQUFBSGdEK0FFSHZoUThMQWZ3QVFmeUZEd3NFLy8vL2Z3QkJrNFlQQ3duZ2Z3QUFBTUQvL3dNQVFiaUdEd3NTd0QvOC96OEFBSUFEQUFBQUFBQUEvZ01nQUVIV2hnOExDUmdBRHdBQUFBQUFPQUJCNklZUEN4RGhQd0RvL3Y4ZkFBQUFBQUFBQUdBL0FFR0ZodzhMQ1FJQUFBQUFBQUFBQmdCQmw0Y1BDd2dZQUNBQUFNQWZId0JCdUljUEN3UkUrQUJvQUVISWh3OExBVXdBUWVlSER3c0VnUC8vL3dCQjk0Y1BDeENBRGdBQUFQOGZBQUFBQUFBQUFBREFBRUdWaUE4TEF3Z0EvQUJCdDRnUEN3RU9BRUhOaUE4TEF2d0hBRUhzaUE4TEFRVUFRZmFJRHdzREdJRC9BRUdEaVE4TEF0OEhBRUdYaVE4TENJQStBQUQ4L3g4REFFRzRpUThMQVRRQVFjS0pEd3NCZ0FCQjdva1BDd0tBQVFCQmlJb1BDd2ovLy8vLy8vOERnQUJCbm9vUEN3RWZBRUcyaWc4TEF2OEJBRUhkaWc4TEFjQUFRZTZLRHdzUFB3QUFBQUFBQUFELy96QUFBUGdEQUVHZ2l3OExCUC8vL3djQVFjeUxEd3NCQkFCQjQ0c1BDd0t3RHdCQjhJc1BDMG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84L0FQLy8vLzkvL3YvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BUUFBLy8vLy8vLy8vLzgvQUVITWpBOExGUC8vRHdELy8vLy8vLy8vLy8vL2Z3RC8vLzhCQUVHSWpROExQZ0lBQUFnQUFBQUlBQUFnQUFBQUlBQUFnQUFBQUlBQUFBQUNBQUFBQWdBQUNBQUFBQUFBQUFELy8vLy8vLy8vLy8vLy8vLy8vLy8vL3c4QStQNy9BRUhXalE4TEJIOEFBSUFBUVkyT0R3c0Q4QUNBQUVHb2pnOExBNEQvZndCQnVJNFBDd1J3QndEQUFFSGVqZzhMQ2Y3Ly8vLy8vLy8vSHdCQjhJNFBDd2orLy8vLy8vLy9Qd0JCcm84UEMwOERBUC8vLy8vL0QvLy8vLy8vLy8vLy8vLy8vdzhBLzMvKy8vNy8vdi8vL3o4QS94Ly8vLy8vQUFBQS9BQUFBQndBQUFEOC8vLy9Id0FBQUFBQUFNRC8vLzhIQVAvLy8vLy9ELzhCQXdBL0FFR1FrQThMVnYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vUHdEL0gvOEgvLy8vLy8vLy8vLy8vLy8vLy84UEFQLy8vLy8vLy8vLy8vLy9BZjhQQUFEL0QvLy8vLy8vLy84QS93UC8vLy8vL3dELy8vOC9BRUh3a0E4TE0vL3YvLy8vLy8vLy8vLy8vLy8vZS96Ly8vLy81OGYvLy8vbi8vLy8vLy8vLy8vLy8vLy8vLy8vL3c4QS96OFBCd2NBUHdCQnNKRVBDNEVDQWdBQXdBTUFBTUFFQUFEQUJRQUF3QVlBQU1BSEFBREFDQUFBd0FrQUFNQUtBQURBQ3dBQXdBd0FBTUFOQUFEQURnQUF3QThBQU1BUUFBREFFUUFBd0JJQUFNQVRBQURBRkFBQXdCVUFBTUFXQUFEQUZ3QUF3QmdBQU1BWkFBREFHZ0FBd0JzQUFNQWNBQURBSFFBQXdCNEFBTUFmQUFEQUFBQUFzd0VBQU1NQ0FBRERBd0FBd3dRQUFNTUZBQUREQmdBQXd3Y0FBTU1JQUFERENRQUF3d29BQU1NTEFBREREQUFBd3cwQUFOTU9BQURERHdBQXd3QUFETHNCQUF6REFnQU13d01BRE1NRUFBemJBQUFBQURBeE1qTTBOVFkzT0RsaFltTmtaV1pCUWtORVJVWjRXQ3N0Y0ZCcFNXNU9BQ1ZKT2lWTk9pVlRJQ1Z3SlVnNkpVMEFRY0NURHd1QkFTVUFBQUJ0QUFBQUx3QUFBQ1VBQUFCa0FBQUFMd0FBQUNVQUFBQjVBQUFBSlFBQUFGa0FBQUF0QUFBQUpRQUFBRzBBQUFBdEFBQUFKUUFBQUdRQUFBQWxBQUFBU1FBQUFEb0FBQUFsQUFBQVRRQUFBRG9BQUFBbEFBQUFVd0FBQUNBQUFBQWxBQUFBY0FBQUFBQUFBQUFsQUFBQVNBQUFBRG9BQUFBbEFBQUFUUUJCMEpRUEM2WUJKUUFBQUVnQUFBQTZBQUFBSlFBQUFFMEFBQUE2QUFBQUpRQUFBRk1BQUFBQUFBQUF6TlFEQUU4TUFBQlFEQUFBVVF3QUFBQUFBQUFVMVFNQVVnd0FBRk1NQUFCUkRBQUFWQXdBQUZVTUFBQldEQUFBQUFBQUFGelZBd0JYREFBQVdBd0FBRkVNQUFCWkRBQUFXZ3dBQUZzTUFBQUFBQUFBZk5VREFGd01BQUJkREFBQVVRd0FBRjRNQUFCZkRBQUFZQXdBQUdFTUFBQmlEQUFBWXd3QUFHUU1BQUJsREFCQmdKWVBDLzBEQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQlFJQUFBVUFBQUFGQUFBQUJRQUFBQVVBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBREFnQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQWdnQUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQVFnRUFBRUlCQUFCQ0FRQUFRZ0VBQUVJQkFBQkNBUUFBUWdFQUFFSUJBQUJDQVFBQVFnRUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUFxQVFBQUtnRUFBQ29CQUFBcUFRQUFLZ0VBQUNvQkFBQXFBQUFBS2dBQUFDb0FBQUFxQUFBQUtnQUFBQ29BQUFBcUFBQUFLZ0FBQUNvQUFBQXFBQUFBS2dBQUFDb0FBQUFxQUFBQUtnQUFBQ29BQUFBcUFBQUFLZ0FBQUNvQUFBQXFBQUFBS2dBQUFJSUFBQUNDQUFBQWdnQUFBSUlBQUFDQ0FBQUFnZ0FBQURJQkFBQXlBUUFBTWdFQUFESUJBQUF5QVFBQU1nRUFBRElBQUFBeUFBQUFNZ0FBQURJQUFBQXlBQUFBTWdBQUFESUFBQUF5QUFBQU1nQUFBRElBQUFBeUFBQUFNZ0FBQURJQUFBQXlBQUFBTWdBQUFESUFBQUF5QUFBQU1nQUFBRElBQUFBeUFBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFBUUFRWVNlRHd1WkFyalZBd0JtREFBQVp3d0FBRkVNQUFCb0RBQUFhUXdBQUdvTUFBQnJEQUFBWWd3QUFHTU1BQUJrREFBQVpRd0FBQUFBQUFEZzFRTUFiQXdBQUcwTUFBQlJEQUFBYmd3QUFHOE1BQUJ3REFBQWNRd0FBSElNQUFCekRBQUFkQXdBQUhVTUFBQjJEQUFBZHd3QUFIZ01BQUI1REFBQUFBQUFBSlRVQXdCNkRBQUFld3dBQUZFTUFBQjhEQUFBZlF3QUFINE1BQUIvREFBQWdBd0FBSUVNQUFDQ0RBQUFBQUFBQUFUV0F3Q0REQUFBaEF3QUFGRU1BQUNGREFBQWhnd0FBSWNNQUFDSURBQUFpUXdBQUFBQUFBQW8xZ01BaWd3QUFJc01BQUJSREFBQWpBd0FBSTBNQUFDT0RBQUFqd3dBQUpBTUFBQjBBQUFBY2dBQUFIVUFBQUJsQUFBQUFBQUFBR1lBQUFCaEFBQUFiQUFBQUhNQUFBQmxBRUdvb0E4TGtRSlUxZ01BZ3d3QUFKRU1BQUJSREFBQWhRd0FBSVlNQUFDSERBQUFpQXdBQUlrTUFBQUFBQUFBZ05ZREFJb01BQUNTREFBQVVRd0FBSXdNQUFDTkRBQUFqZ3dBQUk4TUFBQ1FEQUFBSlFBQUFHMEFBQUF2QUFBQUpRQUFBR1FBQUFBdkFBQUFKUUFBQUhrQUFBQUFBQUFBSlFBQUFFZ0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQUFBQUFBSlFBQUFHRUFBQUFnQUFBQUpRQUFBR0lBQUFBZ0FBQUFKUUFBQUdRQUFBQWdBQUFBSlFBQUFFZ0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQWdBQUFBSlFBQUFGa0FBQUFBQUFBQUpRQUFBRWtBQUFBNkFBQUFKUUFBQUUwQUFBQTZBQUFBSlFBQUFGTUFBQUFnQUFBQUpRQUFBSEFBUWNTaUR3djNER3pSQXdDVERBQUFsQXdBQUZFTUFBQk9VM1F6WDE4eU5teHZZMkZzWlRWbVlXTmxkRVVBQUFEUTh3TUFWTkVEQUVEeEF3QUFBQUFBN05FREFKTU1BQUNWREFBQVVRd0FBSllNQUFDWERBQUFtQXdBQUprTUFBQ2FEQUFBbXd3QUFKd01BQUNkREFBQW5nd0FBSjhNQUFDZ0RBQUFvUXdBQUU1VGRETmZYekkxWTNSNWNHVkpkMFZGQUU1VGRETmZYekl4TUdOMGVYQmxYMkpoYzJWRkFBQ1E4d01BenRFREFGanlBd0M4MFFNQUFBQUFBQUlBQUFCczBRTUFBZ0FBQU9UUkF3QUNBQUFBQUFBQUFJRFNBd0NUREFBQW9nd0FBRkVNQUFDakRBQUFwQXdBQUtVTUFBQ21EQUFBcHd3QUFLZ01BQUNwREFBQVRsTjBNMTlmTWpkamIyUmxZM1owU1dOak1URmZYMjFpYzNSaGRHVmZkRVZGQUU1VGRETmZYekl4TW1OdlpHVmpkblJmWW1GelpVVUFBQUFBa1BNREFGN1NBd0JZOGdNQVBOSURBQUFBQUFBQ0FBQUFiTkVEQUFJQUFBQjQwZ01BQWdBQUFBQUFBQUQwMGdNQWt3d0FBS29NQUFCUkRBQUFxd3dBQUt3TUFBQ3REQUFBcmd3QUFLOE1BQUN3REFBQXNRd0FBRTVUZEROZlh6STNZMjlrWldOMmRFbEVjMk14TVY5ZmJXSnpkR0YwWlY5MFJVVUFBRmp5QXdEUTBnTUFBQUFBQUFJQUFBQnMwUU1BQWdBQUFIalNBd0FDQUFBQUFBQUFBR2pUQXdDVERBQUFzZ3dBQUZFTUFBQ3pEQUFBdEF3QUFMVU1BQUMyREFBQXR3d0FBTGdNQUFDNURBQUFUbE4wTTE5Zk1qZGpiMlJsWTNaMFNVUnpSSFV4TVY5ZmJXSnpkR0YwWlY5MFJVVUFXUElEQUVUVEF3QUFBQUFBQWdBQUFHelJBd0FDQUFBQWVOSURBQUlBQUFBQUFBQUEzTk1EQUpNTUFBQzZEQUFBVVF3QUFMc01BQUM4REFBQXZRd0FBTDRNQUFDL0RBQUF3QXdBQU1FTUFBQk9VM1F6WDE4eU4yTnZaR1ZqZG5SSlJHbGpNVEZmWDIxaWMzUmhkR1ZmZEVWRkFBQlk4Z01BdU5NREFBQUFBQUFDQUFBQWJORURBQUlBQUFCNDBnTUFBZ0FBQUFBQUFBQlExQU1Ba3d3QUFNSU1BQUJSREFBQXd3d0FBTVFNQUFERkRBQUF4Z3dBQU1jTUFBRElEQUFBeVF3QUFFNVRkRE5mWHpJM1kyOWtaV04yZEVsRWFVUjFNVEZmWDIxaWMzUmhkR1ZmZEVWRkFGanlBd0FzMUFNQUFBQUFBQUlBQUFCczBRTUFBZ0FBQUhqU0F3QUNBQUFBVGxOME0xOWZNamRqYjJSbFkzWjBTWGRqTVRGZlgyMWljM1JoZEdWZmRFVkZBQUFBV1BJREFIRFVBd0FBQUFBQUFnQUFBR3pSQXdBQ0FBQUFlTklEQUFJQUFBQk9VM1F6WDE4eU5teHZZMkZzWlRWZlgybHRjRVVBQUFEUTh3TUF0TlFEQUd6UkF3Qk9VM1F6WDE4eU1UUmpiMnhzWVhSbFgySjVibUZ0WlVsalJVVUFUbE4wTTE5Zk1qZGpiMnhzWVhSbFNXTkZSUURROHdNQTlOUURBR3pSQXdEUTh3TUEyTlFEQUFqVkF3Qk9VM1F6WDE4eU1UUmpiMnhzWVhSbFgySjVibUZ0WlVsM1JVVUFUbE4wTTE5Zk1qZGpiMnhzWVhSbFNYZEZSUURROHdNQVBOVURBR3pSQXdEUTh3TUFJTlVEQUZEVkF3Qk9VM1F6WDE4eU5XTjBlWEJsU1dORlJRQUFBRmp5QXdCbzFRTUFBQUFBQUFJQUFBQnMwUU1BQWdBQUFPVFJBd0FDQUFBQVRsTjBNMTlmTWpFeVkzUjVjR1ZmWW5sdVlXMWxTV05GUlFBQUFORHpBd0NjMVFNQWZOVURBRTVUZEROZlh6SXhNbU4wZVhCbFgySjVibUZ0WlVsM1JVVUFBQURROHdNQXhOVURBT3pSQXdCT1UzUXpYMTh5T0c1MWJYQjFibU4wU1dORlJRQUFBQURROHdNQTdOVURBR3pSQXdCT1UzUXpYMTh5T0c1MWJYQjFibU4wU1hkRlJRQUFBQURROHdNQUVOWURBR3pSQXdCT1UzUXpYMTh5TVRWdWRXMXdkVzVqZEY5aWVXNWhiV1ZKWTBWRkFBQUFBTkR6QXdBMDFnTUFCTllEQUU1VGRETmZYekl4Tlc1MWJYQjFibU4wWDJKNWJtRnRaVWwzUlVVQUFBQUEwUE1EQUdEV0F3QW8xZ01BQUFBQUFBalZBd0RLREFBQXl3d0FBRkVNQUFETURBQUF6UXdBQUZZTUFBQUFBQUFBVU5VREFNNE1BQURQREFBQVVRd0FBTkFNQUFEUkRBQUFXd3dBQUFBQUFBQ2cxd01Ba3d3QUFOSU1BQUJSREFBQTB3d0FBTlFNQUFEVkRBQUExZ3dBQU5jTUFBRFlEQUFBMlF3QUFOb01BQURiREFBQTNBd0FBTjBNQUFCT1UzUXpYMTh5TjI1MWJWOW5aWFJKWTA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2xqVGxOZk1URmphR0Z5WDNSeVlXbDBjMGxqUlVWRlJVVkZBRTVUZEROZlh6STVYMTl1ZFcxZloyVjBTV05GUlFCT1UzUXpYMTh5TVRSZlgyNTFiVjluWlhSZlltRnpaVVVBQUpEekF3Qm0xd01BV1BJREFGRFhBd0FBQUFBQUFRQUFBSURYQXdBQUFBQUFXUElEQUF6WEF3QUFBQUFBQWdBQUFHelJBd0FDQUFBQWlOY0RBRUhFcnc4THl3RjAyQU1Ba3d3QUFONE1BQUJSREFBQTN3d0FBT0FNQUFEaERBQUE0Z3dBQU9NTUFBRGtEQUFBNVF3QUFPWU1BQURuREFBQTZBd0FBT2tNQUFCT1UzUXpYMTh5TjI1MWJWOW5aWFJKZDA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6STVYMTl1ZFcxZloyVjBTWGRGUlFBQUFGanlBd0JFMkFNQUFBQUFBQUVBQUFDQTF3TUFBQUFBQUZqeUF3QUEyQU1BQUFBQUFBSUFBQUJzMFFNQUFnQUFBRnpZQXdCQm1MRVBDOThCWE5rREFKTU1BQURxREFBQVVRd0FBT3NNQUFEc0RBQUE3UXdBQU80TUFBRHZEQUFBOEF3QUFQRU1BQUR5REFBQVRsTjBNMTlmTWpkdWRXMWZjSFYwU1dOT1UxOHhPVzl6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlPVjlmYm5WdFgzQjFkRWxqUlVVQVRsTjBNMTlmTWpFMFgxOXVkVzFmY0hWMFgySmhjMlZGQUFDUTh3TUFJdGtEQUZqeUF3QU0yUU1BQUFBQUFBRUFBQUE4MlFNQUFBQUFBRmp5QXdESTJBTUFBQUFBQUFJQUFBQnMwUU1BQWdBQUFFVFpBd0JCZ0xNUEM3OEJKTm9EQUpNTUFBRHpEQUFBVVF3QUFQUU1BQUQxREFBQTlnd0FBUGNNQUFENERBQUErUXdBQVBvTUFBRDdEQUFBVGxOME0xOWZNamR1ZFcxZmNIVjBTWGRPVTE4eE9XOXpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpkMDVUWHpFeFkyaGhjbDkwY21GcGRITkpkMFZGUlVWRlJRQk9VM1F6WDE4eU9WOWZiblZ0WDNCMWRFbDNSVVVBQUFCWThnTUE5TmtEQUFBQUFBQUJBQUFBUE5rREFBQUFBQUJZOGdNQXNOa0RBQUFBQUFBQ0FBQUFiTkVEQUFJQUFBQU0yZ01BUWNpMER3dlhGQ1RiQXdEOERBQUEvUXdBQUZFTUFBRCtEQUFBL3d3QUFBQU5BQUFCRFFBQUFnMEFBQU1OQUFBRURRQUErUC8vL3lUYkF3QUZEUUFBQmcwQUFBY05BQUFJRFFBQUNRMEFBQW9OQUFBTERRQUFUbE4wTTE5Zk1qaDBhVzFsWDJkbGRFbGpUbE5mTVRscGMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpsMGFXMWxYMkpoYzJWRkFKRHpBd0RkMmdNQVRsTjBNMTlmTWpJd1gxOTBhVzFsWDJkbGRGOWpYM04wYjNKaFoyVkpZMFZGQUFBQWtQTURBUGphQXdCWThnTUFtTm9EQUFBQUFBQURBQUFBYk5FREFBSUFBQUR3MmdNQUFnQUFBQnpiQXdBQUNBQUFBQUFBQUJEY0F3QU1EUUFBRFEwQUFGRU1BQUFPRFFBQUR3MEFBQkFOQUFBUkRRQUFFZzBBQUJNTkFBQVVEUUFBK1AvLy94RGNBd0FWRFFBQUZnMEFBQmNOQUFBWURRQUFHUTBBQUJvTkFBQWJEUUFBVGxOME0xOWZNamgwYVcxbFgyZGxkRWwzVGxOZk1UbHBjM1J5WldGdFluVm1YMmwwWlhKaGRHOXlTWGRPVTE4eE1XTm9ZWEpmZEhKaGFYUnpTWGRGUlVWRlJVVUFUbE4wTTE5Zk1qSXdYMTkwYVcxbFgyZGxkRjlqWDNOMGIzSmhaMlZKZDBWRkFBQ1E4d01BNWRzREFGanlBd0NnMndNQUFBQUFBQU1BQUFCczBRTUFBZ0FBQVBEYUF3QUNBQUFBQ053REFBQUlBQUFBQUFBQVFOMERBQndOQUFBZERRQUFVUXdBQUI0TkFBRC9EQUFBQUEwQUFBRU5BQUFDRFFBQUF3MEFBQVFOQUFBZkRRQUFJQTBBQUNFTkFBQWlEUUFBSXcwQUFDUU5BQUFsRFFBQStQLy8vMERkQXdBbURRQUFKdzBBQUNnTkFBQXBEUUFBS2cwQUFDc05BQUFzRFFBQVRsTjBNMTlmTWpFMWRHbHRaVjluWlhSZllubHVZVzFsU1dOT1UxOHhPV2x6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVGhmWDNScGJXVmZaMlYwWDNOMGIzSmhaMlZKWTBWRkFFNVRkRE5mWHpJeE1GOWZkR2x0WlY5blpYUkZBQUFBa1BNREFCWGRBd0RROHdNQTlkd0RBQ3pkQXdCWThnTUFxTndEQUFBQUFBQUNBQUFBSk5zREFBSUFBQUEwM1FNQUFBd0FBQUFBQUFCTTNnTUFMUTBBQUM0TkFBQlJEQUFBTHcwQUFBOE5BQUFRRFFBQUVRMEFBQklOQUFBVERRQUFGQTBBQURBTkFBQXhEUUFBTWcwQUFETU5BQUEwRFFBQU5RMEFBRFlOQUFENC8vLy9UTjREQURjTkFBQTREUUFBT1EwQUFEb05BQUE3RFFBQVBBMEFBRDBOQUFCT1UzUXpYMTh5TVRWMGFXMWxYMmRsZEY5aWVXNWhiV1ZKZDA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6SXhPRjlmZEdsdFpWOW5aWFJmYzNSdmNtRm5aVWwzUlVVQUFBQUEwUE1EQUIzZUF3QXMzUU1BV1BJREFORGRBd0FBQUFBQUFnQUFBQkRjQXdBQ0FBQUFRTjREQUFBTUFBQUFBQUFBNk40REFENE5BQUEvRFFBQVVRd0FBRUFOQUFCT1UzUXpYMTh5T0hScGJXVmZjSFYwU1dOT1UxOHhPVzl6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVEJmWDNScGJXVmZjSFYwUlFBQUFKRHpBd0RKM2dNQVdQSURBSVRlQXdBQUFBQUFBZ0FBQUd6UkF3QUNBQUFBNE40REFBQUlBQUFBQUFBQWFOOERBRUVOQUFCQ0RRQUFVUXdBQUVNTkFBQk9VM1F6WDE4eU9IUnBiV1ZmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFBQUFBQlk4Z01BSU44REFBQUFBQUFDQUFBQWJORURBQUlBQUFEZzNnTUFBQWdBQUFBQUFBRHczd01BUGcwQUFFUU5BQUJSREFBQVFBMEFBRTVUZEROZlh6SXhOWFJwYldWZmNIVjBYMko1Ym1GdFpVbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQUFBQUEwUE1EQUtEZkF3RG8zZ01BQUFBQUFHVGdBd0JCRFFBQVJRMEFBRkVNQUFCRERRQUFUbE4wTTE5Zk1qRTFkR2x0WlY5d2RYUmZZbmx1WVcxbFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFBQUFBRFE4d01BRk9BREFHamZBd0FBQUFBQTVPQURBSk1NQUFCR0RRQUFVUXdBQUVjTkFBQklEUUFBU1EwQUFFb05BQUJMRFFBQVRBMEFBRTBOQUFCT0RRQUFUdzBBQUU1VGRETmZYekl4TUcxdmJtVjVjSFZ1WTNSSlkweGlNRVZGUlFCT1UzUXpYMTh5TVRCdGIyNWxlVjlpWVhObFJRQUFBQUNROHdNQXhPQURBRmp5QXdDbzRBTUFBQUFBQUFJQUFBQnMwUU1BQWdBQUFOemdBd0FDQUFBQUFBQUFBRmpoQXdDVERBQUFVQTBBQUZFTUFBQlJEUUFBVWcwQUFGTU5BQUJVRFFBQVZRMEFBRllOQUFCWERRQUFXQTBBQUZrTkFBQk9VM1F6WDE4eU1UQnRiMjVsZVhCMWJtTjBTV05NWWpGRlJVVUFXUElEQUR6aEF3QUFBQUFBQWdBQUFHelJBd0FDQUFBQTNPQURBQUlBQUFBQUFBQUF6T0VEQUpNTUFBQmFEUUFBVVF3QUFGc05BQUJjRFFBQVhRMEFBRjROQUFCZkRRQUFZQTBBQUdFTkFBQmlEUUFBWXcwQUFFNVRkRE5mWHpJeE1HMXZibVY1Y0hWdVkzUkpkMHhpTUVWRlJRQlk4Z01Bc09FREFBQUFBQUFDQUFBQWJORURBQUlBQUFEYzRBTUFBZ0FBQUFBQUFBQkE0Z01Ba3d3QUFHUU5BQUJSREFBQVpRMEFBR1lOQUFCbkRRQUFhQTBBQUdrTkFBQnFEUUFBYXcwQUFHd05BQUJ0RFFBQVRsTjBNMTlmTWpFd2JXOXVaWGx3ZFc1amRFbDNUR0l4UlVWRkFGanlBd0FrNGdNQUFBQUFBQUlBQUFCczBRTUFBZ0FBQU56Z0F3QUNBQUFBQUFBQUFMemlBd0J1RFFBQWJ3MEFBRkVNQUFCd0RRQUFjUTBBQUhJTkFBQnpEUUFBZEEwQUFIVU5BQUIyRFFBQWR3MEFBSGdOQUFCT1UzUXpYMTh5TVRkdGIyNWxlWEIxYm1OMFgySjVibUZ0WlVsalRHSXdSVVZGQUFEUTh3TUFtT0lEQU9UZ0F3QUFBQUFBSk9NREFIa05BQUI2RFFBQVVRd0FBSHNOQUFCOERRQUFmUTBBQUg0TkFBQi9EUUFBZ0EwQUFJRU5BQUNDRFFBQWd3MEFBRTVUZEROZlh6SXhOMjF2Ym1WNWNIVnVZM1JmWW5sdVlXMWxTV05NWWpGRlJVVUFBTkR6QXdBQTR3TUFXT0VEQUFBQUFBQ000d01BaEEwQUFJVU5BQUJSREFBQWhnMEFBSWNOQUFDSURRQUFpUTBBQUlvTkFBQ0xEUUFBakEwQUFJME5BQUNPRFFBQVRsTjBNMTlmTWpFM2JXOXVaWGx3ZFc1amRGOWllVzVoYldWSmQweGlNRVZGUlFBQTBQTURBR2pqQXdETTRRTUFBQUFBQVBUakF3Q1BEUUFBa0EwQUFGRU1BQUNSRFFBQWtnMEFBSk1OQUFDVURRQUFsUTBBQUpZTkFBQ1hEUUFBbUEwQUFKa05BQUJPVTNRelgxOHlNVGR0YjI1bGVYQjFibU4wWDJKNWJtRnRaVWwzVEdJeFJVVkZBQURROHdNQTBPTURBRURpQXdBQUFBQUFoT1FEQUpNTUFBQ2FEUUFBVVF3QUFKc05BQUNjRFFBQVRsTjBNMTlmTWpsdGIyNWxlVjluWlhSSlkwNVRYekU1YVhOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmWjJWMFNXTkZSUUFBa1BNREFHTGtBd0JZOGdNQUhPUURBQUFBQUFBQ0FBQUFiTkVEQUFJQUFBQjg1QU1BUWFqSkR3dWJBU2psQXdDVERBQUFuUTBBQUZFTUFBQ2VEUUFBbncwQUFFNVRkRE5mWHpJNWJXOXVaWGxmWjJWMFNYZE9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5TVRGZlgyMXZibVY1WDJkbGRFbDNSVVVBQUpEekF3QUc1UU1BV1BJREFNRGtBd0FBQUFBQUFnQUFBR3pSQXdBQ0FBQUFJT1VEQUVITXlnOExtd0hNNVFNQWt3d0FBS0FOQUFCUkRBQUFvUTBBQUtJTkFBQk9VM1F6WDE4eU9XMXZibVY1WDNCMWRFbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpFeFgxOXRiMjVsZVY5d2RYUkpZMFZGQUFDUTh3TUFxdVVEQUZqeUF3Qms1UU1BQUFBQUFBSUFBQUJzMFFNQUFnQUFBTVRsQXdCQjhNc1BDNXNCY09ZREFKTU1BQUNqRFFBQVVRd0FBS1FOQUFDbERRQUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpkMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTWGRGUlFBQWtQTURBRTdtQXdCWThnTUFDT1lEQUFBQUFBQUNBQUFBYk5FREFBSUFBQUJvNWdNQVFaVE5Ed3ZCRHVqbUF3Q1REQUFBcGcwQUFGRU1BQUNuRFFBQXFBMEFBS2tOQUFCT1UzUXpYMTh5T0cxbGMzTmhaMlZ6U1dORlJRQk9VM1F6WDE4eU1UTnRaWE56WVdkbGMxOWlZWE5sUlFBQUFBQ1E4d01BeGVZREFGanlBd0N3NWdNQUFBQUFBQUlBQUFCczBRTUFBZ0FBQU9EbUF3QUNBQUFBQUFBQUFFRG5Bd0NUREFBQXFnMEFBRkVNQUFDckRRQUFyQTBBQUswTkFBQk9VM1F6WDE4eU9HMWxjM05oWjJWelNYZEZSUUFBQUFCWThnTUFLT2NEQUFBQUFBQUNBQUFBYk5FREFBSUFBQURnNWdNQUFnQUFBQUFBQUFDZzV3TUFrd3dBQUs0TkFBQlJEQUFBcHcwQUFLZ05BQUNwRFFBQVRsTjBNMTlmTWpFMWJXVnpjMkZuWlhOZllubHVZVzFsU1dORlJRQUFBQURROHdNQWdPY0RBT2ptQXdBQUFBQUE3T2NEQUpNTUFBQ3ZEUUFBVVF3QUFLc05BQUNzRFFBQXJRMEFBRTVUZEROZlh6SXhOVzFsYzNOaFoyVnpYMko1Ym1GdFpVbDNSVVVBQUFBQTBQTURBTXpuQXdCQTV3TUFBQUFBQUZUb0F3Q3dEUUFBc1EwQUFGRU1BQUNqREFBQXBBd0FBS1VNQUFDbURBQUFwd3dBQUtnTUFBQ3BEQUFBVGxOME0xOWZNakUwWTI5a1pXTjJkRjlpZVc1aGJXVkpZMk14TVY5ZmJXSnpkR0YwWlY5MFJVVUFBQURROHdNQUtPZ0RBSURTQXdBQUFBQUF2T2dEQUxJTkFBQ3pEUUFBVVF3QUFId01BQUI5REFBQWZnd0FBSDhNQUFDQURBQUFnUXdBQUlJTUFBQk9VM1F6WDE4eU1UUmpiMlJsWTNaMFgySjVibUZ0WlVsM1l6RXhYMTl0WW5OMFlYUmxYM1JGUlFBQUFORHpBd0NRNkFNQWxOUURBQUFBQUFBazZRTUF0QTBBQUxVTkFBQlJEQUFBcXd3QUFLd01BQUN0REFBQXJnd0FBSzhNQUFDd0RBQUFzUXdBQUU1VGRETmZYekl4TkdOdlpHVmpkblJmWW5sdVlXMWxTVVJ6WXpFeFgxOXRZbk4wWVhSbFgzUkZSUUFBMFBNREFQam9Bd0QwMGdNQUFBQUFBSXpwQXdDMkRRQUF0dzBBQUZFTUFBQzdEQUFBdkF3QUFMME1BQUMrREFBQXZ3d0FBTUFNQUFEQkRBQUFUbE4wTTE5Zk1qRTBZMjlrWldOMmRGOWllVzVoYldWSlJHbGpNVEZmWDIxaWMzUmhkR1ZmZEVWRkFBRFE4d01BWU9rREFOelRBd0FBQUFBQTlPa0RBTGdOQUFDNURRQUFVUXdBQUxNTUFBQzBEQUFBdFF3QUFMWU1BQUMzREFBQXVBd0FBTGtNQUFCT1UzUXpYMTh5TVRSamIyUmxZM1owWDJKNWJtRnRaVWxFYzBSMU1URmZYMjFpYzNSaGRHVmZkRVZGQU5EekF3REk2UU1BYU5NREFBQUFBQUJjNmdNQXVnMEFBTHNOQUFCUkRBQUF3d3dBQU1RTUFBREZEQUFBeGd3QUFNY01BQURJREFBQXlRd0FBRTVUZEROZlh6SXhOR052WkdWamRuUmZZbmx1WVcxbFNVUnBSSFV4TVY5ZmJXSnpkR0YwWlY5MFJVVUEwUE1EQUREcUF3QlExQU1BVXdBQUFIVUFBQUJ1QUFBQVpBQUFBR0VBQUFCNUFBQUFBQUFBQUUwQUFBQnZBQUFBYmdBQUFHUUFBQUJoQUFBQWVRQUFBQUFBQUFCVUFBQUFkUUFBQUdVQUFBQnpBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRmNBQUFCbEFBQUFaQUFBQUc0QUFBQmxBQUFBY3dBQUFHUUFBQUJoQUFBQWVRQUFBQUFBQUFCVUFBQUFhQUFBQUhVQUFBQnlBQUFBY3dBQUFHUUFBQUJoQUFBQWVRQUFBQUFBQUFCR0FBQUFjZ0FBQUdrQUFBQmtBQUFBWVFBQUFIa0FBQUFBQUFBQVV3QUFBR0VBQUFCMEFBQUFkUUFBQUhJQUFBQmtBQUFBWVFBQUFIa0FBQUFBQUFBQVV3QUFBSFVBQUFCdUFBQUFBQUFBQUUwQUFBQnZBQUFBYmdBQUFBQUFBQUJVQUFBQWRRQUFBR1VBQUFBQUFBQUFWd0FBQUdVQUFBQmtBQUFBQUFBQUFGUUFBQUJvQUFBQWRRQUFBQUFBQUFCR0FBQUFjZ0FBQUdrQUFBQUFBQUFBVXdBQUFHRUFBQUIwQUFBQUFBQUFBRW9BQUFCaEFBQUFiZ0FBQUhVQUFBQmhBQUFBY2dBQUFIa0FBQUFBQUFBQVJnQUFBR1VBQUFCaUFBQUFjZ0FBQUhVQUFBQmhBQUFBY2dBQUFIa0FBQUFBQUFBQVRRQUFBR0VBQUFCeUFBQUFZd0FBQUdnQUFBQUFBQUFBUVFBQUFIQUFBQUJ5QUFBQWFRQUFBR3dBQUFBQUFBQUFUUUFBQUdFQUFBQjVBQUFBQUFBQUFFb0FBQUIxQUFBQWJnQUFBR1VBQUFBQUFBQUFTZ0FBQUhVQUFBQnNBQUFBZVFBQUFBQUFBQUJCQUFBQWRRQUFBR2NBQUFCMUFBQUFjd0FBQUhRQUFBQUFBQUFBVXdBQUFHVUFBQUJ3QUFBQWRBQUFBR1VBQUFCdEFBQUFZZ0FBQUdVQUFBQnlBQUFBQUFBQUFFOEFBQUJqQUFBQWRBQUFBRzhBQUFCaUFBQUFaUUFBQUhJQUFBQUFBQUFBVGdBQUFHOEFBQUIyQUFBQVpRQUFBRzBBQUFCaUFBQUFaUUFBQUhJQUFBQUFBQUFBUkFBQUFHVUFBQUJqQUFBQVpRQUFBRzBBQUFCaUFBQUFaUUFBQUhJQUFBQUFBQUFBU2dBQUFHRUFBQUJ1QUFBQUFBQUFBRVlBQUFCbEFBQUFZZ0FBQUFBQUFBQk5BQUFBWVFBQUFISUFBQUFBQUFBQVFRQUFBSEFBQUFCeUFBQUFBQUFBQUVvQUFBQjFBQUFBYmdBQUFBQUFBQUJLQUFBQWRRQUFBR3dBQUFBQUFBQUFRUUFBQUhVQUFBQm5BQUFBQUFBQUFGTUFBQUJsQUFBQWNBQUFBQUFBQUFCUEFBQUFZd0FBQUhRQUFBQUFBQUFBVGdBQUFHOEFBQUIyQUFBQUFBQUFBRVFBQUFCbEFBQUFZd0FBQUFBQUFBQkJBQUFBVFFBQUFBQUFBQUJRQUFBQVRRQkI0TnNQQy84Q0hOc0RBQVVOQUFBR0RRQUFCdzBBQUFnTkFBQUpEUUFBQ2cwQUFBc05BQUFBQUFBQUNOd0RBQlVOQUFBV0RRQUFGdzBBQUJnTkFBQVpEUUFBR2cwQUFCc05BQUFBQUFBQWVPNERBR1lNQUFDOERRQUFVUXdBQUdnTUFBQnBEQUFBYWd3QUFHc01BQUJpREFBQVl3d0FBR1FNQUFCbERBQUFUbE4wTTE5Zk1qRTFYMTkwYVcxbFgyZGxkRjkwWlcxd1NXTkZSUUFBQUFEUTh3TUFXTzREQUxqVkF3QUFBQUFBNk80REFHd01BQUM5RFFBQVVRd0FBRzRNQUFCdkRBQUFjQXdBQUhFTUFBQnlEQUFBY3d3QUFIUU1BQUIxREFBQWRnd0FBSGNNQUFCNERBQUFlUXdBQUU1VGRETmZYekl4TlY5ZmRHbHRaVjluWlhSZmRHVnRjRWwzUlVVQUFBQUEwUE1EQU1qdUF3RGcxUU1BVGxOME0xOWZNakUwWDE5emFHRnlaV1JmWTI5MWJuUkZBQUFBQUFBQUFBQk03d01BdmcwQUFMOE5BQUFJQUFBQS9BVUFBQWdBQUFCT1UzUXpYMTh5TVRsZlgzTm9ZWEpsWkY5M1pXRnJYMk52ZFc1MFJRQUFBRmp5QXdBczd3TUFBQUFBQUFFQUFBQkE4UU1BUVlEZkR3c0RlSXNEQUVHZzN3OEx5QUV3TURBeE1ESXdNekEwTURVd05qQTNNRGd3T1RFd01URXhNakV6TVRReE5URTJNVGN4T0RFNU1qQXlNVEl5TWpNeU5ESTFNall5TnpJNE1qa3pNRE14TXpJek16TTBNelV6TmpNM016Z3pPVFF3TkRFME1qUXpORFEwTlRRMk5EYzBPRFE1TlRBMU1UVXlOVE0xTkRVMU5UWTFOelU0TlRrMk1EWXhOakkyTXpZME5qVTJOalkzTmpnMk9UY3dOekUzTWpjek56UTNOVGMyTnpjM09EYzVPREE0TVRneU9ETTRORGcxT0RZNE56ZzRPRGs1TURreE9USTVNemswT1RVNU5qazNPVGc1T1FCQjlPQVBDeVFLQUFBQVpBQUFBT2dEQUFBUUp3QUFvSVlCQUVCQ0R3Q0FscGdBQU9IMUJRREttanNBUWFqaER3dmlCZ29BQUFBQUFBQUFaQUFBQUFBQUFBRG9Bd0FBQUFBQUFCQW5BQUFBQUFBQW9JWUJBQUFBQUFCQVFnOEFBQUFBQUlDV21BQUFBQUFBQU9IMUJRQUFBQUFBeXBvN0FBQUFBQURrQzFRQ0FBQUFBT2gyU0JjQUFBQUFFS1hVNkFBQUFBQ2djazRZQ1FBQUFFQjZFUE5hQUFBQWdNYWtmbzBEQUFBQXdXL3loaU1BQUFDS1hYaEZZd0VBQUdTbnM3YmdEUUFBNklrRUk4ZUtrUE1EQVBUdUF3QUFBQUFBUVBFREFMNE5BQURBRFFBQUNBQUFBRTR4TUY5ZlkzaDRZV0pwZGpFeE5sOWZjMmhwYlY5MGVYQmxYMmx1Wm05RkFBQUFBTkR6QXdCYzhRTUF3UE1EQUU0eE1GOWZZM2g0WVdKcGRqRXhOMTlmWTJ4aGMzTmZkSGx3WlY5cGJtWnZSUUFBQU5EekF3Q004UU1BZ1BFREFFNHhNRjlmWTNoNFlXSnBkakV4TjE5ZmNHSmhjMlZmZEhsd1pWOXBibVp2UlFBQUFORHpBd0M4OFFNQWdQRURBRTR4TUY5ZlkzaDRZV0pwZGpFeE9WOWZjRzlwYm5SbGNsOTBlWEJsWDJsdVptOUZBTkR6QXdEczhRTUE0UEVEQUU0eE1GOWZZM2g0WVdKcGRqRXlNRjlmYzJsZlkyeGhjM05mZEhsd1pWOXBibVp2UlFBQUFBRFE4d01BSFBJREFMRHhBd0FBQUFBQW9QSURBTUVOQUFEQ0RRQUF3dzBBQU1RTkFBREZEUUFBeGcwQUFNY05BQURJRFFBQVRqRXdYMTlqZUhoaFltbDJNVEl4WDE5MmJXbGZZMnhoYzNOZmRIbHdaVjlwYm1adlJRQUFBTkR6QXdCNDhnTUFzUEVEQUFBQUFBRHc4Z01BQWdBQUFNa05BQURLRFFBQUFBQUFBQmp6QXdBQ0FBQUF5dzBBQU13TkFBQlRkRGxsZUdObGNIUnBiMjRBVTNRNVltRmtYMkZzYkc5akFBQUEwUE1EQU9IeUF3RHc4d01BVTNReU1HSmhaRjloY25KaGVWOXVaWGRmYkdWdVozUm9BQUFBQU5EekF3RDg4Z01BOFBJREFBQUFBQUJJOHdNQUFRQUFBTTBOQUFET0RRQUFVM1F4TVd4dloybGpYMlZ5Y205eUFORHpBd0E0OHdNQThQTURBQUFBQUFCODh3TUFBUUFBQU04TkFBRE9EUUFBVTNReE1teGxibWQwYUY5bGNuSnZjZ0FBQUFEUTh3TUFhUE1EQUVqekF3QUFBQUFBc1BFREFNRU5BQURRRFFBQXd3MEFBTVFOQUFERkRRQUEwUTBBQU5JTkFBRFREUUFBVTNRNWRIbHdaVjlwYm1adkFBQUFBSkR6QXdDdzh3TUFBQUFBQUVUeUF3REJEUUFBMUEwQUFNTU5BQURFRFFBQXhRMEFBTlVOQUFEV0RRQUExdzBBQUpEekF3RFU4Z01BQUFBQUFQRHpBd0FDQUFBQTJBMEFBTmtOQUVHUTZBOExId0VBQUFBQUFBQUFhUG9EQURsMkFBQUFBQUFBQkFBRUFFQXNCSUFFQUFRQVFiam9Ed3NKQXdBQUFBUUFBQUFGQUVITTZBOExOUVlBQUFBSEFBQUFDQUFBQUdqNkF3QU50Z0FBQUFBQUFBQUFnQVJBTEFTQUFBQ0FCQUFBQUFBQUFBQUFDUUFBQUFvQUFBQUlBRUdNNlE4TElBWUFBQUFMQUFBQUNBQUFBR2o2QXdCVDdnQUFBQkFJQUFBQUFBQkFQQXlBQUVHNDZROExKd3dBQUFBTkFBQUFDQUFBQUFnQUFBQVk5QU1BR25ZQUFBQUNCQUFBQUFBQVFDNEVnQVFBQkFCQjZPa1BDd2tPQUFBQUR3QUFBQkFBUWZ6cER3c2dBd0FBQUJFQUFBQUZBQUFBbVBRREFPanRBQUNBZ0FBQUFBQUFBTUM4RElBQVFhanFEd3NORWdBQUFCTUFBQUFVQUFBQUZRQkJ3T29QQ3cwTUFBQUFGZ0FBQUFnQUFBQUlBRUhZNmc4TFBRWUFBQUFYQUFBQUNBQUFBQUFBQUFCbytnTUFxQjRCQUFBQUFBQUFnQUFJUUN3RWdBQ0FBQWdBQUFBQUFBQUFBQmdBQUFBWkFBQUFDQUFBQUFnQVFhRHJEd3M5QmdBQUFCb0FBQUFJQUFBQUFBQUFBR2oxQXdBUGNnQUFBQUJBSUFBQUFBQkFMRVNnQUlBQUNBQUFBQUFBQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0JCNk9zUEN5Y1lBQUFBSHdBQUFBZ0FBQUFJQUFBQWVQa0RBSkltQUFBQUFBSVFBQUFBQUVBc0JwQUFBQkVBUVpqc0R3c0pJQUFBQUNFQUFBQWlBRUdzN0E4TEl5TUFBQUFrQUFBQUNBQUFBSGo1QXdBektBQUFBQ0FFQUFBQUFBQkFMQVNBQUFBUkFFSFk3QThMQ1NVQUFBQW1BQUFBSndCQjdPd1BDeU1qQUFBQUtBQUFBQWdBQUFCbytnTUFVV2dBQUFBQUJBQUFBQWdBUUN3RWdBQUFDQUJCbU8wUEN3a3BBQUFBS2dBQUFDc0FRYXp0RHdzakJnQUFBQ3dBQUFBSUFBQUFlUGtEQUFZcEFBQUFBQUFRQUFRQUFFQXNCSkFBQkJFQVFkanREd3NKTFFBQUFDNEFBQUF2QUVIczdROExFaU1BQUFBd0FBQUFDQUFBQUZqMEF3RFR0QUJCaCs0UEN4cFFRQ3dFZ0FBQWdGUUFBQUFBQUFBQUFERUFBQUF5QUFBQU13QkJyTzRQQ3pVSkFBQUFOQUFBQUFnQUFBQlk5QU1BTHJVQUFBQUFBQVFBSUFBQVFDd0VoQUFnZ0FRQUFBQUFBQUFBQURVQUFBQTJBQUFBTndCQjdPNFBDeU1KQUFBQU9BQUFBQWdBQUFCNCtRTUFYU2NBQUFBQUVBUUFBQUFBUUN3VWhBQUFFUUJCbU84UEN3azVBQUFBT2dBQUFEc0FRYXp2RHdzU0l3QUFBRHdBQUFBSUFBQUFlUGtEQU9rb0FFSEg3dzhMR2lSQUxBU0FBQUFSSkFBQUFBQUFBQUFBUFFBQUFENEFBQUEvQUVIczd3OExJeU1BQUFCQUFBQUFDQUFBQUhqNUF3QnNLUUFBSUFBQUFRQUFBQUJnTEFTQkFBQVJBRUdZOEE4TENVRUFBQUJDQUFBQVF3QkJyUEFQQ3lNakFBQUFSQUFBQUFnQUFBQjQrUU1BdXlnQUFBQWdBQUFBSUFBQVFDd0VnQUFnRVFCQjJQQVBDd2xGQUFBQVJnQUFBRWNBUWV6d0R3c2pJd0FBQUVnQUFBQUlBQUFBZVBrREFCQW5BQUFBQUFBQUFFRUFBRUFzQklBQVFSRUFRWmp4RHdzSlNRQUFBRW9BQUFCTEFFR3M4UThMSXlNQUFBQk1BQUFBQ0FBQUFIajVBd0JDSndBQUFBQUFBQUFBTUFCQUxBU0FBQUF4QUVIWThROExDVTBBQUFCT0FBQUFUd0JCN1BFUEN5TWpBQUFBVUFBQUFBZ0FBQUI0K1FNQVRTZ0FBQUFBQUFJQUFBSUFRQ3dFZ2dBQUV3QkJtUElQQ3dsUkFBQUFVZ0FBQUZNQVFhenlEd3NqSXdBQUFGUUFBQUFJQUFBQWVQa0RBSFluQUFBQUFBQUFBQUJDQUVBc0JJQUFBRk1BUWRqeUR3c0pWUUFBQUZZQUFBQlhBRUhzOGc4TEl5TUFBQUJZQUFBQUNBQUFBR2o2QXdDbEtRQUFBQUFBQUFBQUVRQkFMQVNBQUFBUkFFR1k4dzhMQ1NNQUFBQlpBQUFBQ0FCQnJQTVBDeU1HQUFBQVdnQUFBQWdBQUFCNCtRTUEveWNBQUFBQWdBRUFBQUFBUUN5RWdRQUFFUUJCMlBNUEN3bGJBQUFBWEFBQUFGMEFRZXp6RHdzaUl3QUFBRjRBQUFBSUFBQUFhUG9EQUNTcUFBQUFBQUFBUUlBQUFFQXNCSUJBZ0FCQm1QUVBDd2xmQUFBQVlBQUFBR0VBUWF6MER3c2dCZ0FBQUdJQUFBQUlBQUFBOEpvRUFCMGZBUUFBSUFRQUFBQUFBQUFrQklBQVFkajBEd3NrWXdBQUFHUUFBQUFJQUFBQUFBQUFBRGo2QXdBcUtBRUFRQWdBQUFBQUFBQkFMQVNBQUVHSTlROExDUVlBQUFCbEFBQUFDQUJCblBVUEN6VmpBQUFBWmdBQUFBZ0FBQUJvK2dNQWJCa0JBQ0FBQUFBQUFBQUNZQ3dFZ0FBQUFBSUFBQUFBQUFBQUFBWUFBQUJuQUFBQWFBQkIzUFVQQ3pVR0FBQUFhUUFBQUFnQUFBQm8rZ01BR09VQUFBQUFBQWdBQUFBQ1FDd0VpQUFBQUFJQUFBQUFBQUFBQUdvQUFBQnJBQUFBYkFCQm5QWVBDMU1HQUFBQWJRQUFBQWdBQUFCbytnTUFyUndCQUlBQUFBQUFBQUNBd0N3RWdBQUFBSUI0K1FNQUFSb0FBQWdBQUFFQUFBQUFTQ3dFZ1FBQUVRQm8rZ01BUjhrQUFBQUJBQUFBQUFFQVFDMEVnQUFBQVFCQitQWVBDd2x1QUFBQWJ3QUFBQWdBUVl6M0R3c2pCZ0FBQUhBQUFBQUlBQUFBYVBvREFHb2FBUUFBQUFBQUFBZ0NBRUFzQklBQUNBSUFRYmozRHdzSmNRQUFBSElBQUFCekFFSE05dzhMSXdZQUFBQjBBQUFBQ0FBQUFQQ2FCQUE2S0FFQUFnQUFBQUFBQWdBQ0JBQ0FBQUFDQUVINDl3OExIM1VBQUFCMkFBQUEyUHNEQUF6ckFBQUFBQUNBQUNBQUFBSUVBSUFBSUFJQVFhRDREd3N4ZHdBQUFIZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFIa0FBQUI2QUFBQWV3QkIzUGdQQ3lOMUFBQUFmQUFBQUFBQUFBQUEvQU1BQ084QUFBQ0FBQkFBQUFBQUFvUUFrQUFnQWdCQmlQa1BDeVY5QUFBQWZnQUFBSDhBQUFDQUFBQUFnUUFBQUlJQUFBQ0RBQUFBaEFBQUFJVUFBQUNHQUVHNCtROExWWGNBQUFDSEFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFCbzlRTUFWelVBQUFBQUFBQUFRQUNBUUN3RWdBREFBSWdBQUFBQUFBQUFBSWdBQUFDSkFBQUFpZ0FBQUlzQVFaajZEd3NsR0FBQUFJd0FBQUFJQUFBQUNBQUFBSmowQXdDUjdBQUFBQVFBQUVBQUFBQkFQQXlBUUFCQnlQb1BDdzJOQUFBQWpnQUFBSThBQUFDUUFFSGcrZzhMT1F3QUFBQ1JBQUFBQ0FBQUFBZ0FBQUJZOUFNQXE3VUFBQUFBQUFCQUFnQUFRQ3dFZ0VBQ2dBUUFBQUFBQUFBQUFKSUFBQUNUQUFBQUNBQkJwUHNQQ3pVSkFBQUFsQUFBQUFnQUFBQncvUU1BU0xVQUFJQUFBQUFDQUFBQXdDd0VnRUlDZ0FRQUFBQUFBQUFBQUpVQUFBQ1dBQUFBbHdCQjVQc1BDeU9TQUFBQW1BQUFBQWdBQUFBQS9BTUFqVDBBQUFnQUFRQUFBQUFBQ2dRQmdBQWdBZ0JCa1B3UEN5V1pBQUFBbWdBQUFKc0FBQUNjQUFBQW5RQUFBSjRBQUFDZkFBQUFvQUFBQUtFQUFBQ2lBRUhBL0E4TEpYY0FBQUNqQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FRZkQ4RHdzT3BBQUFBS1VBQUFCdy9RTUFpclVBUVlmOUR3c2FJa0FzQklCQUFvQW1BQUFBQUFBQUFBQ21BQUFBcHdBQUFLZ0FRYXo5RHdzMWtnQUFBS2tBQUFBSUFBQUFjUDBEQUdpMUFBQUFBQUFBQUFnQ0FFQXNCSUJBQ29JRUFBQUFBQUFBQUFDcUFBQUFxd0FBQUt3QVFlejlEd3V6QVpJQUFBQ3RBQUFBQ0FBQUFBRDhBd0JWc0FFQUFJQUFBQUJBQUFBQ2hBQ0FBR0FDQUFEOEF3QjRzQUVBSUFBQUFJQUFBQUFpQkFDQWdDQUNBQUQ4QXdER3NnRUFBQUFnQUFBQUFBUUNCQ0NBQUNBQ0JBRDhBd0Nrc2dFQUFBQUFBQUNBSUFBQ0JBQ0FBS0FpQUFEOEF3Q0NzZ0VBQUNBZ0FBQUFBQUFDSkNDQUFDQUNBQUQ4QXdEb3NnRUFBSUFBQUFBQWdBQUNoQUNBQUNDQ0FBRDhBd0JFc1FFQUFBQUFBQUFNQUFBQ0JBQ0FBQ3dDQUVHby93OExKWGNBQUFDdUFBQUFyd0FBQUxBQUFBQ3hBQUFBc2dBQUFMTUFBQUMwQUFBQXRRQUFBTFlBUWRqL0R3c2xkd0FBQUxjQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUJCaUlBUUN5VjNBQUFBdUFBQUFMa0FBQUM2QUFBQXV3QUFBTHdBQUFDOUFBQUF2Z0FBQUw4QUFBREFBRUc0Z0JBTEpYY0FBQURCQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FRZWlBRUFzbGR3QUFBTUlBQUFEREFBQUF4QUFBQU1VQUFBREdBQUFBeHdBQUFNZ0FBQURKQUFBQXlnQkJtSUVRQ3lWM0FBQUF5d0FBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFFSElnUkFMSlhjQUFBRE1BQUFBelFBQUFNNEFBQURQQUFBQTBBQUFBTkVBQUFEU0FBQUEwd0FBQU5RQVFmaUJFQXRKZHdBQUFOVUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFOWUFBQURYQUFBQTJBQUFBTmtBQUFEYUFBQUEyd0FBQU53QUFBRGRBQUFBM2dCQnpJSVFDeVYzQUFBQTN3QUFBT0FBQUFEaEFBQUE0Z0FBQU9NQUFBRGtBQUFBNVFBQUFPWUFBQURuQUVIOGdoQUxKWGNBQUFEb0FBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBUWF5REVBc2xkd0FBQU9rQUFBRHFBQUFBNndBQUFPd0FBQUR0QUFBQTdnQUFBTzhBQUFEd0FBQUE4UUJCM0lNUUN5VjNBQUFBOGdBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBRUdNaEJBTEpYY0FBQUR6QUFBQTlBQUFBUFVBQUFEMkFBQUE5d0FBQVBnQUFBRDVBQUFBK2dBQUFQc0FRYnlFRUFzbGR3QUFBUHdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQkI3SVFRQ3hyOUFBQUEvZ0FBQVA4QUFBQUFBUUFBQVFFQUFBSUJBQUFEQVFCQmtJVVFDeWI5QUFBQUJBRUFBQVVCQUFBR0FRQUFCd0VBQUFnQkFBQUpBUUFBQ2dFQUFBc0JBQUFNQVFCQndJVVFDeFlOQVFBQURnRUFBQThCQUFBUUFRQUFFUUVBQUJJQkFFSGdoUkFMSnhNQkFBQVVBUUFBRlFFQUFCWUJBQUJRbVFRQTRna0FBQUFBQUFGQUFBQUFBQVFFZ1dJQ2dBQkJrSVlRQ3c0WEFRQUFHQUVBQUJrQkFBQWFBUUJCcUlZUUN3NFRBUUFBR3dFQUFCd0JBQUFkQVFCQndJWVFDdzRUQVFBQUhnRUFBQjhCQUFBZ0FRQkIySVlRQ3c0VEFRQUFJUUVBQUNJQkFBQWpBUUJCOElZUUN3NFRBUUFBSkFFQUFDVUJBQUFtQVFCQmlJY1FDdzRUQVFBQUp3RUFBQ2dCQUFBcEFRQkJvSWNRQ3c0VEFRQUFLZ0VBQUNzQkFBQXNBUUJCdUljUUN3NFRBUUFBTFFFQUFDNEJBQUF2QVFCQjBJY1FDdzRUQVFBQU1BRUFBREVCQUFBeUFRQkI2SWNRQ3c0VEFRQUFNd0VBQURRQkFBQTFBUUJCZ0lnUUN3NFRBUUFBTmdFQUFEY0JBQUE0QVFCQm1JZ1FDdzRUQVFBQU9RRUFBRG9CQUFBN0FRQkJzSWdRQ3c0VEFRQUFQQUVBQUQwQkFBQStBUUJCeUlnUUN3NFRBUUFBUHdFQUFFQUJBQUJCQVFCQjRJZ1FDdzRUQVFBQVFnRUFBRU1CQUFCRUFRQkIrSWdRQ3c0VEFRQUFSUUVBQUVZQkFBQkhBUUJCa0lrUUN3NFRBUUFBU0FFQUFFa0JBQUJLQVFCQnFJa1FDdzRUQVFBQVN3RUFBRXdCQUFCTkFRQkJ3SWtRQ3c0VEFRQUFUZ0VBQUU4QkFBQlFBUUJCMklrUUN3NFRBUUFBVVFFQUFGSUJBQUJUQVFCQjhJa1FDdzRUQVFBQVZBRUFBRlVCQUFCV0FRQkJpSW9RQ3c0VEFRQUFWd0VBQUZnQkFBQlpBUUJCb0lvUUN3NFRBUUFBV2dFQUFGc0JBQUJjQVFCQnVJb1FDdzRUQVFBQVhRRUFBRjRCQUFCZkFRQkIwSW9RQ3c0VEFRQUFZQUVBQUdFQkFBQmlBUUJCNklvUUN3NFRBUUFBWXdFQUFHUUJBQUJsQVFCQmdJc1FDdzRUQVFBQVpnRUFBR2NCQUFCb0FRQkJtSXNRQ3c0VEFRQUFhUUVBQUdvQkFBQnJBUUJCc0lzUUN3NFRBUUFBYkFFQUFHMEJBQUJ1QVFCQnlJc1FDdzRUQVFBQWJ3RUFBSEFCQUFCeEFRQkI0SXNRQ3c0VEFRQUFjZ0VBQUhNQkFBQjBBUUJCK0lzUUN3NFRBUUFBZFFFQUFIWUJBQUIzQVFCQmtJd1FDdzRUQVFBQWVBRUFBSGtCQUFCNkFRQkJxSXdRQ3c0VEFRQUFld0VBQUh3QkFBQjlBUUJCd0l3UUN3NFRBUUFBZmdFQUFIOEJBQUNBQVFCQjJJd1FDdzRUQVFBQWdRRUFBSUlCQUFDREFRQkI4SXdRQ3c0VEFRQUFoQUVBQUlVQkFBQ0dBUUJCaUkwUUN3NFRBUUFBaHdFQUFJZ0JBQUNKQVFCQm9JMFFDdzRUQVFBQWlnRUFBSXNCQUFDTUFRQkJ1STBRQ3c0VEFRQUFqUUVBQUk0QkFBQ1BBUUJCMEkwUUN3NFRBUUFBa0FFQUFKRUJBQUNTQVFCQjZJMFFDdzRUQVFBQWt3RUFBSlFCQUFDVkFRQkJnSTRRQ3c0VEFRQUFsZ0VBQUpjQkFBQ1lBUUJCbUk0UUN3NFRBUUFBbVFFQUFKb0JBQUNiQVFCQnNJNFFDdzRUQVFBQW5BRUFBSjBCQUFDZUFRQkJ5STRRQ3c0VEFRQUFud0VBQUtBQkFBQ2hBUUJCNEk0UUN3NFRBUUFBb2dFQUFLTUJBQUNrQVFCQitJNFFDdzRUQVFBQXBRRUFBS1lCQUFDbkFRQkJrSThRQ3c0VEFRQUFxQUVBQUtrQkFBQ3FBUUJCcUk4UUN3NFRBUUFBcXdFQUFLd0JBQUN0QVFCQndJOFFDdzRUQVFBQXJnRUFBSzhCQUFDd0FRQkIySThRQ3c0VEFRQUFzUUVBQUxJQkFBQ3pBUUJCOEk4UUN3NFRBUUFBdEFFQUFMVUJBQUMyQVFCQmlKQVFDdzRUQVFBQXR3RUFBTGdCQUFDNUFRQkJvSkFRQ3c0VEFRQUF1Z0VBQUxzQkFBQzhBUUJCdUpBUUN3NFRBUUFBdlFFQUFMNEJBQUMvQVFCQjBKQVFDdzRUQVFBQXdBRUFBTUVCQUFEQ0FRQkI2SkFRQ3c0VEFRQUF3d0VBQU1RQkFBREZBUUJCZ0pFUUN3NFRBUUFBeGdFQUFNY0JBQURJQVFCQm1KRVFDdzRUQVFBQXlRRUFBTW9CQUFETEFRQkJzSkVRQ3c0VEFRQUF6QUVBQU0wQkFBRE9BUUJCeUpFUUN3NFRBUUFBendFQUFOQUJBQURSQVFCQjRKRVFDdzRUQVFBQTBnRUFBTk1CQUFEVUFRQkIrSkVRQ3c0VEFRQUExUUVBQU5ZQkFBRFhBUUJCa0pJUUN3NFRBUUFBMkFFQUFOa0JBQURhQVFCQnFKSVFDdzRUQVFBQTJ3RUFBTndCQUFEZEFRQkJ3SklRQ3c0VEFRQUEzZ0VBQU44QkFBRGdBUUJCMkpJUUN3NFRBUUFBNFFFQUFPSUJBQURqQVFCQjhKSVFDdzRUQVFBQTVBRUFBT1VCQUFEbUFRQkJpSk1RQ3c0VEFRQUE1d0VBQU9nQkFBRHBBUUJCb0pNUUN3NFhBUUFBNmdFQUFPc0JBQURzQVFCQnVKTVFDdzRYQVFBQTdRRUFBTzRCQUFEdkFRQkIwSk1RQ3c0WEFRQUE4QUVBQVBFQkFBRHlBUUJCNkpNUUN3NFhBUUFBOHdFQUFQUUJBQUQxQVFCQmdKUVFDdzRYQVFBQTlnRUFBUGNCQUFENEFRQkJtSlFRQ3c0WEFRQUErUUVBQVBvQkFBRDdBUUJCc0pRUUN3NFhBUUFBL0FFQUFQMEJBQUQrQVFCQnlKUVFDdzRYQVFBQS93RUFBQUFDQUFBQkFnQkI0SlFRQzU4SEZ3RUFBQUlDQUFBREFnQUFCQUlBQUFJQUFBRGdPZ1FBQWdBQUFEQTdCQUFDQUFBQWdEc0VBQUlBQUFEUU93UUFBZ0FBQUNBOEJBQUJBQUFBVUZJRUFBSUFBQUJ3UEFRQUFnQUFBTUE4QkFBQ0FBQUFFRDBFQUFJQUFBQmdQUVFBQWdBQUFMQTlCQUFDQUFBQUFENEVBQUlBQUFCUVBnUUFBZ0FBQUtBK0JBQUNBQUFBOEQ0RUFBSUFBQUJBUHdRQUFnQUFBSkEvQkFBQ0FBQUE0RDhFQUFFQUFBQjRVZ1FBQWdBQUFEQkFCQUFCQUFBQW9GSUVBQUlBQUFDQVFBUUFBUUFBQU1oU0JBQUJBQUFBOEZJRUFBRUFBQUFZVXdRQUFnQUFBTkJBQkFBQ0FBQUFJRUVFQUFJQUFBQndRUVFBQWdBQUFNQkJCQUFDQUFBQUVFSUVBQUlBQUFCZ1FnUUFBZ0FBQUxCQ0JBQUNBQUFBQUVNRUFBSUFBQUJRUXdRQUFRQUFBRUJUQkFBQ0FBQUFvRU1FQUFJQUFBRHdRd1FBQWdBQUFFQkVCQUFDQUFBQWtFUUVBQUlBQUFEZ1JBUUFBZ0FBQURCRkJBQUNBQUFBZ0VVRUFBSUFBQURRUlFRQUFnQUFBQ0JHQkFBQ0FBQUFjRVlFQUFJQUFBREFSZ1FBQWdBQUFCQkhCQUFDQUFBQVlFY0VBQUlBQUFDd1J3UUFBZ0FBQUFCSUJBQUNBQUFBVUVnRUFBSUFBQUNnU0FRQUF3QUFBSmczQkFBQ0FBQUE4RWdFQUFFQUFBQm9Vd1FBQVFBQUFKQlRCQUFCQUFBQXVGTUVBQUVBQUFEZ1V3UUFBUUFBQUFoVUJBQUJBQUFBTUZRRUFBSUFBQUJBU1FRQUFnQUFBSkJKQkFBQ0FBQUE0RWtFQUFFQUFBQllWQVFBQVFBQUFJQlVCQUFDQUFBQU1Fb0VBQUlBQUFDQVNnUUFBZ0FBQU5CS0JBQURBQUFBRURnRUFBSUFBQUFnU3dRQUFnQUFBSEJMQkFBQ0FBQUF3RXNFQUFJQUFBQVFUQVFBQWdBQUFHQk1CQUFDQUFBQXNFd0VBQUVBQUFDb1ZBUUFBZ0FBQUFCTkJBQUNBQUFBVUUwRUFBRUFBQURRVkFRQUFnQUFBS0JOQkFBQkFBQUErRlFFQUFFQUFBQWdWUVFBQVFBQUFFaFZCQUFCQUFBQWNGVUVBQUVBQUFDWVZRUUFBUUFBQU1CVkJBQUJBQUFBNkZVRUFCc0FBQUF3RGdRQURBQUFBSEFaQkFBR0FBQUFnQ2NFQUFVQUFBREFNZ1FBQ2dBQUFCQWZCQUFDQUFBQThFMEVBQThBQUFEb0ZBUUFDQUFBQUFBbEJBQUdBQUFBY0NnRUFBWUFBQUJnS1FRQUNBQUFBRUFtQkFBT0FBQUFRQmNFQUFJQUFBQkFUZ1FBREFBQUFGQWJCQUFKQUFBQU1DSUVBQUVBQUFBUVZnUUFBUUFBQURoV0JBQUJBQUFBWUZZRUFBRUFBQUNJVmdRQUFRQUFBTEJXQkFBQkFBQUEyRllFQUFFQUFBQUFWd1FBQVFBQUFDaFhCQUFCQUFBQVVGY0VBQUVBQUFCNFZ3UUFBUUFBQUtCWEJBQUJBQUFBeUZjRUFFR0luQkFMR2dVQ0FBQUdBZ0FBQndJQUFBZ0NBQUFKQWdBQUNnSUFBQXNDQUVHd25CQUxHUUVCQUFCd1dBUUE4RmtFQUhoMkJBQXBQd01BQUFBQUFQRUFRZGljRUFzWkFnSUFBTkJZQkFEd1dRUUFzRzBFQUNrL0F3QUFBQUFBOFFCQmdKMFFDeGtCQVFBQWNGZ0VBUEJaQkFDQWRnUUFPRDhEQUFBQUFBRHhBRUdvblJBTEdRSUNBQURRV0FRQThGa0VBTUJ0QkFBNFB3TUFBQUFBQVBFQVFkQ2RFQXNaQVFFQUFIQllCQUR3V1FRQWlIWUVBRGcvQXdBQUFBQUE4UUJCK0owUUN4a0NBZ0FBMEZnRUFQQlpCQURRYlFRQU9EOERBQUFBQUFEeEFFR2duaEFMR1FFQkFBQndXQVFBOEZrRUFKQjJCQUErUHdNQUFBQUFBUEVBUWNpZUVBc1pBZ0lBQU5CWUJBRHdXUVFBNEcwRUFENC9Bd0FBQUFBQThRQkI4SjRRQ3hrQkFRQUFjRmdFQVBCWkJBQ1lkZ1FBT0Q4REFBQUFBQUR4QUVHWW54QUxHUUlDQUFEUVdBUUE4RmtFQVBCdEJBQTRQd01BQUFBQUFQRUFRY0NmRUFzWkFRRUFBSEJZQkFEd1dRUUFvSFlFQURnL0F3QUFBQUFBOFFCQjZKOFFDeGtDQWdBQTBGZ0VBUEJaQkFBQWJnUUFPRDhEQUFBQUFBRHhBRUdRb0JBTEdRRUJBQUJ3V0FRQThGa0VBS2gyQkFBNFB3TUFBQUFBQVBFQVFiaWdFQXNaQVFBQUFLQlpCQUR3V1FRQXNIWUVBRGcvQXdBQUFBQUE4UUJCNEtBUUN4a0NBUUFBaUZnRUFQQlpCQUFRYmdRQU9EOERBQUFBQUFEeEFFR0lvUkFMR1FFQUFBQ2dXUVFBOEZrRUFMaDJCQUE0UHdNQUFBQUFBUEVBUWJDaEVBc1pBZ0VBQUloWUJBRHdXUVFBSUc0RUFEZy9Bd0FBQUFBQThRQkIyS0VRQ3hrQkFBQUFvRmtFQVBCWkJBREFkZ1FBT0Q4REFBQUFBQUR4QUVHQW9oQUxHUUlCQUFDSVdBUUE4RmtFQURCdUJBQTRQd01BQUFBQUFQRUFRYWlpRUFzWkFRQUFBS0JaQkFEd1dRUUF5SFlFQURnL0F3QUFBQUFBOFFCQjBLSVFDeGtDQVFBQWlGZ0VBUEJaQkFCQWJnUUFPRDhEQUFBQUFBRHhBRUg0b2hBTEdRRUFBQUNnV1FRQThGa0VBTkIyQkFBNFB3TUFBQUFBQVBFQVFhQ2pFQXNaQVFBQ0FLQlpCQURRV1FRQTJIWUVBQ2svQXdBQUFBQUE4UUJCeUtNUUN4a0JBQUlBb0ZrRUFOQlpCQURnZGdRQU9EOERBQUFBQUFEeEFFSHdveEFMR1FFQUFnQ2dXUVFBMEZrRUFPaDJCQUE0UHdNQUFBQUFBUEVBUVppa0VBc1pBUUFDQUtCWkJBRFFXUVFBOEhZRUFENC9Bd0FBQUFBQThRQkJ3S1FRQ3hrQkFBQUFvRmtFQVBCWkJBRDRkZ1FBT0Q4REFBQUFBQUR4QUVIc3BCQUxsUVdnV1FRQThGa0VBS0I1QkFCd1B3TUFBQUFBQVBRQUFBQUFBQUFBREFJQUFBQUFBQUFBQVFBQWtGa0VBUEJaQkFDZ2VRUUFSajhEQUFBQUFBRDBBQUFBQUFBQUFBd0NBQUFBQUFBQUFRRUFBRWhaQkFEd1dRUUFpSGdFQUVZL0F3QUFBQUFBOUFBQUFBQUFBQUFOQWdBQUFBQUFBQUVCQUFCSVdRUUE4RmtFQUpCNEJBQkdQd01BQUFBQUFQUUFBQUFBQUFBQURnSUFBQUFBQUFBRUFRQUFTRmtFQVBCWkJBQklad1FBUmo4REFBQUFBQUQwQUFBQUFBQUFBQThDQUFBQUFBQUFBd0VBQUVoWkJBRHdXUVFBOEdzRUFFWS9Bd0FBQUFBQTlBQUFBQUFBQUFBUUFnQUFBQUFBQUFNQkFBQklXUVFBOEZrRUFBaHNCQUJHUHdNQUFBQUFBUFFBQUFBQUFBQUFFQUlBQUFBQUFBQURBUUFBU0ZrRUFQQlpCQUFnYkFRQVJqOERBQUFBQUFEMEFBQUFBQUFBQUJBQ0FBQUFBQUFBQWdFQUFFaFpCQUR3V1FRQWtISUVBRVkvQXdBQUFBQUE5QUFBQUFBQUFBQVFBZ0FBQUFBQUFBSUJBQUJJV1FRQThGa0VBS0J5QkFCR1B3TUFBQUFBQVBRQUFBQUFBQUFBRUFJQUFBQUFBQUFDQVFBQVNGa0VBUEJaQkFDd2NnUUFSajhEQUFBQUFBRDBBQUFBQUFBQUFCQUNBQUFBQUFBQUFRSUFBT0JZQkFEd1dRUUFtSGdFQURJL0F3QUFBQUFBK0FBQUFBQUFBQUFSQWdBQUFBQUFBQUVDQUFEd1dBUUE4RmtFQUtCNEJBQjBQd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFnQUFBRmtFQVBCWkJBQ29lQVFBV2o4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBUUlBQUJCWkJBRHdXUVFBc0hnRUFGdy9Bd0FBQUFBQStBQUFBQUFBQUFBUkFnQUFBQUFBQUFFQ0FBQWdXUVFBOEZrRUFMaDRCQUIyUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQURBQUFBb0ZrRUFQQlpCQUNZYVFRQU1qOERBQUFBQUFDaEFFR1FxaEFMR1FNQUFBQ2dXUVFBOEZrRUFMQnBCQUF5UHdNQUFBQUFBS0VBUWJpcUVBc1pCQUFBQUtCWkJBRHdXUVFBU0dRRUFESS9Bd0FBQUFBQW9RQkI0S29RQ3hrRUFRQUFnRmdFQVBCWkJBQm9aQVFBTWo4REFBQUFBQUNoQUVHSXF4QUxHUVVCQUFDQVdBUUE4RmtFQUxoZkJBQXlQd01BQUFBQUFLRUFRYkNyRUFzWkF3QUFBS0JaQkFEd1dRUUF5R2tFQURJL0F3QUFBQUFBb1FCQjJLc1FDeGtFQUFBQW9Ga0VBUEJaQkFDSVpBUUFNajhEQUFBQUFBQ2hBRUdBckJBTEdRTUFBQUNnV1FRQThGa0VBT0JwQkFBeVB3TUFBQUFBQUtFQVFhaXNFQXNaQkFFQUFJQllCQUR3V1FRQXFHUUVBREkvQXdBQUFBQUFvUUJCMEt3UUN4a0RBQUFBb0ZrRUFQQlpCQUQ0YVFRQTZqNERBQUFBQUFDaEFFSDRyQkFMR1FRQUFBQ2dXUVFBOEZrRUFNaGtCQURxUGdNQUFBQUFBS0VBUWFDdEVBc1pCQUVBQUlCWUJBRHdXUVFBNkdRRUFPbytBd0FBQUFBQW9RQkJ5SzBRQ3hrRkFRQUFnRmdFQVBCWkJBRGdYd1FBNmo0REFBQUFBQUNoQUVId3JSQUxHUU1BQUFDZ1dRUUE4RmtFQUJCcUJBRHFQZ01BQUFBQUFLRUFRWml1RUFzWkJBRUFBSUJZQkFEd1dRUUFDR1VFQU9vK0F3QUFBQUFBb1FCQndLNFFDeGtFQUFBQW9Ga0VBUEJaQkFBSVpnUUFNajhEQUFBQUFBRHhBRUhvcmhBTEdRVUFBQUNnV1FRQThGa0VBQkJpQkFBeVB3TUFBQUFBQVBFQVFaQ3ZFQXNaQlFFQUFJQllCQUR3V1FRQU9HSUVBREkvQXdBQUFBQUE4UUJCdUs4UUN4a0dBUUFBZ0ZnRUFQQlpCQURnWFFRQU1qOERBQUFBQUFEeEFFSGdyeEFMR1FRQUFBQ2dXUVFBOEZrRUFDaG1CQUF5UHdNQUFBQUFBUEVBUVlpd0VBc1pCUUFBQUtCWkJBRHdXUVFBWUdJRUFESS9Bd0FBQUFBQThRQkJzTEFRQ3hrRUFBQUFvRmtFQVBCWkJBQklaZ1FBTWo4REFBQUFBQUR4QUVIWXNCQUxHUVVCQUFDQVdBUUE4RmtFQUloaUJBQXlQd01BQUFBQUFQRUFRWUN4RUFzWkJBRUFBSWhZQkFEd1dRUUFhR1lFQU9vK0F3QUFBQUFBOFFCQnFMRVFDeGtGQVFBQWlGZ0VBUEJaQkFDd1lnUUE2ajREQUFBQUFBRHhBRUhRc1JBTEdRVUNBQUNBV0FRQThGa0VBTmhpQkFEcVBnTUFBQUFBQVBFQVFmaXhFQXNaQmdJQUFJQllCQUR3V1FRQUVGNEVBT28rQXdBQUFBQUE4UUJCb0xJUUN4a0VBUUFBaUZnRUFQQlpCQUNJWmdRQTZqNERBQUFBQUFEeEFFSElzaEFMR1FVQ0FBQ0FXQVFBOEZrRUFBQmpCQURxUGdNQUFBQUFBUEVBUWZDeUVBc1pCQUlBQUhCWUJBRHdXUVFBYUdNRUFFWS9Bd0FBQUFBQThRQkJtTE1RQ3hrRkFnQUFjRmdFQVBCWkJBQ2dYZ1FBUmo4REFBQUFBQUR4QUVIQXN4QUxHUVVEQUFCd1dBUUE4RmtFQU1oZUJBQkdQd01BQUFBQUFQRUFRZWl6RUFzWkJnTUFBSEJZQkFEd1dRUUFNRndFQUVZL0F3QUFBQUFBOFFCQmtMUVFDeGtFQWdBQWNGZ0VBUEJaQkFDSVl3UUFSajhEQUFBQUFBRHhBRUc0dEJBTEdRVURBQUJ3V0FRQThGa0VBUEJlQkFCR1B3TUFBQUFBQVBFQVFlQzBFQXNaQXdBQUFLQlpCQUR3V1FRQWFHa0VBREkvQXdBQUFBQUE4UUJCaUxVUUN4a0VBQUFBb0ZrRUFQQlpCQUNvWXdRQU1qOERBQUFBQUFEeEFFR3d0UkFMR1FRQkFBQ0FXQVFBOEZrRUFNaGpCQUF5UHdNQUFBQUFBUEVBUWRpMUVBc1pCUUVBQUlCWUJBRHdXUVFBR0Y4RUFESS9Bd0FBQUFBQThRQkJnTFlRQ3hrREFBQUFvRmtFQVBCWkJBQ0FhUVFBTWo4REFBQUFBQUR4QUVHb3RoQUxHUVFCQUFDQVdBUUE4RmtFQU9oakJBQXlQd01BQUFBQUFQRUFRZEMyRUFzUEF3RUFBSGhZQkFEd1dRUUFXR29FQUVIb3RoQUxBWEVBUWZpMkVBc1BBd0VBQUhoWUJBRHdXUVFBY0dvRUFFR1F0eEFMQVhFQVFhQzNFQXNQQkFJQUFIaFlCQUR3V1FRQXFHWUVBRUc0dHhBTEFYRUFRY2kzRUFzUEF3RUFBSGhZQkFEd1dRUUFpR29FQUVIZ3R4QUxBWEVBUWZDM0VBc1BBd0VBQUhoWUJBRHdXUVFBb0dvRUFFR0l1QkFMQVhFQVFaaTRFQXNQQXdFQUFIaFlCQUR3V1FRQXVHb0VBRUd3dUJBTEFYRUFRY0M0RUFzUEJBSUFBSGhZQkFEd1dRUUF5R1lFQUVIWXVCQUxBWEVBUWVpNEVBc1BBd0VBQUhoWUJBRHdXUVFBMEdvRUFFR0F1UkFMQVhFQVFaQzVFQXNQQXdFQUFIaFlCQUR3V1FRQTZHb0VBRUdvdVJBTEFYRUFRYmk1RUFzUEF3RUFBSGhZQkFEd1dRUUFBR3NFQUVIUXVSQUxBWEVBUWVDNUVBc1BCQUlBQUhoWUJBRHdXUVFBNkdZRUFFSDR1UkFMQVhFQVFZaTZFQXNQQXdFQUFIaFlCQUR3V1FRQUdHc0VBRUdndWhBTEFYRUFRYlM2RUF2MUE2QlpCQUR3V1FRQW9Ia0VBR28vQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBQUJBQUNRV1FRQThGa0VBS0I1QkFBcVB3TUFBQUFBQVBRQUFBQUFBQUFBREFJQUFBQUFBQUFCQVFBQVNGa0VBUEJaQkFCUWVBUUFLajhEQUFBQUFBRDBBQUFBQUFBQUFBMENBQUFBQUFBQUFRRUFBRWhaQkFEd1dRUUFXSGdFQUNvL0F3QUFBQUFBOUFBQUFBQUFBQUFPQWdBQUFBQUFBQU1CQUFCSVdRUUE4RmtFQU5ockJBQXFQd01BQUFBQUFQUUFBQUFBQUFBQUR3SUFBQUFBQUFBQ0FRQUFTRmtFQVBCWkJBQndjZ1FBS2o4REFBQUFBQUQwQUFBQUFBQUFBQkFDQUFBQUFBQUFBZ0VBQUVoWkJBRHdXUVFBZ0hJRUFDby9Bd0FBQUFBQTlBQUFBQUFBQUFBUUFnQUFBQUFBQUFFQ0FBRGdXQVFBOEZrRUFHQjRCQUJLUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBZ0FBOEZnRUFQQlpCQUJvZUFRQWJEOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQVFJQUFBQlpCQUR3V1FRQWNIZ0VBRlEvQXdBQUFBQUErQUFBQUFBQUFBQVJBZ0FBQUFBQUFBRUNBQUFRV1FRQThGa0VBSGg0QkFBK1B3TUFBQUFBQVBnQUFBQUFBQUFBRVFJQUFBQUFBQUFCQWdBQUlGa0VBUEJaQkFDQWVBUUFiajhEQUFBQUFBRDRBQUFBQUFBQUFCRUNBQUFBQUFBQUFRRUFBSEJZQkFEd1dRUUFLSGNFQUNrL0F3QUFBQUFBOFFCQnVMNFFDeGtCQVFBQWNGZ0VBUEJaQkFBd2R3UUFLVDhEQUFBQUFBRHhBRUhndmhBTEdRRUJBQUJ3V0FRQThGa0VBRGgzQkFBcFB3TUFBQUFBQVBFQVFZaS9FQXNaQVFFQUFIQllCQUR3V1FRQVFIY0VBQ2svQXdBQUFBQUE4UUJCc0w4UUN4a0JBUUFBY0ZnRUFQQlpCQUJJZHdRQUtUOERBQUFBQUFEeEFFSFl2eEFMR1FFQkFBQndXQVFBOEZrRUFGQjNCQUFwUHdNQUFBQUFBUEVBUVlEQUVBc1pBUUFBQUtCWkJBRHdXUVFBV0hjRUFDay9Bd0FBQUFBQThRQkJxTUFRQ3hrQkFBQUFvRmtFQVBCWkJBQmdkd1FBS1Q4REFBQUFBQUR4QUVIUXdCQUxHUUVBQUFDZ1dRUUE4RmtFQUdoM0JBQXBQd01BQUFBQUFQRUFRZmpBRUFzWkFRQUFBS0JaQkFEd1dRUUFjSGNFQUNrL0F3QUFBQUFBOFFCQnBNRVFDNlVEb0ZrRUFQQlpCQUNnZVFRQVpEOERBQUFBQUFEMEFBQUFBQUFBQUF3Q0FBQUFBQUFBQUFFQUFKQlpCQUR3V1FRQW9Ia0VBTmMrQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBRUJBQUJJV1FRQThGa0VBQmg0QkFEWFBnTUFBQUFBQVBRQUFBQUFBQUFBRFFJQUFBQUFBQUFCQVFBQVNGa0VBUEJaQkFBZ2VBUUExejREQUFBQUFBRDBBQUFBQUFBQUFBNENBQUFBQUFBQUFnRUFBRWhaQkFEd1dRUUFZSElFQU5jK0F3QUFBQUFBOUFBQUFBQUFBQUFQQWdBQUFBQUFBQUVDQUFEZ1dBUUE4RmtFQUNoNEJBQXdQd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFnQUE4RmdFQVBCWkJBQXdlQVFBWmo4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBUUlBQUFCWkJBRHdXUVFBT0hnRUFFZy9Bd0FBQUFBQStBQUFBQUFBQUFBUkFnQUFBQUFBQUFFQ0FBQVFXUVFBOEZrRUFFQjRCQUE0UHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBZ0FBSUZrRUFQQlpCQUJJZUFRQWFEOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQXdNQUFKQllCQUR3V1FRQU1Hc0VBRVkvQXdBQUFBQUE4UUJCMk1RUUN4a0RBd0FBa0ZnRUFQQlpCQUJJYXdRQVJqOERBQUFBQUFEeEFFR0F4UkFMR1FRRUFBQndXQVFBOEZrRUFBaG5CQUJHUHdNQUFBQUFBUEVBUWFqRkVBc1pBd01BQUpCWUJBRHdXUVFBWUdzRUFFWS9Bd0FBQUFBQThRQkIwTVVRQ3hrREF3QUFxRmdFQVBCWkJBQjRhd1FBUmo4REFBQUFBQUR4QUVINHhSQUxHUU1DQUFDWVdBUUE4RmtFQUpCckJBRHFQZ01BQUFBQUFQRUFRYURHRUFzWkJBTUFBSGhZQkFEd1dRUUFLR2NFQU9vK0F3QUFBQUFBOFFCQnlNWVFDeGtEQWdBQXNGZ0VBUEJaQkFDb2F3UUE2ajREQUFBQUFBRHhBRUh3eGhBTEdRSUJBQUI0V0FRQThGa0VBRkJ1QkFBeVB3TUFBQUFBQVBFQVFaakhFQXVCQXdJQkFBQXdXUVFBOEZrRUFKQnZCQUREUGdNQUFBQUFBUElBQUFBQUFBQUFFZ0lBQUFBQUFBQUNBUUVBTUZrRUFNQlpCQUNnYndRQTRqNERBQUFBQUFEeUFBQUFBQUFBQUJJQ0FBQUFBQUFBQWdFQkFEQlpCQURBV1FRQXNHOEVBT0krQXdBQUFBQUE4Z0FBQUFBQUFBQVNBZ0FBQUFBQUFBSUJBUUF3V1FRQXdGa0VBTUJ2QkFEaVBnTUFBQUFBQVBJQUFBQUFBQUFBRWdJQUFBQUFBQUFDQVFJQXdGZ0VBTUJaQkFEUWJ3UUF6ajREQUFBQUFBRHlBQUFBQUFBQUFCSUNBQUFBQUFBQUFnRUNBTUJZQkFEQVdRUUE0RzhFQU00K0F3QUFBQUFBOGdBQUFBQUFBQUFTQWdBQUFBQUFBQUlCQWdEQVdBUUFxRmtFQVBCdkJBQWtQd01BQUFBQUFQSUFBQUFBQUFBQUV3SUFBQUFBQUFBQ0FRSUF3RmdFQUtoWkJBQUFjQVFBNGo0REFBQUFBQUR5QUFBQUFBQUFBQlFDQUFBQUFBQUFBZ0VEQU1CWUJBQ2dXUVFBRUhBRUFONCtBd0FBQUFBQThnQUFBQUFBQUFBVkFnQUFBQUFBQUFRQUFBQ2dXUVFBOEZrRUFDaGxCQUF5UHdNQUFBQUFBS0VBUWFqS0VBc1pCUUFBQUtCWkJBRHdXUVFBQ0dBRUFESS9Bd0FBQUFBQW9RQkIwTW9RQ3hrRkFRQUFnRmdFQVBCWkJBQXdZQVFBTWo4REFBQUFBQUNoQUVINHloQUxHUVlCQUFDQVdBUUE4RmtFQUpCY0JBQXlQd01BQUFBQUFLRUFRYURMRUFzWkJBQUFBS0JaQkFEd1dRUUFTR1VFQURJL0F3QUFBQUFBb1FCQnlNc1FDeGtGQUFBQW9Ga0VBUEJaQkFCWVlBUUFNajhEQUFBQUFBQ2hBRUh3eXhBTEdRUUFBQUNnV1FRQThGa0VBR2hsQkFBeVB3TUFBQUFBQUtFQVFaak1FQXNaQlFFQUFJQllCQUR3V1FRQWdHQUVBREkvQXdBQUFBQUFvUUJCd013UUN4a0ZBQUFBb0ZrRUFQQlpCQUNZWVFRQU1qOERBQUFBQUFEeEFFSG96QkFMR1FZQUFBQ2dXUVFBOEZrRUFDQmRCQUF5UHdNQUFBQUFBUEVBUVpETkVBc1pCZ0VBQUlCWUJBRHdXUVFBVUYwRUFESS9Bd0FBQUFBQThRQkJ1TTBRQ3hrSEFRQUFnRmdFQVBCWkJBRDRXd1FBTWo4REFBQUFBQUR4QUVIZ3pSQUxHUVVBQUFDZ1dRUUE4RmtFQU1CaEJBQXlQd01BQUFBQUFQRUFRWWpPRUFzWkJnQUFBS0JaQkFEd1dRUUFnRjBFQURJL0F3QUFBQUFBOFFCQnNNNFFDeGtGQUFBQW9Ga0VBUEJaQkFEb1lRUUFNajhEQUFBQUFBRHhBRUhZemhBTEdRWUJBQUNBV0FRQThGa0VBTEJkQkFBeVB3TUFBQUFBQVBFQVFZRFBFQXNaQkFBQUFLQlpCQUR3V1FRQUNHUUVBREkvQXdBQUFBQUE4UUJCcU04UUN4a0ZBQUFBb0ZrRUFQQlpCQUJBWHdRQU1qOERBQUFBQUFEeEFFSFF6eEFMR1FVQkFBQ0FXQVFBOEZrRUFHaGZCQUF5UHdNQUFBQUFBUEVBUWZqUEVBc1pCZ0VBQUlCWUJBRHdXUVFBWUZ3RUFESS9Bd0FBQUFBQThRQkJvTkFRQ3hrRUFBQUFvRmtFQVBCWkJBQW9aQVFBTWo4REFBQUFBQUR4QUVISTBCQUxHUVVCQUFDQVdBUUE4RmtFQUpCZkJBQXlQd01BQUFBQUFQRUFRZkRRRUFzWkJBQUFBS0JaQkFEd1dRUUFpR1VFQU9vK0F3QUFBQUFBb1FCQm1ORVFDeGtGQUFBQW9Ga0VBUEJaQkFDb1lBUUE2ajREQUFBQUFBQ2hBRUhBMFJBTEdRVUJBQUNBV0FRQThGa0VBTkJnQkFEcVBnTUFBQUFBQUtFQVFlalJFQXNaQmdFQUFJQllCQUR3V1FRQXdGd0VBT28rQXdBQUFBQUFvUUJCa05JUUN4a0VBQUFBb0ZrRUFQQlpCQUNvWlFRQTZqNERBQUFBQUFDaEFFRzQwaEFMR1FVQkFBQ0FXQVFBOEZrRUFQaGdCQURxUGdNQUFBQUFBS0VBUWVEU0VBc1pCQUFBQUtCWkJBRHdXUVFBeUdVRUFPbytBd0FBQUFBQThRQkJpTk1RQ3hrRkFBQUFvRmtFQVBCWkJBQWdZUVFBNmo0REFBQUFBQUR4QUVHdzB4QUxHUVVCQUFDQVdBUUE4RmtFQUVoaEJBRHFQZ01BQUFBQUFQRUFRZGpURUFzWkJnRUFBSUJZQkFEd1dRUUE4RndFQU9vK0F3QUFBQUFBOFFCQmdOUVFDeGtFQUFBQW9Ga0VBUEJaQkFEb1pRUUE2ajREQUFBQUFBRHhBRUdvMUJBTEdRVUJBQUNBV0FRQThGa0VBSEJoQkFEcVBnTUFBQUFBQVBFQVFkSFVFQXVJRVFFQUFKaFpCQUR3V1FRQW9Ia0VBSGcvQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBRUJBQUNZV1FRQThGa0VBTUI0QkFCNFB3TUFBQUFBQVBRQUFBQUFBQUFBRFFJQUFBQUFBQUFFQVFBQXdGZ0VBUEJaQkFCb1p3UUFlRDhEQUFBQUFBRDBBQUFBQUFBQUFCWUNBQUFBQUFBQUFnRUFBTUJZQkFEd1dRUUF3SElFQUhnL0F3QUFBQUFBOUFBQUFBQUFBQUFYQWdBQUFBQUFBQUVCQUFEd1dBUUE4RmtFQU1oNEJBQjhQd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFRQUE0RmdFQVBCWkJBRFFlQVFBZWo4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBQUVBQUpoWkJBRHdXUVFBb0hrRUFINC9Bd0FBQUFBQTlBQUFBQUFBQUFBTUFnQUFBQUFBQUFFQkFBQ1lXUVFBOEZrRUFOaDRCQUIrUHdNQUFBQUFBUFFBQUFBQUFBQUFEUUlBQUFBQUFBQUdBUUFBd0ZnRUFQQlpCQUJBWGdRQWZqOERBQUFBQUFEMEFBQUFBQUFBQUJZQ0FBQUFBQUFBQWdFQUFNQllCQUR3V1FRQTBISUVBSDQvQXdBQUFBQUE5QUFBQUFBQUFBQVhBZ0FBQUFBQUFBRUJBQUR3V0FRQThGa0VBT0I0QkFDQ1B3TUFBQUFBQVBnQUFBQUFBQUFBRVFJQUFBQUFBQUFCQVFBQTRGZ0VBUEJaQkFEb2VBUUFnRDhEQUFBQUFBRDRBQUFBQUFBQUFCRUNBQUFBQUFBQUFBRUFBSmhaQkFEd1dRUUFvSGtFQUlRL0F3QUFBQUFBOUFBQUFBQUFBQUFNQWdBQUFBQUFBQUVCQUFDWVdRUUE4RmtFQVBCNEJBQ0VQd01BQUFBQUFQUUFBQUFBQUFBQURRSUFBQUFBQUFBSUFRQUF3RmdFQVBCWkJBQjRXd1FBaEQ4REFBQUFBQUQwQUFBQUFBQUFBQllDQUFBQUFBQUFBZ0VBQU1CWUJBRHdXUVFBNEhJRUFJUS9Bd0FBQUFBQTlBQUFBQUFBQUFBWEFnQUFBQUFBQUFFQkFBRHdXQVFBOEZrRUFQaDRCQUNJUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBUUFBNEZnRUFQQlpCQUFBZVFRQWhqOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQUFFQUFKaFpCQUR3V1FRQW9Ia0VBSW8vQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBRUJBQUNZV1FRQThGa0VBQWg1QkFDS1B3TUFBQUFBQVBRQUFBQUFBQUFBRFFJQUFBQUFBQUFHQVFBQXdGZ0VBUEJaQkFCd1hnUUFpajhEQUFBQUFBRDBBQUFBQUFBQUFCWUNBQUFBQUFBQUF3RUFBTUJZQkFEd1dRUUFPR3dFQUlvL0F3QUFBQUFBOUFBQUFBQUFBQUFYQWdBQUFBQUFBQUVCQUFEd1dBUUE4RmtFQUJCNUJBQ09Qd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFRQUE0RmdFQVBCWkJBQVllUVFBakQ4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBQUVBQUpoWkJBRHdXUVFBb0hrRUFKQS9Bd0FBQUFBQTlBQUFBQUFBQUFBTUFnQUFBQUFBQUFFQkFBQ1lXUVFBOEZrRUFDQjVCQUNRUHdNQUFBQUFBUFFBQUFBQUFBQUFEUUlBQUFBQUFBQUpBUUFBd0ZnRUFQQlpCQUF3V3dRQWtEOERBQUFBQUFEMEFBQUFBQUFBQUJZQ0FBQUFBQUFBQXdFQUFNQllCQUR3V1FRQVVHd0VBSkEvQXdBQUFBQUE5QUFBQUFBQUFBQVhBZ0FBQUFBQUFBRUJBQUR3V0FRQThGa0VBQ2g1QkFDVVB3TUFBQUFBQVBnQUFBQUFBQUFBRVFJQUFBQUFBQUFCQVFBQTRGZ0VBUEJaQkFBd2VRUUFrajhEQUFBQUFBRDRBQUFBQUFBQUFCRUNBQUFBQUFBQUFBRUFBSmhaQkFEd1dRUUFvSGtFQUpZL0F3QUFBQUFBOUFBQUFBQUFBQUFNQWdBQUFBQUFBQUVCQUFDWVdRUUE4RmtFQURoNUJBQ1dQd01BQUFBQUFQUUFBQUFBQUFBQURRSUFBQUFBQUFBTUFRQUF3RmdFQVBCWkJBQndXZ1FBbGo4REFBQUFBQUQwQUFBQUFBQUFBQllDQUFBQUFBQUFBd0VBQU1CWUJBRHdXUVFBYUd3RUFKWS9Bd0FBQUFBQTlBQUFBQUFBQUFBWEFnQUFBQUFBQUFFQkFBRHdXQVFBOEZrRUFFQjVCQUNhUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBUUFBNEZnRUFQQlpCQUJJZVFRQW1EOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQUFFQUFKaFpCQUR3V1FRQW9Ia0VBSncvQXdBQUFBQUE5QUFBQUFBQUFBQU1BZ0FBQUFBQUFBRUJBQUNZV1FRQThGa0VBRkI1QkFDY1B3TUFBQUFBQVBRQUFBQUFBQUFBRFFJQUFBQUFBQUFJQVFBQXdGZ0VBUEJaQkFDNFd3UUFuRDhEQUFBQUFBRDBBQUFBQUFBQUFCWUNBQUFBQUFBQUJBRUFBTUJZQkFEd1dRUUFpR2NFQUp3L0F3QUFBQUFBOUFBQUFBQUFBQUFYQWdBQUFBQUFBQUVCQUFEd1dBUUE4RmtFQUZoNUJBQ2dQd01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFRQUE0RmdFQVBCWkJBQmdlUVFBbmo4REFBQUFBQUQ0QUFBQUFBQUFBQkVDQUFBQUFBQUFBQUVBQUpoWkJBRHdXUVFBb0hrRUFLSS9Bd0FBQUFBQTlBQUFBQUFBQUFBTUFnQUFBQUFBQUFFQkFBQ1lXUVFBOEZrRUFHaDVCQUNpUHdNQUFBQUFBUFFBQUFBQUFBQUFEUUlBQUFBQUFBQU1BUUFBd0ZnRUFQQlpCQURRV2dRQW9qOERBQUFBQUFEMEFBQUFBQUFBQUJZQ0FBQUFBQUFBQkFFQUFNQllCQUR3V1FRQXFHY0VBS0kvQXdBQUFBQUE5QUFBQUFBQUFBQVhBZ0FBQUFBQUFBRUJBQUR3V0FRQThGa0VBSEI1QkFDbVB3TUFBQUFBQVBnQUFBQUFBQUFBRVFJQUFBQUFBQUFCQVFBQTRGZ0VBUEJaQkFCNGVRUUFwRDhEQUFBQUFBRDRBQUFBQUFBQUFCRUNBQUFBQUFBQUFBRUFBSmhaQkFEd1dRUUFvSGtFQUtnL0F3QUFBQUFBOUFBQUFBQUFBQUFNQWdBQUFBQUFBQUVCQUFDWVdRUUE4RmtFQUlCNUJBQ29Qd01BQUFBQUFQUUFBQUFBQUFBQURRSUFBQUFBQUFBUUFRQUF3RmdFQVBCWkJBRHdXUVFBcUQ4REFBQUFBQUQwQUFBQUFBQUFBQllDQUFBQUFBQUFCQUVBQU1CWUJBRHdXUVFBeUdjRUFLZy9Bd0FBQUFBQTlBQUFBQUFBQUFBWEFnQUFBQUFBQUFFQkFBRHdXQVFBOEZrRUFJaDVCQUNzUHdNQUFBQUFBUGdBQUFBQUFBQUFFUUlBQUFBQUFBQUJBUUFBNEZnRUFQQlpCQUNRZVFRQXFqOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FBQUFBQUFBQVFFQUFIQllCQUR3V1FRQUFIY0VBQ2svQXdBQUFBQUE4UUJCNk9VUUN4a0JBUUFBY0ZnRUFQQlpCQUFJZHdRQUtUOERBQUFBQUFEeEFFR1E1aEFMR1FFQUFBQ2dXUVFBOEZrRUFCQjNCQUFwUHdNQUFBQUFBUEVBUWJqbUVBc1pBUUFBQUtCWkJBRHdXUVFBR0hjRUFDay9Bd0FBQUFBQThRQkI0T1lRQ3hrQkFBSUFvRmtFQU5CWkJBQWdkd1FBS1Q4REFBQUFBQUR4QUVHSTV4QUwrZ2tDQVFBQU1Ga0VBUEJaQkFEd2JnUUF3ejREQUFBQUFBRHlBQUFBQUFBQUFCZ0NBQUFBQUFBQUFnRUJBREJaQkFEQVdRUUFBRzhFQU9JK0F3QUFBQUFBOGdBQUFBQUFBQUFZQWdBQUFBQUFBQUlCQVFBd1dRUUF3RmtFQUJCdkJBRGlQZ01BQUFBQUFQSUFBQUFBQUFBQUdBSUFBQUFBQUFBQ0FRRUFNRmtFQU1CWkJBQWdid1FBNGo0REFBQUFBQUR5QUFBQUFBQUFBQmdDQUFBQUFBQUFBZ0VDQU1CWUJBREFXUVFBTUc4RUFNNCtBd0FBQUFBQThnQUFBQUFBQUFBWUFnQUFBQUFBQUFJQkFBQXdXUVFBOEZrRUFFQnZCQUREUGdNQUFBQUFBUElBQUFBQUFBQUFHUUlBQUFBQUFBQUNBUUVBTUZrRUFNQlpCQUJRYndRQTRqNERBQUFBQUFEeUFBQUFBQUFBQUJrQ0FBQUFBQUFBQWdFQkFEQlpCQURBV1FRQVlHOEVBT0krQXdBQUFBQUE4Z0FBQUFBQUFBQVpBZ0FBQUFBQUFBSUJBUUF3V1FRQXdGa0VBSEJ2QkFEaVBnTUFBQUFBQVBJQUFBQUFBQUFBR1FJQUFBQUFBQUFDQVFJQXdGZ0VBTUJaQkFDQWJ3UUF6ajREQUFBQUFBRHlBQUFBQUFBQUFCa0NBQUFBQUFBQUFnRUFBREJaQkFEd1dRUUFJSEFFQU1NK0F3QUFBQUFBOGdBQUFBQUFBQUFhQWdBQUFBQUFBQUlCQVFBd1dRUUF3RmtFQURCd0JBRGlQZ01BQUFBQUFQSUFBQUFBQUFBQUdnSUFBQUFBQUFBQ0FRRUFNRmtFQU1CWkJBQkFjQVFBNGo0REFBQUFBQUR5QUFBQUFBQUFBQm9DQUFBQUFBQUFBZ0VCQURCWkJBREFXUVFBVUhBRUFPSStBd0FBQUFBQThnQUFBQUFBQUFBYUFnQUFBQUFBQUFJQkFBQXdXUVFBOEZrRUFHQndCQUREUGdNQUFBQUFBUElBQUFBQUFBQUFHd0lBQUFBQUFBQUNBUUVBTUZrRUFNQlpCQUJ3Y0FRQTRqNERBQUFBQUFEeUFBQUFBQUFBQUJzQ0FBQUFBQUFBQWdFQkFEQlpCQURBV1FRQWdIQUVBT0krQXdBQUFBQUE4Z0FBQUFBQUFBQWJBZ0FBQUFBQUFBSUJBUUF3V1FRQXdGa0VBSkJ3QkFEaVBnTUFBQUFBQVBJQUFBQUFBQUFBR3dJQUFBQUFBQUFDQUFBQW9Ga0VBUEJaQkFEQWNBUUE1ejREQUFBQUFBRHlBQUFBQUFBQUFCd0NBQUFBQUFBQUFnQUJBS0JaQkFEQVdRUUEwSEFFQU9VK0F3QUFBQUFBOGdBQUFBQUFBQUFjQWdBQUFBQUFBQUlCQUFCWVdRUUE4RmtFQU9Cd0JBRERQZ01BQUFBQUFQSUFBQUFBQUFBQUhBSUFBQUFBQUFBQ0FRRUFXRmtFQU1CWkJBRHdjQVFBNGo0REFBQUFBQUR5QUFBQUFBQUFBQndDQUFBQUFBQUFBZ0FBQUtCWkJBRHdXUVFBQUhFRUFPYytBd0FBQUFBQThnQUFBQUFBQUFBZEFnQUFBQUFBQUFJQUFRQ2dXUVFBd0ZrRUFCQnhCQURsUGdNQUFBQUFBUElBQUFBQUFBQUFIUUlBQUFBQUFBQUNBUUFBV0ZrRUFQQlpCQUFnY1FRQXd6NERBQUFBQUFEeUFBQUFBQUFBQUIwQ0FBQUFBQUFBQWdFQkFGaFpCQURBV1FRQU1IRUVBT0krQXdBQUFBQUE4Z0FBQUFBQUFBQWRBZ0FBQUFBQUFBTUJBQURBV0FRQThGa0VBSkJvQkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBSGdJQUFBQUFBQUFEQVFFQXdGZ0VBTUJaQkFDb2FBUUE0ajREQUFBQUFBRHhBQUFBQUFBQUFCNENBQUFBQUFBQUF3RUJBTUJZQkFEQVdRUUF3R2dFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUFlQWdBQUFBQUFBQU1CQUFCSVdRUUE4RmtFQVBCb0JBRERQZ01BQUFBQUFQRUFBQUFBQUFBQUh3SUFBQUFBQUFBREFRRUFTRmtFQU1CWkJBQUlhUVFBNGo0REFBQUFBQUR4QUFBQUFBQUFBQjhDQUFBQUFBQUFBd0VCQUVoWkJBREFXUVFBSUdrRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBZ0FnQkJqUEVRQzI2Z1dRUUE4RmtFQUtCNUJBREpQZ01BQUFBQUFQUUFBQUFBQUFBQURBSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBRElkd1FBeVQ0REFBQUFBQUQwQUFBQUFBQUFBQTBDQUFBQUFBQUFBUUVBQUdoWkJBRHdXUVFBMEhjRUFNaytBd0FBQUFBQStBQUFBQUFBQUFBUkFnQkJoUElRQzI2Z1dRUUE4RmtFQUtCNUJBQXBQd01BQUFBQUFQUUFBQUFBQUFBQURBSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBRFlkd1FBS1Q4REFBQUFBQUQwQUFBQUFBQUFBQTBDQUFBQUFBQUFBUUVBQUhCWkJBRHdXUVFBNEhjRUFDay9Bd0FBQUFBQStBQUFBQUFBQUFBUkFnQkIvUElRQzI2Z1dRUUE4RmtFQUtCNUJBRHFQZ01BQUFBQUFQUUFBQUFBQUFBQURBSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBRG9kd1FBNmo0REFBQUFBQUQwQUFBQUFBQUFBQTBDQUFBQUFBQUFBUUVBQUhoWkJBRHdXUVFBOEhjRUFPbytBd0FBQUFBQStBQUFBQUFBQUFBUkFnQkI5UE1RQzI2Z1dRUUE4RmtFQUtCNUJBREJQZ01BQUFBQUFQUUFBQUFBQUFBQURBSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBRDRkd1FBd1Q0REFBQUFBQUQwQUFBQUFBQUFBQTBDQUFBQUFBQUFBUUVBQUlCWkJBRHdXUVFBQUhnRUFNRStBd0FBQUFBQStBQUFBQUFBQUFBUkFnQkI3UFFRQy8wTW9Ga0VBUEJaQkFDZ2VRUUE1ejREQUFBQUFBRDBBQUFBQUFBQUFBd0NBQUFBQUFBQUFRQUFBS0JaQkFEd1dRUUFDSGdFQU9jK0F3QUFBQUFBOUFBQUFBQUFBQUFOQWdBQUFBQUFBQUVCQUFDSVdRUUE4RmtFQUJCNEJBRG5QZ01BQUFBQUFQZ0FBQUFBQUFBQUVRSUFBQUFBQUFBQkFRQUFNRmtFQVBCWkJBRHdjZ1FBd3o0REFBQUFBQUR4QUFBQUFBQUFBQ0VDQUFBQUFBQUFBUUVCQURCWkJBREFXUVFBK0hJRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBaEFnQUFBQUFBQUFFQkFBREFXQVFBOEZrRUFBQnpCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFJZ0lBQUFBQUFBQUJBUUVBd0ZnRUFNQlpCQUFJY3dRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUNJQ0FBQUFBQUFBQVFFQUFNQllCQUR3V1FRQUVITUVBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQWpBZ0FBQUFBQUFBRUJBUURBV0FRQXdGa0VBQmh6QkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBSXdJQUFBQUFBQUFCQUFBQW9Ga0VBUEJaQkFBZ2N3UUE1ejREQUFBQUFBRHhBQUFBQUFBQUFDUUNBQUFBQUFBQUFRQUJBS0JaQkFEQVdRUUFLSE1FQU9jK0F3QUFBQUFBOFFBQUFBQUFBQUFrQWdBQUFBQUFBQUVBQUFDZ1dRUUE4RmtFQURCekJBRG5QZ01BQUFBQUFQRUFBQUFBQUFBQUpRSUFBQUFBQUFBQkFBRUFvRmtFQU1CWkJBQTRjd1FBNXo0REFBQUFBQUR4QUFBQUFBQUFBQ1VDQUFBQUFBQUFBUUVBQU1CWUJBRHdXUVFBU0hNRUFNTStBd0FBQUFBQThRQUFBQUFBQUFBbUFnQUFBQUFBQUFFQkFRREFXQVFBd0ZrRUFGQnpCQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFKZ0lBQUFBQUFBQUJBUUFBd0ZnRUFQQlpCQUJZY3dRQXd6NERBQUFBQUFEeEFBQUFBQUFBQUNjQ0FBQUFBQUFBQVFFQkFNQllCQURBV1FRQVlITUVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQW5BZ0FBQUFBQUFBRUJBQURBV0FRQThGa0VBR2h6QkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBS0FJQUFBQUFBQUFCQVFFQXdGZ0VBTUJaQkFCd2N3UUE0ajREQUFBQUFBRHhBQUFBQUFBQUFDZ0NBQUFBQUFBQUFnRUFBTUJZQkFEd1dRUUFnR3dFQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUFwQWdBQUFBQUFBQUlCQVFEQVdBUUF3RmtFQUpCc0JBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQUtRSUFBQUFBQUFBQkFRQUF3RmdFQVBCWkJBQjRjd1FBd3o0REFBQUFBQUR4QUFBQUFBQUFBQ29DQUFBQUFBQUFBUUVCQU1CWUJBREFXUVFBZ0hNRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBcUFnQUFBQUFBQUFFQkFBREFXQVFBOEZrRUFJaHpCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFLd0lBQUFBQUFBQUJBUUVBd0ZnRUFNQlpCQUNRY3dRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUNzQ0FBQUFBQUFBQXdFQUFEQlpCQUR3V1FRQTZHY0VBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQXNBZ0FBQUFBQUFBTUJBUUF3V1FRQXdGa0VBQUJvQkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBTEFJQUFBQUFBQUFCQVFBQXdGZ0VBUEJaQkFDWWN3UUF3ejREQUFBQUFBRHhBQUFBQUFBQUFDMENBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFvSE1FQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUF0QWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQUtoekJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQUxnSUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBQ3djd1FBNGo0REFBQUFBQUR4QUFBQUFBQUFBQzRDQUFBQUFBQUFBUUVBQUVCWkJBRHdXUVFBdUhNRUFNTStBd0FBQUFBQThRQUFBQUFBQUFBdkFnQUFBQUFBQUFFQkFRQkFXUVFBd0ZrRUFNQnpCQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFMd0lBQUFBQUFBQUJBUUFBUUZrRUFQQlpCQURJY3dRQXd6NERBQUFBQUFEeEFBQUFBQUFBQURBQ0FBQUFBQUFBQVFFQkFFQlpCQURBV1FRQTBITUVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQXdBZ0FBQUFBQUFBRUJBQUJBV1FRQThGa0VBTmh6QkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBTVFJQUFBQUFBQUFCQVFFQVFGa0VBTUJaQkFEZ2N3UUE0ajREQUFBQUFBRHhBQUFBQUFBQUFERUNBQUFBQUFBQUFRRUFBTUJZQkFEd1dRUUE2SE1FQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUF5QWdBQUFBQUFBQUVCQVFEQVdBUUF3RmtFQVBCekJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQU1nSUFBQUFBQUFBQ0FRQUF3RmdFQVBCWkJBQ3diQVFBd3o0REFBQUFBQUR4QUFBQUFBQUFBRE1DQUFBQUFBQUFBZ0VCQU1CWUJBREFXUVFBd0d3RUFNTStBd0FBQUFBQThRQUFBQUFBQUFBekFnQUFBQUFBQUFFQUFBQ2dXUVFBOEZrRUFBQjBCQURxUGdNQUFBQUFBS0VBUWZpQkVRc1pBUUFCQUtCWkJBREFXUVFBQ0hRRUFPZytBd0FBQUFBQW9RQkJvSUlSQ3hrQkFBQUFvRmtFQVBCWkJBQVFkQVFBNmo0REFBQUFBQUNoQUVISWdoRUxHUUVBQVFDZ1dRUUF3RmtFQUJoMEJBRG9QZ01BQUFBQUFLRUFRZkNDRVFzWkFRQUFBS0JaQkFEd1dRUUFJSFFFQU9vK0F3QUFBQUFBb1FCQm1JTVJDeGtCQUFFQW9Ga0VBTUJaQkFBb2RBUUE2RDREQUFBQUFBQ2hBRUhBZ3hFTEdRRUFBQUNnV1FRQThGa0VBREIwQkFEcVBnTUFBQUFBQUtFQVFlaURFUXNaQVFBQkFLQlpCQURBV1FRQU9IUUVBT2crQXdBQUFBQUFvUUJCa0lRUkN4a0JBQUFBb0ZrRUFQQlpCQUJBZEFRQTZqNERBQUFBQUFDaEFFRzRoQkVMR1FFQUFRQ2dXUVFBd0ZrRUFFaDBCQURvUGdNQUFBQUFBS0VBUWVDRUVRc1pBUUFBQUtCWkJBRHdXUVFBVUhRRUFPbytBd0FBQUFBQW9RQkJpSVVSQ3hrQkFBRUFvRmtFQU1CWkJBQllkQVFBNkQ0REFBQUFBQUNoQUVHd2hSRUw2UVVCQVFBQXdGZ0VBUEJaQkFCZ2RBUUF3ejREQUFBQUFBRHhBQUFBQUFBQUFEUUNBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFhSFFFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUEwQWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQUhCMEJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQU5RSUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBQjRkQVFBNGo0REFBQUFBQUR4QUFBQUFBQUFBRFVDQUFBQUFBQUFBd0VBQUVCWkJBRHdXUVFBR0dnRUFNTStBd0FBQUFBQThRQUFBQUFBQUFBMkFnQUFBQUFBQUFNQkFRQkFXUVFBd0ZrRUFEQm9CQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFOZ0lBQUFBQUFBQUJBUUFBUUZrRUFQQlpCQUNBZEFRQXd6NERBQUFBQUFEeEFBQUFBQUFBQURjQ0FBQUFBQUFBQVFFQkFFQlpCQURBV1FRQWlIUUVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQTNBZ0FBQUFBQUFBRUJBQUJBV1FRQThGa0VBSkIwQkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBT0FJQUFBQUFBQUFCQVFFQVFGa0VBTUJaQkFDWWRBUUE0ajREQUFBQUFBRHhBQUFBQUFBQUFEZ0NBQUFBQUFBQUFRRUFBTUJZQkFEd1dRUUFvSFFFQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUE1QWdBQUFBQUFBQUVCQVFEQVdBUUF3RmtFQUtoMEJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQU9RSUFBQUFBQUFBREFRQUF3RmdFQVBCWkJBQmdhQVFBd3o0REFBQUFBQUR4QUFBQUFBQUFBRG9DQUFBQUFBQUFBd0VCQU1CWUJBREFXUVFBZUdnRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBNkFnQUFBQUFBQUFFQkFBREFXQVFBOEZrRUFMQjBCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFPd0lBQUFBQUFBQUJBUUVBd0ZnRUFNQlpCQUM0ZEFRQTRqNERBQUFBQUFEeEFBQUFBQUFBQURzQ0FBQUFBQUFBQVFFQUFNQllCQUR3V1FRQXdIUUVBQ3cvQXdBQUFBQUE4UUFBQUFBQUFBQThBZ0FBQUFBQUFBRUJBUURBV0FRQXdGa0VBTWgwQkFEclBnTUFBQUFBQVBFQUFBQUFBQUFBUEFJQUFBQUFBQUFCQUFBQW9Ga0VBUEJaQkFEUWRBUUE2ajREQUFBQUFBQ2hBRUdvaXhFTEdRRUFBUUNnV1FRQXdGa0VBTmgwQkFEb1BnTUFBQUFBQUtFQVFkQ0xFUXNaQVFBQUFLQlpCQUR3V1FRQTRIUUVBT28rQXdBQUFBQUFvUUJCK0lzUkN4a0JBQUVBb0ZrRUFNQlpCQURvZEFRQTZENERBQUFBQUFDaEFFR2dqQkVMR1FFQUFBQ2dXUVFBOEZrRUFQQjBCQURxUGdNQUFBQUFBS0VBUWNpTUVRc1pBUUFCQUtCWkJBREFXUVFBK0hRRUFPZytBd0FBQUFBQW9RQkI4SXdSQzVrUEJBRUFBRUJaQkFEd1dRUUFLR01FQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUE5QWdBQUFBQUFBQVFCQVFCQVdRUUF3RmtFQUVoakJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQVBRSUFBQUFBQUFBQkFRQUF3RmdFQVBCWkJBQUFkUVFBd3o0REFBQUFBQUR4QUFBQUFBQUFBRDRDQUFBQUFBQUFBUUVCQU1CWUJBREFXUVFBQ0hVRUFPSStBd0FBQUFBQThRQUFBQUFBQUFBK0FnQUFBQUFBQUFJQ0FBREFXQVFBOEZrRUFBQnRCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFQd0lBQUFBQUFBQUNBZ0VBd0ZnRUFNQlpCQUFRYlFRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUQ4Q0FBQUFBQUFBQVFFQUFNQllCQUR3V1FRQUVIVUVBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQkFBZ0FBQUFBQUFBRUJBUURBV0FRQXdGa0VBQmgxQkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBUUFJQUFBQUFBQUFCQVFBQXdGZ0VBUEJaQkFBZ2RRUUF3ejREQUFBQUFBRHhBQUFBQUFBQUFFRUNBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFLSFVFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUJCQWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQURCMUJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQVFnSUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBQTRkUVFBNGo0REFBQUFBQUR4QUFBQUFBQUFBRUlDQUFBQUFBQUFBZ0VBQURCWkJBRHdXUVFBSUcwRUFNTStBd0FBQUFBQThRQUFBQUFBQUFCREFnQUFBQUFBQUFJQkFRQXdXUVFBd0ZrRUFEQnRCQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFRd0lBQUFBQUFBQUNBUUFBTUZrRUFQQlpCQUJBYlFRQXd6NERBQUFBQUFEeEFBQUFBQUFBQUVRQ0FBQUFBQUFBQWdFQkFEQlpCQURBV1FRQVVHMEVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQkVBZ0FBQUFBQUFBRUJBQURBV0FRQThGa0VBRUIxQkFBdVB3TUFBQUFBQVBFQUFBQUFBQUFBUlFJQUFBQUFBQUFCQVFFQXdGZ0VBTUJaQkFCSWRRUUE4VDREQUFBQUFBRHhBQUFBQUFBQUFFVUNBQUFBQUFBQUFnRUFBTUJZQkFEd1dRUUFZRzBFQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUJHQWdBQUFBQUFBQUlCQVFEQVdBUUF3RmtFQUhCdEJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQVJnSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBQ0FkUVFBNmo0REFBQUFBQUR4QUFBQUFBQUFBRWNDQUFBQUFBQUFBUUFCQUtCWkJBREFXUVFBaUhVRUFPZytBd0FBQUFBQThRQUFBQUFBQUFCSEFnQUFBQUFBQUFFQkFBREFXQVFBOEZrRUFKQjFCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFTQUlBQUFBQUFBQUJBUUVBd0ZnRUFNQlpCQUNZZFFRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUVnQ0FBQUFBQUFBQVFFQUFFQlpCQUR3V1FRQW9IVUVBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQkpBZ0FBQUFBQUFBRUJBUUJBV1FRQXdGa0VBS2gxQkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBU1FJQUFBQUFBQUFCQVFBQXdGZ0VBUEJaQkFDd2RRUUF3ejREQUFBQUFBRHhBQUFBQUFBQUFFb0NBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUF1SFVFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUJLQWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQU1CMUJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQVN3SUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBRElkUVFBNGo0REFBQUFBQUR4QUFBQUFBQUFBRXNDQUFBQUFBQUFBUUVBQUZCWkJBRHdXUVFBMEhVRUFNTStBd0FBQUFBQThRQUFBQUFBQUFCTUFnQUFBQUFBQUFFQkFRQlFXUVFBd0ZrRUFOaDFCQURpUGdNQUFBQUFBUEVBQUFBQUFBQUFUQUlBQUFBQUFBQUJBUUFBd0ZnRUFQQlpCQURnZFFRQXd6NERBQUFBQUFEeEFBQUFBQUFBQUUwQ0FBQUFBQUFBQVFFQkFNQllCQURBV1FRQTZIVUVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQk5BZ0FBQUFBQUFBRUJBQURBV0FRQThGa0VBUEIxQkFERFBnTUFBQUFBQVBFQUFBQUFBQUFBVGdJQUFBQUFBQUFCQVFFQXdGZ0VBTUJaQkFENGRRUUE0ajREQUFBQUFBRHhBQUFBQUFBQUFFNENBQUFBQUFBQUF3RUFBTUJZQkFEd1dRUUFPR2tFQU1NK0F3QUFBQUFBOFFBQUFBQUFBQUJQQWdBQUFBQUFBQU1CQVFEQVdBUUF3RmtFQUZCcEJBRGlQZ01BQUFBQUFQRUFBQUFBQUFBQVR3SUFBQUFBQUFBQkFRQUF3RmdFQVBCWkJBQUFkZ1FBd3o0REFBQUFBQUR4QUFBQUFBQUFBRkFDQUFBQUFBQUFBUUVCQU1CWUJBREFXUVFBQ0hZRUFPSStBd0FBQUFBQThRQUFBQUFBQUFCUUFnQUFBQUFBQUFJQkFBREFXQVFBOEZrRUFKQnRCQUREUGdNQUFBQUFBUEVBQUFBQUFBQUFVUUlBQUFBQUFBQUNBUUVBd0ZnRUFNQlpCQUNnYlFRQTRqNERBQUFBQUFEeEFBQUFBQUFBQUZFQ0FBQUFBQUFBQVFFQUFNQllCQUR3V1FRQUVIWUVBTU0rQXdBQUFBQUE4UUFBQUFBQUFBQlNBZ0FBQUFBQUFBRUJBUURBV0FRQXdGa0VBQmgyQkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBVWdJQUFBQUFBQUFCQVFBQXdGZ0VBUEJaQkFBZ2RnUUF3ejREQUFBQUFBRHhBQUFBQUFBQUFGTUNBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFLSFlFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUJUQWdBQUFBQUFBQUVCQUFEQVdBUUE4RmtFQURoMkJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQVZBSUFBQUFBQUFBQkFRRUF3RmdFQU1CWkJBQkFkZ1FBNGo0REFBQUFBQUR4QUFBQUFBQUFBRlFDQUFBQUFBQUFBUUVBQUhCWUJBRHdXUVFBZUhjRUFDay9Bd0FBQUFBQThRQkJtSndSQ3hrQkFBQUFvRmtFQVBCWkJBQ0Fkd1FBS1Q4REFBQUFBQUR4QUVIQW5CRUxHUU1BQUFDZ1dRUUE4RmtFQUNocUJBQXlQd01BQUFBQUFQRUFRZWljRVFzWkF3QUFBS0JaQkFEd1dRUUFRR29FQURJL0F3QUFBQUFBOFFCQmtKMFJDOWtIQVFBQUFLQlpCQUR3V1FRQW1IY0VBT2MrQXdBQUFBQUE4Z0FBQUFBQUFBQlZBZ0FBQUFBQUFBRUFBUUNnV1FRQXdGa0VBS0IzQkFEbFBnTUFBQUFBQVBJQUFBQUFBQUFBVlFJQUFBQUFBQUFCQVFBQVdGa0VBUEJaQkFDb2R3UUF3ejREQUFBQUFBRHlBQUFBQUFBQUFGWUNBQUFBQUFBQUFRRUJBRmhaQkFEQVdRUUFzSGNFQU9JK0F3QUFBQUFBOGdBQUFBQUFBQUJXQWdBQUFBQUFBQUVCQUFCUVdRUUE4RmtFQUxoM0JBRERQZ01BQUFBQUFQSUFBQUFBQUFBQVZ3SUFBQUFBQUFBQkFRRUFVRmtFQU1CWkJBREFkd1FBNGo0REFBQUFBQUR5QUFBQUFBQUFBRmNDQUFBQUFBQUFBZ0VBQUZoWkJBRHdXUVFBb0hBRUFNTStBd0FBQUFBQThnQUFBQUFBQUFCWUFnQUFBQUFBQUFJQkFRQllXUVFBd0ZrRUFMQndCQURpUGdNQUFBQUFBUElBQUFBQUFBQUFXQUlBQUFBQUFBQUNBUUFBU0ZrRUFQQlpCQUJnY1FRQTV6NERBQUFBQUFEeUFBQUFBQUFBQUZrQ0FBQUFBQUFBQWdFQkFFaFpCQURBV1FRQWNIRUVBT1UrQXdBQUFBQUE4Z0FBQUFBQUFBQlpBZ0FBQUFBQUFBSUJBQUJJV1FRQThGa0VBSUJ4QkFEblBnTUFBQUFBQVBJQUFBQUFBQUFBV2dJQUFBQUFBQUFDQVFFQVNGa0VBTUJaQkFDUWNRUUE1VDREQUFBQUFBRHlBQUFBQUFBQUFGb0NBQUFBQUFBQUFnRUFBREJaQkFEd1dRUUFvSEVFQU9jK0F3QUFBQUFBOGdBQUFBQUFBQUJiQWdBQUFBQUFBQUlCQVFBd1dRUUF3RmtFQUxCeEJBRGxQZ01BQUFBQUFQSUFBQUFBQUFBQVd3SUFBQUFBQUFBQ0FRQUFNRmtFQVBCWkJBREFjUVFBNXo0REFBQUFBQUR5QUFBQUFBQUFBRndDQUFBQUFBQUFBZ0VCQURCWkJBREFXUVFBMEhFRUFPVStBd0FBQUFBQThnQUFBQUFBQUFCY0FnQUFBQUFBQUFJQkFBQXdXUVFBOEZrRUFPQnhCQURuUGdNQUFBQUFBUElBQUFBQUFBQUFYUUlBQUFBQUFBQUNBUUVBTUZrRUFNQlpCQUR3Y1FRQTVUNERBQUFBQUFEeUFBQUFBQUFBQUYwQ0FBQUFBQUFBQWdFQUFEQlpCQUR3V1FRQUFISUVBT2MrQXdBQUFBQUE4Z0FBQUFBQUFBQmVBZ0FBQUFBQUFBSUJBUUJnV1FRQXdGa0VBQkJ5QkFEbFBnTUFBQUFBQVBJQUFBQUFBQUFBWGdJQUFBQUFBQUFDQVFBQVdGa0VBUEJaQkFBZ2NnUUF3ejREQUFBQUFBRHlBQUFBQUFBQUFGOENBQUFBQUFBQUFnRUJBRmhaQkFEQVdRUUFNSElFQU9JK0F3QUFBQUFBOGdBQUFBQUFBQUJmQWdBQUFBQUFBQUlCQUFCWVdRUUE4RmtFQUVCeUJBRERQZ01BQUFBQUFQSUFBQUFBQUFBQVlBSUFBQUFBQUFBQ0FRRUFXRmtFQU1CWkJBQlFjZ1FBNGo0REFBQUFBQUR5QUFBQUFBQUFBR0FDQUFBQUFBQUFBUUVCQURoWkJBRGdXUVFBUUhNRUFDay9Bd0FBQUFBQThRQkIrS1FSQzVFQkFnRUFBTUJZQkFEd1dRUUFvR3dFQUNvL0F3QUFBQUFBOFFBQUFBQUFBQUJoQWdBQUFBQUFBQUVCQVFEQVdBUUF3RmtFQVBoekJBRERQZ01BQUFBQUFQRUFBQUFBQUFBQVlnSUFBQUFBQUFBQ0FRRUFNRmtFQU1CWkJBRFFiQVFBd3o0REFBQUFBQUR4QUFBQUFBQUFBR01DQUFBQUFBQUFBZ0FBQUtCWkJBRHdXUVFBNEd3RUFNaytBd0FBQUFBQThRQkJtS1lSQ3hrQ0FBQUFvRmtFQVBCWkJBRHdiQVFBS1Q4REFBQUFBQUR4QUVIQXBoRUw0Z0lEQVFFQXdGZ0VBTUJaQkFCSWFBUUE0ajREQUFBQUFBRHhBQUFBQUFBQUFHUUNBQUFBQUFBQUFRRUJBTUJZQkFEQVdRUUFVSFVFQU9JK0F3QUFBQUFBOFFBQUFBQUFBQUJsQWdBQUFBQUFBQUVBQUFDZ1dRUUE4RmtFQUZoMUJBQXBQd01BQUFBQUFQRUFBQUFBQUFBQVpnSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBQmdkUVFBS1Q4REFBQUFBQUR4QUFBQUFBQUFBR2NDQUFBQUFBQUFBUUFBQUtCWkJBRHdXUVFBYUhVRUFDay9Bd0FBQUFBQThRQUFBQUFBQUFCb0FnQUFBQUFBQUFFQUFBQ2dXUVFBOEZrRUFIQjFCQUFwUHdNQUFBQUFBUEVBQUFBQUFBQUFhUUlBQUFBQUFBQUJBQUFBb0ZrRUFQQlpCQUI0ZFFRQUtUOERBQUFBQUFEeEFBQUFBQUFBQUdvQ0FBQUFBQUFBQWdFQkFNQllCQURBV1FRQWdHMEVBT0krQXdBQUFBQUE4UUFBQUFBQUFBQnJBZ0FBQUFBQUFBTUJBUURBV0FRQXdGa0VBTmhvQkFEaVBnTUFBQUFBQVBFQUFBQUFBQUFBYkFJQVFheXBFUXNMb0ZrRUFQQlpCQUNnZVFRQVFjQ3BFUXNCUVFCQjBLa1JDK29CQVFFQ0FNQllCQUM0V1FRQU1IWUVBTkkrQXdBQUFBQUE4UUFBQUFBQUFBQnRBZ0FBQUFBQUFBRUFBQUNnV1FRQThGa0VBRWgyQkFBd1B3TUFBQUFBQVBFQUFBQUFBQUFBYmdJQUFBQUFBQUFCQUFBQW9Ga0VBUEJaQkFCUWRnUUFNRDhEQUFBQUFBRHhBQUFBQUFBQUFHOENBQUFBQUFBQUFRQUFBS0JaQkFEd1dRUUFXSFlFQURBL0F3QUFBQUFBOFFBQUFBQUFBQUJ3QWdBQUFBQUFBQUVBQUFDZ1dRUUE4RmtFQUdCMkJBQXlQd01BQUFBQUFQRUFBQUFBQUFBQWNRSUFBQUFBQUFBQkFBQUFvRmtFQVBCWkJBQm9kZ1FBTWo4REFBQUFBQUR4QUFBQUFBQUFBSElDQUVIRXF4RUxDNkJaQkFEd1dRUUFvSGtFQUVIWXF4RUxBVUVBUWVpckVRc1pBUUVBQURoWkJBRHdXUVFBY0hZRUFNTStBd0FBQUFBQXdRQkJrS3dSQ3hrQkFRRUFRRmtFQU9oWkJBQ0lkd1FBd3o0REFBQUFBQUJoQUVHNHJCRUxEd0lCQVFCQVdRUUE2RmtFQUdCdUJBQkIwS3dSQ3dGaEFFSGdyQkVMR1FJQkFRQkFXUVFBNkZrRUFIQnVCQUREUGdNQUFBQUFBR0VBUVlpdEVRc1pBZ0VCQUVCWkJBRG9XUVFBZ0c0RUFNTStBd0FBQUFBQVlRQkJzSzBSQ3hrQ0FRRUFRRmtFQU9oWkJBQ1FiZ1FBd3o0REFBQUFBQUJoQUVIWXJSRUxHUUlCQVFCQVdRUUE2RmtFQUtCdUJBRERQZ01BQUFBQUFHRUFRWUN1RVFzWkFnRUJBRUJaQkFEb1dRUUFzRzRFQU1NK0F3QUFBQUFBWVFCQnFLNFJDeGtDQVFFQVFGa0VBT2haQkFEQWJnUUF3ejREQUFBQUFBQmhBRUhRcmhFTEdRSUJBUUJBV1FRQTZGa0VBTkJ1QkFERFBnTUFBQUFBQUdFQVFmaXVFUXNaQWdFQkFFQlpCQURvV1FRQTRHNEVBTU0rQXdBQUFBQUFZUUJCb0s4UkN4a0RBUUVBUUZrRUFPaFpCQURBYXdRQVlqOERBQUFBQUFCaEFFSElyeEVMbWdFQkFRQUFPRmtFQVBCWkJBQ1Fkd1FBd3o0REFBQUFBQUJ4QUFBQUFBQUFBQTBDQUFBQUFBQUFBZ0FBQUtCWkJBRHdXUVFBUUhFRUFPYytBd0FBQUFBQThnQUFBQUFBQUFCekFnQUFBQUFBQUFJQUFBQ2dXUVFBOEZrRUFGQnhCQURuUGdNQUFBQUFBUElBQUFBQUFBQUFkQUlBQUFBQUFBQUJBUUFBa0ZrRUFQQlpCQUNZZVFRQXJqOERBQUFBQUFENEFBQUFBQUFBQUJFQ0FFSHdzQkVMcjBKV2NRRUFSQUFBQUQ2dkFRQklBQUFBbTY4QkFFZ0FBQUNvcVFFQVNBQUFBRlp4QVFCRUFBQUFQcThCQUVnQUFBQ29xUUVBU0FBQUFGWnhBUUJFQUFBQVBxOEJBRWdBQUFDTGNRRUFTQUFBQUZaeEFRQkFBQUFBajJvQkFFSUFBQUJXY1FFQVJBQUFBS2lwQVFCSUFBQUFWbkVCQUFrQUFBQ1BhZ0VBTndBQUFGWnhBUUFLQUFBQWoyb0JBRGdBQUFCV2NRRUFCd0FBQUk5cUFRQTVBQUFBVm5FQkFBZ0FBQUNQYWdFQU9nQUFBRlp4QVFBRUFBQUFqMm9CQURzQUFBQldjUUVBUEFBQUFGWnhBUUQvQUFBQVZuRUJBRWdBQUFCV2NRRUFOUUFBQUZaeEFRQTlBQUFBVm5FQkFFRUFBQUJXY1FFQVF3QUFBRlp4QVFBNUFBQUFWbkVCQURvQUFBQldjUUVBTndBQUFGWnhBUUE0QUFBQVZuRUJBRHNBQUFCV2NRRUFOZ0FBQUZaeEFRQkhBQUFBcXFrQkFQOEFBQUErcndFQS93QUFBRGFCQVFEL0FBQUExNElCQVA4QUFBQjBnZ0VBL3dBQUFOZUNBUUQvQUFBQUZhb0JBUDhBQUFDYnJ3RUFCZ0FBQUp1dkFRRC9BQUFBaTNFQkFBa0FBQUQvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUFDd0FBQUZBL0F3QUtBQUFBdGo4REFBTUFBQUF3UHdNQUFBQUFBTU0rQXdBRUFBQUFNRDhEQUFVQUFBQXdQd01BQ0FBQUFFZy9Bd0FDQUFBQTBENERBQXNBQUFBNlB3TUFDZ0FBQUxZL0F3QURBQUFBTUQ4REFBQUFBQURjUGdNQUNBQUFBRWcvQXdBTEFBQUFzVDhEQUFvQUFBQzNQd01BQXdBQUFEQS9Bd0FBQUFBQXd6NERBQVlBQUFEcVBnTUFDQUFBQUVnL0F3QUxBQUFBVUQ4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBQUFBQUF3ejREQUFFQUFBRHFQZ01BQ0FBQUFFZy9Bd0FMQUFBQXNUOERBQW9BQUFDM1B3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBWUFBQURxUGdNQUNBQUFBRWcvQXdBTEFBQUFzVDhEQUFvQUFBQzNQd01BQXdBQUFEQS9Bd0FBQUFBQXd6NERBQVlBQUFEcVBnTUFDQUFBQUVnL0F3QUxBQUFBVGo4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBRUFBQUFNRDhEQUFVQUFBQXdQd01BQ0FBQUFFZy9Bd0FMQUFBQVVEOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBUUFBQUF3UHdNQUJRQUFBREEvQXdBTEFBQUFVajhEQUFvQUFBQzJQd01BQXdBQUFFby9Bd0FFQUFBQVNqOERBQVVBQUFCS1B3TUFDQUFBQUZRL0F3QUxBQUFBV0Q4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBQUFBQUF3ejREQUFRQUFBQktQd01BQlFBQUFFby9Bd0FMQUFBQVVEOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBY0FBQURxUGdNQUNBQUFBRWcvQXdBTEFBQUFzVDhEQUFvQUFBQzJQd01BQXdBQUFEQS9Bd0FBQUFBQXd6NERBQWNBQUFEUVBnTUFDQUFBQUVnL0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdBQ0FBQUEwRDREQUFzQUFBQTJQd01BQ2dBQUFMWS9Bd0FEQUFBQU1EOERBQWdBQUFCSVB3TUFBZ0FBQU5BK0F3QUxBQUFBT2o4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBQUFBQUEzRDREQUFJQUFBRFFQZ01BQ3dBQUFFSS9Bd0FLQUFBQXRqOERBQU1BQUFCS1B3TUFBQUFBQU53K0F3QUxBQUFBc1Q4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBQUFBQUF3ejREQUFnQUFBQklQd01BQ3dBQUFMQS9Bd0FLQUFBQXR6OERBQU1BQUFBd1B3TUFCZ0FBQU9vK0F3QUlBQUFBU0Q4REFBc0FBQUN4UHdNQUNnQUFBTGMvQXdBREFBQUFNRDhEQUFBQUFBRERQZ01BQmdBQUFPbytBd0FMQUFBQXN6OERBQW9BQUFDM1B3TUFBd0FBQUVvL0F3QUFBQUFBd3o0REFBWUFBQURxUGdNQUN3QUFBRkEvQXdBS0FBQUF0ajhEQUFNQUFBQXdQd01BQUFBQUFNTStBd0FJQUFBQVNEOERBQXNBQUFDeFB3TUFDZ0FBQUxZL0F3QURBQUFBTUQ4REFBQUFBQUREUGdNQUNBQUFBRWcvQXdBTEFBQUFUajhEQUFvQUFBQzJQd01BQXdBQUFEQS9Bd0FCQUFBQTZqNERBQWdBQUFCSVB3TUFDd0FBQUZBL0F3QUtBQUFBdGo4REFBTUFBQUF3UHdNQUFBQUFBTU0rQXdBQkFBQUE2ajREQUFzQUFBQlNQd01BQ2dBQUFMWS9Bd0FEQUFBQVNqOERBQUVBQUFEcVBnTUFDQUFBQUZRL0F3QUxBQUFBV0Q4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBQUFBQUF3ejREQUFFQUFBRHFQZ01BQ3dBQUFMQS9Bd0FLQUFBQXR6OERBQU1BQUFBd1B3TUFCZ0FBQU9vK0F3QUlBQUFBU0Q4REFBc0FBQUN4UHdNQUNnQUFBTGMvQXdBREFBQUFNRDhEQUFBQUFBRERQZ01BQmdBQUFPbytBd0FMQUFBQXN6OERBQW9BQUFDM1B3TUFBd0FBQUVvL0F3QUFBQUFBd3o0REFBWUFBQURxUGdNQUN3QUFBTEEvQXdBS0FBQUF0ejhEQUFNQUFBQXdQd01BQmdBQUFPbytBd0FJQUFBQVNEOERBQXNBQUFDeFB3TUFDZ0FBQUxjL0F3QURBQUFBTUQ4REFBQUFBQUREUGdNQUJnQUFBT28rQXdBTEFBQUFzejhEQUFvQUFBQzNQd01BQXdBQUFFby9Bd0FBQUFBQXd6NERBQVlBQUFEcVBnTUFDd0FBQUU0L0F3QUtBQUFBdGo4REFBTUFBQUF3UHdNQUJBQUFBREEvQXdBRkFBQUFNRDhEQUFzQUFBQlNQd01BQ2dBQUFMWS9Bd0FEQUFBQVNqOERBQVFBQUFCS1B3TUFCUUFBQUVvL0F3QUxBQUFBVmo4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBRUFBQUFTajhEQUFVQUFBQktQd01BQ3dBQUFFNC9Bd0FLQUFBQXRqOERBQU1BQUFBd1B3TUFCd0FBQU9vK0F3QUlBQUFBU0Q4REFBc0FBQUJRUHdNQUNnQUFBTFkvQXdBREFBQUFNRDhEQUFBQUFBRERQZ01BQndBQUFPbytBd0FMQUFBQVVqOERBQW9BQUFDMlB3TUFBd0FBQUVvL0F3QUhBQUFBNmo0REFBZ0FBQUJVUHdNQUN3QUFBRmcvQXdBS0FBQUF0ajhEQUFNQUFBQktQd01BQUFBQUFNTStBd0FIQUFBQTZqNERBQXNBQUFDd1B3TUFDZ0FBQUxZL0F3QURBQUFBTUQ4REFBY0FBQUREUGdNQUNBQUFBRWcvQXdBTEFBQUFzVDhEQUFvQUFBQzJQd01BQXdBQUFEQS9Bd0FBQUFBQXd6NERBQWNBQUFEUVBnTUFDd0FBQUxNL0F3QUtBQUFBdGo4REFBTUFBQUJLUHdNQUFBQUFBTU0rQXdBSEFBQUEwRDREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vL0tUOERBUC8vLy84cFB3TUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLzhwUHdNQS8vLy8veWsvQXdBQ0FBQUEwRDREQUFzQUFBQTJQd01BQ2dBQUFMWS9Bd0FEQUFBQU1EOERBQUlBQUFEUVBnTUFDd0FBQUVBL0F3QUtBQUFBdGo4REFBTUFBQUJLUHdNQUN3QUFBTEEvQXdBS0FBQUF0ajhEQUFNQUFBQXdQd01BQ0FBQUFFZy9Bd0FMQUFBQXNUOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBc0FBQUN6UHdNQUNnQUFBTFkvQXdBREFBQUFTajhEQUFBQUFBRERQZ01BQ3dBQUFMQS9Bd0FLQUFBQXR6OERBQU1BQUFBd1B3TUFCZ0FBQU9vK0F3QUxBQUFBc2o4REFBb0FBQUMzUHdNQUF3QUFBRW8vQXdBR0FBQUE2ajREQUFzQUFBQk9Qd01BQ2dBQUFMWS9Bd0FEQUFBQU1EOERBQWdBQUFCSVB3TUFDd0FBQUZBL0F3QUtBQUFBdGo4REFBTUFBQUF3UHdNQUFBQUFBTU0rQXdBTEFBQUFVajhEQUFvQUFBQzJQd01BQXdBQUFFby9Bd0FJQUFBQVZEOERBQXNBQUFCWVB3TUFDZ0FBQUxZL0F3QURBQUFBU2o4REFBQUFBQUREUGdNQUN3QUFBTEEvQXdBS0FBQUF0ajhEQUFNQUFBQXdQd01BQ0FBQUFFZy9Bd0FMQUFBQXNUOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUFBQUFBd3o0REFBc0FBQUN6UHdNQUNnQUFBTFkvQXdBREFBQUFTajhEQUFBQUFBRERQZ01BQ3dBQUFFNC9Bd0FLQUFBQXRqOERBQU1BQUFBd1B3TUFBUUFBQU9vK0F3QUxBQUFBVWo4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBQkFBQUE2ajREQUFzQUFBQldQd01BQ2dBQUFMWS9Bd0FEQUFBQVNqOERBQUVBQUFEcVBnTUFDd0FBQUxBL0F3QUtBQUFBdHo4REFBTUFBQUF3UHdNQUJnQUFBT28rQXdBTEFBQUFzajhEQUFvQUFBQzNQd01BQXdBQUFFby9Bd0FHQUFBQTZqNERBQXNBQUFDd1B3TUFDZ0FBQUxjL0F3QURBQUFBTUQ4REFBWUFBQURxUGdNQUN3QUFBTEkvQXdBS0FBQUF0ejhEQUFNQUFBQktQd01BQmdBQUFPbytBd0FMQUFBQVRqOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUhBQUFBNmo0REFBc0FBQUJTUHdNQUNnQUFBTFkvQXdBREFBQUFTajhEQUFjQUFBRHFQZ01BQ3dBQUFGWS9Bd0FLQUFBQXRqOERBQU1BQUFCS1B3TUFCd0FBQU9vK0F3QUxBQUFBc0Q4REFBb0FBQUMyUHdNQUF3QUFBREEvQXdBSEFBQUF3ejREQUFzQUFBQ3lQd01BQ2dBQUFMWS9Bd0FEQUFBQVNqOERBQWNBQUFERFBnTUFDd0FBQUFZL0F3QURBQUFBMXo0REFBQUFBQURRUGdNQURBQUFBREkvQXdBTEFBQUFFajhEQUFNQUFBRFhQZ01BQUFBQUFOQStBd0FNQUFBQVdqOERBQXNBQUFBZVB3TUFBd0FBQU5jK0F3QUFBQUFBMEQ0REFBd0FBQUJjUHdNQUN3QUFBRG8vQXdBREFBQUFYajhEQUFBQUFBRGNQZ01BQndBQUFBRS9Bd0FMQUFBQXNUOERBQU1BQUFEWFBnTUFBQUFBQU5BK0F3QUhBQUFBM0Q0REFBNEFBQUREUGdNQUVRQUFBTU0rQXdBVEFBQUF3ejREQUEwQUFBRERQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vMXo0REFQLy8vLy9YUGdNQS8vLy8vOWMrQXdELy8vLy8xejREQVAvLy8vOHFQd01BLy8vLy95by9Bd0QvLy8vL0tqOERBUC8vLy84cVB3TUEvLy8vLzBZL0F3RC8vLy8vUmo4REFQLy8vLzlHUHdNQS8vLy8vMFkvQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLzhwUHdNQS8vLy8veWsvQXdELy8vLy80ajREQVAvLy8vOHBQd01BLy8vLy95ay9Bd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy8rSStBd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9pUGdNQS8vLy8vK0krQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vK2MrQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy8rYytBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytVK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy8rSStBd0FMQUFBQXNEOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUxBQUFBc2o4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBTEFBQUFURDhEQUFvQUFBQzJQd01BQXdBQUFPbytBd0FMQUFBQVRqOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUxBQUFBVWo4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBTEFBQUFWajhEQUFvQUFBQzJQd01BQXdBQUFFby9Bd0FMQUFBQXNEOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUxBQUFBc2o4REFBb0FBQUMyUHdNQUF3QUFBRW8vQXdBTEFBQUFUajhEQUFvQUFBQzJQd01BQXdBQUFEQS9Bd0FMQUFBQXRUOERBQW9BQUFDMlB3TUFBd0FBQURBL0F3QUxBQUFBQUQ4REFBTUFBQUREUGdNQURBQUFBREkvQXdBTEFBQUFBejhEQUFNQUFBRFhQZ01BREFBQUFESS9Bd0FMQUFBQUNUOERBQU1BQUFBcVB3TUFEQUFBQURJL0F3QUxBQUFBREQ4REFBTUFBQUREUGdNQURBQUFBRm8vQXdBTEFBQUFEejhEQUFNQUFBRFhQZ01BREFBQUFGby9Bd0FMQUFBQUZUOERBQU1BQUFBcVB3TUFEQUFBQUZvL0F3QUxBQUFBR0Q4REFBTUFBQUREUGdNQURBQUFBRncvQXdBTEFBQUFHejhEQUFNQUFBRFhQZ01BREFBQUFGdy9Bd0FMQUFBQUlUOERBQU1BQUFBcVB3TUFEQUFBQUZ3L0F3QUxBQUFBTkQ4REFBTUFBQURRUGdNQUJ3QUFBTncrQXdBTEFBQUFOajhEQUFNQUFBQmVQd01BQndBQUFOdytBd0FMQUFBQVBEOERBQU1BQUFCZ1B3TUFCd0FBQU53K0F3QUxBQUFBUkQ4REFBTUFBQUJlUHdNQUNRQUFBTncrQXdBTEFBQUFzRDhEQUFNQUFBRFhQZ01BQndBQUFOQStBd0FMQUFBQXREOERBQU1BQUFEWFBnTUFDUUFBQU5BK0F3RC8vLy8veFQ0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdBT0FBQUF3ejREQUJFQUFBRERQZ01BRXdBQUFNTStBd0FQQUFBQTF6NERBQk1BQUFERFBnTUFEUUFBQU1NK0F3QU9BQUFBd3o0REFCSUFBQURYUGdNQURRQUFBTU0rQXdBT0FBQUF3ejREQUJFQUFBRERQZ01BRkFBQUFOYytBd0QvLy8vLzF6NERBUC8vLy8vWFBnTUEvLy8vLzljK0F3RC8vLy8vS2o4REFQLy8vLzhxUHdNQS8vLy8veW8vQXdELy8vLy9SajhEQVAvLy8vOUdQd01BLy8vLy8wWS9Bd0QvLy8vL3d6NERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLzhxUHdNQS8vLy8veW8vQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vS1Q4REFQLy8vLzhwUHdNQS8vLy8veWsvQXdELy8vLy9LVDhEQVAvLy8vL0RQZ01BLy8vLy85QStBd0QvLy8vLzRqNERBUC8vLy8vdVBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9pUGdNQS8vLy8vK0krQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUFDd0FBQURRL0F3QUhBQUFBMEQ0REFBc0FBQUEyUHdNQUJ3QUFBTkErQXdBTEFBQUFPajhEQUFjQUFBRFFQZ01BQ3dBQUFEdy9Bd0FIQUFBQTBENERBQXNBQUFCQVB3TUFCd0FBQU5BK0F3QUxBQUFBUWo4REFBY0FBQURRUGdNQUN3QUFBTEEvQXdBSEFBQUF3ejREQUFzQUFBQ3hQd01BQndBQUFNTStBd0FMQUFBQXNqOERBQWNBQUFERFBnTUFDd0FBQUxNL0F3QUhBQUFBd3o0REFBc0FBQUMxUHdNQUF3QUFBTmMrQXdELy8vLy94VDREQVAvLy8vL0RQZ01BLy8vLy84VStBd0QvLy8vL3d6NERBUC8vLy8vRlBnTUEvLy8vLzhNK0F3RC8vLy8veFQ0REFQLy8vLy9EUGdNQS8vLy8vOFUrQXdELy8vLy93ejREQVAvLy8vL0ZQZ01BLy8vLy84TStBd0QvLy8vL3hUNERBUC8vLy8vRFBnTUEvLy8vLzhVK0F3RC8vLy8vd3o0REFQLy8vLy9GUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vODQrQXdELy8vLy96ajREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy96ajREQVAvLy8vL09QZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy84NCtBd0QvLy8vL3pqNERBUC8vLy8vRFBnTUEvLy8vLzg0K0F3RC8vLy8vNGo0REFQLy8vLzhrUHdNQS8vLy8vODQrQXdELy8vLy8yajREQVAvLy8vL1NQZ01BLy8vLy84TStBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vblBnTUEvLy8vLytjK0F3RC8vLy8vNVQ0REFQLy8vLy9sUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy8rSStBd0QvLy8vLzV6NERBUC8vLy8vblBnTUEvLy8vLytVK0F3RC8vLy8vNVQ0REFQLy8vLy9EUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL2lQZ01BLy8vLy8rYytBd0QvLy8vLzV6NERBUC8vLy8vblBnTUEvLy8vLytjK0F3RC8vLy8vd3o0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9pUGdNQS8vLy8vOE0rQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy8rSStBd0QvLy8vL3d6NERBUC8vLy84cFB3TUEvLy8vLytJK0F3RC8vLy8vSno4REFQLy8vLy9EUGdNQS8vLy8veWsvQXdELy8vLy80ajREQVAvLy8vOG5Qd01BRGdBQUFNTStBd0FSQUFBQXd6NERBQThBQUFEWFBnTUFFd0FBQU1NK0F3QU9BQUFBd3o0REFCSUFBQURYUGdNQUR3QUFBTmMrQXdBVUFBQUExejREQUJBQUFBQXFQd01BRFFBQUFNTStBd0FPQUFBQXd6NERBQlVBQUFBcVB3TUEvLy8vLzljK0F3RC8vLy8vMXo0REFQLy8vLzhxUHdNQS8vLy8veW8vQXdELy8vLy9SajhEQVAvLy8vOUdQd01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vK2MrQXdELy8vLy81VDREQVAvLy8vL25QZ01BLy8vLy8rVStBd0QvLy8vL3dENERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vOG8rQXdELy8vLy82ajREQVAvLy8vL29QZ01BLy8vLy8rbytBd0QvLy8vLzZENERBUC8vLy8vcVBnTUEvLy8vLytnK0F3RC8vLy8vNmo0REFQLy8vLy9vUGdNQS8vLy8vK28rQXdELy8vLy82RDREQVAvLy8vL3FQZ01BLy8vLy8rZytBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vK28rQXdELy8vLy82RDREQVAvLy8vL3FQZ01BLy8vLy8rZytBd0QvLy8vLzZqNERBUC8vLy8vb1BnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vNGo0REFQLy8vLzh3UHdNQS8vLy8vekEvQXdELy8vLy9NRDhEQVAvLy8vOHlQd01BLy8vLy96SS9Bd0QvLy8vLzZqNERBUC8vLy8vb1BnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9EUGdNQS8vLy8vK0krQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vRFBnTUEvLy8vLytJK0F3RC8vLy8vd3o0REFQLy8vLy9pUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vL0RQZ01BLy8vLy8rSStBd0QvLy8vL3d6NERBUC8vLy8vaVBnTUEvLy8vLzhNK0F3RC8vLy8vNGo0REFQLy8vLy9PUGdNQS8vLy8vOE0rQXdELy8vLy80ajREQVAvLy8vOHBQd01BLy8vLy95ay9Bd0QvLy8vL0tUOERBUC8vLy84cFB3TUEvLy8vL3lrL0F3RC8vLy8vMWo0REFBc0FBQUEwUHdNQUN3QUFBRFkvQXdBTEFBQUFPajhEQUFzQUFBQThQd01BQ3dBQUFFQS9Bd0FMQUFBQVFqOERBQXNBQUFCRVB3TUFDd0FBQUxBL0F3QUxBQUFBc1Q4REFBc0FBQUN5UHdNQUN3QUFBTE0vQXdBTEFBQUF0RDhEQUFzQUFBRDBQZ01BQ3dBQUFQYytBd0FMQUFBQStqNERBQXNBQUFEOVBnTUFDd0FBQUxVL0F3QUxBQUFBT2o4REFBc0FBQUJDUHdNQUN3QUFBTEUvQXdBTEFBQUFzejhEQUFzQUFBRDZQZ01BQ3dBQUFEUS9Bd0FMQUFBQU5qOERBQXNBQUFBNlB3TUFDd0FBQUR3L0F3QUxBQUFBUUQ4REFBc0FBQUJDUHdNQUN3QUFBTEEvQXdBTEFBQUFzVDhEQUFzQUFBQ3lQd01BQ3dBQUFMTS9Bd0FMQUFBQVJEOERBQXNBQUFDMFB3TUEvLy8vLzhVK0F3RC8vLy8vd3o0REFQLy8vLy9uUGdNQS8vLy8vK1UrQXdELy8vLy93ejREQVAvLy8vL2lQZ01BLy8vLy84TStBd0QvLy8vLzRqNERBUC8vLy8vSlBnTUEvLy8vLzhNK0F3RC8vLy8vS1Q4REFQLy8vLy9EUGdNQS8vLy8vK28rQXdELy8vLy93ejREQVAvLy8vL0JQZ01BLy8vLy84TStBd0QvLy8vLzV6NERBUC8vLy8vRFBnTUEvLy8vLzljK0F3RC8vLy8vd3o0REFQLy8vLzllUHdNQS8vLy8vMTQvQXdELy8vLy9YajhEQVAvLy8vOWVQd01BLy8vLy8xNC9Bd0QvLy8vL0tqOERBUC8vLy8vRFBnTUEvLy8vLzJBL0F3RC8vLy8vWUQ4REFQLy8vLzlnUHdNQS8vLy8vMkEvQXdELy8vLy9ZRDhEQVAvLy8vOUdQd01BLy8vLy84TStBd0QvLy8vL2NqOERBUC8vLy85eVB3TUEvLy8vLzNJL0F3RC8vLy8vY2o4REFQLy8vLzl5UHdNQS8vLy8vM2cvQXdELy8vLy9lajhEQVAvLy8vOThQd01BLy8vLy8zNC9Bd0QvLy8vL2dEOERBUC8vLy8rQ1B3TUEvLy8vLzRRL0F3RC8vLy8vaGo4REFQLy8vLytJUHdNQS8vLy8vNG8vQXdELy8vLy9qRDhEQVAvLy8vK09Qd01BLy8vLy81QS9Bd0QvLy8vL2tqOERBUC8vLy8rVVB3TUEvLy8vLzVZL0F3RC8vLy8vbUQ4REFQLy8vLythUHdNQS8vLy8vNXcvQXdELy8vLy9uajhEQVAvLy8vK2dQd01BLy8vLy82SS9Bd0QvLy8vL3BEOERBUC8vLy8rbVB3TUEvLy8vLzZnL0F3RC8vLy8vcWo4REFQLy8vLytzUHdNQS8vLy8veW8vQXdCQnFQTVJDeHAxQWdBQWRnSUFBSGNDQUFCNEFnQUFlUUlBQUhvQ0FBQjdBZ0JCMFBNUkN4Y0NBQUFBa0U0RUFBSUFBQURnVGdRQUFnQUFBREJQQkFCQjhQTVJDNjhCZFFJQUFId0NBQUI5QWdBQWZnSUFBSDhDQUFDQUFnQUFnUUlBQUFBQUFBQUZBQUFBaURNRUFBVUFBQUJRTkFRQUNRQUFBSmdqQkFBRUFBQUFHRFVFQUFRQUFBQzROUVFBQWdBQUFJQlBCQUFFQUFBQVdEWUVBQVFBQUFENE5nUUFBUUFBQVBCWEJBQUJBQUFBR0ZnRUFBSUFBQURRVHdRQUFnQUFBQ0JRQkFBQ0FBQUFjRkFFQUFJQUFBREFVQVFBQWdBQUFCQlJCQUFDQUFBQVlGRUVBQUlBQUFDd1VRUUFBZ0FBQUFCU0JBQkJxUFVSQ3hwMUFnQUFnZ0lBQUlNQ0FBQ0VBZ0FBaFFJQUFJWUNBQUNIQWdCQjBQVVJDNDhCQXdBQUFJZzRCQUFEQUFBQUFEa0VBQU1BQUFCNE9RUUFBd0FBQVBBNUJBQURBQUFBYURvRUFBb0FBQUNnSUFRQURBQUFBREFkQkFBUUFBQUFhQklFQUFZQUFBQlFLZ1FBQmdBQUFFQXJCQUFHQUFBQU1Dd0VBQVlBQUFBZ0xRUUFCZ0FBQUJBdUJBQUdBQUFBQUM4RUFBWUFBQUR3THdRQUJnQUFBT0F3QkFBR0FBQUEwREVFQUFFQUFBQkFXQVFBUWVqMkVRdGFkUUlBQUlnQ0FBQ0pBZ0FBaWdJQUFJc0NBQUNNQWdBQWpRSUFBRXhkQWdBc3NRRUFkVE1EQUxVM0F3QUFBQUFBYVBvREFPZCtBQUFBQUFBQUFBQ0FBa0FzQklBQUFJQUNBQUFBQUFBQUFBQ09BZ0FBandJQUFKQUNBRUhNOXhFTE5nWUFBQUNSQWdBQUNBQUFBRmo3QXdCSE9BQUFBQUFBQUFDQUFFQkFMUVNBQUlBQlFBQUFBQUFBQUFBQWtnSUFBSk1DQUFDVUFnQkJqUGdSQ3lOdUFBQUFsUUlBQUFnQUFBQlkrd01BMm1JQUFDQUFFQUFBQUFBQVlDMFVnQUFBQVFCQnVQZ1JDd3FXQWdBQWx3SUFBSmdDQUVITStCRUxPbTRBQUFDWkFnQUFDQUFBQUdqMUF3QU5pQUFBQUlBQUlBQUFBQUJBckFTZ0FJQUFDQUFBQUFBQUFBQUFtZ0lBQUpzQ0FBQ2NBZ0FBblFJQVFaRDVFUXMrR0FBQUFKNENBQUFJQUFBQUNBQUFBR2oxQXdBWkZ3QUFBQUFBUUFBQUFFQkFMQVRBQUlBQVNBQUFBQUFBQUFBQW53SUFBS0FDQUFDaEFnQUFvZ0lBUWRqNUVRcytHQUFBQUtNQ0FBQUlBQUFBQ0FBQUFHajFBd0JOS1FFQUFBQUJBQUFBQVFCQUxBV0FBSUFCQ0FBQUFBQUFBQUFBcEFJQUFLVUNBQUNtQWdBQXB3SUFRYUQ2RVFzK0dBQUFBS2dDQUFBSUFBQUFDQUFBQUpqMEF3QnI3UUFBQUFBQUFBQUFRQkJBUEF5QUFBQkFFQUFBQUFBQUFBQUFxUUlBQUtvQ0FBQ3JBZ0FBckFJQVFlajZFUXNtREFBQUFLMENBQUFJQUFBQUNBQUFBSmowQXdBTTdRQUFBZ0FBQUFBQkFBQkNQQXlBQUFFQVFaajdFUXNPcmdJQUFLOENBQUN3QWdBQXNRSUFRYkQ3RVFza0RBQUFBTElDQUFBSUFBQUFDQUFBQUpqMEF3Q3Y3QUFBQUlBQUVBQUFBQUJBdkF5UUFFSGcreEVMRHJNQ0FBQzBBZ0FBdFFJQUFMWUNBRUg0K3hFTEpBd0FBQUMzQWdBQUNBQUFBQWdBQUFDWTlBTUFIZTRBQUFDQUJBQUFBQUFBUUx3TWdBQkJxUHdSQ3c2NEFnQUF1UUlBQUxvQ0FBQzdBZ0JCd1B3UkN5VU1BQUFBdkFJQUFBZ0FBQUFJQUFBQW1QUURBS3p0QUFBQUFBQkFDQUFBQUVBOERNQUlBRUh3L0JFTERyMENBQUMrQWdBQXZ3SUFBTUFDQUVHSS9SRUxQZ3dBQUFEQkFnQUFDQUFBQUFnQUFBQ1k5QU1BNyt3QUFBQUFBQVFBQUFBQlFEd01oQUFBQUFFQUFBQUFBQUFBQU1JQ0FBRERBZ0FBeEFJQUFNVUNBRUhRL1JFTFBnd0FBQURHQWdBQUNBQUFBQWdBQUFDWTlBTUFLTzBBQUFBQUJBQUFBQUFJUUR3TWdBQUFBQWlZOUFNQWgrMEFBQkFBQUFBQWdBQUFVRHdNZ0FDQUFFR1kvaEVMRHNjQ0FBRElBZ0FBeVFJQUFNb0NBRUd3L2hFTE9nd0FBQURMQWdBQUNBQUFBQWdBQUFCWTlBTUFDclFBQUFBQUFBQUFBRUFJUUN3RWdBQUF3QXdBQUFBQUFBQUFBTXdDQUFETkFnQUF6Z0lBUWZUK0VRczFDUUFBQU04Q0FBQUlBQUFBV1BRREFMVzBBQUFCRUFBQUFBQUFBRUU4QklBQUFJQUVBQUFBQUFBQUFBRFFBZ0FBMFFJQUFBZ0FRYlQvRVFzMkNRQUFBTklDQUFBSUFBQUFnSDhFQUNlMEFBQUFBQUFBSUFnQUFFRThCSUFnQ0lBRUFBQUFBQUFBQUFEVEFnQUExQUlBQU5VQ0FFSDAveEVMTnRBQ0FBRFdBZ0FBQ0FBQUFGajBBd0RUc3dBQVFBQUFBQ0FBQUFCQUxBU0FJQUNBQkFBQUFBQUFBQUFBMXdJQUFOZ0NBQURaQWdCQnRJQVNDellKQUFBQTJnSUFBQWdBQUFDQWZ3UUFiYlFBQUFBQUFBQUFBQWdCUVR3RWdBQUFpQVVBQUFBQUFBQUFBTnNDQUFEY0FnQUEzUUlBUWZTQUVnczIwQUlBQU40Q0FBQUlBQUFBV1BRREFQTzBBQUFBQUFDQUFBQUFBVUFzQklBQUFJQUZBQUFBQUFBQUFBRGZBZ0FBNEFJQUFPRUNBRUcwZ1JJTElBa0FBQURpQWdBQUNBQUFBSmowQXdCTzdRQUFnUUFBQUFBQUFBREJQQXlBQUVIZ2dSSUxFZU1DQUFEa0FnQUFDQUFBQU9VQ0FBQUlBRUg4Z1JJTGN3d0FBQURtQWdBQUNBQUFBQWdBQUFBQUFBQUFtUFFEQURUdUFBQUFBQUlBQUFBQUFrQThEb0FBQUFBQ21QUURBRXpzQUFBQUFBSUFBQUFBUUVBOERvQUFBQUJBbVBRREFNenRBQUFBRUlBQUFBQUFBRUE4aklBQUFBQUFtUFFEQUFMdUFBQUFBQUFBQUVCQUFFQThESUFBUUVBQVFmaUNFZ3NPNXdJQUFPZ0NBQURwQWdBQTZnSUFRWkNERWdzK0RBQUFBT3NDQUFBSUFBQUFDQUFBQUpqMEF3QnE3QUFBQkFBQUFBQUFBQUpFUEF5QUFBQUFBZ0FBQUFBQUFBQUE3QUlBQU8wQ0FBRHVBZ0FBN3dJQVFkaURFZ3MvREFBQUFQQUNBQUFJQUFBQUNBQUFBRmowQXdEdnN3QUFBQUJBZ0FBQUFBQkFMRVNBQUFDQUJIajVBd0NES0FBQUFBQUlDQUFBQUFCQUxBeUlBQUFSQUVHZ2hCSUxDdkVDQUFEeUFnQUE4d0lBUWJTRUVndWZBeU1BQUFEMEFnQUFDQUFBQUhqNUF3QnJKZ0FBQUFnQVFBQUFBQUJBTEFUQUFBQVJBSGo1QXdEWUpnQUFBQWdBQUFBQUFCQkFMQVNBQUFBUkVIajVBd0N4SmdBQUFFQUFBQkFBQUFCQWJBU0FFQUFSQUhqNUF3QTRLUUFBQkFBQUFBQWdBQUJFTEFTQUFDQVJBUFVDQUFEMkFnQUE5d0lBQVBnQ0FBRDVBZ0FBK2dJQUFQc0NBQUQ4QWdBQS9RSUFBUDRDQUFEL0FnQUFBQU1BQUFFREFBQUNBd0FBQXdNQUFBUURBQUFGQXdBQUJnTUFBQWNEQUFBSUF3QUFNSWdFQU5xd0FRQUFBQUFBQUFBQkFrQUVDSWdnQUlFQ01JZ0VBRGV5QVFBQUFnQUFBQUFBZ0VBR0NJZ2dBSUNDTUlnRUFLK3hBUUJBQUFBQUFBQUFnRUFFQ0lnZ0FJQ0NNSWdFQUdpeEFRQUFBQUFBQURBQUFFQUVDSWdnTUlBQ01JZ0VBTzJ4QVFBUUFBSUFBQUFBQUZBRUNvZ2dBSUFDTUlnRUFKMndBUUFBQUlBQUJBQUFBRUFFaUlna0FJQUNaYmdBQUw0V0FBQ05xUUFBZnU4QUFFWXFBQUFvSVFFQVlMc0FBTitJQUFCYjRnQUEvTkFBQUJiZ0FBRCtOZ0VBTFJFQUFPbzJBUUFKRVFBQVowMEFBTytoQUFBZ0VRQUE2OHNBQVB3UUFBRGROZ0VBUWVDSEVnditBWVc2QUFCWVBBQUFqQjBBQUM4ZEFBQmhQQUFBbEIwQUFEY2RBQUJNUEFBQWdSMEFBQ1FkQUFDelBBQUF5UjBBQUd3ZEFBQjNIUUFBdXJvQUFCb2RBQUNRdWdBQStUOEJBQ0x2QUFBdTd3QUF2bThBQU0wMUFRQzhHZ0VBb3owQUFPK0hBQUEzNVFBQUFpZ0JBUDRFQUFBSkF3QUFDZ01BQUFzREFBQU1Bd0FBRFFNQUFBNERBQUFQQXdBQUVBTUFBQkVEQUFBU0F3QUFFd01BQUJRREFBQVZBd0FBRmdNQUFCY0RBQUFZQXdBQUdRTUFBQm9EQUFBYkF3QUFIQU1BQUIwREFBQWVBd0FBSHdNQUFDQURBQUFoQXdBQUlnTUFBQ01EQUFBa0F3QUFKUU1BQUNZREFBQW5Bd0FBS0FNQUFDa0RBQUFxQXdBQUt3TUFBQ3dEQUVIb2lSSUxCaTBEQUFBdUF3QkIrSWtTQ3dZdEF3QUFMd01BUVlpS0Vnc0dMUU1BQURBREFFR1lpaElMQmkwREFBQXhBd0JCcUlvU0N3WXRBd0FBTWdNQVFiaUtFZ3NHTFFNQUFETURBRUhJaWhJTEJpMERBQUEwQXdCQjJJb1NDd1l0QXdBQU5RTUFRZWlLRWdzR0xRTUFBRFlEQUVINGloSUxCaTBEQUFBM0F3QkJpSXNTQ3dZdEF3QUFPQU1BUVppTEVndHFMUU1BQURrREFBQTZBd0FBT3dNQUFEd0RBQUFBQUFBQVBRTUFBRDREQUFENm5nSUFYRHdEQU45OEFnQmNQQU1BUFo4Q0FBQUFBQURBZ0FRQXlld0FBQUVBQUFBQUFBQ0F3VHdNZ0FBQUFJQUFBQUFBQUFBQUFEOERBQUJBQXdBQVFRTUFBT1VDQUFCQ0F3QkJqSXdTQzZZQjR3SUFBRU1EQUFBSUFBQUE1UUlBQUFnQUFBRGFDZ0FBU0xjQUFCUXNBUUFSY0FBQU8zQUFBTUFvQVFBekl3QUFIZDRBQU5OOUFBQUlGd0VBd2hBQUFGWWxBQUJmNndBQXViTUFBRmV5QUFEbnNnQUFhcklBQUFBQUFBQjRrUVFBUnh3QUFFQUFBQUlBQUFBQVFBUUVnMkFBd0FCNGtRUUFJaHdBQUFBQUFBQUFJQUFJQUFRRWdXQWd3QWdBQUFBQUFBQUFBRVFEQUFCRkF3QUFSZ01BQUVjREFBQklBd0JCdkkwU0N4SkpBd0FBU2dNQUFFc0RBQUJNQXdBQVRRTUFRZGlORWdzUlRnTUFBRThEQUFBSUFBQUFDQUFBQUFnQVFmU05FZ3RyVGdNQUFGQURBQUFJQUFBQUNBQUFBQWdBQUFCNm9RQUF2czhBQU9EbUFBQ01GUUFBS0l3RUFCa29BQUFBQUFBZ0FBQUVBRUFFQUtBaEFFUUFHSWNFQUxVbkFBQUFBQUFDQUVBQUFFQUVBS0loUUVRQUdJY0VBSmNuQUFBQUFCQUFBQkFBQUVBRUVLQWhFRVFBUWVpT0Vnc0dVUU1BQUZJREFFSDRqaElMQmxNREFBQlVBd0JCaUk4U0N3WlZBd0FBVmdNQVFaaVBFZ3NHVndNQUFGZ0RBRUdvanhJTEJsRURBQUJaQXdCQnVJOFNDeDlSQXdBQVdnTUFBQ2lNQkFDZktBQUFBQUFJQUFBQ0FBQkFCQWlnSVFKQUFFSGdqeElMQmxzREFBQmNBd0JCOEk4U0N5NVhBd0FBWFFNQUFHaUlCQUQ0dHdBQUFBRUFBQUFBQUVCQUZRQ0FJQUFBUUFBQUFBQUFBQUFBWGdNQUFGOERBRUdva0JJTExtQURBQUJoQXdBQTJJZ0VBS3J5QUFBQUFBZ0FBQUFBQWtBRUNJZ2dBSUFDQUFBQUFBQUFBQUF0QXdBQVlnTUFRZUNRRWdzdVl3TUFBR1FEQUFEb2l3UUFFelVBQUFBUUFBQUFBQUJBUUJRQWdDQUFBRUFBQUFBQUFBQUFBR0FEQUFCbEF3QkJtSkVTQ3g5bUF3QUFad01BQUlDUEJBQkN2d0FBQUFCQUFBZ0FBQUJBQkVDSktBQ1FBRUhBa1JJTEJtZ0RBQUJwQXdCQjBKRVNDeDlxQXdBQWF3TUFBT2lMQkFBanRnQUFBQUFBQ0FBQWdBQkFCQUNJSUFDQUFFSDRrUklMQm1NREFBQnNBd0JCaUpJU0N4OW1Bd0FBYlFNQUFDaU1CQUQwSmdBQUFBQUFBQUFBRWdCQUJBQ2dJUUJTQUVHd2toSUxCbTREQUFCdkF3QkJ3SklTQ3k1WEF3QUFjQU1BQU5pSUJBQVF0UUFBQUFBQUVBQUFBQUpBQkFDWUlBQ0FBZ0FBQUFBQUFBQUFjUU1BQUhJREFFSDRraElMTG1NREFBQnpBd0FBYUlnRUFEaXFBQUFBSUFBQUFBQWdBRUEwQUlBZ0FDQkFBQUFBQUFBQUFBQjBBd0FBZFFNQVFiQ1RFZ3NmWUFNQUFIWURBQUFvakFRQTBpZ0FBQUFnUUFBQUFBQUFRQ1JBb0NFQVFBQkIySk1TQ3daM0F3QUFlQU1BUWVpVEVnc2ZWd01BQUhrREFBQ0Fqd1FBU3JRQUFBQUFBQUFBQVFRQVFBUUFpU0FCbEFCQmtKUVNDd1o2QXdBQWV3TUFRYUNVRWdzZmFnTUFBSHdEQUFDQWp3UUE1RDhCQUNBQUFBQUFnQUFBWUFRQWlTQ0FrQUJCeUpRU0N3WjlBd0FBZmdNQVFkaVVFZ3MzYWdNQUFIOERBQUFvakFRQUtTY0FBQUFBQUFBQUNRQUFRQVFBb0NFSlFBQVlod1FBMXljQUFBQUFDQUFJQUFBQVFBUUlvQ2tBUkFCQm1KVVNDd2FBQXdBQWdRTUFRYWlWRWdzR2dnTUFBSU1EQUVHNGxSSUxCbGNEQUFDRUF3QkJ5SlVTQ3g5UkF3QUFoUU1BQUlDUEJBQWM0d0FBQUVRQUFBQUFBQUJBUkFDSklBQ1FBRUh3bFJJTEJvWURBQUNIQXdCQmdKWVNDMDlxQXdBQWlBTUFBSUNQQkFDUnRBQUFBQUFBQVFBQVFBQkFCQUNKSUFEUUFBaUxCQUR3UmdBQWdBQUFBQUFBQUFMQUJBQ0pJQURRQWdpTEJBQ1hHUUVBQUFBSUFBQUFCQUJBQkFpSklBRFVBRUhZbGhJTEJva0RBQUNLQXdCQjZKWVNDd2FMQXdBQWpBTUFRZmlXRWdzR2pRTUFBSTREQUVHSWx4SUxCbW9EQUFDUEF3QkJtSmNTQ3dhSkF3QUFrQU1BUWFpWEVnc2VpUU1BQUpFREFBRG9pd1FBZkJvQkFBQUFBQUFFUUFBQVFBUUFnQ1JBQUVIUWx4SUxCcElEQUFDVEF3QkI0SmNTQ3gxbUF3QUFsQU1BQVBDYUJBQlBLQUVBUUFBQUFDQUFBQUJBQkFDQUlBQkJpSmdTQ3pkbUF3QUFsUU1BQU9pTEJBQzZLUUFBUUFBQUFBRUFBQUJBQkFDQUlRQUFBQkNNQkFDSUtRQUFBQUFBSUFBQVFBQkFCQUNnSVFCQUFFSEltQklMQnBZREFBQ1hBd0JCMkpnU0N3WlhBd0FBbUFNQVFlaVlFZ3NHWmdNQUFKa0RBRUg0bUJJTFdwWURBQUNhQXdBQU9KZ0VBRms0QUFBQUFBQUFRZ0FBQUFBRUJJSmlBb0FBVUpnRUFQOStBQUFBQUFDQ0FBQUFBQUFFQklJZ0NBQUVBQUFBQUFBQUFBQ2JBd0FBbkFNQUFKMERBQUNlQXdBQW53TUFBS0FEQUFDaEF3QkIzSmtTQ3dhaUF3QUFvd01BUWV5WkVnc2FwQU1BQUtVREFBQ2RBd0FBbmdNQUFKOERBQUNnQXdBQW9RTUFRWkNhRWd0ZXBnTUFBS2NEQUFBb2pBUUFIeWtBQUFBQUFBUUFBZ0FBUUFRQXBDRUNRQURvaXdRQWFXZ0FBQUFBSUFBQUFBQVFRQVFnZ0NBQUFCQW9qQVFBYUNnQUFBQUFBQUFBZ0FDQVFBUUFvQ0dBUUlBQUFBQUFBQUFBQUtnREFBQ3BBd0JCK0pvU0N3YXFBd0FBcXdNQVFZaWJFZ3NHckFNQUFLMERBRUdZbXhJTEJsY0RBQUN1QXdCQnFKc1NDd1pYQXdBQXJ3TUFRYmliRWdzZlpnTUFBTEFEQUFEWWlBUUE4N1VBQUFBQWdBQUNBQUFBUUFTQWlDSUFnQUJCNEpzU0N3YXhBd0FBc2dNQVFmQ2JFZ3R1WXdNQUFMTURBQURvaXdRQXZCNEJBQUFBQVFBQUFDQUFRQVFCZ0NBQUlBRDRqUVFBZVI0QkFBQUlBQUFBQkFBQVFBd0JnQ0FFSUFENGpRUUFUQjRCQUFBQUFBQUNBQ0FBUUFRQmdDSUFJQUQ0alFRQUpISUFBQVFBQUFBQUNBQUFSQVFCZ0NBSUlBQ0Fqd1FBczNJQVFlZWNFZ3NYaUVBRUFJa2dBSkNJQUFBQUFBQUFBQUMwQXdBQXRRTUFRWWlkRWdzR3RnTUFBTGNEQUVHWW5SSUxCcmdEQUFDNUF3QkJxSjBTQ3dhNkF3QUF1d01BUWJpZEVnc0d2QU1BQUwwREFFSEluUklMQm1ZREFBQytBd0JCMkowU0N3YTBBd0FBdndNQVFlaWRFZ3NHdEFNQUFNQURBRUg0blJJTEJyUURBQURCQXdCQmlKNFNDeTVxQXdBQXdnTUFBR2lJQkFDTVpBQUFnQUFBQUFBQUFFREFGQUNBSUFBQVFBQUFBQUFBQUFBQXd3TUFBTVFEQUVIQW5oSUxMbUFEQUFERkF3QUFhSWdFQUUrMkFBQUFBZ0FFQUFBQUFFQVdBSVFnQUFCQUFBQUFBQUFBQUFER0F3QUF4d01BUWZpZUVnc2ZZQU1BQU1nREFBRFlpQVFBMkxVQUFBQUFBQUVBQUJBQVFBUUFpU0FBa0FCQm9KOFNDd1pxQXdBQXlRTUFRYkNmRWdzZll3TUFBTW9EQUFBb2pBUUFVaWtBQUFBQUFBQ0FBUUFBUUFRQW9LRUJRQUJCMko4U0N3YkxBd0FBekFNQVFlaWZFZ3RDVndNQUFNMERBQUN3a0FRQTF6d0FBQUFBQUFBQUFJQVFCQVFFb0dJQ2dCQUFBQUFBQUFBQUFNNERBQURQQXdBQTBBTUFBTkVEQUFEU0F3QUEwd01BQU5RREFFRzBvQklMTTlVREFBRFdBd0FBQ0FBQUFBZ0FBQURTQXdBQTB3TUFBQWdBQUFDd2tBUUFzakVBQUVBQUFBQUFBRUFBUkFRRW9HSUN3QUJCOEtBU0N4clhBd0FBMkFNQUFOa0RBQURhQXdBQTBnTUFBTk1EQUFEYkF3QkJsS0VTQ3pQVkF3QUEzQU1BQUFnQUFBQUlBQUFBMGdNQUFOTURBQUFJQUFBQVVKa0VBRzFFQVFBRUFBQWdBQUFBQUFRRUJLQmlBb0FBUWRDaEVnc1oxUU1BQU4wREFBQUlBQUFBQ0FBQUFOSURBQURUQXdBQUNBQkI5S0VTQ3pjRkFnQUEzZ01BQUFnQUFBQUlBQUFBQ1FJQUFBb0NBQUFJQUFBQVVKa0VBTmNPQUFBQUFBQUFBQUVBQkFBRUJJQmlBNEFFeTY4QkFFRzBvaElMR2dVQ0FBRGZBd0FBNEFNQUFPRURBQURpQXdBQTR3TUFBT1FEQUVIWW9oSUxad1VDQUFEbEF3QUFDQUFBQUFnQUFBQUpBZ0FBQ2dJQUFBZ0FBQUFBQUFBQUFKb0VBR29jQUFBQUFBQUJBQUJBQUFBRUJJRmdBTUFBZUpFRUFPVWJBQUFBSUFBQ0FBQUFBQUFrQklOZ0FNQUFlSkVFQUFRY0FBQUFBQUFBQWdBQkFBQUVCSUZpQU1FQVFjaWpFZ3NSVGdNQUFPWURBQUFJQUFBQUNBQUFBQWdBUWVTakVnc1M1d01BQU9nREFBRHBBd0FBNmdNQUFPc0RBRUdBcEJJTEV1d0RBQUR0QXdBQTdnTUFBTzhEQUFEd0F3QkJuS1FTQ3dueEF3QUE4Z01BQUFnQVFiQ2tFZ3NHOHdNQUFQUURBRUhBcEJJTEVVNERBQUQxQXdBQUNBQUFBQWdBQUFBSUFFSGNwQklMVGs0REFBRDJBd0FBQ0FBQUFBZ0FBQUFJQUFBQVVKa0VBSzVFQVFBQUFBQUVBQUFBQ0FBRUJJUmlBb0FJQUFBQUFBQUFBQUQzQXdBQStBTUFBUGtEQUFENkF3QUErd01BQVB3REFBRDlBd0JCdEtVU0N6TUZBZ0FBL2dNQUFBZ0FBQUFJQUFBQUNRSUFBQW9DQUFBSUFBQUFVSmtFQUVtK0FBQUFFQUFBQUFBUUFBQVVCSUJpQXBBQVFmQ2xFZ3NhL3dNQUFBQUVBQUFCQkFBQUFnUUFBQU1FQUFBRUJBQUFCUVFBUVpTbUVndFdCUUlBQUFZRUFBQUlBQUFBQ0FBQUFBa0NBQUFLQWdBQUNBQUFBTkNZQkFBazlBQUFBQUFLQUFBQUFBQUFCQTZBWXdLQUFRQUFBQUFBQUFBQUJ3UUFBQWdFQUFBSkJBQUFDZ1FBQUFrQ0FBQUtBZ0FBQ3dRQVFmU21FZ3RXREFRQUFBMEVBQUFJQUFBQUNBQUFBQWtDQUFBS0FnQUFDQUFBQU5DWUJBQ2U4d0FBUUFBQUFBQUFDQUJBQkFTQVl3S0lBUUFBQUFBQUFBQUFEZ1FBQUE4RUFBQVFCQUFBRVFRQUFBa0NBQUFLQWdBQUVnUUFRZFNuRWd0V0RBUUFBQk1FQUFBSUFBQUFDQUFBQUFrQ0FBQUtBZ0FBQ0FBQUFOQ1lCQUJnOHdBQUFBRUFFQUFBQUFBQUJRU1FZd0tBQVFBQUFBQUFBQUFBRkFRQUFCVUVBQUFXQkFBQUZ3UUFBQWtDQUFBS0FnQUFHQVFBUWJTb0Vnc3pEQVFBQUJrRUFBQUlBQUFBQ0FBQUFBa0NBQUFLQWdBQUNBQUFBRkNaQkFDSXVBRUFBQUlBQUFBRUFBQUFCZ1NBWWdhQUFFSHdxQklMR2hvRUFBQWJCQUFBSEFRQUFCMEVBQUFlQkFBQUh3UUFBQ0FFQUVHVXFSSUxNd1VDQUFBaEJBQUFDQUFBQUFnQUFBQUpBZ0FBQ2dJQUFBZ0FBQUJRbVFRQTZiOEJBQUVRQUFBQUFBQUFBUlFFZ0dJQ2dBQkIwS2tTQ3hvaUJBQUFJd1FBQUNRRUFBQWxCQUFBSmdRQUFDY0VBQUFvQkFCQjlLa1NDek1GQWdBQUtRUUFBQWdBQUFBSUFBQUFDUUlBQUFvQ0FBQUlBQUFBVUprRUFNQy9BUUFBSUVBQUFBQUFBQUFrUklCaUFvQUFRYkNxRWdzYUtnUUFBQ3NFQUFBc0JBQUFMUVFBQUM0RUFBQXZCQUFBTUFRQVFkU3FFZ3N6QlFJQUFERUVBQUFJQUFBQUNBQUFBQWtDQUFBS0FnQUFDQUFBQUZDWkJBQ1FFQUFBQUFBUUFJQUFBQUFBQkJTQTRnS0FBRUdRcXhJTEdqSUVBQUF6QkFBQU5BUUFBRFVFQUFBMkJBQUFOd1FBQURnRUFFRzBxeElMVmdVQ0FBQTVCQUFBQ0FBQUFBZ0FBQUFKQWdBQUNnSUFBQWdBQUFEUW1BUUFjdlFBQUFBQkFBQkFBQUFBQUFVRWdHTUNnQUVBQUFBQUFBQUFBRG9FQUFBN0JBQUFQQVFBQUQwRUFBQUpBZ0FBQ2dJQUFENEVBRUdVckJJTE1Rd0VBQUEvQkFBQUNBQUFBQWdBQUFBSkFnQUFDZ0lBQUFnQUFBRHdtZ1FBWHlnQkFBQUFCQUFnQUFBQUFBUUVnQ0FBUWRDc0Vnc2Y4d01BQUVBRUFBQlFtUVFBcW04QUFFQUFnQUFBQUFBQVFBU0VnR0lDZ0FCQitLd1NDeHBCQkFBQVFnUUFBRU1FQUFCRUJBQUFDUUlBQUFvQ0FBQkZCQUJCbkswU0N6TUZBZ0FBUmdRQUFBZ0FBQUFJQUFBQUNRSUFBQW9DQUFBSUFBQUFVSmtFQUNZckFRQUFBQUFBTUFBQUFBQUVCSUJ5QW9BQVFkaXRFZ3NhUndRQUFFZ0VBQUJKQkFBQVNnUUFBQWtDQUFBS0FnQUFTd1FBUWZ5dEVndFdCUUlBQUV3RUFBQUlBQUFBQ0FBQUFBa0NBQUFLQWdBQUNBQUFBTkNZQkFDMjlBQUFBQUFBQUFBQkJBQUFCQVNBWXdPRUFRQUFBQUFBQUFBQVRRUUFBRTRFQUFCUEJBQUFVQVFBQUFrQ0FBQUtBZ0FBVVFRQVFkeXVFZ3N6REFRQUFGSUVBQUFJQUFBQUNBQUFBQWtDQUFBS0FnQUFDQUFBQUZDWkJBQ2Rjd0FBQUFBQUFFQVFBQUFBQkFTQVloS0FBRUdZcnhJTEdsTUVBQUJVQkFBQVZRUUFBRllFQUFBSkFnQUFDZ0lBQUZjRUFFRzhyeElMVmdVQ0FBQllCQUFBQ0FBQUFBZ0FBQUFKQWdBQUNnSUFBQWdBQUFEUW1BUUEyL01BQUFBQUFFQUFCQUFBQUFRRXdHTUdnQUVBQUFBQUFBQUFBRmtFQUFCYUJBQUFXd1FBQUZ3RUFBQUpBZ0FBQ2dJQUFGMEVBRUdjc0JJTGJnd0VBQUJlQkFBQUNBQUFBQWdBQUFBSkFnQUFDZ0lBQUFnQUFBQlFtUVFBYXpnQUFBQUFBSUlBQUFBQUFBUUVnbUlDZ0FBd2xnUUFGMzhBQUFBQUFBQUFDQUFFQUFRRWdDQUlBQVFBQUFBQUFBQUFBS1FEQUFCZkJBQUFuUU1BQUo0REFBQ2ZBd0FBb0FNQUFLRURBRUdVc1JJTEJxWURBQUJnQkFCQnBMRVNDeGtGQWdBQVlRUUFBQWdBQUFBSUFBQUFDUUlBQUFvQ0FBQUlBRUhJc1JJTFFmTURBQUJpQkFBQVVKa0VBTzcwQUFBQUFBQUFBUUFBQVFBRUJJQmpBb0FCQUFBQUFBQUFBQUFNQkFBQVl3UUFBQWdBQUFBSUFBQUFDUUlBQUFvQ0FBQUlBRUdVc2hJTFV3VUNBQUJrQkFBQUNBQUFBQWdBQUFBSkFnQUFDZ0lBQUFnQUFBQnBGd0VBTDBNQkFCRkRBUUR3REFBQXJFSUJBSll1QVFDdERBQUFBQUFBQUFDYUJBRHZDd0VBQUFBQUFBSUNBQUFBQkFTQVlnS0FBRUh3c2hJTEdRVUNBQUJsQkFBQUNBQUFBQWdBQUFBSkFnQUFDZ0lBQUFnQVFaU3pFZ3NqOFFNQUFHWUVBQUFJQUFBQVVKa0VBSkMvQVFBQUFBQUFBQ0FDQUFBRUJJQmlJb0lBUWNDekVnc2Fad1FBQUdnRUFBQnBCQUFBYWdRQUFHc0VBQUJzQkFBQWJRUUFRZVN6RWdzekJRSUFBRzRFQUFBSUFBQUFDQUFBQUFrQ0FBQUtBZ0FBQ0FBQUFEQ1dCQUFUS0FFQUFBQUFBRUFBZ0FBQUJBU0FZQUNBQUVHZ3RCSUxTdkVEQUFCdkJBQUFDQUFBQUFBQUFBQlFtUVFBRDJrQUFBQUFBQUFBQUFnZ0FBUUVnR0lDaUNBQUFBQUFBQUFBQUhBRUFBQnhCQUFBY2dRQUFITUVBQUIwQkFBQWRRUUFBSFlFQUVIMHRCSUxNd1VDQUFCM0JBQUFDQUFBQUFnQUFBQUpBZ0FBQ2dJQUFBZ0FBQUJRbVFRQWp6WUJBQUFBQUFBQUNCQUFBQVFFZ0dJS2tBQkJzTFVTQ3hwNEJBQUFlUVFBQUhvRUFBQjdCQUFBQ1FJQUFBb0NBQUI4QkFCQjFMVVNDOGtLQlFJQUFIMEVBQUFJQUFBQUNBQUFBQWtDQUFBS0FnQUFDQUFBQUFBQUFBRFA4Z0FBQUFRQWdBQUFBQUFBQkFDQUFBQUFBS0k3QVFENVB3RUFJdThBQUM3dkFBQ2lPd0VBWmJnQUFMNFdBQUNOcVFBQWJSc0JBSDd2QUFCR0tnQUFLQ0VCQUdDN0FBRGZpQUFBb2pzQkFKbStBUUFKdlFFQTNUb0FBSyszQVFDK3ZnRUFmanNBQURLNEFRQkJ2d0VBUlRzQUFBTzRBUUFTdndFQUREc0FBTlMzQVFEanZnRUE5VG9BQU1LM0FRRFJ2Z0VBbXpzQUFFcTRBUUJadndFQVlqc0FBQnU0QVFBcXZ3RUFLVHNBQU95M0FRRDd2Z0VBV2JzQkFPd05BQUNLUkFFQUM3NEFBRjI0QVFCc3Z3RUF1cjRCQVArN0FRQXQ0Z0FBVWRNQUFGSzdBUUFQNGdBQU05TUFBUEs0QVFEeDRRQUFGZE1BQVBpN0FRQWw0Z0FBU2RNQUFFdTdBUUFINGdBQUs5TUFBT3U0QVFEcDRRQUFEZE1BQVBHN0FRQWQ0Z0FBUWRNQUFFUzdBUUQvNFFBQUk5TUFBT1M0QVFEaDRRQUFCZE1BQURSa0FBQWNjd0FBZ2FFQUFCUkRBUURBUWdFQXp3d0FBSkZDQVFDT0xnRUFwUXdBQUs5Q0FRQzREQUFBZXk0QkFJd01BQURlUWdFQUtjc0FBUHhDQVFBZlF3RUF5MElCQU9BTUFBQ2NRZ0VBY0w0QkFJKzhBUUExNGdBQVdkTUFBT1BRQUFCM0ZRQUFZcnNCQUJmaUFBQTcwd0FBM2RBQUFIRVZBQUQ1dUFFQStlRUFBQjNUQUFEUzBBQUFheFVBQUtJN0FRQmI0Z0FBL05BQUFCYmdBQUQrTmdFQUxSRUFBT28yQVFBSkVRQUFaMDBBQU8raEFBQWdFUUFBNjhzQUFQd1FBQURkTmdFQW9qc0JBQTlxQUFCam9BQUE4T0FBQUYvZkFBQ2lPd0VBWGxZQUFKOWRBUUROU3dBQU1Db0FBSHdXQUFCZHVBRUFNTElCQUtOaUFBQlpUZ0FBOHRFQUFFNi9BQURDQ1FBQXI5RUFBQXU0QUFBRDBnQUFnYmtBQUYrOEFRQVUwZ0FBaDc4QUFEeWFBQUJ6VGdBQStkRUFBQ2xPQUFDdlJBQUFGazRBQUZoR0FBRENYZ0FBaGpFQUFHc3JBUUNDR3dBQXNqd0JBS1U4QVFBVUVnQUFuZkVBQU9rWEFRRFZDZ0FBaC9FQUFOY1hBUURDaUFBQVZid0JBSmRFQUFCWU1BRUFPek1BQUNvekFBQVZhZ0FBZTEwQkFOSTdBQUNhaUFBQXg5RUFBTFB4QUFEN0Z3RUFqRVFBQU00WUFBQ21pQUFBbDlFQUFNSGJBQUI4dkFFQTF4SUFBRGE0QUFDMEVBQUFzK0VBQU4vaUFBQStQQUFBeDdvQUFKMjZBQUN0dWdBQWVMb0FBQ1lVQUFCc3VBRUFJMUVBQU13NEFBRElPd0FBbzBRQUFPNHlBUUNzN3dBQTN6Z0FBUHE0QUFBbHVBQUFDdElBQUxtYUFBQzRHQUFBdjVvQUFFVjFBQUNidVFBQUc5SUFBTTN4QUFDSVF3RUFQRHdBQU1XNkFBQ2J1Z0FBcTdvQUFIYTZBQUFsZFFBQXJUOEJBTkJRQUFEeGR3QUFuUGNBQUIxTEFBQXVVZ0FBODEwQUFOY2FBUUR3WWdBQXNmY0FBQkhBQUFCdlB3RUFLOEFBQUlJZ0FRQjE5UUFBd2o4QkFNNC9BUUNDOVFBQUNqOEJBTnBjQVFEYkVnQUFicmdBQUlzMUFRQ0lpQUFBaFdvQUFCVWdBUURFendBQUN1TUFBS0k3QVFDK2J3QUF6VFVCQUx3YUFRQ2lPd0VBb3owQUFPK0hBQUEzNVFBQW9qc0JBSVc2QUFCWVBBQUFqQjBBQUM4ZEFBQmhQQUFBbEIwQUFEY2RBQUJNUEFBQWdSMEFBQ1FkQUFDelBBQUF5UjBBQUd3ZEFBQjNIUUFBdXJvQUFCb2RBQUNRdWdBQU1MSUJBTHErQVFCd3ZnRUFiTDhCQUYyNEFRQUx2Z0FBajd3QkFHSzdBUUQ1dUFFQS83c0JBRks3QVFEeXVBRUErTHNCQUV1N0FRRHJ1QUVBOGJzQkFFUzdBUURrdUFFQVo3c0JBQWdYQVFEd0VBQUE2MklBQUI4akFBQnRZQUFBR1JJQUFPY0xBQUIyNFFBQUM4QUFBUHd6QUFBZ0VRQUFISE1BQUZqekFBQkw2Z0FBMlJRQUFOb1RBQUFXQkFBQUNnUUFBRFlQQUFBTEJBQUFGQVFBQUJRVUFBQVhGQUFBOEpvRUFCQzdBQUFBQ0FBQUFnQUFBQUFNQUlBQ0FFR293QklMQ1g0RUFBQi9CQUFBQ0FCQndNQVNDeVAvdXdFQVVyc0JBUEs0QVFENHV3RUFTN3NCQU91NEFRRHh1d0VBUkxzQkFPUzRBUUJCN01BU0MwYUFCQUFBZ1FRQUFJSUVBQUNEQkFBQWhBUUFBSVVFQUFDR0JBQUFDS0FFQUdONUFBQUFBQWdBQUFBQUJBQU1DSUFDQUFBRUFBQUFBQUFBQUFDSEJBQUFpQVFBQUlrRUFFRzh3UklMSTM0RUFBQ0tCQUFBQ0FBQUFBaWdCQUNBRkFBQUFBQUFBQUFDQWdBQURBQ0FBZ0lDQUVIb3dSSUxDb3NFQUFDTUJBQUFqUVFBUWZ6QkVnc2FnQVFBQUk0RUFBQ1BCQUFBa0FRQUFKRUVBQUNTQkFBQWt3UUFRYURDRWdzYWdBUUFBSlFFQUFDVkJBQUFsZ1FBQUpjRUFBQ1lCQUFBbVFRQVFjVENFZ3NhbWdRQUFKc0VBQUNjQkFBQW5RUUFBSjRFQUFDZkJBQUFvQVFBUWVqQ0Vnc2xmZ1FBQUtFRUFBQUlBQUFBQUFBQUFBaWdCQUJrU3dBQUFBQ0NBQUFBQUFBQURJS0FBZ0JCbU1NU0N3cWlCQUFBb3dRQUFLUUVBRUdzd3hJTEdvQUVBQUNsQkFBQXBnUUFBS2NFQUFDb0JBQUFxUVFBQUtvRUFFSFF3eElMR3BvRUFBQ3JCQUFBckFRQUFLMEVBQUN1QkFBQXJ3UUFBTEFFQUVIMHd4SUxJWDRFQUFDeEJBQUFDQUFBQUFpZ0JBQk1FQUFBQUFBSUlBQUFBQUFBREFpZ0FnQkJvTVFTQ3dxeUJBQUFzd1FBQUxRRUFFRzB4QklMQ1g0RUFBQzFCQUFBQ0FCQnlNUVNDeHFBQkFBQXRnUUFBTGNFQUFDNEJBQUF1UVFBQUxvRUFBQzdCQUJCN01RU0N4cWFCQUFBdkFRQUFMMEVBQUMrQkFBQXZ3UUFBTUFFQUFEQkJBQkJrTVVTQ3hxYUJBQUF3Z1FBQU1NRUFBREVCQUFBeFFRQUFNWUVBQURIQkFCQnRNVVNDekdhQkFBQXlBUUFBTWtFQUFES0JBQUF5d1FBQU13RUFBRE5CQUFBQ0tBRUFJZ09BQUFBQUFDZ0FBQUFBQUFNQUtBQ0FFSHd4UklMRHM0RUFBRFBCQUFBMEFRQUFFVEpBRUdJeGhJTENYNEVBQURSQkFBQUNBQkJuTVlTQ3hxYUJBQUEwZ1FBQU5NRUFBRFVCQUFBMVFRQUFOWUVBQURYQkFCQndNWVNDeHFhQkFBQTJBUUFBTmtFQUFEYUJBQUEyd1FBQU53RUFBRGRCQUJCNU1ZU0N6S2FCQUFBM2dRQUFOOEVBQURnQkFBQTRRUUFBT0lFQUFEakJBQUFDS0FFQU1WREFBQUFBQUFFQUFnQUFBQU1BSVFDQ0FCQm9NY1NDd3JrQkFBQTVRUUFBT1lFQUVHMHh4SUxPSDRFQUFEbkJBQUFDQUFBQUFpZ0JBQ1JSQUVBQUFBQUFBQURBQUFBREFDQUFnTUFBTUNBQkFDM1hBRUFDRUFBQUFBQUFBREpmQXlBQUVINHh4SUxDdWdFQUFEcEJBQUE2Z1FBUVl6SUVnc1M2d1FBQU93RUFBRHRCQUFBNVFJQUFPNEVBRUdveUJJTEdvQUVBQUR2QkFBQThBUUFBUEVFQUFEeUJBQUE4d1FBQVBRRUFFSE15QklMR29BRUFBRDFCQUFBOWdRQUFQY0VBQUQ0QkFBQStRUUFBUG9FQUVId3lCSUxHb0FFQUFEN0JBQUEvQVFBQVAwRUFBRCtCQUFBL3dRQUFBQUZBRUdVeVJJTEdwb0VBQUFCQlFBQUFnVUFBQU1GQUFBRUJRQUFCUVVBQUFZRkFFRzR5UklMR29BRUFBQUhCUUFBQ0FVQUFBa0ZBQUFLQlFBQUN3VUFBQXdGQUVIY3lSSUxHb0FFQUFBTkJRQUFEZ1VBQUE4RkFBQVFCUUFBRVFVQUFCSUZBRUdBeWhJTEdvQUVBQUFUQlFBQUZBVUFBQlVGQUFBV0JRQUFGd1VBQUJnRkFFR2t5aElMQ1g0RUFBQVpCUUFBQ0FCQnVNb1NDeEhqQWdBQUdnVUFBQWdBQUFEbEFnQUFDQUJCMU1vU0M0b0VHd1VBQUJ3RkFBQUlBQUFBQ0FBQUFBQUFBQUR3bWdRQTFRc0JBQUJBQUFRQUFBQUFBRVFBaEFBQUFBQm9wUVFBZFRZQkFBQUFDUUFBQUFBQUFFUUpoQUFBQUFCb3BRUUFMNzRBQUFDQUFBQUFDQUFBQU1RQWhBQUlBQUJvcFFRQWQ3OEJBQUFBQUFCQWdBQUFBRVFBaEVDQUFBQm9wUVFBMEw4QkFBQkFnQUFBQUFBQUFFU0FoQUFBQUFCb3BRUUFwNzhCQUFLQUFBQUFBQUFBQXNRQWhBQUFBQUJvcFFRQWpXOEFBQUFBQUFBQUFDSUFBRVFBaEFBQUlnQm9wUVFBQnlzQkFBQUFBQUFCQUFRQUFFUUFoQUVBQkFCb3BRUUE4MmdBQUFBQUFBQUlBQUFRQUVRQWhBZ0FBQkJvcFFRQWRCQUFBQUFFQUFBQUFRQUFBRVFBaEFBQkFBQm9wUVFBdkE0QUFBQWdBQUVBQUFBQUFHUUFoUUFBQUFCb3BRUUFnSE1BQUFBRUlBQUFBQUFBQUVRZ2hBQUFBQUJvcFFRQTBmUUFBQUFBQ0VBQUFBQUFBRVFJeEFBQUFBQ0lwZ1FBZlBNQUFBQUFBQUlBQUFRQUFFUUl4Z0FBQkFDSXBnUUE5dk1BQUFBQUJBQUFBQUFFQUVRTXhBQUFBQVNJcGdRQVNmUUFBQUNBQUNBQUFBQUFBTVFJNUFBQUFBQ0lwZ1FBa3ZRQUFBQUFRQUVBQUFBQUFFUkl4UUFBQUFDSXBnUUF0L01BQUFBQUVBQUFBQkFBQUVRWXhBQUFFQUJvcFFRQUNqd0JBQWdBQUFBQUJBQUFDRVFBaEFBRUFBQVlwd1FBdjJJQUFBQUFBSUFBQUFBRUNFUUFoQUFFQUFRWXB3UUFLemdBQUlBQUFRQUFBQUFBaUVRQmhBQUVBRUhvemhJTERoMEZBQUFlQlFBQUh3VUFBQ0FGQUVHQXp4SUxEaDBGQUFBaEJRQUFJZ1VBQUNNRkFFR1l6eElMRGgwRkFBQWtCUUFBSlFVQUFDWUZBRUd3enhJTERoMEZBQUFuQlFBQUtBVUFBQ2tGQUVISXp4SUxEaDBGQUFBcUJRQUFLd1VBQUN3RkFFSGd6eElMRGgwRkFBQXRCUUFBTGdVQUFDOEZBRUg0enhJTERqQUZBQUF4QlFBQU1nVUFBRE1GQUVHUTBCSUxEakFGQUFBMEJRQUFOUVVBQURZRkFFR28wQklMRGpBRkFBQTNCUUFBT0FVQUFEa0ZBRUhBMEJJTERqQUZBQUE2QlFBQU93VUFBRHdGQUVIWTBCSUxEakFGQUFBOUJRQUFQZ1VBQUQ4RkFFSHcwQklMRGtBRkFBQkJCUUFBQ0FBQUFFSUZBRUdJMFJJTERrQUZBQUJEQlFBQVJBVUFBRUlGQUVHZzBSSUxEa1VGQUFCR0JRQUFSd1VBQUVJRkFFRzQwUklMRGgwRkFBQklCUUFBU1FVQUFFb0ZBRUhRMFJJTERoMEZBQUJMQlFBQVRBVUFBRTBGQUVIbzBSSUxEaDBGQUFCT0JRQUFUd1VBQUZBRkFFR0EwaElMRGgwRkFBQlJCUUFBVWdVQUFGTUZBRUdZMGhJTERoMEZBQUJVQlFBQVZRVUFBRllGQUVHdzBoSUxEa0FGQUFCWEJRQUFDQUFBQUVJRkFFSEkwaElMRGtBRkFBQllCUUFBQ0FBQUFFSUZBRUhnMGhJTHNnVHNEUUFBLzJJQUFISzZBQUNLUkFFQXFyY0JBTGJmQUFEaXpnQUFDNzRBQUxqUEFBRHd0d0FBaHZJQUFJVVlBQUJmNndBQUFoY0FBR0htQUFBbE1nQUFkakFCQU5xZ0FBRGg4UUFBNmVBQUFQSWRBQUJXdWdBQVhiZ0JBR3kvQVFCSTBnQUE1dkVBQUVPNUFBQXphZ0FBL05BQUFGWWxBQUFXNEFBQS9qWUJBS0czQVFDNnZnRUFoTGtCQUJPMkFRRHQ0QUFBM0NNQkFJVVpBQUR6dUFBQUxSRUFBSjgwQUFEcU5nRUFDUkVBQUppeEFBQWltZ0FBLzdzQkFDM2lBQUJSMHdBQVVyc0JBQS9pQUFBejB3QUE4cmdCQVBIaEFBQVYwd0FBK0xzQkFDWGlBQUJKMHdBQVM3c0JBQWZpQUFBcjB3QUE2N2dCQU9uaEFBQU4wd0FBOGJzQkFCM2lBQUJCMHdBQVJMc0JBUC9oQUFBajB3QUE1TGdCQU9IaEFBQUYwd0FBWjAwQUFQd3pBQURBRmdBQVJDa0JBTytoQUFEVkh3RUFmdThBQURSa0FBQnpSZ0FBYzZFQUFDQVJBQURyeXdBQWdhRUFBQnh6QUFDV05BQUFLQ0VCQVBJMkFBQlUwZ0FBRkVNQkFNOE1BQURBUWdFQWtVSUJBS1VNQUFDT0xnRUF1QXdBQUs5Q0FRQ01EQUFBZXk0QkFONUNBUUFweXdBQS9FSUJBQjlEQVFEZ0RBQUF5MElCQUp4Q0FRQUE1Z0FBOFFvQkFKRGhBQUNEdGdFQWNMNEJBUDY0QVFEUHRRRUFIeW9BQUdDN0FBQnNSZ0FBOXQwQUFKeC9BQUNQdkFFQU5lSUFBRm5UQUFEajBBQUFkeFVBQUdLN0FRQVg0Z0FBTzlNQUFOM1FBQUJ4RlFBQStiZ0JBUG5oQUFBZDB3QUEwdEFBQUdzVkFBRDhFQUFBd2hBQUFNZzFBUUF1R3dFQTNUWUJBTitJQUVHZzF4SUxKOW9UQUFBMkR3QUFGQVFBQU5rVUFBQjQrUU1BWTN3QUFBQUlBQUFBSUFBQVFDd0VnQUFnRVFCQjBOY1NDdzBqQUFBQVdRVUFBRm9GQUFBSUFFSG8xeElMR2xzRkFBQmNCUUFBWFFVQUFGNEZBQUJmQlFBQVlBVUFBR0VGQUVHTTJCSUxHbUlGQUFCakJRQUFaQVVBQUdVRkFBQm1CUUFBWndVQUFHZ0ZBRUd3MkJJTEdta0ZBQUJxQlFBQWF3VUFBR3dGQUFCdEJRQUFiZ1VBQUc4RkFFSFUyQklMR25BRkFBQnhCUUFBY2dVQUFITUZBQUIwQlFBQWRRVUFBSFlGQUVINDJCSUxHbmNGQUFCNEJRQUFlUVVBQUhvRkFBQjdCUUFBZkFVQUFIMEZBRUdjMlJJTERpTUFBQUIrQlFBQVdnVUFBSDhGQUVHMDJSSUxJeU1BQUFDQUJRQUFDQUFBQUxDckJBQTdmQUFBQUFCQUFRQUFBQUJBTEVTQkFDQVJBRUhnMlJJTEduQUZBQUNCQlFBQWdnVUFBSU1GQUFDRUJRQUFoUVVBQUlZRkFFR0UyaElMR25BRkFBQ0hCUUFBaUFVQUFJa0ZBQUNLQlFBQWl3VUFBSXdGQUVHbzJoSUxHbzBGQUFDT0JRQUFqd1VBQUpBRkFBQ1JCUUFBa2dVQUFKTUZBRUhNMmhJTEdwUUZBQUNWQlFBQWxnVUFBSmNGQUFDWUJRQUFtUVVBQUpvRkFFSHcyaElMR2xzRkFBQ2JCUUFBbkFVQUFKMEZBQUNlQlFBQW53VUFBS0FGQUVHVTJ4SUxHbHNGQUFDaEJRQUFvZ1VBQUtNRkFBQ2tCUUFBcFFVQUFLWUZBRUc0MnhJTEdsc0ZBQUNuQlFBQXFBVUFBS2tGQUFDcUJRQUFxd1VBQUt3RkFFSGMyeElMR25BRkFBQ3RCUUFBcmdVQUFLOEZBQUN3QlFBQXNRVUFBTElGQUVHQTNCSUxKN01GQUFDMEJRQUFXZ1VBQUxVRkFBQ3dxd1FBRDN3QUFBSUFBUUFBQUFBQVFpd0ZnQUFnRVFCQnNOd1NDeHEyQlFBQXR3VUFBTGdGQUFDNUJRQUF1Z1VBQUxzRkFBQzhCUUJCMU53U0N5c2pBQUFBdlFVQUFGb0ZBQUMrQlFBQUFBQUFBTENyQkFEbGV3QUFBQUFBRUFBUUFBQkFMQVNRQURBUkFFR0kzUklMR25BRkFBQy9CUUFBd0FVQUFNRUZBQURDQlFBQXd3VUFBTVFGQUVHczNSSUxHbkFGQUFERkJRQUF4Z1VBQU1jRkFBRElCUUFBeVFVQUFNb0ZBRUhRM1JJTDNnTExCUUFBekFVQUFNMEZBQURPQlFBQXp3VUFBTkFGQUFEUkJRQUE3aklCQU80eUFRQ0lRd0VBbzJJQUFLTmlBQUQ2dUFBQStyZ0FBQlZxQUFDSHZ3QUEwanNBQUNOUkFBRENYZ0FBSmJnQUFITk9BQUNidVFBQUM3Z0FBRmxPQUFDQnVRQUFDdElBQVBuUkFBQWIwZ0FBWER3REFGdzhBd0JjUEFNQVg3d0JBQ1lVQUFEQ2lBQUF3ZHNBQUZXOEFRQjh2QUVBdUJnQUFNNFlBQUNHTVFBQVhEd0RBRnc4QXdCY1BBTUFOcmdBQURhNEFBQTJ1QUFBMXhJQUFOY1NBQURYRWdBQVBKb0FBRHlhQUFBOG1nQUF0QkFBQUZ3OEF3Qy9tZ0FBdVpvQUFIdGRBUUJjUEFNQVhEd0RBS2FJQUFDdHVnQUFlTG9BQU1lNkFBQ2R1Z0FBUGp3QUFGdzhBd0RGdWdBQW03b0FBRHc4QUFDcnVnQUFkcm9BQUZ3OEF3Q1gwUUFBYXlzQkFGaEdBQURmNGdBQVdEQUJBTXc0QUFESU93QUFLak1BQURzekFBQTdNd0FBWER3REFGdzhBd0JjUEFNQU5yZ0FBTmNTQUFBOG1nQkJ1T0FTQ3c3U0JRQUEwd1VBQU5RRkFBRFZCUUJCME9BU0N4cldCUUFBMXdVQUFOZ0ZBQURaQlFBQTJnVUFBTnNGQUFEY0JRQkI5T0FTQ3diZEJRQUEzZ1VBUVlUaEVnc0czd1VBQU9BRkFFR1U0UklMQnVFRkFBRGlCUUJCcE9FU0N3YmpCUUFBNUFVQVFiVGhFZ3NHNVFVQUFPWUZBRUhFNFJJTEdta0ZBQURuQlFBQTZBVUFBT2tGQUFEcUJRQUE2d1VBQU93RkFFSG80UklMR25jRkFBRHRCUUFBN2dVQUFPOEZBQUR3QlFBQThRVUFBUElGQUVHTTRoSUxMNDBGQUFEekJRQUE5QVVBQVBVRkFBRDJCUUFBOXdVQUFQZ0ZBQUIyVFFJQUFBUUFBRjBNQWdCTURBSUFTbDBDQUVIRTRoSUxFdmtGQUFENkJRQUErd1VBQVB3RkFBRDlCUUJCNE9JU0N3ci9CUUFBQUFZQUFBRUdBRUgwNGhJTG8wc0NCZ0FBQXdZQUFBZ0FBQUNROHdNQVVFSURBSkR6QXdDT1FnTUFrUE1EQU0xQ0F3QUFBQUFBekxFRUFBUUdBQUFGQmdBQUJnWUFBQWNHQUFBSUJnQUFDUVlBQUFvR0FBQUxCZ0FBREFZQUFKRHpBd0NPUXdNQTBQTURBQXREQXdERXNRUUFrUE1EQUxCREF3QUFBQUFBRkxJRUFIY0ZBQUFOQmdBQURnWUFBQThHQUFBUUJnQUFFUVlBQUJJR0FBQVRCZ0FBRkFZQUFKRHpBd0NLUkFNQTBQTURBQU5FQXdBTXNnUUFrUE1EQUs1RUF3Q1E4d01BQTBVREFBQUFBQUFzc3dRQUZ3WUFBQmdHQUFBSUFBQUFDQUFBQUJrR0FBQWFCZ0FBR3dZQUFCd0dBQUFkQmdBQUhnWUFBQjhHQUFBZ0JnQUFJUVlBQUNJR0FBQWpCZ0FBSkFZQUFDVUdBQUFtQmdBQUp3WUFBQ2dHQUFBcEJnQUFLZ1lBQUNzR0FBQXNCZ0FBTFFZQUFDNEdBQUF2QmdBQU1BWUFBREVHQUFBeUJnQUFNd1lBQURRR0FBQTFCZ0FBTmdZQUFEY0dBQUE0QmdBQU9RWUFBRG9HQUFBN0JnQUFQQVlBQUQwR0FBQStCZ0FBUHdZQUFFQUdBQUJCQmdBQVFnWUFBRU1HQUFCRUJnQUFSUVlBQUVZR0FBQkhCZ0FBU0FZQUFFa0dBQUJLQmdBQVN3WUFBRXdHQUFCTkJnQUFUZ1lBQUU4R0FBQUlBQUFBVUFZQUFKRHpBd0JDUlFNQUFBQUFBS1N6QkFCUkJnQUFVZ1lBQUZNR0FBQlVCZ0FBVlFZQUFGWUdBQUJYQmdBQVdBWUFBRmtHQUFCYUJnQUFXd1lBQUZ3R0FBQmRCZ0FBWGdZQUFGOEdBQUJnQmdBQVlRWUFBR0lHQUFCakJnQUFaQVlBQUdVR0FBQm1CZ0FBWndZQUFHZ0dBQUNROHdNQWgwVURBTkR6QXdCZ1JRTUFuTE1FQUFBQUFBQW90QVFBYVFZQUFHb0dBQUJyQmdBQWJBWUFBRlVHQUFCV0JnQUFiUVlBQUZnR0FBQlpCZ0FBV2dZQUFGc0dBQUJjQmdBQWJnWUFBRzhHQUFCZkJnQUFZQVlBQUhBR0FBQmlCZ0FBWXdZQUFHUUdBQUJsQmdBQVpnWUFBSEVHQUFCeUJnQUFjd1lBQU5EekF3RFFSUU1BbkxNRUFORHpBd0NwUlFNQUhMUUVBQUFBQUFBY3RBUUFhUVlBQUhRR0FBQUlBQUFBYkFZQUFGVUdBQUJXQmdBQVZ3WUFBRmdHQUFCWkJnQUFXZ1lBQUZzR0FBQmNCZ0FBYmdZQUFHOEdBQUJmQmdBQVlBWUFBR0VHQUFCaUJnQUFZd1lBQUdRR0FBQmxCZ0FBWmdZQUFIRUdBQUJ5QmdBQWN3WUFBQUFBQUFBTXRRUUFhUVlBQUhVR0FBQjJCZ0FBYkFZQUFIY0dBQUJXQmdBQVZ3WUFBRmdHQUFCWkJnQUFXZ1lBQUZzR0FBQmNCZ0FBYmdZQUFHOEdBQUI0QmdBQVlBWUFBR0VHQUFCaUJnQUFZd1lBQUdRR0FBQmxCZ0FBWmdZQUFIRUdBQUJ5QmdBQWN3WUFBTkR6QXdENVJRTUFITFFFQUFBQUFBQ0V0UVFBYVFZQUFIa0dBQUI2QmdBQWJBWUFBRlVHQUFCN0JnQUFWd1lBQUZnR0FBQlpCZ0FBV2dZQUFGc0dBQUJjQmdBQWJnWUFBRzhHQUFCZkJnQUFmQVlBQUdFR0FBQmlCZ0FBWXdZQUFHUUdBQUJsQmdBQVpnWUFBSEVHQUFCeUJnQUFjd1lBQU5EekF3QWZSZ01BSExRRUFBQUFBQUFJdGdRQWZRWUFBSDRHQUFCL0JnQUFWQVlBQUZVR0FBQldCZ0FBVndZQUFJQUdBQUJaQmdBQWdRWUFBRnNHQUFCY0JnQUFiZ1lBQUY0R0FBQmZCZ0FBWUFZQUFHRUdBQUNDQmdBQVl3WUFBSU1HQUFCbEJnQUFaZ1lBQUhFR0FBQ0VCZ0FBaFFZQUFORHpBd0J3UmdNQW5MTUVBTkR6QXdCSFJnTUEvTFVFQUFBQUFBRDh0UVFBZlFZQUFJWUdBQUFJQUFBQVZBWUFBRlVHQUFCV0JnQUFWd1lBQUlBR0FBQlpCZ0FBV2dZQUFGc0dBQUJjQmdBQWJnWUFBRjRHQUFCZkJnQUFZQVlBQUdFR0FBQ0NCZ0FBWXdZQUFHUUdBQUJsQmdBQVpnWUFBSEVHQUFDRUJnQUFoUVlBQUFBQUFBRHN0Z1FBZlFZQUFJY0dBQUNJQmdBQVZBWUFBRlVHQUFCV0JnQUFWd1lBQUlBR0FBQlpCZ0FBV2dZQUFJa0dBQUJjQmdBQWJnWUFBRjRHQUFCZkJnQUFZQVlBQUdFR0FBQ0NCZ0FBWXdZQUFHUUdBQUNLQmdBQVpnWUFBSEVHQUFDRUJnQUFoUVlBQU5EekF3Q2NSZ01BL0xVRUFBQUFBQUJrdHdRQWZRWUFBSXNHQUFDTUJnQUFWQVlBQUZVR0FBQldCZ0FBVndZQUFJQUdBQUNOQmdBQVdnWUFBRnNHQUFCY0JnQUFiZ1lBQUY0R0FBQmZCZ0FBWUFZQUFHRUdBQUNDQmdBQWpnWUFBR1FHQUFCbEJnQUFaZ1lBQUhFR0FBQ0VCZ0FBaFFZQUFORHpBd0RGUmdNQS9MVUVBQUFBQUFEY3R3UUFmUVlBQUk4R0FBQ1FCZ0FBVkFZQUFGVUdBQUJXQmdBQVZ3WUFBSUFHQUFCWkJnQUFXZ1lBQUZzR0FBQ1JCZ0FBYmdZQUFGNEdBQUJmQmdBQVlBWUFBR0VHQUFDQ0JnQUFZd1lBQUdRR0FBQmxCZ0FBa2dZQUFIRUdBQUNFQmdBQWhRWUFBTkR6QXdEdVJnTUEvTFVFQUFBQUFBQWN1QVFBa3dZQUFKUUdBQUNWQmdBQWxnWUFBSmNHQUFDWUJnQUFtUVlBQUpvR0FBQ2JCZ0FBa1BNREFMcEhBd0RROHdNQUYwY0RBQlM0QkFDUTh3TUErVWNEQUpEekF3QnFTQU1BQUFBQUFHeTRCQUNlQmdBQW53WUFBS0FHQUFDaEJnQUFvZ1lBQUtNR0FBQ2tCZ0FBcFFZQUFLWUdBQUNROHdNQVNVa0RBTkR6QXdDcVNBTUFaTGdFQUpEekF3Q0lTUU1BQUFBQUFMUzRCQUNuQmdBQXFBWUFBS2tHQUFDcUJnQUFxd1lBQUt3R0FBQ3RCZ0FBcmdZQUFLOEdBQUNROHdNQWQwb0RBTkR6QXdEMFNRTUFyTGdFQUpEekF3QzJTZ01BQUFBQUFQUzRCQUJwQlFBQXNBWUFBTEVHQUFDeUJnQUFzd1lBQUxRR0FBQzFCZ0FBdGdZQUFMY0dBQURROHdNQUFVc0RBSkN4QkFDUTh3TUFla3dEQU5EekF3QWRUQU1BQUxrRUFORHpBd0NvU3dNQUNMa0VBQUFBQUFCVXVRUUF1QVlBQUxrR0FBQzZCZ0FBdXdZQUFMd0dBQUM5QmdBQXZnWUFBTDhHQUFEQUJnQUFrUE1EQUU5TkF3RFE4d01BMGt3REFFeTVCQUNROHdNQWdrMERBQUFBQUFDVXVRUUFZZ1VBQU1FR0FBRENCZ0FBd3dZQUFNUUdBQURGQmdBQXhnWUFBTWNHQUFESUJnQUEwUE1EQU1wTkF3Q0FzUVFBa1BNREFFeE9Bd0FBQUFBQTFMa0VBTWtHQUFES0JnQUF5d1lBQU13R0FBRE5CZ0FBemdZQUFNOEdBQURRQmdBQTBRWUFBTkR6QXdDY1RnTUFpTEVFQUpEekF3QWdUd01BQUFBQUFCUzZCQUJpQlFBQTBnWUFBTk1HQUFEVUJnQUExUVlBQU5ZR0FBRFhCZ0FBMkFZQUFOa0dBQURROHdNQWNrOERBSUN4QkFDUTh3TUEvVThEQUFBQUFBQlV1Z1FBeVFZQUFOb0dBQURiQmdBQTNBWUFBTjBHQUFEZUJnQUEzd1lBQU9BR0FBRGhCZ0FBMFBNREFGWlFBd0NJc1FRQWtQTURBT05RQXdBQUFBQUFaTHNFQUJjR0FBRGlCZ0FBNHdZQUFPUUdBQUFaQmdBQTVRWUFBT1lHQUFBY0JnQUFIUVlBQUI0R0FBQWZCZ0FBSUFZQUFDRUdBQUFpQmdBQUl3WUFBQ1FHQUFBbEJnQUFKZ1lBQUNjR0FBQW9CZ0FBS1FZQUFDb0dBQUFyQmdBQUxBWUFBQzBHQUFBdUJnQUFMd1lBQURBR0FBQXhCZ0FBTWdZQUFETUdBQUEwQmdBQU5RWUFBRFlHQUFBM0JnQUFPQVlBQURrR0FBQTZCZ0FBT3dZQUFEd0dBQUE5QmdBQVBnWUFBRDhHQUFCQUJnQUFRUVlBQUVJR0FBQkRCZ0FBUkFZQUFFVUdBQUJHQmdBQVJ3WUFBRWdHQUFCSkJnQUFTZ1lBQUVzR0FBQk1CZ0FBVFFZQUFFNEdBQUJQQmdBQTV3WUFBRkFHQUFEUTh3TUFQbEVEQUN5ekJBQUFBQUFBbkxzRUFJMEZBQURvQmdBQTZRWUFBT29HQUFEckJnQUE3QVlBQU8wR0FBRHVCZ0FBN3dZQUFORHpBd0JkVVFNQUtMSUVBQUFBQUFEVXV3UUFkd1VBQVBBR0FBRHhCZ0FBOGdZQUFQTUdBQUQwQmdBQTlRWUFBUFlHQUFEM0JnQUEwUE1EQU9OUkF3QU1zZ1FBa1BNREFIcFNBd0NROHdNQTZWSURBQUFBQUFEc3ZBUUFGd1lBQVBnR0FBRDVCZ0FBK2dZQUFCa0dBQUFhQmdBQUd3WUFBUHNHQUFEOEJnQUFIZ1lBQUI4R0FBQWdCZ0FBSVFZQUFDSUdBQUFqQmdBQUpBWUFBQ1VHQUFBbUJnQUFKd1lBQUNnR0FBQXBCZ0FBS2dZQUFDc0dBQUFzQmdBQUxRWUFBQzRHQUFBdkJnQUFNQVlBQURFR0FBQXlCZ0FBTXdZQUFEUUdBQUExQmdBQU5nWUFBRGNHQUFBNEJnQUFPUVlBQURvR0FBQTdCZ0FBUEFZQUFEMEdBQUErQmdBQVB3WUFBRUFHQUFCQkJnQUFRZ1lBQUVNR0FBQkVCZ0FBUlFZQUFFWUdBQUJIQmdBQVNBWUFBRWtHQUFCS0JnQUFTd1lBQUV3R0FBQk5CZ0FBVGdZQUFFOEdBQUQ5QmdBQVVBWUFBTkR6QXdBMlV3TUFMTE1FQUFBQUFBRDB2UVFBRndZQUFQNEdBQUQvQmdBQUFBY0FBQmtHQUFBYUJnQUFHd1lBQUJ3R0FBQWRCZ0FBSGdZQUFCOEdBQUFnQmdBQUlRWUFBQ0lHQUFBakJnQUFKQVlBQUNVR0FBQW1CZ0FBSndZQUFBRUhBQUFDQndBQUtnWUFBQ3NHQUFBc0JnQUFMUVlBQUM0R0FBQXZCZ0FBTUFZQUFERUdBQUF5QmdBQU13WUFBRFFHQUFBMUJnQUFOZ1lBQURjR0FBQTRCZ0FBT1FZQUFEb0dBQUE3QmdBQVBBWUFBRDBHQUFBK0JnQUFQd1lBQUVBR0FBQkJCZ0FBUWdZQUFFTUdBQUJFQmdBQVJRWUFBRVlHQUFCSEJnQUFTQVlBQUVrR0FBQktCZ0FBU3dZQUFFd0dBQUJOQmdBQVRnWUFBRThHQUFBREJ3QUFVQVlBQU5EekF3QlVVd01BTExNRUFBQUFBQUQ4dmdRQUZ3WUFBQVFIQUFBRkJ3QUFCZ2NBQUJrR0FBQWFCZ0FBR3dZQUFCd0dBQUFkQmdBQUhnWUFBQjhHQUFBZ0JnQUFJUVlBQUNJR0FBQWpCZ0FBSkFZQUFDVUdBQUFtQmdBQUp3WUFBQ2dHQUFBcEJnQUFLZ1lBQUNzR0FBQXNCZ0FBTFFZQUFDNEdBQUF2QmdBQU1BWUFBREVHQUFBeUJnQUFNd1lBQURRR0FBQTFCZ0FBTmdZQUFEY0dBQUFIQndBQUNBY0FBRG9HQUFBN0JnQUFQQVlBQUQwR0FBQStCZ0FBUHdZQUFFQUdBQUJCQmdBQVFnWUFBRU1HQUFCRUJnQUFSUVlBQUVZR0FBQkhCZ0FBU0FZQUFFa0dBQUJLQmdBQVN3WUFBRXdHQUFCTkJnQUFUZ1lBQUU4R0FBQUpCd0FBVUFZQUFORHpBd0IxVXdNQUxMTUVBQUFBQUFBRXdBUUFGd1lBQUFvSEFBQUxCd0FBREFjQUFCa0dBQUFhQmdBQUd3WUFBQndHQUFBZEJnQUFIZ1lBQUI4R0FBQWdCZ0FBSVFZQUFDSUdBQUFqQmdBQUpBWUFBQ1VHQUFBbUJnQUFKd1lBQUNnR0FBQXBCZ0FBS2dZQUFDc0dBQUFzQmdBQUxRWUFBQzRHQUFBdkJnQUFNQVlBQURFR0FBQXlCZ0FBTXdZQUFEUUdBQUExQmdBQU5nWUFBRGNHQUFBNEJnQUFPUVlBQUEwSEFBQU9Cd0FBUEFZQUFEMEdBQUErQmdBQVB3WUFBRUFHQUFCQkJnQUFRZ1lBQUVNR0FBQkVCZ0FBUlFZQUFFWUdBQUJIQmdBQVNBWUFBRWtHQUFCS0JnQUFTd1lBQUV3R0FBQk5CZ0FBVGdZQUFFOEdBQUFQQndBQVVBWUFBTkR6QXdDVVV3TUFMTE1FQUFBQUFBQU13UVFBRndZQUFCQUhBQUFSQndBQUVnY0FBQmtHQUFBYUJnQUFHd1lBQUJ3R0FBQWRCZ0FBSGdZQUFCOEdBQUFnQmdBQUlRWUFBQ0lHQUFBakJnQUFKQVlBQUNVR0FBQW1CZ0FBSndZQUFDZ0dBQUFwQmdBQUtnWUFBQ3NHQUFBc0JnQUFMUVlBQUM0R0FBQXZCZ0FBTUFZQUFERUdBQUF5QmdBQU13WUFBRFFHQUFBMUJnQUFOZ1lBQURjR0FBQTRCZ0FBT1FZQUFEb0dBQUE3QmdBQUV3Y0FBQlFIQUFBK0JnQUFQd1lBQUVBR0FBQkJCZ0FBUWdZQUFFTUdBQUJFQmdBQVJRWUFBRVlHQUFCSEJnQUFTQVlBQUVrR0FBQktCZ0FBU3dZQUFFd0dBQUJOQmdBQVRnWUFBRThHQUFBVkJ3QUFVQVlBQU5EekF3QzZVd01BTExNRUFBQUFBQUFVd2dRQUZ3WUFBQllIQUFBWEJ3QUFHQWNBQUJrR0FBQWFCZ0FBR3dZQUFCd0dBQUFkQmdBQUhnWUFBQjhHQUFBZ0JnQUFJUVlBQUNJR0FBQWpCZ0FBSkFZQUFDVUdBQUFtQmdBQUp3WUFBQ2dHQUFBcEJnQUFLZ1lBQUNzR0FBQXNCZ0FBTFFZQUFDNEdBQUF2QmdBQU1BWUFBREVHQUFBeUJnQUFNd1lBQURRR0FBQTFCZ0FBTmdZQUFEY0dBQUE0QmdBQU9RWUFBRG9HQUFBN0JnQUFQQVlBQUQwR0FBQVpCd0FBR2djQUFFQUdBQUJCQmdBQVFnWUFBRU1HQUFCRUJnQUFSUVlBQUVZR0FBQkhCZ0FBU0FZQUFFa0dBQUJLQmdBQVN3WUFBRXdHQUFCTkJnQUFUZ1lBQUU4R0FBQWJCd0FBVUFZQUFORHpBd0RkVXdNQUxMTUVBQUFBQUFBY3d3UUFGd1lBQUJ3SEFBQWRCd0FBSGdjQUFCa0dBQUFhQmdBQUd3WUFBQndHQUFBZEJnQUFIZ1lBQUI4R0FBQWdCZ0FBSVFZQUFDSUdBQUFqQmdBQUpBWUFBQ1VHQUFBbUJnQUFKd1lBQUNnR0FBQXBCZ0FBS2dZQUFDc0dBQUFzQmdBQUxRWUFBQzRHQUFBdkJnQUFNQVlBQURFR0FBQXlCZ0FBTXdZQUFEUUdBQUExQmdBQU5nWUFBRGNHQUFBNEJnQUFPUVlBQURvR0FBQTdCZ0FBUEFZQUFEMEdBQUErQmdBQVB3WUFBRUFHQUFCQkJnQUFRZ1lBQUVNR0FBQWZCd0FBSUFjQUFFWUdBQUJIQmdBQVNBWUFBRWtHQUFCS0JnQUFTd1lBQUV3R0FBQk5CZ0FBVGdZQUFFOEdBQUFoQndBQVVBWUFBTkR6QXdEOFV3TUFMTE1FQUFBQUFBQWt4QVFBRndZQUFDSUhBQUFqQndBQUpBY0FBQmtHQUFBYUJnQUFHd1lBQUJ3R0FBQWRCZ0FBSGdZQUFCOEdBQUFnQmdBQUlRWUFBQ0lHQUFBakJnQUFKQVlBQUNVR0FBQW1CZ0FBSndZQUFDZ0dBQUFwQmdBQUtnWUFBQ3NHQUFBc0JnQUFMUVlBQUM0R0FBQXZCZ0FBTUFZQUFERUdBQUF5QmdBQU13WUFBRFFHQUFBMUJnQUFOZ1lBQURjR0FBQTRCZ0FBT1FZQUFEb0dBQUE3QmdBQVBBWUFBRDBHQUFBK0JnQUFQd1lBQUVBR0FBQkJCZ0FBUWdZQUFFTUdBQUJFQmdBQVJRWUFBQ1VIQUFBbUJ3QUFTQVlBQUVrR0FBQktCZ0FBU3dZQUFFd0dBQUJOQmdBQVRnWUFBRThHQUFBbkJ3QUFVQVlBQU5EekF3QWlWQU1BTExNRUFBQUFBQUFzeFFRQUZ3WUFBQ2dIQUFBcEJ3QUFLZ2NBQUJrR0FBQWFCZ0FBR3dZQUFCd0dBQUFkQmdBQUhnWUFBQjhHQUFBZ0JnQUFJUVlBQUNJR0FBQWpCZ0FBSkFZQUFDVUdBQUFtQmdBQUp3WUFBQ2dHQUFBcEJnQUFLZ1lBQUNzR0FBQXNCZ0FBTFFZQUFDNEdBQUF2QmdBQU1BWUFBREVHQUFBeUJnQUFNd1lBQURRR0FBQTFCZ0FBTmdZQUFEY0dBQUE0QmdBQU9RWUFBRG9HQUFBN0JnQUFQQVlBQUQwR0FBQStCZ0FBUHdZQUFFQUdBQUJCQmdBQVFnWUFBRU1HQUFCRUJnQUFSUVlBQUVZR0FBQkhCZ0FBS3djQUFDd0hBQUJLQmdBQVN3WUFBRXdHQUFCTkJnQUFUZ1lBQUU4R0FBQXRCd0FBVUFZQUFORHpBd0JKVkFNQUxMTUVBQUFBQUFBMHhnUUFGd1lBQUM0SEFBQXZCd0FBTUFjQUFCa0dBQUFhQmdBQUd3WUFBQndHQUFBZEJnQUFIZ1lBQUI4R0FBQWdCZ0FBSVFZQUFDSUdBQUFqQmdBQUpBWUFBQ1VHQUFBbUJnQUFKd1lBQUNnR0FBQXBCZ0FBS2dZQUFDc0dBQUFzQmdBQUxRWUFBQzRHQUFBdkJnQUFNQVlBQURFR0FBQXlCZ0FBTXdZQUFEUUdBQUExQmdBQU5nWUFBRGNHQUFBNEJnQUFPUVlBQURvR0FBQTdCZ0FBUEFZQUFEMEdBQUErQmdBQVB3WUFBRUFHQUFCQkJnQUFRZ1lBQUVNR0FBQkVCZ0FBUlFZQUFFWUdBQUJIQmdBQVNBWUFBRWtHQUFCS0JnQUFTd1lBQURFSEFBQXlCd0FBVGdZQUFFOEdBQUF6QndBQVVBWUFBTkR6QXdCN1ZBTUFMTE1FQUFBQUFBQTh4d1FBRndZQUFEUUhBQUExQndBQU5nY0FBQmtHQUFBYUJnQUFHd1lBQUJ3R0FBQWRCZ0FBSGdZQUFCOEdBQUFnQmdBQUlRWUFBQ0lHQUFBakJnQUFKQVlBQUNVR0FBQW1CZ0FBSndZQUFDZ0dBQUFwQmdBQUtnWUFBQ3NHQUFBc0JnQUFMUVlBQUM0R0FBQXZCZ0FBTUFZQUFERUdBQUF5QmdBQU13WUFBRFFHQUFBMUJnQUFOZ1lBQURjR0FBQTRCZ0FBT1FZQUFEb0dBQUE3QmdBQVBBWUFBRDBHQUFBK0JnQUFQd1lBQUVBR0FBQkJCZ0FBUWdZQUFFTUdBQUJFQmdBQVJRWUFBRVlHQUFCSEJnQUFTQVlBQUVrR0FBQktCZ0FBU3dZQUFFd0dBQUJOQmdBQU53Y0FBRGdIQUFBNUJ3QUFVQVlBQU5EekF3Q2hWQU1BTExNRUFBQUFBQUIweHdRQU9nY0FBRHNIQUFBOEJ3QUFQUWNBQUQ0SEFBQS9Cd0FBUUFjQUFFRUhBQUJDQndBQTBQTURBTWhVQXdBd3VBUUFrUE1EQUZaVkF3QUFBQUFBbE5ZRUFCY0dBQUJEQndBQVJBY0FBRVVIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFCR0J3QUFSd2NBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFTQWNBQUZBR0FBQUFBQUFBb05ZRUFCY0dBQUJKQndBQVNnY0FBRXNIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUV3SEFBQk5Cd0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFUZ2NBQUZBR0FBQUFBQUFBck5ZRUFCY0dBQUJQQndBQVVBY0FBRkVIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBVWdjQUFGTUhBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFWQWNBQUZBR0FBQUFBQUFBdU5ZRUFGVUhBQUJXQndBQVZ3Y0FBRmdIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFXUWNBQUZvSEFBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFXd2NBQUZBR0FBQUFBQUFBeE5ZRUFCY0dBQUJjQndBQVhRY0FBRjRIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQmZCd0FBWUFjQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFZUWNBQUZBR0FBQUFBQUFBME5ZRUFHSUhBQUJqQndBQVpBY0FBR1VIQUFCbUJ3QUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFHY0hBQUJvQndBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFhUWNBQUdvSEFBQUFBQUFBM05ZRUFCY0dBQUJyQndBQWJBY0FBRzBIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFCdUJ3QUFid2NBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFjQWNBQUZBR0FBQUFBQUFBNk5ZRUFIRUhBQUJ5QndBQWN3Y0FBSFFIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQUhVSEFBQjJCd0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFkd2NBQUZBR0FBQUFBQUFBOU5ZRUFCY0dBQUI0QndBQWVRY0FBSG9IQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBZXdjQUFId0hBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFmUWNBQUZBR0FBQUFBQUFBWU5FRUFCY0dBQUIrQndBQWZ3Y0FBSUFIQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFJRUhBQUNDQndBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQU1nWUFBRE1HQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFnd2NBQUZBR0FBRFE4d01BcmxVREFDeXpCQUFBQUFBQWFOSUVBQmNHQUFDRUJ3QUFoUWNBQUlZSEFBQVpCZ0FBR2dZQUFCc0dBQUFjQmdBQUhRWUFBQjRHQUFBZkJnQUFod2NBQUlnSEFBQWlCZ0FBSXdZQUFDUUdBQUFsQmdBQUpnWUFBQ2NHQUFBb0JnQUFLUVlBQUNvR0FBQXJCZ0FBTEFZQUFDMEdBQUF1QmdBQUx3WUFBREFHQUFBeEJnQUFNZ1lBQURNR0FBQTBCZ0FBTlFZQUFEWUdBQUEzQmdBQU9BWUFBRGtHQUFBNkJnQUFPd1lBQUR3R0FBQTlCZ0FBUGdZQUFEOEdBQUJBQmdBQVFRWUFBRUlHQUFCREJnQUFSQVlBQUVVR0FBQkdCZ0FBUndZQUFFZ0dBQUJKQmdBQVNnWUFBRXNHQUFCTUJnQUFUUVlBQUU0R0FBQlBCZ0FBaVFjQUFGQUdBQURROHdNQXoxVURBQ3l6QkFBQUFBQUFjTk1FQUJjR0FBQ0tCd0FBaXdjQUFJd0hBQUFaQmdBQUdnWUFBQnNHQUFBY0JnQUFIUVlBQUI0R0FBQWZCZ0FBSUFZQUFDRUdBQUFpQmdBQUl3WUFBQ1FHQUFBbEJnQUFKZ1lBQUNjR0FBQW9CZ0FBS1FZQUFJMEhBQUNPQndBQUxBWUFBQzBHQUFBdUJnQUFMd1lBQURBR0FBQXhCZ0FBTWdZQUFETUdBQUEwQmdBQU5RWUFBRFlHQUFBM0JnQUFPQVlBQURrR0FBQTZCZ0FBT3dZQUFEd0dBQUE5QmdBQVBnWUFBRDhHQUFCQUJnQUFRUVlBQUVJR0FBQkRCZ0FBUkFZQUFFVUdBQUJHQmdBQVJ3WUFBRWdHQUFCSkJnQUFTZ1lBQUVzR0FBQk1CZ0FBVFFZQUFFNEdBQUJQQmdBQWp3Y0FBRkFHQUFEUTh3TUE3bFVEQUN5ekJBQUFBQUFBZU5RRUFKQUhBQUNSQndBQWtnY0FBSk1IQUFBWkJnQUFHZ1lBQUJzR0FBQWNCZ0FBSFFZQUFCNEdBQUFmQmdBQUlBWUFBQ0VHQUFBaUJnQUFJd1lBQUNRR0FBQWxCZ0FBSmdZQUFDY0dBQUFvQmdBQUtRWUFBQ29HQUFBckJnQUFMQVlBQUMwR0FBQXVCZ0FBTHdZQUFEQUdBQUF4QmdBQWxBY0FBSlVIQUFBMEJnQUFOUVlBQURZR0FBQTNCZ0FBT0FZQUFEa0dBQUE2QmdBQU93WUFBRHdHQUFBOUJnQUFQZ1lBQUQ4R0FBQkFCZ0FBUVFZQUFFSUdBQUJEQmdBQVJBWUFBRVVHQUFCR0JnQUFSd1lBQUVnR0FBQkpCZ0FBU2dZQUFFc0dBQUJNQmdBQVRRWUFBRTRHQUFCUEJnQUFsZ2NBQUZBR0FBRFE4d01BRlZZREFDeXpCQUFBQUFBQWdOVUVBQmNHQUFDWEJ3QUFtQWNBQUprSEFBQVpCZ0FBR2dZQUFCc0dBQUFjQmdBQUhRWUFBQjRHQUFBZkJnQUFJQVlBQUNFR0FBQWlCZ0FBSXdZQUFDUUdBQUFsQmdBQUpnWUFBQ2NHQUFBb0JnQUFLUVlBQUNvR0FBQXJCZ0FBTEFZQUFDMEdBQUF1QmdBQUx3WUFBREFHQUFBeEJnQUFNZ1lBQURNR0FBQTBCZ0FBTlFZQUFEWUdBQUEzQmdBQU9BWUFBRGtHQUFBNkJnQUFPd1lBQUR3R0FBQTlCZ0FBUGdZQUFEOEdBQUNhQndBQW13Y0FBRUlHQUFCREJnQUFSQVlBQUVVR0FBQkdCZ0FBUndZQUFFZ0dBQUJKQmdBQVNnWUFBRXNHQUFCTUJnQUFUUVlBQUU0R0FBQlBCZ0FBbkFjQUFGQUdBQURROHdNQU5WWURBQ3l6QkFBQUFBQUFpTllFQUJjR0FBQ2RCd0FBbmdjQUFKOEhBQUFaQmdBQUdnWUFBQnNHQUFBY0JnQUFIUVlBQUI0R0FBQWZCZ0FBSUFZQUFDRUdBQUFpQmdBQUl3WUFBQ1FHQUFBbEJnQUFKZ1lBQUNjR0FBQW9CZ0FBS1FZQUFDb0dBQUFyQmdBQUxBWUFBQzBHQUFBdUJnQUFMd1lBQURBR0FBQXhCZ0FBTWdZQUFETUdBQUEwQmdBQU5RWUFBRFlHQUFBM0JnQUFPQVlBQURrR0FBQTZCZ0FBT3dZQUFEd0dBQUE5QmdBQVBnWUFBRDhHQUFCQUJnQUFRUVlBQUtBSEFBQ2hCd0FBUkFZQUFFVUdBQUJHQmdBQVJ3WUFBRWdHQUFCSkJnQUFTZ1lBQUVzR0FBQk1CZ0FBVFFZQUFFNEdBQUJQQmdBQW9nY0FBRkFHQUFEUTh3TUFVMVlEQUN5ekJBRFE4d01BZkZZREFDeXpCQURROHdNQW5GWURBQ3l6QkFEUTh3TUF2RllEQUN5ekJBRFE4d01BMjFZREFDeXpCQURROHdNQStsWURBQ3l6QkFEUTh3TUFJVmNEQUN5ekJBRFE4d01BUVZjREFDeXpCQURROHdNQVlsY0RBQ3l6QkFEUTh3TUFoRmNEQUN5ekJBQUFBQUFBRU5jRUFLTUhBQUNrQndBQWtQTURBTEpYQXdCQm9LNFRDOThEY2dBQUFPSVpBQUJ6QUFBQTZ4a0FBRzRBQUFCbmNRRUFid0FBQVBlcEFRQnRBQUFBaFdvQkFIQUFBQURycVFFQWNRQUFBTmtaQUFCMUFBQUFhR29CQUhnQUFBQkpaQUFBZWdBQUFEaGtBQUI1QUFBQU1VUUJBSHdBQUFBOUdBQUFkQUFBQUhxNEFRQitBQUFBeHZBQUFNZ0FBQUNOR3dBQWdBQUFBRGcvQVFDQ0FBQUE2bHdCQUlRQUFBQVh2UUFBaGdBQUFGRVZBQUNIQUFBQVZoVUFBSWtBQUFESE1BRUFpZ0FBQU11OEFBQ0xBQUFBekRBQkFNSUFBQUNQeXdBQXd3QUFBS0ZEQVFERUFBQUFvY3NBQU1VQUFBQitpQUFBeHdBQUFJQTFBUURHQUFBQVlHb0FBSDhBQUFETzhBQUFnUUFBQUZZL0FRQ0RBQUFBNzF3QkFJVUFBQUFydlFBQWlBQUFBRnNWQUFDTUFBQUEwTHdBQUkwQUFBRFJNQUVBVHdBQUFFZ2JBUUJSQUFBQXFqb0FBRklBQUFCV0dnQUFwZ0FBQUdXSUFBQ25BQUFBWmpVQkFLZ0FBQUNHR3dBQXBBQUFBTUxLQUFDbEFBQUExOGtBQUtrQUFBRG1PQUFBcWdBQUFQTEtBQUNyQUFBQUE4b0FBTEFBQUFER3VRQUFzUUFBQU5DNUFBQ3NBQUFBL0xrQUFLMEFBQUFKdWdBQXNnQUFBRHpLQUFDekFBQUFTOG9BQUs0QUFBQ0d5Z0FBcndBQUFKaktBQUJCQUFBQVdiZ0FBRUlBQUFBNnVBQUFRd0FBQUZhNEFBQkdBQUFBVHJnQUFQSVVBQUFxWmdFQVFZaXlFd3NhMWdVQUFLVUhBQUNtQndBQXB3Y0FBS2dIQUFDcEJ3QUFxZ2NBUWF5eUV3c2FyUWNBQUs0SEFBQ3ZCd0FBc0FjQUFMRUhBQUN5QndBQXN3Y0FRZEN5RXd1SEI0bDhBQUFlUEFBQWE5SUFBQVMzQVFBb0d3QUFpajRBQU9odkFBQzR5d0FBb3pBQkFJZ1NBQUNETUFFQS9GQUFBTml2QUFEVjJ3QUFhRG9CQUt3RUFBQzB6QUFBcjN3QUFCT2JBQUI4ZVFBQTB6NEJBTE0rQVFDM0VnQUFBcmtCQU9ZWUFBQjZiQUFBU2Q0QUFON0NBUURxOXdBQUt4NEFBUDRkQUFDaFRBQUFRVjBBQUtvWkFRQ2Zyd0FBS3J3QkFBQW1BUURjWHdBQStyQUFBTDlYQUFBMHZRQUEvVmNBQUlOUkFBQS9XUUFBZUZjQUFGM2dBQUF1U3dBQXV3b0FBQzVkQUFEaFZ3QUFsKzRBQU4zd0FBQWZvQUFBL04wQUFQc1dBUURoT3dFQUJyd0JBTUYwQUFDUVRRQUFYbEVBQUY1WkFBQnNEQUFBVHVzQUFQZ2dBUURqSUFFQWUwNEFBS3lKQUFBUkdBRUFSMUVBQUExRUFRQWk4QUFBZmpnQUFHWi9BQUNlRkFBQUtLd0FBRGlnQUFDY2VRQUFmQ0VCQU5YTEFBQ0VDUUFBODk4QUFPTk5BQUFTR3dBQTFzd0FBSzVMQUFBWVJ3QUFsTzhBQUNvVUFBQm83Z0FBL0s4QUFKUk9BQUJLU3dBQWg4QUFBRk1XQUFDWlZ3QUFTUE1BQU5oV0FBQTREd0FBNmtNQkFDWFNBQUNjZkFBQTROOEFBQ1ZqQUFDWUlRRUExQjBBQUhON0FBRGlVQUFBZHpzQkFFRHdBQUJDM3dBQTJyc0JBQmJtQUFDSmZBQUFIandBQUd2U0FBQUV0d0VBS0JzQUFJbytBQURvYndBQXVNc0FBS013QVFDSUVnQUFnekFCQVB4UUFBRFlyd0FBMWRzQUFHZzZBUUNzQkFBQXRNd0FBSzk4QUFBVG13QUFmSGtBQU5NK0FRQ3pQZ0VBdHhJQUFBSzVBUURtR0FBQWVtd0FBRW5lQUFEZXdnRUE2dmNBQUNzZUFBRCtIUUFBb1V3QUFFRmRBQUNxR1FFQW42OEFBQ3E4QVFBQUpnRUEzRjhBQVBxd0FBQy9Wd0FBTkwwQUFQMVhBQUNEVVFBQVAxa0FBSGhYQUFCZDRBQUFMa3NBQUxzS0FBQXVYUUFBNFZjQUFKZnVBQURkOEFBQUg2QUFBUHpkQUFEN0ZnRUE0VHNCQUFhOEFRREJkQUFBa0UwQUFGNVJBQUJlV1FBQWJBd0FBRTdyQUFENElBRUE0eUFCQUh0T0FBQ3NpUUFBRVJnQkFFZFJBQUFOUkFFQUl2QUFBSDQ0QUFCbWZ3QUFuaFFBQUNpc0FBQTRvQUFBbkhrQUFId2hBUURWeXdBQWhBa0FBUFBmQUFEalRRQUFFaHNBQU5iTUFBQ3VTd0FBR0VjQUFKVHZBQUFxRkFBQWFPNEFBUHl2QUFDVVRnQUFTa3NBQUlmQUFBQlRGZ0FBbVZjQUFFanpBQURZVmdBQU9BOEFBT3BEQVFBbDBnQUFuSHdBQU9EZkFBQWxZd0FBbUNFQkFOUWRBQUJ6ZXdBQTRsQUFBSGM3QVFCQThBQUFRdDhBQU5xN0FRQVc1Z0FBQ2dBQUFPRGNCQUJCNExrVEMzY0JBQUFBVVFBQUFHRGRCQUFDQUFBQW9nQUFBTEQyQkFBREFBQUFBUUFBQUZBcEJRQUVBQUFBQ1FBQUFLQXBCUUFGQUFBQUF3QUFBSEFzQlFBR0FBQUFCQUFBQUdBdEJRQUhBQUFBSWdBQUFLQXVCUUFJQUFBQUpRQUFBRUE1QlFBS0FBQUFMQUFBQU5CRUJRQUpBQUFBS0FBQUFKQlNCUUJCNExvVEN3V0hNd0VBQVFCQjhMb1RDd0VCQUVHd3V4TUxCVnk1QUFBQ0FFSEF1eE1MQVFFQVFZQzhFd3NGamtNQkFBTUFRWkM4RXdzQkFRQkIwTHdUQ3dXc1lnQUFCQUJCNEx3VEN3RUJBRUdndlJNTEJhZGlBQUFGQUVHd3ZSTUxBUUVBUWZDOUV3c0ZETGtBQUFZQVFZQytFd3NCQVFCQndMNFRDd1VHdVFBQUJ3QkIwTDRUQ3dFQkFFR1F2eE1MQlJ0cUFBQUlBRUdndnhNTEFRRUFRZUMvRXdzRmpMOEFBQWtBUWZDL0V3c0JBUUJCc01BVEN3WFlPd0FBQ2dCQndNQVRDd0VCQUVHQXdSTUxCU3RSQUFBTEFFR1F3Uk1MQVFFQVFkREJFd3NGeWw0QUFBd0FRZURCRXdzQkFRQkJvTUlUQ3dWcXVBQUFEUUJCc01JVEN3RUJBRUh3d2hNTEJYZE9BQUFPQUVHQXd4TUxBUUVBUWNEREV3c0ZPcm9BQUE4QVFkRERFd3NCQVFCQmtNUVRDd1VrdUFBQUVBQkJvTVFUQ3dFQkFFSGd4Qk1MQlhKT0FBQVJBRUh3eEJNTEFRRUFRYkRGRXdzRm1ya0FBQklBUWNERkV3c0JBUUJCZ01ZVEN3VVAwZ0FBRXdCQmtNWVRDd0VCQUVIUXhoTUxCZjdSQUFBVUFFSGd4aE1MQVFFQVFhREhFd3NGSU5JQUFCVUFRYkRIRXdzQkFRQkI4TWNUQ3dVSjBnQUFGZ0JCZ01nVEN3RUJBRUhBeUJNTEJmalJBQUFYQUVIUXlCTUxBUUVBUVpESkV3c0ZHdElBQUJnQVFhREpFd3NCQVFCQjRNa1RDd1ZsdkFFQUdRQkI4TWtUQ3dVQkFBQUFBUUJCc01vVEN3V2FGQUFBR2dCQndNb1RDd1VCQUFBQUFRQkJnTXNUQ3dYR2lBQUFHd0JCa01zVEN3RUJBRUhReXhNTEJjWGJBQUFjQUVIZ3l4TUxBUUVBUWFETUV3c0ZXcndCQUIwQVFiRE1Fd3NCQVFCQjhNd1RDd1dCdkFFQUhnQkJnTTBUQ3dFQkFFSEF6Uk1MQmVFWUFBQWZBRUhRelJNTEFRRUFRWkRPRXdzRjJoZ0FBQ0FBUWFET0V3c0JBUUJCNE00VEN3V1NNUUFBSVFCQjhNNFRDd0VCQUVHd3p4TUxCVzd4QUFBaUFFSEF6eE1MQVFFQVFZRFFFd3NGdU9FQUFDTUFRWkRRRXdzRkFRQUFBQUVBUWREUUV3c0ZKemNBQUNRQVFlRFFFd3NCQVFCQm9ORVRDd1hvdUFBQUpRQkJzTkVUQ3dVQkFBQUFBUUJCOE5FVEN3V2N1QUFBSmdCQmdOSVRDd1VCQUFBQUFRQkJ3TklUQ3dYRnVBQUFKd0JCME5JVEN3VUJBQUFBQVFCQmtOTVRDd1ZWRXdBQUtBQkJvTk1UQ3dVQkFBQUFBUUJCNE5NVEN3VUpFd0FBS1FCQjhOTVRDd1VCQUFBQUFRQkJzTlFUQ3dVeUV3QUFLZ0JCd05RVEN3VUJBQUFBQVFCQmdOVVRDd1ZYbWdBQUt3QkJrTlVUQ3drQkFBQUFBUUFBQUFFQVFkRFZFd3NGUXBvQUFDd0FRZURWRXdzSkFRQUFBQUVBQUFBQkFFR2cxaE1MQlVtYUFBQXRBRUd3MWhNTENRRUFBQUFCQUFBQUFRQkI4TllUQ3dXOUVBQUFMZ0JCZ05jVEN3a0JBQUFBQVFBQUFBRUFRY0RYRXdzRnVCQUFBQzhBUWREWEV3c0pBUUFBQUFFQUFBQUJBRUdRMkJNTEJjcWFBQUF3QUVHZzJCTUxCUUVBQUFBQkFFSGcyQk1MQmNTYUFBQXhBRUh3MkJNTENRRUFBQUFCQUFBQUFRQkJzTmtUQ3dWL1hRRUFNZ0JCd05rVEN3a0JBQUFBQVFBQUFBRUFRWURhRXdzRm9JZ0FBRE1BUVpEYUV3c0ZBUUFBQUFFQVFkRGFFd3NGR3pjQUFEUUFRZURhRXdzQkFRQkJvTnNUQ3dXc2lBQUFOUUJCc05zVEN3VUJBQUFBQVFCQjhOc1RDd1hDdFFFQU5nQkJnTndUQ3dFQkFFSEEzQk1MQmFhMUFRQTNBRUhRM0JNTEFRRUFRWkRkRXdzRldiWUJBRGdBUWFEZEV3c0JBUUJCNE4wVEN3VTd0Z0VBT1FCQjhOMFRDd0VCQUVHdzNoTUxCWGEyQVFBNkFFSEEzaE1MQVFFQVFZRGZFd3NSK3J3QkFEc0FBQUFCQUFBQThGa0RBQUVBUWREZkV3c0ZTYllCQUR3QVFlRGZFd3NCQVFCQm9PQVRDd1VydGdFQVBRQkJzT0FUQ3dFQkFFSHc0Qk1MQldlMkFRQStBRUdBNFJNTEFRRUFRY0RoRXdzRnM3VUJBRDhBUWREaEV3c0JBUUJCa09JVEN3V1h0UUVBUUFCQm9PSVRDd0VCQUVIZzRoTUxFZW04QVFCQkFBQUFBUUFBQVBCWkF3QUJBRUd3NHhNTEJjRFJBQUJDQUVIQTR4TUxBUUVBUVlEa0V3c0ZpeXNCQUVNQVFaRGtFd3NGQVFBQUFBRUFRZERrRXdzRlhrWUFBRVFBUWVEa0V3c0ZBUUFBQUFFQVFhRGxFd3NGNmVJQUFFVUFRYkRsRXdzQkFRQkI4T1VUQ3dWa01BRUFSZ0JCZ09ZVEN3a0JBQUFBQVFBQUFBRUFRY0RtRXdzRjFEZ0FBRWNBUWREbUV3c0ZBUUFBQUFFQVFaRG5Fd3NGMERzQUFFZ0FRYURuRXdzSkFRQUFBQUVBQUFBQkFFSGc1eE1MQlFaZEFRQkpBRUh3NXhNTEFRRUFRYkRvRXdzRi9Wd0JBRW9BUWNEb0V3c0JBUUJCZ09rVEN3WDBYQUVBU3dCQmtPa1RDd0VCQUVIUTZSTUxFZFkxQVFCTUFBQUFBUUFBQVBSWkF3QUJBRUdnNmhNTEZjTWFBUUJOQUFBQUFRQUFBUFJaQXdBQkFBQUFBUUJCOE9vVEN4VVBOQUFBVGdBQUFBRUFBQUQwV1FNQUFRQUFBQUVBUWNEckV3c0Z5cmdBQUU4QVFkRHJFd3NGQVFBQUFBRUFRWkRzRXdzRk54TUFBRkFBUWFEc0V3c0ZBUUFBQUFFQVFlRHNFd3NGVUpvQUFGRUFRZkRzRXdzSkFRQUFBQUVBQUFBQkFFR3c3Uk1MQWxsT0FFSEE3Uk1MQVFFQVFZRHVFd3NGOHRFQUFBRUFRWkR1RXdzQkFRQkIwTzRUQ3dWTDBBQUFBZ0JCNE80VEN3RUJBRUdnN3hNTEJRdTRBQUFEQUVHdzd4TUxBUUVBUWZEdkV3c0ZBOUlBQUFRQVFZRHdFd3NCQVFCQndQQVRDd1ZTMEFBQUJRQkIwUEFUQ3dFQkFFR1E4Uk1MQllHNUFBQUdBRUdnOFJNTEFRRUFRZUR4RXdzRlg3d0JBQWNBUWZEeEV3c0ZBUUFBQUFFQVFiRHlFd3NGRk5JQUFBZ0FRY0R5RXdzQkFRQkJnUE1UQ3dWWjBBQUFDUUJCa1BNVEN3RUJBRUhROHhNTEJXRFFBQUFLQUVIZzh4TUxCUUVBQUFBQkFFR2c5Qk1MQlhVYUFBQUxBRUd3OUJNTEFRRUFRZkQwRXdzRmg3OEFBQXdBUVlEMUV3c0JBUUJCd1BVVEN3WDJ1QUFBRFFCQjBQVVRDd1VCQUFBQUFRQkJrUFlUQ3dWelRnQUFEZ0JCb1BZVEN3RUJBRUhnOWhNTEJmblJBQUFQQUVIdzloTUxBUUVBUWJEM0V3c0ZUTkFBQUJBQVFjRDNFd3NCQVFCQmdQZ1RDd1gzUkFFQUVRQkJrUGdUQ3dFQkFFSFErQk1MQllYZ0FBQVNBRUhnK0JNTEFRRUFRYUQ1RXdzRndvZ0FBQk1BUWJENUV3c0JBUUJCOFBrVEN3VlZ2QUVBRkFCQmdQb1RDd0VCQUVIQStoTUxCZERGQVFBVkFFSFEraE1MQVFFQVFaRDdFd3NGL2NJQkFCWUFRYUQ3RXdzQkFRQkI0UHNUQ3dXV1lnQUFGd0JCOFBzVEN3RUJBRUd3L0JNTEJXcThBQUFZQUVIQS9CTUxCUUVBQUFBQkFFR0EvUk1MQlJWcUFBQVpBRUdRL1JNTEFRRUFRZEQ5RXdzRmUxMEJBQm9BUWVEOUV3c0pBUUFBQUFFQUFBQUJBRUdnL2hNTEJhWVNBQUFiQUVHdy9oTUxCUUVBQUFBQkFFSHcvaE1MQlNtNEFBQWNBRUdBL3hNTEJRRUFBQUFCQUVIQS94TUxCWDR3QVFBZEFFSFEveE1MQlFFQUFBQUJBRUdRZ0JRTEJkSTdBQUFlQUVHZ2dCUUxCUUVBQUFBQkFFSGdnQlFMQlpxSUFBQWZBRUh3Z0JRTEJRRUFBQUFCQUVHd2dSUUxCWWdhQUFBZ0FFSEFnUlFMQlFFQUFBQUJBRUdBZ2hRTEJROWRBUUFoQUVHUWdoUUxBUUVBUWRDQ0ZBc0Zwb2dBQUNJQVFlQ0NGQXNGQVFBQUFBRUFRYUNERkFzRlkxMEJBQ01BUWJDREZBc0JBUUJCOElNVUN3Vk5pQUFBSkFCQmdJUVVDd1VCQUFBQUFRQkJ3SVFVQ3dYQjJ3QUFKUUJCMElRVUN3RUJBRUdRaFJRTEJYeThBUUFtQUVHZ2hSUUxBUUVBUWVDRkZBc0Y2TVVCQUNjQVFmQ0ZGQXNCQVFCQnNJWVVDd1d6bndBQUtBQkJ3SVlVQ3dFQkFFR0FoeFFMQlJCZEFRQXBBRUdRaHhRTEFRRUFRZENIRkFzRjlEOEJBQ29BUWVDSEZBc0pBUUFBQUFFQUFBQUJBRUdnaUJRTEJYRGdBQUFyQUVHd2lCUUxCUUVBQUFBQkFFSHdpQlFMQlhmZ0FBQXNBRUdBaVJRTEJRRUFBQUFCQUVIQWlSUUxCYlBoQUFBdEFFSFFpUlFMQlFFQUFBQUJBRUdRaWhRTEJaKzVBQUF1QUVHZ2loUUxBUUVBUWVDS0ZBc0YzbThBQUM4QVFmQ0tGQXNGQVFBQUFBRUFRYkNMRkFzRkpoUUFBREFBUWNDTEZBc0ZBUUFBQUFFQVFZQ01GQXNGM2FBQUFERUFRWkNNRkFzRkFRQUFBQUVBUWRDTUZBc0ZJR01BQURJQVFlQ01GQXNGQVFBQUFBRUFRYUNORkFzRjIzc0FBRE1BUWJDTkZBc0ZBUUFBQUFFQVFmQ05GQXNGeFo4QUFEUUFRWUNPRkFzSkFRQUFBQUVBQUFBQkFFSEFqaFFMQmUwZEFBQTFBRUhRamhRTEFRRUFRWkNQRkFzRmJhRUFBRFlBUWFDUEZBc0ZBUUFBQUFFQVFlQ1BGQXNGN2pJQkFEY0FRZkNQRkFzQkFRQkJzSkFVQ3dXaEdBQUFPQUJCd0pBVUN3RUJBRUdBa1JRTEJTVzRBQUE1QUVHUWtSUUxBUUVBUWRDUkZBc0ZVazRBQURvQVFlQ1JGQXNGQVFBQUFBRUFRYUNTRkFzRkN0SUFBRHNBUWJDU0ZBc0JBUUJCOEpJVUN3VlQwQUFBUEFCQmdKTVVDd0VCQUVIQWt4UUxCYmdZQUFBOUFFSFFreFFMQVFFQVFaQ1VGQXNGbTdrQUFENEFRYUNVRkFzQkFRQkI0SlFVQ3dVYjBnQUFQd0JCOEpRVUN3RUJBRUd3bFJRTEJWclFBQUJBQUVIQWxSUUxBUUVBUVlDV0ZBc0ZYRjBCQUVFQVFaQ1dGQXNCQVFCQjBKWVVDd1dJUXdFQVFnQkI0SllVQ3dFQkFFR2dseFFMQlY1T0FBQkRBRUd3bHhRTEFRRUFRZkNYRkFzRnBpZ0JBRVFBUVlDWUZBc0ZBUUFBQUFFQVFjQ1lGQXNGc29nQUFFVUFRZENZRkFzQkFRQkJrSmtVQ3dWRXZBRUFSZ0JCb0prVUN3RUJBRUhnbVJRTEJiN0ZBUUJIQUVId21SUUxBUUVBUWJDYUZBc0ZzZHNBQUVnQVFjQ2FGQXNCQVFCQmdKc1VDd1ZydkFFQVNRQkJrSnNVQ3dFQkFFSFFteFFMQmRiRkFRQktBRUhnbXhRTEFRRUFRYUNjRkFzRkQyTUFBRXNBUWJDY0ZBc0ZBUUFBQUFFQVFmQ2NGQXNGZ3BvQUFFd0FRWUNkRkFzQkFRQkJ3SjBVQ3dXUEdBQUFUUUJCMEowVUN3RUJBRUdRbmhRTEJSQzRBQUJPQUVHZ25oUUxBUUVBUWVDZUZBc0ZweGdBQUU4QVFmQ2VGQXNCQVFCQnNKOFVDd1dHdVFBQVVBQkJ3SjhVQ3dFQkFFR0FvQlFMQldkT0FBQlJBRUdRb0JRTEFRRUFRZENnRkFzRnNpZ0JBRklBUWVDZ0ZBc0ZBUUFBQUFFQVFhQ2hGQXNGdTRnQUFGTUFRYkNoRkFzQkFRQkI4S0VVQ3dWT3ZBRUFWQUJCZ0tJVUN3RUJBRUhBb2hRTEJjbkZBUUJWQUVIUW9oUUxBUUVBUVpDakZBc0Z1dHNBQUZZQVFhQ2pGQXNCQVFCQjRLTVVDd1YxdkFFQVZ3QkI4S01VQ3dFQkFFR3dwQlFMQmVIRkFRQllBRUhBcEJRTEFRRUFRWUNsRkFzRkdXTUFBRmtBUVpDbEZBc0ZBUUFBQUFFQVFkQ2xGQXNGalpvQUFGb0FRZUNsRkFzQkFRQkJvS1lVQ3dXYUdBQUFXd0JCc0tZVUN3RUJBRUh3cGhRTEJSbTRBQUJjQUVHQXB4UUxBUUVBUWNDbkZBc0ZzUmdBQUYwQVFkQ25GQXNCQVFCQmtLZ1VDd1dQdVFBQVhnQkJvS2dVQ3dFQkFFSGdxQlFMQlN1YUFBQmZBRUh3cUJRTENRRUFBQUFCQUFBQUFRQkJzS2tVQ3dYQ1hnQUFZQUJCd0trVUN3RUJBRUdBcWhRTEJhQ2hBQUJoQUVHUXFoUUxCUUVBQUFBQkFFSFFxaFFMQmF5aEFBQmlBRUhncWhRTEJRRUFBQUFCQUVHZ3F4UUxCYlFRQUFCakFFR3dxeFFMQ1FFQUFBQUJBQUFBQVFCQjhLc1VDd1VqVVFBQVpBQkJnS3dVQ3dFQkFFSEFyQlFMQmIrYUFBQmxBRUhRckJRTEJRRUFBQUFCQUVHUXJSUUxCYm1hQUFCbUFFR2dyUlFMQ1FFQUFBQUJBQUFBQVFCQjRLMFVDd1g2dUFBQVp3QkI4SzBVQ3dFQkFFR3dyaFFMQlZoR0FBQm9BRUhBcmhRTEJRRUFBQUFCQUVHQXJ4UUxCV3NyQVFCcEFFR1FyeFFMQlFFQUFBQUJBRUhRcnhRTEJaZlJBQUJxQUVIZ3J4UUxBUUVBUWFDd0ZBc0YzK0lBQUdzQVFiQ3dGQXNCQVFCQjhMQVVDd1ZNS3dFQWJBQkJnTEVVQ3dVQkFBQUFBUUJCd0xFVUN3VjYwUUFBYlFCQjBMRVVDd0VCQUVHUXNoUUxCYi9pQUFCdUFFR2dzaFFMQVFFQVFlQ3lGQXNGb1dJQUFJMEFRZkN5RkFzQkFRQkJzTE1VQ3dYLzRBQUFqZ0JCd0xNVUN3VUJBQUFBQVFCQmdMUVVDd1hzT3dBQWp3QkJrTFFVQ3dVQkFBQUFBUUJCMExRVUN3WGlPd0FBa0FCQjRMUVVDd1VCQUFBQUFRQkJvTFVVQ3dXc1BnRUFrUUJCc0xVVUN3VUJBQUFBQVFCQjhMVVVDd1dsUGdFQWtnQkJnTFlVQ3dVQkFBQUFBUUJCd0xZVUN3V2RQZ0VBa3dCQjBMWVVDd1VCQUFBQUFRQkJrTGNVQ3dXVlBnRUFsQUJCb0xjVUN3VUJBQUFBQVFCQjRMY1VDd1U2bWdBQWxRQkI4TGNVQ3drQkFBQUFBUUFBQUFFQVFiQzRGQXNGTXBvQUFKWUFRY0M0RkFzSkFRQUFBQUVBQUFBQkFFR0F1UlFMQlJJRUFBQ1hBRUdRdVJRTEFRRUFRZEM1RkFzRkRnUUFBSmdBUWVDNUZBc0JBUUJCb0xvVUN3V2EwQUFBbVFCQnNMb1VDd2tCQUFBQUFRQUFBQUVBUWZDNkZBc0Y5anNBQUpvQVFZQzdGQXNKQVFBQUFBRUFBQUFCQUVIQnV4UUxCRHdBQUpzQVFkQzdGQXNKQVFBQUFBRUFBQUFCQUVHUXZCUUxCYkVTQUFDY0FFR2d2QlFMQlFFQUFBQUJBRUhndkJRTEJhc1NBQUNkQUVId3ZCUUxCUUVBQUFBQkFFR3d2UlFMQlRTNEFBQ2VBRUhBdlJRTEJRRUFBQUFCQUVHQXZoUUxCUzY0QUFDZkFFR1F2aFFMQlFFQUFBQUJBRUhRdmhRTEJZalFBQUNnQUVIZ3ZoUUxCUUVBQUFBQkFFR2d2eFFMQmFYdkFBQ2hBRUd3dnhRTEJRRUFBQUFCQUVId3Z4UUxCUlE4QUFDaUFFR0F3QlFMQlFFQUFBQUJBRUhBd0JRTEJRbzhBQUNqQUVIUXdCUUxCUUVBQUFBQkFFR1F3UlFMQlpVYUFRQ2tBRUdnd1JRTEJRRUFBQUFCQUVIZ3dSUUxCYUFhQVFDbEFFSHd3UlFMQlFFQUFBQUJBRUd3d2hRTEJad2JBQUNtQUVIQXdoUUxBUUVBUVlEREZBc0Y5N2tCQUtjQVFaRERGQXNKQVFBQUFBRUFBQUFCQUVIUXd4UUxCZSs1QVFDb0FFSGd3eFFMQ1FFQUFBQUJBQUFBQVFCQm9NUVVDd1hudVFFQXFRQkJzTVFVQ3dVQkFBQUFBUUJCOE1RVUN3WGZ1UUVBcWdCQmdNVVVDd1VCQUFBQUFRQkJ3TVVVQ3dWNnVRQUFxd0JCME1VVUN3a0JBQUFBQVFBQUFBWUFRWkRHRkFzRmNya0FBS3dBUWFER0ZBc0pBUUFBQUFFQUFBQUJBRUhneGhRTEJkN2dBQUN0QUVId3hoUUxCUUVBQUFBQkFFR3d4eFFMQlIrNUFBQ3VBRUhBeHhRTENRRUFBQUFCQUFBQUJnQkJnTWdVQ3dYUzRBQUFyd0JCa01nVUN3a0JBQUFBQVFBQUFBRUFRZERJRkFzRlA0Z0FBTEFBUWVESUZBc05BUUFBQUFFQUFBQUJBQUFBRndCQm9Na1VDd1VTdVFBQXNRQkJzTWtVQ3drQkFBQUFBUUFBQUFFQVFmREpGQXNGSUlnQUFMSUFRWURLRkFzTkFRQUFBQUVBQUFBQkFBQUFGd0JCd01vVUN3VTV1UUFBc3dCQjBNb1VDd2tCQUFBQUFRQUFBQVlBUVpETEZBc0ZLN2tBQUxRQVFhRExGQXNKQVFBQUFBRUFBQUFCQUVIZ3l4UUxCUytJQUFDMUFFSHd5eFFMRFFFQUFBQUJBQUFBQVFBQUFCY0FRYkRNRkFzRlFCc0JBTFlBUWNETUZBc0ZBUUFBQUFFQVFZRE5GQXNGaHJ3QkFMY0FRWkRORkFzSkFRQUFBQUVBQUFBQkFFSFF6UlFMQlg3Z0FBQzRBRUhnelJRTEJRRUFBQUF4QUVHZ3poUUxCV0xTQUFDNUFFR3d6aFFMQlFFQUFBQUJBRUh3emhRTEJkdzRBQUM2QUVHQXp4UUxDUUVBQUFBQkFBQUFBUUJCd004VUN3WGZPQUFBdXdCQjBNOFVDd2tCQUFBQUFRQUFBQUVBUVpEUUZBc0ZtMklBQU1rQVFhRFFGQXNCQVFCQjROQVVDd1gwNEFBQXlnQkI4TkFVQ3dVQkFBQUFBUUJCc05FVUN3Vi8wQUFBeXdCQndORVVDd1VCQUFBQUFRQkJnTklVQ3dXUjBBQUF6QUJCa05JVUN3a0JBQUFBQVFBQUFBRUFRZERTRkFzRjJxb0JBQUVBUWVEU0ZBc0ZBUUFBQUFFQVFhRFRGQXNGTEs0QkFBRUFRYkRURkFzSkFRQUFBQUVBQUFBQkFFSHcweFFMQlJxdUFRQUNBRUdBMUJRTENRRUFBQUFCQUFBQUFRQkJ3TlFVQ3dVanJnRUFBd0JCME5RVUN3a0JBQUFBQVFBQUFBRUFRWkRWRkFzRkVhNEJBQVFBUWFEVkZBc0pBUUFBQUFFQUFBQUJBRUhnMVJRTEJmK3RBUUFGQUVIdzFSUUxDUUVBQUFBQkFBQUFBUUJCc05ZVUN3VUlyZ0VBQmdCQndOWVVDd2tCQUFBQUFRQUFBQUVBUVlEWEZBc0ZSNjRCQUFjQVFaRFhGQXNKQVFBQUFBRUFBQUFCQUVIUTF4UUxCVFd1QVFBSUFFSGcxeFFMQ1FFQUFBQUJBQUFBQVFCQm9OZ1VDd1UrcmdFQUNRQkJzTmdVQ3drQkFBQUFBUUFBQUFFQVFmRFlGQXNGOGFvQkFBRUFRWURaRkFzQkFRQkJ3TmtVQ3dWd3JRRUFBZ0JCME5rVUN3RUJBRUdRMmhRTEJTV3RBUUFEQUVIZzJoUUxCWFdyQVFBQkFFSHcyaFFMQlFFQUFBQUJBRUd3MnhRTEJlT3RBUUFDQUVIQTJ4UUxCUUVBQUFBQkFFR0EzQlFMQmJHckFRQURBRUdRM0JRTENRRUFBQUFCQUFBQUFRQkIwTndVQ3dWUHF3RUFCQUJCNE53VUN3RUJBRUdnM1JRTEEyQVhBUUJCOE4wVUN3WElNZ0FBQVFCQmdONFVDd2tCQUFBQUJnQUFBQVlBUWNEZUZBc0YwRU1CQUFJQVFkRGVGQXNKQVFBQUFBRUFBQUEyQUVHUTN4UUxCVXR2QUFBREFFR2czeFFMQ1FFQUFBQVFBQUFBTlFCQjROOFVDd1dLZGdBQUJBQkI4TjhVQ3dVQkFBQUFPQUJCc09BVUN3VTJEZ0FBQlFCQndPQVVDd1VCQUFBQU1RQkJnT0VVQ3dYamFBQUFCZ0JCa09FVUN3VUJBQUFBQmdCQjBPRVVDd1dZNFFBQUJ3QkI0T0VVQ3hVQkFBQUFBUUFBQUFFQUFBQUdBQUFBQmdBQUFBRUFRYURpRkFzRkVxb0FBQWdBUWJEaUZBc0ZBUUFBQURFQVFmRGlGQXNGVzdvQUFBa0FRWURqRkFzaEFRQUFBQUVBQUFBQkFBQUFCZ0FBQUFZQUFBQUJBQUFBQVFBQUFEVUFBQUF4QUVIQTR4UUxCZlh1QUFBS0FFSFE0eFFMSVFFQUFBQTNBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBMUFBQUFNUUJCa09RVUN3VkZmd0FBQ3dCQm9PUVVDeVVCQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0FBQUFFQUFBQUJBQUFBQVFBQUFEVUFBQUFvQUVIZzVCUUxCYjhyQVFBTUFFSHc1QlFMRVFFQUFBQUJBQUFBQVFBQUFBRUFBQUExQUVHdzVSUUxCVEIvQUFBTkFFSEE1UlFMQlFFQUFBQUJBRUdBNWhRTEJhandBQUFPQUVHUTVoUUxCUUVBQUFBeEFFSFE1aFFMQmZSeEFBQVBBRUhnNWhRTEZRRUFBQUFCQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0JCb09jVUN3WFJjUUFBRUFCQnNPY1VDeEVCQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0JCOE9jVUN3V1p6d0FBRVFCQmdPZ1VDeEVCQUFBQUFRQUFBQVlBQUFBR0FBQUFNUUJCd09nVUN3VmxIZ0VBRWdCQjBPZ1VDeVVCQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0FBQUFFQUFBQUJBQUFBQVFBQUFEVUFBQUFvQUVHUTZSUUxCUnF2QUFBVEFFR2c2UlFMSFFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBMUFFSGc2UlFMQlFTcUFBQVVBRUh3NlJRTEtRRUFBQUFCQUFBQUFRQUFBQVlBQUFBR0FBQUFBUUFBQUFFQUFBQTFBQUFBQmdBQUFBRUFBQUFvQUVHdzZoUUxCUjNQQUFBVkFFSEE2aFFMRVFFQUFBQUdBQUFBQmdBQUFBRUFBQUFvQUVHQTZ4UUxCVWxwQUFBV0FFR1E2eFFMQ1FFQUFBQUdBQUFBQVFCQjBPc1VDd1VZRmdFQUZ3QkI0T3NVQ3dVQkFBQUFLQUJCb093VUN3VUxGZ0VBR0FCQjhPd1VDd1hrUFFBQUdRQkJnTzBVQ3drR0FBQUFBUUFBQUNnQVFjRHRGQXNGT1I0QkFCb0FRZER0RkFzWkFRQUFBQUVBQUFBQkFBQUFCZ0FBQUFZQUFBQUJBQUFBS3dCQmtPNFVDd1dUSGdFQUd3QkJvTzRVQ3dVQkFBQUFBUUJCNE80VUN3WEc5d0FBSEFCQjhPNFVDd2tCQUFBQUFRQUFBQUVBUWJEdkZBc0YxK29BQUIwQVFjRHZGQXNKQVFBQUFBRUFBQUF4QUVHQThCUUxCVWl1QUFBZUFFR1E4QlFMQlRrQUFBQXlBRUhROEJRTEJjaTFBQUFmQUVIZzhCUUxBVEVBUWFEeEZBc0ZwZUVBQUNBQVFiRHhGQXNOQVFBQUFBWUFBQUFCQUFBQUtBQkI4UEVVQ3dXQTRRQUFJUUJCZ1BJVUN3a0JBQUFBQmdBQUFBRUFRY0R5RkFzRFlCY0JBRUdROHhRTEJjZ3lBQUFCQUVHZzh4UUxEUVlBQUFBR0FBQUFBUUFBQUFzQVFlRHpGQXNGMEVNQkFBSUFRZkR6RkFzSkFRQUFBQUVBQUFBN0FFR3c5QlFMQlV0dkFBQURBRUhBOUJRTENRRUFBQUFRQUFBQU9nQkJnUFVVQ3dXS2RnQUFCQUJCa1BVVUN3VUJBQUFBUFFCQjBQVVVDd1UyRGdBQUJRQkI0UFVVQ3dVQkFBQUFNUUJCb1BZVUN3WGphQUFBQmdCQnNQWVVDd1VCQUFBQUJnQkI4UFlVQ3dXWTRRQUFCd0JCZ1BjVUN4VUJBQUFBQVFBQUFBRUFBQUFHQUFBQUJnQUFBQUVBUWNEM0ZBc0ZFcW9BQUFnQVFkRDNGQXNKT2dBQUFBRUFBQUF4QUVHUStCUUxCVnU2QUFBSkFFR2crQlFMSVFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBNkFBQUFNUUJCNFBnVUN3WDE3Z0FBQ2dCQjhQZ1VDeVVCQUFBQVBBQUFBQUVBQUFBR0FBQUFCZ0FBQUFFQUFBQUJBQUFBQVFBQUFEb0FBQUF4QUVHdytSUUxCVVYvQUFBTEFFSEErUlFMSlFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBQkFBQUFPZ0FBQUNnQVFZRDZGQXNGdnlzQkFBd0FRWkQ2RkFzUkFRQUFBQUVBQUFBQkFBQUFBUUFBQURvQVFkRDZGQXNGTUg4QUFBMEFRZUQ2RkFzRkFRQUFBQUVBUWFEN0ZBc0ZxUEFBQUE0QVFiRDdGQXNGQVFBQUFERUFRZkQ3RkFzRjlIRUFBQThBUVlEOEZBc1ZBUUFBQUFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUVIQS9CUUxCZEZ4QUFBUUFFSFEvQlFMRVFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUVHUS9SUUxCWm5QQUFBUkFFR2cvUlFMRVFFQUFBQUJBQUFBQmdBQUFBWUFBQUF4QUVIZy9SUUxCV1VlQVFBU0FFSHcvUlFMSlFFQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUFRQUFBQUVBQUFBQkFBQUFPZ0FBQUNnQVFiRCtGQXNGR3E4QUFCTUFRY0QrRkFzZEFRQUFBQUVBQUFBQkFBQUFCZ0FBQUFZQUFBQUJBQUFBQVFBQUFEb0FRWUQvRkFzRkJLb0FBQlFBUVpEL0ZBc3BBUUFBQUFFQUFBQUJBQUFBQmdBQUFBWUFBQUFCQUFBQUFRQUFBRG9BQUFBR0FBQUFBUUFBQUNnQVFkRC9GQXNGSGM4QUFCVUFRZUQvRkFzUkFRQUFBQVlBQUFBR0FBQUFBUUFBQUNnQVFhQ0FGUXNGU1drQUFCWUFRYkNBRlFzSkFRQUFBQVlBQUFBQkFFSHdnQlVMQlJnV0FRQVhBRUdBZ1JVTEJRRUFBQUFvQUVIQWdSVUxCUXNXQVFBWUFFR1FnaFVMQmVROUFBQVpBRUdnZ2hVTENRWUFBQUFCQUFBQUtBQkI0SUlWQ3dVNUhnRUFHZ0JCOElJVkN4MEJBQUFBQVFBQUFBRUFBQUFHQUFBQUJnQUFBQUVBQUFBNkFBQUFLd0JCc0lNVkN3V1RIZ0VBR3dCQndJTVZDd1VCQUFBQUFRQkJnSVFWQ3dYRzl3QUFIQUJCa0lRVkN3a0JBQUFBQVFBQUFBRUFRZENFRlFzRjErb0FBQjBBUWVDRUZRc05BUUFBQUFFQUFBQUJBQUFBTVFCQm9JVVZDd1ZJcmdBQUhnQkJzSVVWQ3dVK0FBQUFNZ0JCOElVVkN3WEl0UUFBSHdCQmdJWVZDd0V4QUVIQWhoVUxCYVhoQUFBZ0FFSFFoaFVMRFFFQUFBQUdBQUFBQVFBQUFDZ0FRWkNIRlFzRmdPRUFBQ0VBUWFDSEZRc0pBUUFBQUFZQUFBQUJBRUhnaHhVTEJYb0VBQUFpQUVId2h4VUxHUUVBQUFBL0FBQUFBUUFBQUFFQUFBQUdBQUFBQmdBQUFBRUFRYkNJRlFzRmNTa0JBQ01BUWNDSUZRc0ZBUUFBQUNnQVFZQ0pGUXNGZUowQkFDUUFRWkNKRlFzZEFRQUFBQUVBQUFBQkFBQUFCZ0FBQUFFQUFBQUJBQUFBQVFBQUFBWUFRZENKRlFzRFlCY0JBRUdnaWhVTEJjZ3lBQUFCQUVHd2loVUxEUUVBQUFBQkFBQUFBUUFBQUFFQVFmQ0tGUXNGMEVNQkFBSUFRWUNMRlFzTkFRQUFBQUVBQUFBQkFBQUFBUUJCd0lzVkN3Vkxid0FBQXdCQjBJc1ZDd2tCQUFBQUFRQUFBQUVBUVpDTUZRc0ZpbllBQUFRQVFhQ01GUXNGQVFBQUFBRUFRZUNNRlFzRk5nNEFBQVVBUWZDTUZRc0ZBUUFBQURFQVFiQ05GUXNGNDJnQUFBWUFRY0NORlFzRkFRQUFBQUVBUVlDT0ZRc0ZtT0VBQUFjQVFaQ09GUXNWQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFSFFqaFVMQlJLcUFBQUlBRUhnamhVTENRRUFBQUFCQUFBQU1RQkJvSThWQ3dWYnVnQUFDUUJCc0k4VkN5RUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQURFQVFmQ1BGUXNGOWU0QUFBb0FRWUNRRlFzbEFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQU1RQkJ3SkFWQ3dWRmZ3QUFDd0JCMEpBVkN5RUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUNnQVFaQ1JGUXNGdnlzQkFBd0FRYUNSRlFzTkFRQUFBQUVBQUFBQkFBQUFBUUJCNEpFVkN3VXdmd0FBRFFCQjhKRVZDd1VCQUFBQUFRQkJzSklWQ3dXbzhBQUFEZ0JCd0pJVkN3VUJBQUFBTVFCQmdKTVZDd1gwY1FBQUR3QkJrSk1WQ3hVQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRZENURlFzRjBYRUFBQkFBUWVDVEZRc1JBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRYUNVRlFzRm1jOEFBQkVBUWJDVUZRc1JBUUFBQUFFQUFBQUJBQUFBQVFBQUFERUFRZkNVRlFzRlpSNEJBQklBUVlDVkZRc2xBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFLQUJCd0pVVkN3VWFyd0FBRXdCQjBKVVZDeDBCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQmtKWVZDd1VFcWdBQUZBQkJvSllWQ3lVQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFSGdsaFVMQlIzUEFBQVZBRUh3bGhVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFR3dseFVMQlVscEFBQVdBRUhBbHhVTENRRUFBQUFCQUFBQUFRQkJnSmdWQ3dVWUZnRUFGd0JCa0pnVkN3VUJBQUFBS0FCQjBKZ1ZDd1VMRmdFQUdBQkJvSmtWQ3dYa1BRQUFHUUJCc0prVkN3a0JBQUFBQVFBQUFDZ0FRZkNaRlFzRk9SNEJBQm9BUVlDYUZRc2RBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQ2dBUWNDYUZRc0ZreDRCQUJzQVFkQ2FGUXNGQVFBQUFBRUFRWkNiRlFzRnh2Y0FBQndBUWFDYkZRc05BUUFBQUFFQUFBQUJBQUFBTVFCQjRKc1ZDd1hYNmdBQUhRQkI4SnNWQ3cwQkFBQUFBUUFBQUFFQUFBQXhBRUd3bkJVTEJVaXVBQUFlQUVIQW5CVUxCUUVBQUFBeEFFR0FuUlVMQmNpMUFBQWZBRUdRblJVTEFURUFRZENkRlFzRnBlRUFBQ0FBUWVDZEZRc05BUUFBQUFFQUFBQUJBQUFBS0FCQm9KNFZDd1dBNFFBQUlRQkJzSjRWQ3drQkFBQUFBUUFBQUFFQVFmQ2VGUXNGZWdRQUFDSUFRWUNmRlFzWkFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQndKOFZDd1Z4S1FFQUl3QkIwSjhWQ3dVQkFBQUFLQUJCa0tBVkN3VUdvd0FBWlFCQm9LQVZDd1VCQUFBQUFRQkI0S0FWQ3dWQU9BRUFaZ0JCOEtBVkN3RUJBRUd3b1JVTEJjSVhBUUJuQUVIQW9SVUxFUUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBRUdBb2hVTEJiWVhBUUJvQUVIUW9oVUxCZWgxQUFCcEFFSGdvaFVMQlFFQUFBQUJBRUdnb3hVTEJlSFJBQUJxQUVHd294VUxBUUVBUWZDakZRc0ZzeDRBQUdzQVFZQ2tGUXNOQVFBQUFBRUFBQUFCQUFBQUFRQkJ3S1FWQ3dVOEVBQUFiQUJCMEtRVkN3a0JBQUFBQVFBQUFBRUFRWkNsRlFzRmdNQUFBQUVBUWFDbEZRc1JBUUFBQUFFQUFBQW9BQUFBS0FBQUFDZ0FRZUNsRlFzRmFLQUFBQUlBUWZDbEZRc1JBUUFBQUNnQUFBQW9BQUFBS0FBQUFDZ0FRYkNtRlFzRklYb0FBQU1BUWNDbUZRc1JBUUFBQUFFQUFBQUJBQUFBQVFBQUFDZ0FRWUNuRlFzRmFMc0FBQVFBUVpDbkZRc1JBUUFBQUFFQUFBQUJBQUFBQVFBQUFDZ0FRZENuRlFzRnZIb0FBQVVBUWVDbkZRc1pBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUtBQkJvS2dWQ3dYOXV3QUFCZ0JCc0tnVkN4a0JBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFSHdxQlVMQlFzeEFBQUhBRUdBcVJVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFSEFxUlVMQlFFbEFRQUlBRUhRcVJVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFR1FxaFVMQmV3a0FRQUpBRUdncWhVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFSGdxaFVMQlNSekFBQUtBRUh3cWhVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFR3dxeFVMQmVtSUFBQUxBRUhBcXhVTEVRRUFBQUFCQUFBQUFRQUFBQUVBQUFBb0FFR0FyQlVMQmJIakFBQU1BRUdRckJVTENRRUFBQUFCQUFBQUFRQkIwS3dWQ3dWek5BQUFEUUJCNEt3VkN3a0JBQUFBQVFBQUFBRUFRYUN0RlFzRmI3d0FBQTRBUWJDdEZRc0JBUUJCOEswVkN3VmFOQUFBRHdCQmdLNFZDd1VCQUFBQUFRQkJ3SzRWQ3dWNTVBQUFFQUJCMEs0VkN3VUJBQUFBQVFCQmtLOFZDd1dYNUFBQUVRQkJvSzhWQ3dVQkFBQUFBUUJCNEs4VkN3VkJOQUFBRWdCQjhLOFZDd1VCQUFBQUFRQkJzTEFWQ3dWMlRRQUFFd0JCd0xBVkN3VUJBQUFBQVFCQmdMRVZDd1VqTkFBQUZBQkJrTEVWQ3dVQkFBQUFBUUJCMExFVkN3WFZlZ0FBRlFCQjRMRVZDd2tCQUFBQUFRQUFBQUVBUWFDeUZRc0ZFTHdBQUJZQVFiQ3lGUXNKQVFBQUFBRUFBQUFCQUVId3NoVUxCVVJ6QUFBWEFFR0FzeFVMQ1FFQUFBQUJBQUFBQVFCQndMTVZDd1hoNHdBQUdBQkIwTE1WQ3cwQkFBQUFBUUFBQUFFQUFBQUJBRUdRdEJVTEJVTGpBQUFaQUVHZ3RCVUxBUUVBUWVDMEZRc0ZNREFBQUJvQVFmQzBGUXNSQVFBQUFBRUFBQUFCQUFBQUFRQUFBQ2dBUWJDMUZRc0ZlTHNBQUJzQVFjQzFGUXNaQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFLQUJCZ0xZVkN3VnBlZ0FBSEFCQmtMWVZDd2tCQUFBQUFRQUFBQUVBUWRDMkZRc0YxTEFBQUIwQVFlQzJGUXNKQVFBQUFBRUFBQUFCQUVHZ3R4VUxCYlF3QUFBZUFFR3d0eFVMRFFFQUFBQUJBQUFBQVFBQUFBRUFRZkMzRlFzRjNqQUFBQjhBUVlDNEZRc05BUUFBQUFFQUFBQUJBQUFBQVFCQndMZ1ZDd1dQdXdBQUlBQkIwTGdWQ3hVQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRWkM1RlFzRjFic0FBQ0VBUWFDNUZRc1ZBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIZ3VSVUxCUVo2QUFBaUFFSHd1UlVMRVFFQUFBQUJBQUFBQVFBQUFBRUFBQUFvQUVHd3VoVUxCZXQ1QUFBakFFSEF1aFVMRVFFQUFBQUJBQUFBQVFBQUFBRUFBQUFvQUVHQXV4VUxCWlF3QUFBa0FFR1F1eFVMQ1FFQUFBQUJBQUFBQVFCQjBMc1ZDd1ZzTUFBQUpRQkI0THNWQ3drQkFBQUFBUUFBQUFFQVFhQzhGUXNGbWFBQUFDWUFRYkM4RlFzSkFRQUFBQUVBQUFBeEFFSHd2QlVMQll4NkFBQW5BRUdBdlJVTENRRUFBQUFCQUFBQUFRQkJ3TDBWQ3dWTU1BQUFLQUJCMEwwVkN3a0JBQUFBQVFBQUFBRUFRWmkrRlFzYXJRY0FBTFlIQUFDM0J3QUF1QWNBQUxrSEFBQzZCd0FBdXdjQVFjUytGUXZUQkR0T0FBQmNQQU1BTzA0QUFBRUFBQUNzcVFFQVhEd0RBS3lwQVFBQ0FBQUE2T1FBQUZ3OEF3RG81QUFBQXdBQUFPa09BQUJjUEFNQTZRNEFBQVFBQUFDTnJ3RUFYRHdEQUkydkFRQUZBQUFBejRJQkFGdzhBd0RQZ2dFQUJnQUFBRHRPQUFEbWFRQUEzbWtBQUFjQUFBQTdUZ0FBZEhRQUFHeDBBQUFJQUFBQU8wNEFBRHMxQVFBek5RRUFDUUFBQUZpOEFBQmNQQU1BV0x3QUFBb0FBQUJNcmdFQVhEd0RBRXl1QVFBTEFBQUFQc0FBQUZ3OEF3QSt3QUFBREFBQUFIK3ZBQUJjUEFNQWY2OEFBQTBBQUFBNUd3RUFPZUFBQURMZ0FBQU9BQUFBT1JzQkFGWGdBQUJPNEFBQUR3QUFBRGtiQVFEaUZBQUEyeFFBQUJBQUFBRFJxZ0VBeEdrQUFMdHBBQUFSQUFBQU8wNEFBSzEwQUFDbGRBQUFFZ0FBQUxFWEFRQldkQUFBVVhRQUFCTUFBQUJodkFBQXozTUFBTVp6QUFBVUFBQUE4b2tBQUhscEFBQm9hUUFBRlFBQUFEa2JBUUR3RkFBQTZSUUFBQllBQUFBNUd3RUFZMndBQUZ4c0FBQVhBQUFBT1JzQkFMaHpBQUN4Y3dBQUdBQUFBRGtiQVFBN2RBQUFOSFFBQUJrQUFBQ2NYUUFBOG5NQUFPUnpBQUFhQUFBQWcxMEJBSmRwQUFDUmFRQUFHd0FBQUVOT0FBRElNd0VBdVRNQkFCd0FBQURRQkFBQW1sMEJBSWxkQVFBZEFBQUFDMDhBQUNCMEFBQUtkQUFBSGdBQUFPRUVBQUMvVVFBQXExRUFBQjhBQUFBNUd3RUE0SUlCQU5tQ0FRQWdBQUFBZm9JQkFPY3lBQURkTWdBQUlRQUFBSmwwQUFEUmJ3QUF4VzhBQUNJQUFBQ3hGZ0FBV3RFQUFFM1JBQUFqQUFBQWpnUUFBUDhMQUFEckN3QUFKQUFBQUlaaUFBQjQwQUFBYU5BQUFMOENBQUNnWVFVQVFhRERGUXNDSjVvQVFZTEVGUXNMQVFELy8vLy9pdUVBQUFFQVFaakVGUXNKQWdBQUFBSUFBQUFEQUVIY3hCVUxBZ0VCQUVIcXhCVUxDd0VBLy8vLy8wVTRBUUFDQUVHQXhSVUxCUUVBQUFBS0FFSFN4UlVMQ3dFQS8vLy8vM1lwQVFBREFFSG94UlVMRVFRQUFBQUxBQUFBQmdBQUFDZ0FBQUF1QUVHNnhoVUxDd0VBLy8vLy94NjNBQUFFQUVIUXhoVUxCUUVBQUFBS0FFR2l4eFVMQ3dFQS8vLy8vNUlaQVFBRkFFRzR4eFVMQ1FJQUFBQUJBQUFBQ2dCQmlzZ1ZDd3NCQVAvLy8vOWhHUUVBQmdCQm9NZ1ZDdzBEQUFBQUFRQUFBQVlBQUFBS0FFSHl5QlVMQ3dFQS8vLy8venZmQUFBSEFFR0l5UlVMQ1FJQUFBQURBQUFBQ2dCQnpNa1ZDd0VCQUVIYXlSVUxDd0VBLy8vLy85SVhBUUFJQUVId3lSVUxEUU1BQUFBQkFBQUFCZ0FBQUFZQVFjTEtGUXNMQVFELy8vLy9NYmNBQUFvQVFkaktGUXNGQVFBQUFBb0FRYXJMRlFzTEFRRC8vLy8vakJrQUFBc0FRY0RMRlFzSkFnQUFBQU1BQUFBS0FFR0V6QlVMQVFFQVFaTE1GUXNMQVFELy8vLy94aGNBQUF3QVFhak1GUXNSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQWNBUWV6TUZRc0NBUUVBUWZyTUZRc0xBUUQvLy8vL3E4Z0FBQTRBUVpETkZRc0pBZ0FBQUEwQUFBQU9BRUhpelJVTEN3RUEvLy8vLzdnZUFBQVBBRUg0elJVTEVRUUFBQUFNQUFBQUFRQUFBQW9BQUFBeEFFSEt6aFVMQ3dFQS8vLy8vM29vQVFBUUFFSGd6aFVMQ1FJQUFBQUJBQUFBRHdCQnNzOFZDd3NCQVAvLy8vL3RDQUFBRVFCQnlNOFZDd1VCQUFBQUlBQkJtdEFWQ3dzQkFQLy8vLzlzTmdFQUV3QkJzTkFWQ3dVQkFBQUFBd0JCOU5BVkN3RUJBRUdDMFJVTEN3RUEvLy8vL3lhK0FBQVVBRUdZMFJVTEJRRUFBQUFEQUVIYzBSVUxBUUVBUWVyUkZRc0xBUUQvLy8vLzRqRUFBQlVBUVlEU0ZRc05Bd0FBQUFNQUFBQUdBQUFBQmdCQnhOSVZDd0VCQUVIUzBoVUxDd0VBLy8vLy8vczhBQUFXQUVIbzBoVUxDUUlBQUFBREFBQUFCZ0JCck5NVkN3RUJBRUc2MHhVTEN3RUEvLy8vLytob0FBQVhBRUhRMHhVTERRTUFBQUFEQUFBQUFRQUFBQVlBUVpUVUZRc0JBUUJCb3RRVkN5TUJBUC8vLy85QkVBQUFHQUFBQUFFQUFBRDRXUU1BQXdBQUFBTUFBQUFCQUFBQUJnQkIvTlFWQ3dFQkFFR0sxUlVMQ3dFQS8vLy8vNndrQVFBWkFFR2cxUlVMSlFrQUFBQURBQUFBQVFBQUFCRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFGQUFBQUM4QVFlVFZGUXNCQVFCQjh0VVZDd3NCQVAvLy8vOTBjd0FBR2dCQmlOWVZDd1VCQUFBQUF3QkJ6TllWQ3dFQkFFSGExaFVMQ3dFQS8vLy8vM1VsQVFBYkFFSHcxaFVMQ1FJQUFBQURBQUFBQVFCQnROY1ZDd0VCQUVIQzF4VUxDd0VBLy8vLy8wME9BQUFjQUVIWTF4VUxEUU1BQUFBREFBQUFBUUFBQUFFQVFaellGUXNCQVFCQnF0Z1ZDeDhCQVAvLy8vOVhEZ0FBSFFBQUFBRUFBQUQ4V1FNQUFnQUFBQU1BQUFBQkFFR0UyUlVMQVFFQVFaTFpGUXNMQVFELy8vLy9JRGdBQUI0QVFhalpGUXNKQWdBQUFBTUFBQUF4QUVIczJSVUxBUUVBUWZyWkZRc2ZBUUQvLy8vL1Z1WUFBQjhBQUFBQkFBQUFBRm9EQUFJQUFBQURBQUFBQ2dCQjFOb1ZDd0VCQUVIaTJoVUxDd0VBLy8vLy8xQnZBQUFnQUVINDJoVUxEUU1BQUFBREFBQUFFQUFBQUFFQVFiemJGUXNCQVFCQnl0c1ZDd3NCQVAvLy8vOFhxZ0FBSVFCQjROc1ZDdzBEQUFBQUF3QUFBQUVBQUFBeEFFR2szQlVMQVFFQVFiTGNGUXNiQVFELy8vLy9GU0FBQUNJQUFBQUJBQUFBQUZvREFBRUFBQUFEQUVHTTNSVUxBUUVBUVpyZEZRc2JBUUQvLy8vL0h5QUFBQ01BQUFBQkFBQUFCRm9EQUFFQUFBQURBRUgwM1JVTEFRRUFRWUxlRlFzYkFRRC8vLy8vYWtFQkFDUUFBQUFCQUFBQUNGb0RBQUVBQUFBREFFSGMzaFVMQVFFQVFlcmVGUXNiQVFELy8vLy9RT3NBQUNVQUFBQUJBQUFBQkZvREFBRUFBQUFEQUVIRTN4VUxBUUVBUWRMZkZRc2ZBUUQvLy8vL3lCWUJBQ1lBQUFBQkFBQUFDRm9EQUFJQUFBQURBQUFBR1FCQnJPQVZDd0VCQUVHNjRCVUxId0VBLy8vLy8xeHZBQUFuQUFBQUFnQUFBQXhhQXdBQ0FBQUFBUUFBQUJBQVFhTGhGUXNMQVFELy8vLy9DZVlBQUNrQVFiamhGUXNKQWdBQUFBSUFBQUFEQUVIODRSVUxBZ0VCQUVHSzRoVUxDd0VBLy8vLy8vRHhBQUFxQUVHZzRoVUxDUUlBQUFBQ0FBQUFBd0JCNU9JVkN3SUJBUUJCOHVJVkN3c0JBUC8vLy85c01RQUFLd0JCaU9NVkN3MERBQUFBQWdBQUFBTUFBQUFKQUVITTR4VUxBZ0VCQUVIYTR4VUxDd0VBLy8vLy8rUHVBQUFzQUVIdzR4VUxEUU1BQUFBQ0FBQUFBd0FBQURFQVFiVGtGUXNDQVFFQVFjTGtGUXNyQVFELy8vLy9OSE1BQUMwQUFBQUJBQUFBRkZvREFBVUFBQUFDQUFBQUF3QUFBQklBQUFBR0FBQUFFd0JCbk9VVkN3SUJBUUJCcXVVVkN3c0JBUC8vLy8rdnZnQUFMZ0JCd09VVkN3a0NBQUFBQWdBQUFBTUFRWVRtRlFzQ0FRRUFRWkxtRlFzTEFRRC8vLy8vQmVZQUFEQUFRYWptRlFzSkFnQUFBQUlBQUFBREFFSHM1aFVMQWdFQkFFSDY1aFVMQ3dFQS8vLy8vK3p4QUFBeEFFR1E1eFVMQ1FJQUFBQUNBQUFBQXdCQjFPY1ZDd0lCQVFCQjR1Y1ZDd3NCQVAvLy8vOW9NUUFBTWdCQitPY1ZDdzBEQUFBQUFnQUFBQU1BQUFBSkFFRzg2QlVMQWdFQkFFSEs2QlVMQ3dFQS8vLy8vOS91QUFBekFFSGc2QlVMRFFNQUFBQUNBQUFBQXdBQUFERUFRYVRwRlFzQ0FRRUFRYkxwRlFzTEFRRC8vLy8vUlpzQUFEUUFRY2pwRlFzTkF3QUFBQUlBQUFBREFBQUFDQUJCak9vVkN3SUJBUUJCbXVvVkN3c0JBUC8vLy85YnF3QUFOZ0JCc09vVkN4RUVBQUFBQWdBQUFBTUFBQUFsQUFBQUFRQkI5T29WQ3dJQkFRQkJndXNWQ3dzQkFQLy8vLysvY1FBQU53QkJtT3NWQ3drQ0FBQUFBZ0FBQUFNQVFkenJGUXNDQVFFQVFlcnJGUXNMQVFELy8vLy9GalVCQURnQVFkTHNGUXNMQVFELy8vLy9OYjhBQURrQVFlanNGUXNSQkFBQUFBSUFBQUFEQUFBQUFRQUFBREVBUWF6dEZRc0NBUUVBUWJydEZRc0xBUUQvLy8vLzFoNEJBRHNBUWREdEZRc1JCQUFBQUFJQUFBQURBQUFBRUFBQUFDZ0FRWlR1RlFzQ0FRRUFRYUx1RlFzTEFRRC8vLy8vckc0QUFEd0FRYmp1RlFzVkJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBRUg4N2hVTEFnRUJBRUdLN3hVTEN3RUEvLy8vLys4L0FRQTlBRUdnN3hVTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBcUFFSGs3eFVMQWdFQkFFSHk3eFVMQ3dFQS8vLy8vNVQxQUFBK0FFR0k4QlVMRFFNQUFBQUJBQUFBQVFBQUFDb0FRZHJ3RlFzTEFRRC8vLy8vR2drQUFEOEFRZkR3RlFzUkJBQUFBQUVBQUFBQkFBQUFLZ0FBQUNvQVFjTHhGUXNyQVFELy8vLy96VGNCQUVBQUFBQUJBQUFBR0ZvREFBVUFBQUFCQUFBQUFRQUFBQUVBQUFBcUFBQUFLZ0JCcXZJVkN3c0JBUC8vLy85WnVBQUFRUUJCd1BJVkN4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQU1RQkJoUE1WQ3dJQkFRQkJrdk1WQ3dzQkFQLy8vLzg2dUFBQVFnQkJxUE1WQ3hFRUFBQUFBZ0FBQUFNQUFBQUJBQUFBTVFCQjdQTVZDd0lCQVFCQit2TVZDeXNCQVAvLy8vOVd1QUFBUXdBQUFBUUFBQUFnV2dNQUJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQXhBRUhVOUJVTEFnRUJBRUhpOUJVTEp3RUEvLy8vLzd2UkFBQkVBQUFBQVFBQUFQeFpBd0FFQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0JCdlBVVkN3SUJBUUJCeXZVVkN5TUJBUC8vLy8rY1lRQUFSUUFBQUFFQUFBQUFXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJwUFlWQ3dJQkFRQkJzdllWQ3lzQkFQLy8vLzlPdUFBQVJnQUFBQUVBQUFBWVdnTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUF4QUVHTTl4VUxBZ0VCQUVHYTl4VUxDd0VBLy8vLy94bndBQUJIQUVHdzl4VUxDUUlBQUFBQkFBQUFHd0JCZ3ZnVkN3c0JBUC8vLy8vYTd3QUFTQUJCbVBnVkN3MERBQUFBQVFBQUFBWUFBQUFiQUVIcStCVUxDd0VBLy8vLy84aUpBQUJKQUVHQStSVUxCUUVBQUFBREFFSEUrUlVMQVFFQVFkTDVGUXNMQVFELy8vLy82ZThBQUVvQVFlajVGUXNKQWdBQUFBRUFBQUF4QUVHNitoVUxDd0VBLy8vLy85WHZBQUJMQUVIUStoVUxDUUlBQUFBQkFBQUFOQUJCb3ZzVkN3c0JBUC8vLy8vVlJBRUFUUUJCdVBzVkN4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkIvUHNWQ3dJQkFRQkJpdndWQ3dzQkFQLy8vLy9CUkFFQVRnQkJvUHdWQ3hVRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFRZVQ4RlFzQ0FRRUFRZkw4RlFzTEFRRC8vLy8vU0JzQkFFOEFRWWo5RlFzVkJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQXlBRUhNL1JVTEFnRUJBRUhhL1JVTEN3RUEvLy8vLy9zMUFBQlFBRUh3L1JVTERRTUFBQUFDQUFBQUF3QUFBREVBUWJUK0ZRc0NBUUVBUWNMK0ZRc0xBUUQvLy8vL3Fqb0FBRkVBUWRqK0ZRc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFESUFRWnovRlFzQ0FRRUFRYXIvRlFzTEFRRC8vLy8vVmhvQUFGSUFRY0QvRlFzVkJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQXlBRUdFZ0JZTEFnRUJBRUdTZ0JZTEN3RUEvLy8vLzgwNUFBQlRBRUdvZ0JZTERRTUFBQUFDQUFBQUF3QUFBQUVBUWV5QUZnc0NBUUVBUWZxQUZnc2pBUUQvLy8vLzEvRUFBRlFBQUFBQkFBQUErRmtEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZFNCRmdzQ0FRRUFRZUtCRmdzTEFRRC8vLy8vZVNVQkFGWUFRZmlCRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFieUNGZ3NDQVFFQVFjcUNGZ3NyQVFELy8vLy92aklCQUZjQUFBQUJBQUFBL0ZrREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFLUUJCcElNV0N3SUJBUUJCc29NV0N3c0JBUC8vLy8rOU1RRUFXQUJCeUlNV0N4VUZBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQ0VBUVl5RUZnc0NBUUVBUVpxRUZnc3ZBUUQvLy8vL2hqSUJBRmtBQUFBQkFBQUEvRmtEQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQ2tBUWZTRUZnc0NBUUVBUVlLRkZnc3ZBUUQvLy8vL2hURUJBRm9BQUFBQkFBQUEvRmtEQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQ0VBUWR5RkZnc0NBUUVBUWVxRkZnc3JBUUQvLy8vL0JqSUJBRnNBQUFBQkFBQUEvRmtEQUFVQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUtRQkJ4SVlXQ3dJQkFRQkIwb1lXQ3lzQkFQLy8vLzhGTVFFQVhBQUFBQUVBQUFEOFdRTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFoQUVHc2h4WUxBZ0VCQUVHNmh4WUxMd0VBLy8vLy8wWXlBUUJkQUFBQUFRQUFBUHhaQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFwQUVHVWlCWUxBZ0VCQUVHaWlCWUxMd0VBLy8vLy8wVXhBUUJlQUFBQUFRQUFBUHhaQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFoQUVIOGlCWUxBZ0VCQUVHS2lSWUxDd0VBLy8vLy82YlNBQUJmQUVHZ2lSWUxGUVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBS1FCQjVJa1dDd0lCQVFCQjhva1dDeThCQVAvLy8vOEhlQUFBWUFBQUFBRUFBQUQ4V1FNQUJnQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBS1FCQnpJb1dDd0lCQVFCQjJvb1dDeThCQVAvLy8vL1Bkd0FBWVFBQUFBRUFBQUQ4V1FNQUJnQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBS1FCQnRJc1dDd0lCQVFCQndvc1dDd3NCQVAvLy8vOUtRQUVBWWdCQjJJc1dDeFVGQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUNrQVFaeU1GZ3NDQVFFQVFhcU1GZ3NMQVFELy8vLy9QTzhBQUdNQVFjQ01GZ3NSQkFBQUFBRUFBQUFCQUFBQUFRQUFBQ2tBUVpLTkZnc0xBUUQvLy8vL3ppVUJBR1FBUWFpTkZnc05Bd0FBQUFJQUFBQURBQUFBQVFCQjdJMFdDd0lCQVFCQitvMFdDeU1CQVAvLy8vODBQUUFBWlFBQUFBRUFBQUFBV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCMUk0V0N3SUJBUUJCNG80V0N5TUJBUC8vLy8vTGV3QUFaZ0FBQUFFQUFBQUFXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ2SThXQ3dJQkFRQkJ5bzhXQ3ljQkFQLy8vLy9jTWdFQVp3QUFBQUlBQUFBd1dnTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRYVNRRmdzQ0FRRUFRYktRRmdzakFRRC8vLy8vTStNQUFHZ0FBQUFDQUFBQU1Gb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFZeVJGZ3NDQVFFQVFacVJGZ3NuQVFELy8vLy8xakFCQUdrQUFBQUJBQUFBT0ZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSDBrUllMQWdFQkFFR0NraFlMSXdFQS8vLy8veDFTQUFCcUFBQUFBZ0FBQURCYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVIY2toWUxBZ0VCQUVIcWtoWUxJd0VBLy8vLy83OWRBQUJyQUFBQUFnQUFBREJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhFa3hZTEFnRUJBRUhTa3hZTEN3RUEvLy8vLzRWcUFRQnRBRUhva3hZTERRTUFBQUFDQUFBQUF3QUFBQUVBUWF5VUZnc0NBUUVBUWJxVUZnc0xBUUQvLy8vL1ozRUJBRzRBUWRDVUZnc05Bd0FBQUFJQUFBQURBQUFBQVFCQmxKVVdDd0lCQVFCQm9wVVdDd3NCQVAvLy8vLzNxUUVBYndCQnVKVVdDdzBEQUFBQUFnQUFBQU1BQUFBQkFFSDhsUllMQWdFQkFFR0tsaFlMQ3dFQS8vLy8vK3VwQVFCd0FFR2dsaFlMRFFNQUFBQUNBQUFBQXdBQUFBRUFRZVNXRmdzQ0FRRUFRZktXRmdzTEFRRC8vLy8vMlJrQUFIRUFRWWlYRmdzTkF3QUFBQUlBQUFBREFBQUFBUUJCekpjV0N3SUJBUUJCMnBjV0N3c0JBUC8vLy8vaUdRQUFjZ0JCOEpjV0N3MERBQUFBQWdBQUFBTUFBQUFCQUVHMG1CWUxBZ0VCQUVIQ21CWUxDd0VBLy8vLy8rc1pBQUJ6QUVIWW1CWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFaeVpGZ3NDQVFFQVFhcVpGZ3NMQVFELy8vLy9lcmdCQUhRQVFjQ1pGZ3NOQXdBQUFBSUFBQUFEQUFBQUFRQkJoSm9XQ3dJQkFRQkJrcG9XQ3lNQkFQLy8vLzlvYWdFQWRRQUFBQUlBQUFBTVdnTUFBd0FBQUFJQUFBQURBQUFBQVFCQjdKb1dDd0lCQVFCQitwb1dDeU1CQVAvLy8vOTJhZ0VBZGdBQUFBRUFBQUFBV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCMUpzV0N3SUJBUUJCNHBzV0N5TUJBUC8vLy85WWNRRUFkd0FBQUFFQUFBQUFXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ2SndXQ3dJQkFRQkJ5cHdXQ3lNQkFQLy8vLzlKWkFBQWVBQUFBQUlBQUFBTVdnTUFBd0FBQUFJQUFBQURBQUFBQVFCQnBKMFdDd0lCQVFCQnNwMFdDeU1CQVAvLy8vOHhSQUVBZVFBQUFBRUFBQUFBV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCako0V0N3SUJBUUJCbXA0V0N5TUJBUC8vLy84NFpBQUFlZ0FBQUFFQUFBQUFXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkI5SjRXQ3dJQkFRQkJncDhXQ3ljQkFQLy8vLy85TWdBQWV3QUFBQUVBQUFBQVdnTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFCQUFRZHlmRmdzQ0FRRUFRZXFmRmdzTEFRRC8vLy8vUFJnQUFId0FRWUNnRmdzTkF3QUFBQUlBQUFBREFBQUFBUUJCeEtBV0N3SUJBUUJCMHFBV0N3c0JBUC8vLy8vRzhBQUFmZ0JCNktBV0N3MERBQUFBQWdBQUFBTUFBQUFCQUVHc29SWUxBZ0VCQUVHNm9SWUxDd0VBLy8vLy84N3dBQUIvQUVIUW9SWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFaU2lGZ3NDQVFFQVFhS2lGZ3NMQVFELy8vLy9PRDhCQUlBQVFiaWlGZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWZ5aUZnc0NBUUVBUVlxakZnc0xBUUQvLy8vL1ZqOEJBSUVBUWFDakZnc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZVNqRmdzQ0FRRUFRZktqRmdzTEFRRC8vLy8vNmx3QkFJSUFRWWlrRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFjeWtGZ3NDQVFFQVFkcWtGZ3NMQVFELy8vLy83MXdCQUlNQVFmQ2tGZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWJTbEZnc0NBUUVBUWNLbEZnc0xBUUQvLy8vL0Y3MEFBSVFBUWRpbEZnc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWnltRmdzQ0FRRUFRYXFtRmdzTEFRRC8vLy8vSzcwQUFJVUFRY0NtRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFZU25GZ3NDQVFFQVFaS25GZ3NMQVFELy8vLy9VUlVBQUlZQVFhaW5GZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWV5bkZnc0NBUUVBUWZxbkZnc0xBUUQvLy8vL1ZoVUFBSWNBUVpDb0Znc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZFNvRmdzQ0FRRUFRZUtvRmdzTEFRRC8vLy8vV3hVQUFJZ0FRZmlvRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFieXBGZ3NDQVFFQVFjcXBGZ3NMQVFELy8vLy94ekFCQUlrQVFlQ3BGZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWFTcUZnc0NBUUVBUWJLcUZnc0xBUUQvLy8vL3k3d0FBSW9BUWNpcUZnc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWXlyRmdzQ0FRRUFRWnFyRmdzTEFRRC8vLy8vekRBQkFJc0FRYkNyRmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFmU3JGZ3NDQVFFQVFZS3NGZ3NMQVFELy8vLy8wTHdBQUl3QVFaaXNGZ3NSQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWR5c0Znc0NBUUVBUWVxc0Znc0xBUUQvLy8vLzBUQUJBSTBBUVlDdEZnc1JCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRY1N0RmdzQ0FRRUFRZEt0RmdzTEFRRC8vLy8vd0ljQUFJNEFRZWl0RmdzUkJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFheXVGZ3NDQVFFQVFicXVGZ3NuQVFELy8vLy9yb2NBQUk4QUFBQUJBQUFBK0ZrREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR1VyeFlMQWdFQkFFR2lyeFlMSndFQS8vLy8vLzhQQUFDUUFBQUFBUUFBQVBoWkF3QUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkIvSzhXQ3dJQkFRQkJpckFXQ3ljQkFQLy8vLytCYUFBQWtRQUFBQUVBQUFENFdRTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZVN3RmdzQ0FRRUFRZkt3RmdzbkFRRC8vLy8vN1E4QUFKSUFBQUFCQUFBQStGa0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhNc1JZTEFnRUJBRUhhc1JZTEp3RUEvLy8vLzZVNEFBQ1RBQUFBQVFBQUFQaFpBd0FFQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUJCdExJV0N3SUJBUUJCd3JJV0N3c0JBUC8vLy8rWUd3QUFsQUJCMkxJV0N4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkJuTE1XQ3dJQkFRQkJxck1XQ3dzQkFQLy8vLzhRQ1FBQWxRQkJ3TE1XQ3hFRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQmhMUVdDd0lCQVFCQmtyUVdDd3NCQVAvLy8vOGJGQUFBbGdCQnFMUVdDeEVFQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUJCN0xRV0N3SUJBUUJCK3JRV0N3c0JBUC8vLy85ZFBnRUFsd0JCa0xVV0N4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkIxTFVXQ3dJQkFRQkI0clVXQ3dzQkFQLy8vLzlxUGdFQW1BQkIrTFVXQ3hFRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQnZMWVdDd0lCQVFCQnlyWVdDd3NCQVAvLy8vL3lDUUFBbWdCQjRMWVdDdzBEQUFBQUFnQUFBQU1BQUFBQkFFR2t0eFlMQWdFQkFFR3l0eFlMQ3dFQS8vLy8vMzIvQUFDYkFFSEl0eFlMRFFNQUFBQUNBQUFBQXdBQUFBRUFRWXk0RmdzQ0FRRUFRWnE0RmdzTEFRRC8vLy8vUkxvQUFKd0FRYkM0RmdzTkF3QUFBQUlBQUFBREFBQUFBUUJCOUxnV0N3SUJBUUJCZ3JrV0N3c0JBUC8vLy8vTTRBQUFuUUJCbUxrV0N3MERBQUFBQWdBQUFBTUFBQUFCQUVIY3VSWUxBZ0VCQUVIcXVSWUxJd0VBLy8vLy8zWHZBQUNlQUFBQUFRQUFBQUJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhFdWhZTEFnRUJBRUhTdWhZTEl3RUEvLy8vLzFYTEFBQ2ZBQUFBQVFBQUFBQmFBd0FEQUFBQUFnQUFBQU1BQUFBQkFFR3N1eFlMQWdFQkFFRzZ1eFlMSXdFQS8vLy8veWsxQUFDZ0FBQUFBUUFBQUFCYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVHVXZCWUxBZ0VCQUVHaXZCWUxKd0VBLy8vLy81aHlBQUNoQUFBQUFRQUFBQUJhQXdBRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQi9Md1dDd0lCQVFCQmlyMFdDeWNCQUFBRkFRRGZPZ0VBb2dBQUFBRUFBQUFBV2dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFlUzlGZ3NDQVFFQVFmSzlGZ3NuQVFELy8vLy8xVG9CQUtNQUFBQUJBQUFBQUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSE12aFlMQWdFQkFFSGF2aFlMQ3dFQS8vLy8vOExLQUFDa0FFSHd2aFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHMHZ4WUxBZ0VCQUVIQ3Z4WUxDd0VBLy8vLy85ZkpBQUNsQUVIWXZ4WUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdjd0JZTEFnRUJBRUdxd0JZTEN3RUEvLy8vLzJXSUFBQ21BRUhBd0JZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR0V3UllMQWdFQkFFR1N3UllMQ3dFQS8vLy8vMlkxQVFDbkFFR293UllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIc3dSWUxBZ0VCQUVINndSWUxDd0VBLy8vLy80WWJBQUNvQUVHUXdoWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFkVENGZ3NDQVFFQVFlTENGZ3NMQVFELy8vLy81amdBQUtrQVFmakNGZ3NWQlFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFFRzh3eFlMQWdFQkFFSEt3eFlMQ3dFQS8vLy8vL0xLQUFDcUFFSGd3eFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHa3hCWUxBZ0VCQUVHeXhCWUxDd0VBLy8vLy93UEtBQUNyQUVISXhCWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdNeFJZTEFnRUJBRUdheFJZTEN3RUEvLy8vLy95NUFBQ3NBRUd3eFJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSDB4UllMQWdFQkFFR0N4aFlMQ3dFQS8vLy8vd202QUFDdEFFR1l4aFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIY3hoWUxBZ0VCQUVIcXhoWUxDd0VBLy8vLy80YktBQUN1QUVHQXh4WUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhFeHhZTEFnRUJBRUhTeHhZTEN3RUEvLy8vLzVqS0FBQ3ZBRUhveHhZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR3N5QllMQWdFQkFFRzZ5QllMQ3dFQS8vLy8vOGE1QUFDd0FFSFF5QllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHVXlSWUxBZ0VCQUVHaXlSWUxDd0VBLy8vLy85QzVBQUN4QUVHNHlSWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUg4eVJZTEFnRUJBRUdLeWhZTEN3RUEvLy8vL3p6S0FBQ3lBRUdneWhZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSGt5aFlMQWdFQkFFSHl5aFlMQ3dFQS8vLy8vMHZLQUFDekFFR0l5eFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVITXl4WUxBZ0VCQUVIYXl4WUxDd0VBLy8vLy8raktBQUMwQUVId3l4WUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUcwekJZTEFnRUJBRUhDekJZTEN3RUEvLy8vLzl6S0FBQzFBRUhZekJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR2N6UllMQWdFQkFFR3F6UllMQ3dFQS8vLy8vL2JKQUFDMkFFSEF6UllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHRXpoWUxBZ0VCQUVHU3poWUxDd0VBLy8vLy8rZkpBQUMzQUVHb3poWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhzemhZTEFnRUJBRUg2emhZTEN3RUEvLy8vLzdtNUFBQzRBRUdRenhZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSFV6eFlMQWdFQkFFSGl6eFlMQ3dFQS8vLy8vNnE1QUFDNUFFSDR6eFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHODBCWUxBZ0VCQUVISzBCWUxDd0VBLy8vLy8reTVBQUM2QUVIZzBCWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdrMFJZTEFnRUJBRUd5MFJZTEN3RUEvLy8vLzlxNUFBQzdBRUhJMFJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR00waFlMQWdFQkFFR2EwaFlMQ3dFQS8vLy8veXJLQUFDOEFFR3cwaFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIMDBoWUxBZ0VCQUVHQzB4WUxDd0VBLy8vLy94YktBQUM5QUVHWTB4WUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhjMHhZTEFnRUJBRUhxMHhZTEN3RUEvLy8vLzNIS0FBQytBRUdBMUJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSEUxQllMQWdFQkFFSFMxQllMQ3dFQS8vLy8vMXJLQUFDL0FFSG8xQllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHczFSWUxBZ0VCQUVHNjFSWUxDd0VBLy8vLy80L0xBQURDQUVIUTFSWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdVMWhZTEFnRUJBRUdpMWhZTEN3RUEvLy8vLzZGREFRRERBRUc0MWhZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSDgxaFlMQWdFQkFFR0sxeFlMQ3dFQS8vLy8vNkhMQUFERUFFR2cxeFlMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIazF4WUxBZ0VCQUVIeTF4WUxDd0VBLy8vLy8zNklBQURGQUVHSTJCWUxFUVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhNMkJZTEFnRUJBRUhhMkJZTEN3RUEvLy8vLzJCcUFBREdBRUh3MkJZTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFRzAyUllMQWdFQkFFSEMyUllMQ3dFQS8vLy8vNEExQVFESEFFSFkyUllMRVFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHYzJoWUxBZ0VCQUVHcTJoWUxDd0VBLy8vLy80MGJBQURJQUVIQTJoWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFZVGJGZ3NDQVFFQVFaTGJGZ3N2QVFELy8vLy9aaG9BQU1rQUFBQUNBQUFBUEZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFlemJGZ3NDQVFFQVFmcmJGZ3NyQVFELy8vLy96RG9BQU1vQUFBQUNBQUFBUEZvREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCMU53V0N3SUJBUUJCNHR3V0N5c0JBUC8vLy8rN09nQUF5d0FBQUFJQUFBQThXZ01BQlFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFFRzgzUllMQWdFQkFFSEszUllMSXdFQS8vLy8vM3p4QUFETUFBQUFBZ0FBQUR4YUF3QURBQUFBQWdBQUFBTUFBQUFCQUVHazNoWUxBZ0VCQUVHeTNoWUxDd0VBLy8vLy81WWNBQUROQUVISTNoWUxEUU1BQUFBQ0FBQUFBd0FBQUFFQVFZemZGZ3NDQVFFQVFacmZGZ3NqQVFELy8vLy9IUklBQU04QUFBQUJBQUFBL0ZrREFBTUFBQUFDQUFBQUF3QUFBQUVBUWZUZkZnc0NBUUVBUVlMZ0Znc2pBUUQvLy8vL0JRd0FBTkFBQUFBQkFBQUEvRmtEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZHpnRmdzQ0FRRUFRZXJnRmdzakFRRC8vLy8venRFQUFORUFBQUFCQUFBQS9Ga0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFjVGhGZ3NDQVFFQVFkTGhGZ3NqQVFELy8vLy84aGNCQU5JQUFBQUJBQUFBUkZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWF6aUZnc0NBUUVBUWJyaUZnc2pBUUQvLy8vLzRCY0JBTk1BQUFBQkFBQUFSRm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRWlRqRmdzQ0FRRUFRYUxqRmdzakFRRC8vLy8vQmhnQkFOUUFBQUFCQUFBQVJGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFmempGZ3NDQVFFQVFZcmtGZ3NqQVFELy8vLy9xUEVBQU5VQUFBQUJBQUFBUkZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWVUa0Znc0NBUUVBUWZMa0Znc2pBUUQvLy8vL2t2RUFBTllBQUFBQkFBQUFSRm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRY3psRmdzQ0FRRUFRZHJsRmdzakFRRC8vLy8vd1BFQUFOY0FBQUFCQUFBQVJGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFiVG1GZ3NDQVFFQVFjTG1GZ3NWQVFELy8vLy95UkFBQU5vQUFBQUJBQUFBU0ZvREFFR3E1eFlMRlFFQS8vLy8vd0hsQUFEYkFBQUFBUUFBQUVoYUF3QkJrdWdXQ3hzQkFQLy8vLy9VRUFBQTNBQUFBQUVBQUFCTVdnTUFBUUFBQUFFQVFmcm9GZ3NiQVFELy8vLy83dVFBQU4wQUFBQUJBQUFBVEZvREFBRUFBQUFCQUVIaTZSWUxDd0VBLy8vLy96WjFBQURnQUVINDZSWUxEUU1BQUFBRkFBQUFCUUFBQUFRQVFjcnFGZ3NMQVFELy8vLy9GM1VBQU9FQVFlRHFGZ3NKQWdBQUFBVUFBQUFFQUVHeTZ4WUxDd0VBLy8vLy85ay9BUURqQUVISTZ4WUxGUVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUZBQUFBQkFCQmpPd1dDd0lCQVFCQm11d1dDd3NCQVAvLy8vK085UUFBNUFCQnNPd1dDeEVFQUFBQUFRQUFBQVVBQUFBRUFBQUFBUUJCZ3UwV0N3c0JBUC8vLy84a0lBRUE1UUJCbU8wV0N4a0dBQUFBQWdBQUFBTUFBQUFCQUFBQUJRQUFBQVFBQUFBQkFFSGM3UllMQWdFQkFFSHE3UllMQ3dFQS8vLy8vLzhmQVFEbUFFR0E3aFlMSVFnQUFBQUNBQUFBQXdBQUFBRUFBQUFGQUFBQUJBQUFBQVFBQUFBQkFBQUFBUUJCeE80V0N3SUJBUUJCMHU0V0N6Y0JBUC8vLy8vZXp3QUE1d0FBQUFFQUFBQUFXZ01BQ0FBQUFBSUFBQUFEQUFBQUFRQUFBQVVBQUFBRUFBQUFCQUFBQUFFQUFBQUJBRUdzN3hZTEFnRUJBRUc2N3hZTEN3RUFBQU1CQU5rcEFBRG9BRUhRN3hZTEZRVUFBQUFDQUFBQUF3QUFBQUVBQUFBRkFBQUFCQUJCbFBBV0N3SUJBUUJCb3ZBV0N3c0JBUC8vLy8vMEtRQUE2UUJCdVBBV0N4VUZBQUFBQWdBQUFBTUFBQUFCQUFBQUJRQUFBQVFBUWZ6d0Znc0NBUUVBUVlyeEZnc0xBUUQvLy8vL01qOEJBT29BUWFEeEZnc1pCZ0FBQUFJQUFBQURBQUFBQVFBQUFBVUFBQUFFQUFBQUFRQkI1UEVXQ3dJQkFRQkI4dkVXQ3dzQkFQLy8vLy9rWEFFQTZ3QkJpUElXQ3hrR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQlFBQUFBUUFBQUFCQUVITThoWUxBZ0VCQUVIYThoWUxDd0VBLy8vLy83KzRBQURzQUVIdzhoWUxHUVlBQUFBQ0FBQUFBd0FBQUFFQUFBQUZBQUFBQkFBQUFBRUFRYlR6RmdzQ0FRRUFRY0x6RmdzTEFRRC8vLy8vbHJnQUFPMEFRZGp6RmdzWkJnQUFBQUlBQUFBREFBQUFBUUFBQUFVQUFBQUVBQUFBQVFCQm5QUVdDd0lCQVFCQnF2UVdDd3NCQVAvLy8vOHNFd0FBN2dCQndQUVdDeGtHQUFBQUFnQUFBQU1BQUFBQkFBQUFCUUFBQUFRQUFBQUJBRUdFOVJZTEFnRUJBRUdTOVJZTEN3RUEvLy8vL3dNVEFBRHZBRUdvOVJZTEdRWUFBQUFDQUFBQUF3QUFBQUVBQUFBRkFBQUFCQUFBQUFFQVFlejFGZ3NDQVFFQVFmcjFGZ3NMQVFELy8vLy9sVFVCQVBBQVFaRDJGZ3NaQmdBQUFBSUFBQUFEQUFBQUFRQUFBQVVBQUFBRUFBQUFBUUJCMVBZV0N3SUJBUUJCNHZZV0N3c0JBUC8vLy8rUmlBQUE4UUJCK1BZV0N4a0dBQUFBQWdBQUFBTUFBQUFCQUFBQUJRQUFBQVFBQUFBQkFFRzg5eFlMQWdFQkFFSEs5eFlMQ3dFQS8vLy8vNDlxQUFEeUFFSGc5eFlMR1FZQUFBQUNBQUFBQXdBQUFBRUFBQUFGQUFBQUJBQUFBQUVBUWFUNEZnc0NBUUVBUWJMNEZnc0xBUUQvLy8vL3E5QUFBUFVBUWNqNEZnc05Bd0FBQUFJQUFBQURBQUFBTVFCQmpQa1dDd0lCQVFCQm12a1dDd3NCQVAvLy8vL21Id0VBOWdCQnNQa1dDdzBEQUFBQUFRQUFBQUVBQUFBa0FFR0MraFlMQ3dFQS8vLy8vL0FmQVFEM0FFR1kraFlMQ1FJQUFBQUJBQUFBSXdCQjZ2b1dDd3NCQVAvLy8vOUJ5UUFBK0FCQmdQc1dDd1VCQUFBQUF3QkJ4UHNXQ3dFQkFFSFMreFlMQ3dFQS8vLy8vLzdTQUFENUFFSG8reFlMQlFFQUFBQUJBRUc2L0JZTEN3RUEvLy8vLzBQTEFBRDZBRUhRL0JZTEVRUUFBQUFCQUFBQUFRQUFBQUVBQUFBeUFFR2kvUllMQ3dFQS8vLy8vMXZTQUFEN0FFRzQvUllMRFFNQUFBQUJBQUFBQVFBQUFETUFRWXIrRmdzVkFRRC8vLy8vekw0QUFQd0FBQUFCQUFBQS9Ga0RBRUh5L2hZTEN3RUEvLy8vLzNxaEFBRDlBRUhhL3hZTEN3RUEvLy8vLzYvcUFBRCtBRUh3L3hZTEJRRUFBQUFCQUVIQ2dCY0xDd0VBLy8vLy8vTWVBUUQvQUVHcWdSY0xId0VBLy8vLy8zb2FBQUFBQVFBQUFRQUFBQUJhQXdBQ0FBQUFBUUFBQUFZQVFaS0NGd3NmQVFELy8vLy9nNWtBQUFFQkFBQUJBQUFBQUZvREFBSUFBQUFCQUFBQUJnQkIrb0lYQ3pjQkFQLy8vLyt5Q1FBQUF3RUFBQUVBQUFBQVdnTUFDQUFBQUFJQUFBQURBQUFBQlFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFSFVneGNMQWdFQkFFSGlneGNMSXdFQS8vLy8vMm8vQUFBRUFRQUFBUUFBQUFCYUF3QURBQUFBQlFBQUFBRUFBQUFCQUVIS2hCY0xKd0VBLy8vLy8yVy9BQUFGQVFBQUFRQUFBRkJhQXdBRUFBQUFBZ0FBQUFNQUFBQUZBQUFBQVFCQnBJVVhDd0lCQVFCQnNvVVhDeWNCQVAvLy8vL0dDUUFBQmdFQUFBRUFBQUJRV2dNQUJBQUFBQUlBQUFBREFBQUFCUUFBQUFFQVFZeUdGd3NDQVFFQVFacUdGd3NyQVFELy8vLy9SUmdBQUFjQkFBQUJBQUFBVUZvREFBVUFBQUFDQUFBQUF3QUFBQVVBQUFBQkFBQUFBUUJCOUlZWEN3SUJBUUJCZ29jWEN5c0JBUC8vLy84VVB3RUFDQUVBQUFFQUFBQlFXZ01BQlFBQUFBSUFBQUFEQUFBQUJRQUFBQjBBQUFBQkFFSGNoeGNMQWdFQkFFSHFoeGNMS3dFQS8vLy8vejAvQVFBSkFRQUFBUUFBQUZCYUF3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBUWNTSUZ3c0NBUUVBUWRLSUZ3c3JBUUQvLy8vL3o3Z0FBQW9CQUFBQkFBQUFVRm9EQUFVQUFBQUNBQUFBQXdBQUFBVUFBQUFkQUFBQUFRQkJySWtYQ3dJQkFRQkJ1b2tYQ3lzQkFQLy8vLzk0dUFBQUN3RUFBQUVBQUFCUVdnTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUVHVWloY0xBZ0VCQUVHaWloY0xLd0VBLy8vLy82RzRBQUFNQVFBQUFRQUFBRkJhQXdBRkFBQUFBZ0FBQUFNQUFBQUZBQUFBSFFBQUFBRUFRZnlLRndzQ0FRRUFRWXFMRndzckFRRC8vLy8vUEJNQUFBMEJBQUFCQUFBQVVGb0RBQVVBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFCQjVJc1hDd0lCQVFCQjhvc1hDeXNCQVAvLy8vL2xFZ0FBRGdFQUFBRUFBQUJRV2dNQUJRQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBRUhNakJjTEFnRUJBRUhhakJjTEt3RUEvLy8vL3c0VEFBQVBBUUFBQVFBQUFGQmFBd0FGQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQVFiU05Gd3NDQVFFQVFjS05Gd3N2QVFELy8vLy83UllCQUJJQkFBQUJBQUFBQ0ZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFaeU9Gd3NDQVFFQVFhcU9Gd3N2QVFELy8vLy92aFlCQUJNQkFBQUJBQUFBQ0ZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFZU1BGd3NDQVFFQVFaS1BGd3MzQVFELy8vLy81UllCQUJRQkFBQUJBQUFBQ0ZvREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQjdJOFhDd0lCQVFCQitvOFhDemNCQVAvLy8vKzJGZ0VBRlFFQUFBRUFBQUFJV2dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIVWtCY0xBZ0VCQUVIaWtCY0xMd0VBLy8vLy93OUZBQUFXQVFBQUFRQUFBQWhhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHOGtSY0xBZ0VCQUVIS2tSY0xMd0VBLy8vLy8vSkVBQUFYQVFBQUFRQUFBQWhhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHa2toY0xBZ0VCQUVHeWtoY0xKd0VBLy8vLy85WVdBUUFZQVFBQUFRQUFBQWhhQXdBRUFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQm1wTVhDeWNCQVAvLy8vK21GZ0VBR1FFQUFBRUFBQUFJV2dNQUJBQUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFZS1VGd3NqQVFELy8vLy9lRUVCQUJvQkFBQUJBQUFBQ0ZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWR5VUZ3c0NBUUVBUWVxVUZ3c3JBUUQvLy8vLzIwUUFBQnNCQUFBQkFBQUFDRm9EQUFVQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQkJ4SlVYQ3dJQkFRQkIwcFVYQ3lzQkFQLy8vLy9KUkFBQUhBRUFBQUVBQUFBSVdnTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFCQUVHc2xoY0xBZ0VCQUVHNmxoY0xNd0VBLy8vLy93cEZBQUFkQVFBQUFRQUFBQWhhQXdBSEFBQUFBZ0FBQUFNQUFBQUZBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQkJsSmNYQ3dJQkFRQkJvcGNYQ3pNQkFQLy8vLy90UkFBQUhnRUFBQUVBQUFBSVdnTUFCd0FBQUFJQUFBQURBQUFBQlFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUWZ5WEZ3c0NBUUVBUVlxWUZ3c3JBUUQvLy8vLzBSWUJBQjhCQUFBQkFBQUFDRm9EQUFVQUFBQUZBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQkI4cGdYQ3lzQkFQLy8vLytoRmdFQUlBRUFBQUVBQUFBSVdnTUFCUUFBQUFVQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIYW1SY0xMd0VBLy8vLy80dDBBQUFqQVFBQUFRQUFBQVJhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHMG1oY0xBZ0VCQUVIQ21oY0xTd0VBLy8vLy8wL0FBQUFrQVFBQUFRQUFBQVJhQXdBTkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBTVFCQm5Kc1hDd0lCQVFCQnFwc1hDek1CQVAvLy8vL0NIQUFBSlFFQUFBRUFBQUFFV2dNQUJ3QUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRWVNjRndzQ0FRRUFRWktjRndzekFRRC8vLy8vV2VRQUFDWUJBQUFCQUFBQUJGb0RBQWNBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIc25CY0xBZ0VCQUVINm5CY0xMd0VBLy8vLy96SGtBQUFuQVFBQUFRQUFBQVJhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIVW5SY0xBZ0VCQUVIaW5SY0xMd0VBLy8vLy8vY2FBUUFvQVFBQUFRQUFBQVJhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHOG5oY0xBZ0VCQUVIS25oY0xHd0VBLy8vLy8vd2ZBQUFwQVFBQUFRQUFBQVJhQXdBQkFBQUFBUUJCc3A4WEN4c0JBUC8vLy84SUlBQUFLZ0VBQUFFQUFBQUVXZ01BQVFBQUFBRUFRWnFnRndzZkFRRC8vLy8vN0I4QUFDc0JBQUFCQUFBQUJGb0RBQUlBQUFBQ0FBQUFBd0JCOUtBWEN3SUJBUUJCZ3FFWEN5TUJBUC8vLy84dklBQUFMQUVBQUFFQUFBQUVXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkIzS0VYQ3dJQkFRQkI2cUVYQ3g4QkFQLy8vLzlsUGdBQUxRRUFBQUVBQUFBRVdnTUFBZ0FBQUFFQUFBQUJBRUhTb2hjTEl3RUEvLy8vLzMrZ0FBQXVBUUFBQVFBQUFBUmFBd0FEQUFBQUFRQUFBQUVBQUFBQkFFRzZveGNMSHdFQS8vLy8vekRyQUFBdkFRQUFBUUFBQUFSYUF3QUNBQUFBQWdBQUFBTUFRWlNrRndzQ0FRRUFRYUtrRndzckFRRC8vLy8vWHlBQkFEQUJBQUFCQUFBQUJGb0RBQVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFCQi9LUVhDd0lCQVFCQmlxVVhDeXNCQVAvLy8vK2hNZ0VBTVFFQUFBRUFBQUJVV2dNQUJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQXBBRUhrcFJjTEFnRUJBRUh5cFJjTEt3RUEvLy8vLzZBeEFRQXlBUUFBQVFBQUFGUmFBd0FGQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUNFQVFjeW1Gd3NDQVFFQVFkcW1Gd3N2QVFELy8vLy9aVElCQURNQkFBQUJBQUFBVkZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUNrQVFiU25Gd3NDQVFFQVFjS25Gd3N2QVFELy8vLy9aREVCQURRQkFBQUJBQUFBVkZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUNFQVFaeW9Gd3NDQVFFQVFhcW9Gd3NyQVFELy8vLy81VEVCQURVQkFBQUJBQUFBVkZvREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFLUUJCaEtrWEN3SUJBUUJCa0trWEN5My8vLy8vLy8vLy8rUXdBUUEyQVFBQUFRQUFBRlJhQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFDRUFRZXlwRndzQ0FRRUFRZmlwRndzeC8vLy8vLy8vLy84aE1nRUFOd0VBQUFFQUFBQlVXZ01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFLUUJCMUtvWEN3SUJBUUJCNEtvWEN6SC8vLy8vLy8vLy95QXhBUUE0QVFBQUFRQUFBRlJhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFoQUVHOHF4Y0xBZ0VCQUVISXF4Y0xMZi8vLy8vLy8vLy9qOUlBQURrQkFBQUJBQUFBVkZvREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFLUUJCcEt3WEN3SUJBUUJCc3F3WEN5OEJBUC8vLy8vZmR3QUFPZ0VBQUFFQUFBQlVXZ01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFLUUJCakswWEN3SUJBUUJCbXEwWEN5OEJBUC8vLy85MGR3QUFPd0VBQUFFQUFBQlVXZ01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFLUUJCOUswWEN3SUJBUUJCZ3E0WEN5TUJBUC8vLy84RktnQUFQQUVBQUFFQUFBQlVXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkIzSzRYQ3dJQkFRQkI2cTRYQ3d3QkFQLy8vLys3RndFQVBRRUFRZEt2RndzckFRRC8vLy8vUWpVQUFENEJBQUFCQUFBQUFGb0RBQVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUZBQUFBQkFCQnJMQVhDd0lCQVFCQnVyQVhDeU1CQVAvLy8vLzlod0FBUHdFQUFBRUFBQUFBV2dNQUF3QUFBQUVBQUFBRkFBQUFCQUJCb3JFWEN5c0JBUC8vLy84NlFBRUFRQUVBQUFFQUFBQlVXZ01BQlFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBcEFFSDhzUmNMQWdFQkFFR0tzaGNMSXdFQS8vLy8vNzNoQUFCQkFRQUFBUUFBQUJoYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVIa3NoY0xBZ0VCQUVIeHNoY0xIQUVCQVAvLy8vOWVJUUVBUWdFQUFBRUFBQUJZV2dNQUFRQUFBQU1BUWN5ekZ3c0JBUUJCMmJNWEN5d0JBUUQvLy8vL01DRUJBRU1CQUFBQkFBQUFXRm9EQUFVQUFBQUNBQUFBQXdBQUFBWUFBQUFHQUFBQUJnQkJ0TFFYQ3dJQkFRQkJ3YlFYQ3lRQkFRRC8vLy8vUkNFQkFFUUJBQUFCQUFBQVdGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFaeTFGd3NDQVFFQVFhbTFGd3MwQVFFQS8vLy8vNThjQUFCRkFRQUFBUUFBQUZ4YUF3QUhBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCaExZWEN3SUJBUUJCa2JZWEN6QUJBUUQvLy8vL3BFMEFBRVlCQUFBQkFBQUFYRm9EQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUWV5MkZ3c0NBUUVBUWZtMkZ3c2NBUUVBLy8vLy84QjFBQUJIQVFBQUFRQUFBR0JhQXdBQkFBQUFBd0JCMUxjWEN3RUJBRUhodHhjTEpBRUJBUC8vLy8vejRnQUFTQUVBQUFFQUFBQmdXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ2TGdYQ3dJQkFRQkJ5YmdYQ3lRQkFRRC8vLy8vVkhVQUFFa0JBQUFCQUFBQVlGb0RBQU1BQUFBQkFBQUFCUUFBQUFRQVFiRzVGd3NOQVFFQS8vLy8vNUE1QVFCS0FRQkJ5TGtYQ3dVQkFBQUFDZ0JCbWJvWEN3MEJBUUQvLy8vL1BrSUJBRXNCQUVHd3VoY0xDUUlBQUFBQkFBQUFEd0JCZ2JzWEN3MENBUUQvLy8vL0trSUJBRXdCQUVHWXV4Y0xDUUlBQUFBQkFBQUFHd0JCNExzWEN5MEJBQUFBWkZvREFBQUNBUUQvLy8vLzdUZ0FBRTBCQUFBQkFBQUFhRm9EQUFNQUFBQUNBQUFBQXdBQUFBVUFRY1M4RndzQ0FRRUFRZEc4Rndzb0F3RUEvLy8vLzI2L0FBQk9BUUFBQVFBQUFHeGFBd0FFQUFBQUFnQUFBQU1BQUFBRkFBQUFBUUJCckwwWEN3SUJBUUJCdWIwWEN5Z0RBUUQvLy8vL3p3a0FBRThCQUFBQkFBQUFiRm9EQUFRQUFBQUNBQUFBQXdBQUFBVUFBQUFCQUVHVXZoY0xBZ0VCQUVHaHZoY0xLQU1CQVAvLy8vK3F5Z0FBVUFFQUFBRUFBQUJzV2dNQUJBQUFBQUlBQUFBREFBQUFCUUFBQUFFQVFmeStGd3NDQVFFQVFZbS9Gd3NzQXdFQS8vLy8vMVFZQUFCUkFRQUFBUUFBQUhCYUF3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUFRQUFBQUVBUWVTL0Z3c0NBUUVBUWZHL0Z3c29Bd0VBLy8vLy85OFdBQUJTQVFBQUFRQUFBSEJhQXdBRUFBQUFBZ0FBQUFNQUFBQUZBQUFBQVFCQnpNQVhDd0lCQVFCQjJjQVhDeWdEQVFELy8vLy9QaHNBQUZNQkFBQUJBQUFBY0ZvREFBUUFBQUFDQUFBQUF3QUFBQVVBQUFBQkFFRzB3UmNMQWdFQkFFSEJ3UmNMS0FNQkFQLy8vLzlVR3dBQVZBRUFBQUVBQUFCd1dnTUFCQUFBQUFJQUFBQURBQUFBQlFBQUFBRUFRWnpDRndzQ0FRRUFRYW5DRndzc0F3RUEvLy8vLzRnNkFBQlZBUUFBQVFBQUFIQmFBd0FGQUFBQUFnQUFBQU1BQUFBRkFBQUFBUUFBQUFFQVFZVERGd3NDQVFFQVFaSERGd3NzQXdFQS8vLy8vNEVjQUFCV0FRQUFBUUFBQUhCYUF3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBUWV6REZ3c0NBUUVBUWZuREZ3c29Bd0VBLy8vLy8xMnZBUUJYQVFBQUFRQUFBSEJhQXdBRUFBQUFBZ0FBQUFNQUFBQUZBQUFBQVFCQjFNUVhDd0lCQVFCQjRjUVhDeWdEQVFELy8vLy9RSzhCQUZnQkFBQUJBQUFBY0ZvREFBUUFBQUFDQUFBQUF3QUFBQVVBQUFBQkFFRzh4UmNMQWdFQkFFSEp4UmNMTEFNQkFQLy8vLzlXR3dFQVdRRUFBQUVBQUFCMFdnTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFBRUFBQUFCQUVHa3hoY0xBZ0VCQUVHeHhoY0xMQU1CQVAvLy8vOXJhZ0FBV2dFQUFBRUFBQUIwV2dNQUJRQUFBQUlBQUFBREFBQUFCUUFBQUFFQUFBQUJBRUdNeHhjTEFnRUJBRUdaeHhjTExBTUJBUC8vLy84c213QUFXd0VBQUFFQUFBQjRXZ01BQlFBQUFBSUFBQUFEQUFBQUJRQUFBQUVBQUFBQkFFSDB4eGNMQWdFQkFFR0J5QmNMTEFNQkFQLy8vLzlLb1FBQVhBRUFBQUVBQUFCNFdnTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFBRUFBQUFCQUVIY3lCY0xBZ0VCQUVIcHlCY0xNQU1CQVAvLy8vOGVQd0VBWFFFQUFBTUFBQUI4V2dNQUJnQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBQUFBS0FCQnhNa1hDd0lCQVFCQjBja1hDekFEQVFELy8vLy9SejhCQUY0QkFBQURBQUFBZkZvREFBWUFBQUFDQUFBQUF3QUFBQVVBQUFBZEFBQUFBUUFBQUNnQVFhektGd3NDQVFFQVFibktGd3N3QXdFQS8vLy8vd2k5QUFCZkFRQUFBd0FBQUh4YUF3QUdBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBQUFBb0FFR1V5eGNMQWdFQkFFR2h5eGNMTUFNQkFQLy8vLzhjdlFBQVlBRUFBQU1BQUFCOFdnTUFCZ0FBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUFBQUtBQkIvTXNYQ3dJQkFRQkJpY3dYQ3pBREFRRC8vLy8vcTdnQUFHRUJBQUFEQUFBQWZGb0RBQVlBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFBQUFDZ0FRZVRNRndzQ0FRRUFRZkhNRndzd0F3RUEvLy8vLzRLNEFBQmlBUUFBQXdBQUFIeGFBd0FHQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQUFBQW9BRUhNelJjTEFnRUJBRUhaelJjTE1BTUJBUC8vLy8vWnVBQUFZd0VBQUFNQUFBQjhXZ01BQmdBQUFBSUFBQUFEQUFBQUJRQUFBQjBBQUFBQkFBQUFLQUJCdE00WEN3SUJBUUJCd2M0WEN6QURBUUQvLy8vL0dCTUFBR1FCQUFBREFBQUFmRm9EQUFZQUFBQUNBQUFBQXdBQUFBVUFBQUFkQUFBQUFRQUFBQ2dBUVp6UEZ3c0NBUUVBUWFuUEZ3c3dBd0VBLy8vLy8rOFNBQUJsQVFBQUF3QUFBSHhhQXdBR0FBQUFBZ0FBQUFNQUFBQUZBQUFBSFFBQUFBRUFBQUFvQUVHRTBCY0xBZ0VCQUVHUjBCY0xNQU1CQVAvLy8vOUdFd0FBWmdFQUFBTUFBQUI4V2dNQUJnQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBQUFBS0FCQjdOQVhDd0lCQVFCQitkQVhDekFEQVFELy8vLy9jVFVCQUdjQkFBQURBQUFBZkZvREFBWUFBQUFDQUFBQUF3QUFBQVVBQUFBZEFBQUFBUUFBQUNnQVFkVFJGd3NDQVFFQVFlSFJGd3N3QXdFQS8vLy8vMitJQUFCb0FRQUFBd0FBQUh4YUF3QUdBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBQUFBb0FFRzgwaGNMQWdFQkFFSEowaGNMTUFNQkFQLy8vLzlSYWdBQWFRRUFBQU1BQUFCOFdnTUFCZ0FBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUFBQUtBQkJwTk1YQ3dJQkFRQkJzZE1YQ3pBREFRRC8vLy8vVnpVQkFHb0JBQUFEQUFBQWZGb0RBQVlBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFBQUFDZ0FRWXpVRndzQ0FRRUFRWm5VRndzd0F3RUEvLy8vLzFhSUFBQnJBUUFBQXdBQUFIeGFBd0FHQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQUFBQW9BRUgwMUJjTEFnRUJBRUdCMVJjTE1BTUJBUC8vLy84M2FnQUFiQUVBQUFNQUFBQjhXZ01BQmdBQUFBSUFBQUFEQUFBQUJRQUFBQjBBQUFBQkFBQUFLQUJCM05VWEN3SUJBUUJCNmRVWEN5d0RBUUQvLy8vL2JSZ0FBRzBCQUFBQkFBQUFpRm9EQUFVQUFBQUNBQUFBQXdBQUFBVUFBQUFCQUFBQUFRQkJ4TllYQ3dJQkFRQkIwZFlYQ3l3REFRRC8vLy8vMDVvQUFHNEJBQUFCQUFBQWlGb0RBQVVBQUFBQ0FBQUFBd0FBQUFVQUFBQUJBQUFBQVFCQnJOY1hDd0lCQVFCQnVkY1hDdzBEQVFELy8vLy9nOHNBQUpBQkFFSFExeGNMRFFNQUFBQUNBQUFBQXdBQUFBRUFRWlRZRndzQ0FRRUFRYUhZRndzTkJBRUEvLy8vL3czS0FBQ1JBUUJCdU5nWEN4RUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkIvTmdYQ3dJQkFRQkJpZGtYQ3cwRUFRRC8vLy8veThrQUFKSUJBRUdnMlJjTEVRUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSGsyUmNMQWdFQkFFSHgyUmNMS0FRQkFQLy8vLzhLNFFBQWt3RUFBQU1BQUFDTVdnTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRY3phRndzQ0FRRUFRZG5hRndzV0JBRUEvLy8vLzBhd0FBQkFFUUFBQVFBQUFQeFpBd0JCdU5zWEN5MEJBQUFBbUZvREFBQUdBUUQvLy8vLy9uSUJBRVVSQUFBQkFBQUFuRm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRWnpjRndzeEFRRUFBQUVBQUFDZ1dnTUEvLy8vLy8vLy8vOGVkd0VBUmhFQUFBRUFBQUNjV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCaE4wWEN6RUJBUUFBQVFBQUFLQmFBd0QvLy8vLy8vLy8vd040QVFCTUVRQUFBUUFBQUtSYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVIczNSY0xNUUVCQUFBQkFBQUFxRm9EQVAvLy8vLy8vLy8vMm5FQkFFMFJBQUFCQUFBQXBGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFkVGVGd3N4QVFFQUFBRUFBQUNvV2dNQS8vLy8vLy8vLy85N2VBRUFUaEVBQUFFQUFBQ2tXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ2TjhYQ3owQkFRQUFBUUFBQUtoYUF3RC8vLy8vLy8vLy94QjZBUUJQRVFBQUFRQUFBS3hhQXdBR0FBQUFBZ0FBQUFNQUFBQUZBQUFBQVFBQUFBRUFBQUFvQUVHazRCY0xBZ0VCQUVHdzRCY0xLZi8vLy8vLy8vLy9PWGNCQUZBUkFBQUJBQUFBbkZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR000UmNMVVFFQkFBQUJBQUFBb0ZvREFQLy8vLy8vLy8vL0NISUJBRjBSQUFBQkFBQUFzRm9EQUFzQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQitPRVhDeWtCQUFBQXRGb0RBUC8vLy8vLy8vLy9BbndCQUY0UkFBQUJBQUFBc0ZvREFBSUFBQUFCQUFBQUFRQkI0T0lYQ3kwQkFBQUF0Rm9EQVAvLy8vLy8vLy8vYlhvQkFGOFJBQUFDQUFBQXVGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFjVGpGd3NqQVFFQUFBSUFBQURBV2dNQS8vLy8vLy8vLy8rSmRnRUFZQkVBQUFFQUFBQ3dXZ01BUWJEa0Z3c2ZBUUFBQUxSYUF3RC8vLy8vLy8vLy8vaHhBUUJoRVFBQUFRQUFBTEJhQXdCQm1PVVhDelVCQUFBQXRGb0RBUC8vLy8vLy8vLy9seHNBQUdJUkFBQUJBQUFBeUZvREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFTUUJCL09VWEN3SUJBUUJCaWVZWEN5d0dBUUQvLy8vL0dYTUJBR0lSQUFBQkFBQUF6Rm9EQUFVQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQVNRQkI1T1lYQ3prQkFRQUFBUUFBQU5CYUF3QUFCZ0VBLy8vLy81SWJBQUJqRVFBQUFRQUFBTWhhQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFFa0FRY3puRndzQ0FRRUFRZG5uRndzc0JnRUEvLy8vL3hGekFRQmpFUUFBQVFBQUFNeGFBd0FGQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUVrQVFiVG9Gd3M1QVFFQUFBRUFBQURRV2dNQUFBWUJBUC8vLy8rUkd3QUFaQkVBQUFFQUFBRElXZ01BQlFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFCSkFFR2M2UmNMQWdFQkFFR3A2UmNMTEFZQkFQLy8vLzhRY3dFQVpCRUFBQUVBQUFETVdnTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUJKQUVHRTZoY0xQUUVCQUFBQkFBQUEwRm9EQUFBR0FRRC8vLy8vd0QwQUFHVVJBQUFCQUFBQXlGb0RBQVlBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFFa0FRZXpxRndzQ0FRRUFRZm5xRndzd0JnRUEvLy8vLzE1MEFRQmxFUUFBQVFBQUFNeGFBd0FHQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUFFQUFBQkpBRUhVNnhjTFBRRUJBQUFCQUFBQTBGb0RBQUFHQVFELy8vLy90VDBBQUdZUkFBQUJBQUFBeUZvREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUVrQVFienNGd3NDQVFFQVFjbnNGd3N3QmdFQS8vLy8vMUIwQVFCbUVRQUFBUUFBQU14YUF3QUdBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFCSkFFR2s3UmNMUFFFQkFBQUJBQUFBMEZvREFBQUdBUUQvLy8vL3REMEFBR2NSQUFBQkFBQUF5Rm9EQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBRWtBUVl6dUZ3c0NBUUVBUVpudUZ3c3dCZ0VBLy8vLy8wOTBBUUJuRVFBQUFRQUFBTXhhQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUJKQUVIMDdoY0xLUUVCQUFBQkFBQUEwRm9EQUFBR0FRRC8vLy8veW5FQkFIZ1JBQUFCQUFBQTFGb0RBQUVBQUFBREFFSGM3eGNMUlFFQUFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL2Nua0JBSGtSQUFBQkFBQUExRm9EQUFnQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCeVBBWEN5VUJBQUFBMkZvREFQLy8vLy8vLy8vL0tYb0JBSG9SQUFBQkFBQUExRm9EQUFFQUFBQUJBRUd3OFJjTEtRRUFBQURZV2dNQS8vLy8vLy8vLy85SWRnRUFleEVBQUFFQUFBRFVXZ01BQWdBQUFBRUFBQUFCQUVHWThoY0xKUUVBQUFEWVdnTUEvLy8vLy8vLy8vOHBkZ0VBZkJFQUFBRUFBQURVV2dNQUFRQUFBQUVBUVlEekZ3c3RBUUFBQU5oYUF3RC8vLy8vLy8vLy8wMTlBUUI5RVFBQUFRQUFBTlJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhrOHhjTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy8zWG9CQUg4UkFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSE05QmNMT1FFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL1Rxd0JBSWdUQUFBQkFBQUFVRm9EQUFVQUFBQUNBQUFBQXdBQUFBVUFBQUFkQUFBQUFRQkJ0UFVYQ3prQkFRQUFBUUFBQU54YUF3RC8vLy8vLy8vLy8yV3NBUUNKRXdBQUFRQUFBRkJhQXdBRkFBQUFBZ0FBQUFNQUFBQUZBQUFBSFFBQUFBRUFRWnoyRndzNUFRRUFBQUVBQUFEY1dnTUEvLy8vLy8vLy8vODNyQUVBaWhNQUFBRUFBQUJRV2dNQUJRQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBRUdFOXhjTE9RRUJBQUFCQUFBQTNGb0RBUC8vLy8vLy8vLy9DYXdCQUlzVEFBQUJBQUFBVUZvREFBVUFBQUFDQUFBQUF3QUFBQVVBQUFBZEFBQUFBUUJCN1BjWEN6a0JBUUFBQVFBQUFOeGFBd0QvLy8vLy8vLy8veUNzQVFDTUV3QUFBUUFBQUZCYUF3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBUWRUNEZ3czVBUUVBQUFFQUFBRGNXZ01BLy8vLy8vLy8vLy95cXdFQWpSTUFBQUVBQUFCUVdnTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUVHOCtSY0xPUUVCQUFBQkFBQUEzRm9EQVAvLy8vLy8vLy8veEtzQkFJNFRBQUFCQUFBQVVGb0RBQVVBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFCQnBQb1hDemtCQVFBQUFRQUFBTnhhQXdELy8vLy8vLy8vLzl1ckFRQ1BFd0FBQVFBQUFGQmFBd0FGQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQVFZejdGd3MxQVFFQUFBRUFBQURjV2dNQS8vLy8vLy8vLy84UXJRRUFreE1BQUFFQUFBRGdXZ01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWZUN0Z3czVBUUVBQUFFQUFBRGtXZ01BLy8vLy8vLy8vLy8vckFFQWxCTUFBQUVBQUFEZ1dnTUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFCQUVIYy9CY0xNUUVCQUFBQkFBQUE1Rm9EQVAvLy8vLy8vLy8vTjNrQkFNQVRBQUFCQUFBQTZGb0RBQU1BQUFBQ0FBQUFBd0FBQUFVQVFjVDlGd3NDQVFFQVFkRDlGd3RSLy8vLy8vLy8vLy9qWXdFQWdSUUFBQUlBQUFEc1dnTUFEZ0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHNC9oY0xUZi8vLy8vLy8vLy92Mk1CQUlJVUFBQUNBQUFBN0ZvREFBMEFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFR2cveGNMTmYvLy8vLy8vLy8vL21NQkFJTVVBQUFDQUFBQTdGb0RBQWNBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHSWdCZ0xKZi8vLy8vLy8vLy9ybUVCQUlRVUFBQUJBQUFBOUZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWVTQUdBc0NBUUVBUWZDQUdBc2wvLy8vLy8vLy8vLy9hQUVBaFJRQUFBRUFBQUQwV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCeklFWUN3SUJBUUJCMklFWUN5WC8vLy8vLy8vLy80RmtBUUNHRkFBQUFRQUFBUFJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUcwZ2hnTEFnRUJBRUhBZ2hnTEpmLy8vLy8vLy8vLzNHUUJBSWNVQUFBQkFBQUE5Rm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRWnlER0FzQ0FRRUFRYWlER0F0Ti8vLy8vLy8vLy8rbFl3RUFpQlFBQUFJQUFBRHNXZ01BRFFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUVpDRUdBc2wvLy8vLy8vLy8vOEdhQUVBaVJRQUFBRUFBQUQwV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCN0lRWUN3SUJBUUJCK0lRWUN5WC8vLy8vLy8vLy8vRmZBUUNLRkFBQUFRQUFBUFJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhVaFJnTEFnRUJBRUhnaFJnTEhmLy8vLy8vLy8vL0dsOEJBSXNVQUFBQkFBQUE5Rm9EQUFFQUFBQUJBRUhJaGhnTFNmLy8vLy8vLy8vL1FGOEJBSXdVQUFBQkFBQUE5Rm9EQUF3QUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFRYkNIR0F0Ti8vLy8vLy8vLy85UllRRUFqUlFBQUFFQUFBRDBXZ01BRFFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUVppSUdBdEovLy8vLy8vLy8vKzJYd0VBamhRQUFBRUFBQUQwV2dNQURBQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCZ0lrWUN6SC8vLy8vLy8vLy85eGhBUUNQRkFBQUFRQUFBUFJhQXdBR0FBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIb2lSZ0xJZi8vLy8vLy8vLy9XbU1CQUpBVUFBQUJBQUFBOUZvREFBSUFBQUFCQUFBQUFRQkIwSW9ZQ3lYLy8vLy8vLy8vLyt4bkFRQ1JGQUFBQVFBQUFQUmFBd0FEQUFBQUFnQUFBQU1BQUFBQkFFR3NpeGdMQWdFQkFFRzRpeGdMSWYvLy8vLy8vLy8vUDJJQkFKSVVBQUFCQUFBQTlGb0RBQUlBQUFBQkFBQUFBUUJCb0l3WUN5WC8vLy8vLy8vLy8rbG9BUUNURkFBQUFRQUFBUFJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUg4akJnTEFnRUJBRUdJalJnTEpmLy8vLy8vLy8vLzFGOEJBSlFVQUFBQkFBQUE5Rm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRZVNOR0FzQ0FRRUFRZkNOR0FzbC8vLy8vLy8vLy85NFh3RUFsUlFBQUFFQUFBRDBXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ6STRZQ3dJQkFRQkIySTRZQ3lYLy8vLy8vLy8vLzVWcEFRQ1dGQUFBQVFBQUFQUmFBd0FEQUFBQUFnQUFBQU1BQUFBQkFFRzBqeGdMQWdFQkFFSEFqeGdMSmYvLy8vLy8vLy8vbEY4QkFKY1VBQUFCQUFBQTlGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFaeVFHQXNDQVFFQVFhaVFHQXNsLy8vLy8vLy8vLytpWkFFQW1CUUFBQUVBQUFEMFdnTUFBd0FBQUFJQUFBQURBQUFBQVFCQmhKRVlDd0lCQVFCQmtKRVlDeVgvLy8vLy8vLy8vL3BrQVFDWkZBQUFBUUFBQVBSYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVIc2tSZ0xBZ0VCQUVINGtSZ0xKZi8vLy8vLy8vLy9KMkFCQUpvVUFBQUJBQUFBOUZvREFBTUFBQUFDQUFBQUF3QUFBQUVBUWRTU0dBc0NBUUVBUWVDU0dBc2wvLy8vLy8vLy8vOFhaUUVBbXhRQUFBRUFBQUQwV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCdkpNWUN3SUJBUUJCeUpNWUN5WC8vLy8vLy8vLy93ZGZBUUNjRkFBQUFRQUFBUFJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdrbEJnTEFnRUJBRUd3bEJnTEpmLy8vLy8vLy8vL1FHRUJBSjBVQUFBQkFBQUE5Rm9EQUFNQUFBQUNBQUFBQXdBQUFBRUFRWXlWR0FzQ0FRRUFRWmlWR0FzbC8vLy8vLy8vLy8vS1lRRUFuaFFBQUFFQUFBRDBXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkI5SlVZQ3dJQkFRQkJnSllZQ3lYLy8vLy8vLy8vLzNKaEFRQ2ZGQUFBQVFBQUFQUmFBd0FEQUFBQUFRQUFBQ2dBQUFBb0FFSG9saGdMSWYvLy8vLy8vLy8vRW1FQkFLQVVBQUFCQUFBQTlGb0RBQUlBQUFBQkFBQUFBUUJCMEpjWUN4My8vLy8vLy8vLy81NWhBUUNoRkFBQUFRQUFBUFJhQXdBQkFBQUFBd0JCckpnWUN3RUJBRUc0bUJnTE5mLy8vLy8vLy8vLzZtQUJBS01VQUFBQkFBQUErRm9EQUFjQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBcEFFR1VtUmdMTlFFQkFBQUJBQUFBL0ZvREFQLy8vLy8vLy8vL1Myc0JBSzRVQUFBQkFBQUFBRnNEQUFRQUFBQUJBQUFBQVFBQUFBRUFBQUFvQUVHSW1oZ0xJZi8vLy8vLy8vLy9PV3NCQUs4VUFBQUJBQUFBQUZzREFBSUFBQUFCQUFBQUFRQkI4Sm9ZQ3lYLy8vLy8vLy8vL3loa0FRQ3dGQUFBQVFBQUFBUmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSE1teGdMTFFFQkFBQUJBQUFBQ0ZzREFQLy8vLy8vLy8vL1Iyb0JBTE1VQUFBQkFBQUFERnNEQUFJQUFBQUJBQUFBQVFCQnVKd1lDekVCQUFBQUVGc0RBUC8vLy8vLy8vLy9FM1lCQU5ZVUFBQUNBQUFBRkZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR2NuUmdMTlFFQkFBQUNBQUFBSEZzREFQLy8vLy8vLy8vL1YyUUJBTllVQUFBQ0FBQUFGRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHRW5oZ0xJd0VCQUFBQ0FBQUFIRnNEQVAvLy8vLy8vLy8vYkdRQkFOY1VBQUFCQUFBQUpGc0RBRUh3bmhnTEh3RUFBQUFvV3dNQS8vLy8vLy8vLy84eFh3RUEyQlFBQUFFQUFBQWtXd01BUWRpZkdBdE5BUUFBQUNoYkF3RC8vLy8vLy8vLy85Vm9BUURaRkFBQUFRQUFBQ1JiQXdBTEFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFjQ2dHQXRSQVFBQUFDaGJBd0QvLy8vLy8vLy8veHBrQVFEYUZBQUFBUUFBQUN4YkF3QU1BQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHb29SZ0xVUUVBQUFBd1d3TUEvLy8vLy8vLy8vK3VZd0VBMnhRQUFBRUFBQUFzV3dNQURBQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCa0tJWUN5VUJBQUFBTUZzREFQLy8vLy8vLy8vL3dIb0JBTjBVQUFBREFBQUFORnNEQUFFQUFBQURBRUgwb2hnTEtRRUFBQUFEQUFBQVFGc0RBUC8vLy8vLy8vLy9tMmNCQU4wVUFBQURBQUFBTkZzREFBRUFBQUFEQUVIY294Z0xMUUVBQUFBREFBQUFRRnNEQVAvLy8vLy8vLy8vTFdnQkFPQVVBQUFCQUFBQUpGc0RBQUlBQUFBQkFBQUFBUUJCeUtRWUN6VUJBQUFBS0ZzREFQLy8vLy8vLy8vL1ZGOEJBTzRVQUFBQkFBQUFURnNEQUFVQUFBQURBQUFBQVFBQUFBVUFBQUFCQUFBQUFRQkJyS1VZQ3owQkFBQUFBUUFBQUZCYkF3RC8vLy8vLy8vLy8zSnBBUUR2RkFBQUFRQUFBRXhiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFxQUVHVXBoZ0xPUUVCQUFBQkFBQUFVRnNEQVAvLy8vLy8vLy8vd21jQkFQQVVBQUFCQUFBQVRGc0RBQVVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBS2dCQmdLY1lDelVCQUFBQVVGc0RBUC8vLy8vLy8vLy9PR2tCQVBFVUFBQUJBQUFBVEZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCNUtjWUN6RUJBUUFBQVFBQUFGQmJBd0QvLy8vLy8vLy8veXBtQVFEeUZBQUFBUUFBQUV4YkF3QURBQUFBQWdBQUFBTUFBQUFCQUVITXFCZ0xJd0VCQUFBQkFBQUFVRnNEQVAvLy8vLy8vLy8vVm0wQkFQUVVBQUFEQUFBQVZGc0RBRUc0cVJnTEh3RUFBQUJnV3dNQS8vLy8vLy8vLy85eWJRRUE5UlFBQUFNQUFBQlVXd01BUWFDcUdBc2ZBUUFBQUdCYkF3RC8vLy8vLy8vLy94bXdBQUFFRlFBQUFRQUFBR1JiQXdCQmthc1lDeFlHQVFELy8vLy9FRzBCQUFRVkFBQUJBQUFBYUZzREFFSDVxeGdMSUFZQkFQLy8vLy82YkFFQUJSVUFBQUVBQUFCb1d3TUFBZ0FBQUFJQUFBQURBRUhVckJnTE1RRUJBQUFCQUFBQWJGc0RBUC8vLy8vLy8vLy9iR2dCQUE4VkFBQUJBQUFBY0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWJ5dEdBc0NBUUVBUWNpdEdBc2wvLy8vLy8vLy8vLy9ZZ0VBRUJVQUFBRUFBQUJ3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCcEs0WUN3SUJBUUJCc0s0WUN5WC8vLy8vLy8vLy8rOXBBUUFSRlFBQUFRQUFBSEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdNcnhnTEFnRUJBRUdZcnhnTEpmLy8vLy8vLy8vLzIya0JBQklWQUFBQkFBQUFjRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZlN2R0FzQ0FRRUFRWUN3R0FzbC8vLy8vLy8vLy8rTGFBRUFFeFVBQUFFQUFBQndXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkIzTEFZQ3dJQkFRQkI2TEFZQ3lYLy8vLy8vLy8vL3dGcUFRQVVGUUFBQVFBQUFIQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSEVzUmdMQWdFQkFFSFFzUmdMSGYvLy8vLy8vLy8vcEdnQkFCVVZBQUFCQUFBQWNGc0RBQUVBQUFBR0FFRzRzaGdMS2YvLy8vLy8vLy8vaVowQkFNTVZBQUFCQUFBQWRGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdVc3hnTEFnRUJBRUdnc3hnTExmLy8vLy8vLy8vL1daUUJBTVFWQUFBQkFBQUFkRnNEQUFVQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQkIvTE1ZQ3dJQkFRQkJpTFFZQ3kzLy8vLy8vLy8vL3ltVUFRREZGUUFBQVFBQUFIUmJBd0FGQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUFFQVFlUzBHQXNDQVFFQVFmQzBHQXNwLy8vLy8vLy8vLzhia3dFQXhoVUFBQUVBQUFCMFd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRY3kxR0FzQ0FRRUFRZGkxR0FzbC8vLy8vLy8vLy8vZHBRRUF4eFVBQUFFQUFBQjRXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkJ0TFlZQ3dJQkFRQkJ3TFlZQ3lILy8vLy8vLy8vLzFPY0FRRElGUUFBQVFBQUFIaGJBd0FDQUFBQUFRQUFBQUVBUWFpM0dBc3AvLy8vLy8vLy8vLzBwUUVBeVJVQUFBRUFBQUI4V3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFZUzRHQXNDQVFFQVFaQzRHQXNsLy8vLy8vLy8vLzlybkFFQXloVUFBQUVBQUFCOFd3TUFBd0FBQUFFQUFBQUJBQUFBQVFCQitMZ1lDekgvLy8vLy8vLy8veENtQVFETUZRQUFBUUFBQUlCYkF3QUdBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFSFV1UmdMQWdFQkFFSGd1UmdMTGYvLy8vLy8vLy8vaUp3QkFNMFZBQUFCQUFBQWdGc0RBQVVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQnlMb1lDeVgvLy8vLy8vLy8veFNPQVFEUkZRQUFBUUFBQUlSYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVHa3V4Z0xBZ0VCQUVHd3V4Z0xKZi8vLy8vLy8vLy8rNDBCQU5JVkFBQUJBQUFBaEZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUVl5OEdBc0NBUUVBUVppOEdBc3AvLy8vLy8vLy8vL1VwZ0VBMHhVQUFBRUFBQUNFV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFmUzhHQXNDQVFFQVFZQzlHQXNwLy8vLy8vLy8vLy9IcGdFQTFCVUFBQUVBQUFDRVd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZHk5R0FzQ0FRRUFRZWk5R0FzcC8vLy8vLy8vLy8vUmpBRUExUlVBQUFFQUFBQ0VXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWNTK0dBc0NBUUVBUWRDK0dBc3AvLy8vLy8vLy8vL0VqQUVBMWhVQUFBRUFBQUNFV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFheS9HQXNDQVFFQVFiaS9HQXNwLy8vLy8vLy8vLys4bndFQTF4VUFBQUVBQUFDRVd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWlRBR0FzQ0FRRUFRYURBR0FzcC8vLy8vLy8vLy8rdW53RUEyQlVBQUFFQUFBQ0VXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWZ6QUdBc0NBUUVBUVlqQkdBc3AvLy8vLy8vLy8vLzdvd0VBMlJVQUFBRUFBQUNFV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFlVEJHQXNDQVFFQVFmREJHQXNwLy8vLy8vLy8vLy9tb3dFQTJoVUFBQUVBQUFDRVd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRY3pDR0FzQ0FRRUFRZGpDR0FzcC8vLy8vLy8vLy8vcmpBRUEyeFVBQUFFQUFBQ0VXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWJUREdBc0NBUUVBUWNEREdBc3AvLy8vLy8vLy8vL2VqQUVBM0JVQUFBRUFBQUNFV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFaekVHQXNDQVFFQVFhakVHQXNwLy8vLy8vLy8vLy9jcUFFQTNSVUFBQUVBQUFDRVd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWVRGR0FzQ0FRRUFRWkRGR0FzcC8vLy8vLy8vLy8vTnFBRUEzaFVBQUFFQUFBQ0VXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWV6RkdBc0NBUUVBUWZqRkdBc2wvLy8vLy8vLy8vOUJrd0VBNEJVQUFBRUFBQUNJV3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCMU1ZWUN6RUJBUUFBQVFBQUFJeGJBd0QvLy8vLy8vLy8vNFdZQVFEaEZRQUFBUUFBQUloYkF3QURBQUFBQWdBQUFBTUFBQUF4QUVHOHh4Z0xNUUVCQUFBQkFBQUFqRnNEQVAvLy8vLy8vLy8vdFl3QkFPa1ZBQUFCQUFBQWtGc0RBQU1BQUFBQ0FBQUFBd0FBQUFvQVFhVElHQXNDQVFFQVFiRElHQXN4Ly8vLy8vLy8vLzhXbUFFQTZoVUFBQUVBQUFDUVd3TUFCZ0FBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFLQUFBQUNnQkJqTWtZQ3dJQkFRQkJtTWtZQ3luLy8vLy8vLy8vLzU2WUFRRHJGUUFBQVFBQUFKQmJBd0FFQUFBQUFnQUFBQU1BQUFBQkFBQUFNUUJCOU1rWUN3SUJBUUJCZ01vWUN6SC8vLy8vLy8vLy95eHRBUUR1RlFBQUF3QUFBSlJiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQlFBQUFBUUFBQUFCQUVIY3loZ0xBZ0VCQUVIb3loZ0xNZi8vLy8vLy8vLy9BMnNCQU84VkFBQURBQUFBbEZzREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBRkFBQUFCQUFBQUFFQVFjVExHQXNDQVFFQVFkRExHQXNkLy8vLy8vLy8vLytXZVFFQS9oVUFBQUVBQUFDZ1d3TUFBUUFBQUFFQVFiRE1HQXN4QVFBQUFLUmJBd0QvLy8vLy8vLy8veDEwQVFEL0ZRQUFBUUFBQUtCYkF3QUVBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQkJsTTBZQ3hvQkFRQUFBUUFBQUtSYkF3RC8vLy8vLy8vLy94amZBQUFBRmdCQnVNMFlDd2tDQUFBQUFRQUFBQnNBUVlET0dBc1dBZ0FBQUtoYkF3QUFCQUVBLy8vLy81R3FBUUFBRmdCQm9NNFlDd2tDQUFBQUFRQUFBQnNBUWVqT0dBc1dBZ0FBQUtoYkF3QUFCQUVBLy8vLy94TGZBQUFCRmdCQmlNOFlDdzBEQUFBQUFRQUFBQVlBQUFBYkFFSFF6eGdMRmdJQUFBQ29Xd01BQUFRQkFQLy8vLytMcWdFQUFSWUFRZkRQR0FzTkF3QUFBQUVBQUFBR0FBQUFHd0JCdU5BWUN6RUNBQUFBcUZzREFBQUVBUUQvLy8vL3pwOEJBRU1XQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHYzBSZ0xBZ0VCQUVHbzBSZ0xJZi8vLy8vLy8vLy95cDhCQUVRV0FBQUJBQUFBc0ZzREFBSUFBQUFEQUFBQUFRQkJoTklZQ3dFQkFFR1EwaGdMSGYvLy8vLy8vLy8vL0tRQkFFVVdBQUFCQUFBQXNGc0RBQUVBQUFBREFFSHMwaGdMQVFFQVFmalNHQXNkLy8vLy8vLy8vLysrcEFFQVJoWUFBQUVBQUFDd1d3TUFBUUFBQUFNQVFkVFRHQXNCQVFCQjROTVlDeDMvLy8vLy8vLy8vOGFsQVFCSEZnQUFBUUFBQUxCYkF3QUJBQUFBQXdCQnZOUVlDd0VCQUVISTFCZ0xIZi8vLy8vLy8vLy9pS1VCQUVnV0FBQUJBQUFBc0ZzREFBRUFBQUFEQUVHazFSZ0xBUUVBUWJEVkdBc2QvLy8vLy8vLy8vLzZpd0VBU1JZQUFBRUFBQUN3V3dNQUFRQUFBQU1BUVl6V0dBc0JBUUJCbU5ZWUN4My8vLy8vLy8vLy8zS0xBUUJLRmdBQUFRQUFBTEJiQXdBQkFBQUFBd0JCOU5ZWUN3RUJBRUdBMXhnTEhmLy8vLy8vLy8vL0k0Z0JBRXNXQUFBQkFBQUFzRnNEQUFFQUFBQURBRUhjMXhnTEFRRUFRZWpYR0FzZC8vLy8vLy8vLy8rU2h3RUFUQllBQUFFQUFBQ3dXd01BQVFBQUFBTUFRY1RZR0FzQkFRQkIwTmdZQ3gzLy8vLy8vLy8vLzVxWEFRQk5GZ0FBQVFBQUFMQmJBd0FCQUFBQUF3QkJyTmtZQ3dFQkFFRzQyUmdMSGYvLy8vLy8vLy8vRUpjQkFFNFdBQUFCQUFBQXNGc0RBQUVBQUFBREFFR1UyaGdMQVFFQVFhRGFHQXNkLy8vLy8vLy8vLzgyaXdFQVR4WUFBQUVBQUFDd1d3TUFBUUFBQUFNQVFmemFHQXNCQVFCQmlOc1lDeDMvLy8vLy8vLy8vemFNQVFCUUZnQUFBUUFBQUxCYkF3QUJBQUFBQXdCQjVOc1lDd0VCQUVIdzJ4Z0xLZi8vLy8vLy8vLy81b1FCQUZFV0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSE0zQmdMQWdFQkFFSFkzQmdMS2YvLy8vLy8vLy8vSW9VQkFGSVdBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUcwM1JnTEFnRUJBRUhBM1JnTEtmLy8vLy8vLy8vLy9vTUJBRk1XQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHYzNoZ0xBZ0VCQUVHbzNoZ0xLZi8vLy8vLy8vLy9MWVFCQUZRV0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR0UzeGdMQWdFQkFFR1EzeGdMS2YvLy8vLy8vLy8vWjRNQkFGVVdBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhzM3hnTEFnRUJBRUg0M3hnTEtmLy8vLy8vLy8vL21vTUJBRllXQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIVTRCZ0xBZ0VCQUVIZzRCZ0xLZi8vLy8vLy8vLy9WWVFCQUZjV0FBQUNBQUFBdEZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFRzg0UmdMQWdFQkFFSEk0UmdMS2YvLy8vLy8vLy8vV0o4QkFGZ1dBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdrNGhnTEFnRUJBRUd3NGhnTElmLy8vLy8vLy8vL0pwOEJBRmtXQUFBQkFBQUFzRnNEQUFJQUFBQUNBQUFBQXdCQmpPTVlDd0lCQVFCQm1PTVlDeUgvLy8vLy8vLy8vL0tlQVFCYUZnQUFBUUFBQUxCYkF3QUNBQUFBQWdBQUFBTUFRZlRqR0FzQ0FRRUFRWURrR0FzaC8vLy8vLy8vLy8vQm5nRUFXeFlBQUFFQUFBQ3dXd01BQWdBQUFBSUFBQUFEQUVIYzVCZ0xBZ0VCQUVIbzVCZ0xNZi8vLy8vLy8vLy9CSlVCQUZ3V0FBQUJBQUFBc0ZzREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFjVGxHQXNDQVFFQVFkRGxHQXNwLy8vLy8vLy8vLyswaEFFQVhSWUFBQUlBQUFDMFd3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRYXptR0FzQ0FRRUFRYmptR0FzaC8vLy8vLy8vLy85WGhRRUFYaFlBQUFJQUFBQzBXd01BQWdBQUFBSUFBQUFEQUVHVTV4Z0xBZ0VCQUVHZzV4Z0xJZi8vLy8vLy8vLy94b01CQUY4V0FBQUNBQUFBdkZzREFBSUFBQUFDQUFBQUF3QkIvT2NZQ3dJQkFRQkJpT2dZQ3lYLy8vLy8vLy8vLzMyVEFRQmdGZ0FBQVFBQUFMQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSGs2QmdMQWdFQkFFSHc2QmdMS2YvLy8vLy8vLy8vaW9VQkFHRVdBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhNNlJnTEFnRUJBRUhZNlJnTEtmLy8vLy8vLy8vL3ZvVUJBR0lXQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHMDZoZ0xBZ0VCQUVIQTZoZ0xMZi8vLy8vLy8vLy9HNUVCQUdNV0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCbk9zWUN3SUJBUUJCcU9zWUN5WC8vLy8vLy8vLy85V2tBUUJrRmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdFN0JnTEFnRUJBRUdRN0JnTEpmLy8vLy8vLy8vL1RJc0JBR1VXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZXpzR0FzQ0FRRUFRZmpzR0FzbC8vLy8vLy8vLy8rWHBBRUFaaFlBQUFFQUFBQ3dXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkIxTzBZQ3dJQkFRQkI0TzBZQ3lYLy8vLy8vLy8vL3hDTEFRQm5GZ0FBQVFBQUFMQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFRzg3aGdMQWdFQkFFSEk3aGdMSmYvLy8vLy8vLy8vbjZVQkFHZ1dBQUFCQUFBQXNGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFhVHZHQXNDQVFFQVFiRHZHQXNsLy8vLy8vLy8vLzhRakFFQWFSWUFBQUVBQUFDd1d3TUFBd0FBQUFJQUFBQURBQUFBQVFCQmpQQVlDd0lCQVFCQm1QQVlDeVgvLy8vLy8vLy8veGVOQVFCcUZnQUFBUUFBQUxCYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVIMDhCZ0xBZ0VCQUVHQThSZ0xKZi8vLy8vLy8vLy92NDRCQUdzV0FBQUJBQUFBc0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWR6eEdBc0NBUUVBUWVqeEdBc2wvLy8vLy8vLy8vK1VqZ0VBYkJZQUFBRUFBQUN3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCeFBJWUN3SUJBUUJCMFBJWUN5WC8vLy8vLy8vLy8rNmNBUUJ0RmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdzOHhnTEFnRUJBRUc0OHhnTEpmLy8vLy8vLy8vL3lKd0JBRzRXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRWlQwR0FzQ0FRRUFRYUQwR0FzbC8vLy8vLy8vLy85c2p3RUFieFlBQUFFQUFBQ3dXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkIvUFFZQ3dJQkFRQkJpUFVZQ3lYLy8vLy8vLy8vLythSkFRQndGZ0FBQVFBQUFMQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSGs5UmdMQWdFQkFFSHc5UmdMSmYvLy8vLy8vLy8vN3BFQkFIRVdBQUFCQUFBQXNGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFjejJHQXNDQVFFQVFkajJHQXN0Ly8vLy8vLy8vLy9ka0FFQWNoWUFBQUVBQUFDd1d3TUFCUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFCQUVHMDl4Z0xBZ0VCQUVIQTl4Z0xMZi8vLy8vLy8vLy9GWnNCQUhNV0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCblBnWUN3SUJBUUJCcVBnWUN5My8vLy8vLy8vLy8rS2hBUUIwRmdBQUFRQUFBTEJiQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFRWVQ1R0FzQ0FRRUFRWkQ1R0FzeC8vLy8vLy8vLy8vYm9BRUFkUllBQUFFQUFBQ3dXd01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCN1BrWUN3SUJBUUJCK1BrWUN5bi8vLy8vLy8vLy82aWJBUUIyRmdBQUFRQUFBTEJiQXdBRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQjFQb1lDd0lCQVFCQjRQb1lDekgvLy8vLy8vLy8vM2lNQVFCM0ZnQUFBUUFBQUxCYkF3QUdBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFRzgreGdMQWdFQkFFSEkreGdMSmYvLy8vLy8vLy8vT3FVQkFIZ1dBQUFCQUFBQXNGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFhVDhHQXNDQVFFQVFiRDhHQXNwLy8vLy8vLy8vLys3aVFFQWVSWUFBQUVBQUFDd1d3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRWXo5R0FzQ0FRRUFRWmo5R0FzbC8vLy8vLy8vLy8rZW5RRUFlaFlBQUFFQUFBQ3dXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkI5UDBZQ3dJQkFRQkJnUDRZQ3luLy8vLy8vLy8vL3d1akFRQjdGZ0FBQVFBQUFMQmJBd0FFQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUJCM1A0WUN3SUJBUUJCNlA0WUN5bi8vLy8vLy8vLy8xeW1BUUI4RmdBQUFRQUFBTEJiQXdBRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQnhQOFlDd0lCQVFCQjBQOFlDeTMvLy8vLy8vLy8vemVpQVFCOUZnQUFBUUFBQUxCYkF3QUZBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBUWF5QUdRc0NBUUVBUWJpQUdRc3gvLy8vLy8vLy8vOHNvUUVBZmhZQUFBRUFBQUN3V3dNQUJnQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQmxJRVpDd0lCQVFCQm9JRVpDekgvLy8vLy8vLy8vMk9YQVFCL0ZnQUFBUUFBQUxCYkF3QUdBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFFSDhnUmtMQWdFQkFFR0lnaGtMTmYvLy8vLy8vLy8vMjVZQkFJQVdBQUFCQUFBQXNGc0RBQWNBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIa2doa0xBZ0VCQUVId2doa0xMZi8vLy8vLy8vLy9nb2dCQUlFV0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCeklNWkN3SUJBUUJCMklNWkN6SC8vLy8vLy8vLy8rMkhBUUNDRmdBQUFRQUFBTEJiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHMGhCa0xBZ0VCQUVIQWhCa0xNZi8vLy8vLy8vLy9XSWNCQUlNV0FBQUJBQUFBc0ZzREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQVFaeUZHUXNDQVFFQVFhaUZHUXMxLy8vLy8vLy8vLzhnaHdFQWhCWUFBQUVBQUFDd1d3TUFCd0FBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBUVlTR0dRc0NBUUVBUVpDR0dRc2wvLy8vLy8vLy8vK3Vpd0VBaFJZQUFBRUFBQUN3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCN0lZWkN3SUJBUUJCK0lZWkN5WC8vLy8vLy8vLy96V1hBUUNHRmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUhVaHhrTEFnRUJBRUhnaHhrTEpmLy8vLy8vLy8vL3I1WUJBSWNXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRYnlJR1FzQ0FRRUFRY2lJR1FzbC8vLy8vLy8vLy85UmlBRUFpQllBQUFFQUFBQ3dXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkJwSWtaQ3dJQkFRQkJzSWtaQ3lYLy8vLy8vLy8vLzc2SEFRQ0pGZ0FBQVFBQUFMQmJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFR01paGtMQWdFQkFFR1lpaGtMS2YvLy8vLy8vLy8vZjQwQkFJb1dBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUgwaWhrTEFnRUJBRUdBaXhrTEtmLy8vLy8vLy8vL0tJOEJBSXNXQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIY2l4a0xBZ0VCQUVIb2l4a0xLZi8vLy8vLy8vLy9XWklCQUl3V0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSEVqQmtMQWdFQkFFSFFqQmtMTGYvLy8vLy8vLy8vTzQwQkFJMFdBQUFCQUFBQXNGc0RBQVVBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQVFCQnJJMFpDd0lCQVFCQnVJMFpDeTMvLy8vLy8vLy8vK2FPQVFDT0ZnQUFBUUFBQUxCYkF3QUZBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBUVpTT0dRc0NBUUVBUWFDT0dRc3QvLy8vLy8vLy8vOFdrZ0VBanhZQUFBRUFBQUN3V3dNQUJRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBRUg4amhrTEFnRUJBRUdJanhrTEtmLy8vLy8vLy8vL3dxTUJBSkFXQUFBQkFBQUFzRnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIa2p4a0xBZ0VCQUVId2p4a0xKZi8vLy8vLy8vLy9jWllCQUpFV0FBQUJBQUFBc0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWN5UUdRc0NBUUVBUWRpUUdRc2wvLy8vLy8vLy8vLzlsUUVBa2hZQUFBRUFBQUN3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCdEpFWkN3SUJBUUJCd0pFWkN5WC8vLy8vLy8vLy8rR1NBUUNURmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdja2hrTEFnRUJBRUdva2hrTEpmLy8vLy8vLy8vL2NwUUJBSlFXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRWVNUR1FzQ0FRRUFRWkNUR1FzOS8vLy8vLy8vLy84em13RUFsUllBQUFFQUFBQ3dXd01BQ1FBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQjdKTVpDd0lCQVFCQitKTVpDMEgvLy8vLy8vLy8vMUdiQVFDV0ZnQUFBUUFBQUxCYkF3QUtBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFCQjFKUVpDd0lCQVFCQjRKUVpDeVgvLy8vLy8vLy8veE9sQVFDWEZnQUFBUUFBQUxCYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVHOGxSa0xBZ0VCQUVISWxSa0xKZi8vLy8vLy8vLy96WjBCQUpnV0FBQUJBQUFBc0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWFTV0dRc0NBUUVBUWJDV0dRc2wvLy8vLy8vLy8vLzduUUVBbVJZQUFBRUFBQUN3V3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCakpjWkN3SUJBUUJCbUpjWkN5My8vLy8vLy8vLy93aWlBUUNhRmdBQUFRQUFBTEJiQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFRZlNYR1FzQ0FRRUFRWUNZR1FzeC8vLy8vLy8vLy8vL29BRUFteFlBQUFFQUFBQ3dXd01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCM0pnWkN3SUJBUUJCNkpnWkN5My8vLy8vLy8vLy80YWhBUUNjRmdBQUFRQUFBTEJiQXdBRkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFRY1NaR1FzQ0FRRUFRZENaR1FzeC8vLy8vLy8vLy84UXBBRUFuUllBQUFFQUFBQ3dXd01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCckpvWkN3SUJBUUJCdUpvWkN5WC8vLy8vLy8vLy80aUxBUUNlRmdBQUFRQUFBTEJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdVbXhrTEFnRUJBRUdnbXhrTEpmLy8vLy8vLy8vL2I1c0JBSjhXQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZnliR1FzQ0FRRUFRWWljR1FzNS8vLy8vLy8vLy8rUXBnRUFvQllBQUFFQUFBQ3dXd01BQ0FBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBRUhrbkJrTEFnRUJBRUh3bkJrTFFmLy8vLy8vLy8vL0I2Y0JBS0VXQUFBQ0FBQUF0RnNEQUFvQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBRUhNblJrTEFnRUJBRUhZblJrTFRmLy8vLy8vLy8vL1VxY0JBS0lXQUFBQ0FBQUF2RnNEQUEwQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHMG5oa0xBZ0VCQUVIQW5oa0xLZi8vLy8vLy8vLy9JWmtCQUtNV0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR2NueGtMQWdFQkFFR29ueGtMSmYvLy8vLy8vLy8vWWFVQkFLUVdBQUFCQUFBQXNGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFZU2dHUXNDQVFFQVFaQ2dHUXNwLy8vLy8vLy8vLytJaEFFQXBSWUFBQUVBQUFDd1d3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZXlnR1FzQ0FRRUFRZmlnR1FzeC8vLy8vLy8vLy84emxRRUFwaFlBQUFJQUFBQzBXd01BQmdBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUJCMUtFWkN3SUJBUUJCNEtFWkN5bi8vLy8vLy8vLy8yT1ZBUUNuRmdBQUFnQUFBTHhiQXdBRUFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFCQnZLSVpDd0lCQVFCQnlLSVpDeVgvLy8vLy8vLy8veWFlQVFDb0ZnQUFBUUFBQUxCYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVHa294a0xBZ0VCQUVHd294a0xLZi8vLy8vLy8vLy9VWjRCQUtrV0FBQUJBQUFBc0ZzREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR01wQmtMQWdFQkFFR1lwQmtMS2YvLy8vLy8vLy8vTWFZQkFLb1dBQUFCQUFBQXNGc0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUgwcEJrTEFnRUJBRUdBcFJrTEtmLy8vLy8vLy8vL041MEJBS3NXQUFBQ0FBQUF0RnNEQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIY3BSa0xBZ0VCQUVIb3BSa0xMZi8vLy8vLy8vLy9acUlCQUt3V0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCeEtZWkN3SUJBUUJCMEtZWkN6SC8vLy8vLy8vLy8xbWhBUUN0RmdBQUFRQUFBTEJiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVHc3B4a0xBZ0VCQUVHNHB4a0xMZi8vLy8vLy8vLy90S0VCQUs0V0FBQUJBQUFBc0ZzREFBVUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUJCbEtnWkN3SUJBUUJCb0tnWkN6SC8vLy8vLy8vLy8waWtBUUN2RmdBQUFRQUFBTEJiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVIOHFCa0xBZ0VCQUVHSXFSa0xKZi8vLy8vLy8vLy8xSXNCQUxBV0FBQUJBQUFBc0ZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUWVTcEdRc0NBUUVBUWZDcEdRc2wvLy8vLy8vLy8vOFVuUUVBc1JZQUFBSUFBQUMwV3dNQUF3QUFBQUlBQUFBREFBQUFBUUJCektvWkN3SUJBUUJCMktvWkN5WC8vLy8vLy8vLy82cVVBUUN5RmdBQUFnQUFBTFJiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUcwcXhrTEFnRUJBRUhBcXhrTEpmLy8vLy8vLy8vLzFwUUJBTE1XQUFBQkFBQUFzRnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRWnlzR1FzQ0FRRUFRYWlzR1FzbC8vLy8vLy8vLy85dWtRRUF0QllBQUFJQUFBQzBXd01BQXdBQUFBSUFBQUFEQUFBQUFRQkJoSzBaQ3dJQkFRQkJrSzBaQ3lYLy8vLy8vLy8vLzJPZ0FRQzFGZ0FBQWdBQUFMeGJBd0FEQUFBQUFnQUFBQU1BQUFBQkFFSHNyUmtMQWdFQkFFSDRyUmtMSmYvLy8vLy8vLy8vMmFJQkFMWVdBQUFDQUFBQXRGc0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFkU3VHUXNDQVFFQVFlQ3VHUXNsLy8vLy8vLy8vLzlCb3dFQXR4WUFBQUlBQUFDMFd3TUFBd0FBQUFJQUFBQURBQUFBQVFCQnZLOFpDd0lCQVFCQnlLOFpDeVgvLy8vLy8vLy8vOHVSQVFDNEZnQUFBUUFBQUxCYkF3QURBQUFBQWdBQUFBTUFBQUFCQUVHa3NCa0xBZ0VCQUVHd3NCa0xKZi8vLy8vLy8vLy92NFlCQUxvV0FBQUJBQUFBeEZzREFBTUFBQUFDQUFBQUF3QUFBQUVBUVl5eEdRc0NBUUVBUVppeEdRc2gvLy8vLy8vLy8vOFFoZ0VBdXhZQUFBRUFBQURFV3dNQUFnQUFBQUlBQUFBREFFSDBzUmtMQWdFQkFFR0FzaGtMSGYvLy8vLy8vLy8vSUlZQkFMd1dBQUFCQUFBQXhGc0RBQUVBQUFBQkFFSG9zaGtMUGYvLy8vLy8vLy8vWVprQkFOQVdBQUFCQUFBQXlGc0RBQWtBQUFBQ0FBQUFBd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBUWNTekdRc0NBUUVBUWRDekdRczUvLy8vLy8vLy8vOE9pUUVBMFJZQUFBRUFBQURJV3dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHc3RCa0xBZ0VCQUVHNHRCa0xPZi8vLy8vLy8vLy84WW9CQU5JV0FBQUJBQUFBeUZzREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQmxMVVpDd0lCQVFCQm9MVVpDelgvLy8vLy8vLy8vOVNLQVFEVEZnQUFBUUFBQU1oYkF3QUhBQUFBQWdBQUFBTUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCL0xVWkN3SUJBUUJCaUxZWkMwSC8vLy8vLy8vLy80Q2tBUURXRmdBQUFRQUFBTWhiQXdBS0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCNUxZWkN3SUJBUUJCOExZWkMwSC8vLy8vLy8vLy83Q21BUURYRmdBQUFRQUFBTWhiQXdBS0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCekxjWkN3SUJBUUJCMkxjWkMwSC8vLy8vLy8vLy95K1lBUURZRmdBQUFRQUFBTWhiQXdBS0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCdExnWkN3SUJBUUJCd0xnWkMwSC8vLy8vLy8vLy93bUhBUURaRmdBQUFRQUFBTWhiQXdBS0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCbkxrWkN3SUJBUUJCcUxrWkN6SC8vLy8vLy8vLy82eW5BUURhRmdBQUFRQUFBTWhiQXdBR0FBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBRUFBQUFHQUVHRXVoa0xBZ0VCQUVHUXVoa0xNZi8vLy8vLy8vLy9uS2dCQU5zV0FBQUJBQUFBeUZzREFBWUFBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFBUUFBQUFZQVFleTZHUXNDQVFFQVFmaTZHUXN4Ly8vLy8vLy8vLzk4cHdFQTNCWUFBQUVBQUFESVd3TUFCZ0FBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFCQUFBQUJnQkIxTHNaQ3dJQkFRQkI0THNaQ3pILy8vLy8vLy8vLzRhb0FRRGRGZ0FBQVFBQUFNaGJBd0FHQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBRUc4dkJrTEFnRUJBRUhJdkJrTE1mLy8vLy8vLy8vLzJxY0JBTjRXQUFBQkFBQUF5RnNEQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFHQUFBQUFRQUFBQVlBUWFTOUdRc0NBUUVBUWJDOUdRczUvLy8vLy8vLy8vOEFsQUVBM3hZQUFBRUFBQURJV3dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHTXZoa0xBZ0VCQUVHWXZoa0xPZi8vLy8vLy8vLy9YWWtCQU9BV0FBQUJBQUFBeUZzREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQjlMNFpDd0lCQVFCQmdMOFpDem4vLy8vLy8vLy8vNHFKQVFEaEZnQUFBUUFBQU1oYkF3QUlBQUFBQWdBQUFBTUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFkeS9HUXNDQVFFQVFlaS9HUXRCLy8vLy8vLy8vLytpaVFFQTRoWUFBQUVBQUFESVd3TUFDZ0FBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFjVEFHUXNDQVFFQVFkREFHUXM1Ly8vLy8vLy8vLzgyaVFFQTR4WUFBQUVBQUFESVd3TUFDQUFBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FFR3N3UmtMQWdFQkFFRzR3UmtMT2YvLy8vLy8vLy8vaDVvQkFPUVdBQUFCQUFBQXlGc0RBQWdBQUFBQ0FBQUFBd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJsTUlaQ3dJQkFRQkJvTUlaQ3puLy8vLy8vLy8vL3pPcEFRRGxGZ0FBQVFBQUFNaGJBd0FJQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFRZnpDR1FzQ0FRRUFRWWpER1FzNS8vLy8vLy8vLy85OXFRRUE1aFlBQUFFQUFBRElXd01BQ0FBQUFBSUFBQUFEQUFBQUFRQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBRUhrd3hrTEFnRUJBRUh3d3hrTE9mLy8vLy8vLy8vL1FKUUJBT2NXQUFBQkFBQUF5RnNEQUFnQUFBQUNBQUFBQXdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCek1RWkN3SUJBUUJCMk1RWkN6bi8vLy8vLy8vLy81NlRBUURvRmdBQUFRQUFBTWhiQXdBSUFBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBUWJURkdRc0NBUUVBUWNERkdRczUvLy8vLy8vLy8vOENxUUVBNlJZQUFBRUFBQURJV3dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHY3hoa0xBZ0VCQUVHb3hoa0xPZi8vLy8vLy8vLy9aS2tCQU9vV0FBQUJBQUFBeUZzREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQmhNY1pDd0lCQVFCQmtNY1pDem4vLy8vLy8vLy8vMHVwQVFEckZnQUFBUUFBQU1oYkF3QUlBQUFBQWdBQUFBTUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFlekhHUXNDQVFFQVFmakhHUXM1Ly8vLy8vLy8vLy9CbHdFQTdCWUFBQUVBQUFESVd3TUFDQUFBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FFSFV5QmtMQWdFQkFFSGd5QmtMT2YvLy8vLy8vLy8vTEk0QkFPMFdBQUFCQUFBQXlGc0RBQWdBQUFBQ0FBQUFBd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJ2TWtaQ3dJQkFRQkJ5TWtaQ3puLy8vLy8vLy8vLzBPT0FRRHVGZ0FBQVFBQUFNaGJBd0FJQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFRYVRLR1FzQ0FRRUFRYkRLR1FzNS8vLy8vLy8vLy8rNm1RRUE3eFlBQUFFQUFBRElXd01BQ0FBQUFBSUFBQUFEQUFBQUFRQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBRUdNeXhrTEFnRUJBRUdZeXhrTE9mLy8vLy8vLy8vL1NKa0JBUEFXQUFBQkFBQUF5RnNEQUFnQUFBQUNBQUFBQXdBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCOU1zWkN3SUJBUUJCZ013WkN6bi8vLy8vLy8vLy8rYVhBUUR4RmdBQUFRQUFBTWhiQXdBSUFBQUFBZ0FBQUFNQUFBQUJBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBUWR6TUdRc0NBUUVBUWVqTUdRczUvLy8vLy8vLy8vL2ptUUVBOGhZQUFBRUFBQURJV3dNQUNBQUFBQUlBQUFBREFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVIRXpSa0xBZ0VCQUVIUXpSa0xPZi8vLy8vLy8vLy9mSTRCQVBNV0FBQUJBQUFBeUZzREFBZ0FBQUFDQUFBQUF3QUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQnJNNFpDd0lCQVFCQnVNNFpDem4vLy8vLy8vLy8vNkNaQVFEMEZnQUFBUUFBQU1oYkF3QUlBQUFBQWdBQUFBTUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFaVFBHUXNDQVFFQVFhRFBHUXM1Ly8vLy8vLy8vLy8rbHdFQTlSWUFBQUVBQUFESVd3TUFDQUFBQUFJQUFBQURBQUFBQVFBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FFSDh6eGtMQWdFQkFFR0kwQmtMT2YvLy8vLy8vLy8vL1prQkFQWVdBQUFCQUFBQXlGc0RBQWdBQUFBQ0FBQUFBd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkI1TkFaQ3dJQkFRQkI4TkFaQzBILy8vLy8vLy8vL3hxcEFRRDNGZ0FBQVFBQUFNaGJBd0FLQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJ6TkVaQ3dJQkFRQkIyTkVaQzBILy8vLy8vLy8vLy9LR0FRRDRGZ0FBQVFBQUFNaGJBd0FLQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJ0TklaQ3dJQkFRQkJ3TklaQzBILy8vLy8vLy8vLzhLbkFRRDVGZ0FBQVFBQUFNaGJBd0FLQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJuTk1aQ3dJQkFRQkJxTk1aQ3ozLy8vLy8vLy8vLzFtb0FRRDZGZ0FBQVFBQUFNaGJBd0FKQUFBQUFnQUFBQU1BQUFBQkFBQUFCZ0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHRTFCa0xBZ0VCQUVHUTFCa0xIZi8vLy8vLy8vLy9ZSmdCQVA4V0FBQUJBQUFBekZzREFBRUFBQUF5QUVIdzFCa0xLUUVBQUFEUVd3TUEvLy8vLy8vLy8vL2dtQUVBRnhjQUFBRUFBQURVV3dNQUFnQUFBQU1BQUFBb0FFSFUxUmtMTVFFQUFBQUJBQUFBMkZzREFQLy8vLy8vLy8vLzlaZ0JBQmdYQUFBQkFBQUExRnNEQUFNQUFBQURBQUFBQVFBQUFDZ0FRYnpXR1FzdEFRQUFBQUVBQUFEWVd3TUEvLy8vLy8vLy8vL0ltQUVBR1JjQUFBRUFBQURVV3dNQUFnQUFBQU1BQUFBeEFFR2sxeGtMU1FFQUFBQUJBQUFBMkZzREFQLy8vLy8vLy8vL1Rva0JBQ01YQUFBQkFBQUEzRnNEQUFrQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFZellHUXNDQVFFQVFaallHUXM5Ly8vLy8vLy8vLzhabEFFQUpCY0FBQUVBQUFEY1d3TUFDUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCOU5nWkN3SUJBUUJCZ05rWkN6My8vLy8vLy8vLy95YUpBUUFsRndBQUFRQUFBTnhiQXdBSkFBQUFBZ0FBQUFNQUFBQUJBQUFBQVFBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FFSGMyUmtMQWdFQkFFSG8yUmtMUGYvLy8vLy8vLy8vMkpjQkFDWVhBQUFCQUFBQTNGc0RBQWtBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBUWNUYUdRc0NBUUVBUWREYUdRczkvLy8vLy8vLy8vOXVqZ0VBSnhjQUFBRUFBQURjV3dNQUNRQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQkJyTnNaQ3dJQkFRQkJ1TnNaQ3ozLy8vLy8vLy8vLzEyT0FRQW9Gd0FBQVFBQUFOeGJBd0FKQUFBQUFnQUFBQU1BQUFBQkFBQUFBUUFBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUVHVTNCa0xBZ0VCQUVHZzNCa0xQZi8vLy8vLy8vLy8wNWtCQUNrWEFBQUJBQUFBM0ZzREFBa0FBQUFDQUFBQUF3QUFBQUVBQUFBQkFBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFRZnpjR1FzQ0FRRUFRWWpkR1FzOS8vLy8vLy8vLy8rUW1RRUFLaGNBQUFFQUFBRGNXd01BQ1FBQUFBSUFBQUFEQUFBQUFRQUFBQUVBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdCQjVOMFpDd0lCQVFCQjhOMFpDejMvLy8vLy8vLy8vMzJaQVFBckZ3QUFBUUFBQU54YkF3QUpBQUFBQWdBQUFBTUFBQUFCQUFBQUFRQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBRUhNM2hrTEFnRUJBRUhZM2hrTFBmLy8vLy8vLy8vL25wb0JBQ3dYQUFBQkFBQUEzRnNEQUFrQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQVFiVGZHUXNDQVFFQVFjRGZHUXM5Ly8vLy8vLy8vLysxa3dFQUxSY0FBQUVBQUFEY1d3TUFDUUFBQUFJQUFBQURBQUFBQVFBQUFBRUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0JCbk9BWkN3SUJBUUJCcU9BWkN5WC8vLy8vLy8vLy84T1RBUUF1RndBQUFRQUFBT0JiQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUdFNFJrTEFnRUJBRUdRNFJrTEpmLy8vLy8vLy8vL3E1SUJBRElYQUFBQkFBQUE0RnNEQUFNQUFBQUNBQUFBQXdBQUFBRUFRZXpoR1FzQ0FRRUFRZmpoR1FzcC8vLy8vLy8vLy8veW1nRUFPaGNBQUFFQUFBRGtXd01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUWRUaUdRczFBUUVBQUFFQUFBRG9Xd01BLy8vLy8vLy8vLy9ibWdFQU94Y0FBQUVBQUFEa1d3TUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRYnpqR1FzMUFRRUFBQUVBQUFEb1d3TUEvLy8vLy8vLy8vOEltd0VBUFJjQUFBRUFBQURzV3dNQUJBQUFBQUlBQUFBREFBQUFBUUFBQUFFQVFhVGtHUXN4QVFFQUFBRUFBQUR3V3dNQS8vLy8vLy8vLy8rbGR3RUFnQmNBQUFFQUFBRFVXZ01BQXdBQUFBSUFBQUFEQUFBQUFRQkJqT1VaQ3pFQkFRQUFBUUFBQU5oYUF3RC8vLy8vLy8vLy84dDBBUUNCRndBQUFRQUFBTlJhQXdBREFBQUFBZ0FBQUFNQUFBQUJBRUgwNVJrTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy9ISUFCQUlJWEFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSGM1aGtMTlFFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL1hYSUJBSU1YQUFBQkFBQUExRm9EQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIRTV4a0xOUUVCQUFBQkFBQUEyRm9EQVAvLy8vLy8vLy8vVlg0QkFJUVhBQUFCQUFBQTFGb0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdzNkJrTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy96bk1CQUlVWEFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR1U2UmtMTlFFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL05YSUJBSVlYQUFBQkFBQUExRm9EQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVIODZSa0xOUUVCQUFBQkFBQUEyRm9EQVAvLy8vLy8vLy8vaTNJQkFJY1hBQUFCQUFBQTFGb0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUhrNmhrTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy9QblVCQUlnWEFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFSE02eGtMTlFFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vL2Vud0JBSWtYQUFBQkFBQUExRm9EQUFRQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUVHMDdCa0xNUUVCQUFBQkFBQUEyRm9EQVAvLy8vLy8vLy8vd25rQkFJb1hBQUFCQUFBQTFGb0RBQU1BQUFBQ0FBQUFBd0FBQUFFQVFaenRHUXMxQVFFQUFBRUFBQURZV2dNQS8vLy8vLy8vLy8vQWRnRUFpeGNBQUFFQUFBRFVXZ01BQkFBQUFBSUFBQUFEQUFBQUFRQUFBQUVBUVlUdUdRczFBUUVBQUFFQUFBRFlXZ01BLy8vLy8vLy8vLzllZHdFQWpCY0FBQUVBQUFEVVdnTUFCQUFBQUFJQUFBQURBQUFBQVFBQUFBRUFRZXp1R1FzeEFRRUFBQUVBQUFEWVdnTUEvLy8vLy8vLy8vL3RkZ0VBalJjQUFBRUFBQURVV2dNQUF3QUFBQUlBQUFBREFBQUFBUUJCMU84WkN6RUJBUUFBQVFBQUFOaGFBd0QvLy8vLy8vLy8vNGgzQVFDT0Z3QUFBUUFBQU5SYUF3QURBQUFBQWdBQUFBTUFBQUFCQUVHODhCa0xOUUVCQUFBQkFBQUEyRm9EQVAvLy8vLy8vLy8vM0h3QkFJOFhBQUFCQUFBQTFGb0RBQVFBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBRUdrOFJrTE5RRUJBQUFCQUFBQTJGb0RBUC8vLy8vLy8vLy9KM1FCQUpBWEFBQUJBQUFBMUZvREFBUUFBQUFDQUFBQUF3QUFBQUVBQUFBQkFFR004aGtMUFFFQkFBQUJBQUFBMkZvREFQLy8vLy8vLy8vLzYzQUJBSk1YQUFBREFBQUE5RnNEQUFZQUFBQUNBQUFBQXdBQUFBRUFBQUFGQUFBQUJBQUFBQUVBUWZUeUdRc3RBUUVBQUFFQUFBQUFYQU1BLy8vLy8vLy8vLytWb2dFQXhoY0FBQUVBQUFBRVhBTUFBZ0FBQUFNQUFBQVpBRUhjOHhrTEFRRUFRZWp6R1FzZC8vLy8vLy8vLy85eG93RUF5aGNBQUFFQUFBQUlYQU1BQVFBQUFERUFRZEQwR1FzZC8vLy8vLy8vLy8rT293RUF5eGNBQUFFQUFBQUlYQU1BQVFBQUFERUFRYmoxR1FzZC8vLy8vLy8vLy8rS293RUF6QmNBQUFFQUFBQUlYQU1BQVFBQUFERUFRYUQyR1FzbC8vLy8vLy8vLy8vdW13RUEvaGNBQUFFQUFBQU1YQU1BQXdBQUFBVUFBQUFGQUFBQUJBQkJpUGNaQ3lYLy8vLy8vLy8vLzB5TUFRRC9Gd0FBQVFBQUFBeGNBd0FEQUFBQUJRQUFBQVVBQUFBRUFFSHc5eGtMTGYvLy8vLy8vLy8veFhjQkFBRVpBQUFCQUFBQUVGd0RBQVVBQUFBQ0FBQUFBd0FBQUFVQUFBQWRBQUFBQVFCQnpQZ1pDd0lCQVFCQjJQZ1pDeTMvLy8vLy8vLy8vOUozQVFBQ0dRQUFBUUFBQUJCY0F3QUZBQUFBQWdBQUFBTUFBQUFGQUFBQUhRQUFBQUVBUWJUNUdRc0NBUUVBUWNENUdRc3QvLy8vLy8vLy8vL0pmQUVBQXhrQUFBRUFBQUFRWEFNQUJRQUFBQUlBQUFBREFBQUFCUUFBQUIwQUFBQUJBRUdjK2hrTEFnRUJBRUdvK2hrTExmLy8vLy8vLy8vLzdYVUJBQVFaQUFBQkFBQUFFRndEQUFVQUFBQUNBQUFBQXdBQUFBVUFBQUFkQUFBQUFRQkJoUHNaQ3dJQkFRQkJrUHNaQ3kzLy8vLy8vLy8vLzRWMUFRQUZHUUFBQVFBQUFCQmNBd0FGQUFBQUFnQUFBQU1BQUFBRkFBQUFIUUFBQUFFQVFlejdHUXNDQVFFQVFmajdHUXN0Ly8vLy8vLy8vLysyZkFFQUJoa0FBQUVBQUFBUVhBTUFCUUFBQUFJQUFBQURBQUFBQlFBQUFCMEFBQUFCQUVIVS9Ca0xBZ0VCQUVIZy9Ca0xMZi8vLy8vLy8vLy8yM1VCQUFjWkFBQUJBQUFBRUZ3REFBVUFBQUFDQUFBQUF3QUFBQVVBQUFBZEFBQUFBUUJCdlAwWkN3SUJBUUJCeVAwWkN5My8vLy8vLy8vLy8zSjFBUUFJR1FBQUFRQUFBQkJjQXdBRkFBQUFBZ0FBQUFNQUFBQUZBQUFBSFFBQUFBRUFRYVQrR1FzQ0FRRUFRYkQrR1F1akJmLy8vLy8vLy8vL053QUFBRUIvQmdBaEFBQUFGUUFBQUlDTUJ3QWlBQUFBQ0FBQUFPQ0JCZ0FqQUFBQUF3QUFBT0NFQmdBa0FBQUFGQUFBQUdDVUJ3QWxBQUFBQmdBQUFBQ0dCZ0FFQUFBQUV3QUFBRUNJQmdBbUFBQUFEQUFBQU9DYkJ3QWZBQUFBQWdBQUFHQ1BCZ0JFQUFBQURBQUFBQ0NRQmdBbkFBQUFCQUFBQUtDVUJnQUxBQUFBQ0FBQUFDQ1dCZ0FNQUFBQUZ3QUFBQ0NaQmdBTkFBQUFCUUFBQU1DaEJnQU9BQUFBQlFBQUFLQ2pCZ0FQQUFBQVR3QUFBR0NnQndBUUFBQUFJQUFBQUlDbEJnQVJBQUFBQndBQUFJQ3hCZ0FTQUFBQUJRQUFBQ0MwQmdBVEFBQUFBZ0FBQUFDMkJnQVVBQUFBS2dBQUFNQzJCZ0FWQUFBQUZBQUFBSURHQmdBV0FBQUFFUUFBQUFET0JnQVhBQUFBQkFBQUFHRFVCZ0JBQUFBQUFnQUFBT0RWQmdCQ0FBQUFDQUFBQUtEV0JnQkJBQUFBQWdBQUFLRFpCZ0JEQUFBQUJBQUFBR0RhQmdBWUFBQUFBd0FBQU9EYkJnQVpBQUFBQXdBQUFBRGRCZ0FhQUFBQUNRQUFBQ0RlQmdBYkFBQUFmZ0FBQUFDK0J3QWNBQUFBZ3dBQUFJRGhCZ0FGQUFBQUNBQUFBS0FTQndBZEFBQUFCd0FBQUtBVkJ3QWVBQUFBQXdBQUFFQVlCd0FnQUFBQTZBQUFBR0FaQndCRkFBQUFBZ0FBQUdCd0J3QkdBQUFBQXdBQUFDQnhCd0JIQUFBQUFnQUFBRUJ5QndCSUFBQUFBZ0FBQUFCekJ3QTFBQUFBRUFBQUFNQnpCd0EyQUFBQUNBQUFBTUI1QndBM0FBQUFBd0FBQU1COEJ3QTRBQUFBQXdBQUFPQjlCd0E1QUFBQUNRQUFBRUR0QndBNkFBQUFFd0FBQUFCL0J3QTdBQUFBQ0FBQUFDQ0dCd0E4QUFBQUF3QUFBQ0NKQndBOUFBQUFCQUFBQUVDS0J3QStBQUFBQ2dBQUFLRHdCd0EvQUFBQUFnQUFBTUNMQndBcEFBQUFGUUFBQUlDTUJ3QXFBQUFBREFBQUFPQ2JCd0F2QUFBQUF3QUFBQURkQmdCSkFBQUFBZ0FBQUFCekJ3QkI0SU1hQ3dOcEZ3RUFRYnFFR2dzTEFRRC8vLy8vWTRJQkFBRUFRWnFGR2dzTEFRRC8vLy8vditBQUFBSUFRZnFGR2dzTEFRRC8vLy8vNkY0QkFBUUFRZHFHR2dzTEFRRC8vLy8vbXBvQUFBZ0FRYnFIR2dzTEFRRC8vLy8vaWhnQUFCQUFRWnFJR2dzVkFRRC8vLy8vOTRnQkFBQUFBUUFCQUFBQVdGd0RBRUg0aUJvTEYvLy8vLy8vLy8vL2ZxWUJBQUFBQWdBQkFBQUFXRndEQUVIWWlSb0xDLy8vLy8vLy8vLy9hUmNCQUVHNmlob0xDd0VBLy8vLy8ycTVBQUFCQUVHYWl4b0xDd0VBLy8vLy8yYTVBQUFDQUVINml4b0xDUUVBLy8vLy8ya1hBUUJCMm93YUN3c0JBUC8vLy8rcUZ3RUFBUUJCdW8wYUN3c0JBUC8vLy8rbUZ3RUFBZ0JCbW80YUN3c0JBUC8vLy85dzlRQUFCQUJCK280YUN3c0JBUC8vLy84a0Z3QUFDQUJCMm84YUN4VUJBUC8vLy85V25RRUFBQUFCQUFFQUFBQmdYQU1BUWJpUUdnc0wvLy8vLy8vLy8vL2ROd0VBUVpxUkdnc0pBUUQvLy8vL2FSY0JBRUg2a1JvTEN3RUEvLy8vLytQMUFBQUNBRUhha2hvTEN3RUEvLy8vL3p6eUFBQUVBRUc2a3hvTEN3RUEvLy8vL3pYeUFBQUlBRUdhbEJvTEN3RUEvLy8vL3lzaUFBQVFBRUg2bEJvTEZRRUEvLy8vLzJvSkFBQkFBQUFBQVFBQUFFUmNBd0JCMnBVYUN3c0JBUC8vLy85YkNRQUFnQUJCdXBZYUN3d0JBUC8vLy85TENRQUFBQUVBUVpxWEdnc01BUUQvLy8vL1Jna0FBQUFDQUVINmx4b0xGUUVBLy8vLy96SUpBQUFBQkFBQUFRQUFBR1JjQXdCQjJwZ2FDd3dCQVAvLy8vOTRDUUFBQUFnQVFicVpHZ3NkQVFELy8vLy9KUWtBQUFBUUFBQUJBQUFBVUZ3REFBRUFBQUJVWEFNQVFabWFHZ3NlQlFFQS8vLy8vNDF4QVFBQUVBQUFBUUFBQUZCY0F3QUJBQUFBVkZ3REFFSDVtaG9MSGdVQkFQLy8vLy9uSEFFQUFDQUFBQUVBQUFCUVhBTUFBUUFBQUZSY0F3QkIyWnNhQ3g0RkFRRC8vLy8vYVh3QkFBQWdBQUFCQUFBQVVGd0RBQUVBQUFCVVhBTUFRYm1jR2dzZUJRRUEvLy8vL3hzY0FRQUFRQUFBQVFBQUFGQmNBd0FCQUFBQVZGd0RBRUdablJvTEhnVUJBUC8vLy8vemV3RUFBRUFBQUFFQUFBQlFYQU1BQVFBQUFGUmNBd0JCK1owYUN4NEZBUUQvLy8vL0pSc0JBQUNBQUFBQkFBQUFVRndEQUFFQUFBQlVYQU1BUWRtZUdnc0tCUUVBLy8vLy8ya1hBUUJCdXA4YUN4VUJBUC8vLy8vWUdBRUFBUUFBQUFFQUFBQndYQU1BUVpxZ0dnc1ZBUUQvLy8vL09Yc0JBQUFBQUFBQ0FBQUFkRndEQUVING9Cb0xGLy8vLy8vLy8vLy81bmtCQUFFQUFBQUNBQUFBZEZ3REFFSFlvUm9MRi8vLy8vLy8vLy8vcUhrQkFBSUFBQUFDQUFBQWRGd0RBRUc0b2hvTEYvLy8vLy8vLy8vL0szTUJBQVFBQUFBQ0FBQUFkRndEQUVHWW94b0xGLy8vLy8vLy8vLy93M1VCQUFnQUFBQUNBQUFBZEZ3REFFSDRveG9MRi8vLy8vLy8vLy8vSTNVQkFCQUFBQUFDQUFBQWRGd0RBRUhZcEJvTEYvLy8vLy8vLy8vL0IzVUJBQ0FBQUFBQ0FBQUFkRndEQUVHNHBSb0xGLy8vLy8vLy8vLy90SGtCQUVBQUFBQUNBQUFBZEZ3REFFR1lwaG9MRi8vLy8vLy8vLy8vcEhrQkFJQUFBQUFDQUFBQWRGd0RBRUg0cGhvTEYvLy8vLy8vLy8vLzluUUJBQUFCQUFBQkFBQUFmRndEQUVIWXB4b0xGLy8vLy8vLy8vLy9aWFVCQUFBQ0FBQUJBQUFBZkZ3REFFRzRxQm9MRi8vLy8vLy8vLy8vL1c4QkFBQUVBQUFCQUFBQWdGd0RBRUdZcVJvTEYvLy8vLy8vLy8vL0RWSUFBQUVBQUFBQkFBQUFoRndEQUVINHFSb0xGLy8vLy8vLy8vLy82MUVBQUFJQUFBQUJBQUFBaEZ3REFFSFlxaG9MRi8vLy8vLy8vLy8vKzFFQUFBUUFBQUFCQUFBQWhGd0RBRUc0cXhvTEYvLy8vLy8vLy8vLzJWRUFBQWdBQUFBQkFBQUFoRndEQUVHWXJCb0xDdi8vLy8vLy8vLy9RcUVBUWZxc0dnc0xBUUQvLy8vLzZvSUJBQUVBUWRxdEdnc0xBUUQvLy8vLzlJSUJBQUlBUWJxdUdnc0xBUUQvLy8vL042OEJBQU1BUVpxdkdnc0xBUUQvLy8vL1BJRUJBQVFBUWZxdkdnc0xBUUQvLy8vLzc0SUJBQVVBUWRxd0dnc0xBUUQvLy8vL2xxa0JBQVlBUWJxeEdnc0xBUUQvLy8vL3Bha0JBQWNBUVpxeUdnc1ZBUUQvLy8vLzZSQUFBQUFBQUFBQkFBQUFSRndEQUVINnNob0xGUUVBLy8vLy8rVzlBQUFCQUFBQUFRQUFBSWhjQXdCQjJyTWFDeFVCQVAvLy8vOFJyQUFBQWdBQUFBRUFBQUNJWEFNQVFicTBHZ3NWQVFELy8vLy9Cd2tBQUFNQUFBQUJBQUFBakZ3REFFR2F0Um9MRlFFQS8vLy8vMThsQUFBRUFBQUFBUUFBQUVSY0F3QkIrclVhQ3hVQkFQLy8vLzluNndBQUJRQUFBQUVBQUFCRVhBTUFRZHEyR2dzVkFRRC8vLy8vZ01BQUFBWUFBQUFCQUFBQWNGd0RBRUc2dHhvTEZRRUEvLy8vLy9abEFRQ1RGQUFBQVFBQUFKQmNBd0JCbUxnYUN4Zi8vLy8vLy8vLy8wUm1BUUNVRkFBQUFRQUFBSkJjQXdCQitMZ2FDeGYvLy8vLy8vLy8vOEprQVFEQkZBQUFBZ0FBQUpSY0F3QkIyTGthQ3hmLy8vLy8vLy8vL3cxM0FRREJGQUFBQWdBQUFKUmNBd0JCdUxvYUN4Zi8vLy8vLy8vLy8zSmtBUURDRkFBQUFnQUFBSlJjQXdCQm1Mc2FDeGYvLy8vLy8vLy8vN0IyQVFEQ0ZBQUFBZ0FBQUpSY0F3QkIrTHNhQ3hmLy8vLy8vLy8vL3lwaEFRRERGQUFBQWdBQUFKUmNBd0JCMkx3YUN4Zi8vLy8vLy8vLy95RnpBUURERkFBQUFnQUFBSlJjQXdCQnVMMGFDeGYvLy8vLy8vLy8vek5oQVFERUZBQUFBZ0FBQUpSY0F3QkJtTDRhQ3hmLy8vLy8vLy8vLzR0ekFRREVGQUFBQWdBQUFKUmNBd0JCK0w0YUN4Zi8vLy8vLy8vLy8rdGhBUURGRkFBQUFnQUFBSlJjQXdCQjJMOGFDeGYvLy8vLy8vLy8vMngwQVFERkZBQUFBZ0FBQUpSY0F3QkJ1TUFhQ3hmLy8vLy8vLy8vL3pSb0FRREdGQUFBQWdBQUFKUmNBd0JCbU1FYUN4Zi8vLy8vLy8vLy93bDhBUURHRkFBQUFnQUFBSlJjQXdCQitNRWFDeGYvLy8vLy8vLy8vMDV0QVFEMEZBQUFBUUFBQUp4Y0F3QkIyTUlhQ3hmLy8vLy8vLy8vLy9OdEFRRDFGQUFBQVFBQUFKeGNBd0JCdU1NYUN3ci8vLy8vLy8vLy82ckxBRUdheEJvTEZRRUEvLy8vLzQ2K0FRQUJBQUFBQVFBQUFLQmNBd0JCK3NRYUN4VUJBUC8vLy85NXVRRUFBZ0FBQUFFQUFBQ2dYQU1BUWRyRkdnc2RBUUQvLy8vL1lia0JBT1FVQUFBQkFBQUFwRndEQUFJQUFBQ29YQU1BUWJuR0dnc2VCUUVBLy8vLy96VnhBUURrRkFBQUFRQUFBS1JjQXdBQ0FBQUFxRndEQUVHWnh4b0xGZ1VCQVAvLy8vK09HZ0VBQUFBQUFBRUFBQUJFWEFNQVFmckhHZ3NWQVFELy8vLy9xY1VCQUFFQUFBQUJBQUFBUkZ3REFFSGF5Qm9MRlFFQS8vLy8vNTZwQVFBQ0FBQUFBUUFBQUhCY0F3QkJ1c2thQ3gwQkFQLy8vLytqdVFBQUF3QUFBQUVBQUFCUVhBTUFBUUFBQUZSY0F3QkJtY29hQ3g0RkFRRC8vLy8vdTNjQkFBTUFBQUFCQUFBQVVGd0RBQUVBQUFCVVhBTUFRZm5LR2dzSkJRRUEvLy8vL3lBd0FFSGF5eG9MQ3dFQS8vLy8vMDBXQUFBQkFFRzZ6Qm9MRlFFQS8vLy8veHk4QUFBQ0FBQUFBUUFBQUVSY0F3QkJtczBhQ3hVQkFQLy8vLy9URlFBQUF3QUFBQUVBQUFCRVhBTUFRZnJOR2dzTEFRRC8vLy8vaTRrQUFBUUFRZHJPR2dzTEFRRC8vLy8vSklrQUFBVUFRYnJQR2dzVkFRRC8vLy8vak84QUFBWUFBQUFDQUFBQVdGMERBRUdhMEJvTEN3RUEvLy8vLzF1ckFBQUhBRUg2MEJvTEZRRUEvLy8vLzJWRUFRQUlBQUFBQVFBQUFHQmRBd0JCMnRFYUN4VUJBUC8vLy84V01RQUFDUUFBQUFFQUFBQkVYQU1BUWJyU0dnc1ZBUUQvLy8vLzVHd0FBQW9BQUFBQkFBQUFaRndEQUVHYTB4b0xDd0VBLy8vLy84NGxBUUFMQUVINjB4b0xIUUVBLy8vLy8rRjZBQUFNQUFBQUFRQUFBRVJjQXdBQ0FBQUFaRjBEQUVIWjFCb0xIZ01CQVAvLy8vL01hUUVBMEJRQUFBSUFBQUNVWEFNQUFnQUFBR3hkQXdCQnVOVWFDeC8vLy8vLy8vLy8vd3lBQVFEUUZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFR1kxaG9MSC8vLy8vLy8vLy8veEdrQkFORVVBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRZmpXR2dzZi8vLy8vLy8vLy84RWdBRUEwUlFBQUFJQUFBQ1VYQU1BQWdBQUFHeGRBd0JCMk5jYUN4Ly8vLy8vLy8vLy8xcHBBUURhRkFBQUFnQUFBSlJjQXdBQ0FBQUFiRjBEQUVHNDJCb0xILy8vLy8vLy8vLy9PMzRCQU5vVUFBQUNBQUFBbEZ3REFBSUFBQUJzWFFNQVFaalpHZ3NmLy8vLy8vLy8vLy9KWmdFQTJ4UUFBQUlBQUFDVVhBTUFBZ0FBQUd4ZEF3QkIrTmthQ3gvLy8vLy8vLy8vLy9CNUFRRGJGQUFBQWdBQUFKUmNBd0FDQUFBQWJGMERBRUhZMmhvTEgvLy8vLy8vLy8vL1Vta0JBTjRVQUFBQ0FBQUFsRndEQUFJQUFBQnNYUU1BUWJqYkdnc2YvLy8vLy8vLy8vL21mUUVBM2hRQUFBSUFBQUNVWEFNQUFnQUFBR3hkQXdCQm1Od2FDeC8vLy8vLy8vLy8veXRqQVFEZkZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFSDQzQm9MSC8vLy8vLy8vLy8vclhVQkFOOFVBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRZGpkR2dzZi8vLy8vLy8vLy8rbWVnQUE1UlFBQUFFQUFBQ2tYQU1BQWdBQUFLaGNBd0JCdWQ0YUN4NEZBUUQvLy8vL1Ftd0JBT1VVQUFBQkFBQUFwRndEQUFJQUFBQ29YQU1BUVpuZkdnc1dCUUVBLy8vLy8wNW5BUUFKRlFBQUFRQUFBSFJkQXdCQitOOGFDeC8vLy8vLy8vLy8vOFZzQVFBYUZRQUFBUUFBQUp4Y0F3QUJBQUFBZUYwREFFSFo0Qm9MSGdRQkFQLy8vLy9zbFFFQTVSVUFBQUVBQUFCOFhRTUFBUUFBQUlCZEF3QkJ1T0VhQ3gvLy8vLy8vLy8vLzJxR0FRQXdGd0FBQVFBQUFJUmRBd0FCQUFBQWlGMERBRUdZNGhvTEgvLy8vLy8vLy8vL1hJWUJBREVYQUFBQkFBQUFoRjBEQUFFQUFBQ0lYUU1BUWZqaUdnc1gvLy8vLy8vLy8vODByd0VBQUFBQUFBSUFBQUNNWFFNQVFkcmpHZ3NWQVFELy8vLy9JcThCQUFFQUFBQURBQUFBbEYwREFFRzY1Qm9MQ3dFQS8vLy8vd3V2QVFBQ0FFR2E1Um9MRlFFQS8vLy8vNmd2QVFBREFBQUFBZ0FBQUtCZEF3QkIrdVVhQ3hVQkFQLy8vLytET2dBQUJBQUFBQUlBQUFDb1hRTUFRZHJtR2dzVkFRRC8vLy8vYkhzQUFBVUFBQUFDQUFBQXNGMERBRUc2NXhvTEZRRUEvLy8vLzBCZEFRQUdBQUFBQVFBQUFMaGRBd0JCbXVnYUN4VUJBUC8vLy85cEZ3RUFBQUFBQUFFQUFBQndYQU1BUWZyb0dnc1ZBUUQvLy8vL2t5QUJBQUVBQUFBQkFBQUFjRndEQUVIYTZSb0xGUUVBLy8vLy8xaWFBQUFDQUFBQUFRQUFBSEJjQXdCQnV1b2FDeFVCQVAvLy8vK3RQUUFBQXdBQUFBRUFBQUJ3WEFNQVFacnJHZ3NWQVFELy8vLy9FVG9CQUFRQUFBQUJBQUFBY0Z3REFFSDY2eG9MRlFFQS8vLy8veUVZQUFBQUFBQUFBUUFBQUhCY0F3QkIydXdhQ3hVQkFQLy8vLy8yaHdBQUFRQUFBQUVBQUFCd1hBTUFRYnJ0R2dzSUFRRC8vLy8vUXFFQVFacnVHZ3NWQVFELy8vLy9RZUlBQUFFQUFBQUJBQUFBUkZ3REFFSDY3aG9MRlFFQS8vLy8vOVRoQUFBQ0FBQUFBUUFBQUVSY0F3QkIydThhQ3hVQkFQLy8vLzlKNGdBQUF3QUFBQUVBQUFCRVhBTUFRYnJ3R2dzVkFRRC8vLy8vR3JZQkFBUUFBQUFCQUFBQVJGd0RBRUdhOFJvTEZRRUEvLy8vLzk2NkFBQUZBQUFBQVFBQUFFUmNBd0JCK3ZFYUN4VUJBUC8vLy84NzRnQUFCZ0FBQUFFQUFBQzhYUU1BUWRyeUdnc1ZBUUQvLy8vL3p1RUFBQWNBQUFBQkFBQUF2RjBEQUVHNjh4b0xGUUVBLy8vLy8wN2lBQUFJQUFBQUFRQUFBTHhkQXdCQm12UWFDeFVCQVAvLy8vL2M0UUFBQ1FBQUFBRUFBQUM4WFFNQVFmcjBHZ3NWQVFELy8vLy9ZYmdCQUFvQUFBQUJBQUFBdkYwREFFSGE5Um9MRlFFQS8vLy8vNlc4QVFBTEFBQUFBUUFBQUx4ZEF3QkJ1dllhQ3hVQkFQLy8vLytsdHdFQURBQUFBQUVBQUFDOFhRTUFRWnIzR2dzVkFRRC8vLy8vRnJZQkFBMEFBQUFCQUFBQXZGMERBRUg2OXhvTEZRRUEvLy8vLzJpNEFRQU9BQUFBQVFBQUFMeGRBd0JCMnZnYUN4VUJBUC8vLy84Z3RnRUFEd0FBQUFFQUFBQzhYUU1BUWJyNUdnc1ZBUUQvLy8vLys3b0FBQkFBQUFBQkFBQUF2RjBEQUVHYStob0xGUUVBLy8vLy8vRzZBQUFSQUFBQUFRQUFBTHhkQXdCQit2b2FDeFVCQVAvLy8vL1Z1Z0FBRWdBQUFBRUFBQUM4WFFNQVFkcjdHZ3NWQVFELy8vLy9CN3NBQUJNQUFBQUJBQUFBdkYwREFFRzYvQm9MRlFFQS8vLy8vK202QUFBVUFBQUFBUUFBQUx4ZEF3QkJtdjBhQ3hVQkFQLy8vLy92MEFBQUZRQUFBQUVBQUFCRVhBTUFRZnI5R2dzVkFRRC8vLy8veGRBQUFCWUFBQUFCQUFBQVJGd0RBRUhhL2hvTEZRRUEvLy8vLzdUUUFBQVhBQUFBQVFBQUFFUmNBd0JCdXY4YUN4VUJBUC8vLy8vMzBBQUFHQUFBQUFFQUFBQkVYQU1BUVpxQUd3c1ZBUUQvLy8vLzZkQUFBQmtBQUFBQkFBQUF2RjBEQUVINmdCc0xGUUVBLy8vLy83L1FBQUFhQUFBQUFRQUFBTHhkQXdCQjJvRWJDeFVCQVAvLy8vK3YwQUFBR3dBQUFBRUFBQUM4WFFNQVFicUNHd3NWQVFELy8vLy96ZEFBQUJ3QUFBQUJBQUFBdkYwREFFR2FneHNMRlFFQS8vLy8vN3ZRQUFBZEFBQUFBUUFBQUx4ZEF3QkIrb01iQ3hVQkFQLy8vLzg0MEFBQUhnQUFBQUVBQUFCRVhBTUFRZHFFR3dzVkFRRC8vLy8vRXRBQUFCOEFBQUFCQUFBQVJGd0RBRUc2aFJzTEZRRUEvLy8vLy83UEFBQWdBQUFBQVFBQUFFUmNBd0JCbW9ZYkN4VUJBUC8vLy85QjBBQUFJUUFBQUFFQUFBQkVYQU1BUWZxR0d3c1ZBUUQvLy8vL0o5QUFBQ0lBQUFBQkFBQUF2RjBEQUVIYWh4c0xGUUVBLy8vLy96SFFBQUFqQUFBQUFRQUFBTHhkQXdCQnVvZ2JDeFVCQVAvLy8vOEwwQUFBSkFBQUFBRUFBQUM4WFFNQVFacUpHd3NWQVFELy8vLy8rTThBQUNVQUFBQUJBQUFBdkYwREFFSDZpUnNMRlFFQS8vLy8veHZRQUFBbUFBQUFBUUFBQUx4ZEF3QkIyb29iQ3hVQkFQLy8vLzhHMEFBQUp3QUFBQUVBQUFDOFhRTUFRYnFMR3dzVkFRRC8vLy8vSWRBQUFDZ0FBQUFCQUFBQXdGMERBRUdhakJzTEZRRUEvLy8vLzlqUUFBQXBBQUFBQVFBQUFNQmRBd0JCK293YkN4VUJBUC8vLy84MmdRRUFBQUFBQUFFQUFBQndYQU1BUWRxTkd3c1ZBUUQvLy8vL202OEJBQUVBQUFBQkFBQUFjRndEQUVHNmpoc0xGUUVBLy8vLy83T3BBUUFDQUFBQUFRQUFBSEJjQXdCQm1vOGJDeFVCQVAvLy8vK0tyd0VBQXdBQUFBRUFBQUJ3WEFNQVFmcVBHd3NWQVFELy8vLy9nSzhCQUFRQUFBQUJBQUFBY0Z3REFFSGFrQnNMRlFFQS8vLy8vNVd2QVFBRkFBQUFBUUFBQUhCY0F3QkJ1cEViQ3hVQkFQLy8vLytJcndFQUJnQUFBQUVBQUFCd1hBTUFRWnFTR3dzVkFRRC8vLy8vZjY4QkFBY0FBQUFCQUFBQWNGd0RBRUg2a2hzTEZRRUEvLy8vLzZJRUFBQUlBQUFBQVFBQUFIQmNBd0JCMnBNYkN4VUJBUC8vLy8vVUt3RUFDUUFBQUFFQUFBQndYQU1BUWJxVUd3c1ZBUUQvLy8vL1doTUFBQW9BQUFBQkFBQUFjRndEQUVHYWxSc0xGUUVBLy8vLy8xMFRBQUFMQUFBQUFRQUFBSEJjQXdCQitwVWJDeFVCQVAvLy8vOWlFd0FBREFBQUFBRUFBQUJ3WEFNQVFkcVdHd3NWQVFELy8vLy9JOUVBQUEwQUFBQUJBQUFBY0Z3REFFRzZseHNMRlFFQS8vLy8vNUcvQUFBT0FBQUFBUUFBQUhCY0F3QkJtcGdiQ3hVQkFQLy8vLzk2cndFQUR3QUFBQUVBQUFCd1hBTUFRZnFZR3dzVkFRRC8vLy8vWVJNQUFCQUFBQUFCQUFBQWNGd0RBRUhhbVJzTEZRRUEvLy8vLzVTdkFRQVJBQUFBQVFBQUFIQmNBd0JCdXBvYkN4VUJBUC8vLy8rSHJ3RUFFZ0FBQUFFQUFBQndYQU1BUVpxYkd3c1ZBUUQvLy8vL1hZQUJBQk1BQUFBQkFBQUFjRndEQUVINm14c0xGUUVBLy8vLy8vRzFBUUFBQUFBQUFRQUFBSEJjQXdCQjJwd2JDeFVCQVAvLy8vOCt0d0VBQVFBQUFBRUFBQUJ3WEFNQVFicWRHd3NWQVFELy8vLy81N1VCQUFJQUFBQUJBQUFBY0Z3REFFR2FuaHNMRlFFQS8vLy8vek8zQVFBREFBQUFBUUFBQUhCY0F3QkIrcDRiQ3hVQkFQLy8vLytqdUFFQUJBQUFBQUVBQUFCd1hBTUFRZHFmR3dzVkFRRC8vLy8vc2JnQkFBVUFBQUFCQUFBQWNGd0RBRUc2b0JzTEZRRUEvLy8vLys3RkFRQUdBQUFBQVFBQUFIQmNBd0JCbXFFYkN4VUJBUC8vLy84SXRnRUFCd0FBQUFFQUFBQndYQU1BUWZxaEd3c1ZBUUQvLy8vL1Y3Y0JBQWdBQUFBQkFBQUFjRndEQUVIYW9oc0xGUUVBLy8vLy80SytBUUFKQUFBQUFRQUFBSEJjQXdCQnVxTWJDeFVCQVAvLy8vLzd0UUVBQ2dBQUFBRUFBQUJ3WEFNQVFacWtHd3NWQVFELy8vLy9TYmNCQUFzQUFBQUJBQUFBY0Z3REFFSDZwQnNMRlFFQS8vLy8vM1MrQVFBTUFBQUFBUUFBQUhCY0F3QkIycVViQ3hVQkFQLy8vLy94UEFBQURRQUFBQUVBQUFCd1hBTUFRYnFtR3dzVkFRRC8vLy8vL3p3QUFBNEFBQUFCQUFBQWNGd0RBRUdhcHhzTEZRRUEvLy8vLzlTNUFRQVBBQUFBQVFBQUFIQmNBd0JCK3FjYkN4VUJBUC8vLy8rVXZBRUFFQUFBQUFFQUFBQndYQU1BUWRxb0d3c0pBUUQvLy8vL0k2b0JBRUc2cVJzTEN3RUEvLy8vLytSZUFRQUJBRUdhcWhzTEN3RUEvLy8vL3ppQkFRQUNBRUg2cWhzTEN3RUEvLy8vLzJxQ0FRQURBRUhhcXhzTEZRRUEvLy8vLzkva0FBQUFBQUFBQVFBQUFNUmRBd0JCdUt3YkN4Zi8vLy8vLy8vLy94T2dBQUFCQUFBQUFRQUFBTVJkQXdCQm1LMGJDeGYvLy8vLy8vLy8vMjZDQVFBQUFBQUFBUUFBQU1oZEF3QkIrSzBiQ3hmLy8vLy8vLy8vLzFXQkFRQUJBQUFBQVFBQUFNaGRBd0JCMks0YkN4Zi8vLy8vLy8vLy84MnFBUUFDQUFBQUFRQUFBTWhkQXdCQnVLOGJDeGYvLy8vLy8vLy8vMTZCQVFBREFBQUFBUUFBQU1oZEF3QkJtTEFiQ3hmLy8vLy8vLy8vL3crcUFRQUVBQUFBQVFBQUFNaGRBd0JCK0xBYkN4Zi8vLy8vLy8vLy93T3FBUUFGQUFBQUFRQUFBTWhkQXdCQjJMRWJDeGYvLy8vLy8vLy8veUZxQVFBR0FBQUFBUUFBQU1oZEF3QkJ1TEliQ3hmLy8vLy8vLy8vLy82dUFRQUhBQUFBQVFBQUFNaGRBd0JCbUxNYkN4Zi8vLy8vLy8vLy84aXFBUUFBQUFBQUFRQUFBTVJkQXdCQitMTWJDeGYvLy8vLy8vLy8vMUJ4QVFBQkFBQUFBUUFBQU1SZEF3QkIyTFFiQ3hmLy8vLy8vLy8vLzBlQkFRQUFBQUFBQVFBQUFNaGRBd0JCdUxVYkN4Zi8vLy8vLy8vLy8xUnhBUUFCQUFBQUFRQUFBTWhkQXdCQm1MWWJDeGYvLy8vLy8vLy8vMHlCQVFBQ0FBQUFBUUFBQU1oZEF3QkIrTFliQ3hmLy8vLy8vLy8vLzNhQ0FRQURBQUFBQVFBQUFNaGRBd0JCMkxjYkN4Zi8vLy8vLy8vLy93UVpBQUFBQUFBQUFRQUFBTXhkQXdCQnVyZ2JDeFVCQVAvLy8vK1RHUUFBQVFBQUFBRUFBQURNWFFNQVFacTVHd3NkQVFELy8vLy9MSUVCQUFJQUFBQUJBQUFBekYwREFBRUFBQURRWFFNQVFmaTVHd3NYLy8vLy8vLy8vLyttQ2dBQUFBQUFBQUVBQUFCd1hBTUFRZHE2R3dzVkFRRC8vLy8vbkFvQUFBRUFBQUFCQUFBQWNGd0RBRUc2dXhzTEZRRUEvLy8vLzFqdkFBQUNBQUFBQVFBQUFIQmNBd0JCbXJ3YkN4VUJBUC8vLy85OUZRQUFBQUFBQUFFQUFBQndYQU1BUWZxOEd3c1ZBUUQvLy8vL2h4VUFBQUVBQUFBQkFBQUFjRndEQUVIYXZSc0xGUUVBLy8vLy83TExBQUFDQUFBQUFRQUFBSEJjQXdCQnVyNGJDeFVCQVAvLy8vK2FOQUFBQXdBQUFBRUFBQUJ3WEFNQVFacS9Hd3NWQVFELy8vLy90MklBQUFRQUFBQUJBQUFBY0Z3REFFSDZ2eHNMRlFFQS8vLy8vd0wxQUFBRkFBQUFBUUFBQUhCY0F3QkIyc0FiQ3hVQkFQLy8vLzgwN3dBQUJnQUFBQUVBQUFCd1hBTUFRYnJCR3dzVkFRRC8vLy8vUis4QUFBY0FBQUFCQUFBQWNGd0RBRUdhd2hzTEZRRUEvLy8vLzY2akFRQTBGd0FBQVFBQUFOUmRBd0JCK3NJYkN4VUJBUC8vLy84Tm9nQUFBQUFBQUFFQUFBQkVYQU1BUWRyREd3c1ZBUUQvLy8vL2llTUFBQUVBQUFBQkFBQUFSRndEQUVHNnhCc0xGUUVBLy8vLy8zY3JBUUFEQUFBQUFRQUFBSEJlQXdCQm1zVWJDeFVCQVAvLy8vK0hLd0VBQkFBQUFBRUFBQUIwWGdNQVFmckZHd3NWQVFELy8vLy9nMEFCQUFVQUFBQUJBQUFBUkZ3REFFSGF4aHNMRlFFQS8vLy8vMDVDQVFBR0FBQUFBUUFBQUVSY0F3QkJ1c2NiQ3hVQkFQLy8vLytKUVFFQUJ3QUFBQVlBQUFDQVhnTUFRWnJJR3dzVkFRRC8vLy8vRmtFQkFBZ0FBQUFDQUFBQXRGd0RBRUg2eUJzTEZRRUEvLy8vLzh4c0FBQUpBQUFBQlFBQUFLQmVBd0JCMnNrYkN4VUJBUC8vLy8rOEVRQUFDZ0FBQUFVQUFBREFYZ01BUWJyS0d3c1ZBUUQvLy8vLzFXd0FBQXNBQUFBQkFBQUFpRndEQUVHYXl4c0xGUUVBLy8vLy8rTnlBQUFNQUFBQUFRQUFBSWhjQXdCQitzc2JDeFVCQVAvLy8vOHdNQUVBRFFBQUFBRUFBQUNJWEFNQVFkck1Hd3NWQVFELy8vLy9pMThBQUE0QUFBQUJBQUFBaUZ3REFFRzZ6UnNMRlFFQS8vLy8vejB3QVFBUEFBQUFBUUFBQUVSY0F3QkJtczRiQ3hVQkFQLy8vLzhpTUFFQUVBQUFBQUVBQUFCRVhBTUFRZnJPR3dzVkFRRC8vLy8vSnVBQUFCRUFBQUFCQUFBQVJGd0RBRUhhenhzTEZRRUEvLy8vL3pWQ0FRQVNBQUFBQVFBQUFPUmRBd0JCdXRBYkN4VUJBUC8vLy8vN29RQUFFd0FBQUFFQUFBRGtYUU1BUVpyUkd3c1ZBUUQvLy8vL1pzd0FBQlFBQUFBQkFBQUFSRndEQUVINjBSc0xGUUVBLy8vLy94L1JBQUFXQUFBQUFRQUFBRVJjQXdCQjJ0SWJDeFVCQVAvLy8vODFzQUFBRndBQUFBRUFBQUJFWEFNQVFiclRHd3NMQVFELy8vLy9nazBBQUJnQVFaclVHd3NMQVFELy8vLy9GdVFBQUJrQVFmclVHd3NMQVFELy8vLy8zMEFCQUJvQVFkclZHd3NMQVFELy8vLy8va0FCQUJzQVFicldHd3NMQVFELy8vLy9FRUVCQUJ3QVFaclhHd3NMQVFELy8vLy80aEVBQUIwQVFmclhHd3NWQVFELy8vLy9lN3dBQUI0QUFBQUJBQUFBY0Z3REFFSGEyQnNMRlFFQS8vLy8vNlBrQUFBZkFBQUFBUUFBQUhCY0F3QkJ1dGtiQ3hVQkFQLy8vLy9MNHdBQUlBQUFBQUVBQUFCd1hBTUFRWnJhR3dzVkFRRC8vLy8vZnpRQUFDRUFBQUFCQUFBQWNGd0RBRUg2MmhzTEZRRUEvLy8vLzhSQUFRQWlBQUFBQVFBQUFIQmNBd0JCMnRzYkN4VUJBUC8vLy84azVBQUFKQUFBQUFNQUFBRFVYZ01BUWJyY0d3c1ZBUUQvLy8vL1R1TUFBQ1VBQUFBQkFBQUFjRndEQUVHYTNSc0xGUUVBLy8vLy83Qk5BQUFtQUFBQUFnQUFBT0JlQXdCQit0MGJDeFVCQVAvLy8vKzlUUUFBSndBQUFBRUFBQUJ3WEFNQVFkcmVHd3NWQVFELy8vLy82MEFCQUNnQUFBQUNBQUFBNEY0REFFRzYzeHNMRlFFQS8vLy8vL1pBQVFBcEFBQUFBd0FBQU5SZUF3QkJtdUFiQ3hVQkFQLy8vLzltRVFBQUtnQUFBQUVBQUFCRVhBTUFRZnJnR3dzVkFRRC8vLy8vK2hFQUFDc0FBQUFCQUFBQVJGd0RBRUhhNFJzTEZRRUEvLy8vLzhtQ0FRQkFFQUFBQVFBQUFPaGVBd0JCdXVJYkN4VUJBUC8vLy8rSWdnRUFRUkFBQUFFQUFBRG9YZ01BUVpyakd3c1ZBUUQvLy8vL3NvSUJBRUlRQUFBQkFBQUE2RjREQUVINjR4c0xGUUVBLy8vLy83K0NBUUJERUFBQUFRQUFBT2hlQXdCQjJ1UWJDeFVCQVAvLy8vK2xnZ0VBUkJBQUFBRUFBQURvWGdNQVFicmxHd3NkQVFELy8vLy9WTXdBQUVBUkFBQUNBQUFBN0Y0REFBRUFBQUQwWGdNQVFabm1Hd3NlQXdFQS8vLy8vK040QVFCQUVRQUFBZ0FBQU94ZUF3QUJBQUFBOUY0REFFSDU1aHNMSGdNQkFQLy8vLytBekFBQVFSRUFBQUlBQUFEc1hnTUFBUUFBQVBSZUF3QkIyZWNiQ3g0REFRRC8vLy8vRm5rQkFFRVJBQUFDQUFBQTdGNERBQUVBQUFEMFhnTUFRYm5vR3dzZUF3RUEvLy8vLzBYTUFBQkNFUUFBQWdBQUFPeGVBd0FCQUFBQTlGNERBRUdaNlJzTEhnTUJBUC8vLy8vUmVBRUFRaEVBQUFJQUFBRHNYZ01BQVFBQUFQUmVBd0JCK2VrYkN4NERBUUQvLy8vL2Njd0FBRU1SQUFBQ0FBQUE3RjREQUFFQUFBRDBYZ01BUWRucUd3c2VBd0VBLy8vLy93UjVBUUJERVFBQUFnQUFBT3hlQXdBQkFBQUE5RjREQUVHNTZ4c0xIZ01CQVAvLy8vODJ6QUFBUkJFQUFBSUFBQURzWGdNQUFRQUFBUFJlQXdCQm1ld2JDeDREQVFELy8vLy92M2dCQUVRUkFBQUNBQUFBN0Y0REFBRUFBQUQwWGdNQVFmbnNHd3NlQXdFQS8vLy8vK1VRQUFCSUVRQUFBUUFBQVBoZUF3QUJBQUFBL0Y0REFFSFo3UnNMSGdNQkFQLy8vLzgvS3dFQVNSRUFBQUVBQUFENFhnTUFBUUFBQVB4ZUF3QkJ1ZTRiQ3g0REFRRC8vLy8vZkJFQUFFb1JBQUFEQUFBQUFGOERBQU1BQUFBTVh3TUFRWm52R3dzZUF3RUEvLy8vLzFWNkFRQlFFUUFBQVFBQUFJUmNBd0FCQUFBQUdGOERBRUg0N3hzTEgvLy8vLy8vLy8vL0NCSUFBRllSQUFBQkFBQUFIRjhEQUFFQUFBQWdYd01BUWRud0d3c2VBd0VBLy8vLy8zSVJBQUJZRVFBQUFRQUFBQ1JmQXdBQkFBQUFLRjhEQUVHNThSc0xIZ01CQVAvLy8vOWVlZ0VBWEJFQUFBRUFBQUNFWEFNQUFRQUFBQmhmQXdCQm1QSWJDdzcvLy8vLy8vLy8vNHVyQVFDQUV3QkJzUEliQ3djQkFBQUErRjBEQUVINDhoc0xEdi8vLy8vLy8vLy9ySzBCQUlFVEFFR1E4eHNMQndFQUFBRDRYUU1BUWRqekd3c08vLy8vLy8vLy8vOHRyUUVBZ2hNQVFmRHpHd3NIQVFBQUFQaGRBd0JCdVBRYkN3Ny8vLy8vLy8vLy8reXNBUUNERXdCQjBQUWJDd2NCQUFBQStGMERBRUdZOVJzTER2Ly8vLy8vLy8vL3lLMEJBSVFUQUVHdzlSc0xCd0VBQUFENFhRTUFRZmoxR3dzTy8vLy8vLy8vLy85SHJRRUFoUk1BUVpEMkd3c0hBUUFBQVBoZEF3QkIyUFliQ3c3Ly8vLy8vLy8vLzN5c0FRQ0dFd0JCOFBZYkN3Y0JBQUFBK0YwREFFRzQ5eHNMSC8vLy8vLy8vLy8vdm04QkFKWVRBQUFCQUFBQUNGMERBQUVBQUFBTVhRTUFRWmo0R3dzZi8vLy8vLy8vLy84YlpnRUFoUlFBQUFJQUFBQXNYd01BQWdBQUFEUmZBd0JCK1BnYkN4Ly8vLy8vLy8vLy8wTmtBUUNKRkFBQUFRQUFBQkJlQXdBQkFBQUFGRjREQUVIWStSc0xILy8vLy8vLy8vLy8vV1VCQUlvVUFBQUJBQUFBRUY0REFBRUFBQUFVWGdNQVFiajZHd3NmLy8vLy8vLy8vLzlNWUFFQWpSUUFBQUlBQUFBOFh3TUFBZ0FBQUVSZkF3QkJtUHNiQ3gvLy8vLy8vLy8vLzE1Z0FRQ09GQUFBQWdBQUFEeGZBd0FDQUFBQVJGOERBRUg0K3hzTEgvLy8vLy8vLy8vL01YQUJBSkFVQUFBQkFBQUFURjhEQUFFQUFBQlFYd01BUWRqOEd3c2YvLy8vLy8vLy8vL0RZQUVBbWhRQUFBRUFBQUNRWEFNQUFRQUFBQmhlQXdCQnVQMGJDeC8vLy8vLy8vLy8vODlnQVFDYkZBQUFBUUFBQUpCY0F3QUJBQUFBR0Y0REFFR1kvaHNMSC8vLy8vLy8vLy8vaW1JQkFKd1VBQUFCQUFBQWtGd0RBQUVBQUFBWVhnTUFRZmorR3dzZi8vLy8vLy8vLy85MFlBRUFuUlFBQUFFQUFBQ1FYQU1BQVFBQUFCaGVBd0JCMlA4YkN4Ly8vLy8vLy8vLy80cGdBUUNlRkFBQUFRQUFBSkJjQXdBQkFBQUFHRjREQUVHNGdCd0xILy8vLy8vLy8vLy9QV0FCQUo4VUFBQUJBQUFBa0Z3REFBRUFBQUFZWGdNQVFaaUJIQXNmLy8vLy8vLy8vLyt6WUFFQW9CUUFBQUVBQUFDUVhBTUFBUUFBQUJoZUF3QkIrSUVjQ3gvLy8vLy8vLy8vLzNoaUFRQ2hGQUFBQVFBQUFKQmNBd0FCQUFBQUdGNERBRUhZZ2h3TEgvLy8vLy8vLy8vL25ud0JBS1lVQUFBQ0FBQUFIRjREQUFJQUFBQWtYZ01BUWJpREhBc2YvLy8vLy8vLy8vL2RhQUVBcGhRQUFBSUFBQUFjWGdNQUFnQUFBQ1JlQXdCQm1JUWNDeC8vLy8vLy8vLy8vLzkxQVFDbkZBQUFBZ0FBQUJ4ZUF3QUNBQUFBSkY0REFFSDRoQndMSC8vLy8vLy8vLy8va21NQkFLY1VBQUFDQUFBQUhGNERBQUlBQUFBa1hnTUFRZGlGSEFzZi8vLy8vLy8vLy8vUWJ3RUFyQlFBQUFJQUFBQlVYd01BQWdBQUFGeGZBd0JCdUlZY0N4Ly8vLy8vLy8vLy80Sm1BUUNzRkFBQUFnQUFBR1JmQXdBQ0FBQUFYRjhEQUVHWWh4d0xILy8vLy8vLy8vLy9JbXNCQUswVUFBQUNBQUFBVkY4REFBSUFBQUJjWHdNQVFmaUhIQXNmLy8vLy8vLy8vLzlqWlFFQXJSUUFBQUlBQUFCa1h3TUFBZ0FBQUZ4ZkF3QkIySWdjQ3gvLy8vLy8vLy8vLzdSckFRQ3VGQUFBQVFBQUFKeGNBd0FCQUFBQWVGMERBRUc0aVJ3TEgvLy8vLy8vLy8vL3pXc0JBSzhVQUFBQkFBQUFuRndEQUFFQUFBQjRYUU1BUVppS0hBc2YvLy8vLy8vLy8vL2xhd0VBc0JRQUFBRUFBQUNjWEFNQUFRQUFBSGhkQXdCQitJb2NDeC8vLy8vLy8vLy8vK3h2QVFDekZBQUFBUUFBQUp4Y0F3QUJBQUFBZUYwREFFSFlpeHdMSC8vLy8vLy8vLy8vaW1rQkFNY1VBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRYmlNSEFzZi8vLy8vLy8vLy85SmZnRUF4eFFBQUFJQUFBQ1VYQU1BQWdBQUFHeGRBd0JCbUkwY0N4Ly8vLy8vLy8vLy81Rm1BUURJRkFBQUFnQUFBSlJjQXdBQ0FBQUFiRjBEQUVINGpSd0xILy8vLy8vLy8vLy9pSGtCQU1nVUFBQUNBQUFBbEZ3REFBSUFBQUJzWFFNQVFkaU9IQXNmLy8vLy8vLy8vLzhHWlFFQXlSUUFBQUlBQUFDVVhBTUFBZ0FBQUd4ZEF3QkJ1SThjQ3gvLy8vLy8vLy8vLzVOM0FRREpGQUFBQWdBQUFKUmNBd0FDQUFBQWJGMERBRUdZa0J3TEgvLy8vLy8vLy8vL3JtUUJBTW9VQUFBQ0FBQUFsRndEQUFJQUFBQnNYUU1BUWZpUUhBc2YvLy8vLy8vLy8vLzRkZ0VBeWhRQUFBSUFBQUNVWEFNQUFnQUFBR3hkQXdCQjJKRWNDeC8vLy8vLy8vLy8vK2hrQVFETEZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFRzRraHdMSC8vLy8vLy8vLy8vZFhjQkFNc1VBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRWmlUSEFzZi8vLy8vLy8vLy8rTlpBRUF6QlFBQUFJQUFBQ1VYQU1BQWdBQUFHeGRBd0JCK0pNY0N4Ly8vLy8vLy8vLy85ZDJBUURNRkFBQUFnQUFBSlJjQXdBQ0FBQUFiRjBEQUVIWWxCd0xILy8vLy8vLy8vLy8wbVFCQU0wVUFBQUNBQUFBbEZ3REFBSUFBQUJzWFFNQVFiaVZIQXNmLy8vLy8vLy8vLzlUZHdFQXpSUUFBQUlBQUFDVVhBTUFBZ0FBQUd4ZEF3QkJtSlljQ3gvLy8vLy8vLy8vL3gxZ0FRRE9GQUFBQWdBQUFKUmNBd0FDQUFBQWJGMERBRUg0bGh3TEgvLy8vLy8vLy8vL3RISUJBTTRVQUFBQ0FBQUFsRndEQUFJQUFBQnNYUU1BUWRpWEhBc2YvLy8vLy8vLy8vK2dYd0VBenhRQUFBSUFBQUNVWEFNQUFnQUFBR3hkQXdCQnVKZ2NDeC8vLy8vLy8vLy8vM1J5QVFEUEZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFR1ltUndMSC8vLy8vLy8vLy8vQzJrQkFOSVVBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRZmlaSEFzZi8vLy8vLy8vLy8vemZBRUEwaFFBQUFJQUFBQ1VYQU1BQWdBQUFHeGRBd0JCMkpvY0N4Ly8vLy8vLy8vLy83cGhBUURURkFBQUFnQUFBSlJjQXdBQ0FBQUFiRjBEQUVHNG14d0xILy8vLy8vLy8vLy9QblFCQU5NVUFBQUNBQUFBbEZ3REFBSUFBQUJzWFFNQVFaaWNIQXNmLy8vLy8vLy8vLzhhYWdFQTFCUUFBQUVBQUFCc1h3TUFBUUFBQUhCZkF3QkIrSndjQ3gvLy8vLy8vLy8vLy9Wb0FRRFZGQUFBQWdBQUFKUmNBd0FDQUFBQWJGMERBRUhZblJ3TEgvLy8vLy8vLy8vL3Ezd0JBTlVVQUFBQ0FBQUFsRndEQUFJQUFBQnNYUU1BUWJpZUhBc2YvLy8vLy8vLy8vL2Jad0VBMWhRQUFBRUFBQUIwWHdNQUFRQUFBSGhmQXdCQm1KOGNDeC8vLy8vLy8vLy8vd1ZpQVFEbkZBQUFBZ0FBQUpSY0F3QUNBQUFBYkYwREFFSDRueHdMSC8vLy8vLy8vLy8vNG5RQkFPY1VBQUFDQUFBQWxGd0RBQUlBQUFCc1hRTUFRZGlnSEFzZi8vLy8vLy8vLy84aGNnRUE2QlFBQUFFQUFBQjhYd01BQVFBQUFJQmZBd0JCdUtFY0N4Ly8vLy8vLy8vLy95cHFBUUQrRkFBQUFRQUFBSVJmQXdBQkFBQUFpRjhEQUVHWW9od0xILy8vLy8vLy8vLy80R0FCQVA4VUFBQUJBQUFBaEY4REFBRUFBQUNJWHdNQVFmaWlIQXNmLy8vLy8vLy8vLzgzYWdFQUFCVUFBQUVBQUFDRVh3TUFBUUFBQUloZkF3QkIyS01jQ3gvLy8vLy8vLy8vLzBCcUFRQUJGUUFBQVFBQUFJUmZBd0FCQUFBQWlGOERBRUc0cEJ3TEgvLy8vLy8vLy8vLytIZ0JBSVVYQUFBQkFBQUFqRjhEQUFFQUFBQ1FYd01BUVppbEhBc0wvLy8vLy8vLy8vL2VLd0VBUWZxbEhBc0xBUUQvLy8vL0JDd0JBQUVBUWRxbUhBc0xBUUQvLy8vL2k0a0FBQUlBUWJxbkhBc0xBUUQvLy8vL280a0FBQU1BUVpxb0hBc0xBUUQvLy8vL3liQUFBQVFBUWZxb0hBc1ZBUUQvLy8vL3J3b0FBQVVBQUFBQkFBQUFVRndEQUVIWnFSd0xGZ1VCQVAvLy8vL3BjUUVBQlFBQUFBRUFBQUJRWEFNQVFibXFIQXNXQlFFQS8vLy8vOTkzQVFBR0FBQUFBUUFBQUh4ZkF3QkJtS3NjQ3hmLy8vLy8vLy8vLzJvcEFRQUFBQUFBQXdBQUFKUmZBd0JCK3FzY0N4VUJBUC8vLy84c3VnQUFBUUFBQUFNQUFBQ1VYd01BUWRxc0hBc1ZBUUQvLy8vL0hyb0FBQUlBQUFBREFBQUFsRjhEQUVHNnJSd0xGUUVBLy8vLy8yRXBBUUFEQUFBQUFRQUFBS0JmQXdCQm1hNGNDeDREQVFELy8vLy93V2dCQUFZQUFBQUJBQUFBcEY4REFBRUFBQUNvWHdNQVFmaXVIQXNmLy8vLy8vLy8vLzlJWlFFQUJ3QUFBQUVBQUFDa1h3TUFBUUFBQUtoZkF3QkIySzhjQ3gvLy8vLy8vLy8vL3kxbEFRQUlBQUFBQVFBQUFLUmZBd0FCQUFBQXFGOERBRUc0c0J3TEYvLy8vLy8vLy8vL0l6TUFBQUFBQUFBQkFBQUFjRndEQUVHYXNSd0xGUUVBLy8vLy8wVEFBQUFCQUFBQUFRQUFBSEJjQXdCQityRWNDeFVCQVAvLy8vL1lpUUFBQWdBQUFBRUFBQUJ3WEFNQVFkcXlIQXNJQVFELy8vLy9uQkFBUWJxekhBc1ZBUUQvLy8vLytId0FBQUVBQUFBQkFBQUE0RjBEQUVHYXRCd0xGUUVBLy8vLy93Y0pBQUFDQUFBQUFRQUFBRVJjQXdCQityUWNDeFVCQVAvLy8vL0xyd0FBQXdBQUFBRUFBQUJFWEFNQVFkcTFIQXNMQVFELy8vLy9OVmtBQUFRQVFicTJIQXNMQVFELy8vLy8xQ1VCQUFVQVFacTNIQXNMQVFELy8vLy9nTUFBQUFZQVFmcTNIQXNWQVFELy8vLy9hN2NCQUFjQUFBQUJBQUFBY0Z3REFFSGF1QndMRlFFQS8vLy8veE43QUFBSUFBQUFBUUFBQUhCY0F3QkJ1cmtjQ3dzQkFQLy8vLzlqdHdFQUNRQkJtcm9jQ3dzQkFQLy8vLzladVFFQUNnQkIrcm9jQ3dzQkFQLy8vLzlUdVFFQUN3QkIycnNjQ3hVQkFQLy8vLzk1WWdBQURBQUFBQUVBQUFDc1h3TUFRYnE4SEFzVkFRRC8vLy8vMzBNQkFBMEFBQUFCQUFBQWNGd0RBRUdhdlJ3TEZRRUEvLy8vLzFQdkFBQU9BQUFBQVFBQUFMQmZBd0JCK3IwY0N4VUJBUC8vLy84SG13QUFEd0FBQUFFQUFBQ3dYd01BUWRxK0hBc1ZBUUQvLy8vL1dsMEFBQkVBQUFBQkFBQUFjRndEQUVHNnZ4d0xDd0VBLy8vLy85eE5BQUFTQUVIUXZ4d0xCd0VBQUFDMFh3TUFRWnJBSEFzVkFRRC8vLy8vSXVzQUFCTUFBQUFCQUFBQWNGd0RBRUg2d0J3TEZRRUEvLy8vLzBSekFBQVVBQUFBQVFBQUFIQmNBd0JCMnNFY0N4VUJBUC8vLy85dUlRRUFGUUFBQUFFQUFBQkVYQU1BUWJyQ0hBc0xBUUQvLy8vL1hiY0JBQllBUVpyREhBc1ZBUUQvLy8vL2NPTUFBQmNBQUFBQkFBQUFpRndEQUVINnd4d0xGUUVBLy8vLy8xN2pBQUFZQUFBQUFRQUFBSXhjQXdCQjJzUWNDeFVCQVAvLy8vOUpQZ0VBR1FBQUFBRUFBQUJFWEFNQVFickZIQXNWQVFELy8vLy9xeG9CQUJzQUFBQUJBQUFBUkZ3REFFR2F4aHdMRlFFQS8vLy8veUxkQUFBY0FBQUFBUUFBQUVSY0F3QkIrc1ljQ3hVQkFQLy8vLy9WM1FBQUhRQUFBQUVBQUFCRVhBTUFRZHJISEFzVkFRRC8vLy8va3QwQUFCNEFBQUFCQUFBQVJGd0RBRUc2eUJ3TEZRRUEvLy8vLzdUZEFBQWZBQUFBQVFBQUFFUmNBd0JCbXNrY0N4VUJBUC8vLy85M0t3RUFJQUFBQUFFQUFBQkVYQU1BUWZySkhBc1ZBUUQvLy8vL2h5c0JBQ0VBQUFBQkFBQUFSRndEQUVIYXlod0xGUUVBLy8vLy8yZ09BQUFpQUFBQUFRQUFBTGhmQXdCQnVzc2NDeFVCQVAvLy8vL08zd0FBSXdBQUFBRUFBQUJFWEFNQVFack1IQXNWQVFELy8vLy8yRGtBQUNRQUFBQUJBQUFBdkY4REFFSDZ6QndMRlFFQS8vLy8vK0k1QUFBbEFBQUFBUUFBQUVSY0F3QkIyczBjQ3hVQkFQLy8vLzkrYndBQUpnQUFBQUVBQUFDZ1hBTUFRYnJPSEFzTEFRRC8vLy8vRHJZQkFDY0FRWnJQSEFzVkFRRC8vLy8vUmlVQUFDZ0FBQUFCQUFBQVJGd0RBRUg2enh3TEZRRUEvLy8vL3dvTUFBQXBBQUFBQVFBQUFFUmNBd0JCMnRBY0N4VUJBUC8vLy8vVk1nRUFLZ0FBQUFFQUFBQkVYQU1BUWJyUkhBc0xBUUQvLy8vL0xhOEJBQ3NBUVpyU0hBc1ZBUUQvLy8vL0phOEJBQ3dBQUFBQkFBQUF3RjhEQUVINjBod0xGUUVBLy8vLy8zY09BQUF0QUFBQUFRQUFBRVJjQXdCQjJ0TWNDd3NCQVAvLy8vLzdlZ0FBTGdCQnV0UWNDeFVCQVAvLy8vL3ZlZ0FBTHdBQUFBRUFBQURFWHdNQVFaclZIQXNWQVFELy8vLy9ydzRBQURBQUFBQUJBQUFBUkZ3REFFSDYxUndMRlFFQS8vLy8venhHQUFBeEFBQUFBUUFBQUVSY0F3QkIydFljQ3hVQkFQLy8vLytXQ1FBQU1nQUFBQUVBQUFCRVhBTUFRYnJYSEFzVkFRRC8vLy8vK2IwQUFETUFBQUFCQUFBQVJGd0RBRUdhMkJ3TEZRRUEvLy8vLyt1cEFBQTBBQUFBQVFBQUFFUmNBd0JCK3RnY0N4VUJBUC8vLy8rSHp3QUFOUUFBQUFFQUFBQkVYQU1BUWRyWkhBc1ZBUUQvLy8vL00xRUFBRFlBQUFBQkFBQUFqRndEQUVHNjJod0xGUUVBLy8vLy8yUTlBQUEzQUFBQUFRQUFBRVJjQXdCQm10c2NDeFVCQVAvLy8vOUZQUUFBT0FBQUFBRUFBQUJFWEFNQVFmcmJIQXNWQVFELy8vLy9DeGtBQURrQUFBQUJBQUFBakZ3REFFSGEzQndMRlFFQS8vLy8vN0hTQUFBNkFBQUFBUUFBQU1oZkF3QkJ1ZDBjQ3hZQkFRRC8vLy8veEhVQUFEc0FBQUFCQUFBQWNGd0RBRUdaM2h3TEZnRUJBUC8vLy85aUlRRUFQQUFBQUFFQUFBRE1Yd01BUWZuZUhBc01BUUVBLy8vLy84VzdBQUE5QUVIWjN4d0xGZ01CQVAvLy8vK0Q3Z0FBUGdBQUFBRUFBQURRWHdNQVFibmdIQXNXQXdFQS8vLy8vN1pEQVFBL0FBQUFBUUFBQU5CZkF3QkJtZUVjQ3hZREFRRC8vLy8vUGhzQUFFQUFBQUFCQUFBQTBGOERBRUg1NFJ3TEZnTUJBUC8vLy85V0d3RUFRUUFBQUFFQUFBRFFYd01BUWRuaUhBc1dBd0VBLy8vLy8xSGxBQUJDQUFBQUFRQUFBTkJmQXdCQnVlTWNDeFlEQVFELy8vLy9oem9CQUVNQUFBQUJBQUFBMEY4REFFR1o1QndMRmdNQkFQLy8vLzliUHdFQVJBQUFBQUVBQUFEUVh3TUFRZm5rSEFzTUF3RUEvLy8vLzcxc0FBQkZBRUhaNVJ3TERBVUJBUC8vLy8rbEVRQUFSZ0JCdWVZY0N3d0ZBUUQvLy8vL25xMEFBRWNBUVpubkhBc05CZ0VBLy8vLy81V0NBUUJGRUFCQnNPY2NDd2NCQUFBQTFGOERBRUg2NXh3TEhRRUEvLy8vL3o1NkFRQkdFUUFBQVFBQUFFUmNBd0FCQUFBQUdGOERBRUhZNkJ3TER2Ly8vLy8vLy8vLy9uSUJBRWNSQUVIdzZCd0xCd0VBQUFEMFhnTUFRYmpwSEFzZi8vLy8vLy8vLy8rU1RBQUFTeEVBQUFFQUFBQkVYQU1BQVFBQUFQeGVBd0JCbWVvY0N4NERBUUQvLy8vLzNYSUJBRXdSQUFBQkFBQUFSRndEQUFFQUFBRFlYd01BUWZqcUhBc2YvLy8vLy8vLy8vOTBkQUVBVFJFQUFBRUFBQURjWHdNQUFRQUFBTmhmQXdCQjJPc2NDeC8vLy8vLy8vLy8vNTkwQVFCT0VRQUFBUUFBQUVSY0F3QUJBQUFBMkY4REFFRzQ3QndMRHYvLy8vLy8vLy8vQUhvQkFFOFJBRUhRN0J3TEJ3RUFBQURnWHdNQVFaanRIQXNPLy8vLy8vLy8vLy9YUmdBQVVSRUFRYkR0SEFzSEFRQUFBT1JmQXdCQitlMGNDdzBEQVFELy8vLy9oYmNCQUZFUkFFR1E3aHdMQndFQUFBRGtYd01BUWRudUhBc2VBd0VBLy8vLy84MUdBQUJTRVFBQUFnQUFBT2hmQXdBQkFBQUE1RjhEQUVHNTd4d0xIZ01CQVAvLy8vOTB0d0VBVWhFQUFBSUFBQURvWHdNQUFRQUFBT1JmQXdCQm1mQWNDdzBEQVFELy8vLy9IYmNCQUZNUkFFR3c4QndMQndFQUFBRGtYd01BUWZud0hBc05Bd0VBLy8vLy80ZTJBUUJVRVFCQmtQRWNDd2NCQUFBQTVGOERBRUhaOFJ3TERRTUJBUC8vLy8vbWlRQUFWUkVBUWZEeEhBc0hBUUFBQUNCZkF3QkJ1ZkljQ3g0REFRRC8vLy8vc0JRQUFGY1JBQUFCQUFBQVJGd0RBQUVBQUFBb1h3TUFRWm56SEFzZUF3RUEvLy8vLzB0NkFBQlpFUUFBQVFBQUFFUmNBd0FCQUFBQThGOERBRUg1OHh3TEhnTUJBUC8vLy8rR1N3QUFXaEVBQUFFQUFBRDBYd01BQVFBQUFQQmZBd0JCMmZRY0N3MERBUUQvLy8vL0JVNEFBRjBSQUVIdzlCd0xCd0VBQUFENFh3TUFRYmoxSEFzTy8vLy8vLy8vLy8rOUlRRUFYeEVBUWREMUhBc0hBUUFBQU9oY0F3QkJtUFljQ3c3Ly8vLy8vLy8vLzdWR0FBQmdFUUJCc1BZY0N3Y0JBQUFBL0Y4REFFSDU5aHdMSGdVQkFQLy8vLytyUmdBQVlSRUFBQUVBQUFBQVlBTUFBUUFBQVB4ZkF3QkIyZmNjQ3cwRkFRRC8vLy8vMHJVQkFHSVJBRUh3OXh3TEJ3RUFBQUQ4WHdNQVFibjRIQXNOQlFFQS8vLy8vOW5rQUFCd0VRQkIwUGdjQ3djQkFBQUE4RndEQUVHWitSd0xEUVFCQVAvLy8vOE5vQUFBY1JFQVFiRDVIQXNIQVFBQUFQQmNBd0JCK2ZrY0N3MEVBUUQvLy8vL3dPUUFBSElSQUVHUStod0xCd0VBQUFEd1hBTUFRZG42SEFzTkJBRUEvLy8vL3hlcUFRQnpFUUJCOFBvY0N3Y0JBQUFBOEZ3REFFRzUreHdMRFFRQkFQLy8vLy9ZWGdFQWRCRUFRZEQ3SEFzSEFRQUFBUEJjQXdCQm1md2NDeDRFQVFELy8vLy9qM2dCQUhjUkFBQUJBQUFBUkZ3REFBRUFBQUFFWUFNQVFmajhIQXNmLy8vLy8vLy8vLy9PY1FFQWVCRUFBQUVBQUFCRVhBTUFBUUFBQUFSZ0F3QkIyUDBjQ3gvLy8vLy8vLy8vLzBSNUFRQitFUUFBQWdBQUFIUmNBd0FDQUFBQUNHQURBRUc0L2h3TEgvLy8vLy8vLy8vL1pIa0JBSDhSQUFBQkFBQUFSRndEQUFFQUFBQ0FYd01BUVpqL0hBc2YvLy8vLy8vLy8vOWdyUUVBa0JNQUFBRUFBQUJFWEFNQUFRQUFBQkJnQXdCQitQOGNDeC8vLy8vLy8vLy8vNEd0QVFDUkV3QUFBUUFBQUVSY0F3QUJBQUFBRkdBREFFSFlnQjBMSC8vLy8vLy8vLy8va3F3QkFKSVRBQUFCQUFBQVJGd0RBQUVBQUFBWVlBTUFRYmlCSFFzZi8vLy8vLy8vLy84UmF3RUFsUk1BQUFFQUFBQkVYQU1BQVFBQUFBeGRBd0JCbUlJZEN4Ly8vLy8vLy8vLy81ZXRBUUNYRXdBQUFRQUFBRVJjQXdBQkFBQUFIR0FEQUVINGdoMExILy8vLy8vLy8vLy9HM0FCQUpnVEFBQUJBQUFBUkZ3REFBRUFBQUFnWUFNQVFkaURIUXNPLy8vLy8vLy8vLzhvZVFFQXZ4TUFRZkNESFFzSEFRQUFBQ1JnQXdCQnVJUWRDeC8vLy8vLy8vLy8vejlvQVFDQkZBQUFBUUFBQU9SZEF3QUJBQUFBQUY0REFFR1loUjBMSC8vLy8vLy8vLy8vUzJZQkFJTVVBQUFCQUFBQWpGd0RBQUVBQUFBSVhnTUFRZmlGSFFzZi8vLy8vLy8vLy84QmJBRUFoaFFBQUFFQUFBQW9ZQU1BQWdBQUFDeGdBd0JCMklZZEN4Ly8vLy8vLy8vLy85SmlBUUNHRkFBQUFRQUFBQ2hnQXdBQ0FBQUFMR0FEQUVHNGh4MExILy8vLy8vLy8vLy9GV1lCQUljVUFBQUJBQUFBTkdBREFBRUFBQUE0WUFNQVFaaUlIUXNmLy8vLy8vLy8vLytnWUFFQWl4UUFBQUVBQUFBTVhnTUFBUUFBQUJSZUF3QkIrSWdkQ3gvLy8vLy8vLy8vL3l0aUFRQ01GQUFBQVFBQUFDUmZBd0FCQUFBQVBHQURBRUhZaVIwTEgvLy8vLy8vLy8vL0tYQUJBSkVVQUFBQkFBQUFSRndEQUFFQUFBQlFYd01BUWJpS0hRc2YvLy8vLy8vLy8vOW5aZ0VBa2hRQUFBRUFBQUJFWEFNQUFRQUFBQmhlQXdCQm1Jc2RDdzcvLy8vLy8vLy8vd0ZoQVFDaUZBQkJzSXNkQ3djQkFBQUFRR0FEQUVINGl4MExILy8vLy8vLy8vLy9tRzhCQUtNVUFBQUJBQUFBUkZ3REFBRUFBQUI0WFFNQVFkaU1IUXNPLy8vLy8vLy8vLytVZmdFQXBCUUFRZkNNSFFzSEFnQUFBQ1JlQXdCQnVJMGRDdzcvLy8vLy8vLy8vNjVwQVFDa0ZBQkIwSTBkQ3djQ0FBQUFKRjREQUVHWWpoMExEdi8vLy8vLy8vLy9uV0lCQUtnVUFFR3dqaDBMQndFQUFBQXNYUU1BUWZpT0hRc2YvLy8vLy8vLy8vK1JhZ0VBcXhRQUFBRUFBQUJFWEFNQUFnQUFBRnhmQXdCQjJJOGRDeC8vLy8vLy8vLy8vMk5uQVFDckZBQUFBUUFBQUVSY0F3QUNBQUFBWEY4REFFRzRrQjBMRHYvLy8vLy8vLy8vRzJrQkFMRVVBRUhRa0IwTEJ3RUFBQUNvWHdNQVFaaVJIUXNmLy8vLy8vLy8vLyswdXdBQXRSUUFBQUVBQUFCRVhBTUFBUUFBQURCZUF3QkIrWkVkQ3g0RkFRRC8vLy8vT20wQkFMVVVBQUFCQUFBQVJGd0RBQUVBQUFBd1hnTUFRZG1TSFFzZUJRRUEvLy8vLy9JTkFBQzJGQUFBQVFBQUFFUmNBd0FCQUFBQU1GNERBRUc1a3gwTEhnVUJBUC8vLy8ra2FnRUF0aFFBQUFFQUFBQkVYQU1BQVFBQUFEQmVBd0JCbVpRZEN4NEZBUUQvLy8vLy90d0FBTGNVQUFBQkFBQUF1RjBEQUFFQUFBQXdYZ01BUWZtVUhRc2VCUUVBLy8vLy94MXZBUUMzRkFBQUFRQUFBTGhkQXdBQkFBQUFNRjREQUVIWmxSMExIZ1VCQVAvLy8vOUUzUUFBdUJRQUFBRUFBQURFWHdNQUFRQUFBREJlQXdCQnVaWWRDeDRGQVFELy8vLy9SRzhCQUxnVUFBQUJBQUFBeEY4REFBRUFBQUF3WGdNQVFabVhIUXNlQlFFQS8vLy8vMnZkQUFDNUZBQUFBUUFBQUVSZ0F3QUJBQUFBTUY0REFFSDVseDBMSGdVQkFQLy8vLzl1YndFQXVSUUFBQUVBQUFCRVlBTUFBUUFBQURCZUF3QkIyWmdkQ3g0RkFRRC8vLy8vR053QUFMb1VBQUFCQUFBQUxGNERBQUVBQUFBd1hnTUFRYm1aSFFzZUJRRUEvLy8vL3lWdUFRQzZGQUFBQVFBQUFDeGVBd0FCQUFBQU1GNERBRUdabWgwTEhnVUJBUC8vLy8vYTNBQUF1eFFBQUFFQUFBQXNYZ01BQVFBQUFEQmVBd0JCK1pvZEN4NEZBUUQvLy8vLzltNEJBTHNVQUFBQkFBQUFMRjREQUFFQUFBQXdYZ01BUWRtYkhRc2VCUUVBLy8vLy81SGNBQUM4RkFBQUFRQUFBQ3hlQXdBQkFBQUFNRjREQUVHNW5CMExIZ1VCQVAvLy8vK25iZ0VBdkJRQUFBRUFBQUFzWGdNQUFRQUFBREJlQXdCQm1aMGRDeDRGQVFELy8vLy90dHdBQUwwVUFBQUJBQUFBTEY0REFBRUFBQUF3WGdNQVFmbWRIUXNlQlFFQS8vLy8vODl1QVFDOUZBQUFBUUFBQUN4ZUF3QUJBQUFBTUY0REFFSFpuaDBMSGdVQkFQLy8vLy94MndBQXZoUUFBQUlBQUFCSVlBTUFBUUFBQURCZUF3QkJ1WjhkQ3g0RkFRRC8vLy8vKzIwQkFMNFVBQUFDQUFBQVNHQURBQUVBQUFBd1hnTUFRWm1nSFFzZUJRRUEvLy8vL3ozY0FBQy9GQUFBQWdBQUFGQmdBd0FCQUFBQU1GNERBRUg1b0IwTEhnVUJBUC8vLy85TmJnRUF2eFFBQUFJQUFBQlFZQU1BQVFBQUFEQmVBd0JCMmFFZEN4NEZBUUQvLy8vL1o5d0FBTUFVQUFBQ0FBQUFXR0FEQUFFQUFBQXdYZ01BUWJtaUhRc2VCUUVBLy8vLy8zcHVBUURBRkFBQUFnQUFBRmhnQXdBQkFBQUFNRjREQUVHWm94MExIZ1VCQVAvLy8vOTFaZ0VBM0JRQUFBRUFBQUJFWEFNQUFRQUFBSEJmQXdCQitLTWRDeC8vLy8vLy8vLy8vN3RpQVFEZEZBQUFBUUFBQUVSY0F3QUJBQUFBZUY4REFFSFlwQjBMRHYvLy8vLy8vLy8vcGNnQUFPRVVBRUh3cEIwTEJ3RUFBQUJVWEFNQVFibWxIUXNOQlFFQS8vLy8vMlo0QVFEaEZBQkIwS1VkQ3djQkFBQUFWRndEQUVHWnBoMExEUVVCQVAvLy8vOGpGZ0VBNGhRQVFiQ21IUXNIQVFBQUFGUmNBd0JCK2FZZEN3MEZBUUQvLy8vLy9Ib0JBT0lVQUVHUXB4MExCd0VBQUFCVVhBTUFRZG1uSFFzZUJRRUEvLy8vL3lCWkFBRGpGQUFBQVFBQUFFUmNBd0FDQUFBQXFGd0RBRUc1cUIwTEhnVUJBUC8vLy85d2F3RUE0eFFBQUFFQUFBQkVYQU1BQWdBQUFLaGNBd0JCbWFrZEN3MEZBUUQvLy8vL2MyTUJBT1lVQUVHd3FSMExCd0VBQUFBc1hRTUFRZmlwSFFzZi8vLy8vLy8vLy8rbWVBRUE2UlFBQUFFQUFBQkVYQU1BQVFBQUFJQmZBd0JCMktvZEN4Ly8vLy8vLy8vLy8xaGZBUUR0RkFBQUFRQUFBRVJjQXdBQkFBQUFZR0FEQUVHNHF4MExILy8vLy8vLy8vLy8wbTBCQVBNVUFBQUJBQUFBUkZ3REFBRUFBQUE0WFFNQVFaaXNIUXNmLy8vLy8vLy8vLytzYlFFQS9CUUFBQUVBQUFCRVhBTUFBUUFBQURoZEF3QkIrS3dkQ3gvLy8vLy8vLy8vLy9KaEFRRDlGQUFBQVFBQUFFUmNBd0FCQUFBQWlGOERBRUhZclIwTEgvLy8vLy8vLy8vL2pHMEJBQUlWQUFBQkFBQUFSRndEQUFFQUFBQTRYUU1BUWJpdUhRc2YvLy8vLy8vLy8vOFpzQUFBQXhVQUFBRUFBQUJFWEFNQUFRQUFBR1JnQXdCQm1hOGRDeDRHQVFELy8vLy9FRzBCQUFNVkFBQUJBQUFBUkZ3REFBRUFBQUJrWUFNQVFmbXZIUXNlQmdFQS8vLy8vOTFzQVFBRkZRQUFBZ0FBQUhSY0F3QUJBQUFBYUdBREFFSFlzQjBMSC8vLy8vLy8vLy8vUUdNQkFBY1ZBQUFCQUFBQWZGOERBQUVBQUFCc1lBTUFRYml4SFFzTy8vLy8vLy8vLy85eFp3RUFEaFVBUWRDeEhRc0hBUUFBQUhCZ0F3QkJtTElkQ3c3Ly8vLy8vLy8vLzRtZEFRREFGUUJCc0xJZEN3Y0JBQUFBZEdBREFFSDRzaDBMRHYvLy8vLy8vLy8vQmFnQkFNRVZBRUdRc3gwTEJ3RUFBQUIwWUFNQVFkaXpIUXNPLy8vLy8vLy8vLzhncUFFQXdoVUFRZkN6SFFzSEFRQUFBSFJnQXdCQnVMUWRDdzcvLy8vLy8vLy8venFvQVFETEZRQkIwTFFkQ3djQkFBQUFlR0FEQUVHWXRSMExEdi8vLy8vLy8vLy8rNFVCQU00VkFFR3d0UjBMQndFQUFBQjhZQU1BUWZpMUhRc08vLy8vLy8vLy8vL2tud0VBenhVQVFaQzJIUXNIQVFBQUFIeGdBd0JCMkxZZEN4Ly8vLy8vLy8vLy8rdW9BUURRRlFBQUFRQUFBRVJjQXdBQkFBQUFnR0FEQUVHNHR4MExEdi8vLy8vLy8vLy94WTBCQU9NVkFFSFF0eDBMQndFQUFBQ0FYUU1BUVppNEhRc08vLy8vLy8vLy8vK1hrUUVBNUJVQVFiQzRIUXNIQVFBQUFJQmRBd0JCK0xnZEN3Ny8vLy8vLy8vLy94YVlBUURtRlFCQmtMa2RDd2NCQUFBQWhHQURBRUhZdVIwTER2Ly8vLy8vLy8vLzdHb0JBT3dWQUVId3VSMExCd0VBQUFDSVlBTUFRYmk2SFFzTy8vLy8vLy8vLy8vVmFnRUE3UlVBUWRDNkhRc0hBUUFBQUloZ0F3QkJtTHNkQ3c3Ly8vLy8vLy8vLzc1cUFRRHdGUUJCc0xzZEN3Y0JBQUFBaUdBREFFSDR1eDBMSC8vLy8vLy8vLy8vQ0p3QkFQRVZBQUFCQUFBQWpHQURBQUVBQUFDUVlBTUFRZGk4SFFzTy8vLy8vLy8vLy84emhnRUE4eFVBUWZDOEhRc0hBUUFBQUpCZ0F3QkJ1TDBkQ3c3Ly8vLy8vLy8vLzBGN0FRRDlGUUJCMEwwZEN3Y0JBQUFBbEdBREFFR1l2aDBMRHYvLy8vLy8vLy8vT0pZQkFFQVdBRUd3dmgwTEJ3RUFBQUNZWUFNQVFmaStIUXNPLy8vLy8vLy8vLy9ocGdFQVFSWUFRWkMvSFFzSEFRQUFBSmhnQXdCQjJMOGRDdzcvLy8vLy8vLy8veXVuQVFCQ0ZnQkI4TDhkQ3djQkFBQUFtR0FEQUVHNHdCMExEdi8vLy8vLy8vLy92NFlCQUxrV0FFSFF3QjBMQndFQUFBQ2NZQU1BUVpqQkhRc08vLy8vLy8vLy8vOUdtQUVBdlJZQVFiREJIUXNIQVFBQUFIeGdBd0JCK01FZEN3Ny8vLy8vLy8vLy93U1FBUURBRmdCQmtNSWRDd2NCQUFBQVRGNERBRUhZd2gwTEgvLy8vLy8vLy8vL0U2QUJBTTBXQUFBQkFBQUFjRndEQUFFQUFBQ2dZQU1BUWJqREhRc08vLy8vLy8vLy8vL2JqUUVBMUJZQVFkRERIUXNIQVFBQUFLUmdBd0JCbU1RZEN3Ny8vLy8vLy8vLy96bUtBUURWRmdCQnNNUWRDd2NCQUFBQXFHQURBRUg0eEIwTER2Ly8vLy8vLy8vL3dvOEJBUDRXQUVHUXhSMExCd0VBQUFDc1lBTUFRZGpGSFFzTy8vLy8vLy8vLy8vZ2p3RUFBQmNBUWZERkhRc0hBUUFBQUxCZ0F3QkJ1TVlkQ3c3Ly8vLy8vLy8vL3oyUUFRQUVGd0JCME1ZZEN3Y0JBQUFBVUYwREFFR1l4eDBMRHYvLy8vLy8vLy8vT1pBQkFBa1hBRUd3eHgwTEJ3RUFBQUJRWFFNQVFmakhIUXNPLy8vLy8vLy8vLytPa0FFQUNoY0FRWkRJSFFzSEFRQUFBTFJnQXdCQjJNZ2RDdzcvLy8vLy8vLy8veDZRQVFBUUZ3QkI4TWdkQ3djQkFBQUF1R0FEQUVHNHlSMExEdi8vLy8vLy8vLy9xcHdCQUJJWEFFSFF5UjBMQndFQUFBQzhZQU1BUVpqS0hRc08vLy8vLy8vLy8vOXhtQUVBRkJjQVFiREtIUXNIQVFBQUFNQmdBd0JCK01vZEN3Ny8vLy8vLy8vLy84R2FBUUFXRndCQmtNc2RDd2NCQUFBQWJGd0RBRUhZeXgwTER2Ly8vLy8vLy8vL1U1QUJBQndYQUVId3l4MExCd0VBQUFERVlBTUFRYmpNSFFzTy8vLy8vLy8vLy85WmxnRUFJQmNBUWRETUhRc0hBUUFBQU1oZ0F3QkJtTTBkQ3c3Ly8vLy8vLy8vLzE2S0FRQWlGd0JCc00wZEN3Y0JBQUFBekdBREFFSDR6UjBMRHYvLy8vLy8vLy8vcHBBQkFDOFhBRUdRemgwTEJ3RUFBQUNJWFFNQVFkak9IUXNPLy8vLy8vLy8vLzhibkFFQU14Y0FRZkRPSFFzSEFRQUFBTkJnQXdCQnVNOGRDdzcvLy8vLy8vLy8vOUNRQVFBM0Z3QkIwTThkQ3djQkFBQUExR0FEQUVHWTBCMExEdi8vLy8vLy8vLy92WkFCQURrWEFFR3cwQjBMQndFQUFBRFlZQU1BUWZqUUhRc08vLy8vLy8vLy8vOEltd0VBUEJjQVFaRFJIUXNIQVFBQUFOeGdBd0JCMk5FZEN3Ny8vLy8vLy8vLy8xSy9BQUNBRndCQjhORWRDd2NCQUFBQTRHQURBRUc1MGgwTERRWUJBUC8vLy8vdGR3RUFnQmNBUWREU0hRc0hBUUFBQU9CZ0F3QkJtZE1kQ3g0R0FRRC8vLy8vU3pNQUFJRVhBQUFCQUFBQTVHQURBQUVBQUFEZ1lBTUFRZm5USFFzZUJnRUEvLy8vLzVsekFRQ0JGd0FBQVFBQUFPUmdBd0FCQUFBQTRHQURBRUhaMUIwTERRWUJBUC8vLy85MlBBRUFnaGNBUWZEVUhRc0hBUUFBQU9CZ0F3QkJ1ZFVkQ3cwR0FRRC8vLy8vTG4wQkFJSVhBRUhRMVIwTEJ3RUFBQURnWUFNQVFabldIUXNOQmdFQS8vLy8vNW80QUFDREZ3QkJzTllkQ3djQkFBQUE0R0FEQUVINTFoMExEUVlCQVAvLy8vOFBkQUVBZ3hjQVFaRFhIUXNIQVFBQUFPQmdBd0JCMmRjZEN3MEdBUUQvLy8vLzlYZ0JBSVFYQUVIdzF4MExCd0VBQUFDUVh3TUFRYmpZSFFzTy8vLy8vLy8vLy8vN1RnQUFpUmNBUWREWUhRc0hBUUFBQU9oZ0F3QkJtTmtkQ3gvLy8vLy8vLy8vL3hCNkFRQ0tGd0FBQVFBQUFOQmZBd0FCQUFBQTdHQURBRUg0MlIwTER2Ly8vLy8vLy8vL0lYRUJBSkVYQUVHUTJoMExCd0VBQUFEd1lBTUFRZGphSFFzTy8vLy8vLy8vLy84TmNRRUFraGNBUWZEYUhRc0hBUUFBQVBCZ0F3QkJ1TnNkQ3c3Ly8vLy8vLy8vL3ppY0FRREpGd0JCME5zZEN3Y0JBQUFBOUdBREFFR1kzQjBMRHYvLy8vLy8vLy8vVnAwQkFNNFhBRUd3M0IwTEJ3RUFBQUQ0WUFNQVFmamNIUXNPLy8vLy8vLy8vLy81Y0FFQXp4Y0FRWkRkSFFzSEFRQUFBUHhnQXdCQjJOMGRDdzcvLy8vLy8vLy8vMk9kQVFEaUZ3QkI4TjBkQ3djQkFBQUFBR0VEQUVHNDNoMExEdi8vLy8vLy8vLy9YcE1CQVAwWEFFSFEzaDBMQndFQUFBQUVZUU1BUVpqZkhRc08vLy8vLy8vLy8vK3ZrUUVBSGhnQVFiRGZIUXNIQVFBQUFBaGhBd0JCK044ZEN3Ny8vLy8vLy8vLy8zcCtBUUFBR1FCQmtPQWRDd2NCQUFBQURHRURBRUhZNEIwTEYvLy8vLy8vLy8vL2FIWUJBQUFBQUFBQkFBQUFFR0VEQUVHNDRSMExGLy8vLy8vLy8vLy9uM1lCQUFFQUFBQUJBQUFBRUdFREFFR1k0aDBMRi8vLy8vLy8vLy8vSEhzQkFBQUFBQUFCQUFBQUVHRURBRUg0NGgwTEYvLy8vLy8vLy8vL2Vuc0JBQUVBQUFBQkFBQUFFR0VEQUVIWTR4MExGLy8vLy8vLy8vLy9CSDBCQUFJQUFBQUJBQUFBRUdFREFFRzQ1QjBMRi8vLy8vLy8vLy8vVVhzQkFBQUFBQUFCQUFBQUVHRURBRUdZNVIwTEYvLy8vLy8vLy8vL09JQUJBQUVBQUFBQkFBQUFFR0VEQUVINDVSMExDdi8vLy8vLy8vLy9ZVE1BUVpEbUhRc0hBUUFBQU9CZ0F3QkIyZVlkQ3dvR0FRRC8vLy8vc25NQkFFSHc1aDBMQndFQUFBRGdZQU1BUWJubkhRc0tCZ0VBLy8vLy8ya1hBUUJCbXVnZEN3c0JBUC8vLy8vdE9BRUFBUUJCK3VnZEN3c0JBUC8vLy8rRzd3QUFBZ0JCMnVrZEN3c0JBUC8vLy8vcVJBRUFBd0JCdXVvZEN3c0JBUC8vLy85dHl3QUFCQUJCbXVzZEN3c0JBUC8vLy8vMW9nQUFDQUJCK3VzZEN3c0JBUC8vLy85dXlRQUFFQUJCMnV3ZEN3c0JBUC8vLy85ZXl3QUFJQUJCdXUwZEN3c0JBUC8vLy84V013QUFRQUJCbXU0ZEN3c0JBUC8vLy85b093RUFnQUJCK3U0ZEN3d0JBUC8vLy85dWJnQUFBQUVBUWRydkhRc01BUUQvLy8vL1ZYOEFBQUFDQUVHNjhCMExEQUVBLy8vLy82a2RBUUFBQkFCQm12RWRDd3dCQVAvLy8vL3pLZ0VBQUFnQVFmcnhIUXNNQVFELy8vLy8zeW9CQUFBUUFFSGE4aDBMREFFQS8vLy8vMHczQVFBQUlBQkJ1dk1kQ3drQkFQLy8vLysvUEFFQVFacjBIUXNMQVFELy8vLy9aRVlBQUFFQVFmcjBIUXNMQVFELy8vLy9Gcm9BQUFJQVFkcjFIUXNMQVFELy8vLy8vendBQUFRQVFicjJIUXNMQVFELy8vLy9BendCQUFVQVFacjNIUXNMQVFELy8vLy81SWNBQUFZQVFmcjNIUXNMQVFELy8vLy8yRHNCQUFjQVFkcjRIUXNMQVFELy8vLy8xNGNBQUFnQVFicjVIUXNJQVFELy8vLy9Xa29BUVpyNkhRc0xBUUQvLy8vL04vVUFBQUVBUWZyNkhRc0xBUUQvLy8vL2hiY0FBQUlBUWRyN0hRc0pBUUQvLy8vLzlnb0JBRUc2L0IwTEN3RUEvLy8vLzZVTEFRQUJBRUdhL1IwTEN3RUEvLy8vL3lVTEFRQUNBRUg2L1IwTENRRUEvLy8vLzJrWEFRQkIydjRkQ3dzQkFQLy8vLy90T0FFQUFRQkJ1djhkQ3dzQkFQLy8vLytHN3dBQUFnQkJtb0FlQ3dzQkFQLy8vLy9xUkFFQUF3QkIrb0FlQ3dzQkFQLy8vLzl0eXdBQUJBQkIyb0VlQ3dzQkFQLy8vLy8xb2dBQUNBQkJ1b0llQ3dzQkFQLy8vLzl1eVFBQUVBQkJtb01lQ3dzQkFQLy8vLzlleXdBQUlBQkIrb01lQ3dzQkFQLy8vLzhXTXdBQVFBQkIyb1FlQ3dzQkFQLy8vLzlvT3dFQWdBQkJ1b1VlQ3d3QkFQLy8vLzl1YmdBQUFBRUFRWnFHSGdzTUFRRC8vLy8vVlg4QUFBQUNBRUg2aGg0TERBRUEvLy8vLzZrZEFRQUFCQUJCMm9jZUN3d0JBUC8vLy8vektnRUFBQWdBUWJxSUhnc01BUUQvLy8vLzN5b0JBQUFRQUVHYWlSNExEQUVBLy8vLy8wdzNBUUFBSUFCQitva2VDd3dCQVAvLy8vODFTZ0FBQUVBQVFkcUtIZ3NNQVFELy8vLy9VZW9BQUFDQUFFRzZpeDRMRFFFQS8vLy8vd1FxQVFBQUFBRUFRWnFNSGdzSkFRRC8vLy8vdnp3QkFFSDZqQjRMQ3dFQS8vLy8vMlJHQUFBQkFFSGFqUjRMQ3dFQS8vLy8veGE2QUFBQ0FFRzZqaDRMQ3dFQS8vLy8vLzg4QUFBREFFR2FqeDRMQ3dFQS8vLy8vd004QVFBRUFFSDZqeDRMQ3dFQS8vLy8vK1NIQUFBRkFFSGFrQjRMQ3dFQS8vLy8vOWc3QVFBR0FFRzZrUjRMQ3dFQS8vLy8vOWVIQUFBSEFFR2FraDRMQ0FFQS8vLy8vMXBLQUVINmtoNExDd0VBLy8vLy96ZjFBQUFCQUVIYWt4NExDd0VBLy8vLy80VzNBQUFDQUVHNmxCNExDUUVBLy8vLy8vWUtBUUJCbXBVZUN3c0JBUC8vLy8rbEN3RUFBUUJCK3BVZUN3c0JBUC8vLy84bEN3RUFBZ0JCMnBZZUN3c0JBUC8vLy8vS0N3RUFBd0JCdXBjZUN3a0JBUC8vLy85YkdnRUFRWnFZSGdzTEFRRC8vLy8vVWE4QUFBRUFRZnFZSGdzSkFRRC8vLy8vYVJjQkFFSGFtUjRMRlFFQS8vLy8vLzFpQUFBQkFBQUFBUUFBQUVSY0F3QkIrSmtlQ3dFQkFFRzZtaDRMQ3dFQS8vLy8vK295QVFBQ0FFSFltaDRMQVFFQVFacWJIZ3NMQVFELy8vLy9xRDhCQUFRQVFiaWJIZ3NGQVFBQUFBRUFRZnFiSGdzTEFRRC8vLy8vQXpRQUFBZ0FRWmljSGdzQkFRQkIycHdlQ3hVQkFQLy8vLytUTkFBQUVBQUFBQUVBQUFCSVhBTUFRZmljSGdzQkFRQkJ1cDBlQ3hVQkFQLy8vLys4UkFBQUlBQUFBQUVBQUFCSVhBTUFRZGlkSGdzQkFRQkJtcDRlQ3dzQkFQLy8vLy9lR2dFQVFBQkJ1SjRlQ3dFQkFFSDZuaDRMRlFFQS8vLy8vOVV5QVFDQUFBQUFBUUFBQUV4Y0F3QkJtSjhlQ3dFQkFFSGFueDRMSHdFQS8vLy8vOVFjQVFBQUFRQUFBUUFBQUZCY0F3QUJBQUFBVkZ3REFBVUFRYm1nSGdzZ0JRRUEvLy8vLzFOOEFRQUFBUUFBQVFBQUFGQmNBd0FCQUFBQVZGd0RBQVVBUVptaEhnc2dCUUVBLy8vLy93b2NBUUFBQWdBQUFRQUFBRkJjQXdBQkFBQUFWRndEQUFVQVFmbWhIZ3NnQlFFQS8vLy8vOTk3QVFBQUFnQUFBUUFBQUZCY0F3QUJBQUFBVkZ3REFBVUFRZG1pSGdzZUJRRUEvLy8vLysyL0FBQUFCQUFBQVFBQUFGQmNBd0FCQUFBQVZGd0RBRUc1b3g0TEhnVUJBUC8vLy84U2VBRUFBQVFBQUFFQUFBQlFYQU1BQVFBQUFGUmNBd0JCbWFRZUN4NEZBUUQvLy8vLy9iOEFBQUFJQUFBQkFBQUFVRndEQUFFQUFBQlVYQU1BUWZta0hnc2VCUUVBLy8vLy95VjRBUUFBQ0FBQUFRQUFBRkJjQXdBQkFBQUFWRndEQUVIWnBSNExEUVVCQVAvLy8vK3VNd0VBQUJBQVFibW1IZ3NOQkFFQS8vLy8vNk16QVFBQUlBQkJtYWNlQ3cwRUFRRC8vLy8vSGNzQUFBQkFBRUg1cHg0TERnWUJBUC8vLy8vQlJBQUFBQUFCQUVHWXFCNExBUUVBUWRxb0hnc0pBUUQvLy8vL2FSY0JBRUc2cVI0TEN3RUEvLy8vLzhXK0FBQUJBRUdhcWg0TEN3RUEvLy8vLzhHK0FBQUNBRUg2cWg0TEN3RUEvLy8vLzJMdkFBQUVBRUhacXg0TERBRUJBUC8vLy8rZTBRQUFDQUJCK0tzZUN3RUdBRUc1ckI0TERBRUJBUC8vLy84ZFVBQUFFQUJCMkt3ZUN3RUdBRUdaclI0TERBUUJBUC8vLy84UFVBQUFJQUJCdUswZUN3RUdBRUg1clI0TERBUUJBUC8vLy8vbEdnRUFRQUJCbUs0ZUN3RUdBRUhacmg0TERBUUJBUC8vLy8vZ0hBQUFnQUJCK0s0ZUN3RUdBRUc1cng0TERRUUJBUC8vLy8vcUhBQUFBQUVBUWRpdkhnc0JCZ0JCbWJBZUN4WUVBUUQvLy8vL0Naa0JBQUFBQVFBQkFBQUFYRndEQUVHNHNCNExBUVlBUWZpd0hnc1gvLy8vLy8vLy8vK1doZ0VBQUFBQ0FBRUFBQUJjWEFNQVFaaXhIZ3NCQmdCQjJMRWVDeGYvLy8vLy8vLy8vNnFHQVFBQUFBUUFBUUFBQUZ4Y0F3QkIrTEVlQ3dFR0FFRzRzaDRMRi8vLy8vLy8vLy8va3A0QkFBQUFDQUFCQUFBQVhGd0RBRUhZc2g0TEFRWUFRWml6SGdzWC8vLy8vLy8vLy8vSm9BRUFBQUFRQUFFQUFBQmNYQU1BUWJpekhnc0JCZ0JCK0xNZUN4Zi8vLy8vLy8vLy82eWFBUUFBQUNBQUFRQUFBRnhjQXdCQm1MUWVDd0VHQUVIWXRCNExGLy8vLy8vLy8vLy9rbzhCQUFBQVFBQUJBQUFBWEZ3REFFSDR0QjRMQVFZQVFiaTFIZ3NYLy8vLy8vLy8vLytobGdFQUFBQ0FBQUVBQUFCY1hBTUFRWmkySGdzWC8vLy8vLy8vLy84cWlnRUFBQUFBQVFFQUFBQmNYQU1BUWJpMkhnc0JCZ0JCK0xZZUN4Zi8vLy8vLy8vLy85aUdBUUFBQUFBQ0FRQUFBRnhjQXdCQm1MY2VDd0VHQUVIWXR4NExDLy8vLy8vLy8vLy9hUmNCQUVHNnVCNExDd0VBLy8vLy95VWJBUUFCQUVHYXVSNExDd0VBLy8vLy8vczdBUUFDQUVHNHVSNExBUVlBUWZxNUhnc0xBUUQvLy8vL0hjc0FBQVFBUWRxNkhnc2ZBUUQvLy8vL3Z4d0JBQWdBQUFBQkFBQUFVRndEQUFFQUFBQlVYQU1BQlFCQnVic2VDeUFGQVFELy8vLy9PM3dCQUFnQUFBQUJBQUFBVUZ3REFBRUFBQUJVWEFNQUJRQkJtYndlQ3lBRkFRRC8vLy8vOXhzQkFCQUFBQUFCQUFBQVVGd0RBQUVBQUFCVVhBTUFCUUJCK2J3ZUN5QUZBUUQvLy8vL3lYc0JBQkFBQUFBQkFBQUFVRndEQUFFQUFBQlVYQU1BQlFCQjJiMGVDeDRGQVFELy8vLy92bTRBQUNBQUFBQUJBQUFBVUZ3REFBRUFBQUJVWEFNQVFibStIZ3NlQlFFQS8vLy8vNWgxQVFBZ0FBQUFBUUFBQUZCY0F3QUJBQUFBVkZ3REFFR1p2eDRMSUFVQkFQLy8vLytnekFBQUFBQUJBQUVBQUFCb1hBTUFBUUFBQUd4Y0F3QUJBRUg0dng0TElmLy8vLy8vLy8vL2o4d0FBQUFBQWdBQkFBQUFhRndEQUFFQUFBQnNYQU1BQVFCQjJNQWVDeGYvLy8vLy8vLy8vNFJRQUFBQUFBQUFBUUFBQUl4Y0F3QkIrTUFlQ3dFR0FFRzZ3UjRMRlFFQS8vLy8vOC9LQUFBQkFBQUFBUUFBQUloY0F3QkJtc0llQ3hVQkFQLy8vLzlHdVFBQUFnQUFBQUVBQUFDSVhBTUFRZnJDSGdzVkFRRC8vLy8vOVQ0QkFBTUFBQUFCQUFBQWlGd0RBRUhhd3g0TEZRRUEvLy8vLzgwVUFBQUVBQUFBQVFBQUFJaGNBd0JCdXNRZUN4VUJBUC8vLy8rK0ZBQUFCUUFBQUFFQUFBQ0lYQU1BUVpyRkhnc1ZBUUQvLy8vL1VIa0FBQVlBQUFBQkFBQUFSRndEQUVINnhSNExGUUVBLy8vLy80b3pBQUFIQUFBQUFRQUFBRVJjQXdCQjJzWWVDeFVCQVAvLy8vOTZNd0FBQ0FBQUFBRUFBQUJFWEFNQVFickhIZ3NWQVFELy8vLy90ejRBQUFrQUFBQUJBQUFBUkZ3REFFR2F5QjRMRlFFQS8vLy8vM0FvQVFBS0FBQUFBUUFBQUloY0F3QkIrc2dlQ3hVQkFQLy8vLzhWWFFFQUN3QUFBQUVBQUFDd1hBTUFRZHJKSGdzVkFRRC8vLy8vQitBQUFBd0FBQUFCQUFBQVJGd0RBRUc2eWg0TEZRRUEvLy8vLzZaeUFBQU9BQUFBQVFBQUFFUmNBd0JCbXNzZUN4VUJBUC8vLy84T1J3QUFEd0FBQUFFQUFBQkVYQU1BUWZyTEhnc1ZBUUQvLy8vL09qNEJBQkFBQUFBQkFBQUFSRndEQUVIYXpCNExDd0VBLy8vLy80M2tBQUFSQUVINHpCNExDUVlBQUFBR0FBQUFCZ0JCdXMwZUN4VUJBUC8vLy8vREhnQUFFZ0FBQUFFQUFBQndYQU1BUWRqTkhnc0pCZ0FBQUFZQUFBQUdBRUdhemg0TEZRRUEvLy8vLzFJL0FBQVRBQUFBQVFBQUFJeGNBd0JCK3M0ZUN4VUJBUC8vLy85cFhRQUFGQUFBQUFFQUFBQ01YQU1BUWRyUEhnc1ZBUUQvLy8vL0dnd0FBQlVBQUFBQkFBQUFqRndEQUVHNjBCNExGUUVBLy8vLy93VmVBQUFXQUFBQUFnQUFBTFJjQXdCQm10RWVDeFVCQVAvLy8vOHVEQUFBRndBQUFBRUFBQUNNWEFNQVFmclJIZ3NWQVFELy8vLy9UbUVBQUJnQUFBQUJBQUFBaUZ3REFFSGEwaDRMRlFFQS8vLy8vMkJkQUFBWkFBQUFBUUFBQUloY0F3QkJ1dE1lQ3hVQkFQLy8vLzk1WHdBQUdnQUFBQVFBQUFEQVhBTUFRZGpUSGdzQkJnQkJtdFFlQ3hVQkFQLy8vLzlGUHdBQUd3QUFBQU1BQUFEUVhBTUFRZnJVSGdzVkFRRC8vLy8vWHBvQUFCd0FBQUFCQUFBQWpGd0RBRUhhMVI0TEZRRUEvLy8vLzI2YUFBQWRBQUFBQVFBQUFJeGNBd0JCdXRZZUN4VUJBUC8vLy8vUkhnQUFIZ0FBQUFFQUFBQndYQU1BUWRqV0hnc0JCZ0JCbXRjZUN4VUJBUC8vLy85YTRRQUFId0FBQUFFQUFBQndYQU1BUWZyWEhnc1ZBUUQvLy8vL1VHd0FBQ0VBQUFBQkFBQUFjRndEQUVIWjJCNExGZ0VCQVAvLy8vOVVhd0FBSWdBQUFBRUFBQUJ3WEFNQVFiblpIZ3NXQVFFQS8vLy8veVRrQUFBakFBQUFBUUFBQU54Y0F3QkIyTmtlQ3dFR0FFR1oyaDRMRmdFQkFQLy8vLzh6aVFBQUpBQUFBQUVBQUFEY1hBTUFRYmphSGdzQkJnQkIrZG9lQ3hZQkFRRC8vLy8vMDBBQkFDVUFBQUFCQUFBQTNGd0RBRUdZMng0TEFRRUFRZG5iSGdzTUFnRUEvLy8vLzE1QkFRQW1BRUg0Mng0TENRRUFBQUFCQUFBQUFRQkJ1ZHdlQ3hZQ0FRRC8vLy8vakVBQkFDY0FBQUFCQUFBQWNGd0RBRUhZM0I0TENRRUFBQUFCQUFBQUFRQkJtZDBlQ3g0Q0FRRC8vLy8vdjNJQkFFVVJBQUFCQUFBQVJGd0RBQUVBQUFEZ1hBTUFRZmpkSGdzZi8vLy8vLy8vLy8vSElRRUFYaEVBQUFFQUFBRGtYQU1BQVFBQUFPaGNBd0JCMk40ZUN5SC8vLy8vLy8vLy85bmtBQUJyRVFBQUFRQUFBT3hjQXdBQkFBQUE4RndEQUFZQVFibmZIZ3NnQkFFQS8vLy8vdzJnQUFCc0VRQUFBUUFBQVBSY0F3QUJBQUFBOEZ3REFBWUFRWm5nSGdzZ0JBRUEvLy8vLzhEa0FBQnRFUUFBQVFBQUFQaGNBd0FCQUFBQThGd0RBQVlBUWZuZ0hnc2dCQUVBLy8vLy94ZXFBUUJ1RVFBQUFRQUFBUHhjQXdBQkFBQUE4RndEQUFZQVFkbmhIZ3NnQkFFQS8vLy8vOWhlQVFCdkVRQUFBUUFBQUFCZEF3QUJBQUFBOEZ3REFBWUFRYm5pSGdzZUJBRUEvLy8vLzFpckFRQ1pFd0FBQVFBQUFFUmNBd0FCQUFBQUJGMERBRUdZNHg0TEgvLy8vLy8vLy8vL3AyOEJBS01UQUFBQkFBQUFDRjBEQUFFQUFBQU1YUU1BUWZqakhnc2YvLy8vLy8vLy8vOHpxd0VBMXhNQUFBRUFBQUFJWFFNQUFnQUFBQkJkQXdCQjJPUWVDeC8vLy8vLy8vLy8veG1yQVFEWUV3QUFBUUFBQUFoZEF3QUNBQUFBRUYwREFFRzQ1UjRMSC8vLy8vLy8vLy8vQXFzQkFOa1RBQUFCQUFBQUNGMERBQUlBQUFBUVhRTUFRWmptSGdzZi8vLy8vLy8vLy8vUnJBRUEyaE1BQUFFQUFBQUlYUU1BQWdBQUFCQmRBd0JCK09ZZUN4Ly8vLy8vLy8vLy83aXNBUURiRXdBQUFRQUFBQWhkQXdBQ0FBQUFFRjBEQUVIWTV4NExILy8vLy8vLy8vLy9vcXdCQU53VEFBQUJBQUFBQ0YwREFBSUFBQUFRWFFNQVFiam9IZ3NmLy8vLy8vLy8vLzlZWWdFQWxSUUFBQUlBQUFBWVhRTUFBZ0FBQUNCZEF3QkJtT2tlQ3gvLy8vLy8vLy8vLzVKckFRQ1ZGQUFBQWdBQUFCaGRBd0FDQUFBQUlGMERBRUg0NlI0TElmLy8vLy8vLy8vL0dHSUJBSllVQUFBQ0FBQUFHRjBEQUFJQUFBQWdYUU1BQmdCQjJPb2VDeUgvLy8vLy8vLy8vMXhyQVFDV0ZBQUFBZ0FBQUJoZEF3QUNBQUFBSUYwREFBWUFRYmpySGdzZi8vLy8vLy8vLy8ra1lnRUFxUlFBQUFFQUFBQW9YUU1BQVFBQUFDeGRBd0JCbU93ZUN4Ly8vLy8vLy8vLy8zcGpBUUNxRkFBQUFRQUFBREJkQXdBQkFBQUFMRjBEQUVINDdCNExILy8vLy8vLy8vLy9abUlCQUxJVUFBQUNBQUFBR0YwREFBSUFBQUFnWFFNQVFkanRIZ3NmLy8vLy8vLy8vLytoYXdFQXNoUUFBQUlBQUFBWVhRTUFBZ0FBQUNCZEF3QkJ1TzRlQ3gvLy8vLy8vLy8vLzVsd0FRRDJGQUFBQVFBQUFEUmRBd0FCQUFBQU9GMERBRUdZN3g0TEgvLy8vLy8vLy8vL1FYQUJBUGNVQUFBQkFBQUFORjBEQUFFQUFBQTRYUU1BUWZqdkhnc2YvLy8vLy8vLy8vL1JjQUVBK0JRQUFBRUFBQUE4WFFNQUFRQUFBRGhkQXdCQjJQQWVDeC8vLy8vLy8vLy8vMzF3QVFENUZBQUFBUUFBQUR4ZEF3QUJBQUFBT0YwREFFRzQ4UjRMSC8vLy8vLy8vLy8vc25BQkFQb1VBQUFCQUFBQVFGMERBQUVBQUFBNFhRTUFRWmp5SGdzZi8vLy8vLy8vLy85Y2NBRUEreFFBQUFFQUFBQkFYUU1BQVFBQUFEaGRBd0JCK1BJZUN4Zi8vLy8vLy8vLy80MmJBUUR5RlFBQUFRQUFBRVJkQXdCQm1QTWVDd0VHQUVIWTh4NExGLy8vLy8vLy8vLy84S2NCQVBRVkFBQUJBQUFBU0YwREFFSDQ4eDRMQVFZQVFiajBIZ3NYLy8vLy8vLy8vLzl4cUFFQTlSVUFBQUVBQUFCSVhRTUFRZGowSGdzQkJnQkJtUFVlQ3hmLy8vLy8vLy8vLzVLbkFRRDJGUUFBQVFBQUFFaGRBd0JCdVBVZUN3RUdBRUg0OVI0TEYvLy8vLy8vLy8vL3NxZ0JBUGNWQUFBQkFBQUFTRjBEQUVHWTloNExBUVlBUWRqMkhnc3AvLy8vLy8vLy8vL0ptd0VBQlJjQUFBRUFBQUJNWFFNQUFRQUFBRkJkQXdBR0FBQUFCZ0FBQUFZQVFiajNIZ3NoLy8vLy8vLy8vLzhmbUFFQUJoY0FBQUVBQUFCTVhRTUFBUUFBQUZCZEF3QUdBRUdZK0I0TEgvLy8vLy8vLy8vL1pJd0JBQWNYQUFBQkFBQUFURjBEQUFFQUFBQlFYUU1BUWZqNEhnc2gvLy8vLy8vLy8vK3Nqd0VBQ0JjQUFBRUFBQUJVWFFNQUFRQUFBRkJkQXdBR0FFSFkrUjRMRi8vLy8vLy8vLy8vUzRNQkFBOFhBQUFCQUFBQVZGMERBRUg0K1I0TEFRWUFRYmo2SGdzWC8vLy8vLy8vLy8rc29nRUFDaGdBQUFFQUFBQlVYUU1BUWRqNkhnc0JCZ0JCbVBzZUN4Zi8vLy8vLy8vLy94T0tBUUFSR1FBQUFRQUFBRVJkQXdCQnVQc2VDd0VHQUVINCt4NExGLy8vLy8vLy8vLy9kTGNBQUFBQUFBQUJBQUFBUkZ3REFFSGEvQjRMRlFFQS8vLy8vMWxDQVFBQkFBQUFBZ0FBQU5oZEF3QkIrUHdlQ3dFR0FFRzYvUjRMRlFFQS8vLy8veW5QQUFBQ0FBQUFBUUFBQUVSY0F3QkJtdjRlQ3hVQkFQLy8vLzhSendBQUF3QUFBQUVBQUFCRVhBTUFRZnIrSGdzVkFRQUFBd0VBSVdvQUFBUUFBQUFCQUFBQTRGMERBRUhhL3g0TEZRRUEvLy8vL3lwcUFBQUZBQUFBQVFBQUFPQmRBd0JCdW9BZkN4VUJBUC8vLy84aEtRRUFCZ0FBQUFFQUFBQkVYQU1BUWRpQUh3c0JCZ0JCbW9FZkN4VUJBUC8vLy84dEtRRUFCd0FBQUFFQUFBRGdYUU1BUWJpQkh3c0JCZ0JCK29FZkN4VUJBUC8vLy85ZE93RUFDQUFBQUFFQUFBQkVYQU1BUWRxQ0h3c1ZBUUQvLy8vL2tqd0JBQWtBQUFBQkFBQUFSRndEQUVHNmd4OExGUUVBLy8vLy81MDhBUUFLQUFBQUFRQUFBSEJjQXdCQm1vUWZDd3NCQVAvLy8vOU91Z0FBQ3dCQnVJUWZDd0VjQUVINmhCOExGUUVBLy8vLy8wUGxBQUFOQUFBQUFRQUFBRVJjQXdCQjJvVWZDeFVCQVAvLy8vK29QUUFBRGdBQUFBRUFBQUJFWEFNQVFicUdId3NWQVFELy8vLy84dElBQUE4QUFBQUJBQUFBaUZ3REFFR2FoeDhMRlFFQS8vLy8vK00xQVFBUUFBQUFBUUFBQUVSY0F3QkIrb2NmQ3hVQkFQLy8vLy9lR2dFQUVRQUFBQUVBQUFEa1hRTUFRZHFJSHdzVkFRRC8vLy8vcURFQUFCSUFBQUFCQUFBQVJGd0RBRUc2aVI4TEN3RUEvLy8vLzdJNEFBQVRBRUdhaWg4TEN3RUEvLy8vLyt3NUFRQVVBRUg2aWg4TEN3RUEvLy8vL3lVYkFRQVZBRUhhaXg4TEZRRUEvLy8vLzJ3eEFBQVdBQUFBQVFBQUFIQmNBd0JCdW93ZkN3c0JBUC8vLy8vcklnQUFGd0JCbW8wZkN3c0JBUC8vLy8raEhBRUFHQUJCK28wZkN3c0JBUC8vLy8rYUh3RUFHUUJCMm80ZkN4VUJBUC8vLy84Y3ZBQUFHZ0FBQUFJQUFBRG9YUU1BUWJxUEh3c1ZBUUQvLy8vL0kwRUJBQnNBQUFBQ0FBQUE2RjBEQUVIWWp4OExBUVVBUVptUUh3c1dCQUVBLy8vLy8ycTJBQUFjQUFBQUFRQUFBSEJjQXdCQitwQWZDeFVCQVAvLy8vL2N2QUFBSFFBQUFBRUFBQUR3WFFNQVFaaVJId3NCQmdCQjJwRWZDeFVCQVAvLy8vK2hzUUFBSGdBQUFBRUFBQUJFWEFNQVFmaVJId3NCQmdCQnVwSWZDeFVCQVAvLy8vOHBJd0FBSHdBQUFBRUFBQUJFWEFNQVFkaVNId3NCQmdCQm1wTWZDeFVCQVAvLy8vOE9FZ0FBSUFBQUFBRUFBQUJFWEFNQVFiaVRId3NCQmdCQitwTWZDeFVCQVAvLy8vKyszd0FBSVFBQUFBRUFBQUJFWEFNQVFaaVVId3NCQmdCQjJwUWZDeFVCQVAvLy8vODBOUUFBSWdBQUFBRUFBQUJFWEFNQVFmaVVId3NCQmdCQnVwVWZDeFVCQVAvLy8vK1ROQUFBSXdBQUFBRUFBQUJFWEFNQVFkaVZId3NCQmdCQm1wWWZDeFVCQVAvLy8vOEpld0FBSkFBQUFBRUFBQUN3WEFNQVFiaVdId3NCQmdCQitwWWZDeFVCQVAvLy8vODZLUUVBSlFBQUFBRUFBQUN3WEFNQVFaaVhId3NCQmdCQjJwY2ZDeFVCQVAvLy8vOUVZd0FBSmdBQUFBRUFBQUJ3WEFNQVFmaVhId3NCR2dCQnVwZ2ZDd3NCQVAvLy8vK1hLQUVBSndCQjJKZ2ZDd0VYQUVHYW1SOExGUUVBLy8vLy80Z29BUUFvQUFBQUFRQUFBSEJjQXdCQnVKa2ZDd0VpQUVINm1SOExGUUVBLy8vLy93NVpBQUFwQUFBQUFRQUFBTXhkQXdCQm1Kb2ZDd1VLQUFBQUdBQkIycG9mQ3hVQkFQLy8vLzhEckFBQUtnQUFBQUVBQUFCRVhBTUFRYnFiSHdzVkFRRC8vLy8veWhFQUFDc0FBQUFCQUFBQXVGMERBRUhZbXg4TEFRWUFRWnFjSHdzVkFRRC8vLy8vUENVQUFDd0FBQUFCQUFBQWNGd0RBRUc0bkI4TEFRWUFRZnFjSHdzVkFRRC8vLy8vakRRQUFDMEFBQUFCQUFBQW9Gd0RBRUdZblI4TEFRWUFRZG1kSHdzV0FRRUEvLy8vLzV4QUFRQXVBQUFBQVFBQUFIQmNBd0JCK0owZkN3RUJBRUc1bmg4TEZnSUJBUC8vLy8rMFFBRUFMd0FBQUFFQUFBQ2dYQU1BUWRpZUh3c0JBUUJCbVo4ZkN3MENBUUQvLy8vLytwb0FBSFVSQUVHd254OExCd0VBQUFEMFhRTUFRZm1mSHdzTkJBRUEvLy8vLyt1YUFBQjJFUUJCa0tBZkN3Y0JBQUFBOUYwREFFSFpvQjhMRFFRQkFQLy8vLytmcXdFQWh4TUFRZkNnSHdzSEFRQUFBUGhkQXdCQnVLRWZDeC8vLy8vLy8vLy8vMGxvQVFDQUZBQUFBUUFBQVB4ZEF3QUJBQUFBQUY0REFFR1lvaDhMSC8vLy8vLy8vLy8vV1dZQkFJSVVBQUFCQUFBQUJGNERBQUVBQUFBSVhnTUFRZmlpSHdzWC8vLy8vLy8vLy8rMlpnRUFoQlFBQUFFQUFBQU1YZ01BUWRpakh3c2gvLy8vLy8vLy8vK3RaZ0VBaUJRQUFBRUFBQUFRWGdNQUFRQUFBQlJlQXdBR0FFRzRwQjhMSC8vLy8vLy8vLy8vbm1ZQkFKY1VBQUFDQUFBQUdGMERBQUlBQUFBZ1hRTUFRWmlsSHdzZi8vLy8vLy8vLy8vY2J3RUFseFFBQUFJQUFBQVlYUU1BQWdBQUFDQmRBd0JCK0tVZkN4Ly8vLy8vLy8vLy81WmdBUUNZRkFBQUFRQUFBSkJjQXdBQkFBQUFHRjREQUVIWXBoOExILy8vLy8vLy8vLy9lV1VCQUprVUFBQUNBQUFBR0YwREFBSUFBQUFnWFFNQVFiaW5Id3NmLy8vLy8vLy8vLzhVY2dFQXBSUUFBQUlBQUFBY1hnTUFBZ0FBQUNSZUF3QkJtS2dmQ3gvLy8vLy8vLy8vLzJ4ZkFRQ2xGQUFBQWdBQUFCeGVBd0FDQUFBQUpGNERBRUg0cUI4TEgvLy8vLy8vLy8vL3lyc0FBTFFVQUFBQkFBQUFMRjREQUFFQUFBQXdYZ01BUWRtcEh3c2VCUUVBLy8vLy8wQnRBUUMwRkFBQUFRQUFBQ3hlQXdBQkFBQUFNRjREQUVHNXFoOExIZ1VCQVAvLy8vOWViZ0FBNnhRQUFBRUFBQUNrWEFNQUFnQUFBS2hjQXdCQm1hc2ZDeDRGQVFELy8vLy9IV3dCQU9zVUFBQUJBQUFBcEZ3REFBSUFBQUNvWEFNQVFmbXJId3NlQlFFQS8vLy8vMjl2QUFEc0ZBQUFBUUFBQUtSY0F3QUNBQUFBcUZ3REFFSFpyQjhMSGdVQkFQLy8vLzh3YkFFQTdCUUFBQUVBQUFDa1hBTUFBZ0FBQUtoY0F3QkJ1YTBmQ3hZRkFRRC8vLy8vSW1NQkFBb1ZBQUFCQUFBQWRGMERBRUdZcmg4TEYvLy8vLy8vLy8vLzdXSUJBQllWQUFBQkFBQUFORjREQUVINHJoOExGLy8vLy8vLy8vLy9YR2dCQUJjVkFBQUJBQUFBTkY0REFFSFlyeDhMRi8vLy8vLy8vLy8vRTJNQkFCZ1ZBQUFCQUFBQU5GNERBRUc0c0I4TEYvLy8vLy8vLy8vL2ZtZ0JBQmtWQUFBQkFBQUFORjREQUVHWXNSOExGLy8vLy8vLy8vLy91cGdCQU44VkFBQUJBQUFBUkYwREFFRzRzUjhMQVFZQVFmaXhId3NmLy8vLy8vLy8vLzlDaGdFQTRoVUFBQUVBQUFBNFhnTUFBUUFBQUlCZEF3QkIyTElmQ3hmLy8vLy8vLy8vLzNDVEFRRG5GUUFBQVFBQUFEeGVBd0JCK0xJZkN3RUtBRUc0c3g4TEYvLy8vLy8vLy8vL0JvMEJBT2dWQUFBQkFBQUFQRjREQUVHWXRCOExGLy8vLy8vLy8vLy9wcDRCQVBnVkFBQUJBQUFBUkYwREFFSDR0QjhMRi8vLy8vLy8vLy8veEtJQkFQa1ZBQUFCQUFBQVJGMERBRUdZdFI4TEFRWUFRZGkxSHdzWC8vLy8vLy8vLy8rdWxRRUEraFVBQUFFQUFBQkVYUU1BUWJpMkh3c1gvLy8vLy8vLy8vK3JtQUVBK3hVQUFBRUFBQUJFWFFNQVFaaTNId3NYLy8vLy8vLy8vLytiakFFQS9CVUFBQUVBQUFCRVhRTUFRYmkzSHdzQkJnQkIrTGNmQ3c3Ly8vLy8vLy8vLzkxNUFBQUNGZ0JCa0xnZkN3a0JBQUFBUUY0REFBRUFRZG00SHdzTkJBRUEvLy8vLzNPcUFRQUNGZ0JCOExnZkN3a0JBQUFBUUY0REFBRUFRYmk1SHdzTy8vLy8vLy8vLy8rVVF3RUFBeFlBUWRDNUh3c0pBUUFBQUVCZUF3QUtBRUdadWg4TERRUUJBUC8vLy8rMXFnRUFBeFlBUWJDNkh3c0pBUUFBQUVCZUF3QUtBRUg0dWg4TER2Ly8vLy8vLy8vL3Bxb0JBQVFXQUVHUXV4OExDUUVBQUFCRVhnTUFDZ0JCMkxzZkN4Zi8vLy8vLy8vLy95ZWdBUUMrRmdBQUFRQUFBTVJkQXdCQitMc2ZDd1VHQUFBQUZ3QkJ1THdmQ3hmLy8vLy8vLy8vLy91ZkFRQy9GZ0FBQVFBQUFNUmRBd0JCMkx3ZkN3VUdBQUFBUUFCQm1MMGZDeC8vLy8vLy8vLy8vek9UQVFEQkZnQUFBUUFBQUVoZUF3QUJBQUFBVEY0REFFSDR2UjhMSWYvLy8vLy8vLy8vSjRZQkFNSVdBQUFCQUFBQVNGNERBQUVBQUFCTVhnTUFDZ0JCMkw0ZkN5SC8vLy8vLy8vLy8vYVBBUURERmdBQUFRQUFBRWhlQXdBQkFBQUFURjREQUFZQVFiaS9Id3NoLy8vLy8vLy8vLzhybWdFQXhCWUFBQUVBQUFCSVhnTUFBUUFBQUV4ZUF3QUdBRUdZd0I4TElmLy8vLy8vLy8vL1dKRUJBTVVXQUFBQkFBQUFTRjREQUFFQUFBQk1YZ01BQmdCQitNQWZDeC8vLy8vLy8vLy8vK0NUQVFER0ZnQUFBUUFBQUVoZUF3QUJBQUFBVEY0REFFSFl3UjhMSC8vLy8vLy8vLy8vOEpNQkFNY1dBQUFCQUFBQVNGNERBQUVBQUFCTVhnTUFRYmpDSHdzaC8vLy8vLy8vLy85N2tBRUF5QllBQUFFQUFBQklYZ01BQVFBQUFFeGVBd0FHQUVHWXd4OExILy8vLy8vLy8vLy9kb2tCQU1rV0FBQUJBQUFBU0Y0REFBRUFBQUJNWGdNQVFmakRId3NsLy8vLy8vLy8vLytRbndFQXloWUFBQUVBQUFCSVhnTUFBUUFBQUV4ZUF3QUtBQUFBQ2dCQjJNUWZDeUgvLy8vLy8vLy8vL2lNQVFETEZnQUFBUUFBQUVoZUF3QUJBQUFBVEY0REFBWUFRYmpGSHdzaC8vLy8vLy8vLy84WG1nRUF6QllBQUFFQUFBQklYZ01BQVFBQUFFeGVBd0FHQUVHWXhoOExGLy8vLy8vLy8vLy90cUFCQUFzWEFBQUJBQUFBVUY0REFFSDR4aDhMRi8vLy8vLy8vLy8vMzVzQkFBd1hBQUFCQUFBQVVGNERBRUdZeHg4TEFRWUFRZGpISHdzWC8vLy8vLy8vLy8rYW9BRUFEUmNBQUFFQUFBQlFYZ01BUWJqSUh3c1gvLy8vLy8vLy8vOTVtZ0VBRGhjQUFBRUFBQUJRWGdNQVFkaklId3NCQmdCQm1Na2ZDeGYvLy8vLy8vLy8vNEdlQVFBUkZ3QUFBUUFBQUZSZUF3QkIrTWtmQ3hmLy8vLy8vLy8vLzVXVkFRQVRGd0FBQVFBQUFGaGVBd0JCMk1vZkN4Zi8vLy8vLy8vLy80ZWdBUUFWRndBQUFRQUFBRnhlQXdCQitNb2ZDd1VHQUFBQUJnQkJ1TXNmQ3hmLy8vLy8vLy8vLzdpY0FRQWFGd0FBQVFBQUFHaGNBd0JCMk1zZkN3RUJBRUdZekI4TEYvLy8vLy8vLy8vL25wSUJBQnNYQUFBQkFBQUFhRndEQUVHNHpCOExBUUVBUWZqTUh3c1gvLy8vLy8vLy8vOEptUUVBSFJjQUFBRUFBQUJnWGdNQVFaak5Id3NCQmdCQjJNMGZDeGYvLy8vLy8vLy8vNWFHQVFBZUZ3QUFBUUFBQUdCZUF3QkIrTTBmQ3dFR0FFRzR6aDhMRi8vLy8vLy8vLy8va3A0QkFCOFhBQUFCQUFBQVlGNERBRUhZemg4TEFRWUFRWmpQSHdzWC8vLy8vLy8vLy85ZGxnRUFJUmNBQUFFQUFBQmtYZ01BUWJqUEh3c0JCZ0JCK004ZkN4Zi8vLy8vLy8vLy81dWZBUUE0RndBQUFRQUFBR2hlQXdCQm1OQWZDd0VHQUVIWTBCOExGLy8vLy8vLy8vLy8zSjhCQU1BWEFBQUJBQUFBeEYwREFFSDQwQjhMQlFZQUFBQkJBRUc0MFI4TEYvLy8vLy8vLy8vL3lKSUJBTVVYQUFBQkFBQUFSRjBEQUVHWTBoOExGLy8vLy8vLy8vLy95WlVCQU1jWEFBQUJBQUFBUkYwREFFSDQwaDhMRi8vLy8vLy8vLy8vUjZnQkFQd1hBQUFCQUFBQVJGMERBRUhZMHg4TEYvLy8vLy8vLy8vL2dJb0JBQjhZQUFBQkFBQUFiRjREQUVHNDFCOExGLy8vLy8vLy8vLy9tNG9CQUNBWUFBQUJBQUFBYkY0REFFR1kxUjhMRi8vLy8vLy8vLy8vT3BvQkFDRVlBQUFCQUFBQWJGNERBRUc0MVI4TEFRWUFRZmpWSHdzWC8vLy8vLy8vLy85Ym1nRUFJaGdBQUFFQUFBQnNYZ01BUVpqV0h3c0JCZ0JCMk5ZZkN4Zi8vLy8vLy8vLy8zcUdBUUFqR0FBQUFRQUFBR3hlQXdCQitOWWZDd0VHQUVHNDF4OExGLy8vLy8vLy8vLy9RYUFCQUNRWUFBQUJBQUFBYkY0REFFSFkxeDhMQVJrQVFaallId3NYLy8vLy8vLy8vLys2aUFFQUpSZ0FBQUVBQUFCc1hnTUFRYmpZSHdzQkJnQkIrTmdmQ3hmLy8vLy8vLy8vLzllSUFRQW1HQUFBQVFBQUFHeGVBd0JCbU5rZkN3RUdBRUhZMlI4TEYvLy8vLy8vLy8vL3Vvb0JBQ2NZQUFBQkFBQUFiRjREQUVHNDJoOExDdi8vLy8vLy8vLy9jT0VBUVpyYkh3c0xBUUQvLy8vL2ZqNEFBQUVBUWZyYkh3c0xBUUQvLy8vL2VENEFBQUlBUWRyY0h3c0xBUUQvLy8vLy9SWUFBQU1BUWZqY0h3c0JCZ0JCdXQwZkN3c0JBUC8vLy84TExBRUFCQUJCMk4wZkN3VUdBQUFBQmdCQm10NGZDd3NCQVAvLy8vL21tZ0FBQlFCQit0NGZDd3NCQVAvLy8vOXA0UUFBQmdCQjJ0OGZDd3NCQVAvLy8vKzc2Z0FBQndCQnV1QWZDd3NCQVAvLy8vOWdGUUFBQ0FCQjJPQWZDd0VHQUVHYTRSOExDQUVBLy8vLy8zRGhBRUg2NFI4TEN3RUEvLy8vLzM0K0FBQUJBRUhhNGg4TEN3RUEvLy8vLzNnK0FBQUNBRUc2NHg4TEN3RUEvLy8vLy8wV0FBQURBRUhZNHg4TEFRWUFRWnJrSHdzTEFRRC8vLy8vQ3l3QkFBUUFRYmprSHdzRkJnQUFBQVlBUWZya0h3c0xBUUQvLy8vLzVwb0FBQVVBUWRybEh3c0xBUUQvLy8vL2FlRUFBQVlBUWJybUh3c0xBUUQvLy8vL3Urb0FBQWNBUVpybkh3c0xBUUQvLy8vL1lCVUFBQWdBUWJqbkh3c0JCZ0JCK3VjZkN3c0JBUC8vLy85ZkpRQUFDUUJCbU9nZkN3VUdBQUFBQmdCQjJ1Z2ZDeWdCQVAvLy8vOEFBQUFBQUFBQUFKUUZBQUM4QndBQXZRY0FBTDRIQUFDL0J3QUF3QWNBQU1FSEFFR002UjhMR3BRRkFBRENCd0FBd3djQUFNUUhBQURGQndBQXhnY0FBTWNIQUVHdzZSOExHcFFGQUFESUJ3QUF5UWNBQU1vSEFBRExCd0FBekFjQUFNMEhBRUhVNlI4TEdwUUZBQURPQndBQXp3Y0FBTkFIQUFEUkJ3QUEwZ2NBQU5NSEFFSDQ2UjhMR3BRRkFBRFVCd0FBMVFjQUFOWUhBQURYQndBQTJBY0FBTmtIQUVHYzZoOExHcFFGQUFEYUJ3QUEyd2NBQU53SEFBRGRCd0FBM2djQUFOOEhBRUhBNmg4TEdwUUZBQURnQndBQTRRY0FBT0lIQUFEakJ3QUE1QWNBQU9VSEFFSGs2aDhMR3BRRkFBRG1Cd0FBNXdjQUFPZ0hBQURwQndBQTZnY0FBT3NIQUVHSTZ4OExHcFFGQUFEc0J3QUE3UWNBQU80SEFBRHZCd0FBOEFjQUFQRUhBRUdzNng4TEdwUUZBQUR5QndBQTh3Y0FBUFFIQUFEMUJ3QUE5Z2NBQVBjSEFFSFE2eDhMR3BRRkFBRDRCd0FBK1FjQUFQb0hBQUQ3QndBQS9BY0FBUDBIQUVIMDZ4OExHcFFGQUFEK0J3QUEvd2NBQUFBSUFBQUJDQUFBQWdnQUFBTUlBRUdZN0I4TEdwUUZBQUFFQ0FBQUJRZ0FBQVlJQUFBSENBQUFDQWdBQUFrSUFFRzg3QjhMR3BRRkFBQUtDQUFBQ3dnQUFBd0lBQUFOQ0FBQURnZ0FBQThJQUVIZzdCOExHcFFGQUFBUUNBQUFFUWdBQUJJSUFBQVRDQUFBRkFnQUFCVUlBRUdFN1I4TEdwUUZBQUFXQ0FBQUZ3Z0FBQmdJQUFBWkNBQUFHZ2dBQUJzSUFFR283UjhMR3BRRkFBQWNDQUFBSFFnQUFCNElBQUFmQ0FBQUlBZ0FBQ0VJQUVITTdSOEx3Z0tVQlFBQUlnZ0FBQ01JQUFBa0NBQUFKUWdBQUNZSUFBQW5DQUFBYnFvQkFQdXVBUUR0cmdFQXo2NEJBTm11QVFEMXJnRUFwMzBBQUhaOUFBQ3BKd0VBazMwQUFISGVBQUNmSUFFQWhNZ0FBSlRJQUFDandBQUFGQ2NCQUNkS0FBRDRDQUFBZENjQkFBQW5BUUFuUFFBQWxIc0FBSFlLQVFDTUp3RUF2UWdCQUU5MkFBQng2d0FBWWEwQUFPMjRBQUFUcmdBQXZsWUFBRktnQUFEaUNBQUEzQ01CQUZZbkFRRFR2UUFBdGIwQUFNSzlBQUIrUmdBQVZQQUFBUHV1QVFEY0l3RUFma1lBQUtkOUFBQ25mUUFBclhnQUFISGVBQUJQZGdBQXNPZ0FBT0tnQUFEaW9BQUE0cUFBQU9LZ0FBQ3RWZ0FBazk4QUFJRUdBUUIxZGdBQU9LNEFBSmhXQUFCKzN3QUFiQVlCQUdCMkFBQWpyZ0FBVHdRQUFFY25BUUExSndFQUl5Y0JBQndtQVFDT1ZnQUFaS3NBQUVJRUFRQWNCQUVBQlQwQUFBVTlBRUdZOEI4TEdpZ0lBQUFwQ0FBQUtnZ0FBQ3NJQUFBc0NBQUFMUWdBQUM0SUFFRzg4QjhMR3RZRkFBQXlDQUFBTXdnQUFEUUlBQUExQ0FBQU5nZ0FBRGNJQUVIZzhCOExHamdJQUFBNUNBQUFPZ2dBQURzSUFBQThDQUFBUFFnQUFENElBRUdFOFI4TEdtUUlBQUJsQ0FBQVpnZ0FBR2NJQUFCb0NBQUFhUWdBQUdvSUFFR284UjhMR21zSUFBQnNDQUFBYlFnQUFHNElBQUJ2Q0FBQWNBZ0FBSEVJQUVITThSOExHbklJQUFCekNBQUFkQWdBQUhVSUFBQjJDQUFBZHdnQUFIZ0lBRUh3OFI4TEdua0lBQUI2Q0FBQWV3Z0FBSHdJQUFCOUNBQUFmZ2dBQUg4SUFFR1U4aDhMR29BSUFBQ0JDQUFBZ2dnQUFJTUlBQUNFQ0FBQWhRZ0FBSVlJQUVHNDhoOExHb0FJQUFDSENBQUFpQWdBQUlrSUFBQ0tDQUFBaXdnQUFJd0lBRUhjOGg4TEdvQUlBQUNOQ0FBQWpnZ0FBSThJQUFDUUNBQUFrUWdBQUpJSUFFR0E4eDhMR3BNSUFBQ1VDQUFBbFFnQUFKWUlBQUNYQ0FBQW1BZ0FBSmtJQUVHazh4OExHb0FJQUFDYUNBQUFtd2dBQUp3SUFBQ2RDQUFBbmdnQUFKOElBRUhJOHg4TEdvQUlBQUNnQ0FBQW9RZ0FBS0lJQUFDakNBQUFwQWdBQUtVSUFFSHM4eDhMR29BSUFBQ21DQUFBcHdnQUFLZ0lBQUNwQ0FBQXFnZ0FBS3NJQUVHUTlCOExHb0FJQUFDc0NBQUFyUWdBQUs0SUFBQ3ZDQUFBc0FnQUFMRUlBRUcwOUI4TEdvQUlBQUN5Q0FBQXN3Z0FBTFFJQUFDMUNBQUF0Z2dBQUxjSUFFSFk5QjhMR29BSUFBQzRDQUFBdVFnQUFMb0lBQUM3Q0FBQXZBZ0FBTDBJQUVIODlCOExHb0FJQUFDK0NBQUF2d2dBQU1BSUFBREJDQUFBd2dnQUFNTUlBRUdnOVI4TEdvQUlBQURFQ0FBQXhRZ0FBTVlJQUFESENBQUF5QWdBQU1rSUFFSEU5UjhMR29BSUFBREtDQUFBeXdnQUFNd0lBQUROQ0FBQXpnZ0FBTThJQUVIbzlSOExHb0FJQUFEUUNBQUEwUWdBQU5JSUFBRFRDQUFBMUFnQUFOVUlBRUdNOWg4TEd0WUlBQURYQ0FBQTJBZ0FBTmtJQUFEYUNBQUEyd2dBQU53SUFFR3c5aDhMR3QwSUFBRGVDQUFBM3dnQUFPQUlBQURoQ0FBQTRnZ0FBT01JQUVIVTloOExHb0FJQUFEa0NBQUE1UWdBQU9ZSUFBRG5DQUFBNkFnQUFPa0lBRUg0OWg4TEdvQUlBQURxQ0FBQTZ3Z0FBT3dJQUFEdENBQUE3Z2dBQU84SUFFR2M5eDhMR3ZBSUFBRHhDQUFBOGdnQUFQTUlBQUQwQ0FBQTlRZ0FBUFlJQUVIQTl4OExHb0FJQUFEM0NBQUErQWdBQVBrSUFBRDZDQUFBK3dnQUFQd0lBRUhrOXg4TEdvQUlBQUQ5Q0FBQS9nZ0FBUDhJQUFBQUNRQUFBUWtBQUFJSkFFR0krQjhMR29BSUFBQURDUUFBQkFrQUFBVUpBQUFHQ1FBQUJ3a0FBQWdKQUVHcytCOExHZ2tKQUFBS0NRQUFDd2tBQUF3SkFBQU5DUUFBRGdrQUFBOEpBRUhRK0I4TEdvQUlBQUFRQ1FBQUVRa0FBQklKQUFBVENRQUFGQWtBQUJVSkFFSDArQjhMR29BSUFBQVdDUUFBRndrQUFCZ0pBQUFaQ1FBQUdna0FBQnNKQUVHWStSOExHb0FJQUFBY0NRQUFIUWtBQUI0SkFBQWZDUUFBSUFrQUFDRUpBRUc4K1I4TEdvQUlBQUFpQ1FBQUl3a0FBQ1FKQUFBbENRQUFKZ2tBQUNjSkFFSGcrUjhMR29BSUFBQW9DUUFBS1FrQUFDb0pBQUFyQ1FBQUxBa0FBQzBKQUVHRStoOExHaTRKQUFBdkNRQUFNQWtBQURFSkFBQXlDUUFBTXdrQUFEUUpBRUdvK2g4TEdqVUpBQUEyQ1FBQU53a0FBRGdKQUFBNUNRQUFPZ2tBQURzSkFFSE0raDhMR2p3SkFBQTlDUUFBUGdrQUFEOEpBQUJBQ1FBQVFRa0FBRUlKQUVIdytoOExHa01KQUFCRUNRQUFSUWtBQUVZSkFBQkhDUUFBU0FrQUFFa0pBRUdVK3g4TEdrb0pBQUJMQ1FBQVRBa0FBRTBKQUFCT0NRQUFUd2tBQUZBSkFFRzQreDhMR2xFSkFBQlNDUUFBVXdrQUFGUUpBQUJWQ1FBQVZna0FBRmNKQUVIYyt4OExHb0FJQUFCWUNRQUFXUWtBQUZvSkFBQmJDUUFBWEFrQUFGMEpBRUdBL0I4TEdvQUlBQUJlQ1FBQVh3a0FBR0FKQUFCaENRQUFZZ2tBQUdNSkFFR2svQjhMR29BSUFBQmtDUUFBWlFrQUFHWUpBQUJuQ1FBQWFBa0FBR2tKQUVISS9COExHb0FJQUFCcUNRQUFhd2tBQUd3SkFBQnRDUUFBYmdrQUFHOEpBRUhzL0I4TEdvQUlBQUJ3Q1FBQWNRa0FBSElKQUFCekNRQUFkQWtBQUhVSkFFR1EvUjhMR29BSUFBQjJDUUFBZHdrQUFIZ0pBQUI1Q1FBQWVna0FBSHNKQUVHMC9SOExHb0FJQUFCOENRQUFmUWtBQUg0SkFBQi9DUUFBZ0FrQUFJRUpBRUhZL1I4TEdvQUlBQUNDQ1FBQWd3a0FBSVFKQUFDRkNRQUFoZ2tBQUljSkFFSDgvUjhMR29nSkFBQ0pDUUFBaWdrQUFJc0pBQUNNQ1FBQWpRa0FBSTRKQUVHZy9oOExHbzhKQUFDUUNRQUFrUWtBQUpJSkFBQ1RDUUFBbEFrQUFKVUpBRUhFL2g4TEdvQUlBQUNXQ1FBQWx3a0FBSmdKQUFDWkNRQUFtZ2tBQUpzSkFFSG8vaDhMR29BSUFBQ2NDUUFBblFrQUFKNEpBQUNmQ1FBQW9Ba0FBS0VKQUVHTS94OExHb0FJQUFDaUNRQUFvd2tBQUtRSkFBQ2xDUUFBcGdrQUFLY0pBRUd3L3g4TEdvQUlBQUNvQ1FBQXFRa0FBS29KQUFDckNRQUFyQWtBQUswSkFFSFUveDhMR29BSUFBQ3VDUUFBcndrQUFMQUpBQUN4Q1FBQXNna0FBTE1KQUVINC94OExHb0FJQUFDMENRQUF0UWtBQUxZSkFBQzNDUUFBdUFrQUFMa0pBRUdjZ0NBTEdvQUlBQUM2Q1FBQXV3a0FBTHdKQUFDOUNRQUF2Z2tBQUw4SkFFSEFnQ0FMR29BSUFBREFDUUFBd1FrQUFNSUpBQUREQ1FBQXhBa0FBTVVKQUVIa2dDQUxHb0FJQUFER0NRQUF4d2tBQU1nSkFBREpDUUFBeWdrQUFNc0pBRUdJZ1NBTEdvQUlBQURNQ1FBQXpRa0FBTTRKQUFEUENRQUEwQWtBQU5FSkFFR3NnU0FMR29BSUFBRFNDUUFBMHdrQUFOUUpBQURWQ1FBQTFna0FBTmNKQUVIUWdTQUxHb0FJQUFEWUNRQUEyUWtBQU5vSkFBRGJDUUFBM0FrQUFOMEpBRUgwZ1NBTEdvQUlBQURlQ1FBQTN3a0FBT0FKQUFEaENRQUE0Z2tBQU9NSkFFR1lnaUFMR29BSUFBRGtDUUFBNVFrQUFPWUpBQURuQ1FBQTZBa0FBT2tKQUVHOGdpQUxHb0FJQUFEcUNRQUE2d2tBQU93SkFBRHRDUUFBN2drQUFPOEpBRUhnZ2lBTEdvQUlBQUR3Q1FBQThRa0FBUElKQUFEekNRQUE5QWtBQVBVSkFFR0VneUFMR29BSUFBRDJDUUFBOXdrQUFQZ0pBQUQ1Q1FBQStna0FBUHNKQUVHb2d5QUxHb0FJQUFEOENRQUEvUWtBQVA0SkFBRC9DUUFBQUFvQUFBRUtBRUhNZ3lBTEdvQUlBQUFDQ2dBQUF3b0FBQVFLQUFBRkNnQUFCZ29BQUFjS0FFSHdneUFMR2dnS0FBQUpDZ0FBQ2dvQUFBc0tBQUFNQ2dBQURRb0FBQTRLQUVHVWhDQUxHZ2dLQUFBUENnQUFFQW9BQUJFS0FBQVNDZ0FBRXdvQUFCUUtBRUc0aENBTEdoVUtBQUFXQ2dBQUZ3b0FBQmdLQUFBWkNnQUFHZ29BQUJzS0FFSGNoQ0FMR2dnS0FBQWNDZ0FBSFFvQUFCNEtBQUFmQ2dBQUlBb0FBQ0VLQUVHQWhTQUxHZ2dLQUFBaUNnQUFJd29BQUNRS0FBQWxDZ0FBSmdvQUFDY0tBRUdraFNBTFNpZ0tBQUFwQ2dBQUtnb0FBQ3NLQUFBc0NnQUFMUW9BQUM0S0FBRFZxd0FBWWVZQUFDS2FBQUNHOGdBQVJYMEFBQU0xQUFBNWZRQUE2OHdBQUlETkFBQ016UUFBZ00wQUFQek1BRUg0aFNBTEdpOEtBQUF3Q2dBQU1Rb0FBRElLQUFBekNnQUFOQW9BQURVS0FFR2NoaUFMR2k4S0FBQTJDZ0FBTndvQUFEZ0tBQUE1Q2dBQU9nb0FBRHNLQUVIQWhpQUxHaThLQUFBOENnQUFQUW9BQUQ0S0FBQS9DZ0FBUUFvQUFFRUtBRUhraGlBTEdqZ0lBQUJDQ2dBQVF3b0FBRVFLQUFCRkNnQUFSZ29BQUVjS0FFR0loeUFMR2tnS0FBQkpDZ0FBU2dvQUFFc0tBQUJNQ2dBQVRRb0FBRTRLQUVHc2h5QUxHazhLQUFCUUNnQUFVUW9BQUZJS0FBQlRDZ0FBVkFvQUFGVUtBRUhRaHlBTEdsWUtBQUJYQ2dBQVdBb0FBRmtLQUFCYUNnQUFXd29BQUZ3S0FFSDBoeUFMR2s4S0FBQmRDZ0FBWGdvQUFGOEtBQUJnQ2dBQVlRb0FBR0lLQUVHWWlDQUxHazhLQUFCakNnQUFaQW9BQUdVS0FBQm1DZ0FBWndvQUFHZ0tBRUc4aUNBTEdta0tBQUJxQ2dBQWF3b0FBR3dLQUFCdENnQUFiZ29BQUc4S0FFSGdpQ0FMR2s4S0FBQndDZ0FBY1FvQUFISUtBQUJ6Q2dBQWRBb0FBSFVLQUVHRWlTQUxHazhLQUFCMkNnQUFkd29BQUhnS0FBQjVDZ0FBZWdvQUFIc0tBRUdvaVNBTEdrOEtBQUI4Q2dBQWZRb0FBSDRLQUFCL0NnQUFnQW9BQUlFS0FFSE1pU0FMR2s4S0FBQ0NDZ0FBZ3dvQUFJUUtBQUNGQ2dBQWhnb0FBSWNLQUVId2lTQUxHazhLQUFDSUNnQUFpUW9BQUlvS0FBQ0xDZ0FBakFvQUFJMEtBRUdVaWlBTEdrOEtBQUNPQ2dBQWp3b0FBSkFLQUFDUkNnQUFrZ29BQUpNS0FFRzRpaUFMR2s4S0FBQ1VDZ0FBbFFvQUFKWUtBQUNYQ2dBQW1Bb0FBSmtLQUVIY2lpQUxHazhLQUFDYUNnQUFtd29BQUp3S0FBQ2RDZ0FBbmdvQUFKOEtBRUdBaXlBTEdqZ0lBQUNnQ2dBQW9Rb0FBS0lLQUFDakNnQUFwQW9BQUtVS0FFR2tpeUFMR2tnS0FBQ21DZ0FBcHdvQUFLZ0tBQUNwQ2dBQXFnb0FBS3NLQUVISWl5QUxHamdJQUFDc0NnQUFyUW9BQUs0S0FBQ3ZDZ0FBc0FvQUFMRUtBRUhzaXlBTFdrZ0tBQUN5Q2dBQXN3b0FBTFFLQUFDMUNnQUF0Z29BQUxjS0FBRENmZ0FBd240QUFNSitBQURDZmdBQXduNEFBTUorQUFEQ2ZnQUF3bjRBQU1KK0FBRENmZ0FBd240QUFNSitBQUQ4RkFFQS9CUUJBUHdVQVFEQ2ZnQkIwSXdnQ3hxNEJnQUF1QW9BQUxrS0FBQzZDZ0FBdXdvQUFMd0tBQUM5Q2dCQjlJd2dDeHErQ2dBQXZ3b0FBTUFLQUFEQkNnQUF3Z29BQU1NS0FBREVDZ0JCbUkwZ0N4bzRDQUFBeFFvQUFNWUtBQURIQ2dBQXlBb0FBTWtLQUFES0NnQkJ2STBnQ3hvNENBQUF5d29BQU13S0FBRE5DZ0FBemdvQUFNOEtBQURRQ2dCQjRJMGdDeHBJQ2dBQTBRb0FBTklLQUFEVENnQUExQW9BQU5VS0FBRFdDZ0JCaEk0Z0N4bzRDQUFBMXdvQUFOZ0tBQURaQ2dBQTJnb0FBTnNLQUFEY0NnQkJxSTRnQ3hvNENBQUEzUW9BQU40S0FBRGZDZ0FBNEFvQUFPRUtBQURpQ2dCQnpJNGdDeG80Q0FBQTR3b0FBT1FLQUFEbENnQUE1Z29BQU9jS0FBRG9DZ0JCOEk0Z0N4cnBDZ0FBNmdvQUFPc0tBQURzQ2dBQTdRb0FBTzRLQUFEdkNnQkJsSThnQ3hyd0NnQUE4UW9BQVBJS0FBRHpDZ0FBOUFvQUFQVUtBQUQyQ2dCQnVJOGdDeHIzQ2dBQStBb0FBUGtLQUFENkNnQUErd29BQVB3S0FBRDlDZ0JCM0k4Z0N4citDZ0FBL3dvQUFBQUxBQUFCQ3dBQUFnc0FBQU1MQUFBRUN3QkJnSkFnQ3hvRkN3QUFCZ3NBQUFjTEFBQUlDd0FBQ1FzQUFBb0xBQUFMQ3dCQnBKQWdDeG9NQ3dBQURRc0FBQTRMQUFBUEN3QUFFQXNBQUJFTEFBQVNDd0JCeUpBZ0N4b1RDd0FBRkFzQUFCVUxBQUFXQ3dBQUZ3c0FBQmdMQUFBWkN3QkI3SkFnQ3hvYUN3QUFHd3NBQUJ3TEFBQWRDd0FBSGdzQUFCOExBQUFnQ3dCQmtKRWdDeG9oQ3dBQUlnc0FBQ01MQUFBa0N3QUFKUXNBQUNZTEFBQW5Dd0JCdEpFZ0N4b29Dd0FBS1FzQUFDb0xBQUFyQ3dBQUxBc0FBQzBMQUFBdUN3QkIySkVnQ3hvb0N3QUFMd3NBQURBTEFBQXhDd0FBTWdzQUFETUxBQUEwQ3dCQi9KRWdDeG9vQ3dBQU5Rc0FBRFlMQUFBM0N3QUFPQXNBQURrTEFBQTZDd0JCb0pJZ0N4bzdDd0FBUEFzQUFEMExBQUErQ3dBQVB3c0FBRUFMQUFCQkN3QkJ4SklnQ3hvN0N3QUFRZ3NBQUVNTEFBQkVDd0FBUlFzQUFFWUxBQUJIQ3dCQjZKSWdDeG83Q3dBQVNBc0FBRWtMQUFCS0N3QUFTd3NBQUV3TEFBQk5Dd0JCakpNZ0N4bzdDd0FBVGdzQUFFOExBQUJRQ3dBQVVRc0FBRklMQUFCVEN3QkJzSk1nQ3hvSUNnQUFWQXNBQUZVTEFBQldDd0FBVndzQUFGZ0xBQUJaQ3dCQjFKTWdDeG9JQ2dBQVdnc0FBRnNMQUFCY0N3QUFYUXNBQUY0TEFBQmZDd0JCK0pNZ0N4b1ZDZ0FBWUFzQUFHRUxBQUJpQ3dBQVl3c0FBR1FMQUFCbEN3QkJuSlFnQ3hvN0N3QUFaZ3NBQUdjTEFBQm9Dd0FBYVFzQUFHb0xBQUJyQ3dCQndKUWdDeG83Q3dBQWJBc0FBRzBMQUFCdUN3QUFid3NBQUhBTEFBQnhDd0JCNUpRZ0N4cHlDd0FBY3dzQUFIUUxBQUIxQ3dBQWRnc0FBSGNMQUFCNEN3QkJpSlVnQ3hyV0JRQUFld3NBQUh3TEFBQjlDd0FBZmdzQUFIOExBQUNBQ3dCQnJKVWdDeHE0QmdBQWdRc0FBSUlMQUFDREN3QUFoQXNBQUlVTEFBQ0dDd0JCMEpVZ0N4cUhDd0FBaUFzQUFJa0xBQUNLQ3dBQWl3c0FBSXdMQUFDTkN3QkI5SlVnQ3hxT0N3QUFqd3NBQUpBTEFBQ1JDd0FBa2dzQUFKTUxBQUNVQ3dCQm1KWWdDeHFWQ3dBQWxnc0FBSmNMQUFDWUN3QUFtUXNBQUpvTEFBQ2JDd0JCdkpZZ0N4cWNDd0FBblFzQUFKNExBQUNmQ3dBQW9Bc0FBS0VMQUFDaUN3QkI0SllnQ3hxakN3QUFwQXNBQUtVTEFBQ21Dd0FBcHdzQUFLZ0xBQUNwQ3dCQmhKY2dDeHFxQ3dBQXF3c0FBS3dMQUFDdEN3QUFyZ3NBQUs4TEFBQ3dDd0JCcUpjZ0N4cXhDd0FBc2dzQUFMTUxBQUMwQ3dBQXRRc0FBTFlMQUFDM0N3QkJ6SmNnQ3hxNEN3QUF1UXNBQUxvTEFBQzdDd0FBdkFzQUFMMExBQUMrQ3dCQjhKY2dDeG80Q0FBQXZ3c0FBTUFMQUFEQkN3QUF3Z3NBQU1NTEFBREVDd0JCbEpnZ0N4bzRDQUFBeFFzQUFNWUxBQURIQ3dBQXlBc0FBTWtMQUFES0N3QkJ1SmdnQ3hvaEN3QUF5d3NBQU13TEFBRE5Dd0FBemdzQUFNOExBQURRQ3dCQjNKZ2dDeVVoQ3dBQTBRc0FBTklMQUFEVEN3QUExQXNBQU5VTEFBRFdDd0FBY0NWWUFBQUFBQUFGQUVHTW1TQUxBdXdMQUVHa21TQUxEdTBMQUFEdUN3QUFtQkFJQUFBRUFFRzhtU0FMQVFFQVFjeVpJQXNGLy8vLy93b0FRWkNhSUFzSmdBd0lBQUFBQUFBSkFFR2ttaUFMQWlvTUFFRzRtaUFMRWlzTUFBQUFBQUFBTEF3QUFCZ1ZDQUFBQkFCQjVKb2dDd1QvLy8vL0FFR29teUFMQVFVQVFiU2JJQXNDS2d3QVFjeWJJQXNMN1FzQUFDd01BQUFnR1FnQVFlU2JJQXNCQWdCQjlKc2dDd2ovLy8vLy8vLy8vd0JCdUp3Z0N3T29EUWc9IjsKICBpZiAoIWlzRGF0YVVSSSh3YXNtQmluYXJ5RmlsZSkpIHsKICAgIHdhc21CaW5hcnlGaWxlID0gbG9jYXRlRmlsZSh3YXNtQmluYXJ5RmlsZSk7CiAgfQogIGZ1bmN0aW9uIGdldEJpbmFyeShmaWxlKSB7CiAgICB0cnkgewogICAgICBpZiAoZmlsZSA9PSB3YXNtQmluYXJ5RmlsZSAmJiB3YXNtQmluYXJ5KSB7CiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHdhc21CaW5hcnkpOwogICAgICB9CiAgICAgIGlmIChyZWFkQmluYXJ5KSB7CiAgICAgICAgcmV0dXJuIHJlYWRCaW5hcnkoZmlsZSk7CiAgICAgIH0KICAgICAgdGhyb3cgImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjsKICAgIH0gY2F0Y2ggKGVycikgewogICAgICBhYm9ydChlcnIpOwogICAgfQogIH0KICBmdW5jdGlvbiBnZXRCaW5hcnlQcm9taXNlKCkgewogICAgaWYgKCF3YXNtQmluYXJ5ICYmIChFTlZJUk9OTUVOVF9JU19XRUIgfHwgRU5WSVJPTk1FTlRfSVNfV09SS0VSKSkgewogICAgICBpZiAodHlwZW9mIGZldGNoID09PSAiZnVuY3Rpb24iICYmICFpc0ZpbGVVUkkod2FzbUJpbmFyeUZpbGUpKSB7CiAgICAgICAgcmV0dXJuIGZldGNoKHdhc21CaW5hcnlGaWxlLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pCiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgICAgaWYgKCFyZXNwb25zZVsib2siXSkgewogICAgICAgICAgICAgIHRocm93ICJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICciICsgd2FzbUJpbmFyeUZpbGUgKyAiJyI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlWyJhcnJheUJ1ZmZlciJdKCk7CiAgICAgICAgICB9KQogICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIGdldEJpbmFyeSh3YXNtQmluYXJ5RmlsZSk7CiAgICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAocmVhZEFzeW5jKSB7CiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICByZWFkQXN5bmMoCiAgICAgICAgICAgICAgd2FzbUJpbmFyeUZpbGUsCiAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICByZXNvbHZlKG5ldyBVaW50OEFycmF5KHJlc3BvbnNlKSk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICByZWplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIGdldEJpbmFyeSh3YXNtQmluYXJ5RmlsZSk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gY3JlYXRlV2FzbSgpIHsKICAgIGxldCBpbmZvID0geyBhOiBhc21MaWJyYXJ5QXJnIH07CiAgICBmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoaW5zdGFuY2UsIG1vZHVsZSkgewogICAgICBsZXQgZXhwb3J0cyA9IGluc3RhbmNlLmV4cG9ydHM7CiAgICAgIE1vZHVsZVsiYXNtIl0gPSBleHBvcnRzOwogICAgICB3YXNtTWVtb3J5ID0gTW9kdWxlWyJhc20iXVsibyJdOwogICAgICB1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyh3YXNtTWVtb3J5LmJ1ZmZlcik7CiAgICAgIHdhc21UYWJsZSA9IE1vZHVsZVsiYXNtIl1bInMiXTsKICAgICAgYWRkT25Jbml0KE1vZHVsZVsiYXNtIl1bInAiXSk7CiAgICAgIHJlbW92ZVJ1bkRlcGVuZGVuY3koIndhc20taW5zdGFudGlhdGUiKTsKICAgIH0KICAgIGFkZFJ1bkRlcGVuZGVuY3koIndhc20taW5zdGFudGlhdGUiKTsKICAgIGZ1bmN0aW9uIHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KHJlc3VsdCkgewogICAgICByZWNlaXZlSW5zdGFuY2UocmVzdWx0WyJpbnN0YW5jZSJdKTsKICAgIH0KICAgIGZ1bmN0aW9uIGluc3RhbnRpYXRlQXJyYXlCdWZmZXIocmVjZWl2ZXIpIHsKICAgICAgcmV0dXJuIGdldEJpbmFyeVByb21pc2UoKQogICAgICAgIC50aGVuKGZ1bmN0aW9uIChiaW5hcnkpIHsKICAgICAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShiaW5hcnksIGluZm8pOwogICAgICAgIH0pCiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGluc3RhbmNlKSB7CiAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgICAgfSkKICAgICAgICAudGhlbihyZWNlaXZlciwgZnVuY3Rpb24gKHJlYXNvbikgewogICAgICAgICAgZXJyKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiICsgcmVhc29uKTsKICAgICAgICAgIGFib3J0KHJlYXNvbik7CiAgICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBpbnN0YW50aWF0ZUFzeW5jKCkgewogICAgICBpZiAoCiAgICAgICAgIXdhc21CaW5hcnkgJiYKICAgICAgICB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcgPT09ICJmdW5jdGlvbiIgJiYKICAgICAgICAhaXNEYXRhVVJJKHdhc21CaW5hcnlGaWxlKSAmJgogICAgICAgICFpc0ZpbGVVUkkod2FzbUJpbmFyeUZpbGUpICYmCiAgICAgICAgIUVOVklST05NRU5UX0lTX05PREUgJiYKICAgICAgICB0eXBlb2YgZmV0Y2ggPT09ICJmdW5jdGlvbiIKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIGZldGNoKHdhc21CaW5hcnlGaWxlLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcG9uc2UsIGluZm8pOwogICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0LCBmdW5jdGlvbiAocmVhc29uKSB7CiAgICAgICAgICAgIGVycigid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICIgKyByZWFzb24pOwogICAgICAgICAgICBlcnIoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIik7CiAgICAgICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KTsKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KTsKICAgICAgfQogICAgfQogICAgaWYgKE1vZHVsZVsiaW5zdGFudGlhdGVXYXNtIl0pIHsKICAgICAgdHJ5IHsKICAgICAgICBsZXQgZXhwb3J0cyA9IE1vZHVsZVsiaW5zdGFudGlhdGVXYXNtIl0oaW5mbywgcmVjZWl2ZUluc3RhbmNlKTsKICAgICAgICByZXR1cm4gZXhwb3J0czsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIGVycigiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIiArIGUpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogICAgaW5zdGFudGlhdGVBc3luYygpOwogICAgcmV0dXJuIHt9OwogIH0KICBsZXQgdGVtcERvdWJsZTsKICBsZXQgdGVtcEk2NDsKICBmdW5jdGlvbiBFeGl0U3RhdHVzKHN0YXR1cykgewogICAgdGhpcy5uYW1lID0gIkV4aXRTdGF0dXMiOwogICAgdGhpcy5tZXNzYWdlID0gIlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoIiArIHN0YXR1cyArICIpIjsKICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwogIH0KICBmdW5jdGlvbiBjYWxsUnVudGltZUNhbGxiYWNrcyhjYWxsYmFja3MpIHsKICAgIHdoaWxlIChjYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICBjYWxsYmFja3Muc2hpZnQoKShNb2R1bGUpOwogICAgfQogIH0KICBmdW5jdGlvbiBfX19hc3NlcnRfZmFpbChjb25kaXRpb24sIGZpbGVuYW1lLCBsaW5lLCBmdW5jKSB7CiAgICBhYm9ydCgKICAgICAgIkFzc2VydGlvbiBmYWlsZWQ6ICIgKwogICAgICAgIFVURjhUb1N0cmluZyhjb25kaXRpb24pICsKICAgICAgICAiLCBhdDogIiArCiAgICAgICAgWwogICAgICAgICAgZmlsZW5hbWUgPyBVVEY4VG9TdHJpbmcoZmlsZW5hbWUpIDogInVua25vd24gZmlsZW5hbWUiLAogICAgICAgICAgbGluZSwKICAgICAgICAgIGZ1bmMgPyBVVEY4VG9TdHJpbmcoZnVuYykgOiAidW5rbm93biBmdW5jdGlvbiIsCiAgICAgICAgXSwKICAgICk7CiAgfQogIGZ1bmN0aW9uIF9fX2N4YV9hbGxvY2F0ZV9leGNlcHRpb24oc2l6ZSkgewogICAgcmV0dXJuIF9tYWxsb2Moc2l6ZSArIDI0KSArIDI0OwogIH0KICBmdW5jdGlvbiBFeGNlcHRpb25JbmZvKGV4Y1B0cikgewogICAgdGhpcy5leGNQdHIgPSBleGNQdHI7CiAgICB0aGlzLnB0ciA9IGV4Y1B0ciAtIDI0OwogICAgdGhpcy5zZXRfdHlwZSA9IGZ1bmN0aW9uICh0eXBlKSB7CiAgICAgIEhFQVBVMzJbKHRoaXMucHRyICsgNCkgPj4gMl0gPSB0eXBlOwogICAgfTsKICAgIHRoaXMuZ2V0X3R5cGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiBIRUFQVTMyWyh0aGlzLnB0ciArIDQpID4+IDJdOwogICAgfTsKICAgIHRoaXMuc2V0X2Rlc3RydWN0b3IgPSBmdW5jdGlvbiAoZGVzdHJ1Y3RvcikgewogICAgICBIRUFQVTMyWyh0aGlzLnB0ciArIDgpID4+IDJdID0gZGVzdHJ1Y3RvcjsKICAgIH07CiAgICB0aGlzLmdldF9kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gSEVBUFUzMlsodGhpcy5wdHIgKyA4KSA+PiAyXTsKICAgIH07CiAgICB0aGlzLnNldF9yZWZjb3VudCA9IGZ1bmN0aW9uIChyZWZjb3VudCkgewogICAgICBIRUFQMzJbdGhpcy5wdHIgPj4gMl0gPSByZWZjb3VudDsKICAgIH07CiAgICB0aGlzLnNldF9jYXVnaHQgPSBmdW5jdGlvbiAoY2F1Z2h0KSB7CiAgICAgIGNhdWdodCA9IGNhdWdodCA/IDEgOiAwOwogICAgICBIRUFQOFsodGhpcy5wdHIgKyAxMikgPj4gMF0gPSBjYXVnaHQ7CiAgICB9OwogICAgdGhpcy5nZXRfY2F1Z2h0ID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gSEVBUDhbKHRoaXMucHRyICsgMTIpID4+IDBdICE9IDA7CiAgICB9OwogICAgdGhpcy5zZXRfcmV0aHJvd24gPSBmdW5jdGlvbiAocmV0aHJvd24pIHsKICAgICAgcmV0aHJvd24gPSByZXRocm93biA/IDEgOiAwOwogICAgICBIRUFQOFsodGhpcy5wdHIgKyAxMykgPj4gMF0gPSByZXRocm93bjsKICAgIH07CiAgICB0aGlzLmdldF9yZXRocm93biA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIEhFQVA4Wyh0aGlzLnB0ciArIDEzKSA+PiAwXSAhPSAwOwogICAgfTsKICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICh0eXBlLCBkZXN0cnVjdG9yKSB7CiAgICAgIHRoaXMuc2V0X2FkanVzdGVkX3B0cigwKTsKICAgICAgdGhpcy5zZXRfdHlwZSh0eXBlKTsKICAgICAgdGhpcy5zZXRfZGVzdHJ1Y3RvcihkZXN0cnVjdG9yKTsKICAgICAgdGhpcy5zZXRfcmVmY291bnQoMCk7CiAgICAgIHRoaXMuc2V0X2NhdWdodChmYWxzZSk7CiAgICAgIHRoaXMuc2V0X3JldGhyb3duKGZhbHNlKTsKICAgIH07CiAgICB0aGlzLmFkZF9yZWYgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGxldCB2YWx1ZSA9IEhFQVAzMlt0aGlzLnB0ciA+PiAyXTsKICAgICAgSEVBUDMyW3RoaXMucHRyID4+IDJdID0gdmFsdWUgKyAxOwogICAgfTsKICAgIHRoaXMucmVsZWFzZV9yZWYgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGxldCBwcmV2ID0gSEVBUDMyW3RoaXMucHRyID4+IDJdOwogICAgICBIRUFQMzJbdGhpcy5wdHIgPj4gMl0gPSBwcmV2IC0gMTsKICAgICAgcmV0dXJuIHByZXYgPT09IDE7CiAgICB9OwogICAgdGhpcy5zZXRfYWRqdXN0ZWRfcHRyID0gZnVuY3Rpb24gKGFkanVzdGVkUHRyKSB7CiAgICAgIEhFQVBVMzJbKHRoaXMucHRyICsgMTYpID4+IDJdID0gYWRqdXN0ZWRQdHI7CiAgICB9OwogICAgdGhpcy5nZXRfYWRqdXN0ZWRfcHRyID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gSEVBUFUzMlsodGhpcy5wdHIgKyAxNikgPj4gMl07CiAgICB9OwogICAgdGhpcy5nZXRfZXhjZXB0aW9uX3B0ciA9IGZ1bmN0aW9uICgpIHsKICAgICAgbGV0IGlzUG9pbnRlciA9IF9fX2N4YV9pc19wb2ludGVyX3R5cGUodGhpcy5nZXRfdHlwZSgpKTsKICAgICAgaWYgKGlzUG9pbnRlcikgewogICAgICAgIHJldHVybiBIRUFQVTMyW3RoaXMuZXhjUHRyID4+IDJdOwogICAgICB9CiAgICAgIGxldCBhZGp1c3RlZCA9IHRoaXMuZ2V0X2FkanVzdGVkX3B0cigpOwogICAgICBpZiAoYWRqdXN0ZWQgIT09IDApIHJldHVybiBhZGp1c3RlZDsKICAgICAgcmV0dXJuIHRoaXMuZXhjUHRyOwogICAgfTsKICB9CiAgbGV0IGV4Y2VwdGlvbkxhc3QgPSAwOwogIGxldCB1bmNhdWdodEV4Y2VwdGlvbkNvdW50ID0gMDsKICBmdW5jdGlvbiBfX19jeGFfdGhyb3cocHRyLCB0eXBlLCBkZXN0cnVjdG9yKSB7CiAgICBsZXQgaW5mbyA9IG5ldyBFeGNlcHRpb25JbmZvKHB0cik7CiAgICBpbmZvLmluaXQodHlwZSwgZGVzdHJ1Y3Rvcik7CiAgICBleGNlcHRpb25MYXN0ID0gcHRyOwogICAgdW5jYXVnaHRFeGNlcHRpb25Db3VudCsrOwogICAgdGhyb3cgcHRyOwogIH0KICBmdW5jdGlvbiBfYWJvcnQoKSB7CiAgICBhYm9ydCgiIik7CiAgfQogIGZ1bmN0aW9uIGdldEhlYXBNYXgoKSB7CiAgICByZXR1cm4gMjE0NzQ4MzY0ODsKICB9CiAgZnVuY3Rpb24gZW1zY3JpcHRlbl9yZWFsbG9jX2J1ZmZlcihzaXplKSB7CiAgICB0cnkgewogICAgICB3YXNtTWVtb3J5Lmdyb3coKHNpemUgLSBidWZmZXIuYnl0ZUxlbmd0aCArIDY1NTM1KSA+Pj4gMTYpOwogICAgICB1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyh3YXNtTWVtb3J5LmJ1ZmZlcik7CiAgICAgIHJldHVybiAxOwogICAgfSBjYXRjaCAoZSkge30KICB9CiAgZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fcmVzaXplX2hlYXAocmVxdWVzdGVkU2l6ZSkgewogICAgbGV0IG9sZFNpemUgPSBIRUFQVTgubGVuZ3RoOwogICAgcmVxdWVzdGVkU2l6ZSA9IHJlcXVlc3RlZFNpemUgPj4+IDA7CiAgICBsZXQgbWF4SGVhcFNpemUgPSBnZXRIZWFwTWF4KCk7CiAgICBpZiAocmVxdWVzdGVkU2l6ZSA+IG1heEhlYXBTaXplKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGxldCBhbGlnblVwID0gKHgsIG11bHRpcGxlKSA9PiB4ICsgKChtdWx0aXBsZSAtICh4ICUgbXVsdGlwbGUpKSAlIG11bHRpcGxlKTsKICAgIGZvciAobGV0IGN1dERvd24gPSAxOyBjdXREb3duIDw9IDQ7IGN1dERvd24gKj0gMikgewogICAgICBsZXQgb3Zlckdyb3duSGVhcFNpemUgPSBvbGRTaXplICogKDEgKyAwLjIgLyBjdXREb3duKTsKICAgICAgb3Zlckdyb3duSGVhcFNpemUgPSBNYXRoLm1pbihvdmVyR3Jvd25IZWFwU2l6ZSwgcmVxdWVzdGVkU2l6ZSArIDEwMDY2MzI5Nik7CiAgICAgIGxldCBuZXdTaXplID0gTWF0aC5taW4oCiAgICAgICAgbWF4SGVhcFNpemUsCiAgICAgICAgYWxpZ25VcChNYXRoLm1heChyZXF1ZXN0ZWRTaXplLCBvdmVyR3Jvd25IZWFwU2l6ZSksIDY1NTM2KSwKICAgICAgKTsKICAgICAgbGV0IHJlcGxhY2VtZW50ID0gZW1zY3JpcHRlbl9yZWFsbG9jX2J1ZmZlcihuZXdTaXplKTsKICAgICAgaWYgKHJlcGxhY2VtZW50KSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CiAgbGV0IEVOViA9IHt9OwogIGZ1bmN0aW9uIGdldEV4ZWN1dGFibGVOYW1lKCkgewogICAgcmV0dXJuIHRoaXNQcm9ncmFtIHx8ICIuL3RoaXMucHJvZ3JhbSI7CiAgfQogIGZ1bmN0aW9uIGdldEVudlN0cmluZ3MoKSB7CiAgICBpZiAoIWdldEVudlN0cmluZ3Muc3RyaW5ncykgewogICAgICBsZXQgbGFuZyA9CiAgICAgICAgKAogICAgICAgICAgKHR5cGVvZiBuYXZpZ2F0b3IgPT09ICJvYmplY3QiICYmIG5hdmlnYXRvci5sYW5ndWFnZXMgJiYgbmF2aWdhdG9yLmxhbmd1YWdlc1swXSkgfHwKICAgICAgICAgICJDIgogICAgICAgICkucmVwbGFjZSgiLSIsICJfIikgKyAiLlVURi04IjsKICAgICAgbGV0IGVudiA9IHsKICAgICAgICBVU0VSOiAid2ViX3VzZXIiLAogICAgICAgIExPR05BTUU6ICJ3ZWJfdXNlciIsCiAgICAgICAgUEFUSDogIi8iLAogICAgICAgIFBXRDogIi8iLAogICAgICAgIEhPTUU6ICIvaG9tZS93ZWJfdXNlciIsCiAgICAgICAgTEFORzogbGFuZywKICAgICAgICBfOiBnZXRFeGVjdXRhYmxlTmFtZSgpLAogICAgICB9OwogICAgICBmb3IgKHZhciB4IGluIEVOVikgewogICAgICAgIGlmIChFTlZbeF0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGVudlt4XTsKICAgICAgICBlbHNlIGVudlt4XSA9IEVOVlt4XTsKICAgICAgfQogICAgICBsZXQgc3RyaW5ncyA9IFtdOwogICAgICBmb3IgKHZhciB4IGluIGVudikgewogICAgICAgIHN0cmluZ3MucHVzaCh4ICsgIj0iICsgZW52W3hdKTsKICAgICAgfQogICAgICBnZXRFbnZTdHJpbmdzLnN0cmluZ3MgPSBzdHJpbmdzOwogICAgfQogICAgcmV0dXJuIGdldEVudlN0cmluZ3Muc3RyaW5nczsKICB9CiAgZnVuY3Rpb24gd3JpdGVBc2NpaVRvTWVtb3J5KHN0ciwgYnVmZmVyLCBkb250QWRkTnVsbCkgewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgICAgSEVBUDhbYnVmZmVyKysgPj4gMF0gPSBzdHIuY2hhckNvZGVBdChpKTsKICAgIH0KICAgIGlmICghZG9udEFkZE51bGwpIEhFQVA4W2J1ZmZlciA+PiAwXSA9IDA7CiAgfQogIHZhciBQQVRIID0gewogICAgaXNBYnM6IChwYXRoKSA9PiBwYXRoLmNoYXJBdCgwKSA9PT0gIi8iLAogICAgc3BsaXRQYXRoOiAoZmlsZW5hbWUpID0+IHsKICAgICAgbGV0IHNwbGl0UGF0aFJlID0gL14oXC8/fCkoW1xzXFNdKj8pKCg/OlwuezEsMn18W15cL10rP3wpKFwuW14uXC9dKnwpKSg/OltcL10qKSQvOwogICAgICByZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7CiAgICB9LAogICAgbm9ybWFsaXplQXJyYXk6IChwYXJ0cywgYWxsb3dBYm92ZVJvb3QpID0+IHsKICAgICAgbGV0IHVwID0gMDsKICAgICAgZm9yIChsZXQgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgbGV0IGxhc3QgPSBwYXJ0c1tpXTsKICAgICAgICBpZiAobGFzdCA9PT0gIi4iKSB7CiAgICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7CiAgICAgICAgfSBlbHNlIGlmIChsYXN0ID09PSAiLi4iKSB7CiAgICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7CiAgICAgICAgICB1cCsrOwogICAgICAgIH0gZWxzZSBpZiAodXApIHsKICAgICAgICAgIHBhcnRzLnNwbGljZShpLCAxKTsKICAgICAgICAgIHVwLS07CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkgewogICAgICAgIGZvciAoOyB1cDsgdXAtLSkgewogICAgICAgICAgcGFydHMudW5zaGlmdCgiLi4iKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHBhcnRzOwogICAgfSwKICAgIG5vcm1hbGl6ZTogKHBhdGgpID0+IHsKICAgICAgbGV0IGlzQWJzb2x1dGUgPSBQQVRILmlzQWJzKHBhdGgpLAogICAgICAgIHRyYWlsaW5nU2xhc2ggPSBwYXRoLnN1YnN0cigtMSkgPT09ICIvIjsKICAgICAgcGF0aCA9IFBBVEgubm9ybWFsaXplQXJyYXkoCiAgICAgICAgcGF0aC5zcGxpdCgiLyIpLmZpbHRlcigocCkgPT4gISFwKSwKICAgICAgICAhaXNBYnNvbHV0ZSwKICAgICAgKS5qb2luKCIvIik7CiAgICAgIGlmICghcGF0aCAmJiAhaXNBYnNvbHV0ZSkgewogICAgICAgIHBhdGggPSAiLiI7CiAgICAgIH0KICAgICAgaWYgKHBhdGggJiYgdHJhaWxpbmdTbGFzaCkgewogICAgICAgIHBhdGggKz0gIi8iOwogICAgICB9CiAgICAgIHJldHVybiAoaXNBYnNvbHV0ZSA/ICIvIiA6ICIiKSArIHBhdGg7CiAgICB9LAogICAgZGlybmFtZTogKHBhdGgpID0+IHsKICAgICAgbGV0IHJlc3VsdCA9IFBBVEguc3BsaXRQYXRoKHBhdGgpLAogICAgICAgIHJvb3QgPSByZXN1bHRbMF0sCiAgICAgICAgZGlyID0gcmVzdWx0WzFdOwogICAgICBpZiAoIXJvb3QgJiYgIWRpcikgewogICAgICAgIHJldHVybiAiLiI7CiAgICAgIH0KICAgICAgaWYgKGRpcikgewogICAgICAgIGRpciA9IGRpci5zdWJzdHIoMCwgZGlyLmxlbmd0aCAtIDEpOwogICAgICB9CiAgICAgIHJldHVybiByb290ICsgZGlyOwogICAgfSwKICAgIGJhc2VuYW1lOiAocGF0aCkgPT4gewogICAgICBpZiAocGF0aCA9PT0gIi8iKSByZXR1cm4gIi8iOwogICAgICBwYXRoID0gUEFUSC5ub3JtYWxpemUocGF0aCk7CiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1wvJC8sICIiKTsKICAgICAgbGV0IGxhc3RTbGFzaCA9IHBhdGgubGFzdEluZGV4T2YoIi8iKTsKICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gLTEpIHJldHVybiBwYXRoOwogICAgICByZXR1cm4gcGF0aC5zdWJzdHIobGFzdFNsYXNoICsgMSk7CiAgICB9LAogICAgam9pbigpIHsKICAgICAgbGV0IHBhdGhzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgcmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGhzLmpvaW4oIi8iKSk7CiAgICB9LAogICAgam9pbjI6IChsLCByKSA9PiB7CiAgICAgIHJldHVybiBQQVRILm5vcm1hbGl6ZShsICsgIi8iICsgcik7CiAgICB9LAogIH07CiAgZnVuY3Rpb24gZ2V0UmFuZG9tRGV2aWNlKCkgewogICAgaWYgKHR5cGVvZiBjcnlwdG8gPT09ICJvYmplY3QiICYmIHR5cGVvZiBjcnlwdG9bImdldFJhbmRvbVZhbHVlcyJdID09PSAiZnVuY3Rpb24iKSB7CiAgICAgIGxldCByYW5kb21CdWZmZXIgPSBuZXcgVWludDhBcnJheSgxKTsKICAgICAgcmV0dXJuICgpID0+IHsKICAgICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHJhbmRvbUJ1ZmZlcik7CiAgICAgICAgcmV0dXJuIHJhbmRvbUJ1ZmZlclswXTsKICAgICAgfTsKICAgIH0gZWxzZSBpZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkgewogICAgICB0cnkgewogICAgICAgIGxldCBjcnlwdG9fbW9kdWxlID0gcmVxdWlyZSgiY3J5cHRvIik7CiAgICAgICAgcmV0dXJuICgpID0+IGNyeXB0b19tb2R1bGVbInJhbmRvbUJ5dGVzIl0oMSlbMF07CiAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICB9CiAgICByZXR1cm4gKCkgPT4gYWJvcnQoInJhbmRvbURldmljZSIpOwogIH0KICB2YXIgUEFUSF9GUyA9IHsKICAgIHJlc29sdmUoKSB7CiAgICAgIGxldCByZXNvbHZlZFBhdGggPSAiIiwKICAgICAgICByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7CiAgICAgIGZvciAobGV0IGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7CiAgICAgICAgbGV0IHBhdGggPSBpID49IDAgPyBhcmd1bWVudHNbaV0gOiBGUy5jd2QoKTsKICAgICAgICBpZiAodHlwZW9mIHBhdGggIT09ICJzdHJpbmciKSB7CiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpOwogICAgICAgIH0gZWxzZSBpZiAoIXBhdGgpIHsKICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICB9CiAgICAgICAgcmVzb2x2ZWRQYXRoID0gcGF0aCArICIvIiArIHJlc29sdmVkUGF0aDsKICAgICAgICByZXNvbHZlZEFic29sdXRlID0gUEFUSC5pc0FicyhwYXRoKTsKICAgICAgfQogICAgICByZXNvbHZlZFBhdGggPSBQQVRILm5vcm1hbGl6ZUFycmF5KAogICAgICAgIHJlc29sdmVkUGF0aC5zcGxpdCgiLyIpLmZpbHRlcigocCkgPT4gISFwKSwKICAgICAgICAhcmVzb2x2ZWRBYnNvbHV0ZSwKICAgICAgKS5qb2luKCIvIik7CiAgICAgIHJldHVybiAocmVzb2x2ZWRBYnNvbHV0ZSA/ICIvIiA6ICIiKSArIHJlc29sdmVkUGF0aCB8fCAiLiI7CiAgICB9LAogICAgcmVsYXRpdmU6IChmcm9tLCB0bykgPT4gewogICAgICBmcm9tID0gUEFUSF9GUy5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTsKICAgICAgdG8gPSBQQVRIX0ZTLnJlc29sdmUodG8pLnN1YnN0cigxKTsKICAgICAgZnVuY3Rpb24gdHJpbShhcnIpIHsKICAgICAgICBsZXQgc3RhcnQgPSAwOwogICAgICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHsKICAgICAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAiIikgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGxldCBlbmQgPSBhcnIubGVuZ3RoIC0gMTsKICAgICAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7CiAgICAgICAgICBpZiAoYXJyW2VuZF0gIT09ICIiKSBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHN0YXJ0ID4gZW5kKSByZXR1cm4gW107CiAgICAgICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKICAgICAgfQogICAgICBsZXQgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCIvIikpOwogICAgICBsZXQgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoIi8iKSk7CiAgICAgIGxldCBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7CiAgICAgIGxldCBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7CiAgICAgICAgICBzYW1lUGFydHNMZW5ndGggPSBpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxldCBvdXRwdXRQYXJ0cyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gc2FtZVBhcnRzTGVuZ3RoOyBpIDwgZnJvbVBhcnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3V0cHV0UGFydHMucHVzaCgiLi4iKTsKICAgICAgfQogICAgICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpOwogICAgICByZXR1cm4gb3V0cHV0UGFydHMuam9pbigiLyIpOwogICAgfSwKICB9OwogIGZ1bmN0aW9uIGludEFycmF5RnJvbVN0cmluZyhzdHJpbmd5LCBkb250QWRkTnVsbCwgbGVuZ3RoKSB7CiAgICBsZXQgbGVuID0gbGVuZ3RoID4gMCA/IGxlbmd0aCA6IGxlbmd0aEJ5dGVzVVRGOChzdHJpbmd5KSArIDE7CiAgICBsZXQgdThhcnJheSA9IG5ldyBBcnJheShsZW4pOwogICAgbGV0IG51bUJ5dGVzV3JpdHRlbiA9IHN0cmluZ1RvVVRGOEFycmF5KHN0cmluZ3ksIHU4YXJyYXksIDAsIHU4YXJyYXkubGVuZ3RoKTsKICAgIGlmIChkb250QWRkTnVsbCkgdThhcnJheS5sZW5ndGggPSBudW1CeXRlc1dyaXR0ZW47CiAgICByZXR1cm4gdThhcnJheTsKICB9CiAgdmFyIFRUWSA9IHsKICAgIHR0eXM6IFtdLAogICAgaW5pdCgpIHt9LAogICAgc2h1dGRvd24oKSB7fSwKICAgIHJlZ2lzdGVyKGRldiwgb3BzKSB7CiAgICAgIFRUWS50dHlzW2Rldl0gPSB7IGlucHV0OiBbXSwgb3V0cHV0OiBbXSwgb3BzIH07CiAgICAgIEZTLnJlZ2lzdGVyRGV2aWNlKGRldiwgVFRZLnN0cmVhbV9vcHMpOwogICAgfSwKICAgIHN0cmVhbV9vcHM6IHsKICAgICAgb3BlbihzdHJlYW0pIHsKICAgICAgICBsZXQgdHR5ID0gVFRZLnR0eXNbc3RyZWFtLm5vZGUucmRldl07CiAgICAgICAgaWYgKCF0dHkpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQzKTsKICAgICAgICB9CiAgICAgICAgc3RyZWFtLnR0eSA9IHR0eTsKICAgICAgICBzdHJlYW0uc2Vla2FibGUgPSBmYWxzZTsKICAgICAgfSwKICAgICAgY2xvc2Uoc3RyZWFtKSB7CiAgICAgICAgc3RyZWFtLnR0eS5vcHMuZnN5bmMoc3RyZWFtLnR0eSk7CiAgICAgIH0sCiAgICAgIGZzeW5jKHN0cmVhbSkgewogICAgICAgIHN0cmVhbS50dHkub3BzLmZzeW5jKHN0cmVhbS50dHkpOwogICAgICB9LAogICAgICByZWFkKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zKSB7CiAgICAgICAgaWYgKCFzdHJlYW0udHR5IHx8ICFzdHJlYW0udHR5Lm9wcy5nZXRfY2hhcikgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjApOwogICAgICAgIH0KICAgICAgICBsZXQgYnl0ZXNSZWFkID0gMDsKICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmVzdWx0ID0gc3RyZWFtLnR0eS5vcHMuZ2V0X2NoYXIoc3RyZWFtLnR0eSk7CiAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCAmJiBieXRlc1JlYWQgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNik7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkKSBicmVhazsKICAgICAgICAgIGJ5dGVzUmVhZCsrOwogICAgICAgICAgYnVmZmVyW29mZnNldCArIGldID0gcmVzdWx0OwogICAgICAgIH0KICAgICAgICBpZiAoYnl0ZXNSZWFkKSB7CiAgICAgICAgICBzdHJlYW0ubm9kZS50aW1lc3RhbXAgPSBEYXRlLm5vdygpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwogICAgICB9LAogICAgICB3cml0ZShzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgewogICAgICAgIGlmICghc3RyZWFtLnR0eSB8fCAhc3RyZWFtLnR0eS5vcHMucHV0X2NoYXIpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYwKTsKICAgICAgICB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc3RyZWFtLnR0eS5vcHMucHV0X2NoYXIoc3RyZWFtLnR0eSwgYnVmZmVyW29mZnNldCArIGldKTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOSk7CiAgICAgICAgfQogICAgICAgIGlmIChsZW5ndGgpIHsKICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBpOwogICAgICB9LAogICAgfSwKICAgIGRlZmF1bHRfdHR5X29wczogewogICAgICBnZXRfY2hhcih0dHkpIHsKICAgICAgICBpZiAoIXR0eS5pbnB1dC5sZW5ndGgpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsOwogICAgICAgICAgaWYgKEVOVklST05NRU5UX0lTX05PREUpIHsKICAgICAgICAgICAgbGV0IEJVRlNJWkUgPSAyNTY7CiAgICAgICAgICAgIGxldCBidWYgPSBCdWZmZXIuYWxsb2MoQlVGU0laRSk7CiAgICAgICAgICAgIGxldCBieXRlc1JlYWQgPSAwOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIGJ5dGVzUmVhZCA9IGZzLnJlYWRTeW5jKHByb2Nlc3Muc3RkaW4uZmQsIGJ1ZiwgMCwgQlVGU0laRSwgLTEpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgaWYgKGUudG9TdHJpbmcoKS5pbmNsdWRlcygiRU9GIikpIGJ5dGVzUmVhZCA9IDA7CiAgICAgICAgICAgICAgZWxzZSB0aHJvdyBlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChieXRlc1JlYWQgPiAwKSB7CiAgICAgICAgICAgICAgcmVzdWx0ID0gYnVmLnNsaWNlKDAsIGJ5dGVzUmVhZCkudG9TdHJpbmcoInV0Zi04Iik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcmVzdWx0ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiAmJiB0eXBlb2Ygd2luZG93LnByb21wdCA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICByZXN1bHQgPSB3aW5kb3cucHJvbXB0KCJJbnB1dDogIik7CiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHsKICAgICAgICAgICAgICByZXN1bHQgKz0gIlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVhZGxpbmUgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgcmVzdWx0ID0gcmVhZGxpbmUoKTsKICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkgewogICAgICAgICAgICAgIHJlc3VsdCArPSAiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIHR0eS5pbnB1dCA9IGludEFycmF5RnJvbVN0cmluZyhyZXN1bHQsIHRydWUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHR5LmlucHV0LnNoaWZ0KCk7CiAgICAgIH0sCiAgICAgIHB1dF9jaGFyKHR0eSwgdmFsKSB7CiAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IDEwKSB7CiAgICAgICAgICBvdXQoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwogICAgICAgICAgdHR5Lm91dHB1dCA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAodmFsICE9IDApIHR0eS5vdXRwdXQucHVzaCh2YWwpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgZnN5bmModHR5KSB7CiAgICAgICAgaWYgKHR0eS5vdXRwdXQgJiYgdHR5Lm91dHB1dC5sZW5ndGggPiAwKSB7CiAgICAgICAgICBvdXQoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwogICAgICAgICAgdHR5Lm91dHB1dCA9IFtdOwogICAgICAgIH0KICAgICAgfSwKICAgIH0sCiAgICBkZWZhdWx0X3R0eTFfb3BzOiB7CiAgICAgIHB1dF9jaGFyKHR0eSwgdmFsKSB7CiAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IDEwKSB7CiAgICAgICAgICBlcnIoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwogICAgICAgICAgdHR5Lm91dHB1dCA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAodmFsICE9IDApIHR0eS5vdXRwdXQucHVzaCh2YWwpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgZnN5bmModHR5KSB7CiAgICAgICAgaWYgKHR0eS5vdXRwdXQgJiYgdHR5Lm91dHB1dC5sZW5ndGggPiAwKSB7CiAgICAgICAgICBlcnIoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwogICAgICAgICAgdHR5Lm91dHB1dCA9IFtdOwogICAgICAgIH0KICAgICAgfSwKICAgIH0sCiAgfTsKICBmdW5jdGlvbiBtbWFwQWxsb2Moc2l6ZSkgewogICAgYWJvcnQoKTsKICB9CiAgdmFyIE1FTUZTID0gewogICAgb3BzX3RhYmxlOiBudWxsLAogICAgbW91bnQobW91bnQpIHsKICAgICAgcmV0dXJuIE1FTUZTLmNyZWF0ZU5vZGUobnVsbCwgIi8iLCAxNjM4NCB8IDUxMSwgMCk7CiAgICB9LAogICAgY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIGRldikgewogICAgICBpZiAoRlMuaXNCbGtkZXYobW9kZSkgfHwgRlMuaXNGSUZPKG1vZGUpKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpOwogICAgICB9CiAgICAgIGlmICghTUVNRlMub3BzX3RhYmxlKSB7CiAgICAgICAgTUVNRlMub3BzX3RhYmxlID0gewogICAgICAgICAgZGlyOiB7CiAgICAgICAgICAgIG5vZGU6IHsKICAgICAgICAgICAgICBnZXRhdHRyOiBNRU1GUy5ub2RlX29wcy5nZXRhdHRyLAogICAgICAgICAgICAgIHNldGF0dHI6IE1FTUZTLm5vZGVfb3BzLnNldGF0dHIsCiAgICAgICAgICAgICAgbG9va3VwOiBNRU1GUy5ub2RlX29wcy5sb29rdXAsCiAgICAgICAgICAgICAgbWtub2Q6IE1FTUZTLm5vZGVfb3BzLm1rbm9kLAogICAgICAgICAgICAgIHJlbmFtZTogTUVNRlMubm9kZV9vcHMucmVuYW1lLAogICAgICAgICAgICAgIHVubGluazogTUVNRlMubm9kZV9vcHMudW5saW5rLAogICAgICAgICAgICAgIHJtZGlyOiBNRU1GUy5ub2RlX29wcy5ybWRpciwKICAgICAgICAgICAgICByZWFkZGlyOiBNRU1GUy5ub2RlX29wcy5yZWFkZGlyLAogICAgICAgICAgICAgIHN5bWxpbms6IE1FTUZTLm5vZGVfb3BzLnN5bWxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0cmVhbTogeyBsbHNlZWs6IE1FTUZTLnN0cmVhbV9vcHMubGxzZWVrIH0sCiAgICAgICAgICB9LAogICAgICAgICAgZmlsZTogewogICAgICAgICAgICBub2RlOiB7IGdldGF0dHI6IE1FTUZTLm5vZGVfb3BzLmdldGF0dHIsIHNldGF0dHI6IE1FTUZTLm5vZGVfb3BzLnNldGF0dHIgfSwKICAgICAgICAgICAgc3RyZWFtOiB7CiAgICAgICAgICAgICAgbGxzZWVrOiBNRU1GUy5zdHJlYW1fb3BzLmxsc2VlaywKICAgICAgICAgICAgICByZWFkOiBNRU1GUy5zdHJlYW1fb3BzLnJlYWQsCiAgICAgICAgICAgICAgd3JpdGU6IE1FTUZTLnN0cmVhbV9vcHMud3JpdGUsCiAgICAgICAgICAgICAgYWxsb2NhdGU6IE1FTUZTLnN0cmVhbV9vcHMuYWxsb2NhdGUsCiAgICAgICAgICAgICAgbW1hcDogTUVNRlMuc3RyZWFtX29wcy5tbWFwLAogICAgICAgICAgICAgIG1zeW5jOiBNRU1GUy5zdHJlYW1fb3BzLm1zeW5jLAogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICAgIGxpbms6IHsKICAgICAgICAgICAgbm9kZTogewogICAgICAgICAgICAgIGdldGF0dHI6IE1FTUZTLm5vZGVfb3BzLmdldGF0dHIsCiAgICAgICAgICAgICAgc2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0ciwKICAgICAgICAgICAgICByZWFkbGluazogTUVNRlMubm9kZV9vcHMucmVhZGxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0cmVhbToge30sCiAgICAgICAgICB9LAogICAgICAgICAgY2hyZGV2OiB7CiAgICAgICAgICAgIG5vZGU6IHsgZ2V0YXR0cjogTUVNRlMubm9kZV9vcHMuZ2V0YXR0ciwgc2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0ciB9LAogICAgICAgICAgICBzdHJlYW06IEZTLmNocmRldl9zdHJlYW1fb3BzLAogICAgICAgICAgfSwKICAgICAgICB9OwogICAgICB9CiAgICAgIGxldCBub2RlID0gRlMuY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIGRldik7CiAgICAgIGlmIChGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgICAgICAgbm9kZS5ub2RlX29wcyA9IE1FTUZTLm9wc190YWJsZS5kaXIubm9kZTsKICAgICAgICBub2RlLnN0cmVhbV9vcHMgPSBNRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTsKICAgICAgICBub2RlLmNvbnRlbnRzID0ge307CiAgICAgIH0gZWxzZSBpZiAoRlMuaXNGaWxlKG5vZGUubW9kZSkpIHsKICAgICAgICBub2RlLm5vZGVfb3BzID0gTUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTsKICAgICAgICBub2RlLnN0cmVhbV9vcHMgPSBNRU1GUy5vcHNfdGFibGUuZmlsZS5zdHJlYW07CiAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSAwOwogICAgICAgIG5vZGUuY29udGVudHMgPSBudWxsOwogICAgICB9IGVsc2UgaWYgKEZTLmlzTGluayhub2RlLm1vZGUpKSB7CiAgICAgICAgbm9kZS5ub2RlX29wcyA9IE1FTUZTLm9wc190YWJsZS5saW5rLm5vZGU7CiAgICAgICAgbm9kZS5zdHJlYW1fb3BzID0gTUVNRlMub3BzX3RhYmxlLmxpbmsuc3RyZWFtOwogICAgICB9IGVsc2UgaWYgKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpIHsKICAgICAgICBub2RlLm5vZGVfb3BzID0gTUVNRlMub3BzX3RhYmxlLmNocmRldi5ub2RlOwogICAgICAgIG5vZGUuc3RyZWFtX29wcyA9IE1FTUZTLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtOwogICAgICB9CiAgICAgIG5vZGUudGltZXN0YW1wID0gRGF0ZS5ub3coKTsKICAgICAgaWYgKHBhcmVudCkgewogICAgICAgIHBhcmVudC5jb250ZW50c1tuYW1lXSA9IG5vZGU7CiAgICAgICAgcGFyZW50LnRpbWVzdGFtcCA9IG5vZGUudGltZXN0YW1wOwogICAgICB9CiAgICAgIHJldHVybiBub2RlOwogICAgfSwKICAgIGdldEZpbGVEYXRhQXNUeXBlZEFycmF5KG5vZGUpIHsKICAgICAgaWYgKCFub2RlLmNvbnRlbnRzKSByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7CiAgICAgIGlmIChub2RlLmNvbnRlbnRzLnN1YmFycmF5KSByZXR1cm4gbm9kZS5jb250ZW50cy5zdWJhcnJheSgwLCBub2RlLnVzZWRCeXRlcyk7CiAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShub2RlLmNvbnRlbnRzKTsKICAgIH0sCiAgICBleHBhbmRGaWxlU3RvcmFnZShub2RlLCBuZXdDYXBhY2l0eSkgewogICAgICBsZXQgcHJldkNhcGFjaXR5ID0gbm9kZS5jb250ZW50cyA/IG5vZGUuY29udGVudHMubGVuZ3RoIDogMDsKICAgICAgaWYgKHByZXZDYXBhY2l0eSA+PSBuZXdDYXBhY2l0eSkgcmV0dXJuOwogICAgICBsZXQgQ0FQQUNJVFlfRE9VQkxJTkdfTUFYID0gMTAyNCAqIDEwMjQ7CiAgICAgIG5ld0NhcGFjaXR5ID0gTWF0aC5tYXgoCiAgICAgICAgbmV3Q2FwYWNpdHksCiAgICAgICAgKHByZXZDYXBhY2l0eSAqIChwcmV2Q2FwYWNpdHkgPCBDQVBBQ0lUWV9ET1VCTElOR19NQVggPyAyIDogMS4xMjUpKSA+Pj4gMCwKICAgICAgKTsKICAgICAgaWYgKHByZXZDYXBhY2l0eSAhPSAwKSBuZXdDYXBhY2l0eSA9IE1hdGgubWF4KG5ld0NhcGFjaXR5LCAyNTYpOwogICAgICBsZXQgb2xkQ29udGVudHMgPSBub2RlLmNvbnRlbnRzOwogICAgICBub2RlLmNvbnRlbnRzID0gbmV3IFVpbnQ4QXJyYXkobmV3Q2FwYWNpdHkpOwogICAgICBpZiAobm9kZS51c2VkQnl0ZXMgPiAwKSBub2RlLmNvbnRlbnRzLnNldChvbGRDb250ZW50cy5zdWJhcnJheSgwLCBub2RlLnVzZWRCeXRlcyksIDApOwogICAgfSwKICAgIHJlc2l6ZUZpbGVTdG9yYWdlKG5vZGUsIG5ld1NpemUpIHsKICAgICAgaWYgKG5vZGUudXNlZEJ5dGVzID09IG5ld1NpemUpIHJldHVybjsKICAgICAgaWYgKG5ld1NpemUgPT0gMCkgewogICAgICAgIG5vZGUuY29udGVudHMgPSBudWxsOwogICAgICAgIG5vZGUudXNlZEJ5dGVzID0gMDsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgb2xkQ29udGVudHMgPSBub2RlLmNvbnRlbnRzOwogICAgICAgIG5vZGUuY29udGVudHMgPSBuZXcgVWludDhBcnJheShuZXdTaXplKTsKICAgICAgICBpZiAob2xkQ29udGVudHMpIHsKICAgICAgICAgIG5vZGUuY29udGVudHMuc2V0KG9sZENvbnRlbnRzLnN1YmFycmF5KDAsIE1hdGgubWluKG5ld1NpemUsIG5vZGUudXNlZEJ5dGVzKSkpOwogICAgICAgIH0KICAgICAgICBub2RlLnVzZWRCeXRlcyA9IG5ld1NpemU7CiAgICAgIH0KICAgIH0sCiAgICBub2RlX29wczogewogICAgICBnZXRhdHRyKG5vZGUpIHsKICAgICAgICBsZXQgYXR0ciA9IHt9OwogICAgICAgIGF0dHIuZGV2ID0gRlMuaXNDaHJkZXYobm9kZS5tb2RlKSA/IG5vZGUuaWQgOiAxOwogICAgICAgIGF0dHIuaW5vID0gbm9kZS5pZDsKICAgICAgICBhdHRyLm1vZGUgPSBub2RlLm1vZGU7CiAgICAgICAgYXR0ci5ubGluayA9IDE7CiAgICAgICAgYXR0ci51aWQgPSAwOwogICAgICAgIGF0dHIuZ2lkID0gMDsKICAgICAgICBhdHRyLnJkZXYgPSBub2RlLnJkZXY7CiAgICAgICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgICAgICAgIGF0dHIuc2l6ZSA9IDQwOTY7CiAgICAgICAgfSBlbHNlIGlmIChGUy5pc0ZpbGUobm9kZS5tb2RlKSkgewogICAgICAgICAgYXR0ci5zaXplID0gbm9kZS51c2VkQnl0ZXM7CiAgICAgICAgfSBlbHNlIGlmIChGUy5pc0xpbmsobm9kZS5tb2RlKSkgewogICAgICAgICAgYXR0ci5zaXplID0gbm9kZS5saW5rLmxlbmd0aDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYXR0ci5zaXplID0gMDsKICAgICAgICB9CiAgICAgICAgYXR0ci5hdGltZSA9IG5ldyBEYXRlKG5vZGUudGltZXN0YW1wKTsKICAgICAgICBhdHRyLm10aW1lID0gbmV3IERhdGUobm9kZS50aW1lc3RhbXApOwogICAgICAgIGF0dHIuY3RpbWUgPSBuZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7CiAgICAgICAgYXR0ci5ibGtzaXplID0gNDA5NjsKICAgICAgICBhdHRyLmJsb2NrcyA9IE1hdGguY2VpbChhdHRyLnNpemUgLyBhdHRyLmJsa3NpemUpOwogICAgICAgIHJldHVybiBhdHRyOwogICAgICB9LAogICAgICBzZXRhdHRyKG5vZGUsIGF0dHIpIHsKICAgICAgICBpZiAoYXR0ci5tb2RlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIG5vZGUubW9kZSA9IGF0dHIubW9kZTsKICAgICAgICB9CiAgICAgICAgaWYgKGF0dHIudGltZXN0YW1wICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIG5vZGUudGltZXN0YW1wID0gYXR0ci50aW1lc3RhbXA7CiAgICAgICAgfQogICAgICAgIGlmIChhdHRyLnNpemUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgTUVNRlMucmVzaXplRmlsZVN0b3JhZ2Uobm9kZSwgYXR0ci5zaXplKTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGxvb2t1cChwYXJlbnQsIG5hbWUpIHsKICAgICAgICB0aHJvdyBGUy5nZW5lcmljRXJyb3JzWzQ0XTsKICAgICAgfSwKICAgICAgbWtub2QocGFyZW50LCBuYW1lLCBtb2RlLCBkZXYpIHsKICAgICAgICByZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIGRldik7CiAgICAgIH0sCiAgICAgIHJlbmFtZShvbGRfbm9kZSwgbmV3X2RpciwgbmV3X25hbWUpIHsKICAgICAgICBpZiAoRlMuaXNEaXIob2xkX25vZGUubW9kZSkpIHsKICAgICAgICAgIGxldCBuZXdfbm9kZTsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIG5ld19ub2RlID0gRlMubG9va3VwTm9kZShuZXdfZGlyLCBuZXdfbmFtZSk7CiAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgaWYgKG5ld19ub2RlKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgaW4gbmV3X25vZGUuY29udGVudHMpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGVsZXRlIG9sZF9ub2RlLnBhcmVudC5jb250ZW50c1tvbGRfbm9kZS5uYW1lXTsKICAgICAgICBvbGRfbm9kZS5wYXJlbnQudGltZXN0YW1wID0gRGF0ZS5ub3coKTsKICAgICAgICBvbGRfbm9kZS5uYW1lID0gbmV3X25hbWU7CiAgICAgICAgbmV3X2Rpci5jb250ZW50c1tuZXdfbmFtZV0gPSBvbGRfbm9kZTsKICAgICAgICBuZXdfZGlyLnRpbWVzdGFtcCA9IG9sZF9ub2RlLnBhcmVudC50aW1lc3RhbXA7CiAgICAgICAgb2xkX25vZGUucGFyZW50ID0gbmV3X2RpcjsKICAgICAgfSwKICAgICAgdW5saW5rKHBhcmVudCwgbmFtZSkgewogICAgICAgIGRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV07CiAgICAgICAgcGFyZW50LnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgIH0sCiAgICAgIHJtZGlyKHBhcmVudCwgbmFtZSkgewogICAgICAgIGxldCBub2RlID0gRlMubG9va3VwTm9kZShwYXJlbnQsIG5hbWUpOwogICAgICAgIGZvciAobGV0IGkgaW4gbm9kZS5jb250ZW50cykgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpOwogICAgICAgIH0KICAgICAgICBkZWxldGUgcGFyZW50LmNvbnRlbnRzW25hbWVdOwogICAgICAgIHBhcmVudC50aW1lc3RhbXAgPSBEYXRlLm5vdygpOwogICAgICB9LAogICAgICByZWFkZGlyKG5vZGUpIHsKICAgICAgICBsZXQgZW50cmllcyA9IFsiLiIsICIuLiJdOwogICAgICAgIGZvciAobGV0IGtleSBpbiBub2RlLmNvbnRlbnRzKSB7CiAgICAgICAgICBpZiAoIW5vZGUuY29udGVudHMuaGFzT3duUHJvcGVydHkoa2V5KSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIGVudHJpZXMucHVzaChrZXkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZW50cmllczsKICAgICAgfSwKICAgICAgc3ltbGluayhwYXJlbnQsIG5ld25hbWUsIG9sZHBhdGgpIHsKICAgICAgICBsZXQgbm9kZSA9IE1FTUZTLmNyZWF0ZU5vZGUocGFyZW50LCBuZXduYW1lLCA1MTEgfCA0MDk2MCwgMCk7CiAgICAgICAgbm9kZS5saW5rID0gb2xkcGF0aDsKICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfSwKICAgICAgcmVhZGxpbmsobm9kZSkgewogICAgICAgIGlmICghRlMuaXNMaW5rKG5vZGUubW9kZSkpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5vZGUubGluazsKICAgICAgfSwKICAgIH0sCiAgICBzdHJlYW1fb3BzOiB7CiAgICAgIHJlYWQoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikgewogICAgICAgIGxldCBjb250ZW50cyA9IHN0cmVhbS5ub2RlLmNvbnRlbnRzOwogICAgICAgIGlmIChwb3NpdGlvbiA+PSBzdHJlYW0ubm9kZS51c2VkQnl0ZXMpIHJldHVybiAwOwogICAgICAgIGxldCBzaXplID0gTWF0aC5taW4oc3RyZWFtLm5vZGUudXNlZEJ5dGVzIC0gcG9zaXRpb24sIGxlbmd0aCk7CiAgICAgICAgaWYgKHNpemUgPiA4ICYmIGNvbnRlbnRzLnN1YmFycmF5KSB7CiAgICAgICAgICBidWZmZXIuc2V0KGNvbnRlbnRzLnN1YmFycmF5KHBvc2l0aW9uLCBwb3NpdGlvbiArIHNpemUpLCBvZmZzZXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykgYnVmZmVyW29mZnNldCArIGldID0gY29udGVudHNbcG9zaXRpb24gKyBpXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgIH0sCiAgICAgIHdyaXRlKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbk93bikgewogICAgICAgIGlmIChidWZmZXIuYnVmZmVyID09PSBIRUFQOC5idWZmZXIpIHsKICAgICAgICAgIGNhbk93biA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoIWxlbmd0aCkgcmV0dXJuIDA7CiAgICAgICAgbGV0IG5vZGUgPSBzdHJlYW0ubm9kZTsKICAgICAgICBub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgICAgaWYgKGJ1ZmZlci5zdWJhcnJheSAmJiAoIW5vZGUuY29udGVudHMgfHwgbm9kZS5jb250ZW50cy5zdWJhcnJheSkpIHsKICAgICAgICAgIGlmIChjYW5Pd24pIHsKICAgICAgICAgICAgbm9kZS5jb250ZW50cyA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7CiAgICAgICAgICAgIG5vZGUudXNlZEJ5dGVzID0gbGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gbGVuZ3RoOwogICAgICAgICAgfSBlbHNlIGlmIChub2RlLnVzZWRCeXRlcyA9PT0gMCAmJiBwb3NpdGlvbiA9PT0gMCkgewogICAgICAgICAgICBub2RlLmNvbnRlbnRzID0gYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKTsKICAgICAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSBsZW5ndGg7CiAgICAgICAgICAgIHJldHVybiBsZW5ndGg7CiAgICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uICsgbGVuZ3RoIDw9IG5vZGUudXNlZEJ5dGVzKSB7CiAgICAgICAgICAgIG5vZGUuY29udGVudHMuc2V0KGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCksIHBvc2l0aW9uKTsKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgTUVNRlMuZXhwYW5kRmlsZVN0b3JhZ2Uobm9kZSwgcG9zaXRpb24gKyBsZW5ndGgpOwogICAgICAgIGlmIChub2RlLmNvbnRlbnRzLnN1YmFycmF5ICYmIGJ1ZmZlci5zdWJhcnJheSkgewogICAgICAgICAgbm9kZS5jb250ZW50cy5zZXQoYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSwgcG9zaXRpb24pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIG5vZGUuY29udGVudHNbcG9zaXRpb24gKyBpXSA9IGJ1ZmZlcltvZmZzZXQgKyBpXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSBNYXRoLm1heChub2RlLnVzZWRCeXRlcywgcG9zaXRpb24gKyBsZW5ndGgpOwogICAgICAgIHJldHVybiBsZW5ndGg7CiAgICAgIH0sCiAgICAgIGxsc2VlayhzdHJlYW0sIG9mZnNldCwgd2hlbmNlKSB7CiAgICAgICAgbGV0IHBvc2l0aW9uID0gb2Zmc2V0OwogICAgICAgIGlmICh3aGVuY2UgPT09IDEpIHsKICAgICAgICAgIHBvc2l0aW9uICs9IHN0cmVhbS5wb3NpdGlvbjsKICAgICAgICB9IGVsc2UgaWYgKHdoZW5jZSA9PT0gMikgewogICAgICAgICAgaWYgKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgICAgICAgICBwb3NpdGlvbiArPSBzdHJlYW0ubm9kZS51c2VkQnl0ZXM7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChwb3NpdGlvbiA8IDApIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogICAgICB9LAogICAgICBhbGxvY2F0ZShzdHJlYW0sIG9mZnNldCwgbGVuZ3RoKSB7CiAgICAgICAgTUVNRlMuZXhwYW5kRmlsZVN0b3JhZ2Uoc3RyZWFtLm5vZGUsIG9mZnNldCArIGxlbmd0aCk7CiAgICAgICAgc3RyZWFtLm5vZGUudXNlZEJ5dGVzID0gTWF0aC5tYXgoc3RyZWFtLm5vZGUudXNlZEJ5dGVzLCBvZmZzZXQgKyBsZW5ndGgpOwogICAgICB9LAogICAgICBtbWFwKHN0cmVhbSwgbGVuZ3RoLCBwb3NpdGlvbiwgcHJvdCwgZmxhZ3MpIHsKICAgICAgICBpZiAoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpOwogICAgICAgIH0KICAgICAgICBsZXQgcHRyOwogICAgICAgIGxldCBhbGxvY2F0ZWQ7CiAgICAgICAgbGV0IGNvbnRlbnRzID0gc3RyZWFtLm5vZGUuY29udGVudHM7CiAgICAgICAgaWYgKCEoZmxhZ3MgJiAyKSAmJiBjb250ZW50cy5idWZmZXIgPT09IGJ1ZmZlcikgewogICAgICAgICAgYWxsb2NhdGVkID0gZmFsc2U7CiAgICAgICAgICBwdHIgPSBjb250ZW50cy5ieXRlT2Zmc2V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAocG9zaXRpb24gPiAwIHx8IHBvc2l0aW9uICsgbGVuZ3RoIDwgY29udGVudHMubGVuZ3RoKSB7CiAgICAgICAgICAgIGlmIChjb250ZW50cy5zdWJhcnJheSkgewogICAgICAgICAgICAgIGNvbnRlbnRzID0gY29udGVudHMuc3ViYXJyYXkocG9zaXRpb24sIHBvc2l0aW9uICsgbGVuZ3RoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBjb250ZW50cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNvbnRlbnRzLCBwb3NpdGlvbiwgcG9zaXRpb24gKyBsZW5ndGgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBhbGxvY2F0ZWQgPSB0cnVlOwogICAgICAgICAgcHRyID0gbW1hcEFsbG9jKGxlbmd0aCk7CiAgICAgICAgICBpZiAoIXB0cikgewogICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0OCk7CiAgICAgICAgICB9CiAgICAgICAgICBIRUFQOC5zZXQoY29udGVudHMsIHB0cik7CiAgICAgICAgfQogICAgICAgIHJldHVybiB7IHB0ciwgYWxsb2NhdGVkIH07CiAgICAgIH0sCiAgICAgIG1zeW5jKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgbW1hcEZsYWdzKSB7CiAgICAgICAgTUVNRlMuc3RyZWFtX29wcy53cml0ZShzdHJlYW0sIGJ1ZmZlciwgMCwgbGVuZ3RoLCBvZmZzZXQsIGZhbHNlKTsKICAgICAgICByZXR1cm4gMDsKICAgICAgfSwKICAgIH0sCiAgfTsKICBmdW5jdGlvbiBhc3luY0xvYWQodXJsLCBvbmxvYWQsIG9uZXJyb3IsIG5vUnVuRGVwKSB7CiAgICBsZXQgZGVwID0gIW5vUnVuRGVwID8gZ2V0VW5pcXVlUnVuRGVwZW5kZW5jeSgiYWwgIiArIHVybCkgOiAiIjsKICAgIHJlYWRBc3luYygKICAgICAgdXJsLAogICAgICAoYXJyYXlCdWZmZXIpID0+IHsKICAgICAgICBhc3NlcnQoYXJyYXlCdWZmZXIsICdMb2FkaW5nIGRhdGEgZmlsZSAiJyArIHVybCArICciIGZhaWxlZCAobm8gYXJyYXlCdWZmZXIpLicpOwogICAgICAgIG9ubG9hZChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpOwogICAgICAgIGlmIChkZXApIHJlbW92ZVJ1bkRlcGVuZGVuY3koZGVwKTsKICAgICAgfSwKICAgICAgKGV2ZW50KSA9PiB7CiAgICAgICAgaWYgKG9uZXJyb3IpIHsKICAgICAgICAgIG9uZXJyb3IoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgJ0xvYWRpbmcgZGF0YSBmaWxlICInICsgdXJsICsgJyIgZmFpbGVkLic7CiAgICAgICAgfQogICAgICB9LAogICAgKTsKICAgIGlmIChkZXApIGFkZFJ1bkRlcGVuZGVuY3koZGVwKTsKICB9CiAgdmFyIEZTID0gewogICAgcm9vdDogbnVsbCwKICAgIG1vdW50czogW10sCiAgICBkZXZpY2VzOiB7fSwKICAgIHN0cmVhbXM6IFtdLAogICAgbmV4dElub2RlOiAxLAogICAgbmFtZVRhYmxlOiBudWxsLAogICAgY3VycmVudFBhdGg6ICIvIiwKICAgIGluaXRpYWxpemVkOiBmYWxzZSwKICAgIGlnbm9yZVBlcm1pc3Npb25zOiB0cnVlLAogICAgRXJybm9FcnJvcjogbnVsbCwKICAgIGdlbmVyaWNFcnJvcnM6IHt9LAogICAgZmlsZXN5c3RlbXM6IG51bGwsCiAgICBzeW5jRlNSZXF1ZXN0czogMCwKICAgIGxvb2t1cFBhdGg6IChwYXRoLCBvcHRzID0ge30pID0+IHsKICAgICAgcGF0aCA9IFBBVEhfRlMucmVzb2x2ZShGUy5jd2QoKSwgcGF0aCk7CiAgICAgIGlmICghcGF0aCkgcmV0dXJuIHsgcGF0aDogIiIsIG5vZGU6IG51bGwgfTsKICAgICAgbGV0IGRlZmF1bHRzID0geyBmb2xsb3dfbW91bnQ6IHRydWUsIHJlY3Vyc2VfY291bnQ6IDAgfTsKICAgICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIG9wdHMpOwogICAgICBpZiAob3B0cy5yZWN1cnNlX2NvdW50ID4gOCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMyKTsKICAgICAgfQogICAgICBsZXQgcGFydHMgPSBQQVRILm5vcm1hbGl6ZUFycmF5KAogICAgICAgIHBhdGguc3BsaXQoIi8iKS5maWx0ZXIoKHApID0+ICEhcCksCiAgICAgICAgZmFsc2UsCiAgICAgICk7CiAgICAgIGxldCBjdXJyZW50ID0gRlMucm9vdDsKICAgICAgbGV0IGN1cnJlbnRfcGF0aCA9ICIvIjsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgICAgIGxldCBpc2xhc3QgPSBpID09PSBwYXJ0cy5sZW5ndGggLSAxOwogICAgICAgIGlmIChpc2xhc3QgJiYgb3B0cy5wYXJlbnQpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjdXJyZW50ID0gRlMubG9va3VwTm9kZShjdXJyZW50LCBwYXJ0c1tpXSk7CiAgICAgICAgY3VycmVudF9wYXRoID0gUEFUSC5qb2luMihjdXJyZW50X3BhdGgsIHBhcnRzW2ldKTsKICAgICAgICBpZiAoRlMuaXNNb3VudHBvaW50KGN1cnJlbnQpKSB7CiAgICAgICAgICBpZiAoIWlzbGFzdCB8fCAoaXNsYXN0ICYmIG9wdHMuZm9sbG93X21vdW50KSkgewogICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5tb3VudGVkLnJvb3Q7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghaXNsYXN0IHx8IG9wdHMuZm9sbG93KSB7CiAgICAgICAgICBsZXQgY291bnQgPSAwOwogICAgICAgICAgd2hpbGUgKEZTLmlzTGluayhjdXJyZW50Lm1vZGUpKSB7CiAgICAgICAgICAgIGxldCBsaW5rID0gRlMucmVhZGxpbmsoY3VycmVudF9wYXRoKTsKICAgICAgICAgICAgY3VycmVudF9wYXRoID0gUEFUSF9GUy5yZXNvbHZlKFBBVEguZGlybmFtZShjdXJyZW50X3BhdGgpLCBsaW5rKTsKICAgICAgICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgoY3VycmVudF9wYXRoLCB7IHJlY3Vyc2VfY291bnQ6IG9wdHMucmVjdXJzZV9jb3VudCArIDEgfSk7CiAgICAgICAgICAgIGN1cnJlbnQgPSBsb29rdXAubm9kZTsKICAgICAgICAgICAgaWYgKGNvdW50KysgPiA0MCkgewogICAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4geyBwYXRoOiBjdXJyZW50X3BhdGgsIG5vZGU6IGN1cnJlbnQgfTsKICAgIH0sCiAgICBnZXRQYXRoOiAobm9kZSkgPT4gewogICAgICBsZXQgcGF0aDsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoRlMuaXNSb290KG5vZGUpKSB7CiAgICAgICAgICBsZXQgbW91bnQgPSBub2RlLm1vdW50Lm1vdW50cG9pbnQ7CiAgICAgICAgICBpZiAoIXBhdGgpIHJldHVybiBtb3VudDsKICAgICAgICAgIHJldHVybiBtb3VudFttb3VudC5sZW5ndGggLSAxXSAhPT0gIi8iID8gbW91bnQgKyAiLyIgKyBwYXRoIDogbW91bnQgKyBwYXRoOwogICAgICAgIH0KICAgICAgICBwYXRoID0gcGF0aCA/IG5vZGUubmFtZSArICIvIiArIHBhdGggOiBub2RlLm5hbWU7CiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50OwogICAgICB9CiAgICB9LAogICAgaGFzaE5hbWU6IChwYXJlbnRpZCwgbmFtZSkgPT4gewogICAgICBsZXQgaGFzaCA9IDA7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykgewogICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoICsgbmFtZS5jaGFyQ29kZUF0KGkpKSB8IDA7CiAgICAgIH0KICAgICAgcmV0dXJuICgocGFyZW50aWQgKyBoYXNoKSA+Pj4gMCkgJSBGUy5uYW1lVGFibGUubGVuZ3RoOwogICAgfSwKICAgIGhhc2hBZGROb2RlOiAobm9kZSkgPT4gewogICAgICBsZXQgaGFzaCA9IEZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLCBub2RlLm5hbWUpOwogICAgICBub2RlLm5hbWVfbmV4dCA9IEZTLm5hbWVUYWJsZVtoYXNoXTsKICAgICAgRlMubmFtZVRhYmxlW2hhc2hdID0gbm9kZTsKICAgIH0sCiAgICBoYXNoUmVtb3ZlTm9kZTogKG5vZGUpID0+IHsKICAgICAgbGV0IGhhc2ggPSBGUy5oYXNoTmFtZShub2RlLnBhcmVudC5pZCwgbm9kZS5uYW1lKTsKICAgICAgaWYgKEZTLm5hbWVUYWJsZVtoYXNoXSA9PT0gbm9kZSkgewogICAgICAgIEZTLm5hbWVUYWJsZVtoYXNoXSA9IG5vZGUubmFtZV9uZXh0OwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBjdXJyZW50ID0gRlMubmFtZVRhYmxlW2hhc2hdOwogICAgICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAgICAgICBpZiAoY3VycmVudC5uYW1lX25leHQgPT09IG5vZGUpIHsKICAgICAgICAgICAgY3VycmVudC5uYW1lX25leHQgPSBub2RlLm5hbWVfbmV4dDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uYW1lX25leHQ7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgbG9va3VwTm9kZTogKHBhcmVudCwgbmFtZSkgPT4gewogICAgICBsZXQgZXJyQ29kZSA9IEZTLm1heUxvb2t1cChwYXJlbnQpOwogICAgICBpZiAoZXJyQ29kZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUsIHBhcmVudCk7CiAgICAgIH0KICAgICAgbGV0IGhhc2ggPSBGUy5oYXNoTmFtZShwYXJlbnQuaWQsIG5hbWUpOwogICAgICBmb3IgKGxldCBub2RlID0gRlMubmFtZVRhYmxlW2hhc2hdOyBub2RlOyBub2RlID0gbm9kZS5uYW1lX25leHQpIHsKICAgICAgICBsZXQgbm9kZU5hbWUgPSBub2RlLm5hbWU7CiAgICAgICAgaWYgKG5vZGUucGFyZW50LmlkID09PSBwYXJlbnQuaWQgJiYgbm9kZU5hbWUgPT09IG5hbWUpIHsKICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gRlMubG9va3VwKHBhcmVudCwgbmFtZSk7CiAgICB9LAogICAgY3JlYXRlTm9kZTogKHBhcmVudCwgbmFtZSwgbW9kZSwgcmRldikgPT4gewogICAgICBsZXQgbm9kZSA9IG5ldyBGUy5GU05vZGUocGFyZW50LCBuYW1lLCBtb2RlLCByZGV2KTsKICAgICAgRlMuaGFzaEFkZE5vZGUobm9kZSk7CiAgICAgIHJldHVybiBub2RlOwogICAgfSwKICAgIGRlc3Ryb3lOb2RlOiAobm9kZSkgPT4gewogICAgICBGUy5oYXNoUmVtb3ZlTm9kZShub2RlKTsKICAgIH0sCiAgICBpc1Jvb3Q6IChub2RlKSA9PiB7CiAgICAgIHJldHVybiBub2RlID09PSBub2RlLnBhcmVudDsKICAgIH0sCiAgICBpc01vdW50cG9pbnQ6IChub2RlKSA9PiB7CiAgICAgIHJldHVybiAhIW5vZGUubW91bnRlZDsKICAgIH0sCiAgICBpc0ZpbGU6IChtb2RlKSA9PiB7CiAgICAgIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMzI3Njg7CiAgICB9LAogICAgaXNEaXI6IChtb2RlKSA9PiB7CiAgICAgIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMTYzODQ7CiAgICB9LAogICAgaXNMaW5rOiAobW9kZSkgPT4gewogICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDQwOTYwOwogICAgfSwKICAgIGlzQ2hyZGV2OiAobW9kZSkgPT4gewogICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDgxOTI7CiAgICB9LAogICAgaXNCbGtkZXY6IChtb2RlKSA9PiB7CiAgICAgIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMjQ1NzY7CiAgICB9LAogICAgaXNGSUZPOiAobW9kZSkgPT4gewogICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDQwOTY7CiAgICB9LAogICAgaXNTb2NrZXQ6IChtb2RlKSA9PiB7CiAgICAgIHJldHVybiAobW9kZSAmIDQ5MTUyKSA9PT0gNDkxNTI7CiAgICB9LAogICAgZmxhZ01vZGVzOiB7IHI6IDAsICJyKyI6IDIsIHc6IDU3NywgIncrIjogNTc4LCBhOiAxMDg5LCAiYSsiOiAxMDkwIH0sCiAgICBtb2RlU3RyaW5nVG9GbGFnczogKHN0cikgPT4gewogICAgICBsZXQgZmxhZ3MgPSBGUy5mbGFnTW9kZXNbc3RyXTsKICAgICAgaWYgKHR5cGVvZiBmbGFncyA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIgKyBzdHIpOwogICAgICB9CiAgICAgIHJldHVybiBmbGFnczsKICAgIH0sCiAgICBmbGFnc1RvUGVybWlzc2lvblN0cmluZzogKGZsYWcpID0+IHsKICAgICAgbGV0IHBlcm1zID0gWyJyIiwgInciLCAicnciXVtmbGFnICYgM107CiAgICAgIGlmIChmbGFnICYgNTEyKSB7CiAgICAgICAgcGVybXMgKz0gInciOwogICAgICB9CiAgICAgIHJldHVybiBwZXJtczsKICAgIH0sCiAgICBub2RlUGVybWlzc2lvbnM6IChub2RlLCBwZXJtcykgPT4gewogICAgICBpZiAoRlMuaWdub3JlUGVybWlzc2lvbnMpIHsKICAgICAgICByZXR1cm4gMDsKICAgICAgfQogICAgICBpZiAocGVybXMuaW5jbHVkZXMoInIiKSAmJiAhKG5vZGUubW9kZSAmIDI5MikpIHsKICAgICAgICByZXR1cm4gMjsKICAgICAgfSBlbHNlIGlmIChwZXJtcy5pbmNsdWRlcygidyIpICYmICEobm9kZS5tb2RlICYgMTQ2KSkgewogICAgICAgIHJldHVybiAyOwogICAgICB9IGVsc2UgaWYgKHBlcm1zLmluY2x1ZGVzKCJ4IikgJiYgIShub2RlLm1vZGUgJiA3MykpIHsKICAgICAgICByZXR1cm4gMjsKICAgICAgfQogICAgICByZXR1cm4gMDsKICAgIH0sCiAgICBtYXlMb29rdXA6IChkaXIpID0+IHsKICAgICAgbGV0IGVyckNvZGUgPSBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCAieCIpOwogICAgICBpZiAoZXJyQ29kZSkgcmV0dXJuIGVyckNvZGU7CiAgICAgIGlmICghZGlyLm5vZGVfb3BzLmxvb2t1cCkgcmV0dXJuIDI7CiAgICAgIHJldHVybiAwOwogICAgfSwKICAgIG1heUNyZWF0ZTogKGRpciwgbmFtZSkgPT4gewogICAgICB0cnkgewogICAgICAgIGxldCBub2RlID0gRlMubG9va3VwTm9kZShkaXIsIG5hbWUpOwogICAgICAgIHJldHVybiAyMDsKICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgcmV0dXJuIEZTLm5vZGVQZXJtaXNzaW9ucyhkaXIsICJ3eCIpOwogICAgfSwKICAgIG1heURlbGV0ZTogKGRpciwgbmFtZSwgaXNkaXIpID0+IHsKICAgICAgbGV0IG5vZGU7CiAgICAgIHRyeSB7CiAgICAgICAgbm9kZSA9IEZTLmxvb2t1cE5vZGUoZGlyLCBuYW1lKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHJldHVybiBlLmVycm5vOwogICAgICB9CiAgICAgIGxldCBlcnJDb2RlID0gRlMubm9kZVBlcm1pc3Npb25zKGRpciwgInd4Iik7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgcmV0dXJuIGVyckNvZGU7CiAgICAgIH0KICAgICAgaWYgKGlzZGlyKSB7CiAgICAgICAgaWYgKCFGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgICAgICAgICByZXR1cm4gNTQ7CiAgICAgICAgfQogICAgICAgIGlmIChGUy5pc1Jvb3Qobm9kZSkgfHwgRlMuZ2V0UGF0aChub2RlKSA9PT0gRlMuY3dkKCkpIHsKICAgICAgICAgIHJldHVybiAxMDsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgICAgICAgIHJldHVybiAzMTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIDA7CiAgICB9LAogICAgbWF5T3BlbjogKG5vZGUsIGZsYWdzKSA9PiB7CiAgICAgIGlmICghbm9kZSkgewogICAgICAgIHJldHVybiA0NDsKICAgICAgfQogICAgICBpZiAoRlMuaXNMaW5rKG5vZGUubW9kZSkpIHsKICAgICAgICByZXR1cm4gMzI7CiAgICAgIH0gZWxzZSBpZiAoRlMuaXNEaXIobm9kZS5tb2RlKSkgewogICAgICAgIGlmIChGUy5mbGFnc1RvUGVybWlzc2lvblN0cmluZyhmbGFncykgIT09ICJyIiB8fCBmbGFncyAmIDUxMikgewogICAgICAgICAgcmV0dXJuIDMxOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsIEZTLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKGZsYWdzKSk7CiAgICB9LAogICAgTUFYX09QRU5fRkRTOiA0MDk2LAogICAgbmV4dGZkOiAoZmRfc3RhcnQgPSAwLCBmZF9lbmQgPSBGUy5NQVhfT1BFTl9GRFMpID0+IHsKICAgICAgZm9yIChsZXQgZmQgPSBmZF9zdGFydDsgZmQgPD0gZmRfZW5kOyBmZCsrKSB7CiAgICAgICAgaWYgKCFGUy5zdHJlYW1zW2ZkXSkgewogICAgICAgICAgcmV0dXJuIGZkOwogICAgICAgIH0KICAgICAgfQogICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigzMyk7CiAgICB9LAogICAgZ2V0U3RyZWFtOiAoZmQpID0+IEZTLnN0cmVhbXNbZmRdLAogICAgY3JlYXRlU3RyZWFtOiAoc3RyZWFtLCBmZF9zdGFydCwgZmRfZW5kKSA9PiB7CiAgICAgIGlmICghRlMuRlNTdHJlYW0pIHsKICAgICAgICBGUy5GU1N0cmVhbSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHRoaXMuc2hhcmVkID0ge307CiAgICAgICAgfTsKICAgICAgICBGUy5GU1N0cmVhbS5wcm90b3R5cGUgPSB7fTsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGUy5GU1N0cmVhbS5wcm90b3R5cGUsIHsKICAgICAgICAgIG9iamVjdDogewogICAgICAgICAgICBnZXQoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0KHZhbCkgewogICAgICAgICAgICAgIHRoaXMubm9kZSA9IHZhbDsKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgICBpc1JlYWQ6IHsKICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgIHJldHVybiAodGhpcy5mbGFncyAmIDIwOTcxNTUpICE9PSAxOwogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICAgIGlzV3JpdGU6IHsKICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgIHJldHVybiAodGhpcy5mbGFncyAmIDIwOTcxNTUpICE9PSAwOwogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICAgIGlzQXBwZW5kOiB7CiAgICAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbGFncyAmIDEwMjQ7CiAgICAgICAgICAgIH0sCiAgICAgICAgICB9LAogICAgICAgICAgZmxhZ3M6IHsKICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXJlZC5mbGFnczsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0KHZhbCkgewogICAgICAgICAgICAgIHRoaXMuc2hhcmVkLmZsYWdzID0gdmFsOwogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICAgIHBvc2l0aW9uOiB7CiAgICAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaGFyZWQucG9zaXRpb247CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldCh2YWwpIHsKICAgICAgICAgICAgICB0aGlzLnNoYXJlZC5wb3NpdGlvbiA9IHZhbDsKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgc3RyZWFtID0gT2JqZWN0LmFzc2lnbihuZXcgRlMuRlNTdHJlYW0oKSwgc3RyZWFtKTsKICAgICAgbGV0IGZkID0gRlMubmV4dGZkKGZkX3N0YXJ0LCBmZF9lbmQpOwogICAgICBzdHJlYW0uZmQgPSBmZDsKICAgICAgRlMuc3RyZWFtc1tmZF0gPSBzdHJlYW07CiAgICAgIHJldHVybiBzdHJlYW07CiAgICB9LAogICAgY2xvc2VTdHJlYW06IChmZCkgPT4gewogICAgICBGUy5zdHJlYW1zW2ZkXSA9IG51bGw7CiAgICB9LAogICAgY2hyZGV2X3N0cmVhbV9vcHM6IHsKICAgICAgb3BlbjogKHN0cmVhbSkgPT4gewogICAgICAgIGxldCBkZXZpY2UgPSBGUy5nZXREZXZpY2Uoc3RyZWFtLm5vZGUucmRldik7CiAgICAgICAgc3RyZWFtLnN0cmVhbV9vcHMgPSBkZXZpY2Uuc3RyZWFtX29wczsKICAgICAgICBpZiAoc3RyZWFtLnN0cmVhbV9vcHMub3BlbikgewogICAgICAgICAgc3RyZWFtLnN0cmVhbV9vcHMub3BlbihzdHJlYW0pOwogICAgICAgIH0KICAgICAgfSwKICAgICAgbGxzZWVrOiAoKSA9PiB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApOwogICAgICB9LAogICAgfSwKICAgIG1ham9yOiAoZGV2KSA9PiBkZXYgPj4gOCwKICAgIG1pbm9yOiAoZGV2KSA9PiBkZXYgJiAyNTUsCiAgICBtYWtlZGV2OiAobWEsIG1pKSA9PiAobWEgPDwgOCkgfCBtaSwKICAgIHJlZ2lzdGVyRGV2aWNlOiAoZGV2LCBvcHMpID0+IHsKICAgICAgRlMuZGV2aWNlc1tkZXZdID0geyBzdHJlYW1fb3BzOiBvcHMgfTsKICAgIH0sCiAgICBnZXREZXZpY2U6IChkZXYpID0+IEZTLmRldmljZXNbZGV2XSwKICAgIGdldE1vdW50czogKG1vdW50KSA9PiB7CiAgICAgIGxldCBtb3VudHMgPSBbXTsKICAgICAgbGV0IGNoZWNrID0gW21vdW50XTsKICAgICAgd2hpbGUgKGNoZWNrLmxlbmd0aCkgewogICAgICAgIGxldCBtID0gY2hlY2sucG9wKCk7CiAgICAgICAgbW91bnRzLnB1c2gobSk7CiAgICAgICAgY2hlY2sucHVzaC5hcHBseShjaGVjaywgbS5tb3VudHMpOwogICAgICB9CiAgICAgIHJldHVybiBtb3VudHM7CiAgICB9LAogICAgc3luY2ZzOiAocG9wdWxhdGUsIGNhbGxiYWNrKSA9PiB7CiAgICAgIGlmICh0eXBlb2YgcG9wdWxhdGUgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICBjYWxsYmFjayA9IHBvcHVsYXRlOwogICAgICAgIHBvcHVsYXRlID0gZmFsc2U7CiAgICAgIH0KICAgICAgRlMuc3luY0ZTUmVxdWVzdHMrKzsKICAgICAgaWYgKEZTLnN5bmNGU1JlcXVlc3RzID4gMSkgewogICAgICAgIGVycigKICAgICAgICAgICJ3YXJuaW5nOiAiICsKICAgICAgICAgICAgRlMuc3luY0ZTUmVxdWVzdHMgKwogICAgICAgICAgICAiIEZTLnN5bmNmcyBvcGVyYXRpb25zIGluIGZsaWdodCBhdCBvbmNlLCBwcm9iYWJseSBqdXN0IGRvaW5nIGV4dHJhIHdvcmsiLAogICAgICAgICk7CiAgICAgIH0KICAgICAgbGV0IG1vdW50cyA9IEZTLmdldE1vdW50cyhGUy5yb290Lm1vdW50KTsKICAgICAgbGV0IGNvbXBsZXRlZCA9IDA7CiAgICAgIGZ1bmN0aW9uIGRvQ2FsbGJhY2soZXJyQ29kZSkgewogICAgICAgIEZTLnN5bmNGU1JlcXVlc3RzLS07CiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyckNvZGUpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyQ29kZSkgewogICAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgICBpZiAoIWRvbmUuZXJyb3JlZCkgewogICAgICAgICAgICBkb25lLmVycm9yZWQgPSB0cnVlOwogICAgICAgICAgICByZXR1cm4gZG9DYWxsYmFjayhlcnJDb2RlKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCsrY29tcGxldGVkID49IG1vdW50cy5sZW5ndGgpIHsKICAgICAgICAgIGRvQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIG1vdW50cy5mb3JFYWNoKChtb3VudCkgPT4gewogICAgICAgIGlmICghbW91bnQudHlwZS5zeW5jZnMpIHsKICAgICAgICAgIHJldHVybiBkb25lKG51bGwpOwogICAgICAgIH0KICAgICAgICBtb3VudC50eXBlLnN5bmNmcyhtb3VudCwgcG9wdWxhdGUsIGRvbmUpOwogICAgICB9KTsKICAgIH0sCiAgICBtb3VudDogKHR5cGUsIG9wdHMsIG1vdW50cG9pbnQpID0+IHsKICAgICAgbGV0IHJvb3QgPSBtb3VudHBvaW50ID09PSAiLyI7CiAgICAgIGxldCBwc2V1ZG8gPSAhbW91bnRwb2ludDsKICAgICAgbGV0IG5vZGU7CiAgICAgIGlmIChyb290ICYmIEZTLnJvb3QpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCk7CiAgICAgIH0gZWxzZSBpZiAoIXJvb3QgJiYgIXBzZXVkbykgewogICAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKG1vdW50cG9pbnQsIHsgZm9sbG93X21vdW50OiBmYWxzZSB9KTsKICAgICAgICBtb3VudHBvaW50ID0gbG9va3VwLnBhdGg7CiAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICAgIGlmIChGUy5pc01vdW50cG9pbnQobm9kZSkpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDEwKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxldCBtb3VudCA9IHsgdHlwZSwgb3B0cywgbW91bnRwb2ludCwgbW91bnRzOiBbXSB9OwogICAgICBsZXQgbW91bnRSb290ID0gdHlwZS5tb3VudChtb3VudCk7CiAgICAgIG1vdW50Um9vdC5tb3VudCA9IG1vdW50OwogICAgICBtb3VudC5yb290ID0gbW91bnRSb290OwogICAgICBpZiAocm9vdCkgewogICAgICAgIEZTLnJvb3QgPSBtb3VudFJvb3Q7CiAgICAgIH0gZWxzZSBpZiAobm9kZSkgewogICAgICAgIG5vZGUubW91bnRlZCA9IG1vdW50OwogICAgICAgIGlmIChub2RlLm1vdW50KSB7CiAgICAgICAgICBub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG1vdW50Um9vdDsKICAgIH0sCiAgICB1bm1vdW50OiAobW91bnRwb2ludCkgPT4gewogICAgICBsZXQgbG9va3VwID0gRlMubG9va3VwUGF0aChtb3VudHBvaW50LCB7IGZvbGxvd19tb3VudDogZmFsc2UgfSk7CiAgICAgIGlmICghRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTsKICAgICAgfQogICAgICBsZXQgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICBsZXQgbW91bnQgPSBub2RlLm1vdW50ZWQ7CiAgICAgIGxldCBtb3VudHMgPSBGUy5nZXRNb3VudHMobW91bnQpOwogICAgICBPYmplY3Qua2V5cyhGUy5uYW1lVGFibGUpLmZvckVhY2goKGhhc2gpID0+IHsKICAgICAgICBsZXQgY3VycmVudCA9IEZTLm5hbWVUYWJsZVtoYXNoXTsKICAgICAgICB3aGlsZSAoY3VycmVudCkgewogICAgICAgICAgbGV0IG5leHQgPSBjdXJyZW50Lm5hbWVfbmV4dDsKICAgICAgICAgIGlmIChtb3VudHMuaW5jbHVkZXMoY3VycmVudC5tb3VudCkpIHsKICAgICAgICAgICAgRlMuZGVzdHJveU5vZGUoY3VycmVudCk7CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50ID0gbmV4dDsKICAgICAgICB9CiAgICAgIH0pOwogICAgICBub2RlLm1vdW50ZWQgPSBudWxsOwogICAgICBsZXQgaWR4ID0gbm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3VudCk7CiAgICAgIG5vZGUubW91bnQubW91bnRzLnNwbGljZShpZHgsIDEpOwogICAgfSwKICAgIGxvb2t1cDogKHBhcmVudCwgbmFtZSkgPT4gewogICAgICByZXR1cm4gcGFyZW50Lm5vZGVfb3BzLmxvb2t1cChwYXJlbnQsIG5hbWUpOwogICAgfSwKICAgIG1rbm9kOiAocGF0aCwgbW9kZSwgZGV2KSA9PiB7CiAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgcGFyZW50OiB0cnVlIH0pOwogICAgICBsZXQgcGFyZW50ID0gbG9va3VwLm5vZGU7CiAgICAgIGxldCBuYW1lID0gUEFUSC5iYXNlbmFtZShwYXRoKTsKICAgICAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICIuIiB8fCBuYW1lID09PSAiLi4iKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGxldCBlcnJDb2RlID0gRlMubWF5Q3JlYXRlKHBhcmVudCwgbmFtZSk7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgaWYgKCFwYXJlbnQubm9kZV9vcHMubWtub2QpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7CiAgICAgIH0KICAgICAgcmV0dXJuIHBhcmVudC5ub2RlX29wcy5ta25vZChwYXJlbnQsIG5hbWUsIG1vZGUsIGRldik7CiAgICB9LAogICAgY3JlYXRlOiAocGF0aCwgbW9kZSkgPT4gewogICAgICBtb2RlID0gbW9kZSAhPT0gdW5kZWZpbmVkID8gbW9kZSA6IDQzODsKICAgICAgbW9kZSAmPSA0MDk1OwogICAgICBtb2RlIHw9IDMyNzY4OwogICAgICByZXR1cm4gRlMubWtub2QocGF0aCwgbW9kZSwgMCk7CiAgICB9LAogICAgbWtkaXI6IChwYXRoLCBtb2RlKSA9PiB7CiAgICAgIG1vZGUgPSBtb2RlICE9PSB1bmRlZmluZWQgPyBtb2RlIDogNTExOwogICAgICBtb2RlICY9IDUxMSB8IDUxMjsKICAgICAgbW9kZSB8PSAxNjM4NDsKICAgICAgcmV0dXJuIEZTLm1rbm9kKHBhdGgsIG1vZGUsIDApOwogICAgfSwKICAgIG1rZGlyVHJlZTogKHBhdGgsIG1vZGUpID0+IHsKICAgICAgbGV0IGRpcnMgPSBwYXRoLnNwbGl0KCIvIik7CiAgICAgIGxldCBkID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlycy5sZW5ndGg7ICsraSkgewogICAgICAgIGlmICghZGlyc1tpXSkgY29udGludWU7CiAgICAgICAgZCArPSAiLyIgKyBkaXJzW2ldOwogICAgICAgIHRyeSB7CiAgICAgICAgICBGUy5ta2RpcihkLCBtb2RlKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBpZiAoZS5lcnJubyAhPSAyMCkgdGhyb3cgZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBta2RldjogKHBhdGgsIG1vZGUsIGRldikgPT4gewogICAgICBpZiAodHlwZW9mIGRldiA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICBkZXYgPSBtb2RlOwogICAgICAgIG1vZGUgPSA0Mzg7CiAgICAgIH0KICAgICAgbW9kZSB8PSA4MTkyOwogICAgICByZXR1cm4gRlMubWtub2QocGF0aCwgbW9kZSwgZGV2KTsKICAgIH0sCiAgICBzeW1saW5rOiAob2xkcGF0aCwgbmV3cGF0aCkgPT4gewogICAgICBpZiAoIVBBVEhfRlMucmVzb2x2ZShvbGRwYXRoKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBsZXQgbG9va3VwID0gRlMubG9va3VwUGF0aChuZXdwYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTsKICAgICAgbGV0IHBhcmVudCA9IGxvb2t1cC5ub2RlOwogICAgICBpZiAoIXBhcmVudCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBsZXQgbmV3bmFtZSA9IFBBVEguYmFzZW5hbWUobmV3cGF0aCk7CiAgICAgIGxldCBlcnJDb2RlID0gRlMubWF5Q3JlYXRlKHBhcmVudCwgbmV3bmFtZSk7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgaWYgKCFwYXJlbnQubm9kZV9vcHMuc3ltbGluaykgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKTsKICAgICAgfQogICAgICByZXR1cm4gcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmsocGFyZW50LCBuZXduYW1lLCBvbGRwYXRoKTsKICAgIH0sCiAgICByZW5hbWU6IChvbGRfcGF0aCwgbmV3X3BhdGgpID0+IHsKICAgICAgbGV0IG9sZF9kaXJuYW1lID0gUEFUSC5kaXJuYW1lKG9sZF9wYXRoKTsKICAgICAgbGV0IG5ld19kaXJuYW1lID0gUEFUSC5kaXJuYW1lKG5ld19wYXRoKTsKICAgICAgbGV0IG9sZF9uYW1lID0gUEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7CiAgICAgIGxldCBuZXdfbmFtZSA9IFBBVEguYmFzZW5hbWUobmV3X3BhdGgpOwogICAgICBsZXQgbG9va3VwLCBvbGRfZGlyLCBuZXdfZGlyOwogICAgICBsb29rdXAgPSBGUy5sb29rdXBQYXRoKG9sZF9wYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTsKICAgICAgb2xkX2RpciA9IGxvb2t1cC5ub2RlOwogICAgICBsb29rdXAgPSBGUy5sb29rdXBQYXRoKG5ld19wYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTsKICAgICAgbmV3X2RpciA9IGxvb2t1cC5ub2RlOwogICAgICBpZiAoIW9sZF9kaXIgfHwgIW5ld19kaXIpIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgaWYgKG9sZF9kaXIubW91bnQgIT09IG5ld19kaXIubW91bnQpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig3NSk7CiAgICAgIH0KICAgICAgbGV0IG9sZF9ub2RlID0gRlMubG9va3VwTm9kZShvbGRfZGlyLCBvbGRfbmFtZSk7CiAgICAgIGxldCByZWxhdGl2ZSA9IFBBVEhfRlMucmVsYXRpdmUob2xkX3BhdGgsIG5ld19kaXJuYW1lKTsKICAgICAgaWYgKHJlbGF0aXZlLmNoYXJBdCgwKSAhPT0gIi4iKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIHJlbGF0aXZlID0gUEFUSF9GUy5yZWxhdGl2ZShuZXdfcGF0aCwgb2xkX2Rpcm5hbWUpOwogICAgICBpZiAocmVsYXRpdmUuY2hhckF0KDApICE9PSAiLiIpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NSk7CiAgICAgIH0KICAgICAgbGV0IG5ld19ub2RlOwogICAgICB0cnkgewogICAgICAgIG5ld19ub2RlID0gRlMubG9va3VwTm9kZShuZXdfZGlyLCBuZXdfbmFtZSk7CiAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgIGlmIChvbGRfbm9kZSA9PT0gbmV3X25vZGUpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgbGV0IGlzZGlyID0gRlMuaXNEaXIob2xkX25vZGUubW9kZSk7CiAgICAgIGxldCBlcnJDb2RlID0gRlMubWF5RGVsZXRlKG9sZF9kaXIsIG9sZF9uYW1lLCBpc2Rpcik7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgZXJyQ29kZSA9IG5ld19ub2RlID8gRlMubWF5RGVsZXRlKG5ld19kaXIsIG5ld19uYW1lLCBpc2RpcikgOiBGUy5tYXlDcmVhdGUobmV3X2RpciwgbmV3X25hbWUpOwogICAgICBpZiAoZXJyQ29kZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpOwogICAgICB9CiAgICAgIGlmICghb2xkX2Rpci5ub2RlX29wcy5yZW5hbWUpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7CiAgICAgIH0KICAgICAgaWYgKEZTLmlzTW91bnRwb2ludChvbGRfbm9kZSkgfHwgKG5ld19ub2RlICYmIEZTLmlzTW91bnRwb2ludChuZXdfbm9kZSkpKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApOwogICAgICB9CiAgICAgIGlmIChuZXdfZGlyICE9PSBvbGRfZGlyKSB7CiAgICAgICAgZXJyQ29kZSA9IEZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCAidyIpOwogICAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgRlMuaGFzaFJlbW92ZU5vZGUob2xkX25vZGUpOwogICAgICB0cnkgewogICAgICAgIG9sZF9kaXIubm9kZV9vcHMucmVuYW1lKG9sZF9ub2RlLCBuZXdfZGlyLCBuZXdfbmFtZSk7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICB0aHJvdyBlOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIEZTLmhhc2hBZGROb2RlKG9sZF9ub2RlKTsKICAgICAgfQogICAgfSwKICAgIHJtZGlyOiAocGF0aCkgPT4gewogICAgICBsZXQgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTsKICAgICAgbGV0IHBhcmVudCA9IGxvb2t1cC5ub2RlOwogICAgICBsZXQgbmFtZSA9IFBBVEguYmFzZW5hbWUocGF0aCk7CiAgICAgIGxldCBub2RlID0gRlMubG9va3VwTm9kZShwYXJlbnQsIG5hbWUpOwogICAgICBsZXQgZXJyQ29kZSA9IEZTLm1heURlbGV0ZShwYXJlbnQsIG5hbWUsIHRydWUpOwogICAgICBpZiAoZXJyQ29kZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpOwogICAgICB9CiAgICAgIGlmICghcGFyZW50Lm5vZGVfb3BzLnJtZGlyKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpOwogICAgICB9CiAgICAgIGlmIChGUy5pc01vdW50cG9pbnQobm9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCk7CiAgICAgIH0KICAgICAgcGFyZW50Lm5vZGVfb3BzLnJtZGlyKHBhcmVudCwgbmFtZSk7CiAgICAgIEZTLmRlc3Ryb3lOb2RlKG5vZGUpOwogICAgfSwKICAgIHJlYWRkaXI6IChwYXRoKSA9PiB7CiAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pOwogICAgICBsZXQgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICBpZiAoIW5vZGUubm9kZV9vcHMucmVhZGRpcikgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDU0KTsKICAgICAgfQogICAgICByZXR1cm4gbm9kZS5ub2RlX29wcy5yZWFkZGlyKG5vZGUpOwogICAgfSwKICAgIHVubGluazogKHBhdGgpID0+IHsKICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBwYXJlbnQ6IHRydWUgfSk7CiAgICAgIGxldCBwYXJlbnQgPSBsb29rdXAubm9kZTsKICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCk7CiAgICAgIH0KICAgICAgbGV0IG5hbWUgPSBQQVRILmJhc2VuYW1lKHBhdGgpOwogICAgICBsZXQgbm9kZSA9IEZTLmxvb2t1cE5vZGUocGFyZW50LCBuYW1lKTsKICAgICAgbGV0IGVyckNvZGUgPSBGUy5tYXlEZWxldGUocGFyZW50LCBuYW1lLCBmYWxzZSk7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgaWYgKCFwYXJlbnQubm9kZV9vcHMudW5saW5rKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpOwogICAgICB9CiAgICAgIGlmIChGUy5pc01vdW50cG9pbnQobm9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCk7CiAgICAgIH0KICAgICAgcGFyZW50Lm5vZGVfb3BzLnVubGluayhwYXJlbnQsIG5hbWUpOwogICAgICBGUy5kZXN0cm95Tm9kZShub2RlKTsKICAgIH0sCiAgICByZWFkbGluazogKHBhdGgpID0+IHsKICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCk7CiAgICAgIGxldCBsaW5rID0gbG9va3VwLm5vZGU7CiAgICAgIGlmICghbGluaykgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBpZiAoIWxpbmsubm9kZV9vcHMucmVhZGxpbmspIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7CiAgICAgIH0KICAgICAgcmV0dXJuIFBBVEhfRlMucmVzb2x2ZShGUy5nZXRQYXRoKGxpbmsucGFyZW50KSwgbGluay5ub2RlX29wcy5yZWFkbGluayhsaW5rKSk7CiAgICB9LAogICAgc3RhdDogKHBhdGgsIGRvbnRGb2xsb3cpID0+IHsKICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICFkb250Rm9sbG93IH0pOwogICAgICBsZXQgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICBpZiAoIW5vZGUpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCk7CiAgICAgIH0KICAgICAgaWYgKCFub2RlLm5vZGVfb3BzLmdldGF0dHIpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKTsKICAgIH0sCiAgICBsc3RhdDogKHBhdGgpID0+IHsKICAgICAgcmV0dXJuIEZTLnN0YXQocGF0aCwgdHJ1ZSk7CiAgICB9LAogICAgY2htb2Q6IChwYXRoLCBtb2RlLCBkb250Rm9sbG93KSA9PiB7CiAgICAgIGxldCBub2RlOwogICAgICBpZiAodHlwZW9mIHBhdGggPT09ICJzdHJpbmciKSB7CiAgICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICFkb250Rm9sbG93IH0pOwogICAgICAgIG5vZGUgPSBsb29rdXAubm9kZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBub2RlID0gcGF0aDsKICAgICAgfQogICAgICBpZiAoIW5vZGUubm9kZV9vcHMuc2V0YXR0cikgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKTsKICAgICAgfQogICAgICBub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSwgewogICAgICAgIG1vZGU6IChtb2RlICYgNDA5NSkgfCAobm9kZS5tb2RlICYgfjQwOTUpLAogICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSwKICAgICAgfSk7CiAgICB9LAogICAgbGNobW9kOiAocGF0aCwgbW9kZSkgPT4gewogICAgICBGUy5jaG1vZChwYXRoLCBtb2RlLCB0cnVlKTsKICAgIH0sCiAgICBmY2htb2Q6IChmZCwgbW9kZSkgPT4gewogICAgICBsZXQgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICAgICAgaWYgKCFzdHJlYW0pIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTsKICAgICAgfQogICAgICBGUy5jaG1vZChzdHJlYW0ubm9kZSwgbW9kZSk7CiAgICB9LAogICAgY2hvd246IChwYXRoLCB1aWQsIGdpZCwgZG9udEZvbGxvdykgPT4gewogICAgICBsZXQgbm9kZTsKICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAic3RyaW5nIikgewogICAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiAhZG9udEZvbGxvdyB9KTsKICAgICAgICBub2RlID0gbG9va3VwLm5vZGU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbm9kZSA9IHBhdGg7CiAgICAgIH0KICAgICAgaWYgKCFub2RlLm5vZGVfb3BzLnNldGF0dHIpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7CiAgICAgIH0KICAgICAgbm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUsIHsgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0pOwogICAgfSwKICAgIGxjaG93bjogKHBhdGgsIHVpZCwgZ2lkKSA9PiB7CiAgICAgIEZTLmNob3duKHBhdGgsIHVpZCwgZ2lkLCB0cnVlKTsKICAgIH0sCiAgICBmY2hvd246IChmZCwgdWlkLCBnaWQpID0+IHsKICAgICAgbGV0IHN0cmVhbSA9IEZTLmdldFN0cmVhbShmZCk7CiAgICAgIGlmICghc3RyZWFtKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7CiAgICAgIH0KICAgICAgRlMuY2hvd24oc3RyZWFtLm5vZGUsIHVpZCwgZ2lkKTsKICAgIH0sCiAgICB0cnVuY2F0ZTogKHBhdGgsIGxlbikgPT4gewogICAgICBpZiAobGVuIDwgMCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTsKICAgICAgfQogICAgICBsZXQgbm9kZTsKICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAic3RyaW5nIikgewogICAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pOwogICAgICAgIG5vZGUgPSBsb29rdXAubm9kZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBub2RlID0gcGF0aDsKICAgICAgfQogICAgICBpZiAoIW5vZGUubm9kZV9vcHMuc2V0YXR0cikgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKTsKICAgICAgfQogICAgICBpZiAoRlMuaXNEaXIobm9kZS5tb2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMxKTsKICAgICAgfQogICAgICBpZiAoIUZTLmlzRmlsZShub2RlLm1vZGUpKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGxldCBlcnJDb2RlID0gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsICJ3Iik7CiAgICAgIGlmIChlcnJDb2RlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgIH0KICAgICAgbm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUsIHsgc2l6ZTogbGVuLCB0aW1lc3RhbXA6IERhdGUubm93KCkgfSk7CiAgICB9LAogICAgZnRydW5jYXRlOiAoZmQsIGxlbikgPT4gewogICAgICBsZXQgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICAgICAgaWYgKCFzdHJlYW0pIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTsKICAgICAgfQogICAgICBpZiAoKHN0cmVhbS5mbGFncyAmIDIwOTcxNTUpID09PSAwKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIEZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLCBsZW4pOwogICAgfSwKICAgIHV0aW1lOiAocGF0aCwgYXRpbWUsIG10aW1lKSA9PiB7CiAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pOwogICAgICBsZXQgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICBub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSwgeyB0aW1lc3RhbXA6IE1hdGgubWF4KGF0aW1lLCBtdGltZSkgfSk7CiAgICB9LAogICAgb3BlbjogKHBhdGgsIGZsYWdzLCBtb2RlKSA9PiB7CiAgICAgIGlmIChwYXRoID09PSAiIikgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBmbGFncyA9IHR5cGVvZiBmbGFncyA9PT0gInN0cmluZyIgPyBGUy5tb2RlU3RyaW5nVG9GbGFncyhmbGFncykgOiBmbGFnczsKICAgICAgbW9kZSA9IHR5cGVvZiBtb2RlID09PSAidW5kZWZpbmVkIiA/IDQzOCA6IG1vZGU7CiAgICAgIGlmIChmbGFncyAmIDY0KSB7CiAgICAgICAgbW9kZSA9IChtb2RlICYgNDA5NSkgfCAzMjc2ODsKICAgICAgfSBlbHNlIHsKICAgICAgICBtb2RlID0gMDsKICAgICAgfQogICAgICBsZXQgbm9kZTsKICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAib2JqZWN0IikgewogICAgICAgIG5vZGUgPSBwYXRoOwogICAgICB9IGVsc2UgewogICAgICAgIHBhdGggPSBQQVRILm5vcm1hbGl6ZShwYXRoKTsKICAgICAgICB0cnkgewogICAgICAgICAgbGV0IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICEoZmxhZ3MgJiAxMzEwNzIpIH0pOwogICAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlOwogICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgIH0KICAgICAgbGV0IGNyZWF0ZWQgPSBmYWxzZTsKICAgICAgaWYgKGZsYWdzICYgNjQpIHsKICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgaWYgKGZsYWdzICYgMTI4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDIwKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9kZSA9IEZTLm1rbm9kKHBhdGgsIG1vZGUsIDApOwogICAgICAgICAgY3JlYXRlZCA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghbm9kZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTsKICAgICAgfQogICAgICBpZiAoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSkgewogICAgICAgIGZsYWdzICY9IH41MTI7CiAgICAgIH0KICAgICAgaWYgKGZsYWdzICYgNjU1MzYgJiYgIUZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCk7CiAgICAgIH0KICAgICAgaWYgKCFjcmVhdGVkKSB7CiAgICAgICAgbGV0IGVyckNvZGUgPSBGUy5tYXlPcGVuKG5vZGUsIGZsYWdzKTsKICAgICAgICBpZiAoZXJyQ29kZSkgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChmbGFncyAmIDUxMiAmJiAhY3JlYXRlZCkgewogICAgICAgIEZTLnRydW5jYXRlKG5vZGUsIDApOwogICAgICB9CiAgICAgIGZsYWdzICY9IH4oMTI4IHwgNTEyIHwgMTMxMDcyKTsKICAgICAgbGV0IHN0cmVhbSA9IEZTLmNyZWF0ZVN0cmVhbSh7CiAgICAgICAgbm9kZSwKICAgICAgICBwYXRoOiBGUy5nZXRQYXRoKG5vZGUpLAogICAgICAgIGZsYWdzLAogICAgICAgIHNlZWthYmxlOiB0cnVlLAogICAgICAgIHBvc2l0aW9uOiAwLAogICAgICAgIHN0cmVhbV9vcHM6IG5vZGUuc3RyZWFtX29wcywKICAgICAgICB1bmdvdHRlbjogW10sCiAgICAgICAgZXJyb3I6IGZhbHNlLAogICAgICB9KTsKICAgICAgaWYgKHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4pIHsKICAgICAgICBzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSk7CiAgICAgIH0KICAgICAgaWYgKE1vZHVsZVsibG9nUmVhZEZpbGVzIl0gJiYgIShmbGFncyAmIDEpKSB7CiAgICAgICAgaWYgKCFGUy5yZWFkRmlsZXMpIEZTLnJlYWRGaWxlcyA9IHt9OwogICAgICAgIGlmICghKHBhdGggaW4gRlMucmVhZEZpbGVzKSkgewogICAgICAgICAgRlMucmVhZEZpbGVzW3BhdGhdID0gMTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHN0cmVhbTsKICAgIH0sCiAgICBjbG9zZTogKHN0cmVhbSkgPT4gewogICAgICBpZiAoRlMuaXNDbG9zZWQoc3RyZWFtKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmIChzdHJlYW0uZ2V0ZGVudHMpIHN0cmVhbS5nZXRkZW50cyA9IG51bGw7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKHN0cmVhbS5zdHJlYW1fb3BzLmNsb3NlKSB7CiAgICAgICAgICBzdHJlYW0uc3RyZWFtX29wcy5jbG9zZShzdHJlYW0pOwogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHRocm93IGU7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgRlMuY2xvc2VTdHJlYW0oc3RyZWFtLmZkKTsKICAgICAgfQogICAgICBzdHJlYW0uZmQgPSBudWxsOwogICAgfSwKICAgIGlzQ2xvc2VkOiAoc3RyZWFtKSA9PiB7CiAgICAgIHJldHVybiBzdHJlYW0uZmQgPT09IG51bGw7CiAgICB9LAogICAgbGxzZWVrOiAoc3RyZWFtLCBvZmZzZXQsIHdoZW5jZSkgPT4gewogICAgICBpZiAoRlMuaXNDbG9zZWQoc3RyZWFtKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmICghc3RyZWFtLnNlZWthYmxlIHx8ICFzdHJlYW0uc3RyZWFtX29wcy5sbHNlZWspIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig3MCk7CiAgICAgIH0KICAgICAgaWYgKHdoZW5jZSAhPSAwICYmIHdoZW5jZSAhPSAxICYmIHdoZW5jZSAhPSAyKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIHN0cmVhbS5wb3NpdGlvbiA9IHN0cmVhbS5zdHJlYW1fb3BzLmxsc2VlayhzdHJlYW0sIG9mZnNldCwgd2hlbmNlKTsKICAgICAgc3RyZWFtLnVuZ290dGVuID0gW107CiAgICAgIHJldHVybiBzdHJlYW0ucG9zaXRpb247CiAgICB9LAogICAgcmVhZDogKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pID0+IHsKICAgICAgaWYgKGxlbmd0aCA8IDAgfHwgcG9zaXRpb24gPCAwKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGlmIChGUy5pc0Nsb3NlZChzdHJlYW0pKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7CiAgICAgIH0KICAgICAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9PT0gMSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmIChGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMxKTsKICAgICAgfQogICAgICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLnJlYWQpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7CiAgICAgIH0KICAgICAgbGV0IHNlZWtpbmcgPSB0eXBlb2YgcG9zaXRpb24gIT09ICJ1bmRlZmluZWQiOwogICAgICBpZiAoIXNlZWtpbmcpIHsKICAgICAgICBwb3NpdGlvbiA9IHN0cmVhbS5wb3NpdGlvbjsKICAgICAgfSBlbHNlIGlmICghc3RyZWFtLnNlZWthYmxlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApOwogICAgICB9CiAgICAgIGxldCBieXRlc1JlYWQgPSBzdHJlYW0uc3RyZWFtX29wcy5yZWFkKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pOwogICAgICBpZiAoIXNlZWtpbmcpIHN0cmVhbS5wb3NpdGlvbiArPSBieXRlc1JlYWQ7CiAgICAgIHJldHVybiBieXRlc1JlYWQ7CiAgICB9LAogICAgd3JpdGU6IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCBjYW5Pd24pID0+IHsKICAgICAgaWYgKGxlbmd0aCA8IDAgfHwgcG9zaXRpb24gPCAwKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGlmIChGUy5pc0Nsb3NlZChzdHJlYW0pKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7CiAgICAgIH0KICAgICAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9PT0gMCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmIChGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMxKTsKICAgICAgfQogICAgICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGlmIChzdHJlYW0uc2Vla2FibGUgJiYgc3RyZWFtLmZsYWdzICYgMTAyNCkgewogICAgICAgIEZTLmxsc2VlayhzdHJlYW0sIDAsIDIpOwogICAgICB9CiAgICAgIGxldCBzZWVraW5nID0gdHlwZW9mIHBvc2l0aW9uICE9PSAidW5kZWZpbmVkIjsKICAgICAgaWYgKCFzZWVraW5nKSB7CiAgICAgICAgcG9zaXRpb24gPSBzdHJlYW0ucG9zaXRpb247CiAgICAgIH0gZWxzZSBpZiAoIXN0cmVhbS5zZWVrYWJsZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDcwKTsKICAgICAgfQogICAgICBsZXQgYnl0ZXNXcml0dGVuID0gc3RyZWFtLnN0cmVhbV9vcHMud3JpdGUoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FuT3duKTsKICAgICAgaWYgKCFzZWVraW5nKSBzdHJlYW0ucG9zaXRpb24gKz0gYnl0ZXNXcml0dGVuOwogICAgICByZXR1cm4gYnl0ZXNXcml0dGVuOwogICAgfSwKICAgIGFsbG9jYXRlOiAoc3RyZWFtLCBvZmZzZXQsIGxlbmd0aCkgPT4gewogICAgICBpZiAoRlMuaXNDbG9zZWQoc3RyZWFtKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpOwogICAgICB9CiAgICAgIGlmIChvZmZzZXQgPCAwIHx8IGxlbmd0aCA8PSAwKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpOwogICAgICB9CiAgICAgIGlmICgoc3RyZWFtLmZsYWdzICYgMjA5NzE1NSkgPT09IDApIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTsKICAgICAgfQogICAgICBpZiAoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSAmJiAhRlMuaXNEaXIoc3RyZWFtLm5vZGUubW9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myk7CiAgICAgIH0KICAgICAgaWYgKCFzdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDEzOCk7CiAgICAgIH0KICAgICAgc3RyZWFtLnN0cmVhbV9vcHMuYWxsb2NhdGUoc3RyZWFtLCBvZmZzZXQsIGxlbmd0aCk7CiAgICB9LAogICAgbW1hcDogKHN0cmVhbSwgbGVuZ3RoLCBwb3NpdGlvbiwgcHJvdCwgZmxhZ3MpID0+IHsKICAgICAgaWYgKChwcm90ICYgMikgIT09IDAgJiYgKGZsYWdzICYgMikgPT09IDAgJiYgKHN0cmVhbS5mbGFncyAmIDIwOTcxNTUpICE9PSAyKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMik7CiAgICAgIH0KICAgICAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9PT0gMSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDIpOwogICAgICB9CiAgICAgIGlmICghc3RyZWFtLnN0cmVhbV9vcHMubW1hcCkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQzKTsKICAgICAgfQogICAgICByZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubW1hcChzdHJlYW0sIGxlbmd0aCwgcG9zaXRpb24sIHByb3QsIGZsYWdzKTsKICAgIH0sCiAgICBtc3luYzogKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgbW1hcEZsYWdzKSA9PiB7CiAgICAgIGlmICghc3RyZWFtLnN0cmVhbV9vcHMubXN5bmMpIHsKICAgICAgICByZXR1cm4gMDsKICAgICAgfQogICAgICByZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubXN5bmMoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBtbWFwRmxhZ3MpOwogICAgfSwKICAgIG11bm1hcDogKHN0cmVhbSkgPT4gMCwKICAgIGlvY3RsOiAoc3RyZWFtLCBjbWQsIGFyZykgPT4gewogICAgICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKSB7CiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTkpOwogICAgICB9CiAgICAgIHJldHVybiBzdHJlYW0uc3RyZWFtX29wcy5pb2N0bChzdHJlYW0sIGNtZCwgYXJnKTsKICAgIH0sCiAgICByZWFkRmlsZTogKHBhdGgsIG9wdHMgPSB7fSkgPT4gewogICAgICBvcHRzLmZsYWdzID0gb3B0cy5mbGFncyB8fCAwOwogICAgICBvcHRzLmVuY29kaW5nID0gb3B0cy5lbmNvZGluZyB8fCAiYmluYXJ5IjsKICAgICAgaWYgKG9wdHMuZW5jb2RpbmcgIT09ICJ1dGY4IiAmJiBvcHRzLmVuY29kaW5nICE9PSAiYmluYXJ5IikgewogICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInICsgb3B0cy5lbmNvZGluZyArICciJyk7CiAgICAgIH0KICAgICAgbGV0IHJldDsKICAgICAgbGV0IHN0cmVhbSA9IEZTLm9wZW4ocGF0aCwgb3B0cy5mbGFncyk7CiAgICAgIGxldCBzdGF0ID0gRlMuc3RhdChwYXRoKTsKICAgICAgbGV0IGxlbmd0aCA9IHN0YXQuc2l6ZTsKICAgICAgbGV0IGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7CiAgICAgIEZTLnJlYWQoc3RyZWFtLCBidWYsIDAsIGxlbmd0aCwgMCk7CiAgICAgIGlmIChvcHRzLmVuY29kaW5nID09PSAidXRmOCIpIHsKICAgICAgICByZXQgPSBVVEY4QXJyYXlUb1N0cmluZyhidWYsIDApOwogICAgICB9IGVsc2UgaWYgKG9wdHMuZW5jb2RpbmcgPT09ICJiaW5hcnkiKSB7CiAgICAgICAgcmV0ID0gYnVmOwogICAgICB9CiAgICAgIEZTLmNsb3NlKHN0cmVhbSk7CiAgICAgIHJldHVybiByZXQ7CiAgICB9LAogICAgd3JpdGVGaWxlOiAocGF0aCwgZGF0YSwgb3B0cyA9IHt9KSA9PiB7CiAgICAgIG9wdHMuZmxhZ3MgPSBvcHRzLmZsYWdzIHx8IDU3NzsKICAgICAgbGV0IHN0cmVhbSA9IEZTLm9wZW4ocGF0aCwgb3B0cy5mbGFncywgb3B0cy5tb2RlKTsKICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAic3RyaW5nIikgewogICAgICAgIGxldCBidWYgPSBuZXcgVWludDhBcnJheShsZW5ndGhCeXRlc1VURjgoZGF0YSkgKyAxKTsKICAgICAgICBsZXQgYWN0dWFsTnVtQnl0ZXMgPSBzdHJpbmdUb1VURjhBcnJheShkYXRhLCBidWYsIDAsIGJ1Zi5sZW5ndGgpOwogICAgICAgIEZTLndyaXRlKHN0cmVhbSwgYnVmLCAwLCBhY3R1YWxOdW1CeXRlcywgdW5kZWZpbmVkLCBvcHRzLmNhbk93bik7CiAgICAgIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSB7CiAgICAgICAgRlMud3JpdGUoc3RyZWFtLCBkYXRhLCAwLCBkYXRhLmJ5dGVMZW5ndGgsIHVuZGVmaW5lZCwgb3B0cy5jYW5Pd24pOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7CiAgICAgIH0KICAgICAgRlMuY2xvc2Uoc3RyZWFtKTsKICAgIH0sCiAgICBjd2Q6ICgpID0+IEZTLmN1cnJlbnRQYXRoLAogICAgY2hkaXI6IChwYXRoKSA9PiB7CiAgICAgIGxldCBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pOwogICAgICBpZiAobG9va3VwLm5vZGUgPT09IG51bGwpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCk7CiAgICAgIH0KICAgICAgaWYgKCFGUy5pc0Rpcihsb29rdXAubm9kZS5tb2RlKSkgewogICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDU0KTsKICAgICAgfQogICAgICBsZXQgZXJyQ29kZSA9IEZTLm5vZGVQZXJtaXNzaW9ucyhsb29rdXAubm9kZSwgIngiKTsKICAgICAgaWYgKGVyckNvZGUpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKTsKICAgICAgfQogICAgICBGUy5jdXJyZW50UGF0aCA9IGxvb2t1cC5wYXRoOwogICAgfSwKICAgIGNyZWF0ZURlZmF1bHREaXJlY3RvcmllczogKCkgPT4gewogICAgICBGUy5ta2RpcigiL3RtcCIpOwogICAgICBGUy5ta2RpcigiL2hvbWUiKTsKICAgICAgRlMubWtkaXIoIi9ob21lL3dlYl91c2VyIik7CiAgICB9LAogICAgY3JlYXRlRGVmYXVsdERldmljZXM6ICgpID0+IHsKICAgICAgRlMubWtkaXIoIi9kZXYiKTsKICAgICAgRlMucmVnaXN0ZXJEZXZpY2UoRlMubWFrZWRldigxLCAzKSwgewogICAgICAgIHJlYWQ6ICgpID0+IDAsCiAgICAgICAgd3JpdGU6IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgPT4gbGVuZ3RoLAogICAgICB9KTsKICAgICAgRlMubWtkZXYoIi9kZXYvbnVsbCIsIEZTLm1ha2VkZXYoMSwgMykpOwogICAgICBUVFkucmVnaXN0ZXIoRlMubWFrZWRldig1LCAwKSwgVFRZLmRlZmF1bHRfdHR5X29wcyk7CiAgICAgIFRUWS5yZWdpc3RlcihGUy5tYWtlZGV2KDYsIDApLCBUVFkuZGVmYXVsdF90dHkxX29wcyk7CiAgICAgIEZTLm1rZGV2KCIvZGV2L3R0eSIsIEZTLm1ha2VkZXYoNSwgMCkpOwogICAgICBGUy5ta2RldigiL2Rldi90dHkxIiwgRlMubWFrZWRldig2LCAwKSk7CiAgICAgIGxldCByYW5kb21fZGV2aWNlID0gZ2V0UmFuZG9tRGV2aWNlKCk7CiAgICAgIEZTLmNyZWF0ZURldmljZSgiL2RldiIsICJyYW5kb20iLCByYW5kb21fZGV2aWNlKTsKICAgICAgRlMuY3JlYXRlRGV2aWNlKCIvZGV2IiwgInVyYW5kb20iLCByYW5kb21fZGV2aWNlKTsKICAgICAgRlMubWtkaXIoIi9kZXYvc2htIik7CiAgICAgIEZTLm1rZGlyKCIvZGV2L3NobS90bXAiKTsKICAgIH0sCiAgICBjcmVhdGVTcGVjaWFsRGlyZWN0b3JpZXM6ICgpID0+IHsKICAgICAgRlMubWtkaXIoIi9wcm9jIik7CiAgICAgIGxldCBwcm9jX3NlbGYgPSBGUy5ta2RpcigiL3Byb2Mvc2VsZiIpOwogICAgICBGUy5ta2RpcigiL3Byb2Mvc2VsZi9mZCIpOwogICAgICBGUy5tb3VudCgKICAgICAgICB7CiAgICAgICAgICBtb3VudDogKCkgPT4gewogICAgICAgICAgICBsZXQgbm9kZSA9IEZTLmNyZWF0ZU5vZGUocHJvY19zZWxmLCAiZmQiLCAxNjM4NCB8IDUxMSwgNzMpOwogICAgICAgICAgICBub2RlLm5vZGVfb3BzID0gewogICAgICAgICAgICAgIGxvb2t1cDogKHBhcmVudCwgbmFtZSkgPT4gewogICAgICAgICAgICAgICAgbGV0IGZkID0gK25hbWU7CiAgICAgICAgICAgICAgICBsZXQgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICAgICAgICAgICAgICAgIGlmICghc3RyZWFtKSB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTsKICAgICAgICAgICAgICAgIGxldCByZXQgPSB7CiAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCwKICAgICAgICAgICAgICAgICAgbW91bnQ6IHsgbW91bnRwb2ludDogImZha2UiIH0sCiAgICAgICAgICAgICAgICAgIG5vZGVfb3BzOiB7IHJlYWRsaW5rOiAoKSA9PiBzdHJlYW0ucGF0aCB9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldC5wYXJlbnQgPSByZXQ7CiAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHt9LAogICAgICAgICIvcHJvYy9zZWxmL2ZkIiwKICAgICAgKTsKICAgIH0sCiAgICBjcmVhdGVTdGFuZGFyZFN0cmVhbXM6ICgpID0+IHsKICAgICAgaWYgKE1vZHVsZVsic3RkaW4iXSkgewogICAgICAgIEZTLmNyZWF0ZURldmljZSgiL2RldiIsICJzdGRpbiIsIE1vZHVsZVsic3RkaW4iXSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgRlMuc3ltbGluaygiL2Rldi90dHkiLCAiL2Rldi9zdGRpbiIpOwogICAgICB9CiAgICAgIGlmIChNb2R1bGVbInN0ZG91dCJdKSB7CiAgICAgICAgRlMuY3JlYXRlRGV2aWNlKCIvZGV2IiwgInN0ZG91dCIsIG51bGwsIE1vZHVsZVsic3Rkb3V0Il0pOwogICAgICB9IGVsc2UgewogICAgICAgIEZTLnN5bWxpbmsoIi9kZXYvdHR5IiwgIi9kZXYvc3Rkb3V0Iik7CiAgICAgIH0KICAgICAgaWYgKE1vZHVsZVsic3RkZXJyIl0pIHsKICAgICAgICBGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCAic3RkZXJyIiwgbnVsbCwgTW9kdWxlWyJzdGRlcnIiXSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgRlMuc3ltbGluaygiL2Rldi90dHkxIiwgIi9kZXYvc3RkZXJyIik7CiAgICAgIH0KICAgICAgbGV0IHN0ZGluID0gRlMub3BlbigiL2Rldi9zdGRpbiIsIDApOwogICAgICBsZXQgc3Rkb3V0ID0gRlMub3BlbigiL2Rldi9zdGRvdXQiLCAxKTsKICAgICAgbGV0IHN0ZGVyciA9IEZTLm9wZW4oIi9kZXYvc3RkZXJyIiwgMSk7CiAgICB9LAogICAgZW5zdXJlRXJybm9FcnJvcjogKCkgPT4gewogICAgICBpZiAoRlMuRXJybm9FcnJvcikgcmV0dXJuOwogICAgICBGUy5FcnJub0Vycm9yID0gZnVuY3Rpb24gRXJybm9FcnJvcihlcnJubywgbm9kZSkgewogICAgICAgIHRoaXMubm9kZSA9IG5vZGU7CiAgICAgICAgdGhpcy5zZXRFcnJubyA9IGZ1bmN0aW9uIChlcnJubykgewogICAgICAgICAgdGhpcy5lcnJubyA9IGVycm5vOwogICAgICAgIH07CiAgICAgICAgdGhpcy5zZXRFcnJubyhlcnJubyk7CiAgICAgICAgdGhpcy5tZXNzYWdlID0gIkZTIGVycm9yIjsKICAgICAgfTsKICAgICAgRlMuRXJybm9FcnJvci5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTsKICAgICAgRlMuRXJybm9FcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBGUy5FcnJub0Vycm9yOwogICAgICBbNDRdLmZvckVhY2goKGNvZGUpID0+IHsKICAgICAgICBGUy5nZW5lcmljRXJyb3JzW2NvZGVdID0gbmV3IEZTLkVycm5vRXJyb3IoY29kZSk7CiAgICAgICAgRlMuZ2VuZXJpY0Vycm9yc1tjb2RlXS5zdGFjayA9ICI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+IjsKICAgICAgfSk7CiAgICB9LAogICAgc3RhdGljSW5pdDogKCkgPT4gewogICAgICBGUy5lbnN1cmVFcnJub0Vycm9yKCk7CiAgICAgIEZTLm5hbWVUYWJsZSA9IG5ldyBBcnJheSg0MDk2KTsKICAgICAgRlMubW91bnQoTUVNRlMsIHt9LCAiLyIpOwogICAgICBGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTsKICAgICAgRlMuY3JlYXRlRGVmYXVsdERldmljZXMoKTsKICAgICAgRlMuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCk7CiAgICAgIEZTLmZpbGVzeXN0ZW1zID0geyBNRU1GUyB9OwogICAgfSwKICAgIGluaXQ6IChpbnB1dCwgb3V0cHV0LCBlcnJvcikgPT4gewogICAgICBGUy5pbml0LmluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgRlMuZW5zdXJlRXJybm9FcnJvcigpOwogICAgICBNb2R1bGVbInN0ZGluIl0gPSBpbnB1dCB8fCBNb2R1bGVbInN0ZGluIl07CiAgICAgIE1vZHVsZVsic3Rkb3V0Il0gPSBvdXRwdXQgfHwgTW9kdWxlWyJzdGRvdXQiXTsKICAgICAgTW9kdWxlWyJzdGRlcnIiXSA9IGVycm9yIHx8IE1vZHVsZVsic3RkZXJyIl07CiAgICAgIEZTLmNyZWF0ZVN0YW5kYXJkU3RyZWFtcygpOwogICAgfSwKICAgIHF1aXQ6ICgpID0+IHsKICAgICAgRlMuaW5pdC5pbml0aWFsaXplZCA9IGZhbHNlOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IEZTLnN0cmVhbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBsZXQgc3RyZWFtID0gRlMuc3RyZWFtc1tpXTsKICAgICAgICBpZiAoIXN0cmVhbSkgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIEZTLmNsb3NlKHN0cmVhbSk7CiAgICAgIH0KICAgIH0sCiAgICBnZXRNb2RlOiAoY2FuUmVhZCwgY2FuV3JpdGUpID0+IHsKICAgICAgbGV0IG1vZGUgPSAwOwogICAgICBpZiAoY2FuUmVhZCkgbW9kZSB8PSAyOTIgfCA3MzsKICAgICAgaWYgKGNhbldyaXRlKSBtb2RlIHw9IDE0NjsKICAgICAgcmV0dXJuIG1vZGU7CiAgICB9LAogICAgZmluZE9iamVjdDogKHBhdGgsIGRvbnRSZXNvbHZlTGFzdExpbmspID0+IHsKICAgICAgbGV0IHJldCA9IEZTLmFuYWx5emVQYXRoKHBhdGgsIGRvbnRSZXNvbHZlTGFzdExpbmspOwogICAgICBpZiAoIXJldC5leGlzdHMpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gcmV0Lm9iamVjdDsKICAgIH0sCiAgICBhbmFseXplUGF0aDogKHBhdGgsIGRvbnRSZXNvbHZlTGFzdExpbmspID0+IHsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IGZvbGxvdzogIWRvbnRSZXNvbHZlTGFzdExpbmsgfSk7CiAgICAgICAgcGF0aCA9IGxvb2t1cC5wYXRoOwogICAgICB9IGNhdGNoIChlKSB7fQogICAgICBsZXQgcmV0ID0gewogICAgICAgIGlzUm9vdDogZmFsc2UsCiAgICAgICAgZXhpc3RzOiBmYWxzZSwKICAgICAgICBlcnJvcjogMCwKICAgICAgICBuYW1lOiBudWxsLAogICAgICAgIHBhdGg6IG51bGwsCiAgICAgICAgb2JqZWN0OiBudWxsLAogICAgICAgIHBhcmVudEV4aXN0czogZmFsc2UsCiAgICAgICAgcGFyZW50UGF0aDogbnVsbCwKICAgICAgICBwYXJlbnRPYmplY3Q6IG51bGwsCiAgICAgIH07CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBwYXJlbnQ6IHRydWUgfSk7CiAgICAgICAgcmV0LnBhcmVudEV4aXN0cyA9IHRydWU7CiAgICAgICAgcmV0LnBhcmVudFBhdGggPSBsb29rdXAucGF0aDsKICAgICAgICByZXQucGFyZW50T2JqZWN0ID0gbG9va3VwLm5vZGU7CiAgICAgICAgcmV0Lm5hbWUgPSBQQVRILmJhc2VuYW1lKHBhdGgpOwogICAgICAgIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICFkb250UmVzb2x2ZUxhc3RMaW5rIH0pOwogICAgICAgIHJldC5leGlzdHMgPSB0cnVlOwogICAgICAgIHJldC5wYXRoID0gbG9va3VwLnBhdGg7CiAgICAgICAgcmV0Lm9iamVjdCA9IGxvb2t1cC5ub2RlOwogICAgICAgIHJldC5uYW1lID0gbG9va3VwLm5vZGUubmFtZTsKICAgICAgICByZXQuaXNSb290ID0gbG9va3VwLnBhdGggPT09ICIvIjsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHJldC5lcnJvciA9IGUuZXJybm87CiAgICAgIH0KICAgICAgcmV0dXJuIHJldDsKICAgIH0sCiAgICBjcmVhdGVQYXRoOiAocGFyZW50LCBwYXRoLCBjYW5SZWFkLCBjYW5Xcml0ZSkgPT4gewogICAgICBwYXJlbnQgPSB0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KTsKICAgICAgbGV0IHBhcnRzID0gcGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKTsKICAgICAgd2hpbGUgKHBhcnRzLmxlbmd0aCkgewogICAgICAgIGxldCBwYXJ0ID0gcGFydHMucG9wKCk7CiAgICAgICAgaWYgKCFwYXJ0KSBjb250aW51ZTsKICAgICAgICB2YXIgY3VycmVudCA9IFBBVEguam9pbjIocGFyZW50LCBwYXJ0KTsKICAgICAgICB0cnkgewogICAgICAgICAgRlMubWtkaXIoY3VycmVudCk7CiAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICBwYXJlbnQgPSBjdXJyZW50OwogICAgICB9CiAgICAgIHJldHVybiBjdXJyZW50OwogICAgfSwKICAgIGNyZWF0ZUZpbGU6IChwYXJlbnQsIG5hbWUsIHByb3BlcnRpZXMsIGNhblJlYWQsIGNhbldyaXRlKSA9PiB7CiAgICAgIGxldCBwYXRoID0gUEFUSC5qb2luMih0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSwgbmFtZSk7CiAgICAgIGxldCBtb2RlID0gRlMuZ2V0TW9kZShjYW5SZWFkLCBjYW5Xcml0ZSk7CiAgICAgIHJldHVybiBGUy5jcmVhdGUocGF0aCwgbW9kZSk7CiAgICB9LAogICAgY3JlYXRlRGF0YUZpbGU6IChwYXJlbnQsIG5hbWUsIGRhdGEsIGNhblJlYWQsIGNhbldyaXRlLCBjYW5Pd24pID0+IHsKICAgICAgbGV0IHBhdGggPSBuYW1lOwogICAgICBpZiAocGFyZW50KSB7CiAgICAgICAgcGFyZW50ID0gdHlwZW9mIHBhcmVudCA9PT0gInN0cmluZyIgPyBwYXJlbnQgOiBGUy5nZXRQYXRoKHBhcmVudCk7CiAgICAgICAgcGF0aCA9IG5hbWUgPyBQQVRILmpvaW4yKHBhcmVudCwgbmFtZSkgOiBwYXJlbnQ7CiAgICAgIH0KICAgICAgbGV0IG1vZGUgPSBGUy5nZXRNb2RlKGNhblJlYWQsIGNhbldyaXRlKTsKICAgICAgbGV0IG5vZGUgPSBGUy5jcmVhdGUocGF0aCwgbW9kZSk7CiAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAic3RyaW5nIikgewogICAgICAgICAgbGV0IGFyciA9IG5ldyBBcnJheShkYXRhLmxlbmd0aCk7CiAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZGF0YS5sZW5ndGg7IGkgPCBsZW47ICsraSkgYXJyW2ldID0gZGF0YS5jaGFyQ29kZUF0KGkpOwogICAgICAgICAgZGF0YSA9IGFycjsKICAgICAgICB9CiAgICAgICAgRlMuY2htb2Qobm9kZSwgbW9kZSB8IDE0Nik7CiAgICAgICAgbGV0IHN0cmVhbSA9IEZTLm9wZW4obm9kZSwgNTc3KTsKICAgICAgICBGUy53cml0ZShzdHJlYW0sIGRhdGEsIDAsIGRhdGEubGVuZ3RoLCAwLCBjYW5Pd24pOwogICAgICAgIEZTLmNsb3NlKHN0cmVhbSk7CiAgICAgICAgRlMuY2htb2Qobm9kZSwgbW9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5vZGU7CiAgICB9LAogICAgY3JlYXRlRGV2aWNlOiAocGFyZW50LCBuYW1lLCBpbnB1dCwgb3V0cHV0KSA9PiB7CiAgICAgIGxldCBwYXRoID0gUEFUSC5qb2luMih0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSwgbmFtZSk7CiAgICAgIGxldCBtb2RlID0gRlMuZ2V0TW9kZSghIWlucHV0LCAhIW91dHB1dCk7CiAgICAgIGlmICghRlMuY3JlYXRlRGV2aWNlLm1ham9yKSBGUy5jcmVhdGVEZXZpY2UubWFqb3IgPSA2NDsKICAgICAgbGV0IGRldiA9IEZTLm1ha2VkZXYoRlMuY3JlYXRlRGV2aWNlLm1ham9yKyssIDApOwogICAgICBGUy5yZWdpc3RlckRldmljZShkZXYsIHsKICAgICAgICBvcGVuOiAoc3RyZWFtKSA9PiB7CiAgICAgICAgICBzdHJlYW0uc2Vla2FibGUgPSBmYWxzZTsKICAgICAgICB9LAogICAgICAgIGNsb3NlOiAoc3RyZWFtKSA9PiB7CiAgICAgICAgICBpZiAob3V0cHV0ICYmIG91dHB1dC5idWZmZXIgJiYgb3V0cHV0LmJ1ZmZlci5sZW5ndGgpIHsKICAgICAgICAgICAgb3V0cHV0KDEwKTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJlYWQ6IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgPT4gewogICAgICAgICAgbGV0IGJ5dGVzUmVhZCA9IDA7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQ7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzdWx0ID0gaW5wdXQoKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYgYnl0ZXNSZWFkID09PSAwKSB7CiAgICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCkgYnJlYWs7CiAgICAgICAgICAgIGJ5dGVzUmVhZCsrOwogICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoYnl0ZXNSZWFkKSB7CiAgICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOwogICAgICAgIH0sCiAgICAgICAgd3JpdGU6IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgPT4gewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIG91dHB1dChidWZmZXJbb2Zmc2V0ICsgaV0pOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjkpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9LAogICAgICB9KTsKICAgICAgcmV0dXJuIEZTLm1rZGV2KHBhdGgsIG1vZGUsIGRldik7CiAgICB9LAogICAgZm9yY2VMb2FkRmlsZTogKG9iaikgPT4gewogICAgICBpZiAob2JqLmlzRGV2aWNlIHx8IG9iai5pc0ZvbGRlciB8fCBvYmoubGluayB8fCBvYmouY29udGVudHMpIHJldHVybiB0cnVlOwogICAgICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAidW5kZWZpbmVkIikgewogICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICJMYXp5IGxvYWRpbmcgc2hvdWxkIGhhdmUgYmVlbiBwZXJmb3JtZWQgKGNvbnRlbnRzIHNldCkgaW4gY3JlYXRlTGF6eUZpbGUsIGJ1dCBpdCB3YXMgbm90LiBMYXp5IGxvYWRpbmcgb25seSB3b3JrcyBpbiB3ZWIgd29ya2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIG9uIHRoZSBtYWluIHRocmVhZC4iLAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAocmVhZF8pIHsKICAgICAgICB0cnkgewogICAgICAgICAgb2JqLmNvbnRlbnRzID0gaW50QXJyYXlGcm9tU3RyaW5nKHJlYWRfKG9iai51cmwpLCB0cnVlKTsKICAgICAgICAgIG9iai51c2VkQnl0ZXMgPSBvYmouY29udGVudHMubGVuZ3RoOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbG9hZCB3aXRob3V0IHJlYWQoKSBvciBYTUxIdHRwUmVxdWVzdC4iKTsKICAgICAgfQogICAgfSwKICAgIGNyZWF0ZUxhenlGaWxlOiAocGFyZW50LCBuYW1lLCB1cmwsIGNhblJlYWQsIGNhbldyaXRlKSA9PiB7CiAgICAgIGZ1bmN0aW9uIExhenlVaW50OEFycmF5KCkgewogICAgICAgIHRoaXMubGVuZ3RoS25vd24gPSBmYWxzZTsKICAgICAgICB0aGlzLmNodW5rcyA9IFtdOwogICAgICB9CiAgICAgIExhenlVaW50OEFycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBMYXp5VWludDhBcnJheV9nZXQoaWR4KSB7CiAgICAgICAgaWYgKGlkeCA+IHRoaXMubGVuZ3RoIC0gMSB8fCBpZHggPCAwKSB7CiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICBsZXQgY2h1bmtPZmZzZXQgPSBpZHggJSB0aGlzLmNodW5rU2l6ZTsKICAgICAgICBsZXQgY2h1bmtOdW0gPSAoaWR4IC8gdGhpcy5jaHVua1NpemUpIHwgMDsKICAgICAgICByZXR1cm4gdGhpcy5nZXR0ZXIoY2h1bmtOdW0pW2NodW5rT2Zmc2V0XTsKICAgICAgfTsKICAgICAgTGF6eVVpbnQ4QXJyYXkucHJvdG90eXBlLnNldERhdGFHZXR0ZXIgPSBmdW5jdGlvbiBMYXp5VWludDhBcnJheV9zZXREYXRhR2V0dGVyKGdldHRlcikgewogICAgICAgIHRoaXMuZ2V0dGVyID0gZ2V0dGVyOwogICAgICB9OwogICAgICBMYXp5VWludDhBcnJheS5wcm90b3R5cGUuY2FjaGVMZW5ndGggPSBmdW5jdGlvbiBMYXp5VWludDhBcnJheV9jYWNoZUxlbmd0aCgpIHsKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oIkhFQUQiLCB1cmwsIGZhbHNlKTsKICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICBpZiAoISgoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkgfHwgeGhyLnN0YXR1cyA9PT0gMzA0KSkKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiICsgdXJsICsgIi4gU3RhdHVzOiAiICsgeGhyLnN0YXR1cyk7CiAgICAgICAgbGV0IGRhdGFsZW5ndGggPSBOdW1iZXIoeGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKTsKICAgICAgICBsZXQgaGVhZGVyOwogICAgICAgIGxldCBoYXNCeXRlU2VydmluZyA9CiAgICAgICAgICAoaGVhZGVyID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCJBY2NlcHQtUmFuZ2VzIikpICYmIGhlYWRlciA9PT0gImJ5dGVzIjsKICAgICAgICBsZXQgdXNlc0d6aXAgPSAoaGVhZGVyID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LUVuY29kaW5nIikpICYmIGhlYWRlciA9PT0gImd6aXAiOwogICAgICAgIGxldCBjaHVua1NpemUgPSAxMDI0ICogMTAyNDsKICAgICAgICBpZiAoIWhhc0J5dGVTZXJ2aW5nKSBjaHVua1NpemUgPSBkYXRhbGVuZ3RoOwogICAgICAgIGxldCBkb1hIUiA9IChmcm9tLCB0bykgPT4gewogICAgICAgICAgaWYgKGZyb20gPiB0bykKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHJhbmdlICgiICsgZnJvbSArICIsICIgKyB0byArICIpIG9yIG5vIGJ5dGVzIHJlcXVlc3RlZCEiKTsKICAgICAgICAgIGlmICh0byA+IGRhdGFsZW5ndGggLSAxKQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIiArIGRhdGFsZW5ndGggKyAiIGJ5dGVzIGF2YWlsYWJsZSEgcHJvZ3JhbW1lciBlcnJvciEiKTsKICAgICAgICAgIGxldCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgIHhoci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKICAgICAgICAgIGlmIChkYXRhbGVuZ3RoICE9PSBjaHVua1NpemUpIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCJSYW5nZSIsICJieXRlcz0iICsgZnJvbSArICItIiArIHRvKTsKICAgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAiYXJyYXlidWZmZXIiOwogICAgICAgICAgaWYgKHhoci5vdmVycmlkZU1pbWVUeXBlKSB7CiAgICAgICAgICAgIHhoci5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3BsYWluOyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkIik7CiAgICAgICAgICB9CiAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgIGlmICghKCh4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwKSB8fCB4aHIuc3RhdHVzID09PSAzMDQpKQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxvYWQgIiArIHVybCArICIuIFN0YXR1czogIiArIHhoci5zdGF0dXMpOwogICAgICAgICAgaWYgKHhoci5yZXNwb25zZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2UgfHwgW10pOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGludEFycmF5RnJvbVN0cmluZyh4aHIucmVzcG9uc2VUZXh0IHx8ICIiLCB0cnVlKTsKICAgICAgICB9OwogICAgICAgIGxldCBsYXp5QXJyYXkgPSB0aGlzOwogICAgICAgIGxhenlBcnJheS5zZXREYXRhR2V0dGVyKChjaHVua051bSkgPT4gewogICAgICAgICAgbGV0IHN0YXJ0ID0gY2h1bmtOdW0gKiBjaHVua1NpemU7CiAgICAgICAgICBsZXQgZW5kID0gKGNodW5rTnVtICsgMSkgKiBjaHVua1NpemUgLSAxOwogICAgICAgICAgZW5kID0gTWF0aC5taW4oZW5kLCBkYXRhbGVuZ3RoIC0gMSk7CiAgICAgICAgICBpZiAodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICBsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXSA9IGRvWEhSKHN0YXJ0LCBlbmQpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHR5cGVvZiBsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXSA9PT0gInVuZGVmaW5lZCIpIHRocm93IG5ldyBFcnJvcigiZG9YSFIgZmFpbGVkISIpOwogICAgICAgICAgcmV0dXJuIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dOwogICAgICAgIH0pOwogICAgICAgIGlmICh1c2VzR3ppcCB8fCAhZGF0YWxlbmd0aCkgewogICAgICAgICAgY2h1bmtTaXplID0gZGF0YWxlbmd0aCA9IDE7CiAgICAgICAgICBkYXRhbGVuZ3RoID0gdGhpcy5nZXR0ZXIoMCkubGVuZ3RoOwogICAgICAgICAgY2h1bmtTaXplID0gZGF0YWxlbmd0aDsKICAgICAgICAgIG91dCgiTGF6eUZpbGVzIG9uIGd6aXAgZm9yY2VzIGRvd25sb2FkIG9mIHRoZSB3aG9sZSBmaWxlIHdoZW4gbGVuZ3RoIGlzIGFjY2Vzc2VkIik7CiAgICAgICAgfQogICAgICAgIHRoaXMuX2xlbmd0aCA9IGRhdGFsZW5ndGg7CiAgICAgICAgdGhpcy5fY2h1bmtTaXplID0gY2h1bmtTaXplOwogICAgICAgIHRoaXMubGVuZ3RoS25vd24gPSB0cnVlOwogICAgICB9OwogICAgICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAidW5kZWZpbmVkIikgewogICAgICAgIGlmICghRU5WSVJPTk1FTlRfSVNfV09SS0VSKQogICAgICAgICAgdGhyb3cgIkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiOwogICAgICAgIGxldCBsYXp5QXJyYXkgPSBuZXcgTGF6eVVpbnQ4QXJyYXkoKTsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsYXp5QXJyYXksIHsKICAgICAgICAgIGxlbmd0aDogewogICAgICAgICAgICBnZXQoKSB7CiAgICAgICAgICAgICAgaWYgKCF0aGlzLmxlbmd0aEtub3duKSB7CiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlTGVuZ3RoKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiB0aGlzLl9sZW5ndGg7CiAgICAgICAgICAgIH0sCiAgICAgICAgICB9LAogICAgICAgICAgY2h1bmtTaXplOiB7CiAgICAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICBpZiAoIXRoaXMubGVuZ3RoS25vd24pIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVMZW5ndGgoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NodW5rU2l6ZTsKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgfSk7CiAgICAgICAgdmFyIHByb3BlcnRpZXMgPSB7IGlzRGV2aWNlOiBmYWxzZSwgY29udGVudHM6IGxhenlBcnJheSB9OwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBwcm9wZXJ0aWVzID0geyBpc0RldmljZTogZmFsc2UsIHVybCB9OwogICAgICB9CiAgICAgIGxldCBub2RlID0gRlMuY3JlYXRlRmlsZShwYXJlbnQsIG5hbWUsIHByb3BlcnRpZXMsIGNhblJlYWQsIGNhbldyaXRlKTsKICAgICAgaWYgKHByb3BlcnRpZXMuY29udGVudHMpIHsKICAgICAgICBub2RlLmNvbnRlbnRzID0gcHJvcGVydGllcy5jb250ZW50czsKICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0aWVzLnVybCkgewogICAgICAgIG5vZGUuY29udGVudHMgPSBudWxsOwogICAgICAgIG5vZGUudXJsID0gcHJvcGVydGllcy51cmw7CiAgICAgIH0KICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobm9kZSwgewogICAgICAgIHVzZWRCeXRlczogewogICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50cy5sZW5ndGg7CiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgIH0pOwogICAgICBsZXQgc3RyZWFtX29wcyA9IHt9OwogICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG5vZGUuc3RyZWFtX29wcyk7CiAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7CiAgICAgICAgbGV0IGZuID0gbm9kZS5zdHJlYW1fb3BzW2tleV07CiAgICAgICAgc3RyZWFtX29wc1trZXldID0gZnVuY3Rpb24gZm9yY2VMb2FkTGF6eUZpbGUoKSB7CiAgICAgICAgICBGUy5mb3JjZUxvYWRGaWxlKG5vZGUpOwogICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSk7CiAgICAgIGZ1bmN0aW9uIHdyaXRlQ2h1bmtzKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHsKICAgICAgICBsZXQgY29udGVudHMgPSBzdHJlYW0ubm9kZS5jb250ZW50czsKICAgICAgICBpZiAocG9zaXRpb24gPj0gY29udGVudHMubGVuZ3RoKSByZXR1cm4gMDsKICAgICAgICBsZXQgc2l6ZSA9IE1hdGgubWluKGNvbnRlbnRzLmxlbmd0aCAtIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgICAgIGlmIChjb250ZW50cy5zbGljZSkgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIGldID0gY29udGVudHNbcG9zaXRpb24gKyBpXTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIGldID0gY29udGVudHMuZ2V0KHBvc2l0aW9uICsgaSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBzaXplOwogICAgICB9CiAgICAgIHN0cmVhbV9vcHMucmVhZCA9IChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSA9PiB7CiAgICAgICAgRlMuZm9yY2VMb2FkRmlsZShub2RlKTsKICAgICAgICByZXR1cm4gd3JpdGVDaHVua3Moc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7CiAgICAgIH07CiAgICAgIHN0cmVhbV9vcHMubW1hcCA9IChzdHJlYW0sIGxlbmd0aCwgcG9zaXRpb24sIHByb3QsIGZsYWdzKSA9PiB7CiAgICAgICAgRlMuZm9yY2VMb2FkRmlsZShub2RlKTsKICAgICAgICBsZXQgcHRyID0gbW1hcEFsbG9jKGxlbmd0aCk7CiAgICAgICAgaWYgKCFwdHIpIHsKICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ4KTsKICAgICAgICB9CiAgICAgICAgd3JpdGVDaHVua3Moc3RyZWFtLCBIRUFQOCwgcHRyLCBsZW5ndGgsIHBvc2l0aW9uKTsKICAgICAgICByZXR1cm4geyBwdHIsIGFsbG9jYXRlZDogdHJ1ZSB9OwogICAgICB9OwogICAgICBub2RlLnN0cmVhbV9vcHMgPSBzdHJlYW1fb3BzOwogICAgICByZXR1cm4gbm9kZTsKICAgIH0sCiAgICBjcmVhdGVQcmVsb2FkZWRGaWxlOiAoCiAgICAgIHBhcmVudCwKICAgICAgbmFtZSwKICAgICAgdXJsLAogICAgICBjYW5SZWFkLAogICAgICBjYW5Xcml0ZSwKICAgICAgb25sb2FkLAogICAgICBvbmVycm9yLAogICAgICBkb250Q3JlYXRlRmlsZSwKICAgICAgY2FuT3duLAogICAgICBwcmVGaW5pc2gsCiAgICApID0+IHsKICAgICAgbGV0IGZ1bGxuYW1lID0gbmFtZSA/IFBBVEhfRlMucmVzb2x2ZShQQVRILmpvaW4yKHBhcmVudCwgbmFtZSkpIDogcGFyZW50OwogICAgICBsZXQgZGVwID0gZ2V0VW5pcXVlUnVuRGVwZW5kZW5jeSgiY3AgIiArIGZ1bGxuYW1lKTsKICAgICAgZnVuY3Rpb24gcHJvY2Vzc0RhdGEoYnl0ZUFycmF5KSB7CiAgICAgICAgZnVuY3Rpb24gZmluaXNoKGJ5dGVBcnJheSkgewogICAgICAgICAgaWYgKHByZUZpbmlzaCkgcHJlRmluaXNoKCk7CiAgICAgICAgICBpZiAoIWRvbnRDcmVhdGVGaWxlKSB7CiAgICAgICAgICAgIEZTLmNyZWF0ZURhdGFGaWxlKHBhcmVudCwgbmFtZSwgYnl0ZUFycmF5LCBjYW5SZWFkLCBjYW5Xcml0ZSwgY2FuT3duKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChvbmxvYWQpIG9ubG9hZCgpOwogICAgICAgICAgcmVtb3ZlUnVuRGVwZW5kZW5jeShkZXApOwogICAgICAgIH0KICAgICAgICBpZiAoCiAgICAgICAgICBCcm93c2VyLmhhbmRsZWRCeVByZWxvYWRQbHVnaW4oYnl0ZUFycmF5LCBmdWxsbmFtZSwgZmluaXNoLCAoKSA9PiB7CiAgICAgICAgICAgIGlmIChvbmVycm9yKSBvbmVycm9yKCk7CiAgICAgICAgICAgIHJlbW92ZVJ1bkRlcGVuZGVuY3koZGVwKTsKICAgICAgICAgIH0pCiAgICAgICAgKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGZpbmlzaChieXRlQXJyYXkpOwogICAgICB9CiAgICAgIGFkZFJ1bkRlcGVuZGVuY3koZGVwKTsKICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICJzdHJpbmciKSB7CiAgICAgICAgYXN5bmNMb2FkKHVybCwgKGJ5dGVBcnJheSkgPT4gcHJvY2Vzc0RhdGEoYnl0ZUFycmF5KSwgb25lcnJvcik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHJvY2Vzc0RhdGEodXJsKTsKICAgICAgfQogICAgfSwKICAgIGluZGV4ZWREQjogKCkgPT4gewogICAgICByZXR1cm4gKAogICAgICAgIHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tc0luZGV4ZWREQgogICAgICApOwogICAgfSwKICAgIERCX05BTUU6ICgpID0+IHsKICAgICAgcmV0dXJuICJFTV9GU18iICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwogICAgfSwKICAgIERCX1ZFUlNJT046IDIwLAogICAgREJfU1RPUkVfTkFNRTogIkZJTEVfREFUQSIsCiAgICBzYXZlRmlsZXNUb0RCOiAocGF0aHMsIG9ubG9hZCwgb25lcnJvcikgPT4gewogICAgICBvbmxvYWQgPSBvbmxvYWQgfHwgKCgpID0+IHt9KTsKICAgICAgb25lcnJvciA9IG9uZXJyb3IgfHwgKCgpID0+IHt9KTsKICAgICAgbGV0IGluZGV4ZWREQiA9IEZTLmluZGV4ZWREQigpOwogICAgICB0cnkgewogICAgICAgIHZhciBvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKEZTLkRCX05BTUUoKSwgRlMuREJfVkVSU0lPTik7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gb25lcnJvcihlKTsKICAgICAgfQogICAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoKSA9PiB7CiAgICAgICAgb3V0KCJjcmVhdGluZyBkYiIpOwogICAgICAgIGxldCBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDsKICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICAgICAgfTsKICAgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gewogICAgICAgIGxldCBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDsKICAgICAgICBsZXQgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sICJyZWFkd3JpdGUiKTsKICAgICAgICBsZXQgZmlsZXMgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICAgICAgICBsZXQgb2sgPSAwLAogICAgICAgICAgZmFpbCA9IDAsCiAgICAgICAgICB0b3RhbCA9IHBhdGhzLmxlbmd0aDsKICAgICAgICBmdW5jdGlvbiBmaW5pc2goKSB7CiAgICAgICAgICBpZiAoZmFpbCA9PSAwKSBvbmxvYWQoKTsKICAgICAgICAgIGVsc2Ugb25lcnJvcigpOwogICAgICAgIH0KICAgICAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7CiAgICAgICAgICBsZXQgcHV0UmVxdWVzdCA9IGZpbGVzLnB1dChGUy5hbmFseXplUGF0aChwYXRoKS5vYmplY3QuY29udGVudHMsIHBhdGgpOwogICAgICAgICAgcHV0UmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7CiAgICAgICAgICAgIG9rKys7CiAgICAgICAgICAgIGlmIChvayArIGZhaWwgPT0gdG90YWwpIGZpbmlzaCgpOwogICAgICAgICAgfTsKICAgICAgICAgIHB1dFJlcXVlc3Qub25lcnJvciA9ICgpID0+IHsKICAgICAgICAgICAgZmFpbCsrOwogICAgICAgICAgICBpZiAob2sgKyBmYWlsID09IHRvdGFsKSBmaW5pc2goKTsKICAgICAgICAgIH07CiAgICAgICAgfSk7CiAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IG9uZXJyb3I7CiAgICAgIH07CiAgICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBvbmVycm9yOwogICAgfSwKICAgIGxvYWRGaWxlc0Zyb21EQjogKHBhdGhzLCBvbmxvYWQsIG9uZXJyb3IpID0+IHsKICAgICAgb25sb2FkID0gb25sb2FkIHx8ICgoKSA9PiB7fSk7CiAgICAgIG9uZXJyb3IgPSBvbmVycm9yIHx8ICgoKSA9PiB7fSk7CiAgICAgIGxldCBpbmRleGVkREIgPSBGUy5pbmRleGVkREIoKTsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgb3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksIEZTLkRCX1ZFUlNJT04pOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgcmV0dXJuIG9uZXJyb3IoZSk7CiAgICAgIH0KICAgICAgb3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gb25lcnJvcjsKICAgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gewogICAgICAgIGxldCBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCAicmVhZG9ubHkiKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBvbmVycm9yKGUpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsZXQgZmlsZXMgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICAgICAgICBsZXQgb2sgPSAwLAogICAgICAgICAgZmFpbCA9IDAsCiAgICAgICAgICB0b3RhbCA9IHBhdGhzLmxlbmd0aDsKICAgICAgICBmdW5jdGlvbiBmaW5pc2goKSB7CiAgICAgICAgICBpZiAoZmFpbCA9PSAwKSBvbmxvYWQoKTsKICAgICAgICAgIGVsc2Ugb25lcnJvcigpOwogICAgICAgIH0KICAgICAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7CiAgICAgICAgICBsZXQgZ2V0UmVxdWVzdCA9IGZpbGVzLmdldChwYXRoKTsKICAgICAgICAgIGdldFJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gewogICAgICAgICAgICBpZiAoRlMuYW5hbHl6ZVBhdGgocGF0aCkuZXhpc3RzKSB7CiAgICAgICAgICAgICAgRlMudW5saW5rKHBhdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEZTLmNyZWF0ZURhdGFGaWxlKAogICAgICAgICAgICAgIFBBVEguZGlybmFtZShwYXRoKSwKICAgICAgICAgICAgICBQQVRILmJhc2VuYW1lKHBhdGgpLAogICAgICAgICAgICAgIGdldFJlcXVlc3QucmVzdWx0LAogICAgICAgICAgICAgIHRydWUsCiAgICAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICB0cnVlLAogICAgICAgICAgICApOwogICAgICAgICAgICBvaysrOwogICAgICAgICAgICBpZiAob2sgKyBmYWlsID09IHRvdGFsKSBmaW5pc2goKTsKICAgICAgICAgIH07CiAgICAgICAgICBnZXRSZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7CiAgICAgICAgICAgIGZhaWwrKzsKICAgICAgICAgICAgaWYgKG9rICsgZmFpbCA9PSB0b3RhbCkgZmluaXNoKCk7CiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBvbmVycm9yOwogICAgICB9OwogICAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gb25lcnJvcjsKICAgIH0sCiAgfTsKICB2YXIgU1lTQ0FMTFMgPSB7CiAgICBERUZBVUxUX1BPTExNQVNLOiA1LAogICAgY2FsY3VsYXRlQXQoZGlyZmQsIHBhdGgsIGFsbG93RW1wdHkpIHsKICAgICAgaWYgKFBBVEguaXNBYnMocGF0aCkpIHsKICAgICAgICByZXR1cm4gcGF0aDsKICAgICAgfQogICAgICBsZXQgZGlyOwogICAgICBpZiAoZGlyZmQgPT09IC0xMDApIHsKICAgICAgICBkaXIgPSBGUy5jd2QoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgZGlyc3RyZWFtID0gU1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGRpcmZkKTsKICAgICAgICBkaXIgPSBkaXJzdHJlYW0ucGF0aDsKICAgICAgfQogICAgICBpZiAocGF0aC5sZW5ndGggPT0gMCkgewogICAgICAgIGlmICghYWxsb3dFbXB0eSkgewogICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGlyOwogICAgICB9CiAgICAgIHJldHVybiBQQVRILmpvaW4yKGRpciwgcGF0aCk7CiAgICB9LAogICAgZG9TdGF0KGZ1bmMsIHBhdGgsIGJ1ZikgewogICAgICB0cnkgewogICAgICAgIHZhciBzdGF0ID0gZnVuYyhwYXRoKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIGlmIChlICYmIGUubm9kZSAmJiBQQVRILm5vcm1hbGl6ZShwYXRoKSAhPT0gUEFUSC5ub3JtYWxpemUoRlMuZ2V0UGF0aChlLm5vZGUpKSkgewogICAgICAgICAgcmV0dXJuIC01NDsKICAgICAgICB9CiAgICAgICAgdGhyb3cgZTsKICAgICAgfQogICAgICBIRUFQMzJbYnVmID4+IDJdID0gc3RhdC5kZXY7CiAgICAgIEhFQVAzMlsoYnVmICsgOCkgPj4gMl0gPSBzdGF0LmlubzsKICAgICAgSEVBUDMyWyhidWYgKyAxMikgPj4gMl0gPSBzdGF0Lm1vZGU7CiAgICAgIEhFQVBVMzJbKGJ1ZiArIDE2KSA+PiAyXSA9IHN0YXQubmxpbms7CiAgICAgIEhFQVAzMlsoYnVmICsgMjApID4+IDJdID0gc3RhdC51aWQ7CiAgICAgIEhFQVAzMlsoYnVmICsgMjQpID4+IDJdID0gc3RhdC5naWQ7CiAgICAgIEhFQVAzMlsoYnVmICsgMjgpID4+IDJdID0gc3RhdC5yZGV2OwogICAgICAodGVtcEk2NCA9IFsKICAgICAgICBzdGF0LnNpemUgPj4+IDAsCiAgICAgICAgKCh0ZW1wRG91YmxlID0gc3RhdC5zaXplKSwKICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMQogICAgICAgICAgPyB0ZW1wRG91YmxlID4gMAogICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAKICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NikgPj4+IDAKICAgICAgICAgIDogMCksCiAgICAgIF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDQwKSA+PiAyXSA9IHRlbXBJNjRbMF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDQ0KSA+PiAyXSA9IHRlbXBJNjRbMV0pOwogICAgICBIRUFQMzJbKGJ1ZiArIDQ4KSA+PiAyXSA9IDQwOTY7CiAgICAgIEhFQVAzMlsoYnVmICsgNTIpID4+IDJdID0gc3RhdC5ibG9ja3M7CiAgICAgICh0ZW1wSTY0ID0gWwogICAgICAgIE1hdGguZmxvb3Ioc3RhdC5hdGltZS5nZXRUaW1lKCkgLyAxZTMpID4+PiAwLAogICAgICAgICgodGVtcERvdWJsZSA9IE1hdGguZmxvb3Ioc3RhdC5hdGltZS5nZXRUaW1lKCkgLyAxZTMpKSwKICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMQogICAgICAgICAgPyB0ZW1wRG91YmxlID4gMAogICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAKICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NikgPj4+IDAKICAgICAgICAgIDogMCksCiAgICAgIF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDU2KSA+PiAyXSA9IHRlbXBJNjRbMF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDYwKSA+PiAyXSA9IHRlbXBJNjRbMV0pOwogICAgICBIRUFQVTMyWyhidWYgKyA2NCkgPj4gMl0gPSAwOwogICAgICAodGVtcEk2NCA9IFsKICAgICAgICBNYXRoLmZsb29yKHN0YXQubXRpbWUuZ2V0VGltZSgpIC8gMWUzKSA+Pj4gMCwKICAgICAgICAoKHRlbXBEb3VibGUgPSBNYXRoLmZsb29yKHN0YXQubXRpbWUuZ2V0VGltZSgpIC8gMWUzKSksCiAgICAgICAgK01hdGguYWJzKHRlbXBEb3VibGUpID49IDEKICAgICAgICAgID8gdGVtcERvdWJsZSA+IDAKICAgICAgICAgICAgPyAoTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZSAvIDQyOTQ5NjcyOTYpLCA0Mjk0OTY3Mjk1KSB8IDApID4+PiAwCiAgICAgICAgICAgIDogfn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlIC0gKyh+fnRlbXBEb3VibGUgPj4+IDApKSAvIDQyOTQ5NjcyOTYpID4+PiAwCiAgICAgICAgICA6IDApLAogICAgICBdKSwKICAgICAgICAoSEVBUDMyWyhidWYgKyA3MikgPj4gMl0gPSB0ZW1wSTY0WzBdKSwKICAgICAgICAoSEVBUDMyWyhidWYgKyA3NikgPj4gMl0gPSB0ZW1wSTY0WzFdKTsKICAgICAgSEVBUFUzMlsoYnVmICsgODApID4+IDJdID0gMDsKICAgICAgKHRlbXBJNjQgPSBbCiAgICAgICAgTWF0aC5mbG9vcihzdGF0LmN0aW1lLmdldFRpbWUoKSAvIDFlMykgPj4+IDAsCiAgICAgICAgKCh0ZW1wRG91YmxlID0gTWF0aC5mbG9vcihzdGF0LmN0aW1lLmdldFRpbWUoKSAvIDFlMykpLAogICAgICAgICtNYXRoLmFicyh0ZW1wRG91YmxlKSA+PSAxCiAgICAgICAgICA/IHRlbXBEb3VibGUgPiAwCiAgICAgICAgICAgID8gKE1hdGgubWluKCtNYXRoLmZsb29yKHRlbXBEb3VibGUgLyA0Mjk0OTY3Mjk2KSwgNDI5NDk2NzI5NSkgfCAwKSA+Pj4gMAogICAgICAgICAgICA6IH5+K01hdGguY2VpbCgodGVtcERvdWJsZSAtICsofn50ZW1wRG91YmxlID4+PiAwKSkgLyA0Mjk0OTY3Mjk2KSA+Pj4gMAogICAgICAgICAgOiAwKSwKICAgICAgXSksCiAgICAgICAgKEhFQVAzMlsoYnVmICsgODgpID4+IDJdID0gdGVtcEk2NFswXSksCiAgICAgICAgKEhFQVAzMlsoYnVmICsgOTIpID4+IDJdID0gdGVtcEk2NFsxXSk7CiAgICAgIEhFQVBVMzJbKGJ1ZiArIDk2KSA+PiAyXSA9IDA7CiAgICAgICh0ZW1wSTY0ID0gWwogICAgICAgIHN0YXQuaW5vID4+PiAwLAogICAgICAgICgodGVtcERvdWJsZSA9IHN0YXQuaW5vKSwKICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMQogICAgICAgICAgPyB0ZW1wRG91YmxlID4gMAogICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAKICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NikgPj4+IDAKICAgICAgICAgIDogMCksCiAgICAgIF0pLAogICAgICAgIChIRUFQMzJbKGJ1ZiArIDEwNCkgPj4gMl0gPSB0ZW1wSTY0WzBdKSwKICAgICAgICAoSEVBUDMyWyhidWYgKyAxMDgpID4+IDJdID0gdGVtcEk2NFsxXSk7CiAgICAgIHJldHVybiAwOwogICAgfSwKICAgIGRvTXN5bmMoYWRkciwgc3RyZWFtLCBsZW4sIGZsYWdzLCBvZmZzZXQpIHsKICAgICAgaWYgKCFGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpIHsKICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myk7CiAgICAgIH0KICAgICAgaWYgKGZsYWdzICYgMikgewogICAgICAgIHJldHVybiAwOwogICAgICB9CiAgICAgIGxldCBidWZmZXIgPSBIRUFQVTguc2xpY2UoYWRkciwgYWRkciArIGxlbik7CiAgICAgIEZTLm1zeW5jKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbiwgZmxhZ3MpOwogICAgfSwKICAgIHZhcmFyZ3M6IHVuZGVmaW5lZCwKICAgIGdldCgpIHsKICAgICAgU1lTQ0FMTFMudmFyYXJncyArPSA0OwogICAgICBsZXQgcmV0ID0gSEVBUDMyWyhTWVNDQUxMUy52YXJhcmdzIC0gNCkgPj4gMl07CiAgICAgIHJldHVybiByZXQ7CiAgICB9LAogICAgZ2V0U3RyKHB0cikgewogICAgICBsZXQgcmV0ID0gVVRGOFRvU3RyaW5nKHB0cik7CiAgICAgIHJldHVybiByZXQ7CiAgICB9LAogICAgZ2V0U3RyZWFtRnJvbUZEKGZkKSB7CiAgICAgIGxldCBzdHJlYW0gPSBGUy5nZXRTdHJlYW0oZmQpOwogICAgICBpZiAoIXN0cmVhbSkgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7CiAgICAgIHJldHVybiBzdHJlYW07CiAgICB9LAogIH07CiAgZnVuY3Rpb24gX2Vudmlyb25fZ2V0KF9fZW52aXJvbiwgZW52aXJvbl9idWYpIHsKICAgIGxldCBidWZTaXplID0gMDsKICAgIGdldEVudlN0cmluZ3MoKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHJpbmcsIGkpIHsKICAgICAgbGV0IHB0ciA9IGVudmlyb25fYnVmICsgYnVmU2l6ZTsKICAgICAgSEVBUFUzMlsoX19lbnZpcm9uICsgaSAqIDQpID4+IDJdID0gcHRyOwogICAgICB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyaW5nLCBwdHIpOwogICAgICBidWZTaXplICs9IHN0cmluZy5sZW5ndGggKyAxOwogICAgfSk7CiAgICByZXR1cm4gMDsKICB9CiAgZnVuY3Rpb24gX2Vudmlyb25fc2l6ZXNfZ2V0KHBlbnZpcm9uX2NvdW50LCBwZW52aXJvbl9idWZfc2l6ZSkgewogICAgbGV0IHN0cmluZ3MgPSBnZXRFbnZTdHJpbmdzKCk7CiAgICBIRUFQVTMyW3BlbnZpcm9uX2NvdW50ID4+IDJdID0gc3RyaW5ncy5sZW5ndGg7CiAgICBsZXQgYnVmU2l6ZSA9IDA7CiAgICBzdHJpbmdzLmZvckVhY2goZnVuY3Rpb24gKHN0cmluZykgewogICAgICBidWZTaXplICs9IHN0cmluZy5sZW5ndGggKyAxOwogICAgfSk7CiAgICBIRUFQVTMyW3BlbnZpcm9uX2J1Zl9zaXplID4+IDJdID0gYnVmU2l6ZTsKICAgIHJldHVybiAwOwogIH0KICBmdW5jdGlvbiBfcHJvY19leGl0KGNvZGUpIHsKICAgIEVYSVRTVEFUVVMgPSBjb2RlOwogICAgaWYgKCFrZWVwUnVudGltZUFsaXZlKCkpIHsKICAgICAgaWYgKE1vZHVsZVsib25FeGl0Il0pIE1vZHVsZVsib25FeGl0Il0oY29kZSk7CiAgICAgIEFCT1JUID0gdHJ1ZTsKICAgIH0KICAgIHF1aXRfKGNvZGUsIG5ldyBFeGl0U3RhdHVzKGNvZGUpKTsKICB9CiAgZnVuY3Rpb24gZXhpdEpTKHN0YXR1cywgaW1wbGljaXQpIHsKICAgIEVYSVRTVEFUVVMgPSBzdGF0dXM7CiAgICBfcHJvY19leGl0KHN0YXR1cyk7CiAgfQogIGxldCBfZXhpdCA9IGV4aXRKUzsKICBmdW5jdGlvbiBfZmRfY2xvc2UoZmQpIHsKICAgIHRyeSB7CiAgICAgIGxldCBzdHJlYW0gPSBTWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpOwogICAgICBGUy5jbG9zZShzdHJlYW0pOwogICAgICByZXR1cm4gMDsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgaWYgKHR5cGVvZiBGUyA9PT0gInVuZGVmaW5lZCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpIHRocm93IGU7CiAgICAgIHJldHVybiBlLmVycm5vOwogICAgfQogIH0KICBmdW5jdGlvbiBkb1JlYWR2KHN0cmVhbSwgaW92LCBpb3ZjbnQsIG9mZnNldCkgewogICAgbGV0IHJldCA9IDA7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlvdmNudDsgaSsrKSB7CiAgICAgIGxldCBwdHIgPSBIRUFQVTMyW2lvdiA+PiAyXTsKICAgICAgbGV0IGxlbiA9IEhFQVBVMzJbKGlvdiArIDQpID4+IDJdOwogICAgICBpb3YgKz0gODsKICAgICAgbGV0IGN1cnIgPSBGUy5yZWFkKHN0cmVhbSwgSEVBUDgsIHB0ciwgbGVuLCBvZmZzZXQpOwogICAgICBpZiAoY3VyciA8IDApIHJldHVybiAtMTsKICAgICAgcmV0ICs9IGN1cnI7CiAgICAgIGlmIChjdXJyIDwgbGVuKSBicmVhazsKICAgIH0KICAgIHJldHVybiByZXQ7CiAgfQogIGZ1bmN0aW9uIF9mZF9yZWFkKGZkLCBpb3YsIGlvdmNudCwgcG51bSkgewogICAgdHJ5IHsKICAgICAgbGV0IHN0cmVhbSA9IFNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7CiAgICAgIGxldCBudW0gPSBkb1JlYWR2KHN0cmVhbSwgaW92LCBpb3ZjbnQpOwogICAgICBIRUFQVTMyW3BudW0gPj4gMl0gPSBudW07CiAgICAgIHJldHVybiAwOwogICAgfSBjYXRjaCAoZSkgewogICAgICBpZiAodHlwZW9mIEZTID09PSAidW5kZWZpbmVkIiB8fCAhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSkgdGhyb3cgZTsKICAgICAgcmV0dXJuIGUuZXJybm87CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbnZlcnRJMzJQYWlyVG9JNTNDaGVja2VkKGxvLCBoaSkgewogICAgcmV0dXJuIChoaSArIDIwOTcxNTIpID4+PiAwIDwgNDE5NDMwNSAtICEhbG8gPyAobG8gPj4+IDApICsgaGkgKiA0Mjk0OTY3Mjk2IDogTmFOOwogIH0KICBmdW5jdGlvbiBfZmRfc2VlayhmZCwgb2Zmc2V0X2xvdywgb2Zmc2V0X2hpZ2gsIHdoZW5jZSwgbmV3T2Zmc2V0KSB7CiAgICB0cnkgewogICAgICBsZXQgb2Zmc2V0ID0gY29udmVydEkzMlBhaXJUb0k1M0NoZWNrZWQob2Zmc2V0X2xvdywgb2Zmc2V0X2hpZ2gpOwogICAgICBpZiAoaXNOYU4ob2Zmc2V0KSkgcmV0dXJuIDYxOwogICAgICBsZXQgc3RyZWFtID0gU1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTsKICAgICAgRlMubGxzZWVrKHN0cmVhbSwgb2Zmc2V0LCB3aGVuY2UpOwogICAgICAodGVtcEk2NCA9IFsKICAgICAgICBzdHJlYW0ucG9zaXRpb24gPj4+IDAsCiAgICAgICAgKCh0ZW1wRG91YmxlID0gc3RyZWFtLnBvc2l0aW9uKSwKICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMQogICAgICAgICAgPyB0ZW1wRG91YmxlID4gMAogICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAKICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NikgPj4+IDAKICAgICAgICAgIDogMCksCiAgICAgIF0pLAogICAgICAgIChIRUFQMzJbbmV3T2Zmc2V0ID4+IDJdID0gdGVtcEk2NFswXSksCiAgICAgICAgKEhFQVAzMlsobmV3T2Zmc2V0ICsgNCkgPj4gMl0gPSB0ZW1wSTY0WzFdKTsKICAgICAgaWYgKHN0cmVhbS5nZXRkZW50cyAmJiBvZmZzZXQgPT09IDAgJiYgd2hlbmNlID09PSAwKSBzdHJlYW0uZ2V0ZGVudHMgPSBudWxsOwogICAgICByZXR1cm4gMDsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgaWYgKHR5cGVvZiBGUyA9PT0gInVuZGVmaW5lZCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpIHRocm93IGU7CiAgICAgIHJldHVybiBlLmVycm5vOwogICAgfQogIH0KICBmdW5jdGlvbiBkb1dyaXRldihzdHJlYW0sIGlvdiwgaW92Y250LCBvZmZzZXQpIHsKICAgIGxldCByZXQgPSAwOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpb3ZjbnQ7IGkrKykgewogICAgICBsZXQgcHRyID0gSEVBUFUzMltpb3YgPj4gMl07CiAgICAgIGxldCBsZW4gPSBIRUFQVTMyWyhpb3YgKyA0KSA+PiAyXTsKICAgICAgaW92ICs9IDg7CiAgICAgIGxldCBjdXJyID0gRlMud3JpdGUoc3RyZWFtLCBIRUFQOCwgcHRyLCBsZW4sIG9mZnNldCk7CiAgICAgIGlmIChjdXJyIDwgMCkgcmV0dXJuIC0xOwogICAgICByZXQgKz0gY3VycjsKICAgIH0KICAgIHJldHVybiByZXQ7CiAgfQogIGZ1bmN0aW9uIF9mZF93cml0ZShmZCwgaW92LCBpb3ZjbnQsIHBudW0pIHsKICAgIHRyeSB7CiAgICAgIGxldCBzdHJlYW0gPSBTWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpOwogICAgICBsZXQgbnVtID0gZG9Xcml0ZXYoc3RyZWFtLCBpb3YsIGlvdmNudCk7CiAgICAgIEhFQVBVMzJbcG51bSA+PiAyXSA9IG51bTsKICAgICAgcmV0dXJuIDA7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGlmICh0eXBlb2YgRlMgPT09ICJ1bmRlZmluZWQiIHx8ICEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKSB0aHJvdyBlOwogICAgICByZXR1cm4gZS5lcnJubzsKICAgIH0KICB9CiAgZnVuY3Rpb24gX3JldHVybl9zdHJpbmcoZGF0YSwgbGVuZ3RoKSB7CiAgICBNb2R1bGUuX3JldHVybl9zdHJpbmdfY2FsbGJhY2soZGF0YSwgbGVuZ3RoKTsKICB9CiAgZnVuY3Rpb24gX19pc0xlYXBZZWFyKHllYXIpIHsKICAgIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiAoeWVhciAlIDEwMCAhPT0gMCB8fCB5ZWFyICUgNDAwID09PSAwKTsKICB9CiAgZnVuY3Rpb24gX19hcnJheVN1bShhcnJheSwgaW5kZXgpIHsKICAgIGxldCBzdW0gPSAwOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gaW5kZXg7IHN1bSArPSBhcnJheVtpKytdKSB7fQogICAgcmV0dXJuIHN1bTsKICB9CiAgbGV0IF9fTU9OVEhfREFZU19MRUFQID0gWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdOwogIGxldCBfX01PTlRIX0RBWVNfUkVHVUxBUiA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTsKICBmdW5jdGlvbiBfX2FkZERheXMoZGF0ZSwgZGF5cykgewogICAgbGV0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7CiAgICB3aGlsZSAoZGF5cyA+IDApIHsKICAgICAgbGV0IGxlYXAgPSBfX2lzTGVhcFllYXIobmV3RGF0ZS5nZXRGdWxsWWVhcigpKTsKICAgICAgbGV0IGN1cnJlbnRNb250aCA9IG5ld0RhdGUuZ2V0TW9udGgoKTsKICAgICAgbGV0IGRheXNJbkN1cnJlbnRNb250aCA9IChsZWFwID8gX19NT05USF9EQVlTX0xFQVAgOiBfX01PTlRIX0RBWVNfUkVHVUxBUilbY3VycmVudE1vbnRoXTsKICAgICAgaWYgKGRheXMgPiBkYXlzSW5DdXJyZW50TW9udGggLSBuZXdEYXRlLmdldERhdGUoKSkgewogICAgICAgIGRheXMgLT0gZGF5c0luQ3VycmVudE1vbnRoIC0gbmV3RGF0ZS5nZXREYXRlKCkgKyAxOwogICAgICAgIG5ld0RhdGUuc2V0RGF0ZSgxKTsKICAgICAgICBpZiAoY3VycmVudE1vbnRoIDwgMTEpIHsKICAgICAgICAgIG5ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoICsgMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld0RhdGUuc2V0TW9udGgoMCk7CiAgICAgICAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSArIDEpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkgKyBkYXlzKTsKICAgICAgICByZXR1cm4gbmV3RGF0ZTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIG5ld0RhdGU7CiAgfQogIGZ1bmN0aW9uIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheSwgYnVmZmVyKSB7CiAgICBIRUFQOC5zZXQoYXJyYXksIGJ1ZmZlcik7CiAgfQogIGZ1bmN0aW9uIF9zdHJmdGltZShzLCBtYXhzaXplLCBmb3JtYXQsIHRtKSB7CiAgICBsZXQgdG1fem9uZSA9IEhFQVAzMlsodG0gKyA0MCkgPj4gMl07CiAgICBsZXQgZGF0ZSA9IHsKICAgICAgdG1fc2VjOiBIRUFQMzJbdG0gPj4gMl0sCiAgICAgIHRtX21pbjogSEVBUDMyWyh0bSArIDQpID4+IDJdLAogICAgICB0bV9ob3VyOiBIRUFQMzJbKHRtICsgOCkgPj4gMl0sCiAgICAgIHRtX21kYXk6IEhFQVAzMlsodG0gKyAxMikgPj4gMl0sCiAgICAgIHRtX21vbjogSEVBUDMyWyh0bSArIDE2KSA+PiAyXSwKICAgICAgdG1feWVhcjogSEVBUDMyWyh0bSArIDIwKSA+PiAyXSwKICAgICAgdG1fd2RheTogSEVBUDMyWyh0bSArIDI0KSA+PiAyXSwKICAgICAgdG1feWRheTogSEVBUDMyWyh0bSArIDI4KSA+PiAyXSwKICAgICAgdG1faXNkc3Q6IEhFQVAzMlsodG0gKyAzMikgPj4gMl0sCiAgICAgIHRtX2dtdG9mZjogSEVBUDMyWyh0bSArIDM2KSA+PiAyXSwKICAgICAgdG1fem9uZTogdG1fem9uZSA/IFVURjhUb1N0cmluZyh0bV96b25lKSA6ICIiLAogICAgfTsKICAgIGxldCBwYXR0ZXJuID0gVVRGOFRvU3RyaW5nKGZvcm1hdCk7CiAgICBsZXQgRVhQQU5TSU9OX1JVTEVTXzEgPSB7CiAgICAgICIlYyI6ICIlYSAlYiAlZCAlSDolTTolUyAlWSIsCiAgICAgICIlRCI6ICIlbS8lZC8leSIsCiAgICAgICIlRiI6ICIlWS0lbS0lZCIsCiAgICAgICIlaCI6ICIlYiIsCiAgICAgICIlciI6ICIlSTolTTolUyAlcCIsCiAgICAgICIlUiI6ICIlSDolTSIsCiAgICAgICIlVCI6ICIlSDolTTolUyIsCiAgICAgICIleCI6ICIlbS8lZC8leSIsCiAgICAgICIlWCI6ICIlSDolTTolUyIsCiAgICAgICIlRWMiOiAiJWMiLAogICAgICAiJUVDIjogIiVDIiwKICAgICAgIiVFeCI6ICIlbS8lZC8leSIsCiAgICAgICIlRVgiOiAiJUg6JU06JVMiLAogICAgICAiJUV5IjogIiV5IiwKICAgICAgIiVFWSI6ICIlWSIsCiAgICAgICIlT2QiOiAiJWQiLAogICAgICAiJU9lIjogIiVlIiwKICAgICAgIiVPSCI6ICIlSCIsCiAgICAgICIlT0kiOiAiJUkiLAogICAgICAiJU9tIjogIiVtIiwKICAgICAgIiVPTSI6ICIlTSIsCiAgICAgICIlT1MiOiAiJVMiLAogICAgICAiJU91IjogIiV1IiwKICAgICAgIiVPVSI6ICIlVSIsCiAgICAgICIlT1YiOiAiJVYiLAogICAgICAiJU93IjogIiV3IiwKICAgICAgIiVPVyI6ICIlVyIsCiAgICAgICIlT3kiOiAiJXkiLAogICAgfTsKICAgIGZvciAodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpIHsKICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZShuZXcgUmVnRXhwKHJ1bGUsICJnIiksIEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKTsKICAgIH0KICAgIGxldCBXRUVLREFZUyA9IFsiU3VuZGF5IiwgIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsICJUaHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiXTsKICAgIGxldCBNT05USFMgPSBbCiAgICAgICJKYW51YXJ5IiwKICAgICAgIkZlYnJ1YXJ5IiwKICAgICAgIk1hcmNoIiwKICAgICAgIkFwcmlsIiwKICAgICAgIk1heSIsCiAgICAgICJKdW5lIiwKICAgICAgIkp1bHkiLAogICAgICAiQXVndXN0IiwKICAgICAgIlNlcHRlbWJlciIsCiAgICAgICJPY3RvYmVyIiwKICAgICAgIk5vdmVtYmVyIiwKICAgICAgIkRlY2VtYmVyIiwKICAgIF07CiAgICBmdW5jdGlvbiBsZWFkaW5nU29tZXRoaW5nKHZhbHVlLCBkaWdpdHMsIGNoYXJhY3RlcikgewogICAgICBsZXQgc3RyID0gdHlwZW9mIHZhbHVlID09PSAibnVtYmVyIiA/IHZhbHVlLnRvU3RyaW5nKCkgOiB2YWx1ZSB8fCAiIjsKICAgICAgd2hpbGUgKHN0ci5sZW5ndGggPCBkaWdpdHMpIHsKICAgICAgICBzdHIgPSBjaGFyYWN0ZXJbMF0gKyBzdHI7CiAgICAgIH0KICAgICAgcmV0dXJuIHN0cjsKICAgIH0KICAgIGZ1bmN0aW9uIGxlYWRpbmdOdWxscyh2YWx1ZSwgZGlnaXRzKSB7CiAgICAgIHJldHVybiBsZWFkaW5nU29tZXRoaW5nKHZhbHVlLCBkaWdpdHMsICIwIik7CiAgICB9CiAgICBmdW5jdGlvbiBjb21wYXJlQnlEYXkoZGF0ZTEsIGRhdGUyKSB7CiAgICAgIGZ1bmN0aW9uIHNnbih2YWx1ZSkgewogICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyAtMSA6IHZhbHVlID4gMCA/IDEgOiAwOwogICAgICB9CiAgICAgIGxldCBjb21wYXJlOwogICAgICBpZiAoKGNvbXBhcmUgPSBzZ24oZGF0ZTEuZ2V0RnVsbFllYXIoKSAtIGRhdGUyLmdldEZ1bGxZZWFyKCkpKSA9PT0gMCkgewogICAgICAgIGlmICgoY29tcGFyZSA9IHNnbihkYXRlMS5nZXRNb250aCgpIC0gZGF0ZTIuZ2V0TW9udGgoKSkpID09PSAwKSB7CiAgICAgICAgICBjb21wYXJlID0gc2duKGRhdGUxLmdldERhdGUoKSAtIGRhdGUyLmdldERhdGUoKSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBjb21wYXJlOwogICAgfQogICAgZnVuY3Rpb24gZ2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aCkgewogICAgICBzd2l0Y2ggKGphbkZvdXJ0aC5nZXREYXkoKSkgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSAtIDEsIDExLCAyOSk7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGphbkZvdXJ0aDsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICByZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksIDAsIDMpOwogICAgICAgIGNhc2UgMzoKICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwgMCwgMik7CiAgICAgICAgY2FzZSA0OgogICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLCAwLCAxKTsKICAgICAgICBjYXNlIDU6CiAgICAgICAgICByZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCkgLSAxLCAxMSwgMzEpOwogICAgICAgIGNhc2UgNjoKICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSAtIDEsIDExLCAzMCk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkgewogICAgICBsZXQgdGhpc0RhdGUgPSBfX2FkZERheXMobmV3IERhdGUoZGF0ZS50bV95ZWFyICsgMTkwMCwgMCwgMSksIGRhdGUudG1feWRheSk7CiAgICAgIGxldCBqYW5Gb3VydGhUaGlzWWVhciA9IG5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCksIDAsIDQpOwogICAgICBsZXQgamFuRm91cnRoTmV4dFllYXIgPSBuZXcgRGF0ZSh0aGlzRGF0ZS5nZXRGdWxsWWVhcigpICsgMSwgMCwgNCk7CiAgICAgIGxldCBmaXJzdFdlZWtTdGFydFRoaXNZZWFyID0gZ2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTsKICAgICAgbGV0IGZpcnN0V2Vla1N0YXJ0TmV4dFllYXIgPSBnZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpOwogICAgICBpZiAoY29tcGFyZUJ5RGF5KGZpcnN0V2Vla1N0YXJ0VGhpc1llYXIsIHRoaXNEYXRlKSA8PSAwKSB7CiAgICAgICAgaWYgKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydE5leHRZZWFyLCB0aGlzRGF0ZSkgPD0gMCkgewogICAgICAgICAgcmV0dXJuIHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkgKyAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpc0RhdGUuZ2V0RnVsbFllYXIoKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpc0RhdGUuZ2V0RnVsbFllYXIoKSAtIDE7CiAgICB9CiAgICBsZXQgRVhQQU5TSU9OX1JVTEVTXzIgPSB7CiAgICAgICIlYSIoZGF0ZSkgewogICAgICAgIHJldHVybiBXRUVLREFZU1tkYXRlLnRtX3dkYXldLnN1YnN0cmluZygwLCAzKTsKICAgICAgfSwKICAgICAgIiVBIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIFdFRUtEQVlTW2RhdGUudG1fd2RheV07CiAgICAgIH0sCiAgICAgICIlYiIoZGF0ZSkgewogICAgICAgIHJldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLCAzKTsKICAgICAgfSwKICAgICAgIiVCIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIE1PTlRIU1tkYXRlLnRtX21vbl07CiAgICAgIH0sCiAgICAgICIlQyIoZGF0ZSkgewogICAgICAgIGxldCB5ZWFyID0gZGF0ZS50bV95ZWFyICsgMTkwMDsKICAgICAgICByZXR1cm4gbGVhZGluZ051bGxzKCh5ZWFyIC8gMTAwKSB8IDAsIDIpOwogICAgICB9LAogICAgICAiJWQiKGRhdGUpIHsKICAgICAgICByZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fbWRheSwgMik7CiAgICAgIH0sCiAgICAgICIlZSIoZGF0ZSkgewogICAgICAgIHJldHVybiBsZWFkaW5nU29tZXRoaW5nKGRhdGUudG1fbWRheSwgMiwgIiAiKTsKICAgICAgfSwKICAgICAgIiVnIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMik7CiAgICAgIH0sCiAgICAgICIlRyIoZGF0ZSkgewogICAgICAgIHJldHVybiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpOwogICAgICB9LAogICAgICAiJUgiKGRhdGUpIHsKICAgICAgICByZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1faG91ciwgMik7CiAgICAgIH0sCiAgICAgICIlSSIoZGF0ZSkgewogICAgICAgIGxldCB0d2VsdmVIb3VyID0gZGF0ZS50bV9ob3VyOwogICAgICAgIGlmICh0d2VsdmVIb3VyID09IDApIHR3ZWx2ZUhvdXIgPSAxMjsKICAgICAgICBlbHNlIGlmICh0d2VsdmVIb3VyID4gMTIpIHR3ZWx2ZUhvdXIgLT0gMTI7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyh0d2VsdmVIb3VyLCAyKTsKICAgICAgfSwKICAgICAgIiVqIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscygKICAgICAgICAgIGRhdGUudG1fbWRheSArCiAgICAgICAgICAgIF9fYXJyYXlTdW0oCiAgICAgICAgICAgICAgX19pc0xlYXBZZWFyKGRhdGUudG1feWVhciArIDE5MDApID8gX19NT05USF9EQVlTX0xFQVAgOiBfX01PTlRIX0RBWVNfUkVHVUxBUiwKICAgICAgICAgICAgICBkYXRlLnRtX21vbiAtIDEsCiAgICAgICAgICAgICksCiAgICAgICAgICAzLAogICAgICAgICk7CiAgICAgIH0sCiAgICAgICIlbSIoZGF0ZSkgewogICAgICAgIHJldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tb24gKyAxLCAyKTsKICAgICAgfSwKICAgICAgIiVNIihkYXRlKSB7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21pbiwgMik7CiAgICAgIH0sCiAgICAgICIlbiIoKSB7CiAgICAgICAgcmV0dXJuICJcbiI7CiAgICAgIH0sCiAgICAgICIlcCIoZGF0ZSkgewogICAgICAgIGlmIChkYXRlLnRtX2hvdXIgPj0gMCAmJiBkYXRlLnRtX2hvdXIgPCAxMikgewogICAgICAgICAgcmV0dXJuICJBTSI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAiUE0iOwogICAgICB9LAogICAgICAiJVMiKGRhdGUpIHsKICAgICAgICByZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fc2VjLCAyKTsKICAgICAgfSwKICAgICAgIiV0IigpIHsKICAgICAgICByZXR1cm4gIlx0IjsKICAgICAgfSwKICAgICAgIiV1IihkYXRlKSB7CiAgICAgICAgcmV0dXJuIGRhdGUudG1fd2RheSB8fCA3OwogICAgICB9LAogICAgICAiJVUiKGRhdGUpIHsKICAgICAgICBsZXQgZGF5cyA9IGRhdGUudG1feWRheSArIDcgLSBkYXRlLnRtX3dkYXk7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmZsb29yKGRheXMgLyA3KSwgMik7CiAgICAgIH0sCiAgICAgICIlViIoZGF0ZSkgewogICAgICAgIGxldCB2YWwgPSBNYXRoLmZsb29yKChkYXRlLnRtX3lkYXkgKyA3IC0gKChkYXRlLnRtX3dkYXkgKyA2KSAlIDcpKSAvIDcpOwogICAgICAgIGlmICgoZGF0ZS50bV93ZGF5ICsgMzcxIC0gZGF0ZS50bV95ZGF5IC0gMikgJSA3IDw9IDIpIHsKICAgICAgICAgIHZhbCsrOwogICAgICAgIH0KICAgICAgICBpZiAoIXZhbCkgewogICAgICAgICAgdmFsID0gNTI7CiAgICAgICAgICBsZXQgZGVjMzEgPSAoZGF0ZS50bV93ZGF5ICsgNyAtIGRhdGUudG1feWRheSAtIDEpICUgNzsKICAgICAgICAgIGlmIChkZWMzMSA9PSA0IHx8IChkZWMzMSA9PSA1ICYmIF9faXNMZWFwWWVhcigoZGF0ZS50bV95ZWFyICUgNDAwKSAtIDEpKSkgewogICAgICAgICAgICB2YWwrKzsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHZhbCA9PSA1MykgewogICAgICAgICAgbGV0IGphbjEgPSAoZGF0ZS50bV93ZGF5ICsgMzcxIC0gZGF0ZS50bV95ZGF5KSAlIDc7CiAgICAgICAgICBpZiAoamFuMSAhPSA0ICYmIChqYW4xICE9IDMgfHwgIV9faXNMZWFwWWVhcihkYXRlLnRtX3llYXIpKSkgdmFsID0gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyh2YWwsIDIpOwogICAgICB9LAogICAgICAiJXciKGRhdGUpIHsKICAgICAgICByZXR1cm4gZGF0ZS50bV93ZGF5OwogICAgICB9LAogICAgICAiJVciKGRhdGUpIHsKICAgICAgICBsZXQgZGF5cyA9IGRhdGUudG1feWRheSArIDcgLSAoKGRhdGUudG1fd2RheSArIDYpICUgNyk7CiAgICAgICAgcmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmZsb29yKGRheXMgLyA3KSwgMik7CiAgICAgIH0sCiAgICAgICIleSIoZGF0ZSkgewogICAgICAgIHJldHVybiAoZGF0ZS50bV95ZWFyICsgMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMik7CiAgICAgIH0sCiAgICAgICIlWSIoZGF0ZSkgewogICAgICAgIHJldHVybiBkYXRlLnRtX3llYXIgKyAxOTAwOwogICAgICB9LAogICAgICAiJXoiKGRhdGUpIHsKICAgICAgICBsZXQgb2ZmID0gZGF0ZS50bV9nbXRvZmY7CiAgICAgICAgbGV0IGFoZWFkID0gb2ZmID49IDA7CiAgICAgICAgb2ZmID0gTWF0aC5hYnMob2ZmKSAvIDYwOwogICAgICAgIG9mZiA9IChvZmYgLyA2MCkgKiAxMDAgKyAob2ZmICUgNjApOwogICAgICAgIHJldHVybiAoYWhlYWQgPyAiKyIgOiAiLSIpICsgU3RyaW5nKCIwMDAwIiArIG9mZikuc2xpY2UoLTQpOwogICAgICB9LAogICAgICAiJVoiKGRhdGUpIHsKICAgICAgICByZXR1cm4gZGF0ZS50bV96b25lOwogICAgICB9LAogICAgICAiJSUiKCkgewogICAgICAgIHJldHVybiAiJSI7CiAgICAgIH0sCiAgICB9OwogICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvJSUvZywgIlwwXDAiKTsKICAgIGZvciAodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzIpIHsKICAgICAgaWYgKHBhdHRlcm4uaW5jbHVkZXMocnVsZSkpIHsKICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwgImciKSwgRVhQQU5TSU9OX1JVTEVTXzJbcnVsZV0oZGF0ZSkpOwogICAgICB9CiAgICB9CiAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cMFwwL2csICIlIik7CiAgICBsZXQgYnl0ZXMgPSBpbnRBcnJheUZyb21TdHJpbmcocGF0dGVybiwgZmFsc2UpOwogICAgaWYgKGJ5dGVzLmxlbmd0aCA+IG1heHNpemUpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICB3cml0ZUFycmF5VG9NZW1vcnkoYnl0ZXMsIHMpOwogICAgcmV0dXJuIGJ5dGVzLmxlbmd0aCAtIDE7CiAgfQogIGZ1bmN0aW9uIF9zdHJmdGltZV9sKHMsIG1heHNpemUsIGZvcm1hdCwgdG0sIGxvYykgewogICAgcmV0dXJuIF9zdHJmdGltZShzLCBtYXhzaXplLCBmb3JtYXQsIHRtKTsKICB9CiAgbGV0IEZTTm9kZSA9IGZ1bmN0aW9uIChwYXJlbnQsIG5hbWUsIG1vZGUsIHJkZXYpIHsKICAgIGlmICghcGFyZW50KSB7CiAgICAgIHBhcmVudCA9IHRoaXM7CiAgICB9CiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKICAgIHRoaXMubW91bnQgPSBwYXJlbnQubW91bnQ7CiAgICB0aGlzLm1vdW50ZWQgPSBudWxsOwogICAgdGhpcy5pZCA9IEZTLm5leHRJbm9kZSsrOwogICAgdGhpcy5uYW1lID0gbmFtZTsKICAgIHRoaXMubW9kZSA9IG1vZGU7CiAgICB0aGlzLm5vZGVfb3BzID0ge307CiAgICB0aGlzLnN0cmVhbV9vcHMgPSB7fTsKICAgIHRoaXMucmRldiA9IHJkZXY7CiAgfTsKICBsZXQgcmVhZE1vZGUgPSAyOTIgfCA3MzsKICBsZXQgd3JpdGVNb2RlID0gMTQ2OwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZTTm9kZS5wcm90b3R5cGUsIHsKICAgIHJlYWQ6IHsKICAgICAgZ2V0KCkgewogICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgcmVhZE1vZGUpID09PSByZWFkTW9kZTsKICAgICAgfSwKICAgICAgc2V0KHZhbCkgewogICAgICAgIHZhbCA/ICh0aGlzLm1vZGUgfD0gcmVhZE1vZGUpIDogKHRoaXMubW9kZSAmPSB+cmVhZE1vZGUpOwogICAgICB9LAogICAgfSwKICAgIHdyaXRlOiB7CiAgICAgIGdldCgpIHsKICAgICAgICByZXR1cm4gKHRoaXMubW9kZSAmIHdyaXRlTW9kZSkgPT09IHdyaXRlTW9kZTsKICAgICAgfSwKICAgICAgc2V0KHZhbCkgewogICAgICAgIHZhbCA/ICh0aGlzLm1vZGUgfD0gd3JpdGVNb2RlKSA6ICh0aGlzLm1vZGUgJj0gfndyaXRlTW9kZSk7CiAgICAgIH0sCiAgICB9LAogICAgaXNGb2xkZXI6IHsKICAgICAgZ2V0KCkgewogICAgICAgIHJldHVybiBGUy5pc0Rpcih0aGlzLm1vZGUpOwogICAgICB9LAogICAgfSwKICAgIGlzRGV2aWNlOiB7CiAgICAgIGdldCgpIHsKICAgICAgICByZXR1cm4gRlMuaXNDaHJkZXYodGhpcy5tb2RlKTsKICAgICAgfSwKICAgIH0sCiAgfSk7CiAgRlMuRlNOb2RlID0gRlNOb2RlOwogIEZTLnN0YXRpY0luaXQoKTsKICB2YXIgYXNtTGlicmFyeUFyZyA9IHsKICAgIGE6IF9fX2Fzc2VydF9mYWlsLAogICAgZjogX19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiwKICAgIGU6IF9fX2N4YV90aHJvdywKICAgIGI6IF9hYm9ydCwKICAgIGk6IF9lbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwLAogICAgbDogX2Vudmlyb25fZ2V0LAogICAgbTogX2Vudmlyb25fc2l6ZXNfZ2V0LAogICAgZDogX2V4aXQsCiAgICBnOiBfZmRfY2xvc2UsCiAgICBoOiBfZmRfcmVhZCwKICAgIGs6IF9mZF9zZWVrLAogICAgajogX2ZkX3dyaXRlLAogICAgbjogX3JldHVybl9zdHJpbmcsCiAgICBjOiBfc3RyZnRpbWVfbCwKICB9OwogIGxldCBhc20gPSBjcmVhdGVXYXNtKCk7CiAgdmFyIF9fX3dhc21fY2FsbF9jdG9ycyA9IChNb2R1bGVbIl9fX3dhc21fY2FsbF9jdG9ycyJdID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIChfX193YXNtX2NhbGxfY3RvcnMgPSBNb2R1bGVbIl9fX3dhc21fY2FsbF9jdG9ycyJdID0gTW9kdWxlWyJhc20iXVsicCJdKS5hcHBseSgKICAgICAgbnVsbCwKICAgICAgYXJndW1lbnRzLAogICAgKTsKICB9KTsKICB2YXIgX3Rlc3QgPSAoTW9kdWxlWyJfdGVzdCJdID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIChfdGVzdCA9IE1vZHVsZVsiX3Rlc3QiXSA9IE1vZHVsZVsiYXNtIl1bInEiXSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICB9KTsKICB2YXIgX3NwaXJ2X3RvX3dnc2wgPSAoTW9kdWxlWyJfc3BpcnZfdG9fd2dzbCJdID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIChfc3BpcnZfdG9fd2dzbCA9IE1vZHVsZVsiX3NwaXJ2X3RvX3dnc2wiXSA9IE1vZHVsZVsiYXNtIl1bInIiXSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICB9KTsKICB2YXIgX21hbGxvYyA9IChNb2R1bGVbIl9tYWxsb2MiXSA9IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiAoX21hbGxvYyA9IE1vZHVsZVsiX21hbGxvYyJdID0gTW9kdWxlWyJhc20iXVsidCJdKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogIH0pOwogIHZhciBfZnJlZSA9IChNb2R1bGVbIl9mcmVlIl0gPSBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gKF9mcmVlID0gTW9kdWxlWyJfZnJlZSJdID0gTW9kdWxlWyJhc20iXVsidSJdKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogIH0pOwogIHZhciBfX19jeGFfaXNfcG9pbnRlcl90eXBlID0gKE1vZHVsZVsiX19fY3hhX2lzX3BvaW50ZXJfdHlwZSJdID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIChfX19jeGFfaXNfcG9pbnRlcl90eXBlID0gTW9kdWxlWyJfX19jeGFfaXNfcG9pbnRlcl90eXBlIl0gPSBNb2R1bGVbImFzbSJdWyJ2Il0pLmFwcGx5KAogICAgICBudWxsLAogICAgICBhcmd1bWVudHMsCiAgICApOwogIH0pOwogIGxldCBjYWxsZWRSdW47CiAgZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gZnVuY3Rpb24gcnVuQ2FsbGVyKCkgewogICAgaWYgKCFjYWxsZWRSdW4pIHJ1bigpOwogICAgaWYgKCFjYWxsZWRSdW4pIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IHJ1bkNhbGxlcjsKICB9OwogIGZ1bmN0aW9uIHJ1bihhcmdzKSB7CiAgICBhcmdzID0gYXJncyB8fCBhcmd1bWVudHNfOwogICAgaWYgKHJ1bkRlcGVuZGVuY2llcyA+IDApIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgcHJlUnVuKCk7CiAgICBpZiAocnVuRGVwZW5kZW5jaWVzID4gMCkgewogICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBkb1J1bigpIHsKICAgICAgaWYgKGNhbGxlZFJ1bikgcmV0dXJuOwogICAgICBjYWxsZWRSdW4gPSB0cnVlOwogICAgICBNb2R1bGVbImNhbGxlZFJ1biJdID0gdHJ1ZTsKICAgICAgaWYgKEFCT1JUKSByZXR1cm47CiAgICAgIGluaXRSdW50aW1lKCk7CiAgICAgIGlmIChNb2R1bGVbIm9uUnVudGltZUluaXRpYWxpemVkIl0pIE1vZHVsZVsib25SdW50aW1lSW5pdGlhbGl6ZWQiXSgpOwogICAgICBwb3N0UnVuKCk7CiAgICB9CiAgICBpZiAoTW9kdWxlWyJzZXRTdGF0dXMiXSkgewogICAgICBNb2R1bGVbInNldFN0YXR1cyJdKCJSdW5uaW5nLi4uIik7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgTW9kdWxlWyJzZXRTdGF0dXMiXSgiIik7CiAgICAgICAgfSwgMSk7CiAgICAgICAgZG9SdW4oKTsKICAgICAgfSwgMSk7CiAgICB9IGVsc2UgewogICAgICBkb1J1bigpOwogICAgfQogIH0KICBpZiAoTW9kdWxlWyJwcmVJbml0Il0pIHsKICAgIGlmICh0eXBlb2YgTW9kdWxlWyJwcmVJbml0Il0gPT09ICJmdW5jdGlvbiIpIE1vZHVsZVsicHJlSW5pdCJdID0gW01vZHVsZVsicHJlSW5pdCJdXTsKICAgIHdoaWxlIChNb2R1bGVbInByZUluaXQiXS5sZW5ndGggPiAwKSB7CiAgICAgIE1vZHVsZVsicHJlSW5pdCJdLnBvcCgpKCk7CiAgICB9CiAgfQogIHJ1bigpOwogIHJldHVybiBNb2R1bGU7Cn07CihmdW5jdGlvbiB0cnlUb0V4cG9ydChyb290LCBmYWN0b3J5KSB7CiAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAib2JqZWN0IiAmJiB0eXBlb2YgbW9kdWxlID09PSAib2JqZWN0IikgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7CiAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kKSBkZWZpbmUoInR3Z3NsIiwgW10sIGZhY3RvcnkpOwogIGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAib2JqZWN0IikgZXhwb3J0c1sidHdnc2wiXSA9IGZhY3RvcnkoKTsKICBlbHNlIHJvb3RbInR3Z3NsIl0gPSBmYWN0b3J5KCk7Cn0pKHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHRoaXMsICgpID0+IHsKICBjb25zdCBpbml0aWFsaXplID0gKHdhc21QYXRoKSA9PiB7CiAgICB3YXNtUGF0aCA9IHdhc21QYXRoIHx8ICJ0d2dzbC53YXNtIjsKICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICBNb2R1bGUoewogICAgICAgIGxvY2F0ZUZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gd2FzbVBhdGg7CiAgICAgICAgfSwKICAgICAgICBvblJ1bnRpbWVJbml0aWFsaXplZCgpIHsKICAgICAgICAgIGxldCB0d2dzbCA9IHRoaXM7CiAgICAgICAgICBsZXQgd2dzbCA9ICIiOwogICAgICAgICAgbGV0IHRleHREZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7CiAgICAgICAgICBsZXQgY29udmVydFNwaXJWMldHU0wgPSAoY29kZSkgPT4gewogICAgICAgICAgICBpZiAoIXR3Z3NsLl9yZXR1cm5fc3RyaW5nX2NhbGxiYWNrKSB7CiAgICAgICAgICAgICAgdHdnc2wuX3JldHVybl9zdHJpbmdfY2FsbGJhY2sgPSAoZGF0YSwgbGVuZ3RoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OENsYW1wZWRBcnJheSh0d2dzbC5IRUFQVTguc3ViYXJyYXkoZGF0YSwgZGF0YSArIGxlbmd0aCkpOwogICAgICAgICAgICAgICAgd2dzbCA9IHRleHREZWNvZGVyLmRlY29kZShieXRlcyk7CiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgYWRkciA9IHR3Z3NsLl9tYWxsb2MoY29kZS5ieXRlTGVuZ3RoKTsKICAgICAgICAgICAgdHdnc2wuSEVBUFUzMi5zZXQoY29kZSwgYWRkciAvIDQpOwogICAgICAgICAgICB0d2dzbC5fc3BpcnZfdG9fd2dzbChhZGRyLCBjb2RlLmJ5dGVMZW5ndGgpOwogICAgICAgICAgICB0d2dzbC5fZnJlZShhZGRyKTsKICAgICAgICAgICAgcmV0dXJuIHdnc2w7CiAgICAgICAgICB9OwogICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgIGNvbnZlcnRTcGlyVjJXR1NMLAogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgfSk7CiAgICB9KTsKICB9OwogIGxldCBpbnN0YW5jZTsKICByZXR1cm4gKHdhc21QYXRoKSA9PiB7CiAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgIGluc3RhbmNlID0gaW5pdGlhbGl6ZSh3YXNtUGF0aCk7CiAgICB9CiAgICByZXR1cm4gaW5zdGFuY2U7CiAgfTsKfSk7Cg==", "import {\n FullScreenMMLScene,\n MMLNetworkSource,\n NetworkedDOMWebsocketStatus,\n NetworkedDOMWebsocketStatusToString,\n parseColorAttribute,\n StatusUI,\n} from \"@mml-io/mml-web\";\nimport {\n PlayCanvasDragFlyCameraControls,\n PlayCanvasOrbitCameraControls,\n StandalonePlayCanvasAdapter,\n StandalonePlayCanvasAdapterControlsType,\n} from \"@mml-io/mml-web-playcanvas-standalone\";\nimport * as playcanvas from \"playcanvas\";\n\nimport { calculateContentBounds } from \"./calculateContentBounds\";\nimport { envMaps } from \"./env-maps\";\nimport { FormIteration } from \"./FormIteration\";\nimport { MMLSourceDefinition } from \"./MMLSourceDefinition\";\nimport { parseXYZ } from \"./parseXYZ\";\nimport { setDebugGlobals } from \"./setDebugGlobals\";\nimport {\n ambientLightColorField,\n ambientLightField,\n backgroundColorField,\n cameraFitContents,\n cameraFovField,\n cameraLookAtField,\n cameraModeField,\n cameraOrbitDistanceField,\n cameraOrbitPitchField,\n cameraOrbitSpeedField,\n cameraPositionField,\n environmentMapField,\n} from \"./ui/fields\";\n\nexport class PlayCanvasModeInternal {\n private disposed = false;\n public readonly type = \"playcanvas\";\n private environmentMap: string | null = null;\n\n private loadedState: {\n mmlNetworkSource: MMLNetworkSource;\n graphicsAdapter: StandalonePlayCanvasAdapter;\n fullScreenMMLScene: FullScreenMMLScene;\n statusUI: StatusUI;\n } | null = null;\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSourceDefinition: MMLSourceDefinition,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n private async init() {\n const fullScreenMMLScene = new FullScreenMMLScene();\n document.body.append(fullScreenMMLScene.element);\n const graphicsAdapter = await StandalonePlayCanvasAdapter.create(fullScreenMMLScene.element, {\n controlsType: StandalonePlayCanvasAdapterControlsType.DragFly,\n });\n\n if (this.disposed) {\n graphicsAdapter.dispose();\n return;\n }\n\n fullScreenMMLScene.init(graphicsAdapter);\n const statusUI = new StatusUI();\n const mmlNetworkSource = MMLNetworkSource.create({\n mmlScene: fullScreenMMLScene,\n statusUpdated: (status: NetworkedDOMWebsocketStatus) => {\n if (status === NetworkedDOMWebsocketStatus.Connected) {\n statusUI.setNoStatus();\n } else {\n statusUI.setStatus(NetworkedDOMWebsocketStatusToString(status));\n }\n },\n url: this.mmlSourceDefinition.url,\n windowTarget: this.windowTarget,\n targetForWrappers: this.targetForWrappers,\n });\n setDebugGlobals({\n mmlScene: fullScreenMMLScene,\n remoteDocumentWrapper: mmlNetworkSource.remoteDocumentWrapper,\n });\n const loadingCallback = () => {\n const [, completedLoading] = fullScreenMMLScene.getLoadingProgressManager().toRatio();\n if (completedLoading) {\n fullScreenMMLScene.getLoadingProgressManager().removeProgressCallback(loadingCallback);\n\n const fitContent = this.formIteration.getFieldValue(cameraFitContents);\n if (fitContent === \"true\") {\n graphicsAdapter.controls?.fitContent(calculateContentBounds(this.targetForWrappers));\n }\n }\n };\n fullScreenMMLScene.getLoadingProgressManager().addProgressCallback(loadingCallback);\n this.loadedState = {\n mmlNetworkSource,\n graphicsAdapter,\n fullScreenMMLScene,\n statusUI,\n };\n this.update(this.formIteration);\n }\n\n update(formIteration: FormIteration) {\n this.formIteration = formIteration;\n if (!this.loadedState) {\n return;\n }\n\n const graphicsAdapter = this.loadedState.graphicsAdapter;\n const playcanvasScene = graphicsAdapter.getPlayCanvasApp().scene;\n const cameraEntity = graphicsAdapter.getCamera();\n const cameraComponent = cameraEntity.camera as playcanvas.CameraComponent;\n this.setBackgroundColor(formIteration, cameraComponent);\n this.setAmbientLight(formIteration, playcanvasScene);\n this.setEnvironmentMap(formIteration, graphicsAdapter.getPlayCanvasApp(), playcanvasScene);\n\n this.setCameraMode(formIteration, graphicsAdapter);\n\n formIteration.completed();\n }\n\n private setEnvironmentMap(\n formIteration: FormIteration,\n playCanvasApp: playcanvas.AppBase,\n playcanvasScene: playcanvas.Scene,\n ) {\n let environmentMap = formIteration.getFieldValue(environmentMapField);\n const foundEnvMap = envMaps[environmentMap];\n if (foundEnvMap) {\n environmentMap = foundEnvMap.url;\n }\n if (!environmentMap) {\n // @ts-expect-error - PlayCanvas types don't accept null, but it works\n playcanvasScene.envAtlas = null;\n // @ts-expect-error - PlayCanvas types don't accept null, but it works\n playcanvasScene.skybox = null;\n this.environmentMap = null;\n return;\n }\n if (environmentMap === this.environmentMap) {\n return;\n }\n\n const envMapAsset = new playcanvas.Asset(\"env-atlas\", \"texture\", { url: environmentMap });\n playCanvasApp.assets.add(envMapAsset);\n playCanvasApp.assets.load(envMapAsset);\n\n const onEnvMapAssetLoad = (texture: playcanvas.Texture) => {\n const skybox = playcanvas.EnvLighting.generateSkyboxCubemap(texture);\n const lighting = playcanvas.EnvLighting.generateLightingSource(texture);\n const envAtlas = playcanvas.EnvLighting.generateAtlas(lighting, {});\n lighting.destroy();\n playcanvasScene.envAtlas = envAtlas;\n playcanvasScene.skybox = skybox;\n playcanvasScene.skyboxLuminance = 50000;\n };\n\n if (envMapAsset.loaded) {\n onEnvMapAssetLoad(envMapAsset.resource);\n } else {\n envMapAsset.on(\"load\", (envMapAsset: playcanvas.Asset) => {\n onEnvMapAssetLoad(envMapAsset.resource);\n });\n }\n }\n\n private setAmbientLight(formIteration: FormIteration, playcanvasScene: playcanvas.Scene) {\n const ambientLightIntensityString = formIteration.getFieldValue(ambientLightField) || \"0\";\n const ambientLightColorString = formIteration.getFieldValue(ambientLightColorField);\n let ambientLightIntensity = parseFloat(ambientLightIntensityString);\n if (isNaN(ambientLightIntensity)) {\n ambientLightIntensity = 0;\n }\n if (ambientLightIntensity < 0) {\n playcanvasScene.ambientLuminance = 0;\n playcanvasScene.ambientLight = new playcanvas.Color(0, 0, 0);\n } else {\n const color = parseColorAttribute(ambientLightColorString, {\n r: 1,\n g: 1,\n b: 1,\n });\n playcanvasScene.ambientLuminance = ambientLightIntensity * 20;\n playcanvasScene.ambientLight = new playcanvas.Color(\n color.r * ambientLightIntensity * 20,\n color.g * ambientLightIntensity * 20,\n color.b * ambientLightIntensity * 20,\n );\n }\n }\n\n private setBackgroundColor(\n formIteration: FormIteration,\n cameraComponent: playcanvas.CameraComponent,\n ) {\n const backgroundColor = formIteration.getFieldValue(backgroundColorField);\n if (!backgroundColor) {\n cameraComponent.clearColor = new playcanvas.Color(0, 0, 0, 0);\n return;\n }\n const color = parseColorAttribute(backgroundColor, {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n });\n cameraComponent.clearColor = new playcanvas.Color(color.r, color.g, color.b, color.a);\n }\n\n private setCameraMode(\n formIteration: FormIteration,\n graphicsAdapter: StandalonePlayCanvasAdapter,\n ) {\n let cameraFOV = parseFloat(formIteration.getFieldValue(cameraFovField));\n if (isNaN(cameraFOV)) {\n cameraFOV = 75;\n }\n graphicsAdapter.setCameraFOV(cameraFOV);\n\n const cameraMode = formIteration.getFieldValue(cameraModeField);\n if (cameraMode === \"orbit\") {\n if (graphicsAdapter.controls?.type !== \"orbit\") {\n graphicsAdapter.setControlsType(StandalonePlayCanvasAdapterControlsType.Orbit);\n }\n const controls = graphicsAdapter.controls as PlayCanvasOrbitCameraControls;\n let orbitSpeed = parseFloat(formIteration.getFieldValue(cameraOrbitSpeedField));\n if (isNaN(orbitSpeed)) {\n orbitSpeed = 0;\n }\n controls.setDegreesPerSecond(orbitSpeed);\n let orbitPitch = parseFloat(formIteration.getFieldValue(cameraOrbitPitchField));\n\n if (isNaN(orbitPitch)) {\n orbitPitch = 0;\n }\n controls.setPitchDegrees(orbitPitch);\n\n const fitContent = formIteration.getFieldValue(cameraFitContents);\n if (fitContent === \"true\") {\n controls.fitContent(calculateContentBounds(this.targetForWrappers));\n } else {\n const lookAt = parseXYZ(formIteration.getFieldValue(cameraLookAtField));\n controls.setLookAt(lookAt[0], lookAt[1], lookAt[2]);\n\n let orbitDistance = parseFloat(formIteration.getFieldValue(cameraOrbitDistanceField));\n if (isNaN(orbitDistance)) {\n orbitDistance = 1;\n }\n controls.setDistance(orbitDistance);\n }\n } else if (cameraMode === \"drag-fly\") {\n if (graphicsAdapter.controls?.type !== \"drag-fly\") {\n graphicsAdapter.setControlsType(StandalonePlayCanvasAdapterControlsType.DragFly);\n }\n const controls = graphicsAdapter.controls as PlayCanvasDragFlyCameraControls;\n\n const cameraPosition = parseXYZ(formIteration.getFieldValue(cameraPositionField));\n controls.setCameraPosition(cameraPosition[0], cameraPosition[1], cameraPosition[2]);\n\n const lookAt = parseXYZ(formIteration.getFieldValue(cameraLookAtField));\n controls.setLookAt(lookAt[0], lookAt[1], lookAt[2]);\n\n const fitContent = formIteration.getFieldValue(cameraFitContents);\n if (fitContent === \"true\") {\n controls.fitContent(calculateContentBounds(this.targetForWrappers));\n }\n } else if (cameraMode === \"none\" && graphicsAdapter.controls !== null) {\n graphicsAdapter.setControlsType(StandalonePlayCanvasAdapterControlsType.None);\n }\n }\n\n public dispose() {\n this.disposed = true;\n if (this.loadedState) {\n this.loadedState.mmlNetworkSource.dispose();\n this.loadedState.graphicsAdapter.dispose();\n this.loadedState.fullScreenMMLScene.dispose();\n this.loadedState.statusUI.dispose();\n this.loadedState = null;\n }\n }\n}\n"], + "mappings": "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AA;AAAA;AAAA;;;ACAvB,IAAI,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA5B,IAAI,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAd,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAhB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAxB,IAAI,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA5B,IAAI,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA9B,IAAI,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA9B,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAhB,IAAI,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAf,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA1B,IAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;;;ACA3B,IAAI,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAtB,IAAI,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACApB,IAAI,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA7B,IAAI,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAf,IAAI,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACApB,IAAI,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAhB,IAAI,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAzB,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAjB,IAAI,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAf,IAAI,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAZ,IAAI,QAAQ;AAAA;;;ACAZ,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAjB,IAAI,a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AAA;AAAA;AAAA;AAAA;AAAA;;;ACApB,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACApB,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA9B,IAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA3B,IAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA3B,IAAI,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAnB,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAtB,IAAI,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAZ,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAb,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA1B,IAAI,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAb,IAAI,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAf,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAxB,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAxB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAtB,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAjB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAhB,IAAI,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAtB,IAAI,WAAW;AAAA;;;ACAf,IAAI,gBAAgB;AAAA;AAAA;;;ACApB,IAAI,sBAAsB;AAAA;AAAA;;;ACA1B,IAAI,sBAAsB;AAAA;AAAA;AAAA;;;ACA1B,IAAI,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACApB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAd,IAAI,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAnB,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAjB,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAjB,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAjB,IAAI,2BAA2B;AAAA;AAAA;;;ACA/B,IAAI,0BAA0B;AAAA;AAAA;;;ACA9B,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAxB,IAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA3B,IAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA3B,IAAI,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA5B,IAAI,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA5B,IAAI,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA5B,IAAI,uBAAuB;AAAA;AAAA;AAAA;;;ACA3B,IAAI,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACvBV,IAAI,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAzB,IAAI,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACApB,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAnB,IAAI,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACApB,IAAI,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAnB,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA1B,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA1B,IAAI,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAnB,IAAI,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAzB,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACArB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAhB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAf,IAAI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAjB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA1B,IAAI,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAb,IAAI,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAd,IAAI,UAAU;AAAA;AAAA;AAAA;;;ACAd,IAAI,oBAAoB;AAAA;AAAA;AAAA;;;ACAxB,IAAI,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA7B,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAxB,IAAI,QAAQ;AAAA;AAAA;AAAA;AAAA;;;ACAZ,IAAI,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAtB,IAAI,YAAY;AAAA;AAAA;AAAA;AAAA;;;ACAhB,IAAI,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAvB,IAAI,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAtB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAxB,IAAI,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAzB,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA1B,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAxB,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA1B,IAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACA3B,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;;;ACAxB,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAlB,IAAI,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAtB,IAAI,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACArB,IAAI,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAzB,IAAI,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAZ,IAAI,QAAQ;AAAA;AAAA;AAAA;AAAA;;;ACAZ,IAAI,YAAY;AAAA;AAAA;AAAA;AAAA;;;ACAhB,IAAI,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACgNnB,IAAM,eAAe;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA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", + "names": ["target", "target", "c", "string", "c", "q", "x", "x", "array", "x", "y", "z", "epsilon", "x", "y", "z", "vec", "_Vec", "x", "y", "epsilon", "_Vec", "x", "y", "z", "epsilon", "_Mat", "vec", "x", "y", "z", "position", "target", "up", "right", "c", "data", "scale", "Quat", "x", "y", "z", "epsilon", "vec", "halfToRad", "center", "x", "y", "z", "tmpVecA", "tmpVecB", "center", "c", "matrix", "c", "target", "data", "data", "data", "array", "stringIds", "stringIds", "_ref", "target", "id", "stringIds", "data", "primitive", "stringIds", "target", "type", "id", "type", "data", "size", "KEYWORD", "id", "id", "x", "y", "z", "primitive", "c", "x", "y", "data", "id", "_ref", "data", "target", "type", "samplerTypes", "scale", "target", "type", "options", "vsCode", "target", "data", "x", "y", "z", "ua", "version", "primitive", "c", "target", "x", "y", "primitive", "id", "data", "c", "data", "data", "position", "fallOff", "position", "position", "time", "MAX_DISTANCE", "fallOff", "position", "vsCode", "_scissor", "target", "id", "type", "scene", "data", "scene", "scene", "id", "id", "data", "x", "y", "z", "target", "Quat", "x", "c", "path", "y", "z", "scale", "id", "scene", "data", "_depthUniformNames", "scene", "_halfSize", "viewProjMat", "x", "y", "z", "properties", "scene", "lights", "Quat", "device", "floatOffset", "id", "shape", "tempVec3", "epsilon", "lights", "x", "z", "y", "target", "arraysEqual", "x", "y", "lights", "lights", "c", "type", "lights", "z", "right", "up", "x", "y", "x", "shadowCamView", "type", "scene", "_viewport", "lights", "viewMat", "lights", "scene", "data", "x", "y", "target", "position", "lights", "scene", "scene", "scene", "lights", "id", "id", "c", "type", "target", "usedCount", "blending", "epsilon", "Model", "lights", "_duplicate", "ids", "data", "target", "data", "fShader", "p1", "p2", "v2", "v3", "x", "y", "z", "x", "y", "z", "type", "scene", "type", "scene", "center", "id", "matrix", "x", "y", "z", "center", "y", "array", "data", "x", "y", "deviceCache", "target", "type", "Quat", "type", "c", "decodeTable", "_matTex2D", "scene", "type", "scene", "asset", "setterFunc", "rotation", "getterFunc", "time", "position", "rotation", "scale", "Quat", "primitiveUv1Padding", "primitiveUv1PaddingScale", "x", "y", "z", "x", "y", "z", "x", "y", "z", "lights", "app", "type", "app", "deviceCache", "device", "data", "format", "scale", "type", "data", "app", "asset", "asset", "id", "type", "data", "err", "path", "asset", "id", "data", "id", "data", "data", "app", "asset", "data", "app", "app", "type", "asset", "self", "handleLoad", "data", "err", "onLoad", "data", "app", "id", "asset", "data", "app", "script", "app", "type", "data", "guid", "c", "app", "data", "sceneItem", "scene", "id", "err", "asset", "data", "script", "scene", "now", "center", "matrix", "x", "y", "Quat", "app", "guid", "makeTick", "data", "app", "data", "properties", "type", "time", "input", "data", "p1", "time", "type", "type", "Quat", "path", "target", "type", "c", "input", "events", "time", "escape", "string", "path", "c", "type", "path", "flatten", "findMeshInstances", "func", "type", "target", "type", "path", "time", "time", "path", "Quat", "path", "target", "flatten", "time", "data", "asset", "stateName", "type", "app", "data", "properties", "id", "path", "position", "_schema", "app", "data", "properties", "position", "Quat", "data", "asset", "shape", "Quat", "app", "data", "shape", "Quat", "_schema", "data", "Model", "position", "rotation", "scale", "shape", "x", "y", "z", "vec", "id", "asset", "app", "properties", "type", "type", "Model", "asset", "scene", "id", "events", "path", "app", "_schema", "app", "properties", "data", "asset", "scene", "id", "asset", "app", "_schema", "app", "properties", "data", "_ammoTransform", "_ammoVec1", "_ammoQuat", "Quat", "_vec3", "type", "shape", "x", "y", "z", "q", "_schema", "app", "data", "properties", "shape", "guid", "c", "onLoad", "asset", "data", "position", "_schema", "app", "data", "properties", "id", "position", "app", "scene", "type", "_schema", "app", "data", "properties", "c", "asset", "c", "data", "app", "data", "input", "data", "attributeOrder", "generateNormals", "a", "b", "c", "v2", "data", "workers", "data", "x", "data", "primitive", "type", "texture", "result", "target", "scale", "rotation", "path", "scene", "lights", "options", "asset", "_ref", "_ref2", "array", "version", "buffer", "err", "app", "asset", "err", "data", "anim", "Quat", "ua", "app", "success", "error", "audio", "onReady", "data", "asset", "createAsset", "type", "createMeshInstance", "scene", "model", "skinInstances", "Model", "destroyAsset", "destroyAssets", "asset", "err", "result", "data", "app", "asset", "data", "data", "asset", "data", "Model", "sparseToFull", "app", "data", "asset", "err", "self", "handleMaterial", "id", "path", "deviceDetails", "data", "genB", "queue", "data", "queue", "defaultNumWorkers", "lazyConfig", "asset", "data", "asset", "data", "asset", "data", "IDENTIFIER", "asset", "data", "target", "asset", "data", "asset", "data", "asset", "data", "x", "y", "_completePartialMipmapChain", "isHtmlElement", "downsample", "data", "y", "x", "app", "asset", "id", "Quat", "id", "quat", "Quat", "position", "rotation", "vecA", "vecB", "p1", "p2", "q", "x", "y", "touch", "c", "guid", "target", "scale", "right", "z", "_viewport", "time", "id", "s", "e", "matrix", "position", "type", "x", "y", "_PlayCanvasAudio", "audio", "Audio", "asset", "MELEMENT_PROPERTY_NAME", "app", "Model", "LoadingInstanceManager", "Image", "scene", "anim", "scale", "TransformableElement", "CanvasText", "z", "EventHandlerCollection", "rotation", "calculateContentSize", "up", "center", "x", "y", "z", "quaternion", "EventHandlerCollection", "ammo_wasm_default", "draco_wasm_default", "StandalonePlayCanvasAdapterControlsType", "type", "position", "rotation", "vec", "Matr4", "skybox", "envMapAsset"] +} diff --git a/pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js b/pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js new file mode 100644 index 00000000..0c28371f --- /dev/null +++ b/pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js @@ -0,0 +1,34003 @@ +import { + calculateContentBounds, + envMaps, + parseXYZ +} from "./chunk-CPWJBFSW.js"; +import { + Audio, + AudioGraphics, + CanvasText, + ChatProbeGraphics, + CubeGraphics, + CylinderGraphics, + DebugHelperGraphics, + EventHandlerCollection, + FrameGraphics, + FullScreenMMLScene, + Image as Image2, + ImageGraphics, + InteractionGraphics, + LabelGraphics, + LightGraphics, + LightTypes, + LinkGraphics, + LoadingInstanceManager, + MELEMENT_PROPERTY_NAME, + MElement, + MElementGraphics, + MMLNetworkSource, + Matr4, + Model, + ModelGraphics, + NetworkedDOMWebsocketStatus, + NetworkedDOMWebsocketStatusToString, + PlaneGraphics, + PositionProbeGraphics, + PromptGraphics, + Quat, + RemoteDocumentGraphics, + SphereGraphics, + StaticFileVideoSource, + StatusUI, + TransformableElement, + TransformableGraphics, + VideoGraphics, + WHEPVideoSource, + ambientLightColorField, + ambientLightField, + backgroundColorField, + calculateContentSize, + cameraFitContents, + cameraFovField, + cameraLookAtField, + cameraModeField, + cameraOrbitDistanceField, + cameraOrbitPitchField, + cameraOrbitSpeedField, + cameraPositionField, + environmentMapField, + getRelativePositionAndRotationRelativeToObject, + parseColorAttribute, + radToDeg, + setDebugGlobals +} from "./chunk-OGDCF6KN.js"; + +// ../../node_modules/three/build/three.module.js +var REVISION = "163"; +var CullFaceNone = 0; +var CullFaceBack = 1; +var CullFaceFront = 2; +var PCFShadowMap = 1; +var PCFSoftShadowMap = 2; +var VSMShadowMap = 3; +var FrontSide = 0; +var BackSide = 1; +var DoubleSide = 2; +var NoBlending = 0; +var NormalBlending = 1; +var AdditiveBlending = 2; +var SubtractiveBlending = 3; +var MultiplyBlending = 4; +var CustomBlending = 5; +var AddEquation = 100; +var SubtractEquation = 101; +var ReverseSubtractEquation = 102; +var MinEquation = 103; +var MaxEquation = 104; +var ZeroFactor = 200; +var OneFactor = 201; +var SrcColorFactor = 202; +var OneMinusSrcColorFactor = 203; +var SrcAlphaFactor = 204; +var OneMinusSrcAlphaFactor = 205; +var DstAlphaFactor = 206; +var OneMinusDstAlphaFactor = 207; +var DstColorFactor = 208; +var OneMinusDstColorFactor = 209; +var SrcAlphaSaturateFactor = 210; +var ConstantColorFactor = 211; +var OneMinusConstantColorFactor = 212; +var ConstantAlphaFactor = 213; +var OneMinusConstantAlphaFactor = 214; +var NeverDepth = 0; +var AlwaysDepth = 1; +var LessDepth = 2; +var LessEqualDepth = 3; +var EqualDepth = 4; +var GreaterEqualDepth = 5; +var GreaterDepth = 6; +var NotEqualDepth = 7; +var MultiplyOperation = 0; +var MixOperation = 1; +var AddOperation = 2; +var NoToneMapping = 0; +var LinearToneMapping = 1; +var ReinhardToneMapping = 2; +var CineonToneMapping = 3; +var ACESFilmicToneMapping = 4; +var CustomToneMapping = 5; +var AgXToneMapping = 6; +var NeutralToneMapping = 7; +var AttachedBindMode = "attached"; +var DetachedBindMode = "detached"; +var UVMapping = 300; +var CubeReflectionMapping = 301; +var CubeRefractionMapping = 302; +var EquirectangularReflectionMapping = 303; +var EquirectangularRefractionMapping = 304; +var CubeUVReflectionMapping = 306; +var RepeatWrapping = 1e3; +var ClampToEdgeWrapping = 1001; +var MirroredRepeatWrapping = 1002; +var NearestFilter = 1003; +var NearestMipmapNearestFilter = 1004; +var NearestMipmapLinearFilter = 1005; +var LinearFilter = 1006; +var LinearMipmapNearestFilter = 1007; +var LinearMipmapLinearFilter = 1008; +var LinearMipMapLinearFilter = 1008; +var UnsignedByteType = 1009; +var ByteType = 1010; +var ShortType = 1011; +var UnsignedShortType = 1012; +var IntType = 1013; +var UnsignedIntType = 1014; +var FloatType = 1015; +var HalfFloatType = 1016; +var UnsignedShort4444Type = 1017; +var UnsignedShort5551Type = 1018; +var UnsignedInt248Type = 1020; +var UnsignedInt5999Type = 35902; +var AlphaFormat = 1021; +var RGBFormat = 1022; +var RGBAFormat = 1023; +var LuminanceFormat = 1024; +var LuminanceAlphaFormat = 1025; +var DepthFormat = 1026; +var DepthStencilFormat = 1027; +var RedFormat = 1028; +var RedIntegerFormat = 1029; +var RGFormat = 1030; +var RGIntegerFormat = 1031; +var RGBAIntegerFormat = 1033; +var RGB_S3TC_DXT1_Format = 33776; +var RGBA_S3TC_DXT1_Format = 33777; +var RGBA_S3TC_DXT3_Format = 33778; +var RGBA_S3TC_DXT5_Format = 33779; +var RGB_PVRTC_4BPPV1_Format = 35840; +var RGB_PVRTC_2BPPV1_Format = 35841; +var RGBA_PVRTC_4BPPV1_Format = 35842; +var RGBA_PVRTC_2BPPV1_Format = 35843; +var RGB_ETC1_Format = 36196; +var RGB_ETC2_Format = 37492; +var RGBA_ETC2_EAC_Format = 37496; +var RGBA_ASTC_4x4_Format = 37808; +var RGBA_ASTC_5x4_Format = 37809; +var RGBA_ASTC_5x5_Format = 37810; +var RGBA_ASTC_6x5_Format = 37811; +var RGBA_ASTC_6x6_Format = 37812; +var RGBA_ASTC_8x5_Format = 37813; +var RGBA_ASTC_8x6_Format = 37814; +var RGBA_ASTC_8x8_Format = 37815; +var RGBA_ASTC_10x5_Format = 37816; +var RGBA_ASTC_10x6_Format = 37817; +var RGBA_ASTC_10x8_Format = 37818; +var RGBA_ASTC_10x10_Format = 37819; +var RGBA_ASTC_12x10_Format = 37820; +var RGBA_ASTC_12x12_Format = 37821; +var RGBA_BPTC_Format = 36492; +var RGB_BPTC_SIGNED_Format = 36494; +var RGB_BPTC_UNSIGNED_Format = 36495; +var RED_RGTC1_Format = 36283; +var SIGNED_RED_RGTC1_Format = 36284; +var RED_GREEN_RGTC2_Format = 36285; +var SIGNED_RED_GREEN_RGTC2_Format = 36286; +var LoopOnce = 2200; +var LoopRepeat = 2201; +var LoopPingPong = 2202; +var InterpolateDiscrete = 2300; +var InterpolateLinear = 2301; +var InterpolateSmooth = 2302; +var ZeroCurvatureEnding = 2400; +var ZeroSlopeEnding = 2401; +var WrapAroundEnding = 2402; +var NormalAnimationBlendMode = 2500; +var AdditiveAnimationBlendMode = 2501; +var TrianglesDrawMode = 0; +var TriangleStripDrawMode = 1; +var TriangleFanDrawMode = 2; +var BasicDepthPacking = 3200; +var RGBADepthPacking = 3201; +var TangentSpaceNormalMap = 0; +var ObjectSpaceNormalMap = 1; +var NoColorSpace = ""; +var SRGBColorSpace = "srgb"; +var LinearSRGBColorSpace = "srgb-linear"; +var DisplayP3ColorSpace = "display-p3"; +var LinearDisplayP3ColorSpace = "display-p3-linear"; +var LinearTransfer = "linear"; +var SRGBTransfer = "srgb"; +var Rec709Primaries = "rec709"; +var P3Primaries = "p3"; +var KeepStencilOp = 7680; +var AlwaysStencilFunc = 519; +var NeverCompare = 512; +var LessCompare = 513; +var EqualCompare = 514; +var LessEqualCompare = 515; +var GreaterCompare = 516; +var NotEqualCompare = 517; +var GreaterEqualCompare = 518; +var AlwaysCompare = 519; +var StaticDrawUsage = 35044; +var GLSL3 = "300 es"; +var WebGLCoordinateSystem = 2e3; +var WebGPUCoordinateSystem = 2001; +var EventDispatcher = class { + addEventListener(type, listener) { + if (this._listeners === void 0) this._listeners = {}; + const listeners = this._listeners; + if (listeners[type] === void 0) { + listeners[type] = []; + } + if (listeners[type].indexOf(listener) === -1) { + listeners[type].push(listener); + } + } + hasEventListener(type, listener) { + if (this._listeners === void 0) return false; + const listeners = this._listeners; + return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1; + } + removeEventListener(type, listener) { + if (this._listeners === void 0) return; + const listeners = this._listeners; + const listenerArray = listeners[type]; + if (listenerArray !== void 0) { + const index = listenerArray.indexOf(listener); + if (index !== -1) { + listenerArray.splice(index, 1); + } + } + } + dispatchEvent(event) { + if (this._listeners === void 0) return; + const listeners = this._listeners; + const listenerArray = listeners[event.type]; + if (listenerArray !== void 0) { + event.target = this; + const array = listenerArray.slice(0); + for (let i = 0, l = array.length; i < l; i++) { + array[i].call(this, event); + } + event.target = null; + } + } +}; +var _lut = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff"]; +var _seed = 1234567; +var DEG2RAD = Math.PI / 180; +var RAD2DEG = 180 / Math.PI; +function generateUUID() { + const d0 = Math.random() * 4294967295 | 0; + const d1 = Math.random() * 4294967295 | 0; + const d2 = Math.random() * 4294967295 | 0; + const d3 = Math.random() * 4294967295 | 0; + const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + "-" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + "-" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + "-" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + "-" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255]; + return uuid.toLowerCase(); +} +function clamp(value, min, max2) { + return Math.max(min, Math.min(max2, value)); +} +function euclideanModulo(n, m) { + return (n % m + m) % m; +} +function mapLinear(x, a1, a2, b1, b2) { + return b1 + (x - a1) * (b2 - b1) / (a2 - a1); +} +function inverseLerp(x, y, value) { + if (x !== y) { + return (value - x) / (y - x); + } else { + return 0; + } +} +function lerp(x, y, t) { + return (1 - t) * x + t * y; +} +function damp(x, y, lambda, dt) { + return lerp(x, y, 1 - Math.exp(-lambda * dt)); +} +function pingpong(x, length = 1) { + return length - Math.abs(euclideanModulo(x, length * 2) - length); +} +function smoothstep(x, min, max2) { + if (x <= min) return 0; + if (x >= max2) return 1; + x = (x - min) / (max2 - min); + return x * x * (3 - 2 * x); +} +function smootherstep(x, min, max2) { + if (x <= min) return 0; + if (x >= max2) return 1; + x = (x - min) / (max2 - min); + return x * x * x * (x * (x * 6 - 15) + 10); +} +function randInt(low, high) { + return low + Math.floor(Math.random() * (high - low + 1)); +} +function randFloat(low, high) { + return low + Math.random() * (high - low); +} +function randFloatSpread(range) { + return range * (0.5 - Math.random()); +} +function seededRandom(s) { + if (s !== void 0) _seed = s; + let t = _seed += 1831565813; + t = Math.imul(t ^ t >>> 15, t | 1); + t ^= t + Math.imul(t ^ t >>> 7, t | 61); + return ((t ^ t >>> 14) >>> 0) / 4294967296; +} +function degToRad(degrees) { + return degrees * DEG2RAD; +} +function radToDeg2(radians) { + return radians * RAD2DEG; +} +function isPowerOfTwo(value) { + return (value & value - 1) === 0 && value !== 0; +} +function ceilPowerOfTwo(value) { + return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2)); +} +function floorPowerOfTwo(value) { + return Math.pow(2, Math.floor(Math.log(value) / Math.LN2)); +} +function setQuaternionFromProperEuler(q, a, b, c, order) { + const cos = Math.cos; + const sin = Math.sin; + const c2 = cos(b / 2); + const s2 = sin(b / 2); + const c13 = cos((a + c) / 2); + const s13 = sin((a + c) / 2); + const c1_3 = cos((a - c) / 2); + const s1_3 = sin((a - c) / 2); + const c3_1 = cos((c - a) / 2); + const s3_1 = sin((c - a) / 2); + switch (order) { + case "XYX": + q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13); + break; + case "YZY": + q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13); + break; + case "ZXZ": + q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13); + break; + case "XZX": + q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13); + break; + case "YXY": + q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13); + break; + case "ZYZ": + q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13); + break; + default: + console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: " + order); + } +} +function denormalize(value, array) { + switch (array.constructor) { + case Float32Array: + return value; + case Uint32Array: + return value / 4294967295; + case Uint16Array: + return value / 65535; + case Uint8Array: + return value / 255; + case Int32Array: + return Math.max(value / 2147483647, -1); + case Int16Array: + return Math.max(value / 32767, -1); + case Int8Array: + return Math.max(value / 127, -1); + default: + throw new Error("Invalid component type."); + } +} +function normalize(value, array) { + switch (array.constructor) { + case Float32Array: + return value; + case Uint32Array: + return Math.round(value * 4294967295); + case Uint16Array: + return Math.round(value * 65535); + case Uint8Array: + return Math.round(value * 255); + case Int32Array: + return Math.round(value * 2147483647); + case Int16Array: + return Math.round(value * 32767); + case Int8Array: + return Math.round(value * 127); + default: + throw new Error("Invalid component type."); + } +} +var MathUtils = { + DEG2RAD, + RAD2DEG, + generateUUID, + clamp, + euclideanModulo, + mapLinear, + inverseLerp, + lerp, + damp, + pingpong, + smoothstep, + smootherstep, + randInt, + randFloat, + randFloatSpread, + seededRandom, + degToRad, + radToDeg: radToDeg2, + isPowerOfTwo, + ceilPowerOfTwo, + floorPowerOfTwo, + setQuaternionFromProperEuler, + normalize, + denormalize +}; +var Vector2 = class _Vector2 { + constructor(x = 0, y = 0) { + _Vector2.prototype.isVector2 = true; + this.x = x; + this.y = y; + } + get width() { + return this.x; + } + set width(value) { + this.x = value; + } + get height() { + return this.y; + } + set height(value) { + this.y = value; + } + set(x, y) { + this.x = x; + this.y = y; + return this; + } + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + return this; + } + setX(x) { + this.x = x; + return this; + } + setY(y) { + this.y = y; + return this; + } + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + case 1: + this.y = value; + break; + default: + throw new Error("index is out of range: " + index); + } + return this; + } + getComponent(index) { + switch (index) { + case 0: + return this.x; + case 1: + return this.y; + default: + throw new Error("index is out of range: " + index); + } + } + clone() { + return new this.constructor(this.x, this.y); + } + copy(v) { + this.x = v.x; + this.y = v.y; + return this; + } + add(v) { + this.x += v.x; + this.y += v.y; + return this; + } + addScalar(s) { + this.x += s; + this.y += s; + return this; + } + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + return this; + } + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + return this; + } + sub(v) { + this.x -= v.x; + this.y -= v.y; + return this; + } + subScalar(s) { + this.x -= s; + this.y -= s; + return this; + } + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + return this; + } + multiply(v) { + this.x *= v.x; + this.y *= v.y; + return this; + } + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + return this; + } + divide(v) { + this.x /= v.x; + this.y /= v.y; + return this; + } + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + applyMatrix3(m) { + const x = this.x, y = this.y; + const e = m.elements; + this.x = e[0] * x + e[3] * y + e[6]; + this.y = e[1] * x + e[4] * y + e[7]; + return this; + } + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + return this; + } + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + return this; + } + clamp(min, max2) { + this.x = Math.max(min.x, Math.min(max2.x, this.x)); + this.y = Math.max(min.y, Math.min(max2.y, this.y)); + return this; + } + clampScalar(minVal, maxVal) { + this.x = Math.max(minVal, Math.min(maxVal, this.x)); + this.y = Math.max(minVal, Math.min(maxVal, this.y)); + return this; + } + clampLength(min, max2) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length))); + } + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + } + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + return this; + } + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + } + roundToZero() { + this.x = Math.trunc(this.x); + this.y = Math.trunc(this.y); + return this; + } + negate() { + this.x = -this.x; + this.y = -this.y; + return this; + } + dot(v) { + return this.x * v.x + this.y * v.y; + } + cross(v) { + return this.x * v.y - this.y * v.x; + } + lengthSq() { + return this.x * this.x + this.y * this.y; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + angle() { + const angle = Math.atan2(-this.y, -this.x) + Math.PI; + return angle; + } + angleTo(v) { + const denominator = Math.sqrt(this.lengthSq() * v.lengthSq()); + if (denominator === 0) return Math.PI / 2; + const theta = this.dot(v) / denominator; + return Math.acos(clamp(theta, -1, 1)); + } + distanceTo(v) { + return Math.sqrt(this.distanceToSquared(v)); + } + distanceToSquared(v) { + const dx = this.x - v.x, dy = this.y - v.y; + return dx * dx + dy * dy; + } + manhattanDistanceTo(v) { + return Math.abs(this.x - v.x) + Math.abs(this.y - v.y); + } + setLength(length) { + return this.normalize().multiplyScalar(length); + } + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + return this; + } + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + return this; + } + equals(v) { + return v.x === this.x && v.y === this.y; + } + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + return this; + } + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + return array; + } + fromBufferAttribute(attribute, index) { + this.x = attribute.getX(index); + this.y = attribute.getY(index); + return this; + } + rotateAround(center, angle) { + const c = Math.cos(angle), s = Math.sin(angle); + const x = this.x - center.x; + const y = this.y - center.y; + this.x = x * c - y * s + center.x; + this.y = x * s + y * c + center.y; + return this; + } + random() { + this.x = Math.random(); + this.y = Math.random(); + return this; + } + *[Symbol.iterator]() { + yield this.x; + yield this.y; + } +}; +var Matrix3 = class _Matrix3 { + constructor(n11, n12, n13, n21, n22, n23, n31, n32, n33) { + _Matrix3.prototype.isMatrix3 = true; + this.elements = [ + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ]; + if (n11 !== void 0) { + this.set(n11, n12, n13, n21, n22, n23, n31, n32, n33); + } + } + set(n11, n12, n13, n21, n22, n23, n31, n32, n33) { + const te = this.elements; + te[0] = n11; + te[1] = n21; + te[2] = n31; + te[3] = n12; + te[4] = n22; + te[5] = n32; + te[6] = n13; + te[7] = n23; + te[8] = n33; + return this; + } + identity() { + this.set( + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ); + return this; + } + copy(m) { + const te = this.elements; + const me = m.elements; + te[0] = me[0]; + te[1] = me[1]; + te[2] = me[2]; + te[3] = me[3]; + te[4] = me[4]; + te[5] = me[5]; + te[6] = me[6]; + te[7] = me[7]; + te[8] = me[8]; + return this; + } + extractBasis(xAxis, yAxis, zAxis) { + xAxis.setFromMatrix3Column(this, 0); + yAxis.setFromMatrix3Column(this, 1); + zAxis.setFromMatrix3Column(this, 2); + return this; + } + setFromMatrix4(m) { + const me = m.elements; + this.set( + me[0], + me[4], + me[8], + me[1], + me[5], + me[9], + me[2], + me[6], + me[10] + ); + return this; + } + multiply(m) { + return this.multiplyMatrices(this, m); + } + premultiply(m) { + return this.multiplyMatrices(m, this); + } + multiplyMatrices(a, b) { + const ae = a.elements; + const be = b.elements; + const te = this.elements; + const a11 = ae[0], a12 = ae[3], a13 = ae[6]; + const a21 = ae[1], a22 = ae[4], a23 = ae[7]; + const a31 = ae[2], a32 = ae[5], a33 = ae[8]; + const b11 = be[0], b12 = be[3], b13 = be[6]; + const b21 = be[1], b22 = be[4], b23 = be[7]; + const b31 = be[2], b32 = be[5], b33 = be[8]; + te[0] = a11 * b11 + a12 * b21 + a13 * b31; + te[3] = a11 * b12 + a12 * b22 + a13 * b32; + te[6] = a11 * b13 + a12 * b23 + a13 * b33; + te[1] = a21 * b11 + a22 * b21 + a23 * b31; + te[4] = a21 * b12 + a22 * b22 + a23 * b32; + te[7] = a21 * b13 + a22 * b23 + a23 * b33; + te[2] = a31 * b11 + a32 * b21 + a33 * b31; + te[5] = a31 * b12 + a32 * b22 + a33 * b32; + te[8] = a31 * b13 + a32 * b23 + a33 * b33; + return this; + } + multiplyScalar(s) { + const te = this.elements; + te[0] *= s; + te[3] *= s; + te[6] *= s; + te[1] *= s; + te[4] *= s; + te[7] *= s; + te[2] *= s; + te[5] *= s; + te[8] *= s; + return this; + } + determinant() { + const te = this.elements; + const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f = te[5], g = te[6], h = te[7], i = te[8]; + return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; + } + invert() { + const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13; + if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0); + const detInv = 1 / det; + te[0] = t11 * detInv; + te[1] = (n31 * n23 - n33 * n21) * detInv; + te[2] = (n32 * n21 - n31 * n22) * detInv; + te[3] = t12 * detInv; + te[4] = (n33 * n11 - n31 * n13) * detInv; + te[5] = (n31 * n12 - n32 * n11) * detInv; + te[6] = t13 * detInv; + te[7] = (n21 * n13 - n23 * n11) * detInv; + te[8] = (n22 * n11 - n21 * n12) * detInv; + return this; + } + transpose() { + let tmp; + const m = this.elements; + tmp = m[1]; + m[1] = m[3]; + m[3] = tmp; + tmp = m[2]; + m[2] = m[6]; + m[6] = tmp; + tmp = m[5]; + m[5] = m[7]; + m[7] = tmp; + return this; + } + getNormalMatrix(matrix4) { + return this.setFromMatrix4(matrix4).invert().transpose(); + } + transposeIntoArray(r) { + const m = this.elements; + r[0] = m[0]; + r[1] = m[3]; + r[2] = m[6]; + r[3] = m[1]; + r[4] = m[4]; + r[5] = m[7]; + r[6] = m[2]; + r[7] = m[5]; + r[8] = m[8]; + return this; + } + setUvTransform(tx, ty, sx, sy, rotation, cx, cy) { + const c = Math.cos(rotation); + const s = Math.sin(rotation); + this.set( + sx * c, + sx * s, + -sx * (c * cx + s * cy) + cx + tx, + -sy * s, + sy * c, + -sy * (-s * cx + c * cy) + cy + ty, + 0, + 0, + 1 + ); + return this; + } + // + scale(sx, sy) { + this.premultiply(_m3.makeScale(sx, sy)); + return this; + } + rotate(theta) { + this.premultiply(_m3.makeRotation(-theta)); + return this; + } + translate(tx, ty) { + this.premultiply(_m3.makeTranslation(tx, ty)); + return this; + } + // for 2D Transforms + makeTranslation(x, y) { + if (x.isVector2) { + this.set( + 1, + 0, + x.x, + 0, + 1, + x.y, + 0, + 0, + 1 + ); + } else { + this.set( + 1, + 0, + x, + 0, + 1, + y, + 0, + 0, + 1 + ); + } + return this; + } + makeRotation(theta) { + const c = Math.cos(theta); + const s = Math.sin(theta); + this.set( + c, + -s, + 0, + s, + c, + 0, + 0, + 0, + 1 + ); + return this; + } + makeScale(x, y) { + this.set( + x, + 0, + 0, + 0, + y, + 0, + 0, + 0, + 1 + ); + return this; + } + // + equals(matrix) { + const te = this.elements; + const me = matrix.elements; + for (let i = 0; i < 9; i++) { + if (te[i] !== me[i]) return false; + } + return true; + } + fromArray(array, offset = 0) { + for (let i = 0; i < 9; i++) { + this.elements[i] = array[i + offset]; + } + return this; + } + toArray(array = [], offset = 0) { + const te = this.elements; + array[offset] = te[0]; + array[offset + 1] = te[1]; + array[offset + 2] = te[2]; + array[offset + 3] = te[3]; + array[offset + 4] = te[4]; + array[offset + 5] = te[5]; + array[offset + 6] = te[6]; + array[offset + 7] = te[7]; + array[offset + 8] = te[8]; + return array; + } + clone() { + return new this.constructor().fromArray(this.elements); + } +}; +var _m3 = /* @__PURE__ */ new Matrix3(); +function arrayNeedsUint32(array) { + for (let i = array.length - 1; i >= 0; --i) { + if (array[i] >= 65535) return true; + } + return false; +} +function createElementNS(name) { + return document.createElementNS("http://www.w3.org/1999/xhtml", name); +} +function createCanvasElement() { + const canvas = createElementNS("canvas"); + canvas.style.display = "block"; + return canvas; +} +var _cache = {}; +function warnOnce(message) { + if (message in _cache) return; + _cache[message] = true; + console.warn(message); +} +var LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /* @__PURE__ */ new Matrix3().set( + 0.8224621, + 0.177538, + 0, + 0.0331941, + 0.9668058, + 0, + 0.0170827, + 0.0723974, + 0.9105199 +); +var LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /* @__PURE__ */ new Matrix3().set( + 1.2249401, + -0.2249404, + 0, + -0.0420569, + 1.0420571, + 0, + -0.0196376, + -0.0786361, + 1.0982735 +); +var COLOR_SPACES = { + [LinearSRGBColorSpace]: { + transfer: LinearTransfer, + primaries: Rec709Primaries, + toReference: (color) => color, + fromReference: (color) => color + }, + [SRGBColorSpace]: { + transfer: SRGBTransfer, + primaries: Rec709Primaries, + toReference: (color) => color.convertSRGBToLinear(), + fromReference: (color) => color.convertLinearToSRGB() + }, + [LinearDisplayP3ColorSpace]: { + transfer: LinearTransfer, + primaries: P3Primaries, + toReference: (color) => color.applyMatrix3(LINEAR_DISPLAY_P3_TO_LINEAR_SRGB), + fromReference: (color) => color.applyMatrix3(LINEAR_SRGB_TO_LINEAR_DISPLAY_P3) + }, + [DisplayP3ColorSpace]: { + transfer: SRGBTransfer, + primaries: P3Primaries, + toReference: (color) => color.convertSRGBToLinear().applyMatrix3(LINEAR_DISPLAY_P3_TO_LINEAR_SRGB), + fromReference: (color) => color.applyMatrix3(LINEAR_SRGB_TO_LINEAR_DISPLAY_P3).convertLinearToSRGB() + } +}; +var SUPPORTED_WORKING_COLOR_SPACES = /* @__PURE__ */ new Set([LinearSRGBColorSpace, LinearDisplayP3ColorSpace]); +var ColorManagement = { + enabled: true, + _workingColorSpace: LinearSRGBColorSpace, + get workingColorSpace() { + return this._workingColorSpace; + }, + set workingColorSpace(colorSpace) { + if (!SUPPORTED_WORKING_COLOR_SPACES.has(colorSpace)) { + throw new Error(`Unsupported working color space, "${colorSpace}".`); + } + this._workingColorSpace = colorSpace; + }, + convert: function(color, sourceColorSpace, targetColorSpace) { + if (this.enabled === false || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) { + return color; + } + const sourceToReference = COLOR_SPACES[sourceColorSpace].toReference; + const targetFromReference = COLOR_SPACES[targetColorSpace].fromReference; + return targetFromReference(sourceToReference(color)); + }, + fromWorkingColorSpace: function(color, targetColorSpace) { + return this.convert(color, this._workingColorSpace, targetColorSpace); + }, + toWorkingColorSpace: function(color, sourceColorSpace) { + return this.convert(color, sourceColorSpace, this._workingColorSpace); + }, + getPrimaries: function(colorSpace) { + return COLOR_SPACES[colorSpace].primaries; + }, + getTransfer: function(colorSpace) { + if (colorSpace === NoColorSpace) return LinearTransfer; + return COLOR_SPACES[colorSpace].transfer; + } +}; +function SRGBToLinear(c) { + return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4); +} +function LinearToSRGB(c) { + return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055; +} +var _canvas; +var ImageUtils = class { + static getDataURL(image) { + if (/^data:/i.test(image.src)) { + return image.src; + } + if (typeof HTMLCanvasElement === "undefined") { + return image.src; + } + let canvas; + if (image instanceof HTMLCanvasElement) { + canvas = image; + } else { + if (_canvas === void 0) _canvas = createElementNS("canvas"); + _canvas.width = image.width; + _canvas.height = image.height; + const context = _canvas.getContext("2d"); + if (image instanceof ImageData) { + context.putImageData(image, 0, 0); + } else { + context.drawImage(image, 0, 0, image.width, image.height); + } + canvas = _canvas; + } + if (canvas.width > 2048 || canvas.height > 2048) { + console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons", image); + return canvas.toDataURL("image/jpeg", 0.6); + } else { + return canvas.toDataURL("image/png"); + } + } + static sRGBToLinear(image) { + if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== "undefined" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== "undefined" && image instanceof ImageBitmap) { + const canvas = createElementNS("canvas"); + canvas.width = image.width; + canvas.height = image.height; + const context = canvas.getContext("2d"); + context.drawImage(image, 0, 0, image.width, image.height); + const imageData = context.getImageData(0, 0, image.width, image.height); + const data = imageData.data; + for (let i = 0; i < data.length; i++) { + data[i] = SRGBToLinear(data[i] / 255) * 255; + } + context.putImageData(imageData, 0, 0); + return canvas; + } else if (image.data) { + const data = image.data.slice(0); + for (let i = 0; i < data.length; i++) { + if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) { + data[i] = Math.floor(SRGBToLinear(data[i] / 255) * 255); + } else { + data[i] = SRGBToLinear(data[i]); + } + } + return { + data, + width: image.width, + height: image.height + }; + } else { + console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."); + return image; + } + } +}; +var _sourceId = 0; +var Source = class { + constructor(data = null) { + this.isSource = true; + Object.defineProperty(this, "id", { value: _sourceId++ }); + this.uuid = generateUUID(); + this.data = data; + this.dataReady = true; + this.version = 0; + } + set needsUpdate(value) { + if (value === true) this.version++; + } + toJSON(meta) { + const isRootObject = meta === void 0 || typeof meta === "string"; + if (!isRootObject && meta.images[this.uuid] !== void 0) { + return meta.images[this.uuid]; + } + const output = { + uuid: this.uuid, + url: "" + }; + const data = this.data; + if (data !== null) { + let url; + if (Array.isArray(data)) { + url = []; + for (let i = 0, l = data.length; i < l; i++) { + if (data[i].isDataTexture) { + url.push(serializeImage(data[i].image)); + } else { + url.push(serializeImage(data[i])); + } + } + } else { + url = serializeImage(data); + } + output.url = url; + } + if (!isRootObject) { + meta.images[this.uuid] = output; + } + return output; + } +}; +function serializeImage(image) { + if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== "undefined" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== "undefined" && image instanceof ImageBitmap) { + return ImageUtils.getDataURL(image); + } else { + if (image.data) { + return { + data: Array.from(image.data), + width: image.width, + height: image.height, + type: image.data.constructor.name + }; + } else { + console.warn("THREE.Texture: Unable to serialize Texture."); + return {}; + } + } +} +var _textureId = 0; +var Texture = class _Texture extends EventDispatcher { + constructor(image = _Texture.DEFAULT_IMAGE, mapping = _Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = _Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace) { + super(); + this.isTexture = true; + Object.defineProperty(this, "id", { value: _textureId++ }); + this.uuid = generateUUID(); + this.name = ""; + this.source = new Source(image); + this.mipmaps = []; + this.mapping = mapping; + this.channel = 0; + this.wrapS = wrapS; + this.wrapT = wrapT; + this.magFilter = magFilter; + this.minFilter = minFilter; + this.anisotropy = anisotropy; + this.format = format; + this.internalFormat = null; + this.type = type; + this.offset = new Vector2(0, 0); + this.repeat = new Vector2(1, 1); + this.center = new Vector2(0, 0); + this.rotation = 0; + this.matrixAutoUpdate = true; + this.matrix = new Matrix3(); + this.generateMipmaps = true; + this.premultiplyAlpha = false; + this.flipY = true; + this.unpackAlignment = 4; + this.colorSpace = colorSpace; + this.userData = {}; + this.version = 0; + this.onUpdate = null; + this.isRenderTargetTexture = false; + this.pmremVersion = 0; + } + get image() { + return this.source.data; + } + set image(value = null) { + this.source.data = value; + } + updateMatrix() { + this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y); + } + clone() { + return new this.constructor().copy(this); + } + copy(source) { + this.name = source.name; + this.source = source.source; + this.mipmaps = source.mipmaps.slice(0); + this.mapping = source.mapping; + this.channel = source.channel; + this.wrapS = source.wrapS; + this.wrapT = source.wrapT; + this.magFilter = source.magFilter; + this.minFilter = source.minFilter; + this.anisotropy = source.anisotropy; + this.format = source.format; + this.internalFormat = source.internalFormat; + this.type = source.type; + this.offset.copy(source.offset); + this.repeat.copy(source.repeat); + this.center.copy(source.center); + this.rotation = source.rotation; + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrix.copy(source.matrix); + this.generateMipmaps = source.generateMipmaps; + this.premultiplyAlpha = source.premultiplyAlpha; + this.flipY = source.flipY; + this.unpackAlignment = source.unpackAlignment; + this.colorSpace = source.colorSpace; + this.userData = JSON.parse(JSON.stringify(source.userData)); + this.needsUpdate = true; + return this; + } + toJSON(meta) { + const isRootObject = meta === void 0 || typeof meta === "string"; + if (!isRootObject && meta.textures[this.uuid] !== void 0) { + return meta.textures[this.uuid]; + } + const output = { + metadata: { + version: 4.6, + type: "Texture", + generator: "Texture.toJSON" + }, + uuid: this.uuid, + name: this.name, + image: this.source.toJSON(meta).uuid, + mapping: this.mapping, + channel: this.channel, + repeat: [this.repeat.x, this.repeat.y], + offset: [this.offset.x, this.offset.y], + center: [this.center.x, this.center.y], + rotation: this.rotation, + wrap: [this.wrapS, this.wrapT], + format: this.format, + internalFormat: this.internalFormat, + type: this.type, + colorSpace: this.colorSpace, + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + flipY: this.flipY, + generateMipmaps: this.generateMipmaps, + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + }; + if (Object.keys(this.userData).length > 0) output.userData = this.userData; + if (!isRootObject) { + meta.textures[this.uuid] = output; + } + return output; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + transformUv(uv) { + if (this.mapping !== UVMapping) return uv; + uv.applyMatrix3(this.matrix); + if (uv.x < 0 || uv.x > 1) { + switch (this.wrapS) { + case RepeatWrapping: + uv.x = uv.x - Math.floor(uv.x); + break; + case ClampToEdgeWrapping: + uv.x = uv.x < 0 ? 0 : 1; + break; + case MirroredRepeatWrapping: + if (Math.abs(Math.floor(uv.x) % 2) === 1) { + uv.x = Math.ceil(uv.x) - uv.x; + } else { + uv.x = uv.x - Math.floor(uv.x); + } + break; + } + } + if (uv.y < 0 || uv.y > 1) { + switch (this.wrapT) { + case RepeatWrapping: + uv.y = uv.y - Math.floor(uv.y); + break; + case ClampToEdgeWrapping: + uv.y = uv.y < 0 ? 0 : 1; + break; + case MirroredRepeatWrapping: + if (Math.abs(Math.floor(uv.y) % 2) === 1) { + uv.y = Math.ceil(uv.y) - uv.y; + } else { + uv.y = uv.y - Math.floor(uv.y); + } + break; + } + } + if (this.flipY) { + uv.y = 1 - uv.y; + } + return uv; + } + set needsUpdate(value) { + if (value === true) { + this.version++; + this.source.needsUpdate = true; + } + } + set needsPMREMUpdate(value) { + if (value === true) { + this.pmremVersion++; + } + } +}; +Texture.DEFAULT_IMAGE = null; +Texture.DEFAULT_MAPPING = UVMapping; +Texture.DEFAULT_ANISOTROPY = 1; +var Vector4 = class _Vector4 { + constructor(x = 0, y = 0, z = 0, w = 1) { + _Vector4.prototype.isVector4 = true; + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + get width() { + return this.z; + } + set width(value) { + this.z = value; + } + get height() { + return this.w; + } + set height(value) { + this.w = value; + } + set(x, y, z, w) { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + return this; + } + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + this.z = scalar; + this.w = scalar; + return this; + } + setX(x) { + this.x = x; + return this; + } + setY(y) { + this.y = y; + return this; + } + setZ(z) { + this.z = z; + return this; + } + setW(w) { + this.w = w; + return this; + } + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + case 1: + this.y = value; + break; + case 2: + this.z = value; + break; + case 3: + this.w = value; + break; + default: + throw new Error("index is out of range: " + index); + } + return this; + } + getComponent(index) { + switch (index) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + case 3: + return this.w; + default: + throw new Error("index is out of range: " + index); + } + } + clone() { + return new this.constructor(this.x, this.y, this.z, this.w); + } + copy(v) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w !== void 0 ? v.w : 1; + return this; + } + add(v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + this.w += v.w; + return this; + } + addScalar(s) { + this.x += s; + this.y += s; + this.z += s; + this.w += s; + return this; + } + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + this.w = a.w + b.w; + return this; + } + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + this.w += v.w * s; + return this; + } + sub(v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + this.w -= v.w; + return this; + } + subScalar(s) { + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + return this; + } + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + this.w = a.w - b.w; + return this; + } + multiply(v) { + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + this.w *= v.w; + return this; + } + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + return this; + } + applyMatrix4(m) { + const x = this.x, y = this.y, z = this.z, w = this.w; + const e = m.elements; + this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w; + this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w; + this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w; + this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w; + return this; + } + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + setAxisAngleFromQuaternion(q) { + this.w = 2 * Math.acos(q.w); + const s = Math.sqrt(1 - q.w * q.w); + if (s < 1e-4) { + this.x = 1; + this.y = 0; + this.z = 0; + } else { + this.x = q.x / s; + this.y = q.y / s; + this.z = q.z / s; + } + return this; + } + setAxisAngleFromRotationMatrix(m) { + let angle, x, y, z; + const epsilon = 0.01, epsilon2 = 0.1, te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10]; + if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) { + if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) { + this.set(1, 0, 0, 0); + return this; + } + angle = Math.PI; + const xx = (m11 + 1) / 2; + const yy = (m22 + 1) / 2; + const zz = (m33 + 1) / 2; + const xy = (m12 + m21) / 4; + const xz = (m13 + m31) / 4; + const yz = (m23 + m32) / 4; + if (xx > yy && xx > zz) { + if (xx < epsilon) { + x = 0; + y = 0.707106781; + z = 0.707106781; + } else { + x = Math.sqrt(xx); + y = xy / x; + z = xz / x; + } + } else if (yy > zz) { + if (yy < epsilon) { + x = 0.707106781; + y = 0; + z = 0.707106781; + } else { + y = Math.sqrt(yy); + x = xy / y; + z = yz / y; + } + } else { + if (zz < epsilon) { + x = 0.707106781; + y = 0.707106781; + z = 0; + } else { + z = Math.sqrt(zz); + x = xz / z; + y = yz / z; + } + } + this.set(x, y, z, angle); + return this; + } + let s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12)); + if (Math.abs(s) < 1e-3) s = 1; + this.x = (m32 - m23) / s; + this.y = (m13 - m31) / s; + this.z = (m21 - m12) / s; + this.w = Math.acos((m11 + m22 + m33 - 1) / 2); + return this; + } + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + this.z = Math.min(this.z, v.z); + this.w = Math.min(this.w, v.w); + return this; + } + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + this.z = Math.max(this.z, v.z); + this.w = Math.max(this.w, v.w); + return this; + } + clamp(min, max2) { + this.x = Math.max(min.x, Math.min(max2.x, this.x)); + this.y = Math.max(min.y, Math.min(max2.y, this.y)); + this.z = Math.max(min.z, Math.min(max2.z, this.z)); + this.w = Math.max(min.w, Math.min(max2.w, this.w)); + return this; + } + clampScalar(minVal, maxVal) { + this.x = Math.max(minVal, Math.min(maxVal, this.x)); + this.y = Math.max(minVal, Math.min(maxVal, this.y)); + this.z = Math.max(minVal, Math.min(maxVal, this.z)); + this.w = Math.max(minVal, Math.min(maxVal, this.w)); + return this; + } + clampLength(min, max2) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length))); + } + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + this.z = Math.floor(this.z); + this.w = Math.floor(this.w); + return this; + } + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + this.z = Math.ceil(this.z); + this.w = Math.ceil(this.w); + return this; + } + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + this.z = Math.round(this.z); + this.w = Math.round(this.w); + return this; + } + roundToZero() { + this.x = Math.trunc(this.x); + this.y = Math.trunc(this.y); + this.z = Math.trunc(this.z); + this.w = Math.trunc(this.w); + return this; + } + negate() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + this.w = -this.w; + return this; + } + dot(v) { + return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; + } + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + setLength(length) { + return this.normalize().multiplyScalar(length); + } + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + this.z += (v.z - this.z) * alpha; + this.w += (v.w - this.w) * alpha; + return this; + } + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + this.z = v1.z + (v2.z - v1.z) * alpha; + this.w = v1.w + (v2.w - v1.w) * alpha; + return this; + } + equals(v) { + return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w; + } + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + this.z = array[offset + 2]; + this.w = array[offset + 3]; + return this; + } + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + array[offset + 2] = this.z; + array[offset + 3] = this.w; + return array; + } + fromBufferAttribute(attribute, index) { + this.x = attribute.getX(index); + this.y = attribute.getY(index); + this.z = attribute.getZ(index); + this.w = attribute.getW(index); + return this; + } + random() { + this.x = Math.random(); + this.y = Math.random(); + this.z = Math.random(); + this.w = Math.random(); + return this; + } + *[Symbol.iterator]() { + yield this.x; + yield this.y; + yield this.z; + yield this.w; + } +}; +var RenderTarget = class extends EventDispatcher { + constructor(width = 1, height = 1, options = {}) { + super(); + this.isRenderTarget = true; + this.width = width; + this.height = height; + this.depth = 1; + this.scissor = new Vector4(0, 0, width, height); + this.scissorTest = false; + this.viewport = new Vector4(0, 0, width, height); + const image = { width, height, depth: 1 }; + options = Object.assign({ + generateMipmaps: false, + internalFormat: null, + minFilter: LinearFilter, + depthBuffer: true, + stencilBuffer: false, + depthTexture: null, + samples: 0, + count: 1 + }, options); + const texture = new Texture(image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace); + texture.flipY = false; + texture.generateMipmaps = options.generateMipmaps; + texture.internalFormat = options.internalFormat; + this.textures = []; + const count = options.count; + for (let i = 0; i < count; i++) { + this.textures[i] = texture.clone(); + this.textures[i].isRenderTargetTexture = true; + } + this.depthBuffer = options.depthBuffer; + this.stencilBuffer = options.stencilBuffer; + this.depthTexture = options.depthTexture; + this.samples = options.samples; + } + get texture() { + return this.textures[0]; + } + set texture(value) { + this.textures[0] = value; + } + setSize(width, height, depth = 1) { + if (this.width !== width || this.height !== height || this.depth !== depth) { + this.width = width; + this.height = height; + this.depth = depth; + for (let i = 0, il = this.textures.length; i < il; i++) { + this.textures[i].image.width = width; + this.textures[i].image.height = height; + this.textures[i].image.depth = depth; + } + this.dispose(); + } + this.viewport.set(0, 0, width, height); + this.scissor.set(0, 0, width, height); + } + clone() { + return new this.constructor().copy(this); + } + copy(source) { + this.width = source.width; + this.height = source.height; + this.depth = source.depth; + this.scissor.copy(source.scissor); + this.scissorTest = source.scissorTest; + this.viewport.copy(source.viewport); + this.textures.length = 0; + for (let i = 0, il = source.textures.length; i < il; i++) { + this.textures[i] = source.textures[i].clone(); + this.textures[i].isRenderTargetTexture = true; + } + const image = Object.assign({}, source.texture.image); + this.texture.source = new Source(image); + this.depthBuffer = source.depthBuffer; + this.stencilBuffer = source.stencilBuffer; + if (source.depthTexture !== null) this.depthTexture = source.depthTexture.clone(); + this.samples = source.samples; + return this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +}; +var WebGLRenderTarget = class extends RenderTarget { + constructor(width = 1, height = 1, options = {}) { + super(width, height, options); + this.isWebGLRenderTarget = true; + } +}; +var DataArrayTexture = class extends Texture { + constructor(data = null, width = 1, height = 1, depth = 1) { + super(null); + this.isDataArrayTexture = true; + this.image = { data, width, height, depth }; + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + this.wrapR = ClampToEdgeWrapping; + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + } +}; +var Data3DTexture = class extends Texture { + constructor(data = null, width = 1, height = 1, depth = 1) { + super(null); + this.isData3DTexture = true; + this.image = { data, width, height, depth }; + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + this.wrapR = ClampToEdgeWrapping; + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + } +}; +var Quaternion = class { + constructor(x = 0, y = 0, z = 0, w = 1) { + this.isQuaternion = true; + this._x = x; + this._y = y; + this._z = z; + this._w = w; + } + static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) { + let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3]; + const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3]; + if (t === 0) { + dst[dstOffset + 0] = x0; + dst[dstOffset + 1] = y0; + dst[dstOffset + 2] = z0; + dst[dstOffset + 3] = w0; + return; + } + if (t === 1) { + dst[dstOffset + 0] = x1; + dst[dstOffset + 1] = y1; + dst[dstOffset + 2] = z1; + dst[dstOffset + 3] = w1; + return; + } + if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) { + let s = 1 - t; + const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos; + if (sqrSin > Number.EPSILON) { + const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir); + s = Math.sin(s * len) / sin; + t = Math.sin(t * len) / sin; + } + const tDir = t * dir; + x0 = x0 * s + x1 * tDir; + y0 = y0 * s + y1 * tDir; + z0 = z0 * s + z1 * tDir; + w0 = w0 * s + w1 * tDir; + if (s === 1 - t) { + const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0); + x0 *= f; + y0 *= f; + z0 *= f; + w0 *= f; + } + } + dst[dstOffset] = x0; + dst[dstOffset + 1] = y0; + dst[dstOffset + 2] = z0; + dst[dstOffset + 3] = w0; + } + static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) { + const x0 = src0[srcOffset0]; + const y0 = src0[srcOffset0 + 1]; + const z0 = src0[srcOffset0 + 2]; + const w0 = src0[srcOffset0 + 3]; + const x1 = src1[srcOffset1]; + const y1 = src1[srcOffset1 + 1]; + const z1 = src1[srcOffset1 + 2]; + const w1 = src1[srcOffset1 + 3]; + dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1; + dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1; + dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1; + dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1; + return dst; + } + get x() { + return this._x; + } + set x(value) { + this._x = value; + this._onChangeCallback(); + } + get y() { + return this._y; + } + set y(value) { + this._y = value; + this._onChangeCallback(); + } + get z() { + return this._z; + } + set z(value) { + this._z = value; + this._onChangeCallback(); + } + get w() { + return this._w; + } + set w(value) { + this._w = value; + this._onChangeCallback(); + } + set(x, y, z, w) { + this._x = x; + this._y = y; + this._z = z; + this._w = w; + this._onChangeCallback(); + return this; + } + clone() { + return new this.constructor(this._x, this._y, this._z, this._w); + } + copy(quaternion2) { + this._x = quaternion2.x; + this._y = quaternion2.y; + this._z = quaternion2.z; + this._w = quaternion2.w; + this._onChangeCallback(); + return this; + } + setFromEuler(euler, update = true) { + const x = euler._x, y = euler._y, z = euler._z, order = euler._order; + const cos = Math.cos; + const sin = Math.sin; + const c1 = cos(x / 2); + const c2 = cos(y / 2); + const c3 = cos(z / 2); + const s1 = sin(x / 2); + const s2 = sin(y / 2); + const s3 = sin(z / 2); + switch (order) { + case "XYZ": + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + case "YXZ": + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + case "ZXY": + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + case "ZYX": + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + case "YZX": + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + case "XZY": + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + default: + console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + order); + } + if (update === true) this._onChangeCallback(); + return this; + } + setFromAxisAngle(axis, angle) { + const halfAngle = angle / 2, s = Math.sin(halfAngle); + this._x = axis.x * s; + this._y = axis.y * s; + this._z = axis.z * s; + this._w = Math.cos(halfAngle); + this._onChangeCallback(); + return this; + } + setFromRotationMatrix(m) { + const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33; + if (trace > 0) { + const s = 0.5 / Math.sqrt(trace + 1); + this._w = 0.25 / s; + this._x = (m32 - m23) * s; + this._y = (m13 - m31) * s; + this._z = (m21 - m12) * s; + } else if (m11 > m22 && m11 > m33) { + const s = 2 * Math.sqrt(1 + m11 - m22 - m33); + this._w = (m32 - m23) / s; + this._x = 0.25 * s; + this._y = (m12 + m21) / s; + this._z = (m13 + m31) / s; + } else if (m22 > m33) { + const s = 2 * Math.sqrt(1 + m22 - m11 - m33); + this._w = (m13 - m31) / s; + this._x = (m12 + m21) / s; + this._y = 0.25 * s; + this._z = (m23 + m32) / s; + } else { + const s = 2 * Math.sqrt(1 + m33 - m11 - m22); + this._w = (m21 - m12) / s; + this._x = (m13 + m31) / s; + this._y = (m23 + m32) / s; + this._z = 0.25 * s; + } + this._onChangeCallback(); + return this; + } + setFromUnitVectors(vFrom, vTo) { + let r = vFrom.dot(vTo) + 1; + if (r < Number.EPSILON) { + r = 0; + if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) { + this._x = -vFrom.y; + this._y = vFrom.x; + this._z = 0; + this._w = r; + } else { + this._x = 0; + this._y = -vFrom.z; + this._z = vFrom.y; + this._w = r; + } + } else { + this._x = vFrom.y * vTo.z - vFrom.z * vTo.y; + this._y = vFrom.z * vTo.x - vFrom.x * vTo.z; + this._z = vFrom.x * vTo.y - vFrom.y * vTo.x; + this._w = r; + } + return this.normalize(); + } + angleTo(q) { + return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1))); + } + rotateTowards(q, step) { + const angle = this.angleTo(q); + if (angle === 0) return this; + const t = Math.min(1, step / angle); + this.slerp(q, t); + return this; + } + identity() { + return this.set(0, 0, 0, 1); + } + invert() { + return this.conjugate(); + } + conjugate() { + this._x *= -1; + this._y *= -1; + this._z *= -1; + this._onChangeCallback(); + return this; + } + dot(v) { + return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; + } + lengthSq() { + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + } + length() { + return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w); + } + normalize() { + let l = this.length(); + if (l === 0) { + this._x = 0; + this._y = 0; + this._z = 0; + this._w = 1; + } else { + l = 1 / l; + this._x = this._x * l; + this._y = this._y * l; + this._z = this._z * l; + this._w = this._w * l; + } + this._onChangeCallback(); + return this; + } + multiply(q) { + return this.multiplyQuaternions(this, q); + } + premultiply(q) { + return this.multiplyQuaternions(q, this); + } + multiplyQuaternions(a, b) { + const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; + const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; + this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + this._onChangeCallback(); + return this; + } + slerp(qb, t) { + if (t === 0) return this; + if (t === 1) return this.copy(qb); + const x = this._x, y = this._y, z = this._z, w = this._w; + let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; + if (cosHalfTheta < 0) { + this._w = -qb._w; + this._x = -qb._x; + this._y = -qb._y; + this._z = -qb._z; + cosHalfTheta = -cosHalfTheta; + } else { + this.copy(qb); + } + if (cosHalfTheta >= 1) { + this._w = w; + this._x = x; + this._y = y; + this._z = z; + return this; + } + const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta; + if (sqrSinHalfTheta <= Number.EPSILON) { + const s = 1 - t; + this._w = s * w + t * this._w; + this._x = s * x + t * this._x; + this._y = s * y + t * this._y; + this._z = s * z + t * this._z; + this.normalize(); + return this; + } + const sinHalfTheta = Math.sqrt(sqrSinHalfTheta); + const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta); + const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t * halfTheta) / sinHalfTheta; + this._w = w * ratioA + this._w * ratioB; + this._x = x * ratioA + this._x * ratioB; + this._y = y * ratioA + this._y * ratioB; + this._z = z * ratioA + this._z * ratioB; + this._onChangeCallback(); + return this; + } + slerpQuaternions(qa, qb, t) { + return this.copy(qa).slerp(qb, t); + } + random() { + const theta1 = 2 * Math.PI * Math.random(); + const theta2 = 2 * Math.PI * Math.random(); + const x0 = Math.random(); + const r1 = Math.sqrt(1 - x0); + const r2 = Math.sqrt(x0); + return this.set( + r1 * Math.sin(theta1), + r1 * Math.cos(theta1), + r2 * Math.sin(theta2), + r2 * Math.cos(theta2) + ); + } + equals(quaternion2) { + return quaternion2._x === this._x && quaternion2._y === this._y && quaternion2._z === this._z && quaternion2._w === this._w; + } + fromArray(array, offset = 0) { + this._x = array[offset]; + this._y = array[offset + 1]; + this._z = array[offset + 2]; + this._w = array[offset + 3]; + this._onChangeCallback(); + return this; + } + toArray(array = [], offset = 0) { + array[offset] = this._x; + array[offset + 1] = this._y; + array[offset + 2] = this._z; + array[offset + 3] = this._w; + return array; + } + fromBufferAttribute(attribute, index) { + this._x = attribute.getX(index); + this._y = attribute.getY(index); + this._z = attribute.getZ(index); + this._w = attribute.getW(index); + this._onChangeCallback(); + return this; + } + toJSON() { + return this.toArray(); + } + _onChange(callback) { + this._onChangeCallback = callback; + return this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x; + yield this._y; + yield this._z; + yield this._w; + } +}; +var Vector3 = class _Vector3 { + constructor(x = 0, y = 0, z = 0) { + _Vector3.prototype.isVector3 = true; + this.x = x; + this.y = y; + this.z = z; + } + set(x, y, z) { + if (z === void 0) z = this.z; + this.x = x; + this.y = y; + this.z = z; + return this; + } + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + this.z = scalar; + return this; + } + setX(x) { + this.x = x; + return this; + } + setY(y) { + this.y = y; + return this; + } + setZ(z) { + this.z = z; + return this; + } + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + case 1: + this.y = value; + break; + case 2: + this.z = value; + break; + default: + throw new Error("index is out of range: " + index); + } + return this; + } + getComponent(index) { + switch (index) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + default: + throw new Error("index is out of range: " + index); + } + } + clone() { + return new this.constructor(this.x, this.y, this.z); + } + copy(v) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + return this; + } + add(v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + } + addScalar(s) { + this.x += s; + this.y += s; + this.z += s; + return this; + } + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + return this; + } + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + return this; + } + sub(v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + } + subScalar(s) { + this.x -= s; + this.y -= s; + this.z -= s; + return this; + } + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + return this; + } + multiply(v) { + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + return this; + } + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + return this; + } + multiplyVectors(a, b) { + this.x = a.x * b.x; + this.y = a.y * b.y; + this.z = a.z * b.z; + return this; + } + applyEuler(euler) { + return this.applyQuaternion(_quaternion$4.setFromEuler(euler)); + } + applyAxisAngle(axis, angle) { + return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle)); + } + applyMatrix3(m) { + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + this.x = e[0] * x + e[3] * y + e[6] * z; + this.y = e[1] * x + e[4] * y + e[7] * z; + this.z = e[2] * x + e[5] * y + e[8] * z; + return this; + } + applyNormalMatrix(m) { + return this.applyMatrix3(m).normalize(); + } + applyMatrix4(m) { + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]); + this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w; + this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w; + this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w; + return this; + } + applyQuaternion(q) { + const vx = this.x, vy = this.y, vz = this.z; + const qx = q.x, qy = q.y, qz = q.z, qw = q.w; + const tx = 2 * (qy * vz - qz * vy); + const ty = 2 * (qz * vx - qx * vz); + const tz = 2 * (qx * vy - qy * vx); + this.x = vx + qw * tx + qy * tz - qz * ty; + this.y = vy + qw * ty + qz * tx - qx * tz; + this.z = vz + qw * tz + qx * ty - qy * tx; + return this; + } + project(camera) { + return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix); + } + unproject(camera) { + return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld); + } + transformDirection(m) { + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + this.x = e[0] * x + e[4] * y + e[8] * z; + this.y = e[1] * x + e[5] * y + e[9] * z; + this.z = e[2] * x + e[6] * y + e[10] * z; + return this.normalize(); + } + divide(v) { + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + return this; + } + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + this.z = Math.min(this.z, v.z); + return this; + } + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + this.z = Math.max(this.z, v.z); + return this; + } + clamp(min, max2) { + this.x = Math.max(min.x, Math.min(max2.x, this.x)); + this.y = Math.max(min.y, Math.min(max2.y, this.y)); + this.z = Math.max(min.z, Math.min(max2.z, this.z)); + return this; + } + clampScalar(minVal, maxVal) { + this.x = Math.max(minVal, Math.min(maxVal, this.x)); + this.y = Math.max(minVal, Math.min(maxVal, this.y)); + this.z = Math.max(minVal, Math.min(maxVal, this.z)); + return this; + } + clampLength(min, max2) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length))); + } + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + this.z = Math.floor(this.z); + return this; + } + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + this.z = Math.ceil(this.z); + return this; + } + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + this.z = Math.round(this.z); + return this; + } + roundToZero() { + this.x = Math.trunc(this.x); + this.y = Math.trunc(this.y); + this.z = Math.trunc(this.z); + return this; + } + negate() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + return this; + } + dot(v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + } + // TODO lengthSquared? + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + setLength(length) { + return this.normalize().multiplyScalar(length); + } + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + this.z += (v.z - this.z) * alpha; + return this; + } + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + this.z = v1.z + (v2.z - v1.z) * alpha; + return this; + } + cross(v) { + return this.crossVectors(this, v); + } + crossVectors(a, b) { + const ax = a.x, ay = a.y, az = a.z; + const bx = b.x, by = b.y, bz = b.z; + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + return this; + } + projectOnVector(v) { + const denominator = v.lengthSq(); + if (denominator === 0) return this.set(0, 0, 0); + const scalar = v.dot(this) / denominator; + return this.copy(v).multiplyScalar(scalar); + } + projectOnPlane(planeNormal) { + _vector$c.copy(this).projectOnVector(planeNormal); + return this.sub(_vector$c); + } + reflect(normal) { + return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal))); + } + angleTo(v) { + const denominator = Math.sqrt(this.lengthSq() * v.lengthSq()); + if (denominator === 0) return Math.PI / 2; + const theta = this.dot(v) / denominator; + return Math.acos(clamp(theta, -1, 1)); + } + distanceTo(v) { + return Math.sqrt(this.distanceToSquared(v)); + } + distanceToSquared(v) { + const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; + return dx * dx + dy * dy + dz * dz; + } + manhattanDistanceTo(v) { + return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z); + } + setFromSpherical(s) { + return this.setFromSphericalCoords(s.radius, s.phi, s.theta); + } + setFromSphericalCoords(radius, phi, theta) { + const sinPhiRadius = Math.sin(phi) * radius; + this.x = sinPhiRadius * Math.sin(theta); + this.y = Math.cos(phi) * radius; + this.z = sinPhiRadius * Math.cos(theta); + return this; + } + setFromCylindrical(c) { + return this.setFromCylindricalCoords(c.radius, c.theta, c.y); + } + setFromCylindricalCoords(radius, theta, y) { + this.x = radius * Math.sin(theta); + this.y = y; + this.z = radius * Math.cos(theta); + return this; + } + setFromMatrixPosition(m) { + const e = m.elements; + this.x = e[12]; + this.y = e[13]; + this.z = e[14]; + return this; + } + setFromMatrixScale(m) { + const sx = this.setFromMatrixColumn(m, 0).length(); + const sy = this.setFromMatrixColumn(m, 1).length(); + const sz = this.setFromMatrixColumn(m, 2).length(); + this.x = sx; + this.y = sy; + this.z = sz; + return this; + } + setFromMatrixColumn(m, index) { + return this.fromArray(m.elements, index * 4); + } + setFromMatrix3Column(m, index) { + return this.fromArray(m.elements, index * 3); + } + setFromEuler(e) { + this.x = e._x; + this.y = e._y; + this.z = e._z; + return this; + } + setFromColor(c) { + this.x = c.r; + this.y = c.g; + this.z = c.b; + return this; + } + equals(v) { + return v.x === this.x && v.y === this.y && v.z === this.z; + } + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + this.z = array[offset + 2]; + return this; + } + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + array[offset + 2] = this.z; + return array; + } + fromBufferAttribute(attribute, index) { + this.x = attribute.getX(index); + this.y = attribute.getY(index); + this.z = attribute.getZ(index); + return this; + } + random() { + this.x = Math.random(); + this.y = Math.random(); + this.z = Math.random(); + return this; + } + randomDirection() { + const theta = Math.random() * Math.PI * 2; + const u = Math.random() * 2 - 1; + const c = Math.sqrt(1 - u * u); + this.x = c * Math.cos(theta); + this.y = u; + this.z = c * Math.sin(theta); + return this; + } + *[Symbol.iterator]() { + yield this.x; + yield this.y; + yield this.z; + } +}; +var _vector$c = /* @__PURE__ */ new Vector3(); +var _quaternion$4 = /* @__PURE__ */ new Quaternion(); +var Box3 = class { + constructor(min = new Vector3(Infinity, Infinity, Infinity), max2 = new Vector3(-Infinity, -Infinity, -Infinity)) { + this.isBox3 = true; + this.min = min; + this.max = max2; + } + set(min, max2) { + this.min.copy(min); + this.max.copy(max2); + return this; + } + setFromArray(array) { + this.makeEmpty(); + for (let i = 0, il = array.length; i < il; i += 3) { + this.expandByPoint(_vector$b.fromArray(array, i)); + } + return this; + } + setFromBufferAttribute(attribute) { + this.makeEmpty(); + for (let i = 0, il = attribute.count; i < il; i++) { + this.expandByPoint(_vector$b.fromBufferAttribute(attribute, i)); + } + return this; + } + setFromPoints(points) { + this.makeEmpty(); + for (let i = 0, il = points.length; i < il; i++) { + this.expandByPoint(points[i]); + } + return this; + } + setFromCenterAndSize(center, size) { + const halfSize = _vector$b.copy(size).multiplyScalar(0.5); + this.min.copy(center).sub(halfSize); + this.max.copy(center).add(halfSize); + return this; + } + setFromObject(object, precise = false) { + this.makeEmpty(); + return this.expandByObject(object, precise); + } + clone() { + return new this.constructor().copy(this); + } + copy(box) { + this.min.copy(box.min); + this.max.copy(box.max); + return this; + } + makeEmpty() { + this.min.x = this.min.y = this.min.z = Infinity; + this.max.x = this.max.y = this.max.z = -Infinity; + return this; + } + isEmpty() { + return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z; + } + getCenter(target) { + return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5); + } + getSize(target) { + return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min); + } + expandByPoint(point) { + this.min.min(point); + this.max.max(point); + return this; + } + expandByVector(vector) { + this.min.sub(vector); + this.max.add(vector); + return this; + } + expandByScalar(scalar) { + this.min.addScalar(-scalar); + this.max.addScalar(scalar); + return this; + } + expandByObject(object, precise = false) { + object.updateWorldMatrix(false, false); + const geometry = object.geometry; + if (geometry !== void 0) { + const positionAttribute = geometry.getAttribute("position"); + if (precise === true && positionAttribute !== void 0 && object.isInstancedMesh !== true) { + for (let i = 0, l = positionAttribute.count; i < l; i++) { + if (object.isMesh === true) { + object.getVertexPosition(i, _vector$b); + } else { + _vector$b.fromBufferAttribute(positionAttribute, i); + } + _vector$b.applyMatrix4(object.matrixWorld); + this.expandByPoint(_vector$b); + } + } else { + if (object.boundingBox !== void 0) { + if (object.boundingBox === null) { + object.computeBoundingBox(); + } + _box$4.copy(object.boundingBox); + } else { + if (geometry.boundingBox === null) { + geometry.computeBoundingBox(); + } + _box$4.copy(geometry.boundingBox); + } + _box$4.applyMatrix4(object.matrixWorld); + this.union(_box$4); + } + } + const children = object.children; + for (let i = 0, l = children.length; i < l; i++) { + this.expandByObject(children[i], precise); + } + return this; + } + containsPoint(point) { + return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true; + } + containsBox(box) { + return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z; + } + getParameter(point, target) { + return target.set( + (point.x - this.min.x) / (this.max.x - this.min.x), + (point.y - this.min.y) / (this.max.y - this.min.y), + (point.z - this.min.z) / (this.max.z - this.min.z) + ); + } + intersectsBox(box) { + return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true; + } + intersectsSphere(sphere) { + this.clampPoint(sphere.center, _vector$b); + return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius; + } + intersectsPlane(plane) { + let min, max2; + if (plane.normal.x > 0) { + min = plane.normal.x * this.min.x; + max2 = plane.normal.x * this.max.x; + } else { + min = plane.normal.x * this.max.x; + max2 = plane.normal.x * this.min.x; + } + if (plane.normal.y > 0) { + min += plane.normal.y * this.min.y; + max2 += plane.normal.y * this.max.y; + } else { + min += plane.normal.y * this.max.y; + max2 += plane.normal.y * this.min.y; + } + if (plane.normal.z > 0) { + min += plane.normal.z * this.min.z; + max2 += plane.normal.z * this.max.z; + } else { + min += plane.normal.z * this.max.z; + max2 += plane.normal.z * this.min.z; + } + return min <= -plane.constant && max2 >= -plane.constant; + } + intersectsTriangle(triangle) { + if (this.isEmpty()) { + return false; + } + this.getCenter(_center); + _extents.subVectors(this.max, _center); + _v0$2.subVectors(triangle.a, _center); + _v1$7.subVectors(triangle.b, _center); + _v2$4.subVectors(triangle.c, _center); + _f0.subVectors(_v1$7, _v0$2); + _f1.subVectors(_v2$4, _v1$7); + _f2.subVectors(_v0$2, _v2$4); + let axes = [ + 0, + -_f0.z, + _f0.y, + 0, + -_f1.z, + _f1.y, + 0, + -_f2.z, + _f2.y, + _f0.z, + 0, + -_f0.x, + _f1.z, + 0, + -_f1.x, + _f2.z, + 0, + -_f2.x, + -_f0.y, + _f0.x, + 0, + -_f1.y, + _f1.x, + 0, + -_f2.y, + _f2.x, + 0 + ]; + if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) { + return false; + } + axes = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) { + return false; + } + _triangleNormal.crossVectors(_f0, _f1); + axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z]; + return satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents); + } + clampPoint(point, target) { + return target.copy(point).clamp(this.min, this.max); + } + distanceToPoint(point) { + return this.clampPoint(point, _vector$b).distanceTo(point); + } + getBoundingSphere(target) { + if (this.isEmpty()) { + target.makeEmpty(); + } else { + this.getCenter(target.center); + target.radius = this.getSize(_vector$b).length() * 0.5; + } + return target; + } + intersect(box) { + this.min.max(box.min); + this.max.min(box.max); + if (this.isEmpty()) this.makeEmpty(); + return this; + } + union(box) { + this.min.min(box.min); + this.max.max(box.max); + return this; + } + applyMatrix4(matrix) { + if (this.isEmpty()) return this; + _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix); + _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix); + _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix); + _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix); + _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix); + _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix); + _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix); + _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix); + this.setFromPoints(_points); + return this; + } + translate(offset) { + this.min.add(offset); + this.max.add(offset); + return this; + } + equals(box) { + return box.min.equals(this.min) && box.max.equals(this.max); + } +}; +var _points = [ + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3() +]; +var _vector$b = /* @__PURE__ */ new Vector3(); +var _box$4 = /* @__PURE__ */ new Box3(); +var _v0$2 = /* @__PURE__ */ new Vector3(); +var _v1$7 = /* @__PURE__ */ new Vector3(); +var _v2$4 = /* @__PURE__ */ new Vector3(); +var _f0 = /* @__PURE__ */ new Vector3(); +var _f1 = /* @__PURE__ */ new Vector3(); +var _f2 = /* @__PURE__ */ new Vector3(); +var _center = /* @__PURE__ */ new Vector3(); +var _extents = /* @__PURE__ */ new Vector3(); +var _triangleNormal = /* @__PURE__ */ new Vector3(); +var _testAxis = /* @__PURE__ */ new Vector3(); +function satForAxes(axes, v0, v1, v2, extents) { + for (let i = 0, j = axes.length - 3; i <= j; i += 3) { + _testAxis.fromArray(axes, i); + const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z); + const p0 = v0.dot(_testAxis); + const p1 = v1.dot(_testAxis); + const p2 = v2.dot(_testAxis); + if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) { + return false; + } + } + return true; +} +var _box$3 = /* @__PURE__ */ new Box3(); +var _v1$6 = /* @__PURE__ */ new Vector3(); +var _v2$3 = /* @__PURE__ */ new Vector3(); +var Sphere = class { + constructor(center = new Vector3(), radius = -1) { + this.isSphere = true; + this.center = center; + this.radius = radius; + } + set(center, radius) { + this.center.copy(center); + this.radius = radius; + return this; + } + setFromPoints(points, optionalCenter) { + const center = this.center; + if (optionalCenter !== void 0) { + center.copy(optionalCenter); + } else { + _box$3.setFromPoints(points).getCenter(center); + } + let maxRadiusSq = 0; + for (let i = 0, il = points.length; i < il; i++) { + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i])); + } + this.radius = Math.sqrt(maxRadiusSq); + return this; + } + copy(sphere) { + this.center.copy(sphere.center); + this.radius = sphere.radius; + return this; + } + isEmpty() { + return this.radius < 0; + } + makeEmpty() { + this.center.set(0, 0, 0); + this.radius = -1; + return this; + } + containsPoint(point) { + return point.distanceToSquared(this.center) <= this.radius * this.radius; + } + distanceToPoint(point) { + return point.distanceTo(this.center) - this.radius; + } + intersectsSphere(sphere) { + const radiusSum = this.radius + sphere.radius; + return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum; + } + intersectsBox(box) { + return box.intersectsSphere(this); + } + intersectsPlane(plane) { + return Math.abs(plane.distanceToPoint(this.center)) <= this.radius; + } + clampPoint(point, target) { + const deltaLengthSq = this.center.distanceToSquared(point); + target.copy(point); + if (deltaLengthSq > this.radius * this.radius) { + target.sub(this.center).normalize(); + target.multiplyScalar(this.radius).add(this.center); + } + return target; + } + getBoundingBox(target) { + if (this.isEmpty()) { + target.makeEmpty(); + return target; + } + target.set(this.center, this.center); + target.expandByScalar(this.radius); + return target; + } + applyMatrix4(matrix) { + this.center.applyMatrix4(matrix); + this.radius = this.radius * matrix.getMaxScaleOnAxis(); + return this; + } + translate(offset) { + this.center.add(offset); + return this; + } + expandByPoint(point) { + if (this.isEmpty()) { + this.center.copy(point); + this.radius = 0; + return this; + } + _v1$6.subVectors(point, this.center); + const lengthSq = _v1$6.lengthSq(); + if (lengthSq > this.radius * this.radius) { + const length = Math.sqrt(lengthSq); + const delta = (length - this.radius) * 0.5; + this.center.addScaledVector(_v1$6, delta / length); + this.radius += delta; + } + return this; + } + union(sphere) { + if (sphere.isEmpty()) { + return this; + } + if (this.isEmpty()) { + this.copy(sphere); + return this; + } + if (this.center.equals(sphere.center) === true) { + this.radius = Math.max(this.radius, sphere.radius); + } else { + _v2$3.subVectors(sphere.center, this.center).setLength(sphere.radius); + this.expandByPoint(_v1$6.copy(sphere.center).add(_v2$3)); + this.expandByPoint(_v1$6.copy(sphere.center).sub(_v2$3)); + } + return this; + } + equals(sphere) { + return sphere.center.equals(this.center) && sphere.radius === this.radius; + } + clone() { + return new this.constructor().copy(this); + } +}; +var _vector$a = /* @__PURE__ */ new Vector3(); +var _segCenter = /* @__PURE__ */ new Vector3(); +var _segDir = /* @__PURE__ */ new Vector3(); +var _diff = /* @__PURE__ */ new Vector3(); +var _edge1 = /* @__PURE__ */ new Vector3(); +var _edge2 = /* @__PURE__ */ new Vector3(); +var _normal$1 = /* @__PURE__ */ new Vector3(); +var Ray = class { + constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) { + this.origin = origin; + this.direction = direction; + } + set(origin, direction) { + this.origin.copy(origin); + this.direction.copy(direction); + return this; + } + copy(ray) { + this.origin.copy(ray.origin); + this.direction.copy(ray.direction); + return this; + } + at(t, target) { + return target.copy(this.origin).addScaledVector(this.direction, t); + } + lookAt(v) { + this.direction.copy(v).sub(this.origin).normalize(); + return this; + } + recast(t) { + this.origin.copy(this.at(t, _vector$a)); + return this; + } + closestPointToPoint(point, target) { + target.subVectors(point, this.origin); + const directionDistance = target.dot(this.direction); + if (directionDistance < 0) { + return target.copy(this.origin); + } + return target.copy(this.origin).addScaledVector(this.direction, directionDistance); + } + distanceToPoint(point) { + return Math.sqrt(this.distanceSqToPoint(point)); + } + distanceSqToPoint(point) { + const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction); + if (directionDistance < 0) { + return this.origin.distanceToSquared(point); + } + _vector$a.copy(this.origin).addScaledVector(this.direction, directionDistance); + return _vector$a.distanceToSquared(point); + } + distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) { + _segCenter.copy(v0).add(v1).multiplyScalar(0.5); + _segDir.copy(v1).sub(v0).normalize(); + _diff.copy(this.origin).sub(_segCenter); + const segExtent = v0.distanceTo(v1) * 0.5; + const a01 = -this.direction.dot(_segDir); + const b0 = _diff.dot(this.direction); + const b1 = -_diff.dot(_segDir); + const c = _diff.lengthSq(); + const det = Math.abs(1 - a01 * a01); + let s0, s1, sqrDist, extDet; + if (det > 0) { + s0 = a01 * b1 - b0; + s1 = a01 * b0 - b1; + extDet = segExtent * det; + if (s0 >= 0) { + if (s1 >= -extDet) { + if (s1 <= extDet) { + const invDet = 1 / det; + s0 *= invDet; + s1 *= invDet; + sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c; + } else { + s1 = segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } else { + s1 = -segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } else { + if (s1 <= -extDet) { + s0 = Math.max(0, -(-a01 * segExtent + b0)); + s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } else if (s1 <= extDet) { + s0 = 0; + s1 = Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = s1 * (s1 + 2 * b1) + c; + } else { + s0 = Math.max(0, -(a01 * segExtent + b0)); + s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } + } else { + s1 = a01 > 0 ? -segExtent : segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + if (optionalPointOnRay) { + optionalPointOnRay.copy(this.origin).addScaledVector(this.direction, s0); + } + if (optionalPointOnSegment) { + optionalPointOnSegment.copy(_segCenter).addScaledVector(_segDir, s1); + } + return sqrDist; + } + intersectSphere(sphere, target) { + _vector$a.subVectors(sphere.center, this.origin); + const tca = _vector$a.dot(this.direction); + const d2 = _vector$a.dot(_vector$a) - tca * tca; + const radius2 = sphere.radius * sphere.radius; + if (d2 > radius2) return null; + const thc = Math.sqrt(radius2 - d2); + const t0 = tca - thc; + const t1 = tca + thc; + if (t1 < 0) return null; + if (t0 < 0) return this.at(t1, target); + return this.at(t0, target); + } + intersectsSphere(sphere) { + return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius; + } + distanceToPlane(plane) { + const denominator = plane.normal.dot(this.direction); + if (denominator === 0) { + if (plane.distanceToPoint(this.origin) === 0) { + return 0; + } + return null; + } + const t = -(this.origin.dot(plane.normal) + plane.constant) / denominator; + return t >= 0 ? t : null; + } + intersectPlane(plane, target) { + const t = this.distanceToPlane(plane); + if (t === null) { + return null; + } + return this.at(t, target); + } + intersectsPlane(plane) { + const distToPoint = plane.distanceToPoint(this.origin); + if (distToPoint === 0) { + return true; + } + const denominator = plane.normal.dot(this.direction); + if (denominator * distToPoint < 0) { + return true; + } + return false; + } + intersectBox(box, target) { + let tmin, tmax, tymin, tymax, tzmin, tzmax; + const invdirx = 1 / this.direction.x, invdiry = 1 / this.direction.y, invdirz = 1 / this.direction.z; + const origin = this.origin; + if (invdirx >= 0) { + tmin = (box.min.x - origin.x) * invdirx; + tmax = (box.max.x - origin.x) * invdirx; + } else { + tmin = (box.max.x - origin.x) * invdirx; + tmax = (box.min.x - origin.x) * invdirx; + } + if (invdiry >= 0) { + tymin = (box.min.y - origin.y) * invdiry; + tymax = (box.max.y - origin.y) * invdiry; + } else { + tymin = (box.max.y - origin.y) * invdiry; + tymax = (box.min.y - origin.y) * invdiry; + } + if (tmin > tymax || tymin > tmax) return null; + if (tymin > tmin || isNaN(tmin)) tmin = tymin; + if (tymax < tmax || isNaN(tmax)) tmax = tymax; + if (invdirz >= 0) { + tzmin = (box.min.z - origin.z) * invdirz; + tzmax = (box.max.z - origin.z) * invdirz; + } else { + tzmin = (box.max.z - origin.z) * invdirz; + tzmax = (box.min.z - origin.z) * invdirz; + } + if (tmin > tzmax || tzmin > tmax) return null; + if (tzmin > tmin || tmin !== tmin) tmin = tzmin; + if (tzmax < tmax || tmax !== tmax) tmax = tzmax; + if (tmax < 0) return null; + return this.at(tmin >= 0 ? tmin : tmax, target); + } + intersectsBox(box) { + return this.intersectBox(box, _vector$a) !== null; + } + intersectTriangle(a, b, c, backfaceCulling, target) { + _edge1.subVectors(b, a); + _edge2.subVectors(c, a); + _normal$1.crossVectors(_edge1, _edge2); + let DdN = this.direction.dot(_normal$1); + let sign2; + if (DdN > 0) { + if (backfaceCulling) return null; + sign2 = 1; + } else if (DdN < 0) { + sign2 = -1; + DdN = -DdN; + } else { + return null; + } + _diff.subVectors(this.origin, a); + const DdQxE2 = sign2 * this.direction.dot(_edge2.crossVectors(_diff, _edge2)); + if (DdQxE2 < 0) { + return null; + } + const DdE1xQ = sign2 * this.direction.dot(_edge1.cross(_diff)); + if (DdE1xQ < 0) { + return null; + } + if (DdQxE2 + DdE1xQ > DdN) { + return null; + } + const QdN = -sign2 * _diff.dot(_normal$1); + if (QdN < 0) { + return null; + } + return this.at(QdN / DdN, target); + } + applyMatrix4(matrix4) { + this.origin.applyMatrix4(matrix4); + this.direction.transformDirection(matrix4); + return this; + } + equals(ray) { + return ray.origin.equals(this.origin) && ray.direction.equals(this.direction); + } + clone() { + return new this.constructor().copy(this); + } +}; +var Matrix4 = class _Matrix4 { + constructor(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) { + _Matrix4.prototype.isMatrix4 = true; + this.elements = [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ]; + if (n11 !== void 0) { + this.set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44); + } + } + set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) { + const te = this.elements; + te[0] = n11; + te[4] = n12; + te[8] = n13; + te[12] = n14; + te[1] = n21; + te[5] = n22; + te[9] = n23; + te[13] = n24; + te[2] = n31; + te[6] = n32; + te[10] = n33; + te[14] = n34; + te[3] = n41; + te[7] = n42; + te[11] = n43; + te[15] = n44; + return this; + } + identity() { + this.set( + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + clone() { + return new _Matrix4().fromArray(this.elements); + } + copy(m) { + const te = this.elements; + const me = m.elements; + te[0] = me[0]; + te[1] = me[1]; + te[2] = me[2]; + te[3] = me[3]; + te[4] = me[4]; + te[5] = me[5]; + te[6] = me[6]; + te[7] = me[7]; + te[8] = me[8]; + te[9] = me[9]; + te[10] = me[10]; + te[11] = me[11]; + te[12] = me[12]; + te[13] = me[13]; + te[14] = me[14]; + te[15] = me[15]; + return this; + } + copyPosition(m) { + const te = this.elements, me = m.elements; + te[12] = me[12]; + te[13] = me[13]; + te[14] = me[14]; + return this; + } + setFromMatrix3(m) { + const me = m.elements; + this.set( + me[0], + me[3], + me[6], + 0, + me[1], + me[4], + me[7], + 0, + me[2], + me[5], + me[8], + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + extractBasis(xAxis, yAxis, zAxis) { + xAxis.setFromMatrixColumn(this, 0); + yAxis.setFromMatrixColumn(this, 1); + zAxis.setFromMatrixColumn(this, 2); + return this; + } + makeBasis(xAxis, yAxis, zAxis) { + this.set( + xAxis.x, + yAxis.x, + zAxis.x, + 0, + xAxis.y, + yAxis.y, + zAxis.y, + 0, + xAxis.z, + yAxis.z, + zAxis.z, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + extractRotation(m) { + const te = this.elements; + const me = m.elements; + const scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length(); + const scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length(); + const scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length(); + te[0] = me[0] * scaleX; + te[1] = me[1] * scaleX; + te[2] = me[2] * scaleX; + te[3] = 0; + te[4] = me[4] * scaleY; + te[5] = me[5] * scaleY; + te[6] = me[6] * scaleY; + te[7] = 0; + te[8] = me[8] * scaleZ; + te[9] = me[9] * scaleZ; + te[10] = me[10] * scaleZ; + te[11] = 0; + te[12] = 0; + te[13] = 0; + te[14] = 0; + te[15] = 1; + return this; + } + makeRotationFromEuler(euler) { + const te = this.elements; + const x = euler.x, y = euler.y, z = euler.z; + const a = Math.cos(x), b = Math.sin(x); + const c = Math.cos(y), d = Math.sin(y); + const e = Math.cos(z), f = Math.sin(z); + if (euler.order === "XYZ") { + const ae = a * e, af = a * f, be = b * e, bf = b * f; + te[0] = c * e; + te[4] = -c * f; + te[8] = d; + te[1] = af + be * d; + te[5] = ae - bf * d; + te[9] = -b * c; + te[2] = bf - ae * d; + te[6] = be + af * d; + te[10] = a * c; + } else if (euler.order === "YXZ") { + const ce = c * e, cf = c * f, de = d * e, df = d * f; + te[0] = ce + df * b; + te[4] = de * b - cf; + te[8] = a * d; + te[1] = a * f; + te[5] = a * e; + te[9] = -b; + te[2] = cf * b - de; + te[6] = df + ce * b; + te[10] = a * c; + } else if (euler.order === "ZXY") { + const ce = c * e, cf = c * f, de = d * e, df = d * f; + te[0] = ce - df * b; + te[4] = -a * f; + te[8] = de + cf * b; + te[1] = cf + de * b; + te[5] = a * e; + te[9] = df - ce * b; + te[2] = -a * d; + te[6] = b; + te[10] = a * c; + } else if (euler.order === "ZYX") { + const ae = a * e, af = a * f, be = b * e, bf = b * f; + te[0] = c * e; + te[4] = be * d - af; + te[8] = ae * d + bf; + te[1] = c * f; + te[5] = bf * d + ae; + te[9] = af * d - be; + te[2] = -d; + te[6] = b * c; + te[10] = a * c; + } else if (euler.order === "YZX") { + const ac = a * c, ad = a * d, bc = b * c, bd = b * d; + te[0] = c * e; + te[4] = bd - ac * f; + te[8] = bc * f + ad; + te[1] = f; + te[5] = a * e; + te[9] = -b * e; + te[2] = -d * e; + te[6] = ad * f + bc; + te[10] = ac - bd * f; + } else if (euler.order === "XZY") { + const ac = a * c, ad = a * d, bc = b * c, bd = b * d; + te[0] = c * e; + te[4] = -f; + te[8] = d * e; + te[1] = ac * f + bd; + te[5] = a * e; + te[9] = ad * f - bc; + te[2] = bc * f - ad; + te[6] = b * e; + te[10] = bd * f + ac; + } + te[3] = 0; + te[7] = 0; + te[11] = 0; + te[12] = 0; + te[13] = 0; + te[14] = 0; + te[15] = 1; + return this; + } + makeRotationFromQuaternion(q) { + return this.compose(_zero, q, _one); + } + lookAt(eye, target, up2) { + const te = this.elements; + _z.subVectors(eye, target); + if (_z.lengthSq() === 0) { + _z.z = 1; + } + _z.normalize(); + _x.crossVectors(up2, _z); + if (_x.lengthSq() === 0) { + if (Math.abs(up2.z) === 1) { + _z.x += 1e-4; + } else { + _z.z += 1e-4; + } + _z.normalize(); + _x.crossVectors(up2, _z); + } + _x.normalize(); + _y.crossVectors(_z, _x); + te[0] = _x.x; + te[4] = _y.x; + te[8] = _z.x; + te[1] = _x.y; + te[5] = _y.y; + te[9] = _z.y; + te[2] = _x.z; + te[6] = _y.z; + te[10] = _z.z; + return this; + } + multiply(m) { + return this.multiplyMatrices(this, m); + } + premultiply(m) { + return this.multiplyMatrices(m, this); + } + multiplyMatrices(a, b) { + const ae = a.elements; + const be = b.elements; + const te = this.elements; + const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12]; + const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13]; + const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14]; + const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15]; + const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12]; + const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13]; + const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14]; + const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15]; + te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + return this; + } + multiplyScalar(s) { + const te = this.elements; + te[0] *= s; + te[4] *= s; + te[8] *= s; + te[12] *= s; + te[1] *= s; + te[5] *= s; + te[9] *= s; + te[13] *= s; + te[2] *= s; + te[6] *= s; + te[10] *= s; + te[14] *= s; + te[3] *= s; + te[7] *= s; + te[11] *= s; + te[15] *= s; + return this; + } + determinant() { + const te = this.elements; + const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12]; + const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13]; + const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14]; + const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15]; + return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31); + } + transpose() { + const te = this.elements; + let tmp; + tmp = te[1]; + te[1] = te[4]; + te[4] = tmp; + tmp = te[2]; + te[2] = te[8]; + te[8] = tmp; + tmp = te[6]; + te[6] = te[9]; + te[9] = tmp; + tmp = te[3]; + te[3] = te[12]; + te[12] = tmp; + tmp = te[7]; + te[7] = te[13]; + te[13] = tmp; + tmp = te[11]; + te[11] = te[14]; + te[14] = tmp; + return this; + } + setPosition(x, y, z) { + const te = this.elements; + if (x.isVector3) { + te[12] = x.x; + te[13] = x.y; + te[14] = x.z; + } else { + te[12] = x; + te[13] = y; + te[14] = z; + } + return this; + } + invert() { + const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3], n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7], n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11], n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + const detInv = 1 / det; + te[0] = t11 * detInv; + te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv; + te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv; + te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv; + te[4] = t12 * detInv; + te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv; + te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv; + te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv; + te[8] = t13 * detInv; + te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv; + te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv; + te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv; + te[12] = t14 * detInv; + te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv; + te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv; + te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv; + return this; + } + scale(v) { + const te = this.elements; + const x = v.x, y = v.y, z = v.z; + te[0] *= x; + te[4] *= y; + te[8] *= z; + te[1] *= x; + te[5] *= y; + te[9] *= z; + te[2] *= x; + te[6] *= y; + te[10] *= z; + te[3] *= x; + te[7] *= y; + te[11] *= z; + return this; + } + getMaxScaleOnAxis() { + const te = this.elements; + const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2]; + const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6]; + const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10]; + return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq)); + } + makeTranslation(x, y, z) { + if (x.isVector3) { + this.set( + 1, + 0, + 0, + x.x, + 0, + 1, + 0, + x.y, + 0, + 0, + 1, + x.z, + 0, + 0, + 0, + 1 + ); + } else { + this.set( + 1, + 0, + 0, + x, + 0, + 1, + 0, + y, + 0, + 0, + 1, + z, + 0, + 0, + 0, + 1 + ); + } + return this; + } + makeRotationX(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set( + 1, + 0, + 0, + 0, + 0, + c, + -s, + 0, + 0, + s, + c, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + makeRotationY(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set( + c, + 0, + s, + 0, + 0, + 1, + 0, + 0, + -s, + 0, + c, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + makeRotationZ(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set( + c, + -s, + 0, + 0, + s, + c, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + makeRotationAxis(axis, angle) { + const c = Math.cos(angle); + const s = Math.sin(angle); + const t = 1 - c; + const x = axis.x, y = axis.y, z = axis.z; + const tx = t * x, ty = t * y; + this.set( + tx * x + c, + tx * y - s * z, + tx * z + s * y, + 0, + tx * y + s * z, + ty * y + c, + ty * z - s * x, + 0, + tx * z - s * y, + ty * z + s * x, + t * z * z + c, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + makeScale(x, y, z) { + this.set( + x, + 0, + 0, + 0, + 0, + y, + 0, + 0, + 0, + 0, + z, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + makeShear(xy, xz, yx, yz, zx, zy) { + this.set( + 1, + yx, + zx, + 0, + xy, + 1, + zy, + 0, + xz, + yz, + 1, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + compose(position, quaternion2, scale) { + const te = this.elements; + const x = quaternion2._x, y = quaternion2._y, z = quaternion2._z, w = quaternion2._w; + const x2 = x + x, y2 = y + y, z2 = z + z; + const xx = x * x2, xy = x * y2, xz = x * z2; + const yy = y * y2, yz = y * z2, zz = z * z2; + const wx = w * x2, wy = w * y2, wz = w * z2; + const sx = scale.x, sy = scale.y, sz = scale.z; + te[0] = (1 - (yy + zz)) * sx; + te[1] = (xy + wz) * sx; + te[2] = (xz - wy) * sx; + te[3] = 0; + te[4] = (xy - wz) * sy; + te[5] = (1 - (xx + zz)) * sy; + te[6] = (yz + wx) * sy; + te[7] = 0; + te[8] = (xz + wy) * sz; + te[9] = (yz - wx) * sz; + te[10] = (1 - (xx + yy)) * sz; + te[11] = 0; + te[12] = position.x; + te[13] = position.y; + te[14] = position.z; + te[15] = 1; + return this; + } + decompose(position, quaternion2, scale) { + const te = this.elements; + let sx = _v1$5.set(te[0], te[1], te[2]).length(); + const sy = _v1$5.set(te[4], te[5], te[6]).length(); + const sz = _v1$5.set(te[8], te[9], te[10]).length(); + const det = this.determinant(); + if (det < 0) sx = -sx; + position.x = te[12]; + position.y = te[13]; + position.z = te[14]; + _m1$4.copy(this); + const invSX = 1 / sx; + const invSY = 1 / sy; + const invSZ = 1 / sz; + _m1$4.elements[0] *= invSX; + _m1$4.elements[1] *= invSX; + _m1$4.elements[2] *= invSX; + _m1$4.elements[4] *= invSY; + _m1$4.elements[5] *= invSY; + _m1$4.elements[6] *= invSY; + _m1$4.elements[8] *= invSZ; + _m1$4.elements[9] *= invSZ; + _m1$4.elements[10] *= invSZ; + quaternion2.setFromRotationMatrix(_m1$4); + scale.x = sx; + scale.y = sy; + scale.z = sz; + return this; + } + makePerspective(left, right2, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) { + const te = this.elements; + const x = 2 * near / (right2 - left); + const y = 2 * near / (top - bottom); + const a = (right2 + left) / (right2 - left); + const b = (top + bottom) / (top - bottom); + let c, d; + if (coordinateSystem === WebGLCoordinateSystem) { + c = -(far + near) / (far - near); + d = -2 * far * near / (far - near); + } else if (coordinateSystem === WebGPUCoordinateSystem) { + c = -far / (far - near); + d = -far * near / (far - near); + } else { + throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: " + coordinateSystem); + } + te[0] = x; + te[4] = 0; + te[8] = a; + te[12] = 0; + te[1] = 0; + te[5] = y; + te[9] = b; + te[13] = 0; + te[2] = 0; + te[6] = 0; + te[10] = c; + te[14] = d; + te[3] = 0; + te[7] = 0; + te[11] = -1; + te[15] = 0; + return this; + } + makeOrthographic(left, right2, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) { + const te = this.elements; + const w = 1 / (right2 - left); + const h = 1 / (top - bottom); + const p = 1 / (far - near); + const x = (right2 + left) * w; + const y = (top + bottom) * h; + let z, zInv; + if (coordinateSystem === WebGLCoordinateSystem) { + z = (far + near) * p; + zInv = -2 * p; + } else if (coordinateSystem === WebGPUCoordinateSystem) { + z = near * p; + zInv = -1 * p; + } else { + throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: " + coordinateSystem); + } + te[0] = 2 * w; + te[4] = 0; + te[8] = 0; + te[12] = -x; + te[1] = 0; + te[5] = 2 * h; + te[9] = 0; + te[13] = -y; + te[2] = 0; + te[6] = 0; + te[10] = zInv; + te[14] = -z; + te[3] = 0; + te[7] = 0; + te[11] = 0; + te[15] = 1; + return this; + } + equals(matrix) { + const te = this.elements; + const me = matrix.elements; + for (let i = 0; i < 16; i++) { + if (te[i] !== me[i]) return false; + } + return true; + } + fromArray(array, offset = 0) { + for (let i = 0; i < 16; i++) { + this.elements[i] = array[i + offset]; + } + return this; + } + toArray(array = [], offset = 0) { + const te = this.elements; + array[offset] = te[0]; + array[offset + 1] = te[1]; + array[offset + 2] = te[2]; + array[offset + 3] = te[3]; + array[offset + 4] = te[4]; + array[offset + 5] = te[5]; + array[offset + 6] = te[6]; + array[offset + 7] = te[7]; + array[offset + 8] = te[8]; + array[offset + 9] = te[9]; + array[offset + 10] = te[10]; + array[offset + 11] = te[11]; + array[offset + 12] = te[12]; + array[offset + 13] = te[13]; + array[offset + 14] = te[14]; + array[offset + 15] = te[15]; + return array; + } +}; +var _v1$5 = /* @__PURE__ */ new Vector3(); +var _m1$4 = /* @__PURE__ */ new Matrix4(); +var _zero = /* @__PURE__ */ new Vector3(0, 0, 0); +var _one = /* @__PURE__ */ new Vector3(1, 1, 1); +var _x = /* @__PURE__ */ new Vector3(); +var _y = /* @__PURE__ */ new Vector3(); +var _z = /* @__PURE__ */ new Vector3(); +var _matrix$2 = /* @__PURE__ */ new Matrix4(); +var _quaternion$3 = /* @__PURE__ */ new Quaternion(); +var Euler = class _Euler { + constructor(x = 0, y = 0, z = 0, order = _Euler.DEFAULT_ORDER) { + this.isEuler = true; + this._x = x; + this._y = y; + this._z = z; + this._order = order; + } + get x() { + return this._x; + } + set x(value) { + this._x = value; + this._onChangeCallback(); + } + get y() { + return this._y; + } + set y(value) { + this._y = value; + this._onChangeCallback(); + } + get z() { + return this._z; + } + set z(value) { + this._z = value; + this._onChangeCallback(); + } + get order() { + return this._order; + } + set order(value) { + this._order = value; + this._onChangeCallback(); + } + set(x, y, z, order = this._order) { + this._x = x; + this._y = y; + this._z = z; + this._order = order; + this._onChangeCallback(); + return this; + } + clone() { + return new this.constructor(this._x, this._y, this._z, this._order); + } + copy(euler) { + this._x = euler._x; + this._y = euler._y; + this._z = euler._z; + this._order = euler._order; + this._onChangeCallback(); + return this; + } + setFromRotationMatrix(m, order = this._order, update = true) { + const te = m.elements; + const m11 = te[0], m12 = te[4], m13 = te[8]; + const m21 = te[1], m22 = te[5], m23 = te[9]; + const m31 = te[2], m32 = te[6], m33 = te[10]; + switch (order) { + case "XYZ": + this._y = Math.asin(clamp(m13, -1, 1)); + if (Math.abs(m13) < 0.9999999) { + this._x = Math.atan2(-m23, m33); + this._z = Math.atan2(-m12, m11); + } else { + this._x = Math.atan2(m32, m22); + this._z = 0; + } + break; + case "YXZ": + this._x = Math.asin(-clamp(m23, -1, 1)); + if (Math.abs(m23) < 0.9999999) { + this._y = Math.atan2(m13, m33); + this._z = Math.atan2(m21, m22); + } else { + this._y = Math.atan2(-m31, m11); + this._z = 0; + } + break; + case "ZXY": + this._x = Math.asin(clamp(m32, -1, 1)); + if (Math.abs(m32) < 0.9999999) { + this._y = Math.atan2(-m31, m33); + this._z = Math.atan2(-m12, m22); + } else { + this._y = 0; + this._z = Math.atan2(m21, m11); + } + break; + case "ZYX": + this._y = Math.asin(-clamp(m31, -1, 1)); + if (Math.abs(m31) < 0.9999999) { + this._x = Math.atan2(m32, m33); + this._z = Math.atan2(m21, m11); + } else { + this._x = 0; + this._z = Math.atan2(-m12, m22); + } + break; + case "YZX": + this._z = Math.asin(clamp(m21, -1, 1)); + if (Math.abs(m21) < 0.9999999) { + this._x = Math.atan2(-m23, m22); + this._y = Math.atan2(-m31, m11); + } else { + this._x = 0; + this._y = Math.atan2(m13, m33); + } + break; + case "XZY": + this._z = Math.asin(-clamp(m12, -1, 1)); + if (Math.abs(m12) < 0.9999999) { + this._x = Math.atan2(m32, m22); + this._y = Math.atan2(m13, m11); + } else { + this._x = Math.atan2(-m23, m33); + this._y = 0; + } + break; + default: + console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: " + order); + } + this._order = order; + if (update === true) this._onChangeCallback(); + return this; + } + setFromQuaternion(q, order, update) { + _matrix$2.makeRotationFromQuaternion(q); + return this.setFromRotationMatrix(_matrix$2, order, update); + } + setFromVector3(v, order = this._order) { + return this.set(v.x, v.y, v.z, order); + } + reorder(newOrder) { + _quaternion$3.setFromEuler(this); + return this.setFromQuaternion(_quaternion$3, newOrder); + } + equals(euler) { + return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order; + } + fromArray(array) { + this._x = array[0]; + this._y = array[1]; + this._z = array[2]; + if (array[3] !== void 0) this._order = array[3]; + this._onChangeCallback(); + return this; + } + toArray(array = [], offset = 0) { + array[offset] = this._x; + array[offset + 1] = this._y; + array[offset + 2] = this._z; + array[offset + 3] = this._order; + return array; + } + _onChange(callback) { + this._onChangeCallback = callback; + return this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x; + yield this._y; + yield this._z; + yield this._order; + } +}; +Euler.DEFAULT_ORDER = "XYZ"; +var Layers = class { + constructor() { + this.mask = 1 | 0; + } + set(channel) { + this.mask = (1 << channel | 0) >>> 0; + } + enable(channel) { + this.mask |= 1 << channel | 0; + } + enableAll() { + this.mask = 4294967295 | 0; + } + toggle(channel) { + this.mask ^= 1 << channel | 0; + } + disable(channel) { + this.mask &= ~(1 << channel | 0); + } + disableAll() { + this.mask = 0; + } + test(layers) { + return (this.mask & layers.mask) !== 0; + } + isEnabled(channel) { + return (this.mask & (1 << channel | 0)) !== 0; + } +}; +var _object3DId = 0; +var _v1$4 = /* @__PURE__ */ new Vector3(); +var _q1 = /* @__PURE__ */ new Quaternion(); +var _m1$3 = /* @__PURE__ */ new Matrix4(); +var _target = /* @__PURE__ */ new Vector3(); +var _position$3 = /* @__PURE__ */ new Vector3(); +var _scale$2 = /* @__PURE__ */ new Vector3(); +var _quaternion$2 = /* @__PURE__ */ new Quaternion(); +var _xAxis = /* @__PURE__ */ new Vector3(1, 0, 0); +var _yAxis = /* @__PURE__ */ new Vector3(0, 1, 0); +var _zAxis = /* @__PURE__ */ new Vector3(0, 0, 1); +var _addedEvent = { type: "added" }; +var _removedEvent = { type: "removed" }; +var _childaddedEvent = { type: "childadded", child: null }; +var _childremovedEvent = { type: "childremoved", child: null }; +var Object3D = class _Object3D extends EventDispatcher { + constructor() { + super(); + this.isObject3D = true; + Object.defineProperty(this, "id", { value: _object3DId++ }); + this.uuid = generateUUID(); + this.name = ""; + this.type = "Object3D"; + this.parent = null; + this.children = []; + this.up = _Object3D.DEFAULT_UP.clone(); + const position = new Vector3(); + const rotation = new Euler(); + const quaternion2 = new Quaternion(); + const scale = new Vector3(1, 1, 1); + function onRotationChange() { + quaternion2.setFromEuler(rotation, false); + } + function onQuaternionChange() { + rotation.setFromQuaternion(quaternion2, void 0, false); + } + rotation._onChange(onRotationChange); + quaternion2._onChange(onQuaternionChange); + Object.defineProperties(this, { + position: { + configurable: true, + enumerable: true, + value: position + }, + rotation: { + configurable: true, + enumerable: true, + value: rotation + }, + quaternion: { + configurable: true, + enumerable: true, + value: quaternion2 + }, + scale: { + configurable: true, + enumerable: true, + value: scale + }, + modelViewMatrix: { + value: new Matrix4() + }, + normalMatrix: { + value: new Matrix3() + } + }); + this.matrix = new Matrix4(); + this.matrixWorld = new Matrix4(); + this.matrixAutoUpdate = _Object3D.DEFAULT_MATRIX_AUTO_UPDATE; + this.matrixWorldAutoUpdate = _Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; + this.matrixWorldNeedsUpdate = false; + this.layers = new Layers(); + this.visible = true; + this.castShadow = false; + this.receiveShadow = false; + this.frustumCulled = true; + this.renderOrder = 0; + this.animations = []; + this.userData = {}; + } + onBeforeShadow() { + } + onAfterShadow() { + } + onBeforeRender() { + } + onAfterRender() { + } + applyMatrix4(matrix) { + if (this.matrixAutoUpdate) this.updateMatrix(); + this.matrix.premultiply(matrix); + this.matrix.decompose(this.position, this.quaternion, this.scale); + } + applyQuaternion(q) { + this.quaternion.premultiply(q); + return this; + } + setRotationFromAxisAngle(axis, angle) { + this.quaternion.setFromAxisAngle(axis, angle); + } + setRotationFromEuler(euler) { + this.quaternion.setFromEuler(euler, true); + } + setRotationFromMatrix(m) { + this.quaternion.setFromRotationMatrix(m); + } + setRotationFromQuaternion(q) { + this.quaternion.copy(q); + } + rotateOnAxis(axis, angle) { + _q1.setFromAxisAngle(axis, angle); + this.quaternion.multiply(_q1); + return this; + } + rotateOnWorldAxis(axis, angle) { + _q1.setFromAxisAngle(axis, angle); + this.quaternion.premultiply(_q1); + return this; + } + rotateX(angle) { + return this.rotateOnAxis(_xAxis, angle); + } + rotateY(angle) { + return this.rotateOnAxis(_yAxis, angle); + } + rotateZ(angle) { + return this.rotateOnAxis(_zAxis, angle); + } + translateOnAxis(axis, distance) { + _v1$4.copy(axis).applyQuaternion(this.quaternion); + this.position.add(_v1$4.multiplyScalar(distance)); + return this; + } + translateX(distance) { + return this.translateOnAxis(_xAxis, distance); + } + translateY(distance) { + return this.translateOnAxis(_yAxis, distance); + } + translateZ(distance) { + return this.translateOnAxis(_zAxis, distance); + } + localToWorld(vector) { + this.updateWorldMatrix(true, false); + return vector.applyMatrix4(this.matrixWorld); + } + worldToLocal(vector) { + this.updateWorldMatrix(true, false); + return vector.applyMatrix4(_m1$3.copy(this.matrixWorld).invert()); + } + lookAt(x, y, z) { + if (x.isVector3) { + _target.copy(x); + } else { + _target.set(x, y, z); + } + const parent = this.parent; + this.updateWorldMatrix(true, false); + _position$3.setFromMatrixPosition(this.matrixWorld); + if (this.isCamera || this.isLight) { + _m1$3.lookAt(_position$3, _target, this.up); + } else { + _m1$3.lookAt(_target, _position$3, this.up); + } + this.quaternion.setFromRotationMatrix(_m1$3); + if (parent) { + _m1$3.extractRotation(parent.matrixWorld); + _q1.setFromRotationMatrix(_m1$3); + this.quaternion.premultiply(_q1.invert()); + } + } + add(object) { + if (arguments.length > 1) { + for (let i = 0; i < arguments.length; i++) { + this.add(arguments[i]); + } + return this; + } + if (object === this) { + console.error("THREE.Object3D.add: object can't be added as a child of itself.", object); + return this; + } + if (object && object.isObject3D) { + object.removeFromParent(); + object.parent = this; + this.children.push(object); + object.dispatchEvent(_addedEvent); + _childaddedEvent.child = object; + this.dispatchEvent(_childaddedEvent); + _childaddedEvent.child = null; + } else { + console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", object); + } + return this; + } + remove(object) { + if (arguments.length > 1) { + for (let i = 0; i < arguments.length; i++) { + this.remove(arguments[i]); + } + return this; + } + const index = this.children.indexOf(object); + if (index !== -1) { + object.parent = null; + this.children.splice(index, 1); + object.dispatchEvent(_removedEvent); + _childremovedEvent.child = object; + this.dispatchEvent(_childremovedEvent); + _childremovedEvent.child = null; + } + return this; + } + removeFromParent() { + const parent = this.parent; + if (parent !== null) { + parent.remove(this); + } + return this; + } + clear() { + return this.remove(...this.children); + } + attach(object) { + this.updateWorldMatrix(true, false); + _m1$3.copy(this.matrixWorld).invert(); + if (object.parent !== null) { + object.parent.updateWorldMatrix(true, false); + _m1$3.multiply(object.parent.matrixWorld); + } + object.applyMatrix4(_m1$3); + object.removeFromParent(); + object.parent = this; + this.children.push(object); + object.updateWorldMatrix(false, true); + object.dispatchEvent(_addedEvent); + _childaddedEvent.child = object; + this.dispatchEvent(_childaddedEvent); + _childaddedEvent.child = null; + return this; + } + getObjectById(id) { + return this.getObjectByProperty("id", id); + } + getObjectByName(name) { + return this.getObjectByProperty("name", name); + } + getObjectByProperty(name, value) { + if (this[name] === value) return this; + for (let i = 0, l = this.children.length; i < l; i++) { + const child = this.children[i]; + const object = child.getObjectByProperty(name, value); + if (object !== void 0) { + return object; + } + } + return void 0; + } + getObjectsByProperty(name, value, result = []) { + if (this[name] === value) result.push(this); + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + children[i].getObjectsByProperty(name, value, result); + } + return result; + } + getWorldPosition(target) { + this.updateWorldMatrix(true, false); + return target.setFromMatrixPosition(this.matrixWorld); + } + getWorldQuaternion(target) { + this.updateWorldMatrix(true, false); + this.matrixWorld.decompose(_position$3, target, _scale$2); + return target; + } + getWorldScale(target) { + this.updateWorldMatrix(true, false); + this.matrixWorld.decompose(_position$3, _quaternion$2, target); + return target; + } + getWorldDirection(target) { + this.updateWorldMatrix(true, false); + const e = this.matrixWorld.elements; + return target.set(e[8], e[9], e[10]).normalize(); + } + raycast() { + } + traverse(callback) { + callback(this); + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + children[i].traverse(callback); + } + } + traverseVisible(callback) { + if (this.visible === false) return; + callback(this); + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + children[i].traverseVisible(callback); + } + } + traverseAncestors(callback) { + const parent = this.parent; + if (parent !== null) { + callback(parent); + parent.traverseAncestors(callback); + } + } + updateMatrix() { + this.matrix.compose(this.position, this.quaternion, this.scale); + this.matrixWorldNeedsUpdate = true; + } + updateMatrixWorld(force) { + if (this.matrixAutoUpdate) this.updateMatrix(); + if (this.matrixWorldNeedsUpdate || force) { + if (this.parent === null) { + this.matrixWorld.copy(this.matrix); + } else { + this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); + } + this.matrixWorldNeedsUpdate = false; + force = true; + } + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + const child = children[i]; + if (child.matrixWorldAutoUpdate === true || force === true) { + child.updateMatrixWorld(force); + } + } + } + updateWorldMatrix(updateParents, updateChildren) { + const parent = this.parent; + if (updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true) { + parent.updateWorldMatrix(true, false); + } + if (this.matrixAutoUpdate) this.updateMatrix(); + if (this.parent === null) { + this.matrixWorld.copy(this.matrix); + } else { + this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); + } + if (updateChildren === true) { + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + const child = children[i]; + if (child.matrixWorldAutoUpdate === true) { + child.updateWorldMatrix(false, true); + } + } + } + } + toJSON(meta) { + const isRootObject = meta === void 0 || typeof meta === "string"; + const output = {}; + if (isRootObject) { + meta = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {}, + skeletons: {}, + animations: {}, + nodes: {} + }; + output.metadata = { + version: 4.6, + type: "Object", + generator: "Object3D.toJSON" + }; + } + const object = {}; + object.uuid = this.uuid; + object.type = this.type; + if (this.name !== "") object.name = this.name; + if (this.castShadow === true) object.castShadow = true; + if (this.receiveShadow === true) object.receiveShadow = true; + if (this.visible === false) object.visible = false; + if (this.frustumCulled === false) object.frustumCulled = false; + if (this.renderOrder !== 0) object.renderOrder = this.renderOrder; + if (Object.keys(this.userData).length > 0) object.userData = this.userData; + object.layers = this.layers.mask; + object.matrix = this.matrix.toArray(); + object.up = this.up.toArray(); + if (this.matrixAutoUpdate === false) object.matrixAutoUpdate = false; + if (this.isInstancedMesh) { + object.type = "InstancedMesh"; + object.count = this.count; + object.instanceMatrix = this.instanceMatrix.toJSON(); + if (this.instanceColor !== null) object.instanceColor = this.instanceColor.toJSON(); + } + if (this.isBatchedMesh) { + object.type = "BatchedMesh"; + object.perObjectFrustumCulled = this.perObjectFrustumCulled; + object.sortObjects = this.sortObjects; + object.drawRanges = this._drawRanges; + object.reservedRanges = this._reservedRanges; + object.visibility = this._visibility; + object.active = this._active; + object.bounds = this._bounds.map((bound) => ({ + boxInitialized: bound.boxInitialized, + boxMin: bound.box.min.toArray(), + boxMax: bound.box.max.toArray(), + sphereInitialized: bound.sphereInitialized, + sphereRadius: bound.sphere.radius, + sphereCenter: bound.sphere.center.toArray() + })); + object.maxGeometryCount = this._maxGeometryCount; + object.maxVertexCount = this._maxVertexCount; + object.maxIndexCount = this._maxIndexCount; + object.geometryInitialized = this._geometryInitialized; + object.geometryCount = this._geometryCount; + object.matricesTexture = this._matricesTexture.toJSON(meta); + if (this.boundingSphere !== null) { + object.boundingSphere = { + center: object.boundingSphere.center.toArray(), + radius: object.boundingSphere.radius + }; + } + if (this.boundingBox !== null) { + object.boundingBox = { + min: object.boundingBox.min.toArray(), + max: object.boundingBox.max.toArray() + }; + } + } + function serialize(library, element) { + if (library[element.uuid] === void 0) { + library[element.uuid] = element.toJSON(meta); + } + return element.uuid; + } + if (this.isScene) { + if (this.background) { + if (this.background.isColor) { + object.background = this.background.toJSON(); + } else if (this.background.isTexture) { + object.background = this.background.toJSON(meta).uuid; + } + } + if (this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true) { + object.environment = this.environment.toJSON(meta).uuid; + } + } else if (this.isMesh || this.isLine || this.isPoints) { + object.geometry = serialize(meta.geometries, this.geometry); + const parameters = this.geometry.parameters; + if (parameters !== void 0 && parameters.shapes !== void 0) { + const shapes = parameters.shapes; + if (Array.isArray(shapes)) { + for (let i = 0, l = shapes.length; i < l; i++) { + const shape = shapes[i]; + serialize(meta.shapes, shape); + } + } else { + serialize(meta.shapes, shapes); + } + } + } + if (this.isSkinnedMesh) { + object.bindMode = this.bindMode; + object.bindMatrix = this.bindMatrix.toArray(); + if (this.skeleton !== void 0) { + serialize(meta.skeletons, this.skeleton); + object.skeleton = this.skeleton.uuid; + } + } + if (this.material !== void 0) { + if (Array.isArray(this.material)) { + const uuids = []; + for (let i = 0, l = this.material.length; i < l; i++) { + uuids.push(serialize(meta.materials, this.material[i])); + } + object.material = uuids; + } else { + object.material = serialize(meta.materials, this.material); + } + } + if (this.children.length > 0) { + object.children = []; + for (let i = 0; i < this.children.length; i++) { + object.children.push(this.children[i].toJSON(meta).object); + } + } + if (this.animations.length > 0) { + object.animations = []; + for (let i = 0; i < this.animations.length; i++) { + const animation = this.animations[i]; + object.animations.push(serialize(meta.animations, animation)); + } + } + if (isRootObject) { + const geometries = extractFromCache(meta.geometries); + const materials = extractFromCache(meta.materials); + const textures = extractFromCache(meta.textures); + const images = extractFromCache(meta.images); + const shapes = extractFromCache(meta.shapes); + const skeletons = extractFromCache(meta.skeletons); + const animations = extractFromCache(meta.animations); + const nodes = extractFromCache(meta.nodes); + if (geometries.length > 0) output.geometries = geometries; + if (materials.length > 0) output.materials = materials; + if (textures.length > 0) output.textures = textures; + if (images.length > 0) output.images = images; + if (shapes.length > 0) output.shapes = shapes; + if (skeletons.length > 0) output.skeletons = skeletons; + if (animations.length > 0) output.animations = animations; + if (nodes.length > 0) output.nodes = nodes; + } + output.object = object; + return output; + function extractFromCache(cache) { + const values = []; + for (const key in cache) { + const data = cache[key]; + delete data.metadata; + values.push(data); + } + return values; + } + } + clone(recursive) { + return new this.constructor().copy(this, recursive); + } + copy(source, recursive = true) { + this.name = source.name; + this.up.copy(source.up); + this.position.copy(source.position); + this.rotation.order = source.rotation.order; + this.quaternion.copy(source.quaternion); + this.scale.copy(source.scale); + this.matrix.copy(source.matrix); + this.matrixWorld.copy(source.matrixWorld); + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate; + this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; + this.layers.mask = source.layers.mask; + this.visible = source.visible; + this.castShadow = source.castShadow; + this.receiveShadow = source.receiveShadow; + this.frustumCulled = source.frustumCulled; + this.renderOrder = source.renderOrder; + this.animations = source.animations.slice(); + this.userData = JSON.parse(JSON.stringify(source.userData)); + if (recursive === true) { + for (let i = 0; i < source.children.length; i++) { + const child = source.children[i]; + this.add(child.clone()); + } + } + return this; + } +}; +Object3D.DEFAULT_UP = /* @__PURE__ */ new Vector3(0, 1, 0); +Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true; +Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true; +var _v0$1 = /* @__PURE__ */ new Vector3(); +var _v1$3 = /* @__PURE__ */ new Vector3(); +var _v2$2 = /* @__PURE__ */ new Vector3(); +var _v3$2 = /* @__PURE__ */ new Vector3(); +var _vab = /* @__PURE__ */ new Vector3(); +var _vac = /* @__PURE__ */ new Vector3(); +var _vbc = /* @__PURE__ */ new Vector3(); +var _vap = /* @__PURE__ */ new Vector3(); +var _vbp = /* @__PURE__ */ new Vector3(); +var _vcp = /* @__PURE__ */ new Vector3(); +var Triangle = class _Triangle { + constructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) { + this.a = a; + this.b = b; + this.c = c; + } + static getNormal(a, b, c, target) { + target.subVectors(c, b); + _v0$1.subVectors(a, b); + target.cross(_v0$1); + const targetLengthSq = target.lengthSq(); + if (targetLengthSq > 0) { + return target.multiplyScalar(1 / Math.sqrt(targetLengthSq)); + } + return target.set(0, 0, 0); + } + // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + static getBarycoord(point, a, b, c, target) { + _v0$1.subVectors(c, a); + _v1$3.subVectors(b, a); + _v2$2.subVectors(point, a); + const dot00 = _v0$1.dot(_v0$1); + const dot01 = _v0$1.dot(_v1$3); + const dot02 = _v0$1.dot(_v2$2); + const dot11 = _v1$3.dot(_v1$3); + const dot12 = _v1$3.dot(_v2$2); + const denom = dot00 * dot11 - dot01 * dot01; + if (denom === 0) { + target.set(0, 0, 0); + return null; + } + const invDenom = 1 / denom; + const u = (dot11 * dot02 - dot01 * dot12) * invDenom; + const v = (dot00 * dot12 - dot01 * dot02) * invDenom; + return target.set(1 - u - v, v, u); + } + static containsPoint(point, a, b, c) { + if (this.getBarycoord(point, a, b, c, _v3$2) === null) { + return false; + } + return _v3$2.x >= 0 && _v3$2.y >= 0 && _v3$2.x + _v3$2.y <= 1; + } + static getInterpolation(point, p1, p2, p3, v1, v2, v3, target) { + if (this.getBarycoord(point, p1, p2, p3, _v3$2) === null) { + target.x = 0; + target.y = 0; + if ("z" in target) target.z = 0; + if ("w" in target) target.w = 0; + return null; + } + target.setScalar(0); + target.addScaledVector(v1, _v3$2.x); + target.addScaledVector(v2, _v3$2.y); + target.addScaledVector(v3, _v3$2.z); + return target; + } + static isFrontFacing(a, b, c, direction) { + _v0$1.subVectors(c, b); + _v1$3.subVectors(a, b); + return _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false; + } + set(a, b, c) { + this.a.copy(a); + this.b.copy(b); + this.c.copy(c); + return this; + } + setFromPointsAndIndices(points, i0, i1, i2) { + this.a.copy(points[i0]); + this.b.copy(points[i1]); + this.c.copy(points[i2]); + return this; + } + setFromAttributeAndIndices(attribute, i0, i1, i2) { + this.a.fromBufferAttribute(attribute, i0); + this.b.fromBufferAttribute(attribute, i1); + this.c.fromBufferAttribute(attribute, i2); + return this; + } + clone() { + return new this.constructor().copy(this); + } + copy(triangle) { + this.a.copy(triangle.a); + this.b.copy(triangle.b); + this.c.copy(triangle.c); + return this; + } + getArea() { + _v0$1.subVectors(this.c, this.b); + _v1$3.subVectors(this.a, this.b); + return _v0$1.cross(_v1$3).length() * 0.5; + } + getMidpoint(target) { + return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3); + } + getNormal(target) { + return _Triangle.getNormal(this.a, this.b, this.c, target); + } + getPlane(target) { + return target.setFromCoplanarPoints(this.a, this.b, this.c); + } + getBarycoord(point, target) { + return _Triangle.getBarycoord(point, this.a, this.b, this.c, target); + } + getInterpolation(point, v1, v2, v3, target) { + return _Triangle.getInterpolation(point, this.a, this.b, this.c, v1, v2, v3, target); + } + containsPoint(point) { + return _Triangle.containsPoint(point, this.a, this.b, this.c); + } + isFrontFacing(direction) { + return _Triangle.isFrontFacing(this.a, this.b, this.c, direction); + } + intersectsBox(box) { + return box.intersectsTriangle(this); + } + closestPointToPoint(p, target) { + const a = this.a, b = this.b, c = this.c; + let v, w; + _vab.subVectors(b, a); + _vac.subVectors(c, a); + _vap.subVectors(p, a); + const d1 = _vab.dot(_vap); + const d2 = _vac.dot(_vap); + if (d1 <= 0 && d2 <= 0) { + return target.copy(a); + } + _vbp.subVectors(p, b); + const d3 = _vab.dot(_vbp); + const d4 = _vac.dot(_vbp); + if (d3 >= 0 && d4 <= d3) { + return target.copy(b); + } + const vc = d1 * d4 - d3 * d2; + if (vc <= 0 && d1 >= 0 && d3 <= 0) { + v = d1 / (d1 - d3); + return target.copy(a).addScaledVector(_vab, v); + } + _vcp.subVectors(p, c); + const d5 = _vab.dot(_vcp); + const d6 = _vac.dot(_vcp); + if (d6 >= 0 && d5 <= d6) { + return target.copy(c); + } + const vb = d5 * d2 - d1 * d6; + if (vb <= 0 && d2 >= 0 && d6 <= 0) { + w = d2 / (d2 - d6); + return target.copy(a).addScaledVector(_vac, w); + } + const va = d3 * d6 - d5 * d4; + if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) { + _vbc.subVectors(c, b); + w = (d4 - d3) / (d4 - d3 + (d5 - d6)); + return target.copy(b).addScaledVector(_vbc, w); + } + const denom = 1 / (va + vb + vc); + v = vb * denom; + w = vc * denom; + return target.copy(a).addScaledVector(_vab, v).addScaledVector(_vac, w); + } + equals(triangle) { + return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c); + } +}; +var _colorKeywords = { + "aliceblue": 15792383, + "antiquewhite": 16444375, + "aqua": 65535, + "aquamarine": 8388564, + "azure": 15794175, + "beige": 16119260, + "bisque": 16770244, + "black": 0, + "blanchedalmond": 16772045, + "blue": 255, + "blueviolet": 9055202, + "brown": 10824234, + "burlywood": 14596231, + "cadetblue": 6266528, + "chartreuse": 8388352, + "chocolate": 13789470, + "coral": 16744272, + "cornflowerblue": 6591981, + "cornsilk": 16775388, + "crimson": 14423100, + "cyan": 65535, + "darkblue": 139, + "darkcyan": 35723, + "darkgoldenrod": 12092939, + "darkgray": 11119017, + "darkgreen": 25600, + "darkgrey": 11119017, + "darkkhaki": 12433259, + "darkmagenta": 9109643, + "darkolivegreen": 5597999, + "darkorange": 16747520, + "darkorchid": 10040012, + "darkred": 9109504, + "darksalmon": 15308410, + "darkseagreen": 9419919, + "darkslateblue": 4734347, + "darkslategray": 3100495, + "darkslategrey": 3100495, + "darkturquoise": 52945, + "darkviolet": 9699539, + "deeppink": 16716947, + "deepskyblue": 49151, + "dimgray": 6908265, + "dimgrey": 6908265, + "dodgerblue": 2003199, + "firebrick": 11674146, + "floralwhite": 16775920, + "forestgreen": 2263842, + "fuchsia": 16711935, + "gainsboro": 14474460, + "ghostwhite": 16316671, + "gold": 16766720, + "goldenrod": 14329120, + "gray": 8421504, + "green": 32768, + "greenyellow": 11403055, + "grey": 8421504, + "honeydew": 15794160, + "hotpink": 16738740, + "indianred": 13458524, + "indigo": 4915330, + "ivory": 16777200, + "khaki": 15787660, + "lavender": 15132410, + "lavenderblush": 16773365, + "lawngreen": 8190976, + "lemonchiffon": 16775885, + "lightblue": 11393254, + "lightcoral": 15761536, + "lightcyan": 14745599, + "lightgoldenrodyellow": 16448210, + "lightgray": 13882323, + "lightgreen": 9498256, + "lightgrey": 13882323, + "lightpink": 16758465, + "lightsalmon": 16752762, + "lightseagreen": 2142890, + "lightskyblue": 8900346, + "lightslategray": 7833753, + "lightslategrey": 7833753, + "lightsteelblue": 11584734, + "lightyellow": 16777184, + "lime": 65280, + "limegreen": 3329330, + "linen": 16445670, + "magenta": 16711935, + "maroon": 8388608, + "mediumaquamarine": 6737322, + "mediumblue": 205, + "mediumorchid": 12211667, + "mediumpurple": 9662683, + "mediumseagreen": 3978097, + "mediumslateblue": 8087790, + "mediumspringgreen": 64154, + "mediumturquoise": 4772300, + "mediumvioletred": 13047173, + "midnightblue": 1644912, + "mintcream": 16121850, + "mistyrose": 16770273, + "moccasin": 16770229, + "navajowhite": 16768685, + "navy": 128, + "oldlace": 16643558, + "olive": 8421376, + "olivedrab": 7048739, + "orange": 16753920, + "orangered": 16729344, + "orchid": 14315734, + "palegoldenrod": 15657130, + "palegreen": 10025880, + "paleturquoise": 11529966, + "palevioletred": 14381203, + "papayawhip": 16773077, + "peachpuff": 16767673, + "peru": 13468991, + "pink": 16761035, + "plum": 14524637, + "powderblue": 11591910, + "purple": 8388736, + "rebeccapurple": 6697881, + "red": 16711680, + "rosybrown": 12357519, + "royalblue": 4286945, + "saddlebrown": 9127187, + "salmon": 16416882, + "sandybrown": 16032864, + "seagreen": 3050327, + "seashell": 16774638, + "sienna": 10506797, + "silver": 12632256, + "skyblue": 8900331, + "slateblue": 6970061, + "slategray": 7372944, + "slategrey": 7372944, + "snow": 16775930, + "springgreen": 65407, + "steelblue": 4620980, + "tan": 13808780, + "teal": 32896, + "thistle": 14204888, + "tomato": 16737095, + "turquoise": 4251856, + "violet": 15631086, + "wheat": 16113331, + "white": 16777215, + "whitesmoke": 16119285, + "yellow": 16776960, + "yellowgreen": 10145074 +}; +var _hslA = { h: 0, s: 0, l: 0 }; +var _hslB = { h: 0, s: 0, l: 0 }; +function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t); + return p; +} +var Color = class { + constructor(r, g, b) { + this.isColor = true; + this.r = 1; + this.g = 1; + this.b = 1; + return this.set(r, g, b); + } + set(r, g, b) { + if (g === void 0 && b === void 0) { + const value = r; + if (value && value.isColor) { + this.copy(value); + } else if (typeof value === "number") { + this.setHex(value); + } else if (typeof value === "string") { + this.setStyle(value); + } + } else { + this.setRGB(r, g, b); + } + return this; + } + setScalar(scalar) { + this.r = scalar; + this.g = scalar; + this.b = scalar; + return this; + } + setHex(hex, colorSpace = SRGBColorSpace) { + hex = Math.floor(hex); + this.r = (hex >> 16 & 255) / 255; + this.g = (hex >> 8 & 255) / 255; + this.b = (hex & 255) / 255; + ColorManagement.toWorkingColorSpace(this, colorSpace); + return this; + } + setRGB(r, g, b, colorSpace = ColorManagement.workingColorSpace) { + this.r = r; + this.g = g; + this.b = b; + ColorManagement.toWorkingColorSpace(this, colorSpace); + return this; + } + setHSL(h, s, l, colorSpace = ColorManagement.workingColorSpace) { + h = euclideanModulo(h, 1); + s = clamp(s, 0, 1); + l = clamp(l, 0, 1); + if (s === 0) { + this.r = this.g = this.b = l; + } else { + const p = l <= 0.5 ? l * (1 + s) : l + s - l * s; + const q = 2 * l - p; + this.r = hue2rgb(q, p, h + 1 / 3); + this.g = hue2rgb(q, p, h); + this.b = hue2rgb(q, p, h - 1 / 3); + } + ColorManagement.toWorkingColorSpace(this, colorSpace); + return this; + } + setStyle(style, colorSpace = SRGBColorSpace) { + function handleAlpha(string) { + if (string === void 0) return; + if (parseFloat(string) < 1) { + console.warn("THREE.Color: Alpha component of " + style + " will be ignored."); + } + } + let m; + if (m = /^(\w+)\(([^\)]*)\)/.exec(style)) { + let color; + const name = m[1]; + const components = m[2]; + switch (name) { + case "rgb": + case "rgba": + if (color = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + handleAlpha(color[4]); + return this.setRGB( + Math.min(255, parseInt(color[1], 10)) / 255, + Math.min(255, parseInt(color[2], 10)) / 255, + Math.min(255, parseInt(color[3], 10)) / 255, + colorSpace + ); + } + if (color = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + handleAlpha(color[4]); + return this.setRGB( + Math.min(100, parseInt(color[1], 10)) / 100, + Math.min(100, parseInt(color[2], 10)) / 100, + Math.min(100, parseInt(color[3], 10)) / 100, + colorSpace + ); + } + break; + case "hsl": + case "hsla": + if (color = /^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + handleAlpha(color[4]); + return this.setHSL( + parseFloat(color[1]) / 360, + parseFloat(color[2]) / 100, + parseFloat(color[3]) / 100, + colorSpace + ); + } + break; + default: + console.warn("THREE.Color: Unknown color model " + style); + } + } else if (m = /^\#([A-Fa-f\d]+)$/.exec(style)) { + const hex = m[1]; + const size = hex.length; + if (size === 3) { + return this.setRGB( + parseInt(hex.charAt(0), 16) / 15, + parseInt(hex.charAt(1), 16) / 15, + parseInt(hex.charAt(2), 16) / 15, + colorSpace + ); + } else if (size === 6) { + return this.setHex(parseInt(hex, 16), colorSpace); + } else { + console.warn("THREE.Color: Invalid hex color " + style); + } + } else if (style && style.length > 0) { + return this.setColorName(style, colorSpace); + } + return this; + } + setColorName(style, colorSpace = SRGBColorSpace) { + const hex = _colorKeywords[style.toLowerCase()]; + if (hex !== void 0) { + this.setHex(hex, colorSpace); + } else { + console.warn("THREE.Color: Unknown color " + style); + } + return this; + } + clone() { + return new this.constructor(this.r, this.g, this.b); + } + copy(color) { + this.r = color.r; + this.g = color.g; + this.b = color.b; + return this; + } + copySRGBToLinear(color) { + this.r = SRGBToLinear(color.r); + this.g = SRGBToLinear(color.g); + this.b = SRGBToLinear(color.b); + return this; + } + copyLinearToSRGB(color) { + this.r = LinearToSRGB(color.r); + this.g = LinearToSRGB(color.g); + this.b = LinearToSRGB(color.b); + return this; + } + convertSRGBToLinear() { + this.copySRGBToLinear(this); + return this; + } + convertLinearToSRGB() { + this.copyLinearToSRGB(this); + return this; + } + getHex(colorSpace = SRGBColorSpace) { + ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace); + return Math.round(clamp(_color.r * 255, 0, 255)) * 65536 + Math.round(clamp(_color.g * 255, 0, 255)) * 256 + Math.round(clamp(_color.b * 255, 0, 255)); + } + getHexString(colorSpace = SRGBColorSpace) { + return ("000000" + this.getHex(colorSpace).toString(16)).slice(-6); + } + getHSL(target, colorSpace = ColorManagement.workingColorSpace) { + ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace); + const r = _color.r, g = _color.g, b = _color.b; + const max2 = Math.max(r, g, b); + const min = Math.min(r, g, b); + let hue, saturation; + const lightness = (min + max2) / 2; + if (min === max2) { + hue = 0; + saturation = 0; + } else { + const delta = max2 - min; + saturation = lightness <= 0.5 ? delta / (max2 + min) : delta / (2 - max2 - min); + switch (max2) { + case r: + hue = (g - b) / delta + (g < b ? 6 : 0); + break; + case g: + hue = (b - r) / delta + 2; + break; + case b: + hue = (r - g) / delta + 4; + break; + } + hue /= 6; + } + target.h = hue; + target.s = saturation; + target.l = lightness; + return target; + } + getRGB(target, colorSpace = ColorManagement.workingColorSpace) { + ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace); + target.r = _color.r; + target.g = _color.g; + target.b = _color.b; + return target; + } + getStyle(colorSpace = SRGBColorSpace) { + ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace); + const r = _color.r, g = _color.g, b = _color.b; + if (colorSpace !== SRGBColorSpace) { + return `color(${colorSpace} ${r.toFixed(3)} ${g.toFixed(3)} ${b.toFixed(3)})`; + } + return `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`; + } + offsetHSL(h, s, l) { + this.getHSL(_hslA); + return this.setHSL(_hslA.h + h, _hslA.s + s, _hslA.l + l); + } + add(color) { + this.r += color.r; + this.g += color.g; + this.b += color.b; + return this; + } + addColors(color1, color2) { + this.r = color1.r + color2.r; + this.g = color1.g + color2.g; + this.b = color1.b + color2.b; + return this; + } + addScalar(s) { + this.r += s; + this.g += s; + this.b += s; + return this; + } + sub(color) { + this.r = Math.max(0, this.r - color.r); + this.g = Math.max(0, this.g - color.g); + this.b = Math.max(0, this.b - color.b); + return this; + } + multiply(color) { + this.r *= color.r; + this.g *= color.g; + this.b *= color.b; + return this; + } + multiplyScalar(s) { + this.r *= s; + this.g *= s; + this.b *= s; + return this; + } + lerp(color, alpha) { + this.r += (color.r - this.r) * alpha; + this.g += (color.g - this.g) * alpha; + this.b += (color.b - this.b) * alpha; + return this; + } + lerpColors(color1, color2, alpha) { + this.r = color1.r + (color2.r - color1.r) * alpha; + this.g = color1.g + (color2.g - color1.g) * alpha; + this.b = color1.b + (color2.b - color1.b) * alpha; + return this; + } + lerpHSL(color, alpha) { + this.getHSL(_hslA); + color.getHSL(_hslB); + const h = lerp(_hslA.h, _hslB.h, alpha); + const s = lerp(_hslA.s, _hslB.s, alpha); + const l = lerp(_hslA.l, _hslB.l, alpha); + this.setHSL(h, s, l); + return this; + } + setFromVector3(v) { + this.r = v.x; + this.g = v.y; + this.b = v.z; + return this; + } + applyMatrix3(m) { + const r = this.r, g = this.g, b = this.b; + const e = m.elements; + this.r = e[0] * r + e[3] * g + e[6] * b; + this.g = e[1] * r + e[4] * g + e[7] * b; + this.b = e[2] * r + e[5] * g + e[8] * b; + return this; + } + equals(c) { + return c.r === this.r && c.g === this.g && c.b === this.b; + } + fromArray(array, offset = 0) { + this.r = array[offset]; + this.g = array[offset + 1]; + this.b = array[offset + 2]; + return this; + } + toArray(array = [], offset = 0) { + array[offset] = this.r; + array[offset + 1] = this.g; + array[offset + 2] = this.b; + return array; + } + fromBufferAttribute(attribute, index) { + this.r = attribute.getX(index); + this.g = attribute.getY(index); + this.b = attribute.getZ(index); + return this; + } + toJSON() { + return this.getHex(); + } + *[Symbol.iterator]() { + yield this.r; + yield this.g; + yield this.b; + } +}; +var _color = /* @__PURE__ */ new Color(); +Color.NAMES = _colorKeywords; +var _materialId = 0; +var Material = class extends EventDispatcher { + constructor() { + super(); + this.isMaterial = true; + Object.defineProperty(this, "id", { value: _materialId++ }); + this.uuid = generateUUID(); + this.name = ""; + this.type = "Material"; + this.blending = NormalBlending; + this.side = FrontSide; + this.vertexColors = false; + this.opacity = 1; + this.transparent = false; + this.alphaHash = false; + this.blendSrc = SrcAlphaFactor; + this.blendDst = OneMinusSrcAlphaFactor; + this.blendEquation = AddEquation; + this.blendSrcAlpha = null; + this.blendDstAlpha = null; + this.blendEquationAlpha = null; + this.blendColor = new Color(0, 0, 0); + this.blendAlpha = 0; + this.depthFunc = LessEqualDepth; + this.depthTest = true; + this.depthWrite = true; + this.stencilWriteMask = 255; + this.stencilFunc = AlwaysStencilFunc; + this.stencilRef = 0; + this.stencilFuncMask = 255; + this.stencilFail = KeepStencilOp; + this.stencilZFail = KeepStencilOp; + this.stencilZPass = KeepStencilOp; + this.stencilWrite = false; + this.clippingPlanes = null; + this.clipIntersection = false; + this.clipShadows = false; + this.shadowSide = null; + this.colorWrite = true; + this.precision = null; + this.polygonOffset = false; + this.polygonOffsetFactor = 0; + this.polygonOffsetUnits = 0; + this.dithering = false; + this.alphaToCoverage = false; + this.premultipliedAlpha = false; + this.forceSinglePass = false; + this.visible = true; + this.toneMapped = true; + this.userData = {}; + this.version = 0; + this._alphaTest = 0; + } + get alphaTest() { + return this._alphaTest; + } + set alphaTest(value) { + if (this._alphaTest > 0 !== value > 0) { + this.version++; + } + this._alphaTest = value; + } + onBuild() { + } + onBeforeRender() { + } + onBeforeCompile() { + } + customProgramCacheKey() { + return this.onBeforeCompile.toString(); + } + setValues(values) { + if (values === void 0) return; + for (const key in values) { + const newValue = values[key]; + if (newValue === void 0) { + console.warn(`THREE.Material: parameter '${key}' has value of undefined.`); + continue; + } + const currentValue = this[key]; + if (currentValue === void 0) { + console.warn(`THREE.Material: '${key}' is not a property of THREE.${this.type}.`); + continue; + } + if (currentValue && currentValue.isColor) { + currentValue.set(newValue); + } else if (currentValue && currentValue.isVector3 && (newValue && newValue.isVector3)) { + currentValue.copy(newValue); + } else { + this[key] = newValue; + } + } + } + toJSON(meta) { + const isRootObject = meta === void 0 || typeof meta === "string"; + if (isRootObject) { + meta = { + textures: {}, + images: {} + }; + } + const data = { + metadata: { + version: 4.6, + type: "Material", + generator: "Material.toJSON" + } + }; + data.uuid = this.uuid; + data.type = this.type; + if (this.name !== "") data.name = this.name; + if (this.color && this.color.isColor) data.color = this.color.getHex(); + if (this.roughness !== void 0) data.roughness = this.roughness; + if (this.metalness !== void 0) data.metalness = this.metalness; + if (this.sheen !== void 0) data.sheen = this.sheen; + if (this.sheenColor && this.sheenColor.isColor) data.sheenColor = this.sheenColor.getHex(); + if (this.sheenRoughness !== void 0) data.sheenRoughness = this.sheenRoughness; + if (this.emissive && this.emissive.isColor) data.emissive = this.emissive.getHex(); + if (this.emissiveIntensity !== void 0 && this.emissiveIntensity !== 1) data.emissiveIntensity = this.emissiveIntensity; + if (this.specular && this.specular.isColor) data.specular = this.specular.getHex(); + if (this.specularIntensity !== void 0) data.specularIntensity = this.specularIntensity; + if (this.specularColor && this.specularColor.isColor) data.specularColor = this.specularColor.getHex(); + if (this.shininess !== void 0) data.shininess = this.shininess; + if (this.clearcoat !== void 0) data.clearcoat = this.clearcoat; + if (this.clearcoatRoughness !== void 0) data.clearcoatRoughness = this.clearcoatRoughness; + if (this.clearcoatMap && this.clearcoatMap.isTexture) { + data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid; + } + if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) { + data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid; + } + if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) { + data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid; + data.clearcoatNormalScale = this.clearcoatNormalScale.toArray(); + } + if (this.iridescence !== void 0) data.iridescence = this.iridescence; + if (this.iridescenceIOR !== void 0) data.iridescenceIOR = this.iridescenceIOR; + if (this.iridescenceThicknessRange !== void 0) data.iridescenceThicknessRange = this.iridescenceThicknessRange; + if (this.iridescenceMap && this.iridescenceMap.isTexture) { + data.iridescenceMap = this.iridescenceMap.toJSON(meta).uuid; + } + if (this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture) { + data.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(meta).uuid; + } + if (this.anisotropy !== void 0) data.anisotropy = this.anisotropy; + if (this.anisotropyRotation !== void 0) data.anisotropyRotation = this.anisotropyRotation; + if (this.anisotropyMap && this.anisotropyMap.isTexture) { + data.anisotropyMap = this.anisotropyMap.toJSON(meta).uuid; + } + if (this.map && this.map.isTexture) data.map = this.map.toJSON(meta).uuid; + if (this.matcap && this.matcap.isTexture) data.matcap = this.matcap.toJSON(meta).uuid; + if (this.alphaMap && this.alphaMap.isTexture) data.alphaMap = this.alphaMap.toJSON(meta).uuid; + if (this.lightMap && this.lightMap.isTexture) { + data.lightMap = this.lightMap.toJSON(meta).uuid; + data.lightMapIntensity = this.lightMapIntensity; + } + if (this.aoMap && this.aoMap.isTexture) { + data.aoMap = this.aoMap.toJSON(meta).uuid; + data.aoMapIntensity = this.aoMapIntensity; + } + if (this.bumpMap && this.bumpMap.isTexture) { + data.bumpMap = this.bumpMap.toJSON(meta).uuid; + data.bumpScale = this.bumpScale; + } + if (this.normalMap && this.normalMap.isTexture) { + data.normalMap = this.normalMap.toJSON(meta).uuid; + data.normalMapType = this.normalMapType; + data.normalScale = this.normalScale.toArray(); + } + if (this.displacementMap && this.displacementMap.isTexture) { + data.displacementMap = this.displacementMap.toJSON(meta).uuid; + data.displacementScale = this.displacementScale; + data.displacementBias = this.displacementBias; + } + if (this.roughnessMap && this.roughnessMap.isTexture) data.roughnessMap = this.roughnessMap.toJSON(meta).uuid; + if (this.metalnessMap && this.metalnessMap.isTexture) data.metalnessMap = this.metalnessMap.toJSON(meta).uuid; + if (this.emissiveMap && this.emissiveMap.isTexture) data.emissiveMap = this.emissiveMap.toJSON(meta).uuid; + if (this.specularMap && this.specularMap.isTexture) data.specularMap = this.specularMap.toJSON(meta).uuid; + if (this.specularIntensityMap && this.specularIntensityMap.isTexture) data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid; + if (this.specularColorMap && this.specularColorMap.isTexture) data.specularColorMap = this.specularColorMap.toJSON(meta).uuid; + if (this.envMap && this.envMap.isTexture) { + data.envMap = this.envMap.toJSON(meta).uuid; + if (this.combine !== void 0) data.combine = this.combine; + } + if (this.envMapRotation !== void 0) data.envMapRotation = this.envMapRotation.toArray(); + if (this.envMapIntensity !== void 0) data.envMapIntensity = this.envMapIntensity; + if (this.reflectivity !== void 0) data.reflectivity = this.reflectivity; + if (this.refractionRatio !== void 0) data.refractionRatio = this.refractionRatio; + if (this.gradientMap && this.gradientMap.isTexture) { + data.gradientMap = this.gradientMap.toJSON(meta).uuid; + } + if (this.transmission !== void 0) data.transmission = this.transmission; + if (this.transmissionMap && this.transmissionMap.isTexture) data.transmissionMap = this.transmissionMap.toJSON(meta).uuid; + if (this.thickness !== void 0) data.thickness = this.thickness; + if (this.thicknessMap && this.thicknessMap.isTexture) data.thicknessMap = this.thicknessMap.toJSON(meta).uuid; + if (this.attenuationDistance !== void 0 && this.attenuationDistance !== Infinity) data.attenuationDistance = this.attenuationDistance; + if (this.attenuationColor !== void 0) data.attenuationColor = this.attenuationColor.getHex(); + if (this.size !== void 0) data.size = this.size; + if (this.shadowSide !== null) data.shadowSide = this.shadowSide; + if (this.sizeAttenuation !== void 0) data.sizeAttenuation = this.sizeAttenuation; + if (this.blending !== NormalBlending) data.blending = this.blending; + if (this.side !== FrontSide) data.side = this.side; + if (this.vertexColors === true) data.vertexColors = true; + if (this.opacity < 1) data.opacity = this.opacity; + if (this.transparent === true) data.transparent = true; + if (this.blendSrc !== SrcAlphaFactor) data.blendSrc = this.blendSrc; + if (this.blendDst !== OneMinusSrcAlphaFactor) data.blendDst = this.blendDst; + if (this.blendEquation !== AddEquation) data.blendEquation = this.blendEquation; + if (this.blendSrcAlpha !== null) data.blendSrcAlpha = this.blendSrcAlpha; + if (this.blendDstAlpha !== null) data.blendDstAlpha = this.blendDstAlpha; + if (this.blendEquationAlpha !== null) data.blendEquationAlpha = this.blendEquationAlpha; + if (this.blendColor && this.blendColor.isColor) data.blendColor = this.blendColor.getHex(); + if (this.blendAlpha !== 0) data.blendAlpha = this.blendAlpha; + if (this.depthFunc !== LessEqualDepth) data.depthFunc = this.depthFunc; + if (this.depthTest === false) data.depthTest = this.depthTest; + if (this.depthWrite === false) data.depthWrite = this.depthWrite; + if (this.colorWrite === false) data.colorWrite = this.colorWrite; + if (this.stencilWriteMask !== 255) data.stencilWriteMask = this.stencilWriteMask; + if (this.stencilFunc !== AlwaysStencilFunc) data.stencilFunc = this.stencilFunc; + if (this.stencilRef !== 0) data.stencilRef = this.stencilRef; + if (this.stencilFuncMask !== 255) data.stencilFuncMask = this.stencilFuncMask; + if (this.stencilFail !== KeepStencilOp) data.stencilFail = this.stencilFail; + if (this.stencilZFail !== KeepStencilOp) data.stencilZFail = this.stencilZFail; + if (this.stencilZPass !== KeepStencilOp) data.stencilZPass = this.stencilZPass; + if (this.stencilWrite === true) data.stencilWrite = this.stencilWrite; + if (this.rotation !== void 0 && this.rotation !== 0) data.rotation = this.rotation; + if (this.polygonOffset === true) data.polygonOffset = true; + if (this.polygonOffsetFactor !== 0) data.polygonOffsetFactor = this.polygonOffsetFactor; + if (this.polygonOffsetUnits !== 0) data.polygonOffsetUnits = this.polygonOffsetUnits; + if (this.linewidth !== void 0 && this.linewidth !== 1) data.linewidth = this.linewidth; + if (this.dashSize !== void 0) data.dashSize = this.dashSize; + if (this.gapSize !== void 0) data.gapSize = this.gapSize; + if (this.scale !== void 0) data.scale = this.scale; + if (this.dithering === true) data.dithering = true; + if (this.alphaTest > 0) data.alphaTest = this.alphaTest; + if (this.alphaHash === true) data.alphaHash = true; + if (this.alphaToCoverage === true) data.alphaToCoverage = true; + if (this.premultipliedAlpha === true) data.premultipliedAlpha = true; + if (this.forceSinglePass === true) data.forceSinglePass = true; + if (this.wireframe === true) data.wireframe = true; + if (this.wireframeLinewidth > 1) data.wireframeLinewidth = this.wireframeLinewidth; + if (this.wireframeLinecap !== "round") data.wireframeLinecap = this.wireframeLinecap; + if (this.wireframeLinejoin !== "round") data.wireframeLinejoin = this.wireframeLinejoin; + if (this.flatShading === true) data.flatShading = true; + if (this.visible === false) data.visible = false; + if (this.toneMapped === false) data.toneMapped = false; + if (this.fog === false) data.fog = false; + if (Object.keys(this.userData).length > 0) data.userData = this.userData; + function extractFromCache(cache) { + const values = []; + for (const key in cache) { + const data2 = cache[key]; + delete data2.metadata; + values.push(data2); + } + return values; + } + if (isRootObject) { + const textures = extractFromCache(meta.textures); + const images = extractFromCache(meta.images); + if (textures.length > 0) data.textures = textures; + if (images.length > 0) data.images = images; + } + return data; + } + clone() { + return new this.constructor().copy(this); + } + copy(source) { + this.name = source.name; + this.blending = source.blending; + this.side = source.side; + this.vertexColors = source.vertexColors; + this.opacity = source.opacity; + this.transparent = source.transparent; + this.blendSrc = source.blendSrc; + this.blendDst = source.blendDst; + this.blendEquation = source.blendEquation; + this.blendSrcAlpha = source.blendSrcAlpha; + this.blendDstAlpha = source.blendDstAlpha; + this.blendEquationAlpha = source.blendEquationAlpha; + this.blendColor.copy(source.blendColor); + this.blendAlpha = source.blendAlpha; + this.depthFunc = source.depthFunc; + this.depthTest = source.depthTest; + this.depthWrite = source.depthWrite; + this.stencilWriteMask = source.stencilWriteMask; + this.stencilFunc = source.stencilFunc; + this.stencilRef = source.stencilRef; + this.stencilFuncMask = source.stencilFuncMask; + this.stencilFail = source.stencilFail; + this.stencilZFail = source.stencilZFail; + this.stencilZPass = source.stencilZPass; + this.stencilWrite = source.stencilWrite; + const srcPlanes = source.clippingPlanes; + let dstPlanes = null; + if (srcPlanes !== null) { + const n = srcPlanes.length; + dstPlanes = new Array(n); + for (let i = 0; i !== n; ++i) { + dstPlanes[i] = srcPlanes[i].clone(); + } + } + this.clippingPlanes = dstPlanes; + this.clipIntersection = source.clipIntersection; + this.clipShadows = source.clipShadows; + this.shadowSide = source.shadowSide; + this.colorWrite = source.colorWrite; + this.precision = source.precision; + this.polygonOffset = source.polygonOffset; + this.polygonOffsetFactor = source.polygonOffsetFactor; + this.polygonOffsetUnits = source.polygonOffsetUnits; + this.dithering = source.dithering; + this.alphaTest = source.alphaTest; + this.alphaHash = source.alphaHash; + this.alphaToCoverage = source.alphaToCoverage; + this.premultipliedAlpha = source.premultipliedAlpha; + this.forceSinglePass = source.forceSinglePass; + this.visible = source.visible; + this.toneMapped = source.toneMapped; + this.userData = JSON.parse(JSON.stringify(source.userData)); + return this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + set needsUpdate(value) { + if (value === true) this.version++; + } +}; +var MeshBasicMaterial = class extends Material { + constructor(parameters) { + super(); + this.isMeshBasicMaterial = true; + this.type = "MeshBasicMaterial"; + this.color = new Color(16777215); + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1; + this.aoMap = null; + this.aoMapIntensity = 1; + this.specularMap = null; + this.alphaMap = null; + this.envMap = null; + this.envMapRotation = new Euler(); + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = "round"; + this.wireframeLinejoin = "round"; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.specularMap = source.specularMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.envMapRotation.copy(source.envMapRotation); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + this.fog = source.fog; + return this; + } +}; +var _vector$9 = /* @__PURE__ */ new Vector3(); +var _vector2$1 = /* @__PURE__ */ new Vector2(); +var BufferAttribute = class { + constructor(array, itemSize, normalized = false) { + if (Array.isArray(array)) { + throw new TypeError("THREE.BufferAttribute: array should be a Typed Array."); + } + this.isBufferAttribute = true; + this.name = ""; + this.array = array; + this.itemSize = itemSize; + this.count = array !== void 0 ? array.length / itemSize : 0; + this.normalized = normalized; + this.usage = StaticDrawUsage; + this._updateRange = { offset: 0, count: -1 }; + this.updateRanges = []; + this.gpuType = FloatType; + this.version = 0; + } + onUploadCallback() { + } + set needsUpdate(value) { + if (value === true) this.version++; + } + get updateRange() { + warnOnce("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."); + return this._updateRange; + } + setUsage(value) { + this.usage = value; + return this; + } + addUpdateRange(start, count) { + this.updateRanges.push({ start, count }); + } + clearUpdateRanges() { + this.updateRanges.length = 0; + } + copy(source) { + this.name = source.name; + this.array = new source.array.constructor(source.array); + this.itemSize = source.itemSize; + this.count = source.count; + this.normalized = source.normalized; + this.usage = source.usage; + this.gpuType = source.gpuType; + return this; + } + copyAt(index1, attribute, index2) { + index1 *= this.itemSize; + index2 *= attribute.itemSize; + for (let i = 0, l = this.itemSize; i < l; i++) { + this.array[index1 + i] = attribute.array[index2 + i]; + } + return this; + } + copyArray(array) { + this.array.set(array); + return this; + } + applyMatrix3(m) { + if (this.itemSize === 2) { + for (let i = 0, l = this.count; i < l; i++) { + _vector2$1.fromBufferAttribute(this, i); + _vector2$1.applyMatrix3(m); + this.setXY(i, _vector2$1.x, _vector2$1.y); + } + } else if (this.itemSize === 3) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + _vector$9.applyMatrix3(m); + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + } + return this; + } + applyMatrix4(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + _vector$9.applyMatrix4(m); + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + return this; + } + applyNormalMatrix(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + _vector$9.applyNormalMatrix(m); + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + return this; + } + transformDirection(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + _vector$9.transformDirection(m); + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + return this; + } + set(value, offset = 0) { + this.array.set(value, offset); + return this; + } + getComponent(index, component) { + let value = this.array[index * this.itemSize + component]; + if (this.normalized) value = denormalize(value, this.array); + return value; + } + setComponent(index, component, value) { + if (this.normalized) value = normalize(value, this.array); + this.array[index * this.itemSize + component] = value; + return this; + } + getX(index) { + let x = this.array[index * this.itemSize]; + if (this.normalized) x = denormalize(x, this.array); + return x; + } + setX(index, x) { + if (this.normalized) x = normalize(x, this.array); + this.array[index * this.itemSize] = x; + return this; + } + getY(index) { + let y = this.array[index * this.itemSize + 1]; + if (this.normalized) y = denormalize(y, this.array); + return y; + } + setY(index, y) { + if (this.normalized) y = normalize(y, this.array); + this.array[index * this.itemSize + 1] = y; + return this; + } + getZ(index) { + let z = this.array[index * this.itemSize + 2]; + if (this.normalized) z = denormalize(z, this.array); + return z; + } + setZ(index, z) { + if (this.normalized) z = normalize(z, this.array); + this.array[index * this.itemSize + 2] = z; + return this; + } + getW(index) { + let w = this.array[index * this.itemSize + 3]; + if (this.normalized) w = denormalize(w, this.array); + return w; + } + setW(index, w) { + if (this.normalized) w = normalize(w, this.array); + this.array[index * this.itemSize + 3] = w; + return this; + } + setXY(index, x, y) { + index *= this.itemSize; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + } + this.array[index + 0] = x; + this.array[index + 1] = y; + return this; + } + setXYZ(index, x, y, z) { + index *= this.itemSize; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + z = normalize(z, this.array); + } + this.array[index + 0] = x; + this.array[index + 1] = y; + this.array[index + 2] = z; + return this; + } + setXYZW(index, x, y, z, w) { + index *= this.itemSize; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + z = normalize(z, this.array); + w = normalize(w, this.array); + } + this.array[index + 0] = x; + this.array[index + 1] = y; + this.array[index + 2] = z; + this.array[index + 3] = w; + return this; + } + onUpload(callback) { + this.onUploadCallback = callback; + return this; + } + clone() { + return new this.constructor(this.array, this.itemSize).copy(this); + } + toJSON() { + const data = { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.from(this.array), + normalized: this.normalized + }; + if (this.name !== "") data.name = this.name; + if (this.usage !== StaticDrawUsage) data.usage = this.usage; + return data; + } +}; +var Uint16BufferAttribute = class extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Uint16Array(array), itemSize, normalized); + } +}; +var Uint32BufferAttribute = class extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Uint32Array(array), itemSize, normalized); + } +}; +var Float32BufferAttribute = class extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Float32Array(array), itemSize, normalized); + } +}; +var _id$2 = 0; +var _m1$2 = /* @__PURE__ */ new Matrix4(); +var _obj = /* @__PURE__ */ new Object3D(); +var _offset = /* @__PURE__ */ new Vector3(); +var _box$2 = /* @__PURE__ */ new Box3(); +var _boxMorphTargets = /* @__PURE__ */ new Box3(); +var _vector$8 = /* @__PURE__ */ new Vector3(); +var BufferGeometry = class _BufferGeometry extends EventDispatcher { + constructor() { + super(); + this.isBufferGeometry = true; + Object.defineProperty(this, "id", { value: _id$2++ }); + this.uuid = generateUUID(); + this.name = ""; + this.type = "BufferGeometry"; + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.morphTargetsRelative = false; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + this.drawRange = { start: 0, count: Infinity }; + this.userData = {}; + } + getIndex() { + return this.index; + } + setIndex(index) { + if (Array.isArray(index)) { + this.index = new (arrayNeedsUint32(index) ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1); + } else { + this.index = index; + } + return this; + } + getAttribute(name) { + return this.attributes[name]; + } + setAttribute(name, attribute) { + this.attributes[name] = attribute; + return this; + } + deleteAttribute(name) { + delete this.attributes[name]; + return this; + } + hasAttribute(name) { + return this.attributes[name] !== void 0; + } + addGroup(start, count, materialIndex = 0) { + this.groups.push({ + start, + count, + materialIndex + }); + } + clearGroups() { + this.groups = []; + } + setDrawRange(start, count) { + this.drawRange.start = start; + this.drawRange.count = count; + } + applyMatrix4(matrix) { + const position = this.attributes.position; + if (position !== void 0) { + position.applyMatrix4(matrix); + position.needsUpdate = true; + } + const normal = this.attributes.normal; + if (normal !== void 0) { + const normalMatrix = new Matrix3().getNormalMatrix(matrix); + normal.applyNormalMatrix(normalMatrix); + normal.needsUpdate = true; + } + const tangent = this.attributes.tangent; + if (tangent !== void 0) { + tangent.transformDirection(matrix); + tangent.needsUpdate = true; + } + if (this.boundingBox !== null) { + this.computeBoundingBox(); + } + if (this.boundingSphere !== null) { + this.computeBoundingSphere(); + } + return this; + } + applyQuaternion(q) { + _m1$2.makeRotationFromQuaternion(q); + this.applyMatrix4(_m1$2); + return this; + } + rotateX(angle) { + _m1$2.makeRotationX(angle); + this.applyMatrix4(_m1$2); + return this; + } + rotateY(angle) { + _m1$2.makeRotationY(angle); + this.applyMatrix4(_m1$2); + return this; + } + rotateZ(angle) { + _m1$2.makeRotationZ(angle); + this.applyMatrix4(_m1$2); + return this; + } + translate(x, y, z) { + _m1$2.makeTranslation(x, y, z); + this.applyMatrix4(_m1$2); + return this; + } + scale(x, y, z) { + _m1$2.makeScale(x, y, z); + this.applyMatrix4(_m1$2); + return this; + } + lookAt(vector) { + _obj.lookAt(vector); + _obj.updateMatrix(); + this.applyMatrix4(_obj.matrix); + return this; + } + center() { + this.computeBoundingBox(); + this.boundingBox.getCenter(_offset).negate(); + this.translate(_offset.x, _offset.y, _offset.z); + return this; + } + setFromPoints(points) { + const position = []; + for (let i = 0, l = points.length; i < l; i++) { + const point = points[i]; + position.push(point.x, point.y, point.z || 0); + } + this.setAttribute("position", new Float32BufferAttribute(position, 3)); + return this; + } + computeBoundingBox() { + if (this.boundingBox === null) { + this.boundingBox = new Box3(); + } + const position = this.attributes.position; + const morphAttributesPosition = this.morphAttributes.position; + if (position && position.isGLBufferAttribute) { + console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.", this); + this.boundingBox.set( + new Vector3(-Infinity, -Infinity, -Infinity), + new Vector3(Infinity, Infinity, Infinity) + ); + return; + } + if (position !== void 0) { + this.boundingBox.setFromBufferAttribute(position); + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + _box$2.setFromBufferAttribute(morphAttribute); + if (this.morphTargetsRelative) { + _vector$8.addVectors(this.boundingBox.min, _box$2.min); + this.boundingBox.expandByPoint(_vector$8); + _vector$8.addVectors(this.boundingBox.max, _box$2.max); + this.boundingBox.expandByPoint(_vector$8); + } else { + this.boundingBox.expandByPoint(_box$2.min); + this.boundingBox.expandByPoint(_box$2.max); + } + } + } + } else { + this.boundingBox.makeEmpty(); + } + if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) { + console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this); + } + } + computeBoundingSphere() { + if (this.boundingSphere === null) { + this.boundingSphere = new Sphere(); + } + const position = this.attributes.position; + const morphAttributesPosition = this.morphAttributes.position; + if (position && position.isGLBufferAttribute) { + console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.", this); + this.boundingSphere.set(new Vector3(), Infinity); + return; + } + if (position) { + const center = this.boundingSphere.center; + _box$2.setFromBufferAttribute(position); + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + _boxMorphTargets.setFromBufferAttribute(morphAttribute); + if (this.morphTargetsRelative) { + _vector$8.addVectors(_box$2.min, _boxMorphTargets.min); + _box$2.expandByPoint(_vector$8); + _vector$8.addVectors(_box$2.max, _boxMorphTargets.max); + _box$2.expandByPoint(_vector$8); + } else { + _box$2.expandByPoint(_boxMorphTargets.min); + _box$2.expandByPoint(_boxMorphTargets.max); + } + } + } + _box$2.getCenter(center); + let maxRadiusSq = 0; + for (let i = 0, il = position.count; i < il; i++) { + _vector$8.fromBufferAttribute(position, i); + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8)); + } + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + const morphTargetsRelative = this.morphTargetsRelative; + for (let j = 0, jl = morphAttribute.count; j < jl; j++) { + _vector$8.fromBufferAttribute(morphAttribute, j); + if (morphTargetsRelative) { + _offset.fromBufferAttribute(position, j); + _vector$8.add(_offset); + } + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8)); + } + } + } + this.boundingSphere.radius = Math.sqrt(maxRadiusSq); + if (isNaN(this.boundingSphere.radius)) { + console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this); + } + } + } + computeTangents() { + const index = this.index; + const attributes = this.attributes; + if (index === null || attributes.position === void 0 || attributes.normal === void 0 || attributes.uv === void 0) { + console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)"); + return; + } + const positionAttribute = attributes.position; + const normalAttribute = attributes.normal; + const uvAttribute = attributes.uv; + if (this.hasAttribute("tangent") === false) { + this.setAttribute("tangent", new BufferAttribute(new Float32Array(4 * positionAttribute.count), 4)); + } + const tangentAttribute = this.getAttribute("tangent"); + const tan1 = [], tan2 = []; + for (let i = 0; i < positionAttribute.count; i++) { + tan1[i] = new Vector3(); + tan2[i] = new Vector3(); + } + const vA = new Vector3(), vB = new Vector3(), vC = new Vector3(), uvA = new Vector2(), uvB = new Vector2(), uvC = new Vector2(), sdir = new Vector3(), tdir = new Vector3(); + function handleTriangle(a, b, c) { + vA.fromBufferAttribute(positionAttribute, a); + vB.fromBufferAttribute(positionAttribute, b); + vC.fromBufferAttribute(positionAttribute, c); + uvA.fromBufferAttribute(uvAttribute, a); + uvB.fromBufferAttribute(uvAttribute, b); + uvC.fromBufferAttribute(uvAttribute, c); + vB.sub(vA); + vC.sub(vA); + uvB.sub(uvA); + uvC.sub(uvA); + const r = 1 / (uvB.x * uvC.y - uvC.x * uvB.y); + if (!isFinite(r)) return; + sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r); + tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r); + tan1[a].add(sdir); + tan1[b].add(sdir); + tan1[c].add(sdir); + tan2[a].add(tdir); + tan2[b].add(tdir); + tan2[c].add(tdir); + } + let groups = this.groups; + if (groups.length === 0) { + groups = [{ + start: 0, + count: index.count + }]; + } + for (let i = 0, il = groups.length; i < il; ++i) { + const group = groups[i]; + const start = group.start; + const count = group.count; + for (let j = start, jl = start + count; j < jl; j += 3) { + handleTriangle( + index.getX(j + 0), + index.getX(j + 1), + index.getX(j + 2) + ); + } + } + const tmp = new Vector3(), tmp2 = new Vector3(); + const n = new Vector3(), n2 = new Vector3(); + function handleVertex(v) { + n.fromBufferAttribute(normalAttribute, v); + n2.copy(n); + const t = tan1[v]; + tmp.copy(t); + tmp.sub(n.multiplyScalar(n.dot(t))).normalize(); + tmp2.crossVectors(n2, t); + const test = tmp2.dot(tan2[v]); + const w = test < 0 ? -1 : 1; + tangentAttribute.setXYZW(v, tmp.x, tmp.y, tmp.z, w); + } + for (let i = 0, il = groups.length; i < il; ++i) { + const group = groups[i]; + const start = group.start; + const count = group.count; + for (let j = start, jl = start + count; j < jl; j += 3) { + handleVertex(index.getX(j + 0)); + handleVertex(index.getX(j + 1)); + handleVertex(index.getX(j + 2)); + } + } + } + computeVertexNormals() { + const index = this.index; + const positionAttribute = this.getAttribute("position"); + if (positionAttribute !== void 0) { + let normalAttribute = this.getAttribute("normal"); + if (normalAttribute === void 0) { + normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3); + this.setAttribute("normal", normalAttribute); + } else { + for (let i = 0, il = normalAttribute.count; i < il; i++) { + normalAttribute.setXYZ(i, 0, 0, 0); + } + } + const pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); + const nA = new Vector3(), nB = new Vector3(), nC = new Vector3(); + const cb = new Vector3(), ab = new Vector3(); + if (index) { + for (let i = 0, il = index.count; i < il; i += 3) { + const vA = index.getX(i + 0); + const vB = index.getX(i + 1); + const vC = index.getX(i + 2); + pA.fromBufferAttribute(positionAttribute, vA); + pB.fromBufferAttribute(positionAttribute, vB); + pC.fromBufferAttribute(positionAttribute, vC); + cb.subVectors(pC, pB); + ab.subVectors(pA, pB); + cb.cross(ab); + nA.fromBufferAttribute(normalAttribute, vA); + nB.fromBufferAttribute(normalAttribute, vB); + nC.fromBufferAttribute(normalAttribute, vC); + nA.add(cb); + nB.add(cb); + nC.add(cb); + normalAttribute.setXYZ(vA, nA.x, nA.y, nA.z); + normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z); + normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z); + } + } else { + for (let i = 0, il = positionAttribute.count; i < il; i += 3) { + pA.fromBufferAttribute(positionAttribute, i + 0); + pB.fromBufferAttribute(positionAttribute, i + 1); + pC.fromBufferAttribute(positionAttribute, i + 2); + cb.subVectors(pC, pB); + ab.subVectors(pA, pB); + cb.cross(ab); + normalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z); + normalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z); + normalAttribute.setXYZ(i + 2, cb.x, cb.y, cb.z); + } + } + this.normalizeNormals(); + normalAttribute.needsUpdate = true; + } + } + normalizeNormals() { + const normals = this.attributes.normal; + for (let i = 0, il = normals.count; i < il; i++) { + _vector$8.fromBufferAttribute(normals, i); + _vector$8.normalize(); + normals.setXYZ(i, _vector$8.x, _vector$8.y, _vector$8.z); + } + } + toNonIndexed() { + function convertBufferAttribute(attribute, indices2) { + const array = attribute.array; + const itemSize = attribute.itemSize; + const normalized = attribute.normalized; + const array2 = new array.constructor(indices2.length * itemSize); + let index = 0, index2 = 0; + for (let i = 0, l = indices2.length; i < l; i++) { + if (attribute.isInterleavedBufferAttribute) { + index = indices2[i] * attribute.data.stride + attribute.offset; + } else { + index = indices2[i] * itemSize; + } + for (let j = 0; j < itemSize; j++) { + array2[index2++] = array[index++]; + } + } + return new BufferAttribute(array2, itemSize, normalized); + } + if (this.index === null) { + console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."); + return this; + } + const geometry2 = new _BufferGeometry(); + const indices = this.index.array; + const attributes = this.attributes; + for (const name in attributes) { + const attribute = attributes[name]; + const newAttribute = convertBufferAttribute(attribute, indices); + geometry2.setAttribute(name, newAttribute); + } + const morphAttributes = this.morphAttributes; + for (const name in morphAttributes) { + const morphArray = []; + const morphAttribute = morphAttributes[name]; + for (let i = 0, il = morphAttribute.length; i < il; i++) { + const attribute = morphAttribute[i]; + const newAttribute = convertBufferAttribute(attribute, indices); + morphArray.push(newAttribute); + } + geometry2.morphAttributes[name] = morphArray; + } + geometry2.morphTargetsRelative = this.morphTargetsRelative; + const groups = this.groups; + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + geometry2.addGroup(group.start, group.count, group.materialIndex); + } + return geometry2; + } + toJSON() { + const data = { + metadata: { + version: 4.6, + type: "BufferGeometry", + generator: "BufferGeometry.toJSON" + } + }; + data.uuid = this.uuid; + data.type = this.type; + if (this.name !== "") data.name = this.name; + if (Object.keys(this.userData).length > 0) data.userData = this.userData; + if (this.parameters !== void 0) { + const parameters = this.parameters; + for (const key in parameters) { + if (parameters[key] !== void 0) data[key] = parameters[key]; + } + return data; + } + data.data = { attributes: {} }; + const index = this.index; + if (index !== null) { + data.data.index = { + type: index.array.constructor.name, + array: Array.prototype.slice.call(index.array) + }; + } + const attributes = this.attributes; + for (const key in attributes) { + const attribute = attributes[key]; + data.data.attributes[key] = attribute.toJSON(data.data); + } + const morphAttributes = {}; + let hasMorphAttributes = false; + for (const key in this.morphAttributes) { + const attributeArray = this.morphAttributes[key]; + const array = []; + for (let i = 0, il = attributeArray.length; i < il; i++) { + const attribute = attributeArray[i]; + array.push(attribute.toJSON(data.data)); + } + if (array.length > 0) { + morphAttributes[key] = array; + hasMorphAttributes = true; + } + } + if (hasMorphAttributes) { + data.data.morphAttributes = morphAttributes; + data.data.morphTargetsRelative = this.morphTargetsRelative; + } + const groups = this.groups; + if (groups.length > 0) { + data.data.groups = JSON.parse(JSON.stringify(groups)); + } + const boundingSphere = this.boundingSphere; + if (boundingSphere !== null) { + data.data.boundingSphere = { + center: boundingSphere.center.toArray(), + radius: boundingSphere.radius + }; + } + return data; + } + clone() { + return new this.constructor().copy(this); + } + copy(source) { + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + const data = {}; + this.name = source.name; + const index = source.index; + if (index !== null) { + this.setIndex(index.clone(data)); + } + const attributes = source.attributes; + for (const name in attributes) { + const attribute = attributes[name]; + this.setAttribute(name, attribute.clone(data)); + } + const morphAttributes = source.morphAttributes; + for (const name in morphAttributes) { + const array = []; + const morphAttribute = morphAttributes[name]; + for (let i = 0, l = morphAttribute.length; i < l; i++) { + array.push(morphAttribute[i].clone(data)); + } + this.morphAttributes[name] = array; + } + this.morphTargetsRelative = source.morphTargetsRelative; + const groups = source.groups; + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + this.addGroup(group.start, group.count, group.materialIndex); + } + const boundingBox = source.boundingBox; + if (boundingBox !== null) { + this.boundingBox = boundingBox.clone(); + } + const boundingSphere = source.boundingSphere; + if (boundingSphere !== null) { + this.boundingSphere = boundingSphere.clone(); + } + this.drawRange.start = source.drawRange.start; + this.drawRange.count = source.drawRange.count; + this.userData = source.userData; + return this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +}; +var _inverseMatrix$3 = /* @__PURE__ */ new Matrix4(); +var _ray$3 = /* @__PURE__ */ new Ray(); +var _sphere$6 = /* @__PURE__ */ new Sphere(); +var _sphereHitAt = /* @__PURE__ */ new Vector3(); +var _vA$1 = /* @__PURE__ */ new Vector3(); +var _vB$1 = /* @__PURE__ */ new Vector3(); +var _vC$1 = /* @__PURE__ */ new Vector3(); +var _tempA = /* @__PURE__ */ new Vector3(); +var _morphA = /* @__PURE__ */ new Vector3(); +var _uvA$1 = /* @__PURE__ */ new Vector2(); +var _uvB$1 = /* @__PURE__ */ new Vector2(); +var _uvC$1 = /* @__PURE__ */ new Vector2(); +var _normalA = /* @__PURE__ */ new Vector3(); +var _normalB = /* @__PURE__ */ new Vector3(); +var _normalC = /* @__PURE__ */ new Vector3(); +var _intersectionPoint = /* @__PURE__ */ new Vector3(); +var _intersectionPointWorld = /* @__PURE__ */ new Vector3(); +var Mesh = class extends Object3D { + constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) { + super(); + this.isMesh = true; + this.type = "Mesh"; + this.geometry = geometry; + this.material = material; + this.updateMorphTargets(); + } + copy(source, recursive) { + super.copy(source, recursive); + if (source.morphTargetInfluences !== void 0) { + this.morphTargetInfluences = source.morphTargetInfluences.slice(); + } + if (source.morphTargetDictionary !== void 0) { + this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary); + } + this.material = Array.isArray(source.material) ? source.material.slice() : source.material; + this.geometry = source.geometry; + return this; + } + updateMorphTargets() { + const geometry = this.geometry; + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + if (morphAttribute !== void 0) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } + getVertexPosition(index, target) { + const geometry = this.geometry; + const position = geometry.attributes.position; + const morphPosition = geometry.morphAttributes.position; + const morphTargetsRelative = geometry.morphTargetsRelative; + target.fromBufferAttribute(position, index); + const morphInfluences = this.morphTargetInfluences; + if (morphPosition && morphInfluences) { + _morphA.set(0, 0, 0); + for (let i = 0, il = morphPosition.length; i < il; i++) { + const influence = morphInfluences[i]; + const morphAttribute = morphPosition[i]; + if (influence === 0) continue; + _tempA.fromBufferAttribute(morphAttribute, index); + if (morphTargetsRelative) { + _morphA.addScaledVector(_tempA, influence); + } else { + _morphA.addScaledVector(_tempA.sub(target), influence); + } + } + target.add(_morphA); + } + return target; + } + raycast(raycaster, intersects2) { + const geometry = this.geometry; + const material = this.material; + const matrixWorld = this.matrixWorld; + if (material === void 0) return; + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + _sphere$6.copy(geometry.boundingSphere); + _sphere$6.applyMatrix4(matrixWorld); + _ray$3.copy(raycaster.ray).recast(raycaster.near); + if (_sphere$6.containsPoint(_ray$3.origin) === false) { + if (_ray$3.intersectSphere(_sphere$6, _sphereHitAt) === null) return; + if (_ray$3.origin.distanceToSquared(_sphereHitAt) > (raycaster.far - raycaster.near) ** 2) return; + } + _inverseMatrix$3.copy(matrixWorld).invert(); + _ray$3.copy(raycaster.ray).applyMatrix4(_inverseMatrix$3); + if (geometry.boundingBox !== null) { + if (_ray$3.intersectsBox(geometry.boundingBox) === false) return; + } + this._computeIntersections(raycaster, intersects2, _ray$3); + } + _computeIntersections(raycaster, intersects2, rayLocalSpace) { + let intersection; + const geometry = this.geometry; + const material = this.material; + const index = geometry.index; + const position = geometry.attributes.position; + const uv = geometry.attributes.uv; + const uv1 = geometry.attributes.uv1; + const normal = geometry.attributes.normal; + const groups = geometry.groups; + const drawRange = geometry.drawRange; + if (index !== null) { + if (Array.isArray(material)) { + for (let i = 0, il = groups.length; i < il; i++) { + const group = groups[i]; + const groupMaterial = material[group.materialIndex]; + const start = Math.max(group.start, drawRange.start); + const end = Math.min(index.count, Math.min(group.start + group.count, drawRange.start + drawRange.count)); + for (let j = start, jl = end; j < jl; j += 3) { + const a = index.getX(j); + const b = index.getX(j + 1); + const c = index.getX(j + 2); + intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c); + if (intersection) { + intersection.faceIndex = Math.floor(j / 3); + intersection.face.materialIndex = group.materialIndex; + intersects2.push(intersection); + } + } + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + for (let i = start, il = end; i < il; i += 3) { + const a = index.getX(i); + const b = index.getX(i + 1); + const c = index.getX(i + 2); + intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c); + if (intersection) { + intersection.faceIndex = Math.floor(i / 3); + intersects2.push(intersection); + } + } + } + } else if (position !== void 0) { + if (Array.isArray(material)) { + for (let i = 0, il = groups.length; i < il; i++) { + const group = groups[i]; + const groupMaterial = material[group.materialIndex]; + const start = Math.max(group.start, drawRange.start); + const end = Math.min(position.count, Math.min(group.start + group.count, drawRange.start + drawRange.count)); + for (let j = start, jl = end; j < jl; j += 3) { + const a = j; + const b = j + 1; + const c = j + 2; + intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c); + if (intersection) { + intersection.faceIndex = Math.floor(j / 3); + intersection.face.materialIndex = group.materialIndex; + intersects2.push(intersection); + } + } + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(position.count, drawRange.start + drawRange.count); + for (let i = start, il = end; i < il; i += 3) { + const a = i; + const b = i + 1; + const c = i + 2; + intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c); + if (intersection) { + intersection.faceIndex = Math.floor(i / 3); + intersects2.push(intersection); + } + } + } + } + } +}; +function checkIntersection(object, material, raycaster, ray, pA, pB, pC, point) { + let intersect2; + if (material.side === BackSide) { + intersect2 = ray.intersectTriangle(pC, pB, pA, true, point); + } else { + intersect2 = ray.intersectTriangle(pA, pB, pC, material.side === FrontSide, point); + } + if (intersect2 === null) return null; + _intersectionPointWorld.copy(point); + _intersectionPointWorld.applyMatrix4(object.matrixWorld); + const distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld); + if (distance < raycaster.near || distance > raycaster.far) return null; + return { + distance, + point: _intersectionPointWorld.clone(), + object + }; +} +function checkGeometryIntersection(object, material, raycaster, ray, uv, uv1, normal, a, b, c) { + object.getVertexPosition(a, _vA$1); + object.getVertexPosition(b, _vB$1); + object.getVertexPosition(c, _vC$1); + const intersection = checkIntersection(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint); + if (intersection) { + if (uv) { + _uvA$1.fromBufferAttribute(uv, a); + _uvB$1.fromBufferAttribute(uv, b); + _uvC$1.fromBufferAttribute(uv, c); + intersection.uv = Triangle.getInterpolation(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2()); + } + if (uv1) { + _uvA$1.fromBufferAttribute(uv1, a); + _uvB$1.fromBufferAttribute(uv1, b); + _uvC$1.fromBufferAttribute(uv1, c); + intersection.uv1 = Triangle.getInterpolation(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2()); + } + if (normal) { + _normalA.fromBufferAttribute(normal, a); + _normalB.fromBufferAttribute(normal, b); + _normalC.fromBufferAttribute(normal, c); + intersection.normal = Triangle.getInterpolation(_intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3()); + if (intersection.normal.dot(ray.direction) > 0) { + intersection.normal.multiplyScalar(-1); + } + } + const face = { + a, + b, + c, + normal: new Vector3(), + materialIndex: 0 + }; + Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal); + intersection.face = face; + } + return intersection; +} +var BoxGeometry = class _BoxGeometry extends BufferGeometry { + constructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) { + super(); + this.type = "BoxGeometry"; + this.parameters = { + width, + height, + depth, + widthSegments, + heightSegments, + depthSegments + }; + const scope = this; + widthSegments = Math.floor(widthSegments); + heightSegments = Math.floor(heightSegments); + depthSegments = Math.floor(depthSegments); + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + let numberOfVertices = 0; + let groupStart = 0; + buildPlane("z", "y", "x", -1, -1, depth, height, width, depthSegments, heightSegments, 0); + buildPlane("z", "y", "x", 1, -1, depth, height, -width, depthSegments, heightSegments, 1); + buildPlane("x", "z", "y", 1, 1, width, depth, height, widthSegments, depthSegments, 2); + buildPlane("x", "z", "y", 1, -1, width, depth, -height, widthSegments, depthSegments, 3); + buildPlane("x", "y", "z", 1, -1, width, height, depth, widthSegments, heightSegments, 4); + buildPlane("x", "y", "z", -1, -1, width, height, -depth, widthSegments, heightSegments, 5); + this.setIndex(indices); + this.setAttribute("position", new Float32BufferAttribute(vertices, 3)); + this.setAttribute("normal", new Float32BufferAttribute(normals, 3)); + this.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); + function buildPlane(u, v, w, udir, vdir, width2, height2, depth2, gridX, gridY, materialIndex) { + const segmentWidth = width2 / gridX; + const segmentHeight = height2 / gridY; + const widthHalf = width2 / 2; + const heightHalf = height2 / 2; + const depthHalf = depth2 / 2; + const gridX1 = gridX + 1; + const gridY1 = gridY + 1; + let vertexCounter = 0; + let groupCount = 0; + const vector = new Vector3(); + for (let iy = 0; iy < gridY1; iy++) { + const y = iy * segmentHeight - heightHalf; + for (let ix = 0; ix < gridX1; ix++) { + const x = ix * segmentWidth - widthHalf; + vector[u] = x * udir; + vector[v] = y * vdir; + vector[w] = depthHalf; + vertices.push(vector.x, vector.y, vector.z); + vector[u] = 0; + vector[v] = 0; + vector[w] = depth2 > 0 ? 1 : -1; + normals.push(vector.x, vector.y, vector.z); + uvs.push(ix / gridX); + uvs.push(1 - iy / gridY); + vertexCounter += 1; + } + } + for (let iy = 0; iy < gridY; iy++) { + for (let ix = 0; ix < gridX; ix++) { + const a = numberOfVertices + ix + gridX1 * iy; + const b = numberOfVertices + ix + gridX1 * (iy + 1); + const c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1); + const d = numberOfVertices + (ix + 1) + gridX1 * iy; + indices.push(a, b, d); + indices.push(b, c, d); + groupCount += 6; + } + } + scope.addGroup(groupStart, groupCount, materialIndex); + groupStart += groupCount; + numberOfVertices += vertexCounter; + } + } + copy(source) { + super.copy(source); + this.parameters = Object.assign({}, source.parameters); + return this; + } + static fromJSON(data) { + return new _BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments); + } +}; +function cloneUniforms(src) { + const dst = {}; + for (const u in src) { + dst[u] = {}; + for (const p in src[u]) { + const property = src[u][p]; + if (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture || property.isQuaternion)) { + if (property.isRenderTargetTexture) { + console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."); + dst[u][p] = null; + } else { + dst[u][p] = property.clone(); + } + } else if (Array.isArray(property)) { + dst[u][p] = property.slice(); + } else { + dst[u][p] = property; + } + } + } + return dst; +} +function mergeUniforms(uniforms) { + const merged = {}; + for (let u = 0; u < uniforms.length; u++) { + const tmp = cloneUniforms(uniforms[u]); + for (const p in tmp) { + merged[p] = tmp[p]; + } + } + return merged; +} +function cloneUniformsGroups(src) { + const dst = []; + for (let u = 0; u < src.length; u++) { + dst.push(src[u].clone()); + } + return dst; +} +function getUnlitUniformColorSpace(renderer) { + const currentRenderTarget = renderer.getRenderTarget(); + if (currentRenderTarget === null) { + return renderer.outputColorSpace; + } + if (currentRenderTarget.isXRRenderTarget === true) { + return currentRenderTarget.texture.colorSpace; + } + return ColorManagement.workingColorSpace; +} +var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms }; +var default_vertex = "void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"; +var default_fragment = "void main() {\n gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}"; +var ShaderMaterial = class extends Material { + constructor(parameters) { + super(); + this.isShaderMaterial = true; + this.type = "ShaderMaterial"; + this.defines = {}; + this.uniforms = {}; + this.uniformsGroups = []; + this.vertexShader = default_vertex; + this.fragmentShader = default_fragment; + this.linewidth = 1; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.fog = false; + this.lights = false; + this.clipping = false; + this.forceSinglePass = true; + this.extensions = { + clipCullDistance: false, + // set to use vertex shader clipping + multiDraw: false + // set to use vertex shader multi_draw / enable gl_DrawID + }; + this.defaultAttributeValues = { + "color": [1, 1, 1], + "uv": [0, 0], + "uv1": [0, 0] + }; + this.index0AttributeName = void 0; + this.uniformsNeedUpdate = false; + this.glslVersion = null; + if (parameters !== void 0) { + this.setValues(parameters); + } + } + copy(source) { + super.copy(source); + this.fragmentShader = source.fragmentShader; + this.vertexShader = source.vertexShader; + this.uniforms = cloneUniforms(source.uniforms); + this.uniformsGroups = cloneUniformsGroups(source.uniformsGroups); + this.defines = Object.assign({}, source.defines); + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.fog = source.fog; + this.lights = source.lights; + this.clipping = source.clipping; + this.extensions = Object.assign({}, source.extensions); + this.glslVersion = source.glslVersion; + return this; + } + toJSON(meta) { + const data = super.toJSON(meta); + data.glslVersion = this.glslVersion; + data.uniforms = {}; + for (const name in this.uniforms) { + const uniform = this.uniforms[name]; + const value = uniform.value; + if (value && value.isTexture) { + data.uniforms[name] = { + type: "t", + value: value.toJSON(meta).uuid + }; + } else if (value && value.isColor) { + data.uniforms[name] = { + type: "c", + value: value.getHex() + }; + } else if (value && value.isVector2) { + data.uniforms[name] = { + type: "v2", + value: value.toArray() + }; + } else if (value && value.isVector3) { + data.uniforms[name] = { + type: "v3", + value: value.toArray() + }; + } else if (value && value.isVector4) { + data.uniforms[name] = { + type: "v4", + value: value.toArray() + }; + } else if (value && value.isMatrix3) { + data.uniforms[name] = { + type: "m3", + value: value.toArray() + }; + } else if (value && value.isMatrix4) { + data.uniforms[name] = { + type: "m4", + value: value.toArray() + }; + } else { + data.uniforms[name] = { + value + }; + } + } + if (Object.keys(this.defines).length > 0) data.defines = this.defines; + data.vertexShader = this.vertexShader; + data.fragmentShader = this.fragmentShader; + data.lights = this.lights; + data.clipping = this.clipping; + const extensions = {}; + for (const key in this.extensions) { + if (this.extensions[key] === true) extensions[key] = true; + } + if (Object.keys(extensions).length > 0) data.extensions = extensions; + return data; + } +}; +var Camera = class extends Object3D { + constructor() { + super(); + this.isCamera = true; + this.type = "Camera"; + this.matrixWorldInverse = new Matrix4(); + this.projectionMatrix = new Matrix4(); + this.projectionMatrixInverse = new Matrix4(); + this.coordinateSystem = WebGLCoordinateSystem; + } + copy(source, recursive) { + super.copy(source, recursive); + this.matrixWorldInverse.copy(source.matrixWorldInverse); + this.projectionMatrix.copy(source.projectionMatrix); + this.projectionMatrixInverse.copy(source.projectionMatrixInverse); + this.coordinateSystem = source.coordinateSystem; + return this; + } + getWorldDirection(target) { + return super.getWorldDirection(target).negate(); + } + updateMatrixWorld(force) { + super.updateMatrixWorld(force); + this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + updateWorldMatrix(updateParents, updateChildren) { + super.updateWorldMatrix(updateParents, updateChildren); + this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + clone() { + return new this.constructor().copy(this); + } +}; +var _v3$1 = /* @__PURE__ */ new Vector3(); +var _minTarget = /* @__PURE__ */ new Vector2(); +var _maxTarget = /* @__PURE__ */ new Vector2(); +var PerspectiveCamera = class extends Camera { + constructor(fov2 = 50, aspect2 = 1, near = 0.1, far = 2e3) { + super(); + this.isPerspectiveCamera = true; + this.type = "PerspectiveCamera"; + this.fov = fov2; + this.zoom = 1; + this.near = near; + this.far = far; + this.focus = 10; + this.aspect = aspect2; + this.view = null; + this.filmGauge = 35; + this.filmOffset = 0; + this.updateProjectionMatrix(); + } + copy(source, recursive) { + super.copy(source, recursive); + this.fov = source.fov; + this.zoom = source.zoom; + this.near = source.near; + this.far = source.far; + this.focus = source.focus; + this.aspect = source.aspect; + this.view = source.view === null ? null : Object.assign({}, source.view); + this.filmGauge = source.filmGauge; + this.filmOffset = source.filmOffset; + return this; + } + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + setFocalLength(focalLength) { + const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; + this.fov = RAD2DEG * 2 * Math.atan(vExtentSlope); + this.updateProjectionMatrix(); + } + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + getFocalLength() { + const vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov); + return 0.5 * this.getFilmHeight() / vExtentSlope; + } + getEffectiveFOV() { + return RAD2DEG * 2 * Math.atan( + Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom + ); + } + getFilmWidth() { + return this.filmGauge * Math.min(this.aspect, 1); + } + getFilmHeight() { + return this.filmGauge / Math.max(this.aspect, 1); + } + /** + * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction. + * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle. + */ + getViewBounds(distance, minTarget, maxTarget) { + _v3$1.set(-1, -1, 0.5).applyMatrix4(this.projectionMatrixInverse); + minTarget.set(_v3$1.x, _v3$1.y).multiplyScalar(-distance / _v3$1.z); + _v3$1.set(1, 1, 0.5).applyMatrix4(this.projectionMatrixInverse); + maxTarget.set(_v3$1.x, _v3$1.y).multiplyScalar(-distance / _v3$1.z); + } + /** + * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction. + * Copies the result into the target Vector2, where x is width and y is height. + */ + getViewSize(distance, target) { + this.getViewBounds(distance, _minTarget, _maxTarget); + return target.subVectors(_maxTarget, _minTarget); + } + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * const w = 1920; + * const h = 1080; + * const fullWidth = w * 3; + * const fullHeight = h * 2; + * + * --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + setViewOffset(fullWidth, fullHeight, x, y, width, height) { + this.aspect = fullWidth / fullHeight; + if (this.view === null) { + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + } + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + this.updateProjectionMatrix(); + } + clearViewOffset() { + if (this.view !== null) { + this.view.enabled = false; + } + this.updateProjectionMatrix(); + } + updateProjectionMatrix() { + const near = this.near; + let top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom; + let height = 2 * top; + let width = this.aspect * height; + let left = -0.5 * width; + const view = this.view; + if (this.view !== null && this.view.enabled) { + const fullWidth = view.fullWidth, fullHeight = view.fullHeight; + left += view.offsetX * width / fullWidth; + top -= view.offsetY * height / fullHeight; + width *= view.width / fullWidth; + height *= view.height / fullHeight; + } + const skew = this.filmOffset; + if (skew !== 0) left += near * skew / this.getFilmWidth(); + this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far, this.coordinateSystem); + this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + toJSON(meta) { + const data = super.toJSON(meta); + data.object.fov = this.fov; + data.object.zoom = this.zoom; + data.object.near = this.near; + data.object.far = this.far; + data.object.focus = this.focus; + data.object.aspect = this.aspect; + if (this.view !== null) data.object.view = Object.assign({}, this.view); + data.object.filmGauge = this.filmGauge; + data.object.filmOffset = this.filmOffset; + return data; + } +}; +var fov = -90; +var aspect = 1; +var CubeCamera = class extends Object3D { + constructor(near, far, renderTarget) { + super(); + this.type = "CubeCamera"; + this.renderTarget = renderTarget; + this.coordinateSystem = null; + this.activeMipmapLevel = 0; + const cameraPX = new PerspectiveCamera(fov, aspect, near, far); + cameraPX.layers = this.layers; + this.add(cameraPX); + const cameraNX = new PerspectiveCamera(fov, aspect, near, far); + cameraNX.layers = this.layers; + this.add(cameraNX); + const cameraPY = new PerspectiveCamera(fov, aspect, near, far); + cameraPY.layers = this.layers; + this.add(cameraPY); + const cameraNY = new PerspectiveCamera(fov, aspect, near, far); + cameraNY.layers = this.layers; + this.add(cameraNY); + const cameraPZ = new PerspectiveCamera(fov, aspect, near, far); + cameraPZ.layers = this.layers; + this.add(cameraPZ); + const cameraNZ = new PerspectiveCamera(fov, aspect, near, far); + cameraNZ.layers = this.layers; + this.add(cameraNZ); + } + updateCoordinateSystem() { + const coordinateSystem = this.coordinateSystem; + const cameras = this.children.concat(); + const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = cameras; + for (const camera of cameras) this.remove(camera); + if (coordinateSystem === WebGLCoordinateSystem) { + cameraPX.up.set(0, 1, 0); + cameraPX.lookAt(1, 0, 0); + cameraNX.up.set(0, 1, 0); + cameraNX.lookAt(-1, 0, 0); + cameraPY.up.set(0, 0, -1); + cameraPY.lookAt(0, 1, 0); + cameraNY.up.set(0, 0, 1); + cameraNY.lookAt(0, -1, 0); + cameraPZ.up.set(0, 1, 0); + cameraPZ.lookAt(0, 0, 1); + cameraNZ.up.set(0, 1, 0); + cameraNZ.lookAt(0, 0, -1); + } else if (coordinateSystem === WebGPUCoordinateSystem) { + cameraPX.up.set(0, -1, 0); + cameraPX.lookAt(-1, 0, 0); + cameraNX.up.set(0, -1, 0); + cameraNX.lookAt(1, 0, 0); + cameraPY.up.set(0, 0, 1); + cameraPY.lookAt(0, 1, 0); + cameraNY.up.set(0, 0, -1); + cameraNY.lookAt(0, -1, 0); + cameraPZ.up.set(0, -1, 0); + cameraPZ.lookAt(0, 0, 1); + cameraNZ.up.set(0, -1, 0); + cameraNZ.lookAt(0, 0, -1); + } else { + throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: " + coordinateSystem); + } + for (const camera of cameras) { + this.add(camera); + camera.updateMatrixWorld(); + } + } + update(renderer, scene) { + if (this.parent === null) this.updateMatrixWorld(); + const { renderTarget, activeMipmapLevel } = this; + if (this.coordinateSystem !== renderer.coordinateSystem) { + this.coordinateSystem = renderer.coordinateSystem; + this.updateCoordinateSystem(); + } + const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children; + const currentRenderTarget = renderer.getRenderTarget(); + const currentActiveCubeFace = renderer.getActiveCubeFace(); + const currentActiveMipmapLevel = renderer.getActiveMipmapLevel(); + const currentXrEnabled = renderer.xr.enabled; + renderer.xr.enabled = false; + const generateMipmaps = renderTarget.texture.generateMipmaps; + renderTarget.texture.generateMipmaps = false; + renderer.setRenderTarget(renderTarget, 0, activeMipmapLevel); + renderer.render(scene, cameraPX); + renderer.setRenderTarget(renderTarget, 1, activeMipmapLevel); + renderer.render(scene, cameraNX); + renderer.setRenderTarget(renderTarget, 2, activeMipmapLevel); + renderer.render(scene, cameraPY); + renderer.setRenderTarget(renderTarget, 3, activeMipmapLevel); + renderer.render(scene, cameraNY); + renderer.setRenderTarget(renderTarget, 4, activeMipmapLevel); + renderer.render(scene, cameraPZ); + renderTarget.texture.generateMipmaps = generateMipmaps; + renderer.setRenderTarget(renderTarget, 5, activeMipmapLevel); + renderer.render(scene, cameraNZ); + renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel); + renderer.xr.enabled = currentXrEnabled; + renderTarget.texture.needsPMREMUpdate = true; + } +}; +var CubeTexture = class extends Texture { + constructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace) { + images = images !== void 0 ? images : []; + mapping = mapping !== void 0 ? mapping : CubeReflectionMapping; + super(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace); + this.isCubeTexture = true; + this.flipY = false; + } + get images() { + return this.image; + } + set images(value) { + this.image = value; + } +}; +var WebGLCubeRenderTarget = class extends WebGLRenderTarget { + constructor(size = 1, options = {}) { + super(size, size, options); + this.isWebGLCubeRenderTarget = true; + const image = { width: size, height: size, depth: 1 }; + const images = [image, image, image, image, image, image]; + this.texture = new CubeTexture(images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace); + this.texture.isRenderTargetTexture = true; + this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false; + this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter; + } + fromEquirectangularTexture(renderer, texture) { + this.texture.type = texture.type; + this.texture.colorSpace = texture.colorSpace; + this.texture.generateMipmaps = texture.generateMipmaps; + this.texture.minFilter = texture.minFilter; + this.texture.magFilter = texture.magFilter; + const shader = { + uniforms: { + tEquirect: { value: null } + }, + vertexShader: ( + /* glsl */ + ` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + ` + ), + fragmentShader: ( + /* glsl */ + ` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + ` + ) + }; + const geometry = new BoxGeometry(5, 5, 5); + const material = new ShaderMaterial({ + name: "CubemapFromEquirect", + uniforms: cloneUniforms(shader.uniforms), + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader, + side: BackSide, + blending: NoBlending + }); + material.uniforms.tEquirect.value = texture; + const mesh = new Mesh(geometry, material); + const currentMinFilter = texture.minFilter; + if (texture.minFilter === LinearMipmapLinearFilter) texture.minFilter = LinearFilter; + const camera = new CubeCamera(1, 10, this); + camera.update(renderer, mesh); + texture.minFilter = currentMinFilter; + mesh.geometry.dispose(); + mesh.material.dispose(); + return this; + } + clear(renderer, color, depth, stencil) { + const currentRenderTarget = renderer.getRenderTarget(); + for (let i = 0; i < 6; i++) { + renderer.setRenderTarget(this, i); + renderer.clear(color, depth, stencil); + } + renderer.setRenderTarget(currentRenderTarget); + } +}; +var _vector1 = /* @__PURE__ */ new Vector3(); +var _vector2 = /* @__PURE__ */ new Vector3(); +var _normalMatrix = /* @__PURE__ */ new Matrix3(); +var Plane = class { + constructor(normal = new Vector3(1, 0, 0), constant = 0) { + this.isPlane = true; + this.normal = normal; + this.constant = constant; + } + set(normal, constant) { + this.normal.copy(normal); + this.constant = constant; + return this; + } + setComponents(x, y, z, w) { + this.normal.set(x, y, z); + this.constant = w; + return this; + } + setFromNormalAndCoplanarPoint(normal, point) { + this.normal.copy(normal); + this.constant = -point.dot(this.normal); + return this; + } + setFromCoplanarPoints(a, b, c) { + const normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize(); + this.setFromNormalAndCoplanarPoint(normal, a); + return this; + } + copy(plane) { + this.normal.copy(plane.normal); + this.constant = plane.constant; + return this; + } + normalize() { + const inverseNormalLength = 1 / this.normal.length(); + this.normal.multiplyScalar(inverseNormalLength); + this.constant *= inverseNormalLength; + return this; + } + negate() { + this.constant *= -1; + this.normal.negate(); + return this; + } + distanceToPoint(point) { + return this.normal.dot(point) + this.constant; + } + distanceToSphere(sphere) { + return this.distanceToPoint(sphere.center) - sphere.radius; + } + projectPoint(point, target) { + return target.copy(point).addScaledVector(this.normal, -this.distanceToPoint(point)); + } + intersectLine(line, target) { + const direction = line.delta(_vector1); + const denominator = this.normal.dot(direction); + if (denominator === 0) { + if (this.distanceToPoint(line.start) === 0) { + return target.copy(line.start); + } + return null; + } + const t = -(line.start.dot(this.normal) + this.constant) / denominator; + if (t < 0 || t > 1) { + return null; + } + return target.copy(line.start).addScaledVector(direction, t); + } + intersectsLine(line) { + const startSign = this.distanceToPoint(line.start); + const endSign = this.distanceToPoint(line.end); + return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0; + } + intersectsBox(box) { + return box.intersectsPlane(this); + } + intersectsSphere(sphere) { + return sphere.intersectsPlane(this); + } + coplanarPoint(target) { + return target.copy(this.normal).multiplyScalar(-this.constant); + } + applyMatrix4(matrix, optionalNormalMatrix) { + const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix); + const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix); + const normal = this.normal.applyMatrix3(normalMatrix).normalize(); + this.constant = -referencePoint.dot(normal); + return this; + } + translate(offset) { + this.constant -= offset.dot(this.normal); + return this; + } + equals(plane) { + return plane.normal.equals(this.normal) && plane.constant === this.constant; + } + clone() { + return new this.constructor().copy(this); + } +}; +var _sphere$5 = /* @__PURE__ */ new Sphere(); +var _vector$7 = /* @__PURE__ */ new Vector3(); +var Frustum = class { + constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) { + this.planes = [p0, p1, p2, p3, p4, p5]; + } + set(p0, p1, p2, p3, p4, p5) { + const planes = this.planes; + planes[0].copy(p0); + planes[1].copy(p1); + planes[2].copy(p2); + planes[3].copy(p3); + planes[4].copy(p4); + planes[5].copy(p5); + return this; + } + copy(frustum) { + const planes = this.planes; + for (let i = 0; i < 6; i++) { + planes[i].copy(frustum.planes[i]); + } + return this; + } + setFromProjectionMatrix(m, coordinateSystem = WebGLCoordinateSystem) { + const planes = this.planes; + const me = m.elements; + const me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3]; + const me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7]; + const me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11]; + const me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15]; + planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize(); + planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize(); + planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize(); + planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize(); + planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize(); + if (coordinateSystem === WebGLCoordinateSystem) { + planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize(); + } else if (coordinateSystem === WebGPUCoordinateSystem) { + planes[5].setComponents(me2, me6, me10, me14).normalize(); + } else { + throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: " + coordinateSystem); + } + return this; + } + intersectsObject(object) { + if (object.boundingSphere !== void 0) { + if (object.boundingSphere === null) object.computeBoundingSphere(); + _sphere$5.copy(object.boundingSphere).applyMatrix4(object.matrixWorld); + } else { + const geometry = object.geometry; + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + _sphere$5.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld); + } + return this.intersectsSphere(_sphere$5); + } + intersectsSprite(sprite) { + _sphere$5.center.set(0, 0, 0); + _sphere$5.radius = 0.7071067811865476; + _sphere$5.applyMatrix4(sprite.matrixWorld); + return this.intersectsSphere(_sphere$5); + } + intersectsSphere(sphere) { + const planes = this.planes; + const center = sphere.center; + const negRadius = -sphere.radius; + for (let i = 0; i < 6; i++) { + const distance = planes[i].distanceToPoint(center); + if (distance < negRadius) { + return false; + } + } + return true; + } + intersectsBox(box) { + const planes = this.planes; + for (let i = 0; i < 6; i++) { + const plane = planes[i]; + _vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x; + _vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y; + _vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z; + if (plane.distanceToPoint(_vector$7) < 0) { + return false; + } + } + return true; + } + containsPoint(point) { + const planes = this.planes; + for (let i = 0; i < 6; i++) { + if (planes[i].distanceToPoint(point) < 0) { + return false; + } + } + return true; + } + clone() { + return new this.constructor().copy(this); + } +}; +function WebGLAnimation() { + let context = null; + let isAnimating = false; + let animationLoop = null; + let requestId = null; + function onAnimationFrame(time, frame) { + animationLoop(time, frame); + requestId = context.requestAnimationFrame(onAnimationFrame); + } + return { + start: function() { + if (isAnimating === true) return; + if (animationLoop === null) return; + requestId = context.requestAnimationFrame(onAnimationFrame); + isAnimating = true; + }, + stop: function() { + context.cancelAnimationFrame(requestId); + isAnimating = false; + }, + setAnimationLoop: function(callback) { + animationLoop = callback; + }, + setContext: function(value) { + context = value; + } + }; +} +function WebGLAttributes(gl) { + const buffers = /* @__PURE__ */ new WeakMap(); + function createBuffer(attribute, bufferType) { + const array = attribute.array; + const usage = attribute.usage; + const size = array.byteLength; + const buffer = gl.createBuffer(); + gl.bindBuffer(bufferType, buffer); + gl.bufferData(bufferType, array, usage); + attribute.onUploadCallback(); + let type; + if (array instanceof Float32Array) { + type = gl.FLOAT; + } else if (array instanceof Uint16Array) { + if (attribute.isFloat16BufferAttribute) { + type = gl.HALF_FLOAT; + } else { + type = gl.UNSIGNED_SHORT; + } + } else if (array instanceof Int16Array) { + type = gl.SHORT; + } else if (array instanceof Uint32Array) { + type = gl.UNSIGNED_INT; + } else if (array instanceof Int32Array) { + type = gl.INT; + } else if (array instanceof Int8Array) { + type = gl.BYTE; + } else if (array instanceof Uint8Array) { + type = gl.UNSIGNED_BYTE; + } else if (array instanceof Uint8ClampedArray) { + type = gl.UNSIGNED_BYTE; + } else { + throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: " + array); + } + return { + buffer, + type, + bytesPerElement: array.BYTES_PER_ELEMENT, + version: attribute.version, + size + }; + } + function updateBuffer(buffer, attribute, bufferType) { + const array = attribute.array; + const updateRange = attribute._updateRange; + const updateRanges = attribute.updateRanges; + gl.bindBuffer(bufferType, buffer); + if (updateRange.count === -1 && updateRanges.length === 0) { + gl.bufferSubData(bufferType, 0, array); + } + if (updateRanges.length !== 0) { + for (let i = 0, l = updateRanges.length; i < l; i++) { + const range = updateRanges[i]; + gl.bufferSubData( + bufferType, + range.start * array.BYTES_PER_ELEMENT, + array, + range.start, + range.count + ); + } + attribute.clearUpdateRanges(); + } + if (updateRange.count !== -1) { + gl.bufferSubData( + bufferType, + updateRange.offset * array.BYTES_PER_ELEMENT, + array, + updateRange.offset, + updateRange.count + ); + updateRange.count = -1; + } + attribute.onUploadCallback(); + } + function get(attribute) { + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; + return buffers.get(attribute); + } + function remove(attribute) { + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; + const data = buffers.get(attribute); + if (data) { + gl.deleteBuffer(data.buffer); + buffers.delete(attribute); + } + } + function update(attribute, bufferType) { + if (attribute.isGLBufferAttribute) { + const cached = buffers.get(attribute); + if (!cached || cached.version < attribute.version) { + buffers.set(attribute, { + buffer: attribute.buffer, + type: attribute.type, + bytesPerElement: attribute.elementSize, + version: attribute.version + }); + } + return; + } + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; + const data = buffers.get(attribute); + if (data === void 0) { + buffers.set(attribute, createBuffer(attribute, bufferType)); + } else if (data.version < attribute.version) { + if (data.size !== attribute.array.byteLength) { + throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported."); + } + updateBuffer(data.buffer, attribute, bufferType); + data.version = attribute.version; + } + } + return { + get, + remove, + update + }; +} +var PlaneGeometry = class _PlaneGeometry extends BufferGeometry { + constructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) { + super(); + this.type = "PlaneGeometry"; + this.parameters = { + width, + height, + widthSegments, + heightSegments + }; + const width_half = width / 2; + const height_half = height / 2; + const gridX = Math.floor(widthSegments); + const gridY = Math.floor(heightSegments); + const gridX1 = gridX + 1; + const gridY1 = gridY + 1; + const segment_width = width / gridX; + const segment_height = height / gridY; + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + for (let iy = 0; iy < gridY1; iy++) { + const y = iy * segment_height - height_half; + for (let ix = 0; ix < gridX1; ix++) { + const x = ix * segment_width - width_half; + vertices.push(x, -y, 0); + normals.push(0, 0, 1); + uvs.push(ix / gridX); + uvs.push(1 - iy / gridY); + } + } + for (let iy = 0; iy < gridY; iy++) { + for (let ix = 0; ix < gridX; ix++) { + const a = ix + gridX1 * iy; + const b = ix + gridX1 * (iy + 1); + const c = ix + 1 + gridX1 * (iy + 1); + const d = ix + 1 + gridX1 * iy; + indices.push(a, b, d); + indices.push(b, c, d); + } + } + this.setIndex(indices); + this.setAttribute("position", new Float32BufferAttribute(vertices, 3)); + this.setAttribute("normal", new Float32BufferAttribute(normals, 3)); + this.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); + } + copy(source) { + super.copy(source); + this.parameters = Object.assign({}, source.parameters); + return this; + } + static fromJSON(data) { + return new _PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments); + } +}; +var alphahash_fragment = "#ifdef USE_ALPHAHASH\n if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\n#endif"; +var alphahash_pars_fragment = "#ifdef USE_ALPHAHASH\n const float ALPHA_HASH_SCALE = 0.05;\n float hash2D( vec2 value ) {\n return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\n }\n float hash3D( vec3 value ) {\n return hash2D( vec2( hash2D( value.xy ), value.z ) );\n }\n float getAlphaHashThreshold( vec3 position ) {\n float maxDeriv = max(\n length( dFdx( position.xyz ) ),\n length( dFdy( position.xyz ) )\n );\n float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\n vec2 pixScales = vec2(\n exp2( floor( log2( pixScale ) ) ),\n exp2( ceil( log2( pixScale ) ) )\n );\n vec2 alpha = vec2(\n hash3D( floor( pixScales.x * position.xyz ) ),\n hash3D( floor( pixScales.y * position.xyz ) )\n );\n float lerpFactor = fract( log2( pixScale ) );\n float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\n float a = min( lerpFactor, 1.0 - lerpFactor );\n vec3 cases = vec3(\n x * x / ( 2.0 * a * ( 1.0 - a ) ),\n ( x - 0.5 * a ) / ( 1.0 - a ),\n 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\n );\n float threshold = ( x < ( 1.0 - a ) )\n ? ( ( x < a ) ? cases.x : cases.y )\n : cases.z;\n return clamp( threshold , 1.0e-6, 1.0 );\n }\n#endif"; +var alphamap_fragment = "#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\n#endif"; +var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif"; +var alphatest_fragment = "#ifdef USE_ALPHATEST\n #ifdef ALPHA_TO_COVERAGE\n diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n if ( diffuseColor.a < alphaTest ) discard;\n #endif\n#endif"; +var alphatest_pars_fragment = "#ifdef USE_ALPHATEST\n uniform float alphaTest;\n#endif"; +var aomap_fragment = "#ifdef USE_AOMAP\n float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\n reflectedLight.indirectDiffuse *= ambientOcclusion;\n #if defined( USE_CLEARCOAT ) \n clearcoatSpecularIndirect *= ambientOcclusion;\n #endif\n #if defined( USE_SHEEN ) \n sheenSpecularIndirect *= ambientOcclusion;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD )\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n #endif\n#endif"; +var aomap_pars_fragment = "#ifdef USE_AOMAP\n uniform sampler2D aoMap;\n uniform float aoMapIntensity;\n#endif"; +var batching_pars_vertex = "#ifdef USE_BATCHING\n attribute float batchId;\n uniform highp sampler2D batchingTexture;\n mat4 getBatchingMatrix( const in float i ) {\n int size = textureSize( batchingTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n#endif"; +var batching_vertex = "#ifdef USE_BATCHING\n mat4 batchingMatrix = getBatchingMatrix( batchId );\n#endif"; +var begin_vertex = "vec3 transformed = vec3( position );\n#ifdef USE_ALPHAHASH\n vPosition = vec3( position );\n#endif"; +var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n vec3 objectTangent = vec3( tangent.xyz );\n#endif"; +var bsdfs = "float G_BlinnPhong_Implicit( ) {\n return 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( specularColor, 1.0, dotVH );\n float G = G_BlinnPhong_Implicit( );\n float D = D_BlinnPhong( shininess, dotNH );\n return F * ( G * D );\n} // validated"; +var iridescence_fragment = "#ifdef USE_IRIDESCENCE\n const mat3 XYZ_TO_REC709 = mat3(\n 3.2404542, -0.9692660, 0.0556434,\n -1.5371385, 1.8760108, -0.2040259,\n -0.4985314, 0.0415560, 1.0572252\n );\n vec3 Fresnel0ToIor( vec3 fresnel0 ) {\n vec3 sqrtF0 = sqrt( fresnel0 );\n return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n }\n vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n }\n float IorToFresnel0( float transmittedIor, float incidentIor ) {\n return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n }\n vec3 evalSensitivity( float OPD, vec3 shift ) {\n float phase = 2.0 * PI * OPD * 1.0e-9;\n vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n xyz /= 1.0685e-7;\n vec3 rgb = XYZ_TO_REC709 * xyz;\n return rgb;\n }\n vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n vec3 I;\n float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n float cosTheta2Sq = 1.0 - sinTheta2Sq;\n if ( cosTheta2Sq < 0.0 ) {\n return vec3( 1.0 );\n }\n float cosTheta2 = sqrt( cosTheta2Sq );\n float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n float R12 = F_Schlick( R0, 1.0, cosTheta1 );\n float T121 = 1.0 - R12;\n float phi12 = 0.0;\n if ( iridescenceIOR < outsideIOR ) phi12 = PI;\n float phi21 = PI - phi12;\n vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n vec3 phi23 = vec3( 0.0 );\n if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n vec3 phi = vec3( phi21 ) + phi23;\n vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n vec3 r123 = sqrt( R123 );\n vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n vec3 C0 = R12 + Rs;\n I = C0;\n vec3 Cm = Rs - T121;\n for ( int m = 1; m <= 2; ++ m ) {\n Cm *= r123;\n vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n I += Cm * Sm;\n }\n return max( I, vec3( 0.0 ) );\n }\n#endif"; +var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n uniform sampler2D bumpMap;\n uniform float bumpScale;\n vec2 dHdxy_fwd() {\n vec2 dSTdx = dFdx( vBumpMapUv );\n vec2 dSTdy = dFdy( vBumpMapUv );\n float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n return vec2( dBx, dBy );\n }\n vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\n vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\n vec3 vN = surf_norm;\n vec3 R1 = cross( vSigmaY, vN );\n vec3 R2 = cross( vN, vSigmaX );\n float fDet = dot( vSigmaX, R1 ) * faceDirection;\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n return normalize( abs( fDet ) * surf_norm - vGrad );\n }\n#endif"; +var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n vec4 plane;\n #ifdef ALPHA_TO_COVERAGE\n float distanceToPlane, distanceGradient;\n float clipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n if ( clipOpacity == 0.0 ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n float unionClipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n }\n #pragma unroll_loop_end\n clipOpacity *= 1.0 - unionClipOpacity;\n #endif\n diffuseColor.a *= clipOpacity;\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n bool clipped = true;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n }\n #pragma unroll_loop_end\n if ( clipped ) discard;\n #endif\n #endif\n#endif"; +var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif"; +var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n#endif"; +var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0\n vClipPosition = - mvPosition.xyz;\n#endif"; +var color_fragment = "#if defined( USE_COLOR_ALPHA )\n diffuseColor *= vColor;\n#elif defined( USE_COLOR )\n diffuseColor.rgb *= vColor;\n#endif"; +var color_pars_fragment = "#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR )\n varying vec3 vColor;\n#endif"; +var color_pars_vertex = "#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n varying vec3 vColor;\n#endif"; +var color_vertex = "#if defined( USE_COLOR_ALPHA )\n vColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n vColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n vColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n vColor.xyz *= instanceColor.xyz;\n#endif"; +var common = "#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n return fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n float precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n float precisionSafeLength( vec3 v ) {\n float maxComponent = max3( abs( v ) );\n return length( v / maxComponent ) * maxComponent;\n }\n#endif\nstruct IncidentLight {\n vec3 color;\n vec3 direction;\n bool visible;\n};\nstruct ReflectedLight {\n vec3 directDiffuse;\n vec3 directSpecular;\n vec3 indirectDiffuse;\n vec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n varying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n mat3 tmp;\n tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n return tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n return dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n return vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n return RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated"; +var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n #define cubeUV_minMipLevel 4.0\n #define cubeUV_minTileSize 16.0\n float getFace( vec3 direction ) {\n vec3 absDirection = abs( direction );\n float face = - 1.0;\n if ( absDirection.x > absDirection.z ) {\n if ( absDirection.x > absDirection.y )\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if ( absDirection.z > absDirection.y )\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n }\n vec2 getUV( vec3 direction, float face ) {\n vec2 uv;\n if ( face == 0.0 ) {\n uv = vec2( direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 1.0 ) {\n uv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n } else if ( face == 2.0 ) {\n uv = vec2( - direction.x, direction.y ) / abs( direction.z );\n } else if ( face == 3.0 ) {\n uv = vec2( - direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 4.0 ) {\n uv = vec2( - direction.x, direction.z ) / abs( direction.y );\n } else {\n uv = vec2( direction.x, direction.y ) / abs( direction.z );\n }\n return 0.5 * ( uv + 1.0 );\n }\n vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n float face = getFace( direction );\n float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n mipInt = max( mipInt, cubeUV_minMipLevel );\n float faceSize = exp2( mipInt );\n highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n if ( face > 2.0 ) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n uv.x += filterInt * 3.0 * cubeUV_minTileSize;\n uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n uv.x *= CUBEUV_TEXEL_WIDTH;\n uv.y *= CUBEUV_TEXEL_HEIGHT;\n #ifdef texture2DGradEXT\n return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n #else\n return texture2D( envMap, uv ).rgb;\n #endif\n }\n #define cubeUV_r0 1.0\n #define cubeUV_m0 - 2.0\n #define cubeUV_r1 0.8\n #define cubeUV_m1 - 1.0\n #define cubeUV_r4 0.4\n #define cubeUV_m4 2.0\n #define cubeUV_r5 0.305\n #define cubeUV_m5 3.0\n #define cubeUV_r6 0.21\n #define cubeUV_m6 4.0\n float roughnessToMip( float roughness ) {\n float mip = 0.0;\n if ( roughness >= cubeUV_r1 ) {\n mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n } else if ( roughness >= cubeUV_r4 ) {\n mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n } else if ( roughness >= cubeUV_r5 ) {\n mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n } else if ( roughness >= cubeUV_r6 ) {\n mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n } else {\n mip = - 2.0 * log2( 1.16 * roughness ); }\n return mip;\n }\n vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n float mipF = fract( mip );\n float mipInt = floor( mip );\n vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n if ( mipF == 0.0 ) {\n return vec4( color0, 1.0 );\n } else {\n vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n return vec4( mix( color0, color1, mipF ), 1.0 );\n }\n }\n#endif"; +var defaultnormal_vertex = "vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n vec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n mat3 bm = mat3( batchingMatrix );\n transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n transformedNormal = bm * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = bm * transformedTangent;\n #endif\n#endif\n#ifdef USE_INSTANCING\n mat3 im = mat3( instanceMatrix );\n transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n transformedNormal = im * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = im * transformedTangent;\n #endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n transformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\n #ifdef FLIP_SIDED\n transformedTangent = - transformedTangent;\n #endif\n#endif"; +var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n uniform sampler2D displacementMap;\n uniform float displacementScale;\n uniform float displacementBias;\n#endif"; +var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif"; +var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n totalEmissiveRadiance *= emissiveColor.rgb;\n#endif"; +var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n uniform sampler2D emissiveMap;\n#endif"; +var colorspace_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );"; +var colorspace_pars_fragment = "\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\n vec3( 0.8224621, 0.177538, 0.0 ),\n vec3( 0.0331941, 0.9668058, 0.0 ),\n vec3( 0.0170827, 0.0723974, 0.9105199 )\n);\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\n vec3( 1.2249401, - 0.2249404, 0.0 ),\n vec3( - 0.0420569, 1.0420571, 0.0 ),\n vec3( - 0.0196376, - 0.0786361, 1.0982735 )\n);\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\n return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\n}\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\n return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\n}\nvec4 LinearTransferOETF( in vec4 value ) {\n return value;\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 LinearToLinear( in vec4 value ) {\n return value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n return sRGBTransferOETF( value );\n}"; +var envmap_fragment = "#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vec3 cameraToFrag;\n if ( isOrthographic ) {\n cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToFrag = normalize( vWorldPosition - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vec3 reflectVec = reflect( cameraToFrag, worldNormal );\n #else\n vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n #endif\n #else\n vec3 reflectVec = vReflect;\n #endif\n #ifdef ENVMAP_TYPE_CUBE\n vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n #else\n vec4 envColor = vec4( 0.0 );\n #endif\n #ifdef ENVMAP_BLENDING_MULTIPLY\n outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_MIX )\n outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_ADD )\n outgoingLight += envColor.xyz * specularStrength * reflectivity;\n #endif\n#endif"; +var envmap_common_pars_fragment = "#ifdef USE_ENVMAP\n uniform float envMapIntensity;\n uniform float flipEnvMap;\n uniform mat3 envMapRotation;\n #ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n \n#endif"; +var envmap_pars_fragment = "#ifdef USE_ENVMAP\n uniform float reflectivity;\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n varying vec3 vWorldPosition;\n uniform float refractionRatio;\n #else\n varying vec3 vReflect;\n #endif\n#endif"; +var envmap_pars_vertex = "#ifdef USE_ENVMAP\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n \n varying vec3 vWorldPosition;\n #else\n varying vec3 vReflect;\n uniform float refractionRatio;\n #endif\n#endif"; +var envmap_vertex = "#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vWorldPosition = worldPosition.xyz;\n #else\n vec3 cameraToVertex;\n if ( isOrthographic ) {\n cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vReflect = reflect( cameraToVertex, worldNormal );\n #else\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n #endif\n #endif\n#endif"; +var fog_vertex = "#ifdef USE_FOG\n vFogDepth = - mvPosition.z;\n#endif"; +var fog_pars_vertex = "#ifdef USE_FOG\n varying float vFogDepth;\n#endif"; +var fog_fragment = "#ifdef USE_FOG\n #ifdef FOG_EXP2\n float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n #else\n float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n #endif\n gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"; +var fog_pars_fragment = "#ifdef USE_FOG\n uniform vec3 fogColor;\n varying float vFogDepth;\n #ifdef FOG_EXP2\n uniform float fogDensity;\n #else\n uniform float fogNear;\n uniform float fogFar;\n #endif\n#endif"; +var gradientmap_pars_fragment = "#ifdef USE_GRADIENTMAP\n uniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n float dotNL = dot( normal, lightDirection );\n vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n #ifdef USE_GRADIENTMAP\n return vec3( texture2D( gradientMap, coord ).r );\n #else\n vec2 fw = fwidth( coord ) * 0.5;\n return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n #endif\n}"; +var lightmap_fragment = "#ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n reflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif"; +var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n uniform sampler2D lightMap;\n uniform float lightMapIntensity;\n#endif"; +var lights_lambert_fragment = "LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;"; +var lights_lambert_pars_fragment = "varying vec3 vViewPosition;\nstruct LambertMaterial {\n vec3 diffuseColor;\n float specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Lambert\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert"; +var lights_pars_begin = "uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n uniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n float x = normal.x, y = normal.y, z = normal.z;\n vec3 result = shCoefficients[ 0 ] * 0.886227;\n result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n return result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n return irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n vec3 irradiance = ambientLightColor;\n return irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n #if defined ( LEGACY_LIGHTS )\n if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n }\n return 1.0;\n #else\n float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n if ( cutoffDistance > 0.0 ) {\n distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n }\n return distanceFalloff;\n #endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n struct DirectionalLight {\n vec3 direction;\n vec3 color;\n };\n uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n light.color = directionalLight.color;\n light.direction = directionalLight.direction;\n light.visible = true;\n }\n#endif\n#if NUM_POINT_LIGHTS > 0\n struct PointLight {\n vec3 position;\n vec3 color;\n float distance;\n float decay;\n };\n uniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = pointLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float lightDistance = length( lVector );\n light.color = pointLight.color;\n light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n }\n#endif\n#if NUM_SPOT_LIGHTS > 0\n struct SpotLight {\n vec3 position;\n vec3 direction;\n vec3 color;\n float distance;\n float decay;\n float coneCos;\n float penumbraCos;\n };\n uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = spotLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float angleCos = dot( light.direction, spotLight.direction );\n float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n if ( spotAttenuation > 0.0 ) {\n float lightDistance = length( lVector );\n light.color = spotLight.color * spotAttenuation;\n light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n } else {\n light.color = vec3( 0.0 );\n light.visible = false;\n }\n }\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n struct RectAreaLight {\n vec3 color;\n vec3 position;\n vec3 halfWidth;\n vec3 halfHeight;\n };\n uniform sampler2D ltc_1; uniform sampler2D ltc_2;\n uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n struct HemisphereLight {\n vec3 direction;\n vec3 skyColor;\n vec3 groundColor;\n };\n uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n float dotNL = dot( normal, hemiLight.direction );\n float hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n return irradiance;\n }\n#endif"; +var envmap_physical_pars_fragment = "#ifdef USE_ENVMAP\n vec3 getIBLIrradiance( const in vec3 normal ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n return PI * envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 reflectVec = reflect( - viewDir, normal );\n reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n return envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n #ifdef USE_ANISOTROPY\n vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 bentNormal = cross( bitangent, viewDir );\n bentNormal = normalize( cross( bentNormal, bitangent ) );\n bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n return getIBLRadiance( viewDir, bentNormal, roughness );\n #else\n return vec3( 0.0 );\n #endif\n }\n #endif\n#endif"; +var lights_toon_fragment = "ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;"; +var lights_toon_pars_fragment = "varying vec3 vViewPosition;\nstruct ToonMaterial {\n vec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Toon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon"; +var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;"; +var lights_phong_pars_fragment = "varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n vec3 diffuseColor;\n vec3 specularColor;\n float specularShininess;\n float specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_BlinnPhong\n#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong"; +var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n material.ior = ior;\n #ifdef USE_SPECULAR\n float specularIntensityFactor = specularIntensity;\n vec3 specularColorFactor = specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n #endif\n material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n #else\n float specularIntensityFactor = 1.0;\n vec3 specularColorFactor = vec3( 1.0 );\n material.specularF90 = 1.0;\n #endif\n material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n material.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n material.clearcoat = clearcoat;\n material.clearcoatRoughness = clearcoatRoughness;\n material.clearcoatF0 = vec3( 0.04 );\n material.clearcoatF90 = 1.0;\n #ifdef USE_CLEARCOATMAP\n material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n #endif\n #ifdef USE_CLEARCOAT_ROUGHNESSMAP\n material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n #endif\n material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n material.clearcoatRoughness += geometryRoughness;\n material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n material.iridescence = iridescence;\n material.iridescenceIOR = iridescenceIOR;\n #ifdef USE_IRIDESCENCEMAP\n material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n #endif\n #ifdef USE_IRIDESCENCE_THICKNESSMAP\n material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n #else\n material.iridescenceThickness = iridescenceThicknessMaximum;\n #endif\n#endif\n#ifdef USE_SHEEN\n material.sheenColor = sheenColor;\n #ifdef USE_SHEEN_COLORMAP\n material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n #endif\n material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n #ifdef USE_SHEEN_ROUGHNESSMAP\n material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n #ifdef USE_ANISOTROPYMAP\n mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n #else\n vec2 anisotropyV = anisotropyVector;\n #endif\n material.anisotropy = length( anisotropyV );\n if( material.anisotropy == 0.0 ) {\n anisotropyV = vec2( 1.0, 0.0 );\n } else {\n anisotropyV /= material.anisotropy;\n material.anisotropy = saturate( material.anisotropy );\n }\n material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif"; +var lights_physical_pars_fragment = "struct PhysicalMaterial {\n vec3 diffuseColor;\n float roughness;\n vec3 specularColor;\n float specularF90;\n #ifdef USE_CLEARCOAT\n float clearcoat;\n float clearcoatRoughness;\n vec3 clearcoatF0;\n float clearcoatF90;\n #endif\n #ifdef USE_IRIDESCENCE\n float iridescence;\n float iridescenceIOR;\n float iridescenceThickness;\n vec3 iridescenceFresnel;\n vec3 iridescenceF0;\n #endif\n #ifdef USE_SHEEN\n vec3 sheenColor;\n float sheenRoughness;\n #endif\n #ifdef IOR\n float ior;\n #endif\n #ifdef USE_TRANSMISSION\n float transmission;\n float transmissionAlpha;\n float thickness;\n float attenuationDistance;\n vec3 attenuationColor;\n #endif\n #ifdef USE_ANISOTROPY\n float anisotropy;\n float alphaT;\n vec3 anisotropyT;\n vec3 anisotropyB;\n #endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n float a2 = pow2( alpha );\n float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n return 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n float a2 = pow2( alpha );\n float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n return RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n float v = 0.5 / ( gv + gl );\n return saturate(v);\n }\n float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n float a2 = alphaT * alphaB;\n highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n highp float v2 = dot( v, v );\n float w2 = a2 / v2;\n return RECIPROCAL_PI * a2 * pow2 ( w2 );\n }\n#endif\n#ifdef USE_CLEARCOAT\n vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n vec3 f0 = material.clearcoatF0;\n float f90 = material.clearcoatF90;\n float roughness = material.clearcoatRoughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n return F * ( V * D );\n }\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n vec3 f0 = material.specularColor;\n float f90 = material.specularF90;\n float roughness = material.roughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n #ifdef USE_IRIDESCENCE\n F = mix( F, material.iridescenceFresnel, material.iridescence );\n #endif\n #ifdef USE_ANISOTROPY\n float dotTL = dot( material.anisotropyT, lightDir );\n float dotTV = dot( material.anisotropyT, viewDir );\n float dotTH = dot( material.anisotropyT, halfDir );\n float dotBL = dot( material.anisotropyB, lightDir );\n float dotBV = dot( material.anisotropyB, viewDir );\n float dotBH = dot( material.anisotropyB, halfDir );\n float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n #else\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n #endif\n return F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n const float LUT_SIZE = 64.0;\n const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n const float LUT_BIAS = 0.5 / LUT_SIZE;\n float dotNV = saturate( dot( N, V ) );\n vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n uv = uv * LUT_SCALE + LUT_BIAS;\n return uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n float l = length( f );\n return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n float x = dot( v1, v2 );\n float y = abs( x );\n float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n float b = 3.4175940 + ( 4.1616724 + y ) * y;\n float v = a / b;\n float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n return cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n vec3 lightNormal = cross( v1, v2 );\n if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n vec3 T1, T2;\n T1 = normalize( V - N * dot( V, N ) );\n T2 = - cross( N, T1 );\n mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n vec3 coords[ 4 ];\n coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n coords[ 0 ] = normalize( coords[ 0 ] );\n coords[ 1 ] = normalize( coords[ 1 ] );\n coords[ 2 ] = normalize( coords[ 2 ] );\n coords[ 3 ] = normalize( coords[ 3 ] );\n vec3 vectorFormFactor = vec3( 0.0 );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n float result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n return vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n float alpha = pow2( roughness );\n float invAlpha = 1.0 / alpha;\n float cos2h = dotNH * dotNH;\n float sin2h = max( 1.0 - cos2h, 0.0078125 );\n return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float D = D_Charlie( sheenRoughness, dotNH );\n float V = V_Neubelt( dotNV, dotNL );\n return sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n float r2 = roughness * roughness;\n float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n return saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n vec4 r = roughness * c0 + c1;\n float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n return fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n vec2 fab = DFGApprox( normal, viewDir, roughness );\n return specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n vec2 fab = DFGApprox( normal, viewDir, roughness );\n #ifdef USE_IRIDESCENCE\n vec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n #else\n vec3 Fr = specularColor;\n #endif\n vec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n float Ess = fab.x + fab.y;\n float Ems = 1.0 - Ess;\n vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n singleScatter += FssEss;\n multiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 normal = geometryNormal;\n vec3 viewDir = geometryViewDir;\n vec3 position = geometryPosition;\n vec3 lightPos = rectAreaLight.position;\n vec3 halfWidth = rectAreaLight.halfWidth;\n vec3 halfHeight = rectAreaLight.halfHeight;\n vec3 lightColor = rectAreaLight.color;\n float roughness = material.roughness;\n vec3 rectCoords[ 4 ];\n rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n vec2 uv = LTC_Uv( normal, viewDir, roughness );\n vec4 t1 = texture2D( ltc_1, uv );\n vec4 t2 = texture2D( ltc_2, uv );\n mat3 mInv = mat3(\n vec3( t1.x, 0, t1.y ),\n vec3( 0, 1, 0 ),\n vec3( t1.z, 0, t1.w )\n );\n vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n }\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n #ifdef USE_CLEARCOAT\n float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n vec3 ccIrradiance = dotNLcc * directLight.color;\n clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n #endif\n reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n #ifdef USE_CLEARCOAT\n clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n #endif\n vec3 singleScattering = vec3( 0.0 );\n vec3 multiScattering = vec3( 0.0 );\n vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n #ifdef USE_IRIDESCENCE\n computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n #else\n computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n #endif\n vec3 totalScattering = singleScattering + multiScattering;\n vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n reflectedLight.indirectSpecular += radiance * singleScattering;\n reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct RE_Direct_Physical\n#define RE_Direct_RectArea RE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular RE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}"; +var lights_fragment_begin = "\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n geometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n float dotNVi = saturate( dot( normal, geometryViewDir ) );\n if ( material.iridescenceThickness == 0.0 ) {\n material.iridescence = 0.0;\n } else {\n material.iridescence = saturate( material.iridescence );\n }\n if ( material.iridescence > 0.0 ) {\n material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n }\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n pointLight = pointLights[ i ];\n getPointLightInfo( pointLight, geometryPosition, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n pointLightShadow = pointLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n SpotLight spotLight;\n vec4 spotColor;\n vec3 spotLightCoord;\n bool inSpotLightMap;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n spotLight = spotLights[ i ];\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n #else\n #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #endif\n #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n #endif\n #undef SPOT_LIGHT_MAP_INDEX\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n directionalLight = directionalLights[ i ];\n getDirectionalLightInfo( directionalLight, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n RectAreaLight rectAreaLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n rectAreaLight = rectAreaLights[ i ];\n RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n vec3 iblIrradiance = vec3( 0.0 );\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n #if defined( USE_LIGHT_PROBES )\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n #endif\n #if ( NUM_HEMI_LIGHTS > 0 )\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if defined( RE_IndirectSpecular )\n vec3 radiance = vec3( 0.0 );\n vec3 clearcoatRadiance = vec3( 0.0 );\n#endif"; +var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n irradiance += lightMapIrradiance;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n iblIrradiance += getIBLIrradiance( geometryNormal );\n #endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n #ifdef USE_ANISOTROPY\n radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n #else\n radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n #endif\n #ifdef USE_CLEARCOAT\n clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n #endif\n#endif"; +var lights_fragment_end = "#if defined( RE_IndirectDiffuse )\n RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif"; +var logdepthbuf_fragment = "#if defined( USE_LOGDEPTHBUF )\n gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif"; +var logdepthbuf_pars_fragment = "#if defined( USE_LOGDEPTHBUF )\n uniform float logDepthBufFC;\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif"; +var logdepthbuf_pars_vertex = "#ifdef USE_LOGDEPTHBUF\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif"; +var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n vFragDepth = 1.0 + gl_Position.w;\n vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif"; +var map_fragment = "#ifdef USE_MAP\n vec4 sampledDiffuseColor = texture2D( map, vMapUv );\n #ifdef DECODE_VIDEO_TEXTURE\n sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n \n #endif\n diffuseColor *= sampledDiffuseColor;\n#endif"; +var map_pars_fragment = "#ifdef USE_MAP\n uniform sampler2D map;\n#endif"; +var map_particle_fragment = "#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n #if defined( USE_POINTS_UV )\n vec2 uv = vUv;\n #else\n vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n #endif\n#endif\n#ifdef USE_MAP\n diffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif"; +var map_particle_pars_fragment = "#if defined( USE_POINTS_UV )\n varying vec2 vUv;\n#else\n #if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n uniform mat3 uvTransform;\n #endif\n#endif\n#ifdef USE_MAP\n uniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif"; +var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n metalnessFactor *= texelMetalness.b;\n#endif"; +var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n uniform sampler2D metalnessMap;\n#endif"; +var morphinstance_vertex = "#ifdef USE_INSTANCING_MORPH\n float morphTargetInfluences[MORPHTARGETS_COUNT];\n float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n }\n#endif"; +var morphcolor_vertex = "#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n vColor *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n #if defined( USE_COLOR_ALPHA )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n #elif defined( USE_COLOR )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n #endif\n }\n#endif"; +var morphnormal_vertex = "#ifdef USE_MORPHNORMALS\n objectNormal *= morphTargetBaseInfluence;\n #ifdef MORPHTARGETS_TEXTURE\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n }\n #else\n objectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n objectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n objectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n objectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n #endif\n#endif"; +var morphtarget_pars_vertex = "#ifdef USE_MORPHTARGETS\n #ifndef USE_INSTANCING_MORPH\n uniform float morphTargetBaseInfluence;\n #endif\n #ifdef MORPHTARGETS_TEXTURE\n #ifndef USE_INSTANCING_MORPH\n uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n #endif\n uniform sampler2DArray morphTargetsTexture;\n uniform ivec2 morphTargetsTextureSize;\n vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n int y = texelIndex / morphTargetsTextureSize.x;\n int x = texelIndex - y * morphTargetsTextureSize.x;\n ivec3 morphUV = ivec3( x, y, morphTargetIndex );\n return texelFetch( morphTargetsTexture, morphUV, 0 );\n }\n #else\n #ifndef USE_MORPHNORMALS\n uniform float morphTargetInfluences[ 8 ];\n #else\n uniform float morphTargetInfluences[ 4 ];\n #endif\n #endif\n#endif"; +var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n transformed *= morphTargetBaseInfluence;\n #ifdef MORPHTARGETS_TEXTURE\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n }\n #else\n transformed += morphTarget0 * morphTargetInfluences[ 0 ];\n transformed += morphTarget1 * morphTargetInfluences[ 1 ];\n transformed += morphTarget2 * morphTargetInfluences[ 2 ];\n transformed += morphTarget3 * morphTargetInfluences[ 3 ];\n #ifndef USE_MORPHNORMALS\n transformed += morphTarget4 * morphTargetInfluences[ 4 ];\n transformed += morphTarget5 * morphTargetInfluences[ 5 ];\n transformed += morphTarget6 * morphTargetInfluences[ 6 ];\n transformed += morphTarget7 * morphTargetInfluences[ 7 ];\n #endif\n #endif\n#endif"; +var normal_fragment_begin = "float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n#else\n vec3 normal = normalize( vNormal );\n #ifdef DOUBLE_SIDED\n normal *= faceDirection;\n #endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n #ifdef USE_TANGENT\n mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn = getTangentFrame( - vViewPosition, normal,\n #if defined( USE_NORMALMAP )\n vNormalMapUv\n #elif defined( USE_CLEARCOAT_NORMALMAP )\n vClearcoatNormalMapUv\n #else\n vUv\n #endif\n );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn[0] *= faceDirection;\n tbn[1] *= faceDirection;\n #endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n #ifdef USE_TANGENT\n mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn2[0] *= faceDirection;\n tbn2[1] *= faceDirection;\n #endif\n#endif\nvec3 nonPerturbedNormal = normal;"; +var normal_fragment_maps = "#ifdef USE_NORMALMAP_OBJECTSPACE\n normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n #ifdef FLIP_SIDED\n normal = - normal;\n #endif\n #ifdef DOUBLE_SIDED\n normal = normal * faceDirection;\n #endif\n normal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n mapN.xy *= normalScale;\n normal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif"; +var normal_pars_fragment = "#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif"; +var normal_pars_vertex = "#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif"; +var normal_vertex = "#ifndef FLAT_SHADED\n vNormal = normalize( transformedNormal );\n #ifdef USE_TANGENT\n vTangent = normalize( transformedTangent );\n vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n #endif\n#endif"; +var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n uniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n vec3 N = surf_norm;\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n return mat3( T * scale, B * scale, N );\n }\n#endif"; +var clearcoat_normal_fragment_begin = "#ifdef USE_CLEARCOAT\n vec3 clearcoatNormal = nonPerturbedNormal;\n#endif"; +var clearcoat_normal_fragment_maps = "#ifdef USE_CLEARCOAT_NORMALMAP\n vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n clearcoatMapN.xy *= clearcoatNormalScale;\n clearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif"; +var clearcoat_pars_fragment = "#ifdef USE_CLEARCOATMAP\n uniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform sampler2D clearcoatNormalMap;\n uniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform sampler2D clearcoatRoughnessMap;\n#endif"; +var iridescence_pars_fragment = "#ifdef USE_IRIDESCENCEMAP\n uniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform sampler2D iridescenceThicknessMap;\n#endif"; +var opaque_fragment = "#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );"; +var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n vec4 r = vec4( fract( v * PackFactors ), v );\n r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n return dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n return packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n return ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * depth - far );\n}"; +var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif"; +var project_vertex = "vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_BATCHING\n mvPosition = batchingMatrix * mvPosition;\n#endif\n#ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;"; +var dithering_fragment = "#ifdef DITHERING\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif"; +var dithering_pars_fragment = "#ifdef DITHERING\n vec3 dithering( vec3 color ) {\n float grid_position = rand( gl_FragCoord.xy );\n vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n return color + dither_shift_RGB;\n }\n#endif"; +var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n roughnessFactor *= texelRoughness.g;\n#endif"; +var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n uniform sampler2D roughnessMap;\n#endif"; +var shadowmap_pars_fragment = "#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n struct SpotLightShadow {\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n }\n vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n return unpackRGBATo2Half( texture2D( shadow, uv ) );\n }\n float VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n float occlusion = 1.0;\n vec2 distribution = texture2DDistribution( shadow, uv );\n float hard_shadow = step( compare , distribution.x );\n if (hard_shadow != 1.0 ) {\n float distance = compare - distribution.x ;\n float variance = max( 0.00000, distribution.y * distribution.y );\n float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n }\n return occlusion;\n }\n float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n float shadow = 1.0;\n shadowCoord.xyz /= shadowCoord.w;\n shadowCoord.z += shadowBias;\n bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n bool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n if ( frustumTest ) {\n #if defined( SHADOWMAP_TYPE_PCF )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx0 = - texelSize.x * shadowRadius;\n float dy0 = - texelSize.y * shadowRadius;\n float dx1 = + texelSize.x * shadowRadius;\n float dy1 = + texelSize.y * shadowRadius;\n float dx2 = dx0 / 2.0;\n float dy2 = dy0 / 2.0;\n float dx3 = dx1 / 2.0;\n float dy3 = dy1 / 2.0;\n shadow = (\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n ) * ( 1.0 / 17.0 );\n #elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx = texelSize.x;\n float dy = texelSize.y;\n vec2 uv = shadowCoord.xy;\n vec2 f = fract( uv * shadowMapSize + 0.5 );\n uv -= f * texelSize;\n shadow = (\n texture2DCompare( shadowMap, uv, shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n f.x ),\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n f.x ),\n f.y )\n ) * ( 1.0 / 9.0 );\n #elif defined( SHADOWMAP_TYPE_VSM )\n shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n #else\n shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n #endif\n }\n return shadow;\n }\n vec2 cubeToUV( vec3 v, float texelSizeY ) {\n vec3 absV = abs( v );\n float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n absV *= scaleToCube;\n v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n vec2 planar = v.xy;\n float almostATexel = 1.5 * texelSizeY;\n float almostOne = 1.0 - almostATexel;\n if ( absV.z >= almostOne ) {\n if ( v.z > 0.0 )\n planar.x = 4.0 - v.x;\n } else if ( absV.x >= almostOne ) {\n float signX = sign( v.x );\n planar.x = v.z * signX + 2.0 * signX;\n } else if ( absV.y >= almostOne ) {\n float signY = sign( v.y );\n planar.x = v.x + 2.0 * signY + 2.0;\n planar.y = v.z * signY - 2.0;\n }\n return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n }\n float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n float shadow = 1.0;\n vec3 lightToPosition = shadowCoord.xyz;\n \n float lightToPositionLength = length( lightToPosition );\n if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;\n vec3 bd3D = normalize( lightToPosition );\n vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n shadow = (\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n ) * ( 1.0 / 9.0 );\n #else\n shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n #endif\n }\n return shadow;\n }\n#endif"; +var shadowmap_pars_vertex = "#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n struct SpotLightShadow {\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n#endif"; +var shadowmap_vertex = "#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n vec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n #if NUM_DIR_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n shadowWorldPosition = worldPosition;\n #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n #endif\n vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n#endif"; +var shadowmask_pars_fragment = "float getShadowMask() {\n float shadow = 1.0;\n #ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n directionalLight = directionalLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n spotLight = spotLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n pointLight = pointLightShadows[ i ];\n shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #endif\n return shadow;\n}"; +var skinbase_vertex = "#ifdef USE_SKINNING\n mat4 boneMatX = getBoneMatrix( skinIndex.x );\n mat4 boneMatY = getBoneMatrix( skinIndex.y );\n mat4 boneMatZ = getBoneMatrix( skinIndex.z );\n mat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif"; +var skinning_pars_vertex = "#ifdef USE_SKINNING\n uniform mat4 bindMatrix;\n uniform mat4 bindMatrixInverse;\n uniform highp sampler2D boneTexture;\n mat4 getBoneMatrix( const in float i ) {\n int size = textureSize( boneTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n#endif"; +var skinning_vertex = "#ifdef USE_SKINNING\n vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n vec4 skinned = vec4( 0.0 );\n skinned += boneMatX * skinVertex * skinWeight.x;\n skinned += boneMatY * skinVertex * skinWeight.y;\n skinned += boneMatZ * skinVertex * skinWeight.z;\n skinned += boneMatW * skinVertex * skinWeight.w;\n transformed = ( bindMatrixInverse * skinned ).xyz;\n#endif"; +var skinnormal_vertex = "#ifdef USE_SKINNING\n mat4 skinMatrix = mat4( 0.0 );\n skinMatrix += skinWeight.x * boneMatX;\n skinMatrix += skinWeight.y * boneMatY;\n skinMatrix += skinWeight.z * boneMatZ;\n skinMatrix += skinWeight.w * boneMatW;\n skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n #ifdef USE_TANGENT\n objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n #endif\n#endif"; +var specularmap_fragment = "float specularStrength;\n#ifdef USE_SPECULARMAP\n vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n specularStrength = texelSpecular.r;\n#else\n specularStrength = 1.0;\n#endif"; +var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n uniform sampler2D specularMap;\n#endif"; +var tonemapping_fragment = "#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif"; +var tonemapping_pars_fragment = "#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n return saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n return saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n color = max( vec3( 0.0 ), color - 0.004 );\n return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n vec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n return a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n const mat3 ACESInputMat = mat3(\n vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),\n vec3( 0.04823, 0.01566, 0.83777 )\n );\n const mat3 ACESOutputMat = mat3(\n vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),\n vec3( -0.07367, -0.00605, 1.07602 )\n );\n color *= toneMappingExposure / 0.6;\n color = ACESInputMat * color;\n color = RRTAndODTFit( color );\n color = ACESOutputMat * color;\n return saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3( 1.6605, - 0.1246, - 0.0182 ),\n vec3( - 0.5876, 1.1329, - 0.1006 ),\n vec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3( 0.6274, 0.0691, 0.0164 ),\n vec3( 0.3293, 0.9195, 0.0880 ),\n vec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n vec3 x2 = x * x;\n vec3 x4 = x2 * x2;\n return + 15.5 * x4 * x2\n - 40.14 * x4 * x\n + 31.96 * x4\n - 6.868 * x2 * x\n + 0.4298 * x2\n + 0.1191 * x\n - 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n const mat3 AgXInsetMatrix = mat3(\n vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n );\n const mat3 AgXOutsetMatrix = mat3(\n vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n );\n const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;\n color *= toneMappingExposure;\n color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n color = AgXInsetMatrix * color;\n color = max( color, 1e-10 ); color = log2( color );\n color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n color = clamp( color, 0.0, 1.0 );\n color = agxDefaultContrastApprox( color );\n color = AgXOutsetMatrix * color;\n color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n color = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n color = clamp( color, 0.0, 1.0 );\n return color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n float startCompression = 0.8 - 0.04;\n float desaturation = 0.15;\n color *= toneMappingExposure;\n float x = min(color.r, min(color.g, color.b));\n float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n color -= offset;\n float peak = max(color.r, max(color.g, color.b));\n if (peak < startCompression) return color;\n float d = 1. - startCompression;\n float newPeak = 1. - d * d / (peak + d - startCompression);\n color *= newPeak / peak;\n float g = 1. - 1. / (desaturation * (peak - newPeak) + 1.);\n return mix(color, newPeak * vec3(1, 1, 1), g);\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }"; +var transmission_fragment = "#ifdef USE_TRANSMISSION\n material.transmission = transmission;\n material.transmissionAlpha = 1.0;\n material.thickness = thickness;\n material.attenuationDistance = attenuationDistance;\n material.attenuationColor = attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n #endif\n #ifdef USE_THICKNESSMAP\n material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n #endif\n vec3 pos = vWorldPosition;\n vec3 v = normalize( cameraPosition - pos );\n vec3 n = inverseTransformDirection( normal, viewMatrix );\n vec4 transmitted = getIBLVolumeRefraction(\n n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n material.attenuationColor, material.attenuationDistance );\n material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif"; +var transmission_pars_fragment = "#ifdef USE_TRANSMISSION\n uniform float transmission;\n uniform float thickness;\n uniform float attenuationDistance;\n uniform vec3 attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n uniform sampler2D transmissionMap;\n #endif\n #ifdef USE_THICKNESSMAP\n uniform sampler2D thicknessMap;\n #endif\n uniform vec2 transmissionSamplerSize;\n uniform sampler2D transmissionSamplerMap;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrix;\n varying vec3 vWorldPosition;\n float w0( float a ) {\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n }\n float w1( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n }\n float w2( float a ){\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n }\n float w3( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * a );\n }\n float g0( float a ) {\n return w0( a ) + w1( a );\n }\n float g1( float a ) {\n return w2( a ) + w3( a );\n }\n float h0( float a ) {\n return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n }\n float h1( float a ) {\n return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n }\n vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n uv = uv * texelSize.zw + 0.5;\n vec2 iuv = floor( uv );\n vec2 fuv = fract( uv );\n float g0x = g0( fuv.x );\n float g1x = g1( fuv.x );\n float h0x = h0( fuv.x );\n float h1x = h1( fuv.x );\n float h0y = h0( fuv.y );\n float h1y = h1( fuv.y );\n vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n }\n vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n vec2 fLodSizeInv = 1.0 / fLodSize;\n vec2 cLodSizeInv = 1.0 / cLodSize;\n vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n return mix( fSample, cSample, fract( lod ) );\n }\n vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n vec3 modelScale;\n modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n return normalize( refractionVector ) * thickness * modelScale;\n }\n float applyIorToRoughness( const in float roughness, const in float ior ) {\n return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n }\n vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n }\n vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n if ( isinf( attenuationDistance ) ) {\n return vec3( 1.0 );\n } else {\n vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;\n }\n }\n vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n const in vec3 attenuationColor, const in float attenuationDistance ) {\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n vec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n vec3 attenuatedColor = transmittance * transmittedLight.rgb;\n vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n }\n#endif"; +var uv_pars_fragment = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif"; +var uv_pars_vertex = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n uniform mat3 mapTransform;\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n uniform mat3 alphaMapTransform;\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n uniform mat3 lightMapTransform;\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n uniform mat3 aoMapTransform;\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n uniform mat3 bumpMapTransform;\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n uniform mat3 normalMapTransform;\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n uniform mat3 displacementMapTransform;\n varying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n uniform mat3 emissiveMapTransform;\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n uniform mat3 metalnessMapTransform;\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n uniform mat3 roughnessMapTransform;\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n uniform mat3 anisotropyMapTransform;\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n uniform mat3 clearcoatMapTransform;\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform mat3 clearcoatNormalMapTransform;\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform mat3 clearcoatRoughnessMapTransform;\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n uniform mat3 sheenColorMapTransform;\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n uniform mat3 sheenRoughnessMapTransform;\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n uniform mat3 iridescenceMapTransform;\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform mat3 iridescenceThicknessMapTransform;\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n uniform mat3 specularMapTransform;\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n uniform mat3 specularColorMapTransform;\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n uniform mat3 specularIntensityMapTransform;\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif"; +var uv_vertex = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n vUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif"; +var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n vec4 worldPosition = vec4( transformed, 1.0 );\n #ifdef USE_BATCHING\n worldPosition = batchingMatrix * worldPosition;\n #endif\n #ifdef USE_INSTANCING\n worldPosition = instanceMatrix * worldPosition;\n #endif\n worldPosition = modelMatrix * worldPosition;\n#endif"; +var vertex$h = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n gl_Position = vec4( position.xy, 1.0, 1.0 );\n}"; +var fragment$h = "uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n vec4 texColor = texture2D( t2D, vUv );\n #ifdef DECODE_VIDEO_TEXTURE\n texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}"; +var vertex$g = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}"; +var fragment$g = "#ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n uniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n #ifdef ENVMAP_TYPE_CUBE\n vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n #elif defined( ENVMAP_TYPE_CUBE_UV )\n vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n #else\n vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}"; +var vertex$f = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}"; +var fragment$f = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n gl_FragColor = texColor;\n gl_FragColor.a *= opacity;\n #include \n #include \n}"; +var vertex$e = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vHighPrecisionZW = gl_Position.zw;\n}"; +var fragment$e = "#if DEPTH_PACKING == 3200\n uniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #if DEPTH_PACKING == 3200\n diffuseColor.a = opacity;\n #endif\n #include \n #include \n #include \n #include \n #include \n float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n #if DEPTH_PACKING == 3200\n gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n #elif DEPTH_PACKING == 3201\n gl_FragColor = packDepthToRGBA( fragCoordZ );\n #endif\n}"; +var vertex$d = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vWorldPosition = worldPosition.xyz;\n}"; +var fragment$d = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #include \n #include \n #include \n #include \n float dist = length( vWorldPosition - referencePosition );\n dist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n dist = saturate( dist );\n gl_FragColor = packDepthToRGBA( dist );\n}"; +var vertex$c = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n}"; +var fragment$c = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n vec3 direction = normalize( vWorldDirection );\n vec2 sampleUV = equirectUv( direction );\n gl_FragColor = texture2D( tEquirect, sampleUV );\n #include \n #include \n}"; +var vertex$b = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vLineDistance = scale * lineDistance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var fragment$b = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n if ( mod( vLineDistance, totalSize ) > dashSize ) {\n discard;\n }\n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #include \n}"; +var vertex$a = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n #include \n #include \n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var fragment$a = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n varying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n #else\n reflectedLight.indirectDiffuse += vec3( 1.0 );\n #endif\n #include \n reflectedLight.indirectDiffuse *= diffuseColor.rgb;\n vec3 outgoingLight = reflectedLight.indirectDiffuse;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var vertex$9 = "#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #include \n}"; +var fragment$9 = "#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var vertex$8 = "#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n}"; +var fragment$8 = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 viewDir = normalize( vViewPosition );\n vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n vec3 y = cross( viewDir, x );\n vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n #ifdef USE_MATCAP\n vec4 matcapColor = texture2D( matcap, uv );\n #else\n vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n #endif\n vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var vertex$7 = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n vViewPosition = - mvPosition.xyz;\n#endif\n}"; +var fragment$7 = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n #include \n #include \n #include \n #include \n gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n #ifdef OPAQUE\n gl_FragColor.a = 1.0;\n #endif\n}"; +var vertex$6 = "#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #include \n}"; +var fragment$6 = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var vertex$5 = "#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n varying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n#ifdef USE_TRANSMISSION\n vWorldPosition = worldPosition.xyz;\n#endif\n}"; +var fragment$5 = "#define STANDARD\n#ifdef PHYSICAL\n #define IOR\n #define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n uniform float ior;\n#endif\n#ifdef USE_SPECULAR\n uniform float specularIntensity;\n uniform vec3 specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n uniform sampler2D specularColorMap;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n uniform sampler2D specularIntensityMap;\n #endif\n#endif\n#ifdef USE_CLEARCOAT\n uniform float clearcoat;\n uniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n uniform float iridescence;\n uniform float iridescenceIOR;\n uniform float iridescenceThicknessMinimum;\n uniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n uniform vec3 sheenColor;\n uniform float sheenRoughness;\n #ifdef USE_SHEEN_COLORMAP\n uniform sampler2D sheenColorMap;\n #endif\n #ifdef USE_SHEEN_ROUGHNESSMAP\n uniform sampler2D sheenRoughnessMap;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n uniform vec2 anisotropyVector;\n #ifdef USE_ANISOTROPYMAP\n uniform sampler2D anisotropyMap;\n #endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n #include \n vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n #ifdef USE_SHEEN\n float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n #endif\n #ifdef USE_CLEARCOAT\n float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var vertex$4 = "#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n}"; +var fragment$4 = "#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var vertex$3 = "uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n varying vec2 vUv;\n uniform mat3 uvTransform;\n#endif\nvoid main() {\n #ifdef USE_POINTS_UV\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n gl_PointSize = size;\n #ifdef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n #endif\n #include \n #include \n #include \n #include \n}"; +var fragment$3 = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #include \n}"; +var vertex$2 = "#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}"; +var fragment$2 = "uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n #include \n #include \n #include \n}"; +var vertex$1 = "uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n #ifndef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n #endif\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n gl_Position = projectionMatrix * mvPosition;\n #include \n #include \n #include \n}"; +var fragment$1 = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n}"; +var ShaderChunk = { + alphahash_fragment, + alphahash_pars_fragment, + alphamap_fragment, + alphamap_pars_fragment, + alphatest_fragment, + alphatest_pars_fragment, + aomap_fragment, + aomap_pars_fragment, + batching_pars_vertex, + batching_vertex, + begin_vertex, + beginnormal_vertex, + bsdfs, + iridescence_fragment, + bumpmap_pars_fragment, + clipping_planes_fragment, + clipping_planes_pars_fragment, + clipping_planes_pars_vertex, + clipping_planes_vertex, + color_fragment, + color_pars_fragment, + color_pars_vertex, + color_vertex, + common, + cube_uv_reflection_fragment, + defaultnormal_vertex, + displacementmap_pars_vertex, + displacementmap_vertex, + emissivemap_fragment, + emissivemap_pars_fragment, + colorspace_fragment, + colorspace_pars_fragment, + envmap_fragment, + envmap_common_pars_fragment, + envmap_pars_fragment, + envmap_pars_vertex, + envmap_physical_pars_fragment, + envmap_vertex, + fog_vertex, + fog_pars_vertex, + fog_fragment, + fog_pars_fragment, + gradientmap_pars_fragment, + lightmap_fragment, + lightmap_pars_fragment, + lights_lambert_fragment, + lights_lambert_pars_fragment, + lights_pars_begin, + lights_toon_fragment, + lights_toon_pars_fragment, + lights_phong_fragment, + lights_phong_pars_fragment, + lights_physical_fragment, + lights_physical_pars_fragment, + lights_fragment_begin, + lights_fragment_maps, + lights_fragment_end, + logdepthbuf_fragment, + logdepthbuf_pars_fragment, + logdepthbuf_pars_vertex, + logdepthbuf_vertex, + map_fragment, + map_pars_fragment, + map_particle_fragment, + map_particle_pars_fragment, + metalnessmap_fragment, + metalnessmap_pars_fragment, + morphinstance_vertex, + morphcolor_vertex, + morphnormal_vertex, + morphtarget_pars_vertex, + morphtarget_vertex, + normal_fragment_begin, + normal_fragment_maps, + normal_pars_fragment, + normal_pars_vertex, + normal_vertex, + normalmap_pars_fragment, + clearcoat_normal_fragment_begin, + clearcoat_normal_fragment_maps, + clearcoat_pars_fragment, + iridescence_pars_fragment, + opaque_fragment, + packing, + premultiplied_alpha_fragment, + project_vertex, + dithering_fragment, + dithering_pars_fragment, + roughnessmap_fragment, + roughnessmap_pars_fragment, + shadowmap_pars_fragment, + shadowmap_pars_vertex, + shadowmap_vertex, + shadowmask_pars_fragment, + skinbase_vertex, + skinning_pars_vertex, + skinning_vertex, + skinnormal_vertex, + specularmap_fragment, + specularmap_pars_fragment, + tonemapping_fragment, + tonemapping_pars_fragment, + transmission_fragment, + transmission_pars_fragment, + uv_pars_fragment, + uv_pars_vertex, + uv_vertex, + worldpos_vertex, + background_vert: vertex$h, + background_frag: fragment$h, + backgroundCube_vert: vertex$g, + backgroundCube_frag: fragment$g, + cube_vert: vertex$f, + cube_frag: fragment$f, + depth_vert: vertex$e, + depth_frag: fragment$e, + distanceRGBA_vert: vertex$d, + distanceRGBA_frag: fragment$d, + equirect_vert: vertex$c, + equirect_frag: fragment$c, + linedashed_vert: vertex$b, + linedashed_frag: fragment$b, + meshbasic_vert: vertex$a, + meshbasic_frag: fragment$a, + meshlambert_vert: vertex$9, + meshlambert_frag: fragment$9, + meshmatcap_vert: vertex$8, + meshmatcap_frag: fragment$8, + meshnormal_vert: vertex$7, + meshnormal_frag: fragment$7, + meshphong_vert: vertex$6, + meshphong_frag: fragment$6, + meshphysical_vert: vertex$5, + meshphysical_frag: fragment$5, + meshtoon_vert: vertex$4, + meshtoon_frag: fragment$4, + points_vert: vertex$3, + points_frag: fragment$3, + shadow_vert: vertex$2, + shadow_frag: fragment$2, + sprite_vert: vertex$1, + sprite_frag: fragment$1 +}; +var UniformsLib = { + common: { + diffuse: { value: /* @__PURE__ */ new Color(16777215) }, + opacity: { value: 1 }, + map: { value: null }, + mapTransform: { value: /* @__PURE__ */ new Matrix3() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + alphaTest: { value: 0 } + }, + specularmap: { + specularMap: { value: null }, + specularMapTransform: { value: /* @__PURE__ */ new Matrix3() } + }, + envmap: { + envMap: { value: null }, + envMapRotation: { value: /* @__PURE__ */ new Matrix3() }, + flipEnvMap: { value: -1 }, + reflectivity: { value: 1 }, + // basic, lambert, phong + ior: { value: 1.5 }, + // physical + refractionRatio: { value: 0.98 } + // basic, lambert, phong + }, + aomap: { + aoMap: { value: null }, + aoMapIntensity: { value: 1 }, + aoMapTransform: { value: /* @__PURE__ */ new Matrix3() } + }, + lightmap: { + lightMap: { value: null }, + lightMapIntensity: { value: 1 }, + lightMapTransform: { value: /* @__PURE__ */ new Matrix3() } + }, + bumpmap: { + bumpMap: { value: null }, + bumpMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + bumpScale: { value: 1 } + }, + normalmap: { + normalMap: { value: null }, + normalMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + normalScale: { value: /* @__PURE__ */ new Vector2(1, 1) } + }, + displacementmap: { + displacementMap: { value: null }, + displacementMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + }, + emissivemap: { + emissiveMap: { value: null }, + emissiveMapTransform: { value: /* @__PURE__ */ new Matrix3() } + }, + metalnessmap: { + metalnessMap: { value: null }, + metalnessMapTransform: { value: /* @__PURE__ */ new Matrix3() } + }, + roughnessmap: { + roughnessMap: { value: null }, + roughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() } + }, + gradientmap: { + gradientMap: { value: null } + }, + fog: { + fogDensity: { value: 25e-5 }, + fogNear: { value: 1 }, + fogFar: { value: 2e3 }, + fogColor: { value: /* @__PURE__ */ new Color(16777215) } + }, + lights: { + ambientLightColor: { value: [] }, + lightProbe: { value: [] }, + directionalLights: { value: [], properties: { + direction: {}, + color: {} + } }, + directionalLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {} + } }, + spotLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + spotLightMap: { value: [] }, + spotShadowMap: { value: [] }, + spotLightMatrix: { value: [] }, + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {} + } }, + pointLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } }, + ltc_1: { value: null }, + ltc_2: { value: null } + }, + points: { + diffuse: { value: /* @__PURE__ */ new Color(16777215) }, + opacity: { value: 1 }, + size: { value: 1 }, + scale: { value: 1 }, + map: { value: null }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + alphaTest: { value: 0 }, + uvTransform: { value: /* @__PURE__ */ new Matrix3() } + }, + sprite: { + diffuse: { value: /* @__PURE__ */ new Color(16777215) }, + opacity: { value: 1 }, + center: { value: /* @__PURE__ */ new Vector2(0.5, 0.5) }, + rotation: { value: 0 }, + map: { value: null }, + mapTransform: { value: /* @__PURE__ */ new Matrix3() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + alphaTest: { value: 0 } + } +}; +var ShaderLib = { + basic: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.fog + ]), + vertexShader: ShaderChunk.meshbasic_vert, + fragmentShader: ShaderChunk.meshbasic_frag + }, + lambert: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: /* @__PURE__ */ new Color(0) } + } + ]), + vertexShader: ShaderChunk.meshlambert_vert, + fragmentShader: ShaderChunk.meshlambert_frag + }, + phong: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: /* @__PURE__ */ new Color(0) }, + specular: { value: /* @__PURE__ */ new Color(1118481) }, + shininess: { value: 30 } + } + ]), + vertexShader: ShaderChunk.meshphong_vert, + fragmentShader: ShaderChunk.meshphong_frag + }, + standard: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.roughnessmap, + UniformsLib.metalnessmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: /* @__PURE__ */ new Color(0) }, + roughness: { value: 1 }, + metalness: { value: 0 }, + envMapIntensity: { value: 1 } + } + ]), + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + }, + toon: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.gradientmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: /* @__PURE__ */ new Color(0) } + } + ]), + vertexShader: ShaderChunk.meshtoon_vert, + fragmentShader: ShaderChunk.meshtoon_frag + }, + matcap: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + { + matcap: { value: null } + } + ]), + vertexShader: ShaderChunk.meshmatcap_vert, + fragmentShader: ShaderChunk.meshmatcap_frag + }, + points: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.points, + UniformsLib.fog + ]), + vertexShader: ShaderChunk.points_vert, + fragmentShader: ShaderChunk.points_frag + }, + dashed: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ]), + vertexShader: ShaderChunk.linedashed_vert, + fragmentShader: ShaderChunk.linedashed_frag + }, + depth: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.displacementmap + ]), + vertexShader: ShaderChunk.depth_vert, + fragmentShader: ShaderChunk.depth_frag + }, + normal: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + { + opacity: { value: 1 } + } + ]), + vertexShader: ShaderChunk.meshnormal_vert, + fragmentShader: ShaderChunk.meshnormal_frag + }, + sprite: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.sprite, + UniformsLib.fog + ]), + vertexShader: ShaderChunk.sprite_vert, + fragmentShader: ShaderChunk.sprite_frag + }, + background: { + uniforms: { + uvTransform: { value: /* @__PURE__ */ new Matrix3() }, + t2D: { value: null }, + backgroundIntensity: { value: 1 } + }, + vertexShader: ShaderChunk.background_vert, + fragmentShader: ShaderChunk.background_frag + }, + backgroundCube: { + uniforms: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + backgroundBlurriness: { value: 0 }, + backgroundIntensity: { value: 1 }, + backgroundRotation: { value: /* @__PURE__ */ new Matrix3() } + }, + vertexShader: ShaderChunk.backgroundCube_vert, + fragmentShader: ShaderChunk.backgroundCube_frag + }, + cube: { + uniforms: { + tCube: { value: null }, + tFlip: { value: -1 }, + opacity: { value: 1 } + }, + vertexShader: ShaderChunk.cube_vert, + fragmentShader: ShaderChunk.cube_frag + }, + equirect: { + uniforms: { + tEquirect: { value: null } + }, + vertexShader: ShaderChunk.equirect_vert, + fragmentShader: ShaderChunk.equirect_frag + }, + distanceRGBA: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.common, + UniformsLib.displacementmap, + { + referencePosition: { value: /* @__PURE__ */ new Vector3() }, + nearDistance: { value: 1 }, + farDistance: { value: 1e3 } + } + ]), + vertexShader: ShaderChunk.distanceRGBA_vert, + fragmentShader: ShaderChunk.distanceRGBA_frag + }, + shadow: { + uniforms: /* @__PURE__ */ mergeUniforms([ + UniformsLib.lights, + UniformsLib.fog, + { + color: { value: /* @__PURE__ */ new Color(0) }, + opacity: { value: 1 } + } + ]), + vertexShader: ShaderChunk.shadow_vert, + fragmentShader: ShaderChunk.shadow_frag + } +}; +ShaderLib.physical = { + uniforms: /* @__PURE__ */ mergeUniforms([ + ShaderLib.standard.uniforms, + { + clearcoat: { value: 0 }, + clearcoatMap: { value: null }, + clearcoatMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + clearcoatNormalMap: { value: null }, + clearcoatNormalMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + clearcoatNormalScale: { value: /* @__PURE__ */ new Vector2(1, 1) }, + clearcoatRoughness: { value: 0 }, + clearcoatRoughnessMap: { value: null }, + clearcoatRoughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + iridescence: { value: 0 }, + iridescenceMap: { value: null }, + iridescenceMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + iridescenceIOR: { value: 1.3 }, + iridescenceThicknessMinimum: { value: 100 }, + iridescenceThicknessMaximum: { value: 400 }, + iridescenceThicknessMap: { value: null }, + iridescenceThicknessMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + sheen: { value: 0 }, + sheenColor: { value: /* @__PURE__ */ new Color(0) }, + sheenColorMap: { value: null }, + sheenColorMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + sheenRoughness: { value: 1 }, + sheenRoughnessMap: { value: null }, + sheenRoughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + transmission: { value: 0 }, + transmissionMap: { value: null }, + transmissionMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + transmissionSamplerSize: { value: /* @__PURE__ */ new Vector2() }, + transmissionSamplerMap: { value: null }, + thickness: { value: 0 }, + thicknessMap: { value: null }, + thicknessMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + attenuationDistance: { value: 0 }, + attenuationColor: { value: /* @__PURE__ */ new Color(0) }, + specularColor: { value: /* @__PURE__ */ new Color(1, 1, 1) }, + specularColorMap: { value: null }, + specularColorMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + specularIntensity: { value: 1 }, + specularIntensityMap: { value: null }, + specularIntensityMapTransform: { value: /* @__PURE__ */ new Matrix3() }, + anisotropyVector: { value: /* @__PURE__ */ new Vector2() }, + anisotropyMap: { value: null }, + anisotropyMapTransform: { value: /* @__PURE__ */ new Matrix3() } + } + ]), + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag +}; +var _rgb = { r: 0, b: 0, g: 0 }; +var _e1$1 = /* @__PURE__ */ new Euler(); +var _m1$1 = /* @__PURE__ */ new Matrix4(); +function WebGLBackground(renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha) { + const clearColor = new Color(0); + let clearAlpha = alpha === true ? 0 : 1; + let planeMesh; + let boxMesh; + let currentBackground = null; + let currentBackgroundVersion = 0; + let currentTonemapping = null; + function render(renderList, scene) { + let forceClear = false; + let background = scene.isScene === true ? scene.background : null; + if (background && background.isTexture) { + const usePMREM = scene.backgroundBlurriness > 0; + background = (usePMREM ? cubeuvmaps : cubemaps).get(background); + } + if (background === null) { + setClear(clearColor, clearAlpha); + } else if (background && background.isColor) { + setClear(background, 1); + forceClear = true; + } + const environmentBlendMode = renderer.xr.getEnvironmentBlendMode(); + if (environmentBlendMode === "additive") { + state.buffers.color.setClear(0, 0, 0, 1, premultipliedAlpha); + } else if (environmentBlendMode === "alpha-blend") { + state.buffers.color.setClear(0, 0, 0, 0, premultipliedAlpha); + } + if (renderer.autoClear || forceClear) { + renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil); + } + if (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) { + if (boxMesh === void 0) { + boxMesh = new Mesh( + new BoxGeometry(1, 1, 1), + new ShaderMaterial({ + name: "BackgroundCubeMaterial", + uniforms: cloneUniforms(ShaderLib.backgroundCube.uniforms), + vertexShader: ShaderLib.backgroundCube.vertexShader, + fragmentShader: ShaderLib.backgroundCube.fragmentShader, + side: BackSide, + depthTest: false, + depthWrite: false, + fog: false + }) + ); + boxMesh.geometry.deleteAttribute("normal"); + boxMesh.geometry.deleteAttribute("uv"); + boxMesh.onBeforeRender = function(renderer2, scene2, camera) { + this.matrixWorld.copyPosition(camera.matrixWorld); + }; + Object.defineProperty(boxMesh.material, "envMap", { + get: function() { + return this.uniforms.envMap.value; + } + }); + objects.update(boxMesh); + } + _e1$1.copy(scene.backgroundRotation); + _e1$1.x *= -1; + _e1$1.y *= -1; + _e1$1.z *= -1; + if (background.isCubeTexture && background.isRenderTargetTexture === false) { + _e1$1.y *= -1; + _e1$1.z *= -1; + } + boxMesh.material.uniforms.envMap.value = background; + boxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1; + boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness; + boxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity; + boxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4(_m1$1.makeRotationFromEuler(_e1$1)); + boxMesh.material.toneMapped = ColorManagement.getTransfer(background.colorSpace) !== SRGBTransfer; + if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) { + boxMesh.material.needsUpdate = true; + currentBackground = background; + currentBackgroundVersion = background.version; + currentTonemapping = renderer.toneMapping; + } + boxMesh.layers.enableAll(); + renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null); + } else if (background && background.isTexture) { + if (planeMesh === void 0) { + planeMesh = new Mesh( + new PlaneGeometry(2, 2), + new ShaderMaterial({ + name: "BackgroundMaterial", + uniforms: cloneUniforms(ShaderLib.background.uniforms), + vertexShader: ShaderLib.background.vertexShader, + fragmentShader: ShaderLib.background.fragmentShader, + side: FrontSide, + depthTest: false, + depthWrite: false, + fog: false + }) + ); + planeMesh.geometry.deleteAttribute("normal"); + Object.defineProperty(planeMesh.material, "map", { + get: function() { + return this.uniforms.t2D.value; + } + }); + objects.update(planeMesh); + } + planeMesh.material.uniforms.t2D.value = background; + planeMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity; + planeMesh.material.toneMapped = ColorManagement.getTransfer(background.colorSpace) !== SRGBTransfer; + if (background.matrixAutoUpdate === true) { + background.updateMatrix(); + } + planeMesh.material.uniforms.uvTransform.value.copy(background.matrix); + if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) { + planeMesh.material.needsUpdate = true; + currentBackground = background; + currentBackgroundVersion = background.version; + currentTonemapping = renderer.toneMapping; + } + planeMesh.layers.enableAll(); + renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null); + } + } + function setClear(color, alpha2) { + color.getRGB(_rgb, getUnlitUniformColorSpace(renderer)); + state.buffers.color.setClear(_rgb.r, _rgb.g, _rgb.b, alpha2, premultipliedAlpha); + } + return { + getClearColor: function() { + return clearColor; + }, + setClearColor: function(color, alpha2 = 1) { + clearColor.set(color); + clearAlpha = alpha2; + setClear(clearColor, clearAlpha); + }, + getClearAlpha: function() { + return clearAlpha; + }, + setClearAlpha: function(alpha2) { + clearAlpha = alpha2; + setClear(clearColor, clearAlpha); + }, + render + }; +} +function WebGLBindingStates(gl, attributes) { + const maxVertexAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + const bindingStates = {}; + const defaultState = createBindingState(null); + let currentState = defaultState; + let forceUpdate = false; + function setup(object, material, program, geometry, index) { + let updateBuffers = false; + const state = getBindingState(geometry, program, material); + if (currentState !== state) { + currentState = state; + bindVertexArrayObject(currentState.object); + } + updateBuffers = needsUpdate(object, geometry, program, index); + if (updateBuffers) saveCache(object, geometry, program, index); + if (index !== null) { + attributes.update(index, gl.ELEMENT_ARRAY_BUFFER); + } + if (updateBuffers || forceUpdate) { + forceUpdate = false; + setupVertexAttributes(object, material, program, geometry); + if (index !== null) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, attributes.get(index).buffer); + } + } + } + function createVertexArrayObject() { + return gl.createVertexArray(); + } + function bindVertexArrayObject(vao) { + return gl.bindVertexArray(vao); + } + function deleteVertexArrayObject(vao) { + return gl.deleteVertexArray(vao); + } + function getBindingState(geometry, program, material) { + const wireframe = material.wireframe === true; + let programMap = bindingStates[geometry.id]; + if (programMap === void 0) { + programMap = {}; + bindingStates[geometry.id] = programMap; + } + let stateMap = programMap[program.id]; + if (stateMap === void 0) { + stateMap = {}; + programMap[program.id] = stateMap; + } + let state = stateMap[wireframe]; + if (state === void 0) { + state = createBindingState(createVertexArrayObject()); + stateMap[wireframe] = state; + } + return state; + } + function createBindingState(vao) { + const newAttributes = []; + const enabledAttributes = []; + const attributeDivisors = []; + for (let i = 0; i < maxVertexAttributes; i++) { + newAttributes[i] = 0; + enabledAttributes[i] = 0; + attributeDivisors[i] = 0; + } + return { + // for backward compatibility on non-VAO support browser + geometry: null, + program: null, + wireframe: false, + newAttributes, + enabledAttributes, + attributeDivisors, + object: vao, + attributes: {}, + index: null + }; + } + function needsUpdate(object, geometry, program, index) { + const cachedAttributes = currentState.attributes; + const geometryAttributes = geometry.attributes; + let attributesNum = 0; + const programAttributes = program.getAttributes(); + for (const name in programAttributes) { + const programAttribute = programAttributes[name]; + if (programAttribute.location >= 0) { + const cachedAttribute = cachedAttributes[name]; + let geometryAttribute = geometryAttributes[name]; + if (geometryAttribute === void 0) { + if (name === "instanceMatrix" && object.instanceMatrix) geometryAttribute = object.instanceMatrix; + if (name === "instanceColor" && object.instanceColor) geometryAttribute = object.instanceColor; + } + if (cachedAttribute === void 0) return true; + if (cachedAttribute.attribute !== geometryAttribute) return true; + if (geometryAttribute && cachedAttribute.data !== geometryAttribute.data) return true; + attributesNum++; + } + } + if (currentState.attributesNum !== attributesNum) return true; + if (currentState.index !== index) return true; + return false; + } + function saveCache(object, geometry, program, index) { + const cache = {}; + const attributes2 = geometry.attributes; + let attributesNum = 0; + const programAttributes = program.getAttributes(); + for (const name in programAttributes) { + const programAttribute = programAttributes[name]; + if (programAttribute.location >= 0) { + let attribute = attributes2[name]; + if (attribute === void 0) { + if (name === "instanceMatrix" && object.instanceMatrix) attribute = object.instanceMatrix; + if (name === "instanceColor" && object.instanceColor) attribute = object.instanceColor; + } + const data = {}; + data.attribute = attribute; + if (attribute && attribute.data) { + data.data = attribute.data; + } + cache[name] = data; + attributesNum++; + } + } + currentState.attributes = cache; + currentState.attributesNum = attributesNum; + currentState.index = index; + } + function initAttributes() { + const newAttributes = currentState.newAttributes; + for (let i = 0, il = newAttributes.length; i < il; i++) { + newAttributes[i] = 0; + } + } + function enableAttribute(attribute) { + enableAttributeAndDivisor(attribute, 0); + } + function enableAttributeAndDivisor(attribute, meshPerAttribute) { + const newAttributes = currentState.newAttributes; + const enabledAttributes = currentState.enabledAttributes; + const attributeDivisors = currentState.attributeDivisors; + newAttributes[attribute] = 1; + if (enabledAttributes[attribute] === 0) { + gl.enableVertexAttribArray(attribute); + enabledAttributes[attribute] = 1; + } + if (attributeDivisors[attribute] !== meshPerAttribute) { + gl.vertexAttribDivisor(attribute, meshPerAttribute); + attributeDivisors[attribute] = meshPerAttribute; + } + } + function disableUnusedAttributes() { + const newAttributes = currentState.newAttributes; + const enabledAttributes = currentState.enabledAttributes; + for (let i = 0, il = enabledAttributes.length; i < il; i++) { + if (enabledAttributes[i] !== newAttributes[i]) { + gl.disableVertexAttribArray(i); + enabledAttributes[i] = 0; + } + } + } + function vertexAttribPointer(index, size, type, normalized, stride, offset, integer) { + if (integer === true) { + gl.vertexAttribIPointer(index, size, type, stride, offset); + } else { + gl.vertexAttribPointer(index, size, type, normalized, stride, offset); + } + } + function setupVertexAttributes(object, material, program, geometry) { + initAttributes(); + const geometryAttributes = geometry.attributes; + const programAttributes = program.getAttributes(); + const materialDefaultAttributeValues = material.defaultAttributeValues; + for (const name in programAttributes) { + const programAttribute = programAttributes[name]; + if (programAttribute.location >= 0) { + let geometryAttribute = geometryAttributes[name]; + if (geometryAttribute === void 0) { + if (name === "instanceMatrix" && object.instanceMatrix) geometryAttribute = object.instanceMatrix; + if (name === "instanceColor" && object.instanceColor) geometryAttribute = object.instanceColor; + } + if (geometryAttribute !== void 0) { + const normalized = geometryAttribute.normalized; + const size = geometryAttribute.itemSize; + const attribute = attributes.get(geometryAttribute); + if (attribute === void 0) continue; + const buffer = attribute.buffer; + const type = attribute.type; + const bytesPerElement = attribute.bytesPerElement; + const integer = type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType; + if (geometryAttribute.isInterleavedBufferAttribute) { + const data = geometryAttribute.data; + const stride = data.stride; + const offset = geometryAttribute.offset; + if (data.isInstancedInterleavedBuffer) { + for (let i = 0; i < programAttribute.locationSize; i++) { + enableAttributeAndDivisor(programAttribute.location + i, data.meshPerAttribute); + } + if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) { + geometry._maxInstanceCount = data.meshPerAttribute * data.count; + } + } else { + for (let i = 0; i < programAttribute.locationSize; i++) { + enableAttribute(programAttribute.location + i); + } + } + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + for (let i = 0; i < programAttribute.locationSize; i++) { + vertexAttribPointer( + programAttribute.location + i, + size / programAttribute.locationSize, + type, + normalized, + stride * bytesPerElement, + (offset + size / programAttribute.locationSize * i) * bytesPerElement, + integer + ); + } + } else { + if (geometryAttribute.isInstancedBufferAttribute) { + for (let i = 0; i < programAttribute.locationSize; i++) { + enableAttributeAndDivisor(programAttribute.location + i, geometryAttribute.meshPerAttribute); + } + if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) { + geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; + } + } else { + for (let i = 0; i < programAttribute.locationSize; i++) { + enableAttribute(programAttribute.location + i); + } + } + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + for (let i = 0; i < programAttribute.locationSize; i++) { + vertexAttribPointer( + programAttribute.location + i, + size / programAttribute.locationSize, + type, + normalized, + size * bytesPerElement, + size / programAttribute.locationSize * i * bytesPerElement, + integer + ); + } + } + } else if (materialDefaultAttributeValues !== void 0) { + const value = materialDefaultAttributeValues[name]; + if (value !== void 0) { + switch (value.length) { + case 2: + gl.vertexAttrib2fv(programAttribute.location, value); + break; + case 3: + gl.vertexAttrib3fv(programAttribute.location, value); + break; + case 4: + gl.vertexAttrib4fv(programAttribute.location, value); + break; + default: + gl.vertexAttrib1fv(programAttribute.location, value); + } + } + } + } + } + disableUnusedAttributes(); + } + function dispose() { + reset(); + for (const geometryId in bindingStates) { + const programMap = bindingStates[geometryId]; + for (const programId in programMap) { + const stateMap = programMap[programId]; + for (const wireframe in stateMap) { + deleteVertexArrayObject(stateMap[wireframe].object); + delete stateMap[wireframe]; + } + delete programMap[programId]; + } + delete bindingStates[geometryId]; + } + } + function releaseStatesOfGeometry(geometry) { + if (bindingStates[geometry.id] === void 0) return; + const programMap = bindingStates[geometry.id]; + for (const programId in programMap) { + const stateMap = programMap[programId]; + for (const wireframe in stateMap) { + deleteVertexArrayObject(stateMap[wireframe].object); + delete stateMap[wireframe]; + } + delete programMap[programId]; + } + delete bindingStates[geometry.id]; + } + function releaseStatesOfProgram(program) { + for (const geometryId in bindingStates) { + const programMap = bindingStates[geometryId]; + if (programMap[program.id] === void 0) continue; + const stateMap = programMap[program.id]; + for (const wireframe in stateMap) { + deleteVertexArrayObject(stateMap[wireframe].object); + delete stateMap[wireframe]; + } + delete programMap[program.id]; + } + } + function reset() { + resetDefaultState(); + forceUpdate = true; + if (currentState === defaultState) return; + currentState = defaultState; + bindVertexArrayObject(currentState.object); + } + function resetDefaultState() { + defaultState.geometry = null; + defaultState.program = null; + defaultState.wireframe = false; + } + return { + setup, + reset, + resetDefaultState, + dispose, + releaseStatesOfGeometry, + releaseStatesOfProgram, + initAttributes, + enableAttribute, + disableUnusedAttributes + }; +} +function WebGLBufferRenderer(gl, extensions, info) { + let mode; + function setMode(value) { + mode = value; + } + function render(start, count) { + gl.drawArrays(mode, start, count); + info.update(count, mode, 1); + } + function renderInstances(start, count, primcount) { + if (primcount === 0) return; + gl.drawArraysInstanced(mode, start, count, primcount); + info.update(count, mode, primcount); + } + function renderMultiDraw(starts, counts, drawCount) { + if (drawCount === 0) return; + const extension = extensions.get("WEBGL_multi_draw"); + if (extension === null) { + for (let i = 0; i < drawCount; i++) { + this.render(starts[i], counts[i]); + } + } else { + extension.multiDrawArraysWEBGL(mode, starts, 0, counts, 0, drawCount); + let elementCount = 0; + for (let i = 0; i < drawCount; i++) { + elementCount += counts[i]; + } + info.update(elementCount, mode, 1); + } + } + this.setMode = setMode; + this.render = render; + this.renderInstances = renderInstances; + this.renderMultiDraw = renderMultiDraw; +} +function WebGLCapabilities(gl, extensions, parameters) { + let maxAnisotropy; + function getMaxAnisotropy() { + if (maxAnisotropy !== void 0) return maxAnisotropy; + if (extensions.has("EXT_texture_filter_anisotropic") === true) { + const extension = extensions.get("EXT_texture_filter_anisotropic"); + maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT); + } else { + maxAnisotropy = 0; + } + return maxAnisotropy; + } + function getMaxPrecision(precision2) { + if (precision2 === "highp") { + if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision > 0) { + return "highp"; + } + precision2 = "mediump"; + } + if (precision2 === "mediump") { + if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision > 0) { + return "mediump"; + } + } + return "lowp"; + } + let precision = parameters.precision !== void 0 ? parameters.precision : "highp"; + const maxPrecision = getMaxPrecision(precision); + if (maxPrecision !== precision) { + console.warn("THREE.WebGLRenderer:", precision, "not supported, using", maxPrecision, "instead."); + precision = maxPrecision; + } + const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; + const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + const maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS); + const maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + const maxCubemapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE); + const maxAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + const maxVertexUniforms = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS); + const maxVaryings = gl.getParameter(gl.MAX_VARYING_VECTORS); + const maxFragmentUniforms = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS); + const vertexTextures = maxVertexTextures > 0; + const maxSamples = gl.getParameter(gl.MAX_SAMPLES); + return { + isWebGL2: true, + // keeping this for backwards compatibility + getMaxAnisotropy, + getMaxPrecision, + precision, + logarithmicDepthBuffer, + maxTextures, + maxVertexTextures, + maxTextureSize, + maxCubemapSize, + maxAttributes, + maxVertexUniforms, + maxVaryings, + maxFragmentUniforms, + vertexTextures, + maxSamples + }; +} +function WebGLClipping(properties) { + const scope = this; + let globalState = null, numGlobalPlanes = 0, localClippingEnabled = false, renderingShadows = false; + const plane = new Plane(), viewNormalMatrix = new Matrix3(), uniform = { value: null, needsUpdate: false }; + this.uniform = uniform; + this.numPlanes = 0; + this.numIntersection = 0; + this.init = function(planes, enableLocalClipping) { + const enabled = planes.length !== 0 || enableLocalClipping || // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + numGlobalPlanes !== 0 || localClippingEnabled; + localClippingEnabled = enableLocalClipping; + numGlobalPlanes = planes.length; + return enabled; + }; + this.beginShadows = function() { + renderingShadows = true; + projectPlanes(null); + }; + this.endShadows = function() { + renderingShadows = false; + }; + this.setGlobalState = function(planes, camera) { + globalState = projectPlanes(planes, camera, 0); + }; + this.setState = function(material, camera, useCache) { + const planes = material.clippingPlanes, clipIntersection = material.clipIntersection, clipShadows = material.clipShadows; + const materialProperties = properties.get(material); + if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) { + if (renderingShadows) { + projectPlanes(null); + } else { + resetGlobalState(); + } + } else { + const nGlobal = renderingShadows ? 0 : numGlobalPlanes, lGlobal = nGlobal * 4; + let dstArray = materialProperties.clippingState || null; + uniform.value = dstArray; + dstArray = projectPlanes(planes, camera, lGlobal, useCache); + for (let i = 0; i !== lGlobal; ++i) { + dstArray[i] = globalState[i]; + } + materialProperties.clippingState = dstArray; + this.numIntersection = clipIntersection ? this.numPlanes : 0; + this.numPlanes += nGlobal; + } + }; + function resetGlobalState() { + if (uniform.value !== globalState) { + uniform.value = globalState; + uniform.needsUpdate = numGlobalPlanes > 0; + } + scope.numPlanes = numGlobalPlanes; + scope.numIntersection = 0; + } + function projectPlanes(planes, camera, dstOffset, skipTransform) { + const nPlanes = planes !== null ? planes.length : 0; + let dstArray = null; + if (nPlanes !== 0) { + dstArray = uniform.value; + if (skipTransform !== true || dstArray === null) { + const flatSize = dstOffset + nPlanes * 4, viewMatrix = camera.matrixWorldInverse; + viewNormalMatrix.getNormalMatrix(viewMatrix); + if (dstArray === null || dstArray.length < flatSize) { + dstArray = new Float32Array(flatSize); + } + for (let i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) { + plane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix); + plane.normal.toArray(dstArray, i4); + dstArray[i4 + 3] = plane.constant; + } + } + uniform.value = dstArray; + uniform.needsUpdate = true; + } + scope.numPlanes = nPlanes; + scope.numIntersection = 0; + return dstArray; + } +} +function WebGLCubeMaps(renderer) { + let cubemaps = /* @__PURE__ */ new WeakMap(); + function mapTextureMapping(texture, mapping) { + if (mapping === EquirectangularReflectionMapping) { + texture.mapping = CubeReflectionMapping; + } else if (mapping === EquirectangularRefractionMapping) { + texture.mapping = CubeRefractionMapping; + } + return texture; + } + function get(texture) { + if (texture && texture.isTexture) { + const mapping = texture.mapping; + if (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) { + if (cubemaps.has(texture)) { + const cubemap = cubemaps.get(texture).texture; + return mapTextureMapping(cubemap, texture.mapping); + } else { + const image = texture.image; + if (image && image.height > 0) { + const renderTarget = new WebGLCubeRenderTarget(image.height); + renderTarget.fromEquirectangularTexture(renderer, texture); + cubemaps.set(texture, renderTarget); + texture.addEventListener("dispose", onTextureDispose); + return mapTextureMapping(renderTarget.texture, texture.mapping); + } else { + return null; + } + } + } + } + return texture; + } + function onTextureDispose(event) { + const texture = event.target; + texture.removeEventListener("dispose", onTextureDispose); + const cubemap = cubemaps.get(texture); + if (cubemap !== void 0) { + cubemaps.delete(texture); + cubemap.dispose(); + } + } + function dispose() { + cubemaps = /* @__PURE__ */ new WeakMap(); + } + return { + get, + dispose + }; +} +var OrthographicCamera = class extends Camera { + constructor(left = -1, right2 = 1, top = 1, bottom = -1, near = 0.1, far = 2e3) { + super(); + this.isOrthographicCamera = true; + this.type = "OrthographicCamera"; + this.zoom = 1; + this.view = null; + this.left = left; + this.right = right2; + this.top = top; + this.bottom = bottom; + this.near = near; + this.far = far; + this.updateProjectionMatrix(); + } + copy(source, recursive) { + super.copy(source, recursive); + this.left = source.left; + this.right = source.right; + this.top = source.top; + this.bottom = source.bottom; + this.near = source.near; + this.far = source.far; + this.zoom = source.zoom; + this.view = source.view === null ? null : Object.assign({}, source.view); + return this; + } + setViewOffset(fullWidth, fullHeight, x, y, width, height) { + if (this.view === null) { + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + } + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + this.updateProjectionMatrix(); + } + clearViewOffset() { + if (this.view !== null) { + this.view.enabled = false; + } + this.updateProjectionMatrix(); + } + updateProjectionMatrix() { + const dx = (this.right - this.left) / (2 * this.zoom); + const dy = (this.top - this.bottom) / (2 * this.zoom); + const cx = (this.right + this.left) / 2; + const cy = (this.top + this.bottom) / 2; + let left = cx - dx; + let right2 = cx + dx; + let top = cy + dy; + let bottom = cy - dy; + if (this.view !== null && this.view.enabled) { + const scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom; + const scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom; + left += scaleW * this.view.offsetX; + right2 = left + scaleW * this.view.width; + top -= scaleH * this.view.offsetY; + bottom = top - scaleH * this.view.height; + } + this.projectionMatrix.makeOrthographic(left, right2, top, bottom, this.near, this.far, this.coordinateSystem); + this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + toJSON(meta) { + const data = super.toJSON(meta); + data.object.zoom = this.zoom; + data.object.left = this.left; + data.object.right = this.right; + data.object.top = this.top; + data.object.bottom = this.bottom; + data.object.near = this.near; + data.object.far = this.far; + if (this.view !== null) data.object.view = Object.assign({}, this.view); + return data; + } +}; +var LOD_MIN = 4; +var EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582]; +var MAX_SAMPLES = 20; +var _flatCamera = /* @__PURE__ */ new OrthographicCamera(); +var _clearColor = /* @__PURE__ */ new Color(); +var _oldTarget = null; +var _oldActiveCubeFace = 0; +var _oldActiveMipmapLevel = 0; +var _oldXrEnabled = false; +var PHI = (1 + Math.sqrt(5)) / 2; +var INV_PHI = 1 / PHI; +var _axisDirections = [ + /* @__PURE__ */ new Vector3(1, 1, 1), + /* @__PURE__ */ new Vector3(-1, 1, 1), + /* @__PURE__ */ new Vector3(1, 1, -1), + /* @__PURE__ */ new Vector3(-1, 1, -1), + /* @__PURE__ */ new Vector3(0, PHI, INV_PHI), + /* @__PURE__ */ new Vector3(0, PHI, -INV_PHI), + /* @__PURE__ */ new Vector3(INV_PHI, 0, PHI), + /* @__PURE__ */ new Vector3(-INV_PHI, 0, PHI), + /* @__PURE__ */ new Vector3(PHI, INV_PHI, 0), + /* @__PURE__ */ new Vector3(-PHI, INV_PHI, 0) +]; +var PMREMGenerator = class { + constructor(renderer) { + this._renderer = renderer; + this._pingPongRenderTarget = null; + this._lodMax = 0; + this._cubeSize = 0; + this._lodPlanes = []; + this._sizeLods = []; + this._sigmas = []; + this._blurMaterial = null; + this._cubemapMaterial = null; + this._equirectMaterial = null; + this._compileMaterial(this._blurMaterial); + } + /** + * Generates a PMREM from a supplied Scene, which can be faster than using an + * image if networking bandwidth is low. Optional sigma specifies a blur radius + * in radians to be applied to the scene before PMREM generation. Optional near + * and far planes ensure the scene is rendered in its entirety (the cubeCamera + * is placed at the origin). + */ + fromScene(scene, sigma = 0, near = 0.1, far = 100) { + _oldTarget = this._renderer.getRenderTarget(); + _oldActiveCubeFace = this._renderer.getActiveCubeFace(); + _oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel(); + _oldXrEnabled = this._renderer.xr.enabled; + this._renderer.xr.enabled = false; + this._setSize(256); + const cubeUVRenderTarget = this._allocateTargets(); + cubeUVRenderTarget.depthBuffer = true; + this._sceneToCubeUV(scene, near, far, cubeUVRenderTarget); + if (sigma > 0) { + this._blur(cubeUVRenderTarget, 0, 0, sigma); + } + this._applyPMREM(cubeUVRenderTarget); + this._cleanup(cubeUVRenderTarget); + return cubeUVRenderTarget; + } + /** + * Generates a PMREM from an equirectangular texture, which can be either LDR + * or HDR. The ideal input image size is 1k (1024 x 512), + * as this matches best with the 256 x 256 cubemap output. + * The smallest supported equirectangular image size is 64 x 32. + */ + fromEquirectangular(equirectangular, renderTarget = null) { + return this._fromTexture(equirectangular, renderTarget); + } + /** + * Generates a PMREM from an cubemap texture, which can be either LDR + * or HDR. The ideal input cube size is 256 x 256, + * as this matches best with the 256 x 256 cubemap output. + * The smallest supported cube size is 16 x 16. + */ + fromCubemap(cubemap, renderTarget = null) { + return this._fromTexture(cubemap, renderTarget); + } + /** + * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileCubemapShader() { + if (this._cubemapMaterial === null) { + this._cubemapMaterial = _getCubemapMaterial(); + this._compileMaterial(this._cubemapMaterial); + } + } + /** + * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileEquirectangularShader() { + if (this._equirectMaterial === null) { + this._equirectMaterial = _getEquirectMaterial(); + this._compileMaterial(this._equirectMaterial); + } + } + /** + * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class, + * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on + * one of them will cause any others to also become unusable. + */ + dispose() { + this._dispose(); + if (this._cubemapMaterial !== null) this._cubemapMaterial.dispose(); + if (this._equirectMaterial !== null) this._equirectMaterial.dispose(); + } + // private interface + _setSize(cubeSize) { + this._lodMax = Math.floor(Math.log2(cubeSize)); + this._cubeSize = Math.pow(2, this._lodMax); + } + _dispose() { + if (this._blurMaterial !== null) this._blurMaterial.dispose(); + if (this._pingPongRenderTarget !== null) this._pingPongRenderTarget.dispose(); + for (let i = 0; i < this._lodPlanes.length; i++) { + this._lodPlanes[i].dispose(); + } + } + _cleanup(outputTarget) { + this._renderer.setRenderTarget(_oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel); + this._renderer.xr.enabled = _oldXrEnabled; + outputTarget.scissorTest = false; + _setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height); + } + _fromTexture(texture, renderTarget) { + if (texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping) { + this._setSize(texture.image.length === 0 ? 16 : texture.image[0].width || texture.image[0].image.width); + } else { + this._setSize(texture.image.width / 4); + } + _oldTarget = this._renderer.getRenderTarget(); + _oldActiveCubeFace = this._renderer.getActiveCubeFace(); + _oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel(); + _oldXrEnabled = this._renderer.xr.enabled; + this._renderer.xr.enabled = false; + const cubeUVRenderTarget = renderTarget || this._allocateTargets(); + this._textureToCubeUV(texture, cubeUVRenderTarget); + this._applyPMREM(cubeUVRenderTarget); + this._cleanup(cubeUVRenderTarget); + return cubeUVRenderTarget; + } + _allocateTargets() { + const width = 3 * Math.max(this._cubeSize, 16 * 7); + const height = 4 * this._cubeSize; + const params = { + magFilter: LinearFilter, + minFilter: LinearFilter, + generateMipmaps: false, + type: HalfFloatType, + format: RGBAFormat, + colorSpace: LinearSRGBColorSpace, + depthBuffer: false + }; + const cubeUVRenderTarget = _createRenderTarget(width, height, params); + if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height) { + if (this._pingPongRenderTarget !== null) { + this._dispose(); + } + this._pingPongRenderTarget = _createRenderTarget(width, height, params); + const { _lodMax } = this; + ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes(_lodMax)); + this._blurMaterial = _getBlurShader(_lodMax, width, height); + } + return cubeUVRenderTarget; + } + _compileMaterial(material) { + const tmpMesh = new Mesh(this._lodPlanes[0], material); + this._renderer.compile(tmpMesh, _flatCamera); + } + _sceneToCubeUV(scene, near, far, cubeUVRenderTarget) { + const fov2 = 90; + const aspect2 = 1; + const cubeCamera = new PerspectiveCamera(fov2, aspect2, near, far); + const upSign = [1, -1, 1, 1, 1, 1]; + const forwardSign = [1, 1, 1, -1, -1, -1]; + const renderer = this._renderer; + const originalAutoClear = renderer.autoClear; + const toneMapping = renderer.toneMapping; + renderer.getClearColor(_clearColor); + renderer.toneMapping = NoToneMapping; + renderer.autoClear = false; + const backgroundMaterial = new MeshBasicMaterial({ + name: "PMREM.Background", + side: BackSide, + depthWrite: false, + depthTest: false + }); + const backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial); + let useSolidColor = false; + const background = scene.background; + if (background) { + if (background.isColor) { + backgroundMaterial.color.copy(background); + scene.background = null; + useSolidColor = true; + } + } else { + backgroundMaterial.color.copy(_clearColor); + useSolidColor = true; + } + for (let i = 0; i < 6; i++) { + const col = i % 3; + if (col === 0) { + cubeCamera.up.set(0, upSign[i], 0); + cubeCamera.lookAt(forwardSign[i], 0, 0); + } else if (col === 1) { + cubeCamera.up.set(0, 0, upSign[i]); + cubeCamera.lookAt(0, forwardSign[i], 0); + } else { + cubeCamera.up.set(0, upSign[i], 0); + cubeCamera.lookAt(0, 0, forwardSign[i]); + } + const size = this._cubeSize; + _setViewport(cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size); + renderer.setRenderTarget(cubeUVRenderTarget); + if (useSolidColor) { + renderer.render(backgroundBox, cubeCamera); + } + renderer.render(scene, cubeCamera); + } + backgroundBox.geometry.dispose(); + backgroundBox.material.dispose(); + renderer.toneMapping = toneMapping; + renderer.autoClear = originalAutoClear; + scene.background = background; + } + _textureToCubeUV(texture, cubeUVRenderTarget) { + const renderer = this._renderer; + const isCubeTexture = texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping; + if (isCubeTexture) { + if (this._cubemapMaterial === null) { + this._cubemapMaterial = _getCubemapMaterial(); + } + this._cubemapMaterial.uniforms.flipEnvMap.value = texture.isRenderTargetTexture === false ? -1 : 1; + } else { + if (this._equirectMaterial === null) { + this._equirectMaterial = _getEquirectMaterial(); + } + } + const material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial; + const mesh = new Mesh(this._lodPlanes[0], material); + const uniforms = material.uniforms; + uniforms["envMap"].value = texture; + const size = this._cubeSize; + _setViewport(cubeUVRenderTarget, 0, 0, 3 * size, 2 * size); + renderer.setRenderTarget(cubeUVRenderTarget); + renderer.render(mesh, _flatCamera); + } + _applyPMREM(cubeUVRenderTarget) { + const renderer = this._renderer; + const autoClear = renderer.autoClear; + renderer.autoClear = false; + for (let i = 1; i < this._lodPlanes.length; i++) { + const sigma = Math.sqrt(this._sigmas[i] * this._sigmas[i] - this._sigmas[i - 1] * this._sigmas[i - 1]); + const poleAxis = _axisDirections[(i - 1) % _axisDirections.length]; + this._blur(cubeUVRenderTarget, i - 1, i, sigma, poleAxis); + } + renderer.autoClear = autoClear; + } + /** + * This is a two-pass Gaussian blur for a cubemap. Normally this is done + * vertically and horizontally, but this breaks down on a cube. Here we apply + * the blur latitudinally (around the poles), and then longitudinally (towards + * the poles) to approximate the orthogonally-separable blur. It is least + * accurate at the poles, but still does a decent job. + */ + _blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) { + const pingPongRenderTarget = this._pingPongRenderTarget; + this._halfBlur( + cubeUVRenderTarget, + pingPongRenderTarget, + lodIn, + lodOut, + sigma, + "latitudinal", + poleAxis + ); + this._halfBlur( + pingPongRenderTarget, + cubeUVRenderTarget, + lodOut, + lodOut, + sigma, + "longitudinal", + poleAxis + ); + } + _halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) { + const renderer = this._renderer; + const blurMaterial = this._blurMaterial; + if (direction !== "latitudinal" && direction !== "longitudinal") { + console.error( + "blur direction must be either latitudinal or longitudinal!" + ); + } + const STANDARD_DEVIATIONS = 3; + const blurMesh = new Mesh(this._lodPlanes[lodOut], blurMaterial); + const blurUniforms = blurMaterial.uniforms; + const pixels = this._sizeLods[lodIn] - 1; + const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1); + const sigmaPixels = sigmaRadians / radiansPerPixel; + const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES; + if (samples > MAX_SAMPLES) { + console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`); + } + const weights = []; + let sum = 0; + for (let i = 0; i < MAX_SAMPLES; ++i) { + const x2 = i / sigmaPixels; + const weight = Math.exp(-x2 * x2 / 2); + weights.push(weight); + if (i === 0) { + sum += weight; + } else if (i < samples) { + sum += 2 * weight; + } + } + for (let i = 0; i < weights.length; i++) { + weights[i] = weights[i] / sum; + } + blurUniforms["envMap"].value = targetIn.texture; + blurUniforms["samples"].value = samples; + blurUniforms["weights"].value = weights; + blurUniforms["latitudinal"].value = direction === "latitudinal"; + if (poleAxis) { + blurUniforms["poleAxis"].value = poleAxis; + } + const { _lodMax } = this; + blurUniforms["dTheta"].value = radiansPerPixel; + blurUniforms["mipInt"].value = _lodMax - lodIn; + const outputSize = this._sizeLods[lodOut]; + const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0); + const y = 4 * (this._cubeSize - outputSize); + _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize); + renderer.setRenderTarget(targetOut); + renderer.render(blurMesh, _flatCamera); + } +}; +function _createPlanes(lodMax) { + const lodPlanes = []; + const sizeLods = []; + const sigmas = []; + let lod = lodMax; + const totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length; + for (let i = 0; i < totalLods; i++) { + const sizeLod = Math.pow(2, lod); + sizeLods.push(sizeLod); + let sigma = 1 / sizeLod; + if (i > lodMax - LOD_MIN) { + sigma = EXTRA_LOD_SIGMA[i - lodMax + LOD_MIN - 1]; + } else if (i === 0) { + sigma = 0; + } + sigmas.push(sigma); + const texelSize = 1 / (sizeLod - 2); + const min = -texelSize; + const max2 = 1 + texelSize; + const uv1 = [min, min, max2, min, max2, max2, min, min, max2, max2, min, max2]; + const cubeFaces = 6; + const vertices = 6; + const positionSize = 3; + const uvSize = 2; + const faceIndexSize = 1; + const position = new Float32Array(positionSize * vertices * cubeFaces); + const uv = new Float32Array(uvSize * vertices * cubeFaces); + const faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces); + for (let face = 0; face < cubeFaces; face++) { + const x = face % 3 * 2 / 3 - 1; + const y = face > 2 ? 0 : -1; + const coordinates = [ + x, + y, + 0, + x + 2 / 3, + y, + 0, + x + 2 / 3, + y + 1, + 0, + x, + y, + 0, + x + 2 / 3, + y + 1, + 0, + x, + y + 1, + 0 + ]; + position.set(coordinates, positionSize * vertices * face); + uv.set(uv1, uvSize * vertices * face); + const fill = [face, face, face, face, face, face]; + faceIndex.set(fill, faceIndexSize * vertices * face); + } + const planes = new BufferGeometry(); + planes.setAttribute("position", new BufferAttribute(position, positionSize)); + planes.setAttribute("uv", new BufferAttribute(uv, uvSize)); + planes.setAttribute("faceIndex", new BufferAttribute(faceIndex, faceIndexSize)); + lodPlanes.push(planes); + if (lod > LOD_MIN) { + lod--; + } + } + return { lodPlanes, sizeLods, sigmas }; +} +function _createRenderTarget(width, height, params) { + const cubeUVRenderTarget = new WebGLRenderTarget(width, height, params); + cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping; + cubeUVRenderTarget.texture.name = "PMREM.cubeUv"; + cubeUVRenderTarget.scissorTest = true; + return cubeUVRenderTarget; +} +function _setViewport(target, x, y, width, height) { + target.viewport.set(x, y, width, height); + target.scissor.set(x, y, width, height); +} +function _getBlurShader(lodMax, width, height) { + const weights = new Float32Array(MAX_SAMPLES); + const poleAxis = new Vector3(0, 1, 0); + const shaderMaterial = new ShaderMaterial({ + name: "SphericalGaussianBlur", + defines: { + "n": MAX_SAMPLES, + "CUBEUV_TEXEL_WIDTH": 1 / width, + "CUBEUV_TEXEL_HEIGHT": 1 / height, + "CUBEUV_MAX_MIP": `${lodMax}.0` + }, + uniforms: { + "envMap": { value: null }, + "samples": { value: 1 }, + "weights": { value: weights }, + "latitudinal": { value: false }, + "dTheta": { value: 0 }, + "mipInt": { value: 0 }, + "poleAxis": { value: poleAxis } + }, + vertexShader: _getCommonVertexShader(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + ` + ), + blending: NoBlending, + depthTest: false, + depthWrite: false + }); + return shaderMaterial; +} +function _getEquirectMaterial() { + return new ShaderMaterial({ + name: "EquirectangularToCubeUV", + uniforms: { + "envMap": { value: null } + }, + vertexShader: _getCommonVertexShader(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + ` + ), + blending: NoBlending, + depthTest: false, + depthWrite: false + }); +} +function _getCubemapMaterial() { + return new ShaderMaterial({ + name: "CubemapToCubeUV", + uniforms: { + "envMap": { value: null }, + "flipEnvMap": { value: -1 } + }, + vertexShader: _getCommonVertexShader(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + ` + ), + blending: NoBlending, + depthTest: false, + depthWrite: false + }); +} +function _getCommonVertexShader() { + return ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + ` + ); +} +function WebGLCubeUVMaps(renderer) { + let cubeUVmaps = /* @__PURE__ */ new WeakMap(); + let pmremGenerator = null; + function get(texture) { + if (texture && texture.isTexture) { + const mapping = texture.mapping; + const isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping; + const isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping; + if (isEquirectMap || isCubeMap) { + let renderTarget = cubeUVmaps.get(texture); + const currentPMREMVersion = renderTarget !== void 0 ? renderTarget.texture.pmremVersion : 0; + if (texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion) { + if (pmremGenerator === null) pmremGenerator = new PMREMGenerator(renderer); + renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture, renderTarget) : pmremGenerator.fromCubemap(texture, renderTarget); + renderTarget.texture.pmremVersion = texture.pmremVersion; + cubeUVmaps.set(texture, renderTarget); + return renderTarget.texture; + } else { + if (renderTarget !== void 0) { + return renderTarget.texture; + } else { + const image = texture.image; + if (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) { + if (pmremGenerator === null) pmremGenerator = new PMREMGenerator(renderer); + renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture); + renderTarget.texture.pmremVersion = texture.pmremVersion; + cubeUVmaps.set(texture, renderTarget); + texture.addEventListener("dispose", onTextureDispose); + return renderTarget.texture; + } else { + return null; + } + } + } + } + } + return texture; + } + function isCubeTextureComplete(image) { + let count = 0; + const length = 6; + for (let i = 0; i < length; i++) { + if (image[i] !== void 0) count++; + } + return count === length; + } + function onTextureDispose(event) { + const texture = event.target; + texture.removeEventListener("dispose", onTextureDispose); + const cubemapUV = cubeUVmaps.get(texture); + if (cubemapUV !== void 0) { + cubeUVmaps.delete(texture); + cubemapUV.dispose(); + } + } + function dispose() { + cubeUVmaps = /* @__PURE__ */ new WeakMap(); + if (pmremGenerator !== null) { + pmremGenerator.dispose(); + pmremGenerator = null; + } + } + return { + get, + dispose + }; +} +function WebGLExtensions(gl) { + const extensions = {}; + function getExtension(name) { + if (extensions[name] !== void 0) { + return extensions[name]; + } + let extension; + switch (name) { + case "WEBGL_depth_texture": + extension = gl.getExtension("WEBGL_depth_texture") || gl.getExtension("MOZ_WEBGL_depth_texture") || gl.getExtension("WEBKIT_WEBGL_depth_texture"); + break; + case "EXT_texture_filter_anisotropic": + extension = gl.getExtension("EXT_texture_filter_anisotropic") || gl.getExtension("MOZ_EXT_texture_filter_anisotropic") || gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic"); + break; + case "WEBGL_compressed_texture_s3tc": + extension = gl.getExtension("WEBGL_compressed_texture_s3tc") || gl.getExtension("MOZ_WEBGL_compressed_texture_s3tc") || gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"); + break; + case "WEBGL_compressed_texture_pvrtc": + extension = gl.getExtension("WEBGL_compressed_texture_pvrtc") || gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"); + break; + default: + extension = gl.getExtension(name); + } + extensions[name] = extension; + return extension; + } + return { + has: function(name) { + return getExtension(name) !== null; + }, + init: function() { + getExtension("EXT_color_buffer_float"); + getExtension("WEBGL_clip_cull_distance"); + getExtension("OES_texture_float_linear"); + getExtension("EXT_color_buffer_half_float"); + getExtension("WEBGL_multisampled_render_to_texture"); + getExtension("WEBGL_render_shared_exponent"); + }, + get: function(name) { + const extension = getExtension(name); + if (extension === null) { + console.warn("THREE.WebGLRenderer: " + name + " extension not supported."); + } + return extension; + } + }; +} +function WebGLGeometries(gl, attributes, info, bindingStates) { + const geometries = {}; + const wireframeAttributes = /* @__PURE__ */ new WeakMap(); + function onGeometryDispose(event) { + const geometry = event.target; + if (geometry.index !== null) { + attributes.remove(geometry.index); + } + for (const name in geometry.attributes) { + attributes.remove(geometry.attributes[name]); + } + for (const name in geometry.morphAttributes) { + const array = geometry.morphAttributes[name]; + for (let i = 0, l = array.length; i < l; i++) { + attributes.remove(array[i]); + } + } + geometry.removeEventListener("dispose", onGeometryDispose); + delete geometries[geometry.id]; + const attribute = wireframeAttributes.get(geometry); + if (attribute) { + attributes.remove(attribute); + wireframeAttributes.delete(geometry); + } + bindingStates.releaseStatesOfGeometry(geometry); + if (geometry.isInstancedBufferGeometry === true) { + delete geometry._maxInstanceCount; + } + info.memory.geometries--; + } + function get(object, geometry) { + if (geometries[geometry.id] === true) return geometry; + geometry.addEventListener("dispose", onGeometryDispose); + geometries[geometry.id] = true; + info.memory.geometries++; + return geometry; + } + function update(geometry) { + const geometryAttributes = geometry.attributes; + for (const name in geometryAttributes) { + attributes.update(geometryAttributes[name], gl.ARRAY_BUFFER); + } + const morphAttributes = geometry.morphAttributes; + for (const name in morphAttributes) { + const array = morphAttributes[name]; + for (let i = 0, l = array.length; i < l; i++) { + attributes.update(array[i], gl.ARRAY_BUFFER); + } + } + } + function updateWireframeAttribute(geometry) { + const indices = []; + const geometryIndex = geometry.index; + const geometryPosition = geometry.attributes.position; + let version = 0; + if (geometryIndex !== null) { + const array = geometryIndex.array; + version = geometryIndex.version; + for (let i = 0, l = array.length; i < l; i += 3) { + const a = array[i + 0]; + const b = array[i + 1]; + const c = array[i + 2]; + indices.push(a, b, b, c, c, a); + } + } else if (geometryPosition !== void 0) { + const array = geometryPosition.array; + version = geometryPosition.version; + for (let i = 0, l = array.length / 3 - 1; i < l; i += 3) { + const a = i + 0; + const b = i + 1; + const c = i + 2; + indices.push(a, b, b, c, c, a); + } + } else { + return; + } + const attribute = new (arrayNeedsUint32(indices) ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1); + attribute.version = version; + const previousAttribute = wireframeAttributes.get(geometry); + if (previousAttribute) attributes.remove(previousAttribute); + wireframeAttributes.set(geometry, attribute); + } + function getWireframeAttribute(geometry) { + const currentAttribute = wireframeAttributes.get(geometry); + if (currentAttribute) { + const geometryIndex = geometry.index; + if (geometryIndex !== null) { + if (currentAttribute.version < geometryIndex.version) { + updateWireframeAttribute(geometry); + } + } + } else { + updateWireframeAttribute(geometry); + } + return wireframeAttributes.get(geometry); + } + return { + get, + update, + getWireframeAttribute + }; +} +function WebGLIndexedBufferRenderer(gl, extensions, info) { + let mode; + function setMode(value) { + mode = value; + } + let type, bytesPerElement; + function setIndex(value) { + type = value.type; + bytesPerElement = value.bytesPerElement; + } + function render(start, count) { + gl.drawElements(mode, count, type, start * bytesPerElement); + info.update(count, mode, 1); + } + function renderInstances(start, count, primcount) { + if (primcount === 0) return; + gl.drawElementsInstanced(mode, count, type, start * bytesPerElement, primcount); + info.update(count, mode, primcount); + } + function renderMultiDraw(starts, counts, drawCount) { + if (drawCount === 0) return; + const extension = extensions.get("WEBGL_multi_draw"); + if (extension === null) { + for (let i = 0; i < drawCount; i++) { + this.render(starts[i] / bytesPerElement, counts[i]); + } + } else { + extension.multiDrawElementsWEBGL(mode, counts, 0, type, starts, 0, drawCount); + let elementCount = 0; + for (let i = 0; i < drawCount; i++) { + elementCount += counts[i]; + } + info.update(elementCount, mode, 1); + } + } + this.setMode = setMode; + this.setIndex = setIndex; + this.render = render; + this.renderInstances = renderInstances; + this.renderMultiDraw = renderMultiDraw; +} +function WebGLInfo(gl) { + const memory = { + geometries: 0, + textures: 0 + }; + const render = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + function update(count, mode, instanceCount) { + render.calls++; + switch (mode) { + case gl.TRIANGLES: + render.triangles += instanceCount * (count / 3); + break; + case gl.LINES: + render.lines += instanceCount * (count / 2); + break; + case gl.LINE_STRIP: + render.lines += instanceCount * (count - 1); + break; + case gl.LINE_LOOP: + render.lines += instanceCount * count; + break; + case gl.POINTS: + render.points += instanceCount * count; + break; + default: + console.error("THREE.WebGLInfo: Unknown draw mode:", mode); + break; + } + } + function reset() { + render.calls = 0; + render.triangles = 0; + render.points = 0; + render.lines = 0; + } + return { + memory, + render, + programs: null, + autoReset: true, + reset, + update + }; +} +function WebGLMorphtargets(gl, capabilities, textures) { + const morphTextures = /* @__PURE__ */ new WeakMap(); + const morph = new Vector4(); + function update(object, geometry, program) { + const objectInfluences = object.morphTargetInfluences; + const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color; + const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0; + let entry = morphTextures.get(geometry); + if (entry === void 0 || entry.count !== morphTargetsCount) { + let disposeTexture = function() { + texture.dispose(); + morphTextures.delete(geometry); + geometry.removeEventListener("dispose", disposeTexture); + }; + if (entry !== void 0) entry.texture.dispose(); + const hasMorphPosition = geometry.morphAttributes.position !== void 0; + const hasMorphNormals = geometry.morphAttributes.normal !== void 0; + const hasMorphColors = geometry.morphAttributes.color !== void 0; + const morphTargets = geometry.morphAttributes.position || []; + const morphNormals = geometry.morphAttributes.normal || []; + const morphColors = geometry.morphAttributes.color || []; + let vertexDataCount = 0; + if (hasMorphPosition === true) vertexDataCount = 1; + if (hasMorphNormals === true) vertexDataCount = 2; + if (hasMorphColors === true) vertexDataCount = 3; + let width = geometry.attributes.position.count * vertexDataCount; + let height = 1; + if (width > capabilities.maxTextureSize) { + height = Math.ceil(width / capabilities.maxTextureSize); + width = capabilities.maxTextureSize; + } + const buffer = new Float32Array(width * height * 4 * morphTargetsCount); + const texture = new DataArrayTexture(buffer, width, height, morphTargetsCount); + texture.type = FloatType; + texture.needsUpdate = true; + const vertexDataStride = vertexDataCount * 4; + for (let i = 0; i < morphTargetsCount; i++) { + const morphTarget = morphTargets[i]; + const morphNormal = morphNormals[i]; + const morphColor = morphColors[i]; + const offset = width * height * 4 * i; + for (let j = 0; j < morphTarget.count; j++) { + const stride = j * vertexDataStride; + if (hasMorphPosition === true) { + morph.fromBufferAttribute(morphTarget, j); + buffer[offset + stride + 0] = morph.x; + buffer[offset + stride + 1] = morph.y; + buffer[offset + stride + 2] = morph.z; + buffer[offset + stride + 3] = 0; + } + if (hasMorphNormals === true) { + morph.fromBufferAttribute(morphNormal, j); + buffer[offset + stride + 4] = morph.x; + buffer[offset + stride + 5] = morph.y; + buffer[offset + stride + 6] = morph.z; + buffer[offset + stride + 7] = 0; + } + if (hasMorphColors === true) { + morph.fromBufferAttribute(morphColor, j); + buffer[offset + stride + 8] = morph.x; + buffer[offset + stride + 9] = morph.y; + buffer[offset + stride + 10] = morph.z; + buffer[offset + stride + 11] = morphColor.itemSize === 4 ? morph.w : 1; + } + } + } + entry = { + count: morphTargetsCount, + texture, + size: new Vector2(width, height) + }; + morphTextures.set(geometry, entry); + geometry.addEventListener("dispose", disposeTexture); + } + if (object.isInstancedMesh === true && object.morphTexture !== null) { + program.getUniforms().setValue(gl, "morphTexture", object.morphTexture, textures); + } else { + let morphInfluencesSum = 0; + for (let i = 0; i < objectInfluences.length; i++) { + morphInfluencesSum += objectInfluences[i]; + } + const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum; + program.getUniforms().setValue(gl, "morphTargetBaseInfluence", morphBaseInfluence); + program.getUniforms().setValue(gl, "morphTargetInfluences", objectInfluences); + } + program.getUniforms().setValue(gl, "morphTargetsTexture", entry.texture, textures); + program.getUniforms().setValue(gl, "morphTargetsTextureSize", entry.size); + } + return { + update + }; +} +function WebGLObjects(gl, geometries, attributes, info) { + let updateMap = /* @__PURE__ */ new WeakMap(); + function update(object) { + const frame = info.render.frame; + const geometry = object.geometry; + const buffergeometry = geometries.get(object, geometry); + if (updateMap.get(buffergeometry) !== frame) { + geometries.update(buffergeometry); + updateMap.set(buffergeometry, frame); + } + if (object.isInstancedMesh) { + if (object.hasEventListener("dispose", onInstancedMeshDispose) === false) { + object.addEventListener("dispose", onInstancedMeshDispose); + } + if (updateMap.get(object) !== frame) { + attributes.update(object.instanceMatrix, gl.ARRAY_BUFFER); + if (object.instanceColor !== null) { + attributes.update(object.instanceColor, gl.ARRAY_BUFFER); + } + updateMap.set(object, frame); + } + } + if (object.isSkinnedMesh) { + const skeleton = object.skeleton; + if (updateMap.get(skeleton) !== frame) { + skeleton.update(); + updateMap.set(skeleton, frame); + } + } + return buffergeometry; + } + function dispose() { + updateMap = /* @__PURE__ */ new WeakMap(); + } + function onInstancedMeshDispose(event) { + const instancedMesh = event.target; + instancedMesh.removeEventListener("dispose", onInstancedMeshDispose); + attributes.remove(instancedMesh.instanceMatrix); + if (instancedMesh.instanceColor !== null) attributes.remove(instancedMesh.instanceColor); + } + return { + update, + dispose + }; +} +var DepthTexture = class extends Texture { + constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) { + format = format !== void 0 ? format : DepthFormat; + if (format !== DepthFormat && format !== DepthStencilFormat) { + throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat"); + } + if (type === void 0 && format === DepthFormat) type = UnsignedIntType; + if (type === void 0 && format === DepthStencilFormat) type = UnsignedInt248Type; + super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); + this.isDepthTexture = true; + this.image = { width, height }; + this.magFilter = magFilter !== void 0 ? magFilter : NearestFilter; + this.minFilter = minFilter !== void 0 ? minFilter : NearestFilter; + this.flipY = false; + this.generateMipmaps = false; + this.compareFunction = null; + } + copy(source) { + super.copy(source); + this.compareFunction = source.compareFunction; + return this; + } + toJSON(meta) { + const data = super.toJSON(meta); + if (this.compareFunction !== null) data.compareFunction = this.compareFunction; + return data; + } +}; +var emptyTexture = /* @__PURE__ */ new Texture(); +var emptyShadowTexture = /* @__PURE__ */ new DepthTexture(1, 1); +emptyShadowTexture.compareFunction = LessEqualCompare; +var emptyArrayTexture = /* @__PURE__ */ new DataArrayTexture(); +var empty3dTexture = /* @__PURE__ */ new Data3DTexture(); +var emptyCubeTexture = /* @__PURE__ */ new CubeTexture(); +var arrayCacheF32 = []; +var arrayCacheI32 = []; +var mat4array = new Float32Array(16); +var mat3array = new Float32Array(9); +var mat2array = new Float32Array(4); +function flatten(array, nBlocks, blockSize) { + const firstElem = array[0]; + if (firstElem <= 0 || firstElem > 0) return array; + const n = nBlocks * blockSize; + let r = arrayCacheF32[n]; + if (r === void 0) { + r = new Float32Array(n); + arrayCacheF32[n] = r; + } + if (nBlocks !== 0) { + firstElem.toArray(r, 0); + for (let i = 1, offset = 0; i !== nBlocks; ++i) { + offset += blockSize; + array[i].toArray(r, offset); + } + } + return r; +} +function arraysEqual(a, b) { + if (a.length !== b.length) return false; + for (let i = 0, l = a.length; i < l; i++) { + if (a[i] !== b[i]) return false; + } + return true; +} +function copyArray(a, b) { + for (let i = 0, l = b.length; i < l; i++) { + a[i] = b[i]; + } +} +function allocTexUnits(textures, n) { + let r = arrayCacheI32[n]; + if (r === void 0) { + r = new Int32Array(n); + arrayCacheI32[n] = r; + } + for (let i = 0; i !== n; ++i) { + r[i] = textures.allocateTextureUnit(); + } + return r; +} +function setValueV1f(gl, v) { + const cache = this.cache; + if (cache[0] === v) return; + gl.uniform1f(this.addr, v); + cache[0] = v; +} +function setValueV2f(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y) { + gl.uniform2f(this.addr, v.x, v.y); + cache[0] = v.x; + cache[1] = v.y; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform2fv(this.addr, v); + copyArray(cache, v); + } +} +function setValueV3f(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) { + gl.uniform3f(this.addr, v.x, v.y, v.z); + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + } + } else if (v.r !== void 0) { + if (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) { + gl.uniform3f(this.addr, v.r, v.g, v.b); + cache[0] = v.r; + cache[1] = v.g; + cache[2] = v.b; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform3fv(this.addr, v); + copyArray(cache, v); + } +} +function setValueV4f(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) { + gl.uniform4f(this.addr, v.x, v.y, v.z, v.w); + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + cache[3] = v.w; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform4fv(this.addr, v); + copyArray(cache, v); + } +} +function setValueM2(gl, v) { + const cache = this.cache; + const elements = v.elements; + if (elements === void 0) { + if (arraysEqual(cache, v)) return; + gl.uniformMatrix2fv(this.addr, false, v); + copyArray(cache, v); + } else { + if (arraysEqual(cache, elements)) return; + mat2array.set(elements); + gl.uniformMatrix2fv(this.addr, false, mat2array); + copyArray(cache, elements); + } +} +function setValueM3(gl, v) { + const cache = this.cache; + const elements = v.elements; + if (elements === void 0) { + if (arraysEqual(cache, v)) return; + gl.uniformMatrix3fv(this.addr, false, v); + copyArray(cache, v); + } else { + if (arraysEqual(cache, elements)) return; + mat3array.set(elements); + gl.uniformMatrix3fv(this.addr, false, mat3array); + copyArray(cache, elements); + } +} +function setValueM4(gl, v) { + const cache = this.cache; + const elements = v.elements; + if (elements === void 0) { + if (arraysEqual(cache, v)) return; + gl.uniformMatrix4fv(this.addr, false, v); + copyArray(cache, v); + } else { + if (arraysEqual(cache, elements)) return; + mat4array.set(elements); + gl.uniformMatrix4fv(this.addr, false, mat4array); + copyArray(cache, elements); + } +} +function setValueV1i(gl, v) { + const cache = this.cache; + if (cache[0] === v) return; + gl.uniform1i(this.addr, v); + cache[0] = v; +} +function setValueV2i(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y) { + gl.uniform2i(this.addr, v.x, v.y); + cache[0] = v.x; + cache[1] = v.y; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform2iv(this.addr, v); + copyArray(cache, v); + } +} +function setValueV3i(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) { + gl.uniform3i(this.addr, v.x, v.y, v.z); + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform3iv(this.addr, v); + copyArray(cache, v); + } +} +function setValueV4i(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) { + gl.uniform4i(this.addr, v.x, v.y, v.z, v.w); + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + cache[3] = v.w; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform4iv(this.addr, v); + copyArray(cache, v); + } +} +function setValueV1ui(gl, v) { + const cache = this.cache; + if (cache[0] === v) return; + gl.uniform1ui(this.addr, v); + cache[0] = v; +} +function setValueV2ui(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y) { + gl.uniform2ui(this.addr, v.x, v.y); + cache[0] = v.x; + cache[1] = v.y; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform2uiv(this.addr, v); + copyArray(cache, v); + } +} +function setValueV3ui(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) { + gl.uniform3ui(this.addr, v.x, v.y, v.z); + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform3uiv(this.addr, v); + copyArray(cache, v); + } +} +function setValueV4ui(gl, v) { + const cache = this.cache; + if (v.x !== void 0) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) { + gl.uniform4ui(this.addr, v.x, v.y, v.z, v.w); + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + cache[3] = v.w; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform4uiv(this.addr, v); + copyArray(cache, v); + } +} +function setValueT1(gl, v, textures) { + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + if (cache[0] !== unit) { + gl.uniform1i(this.addr, unit); + cache[0] = unit; + } + const emptyTexture2D = this.type === gl.SAMPLER_2D_SHADOW ? emptyShadowTexture : emptyTexture; + textures.setTexture2D(v || emptyTexture2D, unit); +} +function setValueT3D1(gl, v, textures) { + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + if (cache[0] !== unit) { + gl.uniform1i(this.addr, unit); + cache[0] = unit; + } + textures.setTexture3D(v || empty3dTexture, unit); +} +function setValueT6(gl, v, textures) { + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + if (cache[0] !== unit) { + gl.uniform1i(this.addr, unit); + cache[0] = unit; + } + textures.setTextureCube(v || emptyCubeTexture, unit); +} +function setValueT2DArray1(gl, v, textures) { + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + if (cache[0] !== unit) { + gl.uniform1i(this.addr, unit); + cache[0] = unit; + } + textures.setTexture2DArray(v || emptyArrayTexture, unit); +} +function getSingularSetter(type) { + switch (type) { + case 5126: + return setValueV1f; + // FLOAT + case 35664: + return setValueV2f; + // _VEC2 + case 35665: + return setValueV3f; + // _VEC3 + case 35666: + return setValueV4f; + // _VEC4 + case 35674: + return setValueM2; + // _MAT2 + case 35675: + return setValueM3; + // _MAT3 + case 35676: + return setValueM4; + // _MAT4 + case 5124: + case 35670: + return setValueV1i; + // INT, BOOL + case 35667: + case 35671: + return setValueV2i; + // _VEC2 + case 35668: + case 35672: + return setValueV3i; + // _VEC3 + case 35669: + case 35673: + return setValueV4i; + // _VEC4 + case 5125: + return setValueV1ui; + // UINT + case 36294: + return setValueV2ui; + // _VEC2 + case 36295: + return setValueV3ui; + // _VEC3 + case 36296: + return setValueV4ui; + // _VEC4 + case 35678: + // SAMPLER_2D + case 36198: + // SAMPLER_EXTERNAL_OES + case 36298: + // INT_SAMPLER_2D + case 36306: + // UNSIGNED_INT_SAMPLER_2D + case 35682: + return setValueT1; + case 35679: + // SAMPLER_3D + case 36299: + // INT_SAMPLER_3D + case 36307: + return setValueT3D1; + case 35680: + // SAMPLER_CUBE + case 36300: + // INT_SAMPLER_CUBE + case 36308: + // UNSIGNED_INT_SAMPLER_CUBE + case 36293: + return setValueT6; + case 36289: + // SAMPLER_2D_ARRAY + case 36303: + // INT_SAMPLER_2D_ARRAY + case 36311: + // UNSIGNED_INT_SAMPLER_2D_ARRAY + case 36292: + return setValueT2DArray1; + } +} +function setValueV1fArray(gl, v) { + gl.uniform1fv(this.addr, v); +} +function setValueV2fArray(gl, v) { + const data = flatten(v, this.size, 2); + gl.uniform2fv(this.addr, data); +} +function setValueV3fArray(gl, v) { + const data = flatten(v, this.size, 3); + gl.uniform3fv(this.addr, data); +} +function setValueV4fArray(gl, v) { + const data = flatten(v, this.size, 4); + gl.uniform4fv(this.addr, data); +} +function setValueM2Array(gl, v) { + const data = flatten(v, this.size, 4); + gl.uniformMatrix2fv(this.addr, false, data); +} +function setValueM3Array(gl, v) { + const data = flatten(v, this.size, 9); + gl.uniformMatrix3fv(this.addr, false, data); +} +function setValueM4Array(gl, v) { + const data = flatten(v, this.size, 16); + gl.uniformMatrix4fv(this.addr, false, data); +} +function setValueV1iArray(gl, v) { + gl.uniform1iv(this.addr, v); +} +function setValueV2iArray(gl, v) { + gl.uniform2iv(this.addr, v); +} +function setValueV3iArray(gl, v) { + gl.uniform3iv(this.addr, v); +} +function setValueV4iArray(gl, v) { + gl.uniform4iv(this.addr, v); +} +function setValueV1uiArray(gl, v) { + gl.uniform1uiv(this.addr, v); +} +function setValueV2uiArray(gl, v) { + gl.uniform2uiv(this.addr, v); +} +function setValueV3uiArray(gl, v) { + gl.uniform3uiv(this.addr, v); +} +function setValueV4uiArray(gl, v) { + gl.uniform4uiv(this.addr, v); +} +function setValueT1Array(gl, v, textures) { + const cache = this.cache; + const n = v.length; + const units = allocTexUnits(textures, n); + if (!arraysEqual(cache, units)) { + gl.uniform1iv(this.addr, units); + copyArray(cache, units); + } + for (let i = 0; i !== n; ++i) { + textures.setTexture2D(v[i] || emptyTexture, units[i]); + } +} +function setValueT3DArray(gl, v, textures) { + const cache = this.cache; + const n = v.length; + const units = allocTexUnits(textures, n); + if (!arraysEqual(cache, units)) { + gl.uniform1iv(this.addr, units); + copyArray(cache, units); + } + for (let i = 0; i !== n; ++i) { + textures.setTexture3D(v[i] || empty3dTexture, units[i]); + } +} +function setValueT6Array(gl, v, textures) { + const cache = this.cache; + const n = v.length; + const units = allocTexUnits(textures, n); + if (!arraysEqual(cache, units)) { + gl.uniform1iv(this.addr, units); + copyArray(cache, units); + } + for (let i = 0; i !== n; ++i) { + textures.setTextureCube(v[i] || emptyCubeTexture, units[i]); + } +} +function setValueT2DArrayArray(gl, v, textures) { + const cache = this.cache; + const n = v.length; + const units = allocTexUnits(textures, n); + if (!arraysEqual(cache, units)) { + gl.uniform1iv(this.addr, units); + copyArray(cache, units); + } + for (let i = 0; i !== n; ++i) { + textures.setTexture2DArray(v[i] || emptyArrayTexture, units[i]); + } +} +function getPureArraySetter(type) { + switch (type) { + case 5126: + return setValueV1fArray; + // FLOAT + case 35664: + return setValueV2fArray; + // _VEC2 + case 35665: + return setValueV3fArray; + // _VEC3 + case 35666: + return setValueV4fArray; + // _VEC4 + case 35674: + return setValueM2Array; + // _MAT2 + case 35675: + return setValueM3Array; + // _MAT3 + case 35676: + return setValueM4Array; + // _MAT4 + case 5124: + case 35670: + return setValueV1iArray; + // INT, BOOL + case 35667: + case 35671: + return setValueV2iArray; + // _VEC2 + case 35668: + case 35672: + return setValueV3iArray; + // _VEC3 + case 35669: + case 35673: + return setValueV4iArray; + // _VEC4 + case 5125: + return setValueV1uiArray; + // UINT + case 36294: + return setValueV2uiArray; + // _VEC2 + case 36295: + return setValueV3uiArray; + // _VEC3 + case 36296: + return setValueV4uiArray; + // _VEC4 + case 35678: + // SAMPLER_2D + case 36198: + // SAMPLER_EXTERNAL_OES + case 36298: + // INT_SAMPLER_2D + case 36306: + // UNSIGNED_INT_SAMPLER_2D + case 35682: + return setValueT1Array; + case 35679: + // SAMPLER_3D + case 36299: + // INT_SAMPLER_3D + case 36307: + return setValueT3DArray; + case 35680: + // SAMPLER_CUBE + case 36300: + // INT_SAMPLER_CUBE + case 36308: + // UNSIGNED_INT_SAMPLER_CUBE + case 36293: + return setValueT6Array; + case 36289: + // SAMPLER_2D_ARRAY + case 36303: + // INT_SAMPLER_2D_ARRAY + case 36311: + // UNSIGNED_INT_SAMPLER_2D_ARRAY + case 36292: + return setValueT2DArrayArray; + } +} +var SingleUniform = class { + constructor(id, activeInfo, addr) { + this.id = id; + this.addr = addr; + this.cache = []; + this.type = activeInfo.type; + this.setValue = getSingularSetter(activeInfo.type); + } +}; +var PureArrayUniform = class { + constructor(id, activeInfo, addr) { + this.id = id; + this.addr = addr; + this.cache = []; + this.type = activeInfo.type; + this.size = activeInfo.size; + this.setValue = getPureArraySetter(activeInfo.type); + } +}; +var StructuredUniform = class { + constructor(id) { + this.id = id; + this.seq = []; + this.map = {}; + } + setValue(gl, value, textures) { + const seq = this.seq; + for (let i = 0, n = seq.length; i !== n; ++i) { + const u = seq[i]; + u.setValue(gl, value[u.id], textures); + } + } +}; +var RePathPart = /(\w+)(\])?(\[|\.)?/g; +function addUniform(container, uniformObject) { + container.seq.push(uniformObject); + container.map[uniformObject.id] = uniformObject; +} +function parseUniform(activeInfo, addr, container) { + const path = activeInfo.name, pathLength = path.length; + RePathPart.lastIndex = 0; + while (true) { + const match = RePathPart.exec(path), matchEnd = RePathPart.lastIndex; + let id = match[1]; + const idIsIndex = match[2] === "]", subscript = match[3]; + if (idIsIndex) id = id | 0; + if (subscript === void 0 || subscript === "[" && matchEnd + 2 === pathLength) { + addUniform(container, subscript === void 0 ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr)); + break; + } else { + const map = container.map; + let next = map[id]; + if (next === void 0) { + next = new StructuredUniform(id); + addUniform(container, next); + } + container = next; + } + } +} +var WebGLUniforms = class { + constructor(gl, program) { + this.seq = []; + this.map = {}; + const n = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); + for (let i = 0; i < n; ++i) { + const info = gl.getActiveUniform(program, i), addr = gl.getUniformLocation(program, info.name); + parseUniform(info, addr, this); + } + } + setValue(gl, name, value, textures) { + const u = this.map[name]; + if (u !== void 0) u.setValue(gl, value, textures); + } + setOptional(gl, object, name) { + const v = object[name]; + if (v !== void 0) this.setValue(gl, name, v); + } + static upload(gl, seq, values, textures) { + for (let i = 0, n = seq.length; i !== n; ++i) { + const u = seq[i], v = values[u.id]; + if (v.needsUpdate !== false) { + u.setValue(gl, v.value, textures); + } + } + } + static seqWithValue(seq, values) { + const r = []; + for (let i = 0, n = seq.length; i !== n; ++i) { + const u = seq[i]; + if (u.id in values) r.push(u); + } + return r; + } +}; +function WebGLShader(gl, type, string) { + const shader = gl.createShader(type); + gl.shaderSource(shader, string); + gl.compileShader(shader); + return shader; +} +var COMPLETION_STATUS_KHR = 37297; +var programIdCount = 0; +function handleSource(string, errorLine) { + const lines = string.split("\n"); + const lines2 = []; + const from = Math.max(errorLine - 6, 0); + const to = Math.min(errorLine + 6, lines.length); + for (let i = from; i < to; i++) { + const line = i + 1; + lines2.push(`${line === errorLine ? ">" : " "} ${line}: ${lines[i]}`); + } + return lines2.join("\n"); +} +function getEncodingComponents(colorSpace) { + const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace); + const encodingPrimaries = ColorManagement.getPrimaries(colorSpace); + let gamutMapping; + if (workingPrimaries === encodingPrimaries) { + gamutMapping = ""; + } else if (workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries) { + gamutMapping = "LinearDisplayP3ToLinearSRGB"; + } else if (workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries) { + gamutMapping = "LinearSRGBToLinearDisplayP3"; + } + switch (colorSpace) { + case LinearSRGBColorSpace: + case LinearDisplayP3ColorSpace: + return [gamutMapping, "LinearTransferOETF"]; + case SRGBColorSpace: + case DisplayP3ColorSpace: + return [gamutMapping, "sRGBTransferOETF"]; + default: + console.warn("THREE.WebGLProgram: Unsupported color space:", colorSpace); + return [gamutMapping, "LinearTransferOETF"]; + } +} +function getShaderErrors(gl, shader, type) { + const status = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + const errors = gl.getShaderInfoLog(shader).trim(); + if (status && errors === "") return ""; + const errorMatches = /ERROR: 0:(\d+)/.exec(errors); + if (errorMatches) { + const errorLine = parseInt(errorMatches[1]); + return type.toUpperCase() + "\n\n" + errors + "\n\n" + handleSource(gl.getShaderSource(shader), errorLine); + } else { + return errors; + } +} +function getTexelEncodingFunction(functionName, colorSpace) { + const components = getEncodingComponents(colorSpace); + return `vec4 ${functionName}( vec4 value ) { return ${components[0]}( ${components[1]}( value ) ); }`; +} +function getToneMappingFunction(functionName, toneMapping) { + let toneMappingName; + switch (toneMapping) { + case LinearToneMapping: + toneMappingName = "Linear"; + break; + case ReinhardToneMapping: + toneMappingName = "Reinhard"; + break; + case CineonToneMapping: + toneMappingName = "OptimizedCineon"; + break; + case ACESFilmicToneMapping: + toneMappingName = "ACESFilmic"; + break; + case AgXToneMapping: + toneMappingName = "AgX"; + break; + case NeutralToneMapping: + toneMappingName = "Neutral"; + break; + case CustomToneMapping: + toneMappingName = "Custom"; + break; + default: + console.warn("THREE.WebGLProgram: Unsupported toneMapping:", toneMapping); + toneMappingName = "Linear"; + } + return "vec3 " + functionName + "( vec3 color ) { return " + toneMappingName + "ToneMapping( color ); }"; +} +function generateVertexExtensions(parameters) { + const chunks = [ + parameters.extensionClipCullDistance ? "#extension GL_ANGLE_clip_cull_distance : require" : "", + parameters.extensionMultiDraw ? "#extension GL_ANGLE_multi_draw : require" : "" + ]; + return chunks.filter(filterEmptyLine).join("\n"); +} +function generateDefines(defines) { + const chunks = []; + for (const name in defines) { + const value = defines[name]; + if (value === false) continue; + chunks.push("#define " + name + " " + value); + } + return chunks.join("\n"); +} +function fetchAttributeLocations(gl, program) { + const attributes = {}; + const n = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES); + for (let i = 0; i < n; i++) { + const info = gl.getActiveAttrib(program, i); + const name = info.name; + let locationSize = 1; + if (info.type === gl.FLOAT_MAT2) locationSize = 2; + if (info.type === gl.FLOAT_MAT3) locationSize = 3; + if (info.type === gl.FLOAT_MAT4) locationSize = 4; + attributes[name] = { + type: info.type, + location: gl.getAttribLocation(program, name), + locationSize + }; + } + return attributes; +} +function filterEmptyLine(string) { + return string !== ""; +} +function replaceLightNums(string, parameters) { + const numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps; + return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows); +} +function replaceClippingPlaneNums(string, parameters) { + return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection); +} +var includePattern = /^[ \t]*#include +<([\w\d./]+)>/gm; +function resolveIncludes(string) { + return string.replace(includePattern, includeReplacer); +} +var shaderChunkMap = /* @__PURE__ */ new Map([ + ["encodings_fragment", "colorspace_fragment"], + // @deprecated, r154 + ["encodings_pars_fragment", "colorspace_pars_fragment"], + // @deprecated, r154 + ["output_fragment", "opaque_fragment"] + // @deprecated, r154 +]); +function includeReplacer(match, include) { + let string = ShaderChunk[include]; + if (string === void 0) { + const newInclude = shaderChunkMap.get(include); + if (newInclude !== void 0) { + string = ShaderChunk[newInclude]; + console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', include, newInclude); + } else { + throw new Error("Can not resolve #include <" + include + ">"); + } + } + return resolveIncludes(string); +} +var unrollLoopPattern = /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g; +function unrollLoops(string) { + return string.replace(unrollLoopPattern, loopReplacer); +} +function loopReplacer(match, start, end, snippet) { + let string = ""; + for (let i = parseInt(start); i < parseInt(end); i++) { + string += snippet.replace(/\[\s*i\s*\]/g, "[ " + i + " ]").replace(/UNROLLED_LOOP_INDEX/g, i); + } + return string; +} +function generatePrecision(parameters) { + let precisionstring = `precision ${parameters.precision} float; + precision ${parameters.precision} int; + precision ${parameters.precision} sampler2D; + precision ${parameters.precision} samplerCube; + precision ${parameters.precision} sampler3D; + precision ${parameters.precision} sampler2DArray; + precision ${parameters.precision} sampler2DShadow; + precision ${parameters.precision} samplerCubeShadow; + precision ${parameters.precision} sampler2DArrayShadow; + precision ${parameters.precision} isampler2D; + precision ${parameters.precision} isampler3D; + precision ${parameters.precision} isamplerCube; + precision ${parameters.precision} isampler2DArray; + precision ${parameters.precision} usampler2D; + precision ${parameters.precision} usampler3D; + precision ${parameters.precision} usamplerCube; + precision ${parameters.precision} usampler2DArray; + `; + if (parameters.precision === "highp") { + precisionstring += "\n#define HIGH_PRECISION"; + } else if (parameters.precision === "mediump") { + precisionstring += "\n#define MEDIUM_PRECISION"; + } else if (parameters.precision === "lowp") { + precisionstring += "\n#define LOW_PRECISION"; + } + return precisionstring; +} +function generateShadowMapTypeDefine(parameters) { + let shadowMapTypeDefine = "SHADOWMAP_TYPE_BASIC"; + if (parameters.shadowMapType === PCFShadowMap) { + shadowMapTypeDefine = "SHADOWMAP_TYPE_PCF"; + } else if (parameters.shadowMapType === PCFSoftShadowMap) { + shadowMapTypeDefine = "SHADOWMAP_TYPE_PCF_SOFT"; + } else if (parameters.shadowMapType === VSMShadowMap) { + shadowMapTypeDefine = "SHADOWMAP_TYPE_VSM"; + } + return shadowMapTypeDefine; +} +function generateEnvMapTypeDefine(parameters) { + let envMapTypeDefine = "ENVMAP_TYPE_CUBE"; + if (parameters.envMap) { + switch (parameters.envMapMode) { + case CubeReflectionMapping: + case CubeRefractionMapping: + envMapTypeDefine = "ENVMAP_TYPE_CUBE"; + break; + case CubeUVReflectionMapping: + envMapTypeDefine = "ENVMAP_TYPE_CUBE_UV"; + break; + } + } + return envMapTypeDefine; +} +function generateEnvMapModeDefine(parameters) { + let envMapModeDefine = "ENVMAP_MODE_REFLECTION"; + if (parameters.envMap) { + switch (parameters.envMapMode) { + case CubeRefractionMapping: + envMapModeDefine = "ENVMAP_MODE_REFRACTION"; + break; + } + } + return envMapModeDefine; +} +function generateEnvMapBlendingDefine(parameters) { + let envMapBlendingDefine = "ENVMAP_BLENDING_NONE"; + if (parameters.envMap) { + switch (parameters.combine) { + case MultiplyOperation: + envMapBlendingDefine = "ENVMAP_BLENDING_MULTIPLY"; + break; + case MixOperation: + envMapBlendingDefine = "ENVMAP_BLENDING_MIX"; + break; + case AddOperation: + envMapBlendingDefine = "ENVMAP_BLENDING_ADD"; + break; + } + } + return envMapBlendingDefine; +} +function generateCubeUVSize(parameters) { + const imageHeight = parameters.envMapCubeUVHeight; + if (imageHeight === null) return null; + const maxMip = Math.log2(imageHeight) - 2; + const texelHeight = 1 / imageHeight; + const texelWidth = 1 / (3 * Math.max(Math.pow(2, maxMip), 7 * 16)); + return { texelWidth, texelHeight, maxMip }; +} +function WebGLProgram(renderer, cacheKey, parameters, bindingStates) { + const gl = renderer.getContext(); + const defines = parameters.defines; + let vertexShader2 = parameters.vertexShader; + let fragmentShader2 = parameters.fragmentShader; + const shadowMapTypeDefine = generateShadowMapTypeDefine(parameters); + const envMapTypeDefine = generateEnvMapTypeDefine(parameters); + const envMapModeDefine = generateEnvMapModeDefine(parameters); + const envMapBlendingDefine = generateEnvMapBlendingDefine(parameters); + const envMapCubeUVSize = generateCubeUVSize(parameters); + const customVertexExtensions = generateVertexExtensions(parameters); + const customDefines = generateDefines(defines); + const program = gl.createProgram(); + let prefixVertex, prefixFragment; + let versionString = parameters.glslVersion ? "#version " + parameters.glslVersion + "\n" : ""; + if (parameters.isRawShaderMaterial) { + prefixVertex = [ + "#define SHADER_TYPE " + parameters.shaderType, + "#define SHADER_NAME " + parameters.shaderName, + customDefines + ].filter(filterEmptyLine).join("\n"); + if (prefixVertex.length > 0) { + prefixVertex += "\n"; + } + prefixFragment = [ + "#define SHADER_TYPE " + parameters.shaderType, + "#define SHADER_NAME " + parameters.shaderName, + customDefines + ].filter(filterEmptyLine).join("\n"); + if (prefixFragment.length > 0) { + prefixFragment += "\n"; + } + } else { + prefixVertex = [ + generatePrecision(parameters), + "#define SHADER_TYPE " + parameters.shaderType, + "#define SHADER_NAME " + parameters.shaderName, + customDefines, + parameters.extensionClipCullDistance ? "#define USE_CLIP_DISTANCE" : "", + parameters.batching ? "#define USE_BATCHING" : "", + parameters.instancing ? "#define USE_INSTANCING" : "", + parameters.instancingColor ? "#define USE_INSTANCING_COLOR" : "", + parameters.instancingMorph ? "#define USE_INSTANCING_MORPH" : "", + parameters.useFog && parameters.fog ? "#define USE_FOG" : "", + parameters.useFog && parameters.fogExp2 ? "#define FOG_EXP2" : "", + parameters.map ? "#define USE_MAP" : "", + parameters.envMap ? "#define USE_ENVMAP" : "", + parameters.envMap ? "#define " + envMapModeDefine : "", + parameters.lightMap ? "#define USE_LIGHTMAP" : "", + parameters.aoMap ? "#define USE_AOMAP" : "", + parameters.bumpMap ? "#define USE_BUMPMAP" : "", + parameters.normalMap ? "#define USE_NORMALMAP" : "", + parameters.normalMapObjectSpace ? "#define USE_NORMALMAP_OBJECTSPACE" : "", + parameters.normalMapTangentSpace ? "#define USE_NORMALMAP_TANGENTSPACE" : "", + parameters.displacementMap ? "#define USE_DISPLACEMENTMAP" : "", + parameters.emissiveMap ? "#define USE_EMISSIVEMAP" : "", + parameters.anisotropy ? "#define USE_ANISOTROPY" : "", + parameters.anisotropyMap ? "#define USE_ANISOTROPYMAP" : "", + parameters.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", + parameters.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", + parameters.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", + parameters.iridescenceMap ? "#define USE_IRIDESCENCEMAP" : "", + parameters.iridescenceThicknessMap ? "#define USE_IRIDESCENCE_THICKNESSMAP" : "", + parameters.specularMap ? "#define USE_SPECULARMAP" : "", + parameters.specularColorMap ? "#define USE_SPECULAR_COLORMAP" : "", + parameters.specularIntensityMap ? "#define USE_SPECULAR_INTENSITYMAP" : "", + parameters.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", + parameters.metalnessMap ? "#define USE_METALNESSMAP" : "", + parameters.alphaMap ? "#define USE_ALPHAMAP" : "", + parameters.alphaHash ? "#define USE_ALPHAHASH" : "", + parameters.transmission ? "#define USE_TRANSMISSION" : "", + parameters.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "", + parameters.thicknessMap ? "#define USE_THICKNESSMAP" : "", + parameters.sheenColorMap ? "#define USE_SHEEN_COLORMAP" : "", + parameters.sheenRoughnessMap ? "#define USE_SHEEN_ROUGHNESSMAP" : "", + // + parameters.mapUv ? "#define MAP_UV " + parameters.mapUv : "", + parameters.alphaMapUv ? "#define ALPHAMAP_UV " + parameters.alphaMapUv : "", + parameters.lightMapUv ? "#define LIGHTMAP_UV " + parameters.lightMapUv : "", + parameters.aoMapUv ? "#define AOMAP_UV " + parameters.aoMapUv : "", + parameters.emissiveMapUv ? "#define EMISSIVEMAP_UV " + parameters.emissiveMapUv : "", + parameters.bumpMapUv ? "#define BUMPMAP_UV " + parameters.bumpMapUv : "", + parameters.normalMapUv ? "#define NORMALMAP_UV " + parameters.normalMapUv : "", + parameters.displacementMapUv ? "#define DISPLACEMENTMAP_UV " + parameters.displacementMapUv : "", + parameters.metalnessMapUv ? "#define METALNESSMAP_UV " + parameters.metalnessMapUv : "", + parameters.roughnessMapUv ? "#define ROUGHNESSMAP_UV " + parameters.roughnessMapUv : "", + parameters.anisotropyMapUv ? "#define ANISOTROPYMAP_UV " + parameters.anisotropyMapUv : "", + parameters.clearcoatMapUv ? "#define CLEARCOATMAP_UV " + parameters.clearcoatMapUv : "", + parameters.clearcoatNormalMapUv ? "#define CLEARCOAT_NORMALMAP_UV " + parameters.clearcoatNormalMapUv : "", + parameters.clearcoatRoughnessMapUv ? "#define CLEARCOAT_ROUGHNESSMAP_UV " + parameters.clearcoatRoughnessMapUv : "", + parameters.iridescenceMapUv ? "#define IRIDESCENCEMAP_UV " + parameters.iridescenceMapUv : "", + parameters.iridescenceThicknessMapUv ? "#define IRIDESCENCE_THICKNESSMAP_UV " + parameters.iridescenceThicknessMapUv : "", + parameters.sheenColorMapUv ? "#define SHEEN_COLORMAP_UV " + parameters.sheenColorMapUv : "", + parameters.sheenRoughnessMapUv ? "#define SHEEN_ROUGHNESSMAP_UV " + parameters.sheenRoughnessMapUv : "", + parameters.specularMapUv ? "#define SPECULARMAP_UV " + parameters.specularMapUv : "", + parameters.specularColorMapUv ? "#define SPECULAR_COLORMAP_UV " + parameters.specularColorMapUv : "", + parameters.specularIntensityMapUv ? "#define SPECULAR_INTENSITYMAP_UV " + parameters.specularIntensityMapUv : "", + parameters.transmissionMapUv ? "#define TRANSMISSIONMAP_UV " + parameters.transmissionMapUv : "", + parameters.thicknessMapUv ? "#define THICKNESSMAP_UV " + parameters.thicknessMapUv : "", + // + parameters.vertexTangents && parameters.flatShading === false ? "#define USE_TANGENT" : "", + parameters.vertexColors ? "#define USE_COLOR" : "", + parameters.vertexAlphas ? "#define USE_COLOR_ALPHA" : "", + parameters.vertexUv1s ? "#define USE_UV1" : "", + parameters.vertexUv2s ? "#define USE_UV2" : "", + parameters.vertexUv3s ? "#define USE_UV3" : "", + parameters.pointsUvs ? "#define USE_POINTS_UV" : "", + parameters.flatShading ? "#define FLAT_SHADED" : "", + parameters.skinning ? "#define USE_SKINNING" : "", + parameters.morphTargets ? "#define USE_MORPHTARGETS" : "", + parameters.morphNormals && parameters.flatShading === false ? "#define USE_MORPHNORMALS" : "", + parameters.morphColors ? "#define USE_MORPHCOLORS" : "", + parameters.morphTargetsCount > 0 ? "#define MORPHTARGETS_TEXTURE" : "", + parameters.morphTargetsCount > 0 ? "#define MORPHTARGETS_TEXTURE_STRIDE " + parameters.morphTextureStride : "", + parameters.morphTargetsCount > 0 ? "#define MORPHTARGETS_COUNT " + parameters.morphTargetsCount : "", + parameters.doubleSided ? "#define DOUBLE_SIDED" : "", + parameters.flipSided ? "#define FLIP_SIDED" : "", + parameters.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", + parameters.shadowMapEnabled ? "#define " + shadowMapTypeDefine : "", + parameters.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "", + parameters.numLightProbes > 0 ? "#define USE_LIGHT_PROBES" : "", + parameters.useLegacyLights ? "#define LEGACY_LIGHTS" : "", + parameters.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", + "uniform mat4 modelMatrix;", + "uniform mat4 modelViewMatrix;", + "uniform mat4 projectionMatrix;", + "uniform mat4 viewMatrix;", + "uniform mat3 normalMatrix;", + "uniform vec3 cameraPosition;", + "uniform bool isOrthographic;", + "#ifdef USE_INSTANCING", + " attribute mat4 instanceMatrix;", + "#endif", + "#ifdef USE_INSTANCING_COLOR", + " attribute vec3 instanceColor;", + "#endif", + "#ifdef USE_INSTANCING_MORPH", + " uniform sampler2D morphTexture;", + "#endif", + "attribute vec3 position;", + "attribute vec3 normal;", + "attribute vec2 uv;", + "#ifdef USE_UV1", + " attribute vec2 uv1;", + "#endif", + "#ifdef USE_UV2", + " attribute vec2 uv2;", + "#endif", + "#ifdef USE_UV3", + " attribute vec2 uv3;", + "#endif", + "#ifdef USE_TANGENT", + " attribute vec4 tangent;", + "#endif", + "#if defined( USE_COLOR_ALPHA )", + " attribute vec4 color;", + "#elif defined( USE_COLOR )", + " attribute vec3 color;", + "#endif", + "#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )", + " attribute vec3 morphTarget0;", + " attribute vec3 morphTarget1;", + " attribute vec3 morphTarget2;", + " attribute vec3 morphTarget3;", + " #ifdef USE_MORPHNORMALS", + " attribute vec3 morphNormal0;", + " attribute vec3 morphNormal1;", + " attribute vec3 morphNormal2;", + " attribute vec3 morphNormal3;", + " #else", + " attribute vec3 morphTarget4;", + " attribute vec3 morphTarget5;", + " attribute vec3 morphTarget6;", + " attribute vec3 morphTarget7;", + " #endif", + "#endif", + "#ifdef USE_SKINNING", + " attribute vec4 skinIndex;", + " attribute vec4 skinWeight;", + "#endif", + "\n" + ].filter(filterEmptyLine).join("\n"); + prefixFragment = [ + generatePrecision(parameters), + "#define SHADER_TYPE " + parameters.shaderType, + "#define SHADER_NAME " + parameters.shaderName, + customDefines, + parameters.useFog && parameters.fog ? "#define USE_FOG" : "", + parameters.useFog && parameters.fogExp2 ? "#define FOG_EXP2" : "", + parameters.alphaToCoverage ? "#define ALPHA_TO_COVERAGE" : "", + parameters.map ? "#define USE_MAP" : "", + parameters.matcap ? "#define USE_MATCAP" : "", + parameters.envMap ? "#define USE_ENVMAP" : "", + parameters.envMap ? "#define " + envMapTypeDefine : "", + parameters.envMap ? "#define " + envMapModeDefine : "", + parameters.envMap ? "#define " + envMapBlendingDefine : "", + envMapCubeUVSize ? "#define CUBEUV_TEXEL_WIDTH " + envMapCubeUVSize.texelWidth : "", + envMapCubeUVSize ? "#define CUBEUV_TEXEL_HEIGHT " + envMapCubeUVSize.texelHeight : "", + envMapCubeUVSize ? "#define CUBEUV_MAX_MIP " + envMapCubeUVSize.maxMip + ".0" : "", + parameters.lightMap ? "#define USE_LIGHTMAP" : "", + parameters.aoMap ? "#define USE_AOMAP" : "", + parameters.bumpMap ? "#define USE_BUMPMAP" : "", + parameters.normalMap ? "#define USE_NORMALMAP" : "", + parameters.normalMapObjectSpace ? "#define USE_NORMALMAP_OBJECTSPACE" : "", + parameters.normalMapTangentSpace ? "#define USE_NORMALMAP_TANGENTSPACE" : "", + parameters.emissiveMap ? "#define USE_EMISSIVEMAP" : "", + parameters.anisotropy ? "#define USE_ANISOTROPY" : "", + parameters.anisotropyMap ? "#define USE_ANISOTROPYMAP" : "", + parameters.clearcoat ? "#define USE_CLEARCOAT" : "", + parameters.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", + parameters.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", + parameters.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", + parameters.iridescence ? "#define USE_IRIDESCENCE" : "", + parameters.iridescenceMap ? "#define USE_IRIDESCENCEMAP" : "", + parameters.iridescenceThicknessMap ? "#define USE_IRIDESCENCE_THICKNESSMAP" : "", + parameters.specularMap ? "#define USE_SPECULARMAP" : "", + parameters.specularColorMap ? "#define USE_SPECULAR_COLORMAP" : "", + parameters.specularIntensityMap ? "#define USE_SPECULAR_INTENSITYMAP" : "", + parameters.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", + parameters.metalnessMap ? "#define USE_METALNESSMAP" : "", + parameters.alphaMap ? "#define USE_ALPHAMAP" : "", + parameters.alphaTest ? "#define USE_ALPHATEST" : "", + parameters.alphaHash ? "#define USE_ALPHAHASH" : "", + parameters.sheen ? "#define USE_SHEEN" : "", + parameters.sheenColorMap ? "#define USE_SHEEN_COLORMAP" : "", + parameters.sheenRoughnessMap ? "#define USE_SHEEN_ROUGHNESSMAP" : "", + parameters.transmission ? "#define USE_TRANSMISSION" : "", + parameters.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "", + parameters.thicknessMap ? "#define USE_THICKNESSMAP" : "", + parameters.vertexTangents && parameters.flatShading === false ? "#define USE_TANGENT" : "", + parameters.vertexColors || parameters.instancingColor ? "#define USE_COLOR" : "", + parameters.vertexAlphas ? "#define USE_COLOR_ALPHA" : "", + parameters.vertexUv1s ? "#define USE_UV1" : "", + parameters.vertexUv2s ? "#define USE_UV2" : "", + parameters.vertexUv3s ? "#define USE_UV3" : "", + parameters.pointsUvs ? "#define USE_POINTS_UV" : "", + parameters.gradientMap ? "#define USE_GRADIENTMAP" : "", + parameters.flatShading ? "#define FLAT_SHADED" : "", + parameters.doubleSided ? "#define DOUBLE_SIDED" : "", + parameters.flipSided ? "#define FLIP_SIDED" : "", + parameters.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", + parameters.shadowMapEnabled ? "#define " + shadowMapTypeDefine : "", + parameters.premultipliedAlpha ? "#define PREMULTIPLIED_ALPHA" : "", + parameters.numLightProbes > 0 ? "#define USE_LIGHT_PROBES" : "", + parameters.useLegacyLights ? "#define LEGACY_LIGHTS" : "", + parameters.decodeVideoTexture ? "#define DECODE_VIDEO_TEXTURE" : "", + parameters.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", + "uniform mat4 viewMatrix;", + "uniform vec3 cameraPosition;", + "uniform bool isOrthographic;", + parameters.toneMapping !== NoToneMapping ? "#define TONE_MAPPING" : "", + parameters.toneMapping !== NoToneMapping ? ShaderChunk["tonemapping_pars_fragment"] : "", + // this code is required here because it is used by the toneMapping() function defined below + parameters.toneMapping !== NoToneMapping ? getToneMappingFunction("toneMapping", parameters.toneMapping) : "", + parameters.dithering ? "#define DITHERING" : "", + parameters.opaque ? "#define OPAQUE" : "", + ShaderChunk["colorspace_pars_fragment"], + // this code is required here because it is used by the various encoding/decoding function defined below + getTexelEncodingFunction("linearToOutputTexel", parameters.outputColorSpace), + parameters.useDepthPacking ? "#define DEPTH_PACKING " + parameters.depthPacking : "", + "\n" + ].filter(filterEmptyLine).join("\n"); + } + vertexShader2 = resolveIncludes(vertexShader2); + vertexShader2 = replaceLightNums(vertexShader2, parameters); + vertexShader2 = replaceClippingPlaneNums(vertexShader2, parameters); + fragmentShader2 = resolveIncludes(fragmentShader2); + fragmentShader2 = replaceLightNums(fragmentShader2, parameters); + fragmentShader2 = replaceClippingPlaneNums(fragmentShader2, parameters); + vertexShader2 = unrollLoops(vertexShader2); + fragmentShader2 = unrollLoops(fragmentShader2); + if (parameters.isRawShaderMaterial !== true) { + versionString = "#version 300 es\n"; + prefixVertex = [ + customVertexExtensions, + "#define attribute in", + "#define varying out", + "#define texture2D texture" + ].join("\n") + "\n" + prefixVertex; + prefixFragment = [ + "#define varying in", + parameters.glslVersion === GLSL3 ? "" : "layout(location = 0) out highp vec4 pc_fragColor;", + parameters.glslVersion === GLSL3 ? "" : "#define gl_FragColor pc_fragColor", + "#define gl_FragDepthEXT gl_FragDepth", + "#define texture2D texture", + "#define textureCube texture", + "#define texture2DProj textureProj", + "#define texture2DLodEXT textureLod", + "#define texture2DProjLodEXT textureProjLod", + "#define textureCubeLodEXT textureLod", + "#define texture2DGradEXT textureGrad", + "#define texture2DProjGradEXT textureProjGrad", + "#define textureCubeGradEXT textureGrad" + ].join("\n") + "\n" + prefixFragment; + } + const vertexGlsl = versionString + prefixVertex + vertexShader2; + const fragmentGlsl = versionString + prefixFragment + fragmentShader2; + const glVertexShader = WebGLShader(gl, gl.VERTEX_SHADER, vertexGlsl); + const glFragmentShader = WebGLShader(gl, gl.FRAGMENT_SHADER, fragmentGlsl); + gl.attachShader(program, glVertexShader); + gl.attachShader(program, glFragmentShader); + if (parameters.index0AttributeName !== void 0) { + gl.bindAttribLocation(program, 0, parameters.index0AttributeName); + } else if (parameters.morphTargets === true) { + gl.bindAttribLocation(program, 0, "position"); + } + gl.linkProgram(program); + function onFirstUse(self2) { + if (renderer.debug.checkShaderErrors) { + const programLog = gl.getProgramInfoLog(program).trim(); + const vertexLog = gl.getShaderInfoLog(glVertexShader).trim(); + const fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim(); + let runnable = true; + let haveDiagnostics = true; + if (gl.getProgramParameter(program, gl.LINK_STATUS) === false) { + runnable = false; + if (typeof renderer.debug.onShaderError === "function") { + renderer.debug.onShaderError(gl, program, glVertexShader, glFragmentShader); + } else { + const vertexErrors = getShaderErrors(gl, glVertexShader, "vertex"); + const fragmentErrors = getShaderErrors(gl, glFragmentShader, "fragment"); + console.error( + "THREE.WebGLProgram: Shader Error " + gl.getError() + " - VALIDATE_STATUS " + gl.getProgramParameter(program, gl.VALIDATE_STATUS) + "\n\nMaterial Name: " + self2.name + "\nMaterial Type: " + self2.type + "\n\nProgram Info Log: " + programLog + "\n" + vertexErrors + "\n" + fragmentErrors + ); + } + } else if (programLog !== "") { + console.warn("THREE.WebGLProgram: Program Info Log:", programLog); + } else if (vertexLog === "" || fragmentLog === "") { + haveDiagnostics = false; + } + if (haveDiagnostics) { + self2.diagnostics = { + runnable, + programLog, + vertexShader: { + log: vertexLog, + prefix: prefixVertex + }, + fragmentShader: { + log: fragmentLog, + prefix: prefixFragment + } + }; + } + } + gl.deleteShader(glVertexShader); + gl.deleteShader(glFragmentShader); + cachedUniforms = new WebGLUniforms(gl, program); + cachedAttributes = fetchAttributeLocations(gl, program); + } + let cachedUniforms; + this.getUniforms = function() { + if (cachedUniforms === void 0) { + onFirstUse(this); + } + return cachedUniforms; + }; + let cachedAttributes; + this.getAttributes = function() { + if (cachedAttributes === void 0) { + onFirstUse(this); + } + return cachedAttributes; + }; + let programReady = parameters.rendererExtensionParallelShaderCompile === false; + this.isReady = function() { + if (programReady === false) { + programReady = gl.getProgramParameter(program, COMPLETION_STATUS_KHR); + } + return programReady; + }; + this.destroy = function() { + bindingStates.releaseStatesOfProgram(this); + gl.deleteProgram(program); + this.program = void 0; + }; + this.type = parameters.shaderType; + this.name = parameters.shaderName; + this.id = programIdCount++; + this.cacheKey = cacheKey; + this.usedTimes = 1; + this.program = program; + this.vertexShader = glVertexShader; + this.fragmentShader = glFragmentShader; + return this; +} +var _id$1 = 0; +var WebGLShaderCache = class { + constructor() { + this.shaderCache = /* @__PURE__ */ new Map(); + this.materialCache = /* @__PURE__ */ new Map(); + } + update(material) { + const vertexShader2 = material.vertexShader; + const fragmentShader2 = material.fragmentShader; + const vertexShaderStage = this._getShaderStage(vertexShader2); + const fragmentShaderStage = this._getShaderStage(fragmentShader2); + const materialShaders = this._getShaderCacheForMaterial(material); + if (materialShaders.has(vertexShaderStage) === false) { + materialShaders.add(vertexShaderStage); + vertexShaderStage.usedTimes++; + } + if (materialShaders.has(fragmentShaderStage) === false) { + materialShaders.add(fragmentShaderStage); + fragmentShaderStage.usedTimes++; + } + return this; + } + remove(material) { + const materialShaders = this.materialCache.get(material); + for (const shaderStage of materialShaders) { + shaderStage.usedTimes--; + if (shaderStage.usedTimes === 0) this.shaderCache.delete(shaderStage.code); + } + this.materialCache.delete(material); + return this; + } + getVertexShaderID(material) { + return this._getShaderStage(material.vertexShader).id; + } + getFragmentShaderID(material) { + return this._getShaderStage(material.fragmentShader).id; + } + dispose() { + this.shaderCache.clear(); + this.materialCache.clear(); + } + _getShaderCacheForMaterial(material) { + const cache = this.materialCache; + let set = cache.get(material); + if (set === void 0) { + set = /* @__PURE__ */ new Set(); + cache.set(material, set); + } + return set; + } + _getShaderStage(code) { + const cache = this.shaderCache; + let stage = cache.get(code); + if (stage === void 0) { + stage = new WebGLShaderStage(code); + cache.set(code, stage); + } + return stage; + } +}; +var WebGLShaderStage = class { + constructor(code) { + this.id = _id$1++; + this.code = code; + this.usedTimes = 0; + } +}; +function WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping) { + const _programLayers = new Layers(); + const _customShaders = new WebGLShaderCache(); + const _activeChannels = /* @__PURE__ */ new Set(); + const programs = []; + const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer; + const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures; + let precision = capabilities.precision; + const shaderIDs = { + MeshDepthMaterial: "depth", + MeshDistanceMaterial: "distanceRGBA", + MeshNormalMaterial: "normal", + MeshBasicMaterial: "basic", + MeshLambertMaterial: "lambert", + MeshPhongMaterial: "phong", + MeshToonMaterial: "toon", + MeshStandardMaterial: "physical", + MeshPhysicalMaterial: "physical", + MeshMatcapMaterial: "matcap", + LineBasicMaterial: "basic", + LineDashedMaterial: "dashed", + PointsMaterial: "points", + ShadowMaterial: "shadow", + SpriteMaterial: "sprite" + }; + function getChannel(value) { + _activeChannels.add(value); + if (value === 0) return "uv"; + return `uv${value}`; + } + function getParameters(material, lights, shadows, scene, object) { + const fog = scene.fog; + const geometry = object.geometry; + const environment = material.isMeshStandardMaterial ? scene.environment : null; + const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment); + const envMapCubeUVHeight = !!envMap && envMap.mapping === CubeUVReflectionMapping ? envMap.image.height : null; + const shaderID = shaderIDs[material.type]; + if (material.precision !== null) { + precision = capabilities.getMaxPrecision(material.precision); + if (precision !== material.precision) { + console.warn("THREE.WebGLProgram.getParameters:", material.precision, "not supported, using", precision, "instead."); + } + } + const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color; + const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0; + let morphTextureStride = 0; + if (geometry.morphAttributes.position !== void 0) morphTextureStride = 1; + if (geometry.morphAttributes.normal !== void 0) morphTextureStride = 2; + if (geometry.morphAttributes.color !== void 0) morphTextureStride = 3; + let vertexShader2, fragmentShader2; + let customVertexShaderID, customFragmentShaderID; + if (shaderID) { + const shader = ShaderLib[shaderID]; + vertexShader2 = shader.vertexShader; + fragmentShader2 = shader.fragmentShader; + } else { + vertexShader2 = material.vertexShader; + fragmentShader2 = material.fragmentShader; + _customShaders.update(material); + customVertexShaderID = _customShaders.getVertexShaderID(material); + customFragmentShaderID = _customShaders.getFragmentShaderID(material); + } + const currentRenderTarget = renderer.getRenderTarget(); + const IS_INSTANCEDMESH = object.isInstancedMesh === true; + const IS_BATCHEDMESH = object.isBatchedMesh === true; + const HAS_MAP = !!material.map; + const HAS_MATCAP = !!material.matcap; + const HAS_ENVMAP = !!envMap; + const HAS_AOMAP = !!material.aoMap; + const HAS_LIGHTMAP = !!material.lightMap; + const HAS_BUMPMAP = !!material.bumpMap; + const HAS_NORMALMAP = !!material.normalMap; + const HAS_DISPLACEMENTMAP = !!material.displacementMap; + const HAS_EMISSIVEMAP = !!material.emissiveMap; + const HAS_METALNESSMAP = !!material.metalnessMap; + const HAS_ROUGHNESSMAP = !!material.roughnessMap; + const HAS_ANISOTROPY = material.anisotropy > 0; + const HAS_CLEARCOAT = material.clearcoat > 0; + const HAS_IRIDESCENCE = material.iridescence > 0; + const HAS_SHEEN = material.sheen > 0; + const HAS_TRANSMISSION = material.transmission > 0; + const HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !!material.anisotropyMap; + const HAS_CLEARCOATMAP = HAS_CLEARCOAT && !!material.clearcoatMap; + const HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !!material.clearcoatNormalMap; + const HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !!material.clearcoatRoughnessMap; + const HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !!material.iridescenceMap; + const HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !!material.iridescenceThicknessMap; + const HAS_SHEEN_COLORMAP = HAS_SHEEN && !!material.sheenColorMap; + const HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !!material.sheenRoughnessMap; + const HAS_SPECULARMAP = !!material.specularMap; + const HAS_SPECULAR_COLORMAP = !!material.specularColorMap; + const HAS_SPECULAR_INTENSITYMAP = !!material.specularIntensityMap; + const HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !!material.transmissionMap; + const HAS_THICKNESSMAP = HAS_TRANSMISSION && !!material.thicknessMap; + const HAS_GRADIENTMAP = !!material.gradientMap; + const HAS_ALPHAMAP = !!material.alphaMap; + const HAS_ALPHATEST = material.alphaTest > 0; + const HAS_ALPHAHASH = !!material.alphaHash; + const HAS_EXTENSIONS = !!material.extensions; + let toneMapping = NoToneMapping; + if (material.toneMapped) { + if (currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true) { + toneMapping = renderer.toneMapping; + } + } + const parameters = { + shaderID, + shaderType: material.type, + shaderName: material.name, + vertexShader: vertexShader2, + fragmentShader: fragmentShader2, + defines: material.defines, + customVertexShaderID, + customFragmentShaderID, + isRawShaderMaterial: material.isRawShaderMaterial === true, + glslVersion: material.glslVersion, + precision, + batching: IS_BATCHEDMESH, + instancing: IS_INSTANCEDMESH, + instancingColor: IS_INSTANCEDMESH && object.instanceColor !== null, + instancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null, + supportsVertexTextures: SUPPORTS_VERTEX_TEXTURES, + outputColorSpace: currentRenderTarget === null ? renderer.outputColorSpace : currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace, + alphaToCoverage: !!material.alphaToCoverage, + map: HAS_MAP, + matcap: HAS_MATCAP, + envMap: HAS_ENVMAP, + envMapMode: HAS_ENVMAP && envMap.mapping, + envMapCubeUVHeight, + aoMap: HAS_AOMAP, + lightMap: HAS_LIGHTMAP, + bumpMap: HAS_BUMPMAP, + normalMap: HAS_NORMALMAP, + displacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP, + emissiveMap: HAS_EMISSIVEMAP, + normalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap, + normalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap, + metalnessMap: HAS_METALNESSMAP, + roughnessMap: HAS_ROUGHNESSMAP, + anisotropy: HAS_ANISOTROPY, + anisotropyMap: HAS_ANISOTROPYMAP, + clearcoat: HAS_CLEARCOAT, + clearcoatMap: HAS_CLEARCOATMAP, + clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP, + clearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP, + iridescence: HAS_IRIDESCENCE, + iridescenceMap: HAS_IRIDESCENCEMAP, + iridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP, + sheen: HAS_SHEEN, + sheenColorMap: HAS_SHEEN_COLORMAP, + sheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP, + specularMap: HAS_SPECULARMAP, + specularColorMap: HAS_SPECULAR_COLORMAP, + specularIntensityMap: HAS_SPECULAR_INTENSITYMAP, + transmission: HAS_TRANSMISSION, + transmissionMap: HAS_TRANSMISSIONMAP, + thicknessMap: HAS_THICKNESSMAP, + gradientMap: HAS_GRADIENTMAP, + opaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false, + alphaMap: HAS_ALPHAMAP, + alphaTest: HAS_ALPHATEST, + alphaHash: HAS_ALPHAHASH, + combine: material.combine, + // + mapUv: HAS_MAP && getChannel(material.map.channel), + aoMapUv: HAS_AOMAP && getChannel(material.aoMap.channel), + lightMapUv: HAS_LIGHTMAP && getChannel(material.lightMap.channel), + bumpMapUv: HAS_BUMPMAP && getChannel(material.bumpMap.channel), + normalMapUv: HAS_NORMALMAP && getChannel(material.normalMap.channel), + displacementMapUv: HAS_DISPLACEMENTMAP && getChannel(material.displacementMap.channel), + emissiveMapUv: HAS_EMISSIVEMAP && getChannel(material.emissiveMap.channel), + metalnessMapUv: HAS_METALNESSMAP && getChannel(material.metalnessMap.channel), + roughnessMapUv: HAS_ROUGHNESSMAP && getChannel(material.roughnessMap.channel), + anisotropyMapUv: HAS_ANISOTROPYMAP && getChannel(material.anisotropyMap.channel), + clearcoatMapUv: HAS_CLEARCOATMAP && getChannel(material.clearcoatMap.channel), + clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel(material.clearcoatNormalMap.channel), + clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel(material.clearcoatRoughnessMap.channel), + iridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel(material.iridescenceMap.channel), + iridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel(material.iridescenceThicknessMap.channel), + sheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel(material.sheenColorMap.channel), + sheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel(material.sheenRoughnessMap.channel), + specularMapUv: HAS_SPECULARMAP && getChannel(material.specularMap.channel), + specularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel(material.specularColorMap.channel), + specularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel(material.specularIntensityMap.channel), + transmissionMapUv: HAS_TRANSMISSIONMAP && getChannel(material.transmissionMap.channel), + thicknessMapUv: HAS_THICKNESSMAP && getChannel(material.thicknessMap.channel), + alphaMapUv: HAS_ALPHAMAP && getChannel(material.alphaMap.channel), + // + vertexTangents: !!geometry.attributes.tangent && (HAS_NORMALMAP || HAS_ANISOTROPY), + vertexColors: material.vertexColors, + vertexAlphas: material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4, + pointsUvs: object.isPoints === true && !!geometry.attributes.uv && (HAS_MAP || HAS_ALPHAMAP), + fog: !!fog, + useFog: material.fog === true, + fogExp2: !!fog && fog.isFogExp2, + flatShading: material.flatShading === true, + sizeAttenuation: material.sizeAttenuation === true, + logarithmicDepthBuffer, + skinning: object.isSkinnedMesh === true, + morphTargets: geometry.morphAttributes.position !== void 0, + morphNormals: geometry.morphAttributes.normal !== void 0, + morphColors: geometry.morphAttributes.color !== void 0, + morphTargetsCount, + morphTextureStride, + numDirLights: lights.directional.length, + numPointLights: lights.point.length, + numSpotLights: lights.spot.length, + numSpotLightMaps: lights.spotLightMap.length, + numRectAreaLights: lights.rectArea.length, + numHemiLights: lights.hemi.length, + numDirLightShadows: lights.directionalShadowMap.length, + numPointLightShadows: lights.pointShadowMap.length, + numSpotLightShadows: lights.spotShadowMap.length, + numSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps, + numLightProbes: lights.numLightProbes, + numClippingPlanes: clipping.numPlanes, + numClipIntersection: clipping.numIntersection, + dithering: material.dithering, + shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0, + shadowMapType: renderer.shadowMap.type, + toneMapping, + useLegacyLights: renderer._useLegacyLights, + decodeVideoTexture: HAS_MAP && material.map.isVideoTexture === true && ColorManagement.getTransfer(material.map.colorSpace) === SRGBTransfer, + premultipliedAlpha: material.premultipliedAlpha, + doubleSided: material.side === DoubleSide, + flipSided: material.side === BackSide, + useDepthPacking: material.depthPacking >= 0, + depthPacking: material.depthPacking || 0, + index0AttributeName: material.index0AttributeName, + extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has("WEBGL_clip_cull_distance"), + extensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions.has("WEBGL_multi_draw"), + rendererExtensionParallelShaderCompile: extensions.has("KHR_parallel_shader_compile"), + customProgramCacheKey: material.customProgramCacheKey() + }; + parameters.vertexUv1s = _activeChannels.has(1); + parameters.vertexUv2s = _activeChannels.has(2); + parameters.vertexUv3s = _activeChannels.has(3); + _activeChannels.clear(); + return parameters; + } + function getProgramCacheKey(parameters) { + const array = []; + if (parameters.shaderID) { + array.push(parameters.shaderID); + } else { + array.push(parameters.customVertexShaderID); + array.push(parameters.customFragmentShaderID); + } + if (parameters.defines !== void 0) { + for (const name in parameters.defines) { + array.push(name); + array.push(parameters.defines[name]); + } + } + if (parameters.isRawShaderMaterial === false) { + getProgramCacheKeyParameters(array, parameters); + getProgramCacheKeyBooleans(array, parameters); + array.push(renderer.outputColorSpace); + } + array.push(parameters.customProgramCacheKey); + return array.join(); + } + function getProgramCacheKeyParameters(array, parameters) { + array.push(parameters.precision); + array.push(parameters.outputColorSpace); + array.push(parameters.envMapMode); + array.push(parameters.envMapCubeUVHeight); + array.push(parameters.mapUv); + array.push(parameters.alphaMapUv); + array.push(parameters.lightMapUv); + array.push(parameters.aoMapUv); + array.push(parameters.bumpMapUv); + array.push(parameters.normalMapUv); + array.push(parameters.displacementMapUv); + array.push(parameters.emissiveMapUv); + array.push(parameters.metalnessMapUv); + array.push(parameters.roughnessMapUv); + array.push(parameters.anisotropyMapUv); + array.push(parameters.clearcoatMapUv); + array.push(parameters.clearcoatNormalMapUv); + array.push(parameters.clearcoatRoughnessMapUv); + array.push(parameters.iridescenceMapUv); + array.push(parameters.iridescenceThicknessMapUv); + array.push(parameters.sheenColorMapUv); + array.push(parameters.sheenRoughnessMapUv); + array.push(parameters.specularMapUv); + array.push(parameters.specularColorMapUv); + array.push(parameters.specularIntensityMapUv); + array.push(parameters.transmissionMapUv); + array.push(parameters.thicknessMapUv); + array.push(parameters.combine); + array.push(parameters.fogExp2); + array.push(parameters.sizeAttenuation); + array.push(parameters.morphTargetsCount); + array.push(parameters.morphAttributeCount); + array.push(parameters.numDirLights); + array.push(parameters.numPointLights); + array.push(parameters.numSpotLights); + array.push(parameters.numSpotLightMaps); + array.push(parameters.numHemiLights); + array.push(parameters.numRectAreaLights); + array.push(parameters.numDirLightShadows); + array.push(parameters.numPointLightShadows); + array.push(parameters.numSpotLightShadows); + array.push(parameters.numSpotLightShadowsWithMaps); + array.push(parameters.numLightProbes); + array.push(parameters.shadowMapType); + array.push(parameters.toneMapping); + array.push(parameters.numClippingPlanes); + array.push(parameters.numClipIntersection); + array.push(parameters.depthPacking); + } + function getProgramCacheKeyBooleans(array, parameters) { + _programLayers.disableAll(); + if (parameters.supportsVertexTextures) + _programLayers.enable(0); + if (parameters.instancing) + _programLayers.enable(1); + if (parameters.instancingColor) + _programLayers.enable(2); + if (parameters.instancingMorph) + _programLayers.enable(3); + if (parameters.matcap) + _programLayers.enable(4); + if (parameters.envMap) + _programLayers.enable(5); + if (parameters.normalMapObjectSpace) + _programLayers.enable(6); + if (parameters.normalMapTangentSpace) + _programLayers.enable(7); + if (parameters.clearcoat) + _programLayers.enable(8); + if (parameters.iridescence) + _programLayers.enable(9); + if (parameters.alphaTest) + _programLayers.enable(10); + if (parameters.vertexColors) + _programLayers.enable(11); + if (parameters.vertexAlphas) + _programLayers.enable(12); + if (parameters.vertexUv1s) + _programLayers.enable(13); + if (parameters.vertexUv2s) + _programLayers.enable(14); + if (parameters.vertexUv3s) + _programLayers.enable(15); + if (parameters.vertexTangents) + _programLayers.enable(16); + if (parameters.anisotropy) + _programLayers.enable(17); + if (parameters.alphaHash) + _programLayers.enable(18); + if (parameters.batching) + _programLayers.enable(19); + array.push(_programLayers.mask); + _programLayers.disableAll(); + if (parameters.fog) + _programLayers.enable(0); + if (parameters.useFog) + _programLayers.enable(1); + if (parameters.flatShading) + _programLayers.enable(2); + if (parameters.logarithmicDepthBuffer) + _programLayers.enable(3); + if (parameters.skinning) + _programLayers.enable(4); + if (parameters.morphTargets) + _programLayers.enable(5); + if (parameters.morphNormals) + _programLayers.enable(6); + if (parameters.morphColors) + _programLayers.enable(7); + if (parameters.premultipliedAlpha) + _programLayers.enable(8); + if (parameters.shadowMapEnabled) + _programLayers.enable(9); + if (parameters.useLegacyLights) + _programLayers.enable(10); + if (parameters.doubleSided) + _programLayers.enable(11); + if (parameters.flipSided) + _programLayers.enable(12); + if (parameters.useDepthPacking) + _programLayers.enable(13); + if (parameters.dithering) + _programLayers.enable(14); + if (parameters.transmission) + _programLayers.enable(15); + if (parameters.sheen) + _programLayers.enable(16); + if (parameters.opaque) + _programLayers.enable(17); + if (parameters.pointsUvs) + _programLayers.enable(18); + if (parameters.decodeVideoTexture) + _programLayers.enable(19); + if (parameters.alphaToCoverage) + _programLayers.enable(20); + array.push(_programLayers.mask); + } + function getUniforms(material) { + const shaderID = shaderIDs[material.type]; + let uniforms; + if (shaderID) { + const shader = ShaderLib[shaderID]; + uniforms = UniformsUtils.clone(shader.uniforms); + } else { + uniforms = material.uniforms; + } + return uniforms; + } + function acquireProgram(parameters, cacheKey) { + let program; + for (let p = 0, pl = programs.length; p < pl; p++) { + const preexistingProgram = programs[p]; + if (preexistingProgram.cacheKey === cacheKey) { + program = preexistingProgram; + ++program.usedTimes; + break; + } + } + if (program === void 0) { + program = new WebGLProgram(renderer, cacheKey, parameters, bindingStates); + programs.push(program); + } + return program; + } + function releaseProgram(program) { + if (--program.usedTimes === 0) { + const i = programs.indexOf(program); + programs[i] = programs[programs.length - 1]; + programs.pop(); + program.destroy(); + } + } + function releaseShaderCache(material) { + _customShaders.remove(material); + } + function dispose() { + _customShaders.dispose(); + } + return { + getParameters, + getProgramCacheKey, + getUniforms, + acquireProgram, + releaseProgram, + releaseShaderCache, + // Exposed for resource monitoring & error feedback via renderer.info: + programs, + dispose + }; +} +function WebGLProperties() { + let properties = /* @__PURE__ */ new WeakMap(); + function get(object) { + let map = properties.get(object); + if (map === void 0) { + map = {}; + properties.set(object, map); + } + return map; + } + function remove(object) { + properties.delete(object); + } + function update(object, key, value) { + properties.get(object)[key] = value; + } + function dispose() { + properties = /* @__PURE__ */ new WeakMap(); + } + return { + get, + remove, + update, + dispose + }; +} +function painterSortStable(a, b) { + if (a.groupOrder !== b.groupOrder) { + return a.groupOrder - b.groupOrder; + } else if (a.renderOrder !== b.renderOrder) { + return a.renderOrder - b.renderOrder; + } else if (a.material.id !== b.material.id) { + return a.material.id - b.material.id; + } else if (a.z !== b.z) { + return a.z - b.z; + } else { + return a.id - b.id; + } +} +function reversePainterSortStable(a, b) { + if (a.groupOrder !== b.groupOrder) { + return a.groupOrder - b.groupOrder; + } else if (a.renderOrder !== b.renderOrder) { + return a.renderOrder - b.renderOrder; + } else if (a.z !== b.z) { + return b.z - a.z; + } else { + return a.id - b.id; + } +} +function WebGLRenderList() { + const renderItems = []; + let renderItemsIndex = 0; + const opaque = []; + const transmissive = []; + const transparent = []; + function init() { + renderItemsIndex = 0; + opaque.length = 0; + transmissive.length = 0; + transparent.length = 0; + } + function getNextRenderItem(object, geometry, material, groupOrder, z, group) { + let renderItem = renderItems[renderItemsIndex]; + if (renderItem === void 0) { + renderItem = { + id: object.id, + object, + geometry, + material, + groupOrder, + renderOrder: object.renderOrder, + z, + group + }; + renderItems[renderItemsIndex] = renderItem; + } else { + renderItem.id = object.id; + renderItem.object = object; + renderItem.geometry = geometry; + renderItem.material = material; + renderItem.groupOrder = groupOrder; + renderItem.renderOrder = object.renderOrder; + renderItem.z = z; + renderItem.group = group; + } + renderItemsIndex++; + return renderItem; + } + function push(object, geometry, material, groupOrder, z, group) { + const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group); + if (material.transmission > 0) { + transmissive.push(renderItem); + } else if (material.transparent === true) { + transparent.push(renderItem); + } else { + opaque.push(renderItem); + } + } + function unshift(object, geometry, material, groupOrder, z, group) { + const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group); + if (material.transmission > 0) { + transmissive.unshift(renderItem); + } else if (material.transparent === true) { + transparent.unshift(renderItem); + } else { + opaque.unshift(renderItem); + } + } + function sort(customOpaqueSort, customTransparentSort) { + if (opaque.length > 1) opaque.sort(customOpaqueSort || painterSortStable); + if (transmissive.length > 1) transmissive.sort(customTransparentSort || reversePainterSortStable); + if (transparent.length > 1) transparent.sort(customTransparentSort || reversePainterSortStable); + } + function finish() { + for (let i = renderItemsIndex, il = renderItems.length; i < il; i++) { + const renderItem = renderItems[i]; + if (renderItem.id === null) break; + renderItem.id = null; + renderItem.object = null; + renderItem.geometry = null; + renderItem.material = null; + renderItem.group = null; + } + } + return { + opaque, + transmissive, + transparent, + init, + push, + unshift, + finish, + sort + }; +} +function WebGLRenderLists() { + let lists = /* @__PURE__ */ new WeakMap(); + function get(scene, renderCallDepth) { + const listArray = lists.get(scene); + let list; + if (listArray === void 0) { + list = new WebGLRenderList(); + lists.set(scene, [list]); + } else { + if (renderCallDepth >= listArray.length) { + list = new WebGLRenderList(); + listArray.push(list); + } else { + list = listArray[renderCallDepth]; + } + } + return list; + } + function dispose() { + lists = /* @__PURE__ */ new WeakMap(); + } + return { + get, + dispose + }; +} +function UniformsCache() { + const lights = {}; + return { + get: function(light) { + if (lights[light.id] !== void 0) { + return lights[light.id]; + } + let uniforms; + switch (light.type) { + case "DirectionalLight": + uniforms = { + direction: new Vector3(), + color: new Color() + }; + break; + case "SpotLight": + uniforms = { + position: new Vector3(), + direction: new Vector3(), + color: new Color(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0 + }; + break; + case "PointLight": + uniforms = { + position: new Vector3(), + color: new Color(), + distance: 0, + decay: 0 + }; + break; + case "HemisphereLight": + uniforms = { + direction: new Vector3(), + skyColor: new Color(), + groundColor: new Color() + }; + break; + case "RectAreaLight": + uniforms = { + color: new Color(), + position: new Vector3(), + halfWidth: new Vector3(), + halfHeight: new Vector3() + }; + break; + } + lights[light.id] = uniforms; + return uniforms; + } + }; +} +function ShadowUniformsCache() { + const lights = {}; + return { + get: function(light) { + if (lights[light.id] !== void 0) { + return lights[light.id]; + } + let uniforms; + switch (light.type) { + case "DirectionalLight": + uniforms = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + case "SpotLight": + uniforms = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + case "PointLight": + uniforms = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2(), + shadowCameraNear: 1, + shadowCameraFar: 1e3 + }; + break; + } + lights[light.id] = uniforms; + return uniforms; + } + }; +} +var nextVersion = 0; +function shadowCastingAndTexturingLightsFirst(lightA, lightB) { + return (lightB.castShadow ? 2 : 0) - (lightA.castShadow ? 2 : 0) + (lightB.map ? 1 : 0) - (lightA.map ? 1 : 0); +} +function WebGLLights(extensions) { + const cache = new UniformsCache(); + const shadowCache = ShadowUniformsCache(); + const state = { + version: 0, + hash: { + directionalLength: -1, + pointLength: -1, + spotLength: -1, + rectAreaLength: -1, + hemiLength: -1, + numDirectionalShadows: -1, + numPointShadows: -1, + numSpotShadows: -1, + numSpotMaps: -1, + numLightProbes: -1 + }, + ambient: [0, 0, 0], + probe: [], + directional: [], + directionalShadow: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotLightMap: [], + spotShadow: [], + spotShadowMap: [], + spotLightMatrix: [], + rectArea: [], + rectAreaLTC1: null, + rectAreaLTC2: null, + point: [], + pointShadow: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [], + numSpotLightShadowsWithMaps: 0, + numLightProbes: 0 + }; + for (let i = 0; i < 9; i++) state.probe.push(new Vector3()); + const vector3 = new Vector3(); + const matrix4 = new Matrix4(); + const matrix42 = new Matrix4(); + function setup(lights, useLegacyLights) { + let r = 0, g = 0, b = 0; + for (let i = 0; i < 9; i++) state.probe[i].set(0, 0, 0); + let directionalLength = 0; + let pointLength = 0; + let spotLength = 0; + let rectAreaLength = 0; + let hemiLength = 0; + let numDirectionalShadows = 0; + let numPointShadows = 0; + let numSpotShadows = 0; + let numSpotMaps = 0; + let numSpotShadowsWithMaps = 0; + let numLightProbes = 0; + lights.sort(shadowCastingAndTexturingLightsFirst); + const scaleFactor = useLegacyLights === true ? Math.PI : 1; + for (let i = 0, l = lights.length; i < l; i++) { + const light = lights[i]; + const color = light.color; + const intensity = light.intensity; + const distance = light.distance; + const shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null; + if (light.isAmbientLight) { + r += color.r * intensity * scaleFactor; + g += color.g * intensity * scaleFactor; + b += color.b * intensity * scaleFactor; + } else if (light.isLightProbe) { + for (let j = 0; j < 9; j++) { + state.probe[j].addScaledVector(light.sh.coefficients[j], intensity); + } + numLightProbes++; + } else if (light.isDirectionalLight) { + const uniforms = cache.get(light); + uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor); + if (light.castShadow) { + const shadow = light.shadow; + const shadowUniforms = shadowCache.get(light); + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + state.directionalShadow[directionalLength] = shadowUniforms; + state.directionalShadowMap[directionalLength] = shadowMap; + state.directionalShadowMatrix[directionalLength] = light.shadow.matrix; + numDirectionalShadows++; + } + state.directional[directionalLength] = uniforms; + directionalLength++; + } else if (light.isSpotLight) { + const uniforms = cache.get(light); + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.color.copy(color).multiplyScalar(intensity * scaleFactor); + uniforms.distance = distance; + uniforms.coneCos = Math.cos(light.angle); + uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra)); + uniforms.decay = light.decay; + state.spot[spotLength] = uniforms; + const shadow = light.shadow; + if (light.map) { + state.spotLightMap[numSpotMaps] = light.map; + numSpotMaps++; + shadow.updateMatrices(light); + if (light.castShadow) numSpotShadowsWithMaps++; + } + state.spotLightMatrix[spotLength] = shadow.matrix; + if (light.castShadow) { + const shadowUniforms = shadowCache.get(light); + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + state.spotShadow[spotLength] = shadowUniforms; + state.spotShadowMap[spotLength] = shadowMap; + numSpotShadows++; + } + spotLength++; + } else if (light.isRectAreaLight) { + const uniforms = cache.get(light); + uniforms.color.copy(color).multiplyScalar(intensity); + uniforms.halfWidth.set(light.width * 0.5, 0, 0); + uniforms.halfHeight.set(0, light.height * 0.5, 0); + state.rectArea[rectAreaLength] = uniforms; + rectAreaLength++; + } else if (light.isPointLight) { + const uniforms = cache.get(light); + uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor); + uniforms.distance = light.distance; + uniforms.decay = light.decay; + if (light.castShadow) { + const shadow = light.shadow; + const shadowUniforms = shadowCache.get(light); + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + shadowUniforms.shadowCameraNear = shadow.camera.near; + shadowUniforms.shadowCameraFar = shadow.camera.far; + state.pointShadow[pointLength] = shadowUniforms; + state.pointShadowMap[pointLength] = shadowMap; + state.pointShadowMatrix[pointLength] = light.shadow.matrix; + numPointShadows++; + } + state.point[pointLength] = uniforms; + pointLength++; + } else if (light.isHemisphereLight) { + const uniforms = cache.get(light); + uniforms.skyColor.copy(light.color).multiplyScalar(intensity * scaleFactor); + uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity * scaleFactor); + state.hemi[hemiLength] = uniforms; + hemiLength++; + } + } + if (rectAreaLength > 0) { + if (extensions.has("OES_texture_float_linear") === true) { + state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1; + state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2; + } else { + state.rectAreaLTC1 = UniformsLib.LTC_HALF_1; + state.rectAreaLTC2 = UniformsLib.LTC_HALF_2; + } + } + state.ambient[0] = r; + state.ambient[1] = g; + state.ambient[2] = b; + const hash = state.hash; + if (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows || hash.numSpotMaps !== numSpotMaps || hash.numLightProbes !== numLightProbes) { + state.directional.length = directionalLength; + state.spot.length = spotLength; + state.rectArea.length = rectAreaLength; + state.point.length = pointLength; + state.hemi.length = hemiLength; + state.directionalShadow.length = numDirectionalShadows; + state.directionalShadowMap.length = numDirectionalShadows; + state.pointShadow.length = numPointShadows; + state.pointShadowMap.length = numPointShadows; + state.spotShadow.length = numSpotShadows; + state.spotShadowMap.length = numSpotShadows; + state.directionalShadowMatrix.length = numDirectionalShadows; + state.pointShadowMatrix.length = numPointShadows; + state.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps; + state.spotLightMap.length = numSpotMaps; + state.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps; + state.numLightProbes = numLightProbes; + hash.directionalLength = directionalLength; + hash.pointLength = pointLength; + hash.spotLength = spotLength; + hash.rectAreaLength = rectAreaLength; + hash.hemiLength = hemiLength; + hash.numDirectionalShadows = numDirectionalShadows; + hash.numPointShadows = numPointShadows; + hash.numSpotShadows = numSpotShadows; + hash.numSpotMaps = numSpotMaps; + hash.numLightProbes = numLightProbes; + state.version = nextVersion++; + } + } + function setupView(lights, camera) { + let directionalLength = 0; + let pointLength = 0; + let spotLength = 0; + let rectAreaLength = 0; + let hemiLength = 0; + const viewMatrix = camera.matrixWorldInverse; + for (let i = 0, l = lights.length; i < l; i++) { + const light = lights[i]; + if (light.isDirectionalLight) { + const uniforms = state.directional[directionalLength]; + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + vector3.setFromMatrixPosition(light.target.matrixWorld); + uniforms.direction.sub(vector3); + uniforms.direction.transformDirection(viewMatrix); + directionalLength++; + } else if (light.isSpotLight) { + const uniforms = state.spot[spotLength]; + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + vector3.setFromMatrixPosition(light.target.matrixWorld); + uniforms.direction.sub(vector3); + uniforms.direction.transformDirection(viewMatrix); + spotLength++; + } else if (light.isRectAreaLight) { + const uniforms = state.rectArea[rectAreaLength]; + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); + matrix42.identity(); + matrix4.copy(light.matrixWorld); + matrix4.premultiply(viewMatrix); + matrix42.extractRotation(matrix4); + uniforms.halfWidth.set(light.width * 0.5, 0, 0); + uniforms.halfHeight.set(0, light.height * 0.5, 0); + uniforms.halfWidth.applyMatrix4(matrix42); + uniforms.halfHeight.applyMatrix4(matrix42); + rectAreaLength++; + } else if (light.isPointLight) { + const uniforms = state.point[pointLength]; + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); + pointLength++; + } else if (light.isHemisphereLight) { + const uniforms = state.hemi[hemiLength]; + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + uniforms.direction.transformDirection(viewMatrix); + hemiLength++; + } + } + } + return { + setup, + setupView, + state + }; +} +function WebGLRenderState(extensions) { + const lights = new WebGLLights(extensions); + const lightsArray = []; + const shadowsArray = []; + function init() { + lightsArray.length = 0; + shadowsArray.length = 0; + } + function pushLight(light) { + lightsArray.push(light); + } + function pushShadow(shadowLight) { + shadowsArray.push(shadowLight); + } + function setupLights(useLegacyLights) { + lights.setup(lightsArray, useLegacyLights); + } + function setupLightsView(camera) { + lights.setupView(lightsArray, camera); + } + const state = { + lightsArray, + shadowsArray, + lights, + transmissionRenderTarget: null + }; + return { + init, + state, + setupLights, + setupLightsView, + pushLight, + pushShadow + }; +} +function WebGLRenderStates(extensions) { + let renderStates = /* @__PURE__ */ new WeakMap(); + function get(scene, renderCallDepth = 0) { + const renderStateArray = renderStates.get(scene); + let renderState; + if (renderStateArray === void 0) { + renderState = new WebGLRenderState(extensions); + renderStates.set(scene, [renderState]); + } else { + if (renderCallDepth >= renderStateArray.length) { + renderState = new WebGLRenderState(extensions); + renderStateArray.push(renderState); + } else { + renderState = renderStateArray[renderCallDepth]; + } + } + return renderState; + } + function dispose() { + renderStates = /* @__PURE__ */ new WeakMap(); + } + return { + get, + dispose + }; +} +var MeshDepthMaterial = class extends Material { + constructor(parameters) { + super(); + this.isMeshDepthMaterial = true; + this.type = "MeshDepthMaterial"; + this.depthPacking = BasicDepthPacking; + this.map = null; + this.alphaMap = null; + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.depthPacking = source.depthPacking; + this.map = source.map; + this.alphaMap = source.alphaMap; + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + return this; + } +}; +var MeshDistanceMaterial = class extends Material { + constructor(parameters) { + super(); + this.isMeshDistanceMaterial = true; + this.type = "MeshDistanceMaterial"; + this.map = null; + this.alphaMap = null; + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.map = source.map; + this.alphaMap = source.alphaMap; + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + return this; + } +}; +var vertex = "void main() {\n gl_Position = vec4( position, 1.0 );\n}"; +var fragment = "uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n const float samples = float( VSM_SAMPLES );\n float mean = 0.0;\n float squared_mean = 0.0;\n float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n float uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n for ( float i = 0.0; i < samples; i ++ ) {\n float uvOffset = uvStart + i * uvStride;\n #ifdef HORIZONTAL_PASS\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean / samples;\n squared_mean = squared_mean / samples;\n float std_dev = sqrt( squared_mean - mean * mean );\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"; +function WebGLShadowMap(_renderer, _objects, _capabilities) { + let _frustum = new Frustum(); + const _shadowMapSize = new Vector2(), _viewportSize = new Vector2(), _viewport = new Vector4(), _depthMaterial = new MeshDepthMaterial({ depthPacking: RGBADepthPacking }), _distanceMaterial = new MeshDistanceMaterial(), _materialCache = {}, _maxTextureSize = _capabilities.maxTextureSize; + const shadowSide = { [FrontSide]: BackSide, [BackSide]: FrontSide, [DoubleSide]: DoubleSide }; + const shadowMaterialVertical = new ShaderMaterial({ + defines: { + VSM_SAMPLES: 8 + }, + uniforms: { + shadow_pass: { value: null }, + resolution: { value: new Vector2() }, + radius: { value: 4 } + }, + vertexShader: vertex, + fragmentShader: fragment + }); + const shadowMaterialHorizontal = shadowMaterialVertical.clone(); + shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1; + const fullScreenTri = new BufferGeometry(); + fullScreenTri.setAttribute( + "position", + new BufferAttribute( + new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), + 3 + ) + ); + const fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical); + const scope = this; + this.enabled = false; + this.autoUpdate = true; + this.needsUpdate = false; + this.type = PCFShadowMap; + let _previousType = this.type; + this.render = function(lights, scene, camera) { + if (scope.enabled === false) return; + if (scope.autoUpdate === false && scope.needsUpdate === false) return; + if (lights.length === 0) return; + const currentRenderTarget = _renderer.getRenderTarget(); + const activeCubeFace = _renderer.getActiveCubeFace(); + const activeMipmapLevel = _renderer.getActiveMipmapLevel(); + const _state = _renderer.state; + _state.setBlending(NoBlending); + _state.buffers.color.setClear(1, 1, 1, 1); + _state.buffers.depth.setTest(true); + _state.setScissorTest(false); + const toVSM = _previousType !== VSMShadowMap && this.type === VSMShadowMap; + const fromVSM = _previousType === VSMShadowMap && this.type !== VSMShadowMap; + for (let i = 0, il = lights.length; i < il; i++) { + const light = lights[i]; + const shadow = light.shadow; + if (shadow === void 0) { + console.warn("THREE.WebGLShadowMap:", light, "has no shadow."); + continue; + } + if (shadow.autoUpdate === false && shadow.needsUpdate === false) continue; + _shadowMapSize.copy(shadow.mapSize); + const shadowFrameExtents = shadow.getFrameExtents(); + _shadowMapSize.multiply(shadowFrameExtents); + _viewportSize.copy(shadow.mapSize); + if (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) { + if (_shadowMapSize.x > _maxTextureSize) { + _viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x); + _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x; + shadow.mapSize.x = _viewportSize.x; + } + if (_shadowMapSize.y > _maxTextureSize) { + _viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y); + _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y; + shadow.mapSize.y = _viewportSize.y; + } + } + if (shadow.map === null || toVSM === true || fromVSM === true) { + const pars = this.type !== VSMShadowMap ? { minFilter: NearestFilter, magFilter: NearestFilter } : {}; + if (shadow.map !== null) { + shadow.map.dispose(); + } + shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars); + shadow.map.texture.name = light.name + ".shadowMap"; + shadow.camera.updateProjectionMatrix(); + } + _renderer.setRenderTarget(shadow.map); + _renderer.clear(); + const viewportCount = shadow.getViewportCount(); + for (let vp = 0; vp < viewportCount; vp++) { + const viewport = shadow.getViewport(vp); + _viewport.set( + _viewportSize.x * viewport.x, + _viewportSize.y * viewport.y, + _viewportSize.x * viewport.z, + _viewportSize.y * viewport.w + ); + _state.viewport(_viewport); + shadow.updateMatrices(light, vp); + _frustum = shadow.getFrustum(); + renderObject(scene, camera, shadow.camera, light, this.type); + } + if (shadow.isPointLightShadow !== true && this.type === VSMShadowMap) { + VSMPass(shadow, camera); + } + shadow.needsUpdate = false; + } + _previousType = this.type; + scope.needsUpdate = false; + _renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel); + }; + function VSMPass(shadow, camera) { + const geometry = _objects.update(fullScreenMesh); + if (shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples) { + shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples; + shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples; + shadowMaterialVertical.needsUpdate = true; + shadowMaterialHorizontal.needsUpdate = true; + } + if (shadow.mapPass === null) { + shadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y); + } + shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture; + shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize; + shadowMaterialVertical.uniforms.radius.value = shadow.radius; + _renderer.setRenderTarget(shadow.mapPass); + _renderer.clear(); + _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null); + shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture; + shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize; + shadowMaterialHorizontal.uniforms.radius.value = shadow.radius; + _renderer.setRenderTarget(shadow.map); + _renderer.clear(); + _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null); + } + function getDepthMaterial(object, material, light, type) { + let result = null; + const customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial; + if (customMaterial !== void 0) { + result = customMaterial; + } else { + result = light.isPointLight === true ? _distanceMaterial : _depthMaterial; + if (_renderer.localClippingEnabled && material.clipShadows === true && Array.isArray(material.clippingPlanes) && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0 || material.map && material.alphaTest > 0) { + const keyA = result.uuid, keyB = material.uuid; + let materialsForVariant = _materialCache[keyA]; + if (materialsForVariant === void 0) { + materialsForVariant = {}; + _materialCache[keyA] = materialsForVariant; + } + let cachedMaterial = materialsForVariant[keyB]; + if (cachedMaterial === void 0) { + cachedMaterial = result.clone(); + materialsForVariant[keyB] = cachedMaterial; + material.addEventListener("dispose", onMaterialDispose); + } + result = cachedMaterial; + } + } + result.visible = material.visible; + result.wireframe = material.wireframe; + if (type === VSMShadowMap) { + result.side = material.shadowSide !== null ? material.shadowSide : material.side; + } else { + result.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side]; + } + result.alphaMap = material.alphaMap; + result.alphaTest = material.alphaTest; + result.map = material.map; + result.clipShadows = material.clipShadows; + result.clippingPlanes = material.clippingPlanes; + result.clipIntersection = material.clipIntersection; + result.displacementMap = material.displacementMap; + result.displacementScale = material.displacementScale; + result.displacementBias = material.displacementBias; + result.wireframeLinewidth = material.wireframeLinewidth; + result.linewidth = material.linewidth; + if (light.isPointLight === true && result.isMeshDistanceMaterial === true) { + const materialProperties = _renderer.properties.get(result); + materialProperties.light = light; + } + return result; + } + function renderObject(object, camera, shadowCamera, light, type) { + if (object.visible === false) return; + const visible = object.layers.test(camera.layers); + if (visible && (object.isMesh || object.isLine || object.isPoints)) { + if ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum.intersectsObject(object))) { + object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld); + const geometry = _objects.update(object); + const material = object.material; + if (Array.isArray(material)) { + const groups = geometry.groups; + for (let k = 0, kl = groups.length; k < kl; k++) { + const group = groups[k]; + const groupMaterial = material[group.materialIndex]; + if (groupMaterial && groupMaterial.visible) { + const depthMaterial = getDepthMaterial(object, groupMaterial, light, type); + object.onBeforeShadow(_renderer, object, camera, shadowCamera, geometry, depthMaterial, group); + _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group); + object.onAfterShadow(_renderer, object, camera, shadowCamera, geometry, depthMaterial, group); + } + } + } else if (material.visible) { + const depthMaterial = getDepthMaterial(object, material, light, type); + object.onBeforeShadow(_renderer, object, camera, shadowCamera, geometry, depthMaterial, null); + _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null); + object.onAfterShadow(_renderer, object, camera, shadowCamera, geometry, depthMaterial, null); + } + } + } + const children = object.children; + for (let i = 0, l = children.length; i < l; i++) { + renderObject(children[i], camera, shadowCamera, light, type); + } + } + function onMaterialDispose(event) { + const material = event.target; + material.removeEventListener("dispose", onMaterialDispose); + for (const id in _materialCache) { + const cache = _materialCache[id]; + const uuid = event.target.uuid; + if (uuid in cache) { + const shadowMaterial = cache[uuid]; + shadowMaterial.dispose(); + delete cache[uuid]; + } + } + } +} +function WebGLState(gl) { + function ColorBuffer() { + let locked = false; + const color = new Vector4(); + let currentColorMask = null; + const currentColorClear = new Vector4(0, 0, 0, 0); + return { + setMask: function(colorMask) { + if (currentColorMask !== colorMask && !locked) { + gl.colorMask(colorMask, colorMask, colorMask, colorMask); + currentColorMask = colorMask; + } + }, + setLocked: function(lock) { + locked = lock; + }, + setClear: function(r, g, b, a, premultipliedAlpha) { + if (premultipliedAlpha === true) { + r *= a; + g *= a; + b *= a; + } + color.set(r, g, b, a); + if (currentColorClear.equals(color) === false) { + gl.clearColor(r, g, b, a); + currentColorClear.copy(color); + } + }, + reset: function() { + locked = false; + currentColorMask = null; + currentColorClear.set(-1, 0, 0, 0); + } + }; + } + function DepthBuffer() { + let locked = false; + let currentDepthMask = null; + let currentDepthFunc = null; + let currentDepthClear = null; + return { + setTest: function(depthTest) { + if (depthTest) { + enable(gl.DEPTH_TEST); + } else { + disable(gl.DEPTH_TEST); + } + }, + setMask: function(depthMask) { + if (currentDepthMask !== depthMask && !locked) { + gl.depthMask(depthMask); + currentDepthMask = depthMask; + } + }, + setFunc: function(depthFunc) { + if (currentDepthFunc !== depthFunc) { + switch (depthFunc) { + case NeverDepth: + gl.depthFunc(gl.NEVER); + break; + case AlwaysDepth: + gl.depthFunc(gl.ALWAYS); + break; + case LessDepth: + gl.depthFunc(gl.LESS); + break; + case LessEqualDepth: + gl.depthFunc(gl.LEQUAL); + break; + case EqualDepth: + gl.depthFunc(gl.EQUAL); + break; + case GreaterEqualDepth: + gl.depthFunc(gl.GEQUAL); + break; + case GreaterDepth: + gl.depthFunc(gl.GREATER); + break; + case NotEqualDepth: + gl.depthFunc(gl.NOTEQUAL); + break; + default: + gl.depthFunc(gl.LEQUAL); + } + currentDepthFunc = depthFunc; + } + }, + setLocked: function(lock) { + locked = lock; + }, + setClear: function(depth) { + if (currentDepthClear !== depth) { + gl.clearDepth(depth); + currentDepthClear = depth; + } + }, + reset: function() { + locked = false; + currentDepthMask = null; + currentDepthFunc = null; + currentDepthClear = null; + } + }; + } + function StencilBuffer() { + let locked = false; + let currentStencilMask = null; + let currentStencilFunc = null; + let currentStencilRef = null; + let currentStencilFuncMask = null; + let currentStencilFail = null; + let currentStencilZFail = null; + let currentStencilZPass = null; + let currentStencilClear = null; + return { + setTest: function(stencilTest) { + if (!locked) { + if (stencilTest) { + enable(gl.STENCIL_TEST); + } else { + disable(gl.STENCIL_TEST); + } + } + }, + setMask: function(stencilMask) { + if (currentStencilMask !== stencilMask && !locked) { + gl.stencilMask(stencilMask); + currentStencilMask = stencilMask; + } + }, + setFunc: function(stencilFunc, stencilRef, stencilMask) { + if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) { + gl.stencilFunc(stencilFunc, stencilRef, stencilMask); + currentStencilFunc = stencilFunc; + currentStencilRef = stencilRef; + currentStencilFuncMask = stencilMask; + } + }, + setOp: function(stencilFail, stencilZFail, stencilZPass) { + if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) { + gl.stencilOp(stencilFail, stencilZFail, stencilZPass); + currentStencilFail = stencilFail; + currentStencilZFail = stencilZFail; + currentStencilZPass = stencilZPass; + } + }, + setLocked: function(lock) { + locked = lock; + }, + setClear: function(stencil) { + if (currentStencilClear !== stencil) { + gl.clearStencil(stencil); + currentStencilClear = stencil; + } + }, + reset: function() { + locked = false; + currentStencilMask = null; + currentStencilFunc = null; + currentStencilRef = null; + currentStencilFuncMask = null; + currentStencilFail = null; + currentStencilZFail = null; + currentStencilZPass = null; + currentStencilClear = null; + } + }; + } + const colorBuffer = new ColorBuffer(); + const depthBuffer = new DepthBuffer(); + const stencilBuffer = new StencilBuffer(); + const uboBindings = /* @__PURE__ */ new WeakMap(); + const uboProgramMap = /* @__PURE__ */ new WeakMap(); + let enabledCapabilities = {}; + let currentBoundFramebuffers = {}; + let currentDrawbuffers = /* @__PURE__ */ new WeakMap(); + let defaultDrawbuffers = []; + let currentProgram = null; + let currentBlendingEnabled = false; + let currentBlending = null; + let currentBlendEquation = null; + let currentBlendSrc = null; + let currentBlendDst = null; + let currentBlendEquationAlpha = null; + let currentBlendSrcAlpha = null; + let currentBlendDstAlpha = null; + let currentBlendColor = new Color(0, 0, 0); + let currentBlendAlpha = 0; + let currentPremultipledAlpha = false; + let currentFlipSided = null; + let currentCullFace = null; + let currentLineWidth = null; + let currentPolygonOffsetFactor = null; + let currentPolygonOffsetUnits = null; + const maxTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS); + let lineWidthAvailable = false; + let version = 0; + const glVersion = gl.getParameter(gl.VERSION); + if (glVersion.indexOf("WebGL") !== -1) { + version = parseFloat(/^WebGL (\d)/.exec(glVersion)[1]); + lineWidthAvailable = version >= 1; + } else if (glVersion.indexOf("OpenGL ES") !== -1) { + version = parseFloat(/^OpenGL ES (\d)/.exec(glVersion)[1]); + lineWidthAvailable = version >= 2; + } + let currentTextureSlot = null; + let currentBoundTextures = {}; + const scissorParam = gl.getParameter(gl.SCISSOR_BOX); + const viewportParam = gl.getParameter(gl.VIEWPORT); + const currentScissor = new Vector4().fromArray(scissorParam); + const currentViewport = new Vector4().fromArray(viewportParam); + function createTexture(type, target, count, dimensions) { + const data = new Uint8Array(4); + const texture = gl.createTexture(); + gl.bindTexture(type, texture); + gl.texParameteri(type, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(type, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + for (let i = 0; i < count; i++) { + if (type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY) { + gl.texImage3D(target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data); + } else { + gl.texImage2D(target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data); + } + } + return texture; + } + const emptyTextures = {}; + emptyTextures[gl.TEXTURE_2D] = createTexture(gl.TEXTURE_2D, gl.TEXTURE_2D, 1); + emptyTextures[gl.TEXTURE_CUBE_MAP] = createTexture(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6); + emptyTextures[gl.TEXTURE_2D_ARRAY] = createTexture(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1); + emptyTextures[gl.TEXTURE_3D] = createTexture(gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1); + colorBuffer.setClear(0, 0, 0, 1); + depthBuffer.setClear(1); + stencilBuffer.setClear(0); + enable(gl.DEPTH_TEST); + depthBuffer.setFunc(LessEqualDepth); + setFlipSided(false); + setCullFace(CullFaceBack); + enable(gl.CULL_FACE); + setBlending(NoBlending); + function enable(id) { + if (enabledCapabilities[id] !== true) { + gl.enable(id); + enabledCapabilities[id] = true; + } + } + function disable(id) { + if (enabledCapabilities[id] !== false) { + gl.disable(id); + enabledCapabilities[id] = false; + } + } + function bindFramebuffer(target, framebuffer) { + if (currentBoundFramebuffers[target] !== framebuffer) { + gl.bindFramebuffer(target, framebuffer); + currentBoundFramebuffers[target] = framebuffer; + if (target === gl.DRAW_FRAMEBUFFER) { + currentBoundFramebuffers[gl.FRAMEBUFFER] = framebuffer; + } + if (target === gl.FRAMEBUFFER) { + currentBoundFramebuffers[gl.DRAW_FRAMEBUFFER] = framebuffer; + } + return true; + } + return false; + } + function drawBuffers(renderTarget, framebuffer) { + let drawBuffers2 = defaultDrawbuffers; + let needsUpdate = false; + if (renderTarget) { + drawBuffers2 = currentDrawbuffers.get(framebuffer); + if (drawBuffers2 === void 0) { + drawBuffers2 = []; + currentDrawbuffers.set(framebuffer, drawBuffers2); + } + const textures = renderTarget.textures; + if (drawBuffers2.length !== textures.length || drawBuffers2[0] !== gl.COLOR_ATTACHMENT0) { + for (let i = 0, il = textures.length; i < il; i++) { + drawBuffers2[i] = gl.COLOR_ATTACHMENT0 + i; + } + drawBuffers2.length = textures.length; + needsUpdate = true; + } + } else { + if (drawBuffers2[0] !== gl.BACK) { + drawBuffers2[0] = gl.BACK; + needsUpdate = true; + } + } + if (needsUpdate) { + gl.drawBuffers(drawBuffers2); + } + } + function useProgram(program) { + if (currentProgram !== program) { + gl.useProgram(program); + currentProgram = program; + return true; + } + return false; + } + const equationToGL = { + [AddEquation]: gl.FUNC_ADD, + [SubtractEquation]: gl.FUNC_SUBTRACT, + [ReverseSubtractEquation]: gl.FUNC_REVERSE_SUBTRACT + }; + equationToGL[MinEquation] = gl.MIN; + equationToGL[MaxEquation] = gl.MAX; + const factorToGL = { + [ZeroFactor]: gl.ZERO, + [OneFactor]: gl.ONE, + [SrcColorFactor]: gl.SRC_COLOR, + [SrcAlphaFactor]: gl.SRC_ALPHA, + [SrcAlphaSaturateFactor]: gl.SRC_ALPHA_SATURATE, + [DstColorFactor]: gl.DST_COLOR, + [DstAlphaFactor]: gl.DST_ALPHA, + [OneMinusSrcColorFactor]: gl.ONE_MINUS_SRC_COLOR, + [OneMinusSrcAlphaFactor]: gl.ONE_MINUS_SRC_ALPHA, + [OneMinusDstColorFactor]: gl.ONE_MINUS_DST_COLOR, + [OneMinusDstAlphaFactor]: gl.ONE_MINUS_DST_ALPHA, + [ConstantColorFactor]: gl.CONSTANT_COLOR, + [OneMinusConstantColorFactor]: gl.ONE_MINUS_CONSTANT_COLOR, + [ConstantAlphaFactor]: gl.CONSTANT_ALPHA, + [OneMinusConstantAlphaFactor]: gl.ONE_MINUS_CONSTANT_ALPHA + }; + function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha) { + if (blending === NoBlending) { + if (currentBlendingEnabled === true) { + disable(gl.BLEND); + currentBlendingEnabled = false; + } + return; + } + if (currentBlendingEnabled === false) { + enable(gl.BLEND); + currentBlendingEnabled = true; + } + if (blending !== CustomBlending) { + if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) { + if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) { + gl.blendEquation(gl.FUNC_ADD); + currentBlendEquation = AddEquation; + currentBlendEquationAlpha = AddEquation; + } + if (premultipliedAlpha) { + switch (blending) { + case NormalBlending: + gl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + break; + case AdditiveBlending: + gl.blendFunc(gl.ONE, gl.ONE); + break; + case SubtractiveBlending: + gl.blendFuncSeparate(gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE); + break; + case MultiplyBlending: + gl.blendFuncSeparate(gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA); + break; + default: + console.error("THREE.WebGLState: Invalid blending: ", blending); + break; + } + } else { + switch (blending) { + case NormalBlending: + gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + break; + case AdditiveBlending: + gl.blendFunc(gl.SRC_ALPHA, gl.ONE); + break; + case SubtractiveBlending: + gl.blendFuncSeparate(gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE); + break; + case MultiplyBlending: + gl.blendFunc(gl.ZERO, gl.SRC_COLOR); + break; + default: + console.error("THREE.WebGLState: Invalid blending: ", blending); + break; + } + } + currentBlendSrc = null; + currentBlendDst = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + currentBlendColor.set(0, 0, 0); + currentBlendAlpha = 0; + currentBlending = blending; + currentPremultipledAlpha = premultipliedAlpha; + } + return; + } + blendEquationAlpha = blendEquationAlpha || blendEquation; + blendSrcAlpha = blendSrcAlpha || blendSrc; + blendDstAlpha = blendDstAlpha || blendDst; + if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) { + gl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]); + currentBlendEquation = blendEquation; + currentBlendEquationAlpha = blendEquationAlpha; + } + if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) { + gl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]); + currentBlendSrc = blendSrc; + currentBlendDst = blendDst; + currentBlendSrcAlpha = blendSrcAlpha; + currentBlendDstAlpha = blendDstAlpha; + } + if (blendColor.equals(currentBlendColor) === false || blendAlpha !== currentBlendAlpha) { + gl.blendColor(blendColor.r, blendColor.g, blendColor.b, blendAlpha); + currentBlendColor.copy(blendColor); + currentBlendAlpha = blendAlpha; + } + currentBlending = blending; + currentPremultipledAlpha = false; + } + function setMaterial(material, frontFaceCW) { + material.side === DoubleSide ? disable(gl.CULL_FACE) : enable(gl.CULL_FACE); + let flipSided = material.side === BackSide; + if (frontFaceCW) flipSided = !flipSided; + setFlipSided(flipSided); + material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha); + depthBuffer.setFunc(material.depthFunc); + depthBuffer.setTest(material.depthTest); + depthBuffer.setMask(material.depthWrite); + colorBuffer.setMask(material.colorWrite); + const stencilWrite = material.stencilWrite; + stencilBuffer.setTest(stencilWrite); + if (stencilWrite) { + stencilBuffer.setMask(material.stencilWriteMask); + stencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask); + stencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass); + } + setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits); + material.alphaToCoverage === true ? enable(gl.SAMPLE_ALPHA_TO_COVERAGE) : disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + } + function setFlipSided(flipSided) { + if (currentFlipSided !== flipSided) { + if (flipSided) { + gl.frontFace(gl.CW); + } else { + gl.frontFace(gl.CCW); + } + currentFlipSided = flipSided; + } + } + function setCullFace(cullFace) { + if (cullFace !== CullFaceNone) { + enable(gl.CULL_FACE); + if (cullFace !== currentCullFace) { + if (cullFace === CullFaceBack) { + gl.cullFace(gl.BACK); + } else if (cullFace === CullFaceFront) { + gl.cullFace(gl.FRONT); + } else { + gl.cullFace(gl.FRONT_AND_BACK); + } + } + } else { + disable(gl.CULL_FACE); + } + currentCullFace = cullFace; + } + function setLineWidth(width) { + if (width !== currentLineWidth) { + if (lineWidthAvailable) gl.lineWidth(width); + currentLineWidth = width; + } + } + function setPolygonOffset(polygonOffset, factor, units) { + if (polygonOffset) { + enable(gl.POLYGON_OFFSET_FILL); + if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) { + gl.polygonOffset(factor, units); + currentPolygonOffsetFactor = factor; + currentPolygonOffsetUnits = units; + } + } else { + disable(gl.POLYGON_OFFSET_FILL); + } + } + function setScissorTest(scissorTest) { + if (scissorTest) { + enable(gl.SCISSOR_TEST); + } else { + disable(gl.SCISSOR_TEST); + } + } + function activeTexture(webglSlot) { + if (webglSlot === void 0) webglSlot = gl.TEXTURE0 + maxTextures - 1; + if (currentTextureSlot !== webglSlot) { + gl.activeTexture(webglSlot); + currentTextureSlot = webglSlot; + } + } + function bindTexture(webglType, webglTexture, webglSlot) { + if (webglSlot === void 0) { + if (currentTextureSlot === null) { + webglSlot = gl.TEXTURE0 + maxTextures - 1; + } else { + webglSlot = currentTextureSlot; + } + } + let boundTexture = currentBoundTextures[webglSlot]; + if (boundTexture === void 0) { + boundTexture = { type: void 0, texture: void 0 }; + currentBoundTextures[webglSlot] = boundTexture; + } + if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) { + if (currentTextureSlot !== webglSlot) { + gl.activeTexture(webglSlot); + currentTextureSlot = webglSlot; + } + gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]); + boundTexture.type = webglType; + boundTexture.texture = webglTexture; + } + } + function unbindTexture() { + const boundTexture = currentBoundTextures[currentTextureSlot]; + if (boundTexture !== void 0 && boundTexture.type !== void 0) { + gl.bindTexture(boundTexture.type, null); + boundTexture.type = void 0; + boundTexture.texture = void 0; + } + } + function compressedTexImage2D() { + try { + gl.compressedTexImage2D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function compressedTexImage3D() { + try { + gl.compressedTexImage3D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function texSubImage2D() { + try { + gl.texSubImage2D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function texSubImage3D() { + try { + gl.texSubImage3D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function compressedTexSubImage2D() { + try { + gl.compressedTexSubImage2D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function compressedTexSubImage3D() { + try { + gl.compressedTexSubImage3D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function texStorage2D() { + try { + gl.texStorage2D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function texStorage3D() { + try { + gl.texStorage3D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function texImage2D() { + try { + gl.texImage2D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function texImage3D() { + try { + gl.texImage3D.apply(gl, arguments); + } catch (error) { + console.error("THREE.WebGLState:", error); + } + } + function scissor(scissor2) { + if (currentScissor.equals(scissor2) === false) { + gl.scissor(scissor2.x, scissor2.y, scissor2.z, scissor2.w); + currentScissor.copy(scissor2); + } + } + function viewport(viewport2) { + if (currentViewport.equals(viewport2) === false) { + gl.viewport(viewport2.x, viewport2.y, viewport2.z, viewport2.w); + currentViewport.copy(viewport2); + } + } + function updateUBOMapping(uniformsGroup, program) { + let mapping = uboProgramMap.get(program); + if (mapping === void 0) { + mapping = /* @__PURE__ */ new WeakMap(); + uboProgramMap.set(program, mapping); + } + let blockIndex = mapping.get(uniformsGroup); + if (blockIndex === void 0) { + blockIndex = gl.getUniformBlockIndex(program, uniformsGroup.name); + mapping.set(uniformsGroup, blockIndex); + } + } + function uniformBlockBinding(uniformsGroup, program) { + const mapping = uboProgramMap.get(program); + const blockIndex = mapping.get(uniformsGroup); + if (uboBindings.get(program) !== blockIndex) { + gl.uniformBlockBinding(program, blockIndex, uniformsGroup.__bindingPointIndex); + uboBindings.set(program, blockIndex); + } + } + function reset() { + gl.disable(gl.BLEND); + gl.disable(gl.CULL_FACE); + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.POLYGON_OFFSET_FILL); + gl.disable(gl.SCISSOR_TEST); + gl.disable(gl.STENCIL_TEST); + gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + gl.blendEquation(gl.FUNC_ADD); + gl.blendFunc(gl.ONE, gl.ZERO); + gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO); + gl.blendColor(0, 0, 0, 0); + gl.colorMask(true, true, true, true); + gl.clearColor(0, 0, 0, 0); + gl.depthMask(true); + gl.depthFunc(gl.LESS); + gl.clearDepth(1); + gl.stencilMask(4294967295); + gl.stencilFunc(gl.ALWAYS, 0, 4294967295); + gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP); + gl.clearStencil(0); + gl.cullFace(gl.BACK); + gl.frontFace(gl.CCW); + gl.polygonOffset(0, 0); + gl.activeTexture(gl.TEXTURE0); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null); + gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null); + gl.useProgram(null); + gl.lineWidth(1); + gl.scissor(0, 0, gl.canvas.width, gl.canvas.height); + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); + enabledCapabilities = {}; + currentTextureSlot = null; + currentBoundTextures = {}; + currentBoundFramebuffers = {}; + currentDrawbuffers = /* @__PURE__ */ new WeakMap(); + defaultDrawbuffers = []; + currentProgram = null; + currentBlendingEnabled = false; + currentBlending = null; + currentBlendEquation = null; + currentBlendSrc = null; + currentBlendDst = null; + currentBlendEquationAlpha = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + currentBlendColor = new Color(0, 0, 0); + currentBlendAlpha = 0; + currentPremultipledAlpha = false; + currentFlipSided = null; + currentCullFace = null; + currentLineWidth = null; + currentPolygonOffsetFactor = null; + currentPolygonOffsetUnits = null; + currentScissor.set(0, 0, gl.canvas.width, gl.canvas.height); + currentViewport.set(0, 0, gl.canvas.width, gl.canvas.height); + colorBuffer.reset(); + depthBuffer.reset(); + stencilBuffer.reset(); + } + return { + buffers: { + color: colorBuffer, + depth: depthBuffer, + stencil: stencilBuffer + }, + enable, + disable, + bindFramebuffer, + drawBuffers, + useProgram, + setBlending, + setMaterial, + setFlipSided, + setCullFace, + setLineWidth, + setPolygonOffset, + setScissorTest, + activeTexture, + bindTexture, + unbindTexture, + compressedTexImage2D, + compressedTexImage3D, + texImage2D, + texImage3D, + updateUBOMapping, + uniformBlockBinding, + texStorage2D, + texStorage3D, + texSubImage2D, + texSubImage3D, + compressedTexSubImage2D, + compressedTexSubImage3D, + scissor, + viewport, + reset + }; +} +function WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) { + const multisampledRTTExt = extensions.has("WEBGL_multisampled_render_to_texture") ? extensions.get("WEBGL_multisampled_render_to_texture") : null; + const supportsInvalidateFramebuffer = typeof navigator === "undefined" ? false : /OculusBrowser/g.test(navigator.userAgent); + const _imageDimensions = new Vector2(); + const _videoTextures = /* @__PURE__ */ new WeakMap(); + let _canvas2; + const _sources = /* @__PURE__ */ new WeakMap(); + let useOffscreenCanvas = false; + try { + useOffscreenCanvas = typeof OffscreenCanvas !== "undefined" && new OffscreenCanvas(1, 1).getContext("2d") !== null; + } catch (err2) { + } + function createCanvas(width, height) { + return useOffscreenCanvas ? ( + // eslint-disable-next-line compat/compat + new OffscreenCanvas(width, height) + ) : createElementNS("canvas"); + } + function resizeImage(image, needsNewCanvas, maxSize) { + let scale = 1; + const dimensions = getDimensions(image); + if (dimensions.width > maxSize || dimensions.height > maxSize) { + scale = maxSize / Math.max(dimensions.width, dimensions.height); + } + if (scale < 1) { + if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== "undefined" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== "undefined" && image instanceof ImageBitmap || typeof VideoFrame !== "undefined" && image instanceof VideoFrame) { + const width = Math.floor(scale * dimensions.width); + const height = Math.floor(scale * dimensions.height); + if (_canvas2 === void 0) _canvas2 = createCanvas(width, height); + const canvas = needsNewCanvas ? createCanvas(width, height) : _canvas2; + canvas.width = width; + canvas.height = height; + const context = canvas.getContext("2d"); + context.drawImage(image, 0, 0, width, height); + console.warn("THREE.WebGLRenderer: Texture has been resized from (" + dimensions.width + "x" + dimensions.height + ") to (" + width + "x" + height + ")."); + return canvas; + } else { + if ("data" in image) { + console.warn("THREE.WebGLRenderer: Image in DataTexture is too big (" + dimensions.width + "x" + dimensions.height + ")."); + } + return image; + } + } + return image; + } + function textureNeedsGenerateMipmaps(texture) { + return texture.generateMipmaps && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; + } + function generateMipmap(target) { + _gl.generateMipmap(target); + } + function getInternalFormat(internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false) { + if (internalFormatName !== null) { + if (_gl[internalFormatName] !== void 0) return _gl[internalFormatName]; + console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '" + internalFormatName + "'"); + } + let internalFormat = glFormat; + if (glFormat === _gl.RED) { + if (glType === _gl.FLOAT) internalFormat = _gl.R32F; + if (glType === _gl.HALF_FLOAT) internalFormat = _gl.R16F; + if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.R8; + } + if (glFormat === _gl.RED_INTEGER) { + if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.R8UI; + if (glType === _gl.UNSIGNED_SHORT) internalFormat = _gl.R16UI; + if (glType === _gl.UNSIGNED_INT) internalFormat = _gl.R32UI; + if (glType === _gl.BYTE) internalFormat = _gl.R8I; + if (glType === _gl.SHORT) internalFormat = _gl.R16I; + if (glType === _gl.INT) internalFormat = _gl.R32I; + } + if (glFormat === _gl.RG) { + if (glType === _gl.FLOAT) internalFormat = _gl.RG32F; + if (glType === _gl.HALF_FLOAT) internalFormat = _gl.RG16F; + if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RG8; + } + if (glFormat === _gl.RG_INTEGER) { + if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RG8UI; + if (glType === _gl.UNSIGNED_SHORT) internalFormat = _gl.RG16UI; + if (glType === _gl.UNSIGNED_INT) internalFormat = _gl.RG32UI; + if (glType === _gl.BYTE) internalFormat = _gl.RG8I; + if (glType === _gl.SHORT) internalFormat = _gl.RG16I; + if (glType === _gl.INT) internalFormat = _gl.RG32I; + } + if (glFormat === _gl.RGB) { + if (glType === _gl.UNSIGNED_INT_5_9_9_9_REV) internalFormat = _gl.RGB9_E5; + } + if (glFormat === _gl.RGBA) { + const transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer(colorSpace); + if (glType === _gl.FLOAT) internalFormat = _gl.RGBA32F; + if (glType === _gl.HALF_FLOAT) internalFormat = _gl.RGBA16F; + if (glType === _gl.UNSIGNED_BYTE) internalFormat = transfer === SRGBTransfer ? _gl.SRGB8_ALPHA8 : _gl.RGBA8; + if (glType === _gl.UNSIGNED_SHORT_4_4_4_4) internalFormat = _gl.RGBA4; + if (glType === _gl.UNSIGNED_SHORT_5_5_5_1) internalFormat = _gl.RGB5_A1; + } + if (internalFormat === _gl.R16F || internalFormat === _gl.R32F || internalFormat === _gl.RG16F || internalFormat === _gl.RG32F || internalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F) { + extensions.get("EXT_color_buffer_float"); + } + return internalFormat; + } + function getMipLevels(texture, image) { + if (textureNeedsGenerateMipmaps(texture) === true || texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) { + return Math.log2(Math.max(image.width, image.height)) + 1; + } else if (texture.mipmaps !== void 0 && texture.mipmaps.length > 0) { + return texture.mipmaps.length; + } else if (texture.isCompressedTexture && Array.isArray(texture.image)) { + return image.mipmaps.length; + } else { + return 1; + } + } + function onTextureDispose(event) { + const texture = event.target; + texture.removeEventListener("dispose", onTextureDispose); + deallocateTexture(texture); + if (texture.isVideoTexture) { + _videoTextures.delete(texture); + } + } + function onRenderTargetDispose(event) { + const renderTarget = event.target; + renderTarget.removeEventListener("dispose", onRenderTargetDispose); + deallocateRenderTarget(renderTarget); + } + function deallocateTexture(texture) { + const textureProperties = properties.get(texture); + if (textureProperties.__webglInit === void 0) return; + const source = texture.source; + const webglTextures = _sources.get(source); + if (webglTextures) { + const webglTexture = webglTextures[textureProperties.__cacheKey]; + webglTexture.usedTimes--; + if (webglTexture.usedTimes === 0) { + deleteTexture(texture); + } + if (Object.keys(webglTextures).length === 0) { + _sources.delete(source); + } + } + properties.remove(texture); + } + function deleteTexture(texture) { + const textureProperties = properties.get(texture); + _gl.deleteTexture(textureProperties.__webglTexture); + const source = texture.source; + const webglTextures = _sources.get(source); + delete webglTextures[textureProperties.__cacheKey]; + info.memory.textures--; + } + function deallocateRenderTarget(renderTarget) { + const renderTargetProperties = properties.get(renderTarget); + if (renderTarget.depthTexture) { + renderTarget.depthTexture.dispose(); + } + if (renderTarget.isWebGLCubeRenderTarget) { + for (let i = 0; i < 6; i++) { + if (Array.isArray(renderTargetProperties.__webglFramebuffer[i])) { + for (let level = 0; level < renderTargetProperties.__webglFramebuffer[i].length; level++) _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i][level]); + } else { + _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]); + } + if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]); + } + } else { + if (Array.isArray(renderTargetProperties.__webglFramebuffer)) { + for (let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level++) _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[level]); + } else { + _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer); + } + if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer); + if (renderTargetProperties.__webglMultisampledFramebuffer) _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer); + if (renderTargetProperties.__webglColorRenderbuffer) { + for (let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i++) { + if (renderTargetProperties.__webglColorRenderbuffer[i]) _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer[i]); + } + } + if (renderTargetProperties.__webglDepthRenderbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer); + } + const textures = renderTarget.textures; + for (let i = 0, il = textures.length; i < il; i++) { + const attachmentProperties = properties.get(textures[i]); + if (attachmentProperties.__webglTexture) { + _gl.deleteTexture(attachmentProperties.__webglTexture); + info.memory.textures--; + } + properties.remove(textures[i]); + } + properties.remove(renderTarget); + } + let textureUnits = 0; + function resetTextureUnits() { + textureUnits = 0; + } + function allocateTextureUnit() { + const textureUnit = textureUnits; + if (textureUnit >= capabilities.maxTextures) { + console.warn("THREE.WebGLTextures: Trying to use " + textureUnit + " texture units while this GPU supports only " + capabilities.maxTextures); + } + textureUnits += 1; + return textureUnit; + } + function getTextureCacheKey(texture) { + const array = []; + array.push(texture.wrapS); + array.push(texture.wrapT); + array.push(texture.wrapR || 0); + array.push(texture.magFilter); + array.push(texture.minFilter); + array.push(texture.anisotropy); + array.push(texture.internalFormat); + array.push(texture.format); + array.push(texture.type); + array.push(texture.generateMipmaps); + array.push(texture.premultiplyAlpha); + array.push(texture.flipY); + array.push(texture.unpackAlignment); + array.push(texture.colorSpace); + return array.join(); + } + function setTexture2D(texture, slot) { + const textureProperties = properties.get(texture); + if (texture.isVideoTexture) updateVideoTexture(texture); + if (texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version) { + const image = texture.image; + if (image === null) { + console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found."); + } else if (image.complete === false) { + console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete"); + } else { + uploadTexture(textureProperties, texture, slot); + return; + } + } + state.bindTexture(_gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot); + } + function setTexture2DArray(texture, slot) { + const textureProperties = properties.get(texture); + if (texture.version > 0 && textureProperties.__version !== texture.version) { + uploadTexture(textureProperties, texture, slot); + return; + } + state.bindTexture(_gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot); + } + function setTexture3D(texture, slot) { + const textureProperties = properties.get(texture); + if (texture.version > 0 && textureProperties.__version !== texture.version) { + uploadTexture(textureProperties, texture, slot); + return; + } + state.bindTexture(_gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot); + } + function setTextureCube(texture, slot) { + const textureProperties = properties.get(texture); + if (texture.version > 0 && textureProperties.__version !== texture.version) { + uploadCubeTexture(textureProperties, texture, slot); + return; + } + state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot); + } + const wrappingToGL = { + [RepeatWrapping]: _gl.REPEAT, + [ClampToEdgeWrapping]: _gl.CLAMP_TO_EDGE, + [MirroredRepeatWrapping]: _gl.MIRRORED_REPEAT + }; + const filterToGL = { + [NearestFilter]: _gl.NEAREST, + [NearestMipmapNearestFilter]: _gl.NEAREST_MIPMAP_NEAREST, + [NearestMipmapLinearFilter]: _gl.NEAREST_MIPMAP_LINEAR, + [LinearFilter]: _gl.LINEAR, + [LinearMipmapNearestFilter]: _gl.LINEAR_MIPMAP_NEAREST, + [LinearMipmapLinearFilter]: _gl.LINEAR_MIPMAP_LINEAR + }; + const compareToGL = { + [NeverCompare]: _gl.NEVER, + [AlwaysCompare]: _gl.ALWAYS, + [LessCompare]: _gl.LESS, + [LessEqualCompare]: _gl.LEQUAL, + [EqualCompare]: _gl.EQUAL, + [GreaterEqualCompare]: _gl.GEQUAL, + [GreaterCompare]: _gl.GREATER, + [NotEqualCompare]: _gl.NOTEQUAL + }; + function setTextureParameters(textureType, texture) { + if (texture.type === FloatType && extensions.has("OES_texture_float_linear") === false && (texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter || texture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter)) { + console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."); + } + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[texture.wrapS]); + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[texture.wrapT]); + if (textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY) { + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[texture.wrapR]); + } + _gl.texParameteri(textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[texture.magFilter]); + _gl.texParameteri(textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[texture.minFilter]); + if (texture.compareFunction) { + _gl.texParameteri(textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE); + _gl.texParameteri(textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[texture.compareFunction]); + } + if (extensions.has("EXT_texture_filter_anisotropic") === true) { + if (texture.magFilter === NearestFilter) return; + if (texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter) return; + if (texture.type === FloatType && extensions.has("OES_texture_float_linear") === false) return; + if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) { + const extension = extensions.get("EXT_texture_filter_anisotropic"); + _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy())); + properties.get(texture).__currentAnisotropy = texture.anisotropy; + } + } + } + function initTexture(textureProperties, texture) { + let forceUpload = false; + if (textureProperties.__webglInit === void 0) { + textureProperties.__webglInit = true; + texture.addEventListener("dispose", onTextureDispose); + } + const source = texture.source; + let webglTextures = _sources.get(source); + if (webglTextures === void 0) { + webglTextures = {}; + _sources.set(source, webglTextures); + } + const textureCacheKey = getTextureCacheKey(texture); + if (textureCacheKey !== textureProperties.__cacheKey) { + if (webglTextures[textureCacheKey] === void 0) { + webglTextures[textureCacheKey] = { + texture: _gl.createTexture(), + usedTimes: 0 + }; + info.memory.textures++; + forceUpload = true; + } + webglTextures[textureCacheKey].usedTimes++; + const webglTexture = webglTextures[textureProperties.__cacheKey]; + if (webglTexture !== void 0) { + webglTextures[textureProperties.__cacheKey].usedTimes--; + if (webglTexture.usedTimes === 0) { + deleteTexture(texture); + } + } + textureProperties.__cacheKey = textureCacheKey; + textureProperties.__webglTexture = webglTextures[textureCacheKey].texture; + } + return forceUpload; + } + function uploadTexture(textureProperties, texture, slot) { + let textureType = _gl.TEXTURE_2D; + if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) textureType = _gl.TEXTURE_2D_ARRAY; + if (texture.isData3DTexture) textureType = _gl.TEXTURE_3D; + const forceUpload = initTexture(textureProperties, texture); + const source = texture.source; + state.bindTexture(textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot); + const sourceProperties = properties.get(source); + if (source.version !== sourceProperties.__version || forceUpload === true) { + state.activeTexture(_gl.TEXTURE0 + slot); + const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace); + const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries(texture.colorSpace); + const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL; + _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY); + _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha); + _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment); + _gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion); + let image = resizeImage(texture.image, false, capabilities.maxTextureSize); + image = verifyColorSpace(texture, image); + const glFormat = utils.convert(texture.format, texture.colorSpace); + const glType = utils.convert(texture.type); + let glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture); + setTextureParameters(textureType, texture); + let mipmap; + const mipmaps = texture.mipmaps; + const useTexStorage = texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format; + const allocateMemory = sourceProperties.__version === void 0 || forceUpload === true; + const dataReady = source.dataReady; + const levels = getMipLevels(texture, image); + if (texture.isDepthTexture) { + glInternalFormat = _gl.DEPTH_COMPONENT16; + if (texture.type === FloatType) { + glInternalFormat = _gl.DEPTH_COMPONENT32F; + } else if (texture.type === UnsignedIntType) { + glInternalFormat = _gl.DEPTH_COMPONENT24; + } else if (texture.type === UnsignedInt248Type) { + glInternalFormat = _gl.DEPTH24_STENCIL8; + } + if (allocateMemory) { + if (useTexStorage) { + state.texStorage2D(_gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height); + } else { + state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null); + } + } + } else if (texture.isDataTexture) { + if (mipmaps.length > 0) { + if (useTexStorage && allocateMemory) { + state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height); + } + for (let i = 0, il = mipmaps.length; i < il; i++) { + mipmap = mipmaps[i]; + if (useTexStorage) { + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data); + } + } else { + state.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); + } + } + texture.generateMipmaps = false; + } else { + if (useTexStorage) { + if (allocateMemory) { + state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height); + } + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data); + } + } else { + state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data); + } + } + } else if (texture.isCompressedTexture) { + if (texture.isCompressedArrayTexture) { + if (useTexStorage && allocateMemory) { + state.texStorage3D(_gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height, image.depth); + } + for (let i = 0, il = mipmaps.length; i < il; i++) { + mipmap = mipmaps[i]; + if (texture.format !== RGBAFormat) { + if (glFormat !== null) { + if (useTexStorage) { + if (dataReady) { + state.compressedTexSubImage3D(_gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0); + } + } else { + state.compressedTexImage3D(_gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0); + } + } else { + console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"); + } + } else { + if (useTexStorage) { + if (dataReady) { + state.texSubImage3D(_gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data); + } + } else { + state.texImage3D(_gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data); + } + } + } + } else { + if (useTexStorage && allocateMemory) { + state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height); + } + for (let i = 0, il = mipmaps.length; i < il; i++) { + mipmap = mipmaps[i]; + if (texture.format !== RGBAFormat) { + if (glFormat !== null) { + if (useTexStorage) { + if (dataReady) { + state.compressedTexSubImage2D(_gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data); + } + } else { + state.compressedTexImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data); + } + } else { + console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"); + } + } else { + if (useTexStorage) { + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data); + } + } else { + state.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); + } + } + } + } + } else if (texture.isDataArrayTexture) { + if (useTexStorage) { + if (allocateMemory) { + state.texStorage3D(_gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth); + } + if (dataReady) { + state.texSubImage3D(_gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data); + } + } else { + state.texImage3D(_gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data); + } + } else if (texture.isData3DTexture) { + if (useTexStorage) { + if (allocateMemory) { + state.texStorage3D(_gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth); + } + if (dataReady) { + state.texSubImage3D(_gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data); + } + } else { + state.texImage3D(_gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data); + } + } else if (texture.isFramebufferTexture) { + if (allocateMemory) { + if (useTexStorage) { + state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height); + } else { + let width = image.width, height = image.height; + for (let i = 0; i < levels; i++) { + state.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null); + width >>= 1; + height >>= 1; + } + } + } + } else { + if (mipmaps.length > 0) { + if (useTexStorage && allocateMemory) { + const dimensions = getDimensions(mipmaps[0]); + state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height); + } + for (let i = 0, il = mipmaps.length; i < il; i++) { + mipmap = mipmaps[i]; + if (useTexStorage) { + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap); + } + } else { + state.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap); + } + } + texture.generateMipmaps = false; + } else { + if (useTexStorage) { + if (allocateMemory) { + const dimensions = getDimensions(image); + state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height); + } + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image); + } + } else { + state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image); + } + } + } + if (textureNeedsGenerateMipmaps(texture)) { + generateMipmap(textureType); + } + sourceProperties.__version = source.version; + if (texture.onUpdate) texture.onUpdate(texture); + } + textureProperties.__version = texture.version; + } + function uploadCubeTexture(textureProperties, texture, slot) { + if (texture.image.length !== 6) return; + const forceUpload = initTexture(textureProperties, texture); + const source = texture.source; + state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot); + const sourceProperties = properties.get(source); + if (source.version !== sourceProperties.__version || forceUpload === true) { + state.activeTexture(_gl.TEXTURE0 + slot); + const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace); + const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries(texture.colorSpace); + const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL; + _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY); + _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha); + _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment); + _gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion); + const isCompressed = texture.isCompressedTexture || texture.image[0].isCompressedTexture; + const isDataTexture = texture.image[0] && texture.image[0].isDataTexture; + const cubeImage = []; + for (let i = 0; i < 6; i++) { + if (!isCompressed && !isDataTexture) { + cubeImage[i] = resizeImage(texture.image[i], true, capabilities.maxCubemapSize); + } else { + cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i]; + } + cubeImage[i] = verifyColorSpace(texture, cubeImage[i]); + } + const image = cubeImage[0], glFormat = utils.convert(texture.format, texture.colorSpace), glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace); + const useTexStorage = texture.isVideoTexture !== true; + const allocateMemory = sourceProperties.__version === void 0 || forceUpload === true; + const dataReady = source.dataReady; + let levels = getMipLevels(texture, image); + setTextureParameters(_gl.TEXTURE_CUBE_MAP, texture); + let mipmaps; + if (isCompressed) { + if (useTexStorage && allocateMemory) { + state.texStorage2D(_gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height); + } + for (let i = 0; i < 6; i++) { + mipmaps = cubeImage[i].mipmaps; + for (let j = 0; j < mipmaps.length; j++) { + const mipmap = mipmaps[j]; + if (texture.format !== RGBAFormat) { + if (glFormat !== null) { + if (useTexStorage) { + if (dataReady) { + state.compressedTexSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data); + } + } else { + state.compressedTexImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data); + } + } else { + console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"); + } + } else { + if (useTexStorage) { + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data); + } + } else { + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); + } + } + } + } + } else { + mipmaps = texture.mipmaps; + if (useTexStorage && allocateMemory) { + if (mipmaps.length > 0) levels++; + const dimensions = getDimensions(cubeImage[0]); + state.texStorage2D(_gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.height); + } + for (let i = 0; i < 6; i++) { + if (isDataTexture) { + if (useTexStorage) { + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[i].width, cubeImage[i].height, glFormat, glType, cubeImage[i].data); + } + } else { + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data); + } + for (let j = 0; j < mipmaps.length; j++) { + const mipmap = mipmaps[j]; + const mipmapImage = mipmap.image[i].image; + if (useTexStorage) { + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data); + } + } else { + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data); + } + } + } else { + if (useTexStorage) { + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[i]); + } + } else { + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]); + } + for (let j = 0; j < mipmaps.length; j++) { + const mipmap = mipmaps[j]; + if (useTexStorage) { + if (dataReady) { + state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[i]); + } + } else { + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[i]); + } + } + } + } + } + if (textureNeedsGenerateMipmaps(texture)) { + generateMipmap(_gl.TEXTURE_CUBE_MAP); + } + sourceProperties.__version = source.version; + if (texture.onUpdate) texture.onUpdate(texture); + } + textureProperties.__version = texture.version; + } + function setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget, level) { + const glFormat = utils.convert(texture.format, texture.colorSpace); + const glType = utils.convert(texture.type); + const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace); + const renderTargetProperties = properties.get(renderTarget); + if (!renderTargetProperties.__hasExternalTextures) { + const width = Math.max(1, renderTarget.width >> level); + const height = Math.max(1, renderTarget.height >> level); + if (textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY) { + state.texImage3D(textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null); + } else { + state.texImage2D(textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null); + } + } + state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + if (useMultisampledRTT(renderTarget)) { + multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, attachment, textureTarget, properties.get(texture).__webglTexture, 0, getRenderTargetSamples(renderTarget)); + } else if (textureTarget === _gl.TEXTURE_2D || textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z) { + _gl.framebufferTexture2D(_gl.FRAMEBUFFER, attachment, textureTarget, properties.get(texture).__webglTexture, level); + } + state.bindFramebuffer(_gl.FRAMEBUFFER, null); + } + function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) { + _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderbuffer); + if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) { + let glInternalFormat = _gl.DEPTH_COMPONENT24; + if (isMultisample || useMultisampledRTT(renderTarget)) { + const depthTexture = renderTarget.depthTexture; + if (depthTexture && depthTexture.isDepthTexture) { + if (depthTexture.type === FloatType) { + glInternalFormat = _gl.DEPTH_COMPONENT32F; + } else if (depthTexture.type === UnsignedIntType) { + glInternalFormat = _gl.DEPTH_COMPONENT24; + } + } + const samples = getRenderTargetSamples(renderTarget); + if (useMultisampledRTT(renderTarget)) { + multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height); + } else { + _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height); + } + } else { + _gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height); + } + _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer); + } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) { + const samples = getRenderTargetSamples(renderTarget); + if (isMultisample && useMultisampledRTT(renderTarget) === false) { + _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height); + } else if (useMultisampledRTT(renderTarget)) { + multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height); + } else { + _gl.renderbufferStorage(_gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height); + } + _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer); + } else { + const textures = renderTarget.textures; + for (let i = 0; i < textures.length; i++) { + const texture = textures[i]; + const glFormat = utils.convert(texture.format, texture.colorSpace); + const glType = utils.convert(texture.type); + const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace); + const samples = getRenderTargetSamples(renderTarget); + if (isMultisample && useMultisampledRTT(renderTarget) === false) { + _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height); + } else if (useMultisampledRTT(renderTarget)) { + multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height); + } else { + _gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height); + } + } + } + _gl.bindRenderbuffer(_gl.RENDERBUFFER, null); + } + function setupDepthTexture(framebuffer, renderTarget) { + const isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget; + if (isCube) throw new Error("Depth Texture with cube render targets is not supported"); + state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) { + throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture"); + } + if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) { + renderTarget.depthTexture.image.width = renderTarget.width; + renderTarget.depthTexture.image.height = renderTarget.height; + renderTarget.depthTexture.needsUpdate = true; + } + setTexture2D(renderTarget.depthTexture, 0); + const webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture; + const samples = getRenderTargetSamples(renderTarget); + if (renderTarget.depthTexture.format === DepthFormat) { + if (useMultisampledRTT(renderTarget)) { + multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples); + } else { + _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0); + } + } else if (renderTarget.depthTexture.format === DepthStencilFormat) { + if (useMultisampledRTT(renderTarget)) { + multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples); + } else { + _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0); + } + } else { + throw new Error("Unknown depthTexture format"); + } + } + function setupDepthRenderbuffer(renderTarget) { + const renderTargetProperties = properties.get(renderTarget); + const isCube = renderTarget.isWebGLCubeRenderTarget === true; + if (renderTarget.depthTexture && !renderTargetProperties.__autoAllocateDepthBuffer) { + if (isCube) throw new Error("target.depthTexture not supported in Cube render targets"); + setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget); + } else { + if (isCube) { + renderTargetProperties.__webglDepthbuffer = []; + for (let i = 0; i < 6; i++) { + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[i]); + renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer(); + setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget, false); + } + } else { + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer); + renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false); + } + } + state.bindFramebuffer(_gl.FRAMEBUFFER, null); + } + function rebindTextures(renderTarget, colorTexture, depthTexture) { + const renderTargetProperties = properties.get(renderTarget); + if (colorTexture !== void 0) { + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0); + } + if (depthTexture !== void 0) { + setupDepthRenderbuffer(renderTarget); + } + } + function setupRenderTarget(renderTarget) { + const texture = renderTarget.texture; + const renderTargetProperties = properties.get(renderTarget); + const textureProperties = properties.get(texture); + renderTarget.addEventListener("dispose", onRenderTargetDispose); + const textures = renderTarget.textures; + const isCube = renderTarget.isWebGLCubeRenderTarget === true; + const isMultipleRenderTargets = textures.length > 1; + if (!isMultipleRenderTargets) { + if (textureProperties.__webglTexture === void 0) { + textureProperties.__webglTexture = _gl.createTexture(); + } + textureProperties.__version = texture.version; + info.memory.textures++; + } + if (isCube) { + renderTargetProperties.__webglFramebuffer = []; + for (let i = 0; i < 6; i++) { + if (texture.mipmaps && texture.mipmaps.length > 0) { + renderTargetProperties.__webglFramebuffer[i] = []; + for (let level = 0; level < texture.mipmaps.length; level++) { + renderTargetProperties.__webglFramebuffer[i][level] = _gl.createFramebuffer(); + } + } else { + renderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer(); + } + } + } else { + if (texture.mipmaps && texture.mipmaps.length > 0) { + renderTargetProperties.__webglFramebuffer = []; + for (let level = 0; level < texture.mipmaps.length; level++) { + renderTargetProperties.__webglFramebuffer[level] = _gl.createFramebuffer(); + } + } else { + renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); + } + if (isMultipleRenderTargets) { + for (let i = 0, il = textures.length; i < il; i++) { + const attachmentProperties = properties.get(textures[i]); + if (attachmentProperties.__webglTexture === void 0) { + attachmentProperties.__webglTexture = _gl.createTexture(); + info.memory.textures++; + } + } + } + if (renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) { + renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer(); + renderTargetProperties.__webglColorRenderbuffer = []; + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer); + for (let i = 0; i < textures.length; i++) { + const texture2 = textures[i]; + renderTargetProperties.__webglColorRenderbuffer[i] = _gl.createRenderbuffer(); + _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i]); + const glFormat = utils.convert(texture2.format, texture2.colorSpace); + const glType = utils.convert(texture2.type); + const glInternalFormat = getInternalFormat(texture2.internalFormat, glFormat, glType, texture2.colorSpace, renderTarget.isXRRenderTarget === true); + const samples = getRenderTargetSamples(renderTarget); + _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height); + _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i]); + } + _gl.bindRenderbuffer(_gl.RENDERBUFFER, null); + if (renderTarget.depthBuffer) { + renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true); + } + state.bindFramebuffer(_gl.FRAMEBUFFER, null); + } + } + if (isCube) { + state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture); + setTextureParameters(_gl.TEXTURE_CUBE_MAP, texture); + for (let i = 0; i < 6; i++) { + if (texture.mipmaps && texture.mipmaps.length > 0) { + for (let level = 0; level < texture.mipmaps.length; level++) { + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i][level], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level); + } + } else { + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0); + } + } + if (textureNeedsGenerateMipmaps(texture)) { + generateMipmap(_gl.TEXTURE_CUBE_MAP); + } + state.unbindTexture(); + } else if (isMultipleRenderTargets) { + for (let i = 0, il = textures.length; i < il; i++) { + const attachment = textures[i]; + const attachmentProperties = properties.get(attachment); + state.bindTexture(_gl.TEXTURE_2D, attachmentProperties.__webglTexture); + setTextureParameters(_gl.TEXTURE_2D, attachment); + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0); + if (textureNeedsGenerateMipmaps(attachment)) { + generateMipmap(_gl.TEXTURE_2D); + } + } + state.unbindTexture(); + } else { + let glTextureType = _gl.TEXTURE_2D; + if (renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget) { + glTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY; + } + state.bindTexture(glTextureType, textureProperties.__webglTexture); + setTextureParameters(glTextureType, texture); + if (texture.mipmaps && texture.mipmaps.length > 0) { + for (let level = 0; level < texture.mipmaps.length; level++) { + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[level], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level); + } + } else { + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0); + } + if (textureNeedsGenerateMipmaps(texture)) { + generateMipmap(glTextureType); + } + state.unbindTexture(); + } + if (renderTarget.depthBuffer) { + setupDepthRenderbuffer(renderTarget); + } + } + function updateRenderTargetMipmap(renderTarget) { + const textures = renderTarget.textures; + for (let i = 0, il = textures.length; i < il; i++) { + const texture = textures[i]; + if (textureNeedsGenerateMipmaps(texture)) { + const target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D; + const webglTexture = properties.get(texture).__webglTexture; + state.bindTexture(target, webglTexture); + generateMipmap(target); + state.unbindTexture(); + } + } + } + function updateMultisampleRenderTarget(renderTarget) { + if (renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) { + const textures = renderTarget.textures; + const width = renderTarget.width; + const height = renderTarget.height; + let mask = _gl.COLOR_BUFFER_BIT; + const invalidationArray = []; + const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT; + const renderTargetProperties = properties.get(renderTarget); + const isMultipleRenderTargets = textures.length > 1; + if (isMultipleRenderTargets) { + for (let i = 0; i < textures.length; i++) { + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer); + _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null); + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer); + _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0); + } + } + state.bindFramebuffer(_gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer); + state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer); + for (let i = 0; i < textures.length; i++) { + invalidationArray.push(_gl.COLOR_ATTACHMENT0 + i); + if (renderTarget.depthBuffer) { + invalidationArray.push(depthStyle); + } + const ignoreDepthValues = renderTargetProperties.__ignoreDepthValues !== void 0 ? renderTargetProperties.__ignoreDepthValues : false; + if (ignoreDepthValues === false) { + if (renderTarget.depthBuffer) mask |= _gl.DEPTH_BUFFER_BIT; + if (renderTarget.stencilBuffer && renderTargetProperties.__isTransmissionRenderTarget !== true) mask |= _gl.STENCIL_BUFFER_BIT; + } + if (isMultipleRenderTargets) { + _gl.framebufferRenderbuffer(_gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i]); + } + if (ignoreDepthValues === true) { + _gl.invalidateFramebuffer(_gl.READ_FRAMEBUFFER, [depthStyle]); + _gl.invalidateFramebuffer(_gl.DRAW_FRAMEBUFFER, [depthStyle]); + } + if (isMultipleRenderTargets) { + const webglTexture = properties.get(textures[i]).__webglTexture; + _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0); + } + _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST); + if (supportsInvalidateFramebuffer) { + _gl.invalidateFramebuffer(_gl.READ_FRAMEBUFFER, invalidationArray); + } + } + state.bindFramebuffer(_gl.READ_FRAMEBUFFER, null); + state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, null); + if (isMultipleRenderTargets) { + for (let i = 0; i < textures.length; i++) { + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer); + _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i]); + const webglTexture = properties.get(textures[i]).__webglTexture; + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer); + _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0); + } + } + state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer); + } + } + function getRenderTargetSamples(renderTarget) { + return Math.min(capabilities.maxSamples, renderTarget.samples); + } + function useMultisampledRTT(renderTarget) { + const renderTargetProperties = properties.get(renderTarget); + return renderTarget.samples > 0 && extensions.has("WEBGL_multisampled_render_to_texture") === true && renderTargetProperties.__useRenderToTexture !== false; + } + function updateVideoTexture(texture) { + const frame = info.render.frame; + if (_videoTextures.get(texture) !== frame) { + _videoTextures.set(texture, frame); + texture.update(); + } + } + function verifyColorSpace(texture, image) { + const colorSpace = texture.colorSpace; + const format = texture.format; + const type = texture.type; + if (texture.isCompressedTexture === true || texture.isVideoTexture === true) return image; + if (colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace) { + if (ColorManagement.getTransfer(colorSpace) === SRGBTransfer) { + if (format !== RGBAFormat || type !== UnsignedByteType) { + console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."); + } + } else { + console.error("THREE.WebGLTextures: Unsupported texture color space:", colorSpace); + } + } + return image; + } + function getDimensions(image) { + if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement) { + _imageDimensions.width = image.naturalWidth || image.width; + _imageDimensions.height = image.naturalHeight || image.height; + } else if (typeof VideoFrame !== "undefined" && image instanceof VideoFrame) { + _imageDimensions.width = image.displayWidth; + _imageDimensions.height = image.displayHeight; + } else { + _imageDimensions.width = image.width; + _imageDimensions.height = image.height; + } + return _imageDimensions; + } + this.allocateTextureUnit = allocateTextureUnit; + this.resetTextureUnits = resetTextureUnits; + this.setTexture2D = setTexture2D; + this.setTexture2DArray = setTexture2DArray; + this.setTexture3D = setTexture3D; + this.setTextureCube = setTextureCube; + this.rebindTextures = rebindTextures; + this.setupRenderTarget = setupRenderTarget; + this.updateRenderTargetMipmap = updateRenderTargetMipmap; + this.updateMultisampleRenderTarget = updateMultisampleRenderTarget; + this.setupDepthRenderbuffer = setupDepthRenderbuffer; + this.setupFrameBufferTexture = setupFrameBufferTexture; + this.useMultisampledRTT = useMultisampledRTT; +} +function WebGLUtils(gl, extensions) { + function convert(p, colorSpace = NoColorSpace) { + let extension; + const transfer = ColorManagement.getTransfer(colorSpace); + if (p === UnsignedByteType) return gl.UNSIGNED_BYTE; + if (p === UnsignedShort4444Type) return gl.UNSIGNED_SHORT_4_4_4_4; + if (p === UnsignedShort5551Type) return gl.UNSIGNED_SHORT_5_5_5_1; + if (p === UnsignedInt5999Type) return gl.UNSIGNED_INT_5_9_9_9_REV; + if (p === ByteType) return gl.BYTE; + if (p === ShortType) return gl.SHORT; + if (p === UnsignedShortType) return gl.UNSIGNED_SHORT; + if (p === IntType) return gl.INT; + if (p === UnsignedIntType) return gl.UNSIGNED_INT; + if (p === FloatType) return gl.FLOAT; + if (p === HalfFloatType) return gl.HALF_FLOAT; + if (p === AlphaFormat) return gl.ALPHA; + if (p === RGBFormat) return gl.RGB; + if (p === RGBAFormat) return gl.RGBA; + if (p === LuminanceFormat) return gl.LUMINANCE; + if (p === LuminanceAlphaFormat) return gl.LUMINANCE_ALPHA; + if (p === DepthFormat) return gl.DEPTH_COMPONENT; + if (p === DepthStencilFormat) return gl.DEPTH_STENCIL; + if (p === RedFormat) return gl.RED; + if (p === RedIntegerFormat) return gl.RED_INTEGER; + if (p === RGFormat) return gl.RG; + if (p === RGIntegerFormat) return gl.RG_INTEGER; + if (p === RGBAIntegerFormat) return gl.RGBA_INTEGER; + if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) { + if (transfer === SRGBTransfer) { + extension = extensions.get("WEBGL_compressed_texture_s3tc_srgb"); + if (extension !== null) { + if (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT; + if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; + if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; + if (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; + } else { + return null; + } + } else { + extension = extensions.get("WEBGL_compressed_texture_s3tc"); + if (extension !== null) { + if (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; + if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; + } else { + return null; + } + } + } + if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) { + extension = extensions.get("WEBGL_compressed_texture_pvrtc"); + if (extension !== null) { + if (p === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if (p === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if (p === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if (p === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + } else { + return null; + } + } + if (p === RGB_ETC1_Format) { + extension = extensions.get("WEBGL_compressed_texture_etc1"); + if (extension !== null) { + return extension.COMPRESSED_RGB_ETC1_WEBGL; + } else { + return null; + } + } + if (p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format) { + extension = extensions.get("WEBGL_compressed_texture_etc"); + if (extension !== null) { + if (p === RGB_ETC2_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2; + if (p === RGBA_ETC2_EAC_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC; + } else { + return null; + } + } + if (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format) { + extension = extensions.get("WEBGL_compressed_texture_astc"); + if (extension !== null) { + if (p === RGBA_ASTC_4x4_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR; + if (p === RGBA_ASTC_5x4_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR; + if (p === RGBA_ASTC_5x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR; + if (p === RGBA_ASTC_6x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR; + if (p === RGBA_ASTC_6x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR; + if (p === RGBA_ASTC_8x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR; + if (p === RGBA_ASTC_8x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR; + if (p === RGBA_ASTC_8x8_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR; + if (p === RGBA_ASTC_10x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR; + if (p === RGBA_ASTC_10x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR; + if (p === RGBA_ASTC_10x8_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR; + if (p === RGBA_ASTC_10x10_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR; + if (p === RGBA_ASTC_12x10_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR; + if (p === RGBA_ASTC_12x12_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR; + } else { + return null; + } + } + if (p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format) { + extension = extensions.get("EXT_texture_compression_bptc"); + if (extension !== null) { + if (p === RGBA_BPTC_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT; + if (p === RGB_BPTC_SIGNED_Format) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; + if (p === RGB_BPTC_UNSIGNED_Format) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT; + } else { + return null; + } + } + if (p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format) { + extension = extensions.get("EXT_texture_compression_rgtc"); + if (extension !== null) { + if (p === RGBA_BPTC_Format) return extension.COMPRESSED_RED_RGTC1_EXT; + if (p === SIGNED_RED_RGTC1_Format) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT; + if (p === RED_GREEN_RGTC2_Format) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT; + if (p === SIGNED_RED_GREEN_RGTC2_Format) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT; + } else { + return null; + } + } + if (p === UnsignedInt248Type) return gl.UNSIGNED_INT_24_8; + return gl[p] !== void 0 ? gl[p] : null; + } + return { convert }; +} +var ArrayCamera = class extends PerspectiveCamera { + constructor(array = []) { + super(); + this.isArrayCamera = true; + this.cameras = array; + } +}; +var Group = class extends Object3D { + constructor() { + super(); + this.isGroup = true; + this.type = "Group"; + } +}; +var _moveEvent = { type: "move" }; +var WebXRController = class { + constructor() { + this._targetRay = null; + this._grip = null; + this._hand = null; + } + getHandSpace() { + if (this._hand === null) { + this._hand = new Group(); + this._hand.matrixAutoUpdate = false; + this._hand.visible = false; + this._hand.joints = {}; + this._hand.inputState = { pinching: false }; + } + return this._hand; + } + getTargetRaySpace() { + if (this._targetRay === null) { + this._targetRay = new Group(); + this._targetRay.matrixAutoUpdate = false; + this._targetRay.visible = false; + this._targetRay.hasLinearVelocity = false; + this._targetRay.linearVelocity = new Vector3(); + this._targetRay.hasAngularVelocity = false; + this._targetRay.angularVelocity = new Vector3(); + } + return this._targetRay; + } + getGripSpace() { + if (this._grip === null) { + this._grip = new Group(); + this._grip.matrixAutoUpdate = false; + this._grip.visible = false; + this._grip.hasLinearVelocity = false; + this._grip.linearVelocity = new Vector3(); + this._grip.hasAngularVelocity = false; + this._grip.angularVelocity = new Vector3(); + } + return this._grip; + } + dispatchEvent(event) { + if (this._targetRay !== null) { + this._targetRay.dispatchEvent(event); + } + if (this._grip !== null) { + this._grip.dispatchEvent(event); + } + if (this._hand !== null) { + this._hand.dispatchEvent(event); + } + return this; + } + connect(inputSource) { + if (inputSource && inputSource.hand) { + const hand = this._hand; + if (hand) { + for (const inputjoint of inputSource.hand.values()) { + this._getHandJoint(hand, inputjoint); + } + } + } + this.dispatchEvent({ type: "connected", data: inputSource }); + return this; + } + disconnect(inputSource) { + this.dispatchEvent({ type: "disconnected", data: inputSource }); + if (this._targetRay !== null) { + this._targetRay.visible = false; + } + if (this._grip !== null) { + this._grip.visible = false; + } + if (this._hand !== null) { + this._hand.visible = false; + } + return this; + } + update(inputSource, frame, referenceSpace) { + let inputPose = null; + let gripPose = null; + let handPose = null; + const targetRay = this._targetRay; + const grip = this._grip; + const hand = this._hand; + if (inputSource && frame.session.visibilityState !== "visible-blurred") { + if (hand && inputSource.hand) { + handPose = true; + for (const inputjoint of inputSource.hand.values()) { + const jointPose = frame.getJointPose(inputjoint, referenceSpace); + const joint = this._getHandJoint(hand, inputjoint); + if (jointPose !== null) { + joint.matrix.fromArray(jointPose.transform.matrix); + joint.matrix.decompose(joint.position, joint.rotation, joint.scale); + joint.matrixWorldNeedsUpdate = true; + joint.jointRadius = jointPose.radius; + } + joint.visible = jointPose !== null; + } + const indexTip = hand.joints["index-finger-tip"]; + const thumbTip = hand.joints["thumb-tip"]; + const distance = indexTip.position.distanceTo(thumbTip.position); + const distanceToPinch = 0.02; + const threshold = 5e-3; + if (hand.inputState.pinching && distance > distanceToPinch + threshold) { + hand.inputState.pinching = false; + this.dispatchEvent({ + type: "pinchend", + handedness: inputSource.handedness, + target: this + }); + } else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) { + hand.inputState.pinching = true; + this.dispatchEvent({ + type: "pinchstart", + handedness: inputSource.handedness, + target: this + }); + } + } else { + if (grip !== null && inputSource.gripSpace) { + gripPose = frame.getPose(inputSource.gripSpace, referenceSpace); + if (gripPose !== null) { + grip.matrix.fromArray(gripPose.transform.matrix); + grip.matrix.decompose(grip.position, grip.rotation, grip.scale); + grip.matrixWorldNeedsUpdate = true; + if (gripPose.linearVelocity) { + grip.hasLinearVelocity = true; + grip.linearVelocity.copy(gripPose.linearVelocity); + } else { + grip.hasLinearVelocity = false; + } + if (gripPose.angularVelocity) { + grip.hasAngularVelocity = true; + grip.angularVelocity.copy(gripPose.angularVelocity); + } else { + grip.hasAngularVelocity = false; + } + } + } + } + if (targetRay !== null) { + inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace); + if (inputPose === null && gripPose !== null) { + inputPose = gripPose; + } + if (inputPose !== null) { + targetRay.matrix.fromArray(inputPose.transform.matrix); + targetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale); + targetRay.matrixWorldNeedsUpdate = true; + if (inputPose.linearVelocity) { + targetRay.hasLinearVelocity = true; + targetRay.linearVelocity.copy(inputPose.linearVelocity); + } else { + targetRay.hasLinearVelocity = false; + } + if (inputPose.angularVelocity) { + targetRay.hasAngularVelocity = true; + targetRay.angularVelocity.copy(inputPose.angularVelocity); + } else { + targetRay.hasAngularVelocity = false; + } + this.dispatchEvent(_moveEvent); + } + } + } + if (targetRay !== null) { + targetRay.visible = inputPose !== null; + } + if (grip !== null) { + grip.visible = gripPose !== null; + } + if (hand !== null) { + hand.visible = handPose !== null; + } + return this; + } + // private method + _getHandJoint(hand, inputjoint) { + if (hand.joints[inputjoint.jointName] === void 0) { + const joint = new Group(); + joint.matrixAutoUpdate = false; + joint.visible = false; + hand.joints[inputjoint.jointName] = joint; + hand.add(joint); + } + return hand.joints[inputjoint.jointName]; + } +}; +var _occlusion_vertex = ` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`; +var _occlusion_fragment = ` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`; +var WebXRDepthSensing = class { + constructor() { + this.texture = null; + this.mesh = null; + this.depthNear = 0; + this.depthFar = 0; + } + init(renderer, depthData, renderState) { + if (this.texture === null) { + const texture = new Texture(); + const texProps = renderer.properties.get(texture); + texProps.__webglTexture = depthData.texture; + if (depthData.depthNear != renderState.depthNear || depthData.depthFar != renderState.depthFar) { + this.depthNear = depthData.depthNear; + this.depthFar = depthData.depthFar; + } + this.texture = texture; + } + } + render(renderer, cameraXR) { + if (this.texture !== null) { + if (this.mesh === null) { + const viewport = cameraXR.cameras[0].viewport; + const material = new ShaderMaterial({ + vertexShader: _occlusion_vertex, + fragmentShader: _occlusion_fragment, + uniforms: { + depthColor: { value: this.texture }, + depthWidth: { value: viewport.z }, + depthHeight: { value: viewport.w } + } + }); + this.mesh = new Mesh(new PlaneGeometry(20, 20), material); + } + renderer.render(this.mesh, cameraXR); + } + } + reset() { + this.texture = null; + this.mesh = null; + } +}; +var WebXRManager = class extends EventDispatcher { + constructor(renderer, gl) { + super(); + const scope = this; + let session = null; + let framebufferScaleFactor = 1; + let referenceSpace = null; + let referenceSpaceType = "local-floor"; + let foveation = 1; + let customReferenceSpace = null; + let pose = null; + let glBinding = null; + let glProjLayer = null; + let glBaseLayer = null; + let xrFrame = null; + const depthSensing = new WebXRDepthSensing(); + const attributes = gl.getContextAttributes(); + let initialRenderTarget = null; + let newRenderTarget = null; + const controllers = []; + const controllerInputSources = []; + const currentSize = new Vector2(); + let currentPixelRatio = null; + const cameraL = new PerspectiveCamera(); + cameraL.layers.enable(1); + cameraL.viewport = new Vector4(); + const cameraR = new PerspectiveCamera(); + cameraR.layers.enable(2); + cameraR.viewport = new Vector4(); + const cameras = [cameraL, cameraR]; + const cameraXR = new ArrayCamera(); + cameraXR.layers.enable(1); + cameraXR.layers.enable(2); + let _currentDepthNear = null; + let _currentDepthFar = null; + this.cameraAutoUpdate = true; + this.enabled = false; + this.isPresenting = false; + this.getController = function(index) { + let controller = controllers[index]; + if (controller === void 0) { + controller = new WebXRController(); + controllers[index] = controller; + } + return controller.getTargetRaySpace(); + }; + this.getControllerGrip = function(index) { + let controller = controllers[index]; + if (controller === void 0) { + controller = new WebXRController(); + controllers[index] = controller; + } + return controller.getGripSpace(); + }; + this.getHand = function(index) { + let controller = controllers[index]; + if (controller === void 0) { + controller = new WebXRController(); + controllers[index] = controller; + } + return controller.getHandSpace(); + }; + function onSessionEvent(event) { + const controllerIndex = controllerInputSources.indexOf(event.inputSource); + if (controllerIndex === -1) { + return; + } + const controller = controllers[controllerIndex]; + if (controller !== void 0) { + controller.update(event.inputSource, event.frame, customReferenceSpace || referenceSpace); + controller.dispatchEvent({ type: event.type, data: event.inputSource }); + } + } + function onSessionEnd() { + session.removeEventListener("select", onSessionEvent); + session.removeEventListener("selectstart", onSessionEvent); + session.removeEventListener("selectend", onSessionEvent); + session.removeEventListener("squeeze", onSessionEvent); + session.removeEventListener("squeezestart", onSessionEvent); + session.removeEventListener("squeezeend", onSessionEvent); + session.removeEventListener("end", onSessionEnd); + session.removeEventListener("inputsourceschange", onInputSourcesChange); + for (let i = 0; i < controllers.length; i++) { + const inputSource = controllerInputSources[i]; + if (inputSource === null) continue; + controllerInputSources[i] = null; + controllers[i].disconnect(inputSource); + } + _currentDepthNear = null; + _currentDepthFar = null; + depthSensing.reset(); + renderer.setRenderTarget(initialRenderTarget); + glBaseLayer = null; + glProjLayer = null; + glBinding = null; + session = null; + newRenderTarget = null; + animation.stop(); + scope.isPresenting = false; + renderer.setPixelRatio(currentPixelRatio); + renderer.setSize(currentSize.width, currentSize.height, false); + scope.dispatchEvent({ type: "sessionend" }); + } + this.setFramebufferScaleFactor = function(value) { + framebufferScaleFactor = value; + if (scope.isPresenting === true) { + console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting."); + } + }; + this.setReferenceSpaceType = function(value) { + referenceSpaceType = value; + if (scope.isPresenting === true) { + console.warn("THREE.WebXRManager: Cannot change reference space type while presenting."); + } + }; + this.getReferenceSpace = function() { + return customReferenceSpace || referenceSpace; + }; + this.setReferenceSpace = function(space) { + customReferenceSpace = space; + }; + this.getBaseLayer = function() { + return glProjLayer !== null ? glProjLayer : glBaseLayer; + }; + this.getBinding = function() { + return glBinding; + }; + this.getFrame = function() { + return xrFrame; + }; + this.getSession = function() { + return session; + }; + this.setSession = async function(value) { + session = value; + if (session !== null) { + initialRenderTarget = renderer.getRenderTarget(); + session.addEventListener("select", onSessionEvent); + session.addEventListener("selectstart", onSessionEvent); + session.addEventListener("selectend", onSessionEvent); + session.addEventListener("squeeze", onSessionEvent); + session.addEventListener("squeezestart", onSessionEvent); + session.addEventListener("squeezeend", onSessionEvent); + session.addEventListener("end", onSessionEnd); + session.addEventListener("inputsourceschange", onInputSourcesChange); + if (attributes.xrCompatible !== true) { + await gl.makeXRCompatible(); + } + currentPixelRatio = renderer.getPixelRatio(); + renderer.getSize(currentSize); + if (session.renderState.layers === void 0) { + const layerInit = { + antialias: attributes.antialias, + alpha: true, + depth: attributes.depth, + stencil: attributes.stencil, + framebufferScaleFactor + }; + glBaseLayer = new XRWebGLLayer(session, gl, layerInit); + session.updateRenderState({ baseLayer: glBaseLayer }); + renderer.setPixelRatio(1); + renderer.setSize(glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false); + newRenderTarget = new WebGLRenderTarget( + glBaseLayer.framebufferWidth, + glBaseLayer.framebufferHeight, + { + format: RGBAFormat, + type: UnsignedByteType, + colorSpace: renderer.outputColorSpace, + stencilBuffer: attributes.stencil + } + ); + } else { + let depthFormat = null; + let depthType = null; + let glDepthFormat = null; + if (attributes.depth) { + glDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24; + depthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat; + depthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType; + } + const projectionlayerInit = { + colorFormat: gl.RGBA8, + depthFormat: glDepthFormat, + scaleFactor: framebufferScaleFactor + }; + glBinding = new XRWebGLBinding(session, gl); + glProjLayer = glBinding.createProjectionLayer(projectionlayerInit); + session.updateRenderState({ layers: [glProjLayer] }); + renderer.setPixelRatio(1); + renderer.setSize(glProjLayer.textureWidth, glProjLayer.textureHeight, false); + newRenderTarget = new WebGLRenderTarget( + glProjLayer.textureWidth, + glProjLayer.textureHeight, + { + format: RGBAFormat, + type: UnsignedByteType, + depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat), + stencilBuffer: attributes.stencil, + colorSpace: renderer.outputColorSpace, + samples: attributes.antialias ? 4 : 0 + } + ); + const renderTargetProperties = renderer.properties.get(newRenderTarget); + renderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues; + } + newRenderTarget.isXRRenderTarget = true; + this.setFoveation(foveation); + customReferenceSpace = null; + referenceSpace = await session.requestReferenceSpace(referenceSpaceType); + animation.setContext(session); + animation.start(); + scope.isPresenting = true; + scope.dispatchEvent({ type: "sessionstart" }); + } + }; + this.getEnvironmentBlendMode = function() { + if (session !== null) { + return session.environmentBlendMode; + } + }; + function onInputSourcesChange(event) { + for (let i = 0; i < event.removed.length; i++) { + const inputSource = event.removed[i]; + const index = controllerInputSources.indexOf(inputSource); + if (index >= 0) { + controllerInputSources[index] = null; + controllers[index].disconnect(inputSource); + } + } + for (let i = 0; i < event.added.length; i++) { + const inputSource = event.added[i]; + let controllerIndex = controllerInputSources.indexOf(inputSource); + if (controllerIndex === -1) { + for (let i2 = 0; i2 < controllers.length; i2++) { + if (i2 >= controllerInputSources.length) { + controllerInputSources.push(inputSource); + controllerIndex = i2; + break; + } else if (controllerInputSources[i2] === null) { + controllerInputSources[i2] = inputSource; + controllerIndex = i2; + break; + } + } + if (controllerIndex === -1) break; + } + const controller = controllers[controllerIndex]; + if (controller) { + controller.connect(inputSource); + } + } + } + const cameraLPos = new Vector3(); + const cameraRPos = new Vector3(); + function setProjectionFromUnion(camera, cameraL2, cameraR2) { + cameraLPos.setFromMatrixPosition(cameraL2.matrixWorld); + cameraRPos.setFromMatrixPosition(cameraR2.matrixWorld); + const ipd = cameraLPos.distanceTo(cameraRPos); + const projL = cameraL2.projectionMatrix.elements; + const projR = cameraR2.projectionMatrix.elements; + const near = projL[14] / (projL[10] - 1); + const far = projL[14] / (projL[10] + 1); + const topFov = (projL[9] + 1) / projL[5]; + const bottomFov = (projL[9] - 1) / projL[5]; + const leftFov = (projL[8] - 1) / projL[0]; + const rightFov = (projR[8] + 1) / projR[0]; + const left = near * leftFov; + const right2 = near * rightFov; + const zOffset = ipd / (-leftFov + rightFov); + const xOffset = zOffset * -leftFov; + cameraL2.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale); + camera.translateX(xOffset); + camera.translateZ(zOffset); + camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale); + camera.matrixWorldInverse.copy(camera.matrixWorld).invert(); + const near2 = near + zOffset; + const far2 = far + zOffset; + const left2 = left - xOffset; + const right22 = right2 + (ipd - xOffset); + const top2 = topFov * far / far2 * near2; + const bottom2 = bottomFov * far / far2 * near2; + camera.projectionMatrix.makePerspective(left2, right22, top2, bottom2, near2, far2); + camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert(); + } + function updateCamera(camera, parent) { + if (parent === null) { + camera.matrixWorld.copy(camera.matrix); + } else { + camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix); + } + camera.matrixWorldInverse.copy(camera.matrixWorld).invert(); + } + this.updateCamera = function(camera) { + if (session === null) return; + if (depthSensing.texture !== null) { + camera.near = depthSensing.depthNear; + camera.far = depthSensing.depthFar; + } + cameraXR.near = cameraR.near = cameraL.near = camera.near; + cameraXR.far = cameraR.far = cameraL.far = camera.far; + if (_currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far) { + session.updateRenderState({ + depthNear: cameraXR.near, + depthFar: cameraXR.far + }); + _currentDepthNear = cameraXR.near; + _currentDepthFar = cameraXR.far; + cameraL.near = _currentDepthNear; + cameraL.far = _currentDepthFar; + cameraR.near = _currentDepthNear; + cameraR.far = _currentDepthFar; + cameraL.updateProjectionMatrix(); + cameraR.updateProjectionMatrix(); + camera.updateProjectionMatrix(); + } + const parent = camera.parent; + const cameras2 = cameraXR.cameras; + updateCamera(cameraXR, parent); + for (let i = 0; i < cameras2.length; i++) { + updateCamera(cameras2[i], parent); + } + if (cameras2.length === 2) { + setProjectionFromUnion(cameraXR, cameraL, cameraR); + } else { + cameraXR.projectionMatrix.copy(cameraL.projectionMatrix); + } + updateUserCamera(camera, cameraXR, parent); + }; + function updateUserCamera(camera, cameraXR2, parent) { + if (parent === null) { + camera.matrix.copy(cameraXR2.matrixWorld); + } else { + camera.matrix.copy(parent.matrixWorld); + camera.matrix.invert(); + camera.matrix.multiply(cameraXR2.matrixWorld); + } + camera.matrix.decompose(camera.position, camera.quaternion, camera.scale); + camera.updateMatrixWorld(true); + camera.projectionMatrix.copy(cameraXR2.projectionMatrix); + camera.projectionMatrixInverse.copy(cameraXR2.projectionMatrixInverse); + if (camera.isPerspectiveCamera) { + camera.fov = RAD2DEG * 2 * Math.atan(1 / camera.projectionMatrix.elements[5]); + camera.zoom = 1; + } + } + this.getCamera = function() { + return cameraXR; + }; + this.getFoveation = function() { + if (glProjLayer === null && glBaseLayer === null) { + return void 0; + } + return foveation; + }; + this.setFoveation = function(value) { + foveation = value; + if (glProjLayer !== null) { + glProjLayer.fixedFoveation = value; + } + if (glBaseLayer !== null && glBaseLayer.fixedFoveation !== void 0) { + glBaseLayer.fixedFoveation = value; + } + }; + this.hasDepthSensing = function() { + return depthSensing.texture !== null; + }; + let onAnimationFrameCallback = null; + function onAnimationFrame(time, frame) { + pose = frame.getViewerPose(customReferenceSpace || referenceSpace); + xrFrame = frame; + if (pose !== null) { + const views = pose.views; + if (glBaseLayer !== null) { + renderer.setRenderTargetFramebuffer(newRenderTarget, glBaseLayer.framebuffer); + renderer.setRenderTarget(newRenderTarget); + } + let cameraXRNeedsUpdate = false; + if (views.length !== cameraXR.cameras.length) { + cameraXR.cameras.length = 0; + cameraXRNeedsUpdate = true; + } + for (let i = 0; i < views.length; i++) { + const view = views[i]; + let viewport = null; + if (glBaseLayer !== null) { + viewport = glBaseLayer.getViewport(view); + } else { + const glSubImage = glBinding.getViewSubImage(glProjLayer, view); + viewport = glSubImage.viewport; + if (i === 0) { + renderer.setRenderTargetTextures( + newRenderTarget, + glSubImage.colorTexture, + glProjLayer.ignoreDepthValues ? void 0 : glSubImage.depthStencilTexture + ); + renderer.setRenderTarget(newRenderTarget); + } + } + let camera = cameras[i]; + if (camera === void 0) { + camera = new PerspectiveCamera(); + camera.layers.enable(i); + camera.viewport = new Vector4(); + cameras[i] = camera; + } + camera.matrix.fromArray(view.transform.matrix); + camera.matrix.decompose(camera.position, camera.quaternion, camera.scale); + camera.projectionMatrix.fromArray(view.projectionMatrix); + camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert(); + camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height); + if (i === 0) { + cameraXR.matrix.copy(camera.matrix); + cameraXR.matrix.decompose(cameraXR.position, cameraXR.quaternion, cameraXR.scale); + } + if (cameraXRNeedsUpdate === true) { + cameraXR.cameras.push(camera); + } + } + const enabledFeatures = session.enabledFeatures; + if (enabledFeatures && enabledFeatures.includes("depth-sensing")) { + const depthData = glBinding.getDepthInformation(views[0]); + if (depthData && depthData.isValid && depthData.texture) { + depthSensing.init(renderer, depthData, session.renderState); + } + } + } + for (let i = 0; i < controllers.length; i++) { + const inputSource = controllerInputSources[i]; + const controller = controllers[i]; + if (inputSource !== null && controller !== void 0) { + controller.update(inputSource, frame, customReferenceSpace || referenceSpace); + } + } + depthSensing.render(renderer, cameraXR); + if (onAnimationFrameCallback) onAnimationFrameCallback(time, frame); + if (frame.detectedPlanes) { + scope.dispatchEvent({ type: "planesdetected", data: frame }); + } + xrFrame = null; + } + const animation = new WebGLAnimation(); + animation.setAnimationLoop(onAnimationFrame); + this.setAnimationLoop = function(callback) { + onAnimationFrameCallback = callback; + }; + this.dispose = function() { + }; + } +}; +var _e1 = /* @__PURE__ */ new Euler(); +var _m1 = /* @__PURE__ */ new Matrix4(); +function WebGLMaterials(renderer, properties) { + function refreshTransformUniform(map, uniform) { + if (map.matrixAutoUpdate === true) { + map.updateMatrix(); + } + uniform.value.copy(map.matrix); + } + function refreshFogUniforms(uniforms, fog) { + fog.color.getRGB(uniforms.fogColor.value, getUnlitUniformColorSpace(renderer)); + if (fog.isFog) { + uniforms.fogNear.value = fog.near; + uniforms.fogFar.value = fog.far; + } else if (fog.isFogExp2) { + uniforms.fogDensity.value = fog.density; + } + } + function refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) { + if (material.isMeshBasicMaterial) { + refreshUniformsCommon(uniforms, material); + } else if (material.isMeshLambertMaterial) { + refreshUniformsCommon(uniforms, material); + } else if (material.isMeshToonMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsToon(uniforms, material); + } else if (material.isMeshPhongMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsPhong(uniforms, material); + } else if (material.isMeshStandardMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsStandard(uniforms, material); + if (material.isMeshPhysicalMaterial) { + refreshUniformsPhysical(uniforms, material, transmissionRenderTarget); + } + } else if (material.isMeshMatcapMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsMatcap(uniforms, material); + } else if (material.isMeshDepthMaterial) { + refreshUniformsCommon(uniforms, material); + } else if (material.isMeshDistanceMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsDistance(uniforms, material); + } else if (material.isMeshNormalMaterial) { + refreshUniformsCommon(uniforms, material); + } else if (material.isLineBasicMaterial) { + refreshUniformsLine(uniforms, material); + if (material.isLineDashedMaterial) { + refreshUniformsDash(uniforms, material); + } + } else if (material.isPointsMaterial) { + refreshUniformsPoints(uniforms, material, pixelRatio, height); + } else if (material.isSpriteMaterial) { + refreshUniformsSprites(uniforms, material); + } else if (material.isShadowMaterial) { + uniforms.color.value.copy(material.color); + uniforms.opacity.value = material.opacity; + } else if (material.isShaderMaterial) { + material.uniformsNeedUpdate = false; + } + } + function refreshUniformsCommon(uniforms, material) { + uniforms.opacity.value = material.opacity; + if (material.color) { + uniforms.diffuse.value.copy(material.color); + } + if (material.emissive) { + uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity); + } + if (material.map) { + uniforms.map.value = material.map; + refreshTransformUniform(material.map, uniforms.mapTransform); + } + if (material.alphaMap) { + uniforms.alphaMap.value = material.alphaMap; + refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform); + } + if (material.bumpMap) { + uniforms.bumpMap.value = material.bumpMap; + refreshTransformUniform(material.bumpMap, uniforms.bumpMapTransform); + uniforms.bumpScale.value = material.bumpScale; + if (material.side === BackSide) { + uniforms.bumpScale.value *= -1; + } + } + if (material.normalMap) { + uniforms.normalMap.value = material.normalMap; + refreshTransformUniform(material.normalMap, uniforms.normalMapTransform); + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) { + uniforms.normalScale.value.negate(); + } + } + if (material.displacementMap) { + uniforms.displacementMap.value = material.displacementMap; + refreshTransformUniform(material.displacementMap, uniforms.displacementMapTransform); + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + } + if (material.emissiveMap) { + uniforms.emissiveMap.value = material.emissiveMap; + refreshTransformUniform(material.emissiveMap, uniforms.emissiveMapTransform); + } + if (material.specularMap) { + uniforms.specularMap.value = material.specularMap; + refreshTransformUniform(material.specularMap, uniforms.specularMapTransform); + } + if (material.alphaTest > 0) { + uniforms.alphaTest.value = material.alphaTest; + } + const materialProperties = properties.get(material); + const envMap = materialProperties.envMap; + const envMapRotation = materialProperties.envMapRotation; + if (envMap) { + uniforms.envMap.value = envMap; + _e1.copy(envMapRotation); + _e1.x *= -1; + _e1.y *= -1; + _e1.z *= -1; + if (envMap.isCubeTexture && envMap.isRenderTargetTexture === false) { + _e1.y *= -1; + _e1.z *= -1; + } + uniforms.envMapRotation.value.setFromMatrix4(_m1.makeRotationFromEuler(_e1)); + uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1; + uniforms.reflectivity.value = material.reflectivity; + uniforms.ior.value = material.ior; + uniforms.refractionRatio.value = material.refractionRatio; + } + if (material.lightMap) { + uniforms.lightMap.value = material.lightMap; + const scaleFactor = renderer._useLegacyLights === true ? Math.PI : 1; + uniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor; + refreshTransformUniform(material.lightMap, uniforms.lightMapTransform); + } + if (material.aoMap) { + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + refreshTransformUniform(material.aoMap, uniforms.aoMapTransform); + } + } + function refreshUniformsLine(uniforms, material) { + uniforms.diffuse.value.copy(material.color); + uniforms.opacity.value = material.opacity; + if (material.map) { + uniforms.map.value = material.map; + refreshTransformUniform(material.map, uniforms.mapTransform); + } + } + function refreshUniformsDash(uniforms, material) { + uniforms.dashSize.value = material.dashSize; + uniforms.totalSize.value = material.dashSize + material.gapSize; + uniforms.scale.value = material.scale; + } + function refreshUniformsPoints(uniforms, material, pixelRatio, height) { + uniforms.diffuse.value.copy(material.color); + uniforms.opacity.value = material.opacity; + uniforms.size.value = material.size * pixelRatio; + uniforms.scale.value = height * 0.5; + if (material.map) { + uniforms.map.value = material.map; + refreshTransformUniform(material.map, uniforms.uvTransform); + } + if (material.alphaMap) { + uniforms.alphaMap.value = material.alphaMap; + refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform); + } + if (material.alphaTest > 0) { + uniforms.alphaTest.value = material.alphaTest; + } + } + function refreshUniformsSprites(uniforms, material) { + uniforms.diffuse.value.copy(material.color); + uniforms.opacity.value = material.opacity; + uniforms.rotation.value = material.rotation; + if (material.map) { + uniforms.map.value = material.map; + refreshTransformUniform(material.map, uniforms.mapTransform); + } + if (material.alphaMap) { + uniforms.alphaMap.value = material.alphaMap; + refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform); + } + if (material.alphaTest > 0) { + uniforms.alphaTest.value = material.alphaTest; + } + } + function refreshUniformsPhong(uniforms, material) { + uniforms.specular.value.copy(material.specular); + uniforms.shininess.value = Math.max(material.shininess, 1e-4); + } + function refreshUniformsToon(uniforms, material) { + if (material.gradientMap) { + uniforms.gradientMap.value = material.gradientMap; + } + } + function refreshUniformsStandard(uniforms, material) { + uniforms.metalness.value = material.metalness; + if (material.metalnessMap) { + uniforms.metalnessMap.value = material.metalnessMap; + refreshTransformUniform(material.metalnessMap, uniforms.metalnessMapTransform); + } + uniforms.roughness.value = material.roughness; + if (material.roughnessMap) { + uniforms.roughnessMap.value = material.roughnessMap; + refreshTransformUniform(material.roughnessMap, uniforms.roughnessMapTransform); + } + if (material.envMap) { + uniforms.envMapIntensity.value = material.envMapIntensity; + } + } + function refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) { + uniforms.ior.value = material.ior; + if (material.sheen > 0) { + uniforms.sheenColor.value.copy(material.sheenColor).multiplyScalar(material.sheen); + uniforms.sheenRoughness.value = material.sheenRoughness; + if (material.sheenColorMap) { + uniforms.sheenColorMap.value = material.sheenColorMap; + refreshTransformUniform(material.sheenColorMap, uniforms.sheenColorMapTransform); + } + if (material.sheenRoughnessMap) { + uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap; + refreshTransformUniform(material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform); + } + } + if (material.clearcoat > 0) { + uniforms.clearcoat.value = material.clearcoat; + uniforms.clearcoatRoughness.value = material.clearcoatRoughness; + if (material.clearcoatMap) { + uniforms.clearcoatMap.value = material.clearcoatMap; + refreshTransformUniform(material.clearcoatMap, uniforms.clearcoatMapTransform); + } + if (material.clearcoatRoughnessMap) { + uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap; + refreshTransformUniform(material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform); + } + if (material.clearcoatNormalMap) { + uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap; + refreshTransformUniform(material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform); + uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale); + if (material.side === BackSide) { + uniforms.clearcoatNormalScale.value.negate(); + } + } + } + if (material.iridescence > 0) { + uniforms.iridescence.value = material.iridescence; + uniforms.iridescenceIOR.value = material.iridescenceIOR; + uniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[0]; + uniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[1]; + if (material.iridescenceMap) { + uniforms.iridescenceMap.value = material.iridescenceMap; + refreshTransformUniform(material.iridescenceMap, uniforms.iridescenceMapTransform); + } + if (material.iridescenceThicknessMap) { + uniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap; + refreshTransformUniform(material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform); + } + } + if (material.transmission > 0) { + uniforms.transmission.value = material.transmission; + uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture; + uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height); + if (material.transmissionMap) { + uniforms.transmissionMap.value = material.transmissionMap; + refreshTransformUniform(material.transmissionMap, uniforms.transmissionMapTransform); + } + uniforms.thickness.value = material.thickness; + if (material.thicknessMap) { + uniforms.thicknessMap.value = material.thicknessMap; + refreshTransformUniform(material.thicknessMap, uniforms.thicknessMapTransform); + } + uniforms.attenuationDistance.value = material.attenuationDistance; + uniforms.attenuationColor.value.copy(material.attenuationColor); + } + if (material.anisotropy > 0) { + uniforms.anisotropyVector.value.set(material.anisotropy * Math.cos(material.anisotropyRotation), material.anisotropy * Math.sin(material.anisotropyRotation)); + if (material.anisotropyMap) { + uniforms.anisotropyMap.value = material.anisotropyMap; + refreshTransformUniform(material.anisotropyMap, uniforms.anisotropyMapTransform); + } + } + uniforms.specularIntensity.value = material.specularIntensity; + uniforms.specularColor.value.copy(material.specularColor); + if (material.specularColorMap) { + uniforms.specularColorMap.value = material.specularColorMap; + refreshTransformUniform(material.specularColorMap, uniforms.specularColorMapTransform); + } + if (material.specularIntensityMap) { + uniforms.specularIntensityMap.value = material.specularIntensityMap; + refreshTransformUniform(material.specularIntensityMap, uniforms.specularIntensityMapTransform); + } + } + function refreshUniformsMatcap(uniforms, material) { + if (material.matcap) { + uniforms.matcap.value = material.matcap; + } + } + function refreshUniformsDistance(uniforms, material) { + const light = properties.get(material).light; + uniforms.referencePosition.value.setFromMatrixPosition(light.matrixWorld); + uniforms.nearDistance.value = light.shadow.camera.near; + uniforms.farDistance.value = light.shadow.camera.far; + } + return { + refreshFogUniforms, + refreshMaterialUniforms + }; +} +function WebGLUniformsGroups(gl, info, capabilities, state) { + let buffers = {}; + let updateList = {}; + let allocatedBindingPoints = []; + const maxBindingPoints = gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS); + function bind(uniformsGroup, program) { + const webglProgram = program.program; + state.uniformBlockBinding(uniformsGroup, webglProgram); + } + function update(uniformsGroup, program) { + let buffer = buffers[uniformsGroup.id]; + if (buffer === void 0) { + prepareUniformsGroup(uniformsGroup); + buffer = createBuffer(uniformsGroup); + buffers[uniformsGroup.id] = buffer; + uniformsGroup.addEventListener("dispose", onUniformsGroupsDispose); + } + const webglProgram = program.program; + state.updateUBOMapping(uniformsGroup, webglProgram); + const frame = info.render.frame; + if (updateList[uniformsGroup.id] !== frame) { + updateBufferData(uniformsGroup); + updateList[uniformsGroup.id] = frame; + } + } + function createBuffer(uniformsGroup) { + const bindingPointIndex = allocateBindingPointIndex(); + uniformsGroup.__bindingPointIndex = bindingPointIndex; + const buffer = gl.createBuffer(); + const size = uniformsGroup.__size; + const usage = uniformsGroup.usage; + gl.bindBuffer(gl.UNIFORM_BUFFER, buffer); + gl.bufferData(gl.UNIFORM_BUFFER, size, usage); + gl.bindBuffer(gl.UNIFORM_BUFFER, null); + gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPointIndex, buffer); + return buffer; + } + function allocateBindingPointIndex() { + for (let i = 0; i < maxBindingPoints; i++) { + if (allocatedBindingPoints.indexOf(i) === -1) { + allocatedBindingPoints.push(i); + return i; + } + } + console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."); + return 0; + } + function updateBufferData(uniformsGroup) { + const buffer = buffers[uniformsGroup.id]; + const uniforms = uniformsGroup.uniforms; + const cache = uniformsGroup.__cache; + gl.bindBuffer(gl.UNIFORM_BUFFER, buffer); + for (let i = 0, il = uniforms.length; i < il; i++) { + const uniformArray = Array.isArray(uniforms[i]) ? uniforms[i] : [uniforms[i]]; + for (let j = 0, jl = uniformArray.length; j < jl; j++) { + const uniform = uniformArray[j]; + if (hasUniformChanged(uniform, i, j, cache) === true) { + const offset = uniform.__offset; + const values = Array.isArray(uniform.value) ? uniform.value : [uniform.value]; + let arrayOffset = 0; + for (let k = 0; k < values.length; k++) { + const value = values[k]; + const info2 = getUniformSize(value); + if (typeof value === "number" || typeof value === "boolean") { + uniform.__data[0] = value; + gl.bufferSubData(gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data); + } else if (value.isMatrix3) { + uniform.__data[0] = value.elements[0]; + uniform.__data[1] = value.elements[1]; + uniform.__data[2] = value.elements[2]; + uniform.__data[3] = 0; + uniform.__data[4] = value.elements[3]; + uniform.__data[5] = value.elements[4]; + uniform.__data[6] = value.elements[5]; + uniform.__data[7] = 0; + uniform.__data[8] = value.elements[6]; + uniform.__data[9] = value.elements[7]; + uniform.__data[10] = value.elements[8]; + uniform.__data[11] = 0; + } else { + value.toArray(uniform.__data, arrayOffset); + arrayOffset += info2.storage / Float32Array.BYTES_PER_ELEMENT; + } + } + gl.bufferSubData(gl.UNIFORM_BUFFER, offset, uniform.__data); + } + } + } + gl.bindBuffer(gl.UNIFORM_BUFFER, null); + } + function hasUniformChanged(uniform, index, indexArray, cache) { + const value = uniform.value; + const indexString = index + "_" + indexArray; + if (cache[indexString] === void 0) { + if (typeof value === "number" || typeof value === "boolean") { + cache[indexString] = value; + } else { + cache[indexString] = value.clone(); + } + return true; + } else { + const cachedObject = cache[indexString]; + if (typeof value === "number" || typeof value === "boolean") { + if (cachedObject !== value) { + cache[indexString] = value; + return true; + } + } else { + if (cachedObject.equals(value) === false) { + cachedObject.copy(value); + return true; + } + } + } + return false; + } + function prepareUniformsGroup(uniformsGroup) { + const uniforms = uniformsGroup.uniforms; + let offset = 0; + const chunkSize = 16; + for (let i = 0, l = uniforms.length; i < l; i++) { + const uniformArray = Array.isArray(uniforms[i]) ? uniforms[i] : [uniforms[i]]; + for (let j = 0, jl = uniformArray.length; j < jl; j++) { + const uniform = uniformArray[j]; + const values = Array.isArray(uniform.value) ? uniform.value : [uniform.value]; + for (let k = 0, kl = values.length; k < kl; k++) { + const value = values[k]; + const info2 = getUniformSize(value); + const chunkOffsetUniform = offset % chunkSize; + if (chunkOffsetUniform !== 0 && chunkSize - chunkOffsetUniform < info2.boundary) { + offset += chunkSize - chunkOffsetUniform; + } + uniform.__data = new Float32Array(info2.storage / Float32Array.BYTES_PER_ELEMENT); + uniform.__offset = offset; + offset += info2.storage; + } + } + } + const chunkOffset = offset % chunkSize; + if (chunkOffset > 0) offset += chunkSize - chunkOffset; + uniformsGroup.__size = offset; + uniformsGroup.__cache = {}; + return this; + } + function getUniformSize(value) { + const info2 = { + boundary: 0, + // bytes + storage: 0 + // bytes + }; + if (typeof value === "number" || typeof value === "boolean") { + info2.boundary = 4; + info2.storage = 4; + } else if (value.isVector2) { + info2.boundary = 8; + info2.storage = 8; + } else if (value.isVector3 || value.isColor) { + info2.boundary = 16; + info2.storage = 12; + } else if (value.isVector4) { + info2.boundary = 16; + info2.storage = 16; + } else if (value.isMatrix3) { + info2.boundary = 48; + info2.storage = 48; + } else if (value.isMatrix4) { + info2.boundary = 64; + info2.storage = 64; + } else if (value.isTexture) { + console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."); + } else { + console.warn("THREE.WebGLRenderer: Unsupported uniform value type.", value); + } + return info2; + } + function onUniformsGroupsDispose(event) { + const uniformsGroup = event.target; + uniformsGroup.removeEventListener("dispose", onUniformsGroupsDispose); + const index = allocatedBindingPoints.indexOf(uniformsGroup.__bindingPointIndex); + allocatedBindingPoints.splice(index, 1); + gl.deleteBuffer(buffers[uniformsGroup.id]); + delete buffers[uniformsGroup.id]; + delete updateList[uniformsGroup.id]; + } + function dispose() { + for (const id in buffers) { + gl.deleteBuffer(buffers[id]); + } + allocatedBindingPoints = []; + buffers = {}; + updateList = {}; + } + return { + bind, + update, + dispose + }; +} +var WebGLRenderer = class { + constructor(parameters = {}) { + const { + canvas = createCanvasElement(), + context = null, + depth = true, + stencil = false, + alpha = false, + antialias = false, + premultipliedAlpha = true, + preserveDrawingBuffer = false, + powerPreference = "default", + failIfMajorPerformanceCaveat = false + } = parameters; + this.isWebGLRenderer = true; + let _alpha; + if (context !== null) { + if (typeof WebGLRenderingContext !== "undefined" && context instanceof WebGLRenderingContext) { + throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163."); + } + _alpha = context.getContextAttributes().alpha; + } else { + _alpha = alpha; + } + const uintClearColor = new Uint32Array(4); + const intClearColor = new Int32Array(4); + let currentRenderList = null; + let currentRenderState = null; + const renderListStack = []; + const renderStateStack = []; + this.domElement = canvas; + this.debug = { + /** + * Enables error checking and reporting when shader programs are being compiled + * @type {boolean} + */ + checkShaderErrors: true, + /** + * Callback for custom error reporting. + * @type {?Function} + */ + onShaderError: null + }; + this.autoClear = true; + this.autoClearColor = true; + this.autoClearDepth = true; + this.autoClearStencil = true; + this.sortObjects = true; + this.clippingPlanes = []; + this.localClippingEnabled = false; + this._outputColorSpace = SRGBColorSpace; + this._useLegacyLights = false; + this.toneMapping = NoToneMapping; + this.toneMappingExposure = 1; + const _this = this; + let _isContextLost = false; + let _currentActiveCubeFace = 0; + let _currentActiveMipmapLevel = 0; + let _currentRenderTarget = null; + let _currentMaterialId = -1; + let _currentCamera = null; + const _currentViewport = new Vector4(); + const _currentScissor = new Vector4(); + let _currentScissorTest = null; + const _currentClearColor = new Color(0); + let _currentClearAlpha = 0; + let _width = canvas.width; + let _height = canvas.height; + let _pixelRatio = 1; + let _opaqueSort = null; + let _transparentSort = null; + const _viewport = new Vector4(0, 0, _width, _height); + const _scissor = new Vector4(0, 0, _width, _height); + let _scissorTest = false; + const _frustum = new Frustum(); + let _clippingEnabled = false; + let _localClippingEnabled = false; + const _projScreenMatrix2 = new Matrix4(); + const _vector22 = new Vector2(); + const _vector32 = new Vector3(); + const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true }; + function getTargetPixelRatio() { + return _currentRenderTarget === null ? _pixelRatio : 1; + } + let _gl = context; + function getContext(contextName, contextAttributes) { + const context2 = canvas.getContext(contextName, contextAttributes); + if (context2 !== null) return context2; + return null; + } + try { + const contextAttributes = { + alpha: true, + depth, + stencil, + antialias, + premultipliedAlpha, + preserveDrawingBuffer, + powerPreference, + failIfMajorPerformanceCaveat + }; + if ("setAttribute" in canvas) canvas.setAttribute("data-engine", `three.js r${REVISION}`); + canvas.addEventListener("webglcontextlost", onContextLost, false); + canvas.addEventListener("webglcontextrestored", onContextRestore, false); + canvas.addEventListener("webglcontextcreationerror", onContextCreationError, false); + if (_gl === null) { + const contextName = "webgl2"; + _gl = getContext(contextName, contextAttributes); + if (_gl === null) { + if (getContext(contextName)) { + throw new Error("Error creating WebGL context with your selected attributes."); + } else { + throw new Error("Error creating WebGL context."); + } + } + } + } catch (error) { + console.error("THREE.WebGLRenderer: " + error.message); + throw error; + } + let extensions, capabilities, state, info; + let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects; + let programCache, materials, renderLists, renderStates, clipping, shadowMap; + let background, morphtargets, bufferRenderer, indexedBufferRenderer; + let utils, bindingStates, uniformsGroups; + function initGLContext() { + extensions = new WebGLExtensions(_gl); + extensions.init(); + capabilities = new WebGLCapabilities(_gl, extensions, parameters); + utils = new WebGLUtils(_gl, extensions); + state = new WebGLState(_gl); + info = new WebGLInfo(_gl); + properties = new WebGLProperties(); + textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info); + cubemaps = new WebGLCubeMaps(_this); + cubeuvmaps = new WebGLCubeUVMaps(_this); + attributes = new WebGLAttributes(_gl); + bindingStates = new WebGLBindingStates(_gl, attributes); + geometries = new WebGLGeometries(_gl, attributes, info, bindingStates); + objects = new WebGLObjects(_gl, geometries, attributes, info); + morphtargets = new WebGLMorphtargets(_gl, capabilities, textures); + clipping = new WebGLClipping(properties); + programCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping); + materials = new WebGLMaterials(_this, properties); + renderLists = new WebGLRenderLists(); + renderStates = new WebGLRenderStates(extensions); + background = new WebGLBackground(_this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha); + shadowMap = new WebGLShadowMap(_this, objects, capabilities); + uniformsGroups = new WebGLUniformsGroups(_gl, info, capabilities, state); + bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info); + indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info); + info.programs = programCache.programs; + _this.capabilities = capabilities; + _this.extensions = extensions; + _this.properties = properties; + _this.renderLists = renderLists; + _this.shadowMap = shadowMap; + _this.state = state; + _this.info = info; + } + initGLContext(); + const xr = new WebXRManager(_this, _gl); + this.xr = xr; + this.getContext = function() { + return _gl; + }; + this.getContextAttributes = function() { + return _gl.getContextAttributes(); + }; + this.forceContextLoss = function() { + const extension = extensions.get("WEBGL_lose_context"); + if (extension) extension.loseContext(); + }; + this.forceContextRestore = function() { + const extension = extensions.get("WEBGL_lose_context"); + if (extension) extension.restoreContext(); + }; + this.getPixelRatio = function() { + return _pixelRatio; + }; + this.setPixelRatio = function(value) { + if (value === void 0) return; + _pixelRatio = value; + this.setSize(_width, _height, false); + }; + this.getSize = function(target) { + return target.set(_width, _height); + }; + this.setSize = function(width, height, updateStyle = true) { + if (xr.isPresenting) { + console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."); + return; + } + _width = width; + _height = height; + canvas.width = Math.floor(width * _pixelRatio); + canvas.height = Math.floor(height * _pixelRatio); + if (updateStyle === true) { + canvas.style.width = width + "px"; + canvas.style.height = height + "px"; + } + this.setViewport(0, 0, width, height); + }; + this.getDrawingBufferSize = function(target) { + return target.set(_width * _pixelRatio, _height * _pixelRatio).floor(); + }; + this.setDrawingBufferSize = function(width, height, pixelRatio) { + _width = width; + _height = height; + _pixelRatio = pixelRatio; + canvas.width = Math.floor(width * pixelRatio); + canvas.height = Math.floor(height * pixelRatio); + this.setViewport(0, 0, width, height); + }; + this.getCurrentViewport = function(target) { + return target.copy(_currentViewport); + }; + this.getViewport = function(target) { + return target.copy(_viewport); + }; + this.setViewport = function(x, y, width, height) { + if (x.isVector4) { + _viewport.set(x.x, x.y, x.z, x.w); + } else { + _viewport.set(x, y, width, height); + } + state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).round()); + }; + this.getScissor = function(target) { + return target.copy(_scissor); + }; + this.setScissor = function(x, y, width, height) { + if (x.isVector4) { + _scissor.set(x.x, x.y, x.z, x.w); + } else { + _scissor.set(x, y, width, height); + } + state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).round()); + }; + this.getScissorTest = function() { + return _scissorTest; + }; + this.setScissorTest = function(boolean) { + state.setScissorTest(_scissorTest = boolean); + }; + this.setOpaqueSort = function(method) { + _opaqueSort = method; + }; + this.setTransparentSort = function(method) { + _transparentSort = method; + }; + this.getClearColor = function(target) { + return target.copy(background.getClearColor()); + }; + this.setClearColor = function() { + background.setClearColor.apply(background, arguments); + }; + this.getClearAlpha = function() { + return background.getClearAlpha(); + }; + this.setClearAlpha = function() { + background.setClearAlpha.apply(background, arguments); + }; + this.clear = function(color = true, depth2 = true, stencil2 = true) { + let bits2 = 0; + if (color) { + let isIntegerFormat = false; + if (_currentRenderTarget !== null) { + const targetFormat = _currentRenderTarget.texture.format; + isIntegerFormat = targetFormat === RGBAIntegerFormat || targetFormat === RGIntegerFormat || targetFormat === RedIntegerFormat; + } + if (isIntegerFormat) { + const targetType = _currentRenderTarget.texture.type; + const isUnsignedType = targetType === UnsignedByteType || targetType === UnsignedIntType || targetType === UnsignedShortType || targetType === UnsignedInt248Type || targetType === UnsignedShort4444Type || targetType === UnsignedShort5551Type; + const clearColor = background.getClearColor(); + const a = background.getClearAlpha(); + const r = clearColor.r; + const g = clearColor.g; + const b = clearColor.b; + if (isUnsignedType) { + uintClearColor[0] = r; + uintClearColor[1] = g; + uintClearColor[2] = b; + uintClearColor[3] = a; + _gl.clearBufferuiv(_gl.COLOR, 0, uintClearColor); + } else { + intClearColor[0] = r; + intClearColor[1] = g; + intClearColor[2] = b; + intClearColor[3] = a; + _gl.clearBufferiv(_gl.COLOR, 0, intClearColor); + } + } else { + bits2 |= _gl.COLOR_BUFFER_BIT; + } + } + if (depth2) bits2 |= _gl.DEPTH_BUFFER_BIT; + if (stencil2) { + bits2 |= _gl.STENCIL_BUFFER_BIT; + this.state.buffers.stencil.setMask(4294967295); + } + _gl.clear(bits2); + }; + this.clearColor = function() { + this.clear(true, false, false); + }; + this.clearDepth = function() { + this.clear(false, true, false); + }; + this.clearStencil = function() { + this.clear(false, false, true); + }; + this.dispose = function() { + canvas.removeEventListener("webglcontextlost", onContextLost, false); + canvas.removeEventListener("webglcontextrestored", onContextRestore, false); + canvas.removeEventListener("webglcontextcreationerror", onContextCreationError, false); + renderLists.dispose(); + renderStates.dispose(); + properties.dispose(); + cubemaps.dispose(); + cubeuvmaps.dispose(); + objects.dispose(); + bindingStates.dispose(); + uniformsGroups.dispose(); + programCache.dispose(); + xr.dispose(); + xr.removeEventListener("sessionstart", onXRSessionStart); + xr.removeEventListener("sessionend", onXRSessionEnd); + animation.stop(); + }; + function onContextLost(event) { + event.preventDefault(); + console.log("THREE.WebGLRenderer: Context Lost."); + _isContextLost = true; + } + function onContextRestore() { + console.log("THREE.WebGLRenderer: Context Restored."); + _isContextLost = false; + const infoAutoReset = info.autoReset; + const shadowMapEnabled = shadowMap.enabled; + const shadowMapAutoUpdate = shadowMap.autoUpdate; + const shadowMapNeedsUpdate = shadowMap.needsUpdate; + const shadowMapType = shadowMap.type; + initGLContext(); + info.autoReset = infoAutoReset; + shadowMap.enabled = shadowMapEnabled; + shadowMap.autoUpdate = shadowMapAutoUpdate; + shadowMap.needsUpdate = shadowMapNeedsUpdate; + shadowMap.type = shadowMapType; + } + function onContextCreationError(event) { + console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ", event.statusMessage); + } + function onMaterialDispose(event) { + const material = event.target; + material.removeEventListener("dispose", onMaterialDispose); + deallocateMaterial(material); + } + function deallocateMaterial(material) { + releaseMaterialProgramReferences(material); + properties.remove(material); + } + function releaseMaterialProgramReferences(material) { + const programs = properties.get(material).programs; + if (programs !== void 0) { + programs.forEach(function(program) { + programCache.releaseProgram(program); + }); + if (material.isShaderMaterial) { + programCache.releaseShaderCache(material); + } + } + } + this.renderBufferDirect = function(camera, scene, geometry, material, object, group) { + if (scene === null) scene = _emptyScene; + const frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0; + const program = setProgram(camera, scene, geometry, material, object); + state.setMaterial(material, frontFaceCW); + let index = geometry.index; + let rangeFactor = 1; + if (material.wireframe === true) { + index = geometries.getWireframeAttribute(geometry); + if (index === void 0) return; + rangeFactor = 2; + } + const drawRange = geometry.drawRange; + const position = geometry.attributes.position; + let drawStart = drawRange.start * rangeFactor; + let drawEnd = (drawRange.start + drawRange.count) * rangeFactor; + if (group !== null) { + drawStart = Math.max(drawStart, group.start * rangeFactor); + drawEnd = Math.min(drawEnd, (group.start + group.count) * rangeFactor); + } + if (index !== null) { + drawStart = Math.max(drawStart, 0); + drawEnd = Math.min(drawEnd, index.count); + } else if (position !== void 0 && position !== null) { + drawStart = Math.max(drawStart, 0); + drawEnd = Math.min(drawEnd, position.count); + } + const drawCount = drawEnd - drawStart; + if (drawCount < 0 || drawCount === Infinity) return; + bindingStates.setup(object, material, program, geometry, index); + let attribute; + let renderer = bufferRenderer; + if (index !== null) { + attribute = attributes.get(index); + renderer = indexedBufferRenderer; + renderer.setIndex(attribute); + } + if (object.isMesh) { + if (material.wireframe === true) { + state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio()); + renderer.setMode(_gl.LINES); + } else { + renderer.setMode(_gl.TRIANGLES); + } + } else if (object.isLine) { + let lineWidth = material.linewidth; + if (lineWidth === void 0) lineWidth = 1; + state.setLineWidth(lineWidth * getTargetPixelRatio()); + if (object.isLineSegments) { + renderer.setMode(_gl.LINES); + } else if (object.isLineLoop) { + renderer.setMode(_gl.LINE_LOOP); + } else { + renderer.setMode(_gl.LINE_STRIP); + } + } else if (object.isPoints) { + renderer.setMode(_gl.POINTS); + } else if (object.isSprite) { + renderer.setMode(_gl.TRIANGLES); + } + if (object.isBatchedMesh) { + renderer.renderMultiDraw(object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount); + } else if (object.isInstancedMesh) { + renderer.renderInstances(drawStart, drawCount, object.count); + } else if (geometry.isInstancedBufferGeometry) { + const maxInstanceCount = geometry._maxInstanceCount !== void 0 ? geometry._maxInstanceCount : Infinity; + const instanceCount = Math.min(geometry.instanceCount, maxInstanceCount); + renderer.renderInstances(drawStart, drawCount, instanceCount); + } else { + renderer.render(drawStart, drawCount); + } + }; + function prepareMaterial(material, scene, object) { + if (material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false) { + material.side = BackSide; + material.needsUpdate = true; + getProgram(material, scene, object); + material.side = FrontSide; + material.needsUpdate = true; + getProgram(material, scene, object); + material.side = DoubleSide; + } else { + getProgram(material, scene, object); + } + } + this.compile = function(scene, camera, targetScene = null) { + if (targetScene === null) targetScene = scene; + currentRenderState = renderStates.get(targetScene); + currentRenderState.init(); + renderStateStack.push(currentRenderState); + targetScene.traverseVisible(function(object) { + if (object.isLight && object.layers.test(camera.layers)) { + currentRenderState.pushLight(object); + if (object.castShadow) { + currentRenderState.pushShadow(object); + } + } + }); + if (scene !== targetScene) { + scene.traverseVisible(function(object) { + if (object.isLight && object.layers.test(camera.layers)) { + currentRenderState.pushLight(object); + if (object.castShadow) { + currentRenderState.pushShadow(object); + } + } + }); + } + currentRenderState.setupLights(_this._useLegacyLights); + const materials2 = /* @__PURE__ */ new Set(); + scene.traverse(function(object) { + const material = object.material; + if (material) { + if (Array.isArray(material)) { + for (let i = 0; i < material.length; i++) { + const material2 = material[i]; + prepareMaterial(material2, targetScene, object); + materials2.add(material2); + } + } else { + prepareMaterial(material, targetScene, object); + materials2.add(material); + } + } + }); + renderStateStack.pop(); + currentRenderState = null; + return materials2; + }; + this.compileAsync = function(scene, camera, targetScene = null) { + const materials2 = this.compile(scene, camera, targetScene); + return new Promise((resolve) => { + function checkMaterialsReady() { + materials2.forEach(function(material) { + const materialProperties = properties.get(material); + const program = materialProperties.currentProgram; + if (program.isReady()) { + materials2.delete(material); + } + }); + if (materials2.size === 0) { + resolve(scene); + return; + } + setTimeout(checkMaterialsReady, 10); + } + if (extensions.get("KHR_parallel_shader_compile") !== null) { + checkMaterialsReady(); + } else { + setTimeout(checkMaterialsReady, 10); + } + }); + }; + let onAnimationFrameCallback = null; + function onAnimationFrame(time) { + if (onAnimationFrameCallback) onAnimationFrameCallback(time); + } + function onXRSessionStart() { + animation.stop(); + } + function onXRSessionEnd() { + animation.start(); + } + const animation = new WebGLAnimation(); + animation.setAnimationLoop(onAnimationFrame); + if (typeof self !== "undefined") animation.setContext(self); + this.setAnimationLoop = function(callback) { + onAnimationFrameCallback = callback; + xr.setAnimationLoop(callback); + callback === null ? animation.stop() : animation.start(); + }; + xr.addEventListener("sessionstart", onXRSessionStart); + xr.addEventListener("sessionend", onXRSessionEnd); + this.render = function(scene, camera) { + if (camera !== void 0 && camera.isCamera !== true) { + console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera."); + return; + } + if (_isContextLost === true) return; + if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld(); + if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld(); + if (xr.enabled === true && xr.isPresenting === true) { + if (xr.cameraAutoUpdate === true) xr.updateCamera(camera); + camera = xr.getCamera(); + } + if (scene.isScene === true) scene.onBeforeRender(_this, scene, camera, _currentRenderTarget); + currentRenderState = renderStates.get(scene, renderStateStack.length); + currentRenderState.init(); + renderStateStack.push(currentRenderState); + _projScreenMatrix2.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); + _frustum.setFromProjectionMatrix(_projScreenMatrix2); + _localClippingEnabled = this.localClippingEnabled; + _clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled); + currentRenderList = renderLists.get(scene, renderListStack.length); + currentRenderList.init(); + renderListStack.push(currentRenderList); + projectObject(scene, camera, 0, _this.sortObjects); + currentRenderList.finish(); + if (_this.sortObjects === true) { + currentRenderList.sort(_opaqueSort, _transparentSort); + } + this.info.render.frame++; + if (_clippingEnabled === true) clipping.beginShadows(); + const shadowsArray = currentRenderState.state.shadowsArray; + shadowMap.render(shadowsArray, scene, camera); + if (_clippingEnabled === true) clipping.endShadows(); + if (this.info.autoReset === true) this.info.reset(); + if (xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false) { + background.render(currentRenderList, scene); + } + currentRenderState.setupLights(_this._useLegacyLights); + if (camera.isArrayCamera) { + const cameras = camera.cameras; + for (let i = 0, l = cameras.length; i < l; i++) { + const camera2 = cameras[i]; + renderScene(currentRenderList, scene, camera2, camera2.viewport); + } + } else { + renderScene(currentRenderList, scene, camera); + } + if (_currentRenderTarget !== null) { + textures.updateMultisampleRenderTarget(_currentRenderTarget); + textures.updateRenderTargetMipmap(_currentRenderTarget); + } + if (scene.isScene === true) scene.onAfterRender(_this, scene, camera); + bindingStates.resetDefaultState(); + _currentMaterialId = -1; + _currentCamera = null; + renderStateStack.pop(); + if (renderStateStack.length > 0) { + currentRenderState = renderStateStack[renderStateStack.length - 1]; + } else { + currentRenderState = null; + } + renderListStack.pop(); + if (renderListStack.length > 0) { + currentRenderList = renderListStack[renderListStack.length - 1]; + } else { + currentRenderList = null; + } + }; + function projectObject(object, camera, groupOrder, sortObjects) { + if (object.visible === false) return; + const visible = object.layers.test(camera.layers); + if (visible) { + if (object.isGroup) { + groupOrder = object.renderOrder; + } else if (object.isLOD) { + if (object.autoUpdate === true) object.update(camera); + } else if (object.isLight) { + currentRenderState.pushLight(object); + if (object.castShadow) { + currentRenderState.pushShadow(object); + } + } else if (object.isSprite) { + if (!object.frustumCulled || _frustum.intersectsSprite(object)) { + if (sortObjects) { + _vector32.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2); + } + const geometry = objects.update(object); + const material = object.material; + if (material.visible) { + currentRenderList.push(object, geometry, material, groupOrder, _vector32.z, null); + } + } + } else if (object.isMesh || object.isLine || object.isPoints) { + if (!object.frustumCulled || _frustum.intersectsObject(object)) { + const geometry = objects.update(object); + const material = object.material; + if (sortObjects) { + if (object.boundingSphere !== void 0) { + if (object.boundingSphere === null) object.computeBoundingSphere(); + _vector32.copy(object.boundingSphere.center); + } else { + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + _vector32.copy(geometry.boundingSphere.center); + } + _vector32.applyMatrix4(object.matrixWorld).applyMatrix4(_projScreenMatrix2); + } + if (Array.isArray(material)) { + const groups = geometry.groups; + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + const groupMaterial = material[group.materialIndex]; + if (groupMaterial && groupMaterial.visible) { + currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector32.z, group); + } + } + } else if (material.visible) { + currentRenderList.push(object, geometry, material, groupOrder, _vector32.z, null); + } + } + } + } + const children = object.children; + for (let i = 0, l = children.length; i < l; i++) { + projectObject(children[i], camera, groupOrder, sortObjects); + } + } + function renderScene(currentRenderList2, scene, camera, viewport) { + const opaqueObjects = currentRenderList2.opaque; + const transmissiveObjects = currentRenderList2.transmissive; + const transparentObjects = currentRenderList2.transparent; + currentRenderState.setupLightsView(camera); + if (_clippingEnabled === true) clipping.setGlobalState(_this.clippingPlanes, camera); + if (transmissiveObjects.length > 0) renderTransmissionPass(opaqueObjects, transmissiveObjects, scene, camera); + if (viewport) state.viewport(_currentViewport.copy(viewport)); + if (opaqueObjects.length > 0) renderObjects(opaqueObjects, scene, camera); + if (transmissiveObjects.length > 0) renderObjects(transmissiveObjects, scene, camera); + if (transparentObjects.length > 0) renderObjects(transparentObjects, scene, camera); + state.buffers.depth.setTest(true); + state.buffers.depth.setMask(true); + state.buffers.color.setMask(true); + state.setPolygonOffset(false); + } + function renderTransmissionPass(opaqueObjects, transmissiveObjects, scene, camera) { + const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null; + if (overrideMaterial !== null) { + return; + } + if (currentRenderState.state.transmissionRenderTarget === null) { + currentRenderState.state.transmissionRenderTarget = new WebGLRenderTarget(1, 1, { + generateMipmaps: true, + type: extensions.has("EXT_color_buffer_half_float") || extensions.has("EXT_color_buffer_float") ? HalfFloatType : UnsignedByteType, + minFilter: LinearMipmapLinearFilter, + samples: 4, + stencilBuffer: stencil + }); + const renderTargetProperties = properties.get(currentRenderState.state.transmissionRenderTarget); + renderTargetProperties.__isTransmissionRenderTarget = true; + } + const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget; + _this.getDrawingBufferSize(_vector22); + transmissionRenderTarget.setSize(_vector22.x, _vector22.y); + const currentRenderTarget = _this.getRenderTarget(); + _this.setRenderTarget(transmissionRenderTarget); + _this.getClearColor(_currentClearColor); + _currentClearAlpha = _this.getClearAlpha(); + if (_currentClearAlpha < 1) _this.setClearColor(16777215, 0.5); + _this.clear(); + const currentToneMapping = _this.toneMapping; + _this.toneMapping = NoToneMapping; + renderObjects(opaqueObjects, scene, camera); + textures.updateMultisampleRenderTarget(transmissionRenderTarget); + textures.updateRenderTargetMipmap(transmissionRenderTarget); + let renderTargetNeedsUpdate = false; + for (let i = 0, l = transmissiveObjects.length; i < l; i++) { + const renderItem = transmissiveObjects[i]; + const object = renderItem.object; + const geometry = renderItem.geometry; + const material = renderItem.material; + const group = renderItem.group; + if (material.side === DoubleSide && object.layers.test(camera.layers)) { + const currentSide = material.side; + material.side = BackSide; + material.needsUpdate = true; + renderObject(object, scene, camera, geometry, material, group); + material.side = currentSide; + material.needsUpdate = true; + renderTargetNeedsUpdate = true; + } + } + if (renderTargetNeedsUpdate === true) { + textures.updateMultisampleRenderTarget(transmissionRenderTarget); + textures.updateRenderTargetMipmap(transmissionRenderTarget); + } + _this.setRenderTarget(currentRenderTarget); + _this.setClearColor(_currentClearColor, _currentClearAlpha); + _this.toneMapping = currentToneMapping; + } + function renderObjects(renderList, scene, camera) { + const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null; + for (let i = 0, l = renderList.length; i < l; i++) { + const renderItem = renderList[i]; + const object = renderItem.object; + const geometry = renderItem.geometry; + const material = overrideMaterial === null ? renderItem.material : overrideMaterial; + const group = renderItem.group; + if (object.layers.test(camera.layers)) { + renderObject(object, scene, camera, geometry, material, group); + } + } + } + function renderObject(object, scene, camera, geometry, material, group) { + object.onBeforeRender(_this, scene, camera, geometry, material, group); + object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld); + object.normalMatrix.getNormalMatrix(object.modelViewMatrix); + material.onBeforeRender(_this, scene, camera, geometry, object, group); + if (material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false) { + material.side = BackSide; + material.needsUpdate = true; + _this.renderBufferDirect(camera, scene, geometry, material, object, group); + material.side = FrontSide; + material.needsUpdate = true; + _this.renderBufferDirect(camera, scene, geometry, material, object, group); + material.side = DoubleSide; + } else { + _this.renderBufferDirect(camera, scene, geometry, material, object, group); + } + object.onAfterRender(_this, scene, camera, geometry, material, group); + } + function getProgram(material, scene, object) { + if (scene.isScene !== true) scene = _emptyScene; + const materialProperties = properties.get(material); + const lights = currentRenderState.state.lights; + const shadowsArray = currentRenderState.state.shadowsArray; + const lightsStateVersion = lights.state.version; + const parameters2 = programCache.getParameters(material, lights.state, shadowsArray, scene, object); + const programCacheKey = programCache.getProgramCacheKey(parameters2); + let programs = materialProperties.programs; + materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null; + materialProperties.fog = scene.fog; + materialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment); + materialProperties.envMapRotation = materialProperties.environment !== null && material.envMap === null ? scene.environmentRotation : material.envMapRotation; + if (programs === void 0) { + material.addEventListener("dispose", onMaterialDispose); + programs = /* @__PURE__ */ new Map(); + materialProperties.programs = programs; + } + let program = programs.get(programCacheKey); + if (program !== void 0) { + if (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) { + updateCommonMaterialProperties(material, parameters2); + return program; + } + } else { + parameters2.uniforms = programCache.getUniforms(material); + material.onBuild(object, parameters2, _this); + material.onBeforeCompile(parameters2, _this); + program = programCache.acquireProgram(parameters2, programCacheKey); + programs.set(programCacheKey, program); + materialProperties.uniforms = parameters2.uniforms; + } + const uniforms = materialProperties.uniforms; + if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) { + uniforms.clippingPlanes = clipping.uniform; + } + updateCommonMaterialProperties(material, parameters2); + materialProperties.needsLights = materialNeedsLights(material); + materialProperties.lightsStateVersion = lightsStateVersion; + if (materialProperties.needsLights) { + uniforms.ambientLightColor.value = lights.state.ambient; + uniforms.lightProbe.value = lights.state.probe; + uniforms.directionalLights.value = lights.state.directional; + uniforms.directionalLightShadows.value = lights.state.directionalShadow; + uniforms.spotLights.value = lights.state.spot; + uniforms.spotLightShadows.value = lights.state.spotShadow; + uniforms.rectAreaLights.value = lights.state.rectArea; + uniforms.ltc_1.value = lights.state.rectAreaLTC1; + uniforms.ltc_2.value = lights.state.rectAreaLTC2; + uniforms.pointLights.value = lights.state.point; + uniforms.pointLightShadows.value = lights.state.pointShadow; + uniforms.hemisphereLights.value = lights.state.hemi; + uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; + uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; + uniforms.spotShadowMap.value = lights.state.spotShadowMap; + uniforms.spotLightMatrix.value = lights.state.spotLightMatrix; + uniforms.spotLightMap.value = lights.state.spotLightMap; + uniforms.pointShadowMap.value = lights.state.pointShadowMap; + uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; + } + materialProperties.currentProgram = program; + materialProperties.uniformsList = null; + return program; + } + function getUniformList(materialProperties) { + if (materialProperties.uniformsList === null) { + const progUniforms = materialProperties.currentProgram.getUniforms(); + materialProperties.uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, materialProperties.uniforms); + } + return materialProperties.uniformsList; + } + function updateCommonMaterialProperties(material, parameters2) { + const materialProperties = properties.get(material); + materialProperties.outputColorSpace = parameters2.outputColorSpace; + materialProperties.batching = parameters2.batching; + materialProperties.instancing = parameters2.instancing; + materialProperties.instancingColor = parameters2.instancingColor; + materialProperties.instancingMorph = parameters2.instancingMorph; + materialProperties.skinning = parameters2.skinning; + materialProperties.morphTargets = parameters2.morphTargets; + materialProperties.morphNormals = parameters2.morphNormals; + materialProperties.morphColors = parameters2.morphColors; + materialProperties.morphTargetsCount = parameters2.morphTargetsCount; + materialProperties.numClippingPlanes = parameters2.numClippingPlanes; + materialProperties.numIntersection = parameters2.numClipIntersection; + materialProperties.vertexAlphas = parameters2.vertexAlphas; + materialProperties.vertexTangents = parameters2.vertexTangents; + materialProperties.toneMapping = parameters2.toneMapping; + } + function setProgram(camera, scene, geometry, material, object) { + if (scene.isScene !== true) scene = _emptyScene; + textures.resetTextureUnits(); + const fog = scene.fog; + const environment = material.isMeshStandardMaterial ? scene.environment : null; + const colorSpace = _currentRenderTarget === null ? _this.outputColorSpace : _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace; + const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment); + const vertexAlphas = material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4; + const vertexTangents = !!geometry.attributes.tangent && (!!material.normalMap || material.anisotropy > 0); + const morphTargets = !!geometry.morphAttributes.position; + const morphNormals = !!geometry.morphAttributes.normal; + const morphColors = !!geometry.morphAttributes.color; + let toneMapping = NoToneMapping; + if (material.toneMapped) { + if (_currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true) { + toneMapping = _this.toneMapping; + } + } + const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color; + const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0; + const materialProperties = properties.get(material); + const lights = currentRenderState.state.lights; + if (_clippingEnabled === true) { + if (_localClippingEnabled === true || camera !== _currentCamera) { + const useCache = camera === _currentCamera && material.id === _currentMaterialId; + clipping.setState(material, camera, useCache); + } + } + let needsProgramChange = false; + if (material.version === materialProperties.__version) { + if (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) { + needsProgramChange = true; + } else if (materialProperties.outputColorSpace !== colorSpace) { + needsProgramChange = true; + } else if (object.isBatchedMesh && materialProperties.batching === false) { + needsProgramChange = true; + } else if (!object.isBatchedMesh && materialProperties.batching === true) { + needsProgramChange = true; + } else if (object.isInstancedMesh && materialProperties.instancing === false) { + needsProgramChange = true; + } else if (!object.isInstancedMesh && materialProperties.instancing === true) { + needsProgramChange = true; + } else if (object.isSkinnedMesh && materialProperties.skinning === false) { + needsProgramChange = true; + } else if (!object.isSkinnedMesh && materialProperties.skinning === true) { + needsProgramChange = true; + } else if (object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null) { + needsProgramChange = true; + } else if (object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null) { + needsProgramChange = true; + } else if (object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null) { + needsProgramChange = true; + } else if (object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null) { + needsProgramChange = true; + } else if (materialProperties.envMap !== envMap) { + needsProgramChange = true; + } else if (material.fog === true && materialProperties.fog !== fog) { + needsProgramChange = true; + } else if (materialProperties.numClippingPlanes !== void 0 && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) { + needsProgramChange = true; + } else if (materialProperties.vertexAlphas !== vertexAlphas) { + needsProgramChange = true; + } else if (materialProperties.vertexTangents !== vertexTangents) { + needsProgramChange = true; + } else if (materialProperties.morphTargets !== morphTargets) { + needsProgramChange = true; + } else if (materialProperties.morphNormals !== morphNormals) { + needsProgramChange = true; + } else if (materialProperties.morphColors !== morphColors) { + needsProgramChange = true; + } else if (materialProperties.toneMapping !== toneMapping) { + needsProgramChange = true; + } else if (materialProperties.morphTargetsCount !== morphTargetsCount) { + needsProgramChange = true; + } + } else { + needsProgramChange = true; + materialProperties.__version = material.version; + } + let program = materialProperties.currentProgram; + if (needsProgramChange === true) { + program = getProgram(material, scene, object); + } + let refreshProgram = false; + let refreshMaterial = false; + let refreshLights = false; + const p_uniforms = program.getUniforms(), m_uniforms = materialProperties.uniforms; + if (state.useProgram(program.program)) { + refreshProgram = true; + refreshMaterial = true; + refreshLights = true; + } + if (material.id !== _currentMaterialId) { + _currentMaterialId = material.id; + refreshMaterial = true; + } + if (refreshProgram || _currentCamera !== camera) { + p_uniforms.setValue(_gl, "projectionMatrix", camera.projectionMatrix); + p_uniforms.setValue(_gl, "viewMatrix", camera.matrixWorldInverse); + const uCamPos = p_uniforms.map.cameraPosition; + if (uCamPos !== void 0) { + uCamPos.setValue(_gl, _vector32.setFromMatrixPosition(camera.matrixWorld)); + } + if (capabilities.logarithmicDepthBuffer) { + p_uniforms.setValue( + _gl, + "logDepthBufFC", + 2 / (Math.log(camera.far + 1) / Math.LN2) + ); + } + if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) { + p_uniforms.setValue(_gl, "isOrthographic", camera.isOrthographicCamera === true); + } + if (_currentCamera !== camera) { + _currentCamera = camera; + refreshMaterial = true; + refreshLights = true; + } + } + if (object.isSkinnedMesh) { + p_uniforms.setOptional(_gl, object, "bindMatrix"); + p_uniforms.setOptional(_gl, object, "bindMatrixInverse"); + const skeleton = object.skeleton; + if (skeleton) { + if (skeleton.boneTexture === null) skeleton.computeBoneTexture(); + p_uniforms.setValue(_gl, "boneTexture", skeleton.boneTexture, textures); + } + } + if (object.isBatchedMesh) { + p_uniforms.setOptional(_gl, object, "batchingTexture"); + p_uniforms.setValue(_gl, "batchingTexture", object._matricesTexture, textures); + } + const morphAttributes = geometry.morphAttributes; + if (morphAttributes.position !== void 0 || morphAttributes.normal !== void 0 || morphAttributes.color !== void 0) { + morphtargets.update(object, geometry, program); + } + if (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) { + materialProperties.receiveShadow = object.receiveShadow; + p_uniforms.setValue(_gl, "receiveShadow", object.receiveShadow); + } + if (material.isMeshGouraudMaterial && material.envMap !== null) { + m_uniforms.envMap.value = envMap; + m_uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1; + } + if (material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null) { + m_uniforms.envMapIntensity.value = scene.environmentIntensity; + } + if (refreshMaterial) { + p_uniforms.setValue(_gl, "toneMappingExposure", _this.toneMappingExposure); + if (materialProperties.needsLights) { + markUniformsLightsNeedsUpdate(m_uniforms, refreshLights); + } + if (fog && material.fog === true) { + materials.refreshFogUniforms(m_uniforms, fog); + } + materials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget); + WebGLUniforms.upload(_gl, getUniformList(materialProperties), m_uniforms, textures); + } + if (material.isShaderMaterial && material.uniformsNeedUpdate === true) { + WebGLUniforms.upload(_gl, getUniformList(materialProperties), m_uniforms, textures); + material.uniformsNeedUpdate = false; + } + if (material.isSpriteMaterial) { + p_uniforms.setValue(_gl, "center", object.center); + } + p_uniforms.setValue(_gl, "modelViewMatrix", object.modelViewMatrix); + p_uniforms.setValue(_gl, "normalMatrix", object.normalMatrix); + p_uniforms.setValue(_gl, "modelMatrix", object.matrixWorld); + if (material.isShaderMaterial || material.isRawShaderMaterial) { + const groups = material.uniformsGroups; + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + uniformsGroups.update(group, program); + uniformsGroups.bind(group, program); + } + } + return program; + } + function markUniformsLightsNeedsUpdate(uniforms, value) { + uniforms.ambientLightColor.needsUpdate = value; + uniforms.lightProbe.needsUpdate = value; + uniforms.directionalLights.needsUpdate = value; + uniforms.directionalLightShadows.needsUpdate = value; + uniforms.pointLights.needsUpdate = value; + uniforms.pointLightShadows.needsUpdate = value; + uniforms.spotLights.needsUpdate = value; + uniforms.spotLightShadows.needsUpdate = value; + uniforms.rectAreaLights.needsUpdate = value; + uniforms.hemisphereLights.needsUpdate = value; + } + function materialNeedsLights(material) { + return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true; + } + this.getActiveCubeFace = function() { + return _currentActiveCubeFace; + }; + this.getActiveMipmapLevel = function() { + return _currentActiveMipmapLevel; + }; + this.getRenderTarget = function() { + return _currentRenderTarget; + }; + this.setRenderTargetTextures = function(renderTarget, colorTexture, depthTexture) { + properties.get(renderTarget.texture).__webglTexture = colorTexture; + properties.get(renderTarget.depthTexture).__webglTexture = depthTexture; + const renderTargetProperties = properties.get(renderTarget); + renderTargetProperties.__hasExternalTextures = true; + renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === void 0; + if (!renderTargetProperties.__autoAllocateDepthBuffer) { + if (extensions.has("WEBGL_multisampled_render_to_texture") === true) { + console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"); + renderTargetProperties.__useRenderToTexture = false; + } + } + }; + this.setRenderTargetFramebuffer = function(renderTarget, defaultFramebuffer) { + const renderTargetProperties = properties.get(renderTarget); + renderTargetProperties.__webglFramebuffer = defaultFramebuffer; + renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === void 0; + }; + this.setRenderTarget = function(renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) { + _currentRenderTarget = renderTarget; + _currentActiveCubeFace = activeCubeFace; + _currentActiveMipmapLevel = activeMipmapLevel; + let useDefaultFramebuffer = true; + let framebuffer = null; + let isCube = false; + let isRenderTarget3D = false; + if (renderTarget) { + const renderTargetProperties = properties.get(renderTarget); + if (renderTargetProperties.__useDefaultFramebuffer !== void 0) { + state.bindFramebuffer(_gl.FRAMEBUFFER, null); + useDefaultFramebuffer = false; + } else if (renderTargetProperties.__webglFramebuffer === void 0) { + textures.setupRenderTarget(renderTarget); + } else if (renderTargetProperties.__hasExternalTextures) { + textures.rebindTextures(renderTarget, properties.get(renderTarget.texture).__webglTexture, properties.get(renderTarget.depthTexture).__webglTexture); + } + const texture = renderTarget.texture; + if (texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture) { + isRenderTarget3D = true; + } + const __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer; + if (renderTarget.isWebGLCubeRenderTarget) { + if (Array.isArray(__webglFramebuffer[activeCubeFace])) { + framebuffer = __webglFramebuffer[activeCubeFace][activeMipmapLevel]; + } else { + framebuffer = __webglFramebuffer[activeCubeFace]; + } + isCube = true; + } else if (renderTarget.samples > 0 && textures.useMultisampledRTT(renderTarget) === false) { + framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer; + } else { + if (Array.isArray(__webglFramebuffer)) { + framebuffer = __webglFramebuffer[activeMipmapLevel]; + } else { + framebuffer = __webglFramebuffer; + } + } + _currentViewport.copy(renderTarget.viewport); + _currentScissor.copy(renderTarget.scissor); + _currentScissorTest = renderTarget.scissorTest; + } else { + _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor(); + _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor(); + _currentScissorTest = _scissorTest; + } + const framebufferBound = state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + if (framebufferBound && useDefaultFramebuffer) { + state.drawBuffers(renderTarget, framebuffer); + } + state.viewport(_currentViewport); + state.scissor(_currentScissor); + state.setScissorTest(_currentScissorTest); + if (isCube) { + const textureProperties = properties.get(renderTarget.texture); + _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel); + } else if (isRenderTarget3D) { + const textureProperties = properties.get(renderTarget.texture); + const layer = activeCubeFace || 0; + _gl.framebufferTextureLayer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer); + } + _currentMaterialId = -1; + }; + this.readRenderTargetPixels = function(renderTarget, x, y, width, height, buffer, activeCubeFaceIndex) { + if (!(renderTarget && renderTarget.isWebGLRenderTarget)) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget."); + return; + } + let framebuffer = properties.get(renderTarget).__webglFramebuffer; + if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== void 0) { + framebuffer = framebuffer[activeCubeFaceIndex]; + } + if (framebuffer) { + state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + try { + const texture = renderTarget.texture; + const textureFormat = texture.format; + const textureType = texture.type; + if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_FORMAT)) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."); + return; + } + const halfFloatSupportedByExt = textureType === HalfFloatType && (extensions.has("EXT_color_buffer_half_float") || extensions.has("EXT_color_buffer_float")); + if (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_TYPE) && // Edge and Chrome Mac < 52 (#9513) + textureType !== FloatType && !halfFloatSupportedByExt) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type."); + return; + } + if (x >= 0 && x <= renderTarget.width - width && (y >= 0 && y <= renderTarget.height - height)) { + _gl.readPixels(x, y, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer); + } + } finally { + const framebuffer2 = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null; + state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer2); + } + } + }; + this.copyFramebufferToTexture = function(position, texture, level = 0) { + const levelScale = Math.pow(2, -level); + const width = Math.floor(texture.image.width * levelScale); + const height = Math.floor(texture.image.height * levelScale); + textures.setTexture2D(texture, 0); + _gl.copyTexSubImage2D(_gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height); + state.unbindTexture(); + }; + this.copyTextureToTexture = function(position, srcTexture, dstTexture, level = 0) { + const width = srcTexture.image.width; + const height = srcTexture.image.height; + const glFormat = utils.convert(dstTexture.format); + const glType = utils.convert(dstTexture.type); + textures.setTexture2D(dstTexture, 0); + _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY); + _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha); + _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment); + if (srcTexture.isDataTexture) { + _gl.texSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data); + } else { + if (srcTexture.isCompressedTexture) { + _gl.compressedTexSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[0].width, srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data); + } else { + _gl.texSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image); + } + } + if (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(_gl.TEXTURE_2D); + state.unbindTexture(); + }; + this.copyTextureToTexture3D = function(sourceBox, position, srcTexture, dstTexture, level = 0) { + const width = Math.round(sourceBox.max.x - sourceBox.min.x); + const height = Math.round(sourceBox.max.y - sourceBox.min.y); + const depth2 = sourceBox.max.z - sourceBox.min.z + 1; + const glFormat = utils.convert(dstTexture.format); + const glType = utils.convert(dstTexture.type); + let glTarget; + if (dstTexture.isData3DTexture) { + textures.setTexture3D(dstTexture, 0); + glTarget = _gl.TEXTURE_3D; + } else if (dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture) { + textures.setTexture2DArray(dstTexture, 0); + glTarget = _gl.TEXTURE_2D_ARRAY; + } else { + console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray."); + return; + } + _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY); + _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha); + _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment); + const unpackRowLen = _gl.getParameter(_gl.UNPACK_ROW_LENGTH); + const unpackImageHeight = _gl.getParameter(_gl.UNPACK_IMAGE_HEIGHT); + const unpackSkipPixels = _gl.getParameter(_gl.UNPACK_SKIP_PIXELS); + const unpackSkipRows = _gl.getParameter(_gl.UNPACK_SKIP_ROWS); + const unpackSkipImages = _gl.getParameter(_gl.UNPACK_SKIP_IMAGES); + const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[level] : srcTexture.image; + _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, image.width); + _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, image.height); + _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, sourceBox.min.x); + _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, sourceBox.min.y); + _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, sourceBox.min.z); + if (srcTexture.isDataTexture || srcTexture.isData3DTexture) { + _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth2, glFormat, glType, image.data); + } else { + if (dstTexture.isCompressedArrayTexture) { + _gl.compressedTexSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth2, glFormat, image.data); + } else { + _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth2, glFormat, glType, image); + } + } + _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, unpackRowLen); + _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight); + _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, unpackSkipPixels); + _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, unpackSkipRows); + _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, unpackSkipImages); + if (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(glTarget); + state.unbindTexture(); + }; + this.initTexture = function(texture) { + if (texture.isCubeTexture) { + textures.setTextureCube(texture, 0); + } else if (texture.isData3DTexture) { + textures.setTexture3D(texture, 0); + } else if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) { + textures.setTexture2DArray(texture, 0); + } else { + textures.setTexture2D(texture, 0); + } + state.unbindTexture(); + }; + this.resetState = function() { + _currentActiveCubeFace = 0; + _currentActiveMipmapLevel = 0; + _currentRenderTarget = null; + state.reset(); + bindingStates.reset(); + }; + if (typeof __THREE_DEVTOOLS__ !== "undefined") { + __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this })); + } + } + get coordinateSystem() { + return WebGLCoordinateSystem; + } + get outputColorSpace() { + return this._outputColorSpace; + } + set outputColorSpace(colorSpace) { + this._outputColorSpace = colorSpace; + const gl = this.getContext(); + gl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? "display-p3" : "srgb"; + gl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? "display-p3" : "srgb"; + } + get useLegacyLights() { + console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."); + return this._useLegacyLights; + } + set useLegacyLights(value) { + console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."); + this._useLegacyLights = value; + } +}; +var Scene = class extends Object3D { + constructor() { + super(); + this.isScene = true; + this.type = "Scene"; + this.background = null; + this.environment = null; + this.fog = null; + this.backgroundBlurriness = 0; + this.backgroundIntensity = 1; + this.backgroundRotation = new Euler(); + this.environmentIntensity = 1; + this.environmentRotation = new Euler(); + this.overrideMaterial = null; + if (typeof __THREE_DEVTOOLS__ !== "undefined") { + __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this })); + } + } + copy(source, recursive) { + super.copy(source, recursive); + if (source.background !== null) this.background = source.background.clone(); + if (source.environment !== null) this.environment = source.environment.clone(); + if (source.fog !== null) this.fog = source.fog.clone(); + this.backgroundBlurriness = source.backgroundBlurriness; + this.backgroundIntensity = source.backgroundIntensity; + this.backgroundRotation.copy(source.backgroundRotation); + this.environmentIntensity = source.environmentIntensity; + this.environmentRotation.copy(source.environmentRotation); + if (source.overrideMaterial !== null) this.overrideMaterial = source.overrideMaterial.clone(); + this.matrixAutoUpdate = source.matrixAutoUpdate; + return this; + } + toJSON(meta) { + const data = super.toJSON(meta); + if (this.fog !== null) data.object.fog = this.fog.toJSON(); + if (this.backgroundBlurriness > 0) data.object.backgroundBlurriness = this.backgroundBlurriness; + if (this.backgroundIntensity !== 1) data.object.backgroundIntensity = this.backgroundIntensity; + data.object.backgroundRotation = this.backgroundRotation.toArray(); + if (this.environmentIntensity !== 1) data.object.environmentIntensity = this.environmentIntensity; + data.object.environmentRotation = this.environmentRotation.toArray(); + return data; + } +}; +var InterleavedBuffer = class { + constructor(array, stride) { + this.isInterleavedBuffer = true; + this.array = array; + this.stride = stride; + this.count = array !== void 0 ? array.length / stride : 0; + this.usage = StaticDrawUsage; + this._updateRange = { offset: 0, count: -1 }; + this.updateRanges = []; + this.version = 0; + this.uuid = generateUUID(); + } + onUploadCallback() { + } + set needsUpdate(value) { + if (value === true) this.version++; + } + get updateRange() { + warnOnce("THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."); + return this._updateRange; + } + setUsage(value) { + this.usage = value; + return this; + } + addUpdateRange(start, count) { + this.updateRanges.push({ start, count }); + } + clearUpdateRanges() { + this.updateRanges.length = 0; + } + copy(source) { + this.array = new source.array.constructor(source.array); + this.count = source.count; + this.stride = source.stride; + this.usage = source.usage; + return this; + } + copyAt(index1, attribute, index2) { + index1 *= this.stride; + index2 *= attribute.stride; + for (let i = 0, l = this.stride; i < l; i++) { + this.array[index1 + i] = attribute.array[index2 + i]; + } + return this; + } + set(value, offset = 0) { + this.array.set(value, offset); + return this; + } + clone(data) { + if (data.arrayBuffers === void 0) { + data.arrayBuffers = {}; + } + if (this.array.buffer._uuid === void 0) { + this.array.buffer._uuid = generateUUID(); + } + if (data.arrayBuffers[this.array.buffer._uuid] === void 0) { + data.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer; + } + const array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]); + const ib = new this.constructor(array, this.stride); + ib.setUsage(this.usage); + return ib; + } + onUpload(callback) { + this.onUploadCallback = callback; + return this; + } + toJSON(data) { + if (data.arrayBuffers === void 0) { + data.arrayBuffers = {}; + } + if (this.array.buffer._uuid === void 0) { + this.array.buffer._uuid = generateUUID(); + } + if (data.arrayBuffers[this.array.buffer._uuid] === void 0) { + data.arrayBuffers[this.array.buffer._uuid] = Array.from(new Uint32Array(this.array.buffer)); + } + return { + uuid: this.uuid, + buffer: this.array.buffer._uuid, + type: this.array.constructor.name, + stride: this.stride + }; + } +}; +var _vector$6 = /* @__PURE__ */ new Vector3(); +var InterleavedBufferAttribute = class _InterleavedBufferAttribute { + constructor(interleavedBuffer, itemSize, offset, normalized = false) { + this.isInterleavedBufferAttribute = true; + this.name = ""; + this.data = interleavedBuffer; + this.itemSize = itemSize; + this.offset = offset; + this.normalized = normalized; + } + get count() { + return this.data.count; + } + get array() { + return this.data.array; + } + set needsUpdate(value) { + this.data.needsUpdate = value; + } + applyMatrix4(m) { + for (let i = 0, l = this.data.count; i < l; i++) { + _vector$6.fromBufferAttribute(this, i); + _vector$6.applyMatrix4(m); + this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z); + } + return this; + } + applyNormalMatrix(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$6.fromBufferAttribute(this, i); + _vector$6.applyNormalMatrix(m); + this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z); + } + return this; + } + transformDirection(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$6.fromBufferAttribute(this, i); + _vector$6.transformDirection(m); + this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z); + } + return this; + } + getComponent(index, component) { + let value = this.array[index * this.data.stride + this.offset + component]; + if (this.normalized) value = denormalize(value, this.array); + return value; + } + setComponent(index, component, value) { + if (this.normalized) value = normalize(value, this.array); + this.data.array[index * this.data.stride + this.offset + component] = value; + return this; + } + setX(index, x) { + if (this.normalized) x = normalize(x, this.array); + this.data.array[index * this.data.stride + this.offset] = x; + return this; + } + setY(index, y) { + if (this.normalized) y = normalize(y, this.array); + this.data.array[index * this.data.stride + this.offset + 1] = y; + return this; + } + setZ(index, z) { + if (this.normalized) z = normalize(z, this.array); + this.data.array[index * this.data.stride + this.offset + 2] = z; + return this; + } + setW(index, w) { + if (this.normalized) w = normalize(w, this.array); + this.data.array[index * this.data.stride + this.offset + 3] = w; + return this; + } + getX(index) { + let x = this.data.array[index * this.data.stride + this.offset]; + if (this.normalized) x = denormalize(x, this.array); + return x; + } + getY(index) { + let y = this.data.array[index * this.data.stride + this.offset + 1]; + if (this.normalized) y = denormalize(y, this.array); + return y; + } + getZ(index) { + let z = this.data.array[index * this.data.stride + this.offset + 2]; + if (this.normalized) z = denormalize(z, this.array); + return z; + } + getW(index) { + let w = this.data.array[index * this.data.stride + this.offset + 3]; + if (this.normalized) w = denormalize(w, this.array); + return w; + } + setXY(index, x, y) { + index = index * this.data.stride + this.offset; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + } + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; + return this; + } + setXYZ(index, x, y, z) { + index = index * this.data.stride + this.offset; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + z = normalize(z, this.array); + } + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; + this.data.array[index + 2] = z; + return this; + } + setXYZW(index, x, y, z, w) { + index = index * this.data.stride + this.offset; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + z = normalize(z, this.array); + w = normalize(w, this.array); + } + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; + this.data.array[index + 2] = z; + this.data.array[index + 3] = w; + return this; + } + clone(data) { + if (data === void 0) { + console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data."); + const array = []; + for (let i = 0; i < this.count; i++) { + const index = i * this.data.stride + this.offset; + for (let j = 0; j < this.itemSize; j++) { + array.push(this.data.array[index + j]); + } + } + return new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized); + } else { + if (data.interleavedBuffers === void 0) { + data.interleavedBuffers = {}; + } + if (data.interleavedBuffers[this.data.uuid] === void 0) { + data.interleavedBuffers[this.data.uuid] = this.data.clone(data); + } + return new _InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized); + } + } + toJSON(data) { + if (data === void 0) { + console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data."); + const array = []; + for (let i = 0; i < this.count; i++) { + const index = i * this.data.stride + this.offset; + for (let j = 0; j < this.itemSize; j++) { + array.push(this.data.array[index + j]); + } + } + return { + itemSize: this.itemSize, + type: this.array.constructor.name, + array, + normalized: this.normalized + }; + } else { + if (data.interleavedBuffers === void 0) { + data.interleavedBuffers = {}; + } + if (data.interleavedBuffers[this.data.uuid] === void 0) { + data.interleavedBuffers[this.data.uuid] = this.data.toJSON(data); + } + return { + isInterleavedBufferAttribute: true, + itemSize: this.itemSize, + data: this.data.uuid, + offset: this.offset, + normalized: this.normalized + }; + } + } +}; +var _basePosition = /* @__PURE__ */ new Vector3(); +var _skinIndex = /* @__PURE__ */ new Vector4(); +var _skinWeight = /* @__PURE__ */ new Vector4(); +var _vector3 = /* @__PURE__ */ new Vector3(); +var _matrix4 = /* @__PURE__ */ new Matrix4(); +var _vertex = /* @__PURE__ */ new Vector3(); +var _sphere$4 = /* @__PURE__ */ new Sphere(); +var _inverseMatrix$2 = /* @__PURE__ */ new Matrix4(); +var _ray$2 = /* @__PURE__ */ new Ray(); +var SkinnedMesh = class extends Mesh { + constructor(geometry, material) { + super(geometry, material); + this.isSkinnedMesh = true; + this.type = "SkinnedMesh"; + this.bindMode = AttachedBindMode; + this.bindMatrix = new Matrix4(); + this.bindMatrixInverse = new Matrix4(); + this.boundingBox = null; + this.boundingSphere = null; + } + computeBoundingBox() { + const geometry = this.geometry; + if (this.boundingBox === null) { + this.boundingBox = new Box3(); + } + this.boundingBox.makeEmpty(); + const positionAttribute = geometry.getAttribute("position"); + for (let i = 0; i < positionAttribute.count; i++) { + this.getVertexPosition(i, _vertex); + this.boundingBox.expandByPoint(_vertex); + } + } + computeBoundingSphere() { + const geometry = this.geometry; + if (this.boundingSphere === null) { + this.boundingSphere = new Sphere(); + } + this.boundingSphere.makeEmpty(); + const positionAttribute = geometry.getAttribute("position"); + for (let i = 0; i < positionAttribute.count; i++) { + this.getVertexPosition(i, _vertex); + this.boundingSphere.expandByPoint(_vertex); + } + } + copy(source, recursive) { + super.copy(source, recursive); + this.bindMode = source.bindMode; + this.bindMatrix.copy(source.bindMatrix); + this.bindMatrixInverse.copy(source.bindMatrixInverse); + this.skeleton = source.skeleton; + if (source.boundingBox !== null) this.boundingBox = source.boundingBox.clone(); + if (source.boundingSphere !== null) this.boundingSphere = source.boundingSphere.clone(); + return this; + } + raycast(raycaster, intersects2) { + const material = this.material; + const matrixWorld = this.matrixWorld; + if (material === void 0) return; + if (this.boundingSphere === null) this.computeBoundingSphere(); + _sphere$4.copy(this.boundingSphere); + _sphere$4.applyMatrix4(matrixWorld); + if (raycaster.ray.intersectsSphere(_sphere$4) === false) return; + _inverseMatrix$2.copy(matrixWorld).invert(); + _ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2); + if (this.boundingBox !== null) { + if (_ray$2.intersectsBox(this.boundingBox) === false) return; + } + this._computeIntersections(raycaster, intersects2, _ray$2); + } + getVertexPosition(index, target) { + super.getVertexPosition(index, target); + this.applyBoneTransform(index, target); + return target; + } + bind(skeleton, bindMatrix) { + this.skeleton = skeleton; + if (bindMatrix === void 0) { + this.updateMatrixWorld(true); + this.skeleton.calculateInverses(); + bindMatrix = this.matrixWorld; + } + this.bindMatrix.copy(bindMatrix); + this.bindMatrixInverse.copy(bindMatrix).invert(); + } + pose() { + this.skeleton.pose(); + } + normalizeSkinWeights() { + const vector = new Vector4(); + const skinWeight = this.geometry.attributes.skinWeight; + for (let i = 0, l = skinWeight.count; i < l; i++) { + vector.fromBufferAttribute(skinWeight, i); + const scale = 1 / vector.manhattanLength(); + if (scale !== Infinity) { + vector.multiplyScalar(scale); + } else { + vector.set(1, 0, 0, 0); + } + skinWeight.setXYZW(i, vector.x, vector.y, vector.z, vector.w); + } + } + updateMatrixWorld(force) { + super.updateMatrixWorld(force); + if (this.bindMode === AttachedBindMode) { + this.bindMatrixInverse.copy(this.matrixWorld).invert(); + } else if (this.bindMode === DetachedBindMode) { + this.bindMatrixInverse.copy(this.bindMatrix).invert(); + } else { + console.warn("THREE.SkinnedMesh: Unrecognized bindMode: " + this.bindMode); + } + } + applyBoneTransform(index, vector) { + const skeleton = this.skeleton; + const geometry = this.geometry; + _skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index); + _skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index); + _basePosition.copy(vector).applyMatrix4(this.bindMatrix); + vector.set(0, 0, 0); + for (let i = 0; i < 4; i++) { + const weight = _skinWeight.getComponent(i); + if (weight !== 0) { + const boneIndex = _skinIndex.getComponent(i); + _matrix4.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]); + vector.addScaledVector(_vector3.copy(_basePosition).applyMatrix4(_matrix4), weight); + } + } + return vector.applyMatrix4(this.bindMatrixInverse); + } +}; +var Bone = class extends Object3D { + constructor() { + super(); + this.isBone = true; + this.type = "Bone"; + } +}; +var DataTexture = class extends Texture { + constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace) { + super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace); + this.isDataTexture = true; + this.image = { data, width, height }; + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + } +}; +var _offsetMatrix = /* @__PURE__ */ new Matrix4(); +var _identityMatrix$1 = /* @__PURE__ */ new Matrix4(); +var Skeleton = class _Skeleton { + constructor(bones = [], boneInverses = []) { + this.uuid = generateUUID(); + this.bones = bones.slice(0); + this.boneInverses = boneInverses; + this.boneMatrices = null; + this.boneTexture = null; + this.init(); + } + init() { + const bones = this.bones; + const boneInverses = this.boneInverses; + this.boneMatrices = new Float32Array(bones.length * 16); + if (boneInverses.length === 0) { + this.calculateInverses(); + } else { + if (bones.length !== boneInverses.length) { + console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."); + this.boneInverses = []; + for (let i = 0, il = this.bones.length; i < il; i++) { + this.boneInverses.push(new Matrix4()); + } + } + } + } + calculateInverses() { + this.boneInverses.length = 0; + for (let i = 0, il = this.bones.length; i < il; i++) { + const inverse = new Matrix4(); + if (this.bones[i]) { + inverse.copy(this.bones[i].matrixWorld).invert(); + } + this.boneInverses.push(inverse); + } + } + pose() { + for (let i = 0, il = this.bones.length; i < il; i++) { + const bone = this.bones[i]; + if (bone) { + bone.matrixWorld.copy(this.boneInverses[i]).invert(); + } + } + for (let i = 0, il = this.bones.length; i < il; i++) { + const bone = this.bones[i]; + if (bone) { + if (bone.parent && bone.parent.isBone) { + bone.matrix.copy(bone.parent.matrixWorld).invert(); + bone.matrix.multiply(bone.matrixWorld); + } else { + bone.matrix.copy(bone.matrixWorld); + } + bone.matrix.decompose(bone.position, bone.quaternion, bone.scale); + } + } + } + update() { + const bones = this.bones; + const boneInverses = this.boneInverses; + const boneMatrices = this.boneMatrices; + const boneTexture = this.boneTexture; + for (let i = 0, il = bones.length; i < il; i++) { + const matrix = bones[i] ? bones[i].matrixWorld : _identityMatrix$1; + _offsetMatrix.multiplyMatrices(matrix, boneInverses[i]); + _offsetMatrix.toArray(boneMatrices, i * 16); + } + if (boneTexture !== null) { + boneTexture.needsUpdate = true; + } + } + clone() { + return new _Skeleton(this.bones, this.boneInverses); + } + computeBoneTexture() { + let size = Math.sqrt(this.bones.length * 4); + size = Math.ceil(size / 4) * 4; + size = Math.max(size, 4); + const boneMatrices = new Float32Array(size * size * 4); + boneMatrices.set(this.boneMatrices); + const boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType); + boneTexture.needsUpdate = true; + this.boneMatrices = boneMatrices; + this.boneTexture = boneTexture; + return this; + } + getBoneByName(name) { + for (let i = 0, il = this.bones.length; i < il; i++) { + const bone = this.bones[i]; + if (bone.name === name) { + return bone; + } + } + return void 0; + } + dispose() { + if (this.boneTexture !== null) { + this.boneTexture.dispose(); + this.boneTexture = null; + } + } + fromJSON(json, bones) { + this.uuid = json.uuid; + for (let i = 0, l = json.bones.length; i < l; i++) { + const uuid = json.bones[i]; + let bone = bones[uuid]; + if (bone === void 0) { + console.warn("THREE.Skeleton: No bone found with UUID:", uuid); + bone = new Bone(); + } + this.bones.push(bone); + this.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i])); + } + this.init(); + return this; + } + toJSON() { + const data = { + metadata: { + version: 4.6, + type: "Skeleton", + generator: "Skeleton.toJSON" + }, + bones: [], + boneInverses: [] + }; + data.uuid = this.uuid; + const bones = this.bones; + const boneInverses = this.boneInverses; + for (let i = 0, l = bones.length; i < l; i++) { + const bone = bones[i]; + data.bones.push(bone.uuid); + const boneInverse = boneInverses[i]; + data.boneInverses.push(boneInverse.toArray()); + } + return data; + } +}; +var InstancedBufferAttribute = class extends BufferAttribute { + constructor(array, itemSize, normalized, meshPerAttribute = 1) { + super(array, itemSize, normalized); + this.isInstancedBufferAttribute = true; + this.meshPerAttribute = meshPerAttribute; + } + copy(source) { + super.copy(source); + this.meshPerAttribute = source.meshPerAttribute; + return this; + } + toJSON() { + const data = super.toJSON(); + data.meshPerAttribute = this.meshPerAttribute; + data.isInstancedBufferAttribute = true; + return data; + } +}; +var _instanceLocalMatrix = /* @__PURE__ */ new Matrix4(); +var _instanceWorldMatrix = /* @__PURE__ */ new Matrix4(); +var _instanceIntersects = []; +var _box3 = /* @__PURE__ */ new Box3(); +var _identity = /* @__PURE__ */ new Matrix4(); +var _mesh$1 = /* @__PURE__ */ new Mesh(); +var _sphere$3 = /* @__PURE__ */ new Sphere(); +var InstancedMesh = class extends Mesh { + constructor(geometry, material, count) { + super(geometry, material); + this.isInstancedMesh = true; + this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16); + this.instanceColor = null; + this.morphTexture = null; + this.count = count; + this.boundingBox = null; + this.boundingSphere = null; + for (let i = 0; i < count; i++) { + this.setMatrixAt(i, _identity); + } + } + computeBoundingBox() { + const geometry = this.geometry; + const count = this.count; + if (this.boundingBox === null) { + this.boundingBox = new Box3(); + } + if (geometry.boundingBox === null) { + geometry.computeBoundingBox(); + } + this.boundingBox.makeEmpty(); + for (let i = 0; i < count; i++) { + this.getMatrixAt(i, _instanceLocalMatrix); + _box3.copy(geometry.boundingBox).applyMatrix4(_instanceLocalMatrix); + this.boundingBox.union(_box3); + } + } + computeBoundingSphere() { + const geometry = this.geometry; + const count = this.count; + if (this.boundingSphere === null) { + this.boundingSphere = new Sphere(); + } + if (geometry.boundingSphere === null) { + geometry.computeBoundingSphere(); + } + this.boundingSphere.makeEmpty(); + for (let i = 0; i < count; i++) { + this.getMatrixAt(i, _instanceLocalMatrix); + _sphere$3.copy(geometry.boundingSphere).applyMatrix4(_instanceLocalMatrix); + this.boundingSphere.union(_sphere$3); + } + } + copy(source, recursive) { + super.copy(source, recursive); + this.instanceMatrix.copy(source.instanceMatrix); + if (source.morphTexture !== null) this.morphTexture = source.morphTexture.clone(); + if (source.instanceColor !== null) this.instanceColor = source.instanceColor.clone(); + this.count = source.count; + if (source.boundingBox !== null) this.boundingBox = source.boundingBox.clone(); + if (source.boundingSphere !== null) this.boundingSphere = source.boundingSphere.clone(); + return this; + } + getColorAt(index, color) { + color.fromArray(this.instanceColor.array, index * 3); + } + getMatrixAt(index, matrix) { + matrix.fromArray(this.instanceMatrix.array, index * 16); + } + getMorphAt(index, object) { + const objectInfluences = object.morphTargetInfluences; + const array = this.morphTexture.source.data.data; + const len = objectInfluences.length + 1; + const dataIndex = index * len + 1; + for (let i = 0; i < objectInfluences.length; i++) { + objectInfluences[i] = array[dataIndex + i]; + } + } + raycast(raycaster, intersects2) { + const matrixWorld = this.matrixWorld; + const raycastTimes = this.count; + _mesh$1.geometry = this.geometry; + _mesh$1.material = this.material; + if (_mesh$1.material === void 0) return; + if (this.boundingSphere === null) this.computeBoundingSphere(); + _sphere$3.copy(this.boundingSphere); + _sphere$3.applyMatrix4(matrixWorld); + if (raycaster.ray.intersectsSphere(_sphere$3) === false) return; + for (let instanceId = 0; instanceId < raycastTimes; instanceId++) { + this.getMatrixAt(instanceId, _instanceLocalMatrix); + _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix); + _mesh$1.matrixWorld = _instanceWorldMatrix; + _mesh$1.raycast(raycaster, _instanceIntersects); + for (let i = 0, l = _instanceIntersects.length; i < l; i++) { + const intersect2 = _instanceIntersects[i]; + intersect2.instanceId = instanceId; + intersect2.object = this; + intersects2.push(intersect2); + } + _instanceIntersects.length = 0; + } + } + setColorAt(index, color) { + if (this.instanceColor === null) { + this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3), 3); + } + color.toArray(this.instanceColor.array, index * 3); + } + setMatrixAt(index, matrix) { + matrix.toArray(this.instanceMatrix.array, index * 16); + } + setMorphAt(index, object) { + const objectInfluences = object.morphTargetInfluences; + const len = objectInfluences.length + 1; + if (this.morphTexture === null) { + this.morphTexture = new DataTexture(new Float32Array(len * this.count), len, this.count, RedFormat, FloatType); + } + const array = this.morphTexture.source.data.data; + let morphInfluencesSum = 0; + for (let i = 0; i < objectInfluences.length; i++) { + morphInfluencesSum += objectInfluences[i]; + } + const morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum; + const dataIndex = len * index; + array[dataIndex] = morphBaseInfluence; + array.set(objectInfluences, dataIndex + 1); + } + updateMorphTargets() { + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + if (this.morphTexture !== null) { + this.morphTexture.dispose(); + this.morphTexture = null; + } + return this; + } +}; +var LineBasicMaterial = class extends Material { + constructor(parameters) { + super(); + this.isLineBasicMaterial = true; + this.type = "LineBasicMaterial"; + this.color = new Color(16777215); + this.map = null; + this.linewidth = 1; + this.linecap = "round"; + this.linejoin = "round"; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.linewidth = source.linewidth; + this.linecap = source.linecap; + this.linejoin = source.linejoin; + this.fog = source.fog; + return this; + } +}; +var _start$1 = /* @__PURE__ */ new Vector3(); +var _end$1 = /* @__PURE__ */ new Vector3(); +var _inverseMatrix$1 = /* @__PURE__ */ new Matrix4(); +var _ray$1 = /* @__PURE__ */ new Ray(); +var _sphere$1 = /* @__PURE__ */ new Sphere(); +var Line = class extends Object3D { + constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) { + super(); + this.isLine = true; + this.type = "Line"; + this.geometry = geometry; + this.material = material; + this.updateMorphTargets(); + } + copy(source, recursive) { + super.copy(source, recursive); + this.material = Array.isArray(source.material) ? source.material.slice() : source.material; + this.geometry = source.geometry; + return this; + } + computeLineDistances() { + const geometry = this.geometry; + if (geometry.index === null) { + const positionAttribute = geometry.attributes.position; + const lineDistances = [0]; + for (let i = 1, l = positionAttribute.count; i < l; i++) { + _start$1.fromBufferAttribute(positionAttribute, i - 1); + _end$1.fromBufferAttribute(positionAttribute, i); + lineDistances[i] = lineDistances[i - 1]; + lineDistances[i] += _start$1.distanceTo(_end$1); + } + geometry.setAttribute("lineDistance", new Float32BufferAttribute(lineDistances, 1)); + } else { + console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry."); + } + return this; + } + raycast(raycaster, intersects2) { + const geometry = this.geometry; + const matrixWorld = this.matrixWorld; + const threshold = raycaster.params.Line.threshold; + const drawRange = geometry.drawRange; + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + _sphere$1.copy(geometry.boundingSphere); + _sphere$1.applyMatrix4(matrixWorld); + _sphere$1.radius += threshold; + if (raycaster.ray.intersectsSphere(_sphere$1) === false) return; + _inverseMatrix$1.copy(matrixWorld).invert(); + _ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1); + const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3); + const localThresholdSq = localThreshold * localThreshold; + const vStart = new Vector3(); + const vEnd = new Vector3(); + const interSegment = new Vector3(); + const interRay = new Vector3(); + const step = this.isLineSegments ? 2 : 1; + const index = geometry.index; + const attributes = geometry.attributes; + const positionAttribute = attributes.position; + if (index !== null) { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + for (let i = start, l = end - 1; i < l; i += step) { + const a = index.getX(i); + const b = index.getX(i + 1); + vStart.fromBufferAttribute(positionAttribute, a); + vEnd.fromBufferAttribute(positionAttribute, b); + const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment); + if (distSq > localThresholdSq) continue; + interRay.applyMatrix4(this.matrixWorld); + const distance = raycaster.ray.origin.distanceTo(interRay); + if (distance < raycaster.near || distance > raycaster.far) continue; + intersects2.push({ + distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4(this.matrixWorld), + index: i, + face: null, + faceIndex: null, + object: this + }); + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count); + for (let i = start, l = end - 1; i < l; i += step) { + vStart.fromBufferAttribute(positionAttribute, i); + vEnd.fromBufferAttribute(positionAttribute, i + 1); + const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment); + if (distSq > localThresholdSq) continue; + interRay.applyMatrix4(this.matrixWorld); + const distance = raycaster.ray.origin.distanceTo(interRay); + if (distance < raycaster.near || distance > raycaster.far) continue; + intersects2.push({ + distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4(this.matrixWorld), + index: i, + face: null, + faceIndex: null, + object: this + }); + } + } + } + updateMorphTargets() { + const geometry = this.geometry; + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + if (morphAttribute !== void 0) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } +}; +var _start = /* @__PURE__ */ new Vector3(); +var _end = /* @__PURE__ */ new Vector3(); +var LineSegments = class extends Line { + constructor(geometry, material) { + super(geometry, material); + this.isLineSegments = true; + this.type = "LineSegments"; + } + computeLineDistances() { + const geometry = this.geometry; + if (geometry.index === null) { + const positionAttribute = geometry.attributes.position; + const lineDistances = []; + for (let i = 0, l = positionAttribute.count; i < l; i += 2) { + _start.fromBufferAttribute(positionAttribute, i); + _end.fromBufferAttribute(positionAttribute, i + 1); + lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1]; + lineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end); + } + geometry.setAttribute("lineDistance", new Float32BufferAttribute(lineDistances, 1)); + } else { + console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry."); + } + return this; + } +}; +var LineLoop = class extends Line { + constructor(geometry, material) { + super(geometry, material); + this.isLineLoop = true; + this.type = "LineLoop"; + } +}; +var PointsMaterial = class extends Material { + constructor(parameters) { + super(); + this.isPointsMaterial = true; + this.type = "PointsMaterial"; + this.color = new Color(16777215); + this.map = null; + this.alphaMap = null; + this.size = 1; + this.sizeAttenuation = true; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.alphaMap = source.alphaMap; + this.size = source.size; + this.sizeAttenuation = source.sizeAttenuation; + this.fog = source.fog; + return this; + } +}; +var _inverseMatrix = /* @__PURE__ */ new Matrix4(); +var _ray = /* @__PURE__ */ new Ray(); +var _sphere = /* @__PURE__ */ new Sphere(); +var _position$2 = /* @__PURE__ */ new Vector3(); +var Points = class extends Object3D { + constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) { + super(); + this.isPoints = true; + this.type = "Points"; + this.geometry = geometry; + this.material = material; + this.updateMorphTargets(); + } + copy(source, recursive) { + super.copy(source, recursive); + this.material = Array.isArray(source.material) ? source.material.slice() : source.material; + this.geometry = source.geometry; + return this; + } + raycast(raycaster, intersects2) { + const geometry = this.geometry; + const matrixWorld = this.matrixWorld; + const threshold = raycaster.params.Points.threshold; + const drawRange = geometry.drawRange; + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + _sphere.copy(geometry.boundingSphere); + _sphere.applyMatrix4(matrixWorld); + _sphere.radius += threshold; + if (raycaster.ray.intersectsSphere(_sphere) === false) return; + _inverseMatrix.copy(matrixWorld).invert(); + _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix); + const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3); + const localThresholdSq = localThreshold * localThreshold; + const index = geometry.index; + const attributes = geometry.attributes; + const positionAttribute = attributes.position; + if (index !== null) { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + for (let i = start, il = end; i < il; i++) { + const a = index.getX(i); + _position$2.fromBufferAttribute(positionAttribute, a); + testPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster, intersects2, this); + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count); + for (let i = start, l = end; i < l; i++) { + _position$2.fromBufferAttribute(positionAttribute, i); + testPoint(_position$2, i, localThresholdSq, matrixWorld, raycaster, intersects2, this); + } + } + } + updateMorphTargets() { + const geometry = this.geometry; + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + if (morphAttribute !== void 0) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } +}; +function testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects2, object) { + const rayPointDistanceSq = _ray.distanceSqToPoint(point); + if (rayPointDistanceSq < localThresholdSq) { + const intersectPoint = new Vector3(); + _ray.closestPointToPoint(point, intersectPoint); + intersectPoint.applyMatrix4(matrixWorld); + const distance = raycaster.ray.origin.distanceTo(intersectPoint); + if (distance < raycaster.near || distance > raycaster.far) return; + intersects2.push({ + distance, + distanceToRay: Math.sqrt(rayPointDistanceSq), + point: intersectPoint, + index, + face: null, + object + }); + } +} +var VideoTexture = class extends Texture { + constructor(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) { + super(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); + this.isVideoTexture = true; + this.minFilter = minFilter !== void 0 ? minFilter : LinearFilter; + this.magFilter = magFilter !== void 0 ? magFilter : LinearFilter; + this.generateMipmaps = false; + const scope = this; + function updateVideo() { + scope.needsUpdate = true; + video.requestVideoFrameCallback(updateVideo); + } + if ("requestVideoFrameCallback" in video) { + video.requestVideoFrameCallback(updateVideo); + } + } + clone() { + return new this.constructor(this.image).copy(this); + } + update() { + const video = this.image; + const hasVideoFrameCallback = "requestVideoFrameCallback" in video; + if (hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA) { + this.needsUpdate = true; + } + } +}; +var CanvasTexture = class extends Texture { + constructor(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) { + super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); + this.isCanvasTexture = true; + this.needsUpdate = true; + } +}; +var Curve = class { + constructor() { + this.type = "Curve"; + this.arcLengthDivisions = 200; + } + // Virtual base class method to overwrite and implement in subclasses + // - t [0 .. 1] + getPoint() { + console.warn("THREE.Curve: .getPoint() not implemented."); + return null; + } + // Get point at relative position in curve according to arc length + // - u [0 .. 1] + getPointAt(u, optionalTarget) { + const t = this.getUtoTmapping(u); + return this.getPoint(t, optionalTarget); + } + // Get sequence of points using getPoint( t ) + getPoints(divisions = 5) { + const points = []; + for (let d = 0; d <= divisions; d++) { + points.push(this.getPoint(d / divisions)); + } + return points; + } + // Get sequence of points using getPointAt( u ) + getSpacedPoints(divisions = 5) { + const points = []; + for (let d = 0; d <= divisions; d++) { + points.push(this.getPointAt(d / divisions)); + } + return points; + } + // Get total curve arc length + getLength() { + const lengths = this.getLengths(); + return lengths[lengths.length - 1]; + } + // Get list of cumulative segment lengths + getLengths(divisions = this.arcLengthDivisions) { + if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) { + return this.cacheArcLengths; + } + this.needsUpdate = false; + const cache = []; + let current, last = this.getPoint(0); + let sum = 0; + cache.push(0); + for (let p = 1; p <= divisions; p++) { + current = this.getPoint(p / divisions); + sum += current.distanceTo(last); + cache.push(sum); + last = current; + } + this.cacheArcLengths = cache; + return cache; + } + updateArcLengths() { + this.needsUpdate = true; + this.getLengths(); + } + // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant + getUtoTmapping(u, distance) { + const arcLengths = this.getLengths(); + let i = 0; + const il = arcLengths.length; + let targetArcLength; + if (distance) { + targetArcLength = distance; + } else { + targetArcLength = u * arcLengths[il - 1]; + } + let low = 0, high = il - 1, comparison; + while (low <= high) { + i = Math.floor(low + (high - low) / 2); + comparison = arcLengths[i] - targetArcLength; + if (comparison < 0) { + low = i + 1; + } else if (comparison > 0) { + high = i - 1; + } else { + high = i; + break; + } + } + i = high; + if (arcLengths[i] === targetArcLength) { + return i / (il - 1); + } + const lengthBefore = arcLengths[i]; + const lengthAfter = arcLengths[i + 1]; + const segmentLength = lengthAfter - lengthBefore; + const segmentFraction = (targetArcLength - lengthBefore) / segmentLength; + const t = (i + segmentFraction) / (il - 1); + return t; + } + // Returns a unit vector tangent at t + // In case any sub curve does not implement its tangent derivation, + // 2 points a small delta apart will be used to find its gradient + // which seems to give a reasonable approximation + getTangent(t, optionalTarget) { + const delta = 1e-4; + let t1 = t - delta; + let t2 = t + delta; + if (t1 < 0) t1 = 0; + if (t2 > 1) t2 = 1; + const pt1 = this.getPoint(t1); + const pt2 = this.getPoint(t2); + const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3()); + tangent.copy(pt2).sub(pt1).normalize(); + return tangent; + } + getTangentAt(u, optionalTarget) { + const t = this.getUtoTmapping(u); + return this.getTangent(t, optionalTarget); + } + computeFrenetFrames(segments, closed) { + const normal = new Vector3(); + const tangents = []; + const normals = []; + const binormals = []; + const vec = new Vector3(); + const mat = new Matrix4(); + for (let i = 0; i <= segments; i++) { + const u = i / segments; + tangents[i] = this.getTangentAt(u, new Vector3()); + } + normals[0] = new Vector3(); + binormals[0] = new Vector3(); + let min = Number.MAX_VALUE; + const tx = Math.abs(tangents[0].x); + const ty = Math.abs(tangents[0].y); + const tz = Math.abs(tangents[0].z); + if (tx <= min) { + min = tx; + normal.set(1, 0, 0); + } + if (ty <= min) { + min = ty; + normal.set(0, 1, 0); + } + if (tz <= min) { + normal.set(0, 0, 1); + } + vec.crossVectors(tangents[0], normal).normalize(); + normals[0].crossVectors(tangents[0], vec); + binormals[0].crossVectors(tangents[0], normals[0]); + for (let i = 1; i <= segments; i++) { + normals[i] = normals[i - 1].clone(); + binormals[i] = binormals[i - 1].clone(); + vec.crossVectors(tangents[i - 1], tangents[i]); + if (vec.length() > Number.EPSILON) { + vec.normalize(); + const theta = Math.acos(clamp(tangents[i - 1].dot(tangents[i]), -1, 1)); + normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta)); + } + binormals[i].crossVectors(tangents[i], normals[i]); + } + if (closed === true) { + let theta = Math.acos(clamp(normals[0].dot(normals[segments]), -1, 1)); + theta /= segments; + if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) { + theta = -theta; + } + for (let i = 1; i <= segments; i++) { + normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i)); + binormals[i].crossVectors(tangents[i], normals[i]); + } + } + return { + tangents, + normals, + binormals + }; + } + clone() { + return new this.constructor().copy(this); + } + copy(source) { + this.arcLengthDivisions = source.arcLengthDivisions; + return this; + } + toJSON() { + const data = { + metadata: { + version: 4.6, + type: "Curve", + generator: "Curve.toJSON" + } + }; + data.arcLengthDivisions = this.arcLengthDivisions; + data.type = this.type; + return data; + } + fromJSON(json) { + this.arcLengthDivisions = json.arcLengthDivisions; + return this; + } +}; +var CylinderGeometry = class _CylinderGeometry extends BufferGeometry { + constructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) { + super(); + this.type = "CylinderGeometry"; + this.parameters = { + radiusTop, + radiusBottom, + height, + radialSegments, + heightSegments, + openEnded, + thetaStart, + thetaLength + }; + const scope = this; + radialSegments = Math.floor(radialSegments); + heightSegments = Math.floor(heightSegments); + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + let index = 0; + const indexArray = []; + const halfHeight = height / 2; + let groupStart = 0; + generateTorso(); + if (openEnded === false) { + if (radiusTop > 0) generateCap(true); + if (radiusBottom > 0) generateCap(false); + } + this.setIndex(indices); + this.setAttribute("position", new Float32BufferAttribute(vertices, 3)); + this.setAttribute("normal", new Float32BufferAttribute(normals, 3)); + this.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); + function generateTorso() { + const normal = new Vector3(); + const vertex2 = new Vector3(); + let groupCount = 0; + const slope = (radiusBottom - radiusTop) / height; + for (let y = 0; y <= heightSegments; y++) { + const indexRow = []; + const v = y / heightSegments; + const radius = v * (radiusBottom - radiusTop) + radiusTop; + for (let x = 0; x <= radialSegments; x++) { + const u = x / radialSegments; + const theta = u * thetaLength + thetaStart; + const sinTheta = Math.sin(theta); + const cosTheta = Math.cos(theta); + vertex2.x = radius * sinTheta; + vertex2.y = -v * height + halfHeight; + vertex2.z = radius * cosTheta; + vertices.push(vertex2.x, vertex2.y, vertex2.z); + normal.set(sinTheta, slope, cosTheta).normalize(); + normals.push(normal.x, normal.y, normal.z); + uvs.push(u, 1 - v); + indexRow.push(index++); + } + indexArray.push(indexRow); + } + for (let x = 0; x < radialSegments; x++) { + for (let y = 0; y < heightSegments; y++) { + const a = indexArray[y][x]; + const b = indexArray[y + 1][x]; + const c = indexArray[y + 1][x + 1]; + const d = indexArray[y][x + 1]; + indices.push(a, b, d); + indices.push(b, c, d); + groupCount += 6; + } + } + scope.addGroup(groupStart, groupCount, 0); + groupStart += groupCount; + } + function generateCap(top) { + const centerIndexStart = index; + const uv = new Vector2(); + const vertex2 = new Vector3(); + let groupCount = 0; + const radius = top === true ? radiusTop : radiusBottom; + const sign2 = top === true ? 1 : -1; + for (let x = 1; x <= radialSegments; x++) { + vertices.push(0, halfHeight * sign2, 0); + normals.push(0, sign2, 0); + uvs.push(0.5, 0.5); + index++; + } + const centerIndexEnd = index; + for (let x = 0; x <= radialSegments; x++) { + const u = x / radialSegments; + const theta = u * thetaLength + thetaStart; + const cosTheta = Math.cos(theta); + const sinTheta = Math.sin(theta); + vertex2.x = radius * sinTheta; + vertex2.y = halfHeight * sign2; + vertex2.z = radius * cosTheta; + vertices.push(vertex2.x, vertex2.y, vertex2.z); + normals.push(0, sign2, 0); + uv.x = cosTheta * 0.5 + 0.5; + uv.y = sinTheta * 0.5 * sign2 + 0.5; + uvs.push(uv.x, uv.y); + index++; + } + for (let x = 0; x < radialSegments; x++) { + const c = centerIndexStart + x; + const i = centerIndexEnd + x; + if (top === true) { + indices.push(i, i + 1, c); + } else { + indices.push(i + 1, i, c); + } + groupCount += 3; + } + scope.addGroup(groupStart, groupCount, top === true ? 1 : 2); + groupStart += groupCount; + } + } + copy(source) { + super.copy(source); + this.parameters = Object.assign({}, source.parameters); + return this; + } + static fromJSON(data) { + return new _CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength); + } +}; +var Earcut = { + triangulate: function(data, holeIndices, dim = 2) { + const hasHoles = holeIndices && holeIndices.length; + const outerLen = hasHoles ? holeIndices[0] * dim : data.length; + let outerNode = linkedList(data, 0, outerLen, dim, true); + const triangles = []; + if (!outerNode || outerNode.next === outerNode.prev) return triangles; + let minX, minY, maxX, maxY, x, y, invSize; + if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim); + if (data.length > 80 * dim) { + minX = maxX = data[0]; + minY = maxY = data[1]; + for (let i = dim; i < outerLen; i += dim) { + x = data[i]; + y = data[i + 1]; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + } + invSize = Math.max(maxX - minX, maxY - minY); + invSize = invSize !== 0 ? 32767 / invSize : 0; + } + earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0); + return triangles; + } +}; +function linkedList(data, start, end, dim, clockwise) { + let i, last; + if (clockwise === signedArea(data, start, end, dim) > 0) { + for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last); + } else { + for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last); + } + if (last && equals(last, last.next)) { + removeNode(last); + last = last.next; + } + return last; +} +function filterPoints(start, end) { + if (!start) return start; + if (!end) end = start; + let p = start, again; + do { + again = false; + if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) { + removeNode(p); + p = end = p.prev; + if (p === p.next) break; + again = true; + } else { + p = p.next; + } + } while (again || p !== end); + return end; +} +function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) { + if (!ear) return; + if (!pass && invSize) indexCurve(ear, minX, minY, invSize); + let stop = ear, prev, next; + while (ear.prev !== ear.next) { + prev = ear.prev; + next = ear.next; + if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) { + triangles.push(prev.i / dim | 0); + triangles.push(ear.i / dim | 0); + triangles.push(next.i / dim | 0); + removeNode(ear); + ear = next.next; + stop = next.next; + continue; + } + ear = next; + if (ear === stop) { + if (!pass) { + earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1); + } else if (pass === 1) { + ear = cureLocalIntersections(filterPoints(ear), triangles, dim); + earcutLinked(ear, triangles, dim, minX, minY, invSize, 2); + } else if (pass === 2) { + splitEarcut(ear, triangles, dim, minX, minY, invSize); + } + break; + } + } +} +function isEar(ear) { + const a = ear.prev, b = ear, c = ear.next; + if (area(a, b, c) >= 0) return false; + const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + const x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy; + let p = c.next; + while (p !== a) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.next; + } + return true; +} +function isEarHashed(ear, minX, minY, invSize) { + const a = ear.prev, b = ear, c = ear.next; + if (area(a, b, c) >= 0) return false; + const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + const x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy; + const minZ = zOrder(x0, y0, minX, minY, invSize), maxZ = zOrder(x1, y1, minX, minY, invSize); + let p = ear.prevZ, n = ear.nextZ; + while (p && p.z >= minZ && n && n.z <= maxZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false; + n = n.nextZ; + } + while (p && p.z >= minZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + } + while (n && n.z <= maxZ) { + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false; + n = n.nextZ; + } + return true; +} +function cureLocalIntersections(start, triangles, dim) { + let p = start; + do { + const a = p.prev, b = p.next.next; + if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) { + triangles.push(a.i / dim | 0); + triangles.push(p.i / dim | 0); + triangles.push(b.i / dim | 0); + removeNode(p); + removeNode(p.next); + p = start = b; + } + p = p.next; + } while (p !== start); + return filterPoints(p); +} +function splitEarcut(start, triangles, dim, minX, minY, invSize) { + let a = start; + do { + let b = a.next.next; + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal(a, b)) { + let c = splitPolygon(a, b); + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); + earcutLinked(a, triangles, dim, minX, minY, invSize, 0); + earcutLinked(c, triangles, dim, minX, minY, invSize, 0); + return; + } + b = b.next; + } + a = a.next; + } while (a !== start); +} +function eliminateHoles(data, holeIndices, outerNode, dim) { + const queue = []; + let i, len, start, end, list; + for (i = 0, len = holeIndices.length; i < len; i++) { + start = holeIndices[i] * dim; + end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + list = linkedList(data, start, end, dim, false); + if (list === list.next) list.steiner = true; + queue.push(getLeftmost(list)); + } + queue.sort(compareX); + for (i = 0; i < queue.length; i++) { + outerNode = eliminateHole(queue[i], outerNode); + } + return outerNode; +} +function compareX(a, b) { + return a.x - b.x; +} +function eliminateHole(hole, outerNode) { + const bridge = findHoleBridge(hole, outerNode); + if (!bridge) { + return outerNode; + } + const bridgeReverse = splitPolygon(bridge, hole); + filterPoints(bridgeReverse, bridgeReverse.next); + return filterPoints(bridge, bridge.next); +} +function findHoleBridge(hole, outerNode) { + let p = outerNode, qx = -Infinity, m; + const hx = hole.x, hy = hole.y; + do { + if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) { + const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); + if (x <= hx && x > qx) { + qx = x; + m = p.x < p.next.x ? p : p.next; + if (x === hx) return m; + } + } + p = p.next; + } while (p !== outerNode); + if (!m) return null; + const stop = m, mx = m.x, my = m.y; + let tanMin = Infinity, tan; + p = m; + do { + if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) { + tan = Math.abs(hy - p.y) / (hx - p.x); + if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) { + m = p; + tanMin = tan; + } + } + p = p.next; + } while (p !== stop); + return m; +} +function sectorContainsSector(m, p) { + return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0; +} +function indexCurve(start, minX, minY, invSize) { + let p = start; + do { + if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + p.prevZ.nextZ = null; + p.prevZ = null; + sortLinked(p); +} +function sortLinked(list) { + let i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; + do { + p = list; + list = null; + tail = null; + numMerges = 0; + while (p) { + numMerges++; + q = p; + pSize = 0; + for (i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) break; + } + qSize = inSize; + while (pSize > 0 || qSize > 0 && q) { + if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } + if (tail) tail.nextZ = e; + else list = e; + e.prevZ = tail; + tail = e; + } + p = q; + } + tail.nextZ = null; + inSize *= 2; + } while (numMerges > 1); + return list; +} +function zOrder(x, y, minX, minY, invSize) { + x = (x - minX) * invSize | 0; + y = (y - minY) * invSize | 0; + x = (x | x << 8) & 16711935; + x = (x | x << 4) & 252645135; + x = (x | x << 2) & 858993459; + x = (x | x << 1) & 1431655765; + y = (y | y << 8) & 16711935; + y = (y | y << 4) & 252645135; + y = (y | y << 2) & 858993459; + y = (y | y << 1) & 1431655765; + return x | y << 1; +} +function getLeftmost(start) { + let p = start, leftmost = start; + do { + if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p; + p = p.next; + } while (p !== start); + return leftmost; +} +function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && (ax - px) * (by - py) >= (bx - px) * (ay - py) && (bx - px) * (cy - py) >= (cx - px) * (by - py); +} +function isValidDiagonal(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges + (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible + (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors + equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); +} +function area(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); +} +function equals(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; +} +function intersects(p1, q1, p2, q2) { + const o1 = sign(area(p1, q1, p2)); + const o2 = sign(area(p1, q1, q2)); + const o3 = sign(area(p2, q2, p1)); + const o4 = sign(area(p2, q2, q1)); + if (o1 !== o2 && o3 !== o4) return true; + if (o1 === 0 && onSegment(p1, p2, q1)) return true; + if (o2 === 0 && onSegment(p1, q2, q1)) return true; + if (o3 === 0 && onSegment(p2, p1, q2)) return true; + if (o4 === 0 && onSegment(p2, q1, q2)) return true; + return false; +} +function onSegment(p, q, r) { + return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y); +} +function sign(num) { + return num > 0 ? 1 : num < 0 ? -1 : 0; +} +function intersectsPolygon(a, b) { + let p = a; + do { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true; + p = p.next; + } while (p !== a); + return false; +} +function locallyInside(a, b) { + return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0; +} +function middleInside(a, b) { + let p = a, inside = false; + const px = (a.x + b.x) / 2, py = (a.y + b.y) / 2; + do { + if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) + inside = !inside; + p = p.next; + } while (p !== a); + return inside; +} +function splitPolygon(a, b) { + const a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev; + a.next = b; + b.prev = a; + a2.next = an; + an.prev = a2; + b2.next = a2; + a2.prev = b2; + bp.next = b2; + b2.prev = bp; + return b2; +} +function insertNode(i, x, y, last) { + const p = new Node(i, x, y); + if (!last) { + p.prev = p; + p.next = p; + } else { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } + return p; +} +function removeNode(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + if (p.prevZ) p.prevZ.nextZ = p.nextZ; + if (p.nextZ) p.nextZ.prevZ = p.prevZ; +} +function Node(i, x, y) { + this.i = i; + this.x = x; + this.y = y; + this.prev = null; + this.next = null; + this.z = 0; + this.prevZ = null; + this.nextZ = null; + this.steiner = false; +} +function signedArea(data, start, end, dim) { + let sum = 0; + for (let i = start, j = end - dim; i < end; i += dim) { + sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); + j = i; + } + return sum; +} +var ShapeUtils = class _ShapeUtils { + // calculate area of the contour polygon + static area(contour) { + const n = contour.length; + let a = 0; + for (let p = n - 1, q = 0; q < n; p = q++) { + a += contour[p].x * contour[q].y - contour[q].x * contour[p].y; + } + return a * 0.5; + } + static isClockWise(pts) { + return _ShapeUtils.area(pts) < 0; + } + static triangulateShape(contour, holes) { + const vertices = []; + const holeIndices = []; + const faces = []; + removeDupEndPts(contour); + addContour(vertices, contour); + let holeIndex = contour.length; + holes.forEach(removeDupEndPts); + for (let i = 0; i < holes.length; i++) { + holeIndices.push(holeIndex); + holeIndex += holes[i].length; + addContour(vertices, holes[i]); + } + const triangles = Earcut.triangulate(vertices, holeIndices); + for (let i = 0; i < triangles.length; i += 3) { + faces.push(triangles.slice(i, i + 3)); + } + return faces; + } +}; +function removeDupEndPts(points) { + const l = points.length; + if (l > 2 && points[l - 1].equals(points[0])) { + points.pop(); + } +} +function addContour(vertices, contour) { + for (let i = 0; i < contour.length; i++) { + vertices.push(contour[i].x); + vertices.push(contour[i].y); + } +} +var SphereGeometry = class _SphereGeometry extends BufferGeometry { + constructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) { + super(); + this.type = "SphereGeometry"; + this.parameters = { + radius, + widthSegments, + heightSegments, + phiStart, + phiLength, + thetaStart, + thetaLength + }; + widthSegments = Math.max(3, Math.floor(widthSegments)); + heightSegments = Math.max(2, Math.floor(heightSegments)); + const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI); + let index = 0; + const grid = []; + const vertex2 = new Vector3(); + const normal = new Vector3(); + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + for (let iy = 0; iy <= heightSegments; iy++) { + const verticesRow = []; + const v = iy / heightSegments; + let uOffset = 0; + if (iy === 0 && thetaStart === 0) { + uOffset = 0.5 / widthSegments; + } else if (iy === heightSegments && thetaEnd === Math.PI) { + uOffset = -0.5 / widthSegments; + } + for (let ix = 0; ix <= widthSegments; ix++) { + const u = ix / widthSegments; + vertex2.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength); + vertex2.y = radius * Math.cos(thetaStart + v * thetaLength); + vertex2.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength); + vertices.push(vertex2.x, vertex2.y, vertex2.z); + normal.copy(vertex2).normalize(); + normals.push(normal.x, normal.y, normal.z); + uvs.push(u + uOffset, 1 - v); + verticesRow.push(index++); + } + grid.push(verticesRow); + } + for (let iy = 0; iy < heightSegments; iy++) { + for (let ix = 0; ix < widthSegments; ix++) { + const a = grid[iy][ix + 1]; + const b = grid[iy][ix]; + const c = grid[iy + 1][ix]; + const d = grid[iy + 1][ix + 1]; + if (iy !== 0 || thetaStart > 0) indices.push(a, b, d); + if (iy !== heightSegments - 1 || thetaEnd < Math.PI) indices.push(b, c, d); + } + } + this.setIndex(indices); + this.setAttribute("position", new Float32BufferAttribute(vertices, 3)); + this.setAttribute("normal", new Float32BufferAttribute(normals, 3)); + this.setAttribute("uv", new Float32BufferAttribute(uvs, 2)); + } + copy(source) { + super.copy(source); + this.parameters = Object.assign({}, source.parameters); + return this; + } + static fromJSON(data) { + return new _SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength); + } +}; +var MeshStandardMaterial = class extends Material { + constructor(parameters) { + super(); + this.isMeshStandardMaterial = true; + this.defines = { "STANDARD": "" }; + this.type = "MeshStandardMaterial"; + this.color = new Color(16777215); + this.roughness = 1; + this.metalness = 0; + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1; + this.aoMap = null; + this.aoMapIntensity = 1; + this.emissive = new Color(0); + this.emissiveIntensity = 1; + this.emissiveMap = null; + this.bumpMap = null; + this.bumpScale = 1; + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2(1, 1); + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.roughnessMap = null; + this.metalnessMap = null; + this.alphaMap = null; + this.envMap = null; + this.envMapRotation = new Euler(); + this.envMapIntensity = 1; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = "round"; + this.wireframeLinejoin = "round"; + this.flatShading = false; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.defines = { "STANDARD": "" }; + this.color.copy(source.color); + this.roughness = source.roughness; + this.metalness = source.metalness; + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.emissive.copy(source.emissive); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy(source.normalScale); + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.roughnessMap = source.roughnessMap; + this.metalnessMap = source.metalnessMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.envMapRotation.copy(source.envMapRotation); + this.envMapIntensity = source.envMapIntensity; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + this.flatShading = source.flatShading; + this.fog = source.fog; + return this; + } +}; +var MeshPhysicalMaterial = class extends MeshStandardMaterial { + constructor(parameters) { + super(); + this.isMeshPhysicalMaterial = true; + this.defines = { + "STANDARD": "", + "PHYSICAL": "" + }; + this.type = "MeshPhysicalMaterial"; + this.anisotropyRotation = 0; + this.anisotropyMap = null; + this.clearcoatMap = null; + this.clearcoatRoughness = 0; + this.clearcoatRoughnessMap = null; + this.clearcoatNormalScale = new Vector2(1, 1); + this.clearcoatNormalMap = null; + this.ior = 1.5; + Object.defineProperty(this, "reflectivity", { + get: function() { + return clamp(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1); + }, + set: function(reflectivity) { + this.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity); + } + }); + this.iridescenceMap = null; + this.iridescenceIOR = 1.3; + this.iridescenceThicknessRange = [100, 400]; + this.iridescenceThicknessMap = null; + this.sheenColor = new Color(0); + this.sheenColorMap = null; + this.sheenRoughness = 1; + this.sheenRoughnessMap = null; + this.transmissionMap = null; + this.thickness = 0; + this.thicknessMap = null; + this.attenuationDistance = Infinity; + this.attenuationColor = new Color(1, 1, 1); + this.specularIntensity = 1; + this.specularIntensityMap = null; + this.specularColor = new Color(1, 1, 1); + this.specularColorMap = null; + this._anisotropy = 0; + this._clearcoat = 0; + this._iridescence = 0; + this._sheen = 0; + this._transmission = 0; + this.setValues(parameters); + } + get anisotropy() { + return this._anisotropy; + } + set anisotropy(value) { + if (this._anisotropy > 0 !== value > 0) { + this.version++; + } + this._anisotropy = value; + } + get clearcoat() { + return this._clearcoat; + } + set clearcoat(value) { + if (this._clearcoat > 0 !== value > 0) { + this.version++; + } + this._clearcoat = value; + } + get iridescence() { + return this._iridescence; + } + set iridescence(value) { + if (this._iridescence > 0 !== value > 0) { + this.version++; + } + this._iridescence = value; + } + get sheen() { + return this._sheen; + } + set sheen(value) { + if (this._sheen > 0 !== value > 0) { + this.version++; + } + this._sheen = value; + } + get transmission() { + return this._transmission; + } + set transmission(value) { + if (this._transmission > 0 !== value > 0) { + this.version++; + } + this._transmission = value; + } + copy(source) { + super.copy(source); + this.defines = { + "STANDARD": "", + "PHYSICAL": "" + }; + this.anisotropy = source.anisotropy; + this.anisotropyRotation = source.anisotropyRotation; + this.anisotropyMap = source.anisotropyMap; + this.clearcoat = source.clearcoat; + this.clearcoatMap = source.clearcoatMap; + this.clearcoatRoughness = source.clearcoatRoughness; + this.clearcoatRoughnessMap = source.clearcoatRoughnessMap; + this.clearcoatNormalMap = source.clearcoatNormalMap; + this.clearcoatNormalScale.copy(source.clearcoatNormalScale); + this.ior = source.ior; + this.iridescence = source.iridescence; + this.iridescenceMap = source.iridescenceMap; + this.iridescenceIOR = source.iridescenceIOR; + this.iridescenceThicknessRange = [...source.iridescenceThicknessRange]; + this.iridescenceThicknessMap = source.iridescenceThicknessMap; + this.sheen = source.sheen; + this.sheenColor.copy(source.sheenColor); + this.sheenColorMap = source.sheenColorMap; + this.sheenRoughness = source.sheenRoughness; + this.sheenRoughnessMap = source.sheenRoughnessMap; + this.transmission = source.transmission; + this.transmissionMap = source.transmissionMap; + this.thickness = source.thickness; + this.thicknessMap = source.thicknessMap; + this.attenuationDistance = source.attenuationDistance; + this.attenuationColor.copy(source.attenuationColor); + this.specularIntensity = source.specularIntensity; + this.specularIntensityMap = source.specularIntensityMap; + this.specularColor.copy(source.specularColor); + this.specularColorMap = source.specularColorMap; + return this; + } +}; +var MeshPhongMaterial = class extends Material { + constructor(parameters) { + super(); + this.isMeshPhongMaterial = true; + this.type = "MeshPhongMaterial"; + this.color = new Color(16777215); + this.specular = new Color(1118481); + this.shininess = 30; + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1; + this.aoMap = null; + this.aoMapIntensity = 1; + this.emissive = new Color(0); + this.emissiveIntensity = 1; + this.emissiveMap = null; + this.bumpMap = null; + this.bumpScale = 1; + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2(1, 1); + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.specularMap = null; + this.alphaMap = null; + this.envMap = null; + this.envMapRotation = new Euler(); + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = "round"; + this.wireframeLinejoin = "round"; + this.flatShading = false; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.specular.copy(source.specular); + this.shininess = source.shininess; + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.emissive.copy(source.emissive); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy(source.normalScale); + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.specularMap = source.specularMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.envMapRotation.copy(source.envMapRotation); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + this.flatShading = source.flatShading; + this.fog = source.fog; + return this; + } +}; +var MeshLambertMaterial = class extends Material { + constructor(parameters) { + super(); + this.isMeshLambertMaterial = true; + this.type = "MeshLambertMaterial"; + this.color = new Color(16777215); + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1; + this.aoMap = null; + this.aoMapIntensity = 1; + this.emissive = new Color(0); + this.emissiveIntensity = 1; + this.emissiveMap = null; + this.bumpMap = null; + this.bumpScale = 1; + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2(1, 1); + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.specularMap = null; + this.alphaMap = null; + this.envMap = null; + this.envMapRotation = new Euler(); + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = "round"; + this.wireframeLinejoin = "round"; + this.flatShading = false; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.emissive.copy(source.emissive); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy(source.normalScale); + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.specularMap = source.specularMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.envMapRotation.copy(source.envMapRotation); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + this.flatShading = source.flatShading; + this.fog = source.fog; + return this; + } +}; +function convertArray(array, type, forceClone) { + if (!array || // let 'undefined' and 'null' pass + !forceClone && array.constructor === type) return array; + if (typeof type.BYTES_PER_ELEMENT === "number") { + return new type(array); + } + return Array.prototype.slice.call(array); +} +function isTypedArray(object) { + return ArrayBuffer.isView(object) && !(object instanceof DataView); +} +function getKeyframeOrder(times) { + function compareTime(i, j) { + return times[i] - times[j]; + } + const n = times.length; + const result = new Array(n); + for (let i = 0; i !== n; ++i) result[i] = i; + result.sort(compareTime); + return result; +} +function sortedArray(values, stride, order) { + const nValues = values.length; + const result = new values.constructor(nValues); + for (let i = 0, dstOffset = 0; dstOffset !== nValues; ++i) { + const srcOffset = order[i] * stride; + for (let j = 0; j !== stride; ++j) { + result[dstOffset++] = values[srcOffset + j]; + } + } + return result; +} +function flattenJSON(jsonKeys, times, values, valuePropertyName) { + let i = 1, key = jsonKeys[0]; + while (key !== void 0 && key[valuePropertyName] === void 0) { + key = jsonKeys[i++]; + } + if (key === void 0) return; + let value = key[valuePropertyName]; + if (value === void 0) return; + if (Array.isArray(value)) { + do { + value = key[valuePropertyName]; + if (value !== void 0) { + times.push(key.time); + values.push.apply(values, value); + } + key = jsonKeys[i++]; + } while (key !== void 0); + } else if (value.toArray !== void 0) { + do { + value = key[valuePropertyName]; + if (value !== void 0) { + times.push(key.time); + value.toArray(values, values.length); + } + key = jsonKeys[i++]; + } while (key !== void 0); + } else { + do { + value = key[valuePropertyName]; + if (value !== void 0) { + times.push(key.time); + values.push(value); + } + key = jsonKeys[i++]; + } while (key !== void 0); + } +} +var Interpolant = class { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + this.parameterPositions = parameterPositions; + this._cachedIndex = 0; + this.resultBuffer = resultBuffer !== void 0 ? resultBuffer : new sampleValues.constructor(sampleSize); + this.sampleValues = sampleValues; + this.valueSize = sampleSize; + this.settings = null; + this.DefaultSettings_ = {}; + } + evaluate(t) { + const pp = this.parameterPositions; + let i1 = this._cachedIndex, t1 = pp[i1], t0 = pp[i1 - 1]; + validate_interval: { + seek: { + let right2; + linear_scan: { + forward_scan: if (!(t < t1)) { + for (let giveUpAt = i1 + 2; ; ) { + if (t1 === void 0) { + if (t < t0) break forward_scan; + i1 = pp.length; + this._cachedIndex = i1; + return this.copySampleValue_(i1 - 1); + } + if (i1 === giveUpAt) break; + t0 = t1; + t1 = pp[++i1]; + if (t < t1) { + break seek; + } + } + right2 = pp.length; + break linear_scan; + } + if (!(t >= t0)) { + const t1global = pp[1]; + if (t < t1global) { + i1 = 2; + t0 = t1global; + } + for (let giveUpAt = i1 - 2; ; ) { + if (t0 === void 0) { + this._cachedIndex = 0; + return this.copySampleValue_(0); + } + if (i1 === giveUpAt) break; + t1 = t0; + t0 = pp[--i1 - 1]; + if (t >= t0) { + break seek; + } + } + right2 = i1; + i1 = 0; + break linear_scan; + } + break validate_interval; + } + while (i1 < right2) { + const mid = i1 + right2 >>> 1; + if (t < pp[mid]) { + right2 = mid; + } else { + i1 = mid + 1; + } + } + t1 = pp[i1]; + t0 = pp[i1 - 1]; + if (t0 === void 0) { + this._cachedIndex = 0; + return this.copySampleValue_(0); + } + if (t1 === void 0) { + i1 = pp.length; + this._cachedIndex = i1; + return this.copySampleValue_(i1 - 1); + } + } + this._cachedIndex = i1; + this.intervalChanged_(i1, t0, t1); + } + return this.interpolate_(i1, t0, t, t1); + } + getSettings_() { + return this.settings || this.DefaultSettings_; + } + copySampleValue_(index) { + const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset = index * stride; + for (let i = 0; i !== stride; ++i) { + result[i] = values[offset + i]; + } + return result; + } + // Template methods for derived classes: + interpolate_() { + throw new Error("call to abstract method"); + } + intervalChanged_() { + } +}; +var CubicInterpolant = class extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + this._weightPrev = -0; + this._offsetPrev = -0; + this._weightNext = -0; + this._offsetNext = -0; + this.DefaultSettings_ = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + } + intervalChanged_(i1, t0, t1) { + const pp = this.parameterPositions; + let iPrev = i1 - 2, iNext = i1 + 1, tPrev = pp[iPrev], tNext = pp[iNext]; + if (tPrev === void 0) { + switch (this.getSettings_().endingStart) { + case ZeroSlopeEnding: + iPrev = i1; + tPrev = 2 * t0 - t1; + break; + case WrapAroundEnding: + iPrev = pp.length - 2; + tPrev = t0 + pp[iPrev] - pp[iPrev + 1]; + break; + default: + iPrev = i1; + tPrev = t1; + } + } + if (tNext === void 0) { + switch (this.getSettings_().endingEnd) { + case ZeroSlopeEnding: + iNext = i1; + tNext = 2 * t1 - t0; + break; + case WrapAroundEnding: + iNext = 1; + tNext = t1 + pp[1] - pp[0]; + break; + default: + iNext = i1 - 1; + tNext = t0; + } + } + const halfDt = (t1 - t0) * 0.5, stride = this.valueSize; + this._weightPrev = halfDt / (t0 - tPrev); + this._weightNext = halfDt / (tNext - t1); + this._offsetPrev = iPrev * stride; + this._offsetNext = iNext * stride; + } + interpolate_(i1, t0, t, t1) { + const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, o1 = i1 * stride, o0 = o1 - stride, oP = this._offsetPrev, oN = this._offsetNext, wP = this._weightPrev, wN = this._weightNext, p = (t - t0) / (t1 - t0), pp = p * p, ppp = pp * p; + const sP = -wP * ppp + 2 * wP * pp - wP * p; + const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1; + const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p; + const sN = wN * ppp - wN * pp; + for (let i = 0; i !== stride; ++i) { + result[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i]; + } + return result; + } +}; +var LinearInterpolant = class extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + } + interpolate_(i1, t0, t, t1) { + const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset1 = i1 * stride, offset0 = offset1 - stride, weight1 = (t - t0) / (t1 - t0), weight0 = 1 - weight1; + for (let i = 0; i !== stride; ++i) { + result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1; + } + return result; + } +}; +var DiscreteInterpolant = class extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + } + interpolate_(i1) { + return this.copySampleValue_(i1 - 1); + } +}; +var KeyframeTrack = class { + constructor(name, times, values, interpolation) { + if (name === void 0) throw new Error("THREE.KeyframeTrack: track name is undefined"); + if (times === void 0 || times.length === 0) throw new Error("THREE.KeyframeTrack: no keyframes in track named " + name); + this.name = name; + this.times = convertArray(times, this.TimeBufferType); + this.values = convertArray(values, this.ValueBufferType); + this.setInterpolation(interpolation || this.DefaultInterpolation); + } + // Serialization (in static context, because of constructor invocation + // and automatic invocation of .toJSON): + static toJSON(track) { + const trackType = track.constructor; + let json; + if (trackType.toJSON !== this.toJSON) { + json = trackType.toJSON(track); + } else { + json = { + "name": track.name, + "times": convertArray(track.times, Array), + "values": convertArray(track.values, Array) + }; + const interpolation = track.getInterpolation(); + if (interpolation !== track.DefaultInterpolation) { + json.interpolation = interpolation; + } + } + json.type = track.ValueTypeName; + return json; + } + InterpolantFactoryMethodDiscrete(result) { + return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result); + } + InterpolantFactoryMethodLinear(result) { + return new LinearInterpolant(this.times, this.values, this.getValueSize(), result); + } + InterpolantFactoryMethodSmooth(result) { + return new CubicInterpolant(this.times, this.values, this.getValueSize(), result); + } + setInterpolation(interpolation) { + let factoryMethod; + switch (interpolation) { + case InterpolateDiscrete: + factoryMethod = this.InterpolantFactoryMethodDiscrete; + break; + case InterpolateLinear: + factoryMethod = this.InterpolantFactoryMethodLinear; + break; + case InterpolateSmooth: + factoryMethod = this.InterpolantFactoryMethodSmooth; + break; + } + if (factoryMethod === void 0) { + const message = "unsupported interpolation for " + this.ValueTypeName + " keyframe track named " + this.name; + if (this.createInterpolant === void 0) { + if (interpolation !== this.DefaultInterpolation) { + this.setInterpolation(this.DefaultInterpolation); + } else { + throw new Error(message); + } + } + console.warn("THREE.KeyframeTrack:", message); + return this; + } + this.createInterpolant = factoryMethod; + return this; + } + getInterpolation() { + switch (this.createInterpolant) { + case this.InterpolantFactoryMethodDiscrete: + return InterpolateDiscrete; + case this.InterpolantFactoryMethodLinear: + return InterpolateLinear; + case this.InterpolantFactoryMethodSmooth: + return InterpolateSmooth; + } + } + getValueSize() { + return this.values.length / this.times.length; + } + // move all keyframes either forwards or backwards in time + shift(timeOffset) { + if (timeOffset !== 0) { + const times = this.times; + for (let i = 0, n = times.length; i !== n; ++i) { + times[i] += timeOffset; + } + } + return this; + } + // scale all keyframe times by a factor (useful for frame <-> seconds conversions) + scale(timeScale) { + if (timeScale !== 1) { + const times = this.times; + for (let i = 0, n = times.length; i !== n; ++i) { + times[i] *= timeScale; + } + } + return this; + } + // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. + // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values + trim(startTime, endTime) { + const times = this.times, nKeys = times.length; + let from = 0, to = nKeys - 1; + while (from !== nKeys && times[from] < startTime) { + ++from; + } + while (to !== -1 && times[to] > endTime) { + --to; + } + ++to; + if (from !== 0 || to !== nKeys) { + if (from >= to) { + to = Math.max(to, 1); + from = to - 1; + } + const stride = this.getValueSize(); + this.times = times.slice(from, to); + this.values = this.values.slice(from * stride, to * stride); + } + return this; + } + // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable + validate() { + let valid = true; + const valueSize = this.getValueSize(); + if (valueSize - Math.floor(valueSize) !== 0) { + console.error("THREE.KeyframeTrack: Invalid value size in track.", this); + valid = false; + } + const times = this.times, values = this.values, nKeys = times.length; + if (nKeys === 0) { + console.error("THREE.KeyframeTrack: Track is empty.", this); + valid = false; + } + let prevTime = null; + for (let i = 0; i !== nKeys; i++) { + const currTime = times[i]; + if (typeof currTime === "number" && isNaN(currTime)) { + console.error("THREE.KeyframeTrack: Time is not a valid number.", this, i, currTime); + valid = false; + break; + } + if (prevTime !== null && prevTime > currTime) { + console.error("THREE.KeyframeTrack: Out of order keys.", this, i, currTime, prevTime); + valid = false; + break; + } + prevTime = currTime; + } + if (values !== void 0) { + if (isTypedArray(values)) { + for (let i = 0, n = values.length; i !== n; ++i) { + const value = values[i]; + if (isNaN(value)) { + console.error("THREE.KeyframeTrack: Value is not a valid number.", this, i, value); + valid = false; + break; + } + } + } + } + return valid; + } + // removes equivalent sequential keys as common in morph target sequences + // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) + optimize() { + const times = this.times.slice(), values = this.values.slice(), stride = this.getValueSize(), smoothInterpolation = this.getInterpolation() === InterpolateSmooth, lastIndex = times.length - 1; + let writeIndex = 1; + for (let i = 1; i < lastIndex; ++i) { + let keep = false; + const time = times[i]; + const timeNext = times[i + 1]; + if (time !== timeNext && (i !== 1 || time !== times[0])) { + if (!smoothInterpolation) { + const offset = i * stride, offsetP = offset - stride, offsetN = offset + stride; + for (let j = 0; j !== stride; ++j) { + const value = values[offset + j]; + if (value !== values[offsetP + j] || value !== values[offsetN + j]) { + keep = true; + break; + } + } + } else { + keep = true; + } + } + if (keep) { + if (i !== writeIndex) { + times[writeIndex] = times[i]; + const readOffset = i * stride, writeOffset = writeIndex * stride; + for (let j = 0; j !== stride; ++j) { + values[writeOffset + j] = values[readOffset + j]; + } + } + ++writeIndex; + } + } + if (lastIndex > 0) { + times[writeIndex] = times[lastIndex]; + for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) { + values[writeOffset + j] = values[readOffset + j]; + } + ++writeIndex; + } + if (writeIndex !== times.length) { + this.times = times.slice(0, writeIndex); + this.values = values.slice(0, writeIndex * stride); + } else { + this.times = times; + this.values = values; + } + return this; + } + clone() { + const times = this.times.slice(); + const values = this.values.slice(); + const TypedKeyframeTrack = this.constructor; + const track = new TypedKeyframeTrack(this.name, times, values); + track.createInterpolant = this.createInterpolant; + return track; + } +}; +KeyframeTrack.prototype.TimeBufferType = Float32Array; +KeyframeTrack.prototype.ValueBufferType = Float32Array; +KeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear; +var BooleanKeyframeTrack = class extends KeyframeTrack { +}; +BooleanKeyframeTrack.prototype.ValueTypeName = "bool"; +BooleanKeyframeTrack.prototype.ValueBufferType = Array; +BooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete; +BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0; +BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0; +var ColorKeyframeTrack = class extends KeyframeTrack { +}; +ColorKeyframeTrack.prototype.ValueTypeName = "color"; +var NumberKeyframeTrack = class extends KeyframeTrack { +}; +NumberKeyframeTrack.prototype.ValueTypeName = "number"; +var QuaternionLinearInterpolant = class extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + } + interpolate_(i1, t0, t, t1) { + const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, alpha = (t - t0) / (t1 - t0); + let offset = i1 * stride; + for (let end = offset + stride; offset !== end; offset += 4) { + Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha); + } + return result; + } +}; +var QuaternionKeyframeTrack = class extends KeyframeTrack { + InterpolantFactoryMethodLinear(result) { + return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result); + } +}; +QuaternionKeyframeTrack.prototype.ValueTypeName = "quaternion"; +QuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear; +QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0; +var StringKeyframeTrack = class extends KeyframeTrack { +}; +StringKeyframeTrack.prototype.ValueTypeName = "string"; +StringKeyframeTrack.prototype.ValueBufferType = Array; +StringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete; +StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0; +StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0; +var VectorKeyframeTrack = class extends KeyframeTrack { +}; +VectorKeyframeTrack.prototype.ValueTypeName = "vector"; +var AnimationClip = class { + constructor(name = "", duration = -1, tracks = [], blendMode = NormalAnimationBlendMode) { + this.name = name; + this.tracks = tracks; + this.duration = duration; + this.blendMode = blendMode; + this.uuid = generateUUID(); + if (this.duration < 0) { + this.resetDuration(); + } + } + static parse(json) { + const tracks = [], jsonTracks = json.tracks, frameTime = 1 / (json.fps || 1); + for (let i = 0, n = jsonTracks.length; i !== n; ++i) { + tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime)); + } + const clip = new this(json.name, json.duration, tracks, json.blendMode); + clip.uuid = json.uuid; + return clip; + } + static toJSON(clip) { + const tracks = [], clipTracks = clip.tracks; + const json = { + "name": clip.name, + "duration": clip.duration, + "tracks": tracks, + "uuid": clip.uuid, + "blendMode": clip.blendMode + }; + for (let i = 0, n = clipTracks.length; i !== n; ++i) { + tracks.push(KeyframeTrack.toJSON(clipTracks[i])); + } + return json; + } + static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) { + const numMorphTargets = morphTargetSequence.length; + const tracks = []; + for (let i = 0; i < numMorphTargets; i++) { + let times = []; + let values = []; + times.push( + (i + numMorphTargets - 1) % numMorphTargets, + i, + (i + 1) % numMorphTargets + ); + values.push(0, 1, 0); + const order = getKeyframeOrder(times); + times = sortedArray(times, 1, order); + values = sortedArray(values, 1, order); + if (!noLoop && times[0] === 0) { + times.push(numMorphTargets); + values.push(values[0]); + } + tracks.push( + new NumberKeyframeTrack( + ".morphTargetInfluences[" + morphTargetSequence[i].name + "]", + times, + values + ).scale(1 / fps) + ); + } + return new this(name, -1, tracks); + } + static findByName(objectOrClipArray, name) { + let clipArray = objectOrClipArray; + if (!Array.isArray(objectOrClipArray)) { + const o = objectOrClipArray; + clipArray = o.geometry && o.geometry.animations || o.animations; + } + for (let i = 0; i < clipArray.length; i++) { + if (clipArray[i].name === name) { + return clipArray[i]; + } + } + return null; + } + static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) { + const animationToMorphTargets = {}; + const pattern = /^([\w-]*?)([\d]+)$/; + for (let i = 0, il = morphTargets.length; i < il; i++) { + const morphTarget = morphTargets[i]; + const parts = morphTarget.name.match(pattern); + if (parts && parts.length > 1) { + const name = parts[1]; + let animationMorphTargets = animationToMorphTargets[name]; + if (!animationMorphTargets) { + animationToMorphTargets[name] = animationMorphTargets = []; + } + animationMorphTargets.push(morphTarget); + } + } + const clips = []; + for (const name in animationToMorphTargets) { + clips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop)); + } + return clips; + } + // parse the animation.hierarchy format + static parseAnimation(animation, bones) { + if (!animation) { + console.error("THREE.AnimationClip: No animation in JSONLoader data."); + return null; + } + const addNonemptyTrack = function(trackType, trackName, animationKeys, propertyName, destTracks) { + if (animationKeys.length !== 0) { + const times = []; + const values = []; + flattenJSON(animationKeys, times, values, propertyName); + if (times.length !== 0) { + destTracks.push(new trackType(trackName, times, values)); + } + } + }; + const tracks = []; + const clipName = animation.name || "default"; + const fps = animation.fps || 30; + const blendMode = animation.blendMode; + let duration = animation.length || -1; + const hierarchyTracks = animation.hierarchy || []; + for (let h = 0; h < hierarchyTracks.length; h++) { + const animationKeys = hierarchyTracks[h].keys; + if (!animationKeys || animationKeys.length === 0) continue; + if (animationKeys[0].morphTargets) { + const morphTargetNames = {}; + let k; + for (k = 0; k < animationKeys.length; k++) { + if (animationKeys[k].morphTargets) { + for (let m = 0; m < animationKeys[k].morphTargets.length; m++) { + morphTargetNames[animationKeys[k].morphTargets[m]] = -1; + } + } + } + for (const morphTargetName in morphTargetNames) { + const times = []; + const values = []; + for (let m = 0; m !== animationKeys[k].morphTargets.length; ++m) { + const animationKey = animationKeys[k]; + times.push(animationKey.time); + values.push(animationKey.morphTarget === morphTargetName ? 1 : 0); + } + tracks.push(new NumberKeyframeTrack(".morphTargetInfluence[" + morphTargetName + "]", times, values)); + } + duration = morphTargetNames.length * fps; + } else { + const boneName = ".bones[" + bones[h].name + "]"; + addNonemptyTrack( + VectorKeyframeTrack, + boneName + ".position", + animationKeys, + "pos", + tracks + ); + addNonemptyTrack( + QuaternionKeyframeTrack, + boneName + ".quaternion", + animationKeys, + "rot", + tracks + ); + addNonemptyTrack( + VectorKeyframeTrack, + boneName + ".scale", + animationKeys, + "scl", + tracks + ); + } + } + if (tracks.length === 0) { + return null; + } + const clip = new this(clipName, duration, tracks, blendMode); + return clip; + } + resetDuration() { + const tracks = this.tracks; + let duration = 0; + for (let i = 0, n = tracks.length; i !== n; ++i) { + const track = this.tracks[i]; + duration = Math.max(duration, track.times[track.times.length - 1]); + } + this.duration = duration; + return this; + } + trim() { + for (let i = 0; i < this.tracks.length; i++) { + this.tracks[i].trim(0, this.duration); + } + return this; + } + validate() { + let valid = true; + for (let i = 0; i < this.tracks.length; i++) { + valid = valid && this.tracks[i].validate(); + } + return valid; + } + optimize() { + for (let i = 0; i < this.tracks.length; i++) { + this.tracks[i].optimize(); + } + return this; + } + clone() { + const tracks = []; + for (let i = 0; i < this.tracks.length; i++) { + tracks.push(this.tracks[i].clone()); + } + return new this.constructor(this.name, this.duration, tracks, this.blendMode); + } + toJSON() { + return this.constructor.toJSON(this); + } +}; +function getTrackTypeForValueTypeName(typeName) { + switch (typeName.toLowerCase()) { + case "scalar": + case "double": + case "float": + case "number": + case "integer": + return NumberKeyframeTrack; + case "vector": + case "vector2": + case "vector3": + case "vector4": + return VectorKeyframeTrack; + case "color": + return ColorKeyframeTrack; + case "quaternion": + return QuaternionKeyframeTrack; + case "bool": + case "boolean": + return BooleanKeyframeTrack; + case "string": + return StringKeyframeTrack; + } + throw new Error("THREE.KeyframeTrack: Unsupported typeName: " + typeName); +} +function parseKeyframeTrack(json) { + if (json.type === void 0) { + throw new Error("THREE.KeyframeTrack: track type undefined, can not parse"); + } + const trackType = getTrackTypeForValueTypeName(json.type); + if (json.times === void 0) { + const times = [], values = []; + flattenJSON(json.keys, times, values, "value"); + json.times = times; + json.values = values; + } + if (trackType.parse !== void 0) { + return trackType.parse(json); + } else { + return new trackType(json.name, json.times, json.values, json.interpolation); + } +} +var Cache = { + enabled: false, + files: {}, + add: function(key, file) { + if (this.enabled === false) return; + this.files[key] = file; + }, + get: function(key) { + if (this.enabled === false) return; + return this.files[key]; + }, + remove: function(key) { + delete this.files[key]; + }, + clear: function() { + this.files = {}; + } +}; +var LoadingManager = class { + constructor(onLoad, onProgress, onError) { + const scope = this; + let isLoading = false; + let itemsLoaded = 0; + let itemsTotal = 0; + let urlModifier = void 0; + const handlers = []; + this.onStart = void 0; + this.onLoad = onLoad; + this.onProgress = onProgress; + this.onError = onError; + this.itemStart = function(url) { + itemsTotal++; + if (isLoading === false) { + if (scope.onStart !== void 0) { + scope.onStart(url, itemsLoaded, itemsTotal); + } + } + isLoading = true; + }; + this.itemEnd = function(url) { + itemsLoaded++; + if (scope.onProgress !== void 0) { + scope.onProgress(url, itemsLoaded, itemsTotal); + } + if (itemsLoaded === itemsTotal) { + isLoading = false; + if (scope.onLoad !== void 0) { + scope.onLoad(); + } + } + }; + this.itemError = function(url) { + if (scope.onError !== void 0) { + scope.onError(url); + } + }; + this.resolveURL = function(url) { + if (urlModifier) { + return urlModifier(url); + } + return url; + }; + this.setURLModifier = function(transform) { + urlModifier = transform; + return this; + }; + this.addHandler = function(regex, loader) { + handlers.push(regex, loader); + return this; + }; + this.removeHandler = function(regex) { + const index = handlers.indexOf(regex); + if (index !== -1) { + handlers.splice(index, 2); + } + return this; + }; + this.getHandler = function(file) { + for (let i = 0, l = handlers.length; i < l; i += 2) { + const regex = handlers[i]; + const loader = handlers[i + 1]; + if (regex.global) regex.lastIndex = 0; + if (regex.test(file)) { + return loader; + } + } + return null; + }; + } +}; +var DefaultLoadingManager = /* @__PURE__ */ new LoadingManager(); +var Loader = class { + constructor(manager) { + this.manager = manager !== void 0 ? manager : DefaultLoadingManager; + this.crossOrigin = "anonymous"; + this.withCredentials = false; + this.path = ""; + this.resourcePath = ""; + this.requestHeader = {}; + } + load() { + } + loadAsync(url, onProgress) { + const scope = this; + return new Promise(function(resolve, reject) { + scope.load(url, resolve, onProgress, reject); + }); + } + parse() { + } + setCrossOrigin(crossOrigin) { + this.crossOrigin = crossOrigin; + return this; + } + setWithCredentials(value) { + this.withCredentials = value; + return this; + } + setPath(path) { + this.path = path; + return this; + } + setResourcePath(resourcePath) { + this.resourcePath = resourcePath; + return this; + } + setRequestHeader(requestHeader) { + this.requestHeader = requestHeader; + return this; + } +}; +Loader.DEFAULT_MATERIAL_NAME = "__DEFAULT"; +var loading = {}; +var HttpError = class extends Error { + constructor(message, response) { + super(message); + this.response = response; + } +}; +var FileLoader = class extends Loader { + constructor(manager) { + super(manager); + } + load(url, onLoad, onProgress, onError) { + if (url === void 0) url = ""; + if (this.path !== void 0) url = this.path + url; + url = this.manager.resolveURL(url); + const cached = Cache.get(url); + if (cached !== void 0) { + this.manager.itemStart(url); + setTimeout(() => { + if (onLoad) onLoad(cached); + this.manager.itemEnd(url); + }, 0); + return cached; + } + if (loading[url] !== void 0) { + loading[url].push({ + onLoad, + onProgress, + onError + }); + return; + } + loading[url] = []; + loading[url].push({ + onLoad, + onProgress, + onError + }); + const req = new Request(url, { + headers: new Headers(this.requestHeader), + credentials: this.withCredentials ? "include" : "same-origin" + // An abort controller could be added within a future PR + }); + const mimeType = this.mimeType; + const responseType = this.responseType; + fetch(req).then((response) => { + if (response.status === 200 || response.status === 0) { + if (response.status === 0) { + console.warn("THREE.FileLoader: HTTP Status 0 received."); + } + if (typeof ReadableStream === "undefined" || response.body === void 0 || response.body.getReader === void 0) { + return response; + } + const callbacks = loading[url]; + const reader = response.body.getReader(); + const contentLength = response.headers.get("Content-Length") || response.headers.get("X-File-Size"); + const total = contentLength ? parseInt(contentLength) : 0; + const lengthComputable = total !== 0; + let loaded = 0; + const stream = new ReadableStream({ + start(controller) { + readData(); + function readData() { + reader.read().then(({ done, value }) => { + if (done) { + controller.close(); + } else { + loaded += value.byteLength; + const event = new ProgressEvent("progress", { lengthComputable, loaded, total }); + for (let i = 0, il = callbacks.length; i < il; i++) { + const callback = callbacks[i]; + if (callback.onProgress) callback.onProgress(event); + } + controller.enqueue(value); + readData(); + } + }); + } + } + }); + return new Response(stream); + } else { + throw new HttpError(`fetch for "${response.url}" responded with ${response.status}: ${response.statusText}`, response); + } + }).then((response) => { + switch (responseType) { + case "arraybuffer": + return response.arrayBuffer(); + case "blob": + return response.blob(); + case "document": + return response.text().then((text) => { + const parser = new DOMParser(); + return parser.parseFromString(text, mimeType); + }); + case "json": + return response.json(); + default: + if (mimeType === void 0) { + return response.text(); + } else { + const re = /charset="?([^;"\s]*)"?/i; + const exec = re.exec(mimeType); + const label = exec && exec[1] ? exec[1].toLowerCase() : void 0; + const decoder = new TextDecoder(label); + return response.arrayBuffer().then((ab) => decoder.decode(ab)); + } + } + }).then((data) => { + Cache.add(url, data); + const callbacks = loading[url]; + delete loading[url]; + for (let i = 0, il = callbacks.length; i < il; i++) { + const callback = callbacks[i]; + if (callback.onLoad) callback.onLoad(data); + } + }).catch((err2) => { + const callbacks = loading[url]; + if (callbacks === void 0) { + this.manager.itemError(url); + throw err2; + } + delete loading[url]; + for (let i = 0, il = callbacks.length; i < il; i++) { + const callback = callbacks[i]; + if (callback.onError) callback.onError(err2); + } + this.manager.itemError(url); + }).finally(() => { + this.manager.itemEnd(url); + }); + this.manager.itemStart(url); + } + setResponseType(value) { + this.responseType = value; + return this; + } + setMimeType(value) { + this.mimeType = value; + return this; + } +}; +var ImageLoader = class extends Loader { + constructor(manager) { + super(manager); + } + load(url, onLoad, onProgress, onError) { + if (this.path !== void 0) url = this.path + url; + url = this.manager.resolveURL(url); + const scope = this; + const cached = Cache.get(url); + if (cached !== void 0) { + scope.manager.itemStart(url); + setTimeout(function() { + if (onLoad) onLoad(cached); + scope.manager.itemEnd(url); + }, 0); + return cached; + } + const image = createElementNS("img"); + function onImageLoad() { + removeEventListeners(); + Cache.add(url, this); + if (onLoad) onLoad(this); + scope.manager.itemEnd(url); + } + function onImageError(event) { + removeEventListeners(); + if (onError) onError(event); + scope.manager.itemError(url); + scope.manager.itemEnd(url); + } + function removeEventListeners() { + image.removeEventListener("load", onImageLoad, false); + image.removeEventListener("error", onImageError, false); + } + image.addEventListener("load", onImageLoad, false); + image.addEventListener("error", onImageError, false); + if (url.slice(0, 5) !== "data:") { + if (this.crossOrigin !== void 0) image.crossOrigin = this.crossOrigin; + } + scope.manager.itemStart(url); + image.src = url; + return image; + } +}; +var TextureLoader = class extends Loader { + constructor(manager) { + super(manager); + } + load(url, onLoad, onProgress, onError) { + const texture = new Texture(); + const loader = new ImageLoader(this.manager); + loader.setCrossOrigin(this.crossOrigin); + loader.setPath(this.path); + loader.load(url, function(image) { + texture.image = image; + texture.needsUpdate = true; + if (onLoad !== void 0) { + onLoad(texture); + } + }, onProgress, onError); + return texture; + } +}; +var Light = class extends Object3D { + constructor(color, intensity = 1) { + super(); + this.isLight = true; + this.type = "Light"; + this.color = new Color(color); + this.intensity = intensity; + } + dispose() { + } + copy(source, recursive) { + super.copy(source, recursive); + this.color.copy(source.color); + this.intensity = source.intensity; + return this; + } + toJSON(meta) { + const data = super.toJSON(meta); + data.object.color = this.color.getHex(); + data.object.intensity = this.intensity; + if (this.groundColor !== void 0) data.object.groundColor = this.groundColor.getHex(); + if (this.distance !== void 0) data.object.distance = this.distance; + if (this.angle !== void 0) data.object.angle = this.angle; + if (this.decay !== void 0) data.object.decay = this.decay; + if (this.penumbra !== void 0) data.object.penumbra = this.penumbra; + if (this.shadow !== void 0) data.object.shadow = this.shadow.toJSON(); + return data; + } +}; +var _projScreenMatrix$1 = /* @__PURE__ */ new Matrix4(); +var _lightPositionWorld$1 = /* @__PURE__ */ new Vector3(); +var _lookTarget$1 = /* @__PURE__ */ new Vector3(); +var LightShadow = class { + constructor(camera) { + this.camera = camera; + this.bias = 0; + this.normalBias = 0; + this.radius = 1; + this.blurSamples = 8; + this.mapSize = new Vector2(512, 512); + this.map = null; + this.mapPass = null; + this.matrix = new Matrix4(); + this.autoUpdate = true; + this.needsUpdate = false; + this._frustum = new Frustum(); + this._frameExtents = new Vector2(1, 1); + this._viewportCount = 1; + this._viewports = [ + new Vector4(0, 0, 1, 1) + ]; + } + getViewportCount() { + return this._viewportCount; + } + getFrustum() { + return this._frustum; + } + updateMatrices(light) { + const shadowCamera = this.camera; + const shadowMatrix = this.matrix; + _lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld); + shadowCamera.position.copy(_lightPositionWorld$1); + _lookTarget$1.setFromMatrixPosition(light.target.matrixWorld); + shadowCamera.lookAt(_lookTarget$1); + shadowCamera.updateMatrixWorld(); + _projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse); + this._frustum.setFromProjectionMatrix(_projScreenMatrix$1); + shadowMatrix.set( + 0.5, + 0, + 0, + 0.5, + 0, + 0.5, + 0, + 0.5, + 0, + 0, + 0.5, + 0.5, + 0, + 0, + 0, + 1 + ); + shadowMatrix.multiply(_projScreenMatrix$1); + } + getViewport(viewportIndex) { + return this._viewports[viewportIndex]; + } + getFrameExtents() { + return this._frameExtents; + } + dispose() { + if (this.map) { + this.map.dispose(); + } + if (this.mapPass) { + this.mapPass.dispose(); + } + } + copy(source) { + this.camera = source.camera.clone(); + this.bias = source.bias; + this.radius = source.radius; + this.mapSize.copy(source.mapSize); + return this; + } + clone() { + return new this.constructor().copy(this); + } + toJSON() { + const object = {}; + if (this.bias !== 0) object.bias = this.bias; + if (this.normalBias !== 0) object.normalBias = this.normalBias; + if (this.radius !== 1) object.radius = this.radius; + if (this.mapSize.x !== 512 || this.mapSize.y !== 512) object.mapSize = this.mapSize.toArray(); + object.camera = this.camera.toJSON(false).object; + delete object.camera.matrix; + return object; + } +}; +var SpotLightShadow = class extends LightShadow { + constructor() { + super(new PerspectiveCamera(50, 1, 0.5, 500)); + this.isSpotLightShadow = true; + this.focus = 1; + } + updateMatrices(light) { + const camera = this.camera; + const fov2 = RAD2DEG * 2 * light.angle * this.focus; + const aspect2 = this.mapSize.width / this.mapSize.height; + const far = light.distance || camera.far; + if (fov2 !== camera.fov || aspect2 !== camera.aspect || far !== camera.far) { + camera.fov = fov2; + camera.aspect = aspect2; + camera.far = far; + camera.updateProjectionMatrix(); + } + super.updateMatrices(light); + } + copy(source) { + super.copy(source); + this.focus = source.focus; + return this; + } +}; +var SpotLight = class extends Light { + constructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2) { + super(color, intensity); + this.isSpotLight = true; + this.type = "SpotLight"; + this.position.copy(Object3D.DEFAULT_UP); + this.updateMatrix(); + this.target = new Object3D(); + this.distance = distance; + this.angle = angle; + this.penumbra = penumbra; + this.decay = decay; + this.map = null; + this.shadow = new SpotLightShadow(); + } + get power() { + return this.intensity * Math.PI; + } + set power(power) { + this.intensity = power / Math.PI; + } + dispose() { + this.shadow.dispose(); + } + copy(source, recursive) { + super.copy(source, recursive); + this.distance = source.distance; + this.angle = source.angle; + this.penumbra = source.penumbra; + this.decay = source.decay; + this.target = source.target.clone(); + this.shadow = source.shadow.clone(); + return this; + } +}; +var _projScreenMatrix = /* @__PURE__ */ new Matrix4(); +var _lightPositionWorld = /* @__PURE__ */ new Vector3(); +var _lookTarget = /* @__PURE__ */ new Vector3(); +var PointLightShadow = class extends LightShadow { + constructor() { + super(new PerspectiveCamera(90, 1, 0.5, 500)); + this.isPointLightShadow = true; + this._frameExtents = new Vector2(4, 2); + this._viewportCount = 6; + this._viewports = [ + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + // positive X + new Vector4(2, 1, 1, 1), + // negative X + new Vector4(0, 1, 1, 1), + // positive Z + new Vector4(3, 1, 1, 1), + // negative Z + new Vector4(1, 1, 1, 1), + // positive Y + new Vector4(3, 0, 1, 1), + // negative Y + new Vector4(1, 0, 1, 1) + ]; + this._cubeDirections = [ + new Vector3(1, 0, 0), + new Vector3(-1, 0, 0), + new Vector3(0, 0, 1), + new Vector3(0, 0, -1), + new Vector3(0, 1, 0), + new Vector3(0, -1, 0) + ]; + this._cubeUps = [ + new Vector3(0, 1, 0), + new Vector3(0, 1, 0), + new Vector3(0, 1, 0), + new Vector3(0, 1, 0), + new Vector3(0, 0, 1), + new Vector3(0, 0, -1) + ]; + } + updateMatrices(light, viewportIndex = 0) { + const camera = this.camera; + const shadowMatrix = this.matrix; + const far = light.distance || camera.far; + if (far !== camera.far) { + camera.far = far; + camera.updateProjectionMatrix(); + } + _lightPositionWorld.setFromMatrixPosition(light.matrixWorld); + camera.position.copy(_lightPositionWorld); + _lookTarget.copy(camera.position); + _lookTarget.add(this._cubeDirections[viewportIndex]); + camera.up.copy(this._cubeUps[viewportIndex]); + camera.lookAt(_lookTarget); + camera.updateMatrixWorld(); + shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z); + _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); + this._frustum.setFromProjectionMatrix(_projScreenMatrix); + } +}; +var PointLight = class extends Light { + constructor(color, intensity, distance = 0, decay = 2) { + super(color, intensity); + this.isPointLight = true; + this.type = "PointLight"; + this.distance = distance; + this.decay = decay; + this.shadow = new PointLightShadow(); + } + get power() { + return this.intensity * 4 * Math.PI; + } + set power(power) { + this.intensity = power / (4 * Math.PI); + } + dispose() { + this.shadow.dispose(); + } + copy(source, recursive) { + super.copy(source, recursive); + this.distance = source.distance; + this.decay = source.decay; + this.shadow = source.shadow.clone(); + return this; + } +}; +var DirectionalLightShadow = class extends LightShadow { + constructor() { + super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500)); + this.isDirectionalLightShadow = true; + } +}; +var DirectionalLight = class extends Light { + constructor(color, intensity) { + super(color, intensity); + this.isDirectionalLight = true; + this.type = "DirectionalLight"; + this.position.copy(Object3D.DEFAULT_UP); + this.updateMatrix(); + this.target = new Object3D(); + this.shadow = new DirectionalLightShadow(); + } + dispose() { + this.shadow.dispose(); + } + copy(source) { + super.copy(source); + this.target = source.target.clone(); + this.shadow = source.shadow.clone(); + return this; + } +}; +var AmbientLight = class extends Light { + constructor(color, intensity) { + super(color, intensity); + this.isAmbientLight = true; + this.type = "AmbientLight"; + } +}; +var LoaderUtils = class { + static decodeText(array) { + if (typeof TextDecoder !== "undefined") { + return new TextDecoder().decode(array); + } + let s = ""; + for (let i = 0, il = array.length; i < il; i++) { + s += String.fromCharCode(array[i]); + } + try { + return decodeURIComponent(escape(s)); + } catch (e) { + return s; + } + } + static extractUrlBase(url) { + const index = url.lastIndexOf("/"); + if (index === -1) return "./"; + return url.slice(0, index + 1); + } + static resolveURL(url, path) { + if (typeof url !== "string" || url === "") return ""; + if (/^https?:\/\//i.test(path) && /^\//.test(url)) { + path = path.replace(/(^https?:\/\/[^\/]+).*/i, "$1"); + } + if (/^(https?:)?\/\//i.test(url)) return url; + if (/^data:.*,.*$/i.test(url)) return url; + if (/^blob:.*$/i.test(url)) return url; + return path + url; + } +}; +var ImageBitmapLoader = class extends Loader { + constructor(manager) { + super(manager); + this.isImageBitmapLoader = true; + if (typeof createImageBitmap === "undefined") { + console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."); + } + if (typeof fetch === "undefined") { + console.warn("THREE.ImageBitmapLoader: fetch() not supported."); + } + this.options = { premultiplyAlpha: "none" }; + } + setOptions(options) { + this.options = options; + return this; + } + load(url, onLoad, onProgress, onError) { + if (url === void 0) url = ""; + if (this.path !== void 0) url = this.path + url; + url = this.manager.resolveURL(url); + const scope = this; + const cached = Cache.get(url); + if (cached !== void 0) { + scope.manager.itemStart(url); + if (cached.then) { + cached.then((imageBitmap) => { + if (onLoad) onLoad(imageBitmap); + scope.manager.itemEnd(url); + }).catch((e) => { + if (onError) onError(e); + }); + return; + } + setTimeout(function() { + if (onLoad) onLoad(cached); + scope.manager.itemEnd(url); + }, 0); + return cached; + } + const fetchOptions = {}; + fetchOptions.credentials = this.crossOrigin === "anonymous" ? "same-origin" : "include"; + fetchOptions.headers = this.requestHeader; + const promise = fetch(url, fetchOptions).then(function(res) { + return res.blob(); + }).then(function(blob) { + return createImageBitmap(blob, Object.assign(scope.options, { colorSpaceConversion: "none" })); + }).then(function(imageBitmap) { + Cache.add(url, imageBitmap); + if (onLoad) onLoad(imageBitmap); + scope.manager.itemEnd(url); + return imageBitmap; + }).catch(function(e) { + if (onError) onError(e); + Cache.remove(url); + scope.manager.itemError(url); + scope.manager.itemEnd(url); + }); + Cache.add(url, promise); + scope.manager.itemStart(url); + } +}; +var _context; +var AudioContext = class { + static getContext() { + if (_context === void 0) { + _context = new (window.AudioContext || window.webkitAudioContext)(); + } + return _context; + } + static setContext(value) { + _context = value; + } +}; +var Clock = class { + constructor(autoStart = true) { + this.autoStart = autoStart; + this.startTime = 0; + this.oldTime = 0; + this.elapsedTime = 0; + this.running = false; + } + start() { + this.startTime = now(); + this.oldTime = this.startTime; + this.elapsedTime = 0; + this.running = true; + } + stop() { + this.getElapsedTime(); + this.running = false; + this.autoStart = false; + } + getElapsedTime() { + this.getDelta(); + return this.elapsedTime; + } + getDelta() { + let diff = 0; + if (this.autoStart && !this.running) { + this.start(); + return 0; + } + if (this.running) { + const newTime = now(); + diff = (newTime - this.oldTime) / 1e3; + this.oldTime = newTime; + this.elapsedTime += diff; + } + return diff; + } +}; +function now() { + return (typeof performance === "undefined" ? Date : performance).now(); +} +var _position$1 = /* @__PURE__ */ new Vector3(); +var _quaternion$1 = /* @__PURE__ */ new Quaternion(); +var _scale$1 = /* @__PURE__ */ new Vector3(); +var _orientation$1 = /* @__PURE__ */ new Vector3(); +var AudioListener = class extends Object3D { + constructor() { + super(); + this.type = "AudioListener"; + this.context = AudioContext.getContext(); + this.gain = this.context.createGain(); + this.gain.connect(this.context.destination); + this.filter = null; + this.timeDelta = 0; + this._clock = new Clock(); + } + getInput() { + return this.gain; + } + removeFilter() { + if (this.filter !== null) { + this.gain.disconnect(this.filter); + this.filter.disconnect(this.context.destination); + this.gain.connect(this.context.destination); + this.filter = null; + } + return this; + } + getFilter() { + return this.filter; + } + setFilter(value) { + if (this.filter !== null) { + this.gain.disconnect(this.filter); + this.filter.disconnect(this.context.destination); + } else { + this.gain.disconnect(this.context.destination); + } + this.filter = value; + this.gain.connect(this.filter); + this.filter.connect(this.context.destination); + return this; + } + getMasterVolume() { + return this.gain.gain.value; + } + setMasterVolume(value) { + this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01); + return this; + } + updateMatrixWorld(force) { + super.updateMatrixWorld(force); + const listener = this.context.listener; + const up2 = this.up; + this.timeDelta = this._clock.getDelta(); + this.matrixWorld.decompose(_position$1, _quaternion$1, _scale$1); + _orientation$1.set(0, 0, -1).applyQuaternion(_quaternion$1); + if (listener.positionX) { + const endTime = this.context.currentTime + this.timeDelta; + listener.positionX.linearRampToValueAtTime(_position$1.x, endTime); + listener.positionY.linearRampToValueAtTime(_position$1.y, endTime); + listener.positionZ.linearRampToValueAtTime(_position$1.z, endTime); + listener.forwardX.linearRampToValueAtTime(_orientation$1.x, endTime); + listener.forwardY.linearRampToValueAtTime(_orientation$1.y, endTime); + listener.forwardZ.linearRampToValueAtTime(_orientation$1.z, endTime); + listener.upX.linearRampToValueAtTime(up2.x, endTime); + listener.upY.linearRampToValueAtTime(up2.y, endTime); + listener.upZ.linearRampToValueAtTime(up2.z, endTime); + } else { + listener.setPosition(_position$1.x, _position$1.y, _position$1.z); + listener.setOrientation(_orientation$1.x, _orientation$1.y, _orientation$1.z, up2.x, up2.y, up2.z); + } + } +}; +var Audio2 = class extends Object3D { + constructor(listener) { + super(); + this.type = "Audio"; + this.listener = listener; + this.context = listener.context; + this.gain = this.context.createGain(); + this.gain.connect(listener.getInput()); + this.autoplay = false; + this.buffer = null; + this.detune = 0; + this.loop = false; + this.loopStart = 0; + this.loopEnd = 0; + this.offset = 0; + this.duration = void 0; + this.playbackRate = 1; + this.isPlaying = false; + this.hasPlaybackControl = true; + this.source = null; + this.sourceType = "empty"; + this._startedAt = 0; + this._progress = 0; + this._connected = false; + this.filters = []; + } + getOutput() { + return this.gain; + } + setNodeSource(audioNode) { + this.hasPlaybackControl = false; + this.sourceType = "audioNode"; + this.source = audioNode; + this.connect(); + return this; + } + setMediaElementSource(mediaElement) { + this.hasPlaybackControl = false; + this.sourceType = "mediaNode"; + this.source = this.context.createMediaElementSource(mediaElement); + this.connect(); + return this; + } + setMediaStreamSource(mediaStream) { + this.hasPlaybackControl = false; + this.sourceType = "mediaStreamNode"; + this.source = this.context.createMediaStreamSource(mediaStream); + this.connect(); + return this; + } + setBuffer(audioBuffer) { + this.buffer = audioBuffer; + this.sourceType = "buffer"; + if (this.autoplay) this.play(); + return this; + } + play(delay = 0) { + if (this.isPlaying === true) { + console.warn("THREE.Audio: Audio is already playing."); + return; + } + if (this.hasPlaybackControl === false) { + console.warn("THREE.Audio: this Audio has no playback control."); + return; + } + this._startedAt = this.context.currentTime + delay; + const source = this.context.createBufferSource(); + source.buffer = this.buffer; + source.loop = this.loop; + source.loopStart = this.loopStart; + source.loopEnd = this.loopEnd; + source.onended = this.onEnded.bind(this); + source.start(this._startedAt, this._progress + this.offset, this.duration); + this.isPlaying = true; + this.source = source; + this.setDetune(this.detune); + this.setPlaybackRate(this.playbackRate); + return this.connect(); + } + pause() { + if (this.hasPlaybackControl === false) { + console.warn("THREE.Audio: this Audio has no playback control."); + return; + } + if (this.isPlaying === true) { + this._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate; + if (this.loop === true) { + this._progress = this._progress % (this.duration || this.buffer.duration); + } + this.source.stop(); + this.source.onended = null; + this.isPlaying = false; + } + return this; + } + stop() { + if (this.hasPlaybackControl === false) { + console.warn("THREE.Audio: this Audio has no playback control."); + return; + } + this._progress = 0; + if (this.source !== null) { + this.source.stop(); + this.source.onended = null; + } + this.isPlaying = false; + return this; + } + connect() { + if (this.filters.length > 0) { + this.source.connect(this.filters[0]); + for (let i = 1, l = this.filters.length; i < l; i++) { + this.filters[i - 1].connect(this.filters[i]); + } + this.filters[this.filters.length - 1].connect(this.getOutput()); + } else { + this.source.connect(this.getOutput()); + } + this._connected = true; + return this; + } + disconnect() { + if (this._connected === false) { + return; + } + if (this.filters.length > 0) { + this.source.disconnect(this.filters[0]); + for (let i = 1, l = this.filters.length; i < l; i++) { + this.filters[i - 1].disconnect(this.filters[i]); + } + this.filters[this.filters.length - 1].disconnect(this.getOutput()); + } else { + this.source.disconnect(this.getOutput()); + } + this._connected = false; + return this; + } + getFilters() { + return this.filters; + } + setFilters(value) { + if (!value) value = []; + if (this._connected === true) { + this.disconnect(); + this.filters = value.slice(); + this.connect(); + } else { + this.filters = value.slice(); + } + return this; + } + setDetune(value) { + this.detune = value; + if (this.isPlaying === true && this.source.detune !== void 0) { + this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01); + } + return this; + } + getDetune() { + return this.detune; + } + getFilter() { + return this.getFilters()[0]; + } + setFilter(filter) { + return this.setFilters(filter ? [filter] : []); + } + setPlaybackRate(value) { + if (this.hasPlaybackControl === false) { + console.warn("THREE.Audio: this Audio has no playback control."); + return; + } + this.playbackRate = value; + if (this.isPlaying === true) { + this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01); + } + return this; + } + getPlaybackRate() { + return this.playbackRate; + } + onEnded() { + this.isPlaying = false; + } + getLoop() { + if (this.hasPlaybackControl === false) { + console.warn("THREE.Audio: this Audio has no playback control."); + return false; + } + return this.loop; + } + setLoop(value) { + if (this.hasPlaybackControl === false) { + console.warn("THREE.Audio: this Audio has no playback control."); + return; + } + this.loop = value; + if (this.isPlaying === true) { + this.source.loop = this.loop; + } + return this; + } + setLoopStart(value) { + this.loopStart = value; + return this; + } + setLoopEnd(value) { + this.loopEnd = value; + return this; + } + getVolume() { + return this.gain.gain.value; + } + setVolume(value) { + this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01); + return this; + } +}; +var _position = /* @__PURE__ */ new Vector3(); +var _quaternion = /* @__PURE__ */ new Quaternion(); +var _scale = /* @__PURE__ */ new Vector3(); +var _orientation = /* @__PURE__ */ new Vector3(); +var PositionalAudio = class extends Audio2 { + constructor(listener) { + super(listener); + this.panner = this.context.createPanner(); + this.panner.panningModel = "HRTF"; + this.panner.connect(this.gain); + } + connect() { + super.connect(); + this.panner.connect(this.gain); + } + disconnect() { + super.disconnect(); + this.panner.disconnect(this.gain); + } + getOutput() { + return this.panner; + } + getRefDistance() { + return this.panner.refDistance; + } + setRefDistance(value) { + this.panner.refDistance = value; + return this; + } + getRolloffFactor() { + return this.panner.rolloffFactor; + } + setRolloffFactor(value) { + this.panner.rolloffFactor = value; + return this; + } + getDistanceModel() { + return this.panner.distanceModel; + } + setDistanceModel(value) { + this.panner.distanceModel = value; + return this; + } + getMaxDistance() { + return this.panner.maxDistance; + } + setMaxDistance(value) { + this.panner.maxDistance = value; + return this; + } + setDirectionalCone(coneInnerAngle, coneOuterAngle, coneOuterGain) { + this.panner.coneInnerAngle = coneInnerAngle; + this.panner.coneOuterAngle = coneOuterAngle; + this.panner.coneOuterGain = coneOuterGain; + return this; + } + updateMatrixWorld(force) { + super.updateMatrixWorld(force); + if (this.hasPlaybackControl === true && this.isPlaying === false) return; + this.matrixWorld.decompose(_position, _quaternion, _scale); + _orientation.set(0, 0, 1).applyQuaternion(_quaternion); + const panner = this.panner; + if (panner.positionX) { + const endTime = this.context.currentTime + this.listener.timeDelta; + panner.positionX.linearRampToValueAtTime(_position.x, endTime); + panner.positionY.linearRampToValueAtTime(_position.y, endTime); + panner.positionZ.linearRampToValueAtTime(_position.z, endTime); + panner.orientationX.linearRampToValueAtTime(_orientation.x, endTime); + panner.orientationY.linearRampToValueAtTime(_orientation.y, endTime); + panner.orientationZ.linearRampToValueAtTime(_orientation.z, endTime); + } else { + panner.setPosition(_position.x, _position.y, _position.z); + panner.setOrientation(_orientation.x, _orientation.y, _orientation.z); + } + } +}; +var PropertyMixer = class { + constructor(binding, typeName, valueSize) { + this.binding = binding; + this.valueSize = valueSize; + let mixFunction, mixFunctionAdditive, setIdentity; + switch (typeName) { + case "quaternion": + mixFunction = this._slerp; + mixFunctionAdditive = this._slerpAdditive; + setIdentity = this._setAdditiveIdentityQuaternion; + this.buffer = new Float64Array(valueSize * 6); + this._workIndex = 5; + break; + case "string": + case "bool": + mixFunction = this._select; + mixFunctionAdditive = this._select; + setIdentity = this._setAdditiveIdentityOther; + this.buffer = new Array(valueSize * 5); + break; + default: + mixFunction = this._lerp; + mixFunctionAdditive = this._lerpAdditive; + setIdentity = this._setAdditiveIdentityNumeric; + this.buffer = new Float64Array(valueSize * 5); + } + this._mixBufferRegion = mixFunction; + this._mixBufferRegionAdditive = mixFunctionAdditive; + this._setIdentity = setIdentity; + this._origIndex = 3; + this._addIndex = 4; + this.cumulativeWeight = 0; + this.cumulativeWeightAdditive = 0; + this.useCount = 0; + this.referenceCount = 0; + } + // accumulate data in the 'incoming' region into 'accu' + accumulate(accuIndex, weight) { + const buffer = this.buffer, stride = this.valueSize, offset = accuIndex * stride + stride; + let currentWeight = this.cumulativeWeight; + if (currentWeight === 0) { + for (let i = 0; i !== stride; ++i) { + buffer[offset + i] = buffer[i]; + } + currentWeight = weight; + } else { + currentWeight += weight; + const mix = weight / currentWeight; + this._mixBufferRegion(buffer, offset, 0, mix, stride); + } + this.cumulativeWeight = currentWeight; + } + // accumulate data in the 'incoming' region into 'add' + accumulateAdditive(weight) { + const buffer = this.buffer, stride = this.valueSize, offset = stride * this._addIndex; + if (this.cumulativeWeightAdditive === 0) { + this._setIdentity(); + } + this._mixBufferRegionAdditive(buffer, offset, 0, weight, stride); + this.cumulativeWeightAdditive += weight; + } + // apply the state of 'accu' to the binding when accus differ + apply(accuIndex) { + const stride = this.valueSize, buffer = this.buffer, offset = accuIndex * stride + stride, weight = this.cumulativeWeight, weightAdditive = this.cumulativeWeightAdditive, binding = this.binding; + this.cumulativeWeight = 0; + this.cumulativeWeightAdditive = 0; + if (weight < 1) { + const originalValueOffset = stride * this._origIndex; + this._mixBufferRegion( + buffer, + offset, + originalValueOffset, + 1 - weight, + stride + ); + } + if (weightAdditive > 0) { + this._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride); + } + for (let i = stride, e = stride + stride; i !== e; ++i) { + if (buffer[i] !== buffer[i + stride]) { + binding.setValue(buffer, offset); + break; + } + } + } + // remember the state of the bound property and copy it to both accus + saveOriginalState() { + const binding = this.binding; + const buffer = this.buffer, stride = this.valueSize, originalValueOffset = stride * this._origIndex; + binding.getValue(buffer, originalValueOffset); + for (let i = stride, e = originalValueOffset; i !== e; ++i) { + buffer[i] = buffer[originalValueOffset + i % stride]; + } + this._setIdentity(); + this.cumulativeWeight = 0; + this.cumulativeWeightAdditive = 0; + } + // apply the state previously taken via 'saveOriginalState' to the binding + restoreOriginalState() { + const originalValueOffset = this.valueSize * 3; + this.binding.setValue(this.buffer, originalValueOffset); + } + _setAdditiveIdentityNumeric() { + const startIndex = this._addIndex * this.valueSize; + const endIndex = startIndex + this.valueSize; + for (let i = startIndex; i < endIndex; i++) { + this.buffer[i] = 0; + } + } + _setAdditiveIdentityQuaternion() { + this._setAdditiveIdentityNumeric(); + this.buffer[this._addIndex * this.valueSize + 3] = 1; + } + _setAdditiveIdentityOther() { + const startIndex = this._origIndex * this.valueSize; + const targetIndex = this._addIndex * this.valueSize; + for (let i = 0; i < this.valueSize; i++) { + this.buffer[targetIndex + i] = this.buffer[startIndex + i]; + } + } + // mix functions + _select(buffer, dstOffset, srcOffset, t, stride) { + if (t >= 0.5) { + for (let i = 0; i !== stride; ++i) { + buffer[dstOffset + i] = buffer[srcOffset + i]; + } + } + } + _slerp(buffer, dstOffset, srcOffset, t) { + Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t); + } + _slerpAdditive(buffer, dstOffset, srcOffset, t, stride) { + const workOffset = this._workIndex * stride; + Quaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset); + Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t); + } + _lerp(buffer, dstOffset, srcOffset, t, stride) { + const s = 1 - t; + for (let i = 0; i !== stride; ++i) { + const j = dstOffset + i; + buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t; + } + } + _lerpAdditive(buffer, dstOffset, srcOffset, t, stride) { + for (let i = 0; i !== stride; ++i) { + const j = dstOffset + i; + buffer[j] = buffer[j] + buffer[srcOffset + i] * t; + } + } +}; +var _RESERVED_CHARS_RE = "\\[\\]\\.:\\/"; +var _reservedRe = new RegExp("[" + _RESERVED_CHARS_RE + "]", "g"); +var _wordChar = "[^" + _RESERVED_CHARS_RE + "]"; +var _wordCharOrDot = "[^" + _RESERVED_CHARS_RE.replace("\\.", "") + "]"; +var _directoryRe = /* @__PURE__ */ /((?:WC+[\/:])*)/.source.replace("WC", _wordChar); +var _nodeRe = /* @__PURE__ */ /(WCOD+)?/.source.replace("WCOD", _wordCharOrDot); +var _objectRe = /* @__PURE__ */ /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC", _wordChar); +var _propertyRe = /* @__PURE__ */ /\.(WC+)(?:\[(.+)\])?/.source.replace("WC", _wordChar); +var _trackRe = new RegExp( + "^" + _directoryRe + _nodeRe + _objectRe + _propertyRe + "$" +); +var _supportedObjectNames = ["material", "materials", "bones", "map"]; +var Composite = class { + constructor(targetGroup, path, optionalParsedPath) { + const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path); + this._targetGroup = targetGroup; + this._bindings = targetGroup.subscribe_(path, parsedPath); + } + getValue(array, offset) { + this.bind(); + const firstValidIndex = this._targetGroup.nCachedObjects_, binding = this._bindings[firstValidIndex]; + if (binding !== void 0) binding.getValue(array, offset); + } + setValue(array, offset) { + const bindings = this._bindings; + for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) { + bindings[i].setValue(array, offset); + } + } + bind() { + const bindings = this._bindings; + for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) { + bindings[i].bind(); + } + } + unbind() { + const bindings = this._bindings; + for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) { + bindings[i].unbind(); + } + } +}; +var PropertyBinding = class _PropertyBinding { + constructor(rootNode, path, parsedPath) { + this.path = path; + this.parsedPath = parsedPath || _PropertyBinding.parseTrackName(path); + this.node = _PropertyBinding.findNode(rootNode, this.parsedPath.nodeName); + this.rootNode = rootNode; + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + } + static create(root, path, parsedPath) { + if (!(root && root.isAnimationObjectGroup)) { + return new _PropertyBinding(root, path, parsedPath); + } else { + return new _PropertyBinding.Composite(root, path, parsedPath); + } + } + /** + * Replaces spaces with underscores and removes unsupported characters from + * node names, to ensure compatibility with parseTrackName(). + * + * @param {string} name Node name to be sanitized. + * @return {string} + */ + static sanitizeNodeName(name) { + return name.replace(/\s/g, "_").replace(_reservedRe, ""); + } + static parseTrackName(trackName) { + const matches = _trackRe.exec(trackName); + if (matches === null) { + throw new Error("PropertyBinding: Cannot parse trackName: " + trackName); + } + const results = { + // directoryName: matches[ 1 ], // (tschw) currently unused + nodeName: matches[2], + objectName: matches[3], + objectIndex: matches[4], + propertyName: matches[5], + // required + propertyIndex: matches[6] + }; + const lastDot = results.nodeName && results.nodeName.lastIndexOf("."); + if (lastDot !== void 0 && lastDot !== -1) { + const objectName = results.nodeName.substring(lastDot + 1); + if (_supportedObjectNames.indexOf(objectName) !== -1) { + results.nodeName = results.nodeName.substring(0, lastDot); + results.objectName = objectName; + } + } + if (results.propertyName === null || results.propertyName.length === 0) { + throw new Error("PropertyBinding: can not parse propertyName from trackName: " + trackName); + } + return results; + } + static findNode(root, nodeName) { + if (nodeName === void 0 || nodeName === "" || nodeName === "." || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) { + return root; + } + if (root.skeleton) { + const bone = root.skeleton.getBoneByName(nodeName); + if (bone !== void 0) { + return bone; + } + } + if (root.children) { + const searchNodeSubtree = function(children) { + for (let i = 0; i < children.length; i++) { + const childNode = children[i]; + if (childNode.name === nodeName || childNode.uuid === nodeName) { + return childNode; + } + const result = searchNodeSubtree(childNode.children); + if (result) return result; + } + return null; + }; + const subTreeNode = searchNodeSubtree(root.children); + if (subTreeNode) { + return subTreeNode; + } + } + return null; + } + // these are used to "bind" a nonexistent property + _getValue_unavailable() { + } + _setValue_unavailable() { + } + // Getters + _getValue_direct(buffer, offset) { + buffer[offset] = this.targetObject[this.propertyName]; + } + _getValue_array(buffer, offset) { + const source = this.resolvedProperty; + for (let i = 0, n = source.length; i !== n; ++i) { + buffer[offset++] = source[i]; + } + } + _getValue_arrayElement(buffer, offset) { + buffer[offset] = this.resolvedProperty[this.propertyIndex]; + } + _getValue_toArray(buffer, offset) { + this.resolvedProperty.toArray(buffer, offset); + } + // Direct + _setValue_direct(buffer, offset) { + this.targetObject[this.propertyName] = buffer[offset]; + } + _setValue_direct_setNeedsUpdate(buffer, offset) { + this.targetObject[this.propertyName] = buffer[offset]; + this.targetObject.needsUpdate = true; + } + _setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) { + this.targetObject[this.propertyName] = buffer[offset]; + this.targetObject.matrixWorldNeedsUpdate = true; + } + // EntireArray + _setValue_array(buffer, offset) { + const dest = this.resolvedProperty; + for (let i = 0, n = dest.length; i !== n; ++i) { + dest[i] = buffer[offset++]; + } + } + _setValue_array_setNeedsUpdate(buffer, offset) { + const dest = this.resolvedProperty; + for (let i = 0, n = dest.length; i !== n; ++i) { + dest[i] = buffer[offset++]; + } + this.targetObject.needsUpdate = true; + } + _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) { + const dest = this.resolvedProperty; + for (let i = 0, n = dest.length; i !== n; ++i) { + dest[i] = buffer[offset++]; + } + this.targetObject.matrixWorldNeedsUpdate = true; + } + // ArrayElement + _setValue_arrayElement(buffer, offset) { + this.resolvedProperty[this.propertyIndex] = buffer[offset]; + } + _setValue_arrayElement_setNeedsUpdate(buffer, offset) { + this.resolvedProperty[this.propertyIndex] = buffer[offset]; + this.targetObject.needsUpdate = true; + } + _setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) { + this.resolvedProperty[this.propertyIndex] = buffer[offset]; + this.targetObject.matrixWorldNeedsUpdate = true; + } + // HasToFromArray + _setValue_fromArray(buffer, offset) { + this.resolvedProperty.fromArray(buffer, offset); + } + _setValue_fromArray_setNeedsUpdate(buffer, offset) { + this.resolvedProperty.fromArray(buffer, offset); + this.targetObject.needsUpdate = true; + } + _setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) { + this.resolvedProperty.fromArray(buffer, offset); + this.targetObject.matrixWorldNeedsUpdate = true; + } + _getValue_unbound(targetArray, offset) { + this.bind(); + this.getValue(targetArray, offset); + } + _setValue_unbound(sourceArray, offset) { + this.bind(); + this.setValue(sourceArray, offset); + } + // create getter / setter pair for a property in the scene graph + bind() { + let targetObject = this.node; + const parsedPath = this.parsedPath; + const objectName = parsedPath.objectName; + const propertyName = parsedPath.propertyName; + let propertyIndex = parsedPath.propertyIndex; + if (!targetObject) { + targetObject = _PropertyBinding.findNode(this.rootNode, parsedPath.nodeName); + this.node = targetObject; + } + this.getValue = this._getValue_unavailable; + this.setValue = this._setValue_unavailable; + if (!targetObject) { + console.warn("THREE.PropertyBinding: No target node found for track: " + this.path + "."); + return; + } + if (objectName) { + let objectIndex = parsedPath.objectIndex; + switch (objectName) { + case "materials": + if (!targetObject.material) { + console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.", this); + return; + } + if (!targetObject.material.materials) { + console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.", this); + return; + } + targetObject = targetObject.material.materials; + break; + case "bones": + if (!targetObject.skeleton) { + console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.", this); + return; + } + targetObject = targetObject.skeleton.bones; + for (let i = 0; i < targetObject.length; i++) { + if (targetObject[i].name === objectIndex) { + objectIndex = i; + break; + } + } + break; + case "map": + if ("map" in targetObject) { + targetObject = targetObject.map; + break; + } + if (!targetObject.material) { + console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.", this); + return; + } + if (!targetObject.material.map) { + console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.", this); + return; + } + targetObject = targetObject.material.map; + break; + default: + if (targetObject[objectName] === void 0) { + console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.", this); + return; + } + targetObject = targetObject[objectName]; + } + if (objectIndex !== void 0) { + if (targetObject[objectIndex] === void 0) { + console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.", this, targetObject); + return; + } + targetObject = targetObject[objectIndex]; + } + } + const nodeProperty = targetObject[propertyName]; + if (nodeProperty === void 0) { + const nodeName = parsedPath.nodeName; + console.error("THREE.PropertyBinding: Trying to update property for track: " + nodeName + "." + propertyName + " but it wasn't found.", targetObject); + return; + } + let versioning = this.Versioning.None; + this.targetObject = targetObject; + if (targetObject.needsUpdate !== void 0) { + versioning = this.Versioning.NeedsUpdate; + } else if (targetObject.matrixWorldNeedsUpdate !== void 0) { + versioning = this.Versioning.MatrixWorldNeedsUpdate; + } + let bindingType = this.BindingType.Direct; + if (propertyIndex !== void 0) { + if (propertyName === "morphTargetInfluences") { + if (!targetObject.geometry) { + console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.", this); + return; + } + if (!targetObject.geometry.morphAttributes) { + console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.", this); + return; + } + if (targetObject.morphTargetDictionary[propertyIndex] !== void 0) { + propertyIndex = targetObject.morphTargetDictionary[propertyIndex]; + } + } + bindingType = this.BindingType.ArrayElement; + this.resolvedProperty = nodeProperty; + this.propertyIndex = propertyIndex; + } else if (nodeProperty.fromArray !== void 0 && nodeProperty.toArray !== void 0) { + bindingType = this.BindingType.HasFromToArray; + this.resolvedProperty = nodeProperty; + } else if (Array.isArray(nodeProperty)) { + bindingType = this.BindingType.EntireArray; + this.resolvedProperty = nodeProperty; + } else { + this.propertyName = propertyName; + } + this.getValue = this.GetterByBindingType[bindingType]; + this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning]; + } + unbind() { + this.node = null; + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + } +}; +PropertyBinding.Composite = Composite; +PropertyBinding.prototype.BindingType = { + Direct: 0, + EntireArray: 1, + ArrayElement: 2, + HasFromToArray: 3 +}; +PropertyBinding.prototype.Versioning = { + None: 0, + NeedsUpdate: 1, + MatrixWorldNeedsUpdate: 2 +}; +PropertyBinding.prototype.GetterByBindingType = [ + PropertyBinding.prototype._getValue_direct, + PropertyBinding.prototype._getValue_array, + PropertyBinding.prototype._getValue_arrayElement, + PropertyBinding.prototype._getValue_toArray +]; +PropertyBinding.prototype.SetterByBindingTypeAndVersioning = [ + [ + // Direct + PropertyBinding.prototype._setValue_direct, + PropertyBinding.prototype._setValue_direct_setNeedsUpdate, + PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate + ], + [ + // EntireArray + PropertyBinding.prototype._setValue_array, + PropertyBinding.prototype._setValue_array_setNeedsUpdate, + PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate + ], + [ + // ArrayElement + PropertyBinding.prototype._setValue_arrayElement, + PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate, + PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate + ], + [ + // HasToFromArray + PropertyBinding.prototype._setValue_fromArray, + PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate, + PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate + ] +]; +var AnimationObjectGroup = class { + constructor() { + this.isAnimationObjectGroup = true; + this.uuid = generateUUID(); + this._objects = Array.prototype.slice.call(arguments); + this.nCachedObjects_ = 0; + const indices = {}; + this._indicesByUUID = indices; + for (let i = 0, n = arguments.length; i !== n; ++i) { + indices[arguments[i].uuid] = i; + } + this._paths = []; + this._parsedPaths = []; + this._bindings = []; + this._bindingsIndicesByPath = {}; + const scope = this; + this.stats = { + objects: { + get total() { + return scope._objects.length; + }, + get inUse() { + return this.total - scope.nCachedObjects_; + } + }, + get bindingsPerObject() { + return scope._bindings.length; + } + }; + } + add() { + const objects = this._objects, indicesByUUID = this._indicesByUUID, paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, nBindings = bindings.length; + let knownObject = void 0, nObjects = objects.length, nCachedObjects = this.nCachedObjects_; + for (let i = 0, n = arguments.length; i !== n; ++i) { + const object = arguments[i], uuid = object.uuid; + let index = indicesByUUID[uuid]; + if (index === void 0) { + index = nObjects++; + indicesByUUID[uuid] = index; + objects.push(object); + for (let j = 0, m = nBindings; j !== m; ++j) { + bindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j])); + } + } else if (index < nCachedObjects) { + knownObject = objects[index]; + const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex]; + indicesByUUID[lastCachedObject.uuid] = index; + objects[index] = lastCachedObject; + indicesByUUID[uuid] = firstActiveIndex; + objects[firstActiveIndex] = object; + for (let j = 0, m = nBindings; j !== m; ++j) { + const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex]; + let binding = bindingsForPath[index]; + bindingsForPath[index] = lastCached; + if (binding === void 0) { + binding = new PropertyBinding(object, paths[j], parsedPaths[j]); + } + bindingsForPath[firstActiveIndex] = binding; + } + } else if (objects[index] !== knownObject) { + console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes."); + } + } + this.nCachedObjects_ = nCachedObjects; + } + remove() { + const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length; + let nCachedObjects = this.nCachedObjects_; + for (let i = 0, n = arguments.length; i !== n; ++i) { + const object = arguments[i], uuid = object.uuid, index = indicesByUUID[uuid]; + if (index !== void 0 && index >= nCachedObjects) { + const lastCachedIndex = nCachedObjects++, firstActiveObject = objects[lastCachedIndex]; + indicesByUUID[firstActiveObject.uuid] = index; + objects[index] = firstActiveObject; + indicesByUUID[uuid] = lastCachedIndex; + objects[lastCachedIndex] = object; + for (let j = 0, m = nBindings; j !== m; ++j) { + const bindingsForPath = bindings[j], firstActive = bindingsForPath[lastCachedIndex], binding = bindingsForPath[index]; + bindingsForPath[index] = firstActive; + bindingsForPath[lastCachedIndex] = binding; + } + } + } + this.nCachedObjects_ = nCachedObjects; + } + // remove & forget + uncache() { + const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length; + let nCachedObjects = this.nCachedObjects_, nObjects = objects.length; + for (let i = 0, n = arguments.length; i !== n; ++i) { + const object = arguments[i], uuid = object.uuid, index = indicesByUUID[uuid]; + if (index !== void 0) { + delete indicesByUUID[uuid]; + if (index < nCachedObjects) { + const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex], lastIndex = --nObjects, lastObject = objects[lastIndex]; + indicesByUUID[lastCachedObject.uuid] = index; + objects[index] = lastCachedObject; + indicesByUUID[lastObject.uuid] = firstActiveIndex; + objects[firstActiveIndex] = lastObject; + objects.pop(); + for (let j = 0, m = nBindings; j !== m; ++j) { + const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex], last = bindingsForPath[lastIndex]; + bindingsForPath[index] = lastCached; + bindingsForPath[firstActiveIndex] = last; + bindingsForPath.pop(); + } + } else { + const lastIndex = --nObjects, lastObject = objects[lastIndex]; + if (lastIndex > 0) { + indicesByUUID[lastObject.uuid] = index; + } + objects[index] = lastObject; + objects.pop(); + for (let j = 0, m = nBindings; j !== m; ++j) { + const bindingsForPath = bindings[j]; + bindingsForPath[index] = bindingsForPath[lastIndex]; + bindingsForPath.pop(); + } + } + } + } + this.nCachedObjects_ = nCachedObjects; + } + // Internal interface used by befriended PropertyBinding.Composite: + subscribe_(path, parsedPath) { + const indicesByPath = this._bindingsIndicesByPath; + let index = indicesByPath[path]; + const bindings = this._bindings; + if (index !== void 0) return bindings[index]; + const paths = this._paths, parsedPaths = this._parsedPaths, objects = this._objects, nObjects = objects.length, nCachedObjects = this.nCachedObjects_, bindingsForPath = new Array(nObjects); + index = bindings.length; + indicesByPath[path] = index; + paths.push(path); + parsedPaths.push(parsedPath); + bindings.push(bindingsForPath); + for (let i = nCachedObjects, n = objects.length; i !== n; ++i) { + const object = objects[i]; + bindingsForPath[i] = new PropertyBinding(object, path, parsedPath); + } + return bindingsForPath; + } + unsubscribe_(path) { + const indicesByPath = this._bindingsIndicesByPath, index = indicesByPath[path]; + if (index !== void 0) { + const paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, lastBindingsIndex = bindings.length - 1, lastBindings = bindings[lastBindingsIndex], lastBindingsPath = path[lastBindingsIndex]; + indicesByPath[lastBindingsPath] = index; + bindings[index] = lastBindings; + bindings.pop(); + parsedPaths[index] = parsedPaths[lastBindingsIndex]; + parsedPaths.pop(); + paths[index] = paths[lastBindingsIndex]; + paths.pop(); + } + } +}; +var AnimationAction = class { + constructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) { + this._mixer = mixer; + this._clip = clip; + this._localRoot = localRoot; + this.blendMode = blendMode; + const tracks = clip.tracks, nTracks = tracks.length, interpolants = new Array(nTracks); + const interpolantSettings = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + for (let i = 0; i !== nTracks; ++i) { + const interpolant = tracks[i].createInterpolant(null); + interpolants[i] = interpolant; + interpolant.settings = interpolantSettings; + } + this._interpolantSettings = interpolantSettings; + this._interpolants = interpolants; + this._propertyBindings = new Array(nTracks); + this._cacheIndex = null; + this._byClipCacheIndex = null; + this._timeScaleInterpolant = null; + this._weightInterpolant = null; + this.loop = LoopRepeat; + this._loopCount = -1; + this._startTime = null; + this.time = 0; + this.timeScale = 1; + this._effectiveTimeScale = 1; + this.weight = 1; + this._effectiveWeight = 1; + this.repetitions = Infinity; + this.paused = false; + this.enabled = true; + this.clampWhenFinished = false; + this.zeroSlopeAtStart = true; + this.zeroSlopeAtEnd = true; + } + // State & Scheduling + play() { + this._mixer._activateAction(this); + return this; + } + stop() { + this._mixer._deactivateAction(this); + return this.reset(); + } + reset() { + this.paused = false; + this.enabled = true; + this.time = 0; + this._loopCount = -1; + this._startTime = null; + return this.stopFading().stopWarping(); + } + isRunning() { + return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this); + } + // return true when play has been called + isScheduled() { + return this._mixer._isActiveAction(this); + } + startAt(time) { + this._startTime = time; + return this; + } + setLoop(mode, repetitions) { + this.loop = mode; + this.repetitions = repetitions; + return this; + } + // Weight + // set the weight stopping any scheduled fading + // although .enabled = false yields an effective weight of zero, this + // method does *not* change .enabled, because it would be confusing + setEffectiveWeight(weight) { + this.weight = weight; + this._effectiveWeight = this.enabled ? weight : 0; + return this.stopFading(); + } + // return the weight considering fading and .enabled + getEffectiveWeight() { + return this._effectiveWeight; + } + fadeIn(duration) { + return this._scheduleFading(duration, 0, 1); + } + fadeOut(duration) { + return this._scheduleFading(duration, 1, 0); + } + crossFadeFrom(fadeOutAction, duration, warp) { + fadeOutAction.fadeOut(duration); + this.fadeIn(duration); + if (warp) { + const fadeInDuration = this._clip.duration, fadeOutDuration = fadeOutAction._clip.duration, startEndRatio = fadeOutDuration / fadeInDuration, endStartRatio = fadeInDuration / fadeOutDuration; + fadeOutAction.warp(1, startEndRatio, duration); + this.warp(endStartRatio, 1, duration); + } + return this; + } + crossFadeTo(fadeInAction, duration, warp) { + return fadeInAction.crossFadeFrom(this, duration, warp); + } + stopFading() { + const weightInterpolant = this._weightInterpolant; + if (weightInterpolant !== null) { + this._weightInterpolant = null; + this._mixer._takeBackControlInterpolant(weightInterpolant); + } + return this; + } + // Time Scale Control + // set the time scale stopping any scheduled warping + // although .paused = true yields an effective time scale of zero, this + // method does *not* change .paused, because it would be confusing + setEffectiveTimeScale(timeScale) { + this.timeScale = timeScale; + this._effectiveTimeScale = this.paused ? 0 : timeScale; + return this.stopWarping(); + } + // return the time scale considering warping and .paused + getEffectiveTimeScale() { + return this._effectiveTimeScale; + } + setDuration(duration) { + this.timeScale = this._clip.duration / duration; + return this.stopWarping(); + } + syncWith(action) { + this.time = action.time; + this.timeScale = action.timeScale; + return this.stopWarping(); + } + halt(duration) { + return this.warp(this._effectiveTimeScale, 0, duration); + } + warp(startTimeScale, endTimeScale, duration) { + const mixer = this._mixer, now2 = mixer.time, timeScale = this.timeScale; + let interpolant = this._timeScaleInterpolant; + if (interpolant === null) { + interpolant = mixer._lendControlInterpolant(); + this._timeScaleInterpolant = interpolant; + } + const times = interpolant.parameterPositions, values = interpolant.sampleValues; + times[0] = now2; + times[1] = now2 + duration; + values[0] = startTimeScale / timeScale; + values[1] = endTimeScale / timeScale; + return this; + } + stopWarping() { + const timeScaleInterpolant = this._timeScaleInterpolant; + if (timeScaleInterpolant !== null) { + this._timeScaleInterpolant = null; + this._mixer._takeBackControlInterpolant(timeScaleInterpolant); + } + return this; + } + // Object Accessors + getMixer() { + return this._mixer; + } + getClip() { + return this._clip; + } + getRoot() { + return this._localRoot || this._mixer._root; + } + // Interna + _update(time, deltaTime, timeDirection, accuIndex) { + if (!this.enabled) { + this._updateWeight(time); + return; + } + const startTime = this._startTime; + if (startTime !== null) { + const timeRunning = (time - startTime) * timeDirection; + if (timeRunning < 0 || timeDirection === 0) { + deltaTime = 0; + } else { + this._startTime = null; + deltaTime = timeDirection * timeRunning; + } + } + deltaTime *= this._updateTimeScale(time); + const clipTime = this._updateTime(deltaTime); + const weight = this._updateWeight(time); + if (weight > 0) { + const interpolants = this._interpolants; + const propertyMixers = this._propertyBindings; + switch (this.blendMode) { + case AdditiveAnimationBlendMode: + for (let j = 0, m = interpolants.length; j !== m; ++j) { + interpolants[j].evaluate(clipTime); + propertyMixers[j].accumulateAdditive(weight); + } + break; + case NormalAnimationBlendMode: + default: + for (let j = 0, m = interpolants.length; j !== m; ++j) { + interpolants[j].evaluate(clipTime); + propertyMixers[j].accumulate(accuIndex, weight); + } + } + } + } + _updateWeight(time) { + let weight = 0; + if (this.enabled) { + weight = this.weight; + const interpolant = this._weightInterpolant; + if (interpolant !== null) { + const interpolantValue = interpolant.evaluate(time)[0]; + weight *= interpolantValue; + if (time > interpolant.parameterPositions[1]) { + this.stopFading(); + if (interpolantValue === 0) { + this.enabled = false; + } + } + } + } + this._effectiveWeight = weight; + return weight; + } + _updateTimeScale(time) { + let timeScale = 0; + if (!this.paused) { + timeScale = this.timeScale; + const interpolant = this._timeScaleInterpolant; + if (interpolant !== null) { + const interpolantValue = interpolant.evaluate(time)[0]; + timeScale *= interpolantValue; + if (time > interpolant.parameterPositions[1]) { + this.stopWarping(); + if (timeScale === 0) { + this.paused = true; + } else { + this.timeScale = timeScale; + } + } + } + } + this._effectiveTimeScale = timeScale; + return timeScale; + } + _updateTime(deltaTime) { + const duration = this._clip.duration; + const loop = this.loop; + let time = this.time + deltaTime; + let loopCount = this._loopCount; + const pingPong = loop === LoopPingPong; + if (deltaTime === 0) { + if (loopCount === -1) return time; + return pingPong && (loopCount & 1) === 1 ? duration - time : time; + } + if (loop === LoopOnce) { + if (loopCount === -1) { + this._loopCount = 0; + this._setEndings(true, true, false); + } + handle_stop: { + if (time >= duration) { + time = duration; + } else if (time < 0) { + time = 0; + } else { + this.time = time; + break handle_stop; + } + if (this.clampWhenFinished) this.paused = true; + else this.enabled = false; + this.time = time; + this._mixer.dispatchEvent({ + type: "finished", + action: this, + direction: deltaTime < 0 ? -1 : 1 + }); + } + } else { + if (loopCount === -1) { + if (deltaTime >= 0) { + loopCount = 0; + this._setEndings(true, this.repetitions === 0, pingPong); + } else { + this._setEndings(this.repetitions === 0, true, pingPong); + } + } + if (time >= duration || time < 0) { + const loopDelta = Math.floor(time / duration); + time -= duration * loopDelta; + loopCount += Math.abs(loopDelta); + const pending = this.repetitions - loopCount; + if (pending <= 0) { + if (this.clampWhenFinished) this.paused = true; + else this.enabled = false; + time = deltaTime > 0 ? duration : 0; + this.time = time; + this._mixer.dispatchEvent({ + type: "finished", + action: this, + direction: deltaTime > 0 ? 1 : -1 + }); + } else { + if (pending === 1) { + const atStart = deltaTime < 0; + this._setEndings(atStart, !atStart, pingPong); + } else { + this._setEndings(false, false, pingPong); + } + this._loopCount = loopCount; + this.time = time; + this._mixer.dispatchEvent({ + type: "loop", + action: this, + loopDelta + }); + } + } else { + this.time = time; + } + if (pingPong && (loopCount & 1) === 1) { + return duration - time; + } + } + return time; + } + _setEndings(atStart, atEnd, pingPong) { + const settings = this._interpolantSettings; + if (pingPong) { + settings.endingStart = ZeroSlopeEnding; + settings.endingEnd = ZeroSlopeEnding; + } else { + if (atStart) { + settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; + } else { + settings.endingStart = WrapAroundEnding; + } + if (atEnd) { + settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; + } else { + settings.endingEnd = WrapAroundEnding; + } + } + } + _scheduleFading(duration, weightNow, weightThen) { + const mixer = this._mixer, now2 = mixer.time; + let interpolant = this._weightInterpolant; + if (interpolant === null) { + interpolant = mixer._lendControlInterpolant(); + this._weightInterpolant = interpolant; + } + const times = interpolant.parameterPositions, values = interpolant.sampleValues; + times[0] = now2; + values[0] = weightNow; + times[1] = now2 + duration; + values[1] = weightThen; + return this; + } +}; +var _controlInterpolantsResultBuffer = new Float32Array(1); +var AnimationMixer = class extends EventDispatcher { + constructor(root) { + super(); + this._root = root; + this._initMemoryManager(); + this._accuIndex = 0; + this.time = 0; + this.timeScale = 1; + } + _bindAction(action, prototypeAction) { + const root = action._localRoot || this._root, tracks = action._clip.tracks, nTracks = tracks.length, bindings = action._propertyBindings, interpolants = action._interpolants, rootUuid = root.uuid, bindingsByRoot = this._bindingsByRootAndName; + let bindingsByName = bindingsByRoot[rootUuid]; + if (bindingsByName === void 0) { + bindingsByName = {}; + bindingsByRoot[rootUuid] = bindingsByName; + } + for (let i = 0; i !== nTracks; ++i) { + const track = tracks[i], trackName = track.name; + let binding = bindingsByName[trackName]; + if (binding !== void 0) { + ++binding.referenceCount; + bindings[i] = binding; + } else { + binding = bindings[i]; + if (binding !== void 0) { + if (binding._cacheIndex === null) { + ++binding.referenceCount; + this._addInactiveBinding(binding, rootUuid, trackName); + } + continue; + } + const path = prototypeAction && prototypeAction._propertyBindings[i].binding.parsedPath; + binding = new PropertyMixer( + PropertyBinding.create(root, trackName, path), + track.ValueTypeName, + track.getValueSize() + ); + ++binding.referenceCount; + this._addInactiveBinding(binding, rootUuid, trackName); + bindings[i] = binding; + } + interpolants[i].resultBuffer = binding.buffer; + } + } + _activateAction(action) { + if (!this._isActiveAction(action)) { + if (action._cacheIndex === null) { + const rootUuid = (action._localRoot || this._root).uuid, clipUuid = action._clip.uuid, actionsForClip = this._actionsByClip[clipUuid]; + this._bindAction( + action, + actionsForClip && actionsForClip.knownActions[0] + ); + this._addInactiveAction(action, clipUuid, rootUuid); + } + const bindings = action._propertyBindings; + for (let i = 0, n = bindings.length; i !== n; ++i) { + const binding = bindings[i]; + if (binding.useCount++ === 0) { + this._lendBinding(binding); + binding.saveOriginalState(); + } + } + this._lendAction(action); + } + } + _deactivateAction(action) { + if (this._isActiveAction(action)) { + const bindings = action._propertyBindings; + for (let i = 0, n = bindings.length; i !== n; ++i) { + const binding = bindings[i]; + if (--binding.useCount === 0) { + binding.restoreOriginalState(); + this._takeBackBinding(binding); + } + } + this._takeBackAction(action); + } + } + // Memory manager + _initMemoryManager() { + this._actions = []; + this._nActiveActions = 0; + this._actionsByClip = {}; + this._bindings = []; + this._nActiveBindings = 0; + this._bindingsByRootAndName = {}; + this._controlInterpolants = []; + this._nActiveControlInterpolants = 0; + const scope = this; + this.stats = { + actions: { + get total() { + return scope._actions.length; + }, + get inUse() { + return scope._nActiveActions; + } + }, + bindings: { + get total() { + return scope._bindings.length; + }, + get inUse() { + return scope._nActiveBindings; + } + }, + controlInterpolants: { + get total() { + return scope._controlInterpolants.length; + }, + get inUse() { + return scope._nActiveControlInterpolants; + } + } + }; + } + // Memory management for AnimationAction objects + _isActiveAction(action) { + const index = action._cacheIndex; + return index !== null && index < this._nActiveActions; + } + _addInactiveAction(action, clipUuid, rootUuid) { + const actions = this._actions, actionsByClip = this._actionsByClip; + let actionsForClip = actionsByClip[clipUuid]; + if (actionsForClip === void 0) { + actionsForClip = { + knownActions: [action], + actionByRoot: {} + }; + action._byClipCacheIndex = 0; + actionsByClip[clipUuid] = actionsForClip; + } else { + const knownActions = actionsForClip.knownActions; + action._byClipCacheIndex = knownActions.length; + knownActions.push(action); + } + action._cacheIndex = actions.length; + actions.push(action); + actionsForClip.actionByRoot[rootUuid] = action; + } + _removeInactiveAction(action) { + const actions = this._actions, lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex; + lastInactiveAction._cacheIndex = cacheIndex; + actions[cacheIndex] = lastInactiveAction; + actions.pop(); + action._cacheIndex = null; + const clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex; + lastKnownAction._byClipCacheIndex = byClipCacheIndex; + knownActionsForClip[byClipCacheIndex] = lastKnownAction; + knownActionsForClip.pop(); + action._byClipCacheIndex = null; + const actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid; + delete actionByRoot[rootUuid]; + if (knownActionsForClip.length === 0) { + delete actionsByClip[clipUuid]; + } + this._removeInactiveBindingsForAction(action); + } + _removeInactiveBindingsForAction(action) { + const bindings = action._propertyBindings; + for (let i = 0, n = bindings.length; i !== n; ++i) { + const binding = bindings[i]; + if (--binding.referenceCount === 0) { + this._removeInactiveBinding(binding); + } + } + } + _lendAction(action) { + const actions = this._actions, prevIndex = action._cacheIndex, lastActiveIndex = this._nActiveActions++, firstInactiveAction = actions[lastActiveIndex]; + action._cacheIndex = lastActiveIndex; + actions[lastActiveIndex] = action; + firstInactiveAction._cacheIndex = prevIndex; + actions[prevIndex] = firstInactiveAction; + } + _takeBackAction(action) { + const actions = this._actions, prevIndex = action._cacheIndex, firstInactiveIndex = --this._nActiveActions, lastActiveAction = actions[firstInactiveIndex]; + action._cacheIndex = firstInactiveIndex; + actions[firstInactiveIndex] = action; + lastActiveAction._cacheIndex = prevIndex; + actions[prevIndex] = lastActiveAction; + } + // Memory management for PropertyMixer objects + _addInactiveBinding(binding, rootUuid, trackName) { + const bindingsByRoot = this._bindingsByRootAndName, bindings = this._bindings; + let bindingByName = bindingsByRoot[rootUuid]; + if (bindingByName === void 0) { + bindingByName = {}; + bindingsByRoot[rootUuid] = bindingByName; + } + bindingByName[trackName] = binding; + binding._cacheIndex = bindings.length; + bindings.push(binding); + } + _removeInactiveBinding(binding) { + const bindings = this._bindings, propBinding = binding.binding, rootUuid = propBinding.rootNode.uuid, trackName = propBinding.path, bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid], lastInactiveBinding = bindings[bindings.length - 1], cacheIndex = binding._cacheIndex; + lastInactiveBinding._cacheIndex = cacheIndex; + bindings[cacheIndex] = lastInactiveBinding; + bindings.pop(); + delete bindingByName[trackName]; + if (Object.keys(bindingByName).length === 0) { + delete bindingsByRoot[rootUuid]; + } + } + _lendBinding(binding) { + const bindings = this._bindings, prevIndex = binding._cacheIndex, lastActiveIndex = this._nActiveBindings++, firstInactiveBinding = bindings[lastActiveIndex]; + binding._cacheIndex = lastActiveIndex; + bindings[lastActiveIndex] = binding; + firstInactiveBinding._cacheIndex = prevIndex; + bindings[prevIndex] = firstInactiveBinding; + } + _takeBackBinding(binding) { + const bindings = this._bindings, prevIndex = binding._cacheIndex, firstInactiveIndex = --this._nActiveBindings, lastActiveBinding = bindings[firstInactiveIndex]; + binding._cacheIndex = firstInactiveIndex; + bindings[firstInactiveIndex] = binding; + lastActiveBinding._cacheIndex = prevIndex; + bindings[prevIndex] = lastActiveBinding; + } + // Memory management of Interpolants for weight and time scale + _lendControlInterpolant() { + const interpolants = this._controlInterpolants, lastActiveIndex = this._nActiveControlInterpolants++; + let interpolant = interpolants[lastActiveIndex]; + if (interpolant === void 0) { + interpolant = new LinearInterpolant( + new Float32Array(2), + new Float32Array(2), + 1, + _controlInterpolantsResultBuffer + ); + interpolant.__cacheIndex = lastActiveIndex; + interpolants[lastActiveIndex] = interpolant; + } + return interpolant; + } + _takeBackControlInterpolant(interpolant) { + const interpolants = this._controlInterpolants, prevIndex = interpolant.__cacheIndex, firstInactiveIndex = --this._nActiveControlInterpolants, lastActiveInterpolant = interpolants[firstInactiveIndex]; + interpolant.__cacheIndex = firstInactiveIndex; + interpolants[firstInactiveIndex] = interpolant; + lastActiveInterpolant.__cacheIndex = prevIndex; + interpolants[prevIndex] = lastActiveInterpolant; + } + // return an action for a clip optionally using a custom root target + // object (this method allocates a lot of dynamic memory in case a + // previously unknown clip/root combination is specified) + clipAction(clip, optionalRoot, blendMode) { + const root = optionalRoot || this._root, rootUuid = root.uuid; + let clipObject = typeof clip === "string" ? AnimationClip.findByName(root, clip) : clip; + const clipUuid = clipObject !== null ? clipObject.uuid : clip; + const actionsForClip = this._actionsByClip[clipUuid]; + let prototypeAction = null; + if (blendMode === void 0) { + if (clipObject !== null) { + blendMode = clipObject.blendMode; + } else { + blendMode = NormalAnimationBlendMode; + } + } + if (actionsForClip !== void 0) { + const existingAction = actionsForClip.actionByRoot[rootUuid]; + if (existingAction !== void 0 && existingAction.blendMode === blendMode) { + return existingAction; + } + prototypeAction = actionsForClip.knownActions[0]; + if (clipObject === null) + clipObject = prototypeAction._clip; + } + if (clipObject === null) return null; + const newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode); + this._bindAction(newAction, prototypeAction); + this._addInactiveAction(newAction, clipUuid, rootUuid); + return newAction; + } + // get an existing action + existingAction(clip, optionalRoot) { + const root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === "string" ? AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject ? clipObject.uuid : clip, actionsForClip = this._actionsByClip[clipUuid]; + if (actionsForClip !== void 0) { + return actionsForClip.actionByRoot[rootUuid] || null; + } + return null; + } + // deactivates all previously scheduled actions + stopAllAction() { + const actions = this._actions, nActions = this._nActiveActions; + for (let i = nActions - 1; i >= 0; --i) { + actions[i].stop(); + } + return this; + } + // advance the time and update apply the animation + update(deltaTime) { + deltaTime *= this.timeScale; + const actions = this._actions, nActions = this._nActiveActions, time = this.time += deltaTime, timeDirection = Math.sign(deltaTime), accuIndex = this._accuIndex ^= 1; + for (let i = 0; i !== nActions; ++i) { + const action = actions[i]; + action._update(time, deltaTime, timeDirection, accuIndex); + } + const bindings = this._bindings, nBindings = this._nActiveBindings; + for (let i = 0; i !== nBindings; ++i) { + bindings[i].apply(accuIndex); + } + return this; + } + // Allows you to seek to a specific time in an animation. + setTime(timeInSeconds) { + this.time = 0; + for (let i = 0; i < this._actions.length; i++) { + this._actions[i].time = 0; + } + return this.update(timeInSeconds); + } + // return this mixer's root target object + getRoot() { + return this._root; + } + // free all resources specific to a particular clip + uncacheClip(clip) { + const actions = this._actions, clipUuid = clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid]; + if (actionsForClip !== void 0) { + const actionsToRemove = actionsForClip.knownActions; + for (let i = 0, n = actionsToRemove.length; i !== n; ++i) { + const action = actionsToRemove[i]; + this._deactivateAction(action); + const cacheIndex = action._cacheIndex, lastInactiveAction = actions[actions.length - 1]; + action._cacheIndex = null; + action._byClipCacheIndex = null; + lastInactiveAction._cacheIndex = cacheIndex; + actions[cacheIndex] = lastInactiveAction; + actions.pop(); + this._removeInactiveBindingsForAction(action); + } + delete actionsByClip[clipUuid]; + } + } + // free all resources specific to a particular root target object + uncacheRoot(root) { + const rootUuid = root.uuid, actionsByClip = this._actionsByClip; + for (const clipUuid in actionsByClip) { + const actionByRoot = actionsByClip[clipUuid].actionByRoot, action = actionByRoot[rootUuid]; + if (action !== void 0) { + this._deactivateAction(action); + this._removeInactiveAction(action); + } + } + const bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid]; + if (bindingByName !== void 0) { + for (const trackName in bindingByName) { + const binding = bindingByName[trackName]; + binding.restoreOriginalState(); + this._removeInactiveBinding(binding); + } + } + } + // remove a targeted clip from the cache + uncacheAction(clip, optionalRoot) { + const action = this.existingAction(clip, optionalRoot); + if (action !== null) { + this._deactivateAction(action); + this._removeInactiveAction(action); + } + } +}; +var _matrix = /* @__PURE__ */ new Matrix4(); +var Raycaster = class { + constructor(origin, direction, near = 0, far = Infinity) { + this.ray = new Ray(origin, direction); + this.near = near; + this.far = far; + this.camera = null; + this.layers = new Layers(); + this.params = { + Mesh: {}, + Line: { threshold: 1 }, + LOD: {}, + Points: { threshold: 1 }, + Sprite: {} + }; + } + set(origin, direction) { + this.ray.set(origin, direction); + } + setFromCamera(coords, camera) { + if (camera.isPerspectiveCamera) { + this.ray.origin.setFromMatrixPosition(camera.matrixWorld); + this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize(); + this.camera = camera; + } else if (camera.isOrthographicCamera) { + this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera); + this.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld); + this.camera = camera; + } else { + console.error("THREE.Raycaster: Unsupported camera type: " + camera.type); + } + } + setFromXRController(controller) { + _matrix.identity().extractRotation(controller.matrixWorld); + this.ray.origin.setFromMatrixPosition(controller.matrixWorld); + this.ray.direction.set(0, 0, -1).applyMatrix4(_matrix); + return this; + } + intersectObject(object, recursive = true, intersects2 = []) { + intersect(object, this, intersects2, recursive); + intersects2.sort(ascSort); + return intersects2; + } + intersectObjects(objects, recursive = true, intersects2 = []) { + for (let i = 0, l = objects.length; i < l; i++) { + intersect(objects[i], this, intersects2, recursive); + } + intersects2.sort(ascSort); + return intersects2; + } +}; +function ascSort(a, b) { + return a.distance - b.distance; +} +function intersect(object, raycaster, intersects2, recursive) { + if (object.layers.test(raycaster.layers)) { + object.raycast(raycaster, intersects2); + } + if (recursive === true) { + const children = object.children; + for (let i = 0, l = children.length; i < l; i++) { + intersect(children[i], raycaster, intersects2, true); + } + } +} +var Spherical = class { + constructor(radius = 1, phi = 0, theta = 0) { + this.radius = radius; + this.phi = phi; + this.theta = theta; + return this; + } + set(radius, phi, theta) { + this.radius = radius; + this.phi = phi; + this.theta = theta; + return this; + } + copy(other) { + this.radius = other.radius; + this.phi = other.phi; + this.theta = other.theta; + return this; + } + // restrict phi to be between EPS and PI-EPS + makeSafe() { + const EPS = 1e-6; + this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi)); + return this; + } + setFromVector3(v) { + return this.setFromCartesianCoords(v.x, v.y, v.z); + } + setFromCartesianCoords(x, y, z) { + this.radius = Math.sqrt(x * x + y * y + z * z); + if (this.radius === 0) { + this.theta = 0; + this.phi = 0; + } else { + this.theta = Math.atan2(x, z); + this.phi = Math.acos(clamp(y / this.radius, -1, 1)); + } + return this; + } + clone() { + return new this.constructor().copy(this); + } +}; +var _vector$3 = /* @__PURE__ */ new Vector3(); +var SpotLightHelper = class extends Object3D { + constructor(light, color) { + super(); + this.light = light; + this.matrixAutoUpdate = false; + this.color = color; + this.type = "SpotLightHelper"; + const geometry = new BufferGeometry(); + const positions = [ + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + -1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + -1, + 1 + ]; + for (let i = 0, j = 1, l = 32; i < l; i++, j++) { + const p1 = i / l * Math.PI * 2; + const p2 = j / l * Math.PI * 2; + positions.push( + Math.cos(p1), + Math.sin(p1), + 1, + Math.cos(p2), + Math.sin(p2), + 1 + ); + } + geometry.setAttribute("position", new Float32BufferAttribute(positions, 3)); + const material = new LineBasicMaterial({ fog: false, toneMapped: false }); + this.cone = new LineSegments(geometry, material); + this.add(this.cone); + this.update(); + } + dispose() { + this.cone.geometry.dispose(); + this.cone.material.dispose(); + } + update() { + this.light.updateWorldMatrix(true, false); + this.light.target.updateWorldMatrix(true, false); + if (this.parent) { + this.parent.updateWorldMatrix(true); + this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld); + } else { + this.matrix.copy(this.light.matrixWorld); + } + this.matrixWorld.copy(this.light.matrixWorld); + const coneLength = this.light.distance ? this.light.distance : 1e3; + const coneWidth = coneLength * Math.tan(this.light.angle); + this.cone.scale.set(coneWidth, coneWidth, coneLength); + _vector$3.setFromMatrixPosition(this.light.target.matrixWorld); + this.cone.lookAt(_vector$3); + if (this.color !== void 0) { + this.cone.material.color.set(this.color); + } else { + this.cone.material.color.copy(this.light.color); + } + } +}; +var PointLightHelper = class extends Mesh { + constructor(light, sphereSize, color) { + const geometry = new SphereGeometry(sphereSize, 4, 2); + const material = new MeshBasicMaterial({ wireframe: true, fog: false, toneMapped: false }); + super(geometry, material); + this.light = light; + this.color = color; + this.type = "PointLightHelper"; + this.matrix = this.light.matrixWorld; + this.matrixAutoUpdate = false; + this.update(); + } + dispose() { + this.geometry.dispose(); + this.material.dispose(); + } + update() { + this.light.updateWorldMatrix(true, false); + if (this.color !== void 0) { + this.material.color.set(this.color); + } else { + this.material.color.copy(this.light.color); + } + } +}; +var AxesHelper = class extends LineSegments { + constructor(size = 1) { + const vertices = [ + 0, + 0, + 0, + size, + 0, + 0, + 0, + 0, + 0, + 0, + size, + 0, + 0, + 0, + 0, + 0, + 0, + size + ]; + const colors = [ + 1, + 0, + 0, + 1, + 0.6, + 0, + 0, + 1, + 0, + 0.6, + 1, + 0, + 0, + 0, + 1, + 0, + 0.6, + 1 + ]; + const geometry = new BufferGeometry(); + geometry.setAttribute("position", new Float32BufferAttribute(vertices, 3)); + geometry.setAttribute("color", new Float32BufferAttribute(colors, 3)); + const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false }); + super(geometry, material); + this.type = "AxesHelper"; + } + setColors(xAxisColor, yAxisColor, zAxisColor) { + const color = new Color(); + const array = this.geometry.attributes.color.array; + color.set(xAxisColor); + color.toArray(array, 0); + color.toArray(array, 3); + color.set(yAxisColor); + color.toArray(array, 6); + color.toArray(array, 9); + color.set(zAxisColor); + color.toArray(array, 12); + color.toArray(array, 15); + this.geometry.attributes.color.needsUpdate = true; + return this; + } + dispose() { + this.geometry.dispose(); + this.material.dispose(); + } +}; +if (typeof __THREE_DEVTOOLS__ !== "undefined") { + __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: { + revision: REVISION + } })); +} +if (typeof window !== "undefined") { + if (window.__THREE__) { + console.warn("WARNING: Multiple instances of Three.js being imported."); + } else { + window.__THREE__ = REVISION; + } +} + +// ../../node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js +var PositionalAudioHelper = class extends Line { + constructor(audio, range = 1, divisionsInnerAngle = 16, divisionsOuterAngle = 2) { + const geometry = new BufferGeometry(); + const divisions = divisionsInnerAngle + divisionsOuterAngle * 2; + const positions = new Float32Array((divisions * 3 + 3) * 3); + geometry.setAttribute("position", new BufferAttribute(positions, 3)); + const materialInnerAngle = new LineBasicMaterial({ color: 65280 }); + const materialOuterAngle = new LineBasicMaterial({ color: 16776960 }); + super(geometry, [materialOuterAngle, materialInnerAngle]); + this.audio = audio; + this.range = range; + this.divisionsInnerAngle = divisionsInnerAngle; + this.divisionsOuterAngle = divisionsOuterAngle; + this.type = "PositionalAudioHelper"; + this.update(); + } + update() { + const audio = this.audio; + const range = this.range; + const divisionsInnerAngle = this.divisionsInnerAngle; + const divisionsOuterAngle = this.divisionsOuterAngle; + const coneInnerAngle = MathUtils.degToRad(audio.panner.coneInnerAngle); + const coneOuterAngle = MathUtils.degToRad(audio.panner.coneOuterAngle); + const halfConeInnerAngle = coneInnerAngle / 2; + const halfConeOuterAngle = coneOuterAngle / 2; + let start = 0; + let count = 0; + let i; + let stride; + const geometry = this.geometry; + const positionAttribute = geometry.attributes.position; + geometry.clearGroups(); + function generateSegment(from, to, divisions, materialIndex) { + const step = (to - from) / divisions; + positionAttribute.setXYZ(start, 0, 0, 0); + count++; + for (i = from; i < to; i += step) { + stride = start + count; + positionAttribute.setXYZ(stride, Math.sin(i) * range, 0, Math.cos(i) * range); + positionAttribute.setXYZ(stride + 1, Math.sin(Math.min(i + step, to)) * range, 0, Math.cos(Math.min(i + step, to)) * range); + positionAttribute.setXYZ(stride + 2, 0, 0, 0); + count += 3; + } + geometry.addGroup(start, count, materialIndex); + start += count; + count = 0; + } + generateSegment(-halfConeOuterAngle, -halfConeInnerAngle, divisionsOuterAngle, 0); + generateSegment(-halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1); + generateSegment(halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0); + positionAttribute.needsUpdate = true; + if (coneInnerAngle === coneOuterAngle) this.material[0].visible = false; + } + dispose() { + this.geometry.dispose(); + this.material[0].dispose(); + this.material[1].dispose(); + } +}; + +// ../../node_modules/three/examples/jsm/loaders/DRACOLoader.js +var _taskCache = /* @__PURE__ */ new WeakMap(); +var DRACOLoader = class extends Loader { + constructor(manager) { + super(manager); + this.decoderPath = ""; + this.decoderConfig = {}; + this.decoderBinary = null; + this.decoderPending = null; + this.workerLimit = 4; + this.workerPool = []; + this.workerNextTaskID = 1; + this.workerSourceURL = ""; + this.defaultAttributeIDs = { + position: "POSITION", + normal: "NORMAL", + color: "COLOR", + uv: "TEX_COORD" + }; + this.defaultAttributeTypes = { + position: "Float32Array", + normal: "Float32Array", + color: "Float32Array", + uv: "Float32Array" + }; + } + setDecoderPath(path) { + this.decoderPath = path; + return this; + } + setDecoderConfig(config) { + this.decoderConfig = config; + return this; + } + setWorkerLimit(workerLimit) { + this.workerLimit = workerLimit; + return this; + } + load(url, onLoad, onProgress, onError) { + const loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setResponseType("arraybuffer"); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, (buffer) => { + this.parse(buffer, onLoad, onError); + }, onProgress, onError); + } + parse(buffer, onLoad, onError = () => { + }) { + this.decodeDracoFile(buffer, onLoad, null, null, SRGBColorSpace).catch(onError); + } + decodeDracoFile(buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => { + }) { + const taskConfig = { + attributeIDs: attributeIDs || this.defaultAttributeIDs, + attributeTypes: attributeTypes || this.defaultAttributeTypes, + useUniqueIDs: !!attributeIDs, + vertexColorSpace + }; + return this.decodeGeometry(buffer, taskConfig).then(callback).catch(onError); + } + decodeGeometry(buffer, taskConfig) { + const taskKey = JSON.stringify(taskConfig); + if (_taskCache.has(buffer)) { + const cachedTask = _taskCache.get(buffer); + if (cachedTask.key === taskKey) { + return cachedTask.promise; + } else if (buffer.byteLength === 0) { + throw new Error( + "THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred." + ); + } + } + let worker; + const taskID = this.workerNextTaskID++; + const taskCost = buffer.byteLength; + const geometryPending = this._getWorker(taskID, taskCost).then((_worker) => { + worker = _worker; + return new Promise((resolve, reject) => { + worker._callbacks[taskID] = { resolve, reject }; + worker.postMessage({ type: "decode", id: taskID, taskConfig, buffer }, [buffer]); + }); + }).then((message) => this._createGeometry(message.geometry)); + geometryPending.catch(() => true).then(() => { + if (worker && taskID) { + this._releaseTask(worker, taskID); + } + }); + _taskCache.set(buffer, { + key: taskKey, + promise: geometryPending + }); + return geometryPending; + } + _createGeometry(geometryData) { + const geometry = new BufferGeometry(); + if (geometryData.index) { + geometry.setIndex(new BufferAttribute(geometryData.index.array, 1)); + } + for (let i = 0; i < geometryData.attributes.length; i++) { + const result = geometryData.attributes[i]; + const name = result.name; + const array = result.array; + const itemSize = result.itemSize; + const attribute = new BufferAttribute(array, itemSize); + if (name === "color") { + this._assignVertexColorSpace(attribute, result.vertexColorSpace); + attribute.normalized = array instanceof Float32Array === false; + } + geometry.setAttribute(name, attribute); + } + return geometry; + } + _assignVertexColorSpace(attribute, inputColorSpace) { + if (inputColorSpace !== SRGBColorSpace) return; + const _color2 = new Color(); + for (let i = 0, il = attribute.count; i < il; i++) { + _color2.fromBufferAttribute(attribute, i).convertSRGBToLinear(); + attribute.setXYZ(i, _color2.r, _color2.g, _color2.b); + } + } + _loadLibrary(url, responseType) { + const loader = new FileLoader(this.manager); + loader.setPath(this.decoderPath); + loader.setResponseType(responseType); + loader.setWithCredentials(this.withCredentials); + return new Promise((resolve, reject) => { + loader.load(url, resolve, void 0, reject); + }); + } + preload() { + this._initDecoder(); + return this; + } + _initDecoder() { + if (this.decoderPending) return this.decoderPending; + const useJS = typeof WebAssembly !== "object" || this.decoderConfig.type === "js"; + const librariesPending = []; + if (useJS) { + librariesPending.push(this._loadLibrary("draco_decoder.js", "text")); + } else { + librariesPending.push(this._loadLibrary("draco_wasm_wrapper.js", "text")); + librariesPending.push(this._loadLibrary("draco_decoder.wasm", "arraybuffer")); + } + this.decoderPending = Promise.all(librariesPending).then((libraries) => { + const jsContent = libraries[0]; + if (!useJS) { + this.decoderConfig.wasmBinary = libraries[1]; + } + const fn = DRACOWorker.toString(); + const body = [ + "/* draco decoder */", + jsContent, + "", + "/* worker */", + fn.substring(fn.indexOf("{") + 1, fn.lastIndexOf("}")) + ].join("\n"); + this.workerSourceURL = URL.createObjectURL(new Blob([body])); + }); + return this.decoderPending; + } + _getWorker(taskID, taskCost) { + return this._initDecoder().then(() => { + if (this.workerPool.length < this.workerLimit) { + const worker2 = new Worker(this.workerSourceURL); + worker2._callbacks = {}; + worker2._taskCosts = {}; + worker2._taskLoad = 0; + worker2.postMessage({ type: "init", decoderConfig: this.decoderConfig }); + worker2.onmessage = function(e) { + const message = e.data; + switch (message.type) { + case "decode": + worker2._callbacks[message.id].resolve(message); + break; + case "error": + worker2._callbacks[message.id].reject(message); + break; + default: + console.error('THREE.DRACOLoader: Unexpected message, "' + message.type + '"'); + } + }; + this.workerPool.push(worker2); + } else { + this.workerPool.sort(function(a, b) { + return a._taskLoad > b._taskLoad ? -1 : 1; + }); + } + const worker = this.workerPool[this.workerPool.length - 1]; + worker._taskCosts[taskID] = taskCost; + worker._taskLoad += taskCost; + return worker; + }); + } + _releaseTask(worker, taskID) { + worker._taskLoad -= worker._taskCosts[taskID]; + delete worker._callbacks[taskID]; + delete worker._taskCosts[taskID]; + } + debug() { + console.log("Task load: ", this.workerPool.map((worker) => worker._taskLoad)); + } + dispose() { + for (let i = 0; i < this.workerPool.length; ++i) { + this.workerPool[i].terminate(); + } + this.workerPool.length = 0; + if (this.workerSourceURL !== "") { + URL.revokeObjectURL(this.workerSourceURL); + } + return this; + } +}; +function DRACOWorker() { + let decoderConfig; + let decoderPending; + onmessage = function(e) { + const message = e.data; + switch (message.type) { + case "init": + decoderConfig = message.decoderConfig; + decoderPending = new Promise(function(resolve) { + decoderConfig.onModuleLoaded = function(draco) { + resolve({ draco }); + }; + DracoDecoderModule(decoderConfig); + }); + break; + case "decode": + const buffer = message.buffer; + const taskConfig = message.taskConfig; + decoderPending.then((module) => { + const draco = module.draco; + const decoder = new draco.Decoder(); + try { + const geometry = decodeGeometry(draco, decoder, new Int8Array(buffer), taskConfig); + const buffers = geometry.attributes.map((attr) => attr.array.buffer); + if (geometry.index) buffers.push(geometry.index.array.buffer); + self.postMessage({ type: "decode", id: message.id, geometry }, buffers); + } catch (error) { + console.error(error); + self.postMessage({ type: "error", id: message.id, error: error.message }); + } finally { + draco.destroy(decoder); + } + }); + break; + } + }; + function decodeGeometry(draco, decoder, array, taskConfig) { + const attributeIDs = taskConfig.attributeIDs; + const attributeTypes = taskConfig.attributeTypes; + let dracoGeometry; + let decodingStatus; + const geometryType = decoder.GetEncodedGeometryType(array); + if (geometryType === draco.TRIANGULAR_MESH) { + dracoGeometry = new draco.Mesh(); + decodingStatus = decoder.DecodeArrayToMesh(array, array.byteLength, dracoGeometry); + } else if (geometryType === draco.POINT_CLOUD) { + dracoGeometry = new draco.PointCloud(); + decodingStatus = decoder.DecodeArrayToPointCloud(array, array.byteLength, dracoGeometry); + } else { + throw new Error("THREE.DRACOLoader: Unexpected geometry type."); + } + if (!decodingStatus.ok() || dracoGeometry.ptr === 0) { + throw new Error("THREE.DRACOLoader: Decoding failed: " + decodingStatus.error_msg()); + } + const geometry = { index: null, attributes: [] }; + for (const attributeName in attributeIDs) { + const attributeType = self[attributeTypes[attributeName]]; + let attribute; + let attributeID; + if (taskConfig.useUniqueIDs) { + attributeID = attributeIDs[attributeName]; + attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeID); + } else { + attributeID = decoder.GetAttributeId(dracoGeometry, draco[attributeIDs[attributeName]]); + if (attributeID === -1) continue; + attribute = decoder.GetAttribute(dracoGeometry, attributeID); + } + const attributeResult = decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute); + if (attributeName === "color") { + attributeResult.vertexColorSpace = taskConfig.vertexColorSpace; + } + geometry.attributes.push(attributeResult); + } + if (geometryType === draco.TRIANGULAR_MESH) { + geometry.index = decodeIndex(draco, decoder, dracoGeometry); + } + draco.destroy(dracoGeometry); + return geometry; + } + function decodeIndex(draco, decoder, dracoGeometry) { + const numFaces = dracoGeometry.num_faces(); + const numIndices = numFaces * 3; + const byteLength = numIndices * 4; + const ptr = draco._malloc(byteLength); + decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr); + const index = new Uint32Array(draco.HEAPF32.buffer, ptr, numIndices).slice(); + draco._free(ptr); + return { array: index, itemSize: 1 }; + } + function decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute) { + const numComponents = attribute.num_components(); + const numPoints = dracoGeometry.num_points(); + const numValues = numPoints * numComponents; + const byteLength = numValues * attributeType.BYTES_PER_ELEMENT; + const dataType = getDracoDataType(draco, attributeType); + const ptr = draco._malloc(byteLength); + decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, attribute, dataType, byteLength, ptr); + const array = new attributeType(draco.HEAPF32.buffer, ptr, numValues).slice(); + draco._free(ptr); + return { + name: attributeName, + array, + itemSize: numComponents + }; + } + function getDracoDataType(draco, attributeType) { + switch (attributeType) { + case Float32Array: + return draco.DT_FLOAT32; + case Int8Array: + return draco.DT_INT8; + case Int16Array: + return draco.DT_INT16; + case Int32Array: + return draco.DT_INT32; + case Uint8Array: + return draco.DT_UINT8; + case Uint16Array: + return draco.DT_UINT16; + case Uint32Array: + return draco.DT_UINT32; + } + } +} + +// ../../node_modules/three/examples/jsm/libs/meshopt_decoder.module.js +var MeshoptDecoder = function() { + "use strict"; + var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb"; + var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb"; + var detector = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11]); + var wasmpack = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]); + if (typeof WebAssembly !== "object") { + return { + supported: false + }; + } + var wasm = WebAssembly.validate(detector) ? wasm_simd : wasm_base; + var instance; + var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) { + instance = result.instance; + instance.exports.__wasm_call_ctors(); + }); + function unpack(data) { + var result = new Uint8Array(data.length); + for (var i = 0; i < data.length; ++i) { + var ch = data.charCodeAt(i); + result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4; + } + var write = 0; + for (var i = 0; i < data.length; ++i) { + result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i]; + } + return result.buffer.slice(0, write); + } + function decode(fun, target, count, size, source, filter) { + var sbrk = instance.exports.sbrk; + var count4 = count + 3 & ~3; + var tp = sbrk(count4 * size); + var sp = sbrk(source.length); + var heap = new Uint8Array(instance.exports.memory.buffer); + heap.set(source, sp); + var res = fun(tp, count, size, sp, source.length); + if (res == 0 && filter) { + filter(tp, count4, size); + } + target.set(heap.subarray(tp, tp + count * size)); + sbrk(tp - sbrk(0)); + if (res != 0) { + throw new Error("Malformed buffer data: " + res); + } + } + var filters = { + NONE: "", + OCTAHEDRAL: "meshopt_decodeFilterOct", + QUATERNION: "meshopt_decodeFilterQuat", + EXPONENTIAL: "meshopt_decodeFilterExp" + }; + var decoders = { + ATTRIBUTES: "meshopt_decodeVertexBuffer", + TRIANGLES: "meshopt_decodeIndexBuffer", + INDICES: "meshopt_decodeIndexSequence" + }; + var workers = []; + var requestId = 0; + function createWorker(url) { + var worker = { + object: new Worker(url), + pending: 0, + requests: {} + }; + worker.object.onmessage = function(event) { + var data = event.data; + worker.pending -= data.count; + worker.requests[data.id][data.action](data.value); + delete worker.requests[data.id]; + }; + return worker; + } + function initWorkers(count) { + var source = "var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;" + decode.toString() + workerProcess.toString(); + var blob = new Blob([source], { type: "text/javascript" }); + var url = URL.createObjectURL(blob); + for (var i = 0; i < count; ++i) { + workers[i] = createWorker(url); + } + URL.revokeObjectURL(url); + } + function decodeWorker(count, size, source, mode, filter) { + var worker = workers[0]; + for (var i = 1; i < workers.length; ++i) { + if (workers[i].pending < worker.pending) { + worker = workers[i]; + } + } + return new Promise(function(resolve, reject) { + var data = new Uint8Array(source); + var id = requestId++; + worker.pending += count; + worker.requests[id] = { resolve, reject }; + worker.object.postMessage({ id, count, size, source: data, mode, filter }, [data.buffer]); + }); + } + function workerProcess(event) { + ready.then(function() { + var data = event.data; + try { + var target = new Uint8Array(data.count * data.size); + decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]); + self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [target.buffer]); + } catch (error) { + self.postMessage({ id: data.id, count: data.count, action: "reject", value: error }); + } + }); + } + return { + ready, + supported: true, + useWorkers: function(count) { + initWorkers(count); + }, + decodeVertexBuffer: function(target, count, size, source, filter) { + decode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]); + }, + decodeIndexBuffer: function(target, count, size, source) { + decode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source); + }, + decodeIndexSequence: function(target, count, size, source) { + decode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source); + }, + decodeGltfBuffer: function(target, count, size, source, mode, filter) { + decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]); + }, + decodeGltfBufferAsync: function(count, size, source, mode, filter) { + if (workers.length > 0) { + return decodeWorker(count, size, source, decoders[mode], filters[filter]); + } + return ready.then(function() { + var target = new Uint8Array(count * size); + decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]); + return target; + }); + } + }; +}(); + +// ../../node_modules/three/examples/jsm/libs/fflate.module.js +var u8 = Uint8Array; +var u16 = Uint16Array; +var i32 = Int32Array; +var fleb = new u8([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 0, + /* unused */ + 0, + 0, + /* impossible */ + 0 +]); +var fdeb = new u8([ + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 2, + 3, + 3, + 4, + 4, + 5, + 5, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 10, + 10, + 11, + 11, + 12, + 12, + 13, + 13, + /* unused */ + 0, + 0 +]); +var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +var freb = function(eb, start) { + var b = new u16(31); + for (var i = 0; i < 31; ++i) { + b[i] = start += 1 << eb[i - 1]; + } + var r = new i32(b[30]); + for (var i = 1; i < 30; ++i) { + for (var j = b[i]; j < b[i + 1]; ++j) { + r[j] = j - b[i] << 5 | i; + } + } + return { b, r }; +}; +var _a = freb(fleb, 2); +var fl = _a.b; +var revfl = _a.r; +fl[28] = 258, revfl[258] = 28; +var _b = freb(fdeb, 0); +var fd = _b.b; +var revfd = _b.r; +var rev = new u16(32768); +for (i = 0; i < 32768; ++i) { + x = (i & 43690) >> 1 | (i & 21845) << 1; + x = (x & 52428) >> 2 | (x & 13107) << 2; + x = (x & 61680) >> 4 | (x & 3855) << 4; + rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1; +} +var x; +var i; +var hMap = function(cd, mb, r) { + var s = cd.length; + var i = 0; + var l = new u16(mb); + for (; i < s; ++i) { + if (cd[i]) + ++l[cd[i] - 1]; + } + var le = new u16(mb); + for (i = 1; i < mb; ++i) { + le[i] = le[i - 1] + l[i - 1] << 1; + } + var co; + if (r) { + co = new u16(1 << mb); + var rvb = 15 - mb; + for (i = 0; i < s; ++i) { + if (cd[i]) { + var sv = i << 4 | cd[i]; + var r_1 = mb - cd[i]; + var v = le[cd[i] - 1]++ << r_1; + for (var m = v | (1 << r_1) - 1; v <= m; ++v) { + co[rev[v] >> rvb] = sv; + } + } + } + } else { + co = new u16(s); + for (i = 0; i < s; ++i) { + if (cd[i]) { + co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; + } + } + } + return co; +}; +var flt = new u8(288); +for (i = 0; i < 144; ++i) + flt[i] = 8; +var i; +for (i = 144; i < 256; ++i) + flt[i] = 9; +var i; +for (i = 256; i < 280; ++i) + flt[i] = 7; +var i; +for (i = 280; i < 288; ++i) + flt[i] = 8; +var i; +var fdt = new u8(32); +for (i = 0; i < 32; ++i) + fdt[i] = 5; +var i; +var flrm = /* @__PURE__ */ hMap(flt, 9, 1); +var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1); +var max = function(a) { + var m = a[0]; + for (var i = 1; i < a.length; ++i) { + if (a[i] > m) + m = a[i]; + } + return m; +}; +var bits = function(d, p, m) { + var o = p / 8 | 0; + return (d[o] | d[o + 1] << 8) >> (p & 7) & m; +}; +var bits16 = function(d, p) { + var o = p / 8 | 0; + return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7); +}; +var shft = function(p) { + return (p + 7) / 8 | 0; +}; +var slc = function(v, s, e) { + if (s == null || s < 0) + s = 0; + if (e == null || e > v.length) + e = v.length; + return new u8(v.subarray(s, e)); +}; +var ec = [ + "unexpected EOF", + "invalid block type", + "invalid length/literal", + "invalid distance", + "stream finished", + "no stream handler", + , + "no callback", + "invalid UTF-8 data", + "extra field too long", + "date not in range 1980-2099", + "filename too long", + "stream finishing", + "invalid zip data" + // determined by unknown compression method +]; +var err = function(ind, msg, nt) { + var e = new Error(msg || ec[ind]); + e.code = ind; + if (Error.captureStackTrace) + Error.captureStackTrace(e, err); + if (!nt) + throw e; + return e; +}; +var inflt = function(dat, st, buf, dict) { + var sl = dat.length, dl = dict ? dict.length : 0; + if (!sl || st.f && !st.l) + return buf || new u8(0); + var noBuf = !buf; + var resize = noBuf || st.i != 2; + var noSt = st.i; + if (noBuf) + buf = new u8(sl * 3); + var cbuf = function(l2) { + var bl = buf.length; + if (l2 > bl) { + var nbuf = new u8(Math.max(bl * 2, l2)); + nbuf.set(buf); + buf = nbuf; + } + }; + var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; + var tbts = sl * 8; + do { + if (!lm) { + final = bits(dat, pos, 1); + var type = bits(dat, pos + 1, 3); + pos += 3; + if (!type) { + var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l; + if (t > sl) { + if (noSt) + err(0); + break; + } + if (resize) + cbuf(bt + l); + buf.set(dat.subarray(s, t), bt); + st.b = bt += l, st.p = pos = t * 8, st.f = final; + continue; + } else if (type == 1) + lm = flrm, dm = fdrm, lbt = 9, dbt = 5; + else if (type == 2) { + var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; + var tl = hLit + bits(dat, pos + 5, 31) + 1; + pos += 14; + var ldt = new u8(tl); + var clt = new u8(19); + for (var i = 0; i < hcLen; ++i) { + clt[clim[i]] = bits(dat, pos + i * 3, 7); + } + pos += hcLen * 3; + var clb = max(clt), clbmsk = (1 << clb) - 1; + var clm = hMap(clt, clb, 1); + for (var i = 0; i < tl; ) { + var r = clm[bits(dat, pos, clbmsk)]; + pos += r & 15; + var s = r >> 4; + if (s < 16) { + ldt[i++] = s; + } else { + var c = 0, n = 0; + if (s == 16) + n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; + else if (s == 17) + n = 3 + bits(dat, pos, 7), pos += 3; + else if (s == 18) + n = 11 + bits(dat, pos, 127), pos += 7; + while (n--) + ldt[i++] = c; + } + } + var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); + lbt = max(lt); + dbt = max(dt); + lm = hMap(lt, lbt, 1); + dm = hMap(dt, dbt, 1); + } else + err(1); + if (pos > tbts) { + if (noSt) + err(0); + break; + } + } + if (resize) + cbuf(bt + 131072); + var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; + var lpos = pos; + for (; ; lpos = pos) { + var c = lm[bits16(dat, pos) & lms], sym = c >> 4; + pos += c & 15; + if (pos > tbts) { + if (noSt) + err(0); + break; + } + if (!c) + err(2); + if (sym < 256) + buf[bt++] = sym; + else if (sym == 256) { + lpos = pos, lm = null; + break; + } else { + var add = sym - 254; + if (sym > 264) { + var i = sym - 257, b = fleb[i]; + add = bits(dat, pos, (1 << b) - 1) + fl[i]; + pos += b; + } + var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; + if (!d) + err(3); + pos += d & 15; + var dt = fd[dsym]; + if (dsym > 3) { + var b = fdeb[dsym]; + dt += bits16(dat, pos) & (1 << b) - 1, pos += b; + } + if (pos > tbts) { + if (noSt) + err(0); + break; + } + if (resize) + cbuf(bt + 131072); + var end = bt + add; + if (bt < dt) { + var shift = dl - dt, dend = Math.min(dt, end); + if (shift + bt < 0) + err(3); + for (; bt < dend; ++bt) + buf[bt] = dict[shift + bt]; + } + for (; bt < end; ++bt) + buf[bt] = buf[bt - dt]; + } + } + st.l = lm, st.p = lpos, st.b = bt, st.f = final; + if (lm) + final = 1, st.m = lbt, st.d = dm, st.n = dbt; + } while (!final); + return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt); +}; +var et = /* @__PURE__ */ new u8(0); +var zls = function(d, dict) { + if ((d[0] & 15) != 8 || d[0] >> 4 > 7 || (d[0] << 8 | d[1]) % 31) + err(6, "invalid zlib data"); + if ((d[1] >> 5 & 1) == +!dict) + err(6, "invalid zlib data: " + (d[1] & 32 ? "need" : "unexpected") + " dictionary"); + return (d[1] >> 3 & 4) + 2; +}; +function unzlibSync(data, opts) { + return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary); +} +var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder(); +var tds = 0; +try { + td.decode(et, { stream: true }); + tds = 1; +} catch (e) { +} + +// ../../node_modules/three/examples/jsm/curves/NURBSUtils.js +function findSpan(p, u, U) { + const n = U.length - p - 1; + if (u >= U[n]) { + return n - 1; + } + if (u <= U[p]) { + return p; + } + let low = p; + let high = n; + let mid = Math.floor((low + high) / 2); + while (u < U[mid] || u >= U[mid + 1]) { + if (u < U[mid]) { + high = mid; + } else { + low = mid; + } + mid = Math.floor((low + high) / 2); + } + return mid; +} +function calcBasisFunctions(span, u, p, U) { + const N = []; + const left = []; + const right2 = []; + N[0] = 1; + for (let j = 1; j <= p; ++j) { + left[j] = u - U[span + 1 - j]; + right2[j] = U[span + j] - u; + let saved = 0; + for (let r = 0; r < j; ++r) { + const rv = right2[r + 1]; + const lv = left[j - r]; + const temp = N[r] / (rv + lv); + N[r] = saved + rv * temp; + saved = lv * temp; + } + N[j] = saved; + } + return N; +} +function calcBSplinePoint(p, U, P, u) { + const span = findSpan(p, u, U); + const N = calcBasisFunctions(span, u, p, U); + const C = new Vector4(0, 0, 0, 0); + for (let j = 0; j <= p; ++j) { + const point = P[span - p + j]; + const Nj = N[j]; + const wNj = point.w * Nj; + C.x += point.x * wNj; + C.y += point.y * wNj; + C.z += point.z * wNj; + C.w += point.w * Nj; + } + return C; +} +function calcBasisFunctionDerivatives(span, u, p, n, U) { + const zeroArr = []; + for (let i = 0; i <= p; ++i) + zeroArr[i] = 0; + const ders = []; + for (let i = 0; i <= n; ++i) + ders[i] = zeroArr.slice(0); + const ndu = []; + for (let i = 0; i <= p; ++i) + ndu[i] = zeroArr.slice(0); + ndu[0][0] = 1; + const left = zeroArr.slice(0); + const right2 = zeroArr.slice(0); + for (let j = 1; j <= p; ++j) { + left[j] = u - U[span + 1 - j]; + right2[j] = U[span + j] - u; + let saved = 0; + for (let r2 = 0; r2 < j; ++r2) { + const rv = right2[r2 + 1]; + const lv = left[j - r2]; + ndu[j][r2] = rv + lv; + const temp = ndu[r2][j - 1] / ndu[j][r2]; + ndu[r2][j] = saved + rv * temp; + saved = lv * temp; + } + ndu[j][j] = saved; + } + for (let j = 0; j <= p; ++j) { + ders[0][j] = ndu[j][p]; + } + for (let r2 = 0; r2 <= p; ++r2) { + let s1 = 0; + let s2 = 1; + const a = []; + for (let i = 0; i <= p; ++i) { + a[i] = zeroArr.slice(0); + } + a[0][0] = 1; + for (let k = 1; k <= n; ++k) { + let d = 0; + const rk = r2 - k; + const pk = p - k; + if (r2 >= k) { + a[s2][0] = a[s1][0] / ndu[pk + 1][rk]; + d = a[s2][0] * ndu[rk][pk]; + } + const j1 = rk >= -1 ? 1 : -rk; + const j2 = r2 - 1 <= pk ? k - 1 : p - r2; + for (let j3 = j1; j3 <= j2; ++j3) { + a[s2][j3] = (a[s1][j3] - a[s1][j3 - 1]) / ndu[pk + 1][rk + j3]; + d += a[s2][j3] * ndu[rk + j3][pk]; + } + if (r2 <= pk) { + a[s2][k] = -a[s1][k - 1] / ndu[pk + 1][r2]; + d += a[s2][k] * ndu[r2][pk]; + } + ders[k][r2] = d; + const j = s1; + s1 = s2; + s2 = j; + } + } + let r = p; + for (let k = 1; k <= n; ++k) { + for (let j = 0; j <= p; ++j) { + ders[k][j] *= r; + } + r *= p - k; + } + return ders; +} +function calcBSplineDerivatives(p, U, P, u, nd) { + const du = nd < p ? nd : p; + const CK = []; + const span = findSpan(p, u, U); + const nders = calcBasisFunctionDerivatives(span, u, p, du, U); + const Pw = []; + for (let i = 0; i < P.length; ++i) { + const point = P[i].clone(); + const w = point.w; + point.x *= w; + point.y *= w; + point.z *= w; + Pw[i] = point; + } + for (let k = 0; k <= du; ++k) { + const point = Pw[span - p].clone().multiplyScalar(nders[k][0]); + for (let j = 1; j <= p; ++j) { + point.add(Pw[span - p + j].clone().multiplyScalar(nders[k][j])); + } + CK[k] = point; + } + for (let k = du + 1; k <= nd + 1; ++k) { + CK[k] = new Vector4(0, 0, 0); + } + return CK; +} +function calcKoverI(k, i) { + let nom = 1; + for (let j = 2; j <= k; ++j) { + nom *= j; + } + let denom = 1; + for (let j = 2; j <= i; ++j) { + denom *= j; + } + for (let j = 2; j <= k - i; ++j) { + denom *= j; + } + return nom / denom; +} +function calcRationalCurveDerivatives(Pders) { + const nd = Pders.length; + const Aders = []; + const wders = []; + for (let i = 0; i < nd; ++i) { + const point = Pders[i]; + Aders[i] = new Vector3(point.x, point.y, point.z); + wders[i] = point.w; + } + const CK = []; + for (let k = 0; k < nd; ++k) { + const v = Aders[k].clone(); + for (let i = 1; i <= k; ++i) { + v.sub(CK[k - i].clone().multiplyScalar(calcKoverI(k, i) * wders[i])); + } + CK[k] = v.divideScalar(wders[0]); + } + return CK; +} +function calcNURBSDerivatives(p, U, P, u, nd) { + const Pders = calcBSplineDerivatives(p, U, P, u, nd); + return calcRationalCurveDerivatives(Pders); +} + +// ../../node_modules/three/examples/jsm/curves/NURBSCurve.js +var NURBSCurve = class extends Curve { + constructor(degree, knots, controlPoints, startKnot, endKnot) { + super(); + this.degree = degree; + this.knots = knots; + this.controlPoints = []; + this.startKnot = startKnot || 0; + this.endKnot = endKnot || this.knots.length - 1; + for (let i = 0; i < controlPoints.length; ++i) { + const point = controlPoints[i]; + this.controlPoints[i] = new Vector4(point.x, point.y, point.z, point.w); + } + } + getPoint(t, optionalTarget = new Vector3()) { + const point = optionalTarget; + const u = this.knots[this.startKnot] + t * (this.knots[this.endKnot] - this.knots[this.startKnot]); + const hpoint = calcBSplinePoint(this.degree, this.knots, this.controlPoints, u); + if (hpoint.w !== 1) { + hpoint.divideScalar(hpoint.w); + } + return point.set(hpoint.x, hpoint.y, hpoint.z); + } + getTangent(t, optionalTarget = new Vector3()) { + const tangent = optionalTarget; + const u = this.knots[0] + t * (this.knots[this.knots.length - 1] - this.knots[0]); + const ders = calcNURBSDerivatives(this.degree, this.knots, this.controlPoints, u, 1); + tangent.copy(ders[1]).normalize(); + return tangent; + } +}; + +// ../../node_modules/three/examples/jsm/loaders/FBXLoader.js +var fbxTree; +var connections; +var sceneGraph; +var FBXLoader = class extends Loader { + constructor(manager) { + super(manager); + } + load(url, onLoad, onProgress, onError) { + const scope = this; + const path = scope.path === "" ? LoaderUtils.extractUrlBase(url) : scope.path; + const loader = new FileLoader(this.manager); + loader.setPath(scope.path); + loader.setResponseType("arraybuffer"); + loader.setRequestHeader(scope.requestHeader); + loader.setWithCredentials(scope.withCredentials); + loader.load(url, function(buffer) { + try { + onLoad(scope.parse(buffer, path)); + } catch (e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + scope.manager.itemError(url); + } + }, onProgress, onError); + } + parse(FBXBuffer, path) { + if (isFbxFormatBinary(FBXBuffer)) { + fbxTree = new BinaryParser().parse(FBXBuffer); + } else { + const FBXText = convertArrayBufferToString(FBXBuffer); + if (!isFbxFormatASCII(FBXText)) { + throw new Error("THREE.FBXLoader: Unknown format."); + } + if (getFbxVersion(FBXText) < 7e3) { + throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: " + getFbxVersion(FBXText)); + } + fbxTree = new TextParser().parse(FBXText); + } + const textureLoader = new TextureLoader(this.manager).setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin); + return new FBXTreeParser(textureLoader, this.manager).parse(fbxTree); + } +}; +var FBXTreeParser = class { + constructor(textureLoader, manager) { + this.textureLoader = textureLoader; + this.manager = manager; + } + parse() { + connections = this.parseConnections(); + const images = this.parseImages(); + const textures = this.parseTextures(images); + const materials = this.parseMaterials(textures); + const deformers = this.parseDeformers(); + const geometryMap = new GeometryParser().parse(deformers); + this.parseScene(deformers, geometryMap, materials); + return sceneGraph; + } + // Parses FBXTree.Connections which holds parent-child connections between objects (e.g. material -> texture, model->geometry ) + // and details the connection type + parseConnections() { + const connectionMap = /* @__PURE__ */ new Map(); + if ("Connections" in fbxTree) { + const rawConnections = fbxTree.Connections.connections; + rawConnections.forEach(function(rawConnection) { + const fromID = rawConnection[0]; + const toID = rawConnection[1]; + const relationship = rawConnection[2]; + if (!connectionMap.has(fromID)) { + connectionMap.set(fromID, { + parents: [], + children: [] + }); + } + const parentRelationship = { ID: toID, relationship }; + connectionMap.get(fromID).parents.push(parentRelationship); + if (!connectionMap.has(toID)) { + connectionMap.set(toID, { + parents: [], + children: [] + }); + } + const childRelationship = { ID: fromID, relationship }; + connectionMap.get(toID).children.push(childRelationship); + }); + } + return connectionMap; + } + // Parse FBXTree.Objects.Video for embedded image data + // These images are connected to textures in FBXTree.Objects.Textures + // via FBXTree.Connections. + parseImages() { + const images = {}; + const blobs = {}; + if ("Video" in fbxTree.Objects) { + const videoNodes = fbxTree.Objects.Video; + for (const nodeID in videoNodes) { + const videoNode = videoNodes[nodeID]; + const id = parseInt(nodeID); + images[id] = videoNode.RelativeFilename || videoNode.Filename; + if ("Content" in videoNode) { + const arrayBufferContent = videoNode.Content instanceof ArrayBuffer && videoNode.Content.byteLength > 0; + const base64Content = typeof videoNode.Content === "string" && videoNode.Content !== ""; + if (arrayBufferContent || base64Content) { + const image = this.parseImage(videoNodes[nodeID]); + blobs[videoNode.RelativeFilename || videoNode.Filename] = image; + } + } + } + } + for (const id in images) { + const filename = images[id]; + if (blobs[filename] !== void 0) images[id] = blobs[filename]; + else images[id] = images[id].split("\\").pop(); + } + return images; + } + // Parse embedded image data in FBXTree.Video.Content + parseImage(videoNode) { + const content = videoNode.Content; + const fileName = videoNode.RelativeFilename || videoNode.Filename; + const extension = fileName.slice(fileName.lastIndexOf(".") + 1).toLowerCase(); + let type; + switch (extension) { + case "bmp": + type = "image/bmp"; + break; + case "jpg": + case "jpeg": + type = "image/jpeg"; + break; + case "png": + type = "image/png"; + break; + case "tif": + type = "image/tiff"; + break; + case "tga": + if (this.manager.getHandler(".tga") === null) { + console.warn("FBXLoader: TGA loader not found, skipping ", fileName); + } + type = "image/tga"; + break; + default: + console.warn('FBXLoader: Image type "' + extension + '" is not supported.'); + return; + } + if (typeof content === "string") { + return "data:" + type + ";base64," + content; + } else { + const array = new Uint8Array(content); + return window.URL.createObjectURL(new Blob([array], { type })); + } + } + // Parse nodes in FBXTree.Objects.Texture + // These contain details such as UV scaling, cropping, rotation etc and are connected + // to images in FBXTree.Objects.Video + parseTextures(images) { + const textureMap = /* @__PURE__ */ new Map(); + if ("Texture" in fbxTree.Objects) { + const textureNodes = fbxTree.Objects.Texture; + for (const nodeID in textureNodes) { + const texture = this.parseTexture(textureNodes[nodeID], images); + textureMap.set(parseInt(nodeID), texture); + } + } + return textureMap; + } + // Parse individual node in FBXTree.Objects.Texture + parseTexture(textureNode, images) { + const texture = this.loadTexture(textureNode, images); + texture.ID = textureNode.id; + texture.name = textureNode.attrName; + const wrapModeU = textureNode.WrapModeU; + const wrapModeV = textureNode.WrapModeV; + const valueU = wrapModeU !== void 0 ? wrapModeU.value : 0; + const valueV = wrapModeV !== void 0 ? wrapModeV.value : 0; + texture.wrapS = valueU === 0 ? RepeatWrapping : ClampToEdgeWrapping; + texture.wrapT = valueV === 0 ? RepeatWrapping : ClampToEdgeWrapping; + if ("Scaling" in textureNode) { + const values = textureNode.Scaling.value; + texture.repeat.x = values[0]; + texture.repeat.y = values[1]; + } + if ("Translation" in textureNode) { + const values = textureNode.Translation.value; + texture.offset.x = values[0]; + texture.offset.y = values[1]; + } + return texture; + } + // load a texture specified as a blob or data URI, or via an external URL using TextureLoader + loadTexture(textureNode, images) { + let fileName; + const currentPath = this.textureLoader.path; + const children = connections.get(textureNode.id).children; + if (children !== void 0 && children.length > 0 && images[children[0].ID] !== void 0) { + fileName = images[children[0].ID]; + if (fileName.indexOf("blob:") === 0 || fileName.indexOf("data:") === 0) { + this.textureLoader.setPath(void 0); + } + } + let texture; + const extension = textureNode.FileName.slice(-3).toLowerCase(); + if (extension === "tga") { + const loader = this.manager.getHandler(".tga"); + if (loader === null) { + console.warn("FBXLoader: TGA loader not found, creating placeholder texture for", textureNode.RelativeFilename); + texture = new Texture(); + } else { + loader.setPath(this.textureLoader.path); + texture = loader.load(fileName); + } + } else if (extension === "dds") { + const loader = this.manager.getHandler(".dds"); + if (loader === null) { + console.warn("FBXLoader: DDS loader not found, creating placeholder texture for", textureNode.RelativeFilename); + texture = new Texture(); + } else { + loader.setPath(this.textureLoader.path); + texture = loader.load(fileName); + } + } else if (extension === "psd") { + console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for", textureNode.RelativeFilename); + texture = new Texture(); + } else { + texture = this.textureLoader.load(fileName); + } + this.textureLoader.setPath(currentPath); + return texture; + } + // Parse nodes in FBXTree.Objects.Material + parseMaterials(textureMap) { + const materialMap = /* @__PURE__ */ new Map(); + if ("Material" in fbxTree.Objects) { + const materialNodes = fbxTree.Objects.Material; + for (const nodeID in materialNodes) { + const material = this.parseMaterial(materialNodes[nodeID], textureMap); + if (material !== null) materialMap.set(parseInt(nodeID), material); + } + } + return materialMap; + } + // Parse single node in FBXTree.Objects.Material + // Materials are connected to texture maps in FBXTree.Objects.Textures + // FBX format currently only supports Lambert and Phong shading models + parseMaterial(materialNode, textureMap) { + const ID = materialNode.id; + const name = materialNode.attrName; + let type = materialNode.ShadingModel; + if (typeof type === "object") { + type = type.value; + } + if (!connections.has(ID)) return null; + const parameters = this.parseParameters(materialNode, textureMap, ID); + let material; + switch (type.toLowerCase()) { + case "phong": + material = new MeshPhongMaterial(); + break; + case "lambert": + material = new MeshLambertMaterial(); + break; + default: + console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.', type); + material = new MeshPhongMaterial(); + break; + } + material.setValues(parameters); + material.name = name; + return material; + } + // Parse FBX material and return parameters suitable for a three.js material + // Also parse the texture map and return any textures associated with the material + parseParameters(materialNode, textureMap, ID) { + const parameters = {}; + if (materialNode.BumpFactor) { + parameters.bumpScale = materialNode.BumpFactor.value; + } + if (materialNode.Diffuse) { + parameters.color = new Color().fromArray(materialNode.Diffuse.value).convertSRGBToLinear(); + } else if (materialNode.DiffuseColor && (materialNode.DiffuseColor.type === "Color" || materialNode.DiffuseColor.type === "ColorRGB")) { + parameters.color = new Color().fromArray(materialNode.DiffuseColor.value).convertSRGBToLinear(); + } + if (materialNode.DisplacementFactor) { + parameters.displacementScale = materialNode.DisplacementFactor.value; + } + if (materialNode.Emissive) { + parameters.emissive = new Color().fromArray(materialNode.Emissive.value).convertSRGBToLinear(); + } else if (materialNode.EmissiveColor && (materialNode.EmissiveColor.type === "Color" || materialNode.EmissiveColor.type === "ColorRGB")) { + parameters.emissive = new Color().fromArray(materialNode.EmissiveColor.value).convertSRGBToLinear(); + } + if (materialNode.EmissiveFactor) { + parameters.emissiveIntensity = parseFloat(materialNode.EmissiveFactor.value); + } + if (materialNode.Opacity) { + parameters.opacity = parseFloat(materialNode.Opacity.value); + } + if (parameters.opacity < 1) { + parameters.transparent = true; + } + if (materialNode.ReflectionFactor) { + parameters.reflectivity = materialNode.ReflectionFactor.value; + } + if (materialNode.Shininess) { + parameters.shininess = materialNode.Shininess.value; + } + if (materialNode.Specular) { + parameters.specular = new Color().fromArray(materialNode.Specular.value).convertSRGBToLinear(); + } else if (materialNode.SpecularColor && materialNode.SpecularColor.type === "Color") { + parameters.specular = new Color().fromArray(materialNode.SpecularColor.value).convertSRGBToLinear(); + } + const scope = this; + connections.get(ID).children.forEach(function(child) { + const type = child.relationship; + switch (type) { + case "Bump": + parameters.bumpMap = scope.getTexture(textureMap, child.ID); + break; + case "Maya|TEX_ao_map": + parameters.aoMap = scope.getTexture(textureMap, child.ID); + break; + case "DiffuseColor": + case "Maya|TEX_color_map": + parameters.map = scope.getTexture(textureMap, child.ID); + if (parameters.map !== void 0) { + parameters.map.colorSpace = SRGBColorSpace; + } + break; + case "DisplacementColor": + parameters.displacementMap = scope.getTexture(textureMap, child.ID); + break; + case "EmissiveColor": + parameters.emissiveMap = scope.getTexture(textureMap, child.ID); + if (parameters.emissiveMap !== void 0) { + parameters.emissiveMap.colorSpace = SRGBColorSpace; + } + break; + case "NormalMap": + case "Maya|TEX_normal_map": + parameters.normalMap = scope.getTexture(textureMap, child.ID); + break; + case "ReflectionColor": + parameters.envMap = scope.getTexture(textureMap, child.ID); + if (parameters.envMap !== void 0) { + parameters.envMap.mapping = EquirectangularReflectionMapping; + parameters.envMap.colorSpace = SRGBColorSpace; + } + break; + case "SpecularColor": + parameters.specularMap = scope.getTexture(textureMap, child.ID); + if (parameters.specularMap !== void 0) { + parameters.specularMap.colorSpace = SRGBColorSpace; + } + break; + case "TransparentColor": + case "TransparencyFactor": + parameters.alphaMap = scope.getTexture(textureMap, child.ID); + parameters.transparent = true; + break; + case "AmbientColor": + case "ShininessExponent": + // AKA glossiness map + case "SpecularFactor": + // AKA specularLevel + case "VectorDisplacementColor": + // NOTE: Seems to be a copy of DisplacementColor + default: + console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.", type); + break; + } + }); + return parameters; + } + // get a texture from the textureMap for use by a material. + getTexture(textureMap, id) { + if ("LayeredTexture" in fbxTree.Objects && id in fbxTree.Objects.LayeredTexture) { + console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."); + id = connections.get(id).children[0].ID; + } + return textureMap.get(id); + } + // Parse nodes in FBXTree.Objects.Deformer + // Deformer node can contain skinning or Vertex Cache animation data, however only skinning is supported here + // Generates map of Skeleton-like objects for use later when generating and binding skeletons. + parseDeformers() { + const skeletons = {}; + const morphTargets = {}; + if ("Deformer" in fbxTree.Objects) { + const DeformerNodes = fbxTree.Objects.Deformer; + for (const nodeID in DeformerNodes) { + const deformerNode = DeformerNodes[nodeID]; + const relationships = connections.get(parseInt(nodeID)); + if (deformerNode.attrType === "Skin") { + const skeleton = this.parseSkeleton(relationships, DeformerNodes); + skeleton.ID = nodeID; + if (relationships.parents.length > 1) console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."); + skeleton.geometryID = relationships.parents[0].ID; + skeletons[nodeID] = skeleton; + } else if (deformerNode.attrType === "BlendShape") { + const morphTarget = { + id: nodeID + }; + morphTarget.rawTargets = this.parseMorphTargets(relationships, DeformerNodes); + morphTarget.id = nodeID; + if (relationships.parents.length > 1) console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."); + morphTargets[nodeID] = morphTarget; + } + } + } + return { + skeletons, + morphTargets + }; + } + // Parse single nodes in FBXTree.Objects.Deformer + // The top level skeleton node has type 'Skin' and sub nodes have type 'Cluster' + // Each skin node represents a skeleton and each cluster node represents a bone + parseSkeleton(relationships, deformerNodes) { + const rawBones = []; + relationships.children.forEach(function(child) { + const boneNode = deformerNodes[child.ID]; + if (boneNode.attrType !== "Cluster") return; + const rawBone = { + ID: child.ID, + indices: [], + weights: [], + transformLink: new Matrix4().fromArray(boneNode.TransformLink.a) + // transform: new Matrix4().fromArray( boneNode.Transform.a ), + // linkMode: boneNode.Mode, + }; + if ("Indexes" in boneNode) { + rawBone.indices = boneNode.Indexes.a; + rawBone.weights = boneNode.Weights.a; + } + rawBones.push(rawBone); + }); + return { + rawBones, + bones: [] + }; + } + // The top level morph deformer node has type "BlendShape" and sub nodes have type "BlendShapeChannel" + parseMorphTargets(relationships, deformerNodes) { + const rawMorphTargets = []; + for (let i = 0; i < relationships.children.length; i++) { + const child = relationships.children[i]; + const morphTargetNode = deformerNodes[child.ID]; + const rawMorphTarget = { + name: morphTargetNode.attrName, + initialWeight: morphTargetNode.DeformPercent, + id: morphTargetNode.id, + fullWeights: morphTargetNode.FullWeights.a + }; + if (morphTargetNode.attrType !== "BlendShapeChannel") return; + rawMorphTarget.geoID = connections.get(parseInt(child.ID)).children.filter(function(child2) { + return child2.relationship === void 0; + })[0].ID; + rawMorphTargets.push(rawMorphTarget); + } + return rawMorphTargets; + } + // create the main Group() to be returned by the loader + parseScene(deformers, geometryMap, materialMap) { + sceneGraph = new Group(); + const modelMap = this.parseModels(deformers.skeletons, geometryMap, materialMap); + const modelNodes = fbxTree.Objects.Model; + const scope = this; + modelMap.forEach(function(model) { + const modelNode = modelNodes[model.ID]; + scope.setLookAtProperties(model, modelNode); + const parentConnections = connections.get(model.ID).parents; + parentConnections.forEach(function(connection) { + const parent = modelMap.get(connection.ID); + if (parent !== void 0) parent.add(model); + }); + if (model.parent === null) { + sceneGraph.add(model); + } + }); + this.bindSkeleton(deformers.skeletons, geometryMap, modelMap); + this.addGlobalSceneSettings(); + sceneGraph.traverse(function(node) { + if (node.userData.transformData) { + if (node.parent) { + node.userData.transformData.parentMatrix = node.parent.matrix; + node.userData.transformData.parentMatrixWorld = node.parent.matrixWorld; + } + const transform = generateTransform(node.userData.transformData); + node.applyMatrix4(transform); + node.updateWorldMatrix(); + } + }); + const animations = new AnimationParser().parse(); + if (sceneGraph.children.length === 1 && sceneGraph.children[0].isGroup) { + sceneGraph.children[0].animations = animations; + sceneGraph = sceneGraph.children[0]; + } + sceneGraph.animations = animations; + } + // parse nodes in FBXTree.Objects.Model + parseModels(skeletons, geometryMap, materialMap) { + const modelMap = /* @__PURE__ */ new Map(); + const modelNodes = fbxTree.Objects.Model; + for (const nodeID in modelNodes) { + const id = parseInt(nodeID); + const node = modelNodes[nodeID]; + const relationships = connections.get(id); + let model = this.buildSkeleton(relationships, skeletons, id, node.attrName); + if (!model) { + switch (node.attrType) { + case "Camera": + model = this.createCamera(relationships); + break; + case "Light": + model = this.createLight(relationships); + break; + case "Mesh": + model = this.createMesh(relationships, geometryMap, materialMap); + break; + case "NurbsCurve": + model = this.createCurve(relationships, geometryMap); + break; + case "LimbNode": + case "Root": + model = new Bone(); + break; + case "Null": + default: + model = new Group(); + break; + } + model.name = node.attrName ? PropertyBinding.sanitizeNodeName(node.attrName) : ""; + model.userData.originalName = node.attrName; + model.ID = id; + } + this.getTransformData(model, node); + modelMap.set(id, model); + } + return modelMap; + } + buildSkeleton(relationships, skeletons, id, name) { + let bone = null; + relationships.parents.forEach(function(parent) { + for (const ID in skeletons) { + const skeleton = skeletons[ID]; + skeleton.rawBones.forEach(function(rawBone, i) { + if (rawBone.ID === parent.ID) { + const subBone = bone; + bone = new Bone(); + bone.matrixWorld.copy(rawBone.transformLink); + bone.name = name ? PropertyBinding.sanitizeNodeName(name) : ""; + bone.userData.originalName = name; + bone.ID = id; + skeleton.bones[i] = bone; + if (subBone !== null) { + bone.add(subBone); + } + } + }); + } + }); + return bone; + } + // create a PerspectiveCamera or OrthographicCamera + createCamera(relationships) { + let model; + let cameraAttribute; + relationships.children.forEach(function(child) { + const attr = fbxTree.Objects.NodeAttribute[child.ID]; + if (attr !== void 0) { + cameraAttribute = attr; + } + }); + if (cameraAttribute === void 0) { + model = new Object3D(); + } else { + let type = 0; + if (cameraAttribute.CameraProjectionType !== void 0 && cameraAttribute.CameraProjectionType.value === 1) { + type = 1; + } + let nearClippingPlane = 1; + if (cameraAttribute.NearPlane !== void 0) { + nearClippingPlane = cameraAttribute.NearPlane.value / 1e3; + } + let farClippingPlane = 1e3; + if (cameraAttribute.FarPlane !== void 0) { + farClippingPlane = cameraAttribute.FarPlane.value / 1e3; + } + let width = window.innerWidth; + let height = window.innerHeight; + if (cameraAttribute.AspectWidth !== void 0 && cameraAttribute.AspectHeight !== void 0) { + width = cameraAttribute.AspectWidth.value; + height = cameraAttribute.AspectHeight.value; + } + const aspect2 = width / height; + let fov2 = 45; + if (cameraAttribute.FieldOfView !== void 0) { + fov2 = cameraAttribute.FieldOfView.value; + } + const focalLength = cameraAttribute.FocalLength ? cameraAttribute.FocalLength.value : null; + switch (type) { + case 0: + model = new PerspectiveCamera(fov2, aspect2, nearClippingPlane, farClippingPlane); + if (focalLength !== null) model.setFocalLength(focalLength); + break; + case 1: + model = new OrthographicCamera(-width / 2, width / 2, height / 2, -height / 2, nearClippingPlane, farClippingPlane); + break; + default: + console.warn("THREE.FBXLoader: Unknown camera type " + type + "."); + model = new Object3D(); + break; + } + } + return model; + } + // Create a DirectionalLight, PointLight or SpotLight + createLight(relationships) { + let model; + let lightAttribute; + relationships.children.forEach(function(child) { + const attr = fbxTree.Objects.NodeAttribute[child.ID]; + if (attr !== void 0) { + lightAttribute = attr; + } + }); + if (lightAttribute === void 0) { + model = new Object3D(); + } else { + let type; + if (lightAttribute.LightType === void 0) { + type = 0; + } else { + type = lightAttribute.LightType.value; + } + let color = 16777215; + if (lightAttribute.Color !== void 0) { + color = new Color().fromArray(lightAttribute.Color.value).convertSRGBToLinear(); + } + let intensity = lightAttribute.Intensity === void 0 ? 1 : lightAttribute.Intensity.value / 100; + if (lightAttribute.CastLightOnObject !== void 0 && lightAttribute.CastLightOnObject.value === 0) { + intensity = 0; + } + let distance = 0; + if (lightAttribute.FarAttenuationEnd !== void 0) { + if (lightAttribute.EnableFarAttenuation !== void 0 && lightAttribute.EnableFarAttenuation.value === 0) { + distance = 0; + } else { + distance = lightAttribute.FarAttenuationEnd.value; + } + } + const decay = 1; + switch (type) { + case 0: + model = new PointLight(color, intensity, distance, decay); + break; + case 1: + model = new DirectionalLight(color, intensity); + break; + case 2: + let angle = Math.PI / 3; + if (lightAttribute.InnerAngle !== void 0) { + angle = MathUtils.degToRad(lightAttribute.InnerAngle.value); + } + let penumbra = 0; + if (lightAttribute.OuterAngle !== void 0) { + penumbra = MathUtils.degToRad(lightAttribute.OuterAngle.value); + penumbra = Math.max(penumbra, 1); + } + model = new SpotLight(color, intensity, distance, angle, penumbra, decay); + break; + default: + console.warn("THREE.FBXLoader: Unknown light type " + lightAttribute.LightType.value + ", defaulting to a PointLight."); + model = new PointLight(color, intensity); + break; + } + if (lightAttribute.CastShadows !== void 0 && lightAttribute.CastShadows.value === 1) { + model.castShadow = true; + } + } + return model; + } + createMesh(relationships, geometryMap, materialMap) { + let model; + let geometry = null; + let material = null; + const materials = []; + relationships.children.forEach(function(child) { + if (geometryMap.has(child.ID)) { + geometry = geometryMap.get(child.ID); + } + if (materialMap.has(child.ID)) { + materials.push(materialMap.get(child.ID)); + } + }); + if (materials.length > 1) { + material = materials; + } else if (materials.length > 0) { + material = materials[0]; + } else { + material = new MeshPhongMaterial({ + name: Loader.DEFAULT_MATERIAL_NAME, + color: 13421772 + }); + materials.push(material); + } + if ("color" in geometry.attributes) { + materials.forEach(function(material2) { + material2.vertexColors = true; + }); + } + if (geometry.FBX_Deformer) { + model = new SkinnedMesh(geometry, material); + model.normalizeSkinWeights(); + } else { + model = new Mesh(geometry, material); + } + return model; + } + createCurve(relationships, geometryMap) { + const geometry = relationships.children.reduce(function(geo, child) { + if (geometryMap.has(child.ID)) geo = geometryMap.get(child.ID); + return geo; + }, null); + const material = new LineBasicMaterial({ + name: Loader.DEFAULT_MATERIAL_NAME, + color: 3342591, + linewidth: 1 + }); + return new Line(geometry, material); + } + // parse the model node for transform data + getTransformData(model, modelNode) { + const transformData = {}; + if ("InheritType" in modelNode) transformData.inheritType = parseInt(modelNode.InheritType.value); + if ("RotationOrder" in modelNode) transformData.eulerOrder = getEulerOrder(modelNode.RotationOrder.value); + else transformData.eulerOrder = "ZYX"; + if ("Lcl_Translation" in modelNode) transformData.translation = modelNode.Lcl_Translation.value; + if ("PreRotation" in modelNode) transformData.preRotation = modelNode.PreRotation.value; + if ("Lcl_Rotation" in modelNode) transformData.rotation = modelNode.Lcl_Rotation.value; + if ("PostRotation" in modelNode) transformData.postRotation = modelNode.PostRotation.value; + if ("Lcl_Scaling" in modelNode) transformData.scale = modelNode.Lcl_Scaling.value; + if ("ScalingOffset" in modelNode) transformData.scalingOffset = modelNode.ScalingOffset.value; + if ("ScalingPivot" in modelNode) transformData.scalingPivot = modelNode.ScalingPivot.value; + if ("RotationOffset" in modelNode) transformData.rotationOffset = modelNode.RotationOffset.value; + if ("RotationPivot" in modelNode) transformData.rotationPivot = modelNode.RotationPivot.value; + model.userData.transformData = transformData; + } + setLookAtProperties(model, modelNode) { + if ("LookAtProperty" in modelNode) { + const children = connections.get(model.ID).children; + children.forEach(function(child) { + if (child.relationship === "LookAtProperty") { + const lookAtTarget = fbxTree.Objects.Model[child.ID]; + if ("Lcl_Translation" in lookAtTarget) { + const pos = lookAtTarget.Lcl_Translation.value; + if (model.target !== void 0) { + model.target.position.fromArray(pos); + sceneGraph.add(model.target); + } else { + model.lookAt(new Vector3().fromArray(pos)); + } + } + } + }); + } + } + bindSkeleton(skeletons, geometryMap, modelMap) { + const bindMatrices = this.parsePoseNodes(); + for (const ID in skeletons) { + const skeleton = skeletons[ID]; + const parents = connections.get(parseInt(skeleton.ID)).parents; + parents.forEach(function(parent) { + if (geometryMap.has(parent.ID)) { + const geoID = parent.ID; + const geoRelationships = connections.get(geoID); + geoRelationships.parents.forEach(function(geoConnParent) { + if (modelMap.has(geoConnParent.ID)) { + const model = modelMap.get(geoConnParent.ID); + model.bind(new Skeleton(skeleton.bones), bindMatrices[geoConnParent.ID]); + } + }); + } + }); + } + } + parsePoseNodes() { + const bindMatrices = {}; + if ("Pose" in fbxTree.Objects) { + const BindPoseNode = fbxTree.Objects.Pose; + for (const nodeID in BindPoseNode) { + if (BindPoseNode[nodeID].attrType === "BindPose" && BindPoseNode[nodeID].NbPoseNodes > 0) { + const poseNodes = BindPoseNode[nodeID].PoseNode; + if (Array.isArray(poseNodes)) { + poseNodes.forEach(function(poseNode) { + bindMatrices[poseNode.Node] = new Matrix4().fromArray(poseNode.Matrix.a); + }); + } else { + bindMatrices[poseNodes.Node] = new Matrix4().fromArray(poseNodes.Matrix.a); + } + } + } + } + return bindMatrices; + } + addGlobalSceneSettings() { + if ("GlobalSettings" in fbxTree) { + if ("AmbientColor" in fbxTree.GlobalSettings) { + const ambientColor = fbxTree.GlobalSettings.AmbientColor.value; + const r = ambientColor[0]; + const g = ambientColor[1]; + const b = ambientColor[2]; + if (r !== 0 || g !== 0 || b !== 0) { + const color = new Color(r, g, b).convertSRGBToLinear(); + sceneGraph.add(new AmbientLight(color, 1)); + } + } + if ("UnitScaleFactor" in fbxTree.GlobalSettings) { + sceneGraph.userData.unitScaleFactor = fbxTree.GlobalSettings.UnitScaleFactor.value; + } + } + } +}; +var GeometryParser = class { + constructor() { + this.negativeMaterialIndices = false; + } + // Parse nodes in FBXTree.Objects.Geometry + parse(deformers) { + const geometryMap = /* @__PURE__ */ new Map(); + if ("Geometry" in fbxTree.Objects) { + const geoNodes = fbxTree.Objects.Geometry; + for (const nodeID in geoNodes) { + const relationships = connections.get(parseInt(nodeID)); + const geo = this.parseGeometry(relationships, geoNodes[nodeID], deformers); + geometryMap.set(parseInt(nodeID), geo); + } + } + if (this.negativeMaterialIndices === true) { + console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."); + } + return geometryMap; + } + // Parse single node in FBXTree.Objects.Geometry + parseGeometry(relationships, geoNode, deformers) { + switch (geoNode.attrType) { + case "Mesh": + return this.parseMeshGeometry(relationships, geoNode, deformers); + break; + case "NurbsCurve": + return this.parseNurbsGeometry(geoNode); + break; + } + } + // Parse single node mesh geometry in FBXTree.Objects.Geometry + parseMeshGeometry(relationships, geoNode, deformers) { + const skeletons = deformers.skeletons; + const morphTargets = []; + const modelNodes = relationships.parents.map(function(parent) { + return fbxTree.Objects.Model[parent.ID]; + }); + if (modelNodes.length === 0) return; + const skeleton = relationships.children.reduce(function(skeleton2, child) { + if (skeletons[child.ID] !== void 0) skeleton2 = skeletons[child.ID]; + return skeleton2; + }, null); + relationships.children.forEach(function(child) { + if (deformers.morphTargets[child.ID] !== void 0) { + morphTargets.push(deformers.morphTargets[child.ID]); + } + }); + const modelNode = modelNodes[0]; + const transformData = {}; + if ("RotationOrder" in modelNode) transformData.eulerOrder = getEulerOrder(modelNode.RotationOrder.value); + if ("InheritType" in modelNode) transformData.inheritType = parseInt(modelNode.InheritType.value); + if ("GeometricTranslation" in modelNode) transformData.translation = modelNode.GeometricTranslation.value; + if ("GeometricRotation" in modelNode) transformData.rotation = modelNode.GeometricRotation.value; + if ("GeometricScaling" in modelNode) transformData.scale = modelNode.GeometricScaling.value; + const transform = generateTransform(transformData); + return this.genGeometry(geoNode, skeleton, morphTargets, transform); + } + // Generate a BufferGeometry from a node in FBXTree.Objects.Geometry + genGeometry(geoNode, skeleton, morphTargets, preTransform) { + const geo = new BufferGeometry(); + if (geoNode.attrName) geo.name = geoNode.attrName; + const geoInfo = this.parseGeoNode(geoNode, skeleton); + const buffers = this.genBuffers(geoInfo); + const positionAttribute = new Float32BufferAttribute(buffers.vertex, 3); + positionAttribute.applyMatrix4(preTransform); + geo.setAttribute("position", positionAttribute); + if (buffers.colors.length > 0) { + geo.setAttribute("color", new Float32BufferAttribute(buffers.colors, 3)); + } + if (skeleton) { + geo.setAttribute("skinIndex", new Uint16BufferAttribute(buffers.weightsIndices, 4)); + geo.setAttribute("skinWeight", new Float32BufferAttribute(buffers.vertexWeights, 4)); + geo.FBX_Deformer = skeleton; + } + if (buffers.normal.length > 0) { + const normalMatrix = new Matrix3().getNormalMatrix(preTransform); + const normalAttribute = new Float32BufferAttribute(buffers.normal, 3); + normalAttribute.applyNormalMatrix(normalMatrix); + geo.setAttribute("normal", normalAttribute); + } + buffers.uvs.forEach(function(uvBuffer, i) { + const name = i === 0 ? "uv" : `uv${i}`; + geo.setAttribute(name, new Float32BufferAttribute(buffers.uvs[i], 2)); + }); + if (geoInfo.material && geoInfo.material.mappingType !== "AllSame") { + let prevMaterialIndex = buffers.materialIndex[0]; + let startIndex = 0; + buffers.materialIndex.forEach(function(currentIndex, i) { + if (currentIndex !== prevMaterialIndex) { + geo.addGroup(startIndex, i - startIndex, prevMaterialIndex); + prevMaterialIndex = currentIndex; + startIndex = i; + } + }); + if (geo.groups.length > 0) { + const lastGroup = geo.groups[geo.groups.length - 1]; + const lastIndex = lastGroup.start + lastGroup.count; + if (lastIndex !== buffers.materialIndex.length) { + geo.addGroup(lastIndex, buffers.materialIndex.length - lastIndex, prevMaterialIndex); + } + } + if (geo.groups.length === 0) { + geo.addGroup(0, buffers.materialIndex.length, buffers.materialIndex[0]); + } + } + this.addMorphTargets(geo, geoNode, morphTargets, preTransform); + return geo; + } + parseGeoNode(geoNode, skeleton) { + const geoInfo = {}; + geoInfo.vertexPositions = geoNode.Vertices !== void 0 ? geoNode.Vertices.a : []; + geoInfo.vertexIndices = geoNode.PolygonVertexIndex !== void 0 ? geoNode.PolygonVertexIndex.a : []; + if (geoNode.LayerElementColor) { + geoInfo.color = this.parseVertexColors(geoNode.LayerElementColor[0]); + } + if (geoNode.LayerElementMaterial) { + geoInfo.material = this.parseMaterialIndices(geoNode.LayerElementMaterial[0]); + } + if (geoNode.LayerElementNormal) { + geoInfo.normal = this.parseNormals(geoNode.LayerElementNormal[0]); + } + if (geoNode.LayerElementUV) { + geoInfo.uv = []; + let i = 0; + while (geoNode.LayerElementUV[i]) { + if (geoNode.LayerElementUV[i].UV) { + geoInfo.uv.push(this.parseUVs(geoNode.LayerElementUV[i])); + } + i++; + } + } + geoInfo.weightTable = {}; + if (skeleton !== null) { + geoInfo.skeleton = skeleton; + skeleton.rawBones.forEach(function(rawBone, i) { + rawBone.indices.forEach(function(index, j) { + if (geoInfo.weightTable[index] === void 0) geoInfo.weightTable[index] = []; + geoInfo.weightTable[index].push({ + id: i, + weight: rawBone.weights[j] + }); + }); + }); + } + return geoInfo; + } + genBuffers(geoInfo) { + const buffers = { + vertex: [], + normal: [], + colors: [], + uvs: [], + materialIndex: [], + vertexWeights: [], + weightsIndices: [] + }; + let polygonIndex = 0; + let faceLength = 0; + let displayedWeightsWarning = false; + let facePositionIndexes = []; + let faceNormals = []; + let faceColors = []; + let faceUVs = []; + let faceWeights = []; + let faceWeightIndices = []; + const scope = this; + geoInfo.vertexIndices.forEach(function(vertexIndex, polygonVertexIndex) { + let materialIndex; + let endOfFace = false; + if (vertexIndex < 0) { + vertexIndex = vertexIndex ^ -1; + endOfFace = true; + } + let weightIndices = []; + let weights = []; + facePositionIndexes.push(vertexIndex * 3, vertexIndex * 3 + 1, vertexIndex * 3 + 2); + if (geoInfo.color) { + const data = getData(polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.color); + faceColors.push(data[0], data[1], data[2]); + } + if (geoInfo.skeleton) { + if (geoInfo.weightTable[vertexIndex] !== void 0) { + geoInfo.weightTable[vertexIndex].forEach(function(wt) { + weights.push(wt.weight); + weightIndices.push(wt.id); + }); + } + if (weights.length > 4) { + if (!displayedWeightsWarning) { + console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."); + displayedWeightsWarning = true; + } + const wIndex = [0, 0, 0, 0]; + const Weight = [0, 0, 0, 0]; + weights.forEach(function(weight, weightIndex) { + let currentWeight = weight; + let currentIndex = weightIndices[weightIndex]; + Weight.forEach(function(comparedWeight, comparedWeightIndex, comparedWeightArray) { + if (currentWeight > comparedWeight) { + comparedWeightArray[comparedWeightIndex] = currentWeight; + currentWeight = comparedWeight; + const tmp = wIndex[comparedWeightIndex]; + wIndex[comparedWeightIndex] = currentIndex; + currentIndex = tmp; + } + }); + }); + weightIndices = wIndex; + weights = Weight; + } + while (weights.length < 4) { + weights.push(0); + weightIndices.push(0); + } + for (let i = 0; i < 4; ++i) { + faceWeights.push(weights[i]); + faceWeightIndices.push(weightIndices[i]); + } + } + if (geoInfo.normal) { + const data = getData(polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.normal); + faceNormals.push(data[0], data[1], data[2]); + } + if (geoInfo.material && geoInfo.material.mappingType !== "AllSame") { + materialIndex = getData(polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.material)[0]; + if (materialIndex < 0) { + scope.negativeMaterialIndices = true; + materialIndex = 0; + } + } + if (geoInfo.uv) { + geoInfo.uv.forEach(function(uv, i) { + const data = getData(polygonVertexIndex, polygonIndex, vertexIndex, uv); + if (faceUVs[i] === void 0) { + faceUVs[i] = []; + } + faceUVs[i].push(data[0]); + faceUVs[i].push(data[1]); + }); + } + faceLength++; + if (endOfFace) { + scope.genFace(buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength); + polygonIndex++; + faceLength = 0; + facePositionIndexes = []; + faceNormals = []; + faceColors = []; + faceUVs = []; + faceWeights = []; + faceWeightIndices = []; + } + }); + return buffers; + } + // See https://www.khronos.org/opengl/wiki/Calculating_a_Surface_Normal + getNormalNewell(vertices) { + const normal = new Vector3(0, 0, 0); + for (let i = 0; i < vertices.length; i++) { + const current = vertices[i]; + const next = vertices[(i + 1) % vertices.length]; + normal.x += (current.y - next.y) * (current.z + next.z); + normal.y += (current.z - next.z) * (current.x + next.x); + normal.z += (current.x - next.x) * (current.y + next.y); + } + normal.normalize(); + return normal; + } + getNormalTangentAndBitangent(vertices) { + const normalVector = this.getNormalNewell(vertices); + const up2 = Math.abs(normalVector.z) > 0.5 ? new Vector3(0, 1, 0) : new Vector3(0, 0, 1); + const tangent = up2.cross(normalVector).normalize(); + const bitangent = normalVector.clone().cross(tangent).normalize(); + return { + normal: normalVector, + tangent, + bitangent + }; + } + flattenVertex(vertex2, normalTangent, normalBitangent) { + return new Vector2( + vertex2.dot(normalTangent), + vertex2.dot(normalBitangent) + ); + } + // Generate data for a single face in a geometry. If the face is a quad then split it into 2 tris + genFace(buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength) { + let triangles; + if (faceLength > 3) { + const vertices = []; + for (let i = 0; i < facePositionIndexes.length; i += 3) { + vertices.push(new Vector3( + geoInfo.vertexPositions[facePositionIndexes[i]], + geoInfo.vertexPositions[facePositionIndexes[i + 1]], + geoInfo.vertexPositions[facePositionIndexes[i + 2]] + )); + } + const { tangent, bitangent } = this.getNormalTangentAndBitangent(vertices); + const triangulationInput = []; + for (const vertex2 of vertices) { + triangulationInput.push(this.flattenVertex(vertex2, tangent, bitangent)); + } + triangles = ShapeUtils.triangulateShape(triangulationInput, []); + } else { + triangles = [[0, 1, 2]]; + } + for (const [i0, i1, i2] of triangles) { + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i0 * 3]]); + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i0 * 3 + 1]]); + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i0 * 3 + 2]]); + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i1 * 3]]); + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i1 * 3 + 1]]); + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i1 * 3 + 2]]); + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i2 * 3]]); + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i2 * 3 + 1]]); + buffers.vertex.push(geoInfo.vertexPositions[facePositionIndexes[i2 * 3 + 2]]); + if (geoInfo.skeleton) { + buffers.vertexWeights.push(faceWeights[i0 * 4]); + buffers.vertexWeights.push(faceWeights[i0 * 4 + 1]); + buffers.vertexWeights.push(faceWeights[i0 * 4 + 2]); + buffers.vertexWeights.push(faceWeights[i0 * 4 + 3]); + buffers.vertexWeights.push(faceWeights[i1 * 4]); + buffers.vertexWeights.push(faceWeights[i1 * 4 + 1]); + buffers.vertexWeights.push(faceWeights[i1 * 4 + 2]); + buffers.vertexWeights.push(faceWeights[i1 * 4 + 3]); + buffers.vertexWeights.push(faceWeights[i2 * 4]); + buffers.vertexWeights.push(faceWeights[i2 * 4 + 1]); + buffers.vertexWeights.push(faceWeights[i2 * 4 + 2]); + buffers.vertexWeights.push(faceWeights[i2 * 4 + 3]); + buffers.weightsIndices.push(faceWeightIndices[i0 * 4]); + buffers.weightsIndices.push(faceWeightIndices[i0 * 4 + 1]); + buffers.weightsIndices.push(faceWeightIndices[i0 * 4 + 2]); + buffers.weightsIndices.push(faceWeightIndices[i0 * 4 + 3]); + buffers.weightsIndices.push(faceWeightIndices[i1 * 4]); + buffers.weightsIndices.push(faceWeightIndices[i1 * 4 + 1]); + buffers.weightsIndices.push(faceWeightIndices[i1 * 4 + 2]); + buffers.weightsIndices.push(faceWeightIndices[i1 * 4 + 3]); + buffers.weightsIndices.push(faceWeightIndices[i2 * 4]); + buffers.weightsIndices.push(faceWeightIndices[i2 * 4 + 1]); + buffers.weightsIndices.push(faceWeightIndices[i2 * 4 + 2]); + buffers.weightsIndices.push(faceWeightIndices[i2 * 4 + 3]); + } + if (geoInfo.color) { + buffers.colors.push(faceColors[i0 * 3]); + buffers.colors.push(faceColors[i0 * 3 + 1]); + buffers.colors.push(faceColors[i0 * 3 + 2]); + buffers.colors.push(faceColors[i1 * 3]); + buffers.colors.push(faceColors[i1 * 3 + 1]); + buffers.colors.push(faceColors[i1 * 3 + 2]); + buffers.colors.push(faceColors[i2 * 3]); + buffers.colors.push(faceColors[i2 * 3 + 1]); + buffers.colors.push(faceColors[i2 * 3 + 2]); + } + if (geoInfo.material && geoInfo.material.mappingType !== "AllSame") { + buffers.materialIndex.push(materialIndex); + buffers.materialIndex.push(materialIndex); + buffers.materialIndex.push(materialIndex); + } + if (geoInfo.normal) { + buffers.normal.push(faceNormals[i0 * 3]); + buffers.normal.push(faceNormals[i0 * 3 + 1]); + buffers.normal.push(faceNormals[i0 * 3 + 2]); + buffers.normal.push(faceNormals[i1 * 3]); + buffers.normal.push(faceNormals[i1 * 3 + 1]); + buffers.normal.push(faceNormals[i1 * 3 + 2]); + buffers.normal.push(faceNormals[i2 * 3]); + buffers.normal.push(faceNormals[i2 * 3 + 1]); + buffers.normal.push(faceNormals[i2 * 3 + 2]); + } + if (geoInfo.uv) { + geoInfo.uv.forEach(function(uv, j) { + if (buffers.uvs[j] === void 0) buffers.uvs[j] = []; + buffers.uvs[j].push(faceUVs[j][i0 * 2]); + buffers.uvs[j].push(faceUVs[j][i0 * 2 + 1]); + buffers.uvs[j].push(faceUVs[j][i1 * 2]); + buffers.uvs[j].push(faceUVs[j][i1 * 2 + 1]); + buffers.uvs[j].push(faceUVs[j][i2 * 2]); + buffers.uvs[j].push(faceUVs[j][i2 * 2 + 1]); + }); + } + } + } + addMorphTargets(parentGeo, parentGeoNode, morphTargets, preTransform) { + if (morphTargets.length === 0) return; + parentGeo.morphTargetsRelative = true; + parentGeo.morphAttributes.position = []; + const scope = this; + morphTargets.forEach(function(morphTarget) { + morphTarget.rawTargets.forEach(function(rawTarget) { + const morphGeoNode = fbxTree.Objects.Geometry[rawTarget.geoID]; + if (morphGeoNode !== void 0) { + scope.genMorphGeometry(parentGeo, parentGeoNode, morphGeoNode, preTransform, rawTarget.name); + } + }); + }); + } + // a morph geometry node is similar to a standard node, and the node is also contained + // in FBXTree.Objects.Geometry, however it can only have attributes for position, normal + // and a special attribute Index defining which vertices of the original geometry are affected + // Normal and position attributes only have data for the vertices that are affected by the morph + genMorphGeometry(parentGeo, parentGeoNode, morphGeoNode, preTransform, name) { + const vertexIndices = parentGeoNode.PolygonVertexIndex !== void 0 ? parentGeoNode.PolygonVertexIndex.a : []; + const morphPositionsSparse = morphGeoNode.Vertices !== void 0 ? morphGeoNode.Vertices.a : []; + const indices = morphGeoNode.Indexes !== void 0 ? morphGeoNode.Indexes.a : []; + const length = parentGeo.attributes.position.count * 3; + const morphPositions = new Float32Array(length); + for (let i = 0; i < indices.length; i++) { + const morphIndex = indices[i] * 3; + morphPositions[morphIndex] = morphPositionsSparse[i * 3]; + morphPositions[morphIndex + 1] = morphPositionsSparse[i * 3 + 1]; + morphPositions[morphIndex + 2] = morphPositionsSparse[i * 3 + 2]; + } + const morphGeoInfo = { + vertexIndices, + vertexPositions: morphPositions + }; + const morphBuffers = this.genBuffers(morphGeoInfo); + const positionAttribute = new Float32BufferAttribute(morphBuffers.vertex, 3); + positionAttribute.name = name || morphGeoNode.attrName; + positionAttribute.applyMatrix4(preTransform); + parentGeo.morphAttributes.position.push(positionAttribute); + } + // Parse normal from FBXTree.Objects.Geometry.LayerElementNormal if it exists + parseNormals(NormalNode) { + const mappingType = NormalNode.MappingInformationType; + const referenceType = NormalNode.ReferenceInformationType; + const buffer = NormalNode.Normals.a; + let indexBuffer = []; + if (referenceType === "IndexToDirect") { + if ("NormalIndex" in NormalNode) { + indexBuffer = NormalNode.NormalIndex.a; + } else if ("NormalsIndex" in NormalNode) { + indexBuffer = NormalNode.NormalsIndex.a; + } + } + return { + dataSize: 3, + buffer, + indices: indexBuffer, + mappingType, + referenceType + }; + } + // Parse UVs from FBXTree.Objects.Geometry.LayerElementUV if it exists + parseUVs(UVNode) { + const mappingType = UVNode.MappingInformationType; + const referenceType = UVNode.ReferenceInformationType; + const buffer = UVNode.UV.a; + let indexBuffer = []; + if (referenceType === "IndexToDirect") { + indexBuffer = UVNode.UVIndex.a; + } + return { + dataSize: 2, + buffer, + indices: indexBuffer, + mappingType, + referenceType + }; + } + // Parse Vertex Colors from FBXTree.Objects.Geometry.LayerElementColor if it exists + parseVertexColors(ColorNode) { + const mappingType = ColorNode.MappingInformationType; + const referenceType = ColorNode.ReferenceInformationType; + const buffer = ColorNode.Colors.a; + let indexBuffer = []; + if (referenceType === "IndexToDirect") { + indexBuffer = ColorNode.ColorIndex.a; + } + for (let i = 0, c = new Color(); i < buffer.length; i += 4) { + c.fromArray(buffer, i).convertSRGBToLinear().toArray(buffer, i); + } + return { + dataSize: 4, + buffer, + indices: indexBuffer, + mappingType, + referenceType + }; + } + // Parse mapping and material data in FBXTree.Objects.Geometry.LayerElementMaterial if it exists + parseMaterialIndices(MaterialNode) { + const mappingType = MaterialNode.MappingInformationType; + const referenceType = MaterialNode.ReferenceInformationType; + if (mappingType === "NoMappingInformation") { + return { + dataSize: 1, + buffer: [0], + indices: [0], + mappingType: "AllSame", + referenceType + }; + } + const materialIndexBuffer = MaterialNode.Materials.a; + const materialIndices = []; + for (let i = 0; i < materialIndexBuffer.length; ++i) { + materialIndices.push(i); + } + return { + dataSize: 1, + buffer: materialIndexBuffer, + indices: materialIndices, + mappingType, + referenceType + }; + } + // Generate a NurbGeometry from a node in FBXTree.Objects.Geometry + parseNurbsGeometry(geoNode) { + const order = parseInt(geoNode.Order); + if (isNaN(order)) { + console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s", geoNode.Order, geoNode.id); + return new BufferGeometry(); + } + const degree = order - 1; + const knots = geoNode.KnotVector.a; + const controlPoints = []; + const pointsValues = geoNode.Points.a; + for (let i = 0, l = pointsValues.length; i < l; i += 4) { + controlPoints.push(new Vector4().fromArray(pointsValues, i)); + } + let startKnot, endKnot; + if (geoNode.Form === "Closed") { + controlPoints.push(controlPoints[0]); + } else if (geoNode.Form === "Periodic") { + startKnot = degree; + endKnot = knots.length - 1 - startKnot; + for (let i = 0; i < degree; ++i) { + controlPoints.push(controlPoints[i]); + } + } + const curve = new NURBSCurve(degree, knots, controlPoints, startKnot, endKnot); + const points = curve.getPoints(controlPoints.length * 12); + return new BufferGeometry().setFromPoints(points); + } +}; +var AnimationParser = class { + // take raw animation clips and turn them into three.js animation clips + parse() { + const animationClips = []; + const rawClips = this.parseClips(); + if (rawClips !== void 0) { + for (const key in rawClips) { + const rawClip = rawClips[key]; + const clip = this.addClip(rawClip); + animationClips.push(clip); + } + } + return animationClips; + } + parseClips() { + if (fbxTree.Objects.AnimationCurve === void 0) return void 0; + const curveNodesMap = this.parseAnimationCurveNodes(); + this.parseAnimationCurves(curveNodesMap); + const layersMap = this.parseAnimationLayers(curveNodesMap); + const rawClips = this.parseAnimStacks(layersMap); + return rawClips; + } + // parse nodes in FBXTree.Objects.AnimationCurveNode + // each AnimationCurveNode holds data for an animation transform for a model (e.g. left arm rotation ) + // and is referenced by an AnimationLayer + parseAnimationCurveNodes() { + const rawCurveNodes = fbxTree.Objects.AnimationCurveNode; + const curveNodesMap = /* @__PURE__ */ new Map(); + for (const nodeID in rawCurveNodes) { + const rawCurveNode = rawCurveNodes[nodeID]; + if (rawCurveNode.attrName.match(/S|R|T|DeformPercent/) !== null) { + const curveNode = { + id: rawCurveNode.id, + attr: rawCurveNode.attrName, + curves: {} + }; + curveNodesMap.set(curveNode.id, curveNode); + } + } + return curveNodesMap; + } + // parse nodes in FBXTree.Objects.AnimationCurve and connect them up to + // previously parsed AnimationCurveNodes. Each AnimationCurve holds data for a single animated + // axis ( e.g. times and values of x rotation) + parseAnimationCurves(curveNodesMap) { + const rawCurves = fbxTree.Objects.AnimationCurve; + for (const nodeID in rawCurves) { + const animationCurve = { + id: rawCurves[nodeID].id, + times: rawCurves[nodeID].KeyTime.a.map(convertFBXTimeToSeconds), + values: rawCurves[nodeID].KeyValueFloat.a + }; + const relationships = connections.get(animationCurve.id); + if (relationships !== void 0) { + const animationCurveID = relationships.parents[0].ID; + const animationCurveRelationship = relationships.parents[0].relationship; + if (animationCurveRelationship.match(/X/)) { + curveNodesMap.get(animationCurveID).curves["x"] = animationCurve; + } else if (animationCurveRelationship.match(/Y/)) { + curveNodesMap.get(animationCurveID).curves["y"] = animationCurve; + } else if (animationCurveRelationship.match(/Z/)) { + curveNodesMap.get(animationCurveID).curves["z"] = animationCurve; + } else if (animationCurveRelationship.match(/DeformPercent/) && curveNodesMap.has(animationCurveID)) { + curveNodesMap.get(animationCurveID).curves["morph"] = animationCurve; + } + } + } + } + // parse nodes in FBXTree.Objects.AnimationLayer. Each layers holds references + // to various AnimationCurveNodes and is referenced by an AnimationStack node + // note: theoretically a stack can have multiple layers, however in practice there always seems to be one per stack + parseAnimationLayers(curveNodesMap) { + const rawLayers = fbxTree.Objects.AnimationLayer; + const layersMap = /* @__PURE__ */ new Map(); + for (const nodeID in rawLayers) { + const layerCurveNodes = []; + const connection = connections.get(parseInt(nodeID)); + if (connection !== void 0) { + const children = connection.children; + children.forEach(function(child, i) { + if (curveNodesMap.has(child.ID)) { + const curveNode = curveNodesMap.get(child.ID); + if (curveNode.curves.x !== void 0 || curveNode.curves.y !== void 0 || curveNode.curves.z !== void 0) { + if (layerCurveNodes[i] === void 0) { + const modelID = connections.get(child.ID).parents.filter(function(parent) { + return parent.relationship !== void 0; + })[0].ID; + if (modelID !== void 0) { + const rawModel = fbxTree.Objects.Model[modelID.toString()]; + if (rawModel === void 0) { + console.warn("THREE.FBXLoader: Encountered a unused curve.", child); + return; + } + const node = { + modelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName(rawModel.attrName) : "", + ID: rawModel.id, + initialPosition: [0, 0, 0], + initialRotation: [0, 0, 0], + initialScale: [1, 1, 1] + }; + sceneGraph.traverse(function(child2) { + if (child2.ID === rawModel.id) { + node.transform = child2.matrix; + if (child2.userData.transformData) node.eulerOrder = child2.userData.transformData.eulerOrder; + } + }); + if (!node.transform) node.transform = new Matrix4(); + if ("PreRotation" in rawModel) node.preRotation = rawModel.PreRotation.value; + if ("PostRotation" in rawModel) node.postRotation = rawModel.PostRotation.value; + layerCurveNodes[i] = node; + } + } + if (layerCurveNodes[i]) layerCurveNodes[i][curveNode.attr] = curveNode; + } else if (curveNode.curves.morph !== void 0) { + if (layerCurveNodes[i] === void 0) { + const deformerID = connections.get(child.ID).parents.filter(function(parent) { + return parent.relationship !== void 0; + })[0].ID; + const morpherID = connections.get(deformerID).parents[0].ID; + const geoID = connections.get(morpherID).parents[0].ID; + const modelID = connections.get(geoID).parents[0].ID; + const rawModel = fbxTree.Objects.Model[modelID]; + const node = { + modelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName(rawModel.attrName) : "", + morphName: fbxTree.Objects.Deformer[deformerID].attrName + }; + layerCurveNodes[i] = node; + } + layerCurveNodes[i][curveNode.attr] = curveNode; + } + } + }); + layersMap.set(parseInt(nodeID), layerCurveNodes); + } + } + return layersMap; + } + // parse nodes in FBXTree.Objects.AnimationStack. These are the top level node in the animation + // hierarchy. Each Stack node will be used to create a AnimationClip + parseAnimStacks(layersMap) { + const rawStacks = fbxTree.Objects.AnimationStack; + const rawClips = {}; + for (const nodeID in rawStacks) { + const children = connections.get(parseInt(nodeID)).children; + if (children.length > 1) { + console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers."); + } + const layer = layersMap.get(children[0].ID); + rawClips[nodeID] = { + name: rawStacks[nodeID].attrName, + layer + }; + } + return rawClips; + } + addClip(rawClip) { + let tracks = []; + const scope = this; + rawClip.layer.forEach(function(rawTracks) { + tracks = tracks.concat(scope.generateTracks(rawTracks)); + }); + return new AnimationClip(rawClip.name, -1, tracks); + } + generateTracks(rawTracks) { + const tracks = []; + let initialPosition = new Vector3(); + let initialScale = new Vector3(); + if (rawTracks.transform) rawTracks.transform.decompose(initialPosition, new Quaternion(), initialScale); + initialPosition = initialPosition.toArray(); + initialScale = initialScale.toArray(); + if (rawTracks.T !== void 0 && Object.keys(rawTracks.T.curves).length > 0) { + const positionTrack = this.generateVectorTrack(rawTracks.modelName, rawTracks.T.curves, initialPosition, "position"); + if (positionTrack !== void 0) tracks.push(positionTrack); + } + if (rawTracks.R !== void 0 && Object.keys(rawTracks.R.curves).length > 0) { + const rotationTrack = this.generateRotationTrack(rawTracks.modelName, rawTracks.R.curves, rawTracks.preRotation, rawTracks.postRotation, rawTracks.eulerOrder); + if (rotationTrack !== void 0) tracks.push(rotationTrack); + } + if (rawTracks.S !== void 0 && Object.keys(rawTracks.S.curves).length > 0) { + const scaleTrack = this.generateVectorTrack(rawTracks.modelName, rawTracks.S.curves, initialScale, "scale"); + if (scaleTrack !== void 0) tracks.push(scaleTrack); + } + if (rawTracks.DeformPercent !== void 0) { + const morphTrack = this.generateMorphTrack(rawTracks); + if (morphTrack !== void 0) tracks.push(morphTrack); + } + return tracks; + } + generateVectorTrack(modelName, curves, initialValue, type) { + const times = this.getTimesForAllAxes(curves); + const values = this.getKeyframeTrackValues(times, curves, initialValue); + return new VectorKeyframeTrack(modelName + "." + type, times, values); + } + generateRotationTrack(modelName, curves, preRotation, postRotation, eulerOrder) { + let times; + let values; + if (curves.x !== void 0 && curves.y !== void 0 && curves.z !== void 0) { + const result = this.interpolateRotations(curves.x, curves.y, curves.z, eulerOrder); + times = result[0]; + values = result[1]; + } + if (preRotation !== void 0) { + preRotation = preRotation.map(MathUtils.degToRad); + preRotation.push(eulerOrder); + preRotation = new Euler().fromArray(preRotation); + preRotation = new Quaternion().setFromEuler(preRotation); + } + if (postRotation !== void 0) { + postRotation = postRotation.map(MathUtils.degToRad); + postRotation.push(eulerOrder); + postRotation = new Euler().fromArray(postRotation); + postRotation = new Quaternion().setFromEuler(postRotation).invert(); + } + const quaternion2 = new Quaternion(); + const euler = new Euler(); + const quaternionValues = []; + if (!values || !times) return new QuaternionKeyframeTrack(modelName + ".quaternion", [0], [0]); + for (let i = 0; i < values.length; i += 3) { + euler.set(values[i], values[i + 1], values[i + 2], eulerOrder); + quaternion2.setFromEuler(euler); + if (preRotation !== void 0) quaternion2.premultiply(preRotation); + if (postRotation !== void 0) quaternion2.multiply(postRotation); + if (i > 2) { + const prevQuat = new Quaternion().fromArray( + quaternionValues, + (i - 3) / 3 * 4 + ); + if (prevQuat.dot(quaternion2) < 0) { + quaternion2.set(-quaternion2.x, -quaternion2.y, -quaternion2.z, -quaternion2.w); + } + } + quaternion2.toArray(quaternionValues, i / 3 * 4); + } + return new QuaternionKeyframeTrack(modelName + ".quaternion", times, quaternionValues); + } + generateMorphTrack(rawTracks) { + const curves = rawTracks.DeformPercent.curves.morph; + const values = curves.values.map(function(val) { + return val / 100; + }); + const morphNum = sceneGraph.getObjectByName(rawTracks.modelName).morphTargetDictionary[rawTracks.morphName]; + return new NumberKeyframeTrack(rawTracks.modelName + ".morphTargetInfluences[" + morphNum + "]", curves.times, values); + } + // For all animated objects, times are defined separately for each axis + // Here we'll combine the times into one sorted array without duplicates + getTimesForAllAxes(curves) { + let times = []; + if (curves.x !== void 0) times = times.concat(curves.x.times); + if (curves.y !== void 0) times = times.concat(curves.y.times); + if (curves.z !== void 0) times = times.concat(curves.z.times); + times = times.sort(function(a, b) { + return a - b; + }); + if (times.length > 1) { + let targetIndex = 1; + let lastValue = times[0]; + for (let i = 1; i < times.length; i++) { + const currentValue = times[i]; + if (currentValue !== lastValue) { + times[targetIndex] = currentValue; + lastValue = currentValue; + targetIndex++; + } + } + times = times.slice(0, targetIndex); + } + return times; + } + getKeyframeTrackValues(times, curves, initialValue) { + const prevValue = initialValue; + const values = []; + let xIndex = -1; + let yIndex = -1; + let zIndex = -1; + times.forEach(function(time) { + if (curves.x) xIndex = curves.x.times.indexOf(time); + if (curves.y) yIndex = curves.y.times.indexOf(time); + if (curves.z) zIndex = curves.z.times.indexOf(time); + if (xIndex !== -1) { + const xValue = curves.x.values[xIndex]; + values.push(xValue); + prevValue[0] = xValue; + } else { + values.push(prevValue[0]); + } + if (yIndex !== -1) { + const yValue = curves.y.values[yIndex]; + values.push(yValue); + prevValue[1] = yValue; + } else { + values.push(prevValue[1]); + } + if (zIndex !== -1) { + const zValue = curves.z.values[zIndex]; + values.push(zValue); + prevValue[2] = zValue; + } else { + values.push(prevValue[2]); + } + }); + return values; + } + // Rotations are defined as Euler angles which can have values of any size + // These will be converted to quaternions which don't support values greater than + // PI, so we'll interpolate large rotations + interpolateRotations(curvex, curvey, curvez, eulerOrder) { + const times = []; + const values = []; + times.push(curvex.times[0]); + values.push(MathUtils.degToRad(curvex.values[0])); + values.push(MathUtils.degToRad(curvey.values[0])); + values.push(MathUtils.degToRad(curvez.values[0])); + for (let i = 1; i < curvex.values.length; i++) { + const initialValue = [ + curvex.values[i - 1], + curvey.values[i - 1], + curvez.values[i - 1] + ]; + if (isNaN(initialValue[0]) || isNaN(initialValue[1]) || isNaN(initialValue[2])) { + continue; + } + const initialValueRad = initialValue.map(MathUtils.degToRad); + const currentValue = [ + curvex.values[i], + curvey.values[i], + curvez.values[i] + ]; + if (isNaN(currentValue[0]) || isNaN(currentValue[1]) || isNaN(currentValue[2])) { + continue; + } + const currentValueRad = currentValue.map(MathUtils.degToRad); + const valuesSpan = [ + currentValue[0] - initialValue[0], + currentValue[1] - initialValue[1], + currentValue[2] - initialValue[2] + ]; + const absoluteSpan = [ + Math.abs(valuesSpan[0]), + Math.abs(valuesSpan[1]), + Math.abs(valuesSpan[2]) + ]; + if (absoluteSpan[0] >= 180 || absoluteSpan[1] >= 180 || absoluteSpan[2] >= 180) { + const maxAbsSpan = Math.max(...absoluteSpan); + const numSubIntervals = maxAbsSpan / 180; + const E1 = new Euler(...initialValueRad, eulerOrder); + const E2 = new Euler(...currentValueRad, eulerOrder); + const Q1 = new Quaternion().setFromEuler(E1); + const Q2 = new Quaternion().setFromEuler(E2); + if (Q1.dot(Q2)) { + Q2.set(-Q2.x, -Q2.y, -Q2.z, -Q2.w); + } + const initialTime = curvex.times[i - 1]; + const timeSpan = curvex.times[i] - initialTime; + const Q = new Quaternion(); + const E = new Euler(); + for (let t = 0; t < 1; t += 1 / numSubIntervals) { + Q.copy(Q1.clone().slerp(Q2.clone(), t)); + times.push(initialTime + t * timeSpan); + E.setFromQuaternion(Q, eulerOrder); + values.push(E.x); + values.push(E.y); + values.push(E.z); + } + } else { + times.push(curvex.times[i]); + values.push(MathUtils.degToRad(curvex.values[i])); + values.push(MathUtils.degToRad(curvey.values[i])); + values.push(MathUtils.degToRad(curvez.values[i])); + } + } + return [times, values]; + } +}; +var TextParser = class { + getPrevNode() { + return this.nodeStack[this.currentIndent - 2]; + } + getCurrentNode() { + return this.nodeStack[this.currentIndent - 1]; + } + getCurrentProp() { + return this.currentProp; + } + pushStack(node) { + this.nodeStack.push(node); + this.currentIndent += 1; + } + popStack() { + this.nodeStack.pop(); + this.currentIndent -= 1; + } + setCurrentProp(val, name) { + this.currentProp = val; + this.currentPropName = name; + } + parse(text) { + this.currentIndent = 0; + this.allNodes = new FBXTree(); + this.nodeStack = []; + this.currentProp = []; + this.currentPropName = ""; + const scope = this; + const split = text.split(/[\r\n]+/); + split.forEach(function(line, i) { + const matchComment = line.match(/^[\s\t]*;/); + const matchEmpty = line.match(/^[\s\t]*$/); + if (matchComment || matchEmpty) return; + const matchBeginning = line.match("^\\t{" + scope.currentIndent + "}(\\w+):(.*){", ""); + const matchProperty = line.match("^\\t{" + scope.currentIndent + "}(\\w+):[\\s\\t\\r\\n](.*)"); + const matchEnd = line.match("^\\t{" + (scope.currentIndent - 1) + "}}"); + if (matchBeginning) { + scope.parseNodeBegin(line, matchBeginning); + } else if (matchProperty) { + scope.parseNodeProperty(line, matchProperty, split[++i]); + } else if (matchEnd) { + scope.popStack(); + } else if (line.match(/^[^\s\t}]/)) { + scope.parseNodePropertyContinued(line); + } + }); + return this.allNodes; + } + parseNodeBegin(line, property) { + const nodeName = property[1].trim().replace(/^"/, "").replace(/"$/, ""); + const nodeAttrs = property[2].split(",").map(function(attr) { + return attr.trim().replace(/^"/, "").replace(/"$/, ""); + }); + const node = { name: nodeName }; + const attrs = this.parseNodeAttr(nodeAttrs); + const currentNode = this.getCurrentNode(); + if (this.currentIndent === 0) { + this.allNodes.add(nodeName, node); + } else { + if (nodeName in currentNode) { + if (nodeName === "PoseNode") { + currentNode.PoseNode.push(node); + } else if (currentNode[nodeName].id !== void 0) { + currentNode[nodeName] = {}; + currentNode[nodeName][currentNode[nodeName].id] = currentNode[nodeName]; + } + if (attrs.id !== "") currentNode[nodeName][attrs.id] = node; + } else if (typeof attrs.id === "number") { + currentNode[nodeName] = {}; + currentNode[nodeName][attrs.id] = node; + } else if (nodeName !== "Properties70") { + if (nodeName === "PoseNode") currentNode[nodeName] = [node]; + else currentNode[nodeName] = node; + } + } + if (typeof attrs.id === "number") node.id = attrs.id; + if (attrs.name !== "") node.attrName = attrs.name; + if (attrs.type !== "") node.attrType = attrs.type; + this.pushStack(node); + } + parseNodeAttr(attrs) { + let id = attrs[0]; + if (attrs[0] !== "") { + id = parseInt(attrs[0]); + if (isNaN(id)) { + id = attrs[0]; + } + } + let name = "", type = ""; + if (attrs.length > 1) { + name = attrs[1].replace(/^(\w+)::/, ""); + type = attrs[2]; + } + return { id, name, type }; + } + parseNodeProperty(line, property, contentLine) { + let propName = property[1].replace(/^"/, "").replace(/"$/, "").trim(); + let propValue = property[2].replace(/^"/, "").replace(/"$/, "").trim(); + if (propName === "Content" && propValue === ",") { + propValue = contentLine.replace(/"/g, "").replace(/,$/, "").trim(); + } + const currentNode = this.getCurrentNode(); + const parentName = currentNode.name; + if (parentName === "Properties70") { + this.parseNodeSpecialProperty(line, propName, propValue); + return; + } + if (propName === "C") { + const connProps = propValue.split(",").slice(1); + const from = parseInt(connProps[0]); + const to = parseInt(connProps[1]); + let rest = propValue.split(",").slice(3); + rest = rest.map(function(elem) { + return elem.trim().replace(/^"/, ""); + }); + propName = "connections"; + propValue = [from, to]; + append(propValue, rest); + if (currentNode[propName] === void 0) { + currentNode[propName] = []; + } + } + if (propName === "Node") currentNode.id = propValue; + if (propName in currentNode && Array.isArray(currentNode[propName])) { + currentNode[propName].push(propValue); + } else { + if (propName !== "a") currentNode[propName] = propValue; + else currentNode.a = propValue; + } + this.setCurrentProp(currentNode, propName); + if (propName === "a" && propValue.slice(-1) !== ",") { + currentNode.a = parseNumberArray(propValue); + } + } + parseNodePropertyContinued(line) { + const currentNode = this.getCurrentNode(); + currentNode.a += line; + if (line.slice(-1) !== ",") { + currentNode.a = parseNumberArray(currentNode.a); + } + } + // parse "Property70" + parseNodeSpecialProperty(line, propName, propValue) { + const props = propValue.split('",').map(function(prop) { + return prop.trim().replace(/^\"/, "").replace(/\s/, "_"); + }); + const innerPropName = props[0]; + const innerPropType1 = props[1]; + const innerPropType2 = props[2]; + const innerPropFlag = props[3]; + let innerPropValue = props[4]; + switch (innerPropType1) { + case "int": + case "enum": + case "bool": + case "ULongLong": + case "double": + case "Number": + case "FieldOfView": + innerPropValue = parseFloat(innerPropValue); + break; + case "Color": + case "ColorRGB": + case "Vector3D": + case "Lcl_Translation": + case "Lcl_Rotation": + case "Lcl_Scaling": + innerPropValue = parseNumberArray(innerPropValue); + break; + } + this.getPrevNode()[innerPropName] = { + "type": innerPropType1, + "type2": innerPropType2, + "flag": innerPropFlag, + "value": innerPropValue + }; + this.setCurrentProp(this.getPrevNode(), innerPropName); + } +}; +var BinaryParser = class { + parse(buffer) { + const reader = new BinaryReader(buffer); + reader.skip(23); + const version = reader.getUint32(); + if (version < 6400) { + throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: " + version); + } + const allNodes = new FBXTree(); + while (!this.endOfContent(reader)) { + const node = this.parseNode(reader, version); + if (node !== null) allNodes.add(node.name, node); + } + return allNodes; + } + // Check if reader has reached the end of content. + endOfContent(reader) { + if (reader.size() % 16 === 0) { + return (reader.getOffset() + 160 + 16 & ~15) >= reader.size(); + } else { + return reader.getOffset() + 160 + 16 >= reader.size(); + } + } + // recursively parse nodes until the end of the file is reached + parseNode(reader, version) { + const node = {}; + const endOffset = version >= 7500 ? reader.getUint64() : reader.getUint32(); + const numProperties = version >= 7500 ? reader.getUint64() : reader.getUint32(); + version >= 7500 ? reader.getUint64() : reader.getUint32(); + const nameLen = reader.getUint8(); + const name = reader.getString(nameLen); + if (endOffset === 0) return null; + const propertyList = []; + for (let i = 0; i < numProperties; i++) { + propertyList.push(this.parseProperty(reader)); + } + const id = propertyList.length > 0 ? propertyList[0] : ""; + const attrName = propertyList.length > 1 ? propertyList[1] : ""; + const attrType = propertyList.length > 2 ? propertyList[2] : ""; + node.singleProperty = numProperties === 1 && reader.getOffset() === endOffset ? true : false; + while (endOffset > reader.getOffset()) { + const subNode = this.parseNode(reader, version); + if (subNode !== null) this.parseSubNode(name, node, subNode); + } + node.propertyList = propertyList; + if (typeof id === "number") node.id = id; + if (attrName !== "") node.attrName = attrName; + if (attrType !== "") node.attrType = attrType; + if (name !== "") node.name = name; + return node; + } + parseSubNode(name, node, subNode) { + if (subNode.singleProperty === true) { + const value = subNode.propertyList[0]; + if (Array.isArray(value)) { + node[subNode.name] = subNode; + subNode.a = value; + } else { + node[subNode.name] = value; + } + } else if (name === "Connections" && subNode.name === "C") { + const array = []; + subNode.propertyList.forEach(function(property, i) { + if (i !== 0) array.push(property); + }); + if (node.connections === void 0) { + node.connections = []; + } + node.connections.push(array); + } else if (subNode.name === "Properties70") { + const keys = Object.keys(subNode); + keys.forEach(function(key) { + node[key] = subNode[key]; + }); + } else if (name === "Properties70" && subNode.name === "P") { + let innerPropName = subNode.propertyList[0]; + let innerPropType1 = subNode.propertyList[1]; + const innerPropType2 = subNode.propertyList[2]; + const innerPropFlag = subNode.propertyList[3]; + let innerPropValue; + if (innerPropName.indexOf("Lcl ") === 0) innerPropName = innerPropName.replace("Lcl ", "Lcl_"); + if (innerPropType1.indexOf("Lcl ") === 0) innerPropType1 = innerPropType1.replace("Lcl ", "Lcl_"); + if (innerPropType1 === "Color" || innerPropType1 === "ColorRGB" || innerPropType1 === "Vector" || innerPropType1 === "Vector3D" || innerPropType1.indexOf("Lcl_") === 0) { + innerPropValue = [ + subNode.propertyList[4], + subNode.propertyList[5], + subNode.propertyList[6] + ]; + } else { + innerPropValue = subNode.propertyList[4]; + } + node[innerPropName] = { + "type": innerPropType1, + "type2": innerPropType2, + "flag": innerPropFlag, + "value": innerPropValue + }; + } else if (node[subNode.name] === void 0) { + if (typeof subNode.id === "number") { + node[subNode.name] = {}; + node[subNode.name][subNode.id] = subNode; + } else { + node[subNode.name] = subNode; + } + } else { + if (subNode.name === "PoseNode") { + if (!Array.isArray(node[subNode.name])) { + node[subNode.name] = [node[subNode.name]]; + } + node[subNode.name].push(subNode); + } else if (node[subNode.name][subNode.id] === void 0) { + node[subNode.name][subNode.id] = subNode; + } + } + } + parseProperty(reader) { + const type = reader.getString(1); + let length; + switch (type) { + case "C": + return reader.getBoolean(); + case "D": + return reader.getFloat64(); + case "F": + return reader.getFloat32(); + case "I": + return reader.getInt32(); + case "L": + return reader.getInt64(); + case "R": + length = reader.getUint32(); + return reader.getArrayBuffer(length); + case "S": + length = reader.getUint32(); + return reader.getString(length); + case "Y": + return reader.getInt16(); + case "b": + case "c": + case "d": + case "f": + case "i": + case "l": + const arrayLength = reader.getUint32(); + const encoding = reader.getUint32(); + const compressedLength = reader.getUint32(); + if (encoding === 0) { + switch (type) { + case "b": + case "c": + return reader.getBooleanArray(arrayLength); + case "d": + return reader.getFloat64Array(arrayLength); + case "f": + return reader.getFloat32Array(arrayLength); + case "i": + return reader.getInt32Array(arrayLength); + case "l": + return reader.getInt64Array(arrayLength); + } + } + const data = unzlibSync(new Uint8Array(reader.getArrayBuffer(compressedLength))); + const reader2 = new BinaryReader(data.buffer); + switch (type) { + case "b": + case "c": + return reader2.getBooleanArray(arrayLength); + case "d": + return reader2.getFloat64Array(arrayLength); + case "f": + return reader2.getFloat32Array(arrayLength); + case "i": + return reader2.getInt32Array(arrayLength); + case "l": + return reader2.getInt64Array(arrayLength); + } + break; + // cannot happen but is required by the DeepScan + default: + throw new Error("THREE.FBXLoader: Unknown property type " + type); + } + } +}; +var BinaryReader = class { + constructor(buffer, littleEndian) { + this.dv = new DataView(buffer); + this.offset = 0; + this.littleEndian = littleEndian !== void 0 ? littleEndian : true; + this._textDecoder = new TextDecoder(); + } + getOffset() { + return this.offset; + } + size() { + return this.dv.buffer.byteLength; + } + skip(length) { + this.offset += length; + } + // seems like true/false representation depends on exporter. + // true: 1 or 'Y'(=0x59), false: 0 or 'T'(=0x54) + // then sees LSB. + getBoolean() { + return (this.getUint8() & 1) === 1; + } + getBooleanArray(size) { + const a = []; + for (let i = 0; i < size; i++) { + a.push(this.getBoolean()); + } + return a; + } + getUint8() { + const value = this.dv.getUint8(this.offset); + this.offset += 1; + return value; + } + getInt16() { + const value = this.dv.getInt16(this.offset, this.littleEndian); + this.offset += 2; + return value; + } + getInt32() { + const value = this.dv.getInt32(this.offset, this.littleEndian); + this.offset += 4; + return value; + } + getInt32Array(size) { + const a = []; + for (let i = 0; i < size; i++) { + a.push(this.getInt32()); + } + return a; + } + getUint32() { + const value = this.dv.getUint32(this.offset, this.littleEndian); + this.offset += 4; + return value; + } + // JavaScript doesn't support 64-bit integer so calculate this here + // 1 << 32 will return 1 so using multiply operation instead here. + // There's a possibility that this method returns wrong value if the value + // is out of the range between Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER. + // TODO: safely handle 64-bit integer + getInt64() { + let low, high; + if (this.littleEndian) { + low = this.getUint32(); + high = this.getUint32(); + } else { + high = this.getUint32(); + low = this.getUint32(); + } + if (high & 2147483648) { + high = ~high & 4294967295; + low = ~low & 4294967295; + if (low === 4294967295) high = high + 1 & 4294967295; + low = low + 1 & 4294967295; + return -(high * 4294967296 + low); + } + return high * 4294967296 + low; + } + getInt64Array(size) { + const a = []; + for (let i = 0; i < size; i++) { + a.push(this.getInt64()); + } + return a; + } + // Note: see getInt64() comment + getUint64() { + let low, high; + if (this.littleEndian) { + low = this.getUint32(); + high = this.getUint32(); + } else { + high = this.getUint32(); + low = this.getUint32(); + } + return high * 4294967296 + low; + } + getFloat32() { + const value = this.dv.getFloat32(this.offset, this.littleEndian); + this.offset += 4; + return value; + } + getFloat32Array(size) { + const a = []; + for (let i = 0; i < size; i++) { + a.push(this.getFloat32()); + } + return a; + } + getFloat64() { + const value = this.dv.getFloat64(this.offset, this.littleEndian); + this.offset += 8; + return value; + } + getFloat64Array(size) { + const a = []; + for (let i = 0; i < size; i++) { + a.push(this.getFloat64()); + } + return a; + } + getArrayBuffer(size) { + const value = this.dv.buffer.slice(this.offset, this.offset + size); + this.offset += size; + return value; + } + getString(size) { + const start = this.offset; + let a = new Uint8Array(this.dv.buffer, start, size); + this.skip(size); + const nullByte = a.indexOf(0); + if (nullByte >= 0) a = new Uint8Array(this.dv.buffer, start, nullByte); + return this._textDecoder.decode(a); + } +}; +var FBXTree = class { + add(key, val) { + this[key] = val; + } +}; +function isFbxFormatBinary(buffer) { + const CORRECT = "Kaydara FBX Binary \0"; + return buffer.byteLength >= CORRECT.length && CORRECT === convertArrayBufferToString(buffer, 0, CORRECT.length); +} +function isFbxFormatASCII(text) { + const CORRECT = ["K", "a", "y", "d", "a", "r", "a", "\\", "F", "B", "X", "\\", "B", "i", "n", "a", "r", "y", "\\", "\\"]; + let cursor = 0; + function read(offset) { + const result = text[offset - 1]; + text = text.slice(cursor + offset); + cursor++; + return result; + } + for (let i = 0; i < CORRECT.length; ++i) { + const num = read(1); + if (num === CORRECT[i]) { + return false; + } + } + return true; +} +function getFbxVersion(text) { + const versionRegExp = /FBXVersion: (\d+)/; + const match = text.match(versionRegExp); + if (match) { + const version = parseInt(match[1]); + return version; + } + throw new Error("THREE.FBXLoader: Cannot find the version number for the file given."); +} +function convertFBXTimeToSeconds(time) { + return time / 46186158e3; +} +var dataArray = []; +function getData(polygonVertexIndex, polygonIndex, vertexIndex, infoObject) { + let index; + switch (infoObject.mappingType) { + case "ByPolygonVertex": + index = polygonVertexIndex; + break; + case "ByPolygon": + index = polygonIndex; + break; + case "ByVertice": + index = vertexIndex; + break; + case "AllSame": + index = infoObject.indices[0]; + break; + default: + console.warn("THREE.FBXLoader: unknown attribute mapping type " + infoObject.mappingType); + } + if (infoObject.referenceType === "IndexToDirect") index = infoObject.indices[index]; + const from = index * infoObject.dataSize; + const to = from + infoObject.dataSize; + return slice(dataArray, infoObject.buffer, from, to); +} +var tempEuler = new Euler(); +var tempVec = new Vector3(); +function generateTransform(transformData) { + const lTranslationM = new Matrix4(); + const lPreRotationM = new Matrix4(); + const lRotationM = new Matrix4(); + const lPostRotationM = new Matrix4(); + const lScalingM = new Matrix4(); + const lScalingPivotM = new Matrix4(); + const lScalingOffsetM = new Matrix4(); + const lRotationOffsetM = new Matrix4(); + const lRotationPivotM = new Matrix4(); + const lParentGX = new Matrix4(); + const lParentLX = new Matrix4(); + const lGlobalT = new Matrix4(); + const inheritType = transformData.inheritType ? transformData.inheritType : 0; + if (transformData.translation) lTranslationM.setPosition(tempVec.fromArray(transformData.translation)); + if (transformData.preRotation) { + const array = transformData.preRotation.map(MathUtils.degToRad); + array.push(transformData.eulerOrder || Euler.DEFAULT_ORDER); + lPreRotationM.makeRotationFromEuler(tempEuler.fromArray(array)); + } + if (transformData.rotation) { + const array = transformData.rotation.map(MathUtils.degToRad); + array.push(transformData.eulerOrder || Euler.DEFAULT_ORDER); + lRotationM.makeRotationFromEuler(tempEuler.fromArray(array)); + } + if (transformData.postRotation) { + const array = transformData.postRotation.map(MathUtils.degToRad); + array.push(transformData.eulerOrder || Euler.DEFAULT_ORDER); + lPostRotationM.makeRotationFromEuler(tempEuler.fromArray(array)); + lPostRotationM.invert(); + } + if (transformData.scale) lScalingM.scale(tempVec.fromArray(transformData.scale)); + if (transformData.scalingOffset) lScalingOffsetM.setPosition(tempVec.fromArray(transformData.scalingOffset)); + if (transformData.scalingPivot) lScalingPivotM.setPosition(tempVec.fromArray(transformData.scalingPivot)); + if (transformData.rotationOffset) lRotationOffsetM.setPosition(tempVec.fromArray(transformData.rotationOffset)); + if (transformData.rotationPivot) lRotationPivotM.setPosition(tempVec.fromArray(transformData.rotationPivot)); + if (transformData.parentMatrixWorld) { + lParentLX.copy(transformData.parentMatrix); + lParentGX.copy(transformData.parentMatrixWorld); + } + const lLRM = lPreRotationM.clone().multiply(lRotationM).multiply(lPostRotationM); + const lParentGRM = new Matrix4(); + lParentGRM.extractRotation(lParentGX); + const lParentTM = new Matrix4(); + lParentTM.copyPosition(lParentGX); + const lParentGRSM = lParentTM.clone().invert().multiply(lParentGX); + const lParentGSM = lParentGRM.clone().invert().multiply(lParentGRSM); + const lLSM = lScalingM; + const lGlobalRS = new Matrix4(); + if (inheritType === 0) { + lGlobalRS.copy(lParentGRM).multiply(lLRM).multiply(lParentGSM).multiply(lLSM); + } else if (inheritType === 1) { + lGlobalRS.copy(lParentGRM).multiply(lParentGSM).multiply(lLRM).multiply(lLSM); + } else { + const lParentLSM = new Matrix4().scale(new Vector3().setFromMatrixScale(lParentLX)); + const lParentLSM_inv = lParentLSM.clone().invert(); + const lParentGSM_noLocal = lParentGSM.clone().multiply(lParentLSM_inv); + lGlobalRS.copy(lParentGRM).multiply(lLRM).multiply(lParentGSM_noLocal).multiply(lLSM); + } + const lRotationPivotM_inv = lRotationPivotM.clone().invert(); + const lScalingPivotM_inv = lScalingPivotM.clone().invert(); + let lTransform = lTranslationM.clone().multiply(lRotationOffsetM).multiply(lRotationPivotM).multiply(lPreRotationM).multiply(lRotationM).multiply(lPostRotationM).multiply(lRotationPivotM_inv).multiply(lScalingOffsetM).multiply(lScalingPivotM).multiply(lScalingM).multiply(lScalingPivotM_inv); + const lLocalTWithAllPivotAndOffsetInfo = new Matrix4().copyPosition(lTransform); + const lGlobalTranslation = lParentGX.clone().multiply(lLocalTWithAllPivotAndOffsetInfo); + lGlobalT.copyPosition(lGlobalTranslation); + lTransform = lGlobalT.clone().multiply(lGlobalRS); + lTransform.premultiply(lParentGX.invert()); + return lTransform; +} +function getEulerOrder(order) { + order = order || 0; + const enums = [ + "ZYX", + // -> XYZ extrinsic + "YZX", + // -> XZY extrinsic + "XZY", + // -> YZX extrinsic + "ZXY", + // -> YXZ extrinsic + "YXZ", + // -> ZXY extrinsic + "XYZ" + // -> ZYX extrinsic + //'SphericXYZ', // not possible to support + ]; + if (order === 6) { + console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."); + return enums[0]; + } + return enums[order]; +} +function parseNumberArray(value) { + const array = value.split(",").map(function(val) { + return parseFloat(val); + }); + return array; +} +function convertArrayBufferToString(buffer, from, to) { + if (from === void 0) from = 0; + if (to === void 0) to = buffer.byteLength; + return new TextDecoder().decode(new Uint8Array(buffer, from, to)); +} +function append(a, b) { + for (let i = 0, j = a.length, l = b.length; i < l; i++, j++) { + a[j] = b[i]; + } +} +function slice(a, b, from, to) { + for (let i = from, j = 0; i < to; i++, j++) { + a[j] = b[i]; + } + return a; +} + +// ../../node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +function toTrianglesDrawMode(geometry, drawMode) { + if (drawMode === TrianglesDrawMode) { + console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."); + return geometry; + } + if (drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode) { + let index = geometry.getIndex(); + if (index === null) { + const indices = []; + const position = geometry.getAttribute("position"); + if (position !== void 0) { + for (let i = 0; i < position.count; i++) { + indices.push(i); + } + geometry.setIndex(indices); + index = geometry.getIndex(); + } else { + console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."); + return geometry; + } + } + const numberOfTriangles = index.count - 2; + const newIndices = []; + if (drawMode === TriangleFanDrawMode) { + for (let i = 1; i <= numberOfTriangles; i++) { + newIndices.push(index.getX(0)); + newIndices.push(index.getX(i)); + newIndices.push(index.getX(i + 1)); + } + } else { + for (let i = 0; i < numberOfTriangles; i++) { + if (i % 2 === 0) { + newIndices.push(index.getX(i)); + newIndices.push(index.getX(i + 1)); + newIndices.push(index.getX(i + 2)); + } else { + newIndices.push(index.getX(i + 2)); + newIndices.push(index.getX(i + 1)); + newIndices.push(index.getX(i)); + } + } + } + if (newIndices.length / 3 !== numberOfTriangles) { + console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles."); + } + const newGeometry = geometry.clone(); + newGeometry.setIndex(newIndices); + newGeometry.clearGroups(); + return newGeometry; + } else { + console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:", drawMode); + return geometry; + } +} + +// ../../node_modules/three/examples/jsm/loaders/GLTFLoader.js +var GLTFLoader = class extends Loader { + constructor(manager) { + super(manager); + this.dracoLoader = null; + this.ktx2Loader = null; + this.meshoptDecoder = null; + this.pluginCallbacks = []; + this.register(function(parser) { + return new GLTFMaterialsClearcoatExtension(parser); + }); + this.register(function(parser) { + return new GLTFTextureBasisUExtension(parser); + }); + this.register(function(parser) { + return new GLTFTextureWebPExtension(parser); + }); + this.register(function(parser) { + return new GLTFTextureAVIFExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsSheenExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsTransmissionExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsVolumeExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsIorExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsEmissiveStrengthExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsSpecularExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsIridescenceExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsAnisotropyExtension(parser); + }); + this.register(function(parser) { + return new GLTFMaterialsBumpExtension(parser); + }); + this.register(function(parser) { + return new GLTFLightsExtension(parser); + }); + this.register(function(parser) { + return new GLTFMeshoptCompression(parser); + }); + this.register(function(parser) { + return new GLTFMeshGpuInstancing(parser); + }); + } + load(url, onLoad, onProgress, onError) { + const scope = this; + let resourcePath; + if (this.resourcePath !== "") { + resourcePath = this.resourcePath; + } else if (this.path !== "") { + const relativeUrl = LoaderUtils.extractUrlBase(url); + resourcePath = LoaderUtils.resolveURL(relativeUrl, this.path); + } else { + resourcePath = LoaderUtils.extractUrlBase(url); + } + this.manager.itemStart(url); + const _onError = function(e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + scope.manager.itemError(url); + scope.manager.itemEnd(url); + }; + const loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setResponseType("arraybuffer"); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function(data) { + try { + scope.parse(data, resourcePath, function(gltf) { + onLoad(gltf); + scope.manager.itemEnd(url); + }, _onError); + } catch (e) { + _onError(e); + } + }, onProgress, _onError); + } + setDRACOLoader(dracoLoader) { + this.dracoLoader = dracoLoader; + return this; + } + setDDSLoader() { + throw new Error( + 'THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".' + ); + } + setKTX2Loader(ktx2Loader) { + this.ktx2Loader = ktx2Loader; + return this; + } + setMeshoptDecoder(meshoptDecoder) { + this.meshoptDecoder = meshoptDecoder; + return this; + } + register(callback) { + if (this.pluginCallbacks.indexOf(callback) === -1) { + this.pluginCallbacks.push(callback); + } + return this; + } + unregister(callback) { + if (this.pluginCallbacks.indexOf(callback) !== -1) { + this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1); + } + return this; + } + parse(data, path, onLoad, onError) { + let json; + const extensions = {}; + const plugins = {}; + const textDecoder2 = new TextDecoder(); + if (typeof data === "string") { + json = JSON.parse(data); + } else if (data instanceof ArrayBuffer) { + const magic = textDecoder2.decode(new Uint8Array(data, 0, 4)); + if (magic === BINARY_EXTENSION_HEADER_MAGIC) { + try { + extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data); + } catch (error) { + if (onError) onError(error); + return; + } + json = JSON.parse(extensions[EXTENSIONS.KHR_BINARY_GLTF].content); + } else { + json = JSON.parse(textDecoder2.decode(data)); + } + } else { + json = data; + } + if (json.asset === void 0 || json.asset.version[0] < 2) { + if (onError) onError(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")); + return; + } + const parser = new GLTFParser(json, { + path: path || this.resourcePath || "", + crossOrigin: this.crossOrigin, + requestHeader: this.requestHeader, + manager: this.manager, + ktx2Loader: this.ktx2Loader, + meshoptDecoder: this.meshoptDecoder + }); + parser.fileLoader.setRequestHeader(this.requestHeader); + for (let i = 0; i < this.pluginCallbacks.length; i++) { + const plugin = this.pluginCallbacks[i](parser); + if (!plugin.name) console.error("THREE.GLTFLoader: Invalid plugin found: missing name"); + plugins[plugin.name] = plugin; + extensions[plugin.name] = true; + } + if (json.extensionsUsed) { + for (let i = 0; i < json.extensionsUsed.length; ++i) { + const extensionName = json.extensionsUsed[i]; + const extensionsRequired = json.extensionsRequired || []; + switch (extensionName) { + case EXTENSIONS.KHR_MATERIALS_UNLIT: + extensions[extensionName] = new GLTFMaterialsUnlitExtension(); + break; + case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: + extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader); + break; + case EXTENSIONS.KHR_TEXTURE_TRANSFORM: + extensions[extensionName] = new GLTFTextureTransformExtension(); + break; + case EXTENSIONS.KHR_MESH_QUANTIZATION: + extensions[extensionName] = new GLTFMeshQuantizationExtension(); + break; + default: + if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === void 0) { + console.warn('THREE.GLTFLoader: Unknown extension "' + extensionName + '".'); + } + } + } + } + parser.setExtensions(extensions); + parser.setPlugins(plugins); + parser.parse(onLoad, onError); + } + parseAsync(data, path) { + const scope = this; + return new Promise(function(resolve, reject) { + scope.parse(data, path, resolve, reject); + }); + } +}; +function GLTFRegistry() { + let objects = {}; + return { + get: function(key) { + return objects[key]; + }, + add: function(key, object) { + objects[key] = object; + }, + remove: function(key) { + delete objects[key]; + }, + removeAll: function() { + objects = {}; + } + }; +} +var EXTENSIONS = { + KHR_BINARY_GLTF: "KHR_binary_glTF", + KHR_DRACO_MESH_COMPRESSION: "KHR_draco_mesh_compression", + KHR_LIGHTS_PUNCTUAL: "KHR_lights_punctual", + KHR_MATERIALS_CLEARCOAT: "KHR_materials_clearcoat", + KHR_MATERIALS_IOR: "KHR_materials_ior", + KHR_MATERIALS_SHEEN: "KHR_materials_sheen", + KHR_MATERIALS_SPECULAR: "KHR_materials_specular", + KHR_MATERIALS_TRANSMISSION: "KHR_materials_transmission", + KHR_MATERIALS_IRIDESCENCE: "KHR_materials_iridescence", + KHR_MATERIALS_ANISOTROPY: "KHR_materials_anisotropy", + KHR_MATERIALS_UNLIT: "KHR_materials_unlit", + KHR_MATERIALS_VOLUME: "KHR_materials_volume", + KHR_TEXTURE_BASISU: "KHR_texture_basisu", + KHR_TEXTURE_TRANSFORM: "KHR_texture_transform", + KHR_MESH_QUANTIZATION: "KHR_mesh_quantization", + KHR_MATERIALS_EMISSIVE_STRENGTH: "KHR_materials_emissive_strength", + EXT_MATERIALS_BUMP: "EXT_materials_bump", + EXT_TEXTURE_WEBP: "EXT_texture_webp", + EXT_TEXTURE_AVIF: "EXT_texture_avif", + EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression", + EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing" +}; +var GLTFLightsExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; + this.cache = { refs: {}, uses: {} }; + } + _markDefs() { + const parser = this.parser; + const nodeDefs = this.parser.json.nodes || []; + for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) { + const nodeDef = nodeDefs[nodeIndex]; + if (nodeDef.extensions && nodeDef.extensions[this.name] && nodeDef.extensions[this.name].light !== void 0) { + parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light); + } + } + } + _loadLight(lightIndex) { + const parser = this.parser; + const cacheKey = "light:" + lightIndex; + let dependency = parser.cache.get(cacheKey); + if (dependency) return dependency; + const json = parser.json; + const extensions = json.extensions && json.extensions[this.name] || {}; + const lightDefs = extensions.lights || []; + const lightDef = lightDefs[lightIndex]; + let lightNode; + const color = new Color(16777215); + if (lightDef.color !== void 0) color.setRGB(lightDef.color[0], lightDef.color[1], lightDef.color[2], LinearSRGBColorSpace); + const range = lightDef.range !== void 0 ? lightDef.range : 0; + switch (lightDef.type) { + case "directional": + lightNode = new DirectionalLight(color); + lightNode.target.position.set(0, 0, -1); + lightNode.add(lightNode.target); + break; + case "point": + lightNode = new PointLight(color); + lightNode.distance = range; + break; + case "spot": + lightNode = new SpotLight(color); + lightNode.distance = range; + lightDef.spot = lightDef.spot || {}; + lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== void 0 ? lightDef.spot.innerConeAngle : 0; + lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== void 0 ? lightDef.spot.outerConeAngle : Math.PI / 4; + lightNode.angle = lightDef.spot.outerConeAngle; + lightNode.penumbra = 1 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; + lightNode.target.position.set(0, 0, -1); + lightNode.add(lightNode.target); + break; + default: + throw new Error("THREE.GLTFLoader: Unexpected light type: " + lightDef.type); + } + lightNode.position.set(0, 0, 0); + lightNode.decay = 2; + assignExtrasToUserData(lightNode, lightDef); + if (lightDef.intensity !== void 0) lightNode.intensity = lightDef.intensity; + lightNode.name = parser.createUniqueName(lightDef.name || "light_" + lightIndex); + dependency = Promise.resolve(lightNode); + parser.cache.add(cacheKey, dependency); + return dependency; + } + getDependency(type, index) { + if (type !== "light") return; + return this._loadLight(index); + } + createNodeAttachment(nodeIndex) { + const self2 = this; + const parser = this.parser; + const json = parser.json; + const nodeDef = json.nodes[nodeIndex]; + const lightDef = nodeDef.extensions && nodeDef.extensions[this.name] || {}; + const lightIndex = lightDef.light; + if (lightIndex === void 0) return null; + return this._loadLight(lightIndex).then(function(light) { + return parser._getNodeRef(self2.cache, lightIndex, light); + }); + } +}; +var GLTFMaterialsUnlitExtension = class { + constructor() { + this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; + } + getMaterialType() { + return MeshBasicMaterial; + } + extendParams(materialParams, materialDef, parser) { + const pending = []; + materialParams.color = new Color(1, 1, 1); + materialParams.opacity = 1; + const metallicRoughness = materialDef.pbrMetallicRoughness; + if (metallicRoughness) { + if (Array.isArray(metallicRoughness.baseColorFactor)) { + const array = metallicRoughness.baseColorFactor; + materialParams.color.setRGB(array[0], array[1], array[2], LinearSRGBColorSpace); + materialParams.opacity = array[3]; + } + if (metallicRoughness.baseColorTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "map", metallicRoughness.baseColorTexture, SRGBColorSpace)); + } + } + return Promise.all(pending); + } +}; +var GLTFMaterialsEmissiveStrengthExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const emissiveStrength = materialDef.extensions[this.name].emissiveStrength; + if (emissiveStrength !== void 0) { + materialParams.emissiveIntensity = emissiveStrength; + } + return Promise.resolve(); + } +}; +var GLTFMaterialsClearcoatExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + if (extension.clearcoatFactor !== void 0) { + materialParams.clearcoat = extension.clearcoatFactor; + } + if (extension.clearcoatTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "clearcoatMap", extension.clearcoatTexture)); + } + if (extension.clearcoatRoughnessFactor !== void 0) { + materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor; + } + if (extension.clearcoatRoughnessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "clearcoatRoughnessMap", extension.clearcoatRoughnessTexture)); + } + if (extension.clearcoatNormalTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "clearcoatNormalMap", extension.clearcoatNormalTexture)); + if (extension.clearcoatNormalTexture.scale !== void 0) { + const scale = extension.clearcoatNormalTexture.scale; + materialParams.clearcoatNormalScale = new Vector2(scale, scale); + } + } + return Promise.all(pending); + } +}; +var GLTFMaterialsIridescenceExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + if (extension.iridescenceFactor !== void 0) { + materialParams.iridescence = extension.iridescenceFactor; + } + if (extension.iridescenceTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "iridescenceMap", extension.iridescenceTexture)); + } + if (extension.iridescenceIor !== void 0) { + materialParams.iridescenceIOR = extension.iridescenceIor; + } + if (materialParams.iridescenceThicknessRange === void 0) { + materialParams.iridescenceThicknessRange = [100, 400]; + } + if (extension.iridescenceThicknessMinimum !== void 0) { + materialParams.iridescenceThicknessRange[0] = extension.iridescenceThicknessMinimum; + } + if (extension.iridescenceThicknessMaximum !== void 0) { + materialParams.iridescenceThicknessRange[1] = extension.iridescenceThicknessMaximum; + } + if (extension.iridescenceThicknessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "iridescenceThicknessMap", extension.iridescenceThicknessTexture)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsSheenExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_SHEEN; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + materialParams.sheenColor = new Color(0, 0, 0); + materialParams.sheenRoughness = 0; + materialParams.sheen = 1; + const extension = materialDef.extensions[this.name]; + if (extension.sheenColorFactor !== void 0) { + const colorFactor = extension.sheenColorFactor; + materialParams.sheenColor.setRGB(colorFactor[0], colorFactor[1], colorFactor[2], LinearSRGBColorSpace); + } + if (extension.sheenRoughnessFactor !== void 0) { + materialParams.sheenRoughness = extension.sheenRoughnessFactor; + } + if (extension.sheenColorTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "sheenColorMap", extension.sheenColorTexture, SRGBColorSpace)); + } + if (extension.sheenRoughnessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "sheenRoughnessMap", extension.sheenRoughnessTexture)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsTransmissionExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + if (extension.transmissionFactor !== void 0) { + materialParams.transmission = extension.transmissionFactor; + } + if (extension.transmissionTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "transmissionMap", extension.transmissionTexture)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsVolumeExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_VOLUME; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + materialParams.thickness = extension.thicknessFactor !== void 0 ? extension.thicknessFactor : 0; + if (extension.thicknessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "thicknessMap", extension.thicknessTexture)); + } + materialParams.attenuationDistance = extension.attenuationDistance || Infinity; + const colorArray = extension.attenuationColor || [1, 1, 1]; + materialParams.attenuationColor = new Color().setRGB(colorArray[0], colorArray[1], colorArray[2], LinearSRGBColorSpace); + return Promise.all(pending); + } +}; +var GLTFMaterialsIorExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_IOR; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const extension = materialDef.extensions[this.name]; + materialParams.ior = extension.ior !== void 0 ? extension.ior : 1.5; + return Promise.resolve(); + } +}; +var GLTFMaterialsSpecularExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + materialParams.specularIntensity = extension.specularFactor !== void 0 ? extension.specularFactor : 1; + if (extension.specularTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "specularIntensityMap", extension.specularTexture)); + } + const colorArray = extension.specularColorFactor || [1, 1, 1]; + materialParams.specularColor = new Color().setRGB(colorArray[0], colorArray[1], colorArray[2], LinearSRGBColorSpace); + if (extension.specularColorTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "specularColorMap", extension.specularColorTexture, SRGBColorSpace)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsBumpExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.EXT_MATERIALS_BUMP; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + materialParams.bumpScale = extension.bumpFactor !== void 0 ? extension.bumpFactor : 1; + if (extension.bumpTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "bumpMap", extension.bumpTexture)); + } + return Promise.all(pending); + } +}; +var GLTFMaterialsAnisotropyExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY; + } + getMaterialType(materialIndex) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) return null; + return MeshPhysicalMaterial; + } + extendMaterialParams(materialIndex, materialParams) { + const parser = this.parser; + const materialDef = parser.json.materials[materialIndex]; + if (!materialDef.extensions || !materialDef.extensions[this.name]) { + return Promise.resolve(); + } + const pending = []; + const extension = materialDef.extensions[this.name]; + if (extension.anisotropyStrength !== void 0) { + materialParams.anisotropy = extension.anisotropyStrength; + } + if (extension.anisotropyRotation !== void 0) { + materialParams.anisotropyRotation = extension.anisotropyRotation; + } + if (extension.anisotropyTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "anisotropyMap", extension.anisotropyTexture)); + } + return Promise.all(pending); + } +}; +var GLTFTextureBasisUExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.KHR_TEXTURE_BASISU; + } + loadTexture(textureIndex) { + const parser = this.parser; + const json = parser.json; + const textureDef = json.textures[textureIndex]; + if (!textureDef.extensions || !textureDef.extensions[this.name]) { + return null; + } + const extension = textureDef.extensions[this.name]; + const loader = parser.options.ktx2Loader; + if (!loader) { + if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) { + throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures"); + } else { + return null; + } + } + return parser.loadTextureImage(textureIndex, extension.source, loader); + } +}; +var GLTFTextureWebPExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.EXT_TEXTURE_WEBP; + this.isSupported = null; + } + loadTexture(textureIndex) { + const name = this.name; + const parser = this.parser; + const json = parser.json; + const textureDef = json.textures[textureIndex]; + if (!textureDef.extensions || !textureDef.extensions[name]) { + return null; + } + const extension = textureDef.extensions[name]; + const source = json.images[extension.source]; + let loader = parser.textureLoader; + if (source.uri) { + const handler = parser.options.manager.getHandler(source.uri); + if (handler !== null) loader = handler; + } + return this.detectSupport().then(function(isSupported) { + if (isSupported) return parser.loadTextureImage(textureIndex, extension.source, loader); + if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) { + throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported."); + } + return parser.loadTexture(textureIndex); + }); + } + detectSupport() { + if (!this.isSupported) { + this.isSupported = new Promise(function(resolve) { + const image = new Image(); + image.src = "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"; + image.onload = image.onerror = function() { + resolve(image.height === 1); + }; + }); + } + return this.isSupported; + } +}; +var GLTFTextureAVIFExtension = class { + constructor(parser) { + this.parser = parser; + this.name = EXTENSIONS.EXT_TEXTURE_AVIF; + this.isSupported = null; + } + loadTexture(textureIndex) { + const name = this.name; + const parser = this.parser; + const json = parser.json; + const textureDef = json.textures[textureIndex]; + if (!textureDef.extensions || !textureDef.extensions[name]) { + return null; + } + const extension = textureDef.extensions[name]; + const source = json.images[extension.source]; + let loader = parser.textureLoader; + if (source.uri) { + const handler = parser.options.manager.getHandler(source.uri); + if (handler !== null) loader = handler; + } + return this.detectSupport().then(function(isSupported) { + if (isSupported) return parser.loadTextureImage(textureIndex, extension.source, loader); + if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) { + throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported."); + } + return parser.loadTexture(textureIndex); + }); + } + detectSupport() { + if (!this.isSupported) { + this.isSupported = new Promise(function(resolve) { + const image = new Image(); + image.src = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI="; + image.onload = image.onerror = function() { + resolve(image.height === 1); + }; + }); + } + return this.isSupported; + } +}; +var GLTFMeshoptCompression = class { + constructor(parser) { + this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION; + this.parser = parser; + } + loadBufferView(index) { + const json = this.parser.json; + const bufferView = json.bufferViews[index]; + if (bufferView.extensions && bufferView.extensions[this.name]) { + const extensionDef = bufferView.extensions[this.name]; + const buffer = this.parser.getDependency("buffer", extensionDef.buffer); + const decoder = this.parser.options.meshoptDecoder; + if (!decoder || !decoder.supported) { + if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) { + throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files"); + } else { + return null; + } + } + return buffer.then(function(res) { + const byteOffset = extensionDef.byteOffset || 0; + const byteLength = extensionDef.byteLength || 0; + const count = extensionDef.count; + const stride = extensionDef.byteStride; + const source = new Uint8Array(res, byteOffset, byteLength); + if (decoder.decodeGltfBufferAsync) { + return decoder.decodeGltfBufferAsync(count, stride, source, extensionDef.mode, extensionDef.filter).then(function(res2) { + return res2.buffer; + }); + } else { + return decoder.ready.then(function() { + const result = new ArrayBuffer(count * stride); + decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter); + return result; + }); + } + }); + } else { + return null; + } + } +}; +var GLTFMeshGpuInstancing = class { + constructor(parser) { + this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING; + this.parser = parser; + } + createNodeMesh(nodeIndex) { + const json = this.parser.json; + const nodeDef = json.nodes[nodeIndex]; + if (!nodeDef.extensions || !nodeDef.extensions[this.name] || nodeDef.mesh === void 0) { + return null; + } + const meshDef = json.meshes[nodeDef.mesh]; + for (const primitive of meshDef.primitives) { + if (primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && primitive.mode !== void 0) { + return null; + } + } + const extensionDef = nodeDef.extensions[this.name]; + const attributesDef = extensionDef.attributes; + const pending = []; + const attributes = {}; + for (const key in attributesDef) { + pending.push(this.parser.getDependency("accessor", attributesDef[key]).then((accessor) => { + attributes[key] = accessor; + return attributes[key]; + })); + } + if (pending.length < 1) { + return null; + } + pending.push(this.parser.createNodeMesh(nodeIndex)); + return Promise.all(pending).then((results) => { + const nodeObject = results.pop(); + const meshes = nodeObject.isGroup ? nodeObject.children : [nodeObject]; + const count = results[0].count; + const instancedMeshes = []; + for (const mesh of meshes) { + const m = new Matrix4(); + const p = new Vector3(); + const q = new Quaternion(); + const s = new Vector3(1, 1, 1); + const instancedMesh = new InstancedMesh(mesh.geometry, mesh.material, count); + for (let i = 0; i < count; i++) { + if (attributes.TRANSLATION) { + p.fromBufferAttribute(attributes.TRANSLATION, i); + } + if (attributes.ROTATION) { + q.fromBufferAttribute(attributes.ROTATION, i); + } + if (attributes.SCALE) { + s.fromBufferAttribute(attributes.SCALE, i); + } + instancedMesh.setMatrixAt(i, m.compose(p, q, s)); + } + for (const attributeName in attributes) { + if (attributeName === "_COLOR_0") { + const attr = attributes[attributeName]; + instancedMesh.instanceColor = new InstancedBufferAttribute(attr.array, attr.itemSize, attr.normalized); + } else if (attributeName !== "TRANSLATION" && attributeName !== "ROTATION" && attributeName !== "SCALE") { + mesh.geometry.setAttribute(attributeName, attributes[attributeName]); + } + } + Object3D.prototype.copy.call(instancedMesh, mesh); + this.parser.assignFinalMaterial(instancedMesh); + instancedMeshes.push(instancedMesh); + } + if (nodeObject.isGroup) { + nodeObject.clear(); + nodeObject.add(...instancedMeshes); + return nodeObject; + } + return instancedMeshes[0]; + }); + } +}; +var BINARY_EXTENSION_HEADER_MAGIC = "glTF"; +var BINARY_EXTENSION_HEADER_LENGTH = 12; +var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 1313821514, BIN: 5130562 }; +var GLTFBinaryExtension = class { + constructor(data) { + this.name = EXTENSIONS.KHR_BINARY_GLTF; + this.content = null; + this.body = null; + const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH); + const textDecoder2 = new TextDecoder(); + this.header = { + magic: textDecoder2.decode(new Uint8Array(data.slice(0, 4))), + version: headerView.getUint32(4, true), + length: headerView.getUint32(8, true) + }; + if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) { + throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header."); + } else if (this.header.version < 2) { + throw new Error("THREE.GLTFLoader: Legacy binary file detected."); + } + const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH; + const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH); + let chunkIndex = 0; + while (chunkIndex < chunkContentsLength) { + const chunkLength = chunkView.getUint32(chunkIndex, true); + chunkIndex += 4; + const chunkType = chunkView.getUint32(chunkIndex, true); + chunkIndex += 4; + if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) { + const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength); + this.content = textDecoder2.decode(contentArray); + } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) { + const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; + this.body = data.slice(byteOffset, byteOffset + chunkLength); + } + chunkIndex += chunkLength; + } + if (this.content === null) { + throw new Error("THREE.GLTFLoader: JSON content not found."); + } + } +}; +var GLTFDracoMeshCompressionExtension = class { + constructor(json, dracoLoader) { + if (!dracoLoader) { + throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided."); + } + this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; + this.json = json; + this.dracoLoader = dracoLoader; + this.dracoLoader.preload(); + } + decodePrimitive(primitive, parser) { + const json = this.json; + const dracoLoader = this.dracoLoader; + const bufferViewIndex = primitive.extensions[this.name].bufferView; + const gltfAttributeMap = primitive.extensions[this.name].attributes; + const threeAttributeMap = {}; + const attributeNormalizedMap = {}; + const attributeTypeMap = {}; + for (const attributeName in gltfAttributeMap) { + const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase(); + threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName]; + } + for (const attributeName in primitive.attributes) { + const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase(); + if (gltfAttributeMap[attributeName] !== void 0) { + const accessorDef = json.accessors[primitive.attributes[attributeName]]; + const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; + attributeTypeMap[threeAttributeName] = componentType.name; + attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true; + } + } + return parser.getDependency("bufferView", bufferViewIndex).then(function(bufferView) { + return new Promise(function(resolve, reject) { + dracoLoader.decodeDracoFile(bufferView, function(geometry) { + for (const attributeName in geometry.attributes) { + const attribute = geometry.attributes[attributeName]; + const normalized = attributeNormalizedMap[attributeName]; + if (normalized !== void 0) attribute.normalized = normalized; + } + resolve(geometry); + }, threeAttributeMap, attributeTypeMap, LinearSRGBColorSpace, reject); + }); + }); + } +}; +var GLTFTextureTransformExtension = class { + constructor() { + this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; + } + extendTexture(texture, transform) { + if ((transform.texCoord === void 0 || transform.texCoord === texture.channel) && transform.offset === void 0 && transform.rotation === void 0 && transform.scale === void 0) { + return texture; + } + texture = texture.clone(); + if (transform.texCoord !== void 0) { + texture.channel = transform.texCoord; + } + if (transform.offset !== void 0) { + texture.offset.fromArray(transform.offset); + } + if (transform.rotation !== void 0) { + texture.rotation = transform.rotation; + } + if (transform.scale !== void 0) { + texture.repeat.fromArray(transform.scale); + } + texture.needsUpdate = true; + return texture; + } +}; +var GLTFMeshQuantizationExtension = class { + constructor() { + this.name = EXTENSIONS.KHR_MESH_QUANTIZATION; + } +}; +var GLTFCubicSplineInterpolant = class extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + } + copySampleValue_(index) { + const result = this.resultBuffer, values = this.sampleValues, valueSize = this.valueSize, offset = index * valueSize * 3 + valueSize; + for (let i = 0; i !== valueSize; i++) { + result[i] = values[offset + i]; + } + return result; + } + interpolate_(i1, t0, t, t1) { + const result = this.resultBuffer; + const values = this.sampleValues; + const stride = this.valueSize; + const stride2 = stride * 2; + const stride3 = stride * 3; + const td2 = t1 - t0; + const p = (t - t0) / td2; + const pp = p * p; + const ppp = pp * p; + const offset1 = i1 * stride3; + const offset0 = offset1 - stride3; + const s2 = -2 * ppp + 3 * pp; + const s3 = ppp - pp; + const s0 = 1 - s2; + const s1 = s3 - pp + p; + for (let i = 0; i !== stride; i++) { + const p0 = values[offset0 + i + stride]; + const m0 = values[offset0 + i + stride2] * td2; + const p1 = values[offset1 + i + stride]; + const m1 = values[offset1 + i] * td2; + result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; + } + return result; + } +}; +var _q = new Quaternion(); +var GLTFCubicSplineQuaternionInterpolant = class extends GLTFCubicSplineInterpolant { + interpolate_(i1, t0, t, t1) { + const result = super.interpolate_(i1, t0, t, t1); + _q.fromArray(result).normalize().toArray(result); + return result; + } +}; +var WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123 +}; +var WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array +}; +var WEBGL_FILTERS = { + 9728: NearestFilter, + 9729: LinearFilter, + 9984: NearestMipmapNearestFilter, + 9985: LinearMipmapNearestFilter, + 9986: NearestMipmapLinearFilter, + 9987: LinearMipmapLinearFilter +}; +var WEBGL_WRAPPINGS = { + 33071: ClampToEdgeWrapping, + 33648: MirroredRepeatWrapping, + 10497: RepeatWrapping +}; +var WEBGL_TYPE_SIZES = { + "SCALAR": 1, + "VEC2": 2, + "VEC3": 3, + "VEC4": 4, + "MAT2": 4, + "MAT3": 9, + "MAT4": 16 +}; +var ATTRIBUTES = { + POSITION: "position", + NORMAL: "normal", + TANGENT: "tangent", + TEXCOORD_0: "uv", + TEXCOORD_1: "uv1", + TEXCOORD_2: "uv2", + TEXCOORD_3: "uv3", + COLOR_0: "color", + WEIGHTS_0: "skinWeight", + JOINTS_0: "skinIndex" +}; +var PATH_PROPERTIES = { + scale: "scale", + translation: "position", + rotation: "quaternion", + weights: "morphTargetInfluences" +}; +var INTERPOLATION = { + CUBICSPLINE: void 0, + // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each + // keyframe track will be initialized with a default interpolation type, then modified. + LINEAR: InterpolateLinear, + STEP: InterpolateDiscrete +}; +var ALPHA_MODES = { + OPAQUE: "OPAQUE", + MASK: "MASK", + BLEND: "BLEND" +}; +function createDefaultMaterial(cache) { + if (cache["DefaultMaterial"] === void 0) { + cache["DefaultMaterial"] = new MeshStandardMaterial({ + color: 16777215, + emissive: 0, + metalness: 1, + roughness: 1, + transparent: false, + depthTest: true, + side: FrontSide + }); + } + return cache["DefaultMaterial"]; +} +function addUnknownExtensionsToUserData(knownExtensions, object, objectDef) { + for (const name in objectDef.extensions) { + if (knownExtensions[name] === void 0) { + object.userData.gltfExtensions = object.userData.gltfExtensions || {}; + object.userData.gltfExtensions[name] = objectDef.extensions[name]; + } + } +} +function assignExtrasToUserData(object, gltfDef) { + if (gltfDef.extras !== void 0) { + if (typeof gltfDef.extras === "object") { + Object.assign(object.userData, gltfDef.extras); + } else { + console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + gltfDef.extras); + } + } +} +function addMorphTargets(geometry, targets, parser) { + let hasMorphPosition = false; + let hasMorphNormal = false; + let hasMorphColor = false; + for (let i = 0, il = targets.length; i < il; i++) { + const target = targets[i]; + if (target.POSITION !== void 0) hasMorphPosition = true; + if (target.NORMAL !== void 0) hasMorphNormal = true; + if (target.COLOR_0 !== void 0) hasMorphColor = true; + if (hasMorphPosition && hasMorphNormal && hasMorphColor) break; + } + if (!hasMorphPosition && !hasMorphNormal && !hasMorphColor) return Promise.resolve(geometry); + const pendingPositionAccessors = []; + const pendingNormalAccessors = []; + const pendingColorAccessors = []; + for (let i = 0, il = targets.length; i < il; i++) { + const target = targets[i]; + if (hasMorphPosition) { + const pendingAccessor = target.POSITION !== void 0 ? parser.getDependency("accessor", target.POSITION) : geometry.attributes.position; + pendingPositionAccessors.push(pendingAccessor); + } + if (hasMorphNormal) { + const pendingAccessor = target.NORMAL !== void 0 ? parser.getDependency("accessor", target.NORMAL) : geometry.attributes.normal; + pendingNormalAccessors.push(pendingAccessor); + } + if (hasMorphColor) { + const pendingAccessor = target.COLOR_0 !== void 0 ? parser.getDependency("accessor", target.COLOR_0) : geometry.attributes.color; + pendingColorAccessors.push(pendingAccessor); + } + } + return Promise.all([ + Promise.all(pendingPositionAccessors), + Promise.all(pendingNormalAccessors), + Promise.all(pendingColorAccessors) + ]).then(function(accessors) { + const morphPositions = accessors[0]; + const morphNormals = accessors[1]; + const morphColors = accessors[2]; + if (hasMorphPosition) geometry.morphAttributes.position = morphPositions; + if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals; + if (hasMorphColor) geometry.morphAttributes.color = morphColors; + geometry.morphTargetsRelative = true; + return geometry; + }); +} +function updateMorphTargets(mesh, meshDef) { + mesh.updateMorphTargets(); + if (meshDef.weights !== void 0) { + for (let i = 0, il = meshDef.weights.length; i < il; i++) { + mesh.morphTargetInfluences[i] = meshDef.weights[i]; + } + } + if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) { + const targetNames = meshDef.extras.targetNames; + if (mesh.morphTargetInfluences.length === targetNames.length) { + mesh.morphTargetDictionary = {}; + for (let i = 0, il = targetNames.length; i < il; i++) { + mesh.morphTargetDictionary[targetNames[i]] = i; + } + } else { + console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names."); + } + } +} +function createPrimitiveKey(primitiveDef) { + let geometryKey; + const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]; + if (dracoExtension) { + geometryKey = "draco:" + dracoExtension.bufferView + ":" + dracoExtension.indices + ":" + createAttributesKey(dracoExtension.attributes); + } else { + geometryKey = primitiveDef.indices + ":" + createAttributesKey(primitiveDef.attributes) + ":" + primitiveDef.mode; + } + if (primitiveDef.targets !== void 0) { + for (let i = 0, il = primitiveDef.targets.length; i < il; i++) { + geometryKey += ":" + createAttributesKey(primitiveDef.targets[i]); + } + } + return geometryKey; +} +function createAttributesKey(attributes) { + let attributesKey = ""; + const keys = Object.keys(attributes).sort(); + for (let i = 0, il = keys.length; i < il; i++) { + attributesKey += keys[i] + ":" + attributes[keys[i]] + ";"; + } + return attributesKey; +} +function getNormalizedComponentScale(constructor) { + switch (constructor) { + case Int8Array: + return 1 / 127; + case Uint8Array: + return 1 / 255; + case Int16Array: + return 1 / 32767; + case Uint16Array: + return 1 / 65535; + default: + throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type."); + } +} +function getImageURIMimeType(uri) { + if (uri.search(/\.jpe?g($|\?)/i) > 0 || uri.search(/^data\:image\/jpeg/) === 0) return "image/jpeg"; + if (uri.search(/\.webp($|\?)/i) > 0 || uri.search(/^data\:image\/webp/) === 0) return "image/webp"; + return "image/png"; +} +var _identityMatrix = new Matrix4(); +var GLTFParser = class { + constructor(json = {}, options = {}) { + this.json = json; + this.extensions = {}; + this.plugins = {}; + this.options = options; + this.cache = new GLTFRegistry(); + this.associations = /* @__PURE__ */ new Map(); + this.primitiveCache = {}; + this.nodeCache = {}; + this.meshCache = { refs: {}, uses: {} }; + this.cameraCache = { refs: {}, uses: {} }; + this.lightCache = { refs: {}, uses: {} }; + this.sourceCache = {}; + this.textureCache = {}; + this.nodeNamesUsed = {}; + let isSafari = false; + let isFirefox = false; + let firefoxVersion = -1; + if (typeof navigator !== "undefined") { + isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) === true; + isFirefox = navigator.userAgent.indexOf("Firefox") > -1; + firefoxVersion = isFirefox ? navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1] : -1; + } + if (typeof createImageBitmap === "undefined" || isSafari || isFirefox && firefoxVersion < 98) { + this.textureLoader = new TextureLoader(this.options.manager); + } else { + this.textureLoader = new ImageBitmapLoader(this.options.manager); + } + this.textureLoader.setCrossOrigin(this.options.crossOrigin); + this.textureLoader.setRequestHeader(this.options.requestHeader); + this.fileLoader = new FileLoader(this.options.manager); + this.fileLoader.setResponseType("arraybuffer"); + if (this.options.crossOrigin === "use-credentials") { + this.fileLoader.setWithCredentials(true); + } + } + setExtensions(extensions) { + this.extensions = extensions; + } + setPlugins(plugins) { + this.plugins = plugins; + } + parse(onLoad, onError) { + const parser = this; + const json = this.json; + const extensions = this.extensions; + this.cache.removeAll(); + this.nodeCache = {}; + this._invokeAll(function(ext) { + return ext._markDefs && ext._markDefs(); + }); + Promise.all(this._invokeAll(function(ext) { + return ext.beforeRoot && ext.beforeRoot(); + })).then(function() { + return Promise.all([ + parser.getDependencies("scene"), + parser.getDependencies("animation"), + parser.getDependencies("camera") + ]); + }).then(function(dependencies) { + const result = { + scene: dependencies[0][json.scene || 0], + scenes: dependencies[0], + animations: dependencies[1], + cameras: dependencies[2], + asset: json.asset, + parser, + userData: {} + }; + addUnknownExtensionsToUserData(extensions, result, json); + assignExtrasToUserData(result, json); + return Promise.all(parser._invokeAll(function(ext) { + return ext.afterRoot && ext.afterRoot(result); + })).then(function() { + for (const scene of result.scenes) { + scene.updateMatrixWorld(); + } + onLoad(result); + }); + }).catch(onError); + } + /** + * Marks the special nodes/meshes in json for efficient parse. + */ + _markDefs() { + const nodeDefs = this.json.nodes || []; + const skinDefs = this.json.skins || []; + const meshDefs = this.json.meshes || []; + for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) { + const joints = skinDefs[skinIndex].joints; + for (let i = 0, il = joints.length; i < il; i++) { + nodeDefs[joints[i]].isBone = true; + } + } + for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) { + const nodeDef = nodeDefs[nodeIndex]; + if (nodeDef.mesh !== void 0) { + this._addNodeRef(this.meshCache, nodeDef.mesh); + if (nodeDef.skin !== void 0) { + meshDefs[nodeDef.mesh].isSkinnedMesh = true; + } + } + if (nodeDef.camera !== void 0) { + this._addNodeRef(this.cameraCache, nodeDef.camera); + } + } + } + /** + * Counts references to shared node / Object3D resources. These resources + * can be reused, or "instantiated", at multiple nodes in the scene + * hierarchy. Mesh, Camera, and Light instances are instantiated and must + * be marked. Non-scenegraph resources (like Materials, Geometries, and + * Textures) can be reused directly and are not marked here. + * + * Example: CesiumMilkTruck sample model reuses "Wheel" meshes. + */ + _addNodeRef(cache, index) { + if (index === void 0) return; + if (cache.refs[index] === void 0) { + cache.refs[index] = cache.uses[index] = 0; + } + cache.refs[index]++; + } + /** Returns a reference to a shared resource, cloning it if necessary. */ + _getNodeRef(cache, index, object) { + if (cache.refs[index] <= 1) return object; + const ref = object.clone(); + const updateMappings = (original, clone) => { + const mappings = this.associations.get(original); + if (mappings != null) { + this.associations.set(clone, mappings); + } + for (const [i, child] of original.children.entries()) { + updateMappings(child, clone.children[i]); + } + }; + updateMappings(object, ref); + ref.name += "_instance_" + cache.uses[index]++; + return ref; + } + _invokeOne(func) { + const extensions = Object.values(this.plugins); + extensions.push(this); + for (let i = 0; i < extensions.length; i++) { + const result = func(extensions[i]); + if (result) return result; + } + return null; + } + _invokeAll(func) { + const extensions = Object.values(this.plugins); + extensions.unshift(this); + const pending = []; + for (let i = 0; i < extensions.length; i++) { + const result = func(extensions[i]); + if (result) pending.push(result); + } + return pending; + } + /** + * Requests the specified dependency asynchronously, with caching. + * @param {string} type + * @param {number} index + * @return {Promise} + */ + getDependency(type, index) { + const cacheKey = type + ":" + index; + let dependency = this.cache.get(cacheKey); + if (!dependency) { + switch (type) { + case "scene": + dependency = this.loadScene(index); + break; + case "node": + dependency = this._invokeOne(function(ext) { + return ext.loadNode && ext.loadNode(index); + }); + break; + case "mesh": + dependency = this._invokeOne(function(ext) { + return ext.loadMesh && ext.loadMesh(index); + }); + break; + case "accessor": + dependency = this.loadAccessor(index); + break; + case "bufferView": + dependency = this._invokeOne(function(ext) { + return ext.loadBufferView && ext.loadBufferView(index); + }); + break; + case "buffer": + dependency = this.loadBuffer(index); + break; + case "material": + dependency = this._invokeOne(function(ext) { + return ext.loadMaterial && ext.loadMaterial(index); + }); + break; + case "texture": + dependency = this._invokeOne(function(ext) { + return ext.loadTexture && ext.loadTexture(index); + }); + break; + case "skin": + dependency = this.loadSkin(index); + break; + case "animation": + dependency = this._invokeOne(function(ext) { + return ext.loadAnimation && ext.loadAnimation(index); + }); + break; + case "camera": + dependency = this.loadCamera(index); + break; + default: + dependency = this._invokeOne(function(ext) { + return ext != this && ext.getDependency && ext.getDependency(type, index); + }); + if (!dependency) { + throw new Error("Unknown type: " + type); + } + break; + } + this.cache.add(cacheKey, dependency); + } + return dependency; + } + /** + * Requests all dependencies of the specified type asynchronously, with caching. + * @param {string} type + * @return {Promise>} + */ + getDependencies(type) { + let dependencies = this.cache.get(type); + if (!dependencies) { + const parser = this; + const defs = this.json[type + (type === "mesh" ? "es" : "s")] || []; + dependencies = Promise.all(defs.map(function(def, index) { + return parser.getDependency(type, index); + })); + this.cache.add(type, dependencies); + } + return dependencies; + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferIndex + * @return {Promise} + */ + loadBuffer(bufferIndex) { + const bufferDef = this.json.buffers[bufferIndex]; + const loader = this.fileLoader; + if (bufferDef.type && bufferDef.type !== "arraybuffer") { + throw new Error("THREE.GLTFLoader: " + bufferDef.type + " buffer type is not supported."); + } + if (bufferDef.uri === void 0 && bufferIndex === 0) { + return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body); + } + const options = this.options; + return new Promise(function(resolve, reject) { + loader.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, void 0, function() { + reject(new Error('THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".')); + }); + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferViewIndex + * @return {Promise} + */ + loadBufferView(bufferViewIndex) { + const bufferViewDef = this.json.bufferViews[bufferViewIndex]; + return this.getDependency("buffer", bufferViewDef.buffer).then(function(buffer) { + const byteLength = bufferViewDef.byteLength || 0; + const byteOffset = bufferViewDef.byteOffset || 0; + return buffer.slice(byteOffset, byteOffset + byteLength); + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors + * @param {number} accessorIndex + * @return {Promise} + */ + loadAccessor(accessorIndex) { + const parser = this; + const json = this.json; + const accessorDef = this.json.accessors[accessorIndex]; + if (accessorDef.bufferView === void 0 && accessorDef.sparse === void 0) { + const itemSize = WEBGL_TYPE_SIZES[accessorDef.type]; + const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; + const normalized = accessorDef.normalized === true; + const array = new TypedArray(accessorDef.count * itemSize); + return Promise.resolve(new BufferAttribute(array, itemSize, normalized)); + } + const pendingBufferViews = []; + if (accessorDef.bufferView !== void 0) { + pendingBufferViews.push(this.getDependency("bufferView", accessorDef.bufferView)); + } else { + pendingBufferViews.push(null); + } + if (accessorDef.sparse !== void 0) { + pendingBufferViews.push(this.getDependency("bufferView", accessorDef.sparse.indices.bufferView)); + pendingBufferViews.push(this.getDependency("bufferView", accessorDef.sparse.values.bufferView)); + } + return Promise.all(pendingBufferViews).then(function(bufferViews) { + const bufferView = bufferViews[0]; + const itemSize = WEBGL_TYPE_SIZES[accessorDef.type]; + const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; + const elementBytes = TypedArray.BYTES_PER_ELEMENT; + const itemBytes = elementBytes * itemSize; + const byteOffset = accessorDef.byteOffset || 0; + const byteStride = accessorDef.bufferView !== void 0 ? json.bufferViews[accessorDef.bufferView].byteStride : void 0; + const normalized = accessorDef.normalized === true; + let array, bufferAttribute; + if (byteStride && byteStride !== itemBytes) { + const ibSlice = Math.floor(byteOffset / byteStride); + const ibCacheKey = "InterleavedBuffer:" + accessorDef.bufferView + ":" + accessorDef.componentType + ":" + ibSlice + ":" + accessorDef.count; + let ib = parser.cache.get(ibCacheKey); + if (!ib) { + array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes); + ib = new InterleavedBuffer(array, byteStride / elementBytes); + parser.cache.add(ibCacheKey, ib); + } + bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, byteOffset % byteStride / elementBytes, normalized); + } else { + if (bufferView === null) { + array = new TypedArray(accessorDef.count * itemSize); + } else { + array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize); + } + bufferAttribute = new BufferAttribute(array, itemSize, normalized); + } + if (accessorDef.sparse !== void 0) { + const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; + const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType]; + const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; + const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; + const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices); + const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize); + if (bufferView !== null) { + bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized); + } + for (let i = 0, il = sparseIndices.length; i < il; i++) { + const index = sparseIndices[i]; + bufferAttribute.setX(index, sparseValues[i * itemSize]); + if (itemSize >= 2) bufferAttribute.setY(index, sparseValues[i * itemSize + 1]); + if (itemSize >= 3) bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]); + if (itemSize >= 4) bufferAttribute.setW(index, sparseValues[i * itemSize + 3]); + if (itemSize >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute."); + } + } + return bufferAttribute; + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures + * @param {number} textureIndex + * @return {Promise} + */ + loadTexture(textureIndex) { + const json = this.json; + const options = this.options; + const textureDef = json.textures[textureIndex]; + const sourceIndex = textureDef.source; + const sourceDef = json.images[sourceIndex]; + let loader = this.textureLoader; + if (sourceDef.uri) { + const handler = options.manager.getHandler(sourceDef.uri); + if (handler !== null) loader = handler; + } + return this.loadTextureImage(textureIndex, sourceIndex, loader); + } + loadTextureImage(textureIndex, sourceIndex, loader) { + const parser = this; + const json = this.json; + const textureDef = json.textures[textureIndex]; + const sourceDef = json.images[sourceIndex]; + const cacheKey = (sourceDef.uri || sourceDef.bufferView) + ":" + textureDef.sampler; + if (this.textureCache[cacheKey]) { + return this.textureCache[cacheKey]; + } + const promise = this.loadImageSource(sourceIndex, loader).then(function(texture) { + texture.flipY = false; + texture.name = textureDef.name || sourceDef.name || ""; + if (texture.name === "" && typeof sourceDef.uri === "string" && sourceDef.uri.startsWith("data:image/") === false) { + texture.name = sourceDef.uri; + } + const samplers = json.samplers || {}; + const sampler = samplers[textureDef.sampler] || {}; + texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter; + texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter; + texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping; + texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping; + parser.associations.set(texture, { textures: textureIndex }); + return texture; + }).catch(function() { + return null; + }); + this.textureCache[cacheKey] = promise; + return promise; + } + loadImageSource(sourceIndex, loader) { + const parser = this; + const json = this.json; + const options = this.options; + if (this.sourceCache[sourceIndex] !== void 0) { + return this.sourceCache[sourceIndex].then((texture) => texture.clone()); + } + const sourceDef = json.images[sourceIndex]; + const URL2 = self.URL || self.webkitURL; + let sourceURI = sourceDef.uri || ""; + let isObjectURL = false; + if (sourceDef.bufferView !== void 0) { + sourceURI = parser.getDependency("bufferView", sourceDef.bufferView).then(function(bufferView) { + isObjectURL = true; + const blob = new Blob([bufferView], { type: sourceDef.mimeType }); + sourceURI = URL2.createObjectURL(blob); + return sourceURI; + }); + } else if (sourceDef.uri === void 0) { + throw new Error("THREE.GLTFLoader: Image " + sourceIndex + " is missing URI and bufferView"); + } + const promise = Promise.resolve(sourceURI).then(function(sourceURI2) { + return new Promise(function(resolve, reject) { + let onLoad = resolve; + if (loader.isImageBitmapLoader === true) { + onLoad = function(imageBitmap) { + const texture = new Texture(imageBitmap); + texture.needsUpdate = true; + resolve(texture); + }; + } + loader.load(LoaderUtils.resolveURL(sourceURI2, options.path), onLoad, void 0, reject); + }); + }).then(function(texture) { + if (isObjectURL === true) { + URL2.revokeObjectURL(sourceURI); + } + texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType(sourceDef.uri); + return texture; + }).catch(function(error) { + console.error("THREE.GLTFLoader: Couldn't load texture", sourceURI); + throw error; + }); + this.sourceCache[sourceIndex] = promise; + return promise; + } + /** + * Asynchronously assigns a texture to the given material parameters. + * @param {Object} materialParams + * @param {string} mapName + * @param {Object} mapDef + * @return {Promise} + */ + assignTexture(materialParams, mapName, mapDef, colorSpace) { + const parser = this; + return this.getDependency("texture", mapDef.index).then(function(texture) { + if (!texture) return null; + if (mapDef.texCoord !== void 0 && mapDef.texCoord > 0) { + texture = texture.clone(); + texture.channel = mapDef.texCoord; + } + if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) { + const transform = mapDef.extensions !== void 0 ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : void 0; + if (transform) { + const gltfReference = parser.associations.get(texture); + texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform); + parser.associations.set(texture, gltfReference); + } + } + if (colorSpace !== void 0) { + texture.colorSpace = colorSpace; + } + materialParams[mapName] = texture; + return texture; + }); + } + /** + * Assigns final material to a Mesh, Line, or Points instance. The instance + * already has a material (generated from the glTF material options alone) + * but reuse of the same glTF material may require multiple threejs materials + * to accommodate different primitive types, defines, etc. New materials will + * be created if necessary, and reused from a cache. + * @param {Object3D} mesh Mesh, Line, or Points instance. + */ + assignFinalMaterial(mesh) { + const geometry = mesh.geometry; + let material = mesh.material; + const useDerivativeTangents = geometry.attributes.tangent === void 0; + const useVertexColors = geometry.attributes.color !== void 0; + const useFlatShading = geometry.attributes.normal === void 0; + if (mesh.isPoints) { + const cacheKey = "PointsMaterial:" + material.uuid; + let pointsMaterial = this.cache.get(cacheKey); + if (!pointsMaterial) { + pointsMaterial = new PointsMaterial(); + Material.prototype.copy.call(pointsMaterial, material); + pointsMaterial.color.copy(material.color); + pointsMaterial.map = material.map; + pointsMaterial.sizeAttenuation = false; + this.cache.add(cacheKey, pointsMaterial); + } + material = pointsMaterial; + } else if (mesh.isLine) { + const cacheKey = "LineBasicMaterial:" + material.uuid; + let lineMaterial = this.cache.get(cacheKey); + if (!lineMaterial) { + lineMaterial = new LineBasicMaterial(); + Material.prototype.copy.call(lineMaterial, material); + lineMaterial.color.copy(material.color); + lineMaterial.map = material.map; + this.cache.add(cacheKey, lineMaterial); + } + material = lineMaterial; + } + if (useDerivativeTangents || useVertexColors || useFlatShading) { + let cacheKey = "ClonedMaterial:" + material.uuid + ":"; + if (useDerivativeTangents) cacheKey += "derivative-tangents:"; + if (useVertexColors) cacheKey += "vertex-colors:"; + if (useFlatShading) cacheKey += "flat-shading:"; + let cachedMaterial = this.cache.get(cacheKey); + if (!cachedMaterial) { + cachedMaterial = material.clone(); + if (useVertexColors) cachedMaterial.vertexColors = true; + if (useFlatShading) cachedMaterial.flatShading = true; + if (useDerivativeTangents) { + if (cachedMaterial.normalScale) cachedMaterial.normalScale.y *= -1; + if (cachedMaterial.clearcoatNormalScale) cachedMaterial.clearcoatNormalScale.y *= -1; + } + this.cache.add(cacheKey, cachedMaterial); + this.associations.set(cachedMaterial, this.associations.get(material)); + } + material = cachedMaterial; + } + mesh.material = material; + } + getMaterialType() { + return MeshStandardMaterial; + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials + * @param {number} materialIndex + * @return {Promise} + */ + loadMaterial(materialIndex) { + const parser = this; + const json = this.json; + const extensions = this.extensions; + const materialDef = json.materials[materialIndex]; + let materialType; + const materialParams = {}; + const materialExtensions = materialDef.extensions || {}; + const pending = []; + if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) { + const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT]; + materialType = kmuExtension.getMaterialType(); + pending.push(kmuExtension.extendParams(materialParams, materialDef, parser)); + } else { + const metallicRoughness = materialDef.pbrMetallicRoughness || {}; + materialParams.color = new Color(1, 1, 1); + materialParams.opacity = 1; + if (Array.isArray(metallicRoughness.baseColorFactor)) { + const array = metallicRoughness.baseColorFactor; + materialParams.color.setRGB(array[0], array[1], array[2], LinearSRGBColorSpace); + materialParams.opacity = array[3]; + } + if (metallicRoughness.baseColorTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "map", metallicRoughness.baseColorTexture, SRGBColorSpace)); + } + materialParams.metalness = metallicRoughness.metallicFactor !== void 0 ? metallicRoughness.metallicFactor : 1; + materialParams.roughness = metallicRoughness.roughnessFactor !== void 0 ? metallicRoughness.roughnessFactor : 1; + if (metallicRoughness.metallicRoughnessTexture !== void 0) { + pending.push(parser.assignTexture(materialParams, "metalnessMap", metallicRoughness.metallicRoughnessTexture)); + pending.push(parser.assignTexture(materialParams, "roughnessMap", metallicRoughness.metallicRoughnessTexture)); + } + materialType = this._invokeOne(function(ext) { + return ext.getMaterialType && ext.getMaterialType(materialIndex); + }); + pending.push(Promise.all(this._invokeAll(function(ext) { + return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams); + }))); + } + if (materialDef.doubleSided === true) { + materialParams.side = DoubleSide; + } + const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; + if (alphaMode === ALPHA_MODES.BLEND) { + materialParams.transparent = true; + materialParams.depthWrite = false; + } else { + materialParams.transparent = false; + if (alphaMode === ALPHA_MODES.MASK) { + materialParams.alphaTest = materialDef.alphaCutoff !== void 0 ? materialDef.alphaCutoff : 0.5; + } + } + if (materialDef.normalTexture !== void 0 && materialType !== MeshBasicMaterial) { + pending.push(parser.assignTexture(materialParams, "normalMap", materialDef.normalTexture)); + materialParams.normalScale = new Vector2(1, 1); + if (materialDef.normalTexture.scale !== void 0) { + const scale = materialDef.normalTexture.scale; + materialParams.normalScale.set(scale, scale); + } + } + if (materialDef.occlusionTexture !== void 0 && materialType !== MeshBasicMaterial) { + pending.push(parser.assignTexture(materialParams, "aoMap", materialDef.occlusionTexture)); + if (materialDef.occlusionTexture.strength !== void 0) { + materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; + } + } + if (materialDef.emissiveFactor !== void 0 && materialType !== MeshBasicMaterial) { + const emissiveFactor = materialDef.emissiveFactor; + materialParams.emissive = new Color().setRGB(emissiveFactor[0], emissiveFactor[1], emissiveFactor[2], LinearSRGBColorSpace); + } + if (materialDef.emissiveTexture !== void 0 && materialType !== MeshBasicMaterial) { + pending.push(parser.assignTexture(materialParams, "emissiveMap", materialDef.emissiveTexture, SRGBColorSpace)); + } + return Promise.all(pending).then(function() { + const material = new materialType(materialParams); + if (materialDef.name) material.name = materialDef.name; + assignExtrasToUserData(material, materialDef); + parser.associations.set(material, { materials: materialIndex }); + if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef); + return material; + }); + } + /** When Object3D instances are targeted by animation, they need unique names. */ + createUniqueName(originalName) { + const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || ""); + if (sanitizedName in this.nodeNamesUsed) { + return sanitizedName + "_" + ++this.nodeNamesUsed[sanitizedName]; + } else { + this.nodeNamesUsed[sanitizedName] = 0; + return sanitizedName; + } + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry + * + * Creates BufferGeometries from primitives. + * + * @param {Array} primitives + * @return {Promise>} + */ + loadGeometries(primitives) { + const parser = this; + const extensions = this.extensions; + const cache = this.primitiveCache; + function createDracoPrimitive(primitive) { + return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function(geometry) { + return addPrimitiveAttributes(geometry, primitive, parser); + }); + } + const pending = []; + for (let i = 0, il = primitives.length; i < il; i++) { + const primitive = primitives[i]; + const cacheKey = createPrimitiveKey(primitive); + const cached = cache[cacheKey]; + if (cached) { + pending.push(cached.promise); + } else { + let geometryPromise; + if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) { + geometryPromise = createDracoPrimitive(primitive); + } else { + geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser); + } + cache[cacheKey] = { primitive, promise: geometryPromise }; + pending.push(geometryPromise); + } + } + return Promise.all(pending); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes + * @param {number} meshIndex + * @return {Promise} + */ + loadMesh(meshIndex) { + const parser = this; + const json = this.json; + const extensions = this.extensions; + const meshDef = json.meshes[meshIndex]; + const primitives = meshDef.primitives; + const pending = []; + for (let i = 0, il = primitives.length; i < il; i++) { + const material = primitives[i].material === void 0 ? createDefaultMaterial(this.cache) : this.getDependency("material", primitives[i].material); + pending.push(material); + } + pending.push(parser.loadGeometries(primitives)); + return Promise.all(pending).then(function(results) { + const materials = results.slice(0, results.length - 1); + const geometries = results[results.length - 1]; + const meshes = []; + for (let i = 0, il = geometries.length; i < il; i++) { + const geometry = geometries[i]; + const primitive = primitives[i]; + let mesh; + const material = materials[i]; + if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === void 0) { + mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material); + if (mesh.isSkinnedMesh === true) { + mesh.normalizeSkinWeights(); + } + if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) { + mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode); + } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) { + mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode); + } + } else if (primitive.mode === WEBGL_CONSTANTS.LINES) { + mesh = new LineSegments(geometry, material); + } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) { + mesh = new Line(geometry, material); + } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) { + mesh = new LineLoop(geometry, material); + } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) { + mesh = new Points(geometry, material); + } else { + throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + primitive.mode); + } + if (Object.keys(mesh.geometry.morphAttributes).length > 0) { + updateMorphTargets(mesh, meshDef); + } + mesh.name = parser.createUniqueName(meshDef.name || "mesh_" + meshIndex); + assignExtrasToUserData(mesh, meshDef); + if (primitive.extensions) addUnknownExtensionsToUserData(extensions, mesh, primitive); + parser.assignFinalMaterial(mesh); + meshes.push(mesh); + } + for (let i = 0, il = meshes.length; i < il; i++) { + parser.associations.set(meshes[i], { + meshes: meshIndex, + primitives: i + }); + } + if (meshes.length === 1) { + if (meshDef.extensions) addUnknownExtensionsToUserData(extensions, meshes[0], meshDef); + return meshes[0]; + } + const group = new Group(); + if (meshDef.extensions) addUnknownExtensionsToUserData(extensions, group, meshDef); + parser.associations.set(group, { meshes: meshIndex }); + for (let i = 0, il = meshes.length; i < il; i++) { + group.add(meshes[i]); + } + return group; + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras + * @param {number} cameraIndex + * @return {Promise} + */ + loadCamera(cameraIndex) { + let camera; + const cameraDef = this.json.cameras[cameraIndex]; + const params = cameraDef[cameraDef.type]; + if (!params) { + console.warn("THREE.GLTFLoader: Missing camera parameters."); + return; + } + if (cameraDef.type === "perspective") { + camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6); + } else if (cameraDef.type === "orthographic") { + camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar); + } + if (cameraDef.name) camera.name = this.createUniqueName(cameraDef.name); + assignExtrasToUserData(camera, cameraDef); + return Promise.resolve(camera); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins + * @param {number} skinIndex + * @return {Promise} + */ + loadSkin(skinIndex) { + const skinDef = this.json.skins[skinIndex]; + const pending = []; + for (let i = 0, il = skinDef.joints.length; i < il; i++) { + pending.push(this._loadNodeShallow(skinDef.joints[i])); + } + if (skinDef.inverseBindMatrices !== void 0) { + pending.push(this.getDependency("accessor", skinDef.inverseBindMatrices)); + } else { + pending.push(null); + } + return Promise.all(pending).then(function(results) { + const inverseBindMatrices = results.pop(); + const jointNodes = results; + const bones = []; + const boneInverses = []; + for (let i = 0, il = jointNodes.length; i < il; i++) { + const jointNode = jointNodes[i]; + if (jointNode) { + bones.push(jointNode); + const mat = new Matrix4(); + if (inverseBindMatrices !== null) { + mat.fromArray(inverseBindMatrices.array, i * 16); + } + boneInverses.push(mat); + } else { + console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', skinDef.joints[i]); + } + } + return new Skeleton(bones, boneInverses); + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations + * @param {number} animationIndex + * @return {Promise} + */ + loadAnimation(animationIndex) { + const json = this.json; + const parser = this; + const animationDef = json.animations[animationIndex]; + const animationName = animationDef.name ? animationDef.name : "animation_" + animationIndex; + const pendingNodes = []; + const pendingInputAccessors = []; + const pendingOutputAccessors = []; + const pendingSamplers = []; + const pendingTargets = []; + for (let i = 0, il = animationDef.channels.length; i < il; i++) { + const channel = animationDef.channels[i]; + const sampler = animationDef.samplers[channel.sampler]; + const target = channel.target; + const name = target.node; + const input = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.input] : sampler.input; + const output = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.output] : sampler.output; + if (target.node === void 0) continue; + pendingNodes.push(this.getDependency("node", name)); + pendingInputAccessors.push(this.getDependency("accessor", input)); + pendingOutputAccessors.push(this.getDependency("accessor", output)); + pendingSamplers.push(sampler); + pendingTargets.push(target); + } + return Promise.all([ + Promise.all(pendingNodes), + Promise.all(pendingInputAccessors), + Promise.all(pendingOutputAccessors), + Promise.all(pendingSamplers), + Promise.all(pendingTargets) + ]).then(function(dependencies) { + const nodes = dependencies[0]; + const inputAccessors = dependencies[1]; + const outputAccessors = dependencies[2]; + const samplers = dependencies[3]; + const targets = dependencies[4]; + const tracks = []; + for (let i = 0, il = nodes.length; i < il; i++) { + const node = nodes[i]; + const inputAccessor = inputAccessors[i]; + const outputAccessor = outputAccessors[i]; + const sampler = samplers[i]; + const target = targets[i]; + if (node === void 0) continue; + if (node.updateMatrix) { + node.updateMatrix(); + } + const createdTracks = parser._createAnimationTracks(node, inputAccessor, outputAccessor, sampler, target); + if (createdTracks) { + for (let k = 0; k < createdTracks.length; k++) { + tracks.push(createdTracks[k]); + } + } + } + return new AnimationClip(animationName, void 0, tracks); + }); + } + createNodeMesh(nodeIndex) { + const json = this.json; + const parser = this; + const nodeDef = json.nodes[nodeIndex]; + if (nodeDef.mesh === void 0) return null; + return parser.getDependency("mesh", nodeDef.mesh).then(function(mesh) { + const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh); + if (nodeDef.weights !== void 0) { + node.traverse(function(o) { + if (!o.isMesh) return; + for (let i = 0, il = nodeDef.weights.length; i < il; i++) { + o.morphTargetInfluences[i] = nodeDef.weights[i]; + } + }); + } + return node; + }); + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy + * @param {number} nodeIndex + * @return {Promise} + */ + loadNode(nodeIndex) { + const json = this.json; + const parser = this; + const nodeDef = json.nodes[nodeIndex]; + const nodePending = parser._loadNodeShallow(nodeIndex); + const childPending = []; + const childrenDef = nodeDef.children || []; + for (let i = 0, il = childrenDef.length; i < il; i++) { + childPending.push(parser.getDependency("node", childrenDef[i])); + } + const skeletonPending = nodeDef.skin === void 0 ? Promise.resolve(null) : parser.getDependency("skin", nodeDef.skin); + return Promise.all([ + nodePending, + Promise.all(childPending), + skeletonPending + ]).then(function(results) { + const node = results[0]; + const children = results[1]; + const skeleton = results[2]; + if (skeleton !== null) { + node.traverse(function(mesh) { + if (!mesh.isSkinnedMesh) return; + mesh.bind(skeleton, _identityMatrix); + }); + } + for (let i = 0, il = children.length; i < il; i++) { + node.add(children[i]); + } + return node; + }); + } + // ._loadNodeShallow() parses a single node. + // skin and child nodes are created and added in .loadNode() (no '_' prefix). + _loadNodeShallow(nodeIndex) { + const json = this.json; + const extensions = this.extensions; + const parser = this; + if (this.nodeCache[nodeIndex] !== void 0) { + return this.nodeCache[nodeIndex]; + } + const nodeDef = json.nodes[nodeIndex]; + const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : ""; + const pending = []; + const meshPromise = parser._invokeOne(function(ext) { + return ext.createNodeMesh && ext.createNodeMesh(nodeIndex); + }); + if (meshPromise) { + pending.push(meshPromise); + } + if (nodeDef.camera !== void 0) { + pending.push(parser.getDependency("camera", nodeDef.camera).then(function(camera) { + return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera); + })); + } + parser._invokeAll(function(ext) { + return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex); + }).forEach(function(promise) { + pending.push(promise); + }); + this.nodeCache[nodeIndex] = Promise.all(pending).then(function(objects) { + let node; + if (nodeDef.isBone === true) { + node = new Bone(); + } else if (objects.length > 1) { + node = new Group(); + } else if (objects.length === 1) { + node = objects[0]; + } else { + node = new Object3D(); + } + if (node !== objects[0]) { + for (let i = 0, il = objects.length; i < il; i++) { + node.add(objects[i]); + } + } + if (nodeDef.name) { + node.userData.name = nodeDef.name; + node.name = nodeName; + } + assignExtrasToUserData(node, nodeDef); + if (nodeDef.extensions) addUnknownExtensionsToUserData(extensions, node, nodeDef); + if (nodeDef.matrix !== void 0) { + const matrix = new Matrix4(); + matrix.fromArray(nodeDef.matrix); + node.applyMatrix4(matrix); + } else { + if (nodeDef.translation !== void 0) { + node.position.fromArray(nodeDef.translation); + } + if (nodeDef.rotation !== void 0) { + node.quaternion.fromArray(nodeDef.rotation); + } + if (nodeDef.scale !== void 0) { + node.scale.fromArray(nodeDef.scale); + } + } + if (!parser.associations.has(node)) { + parser.associations.set(node, {}); + } + parser.associations.get(node).nodes = nodeIndex; + return node; + }); + return this.nodeCache[nodeIndex]; + } + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes + * @param {number} sceneIndex + * @return {Promise} + */ + loadScene(sceneIndex) { + const extensions = this.extensions; + const sceneDef = this.json.scenes[sceneIndex]; + const parser = this; + const scene = new Group(); + if (sceneDef.name) scene.name = parser.createUniqueName(sceneDef.name); + assignExtrasToUserData(scene, sceneDef); + if (sceneDef.extensions) addUnknownExtensionsToUserData(extensions, scene, sceneDef); + const nodeIds = sceneDef.nodes || []; + const pending = []; + for (let i = 0, il = nodeIds.length; i < il; i++) { + pending.push(parser.getDependency("node", nodeIds[i])); + } + return Promise.all(pending).then(function(nodes) { + for (let i = 0, il = nodes.length; i < il; i++) { + scene.add(nodes[i]); + } + const reduceAssociations = (node) => { + const reducedAssociations = /* @__PURE__ */ new Map(); + for (const [key, value] of parser.associations) { + if (key instanceof Material || key instanceof Texture) { + reducedAssociations.set(key, value); + } + } + node.traverse((node2) => { + const mappings = parser.associations.get(node2); + if (mappings != null) { + reducedAssociations.set(node2, mappings); + } + }); + return reducedAssociations; + }; + parser.associations = reduceAssociations(scene); + return scene; + }); + } + _createAnimationTracks(node, inputAccessor, outputAccessor, sampler, target) { + const tracks = []; + const targetName = node.name ? node.name : node.uuid; + const targetNames = []; + if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) { + node.traverse(function(object) { + if (object.morphTargetInfluences) { + targetNames.push(object.name ? object.name : object.uuid); + } + }); + } else { + targetNames.push(targetName); + } + let TypedKeyframeTrack; + switch (PATH_PROPERTIES[target.path]) { + case PATH_PROPERTIES.weights: + TypedKeyframeTrack = NumberKeyframeTrack; + break; + case PATH_PROPERTIES.rotation: + TypedKeyframeTrack = QuaternionKeyframeTrack; + break; + case PATH_PROPERTIES.position: + case PATH_PROPERTIES.scale: + TypedKeyframeTrack = VectorKeyframeTrack; + break; + default: + switch (outputAccessor.itemSize) { + case 1: + TypedKeyframeTrack = NumberKeyframeTrack; + break; + case 2: + case 3: + default: + TypedKeyframeTrack = VectorKeyframeTrack; + break; + } + break; + } + const interpolation = sampler.interpolation !== void 0 ? INTERPOLATION[sampler.interpolation] : InterpolateLinear; + const outputArray = this._getArrayFromAccessor(outputAccessor); + for (let j = 0, jl = targetNames.length; j < jl; j++) { + const track = new TypedKeyframeTrack( + targetNames[j] + "." + PATH_PROPERTIES[target.path], + inputAccessor.array, + outputArray, + interpolation + ); + if (sampler.interpolation === "CUBICSPLINE") { + this._createCubicSplineTrackInterpolant(track); + } + tracks.push(track); + } + return tracks; + } + _getArrayFromAccessor(accessor) { + let outputArray = accessor.array; + if (accessor.normalized) { + const scale = getNormalizedComponentScale(outputArray.constructor); + const scaled = new Float32Array(outputArray.length); + for (let j = 0, jl = outputArray.length; j < jl; j++) { + scaled[j] = outputArray[j] * scale; + } + outputArray = scaled; + } + return outputArray; + } + _createCubicSplineTrackInterpolant(track) { + track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) { + const interpolantType = this instanceof QuaternionKeyframeTrack ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant; + return new interpolantType(this.times, this.values, this.getValueSize() / 3, result); + }; + track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; + } +}; +function computeBounds(geometry, primitiveDef, parser) { + const attributes = primitiveDef.attributes; + const box = new Box3(); + if (attributes.POSITION !== void 0) { + const accessor = parser.json.accessors[attributes.POSITION]; + const min = accessor.min; + const max2 = accessor.max; + if (min !== void 0 && max2 !== void 0) { + box.set( + new Vector3(min[0], min[1], min[2]), + new Vector3(max2[0], max2[1], max2[2]) + ); + if (accessor.normalized) { + const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]); + box.min.multiplyScalar(boxScale); + box.max.multiplyScalar(boxScale); + } + } else { + console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION."); + return; + } + } else { + return; + } + const targets = primitiveDef.targets; + if (targets !== void 0) { + const maxDisplacement = new Vector3(); + const vector = new Vector3(); + for (let i = 0, il = targets.length; i < il; i++) { + const target = targets[i]; + if (target.POSITION !== void 0) { + const accessor = parser.json.accessors[target.POSITION]; + const min = accessor.min; + const max2 = accessor.max; + if (min !== void 0 && max2 !== void 0) { + vector.setX(Math.max(Math.abs(min[0]), Math.abs(max2[0]))); + vector.setY(Math.max(Math.abs(min[1]), Math.abs(max2[1]))); + vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max2[2]))); + if (accessor.normalized) { + const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]); + vector.multiplyScalar(boxScale); + } + maxDisplacement.max(vector); + } else { + console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION."); + } + } + } + box.expandByVector(maxDisplacement); + } + geometry.boundingBox = box; + const sphere = new Sphere(); + box.getCenter(sphere.center); + sphere.radius = box.min.distanceTo(box.max) / 2; + geometry.boundingSphere = sphere; +} +function addPrimitiveAttributes(geometry, primitiveDef, parser) { + const attributes = primitiveDef.attributes; + const pending = []; + function assignAttributeAccessor(accessorIndex, attributeName) { + return parser.getDependency("accessor", accessorIndex).then(function(accessor) { + geometry.setAttribute(attributeName, accessor); + }); + } + for (const gltfAttributeName in attributes) { + const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase(); + if (threeAttributeName in geometry.attributes) continue; + pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName)); + } + if (primitiveDef.indices !== void 0 && !geometry.index) { + const accessor = parser.getDependency("accessor", primitiveDef.indices).then(function(accessor2) { + geometry.setIndex(accessor2); + }); + pending.push(accessor); + } + if (ColorManagement.workingColorSpace !== LinearSRGBColorSpace && "COLOR_0" in attributes) { + console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ColorManagement.workingColorSpace}" not supported.`); + } + assignExtrasToUserData(geometry, primitiveDef); + computeBounds(geometry, primitiveDef, parser); + return Promise.all(pending).then(function() { + return primitiveDef.targets !== void 0 ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry; + }); +} + +// ../../node_modules/@mml-io/model-loader/build/index.js +var draco_decoder_default = "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Rg0AIAEgACACaiIEa0EAIAJBAXRrTQRAIAAgASACEAYPCyAAIAFzQQNxIQMCQAJAIAAgAUkEQCADBEAgACEDDAMLIABBA3FFBEAgACEDDAILIAAhAwNAIAJFDQQgAyABLQAAOgAAIAFBAWohASACQQFrIQIgA0EBaiIDQQNxDQALDAELAkAgAw0AIARBA3EEQANAIAJFDQUgACACQQFrIgJqIgMgASACai0AADoAACADQQNxDQALCyACQQNNDQADQCAAIAJBBGsiAmogASACaigCADYCACACQQNLDQALCyACRQ0CA0AgACACQQFrIgJqIAEgAmotAAA6AAAgAg0ACwwCCyACQQNNDQADQCADIAEoAgA2AgAgAUEEaiEBIANBBGohAyACQQRrIgJBA0sNAAsLIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIAAL5QEBB38gASAAKAIIIgQgACgCBCICa0ECdU0EQCAAIAEEfyACQQAgAUECdCIAEAcgAGoFIAILNgIEDwsCQCACIAAoAgAiAmsiBkECdSIHIAFqIgNBgICAgARJBEBB/////wMgBCACayIEQQF2IgggAyADIAhJGyAEQfz///8HTxsiAwRAIANBgICAgARPDQIgA0ECdBAFIQULIAdBAnQgBWpBACABQQJ0IgEQByEEIAAgBSACIAYQCiIFIANBAnRqNgIIIAAgASAEajYCBCAAIAU2AgAgAgRAIAIQBAsPCxAIAAsQCQAL1QEBAn8jAEEQayIEJAACQAJAIAJBC0kEQCAAIgMgAC0AC0GAAXEgAnI6AAsgACAALQALQf8AcToACwwBCyACQe////8HSw0BIARBCGogACACQQtPBH8gAkEQakFwcSIDIANBAWsiAyADQQtGGwVBCgtBAWoQQyAEKAIMGiAAIAQoAggiAzYCACAAIAAoAghBgICAgHhxIAQoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgAjYCBAsgAyABIAJBAWoQNCAEQRBqJAAPCxAUAAuBAQECfwJAAkAgAkEETwRAIAAgAXJBA3ENAQNAIAAoAgAgASgCAEcNAiABQQRqIQEgAEEEaiEAIAJBBGsiAkEDSw0ACwsgAkUNAQsDQCAALQAAIgMgAS0AACIERgRAIAFBAWohASAAQQFqIQAgAkEBayICDQEMAgsLIAMgBGsPC0EACwgAQYIJEHoACwQAQQELkwEAIABBfzYCACAAQgA3AgQgAEIANwIgIABBAToAHCAAQgA3AhQgAEIANwIMIABCADcCKCAAQgA3AjAgAEIANwI4IABCADcCQCAAQgA3AkwgAEIANwJUIABCADcCXCAAIABBBGo2AkggAEIANwJoIABBAToAZCAAQgA3AnAgAEIANwJ4IABCADcCgAEgAEIANwKIAQt5AQN/IAAtAAwhAwJAIAAoAggiAUH/H0sNACAAKAIEIgJBAEwNACAAIAJBAWsiAjYCBCAAKAIAIAJqLQAAIAFBCHRyIQELIABBACADa0H/AXEiACABQQh2bCIDIAFB/wFxIgJqIAEgACADamsgACACSyIAGzYCCCAAC3oBAn8gAARAIAAoAlghASAAQQA2AlggAQRAIAEoAggiAgRAIAEgAjYCDCACEAQLIAEQBAsgACgCRCIBBEAgACABNgJIIAEQBAsgACgCQCEBIABBADYCQCABBEAgASgCACICBEAgASACNgIEIAIQBAsgARAECyAAEAQLC2kBA38CQCAAIgFBA3EEQANAIAEtAABFDQIgAUEBaiIBQQNxDQALCwNAIAEiAkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawsJAEHGCRDJAQAL1gICB38CfiMAQRBrIgQkAAJAIAEpAxAiCSABKQMIWQ0AIAAgASgCACAJp2otAAA6AAwgASABKQMQQgF8NwMQQQEgBEEMaiABEMgBRQ0AIAQoAgwiAq0iCiABKQMIIAEpAxAiCX1VDQAgAkEATA0AIAAgASgCACAJp2oiBTYCAAJAAkAgAAJ/IAUgAkEBayIGaiIHLQAAIghBP00EQCAAIAY2AgQgBy0AAEE/cQwBCwJAIAhBBnZBAWsOAgACBAsgAkECSQ0DIAAgAkECayIDNgIEIAMgBWoiAy0AAUEIdEGA/gBxIAMtAAByC0GAIGo2AggMAQsgAkEDSQ0BIAAgAkEDayICNgIEIAAgAiAFaiIALQABQQh0IAAtAAJBEHRBgID8AXFyIAAtAAByIgBBgCBqNgIIIABB/98/Sw0BCyABIAkgCnw3AxBBASEDCyAEQRBqJAAgAwtEACABBEAgACABKAIAEBYgACABKAIEEBYgASgCHCIABEAgASAANgIgIAAQBAsgASwAG0EASARAIAEoAhAQBAsgARAECwtbACABBEAgACABKAIAEBcgACABKAIEEBcgASgCHCEAIAFBADYCHCAABEAgAEEMaiAAKAIQEBcgACAAKAIEEBYgABAECyABLAAbQQBIBEAgASgCEBAECyABEAQLC20CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhAYRQ0BIAVB/wBxIAEoAgBBB3RyBSAECzYCAEEBIQMLIAML7QIBA38jAEEQayIEJAAgAEEANgIEAkACQCABRQ0AAkAgASAAKAIIIgNBBXQiBU0EQCAAIAE2AgQMAQsgBEEANgIIIARCADcDACABQQBIDQIgBCAFQf7///8DTQR/IANBBnQiAyABQR9qQWBxIgUgAyAFSxsFQf////8HCxAwIAAoAgAhAyAAIAQoAgA2AgAgBCADNgIAIAAoAgQhBSAAIAE2AgQgBCAFNgIEIAAoAgghBSAAIAQoAgg2AgggBCAFNgIIIANFDQAgAxAECyABQQV2IQMgACgCACEAIAItAAAEQCABQSBPBEAgAEH/ASADQQJ0EAcaCyABQWBxIAFGDQEgACADQQJ0aiIAIAAoAgBBf0EgIAFBH3FrdnI2AgAMAQsgAUEgTwRAIABBACADQQJ0EAcaCyABQWBxIAFGDQAgACADQQJ0aiIAIAAoAgBBf0EgIAFBH3FrdkF/c3E2AgALIARBEGokAA8LEAgAC5oEAQh/IAEgACgCCCIDIAAoAgQiBGtBAnVNBEACQCABRQ0AIAQhAyABQQdxIgYEQANAIAMgAigCADYCACADQQRqIQMgCEEBaiIIIAZHDQALCyABQQJ0IARqIQQgAUEBa0H/////A3FBB0kNAANAIAMgAigCADYCACADIAIoAgA2AgQgAyACKAIANgIIIAMgAigCADYCDCADIAIoAgA2AhAgAyACKAIANgIUIAMgAigCADYCGCADIAIoAgA2AhwgA0EgaiIDIARHDQALCyAAIAQ2AgQPCwJAIAQgACgCACIHayIKQQJ1IgYgAWoiBUGAgICABEkEQEH/////AyADIAdrIgNBAXYiBCAF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EA0iBA0BC0F/IAcgAiADSRshBAsgASAAIARBAEgiAhshASAAQQRqIAAgAhsoAgAiAA0ACyABIAZGDQACQCABKAIUIAEtABsiACAAwEEASCICGyIAIAMgACADSRsiBARAIAUgASgCECABQRBqIAIbIAQQDSIFDQELIAAgA0sNAQwCCyAFQQBODQELIAYhAQsgAQuOAQEBfyAABEAgACgCTCIBBEAgACABNgJQIAEQBAsgAEFAaygCACIBBEAgACABNgJEIAEQBAsgACgCMCIBBEAgACABNgI0IAEQBAsgACgCGCIBBEAgACABNgIcIAEQBAsgACgCDCIBBEAgACABNgIQIAEQBAsgACgCACIBBEAgACABNgIEIAEQBAsgABAECwvlAQEHfyABIAAoAggiBCAAKAIEIgJrQQN1TQRAIAAgAQR/IAJBACABQQN0IgAQByAAagUgAgs2AgQPCwJAIAIgACgCACICayIGQQN1IgcgAWoiA0GAgICAAkkEQEH/////ASAEIAJrIgRBAnYiCCADIAMgCEkbIARB+P///wdPGyIDBEAgA0GAgICAAk8NAiADQQN0EAUhBQsgB0EDdCAFakEAIAFBA3QiARAHIQQgACAFIAIgBhAKIgUgA0EDdGo2AgggACABIARqNgIEIAAgBTYCACACBEAgAhAECw8LEAgACxAJAAvHCQEJfyMAQSBrIgckAAJAAkAgACgCCEEFdCABTw0AIAFBAEgNASABQQFrQQV2QQFqIgFBAnQQBSECIAcgATYCGCAHQQA2AhQgByACNgIQIAAoAgAhASAHQQA2AgwgByABNgIIIAcgACgCBCICQR9xNgIEIAcgASACQQN2Qfz///8BcWo2AgAjAEEgayICJAAgByAHKAIEIgggBygCDCIFayAHKAIAIgkgBygCCCIDa0EDdGoiASAHKAIUIgZqIgQ2AhQgBkEAIARBAWsgBkEBa3NBIEkbRQRAIAcoAhAgBEEBa0EFdkEAIARBIU8bQQJ0akEANgIACyAHKAIQIAZBA3ZB/P///wFxaiEEAkAgBkEfcSIGIAVGBEAgAUEATA0BIAUEQCAEIAQoAgBBfyAFdEF/QSAgBWsiBiABIAYgASAGSBsiBmt2cSIIQX9zcSADKAIAIAhxcjYCACADQQRqIQMgBCAFIAZqQQN2Qfz///8BcWohBCABIAZr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ASkCADcCACADIAEoAgg2AgggA0EMaiEBIAIgBkcEQANAIANBDGsiAyACQQxrIgIpAgA3AgAgAyACKAIINgIIIAIgBkcNAAsgACgCACECCyAAIAUgBEEMbGo2AgggACABNgIEIAAgAzYCACACBEAgAhAECw8LEAgACxAJAAuUBAEDfyABIAAgAUYiAjoADAJAIAINAANAIAEoAggiAi0ADA0BAkAgAiACKAIIIgMoAgAiBEYEQAJAIAMoAgQiBEUNACAELQAMDQAMAgsCQCABIAIoAgBGBEAgAiEBDAELIAIgAigCBCIBKAIAIgA2AgQgASAABH8gACACNgIIIAIoAggFIAMLNgIIIAIoAggiACAAKAIAIAJHQQJ0aiABNgIAIAEgAjYCACACIAE2AgggASgCCCIDKAIAIQILIAFBAToADCADQQA6AAwgAyACKAIEIgA2AgAgAARAIAAgAzYCCAsgAiADKAIINgIIIAMoAggiACAAKAIAIANHQQJ0aiACNgIAIAIgAzYCBCADIAI2AggPCwJAIARFDQAgBC0ADA0ADAELAkAgASACKAIARwRAIAIhAQwBCyACIAEoAgQiADYCACABIAAEfyAAIAI2AgggAigCCAUgAws2AgggAigCCCIAIAAoAgAgAkdBAnRqIAE2AgAgASACNgIEIAIgATYCCCABKAIIIQMLIAFBAToADCADQQA6AAwgAyADKAIEIgAoAgAiATYCBCABBEAgASADNgIICyAAIAMoAgg2AgggAygCCCIBIAEoAgAgA0dBAnRqIAA2AgAgACADNgIAIAMgADYCCAwCCyAEQQxqIQEgAkEBOgAMIAMgACADRjoADCABQQE6AAAgAyIBIABHDQALCwsrAQF/AkAgACgCLEUNACAAKAIwRQ0AIAAoAjRFDQAgACgCOEEARyEBCyABC8oEAQd/IAMgAmsiB0EATARADwsCQCAAKAIIIgQgACgCBCIIayAHTgRAIAggAWsiCSAHTgRAIAghBSADIQYMAgsgCCEFIAMgAiAJaiIGRwRAIAYhBANAIAUgBC0AADoAACAFQQFqIQUgBEEBaiIEIANHDQALCyAAIAU2AgQgCUEASg0BDwsgCCAAKAIAIgprIAdqIgZBAE4EQCABIAprIQkgCUH/////ByAEIAprIgVBAXQiBCAGIAQgBksbIAVB/////wNP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An8gByAAKAIcRQ0AGiABQQFqIgUgAUECayAFQQNwGyEEIAFBAWsgAUEDcA0AGiABQQJqCyEFIARBf0YEQCAAKAIUIQEMAwsgACgCECgCACAEQQJ0aigCACIEIAAoAhQiASgCBCABKAIAIghrQQJ1Tw0CIAAoAgggCCAEQQJ0aigCAEECdGooAgAhBCAAKAIEIgEtAFRFBEAgASgCRCAEQQJ0aigCACEECyADQgA3AzAgA0IANwMoIANCADcDICABIAQgASwAGCADQSBqEBsgBUF/RgRAIAAoAhQhAQwCCyAAKAIQKAIAIAVBAnRqKAIAIgUgACgCFCIBKAIEIAEoAgAiBGtBAnVPDQEgACgCCCAEIAVBAnRqKAIAQQJ0aigCACEEIAAoAgQiAS0AVEUEQCABKAJEIARBAnRqKAIAIQQLIANCADcDGCADQgA3AxAgA0IANwMIIAEgBCABLAAYIANBCGoQGyAKIAMpAwggAykDOCIKfSIJIAMpAyggAykDQCILfSIMfn0gAykDECALfSILIAMpAyAgCn0iD358IQogDSAJIAMpAzAgAykDSCINfSIQfnwgAykDGCANfSIJIA9+fSENIA4gCyAQfn0gCSAMfnwhDiADQdAAahB0IAMoAlgiAUF/Rw0ACyAOIA5CP4ciCYUgCX0hCUL///////////8AIQsgDSANQj+HIgyFIAx9IgxC////////////AIUhDwJAIAoCfiAAKAIcRQRAIAkgD1YNAkKAgICAcCAJIAx8IgkgCiAKQj+HIguFIAt9Igt8QiCGIAkgC0L///////////8AhVYbIglCgYCAgICAgIAgUw0CIAlCPYgMAQsCQCAJIA9WDQAgCSAMfCIJIAogCkI/hyIMhSAMfSIMQv///////////wCFVg0AIAkgDHwiC0KBgICAAlQNAgsgC0IdiAsiCX8hCiANIAl/IQ0gDiAJfyEOCyACIAo+AgggAiANPgIEIAIgDj4CACADQeAAaiQADwsQDgALEA4ACxAOAAsWACABQQFNBEAgACABNgIcCyABQQJJC5ULAgV/CX4jAEHgAGsiBCQAIAAoAhAhAyAEQQE6AFwgBCABNgJYIAQgATYCVCAEIAM2AlACQAJAIAMoAhwgAUECdGooAgAiAyAAKAIUIgUoAgQgBSgCACIFa0ECdUkEQCAAKAIIIAUg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CSgCAEF+IAt3cTYCACADQQJqIQMgAkECaiICIAhHDQALCyAERQ0AIAAgASADQQJ0aigCACIBQQN2Qfz///8BcWoiACAAKAIAQX4gAXdxNgIACwttAgN/AX4CQCAAQQVLDQAgAikDECIGIAIpAwhZDQAgAigCACAGp2otAAAhBCACIAZCAXw3AxAgASAEwCIFQQBIBH8gAEEBaiABIAIQYUUNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADC7QEAQh/IAEgACgCCCIDIAAoAgAiBGtBAnVNBEACQCAAKAIEIgUgBGtBAnUiByABIAEgB0sbIghFDQAgBCEDIAgiBkEHcSIJBEADQCADIAIoAgA2AgAgBkEBayEGIANBBGohAyAKQQFqIgogCUcNAAsLIAhBCEkNAANAIAMgAigCADYCACADIAIoAgA2AgQgAyACKAIANgIIIAMgAigCADYCDCADIAIoAgA2AhAgAyACKAIANgIUIAMgAigCADYCGCADIAIoAgA2AhwgA0EgaiEDIAZBCGsiBg0ACwsgASAHSwRAIAUgASAHa0ECdGohAQNAIAUgAigCADYCACAFQQRqIgUgAUcNAAsgACABNgIEDwsgACAEIAFBAnRqNgIEDwsgBARAIAAgBDYCBCAEEAQgAEEANgIIIABCADcCAEEAIQMLAkAgAUGAgICABE8NAEH/////AyADQQF2IgQgASABIARJGyADQfz///8HTxsiA0GAgICABE8NACAAIANBAnQiAxAFIgQ2AgAgACADIARqNgIIIAIoAgAhAiAEIQMgAUEHcSIGBEADQCADIAI2AgAgA0EEaiEDIAVBAWoiBSAGRw0ACwsgAUECdCAEaiEEIAFBAWtB/////wNxQQdPBEADQCADIAI2AhwgAyACNgIYIAMgAjYCFCADIAI2AhAgAyACNgIMIAMgAjYCCCADIAI2AgQgAyACNgIAIANBIGoiAyAERw0ACwsgACAENgIEDwsQCAAL7wEBAn8gACAAKAIEIgIgAWoiAzYCBCACQQAgA0EBayACQQFrc0EgSRtFBEAgACgCACADQQFrQQV2QQAgA0EhTxtBAnRqQQA2AgALAkAgAUUNACAAKAIAIAJBA3ZB/P///wFxaiEAIAJBH3EiAgRAIAAgACgCAEF/IAJ0QX9BICACayICIAIgASABIAJLGyICa3ZxQX9zcTYCACABIAJrIQEgAEEEaiEACyABQQV2IQIgAUEgTwRAIABBACACQQJ0EAcaCyABIAFBYHFGDQAgACACQQJ0aiIAIAAoAgBBf0EgIAFBH3FrdkF/c3E2AgALC1sAIABCADcCACAAQQA2AjggAEIANwIwIABCADcCKCAAQgA3AiAgAEIANwIYIABCADcCECAAQgA3AgggAEFAa0IANwIAIABCADcCSCAAQgA3AlAgACAANgI8IAALBABBAgspACABBEAgACABKAIAEGYgACABKAIEEGYgAUEUaiABKAIYEDkgARAECwvTAQICfwJ+AkAgACgCQA0AQSAQBSICQgA3AxAgAkEANgIIIAJCADcDACACQgA3AxggACgCQCEDIAAgAjYCQCADRQ0AIAMoAgAiAgRAIAMgAjYCBCACEAQLIAMQBAsgACgCQEEAIAAoAhxBAWsiAkEKTQR/IAJBAnRBpM8AaigCAAVBfwsgAC0AGGysIgQgAa1+EKoBIgMEQCAAIAAoAkAiAjYCACAAIAIpAxA3AwggAikDGCEFIABCADcDMCAAIAQ3AyggACAFNwMQIAAgATYCUAsgAwtwACAAIAEpAwA3AwAgACABKQM4NwM4IAAgASkDMDcDMCAAIAEpAyg3AyggACABKQMgNwMgIAAgASkDGDcDGCAAIAEpAxA3AxAgACABKQMINwMIIABBADYCWCAAQgA3A0AgAEIANwNIIABCADcATSAACzMAIABBADYCACAAIAE2AjggAEIANwMwIAAgBTcDKCAAIAQ6ACAgACADNgIcIAAgAjoAGAsQACAAKAIEIAAoAgBrQQJ1CwcAIAAoAlALCwAgAARAIAAQBAsLxwEBBH8CQCAAIAEQLSIBIABBBGpGDQAgAUEcaiIAKAIAIAAgASwAJ0EASBshAQNAIAEiAEEBaiEBIAAsAAAiAkEgRiACQQlrQQVJcg0ACwJAAkACQCAALAAAIgJBK2sOAwECAAILQQEhBAsgASwAACECIAEhAAsgAkEwa0EKSQRAA0AgA0EKbCAALAAAa0EwaiEDIAAsAAEhASAAQQFqIQAgAUEwa0EKSQ0ACwsgA0EAIANrIAQbIgBBf0YNACAAQQBHIQULIAULUQEBfgJ/IAEEQEEAQQEgAiAAEKkBRQ0BGgsgAEEBOgAkIABBADYCICAAIAAoAgAgACkDECIDp2oiAjYCGCAAIAIgACkDCCADfadqNgIcQQELC4gBAQN/IAAEQCAAKAIYIgMEQCAAKAIcIgIgAyIBRwRAA0AgAkEEayICKAIAIQEgAkEANgIAIAEEQCABQQxqIAEoAhAQFyABIAEoAgQQFiABEAQLIAIgA0cNAAsgACgCGCEBCyAAIAM2AhwgARAECyAAQQxqIAAoAhAQFyAAIAAoAgQQFiAAEAQLC7ELAgJ/An4jAEEwayIDJAAgA0H2zgApAQA3ASYgA0HwzgApAwA3AyAgA0HozgApAwA3AxggA0HgzgApAwA3AxACQAJAIAEpAwggASkDECIFQgV8UwRAIANBEGoQEyIEQfD///8HTw0CAkACQCAEQQtPBEAgBEEPckEBaiIBEAUhAiADIAFBgICAgHhyNgIIIAMgAjYCACADIAQ2AgQgAiAEaiEBDAELIAMgBDoACyADIARqIQEgAyECIARFDQELIAIgA0EQaiAEEAYaCyABQQA6AAAgAEF+NgIAIABBBGohACADLAALQQBOBEAgACADKQMANwIAIAAgAygCCDYCCAwCCyAAIAMoAgAgAygCBBAMIAMsAAtBAE4NASADKAIAEAQMAQsgAiABKAIAIAWnaiIEKAAANgAAIAIgBC0ABDoABCABIAEpAxBCBXwiBTcDECACQeIJQQUQDQRAQSAQBSIBQQA6ABEgAUHWCy0AADoAECABQc4LKQAANwAIIAFBxgspAAA3AAAgAEF/NgIAIABBBGogAUEREAwgARAEDAELIAUgASkDCFkEQCADQRBqEBMiBEHw////B08NAgJAAkAgBEELTwRAIARBD3JBAWoiARAFIQIgAyABQYCAgIB4cjYCCCADIAI2AgAgAyAENgIEIAIgBGohAQwBCyADIAQ6AAsgAyAEaiEBIAMhAiAERQ0BCyACIANBEGogBBAGGgsgAUEAOgAAIABBfjYCACAAQQRqIQAgAywAC0EATgRAIAAgAykDADcCACAAIAMoAgg2AggMAgsgACADKAIAIAMoAgQQDCADLAALQQBODQEgAygCABAEDAELIAIgASgCACAFp2otAAA6AAUgASABKQMQQgF8IgU3AxAgBSABKQMIWQRAIANBEGoQEyIEQfD///8HTw0CAkACQCAEQQtPBEAgBEEPckEBaiIBEAUhAiADIAFBgICAgHhyNgIIIAMgAjYCACADIAQ2AgQgAiAEaiEBDAELIAMgBDoACyADIARqIQEgAyECIARFDQELIAIgA0EQaiAEEAYaCyABQQA6AAAgAEF+NgIAIABBBGohACADLAALQQBOBEAgACADKQMANwIAIAAgAygCCDYCCAwCCyAAIAMoAgAgAygCBBAMIAMsAAtBAE4NASADKAIAEAQMAQsgAiABKAIAIAWnai0AADoABiABIAEpAxBCAXwiBTcDECAFIAEpAwhZBEAgA0EQahATIgRB8P///wdPDQICQAJAIARBC08EQCAEQQ9yQQFqIgEQBSECIAMgAUGAgICAeHI2AgggAyACNgIAIAMgBDYCBCACIARqIQEMAQsgAyAEOgALIAMgBGohASADIQIgBEUNAQsgAiADQRBqIAQQBhoLIAFBADoAACAAQX42AgAgAEEEaiEAIAMsAAtBAE4EQCAAIAMpAwA3AgAgACADKAIINgIIDAILIAAgAygCACADKAIEEAwgAywAC0EATg0BIAMoAgAQBAwBCyACIAEoAgAgBadqLQAAOgAHIAEgASkDEEIBfCIFNwMQIAUgASkDCFkEQCADIANBEGoQTyEBIABBfjYCACAAQQRqIQAgASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggMAgsgACABKAIAIAEoAgQQDCABLAALQQBODQEgASgCABAEDAELIAIgASgCACAFp2otAAA6AAggASABKQMQIgVCAXwiBjcDECABKQMIIAVCA3xTBEAgAyADQRBqEE8hASAAQX42AgAgAEEEaiEAIAEsAAtBAE4EQCAAIAEpAgA3AgAgACABKAIINgIIDAILIAAgASgCACABKAIEEAwgASwAC0EATg0BIAEoAgAQBAwBCyACIAEoAgAgBqdqLwAAOwEKIAEgASkDEEICfDcDECAAQgA3AgggAEIANwIACyADQTBqJAAPCxAUAAvvBQEGf0F/IQUCf0F/IAFBf0YNABogAUEBaiICIAFBAmsgAkEDcBshBSABQQFrIAFBA3ANABogAUECagshBgJAAn8CQAJAAkACQCAAKAKoAQ4IAAAFAgUBBQMFC0F/IQEgACgClAEhBEF/IQJBASEDIAAoApwBIgcgBUF/RwR/IAQoAgAgBUECdGooAgAFQX8LQQJ0aiICIAIoAgBBAWo2AgAgByAG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IAIgAygCBCIENgIAIAQEQCAEIAI2AggLIAMgAigCCDYCCCACKAIIIgQgBCgCACACR0ECdGogAzYCACADIAI2AgQgAiADNgIIIAIhBQsgAyADKAIIIgItAAw6AAwgAkEBOgAMIAVBAToADCACIAIoAgQiAygCACIENgIEIAQEQCAEIAI2AggLIAMgAigCCDYCCCACKAIIIgQgBCgCACACR0ECdGogAzYCACADIAI2AgAgAiADNgIIDAQLIAVFBEAgAkEBOgAMIANBADoADCADIAIoAgQiBTYCACAFBEAgBSADNgIICyACIAMoAgg2AgggAygCCCIFIAUoAgAgA0dBAnRqIAI2AgAgAiADNgIEIAMgAjYCCCACIAQgAyAERhshBCADKAIAIQILAkACQCACKAIAIgVFDQAgBS0ADA0AIAIhAwwBCwJAIAIoAgQiAwRAIAMtAAxFDQELIAJBADoADCACKAIIIgItAAxBACACIARHGw0CIAJBAToADAwFCyAFBEAgBS0ADEUEQCACIQMMAgsgAigCBCEDCyADQQE6AAwgAkEAOgAMIAIgAygCACIENgIEIAQEQCAEIAI2AggLIAMgAigCCDYCCCACKAIIIgQgBCgCACACR0ECdGogAzYCACADIAI2AgAgAiADNgIIIAIhBQsgAyADKAIIIgItAAw6AAwgAkEBOgAMIAVBAToADCACIAIoAgAiAygCBCIENgIAIAQEQCAEIAI2AggLIAMgAigCCDYCCCACKAIIIgQgBCgCACACR0ECdGogAzYCACADIAI2AgQgAiADNgIIDAMLIAIoAggiAyADKAIAIAJGQQJ0aigCACECDAALAAsgBUEBOgAMCyAHKAIcIgIEQCAHIAI2AiAgAhAECyAHLAAbQQBIBEAgBygCEBAECyAHEAQLIAlBADYCCCAJQgA3AwAgBigCBCICIAYoAgAiA2shBEEAIQUCQAJAIAIgA0cEQCAEQQBIDQEgCSAEEAUiBUEAIAQQByICIARqIgc2AgggCSAHNgIEIAkgAjYCACADIQILIAUgAiAEEAYaAkAgBiwAG0EATgRAIAkgBigCGDYCGCAJIAYpAhA3AxAMAQsgCUEQaiAGKAIQIAYoAhQQDAsgCUEcaiAJEJUBIAlBEGoiBCECIAkCfwJAAkAgCCgCBCIDRQRAIAhBBGoiBSECDAELIAIoAgAgAiACLQALIgXAQQBIIgcbIQogAigCBCAFIAcbIQcDQAJAAkACQAJAAkAgAyICKAIUIAItABsiAyADwEEASCIOGyIDIAcgAyAHSSIQGyIFBEAgCiACKAIQIAJBEGogDhsiDiAFEA0iFEUEQCADIAdLDQIMAwsgFEEATg0CDAELIAMgB00NAgsgAiEFIAIoAgAiAw0EDAULIA4gCiAFEA0iAw0BCyAQDQEMBAsgA0EATg0DCyACKAIEIgMNAAsgAkEEaiEFC0EoEAUiAyAEKAIINgIYIAMgBCkCADcCECAEQgA3AgAgBEEANgIIIANBHGogBEEMahCVASADIAI2AgggA0IANwIAIAUgAzYCACADIQIgCCgCACgCACIEBEAgCCAENgIAIAUoAgAhAgsgCCgCBCACED4gCCAIKAIIQQFqNgIIQQEMAQsgAiEDQQALOgAsIAkgAzYCKCAJKAIcIgIEQCAJIAI2AiAgAhAECyAJLAAbQQBIBEAgCSgCEBAECyAJKAIAIgIEQCAJIAI2AgQgAhAECyAJQTBqJAAMAQsQCAALIAYoAgAiA0UNAQsgBiADNgIEIAMQBAsgFyAZWSEDCyAGLAAbQQBIBEAgBigCEBAECyAGQSBqJAAgAwwBCxAIAAtFDQUgDUEBaiINIA9HDQALCyALQQA2AgxBASALQQxqIAAoAgAQNkUNAyALKAIMIgOtIAAoAgAiAikDCCACKQMQfVUNAyADBEBBACENIBMgEkEAR2ohBQNAAkAgASARSQRAIAEgBTYCCCABQQA2AgQgASAINgIAIAFBDGohASALKAIMIQMMAQsgASAMayICQQxtIgdBAWoiAUHWqtWqAU8NBEHVqtWqASARIAxrQQxtIgRBAXQiBiABIAEgBkkbIARBqtWq1QBPGyIEBH8gBEHWqtWqAU8NBiAEQQxsEAUFQQALIgYgB0EMbGoiASAFNgIIIAFBADYCBCABIAg2AgAgASACQXRtQQxsaiAMIAIQCiECIAYgBEEMbGohESABQQxqIQEgDARAIAwQBAsgAiEMCyANQQFqIg0gA0kNAAsLIAEgDEcNAAtBASEVDAILEAgACxAJAAsgDARAIAwQBAsgC0EgaiQAIBUL2wIBBH9BfyEDQX8hBEF/IQICfwJAIAFBf0YNACAAKAIEKAIMIAFBAnRqKAIAIQRBfyEFIAFBAWoiAiABQQJrIAJBA3AbIgJBAE4EQCAAKAIAKAJgIAJBA24iBUEMbGogAiAFQQNsa0ECdGooAgAhBQsCQCAEQX9GDQBBf0ECIARBA3AbIARqIgJBAEgNACAAKAIAKAJgIAJBA24iA0EMbGogAiADQQNsa0ECdGooAgAhAwtBfyADIAVHDQEaQX8hAgJAQX9BAiABQQNwGyABaiIBQQBOBEAgACgCACgCYCABQQNuIgNBDGxqIAEgA0EDbGtBAnRqKAIAIQMgBEF/Rg0CDAELQX8hAyAEQX9HDQAMAQsgBEEBaiIBIARBAmsgAUEDcBsiAUEASA0AIAAoAgAoAmAgAUEDbiIAQQxsaiABIABBA2xrQQJ0aigCACECC0F/IAQgAiADRxsLC+4DAQZ/IAAoAgAiBiABQQN2Qfz///8BcWoiAiACKAIAQQEgAXRyNgIAIAAoAkAhBQJ/QX8gAUF/RiIEDQAaQX8gAUEBaiIDIAFBAmsgA0EDcBsiA0F/Rg0AGiAFKAIAIANBAnRqKAIACyECIAAoAgwiAyACQQN2Qfz///8BcWoiByAHKAIAQQEgAnRyNgIAAkACfyAERQRAIAMCfwJAIAFBA3AEQCABQQFrIQQMAQtBfyABQQJqIgRBf0YNARoLIAUoAgAgBEECdGooAgALIgJBA3ZB/P///wFxaiIEIAQoAgBBASACdHI2AgBBfyECIAUoAgwgAUECdGooAgAiAUF/Rg0CIABBADoAGCAGIAFBA3ZB/P///wFxaiIAIAAoAgBBASABdHI2AgAgAUEBaiIAIAFBAmsgAEEDcBsiAEF/RwRAIAUoAgAgAEECdGooAgAhAgsgAyACQQN2Qfz///8BcWoiACAAKAIAQQEgAnRyNgIAQQECfwJAIAFBA3AEQCABQQFrIQEMAQtBfyABQQJqIgFBf0YNARoLIAUoAgAgAUECdGooAgALIgB0IQEgAyAAQQN2Qfz///8BcWoiACgCAAwBCyADQfz///8BaiEAIAMoAvz///8BIQFBgICAgHgLIQIgACABIAJyNgIACwuzDAELfyAAIAAoAjQ2AjggACAAKAIoNgIsIAAoAkAiASgCHCABKAIYIgJGBEBBAQ8LAkACQAJAA0AgBiEIAkAgAiAKQQJ0aigCACIGQX9GBEAgCCEGDAELAkAgACgCOCIBIAAoAjxHBEAgASAINgIAIAAgAUEEajYCOAwBCyABIAAoAjQiBGsiA0ECdSIFQQFqIgJBgICAgARPDQNB/////wMgA0EBdiIHIAIgAiAHSRsgA0H8////B08bIgMEfyADQYCAgIAETw0FIANBAnQQBQVBAAsiByAFQQJ0aiICIAg2AgAgAkEEaiEFIAEgBEcEQANAIAJBBGsiAiABQQRrIgEoAgA2AgAgASAERw0ACwsgACAHIANBAnRqNgI8IAAgBTYCOCAAIAI2AjQgBEUNACAEEAQLAkACQCAAKAIMIApBA3ZB/P///wFxaigCACAKdkEBcUUNACAGQQFqIgQgBkECayAEQQNwGyIEQX9GDQAgACgCACAEQQN2Qfz///8BcWooAgAgBHZBAXENACAAKAJAKAIMIARBAnRqKAIAIgRBf0YNACAEQQFqIgEgBEECayABQQNwGyIBQX9GDQAgACgCQCECIAAoAgAhBQNAIAEhBEF/IQECQCAEQQFqIgMgBEECayADQQNwGyIDQX9GDQAgBSADQQN2Qfz///8BcWooAgAgA3ZBAXENACACKAIMIANBAnRqKAIAIgNBf0YNACADQQFqIgEgA0ECayABQQNwGyEBCyABIAZHBEAgAUF/Rg0DDAELC0EADwsgBiEECyAAKAIcIARBAnRqIAg2AgACQCAAKAIsIgEgACgCMEcEQCABIAQ2AgAgACABQQRqNgIsDAELIAEgACgCKCIGayIDQQJ1IgVBAWoiAkGAgICABE8NBUH/////AyADQQF2IgcgAiACIAdJGyADQfz///8HTxsiAwR/IANBgICAgARPDQUgA0ECdBAFBUEACyIHIAVBAnRqIgIgBDYCACACQQRqIQUgASAGRwRAA0AgAkEEayICIAFBBGsiASgCADYCACABIAZHDQALCyAAIAcgA0ECdGo2AjAgACAFNgIsIAAgAjYCKCAGRQ0AIAYQBAsgCEEBaiEGIAAoAkAhASAEQX9GDQACQCAEQQNwBEAgBEEBayECDAELIARBAmoiAkF/Rg0BCyABKAIMIAJBAnRqKAIAIgNBf0YNACADQX9BAiADQQNwG2oiBUF/Rg0AIAQgBUYNAANAIAAoAgAgBUEBaiIBIAVBAmsgAUEDcBsiAUEDdkH8////AXFqKAIAIAF2QQFxBEACQCAAKAI4IgEgACgCPEcEQCABIAY2AgAgACABQQRqNgI4DAELIAEgACgCNCIIayIDQQJ1IgdBAWoiAkGAgICABE8NBUH/////AyADQQF2IgkgAiACIAlJGyADQfz///8HTxsiAwR/IANBgICAgARPDQcgA0ECdBAFBUEACyIJIAdBAnRqIgIgBjYCACACQQRqIQcgASAIRwRAA0AgAkEEayICIAFBBGsiASgCADYCACABIAhHDQALCyAAIAkgA0ECdGo2AjwgACAHNgI4IAAgAjYCNCAIRQ0AIAgQBAsgBkEBaiEDAkAgACgCLCIBIAAoAjBHBEAgASAFNgIAIAAgAUEEajYCLAwBCyABIAAoAigiCGsiAkECdSIJQQFqIgdBgICAgARPDQdB/////wMgAkEBdiILIAcgByALSRsgAkH8////B08bIgcEfyAHQYCAgIAETw0HIAdBAnQQBQVBAAsiCyAJQQJ0aiICIAU2AgAgAkEEaiEJIAEgCEcEQANAIAJBBGsiAiABQQRrIgEoAgA2AgAgASAIRw0ACwsgACALIAdBAnRqNgIwIAAgCTYCLCAAIAI2AiggCEUNACAIEAQLIAYhCCADIQYLIAAoAhwgBUECdGogCDYCACAAKAJAIQECQCAFQQNwBEAgBUEBayECDAELIAVBAmoiAkF/Rg0CCyABKAIMIAJBAnRqKAIAIgNBf0YNASADQX9BAiADQQNwG2oiBUF/Rg0BIAQgBUcNAAsLIApBAWoiCiABKAIcIAEoAhgiAmtBAnVJDQALQQEPCxAIAAsQCQALEAgAC4YEAQZ/IwBBEGsiBiQAAkACQCABBEAgAEIANwJYIAAoAlQhAiAAQQA2AlQgAgRAIAIQBAsgAEIANwJMIAAoAkghAiAAQQA2AkggAgRAIAIQBAsgASgCACECIAEoAgQhAyAGQQA6AA8gACADIAJrQQJ1IAZBD2oQGSABKAIcIQIgASgCGCEDIAZBADoADiAAQQxqIAIgA2tBAnUgBkEOahAZIABBHGogASgCBCABKAIAa0ECdUGs0AAQYgJAIAEoAhwgASgCGGsiA0ECdSIFIAAoAjwgACgCNCIEa0ECdU0NACADQQBIDQIgACgCOCECIAMQBSIDIAVBAnRqIQUgAyACIARrQXxxaiIHIQMgAiAERwRAA0AgA0EEayIDIAJBBGsiAigCADYCACACIARHDQALCyAAIAU2AjwgACAHNgI4IAAgAzYCNCAERQ0AIAQQBAsCQCABKAIcIAEoAhhrIgNBAnUiBSAAKAIwIAAoAigiBGtBAnVNDQAgA0EASA0DIAAoAiwhAiADEAUiAyAFQQJ0aiEFIAMgAiAEa0F8cWoiByEDIAIgBEcEQANAIANBBGsiAyACQQRrIgIoAgA2AgAgAiAERw0ACwsgACAFNgIwIAAgBzYCLCAAIAM2AiggBEUNACAEEAQLIABBAToAGCAAIAE2AkALIAZBEGokAA8LEAgACxAIAAuRAgEEfwJAAkAgAUHWqtWqBUkgASACckEATnEiBUUNACAAIAFBA2wiAUHwzwAQYiAAQQxqIAFB9M8AEGICQCAAKAIgIAAoAhgiA2tBAnUgAk8NACACQYCAgIAETw0CIAAoAhwhASACQQJ0IgIQBSIEIAJqIQYgBCABIANrQXxxaiIEIQIgASADRwRAA0AgAkEEayICIAFBBGsiASgCADYCACABIANHDQALCyAAIAY2AiAgACAENgIcIAAgAjYCGCADRQ0AIAMQBAsgAEIANwJQIAAoAkwhASAAQQA2AkwgAQRAIAEQBAsgAEIANwJEIABBQGsiASgCACEAIAFBADYCACAARQ0AIAAQBAsgBQ8LEAgAC44FAgp/A34jAEHQAGsiAyQAAkBBASADQcwAaiABEGFFDQAgAygCTCIIRQ0AIAitIAEpAwggASkDEH1CBX5VDQACQCAAKAIIIAAoAgQiBGtBAnUiAiAISQRAIABBBGogCCACaxALDAELIAIgCE0NACAAIAQgCEECdGo2AggLIABBEGohCyAAKAIgIQQDQCABKQMIIg4gASkDECINVwRAQQAhAgwCCyABKAIAIgIgDadqLQAAIQUgASANQgF8Igw3AxAgDCAOWQRAQQAhAgwCCyACIAynai0AACEGIAEgDUICfCIMNwMQIAwgDlkEQEEAIQIMAgsgAiAMp2otAAAhByABIA1CA3wiDDcDECAMIA5ZBEBBACECDAILIAIgDKdqLQAAIQIgASANQgR8NwMQIAVBBEsEQEEAIQIMAgsgBkEMa0H/AXFB9QFJBEBBACECDAILIAdFBEBBACECDAILIANBCGoQOyIJIAUgByAGIAJBAEcgBkEBayICQQpNBH8gAkECdEGkzwBqKAIABUF/CyAHbKwQaUEBIANBBGogARBhBEAgAyADKAIEIgU2AkRB4AAQBSAJEGghAiAEIAQoAgwgBCgCCGtBAnUgAiAEKAIAKAIIEQYAIAQoAgwgBCgCCGtBAnVBAWsiBkECdCICIAQoAghqKAIAIAU2AjwgACgCBCAKQQJ0aiAGNgIAAkAgBiAAKAIUIAAoAhAiB2tBAnUiCUgNACADQX82AgAgCSAGQQFqIgVJBEAgCyAFIAlrIAMQGiALKAIAIQcMAQsgBSAJTw0AIAAgByAFQQJ0ajYCFAsgAiAHaiAKNgIAQQEhAiAKQQFqIgogCEcNAQwCCwtBACECCyADQdAAaiQAIAILBABBBAsEAEEDC4sFAQx/QQAhACMAQRBrIgokACABKAJQIgggAi0AGCIEbCEBAkACQAJAAkACQCACKAIcIgdBBUcgB0EGR3ENACACLQBURQ0AIAIoAjAhBSACKAIAKAIAIQIgCkEANgIIIApCADcDACABBEAgAUEASA0CIAFBAnQiARAFIgAgAiAFaiABEAYgAWohBgsgAygCACIBBEAgAyABNgIEIAEQBAsgAyAGNgIIIAMgBjYCBCADIAA2AgBBASEFDAQLIAQEQCAEQQJ0IgcQBSIAQQAgBxAHGgsCQCADKAIEIAMoAgAiCWtBAnUiByABSQRAIAMgASAHaxALDAELIAEgB08NACADIAkgAUECdGo2AgQLIAhFBEBBASEFDAILIARFBEBBACEBA0AgAiACLQBUBH8gAQUgAigCRCABQQJ0aigCAAsgAiwAGCAAEElFDQMgAUEBaiIBIAhPIQUgASAIRw0ACwwCCyAEQfwBcSEOIARBA3EhCyAEQQRJIQ9BACEEA0AgAiACLQBUBH8gBAUgAigCRCAEQQJ0aigCAAsgAiwAGCAAEElFDQIgAygCACEMQQAhDUEAIQFBACEFIA9FBEADQCAMIAZBAnRqIgcgACABQQJ0IglqKAIANgIAIAcgACAJQQRyaigCADYCBCAHIAAgCUEIcmooAgA2AgggByAAIAlBDHJqKAIANgIMIAFBBGohASAGQQRqIQYgBUEEaiIFIA5HDQALCyALBEADQCAMIAZBAnRqIAAgAUECdGooAgA2AgAgAUEBaiEBIAZBAWohBiANQQFqIg0gC0cNAAsLIARBAWoiBCAITyEFIAQgCEcNAAsMAgsQCAALIABFDQELIAAQBAsgCkEQaiQAIAULEAAgACgCACABQQJ0aigCAAsQACAAKAIEIAAoAgBrQQF1Cw0AIAAoAgQgACgCAGsLEAAgACgCDCAAKAIIa0ECdQsRACAAIAEgACgCACgCDBEBAAttAQJ/QSgQBSICQX82AgAgAkEIaiIDQgA3AxAgA0EANgIIIANCADcDACADQgA3AxggACACIAAoAgAoAhARBAAgASgCWCEAIAEgAjYCWCAABEAgACgCCCIBBEAgACABNgIMIAEQBAsgABAEC0EBCwcAIAAoAgAL2AEBBn8gASAAKAIIIgMgACgCBCICa0EBdU0EQCAAIAEEfyACQQAgAUEBdCIAEAcgAGoFIAILNgIEDwsCQCACIAAoAgAiAmsiBkEBdSIHIAFqIgRBAE4EQEH/////ByADIAJrIgMgBCADIARLGyADQf7///8HTxsiBARAIARBAEgNAiAEQQF0EAUhBQsgBSAHQQF0akEAIAFBAXQiARAHIQMgACAFIAIgBhAKIgUgBEEBdGo2AgggACABIANqNgIEIAAgBTYCACACBEAgAhAECw8LEAgACxAJAAt4AgF+An8CQCAAQQpLDQAgAikDECIDIAIpAwhZDQAgAigCACADp2osAAAhBSACIANCAXw3AxAgBa0hAyABAn4gBUEASARAIABBAWogASACEKkBRQ0CIANC/wCDIAEpAwBCB4aEDAELIANC/wGDCzcDAEEBIQQLIAQL0gMBBn8CfwJAAkAgAUUEQEEAIAJCAFMNAxogACgCBCIHIAAoAgAiA2siBCACpyIBSQRAIAEgBGsiBSAAKAIIIgYgB2tNBEAgACAHQQAgBRAHIAVqNgIEDAMLIAFBAEgNA0H/////ByAGIANrIgdBAXQiBiABIAEgBkkbIAdB/////wNPGyIHEAUiBiAEakEAIAUQBxogACAGIAMgBBAKIgQgB2o2AgggACABIARqNgIEIAAgBDYCACADRQ0CIAMQBAwCCyABIARPDQEgACABIANqNgIEDAELQQAgAkIAUw0CGgJAIAAoAgQiBiAAKAIAIgRrIgWtIAJZDQAgAqciAyAFSwRAIAMgBWsiByAAKAIIIgggBmtNBEAgACAGQQAgBxAHIAdqNgIEDAILIANBAEgNA0H/////ByAIIARrIgZBAXQiCCADIAMgCEkbIAZB/////wNPGyIGEAUiCCAFakEAIAcQBxogACAIIAQg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CyAAKAJsIgEEQCABEAQLIAAoAmAiAQRAIAEQBAsgACgCSCIBBEAgACABNgJMIAEQBAsgACgCPCIBBEAgARAECyAAKAIwIgEEQCAAIAE2AjQgARAECyAAKAIkIgEEQCAAIAE2AiggARAECyAAKAIYIgEEQCAAIAE2AhwgARAECyAAKAIMIgEEQCAAIAE2AhAgARAECyAAKAIIIQEgAEEANgIIIAEEQCABEC4LIAALmgEBBH8gACgCACIEBEAgBCEDIAQgACgCBCIBRwRAA0AgAUGQAWsiAygChAEiAgRAIAFBCGsgAjYCACACEAQLIAFBHGsoAgAiAgRAIAFBGGsgAjYCACACEAQLIAFBKGsoAgAiAgRAIAFBJGsgAjYCACACEAQLIAFBjAFrEFEgAyIBIARHDQALIAAoAgAhAwsgACAENgIEIAMQBAsLpQMBBH8gAEHcwAA2AgAgACgC8AIhAyAAQQA2AvACIAMEQCADQQRrIgQoAgAiAQRAIAMgAUEEdGohAgNAIAJBEGsiAiADRw0ACwsgBBAECyAAQdgBahCxASAAKALEASIBBEAgACABNgLIASABEAQLIAAoArgBIgEEQCAAIAE2ArwBIAEQBAsgACgCrAEiAQRAIAAgATYCsAEgARAECyAAKAKgASIBBEAgACABNgKkASABEAQLIAAoApABIgIEQANAIAIoAgAhASACEAQgASICDQALCyAAKAKIASEBIABBADYCiAEgAQRAIAEQBAsgACgCeCIBBEAgARAECyAAKAJsIgEEQCABEAQLIAAoAmAiAQRAIAEQBAsgACgCSCIBBEAgACABNgJMIAEQBAsgACgCPCIBBEAgARAECyAAKAIwIgEEQCAAIAE2AjQgARAECyAAKAIkIgEEQCAAIAE2AiggARAECyAAKAIYIgEEQCAAIAE2AhwgARAECyAAKAIMIgEEQCAAIAE2AhAgARAECyAAKAIIIQEgAEEANgIIIAEEQCABEC4LIAALBwAgACgCCAuyAQEDfwJAIAAoAgQiAiAAKAIIIgRBBXRGBEAgAkEBakEASA0BQf////8HIQMgACACQf7///8DTQR/IARBBnQiAyACQWBxQSBqIgIgAiADSRsFQf////8HCxAwIAAoAgQhAgsgACACQQFqNgIEQQEgAnQhAyAAKAIAIAJBA3ZB/P///wFxaiEAIAEt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ACgCBDYCBCACIAAoAgg2AgggAiAAKAIMNgIMIABBADYCDCAAQgA3AgQgAiAAKAIQNgIQIAIgACgCFDYCFCACIAAoAhg2AhggAEEANgIYIABCADcCECAALQAcIQUgAkEANgIoIAJCADcCICACIAU6ABwgAiAAKAIgNgIgIAIgACgCJDYCJCACIAAoAig2AiggAEEANgIoIABCADcCICACQQA2AjQgAkIANwIsIAIgACgCLDYCLCACIAAoAjA2AjAgAiAAKAI0NgI0IABBADYCNCAAQgA3AiwgAkFAayIFQQA2AgAgAkIANwI4IAIgACgCODYCOCACIAAoAjw2AjwgBSAAQUBrIgUoAgA2AgAgBUEANgIAIABCADcCOCACIAAoAkQ2AkQgACgCSCEFIAJBADYCVCACQgA3AkwgAiAFNgJIIAIgACgCTDYCTCACIAAoAlA2AlAgAiAAKAJUNgJUIABBADYCVCAAQgA3AkwgAkEANgJgIAJCADcCWCACIAAoAlg2AlggAiAAKAJcNgJcIAIgACgCYDYCYCAAQQA2AmAgAEIANwJYIAAtAGQhBSACQQA2AnAgAkIANwJoIAIgBToAZCACIAAoAmg2AmggAiAAKAJsNgJsIAIgACgCcDYCcCAAQQA2AnAgAEIANwJoIAJBADYCfCACQgA3AnQgAiAAKAJ0NgJ0IAIgACgCeDYCeCACIAAoAnw2AnwgAEEANgJ8IABCADcCdCAAKAKAASEFIAJBADYCjAEgAkIANwKEASACIAU2AoABIAIgACgChAE2AoQBIAIgACgCiAE2AogBIAIgACgCjAE2AowBIABBADYCjAEgAEIANwKEASAEIAZHDQALIAEgAzYCCCABKAIEIQAgASAHNgIEIAEoAgAhBCABIAI2AgAgACAERg0DA0AgAEGQAWsiASgChAEiAgRAIABBCGsgAjYCACACEAQLIABBHGsoAgAiAgRAIABBGGsgAjYCACACEAQLIABBKGsoAgAiAgRAIABBJGsgAjYCACACEAQLIABBjAFrEFEgASIAIARHDQALDAMLEAgACxAJAAsgASADNgIIIAEgBzYCBCABIAI2AgALIAQEQCAEEAQLCw8LIAEgA0kEQCAGIAFBkAFsaiIEIAJHBEADQCACQZABayIBKAKEASIDBEAgAkEIayADNgIAIAMQBAsgAkEcaygC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AkEANgIEIAJBADYCTCACIAQ2AkQgAkGwwwA2AgggAkIANwIMIAJCADcCFCACQgA3AhwgAkIANwIkIAJCADcCLCACQQA2AjQgAiAFIANBkAFsaiIDQegAaiIFNgJIIAJBQGtBADYCACACQgA3AjggCCAENgIYIAhCADcCRCAIQgA3AjwgCEIANwI0IAhCADcCLCAIQgA3AlQgCEIANwJMIAggAjYCHCAIIAgpAxg3AwggCCAFNgIUIAggA0EEaiIENgIQIAhCADcCJCAIQbDDADYCICAIIAgpAxA3AwAgCEEgaiIDIAQgCBC9ASACQQhqIgQgAxByIAMgBEcEQCACQThqIAMoAjAgAygCNBA3CyADELwBGgwCCyMAQUBqIgIkACAAKAIEKAIsIQZB0AAQBSIDQbDJADYCACADQQA2AgQgA0EANgJMIAMgBDYCSCADIAY2AkQgA0HUygA2AgggA0IANwIMIANCADcCFCADQgA3AhwgA0IANwIkIANCADcCLCADQQA2AjQgA0FAa0EANgIAIANBOGoiCkIANwIAIAAoAgghBSACQgA3AyggAkIANwMgIAJBGGoiB0IANwMAIAJCADcDECACQQA2AjggAkIANwMIIAJCADcDMCACQdTKADYCACACIAU2AgQgBSgCACEJIAUoAgQhCyACQQA6AD8gByALIAlrQQJ1QQNuIAJBP2oiBxAZIAIoAgQiCSgCHCELIAkoAhghCSACQQA6AD8gAkEkaiALIAlrQQJ1IAcQGSACIAM2AhQgAiAGNgIQIAIgBDYCDCACIAU2AgggA0EIaiACEHIgCiACKAIwIAIoAjQQNyACQdTKADYCACACKAIwIgQEQCACIAQ2AjQgBBAECyACQZzJADYCACACKAIkIgQEQCAEEAQLIAIoAhgiBARAIAQQBAsgAkFAayQAIAMLIgJFDQELQcAAEAUgAhCAASECIAAoAgQhAyACIQACQAJAIAEiAkEATgRAIANBCGohBgJAIAMoAgwiASADKAIIIgprQQJ1IgQgAkoNACACQQFqIQUgAiAETwRAIAYgBSAEaxBaDAELIAQgBU0NACAKIAVBAnRqIgUgAUcEQANAIAFBBGsiASgCACEEIAFBADYCACAEBEAgBCAEKAIAKAIEEQIACyABIAVHDQALCyADIAU2AgwLIAYoAgAgAkECdGoiAygC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CikCADcCACAIIAooAgg2AgggBEEANgIQDAELIAggBSgCBCAFKAIIEAwgBSwADyEIIARBADYCECAIQQBODQAgBSgCBBAECyAGEAQLIAVBEGokAAJAIAQoAgAiBQRAIAAgBTYCACAAQQRqIQAgBCwAD0EATgRAIAAgBEEEciIBKQIANwIAIAAgASgCCDYCCAwCCyAAIAQoAgQgBCgCCBAMDAELIAQoAhAhBSAEQQA2AhAgBSADNgIsIwBBIGsiBiQAIAUgAjYCICAFIAE2AiggBSADNgIEIAAgAiAGQRBqEHACQCAAKAIADQAgACwAD0EASARAIAAoAgQQBAsgBi0AFyIBIAUgBSgCACgCCBEAAEcEQEHAABAFIgFBADoAMiABQZgKLwAAOwAwIAFBkAopAAA3ACggAUGICikAADcAICABQYAKKQAANwAYIAFB+AkpAAA3ABAgAUHwCSkAADcACCABQegJKQAANwAAIABBfzYCACAAQQRqIAFBMhAMIAEQBAwBCyAFIAYtABUiAjoAJCAFIAYtABYiAzoAJSACQQJHBEBBIBAFIgFBADoAGiABQZMLLwAAOwAYIAFBiwspAAA3ABAgAUGDCykAADcACCABQfsKKQAANwAAIABBezYCACAAQQRqIAFBGhAMIAEQBAwBCyADQQJBAyABGyIBRwRAQSAQBSIBQQA6ABogAUH4Ci8AADsAGCABQfAKKQAANwAQIAFB6AopAAA3AAggAUHgCikAADcAACAAQXs2AgAgAEEEaiABQRoQDCABEAQMAQsgBSgCICABQYAEcjsBJgJAIAYuARpBAE4NACMAQRBrIgMkAEEkEAUiAUIANwIEIAFCADcCGCABQRBqIgJCADcCACABIAFBBGo2AgAgAUEANgIgIAEgAjYCDCADQQA2AgAgBSgCICECIwBBEGsiCiQAAn9BACABRQ0AGiADIAI2AgAgCkEANgIMQQBBASAKQQxqIAIQNkUNABogCigCDCIOBEADQAJAQQEgCkEIaiADKAIAEDYEQEEcEAUiAkIANwIEIAJBEGoiCEIANwIAIAIgAkEEajYCACACIAg2AgwgAiAKKAIINgIYIAMgAhCXAQ0BIAJBDGogAigCEBAXIAIgAigCBBAWIAIQBAtBAAwDCyMAQRBrIggkACAIIAI2AggCQCACRQ0AAkAgASgCHCIHIAEoAiBJBEAgCEEANgIIIAcgAjYCACABIAdBBGo2AhwMAQtBACECAkACQAJAIAEoAhwgASgCGCIJa0ECdSIMQQFqIgdBgICAgARJBEBB/////wMgASgCICAJayIJQQF2IgsgByAHIAtJGyAJQfz///8HTxsiCQRAIAlBgICAgARPDQIgCUECdBAFIQILIAgoAgghCyAIQQA2AgggAiAMQQJ0aiIHIAs2AgAgAiAJQQJ0aiEJIAdBBGohDCABKAIcIgIgASgCGCILRg0CA0AgAkEEayICKAIAIQ8gAkEANgIAIAdBBGsiByAPNgIAIAIgC0cNAAsgASAJNgIgIAEoAhwhCSABIAw2AhwgASgCGCECIAEgBzYCGCACIAlGDQMDQCAJQQRrIgkoAgAhByAJQQA2AgAgBwRAIAdBDGogBygCEBAXIAcgBygCBBAWIAcQBAsgAiAJRw0ACwwDCxAIAAsQCQALIAEgCTYCICABIAw2AhwgASAHNgIYCyACBEAgAhAECwsgCCgCCCECIAhBADYCCCACRQ0AIAJBDGogAigCEBAXIAIgAigCBBAWIAIQBAsgCEEQaiQAIA1BAWoiDSAORw0ACwsgAyABEJcBCyECIApBEGokAAJAIAIEQCAFKAIEIggoAgQhAiAIIAE2AgQgAgRAIAIQbwsgAEIANwIAIABCADcCCAwBC0EgEAUiAkEAOgAaIAJBjQwvAAA7ABggAkGFDCkAADcAECACQf0LKQAANwAIIAJB9QspAAA3AAAgAEF/NgIAIABBBGogAkEaEAwgAhAEIANBADYCCCABEG8LIANBEGokACAAKAIADQEgACwAD0EATg0AIAAoAgQQBAsgBSAFKAIAKAIMEQAARQRAQTAQBSIBQQA6ACEgAUHeCi0AADoAICABQdYKKQAANwAYIAFBzgopAAA3ABAgAUHGCikAADcACCABQb4KKQAANwAAIABBfzYCACAAQQRqIAFBIRAMIAEQBAwBCyAFIAUoAgAoAhQRAABFBEAgBkGQDBBPIQEgAEF/NgIAIABBBGohAiABLAALQQBOBEAgAiABKQIANwIAIAIgASgCCDYCCAwCCyACIAEoAgAgASgCBBAMIAEsAAtBAE4NASABKAIAEAQMAQsgBSAFKAIAKAIYEQAARQRAIAZBmwoQTyEBIABBfzYCACAAQQRqIQIgASwAC0EATgRAIAIgASkCADcCACACIAEoAgg2AggMAgsgAiABKAIAIAEoAgQQDCABLAALQQBODQEgASgCABAEDAELIABCADcCACAAQgA3AggLIAZBIGokACAAKAIARQRAIAAsAA9BAEgEQCAAKAIEEAQLIABCADcCACAAQgA3AggLIAUgBSgCACgCBBECAAsgBCgCECEAIARBADYCECAABEAgACAAKAIAKAIEEQIACyAELAAPQQBODQAgBCgCBBAECyAEQdAAaiQAC24CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhDIAUUNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADCx8AQQgQXCAAEIkBIgBB/NkANgIAIABBnNoAQQEQAQALqgECAn8DfgJAIAEpAwgiBSABKQMQIgRCBHwiBlMNACABKAIAIASnaigAACECIAEgBjcDECAFIARCCHwiBFMNACABIAQ3AxAgAkEBcUUNACACZ0EfcyICQQFrQRxLDQAgACACQQFqNgIIIABBfiACdCICQX5zIgM2AhAgACACQX9zNgIMIAAgA0EBdTYCGCAAQwAAAEAgA7KVOAIUIABB4ABqIAEQFSEDCyADCyUBAX8CQCABKAI4DQAgAS0AGEEDRw0AIAAgATYCMEEBIQILIAILQwEBfwJAIAAoAjBFDQAgACgCNEUNACAAKAIcRQ0AIAAoAiBFDQAgACgCJEUNACAAKAIoRQ0AIAAoAkxBf0chAQsgAQsKACAAIAEgAhB/CwQAQQYLBABBAgu/AQIDfwN+AkAgASkDCCIHIAEpAxAiBUIEfCIGUw0AIAEoAgAiAiAFp2ooAAAhAyABIAY3AxAgByAFQgh8IgVTDQAgAiAGp2ooAAAhAiABIAU3AxAgAiADSA0AIAAgAjYCECAAIAM2AgwgAqwgA6x9IgVC/v///wdWDQAgACAFp0EBaiIDNgIUIAAgA0EBdiICNgIYIABBACACazYCHCADQQFxRQRAIAAgAkEBazYCGAsgAEHwAGogARAVIQQLIAQLKAEBfwJAIAEoAjgNACABLQAYQQNHDQAgAEFAayABNgIAQQEhAgsgAgtGAQF/AkAgAEFAaygCAEUNACAAKAJERQ0AIAAo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IAIpAgA3AgggACACKQIINwIQIAAgAikCEDcCGCAAQQA2AiggAEIANwIgAkAgAigCHCIBIAIoAhgiA0cEQCABIANrIgNBAEgNASAAIAMQBSIBNgIkIAAgATYCICAAIAEgA0F8cWo2AiggAigCGCIDIAIoAhwiBUcEQANAIAEgAygCADYCACABQQRqIQEgA0EEaiIDIAVHDQALCyAAIAE2AiQLIABB2BY2AgAgACAEKQIANwIsIAAgBCkCCDcCNCAAQUBrQgA3AgAgAEGgIDYCPCAAQawbNgIAIAAgBCkCADcCSCAAIAQpAgg3AlAgAEKAgID8czcCaCAAQn83AmAgAEKBgICAcDcCWCAAQZgdNgI8IABCADcCcCAAQgA3AHUgAAwBCxAIAAshAAsgAAwBCwwDCyEDDAELIAQoAiwhBCAHIAk2AgwgByAENgIIIAcgADYCFCAHIABBDGo2AhACfyAHQQhqIQRBACEAAkACQAJAAkACQAJAIAFBAWsOBgAEBAECAwQLQTwQBSIBIAU2AgQgAUGQFzYCACABIAIpAgA3AgggASACKQIINwIQIAEgAikCEDcCGCABQQA2AiggAUIANwIgIAIoAhwiBSACKAIYIgBHBEAgBSAAayIGQQBIDQggASAGEAUiAzYCICABIAMgBkF8cWo2AigDQCADIAAoAgA2AgAgA0EEaiEDIABBBGoiACAFRw0ACyABIAM2AiQLIAEgBCkCADcCLCABIAQpAgg3AjQgAUG8IDYCACABDAULQfAAEAUiASAFNgIEIAFBkBc2AgAgASACKQIANwIIIAEgAikCCDcCECABIAIpAhA3AhggAUEANgIoIAFCADcCICACKAIcIgUgAigCGCIARwRAIAUgAGsiBkEASA0HIAEgBhAFIgM2AiAgASADIAZBfHFqNgIoA0AgAyAAKAIANgIAIANBBGohAyAAQQRqIgAgBUcNAAsgASADNgIkCyABIAQpAgA3AiwgASAEKQIINwI0IAFCADcCPCABQeQjNgIAIAFCADcCRCABQgA3AkwgAUIANwJUIAFCADcCXCABQgA3AmQgAUEANgJsIAEMBAtB6AAQBSIBIAU2AgQgAUGQFzYCACABIAIpAgA3AgggASACKQIINwIQIAEgAikCEDcCGCABQQA2AiggAUIANwIgIAIoAhwiBSACKAIYIgBHBEAgBSAAayIGQQBIDQMgASAGEAUiAzYCICABIAMgBkF8cWo2AigDQCADIAAoAgA2AgAgA0EEaiEDIABBBGoiACAFRw0ACyABIAM2AiQLIAEgBCkCADcCLCABIAQpAgg3AjQgAUEANgJUIAFCADcCTCABQgA3AjwgAUHQJTYCACABIAQpAgA3AlggASAEKQIINwJgIAEMAwsCf0GAARAFIgAgBTYCBCAAQZAXNgIAIAAgAikCADcCCCAAIAIpAgg3AhAgACACKQIQNwIYIABBADYCKCAAQgA3AiACQCACKAIcIgEgAigCGCIDRwRAIAEgA2siA0EASA0BIAAgAxAFIgE2AiQgACABNgIgIAAgASADQXxxajYCKCACKAIYIgMgAigCHCIFRwRAA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsLIAAgATYCJAsgAEGsIzYCACAAIAQpAgA3AiwgACAEKQIINwI0IABBQGtCADcCACAAQfgrNgI8IABBsCc2AgAgACAEKQIANwJIIAAgBCkCCDcCUCAAQoCAgPxzNwJoIABCfzcCYCAAQoGAgIBwNwJYIABBjCk2AjwgAEIANwJwIABCADcAdSAADAELEAgACyEACyAADAELDAILIQMLIAdBIGokACADDAELEAgACyIDDQELQSwQBSIDIAo2AgQgA0GQFzYCACADIAIpAgA3AgggAyACKQIINwIQIAMgAikCEDcCGCADQQA2AiggA0IANwIgIAIoAhwiACACKAIYIgJHBEAgACACayIBQQBIDQIgAyABEAUiBDYCICADIAQgAUF8cWo2AigDQCAEIAIoAgA2AgAgBEEEaiEEIAJBBGoiAiAARw0ACyADIAQ2AiQLIANBlCw2AgALIAMMAQsQCAALIQQgCCgCICIARQ0AIAggADYCJCAAEAQLIAhBMGokACAEC88BAgN/A34CQCACKQMIIgggAikDECIGVw0AIAIoAgAiBCAGp2osAAAhAyACIAZCAXwiBzcDEAJAIANBfkYNACAHIAhZDQEgBCAHp2osAAAhBCACIAZCAnw3AxAgBEEEa0H/AXFB+wFJDQEgACADIAQgACgCACgCKBEDACEEIAAoAhQhAyAAIAQ2AhQgA0UNACADIAMoAgAoAgQRAgALIAAoAhQiAwRAIAAgAyAAKAIAKAIcEQEARQ0BCyAA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IABBf0cL6gICB38BfgJAIAAgARCdAUUNACAAQSRqIQYCQCAAIAAoAgAoAhgRAAAiBSAAKAIoIgMgACgCJCIEa0ECdSICSwRAIAYgBSACaxBaDAELIAIgBU0NACAEIAVBAnRqIgQgA0cEQANAIANBBGsiAygCACECIANBADYCACACBEAgAiACKAIAKAIEEQIACyADIARHDQALCyAAIAQ2AigLQQEhAiAFQQBMDQBBACEDA0ACQCABKQMQIgkgASkDCFkNACABKAIAIAmnai0AACECIAEgCUIBfDcDECAAIAIgACgCACgCMBEBACEEIANBAnQiByAAKAIkaiIIKAIAIQIgCCAENgIAIAIEQCACIAIoAgAoAgQRAgALIAYoAgAgB2ooAgAiAkUNACACIAAgACgCACgCHBEAACAAIAMgACgCACgCFBEBACACKAIAKAIIEQMARQ0AQQEhAiAFIANBAWoiA0cNAQwCCwtBACECCyACCycBAX8gAEGADzYCACAAKAIQIQEgAEEANgIQIAEEQCABEBILIAAQBAslAQF/IABBgA82AgAgACgCECEBIABBADYCECABBEAgARASCyAAC90BAgZ/A34gASgCACEDIAEoAgQhAUF/IAAoAggpAygiCaciBCAEQQBIGxAFIQUCf0EBIAEgA2siA0EESA0AGkEAIgEgAikDECIKIAlC/////w+DIgt8IgkgAikDCFUNABpBASADQQJ1IgYgBkEBTBshB0EAIQMDQAJAIAUgAigCACAKp2ogBBAGIQggAiAJNwMQIAAoAggoAkAoAgAgAWogCCAEEAYaIANBAWoiAyAHRg0AIAEgBGohASACKQMQIgogC3wiCSACKQMIVw0BCwsgAyAGTgshACAFEAQgAAvTAQEGf0EBIQQCQCABIAEoAgAoAhQRAABBAEwNAANAQQAhBCAAKAIEKAIEIAEgBSABKAIAKAIYEQEAEJIBIgJBf0YNASAAKAIEIQNBACEGAkAgAkEASA0AIAMoAgQiBygCDCAHKAIIa0ECdSACTA0AIAMoAgggAygCFCACQQJ0aigCAEECdGooAgAiAyACIAMoAgAoAiARAQAhBgsgBiICRQ0BIAEgAiABKAIAKAIcEQEARQ0BQQEhBCABIAEoAgAoAhQRAAAgBUEBaiIFSg0ACwsgBAsEAEEBCz4BAn8CQCAAKAIIIgQtABhFDQAgBCABKAIEIAEoAgBrQQJ1EGdFDQAgACABIAIgACgCACgCIBEDACEDCyADCxIAIABBfzYCDCAAIAE2AghBAQsFAEGxCQsFAEHTCQsQACAAKAIIIAAoAgRrQQJ1CwUAQYkJCxcAIABFBEBBAA8LIABBnNcAEIcBQQBHCxsAIAAgASgCCCAFECAEQCABIAIgAyAEEIUBCws4ACAAIAEoAgggBRAgBEAgASACIAMgBBCFAQ8LIAAoAggiACABIAIgAyAEIAUgACgCACgCFBELAAunAQAgACABKAIIIAQQIARAAkAgASgCBCACRw0AIAEoAhxBAUYNACABIAM2AhwLDwsCQCAAIAEoAgAgBBAgRQ0AAkAgAiABKAIQRwRAIAEoAhQgAkcNAQsgA0EBRw0BIAFBATYCIA8LIAEgAjYCFCABIAM2AiAgASABKAIoQQFqNgIoAkAgASgCJEEBRw0AIAEoAhhBAkcNACABQQE6ADYLIAFBBDYCLAsLiAIAIAAgASgCCCAEECAEQAJAIAEoAgQgAkcNACABKAIcQQFGDQAgASADNgIcCw8LAkAgACABKAIAIAQQIARAAkAgAiABKAIQRwRAIAEoAhQgAkcNAQsgA0EBRw0CIAFBATYCIA8LIAEgAzYCIAJAIAEoAixBBEYNACABQQA7ATQgACgCCCIAIAEgAiACQQEgBCAAKAIAKAIUEQsAIAEtADUEQCABQQM2AiwgAS0ANEUNAQwDCyABQQQ2AiwLIAEgAjYCFCABIAEoAihBAWo2AiggASgCJEEBRw0BIAEoAhhBAkcNASABQQE6ADYPCyAAKAIIIgAgASACIAMgBCAAKAIAKAIYEQwACwsyACAAIAEoAghBABAgBEAgASACIAMQhgEPCyAAKAIIIgAgASACIAMgACgCACgCHBEJAAsZACAAIAEoAghBABAgBEAgASACIAMQhgELCxAAIAAoAgQgAUECdGooAgALoAEBAn8jAEFAaiIDJAACf0EBIAAgAUEAECANABpBACABRQ0AGkEAIAFBvNYAEIcBIgFFDQAaIANBCGoiBEEEckEAQTQQBxogA0EBNgI4IANBfzYCFCADIAA2AhAgAyABNgIIIAEgBCACKAIAQQEgASgCACgCHBEJACADKAIgIgBBAUYEQCACIAMoAhg2AgALIABBAUYLIQAgA0FAayQAIAALBQAQAAALPAEBfwJAIAAgASAAKAIAKAIkEQEARQ0AIAAgASAAKAIAKAIoEQEARQ0AIAAgACgCACgCLBEAACECCyACC/QBAQV/IwBBEGsiBSQAIwBBIGsiAyQAIwBBEGsiBCQAIAQgADYCDCAEIAAgAWo2AgggAyAEKAIMNgIYIAMgBCgCCDYCHCAEQRBqJAAgAygCGCEEIAMoAhwhByMAQRBrIgEkACAHIARrIQYgBCAHRwRAIAIgBCAGEAoaCyABIAQgBmo2AgwgASACIAZqNgIIIAMgASgCDDYCECADIAEoAgg2AhQgAUEQaiQAIAMgACADKAIQIABrajYCDCADIAIgAygCFCACa2o2AgggBSADKAIMNgIIIAUgAygCCDYCDCADQSBqJAAgBSgCDCEAIAVBEGokACAACwgAIAAQRBAECzgBAX8gAEHwDTYCACAAKAIQIgEEQCAAIAE2AhQgARAECyAAKAIEIgEEQCAAIAE2AgggARAECyAAC08BAn8gACABEI8BAkAgAUEASA0AIAAoAlgiAiAAKAJUIgNrQQJ1IAFMDQAgAyABQQJ0aiIBIAFBBGoiASACIAFrEAoaIAAgAkEEazYCWAsLmwQBB38gACABIAIQkAECQCAAKAJYIAAoAlQiA2tBAnUiAiABSg0AIAIgAUEBaiIBSQRAAkAgASACayIDIAAoAlwiBCAAKAJYIgJrQQJ1TQRAAkAgA0UNACACIQEgA0EHcSIEBEADQCABQQE2AgAgAUEEaiEBIAVBAWoiBSAERw0ACwsgA0ECdCACaiECIANBAWtB/////wNxQQdJDQADQCABQoGAgIAQNwIYIAFCgYCAgBA3AhAgAUKBgICAEDcCCCABQoGAgIAQNwIAIAFBIGoiASACRw0ACwsgACACNgJYDAELAkAgAiAAKAJUIgJrIglBAnUiBiADaiIBQYCAgIAESQRAQf////8DIAQgAmsiBEEBdiIHIAEgASAHSRsgBEH8////B08bIgQEQCAEQYCAgIAETw0CIARBAnQQBSEICyAIIAZBAnRqIgYhASADQQdxIgcEQANAIAFBATYCACABQQRqIQEgBUEBaiIFIAdHDQALCyAGIANBAnRqIQUgA0EBa0H/////A3FBB08EQANAIAFCgYCAgBA3AhggAUKBgICAEDcCECABQoGAgIAQNwIIIAFCgYCAgBA3AgAgAUEgaiIBIAVHDQALCyAIIAIgCRAKIQEgACAFNgJYIAAgATYCVCAAIAEgBEECdGo2AlwgAgRAIAIQBAsMAgsQCAALEAkACw8LIAEgAk8NACAAIAMgAUECdGo2AlgLCz0BAX8gAEGA0AA2AgAgACgCYCIBBEAgACABNgJkIAEQBAsgACgCVCIBBEAgACABNgJYIAEQBAsgABBEEAQLOwEBfyAAQYDQADYCACAAKAJgIgEEQCAAIAE2AmQgARAECyAAKAJUIgEEQCAAIAE2AlggARAECyAAEEQLBABBewsEAEF8CwQAQX0LBABBfgsEAEEMCwQAQQsLBABBCgsEAEEJCwQAQQgLBABBBwsEAEEGCwQAQQULEgAgACACNgIgIAAgATYCHEEBCzIAIAAEQCAALAAnQQBIBEAgACgCHBAECyAAQQxqIAAoAhAQZiAAIAAoAgQQOSAAEAQLC7oBAQR/IwBBEGsiAyQAIAMgACABIAIQxwEgACADKAIANgIYAkAgAEEYaiIFIANGDQAgAEEcaiEBIANBBHIhAiADLQAPIgbAIQQgACwAJ0EATgRAIARBAE4EQCABIAIpAgA3AgAgASACKAIINgIIDAILIAEgAygCBCADKAIIEEEMAQsgASADKAIEIAIgBEEASCIAGyADKAIIIAYgABsQQgsgAywAD0EASARAIAMoAgQQBAsgA0EQaiQAIAULtAEBBH8jAEEQayIBJAAgARDGASAAIAEoAgA2AhgCQCAAQRhqIgUgAUYNACAAQRxqIQIgAUEEciEDIAEtAA8iBsAhBCAALAAnQQBOBEAgBEEATgRAIAIgAykCADcCACACIAMoAgg2AggMAgsgAiABKAIEIAEoAggQQQwBCyACIAEoAgQgAyAEQQBIIgAbIAEoAgggBiAAGxBCCyABLAAPQQBIBEAgASgCBBAECyABQRBqJAAgBQvVAwEEfyMAQSBrIgMkACADQQhqIQIjAEHQAGsiACQAIAAgASkDIDcDSCAAQUBrIAEpAxg3AwAgACABKQMQNwM4IAAgASkDCDcDMCAAIAEpAwA3AyggAEEIaiAAQShqIABBGGoQcAJAIAAoAggiAQRAIAIgATYCACACQQRqIQEgACwAF0EATgRAIAEgAEEIakEEciICKQIANwIAIAEgAigCCDYCCAwCCyABIAAoAgwgACgCEBAMIAAsABdBAE4NASAAKAIMEAQMAQsgACwAF0EASARAIAAoAgwQBAsgAC0AHyIBQQJPBEBBIBAFIgFBADoAGiABQcMLLwAAOwAYIAFBuwspAAA3ABAgAUGzCykAADcACCABQasLKQAANwAAIABBfzYCCCAAQQhqQQRyIgQgAUEaEAwgACwAFyEFIAIgACgCCDYCACACQQRqIQIgBUEATgRAIAIgBCkCADcCACACIAQoAgg2AgggARAEDAILIAIgACgCDCAAKAIQEAwgACwAF0EASARAIAAoAgwQBAsgARAEDAELIAJCADcCACACIAE2AhAgAkIANwIICyAAQdAAaiQAIAMoAhghACADLAAXQQBIBEAgAygCDBAECyADQSBqJAAgAAsJACAAIAEQjgML7yoCBn8GfgJ/IAEhBkEAIQBBACEBAkACQAJAAkACQAJAAkACQCADQQFrDgkAAwEEAgUHBwYHCwJAIAYoAlAiBiACLQAYIgMiB2wgBEcNACACLQBUIQECQCACKAIcQQFHIggNACABRQ0AIAUgAigCACgCACACKAIwaiAEEAYaQQEhAQwBCyADBEAgBxAFIgBBACAHEAcaCwJAIAZFBEBBASEBDAELIAhFBEAgAwRAQQAhA0EAIQQDQCADIAVqIAAgAigCACgCACACKQMwIAIpAygiDCACLQBUBH8gBAUgAigCRCAEQQJ0aigCAAutfnynaiAMpxAGIAcQBhogAyAHaiEDQQEhASAEQQFqIgQgBkcNAAsMAgsgAQRAQQEhASACKAIAIQQgAikDMCENIAIpAygiDqchBSAGQQFHBEAgBkF+cSEHQQAhAkEAIQMDQCAAIAQoAgAgDiACrX4gDXynaiAFEAYgBCgCACAOIAJBAXKtfiANfKdqIAUQBhogAkECaiECIANBAmoiAyAHRw0ACyACrSEMCyAGQQFxRQ0CIAAgBCgCACAMIA5+IA18p2ogBRAGGgwCC0EBIQEgAigCACEEIAIpAzAhDCACKAJEIQUgAikDKCINpyEHQQAhAiAGQQFHBEAgBkF+cSEIQQAhAwNAIAAgBCgCACANIAUgAkECdCIJajUCAH4gDHynaiAHEAYgBCgCACANIAUgCUEEcmo1AgB+IAx8p2ogBxAGGiACQQJqIQIgA0ECaiIDIAhHDQALCyAGQQFxRQ0BIAAgBCgCACANIAUgAkECdGo1AgB+IAx8p2ogBxAGGgwBC0EAIQEgA0UEQEEAIQMDQCACIAItAFQEfyADBSACKAJEIANBAnRqKAIACyACLAAYIAAQTUUNAiADQQFqIgMgBk8hASADIAZHDQALDAELQQAhA0EAIQQDQCACIAItAFQEfyAEBSACKAJEIARBAnRqKAIACyACLAAYIAAQTUUNASADIAVqIAAgBxAGGiADIAdqIQMgBEEBaiIEIAZPIQEgBCAGRw0ACwsgAEUNACAAEAQLIAEMBwsCfwJAIAItABgiCEEBdCIJIAYoAlAiBmwgBEcNACACLQBUIQMCQCACKAIcQQNHIgcNACADRQ0AIAUgAigCACgCACACKAIwaiAEEAYaQQEMAgsCQCAIRQRAQQAhBAwBCyAJEAUiBEEAIAkQBxoLAkAgBkUEQEEBIQAMAQsgB0UEQCACKAJEIQogAigCACEBIAIpAzAhDiACKQMoIg+nIQcgCARAIANFBEBBACECQQAhAwNAQQEhACAFIAJBAXRqIAQgASgCACAPIAogA0ECdGo1AgB+IA58p2ogBxAGIAkQBhogAiAIaiECIANBAWoiAyAGRw0ACwwDCyAGrSENQQAhAgNAQQEhACAFIAJBAXRqIAQgASgCACAMIA9+IA58p2ogBxAGIAkQBhogAiAIaiECIAxCAXwiDCANUg0ACwwCCyADRQRAQQEhAEEAIQIgBkEBRwRAIAZBfnEhBUEAIQMDQCAEIAEoAgAgDyAKIAJBAnQiCGo1AgB+IA58p2ogBxAGIAEoAgAgDyAKIAhBBHJqNQIAfiAOfKdqIAcQBhogAkECaiECIANBAmoiAyAFRw0ACwsgBkEBcUUNAiAEIAEoAgAgDyAKIAJBAnRqNQIAfiAOfKdqIAcQBhoMAgsgBq0iDUIBgyEQQQEhACAGQQFHBEAgDUL+////D4MhEUIAIQ0DQCAEIAEoAgAgDCAPfiAOfKdqIAcQBiABKAIAIA8gDEIBhH4gDnynaiAHEAYaIAxCAnwhDCANQgJ8Ig0gEVINAAsLIBBQDQEgBCABKAIAIAwgD34gDnynaiAHEAYaDAELIAhFBEBBACEDA0AgAiACLQBUBH8gAwUgAigCRCADQQJ0aigCAAsgAiwAGCAEEEtFDQIgA0EBaiIDIAZPIQAgAyAGRw0ACwwBC0EAIQMDQCACIAItAFQEfyADBSACKAJEIANBAnRqKAIACyACLAAYIAQQS0UNASAFIAFBAXRqIAQgCRAGGiABIAhqIQEgA0EBaiIDIAZPIQAgAyAGRw0ACwsgBEUNACAEEAQLIAALDAYLAkAgAi0AGCIIQQJ0IgkgBigCUCIGbCAERw0AIAItAFQhAwJAIAIoAhxBBUciBw0AIANFDQAgBSACKAIAKAIAIAIoAjBqIAQQBhpBASEBDAELAkAgCEUEQEEAIQQMAQsgCRAFIgRBACAJEAcaC0EBIQECQCAGRQ0AIAdFBEAgAigCRCEKIAIoAgAhACACKQMwIQ4gAikDKCIPpyEHIAgEQCADRQRAQQAhAkEAIQMDQCAFIAJBAnRqIAQgACgCACAPIAogA0ECdGo1AgB+IA58p2ogBxAGIAkQBhogAiAIaiECIANBAWoiAyAGRw0ACwwDCyAGrSENQQAhAgNAIAUgAkECdGogBCAAKAIAIAwgD34gDnynaiAHEAYgCRAGGiACIAhqIQIgDEIBfCIMIA1SDQALDAILIANFBEBBACECIAZBAUcEQCAGQX5xIQVBACEDA0AgBCAAKAIAIA8gCiACQQJ0IghqNQIAfiAOfKdqIAcQBiAAKAIAIA8gCiAIQQRyajUCAH4gDnynaiAHEAYaIAJBAmohAiADQQJqIgMgBUcNAAsLIAZBAXFFDQIgBCAAKAIAIA8gCiACQQJ0ajUCAH4gDnynaiAHEAYaDAILIAatIg1CAYMhECAGQQFHBEAgDUL+////D4MhEUIAIQ0DQCAEIAAoAgAgDCAPfiAOfKdqIAcQBiAAKAIAIA8gDEIBhH4gDnynaiAHEAYaIAxCAnwhDCANQgJ8Ig0gEVINAAsLIBBQDQEgBCAAKAIAIAwgD34gDnynaiAHEAYaDAELQQAhASAIRQRAQQAhAwNAIAIgAi0AVAR/IAMFIAIoAkQgA0ECdGooAgALIAIsABggBBBJRQ0CIANBAWoiAyAGTyEBIAMgBkcNAAsMAQtBACEDA0AgAiACLQBUBH8gAwUgAigCRCADQQJ0aigCAAsgAiwAGCAEEElFDQEgBSAAQQJ0aiAEIAkQBhogACAIaiEAIANBAWoiAyAGTyEBIAMgBkcNAAsLIARFDQAgBBAECyABDAULAkAgBigCUCIGIAItABgiAyIHbCAERw0AIAItAFQhAQJAIAIoAhxBAkciCA0AIAFFDQAgBSACKAIAKAIAIAIoAjBqIAQQBhpBASEBDAELIAMEQCAHEAUiAEEAIAcQBxoLAkAgBkUEQEEBIQEMAQsgCEUEQCADBEBBACEDQQAhBANAIAMgBWogACACKAIAKAIAIAIpAzAgAikDKCIMIAItAFQEfyAEBSACKAJEIARBAnRqKAIAC61+fKdqIAynEAYgBxAGGiADIAdqIQNBASEBIARBAWoiBCAGRw0ACwwCCyABBEBBASEBIAIoAgAhBCACKQMwIQ0gAikDKCIOpyEFIAZBAUcEQCAGQX5xIQdBACECQQAhAwNAIAAgBCgCACAOIAKtfiANfKdqIAUQBiAEKAIAIA4gAkEBcq1+IA18p2ogBRAGGiACQQJqIQIgA0ECaiIDIAdHDQALIAKtIQwLIAZBAXFFDQIgACAEKAIAIAwgDn4gDXynaiAFEAYaDAILQQEhASACKAIAIQQgAikDMCEMIAIoAkQhBSACKQMoIg2nIQdBACECIAZBAUcEQCAGQX5xIQhBACEDA0AgACAEKAIAIA0gBSACQQJ0IglqNQIAfiAMfKdqIAcQBiAEKAIAIA0gBSAJQQRyajUCAH4gDHynaiAHEAYaIAJBAmohAiADQQJqIgMgCEcNAAsLIAZBAXFFDQEgACAEKAIAIA0gBSACQQJ0ajUCAH4gDHynaiAHEAYaDAELQQAhASADRQRAQQAhAwNAIAIgAi0AVAR/IAMFIAIoAkQgA0ECdGooAgALIAIsABggABBMRQ0CIANBAWoiAyAGTyEBIAMgBkcNAAsMAQtBACEDQQAhBANAIAIgAi0AVAR/IAQFIAIoAkQgBEECdGooAgALIAIsABggABBMRQ0BIAMgBWogACAHEAYaIAMgB2ohAyAEQQFqIgQgBk8hASAEIAZHDQALCyAARQ0AIAAQBAsgAQwECwJ/AkAgAi0AGCIIQQF0IgkgBigCUCIGbCAERw0AIAItAFQhAwJAIAIoAhxBBEciBw0AIANFDQAgBSACKAIAKAIAIAIoAjBqIAQQBhpBAQwCCwJAIAhFBEBBACEEDAELIAkQBSIEQQAgCRAHGgsCQCAGRQRAQQEhAAwBCyAHRQRAIAIoAkQhCiACKAIAIQEgAikDMCEOIAIpAygiD6chByAIBEAgA0UEQEEAIQJBACEDA0BBASEAIAUgAkEBdGogBCABKAIAIA8gCiADQQJ0ajUCAH4gDnynaiAHEAYgCRAGGiACIAhqIQIgA0EBaiIDIAZHDQALDAMLIAatIQ1BACECA0BBASEAIAUgAkEBdGogBCABKAIAIAwgD34gDnynaiAHEAYgCRAGGiACIAhqIQIgDEIBfCIMIA1SDQALDAILIANFBEBBASEAQQAhAiAGQQFHBEAgBkF+cSEFQQAhAwNAIAQgASgCACAPIAogAkECdCIIajUCAH4gDnynaiAHEAYgASgCACAPIAogCEEEcmo1AgB+IA58p2ogBxAGGiACQQJqIQIgA0ECaiIDIAVHDQALCyAGQQFxRQ0CIAQgASgCACAPIAogAkECdGo1AgB+IA58p2ogBxAGGgwCCyAGrSINQgGDIRBBASEAIAZBAUcEQCANQv7///8PgyERQgAhDQNAIAQgASgCACAMIA9+IA58p2ogBxAGIAEoAgAgDyAMQgGEfiAOfKdqIAcQBhogDEICfCEMIA1CAnwiDSARUg0ACwsgEFANASAEIAEoAgAgDCAPfiAOfKdqIAcQBhoMAQsgCEUEQEEAIQMDQCACIAItAFQEfyADBSACKAJEIANBAnRqKAIACyACLAAYIAQQSkUNAiADQQFqIgMgBk8hACADIAZHDQALDAELQQAhAwNAIAIgAi0AVAR/IAMFIAIoAkQgA0ECdGooAgALIAIsABggBBBKRQ0BIAUgAUEBdGogBCAJEAYaIAEgCGohASADQQFqIgMgBk8hACADIAZHDQALCyAERQ0AIAQQBAsgAAsMAwsCQCACLQAYIghBAnQiCSAGKAJQIgZsIARHDQAgAi0AVCEDAkAgAigCHEEGRyIHDQAgA0UNACAFIAIoAgAoAgAgAigCMGogBBAGGkEBIQEMAQsCQCAIRQRAQQAhBAwBCyAJEAUiBEEAIAkQBxoLQQEhAQJAIAZFDQAgB0UEQCACKAJEIQogAigCACEAIAIpAzAhDiACKQMoIg+nIQcgCARAIANFBEBBACECQQAhAwNAIAUgAkECdGogBCAAKAIAIA8gCiADQQJ0ajUCAH4gDnynaiAHEAYgCRAGGiACIAhqIQIgA0EBaiIDIAZHDQALDAMLIAatIQ1BACECA0AgBSACQQJ0aiAEIAAoAgAgDCAPfiAOfKdqIAcQBiAJEAYaIAIgCGohAiAMQgF8IgwgDVINAAsMAgsgA0UEQEEAIQIgBkEBRwRAIAZBfnEhBUEAIQMDQCAEIAAoAgAgDyAKIAJBAnQiCGo1AgB+IA58p2ogBxAGIAAoAgAgDyAKIAhBBHJqNQIAfiAOfKdqIAcQBhogAkECaiECIANBAmoiAyAFRw0ACwsgBkEBcUUNAiAEIAAoAgAgDyAKIAJBAnRqNQIAfiAOfKdqIAcQBhoMAgsgBq0iDUIBgyEQIAZBAUcEQCANQv7///8PgyERQgAhDQNAIAQgACgCACAMIA9+IA58p2ogBxAGIAAoAgAgDyAMQgGEfiAOfKdqIAcQBhogDEICfCEMIA1CAnwiDSARUg0ACwsgEFANASAEIAAoAgAgDCAPfiAOfKdqIAcQBhoMAQtBACEBIAhFBEBBACEDA0AgAiACLQBUBH8gAwUgAigCRCADQQJ0aigCAAsgAiwAGCAEEEhFDQIgA0EBaiIDIAZPIQEgAyAGRw0ACwwBC0EAIQMDQCACIAItAFQEfyADBSACKAJEIANBAnRqKAIACyACLAAYIAQQSEUNASAFIABBAnRqIAQgCRAGGiAAIAhqIQAgA0EBaiIDIAZPIQEgAyAGRw0ACwsgBEUNACAEEAQLIAEMAgsCQCAEIAItABgiCEECdCIJIAYoAlAiBmxHDQAgAigCHCEHAkAgCEUNACAJEAUiACEDIAlBBGsiCkECdkEBakEHcSILBEBBACEEA0AgA0GAgICAfDYCACADQQRqIQMgBEEBaiIEIAtHDQALCyAKQRxJDQAgACAIQQJ0aiEEA0AgA0KAgICAjICAgEA3AhggA0KAgICAjICAgEA3AhAgA0KAgICAjICAgEA3AgggA0KAgICAjICAgEA3AgAgA0EgaiIDIARHDQALCwJAIAZFBEBBASEBDAELIAdBCUYEQCACKAJEIQogAigCACEHIAIpAzAhDSACLQBUIQsgAikDKCIOpyECIAgEQEEAIQRBACEDA0AgBSAEQQJ0aiAAIAcoAgAgDiALBH8gAwUgCiADQQJ0aigCAAutfiANfKdqIAIQBiAJEAYaIAQgCGohBEEBIQEgA0EBaiIDIAZHDQALDAILIAtFBEBBASEBQQAhAyAGQQFHBEAgBkF+cSEFQQAhBANAIAAgBygCACAOIAogA0ECdCIIajUCAH4gDXynaiACEAYgBygCACAOIAogCEEEcmo1AgB+IA18p2ogAhAGGiADQQJqIQMgBEECaiIEIAVHDQALCyAGQQFxRQ0CIAAgBygCACAOIAogA0ECdGo1AgB+IA18p2ogAhAGGgwCCyAGrSIQQgGDIRFBASEBIAZBAUcEQCAQQv7///8PgyEQA0AgACAHKAIAIAwgDn4gDXynaiACEAYgBygCACAOIAxCAYR+IA18p2ogAhAGGiAMQgJ8IQwgD0ICfCIPIBBSDQALCyARUA0BIAAgBygCACAMIA5+IA18p2ogAhAGGgwBCyAIRQRAQQAhAwNAIAIgAi0AVAR/IAMFIAIoAkQgA0ECdGooAgALIAIsABggABA8RQ0CIANBAWoiAyAGTyEBIAMgBkcNAAsMAQtBACEEQQAhAwNAIAIgAi0AVAR/IAMFIAIoAkQgA0ECdGooAgALIAIsABggABA8RQ0BIAUgBEECdGogACAJEAYaIAQgCGohBCADQQFqIgMgBk8hASADIAZHDQALCyAARQ0AIAAQBAsgASEACyAACwuLBQEMf0EAIQAjAEEQayIKJAAgASgCUCIIIAItABgiBGwhAQJAAkACQAJAAkAgAigCHCIHQQVHIAdBBkdxDQAgAi0AVEUNACACKAIwIQUgAigCACgCACECIApBADYCCCAKQgA3AwAgAQRAIAFBAEgNAiABQQJ0IgEQBSIAIAIgBWogARAGIAFqIQYLIAMoAgAiAQRAIAMgATYCBCABEAQLIAMgBjYCCCADIAY2AgQgAyAANgIAQQEhBQwECyAEBEAgBEECdCIHEAUiAEEAIAcQBxoLAkAgAygCBCADKAIAIglrQQJ1IgcgAUkEQCADIAEgB2sQCwwBCyABIAdPDQAgAyAJIAFBAnRqNgIECyAIRQRAQQEhBQwCCyAERQRAQQAhAQNAIAIgAi0AVAR/IAEFIAIoAkQgAUECdGooAgALIAIsABggABBIRQ0DIAFBAWoiASAITyEFIAEgCEcNAAsMAgsgBEH8AXEhDiAEQQNxIQsgBEEESSEPQQAhBANAIAIgAi0AVAR/IAQFIAIoAkQgBEECdGooAgALIAIsABggABBIRQ0CIAMoAgAhDEEAIQ1BACEBQQAhBSAPRQRAA0AgDCAGQQJ0aiIHIAAgAUECdCIJaigCADYCACAHIAAgCUEEcmooAgA2AgQgByAAIAlBCHJqKAIANgIIIAcgACAJQQxyaigCADYCDCABQQRqIQEgBkEEaiEGIAVBBGoiBSAORw0ACwsgCwRAA0AgDCAGQQJ0aiAAIAFBAnRqKAIANgIAIAFBAWohASAGQQFqIQYgDUEBaiINIAtHDQALCyAEQQFqIgQgCE8hBSAEIAhHDQALDAILEAgACyAARQ0BCyAAEAQLIApBEGokACAFC4wFAQx/QQAhACMAQRBrIgokACABKAJQIgggAi0AGCIEbCEBAkACQAJAAkACQCACKAIcIgdBA0cgB0EER3ENACACLQBURQ0AIAIoAjAhBSACKAIAKAIAIQIgCkEANgIIIApCADcDACABBEAgAUEASA0CIAFBAXQiARAFIgAgAiAFaiABEAYgAWohBgsgAygCACIBBEAgAyABNgIEIAEQBAsgAyAGNgIIIAMgBjYCBCADIAA2AgBBASEFDAQLIAQEQCAEQQF0IgcQBSIAQQAgBxAHGgsCQCADKAIEIAMoAgAiCWtBAXUiByABSQRAIAMgASAHaxCoAQwBCyABIAdPDQAgAyAJIAFBAXRqNgIECyAIRQRAQQEhBQwCCyAERQRAQQAhAQNAIAIgAi0AVAR/IAEFIAIoAkQgAUECdGooAgALIAIsABggABBKRQ0DIAFBAWoiASAITyEFIAEgCEcNAAsMAgsgBEH8AXEhDiAEQQNxIQsgBEEESSEPQQAhBANAIAIgAi0AVAR/IAQFIAIoAkQgBEECdGooAgALIAIsABggABBKRQ0CIAMoAgAhDEEAIQ1BACEBQQAhBSAPRQRAA0AgDCAGQQF0aiIHIAAgAUEBdCIJai8BADsBACAHIAAgCUECcmovAQA7AQIgByAAIAlBBHJqLwEAOwEEIAcgACAJQQZyai8BADsBBiABQQRqIQEgBkEEaiEGIAVBBGoiBSAORw0ACwsgCwRAA0AgDCAGQQF0aiAAIAFBAXRqLwEAOwEAIAFBAWohASAGQQFqIQYgDUEBaiINIAtHDQALCyAEQQFqIgQgCE8hBSAEIAhHDQALDAILEAgACyAARQ0BCyAAEAQLIApBEGokACAFC4wFAQx/QQAhACMAQRBrIgokACABKAJQIgggAi0AGCIEbCEBAkACQAJAAkACQCACKAIcIgdBA0cgB0EER3ENACACLQBURQ0AIAIoAjAhBSACKAIAKAIAIQIgCkEANgIIIApCADcDACABBEAgAUEASA0CIAFBAXQiARAFIgAgAiAFaiABEAYgAWohBgsgAygCACIBBEAgAyABNgIEIAEQBAsgAyAGNgIIIAMgBjYCBCADIAA2AgBBASEFDAQLIAQEQCAEQQF0IgcQBSIAQQAgBxAHGgsCQCADKAIEIAMoAgAiCWtBAXUiByABSQRAIAMgASAHaxCoAQwBCyABIAdPDQAgAyAJIAFBAXRqNgIECyAIRQRAQQEhBQwCCyAERQRAQQAhAQNAIAIgAi0AVAR/IAEFIAIoAkQgAUECdGooAgALIAIsABggABBLRQ0DIAFBAWoiASAITyEFIAEgCEcNAAsMAgsgBEH8AXEhDiAEQQNxIQsgBEEESSEPQQAhBANAIAIgAi0AVAR/IAQFIAIoAkQgBEECdGooAgALIAIsABggABBLRQ0CIAMoAgAhDEEAIQ1BACEBQQAhBSAPRQRAA0AgDCAGQQF0aiIHIAAgAUEBdCIJai8BADsBACAHIAAgCUECcmovAQA7AQIgByAAIAlBBHJqLwEAOwEEIAcgACAJQQZyai8BADsBBiABQQRqIQEgBkEEaiEGIAVBBGoiBSAORw0ACwsgCwRAA0AgDCAGQQF0aiAAIAFBAXRqLwEAOwEAIAFBAWohASAGQQFqIQYgDUEBaiINIAtHDQALCyAEQQFqIgQgCE8hBSAEIAhHDQALDAILEAgACyAARQ0BCyAAEAQLIApBEGokACAFC5AGAQl/IwBBEGsiDCQAIAEoAlAiCyACLQAYIgVsIQACQAJAAkACQAJAIAIoAhwiAUEBRyABQQJHcQ0AIAItAFRFDQAgAigCMCEBIAIoAgAoAgAhAiAMQQA2AgggDEIANwMAIAAEQCAAQQBIDQIgABAFIgYgASACaiAAEAYgAGohBAsgAygCACIABEAgAyAANgIEIAAQBAsgAyAENgIIIAMgBDYCBCADIAY2AgBBASEBDAQLIAUEQCAFEAUiBkEAIAUQBxoLAkACQCADKAIEIgggAygCACIBayIHIABJBEAgACAHayIKIAMoAggiCSAIa00EQCADIAhBACAKEAcgCmo2AgQMAgsgAEEASA0CQf////8HIAkgAWsiCEEBdCIJIAAgACAJSRsgCEH/////A08bIggQBSIJIAdqQQAgChAHGiADIAkgASAHEAoiByAIajYCCCADIAAgB2o2AgQgAyAHNgIAIAFFDQEgARAEDAELIAAgB08NACADIAAgAWo2AgQLIAtFBEBBASEBDAMLIAVFBEBBACEBQQAhAANAIAIgAi0AVAR/IAAFIAIoAkQgAEECdGooAgALIAIsABggBhBMRQ0EIABBAWoiACALTyEBIAAgC0cNAAsMAwsgBUH8AXEhCCAFQQNxIQdBACEBIAVBBEkhCUEAIQUDQCACIAItAFQEfyAFBSACKAJEIAVBAnRqKAIACyACLAAYIAYQTEUNA0EAIQFBACEAQQAhCiAJRQRAA0AgAygCACAEaiAAIAZqLQAAOgAAIAQgAygCAGogBiAAQQFyai0AADoAASAEIAMoAgBqIAYgAEECcmotAAA6AAIgBCADKAIAaiAGIABBA3JqLQAAOgADIABBBGohACAEQQRqIQQgCkEEaiIKIAhHDQALCyAHBEADQCADKAIAIARqIAAgBmotAAA6AAAgAEEBaiEAIARBAWohBCABQQFqIgEgB0cNAAsLIAVBAWoiBSALTyEBIAUgC0cNAAsMAwsQCAALEAgACyAGRQ0BCyAGEAQLIAxBEGokACABQQFxC5AGAQl/IwBBEGsiDCQAIAEoAlAiCyACLQAYIgVsIQACQAJAAkACQAJAIAIoAhwiAUEBRyABQQJHcQ0AIAItAFRFDQAgAigCMCEBIAIoAgAoAgAhAiAMQQA2AgggDEIANwMAIAAEQCAAQQBIDQIgABAFIgYgASACaiAAEAYgAGohBAsgAygCACIABEAgAyAANgIEIAAQBAsgAyAENgIIIAMgBDYCBCADIAY2AgBBASEBDAQLIAUEQCAFEAUiBkEAIAUQBxoLAkACQCADKAIEIgggAygCACIBayIHIABJBEAgACAHayIKIAMoAggiCSAIa00EQCADIAhBACAKEAcgCmo2AgQMAgsgAEEASA0CQf////8HIAkgAWsiCEEBdCIJIAAgACAJSRsgCEH/////A08bIggQBSIJIAdqQQAgChAHGiADIAkgASAHEAoiByAIajYCCCADIAAgB2o2AgQgAyAHNgIAIAFFDQEgARAEDAELIAAgB08NACADIAAgAWo2AgQLIAtFBEBBASEBDAMLIAVFBEBBACEBQQAhAANAIAIgAi0AVAR/IAAFIAIoAkQgAEECdGooAgALIAIsABggBhBNRQ0EIABB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EAQLIARBIGokACAADAILEBQACxAUAAsLhAIBA38CfyMAQSBrIgAkACACEBMiA0Hw////B0kEQAJAAkAgA0ELTwRAIANBD3JBAWoiBBAFIQUgACAEQYCAgIB4cjYCGCAAIAU2AhAgACADNgIUIAMgBWohBAwBCyAAIAM6ABsgAEEQaiIFIANqIQQgA0UNAQsgBSACIAMQBhoLIARBADoAACAAQQA6AAQgAEHuwrWrBjYCACAAQQQ6AAsCf0F/IAEoAgQiAkUNABpBfyACIAAgAEEQahCWASICRQ0AGiABIAIoAhgQkQELIQEgACwAC0EASARAIAAoAgAQBAsgACwAG0EASARAIAAoAhAQBAsgAEEgaiQAIAEMAQsQFAALCwkAIAEgAhCSAQvfAQEDfyMAQUBqIgQkACAEQQhqEB4iBUIANwMQIAUgATYCACAFIAKtNwMIIARBMGoiASAAIAUgAxDHASAAIAQoAjA2AhgCQCABIABBGGoiBUYNACAAQRxqIQEgBEEwakEEciECIAQtAD8iBsAhAyAALAAnQQBOBEAgA0EATgRAIAEgAikCADcCACABIAIoAgg2AggMAgsgASAEKAI0IAQoAjgQQQwBCyABIAQoAjQgAiADQQBIIgAbIAQoAjggBiAAGxBCCyAELAA/QQBIBEAgBCgCNBAECyAEQUBrJAAgBQvZAQEDfyMAQUBqIgMkACADQQhqEB4iBEIANwMQIAQgATYCACAEIAKtNwMIIANBMGoiARDGASAAIAMoAjA2AhgCQCABIABBGGoiBUYNACAAQRxqIQEgA0EwakEEciECIAMtAD8iBsAhBCAALAAnQQBOBEAgBEEATgRAIAEgAikCADcCACABIAIoAgg2AggMAgsgASADKAI0IAMoAjgQQQwBCyABIAMoAjQgAiAEQQBIIgAbIAMoAjggBiAAGxBCCyADLAA/QQBIBEAgAygCNBAECyADQUBrJAAgBQs8AQJ/QSgQBSIAQgA3AgQgAEIANwIYIABBEGoiAUIANwIAIAAgAEEEajYCACAAIAE2AgwgAEIANwIgIAALcgEDfyAABEAgACwAG0EASARAIAAoAhAQBAsgACgCACICBEAgACgCBCIDIAIiAUcEQANAIANBDGshASADQQFrLAAAQQBIBEAgASgCABAECyABIgMgAkcNAAsgACgCACEBCyAA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KAIAEAQLIANBEGokACAADAELEBQACwv8AgEHfwJ/IwBBEGsiAyQAIAIQEyIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIGEAUhACADIAZBgICAgHhyNgIIIAMgADYCACADIAQ2AgQgACAEaiEGDAELIAMgBDoACyADIARqIQYgAyEAIARFDQELIAAgAiAEEAYaCyAGQQA6AAAgAy0ACyIAwCEJAn9BACABKAIEIgVFDQAaIAMoAgQgACAJQQBIIgAbIQcgAygCACADIAAbIQQDQAJAAkACQAJAAkACQCAFKAIUIAUtABsiACAAwEEASCIAGyIIIAcgByAISyICGyIGBEAgBCAFKAIQIAVBEGogABsiASAGEA0iAA0BIAcgCE8NAgwGCyAHIAhPDQIMBQsgAEEASA0ECyABIAQgBhANIgANAQsgAg0BQQEMBAsgAEEASA0AQQEMAwsgBUEEaiEFCyAFKAIAIgUNAAtBAAshACAJQQBIBEAgAygCABAECyADQRBqJAAgAAwBCxAUAAsLJgEBf0EcEAUiAEIANwIAIABBADYCGCAAQgA3AhAgAEIANwIIIAALEAAgACgCACABQQF0ai8BAAsQACAAKAIAIAFBAXRqLgEACw0AIAAoAgAgAWotAAALDQAgACgCACABaiwAAAsQACAAKAIAIAFBAnRqKgIAC9gDAgV/AX4gAygCUCEFIwBBMGsiBCQAAkAgACgCBCIAQQJrIghBHEsNACADKAIAKAIAIAMoAjBqIQYgBCAANgIQIARBfyAAdCIAQX9zNgIUIARBfiAAayIANgIYIAQgAEECbTYCICAEQwAAAEAgALKVOAIcIAIoAgAiByACKAIERwRAQQAhAEEAIQMDQCAHIANBAnRqKAIAIQUgBEEkaiIHIAEoAgAoAgAgASkDMCABKQMoIgkgAS0AVAR/IAUFIAEoAkQgBUECdGooAgALrX58p2ogCacQBhogBEEQaiAHIARBDGogBEEIahCMASAGIABBAnQiBWogBCgCDDYCACAGIAVBBHJqIAQoAgg2AgAgAEECaiEAIANBAWoiAyACKAIEIAIoAgAiB2tBAnVJDQALDAELIAVFDQBBACEDQQAhAANAIARBJGoiAiABKAIAKAIAIAEpAzAgASkDKCIJIAEtAFQEfyAABSABKAJEIABBAnRqKAIAC61+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IAAoAjAhASAAQQA2AjAgAQRAIAEgASgCACgCBBECAAsgAEGwzgA2AgAgACgCFCIBBEAgACABNgIYIAEQBAsgACgCCCIBBEAgACgCDCIDIAEiAkcEQANAIANBBGsiAygCACECIANBADYCACACBEAgAiACKAIAKAIEEQIACyABIANHDQALIAAoAgghAgsgACABNgIMIAIQBAsgABAEC6YBAQN/IABB8D82AgAgACgCMCEBIABBADYCMCABBEAgASABKAIAKAIEEQIACyAAQbDOADYCACAAKAIUIgEEQCAAIAE2AhggARAECyAAKAIIIgEEQCAAKAIMIgMgASICRwRAA0AgA0EEayIDKAIAIQIgA0EANgIAIAIEQCACIAIoAgAoAgQRAgALIAEgA0cNAAsgACgCCCECCyAAIAE2AgwgAhAECyAACxQAIAAoAjAiACAAKAIAKAIcEQAACxQAIAAoAjAiACAAKAIAKAIYEQAAC9UFAgJ/AX4gACgCICIBKQMIIAEpAxAiA1UEfyABKAIAIAOnai0AACECIAEgA0IBfDcDECAAKAIwIQEgAEEANgIwIAEEQCABIAEoAgAoAgQRAgALAkACQAJ/AkACQCACDgMAAwEDC0GAAxAFIgFB3MAANgIAIAFBBGpBAEHQABAHGiABQgA3A2AgAUF/NgJcIAFCfzcCVCABQgA3A2ggAUIANwNwIAFCADcDeCABQgA3A4ABIAFCADcDiAEgAUIANwOQASABQgA3ApwBIAFBgICA/AM2ApgBIAFCADcCpAEgAUIANwKsASABQgA3ArQBIAFCADcCvAEgAUIANwLEASABQgA3AswBIAFC/////w83AtQBIAFCADcC3AEgAUHoAWoQHhogAUGQAmoQHhogAUG4AmoiAkIANwIAIAJCADcABSABQcgCahAeGiABQQA2AvgCIAFCADcD8AIgAQwBC0G4AxAFIgFBkMEANgIAIAFBBGpBAEHQABAHGiABQgA3A2AgAUF/NgJcIAFCfzcCVCABQgA3A2ggAUIANwNwIAFCADcDeCABQgA3A4ABIAFCADcDiAEgAUIANwOQASABQgA3ApwBIAFBgICA/AM2ApgBIAFCADcCpAEgAUIANwKsASABQgA3ArQBIAFCADcCvAEgAUIANwLEASABQgA3AswBIAFC/////w83AtQBIAFCADcC3AEgAUHoAWoQHhogAUGQAmoQHhogAUG4AmoiAkIANwIAIAJCADcABSABQcgCahAeGiABQgA3A4gDIAFCADcDgAMgAUIANwP4AiABQgA3A/ACIAFCADcDoAMgAUKCgICA8AA3A5gDIAFCfzcDkAMgAUIANwOoAyABQgA3A7ADIAELIQEgACgCMCECIAAgATYCMCACRQ0BIAIgAigCACgCBBECAAsgACgCMCIBDQBBAA8LIAEgACABKAIAKAIIEQEABUEACwsWACAAKAIwIgAgASAAKAIAKAIUEQEAC34BA38gAEGwzgA2AgAgACgCFCICBEAgACACNgIYIAIQBAsgACgCCCICBEAgACgCDCIDIAIiAUcEQANAIANBBGsiAygCACEBIANBADYCACABBEAgASABKAIAKAIEEQIACyACIANHDQALIAAoAgghAQsgACACNgIMIAEQBAsgAAsbACAAKAIsRQRAQQAPCyAAIAAoAgAoAjARAAAL7wIBCX8CQCABKAJYIgNFDQAgAygCAEEBRw0AIAAgAygCCCIGKAAANgIEIABBCGohBAJAIAAoAgwgACgCCCIHa0ECdSIFIAEtABgiAkkEQCAEIAIgBWsQCyABLQAYIQIgAygCCCEGDAELIAIgBU8NACAAIAcgAkECdGo2AgwLAkAgAkUEQEEEIQEMAQsgAkEDcSEHIAQoAgAhAwJAIAJBAWtBA0kEQEEEIQFBACECDAELIAJB/AFxIQpBACECQQQhAQNAIAMgAkECdCIEaiABIAZqIgUqAAA4AgAgAyAEQQRyaiAFKgAEOAIAIAMgBEEIcmogBSoACDgCACADIARBDHJqIAUqAAw4AgAgAkEEaiECIAFBEGohASAJQQRqIgkgCkcNAAsLIAdFDQADQCADIAJBAnRqIAEgBmoqAAA4AgAgAkEBaiECIAFBBGohASAIQQFqIgggB0cNAAsLIAAgASAGaioAADgCFEEBIQILIAIL7xUBGH8jAEEQayIOJAAgDiABNgIMIA5BIBAFIgE2AgAgDkKYgICAgISAgIB/NwIEIAFBqAkpAAA3ABAgAUGgCSkAADcACCABQZgJKQAANwAAIAFBADoAGCMAQTBrIgwkACAOKAIMIQUCQAJAIAAiAUEQaiIDKAIAIgJFDQAgAyEAA0AgACACIAIoAhAgBUgiBBshACACQQRqIAIgBBsoAgAiAg0ACyAAIANGDQAgBSAAKAIQTg0BCyAMQgA3AhwgDCAMQRhqIhhBBHI2AhggDEEQaiIAQgA3AwAgDCAFNgIIIAwgADYCDCAMQQhqIhYhAiMAQRBrIhckACAMAn8CQCABQQxqIhQoAgQiAEUEQCAUQQRqIgohAQwBCyACKAIAIQIDQCAAIgEoAhAiACACSgRAIAEhCiABKAIAIgANAQwCCyAAIAJOBEAgASEFQQAMAwsgASgCBCIADQALIAFBBGohCgtBIBAFIQUgFigCACEAIAVBGGoiCEIANwIAIAUgADYCECAFQRRqIhMgCDYCACAWKAIEIgAgFkEIaiIZRwRAA0AjAEEQayIQJAAgFwJ/IBBBCGohFSAAQRBqIQsCQAJAAkACQAJAAkACQCAIIgQgE0EEaiIHRg0AIAQoAhQgBC0AGyICIALAQQBIIgMbIhEgCygCBCALLQALIgIgAsAiD0EASCICGyISIBEgEkkiCRsiDQRAIAsoAgAgCyACGyIGIAQoAhAgBEEQaiADGyIDIA0QDSICRQRAIBEgEksNAgwDCyACQQBODQIMAQsgESASTQ0CCyAEKAIAIQYCQAJAIAQiAyATKAIARg0AAkAgBkUEQCAEIQIDQCACKAIIIgMoAgAgAkYhCSADIQIgCQ0ACwwBCyAGIQIDQCACIgMoAgQiAg0ACwsCQCALKAIEIAstAAsiAiACwCIPQQBIIg0bIhEgAygCFCADLQAbIgIgAsBBAEgiCRsiFSARIBVJGyICBEAgAygCECADQRBqIAkbIAsoAgAgCyANGyACEA0iAg0BCyARIBVLDQEMAgsgAkEATg0BCyAGRQRAIBAgBDYCDCAEDAgLIBAgAzYCDCADQQRqDAcLIAcoAgAiAkUEQCAQIAc2AgwgBwwHCyALKAIAIAsgD0EASBshDSAHIQQDQAJAAkACQAJAAkAgAiIDKAIUIAItABsiAiACwEEASCICGyIPIBEgDyARSSIGGyIJBEAgDSADKAIQIANBEGogAhsiByAJEA0iAkUEQCAPIBFLDQIMAwsgAkEATg0CDAELIA8gEU0NAgsgAyEEIAMoAgAiAg0EDAkLIAcgDSAJEA0iAg0BCyAGDQEMBwsgAkEATg0GCyADQQRqIQQgAygCBCICDQALDAQLIAMgBiANEA0iAg0BCyAJDQEMAwsgAkEATg0CCwJAIAQoAgQiBkUEQCAEIQIDQCACKAIIIgMoAgAgAkchCSADIQIgCQ0ACwwBCyAGIQIDQCACIgMoAgAiAg0ACwsCQAJAIAMgB0YNAAJAIAMoAhQgAy0AGyICIALAQQBIIgkbIg0gEiANIBJJGyICBEAgCygCACALIA9BAEgbIAMoAhAgA0EQaiAJGyACEA0iAg0BCyANIBJLDQEMAgsgAkEATg0BCyAGRQRAIBAgBDYCDCAEQQRqDAQLIBAgAzYCDCADDAMLIAcoAgAiAkUEQCAQIAc2AgwgBwwDCyALKAIAIAsgD0EASBshDSAHIQQDQAJAAkACQAJAAkAgAiIDKAIUIAItABsiAiACwEEASCICGyIPIBIgDyASSSIGGyIJBEAgDSADKAIQIANBEGogAhsiByAJEA0iAkUEQCAPIBJLDQIMAwsgAkEATg0CDAELIA8gEk0NAgsgAyEEIAMoAgAiAg0EDAULIAcgDSAJEA0iAg0BCyAGDQEMAwsgAkEATg0CCyADQQRqIQQgAygCBCICDQALCyAQIAM2AgwgBAwBCyAQIAQ2AgwgFSAENgIAIBULIgcoAgAiAwR/QQAFQSgQBSIDQRBqIQICQCAALAAbQQBOBEAgAiAAKQIQNwIAIAIgACgCGDYCCAwBCyACIAAoAhAgACgCFBAMCyADQRxqIQICQCAALAAnQQBOBEAgAiAAKQIcNwIAIAIgACgCJDYCCAwBCyACIAAoAhwgACgCIBAMCyADIBAoAgw2AgggA0IANwIAIAcgAzYCACADIQIgEygCACgCACIEBEAgEyAENgIAIAcoAgAhAgsgEygCBCACED4gEyATKAIIQQFqNgIIQQELOgAMIBcgAzYCCCAQQRBqJAACQCAAKAIEIgIEQANAIAIiACgCACICDQAMAgsACwNAIAAgACgCCCIAKAIARw0ACwsgACAZRw0ACwsgBSABNgIIIAVCADcCACAKIAU2AgAgBSEAIBQoAgAoAgAiAQRAIBQgATYCACAKKAIAIQALIBQoAgQgABA+IBQgFCgCCEEBajYCCEEBCzoALCAMIAU2AiggF0EQaiQAIAwoAighACAWQQRyIAwoAhAQOSAYIAwoAhwQOQsjAEEwayIKJAAgCkEIaiEEIwBBIGsiBSQAAkAgBUEVaiIDIAVBIGoiByICRg0ACyAFAn8gAiADayIBQQlMBEBBPSABQfDTACgCAEEBTUgNARoLIANBMToAACADQQFqIQJBAAs2AgwgBSACNgIIIAUoAgghASMAQRBrIgUkACMAQRBrIggkAAJAIAEgA2siBkHv////B00EQAJAIAZBC0kEQCAEIAQtAAtBgAFxIAZyOgALIAQgBC0AC0H/AHE6AAsgBCECDAELIAhBCGogBCAGQQtPBH8gBkEQakFwcSICIAJBAWsiAiACQQtGGwVBCgtBAWoQQyAIKAIMGiAEIAgoAggiAjYCACAEIAQoAghBgICAgHhxIAgoAgxB/////wdxcjYCCCAEIAQoAghBgICAgHhyNgIIIAQgBjYCBAsDQCABIANHBEAgAiADLQAAOgAAIAJBAWohAiADQQFqIQMMAQsLIAhBADoAByACIAgtAAc6AAAgCEEQaiQADAELEBQACyAFQRBqJAAgByQAIAogDjYCICAKAn8CQAJAIABBFGoiCCgCBCIBRQRAIAhBBGoiBSEADAELIA4oAgAgDiAOLQALIgLAQQBIIgAbIQcgDigCBCACIAAbIQYDQAJAAkACQAJAAkAgASIAKAIUIAAtABsiASABwEEASCIBGyIFIAYgBSAGSSIDGyIEBEAgByAAKAIQIABBEGogARsiAiAEEA0iAUUEQCAFIAZLDQIMAwsgAUEATg0CDAELIAUgBk0NAgsgACEFIAAoAgAiAQ0EDAULIAIgByAEEA0iAQ0BCyADDQEMBAsgAUEATg0DCyAAKAIEIgENAAsgAEEEaiEFC0EoEAUiAUEQaiECAkAgCigCICIDLAALQQBOBEAgAiADKQIANwIAIAIgAygCCDYCCAwBCyACIAMoAgAgAygCBBAMCyABIAA2AgggAUIANwIAIAFBADYCJCABQgA3AhwgBSABNgIAIAEhACAIKAIAKAIAIgIEQCAIIAI2AgAgBSgCACEACyAIKAIEIAAQPiAIIAgoAghBAWo2AghBAQwBCyAAIQFBAAs6ACwgCiABNgIoIAooAigiACwAJ0EASARAIAAoAhwQBAsgACAKKQMINwIcIAAgCigCEDYCJCAKQTBqJAAgDEEwaiQAIA4sAAtBAEgEQCAOKAIAEAQLIA5BEGokAAt0AQF/IABB2Aw2AhggAEGMPjYCACAAKAIgIgEEQCAAIAE2AiQgARAECyAAQdgQNgIAIAAoAhQhASAAQQA2AhQgAQRAIAEgASgCACgCBBECAAsgAEGADzYCACAAKAIQIQEgAEEANgIQIAEEQCABEBILIAAQBAtyAQF/IABB2Aw2AhggAEGMPjYCACAAKAIgIgEEQCAAIAE2AiQgARAECyAAQdgQNgIAIAAoAhQhASAAQQA2AhQgAQRAIAEgASgCACgCBBECAAsgAEGADzYCACAAKAIQIQEgAEEANgIQIAEEQCABEBILIAALEwAgAEEYaiAAEDIgACgCCBC1AQsiAQF/IABBGGogABAyIgEgACgCCCABGyAAKAIEKAIgEK4BCxEAIAAgASAAKAIAKAI4EQEACzMAAn8gACgCBC0AJEECTwRAQQAgACAAKAIAKAI0EQAARQ0BGgsgAEEYaiAAKAIQEKYBCwtDAQF/IAAgATYCBCABKAIEKAIIIAJBAnRqKAIAIQMgACACNgIMIAAgAzYCCCABKAIEKAIIIAJBAnRqKAIAKAIcQQlGC/EBAgR/AX4jAEEgayIFJABBfyAEQQJ0IARB/////wNLGyIGEAVBACAGEAchBiABKQIAIQogBSAGKQIANwMQIAUgCjcDCCAFQRhqIABBCGoiCCAFQRBqIAVBCGoQVCACIAUoAhg2AgAgAiAFKAIcNgIEIAMgBEoEQEEAIARrQQJ0IQkgBCEAA0AgASAAQQJ0IgdqKQIAIQogBSACIAdqIgcgCWopAgA3AxAgBSAKNwMIIAVBGGogCCAFQRBqIAVBCGoQVCAHIAUoAhg2AgAgByAFKAIcNgIEIAAgBGoiACADSA0ACwsgBhAEIAVBIGokAEEBC54HAgh/An4jAEEwayIGJAAgACgCCCIDQQJrQRxNBEAgACADNgJMIABBfkF/IAN0IgRrIgM2AlQgACAEQX9zNgJQIAAgA0ECbTYCXCAAQwAAAEAgA7KVOAJYCyAAIAU2AjQgACgCKCIDKAIAIQQgAygCBCEDIAZBADYCECAGQgA3AwgCQCADIARrIgNBAEoEQCAAQQhqIQkgAEEsaiEKQQEgA0ECdiIDIANBAU0bIQsgAEHgAGohDANAIAAoAigiAygCBCADKAIAIgRrQQJ1IAhNDQIgCiAEIAhBAnRqKAIAIAZBCGoQVQJAIAYoAgwiAyADQR91IgRzIARrIAYoAggiBCAEQR91IgVzIAVraq0gBigCECIFIAVBH3UiB3MgB2utfCIOUARAIAYgACgCXDYCCAwBCyAGIAAoAlwiB6wiDyAErH4gDn+nIgQ2AgggBiAPIAOsfiAOf6ciAzYCDCADIANBH3UiDXMgDWsgBCAEQR91IgNzIANraiEDIAVBAE4EQCAGIAcgA2s2AhAMAQsgBiADIAdrNgIQCyAMEBEhAyAGKAIIIQUCQCADBEAgBkEAIAYoAhBrNgIQIAZBACAGKAIMayIENgIMIAZBACAFayIFNgIIDAELIAYoAgwhBAsCQCAFQQBOBEAgACgCXCIFIAYoAhBqIQMgBCAFaiEFDAELAn8gBEEASARAIAYoAhAiAyADQR91IgVzIAVrDAELIAAoAlQgBigCECIDQR91IgUgAyAFc2tqCyEFIANBAEgEQCAEIARBH3UiA3MgA2shAwwBCyAAKAJUIARBH3UiAyADIARza2ohAwsgACgCVCEEAkAgAyAFckUEQCAEIgMhBQwBCwJAIAUNACADIARHDQAgAyEFDAELAkAgAw0AIAQgBUcNACAFIQMMAQsCQCAFDQAgACgCXCIHIANODQAgB0EBdCADayEDQQAhBQwBCwJAIAQgBUcNACAAKAJcIgcgA0wNACAHQQF0IANrIQMMAQsCQCADIARHDQAgACgCXCIEIAVMDQAgBEEBdCAFayEFDAELIAMNAEEAIQMgACgCXCIEIAVODQAgBEEBdCAFayEFCyABIAhBA3QiBGopAgAhDiAGIAM2AiQgBiAFNgIgIAYgDjcDGCAGQShqIAkgBkEgaiAGQRhqEFQgAiAEaiIDIAYoAig2AgAgAyAGKAIsNgIEIAhBAWoiCCALRw0ACwsgBkEwaiQAQQEPCxAOAAsOACAAQZQ2NgIAIAAQBAsMACAAQZQ2NgIAIAALogECA34CfwJAIAEpAwgiAyABKQMQIgJCBHwiBFMNACABKAIAIAKnaigAACEFIAEgBDcDECADIAJCCHwiAlMNACABIAI3AxAgBUEBcUUNACAFZ0EfcyIBQQFrQRxLDQBBASEGIAAgAUEBajYCCCAAQX4gAXQiBUF+cyIBNgIQIAAgBUF/czYCDCAAIAFBAXU2AhggAEMAAABAIAGylTgCFAsgBgueBwIIfwJ+IwBBMGsiBiQAIAAoAggiA0ECa0EcTQRAIAAgAzYCTCAAQX5BfyADdCIEayIDNgJUIAAgBEF/czYCUCAAIANBAm02AlwgAEMAAABAIAOylTgCWAsgACAFNgI0IAAoAigiAygCACEEIAMoAgQhAyAGQQA2AhAgBkIANwMIAkAgAyAEayIDQQBKBEAgAEEIaiEJIABBLGohCkEBIANBAnYiAyADQQFNGyELIABB4ABqIQwDQCAAKAIoIgMoAgQgAygCACIEa0ECdSAITQ0CIAogBCAIQQJ0aigCACAGQQhqEFcCQCAGKAIMIgMgA0EfdSIEcyAEayAGKAIIIgQgBEEfdSIFcyAFa2qtIAYoAhAiBSAFQR91IgdzIAdrrXwiDlAEQCAGIAAoAlw2AggMAQsgBiAAKAJcIgesIg8gBKx+IA5/pyIENgIIIAYgDyADrH4gDn+nIgM2AgwgAyADQR91Ig1zIA1rIAQgBEEfdSIDcyADa2ohAyAFQQBOBEAgBiAHIANrNgIQDAELIAYgAyAHazYCEAsgDBARIQMgBigCCCEFAkAgAwRAIAZBACAGKAIQazYCECAGQQAgBigCDGsiBDYCDCAGQQAgBWsiBTYCCAwBCyAGKAIMIQQLAkAgBUEATgRAIAAoAlwiBSAGKAIQaiEDIAQgBWohBQwBCwJ/IARBAEgEQCAGKAIQIgMgA0EfdSIFcyAFawwBCyAAKAJUIAYoAhAiA0EfdSIFIAMgBXNragshBSADQQBIBEAgBCAEQR91IgNzIANrIQMMAQsgACgCVCAEQR91IgMgAyAEc2tqIQMLIAAoAlQhBAJAIAMgBXJFBEAgBCIDIQUMAQsCQCAFDQAgAyAERw0AIAMhBQwBCwJAIAMNACAEIAVHDQAgBSEDDAELAkAgBQ0AIAAoAlwiByADTg0AIAdBAXQgA2shA0EAIQUMAQsCQCAEIAVHDQAgACgCXCIHIANMDQAgB0EBdCADayEDDAELAkAgAyAERw0AIAAoAlwiBCAFTA0AIARBAXQgBWshBQwBCyADDQBBACEDIAAoAlwiBCAFTg0AIARBAXQgBWshBQsgASAIQQN0IgRqKQIAIQ4gBiADNgIkIAYgBTYCICAGIA43AxggBkEoaiAJIAZBIGogBkEYahBUIAIgBGoiAyAGKAIoNgIAIAMgBigCLDYCBCAIQQFqIgggC0cNAAsLIAZBMGokAEEBDwsQDgALBABBAwsOACAAQaguNgIAIAAQBAsMACAAQaguNgIAIAALngUBB38jAEEgayIFJAACQCACQQNHDQAgACgCBCEEIAAoAgwhBiAFQX82AhggBUL/////j4CAwD83AxAgBUJ/NwMIIAFBfkYNACAEKAIEKAIIIAZBAnRqKAIAIQIgBCAEKAIAKAIIEQAAQQFGBEAgBC8BJBogBCgCBCgCCCAGQQJ0aigCACEJIAQgBCgCACgCCBEAACEAAkAgAUEBa0EFSw0AIABBAUcNACAEIAQoAgAoAiQRAAAhCCAEIAYgBCgCACgCLBEBACEHIAhFDQAgB0UNAAJ/IAQgBiAEKAIAKAIoEQEAIgYEQCABQQZHDQIgBCgCLCEBQfAAEAUiAyAJNgIEIAMgBSkCCDcCCCADIAUpAhA3AhAgAyAFKAIYNgIYIAMgBzYCKCADIAdBDGoiADYCJCADIAY2AiAgAyABNgIcIAMgBzYCRCADQUBrIAA2AgAgAyAGNgI8IAMgATYCOCADQgA3AjAgA0GoLjYCACADQoCAgPxzNwJYIANCfzcCUCADQoGAgIBwNwJIIANB3DI2AiwgA0HgAGoMAQsgAUEGRw0BIAQoAiwhAUHwABAFIgMgCTYCBCADIAUpAgg3AgggAyAFKQIQNwIQIAMgBSgCGDYCGCADIAc2AiggAyAHQQxqIgA2AiQgAyAINgIgIAMgATYCHCADIAc2AkQgA0FAayAANgIAIAMgCDYCPCADIAE2AjggA0IANwIwIANBlDY2AgAgA0KAgID8czcCWCADQn83AlAgA0KBgICAcDcCSCADQbg5NgIsIANB4ABqCyIAQgA3AgAgAEIANwAFCyADDQELQRwQBSIDIAI2AgQgAyAFKQMINwIIIAMgBSkDEDcCECADIAUoAhg2AhggA0HUPDYCAAsgBUEgaiQAIAMLBABBAgsTACAAQRhqIAAQMiAAKAIIEIEBCzMAAn8gACgCBC0AJEECTwRAQQAgAEEYaiAAEDIgAhB8RQ0BGgsgAEEYaiAAKAIQEKYBCwtKAQF/IAAgATYCBCABKAIEKAIIIAJBAnRqKAIAIQEgACACNgIMIAAgATYCCAJAIAAoAggiAC0AGEEDRw0AIAAoAhxBCUYhAwsgAwuNBQELfyAAIAQ2AggCfyAEIAAoAiQgAEEgaiIMKAIAIgdrQQJ1IgVLBEAgDCAEIAVrEAsgACgCCAwBCyAEIAQgBU8NABogACAHIARBAnRqNgIkIAQLIQVBfyAEQQJ0IARB/////wNLGyIHEAVBACAHEAchDQJAIAVBAEwNACAAKAIgIQcDQAJAIA0gBkECdCIFaigCACIIIAAoAhAiCUoEQCAFIAdqIAk2AgAMAQsgBSAHaiEFIAAoAgwiCSAISgRAIAUgCTYCAAwBCyAFIAg2AgALIAZBAWoiBiAAKAIIIgVIDQALIAVBAEwNAEEAIQYDQCACIAZBAnQiBWoiCCABIAVqKAIAIAUgB2ooAgBqIgU2AgACQCAIAn8gACgCECAFSARAIAUgACgCFGsMAQsgBSAAKAIMTg0BIAAoAhQgBWoLNgIACyAGQQFqIgYgACgCCCIFSA0ACwsCQCADIARMDQAgBUEATA0AQQAgBGtBAnQhDiAEIQcDQAJAIAVBAEwNACACIAdBAnQiCmoiDyAOaiEQIAwoAgAhCEEAIQYDQAJAIBAgBkECdCIFaigCACIJIAAoAhAiC0oEQCAFIAhqIAs2AgAMAQsgBSAIaiEFIAAoAgwiCyAJSgRAIAUgCzYCAAwBCyAFIAk2AgALIAZBAWoiBiAAKAIIIgVIDQALQQAhBiAFQQBMDQAgASAKaiEJA0AgDyAGQQJ0IgVqIgogBSAJaigCACAFIAhqKAIAaiIFNgIAAkAgCgJ/IAAoAhAgBUgEQCAFIAAoAhRrDAELIAUgACgCDE4NASAAKAIUIAVqCzYCAAsgBkEBaiIGIAAoAggiBUgNAAsLIAQgB2oiByADSA0ACwsgDRAEQQELiwgCCX8CfiMAQSBrIgYkACAAIAU2AkQgACgCOCIDKAIAIQQgAygCBCEDIAZBADYCGCAGQgA3AxACQCADIARrIgNBAEoEQCAAQTxqIQtBASADQQJ2IgMgA0EBTRshDCAAQfAAaiENA0AgACgCOCIDKAIEIAMoAgAiBGtBAnUgCE0NAiALIAQgCEECdGooAgAgBkEQahBVAkAgBigCFCIDIANBH3UiBHMgBGsgBigCECIEIARBH3UiBXMgBWtqrSAGKAIYIgUgBUEfdSIHcyAHa618Ig9QBEAgBiAAKAJsNgIQDAELIAYgACgCbCIHrCIQIASsfiAPf6ciBDYCECAGIBAgA6x+IA9/pyIDNgIUIAMgA0EfdSIJcyAJayAEIARBH3UiA3MgA2tqIQMgBUEATgRAIAYgByADazYCGAwBCyAGIAMgB2s2AhgLIA0QESEDIAYoAhAhBQJAIAMEQCAGQQAgBigCGGs2AhggBkEAIAYoAhRrIgQ2AhQgBkEAIAVrIgU2AhAMAQsgBigCFCEECwJAIAVBAE4EQCAAKAJsIgUgBigCGGohAyAEIAVqIQUMAQsCfyAEQQBIBEAgBigCGCIDIANBH3UiBXMgBWsMAQsgACgCZCAGKAIYIgNBH3UiBSADIAVza2oLIQUgA0EASARAIAQgBEEfdSIDcyADayEDDAELIAAoAmQgBEEfdSIDIAMgBHNraiEDCyAAKAJkIQQCQCADIAVyRQRAIAQiAyEFDAELAkAgBQ0AIAMgBEcNACADIQUMAQsCQCADDQAgBCAFRw0AIAUhAwwBCwJAIAUNACAAKAJsIgcgA04NACAHQQF0IANrIQNBACEFDAELAkAgBCAFRw0AIAAoAmwiByADTA0AIAdBAXQgA2shAwwBCwJAIAMgBEcNACAAKAJsIgQgBUwNACAEQQF0IAVrIQUMAQsgAw0AQQAhAyAAKAJsIgQgBU4NACAEQQF0IAVrIQULIAYgAzYCDCAGIAU2AggCQCAAKAIIQQBMDQAgAiAIQQN0IglqIQ4gACgCICEHQQAhBQNAAkAgBUECdCIDIAZBCGpqKAIAIgQgACgCECIKSgRAIAMgB2ogCjYCAAwBCyADIAdqIQMgACgCDCIKIARKBEAgAyAKNgIADAELIAMgBDYCAAsgBUEBaiIFIAAoAggiBEgNAAtBACEDIARBAEwNACABIAlqIQkDQCAOIANBAnQiBGoiCiAEIAlqKAIAIAQgB2ooAgBqIgQ2AgACQCAKAn8gACgCECAESARAIAQgACgCFGsMAQsgBCAAKAIMTg0BIAAoAhQgBGoLNgIACyADQQFqIgMgACgCCEgNAAsLIAhBAWoiCCAMRw0ACwsgBkEgaiQAQQEPCxAOAAstAQF/IABBsCc2AgAgAEGQFzYCACAAKAIgIgEEQCAAIAE2AiQgARAECyAAEAQLKwEBfyAAQbAnNgIAIABBkBc2AgAgACgCICIBBEAgACABNgIkIAEQBAsgAAuTDQISfgt/AkACQCAEQQJHDQAgAEECNgIIIABBQGsgBTYCAAJAIAAoAiQgAEEgaiIgKAIAIgNrIgRBB00EQCAgQQIgBEECdmsQCwwBCyAEQQhGDQAgACADQQhqNgIkC0EBIR4gACgCOCIDKAIEIAMoAgBrIgNBAEwNACAAQTxqIRpBASADQQJ2IgMgA0EBTRshISAAQcQAaiEiQQAhAwNAIAAoAjgiBCgCBCAEKAIAIgRrQQJ1IANNDQICfyAEIANBAnRqKAIAIR0jAEHQAGsiGSQAQX8hGwJAIB1Bf0YEQCAaKAIkGgwBCyAaKAIgIQUgHUEBaiIEIB1BAmsgBEEDcBsiBEF/RwRAIAUoAgAgBEECdGooAgAhGwtBfyEYQX9BAiAdQQNwGyAdaiIEQX9HBEAgBSgCACAEQQJ0aigCACEYCyAaKAIkIgQoAgQgBCgCACIFa0ECdSIEIBtNDQAgBCAYTQ0AIAUgG0ECdGooAgAhHgJAAkACQAJAAkACQCAFIBhBAnRqKAIAIh0gA04NACADIB5MDQAgAiAdQQN0aiIEKAIEIRsgAiAeQQN0aiIFKAIEIR8CQCAEKAIAIgQgBSgCACIFRw0AIBsgH0cNACAaIAU2AgggGiAfNgIMDAILIBooAgQgA0ECdGooAgAhGCAZQgA3A0ggGUFAa0IANwMAIBlCADcDOCAaKAIAIhwtAFRFBEAgHCgCRCAYQQJ0aigCACEYCyAcIBggHCwAGCAZQThqEBsgGigCBCAeQQJ0aigCACEYIBlCADcDMCAZQgA3AyggGUIANwMgIBooAgAiHC0AVEUEQCAcKAJEIBhBAnRqKAIAIRgLIBwgGCAcLAAYIBlBIGoQGyAaKAIEIB1BAnRqKAIAIRggGUIANwMYIBlCADcDECAZQgA3AwggGigCACIdLQBURQRAIB0oAkQgGEECdGooAgAhGAsgHSAYIB0sABggGUEIahAbIBkpAxAgGSkDKCISfSILIAt+IBkpAwggGSkDICITfSIMIAx+fCAZKQMYIBkpAzAiFH0iDSANfnwiCFANAEEAIRhC////////////ACAIgCAFrCIOIA5CP4ciBoUgBn0iByAfrCIPIA9CP4ciBoUgBn0iBiAGIAdUG1QNBSAZKQNAIhUgEn0gC34gGSkDOCIWIBN9IAx+fCAZKQNIIhcgFH0gDX58IgpC////////////ACAErCAOfSIQIBBCP4ciBoUgBn0iByAbrCAPfSIRIBFCP4ciBoUgBn0iBiAGIAdUG4BVDQUgCkL///////////8AIAwgDEI/hyIGhSAGfSIHIAsgC0I/hyIGhSAGfSIGIAYgB1QbIgcgDSANQj+HIgaFIAZ9IgYgBiAHVBuAVQ0FQgEhCSAVIBIgCiALfiAIf3x9IgYgBn4gFiATIAogDH4gCH98fSIGIAZ+fCAXIBQgCiANfiAIf3x9IgYgBn58IAh+IgZCAVgNAiAGIQcDQCAJQgGGIQkgB0IHViEEIAdCAoghByAEDQALDAMLIBogAiADIB5KBH8gHkEBdAUgA0EATARAIBpCADcCCAwCCyADQQF0QQJrC0ECdGoiBCgCADYCCCAaIAQoAgQ2AgwLQQEhGAwDCyAGIgmnQQFrDQELA0AgBiAJgCAJfEIBiCIJIAl+IAZWDQALCyAaKAIUIgRFDQAgGigCECAEQQFrIgVBA3ZB/P///wFxaigCACEEIBogBTYCFEEBIRggGiAKIBF+IAggD358QgAgCSAQfiIGfSAGIAQgBXZBAXEiBBt8IAh/PgIMIBogCiAQfiAIIA5+fCAJIBF+IgZCACAGfSAEG3wgCH8+AggLIBlB0ABqJAAgGAwBCxAOAAsiHkUEQEEADwsCQCAAKAIIQQBMDQAgAiADQQN0IhxqIR0gICgCACEYQQAhBANAAkAgIiAEQQJ0IhtqKAIAIh8gACgCECIFSgRAIBggG2ogBTYCAAwBCyAYIBtqIRsgACgCDCIFIB9KBEAgGyAFNgIADAELIBsgHzYCAAsgBEEBaiIEIAAoAggiG0gNAAtBACEFIBtBAEwNACABIBxqIRsDQCAdIAVBAnQiHGoiBCAbIBxqKAIAIBggHGooAgBqIhw2AgACQCAEAn8gACgCECAcSARAIBwgACgCFGsMAQsgHCAAKAIMTg0BIAAoAhQgHGoLNgIACyAFQQFqIgUgACgCCEgNAAsLIANBAWoiAyAhRw0ACwsgHg8LEA4ACzsBAX8gAEHQJTYCACAAKAJMIgEEQCABEAQLIABBkBc2AgAgACgCICIBBEAgACABNgIkIAEQBAsgABAECzkBAX8gAEHQJTYCACAAKAJMIgEEQCABEAQLIABBkBc2AgAgACgCICIBBEAgACABNgIkIAEQBAsgAAujFgEffyMAQUBqIgYkACAAIAQ2AggCfwJAIAQgACgCJCAAQSBqIhYoAgAiBWtBAnUiA0sEQCAWIAQgA2sQCyAGQgA3AzggBkIANwMwIAZCADcDKCAGQgA3AyAgBkIANwMYIAZCADcDECAGQQA2AgAMAQsgAyAESwRAIAAgBSAEQQJ0ajYCJAsgBkIANwM4IAZCADcDMCAGQgA3AyggBkIANwMgIAZCADcDGCAGQgA3AxAgBkEANgIAQQAgBEUNARoLIAZBEGogBCAGEBogBigCHCEHIAYoAiALIQMgBkEANgIAAkAgBCADIAdrQQJ1IgNNBEAgAyAETQ0BIAYgByAEQQJ0ajYCIAwBCyAGQRBqQQxyIAQgA2sgBhAaCyAGQQA2AgACQCAEIAYoAiwgBigCKCIFa0ECdSIDTQRAIAMgBE0NASAGIAUgBEECdGo2AiwMAQsgBkEoaiAEIANrIAYQGgsgBkEANgIAAkAgBCAGKAI4IAYoAjQiBWtBAnUiA00EQCADIARNDQEgBiAFIARBAnRqNgI4DAELIAZBNGogBCADayAGEBoLAkAgACgCCEEATA0AIAYoAhAhCCAAKAIgIQlBACEHA0ACQCAIIAdBAnQiA2ooAgAiBSAAKAIQIgxKBEAgAyAJaiAMNgIADAELIAMgCWohAyAAKAIMIgwgBUoEQCADIAw2AgAMAQsgAyAFNgIACyAHQQFqIgcgACgCCCIDSA0ACyADQQBMDQBBACEDA0AgAiADQQJ0IgVqIgggASAFaigCACAFIAlqKAIAaiIFNgIAAkAgCAJ/IAAoAhAgBUgEQCAFIAAoAhRrDAELIAUgACgCDE4NASAAKAIUIAVqCzYCAAsgA0EBaiIDIAAoAghIDQALCyAAKAI0IR4gACgCMCEZQRAQBSIXQgA3AgAgF0IANwIIIAZBADYCCCAGQgA3AwACQCAEBEAgBEGAgICABE8NASAGIARBAnQiAxAFIhI2AgAgBiADIBJqNgIIIBJBACADEAcaC0EBIRgCQCAAKAI4IgMoAgQgAygCACIfayIDQQhIDQBBAiADQQJ1IhUgFUECTBshIEEBIBUgFUEBTRshISAEQX5xIRogBEEBcSEbIARBfHEhIiAEQQNxIRwgBEEBayEdIARBAnQhIyAEQQRJISRBACEYQQEhDANAAkACQAJAAkAgDCAhRwRAAn8CQCAfIAxBAnRqKAIAIgVBf0YNACAZKAIMIgsgBUEBayAFQQJqIgMgBUEDcCIIG0ECdGohEEEAIQkgCEEARyADQX9HciEUQQEhDSAFIQMCQANAAkAgCyADQQJ0aigCACIIQX9GDQBBfyEKIB4oAgAiDiAZKAIAIhEgCEECdGooAgBBAnRqIQcgCEEBaiIPIAhBAmsgD0EDcBsiD0F/RwRAIBEgD0ECdGooAgAhCgsgBkEQaiAJQQxsaigCACEPIAcoAgAhEyAOIApBAnRqKAIAIQoCfwJAIAhBA3AEQCAIQQFrIQcMAQtBfyAIQQJqIgdBf0YNARoLIBEgB0ECdGooAgALIQggDCATTA0AIAogDE4NACAOIAhBAnRqKAIAIgggDE4NAAJAIARFDQAgBCAIbCEIIAQgCmwhCiAEIBNsIQ5BACEHQQAhEyAdBEADQCAPIAdBAnRqIAIgByAIakECdGooAgAgAiAHIApqQQJ0aigCAGogAiAHIA5qQQJ0aigCAGs2AgAgDyAHQQFyIhFBAnRqIAIgCCARakECdGooAgAgAiAKIBFqQQJ0aigCAGogAiAOIBFqQQJ0aigCAGs2AgAgB0ECaiEHIBNBAmoiEyAaRw0ACwsgG0UNACAPIAdBAnRqIAIgByAIakECdGooAgAgAiAHIApqQQJ0aigCAGogAiAHIA5qQQJ0aigCAGs2AgALQQQhCCAJQQFqIglBBEYNAgsCQCAFAn8gDUEBcQRAQX8gA0EBaiIIIANBAmsgCEEDcBsiA0F/Rg0BGkF/IAsgA0ECdGooAgAiA0F/Rg0BGiADQQFqIgggA0ECayAIQQNwGwwBCwJAIANBA3AEQCADQQFrIQcMAQtBfyADQQJqIgdBf0YNARoLQX8gCyAHQQJ0aigCACIDQX9GDQAaIANBAWsgA0EDcA0AGiADQQJqCyIDRg0AIA0gA0F/RnEEQCAURQ0BIBAoAgAiA0F/Rg0BQQAhDSADQQFrIANBAmogA0EDcBshAwsgA0F/Rw0BCwsgCSIIQQBMDQELIAQEQCASQQAgIxAHGgsgFyAIQQFrIgNBAnRqIQ8gACADQQxsaiIDIREgA0FAaygCACETQQAhDSAGKAIAIQNBACEFA0AgDyAPKAIAIglBAWo2AgAgCSATTw0JAkAgESgCPCAJQQN2Qfz///8BcWooAgAgCXZBAXENACAFQQFqIQUgBEUNACAGQRBqIA1BDGxqKAIAIQlBACEKQQAhB0EAIQ4gJEUEQANAIAMgB0ECdCILaiIQIAkgC2ooAgAgECgCAGo2AgAgAyALQQRyIhBqIhQgCSAQaigCACAUKAIAajYCACADIAtBCHIiEGoiFCAJIBBqKAIAIBQoAgBqNgIAIAMgC0EMciILaiIQIAkgC2ooAgAgECgCAGo2AgAgB0EEaiEHIA5BBGoiDiAiRw0ACwsgHEUNAANAIAMgB0ECdCILaiIOIAkgC2ooAgAgDigCAGo2AgAgB0EBaiEHIApBAWoiCiAcRw0ACwsgDUEBaiINIAhHDQALIAQgDGwiCSAFRQ0BGiAERQ0FQQAhB0EAIQMgHQ0DDAQLIAQgDGwLIQMgACgCCEEATA0EIAIgA0ECdCIIaiENIAIgDEEBayAEbEECdGohCiAWKAIAIQlBACEHA0ACQCAKIAdBAnQiA2ooAgAiBSAAKAIQIgtKBEAgAyAJaiALNgIADAELIAMgCWohAyAAKAIMIgsgBUoEQCADIAs2AgAMAQsgAyAFNgIACyAHQQFqIgcgACgCCCIFSA0AC0EAIQMgBUEATA0EIAEgCGohCANAIA0gA0ECdCIFaiIHIAUgCGooAgAgBSAJaigCAGoiBTYCAAJAIAcCfyAAKAIQIAVIBEAgBSAAKAIUawwBCyAFIAAoAgxODQEgACgCFCAFags2AgALIANBAWoiAyAAKAIISA0ACwwECxAOAAsDQCASIAdBAnQiCGoiDSANKAIAIAVtNgIAIBIgCEEEcmoiCCAIKAIAIAVtNgIAIAdBAmohByADQQJqIgMgGkcNAAsLIBtFDQAgEiAHQQJ0aiIDIAMoAgAgBW02AgALIAAoAghBAEwNACACIAlBAnQiCGohDSAWKAIAIQlBACEHA0ACQCASIAdBAnQiA2ooAgAiBSAAKAIQIgpKBEAgAyAJaiAKNgIADAELIAMgCWohAyAAKAIMIgogBUoEQCADIAo2AgAMAQsgAyAFNgIACyAHQQFqIgcgACgCCCIFSA0AC0EAIQMgBUEATA0AIAEgCGohCANAIA0gA0ECdCIFaiIHIAUgCGooAgAgBSAJaigCAGoiBTYCAAJAIAcCfyAAKAIQIAVIBEAgBSAAKAIUawwBCyAFIAAoAgxODQEgACgCFCAFags2AgALIANBAWoiAyAAKAIISA0ACwsgDEEBaiIMIBVOIRggDCAgRw0ACwsgBigCACIABEAgABAECyAXEAQgBigCNCIABEAgBiAANgI4IAAQBAsgBigCKCIABEAgBiAANgIsIAAQBAsgBigCHCIABEAgBiAANgIgIAAQBAsgBigCECIABEAgBiAANgIUIAAQBAsgBkFAayQAIBgPCxAIAAuHBwIHfwN+IwBBIGsiBSQAAkACQEEBIAVBHGogARAjRQ0AIAUoAhwiBCAAKAIwIgIoAgQgAigCAGtBAnVLDQACQCAEBEBBACECIABBPGogBBAiIAVBCGoiA0IANwIAIANCADcABSADIgcgARAVRQ0BA0BBASACdCEDIAcQESEIIAAoAjwgAkEDdkH8////AXFqIgYCfyAIBEAgBigCACADcgwBCyAGKAIAIANBf3NxCzYCACACQQFqIgIgBEcNAAsLQQEgBUEcaiABECNFDQEgBSgCHCIEIAAoAjAiAigCBCACKAIAa0ECdUsNASAEBEBBACECIABByABqIAQQIiAFQQhqIgNCADcCACADQgA3AAUgAyIHIAEQFUUNAQNAQQEgAnQhAyAHEBEhCCAAKAJIIAJBA3ZB/P///wFxaiIGAn8gCEUEQCAGKAIAIANBf3NxDAELIAYoAgAgA3ILNgIAIAJBAWoiAiAERw0ACwtBASAFQRxqIAEQI0UNASAFKAIcIgQgACgCMCICKAIEIAIoAgBrQQJ1Sw0BIAQEQEEAIQIgAEHUAGogBBAiIAVBCGoiA0IANwIAIANCADcABSADIgcgARAVRQ0BA0BBASACdCEDIAcQESEIIAAoAlQgAkEDdkH8////AXFqIgYCfyAIRQRAIAYoAgAgA0F/c3EMAQsgBigCACADcgs2AgAgAkEBaiICIARHDQALC0EBIAVBHGogARAjRQ0BIAUoAhwiBCAAKAIwIgIoAgQgAigCAGtBAnVLDQEgBARAQQAhAiAAQeAAaiAEECIgBUEIaiIDQgA3AgAgA0IANwAFIAMiByABEBVFDQEDQEEBIAJ0IQMgBxARIQggACgCYCACQQN2Qfz///8BcWoiBgJ/IAhFBEAgBigCACADQX9zcQwBCyAGKAIAIANyCzYCACACQQFqIgIgBEcNAAsLQQAhAiABKQMIIgsgASkDECIJQgR8IgpTDQIgASgCACIDIAmnaigAACEEIAEgCjcDECALIAlCCHwiCVMNAiADIAqnaigAACEDIAEgCTcDECADIARIDQIgACADNgIQIAAgBDYCDCADrCAErH0iCUL+////B1YNAkEBIQIgACAJp0EBaiIBNgIUIAAgAUEBdiIENgIYIABBACAEazYCHCABQQFxDQIgACAEQQFrNgIYDAILC0EAIQILIAVBIGokACACC2UBAX8gAEHkIzYCACAAKAJgIgEEQCABEAQLIAAoAlQiAQRAIAEQBAsgACgCSCIBBEAgARAECyAAKAI8IgEEQCABEAQLIABBkBc2AgAgACgCICIBBEAgACABNgIkIAEQBAsgABAEC2MBAX8gAEHkIzYCACAAKAJgIgEEQCABEAQLIAAoAlQiAQRAIAEQBAsgACgCSCIBBEAgARAECyAAKAI8IgEEQCABEAQLIABBkBc2AgAgACgCICIBBEAgACABNgIkIAEQBAsgAAuZCwEQfyAAIAQ2AggCfyAEIAAoAiQgAEEgaiIOKAIAIgVrQQJ1IgNLBEAgDiAEIANrEAsgACgCCAwBCyAEIAMgBE0NABogACAFIARBAnRqNgIkIAQLIQMgACgCNCERIAAoAjAhD0EAIQVBfyAEQQJ0IARB/////wNLGyIIEAVBACAIEAchDAJAIANBAEwNACAAKAIgIQgDQAJAIAwgBUECdCIDaigCACIHIAAoAhAiBkoEQCADIAhqIAY2AgAMAQsgAyAIaiEDIAAoAgwiBiAHSgRAIAMgBjYCAAwBCyADIAc2AgALIAVBAWoiBSAAKAIIIgNIDQALIANBAEwNAEEAIQUDQCACIAVBAnQiA2oiByABIANqKAIAIAMgCGooAgBqIgM2AgACQCAHAn8gACgCECADSARAIAMgACgCFGsMAQsgAyAAKAIMTg0BIAAoAhQgA2oLNgIACyAFQQFqIgUgACgCCCIDSA0ACwsgACgCOCIFKAIEIAUoAgAiEmsiBUEFTgRAQQIgBUECdiIQIBBBAk0bIRMgBEF+cSEUIARBAXEhFUEBIQgDQAJAAkAgCCAQRwRAIAQgCGwhCyASIAhBAnRqKAIAIgVBf0YNASAPKAIMIAVBAnRqKAIAIgVBf0YNASARKAIAIgcgDygCACIGIAVBAnRqKAIAQQJ0aigCACEJIAcgBUEBaiIKIAVBAmsgCkEDcBsiCkF/RwR/IAYgCkECdGooAgAFQX8LQQJ0aigCACEKAn8CQCAFQQNwBEAgBUEBayEFDAELQX8gBUECaiIFQX9GDQEaCyAGIAVBAnRqKAIACyEFIAggCUwNASAIIApMDQEgByAFQQJ0aigCACIFIAhODQECQCAEQQBMDQAgBCAFbCEHIAQgCmwhBiAEIAlsIQlBACEFQQAhDSAEQQFHBEADQCAMIAVBAnRqIAIgBSAHakECdGooAgAgAiAFIAZqQQJ0aigCAGogAiAFIAlqQQJ0aigCAGs2AgAgDCAFQQFyIgpBAnRqIAIgByAKakECdGooAgAgAiAGIApqQQJ0aigCAGogAiAJIApqQQJ0aigCAGs2AgAgBUECaiEFIA1BAmoiDSAURw0ACwsgFUUNACAMIAVBAnRqIAIgBSAHakECdGooAgAgAiAFIAZqQQJ0aigCAGogAiAFIAlqQQJ0aigCAGs2AgALIANBAEwNAiACIAtBAnQiCWohCiAOKAIAIQdBACEFA0ACQCAMIAVBAnQiA2ooAgAiBiAAKAIQIgtKBEAgAyAHaiALNgIADAELIAMgB2ohAyAAKAIMIgsgBkoEQCADIAs2AgAMAQsgAyAGNgIACyAFQQFqIgUgACgCCCIDSA0AC0EAIQUgA0EATA0CIAEgCWohBgNAIAogBUECdCIDaiIJIAMgBmooAgAgAyAHaigCAGoiAzYCAAJAIAkCfyAAKAIQIANIBEAgAyAAKAIUawwBCyADIAAoAgxODQEgACgCFCADags2AgALIAVBAWoiBSAAKAIIIgNIDQALDAILEA4ACyADQQBMDQAgAiALQQJ0IglqIQogAiAIQQFrIARsQQJ0aiELIA4oAgAhB0EAIQUDQAJAIAsgBUECdCIDaigCACIGIAAoAhAiDUoEQCADIAdqIA02AgAMAQsgAyAHaiEDIAAoAgwiDSAGSgRAIAMgDTYCAAwBCyADIAY2AgALIAVBAWoiBSAAKAIIIgNIDQALQQAhBSADQQBMDQAgASAJaiEGA0AgCiAFQQJ0IgNqIgkgAyAGaigCACADIAdqKAIAaiIDNgIAAkAgCQJ/IAAoAhAgA0gEQCADIAAoAhRrDAELIAMgACgCDE4NASAAKAIUIANqCzYCAAsgBUEBaiIFIAAoAggiA0gNAAsLIAhBAWoiCCATRw0ACwsgDBAEQQELiwgCCX8CfiMAQSBrIgYkACAAIAU2AkQgACgCOCIDKAIAIQQgAygCBCEDIAZBADYCGCAGQgA3AxACQCADIARrIgNBAEoEQCAAQTxqIQtBASADQQJ2IgMgA0EBTRshDCAAQfAAaiENA0AgACgCOCIDKAIEIAMoAgAiBGtBAnUgCE0NAiALIAQgCEECdGooAgAgBkEQahBXAkAgBigCFCIDIANBH3UiBHMgBGsgBigCECIEIARBH3UiBXMgBWtqrSAGKAIYIgUgBUEfdSIHcyAHa618Ig9QBEAgBiAAKAJsNgIQDAELIAYgACgCbCIHrCIQIASsfiAPf6ciBDYCECAGIBAgA6x+IA9/pyIDNgIUIAMgA0EfdSIJcyAJayAEIARBH3UiA3MgA2tqIQMgBUEATgRAIAYgByADazYCGAwBCyAGIAMgB2s2AhgLIA0QESEDIAYoAhAhBQJAIAMEQCAGQQAgBigCGGs2AhggBkEAIAYoAhRrIgQ2AhQgBkEAIAVrIgU2AhAMAQsgBigCFCEECwJAIAVBAE4EQCAAKAJsIgUgBigCGGohAyAEIAVqIQUMAQsCfyAEQQBIBEAgBigCGCIDIANBH3UiBXMgBWsMAQsgACgCZCAGKAIYIgNBH3UiBSADIAVza2oLIQUgA0EASARAIAQgBEEfdSIDcyADayEDDAELIAAoAmQgBEEfdSIDIAMgBHNraiEDCyAAKAJkIQQCQCADIAVyRQRAIAQiAyEFDAELAkAgBQ0AIAMgBEcNACADIQUMAQsCQCADDQAgBCAFRw0AIAUhAwwBCwJAIAUNACAAKAJsIgcgA04NACAHQQF0IANrIQNBACEFDAELAkAgBCAFRw0AIAAoAmwiByADTA0AIAdBAXQgA2shAwwBCwJAIAMgBEcNACAAKAJsIgQgBUwNACAEQQF0IAVrIQUMAQsgAw0AQQAhAyAAKAJsIgQgBU4NACAEQQF0IAVrIQULIAYgAzYCDCAGIAU2AggCQCAAKAIIQQBMDQAgAiAIQQN0IglqIQ4gACgCICEHQQAhBQNAAkAgBUECdCIDIAZBCGpqKAIAIgQgACgCECIKSgRAIAMgB2ogCjYCAAwBCyADIAdqIQMgACgCDCIKIARKBEAgAyAKNgIADAELIAMgBDYCAAsgBUEBaiIFIAAoAggiBEgNAAtBACEDIARBAEwNACABIAlqIQkDQCAOIANBAnQiBGoiCiAEIAlqKAIAIAQgB2ooAgBqIgQ2AgACQCAKAn8gACgCECAESARAIAQgACgCFGsMAQsgBCAAKAIMTg0BIAAoAhQgBGoLNgIACyADQQFqIgMgACgCCEgNAAsLIAhBAWoiCCAMRw0ACwsgBkEgaiQAQQEPCxAOAAstAQF/IABBrBs2AgAgAEGQFzYCACAAKAIgIgEEQCAAIAE2AiQgARAECyAAEAQLKwEBfyAAQawbNgIAIABBkBc2AgAgACgCICIBBEAgACABNgIkIAEQBAsgAAv3DAISfgt/AkACQCAEQQJHDQAgAEECNgIIIABBQGsgBTYCAAJAIAAoAiQgAEEgaiIgKAIAIgNrIgRBB00EQCAgQQIgBEECdmsQCwwBCyAEQQhGDQAgACADQQhqNgIkC0EBIR4gACgCOCIDKAIEIAMoAgBrIgNBAEwNACAAQTxqIRxBASADQQJ2IgMgA0EBTRshISAAQcQAaiEiQQAhAwNAIAAoAjgiBCgCBCAEKAIAIgRrQQJ1IANNDQIgBCADQQJ0aigCACEaIwBB0ABrIhgkAEF/IQUCf0F/IBpBf0YNABogGkEBaiIEIBpBAmsgBEEDcBshBSAaQQFrIBpBA3ANABogGkECagshHQJAAkACQAJAAkAgHCgCJCIEKAIEIAQoAgAiG2tBAnUiGiAcKAIgKAIcIgQgBUECdGooAgAiBU0NACAaIAQgHUECdGooAgAiBE0NACAbIAVBAnRqKAIAIR4CQAJAIBsgBEECdGooAgAiHSADTg0AIAMgHkwNACACIB1BA3RqIgQoAgQhGiACIB5BA3RqIgUoAgQhHwJAIAQoAgAiBCAFKAIAIgVHDQAgGiAfRw0AIBwgBTYCCCAcIB82AgwMAgsgHCgCBCADQQJ0aigCACEZIBhCADcDSCAYQUBrQgA3AwAgGEIANwM4IBwoAgAiGy0AVEUEQCAbKAJEIBlBAnRqKAIAIRkLIBsgGSAbLAAYIBhBOGoQGyAcKAIEIB5BAnRqKAIAIRkgGEIANwMwIBhCADcDKCAYQgA3AyAgHCgCACIbLQBURQRAIBsoAkQgGUECdGooAgAhGQsgGyAZIBssABggGEEgahAbIBwoAgQgHUECdGooAgAhGSAYQgA3AxggGEIANwMQIBhCADcDCCAcKAIAIh0tAFRFBEAgHSgCRCAZQQJ0aigCACEZCyAdIBkgHSwAGCAYQQhqEBsgGCkDECAYKQMoIhJ9IgsgC34gGCkDCCAYKQMgIhN9IgwgDH58IBgpAxggGCkDMCIUfSINIA1+fCIIUA0AQQAhGUL///////////8AIAiAIAWsIg4gDkI/hyIGhSAGfSIHIB+sIg8gD0I/hyIGhSAGfSIGIAYgB1QbVA0GIBgpA0AiFSASfSALfiAYKQM4IhYgE30gDH58IBgpA0giFyAUfSANfnwiCkL///////////8AIASsIA59IhAgEEI/hyIGhSAGfSIHIBqsIA99IhEgEUI/hyIGhSAGfSIGIAYgB1QbgFUNBiAKQv///////////wAgDCAMQj+HIgaFIAZ9IgcgCyALQj+HIgaFIAZ9IgYgBiAHVBsiByANIA1CP4ciBoUgBn0iBiAGIAdUG4BVDQZCASEJIBUgEiAKIAt+IAh/fH0iBiAGfiAWIBMgCiAMfiAIf3x9IgYgBn58IBcgFCAKIA1+IAh/fH0iBiAGfnwgCH4iBkIBWA0DIAYhBwNAIAlCAYYhCSAHQgdWIQQgB0ICiCEHIAQNAAsMBAsgHCACIAMgHkoEfyAeQQF0BSADQQBMBEAgHEIANwIIDAILIANBAXRBAmsLQQJ0aiIEKAIANgIIIBwgBCgCBDYCDAtBASEZDAQLEA4ACyAGIgmnQQFrDQELA0AgBiAJgCAJfEIBiCIJIAl+IAZWDQALCyAcKAIUIgRFDQAgHCgCECAEQQFrIgVBA3ZB/P///wFxaigCACEEIBwgBTYCFEEBIRkgHCAKIBF+IAggD358QgAgCSAQfiIGfSAGIAQgBXZBAXEiBBt8IAh/PgIMIBwgCiAQfiAIIA5+fCAJIBF+IgZCACAGfSAEG3wgCH8+AggLIBhB0ABqJAAgGSIeRQRAQQAPCwJAIAAoAghBAEwNACACIANBA3QiG2ohHSAgKAIAIRlBACEEA0ACQCAiIARBAnQiGmooAgAiHyAAKAIQIgVKBEAgGSAaaiAFNgIADAELIBkgGmohGiAAKAIMIgUgH0oEQCAaIAU2AgAMAQsgGiAfNgIACyAEQQFqIgQgACgCCCIaSA0AC0EAIQUgGkEATA0AIAEgG2ohGgNAIB0gBUECdCIbaiIEIBogG2ooAgAgGSAbaigCAGoiGzYCAAJAIAQCfyAAKAIQIBtIBEAgGyAAKAIUawwBCyAbIAAoAgxODQEgACgCFCAbags2AgALIAVBAWoiBSAAKAIISA0ACwsgA0EBaiIDICFHDQALCyAeDwsQDgALLgEBfwJAIAEoAlgiAUUNACABKAIAQQJHDQAgACABKAIIKAAANgIEQQEhAgsgAgsL31IHAEGECAuxPWAEAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAABONWRyYWNvMjhBdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtRQAA2CsAADgEAADgBgAAX19uZXh0X3ByaW1lIG92ZXJmbG93AHZlY3RvcgBzdGQ6OmV4Y2VwdGlvbgBza2lwX2F0dHJpYnV0ZV90cmFuc2Zvcm0AYmFkX2FycmF5X25ld19sZW5ndGgAYmFzaWNfc3RyaW5nAHN0ZDo6YmFkX2FsbG9jAERSQUNPAFVzaW5nIGluY29tcGF0aWJsZSBkZWNvZGVyIGZvciB0aGUgaW5wdXQgZ2VvbWV0cnkuAEZhaWxlZCB0byBkZWNvZGUgcG9pbnQgYXR0cmlidXRlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGRlY29kZXIuAFVuc3VwcG9ydGVkIG1pbm9yIHZlcnNpb24uAFVuc3VwcG9ydGVkIG1ham9yIHZlcnNpb24uAElucHV0IGlzIG5vdCBhIG1lc2guAFVuc3VwcG9ydGVkIGdlb21ldHJ5IHR5cGUuAE5vdCBhIERyYWNvIGZpbGUuAFVuc3VwcG9ydGVkIGVuY29kaW5nIG1ldGhvZC4ARmFpbGVkIHRvIGRlY29kZSBtZXRhZGF0YS4ARmFpbGVkIHRvIGRlY29kZSBnZW9tZXRyeSBkYXRhLgBQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQAAAAAAAAC0BgAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAACwAAABgAAAAZAAAATjVkcmFjbzMwQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtRQAAAADYKwAAiAYAAOAGAABONWRyYWNvMThBdHRyaWJ1dGVUcmFuc2Zvcm1FAAAAALArAADABgAAAAAAAGwHAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAABONWRyYWNvMTdBdHRyaWJ1dGVzRGVjb2RlckUATjVkcmFjbzI2QXR0cmlidXRlc0RlY29kZXJJbnRlcmZhY2VFAAAAALArAAA8BwAA2CsAACAHAABkBwAAAAAAAMwHAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAABONWRyYWNvMjZTZXF1ZW50aWFsQXR0cmlidXRlRGVjb2RlckUAAAAAsCsAAKQHAAD/////AAAAAEQIAAAvAAAAMAAAABwAAAAxAAAAMgAAAB8AAAAgAAAAIQAAADMAAAA0AAAANQAAADYAAAA3AAAATjVkcmFjbzM3U2VxdWVudGlhbEF0dHJpYnV0ZURlY29kZXJzQ29udHJvbGxlckUA2CsAABQIAABsBwAAAAAAALgIAAA4AAAAOQAAADoAAAApAAAAKgAAACsAAAA7AAAALQAAADwAAAA9AAAAPgAAAD8AAABAAAAATjVkcmFjbzMzU2VxdWVudGlhbEludGVnZXJBdHRyaWJ1dGVEZWNvZGVyRQDYKwAAjAgAAMwHAAAAAAAARAsAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE41ZHJhY280ME1lc2hQcmVkaWN0aW9uU2NoZW1lUGFyYWxsZWxvZ3JhbURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjNQcmVkaWN0aW9uU2NoZW1lRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVFRQBONWRyYWNvMzdQcmVkaWN0aW9uU2NoZW1lVHlwZWREZWNvZGVySW50ZXJmYWNlSWlpRUUATjVkcmFjbzMyUHJlZGljdGlvblNjaGVtZURlY29kZXJJbnRlcmZhY2VFAE41ZHJhY28yNVByZWRpY3Rpb25TY2hlbWVJbnRlcmZhY2VFALArAADoCgAA2CsAAL0KAAAMCwAA2CsAAIkKAAAUCwAA2CsAADUKAAAgCwAA2CsAAJ8JAAAsCwAA2CsAAPwIAAA4CwAAAAAAADgLAABBAAAATQAAACMAAABEAAAAIwAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAACMAAAAAAAAALAsAAEEAAABOAAAAIwAAAEQAAAAjAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAAIwAAAAAAAACsDAAATwAAAFAAAABRAAAARAAAAFIAAABGAAAARwAAAEgAAABJAAAASgAAAFMAAABUAAAATjVkcmFjbzU2TWVzaFByZWRpY3Rpb25TY2hlbWVDb25zdHJhaW5lZE11bHRpUGFyYWxsZWxvZ3JhbURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAA2CsAAPgLAAA4CwAAAAAAAJgNAABVAAAAVgAAAFcAAABEAAAAWAAAAFkAAABaAAAAWwAAAEkAAABKAAAAXAAAAF0AAABONWRyYWNvNDRNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc1BvcnRhYmxlRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAADYKwAA8AwAADgLAAAAAAAAhA4AAF4AAABfAAAAYAAAAEQAAABhAAAAYgAAAGMAAABkAAAASQAAAEoAAABlAAAAZgAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAAAAANgrAADcDQAAOAsAAAAAAAAMEAAAZwAAAGgAAABpAAAAagAAAGsAAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckJhc2VJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAAALArAABXDwAA2CsAAKwOAAAEEAAAAAAAAAQQAABnAAAAbAAAACMAAABqAAAAIwAAAAAAAACYEQAAQQAAAG0AAABuAAAARAAAAG8AAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABwAAAATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQAA2CsAAAIRAAAsCwAA2CsAAGwQAACMEQAAAAAAAIwRAABBAAAAcQAAACMAAABEAAAAIwAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAACMAAAAAAAAAvBIAAHIAAABzAAAAdAAAAEQAAAB1AAAARgAAAEcAAABIAAAASQAAAEoAAAB2AAAAdwAAAE41ZHJhY281Nk1lc2hQcmVkaWN0aW9uU2NoZW1lQ29uc3RyYWluZWRNdWx0aVBhcmFsbGVsb2dyYW1EZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQAAANgrAAAUEgAAjBEAAAAAAACcEwAAeAAAAHkAAAB6AAAARAAAAHsAAAB8AAAAfQAAAH4AAABJAAAASgAAAH8AAACAAAAATjVkcmFjbzQ0TWVzaFByZWRpY3Rpb25TY2hlbWVUZXhDb29yZHNQb3J0YWJsZURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAA2CsAAAATAACMEQAAAAAAAHgUAACBAAAAggAAAIMAAABEAAAAhAAAAIUAAACGAAAAhwAAAEkAAABKAAAAiAAAAIkAAABONWRyYWNvNDJNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbERlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFANgrAADgEwAAjBEAAAAAAADkFQAAigAAAIsAAACMAAAAjQAAAI4AAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAsCsAAD4VAADYKwAAoBQAANwVAAAAAAAA3BUAAIoAAACPAAAAIwAAAI0AAAAjAAAAAAAAAKAWAABBAAAAkAAAAJEAAABEAAAAkgAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAJMAAABONWRyYWNvMjhQcmVkaWN0aW9uU2NoZW1lRGVsdGFEZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRUVFAAAAANgrAABEFgAALAsAAAAAAAAUFwAAlAAAAJUAAACWAAAAKQAAACoAAACXAAAAOwAAAC0AAAA8AAAAmAAAAJkAAACaAAAAmwAAAE41ZHJhY28zMlNlcXVlbnRpYWxOb3JtYWxBdHRyaWJ1dGVEZWNvZGVyRQAA2CsAAOgWAAC4CAAAAAAAAEgZAACcAAAAnQAAAJ4AAACfAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAAKcAAABONWRyYWNvNDJNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbERlY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjNQcmVkaWN0aW9uU2NoZW1lRGVjb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVFRQAA2CsAAMMYAAAgCwAA2CsAABUYAAAwGQAA2CsAAFgXAAA8GQAAAAAAAAAbAACoAAAAqQAAAKoAAACrAAAArAAAAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQXJlYUlpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAAAAsCsAADMaAADYKwAAcBkAAPgaAAAAAAAApBwAAK0AAACuAAAArwAAAJ8AAACwAAAAsQAAALIAAACzAAAApAAAAKUAAAC0AAAAtQAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQAAAADYKwAA9BsAADAZAADYKwAARBsAAJgcAAAAAAAAQB4AALYAAAC3AAAAuAAAALkAAAC6AAAATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckJhc2VJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFALArAACCHQAA2CsAAMwcAAA4HgAAAAAAAPgeAAC7AAAAvAAAAL0AAACfAAAAvgAAAL8AAADAAAAAwQAAAKQAAAClAAAAwgAAAMMAAABONWRyYWNvMjhQcmVkaWN0aW9uU2NoZW1lRGVsdGFEZWNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRUVFAAAAANgrAACEHgAAMBkAAAAAAAB8HwAAxAAAAMUAAADGAAAAKQAAACoAAADHAAAAOwAAAC0AAAA8AAAAyAAAAD4AAAA/AAAAyQAAAMoAAADLAAAATjVkcmFjbzM4U2VxdWVudGlhbFF1YW50aXphdGlvbkF0dHJpYnV0ZURlY29kZXJFAAAAANgrAABIHwAAuAgAAAAAAADcHwAAzAAAAM0AAADOAAAAzwAAACMAAADQAAAA0QAAANIAAADTAAAA1AAAANUAAADWAAAAIwAAAE41ZHJhY28xMU1lc2hEZWNvZGVyRQAAANgrAADEHwAAnCcAAAAAAABIIAAA1wAAANgAAADOAAAA2QAAANoAAADQAAAA0QAAANIAAADbAAAA3AAAAN0AAADeAAAA3wAAAE41ZHJhY28yMk1lc2hFZGdlYnJlYWtlckRlY29kZXJFAAAAANgrAAAkIAAA3B8AAAAAAAA8IQAA4AAAAOEAAADiAAAA4wAAAOQAAADlAAAA5gAAAOcAAADoAAAA6QAAAP////8AAAAAnCEAAOoAAADrAAAA7AAAAO0AAADuAAAA7wAAAPAAAADxAAAA8gAAAPMAAABONWRyYWNvMjZNZXNoRWRnZWJyZWFrZXJEZWNvZGVySW1wbElOU18zMU1lc2hFZGdlYnJlYWtlclRyYXZlcnNhbERlY29kZXJFRUUATjVkcmFjbzM1TWVzaEVkZ2VicmVha2VyRGVjb2RlckltcGxJbnRlcmZhY2VFAAAAsCsAAAQhAADYKwAAuCAAADQhAABONWRyYWNvMjZNZXNoRWRnZWJyZWFrZXJEZWNvZGVySW1wbElOU18zOE1lc2hFZGdlYnJlYWtlclRyYXZlcnNhbFZhbGVuY2VEZWNvZGVyRUVFAADYKwAASCEAADQhAAAAAAAAmCIAAPQAAAD1AAAA9gAAAE41ZHJhY28xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQBONWRyYWNvMTNUcmF2ZXJzZXJCYXNlSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUAsCsAACkiAADYKwAAvCEAAJAiAAAAAAAAkCIAAPcAAAD4AAAA9gBBxMUAC7YHAQAAAAMAAAAFAAAABwAAAAAAAACYIwAA+QAAAPoAAAD7AAAA/AAAAE41ZHJhY28yMk1lc2hUcmF2ZXJzYWxTZXF1ZW5jZXJJTlNfMjhNYXhQcmVkaWN0aW9uRGVncmVlVHJhdmVyc2VySU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzJfRUVFRUVFAE41ZHJhY28xNVBvaW50c1NlcXVlbmNlckUAAAAAsCsAAHMjAADYKwAA7CIAAJAjAAD/////AAAAAIgkAAD9AAAA/gAAAP8AAABONWRyYWNvMjhNYXhQcmVkaWN0aW9uRGVncmVlVHJhdmVyc2VySU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQBONWRyYWNvMTNUcmF2ZXJzZXJCYXNlSU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQAAsCsAACUkAADYKwAAvCMAAIAkAAAAAAAAgCQAAAABAAABAQAA/wAAAAAAAABAJQAAAgEAAAMBAAAEAQAABQEAAE41ZHJhY28yMk1lc2hUcmF2ZXJzYWxTZXF1ZW5jZXJJTlNfMTlEZXB0aEZpcnN0VHJhdmVyc2VySU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzJfRUVFRUVFAAAA2CsAAMAkAACQIwAAAAAAAMAlAAAGAQAABwEAAP8AAABONWRyYWNvMTlEZXB0aEZpcnN0VHJhdmVyc2VySU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQDYKwAAYCUAAIAkAAAAAAAAcCYAAAgBAAAJAQAACgEAAAsBAABONWRyYWNvMjJNZXNoVHJhdmVyc2FsU2VxdWVuY2VySU5TXzE5RGVwdGhGaXJzdFRyYXZlcnNlcklOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVOU18zNk1lc2hBdHRyaWJ1dGVJbmRpY2VzRW5jb2RpbmdPYnNlcnZlcklTMl9FRUVFRUUAANgrAADkJQAAkCMAQYTNAAvNAdwmAADMAAAADAEAAM4AAADPAAAADQEAANAAAADRAAAA0gAAANMAAADUAAAA1QAAANYAAAAOAQAATjVkcmFjbzIxTWVzaFNlcXVlbnRpYWxEZWNvZGVyRQDYKwAAvCYAANwfAAAAAAAAHCcAAA8BAAAQAQAAEQEAABIBAABONWRyYWNvMTVMaW5lYXJT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"; +var draco_wasm_wrapper_default = "dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGgpe3ZhciBuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG48aC5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6aFtuKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oaCl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChoKX19OyRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGgpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmhbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwoaCk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGgpfTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTsKJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihoKXtoPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsaCwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIG49MDtuPGgubGVuZ3RoOysrbil7dmFyIGs9aFtuXTtpZihrJiZrLk1hdGg9PU1hdGgpcmV0dXJuIGt9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOwokanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihoLG4sayl7aWYoaD09QXJyYXkucHJvdG90eXBlfHxoPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBoO2hbbl09ay52YWx1ZTtyZXR1cm4gaH07JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTskanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjsKdmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGgsbil7dmFyIGs9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbbl07aWYobnVsbD09aylyZXR1cm4gaFtuXTtrPWhba107cmV0dXJuIHZvaWQgMCE9PWs/azpoW25dfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGgsbixrLHApe24mJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChoLG4sayxwKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChoLG4sayxwKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihoLG4sayxwKXtrPSRqc2NvbXAuZ2xvYmFsO2g9aC5zcGxpdCgiLiIpO2ZvcihwPTA7cDxoLmxlbmd0aC0xO3ArKyl7dmFyIGw9aFtwXTtpZighKGwgaW4gaykpcmV0dXJuO2s9a1tsXX1oPWhbaC5sZW5ndGgtMV07cD1rW2hdO249bihwKTtuIT1wJiZudWxsIT1uJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGssaCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm59KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihoLG4sayxwKXt2YXIgbD1oLnNwbGl0KCIuIik7aD0xPT09bC5sZW5ndGg7cD1sWzBdO3A9IWgmJnAgaW4gJGpzY29tcC5wb2x5ZmlsbHM/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciB5PTA7eTxsLmxlbmd0aC0xO3krKyl7dmFyIGY9bFt5XTtpZighKGYgaW4gcCkpcmV0dXJuO3A9cFtmXX1sPWxbbC5sZW5ndGgtMV07az0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09az9wW2xdOm51bGw7bj1uKGspO251bGwhPW4mJihoPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsbCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm59KTpuIT09ayYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2xdJiYoaz0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbbF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2wobCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgraysiJCIrbCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShwLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2xdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bn0pKSl9OwokanNjb21wLnBvbHlmaWxsKCJQcm9taXNlIixmdW5jdGlvbihoKXtmdW5jdGlvbiBuKCl7dGhpcy5iYXRjaF89bnVsbH1mdW5jdGlvbiBrKGYpe3JldHVybiBmIGluc3RhbmNlb2YgbD9mOm5ldyBsKGZ1bmN0aW9uKHEsdSl7cShmKX0pfWlmKGgmJighKCRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRXx8JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTiYmInVuZGVmaW5lZCI9PT10eXBlb2YgJGpzY29tcC5nbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KXx8ISRqc2NvbXAuZ2xvYmFsLlByb21pc2V8fC0xPT09JGpzY29tcC5nbG9iYWwuUHJvbWlzZS50b1N0cmluZygpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGg7bi5wcm90b3R5cGUuYXN5bmNFeGVjdXRlPWZ1bmN0aW9uKGYpe2lmKG51bGw9PXRoaXMuYmF0Y2hfKXt0aGlzLmJhdGNoXz1bXTt2YXIgcT10aGlzO3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXtxLmV4ZWN1dGVCYXRjaF8oKX0pfXRoaXMuYmF0Y2hfLnB1c2goZil9Owp2YXIgcD0kanNjb21wLmdsb2JhbC5zZXRUaW1lb3V0O24ucHJvdG90eXBlLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uPWZ1bmN0aW9uKGYpe3AoZiwwKX07bi5wcm90b3R5cGUuZXhlY3V0ZUJhdGNoXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5iYXRjaF8mJnRoaXMuYmF0Y2hfLmxlbmd0aDspe3ZhciBmPXRoaXMuYmF0Y2hfO3RoaXMuYmF0Y2hfPVtdO2Zvcih2YXIgcT0wO3E8Zi5sZW5ndGg7KytxKXt2YXIgdT1mW3FdO2ZbcV09bnVsbDt0cnl7dSgpfWNhdGNoKEEpe3RoaXMuYXN5bmNUaHJvd18oQSl9fX10aGlzLmJhdGNoXz1udWxsfTtuLnByb3RvdHlwZS5hc3luY1Rocm93Xz1mdW5jdGlvbihmKXt0aGlzLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uKGZ1bmN0aW9uKCl7dGhyb3cgZjt9KX07dmFyIGw9ZnVuY3Rpb24oZil7dGhpcy5zdGF0ZV89MDt0aGlzLnJlc3VsdF89dm9pZCAwO3RoaXMub25TZXR0bGVkQ2FsbGJhY2tzXz1bXTt0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF89ITE7dmFyIHE9dGhpcy5jcmVhdGVSZXNvbHZlQW5kUmVqZWN0XygpOwp0cnl7ZihxLnJlc29sdmUscS5yZWplY3QpfWNhdGNoKHUpe3EucmVqZWN0KHUpfX07bC5wcm90b3R5cGUuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKEEpe3JldHVybiBmdW5jdGlvbihGKXt1fHwodT0hMCxBLmNhbGwocSxGKSl9fXZhciBxPXRoaXMsdT0hMTtyZXR1cm57cmVzb2x2ZTpmKHRoaXMucmVzb2x2ZVRvXykscmVqZWN0OmYodGhpcy5yZWplY3RfKX19O2wucHJvdG90eXBlLnJlc29sdmVUb189ZnVuY3Rpb24oZil7aWYoZj09PXRoaXMpdGhpcy5yZWplY3RfKG5ldyBUeXBlRXJyb3IoIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk7ZWxzZSBpZihmIGluc3RhbmNlb2YgbCl0aGlzLnNldHRsZVNhbWVBc1Byb21pc2VfKGYpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGYpe2Nhc2UgIm9iamVjdCI6dmFyIHE9bnVsbCE9ZjticmVhayBhO2Nhc2UgImZ1bmN0aW9uIjpxPSEwO2JyZWFrIGE7ZGVmYXVsdDpxPSExfXE/dGhpcy5yZXNvbHZlVG9Ob25Qcm9taXNlT2JqXyhmKToKdGhpcy5mdWxmaWxsXyhmKX19O2wucHJvdG90eXBlLnJlc29sdmVUb05vblByb21pc2VPYmpfPWZ1bmN0aW9uKGYpe3ZhciBxPXZvaWQgMDt0cnl7cT1mLnRoZW59Y2F0Y2godSl7dGhpcy5yZWplY3RfKHUpO3JldHVybn0iZnVuY3Rpb24iPT10eXBlb2YgcT90aGlzLnNldHRsZVNhbWVBc1RoZW5hYmxlXyhxLGYpOnRoaXMuZnVsZmlsbF8oZil9O2wucHJvdG90eXBlLnJlamVjdF89ZnVuY3Rpb24oZil7dGhpcy5zZXR0bGVfKDIsZil9O2wucHJvdG90eXBlLmZ1bGZpbGxfPWZ1bmN0aW9uKGYpe3RoaXMuc2V0dGxlXygxLGYpfTtsLnByb3RvdHlwZS5zZXR0bGVfPWZ1bmN0aW9uKGYscSl7aWYoMCE9dGhpcy5zdGF0ZV8pdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIitmKyIsICIrcSsiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuc3RhdGVfKTt0aGlzLnN0YXRlXz1mO3RoaXMucmVzdWx0Xz1xOzI9PT10aGlzLnN0YXRlXyYmdGhpcy5zY2hlZHVsZVVuaGFuZGxlZFJlamVjdGlvbkNoZWNrXygpOwp0aGlzLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfKCl9O2wucHJvdG90eXBlLnNjaGVkdWxlVW5oYW5kbGVkUmVqZWN0aW9uQ2hlY2tfPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcztwKGZ1bmN0aW9uKCl7aWYoZi5ub3RpZnlVbmhhbmRsZWRSZWplY3Rpb25fKCkpe3ZhciBxPSRqc2NvbXAuZ2xvYmFsLmNvbnNvbGU7InVuZGVmaW5lZCIhPT10eXBlb2YgcSYmcS5lcnJvcihmLnJlc3VsdF8pfX0sMSl9O2wucHJvdG90eXBlLm5vdGlmeVVuaGFuZGxlZFJlamVjdGlvbl89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF8pcmV0dXJuITE7dmFyIGY9JGpzY29tcC5nbG9iYWwuQ3VzdG9tRXZlbnQscT0kanNjb21wLmdsb2JhbC5FdmVudCx1PSRqc2NvbXAuZ2xvYmFsLmRpc3BhdGNoRXZlbnQ7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgdSlyZXR1cm4hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGY/Zj1uZXcgZigidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOgoiZnVuY3Rpb24iPT09dHlwZW9mIHE/Zj1uZXcgcSgidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOihmPSRqc2NvbXAuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpLGYuaW5pdEN1c3RvbUV2ZW50KCJ1bmhhbmRsZWRyZWplY3Rpb24iLCExLCEwLGYpKTtmLnByb21pc2U9dGhpcztmLnJlYXNvbj10aGlzLnJlc3VsdF87cmV0dXJuIHUoZil9O2wucHJvdG90eXBlLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5vblNldHRsZWRDYWxsYmFja3NfKXtmb3IodmFyIGY9MDtmPHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5sZW5ndGg7KytmKXkuYXN5bmNFeGVjdXRlKHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzX1tmXSk7dGhpcy5vblNldHRsZWRDYWxsYmFja3NfPW51bGx9fTt2YXIgeT1uZXcgbjtsLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNQcm9taXNlXz1mdW5jdGlvbihmKXt2YXIgcT10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7CmYuY2FsbFdoZW5TZXR0bGVkXyhxLnJlc29sdmUscS5yZWplY3QpfTtsLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNUaGVuYWJsZV89ZnVuY3Rpb24oZixxKXt2YXIgdT10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7dHJ5e2YuY2FsbChxLHUucmVzb2x2ZSx1LnJlamVjdCl9Y2F0Y2goQSl7dS5yZWplY3QoQSl9fTtsLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGYscSl7ZnVuY3Rpb24gdSh3LEIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB3P2Z1bmN0aW9uKFIpe3RyeXtBKHcoUikpfWNhdGNoKFope0YoWil9fTpCfXZhciBBLEYsdj1uZXcgbChmdW5jdGlvbih3LEIpe0E9dztGPUJ9KTt0aGlzLmNhbGxXaGVuU2V0dGxlZF8odShmLEEpLHUocSxGKSk7cmV0dXJuIHZ9O2wucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGYpfTtsLnByb3RvdHlwZS5jYWxsV2hlblNldHRsZWRfPWZ1bmN0aW9uKGYscSl7ZnVuY3Rpb24gdSgpe3N3aXRjaChBLnN0YXRlXyl7Y2FzZSAxOmYoQS5yZXN1bHRfKTsKYnJlYWs7Y2FzZSAyOnEoQS5yZXN1bHRfKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJVbmV4cGVjdGVkIHN0YXRlOiAiK0Euc3RhdGVfKTt9fXZhciBBPXRoaXM7bnVsbD09dGhpcy5vblNldHRsZWRDYWxsYmFja3NfP3kuYXN5bmNFeGVjdXRlKHUpOnRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5wdXNoKHUpO3RoaXMuaXNSZWplY3Rpb25IYW5kbGVkXz0hMH07bC5yZXNvbHZlPWs7bC5yZWplY3Q9ZnVuY3Rpb24oZil7cmV0dXJuIG5ldyBsKGZ1bmN0aW9uKHEsdSl7dShmKX0pfTtsLnJhY2U9ZnVuY3Rpb24oZil7cmV0dXJuIG5ldyBsKGZ1bmN0aW9uKHEsdSl7Zm9yKHZhciBBPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGYpLEY9QS5uZXh0KCk7IUYuZG9uZTtGPUEubmV4dCgpKWsoRi52YWx1ZSkuY2FsbFdoZW5TZXR0bGVkXyhxLHUpfSl9O2wuYWxsPWZ1bmN0aW9uKGYpe3ZhciBxPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGYpLHU9cS5uZXh0KCk7cmV0dXJuIHUuZG9uZT9rKFtdKTpuZXcgbChmdW5jdGlvbihBLApGKXtmdW5jdGlvbiB2KFIpe3JldHVybiBmdW5jdGlvbihaKXt3W1JdPVo7Qi0tOzA9PUImJkEodyl9fXZhciB3PVtdLEI9MDtkbyB3LnB1c2godm9pZCAwKSxCKyssayh1LnZhbHVlKS5jYWxsV2hlblNldHRsZWRfKHYody5sZW5ndGgtMSksRiksdT1xLm5leHQoKTt3aGlsZSghdS5kb25lKX0pfTtyZXR1cm4gbH0sImVzNiIsImVzMyIpOyRqc2NvbXAub3ducz1mdW5jdGlvbihoLG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaCxuKX07JGpzY29tcC5hc3NpZ249JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGgsbil7Zm9yKHZhciBrPTE7azxhcmd1bWVudHMubGVuZ3RoO2srKyl7dmFyIHA9YXJndW1lbnRzW2tdO2lmKHApZm9yKHZhciBsIGluIHApJGpzY29tcC5vd25zKHAsbCkmJihoW2xdPXBbbF0pfXJldHVybiBofTsKJGpzY29tcC5wb2x5ZmlsbCgiT2JqZWN0LmFzc2lnbiIsZnVuY3Rpb24oaCl7cmV0dXJuIGh8fCRqc2NvbXAuYXNzaWdufSwiZXM2IiwiZXMzIik7JGpzY29tcC5jaGVja1N0cmluZ0FyZ3M9ZnVuY3Rpb24oaCxuLGspe2lmKG51bGw9PWgpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlICd0aGlzJyB2YWx1ZSBmb3IgU3RyaW5nLnByb3RvdHlwZS4iK2srIiBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO2lmKG4gaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS4iK2srIiBtdXN0IG5vdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiIpO3JldHVybiBoKyIifTsKJGpzY29tcC5wb2x5ZmlsbCgiU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIixmdW5jdGlvbihoKXtyZXR1cm4gaD9oOmZ1bmN0aW9uKG4sayl7dmFyIHA9JGpzY29tcC5jaGVja1N0cmluZ0FyZ3ModGhpcyxuLCJzdGFydHNXaXRoIik7bis9IiI7dmFyIGw9cC5sZW5ndGgseT1uLmxlbmd0aDtrPU1hdGgubWF4KDAsTWF0aC5taW4oa3wwLHAubGVuZ3RoKSk7Zm9yKHZhciBmPTA7Zjx5JiZrPGw7KWlmKHBbaysrXSE9bltmKytdKXJldHVybiExO3JldHVybiBmPj15fX0sImVzNiIsImVzMyIpOwokanNjb21wLnBvbHlmaWxsKCJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsZnVuY3Rpb24oaCl7ZnVuY3Rpb24gbihrKXtrPU51bWJlcihrKTtyZXR1cm4gSW5maW5pdHk9PT1rfHwtSW5maW5pdHk9PT1rP2s6a3wwfXJldHVybiBoP2g6ZnVuY3Rpb24oayxwLGwpe3ZhciB5PXRoaXMubGVuZ3RoO2s9bihrKTtwPW4ocCk7bD12b2lkIDA9PT1sP3k6bihsKTtrPTA+az9NYXRoLm1heCh5K2ssMCk6TWF0aC5taW4oayx5KTtwPTA+cD9NYXRoLm1heCh5K3AsMCk6TWF0aC5taW4ocCx5KTtsPTA+bD9NYXRoLm1heCh5K2wsMCk6TWF0aC5taW4obCx5KTtpZihrPHApZm9yKDtwPGw7KXAgaW4gdGhpcz90aGlzW2srK109dGhpc1twKytdOihkZWxldGUgdGhpc1trKytdLHArKyk7ZWxzZSBmb3IobD1NYXRoLm1pbihsLHkrcC1rKSxrKz1sLXA7bD5wOyktLWwgaW4gdGhpcz90aGlzWy0ta109dGhpc1tsXTpkZWxldGUgdGhpc1stLWtdO3JldHVybiB0aGlzfX0sImVzNiIsImVzMyIpOwokanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluPWZ1bmN0aW9uKGgpe3JldHVybiBoP2g6QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW59OyRqc2NvbXAucG9seWZpbGwoIkludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiVWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIkludDE2QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOwokanNjb21wLnBvbHlmaWxsKCJVaW50MTZBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiSW50MzJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiVWludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIkZsb2F0MzJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiRmxvYXQ2NEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIiwkanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTsKdmFyIERyYWNvRGVjb2Rlck1vZHVsZT1mdW5jdGlvbigpe3ZhciBoPSJ1bmRlZmluZWQiIT09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5jdXJyZW50U2NyaXB0P2RvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjOnZvaWQgMDsidW5kZWZpbmVkIiE9PXR5cGVvZiBfX2ZpbGVuYW1lJiYoaD1ofHxfX2ZpbGVuYW1lKTtyZXR1cm4gZnVuY3Rpb24obil7ZnVuY3Rpb24gayhlKXtyZXR1cm4gYS5sb2NhdGVGaWxlP2EubG9jYXRlRmlsZShlLFUpOlUrZX1mdW5jdGlvbiBwKGUsYil7aWYoZSl7dmFyIGM9aWE7dmFyIGQ9ZStiO2ZvcihiPWU7Y1tiXSYmIShiPj1kKTspKytiO2lmKDE2PGItZSYmYy5idWZmZXImJnJhKWM9cmEuZGVjb2RlKGMuc3ViYXJyYXkoZSxiKSk7ZWxzZXtmb3IoZD0iIjtlPGI7KXt2YXIgZz1jW2UrK107aWYoZyYxMjgpe3ZhciB0PWNbZSsrXSY2MztpZigxOTI9PShnJjIyNCkpZCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoZyYzMSk8PDZ8dCk7ZWxzZXt2YXIgYWE9Y1tlKytdJgo2MztnPTIyND09KGcmMjQwKT8oZyYxNSk8PDEyfHQ8PDZ8YWE6KGcmNyk8PDE4fHQ8PDEyfGFhPDw2fGNbZSsrXSY2Mzs2NTUzNj5nP2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk6KGctPTY1NTM2LGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Zz4+MTAsNTYzMjB8ZyYxMDIzKSl9fWVsc2UgZCs9U3RyaW5nLmZyb21DaGFyQ29kZShnKX1jPWR9fWVsc2UgYz0iIjtyZXR1cm4gY31mdW5jdGlvbiBsKCl7dmFyIGU9amEuYnVmZmVyO2EuSEVBUDg9Vz1uZXcgSW50OEFycmF5KGUpO2EuSEVBUDE2PW5ldyBJbnQxNkFycmF5KGUpO2EuSEVBUDMyPWNhPW5ldyBJbnQzMkFycmF5KGUpO2EuSEVBUFU4PWlhPW5ldyBVaW50OEFycmF5KGUpO2EuSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoZSk7YS5IRUFQVTMyPVk9bmV3IFVpbnQzMkFycmF5KGUpO2EuSEVBUEYzMj1uZXcgRmxvYXQzMkFycmF5KGUpO2EuSEVBUEY2ND1uZXcgRmxvYXQ2NEFycmF5KGUpfWZ1bmN0aW9uIHkoZSl7aWYoYS5vbkFib3J0KWEub25BYm9ydChlKTsKZT0iQWJvcnRlZCgiK2UrIikiO2RhKGUpO3NhPSEwO2U9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKyIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIik7a2EoZSk7dGhyb3cgZTt9ZnVuY3Rpb24gZihlKXt0cnl7aWYoZT09UCYmZWEpcmV0dXJuIG5ldyBVaW50OEFycmF5KGVhKTtpZihtYSlyZXR1cm4gbWEoZSk7dGhyb3ciYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQiO31jYXRjaChiKXt5KGIpfX1mdW5jdGlvbiBxKCl7aWYoIWVhJiYodGF8fGZhKSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGZldGNoJiYhUC5zdGFydHNXaXRoKCJmaWxlOi8vIikpcmV0dXJuIGZldGNoKFAse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKGZ1bmN0aW9uKGUpe2lmKCFlLm9rKXRocm93ImZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJyIrUCsiJyI7cmV0dXJuIGUuYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIGYoUCl9KTsKaWYobmEpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsYil7bmEoUCxmdW5jdGlvbihjKXtlKG5ldyBVaW50OEFycmF5KGMpKX0sYil9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBmKFApfSl9ZnVuY3Rpb24gdShlKXtmb3IoOzA8ZS5sZW5ndGg7KWUuc2hpZnQoKShhKX1mdW5jdGlvbiBBKGUpe3RoaXMuZXhjUHRyPWU7dGhpcy5wdHI9ZS0yNDt0aGlzLnNldF90eXBlPWZ1bmN0aW9uKGIpe1lbdGhpcy5wdHIrND4+Ml09Yn07dGhpcy5nZXRfdHlwZT1mdW5jdGlvbigpe3JldHVybiBZW3RoaXMucHRyKzQ+PjJdfTt0aGlzLnNldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKGIpe1lbdGhpcy5wdHIrOD4+Ml09Yn07dGhpcy5nZXRfZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBZW3RoaXMucHRyKzg+PjJdfTt0aGlzLnNldF9yZWZjb3VudD1mdW5jdGlvbihiKXtjYVt0aGlzLnB0cj4+Ml09Yn07dGhpcy5zZXRfY2F1Z2h0PWZ1bmN0aW9uKGIpe1dbdGhpcy5wdHIrCjEyPj4wXT1iPzE6MH07dGhpcy5nZXRfY2F1Z2h0PWZ1bmN0aW9uKCl7cmV0dXJuIDAhPVdbdGhpcy5wdHIrMTI+PjBdfTt0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihiKXtXW3RoaXMucHRyKzEzPj4wXT1iPzE6MH07dGhpcy5nZXRfcmV0aHJvd249ZnVuY3Rpb24oKXtyZXR1cm4gMCE9V1t0aGlzLnB0cisxMz4+MF19O3RoaXMuaW5pdD1mdW5jdGlvbihiLGMpe3RoaXMuc2V0X2FkanVzdGVkX3B0cigwKTt0aGlzLnNldF90eXBlKGIpO3RoaXMuc2V0X2Rlc3RydWN0b3IoYyk7dGhpcy5zZXRfcmVmY291bnQoMCk7dGhpcy5zZXRfY2F1Z2h0KCExKTt0aGlzLnNldF9yZXRocm93bighMSl9O3RoaXMuYWRkX3JlZj1mdW5jdGlvbigpe2NhW3RoaXMucHRyPj4yXSs9MX07dGhpcy5yZWxlYXNlX3JlZj1mdW5jdGlvbigpe3ZhciBiPWNhW3RoaXMucHRyPj4yXTtjYVt0aGlzLnB0cj4+Ml09Yi0xO3JldHVybiAxPT09Yn07dGhpcy5zZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKGIpe1lbdGhpcy5wdHIrCjE2Pj4yXT1ifTt0aGlzLmdldF9hZGp1c3RlZF9wdHI9ZnVuY3Rpb24oKXtyZXR1cm4gWVt0aGlzLnB0cisxNj4+Ml19O3RoaXMuZ2V0X2V4Y2VwdGlvbl9wdHI9ZnVuY3Rpb24oKXtpZih1YSh0aGlzLmdldF90eXBlKCkpKXJldHVybiBZW3RoaXMuZXhjUHRyPj4yXTt2YXIgYj10aGlzLmdldF9hZGp1c3RlZF9wdHIoKTtyZXR1cm4gMCE9PWI/Yjp0aGlzLmV4Y1B0cn19ZnVuY3Rpb24gRigpe2Z1bmN0aW9uIGUoKXtpZighbGEmJihsYT0hMCxhLmNhbGxlZFJ1bj0hMCwhc2EpKXt2YT0hMDt1KG9hKTt3YShhKTtpZihhLm9uUnVudGltZUluaXRpYWxpemVkKWEub25SdW50aW1lSW5pdGlhbGl6ZWQoKTtpZihhLnBvc3RSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2EucG9zdFJ1bi5sZW5ndGg7KXhhLnVuc2hpZnQoYS5wb3N0UnVuLnNoaWZ0KCkpO3UoeGEpfX1pZighKDA8YmEpKXtpZihhLnByZVJ1bilmb3IoImZ1bmN0aW9uIj09CnR5cGVvZiBhLnByZVJ1biYmKGEucHJlUnVuPVthLnByZVJ1bl0pO2EucHJlUnVuLmxlbmd0aDspeWEudW5zaGlmdChhLnByZVJ1bi5zaGlmdCgpKTt1KHlhKTswPGJhfHwoYS5zZXRTdGF0dXM/KGEuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnNldFN0YXR1cygiIil9LDEpO2UoKX0sMSkpOmUoKSl9fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gdyhlKXtyZXR1cm4oZXx8dikuX19jYWNoZV9ffWZ1bmN0aW9uIEIoZSxiKXt2YXIgYz13KGIpLGQ9Y1tlXTtpZihkKXJldHVybiBkO2Q9T2JqZWN0LmNyZWF0ZSgoYnx8dikucHJvdG90eXBlKTtkLnB0cj1lO3JldHVybiBjW2VdPWR9ZnVuY3Rpb24gUihlKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXtmb3IodmFyIGI9MCxjPTA7YzxlLmxlbmd0aDsrK2Mpe3ZhciBkPWUuY2hhckNvZGVBdChjKTsxMjc+PWQ/YisrOjIwNDc+PWQ/Yis9Mjo1NTI5Njw9ZCYmNTczNDM+PQpkPyhiKz00LCsrYyk6Yis9M31iPUFycmF5KGIrMSk7Yz0wO2Q9Yi5sZW5ndGg7aWYoMDxkKXtkPWMrZC0xO2Zvcih2YXIgZz0wO2c8ZS5sZW5ndGg7KytnKXt2YXIgdD1lLmNoYXJDb2RlQXQoZyk7aWYoNTUyOTY8PXQmJjU3MzQzPj10KXt2YXIgYWE9ZS5jaGFyQ29kZUF0KCsrZyk7dD02NTUzNisoKHQmMTAyMyk8PDEwKXxhYSYxMDIzfWlmKDEyNz49dCl7aWYoYz49ZClicmVhaztiW2MrK109dH1lbHNle2lmKDIwNDc+PXQpe2lmKGMrMT49ZClicmVhaztiW2MrK109MTkyfHQ+PjZ9ZWxzZXtpZig2NTUzNT49dCl7aWYoYysyPj1kKWJyZWFrO2JbYysrXT0yMjR8dD4+MTJ9ZWxzZXtpZihjKzM+PWQpYnJlYWs7YltjKytdPTI0MHx0Pj4xODtiW2MrK109MTI4fHQ+PjEyJjYzfWJbYysrXT0xMjh8dD4+NiY2M31iW2MrK109MTI4fHQmNjN9fWJbY109MH1lPXIuYWxsb2MoYixXKTtyLmNvcHkoYixXLGUpO3JldHVybiBlfXJldHVybiBlfWZ1bmN0aW9uIFooZSl7aWYoIm9iamVjdCI9PT0KdHlwZW9mIGUpe3ZhciBiPXIuYWxsb2MoZSxXKTtyLmNvcHkoZSxXLGIpO3JldHVybiBifXJldHVybiBlfWZ1bmN0aW9uIFgoKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgVm9pZFB0ciwgbm8gY29uc3RydWN0b3IgaW4gSURMIjt9ZnVuY3Rpb24gUygpe3RoaXMucHRyPXphKCk7dyhTKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBRKCl7dGhpcy5wdHI9QWEoKTt3KFEpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFYoKXt0aGlzLnB0cj1CYSgpO3coVilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24geCgpe3RoaXMucHRyPUNhKCk7dyh4KVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBEKCl7dGhpcy5wdHI9RGEoKTt3KEQpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEcoKXt0aGlzLnB0cj1FYSgpO3coRylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gSCgpe3RoaXMucHRyPUZhKCk7dyhIKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBFKCl7dGhpcy5wdHI9R2EoKTt3KEUpW3RoaXMucHRyXT0KdGhpc31mdW5jdGlvbiBUKCl7dGhpcy5wdHI9SGEoKTt3KFQpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEMoKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgU3RhdHVzLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiO31mdW5jdGlvbiBJKCl7dGhpcy5wdHI9SWEoKTt3KEkpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEooKXt0aGlzLnB0cj1KYSgpO3coSilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gSygpe3RoaXMucHRyPUthKCk7dyhLKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBMKCl7dGhpcy5wdHI9TGEoKTt3KEwpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIE0oKXt0aGlzLnB0cj1NYSgpO3coTSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gTigpe3RoaXMucHRyPU5hKCk7dyhOKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBPKCl7dGhpcy5wdHI9T2EoKTt3KE8pW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIHooKXt0aGlzLnB0cj1QYSgpO3coeilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gbSgpe3RoaXMucHRyPQpRYSgpO3cobSlbdGhpcy5wdHJdPXRoaXN9bj12b2lkIDA9PT1uP3t9Om47dmFyIGE9InVuZGVmaW5lZCIhPXR5cGVvZiBuP246e30sd2Esa2E7YS5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihlLGIpe3dhPWU7a2E9Yn0pO3ZhciBSYT0hMSxTYT0hMTthLm9uUnVudGltZUluaXRpYWxpemVkPWZ1bmN0aW9uKCl7UmE9ITA7aWYoU2EmJiJmdW5jdGlvbiI9PT10eXBlb2YgYS5vbk1vZHVsZUxvYWRlZClhLm9uTW9kdWxlTG9hZGVkKGEpfTthLm9uTW9kdWxlUGFyc2VkPWZ1bmN0aW9uKCl7U2E9ITA7aWYoUmEmJiJmdW5jdGlvbiI9PT10eXBlb2YgYS5vbk1vZHVsZUxvYWRlZClhLm9uTW9kdWxlTG9hZGVkKGEpfTthLmlzVmVyc2lvblN1cHBvcnRlZD1mdW5jdGlvbihlKXtpZigic3RyaW5nIiE9PXR5cGVvZiBlKXJldHVybiExO2U9ZS5zcGxpdCgiLiIpO3JldHVybiAyPmUubGVuZ3RofHwzPGUubGVuZ3RoPyExOjE9PWVbMF0mJjA8PWVbMV0mJjU+PWVbMV0/ITA6MCE9ZVswXXx8MTA8CmVbMV0/ITE6ITB9O3ZhciBUYT1PYmplY3QuYXNzaWduKHt9LGEpLHRhPSJvYmplY3QiPT10eXBlb2Ygd2luZG93LGZhPSJmdW5jdGlvbiI9PXR5cGVvZiBpbXBvcnRTY3JpcHRzLFVhPSJvYmplY3QiPT10eXBlb2YgcHJvY2VzcyYmIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzLnZlcnNpb25zJiYic3RyaW5nIj09dHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZSxVPSIiO2lmKFVhKXt2YXIgVmE9cmVxdWlyZSgiZnMiKSxwYT1yZXF1aXJlKCJwYXRoIik7VT1mYT9wYS5kaXJuYW1lKFUpKyIvIjpfX2Rpcm5hbWUrIi8iO3ZhciBXYT1mdW5jdGlvbihlLGIpe2U9ZS5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChlKTpwYS5ub3JtYWxpemUoZSk7cmV0dXJuIFZhLnJlYWRGaWxlU3luYyhlLGI/dm9pZCAwOiJ1dGY4Iil9O3ZhciBtYT1mdW5jdGlvbihlKXtlPVdhKGUsITApO2UuYnVmZmVyfHwoZT1uZXcgVWludDhBcnJheShlKSk7cmV0dXJuIGV9O3ZhciBuYT1mdW5jdGlvbihlLApiLGMpe2U9ZS5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChlKTpwYS5ub3JtYWxpemUoZSk7VmEucmVhZEZpbGUoZSxmdW5jdGlvbihkLGcpe2Q/YyhkKTpiKGcuYnVmZmVyKX0pfTsxPHByb2Nlc3MuYXJndi5sZW5ndGgmJnByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIik7cHJvY2Vzcy5hcmd2LnNsaWNlKDIpO2EuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9fWVsc2UgaWYodGF8fGZhKWZhP1U9c2VsZi5sb2NhdGlvbi5ocmVmOiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihVPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKSxoJiYoVT1oKSxVPTAhPT1VLmluZGV4T2YoImJsb2I6Iik/VS5zdWJzdHIoMCxVLnJlcGxhY2UoL1s/I10uKi8sIiIpLmxhc3RJbmRleE9mKCIvIikrMSk6IiIsV2E9ZnVuY3Rpb24oZSl7dmFyIGI9bmV3IFhNTEh0dHBSZXF1ZXN0O2Iub3BlbigiR0VUIiwKZSwhMSk7Yi5zZW5kKG51bGwpO3JldHVybiBiLnJlc3BvbnNlVGV4dH0sZmEmJihtYT1mdW5jdGlvbihlKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJHRVQiLGUsITEpO2IucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7Yi5zZW5kKG51bGwpO3JldHVybiBuZXcgVWludDhBcnJheShiLnJlc3BvbnNlKX0pLG5hPWZ1bmN0aW9uKGUsYixjKXt2YXIgZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKCJHRVQiLGUsITApO2QucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7ZC5vbmxvYWQ9ZnVuY3Rpb24oKXsyMDA9PWQuc3RhdHVzfHwwPT1kLnN0YXR1cyYmZC5yZXNwb25zZT9iKGQucmVzcG9uc2UpOmMoKX07ZC5vbmVycm9yPWM7ZC5zZW5kKG51bGwpfTthLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO3ZhciBkYT1hLnByaW50RXJyfHxjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtPYmplY3QuYXNzaWduKGEsVGEpO1RhPW51bGw7dmFyIGVhO2Eud2FzbUJpbmFyeSYmCihlYT1hLndhc21CaW5hcnkpOyJvYmplY3QiIT10eXBlb2YgV2ViQXNzZW1ibHkmJnkoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgamEsc2E9ITEscmE9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDAsVyxpYSxjYSxZLHlhPVtdLG9hPVtdLHhhPVtdLHZhPSExLGJhPTAscWE9bnVsbCxoYT1udWxsO3ZhciBQPSJkcmFjb19kZWNvZGVyX2dsdGYud2FzbSI7UC5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIil8fChQPWsoUCkpO3ZhciBwZD0wLHFkPXtiOmZ1bmN0aW9uKGUsYixjKXsobmV3IEEoZSkpLmluaXQoYixjKTtwZCsrO3Rocm93IGU7fSxhOmZ1bmN0aW9uKCl7eSgiIil9LGQ6ZnVuY3Rpb24oZSxiLGMpe2lhLmNvcHlXaXRoaW4oZSxiLGIrYyl9LGM6ZnVuY3Rpb24oZSl7dmFyIGI9aWEubGVuZ3RoO2U+Pj49MDtpZigyMTQ3NDgzNjQ4PGUpcmV0dXJuITE7CmZvcih2YXIgYz0xOzQ+PWM7Yyo9Mil7dmFyIGQ9YiooMSsuMi9jKTtkPU1hdGgubWluKGQsZSsxMDA2NjMyOTYpO3ZhciBnPU1hdGg7ZD1NYXRoLm1heChlLGQpO2c9Zy5taW4uY2FsbChnLDIxNDc0ODM2NDgsZCsoNjU1MzYtZCU2NTUzNiklNjU1MzYpO2E6e2Q9amEuYnVmZmVyO3RyeXtqYS5ncm93KGctZC5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpO2woKTt2YXIgdD0xO2JyZWFrIGF9Y2F0Y2goYWEpe310PXZvaWQgMH1pZih0KXJldHVybiEwfXJldHVybiExfX07KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShnLHQpe2EuYXNtPWcuZXhwb3J0cztqYT1hLmFzbS5lO2woKTtvYS51bnNoaWZ0KGEuYXNtLmYpO2JhLS07YS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZhLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoYmEpOzA9PWJhJiYobnVsbCE9PXFhJiYoY2xlYXJJbnRlcnZhbChxYSkscWE9bnVsbCksaGEmJihnPWhhLGhhPW51bGwsZygpKSl9ZnVuY3Rpb24gYihnKXtlKGcuaW5zdGFuY2UpfQpmdW5jdGlvbiBjKGcpe3JldHVybiBxKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodCxkKX0pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHR9KS50aGVuKGcsZnVuY3Rpb24odCl7ZGEoImZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICIrdCk7eSh0KX0pfXZhciBkPXthOnFkfTtiYSsrO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmYS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKGJhKTtpZihhLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIGEuaW5zdGFudGlhdGVXYXNtKGQsZSl9Y2F0Y2goZyl7ZGEoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIrZyksa2EoZyl9KGZ1bmN0aW9uKCl7cmV0dXJuIGVhfHwiZnVuY3Rpb24iIT10eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmd8fFAuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpfHwKUC5zdGFydHNXaXRoKCJmaWxlOi8vIil8fFVhfHwiZnVuY3Rpb24iIT10eXBlb2YgZmV0Y2g/YyhiKTpmZXRjaChQLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihnKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZyxkKS50aGVuKGIsZnVuY3Rpb24odCl7ZGEoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK3QpO2RhKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpO3JldHVybiBjKGIpfSl9KX0pKCkuY2F0Y2goa2EpO3JldHVybnt9fSkoKTt2YXIgWGE9YS5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihYYT1hLl9lbXNjcmlwdGVuX2JpbmRfVm9pZFB0cl9fX2Rlc3Ryb3lfX18wPWEuYXNtLmgpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0semE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfRGVjb2RlckJ1ZmZlcl8wPQpmdW5jdGlvbigpe3JldHVybih6YT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9EZWNvZGVyQnVmZmVyXzA9YS5hc20uaSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZYT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9Jbml0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oWWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfSW5pdF8yPWEuYXNtLmopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihaYT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9fX2Rlc3Ryb3lfX18wPWEuYXNtLmspLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWE9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEFhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD0KYS5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkYT1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV90cmFuc2Zvcm1fdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKCRhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX3RyYW5zZm9ybV90eXBlXzA9YS5hc20ubSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKGFiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX19fZGVzdHJveV9fXzA9YS5hc20ubikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxCYT1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfR2VvbWV0cnlBdHRyaWJ1dGVfMD1mdW5jdGlvbigpe3JldHVybihCYT1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfR2VvbWV0cnlBdHRyaWJ1dGVfMD0KYS5hc20ubykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiYj1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihiYj1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1hLmFzbS5wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENhPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9Qb2ludEF0dHJpYnV0ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKENhPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9Qb2ludEF0dHJpYnV0ZV8wPWEuYXNtLnEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2I9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3NpemVfMD1mdW5jdGlvbigpe3JldHVybihjYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfc2l6ZV8wPWEuYXNtLnIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD0KZnVuY3Rpb24oKXtyZXR1cm4oZGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1hLmFzbS5zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGViPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGViPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWEuYXNtLnQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZmI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2RhdGFfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGZiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9kYXRhX3R5cGVfMD1hLmFzbS51KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPWZ1bmN0aW9uKCl7cmV0dXJuKGdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPQphLmFzbS52KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ub3JtYWxpemVkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX25vcm1hbGl6ZWRfMD1hLmFzbS53KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGliPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX3N0cmlkZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGliPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX3N0cmlkZV8wPWEuYXNtLngpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfb2Zmc2V0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oamI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfb2Zmc2V0XzA9YS5hc20ueSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxrYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfdW5pcXVlX2lkXzA9CmZ1bmN0aW9uKCl7cmV0dXJuKGtiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV91bmlxdWVfaWRfMD1hLmFzbS56KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKGxiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPWEuYXNtLkEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGE9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fMD1mdW5jdGlvbigpe3JldHVybihEYT1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV8wPWEuYXNtLkIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPQpmdW5jdGlvbigpe3JldHVybihtYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9YS5hc20uQykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxuYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4obmI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPWEuYXNtLkQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2I9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9taW5fdmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihvYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX21pbl92YWx1ZV8xPWEuYXNtLkUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scGI9CmEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcmFuZ2VfMD1mdW5jdGlvbigpe3JldHVybihwYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3JhbmdlXzA9YS5hc20uRikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocWI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPWEuYXNtLkcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWE9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEVhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fMD0KYS5hc20uSCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxyYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9YS5hc20uSSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPWZ1bmN0aW9uKCl7cmV0dXJuKHNiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9YS5hc20uSikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx0Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHRiPQphLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPWEuYXNtLkspLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRmE9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfUG9pbnRDbG91ZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEZhPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX1BvaW50Q2xvdWRfMD1hLmFzbS5MKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHViPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9hdHRyaWJ1dGVzXzA9ZnVuY3Rpb24oKXtyZXR1cm4odWI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfbnVtX2F0dHJpYnV0ZXNfMD1hLmFzbS5NKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybih2Yj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fcG9pbnRzXzA9YS5hc20uTikuYXBwbHkobnVsbCwKYXJndW1lbnRzKX0sd2I9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih3Yj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9fX2Rlc3Ryb3lfX18wPWEuYXNtLk8pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR2E9YS5fZW1zY3JpcHRlbl9iaW5kX01lc2hfTWVzaF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdhPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX01lc2hfMD1hLmFzbS5QKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9mYWNlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKHhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9mYWNlc18wPWEuYXNtLlEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWI9YS5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2F0dHJpYnV0ZXNfMD1mdW5jdGlvbigpe3JldHVybih5Yj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fYXR0cmlidXRlc18wPQphLmFzbS5SKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybih6Yj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fcG9pbnRzXzA9YS5hc20uUykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEFiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX19fZGVzdHJveV9fXzA9YS5hc20uVCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfTWV0YWRhdGFfMD1mdW5jdGlvbigpe3JldHVybihIYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfTWV0YWRhdGFfMD1hLmFzbS5VKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YV9fX2Rlc3Ryb3lfX18wPQphLmFzbS5WKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKENiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWEuYXNtLlcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGI9YS5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19va18wPWZ1bmN0aW9uKCl7cmV0dXJuKERiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfb2tfMD1hLmFzbS5YKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEViPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfZXJyb3JfbXNnXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRWI9YS5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19lcnJvcl9tc2dfMD1hLmFzbS5ZKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihGYj1hLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX19fZGVzdHJveV9fXzA9CmEuYXNtLlopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oSWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9YS5hc20uXykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihHYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfR2V0VmFsdWVfMT1hLmFzbS4kKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X3NpemVfMD1hLmFzbS5hYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJYj0KYS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X19fZGVzdHJveV9fXzA9YS5hc20uYmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0RyYWNvSW50OEFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oSmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0RyYWNvSW50OEFycmF5XzA9YS5hc20uY2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0dldFZhbHVlXzE9YS5hc20uZGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD0KZnVuY3Rpb24oKXtyZXR1cm4oS2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD1hLmFzbS5lYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihMYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS5mYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0RyYWNvVUludDhBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEthPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfRHJhY29VSW50OEFycmF5XzA9YS5hc20uZ2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKE1iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfR2V0VmFsdWVfMT0KYS5hc20uaGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9YS5hc20uaWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKE9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS5qYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0RyYWNvSW50MTZBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKExhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfRHJhY29JbnQxNkFycmF5XzA9YS5hc20ua2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9HZXRWYWx1ZV8xPQpmdW5jdGlvbigpe3JldHVybihQYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0dldFZhbHVlXzE9YS5hc20ubGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9zaXplXzA9YS5hc20ubWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS5uYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9EcmFjb1VJbnQxNkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oTWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfRHJhY29VSW50MTZBcnJheV8wPQphLmFzbS5vYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxTYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFNiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0dldFZhbHVlXzE9YS5hc20ucGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFRiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X3NpemVfMD1hLmFzbS5xYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFViPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X19fZGVzdHJveV9fXzA9YS5hc20ucmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD0KZnVuY3Rpb24oKXtyZXR1cm4oTmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD1hLmFzbS5zYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9HZXRWYWx1ZV8xPWEuYXNtLnRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfc2l6ZV8wPWEuYXNtLnVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihYYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X19fZGVzdHJveV9fXzA9CmEuYXNtLnZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9hPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0RyYWNvVUludDMyQXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihPYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9EcmFjb1VJbnQzMkFycmF5XzA9YS5hc20ud2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihZYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9HZXRWYWx1ZV8xPWEuYXNtLnhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihaYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9zaXplXzA9YS5hc20ueWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD0KZnVuY3Rpb24oKXtyZXR1cm4oJGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS56YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFBhPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTWV0YWRhdGFRdWVyaWVyXzA9YS5hc20uQWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9IYXNFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGFjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfSGFzRW50cnlfMj1hLmFzbS5CYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4oYmM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRJbnRFbnRyeV8yPQphLmFzbS5DYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybihjYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz1hLmFzbS5EYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldERvdWJsZUVudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4oZGM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXREb3VibGVFbnRyeV8yPWEuYXNtLkVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0U3RyaW5nRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihlYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldFN0cmluZ0VudHJ5XzI9YS5hc20uRmEpLmFwcGx5KG51bGwsCmFyZ3VtZW50cyl9LGZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTnVtRW50cmllc18xPWZ1bmN0aW9uKCl7cmV0dXJuKGZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTnVtRW50cmllc18xPWEuYXNtLkdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RW50cnlOYW1lXzI9ZnVuY3Rpb24oKXtyZXR1cm4oZ2M9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRFbnRyeU5hbWVfMj1hLmFzbS5IYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxoYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaGM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9fX2Rlc3Ryb3lfX18wPWEuYXNtLklhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZXJfMD0KZnVuY3Rpb24oKXtyZXR1cm4oUWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2Rlcl8wPWEuYXNtLkphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9ZnVuY3Rpb24oKXtyZXR1cm4oaWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWRfMz1hLmFzbS5LYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKGpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9NZXNoXzM9YS5hc20uTGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRfMj1mdW5jdGlvbigpe3JldHVybihrYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZF8yPQphLmFzbS5NYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGxjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlOYW1lXzI9YS5hc20uTmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnlfMz1mdW5jdGlvbigpe3JldHVybihtYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TWV0YWRhdGFFbnRyeV8zPWEuYXNtLk9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKG5jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZV8yPWEuYXNtLlBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LApvYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkXzI9ZnVuY3Rpb24oKXtyZXR1cm4ob2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlQnlVbmlxdWVJZF8yPWEuYXNtLlFhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldE1ldGFkYXRhXzE9ZnVuY3Rpb24oKXtyZXR1cm4ocGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0TWV0YWRhdGFfMT1hLmFzbS5SYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVNZXRhZGF0YV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHFjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZU1ldGFkYXRhXzI9YS5hc20uU2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0RmFjZUZyb21NZXNoXzM9CmZ1bmN0aW9uKCl7cmV0dXJuKHJjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWEuYXNtLlRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2hfMj1mdW5jdGlvbigpe3JldHVybihzYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoXzI9YS5hc20uVWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDE2QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybih0Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZXNVSW50MTZBcnJheV8zPWEuYXNtLlZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9ZnVuY3Rpb24oKXtyZXR1cm4odWM9CmEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9YS5hc20uV2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRfMz1mdW5jdGlvbigpe3JldHVybih2Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdF8zPWEuYXNtLlhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4od2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHNfMz1hLmFzbS5ZYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybih4Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHNfMz0KYS5hc20uWmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKHljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHNfMz1hLmFzbS5fYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKHpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzXzM9YS5hc20uJGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihBYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50c18zPQphLmFzbS5hYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxCYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihCYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1hLmFzbS5iYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKENjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzXzM9YS5hc20uY2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oRGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9CmEuYXNtLmRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50c181PWZ1bmN0aW9uKCl7cmV0dXJuKEVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50c181PWEuYXNtLmViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX1NraXBBdHRyaWJ1dGVUcmFuc2Zvcm1fMT1mdW5jdGlvbigpe3JldHVybihGYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9Ta2lwQXR0cmlidXRlVHJhbnNmb3JtXzE9YS5hc20uZmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkXzE9ZnVuY3Rpb24oKXtyZXR1cm4oR2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkXzE9CmEuYXNtLmdiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZF8yPWZ1bmN0aW9uKCl7cmV0dXJuKEhjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZF8yPWEuYXNtLmhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvTWVzaF8yPWZ1bmN0aW9uKCl7cmV0dXJuKEljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvTWVzaF8yPWEuYXNtLmliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfX19kZXN0cm95X19fMD1hLmFzbS5qYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfSU5WQUxJRF9UUkFOU0ZPUk09CmZ1bmN0aW9uKCl7cmV0dXJuKEtjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1hLmFzbS5rYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKExjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9OT19UUkFOU0ZPUk09YS5hc20ubGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09ZnVuY3Rpb24oKXtyZXR1cm4oTWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09CmEuYXNtLm1iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE5jPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT1mdW5jdGlvbigpe3JldHVybihOYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfT0NUQUhFRFJPTl9UUkFOU0ZPUk09YS5hc20ubmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT2M9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfSU5WQUxJRD1mdW5jdGlvbigpe3JldHVybihPYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9JTlZBTElEPWEuYXNtLm9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1BPU0lUSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKFBjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1BPU0lUSU9OPQphLmFzbS5wYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9OT1JNQUw9ZnVuY3Rpb24oKXtyZXR1cm4oUWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfTk9STUFMPWEuYXNtLnFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0NPTE9SPWZ1bmN0aW9uKCl7cmV0dXJuKFJjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0NPTE9SPWEuYXNtLnJiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1RFWF9DT09SRD1mdW5jdGlvbigpe3JldHVybihTYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9URVhfQ09PUkQ9CmEuYXNtLnNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9ZnVuY3Rpb24oKXtyZXR1cm4oVGM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfR0VORVJJQz1hLmFzbS50YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9JTlZBTElEX0dFT01FVFJZX1RZUEU9ZnVuY3Rpb24oKXtyZXR1cm4oVWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfSU5WQUxJRF9HRU9NRVRSWV9UWVBFPWEuYXNtLnViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFZjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPWZ1bmN0aW9uKCl7cmV0dXJuKFZjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPQphLmFzbS52YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9UUklBTkdVTEFSX01FU0g9ZnVuY3Rpb24oKXtyZXR1cm4oV2M9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfVFJJQU5HVUxBUl9NRVNIPWEuYXNtLndiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlZBTElEPWZ1bmN0aW9uKCl7cmV0dXJuKFhjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlZBTElEPWEuYXNtLnhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFljPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ4PWZ1bmN0aW9uKCl7cmV0dXJuKFljPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ4PWEuYXNtLnliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFpjPQphLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDg9ZnVuY3Rpb24oKXtyZXR1cm4oWmM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ4PWEuYXNtLnpiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQxNj1mdW5jdGlvbigpe3JldHVybigkYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMTY9YS5hc20uQWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQxNj1mdW5jdGlvbigpe3JldHVybihhZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDE2PWEuYXNtLkJiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGJkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQzMj1mdW5jdGlvbigpe3JldHVybihiZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMzI9CmEuYXNtLkNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4oY2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQzMj1hLmFzbS5EYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oZGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDY0PWEuYXNtLkViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oZWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ2ND1hLmFzbS5GYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQzMj0KZnVuY3Rpb24oKXtyZXR1cm4oZmQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUMzI9YS5hc20uR2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oZ2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUNjQ9YS5hc20uSGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0JPT0w9ZnVuY3Rpb24oKXtyZXR1cm4oaGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0JPT0w9YS5hc20uSWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1RZUEVTX0NPVU5UPWZ1bmN0aW9uKCl7cmV0dXJuKGlkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9UWVBFU19DT1VOVD0KYS5hc20uSmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfT0s9ZnVuY3Rpb24oKXtyZXR1cm4oamQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfT0s9YS5hc20uS2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfRFJBQ09fRVJST1I9ZnVuY3Rpb24oKXtyZXR1cm4oa2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfRFJBQ09fRVJST1I9YS5hc20uTGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfSU9fRVJST1I9ZnVuY3Rpb24oKXtyZXR1cm4obGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfSU9fRVJST1I9YS5hc20uTWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfSU5WQUxJRF9QQVJBTUVURVI9CmZ1bmN0aW9uKCl7cmV0dXJuKG1kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPWEuYXNtLk5iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOU1VQUE9SVEVEX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4obmQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5TVVBQT1JURURfVkVSU0lPTj1hLmFzbS5PYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9VTktOT1dOX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4ob2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5LTk9XTl9WRVJTSU9OPWEuYXNtLlBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O2EuX21hbGxvYz1mdW5jdGlvbigpe3JldHVybihhLl9tYWxsb2M9YS5hc20uUWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07CmEuX2ZyZWU9ZnVuY3Rpb24oKXtyZXR1cm4oYS5fZnJlZT1hLmFzbS5SYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgdWE9ZnVuY3Rpb24oKXtyZXR1cm4odWE9YS5hc20uU2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07YS5fX19zdGFydF9lbV9qcz0xMTY2MDthLl9fX3N0b3BfZW1fanM9MTE3NTg7dmFyIGxhO2hhPWZ1bmN0aW9uIGIoKXtsYXx8RigpO2xhfHwoaGE9Yil9O2lmKGEucHJlSW5pdClmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGEucHJlSW5pdCYmKGEucHJlSW5pdD1bYS5wcmVJbml0XSk7MDxhLnByZUluaXQubGVuZ3RoOylhLnByZUluaXQucG9wKCkoKTtGKCk7di5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7di5wcm90b3R5cGUuY29uc3RydWN0b3I9djt2LnByb3RvdHlwZS5fX2NsYXNzX189djt2Ll9fY2FjaGVfXz17fTthLldyYXBwZXJPYmplY3Q9djthLmdldENhY2hlPXc7YS53cmFwUG9pbnRlcj1CO2EuY2FzdE9iamVjdD1mdW5jdGlvbihiLApjKXtyZXR1cm4gQihiLnB0cixjKX07YS5OVUxMPUIoMCk7YS5kZXN0cm95PWZ1bmN0aW9uKGIpe2lmKCFiLl9fZGVzdHJveV9fKXRocm93IkVycm9yOiBDYW5ub3QgZGVzdHJveSBvYmplY3QuIChEaWQgeW91IGNyZWF0ZSBpdCB5b3Vyc2VsZj8pIjtiLl9fZGVzdHJveV9fKCk7ZGVsZXRlIHcoYi5fX2NsYXNzX18pW2IucHRyXX07YS5jb21wYXJlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIucHRyPT09Yy5wdHJ9O2EuZ2V0UG9pbnRlcj1mdW5jdGlvbihiKXtyZXR1cm4gYi5wdHJ9O2EuZ2V0Q2xhc3M9ZnVuY3Rpb24oYil7cmV0dXJuIGIuX19jbGFzc19ffTt2YXIgcj17YnVmZmVyOjAsc2l6ZTowLHBvczowLHRlbXBzOltdLG5lZWRlZDowLHByZXBhcmU6ZnVuY3Rpb24oKXtpZihyLm5lZWRlZCl7Zm9yKHZhciBiPTA7YjxyLnRlbXBzLmxlbmd0aDtiKyspYS5fZnJlZShyLnRlbXBzW2JdKTtyLnRlbXBzLmxlbmd0aD0wO2EuX2ZyZWUoci5idWZmZXIpO3IuYnVmZmVyPTA7ci5zaXplKz0Kci5uZWVkZWQ7ci5uZWVkZWQ9MH1yLmJ1ZmZlcnx8KHIuc2l6ZSs9MTI4LHIuYnVmZmVyPWEuX21hbGxvYyhyLnNpemUpLHIuYnVmZmVyfHx5KHZvaWQgMCkpO3IucG9zPTB9LGFsbG9jOmZ1bmN0aW9uKGIsYyl7ci5idWZmZXJ8fHkodm9pZCAwKTtiPWIubGVuZ3RoKmMuQllURVNfUEVSX0VMRU1FTlQ7Yj1iKzcmLTg7ci5wb3MrYj49ci5zaXplPygwPGJ8fHkodm9pZCAwKSxyLm5lZWRlZCs9YixjPWEuX21hbGxvYyhiKSxyLnRlbXBzLnB1c2goYykpOihjPXIuYnVmZmVyK3IucG9zLHIucG9zKz1iKTtyZXR1cm4gY30sY29weTpmdW5jdGlvbihiLGMsZCl7ZD4+Pj0wO3N3aXRjaChjLkJZVEVTX1BFUl9FTEVNRU5UKXtjYXNlIDI6ZD4+Pj0xO2JyZWFrO2Nhc2UgNDpkPj4+PTI7YnJlYWs7Y2FzZSA4OmQ+Pj49M31mb3IodmFyIGc9MDtnPGIubGVuZ3RoO2crKyljW2QrZ109YltnXX19O1gucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO1gucHJvdG90eXBlLmNvbnN0cnVjdG9yPQpYO1gucHJvdG90eXBlLl9fY2xhc3NfXz1YO1guX19jYWNoZV9fPXt9O2EuVm9pZFB0cj1YO1gucHJvdG90eXBlLl9fZGVzdHJveV9fPVgucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7WGEodGhpcy5wdHIpfTtTLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtTLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TO1MucHJvdG90eXBlLl9fY2xhc3NfXz1TO1MuX19jYWNoZV9fPXt9O2EuRGVjb2RlckJ1ZmZlcj1TO1MucHJvdG90eXBlLkluaXQ9Uy5wcm90b3R5cGUuSW5pdD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpOyJvYmplY3QiPT10eXBlb2YgYiYmKGI9WihiKSk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO1lhKGQsYixjKX07Uy5wcm90b3R5cGUuX19kZXN0cm95X189Uy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtaYSh0aGlzLnB0cil9O1EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpOwpRLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RO1EucHJvdG90eXBlLl9fY2xhc3NfXz1RO1EuX19jYWNoZV9fPXt9O2EuQXR0cmlidXRlVHJhbnNmb3JtRGF0YT1RO1EucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPVEucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuICRhKHRoaXMucHRyKX07US5wcm90b3R5cGUuX19kZXN0cm95X189US5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXthYih0aGlzLnB0cil9O1YucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO1YucHJvdG90eXBlLmNvbnN0cnVjdG9yPVY7Vi5wcm90b3R5cGUuX19jbGFzc19fPVY7Vi5fX2NhY2hlX189e307YS5HZW9tZXRyeUF0dHJpYnV0ZT1WO1YucHJvdG90eXBlLl9fZGVzdHJveV9fPVYucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7YmIodGhpcy5wdHIpfTt4LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTt4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0KeDt4LnByb3RvdHlwZS5fX2NsYXNzX189eDt4Ll9fY2FjaGVfXz17fTthLlBvaW50QXR0cmlidXRlPXg7eC5wcm90b3R5cGUuc2l6ZT14LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMucHRyKX07eC5wcm90b3R5cGUuR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YT14LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIEIoZGIodGhpcy5wdHIpLFEpfTt4LnByb3RvdHlwZS5hdHRyaWJ1dGVfdHlwZT14LnByb3RvdHlwZS5hdHRyaWJ1dGVfdHlwZT1mdW5jdGlvbigpe3JldHVybiBlYih0aGlzLnB0cil9O3gucHJvdG90eXBlLmRhdGFfdHlwZT14LnByb3RvdHlwZS5kYXRhX3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gZmIodGhpcy5wdHIpfTt4LnByb3RvdHlwZS5udW1fY29tcG9uZW50cz14LnByb3RvdHlwZS5udW1fY29tcG9uZW50cz1mdW5jdGlvbigpe3JldHVybiBnYih0aGlzLnB0cil9O3gucHJvdG90eXBlLm5vcm1hbGl6ZWQ9CngucHJvdG90eXBlLm5vcm1hbGl6ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIWhiKHRoaXMucHRyKX07eC5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9eC5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaWIodGhpcy5wdHIpfTt4LnByb3RvdHlwZS5ieXRlX29mZnNldD14LnByb3RvdHlwZS5ieXRlX29mZnNldD1mdW5jdGlvbigpe3JldHVybiBqYih0aGlzLnB0cil9O3gucHJvdG90eXBlLnVuaXF1ZV9pZD14LnByb3RvdHlwZS51bmlxdWVfaWQ9ZnVuY3Rpb24oKXtyZXR1cm4ga2IodGhpcy5wdHIpfTt4LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz14LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2xiKHRoaXMucHRyKX07RC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7RC5wcm90b3R5cGUuY29uc3RydWN0b3I9RDtELnByb3RvdHlwZS5fX2NsYXNzX189RDtELl9fY2FjaGVfXz17fTthLkF0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybT0KRDtELnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1ELnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuISFtYihjLGIpfTtELnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1ELnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1mdW5jdGlvbigpe3JldHVybiBuYih0aGlzLnB0cil9O0QucHJvdG90eXBlLm1pbl92YWx1ZT1ELnByb3RvdHlwZS5taW5fdmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBvYihjLGIpfTtELnByb3RvdHlwZS5yYW5nZT1ELnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbigpe3JldHVybiBwYih0aGlzLnB0cil9O0QucHJvdG90eXBlLl9fZGVzdHJveV9fPUQucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7cWIodGhpcy5wdHIpfTtHLnByb3RvdHlwZT0KT2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7Ry5wcm90b3R5cGUuY29uc3RydWN0b3I9RztHLnByb3RvdHlwZS5fX2NsYXNzX189RztHLl9fY2FjaGVfXz17fTthLkF0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm09RztHLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1HLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuISFyYihjLGIpfTtHLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1HLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1mdW5jdGlvbigpe3JldHVybiBzYih0aGlzLnB0cil9O0cucHJvdG90eXBlLl9fZGVzdHJveV9fPUcucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7dGIodGhpcy5wdHIpfTtILnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtILnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IO0gucHJvdG90eXBlLl9fY2xhc3NfXz0KSDtILl9fY2FjaGVfXz17fTthLlBvaW50Q2xvdWQ9SDtILnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1ILnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiB1Yih0aGlzLnB0cil9O0gucHJvdG90eXBlLm51bV9wb2ludHM9SC5wcm90b3R5cGUubnVtX3BvaW50cz1mdW5jdGlvbigpe3JldHVybiB2Yih0aGlzLnB0cil9O0gucHJvdG90eXBlLl9fZGVzdHJveV9fPUgucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7d2IodGhpcy5wdHIpfTtFLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtFLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FO0UucHJvdG90eXBlLl9fY2xhc3NfXz1FO0UuX19jYWNoZV9fPXt9O2EuTWVzaD1FO0UucHJvdG90eXBlLm51bV9mYWNlcz1FLnByb3RvdHlwZS5udW1fZmFjZXM9ZnVuY3Rpb24oKXtyZXR1cm4geGIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1FLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz0KZnVuY3Rpb24oKXtyZXR1cm4geWIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5udW1fcG9pbnRzPUUucHJvdG90eXBlLm51bV9wb2ludHM9ZnVuY3Rpb24oKXtyZXR1cm4gemIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1FLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0FiKHRoaXMucHRyKX07VC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7VC5wcm90b3R5cGUuY29uc3RydWN0b3I9VDtULnByb3RvdHlwZS5fX2NsYXNzX189VDtULl9fY2FjaGVfXz17fTthLk1ldGFkYXRhPVQ7VC5wcm90b3R5cGUuX19kZXN0cm95X189VC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtCYih0aGlzLnB0cil9O0MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO0MucHJvdG90eXBlLmNvbnN0cnVjdG9yPUM7Qy5wcm90b3R5cGUuX19jbGFzc19fPUM7Qy5fX2NhY2hlX189e307YS5TdGF0dXM9QztDLnByb3RvdHlwZS5jb2RlPQpDLnByb3RvdHlwZS5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIENiKHRoaXMucHRyKX07Qy5wcm90b3R5cGUub2s9Qy5wcm90b3R5cGUub2s9ZnVuY3Rpb24oKXtyZXR1cm4hIURiKHRoaXMucHRyKX07Qy5wcm90b3R5cGUuZXJyb3JfbXNnPUMucHJvdG90eXBlLmVycm9yX21zZz1mdW5jdGlvbigpe3JldHVybiBwKEViKHRoaXMucHRyKSl9O0MucHJvdG90eXBlLl9fZGVzdHJveV9fPUMucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7RmIodGhpcy5wdHIpfTtJLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtJLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1JO0kucHJvdG90eXBlLl9fY2xhc3NfXz1JO0kuX19jYWNoZV9fPXt9O2EuRHJhY29GbG9hdDMyQXJyYXk9STtJLnByb3RvdHlwZS5HZXRWYWx1ZT1JLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIEdiKGMsCmIpfTtJLnByb3RvdHlwZS5zaXplPUkucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gSGIodGhpcy5wdHIpfTtJLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1JLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0liKHRoaXMucHRyKX07Si5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7Si5wcm90b3R5cGUuY29uc3RydWN0b3I9SjtKLnByb3RvdHlwZS5fX2NsYXNzX189SjtKLl9fY2FjaGVfXz17fTthLkRyYWNvSW50OEFycmF5PUo7Si5wcm90b3R5cGUuR2V0VmFsdWU9Si5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBKYihjLGIpfTtKLnByb3RvdHlwZS5zaXplPUoucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gS2IodGhpcy5wdHIpfTtKLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1KLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0xiKHRoaXMucHRyKX07CksucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO0sucHJvdG90eXBlLmNvbnN0cnVjdG9yPUs7Sy5wcm90b3R5cGUuX19jbGFzc19fPUs7Sy5fX2NhY2hlX189e307YS5EcmFjb1VJbnQ4QXJyYXk9SztLLnByb3RvdHlwZS5HZXRWYWx1ZT1LLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIE1iKGMsYil9O0sucHJvdG90eXBlLnNpemU9Sy5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBOYih0aGlzLnB0cil9O0sucHJvdG90eXBlLl9fZGVzdHJveV9fPUsucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7T2IodGhpcy5wdHIpfTtMLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtMLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MO0wucHJvdG90eXBlLl9fY2xhc3NfXz1MO0wuX19jYWNoZV9fPXt9O2EuRHJhY29JbnQxNkFycmF5PQpMO0wucHJvdG90eXBlLkdldFZhbHVlPUwucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gUGIoYyxiKX07TC5wcm90b3R5cGUuc2l6ZT1MLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFFiKHRoaXMucHRyKX07TC5wcm90b3R5cGUuX19kZXN0cm95X189TC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtSYih0aGlzLnB0cil9O00ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO00ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU07TS5wcm90b3R5cGUuX19jbGFzc19fPU07TS5fX2NhY2hlX189e307YS5EcmFjb1VJbnQxNkFycmF5PU07TS5wcm90b3R5cGUuR2V0VmFsdWU9TS5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBTYihjLGIpfTsKTS5wcm90b3R5cGUuc2l6ZT1NLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFRiKHRoaXMucHRyKX07TS5wcm90b3R5cGUuX19kZXN0cm95X189TS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtVYih0aGlzLnB0cil9O04ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO04ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU47Ti5wcm90b3R5cGUuX19jbGFzc19fPU47Ti5fX2NhY2hlX189e307YS5EcmFjb0ludDMyQXJyYXk9TjtOLnByb3RvdHlwZS5HZXRWYWx1ZT1OLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIFZiKGMsYil9O04ucHJvdG90eXBlLnNpemU9Ti5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBXYih0aGlzLnB0cil9O04ucHJvdG90eXBlLl9fZGVzdHJveV9fPU4ucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7WGIodGhpcy5wdHIpfTsKTy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7Ty5wcm90b3R5cGUuY29uc3RydWN0b3I9TztPLnByb3RvdHlwZS5fX2NsYXNzX189TztPLl9fY2FjaGVfXz17fTthLkRyYWNvVUludDMyQXJyYXk9TztPLnByb3RvdHlwZS5HZXRWYWx1ZT1PLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIFliKGMsYil9O08ucHJvdG90eXBlLnNpemU9Ty5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBaYih0aGlzLnB0cil9O08ucHJvdG90eXBlLl9fZGVzdHJveV9fPU8ucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7JGIodGhpcy5wdHIpfTt6LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTt6LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj16O3oucHJvdG90eXBlLl9fY2xhc3NfXz16O3ouX19jYWNoZV9fPXt9O2EuTWV0YWRhdGFRdWVyaWVyPQp6O3oucHJvdG90eXBlLkhhc0VudHJ5PXoucHJvdG90eXBlLkhhc0VudHJ5PWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7ci5wcmVwYXJlKCk7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLnB0cjpSKGMpO3JldHVybiEhYWMoZCxiLGMpfTt6LnByb3RvdHlwZS5HZXRJbnRFbnRyeT16LnByb3RvdHlwZS5HZXRJbnRFbnRyeT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtyZXR1cm4gYmMoZCxiLGMpfTt6LnByb3RvdHlwZS5HZXRJbnRFbnRyeUFycmF5PXoucHJvdG90eXBlLkdldEludEVudHJ5QXJyYXk9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09CnR5cGVvZiBjP2MucHRyOlIoYyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO2NjKGcsYixjLGQpfTt6LnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT16LnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtyZXR1cm4gZGMoZCxiLGMpfTt6LnByb3RvdHlwZS5HZXRTdHJpbmdFbnRyeT16LnByb3RvdHlwZS5HZXRTdHJpbmdFbnRyeT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtyZXR1cm4gcChlYyhkLGIsYykpfTt6LnByb3RvdHlwZS5OdW1FbnRyaWVzPXoucHJvdG90eXBlLk51bUVudHJpZXM9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7CmImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gZmMoYyxiKX07ei5wcm90b3R5cGUuR2V0RW50cnlOYW1lPXoucHJvdG90eXBlLkdldEVudHJ5TmFtZT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7cmV0dXJuIHAoZ2MoZCxiLGMpKX07ei5wcm90b3R5cGUuX19kZXN0cm95X189ei5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtoYyh0aGlzLnB0cil9O20ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO20ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW07bS5wcm90b3R5cGUuX19jbGFzc19fPW07bS5fX2NhY2hlX189e307YS5EZWNvZGVyPW07bS5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWQ9bS5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWQ9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPQp0aGlzLnB0cjtyLnByZXBhcmUoKTsib2JqZWN0Ij09dHlwZW9mIGImJihiPVooYikpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuIEIoaWMoZyxiLGMsZCksQyl9O20ucHJvdG90eXBlLkRlY29kZUFycmF5VG9NZXNoPW0ucHJvdG90eXBlLkRlY29kZUFycmF5VG9NZXNoPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtyLnByZXBhcmUoKTsib2JqZWN0Ij09dHlwZW9mIGImJihiPVooYikpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuIEIoamMoZyxiLGMsZCksQyl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJgooYz1jLnB0cik7cmV0dXJuIGtjKGQsYixjKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU5hbWU9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU5hbWU9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtyLnByZXBhcmUoKTtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7cmV0dXJuIGxjKGQsYixjKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5wdHI6UihkKTtyZXR1cm4gbWMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZT0KbS5wcm90b3R5cGUuR2V0QXR0cmlidXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtyZXR1cm4gQihuYyhkLGIsYykseCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUJ5VW5pcXVlSWQ9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7cmV0dXJuIEIob2MoZCxiLGMpLHgpfTttLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1tLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIEIocGMoYyxiKSxUKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9CmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtyZXR1cm4gQihxYyhkLGIsYyksVCl9O20ucHJvdG90eXBlLkdldEZhY2VGcm9tTWVzaD1tLnByb3RvdHlwZS5HZXRGYWNlRnJvbU1lc2g9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhcmMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2g9bS5wcm90b3R5cGUuR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7CnJldHVybiBzYyhkLGIsYyl9O20ucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PW0ucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIXRjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1tLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISF1YyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9CmZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIXZjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cz1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISF3YyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7CmImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEheGMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISF5YyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPQpiLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIXpjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFBYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJgooYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhQmMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIUNjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09CnR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFEYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCxnLHQpe3ZhciBhYT10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtnJiYib2JqZWN0Ij09PXR5cGVvZiBnJiYoZz1nLnB0cik7dCYmIm9iamVjdCI9PT10eXBlb2YgdCYmKHQ9dC5wdHIpO3JldHVybiEhRWMoYWEsYixjLGQsZyx0KX07bS5wcm90b3R5cGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybT1tLnByb3RvdHlwZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtGYyhjLApiKX07bS5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkPW0ucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZD1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIEdjKGMsYil9O20ucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZD1tLnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWQ9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBCKEhjKGQsYixjKSxDKX07bS5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9NZXNoPW0ucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvTWVzaD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PQp0eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBCKEljKGQsYixjKSxDKX07bS5wcm90b3R5cGUuX19kZXN0cm95X189bS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtKYyh0aGlzLnB0cil9OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXthLkFUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1LYygpO2EuQVRUUklCVVRFX05PX1RSQU5TRk9STT1MYygpO2EuQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09TWMoKTthLkFUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT1OYygpO2EuSU5WQUxJRD1PYygpO2EuUE9TSVRJT049UGMoKTthLk5PUk1BTD1RYygpO2EuQ09MT1I9UmMoKTthLlRFWF9DT09SRD1TYygpO2EuR0VORVJJQz1UYygpO2EuSU5WQUxJRF9HRU9NRVRSWV9UWVBFPVVjKCk7YS5QT0lOVF9DTE9VRD1WYygpO2EuVFJJQU5HVUxBUl9NRVNIPVdjKCk7YS5EVF9JTlZBTElEPVhjKCk7YS5EVF9JTlQ4PVljKCk7YS5EVF9VSU5UOD1aYygpO2EuRFRfSU5UMTY9CiRjKCk7YS5EVF9VSU5UMTY9YWQoKTthLkRUX0lOVDMyPWJkKCk7YS5EVF9VSU5UMzI9Y2QoKTthLkRUX0lOVDY0PWRkKCk7YS5EVF9VSU5UNjQ9ZWQoKTthLkRUX0ZMT0FUMzI9ZmQoKTthLkRUX0ZMT0FUNjQ9Z2QoKTthLkRUX0JPT0w9aGQoKTthLkRUX1RZUEVTX0NPVU5UPWlkKCk7YS5PSz1qZCgpO2EuRFJBQ09fRVJST1I9a2QoKTthLklPX0VSUk9SPWxkKCk7YS5JTlZBTElEX1BBUkFNRVRFUj1tZCgpO2EuVU5TVVBQT1JURURfVkVSU0lPTj1uZCgpO2EuVU5LTk9XTl9WRVJTSU9OPW9kKCl9dmE/YigpOm9hLnVuc2hpZnQoYil9KSgpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYS5vbk1vZHVsZVBhcnNlZClhLm9uTW9kdWxlUGFyc2VkKCk7YS5EZWNvZGVyLnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlPWZ1bmN0aW9uKGIpe2lmKGIuX19jbGFzc19fJiZiLl9fY2xhc3NfXz09PWEuRGVjb2RlckJ1ZmZlcilyZXR1cm4gYS5EZWNvZGVyLnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWQoYik7CmlmKDg+Yi5ieXRlTGVuZ3RoKXJldHVybiBhLklOVkFMSURfR0VPTUVUUllfVFlQRTtzd2l0Y2goYls3XSl7Y2FzZSAwOnJldHVybiBhLlBPSU5UX0NMT1VEO2Nhc2UgMTpyZXR1cm4gYS5UUklBTkdVTEFSX01FU0g7ZGVmYXVsdDpyZXR1cm4gYS5JTlZBTElEX0dFT01FVFJZX1RZUEV9fTtyZXR1cm4gbi5yZWFkeX19KCk7Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPURyYWNvRGVjb2Rlck1vZHVsZToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gRHJhY29EZWNvZGVyTW9kdWxlfSk6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cyYmKGV4cG9ydHMuRHJhY29EZWNvZGVyTW9kdWxlPURyYWNvRGVjb2Rlck1vZHVsZSk7Cg=="; +var textDecoder = new TextDecoder(); +function convertArrayBufferToString2(buffer, from, to) { + if (from === void 0) { + from = 0; + } + if (to === void 0) { + to = buffer.byteLength; + } + return textDecoder.decode(new Uint8Array(buffer, from, to)); +} +var fbxBinaryHeader = "Kaydara FBX Binary \0"; +function IsFBXBinary(buffer) { + return buffer.byteLength >= fbxBinaryHeader.length && fbxBinaryHeader === convertArrayBufferToString2(buffer, 0, fbxBinaryHeader.length); +} +var gtlfBinaryHeader = "glTF"; +function IsGLB(buffer) { + return buffer.byteLength >= 4 && gtlfBinaryHeader === convertArrayBufferToString2(buffer, 0, 4); +} +var fbxTextHeader = [ + "K", + "a", + "y", + "d", + "a", + "r", + "a", + "\\", + "F", + "B", + "X", + "\\", + "B", + "i", + "n", + "a", + "r", + "y", + "\\", + "\\" +]; +function isFbxFormatASCII2(text) { + let cursor = 0; + function read(offset) { + const result = text[offset - 1]; + text = text.slice(cursor + offset); + cursor++; + return result; + } + for (let i = 0; i < fbxTextHeader.length; ++i) { + const num = read(1); + if (num !== fbxTextHeader[i]) { + return false; + } + } + return true; +} +var _ModelLoader = class _ModelLoader2 { + constructor(manager, options = {}) { + this.manager = manager; + this.options = options; + this.gltfLoader = new GLTFLoader(this.manager).setMeshoptDecoder(MeshoptDecoder).setDRACOLoader(_ModelLoader2.getDracoLoader()); + this.fbxLoader = new FBXLoader(this.manager); + } + static getDracoLoader() { + if (_ModelLoader2.dracoLoader) { + return _ModelLoader2.dracoLoader; + } + _ModelLoader2.dracoLoader = new DRACOLoader({ + /* + Implement the methods of the LoadingManager interface so that we can inject the embedded Draco decoder + rather than retrieve it from the network by overriding the resolveURL method to return data URIs. + */ + resolveURL: (url) => { + if (url === "draco_wasm_wrapper.js") { + return "data:text/javascript;base64," + draco_wasm_wrapper_default; + } else if (url === "draco_decoder.wasm") { + return "data:application/wasm;base64," + draco_decoder_default; + } + return url; + }, + itemStart: () => { + }, + itemEnd: () => { + }, + itemError: () => { + } + }).preload(); + return _ModelLoader2.dracoLoader; + } + async load(url, onProgress) { + return new Promise((resolve, reject) => { + var _a2; + const resourcePath = _ModelLoader2.extractUrlBase(url); + (_a2 = this.manager) == null ? void 0 : _a2.itemStart(url); + const _onError = (e) => { + var _a22, _b2; + reject(e); + (_a22 = this.manager) == null ? void 0 : _a22.itemError(url); + (_b2 = this.manager) == null ? void 0 : _b2.itemEnd(url); + }; + const loader = new FileLoader(this.manager); + loader.setResponseType("arraybuffer"); + if (this.options.requestHeader) { + loader.setRequestHeader(this.options.requestHeader); + } + if (this.options.withCredentials !== void 0) { + loader.setWithCredentials(this.options.withCredentials); + } + loader.load( + url, + async (data) => { + var _a22; + try { + const loadResult = await this.loadFromBuffer(data, resourcePath); + (_a22 = this.manager) == null ? void 0 : _a22.itemEnd(url); + resolve(loadResult); + } catch (e) { + _onError(e); + } + }, + (progressEvent) => { + if (onProgress && progressEvent.lengthComputable) { + onProgress(progressEvent.loaded, progressEvent.total); + } + }, + _onError + ); + }); + } + static extractUrlBase(url) { + const index = url.lastIndexOf("/"); + if (index === -1) { + return "./"; + } + return url.slice(0, index + 1); + } + async loadFromBuffer(buffer, pathName) { + if (IsFBXBinary(buffer)) { + const group = this.fbxLoader.parse(buffer, pathName); + return { group, animations: [] }; + } + if (IsGLB(buffer)) { + const gltf2 = await this.gltfLoader.parseAsync(buffer, pathName); + return { group: gltf2.scene, animations: gltf2.animations }; + } + const text = convertArrayBufferToString2(buffer); + if (isFbxFormatASCII2(text)) { + const group = this.fbxLoader.parse(text, pathName); + return { group, animations: [] }; + } + const gltf = await this.gltfLoader.parseAsync(text, pathName); + return { group: gltf.scene, animations: gltf.animations }; + } +}; +_ModelLoader.dracoLoader = null; +var ModelLoader = _ModelLoader; + +// ../../node_modules/@mml-io/mml-web-threejs/build/index.js +var debugAudioSphereSize = 0.25; +var debugAudioGeometry = new SphereGeometry(debugAudioSphereSize, 4, 2); +var debugAudioMaterial = new MeshBasicMaterial({ + wireframe: true, + fog: false, + toneMapped: false, + color: 65280 +}); +var audioRefDistance = 1; +var audioRolloffFactor = 1; +function extendAudioToDuration(context, buffer, seconds) { + const updatedBuffer = context.createBuffer( + buffer.numberOfChannels, + Math.ceil(seconds * buffer.sampleRate), + buffer.sampleRate + ); + for (let channelNumber = 0; channelNumber < buffer.numberOfChannels; channelNumber++) { + const channelData = buffer.getChannelData(channelNumber); + const updatedChannelData = updatedBuffer.getChannelData(channelNumber); + updatedChannelData.set(channelData, 0); + } + return updatedBuffer; +} +var ThreeJSAudio = class extends AudioGraphics { + constructor(audio) { + super(audio); + this.audio = audio; + this.audioDebugHelper = null; + this.audioContextStateChangedListener = () => { + this.syncAudioTime(); + }; + this.delayedPauseTimer = null; + this.srcLoadingInstanceManager = new LoadingInstanceManager(`${Audio.tagName}.src`); + this.loadedAudioState = null; + this.documentTimeListener = this.audio.addDocumentTimeListener(() => { + if (this.loadedAudioState) { + this.syncAudioTime(); + } + }); + const audioListener = this.getAudioListener(); + this.positionalAudio = new PositionalAudio(audioListener); + this.positionalAudio.context.addEventListener( + "statechange", + this.audioContextStateChangedListener + ); + this.positionalAudio.setVolume(this.audio.props.volume); + this.positionalAudio.setDirectionalCone( + this.audio.props.coneFalloffAngle ?? 360, + this.audio.props.coneAngle, + 0 + ); + this.positionalAudio.setRefDistance(audioRefDistance); + this.positionalAudio.setRolloffFactor(audioRolloffFactor); + this.audio.getContainer().add(this.positionalAudio); + this.updateAudio(); + this.updateDebugVisualisation(); + } + disable() { + } + enable() { + } + syncAudioTime() { + const audioContext = this.positionalAudio.context; + if (audioContext.state !== "running") { + return; + } + if (this.delayedPauseTimer !== null) { + clearTimeout(this.delayedPauseTimer); + this.delayedPauseTimer = null; + } + if (!this.loadedAudioState || !this.loadedAudioState.loadedAudio || this.loadedAudioState.loadedAudio.mode !== "LOADED") { + return; + } + const loadedAudio = this.loadedAudioState.loadedAudio; + const audioBuffer = loadedAudio.buffer; + let currentSource = loadedAudio.currentSource; + if (!this.audio.props.enabled || this.audio.isDisabled()) { + if (currentSource) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + } + return; + } + const documentTime = this.audio.getDocumentTime(); + if (this.audio.props.pauseTime !== null) { + const timeUntilPause = this.audio.props.pauseTime - documentTime; + if (timeUntilPause < 2) { + if (currentSource) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + } + return; + } else { + const delayedPauseTimer = setTimeout(() => { + if (this.delayedPauseTimer === delayedPauseTimer) { + this.delayedPauseTimer = null; + } + this.syncAudioTime(); + }, timeUntilPause); + this.delayedPauseTimer = delayedPauseTimer; + } + } + const currentTime = (documentTime - this.audio.props.startTime) / 1e3; + const audioDuration = audioBuffer.duration; + let loopDurationSeconds = null; + if (this.audio.props.loopDuration !== null && this.audio.props.loopDuration > 0) { + loopDurationSeconds = this.audio.props.loopDuration / 1e3; + } + let desiredAudioTime; + if (this.audio.props.loop) { + if (currentTime < 0) { + desiredAudioTime = currentTime; + } else { + if (loopDurationSeconds === null) { + desiredAudioTime = currentTime % audioDuration; + } else { + desiredAudioTime = currentTime % loopDurationSeconds; + } + } + } else { + desiredAudioTime = currentTime; + if (desiredAudioTime > audioDuration) { + if (currentSource) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + } + return; + } + } + const loopDurationLongerThanAudioDuration = loopDurationSeconds && loopDurationSeconds > audioDuration; + const playbackLength = loopDurationSeconds ? loopDurationSeconds : audioDuration; + if (currentSource) { + if (currentSource.sourceNode.loop !== this.audio.props.loop) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + currentSource = null; + } else if (loopDurationSeconds !== null && loopDurationLongerThanAudioDuration && (!loadedAudio.paddedBuffer || loadedAudio.paddedBuffer.totalDuration < loopDurationSeconds)) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + currentSource = null; + } else if (loopDurationSeconds === null && currentSource.sourceNode.loopEnd !== audioBuffer.duration) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + currentSource = null; + } else { + if (this.audio.props.startTime > documentTime) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + currentSource = null; + } else { + const unloopedCurrentAudioPoint = (audioContext.currentTime - currentSource.contextStartTime) / currentSource.sourceNode.playbackRate.value; + if (unloopedCurrentAudioPoint < 0) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + currentSource = null; + } else { + if (loopDurationSeconds !== null && currentSource.sourceNode.loopEnd !== loopDurationSeconds) { + currentSource.sourceNode.loopEnd = loopDurationSeconds; + } + const currentAudioPoint = unloopedCurrentAudioPoint % playbackLength; + let delta = desiredAudioTime - currentAudioPoint; + if (this.audio.props.loop) { + const loopedDelta = delta - playbackLength; + if (Math.abs(delta) > Math.abs(loopedDelta)) { + delta = loopedDelta; + } + } + if (Math.abs(delta) > 0.5) { + currentSource.sourceNode.stop(); + loadedAudio.currentSource = null; + currentSource = null; + } else { + if (Math.abs(delta) < 0.1) { + currentSource.sourceNode.playbackRate.value = 1; + } else { + if (delta > 0) { + currentSource.sourceNode.playbackRate.value = 1.01; + } else { + currentSource.sourceNode.playbackRate.value = 0.99; + } + } + currentSource.contextStartTime = audioContext.currentTime - currentAudioPoint / currentSource.sourceNode.playbackRate.value; + } + } + } + } + } + if (!currentSource) { + const currentSourceNode = this.positionalAudio.context.createBufferSource(); + let buffer = audioBuffer; + if (loopDurationSeconds && loopDurationLongerThanAudioDuration) { + if (loadedAudio.paddedBuffer && loadedAudio.paddedBuffer.totalDuration === loopDurationSeconds) { + buffer = loadedAudio.paddedBuffer.buffer; + } else { + const paddedBuffer = extendAudioToDuration( + this.positionalAudio.context, + audioBuffer, + loopDurationSeconds + ); + loadedAudio.paddedBuffer = { + buffer: paddedBuffer, + totalDuration: loopDurationSeconds + }; + buffer = paddedBuffer; + } + } + currentSourceNode.buffer = buffer; + currentSourceNode.loop = this.audio.props.loop; + currentSourceNode.loopStart = 0; + if (loopDurationSeconds) { + currentSourceNode.loopEnd = loopDurationSeconds; + } else { + currentSourceNode.loopEnd = audioBuffer.duration; + } + let contextStartTime; + if (desiredAudioTime < 0) { + const timeFromNowToStart = -desiredAudioTime; + contextStartTime = audioContext.currentTime + timeFromNowToStart; + currentSourceNode.start(contextStartTime); + } else { + contextStartTime = audioContext.currentTime - desiredAudioTime; + currentSourceNode.start(0, desiredAudioTime); + } + loadedAudio.currentSource = { + sourceNode: currentSourceNode, + contextStartTime + }; + this.positionalAudio.setNodeSource(currentSourceNode); + } + } + clearAudio() { + var _a2; + if (this.loadedAudioState) { + if (this.loadedAudioState.loadedAudio) { + if (this.loadedAudioState.loadedAudio.mode === "LOADING") { + this.loadedAudioState.loadedAudio.abortController.abort(); + } else { + if ((_a2 = this.loadedAudioState.loadedAudio.currentSource) == null ? void 0 : _a2.sourceNode) { + this.loadedAudioState.loadedAudio.currentSource.sourceNode.stop(); + } + } + } + this.loadedAudioState = null; + } + } + updateAudio() { + if (!this.audio.isConnected) { + return; + } + const audioListener = this.getAudioListener(); + const audioContext = audioListener.context; + if (!this.audio.props.src) { + this.clearAudio(); + } else { + const contentAddress = this.audio.contentSrcToContentAddress(this.audio.props.src); + if (this.loadedAudioState && this.loadedAudioState.currentSrc === contentAddress) { + } else { + this.clearAudio(); + const abortController = new AbortController(); + this.srcLoadingInstanceManager.start( + this.audio.getLoadingProgressManager(), + contentAddress + ); + const srcLoadPromise = this.asyncLoadSourceAsset( + contentAddress, + abortController, + audioContext, + (loaded, total) => { + this.srcLoadingInstanceManager.setProgress(loaded / total); + } + ); + this.loadedAudioState = { + loadedAudio: { + mode: "LOADING", + abortController, + srcLoadPromise + }, + currentSrc: contentAddress + }; + srcLoadPromise.then((buffer) => { + var _a2; + if (this.loadedAudioState && ((_a2 = this.loadedAudioState.loadedAudio) == null ? void 0 : _a2.mode) === "LOADING" && this.loadedAudioState.loadedAudio.srcLoadPromise === srcLoadPromise) { + this.loadedAudioState.loadedAudio = { + mode: "LOADED", + buffer, + currentSource: null + }; + this.srcLoadingInstanceManager.finish(); + this.syncAudioTime(); + } + }).catch((e) => { + var _a2; + if (this.loadedAudioState && ((_a2 = this.loadedAudioState.loadedAudio) == null ? void 0 : _a2.mode) === "LOADING" && this.loadedAudioState.loadedAudio.srcLoadPromise === srcLoadPromise) { + console.error("Failed to load audio", e); + this.srcLoadingInstanceManager.error(e); + this.clearAudio(); + } + }); + } + } + this.syncAudioTime(); + } + async asyncLoadSourceAsset(contentAddress, abortController, audioContext, onProgress) { + return new Promise((resolve, reject) => { + (async () => { + if (contentAddress.startsWith("data:")) { + const base64 = contentAddress.split(",", 2)[1]; + if (!base64) { + reject(new Error("Invalid data URL")); + return; + } + let arrayBuffer; + try { + const binary = atob(base64); + const uint8Array = new Uint8Array(binary.length); + for (let i = 0; i < binary.length; i++) { + uint8Array[i] = binary.charCodeAt(i); + } + arrayBuffer = uint8Array.buffer; + } catch (e) { + console.error("Failed to decode base64 data URL", e); + return; + } + audioContext.decodeAudioData(arrayBuffer).then((audioBuffer) => { + if (abortController.signal.aborted) { + return; + } + resolve(audioBuffer); + }).catch((e) => { + console.error("Failed to decode data URI audio data", e); + }); + return; + } + const response = await fetch(contentAddress, { + signal: abortController.signal + }); + if (response.ok) { + response.arrayBuffer().then((buffer) => { + if (abortController.signal.aborted) { + return; + } + audioContext.decodeAudioData(buffer).then((audioBuffer) => { + if (abortController.signal.aborted) { + return; + } + resolve(audioBuffer); + }); + }).catch((e) => { + console.error("Failed to decode fetched audio data", e); + }); + } else { + console.error("Failed to fetch audio data", response); + } + })(); + }); + } + setSrc() { + this.updateAudio(); + } + setStartTime() { + if (this.loadedAudioState) { + this.syncAudioTime(); + } + } + setPauseTime() { + if (this.loadedAudioState) { + this.syncAudioTime(); + } + } + setLoopDuration() { + if (this.loadedAudioState) { + this.syncAudioTime(); + } + } + setLoop() { + this.updateAudio(); + } + setEnabled() { + this.updateAudio(); + } + setVolume(volume) { + this.positionalAudio.setVolume(volume); + } + setConeAngle(coneAngle, mAudioProps) { + this.positionalAudio.setDirectionalCone( + mAudioProps.coneAngle, + mAudioProps.coneFalloffAngle ?? 360, + 0 + ); + this.updateDebugVisualisation(); + } + setConeFalloffAngle(coneFalloffAngle, mAudioProps) { + this.positionalAudio.setDirectionalCone( + mAudioProps.coneAngle, + mAudioProps.coneFalloffAngle ?? 360, + 0 + ); + this.updateDebugVisualisation(); + } + setDebug() { + this.updateDebugVisualisation(); + } + dispose() { + if (this.positionalAudio) { + this.positionalAudio.context.removeEventListener( + "statechange", + this.audioContextStateChangedListener + ); + this.positionalAudio.disconnect(); + this.positionalAudio.removeFromParent(); + } + this.clearAudio(); + if (this.delayedPauseTimer) { + clearTimeout(this.delayedPauseTimer); + this.delayedPauseTimer = null; + } + this.documentTimeListener.remove(); + this.clearDebugVisualisation(); + this.srcLoadingInstanceManager.dispose(); + } + clearDebugVisualisation() { + var _a2; + if (this.audioDebugHelper) { + this.audioDebugHelper.removeFromParent(); + this.audioDebugHelper = null; + } + if (this.audioDebugConeX) { + this.audioDebugConeX.removeFromParent(); + this.audioDebugConeX = null; + (_a2 = this.audioDebugConeY) == null ? void 0 : _a2.removeFromParent(); + this.audioDebugConeY = null; + } + } + updateDebugVisualisation() { + var _a2, _b2, _c; + if (!this.audio.props.debug) { + this.clearDebugVisualisation(); + } else { + if (!this.audioDebugHelper) { + this.audioDebugHelper = new Mesh(debugAudioGeometry, debugAudioMaterial); + this.audio.getContainer().add(this.audioDebugHelper); + } + if (!this.audioDebugConeX && this.audio.props.coneAngle) { + this.audioDebugConeX = new PositionalAudioHelper(this.positionalAudio, 10); + this.positionalAudio.add(this.audioDebugConeX); + this.audioDebugConeY = new PositionalAudioHelper(this.positionalAudio, 10); + this.audioDebugConeY.rotation.z = Math.PI / 2; + this.positionalAudio.add(this.audioDebugConeY); + } + if (!this.audio.props.coneAngle && this.audioDebugConeX) { + this.audioDebugConeX.removeFromParent(); + this.audioDebugConeX = null; + (_a2 = this.audioDebugConeY) == null ? void 0 : _a2.removeFromParent(); + this.audioDebugConeY = null; + } + } + (_b2 = this.audioDebugConeX) == null ? void 0 : _b2.update(); + (_c = this.audioDebugConeY) == null ? void 0 : _c.update(); + } + getAudioListener() { + return this.audio.getScene().getGraphicsAdapter().getAudioListener(); + } +}; +var _ThreeJSChatProbe = class _ThreeJSChatProbe2 extends ChatProbeGraphics { + constructor(chatProbe) { + super(chatProbe); + this.chatProbe = chatProbe; + this.debugMesh = null; + } + disable() { + } + enable() { + } + setRange() { + this.updateDebugVisualisation(); + } + setDebug() { + this.updateDebugVisualisation(); + } + clearDebugVisualisation() { + if (this.debugMesh) { + this.debugMesh.removeFromParent(); + this.debugMesh = null; + } + } + updateDebugVisualisation() { + if (!this.chatProbe.props.debug) { + this.clearDebugVisualisation(); + } else { + if (this.chatProbe.isConnected && !this.debugMesh) { + const mesh = new Mesh(_ThreeJSChatProbe2.DebugGeometry, _ThreeJSChatProbe2.DebugMaterial); + mesh.castShadow = false; + mesh.receiveShadow = false; + this.debugMesh = mesh; + this.chatProbe.getContainer().add(this.debugMesh); + } + if (this.debugMesh) { + this.debugMesh.scale.set( + this.chatProbe.props.range, + this.chatProbe.props.range, + this.chatProbe.props.range + ); + } + } + } + dispose() { + this.clearDebugVisualisation(); + } +}; +_ThreeJSChatProbe.DebugGeometry = new SphereGeometry(1, 16, 16, 1); +_ThreeJSChatProbe.DebugMaterial = new MeshBasicMaterial({ + color: 16776960, + wireframe: true, + transparent: true, + opacity: 0.3 +}); +var ThreeJSChatProbe = _ThreeJSChatProbe; +var _ThreeJSCube = class _ThreeJSCube2 extends CubeGraphics { + constructor(cube) { + super(cube); + this.cube = cube; + this.material = new MeshStandardMaterial({ + color: new Color(cube.props.color.r, cube.props.color.g, cube.props.color.b) + }); + this.mesh = new Mesh(_ThreeJSCube2.boxGeometry, this.material); + this.mesh.castShadow = cube.props.castShadows; + this.mesh.receiveShadow = true; + this.cube.getContainer().add(this.mesh); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.mesh; + } + setColor(color) { + this.material.color = new Color(color.r, color.g, color.b); + } + setWidth(width) { + this.mesh.scale.x = width; + } + setHeight(height) { + this.mesh.scale.y = height; + } + setDepth(depth) { + this.mesh.scale.z = depth; + } + setCastShadows(castShadows) { + this.mesh.castShadow = castShadows; + } + setOpacity(opacity) { + const needsUpdate = this.material.transparent === (opacity === 1); + this.material.transparent = opacity !== 1; + this.material.needsUpdate = needsUpdate; + this.material.opacity = opacity; + } + dispose() { + } +}; +_ThreeJSCube.boxGeometry = new BoxGeometry(1, 1, 1); +var ThreeJSCube = _ThreeJSCube; +var _ThreeJSCylinder = class _ThreeJSCylinder2 extends CylinderGraphics { + constructor(cylinder) { + super(cylinder); + this.cylinder = cylinder; + this.material = new MeshStandardMaterial({ + color: new Color( + cylinder.props.color.r, + cylinder.props.color.g, + cylinder.props.color.b + ) + }); + this.mesh = new Mesh(_ThreeJSCylinder2.cylinderGeometry, this.material); + this.mesh.castShadow = cylinder.props.castShadows; + this.mesh.receiveShadow = true; + this.cylinder.getContainer().add(this.mesh); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.mesh; + } + setColor(color) { + this.material.color = new Color(color.r, color.g, color.b); + } + setRadius(radius) { + this.mesh.scale.x = radius * 2; + this.mesh.scale.z = radius * 2; + } + setHeight(height) { + this.mesh.scale.y = height; + } + setCastShadows(castShadows) { + this.mesh.castShadow = castShadows; + } + setOpacity(opacity) { + const needsUpdate = this.material.transparent === (opacity === 1); + this.material.transparent = opacity !== 1; + this.material.needsUpdate = needsUpdate; + this.material.opacity = opacity; + } + dispose() { + } +}; +_ThreeJSCylinder.cylinderGeometry = new CylinderGeometry(0.5, 0.5, 1); +var ThreeJSCylinder = _ThreeJSCylinder; +var ThreeJSDebugHelper = class extends DebugHelperGraphics { + constructor(debugHelper) { + super(debugHelper); + this.debugHelper = debugHelper; + this.debugAxes = null; + this.debugAxes = new AxesHelper(1); + this.debugHelper.getContainer().add(this.debugAxes); + } + dispose() { + if (this.debugAxes) { + this.debugHelper.getContainer().remove(this.debugAxes); + } + this.debugAxes = null; + } +}; +function setMeshToBoundingBox(mesh, minX, maxX, minY, maxY, minZ, maxZ) { + mesh.scale.set(maxX - minX, maxY - minY, maxZ - minZ); + mesh.position.set((maxX + minX) / 2, (maxY + minY) / 2, (maxZ + minZ) / 2); +} +var _ThreeJSFrame = class _ThreeJSFrame2 extends FrameGraphics { + constructor(frame) { + super(frame); + this.frame = frame; + this.debugMeshes = null; + } + setSrc() { + } + setDebug() { + this.updateDebugVisualisation(); + } + setLoadRange() { + this.updateDebugVisualisation(); + } + setUnloadRange() { + this.updateDebugVisualisation(); + } + setMinX() { + this.updateDebugVisualisation(); + } + setMaxX() { + this.updateDebugVisualisation(); + } + setMinY() { + this.updateDebugVisualisation(); + } + setMaxY() { + this.updateDebugVisualisation(); + } + setMinZ() { + this.updateDebugVisualisation(); + } + setMaxZ() { + this.updateDebugVisualisation(); + } + disable() { + } + enable() { + } + dispose() { + } + clearDebugVisualisation() { + if (this.debugMeshes) { + this.debugMeshes.debugBoxConstraintMesh.removeFromParent(); + this.debugMeshes.debugBoxLoadRangeMesh.removeFromParent(); + this.debugMeshes.debugBoxUnloadRangeMesh.removeFromParent(); + this.debugMeshes = null; + } + } + updateDebugVisualisation() { + if (!this.frame.props.debug) { + this.clearDebugVisualisation(); + } else { + if (!this.frame.isConnected) { + return; + } + if (!this.debugMeshes) { + this.debugMeshes = { + debugBoxConstraintMesh: new Mesh( + _ThreeJSFrame2.DebugBoxGeometry, + _ThreeJSFrame2.DebugConstraintMaterial + ), + debugBoxLoadRangeMesh: new Mesh( + _ThreeJSFrame2.DebugBoxGeometry, + _ThreeJSFrame2.DebugLoadRangeMaterial + ), + debugBoxUnloadRangeMesh: new Mesh( + _ThreeJSFrame2.DebugBoxGeometry, + _ThreeJSFrame2.DebugUnloadRangeMaterial + ) + }; + this.frame.getContainer().add(this.debugMeshes.debugBoxConstraintMesh); + this.frame.getContainer().add(this.debugMeshes.debugBoxLoadRangeMesh); + this.frame.getContainer().add(this.debugMeshes.debugBoxUnloadRangeMesh); + } + let boxBounds = this.frame.getDefinedBoxBounds(); + if (!boxBounds) { + boxBounds = [0, 0, 0, 0, 0, 0]; + } + const [minX, maxX, minY, maxY, minZ, maxZ] = boxBounds; + this.debugMeshes.debugBoxConstraintMesh.visible = true; + this.debugMeshes.debugBoxLoadRangeMesh.visible = true; + this.debugMeshes.debugBoxUnloadRangeMesh.visible = true; + setMeshToBoundingBox( + this.debugMeshes.debugBoxConstraintMesh, + minX, + maxX, + minY, + maxY, + minZ, + maxZ + ); + if (this.frame.props.loadRange === null) { + this.debugMeshes.debugBoxLoadRangeMesh.visible = false; + this.debugMeshes.debugBoxUnloadRangeMesh.visible = false; + } else { + this.debugMeshes.debugBoxLoadRangeMesh.visible = true; + this.debugMeshes.debugBoxUnloadRangeMesh.visible = true; + setMeshToBoundingBox( + this.debugMeshes.debugBoxLoadRangeMesh, + minX - this.frame.props.loadRange, + maxX + this.frame.props.loadRange, + minY - this.frame.props.loadRange, + maxY + this.frame.props.loadRange, + minZ - this.frame.props.loadRange, + maxZ + this.frame.props.loadRange + ); + setMeshToBoundingBox( + this.debugMeshes.debugBoxUnloadRangeMesh, + minX - this.frame.props.loadRange - this.frame.props.unloadRange, + maxX + this.frame.props.loadRange + this.frame.props.unloadRange, + minY - this.frame.props.loadRange - this.frame.props.unloadRange, + maxY + this.frame.props.loadRange + this.frame.props.unloadRange, + minZ - this.frame.props.loadRange - this.frame.props.unloadRange, + maxZ + this.frame.props.loadRange + this.frame.props.unloadRange + ); + } + } + } +}; +_ThreeJSFrame.DebugBoxGeometry = new BoxGeometry(1, 1, 1, 1, 1, 1); +_ThreeJSFrame.DebugConstraintMaterial = new MeshBasicMaterial({ + color: 16711680, + wireframe: true, + transparent: true, + opacity: 0.3 +}); +_ThreeJSFrame.DebugLoadRangeMaterial = new MeshBasicMaterial({ + color: 65280, + wireframe: true, + transparent: true, + opacity: 0.3 +}); +_ThreeJSFrame.DebugUnloadRangeMaterial = new MeshBasicMaterial({ + color: 255, + wireframe: true, + transparent: true, + opacity: 0.3 +}); +var ThreeJSFrame = _ThreeJSFrame; +var _ThreeJSImage = class _ThreeJSImage2 extends ImageGraphics { + constructor(image, updateMeshCallback) { + super(image, updateMeshCallback); + this.image = image; + this.updateMeshCallback = updateMeshCallback; + this.srcApplyPromise = null; + this.loadedImageHasTransparency = false; + this.srcLoadingInstanceManager = new LoadingInstanceManager(`${Image2.tagName}.src`); + this.material = new MeshStandardMaterial({ + color: 16777215, + transparent: this.image.props.opacity !== 1 || this.loadedImageHasTransparency, + opacity: this.image.props.opacity, + side: DoubleSide + }); + this.mesh = new Mesh(_ThreeJSImage2.planeGeometry, this.material); + this.mesh.castShadow = image.props.castShadows; + this.mesh.receiveShadow = true; + this.image.getContainer().add(this.mesh); + } + getWidthAndHeight() { + return { + width: this.mesh.scale.x, + height: this.mesh.scale.y + }; + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.mesh; + } + setWidth() { + this.updateWidthAndHeight(); + } + setHeight() { + this.updateWidthAndHeight(); + } + setCastShadows(castShadows) { + this.mesh.castShadow = castShadows; + } + setOpacity(opacity) { + const needsUpdate = this.material.transparent === (opacity === 1); + this.material.transparent = opacity !== 1; + this.material.needsUpdate = needsUpdate; + this.material.opacity = opacity; + } + setEmissive() { + this.updateMaterialEmissiveIntensity(); + } + updateMaterialEmissiveIntensity() { + if (this.material) { + const map = this.material.map; + if (this.image.props.emissive > 0) { + this.material.emissive = new Color(16777215); + this.material.emissiveMap = map; + this.material.emissiveIntensity = this.image.props.emissive; + this.material.needsUpdate = true; + } else { + this.material.emissive = new Color(0); + this.material.emissiveMap = null; + this.material.emissiveIntensity = 1; + this.material.needsUpdate = true; + } + } + } + setSrc(newValue) { + const src = (newValue || "").trim(); + const isDataUri = src.startsWith("data:image/"); + if (this.loadedImage !== null && !isDataUri) { + this.clearImage(); + } + if (!src) { + this.updateWidthAndHeight(); + this.srcLoadingInstanceManager.abortIfLoading(); + return; + } + if (!this.material) { + return; + } + if (isDataUri) { + const image = document.createElement("img"); + image.src = src; + this.applyImage(image); + this.srcLoadingInstanceManager.abortIfLoading(); + return; + } + const contentSrc = this.image.contentSrcToContentAddress(src); + const srcApplyPromise = loadImageAsPromise( + _ThreeJSImage2.imageLoader, + contentSrc, + (loaded, total) => { + this.srcLoadingInstanceManager.setProgress(loaded / total); + } + ); + this.srcLoadingInstanceManager.start(this.image.getLoadingProgressManager(), contentSrc); + this.srcApplyPromise = srcApplyPromise; + srcApplyPromise.then((image) => { + if (this.srcApplyPromise !== srcApplyPromise || !this.material) { + return; + } + this.applyImage(image); + this.srcLoadingInstanceManager.finish(); + }).catch((error) => { + console.error("Error loading image:", newValue, error); + if (this.srcApplyPromise !== srcApplyPromise || !this.material) { + return; + } + this.clearImage(); + this.srcLoadingInstanceManager.error(error); + }); + } + updateWidthAndHeight() { + const mesh = this.mesh; + const { width, height } = calculateContentSize({ + content: this.loadedImage ? { width: this.loadedImage.width, height: this.loadedImage.height } : void 0, + width: this.image.props.width, + height: this.image.props.height + }); + mesh.scale.x = width; + mesh.scale.y = height; + this.updateMeshCallback(); + } + applyImage(image) { + this.loadedImage = image; + if (!image.complete) { + image.addEventListener("load", () => { + if (this.loadedImage !== image) { + return; + } + this.applyImage(image); + }); + return; + } + this.loadedImageHasTransparency = hasTransparency(this.loadedImage); + if (!this.material) { + return; + } + if (this.loadedImageHasTransparency) { + this.material.alphaMap = new CanvasTexture(this.loadedImage); + this.material.alphaTest = 0.01; + } else { + this.material.alphaMap = null; + this.material.alphaTest = 0; + } + this.material.transparent = this.image.props.opacity !== 1 || this.loadedImageHasTransparency; + this.material.map = new CanvasTexture(this.loadedImage); + this.material.needsUpdate = true; + this.updateMaterialEmissiveIntensity(); + this.updateWidthAndHeight(); + } + clearImage() { + this.loadedImage = null; + this.srcApplyPromise = null; + if (this.material && this.material.map) { + this.material.map.dispose(); + this.material.needsUpdate = true; + this.material.map = null; + this.material.alphaMap = null; + this.material.alphaTest = 0; + } + this.updateWidthAndHeight(); + } + dispose() { + if (this.material.map) { + this.material.map.dispose(); + this.material.map = null; + } + if (this.material.emissiveMap) { + this.material.emissiveMap.dispose(); + this.material.emissiveMap = null; + } + this.material.dispose(); + this.loadedImage = null; + this.srcLoadingInstanceManager.dispose(); + } +}; +_ThreeJSImage.planeGeometry = new PlaneGeometry(1, 1); +_ThreeJSImage.imageLoader = new ImageLoader(); +var ThreeJSImage = _ThreeJSImage; +function loadImageAsPromise(imageLoader, path, onProgress) { + return new Promise((resolve, reject) => { + imageLoader.load( + path, + (image) => { + resolve(image); + }, + (xhr) => { + if (onProgress) { + onProgress(xhr.loaded, xhr.total); + } + }, + (error) => { + reject(error); + } + ); + }); +} +function hasTransparency(image) { + if (image.width === 0 || image.height === 0) { + return false; + } + const canvas = document.createElement("canvas"); + canvas.width = image.width; + canvas.height = image.height; + const ctx = canvas.getContext("2d"); + ctx.drawImage(image, 0, 0); + const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data; + for (let i = 3, n = imageData.length; i < n; i += 4) { + if (imageData[i] < 255) { + return true; + } + } + return false; +} +var _ThreeJSInteraction = class _ThreeJSInteraction2 extends InteractionGraphics { + constructor(positionProbe) { + super(positionProbe); + this.positionProbe = positionProbe; + this.debugMesh = null; + } + disable() { + } + enable() { + } + setRange() { + this.updateDebugVisualisation(); + } + setInFocus() { + } + setLineOfSight() { + } + setPriority() { + } + setPrompt() { + } + setDebug() { + this.updateDebugVisualisation(); + } + clearDebugVisualisation() { + if (this.debugMesh) { + this.debugMesh.removeFromParent(); + this.debugMesh = null; + } + } + updateDebugVisualisation() { + if (!this.positionProbe.props.debug) { + this.clearDebugVisualisation(); + } else { + if (this.positionProbe.isConnected && !this.debugMesh) { + const mesh = new Mesh( + _ThreeJSInteraction2.DebugGeometry, + _ThreeJSInteraction2.DebugMaterial + ); + mesh.castShadow = false; + mesh.receiveShadow = false; + this.debugMesh = mesh; + this.positionProbe.getContainer().add(this.debugMesh); + } + if (this.debugMesh) { + this.debugMesh.scale.set( + this.positionProbe.props.range, + this.positionProbe.props.range, + this.positionProbe.props.range + ); + } + } + } + dispose() { + this.clearDebugVisualisation(); + } +}; +_ThreeJSInteraction.DebugGeometry = new SphereGeometry(1, 16, 16, 1); +_ThreeJSInteraction.DebugMaterial = new MeshBasicMaterial({ + color: 43520, + wireframe: true, + transparent: true, + opacity: 0.3 +}); +var ThreeJSInteraction = _ThreeJSInteraction; +var _ThreeJSLabel = class _ThreeJSLabel2 extends LabelGraphics { + constructor(label) { + super(label); + this.label = label; + this.material = null; + this.canvasText = new CanvasText(); + this.material = new MeshStandardMaterial({ + transparent: false + }); + this.mesh = new Mesh(_ThreeJSLabel2.labelGeometry, this.material); + this.mesh.material = this.material; + this.mesh.scale.x = this.label.props.width; + this.mesh.scale.y = this.label.props.height; + this.mesh.castShadow = this.label.props.castShadows; + this.mesh.receiveShadow = true; + this.redrawText(); + this.label.getContainer().add(this.mesh); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.mesh; + } + setContent() { + this.redrawText(); + } + setAlignment() { + this.redrawText(); + } + setFontSize() { + this.redrawText(); + } + setPadding() { + this.redrawText(); + } + setFontColor() { + this.redrawText(); + } + setEmissive() { + this.updateMaterialEmissiveIntensity(); + } + setColor() { + this.redrawText(); + } + setWidth(width) { + this.mesh.scale.x = width; + this.redrawText(); + } + setHeight(height) { + this.mesh.scale.y = height; + this.redrawText(); + } + setCastShadows(castShadows) { + this.mesh.castShadow = castShadows; + } + redrawText() { + if (!this.material) { + return; + } + if (this.material.map) { + this.material.map.dispose(); + } + const canvas = this.canvasText.renderText(this.label.props.content, { + bold: true, + fontSize: this.label.props.fontSize * 2, + paddingPx: this.label.props.padding, + textColorRGB255A1: { + r: this.label.props.fontColor.r * 255, + g: this.label.props.fontColor.g * 255, + b: this.label.props.fontColor.b * 255, + a: this.label.props.fontColor.a ?? 1 + }, + backgroundColorRGB255A1: { + r: this.label.props.color.r * 255, + g: this.label.props.color.g * 255, + b: this.label.props.color.b * 255, + a: this.label.props.color.a ?? 1 + }, + dimensions: { + width: this.label.props.width * 200, + height: this.label.props.height * 200 + }, + alignment: this.label.props.alignment + }); + this.material.map = new CanvasTexture(canvas); + this.material.transparent = (this.label.props.color.a ?? 1) < 1; + this.updateMaterialEmissiveIntensity(); + } + updateMaterialEmissiveIntensity() { + if (this.material) { + const map = this.material.map; + if (this.label.props.emissive > 0) { + this.material.emissive = new Color(16777215); + this.material.emissiveMap = map; + this.material.emissiveIntensity = this.label.props.emissive; + this.material.needsUpdate = true; + } else { + this.material.emissive = new Color(0); + this.material.emissiveMap = null; + this.material.emissiveIntensity = 1; + this.material.needsUpdate = true; + } + } + } + dispose() { + this.mesh.geometry.dispose(); + if (this.material) { + if (this.material.map) { + this.material.map.dispose(); + } + this.material.dispose(); + this.material = null; + } + } +}; +_ThreeJSLabel.labelGeometry = new PlaneGeometry(1, 1); +var ThreeJSLabel = _ThreeJSLabel; +var debugSphereSize = 0.25; +var ThreeJSLight = class extends LightGraphics { + constructor(light) { + super(light); + this.light = light; + this.createLight(); + } + createLight() { + if (this.threeLight) { + this.threeLight.removeFromParent(); + } + const { r, g, b } = this.light.props.color; + const color = new Color(r, g, b); + switch (this.light.props.type) { + case LightTypes.spotlight: { + const light = new SpotLight( + color, + this.light.props.intensity, + this.light.props.distance ?? void 0, + MathUtils.degToRad(this.light.props.angleDeg) + ); + const target = new Object3D(); + target.position.set(0, -1, 0); + light.position.set(0, 0, 0); + light.add(target); + light.target = target; + this.threeLight = light; + break; + } + case LightTypes.point: + this.threeLight = new PointLight( + color, + this.light.props.intensity, + this.light.props.distance ?? void 0 + ); + break; + } + if (this.threeLight.shadow) { + this.threeLight.castShadow = this.light.props.castShadows; + this.threeLight.shadow.mapSize.width = 512; + this.threeLight.shadow.mapSize.height = 512; + if (this.threeLight.shadow.camera instanceof PerspectiveCamera) { + this.threeLight.shadow.camera.near = 0.5; + this.threeLight.shadow.camera.far = 500; + } + this.threeLight.shadow.bias = -1e-3; + this.threeLight.shadow.normalBias = 0.01; + const d = 10; + const c = this.threeLight.shadow.camera; + c.left = -d; + c.right = d; + c.top = d; + c.bottom = -d; + } + this.threeLight.intensity = this.light.props.intensity; + this.light.getContainer().add(this.threeLight); + if (this.threeLightHelper) { + this.makeLightHelper(); + } + if (!this.light.props.enabled) { + this.threeLight.visible = false; + if (this.threeLightHelper) { + this.threeLightHelper.visible = false; + } + } + } + makeLightHelper() { + if (this.threeLightHelper) { + this.threeLightHelper.removeFromParent(); + this.threeLightHelper = null; + } + if (this.light instanceof PointLight) { + this.threeLightHelper = new PointLightHelper(this.light, debugSphereSize); + } else if (this.light instanceof SpotLight) { + this.threeLightHelper = new SpotLightHelper(this.light); + } + if (this.threeLightHelper) { + this.light.getContainer().add(this.threeLightHelper); + this.threeLightHelper.matrix = this.threeLight.matrix; + this.threeLightHelper.visible = this.threeLight.visible; + } + } + disable() { + } + enable() { + } + setEnabled(enabled) { + this.threeLight.visible = enabled; + if (this.threeLightHelper) { + this.threeLightHelper.visible = enabled; + } + } + setCastShadows(castShadows) { + this.threeLight.castShadow = castShadows; + } + setAngle(angle) { + if (this.threeLight instanceof SpotLight) { + this.threeLight.angle = MathUtils.degToRad(angle); + } + } + setIntensity(intensity) { + this.threeLight.intensity = intensity; + } + setDistance(distance) { + this.threeLight.distance = distance; + } + setType() { + this.createLight(); + } + setDebug(debug) { + if (debug && !this.threeLightHelper) { + this.makeLightHelper(); + } else if (!debug && this.threeLightHelper) { + this.threeLightHelper.removeFromParent(); + this.threeLightHelper = null; + } + } + setColor(color) { + this.threeLight.color.set(new Color(color.r, color.g, color.b)); + if (this.threeLightHelper) { + this.threeLightHelper.color = new Color(color.r, color.g, color.b); + } + } + dispose() { + this.light.getContainer().remove(this.threeLight); + if (this.threeLightHelper) { + this.threeLightHelper.removeFromParent(); + } + } +}; +var ThreeJSLink = class extends LinkGraphics { + constructor(link) { + super(link); + this.link = link; + } + disable() { + } + enable() { + } + setHref() { + } + setTarget() { + } + dispose() { + } +}; +var ThreeJSMElement = class extends MElementGraphics { + constructor(element) { + super(element); + this.element = element; + this.currentParentContainer = null; + this.container = new Group(); + this.container.name = this.constructor.name; + this.container[MELEMENT_PROPERTY_NAME] = element; + if (this.currentParentContainer !== null) { + throw new Error("Already connected to a parent"); + } + const mElementParent = this.element.getMElementParent(); + if (mElementParent) { + this.currentParentContainer = mElementParent.getContainer(); + this.currentParentContainer.add(this.container); + return; + } + const scene = this.element.getScene(); + this.currentParentContainer = scene.getRootContainer(); + this.currentParentContainer.add(this.container); + } + getContainer() { + return this.container; + } + dispose() { + if (this.currentParentContainer === null) { + throw new Error("Was not connected to a parent"); + } + this.currentParentContainer.remove(this.container); + this.currentParentContainer = null; + } +}; +var _ThreeJSModel = class _ThreeJSModel2 extends ModelGraphics { + constructor(model, updateMeshCallback) { + super(model, updateMeshCallback); + this.model = model; + this.updateMeshCallback = updateMeshCallback; + this.srcLoadingInstanceManager = new LoadingInstanceManager(`${Model.tagName}.src`); + this.animLoadingInstanceManager = new LoadingInstanceManager(`${Model.tagName}.anim`); + this.latestSrcModelPromise = null; + this.latestAnimPromise = null; + this.socketChildrenByBone = /* @__PURE__ */ new Map(); + this.attachments = /* @__PURE__ */ new Map(); + this.registeredParentAttachment = null; + this.debugBoundingBox = null; + this.loadedState = null; + this.animState = null; + this.documentTimeTickListener = null; + } + hasLoadedModel() { + var _a2; + return !!((_a2 = this.loadedState) == null ? void 0 : _a2.group); + } + hasLoadedAnimation() { + var _a2; + return !!((_a2 = this.animState) == null ? void 0 : _a2.appliedAnimation); + } + disable() { + } + enable() { + } + getBoundingBox() { + if (this.loadedState) { + return { + centerOffset: this.loadedState.boundingBox.centerOffset, + size: this.loadedState.boundingBox.size + }; + } + return null; + } + getCollisionElement() { + var _a2; + return ((_a2 = this.loadedState) == null ? void 0 : _a2.group) ?? new Object3D(); + } + setDebug() { + this.updateDebugVisualisation(); + } + setCastShadows(castShadows) { + if (this.loadedState) { + this.loadedState.group.traverse((object) => { + if (object.isMesh) { + const mesh = object; + mesh.castShadow = castShadows; + } + }); + } + } + setAnim(anim) { + this.resetAnimationMixer(); + this.animState = null; + for (const [attachment, animState] of this.attachments) { + if (animState) { + animState.animationMixer.stopAllAction(); + this.attachments.set(attachment, null); + } + } + if (!anim) { + this.latestAnimPromise = null; + this.animLoadingInstanceManager.abortIfLoading(); + if (this.loadedState && !this.registeredParentAttachment) { + const parent = this.model.parentElement; + if (parent instanceof Model) { + this.registeredParentAttachment = parent; + parent.modelGraphics.registerAttachment(this.model); + } + } + return; + } + if (this.registeredParentAttachment) { + this.registeredParentAttachment.modelGraphics.unregisterAttachment( + this.model + ); + this.registeredParentAttachment = null; + } + const animSrc = this.model.contentSrcToContentAddress(anim); + const animPromise = this.asyncLoadSourceAsset(animSrc, (loaded, total) => { + this.animLoadingInstanceManager.setProgress(loaded / total); + }); + this.animLoadingInstanceManager.start(this.model.getLoadingProgressManager(), animSrc); + this.latestAnimPromise = animPromise; + animPromise.then((result) => { + if (this.latestAnimPromise !== animPromise || !this.model.isConnected) { + return; + } + this.latestAnimPromise = null; + this.playAnimation(result.animations[0]); + for (const [model] of this.attachments) { + this.registerAttachment(model); + } + this.animLoadingInstanceManager.finish(); + }).catch((err2) => { + console.error("Error loading m-model.anim", err2); + this.latestAnimPromise = null; + this.animLoadingInstanceManager.error(err2); + }); + } + setAnimEnabled() { + } + setAnimLoop() { + } + setAnimStartTime() { + } + setAnimPauseTime() { + } + transformed() { + } + setSrc(src) { + if (this.loadedState !== null) { + this.loadedState.group.removeFromParent(); + if (this.registeredParentAttachment) { + this.registeredParentAttachment.modelGraphics.unregisterAttachment( + this.model + ); + this.registeredParentAttachment = null; + } + _ThreeJSModel2.disposeOfGroup(this.loadedState.group); + this.loadedState = null; + this.updateMeshCallback(); + this.updateDebugVisualisation(); + } + if (!src) { + this.srcLoadingInstanceManager.abortIfLoading(); + this.socketChildrenByBone.forEach((children) => { + children.forEach((child) => { + this.model.getContainer().add(child.getContainer()); + }); + }); + this.updateMeshCallback(); + this.updateDebugVisualisation(); + return; + } + const contentSrc = this.model.contentSrcToContentAddress(src); + const srcModelPromise = this.asyncLoadSourceAsset(contentSrc, (loaded, total) => { + this.srcLoadingInstanceManager.setProgress(loaded / total); + }); + this.srcLoadingInstanceManager.start(this.model.getLoadingProgressManager(), contentSrc); + this.latestSrcModelPromise = srcModelPromise; + srcModelPromise.then((result) => { + if (this.latestSrcModelPromise !== srcModelPromise || !this.model.isConnected) { + _ThreeJSModel2.disposeOfGroup(result.group); + return; + } + result.group.traverse((child) => { + if (child.isMesh) { + child.castShadow = this.model.props.castShadows; + child.receiveShadow = true; + } + }); + this.latestSrcModelPromise = null; + const group = result.group; + const bones = /* @__PURE__ */ new Map(); + group.traverse((object) => { + if (object instanceof Bone) { + bones.set(object.name, object); + } + }); + const boundingBox = new Box3(); + group.updateWorldMatrix(true, true); + boundingBox.expandByObject(group); + this.loadedState = { + group, + bones, + boundingBox: { + size: boundingBox.getSize(new Vector3(0, 0, 0)), + centerOffset: boundingBox.getCenter(new Vector3(0, 0, 0)) + } + }; + this.model.getContainer().add(group); + for (const [boneName, children] of this.socketChildrenByBone) { + const bone = bones.get(boneName); + if (bone) { + children.forEach((child) => { + bone.add(child.getContainer()); + }); + } + } + this.updateMeshCallback(); + const parent = this.model.parentElement; + if (parent instanceof Model) { + if (!this.latestAnimPromise && !this.animState) { + this.registeredParentAttachment = parent; + parent.modelGraphics.registerAttachment(this.model); + } + } + if (this.animState) { + this.playAnimation(this.animState.currentAnimationClip); + } + this.srcLoadingInstanceManager.finish(); + this.updateDebugVisualisation(); + }).catch((err2) => { + console.error("Error loading m-model.src", err2); + this.srcLoadingInstanceManager.error(err2); + }); + } + registerAttachment(attachment) { + let animState = null; + if (this.animState) { + const attachmentLoadedState = attachment.modelGraphics.loadedState; + if (!attachmentLoadedState) { + throw new Error("Attachment must be loaded before registering"); + } + const animationGroup = new AnimationObjectGroup(); + const animationMixer = new AnimationMixer(animationGroup); + const action = animationMixer.clipAction(this.animState.currentAnimationClip); + animState = { + animationGroup, + animationMixer, + animationAction: action + }; + animationGroup.add(attachmentLoadedState.group); + action.play(); + } + this.attachments.set(attachment, animState); + } + unregisterAttachment(attachment) { + const attachmentState = this.attachments.get(attachment); + if (attachmentState) { + attachmentState.animationMixer.stopAllAction(); + } + this.attachments.delete(attachment); + } + updateDebugVisualisation() { + if (!this.model.props.debug) { + this.clearDebugVisualisation(); + } else { + if (!this.debugBoundingBox) { + this.debugBoundingBox = new Mesh( + _ThreeJSModel2.DebugBoundingBoxGeometry, + _ThreeJSModel2.DebugBoundingBoxMaterial + ); + this.model.getContainer().add(this.debugBoundingBox); + } + if (this.loadedState) { + const boundingBox = this.loadedState.boundingBox; + if (boundingBox.centerOffset) { + this.debugBoundingBox.position.copy(boundingBox.centerOffset); + } else { + this.debugBoundingBox.position.set(0, 0, 0); + } + this.debugBoundingBox.scale.copy(boundingBox.size); + } else { + this.debugBoundingBox.scale.set(0, 0, 0); + } + } + } + clearDebugVisualisation() { + if (this.debugBoundingBox) { + this.debugBoundingBox.removeFromParent(); + this.debugBoundingBox = null; + } + } + async asyncLoadSourceAsset(url, onProgress) { + return await _ThreeJSModel2.modelLoader.load(url, onProgress); + } + resetAnimationMixer() { + if (this.documentTimeTickListener) { + this.documentTimeTickListener.remove(); + this.documentTimeTickListener = null; + } + if (this.animState) { + const appliedAnimation = this.animState.appliedAnimation; + if (appliedAnimation) { + appliedAnimation.animationMixer.stopAllAction(); + } + this.animState.appliedAnimation = null; + } + } + registerSocketChild(child, socketName) { + let children = this.socketChildrenByBone.get(socketName); + if (!children) { + children = /* @__PURE__ */ new Set(); + this.socketChildrenByBone.set(socketName, children); + } + children.add(child); + if (this.loadedState) { + const bone = this.loadedState.bones.get(socketName); + if (bone) { + bone.add(child.getContainer()); + } else { + this.model.getContainer().add(child.getContainer()); + } + } + } + unregisterSocketChild(child, socketName, addToRoot = true) { + const socketChildren = this.socketChildrenByBone.get(socketName); + if (socketChildren) { + socketChildren.delete(child); + if (addToRoot) { + this.model.getContainer().add(child.getContainer()); + } + if (socketChildren.size === 0) { + this.socketChildrenByBone.delete(socketName); + } + } + } + triggerSocketedChildrenTransformed() { + this.socketChildrenByBone.forEach((children) => { + children.forEach((child) => { + if (child instanceof TransformableElement) { + child.didUpdateTransformation(); + } + }); + }); + } + playAnimation(anim) { + this.resetAnimationMixer(); + this.animState = { + currentAnimationClip: anim, + appliedAnimation: null + }; + const animationGroup = new AnimationObjectGroup(); + const animationMixer = new AnimationMixer(animationGroup); + const action = animationMixer.clipAction(anim); + this.animState.appliedAnimation = { + animationGroup, + animationMixer, + animationAction: action + }; + if (this.loadedState) { + animationGroup.add(this.loadedState.group); + } + action.play(); + if (!this.documentTimeTickListener) { + this.documentTimeTickListener = this.model.addDocumentTimeTickListener( + (documentTime) => { + this.updateAnimation(documentTime); + } + ); + } + } + updateAnimation(docTimeMs, force = false) { + var _a2, _b2; + if (this.animState) { + if (!this.model.props.animEnabled && this.animState.appliedAnimation) { + this.resetAnimationMixer(); + this.triggerSocketedChildrenTransformed(); + } else { + if (!this.animState.appliedAnimation) { + this.playAnimation(this.animState.currentAnimationClip); + } + let animationTimeMs = docTimeMs - this.model.props.animStartTime; + if (docTimeMs < this.model.props.animStartTime) { + animationTimeMs = 0; + } else if (this.model.props.animPauseTime !== null) { + if (docTimeMs > this.model.props.animPauseTime) { + animationTimeMs = this.model.props.animPauseTime - this.model.props.animStartTime; + } + } + const clip = this.animState.currentAnimationClip; + if (clip !== null) { + if (!this.model.props.animLoop) { + if (animationTimeMs > clip.duration * 1e3) { + animationTimeMs = clip.duration * 1e3; + } + } + } + for (const [model, attachmentState] of this.attachments) { + if (attachmentState) { + attachmentState.animationMixer.setTime(animationTimeMs / 1e3); + model.modelGraphics.triggerSocketedChildrenTransformed(); + } + } + if (force) { + (_a2 = this.animState.appliedAnimation) == null ? void 0 : _a2.animationMixer.setTime((animationTimeMs + 1) / 1e3); + } + (_b2 = this.animState.appliedAnimation) == null ? void 0 : _b2.animationMixer.setTime(animationTimeMs / 1e3); + this.triggerSocketedChildrenTransformed(); + } + } + } + dispose() { + var _a2, _b2; + if (this.documentTimeTickListener) { + this.documentTimeTickListener.remove(); + this.documentTimeTickListener = null; + } + if (this.registeredParentAttachment) { + (_b2 = (_a2 = this.registeredParentAttachment) == null ? void 0 : _a2.modelGraphics) == null ? void 0 : _b2.unregisterAttachment( + this.model + ); + this.registeredParentAttachment = null; + } + if (this.loadedState) { + this.loadedState.group.removeFromParent(); + _ThreeJSModel2.disposeOfGroup(this.loadedState.group); + this.loadedState = null; + } + this.clearDebugVisualisation(); + this.animLoadingInstanceManager.dispose(); + this.srcLoadingInstanceManager.dispose(); + } + static disposeOfGroup(group) { + group.traverse((child) => { + if (child.isMesh) { + const mesh = child; + mesh.geometry.dispose(); + if (Array.isArray(mesh.material)) { + for (const material of mesh.material) { + _ThreeJSModel2.disposeOfMaterial(material); + } + } else if (mesh.material) { + _ThreeJSModel2.disposeOfMaterial(mesh.material); + } + } + }); + } + static disposeOfMaterial(material) { + material.dispose(); + for (const key of Object.keys(material)) { + const value = material[key]; + if (value && typeof value === "object" && "minFilter" in value) { + value.dispose(); + } + } + } +}; +_ThreeJSModel.modelLoader = new ModelLoader(); +_ThreeJSModel.DebugBoundingBoxGeometry = new BoxGeometry(1, 1, 1, 1, 1, 1); +_ThreeJSModel.DebugBoundingBoxMaterial = new MeshBasicMaterial({ + color: 16711680, + wireframe: true, + transparent: true, + opacity: 0.3 +}); +var ThreeJSModel = _ThreeJSModel; +var _ThreeJSPlane = class _ThreeJSPlane2 extends PlaneGraphics { + constructor(plane) { + super(plane); + this.plane = plane; + this.material = new MeshStandardMaterial({ + color: new Color(plane.props.color.r, plane.props.color.g, plane.props.color.b) + }); + this.mesh = new Mesh(_ThreeJSPlane2.planeGeometry, this.material); + this.mesh.castShadow = plane.props.castShadows; + this.mesh.receiveShadow = true; + this.plane.getContainer().add(this.mesh); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.mesh; + } + setColor(color) { + this.material.color = new Color(color.r, color.g, color.b); + } + setWidth(width) { + this.mesh.scale.x = width; + } + setHeight(height) { + this.mesh.scale.y = height; + } + setCastShadows(castShadows) { + this.mesh.castShadow = castShadows; + } + setOpacity(opacity) { + const needsUpdate = this.material.transparent === (opacity === 1); + this.material.transparent = opacity !== 1; + this.material.needsUpdate = needsUpdate; + this.material.opacity = opacity; + } + dispose() { + } +}; +_ThreeJSPlane.planeGeometry = new PlaneGeometry(1, 1); +var ThreeJSPlane = _ThreeJSPlane; +var _ThreeJSPositionProbe = class _ThreeJSPositionProbe2 extends PositionProbeGraphics { + constructor(positionProbe) { + super(positionProbe); + this.positionProbe = positionProbe; + this.debugMesh = null; + } + disable() { + } + enable() { + } + setRange() { + this.updateDebugVisualisation(); + } + setDebug() { + this.updateDebugVisualisation(); + } + clearDebugVisualisation() { + if (this.debugMesh) { + this.debugMesh.removeFromParent(); + this.debugMesh = null; + } + } + updateDebugVisualisation() { + if (!this.positionProbe.props.debug) { + this.clearDebugVisualisation(); + } else { + if (this.positionProbe.isConnected && !this.debugMesh) { + const mesh = new Mesh( + _ThreeJSPositionProbe2.DebugGeometry, + _ThreeJSPositionProbe2.DebugMaterial + ); + mesh.castShadow = false; + mesh.receiveShadow = false; + this.debugMesh = mesh; + this.positionProbe.getContainer().add(this.debugMesh); + } + if (this.debugMesh) { + this.debugMesh.scale.set( + this.positionProbe.props.range, + this.positionProbe.props.range, + this.positionProbe.props.range + ); + } + } + } + dispose() { + this.clearDebugVisualisation(); + } +}; +_ThreeJSPositionProbe.DebugGeometry = new SphereGeometry(1, 16, 16, 1); +_ThreeJSPositionProbe.DebugMaterial = new MeshBasicMaterial({ + color: 16711680, + wireframe: true, + transparent: true, + opacity: 0.3 +}); +var ThreeJSPositionProbe = _ThreeJSPositionProbe; +var ThreeJSPrompt = class extends PromptGraphics { + constructor(prompt) { + super(prompt); + this.prompt = prompt; + } + disable() { + } + enable() { + } + setMessage() { + } + setPlaceholder() { + } + setPrefill() { + } + setDebug() { + } + dispose() { + } +}; +function createReconnectingStatus() { + const canvas = new CanvasText().renderText("Reconnecting", { + bold: true, + fontSize: 32, + paddingPx: 10, + textColorRGB255A1: { + r: 255, + g: 0, + b: 0, + a: 1 + }, + backgroundColorRGB255A1: { + r: 255, + g: 255, + b: 255, + a: 1 + }, + alignment: "center" + }); + const texture = new Texture(canvas); + texture.minFilter = LinearFilter; + texture.magFilter = LinearFilter; + texture.format = RGBAFormat; + texture.needsUpdate = true; + const width = canvas.width; + const height = canvas.height; + const material = new MeshBasicMaterial({ + map: texture, + side: DoubleSide + }); + const geometry = new PlaneGeometry(width / 100, height / 100, 1, 1); + return { geometry, material, width: width / 100, height: height / 100 }; +} +var reconnectingStatus = null; +function getThreeJSReconnectingStatus() { + if (!reconnectingStatus) { + reconnectingStatus = createReconnectingStatus(); + } + return reconnectingStatus; +} +var ThreeJSRemoteDocument = class extends RemoteDocumentGraphics { + constructor(element) { + super(element); + this.element = element; + this.statusUI = null; + } + showError(showError) { + if (!showError) { + if (this.statusUI !== null) { + this.element.getContainer().remove(this.statusUI); + this.statusUI = null; + } + } else { + if (this.statusUI === null) { + const { geometry, material, height } = getThreeJSReconnectingStatus(); + const mesh = new Mesh( + geometry, + material + ); + mesh.position.set(0, height / 2, 0); + this.statusUI = mesh; + this.element.getContainer().add(this.statusUI); + } + } + } + dispose() { + } +}; +var defaultSphereWidthSegments = 16; +var defaultSphereHeightSegments = 16; +var _ThreeJSSphere = class _ThreeJSSphere2 extends SphereGraphics { + constructor(sphere) { + super(sphere); + this.sphere = sphere; + this.material = new MeshStandardMaterial({ + color: new Color(sphere.props.color.r, sphere.props.color.g, sphere.props.color.b) + }); + this.mesh = new Mesh(_ThreeJSSphere2.sphereGeometry, this.material); + this.mesh.castShadow = sphere.props.castShadows; + this.mesh.receiveShadow = true; + this.sphere.getContainer().add(this.mesh); + } + disable() { + } + enable() { + } + getCollisionElement() { + return this.mesh; + } + setColor(color) { + this.material.color = new Color(color.r, color.g, color.b); + } + setRadius(radius) { + this.mesh.scale.x = radius * 2; + this.mesh.scale.y = radius * 2; + this.mesh.scale.z = radius * 2; + } + setCastShadows(castShadows) { + this.mesh.castShadow = castShadows; + } + setOpacity(opacity) { + const needsUpdate = this.material.transparent === (opacity === 1); + this.material.transparent = opacity !== 1; + this.material.needsUpdate = needsUpdate; + this.material.opacity = opacity; + } + dispose() { + } +}; +_ThreeJSSphere.sphereGeometry = new SphereGeometry( + 0.5, + defaultSphereWidthSegments, + defaultSphereHeightSegments +); +var ThreeJSSphere = _ThreeJSSphere; +var ThreeJSTransformable = class extends TransformableGraphics { + constructor(transformableElement) { + super(transformableElement); + this.transformableElement = transformableElement; + this.socketName = null; + this.registeredSocketParent = null; + } + getWorldMatrix() { + const container = this.getContainer(); + container.updateWorldMatrix(true, false); + return new Matr4(container.matrixWorld.elements); + } + setVisible(visible) { + this.getContainer().visible = visible; + } + setSocket(socketName) { + if (this.socketName !== socketName) { + if (this.socketName !== null && this.registeredSocketParent) { + this.registeredSocketParent.unregisterSocketChild( + this.transformableElement, + this.socketName + ); + } + this.socketName = socketName; + if (socketName !== null) { + this.registerWithParentModel(socketName); + } + } else { + this.socketName = socketName; + } + } + registerWithParentModel(socketName) { + var _a2; + if ((_a2 = this.transformableElement.parentElement) == null ? void 0 : _a2.isModel) { + const parentModel = this.transformableElement.parentElement; + this.registeredSocketParent = parentModel.modelGraphics; + this.registeredSocketParent.registerSocketChild(this.transformableElement, socketName); + } + } + getContainer() { + return this.transformableElement.getContainer(); + } + setX(x) { + this.getContainer().position.x = x; + } + setY(y) { + this.getContainer().position.y = y; + } + setZ(z) { + this.getContainer().position.z = z; + } + setRotationX(rotationX) { + this.getContainer().rotation.x = rotationX * MathUtils.DEG2RAD; + } + setRotationY(rotationY) { + this.getContainer().rotation.y = rotationY * MathUtils.DEG2RAD; + } + setRotationZ(rotationZ) { + this.getContainer().rotation.z = rotationZ * MathUtils.DEG2RAD; + } + setScaleX(scaleX) { + this.getContainer().scale.x = scaleX; + } + setScaleY(scaleY) { + this.getContainer().scale.y = scaleY; + } + setScaleZ(scaleZ) { + this.getContainer().scale.z = scaleZ; + } + dispose() { + if (this.socketName && this.registeredSocketParent !== null) { + this.registeredSocketParent.unregisterSocketChild( + this.transformableElement, + this.socketName, + false + ); + } + } +}; +var audioRefDistance2 = 1; +var audioRolloffFactor2 = 1; +var disabledVideoMaterial = new MeshStandardMaterial({ + color: 0, + side: DoubleSide +}); +var ThreeJSVideo = class extends VideoGraphics { + constructor(video, updateMeshCallback) { + super(video, updateMeshCallback); + this.video = video; + this.updateMeshCallback = updateMeshCallback; + this.videoSource = null; + this.loadedVideoState = null; + const geometry = new PlaneGeometry(1, 1, 1, 1); + this.videoMaterial = new MeshStandardMaterial({ + color: 16777215, + transparent: false, + side: DoubleSide + }); + this.mesh = new Mesh(geometry, disabledVideoMaterial); + this.mesh.castShadow = true; + this.mesh.receiveShadow = false; + this.video.getContainer().add(this.mesh); + } + getWidthAndHeight() { + return { + width: this.mesh.scale.x, + height: this.mesh.scale.y + }; + } + syncVideoTime() { + if (this.loadedVideoState) { + const videoTag = this.loadedVideoState.video; + if (videoTag.readyState === 0) { + return; + } + const audioListener = this.getAudioListener(); + const audioContext = audioListener.context; + if (audioContext.state === "running") { + videoTag.muted = false; + } + if (this.video.isDisabled()) { + videoTag.muted = true; + } + if (this.videoSource) { + this.videoSource.syncVideoSource(this.video.props); + } + } + } + getAudioListener() { + return this.video.getScene().getGraphicsAdapter().getAudioListener(); + } + enable() { + this.updateVideo(); + } + disable() { + this.updateVideo(); + } + getCollisionElement() { + return this.mesh; + } + setSrc() { + this.updateVideo(); + } + setWidth() { + this.updateWidthAndHeight(); + } + setHeight() { + this.updateWidthAndHeight(); + } + setEnabled() { + this.updateVideo(); + } + setCastShadows() { + this.updateVideo(); + } + setLoop() { + this.updateVideo(); + } + setVolume() { + if (this.loadedVideoState) { + this.loadedVideoState.audio.setVolume(this.video.props.volume); + } + } + setEmissive() { + this.updateVideo(); + this.updateMaterialEmissiveIntensity(); + } + setStartTime() { + this.updateVideo(); + } + setPauseTime() { + this.updateVideo(); + } + updateVideo() { + if (!this.video.isConnected) { + return; + } + if (!this.video.props.enabled) { + this.clearSource(); + return; + } + if (!this.video.props.src) { + this.clearSource(); + } else { + const contentAddress = this.video.contentSrcToContentAddress(this.video.props.src); + if (this.videoSource === null || this.videoSource.getContentAddress() !== contentAddress) { + this.clearSource(); + const video = document.createElement("video"); + video.playsInline = true; + video.muted = true; + video.autoplay = true; + video.crossOrigin = "anonymous"; + const audioListener = this.getAudioListener(); + const audioContext = audioListener.context; + const audio = new PositionalAudio(audioListener); + audio.setMediaElementSource(video); + audio.setVolume(this.video.props.volume); + audio.setRefDistance(audioRefDistance2); + audio.setRolloffFactor(audioRolloffFactor2); + this.loadedVideoState = { + video, + audio, + videoTexture: null + }; + this.updateMaterialEmissiveIntensity(); + this.video.getContainer().add(audio); + const url = new URL(contentAddress); + if (WHEPVideoSource.isWHEPURL(url)) { + this.videoSource = new WHEPVideoSource(url, video); + } else { + this.videoSource = new StaticFileVideoSource(url, video, this.video.props, () => { + return this.video.getDocumentTime(); + }); + } + audioContext.addEventListener("statechange", () => { + this.syncVideoTime(); + }); + video.addEventListener("loadeddata", () => { + if (!this.loadedVideoState || this.loadedVideoState.video !== video) { + return; + } + const videoTexture = new VideoTexture(video); + this.videoMaterial.map = videoTexture; + this.videoMaterial.needsUpdate = true; + this.mesh.material = this.videoMaterial; + this.loadedVideoState.videoTexture = videoTexture; + this.syncVideoTime(); + this.updateWidthAndHeight(); + this.updateMaterialEmissiveIntensity(); + }); + } + } + if (this.videoSource) { + this.syncVideoTime(); + } + } + clearSource() { + if (this.videoSource) { + this.videoSource.dispose(); + this.videoSource = null; + } + if (this.loadedVideoState) { + const tag = this.loadedVideoState.video; + tag.pause(); + tag.src = ""; + tag.load(); + this.loadedVideoState = null; + this.mesh.material = disabledVideoMaterial; + this.updateWidthAndHeight(); + } + } + dispose() { + this.clearSource(); + if (this.loadedVideoState) { + this.loadedVideoState = null; + } + } + updateMaterialEmissiveIntensity() { + if (this.loadedVideoState && this.loadedVideoState.videoTexture) { + if (this.video.props.emissive > 0) { + this.videoMaterial.emissive = new Color(16777215); + this.videoMaterial.emissiveMap = this.loadedVideoState.videoTexture; + this.videoMaterial.emissiveIntensity = this.video.props.emissive; + this.videoMaterial.needsUpdate = true; + } else { + this.videoMaterial.emissive = new Color(0); + this.videoMaterial.emissiveMap = null; + this.videoMaterial.emissiveIntensity = 1; + this.videoMaterial.needsUpdate = true; + } + } + } + updateWidthAndHeight() { + const mesh = this.mesh; + const { width, height } = calculateContentSize({ + content: this.loadedVideoState ? { + width: this.loadedVideoState.video.videoWidth, + height: this.loadedVideoState.video.videoHeight + } : void 0, + width: this.video.props.width, + height: this.video.props.height + }); + mesh.scale.x = width; + mesh.scale.y = height; + this.updateMeshCallback(); + } +}; +var mouseMovePixelsThreshold = 10; +var mouseMoveTimeThresholdMilliseconds = 500; +var ThreeJSClickTrigger = class _ThreeJSClickTrigger { + constructor(clickTarget, rootContainer, camera) { + this.clickTarget = clickTarget; + this.rootContainer = rootContainer; + this.camera = camera; + this.eventHandlerCollection = new EventHandlerCollection(); + this.mouseDownTime = null; + this.mouseMoveDelta = 0; + this.raycaster = new Raycaster(); + this.eventHandlerCollection.add(clickTarget, "mousedown", this.handleMouseDown.bind(this)); + this.eventHandlerCollection.add(clickTarget, "mouseup", this.handleMouseUp.bind(this)); + this.eventHandlerCollection.add(clickTarget, "mousemove", this.handleMouseMove.bind(this)); + } + static init(clickTarget, rootContainer, camera) { + return new _ThreeJSClickTrigger(clickTarget, rootContainer, camera); + } + handleMouseDown() { + this.mouseDownTime = Date.now(); + this.mouseMoveDelta = 0; + } + handleMouseUp(event) { + if (!this.mouseDownTime) { + return; + } + const duration = Date.now() - this.mouseDownTime; + this.mouseDownTime = null; + if (this.mouseMoveDelta < mouseMovePixelsThreshold && duration < mouseMoveTimeThresholdMilliseconds) { + this.handleClick(event); + } + } + handleMouseMove(event) { + if (this.mouseDownTime) { + this.mouseMoveDelta += Math.abs(event.movementX) + Math.abs(event.movementY); + } + } + handleClick(event) { + if (event.detail.element) { + return; + } + let x = 0; + let y = 0; + if (!document.pointerLockElement) { + let width = window.innerWidth; + let height = window.innerHeight; + if (this.clickTarget instanceof HTMLElement) { + width = this.clickTarget.offsetWidth; + height = this.clickTarget.offsetHeight; + } + x = event.offsetX / width * 2 - 1; + y = -(event.offsetY / height * 2 - 1); + } + this.raycaster.setFromCamera(new Vector2(x, y), this.camera); + const intersections = this.raycaster.intersectObject(this.rootContainer, true); + if (intersections.length > 0) { + for (const intersection of intersections) { + let obj = intersection.object; + while (obj) { + if (this.isMaterialIgnored(obj)) { + break; + } + const mElement = MElement.getMElementFromObject(obj); + if (mElement && mElement instanceof TransformableElement && mElement.isClickable()) { + const elementRelative = getRelativePositionAndRotationRelativeToObject( + { + position: intersection.point, + rotation: { + x: 0, + y: 0, + z: 0 + } + }, + mElement + ); + mElement.dispatchEvent( + new CustomEvent("click", { + bubbles: true, + detail: { + position: { + ...elementRelative.position + } + } + }) + ); + return; + } + obj = obj.parent; + } + } + } + } + dispose() { + this.eventHandlerCollection.clear(); + } + isMaterialIgnored(obj) { + const mesh = obj; + if (mesh) { + if (mesh.material && mesh.material.transparent && mesh.material.opacity < 1 || mesh.material && mesh.material.wireframe || mesh.material && mesh.material.wireframe || mesh.material && mesh.material.wireframe || mesh.material && mesh.material.wireframe || mesh.material && mesh.material.isLineBasicMaterial) { + return true; + } + } + return false; + } +}; +var ThreeJSGraphicsInterface = { + MElementGraphicsInterface: (element) => new ThreeJSMElement(element), + MMLDebugHelperGraphicsInterface: (debugHelper) => new ThreeJSDebugHelper(debugHelper), + MMLAudioGraphicsInterface: (element) => new ThreeJSAudio(element), + MMLChatProbeGraphicsInterface: (element) => new ThreeJSChatProbe(element), + MMLCubeGraphicsInterface: (element) => new ThreeJSCube(element), + MMLCylinderGraphicsInterface: (element) => new ThreeJSCylinder(element), + MMLFrameGraphicsInterface: (element) => new ThreeJSFrame(element), + MMLImageGraphicsInterface: (element, updateMeshCallback) => new ThreeJSImage(element, updateMeshCallback), + MMLInteractionGraphicsInterface: (element) => new ThreeJSInteraction(element), + MMLLabelGraphicsInterface: (element) => new ThreeJSLabel(element), + MMLLightGraphicsInterface: (element) => new ThreeJSLight(element), + MMLLinkGraphicsInterface: (element) => new ThreeJSLink(element), + MMLModelGraphicsInterface: (element, updateMeshCallback) => new ThreeJSModel(element, updateMeshCallback), + MMLPlaneGraphicsInterface: (element) => new ThreeJSPlane(element), + MMLPositionProbeGraphicsInterface: (element) => new ThreeJSPositionProbe(element), + MMLPromptGraphicsInterface: (element) => new ThreeJSPrompt(element), + MMLSphereGraphicsInterface: (element) => new ThreeJSSphere(element), + MMLTransformableGraphicsInterface: (element) => new ThreeJSTransformable(element), + MMLVideoGraphicsInterface: (element, updateMeshCallback) => new ThreeJSVideo(element, updateMeshCallback), + RemoteDocumentGraphicsInterface: (element) => new ThreeJSRemoteDocument(element) +}; +var _ThreeJSInteractionAdapter = class _ThreeJSInteractionAdapter2 { + static interactionShouldShowDistance(interaction, camera, scene) { + const worldPos = interaction.getContainer().getWorldPosition(_ThreeJSInteractionAdapter2.worldPos); + const cameraPos = camera.position; + const distance = cameraPos.distanceTo(worldPos); + if (distance > interaction.props.range) { + return null; + } + if (interaction.props.inFocus) { + _ThreeJSInteractionAdapter2.matrix.multiplyMatrices( + camera.projectionMatrix, + camera.matrixWorldInverse + ); + _ThreeJSInteractionAdapter2.frustum.setFromProjectionMatrix(_ThreeJSInteractionAdapter2.matrix); + if (!_ThreeJSInteractionAdapter2.frustum.containsPoint(worldPos)) { + return null; + } + } + if (interaction.props.lineOfSight) { + const raycastResults = _ThreeJSInteractionAdapter2.getRaycastResults( + cameraPos, + worldPos, + distance, + scene + ); + if (raycastResults.length > 0) { + for (const result of raycastResults) { + if (!_ThreeJSInteractionAdapter2.hasAncestor(result.object, interaction.getContainer())) { + return null; + } + } + } + } + return distance; + } + static getRaycastResults(a, b, distance, scene) { + _ThreeJSInteractionAdapter2.direction.copy(b); + _ThreeJSInteractionAdapter2.direction.sub(a); + _ThreeJSInteractionAdapter2.direction.normalize(); + _ThreeJSInteractionAdapter2.raycaster.set(a, _ThreeJSInteractionAdapter2.direction); + _ThreeJSInteractionAdapter2.raycaster.near = 0; + _ThreeJSInteractionAdapter2.raycaster.far = distance; + _ThreeJSInteractionAdapter2.intersections.length = 0; + _ThreeJSInteractionAdapter2.raycaster.intersectObject( + scene, + true, + _ThreeJSInteractionAdapter2.intersections + ); + return _ThreeJSInteractionAdapter2.intersections; + } + static hasAncestor(object, ancestor) { + let parent = object.parent; + while (parent !== null) { + if (parent === ancestor) { + return true; + } + parent = parent.parent; + } + return false; + } +}; +_ThreeJSInteractionAdapter.worldPos = new Vector3(); +_ThreeJSInteractionAdapter.matrix = new Matrix4(); +_ThreeJSInteractionAdapter.frustum = new Frustum(); +_ThreeJSInteractionAdapter.raycaster = new Raycaster(); +_ThreeJSInteractionAdapter.intersections = new Array(); +_ThreeJSInteractionAdapter.direction = new Vector3(); +var ThreeJSInteractionAdapter = _ThreeJSInteractionAdapter; + +// ../../node_modules/@mml-io/mml-web-threejs-standalone/build/index.js +var up = { x: 0, y: 1, z: 0 }; +var right = { x: 1, y: 0, z: 0 }; +var quaternion = new Quat(); +var qPitch = new Quat(); +var qYaw = new Quat(); +var tempVector = new Vector3(); +var ThreeJSDragFlyCameraControls = class { + constructor(camera, domElement, speed = 15) { + this.camera = camera; + this.domElement = domElement; + this.speed = speed; + this.type = "drag-fly"; + this.enabled = false; + this.yaw = 0; + this.pitch = 0; + this.forward = false; + this.backward = false; + this.left = false; + this.right = false; + this.up = false; + this.down = false; + this.minPolarAngle = 0 * (Math.PI / 180); + this.maxPolarAngle = 180 * (Math.PI / 180); + this.invertedMouseY = false; + this.eventHandlerCollection = new EventHandlerCollection(); + this.mouseDown = false; + this.domElement.style.userSelect = "none"; + } + fitContent(boundingBox) { + const center = { + x: (boundingBox.min.x + boundingBox.max.x) / 2, + y: (boundingBox.min.y + boundingBox.max.y) / 2, + z: (boundingBox.min.z + boundingBox.max.z) / 2 + }; + const size = { + x: boundingBox.max.x - boundingBox.min.x, + y: boundingBox.max.y - boundingBox.min.y, + z: boundingBox.max.z - boundingBox.min.z + }; + const fov2 = this.camera.fov; + const maximumDimension = Math.max(size.x, size.y, size.z); + const distance = Math.abs(maximumDimension / 4 / Math.tan(fov2 / 2)); + const currentCameraRay = this.camera.getWorldDirection(new Vector3()).normalize(); + currentCameraRay.multiplyScalar(-distance); + this.camera.position.set( + center.x + currentCameraRay.x, + center.y + currentCameraRay.y, + center.z + currentCameraRay.z + ); + this.setLookAt(center.x, center.y, center.z); + } + enable() { + if (this.enabled) { + return; + } + this.enabled = true; + this.eventHandlerCollection.add(document, "keydown", this.onKeyDown.bind(this)); + this.eventHandlerCollection.add(document, "keyup", this.onKeyUp.bind(this)); + this.eventHandlerCollection.add(window, "blur", this.onBlur.bind(this)); + this.eventHandlerCollection.add(document, "mousemove", this.onMouseMove.bind(this)); + this.eventHandlerCollection.add(this.domElement, "mousedown", this.onMouseDown.bind(this)); + this.eventHandlerCollection.add(document, "mouseup", this.onMouseUp.bind(this)); + this.eventHandlerCollection.add(document, "wheel", this.onMouseWheel.bind(this)); + } + disable() { + if (!this.enabled) { + return; + } + this.eventHandlerCollection.clear(); + this.enabled = false; + } + setInvert(invert) { + this.invertedMouseY = invert; + } + dispose() { + this.disable(); + } + update(dt) { + if (!this.mouseDown) { + return; + } + tempVector.set( + (Number(this.right) - Number(this.left)) * dt * 30, + (Number(this.up) - Number(this.down)) * dt * 30, + (Number(this.backward) - Number(this.forward)) * dt * 30 + ); + tempVector.applyQuaternion(this.camera.quaternion); + this.camera.position.add(tempVector); + } + onKeyDown(event) { + if (!this.mouseDown) { + return; + } + switch (event.code) { + case "ArrowUp": + case "KeyW": + this.forward = true; + break; + case "ArrowLeft": + case "KeyA": + this.left = true; + break; + case "ArrowDown": + case "KeyS": + this.backward = true; + break; + case "ArrowRight": + case "KeyD": + this.right = true; + break; + case "Space": + this.up = true; + break; + case "ShiftLeft": + this.down = true; + break; + } + event.preventDefault(); + } + onKeyUp(event) { + switch (event.code) { + case "ArrowUp": + case "KeyW": + this.forward = false; + break; + case "ArrowLeft": + case "KeyA": + this.left = false; + break; + case "ArrowDown": + case "KeyS": + this.backward = false; + break; + case "ArrowRight": + case "KeyD": + this.right = false; + break; + case "Space": + this.up = false; + break; + case "ShiftLeft": + this.down = false; + break; + } + } + onBlur() { + this.mouseDown = false; + this.forward = false; + this.left = false; + this.backward = false; + this.right = false; + this.up = false; + this.down = false; + } + onMouseDown() { + this.mouseDown = true; + } + setCameraPosition(x, y, z) { + this.camera.position.set(x, y, z); + } + setLookAt(x, y, z) { + this.camera.lookAt(new Vector3(x, y, z)); + const q1 = new Quat().setFromEulerXYZ(this.camera.rotation); + const { yaw, pitch } = getYawPitchFromQuaternion(q1); + this.yaw = yaw; + this.pitch = pitch; + this.updateCameraFromYawAndPitch(); + } + onMouseMove(event) { + if (!this.mouseDown) { + return; + } + const movementX = event.movementX; + let movementY = event.movementY; + if (this.invertedMouseY) { + movementY *= -1; + } + this.yaw += movementX * -2e-3; + this.pitch += movementY * -2e-3; + this.updateCameraFromYawAndPitch(); + } + updateCameraFromYawAndPitch() { + this.yaw = this.yaw % (Math.PI * 2); + this.pitch = this.pitch % (Math.PI * 2); + this.pitch = Math.max( + Math.PI / 2 - this.maxPolarAngle, + Math.min(Math.PI / 2 - this.minPolarAngle, this.pitch) + ); + qPitch.setFromAxisAngle(right, this.pitch); + qYaw.setFromAxisAngle(up, this.yaw); + quaternion.set(0, 0, 0, 1); + quaternion.multiply(qYaw); + quaternion.multiply(qPitch); + this.camera.quaternion.set(quaternion.x, quaternion.y, quaternion.z, quaternion.w); + } + onMouseUp() { + this.mouseDown = false; + } + onMouseWheel(event) { + if (!this.mouseDown) { + return; + } + this.speed -= event.deltaY * 0.1; + this.speed = Math.max(5, Math.min(this.speed, 1e3)); + } +}; +function clamp2(value, min, max2) { + return Math.max(min, Math.min(max2, value)); +} +function getYawPitchFromQuaternion(quaternion2) { + const matr4 = new Matr4(); + matr4.setRotationFromQuaternion(quaternion2); + const d = matr4.data; + const m11 = d[0]; + const m13 = d[8]; + const m23 = d[9]; + const m31 = d[2]; + const m33 = d[10]; + const yaw = Math.abs(m23) < 0.9999999 ? Math.atan2(m13, m33) : Math.atan2(-m31, m11); + const pitch = Math.asin(-clamp2(m23, -1, 1)); + return { yaw, pitch }; +} +var tempSpherical = new Spherical(); +var ThreeJSOrbitCameraControls = class { + constructor(camera, domElement, distance = 15) { + this.camera = camera; + this.domElement = domElement; + this.distance = distance; + this.type = "orbit"; + this.enabled = false; + this.degreesPerSecond = 10; + this.yaw = 0; + this.pitch = Math.PI * 0.4; + this.minPolarAngle = -89.9999 * (Math.PI / 180); + this.maxPolarAngle = 89.9999 * (Math.PI / 180); + this.invertedMouseY = false; + this.eventHandlerCollection = new EventHandlerCollection(); + this.mouseDown = false; + this.cameraLookAt = new Vector3(); + this.domElement.style.userSelect = "none"; + } + fitContent(boundingBox) { + const center = { + x: (boundingBox.min.x + boundingBox.max.x) / 2, + y: (boundingBox.min.y + boundingBox.max.y) / 2, + z: (boundingBox.min.z + boundingBox.max.z) / 2 + }; + const size = { + x: boundingBox.max.x - boundingBox.min.x, + y: boundingBox.max.y - boundingBox.min.y, + z: boundingBox.max.z - boundingBox.min.z + }; + const fov2 = this.camera.fov || 1; + const maximumDimension = Math.max(size.x, size.y, size.z); + this.distance = Math.abs(maximumDimension / 4 / Math.tan(fov2 / 2)); + this.setLookAt(center.x, center.y, center.z); + this.update(); + } + enable() { + if (this.enabled) { + return; + } + this.enabled = true; + this.eventHandlerCollection.add(window, "blur", this.onBlur.bind(this)); + this.eventHandlerCollection.add(document, "mousemove", this.onMouseMove.bind(this)); + this.eventHandlerCollection.add(this.domElement, "mousedown", this.onMouseDown.bind(this)); + this.eventHandlerCollection.add(document, "mouseup", this.onMouseUp.bind(this)); + this.eventHandlerCollection.add(document, "wheel", this.onMouseWheel.bind(this)); + } + disable() { + if (!this.enabled) { + return; + } + this.eventHandlerCollection.clear(); + this.enabled = false; + } + setInvert(invert) { + this.invertedMouseY = invert; + } + dispose() { + this.disable(); + } + getBaseYaw() { + return -(Date.now() / 1e3 * this.degreesPerSecond) % 360 * (Math.PI / 180); + } + update() { + const baseYaw = this.getBaseYaw(); + const yaw = baseYaw + this.yaw; + tempSpherical.set(this.distance, this.pitch, yaw); + this.camera.position.setFromSpherical(tempSpherical); + this.camera.position.add(this.cameraLookAt); + this.camera.lookAt(this.cameraLookAt.x, this.cameraLookAt.y, this.cameraLookAt.z); + } + onBlur() { + this.mouseDown = false; + } + onMouseDown() { + this.mouseDown = true; + } + setDegreesPerSecond(degreesPerSecond) { + this.degreesPerSecond = degreesPerSecond; + } + setLookAt(x, y, z) { + this.cameraLookAt.set(x, y, z); + } + setDistance(distance) { + this.distance = distance; + } + setPitchDegrees(pitch) { + this.pitch = pitch * (Math.PI / 180); + this.pitch = this.pitch % (Math.PI * 2); + } + onMouseMove(event) { + if (!this.mouseDown) { + return; + } + const movementX = event.movementX; + let movementY = event.movementY; + if (this.invertedMouseY) { + movementY *= -1; + } + this.yaw += movementX * -2e-3; + this.pitch += movementY * -2e-3; + this.yaw = this.yaw % (Math.PI * 2); + this.pitch = this.pitch % (Math.PI * 2); + this.pitch = Math.max( + Math.PI / 2 - this.maxPolarAngle, + Math.min(Math.PI / 2 - this.minPolarAngle, this.pitch) + ); + } + onMouseUp() { + this.mouseDown = false; + } + onMouseWheel(event) { + this.distance += event.deltaY * 0.1; + this.distance = Math.max(0.01, Math.min(this.distance, 1e3)); + } +}; +var StandaloneThreeJSAdapterControlsType = /* @__PURE__ */ ((StandaloneThreeJSAdapterControlsType2) => { + StandaloneThreeJSAdapterControlsType2[StandaloneThreeJSAdapterControlsType2["None"] = 0] = "None"; + StandaloneThreeJSAdapterControlsType2[StandaloneThreeJSAdapterControlsType2["DragFly"] = 1] = "DragFly"; + StandaloneThreeJSAdapterControlsType2[StandaloneThreeJSAdapterControlsType2["Orbit"] = 2] = "Orbit"; + return StandaloneThreeJSAdapterControlsType2; +})(StandaloneThreeJSAdapterControlsType || {}); +var StandaloneThreeJSAdapter = class _StandaloneThreeJSAdapter { + constructor(element, options) { + this.element = element; + this.options = options; + this.controls = null; + } + static async create(element, options) { + const adapter = new _StandaloneThreeJSAdapter(element, options); + await adapter.init(); + return adapter; + } + interactionShouldShowDistance(interaction) { + return ThreeJSInteractionAdapter.interactionShouldShowDistance( + interaction, + this.camera, + this.threeScene + ); + } + getThreeScene() { + return this.threeScene; + } + getRenderer() { + return this.renderer; + } + setCameraFOV(fov2) { + this.camera.fov = fov2; + this.camera.updateProjectionMatrix(); + } + getGraphicsAdapterFactory() { + return ThreeJSGraphicsInterface; + } + async init() { + return new Promise((resolve) => { + this.rootContainer = new Group(); + this.threeScene = new Scene(); + this.threeScene.add(this.rootContainer); + this.camera = new PerspectiveCamera( + 75, + window.innerWidth / window.innerHeight, + 0.01, + 1e3 + ); + this.clickTrigger = ThreeJSClickTrigger.init(this.element, this.rootContainer, this.camera); + this.renderer = this.createRenderer(); + this.audioListener = new AudioListener(); + if (this.audioListener.context.state === "suspended") { + const resumeAudio = () => { + this.audioListener.context.resume(); + document.removeEventListener("click", resumeAudio); + document.removeEventListener("touchstart", resumeAudio); + }; + document.addEventListener("click", resumeAudio); + document.addEventListener("touchstart", resumeAudio); + } + this.camera.add(this.audioListener); + this.camera.position.z = 10; + this.camera.position.y = 5; + Cache.enabled = true; + this.setControlsType(this.options.controlsType); + const clock = new Clock(); + this.animationFrameCallback = () => { + this.animationFrameRequest = requestAnimationFrame(this.animationFrameCallback); + if (this.controls) { + this.controls.update(clock.getDelta()); + } + this.renderer.render(this.threeScene, this.camera); + }; + this.element.appendChild(this.renderer.domElement); + resolve(); + }); + } + setControlsType(type) { + if (this.controls) { + this.controls.dispose(); + this.controls = null; + } + switch (type) { + case 0: + break; + case 2: + this.controls = new ThreeJSOrbitCameraControls(this.camera, this.element); + break; + case 1: + default: + this.controls = new ThreeJSDragFlyCameraControls(this.camera, this.element); + break; + } + if (this.controls) { + this.controls.enable(); + } + } + createRenderer() { + let renderer; + if (navigator.userAgent.includes("jsdom")) { + renderer = { + domElement: document.createElement("canvas"), + setSize: () => void 0, + render: () => void 0 + }; + } else { + renderer = new WebGLRenderer({ antialias: true, alpha: true }); + renderer.setPixelRatio(window.devicePixelRatio); + renderer.outputColorSpace = SRGBColorSpace; + renderer.shadowMap.enabled = true; + renderer.shadowMap.type = PCFSoftShadowMap; + } + renderer.domElement.style.pointerEvents = "none"; + return renderer; + } + start() { + this.animationFrameRequest = requestAnimationFrame(this.animationFrameCallback); + } + getUserPositionAndRotation() { + const position = this.camera.position; + const rotation = this.camera.rotation; + return { + position: { + x: position.x, + y: position.y, + z: position.z + }, + rotation: { + x: radToDeg(rotation.x), + y: radToDeg(rotation.y), + z: radToDeg(rotation.z) + } + }; + } + getAudioListener() { + return this.audioListener; + } + resize(width, height) { + this.camera.aspect = width / height; + this.camera.updateProjectionMatrix(); + this.renderer.setSize(width, height); + } + dispose() { + this.clickTrigger.dispose(); + if (this.controls) { + this.controls.dispose(); + this.controls = null; + } + cancelAnimationFrame(this.animationFrameRequest); + } + getRootContainer() { + return this.rootContainer; + } + getCamera() { + return this.camera; + } + getBoundingBoxForElement(element) { + const camera = this.camera; + const renderer = this.renderer; + if (!(element instanceof MElement)) { + return null; + } + const object = element.getContainer(); + const box3 = new Box3().setFromObject(object); + const toCanvasCoords = (point) => { + const vec = point.clone().project(camera); + vec.x = (vec.x + 1) / 2 * renderer.domElement.clientWidth; + vec.y = (-vec.y + 1) / 2 * renderer.domElement.clientHeight; + return vec; + }; + const corners3D = [ + new Vector3(box3.min.x, box3.min.y, box3.min.z), + new Vector3(box3.max.x, box3.min.y, box3.min.z), + new Vector3(box3.max.x, box3.min.y, box3.max.z), + new Vector3(box3.min.x, box3.min.y, box3.max.z), + new Vector3(box3.min.x, box3.max.y, box3.min.z), + new Vector3(box3.max.x, box3.max.y, box3.min.z), + new Vector3(box3.max.x, box3.max.y, box3.max.z), + new Vector3(box3.min.x, box3.max.y, box3.max.z) + ]; + const corners2D = corners3D.map(toCanvasCoords); + const minX = Math.min(...corners2D.map((corner) => corner.x)); + const maxX = Math.max(...corners2D.map((corner) => corner.x)); + const minY = Math.min(...corners2D.map((corner) => corner.y)); + const maxY = Math.max(...corners2D.map((corner) => corner.y)); + return { + x: minX, + y: minY, + width: maxX - minX, + height: maxY - minY + }; + } +}; + +// ../../node_modules/@monogrid/gainmap-js/dist/QuadRenderer-B3h-sJtp.js +var getBufferForType = (type, width, height) => { + let out; + switch (type) { + case UnsignedByteType: + out = new Uint8ClampedArray(width * height * 4); + break; + case HalfFloatType: + out = new Uint16Array(width * height * 4); + break; + case UnsignedIntType: + out = new Uint32Array(width * height * 4); + break; + case ByteType: + out = new Int8Array(width * height * 4); + break; + case ShortType: + out = new Int16Array(width * height * 4); + break; + case IntType: + out = new Int32Array(width * height * 4); + break; + case FloatType: + out = new Float32Array(width * height * 4); + break; + default: + throw new Error("Unsupported data type"); + } + return out; +}; +var _canReadPixelsResult; +var canReadPixels = (type, renderer, camera, renderTargetOptions) => { + if (_canReadPixelsResult !== void 0) + return _canReadPixelsResult; + const testRT = new WebGLRenderTarget(1, 1, renderTargetOptions); + renderer.setRenderTarget(testRT); + const mesh = new Mesh(new PlaneGeometry(), new MeshBasicMaterial({ color: 16777215 })); + renderer.render(mesh, camera); + renderer.setRenderTarget(null); + const out = getBufferForType(type, testRT.width, testRT.height); + renderer.readRenderTargetPixels(testRT, 0, 0, testRT.width, testRT.height, out); + testRT.dispose(); + mesh.geometry.dispose(); + mesh.material.dispose(); + _canReadPixelsResult = out[0] !== 0; + return _canReadPixelsResult; +}; +var QuadRenderer = class _QuadRenderer { + /** + * Constructs a new QuadRenderer + * + * @param options Parameters for this QuadRenderer + */ + constructor(options) { + var _a2, _b2, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q2, _r; + this._rendererIsDisposable = false; + this._supportsReadPixels = true; + this.render = () => { + this._renderer.setRenderTarget(this._renderTarget); + try { + this._renderer.render(this._scene, this._camera); + } catch (e) { + this._renderer.setRenderTarget(null); + throw e; + } + this._renderer.setRenderTarget(null); + }; + this._width = options.width; + this._height = options.height; + this._type = options.type; + this._colorSpace = options.colorSpace; + const rtOptions = { + // fixed options + format: RGBAFormat, + depthBuffer: false, + stencilBuffer: false, + // user options + type: this._type, + // set in class property + colorSpace: this._colorSpace, + // set in class property + anisotropy: ((_a2 = options.renderTargetOptions) === null || _a2 === void 0 ? void 0 : _a2.anisotropy) !== void 0 ? (_b2 = options.renderTargetOptions) === null || _b2 === void 0 ? void 0 : _b2.anisotropy : 1, + generateMipmaps: ((_c = options.renderTargetOptions) === null || _c === void 0 ? void 0 : _c.generateMipmaps) !== void 0 ? (_d = options.renderTargetOptions) === null || _d === void 0 ? void 0 : _d.generateMipmaps : false, + magFilter: ((_e = options.renderTargetOptions) === null || _e === void 0 ? void 0 : _e.magFilter) !== void 0 ? (_f = options.renderTargetOptions) === null || _f === void 0 ? void 0 : _f.magFilter : LinearFilter, + minFilter: ((_g = options.renderTargetOptions) === null || _g === void 0 ? void 0 : _g.minFilter) !== void 0 ? (_h = options.renderTargetOptions) === null || _h === void 0 ? void 0 : _h.minFilter : LinearFilter, + samples: ((_j = options.renderTargetOptions) === null || _j === void 0 ? void 0 : _j.samples) !== void 0 ? (_k = options.renderTargetOptions) === null || _k === void 0 ? void 0 : _k.samples : void 0, + wrapS: ((_l = options.renderTargetOptions) === null || _l === void 0 ? void 0 : _l.wrapS) !== void 0 ? (_m = options.renderTargetOptions) === null || _m === void 0 ? void 0 : _m.wrapS : ClampToEdgeWrapping, + wrapT: ((_o = options.renderTargetOptions) === null || _o === void 0 ? void 0 : _o.wrapT) !== void 0 ? (_p = options.renderTargetOptions) === null || _p === void 0 ? void 0 : _p.wrapT : ClampToEdgeWrapping + }; + this._material = options.material; + if (options.renderer) { + this._renderer = options.renderer; + } else { + this._renderer = _QuadRenderer.instantiateRenderer(); + this._rendererIsDisposable = true; + } + this._scene = new Scene(); + this._camera = new OrthographicCamera(); + this._camera.position.set(0, 0, 10); + this._camera.left = -0.5; + this._camera.right = 0.5; + this._camera.top = 0.5; + this._camera.bottom = -0.5; + this._camera.updateProjectionMatrix(); + if (!canReadPixels(this._type, this._renderer, this._camera, rtOptions)) { + let alternativeType; + switch (this._type) { + case HalfFloatType: + alternativeType = this._renderer.extensions.has("EXT_color_buffer_float") ? FloatType : void 0; + break; + } + if (alternativeType !== void 0) { + console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${FloatType}`); + this._type = alternativeType; + } else { + this._supportsReadPixels = false; + console.warn("This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown"); + } + } + this._quad = new Mesh(new PlaneGeometry(), this._material); + this._quad.geometry.computeBoundingBox(); + this._scene.add(this._quad); + this._renderTarget = new WebGLRenderTarget(this.width, this.height, rtOptions); + this._renderTarget.texture.mapping = ((_q2 = options.renderTargetOptions) === null || _q2 === void 0 ? void 0 : _q2.mapping) !== void 0 ? (_r = options.renderTargetOptions) === null || _r === void 0 ? void 0 : _r.mapping : UVMapping; + } + /** + * Instantiates a temporary renderer + * + * @returns + */ + static instantiateRenderer() { + const renderer = new WebGLRenderer(); + renderer.setSize(128, 128); + return renderer; + } + /** + * Obtains a Buffer containing the rendered texture. + * + * @throws Error if the browser cannot read pixels from this RenderTarget type. + * @returns a TypedArray containing RGBA values from this renderer + */ + toArray() { + if (!this._supportsReadPixels) + throw new Error("Can't read pixels in this browser"); + const out = getBufferForType(this._type, this._width, this._height); + this._renderer.readRenderTargetPixels(this._renderTarget, 0, 0, this._width, this._height, out); + return out; + } + /** + * Performs a readPixel operation in the renderTarget + * and returns a DataTexture containing the read data + * + * @param options options + * @returns + */ + toDataTexture(options) { + const returnValue = new DataTexture( + // fixed values + this.toArray(), + this.width, + this.height, + RGBAFormat, + this._type, + // user values + (options === null || options === void 0 ? void 0 : options.mapping) || UVMapping, + (options === null || options === void 0 ? void 0 : options.wrapS) || ClampToEdgeWrapping, + (options === null || options === void 0 ? void 0 : options.wrapT) || ClampToEdgeWrapping, + (options === null || options === void 0 ? void 0 : options.magFilter) || LinearFilter, + (options === null || options === void 0 ? void 0 : options.minFilter) || LinearFilter, + (options === null || options === void 0 ? void 0 : options.anisotropy) || 1, + // fixed value + LinearSRGBColorSpace + ); + returnValue.generateMipmaps = (options === null || options === void 0 ? void 0 : options.generateMipmaps) !== void 0 ? options === null || options === void 0 ? void 0 : options.generateMipmaps : false; + return returnValue; + } + /** + * If using a disposable renderer, it will dispose it. + */ + disposeOnDemandRenderer() { + this._renderer.setRenderTarget(null); + if (this._rendererIsDisposable) { + this._renderer.dispose(); + this._renderer.forceContextLoss(); + } + } + /** + * Will dispose of **all** assets used by this renderer. + * + * + * @param disposeRenderTarget will dispose of the renderTarget which will not be usable later + * set this to true if you passed the `renderTarget.texture` to a `PMREMGenerator` + * or are otherwise done with it. + * + * @example + * ```js + * const loader = new HDRJPGLoader(renderer) + * const result = await loader.loadAsync('gainmap.jpeg') + * const mesh = new Mesh(geometry, new MeshBasicMaterial({ map: result.renderTarget.texture }) ) + * // DO NOT dispose the renderTarget here, + * // it is used directly in the material + * result.dispose() + * ``` + * + * @example + * ```js + * const loader = new HDRJPGLoader(renderer) + * const pmremGenerator = new PMREMGenerator( renderer ); + * const result = await loader.loadAsync('gainmap.jpeg') + * const envMap = pmremGenerator.fromEquirectangular(result.renderTarget.texture) + * const mesh = new Mesh(geometry, new MeshStandardMaterial({ envMap }) ) + * // renderTarget can be disposed here + * // because it was used to generate a PMREM texture + * result.dispose(true) + * ``` + */ + dispose(disposeRenderTarget) { + this.disposeOnDemandRenderer(); + if (disposeRenderTarget) { + this.renderTarget.dispose(); + } + if (this.material instanceof ShaderMaterial) { + Object.values(this.material.uniforms).forEach((v) => { + if (v.value instanceof Texture) + v.value.dispose(); + }); + } + Object.values(this.material).forEach((value) => { + if (value instanceof Texture) + value.dispose(); + }); + this.material.dispose(); + this._quad.geometry.dispose(); + } + /** + * Width of the texture + */ + get width() { + return this._width; + } + set width(value) { + this._width = value; + this._renderTarget.setSize(this._width, this._height); + } + /** + * Height of the texture + */ + get height() { + return this._height; + } + set height(value) { + this._height = value; + this._renderTarget.setSize(this._width, this._height); + } + /** + * The renderer used + */ + get renderer() { + return this._renderer; + } + /** + * The `WebGLRenderTarget` used. + */ + get renderTarget() { + return this._renderTarget; + } + set renderTarget(value) { + this._renderTarget = value; + this._width = value.width; + this._height = value.height; + } + /** + * The `Material` used. + */ + get material() { + return this._material; + } + /** + * + */ + get type() { + return this._type; + } + get colorSpace() { + return this._colorSpace; + } +}; + +// ../../node_modules/@monogrid/gainmap-js/dist/decode.js +var vertexShader = ( + /* glsl */ + ` +varying vec2 vUv; + +void main() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); +} +` +); +var fragmentShader = ( + /* glsl */ + ` +// min half float value +#define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 ) +// max half float value +#define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 ) + +uniform sampler2D sdr; +uniform sampler2D gainMap; +uniform vec3 gamma; +uniform vec3 offsetHdr; +uniform vec3 offsetSdr; +uniform vec3 gainMapMin; +uniform vec3 gainMapMax; +uniform float weightFactor; + +varying vec2 vUv; + +void main() { + vec3 rgb = texture2D( sdr, vUv ).rgb; + vec3 recovery = texture2D( gainMap, vUv ).rgb; + vec3 logRecovery = pow( recovery, gamma ); + vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery; + vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr; + vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor )); + gl_FragColor = vec4( clampedHdrColor , 1.0 ); +} +` +); +var GainMapDecoderMaterial = class extends ShaderMaterial { + /** + * + * @param params + */ + constructor({ gamma, offsetHdr, offsetSdr, gainMapMin, gainMapMax, maxDisplayBoost, hdrCapacityMin, hdrCapacityMax, sdr, gainMap }) { + super({ + name: "GainMapDecoderMaterial", + vertexShader, + fragmentShader, + uniforms: { + sdr: { value: sdr }, + gainMap: { value: gainMap }, + gamma: { value: new Vector3(1 / gamma[0], 1 / gamma[1], 1 / gamma[2]) }, + offsetHdr: { value: new Vector3().fromArray(offsetHdr) }, + offsetSdr: { value: new Vector3().fromArray(offsetSdr) }, + gainMapMin: { value: new Vector3().fromArray(gainMapMin) }, + gainMapMax: { value: new Vector3().fromArray(gainMapMax) }, + weightFactor: { + value: (Math.log2(maxDisplayBoost) - hdrCapacityMin) / (hdrCapacityMax - hdrCapacityMin) + } + }, + blending: NoBlending, + depthTest: false, + depthWrite: false + }); + this._maxDisplayBoost = maxDisplayBoost; + this._hdrCapacityMin = hdrCapacityMin; + this._hdrCapacityMax = hdrCapacityMax; + this.needsUpdate = true; + this.uniformsNeedUpdate = true; + } + get sdr() { + return this.uniforms.sdr.value; + } + set sdr(value) { + this.uniforms.sdr.value = value; + } + get gainMap() { + return this.uniforms.gainMap.value; + } + set gainMap(value) { + this.uniforms.gainMap.value = value; + } + /** + * @see {@link GainMapMetadata.offsetHdr} + */ + get offsetHdr() { + return this.uniforms.offsetHdr.value.toArray(); + } + set offsetHdr(value) { + this.uniforms.offsetHdr.value.fromArray(value); + } + /** + * @see {@link GainMapMetadata.offsetSdr} + */ + get offsetSdr() { + return this.uniforms.offsetSdr.value.toArray(); + } + set offsetSdr(value) { + this.uniforms.offsetSdr.value.fromArray(value); + } + /** + * @see {@link GainMapMetadata.gainMapMin} + */ + get gainMapMin() { + return this.uniforms.gainMapMin.value.toArray(); + } + set gainMapMin(value) { + this.uniforms.gainMapMin.value.fromArray(value); + } + /** + * @see {@link GainMapMetadata.gainMapMax} + */ + get gainMapMax() { + return this.uniforms.gainMapMax.value.toArray(); + } + set gainMapMax(value) { + this.uniforms.gainMapMax.value.fromArray(value); + } + /** + * @see {@link GainMapMetadata.gamma} + */ + get gamma() { + const g = this.uniforms.gamma.value; + return [1 / g.x, 1 / g.y, 1 / g.z]; + } + set gamma(value) { + const g = this.uniforms.gamma.value; + g.x = 1 / value[0]; + g.y = 1 / value[1]; + g.z = 1 / value[2]; + } + /** + * @see {@link GainMapMetadata.hdrCapacityMin} + * @remarks Logarithmic space + */ + get hdrCapacityMin() { + return this._hdrCapacityMin; + } + set hdrCapacityMin(value) { + this._hdrCapacityMin = value; + this.calculateWeight(); + } + /** + * @see {@link GainMapMetadata.hdrCapacityMin} + * @remarks Logarithmic space + */ + get hdrCapacityMax() { + return this._hdrCapacityMax; + } + set hdrCapacityMax(value) { + this._hdrCapacityMax = value; + this.calculateWeight(); + } + /** + * @see {@link GainmapDecodingParameters.maxDisplayBoost} + * @remarks Non Logarithmic space + */ + get maxDisplayBoost() { + return this._maxDisplayBoost; + } + set maxDisplayBoost(value) { + this._maxDisplayBoost = Math.max(1, Math.min(65504, value)); + this.calculateWeight(); + } + calculateWeight() { + const val = (Math.log2(this._maxDisplayBoost) - this._hdrCapacityMin) / (this._hdrCapacityMax - this._hdrCapacityMin); + this.uniforms.weightFactor.value = Math.max(0, Math.min(1, val)); + } +}; +var GainMapNotFoundError = class extends Error { +}; +var XMPMetadataNotFoundError = class extends Error { +}; +var getAttribute = (description, name, defaultValue) => { + var _a2; + let returnValue; + const parsedValue = (_a2 = description.attributes.getNamedItem(name)) === null || _a2 === void 0 ? void 0 : _a2.nodeValue; + if (!parsedValue) { + const node = description.getElementsByTagName(name)[0]; + if (node) { + const values = node.getElementsByTagName("rdf:li"); + if (values.length === 3) { + returnValue = Array.from(values).map((v) => v.innerHTML); + } else { + throw new Error(`Gainmap metadata contains an array of items for ${name} but its length is not 3`); + } + } else { + if (defaultValue) + return defaultValue; + else + throw new Error(`Can't find ${name} in gainmap metadata`); + } + } else { + returnValue = parsedValue; + } + return returnValue; +}; +var extractXMP = (input) => { + var _a2, _b2; + let str; + if (typeof TextDecoder !== "undefined") + str = new TextDecoder().decode(input); + else + str = input.toString(); + let start = str.indexOf("", start); + str.slice(start, end + 10); + const xmpBlock = str.slice(start, end + 10); + try { + const xmlDocument = parser.parseFromString(xmpBlock, "text/xml"); + const description = xmlDocument.getElementsByTagName("rdf:Description")[0]; + const gainMapMin = getAttribute(description, "hdrgm:GainMapMin", "0"); + const gainMapMax = getAttribute(description, "hdrgm:GainMapMax"); + const gamma = getAttribute(description, "hdrgm:Gamma", "1"); + const offsetSDR = getAttribute(description, "hdrgm:OffsetSDR", "0.015625"); + const offsetHDR = getAttribute(description, "hdrgm:OffsetHDR", "0.015625"); + let hdrCapacityMin = (_a2 = description.attributes.getNamedItem("hdrgm:HDRCapacityMin")) === null || _a2 === void 0 ? void 0 : _a2.nodeValue; + if (!hdrCapacityMin) + hdrCapacityMin = "0"; + const hdrCapacityMax = (_b2 = description.attributes.getNamedItem("hdrgm:HDRCapacityMax")) === null || _b2 === void 0 ? void 0 : _b2.nodeValue; + if (!hdrCapacityMax) + throw new Error("Incomplete gainmap metadata"); + return { + gainMapMin: Array.isArray(gainMapMin) ? gainMapMin.map((v) => parseFloat(v)) : [parseFloat(gainMapMin), parseFloat(gainMapMin), parseFloat(gainMapMin)], + gainMapMax: Array.isArray(gainMapMax) ? gainMapMax.map((v) => parseFloat(v)) : [parseFloat(gainMapMax), parseFloat(gainMapMax), parseFloat(gainMapMax)], + gamma: Array.isArray(gamma) ? gamma.map((v) => parseFloat(v)) : [parseFloat(gamma), parseFloat(gamma), parseFloat(gamma)], + offsetSdr: Array.isArray(offsetSDR) ? offsetSDR.map((v) => parseFloat(v)) : [parseFloat(offsetSDR), parseFloat(offsetSDR), parseFloat(offsetSDR)], + offsetHdr: Array.isArray(offsetHDR) ? offsetHDR.map((v) => parseFloat(v)) : [parseFloat(offsetHDR), parseFloat(offsetHDR), parseFloat(offsetHDR)], + hdrCapacityMin: parseFloat(hdrCapacityMin), + hdrCapacityMax: parseFloat(hdrCapacityMax) + }; + } catch (e) { + } + start = str.indexOf(" { + const debug = this.options.debug; + const dataView = new DataView(imageArrayBuffer.buffer); + if (dataView.getUint16(0) !== 65496) { + reject(new Error("Not a valid jpeg")); + return; + } + const length = dataView.byteLength; + let offset = 2; + let loops = 0; + let marker; + while (offset < length) { + if (++loops > 250) { + reject(new Error(`Found no marker after ${loops} loops \u{1F635}`)); + return; + } + if (dataView.getUint8(offset) !== 255) { + reject(new Error(`Not a valid marker at offset 0x${offset.toString(16)}, found: 0x${dataView.getUint8(offset).toString(16)}`)); + return; + } + marker = dataView.getUint8(offset + 1); + if (debug) + console.log(`Marker: ${marker.toString(16)}`); + if (marker === 226) { + if (debug) + console.log("Found APP2 marker (0xffe2)"); + const formatPt = offset + 4; + if (dataView.getUint32(formatPt) === 1297106432) { + const tiffOffset = formatPt + 4; + let bigEnd; + if (dataView.getUint16(tiffOffset) === 18761) { + bigEnd = false; + } else if (dataView.getUint16(tiffOffset) === 19789) { + bigEnd = true; + } else { + reject(new Error("No valid endianness marker found in TIFF header")); + return; + } + if (dataView.getUint16(tiffOffset + 2, !bigEnd) !== 42) { + reject(new Error("Not valid TIFF data! (no 0x002A marker)")); + return; + } + const firstIFDOffset = dataView.getUint32(tiffOffset + 4, !bigEnd); + if (firstIFDOffset < 8) { + reject(new Error("Not valid TIFF data! (First offset less than 8)")); + return; + } + const dirStart = tiffOffset + firstIFDOffset; + const count = dataView.getUint16(dirStart, !bigEnd); + const entriesStart = dirStart + 2; + let numberOfImages = 0; + for (let i = entriesStart; i < entriesStart + 12 * count; i += 12) { + if (dataView.getUint16(i, !bigEnd) === 45057) { + numberOfImages = dataView.getUint32(i + 8, !bigEnd); + } + } + const nextIFDOffsetLen = 4; + const MPImageListValPt = dirStart + 2 + count * 12 + nextIFDOffsetLen; + const images = []; + for (let i = MPImageListValPt; i < MPImageListValPt + numberOfImages * 16; i += 16) { + const image = { + MPType: dataView.getUint32(i, !bigEnd), + size: dataView.getUint32(i + 4, !bigEnd), + // This offset is specified relative to the address of the MP Endian + // field in the MP Header, unless the image is a First Individual Image, + // in which case the value of the offset shall be NULL (0x00000000). + dataOffset: dataView.getUint32(i + 8, !bigEnd), + dependantImages: dataView.getUint32(i + 12, !bigEnd), + start: -1, + end: -1, + isFII: false + }; + if (!image.dataOffset) { + image.start = 0; + image.isFII = true; + } else { + image.start = tiffOffset + image.dataOffset; + image.isFII = false; + } + image.end = image.start + image.size; + images.push(image); + } + if (this.options.extractNonFII && images.length) { + const bufferBlob = new Blob([dataView]); + const imgs = []; + for (const image of images) { + if (image.isFII && !this.options.extractFII) { + continue; + } + const imageBlob = bufferBlob.slice(image.start, image.end + 1, "image/jpeg"); + imgs.push(imageBlob); + } + resolve(imgs); + } + } + } + offset += 2 + dataView.getUint16(offset + 2); + } + }); + } +}; +var extractGainmapFromJPEG = async (jpegFile) => { + const metadata = extractXMP(jpegFile); + if (!metadata) + throw new XMPMetadataNotFoundError("Gain map XMP metadata not found"); + const mpfExtractor = new MPFExtractor({ extractFII: true, extractNonFII: true }); + const images = await mpfExtractor.extract(jpegFile); + if (images.length !== 2) + throw new GainMapNotFoundError("Gain map recovery image not found"); + return { + sdr: new Uint8Array(await images[0].arrayBuffer()), + gainMap: new Uint8Array(await images[1].arrayBuffer()), + metadata + }; +}; +var getHTMLImageFromBlob = (blob) => { + return new Promise((resolve, reject) => { + const img = document.createElement("img"); + img.onload = () => { + resolve(img); + }; + img.onerror = (e) => { + reject(e); + }; + img.src = URL.createObjectURL(blob); + }); +}; +var LoaderBase = class extends Loader { + /** + * + * @param renderer + * @param manager + */ + constructor(renderer, manager) { + super(manager); + if (renderer) + this._renderer = renderer; + this._internalLoadingManager = new LoadingManager(); + } + /** + * Specify the renderer to use when rendering the gain map + * + * @param renderer + * @returns + */ + setRenderer(renderer) { + this._renderer = renderer; + return this; + } + /** + * Specify the renderTarget options to use when rendering the gain map + * + * @param options + * @returns + */ + setRenderTargetOptions(options) { + this._renderTargetOptions = options; + return this; + } + /** + * @private + * @returns + */ + prepareQuadRenderer() { + if (!this._renderer) + console.warn("WARNING: An existing WebGL Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer."); + const material = new GainMapDecoderMaterial({ + gainMapMax: [1, 1, 1], + gainMapMin: [0, 0, 0], + gamma: [1, 1, 1], + offsetHdr: [1, 1, 1], + offsetSdr: [1, 1, 1], + hdrCapacityMax: 1, + hdrCapacityMin: 0, + maxDisplayBoost: 1, + gainMap: new Texture(), + sdr: new Texture() + }); + return new QuadRenderer({ + width: 16, + height: 16, + type: HalfFloatType, + colorSpace: LinearSRGBColorSpace, + material, + renderer: this._renderer, + renderTargetOptions: this._renderTargetOptions + }); + } + /** + * @private + * @param quadRenderer + * @param metadata + * @param sdrBuffer + * @param gainMapBuffer + */ + async render(quadRenderer, metadata, sdrBuffer, gainMapBuffer) { + const gainMapBlob = gainMapBuffer ? new Blob([gainMapBuffer], { type: "image/jpeg" }) : void 0; + const sdrBlob = new Blob([sdrBuffer], { type: "image/jpeg" }); + let sdrImage; + let gainMapImage; + let needsFlip = false; + if (typeof createImageBitmap === "undefined") { + const res = await Promise.all([ + gainMapBlob ? getHTMLImageFromBlob(gainMapBlob) : Promise.resolve(void 0), + getHTMLImageFromBlob(sdrBlob) + ]); + gainMapImage = res[0]; + sdrImage = res[1]; + needsFlip = true; + } else { + const res = await Promise.all([ + gainMapBlob ? createImageBitmap(gainMapBlob, { imageOrientation: "flipY" }) : Promise.resolve(void 0), + createImageBitmap(sdrBlob, { imageOrientation: "flipY" }) + ]); + gainMapImage = res[0]; + sdrImage = res[1]; + } + const gainMap = new Texture(gainMapImage || new ImageData(2, 2), UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, LinearMipMapLinearFilter, RGBAFormat, UnsignedByteType, 1, LinearSRGBColorSpace); + gainMap.flipY = needsFlip; + gainMap.needsUpdate = true; + const sdr = new Texture(sdrImage, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, LinearMipMapLinearFilter, RGBAFormat, UnsignedByteType, 1, SRGBColorSpace); + sdr.flipY = needsFlip; + sdr.needsUpdate = true; + quadRenderer.width = sdrImage.width; + quadRenderer.height = sdrImage.height; + quadRenderer.material.gainMap = gainMap; + quadRenderer.material.sdr = sdr; + quadRenderer.material.gainMapMin = metadata.gainMapMin; + quadRenderer.material.gainMapMax = metadata.gainMapMax; + quadRenderer.material.offsetHdr = metadata.offsetHdr; + quadRenderer.material.offsetSdr = metadata.offsetSdr; + quadRenderer.material.gamma = metadata.gamma; + quadRenderer.material.hdrCapacityMin = metadata.hdrCapacityMin; + quadRenderer.material.hdrCapacityMax = metadata.hdrCapacityMax; + quadRenderer.material.maxDisplayBoost = Math.pow(2, metadata.hdrCapacityMax); + quadRenderer.material.needsUpdate = true; + quadRenderer.render(); + } +}; +var HDRJPGLoader = class extends LoaderBase { + /** + * Loads a JPEG containing gain map metadata + * Renders a normal SDR image if gainmap data is not found + * + * @param url An array in the form of [sdr.jpg, gainmap.jpg, metadata.json] + * @param onLoad Load complete callback, will receive the result + * @param onProgress Progress callback, will receive a {@link ProgressEvent} + * @param onError Error callback + * @returns + */ + load(url, onLoad, onProgress, onError) { + const quadRenderer = this.prepareQuadRenderer(); + const loader = new FileLoader(this._internalLoadingManager); + loader.setResponseType("arraybuffer"); + loader.setRequestHeader(this.requestHeader); + loader.setPath(this.path); + loader.setWithCredentials(this.withCredentials); + this.manager.itemStart(url); + loader.load(url, async (jpeg) => { + if (typeof jpeg === "string") + throw new Error("Invalid buffer, received [string], was expecting [ArrayBuffer]"); + const jpegBuffer = new Uint8Array(jpeg); + let sdrJPEG; + let gainMapJPEG; + let metadata; + try { + const extractionResult = await extractGainmapFromJPEG(jpegBuffer); + sdrJPEG = extractionResult.sdr; + gainMapJPEG = extractionResult.gainMap; + metadata = extractionResult.metadata; + } catch (e) { + if (e instanceof XMPMetadataNotFoundError || e instanceof GainMapNotFoundError) { + console.warn(`Failure to reconstruct an HDR image from ${url}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`); + metadata = { + gainMapMin: [0, 0, 0], + gainMapMax: [1, 1, 1], + gamma: [1, 1, 1], + hdrCapacityMin: 0, + hdrCapacityMax: 1, + offsetHdr: [0, 0, 0], + offsetSdr: [0, 0, 0] + }; + sdrJPEG = jpegBuffer; + } else { + throw e; + } + } + try { + await this.render(quadRenderer, metadata, sdrJPEG, gainMapJPEG); + } catch (error) { + this.manager.itemError(url); + if (typeof onError === "function") + onError(error); + quadRenderer.disposeOnDemandRenderer(); + return; + } + if (typeof onLoad === "function") + onLoad(quadRenderer); + this.manager.itemEnd(url); + quadRenderer.disposeOnDemandRenderer(); + }, onProgress, (error) => { + this.manager.itemError(url); + if (typeof onError === "function") + onError(error); + }); + return quadRenderer; + } +}; + +// src/ThreeJSModeInternal.ts +var ThreeJSModeInternal = class { + constructor(windowTarget, targetForWrappers, mmlSourceDefinition, formIteration) { + this.windowTarget = windowTarget; + this.targetForWrappers = targetForWrappers; + this.mmlSourceDefinition = mmlSourceDefinition; + this.formIteration = formIteration; + this.disposed = false; + this.loadedState = null; + this.ambientLight = null; + this.type = "three"; + this.environmentMap = null; + this.init(); + } + async init() { + const fullScreenMMLScene = new FullScreenMMLScene(); + document.body.append(fullScreenMMLScene.element); + const graphicsAdapter = await StandaloneThreeJSAdapter.create(fullScreenMMLScene.element, { + controlsType: StandaloneThreeJSAdapterControlsType.DragFly + }); + if (this.disposed) { + graphicsAdapter.dispose(); + return; + } + fullScreenMMLScene.init(graphicsAdapter); + const statusUI = new StatusUI(); + const mmlNetworkSource = MMLNetworkSource.create({ + mmlScene: fullScreenMMLScene, + statusUpdated: (status) => { + if (status === NetworkedDOMWebsocketStatus.Connected) { + statusUI.setNoStatus(); + } else { + statusUI.setStatus(NetworkedDOMWebsocketStatusToString(status)); + } + }, + url: this.mmlSourceDefinition.url, + windowTarget: this.windowTarget, + targetForWrappers: this.targetForWrappers + }); + setDebugGlobals({ + mmlScene: fullScreenMMLScene, + remoteDocumentWrapper: mmlNetworkSource.remoteDocumentWrapper + }); + const loadingCallback = () => { + const [, completedLoading] = fullScreenMMLScene.getLoadingProgressManager().toRatio(); + if (completedLoading) { + fullScreenMMLScene.getLoadingProgressManager().removeProgressCallback(loadingCallback); + const fitContent = this.formIteration.getFieldValue(cameraFitContents); + if (fitContent === "true") { + graphicsAdapter.controls?.fitContent(calculateContentBounds(this.targetForWrappers)); + } + } + }; + fullScreenMMLScene.getLoadingProgressManager().addProgressCallback(loadingCallback); + this.loadedState = { + mmlNetworkSource, + graphicsAdapter, + fullScreenMMLScene, + statusUI + }; + this.update(this.formIteration); + } + update(formIteration) { + this.formIteration = formIteration; + if (!this.loadedState) { + return; + } + const graphicsAdapter = this.loadedState.graphicsAdapter; + const threeScene = graphicsAdapter.getThreeScene(); + const threeRenderer = graphicsAdapter.getRenderer(); + this.setBackgroundColor(formIteration, threeRenderer); + this.setAmbientLight(formIteration, threeScene); + this.setAmbientLightColor(formIteration); + this.setEnvironmentMap(formIteration, threeRenderer, threeScene); + this.setCameraMode(formIteration, graphicsAdapter); + formIteration.completed(); + } + setEnvironmentMap(formIteration, threeRenderer, threeScene) { + let environmentMap = formIteration.getFieldValue(environmentMapField); + const foundEnvMap = envMaps[environmentMap]; + if (foundEnvMap) { + environmentMap = foundEnvMap.url; + } + if (!environmentMap) { + threeScene.environment = null; + threeScene.background = null; + this.environmentMap = null; + return; + } + if (environmentMap === this.environmentMap) { + return; + } + const pmremGenerator = new PMREMGenerator(threeRenderer); + const loader = new HDRJPGLoader(threeRenderer); + loader.loadAsync(environmentMap).then((result) => { + const hdrJpg = result.renderTarget.texture; + hdrJpg.mapping = EquirectangularReflectionMapping; + const envMap = pmremGenerator.fromEquirectangular(hdrJpg).texture; + threeScene.backgroundIntensity = 1; + threeScene.backgroundBlurriness = 0; + threeScene.backgroundRotation = new Euler(0, -Math.PI / 2, 0); + threeScene.background = envMap; + threeScene.environment = envMap; + result.dispose(); + }); + } + setAmbientLightColor(formIteration) { + const ambientLightColorString = formIteration.getFieldValue(ambientLightColorField); + const color = parseColorAttribute(ambientLightColorString, { + r: 1, + g: 1, + b: 1 + }); + if (this.ambientLight) { + this.ambientLight.color.setRGB(color.r, color.g, color.b); + } + } + setAmbientLight(formIteration, threeScene) { + const ambientLightIntensityString = formIteration.getFieldValue(ambientLightField); + let ambientLightIntensity = parseFloat(ambientLightIntensityString); + if (isNaN(ambientLightIntensity)) { + ambientLightIntensity = 0; + } + if (ambientLightIntensity < 0) { + ambientLightIntensity = 0; + } + if (this.ambientLight && ambientLightIntensity <= 0) { + this.ambientLight.removeFromParent(); + this.ambientLight = null; + } + if (!this.ambientLight && ambientLightIntensity > 0) { + this.ambientLight = new AmbientLight(16777215, ambientLightIntensity); + threeScene.add(this.ambientLight); + } else if (this.ambientLight) { + this.ambientLight.intensity = ambientLightIntensity; + } + } + setBackgroundColor(formIteration, threeRenderer) { + const backgroundColorString = formIteration.getFieldValue(backgroundColorField); + const color = parseColorAttribute(backgroundColorString, { + r: 1, + g: 1, + b: 1, + a: 0 + }); + threeRenderer.setClearColor(new Color(color.r, color.g, color.b), color.a); + } + dispose() { + this.disposed = true; + if (this.loadedState) { + this.loadedState.mmlNetworkSource.dispose(); + this.loadedState.graphicsAdapter.dispose(); + this.loadedState.fullScreenMMLScene.dispose(); + this.loadedState.statusUI.dispose(); + this.loadedState = null; + } + } + setCameraMode(formIteration, graphicsAdapter) { + let cameraFOV = parseFloat(formIteration.getFieldValue(cameraFovField)); + if (isNaN(cameraFOV)) { + cameraFOV = 75; + } + graphicsAdapter.setCameraFOV(cameraFOV); + const cameraMode = formIteration.getFieldValue(cameraModeField); + if (cameraMode === "orbit") { + if (graphicsAdapter.controls?.type !== "orbit") { + graphicsAdapter.setControlsType(StandaloneThreeJSAdapterControlsType.Orbit); + } + const controls = graphicsAdapter.controls; + let orbitSpeed = parseFloat(formIteration.getFieldValue(cameraOrbitSpeedField)); + if (isNaN(orbitSpeed)) { + orbitSpeed = 0; + } + controls.setDegreesPerSecond(orbitSpeed); + let orbitPitch = parseFloat(formIteration.getFieldValue(cameraOrbitPitchField)); + if (isNaN(orbitPitch)) { + orbitPitch = 0; + } + controls.setPitchDegrees(orbitPitch); + const fitContent = formIteration.getFieldValue(cameraFitContents); + if (fitContent === "true") { + controls.fitContent(calculateContentBounds(this.targetForWrappers)); + } else { + const lookAt = parseXYZ(formIteration.getFieldValue(cameraLookAtField)); + controls.setLookAt(lookAt[0], lookAt[1], lookAt[2]); + let orbitDistance = parseFloat(formIteration.getFieldValue(cameraOrbitDistanceField)); + if (isNaN(orbitDistance)) { + orbitDistance = 1; + } + controls.setDistance(orbitDistance); + } + } else if (cameraMode === "drag-fly") { + if (graphicsAdapter.controls?.type !== "drag-fly") { + graphicsAdapter.setControlsType(StandaloneThreeJSAdapterControlsType.DragFly); + } + const controls = graphicsAdapter.controls; + const cameraPosition = parseXYZ(formIteration.getFieldValue(cameraPositionField)); + controls.setCameraPosition(cameraPosition[0], cameraPosition[1], cameraPosition[2]); + const lookAt = parseXYZ(formIteration.getFieldValue(cameraLookAtField)); + controls.setLookAt(lookAt[0], lookAt[1], lookAt[2]); + const fitContent = formIteration.getFieldValue(cameraFitContents); + if (fitContent === "true") { + controls.fitContent(calculateContentBounds(this.targetForWrappers)); + } + } else if (cameraMode === "none" && graphicsAdapter.controls !== null) { + graphicsAdapter.setControlsType(StandaloneThreeJSAdapterControlsType.None); + } + } +}; +export { + ThreeJSModeInternal +}; +/*! Bundled license information: + +three/build/three.module.js: + (** + * @license + * Copyright 2010-2023 Three.js Authors + * SPDX-License-Identifier: MIT + *) + +three/examples/jsm/libs/fflate.module.js: + (*! + fflate - fast JavaScript compression/decompression + + Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE + version 0.8.2 + *) +*/ +//# sourceMappingURL=ThreeJSModeInternal-OES4PZ5X.js.map diff --git a/pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js.map b/pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js.map new file mode 100644 index 00000000..01638d41 --- /dev/null +++ b/pull/212/v1/ThreeJSModeInternal-OES4PZ5X.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../node_modules/three/build/three.module.js", "../../../node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js", "../../../node_modules/three/examples/jsm/loaders/DRACOLoader.js", "../../../node_modules/three/examples/jsm/libs/meshopt_decoder.module.js", "../../../node_modules/three/examples/jsm/libs/fflate.module.js", "../../../node_modules/three/examples/jsm/curves/NURBSUtils.js", "../../../node_modules/three/examples/jsm/curves/NURBSCurve.js", "../../../node_modules/three/examples/jsm/loaders/FBXLoader.js", "../../../node_modules/three/examples/jsm/utils/BufferGeometryUtils.js", "../../../node_modules/three/examples/jsm/loaders/GLTFLoader.js", "../../../node_modules/@mml-io/model-loader/build/base64:/home/runner/work/mml/mml/node_modules/three/examples/jsm/libs/draco/gltf/draco_decoder.wasm", "../../../node_modules/@mml-io/model-loader/build/base64:/home/runner/work/mml/mml/node_modules/three/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js", "../../../node_modules/@mml-io/model-loader/src/ModelLoader.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSAudio.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSChatProbe.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSCube.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSCylinder.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSDebugHelper.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSFrame.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSImage.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSInteraction.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSLabel.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSLight.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSLink.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSMElement.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSModel.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSPlane.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSPositionProbe.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSPrompt.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSRemoteDocument.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/ThreeJSReconnectingStatus.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSSphere.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSTransformable.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/elements/ThreeJSVideo.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/ThreeJSClickTrigger.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/ThreeJSGraphicsInterface.ts", "../../../node_modules/@mml-io/mml-web-threejs/src/ThreeJSInteractionAdapter.ts", "../../../node_modules/@mml-io/mml-web-threejs-standalone/src/controls/ThreeJSDragFlyCameraControls.ts", "../../../node_modules/@mml-io/mml-web-threejs-standalone/src/controls/ThreeJSOrbitCameraControls.ts", "../../../node_modules/@mml-io/mml-web-threejs-standalone/src/StandaloneThreeJSAdapter.ts", "../../../node_modules/@monogrid/gainmap-js/dist/QuadRenderer-B3h-sJtp.js", "../../../node_modules/@monogrid/gainmap-js/dist/decode.js", "../src/ThreeJSModeInternal.ts"], + "sourcesContent": ["/**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '163';\n\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst AgXToneMapping = 6;\nconst NeutralToneMapping = 7;\nconst AttachedBindMode = 'attached';\nconst DetachedBindMode = 'detached';\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst UnsignedInt5999Type = 35902;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\nconst DisplayP3ColorSpace = 'display-p3';\nconst LinearDisplayP3ColorSpace = 'display-p3-linear';\n\nconst LinearTransfer = 'linear';\nconst SRGBTransfer = 'srgb';\n\nconst Rec709Primaries = 'rec709';\nconst P3Primaries = 'p3';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst WebGLCoordinateSystem = 2000;\nconst WebGPUCoordinateSystem = 2001;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(\n\t0.8224621, 0.177538, 0.0,\n\t0.0331941, 0.9668058, 0.0,\n\t0.0170827, 0.0723974, 0.9105199,\n);\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(\n\t1.2249401, - 0.2249404, 0.0,\n\t- 0.0420569, 1.0420571, 0.0,\n\t- 0.0196376, - 0.0786361, 1.0982735\n);\n\n/**\n * Defines supported color spaces by transfer function and primaries,\n * and provides conversions to/from the Linear-sRGB reference space.\n */\nconst COLOR_SPACES = {\n\t[ LinearSRGBColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color,\n\t\tfromReference: ( color ) => color,\n\t},\n\t[ SRGBColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear(),\n\t\tfromReference: ( color ) => color.convertLinearToSRGB(),\n\t},\n\t[ LinearDisplayP3ColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),\n\t},\n\t[ DisplayP3ColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),\n\t},\n};\n\nconst SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\t_workingColorSpace: LinearSRGBColorSpace,\n\n\tget workingColorSpace() {\n\n\t\treturn this._workingColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tif ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {\n\n\t\t\tthrow new Error( `Unsupported working color space, \"${ colorSpace }\".` );\n\n\t\t}\n\n\t\tthis._workingColorSpace = colorSpace;\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;\n\t\tconst targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;\n\n\t\treturn targetFromReference( sourceToReference( color ) );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this._workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this._workingColorSpace );\n\n\t},\n\n\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn COLOR_SPACES[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn COLOR_SPACES[ colorSpace ].transfer;\n\n\t},\n\n};\n\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\t\tthis.dataReady = true;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\t\tthis.channel = 0;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\tthis.colorSpace = colorSpace;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.pmremVersion = 0; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tset needsPMREMUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.pmremVersion ++;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0,\n\t\t\tcount: 1\n\t\t}, options );\n\n\t\tconst texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\ttexture.flipY = false;\n\t\ttexture.generateMipmaps = options.generateMipmaps;\n\t\ttexture.internalFormat = options.internalFormat;\n\n\t\tthis.textures = [];\n\n\t\tconst count = options.count;\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.textures[ i ] = texture.clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures[ 0 ];\n\n\t}\n\n\tset texture( value ) {\n\n\t\tthis.textures[ 0 ] = value;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.textures.length; i < il; i ++ ) {\n\n\t\t\t\tthis.textures[ i ].image.width = width;\n\t\t\t\tthis.textures[ i ].image.height = height;\n\t\t\t\tthis.textures[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.textures.length = 0;\n\n\t\tfor ( let i = 0, il = source.textures.length; i < il; i ++ ) {\n\n\t\t\tthis.textures[ i ] = source.textures[ i ].clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// sets this quaternion to a uniform random unit quaternnion\n\n\t\t// Ken Shoemake\n\t\t// Uniform random rotations\n\t\t// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\n\n\t\tconst theta1 = 2 * Math.PI * Math.random();\n\t\tconst theta2 = 2 * Math.PI * Math.random();\n\n\t\tconst x0 = Math.random();\n\t\tconst r1 = Math.sqrt( 1 - x0 );\n\t\tconst r2 = Math.sqrt( x0 );\n\n\t\treturn this.set(\n\t\t\tr1 * Math.sin( theta1 ),\n\t\t\tr1 * Math.cos( theta1 ),\n\t\t\tr2 * Math.sin( theta2 ),\n\t\t\tr2 * Math.cos( theta2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst theta = Math.random() * Math.PI * 2;\n\t\tconst u = Math.random() * 2 - 1;\n\t\tconst c = Math.sqrt( 1 - u * u );\n\n\t\tthis.x = c * Math.cos( theta );\n\t\tthis.y = u;\n\t\tthis.z = c * Math.sin( theta );\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$4.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$4.elements[ 0 ] *= invSX;\n\t\t_m1$4.elements[ 1 ] *= invSX;\n\t\t_m1$4.elements[ 2 ] *= invSX;\n\n\t\t_m1$4.elements[ 4 ] *= invSY;\n\t\t_m1$4.elements[ 5 ] *= invSY;\n\t\t_m1$4.elements[ 6 ] *= invSY;\n\n\t\t_m1$4.elements[ 8 ] *= invSZ;\n\t\t_m1$4.elements[ 9 ] *= invSZ;\n\t\t_m1$4.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$4 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$4 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$2 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$2.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$2, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$3 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nconst _childaddedEvent = { type: 'childadded', child: null };\nconst _childremovedEvent = { type: 'childremoved', child: null };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$3.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$3.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$3.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$3 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$3.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$3 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tobject.removeFromParent();\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t\t_childaddedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t\t_childaddedEvent.child = null;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t\t_childremovedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childremovedEvent );\n\t\t\t_childremovedEvent.child = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$3.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$3.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$3 );\n\n\t\tobject.removeFromParent();\n\t\tobject.parent = this;\n\t\tthis.children.push( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t_childaddedEvent.child = object;\n\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t_childaddedEvent.child = null;\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxGeometryCount = this._maxGeometryCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$2 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$2.x );\n\t\ttarget.addScaledVector( v2, _v3$2.y );\n\t\ttarget.addScaledVector( v3, _v3$2.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\t\tthis.alphaHash = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== undefined && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray();\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\twarnOnce( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$2 = 0;\n\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1$2.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst positionAttribute = attributes.position;\n\t\tconst normalAttribute = attributes.normal;\n\t\tconst uvAttribute = attributes.uv;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) );\n\n\t\t}\n\n\t\tconst tangentAttribute = this.getAttribute( 'tangent' );\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( positionAttribute, a );\n\t\t\tvB.fromBufferAttribute( positionAttribute, b );\n\t\t\tvC.fromBufferAttribute( positionAttribute, c );\n\n\t\t\tuvA.fromBufferAttribute( uvAttribute, a );\n\t\t\tuvB.fromBufferAttribute( uvAttribute, b );\n\t\t\tuvC.fromBufferAttribute( uvAttribute, c );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: index.count\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindex.getX( j + 0 ),\n\t\t\t\t\tindex.getX( j + 1 ),\n\t\t\t\t\tindex.getX( j + 2 )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromBufferAttribute( normalAttribute, v );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, w );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( index.getX( j + 0 ) );\n\t\t\t\thandleVertex( index.getX( j + 1 ) );\n\t\t\t\thandleVertex( index.getX( j + 2 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _normalA = /*@__PURE__*/ new Vector3();\nconst _normalB = /*@__PURE__*/ new Vector3();\nconst _normalC = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv1, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv1, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv1, c );\n\n\t\t\tintersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\t_normalA.fromBufferAttribute( normal, a );\n\t\t\t_normalB.fromBufferAttribute( normal, b );\n\t\t\t_normalC.fromBufferAttribute( normal, c );\n\n\t\t\tintersection.normal = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\tif ( currentRenderTarget === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\t// https://github.com/mrdoob/three.js/issues/27868\n\tif ( currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\treturn currentRenderTarget.texture.colorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tclipCullDistance: false, // set to use vertex shader clipping\n\t\t\tmultiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _v3$1 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3$1.set( - 1, - 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t\t_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Copies the result into the target Vector2, where x is width and y is height.\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = - 90; // negative fov is not an error\nconst aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$5.center.set( 0, 0, 0 );\n\t\t_sphere$5.radius = 0.7071067811865476;\n\t\t_sphere$5.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl ) {\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\t\tconst size = array.byteLength;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version,\n\t\t\tsize: size\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute._updateRange; // @deprecated, r159\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 && updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t}\n\n\t\tif ( updateRanges.length !== 0 ) {\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\n\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\t// @deprecated, r159\n\t\tif ( updateRange.count !== - 1 ) {\n\n\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\\n\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n\\t#endif\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\tattribute float batchId;\\n\\tuniform highp sampler2D batchingTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( batchId );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\t\\tfloat distanceToPlane, distanceGradient;\\n\\t\\tfloat clipOpacity = 1.0;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\tif ( clipOpacity == 0.0 ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tfloat unionClipOpacity = 1.0;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\t\\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tclipOpacity *= 1.0 - unionClipOpacity;\\n\\t\\t#endif\\n\\t\\tdiffuseColor.a *= clipOpacity;\\n\\t\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tbool clipped = true;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tif ( clipped ) discard;\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferOETF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn sRGBTransferOETF( value );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform mat3 envMapRotation;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( LEGACY_LIGHTS )\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#else\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.roughness;\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometryPosition, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvFragDepth = 1.0 + gl_Position.w;\\n\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphinstance_vertex = \"#ifdef USE_INSTANCING_MORPH\\n\\tfloat morphTargetInfluences[MORPHTARGETS_COUNT];\\n\\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tmorphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\\n\\t}\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_INSTANCING_MORPH\\n\\t\\tuniform float morphTargetBaseInfluence;\\n\\t#endif\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\t#ifndef USE_INSTANCING_MORPH\\n\\t\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\t#endif\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec2 packDepthToRG( in highp float v ) {\\n\\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn depth * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\t\\n\\t\\tfloat lightToPositionLength = length( lightToPosition );\\n\\t\\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\\n\\t\\t\\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\t\\tdp += shadowBias;\\n\\t\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\t\\tshadow = (\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\treturn color;\\n}\\nvec3 NeutralToneMapping( vec3 color ) {\\n\\tfloat startCompression = 0.8 - 0.04;\\n\\tfloat desaturation = 0.15;\\n\\tcolor *= toneMappingExposure;\\n\\tfloat x = min(color.r, min(color.g, color.b));\\n\\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\\n\\tcolor -= offset;\\n\\tfloat peak = max(color.r, max(color.g, color.b));\\n\\tif (peak < startCompression) return color;\\n\\tfloat d = 1. - startCompression;\\n\\tfloat newPeak = 1. - d * d / (peak + d - startCompression);\\n\\tcolor *= newPeak / peak;\\n\\tfloat g = 1. - 1. / (desaturation * (peak - newPeak) + 1.);\\n\\treturn mix(color, newPeak * vec3(1, 1, 1), g);\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nuniform mat3 backgroundRotation;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphinstance_vertex: morphinstance_vertex,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tenvMapRotation: { value: /*@__PURE__*/ new Matrix3() },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 },\n\t\t\tbackgroundRotation: { value: /*@__PURE__*/ new Matrix3() }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\nconst _e1$1 = /*@__PURE__*/ new Euler();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\t_e1$1.copy( scene.backgroundRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1$1.x *= - 1; _e1$1.y *= - 1; _e1$1.z *= - 1;\n\n\t\t\tif ( background.isCubeTexture && background.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1$1.y *= - 1;\n\t\t\t\t_e1$1.z *= - 1;\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1$1.makeRotationFromEuler( _e1$1 ) );\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, attributes ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tconst state = getBindingState( geometry, program, material );\n\n\t\tif ( currentState !== state ) {\n\n\t\t\tcurrentState = state;\n\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t}\n\n\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\treturn gl.createVertexArray();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\treturn gl.bindVertexArray( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\treturn gl.deleteVertexArray( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tgl.vertexAttribDivisor( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes\n\n\t\t\t\t\tconst integer = ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info ) {\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tgl.drawArraysInstanced( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ], counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\n\tconst maxSamples = gl.getParameter( gl.MAX_SAMPLES );\n\n\treturn {\n\n\t\tisWebGL2: true, // keeping this for backwards compatibility\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\nlet _oldXrEnabled = false;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t * The smallest supported equirectangular image size is 64 x 32.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t * The smallest supported cube size is 16 x 16.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\tthis._renderer.xr.enabled = _oldXrEnabled;\n\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\tconst currentPMREMVersion = renderTarget !== undefined ? renderTarget.texture.pmremVersion : 0;\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion ) {\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( renderTarget !== undefined ) {\n\n\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function () {\n\n\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\t\t\tgetExtension( 'WEBGL_render_shared_exponent' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else if ( geometryPosition !== undefined ) {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info ) {\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tgl.drawElementsInstanced( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet entry = morphTextures.get( geometry );\n\n\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\tlet vertexDataCount = 0;\n\n\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\tlet height = 1;\n\n\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t}\n\n\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\ttexture.type = FloatType;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\t// fill buffer\n\n\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tentry = {\n\t\t\t\tcount: morphTargetsCount,\n\t\t\t\ttexture: texture,\n\t\t\t\tsize: new Vector2( width, height )\n\t\t\t};\n\n\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\tfunction disposeTexture() {\n\n\t\t\t\ttexture.dispose();\n\n\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t}\n\n\t\t//\n\t\tif ( object.isInstancedMesh === true && object.morphTexture !== null ) {\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTexture', object.morphTexture, textures );\n\n\t\t} else {\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\nemptyShadowTexture.compareFunction = LessEqualCompare;\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2i( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3i( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4i( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2ui( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3ui( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\tconst emptyTexture2D = ( this.type === gl.SAMPLER_2D_SHADOW ) ? emptyShadowTexture : emptyTexture;\n\n\ttextures.setTexture2D( v || emptyTexture2D, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\tconst encodingPrimaries = ColorManagement.getPrimaries( colorSpace );\n\n\tlet gamutMapping;\n\n\tif ( workingPrimaries === encodingPrimaries ) {\n\n\t\tgamutMapping = '';\n\n\t} else if ( workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries ) {\n\n\t\tgamutMapping = 'LinearDisplayP3ToLinearSRGB';\n\n\t} else if ( workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries ) {\n\n\t\tgamutMapping = 'LinearSRGBToLinearDisplayP3';\n\n\t}\n\n\tswitch ( colorSpace ) {\n\n\t\tcase LinearSRGBColorSpace:\n\t\tcase LinearDisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t\tcase SRGBColorSpace:\n\t\tcase DisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\treturn `vec4 ${functionName}( vec4 value ) { return ${components[ 0 ]}( ${components[ 1 ]}( value ) ); }`;\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase NeutralToneMapping:\n\t\t\ttoneMappingName = 'Neutral';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '',\n\t\tparameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nconst shaderChunkMap = new Map( [\n\t[ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154\n\t[ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154\n\t[ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154\n] );\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = `precision ${parameters.precision} float;\n\tprecision ${parameters.precision} int;\n\tprecision ${parameters.precision} sampler2D;\n\tprecision ${parameters.precision} samplerCube;\n\tprecision ${parameters.precision} sampler3D;\n\tprecision ${parameters.precision} sampler2DArray;\n\tprecision ${parameters.precision} sampler2DShadow;\n\tprecision ${parameters.precision} samplerCubeShadow;\n\tprecision ${parameters.precision} sampler2DArrayShadow;\n\tprecision ${parameters.precision} isampler2D;\n\tprecision ${parameters.precision} isampler3D;\n\tprecision ${parameters.precision} isamplerCube;\n\tprecision ${parameters.precision} isampler2DArray;\n\tprecision ${parameters.precision} usampler2D;\n\tprecision ${parameters.precision} usampler3D;\n\tprecision ${parameters.precision} usamplerCube;\n\tprecision ${parameters.precision} usampler2DArray;\n\t`;\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customVertexExtensions = generateVertexExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\t\t\tparameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_MORPH',\n\n\t\t\t'\tuniform sampler2D morphTexture;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '',\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\tcustomVertexExtensions,\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Material Name: ' + self.name + '\\n' +\n\t\t\t\t\t\t'Material Type: ' + self.type + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id$1 = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id$1 ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst _activeChannels = new Set();\n\tconst programs = [];\n\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\t_activeChannels.add( value );\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tbatching: IS_BATCHEDMESH,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\t\t\tinstancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\t\t\talphaToCoverage: !! material.alphaToCoverage,\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( !! fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: toneMapping,\n\t\t\tuseLegacyLights: renderer._useLegacyLights,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),\n\t\t\textensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions.has( 'WEBGL_multi_draw' ),\n\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\t// the usage of getChannel() determines the active texture channels for this shader\n\n\t\tparameters.vertexUv1s = _activeChannels.has( 1 );\n\t\tparameters.vertexUv2s = _activeChannels.has( 2 );\n\t\tparameters.vertexUv3s = _activeChannels.has( 3 );\n\n\t\t_activeChannels.clear();\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingMorph )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.useLegacyLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.alphaToCoverage )\n\t\t\t_programLayers.enable( 20 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1,\n\n\t\t\tnumLightProbes: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, useLegacyLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( useLegacyLights === true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions ) {\n\n\tconst lights = new WebGLLights( extensions );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( useLegacyLights ) {\n\n\t\tlights.setup( lightsArray, useLegacyLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights,\n\n\t\ttransmissionRenderTarget: null\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = _renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\n\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl ) {\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t}\n\n\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tequationToGL[ MinEquation ] = gl.MIN;\n\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( gl.BLEND );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ONE, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _imageDimensions = new Vector2();\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\tconst dimensions = getDimensions( image );\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( dimensions.width > maxSize || dimensions.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( dimensions.width, dimensions.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ||\n\t\t\t\t( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) ) {\n\n\t\t\t\tconst width = Math.floor( scale * dimensions.width );\n\t\t\t\tconst height = Math.floor( scale * dimensions.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture ) {\n\n\t\treturn texture.generateMipmaps && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RG16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RG32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RG8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RG16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RG32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGB ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_INT_5_9_9_9_REV ) internalFormat = _gl.RGB9_E5;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\tinfo.memory.textures --;\n\n\t\t\t}\n\n\t\t\tproperties.remove( textures[ i ] );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture ) {\n\n\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false &&\n\t\t\t( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||\n\t\t\ttexture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tlet image = resizeImage( texture.image, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tlet glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tconst levels = getMipLevels( texture, image );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tconst dimensions = getDimensions( mipmaps[ 0 ] );\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tconst dimensions = getDimensions( image );\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], true, capabilities.maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tlet levels = getMipLevels( texture, image );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tconst dimensions = getDimensions( cubeImage[ 0 ] );\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\tif ( ! isMultipleRenderTargets ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture );\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.textures;\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\n\t\t\t\t\t// resolving stencil is slow with a D3D backend. disable it for all transmission render targets (see #27799)\n\n\t\t\t\t\tif ( renderTarget.stencilBuffer && renderTargetProperties.__isTransmissionRenderTarget !== true ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction getDimensions( image ) {\n\n\t\tif ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) {\n\n\t\t\t// if intrinsic data are not available, fallback to width/height\n\n\t\t\t_imageDimensions.width = image.naturalWidth || image.width;\n\t\t\t_imageDimensions.height = image.naturalHeight || image.height;\n\n\t\t} else if ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) {\n\n\t\t\t_imageDimensions.width = image.displayWidth;\n\t\t\t_imageDimensions.height = image.displayHeight;\n\n\t\t} else {\n\n\t\t\t_imageDimensions.width = image.width;\n\t\t\t_imageDimensions.height = image.height;\n\n\t\t}\n\n\t\treturn _imageDimensions;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions ) {\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedInt5999Type ) return gl.UNSIGNED_INT_5_9_9_9_REV;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\t\tif ( p === HalfFloatType ) return gl.HALF_FLOAT;\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBFormat ) return gl.RGB;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( transfer === SRGBTransfer ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) return gl.UNSIGNED_INT_24_8;\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nconst _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\n\nconst _occlusion_fragment = `\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}`;\n\nclass WebXRDepthSensing {\n\n\tconstructor() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t\tthis.depthNear = 0;\n\t\tthis.depthFar = 0;\n\n\t}\n\n\tinit( renderer, depthData, renderState ) {\n\n\t\tif ( this.texture === null ) {\n\n\t\t\tconst texture = new Texture();\n\n\t\t\tconst texProps = renderer.properties.get( texture );\n\t\t\ttexProps.__webglTexture = depthData.texture;\n\n\t\t\tif ( ( depthData.depthNear != renderState.depthNear ) || ( depthData.depthFar != renderState.depthFar ) ) {\n\n\t\t\t\tthis.depthNear = depthData.depthNear;\n\t\t\t\tthis.depthFar = depthData.depthFar;\n\n\t\t\t}\n\n\t\t\tthis.texture = texture;\n\n\t\t}\n\n\t}\n\n\trender( renderer, cameraXR ) {\n\n\t\tif ( this.texture !== null ) {\n\n\t\t\tif ( this.mesh === null ) {\n\n\t\t\t\tconst viewport = cameraXR.cameras[ 0 ].viewport;\n\t\t\t\tconst material = new ShaderMaterial( {\n\t\t\t\t\tvertexShader: _occlusion_vertex,\n\t\t\t\t\tfragmentShader: _occlusion_fragment,\n\t\t\t\t\tuniforms: {\n\t\t\t\t\t\tdepthColor: { value: this.texture },\n\t\t\t\t\t\tdepthWidth: { value: viewport.z },\n\t\t\t\t\t\tdepthHeight: { value: viewport.w }\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tthis.mesh = new Mesh( new PlaneGeometry( 20, 20 ), material );\n\n\t\t\t}\n\n\t\t\trenderer.render( this.mesh, cameraXR );\n\n\t\t}\n\n\t}\n\n\treset() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\n\t\tconst depthSensing = new WebXRDepthSensing();\n\t\tconst attributes = gl.getContextAttributes();\n\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\t\tcameraXR.layers.enable( 1 );\n\t\tcameraXR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\tdepthSensing.reset();\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, false );\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\tif ( session.renderState.layers === undefined ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: attributes.antialias,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tif ( depthSensing.texture !== null ) {\n\n\t\t\t\tcamera.near = depthSensing.depthNear;\n\t\t\t\tcamera.far = depthSensing.depthFar;\n\n\t\t\t}\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t\tcameraL.near = _currentDepthNear;\n\t\t\t\tcameraL.far = _currentDepthFar;\n\t\t\t\tcameraR.near = _currentDepthNear;\n\t\t\t\tcameraR.far = _currentDepthFar;\n\n\t\t\t\tcameraL.updateProjectionMatrix();\n\t\t\t\tcameraR.updateProjectionMatrix();\n\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.hasDepthSensing = function () {\n\n\t\t\treturn depthSensing.texture !== null;\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tconst enabledFeatures = session.enabledFeatures;\n\n\t\t\t\tif ( enabledFeatures && enabledFeatures.includes( 'depth-sensing' ) ) {\n\n\t\t\t\t\tconst depthData = glBinding.getDepthInformation( views[ 0 ] );\n\n\t\t\t\t\tif ( depthData && depthData.isValid && depthData.texture ) {\n\n\t\t\t\t\t\tdepthSensing.init( renderer, depthData, session.renderState );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdepthSensing.render( renderer, cameraXR );\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nconst _e1 = /*@__PURE__*/ new Euler();\nconst _m1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst envMap = materialProperties.envMap;\n\t\tconst envMapRotation = materialProperties.envMapRotation;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\t_e1.copy( envMapRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1.x *= - 1; _e1.y *= - 1; _e1.z *= - 1;\n\n\t\t\tif ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1.y *= - 1;\n\t\t\t\t_e1.z *= - 1;\n\n\t\t\t}\n\n\t\t\tuniforms.envMapRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) );\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ); // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t// Calculate the chunk offset\n\t\t\t\t\tconst chunkOffsetUniform = offset % chunkSize;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkOffsetUniform !== 0 && ( chunkSize - chunkOffsetUniform ) < info.boundary ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkOffsetUniform );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = false,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );\n\n\t\t\t}\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// physical lights\n\n\t\tthis._useLegacyLights = false;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector2 = new Vector2();\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextName, contextAttributes ) {\n\n\t\t\tconst context = canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextName = 'webgl2';\n\n\t\t\t\t_gl = getContext( contextName, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextName ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\t\t\textensions.init();\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\t\tutils = new WebGLUtils( _gl, extensions );\n\n\t\t\tstate = new WebGLState( _gl );\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, attributes );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\n\t\t\t//\n\n\t\t\tif ( xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false ) {\n\n\t\t\t\tbackground.render( currentRenderList, scene );\n\n\t\t\t}\n\n\t\t\t// render scene\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector3\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( currentRenderState.state.transmissionRenderTarget === null ) {\n\n\t\t\t\tcurrentRenderState.state.transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: 4,\n\t\t\t\t\tstencilBuffer: stencil\n\t\t\t\t} );\n\n\t\t\t\tconst renderTargetProperties = properties.get( currentRenderState.state.transmissionRenderTarget );\n\t\t\t\trenderTargetProperties.__isTransmissionRenderTarget = true;\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\tconst transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget;\n\n\t\t\t_this.getDrawingBufferSize( _vector2 );\n\t\t\ttransmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = renderItem.material;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\t\t\tmaterialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.instancingMorph = parameters.instancingMorph;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) {\n\n\t\t\t\tm_uniforms.envMapIntensity.value = scene.environmentIntensity;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) );\n\n\t\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t\ttextureType !== FloatType && ! halfFloatSupportedByExt ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = srcTexture.image.width;\n\t\t\tconst height = srcTexture.image.height;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t\t// As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = Math.round( sourceBox.max.x - sourceBox.min.x );\n\t\t\tconst height = Math.round( sourceBox.max.y - sourceBox.min.y );\n\t\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst unpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst unpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst unpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst unpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst unpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, sourceBox.min.x );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );\n\n\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, unpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, unpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, unpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, unpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\t\tgl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\n\t}\n\n\tget useLegacyLights() { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\treturn this._useLegacyLights;\n\n\t}\n\n\tset useLegacyLights( value ) { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\tthis._useLegacyLights = value;\n\n\t}\n\n}\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\t\tthis.backgroundRotation = new Euler();\n\n\t\tthis.environmentIntensity = 1;\n\t\tthis.environmentRotation = new Euler();\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\t\tthis.backgroundRotation.copy( source.backgroundRotation );\n\n\t\tthis.environmentIntensity = source.environmentIntensity;\n\t\tthis.environmentRotation.copy( source.environmentRotation );\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\t\tdata.object.backgroundRotation = this.backgroundRotation.toArray();\n\n\t\tif ( this.environmentIntensity !== 1 ) data.object.environmentIntensity = this.environmentIntensity;\n\t\tdata.object.environmentRotation = this.environmentRotation.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\twarnOnce( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.data.stride + this.offset + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = material;\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = AttachedBindMode;\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tapplyBoneTransform( index, vector ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix$1 = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix$1;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\t\tthis.morphTexture = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$3 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tgetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tconst len = objectInfluences.length + 1; // All influences + the baseInfluenceSum\n\n\t\tconst dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tobjectInfluences[ i ] = array[ dataIndex + i ];\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tsetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst len = objectInfluences.length + 1; // morphBaseInfluence + all influences\n\n\t\tif ( this.morphTexture === null ) {\n\n\t\t\tthis.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );\n\n\t\t}\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t}\n\n\t\tconst morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tconst dataIndex = len * index;\n\n\t\tarray[ dataIndex ] = morphBaseInfluence;\n\n\t\tarray.set( objectInfluences, dataIndex + 1 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\tif ( this.morphTexture !== null ) {\n\n\t\t\tthis.morphTexture.dispose();\n\t\t\tthis.morphTexture = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( drawRange, z ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: - 1,\n\t\t\t\tcount: - 1,\n\t\t\t\tz: - 1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = drawRange.start;\n\t\titem.count = drawRange.count;\n\t\titem.z = z;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst ID_ATTR_NAME = 'batchId';\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _invMatrixWorld = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// @TODO: SkinnedMesh support?\n// @TODO: geometry.groups support?\n// @TODO: geometry.drawRange support?\n// @TODO: geometry.morphAttributes support?\n// @TODO: Support uniform parameter per geometry\n// @TODO: Add an \"optimize\" function to pack geometry and remove data gaps\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\nclass BatchedMesh extends Mesh {\n\n\tget maxGeometryCount() {\n\n\t\treturn this._maxGeometryCount;\n\n\t}\n\n\tconstructor( maxGeometryCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\tthis.isBatchedMesh = true;\n\t\tthis.perObjectFrustumCulled = true;\n\t\tthis.sortObjects = true;\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\t\tthis.customSort = null;\n\n\t\tthis._drawRanges = [];\n\t\tthis._reservedRanges = [];\n\n\t\tthis._visibility = [];\n\t\tthis._active = [];\n\t\tthis._bounds = [];\n\n\t\tthis._maxGeometryCount = maxGeometryCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tthis._geometryInitialized = false;\n\t\tthis._geometryCount = 0;\n\t\tthis._multiDrawCounts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._visibilityChanged = true;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\n\t\tthis._initMatricesTexture();\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxGeometryCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxGeometryCount = this._maxGeometryCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\tconst indexArray = maxVertexCount > 65536\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tconst idArray = maxGeometryCount > 65536\n\t\t\t\t? new Uint32Array( maxVertexCount )\n\t\t\t\t: new Uint16Array( maxVertexCount );\n\t\t\tgeometry.setAttribute( ID_ATTR_NAME, new BufferAttribute( idArray, 1 ) );\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry attributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check that the geometry doesn't have a version of our reserved id attribute\n\t\tif ( geometry.getAttribute( ID_ATTR_NAME ) ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry cannot use attribute \"${ ID_ATTR_NAME }\"` );\n\n\t\t}\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst active = this._active;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingBoxAt( i, _box$1 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst active = this._active;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\taddGeometry( geometry, vertexCount = - 1, indexCount = - 1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\t// ensure we're not over geometry\n\t\tif ( this._geometryCount >= this._maxGeometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\t// get the necessary range fo the geometry\n\t\tconst reservedRange = {\n\t\t\tvertexStart: - 1,\n\t\t\tvertexCount: - 1,\n\t\t\tindexStart: - 1,\n\t\t\tindexCount: - 1,\n\t\t};\n\n\t\tlet lastRange = null;\n\t\tconst reservedRanges = this._reservedRanges;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst bounds = this._bounds;\n\t\tif ( this._geometryCount !== 0 ) {\n\n\t\t\tlastRange = reservedRanges[ reservedRanges.length - 1 ];\n\n\t\t}\n\n\t\tif ( vertexCount === - 1 ) {\n\n\t\t\treservedRange.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexCount = vertexCount;\n\n\t\t}\n\n\t\tif ( lastRange === null ) {\n\n\t\t\treservedRange.vertexStart = 0;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n\n\t\t}\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tif ( indexCount\t=== - 1 ) {\n\n\t\t\t\treservedRange.indexCount = index.count;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexCount = indexCount;\n\n\t\t\t}\n\n\t\t\tif ( lastRange === null ) {\n\n\t\t\t\treservedRange.indexStart = 0;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (\n\t\t\treservedRange.indexStart !== - 1 &&\n\t\t\treservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount ||\n\t\t\treservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\n\t\t// push new visibility states\n\t\tvisibility.push( true );\n\t\tactive.push( true );\n\n\t\t// update id\n\t\tconst geometryId = this._geometryCount;\n\t\tthis._geometryCount ++;\n\n\t\t// initialize matrix information\n\t\t_identityMatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\t// add the reserved range and draw range objects\n\t\treservedRanges.push( reservedRange );\n\t\tdrawRanges.push( {\n\t\t\tstart: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n\t\t\tcount: - 1\n\t\t} );\n\t\tbounds.push( {\n\t\t\tboxInitialized: false,\n\t\t\tbox: new Box3(),\n\n\t\t\tsphereInitialized: false,\n\t\t\tsphere: new Sphere()\n\t\t} );\n\n\t\t// set the id for the geometry\n\t\tconst idAttribute = this.geometry.getAttribute( ID_ATTR_NAME );\n\t\tfor ( let i = 0; i < reservedRange.vertexCount; i ++ ) {\n\n\t\t\tidAttribute.setX( reservedRange.vertexStart + i, geometryId );\n\n\t\t}\n\n\t\tidAttribute.needsUpdate = true;\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\treturn geometryId;\n\n\t}\n\n\tsetGeometryAt( id, geometry ) {\n\n\t\tif ( id >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst reservedRange = this._reservedRanges[ id ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > reservedRange.indexCount ||\n\t\t\tgeometry.attributes.position.count > reservedRange.vertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry over\n\t\tconst vertexStart = reservedRange.vertexStart;\n\t\tconst vertexCount = reservedRange.vertexCount;\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = vertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\t\t\tdstAttribute.addUpdateRange( vertexStart * itemSize, vertexCount * itemSize );\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = reservedRange.indexStart;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedRange.indexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\t\t\tdstIndex.addUpdateRange( indexStart, reservedRange.indexCount );\n\n\t\t}\n\n\t\t// store the bounding boxes\n\t\tconst bound = this._bounds[ id ];\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbound.box.copy( geometry.boundingBox );\n\t\t\tbound.boxInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.boxInitialized = false;\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbound.sphere.copy( geometry.boundingSphere );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.sphereInitialized = false;\n\n\t\t}\n\n\t\t// set drawRange count\n\t\tconst drawRange = this._drawRanges[ id ];\n\t\tconst posAttr = geometry.getAttribute( 'position' );\n\t\tdrawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn id;\n\n\t}\n\n\tdeleteGeometry( geometryId ) {\n\n\t\t// Note: User needs to call optimize() afterward to pack the data.\n\n\t\tconst active = this._active;\n\t\tif ( geometryId >= active.length || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tactive[ geometryId ] = false;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t// get bounding box and compute it if it doesn't exist\n\tgetBoundingBoxAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst bound = this._bounds[ id ];\n\t\tconst box = bound.box;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.boxInitialized === false ) {\n\n\t\t\tbox.makeEmpty();\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tbound.boxInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( box );\n\t\treturn target;\n\n\t}\n\n\t// get bounding sphere and compute it if it doesn't exist\n\tgetBoundingSphereAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst bound = this._bounds[ id ];\n\t\tconst sphere = bound.sphere;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.sphereInitialized === false ) {\n\n\t\t\tsphere.makeEmpty();\n\n\t\t\tthis.getBoundingBoxAt( id, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( sphere );\n\t\treturn target;\n\n\t}\n\n\tsetMatrixAt( geometryId, matrix ) {\n\n\t\t// @TODO: Map geometryId to index of the arrays because\n\t\t// optimize() can make geometryId mismatch the index\n\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tmatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetMatrixAt( geometryId, matrix ) {\n\n\t\tconst active = this._active;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn matrix.fromArray( matricesArray, geometryId * 16 );\n\n\t}\n\n\tsetVisibleAt( geometryId, value ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// if the geometry is out of range, not active, or visibility state\n\t\t// does not change then return early\n\t\tif (\n\t\t\tgeometryId >= geometryCount ||\n\t\t\tactive[ geometryId ] === false ||\n\t\t\tvisibility[ geometryId ] === value\n\t\t) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvisibility[ geometryId ] = value;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetVisibleAt( geometryId ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// return early if the geometry is out of range or not active\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn visibility[ geometryId ];\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( ! visibility[ i ] || ! active[ i ] ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst drawRange = drawRanges[ i ];\n\t\t\t_mesh.geometry.setDrawRange( drawRange.start, drawRange.count );\n\n\t\t\t// ge the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( i, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( i, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._drawRanges = source._drawRanges.map( range => ( { ...range } ) );\n\t\tthis._reservedRanges = source._reservedRanges.map( range => ( { ...range } ) );\n\n\t\tthis._visibility = source._visibility.slice();\n\t\tthis._active = source._active.slice();\n\t\tthis._bounds = source._bounds.map( bound => ( {\n\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\tbox: bound.box.clone(),\n\n\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\tsphere: bound.sphere.clone()\n\t\t} ) );\n\n\t\tthis._maxGeometryCount = source._maxGeometryCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.slice();\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\t\treturn this;\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst active = this._active;\n\t\tconst visibility = this._visibility;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_projScreenMatrix$2\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\trenderer.coordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet count = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_invMatrixWorld.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _invMatrixWorld );\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] && active[ i ] ) {\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix$1 );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst z = _vector$5.distanceTo( _sphere$2.center );\n\t\t\t\t\t\t_renderList.push( drawRanges[ i ], z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ count ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ count ] = item.count;\n\t\t\t\tcount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] && active[ i ] ) {\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst range = drawRanges[ i ];\n\t\t\t\t\t\tmultiDrawStarts[ count ] = range.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ count ] = range.count;\n\t\t\t\t\t\tcount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._multiDrawCount = count;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tlength: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (\u00B11, \u00B11, \u00B11)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, \u00B11/\u03C6, \u00B1\u03C6)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (\u00B11/\u03C6, \u00B1\u03C6, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (\u00B1\u03C6, 0, \u00B11/\u03C6)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name = '', duration = - 1, tracks = [], blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' ) || response.headers.get( 'X-File-Size' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay;\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = \u03C0 * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 \u03C0 luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // \u03C0 * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * \u03C0 / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( \u03C0 / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( \u03C0 / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( \u03C0 / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = MaterialLoader.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapRotation !== undefined ) material.envMapRotation.fromArray( json.envMapRotation );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\t\t\t\tif ( data.backgroundRotation !== undefined ) object.backgroundRotation.fromArray( data.backgroundRotation );\n\n\t\t\t\tif ( data.environmentIntensity !== undefined ) object.environmentIntensity = data.environmentIntensity;\n\t\t\t\tif ( data.environmentRotation !== undefined ) object.environmentRotation.fromArray( data.environmentRotation );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxGeometryCount = data.maxGeometryCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.isPlaying === true && this.source.detune !== undefined ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tsetFromXRController( controller ) {\n\n\t\t_matrix.identity().extractRotation( controller.matrixWorld );\n\n\t\tthis.ray.origin.setFromMatrixPosition( controller.matrixWorld );\n\t\tthis.ray.direction.set( 0, 0, - 1 ).applyMatrix4( _matrix );\n\n\t\treturn this;\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersect( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersect( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersect( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersect( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * phi (the polar angle) is measured from the positive y-axis. The positive y-axis is up.\n * theta (the azimuthal angle) is measured from the positive z-axis.\n */\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t// update the local matrix based on the parent and light target transforms\n\t\tif ( this.parent ) {\n\n\t\t\tthis.parent.updateWorldMatrix( true );\n\n\t\t\tthis.matrix\n\t\t\t\t.copy( this.parent.matrixWorld )\n\t\t\t\t.invert()\n\t\t\t\t.multiply( this.light.matrixWorld );\n\n\t\t} else {\n\n\t\t\tthis.matrix.copy( this.light.matrixWorld );\n\n\t\t}\n\n\t\tthis.matrixWorld.copy( this.light.matrixWorld );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget { // @deprecated, r162\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tconsole.warn( 'THREE.WebGLMultipleRenderTargets has been deprecated and will be removed in r172. Use THREE.WebGLRenderTarget and set the \"count\" parameter to enable MRT.' );\n\n\t\tsuper( width, height, { ...options, count } );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures;\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DisplayP3ColorSpace, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearDisplayP3ColorSpace, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, P3Primaries, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, Rec709Primaries, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, createCanvasElement };\n", "import {\n\tBufferGeometry,\n\tBufferAttribute,\n\tLineBasicMaterial,\n\tLine,\n\tMathUtils\n} from 'three';\n\nclass PositionalAudioHelper extends Line {\n\n\tconstructor( audio, range = 1, divisionsInnerAngle = 16, divisionsOuterAngle = 2 ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst divisions = divisionsInnerAngle + divisionsOuterAngle * 2;\n\t\tconst positions = new Float32Array( ( divisions * 3 + 3 ) * 3 );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tconst materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } );\n\t\tconst materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } );\n\n\t\tsuper( geometry, [ materialOuterAngle, materialInnerAngle ] );\n\n\t\tthis.audio = audio;\n\t\tthis.range = range;\n\t\tthis.divisionsInnerAngle = divisionsInnerAngle;\n\t\tthis.divisionsOuterAngle = divisionsOuterAngle;\n\t\tthis.type = 'PositionalAudioHelper';\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst audio = this.audio;\n\t\tconst range = this.range;\n\t\tconst divisionsInnerAngle = this.divisionsInnerAngle;\n\t\tconst divisionsOuterAngle = this.divisionsOuterAngle;\n\n\t\tconst coneInnerAngle = MathUtils.degToRad( audio.panner.coneInnerAngle );\n\t\tconst coneOuterAngle = MathUtils.degToRad( audio.panner.coneOuterAngle );\n\n\t\tconst halfConeInnerAngle = coneInnerAngle / 2;\n\t\tconst halfConeOuterAngle = coneOuterAngle / 2;\n\n\t\tlet start = 0;\n\t\tlet count = 0;\n\t\tlet i;\n\t\tlet stride;\n\n\t\tconst geometry = this.geometry;\n\t\tconst positionAttribute = geometry.attributes.position;\n\n\t\tgeometry.clearGroups();\n\n\t\t//\n\n\t\tfunction generateSegment( from, to, divisions, materialIndex ) {\n\n\t\t\tconst step = ( to - from ) / divisions;\n\n\t\t\tpositionAttribute.setXYZ( start, 0, 0, 0 );\n\t\t\tcount ++;\n\n\t\t\tfor ( i = from; i < to; i += step ) {\n\n\t\t\t\tstride = start + count;\n\n\t\t\t\tpositionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range );\n\t\t\t\tpositionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range );\n\t\t\t\tpositionAttribute.setXYZ( stride + 2, 0, 0, 0 );\n\n\t\t\t\tcount += 3;\n\n\t\t\t}\n\n\t\t\tgeometry.addGroup( start, count, materialIndex );\n\n\t\t\tstart += count;\n\t\t\tcount = 0;\n\n\t\t}\n\n\t\t//\n\n\t\tgenerateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 );\n\t\tgenerateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 );\n\t\tgenerateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 );\n\n\t\t//\n\n\t\tpositionAttribute.needsUpdate = true;\n\n\t\tif ( coneInnerAngle === coneOuterAngle ) this.material[ 0 ].visible = false;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material[ 0 ].dispose();\n\t\tthis.material[ 1 ].dispose();\n\n\t}\n\n}\n\n\nexport { PositionalAudioHelper };\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tFileLoader,\n\tLoader,\n\tLinearSRGBColorSpace,\n\tSRGBColorSpace\n} from 'three';\n\nconst _taskCache = new WeakMap();\n\nclass DRACOLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.decoderPath = '';\n\t\tthis.decoderConfig = {};\n\t\tthis.decoderBinary = null;\n\t\tthis.decoderPending = null;\n\n\t\tthis.workerLimit = 4;\n\t\tthis.workerPool = [];\n\t\tthis.workerNextTaskID = 1;\n\t\tthis.workerSourceURL = '';\n\n\t\tthis.defaultAttributeIDs = {\n\t\t\tposition: 'POSITION',\n\t\t\tnormal: 'NORMAL',\n\t\t\tcolor: 'COLOR',\n\t\t\tuv: 'TEX_COORD'\n\t\t};\n\t\tthis.defaultAttributeTypes = {\n\t\t\tposition: 'Float32Array',\n\t\t\tnormal: 'Float32Array',\n\t\t\tcolor: 'Float32Array',\n\t\t\tuv: 'Float32Array'\n\t\t};\n\n\t}\n\n\tsetDecoderPath( path ) {\n\n\t\tthis.decoderPath = path;\n\n\t\treturn this;\n\n\t}\n\n\tsetDecoderConfig( config ) {\n\n\t\tthis.decoderConfig = config;\n\n\t\treturn this;\n\n\t}\n\n\tsetWorkerLimit( workerLimit ) {\n\n\t\tthis.workerLimit = workerLimit;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, ( buffer ) => {\n\n\t\t\tthis.parse( buffer, onLoad, onError );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\n\tparse( buffer, onLoad, onError = ()=>{} ) {\n\n\t\tthis.decodeDracoFile( buffer, onLoad, null, null, SRGBColorSpace ).catch( onError );\n\n\t}\n\n\tdecodeDracoFile( buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => {} ) {\n\n\t\tconst taskConfig = {\n\t\t\tattributeIDs: attributeIDs || this.defaultAttributeIDs,\n\t\t\tattributeTypes: attributeTypes || this.defaultAttributeTypes,\n\t\t\tuseUniqueIDs: !! attributeIDs,\n\t\t\tvertexColorSpace: vertexColorSpace,\n\t\t};\n\n\t\treturn this.decodeGeometry( buffer, taskConfig ).then( callback ).catch( onError );\n\n\t}\n\n\tdecodeGeometry( buffer, taskConfig ) {\n\n\t\tconst taskKey = JSON.stringify( taskConfig );\n\n\t\t// Check for an existing task using this buffer. A transferred buffer cannot be transferred\n\t\t// again from this thread.\n\t\tif ( _taskCache.has( buffer ) ) {\n\n\t\t\tconst cachedTask = _taskCache.get( buffer );\n\n\t\t\tif ( cachedTask.key === taskKey ) {\n\n\t\t\t\treturn cachedTask.promise;\n\n\t\t\t} else if ( buffer.byteLength === 0 ) {\n\n\t\t\t\t// Technically, it would be possible to wait for the previous task to complete,\n\t\t\t\t// transfer the buffer back, and decode again with the second configuration. That\n\t\t\t\t// is complex, and I don't know of any reason to decode a Draco buffer twice in\n\t\t\t\t// different ways, so this is left unimplemented.\n\t\t\t\tthrow new Error(\n\n\t\t\t\t\t'THREE.DRACOLoader: Unable to re-decode a buffer with different ' +\n\t\t\t\t\t'settings. Buffer has already been transferred.'\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet worker;\n\t\tconst taskID = this.workerNextTaskID ++;\n\t\tconst taskCost = buffer.byteLength;\n\n\t\t// Obtain a worker and assign a task, and construct a geometry instance\n\t\t// when the task completes.\n\t\tconst geometryPending = this._getWorker( taskID, taskCost )\n\t\t\t.then( ( _worker ) => {\n\n\t\t\t\tworker = _worker;\n\n\t\t\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\t\t\tworker._callbacks[ taskID ] = { resolve, reject };\n\n\t\t\t\t\tworker.postMessage( { type: 'decode', id: taskID, taskConfig, buffer }, [ buffer ] );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t} );\n\n\t\t\t} )\n\t\t\t.then( ( message ) => this._createGeometry( message.geometry ) );\n\n\t\t// Remove task from the task list.\n\t\t// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\t\tgeometryPending\n\t\t\t.catch( () => true )\n\t\t\t.then( () => {\n\n\t\t\t\tif ( worker && taskID ) {\n\n\t\t\t\t\tthis._releaseTask( worker, taskID );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t// Cache the task result.\n\t\t_taskCache.set( buffer, {\n\n\t\t\tkey: taskKey,\n\t\t\tpromise: geometryPending\n\n\t\t} );\n\n\t\treturn geometryPending;\n\n\t}\n\n\t_createGeometry( geometryData ) {\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tif ( geometryData.index ) {\n\n\t\t\tgeometry.setIndex( new BufferAttribute( geometryData.index.array, 1 ) );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryData.attributes.length; i ++ ) {\n\n\t\t\tconst result = geometryData.attributes[ i ];\n\t\t\tconst name = result.name;\n\t\t\tconst array = result.array;\n\t\t\tconst itemSize = result.itemSize;\n\n\t\t\tconst attribute = new BufferAttribute( array, itemSize );\n\n\t\t\tif ( name === 'color' ) {\n\n\t\t\t\tthis._assignVertexColorSpace( attribute, result.vertexColorSpace );\n\n\t\t\t\tattribute.normalized = ( array instanceof Float32Array ) === false;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( name, attribute );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\t_assignVertexColorSpace( attribute, inputColorSpace ) {\n\n\t\t// While .drc files do not specify colorspace, the only 'official' tooling\n\t\t// is PLY and OBJ converters, which use sRGB. We'll assume sRGB when a .drc\n\t\t// file is passed into .load() or .parse(). GLTFLoader uses internal APIs\n\t\t// to decode geometry, and vertex colors are already Linear-sRGB in there.\n\n\t\tif ( inputColorSpace !== SRGBColorSpace ) return;\n\n\t\tconst _color = new Color();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\t_color.fromBufferAttribute( attribute, i ).convertSRGBToLinear();\n\t\t\tattribute.setXYZ( i, _color.r, _color.g, _color.b );\n\n\t\t}\n\n\t}\n\n\t_loadLibrary( url, responseType ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.decoderPath );\n\t\tloader.setResponseType( responseType );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\tloader.load( url, resolve, undefined, reject );\n\n\t\t} );\n\n\t}\n\n\tpreload() {\n\n\t\tthis._initDecoder();\n\n\t\treturn this;\n\n\t}\n\n\t_initDecoder() {\n\n\t\tif ( this.decoderPending ) return this.decoderPending;\n\n\t\tconst useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n\t\tconst librariesPending = [];\n\n\t\tif ( useJS ) {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );\n\n\t\t} else {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_wasm_wrapper.js', 'text' ) );\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.wasm', 'arraybuffer' ) );\n\n\t\t}\n\n\t\tthis.decoderPending = Promise.all( librariesPending )\n\t\t\t.then( ( libraries ) => {\n\n\t\t\t\tconst jsContent = libraries[ 0 ];\n\n\t\t\t\tif ( ! useJS ) {\n\n\t\t\t\t\tthis.decoderConfig.wasmBinary = libraries[ 1 ];\n\n\t\t\t\t}\n\n\t\t\t\tconst fn = DRACOWorker.toString();\n\n\t\t\t\tconst body = [\n\t\t\t\t\t'/* draco decoder */',\n\t\t\t\t\tjsContent,\n\t\t\t\t\t'',\n\t\t\t\t\t'/* worker */',\n\t\t\t\t\tfn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tthis.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );\n\n\t\t\t} );\n\n\t\treturn this.decoderPending;\n\n\t}\n\n\t_getWorker( taskID, taskCost ) {\n\n\t\treturn this._initDecoder().then( () => {\n\n\t\t\tif ( this.workerPool.length < this.workerLimit ) {\n\n\t\t\t\tconst worker = new Worker( this.workerSourceURL );\n\n\t\t\t\tworker._callbacks = {};\n\t\t\t\tworker._taskCosts = {};\n\t\t\t\tworker._taskLoad = 0;\n\n\t\t\t\tworker.postMessage( { type: 'init', decoderConfig: this.decoderConfig } );\n\n\t\t\t\tworker.onmessage = function ( e ) {\n\n\t\t\t\t\tconst message = e.data;\n\n\t\t\t\t\tswitch ( message.type ) {\n\n\t\t\t\t\t\tcase 'decode':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].resolve( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'error':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].reject( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"' );\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t\tthis.workerPool.push( worker );\n\n\t\t\t} else {\n\n\t\t\t\tthis.workerPool.sort( function ( a, b ) {\n\n\t\t\t\t\treturn a._taskLoad > b._taskLoad ? - 1 : 1;\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tconst worker = this.workerPool[ this.workerPool.length - 1 ];\n\t\t\tworker._taskCosts[ taskID ] = taskCost;\n\t\t\tworker._taskLoad += taskCost;\n\t\t\treturn worker;\n\n\t\t} );\n\n\t}\n\n\t_releaseTask( worker, taskID ) {\n\n\t\tworker._taskLoad -= worker._taskCosts[ taskID ];\n\t\tdelete worker._callbacks[ taskID ];\n\t\tdelete worker._taskCosts[ taskID ];\n\n\t}\n\n\tdebug() {\n\n\t\tconsole.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );\n\n\t}\n\n\tdispose() {\n\n\t\tfor ( let i = 0; i < this.workerPool.length; ++ i ) {\n\n\t\t\tthis.workerPool[ i ].terminate();\n\n\t\t}\n\n\t\tthis.workerPool.length = 0;\n\n\t\tif ( this.workerSourceURL !== '' ) {\n\n\t\t\tURL.revokeObjectURL( this.workerSourceURL );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/* WEB WORKER */\n\nfunction DRACOWorker() {\n\n\tlet decoderConfig;\n\tlet decoderPending;\n\n\tonmessage = function ( e ) {\n\n\t\tconst message = e.data;\n\n\t\tswitch ( message.type ) {\n\n\t\t\tcase 'init':\n\t\t\t\tdecoderConfig = message.decoderConfig;\n\t\t\t\tdecoderPending = new Promise( function ( resolve/*, reject*/ ) {\n\n\t\t\t\t\tdecoderConfig.onModuleLoaded = function ( draco ) {\n\n\t\t\t\t\t\t// Module is Promise-like. Wrap before resolving to avoid loop.\n\t\t\t\t\t\tresolve( { draco: draco } );\n\n\t\t\t\t\t};\n\n\t\t\t\t\tDracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'decode':\n\t\t\t\tconst buffer = message.buffer;\n\t\t\t\tconst taskConfig = message.taskConfig;\n\t\t\t\tdecoderPending.then( ( module ) => {\n\n\t\t\t\t\tconst draco = module.draco;\n\t\t\t\t\tconst decoder = new draco.Decoder();\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tconst geometry = decodeGeometry( draco, decoder, new Int8Array( buffer ), taskConfig );\n\n\t\t\t\t\t\tconst buffers = geometry.attributes.map( ( attr ) => attr.array.buffer );\n\n\t\t\t\t\t\tif ( geometry.index ) buffers.push( geometry.index.array.buffer );\n\n\t\t\t\t\t\tself.postMessage( { type: 'decode', id: message.id, geometry }, buffers );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tconsole.error( error );\n\n\t\t\t\t\t\tself.postMessage( { type: 'error', id: message.id, error: error.message } );\n\n\t\t\t\t\t} finally {\n\n\t\t\t\t\t\tdraco.destroy( decoder );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t};\n\n\tfunction decodeGeometry( draco, decoder, array, taskConfig ) {\n\n\t\tconst attributeIDs = taskConfig.attributeIDs;\n\t\tconst attributeTypes = taskConfig.attributeTypes;\n\n\t\tlet dracoGeometry;\n\t\tlet decodingStatus;\n\n\t\tconst geometryType = decoder.GetEncodedGeometryType( array );\n\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tdracoGeometry = new draco.Mesh();\n\t\t\tdecodingStatus = decoder.DecodeArrayToMesh( array, array.byteLength, dracoGeometry );\n\n\t\t} else if ( geometryType === draco.POINT_CLOUD ) {\n\n\t\t\tdracoGeometry = new draco.PointCloud();\n\t\t\tdecodingStatus = decoder.DecodeArrayToPointCloud( array, array.byteLength, dracoGeometry );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Unexpected geometry type.' );\n\n\t\t}\n\n\t\tif ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() );\n\n\t\t}\n\n\t\tconst geometry = { index: null, attributes: [] };\n\n\t\t// Gather all vertex attributes.\n\t\tfor ( const attributeName in attributeIDs ) {\n\n\t\t\tconst attributeType = self[ attributeTypes[ attributeName ] ];\n\n\t\t\tlet attribute;\n\t\t\tlet attributeID;\n\n\t\t\t// A Draco file may be created with default vertex attributes, whose attribute IDs\n\t\t\t// are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n\t\t\t// a Draco file may contain a custom set of attributes, identified by known unique\n\t\t\t// IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\t\t\tif ( taskConfig.useUniqueIDs ) {\n\n\t\t\t\tattributeID = attributeIDs[ attributeName ];\n\t\t\t\tattribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID );\n\n\t\t\t} else {\n\n\t\t\t\tattributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] );\n\n\t\t\t\tif ( attributeID === - 1 ) continue;\n\n\t\t\t\tattribute = decoder.GetAttribute( dracoGeometry, attributeID );\n\n\t\t\t}\n\n\t\t\tconst attributeResult = decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute );\n\n\t\t\tif ( attributeName === 'color' ) {\n\n\t\t\t\tattributeResult.vertexColorSpace = taskConfig.vertexColorSpace;\n\n\t\t\t}\n\n\t\t\tgeometry.attributes.push( attributeResult );\n\n\t\t}\n\n\t\t// Add index.\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tgeometry.index = decodeIndex( draco, decoder, dracoGeometry );\n\n\t\t}\n\n\t\tdraco.destroy( dracoGeometry );\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction decodeIndex( draco, decoder, dracoGeometry ) {\n\n\t\tconst numFaces = dracoGeometry.num_faces();\n\t\tconst numIndices = numFaces * 3;\n\t\tconst byteLength = numIndices * 4;\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr );\n\t\tconst index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn { array: index, itemSize: 1 };\n\n\t}\n\n\tfunction decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) {\n\n\t\tconst numComponents = attribute.num_components();\n\t\tconst numPoints = dracoGeometry.num_points();\n\t\tconst numValues = numPoints * numComponents;\n\t\tconst byteLength = numValues * attributeType.BYTES_PER_ELEMENT;\n\t\tconst dataType = getDracoDataType( draco, attributeType );\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr );\n\t\tconst array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn {\n\t\t\tname: attributeName,\n\t\t\tarray: array,\n\t\t\titemSize: numComponents\n\t\t};\n\n\t}\n\n\tfunction getDracoDataType( draco, attributeType ) {\n\n\t\tswitch ( attributeType ) {\n\n\t\t\tcase Float32Array: return draco.DT_FLOAT32;\n\t\t\tcase Int8Array: return draco.DT_INT8;\n\t\t\tcase Int16Array: return draco.DT_INT16;\n\t\t\tcase Int32Array: return draco.DT_INT32;\n\t\t\tcase Uint8Array: return draco.DT_UINT8;\n\t\t\tcase Uint16Array: return draco.DT_UINT16;\n\t\t\tcase Uint32Array: return draco.DT_UINT32;\n\n\t\t}\n\n\t}\n\n}\n\nexport { DRACOLoader };\n", "// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2022, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\nvar MeshoptDecoder = (function() {\n\t\"use strict\";\n\n\t// Built with clang version 14.0.4\n\t// Built from meshoptimizer 0.18\n\tvar wasm_base = \"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb\";\n\tvar wasm_simd = \"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb\";\n\n\tvar detector = new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]);\n\tvar wasmpack = new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);\n\n\tif (typeof WebAssembly !== 'object') {\n\t\treturn {\n\t\t\tsupported: false,\n\t\t};\n\t}\n\n\tvar wasm = WebAssembly.validate(detector) ? wasm_simd : wasm_base;\n\n\tvar instance;\n\n\tvar ready =\n\t\tWebAssembly.instantiate(unpack(wasm), {})\n\t\t.then(function(result) {\n\t\t\tinstance = result.instance;\n\t\t\tinstance.exports.__wasm_call_ctors();\n\t\t});\n\n\tfunction unpack(data) {\n\t\tvar result = new Uint8Array(data.length);\n\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\tvar ch = data.charCodeAt(i);\n\t\t\tresult[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;\n\t\t}\n\t\tvar write = 0;\n\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\tresult[write++] = (result[i] < 60) ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n\t\t}\n\t\treturn result.buffer.slice(0, write);\n\t}\n\n\tfunction decode(fun, target, count, size, source, filter) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar count4 = (count + 3) & ~3;\n\t\tvar tp = sbrk(count4 * size);\n\t\tvar sp = sbrk(source.length);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(source, sp);\n\t\tvar res = fun(tp, count, size, sp, source.length);\n\t\tif (res == 0 && filter) {\n\t\t\tfilter(tp, count4, size);\n\t\t}\n\t\ttarget.set(heap.subarray(tp, tp + count * size));\n\t\tsbrk(tp - sbrk(0));\n\t\tif (res != 0) {\n\t\t\tthrow new Error(\"Malformed buffer data: \" + res);\n\t\t}\n\t}\n\n\tvar filters = {\n\t\tNONE: \"\",\n\t\tOCTAHEDRAL: \"meshopt_decodeFilterOct\",\n\t\tQUATERNION: \"meshopt_decodeFilterQuat\",\n\t\tEXPONENTIAL: \"meshopt_decodeFilterExp\",\n\t};\n\n\tvar decoders = {\n\t\tATTRIBUTES: \"meshopt_decodeVertexBuffer\",\n\t\tTRIANGLES: \"meshopt_decodeIndexBuffer\",\n\t\tINDICES: \"meshopt_decodeIndexSequence\",\n\t};\n\n\tvar workers = [];\n\tvar requestId = 0;\n\n\tfunction createWorker(url) {\n\t\tvar worker = {\n\t\t\tobject: new Worker(url),\n\t\t\tpending: 0,\n\t\t\trequests: {}\n\t\t};\n\n\t\tworker.object.onmessage = function(event) {\n\t\t\tvar data = event.data;\n\n\t\t\tworker.pending -= data.count;\n\t\t\tworker.requests[data.id][data.action](data.value);\n\n\t\t\tdelete worker.requests[data.id];\n\t\t};\n\n\t\treturn worker;\n\t}\n\n\tfunction initWorkers(count) {\n\t\tvar source =\n\t\t\t\"var instance; var ready = WebAssembly.instantiate(new Uint8Array([\" + new Uint8Array(unpack(wasm)) + \"]), {})\" +\n\t\t\t\".then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });\" +\n\t\t\t\"self.onmessage = workerProcess;\" +\n\t\t\tdecode.toString() + workerProcess.toString();\n\n\t\tvar blob = new Blob([source], {type: 'text/javascript'});\n\t\tvar url = URL.createObjectURL(blob);\n\n\t\tfor (var i = 0; i < count; ++i) {\n\t\t\tworkers[i] = createWorker(url);\n\t\t}\n\n\t\tURL.revokeObjectURL(url);\n\t}\n\n\tfunction decodeWorker(count, size, source, mode, filter) {\n\t\tvar worker = workers[0];\n\n\t\tfor (var i = 1; i < workers.length; ++i) {\n\t\t\tif (workers[i].pending < worker.pending) {\n\t\t\t\tworker = workers[i];\n\t\t\t}\n\t\t}\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tvar data = new Uint8Array(source);\n\t\t\tvar id = requestId++;\n\n\t\t\tworker.pending += count;\n\t\t\tworker.requests[id] = { resolve: resolve, reject: reject };\n\t\t\tworker.object.postMessage({ id: id, count: count, size: size, source: data, mode: mode, filter: filter }, [ data.buffer ]);\n\t\t});\n\t}\n\n\tfunction workerProcess(event) {\n\t\tready.then(function() {\n\t\t\tvar data = event.data;\n\t\t\ttry {\n\t\t\t\tvar target = new Uint8Array(data.count * data.size);\n\t\t\t\tdecode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n\t\t\t\tself.postMessage({ id: data.id, count: data.count, action: \"resolve\", value: target }, [ target.buffer ]);\n\t\t\t} catch (error) {\n\t\t\t\tself.postMessage({ id: data.id, count: data.count, action: \"reject\", value: error });\n\t\t\t}\n\t\t});\n\t}\n\n\treturn {\n\t\tready: ready,\n\t\tsupported: true,\n\t\tuseWorkers: function(count) {\n\t\t\tinitWorkers(count);\n\t\t},\n\t\tdecodeVertexBuffer: function(target, count, size, source, filter) {\n\t\t\tdecode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]);\n\t\t},\n\t\tdecodeIndexBuffer: function(target, count, size, source) {\n\t\t\tdecode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);\n\t\t},\n\t\tdecodeIndexSequence: function(target, count, size, source) {\n\t\t\tdecode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source);\n\t\t},\n\t\tdecodeGltfBuffer: function(target, count, size, source, mode, filter) {\n\t\t\tdecode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);\n\t\t},\n\t\tdecodeGltfBufferAsync: function(count, size, source, mode, filter) {\n\t\t\tif (workers.length > 0) {\n\t\t\t\treturn decodeWorker(count, size, source, decoders[mode], filters[filter]);\n\t\t\t}\n\n\t\t\treturn ready.then(function() {\n\t\t\t\tvar target = new Uint8Array(count * size);\n\t\t\t\tdecode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);\n\t\t\t\treturn target;\n\t\t\t});\n\t\t}\n\t};\n})();\n\nexport { MeshoptDecoder };\n", "/*!\nfflate - fast JavaScript compression/decompression\n\nLicensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE\nversion 0.8.2\n*/\n\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n", "import {\n\tVector3,\n\tVector4\n} from 'three';\n\n/**\n * NURBS utils\n *\n * See NURBSCurve and NURBSSurface.\n **/\n\n\n/**************************************************************\n *\tNURBS Utils\n **************************************************************/\n\n/*\nFinds knot vector span.\n\np : degree\nu : parametric value\nU : knot vector\n\nreturns the span\n*/\nfunction findSpan( p, u, U ) {\n\n\tconst n = U.length - p - 1;\n\n\tif ( u >= U[ n ] ) {\n\n\t\treturn n - 1;\n\n\t}\n\n\tif ( u <= U[ p ] ) {\n\n\t\treturn p;\n\n\t}\n\n\tlet low = p;\n\tlet high = n;\n\tlet mid = Math.floor( ( low + high ) / 2 );\n\n\twhile ( u < U[ mid ] || u >= U[ mid + 1 ] ) {\n\n\t\tif ( u < U[ mid ] ) {\n\n\t\t\thigh = mid;\n\n\t\t} else {\n\n\t\t\tlow = mid;\n\n\t\t}\n\n\t\tmid = Math.floor( ( low + high ) / 2 );\n\n\t}\n\n\treturn mid;\n\n}\n\n\n/*\nCalculate basis functions. See The NURBS Book, page 70, algorithm A2.2\n\nspan : span in which u lies\nu : parametric point\np : degree\nU : knot vector\n\nreturns array[p+1] with basis functions values.\n*/\nfunction calcBasisFunctions( span, u, p, U ) {\n\n\tconst N = [];\n\tconst left = [];\n\tconst right = [];\n\tN[ 0 ] = 1.0;\n\n\tfor ( let j = 1; j <= p; ++ j ) {\n\n\t\tleft[ j ] = u - U[ span + 1 - j ];\n\t\tright[ j ] = U[ span + j ] - u;\n\n\t\tlet saved = 0.0;\n\n\t\tfor ( let r = 0; r < j; ++ r ) {\n\n\t\t\tconst rv = right[ r + 1 ];\n\t\t\tconst lv = left[ j - r ];\n\t\t\tconst temp = N[ r ] / ( rv + lv );\n\t\t\tN[ r ] = saved + rv * temp;\n\t\t\tsaved = lv * temp;\n\n\t\t}\n\n\t\tN[ j ] = saved;\n\n\t}\n\n\treturn N;\n\n}\n\n\n/*\nCalculate B-Spline curve points. See The NURBS Book, page 82, algorithm A3.1.\n\np : degree of B-Spline\nU : knot vector\nP : control points (x, y, z, w)\nu : parametric point\n\nreturns point for given u\n*/\nfunction calcBSplinePoint( p, U, P, u ) {\n\n\tconst span = findSpan( p, u, U );\n\tconst N = calcBasisFunctions( span, u, p, U );\n\tconst C = new Vector4( 0, 0, 0, 0 );\n\n\tfor ( let j = 0; j <= p; ++ j ) {\n\n\t\tconst point = P[ span - p + j ];\n\t\tconst Nj = N[ j ];\n\t\tconst wNj = point.w * Nj;\n\t\tC.x += point.x * wNj;\n\t\tC.y += point.y * wNj;\n\t\tC.z += point.z * wNj;\n\t\tC.w += point.w * Nj;\n\n\t}\n\n\treturn C;\n\n}\n\n\n/*\nCalculate basis functions derivatives. See The NURBS Book, page 72, algorithm A2.3.\n\nspan : span in which u lies\nu : parametric point\np : degree\nn : number of derivatives to calculate\nU : knot vector\n\nreturns array[n+1][p+1] with basis functions derivatives\n*/\nfunction calcBasisFunctionDerivatives( span, u, p, n, U ) {\n\n\tconst zeroArr = [];\n\tfor ( let i = 0; i <= p; ++ i )\n\t\tzeroArr[ i ] = 0.0;\n\n\tconst ders = [];\n\n\tfor ( let i = 0; i <= n; ++ i )\n\t\tders[ i ] = zeroArr.slice( 0 );\n\n\tconst ndu = [];\n\n\tfor ( let i = 0; i <= p; ++ i )\n\t\tndu[ i ] = zeroArr.slice( 0 );\n\n\tndu[ 0 ][ 0 ] = 1.0;\n\n\tconst left = zeroArr.slice( 0 );\n\tconst right = zeroArr.slice( 0 );\n\n\tfor ( let j = 1; j <= p; ++ j ) {\n\n\t\tleft[ j ] = u - U[ span + 1 - j ];\n\t\tright[ j ] = U[ span + j ] - u;\n\n\t\tlet saved = 0.0;\n\n\t\tfor ( let r = 0; r < j; ++ r ) {\n\n\t\t\tconst rv = right[ r + 1 ];\n\t\t\tconst lv = left[ j - r ];\n\t\t\tndu[ j ][ r ] = rv + lv;\n\n\t\t\tconst temp = ndu[ r ][ j - 1 ] / ndu[ j ][ r ];\n\t\t\tndu[ r ][ j ] = saved + rv * temp;\n\t\t\tsaved = lv * temp;\n\n\t\t}\n\n\t\tndu[ j ][ j ] = saved;\n\n\t}\n\n\tfor ( let j = 0; j <= p; ++ j ) {\n\n\t\tders[ 0 ][ j ] = ndu[ j ][ p ];\n\n\t}\n\n\tfor ( let r = 0; r <= p; ++ r ) {\n\n\t\tlet s1 = 0;\n\t\tlet s2 = 1;\n\n\t\tconst a = [];\n\t\tfor ( let i = 0; i <= p; ++ i ) {\n\n\t\t\ta[ i ] = zeroArr.slice( 0 );\n\n\t\t}\n\n\t\ta[ 0 ][ 0 ] = 1.0;\n\n\t\tfor ( let k = 1; k <= n; ++ k ) {\n\n\t\t\tlet d = 0.0;\n\t\t\tconst rk = r - k;\n\t\t\tconst pk = p - k;\n\n\t\t\tif ( r >= k ) {\n\n\t\t\t\ta[ s2 ][ 0 ] = a[ s1 ][ 0 ] / ndu[ pk + 1 ][ rk ];\n\t\t\t\td = a[ s2 ][ 0 ] * ndu[ rk ][ pk ];\n\n\t\t\t}\n\n\t\t\tconst j1 = ( rk >= - 1 ) ? 1 : - rk;\n\t\t\tconst j2 = ( r - 1 <= pk ) ? k - 1 : p - r;\n\n\t\t\tfor ( let j = j1; j <= j2; ++ j ) {\n\n\t\t\t\ta[ s2 ][ j ] = ( a[ s1 ][ j ] - a[ s1 ][ j - 1 ] ) / ndu[ pk + 1 ][ rk + j ];\n\t\t\t\td += a[ s2 ][ j ] * ndu[ rk + j ][ pk ];\n\n\t\t\t}\n\n\t\t\tif ( r <= pk ) {\n\n\t\t\t\ta[ s2 ][ k ] = - a[ s1 ][ k - 1 ] / ndu[ pk + 1 ][ r ];\n\t\t\t\td += a[ s2 ][ k ] * ndu[ r ][ pk ];\n\n\t\t\t}\n\n\t\t\tders[ k ][ r ] = d;\n\n\t\t\tconst j = s1;\n\t\t\ts1 = s2;\n\t\t\ts2 = j;\n\n\t\t}\n\n\t}\n\n\tlet r = p;\n\n\tfor ( let k = 1; k <= n; ++ k ) {\n\n\t\tfor ( let j = 0; j <= p; ++ j ) {\n\n\t\t\tders[ k ][ j ] *= r;\n\n\t\t}\n\n\t\tr *= p - k;\n\n\t}\n\n\treturn ders;\n\n}\n\n\n/*\n\tCalculate derivatives of a B-Spline. See The NURBS Book, page 93, algorithm A3.2.\n\n\tp : degree\n\tU : knot vector\n\tP : control points\n\tu : Parametric points\n\tnd : number of derivatives\n\n\treturns array[d+1] with derivatives\n\t*/\nfunction calcBSplineDerivatives( p, U, P, u, nd ) {\n\n\tconst du = nd < p ? nd : p;\n\tconst CK = [];\n\tconst span = findSpan( p, u, U );\n\tconst nders = calcBasisFunctionDerivatives( span, u, p, du, U );\n\tconst Pw = [];\n\n\tfor ( let i = 0; i < P.length; ++ i ) {\n\n\t\tconst point = P[ i ].clone();\n\t\tconst w = point.w;\n\n\t\tpoint.x *= w;\n\t\tpoint.y *= w;\n\t\tpoint.z *= w;\n\n\t\tPw[ i ] = point;\n\n\t}\n\n\tfor ( let k = 0; k <= du; ++ k ) {\n\n\t\tconst point = Pw[ span - p ].clone().multiplyScalar( nders[ k ][ 0 ] );\n\n\t\tfor ( let j = 1; j <= p; ++ j ) {\n\n\t\t\tpoint.add( Pw[ span - p + j ].clone().multiplyScalar( nders[ k ][ j ] ) );\n\n\t\t}\n\n\t\tCK[ k ] = point;\n\n\t}\n\n\tfor ( let k = du + 1; k <= nd + 1; ++ k ) {\n\n\t\tCK[ k ] = new Vector4( 0, 0, 0 );\n\n\t}\n\n\treturn CK;\n\n}\n\n\n/*\nCalculate \"K over I\"\n\nreturns k!/(i!(k-i)!)\n*/\nfunction calcKoverI( k, i ) {\n\n\tlet nom = 1;\n\n\tfor ( let j = 2; j <= k; ++ j ) {\n\n\t\tnom *= j;\n\n\t}\n\n\tlet denom = 1;\n\n\tfor ( let j = 2; j <= i; ++ j ) {\n\n\t\tdenom *= j;\n\n\t}\n\n\tfor ( let j = 2; j <= k - i; ++ j ) {\n\n\t\tdenom *= j;\n\n\t}\n\n\treturn nom / denom;\n\n}\n\n\n/*\nCalculate derivatives (0-nd) of rational curve. See The NURBS Book, page 127, algorithm A4.2.\n\nPders : result of function calcBSplineDerivatives\n\nreturns array with derivatives for rational curve.\n*/\nfunction calcRationalCurveDerivatives( Pders ) {\n\n\tconst nd = Pders.length;\n\tconst Aders = [];\n\tconst wders = [];\n\n\tfor ( let i = 0; i < nd; ++ i ) {\n\n\t\tconst point = Pders[ i ];\n\t\tAders[ i ] = new Vector3( point.x, point.y, point.z );\n\t\twders[ i ] = point.w;\n\n\t}\n\n\tconst CK = [];\n\n\tfor ( let k = 0; k < nd; ++ k ) {\n\n\t\tconst v = Aders[ k ].clone();\n\n\t\tfor ( let i = 1; i <= k; ++ i ) {\n\n\t\t\tv.sub( CK[ k - i ].clone().multiplyScalar( calcKoverI( k, i ) * wders[ i ] ) );\n\n\t\t}\n\n\t\tCK[ k ] = v.divideScalar( wders[ 0 ] );\n\n\t}\n\n\treturn CK;\n\n}\n\n\n/*\nCalculate NURBS curve derivatives. See The NURBS Book, page 127, algorithm A4.2.\n\np : degree\nU : knot vector\nP : control points in homogeneous space\nu : parametric points\nnd : number of derivatives\n\nreturns array with derivatives.\n*/\nfunction calcNURBSDerivatives( p, U, P, u, nd ) {\n\n\tconst Pders = calcBSplineDerivatives( p, U, P, u, nd );\n\treturn calcRationalCurveDerivatives( Pders );\n\n}\n\n\n/*\nCalculate rational B-Spline surface point. See The NURBS Book, page 134, algorithm A4.3.\n\np, q : degrees of B-Spline surface\nU, V : knot vectors\nP : control points (x, y, z, w)\nu, v : parametric values\n\nreturns point for given (u, v)\n*/\nfunction calcSurfacePoint( p, q, U, V, P, u, v, target ) {\n\n\tconst uspan = findSpan( p, u, U );\n\tconst vspan = findSpan( q, v, V );\n\tconst Nu = calcBasisFunctions( uspan, u, p, U );\n\tconst Nv = calcBasisFunctions( vspan, v, q, V );\n\tconst temp = [];\n\n\tfor ( let l = 0; l <= q; ++ l ) {\n\n\t\ttemp[ l ] = new Vector4( 0, 0, 0, 0 );\n\t\tfor ( let k = 0; k <= p; ++ k ) {\n\n\t\t\tconst point = P[ uspan - p + k ][ vspan - q + l ].clone();\n\t\t\tconst w = point.w;\n\t\t\tpoint.x *= w;\n\t\t\tpoint.y *= w;\n\t\t\tpoint.z *= w;\n\t\t\ttemp[ l ].add( point.multiplyScalar( Nu[ k ] ) );\n\n\t\t}\n\n\t}\n\n\tconst Sw = new Vector4( 0, 0, 0, 0 );\n\tfor ( let l = 0; l <= q; ++ l ) {\n\n\t\tSw.add( temp[ l ].multiplyScalar( Nv[ l ] ) );\n\n\t}\n\n\tSw.divideScalar( Sw.w );\n\ttarget.set( Sw.x, Sw.y, Sw.z );\n\n}\n\n/*\nCalculate rational B-Spline volume point. See The NURBS Book, page 134, algorithm A4.3.\n\np, q, r : degrees of B-Splinevolume\nU, V, W : knot vectors\nP : control points (x, y, z, w)\nu, v, w : parametric values\n\nreturns point for given (u, v, w)\n*/\nfunction calcVolumePoint( p, q, r, U, V, W, P, u, v, w, target ) {\n\n\tconst uspan = findSpan( p, u, U );\n\tconst vspan = findSpan( q, v, V );\n\tconst wspan = findSpan( r, w, W );\n\tconst Nu = calcBasisFunctions( uspan, u, p, U );\n\tconst Nv = calcBasisFunctions( vspan, v, q, V );\n\tconst Nw = calcBasisFunctions( wspan, w, r, W );\n\tconst temp = [];\n\n\tfor ( let m = 0; m <= r; ++ m ) {\n\n\t\ttemp[ m ] = [];\n\n\t\tfor ( let l = 0; l <= q; ++ l ) {\n\n\t\t\ttemp[ m ][ l ] = new Vector4( 0, 0, 0, 0 );\n\t\t\tfor ( let k = 0; k <= p; ++ k ) {\n\n\t\t\t\tconst point = P[ uspan - p + k ][ vspan - q + l ][ wspan - r + m ].clone();\n\t\t\t\tconst w = point.w;\n\t\t\t\tpoint.x *= w;\n\t\t\t\tpoint.y *= w;\n\t\t\t\tpoint.z *= w;\n\t\t\t\ttemp[ m ][ l ].add( point.multiplyScalar( Nu[ k ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\tconst Sw = new Vector4( 0, 0, 0, 0 );\n\tfor ( let m = 0; m <= r; ++ m ) {\n\t\tfor ( let l = 0; l <= q; ++ l ) {\n\n\t\t\tSw.add( temp[ m ][ l ].multiplyScalar( Nw[ m ] ).multiplyScalar( Nv[ l ] ) );\n\n\t\t}\n\t}\n\n\tSw.divideScalar( Sw.w );\n\ttarget.set( Sw.x, Sw.y, Sw.z );\n\n}\n\n\nexport {\n\tfindSpan,\n\tcalcBasisFunctions,\n\tcalcBSplinePoint,\n\tcalcBasisFunctionDerivatives,\n\tcalcBSplineDerivatives,\n\tcalcKoverI,\n\tcalcRationalCurveDerivatives,\n\tcalcNURBSDerivatives,\n\tcalcSurfacePoint,\n\tcalcVolumePoint,\n};\n", "import {\n\tCurve,\n\tVector3,\n\tVector4\n} from 'three';\nimport * as NURBSUtils from '../curves/NURBSUtils.js';\n\n/**\n * NURBS curve object\n *\n * Derives from Curve, overriding getPoint and getTangent.\n *\n * Implementation is based on (x, y [, z=0 [, w=1]]) control points with w=weight.\n *\n **/\n\nclass NURBSCurve extends Curve {\n\n\tconstructor(\n\t\tdegree,\n\t\tknots /* array of reals */,\n\t\tcontrolPoints /* array of Vector(2|3|4) */,\n\t\tstartKnot /* index in knots */,\n\t\tendKnot /* index in knots */\n\t) {\n\n\t\tsuper();\n\n\t\tthis.degree = degree;\n\t\tthis.knots = knots;\n\t\tthis.controlPoints = [];\n\t\t// Used by periodic NURBS to remove hidden spans\n\t\tthis.startKnot = startKnot || 0;\n\t\tthis.endKnot = endKnot || ( this.knots.length - 1 );\n\n\t\tfor ( let i = 0; i < controlPoints.length; ++ i ) {\n\n\t\t\t// ensure Vector4 for control points\n\t\t\tconst point = controlPoints[ i ];\n\t\t\tthis.controlPoints[ i ] = new Vector4( point.x, point.y, point.z, point.w );\n\n\t\t}\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst u = this.knots[ this.startKnot ] + t * ( this.knots[ this.endKnot ] - this.knots[ this.startKnot ] ); // linear mapping t->u\n\n\t\t// following results in (wx, wy, wz, w) homogeneous point\n\t\tconst hpoint = NURBSUtils.calcBSplinePoint( this.degree, this.knots, this.controlPoints, u );\n\n\t\tif ( hpoint.w !== 1.0 ) {\n\n\t\t\t// project to 3D space: (wx, wy, wz, w) -> (x, y, z, 1)\n\t\t\thpoint.divideScalar( hpoint.w );\n\n\t\t}\n\n\t\treturn point.set( hpoint.x, hpoint.y, hpoint.z );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\tconst tangent = optionalTarget;\n\n\t\tconst u = this.knots[ 0 ] + t * ( this.knots[ this.knots.length - 1 ] - this.knots[ 0 ] );\n\t\tconst ders = NURBSUtils.calcNURBSDerivatives( this.degree, this.knots, this.controlPoints, u, 1 );\n\t\ttangent.copy( ders[ 1 ] ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n}\n\nexport { NURBSCurve };\n", "import {\n\tAmbientLight,\n\tAnimationClip,\n\tBone,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tEquirectangularReflectionMapping,\n\tEuler,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLoader,\n\tLoaderUtils,\n\tMathUtils,\n\tMatrix3,\n\tMatrix4,\n\tMesh,\n\tMeshLambertMaterial,\n\tMeshPhongMaterial,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPropertyBinding,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSpotLight,\n\tTexture,\n\tTextureLoader,\n\tUint16BufferAttribute,\n\tVector2,\n\tVector3,\n\tVector4,\n\tVectorKeyframeTrack,\n\tSRGBColorSpace,\n\tShapeUtils\n} from 'three';\nimport * as fflate from '../libs/fflate.module.js';\nimport { NURBSCurve } from '../curves/NURBSCurve.js';\n\n/**\n * Loader loads FBX file and generates Group representing FBX scene.\n * Requires FBX file to be >= 7.0 and in ASCII or >= 6400 in Binary format\n * Versions lower than this may load but will probably have errors\n *\n * Needs Support:\n * Morph normals / blend shape normals\n *\n * FBX format references:\n * \thttps://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html (C++ SDK reference)\n *\n * Binary format specification:\n *\thttps://code.blender.org/2013/08/fbx-binary-file-format-specification/\n */\n\n\nlet fbxTree;\nlet connections;\nlet sceneGraph;\n\nclass FBXLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( buffer, path ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( FBXBuffer, path ) {\n\n\t\tif ( isFbxFormatBinary( FBXBuffer ) ) {\n\n\t\t\tfbxTree = new BinaryParser().parse( FBXBuffer );\n\n\t\t} else {\n\n\t\t\tconst FBXText = convertArrayBufferToString( FBXBuffer );\n\n\t\t\tif ( ! isFbxFormatASCII( FBXText ) ) {\n\n\t\t\t\tthrow new Error( 'THREE.FBXLoader: Unknown format.' );\n\n\t\t\t}\n\n\t\t\tif ( getFbxVersion( FBXText ) < 7000 ) {\n\n\t\t\t\tthrow new Error( 'THREE.FBXLoader: FBX version not supported, FileVersion: ' + getFbxVersion( FBXText ) );\n\n\t\t\t}\n\n\t\t\tfbxTree = new TextParser().parse( FBXText );\n\n\t\t}\n\n\t\t// console.log( fbxTree );\n\n\t\tconst textureLoader = new TextureLoader( this.manager ).setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );\n\n\t\treturn new FBXTreeParser( textureLoader, this.manager ).parse( fbxTree );\n\n\t}\n\n}\n\n// Parse the FBXTree object returned by the BinaryParser or TextParser and return a Group\nclass FBXTreeParser {\n\n\tconstructor( textureLoader, manager ) {\n\n\t\tthis.textureLoader = textureLoader;\n\t\tthis.manager = manager;\n\n\t}\n\n\tparse() {\n\n\t\tconnections = this.parseConnections();\n\n\t\tconst images = this.parseImages();\n\t\tconst textures = this.parseTextures( images );\n\t\tconst materials = this.parseMaterials( textures );\n\t\tconst deformers = this.parseDeformers();\n\t\tconst geometryMap = new GeometryParser().parse( deformers );\n\n\t\tthis.parseScene( deformers, geometryMap, materials );\n\n\t\treturn sceneGraph;\n\n\t}\n\n\t// Parses FBXTree.Connections which holds parent-child connections between objects (e.g. material -> texture, model->geometry )\n\t// and details the connection type\n\tparseConnections() {\n\n\t\tconst connectionMap = new Map();\n\n\t\tif ( 'Connections' in fbxTree ) {\n\n\t\t\tconst rawConnections = fbxTree.Connections.connections;\n\n\t\t\trawConnections.forEach( function ( rawConnection ) {\n\n\t\t\t\tconst fromID = rawConnection[ 0 ];\n\t\t\t\tconst toID = rawConnection[ 1 ];\n\t\t\t\tconst relationship = rawConnection[ 2 ];\n\n\t\t\t\tif ( ! connectionMap.has( fromID ) ) {\n\n\t\t\t\t\tconnectionMap.set( fromID, {\n\t\t\t\t\t\tparents: [],\n\t\t\t\t\t\tchildren: []\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t\tconst parentRelationship = { ID: toID, relationship: relationship };\n\t\t\t\tconnectionMap.get( fromID ).parents.push( parentRelationship );\n\n\t\t\t\tif ( ! connectionMap.has( toID ) ) {\n\n\t\t\t\t\tconnectionMap.set( toID, {\n\t\t\t\t\t\tparents: [],\n\t\t\t\t\t\tchildren: []\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t\tconst childRelationship = { ID: fromID, relationship: relationship };\n\t\t\t\tconnectionMap.get( toID ).children.push( childRelationship );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn connectionMap;\n\n\t}\n\n\t// Parse FBXTree.Objects.Video for embedded image data\n\t// These images are connected to textures in FBXTree.Objects.Textures\n\t// via FBXTree.Connections.\n\tparseImages() {\n\n\t\tconst images = {};\n\t\tconst blobs = {};\n\n\t\tif ( 'Video' in fbxTree.Objects ) {\n\n\t\t\tconst videoNodes = fbxTree.Objects.Video;\n\n\t\t\tfor ( const nodeID in videoNodes ) {\n\n\t\t\t\tconst videoNode = videoNodes[ nodeID ];\n\n\t\t\t\tconst id = parseInt( nodeID );\n\n\t\t\t\timages[ id ] = videoNode.RelativeFilename || videoNode.Filename;\n\n\t\t\t\t// raw image data is in videoNode.Content\n\t\t\t\tif ( 'Content' in videoNode ) {\n\n\t\t\t\t\tconst arrayBufferContent = ( videoNode.Content instanceof ArrayBuffer ) && ( videoNode.Content.byteLength > 0 );\n\t\t\t\t\tconst base64Content = ( typeof videoNode.Content === 'string' ) && ( videoNode.Content !== '' );\n\n\t\t\t\t\tif ( arrayBufferContent || base64Content ) {\n\n\t\t\t\t\t\tconst image = this.parseImage( videoNodes[ nodeID ] );\n\n\t\t\t\t\t\tblobs[ videoNode.RelativeFilename || videoNode.Filename ] = image;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( const id in images ) {\n\n\t\t\tconst filename = images[ id ];\n\n\t\t\tif ( blobs[ filename ] !== undefined ) images[ id ] = blobs[ filename ];\n\t\t\telse images[ id ] = images[ id ].split( '\\\\' ).pop();\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\t// Parse embedded image data in FBXTree.Video.Content\n\tparseImage( videoNode ) {\n\n\t\tconst content = videoNode.Content;\n\t\tconst fileName = videoNode.RelativeFilename || videoNode.Filename;\n\t\tconst extension = fileName.slice( fileName.lastIndexOf( '.' ) + 1 ).toLowerCase();\n\n\t\tlet type;\n\n\t\tswitch ( extension ) {\n\n\t\t\tcase 'bmp':\n\n\t\t\t\ttype = 'image/bmp';\n\t\t\t\tbreak;\n\n\t\t\tcase 'jpg':\n\t\t\tcase 'jpeg':\n\n\t\t\t\ttype = 'image/jpeg';\n\t\t\t\tbreak;\n\n\t\t\tcase 'png':\n\n\t\t\t\ttype = 'image/png';\n\t\t\t\tbreak;\n\n\t\t\tcase 'tif':\n\n\t\t\t\ttype = 'image/tiff';\n\t\t\t\tbreak;\n\n\t\t\tcase 'tga':\n\n\t\t\t\tif ( this.manager.getHandler( '.tga' ) === null ) {\n\n\t\t\t\t\tconsole.warn( 'FBXLoader: TGA loader not found, skipping ', fileName );\n\n\t\t\t\t}\n\n\t\t\t\ttype = 'image/tga';\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'FBXLoader: Image type \"' + extension + '\" is not supported.' );\n\t\t\t\treturn;\n\n\t\t}\n\n\t\tif ( typeof content === 'string' ) { // ASCII format\n\n\t\t\treturn 'data:' + type + ';base64,' + content;\n\n\t\t} else { // Binary Format\n\n\t\t\tconst array = new Uint8Array( content );\n\t\t\treturn window.URL.createObjectURL( new Blob( [ array ], { type: type } ) );\n\n\t\t}\n\n\t}\n\n\t// Parse nodes in FBXTree.Objects.Texture\n\t// These contain details such as UV scaling, cropping, rotation etc and are connected\n\t// to images in FBXTree.Objects.Video\n\tparseTextures( images ) {\n\n\t\tconst textureMap = new Map();\n\n\t\tif ( 'Texture' in fbxTree.Objects ) {\n\n\t\t\tconst textureNodes = fbxTree.Objects.Texture;\n\t\t\tfor ( const nodeID in textureNodes ) {\n\n\t\t\t\tconst texture = this.parseTexture( textureNodes[ nodeID ], images );\n\t\t\t\ttextureMap.set( parseInt( nodeID ), texture );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textureMap;\n\n\t}\n\n\t// Parse individual node in FBXTree.Objects.Texture\n\tparseTexture( textureNode, images ) {\n\n\t\tconst texture = this.loadTexture( textureNode, images );\n\n\t\ttexture.ID = textureNode.id;\n\n\t\ttexture.name = textureNode.attrName;\n\n\t\tconst wrapModeU = textureNode.WrapModeU;\n\t\tconst wrapModeV = textureNode.WrapModeV;\n\n\t\tconst valueU = wrapModeU !== undefined ? wrapModeU.value : 0;\n\t\tconst valueV = wrapModeV !== undefined ? wrapModeV.value : 0;\n\n\t\t// http://download.autodesk.com/us/fbx/SDKdocs/FBX_SDK_Help/files/fbxsdkref/class_k_fbx_texture.html#889640e63e2e681259ea81061b85143a\n\t\t// 0: repeat(default), 1: clamp\n\n\t\ttexture.wrapS = valueU === 0 ? RepeatWrapping : ClampToEdgeWrapping;\n\t\ttexture.wrapT = valueV === 0 ? RepeatWrapping : ClampToEdgeWrapping;\n\n\t\tif ( 'Scaling' in textureNode ) {\n\n\t\t\tconst values = textureNode.Scaling.value;\n\n\t\t\ttexture.repeat.x = values[ 0 ];\n\t\t\ttexture.repeat.y = values[ 1 ];\n\n\t\t}\n\n\t\tif ( 'Translation' in textureNode ) {\n\n\t\t\tconst values = textureNode.Translation.value;\n\n\t\t\ttexture.offset.x = values[ 0 ];\n\t\t\ttexture.offset.y = values[ 1 ];\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\t// load a texture specified as a blob or data URI, or via an external URL using TextureLoader\n\tloadTexture( textureNode, images ) {\n\n\t\tlet fileName;\n\n\t\tconst currentPath = this.textureLoader.path;\n\n\t\tconst children = connections.get( textureNode.id ).children;\n\n\t\tif ( children !== undefined && children.length > 0 && images[ children[ 0 ].ID ] !== undefined ) {\n\n\t\t\tfileName = images[ children[ 0 ].ID ];\n\n\t\t\tif ( fileName.indexOf( 'blob:' ) === 0 || fileName.indexOf( 'data:' ) === 0 ) {\n\n\t\t\t\tthis.textureLoader.setPath( undefined );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet texture;\n\n\t\tconst extension = textureNode.FileName.slice( - 3 ).toLowerCase();\n\n\t\tif ( extension === 'tga' ) {\n\n\t\t\tconst loader = this.manager.getHandler( '.tga' );\n\n\t\t\tif ( loader === null ) {\n\n\t\t\t\tconsole.warn( 'FBXLoader: TGA loader not found, creating placeholder texture for', textureNode.RelativeFilename );\n\t\t\t\ttexture = new Texture();\n\n\t\t\t} else {\n\n\t\t\t\tloader.setPath( this.textureLoader.path );\n\t\t\t\ttexture = loader.load( fileName );\n\n\t\t\t}\n\n\t\t} else if ( extension === 'dds' ) {\n\n\t\t\tconst loader = this.manager.getHandler( '.dds' );\n\n\t\t\tif ( loader === null ) {\n\n\t\t\t\tconsole.warn( 'FBXLoader: DDS loader not found, creating placeholder texture for', textureNode.RelativeFilename );\n\t\t\t\ttexture = new Texture();\n\n\t\t\t} else {\n\n\t\t\t\tloader.setPath( this.textureLoader.path );\n\t\t\t\ttexture = loader.load( fileName );\n\n\t\t\t}\n\n\t\t} else if ( extension === 'psd' ) {\n\n\t\t\tconsole.warn( 'FBXLoader: PSD textures are not supported, creating placeholder texture for', textureNode.RelativeFilename );\n\t\t\ttexture = new Texture();\n\n\t\t} else {\n\n\t\t\ttexture = this.textureLoader.load( fileName );\n\n\t\t}\n\n\t\tthis.textureLoader.setPath( currentPath );\n\n\t\treturn texture;\n\n\t}\n\n\t// Parse nodes in FBXTree.Objects.Material\n\tparseMaterials( textureMap ) {\n\n\t\tconst materialMap = new Map();\n\n\t\tif ( 'Material' in fbxTree.Objects ) {\n\n\t\t\tconst materialNodes = fbxTree.Objects.Material;\n\n\t\t\tfor ( const nodeID in materialNodes ) {\n\n\t\t\t\tconst material = this.parseMaterial( materialNodes[ nodeID ], textureMap );\n\n\t\t\t\tif ( material !== null ) materialMap.set( parseInt( nodeID ), material );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materialMap;\n\n\t}\n\n\t// Parse single node in FBXTree.Objects.Material\n\t// Materials are connected to texture maps in FBXTree.Objects.Textures\n\t// FBX format currently only supports Lambert and Phong shading models\n\tparseMaterial( materialNode, textureMap ) {\n\n\t\tconst ID = materialNode.id;\n\t\tconst name = materialNode.attrName;\n\t\tlet type = materialNode.ShadingModel;\n\n\t\t// Case where FBX wraps shading model in property object.\n\t\tif ( typeof type === 'object' ) {\n\n\t\t\ttype = type.value;\n\n\t\t}\n\n\t\t// Ignore unused materials which don't have any connections.\n\t\tif ( ! connections.has( ID ) ) return null;\n\n\t\tconst parameters = this.parseParameters( materialNode, textureMap, ID );\n\n\t\tlet material;\n\n\t\tswitch ( type.toLowerCase() ) {\n\n\t\t\tcase 'phong':\n\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\tbreak;\n\t\t\tcase 'lambert':\n\t\t\t\tmaterial = new MeshLambertMaterial();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.FBXLoader: unknown material type \"%s\". Defaulting to MeshPhongMaterial.', type );\n\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tmaterial.setValues( parameters );\n\t\tmaterial.name = name;\n\n\t\treturn material;\n\n\t}\n\n\t// Parse FBX material and return parameters suitable for a three.js material\n\t// Also parse the texture map and return any textures associated with the material\n\tparseParameters( materialNode, textureMap, ID ) {\n\n\t\tconst parameters = {};\n\n\t\tif ( materialNode.BumpFactor ) {\n\n\t\t\tparameters.bumpScale = materialNode.BumpFactor.value;\n\n\t\t}\n\n\t\tif ( materialNode.Diffuse ) {\n\n\t\t\tparameters.color = new Color().fromArray( materialNode.Diffuse.value ).convertSRGBToLinear();\n\n\t\t} else if ( materialNode.DiffuseColor && ( materialNode.DiffuseColor.type === 'Color' || materialNode.DiffuseColor.type === 'ColorRGB' ) ) {\n\n\t\t\t// The blender exporter exports diffuse here instead of in materialNode.Diffuse\n\t\t\tparameters.color = new Color().fromArray( materialNode.DiffuseColor.value ).convertSRGBToLinear();\n\n\t\t}\n\n\t\tif ( materialNode.DisplacementFactor ) {\n\n\t\t\tparameters.displacementScale = materialNode.DisplacementFactor.value;\n\n\t\t}\n\n\t\tif ( materialNode.Emissive ) {\n\n\t\t\tparameters.emissive = new Color().fromArray( materialNode.Emissive.value ).convertSRGBToLinear();\n\n\t\t} else if ( materialNode.EmissiveColor && ( materialNode.EmissiveColor.type === 'Color' || materialNode.EmissiveColor.type === 'ColorRGB' ) ) {\n\n\t\t\t// The blender exporter exports emissive color here instead of in materialNode.Emissive\n\t\t\tparameters.emissive = new Color().fromArray( materialNode.EmissiveColor.value ).convertSRGBToLinear();\n\n\t\t}\n\n\t\tif ( materialNode.EmissiveFactor ) {\n\n\t\t\tparameters.emissiveIntensity = parseFloat( materialNode.EmissiveFactor.value );\n\n\t\t}\n\n\t\tif ( materialNode.Opacity ) {\n\n\t\t\tparameters.opacity = parseFloat( materialNode.Opacity.value );\n\n\t\t}\n\n\t\tif ( parameters.opacity < 1.0 ) {\n\n\t\t\tparameters.transparent = true;\n\n\t\t}\n\n\t\tif ( materialNode.ReflectionFactor ) {\n\n\t\t\tparameters.reflectivity = materialNode.ReflectionFactor.value;\n\n\t\t}\n\n\t\tif ( materialNode.Shininess ) {\n\n\t\t\tparameters.shininess = materialNode.Shininess.value;\n\n\t\t}\n\n\t\tif ( materialNode.Specular ) {\n\n\t\t\tparameters.specular = new Color().fromArray( materialNode.Specular.value ).convertSRGBToLinear();\n\n\t\t} else if ( materialNode.SpecularColor && materialNode.SpecularColor.type === 'Color' ) {\n\n\t\t\t// The blender exporter exports specular color here instead of in materialNode.Specular\n\t\t\tparameters.specular = new Color().fromArray( materialNode.SpecularColor.value ).convertSRGBToLinear();\n\n\t\t}\n\n\t\tconst scope = this;\n\t\tconnections.get( ID ).children.forEach( function ( child ) {\n\n\t\t\tconst type = child.relationship;\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'Bump':\n\t\t\t\t\tparameters.bumpMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Maya|TEX_ao_map':\n\t\t\t\t\tparameters.aoMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DiffuseColor':\n\t\t\t\tcase 'Maya|TEX_color_map':\n\t\t\t\t\tparameters.map = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tif ( parameters.map !== undefined ) {\n\n\t\t\t\t\t\tparameters.map.colorSpace = SRGBColorSpace;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DisplacementColor':\n\t\t\t\t\tparameters.displacementMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EmissiveColor':\n\t\t\t\t\tparameters.emissiveMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tif ( parameters.emissiveMap !== undefined ) {\n\n\t\t\t\t\t\tparameters.emissiveMap.colorSpace = SRGBColorSpace;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'NormalMap':\n\t\t\t\tcase 'Maya|TEX_normal_map':\n\t\t\t\t\tparameters.normalMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ReflectionColor':\n\t\t\t\t\tparameters.envMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tif ( parameters.envMap !== undefined ) {\n\n\t\t\t\t\t\tparameters.envMap.mapping = EquirectangularReflectionMapping;\n\t\t\t\t\t\tparameters.envMap.colorSpace = SRGBColorSpace;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpecularColor':\n\t\t\t\t\tparameters.specularMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tif ( parameters.specularMap !== undefined ) {\n\n\t\t\t\t\t\tparameters.specularMap.colorSpace = SRGBColorSpace;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'TransparentColor':\n\t\t\t\tcase 'TransparencyFactor':\n\t\t\t\t\tparameters.alphaMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tparameters.transparent = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'AmbientColor':\n\t\t\t\tcase 'ShininessExponent': // AKA glossiness map\n\t\t\t\tcase 'SpecularFactor': // AKA specularLevel\n\t\t\t\tcase 'VectorDisplacementColor': // NOTE: Seems to be a copy of DisplacementColor\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: %s map is not supported in three.js, skipping texture.', type );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn parameters;\n\n\t}\n\n\t// get a texture from the textureMap for use by a material.\n\tgetTexture( textureMap, id ) {\n\n\t\t// if the texture is a layered texture, just use the first layer and issue a warning\n\t\tif ( 'LayeredTexture' in fbxTree.Objects && id in fbxTree.Objects.LayeredTexture ) {\n\n\t\t\tconsole.warn( 'THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.' );\n\t\t\tid = connections.get( id ).children[ 0 ].ID;\n\n\t\t}\n\n\t\treturn textureMap.get( id );\n\n\t}\n\n\t// Parse nodes in FBXTree.Objects.Deformer\n\t// Deformer node can contain skinning or Vertex Cache animation data, however only skinning is supported here\n\t// Generates map of Skeleton-like objects for use later when generating and binding skeletons.\n\tparseDeformers() {\n\n\t\tconst skeletons = {};\n\t\tconst morphTargets = {};\n\n\t\tif ( 'Deformer' in fbxTree.Objects ) {\n\n\t\t\tconst DeformerNodes = fbxTree.Objects.Deformer;\n\n\t\t\tfor ( const nodeID in DeformerNodes ) {\n\n\t\t\t\tconst deformerNode = DeformerNodes[ nodeID ];\n\n\t\t\t\tconst relationships = connections.get( parseInt( nodeID ) );\n\n\t\t\t\tif ( deformerNode.attrType === 'Skin' ) {\n\n\t\t\t\t\tconst skeleton = this.parseSkeleton( relationships, DeformerNodes );\n\t\t\t\t\tskeleton.ID = nodeID;\n\n\t\t\t\t\tif ( relationships.parents.length > 1 ) console.warn( 'THREE.FBXLoader: skeleton attached to more than one geometry is not supported.' );\n\t\t\t\t\tskeleton.geometryID = relationships.parents[ 0 ].ID;\n\n\t\t\t\t\tskeletons[ nodeID ] = skeleton;\n\n\t\t\t\t} else if ( deformerNode.attrType === 'BlendShape' ) {\n\n\t\t\t\t\tconst morphTarget = {\n\t\t\t\t\t\tid: nodeID,\n\t\t\t\t\t};\n\n\t\t\t\t\tmorphTarget.rawTargets = this.parseMorphTargets( relationships, DeformerNodes );\n\t\t\t\t\tmorphTarget.id = nodeID;\n\n\t\t\t\t\tif ( relationships.parents.length > 1 ) console.warn( 'THREE.FBXLoader: morph target attached to more than one geometry is not supported.' );\n\n\t\t\t\t\tmorphTargets[ nodeID ] = morphTarget;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tskeletons: skeletons,\n\t\t\tmorphTargets: morphTargets,\n\n\t\t};\n\n\t}\n\n\t// Parse single nodes in FBXTree.Objects.Deformer\n\t// The top level skeleton node has type 'Skin' and sub nodes have type 'Cluster'\n\t// Each skin node represents a skeleton and each cluster node represents a bone\n\tparseSkeleton( relationships, deformerNodes ) {\n\n\t\tconst rawBones = [];\n\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tconst boneNode = deformerNodes[ child.ID ];\n\n\t\t\tif ( boneNode.attrType !== 'Cluster' ) return;\n\n\t\t\tconst rawBone = {\n\n\t\t\t\tID: child.ID,\n\t\t\t\tindices: [],\n\t\t\t\tweights: [],\n\t\t\t\ttransformLink: new Matrix4().fromArray( boneNode.TransformLink.a ),\n\t\t\t\t// transform: new Matrix4().fromArray( boneNode.Transform.a ),\n\t\t\t\t// linkMode: boneNode.Mode,\n\n\t\t\t};\n\n\t\t\tif ( 'Indexes' in boneNode ) {\n\n\t\t\t\trawBone.indices = boneNode.Indexes.a;\n\t\t\t\trawBone.weights = boneNode.Weights.a;\n\n\t\t\t}\n\n\t\t\trawBones.push( rawBone );\n\n\t\t} );\n\n\t\treturn {\n\n\t\t\trawBones: rawBones,\n\t\t\tbones: []\n\n\t\t};\n\n\t}\n\n\t// The top level morph deformer node has type \"BlendShape\" and sub nodes have type \"BlendShapeChannel\"\n\tparseMorphTargets( relationships, deformerNodes ) {\n\n\t\tconst rawMorphTargets = [];\n\n\t\tfor ( let i = 0; i < relationships.children.length; i ++ ) {\n\n\t\t\tconst child = relationships.children[ i ];\n\n\t\t\tconst morphTargetNode = deformerNodes[ child.ID ];\n\n\t\t\tconst rawMorphTarget = {\n\n\t\t\t\tname: morphTargetNode.attrName,\n\t\t\t\tinitialWeight: morphTargetNode.DeformPercent,\n\t\t\t\tid: morphTargetNode.id,\n\t\t\t\tfullWeights: morphTargetNode.FullWeights.a\n\n\t\t\t};\n\n\t\t\tif ( morphTargetNode.attrType !== 'BlendShapeChannel' ) return;\n\n\t\t\trawMorphTarget.geoID = connections.get( parseInt( child.ID ) ).children.filter( function ( child ) {\n\n\t\t\t\treturn child.relationship === undefined;\n\n\t\t\t} )[ 0 ].ID;\n\n\t\t\trawMorphTargets.push( rawMorphTarget );\n\n\t\t}\n\n\t\treturn rawMorphTargets;\n\n\t}\n\n\t// create the main Group() to be returned by the loader\n\tparseScene( deformers, geometryMap, materialMap ) {\n\n\t\tsceneGraph = new Group();\n\n\t\tconst modelMap = this.parseModels( deformers.skeletons, geometryMap, materialMap );\n\n\t\tconst modelNodes = fbxTree.Objects.Model;\n\n\t\tconst scope = this;\n\t\tmodelMap.forEach( function ( model ) {\n\n\t\t\tconst modelNode = modelNodes[ model.ID ];\n\t\t\tscope.setLookAtProperties( model, modelNode );\n\n\t\t\tconst parentConnections = connections.get( model.ID ).parents;\n\n\t\t\tparentConnections.forEach( function ( connection ) {\n\n\t\t\t\tconst parent = modelMap.get( connection.ID );\n\t\t\t\tif ( parent !== undefined ) parent.add( model );\n\n\t\t\t} );\n\n\t\t\tif ( model.parent === null ) {\n\n\t\t\t\tsceneGraph.add( model );\n\n\t\t\t}\n\n\n\t\t} );\n\n\t\tthis.bindSkeleton( deformers.skeletons, geometryMap, modelMap );\n\n\t\tthis.addGlobalSceneSettings();\n\n\t\tsceneGraph.traverse( function ( node ) {\n\n\t\t\tif ( node.userData.transformData ) {\n\n\t\t\t\tif ( node.parent ) {\n\n\t\t\t\t\tnode.userData.transformData.parentMatrix = node.parent.matrix;\n\t\t\t\t\tnode.userData.transformData.parentMatrixWorld = node.parent.matrixWorld;\n\n\t\t\t\t}\n\n\t\t\t\tconst transform = generateTransform( node.userData.transformData );\n\n\t\t\t\tnode.applyMatrix4( transform );\n\t\t\t\tnode.updateWorldMatrix();\n\n\t\t\t}\n\n\t\t} );\n\n\t\tconst animations = new AnimationParser().parse();\n\n\t\t// if all the models where already combined in a single group, just return that\n\t\tif ( sceneGraph.children.length === 1 && sceneGraph.children[ 0 ].isGroup ) {\n\n\t\t\tsceneGraph.children[ 0 ].animations = animations;\n\t\t\tsceneGraph = sceneGraph.children[ 0 ];\n\n\t\t}\n\n\t\tsceneGraph.animations = animations;\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.Model\n\tparseModels( skeletons, geometryMap, materialMap ) {\n\n\t\tconst modelMap = new Map();\n\t\tconst modelNodes = fbxTree.Objects.Model;\n\n\t\tfor ( const nodeID in modelNodes ) {\n\n\t\t\tconst id = parseInt( nodeID );\n\t\t\tconst node = modelNodes[ nodeID ];\n\t\t\tconst relationships = connections.get( id );\n\n\t\t\tlet model = this.buildSkeleton( relationships, skeletons, id, node.attrName );\n\n\t\t\tif ( ! model ) {\n\n\t\t\t\tswitch ( node.attrType ) {\n\n\t\t\t\t\tcase 'Camera':\n\t\t\t\t\t\tmodel = this.createCamera( relationships );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Light':\n\t\t\t\t\t\tmodel = this.createLight( relationships );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Mesh':\n\t\t\t\t\t\tmodel = this.createMesh( relationships, geometryMap, materialMap );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'NurbsCurve':\n\t\t\t\t\t\tmodel = this.createCurve( relationships, geometryMap );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'LimbNode':\n\t\t\t\t\tcase 'Root':\n\t\t\t\t\t\tmodel = new Bone();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Null':\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmodel = new Group();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tmodel.name = node.attrName ? PropertyBinding.sanitizeNodeName( node.attrName ) : '';\n\t\t\t\tmodel.userData.originalName = node.attrName;\n\n\t\t\t\tmodel.ID = id;\n\n\t\t\t}\n\n\t\t\tthis.getTransformData( model, node );\n\t\t\tmodelMap.set( id, model );\n\n\t\t}\n\n\t\treturn modelMap;\n\n\t}\n\n\tbuildSkeleton( relationships, skeletons, id, name ) {\n\n\t\tlet bone = null;\n\n\t\trelationships.parents.forEach( function ( parent ) {\n\n\t\t\tfor ( const ID in skeletons ) {\n\n\t\t\t\tconst skeleton = skeletons[ ID ];\n\n\t\t\t\tskeleton.rawBones.forEach( function ( rawBone, i ) {\n\n\t\t\t\t\tif ( rawBone.ID === parent.ID ) {\n\n\t\t\t\t\t\tconst subBone = bone;\n\t\t\t\t\t\tbone = new Bone();\n\n\t\t\t\t\t\tbone.matrixWorld.copy( rawBone.transformLink );\n\n\t\t\t\t\t\t// set name and id here - otherwise in cases where \"subBone\" is created it will not have a name / id\n\n\t\t\t\t\t\tbone.name = name ? PropertyBinding.sanitizeNodeName( name ) : '';\n\t\t\t\t\t\tbone.userData.originalName = name;\n\t\t\t\t\t\tbone.ID = id;\n\n\t\t\t\t\t\tskeleton.bones[ i ] = bone;\n\n\t\t\t\t\t\t// In cases where a bone is shared between multiple meshes\n\t\t\t\t\t\t// duplicate the bone here and and it as a child of the first bone\n\t\t\t\t\t\tif ( subBone !== null ) {\n\n\t\t\t\t\t\t\tbone.add( subBone );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn bone;\n\n\t}\n\n\t// create a PerspectiveCamera or OrthographicCamera\n\tcreateCamera( relationships ) {\n\n\t\tlet model;\n\t\tlet cameraAttribute;\n\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tconst attr = fbxTree.Objects.NodeAttribute[ child.ID ];\n\n\t\t\tif ( attr !== undefined ) {\n\n\t\t\t\tcameraAttribute = attr;\n\n\t\t\t}\n\n\t\t} );\n\n\t\tif ( cameraAttribute === undefined ) {\n\n\t\t\tmodel = new Object3D();\n\n\t\t} else {\n\n\t\t\tlet type = 0;\n\t\t\tif ( cameraAttribute.CameraProjectionType !== undefined && cameraAttribute.CameraProjectionType.value === 1 ) {\n\n\t\t\t\ttype = 1;\n\n\t\t\t}\n\n\t\t\tlet nearClippingPlane = 1;\n\t\t\tif ( cameraAttribute.NearPlane !== undefined ) {\n\n\t\t\t\tnearClippingPlane = cameraAttribute.NearPlane.value / 1000;\n\n\t\t\t}\n\n\t\t\tlet farClippingPlane = 1000;\n\t\t\tif ( cameraAttribute.FarPlane !== undefined ) {\n\n\t\t\t\tfarClippingPlane = cameraAttribute.FarPlane.value / 1000;\n\n\t\t\t}\n\n\n\t\t\tlet width = window.innerWidth;\n\t\t\tlet height = window.innerHeight;\n\n\t\t\tif ( cameraAttribute.AspectWidth !== undefined && cameraAttribute.AspectHeight !== undefined ) {\n\n\t\t\t\twidth = cameraAttribute.AspectWidth.value;\n\t\t\t\theight = cameraAttribute.AspectHeight.value;\n\n\t\t\t}\n\n\t\t\tconst aspect = width / height;\n\n\t\t\tlet fov = 45;\n\t\t\tif ( cameraAttribute.FieldOfView !== undefined ) {\n\n\t\t\t\tfov = cameraAttribute.FieldOfView.value;\n\n\t\t\t}\n\n\t\t\tconst focalLength = cameraAttribute.FocalLength ? cameraAttribute.FocalLength.value : null;\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 0: // Perspective\n\t\t\t\t\tmodel = new PerspectiveCamera( fov, aspect, nearClippingPlane, farClippingPlane );\n\t\t\t\t\tif ( focalLength !== null ) model.setFocalLength( focalLength );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1: // Orthographic\n\t\t\t\t\tmodel = new OrthographicCamera( - width / 2, width / 2, height / 2, - height / 2, nearClippingPlane, farClippingPlane );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: Unknown camera type ' + type + '.' );\n\t\t\t\t\tmodel = new Object3D();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn model;\n\n\t}\n\n\t// Create a DirectionalLight, PointLight or SpotLight\n\tcreateLight( relationships ) {\n\n\t\tlet model;\n\t\tlet lightAttribute;\n\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tconst attr = fbxTree.Objects.NodeAttribute[ child.ID ];\n\n\t\t\tif ( attr !== undefined ) {\n\n\t\t\t\tlightAttribute = attr;\n\n\t\t\t}\n\n\t\t} );\n\n\t\tif ( lightAttribute === undefined ) {\n\n\t\t\tmodel = new Object3D();\n\n\t\t} else {\n\n\t\t\tlet type;\n\n\t\t\t// LightType can be undefined for Point lights\n\t\t\tif ( lightAttribute.LightType === undefined ) {\n\n\t\t\t\ttype = 0;\n\n\t\t\t} else {\n\n\t\t\t\ttype = lightAttribute.LightType.value;\n\n\t\t\t}\n\n\t\t\tlet color = 0xffffff;\n\n\t\t\tif ( lightAttribute.Color !== undefined ) {\n\n\t\t\t\tcolor = new Color().fromArray( lightAttribute.Color.value ).convertSRGBToLinear();\n\n\t\t\t}\n\n\t\t\tlet intensity = ( lightAttribute.Intensity === undefined ) ? 1 : lightAttribute.Intensity.value / 100;\n\n\t\t\t// light disabled\n\t\t\tif ( lightAttribute.CastLightOnObject !== undefined && lightAttribute.CastLightOnObject.value === 0 ) {\n\n\t\t\t\tintensity = 0;\n\n\t\t\t}\n\n\t\t\tlet distance = 0;\n\t\t\tif ( lightAttribute.FarAttenuationEnd !== undefined ) {\n\n\t\t\t\tif ( lightAttribute.EnableFarAttenuation !== undefined && lightAttribute.EnableFarAttenuation.value === 0 ) {\n\n\t\t\t\t\tdistance = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdistance = lightAttribute.FarAttenuationEnd.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// TODO: could this be calculated linearly from FarAttenuationStart to FarAttenuationEnd?\n\t\t\tconst decay = 1;\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 0: // Point\n\t\t\t\t\tmodel = new PointLight( color, intensity, distance, decay );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1: // Directional\n\t\t\t\t\tmodel = new DirectionalLight( color, intensity );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2: // Spot\n\t\t\t\t\tlet angle = Math.PI / 3;\n\n\t\t\t\t\tif ( lightAttribute.InnerAngle !== undefined ) {\n\n\t\t\t\t\t\tangle = MathUtils.degToRad( lightAttribute.InnerAngle.value );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet penumbra = 0;\n\t\t\t\t\tif ( lightAttribute.OuterAngle !== undefined ) {\n\n\t\t\t\t\t\t// TODO: this is not correct - FBX calculates outer and inner angle in degrees\n\t\t\t\t\t\t// with OuterAngle > InnerAngle && OuterAngle <= Math.PI\n\t\t\t\t\t\t// while three.js uses a penumbra between (0, 1) to attenuate the inner angle\n\t\t\t\t\t\tpenumbra = MathUtils.degToRad( lightAttribute.OuterAngle.value );\n\t\t\t\t\t\tpenumbra = Math.max( penumbra, 1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmodel = new SpotLight( color, intensity, distance, angle, penumbra, decay );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: Unknown light type ' + lightAttribute.LightType.value + ', defaulting to a PointLight.' );\n\t\t\t\t\tmodel = new PointLight( color, intensity );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( lightAttribute.CastShadows !== undefined && lightAttribute.CastShadows.value === 1 ) {\n\n\t\t\t\tmodel.castShadow = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn model;\n\n\t}\n\n\tcreateMesh( relationships, geometryMap, materialMap ) {\n\n\t\tlet model;\n\t\tlet geometry = null;\n\t\tlet material = null;\n\t\tconst materials = [];\n\n\t\t// get geometry and materials(s) from connections\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tif ( geometryMap.has( child.ID ) ) {\n\n\t\t\t\tgeometry = geometryMap.get( child.ID );\n\n\t\t\t}\n\n\t\t\tif ( materialMap.has( child.ID ) ) {\n\n\t\t\t\tmaterials.push( materialMap.get( child.ID ) );\n\n\t\t\t}\n\n\t\t} );\n\n\t\tif ( materials.length > 1 ) {\n\n\t\t\tmaterial = materials;\n\n\t\t} else if ( materials.length > 0 ) {\n\n\t\t\tmaterial = materials[ 0 ];\n\n\t\t} else {\n\n\t\t\tmaterial = new MeshPhongMaterial( {\n\t\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\t\tcolor: 0xcccccc\n\t\t\t} );\n\t\t\tmaterials.push( material );\n\n\t\t}\n\n\t\tif ( 'color' in geometry.attributes ) {\n\n\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\tmaterial.vertexColors = true;\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( geometry.FBX_Deformer ) {\n\n\t\t\tmodel = new SkinnedMesh( geometry, material );\n\t\t\tmodel.normalizeSkinWeights();\n\n\t\t} else {\n\n\t\t\tmodel = new Mesh( geometry, material );\n\n\t\t}\n\n\t\treturn model;\n\n\t}\n\n\tcreateCurve( relationships, geometryMap ) {\n\n\t\tconst geometry = relationships.children.reduce( function ( geo, child ) {\n\n\t\t\tif ( geometryMap.has( child.ID ) ) geo = geometryMap.get( child.ID );\n\n\t\t\treturn geo;\n\n\t\t}, null );\n\n\t\t// FBX does not list materials for Nurbs lines, so we'll just put our own in here.\n\t\tconst material = new LineBasicMaterial( {\n\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\tcolor: 0x3300ff,\n\t\t\tlinewidth: 1\n\t\t} );\n\t\treturn new Line( geometry, material );\n\n\t}\n\n\t// parse the model node for transform data\n\tgetTransformData( model, modelNode ) {\n\n\t\tconst transformData = {};\n\n\t\tif ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value );\n\n\t\tif ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value );\n\t\telse transformData.eulerOrder = 'ZYX';\n\n\t\tif ( 'Lcl_Translation' in modelNode ) transformData.translation = modelNode.Lcl_Translation.value;\n\n\t\tif ( 'PreRotation' in modelNode ) transformData.preRotation = modelNode.PreRotation.value;\n\t\tif ( 'Lcl_Rotation' in modelNode ) transformData.rotation = modelNode.Lcl_Rotation.value;\n\t\tif ( 'PostRotation' in modelNode ) transformData.postRotation = modelNode.PostRotation.value;\n\n\t\tif ( 'Lcl_Scaling' in modelNode ) transformData.scale = modelNode.Lcl_Scaling.value;\n\n\t\tif ( 'ScalingOffset' in modelNode ) transformData.scalingOffset = modelNode.ScalingOffset.value;\n\t\tif ( 'ScalingPivot' in modelNode ) transformData.scalingPivot = modelNode.ScalingPivot.value;\n\n\t\tif ( 'RotationOffset' in modelNode ) transformData.rotationOffset = modelNode.RotationOffset.value;\n\t\tif ( 'RotationPivot' in modelNode ) transformData.rotationPivot = modelNode.RotationPivot.value;\n\n\t\tmodel.userData.transformData = transformData;\n\n\t}\n\n\tsetLookAtProperties( model, modelNode ) {\n\n\t\tif ( 'LookAtProperty' in modelNode ) {\n\n\t\t\tconst children = connections.get( model.ID ).children;\n\n\t\t\tchildren.forEach( function ( child ) {\n\n\t\t\t\tif ( child.relationship === 'LookAtProperty' ) {\n\n\t\t\t\t\tconst lookAtTarget = fbxTree.Objects.Model[ child.ID ];\n\n\t\t\t\t\tif ( 'Lcl_Translation' in lookAtTarget ) {\n\n\t\t\t\t\t\tconst pos = lookAtTarget.Lcl_Translation.value;\n\n\t\t\t\t\t\t// DirectionalLight, SpotLight\n\t\t\t\t\t\tif ( model.target !== undefined ) {\n\n\t\t\t\t\t\t\tmodel.target.position.fromArray( pos );\n\t\t\t\t\t\t\tsceneGraph.add( model.target );\n\n\t\t\t\t\t\t} else { // Cameras and other Object3Ds\n\n\t\t\t\t\t\t\tmodel.lookAt( new Vector3().fromArray( pos ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\tbindSkeleton( skeletons, geometryMap, modelMap ) {\n\n\t\tconst bindMatrices = this.parsePoseNodes();\n\n\t\tfor ( const ID in skeletons ) {\n\n\t\t\tconst skeleton = skeletons[ ID ];\n\n\t\t\tconst parents = connections.get( parseInt( skeleton.ID ) ).parents;\n\n\t\t\tparents.forEach( function ( parent ) {\n\n\t\t\t\tif ( geometryMap.has( parent.ID ) ) {\n\n\t\t\t\t\tconst geoID = parent.ID;\n\t\t\t\t\tconst geoRelationships = connections.get( geoID );\n\n\t\t\t\t\tgeoRelationships.parents.forEach( function ( geoConnParent ) {\n\n\t\t\t\t\t\tif ( modelMap.has( geoConnParent.ID ) ) {\n\n\t\t\t\t\t\t\tconst model = modelMap.get( geoConnParent.ID );\n\n\t\t\t\t\t\t\tmodel.bind( new Skeleton( skeleton.bones ), bindMatrices[ geoConnParent.ID ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\tparsePoseNodes() {\n\n\t\tconst bindMatrices = {};\n\n\t\tif ( 'Pose' in fbxTree.Objects ) {\n\n\t\t\tconst BindPoseNode = fbxTree.Objects.Pose;\n\n\t\t\tfor ( const nodeID in BindPoseNode ) {\n\n\t\t\t\tif ( BindPoseNode[ nodeID ].attrType === 'BindPose' && BindPoseNode[ nodeID ].NbPoseNodes > 0 ) {\n\n\t\t\t\t\tconst poseNodes = BindPoseNode[ nodeID ].PoseNode;\n\n\t\t\t\t\tif ( Array.isArray( poseNodes ) ) {\n\n\t\t\t\t\t\tposeNodes.forEach( function ( poseNode ) {\n\n\t\t\t\t\t\t\tbindMatrices[ poseNode.Node ] = new Matrix4().fromArray( poseNode.Matrix.a );\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbindMatrices[ poseNodes.Node ] = new Matrix4().fromArray( poseNodes.Matrix.a );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn bindMatrices;\n\n\t}\n\n\taddGlobalSceneSettings() {\n\n\t\tif ( 'GlobalSettings' in fbxTree ) {\n\n\t\t\tif ( 'AmbientColor' in fbxTree.GlobalSettings ) {\n\n\t\t\t\t// Parse ambient color - if it's not set to black (default), create an ambient light\n\n\t\t\t\tconst ambientColor = fbxTree.GlobalSettings.AmbientColor.value;\n\t\t\t\tconst r = ambientColor[ 0 ];\n\t\t\t\tconst g = ambientColor[ 1 ];\n\t\t\t\tconst b = ambientColor[ 2 ];\n\n\t\t\t\tif ( r !== 0 || g !== 0 || b !== 0 ) {\n\n\t\t\t\t\tconst color = new Color( r, g, b ).convertSRGBToLinear();\n\t\t\t\t\tsceneGraph.add( new AmbientLight( color, 1 ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( 'UnitScaleFactor' in fbxTree.GlobalSettings ) {\n\n\t\t\t\tsceneGraph.userData.unitScaleFactor = fbxTree.GlobalSettings.UnitScaleFactor.value;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\n// parse Geometry data from FBXTree and return map of BufferGeometries\nclass GeometryParser {\n\n\tconstructor() {\n\n\t\tthis.negativeMaterialIndices = false;\n\n\t}\n\n\t// Parse nodes in FBXTree.Objects.Geometry\n\tparse( deformers ) {\n\n\t\tconst geometryMap = new Map();\n\n\t\tif ( 'Geometry' in fbxTree.Objects ) {\n\n\t\t\tconst geoNodes = fbxTree.Objects.Geometry;\n\n\t\t\tfor ( const nodeID in geoNodes ) {\n\n\t\t\t\tconst relationships = connections.get( parseInt( nodeID ) );\n\t\t\t\tconst geo = this.parseGeometry( relationships, geoNodes[ nodeID ], deformers );\n\n\t\t\t\tgeometryMap.set( parseInt( nodeID ), geo );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// report warnings\n\n\t\tif ( this.negativeMaterialIndices === true ) {\n\n\t\t\tconsole.warn( 'THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected.' );\n\n\t\t}\n\n\t\treturn geometryMap;\n\n\t}\n\n\t// Parse single node in FBXTree.Objects.Geometry\n\tparseGeometry( relationships, geoNode, deformers ) {\n\n\t\tswitch ( geoNode.attrType ) {\n\n\t\t\tcase 'Mesh':\n\t\t\t\treturn this.parseMeshGeometry( relationships, geoNode, deformers );\n\t\t\t\tbreak;\n\n\t\t\tcase 'NurbsCurve':\n\t\t\t\treturn this.parseNurbsGeometry( geoNode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\t// Parse single node mesh geometry in FBXTree.Objects.Geometry\n\tparseMeshGeometry( relationships, geoNode, deformers ) {\n\n\t\tconst skeletons = deformers.skeletons;\n\t\tconst morphTargets = [];\n\n\t\tconst modelNodes = relationships.parents.map( function ( parent ) {\n\n\t\t\treturn fbxTree.Objects.Model[ parent.ID ];\n\n\t\t} );\n\n\t\t// don't create geometry if it is not associated with any models\n\t\tif ( modelNodes.length === 0 ) return;\n\n\t\tconst skeleton = relationships.children.reduce( function ( skeleton, child ) {\n\n\t\t\tif ( skeletons[ child.ID ] !== undefined ) skeleton = skeletons[ child.ID ];\n\n\t\t\treturn skeleton;\n\n\t\t}, null );\n\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tif ( deformers.morphTargets[ child.ID ] !== undefined ) {\n\n\t\t\t\tmorphTargets.push( deformers.morphTargets[ child.ID ] );\n\n\t\t\t}\n\n\t\t} );\n\n\t\t// Assume one model and get the preRotation from that\n\t\t// if there is more than one model associated with the geometry this may cause problems\n\t\tconst modelNode = modelNodes[ 0 ];\n\n\t\tconst transformData = {};\n\n\t\tif ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value );\n\t\tif ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value );\n\n\t\tif ( 'GeometricTranslation' in modelNode ) transformData.translation = modelNode.GeometricTranslation.value;\n\t\tif ( 'GeometricRotation' in modelNode ) transformData.rotation = modelNode.GeometricRotation.value;\n\t\tif ( 'GeometricScaling' in modelNode ) transformData.scale = modelNode.GeometricScaling.value;\n\n\t\tconst transform = generateTransform( transformData );\n\n\t\treturn this.genGeometry( geoNode, skeleton, morphTargets, transform );\n\n\t}\n\n\t// Generate a BufferGeometry from a node in FBXTree.Objects.Geometry\n\tgenGeometry( geoNode, skeleton, morphTargets, preTransform ) {\n\n\t\tconst geo = new BufferGeometry();\n\t\tif ( geoNode.attrName ) geo.name = geoNode.attrName;\n\n\t\tconst geoInfo = this.parseGeoNode( geoNode, skeleton );\n\t\tconst buffers = this.genBuffers( geoInfo );\n\n\t\tconst positionAttribute = new Float32BufferAttribute( buffers.vertex, 3 );\n\n\t\tpositionAttribute.applyMatrix4( preTransform );\n\n\t\tgeo.setAttribute( 'position', positionAttribute );\n\n\t\tif ( buffers.colors.length > 0 ) {\n\n\t\t\tgeo.setAttribute( 'color', new Float32BufferAttribute( buffers.colors, 3 ) );\n\n\t\t}\n\n\t\tif ( skeleton ) {\n\n\t\t\tgeo.setAttribute( 'skinIndex', new Uint16BufferAttribute( buffers.weightsIndices, 4 ) );\n\n\t\t\tgeo.setAttribute( 'skinWeight', new Float32BufferAttribute( buffers.vertexWeights, 4 ) );\n\n\t\t\t// used later to bind the skeleton to the model\n\t\t\tgeo.FBX_Deformer = skeleton;\n\n\t\t}\n\n\t\tif ( buffers.normal.length > 0 ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( preTransform );\n\n\t\t\tconst normalAttribute = new Float32BufferAttribute( buffers.normal, 3 );\n\t\t\tnormalAttribute.applyNormalMatrix( normalMatrix );\n\n\t\t\tgeo.setAttribute( 'normal', normalAttribute );\n\n\t\t}\n\n\t\tbuffers.uvs.forEach( function ( uvBuffer, i ) {\n\n\t\t\tconst name = i === 0 ? 'uv' : `uv${ i }`;\n\n\t\t\tgeo.setAttribute( name, new Float32BufferAttribute( buffers.uvs[ i ], 2 ) );\n\n\t\t} );\n\n\t\tif ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) {\n\n\t\t\t// Convert the material indices of each vertex into rendering groups on the geometry.\n\t\t\tlet prevMaterialIndex = buffers.materialIndex[ 0 ];\n\t\t\tlet startIndex = 0;\n\n\t\t\tbuffers.materialIndex.forEach( function ( currentIndex, i ) {\n\n\t\t\t\tif ( currentIndex !== prevMaterialIndex ) {\n\n\t\t\t\t\tgeo.addGroup( startIndex, i - startIndex, prevMaterialIndex );\n\n\t\t\t\t\tprevMaterialIndex = currentIndex;\n\t\t\t\t\tstartIndex = i;\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\t// the loop above doesn't add the last group, do that here.\n\t\t\tif ( geo.groups.length > 0 ) {\n\n\t\t\t\tconst lastGroup = geo.groups[ geo.groups.length - 1 ];\n\t\t\t\tconst lastIndex = lastGroup.start + lastGroup.count;\n\n\t\t\t\tif ( lastIndex !== buffers.materialIndex.length ) {\n\n\t\t\t\t\tgeo.addGroup( lastIndex, buffers.materialIndex.length - lastIndex, prevMaterialIndex );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// case where there are multiple materials but the whole geometry is only\n\t\t\t// using one of them\n\t\t\tif ( geo.groups.length === 0 ) {\n\n\t\t\t\tgeo.addGroup( 0, buffers.materialIndex.length, buffers.materialIndex[ 0 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.addMorphTargets( geo, geoNode, morphTargets, preTransform );\n\n\t\treturn geo;\n\n\t}\n\n\tparseGeoNode( geoNode, skeleton ) {\n\n\t\tconst geoInfo = {};\n\n\t\tgeoInfo.vertexPositions = ( geoNode.Vertices !== undefined ) ? geoNode.Vertices.a : [];\n\t\tgeoInfo.vertexIndices = ( geoNode.PolygonVertexIndex !== undefined ) ? geoNode.PolygonVertexIndex.a : [];\n\n\t\tif ( geoNode.LayerElementColor ) {\n\n\t\t\tgeoInfo.color = this.parseVertexColors( geoNode.LayerElementColor[ 0 ] );\n\n\t\t}\n\n\t\tif ( geoNode.LayerElementMaterial ) {\n\n\t\t\tgeoInfo.material = this.parseMaterialIndices( geoNode.LayerElementMaterial[ 0 ] );\n\n\t\t}\n\n\t\tif ( geoNode.LayerElementNormal ) {\n\n\t\t\tgeoInfo.normal = this.parseNormals( geoNode.LayerElementNormal[ 0 ] );\n\n\t\t}\n\n\t\tif ( geoNode.LayerElementUV ) {\n\n\t\t\tgeoInfo.uv = [];\n\n\t\t\tlet i = 0;\n\t\t\twhile ( geoNode.LayerElementUV[ i ] ) {\n\n\t\t\t\tif ( geoNode.LayerElementUV[ i ].UV ) {\n\n\t\t\t\t\tgeoInfo.uv.push( this.parseUVs( geoNode.LayerElementUV[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeoInfo.weightTable = {};\n\n\t\tif ( skeleton !== null ) {\n\n\t\t\tgeoInfo.skeleton = skeleton;\n\n\t\t\tskeleton.rawBones.forEach( function ( rawBone, i ) {\n\n\t\t\t\t// loop over the bone's vertex indices and weights\n\t\t\t\trawBone.indices.forEach( function ( index, j ) {\n\n\t\t\t\t\tif ( geoInfo.weightTable[ index ] === undefined ) geoInfo.weightTable[ index ] = [];\n\n\t\t\t\t\tgeoInfo.weightTable[ index ].push( {\n\n\t\t\t\t\t\tid: i,\n\t\t\t\t\t\tweight: rawBone.weights[ j ],\n\n\t\t\t\t\t} );\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn geoInfo;\n\n\t}\n\n\tgenBuffers( geoInfo ) {\n\n\t\tconst buffers = {\n\t\t\tvertex: [],\n\t\t\tnormal: [],\n\t\t\tcolors: [],\n\t\t\tuvs: [],\n\t\t\tmaterialIndex: [],\n\t\t\tvertexWeights: [],\n\t\t\tweightsIndices: [],\n\t\t};\n\n\t\tlet polygonIndex = 0;\n\t\tlet faceLength = 0;\n\t\tlet displayedWeightsWarning = false;\n\n\t\t// these will hold data for a single face\n\t\tlet facePositionIndexes = [];\n\t\tlet faceNormals = [];\n\t\tlet faceColors = [];\n\t\tlet faceUVs = [];\n\t\tlet faceWeights = [];\n\t\tlet faceWeightIndices = [];\n\n\t\tconst scope = this;\n\t\tgeoInfo.vertexIndices.forEach( function ( vertexIndex, polygonVertexIndex ) {\n\n\t\t\tlet materialIndex;\n\t\t\tlet endOfFace = false;\n\n\t\t\t// Face index and vertex index arrays are combined in a single array\n\t\t\t// A cube with quad faces looks like this:\n\t\t\t// PolygonVertexIndex: *24 {\n\t\t\t// a: 0, 1, 3, -3, 2, 3, 5, -5, 4, 5, 7, -7, 6, 7, 1, -1, 1, 7, 5, -4, 6, 0, 2, -5\n\t\t\t// }\n\t\t\t// Negative numbers mark the end of a face - first face here is 0, 1, 3, -3\n\t\t\t// to find index of last vertex bit shift the index: ^ - 1\n\t\t\tif ( vertexIndex < 0 ) {\n\n\t\t\t\tvertexIndex = vertexIndex ^ - 1; // equivalent to ( x * -1 ) - 1\n\t\t\t\tendOfFace = true;\n\n\t\t\t}\n\n\t\t\tlet weightIndices = [];\n\t\t\tlet weights = [];\n\n\t\t\tfacePositionIndexes.push( vertexIndex * 3, vertexIndex * 3 + 1, vertexIndex * 3 + 2 );\n\n\t\t\tif ( geoInfo.color ) {\n\n\t\t\t\tconst data = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.color );\n\n\t\t\t\tfaceColors.push( data[ 0 ], data[ 1 ], data[ 2 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.skeleton ) {\n\n\t\t\t\tif ( geoInfo.weightTable[ vertexIndex ] !== undefined ) {\n\n\t\t\t\t\tgeoInfo.weightTable[ vertexIndex ].forEach( function ( wt ) {\n\n\t\t\t\t\t\tweights.push( wt.weight );\n\t\t\t\t\t\tweightIndices.push( wt.id );\n\n\t\t\t\t\t} );\n\n\n\t\t\t\t}\n\n\t\t\t\tif ( weights.length > 4 ) {\n\n\t\t\t\t\tif ( ! displayedWeightsWarning ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.' );\n\t\t\t\t\t\tdisplayedWeightsWarning = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst wIndex = [ 0, 0, 0, 0 ];\n\t\t\t\t\tconst Weight = [ 0, 0, 0, 0 ];\n\n\t\t\t\t\tweights.forEach( function ( weight, weightIndex ) {\n\n\t\t\t\t\t\tlet currentWeight = weight;\n\t\t\t\t\t\tlet currentIndex = weightIndices[ weightIndex ];\n\n\t\t\t\t\t\tWeight.forEach( function ( comparedWeight, comparedWeightIndex, comparedWeightArray ) {\n\n\t\t\t\t\t\t\tif ( currentWeight > comparedWeight ) {\n\n\t\t\t\t\t\t\t\tcomparedWeightArray[ comparedWeightIndex ] = currentWeight;\n\t\t\t\t\t\t\t\tcurrentWeight = comparedWeight;\n\n\t\t\t\t\t\t\t\tconst tmp = wIndex[ comparedWeightIndex ];\n\t\t\t\t\t\t\t\twIndex[ comparedWeightIndex ] = currentIndex;\n\t\t\t\t\t\t\t\tcurrentIndex = tmp;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\tweightIndices = wIndex;\n\t\t\t\t\tweights = Weight;\n\n\t\t\t\t}\n\n\t\t\t\t// if the weight array is shorter than 4 pad with 0s\n\t\t\t\twhile ( weights.length < 4 ) {\n\n\t\t\t\t\tweights.push( 0 );\n\t\t\t\t\tweightIndices.push( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 4; ++ i ) {\n\n\t\t\t\t\tfaceWeights.push( weights[ i ] );\n\t\t\t\t\tfaceWeightIndices.push( weightIndices[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.normal ) {\n\n\t\t\t\tconst data = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.normal );\n\n\t\t\t\tfaceNormals.push( data[ 0 ], data[ 1 ], data[ 2 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) {\n\n\t\t\t\tmaterialIndex = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.material )[ 0 ];\n\n\t\t\t\tif ( materialIndex < 0 ) {\n\n\t\t\t\t\tscope.negativeMaterialIndices = true;\n\t\t\t\t\tmaterialIndex = 0; // fallback\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.uv ) {\n\n\t\t\t\tgeoInfo.uv.forEach( function ( uv, i ) {\n\n\t\t\t\t\tconst data = getData( polygonVertexIndex, polygonIndex, vertexIndex, uv );\n\n\t\t\t\t\tif ( faceUVs[ i ] === undefined ) {\n\n\t\t\t\t\t\tfaceUVs[ i ] = [];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceUVs[ i ].push( data[ 0 ] );\n\t\t\t\t\tfaceUVs[ i ].push( data[ 1 ] );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tfaceLength ++;\n\n\t\t\tif ( endOfFace ) {\n\n\t\t\t\tscope.genFace( buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength );\n\n\t\t\t\tpolygonIndex ++;\n\t\t\t\tfaceLength = 0;\n\n\t\t\t\t// reset arrays for the next face\n\t\t\t\tfacePositionIndexes = [];\n\t\t\t\tfaceNormals = [];\n\t\t\t\tfaceColors = [];\n\t\t\t\tfaceUVs = [];\n\t\t\t\tfaceWeights = [];\n\t\t\t\tfaceWeightIndices = [];\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn buffers;\n\n\t}\n\n\t// See https://www.khronos.org/opengl/wiki/Calculating_a_Surface_Normal\n\tgetNormalNewell( vertices ) {\n\n\t\tconst normal = new Vector3( 0.0, 0.0, 0.0 );\n\n\t\tfor ( let i = 0; i < vertices.length; i ++ ) {\n\n\t\t\tconst current = vertices[ i ];\n\t\t\tconst next = vertices[ ( i + 1 ) % vertices.length ];\n\n\t\t\tnormal.x += ( current.y - next.y ) * ( current.z + next.z );\n\t\t\tnormal.y += ( current.z - next.z ) * ( current.x + next.x );\n\t\t\tnormal.z += ( current.x - next.x ) * ( current.y + next.y );\n\n\t\t}\n\n\t\tnormal.normalize();\n\n\t\treturn normal;\n\n\t}\n\n\tgetNormalTangentAndBitangent( vertices ) {\n\n\t\tconst normalVector = this.getNormalNewell( vertices );\n\t\t// Avoid up being equal or almost equal to normalVector\n\t\tconst up = Math.abs( normalVector.z ) > 0.5 ? new Vector3( 0.0, 1.0, 0.0 ) : new Vector3( 0.0, 0.0, 1.0 );\n\t\tconst tangent = up.cross( normalVector ).normalize();\n\t\tconst bitangent = normalVector.clone().cross( tangent ).normalize();\n\n\t\treturn {\n\t\t\tnormal: normalVector,\n\t\t\ttangent: tangent,\n\t\t\tbitangent: bitangent\n\t\t};\n\n\t}\n\n\tflattenVertex( vertex, normalTangent, normalBitangent ) {\n\n\t\treturn new Vector2(\n\t\t\tvertex.dot( normalTangent ),\n\t\t\tvertex.dot( normalBitangent )\n\t\t);\n\n\t}\n\n\t// Generate data for a single face in a geometry. If the face is a quad then split it into 2 tris\n\tgenFace( buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength ) {\n\n\t\tlet triangles;\n\n\t\tif ( faceLength > 3 ) {\n\n\t\t\t// Triangulate n-gon using earcut\n\n\t\t\tconst vertices = [];\n\n\t\t\tfor ( let i = 0; i < facePositionIndexes.length; i += 3 ) {\n\n\t\t\t\tvertices.push( new Vector3(\n\t\t\t\t\tgeoInfo.vertexPositions[ facePositionIndexes[ i ] ],\n\t\t\t\t\tgeoInfo.vertexPositions[ facePositionIndexes[ i + 1 ] ],\n\t\t\t\t\tgeoInfo.vertexPositions[ facePositionIndexes[ i + 2 ] ]\n\t\t\t\t) );\n\n\t\t\t}\n\n\t\t\tconst { tangent, bitangent } = this.getNormalTangentAndBitangent( vertices );\n\t\t\tconst triangulationInput = [];\n\n\t\t\tfor ( const vertex of vertices ) {\n\n\t\t\t\ttriangulationInput.push( this.flattenVertex( vertex, tangent, bitangent ) );\n\n\t\t\t}\n\n\t\t\ttriangles = ShapeUtils.triangulateShape( triangulationInput, [] );\n\n\t\t} else {\n\n\t\t\t// Regular triangle, skip earcut triangulation step\n\t\t\ttriangles = [[ 0, 1, 2 ]];\n\n\t\t}\n\n\t\tfor ( const [ i0, i1, i2 ] of triangles ) {\n\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 + 1 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 + 2 ] ] );\n\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 + 1 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 + 2 ] ] );\n\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 + 1 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 + 2 ] ] );\n\n\t\t\tif ( geoInfo.skeleton ) {\n\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i0 * 4 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i0 * 4 + 1 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i0 * 4 + 2 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i0 * 4 + 3 ] );\n\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i1 * 4 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i1 * 4 + 1 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i1 * 4 + 2 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i1 * 4 + 3 ] );\n\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i2 * 4 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i2 * 4 + 1 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i2 * 4 + 2 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i2 * 4 + 3 ] );\n\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i0 * 4 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 1 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 2 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 3 ] );\n\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i1 * 4 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 1 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 2 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 3 ] );\n\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i2 * 4 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 1 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 2 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 3 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.color ) {\n\n\t\t\t\tbuffers.colors.push( faceColors[ i0 * 3 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i0 * 3 + 1 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i0 * 3 + 2 ] );\n\n\t\t\t\tbuffers.colors.push( faceColors[ i1 * 3 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i1 * 3 + 1 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i1 * 3 + 2 ] );\n\n\t\t\t\tbuffers.colors.push( faceColors[ i2 * 3 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i2 * 3 + 1 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i2 * 3 + 2 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) {\n\n\t\t\t\tbuffers.materialIndex.push( materialIndex );\n\t\t\t\tbuffers.materialIndex.push( materialIndex );\n\t\t\t\tbuffers.materialIndex.push( materialIndex );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.normal ) {\n\n\t\t\t\tbuffers.normal.push( faceNormals[ i0 * 3 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i0 * 3 + 1 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i0 * 3 + 2 ] );\n\n\t\t\t\tbuffers.normal.push( faceNormals[ i1 * 3 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i1 * 3 + 1 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i1 * 3 + 2 ] );\n\n\t\t\t\tbuffers.normal.push( faceNormals[ i2 * 3 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i2 * 3 + 1 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i2 * 3 + 2 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.uv ) {\n\n\t\t\t\tgeoInfo.uv.forEach( function ( uv, j ) {\n\n\t\t\t\t\tif ( buffers.uvs[ j ] === undefined ) buffers.uvs[ j ] = [];\n\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i0 * 2 ] );\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i0 * 2 + 1 ] );\n\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i1 * 2 ] );\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i1 * 2 + 1 ] );\n\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i2 * 2 ] );\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i2 * 2 + 1 ] );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\taddMorphTargets( parentGeo, parentGeoNode, morphTargets, preTransform ) {\n\n\t\tif ( morphTargets.length === 0 ) return;\n\n\t\tparentGeo.morphTargetsRelative = true;\n\n\t\tparentGeo.morphAttributes.position = [];\n\t\t// parentGeo.morphAttributes.normal = []; // not implemented\n\n\t\tconst scope = this;\n\t\tmorphTargets.forEach( function ( morphTarget ) {\n\n\t\t\tmorphTarget.rawTargets.forEach( function ( rawTarget ) {\n\n\t\t\t\tconst morphGeoNode = fbxTree.Objects.Geometry[ rawTarget.geoID ];\n\n\t\t\t\tif ( morphGeoNode !== undefined ) {\n\n\t\t\t\t\tscope.genMorphGeometry( parentGeo, parentGeoNode, morphGeoNode, preTransform, rawTarget.name );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t// a morph geometry node is similar to a standard node, and the node is also contained\n\t// in FBXTree.Objects.Geometry, however it can only have attributes for position, normal\n\t// and a special attribute Index defining which vertices of the original geometry are affected\n\t// Normal and position attributes only have data for the vertices that are affected by the morph\n\tgenMorphGeometry( parentGeo, parentGeoNode, morphGeoNode, preTransform, name ) {\n\n\t\tconst vertexIndices = ( parentGeoNode.PolygonVertexIndex !== undefined ) ? parentGeoNode.PolygonVertexIndex.a : [];\n\n\t\tconst morphPositionsSparse = ( morphGeoNode.Vertices !== undefined ) ? morphGeoNode.Vertices.a : [];\n\t\tconst indices = ( morphGeoNode.Indexes !== undefined ) ? morphGeoNode.Indexes.a : [];\n\n\t\tconst length = parentGeo.attributes.position.count * 3;\n\t\tconst morphPositions = new Float32Array( length );\n\n\t\tfor ( let i = 0; i < indices.length; i ++ ) {\n\n\t\t\tconst morphIndex = indices[ i ] * 3;\n\n\t\t\tmorphPositions[ morphIndex ] = morphPositionsSparse[ i * 3 ];\n\t\t\tmorphPositions[ morphIndex + 1 ] = morphPositionsSparse[ i * 3 + 1 ];\n\t\t\tmorphPositions[ morphIndex + 2 ] = morphPositionsSparse[ i * 3 + 2 ];\n\n\t\t}\n\n\t\t// TODO: add morph normal support\n\t\tconst morphGeoInfo = {\n\t\t\tvertexIndices: vertexIndices,\n\t\t\tvertexPositions: morphPositions,\n\n\t\t};\n\n\t\tconst morphBuffers = this.genBuffers( morphGeoInfo );\n\n\t\tconst positionAttribute = new Float32BufferAttribute( morphBuffers.vertex, 3 );\n\t\tpositionAttribute.name = name || morphGeoNode.attrName;\n\n\t\tpositionAttribute.applyMatrix4( preTransform );\n\n\t\tparentGeo.morphAttributes.position.push( positionAttribute );\n\n\t}\n\n\t// Parse normal from FBXTree.Objects.Geometry.LayerElementNormal if it exists\n\tparseNormals( NormalNode ) {\n\n\t\tconst mappingType = NormalNode.MappingInformationType;\n\t\tconst referenceType = NormalNode.ReferenceInformationType;\n\t\tconst buffer = NormalNode.Normals.a;\n\t\tlet indexBuffer = [];\n\t\tif ( referenceType === 'IndexToDirect' ) {\n\n\t\t\tif ( 'NormalIndex' in NormalNode ) {\n\n\t\t\t\tindexBuffer = NormalNode.NormalIndex.a;\n\n\t\t\t} else if ( 'NormalsIndex' in NormalNode ) {\n\n\t\t\t\tindexBuffer = NormalNode.NormalsIndex.a;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\tdataSize: 3,\n\t\t\tbuffer: buffer,\n\t\t\tindices: indexBuffer,\n\t\t\tmappingType: mappingType,\n\t\t\treferenceType: referenceType\n\t\t};\n\n\t}\n\n\t// Parse UVs from FBXTree.Objects.Geometry.LayerElementUV if it exists\n\tparseUVs( UVNode ) {\n\n\t\tconst mappingType = UVNode.MappingInformationType;\n\t\tconst referenceType = UVNode.ReferenceInformationType;\n\t\tconst buffer = UVNode.UV.a;\n\t\tlet indexBuffer = [];\n\t\tif ( referenceType === 'IndexToDirect' ) {\n\n\t\t\tindexBuffer = UVNode.UVIndex.a;\n\n\t\t}\n\n\t\treturn {\n\t\t\tdataSize: 2,\n\t\t\tbuffer: buffer,\n\t\t\tindices: indexBuffer,\n\t\t\tmappingType: mappingType,\n\t\t\treferenceType: referenceType\n\t\t};\n\n\t}\n\n\t// Parse Vertex Colors from FBXTree.Objects.Geometry.LayerElementColor if it exists\n\tparseVertexColors( ColorNode ) {\n\n\t\tconst mappingType = ColorNode.MappingInformationType;\n\t\tconst referenceType = ColorNode.ReferenceInformationType;\n\t\tconst buffer = ColorNode.Colors.a;\n\t\tlet indexBuffer = [];\n\t\tif ( referenceType === 'IndexToDirect' ) {\n\n\t\t\tindexBuffer = ColorNode.ColorIndex.a;\n\n\t\t}\n\n\t\tfor ( let i = 0, c = new Color(); i < buffer.length; i += 4 ) {\n\n\t\t\tc.fromArray( buffer, i ).convertSRGBToLinear().toArray( buffer, i );\n\n\t\t}\n\n\t\treturn {\n\t\t\tdataSize: 4,\n\t\t\tbuffer: buffer,\n\t\t\tindices: indexBuffer,\n\t\t\tmappingType: mappingType,\n\t\t\treferenceType: referenceType\n\t\t};\n\n\t}\n\n\t// Parse mapping and material data in FBXTree.Objects.Geometry.LayerElementMaterial if it exists\n\tparseMaterialIndices( MaterialNode ) {\n\n\t\tconst mappingType = MaterialNode.MappingInformationType;\n\t\tconst referenceType = MaterialNode.ReferenceInformationType;\n\n\t\tif ( mappingType === 'NoMappingInformation' ) {\n\n\t\t\treturn {\n\t\t\t\tdataSize: 1,\n\t\t\t\tbuffer: [ 0 ],\n\t\t\t\tindices: [ 0 ],\n\t\t\t\tmappingType: 'AllSame',\n\t\t\t\treferenceType: referenceType\n\t\t\t};\n\n\t\t}\n\n\t\tconst materialIndexBuffer = MaterialNode.Materials.a;\n\n\t\t// Since materials are stored as indices, there's a bit of a mismatch between FBX and what\n\t\t// we expect.So we create an intermediate buffer that points to the index in the buffer,\n\t\t// for conforming with the other functions we've written for other data.\n\t\tconst materialIndices = [];\n\n\t\tfor ( let i = 0; i < materialIndexBuffer.length; ++ i ) {\n\n\t\t\tmaterialIndices.push( i );\n\n\t\t}\n\n\t\treturn {\n\t\t\tdataSize: 1,\n\t\t\tbuffer: materialIndexBuffer,\n\t\t\tindices: materialIndices,\n\t\t\tmappingType: mappingType,\n\t\t\treferenceType: referenceType\n\t\t};\n\n\t}\n\n\t// Generate a NurbGeometry from a node in FBXTree.Objects.Geometry\n\tparseNurbsGeometry( geoNode ) {\n\n\t\tconst order = parseInt( geoNode.Order );\n\n\t\tif ( isNaN( order ) ) {\n\n\t\t\tconsole.error( 'THREE.FBXLoader: Invalid Order %s given for geometry ID: %s', geoNode.Order, geoNode.id );\n\t\t\treturn new BufferGeometry();\n\n\t\t}\n\n\t\tconst degree = order - 1;\n\n\t\tconst knots = geoNode.KnotVector.a;\n\t\tconst controlPoints = [];\n\t\tconst pointsValues = geoNode.Points.a;\n\n\t\tfor ( let i = 0, l = pointsValues.length; i < l; i += 4 ) {\n\n\t\t\tcontrolPoints.push( new Vector4().fromArray( pointsValues, i ) );\n\n\t\t}\n\n\t\tlet startKnot, endKnot;\n\n\t\tif ( geoNode.Form === 'Closed' ) {\n\n\t\t\tcontrolPoints.push( controlPoints[ 0 ] );\n\n\t\t} else if ( geoNode.Form === 'Periodic' ) {\n\n\t\t\tstartKnot = degree;\n\t\t\tendKnot = knots.length - 1 - startKnot;\n\n\t\t\tfor ( let i = 0; i < degree; ++ i ) {\n\n\t\t\t\tcontrolPoints.push( controlPoints[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst curve = new NURBSCurve( degree, knots, controlPoints, startKnot, endKnot );\n\t\tconst points = curve.getPoints( controlPoints.length * 12 );\n\n\t\treturn new BufferGeometry().setFromPoints( points );\n\n\t}\n\n}\n\n// parse animation data from FBXTree\nclass AnimationParser {\n\n\t// take raw animation clips and turn them into three.js animation clips\n\tparse() {\n\n\t\tconst animationClips = [];\n\n\t\tconst rawClips = this.parseClips();\n\n\t\tif ( rawClips !== undefined ) {\n\n\t\t\tfor ( const key in rawClips ) {\n\n\t\t\t\tconst rawClip = rawClips[ key ];\n\n\t\t\t\tconst clip = this.addClip( rawClip );\n\n\t\t\t\tanimationClips.push( clip );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animationClips;\n\n\t}\n\n\tparseClips() {\n\n\t\t// since the actual transformation data is stored in FBXTree.Objects.AnimationCurve,\n\t\t// if this is undefined we can safely assume there are no animations\n\t\tif ( fbxTree.Objects.AnimationCurve === undefined ) return undefined;\n\n\t\tconst curveNodesMap = this.parseAnimationCurveNodes();\n\n\t\tthis.parseAnimationCurves( curveNodesMap );\n\n\t\tconst layersMap = this.parseAnimationLayers( curveNodesMap );\n\t\tconst rawClips = this.parseAnimStacks( layersMap );\n\n\t\treturn rawClips;\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.AnimationCurveNode\n\t// each AnimationCurveNode holds data for an animation transform for a model (e.g. left arm rotation )\n\t// and is referenced by an AnimationLayer\n\tparseAnimationCurveNodes() {\n\n\t\tconst rawCurveNodes = fbxTree.Objects.AnimationCurveNode;\n\n\t\tconst curveNodesMap = new Map();\n\n\t\tfor ( const nodeID in rawCurveNodes ) {\n\n\t\t\tconst rawCurveNode = rawCurveNodes[ nodeID ];\n\n\t\t\tif ( rawCurveNode.attrName.match( /S|R|T|DeformPercent/ ) !== null ) {\n\n\t\t\t\tconst curveNode = {\n\n\t\t\t\t\tid: rawCurveNode.id,\n\t\t\t\t\tattr: rawCurveNode.attrName,\n\t\t\t\t\tcurves: {},\n\n\t\t\t\t};\n\n\t\t\t\tcurveNodesMap.set( curveNode.id, curveNode );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn curveNodesMap;\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.AnimationCurve and connect them up to\n\t// previously parsed AnimationCurveNodes. Each AnimationCurve holds data for a single animated\n\t// axis ( e.g. times and values of x rotation)\n\tparseAnimationCurves( curveNodesMap ) {\n\n\t\tconst rawCurves = fbxTree.Objects.AnimationCurve;\n\n\t\t// TODO: Many values are identical up to roundoff error, but won't be optimised\n\t\t// e.g. position times: [0, 0.4, 0. 8]\n\t\t// position values: [7.23538335023477e-7, 93.67518615722656, -0.9982695579528809, 7.23538335023477e-7, 93.67518615722656, -0.9982695579528809, 7.235384487103147e-7, 93.67520904541016, -0.9982695579528809]\n\t\t// clearly, this should be optimised to\n\t\t// times: [0], positions [7.23538335023477e-7, 93.67518615722656, -0.9982695579528809]\n\t\t// this shows up in nearly every FBX file, and generally time array is length > 100\n\n\t\tfor ( const nodeID in rawCurves ) {\n\n\t\t\tconst animationCurve = {\n\n\t\t\t\tid: rawCurves[ nodeID ].id,\n\t\t\t\ttimes: rawCurves[ nodeID ].KeyTime.a.map( convertFBXTimeToSeconds ),\n\t\t\t\tvalues: rawCurves[ nodeID ].KeyValueFloat.a,\n\n\t\t\t};\n\n\t\t\tconst relationships = connections.get( animationCurve.id );\n\n\t\t\tif ( relationships !== undefined ) {\n\n\t\t\t\tconst animationCurveID = relationships.parents[ 0 ].ID;\n\t\t\t\tconst animationCurveRelationship = relationships.parents[ 0 ].relationship;\n\n\t\t\t\tif ( animationCurveRelationship.match( /X/ ) ) {\n\n\t\t\t\t\tcurveNodesMap.get( animationCurveID ).curves[ 'x' ] = animationCurve;\n\n\t\t\t\t} else if ( animationCurveRelationship.match( /Y/ ) ) {\n\n\t\t\t\t\tcurveNodesMap.get( animationCurveID ).curves[ 'y' ] = animationCurve;\n\n\t\t\t\t} else if ( animationCurveRelationship.match( /Z/ ) ) {\n\n\t\t\t\t\tcurveNodesMap.get( animationCurveID ).curves[ 'z' ] = animationCurve;\n\n\t\t\t\t} else if ( animationCurveRelationship.match( /DeformPercent/ ) && curveNodesMap.has( animationCurveID ) ) {\n\n\t\t\t\t\tcurveNodesMap.get( animationCurveID ).curves[ 'morph' ] = animationCurve;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.AnimationLayer. Each layers holds references\n\t// to various AnimationCurveNodes and is referenced by an AnimationStack node\n\t// note: theoretically a stack can have multiple layers, however in practice there always seems to be one per stack\n\tparseAnimationLayers( curveNodesMap ) {\n\n\t\tconst rawLayers = fbxTree.Objects.AnimationLayer;\n\n\t\tconst layersMap = new Map();\n\n\t\tfor ( const nodeID in rawLayers ) {\n\n\t\t\tconst layerCurveNodes = [];\n\n\t\t\tconst connection = connections.get( parseInt( nodeID ) );\n\n\t\t\tif ( connection !== undefined ) {\n\n\t\t\t\t// all the animationCurveNodes used in the layer\n\t\t\t\tconst children = connection.children;\n\n\t\t\t\tchildren.forEach( function ( child, i ) {\n\n\t\t\t\t\tif ( curveNodesMap.has( child.ID ) ) {\n\n\t\t\t\t\t\tconst curveNode = curveNodesMap.get( child.ID );\n\n\t\t\t\t\t\t// check that the curves are defined for at least one axis, otherwise ignore the curveNode\n\t\t\t\t\t\tif ( curveNode.curves.x !== undefined || curveNode.curves.y !== undefined || curveNode.curves.z !== undefined ) {\n\n\t\t\t\t\t\t\tif ( layerCurveNodes[ i ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconst modelID = connections.get( child.ID ).parents.filter( function ( parent ) {\n\n\t\t\t\t\t\t\t\t\treturn parent.relationship !== undefined;\n\n\t\t\t\t\t\t\t\t} )[ 0 ].ID;\n\n\t\t\t\t\t\t\t\tif ( modelID !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tconst rawModel = fbxTree.Objects.Model[ modelID.toString() ];\n\n\t\t\t\t\t\t\t\t\tif ( rawModel === undefined ) {\n\n\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: Encountered a unused curve.', child );\n\t\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst node = {\n\n\t\t\t\t\t\t\t\t\t\tmodelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName( rawModel.attrName ) : '',\n\t\t\t\t\t\t\t\t\t\tID: rawModel.id,\n\t\t\t\t\t\t\t\t\t\tinitialPosition: [ 0, 0, 0 ],\n\t\t\t\t\t\t\t\t\t\tinitialRotation: [ 0, 0, 0 ],\n\t\t\t\t\t\t\t\t\t\tinitialScale: [ 1, 1, 1 ],\n\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tsceneGraph.traverse( function ( child ) {\n\n\t\t\t\t\t\t\t\t\t\tif ( child.ID === rawModel.id ) {\n\n\t\t\t\t\t\t\t\t\t\t\tnode.transform = child.matrix;\n\n\t\t\t\t\t\t\t\t\t\t\tif ( child.userData.transformData ) node.eulerOrder = child.userData.transformData.eulerOrder;\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\tif ( ! node.transform ) node.transform = new Matrix4();\n\n\t\t\t\t\t\t\t\t\t// if the animated model is pre rotated, we'll have to apply the pre rotations to every\n\t\t\t\t\t\t\t\t\t// animation value as well\n\t\t\t\t\t\t\t\t\tif ( 'PreRotation' in rawModel ) node.preRotation = rawModel.PreRotation.value;\n\t\t\t\t\t\t\t\t\tif ( 'PostRotation' in rawModel ) node.postRotation = rawModel.PostRotation.value;\n\n\t\t\t\t\t\t\t\t\tlayerCurveNodes[ i ] = node;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( layerCurveNodes[ i ] ) layerCurveNodes[ i ][ curveNode.attr ] = curveNode;\n\n\t\t\t\t\t\t} else if ( curveNode.curves.morph !== undefined ) {\n\n\t\t\t\t\t\t\tif ( layerCurveNodes[ i ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconst deformerID = connections.get( child.ID ).parents.filter( function ( parent ) {\n\n\t\t\t\t\t\t\t\t\treturn parent.relationship !== undefined;\n\n\t\t\t\t\t\t\t\t} )[ 0 ].ID;\n\n\t\t\t\t\t\t\t\tconst morpherID = connections.get( deformerID ).parents[ 0 ].ID;\n\t\t\t\t\t\t\t\tconst geoID = connections.get( morpherID ).parents[ 0 ].ID;\n\n\t\t\t\t\t\t\t\t// assuming geometry is not used in more than one model\n\t\t\t\t\t\t\t\tconst modelID = connections.get( geoID ).parents[ 0 ].ID;\n\n\t\t\t\t\t\t\t\tconst rawModel = fbxTree.Objects.Model[ modelID ];\n\n\t\t\t\t\t\t\t\tconst node = {\n\n\t\t\t\t\t\t\t\t\tmodelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName( rawModel.attrName ) : '',\n\t\t\t\t\t\t\t\t\tmorphName: fbxTree.Objects.Deformer[ deformerID ].attrName,\n\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tlayerCurveNodes[ i ] = node;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlayerCurveNodes[ i ][ curveNode.attr ] = curveNode;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tlayersMap.set( parseInt( nodeID ), layerCurveNodes );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn layersMap;\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.AnimationStack. These are the top level node in the animation\n\t// hierarchy. Each Stack node will be used to create a AnimationClip\n\tparseAnimStacks( layersMap ) {\n\n\t\tconst rawStacks = fbxTree.Objects.AnimationStack;\n\n\t\t// connect the stacks (clips) up to the layers\n\t\tconst rawClips = {};\n\n\t\tfor ( const nodeID in rawStacks ) {\n\n\t\t\tconst children = connections.get( parseInt( nodeID ) ).children;\n\n\t\t\tif ( children.length > 1 ) {\n\n\t\t\t\t// it seems like stacks will always be associated with a single layer. But just in case there are files\n\t\t\t\t// where there are multiple layers per stack, we'll display a warning\n\t\t\t\tconsole.warn( 'THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.' );\n\n\t\t\t}\n\n\t\t\tconst layer = layersMap.get( children[ 0 ].ID );\n\n\t\t\trawClips[ nodeID ] = {\n\n\t\t\t\tname: rawStacks[ nodeID ].attrName,\n\t\t\t\tlayer: layer,\n\n\t\t\t};\n\n\t\t}\n\n\t\treturn rawClips;\n\n\t}\n\n\taddClip( rawClip ) {\n\n\t\tlet tracks = [];\n\n\t\tconst scope = this;\n\t\trawClip.layer.forEach( function ( rawTracks ) {\n\n\t\t\ttracks = tracks.concat( scope.generateTracks( rawTracks ) );\n\n\t\t} );\n\n\t\treturn new AnimationClip( rawClip.name, - 1, tracks );\n\n\t}\n\n\tgenerateTracks( rawTracks ) {\n\n\t\tconst tracks = [];\n\n\t\tlet initialPosition = new Vector3();\n\t\tlet initialScale = new Vector3();\n\n\t\tif ( rawTracks.transform ) rawTracks.transform.decompose( initialPosition, new Quaternion(), initialScale );\n\n\t\tinitialPosition = initialPosition.toArray();\n\t\tinitialScale = initialScale.toArray();\n\n\t\tif ( rawTracks.T !== undefined && Object.keys( rawTracks.T.curves ).length > 0 ) {\n\n\t\t\tconst positionTrack = this.generateVectorTrack( rawTracks.modelName, rawTracks.T.curves, initialPosition, 'position' );\n\t\t\tif ( positionTrack !== undefined ) tracks.push( positionTrack );\n\n\t\t}\n\n\t\tif ( rawTracks.R !== undefined && Object.keys( rawTracks.R.curves ).length > 0 ) {\n\n\t\t\tconst rotationTrack = this.generateRotationTrack( rawTracks.modelName, rawTracks.R.curves, rawTracks.preRotation, rawTracks.postRotation, rawTracks.eulerOrder );\n\t\t\tif ( rotationTrack !== undefined ) tracks.push( rotationTrack );\n\n\t\t}\n\n\t\tif ( rawTracks.S !== undefined && Object.keys( rawTracks.S.curves ).length > 0 ) {\n\n\t\t\tconst scaleTrack = this.generateVectorTrack( rawTracks.modelName, rawTracks.S.curves, initialScale, 'scale' );\n\t\t\tif ( scaleTrack !== undefined ) tracks.push( scaleTrack );\n\n\t\t}\n\n\t\tif ( rawTracks.DeformPercent !== undefined ) {\n\n\t\t\tconst morphTrack = this.generateMorphTrack( rawTracks );\n\t\t\tif ( morphTrack !== undefined ) tracks.push( morphTrack );\n\n\t\t}\n\n\t\treturn tracks;\n\n\t}\n\n\tgenerateVectorTrack( modelName, curves, initialValue, type ) {\n\n\t\tconst times = this.getTimesForAllAxes( curves );\n\t\tconst values = this.getKeyframeTrackValues( times, curves, initialValue );\n\n\t\treturn new VectorKeyframeTrack( modelName + '.' + type, times, values );\n\n\t}\n\n\tgenerateRotationTrack( modelName, curves, preRotation, postRotation, eulerOrder ) {\n\n\t\tlet times;\n\t\tlet values;\n\n\t\tif ( curves.x !== undefined && curves.y !== undefined && curves.z !== undefined ) {\n\n\t\t\tconst result = this.interpolateRotations( curves.x, curves.y, curves.z, eulerOrder );\n\n\t\t\ttimes = result[ 0 ];\n\t\t\tvalues = result[ 1 ];\n\n\t\t}\n\n\t\tif ( preRotation !== undefined ) {\n\n\t\t\tpreRotation = preRotation.map( MathUtils.degToRad );\n\t\t\tpreRotation.push( eulerOrder );\n\n\t\t\tpreRotation = new Euler().fromArray( preRotation );\n\t\t\tpreRotation = new Quaternion().setFromEuler( preRotation );\n\n\t\t}\n\n\t\tif ( postRotation !== undefined ) {\n\n\t\t\tpostRotation = postRotation.map( MathUtils.degToRad );\n\t\t\tpostRotation.push( eulerOrder );\n\n\t\t\tpostRotation = new Euler().fromArray( postRotation );\n\t\t\tpostRotation = new Quaternion().setFromEuler( postRotation ).invert();\n\n\t\t}\n\n\t\tconst quaternion = new Quaternion();\n\t\tconst euler = new Euler();\n\n\t\tconst quaternionValues = [];\n\n\t\tif ( ! values || ! times ) return new QuaternionKeyframeTrack( modelName + '.quaternion', [ 0 ], [ 0 ] );\n\n\t\tfor ( let i = 0; i < values.length; i += 3 ) {\n\n\t\t\teuler.set( values[ i ], values[ i + 1 ], values[ i + 2 ], eulerOrder );\n\t\t\tquaternion.setFromEuler( euler );\n\n\t\t\tif ( preRotation !== undefined ) quaternion.premultiply( preRotation );\n\t\t\tif ( postRotation !== undefined ) quaternion.multiply( postRotation );\n\n\t\t\t// Check unroll\n\t\t\tif ( i > 2 ) {\n\n\t\t\t\tconst prevQuat = new Quaternion().fromArray(\n\t\t\t\t\tquaternionValues,\n\t\t\t\t\t( ( i - 3 ) / 3 ) * 4\n\t\t\t\t);\n\n\t\t\t\tif ( prevQuat.dot( quaternion ) < 0 ) {\n\n\t\t\t\t\tquaternion.set( - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tquaternion.toArray( quaternionValues, ( i / 3 ) * 4 );\n\n\t\t}\n\n\t\treturn new QuaternionKeyframeTrack( modelName + '.quaternion', times, quaternionValues );\n\n\t}\n\n\tgenerateMorphTrack( rawTracks ) {\n\n\t\tconst curves = rawTracks.DeformPercent.curves.morph;\n\t\tconst values = curves.values.map( function ( val ) {\n\n\t\t\treturn val / 100;\n\n\t\t} );\n\n\t\tconst morphNum = sceneGraph.getObjectByName( rawTracks.modelName ).morphTargetDictionary[ rawTracks.morphName ];\n\n\t\treturn new NumberKeyframeTrack( rawTracks.modelName + '.morphTargetInfluences[' + morphNum + ']', curves.times, values );\n\n\t}\n\n\t// For all animated objects, times are defined separately for each axis\n\t// Here we'll combine the times into one sorted array without duplicates\n\tgetTimesForAllAxes( curves ) {\n\n\t\tlet times = [];\n\n\t\t// first join together the times for each axis, if defined\n\t\tif ( curves.x !== undefined ) times = times.concat( curves.x.times );\n\t\tif ( curves.y !== undefined ) times = times.concat( curves.y.times );\n\t\tif ( curves.z !== undefined ) times = times.concat( curves.z.times );\n\n\t\t// then sort them\n\t\ttimes = times.sort( function ( a, b ) {\n\n\t\t\treturn a - b;\n\n\t\t} );\n\n\t\t// and remove duplicates\n\t\tif ( times.length > 1 ) {\n\n\t\t\tlet targetIndex = 1;\n\t\t\tlet lastValue = times[ 0 ];\n\t\t\tfor ( let i = 1; i < times.length; i ++ ) {\n\n\t\t\t\tconst currentValue = times[ i ];\n\t\t\t\tif ( currentValue !== lastValue ) {\n\n\t\t\t\t\ttimes[ targetIndex ] = currentValue;\n\t\t\t\t\tlastValue = currentValue;\n\t\t\t\t\ttargetIndex ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttimes = times.slice( 0, targetIndex );\n\n\t\t}\n\n\t\treturn times;\n\n\t}\n\n\tgetKeyframeTrackValues( times, curves, initialValue ) {\n\n\t\tconst prevValue = initialValue;\n\n\t\tconst values = [];\n\n\t\tlet xIndex = - 1;\n\t\tlet yIndex = - 1;\n\t\tlet zIndex = - 1;\n\n\t\ttimes.forEach( function ( time ) {\n\n\t\t\tif ( curves.x ) xIndex = curves.x.times.indexOf( time );\n\t\t\tif ( curves.y ) yIndex = curves.y.times.indexOf( time );\n\t\t\tif ( curves.z ) zIndex = curves.z.times.indexOf( time );\n\n\t\t\t// if there is an x value defined for this frame, use that\n\t\t\tif ( xIndex !== - 1 ) {\n\n\t\t\t\tconst xValue = curves.x.values[ xIndex ];\n\t\t\t\tvalues.push( xValue );\n\t\t\t\tprevValue[ 0 ] = xValue;\n\n\t\t\t} else {\n\n\t\t\t\t// otherwise use the x value from the previous frame\n\t\t\t\tvalues.push( prevValue[ 0 ] );\n\n\t\t\t}\n\n\t\t\tif ( yIndex !== - 1 ) {\n\n\t\t\t\tconst yValue = curves.y.values[ yIndex ];\n\t\t\t\tvalues.push( yValue );\n\t\t\t\tprevValue[ 1 ] = yValue;\n\n\t\t\t} else {\n\n\t\t\t\tvalues.push( prevValue[ 1 ] );\n\n\t\t\t}\n\n\t\t\tif ( zIndex !== - 1 ) {\n\n\t\t\t\tconst zValue = curves.z.values[ zIndex ];\n\t\t\t\tvalues.push( zValue );\n\t\t\t\tprevValue[ 2 ] = zValue;\n\n\t\t\t} else {\n\n\t\t\t\tvalues.push( prevValue[ 2 ] );\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn values;\n\n\t}\n\n\t// Rotations are defined as Euler angles which can have values of any size\n\t// These will be converted to quaternions which don't support values greater than\n\t// PI, so we'll interpolate large rotations\n\tinterpolateRotations( curvex, curvey, curvez, eulerOrder ) {\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\t// Add first frame\n\t\ttimes.push( curvex.times[ 0 ] );\n\t\tvalues.push( MathUtils.degToRad( curvex.values[ 0 ] ) );\n\t\tvalues.push( MathUtils.degToRad( curvey.values[ 0 ] ) );\n\t\tvalues.push( MathUtils.degToRad( curvez.values[ 0 ] ) );\n\n\t\tfor ( let i = 1; i < curvex.values.length; i ++ ) {\n\n\t\t\tconst initialValue = [\n\t\t\t\tcurvex.values[ i - 1 ],\n\t\t\t\tcurvey.values[ i - 1 ],\n\t\t\t\tcurvez.values[ i - 1 ],\n\t\t\t];\n\n\t\t\tif ( isNaN( initialValue[ 0 ] ) || isNaN( initialValue[ 1 ] ) || isNaN( initialValue[ 2 ] ) ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst initialValueRad = initialValue.map( MathUtils.degToRad );\n\n\t\t\tconst currentValue = [\n\t\t\t\tcurvex.values[ i ],\n\t\t\t\tcurvey.values[ i ],\n\t\t\t\tcurvez.values[ i ],\n\t\t\t];\n\n\t\t\tif ( isNaN( currentValue[ 0 ] ) || isNaN( currentValue[ 1 ] ) || isNaN( currentValue[ 2 ] ) ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValueRad = currentValue.map( MathUtils.degToRad );\n\n\t\t\tconst valuesSpan = [\n\t\t\t\tcurrentValue[ 0 ] - initialValue[ 0 ],\n\t\t\t\tcurrentValue[ 1 ] - initialValue[ 1 ],\n\t\t\t\tcurrentValue[ 2 ] - initialValue[ 2 ],\n\t\t\t];\n\n\t\t\tconst absoluteSpan = [\n\t\t\t\tMath.abs( valuesSpan[ 0 ] ),\n\t\t\t\tMath.abs( valuesSpan[ 1 ] ),\n\t\t\t\tMath.abs( valuesSpan[ 2 ] ),\n\t\t\t];\n\n\t\t\tif ( absoluteSpan[ 0 ] >= 180 || absoluteSpan[ 1 ] >= 180 || absoluteSpan[ 2 ] >= 180 ) {\n\n\t\t\t\tconst maxAbsSpan = Math.max( ...absoluteSpan );\n\n\t\t\t\tconst numSubIntervals = maxAbsSpan / 180;\n\n\t\t\t\tconst E1 = new Euler( ...initialValueRad, eulerOrder );\n\t\t\t\tconst E2 = new Euler( ...currentValueRad, eulerOrder );\n\n\t\t\t\tconst Q1 = new Quaternion().setFromEuler( E1 );\n\t\t\t\tconst Q2 = new Quaternion().setFromEuler( E2 );\n\n\t\t\t\t// Check unroll\n\t\t\t\tif ( Q1.dot( Q2 ) ) {\n\n\t\t\t\t\tQ2.set( - Q2.x, - Q2.y, - Q2.z, - Q2.w );\n\n\t\t\t\t}\n\n\t\t\t\t// Interpolate\n\t\t\t\tconst initialTime = curvex.times[ i - 1 ];\n\t\t\t\tconst timeSpan = curvex.times[ i ] - initialTime;\n\n\t\t\t\tconst Q = new Quaternion();\n\t\t\t\tconst E = new Euler();\n\t\t\t\tfor ( let t = 0; t < 1; t += 1 / numSubIntervals ) {\n\n\t\t\t\t\tQ.copy( Q1.clone().slerp( Q2.clone(), t ) );\n\n\t\t\t\t\ttimes.push( initialTime + t * timeSpan );\n\t\t\t\t\tE.setFromQuaternion( Q, eulerOrder );\n\n\t\t\t\t\tvalues.push( E.x );\n\t\t\t\t\tvalues.push( E.y );\n\t\t\t\t\tvalues.push( E.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttimes.push( curvex.times[ i ] );\n\t\t\t\tvalues.push( MathUtils.degToRad( curvex.values[ i ] ) );\n\t\t\t\tvalues.push( MathUtils.degToRad( curvey.values[ i ] ) );\n\t\t\t\tvalues.push( MathUtils.degToRad( curvez.values[ i ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn [ times, values ];\n\n\t}\n\n}\n\n// parse an FBX file in ASCII format\nclass TextParser {\n\n\tgetPrevNode() {\n\n\t\treturn this.nodeStack[ this.currentIndent - 2 ];\n\n\t}\n\n\tgetCurrentNode() {\n\n\t\treturn this.nodeStack[ this.currentIndent - 1 ];\n\n\t}\n\n\tgetCurrentProp() {\n\n\t\treturn this.currentProp;\n\n\t}\n\n\tpushStack( node ) {\n\n\t\tthis.nodeStack.push( node );\n\t\tthis.currentIndent += 1;\n\n\t}\n\n\tpopStack() {\n\n\t\tthis.nodeStack.pop();\n\t\tthis.currentIndent -= 1;\n\n\t}\n\n\tsetCurrentProp( val, name ) {\n\n\t\tthis.currentProp = val;\n\t\tthis.currentPropName = name;\n\n\t}\n\n\tparse( text ) {\n\n\t\tthis.currentIndent = 0;\n\n\t\tthis.allNodes = new FBXTree();\n\t\tthis.nodeStack = [];\n\t\tthis.currentProp = [];\n\t\tthis.currentPropName = '';\n\n\t\tconst scope = this;\n\n\t\tconst split = text.split( /[\\r\\n]+/ );\n\n\t\tsplit.forEach( function ( line, i ) {\n\n\t\t\tconst matchComment = line.match( /^[\\s\\t]*;/ );\n\t\t\tconst matchEmpty = line.match( /^[\\s\\t]*$/ );\n\n\t\t\tif ( matchComment || matchEmpty ) return;\n\n\t\t\tconst matchBeginning = line.match( '^\\\\t{' + scope.currentIndent + '}(\\\\w+):(.*){', '' );\n\t\t\tconst matchProperty = line.match( '^\\\\t{' + ( scope.currentIndent ) + '}(\\\\w+):[\\\\s\\\\t\\\\r\\\\n](.*)' );\n\t\t\tconst matchEnd = line.match( '^\\\\t{' + ( scope.currentIndent - 1 ) + '}}' );\n\n\t\t\tif ( matchBeginning ) {\n\n\t\t\t\tscope.parseNodeBegin( line, matchBeginning );\n\n\t\t\t} else if ( matchProperty ) {\n\n\t\t\t\tscope.parseNodeProperty( line, matchProperty, split[ ++ i ] );\n\n\t\t\t} else if ( matchEnd ) {\n\n\t\t\t\tscope.popStack();\n\n\t\t\t} else if ( line.match( /^[^\\s\\t}]/ ) ) {\n\n\t\t\t\t// large arrays are split over multiple lines terminated with a ',' character\n\t\t\t\t// if this is encountered the line needs to be joined to the previous line\n\t\t\t\tscope.parseNodePropertyContinued( line );\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn this.allNodes;\n\n\t}\n\n\tparseNodeBegin( line, property ) {\n\n\t\tconst nodeName = property[ 1 ].trim().replace( /^\"/, '' ).replace( /\"$/, '' );\n\n\t\tconst nodeAttrs = property[ 2 ].split( ',' ).map( function ( attr ) {\n\n\t\t\treturn attr.trim().replace( /^\"/, '' ).replace( /\"$/, '' );\n\n\t\t} );\n\n\t\tconst node = { name: nodeName };\n\t\tconst attrs = this.parseNodeAttr( nodeAttrs );\n\n\t\tconst currentNode = this.getCurrentNode();\n\n\t\t// a top node\n\t\tif ( this.currentIndent === 0 ) {\n\n\t\t\tthis.allNodes.add( nodeName, node );\n\n\t\t} else { // a subnode\n\n\t\t\t// if the subnode already exists, append it\n\t\t\tif ( nodeName in currentNode ) {\n\n\t\t\t\t// special case Pose needs PoseNodes as an array\n\t\t\t\tif ( nodeName === 'PoseNode' ) {\n\n\t\t\t\t\tcurrentNode.PoseNode.push( node );\n\n\t\t\t\t} else if ( currentNode[ nodeName ].id !== undefined ) {\n\n\t\t\t\t\tcurrentNode[ nodeName ] = {};\n\t\t\t\t\tcurrentNode[ nodeName ][ currentNode[ nodeName ].id ] = currentNode[ nodeName ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( attrs.id !== '' ) currentNode[ nodeName ][ attrs.id ] = node;\n\n\t\t\t} else if ( typeof attrs.id === 'number' ) {\n\n\t\t\t\tcurrentNode[ nodeName ] = {};\n\t\t\t\tcurrentNode[ nodeName ][ attrs.id ] = node;\n\n\t\t\t} else if ( nodeName !== 'Properties70' ) {\n\n\t\t\t\tif ( nodeName === 'PoseNode' )\tcurrentNode[ nodeName ] = [ node ];\n\t\t\t\telse currentNode[ nodeName ] = node;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( typeof attrs.id === 'number' ) node.id = attrs.id;\n\t\tif ( attrs.name !== '' ) node.attrName = attrs.name;\n\t\tif ( attrs.type !== '' ) node.attrType = attrs.type;\n\n\t\tthis.pushStack( node );\n\n\t}\n\n\tparseNodeAttr( attrs ) {\n\n\t\tlet id = attrs[ 0 ];\n\n\t\tif ( attrs[ 0 ] !== '' ) {\n\n\t\t\tid = parseInt( attrs[ 0 ] );\n\n\t\t\tif ( isNaN( id ) ) {\n\n\t\t\t\tid = attrs[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet name = '', type = '';\n\n\t\tif ( attrs.length > 1 ) {\n\n\t\t\tname = attrs[ 1 ].replace( /^(\\w+)::/, '' );\n\t\t\ttype = attrs[ 2 ];\n\n\t\t}\n\n\t\treturn { id: id, name: name, type: type };\n\n\t}\n\n\tparseNodeProperty( line, property, contentLine ) {\n\n\t\tlet propName = property[ 1 ].replace( /^\"/, '' ).replace( /\"$/, '' ).trim();\n\t\tlet propValue = property[ 2 ].replace( /^\"/, '' ).replace( /\"$/, '' ).trim();\n\n\t\t// for special case: base64 image data follows \"Content: ,\" line\n\t\t//\tContent: ,\n\t\t//\t \"/9j/4RDaRXhpZgAATU0A...\"\n\t\tif ( propName === 'Content' && propValue === ',' ) {\n\n\t\t\tpropValue = contentLine.replace( /\"/g, '' ).replace( /,$/, '' ).trim();\n\n\t\t}\n\n\t\tconst currentNode = this.getCurrentNode();\n\t\tconst parentName = currentNode.name;\n\n\t\tif ( parentName === 'Properties70' ) {\n\n\t\t\tthis.parseNodeSpecialProperty( line, propName, propValue );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Connections\n\t\tif ( propName === 'C' ) {\n\n\t\t\tconst connProps = propValue.split( ',' ).slice( 1 );\n\t\t\tconst from = parseInt( connProps[ 0 ] );\n\t\t\tconst to = parseInt( connProps[ 1 ] );\n\n\t\t\tlet rest = propValue.split( ',' ).slice( 3 );\n\n\t\t\trest = rest.map( function ( elem ) {\n\n\t\t\t\treturn elem.trim().replace( /^\"/, '' );\n\n\t\t\t} );\n\n\t\t\tpropName = 'connections';\n\t\t\tpropValue = [ from, to ];\n\t\t\tappend( propValue, rest );\n\n\t\t\tif ( currentNode[ propName ] === undefined ) {\n\n\t\t\t\tcurrentNode[ propName ] = [];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Node\n\t\tif ( propName === 'Node' ) currentNode.id = propValue;\n\n\t\t// connections\n\t\tif ( propName in currentNode && Array.isArray( currentNode[ propName ] ) ) {\n\n\t\t\tcurrentNode[ propName ].push( propValue );\n\n\t\t} else {\n\n\t\t\tif ( propName !== 'a' ) currentNode[ propName ] = propValue;\n\t\t\telse currentNode.a = propValue;\n\n\t\t}\n\n\t\tthis.setCurrentProp( currentNode, propName );\n\n\t\t// convert string to array, unless it ends in ',' in which case more will be added to it\n\t\tif ( propName === 'a' && propValue.slice( - 1 ) !== ',' ) {\n\n\t\t\tcurrentNode.a = parseNumberArray( propValue );\n\n\t\t}\n\n\t}\n\n\tparseNodePropertyContinued( line ) {\n\n\t\tconst currentNode = this.getCurrentNode();\n\n\t\tcurrentNode.a += line;\n\n\t\t// if the line doesn't end in ',' we have reached the end of the property value\n\t\t// so convert the string to an array\n\t\tif ( line.slice( - 1 ) !== ',' ) {\n\n\t\t\tcurrentNode.a = parseNumberArray( currentNode.a );\n\n\t\t}\n\n\t}\n\n\t// parse \"Property70\"\n\tparseNodeSpecialProperty( line, propName, propValue ) {\n\n\t\t// split this\n\t\t// P: \"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\",1,1,1\n\t\t// into array like below\n\t\t// [\"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\", \"1,1,1\" ]\n\t\tconst props = propValue.split( '\",' ).map( function ( prop ) {\n\n\t\t\treturn prop.trim().replace( /^\\\"/, '' ).replace( /\\s/, '_' );\n\n\t\t} );\n\n\t\tconst innerPropName = props[ 0 ];\n\t\tconst innerPropType1 = props[ 1 ];\n\t\tconst innerPropType2 = props[ 2 ];\n\t\tconst innerPropFlag = props[ 3 ];\n\t\tlet innerPropValue = props[ 4 ];\n\n\t\t// cast values where needed, otherwise leave as strings\n\t\tswitch ( innerPropType1 ) {\n\n\t\t\tcase 'int':\n\t\t\tcase 'enum':\n\t\t\tcase 'bool':\n\t\t\tcase 'ULongLong':\n\t\t\tcase 'double':\n\t\t\tcase 'Number':\n\t\t\tcase 'FieldOfView':\n\t\t\t\tinnerPropValue = parseFloat( innerPropValue );\n\t\t\t\tbreak;\n\n\t\t\tcase 'Color':\n\t\t\tcase 'ColorRGB':\n\t\t\tcase 'Vector3D':\n\t\t\tcase 'Lcl_Translation':\n\t\t\tcase 'Lcl_Rotation':\n\t\t\tcase 'Lcl_Scaling':\n\t\t\t\tinnerPropValue = parseNumberArray( innerPropValue );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\t// CAUTION: these props must append to parent's parent\n\t\tthis.getPrevNode()[ innerPropName ] = {\n\n\t\t\t'type': innerPropType1,\n\t\t\t'type2': innerPropType2,\n\t\t\t'flag': innerPropFlag,\n\t\t\t'value': innerPropValue\n\n\t\t};\n\n\t\tthis.setCurrentProp( this.getPrevNode(), innerPropName );\n\n\t}\n\n}\n\n// Parse an FBX file in Binary format\nclass BinaryParser {\n\n\tparse( buffer ) {\n\n\t\tconst reader = new BinaryReader( buffer );\n\t\treader.skip( 23 ); // skip magic 23 bytes\n\n\t\tconst version = reader.getUint32();\n\n\t\tif ( version < 6400 ) {\n\n\t\t\tthrow new Error( 'THREE.FBXLoader: FBX version not supported, FileVersion: ' + version );\n\n\t\t}\n\n\t\tconst allNodes = new FBXTree();\n\n\t\twhile ( ! this.endOfContent( reader ) ) {\n\n\t\t\tconst node = this.parseNode( reader, version );\n\t\t\tif ( node !== null ) allNodes.add( node.name, node );\n\n\t\t}\n\n\t\treturn allNodes;\n\n\t}\n\n\t// Check if reader has reached the end of content.\n\tendOfContent( reader ) {\n\n\t\t// footer size: 160bytes + 16-byte alignment padding\n\t\t// - 16bytes: magic\n\t\t// - padding til 16-byte alignment (at least 1byte?)\n\t\t//\t(seems like some exporters embed fixed 15 or 16bytes?)\n\t\t// - 4bytes: magic\n\t\t// - 4bytes: version\n\t\t// - 120bytes: zero\n\t\t// - 16bytes: magic\n\t\tif ( reader.size() % 16 === 0 ) {\n\n\t\t\treturn ( ( reader.getOffset() + 160 + 16 ) & ~ 0xf ) >= reader.size();\n\n\t\t} else {\n\n\t\t\treturn reader.getOffset() + 160 + 16 >= reader.size();\n\n\t\t}\n\n\t}\n\n\t// recursively parse nodes until the end of the file is reached\n\tparseNode( reader, version ) {\n\n\t\tconst node = {};\n\n\t\t// The first three data sizes depends on version.\n\t\tconst endOffset = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32();\n\t\tconst numProperties = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32();\n\n\t\t( version >= 7500 ) ? reader.getUint64() : reader.getUint32(); // the returned propertyListLen is not used\n\n\t\tconst nameLen = reader.getUint8();\n\t\tconst name = reader.getString( nameLen );\n\n\t\t// Regards this node as NULL-record if endOffset is zero\n\t\tif ( endOffset === 0 ) return null;\n\n\t\tconst propertyList = [];\n\n\t\tfor ( let i = 0; i < numProperties; i ++ ) {\n\n\t\t\tpropertyList.push( this.parseProperty( reader ) );\n\n\t\t}\n\n\t\t// Regards the first three elements in propertyList as id, attrName, and attrType\n\t\tconst id = propertyList.length > 0 ? propertyList[ 0 ] : '';\n\t\tconst attrName = propertyList.length > 1 ? propertyList[ 1 ] : '';\n\t\tconst attrType = propertyList.length > 2 ? propertyList[ 2 ] : '';\n\n\t\t// check if this node represents just a single property\n\t\t// like (name, 0) set or (name2, [0, 1, 2]) set of {name: 0, name2: [0, 1, 2]}\n\t\tnode.singleProperty = ( numProperties === 1 && reader.getOffset() === endOffset ) ? true : false;\n\n\t\twhile ( endOffset > reader.getOffset() ) {\n\n\t\t\tconst subNode = this.parseNode( reader, version );\n\n\t\t\tif ( subNode !== null ) this.parseSubNode( name, node, subNode );\n\n\t\t}\n\n\t\tnode.propertyList = propertyList; // raw property list used by parent\n\n\t\tif ( typeof id === 'number' ) node.id = id;\n\t\tif ( attrName !== '' ) node.attrName = attrName;\n\t\tif ( attrType !== '' ) node.attrType = attrType;\n\t\tif ( name !== '' ) node.name = name;\n\n\t\treturn node;\n\n\t}\n\n\tparseSubNode( name, node, subNode ) {\n\n\t\t// special case: child node is single property\n\t\tif ( subNode.singleProperty === true ) {\n\n\t\t\tconst value = subNode.propertyList[ 0 ];\n\n\t\t\tif ( Array.isArray( value ) ) {\n\n\t\t\t\tnode[ subNode.name ] = subNode;\n\n\t\t\t\tsubNode.a = value;\n\n\t\t\t} else {\n\n\t\t\t\tnode[ subNode.name ] = value;\n\n\t\t\t}\n\n\t\t} else if ( name === 'Connections' && subNode.name === 'C' ) {\n\n\t\t\tconst array = [];\n\n\t\t\tsubNode.propertyList.forEach( function ( property, i ) {\n\n\t\t\t\t// first Connection is FBX type (OO, OP, etc.). We'll discard these\n\t\t\t\tif ( i !== 0 ) array.push( property );\n\n\t\t\t} );\n\n\t\t\tif ( node.connections === undefined ) {\n\n\t\t\t\tnode.connections = [];\n\n\t\t\t}\n\n\t\t\tnode.connections.push( array );\n\n\t\t} else if ( subNode.name === 'Properties70' ) {\n\n\t\t\tconst keys = Object.keys( subNode );\n\n\t\t\tkeys.forEach( function ( key ) {\n\n\t\t\t\tnode[ key ] = subNode[ key ];\n\n\t\t\t} );\n\n\t\t} else if ( name === 'Properties70' && subNode.name === 'P' ) {\n\n\t\t\tlet innerPropName = subNode.propertyList[ 0 ];\n\t\t\tlet innerPropType1 = subNode.propertyList[ 1 ];\n\t\t\tconst innerPropType2 = subNode.propertyList[ 2 ];\n\t\t\tconst innerPropFlag = subNode.propertyList[ 3 ];\n\t\t\tlet innerPropValue;\n\n\t\t\tif ( innerPropName.indexOf( 'Lcl ' ) === 0 ) innerPropName = innerPropName.replace( 'Lcl ', 'Lcl_' );\n\t\t\tif ( innerPropType1.indexOf( 'Lcl ' ) === 0 ) innerPropType1 = innerPropType1.replace( 'Lcl ', 'Lcl_' );\n\n\t\t\tif ( innerPropType1 === 'Color' || innerPropType1 === 'ColorRGB' || innerPropType1 === 'Vector' || innerPropType1 === 'Vector3D' || innerPropType1.indexOf( 'Lcl_' ) === 0 ) {\n\n\t\t\t\tinnerPropValue = [\n\t\t\t\t\tsubNode.propertyList[ 4 ],\n\t\t\t\t\tsubNode.propertyList[ 5 ],\n\t\t\t\t\tsubNode.propertyList[ 6 ]\n\t\t\t\t];\n\n\t\t\t} else {\n\n\t\t\t\tinnerPropValue = subNode.propertyList[ 4 ];\n\n\t\t\t}\n\n\t\t\t// this will be copied to parent, see above\n\t\t\tnode[ innerPropName ] = {\n\n\t\t\t\t'type': innerPropType1,\n\t\t\t\t'type2': innerPropType2,\n\t\t\t\t'flag': innerPropFlag,\n\t\t\t\t'value': innerPropValue\n\n\t\t\t};\n\n\t\t} else if ( node[ subNode.name ] === undefined ) {\n\n\t\t\tif ( typeof subNode.id === 'number' ) {\n\n\t\t\t\tnode[ subNode.name ] = {};\n\t\t\t\tnode[ subNode.name ][ subNode.id ] = subNode;\n\n\t\t\t} else {\n\n\t\t\t\tnode[ subNode.name ] = subNode;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( subNode.name === 'PoseNode' ) {\n\n\t\t\t\tif ( ! Array.isArray( node[ subNode.name ] ) ) {\n\n\t\t\t\t\tnode[ subNode.name ] = [ node[ subNode.name ] ];\n\n\t\t\t\t}\n\n\t\t\t\tnode[ subNode.name ].push( subNode );\n\n\t\t\t} else if ( node[ subNode.name ][ subNode.id ] === undefined ) {\n\n\t\t\t\tnode[ subNode.name ][ subNode.id ] = subNode;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tparseProperty( reader ) {\n\n\t\tconst type = reader.getString( 1 );\n\t\tlet length;\n\n\t\tswitch ( type ) {\n\n\t\t\tcase 'C':\n\t\t\t\treturn reader.getBoolean();\n\n\t\t\tcase 'D':\n\t\t\t\treturn reader.getFloat64();\n\n\t\t\tcase 'F':\n\t\t\t\treturn reader.getFloat32();\n\n\t\t\tcase 'I':\n\t\t\t\treturn reader.getInt32();\n\n\t\t\tcase 'L':\n\t\t\t\treturn reader.getInt64();\n\n\t\t\tcase 'R':\n\t\t\t\tlength = reader.getUint32();\n\t\t\t\treturn reader.getArrayBuffer( length );\n\n\t\t\tcase 'S':\n\t\t\t\tlength = reader.getUint32();\n\t\t\t\treturn reader.getString( length );\n\n\t\t\tcase 'Y':\n\t\t\t\treturn reader.getInt16();\n\n\t\t\tcase 'b':\n\t\t\tcase 'c':\n\t\t\tcase 'd':\n\t\t\tcase 'f':\n\t\t\tcase 'i':\n\t\t\tcase 'l':\n\n\t\t\t\tconst arrayLength = reader.getUint32();\n\t\t\t\tconst encoding = reader.getUint32(); // 0: non-compressed, 1: compressed\n\t\t\t\tconst compressedLength = reader.getUint32();\n\n\t\t\t\tif ( encoding === 0 ) {\n\n\t\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\tcase 'c':\n\t\t\t\t\t\t\treturn reader.getBooleanArray( arrayLength );\n\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\treturn reader.getFloat64Array( arrayLength );\n\n\t\t\t\t\t\tcase 'f':\n\t\t\t\t\t\t\treturn reader.getFloat32Array( arrayLength );\n\n\t\t\t\t\t\tcase 'i':\n\t\t\t\t\t\t\treturn reader.getInt32Array( arrayLength );\n\n\t\t\t\t\t\tcase 'l':\n\t\t\t\t\t\t\treturn reader.getInt64Array( arrayLength );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst data = fflate.unzlibSync( new Uint8Array( reader.getArrayBuffer( compressedLength ) ) );\n\t\t\t\tconst reader2 = new BinaryReader( data.buffer );\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 'b':\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\treturn reader2.getBooleanArray( arrayLength );\n\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\treturn reader2.getFloat64Array( arrayLength );\n\n\t\t\t\t\tcase 'f':\n\t\t\t\t\t\treturn reader2.getFloat32Array( arrayLength );\n\n\t\t\t\t\tcase 'i':\n\t\t\t\t\t\treturn reader2.getInt32Array( arrayLength );\n\n\t\t\t\t\tcase 'l':\n\t\t\t\t\t\treturn reader2.getInt64Array( arrayLength );\n\n\t\t\t\t}\n\n\t\t\t\tbreak; // cannot happen but is required by the DeepScan\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.FBXLoader: Unknown property type ' + type );\n\n\t\t}\n\n\t}\n\n}\n\nclass BinaryReader {\n\n\tconstructor( buffer, littleEndian ) {\n\n\t\tthis.dv = new DataView( buffer );\n\t\tthis.offset = 0;\n\t\tthis.littleEndian = ( littleEndian !== undefined ) ? littleEndian : true;\n\t\tthis._textDecoder = new TextDecoder();\n\n\t}\n\n\tgetOffset() {\n\n\t\treturn this.offset;\n\n\t}\n\n\tsize() {\n\n\t\treturn this.dv.buffer.byteLength;\n\n\t}\n\n\tskip( length ) {\n\n\t\tthis.offset += length;\n\n\t}\n\n\t// seems like true/false representation depends on exporter.\n\t// true: 1 or 'Y'(=0x59), false: 0 or 'T'(=0x54)\n\t// then sees LSB.\n\tgetBoolean() {\n\n\t\treturn ( this.getUint8() & 1 ) === 1;\n\n\t}\n\n\tgetBooleanArray( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getBoolean() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\tgetUint8() {\n\n\t\tconst value = this.dv.getUint8( this.offset );\n\t\tthis.offset += 1;\n\t\treturn value;\n\n\t}\n\n\tgetInt16() {\n\n\t\tconst value = this.dv.getInt16( this.offset, this.littleEndian );\n\t\tthis.offset += 2;\n\t\treturn value;\n\n\t}\n\n\tgetInt32() {\n\n\t\tconst value = this.dv.getInt32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t}\n\n\tgetInt32Array( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getInt32() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\tgetUint32() {\n\n\t\tconst value = this.dv.getUint32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t}\n\n\t// JavaScript doesn't support 64-bit integer so calculate this here\n\t// 1 << 32 will return 1 so using multiply operation instead here.\n\t// There's a possibility that this method returns wrong value if the value\n\t// is out of the range between Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER.\n\t// TODO: safely handle 64-bit integer\n\tgetInt64() {\n\n\t\tlet low, high;\n\n\t\tif ( this.littleEndian ) {\n\n\t\t\tlow = this.getUint32();\n\t\t\thigh = this.getUint32();\n\n\t\t} else {\n\n\t\t\thigh = this.getUint32();\n\t\t\tlow = this.getUint32();\n\n\t\t}\n\n\t\t// calculate negative value\n\t\tif ( high & 0x80000000 ) {\n\n\t\t\thigh = ~ high & 0xFFFFFFFF;\n\t\t\tlow = ~ low & 0xFFFFFFFF;\n\n\t\t\tif ( low === 0xFFFFFFFF ) high = ( high + 1 ) & 0xFFFFFFFF;\n\n\t\t\tlow = ( low + 1 ) & 0xFFFFFFFF;\n\n\t\t\treturn - ( high * 0x100000000 + low );\n\n\t\t}\n\n\t\treturn high * 0x100000000 + low;\n\n\t}\n\n\tgetInt64Array( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getInt64() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\t// Note: see getInt64() comment\n\tgetUint64() {\n\n\t\tlet low, high;\n\n\t\tif ( this.littleEndian ) {\n\n\t\t\tlow = this.getUint32();\n\t\t\thigh = this.getUint32();\n\n\t\t} else {\n\n\t\t\thigh = this.getUint32();\n\t\t\tlow = this.getUint32();\n\n\t\t}\n\n\t\treturn high * 0x100000000 + low;\n\n\t}\n\n\tgetFloat32() {\n\n\t\tconst value = this.dv.getFloat32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t}\n\n\tgetFloat32Array( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getFloat32() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\tgetFloat64() {\n\n\t\tconst value = this.dv.getFloat64( this.offset, this.littleEndian );\n\t\tthis.offset += 8;\n\t\treturn value;\n\n\t}\n\n\tgetFloat64Array( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getFloat64() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\tgetArrayBuffer( size ) {\n\n\t\tconst value = this.dv.buffer.slice( this.offset, this.offset + size );\n\t\tthis.offset += size;\n\t\treturn value;\n\n\t}\n\n\tgetString( size ) {\n\n\t\tconst start = this.offset;\n\t\tlet a = new Uint8Array( this.dv.buffer, start, size );\n\n\t\tthis.skip( size );\n\n\t\tconst nullByte = a.indexOf( 0 );\n\t\tif ( nullByte >= 0 ) a = new Uint8Array( this.dv.buffer, start, nullByte );\n\n\t\treturn this._textDecoder.decode( a );\n\n\t}\n\n}\n\n// FBXTree holds a representation of the FBX data, returned by the TextParser ( FBX ASCII format)\n// and BinaryParser( FBX Binary format)\nclass FBXTree {\n\n\tadd( key, val ) {\n\n\t\tthis[ key ] = val;\n\n\t}\n\n}\n\n// ************** UTILITY FUNCTIONS **************\n\nfunction isFbxFormatBinary( buffer ) {\n\n\tconst CORRECT = 'Kaydara\\u0020FBX\\u0020Binary\\u0020\\u0020\\0';\n\n\treturn buffer.byteLength >= CORRECT.length && CORRECT === convertArrayBufferToString( buffer, 0, CORRECT.length );\n\n}\n\nfunction isFbxFormatASCII( text ) {\n\n\tconst CORRECT = [ 'K', 'a', 'y', 'd', 'a', 'r', 'a', '\\\\', 'F', 'B', 'X', '\\\\', 'B', 'i', 'n', 'a', 'r', 'y', '\\\\', '\\\\' ];\n\n\tlet cursor = 0;\n\n\tfunction read( offset ) {\n\n\t\tconst result = text[ offset - 1 ];\n\t\ttext = text.slice( cursor + offset );\n\t\tcursor ++;\n\t\treturn result;\n\n\t}\n\n\tfor ( let i = 0; i < CORRECT.length; ++ i ) {\n\n\t\tconst num = read( 1 );\n\t\tif ( num === CORRECT[ i ] ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nfunction getFbxVersion( text ) {\n\n\tconst versionRegExp = /FBXVersion: (\\d+)/;\n\tconst match = text.match( versionRegExp );\n\n\tif ( match ) {\n\n\t\tconst version = parseInt( match[ 1 ] );\n\t\treturn version;\n\n\t}\n\n\tthrow new Error( 'THREE.FBXLoader: Cannot find the version number for the file given.' );\n\n}\n\n// Converts FBX ticks into real time seconds.\nfunction convertFBXTimeToSeconds( time ) {\n\n\treturn time / 46186158000;\n\n}\n\nconst dataArray = [];\n\n// extracts the data from the correct position in the FBX array based on indexing type\nfunction getData( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) {\n\n\tlet index;\n\n\tswitch ( infoObject.mappingType ) {\n\n\t\tcase 'ByPolygonVertex' :\n\t\t\tindex = polygonVertexIndex;\n\t\t\tbreak;\n\t\tcase 'ByPolygon' :\n\t\t\tindex = polygonIndex;\n\t\t\tbreak;\n\t\tcase 'ByVertice' :\n\t\t\tindex = vertexIndex;\n\t\t\tbreak;\n\t\tcase 'AllSame' :\n\t\t\tindex = infoObject.indices[ 0 ];\n\t\t\tbreak;\n\t\tdefault :\n\t\t\tconsole.warn( 'THREE.FBXLoader: unknown attribute mapping type ' + infoObject.mappingType );\n\n\t}\n\n\tif ( infoObject.referenceType === 'IndexToDirect' ) index = infoObject.indices[ index ];\n\n\tconst from = index * infoObject.dataSize;\n\tconst to = from + infoObject.dataSize;\n\n\treturn slice( dataArray, infoObject.buffer, from, to );\n\n}\n\nconst tempEuler = new Euler();\nconst tempVec = new Vector3();\n\n// generate transformation from FBX transform data\n// ref: https://help.autodesk.com/view/FBX/2017/ENU/?guid=__files_GUID_10CDD63C_79C1_4F2D_BB28_AD2BE65A02ED_htm\n// ref: http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html?url=cpp_ref/_transformations_2main_8cxx-example.html,topicNumber=cpp_ref__transformations_2main_8cxx_example_htmlfc10a1e1-b18d-4e72-9dc0-70d0f1959f5e\nfunction generateTransform( transformData ) {\n\n\tconst lTranslationM = new Matrix4();\n\tconst lPreRotationM = new Matrix4();\n\tconst lRotationM = new Matrix4();\n\tconst lPostRotationM = new Matrix4();\n\n\tconst lScalingM = new Matrix4();\n\tconst lScalingPivotM = new Matrix4();\n\tconst lScalingOffsetM = new Matrix4();\n\tconst lRotationOffsetM = new Matrix4();\n\tconst lRotationPivotM = new Matrix4();\n\n\tconst lParentGX = new Matrix4();\n\tconst lParentLX = new Matrix4();\n\tconst lGlobalT = new Matrix4();\n\n\tconst inheritType = ( transformData.inheritType ) ? transformData.inheritType : 0;\n\n\tif ( transformData.translation ) lTranslationM.setPosition( tempVec.fromArray( transformData.translation ) );\n\n\tif ( transformData.preRotation ) {\n\n\t\tconst array = transformData.preRotation.map( MathUtils.degToRad );\n\t\tarray.push( transformData.eulerOrder || Euler.DEFAULT_ORDER );\n\t\tlPreRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );\n\n\t}\n\n\tif ( transformData.rotation ) {\n\n\t\tconst array = transformData.rotation.map( MathUtils.degToRad );\n\t\tarray.push( transformData.eulerOrder || Euler.DEFAULT_ORDER );\n\t\tlRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );\n\n\t}\n\n\tif ( transformData.postRotation ) {\n\n\t\tconst array = transformData.postRotation.map( MathUtils.degToRad );\n\t\tarray.push( transformData.eulerOrder || Euler.DEFAULT_ORDER );\n\t\tlPostRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );\n\t\tlPostRotationM.invert();\n\n\t}\n\n\tif ( transformData.scale ) lScalingM.scale( tempVec.fromArray( transformData.scale ) );\n\n\t// Pivots and offsets\n\tif ( transformData.scalingOffset ) lScalingOffsetM.setPosition( tempVec.fromArray( transformData.scalingOffset ) );\n\tif ( transformData.scalingPivot ) lScalingPivotM.setPosition( tempVec.fromArray( transformData.scalingPivot ) );\n\tif ( transformData.rotationOffset ) lRotationOffsetM.setPosition( tempVec.fromArray( transformData.rotationOffset ) );\n\tif ( transformData.rotationPivot ) lRotationPivotM.setPosition( tempVec.fromArray( transformData.rotationPivot ) );\n\n\t// parent transform\n\tif ( transformData.parentMatrixWorld ) {\n\n\t\tlParentLX.copy( transformData.parentMatrix );\n\t\tlParentGX.copy( transformData.parentMatrixWorld );\n\n\t}\n\n\tconst lLRM = lPreRotationM.clone().multiply( lRotationM ).multiply( lPostRotationM );\n\t// Global Rotation\n\tconst lParentGRM = new Matrix4();\n\tlParentGRM.extractRotation( lParentGX );\n\n\t// Global Shear*Scaling\n\tconst lParentTM = new Matrix4();\n\tlParentTM.copyPosition( lParentGX );\n\n\tconst lParentGRSM = lParentTM.clone().invert().multiply( lParentGX );\n\tconst lParentGSM = lParentGRM.clone().invert().multiply( lParentGRSM );\n\tconst lLSM = lScalingM;\n\n\tconst lGlobalRS = new Matrix4();\n\n\tif ( inheritType === 0 ) {\n\n\t\tlGlobalRS.copy( lParentGRM ).multiply( lLRM ).multiply( lParentGSM ).multiply( lLSM );\n\n\t} else if ( inheritType === 1 ) {\n\n\t\tlGlobalRS.copy( lParentGRM ).multiply( lParentGSM ).multiply( lLRM ).multiply( lLSM );\n\n\t} else {\n\n\t\tconst lParentLSM = new Matrix4().scale( new Vector3().setFromMatrixScale( lParentLX ) );\n\t\tconst lParentLSM_inv = lParentLSM.clone().invert();\n\t\tconst lParentGSM_noLocal = lParentGSM.clone().multiply( lParentLSM_inv );\n\n\t\tlGlobalRS.copy( lParentGRM ).multiply( lLRM ).multiply( lParentGSM_noLocal ).multiply( lLSM );\n\n\t}\n\n\tconst lRotationPivotM_inv = lRotationPivotM.clone().invert();\n\tconst lScalingPivotM_inv = lScalingPivotM.clone().invert();\n\t// Calculate the local transform matrix\n\tlet lTransform = lTranslationM.clone().multiply( lRotationOffsetM ).multiply( lRotationPivotM ).multiply( lPreRotationM ).multiply( lRotationM ).multiply( lPostRotationM ).multiply( lRotationPivotM_inv ).multiply( lScalingOffsetM ).multiply( lScalingPivotM ).multiply( lScalingM ).multiply( lScalingPivotM_inv );\n\n\tconst lLocalTWithAllPivotAndOffsetInfo = new Matrix4().copyPosition( lTransform );\n\n\tconst lGlobalTranslation = lParentGX.clone().multiply( lLocalTWithAllPivotAndOffsetInfo );\n\tlGlobalT.copyPosition( lGlobalTranslation );\n\n\tlTransform = lGlobalT.clone().multiply( lGlobalRS );\n\n\t// from global to local\n\tlTransform.premultiply( lParentGX.invert() );\n\n\treturn lTransform;\n\n}\n\n// Returns the three.js intrinsic Euler order corresponding to FBX extrinsic Euler order\n// ref: http://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_euler_html\nfunction getEulerOrder( order ) {\n\n\torder = order || 0;\n\n\tconst enums = [\n\t\t'ZYX', // -> XYZ extrinsic\n\t\t'YZX', // -> XZY extrinsic\n\t\t'XZY', // -> YZX extrinsic\n\t\t'ZXY', // -> YXZ extrinsic\n\t\t'YXZ', // -> ZXY extrinsic\n\t\t'XYZ', // -> ZYX extrinsic\n\t\t//'SphericXYZ', // not possible to support\n\t];\n\n\tif ( order === 6 ) {\n\n\t\tconsole.warn( 'THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.' );\n\t\treturn enums[ 0 ];\n\n\t}\n\n\treturn enums[ order ];\n\n}\n\n// Parses comma separated list of numbers and returns them an array.\n// Used internally by the TextParser\nfunction parseNumberArray( value ) {\n\n\tconst array = value.split( ',' ).map( function ( val ) {\n\n\t\treturn parseFloat( val );\n\n\t} );\n\n\treturn array;\n\n}\n\nfunction convertArrayBufferToString( buffer, from, to ) {\n\n\tif ( from === undefined ) from = 0;\n\tif ( to === undefined ) to = buffer.byteLength;\n\n\treturn new TextDecoder().decode( new Uint8Array( buffer, from, to ) );\n\n}\n\nfunction append( a, b ) {\n\n\tfor ( let i = 0, j = a.length, l = b.length; i < l; i ++, j ++ ) {\n\n\t\ta[ j ] = b[ i ];\n\n\t}\n\n}\n\nfunction slice( a, b, from, to ) {\n\n\tfor ( let i = from, j = 0; i < to; i ++, j ++ ) {\n\n\t\ta[ j ] = b[ i ];\n\n\t}\n\n\treturn a;\n\n}\n\n\nexport { FBXLoader };\n", "import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFloat32BufferAttribute,\n\tInstancedBufferAttribute,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tTrianglesDrawMode,\n\tVector3,\n} from 'three';\n\nfunction computeMikkTSpaceTangents( geometry, MikkTSpace, negateSign = true ) {\n\n\tif ( ! MikkTSpace || ! MikkTSpace.isReady ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Initialized MikkTSpace library required.' );\n\n\t}\n\n\tif ( ! geometry.hasAttribute( 'position' ) || ! geometry.hasAttribute( 'normal' ) || ! geometry.hasAttribute( 'uv' ) ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Tangents require \"position\", \"normal\", and \"uv\" attributes.' );\n\n\t}\n\n\tfunction getAttributeArray( attribute ) {\n\n\t\tif ( attribute.normalized || attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst dstArray = new Float32Array( attribute.count * attribute.itemSize );\n\n\t\t\tfor ( let i = 0, j = 0; i < attribute.count; i ++ ) {\n\n\t\t\t\tdstArray[ j ++ ] = attribute.getX( i );\n\t\t\t\tdstArray[ j ++ ] = attribute.getY( i );\n\n\t\t\t\tif ( attribute.itemSize > 2 ) {\n\n\t\t\t\t\tdstArray[ j ++ ] = attribute.getZ( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn dstArray;\n\n\t\t}\n\n\t\tif ( attribute.array instanceof Float32Array ) {\n\n\t\t\treturn attribute.array;\n\n\t\t}\n\n\t\treturn new Float32Array( attribute.array );\n\n\t}\n\n\t// MikkTSpace algorithm requires non-indexed input.\n\n\tconst _geometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\n\t// Compute vertex tangents.\n\n\tconst tangents = MikkTSpace.generateTangents(\n\n\t\tgetAttributeArray( _geometry.attributes.position ),\n\t\tgetAttributeArray( _geometry.attributes.normal ),\n\t\tgetAttributeArray( _geometry.attributes.uv )\n\n\t);\n\n\t// Texture coordinate convention of glTF differs from the apparent\n\t// default of the MikkTSpace library; .w component must be flipped.\n\n\tif ( negateSign ) {\n\n\t\tfor ( let i = 3; i < tangents.length; i += 4 ) {\n\n\t\t\ttangents[ i ] *= - 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\t_geometry.setAttribute( 'tangent', new BufferAttribute( tangents, 4 ) );\n\n\tif ( geometry !== _geometry ) {\n\n\t\tgeometry.copy( _geometry );\n\n\t}\n\n\treturn geometry;\n\n}\n\n/**\n * @param {Array} geometries\n * @param {Boolean} useGroups\n * @return {BufferGeometry}\n */\nfunction mergeGeometries( geometries, useGroups = false ) {\n\n\tconst isIndexed = geometries[ 0 ].index !== null;\n\n\tconst attributesUsed = new Set( Object.keys( geometries[ 0 ].attributes ) );\n\tconst morphAttributesUsed = new Set( Object.keys( geometries[ 0 ].morphAttributes ) );\n\n\tconst attributes = {};\n\tconst morphAttributes = {};\n\n\tconst morphTargetsRelative = geometries[ 0 ].morphTargetsRelative;\n\n\tconst mergedGeometry = new BufferGeometry();\n\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\tconst geometry = geometries[ i ];\n\t\tlet attributesCount = 0;\n\n\t\t// ensure that all geometries are indexed, or none\n\n\t\tif ( isIndexed !== ( geometry.index !== null ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather attributes, exit early if they're different\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tif ( ! attributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure \"' + name + '\" attribute exists among all geometries, or in none of them.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( attributes[ name ] === undefined ) attributes[ name ] = [];\n\n\t\t\tattributes[ name ].push( geometry.attributes[ name ] );\n\n\t\t\tattributesCount ++;\n\n\t\t}\n\n\t\t// ensure geometries have the same number of attributes\n\n\t\tif ( attributesCount !== attributesUsed.size ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. Make sure all geometries have the same number of attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather morph attributes, exit early if they're different\n\n\t\tif ( morphTargetsRelative !== geometry.morphTargetsRelative ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphTargetsRelative must be consistent throughout all geometries.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tif ( ! morphAttributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphAttributes must be consistent throughout all geometries.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];\n\n\t\t\tmorphAttributes[ name ].push( geometry.morphAttributes[ name ] );\n\n\t\t}\n\n\t\tif ( useGroups ) {\n\n\t\t\tlet count;\n\n\t\t\tif ( isIndexed ) {\n\n\t\t\t\tcount = geometry.index.count;\n\n\t\t\t} else if ( geometry.attributes.position !== undefined ) {\n\n\t\t\t\tcount = geometry.attributes.position.count;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. The geometry must have either an index or a position attribute' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.addGroup( offset, count, i );\n\n\t\t\toffset += count;\n\n\t\t}\n\n\t}\n\n\t// merge indices\n\n\tif ( isIndexed ) {\n\n\t\tlet indexOffset = 0;\n\t\tconst mergedIndex = [];\n\n\t\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\t\tconst index = geometries[ i ].index;\n\n\t\t\tfor ( let j = 0; j < index.count; ++ j ) {\n\n\t\t\t\tmergedIndex.push( index.getX( j ) + indexOffset );\n\n\t\t\t}\n\n\t\t\tindexOffset += geometries[ i ].attributes.position.count;\n\n\t\t}\n\n\t\tmergedGeometry.setIndex( mergedIndex );\n\n\t}\n\n\t// merge attributes\n\n\tfor ( const name in attributes ) {\n\n\t\tconst mergedAttribute = mergeAttributes( attributes[ name ] );\n\n\t\tif ( ! mergedAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' attribute.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tmergedGeometry.setAttribute( name, mergedAttribute );\n\n\t}\n\n\t// merge morph attributes\n\n\tfor ( const name in morphAttributes ) {\n\n\t\tconst numMorphTargets = morphAttributes[ name ][ 0 ].length;\n\n\t\tif ( numMorphTargets === 0 ) break;\n\n\t\tmergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {};\n\t\tmergedGeometry.morphAttributes[ name ] = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; ++ i ) {\n\n\t\t\tconst morphAttributesToMerge = [];\n\n\t\t\tfor ( let j = 0; j < morphAttributes[ name ].length; ++ j ) {\n\n\t\t\t\tmorphAttributesToMerge.push( morphAttributes[ name ][ j ][ i ] );\n\n\t\t\t}\n\n\t\t\tconst mergedMorphAttribute = mergeAttributes( morphAttributesToMerge );\n\n\t\t\tif ( ! mergedMorphAttribute ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' morphAttribute.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );\n\n\t\t}\n\n\t}\n\n\treturn mergedGeometry;\n\n}\n\n/**\n * @param {Array} attributes\n * @return {BufferAttribute}\n */\nfunction mergeAttributes( attributes ) {\n\n\tlet TypedArray;\n\tlet itemSize;\n\tlet normalized;\n\tlet gpuType = - 1;\n\tlet arrayLength = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( itemSize === undefined ) itemSize = attribute.itemSize;\n\t\tif ( itemSize !== attribute.itemSize ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( normalized === undefined ) normalized = attribute.normalized;\n\t\tif ( normalized !== attribute.normalized ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( gpuType === - 1 ) gpuType = attribute.gpuType;\n\t\tif ( gpuType !== attribute.gpuType ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.count * itemSize;\n\n\t}\n\n\tconst array = new TypedArray( arrayLength );\n\tconst result = new BufferAttribute( array, itemSize, normalized );\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst tupleOffset = offset / itemSize;\n\t\t\tfor ( let j = 0, l = attribute.count; j < l; j ++ ) {\n\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tconst value = attribute.getComponent( j, c );\n\t\t\t\t\tresult.setComponent( j + tupleOffset, c, value );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tarray.set( attribute.array, offset );\n\n\t\t}\n\n\t\toffset += attribute.count * itemSize;\n\n\t}\n\n\tif ( gpuType !== undefined ) {\n\n\t\tresult.gpuType = gpuType;\n\n\t}\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferAttribute}\n * @return {BufferAttribute}\n */\nexport function deepCloneAttribute( attribute ) {\n\n\tif ( attribute.isInstancedInterleavedBufferAttribute || attribute.isInterleavedBufferAttribute ) {\n\n\t\treturn deinterleaveAttribute( attribute );\n\n\t}\n\n\tif ( attribute.isInstancedBufferAttribute ) {\n\n\t\treturn new InstancedBufferAttribute().copy( attribute );\n\n\t}\n\n\treturn new BufferAttribute().copy( attribute );\n\n}\n\n/**\n * @param {Array} attributes\n * @return {Array}\n */\nfunction interleaveAttributes( attributes ) {\n\n\t// Interleaves the provided attributes into an InterleavedBuffer and returns\n\t// a set of InterleavedBufferAttributes for each attribute\n\tlet TypedArray;\n\tlet arrayLength = 0;\n\tlet stride = 0;\n\n\t// calculate the length and type of the interleavedBuffer\n\tfor ( let i = 0, l = attributes.length; i < l; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'AttributeBuffers of different types cannot be interleaved' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.array.length;\n\t\tstride += attribute.itemSize;\n\n\t}\n\n\t// Create the set of buffer attributes\n\tconst interleavedBuffer = new InterleavedBuffer( new TypedArray( arrayLength ), stride );\n\tlet offset = 0;\n\tconst res = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\tfor ( let j = 0, l = attributes.length; j < l; j ++ ) {\n\n\t\tconst attribute = attributes[ j ];\n\t\tconst itemSize = attribute.itemSize;\n\t\tconst count = attribute.count;\n\t\tconst iba = new InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, attribute.normalized );\n\t\tres.push( iba );\n\n\t\toffset += itemSize;\n\n\t\t// Move the data for each attribute into the new interleavedBuffer\n\t\t// at the appropriate offset\n\t\tfor ( let c = 0; c < count; c ++ ) {\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\tiba[ setters[ k ] ]( c, attribute[ getters[ k ] ]( c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn res;\n\n}\n\n// returns a new, non-interleaved version of the provided attribute\nexport function deinterleaveAttribute( attribute ) {\n\n\tconst cons = attribute.data.array.constructor;\n\tconst count = attribute.count;\n\tconst itemSize = attribute.itemSize;\n\tconst normalized = attribute.normalized;\n\n\tconst array = new cons( count * itemSize );\n\tlet newAttribute;\n\tif ( attribute.isInstancedInterleavedBufferAttribute ) {\n\n\t\tnewAttribute = new InstancedBufferAttribute( array, itemSize, normalized, attribute.meshPerAttribute );\n\n\t} else {\n\n\t\tnewAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t}\n\n\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\tnewAttribute.setX( i, attribute.getX( i ) );\n\n\t\tif ( itemSize >= 2 ) {\n\n\t\t\tnewAttribute.setY( i, attribute.getY( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 3 ) {\n\n\t\t\tnewAttribute.setZ( i, attribute.getZ( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 4 ) {\n\n\t\t\tnewAttribute.setW( i, attribute.getW( i ) );\n\n\t\t}\n\n\t}\n\n\treturn newAttribute;\n\n}\n\n// deinterleaves all attributes on the geometry\nexport function deinterleaveGeometry( geometry ) {\n\n\tconst attributes = geometry.attributes;\n\tconst morphTargets = geometry.morphTargets;\n\tconst attrMap = new Map();\n\n\tfor ( const key in attributes ) {\n\n\t\tconst attr = attributes[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tattributes[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n\tfor ( const key in morphTargets ) {\n\n\t\tconst attr = morphTargets[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tmorphTargets[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @return {number}\n */\nfunction estimateBytesUsed( geometry ) {\n\n\t// Return the estimated memory used by this geometry in bytes\n\t// Calculate using itemSize, count, and BYTES_PER_ELEMENT to account\n\t// for InterleavedBufferAttributes.\n\tlet mem = 0;\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst attr = geometry.getAttribute( name );\n\t\tmem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT;\n\n\t}\n\n\tconst indices = geometry.getIndex();\n\tmem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0;\n\treturn mem;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} tolerance\n * @return {BufferGeometry}\n */\nfunction mergeVertices( geometry, tolerance = 1e-4 ) {\n\n\ttolerance = Math.max( tolerance, Number.EPSILON );\n\n\t// Generate an index buffer if the geometry doesn't have one, or optimize it\n\t// if it's already available.\n\tconst hashToIndex = {};\n\tconst indices = geometry.getIndex();\n\tconst positions = geometry.getAttribute( 'position' );\n\tconst vertexCount = indices ? indices.count : positions.count;\n\n\t// next value for triangle indices\n\tlet nextIndex = 0;\n\n\t// attributes and new attribute arrays\n\tconst attributeNames = Object.keys( geometry.attributes );\n\tconst tmpAttributes = {};\n\tconst tmpMorphAttributes = {};\n\tconst newIndices = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\t// Initialize the arrays, allocating space conservatively. Extra\n\t// space will be trimmed in the last step.\n\tfor ( let i = 0, l = attributeNames.length; i < l; i ++ ) {\n\n\t\tconst name = attributeNames[ i ];\n\t\tconst attr = geometry.attributes[ name ];\n\n\t\ttmpAttributes[ name ] = new BufferAttribute(\n\t\t\tnew attr.array.constructor( attr.count * attr.itemSize ),\n\t\t\tattr.itemSize,\n\t\t\tattr.normalized\n\t\t);\n\n\t\tconst morphAttr = geometry.morphAttributes[ name ];\n\t\tif ( morphAttr ) {\n\n\t\t\ttmpMorphAttributes[ name ] = new BufferAttribute(\n\t\t\t\tnew morphAttr.array.constructor( morphAttr.count * morphAttr.itemSize ),\n\t\t\t\tmorphAttr.itemSize,\n\t\t\t\tmorphAttr.normalized\n\t\t\t);\n\n\t\t}\n\n\t}\n\n\t// convert the error tolerance to an amount of decimal places to truncate to\n\tconst halfTolerance = tolerance * 0.5;\n\tconst exponent = Math.log10( 1 / tolerance );\n\tconst hashMultiplier = Math.pow( 10, exponent );\n\tconst hashAdditive = halfTolerance * hashMultiplier;\n\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\tconst index = indices ? indices.getX( i ) : i;\n\n\t\t// Generate a hash for the vertex attributes at the current index 'i'\n\t\tlet hash = '';\n\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\tconst name = attributeNames[ j ];\n\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t// double tilde truncates the decimal value\n\t\t\t\thash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * hashMultiplier + hashAdditive ) },`;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add another reference to the vertex if it's already\n\t\t// used by another index\n\t\tif ( hash in hashToIndex ) {\n\n\t\t\tnewIndices.push( hashToIndex[ hash ] );\n\n\t\t} else {\n\n\t\t\t// copy data to the new index in the temporary attributes\n\t\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\t\tconst name = attributeNames[ j ];\n\t\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\t\tconst morphAttr = geometry.morphAttributes[ name ];\n\t\t\t\tconst itemSize = attribute.itemSize;\n\t\t\t\tconst newarray = tmpAttributes[ name ];\n\t\t\t\tconst newMorphArrays = tmpMorphAttributes[ name ];\n\n\t\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t\tconst getterFunc = getters[ k ];\n\t\t\t\t\tconst setterFunc = setters[ k ];\n\t\t\t\t\tnewarray[ setterFunc ]( nextIndex, attribute[ getterFunc ]( index ) );\n\n\t\t\t\t\tif ( morphAttr ) {\n\n\t\t\t\t\t\tfor ( let m = 0, ml = morphAttr.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\t\tnewMorphArrays[ m ][ setterFunc ]( nextIndex, morphAttr[ m ][ getterFunc ]( index ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\thashToIndex[ hash ] = nextIndex;\n\t\t\tnewIndices.push( nextIndex );\n\t\t\tnextIndex ++;\n\n\t\t}\n\n\t}\n\n\t// generate result BufferGeometry\n\tconst result = geometry.clone();\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst tmpAttribute = tmpAttributes[ name ];\n\n\t\tresult.setAttribute( name, new BufferAttribute(\n\t\t\ttmpAttribute.array.slice( 0, nextIndex * tmpAttribute.itemSize ),\n\t\t\ttmpAttribute.itemSize,\n\t\t\ttmpAttribute.normalized,\n\t\t) );\n\n\t\tif ( ! ( name in tmpMorphAttributes ) ) continue;\n\n\t\tfor ( let j = 0; j < tmpMorphAttributes[ name ].length; j ++ ) {\n\n\t\t\tconst tmpMorphAttribute = tmpMorphAttributes[ name ][ j ];\n\n\t\t\tresult.morphAttributes[ name ][ j ] = new BufferAttribute(\n\t\t\t\ttmpMorphAttribute.array.slice( 0, nextIndex * tmpMorphAttribute.itemSize ),\n\t\t\t\ttmpMorphAttribute.itemSize,\n\t\t\t\ttmpMorphAttribute.normalized,\n\t\t\t);\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tresult.setIndex( newIndices );\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\tif ( drawMode === TrianglesDrawMode ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.' );\n\t\treturn geometry;\n\n\t}\n\n\tif ( drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode ) {\n\n\t\tlet index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tconst indices = [];\n\n\t\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst numberOfTriangles = index.count - 2;\n\t\tconst newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tconst newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\t\tnewGeometry.clearGroups();\n\n\t\treturn newGeometry;\n\n\t} else {\n\n\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', drawMode );\n\t\treturn geometry;\n\n\t}\n\n}\n\n/**\n * Calculates the morphed attributes of a morphed/skinned BufferGeometry.\n * Helpful for Raytracing or Decals.\n * @param {Mesh | Line | Points} object An instance of Mesh, Line or Points.\n * @return {Object} An Object with original position/normal attributes and morphed ones.\n */\nfunction computeMorphedAttributes( object ) {\n\n\tconst _vA = new Vector3();\n\tconst _vB = new Vector3();\n\tconst _vC = new Vector3();\n\n\tconst _tempA = new Vector3();\n\tconst _tempB = new Vector3();\n\tconst _tempC = new Vector3();\n\n\tconst _morphA = new Vector3();\n\tconst _morphB = new Vector3();\n\tconst _morphC = new Vector3();\n\n\tfunction _calculateMorphedAttributeData(\n\t\tobject,\n\t\tattribute,\n\t\tmorphAttribute,\n\t\tmorphTargetsRelative,\n\t\ta,\n\t\tb,\n\t\tc,\n\t\tmodifiedAttributeArray\n\t) {\n\n\t\t_vA.fromBufferAttribute( attribute, a );\n\t\t_vB.fromBufferAttribute( attribute, b );\n\t\t_vC.fromBufferAttribute( attribute, c );\n\n\t\tconst morphInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphAttribute && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\t\t\t_morphB.set( 0, 0, 0 );\n\t\t\t_morphC.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morph = morphAttribute[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morph, a );\n\t\t\t\t_tempB.fromBufferAttribute( morph, b );\n\t\t\t\t_tempC.fromBufferAttribute( morph, c );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_vA.add( _morphA );\n\t\t\t_vB.add( _morphB );\n\t\t\t_vC.add( _morphC );\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tobject.applyBoneTransform( a, _vA );\n\t\t\tobject.applyBoneTransform( b, _vB );\n\t\t\tobject.applyBoneTransform( c, _vC );\n\n\t\t}\n\n\t\tmodifiedAttributeArray[ a * 3 + 0 ] = _vA.x;\n\t\tmodifiedAttributeArray[ a * 3 + 1 ] = _vA.y;\n\t\tmodifiedAttributeArray[ a * 3 + 2 ] = _vA.z;\n\t\tmodifiedAttributeArray[ b * 3 + 0 ] = _vB.x;\n\t\tmodifiedAttributeArray[ b * 3 + 1 ] = _vB.y;\n\t\tmodifiedAttributeArray[ b * 3 + 2 ] = _vB.z;\n\t\tmodifiedAttributeArray[ c * 3 + 0 ] = _vC.x;\n\t\tmodifiedAttributeArray[ c * 3 + 1 ] = _vC.y;\n\t\tmodifiedAttributeArray[ c * 3 + 2 ] = _vC.z;\n\n\t}\n\n\tconst geometry = object.geometry;\n\tconst material = object.material;\n\n\tlet a, b, c;\n\tconst index = geometry.index;\n\tconst positionAttribute = geometry.attributes.position;\n\tconst morphPosition = geometry.morphAttributes.position;\n\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\tconst normalAttribute = geometry.attributes.normal;\n\tconst morphNormal = geometry.morphAttributes.position;\n\n\tconst groups = geometry.groups;\n\tconst drawRange = geometry.drawRange;\n\tlet i, j, il, jl;\n\tlet group;\n\tlet start, end;\n\n\tconst modifiedPosition = new Float32Array( positionAttribute.count * positionAttribute.itemSize );\n\tconst modifiedNormal = new Float32Array( normalAttribute.count * normalAttribute.itemSize );\n\n\tif ( index !== null ) {\n\n\t\t// indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = index.getX( i );\n\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// non-indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = j;\n\t\t\t\t\tb = j + 1;\n\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = i;\n\t\t\t\tb = i + 1;\n\t\t\t\tc = i + 2;\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tconst morphedPositionAttribute = new Float32BufferAttribute( modifiedPosition, 3 );\n\tconst morphedNormalAttribute = new Float32BufferAttribute( modifiedNormal, 3 );\n\n\treturn {\n\n\t\tpositionAttribute: positionAttribute,\n\t\tnormalAttribute: normalAttribute,\n\t\tmorphedPositionAttribute: morphedPositionAttribute,\n\t\tmorphedNormalAttribute: morphedNormalAttribute\n\n\t};\n\n}\n\nfunction mergeGroups( geometry ) {\n\n\tif ( geometry.groups.length === 0 ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge.' );\n\t\treturn geometry;\n\n\t}\n\n\tlet groups = geometry.groups;\n\n\t// sort groups by material index\n\n\tgroups = groups.sort( ( a, b ) => {\n\n\t\tif ( a.materialIndex !== b.materialIndex ) return a.materialIndex - b.materialIndex;\n\n\t\treturn a.start - b.start;\n\n\t} );\n\n\t// create index for non-indexed geometries\n\n\tif ( geometry.getIndex() === null ) {\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\t\tconst indices = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i += 3 ) {\n\n\t\t\tindices.push( i, i + 1, i + 2 );\n\n\t\t}\n\n\t\tgeometry.setIndex( indices );\n\n\t}\n\n\t// sort index\n\n\tconst index = geometry.getIndex();\n\n\tconst newIndices = [];\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tconst groupStart = group.start;\n\t\tconst groupLength = groupStart + group.count;\n\n\t\tfor ( let j = groupStart; j < groupLength; j ++ ) {\n\n\t\t\tnewIndices.push( index.getX( j ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dispose(); // Required to force buffer recreation\n\tgeometry.setIndex( newIndices );\n\n\t// update groups indices\n\n\tlet start = 0;\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tgroup.start = start;\n\t\tstart += group.count;\n\n\t}\n\n\t// merge groups\n\n\tlet currentGroup = groups[ 0 ];\n\n\tgeometry.groups = [ currentGroup ];\n\n\tfor ( let i = 1; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tif ( currentGroup.materialIndex === group.materialIndex ) {\n\n\t\t\tcurrentGroup.count += group.count;\n\n\t\t} else {\n\n\t\t\tcurrentGroup = group;\n\t\t\tgeometry.groups.push( currentGroup );\n\n\t\t}\n\n\t}\n\n\treturn geometry;\n\n}\n\n\n/**\n * Modifies the supplied geometry if it is non-indexed, otherwise creates a new,\n * non-indexed geometry. Returns the geometry with smooth normals everywhere except\n * faces that meet at an angle greater than the crease angle.\n *\n * @param {BufferGeometry} geometry\n * @param {number} [creaseAngle]\n * @return {BufferGeometry}\n */\nfunction toCreasedNormals( geometry, creaseAngle = Math.PI / 3 /* 60 degrees */ ) {\n\n\tconst creaseDot = Math.cos( creaseAngle );\n\tconst hashMultiplier = ( 1 + 1e-10 ) * 1e2;\n\n\t// reusable vectors\n\tconst verts = [ new Vector3(), new Vector3(), new Vector3() ];\n\tconst tempVec1 = new Vector3();\n\tconst tempVec2 = new Vector3();\n\tconst tempNorm = new Vector3();\n\tconst tempNorm2 = new Vector3();\n\n\t// hashes a vector\n\tfunction hashVertex( v ) {\n\n\t\tconst x = ~ ~ ( v.x * hashMultiplier );\n\t\tconst y = ~ ~ ( v.y * hashMultiplier );\n\t\tconst z = ~ ~ ( v.z * hashMultiplier );\n\t\treturn `${x},${y},${z}`;\n\n\t}\n\n\t// BufferGeometry.toNonIndexed() warns if the geometry is non-indexed\n\t// and returns the original geometry\n\tconst resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\tconst posAttr = resultGeometry.attributes.position;\n\tconst vertexMap = {};\n\n\t// find all the normals shared by commonly located vertices\n\tfor ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) {\n\n\t\tconst i3 = 3 * i;\n\t\tconst a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 );\n\t\tconst b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 );\n\t\tconst c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 );\n\n\t\ttempVec1.subVectors( c, b );\n\t\ttempVec2.subVectors( a, b );\n\n\t\t// add the normal to the map for all vertices\n\t\tconst normal = new Vector3().crossVectors( tempVec1, tempVec2 ).normalize();\n\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\tconst vert = verts[ n ];\n\t\t\tconst hash = hashVertex( vert );\n\t\t\tif ( ! ( hash in vertexMap ) ) {\n\n\t\t\t\tvertexMap[ hash ] = [];\n\n\t\t\t}\n\n\t\t\tvertexMap[ hash ].push( normal );\n\n\t\t}\n\n\t}\n\n\t// average normals from all vertices that share a common location if they are within the\n\t// provided crease threshold\n\tconst normalArray = new Float32Array( posAttr.count * 3 );\n\tconst normAttr = new BufferAttribute( normalArray, 3, false );\n\tfor ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) {\n\n\t\t// get the face normal for this vertex\n\t\tconst i3 = 3 * i;\n\t\tconst a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 );\n\t\tconst b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 );\n\t\tconst c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 );\n\n\t\ttempVec1.subVectors( c, b );\n\t\ttempVec2.subVectors( a, b );\n\n\t\ttempNorm.crossVectors( tempVec1, tempVec2 ).normalize();\n\n\t\t// average all normals that meet the threshold and set the normal value\n\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\tconst vert = verts[ n ];\n\t\t\tconst hash = hashVertex( vert );\n\t\t\tconst otherNormals = vertexMap[ hash ];\n\t\t\ttempNorm2.set( 0, 0, 0 );\n\n\t\t\tfor ( let k = 0, lk = otherNormals.length; k < lk; k ++ ) {\n\n\t\t\t\tconst otherNorm = otherNormals[ k ];\n\t\t\t\tif ( tempNorm.dot( otherNorm ) > creaseDot ) {\n\n\t\t\t\t\ttempNorm2.add( otherNorm );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttempNorm2.normalize();\n\t\t\tnormAttr.setXYZ( i3 + n, tempNorm2.x, tempNorm2.y, tempNorm2.z );\n\n\t\t}\n\n\t}\n\n\tresultGeometry.setAttribute( 'normal', normAttr );\n\treturn resultGeometry;\n\n}\n\nexport {\n\tcomputeMikkTSpaceTangents,\n\tmergeGeometries,\n\tmergeAttributes,\n\tinterleaveAttributes,\n\testimateBytesUsed,\n\tmergeVertices,\n\ttoTrianglesDrawMode,\n\tcomputeMorphedAttributes,\n\tmergeGroups,\n\ttoCreasedNormals\n};\n", "import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tColorManagement,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInstancedMesh,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLinearSRGBColorSpace,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTexture,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tSRGBColorSpace,\n\tInstancedBufferAttribute\n} from 'three';\nimport { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';\n\nclass GLTFLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ktx2Loader = null;\n\t\tthis.meshoptDecoder = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureWebPExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureAVIFExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSheenExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsVolumeExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIorExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsEmissiveStrengthExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSpecularExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIridescenceExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsAnisotropyExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsBumpExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFLightsExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshoptCompression( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshGpuInstancing( parser );\n\n\t\t} );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet resourcePath;\n\n\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\tresourcePath = this.resourcePath;\n\n\t\t} else if ( this.path !== '' ) {\n\n\t\t\t// If a base path is set, resources will be relative paths from that plus the relative path of the gltf file\n\t\t\t// Example path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf'\n\t\t\t// resourcePath = 'https://my-cnd-server.com/assets/models/'\n\t\t\t// referenced resource 'model.bin' will be loaded from 'https://my-cnd-server.com/assets/models/model.bin'\n\t\t\t// referenced resource '../textures/texture.png' will be loaded from 'https://my-cnd-server.com/assets/textures/texture.png'\n\t\t\tconst relativeUrl = LoaderUtils.extractUrlBase( url );\n\t\t\tresourcePath = LoaderUtils.resolveURL( relativeUrl, this.path );\n\n\t\t} else {\n\n\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t}\n\n\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\tthis.manager.itemStart( url );\n\n\t\tconst _onError = function ( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, function ( data ) {\n\n\t\t\ttry {\n\n\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, _onError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\t_onError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, _onError );\n\n\t}\n\n\tsetDRACOLoader( dracoLoader ) {\n\n\t\tthis.dracoLoader = dracoLoader;\n\t\treturn this;\n\n\t}\n\n\tsetDDSLoader() {\n\n\t\tthrow new Error(\n\n\t\t\t'THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".'\n\n\t\t);\n\n\t}\n\n\tsetKTX2Loader( ktx2Loader ) {\n\n\t\tthis.ktx2Loader = ktx2Loader;\n\t\treturn this;\n\n\t}\n\n\tsetMeshoptDecoder( meshoptDecoder ) {\n\n\t\tthis.meshoptDecoder = meshoptDecoder;\n\t\treturn this;\n\n\t}\n\n\tregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tparse( data, path, onLoad, onError ) {\n\n\t\tlet json;\n\t\tconst extensions = {};\n\t\tconst plugins = {};\n\t\tconst textDecoder = new TextDecoder();\n\n\t\tif ( typeof data === 'string' ) {\n\n\t\t\tjson = JSON.parse( data );\n\n\t\t} else if ( data instanceof ArrayBuffer ) {\n\n\t\t\tconst magic = textDecoder.decode( new Uint8Array( data, 0, 4 ) );\n\n\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tjson = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content );\n\n\t\t\t} else {\n\n\t\t\t\tjson = JSON.parse( textDecoder.decode( data ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tjson = data;\n\n\t\t}\n\n\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst parser = new GLTFParser( json, {\n\n\t\t\tpath: path || this.resourcePath || '',\n\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\trequestHeader: this.requestHeader,\n\t\t\tmanager: this.manager,\n\t\t\tktx2Loader: this.ktx2Loader,\n\t\t\tmeshoptDecoder: this.meshoptDecoder\n\n\t\t} );\n\n\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\tfor ( let i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\tconst plugin = this.pluginCallbacks[ i ]( parser );\n\n\t\t\tif ( ! plugin.name ) console.error( 'THREE.GLTFLoader: Invalid plugin found: missing name' );\n\n\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t// Remove this workaround if we move all the existing\n\t\t\t// extension handlers to plugin system\n\t\t\textensions[ plugin.name ] = true;\n\n\t\t}\n\n\t\tif ( json.extensionsUsed ) {\n\n\t\t\tfor ( let i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\tconst extensionName = json.extensionsUsed[ i ];\n\t\t\t\tconst extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tparser.setExtensions( extensions );\n\t\tparser.setPlugins( plugins );\n\t\tparser.parse( onLoad, onError );\n\n\t}\n\n\tparseAsync( data, path ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.parse( data, path, resolve, reject );\n\n\t\t} );\n\n\t}\n\n}\n\n/* GLTFREGISTRY */\n\nfunction GLTFRegistry() {\n\n\tlet objects = {};\n\n\treturn\t{\n\n\t\tget: function ( key ) {\n\n\t\t\treturn objects[ key ];\n\n\t\t},\n\n\t\tadd: function ( key, object ) {\n\n\t\t\tobjects[ key ] = object;\n\n\t\t},\n\n\t\tremove: function ( key ) {\n\n\t\t\tdelete objects[ key ];\n\n\t\t},\n\n\t\tremoveAll: function () {\n\n\t\t\tobjects = {};\n\n\t\t}\n\n\t};\n\n}\n\n/*********************************/\n/********** EXTENSIONS ***********/\n/*********************************/\n\nconst EXTENSIONS = {\n\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\tKHR_MATERIALS_IOR: 'KHR_materials_ior',\n\tKHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n\tKHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\tKHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence',\n\tKHR_MATERIALS_ANISOTROPY: 'KHR_materials_anisotropy',\n\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\tKHR_MATERIALS_VOLUME: 'KHR_materials_volume',\n\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\tKHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength',\n\tEXT_MATERIALS_BUMP: 'EXT_materials_bump',\n\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\n\tEXT_TEXTURE_AVIF: 'EXT_texture_avif',\n\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',\n\tEXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing'\n};\n\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\nclass GLTFLightsExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\t// Object3D instance caches\n\t\tthis.cache = { refs: {}, uses: {} };\n\n\t}\n\n\t_markDefs() {\n\n\t\tconst parser = this.parser;\n\t\tconst nodeDefs = this.parser.json.nodes || [];\n\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t\t&& nodeDef.extensions[ this.name ]\n\t\t\t\t\t&& nodeDef.extensions[ this.name ].light !== undefined ) {\n\n\t\t\t\tparser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_loadLight( lightIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst cacheKey = 'light:' + lightIndex;\n\t\tlet dependency = parser.cache.get( cacheKey );\n\n\t\tif ( dependency ) return dependency;\n\n\t\tconst json = parser.json;\n\t\tconst extensions = ( json.extensions && json.extensions[ this.name ] ) || {};\n\t\tconst lightDefs = extensions.lights || [];\n\t\tconst lightDef = lightDefs[ lightIndex ];\n\t\tlet lightNode;\n\n\t\tconst color = new Color( 0xffffff );\n\n\t\tif ( lightDef.color !== undefined ) color.setRGB( lightDef.color[ 0 ], lightDef.color[ 1 ], lightDef.color[ 2 ], LinearSRGBColorSpace );\n\n\t\tconst range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tassignExtrasToUserData( lightNode, lightDef );\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) );\n\n\t\tdependency = Promise.resolve( lightNode );\n\n\t\tparser.cache.add( cacheKey, dependency );\n\n\t\treturn dependency;\n\n\t}\n\n\tgetDependency( type, index ) {\n\n\t\tif ( type !== 'light' ) return;\n\n\t\treturn this._loadLight( index );\n\n\t}\n\n\tcreateNodeAttachment( nodeIndex ) {\n\n\t\tconst self = this;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\t\tconst lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {};\n\t\tconst lightIndex = lightDef.light;\n\n\t\tif ( lightIndex === undefined ) return null;\n\n\t\treturn this._loadLight( lightIndex ).then( function ( light ) {\n\n\t\t\treturn parser._getNodeRef( self.cache, lightIndex, light );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\nclass GLTFMaterialsUnlitExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tgetMaterialType() {\n\n\t\treturn MeshBasicMaterial;\n\n\t}\n\n\textendParams( materialParams, materialDef, parser ) {\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Emissive Strength Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md\n */\nclass GLTFMaterialsEmissiveStrengthExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength;\n\n\t\tif ( emissiveStrength !== undefined ) {\n\n\t\t\tmaterialParams.emissiveIntensity = emissiveStrength;\n\n\t\t}\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\nclass GLTFMaterialsClearcoatExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Iridescence Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence\n */\nclass GLTFMaterialsIridescenceExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.iridescenceFactor !== undefined ) {\n\n\t\t\tmaterialParams.iridescence = extension.iridescenceFactor;\n\n\t\t}\n\n\t\tif ( extension.iridescenceTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) );\n\n\t\t}\n\n\t\tif ( extension.iridescenceIor !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceIOR = extension.iridescenceIor;\n\n\t\t}\n\n\t\tif ( materialParams.iridescenceThicknessRange === undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange = [ 100, 400 ];\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMinimum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMaximum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\nclass GLTFMaterialsSheenExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.sheenColor = new Color( 0, 0, 0 );\n\t\tmaterialParams.sheenRoughness = 0;\n\t\tmaterialParams.sheen = 1;\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.sheenColorFactor !== undefined ) {\n\n\t\t\tconst colorFactor = extension.sheenColorFactor;\n\t\t\tmaterialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ], LinearSRGBColorSpace );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.sheenRoughness = extension.sheenRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.sheenColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, SRGBColorSpace ) );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\nclass GLTFMaterialsTransmissionExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\nclass GLTFMaterialsVolumeExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n\n\t\tif ( extension.thicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) );\n\n\t\t}\n\n\t\tmaterialParams.attenuationDistance = extension.attenuationDistance || Infinity;\n\n\t\tconst colorArray = extension.attenuationColor || [ 1, 1, 1 ];\n\t\tmaterialParams.attenuationColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace );\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\nclass GLTFMaterialsIorExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IOR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\nclass GLTFMaterialsSpecularExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n\n\t\tif ( extension.specularTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularIntensityMap', extension.specularTexture ) );\n\n\t\t}\n\n\t\tconst colorArray = extension.specularColorFactor || [ 1, 1, 1 ];\n\t\tmaterialParams.specularColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace );\n\n\t\tif ( extension.specularColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, SRGBColorSpace ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n\n/**\n * Materials bump Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump\n */\nclass GLTFMaterialsBumpExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_MATERIALS_BUMP;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.bumpScale = extension.bumpFactor !== undefined ? extension.bumpFactor : 1.0;\n\n\t\tif ( extension.bumpTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'bumpMap', extension.bumpTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials anisotropy Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy\n */\nclass GLTFMaterialsAnisotropyExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.anisotropyStrength !== undefined ) {\n\n\t\t\tmaterialParams.anisotropy = extension.anisotropyStrength;\n\n\t\t}\n\n\t\tif ( extension.anisotropyRotation !== undefined ) {\n\n\t\t\tmaterialParams.anisotropyRotation = extension.anisotropyRotation;\n\n\t\t}\n\n\t\tif ( extension.anisotropyTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'anisotropyMap', extension.anisotropyTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\nclass GLTFTextureBasisUExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ this.name ];\n\t\tconst loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t\t} else {\n\n\t\t\t\t// Assumes that the extension is optional and that a fallback texture is present\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t}\n\n}\n\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\nclass GLTFTextureWebPExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n\t\tthis.isSupported = null;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst name = this.name;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ name ];\n\t\tconst source = json.images[ extension.source ];\n\n\t\tlet loader = parser.textureLoader;\n\t\tif ( source.uri ) {\n\n\t\t\tconst handler = parser.options.manager.getHandler( source.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.detectSupport().then( function ( isSupported ) {\n\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );\n\n\t\t\t}\n\n\t\t\t// Fall back to PNG or JPEG.\n\t\t\treturn parser.loadTexture( textureIndex );\n\n\t\t} );\n\n\t}\n\n\tdetectSupport() {\n\n\t\tif ( ! this.isSupported ) {\n\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\n\n\t\t\t\tconst image = new Image();\n\n\t\t\t\t// Lossy test image. Support for lossy images doesn't guarantee support for all\n\t\t\t\t// WebP images, unfortunately.\n\t\t\t\timage.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\n\n\t\t\t\timage.onload = image.onerror = function () {\n\n\t\t\t\t\tresolve( image.height === 1 );\n\n\t\t\t\t};\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn this.isSupported;\n\n\t}\n\n}\n\n/**\n * AVIF Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif\n */\nclass GLTFTextureAVIFExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_AVIF;\n\t\tthis.isSupported = null;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst name = this.name;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ name ];\n\t\tconst source = json.images[ extension.source ];\n\n\t\tlet loader = parser.textureLoader;\n\t\tif ( source.uri ) {\n\n\t\t\tconst handler = parser.options.manager.getHandler( source.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.detectSupport().then( function ( isSupported ) {\n\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: AVIF required by asset but unsupported.' );\n\n\t\t\t}\n\n\t\t\t// Fall back to PNG or JPEG.\n\t\t\treturn parser.loadTexture( textureIndex );\n\n\t\t} );\n\n\t}\n\n\tdetectSupport() {\n\n\t\tif ( ! this.isSupported ) {\n\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\n\n\t\t\t\tconst image = new Image();\n\n\t\t\t\t// Lossy test image.\n\t\t\t\timage.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=';\n\t\t\t\timage.onload = image.onerror = function () {\n\n\t\t\t\t\tresolve( image.height === 1 );\n\n\t\t\t\t};\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn this.isSupported;\n\n\t}\n\n}\n\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\nclass GLTFMeshoptCompression {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n\t\tthis.parser = parser;\n\n\t}\n\n\tloadBufferView( index ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst bufferView = json.bufferViews[ index ];\n\n\t\tif ( bufferView.extensions && bufferView.extensions[ this.name ] ) {\n\n\t\t\tconst extensionDef = bufferView.extensions[ this.name ];\n\n\t\t\tconst buffer = this.parser.getDependency( 'buffer', extensionDef.buffer );\n\t\t\tconst decoder = this.parser.options.meshoptDecoder;\n\n\t\t\tif ( ! decoder || ! decoder.supported ) {\n\n\t\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Assumes that the extension is optional and that fallback buffer data is present\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn buffer.then( function ( res ) {\n\n\t\t\t\tconst byteOffset = extensionDef.byteOffset || 0;\n\t\t\t\tconst byteLength = extensionDef.byteLength || 0;\n\n\t\t\t\tconst count = extensionDef.count;\n\t\t\t\tconst stride = extensionDef.byteStride;\n\n\t\t\t\tconst source = new Uint8Array( res, byteOffset, byteLength );\n\n\t\t\t\tif ( decoder.decodeGltfBufferAsync ) {\n\n\t\t\t\t\treturn decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) {\n\n\t\t\t\t\t\treturn res.buffer;\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync\n\t\t\t\t\treturn decoder.ready.then( function () {\n\n\t\t\t\t\t\tconst result = new ArrayBuffer( count * stride );\n\t\t\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\n\t\t\t\t\t\treturn result;\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * GPU Instancing Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing\n *\n */\nclass GLTFMeshGpuInstancing {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING;\n\t\tthis.parser = parser;\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( ! nodeDef.extensions || ! nodeDef.extensions[ this.name ] ||\n\t\t\tnodeDef.mesh === undefined ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst meshDef = json.meshes[ nodeDef.mesh ];\n\n\t\t// No Points or Lines + Instancing support yet\n\n\t\tfor ( const primitive of meshDef.primitives ) {\n\n\t\t\tif ( primitive.mode !== WEBGL_CONSTANTS.TRIANGLES &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN &&\n\t\t\t\t primitive.mode !== undefined ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extensionDef = nodeDef.extensions[ this.name ];\n\t\tconst attributesDef = extensionDef.attributes;\n\n\t\t// @TODO: Can we support InstancedMesh + SkinnedMesh?\n\n\t\tconst pending = [];\n\t\tconst attributes = {};\n\n\t\tfor ( const key in attributesDef ) {\n\n\t\t\tpending.push( this.parser.getDependency( 'accessor', attributesDef[ key ] ).then( accessor => {\n\n\t\t\t\tattributes[ key ] = accessor;\n\t\t\t\treturn attributes[ key ];\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( pending.length < 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tpending.push( this.parser.createNodeMesh( nodeIndex ) );\n\n\t\treturn Promise.all( pending ).then( results => {\n\n\t\t\tconst nodeObject = results.pop();\n\t\t\tconst meshes = nodeObject.isGroup ? nodeObject.children : [ nodeObject ];\n\t\t\tconst count = results[ 0 ].count; // All attribute counts should be same\n\t\t\tconst instancedMeshes = [];\n\n\t\t\tfor ( const mesh of meshes ) {\n\n\t\t\t\t// Temporal variables\n\t\t\t\tconst m = new Matrix4();\n\t\t\t\tconst p = new Vector3();\n\t\t\t\tconst q = new Quaternion();\n\t\t\t\tconst s = new Vector3( 1, 1, 1 );\n\n\t\t\t\tconst instancedMesh = new InstancedMesh( mesh.geometry, mesh.material, count );\n\n\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\tif ( attributes.TRANSLATION ) {\n\n\t\t\t\t\t\tp.fromBufferAttribute( attributes.TRANSLATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.ROTATION ) {\n\n\t\t\t\t\t\tq.fromBufferAttribute( attributes.ROTATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.SCALE ) {\n\n\t\t\t\t\t\ts.fromBufferAttribute( attributes.SCALE, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinstancedMesh.setMatrixAt( i, m.compose( p, q, s ) );\n\n\t\t\t\t}\n\n\t\t\t\t// Add instance attributes to the geometry, excluding TRS.\n\t\t\t\tfor ( const attributeName in attributes ) {\n\n\t\t\t\t\tif ( attributeName === '_COLOR_0' ) {\n\n\t\t\t\t\t\tconst attr = attributes[ attributeName ];\n\t\t\t\t\t\tinstancedMesh.instanceColor = new InstancedBufferAttribute( attr.array, attr.itemSize, attr.normalized );\n\n\t\t\t\t\t} else if ( attributeName !== 'TRANSLATION' &&\n\t\t\t\t\t\t attributeName !== 'ROTATION' &&\n\t\t\t\t\t\t attributeName !== 'SCALE' ) {\n\n\t\t\t\t\t\tmesh.geometry.setAttribute( attributeName, attributes[ attributeName ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Just in case\n\t\t\t\tObject3D.prototype.copy.call( instancedMesh, mesh );\n\n\t\t\t\tthis.parser.assignFinalMaterial( instancedMesh );\n\n\t\t\t\tinstancedMeshes.push( instancedMesh );\n\n\t\t\t}\n\n\t\t\tif ( nodeObject.isGroup ) {\n\n\t\t\t\tnodeObject.clear();\n\n\t\t\t\tnodeObject.add( ... instancedMeshes );\n\n\t\t\t\treturn nodeObject;\n\n\t\t\t}\n\n\t\t\treturn instancedMeshes[ 0 ];\n\n\t\t} );\n\n\t}\n\n}\n\n/* BINARY EXTENSION */\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\nclass GLTFBinaryExtension {\n\n\tconstructor( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tconst headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tconst textDecoder = new TextDecoder();\n\n\t\tthis.header = {\n\t\t\tmagic: textDecoder.decode( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tconst chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n\t\tconst chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tlet chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkContentsLength ) {\n\n\t\t\tconst chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tconst chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tconst contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = textDecoder.decode( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tconst byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\nclass GLTFDracoMeshCompressionExtension {\n\n\tconstructor( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tdecodePrimitive( primitive, parser ) {\n\n\t\tconst json = this.json;\n\t\tconst dracoLoader = this.dracoLoader;\n\t\tconst bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tconst gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tconst threeAttributeMap = {};\n\t\tconst attributeNormalizedMap = {};\n\t\tconst attributeTypeMap = {};\n\n\t\tfor ( const attributeName in gltfAttributeMap ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( const attributeName in primitive.attributes ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tconst accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tconst componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType.name;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( const attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tconst attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tconst normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap, LinearSRGBColorSpace, reject );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\nclass GLTFTextureTransformExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\textendTexture( texture, transform ) {\n\n\t\tif ( ( transform.texCoord === undefined || transform.texCoord === texture.channel )\n\t\t\t&& transform.offset === undefined\n\t\t\t&& transform.rotation === undefined\n\t\t\t&& transform.scale === undefined ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21819.\n\t\t\treturn texture;\n\n\t\t}\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\ttexture.channel = transform.texCoord;\n\n\t\t}\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\nclass GLTFMeshQuantizationExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n}\n\n/*********************************/\n/********** INTERPOLATION ********/\n/*********************************/\n\n// Spline Interpolation\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\nclass GLTFCubicSplineInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( let i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer;\n\t\tconst values = this.sampleValues;\n\t\tconst stride = this.valueSize;\n\n\t\tconst stride2 = stride * 2;\n\t\tconst stride3 = stride * 3;\n\n\t\tconst td = t1 - t0;\n\n\t\tconst p = ( t - t0 ) / td;\n\t\tconst pp = p * p;\n\t\tconst ppp = pp * p;\n\n\t\tconst offset1 = i1 * stride3;\n\t\tconst offset0 = offset1 - stride3;\n\n\t\tconst s2 = - 2 * ppp + 3 * pp;\n\t\tconst s3 = ppp - pp;\n\t\tconst s0 = 1 - s2;\n\t\tconst s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( let i = 0; i !== stride; i ++ ) {\n\n\t\t\tconst p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tconst m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tconst p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tconst m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nconst _q = new Quaternion();\n\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = super.interpolate_( i1, t0, t, t1 );\n\n\t\t_q.fromArray( result ).normalize().toArray( result );\n\n\t\treturn result;\n\n\t}\n\n}\n\n\n/*********************************/\n/********** INTERNALS ************/\n/*********************************/\n\n/* CONSTANTS */\n\nconst WEBGL_CONSTANTS = {\n\tFLOAT: 5126,\n\t//FLOAT_MAT2: 35674,\n\tFLOAT_MAT3: 35675,\n\tFLOAT_MAT4: 35676,\n\tFLOAT_VEC2: 35664,\n\tFLOAT_VEC3: 35665,\n\tFLOAT_VEC4: 35666,\n\tLINEAR: 9729,\n\tREPEAT: 10497,\n\tSAMPLER_2D: 35678,\n\tPOINTS: 0,\n\tLINES: 1,\n\tLINE_LOOP: 2,\n\tLINE_STRIP: 3,\n\tTRIANGLES: 4,\n\tTRIANGLE_STRIP: 5,\n\tTRIANGLE_FAN: 6,\n\tUNSIGNED_BYTE: 5121,\n\tUNSIGNED_SHORT: 5123\n};\n\nconst WEBGL_COMPONENT_TYPES = {\n\t5120: Int8Array,\n\t5121: Uint8Array,\n\t5122: Int16Array,\n\t5123: Uint16Array,\n\t5125: Uint32Array,\n\t5126: Float32Array\n};\n\nconst WEBGL_FILTERS = {\n\t9728: NearestFilter,\n\t9729: LinearFilter,\n\t9984: NearestMipmapNearestFilter,\n\t9985: LinearMipmapNearestFilter,\n\t9986: NearestMipmapLinearFilter,\n\t9987: LinearMipmapLinearFilter\n};\n\nconst WEBGL_WRAPPINGS = {\n\t33071: ClampToEdgeWrapping,\n\t33648: MirroredRepeatWrapping,\n\t10497: RepeatWrapping\n};\n\nconst WEBGL_TYPE_SIZES = {\n\t'SCALAR': 1,\n\t'VEC2': 2,\n\t'VEC3': 3,\n\t'VEC4': 4,\n\t'MAT2': 4,\n\t'MAT3': 9,\n\t'MAT4': 16\n};\n\nconst ATTRIBUTES = {\n\tPOSITION: 'position',\n\tNORMAL: 'normal',\n\tTANGENT: 'tangent',\n\tTEXCOORD_0: 'uv',\n\tTEXCOORD_1: 'uv1',\n\tTEXCOORD_2: 'uv2',\n\tTEXCOORD_3: 'uv3',\n\tCOLOR_0: 'color',\n\tWEIGHTS_0: 'skinWeight',\n\tJOINTS_0: 'skinIndex',\n};\n\nconst PATH_PROPERTIES = {\n\tscale: 'scale',\n\ttranslation: 'position',\n\trotation: 'quaternion',\n\tweights: 'morphTargetInfluences'\n};\n\nconst INTERPOLATION = {\n\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\tLINEAR: InterpolateLinear,\n\tSTEP: InterpolateDiscrete\n};\n\nconst ALPHA_MODES = {\n\tOPAQUE: 'OPAQUE',\n\tMASK: 'MASK',\n\tBLEND: 'BLEND'\n};\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\nfunction createDefaultMaterial( cache ) {\n\n\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\tcolor: 0xFFFFFF,\n\t\t\temissive: 0x000000,\n\t\t\tmetalness: 1,\n\t\t\troughness: 1,\n\t\t\ttransparent: false,\n\t\t\tdepthTest: true,\n\t\t\tside: FrontSide\n\t\t} );\n\n\t}\n\n\treturn cache[ 'DefaultMaterial' ];\n\n}\n\nfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t// Add unknown glTF extensions to an object's userData.\n\n\tfor ( const name in objectDef.extensions ) {\n\n\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\nfunction assignExtrasToUserData( object, gltfDef ) {\n\n\tif ( gltfDef.extras !== undefined ) {\n\n\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array} targets\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addMorphTargets( geometry, targets, parser ) {\n\n\tlet hasMorphPosition = false;\n\tlet hasMorphNormal = false;\n\tlet hasMorphColor = false;\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\t\tif ( target.COLOR_0 !== undefined ) hasMorphColor = true;\n\n\t\tif ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break;\n\n\t}\n\n\tif ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry );\n\n\tconst pendingPositionAccessors = [];\n\tconst pendingNormalAccessors = [];\n\tconst pendingColorAccessors = [];\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( hasMorphPosition ) {\n\n\t\t\tconst pendingAccessor = target.POSITION !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t: geometry.attributes.position;\n\n\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphNormal ) {\n\n\t\t\tconst pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t: geometry.attributes.normal;\n\n\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphColor ) {\n\n\t\t\tconst pendingAccessor = target.COLOR_0 !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.COLOR_0 )\n\t\t\t\t: geometry.attributes.color;\n\n\t\t\tpendingColorAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t}\n\n\treturn Promise.all( [\n\t\tPromise.all( pendingPositionAccessors ),\n\t\tPromise.all( pendingNormalAccessors ),\n\t\tPromise.all( pendingColorAccessors )\n\t] ).then( function ( accessors ) {\n\n\t\tconst morphPositions = accessors[ 0 ];\n\t\tconst morphNormals = accessors[ 1 ];\n\t\tconst morphColors = accessors[ 2 ];\n\n\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\tif ( hasMorphColor ) geometry.morphAttributes.color = morphColors;\n\t\tgeometry.morphTargetsRelative = true;\n\n\t\treturn geometry;\n\n\t} );\n\n}\n\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\nfunction updateMorphTargets( mesh, meshDef ) {\n\n\tmesh.updateMorphTargets();\n\n\tif ( meshDef.weights !== undefined ) {\n\n\t\tfor ( let i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t}\n\n\t}\n\n\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\tconst targetNames = meshDef.extras.targetNames;\n\n\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\tfor ( let i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t}\n\n\t}\n\n}\n\nfunction createPrimitiveKey( primitiveDef ) {\n\n\tlet geometryKey;\n\n\tconst dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\n\tif ( dracoExtension ) {\n\n\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t} else {\n\n\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t}\n\n\tif ( primitiveDef.targets !== undefined ) {\n\n\t\tfor ( let i = 0, il = primitiveDef.targets.length; i < il; i ++ ) {\n\n\t\t\tgeometryKey += ':' + createAttributesKey( primitiveDef.targets[ i ] );\n\n\t\t}\n\n\t}\n\n\treturn geometryKey;\n\n}\n\nfunction createAttributesKey( attributes ) {\n\n\tlet attributesKey = '';\n\n\tconst keys = Object.keys( attributes ).sort();\n\n\tfor ( let i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t}\n\n\treturn attributesKey;\n\n}\n\nfunction getNormalizedComponentScale( constructor ) {\n\n\t// Reference:\n\t// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n\n\tswitch ( constructor ) {\n\n\t\tcase Int8Array:\n\t\t\treturn 1 / 127;\n\n\t\tcase Uint8Array:\n\t\t\treturn 1 / 255;\n\n\t\tcase Int16Array:\n\t\t\treturn 1 / 32767;\n\n\t\tcase Uint16Array:\n\t\t\treturn 1 / 65535;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported normalized accessor component type.' );\n\n\t}\n\n}\n\nfunction getImageURIMimeType( uri ) {\n\n\tif ( uri.search( /\\.jpe?g($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/jpeg/ ) === 0 ) return 'image/jpeg';\n\tif ( uri.search( /\\.webp($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/webp/ ) === 0 ) return 'image/webp';\n\n\treturn 'image/png';\n\n}\n\nconst _identityMatrix = new Matrix4();\n\n/* GLTF PARSER */\n\nclass GLTFParser {\n\n\tconstructor( json = {}, options = {} ) {\n\n\t\tthis.json = json;\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options;\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Node cache\n\t\tthis.nodeCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\tthis.sourceCache = {};\n\t\tthis.textureCache = {};\n\n\t\t// Track node names, to ensure no duplicates\n\t\tthis.nodeNamesUsed = {};\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\n\t\tlet isSafari = false;\n\t\tlet isFirefox = false;\n\t\tlet firefoxVersion = - 1;\n\n\t\tif ( typeof navigator !== 'undefined' ) {\n\n\t\t\tisSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent ) === true;\n\t\t\tisFirefox = navigator.userAgent.indexOf( 'Firefox' ) > - 1;\n\t\t\tfirefoxVersion = isFirefox ? navigator.userAgent.match( /Firefox\\/([0-9]+)\\./ )[ 1 ] : - 1;\n\n\t\t}\n\n\t\tif ( typeof createImageBitmap === 'undefined' || isSafari || ( isFirefox && firefoxVersion < 98 ) ) {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\t\tthis.textureLoader.setRequestHeader( this.options.requestHeader );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tsetExtensions( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t}\n\n\tsetPlugins( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t}\n\n\tparse( onLoad, onError ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\t\tthis.nodeCache = {};\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\treturn ext._markDefs && ext._markDefs();\n\n\t\t} );\n\n\t\tPromise.all( this._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.beforeRoot && ext.beforeRoot();\n\n\t\t} ) ).then( function () {\n\n\t\t\treturn Promise.all( [\n\n\t\t\t\tparser.getDependencies( 'scene' ),\n\t\t\t\tparser.getDependencies( 'animation' ),\n\t\t\t\tparser.getDependencies( 'camera' ),\n\n\t\t\t] );\n\n\t\t} ).then( function ( dependencies ) {\n\n\t\t\tconst result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\treturn Promise.all( parser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.afterRoot && ext.afterRoot( result );\n\n\t\t\t} ) ).then( function () {\n\n\t\t\t\tfor ( const scene of result.scenes ) {\n\n\t\t\t\t\tscene.updateMatrixWorld();\n\n\t\t\t\t}\n\n\t\t\t\tonLoad( result );\n\n\t\t\t} );\n\n\t\t} ).catch( onError );\n\n\t}\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\t_markDefs() {\n\n\t\tconst nodeDefs = this.json.nodes || [];\n\t\tconst skinDefs = this.json.skins || [];\n\t\tconst meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tconst joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( let i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\t_addNodeRef( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t}\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\t_getNodeRef( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tconst ref = object.clone();\n\n\t\t// Propagates mappings to the cloned object, prevents mappings on the\n\t\t// original object from being lost.\n\t\tconst updateMappings = ( original, clone ) => {\n\n\t\t\tconst mappings = this.associations.get( original );\n\t\t\tif ( mappings != null ) {\n\n\t\t\t\tthis.associations.set( clone, mappings );\n\n\t\t\t}\n\n\t\t\tfor ( const [ i, child ] of original.children.entries() ) {\n\n\t\t\t\tupdateMappings( child, clone.children[ i ] );\n\n\t\t\t}\n\n\t\t};\n\n\t\tupdateMappings( object, ref );\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t}\n\n\t_invokeOne( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t_invokeAll( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) pending.push( result );\n\n\t\t}\n\n\t\treturn pending;\n\n\t}\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise}\n\t */\n\tgetDependency( type, index ) {\n\n\t\tconst cacheKey = type + ':' + index;\n\t\tlet dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadNode && ext.loadNode( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadAnimation && ext.loadAnimation( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext != this && ext.getDependency && ext.getDependency( type, index );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( ! dependency ) {\n\n\t\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t}\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise>}\n\t */\n\tgetDependencies( type ) {\n\n\t\tlet dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tconst parser = this;\n\t\t\tconst defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise}\n\t */\n\tloadBuffer( bufferIndex ) {\n\n\t\tconst bufferDef = this.json.buffers[ bufferIndex ];\n\t\tconst loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tconst options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise}\n\t */\n\tloadBufferView( bufferViewIndex ) {\n\n\t\tconst bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tconst byteLength = bufferViewDef.byteLength || 0;\n\t\t\tconst byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise}\n\t */\n\tloadAccessor( accessorIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\t\t\tconst normalized = accessorDef.normalized === true;\n\n\t\t\tconst array = new TypedArray( accessorDef.count * itemSize );\n\t\t\treturn Promise.resolve( new BufferAttribute( array, itemSize, normalized ) );\n\n\t\t}\n\n\t\tconst pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tconst bufferView = bufferViews[ 0 ];\n\n\t\t\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tconst elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tconst itemBytes = elementBytes * itemSize;\n\t\t\tconst byteOffset = accessorDef.byteOffset || 0;\n\t\t\tconst byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tconst normalized = accessorDef.normalized === true;\n\t\t\tlet array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tconst ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tconst ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tlet ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tconst itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tconst TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tconst byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tconst byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tconst sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tconst sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tloadTexture( textureIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceIndex = textureDef.source;\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tlet loader = this.textureLoader;\n\n\t\tif ( sourceDef.uri ) {\n\n\t\t\tconst handler = options.manager.getHandler( sourceDef.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, sourceIndex, loader );\n\n\t}\n\n\tloadTextureImage( textureIndex, sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler;\n\n\t\tif ( this.textureCache[ cacheKey ] ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21559.\n\t\t\treturn this.textureCache[ cacheKey ];\n\n\t\t}\n\n\t\tconst promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) {\n\n\t\t\ttexture.flipY = false;\n\n\t\t\ttexture.name = textureDef.name || sourceDef.name || '';\n\n\t\t\tif ( texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith( 'data:image/' ) === false ) {\n\n\t\t\t\ttexture.name = sourceDef.uri;\n\n\t\t\t}\n\n\t\t\tconst samplers = json.samplers || {};\n\t\t\tconst sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, { textures: textureIndex } );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function () {\n\n\t\t\treturn null;\n\n\t\t} );\n\n\t\tthis.textureCache[ cacheKey ] = promise;\n\n\t\treturn promise;\n\n\t}\n\n\tloadImageSource( sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\n\t\tif ( this.sourceCache[ sourceIndex ] !== undefined ) {\n\n\t\t\treturn this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() );\n\n\t\t}\n\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst URL = self.URL || self.webkitURL;\n\n\t\tlet sourceURI = sourceDef.uri || '';\n\t\tlet isObjectURL = false;\n\n\t\tif ( sourceDef.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tconst blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t} else if ( sourceDef.uri === undefined ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' );\n\n\t\t}\n\n\t\tconst promise = Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tlet onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tconst texture = new Texture( imageBitmap );\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tresolve( texture );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function ( error ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader: Couldn\\'t load texture', sourceURI );\n\t\t\tthrow error;\n\n\t\t} );\n\n\t\tthis.sourceCache[ sourceIndex ] = promise;\n\t\treturn promise;\n\n\t}\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tassignTexture( materialParams, mapName, mapDef, colorSpace ) {\n\n\t\tconst parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture ) return null;\n\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord > 0 ) {\n\n\t\t\t\ttexture = texture.clone();\n\t\t\t\ttexture.channel = mapDef.texCoord;\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tconst transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tconst gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = colorSpace;\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accommodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tassignFinalMaterial( mesh ) {\n\n\t\tconst geometry = mesh.geometry;\n\t\tlet material = mesh.material;\n\n\t\tconst useDerivativeTangents = geometry.attributes.tangent === undefined;\n\t\tconst useVertexColors = geometry.attributes.color !== undefined;\n\t\tconst useFlatShading = geometry.attributes.normal === undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tconst cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tlet pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tconst cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tlet lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\t\t\t\tlineMaterial.map = material.map;\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useDerivativeTangents || useVertexColors || useFlatShading ) {\n\n\t\t\tlet cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( useDerivativeTangents ) cacheKey += 'derivative-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\n\t\t\tlet cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\n\t\t\t\tif ( useDerivativeTangents ) {\n\n\t\t\t\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\t\t\tif ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= - 1;\n\t\t\t\t\tif ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= - 1;\n\n\t\t\t\t}\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t}\n\n\tgetMaterialType( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise}\n\t */\n\tloadMaterial( materialIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst materialDef = json.materials[ materialIndex ];\n\n\t\tlet materialType;\n\t\tconst materialParams = {};\n\t\tconst materialExtensions = materialDef.extensions || {};\n\n\t\tconst pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tconst kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( Promise.all( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tconst alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = materialDef.normalTexture.scale;\n\n\t\t\t\tmaterialParams.normalScale.set( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tconst emissiveFactor = materialDef.emissiveFactor;\n\t\t\tmaterialParams.emissive = new Color().setRGB( emissiveFactor[ 0 ], emissiveFactor[ 1 ], emissiveFactor[ 2 ], LinearSRGBColorSpace );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, SRGBColorSpace ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tconst material = new materialType( materialParams );\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { materials: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t}\n\n\t/** When Object3D instances are targeted by animation, they need unique names. */\n\tcreateUniqueName( originalName ) {\n\n\t\tconst sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );\n\n\t\tif ( sanitizedName in this.nodeNamesUsed ) {\n\n\t\t\treturn sanitizedName + '_' + ( ++ this.nodeNamesUsed[ sanitizedName ] );\n\n\t\t} else {\n\n\t\t\tthis.nodeNamesUsed[ sanitizedName ] = 0;\n\n\t\t\treturn sanitizedName;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array} primitives\n\t * @return {Promise>}\n\t */\n\tloadGeometries( primitives ) {\n\n\t\tconst parser = this;\n\t\tconst extensions = this.extensions;\n\t\tconst cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst primitive = primitives[ i ];\n\t\t\tconst cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tconst cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tlet geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise}\n\t */\n\tloadMesh( meshIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\tconst meshDef = json.meshes[ meshIndex ];\n\t\tconst primitives = meshDef.primitives;\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst materials = results.slice( 0, results.length - 1 );\n\t\t\tconst geometries = results[ results.length - 1 ];\n\n\t\t\tconst meshes = [];\n\n\t\t\tfor ( let i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tconst geometry = geometries[ i ];\n\t\t\t\tconst primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tlet mesh;\n\n\t\t\t\tconst material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true ) {\n\n\t\t\t\t\t\t// normalize skin weights to fix malformed assets (see #15319)\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) );\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tif ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tparser.associations.set( meshes[ i ], {\n\t\t\t\t\tmeshes: meshIndex,\n\t\t\t\t\tprimitives: i\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\tif ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, meshes[ 0 ], meshDef );\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tconst group = new Group();\n\n\t\t\tif ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, group, meshDef );\n\n\t\t\tparser.associations.set( group, { meshes: meshIndex } );\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise}\n\t */\n\tloadCamera( cameraIndex ) {\n\n\t\tlet camera;\n\t\tconst cameraDef = this.json.cameras[ cameraIndex ];\n\t\tconst params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name );\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise}\n\t */\n\tloadSkin( skinIndex ) {\n\n\t\tconst skinDef = this.json.skins[ skinIndex ];\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = skinDef.joints.length; i < il; i ++ ) {\n\n\t\t\tpending.push( this._loadNodeShallow( skinDef.joints[ i ] ) );\n\n\t\t}\n\n\t\tif ( skinDef.inverseBindMatrices !== undefined ) {\n\n\t\t\tpending.push( this.getDependency( 'accessor', skinDef.inverseBindMatrices ) );\n\n\t\t} else {\n\n\t\t\tpending.push( null );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst inverseBindMatrices = results.pop();\n\t\t\tconst jointNodes = results;\n\n\t\t\t// Note that bones (joint nodes) may or may not be in the\n\t\t\t// scene graph at this time.\n\n\t\t\tconst bones = [];\n\t\t\tconst boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = jointNodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst jointNode = jointNodes[ i ];\n\n\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\tconst mat = new Matrix4();\n\n\t\t\t\t\tif ( inverseBindMatrices !== null ) {\n\n\t\t\t\t\t\tmat.fromArray( inverseBindMatrices.array, i * 16 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinDef.joints[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise}\n\t */\n\tloadAnimation( animationIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\n\t\tconst animationDef = json.animations[ animationIndex ];\n\t\tconst animationName = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\tconst pendingNodes = [];\n\t\tconst pendingInputAccessors = [];\n\t\tconst pendingOutputAccessors = [];\n\t\tconst pendingSamplers = [];\n\t\tconst pendingTargets = [];\n\n\t\tfor ( let i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tconst channel = animationDef.channels[ i ];\n\t\t\tconst sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tconst target = channel.target;\n\t\t\tconst name = target.node;\n\t\t\tconst input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tconst output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tif ( target.node === undefined ) continue;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tconst nodes = dependencies[ 0 ];\n\t\t\tconst inputAccessors = dependencies[ 1 ];\n\t\t\tconst outputAccessors = dependencies[ 2 ];\n\t\t\tconst samplers = dependencies[ 3 ];\n\t\t\tconst targets = dependencies[ 4 ];\n\n\t\t\tconst tracks = [];\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst node = nodes[ i ];\n\t\t\t\tconst inputAccessor = inputAccessors[ i ];\n\t\t\t\tconst outputAccessor = outputAccessors[ i ];\n\t\t\t\tconst sampler = samplers[ i ];\n\t\t\t\tconst target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tif ( node.updateMatrix ) {\n\n\t\t\t\t\tnode.updateMatrix();\n\n\t\t\t\t}\n\n\t\t\t\tconst createdTracks = parser._createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target );\n\n\t\t\t\tif ( createdTracks ) {\n\n\t\t\t\t\tfor ( let k = 0; k < createdTracks.length; k ++ ) {\n\n\t\t\t\t\t\ttracks.push( createdTracks[ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( animationName, undefined, tracks );\n\n\t\t} );\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( nodeDef.mesh === undefined ) return null;\n\n\t\treturn parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\tconst node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\tfor ( let i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise}\n\t */\n\tloadNode( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tconst nodePending = parser._loadNodeShallow( nodeIndex );\n\n\t\tconst childPending = [];\n\t\tconst childrenDef = nodeDef.children || [];\n\n\t\tfor ( let i = 0, il = childrenDef.length; i < il; i ++ ) {\n\n\t\t\tchildPending.push( parser.getDependency( 'node', childrenDef[ i ] ) );\n\n\t\t}\n\n\t\tconst skeletonPending = nodeDef.skin === undefined\n\t\t\t? Promise.resolve( null )\n\t\t\t: parser.getDependency( 'skin', nodeDef.skin );\n\n\t\treturn Promise.all( [\n\t\t\tnodePending,\n\t\t\tPromise.all( childPending ),\n\t\t\tskeletonPending\n\t\t] ).then( function ( results ) {\n\n\t\t\tconst node = results[ 0 ];\n\t\t\tconst children = results[ 1 ];\n\t\t\tconst skeleton = results[ 2 ];\n\n\t\t\tif ( skeleton !== null ) {\n\n\t\t\t\t// This full traverse should be fine because\n\t\t\t\t// child glTF nodes have not been added to this node yet.\n\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\tif ( ! mesh.isSkinnedMesh ) return;\n\n\t\t\t\t\tmesh.bind( skeleton, _identityMatrix );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\tnode.add( children[ i ] );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t// ._loadNodeShallow() parses a single node.\n\t// skin and child nodes are created and added in .loadNode() (no '_' prefix).\n\t_loadNodeShallow( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst parser = this;\n\n\t\t// This method is called from .loadNode() and .loadSkin().\n\t\t// Cache a node to avoid duplication.\n\n\t\tif ( this.nodeCache[ nodeIndex ] !== undefined ) {\n\n\t\t\treturn this.nodeCache[ nodeIndex ];\n\n\t\t}\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\t// reserve node's name before its dependencies, so the root has the intended name.\n\t\tconst nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';\n\n\t\tconst pending = [];\n\n\t\tconst meshPromise = parser._invokeOne( function ( ext ) {\n\n\t\t\treturn ext.createNodeMesh && ext.createNodeMesh( nodeIndex );\n\n\t\t} );\n\n\t\tif ( meshPromise ) {\n\n\t\t\tpending.push( meshPromise );\n\n\t\t}\n\n\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tparser._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\n\n\t\t} ).forEach( function ( promise ) {\n\n\t\t\tpending.push( promise );\n\n\t\t} );\n\n\t\tthis.nodeCache[ nodeIndex ] = Promise.all( pending ).then( function ( objects ) {\n\n\t\t\tlet node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( let i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = nodeName;\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tconst matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ! parser.associations.has( node ) ) {\n\n\t\t\t\tparser.associations.set( node, {} );\n\n\t\t\t}\n\n\t\t\tparser.associations.get( node ).nodes = nodeIndex;\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t\treturn this.nodeCache[ nodeIndex ];\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise}\n\t */\n\tloadScene( sceneIndex ) {\n\n\t\tconst extensions = this.extensions;\n\t\tconst sceneDef = this.json.scenes[ sceneIndex ];\n\t\tconst parser = this;\n\n\t\t// Loader returns Group, not Scene.\n\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\tconst scene = new Group();\n\t\tif ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name );\n\n\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\tconst nodeIds = sceneDef.nodes || [];\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\tpending.push( parser.getDependency( 'node', nodeIds[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function ( nodes ) {\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tscene.add( nodes[ i ] );\n\n\t\t\t}\n\n\t\t\t// Removes dangling associations, associations that reference a node that\n\t\t\t// didn't make it into the scene.\n\t\t\tconst reduceAssociations = ( node ) => {\n\n\t\t\t\tconst reducedAssociations = new Map();\n\n\t\t\t\tfor ( const [ key, value ] of parser.associations ) {\n\n\t\t\t\t\tif ( key instanceof Material || key instanceof Texture ) {\n\n\t\t\t\t\t\treducedAssociations.set( key, value );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tnode.traverse( ( node ) => {\n\n\t\t\t\t\tconst mappings = parser.associations.get( node );\n\n\t\t\t\t\tif ( mappings != null ) {\n\n\t\t\t\t\t\treducedAssociations.set( node, mappings );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn reducedAssociations;\n\n\t\t\t};\n\n\t\t\tparser.associations = reduceAssociations( scene );\n\n\t\t\treturn scene;\n\n\t\t} );\n\n\t}\n\n\t_createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ) {\n\n\t\tconst tracks = [];\n\n\t\tconst targetName = node.name ? node.name : node.uuid;\n\t\tconst targetNames = [];\n\n\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\ttargetNames.push( targetName );\n\n\t\t}\n\n\t\tlet TypedKeyframeTrack;\n\n\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tcase PATH_PROPERTIES.position:\n\t\t\tcase PATH_PROPERTIES.scale:\n\n\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tswitch ( outputAccessor.itemSize ) {\n\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\tcase 3:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tconst interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\n\t\tconst outputArray = this._getArrayFromAccessor( outputAccessor );\n\n\t\tfor ( let j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\tconst track = new TypedKeyframeTrack(\n\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\tinputAccessor.array,\n\t\t\t\toutputArray,\n\t\t\t\tinterpolation\n\t\t\t);\n\n\t\t\t// Override interpolation with custom factory method.\n\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\tthis._createCubicSplineTrackInterpolant( track );\n\n\t\t\t}\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\treturn tracks;\n\n\t}\n\n\t_getArrayFromAccessor( accessor ) {\n\n\t\tlet outputArray = accessor.array;\n\n\t\tif ( accessor.normalized ) {\n\n\t\t\tconst scale = getNormalizedComponentScale( outputArray.constructor );\n\t\t\tconst scaled = new Float32Array( outputArray.length );\n\n\t\t\tfor ( let j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t}\n\n\t\t\toutputArray = scaled;\n\n\t\t}\n\n\t\treturn outputArray;\n\n\t}\n\n\t_createCubicSplineTrackInterpolant( track ) {\n\n\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\tconst interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n\n\t\t\treturn new interpolantType( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t};\n\n\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t}\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\nfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst box = new Box3();\n\n\tif ( attributes.POSITION !== undefined ) {\n\n\t\tconst accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\tconst min = accessor.min;\n\t\tconst max = accessor.max;\n\n\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\tbox.set(\n\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] )\n\t\t\t);\n\n\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\tbox.min.multiplyScalar( boxScale );\n\t\t\t\tbox.max.multiplyScalar( boxScale );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\treturn;\n\n\t\t}\n\n\t} else {\n\n\t\treturn;\n\n\t}\n\n\tconst targets = primitiveDef.targets;\n\n\tif ( targets !== undefined ) {\n\n\t\tconst maxDisplacement = new Vector3();\n\t\tconst vector = new Vector3();\n\n\t\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tconst target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\tconst accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\tconst min = accessor.min;\n\t\t\t\tconst max = accessor.max;\n\n\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\n\n\t\t\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\t\t\tvector.multiplyScalar( boxScale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n\t\t\t\t\t// to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n\t\t\t\t\t// are used to implement key-frame animations and as such only two are active at a time - this results in very large\n\t\t\t\t\t// boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\t\tbox.expandByVector( maxDisplacement );\n\n\t}\n\n\tgeometry.boundingBox = box;\n\n\tconst sphere = new Sphere();\n\n\tbox.getCenter( sphere.center );\n\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\tgeometry.boundingSphere = sphere;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst pending = [];\n\n\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t.then( function ( accessor ) {\n\n\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t} );\n\n\t}\n\n\tfor ( const gltfAttributeName in attributes ) {\n\n\t\tconst threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t}\n\n\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\tconst accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\tgeometry.setIndex( accessor );\n\n\t\t} );\n\n\t\tpending.push( accessor );\n\n\t}\n\n\tif ( ColorManagement.workingColorSpace !== LinearSRGBColorSpace && 'COLOR_0' in attributes ) {\n\n\t\tconsole.warn( `THREE.GLTFLoader: Converting vertex colors from \"srgb-linear\" to \"${ColorManagement.workingColorSpace}\" not supported.` );\n\n\t}\n\n\tassignExtrasToUserData( geometry, primitiveDef );\n\n\tcomputeBounds( geometry, primitiveDef, parser );\n\n\treturn Promise.all( pending ).then( function () {\n\n\t\treturn primitiveDef.targets !== undefined\n\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t: geometry;\n\n\t} );\n\n}\n\nexport { GLTFLoader };\n", "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Rg0AIAEgACACaiIEa0EAIAJBAXRrTQRAIAAgASACEAYPCyAAIAFzQQNxIQMCQAJAIAAgAUkEQCADBEAgACEDDAMLIABBA3FFBEAgACEDDAILIAAhAwNAIAJFDQQgAyABLQAAOgAAIAFBAWohASACQQFrIQIgA0EBaiIDQQNxDQALDAELAkAgAw0AIARBA3EEQANAIAJFDQUgACACQQFrIgJqIgMgASACai0AADoAACADQQNxDQALCyACQQNNDQADQCAAIAJBBGsiAmogASACaigCADYCACACQQNLDQALCyACRQ0CA0AgACACQQFrIgJqIAEgAmotAAA6AAAgAg0ACwwCCyACQQNNDQADQCADIAEoAgA2AgAgAUEEaiEBIANBBGohAyACQQRrIgJBA0sNAAsLIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIAAL5QEBB38gASAAKAIIIgQgACgCBCICa0ECdU0EQCAAIAEEfyACQQAgAUECdCIAEAcgAGoFIAILNgIEDwsCQCACIAAoAgAiAmsiBkECdSIHIAFqIgNBgICAgARJBEBB/////wMgBCACayIEQQF2IgggAyADIAhJGyAEQfz///8HTxsiAwRAIANBgICAgARPDQIgA0ECdBAFIQULIAdBAnQgBWpBACABQQJ0IgEQByEEIAAgBSACIAYQCiIFIANBAnRqNgIIIAAgASAEajYCBCAAIAU2AgAgAgRAIAIQBAsPCxAIAAsQCQAL1QEBAn8jAEEQayIEJAACQAJAIAJBC0kEQCAAIgMgAC0AC0GAAXEgAnI6AAsgACAALQALQf8AcToACwwBCyACQe////8HSw0BIARBCGogACACQQtPBH8gAkEQakFwcSIDIANBAWsiAyADQQtGGwVBCgtBAWoQQyAEKAIMGiAAIAQoAggiAzYCACAAIAAoAghBgICAgHhxIAQoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgAjYCBAsgAyABIAJBAWoQNCAEQRBqJAAPCxAUAAuBAQECfwJAAkAgAkEETwRAIAAgAXJBA3ENAQNAIAAoAgAgASgCAEcNAiABQQRqIQEgAEEEaiEAIAJBBGsiAkEDSw0ACwsgAkUNAQsDQCAALQAAIgMgAS0AACIERgRAIAFBAWohASAAQQFqIQAgAkEBayICDQEMAgsLIAMgBGsPC0EACwgAQYIJEHoACwQAQQELkwEAIABBfzYCACAAQgA3AgQgAEIANwIgIABBAToAHCAAQgA3AhQgAEIANwIMIABCADcCKCAAQgA3AjAgAEIANwI4IABCADcCQCAAQgA3AkwgAEIANwJUIABCADcCXCAAIABBBGo2AkggAEIANwJoIABBAToAZCAAQgA3AnAgAEIANwJ4IABCADcCgAEgAEIANwKIAQt5AQN/IAAtAAwhAwJAIAAoAggiAUH/H0sNACAAKAIEIgJBAEwNACAAIAJBAWsiAjYCBCAAKAIAIAJqLQAAIAFBCHRyIQELIABBACADa0H/AXEiACABQQh2bCIDIAFB/wFxIgJqIAEgACADamsgACACSyIAGzYCCCAAC3oBAn8gAARAIAAoAlghASAAQQA2AlggAQRAIAEoAggiAgRAIAEgAjYCDCACEAQLIAEQBAsgACgCRCIBBEAgACABNgJIIAEQBAsgACgCQCEBIABBADYCQCABBEAgASgCACICBEAgASACNgIEIAIQBAsgARAECyAAEAQLC2kBA38CQCAAIgFBA3EEQANAIAEtAABFDQIgAUEBaiIBQQNxDQALCwNAIAEiAkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawsJAEHGCRDJAQAL1gICB38CfiMAQRBrIgQkAAJAIAEpAxAiCSABKQMIWQ0AIAAgASgCACAJp2otAAA6AAwgASABKQMQQgF8NwMQQQEgBEEMaiABEMgBRQ0AIAQoAgwiAq0iCiABKQMIIAEpAxAiCX1VDQAgAkEATA0AIAAgASgCACAJp2oiBTYCAAJAAkAgAAJ/IAUgAkEBayIGaiIHLQAAIghBP00EQCAAIAY2AgQgBy0AAEE/cQwBCwJAIAhBBnZBAWsOAgACBAsgAkECSQ0DIAAgAkECayIDNgIEIAMgBWoiAy0AAUEIdEGA/gBxIAMtAAByC0GAIGo2AggMAQsgAkEDSQ0BIAAgAkEDayICNgIEIAAgAiAFaiIALQABQQh0IAAtAAJBEHRBgID8AXFyIAAtAAByIgBBgCBqNgIIIABB/98/Sw0BCyABIAkgCnw3AxBBASEDCyAEQRBqJAAgAwtEACABBEAgACABKAIAEBYgACABKAIEEBYgASgCHCIABEAgASAANgIgIAAQBAsgASwAG0EASARAIAEoAhAQBAsgARAECwtbACABBEAgACABKAIAEBcgACABKAIEEBcgASgCHCEAIAFBADYCHCAABEAgAEEMaiAAKAIQEBcgACAAKAIEEBYgABAECyABLAAbQQBIBEAgASgCEBAECyABEAQLC20CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhAYRQ0BIAVB/wBxIAEoAgBBB3RyBSAECzYCAEEBIQMLIAML7QIBA38jAEEQayIEJAAgAEEANgIEAkACQCABRQ0AAkAgASAAKAIIIgNBBXQiBU0EQCAAIAE2AgQMAQsgBEEANgIIIARCADcDACABQQBIDQIgBCAFQf7///8DTQR/IANBBnQiAyABQR9qQWBxIgUgAyAFSxsFQf////8HCxAwIAAoAgAhAyAAIAQoAgA2AgAgBCADNgIAIAAoAgQhBSAAIAE2AgQgBCAFNgIEIAAoAgghBSAAIAQoAgg2AgggBCAFNgIIIANFDQAgAxAECyABQQV2IQMgACgCACEAIAItAAAEQCABQSBPBEAgAEH/ASADQQJ0EAcaCyABQWBxIAFGDQEgACADQQJ0aiIAIAAoAgBBf0EgIAFBH3FrdnI2AgAMAQsgAUEgTwRAIABBACADQQJ0EAcaCyABQWBxIAFGDQAgACADQQJ0aiIAIAAoAgBBf0EgIAFBH3FrdkF/c3E2AgALIARBEGokAA8LEAgAC5oEAQh/IAEgACgCCCIDIAAoAgQiBGtBAnVNBEACQCABRQ0AIAQhAyABQQdxIgYEQANAIAMgAigCADYCACADQQRqIQMgCEEBaiIIIAZHDQALCyABQQJ0IARqIQQgAUEBa0H/////A3FBB0kNAANAIAMgAigCADYCACADIAIoAgA2AgQgAyACKAIANgIIIAMgAigCADYCDCADIAIoAgA2AhAgAyACKAIANgIUIAMgAigCADYCGCADIAIoAgA2AhwgA0EgaiIDIARHDQALCyAAIAQ2AgQPCwJAIAQgACgCACIHayIKQQJ1IgYgAWoiBUGAgICABEkEQEH/////AyADIAdrIgNBAXYiBCAF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EA0iBA0BC0F/IAcgAiADSRshBAsgASAAIARBAEgiAhshASAAQQRqIAAgAhsoAgAiAA0ACyABIAZGDQACQCABKAIUIAEtABsiACAAwEEASCICGyIAIAMgACADSRsiBARAIAUgASgCECABQRBqIAIbIAQQDSIFDQELIAAgA0sNAQwCCyAFQQBODQELIAYhAQsgAQuOAQEBfyAABEAgACgCTCIBBEAgACABNgJQIAEQBAsgAEFAaygCACIBBEAgACABNgJEIAEQBAsgACgCMCIBBEAgACABNgI0IAEQBAsgACgCGCIBBEAgACABNgIcIAEQBAsgACgCDCIBBEAgACABNgIQIAEQBAsgACgCACIBBEAgACABNgIEIAEQBAsgABAECwvlAQEHfyABIAAoAggiBCAAKAIEIgJrQQN1TQRAIAAgAQR/IAJBACABQQN0IgAQByAAagUgAgs2AgQPCwJAIAIgACgCACICayIGQQN1IgcgAWoiA0GAgICAAkkEQEH/////ASAEIAJrIgRBAnYiCCADIAMgCEkbIARB+P///wdPGyIDBEAgA0GAgICAAk8NAiADQQN0EAUhBQsgB0EDdCAFakEAIAFBA3QiARAHIQQgACAFIAIgBhAKIgUgA0EDdGo2AgggACABIARqNgIEIAAgBTYCACACBEAgAhAECw8LEAgACxAJAAvHCQEJfyMAQSBrIgckAAJAAkAgACgCCEEFdCABTw0AIAFBAEgNASABQQFrQQV2QQFqIgFBAnQQBSECIAcgATYCGCAHQQA2AhQgByACNgIQIAAoAgAhASAHQQA2AgwgByABNgIIIAcgACgCBCICQR9xNgIEIAcgASACQQN2Qfz///8BcWo2AgAjAEEgayICJAAgByAHKAIEIgggBygCDCIFayAHKAIAIgkgBygCCCIDa0EDdGoiASAHKAIUIgZqIgQ2AhQgBkEAIARBAWsgBkEBa3NBIEkbRQRAIAcoAhAgBEEBa0EFdkEAIARBIU8bQQJ0akEANgIACyAHKAIQIAZBA3ZB/P///wFxaiEEAkAgBkEfcSIGIAVGBEAgAUEATA0BIAUEQCAEIAQoAgBBfyAFdEF/QSAgBWsiBiABIAYgASAGSBsiBmt2cSIIQX9zcSADKAIAIAhxcjYCACADQQRqIQMgBCAFIAZqQQN2Qfz///8BcWohBCABIAZr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ASkCADcCACADIAEoAgg2AgggA0EMaiEBIAIgBkcEQANAIANBDGsiAyACQQxrIgIpAgA3AgAgAyACKAIINgIIIAIgBkcNAAsgACgCACECCyAAIAUgBEEMbGo2AgggACABNgIEIAAgAzYCACACBEAgAhAECw8LEAgACxAJAAuUBAEDfyABIAAgAUYiAjoADAJAIAINAANAIAEoAggiAi0ADA0BAkAgAiACKAIIIgMoAgAiBEYEQAJAIAMoAgQiBEUNACAELQAMDQAMAgsCQCABIAIoAgBGBEAgAiEBDAELIAIgAigCBCIBKAIAIgA2AgQgASAABH8gACACNgIIIAIoAggFIAMLNgIIIAIoAggiACAAKAIAIAJHQQJ0aiABNgIAIAEgAjYCACACIAE2AgggASgCCCIDKAIAIQILIAFBAToADCADQQA6AAwgAyACKAIEIgA2AgAgAARAIAAgAzYCCAsgAiADKAIINgIIIAMoAggiACAAKAIAIANHQQJ0aiACNgIAIAIgAzYCBCADIAI2AggPCwJAIARFDQAgBC0ADA0ADAELAkAgASACKAIARwRAIAIhAQwBCyACIAEoAgQiADYCACABIAAEfyAAIAI2AgggAigCCAUgAws2AgggAigCCCIAIAAoAgAgAkdBAnRqIAE2AgAgASACNgIEIAIgATYCCCABKAIIIQMLIAFBAToADCADQQA6AAwgAyADKAIEIgAoAgAiATYCBCABBEAgASADNgIICyAAIAMoAgg2AgggAygCCCIBIAEoAgAgA0dBAnRqIAA2AgAgACADNgIAIAMgADYCCAwCCyAEQQxqIQEgAkEBOgAMIAMgACADRjoADCABQQE6AAAgAyIBIABHDQALCwsrAQF/AkAgACgCLEUNACAAKAIwRQ0AIAAoAjRFDQAgACgCOEEARyEBCyABC8oEAQd/IAMgAmsiB0EATARADwsCQCAAKAIIIgQgACgCBCIIayAHTgRAIAggAWsiCSAHTgRAIAghBSADIQYMAgsgCCEFIAMgAiAJaiIGRwRAIAYhBANAIAUgBC0AADoAACAFQQFqIQUgBEEBaiIEIANHDQALCyAAIAU2AgQgCUEASg0BDwsgCCAAKAIAIgprIAdqIgZBAE4EQCABIAprIQkgCUH/////ByAEIAprIgVBAXQiBCAGIAQgBksbIAVB/////wNP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An8gByAAKAIcRQ0AGiABQQFqIgUgAUECayAFQQNwGyEEIAFBAWsgAUEDcA0AGiABQQJqCyEFIARBf0YEQCAAKAIUIQEMAwsgACgCECgCACAEQQJ0aigCACIEIAAoAhQiASgCBCABKAIAIghrQQJ1Tw0CIAAoAgggCCAEQQJ0aigCAEECdGooAgAhBCAAKAIEIgEtAFRFBEAgASgCRCAEQQJ0aigCACEECyADQgA3AzAgA0IANwMoIANCADcDICABIAQgASwAGCADQSBqEBsgBUF/RgRAIAAoAhQhAQwCCyAAKAIQKAIAIAVBAnRqKAIAIgUgACgCFCIBKAIEIAEoAgAiBGtBAnVPDQEgACgCCCAEIAVBAnRqKAIAQQJ0aigCACEEIAAoAgQiAS0AVEUEQCABKAJEIARBAnRqKAIAIQQLIANCADcDGCADQgA3AxAgA0IANwMIIAEgBCABLAAYIANBCGoQGyAKIAMpAwggAykDOCIKfSIJIAMpAyggAykDQCILfSIMfn0gAykDECALfSILIAMpAyAgCn0iD358IQogDSAJIAMpAzAgAykDSCINfSIQfnwgAykDGCANfSIJIA9+fSENIA4gCyAQfn0gCSAMfnwhDiADQdAAahB0IAMoAlgiAUF/Rw0ACyAOIA5CP4ciCYUgCX0hCUL///////////8AIQsgDSANQj+HIgyFIAx9IgxC////////////AIUhDwJAIAoCfiAAKAIcRQRAIAkgD1YNAkKAgICAcCAJIAx8IgkgCiAKQj+HIguFIAt9Igt8QiCGIAkgC0L///////////8AhVYbIglCgYCAgICAgIAgUw0CIAlCPYgMAQsCQCAJIA9WDQAgCSAMfCIJIAogCkI/hyIMhSAMfSIMQv///////////wCFVg0AIAkgDHwiC0KBgICAAlQNAgsgC0IdiAsiCX8hCiANIAl/IQ0gDiAJfyEOCyACIAo+AgggAiANPgIEIAIgDj4CACADQeAAaiQADwsQDgALEA4ACxAOAAsWACABQQFNBEAgACABNgIcCyABQQJJC5ULAgV/CX4jAEHgAGsiBCQAIAAoAhAhAyAEQQE6AFwgBCABNgJYIAQgATYCVCAEIAM2AlACQAJAIAMoAhwgAUECdGooAgAiAyAAKAIUIgUoAgQgBSgCACIFa0ECdUkEQCAAKAIIIAUg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CSgCAEF+IAt3cTYCACADQQJqIQMgAkECaiICIAhHDQALCyAERQ0AIAAgASADQQJ0aigCACIBQQN2Qfz///8BcWoiACAAKAIAQX4gAXdxNgIACwttAgN/AX4CQCAAQQVLDQAgAikDECIGIAIpAwhZDQAgAigCACAGp2otAAAhBCACIAZCAXw3AxAgASAEwCIFQQBIBH8gAEEBaiABIAIQYUUNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADC7QEAQh/IAEgACgCCCIDIAAoAgAiBGtBAnVNBEACQCAAKAIEIgUgBGtBAnUiByABIAEgB0sbIghFDQAgBCEDIAgiBkEHcSIJBEADQCADIAIoAgA2AgAgBkEBayEGIANBBGohAyAKQQFqIgogCUcNAAsLIAhBCEkNAANAIAMgAigCADYCACADIAIoAgA2AgQgAyACKAIANgIIIAMgAigCADYCDCADIAIoAgA2AhAgAyACKAIANgIUIAMgAigCADYCGCADIAIoAgA2AhwgA0EgaiEDIAZBCGsiBg0ACwsgASAHSwRAIAUgASAHa0ECdGohAQNAIAUgAigCADYCACAFQQRqIgUgAUcNAAsgACABNgIEDwsgACAEIAFBAnRqNgIEDwsgBARAIAAgBDYCBCAEEAQgAEEANgIIIABCADcCAEEAIQMLAkAgAUGAgICABE8NAEH/////AyADQQF2IgQgASABIARJGyADQfz///8HTxsiA0GAgICABE8NACAAIANBAnQiAxAFIgQ2AgAgACADIARqNgIIIAIoAgAhAiAEIQMgAUEHcSIGBEADQCADIAI2AgAgA0EEaiEDIAVBAWoiBSAGRw0ACwsgAUECdCAEaiEEIAFBAWtB/////wNxQQdPBEADQCADIAI2AhwgAyACNgIYIAMgAjYCFCADIAI2AhAgAyACNgIMIAMgAjYCCCADIAI2AgQgAyACNgIAIANBIGoiAyAERw0ACwsgACAENgIEDwsQCAAL7wEBAn8gACAAKAIEIgIgAWoiAzYCBCACQQAgA0EBayACQQFrc0EgSRtFBEAgACgCACADQQFrQQV2QQAgA0EhTxtBAnRqQQA2AgALAkAgAUUNACAAKAIAIAJBA3ZB/P///wFxaiEAIAJBH3EiAgRAIAAgACgCAEF/IAJ0QX9BICACayICIAIgASABIAJLGyICa3ZxQX9zcTYCACABIAJrIQEgAEEEaiEACyABQQV2IQIgAUEgTwRAIABBACACQQJ0EAcaCyABIAFBYHFGDQAgACACQQJ0aiIAIAAoAgBBf0EgIAFBH3FrdkF/c3E2AgALC1sAIABCADcCACAAQQA2AjggAEIANwIwIABCADcCKCAAQgA3AiAgAEIANwIYIABCADcCECAAQgA3AgggAEFAa0IANwIAIABCADcCSCAAQgA3AlAgACAANgI8IAALBABBAgspACABBEAgACABKAIAEGYgACABKAIEEGYgAUEUaiABKAIYEDkgARAECwvTAQICfwJ+AkAgACgCQA0AQSAQBSICQgA3AxAgAkEANgIIIAJCADcDACACQgA3AxggACgCQCEDIAAgAjYCQCADRQ0AIAMoAgAiAgRAIAMgAjYCBCACEAQLIAMQBAsgACgCQEEAIAAoAhxBAWsiAkEKTQR/IAJBAnRBpM8AaigCAAVBfwsgAC0AGGysIgQgAa1+EKoBIgMEQCAAIAAoAkAiAjYCACAAIAIpAxA3AwggAikDGCEFIABCADcDMCAAIAQ3AyggACAFNwMQIAAgATYCUAsgAwtwACAAIAEpAwA3AwAgACABKQM4NwM4IAAgASkDMDcDMCAAIAEpAyg3AyggACABKQMgNwMgIAAgASkDGDcDGCAAIAEpAxA3AxAgACABKQMINwMIIABBADYCWCAAQgA3A0AgAEIANwNIIABCADcATSAACzMAIABBADYCACAAIAE2AjggAEIANwMwIAAgBTcDKCAAIAQ6ACAgACADNgIcIAAgAjoAGAsQACAAKAIEIAAoAgBrQQJ1CwcAIAAoAlALCwAgAARAIAAQBAsLxwEBBH8CQCAAIAEQLSIBIABBBGpGDQAgAUEcaiIAKAIAIAAgASwAJ0EASBshAQNAIAEiAEEBaiEBIAAsAAAiAkEgRiACQQlrQQVJcg0ACwJAAkACQCAALAAAIgJBK2sOAwECAAILQQEhBAsgASwAACECIAEhAAsgAkEwa0EKSQRAA0AgA0EKbCAALAAAa0EwaiEDIAAsAAEhASAAQQFqIQAgAUEwa0EKSQ0ACwsgA0EAIANrIAQbIgBBf0YNACAAQQBHIQULIAULUQEBfgJ/IAEEQEEAQQEgAiAAEKkBRQ0BGgsgAEEBOgAkIABBADYCICAAIAAoAgAgACkDECIDp2oiAjYCGCAAIAIgACkDCCADfadqNgIcQQELC4gBAQN/IAAEQCAAKAIYIgMEQCAAKAIcIgIgAyIBRwRAA0AgAkEEayICKAIAIQEgAkEANgIAIAEEQCABQQxqIAEoAhAQFyABIAEoAgQQFiABEAQLIAIgA0cNAAsgACgCGCEBCyAAIAM2AhwgARAECyAAQQxqIAAoAhAQFyAAIAAoAgQQFiAAEAQLC7ELAgJ/An4jAEEwayIDJAAgA0H2zgApAQA3ASYgA0HwzgApAwA3AyAgA0HozgApAwA3AxggA0HgzgApAwA3AxACQAJAIAEpAwggASkDECIFQgV8UwRAIANBEGoQEyIEQfD///8HTw0CAkACQCAEQQtPBEAgBEEPckEBaiIBEAUhAiADIAFBgICAgHhyNgIIIAMgAjYCACADIAQ2AgQgAiAEaiEBDAELIAMgBDoACyADIARqIQEgAyECIARFDQELIAIgA0EQaiAEEAYaCyABQQA6AAAgAEF+NgIAIABBBGohACADLAALQQBOBEAgACADKQMANwIAIAAgAygCCDYCCAwCCyAAIAMoAgAgAygCBBAMIAMsAAtBAE4NASADKAIAEAQMAQsgAiABKAIAIAWnaiIEKAAANgAAIAIgBC0ABDoABCABIAEpAxBCBXwiBTcDECACQeIJQQUQDQRAQSAQBSIBQQA6ABEgAUHWCy0AADoAECABQc4LKQAANwAIIAFBxgspAAA3AAAgAEF/NgIAIABBBGogAUEREAwgARAEDAELIAUgASkDCFkEQCADQRBqEBMiBEHw////B08NAgJAAkAgBEELTwRAIARBD3JBAWoiARAFIQIgAyABQYCAgIB4cjYCCCADIAI2AgAgAyAENgIEIAIgBGohAQwBCyADIAQ6AAsgAyAEaiEBIAMhAiAERQ0BCyACIANBEGogBBAGGgsgAUEAOgAAIABBfjYCACAAQQRqIQAgAywAC0EATgRAIAAgAykDADcCACAAIAMoAgg2AggMAgsgACADKAIAIAMoAgQQDCADLAALQQBODQEgAygCABAEDAELIAIgASgCACAFp2otAAA6AAUgASABKQMQQgF8IgU3AxAgBSABKQMIWQRAIANBEGoQEyIEQfD///8HTw0CAkACQCAEQQtPBEAgBEEPckEBaiIBEAUhAiADIAFBgICAgHhyNgIIIAMgAjYCACADIAQ2AgQgAiAEaiEBDAELIAMgBDoACyADIARqIQEgAyECIARFDQELIAIgA0EQaiAEEAYaCyABQQA6AAAgAEF+NgIAIABBBGohACADLAALQQBOBEAgACADKQMANwIAIAAgAygCCDYCCAwCCyAAIAMoAgAgAygCBBAMIAMsAAtBAE4NASADKAIAEAQMAQsgAiABKAIAIAWnai0AADoABiABIAEpAxBCAXwiBTcDECAFIAEpAwhZBEAgA0EQahATIgRB8P///wdPDQICQAJAIARBC08EQCAEQQ9yQQFqIgEQBSECIAMgAUGAgICAeHI2AgggAyACNgIAIAMgBDYCBCACIARqIQEMAQsgAyAEOgALIAMgBGohASADIQIgBEUNAQsgAiADQRBqIAQQBhoLIAFBADoAACAAQX42AgAgAEEEaiEAIAMsAAtBAE4EQCAAIAMpAwA3AgAgACADKAIINgIIDAILIAAgAygCACADKAIEEAwgAywAC0EATg0BIAMoAgAQBAwBCyACIAEoAgAgBadqLQAAOgAHIAEgASkDEEIBfCIFNwMQIAUgASkDCFkEQCADIANBEGoQTyEBIABBfjYCACAAQQRqIQAgASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggMAgsgACABKAIAIAEoAgQQDCABLAALQQBODQEgASgCABAEDAELIAIgASgCACAFp2otAAA6AAggASABKQMQIgVCAXwiBjcDECABKQMIIAVCA3xTBEAgAyADQRBqEE8hASAAQX42AgAgAEEEaiEAIAEsAAtBAE4EQCAAIAEpAgA3AgAgACABKAIINgIIDAILIAAgASgCACABKAIEEAwgASwAC0EATg0BIAEoAgAQBAwBCyACIAEoAgAgBqdqLwAAOwEKIAEgASkDEEICfDcDECAAQgA3AgggAEIANwIACyADQTBqJAAPCxAUAAvvBQEGf0F/IQUCf0F/IAFBf0YNABogAUEBaiICIAFBAmsgAkEDcBshBSABQQFrIAFBA3ANABogAUECagshBgJAAn8CQAJAAkACQCAAKAKoAQ4IAAAFAgUBBQMFC0F/IQEgACgClAEhBEF/IQJBASEDIAAoApwBIgcgBUF/RwR/IAQoAgAgBUECdGooAgAFQX8LQQJ0aiICIAIoAgBBAWo2AgAgByAG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IAIgAygCBCIENgIAIAQEQCAEIAI2AggLIAMgAigCCDYCCCACKAIIIgQgBCgCACACR0ECdGogAzYCACADIAI2AgQgAiADNgIIIAIhBQsgAyADKAIIIgItAAw6AAwgAkEBOgAMIAVBAToADCACIAIoAgQiAygCACIENgIEIAQEQCAEIAI2AggLIAMgAigCCDYCCCACKAIIIgQgBCgCACACR0ECdGogAzYCACADIAI2AgAgAiADNgIIDAQLIAVFBEAgAkEBOgAMIANBADoADCADIAIoAgQiBTYCACAFBEAgBSADNgIICyACIAMoAgg2AgggAygCCCIFIAUoAgAgA0dBAnRqIAI2AgAgAiADNgIEIAMgAjYCCCACIAQgAyAERhshBCADKAIAIQILAkACQCACKAIAIgVFDQAgBS0ADA0AIAIhAwwBCwJAIAIoAgQiAwRAIAMtAAxFDQELIAJBADoADCACKAIIIgItAAxBACACIARHGw0CIAJBAToADAwFCyAFBEAgBS0ADEUEQCACIQMMAgsgAigCBCEDCyADQQE6AAwgAkEAOgAMIAIgAygCACIENgIEIAQEQCAEIAI2AggLIAMgAigCCDYCCCACKAIIIgQgBCgCACACR0ECdGogAzYCACADIAI2AgAgAiADNgIIIAIhBQsgAyADKAIIIgItAAw6AAwgAkEBOgAMIAVBAToADCACIAIoAgAiAygCBCIENgIAIAQEQCAEIAI2AggLIAMgAigCCDYCCCACKAIIIgQgBCgCACACR0ECdGogAzYCACADIAI2AgQgAiADNgIIDAMLIAIoAggiAyADKAIAIAJGQQJ0aigCACECDAALAAsgBUEBOgAMCyAHKAIcIgIEQCAHIAI2AiAgAhAECyAHLAAbQQBIBEAgBygCEBAECyAHEAQLIAlBADYCCCAJQgA3AwAgBigCBCICIAYoAgAiA2shBEEAIQUCQAJAIAIgA0cEQCAEQQBIDQEgCSAEEAUiBUEAIAQQByICIARqIgc2AgggCSAHNgIEIAkgAjYCACADIQILIAUgAiAEEAYaAkAgBiwAG0EATgRAIAkgBigCGDYCGCAJIAYpAhA3AxAMAQsgCUEQaiAGKAIQIAYoAhQQDAsgCUEcaiAJEJUBIAlBEGoiBCECIAkCfwJAAkAgCCgCBCIDRQRAIAhBBGoiBSECDAELIAIo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ACABQQJ0aigCAAsQACAAKAIEIAAoAgBrQQF1Cw0AIAAoAgQgACgCAGsLEAAgACgCDCAAKAIIa0ECdQsRACAAIAEgACgCACgCDBEBAAttAQJ/QSgQBSICQX82AgAgAkEIaiIDQgA3AxAgA0EANgIIIANCADcDACADQgA3AxggACACIAAoAgAoAhARBAAgASgCWCEAIAEgAjYCWCAABEAgACgCCCIBBEAgACABNgIMIAEQBAsgABAEC0EBCwcAIAAoAgAL2AEBBn8gASAAKAIIIgMgACgCBCICa0EBdU0EQCAAIAEEfyACQQAgAUEBdCIAEAcgAGoFIAILNgIEDwsCQCACIAAoAgAiAmsiBkEBdSIHIAFqIgRBAE4EQEH/////ByADIAJrIgMgBCADIARLGyADQf7///8HTxsiBARAIARBAEgNAiAEQQF0EAUhBQsgBSAHQQF0akEAIAFBAXQiARAHIQMgACAFIAIgBhAKIgUgBEEBdGo2AgggACABIANqNgIEIAAgBTYCACACBEAgAhAECw8LEAgACxAJAAt4AgF+An8CQCAAQQpLDQAgAikDECIDIAIpAwhZDQAgAigCACADp2osAAAhBSACIANCAXw3AxAgBa0hAyABAn4gBUEASARAIABBAWogASACEKkBRQ0CIANC/wCDIAEpAwBCB4aEDAELIANC/wGDCzcDAEEBIQQLIAQL0gMBBn8CfwJAAkAgAUUEQEEAIAJCAFMNAxogACgCBCIHIAAoAgAiA2siBCACpyIBSQRAIAEgBGsiBSAAKAIIIgYgB2tNBEAgACAHQQAgBRAHIAVqNgIEDAMLIAFBAEgNA0H/////ByAGIANrIgdBAXQiBiABIAEgBkkbIAdB/////wNPGyIHEAUiBiAEakEAIAUQBxogACAGIAMgBBAKIgQgB2o2AgggACABIARqNgIEIAAgBDYCACADRQ0CIAMQBAwCCyABIARPDQEgACABIANqNgIEDAELQQAgAkIAUw0CGgJAIAAoAgQiBiAAKAIAIgRrIgWtIAJZDQAgAqciAyAFSwRAIAMgBWsiByAAKAIIIgggBmtNBEAgACAGQQAgBxAHIAdqNgIEDAILIANBAEgNA0H/////ByAIIARrIgZBAXQiCCADIAMgCEkbIAZB/////wNPGyIGEAUiCCAFakEAIAcQBxogACAIIAQg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CyAAKAJsIgEEQCABEAQLIAAoAmAiAQRAIAEQBAsgACgCSCIBBEAgACABNgJMIAEQBAsgACgCPCIBBEAgARAECyAAKAIwIgEEQCAAIAE2AjQgARAECyAAKAIkIgEEQCAAIAE2AiggARAECyAAKAIYIgEEQCAAIAE2AhwgARAECyAAKAIMIgEEQCAAIAE2AhAgARAECyAAKAIIIQEgAEEANgIIIAEEQCABEC4LIAALmgEBBH8gACgCACIEBEAgBCEDIAQgACgCBCIBRwRAA0AgAUGQAWsiAygChAEiAgRAIAFBCGsgAjYCACACEAQLIAFBHGsoAgAiAgRAIAFBGGsgAjYCACACEAQLIAFBKGsoAgAiAgRAIAFBJGsgAjYCACACEAQLIAFBjAFrEFEgAyIBIARHDQALIAAoAgAhAwsgACAENgIEIAMQBAsLpQMBBH8gAEHcwAA2AgAgACgC8AIhAyAAQQA2AvACIAMEQCADQQRrIgQoAgAiAQRAIAMgAUEEdGohAgNAIAJBEGsiAiADRw0ACwsgBBAECyAAQdgBahCxASAAKALEASIBBEAgACABNgLIASABEAQLIAAoArgBIgEEQCAAIAE2ArwBIAEQBAsgACgCrAEiAQRAIAAgATYCsAEgARAECyAAKAKgASIBBEAgACABNgKkASABEAQLIAAoApABIgIEQANAIAIoAgAhASACEAQgASICDQALCyAAKAKIASEBIABBADYCiAEgAQRAIAEQBAsgACgCeCIBBEAgARAECyAAKAJsIgEEQCABEAQLIAAoAmAiAQRAIAEQBAsgACgCSCIBBEAgACABNgJMIAEQBAsgACgCPCIBBEAgARAECyAAKAIwIgEEQCAAIAE2AjQgARAECyAAKAIkIgEEQCAAIAE2AiggARAECyAAKAIYIgEEQCAAIAE2AhwgARAECyAAKAIMIgEEQCAAIAE2AhAgARAECyAAKAIIIQEgAEEANgIIIAEEQCABEC4LIAALBwAgACgCCAuyAQEDfwJAIAAoAgQiAiAAKAIIIgRBBXRGBEAgAkEBakEASA0BQf////8HIQMgACACQf7///8DTQR/IARBBnQiAyACQWBxQSBqIgIgAiADSRsFQf////8HCxAwIAAoAgQhAgsgACACQQFqNgIEQQEgAnQhAyAAKAIAIAJBA3ZB/P///wFxaiEAIAEt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ACgCBDYCBCACIAAoAgg2AgggAiAAKAIMNgIMIABBADYCDCAAQgA3AgQgAiAAKAIQNgIQIAIgACgCFDYCFCACIAAoAhg2AhggAEEANgIYIABCADcCECAALQAcIQUgAkEANgIoIAJCADcCICACIAU6ABwgAiAAKAIgNgIgIAIgACgCJDYCJCACIAAoAig2AiggAEEANgIoIABCADcCICACQQA2AjQgAkIANwIsIAIgACgCLDYCLCACIAAoAjA2AjAgAiAAKAI0NgI0IABBADYCNCAAQgA3AiwgAkFAayIFQQA2AgAgAkIANwI4IAIgACgCODYCOCACIAAoAjw2AjwgBSAAQUBrIgUoAgA2AgAgBUEANgIAIABCADcCOCACIAAoAkQ2AkQgACgCSCEFIAJBADYCVCACQgA3AkwgAiAFNgJIIAIgACgCTDYCTCACIAAoAlA2AlAgAiAAKAJUNgJUIABBADYCVCAAQgA3AkwgAkEANgJgIAJCADcCWCACIAAoAlg2AlggAiAAKAJcNgJcIAIgACgCYDYCYCAAQQA2AmAgAEIANwJYIAAtAGQhBSACQQA2AnAgAkIANwJoIAIgBToAZCACIAAoAmg2AmggAiAAKAJsNgJsIAIgACgCcDYCcCAAQQA2AnAgAEIANwJoIAJBADYCfCACQgA3AnQgAiAAKAJ0NgJ0IAIgACgCeDYCeCACIAAoAnw2AnwgAEEANgJ8IABCADcCdCAAKAKAASEFIAJBADYCjAEgAkIANwKEASACIAU2AoABIAIgACgChAE2AoQBIAIgACgCiAE2AogBIAIgACgCjAE2AowBIABBADYCjAEgAEIANwKEASAEIAZHDQALIAEgAzYCCCABKAIEIQAgASAHNgIEIAEoAgAhBCABIAI2AgAgACAERg0DA0AgAEGQAWsiASgChAEiAgRAIABBCGsgAjYCACACEAQLIABBHGsoAgAiAgRAIABBGGsgAjYCACACEAQLIABBKGsoAgAiAgRAIABBJGsgAjYCACACEAQLIABBjAFrEFEgASIAIARHDQALDAMLEAgACxAJAAsgASADNgIIIAEgBzYCBCABIAI2AgALIAQEQCAEEAQLCw8LIAEgA0kEQCAGIAFBkAFsaiIEIAJHBEADQCACQZABayIBKAKEASIDBEAgAkEIayADNgIAIAMQBAsgAkEcaygC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AkEANgIEIAJBADYCTCACIAQ2AkQgAkGwwwA2AgggAkIANwIMIAJCADcCFCACQgA3AhwgAkIANwIkIAJCADcCLCACQQA2AjQgAiAFIANBkAFsaiIDQegAaiIFNgJIIAJBQGtBADYCACACQgA3AjggCCAENgIYIAhCADcCRCAIQgA3AjwgCEIANwI0IAhCADcCLCAIQgA3AlQgCEIANwJMIAggAjYCHCAIIAgpAxg3AwggCCAFNgIUIAggA0EEaiIENgIQIAhCADcCJCAIQbDDADYCICAIIAgpAxA3AwAgCEEgaiIDIAQgCBC9ASACQQhqIgQgAxByIAMgBEcEQCACQThqIAMoAjAgAygCNBA3CyADELwBGgwCCyMAQUBqIgIkACAAKAIEKAIsIQZB0AAQBSIDQbDJADYCACADQQA2AgQgA0EANgJMIAMgBDYCSCADIAY2AkQgA0HUygA2AgggA0IANwIMIANCADcCFCADQgA3AhwgA0IANwIkIANCADcCLCADQQA2AjQgA0FAa0EANgIAIANBOGoiCkIANwIAIAAoAgghBSACQgA3AyggAkIANwMgIAJBGGoiB0IANwMAIAJCADcDECACQQA2AjggAkIANwMIIAJCADcDMCACQdTKADYCACACIAU2AgQgBSgCACEJIAUoAgQhCyACQQA6AD8gByALIAlrQQJ1QQNuIAJBP2oiBxAZIAIoAgQiCSgCHCELIAkoAhghCSACQQA6AD8gAkEkaiALIAlrQQJ1IAcQGSACIAM2AhQgAiAGNgIQIAIgBDYCDCACIAU2AgggA0EIaiACEHIgCiACKAIwIAIoAjQQNyACQdTKADYCACACKAIwIgQEQCACIAQ2AjQgBBAECyACQZzJADYCACACKAIkIgQEQCAEEAQLIAIoAhgiBARAIAQQBAsgAkFAayQAIAMLIgJFDQELQcAAEAUgAhCAASECIAAoAgQhAyACIQACQAJAIAEiAkEATgRAIANBCGohBgJAIAMoAgwiASADKAIIIgprQQJ1IgQgAkoNACACQQFqIQUgAiAETwRAIAYgBSAEaxBaDAELIAQgBU0NACAKIAVBAnRqIgUgAUcEQANAIAFBBGsiASgCACEEIAFBADYCACAEBEAgBCAEKAIAKAIEEQIACyABIAVHDQALCyADIAU2AgwLIAYoAgAgAkECdGoiAygC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CikCADcCACAIIAooAgg2AgggBEEANgIQDAELIAggBSgCBCAFKAIIEAwgBSwADyEIIARBADYCECAIQQBODQAgBSgCBBAECyAGEAQLIAVBEGokAAJAIAQoAgAiBQRAIAAgBTYCACAAQQRqIQAgBCwAD0EATgRAIAAgBEEEciIBKQIANwIAIAAgASgCCDYCCAwCCyAAIAQoAgQgBCgCCBAMDAELIAQoAhAhBSAEQQA2AhAgBSADNgIsIwBBIGsiBiQAIAUgAjYCICAFIAE2AiggBSADNgIEIAAgAiAGQRBqEHACQCAAKAIADQAgACwAD0EASARAIAAoAgQQBAsgBi0AFyIBIAUgBSgCACgCCBEAAEcEQEHAABAFIgFBADoAMiABQZgKLwAAOwAwIAFBkAopAAA3ACggAUGICikAADcAICABQYAKKQAANwAYIAFB+AkpAAA3ABAgAUHwCSkAADcACCABQegJKQAANwAAIABBfzYCACAAQQRqIAFBMhAMIAEQBAwBCyAFIAYtABUiAjoAJCAFIAYtABYiAzoAJSACQQJHBEBBIBAFIgFBADoAGiABQZMLLwAAOwAYIAFBiwspAAA3ABAgAUGDCykAADcACCABQfsKKQAANwAAIABBezYCACAAQQRqIAFBGhAMIAEQBAwBCyADQQJBAyABGyIBRwRAQSAQBSIBQQA6ABogAUH4Ci8AADsAGCABQfAKKQAANwAQIAFB6AopAAA3AAggAUHgCikAADcAACAAQXs2AgAgAEEEaiABQRoQDCABEAQMAQsgBSgCICABQYAEcjsBJgJAIAYuARpBAE4NACMAQRBrIgMkAEEkEAUiAUIANwIEIAFCADcCGCABQRBqIgJCADcCACABIAFBBGo2AgAgAUEANgIgIAEgAjYCDCADQQA2AgAgBSgCICECIwBBEGsiCiQAAn9BACABRQ0AGiADIAI2AgAgCkEANgIMQQBBASAKQQxqIAIQNkUNABogCigCDCIOBEADQAJAQQEgCkEIaiADKAIAEDYEQEEcEAUiAkIANwIEIAJBEGoiCEIANwIAIAIgAkEEajYCACACIAg2AgwgAiAKKAIINgIYIAMgAhCXAQ0BIAJBDGogAigCEBAXIAIgAigCBBAWIAIQBAtBAAwDCyMAQRBrIggkACAIIAI2AggCQCACRQ0AAkAgASgCHCIHIAEoAiBJBEAgCEEANgIIIAcgAjYCACABIAdBBGo2AhwMAQtBACECAkACQAJAIAEoAhwgASgCGCIJa0ECdSIMQQFqIgdBgICAgARJBEBB/////wMgASgCICAJayIJQQF2IgsgByAHIAtJGyAJQfz///8HTxsiCQRAIAlBgICAgARPDQIgCUECdBAFIQILIAgoAgghCyAIQQA2AgggAiAMQQJ0aiIHIAs2AgAgAiAJQQJ0aiEJIAdBBGohDCABKAIcIgIgASgCGCILRg0CA0AgAkEEayICKAIAIQ8gAkEANgIAIAdBBGsiByAPNgIAIAIgC0cNAAsgASAJNgIgIAEoAhwhCSABIAw2AhwgASgCGCECIAEgBzYCGCACIAlGDQMDQCAJQQRrIgkoAgAhByAJQQA2AgAgBwRAIAdBDGogBygCEBAXIAcgBygCBBAWIAcQBAsgAiAJRw0ACwwDCxAIAAsQCQALIAEgCTYCICABIAw2AhwgASAHNgIYCyACBEAgAhAECwsgCCgCCCECIAhBADYCCCACRQ0AIAJBDGogAigCEBAXIAIgAigCBBAWIAIQBAsgCEEQaiQAIA1BAWoiDSAORw0ACwsgAyABEJcBCyECIApBEGokAAJAIAIEQCAFKAIEIggoAgQhAiAIIAE2AgQgAgRAIAIQbwsgAEIANwIAIABCADcCCAwBC0EgEAUiAkEAOgAaIAJBjQwvAAA7ABggAkGFDCkAADcAECACQf0LKQAANwAIIAJB9QspAAA3AAAgAEF/NgIAIABBBGogAkEaEAwgAhAEIANBADYCCCABEG8LIANBEGokACAAKAIADQEgACwAD0EATg0AIAAoAgQQBAsgBSAFKAIAKAIMEQAARQRAQTAQBSIBQQA6ACEgAUHeCi0AADoAICABQdYKKQAANwAYIAFBzgopAAA3ABAgAUHGCikAADcACCABQb4KKQAANwAAIABBfzYCACAAQQRqIAFBIRAMIAEQBAwBCyAFIAUoAgAoAhQRAABFBEAgBkGQDBBPIQEgAEF/NgIAIABBBGohAiABLAALQQBOBEAgAiABKQIANwIAIAIgASgCCDYCCAwCCyACIAEoAgAgASgCBBAMIAEsAAtBAE4NASABKAIAEAQMAQsgBSAFKAIAKAIYEQAARQRAIAZBmwoQTyEBIABBfzYCACAAQQRqIQIgASwAC0EATgRAIAIgASkCADcCACACIAEoAgg2AggMAgsgAiABKAIAIAEoAgQQDCABLAALQQBODQEgASgCABAEDAELIABCADcCACAAQgA3AggLIAZBIGokACAAKAIARQRAIAAsAA9BAEgEQCAAKAIEEAQLIABCADcCACAAQgA3AggLIAUgBSgCACgCBBECAAsgBCgCECEAIARBADYCECAABEAgACAAKAIAKAIEEQIACyAELAAPQQBODQAgBCgCBBAECyAEQdAAaiQAC24CA38BfgJAIABBBUsNACACKQMQIgYgAikDCFkNACACKAIAIAanai0AACEEIAIgBkIBfDcDECABIATAIgVBAEgEfyAAQQFqIAEgAhDIAUUNASAFQf8AcSABKAIAQQd0cgUgBAs2AgBBASEDCyADCx8AQQgQXCAAEIkBIgBB/NkANgIAIABBnNoAQQEQAQALqgECAn8DfgJAIAEpAwgiBSABKQMQIgRCBHwiBlMNACABKAIAIASnaigAACECIAEgBjcDECAFIARCCHwiBFMNACABIAQ3AxAgAkEBcUUNACACZ0EfcyICQQFrQRxLDQAgACACQQFqNgIIIABBfiACdCICQX5zIgM2AhAgACACQX9zNgIMIAAgA0EBdTYCGCAAQwAAAEAgA7KVOAIUIABB4ABqIAEQFSEDCyADCyUBAX8CQCABKAI4DQAgAS0AGEEDRw0AIAAgATYCMEEBIQILIAILQwEBfwJAIAAoAjBFDQAgACgCNEUNACAAKAIcRQ0AIAAoAiBFDQAgACgCJEUNACAAKAIoRQ0AIAAoAkxBf0chAQsgAQsKACAAIAEgAhB/CwQAQQYLBABBAgu/AQIDfwN+AkAgASkDCCIHIAEpAxAiBUIEfCIGUw0AIAEoAgAiAiAFp2ooAAAhAyABIAY3AxAgByAFQgh8IgVTDQAgAiAGp2ooAAAhAiABIAU3AxAgAiADSA0AIAAgAjYCECAAIAM2AgwgAqwgA6x9IgVC/v///wdWDQAgACAFp0EBaiIDNgIUIAAgA0EBdiICNgIYIABBACACazYCHCADQQFxRQRAIAAgAkEBazYCGAsgAEHwAGogARAVIQQLIAQLKAEBfwJAIAEoAjgNACABLQAYQQNHDQAgAEFAayABNgIAQQEhAgsgAgtGAQF/AkAgAEFAaygCAEUNACAAKAJERQ0AIAAoAixFDQAgACgCMEUNACAAKAI0RQ0AIAAoAjhFDQAgACgCXEF/RyEBCyABC44DAgh/A34jAEEQayIFJAACQCABKQMQIgpCBHwiCyABKQMIVQ0AIAEoAgAgCqdqKAAAIQIgASALNwMQIAJBAEgNACAAQcwAaiACECIgBUIANwIAIAVCADcABQJAIAUiCCABEBVFDQAgAgRAQQEhBgNAQQEgBHQhByAIEBEhCSAAKAJMIARBA3ZB/P///wFxaiEDAn8gBiAJcyIGQQFxRQRAIAMoAgAgB3IMAQsgAygCACAHQX9zcQshByAGQQFzIQYgAyAHNgIAIARBAWoiBCACRw0ACwtBACEEIAEpAwgiDCABKQMQIgpCBHwiC1MNACABKAIAIgMgCqdqKAAAIQIgASALNwMQIAwgCkIIfCIKUw0AIAMgC6dqKAAAIQMgASAKNwMQIAIgA0oNACAAIAM2AhAgACACNgIMIAOsIAKsfSIKQv7///8HVg0AQQEhBCAAIAqnQQFqIgE2AhQgACABQQF2IgI2AhggAEEAIAJrNgIcIAFBAXENACAAIAJBAWs2AhgLCyAFQRBqJAAgBAs7AQF/IABBwBk2AgAgACgCTCIBBEAgARAECyAAQZAXNgIAIAAoAiAiAQRAIAAgATYCJCABEAQLIAAQBAs5AQF/IABBwBk2AgAgACgCTCIBBEAgARAECyAAQZAXNgIAIAAoAiAiAQRAIAAgATYCJCABEAQLIAALhBcBIX8jAEFAaiIHJAAgACAENgIIAn8CQCAEIAAoAiQgAEEgaiIXKAIAIgVrQQJ1IgNLBEAgFyAEIANrEAsgB0IANwM4IAdCADcDMCAHQgA3AyggB0IANwMgIAdCADcDGCAHQgA3AxAgB0EANgIADAELIAMgBEsEQCAAIAUgBEECdGo2AiQLIAdCADcDOCAHQgA3AzAgB0IANwMoIAdCADcDICAHQgA3AxggB0IANwMQIAdBADYCAEEAIARFDQEaCyAHQRBqIAQgBxAaIAcoAhwhBiAHKAIgCyEDIAdBADYCAAJAIAQgAyAGa0ECdSIDTQRAIAMgBE0NASAHIAYgBEECdGo2AiAMAQsgB0EQakEMciAEIANrIAcQGgsgB0EANgIAAkAgBCAHKAIsIAcoAigiBWtBAnUiA00EQCADIARNDQEgByAFIARBAnRqNgIsDAELIAdBKGogBCADayAHEBoLIAdBADYCAAJAIAQgBygCOCAHKAI0IgVrQQJ1IgNNBEAgAyAETQ0BIAcgBSAEQQJ0ajYCOAwBCyAHQTRqIAQgA2sgBxAaCwJAIAAoAghBAEwNACAHKAIQIQggACgCICEJQQAhBgNAAkAgCCAGQQJ0IgNqKAIAIgUgACgCECILSgRAIAMgCWogCzYCAAwBCyADIAlqIQMgACgCDCILIAVKBEAgAyALNgIADAELIAMgBTYCAAsgBkEBaiIGIAAoAggiA0gNAAsgA0EATA0AQQAhAwNAIAIgA0ECdCIFaiIIIAEgBWooAgAgBSAJaigCAGoiBTYCAAJAIAgCfyAAKAIQIAVIBEAgBSAAKAIUawwBCyAFIAAoAgxODQEgACgCFCAFags2AgALIANBAWoiAyAAKAIISA0ACwsgACgCNCEeIAAoAjAhE0EQEAUiGEIANwIAIBhCADcCCCAHQQA2AgggB0IANwMAAkAgBARAIARBgICAgARPDQEgByAEQQJ0IgMQBSIRNgIAIAcgAyARajYCCCARQQAgAxAHGgtBASEZAkAgACgCOCIDKAIEIAMoAgAiH2siA0EISA0AQQIgA0ECdSIVIBVBAkwbISBBASAVIBVBAU0bISEgBEF+cSEaIARBAXEhGyAEQXxxISIgBEEDcSEcIARBAWshHSAEQQJ0ISMgBEEESSEkQQAhGUEBIQsDQAJAAkACQAJAIAsgIUcEQAJ/AkAgHyALQQJ0aigCACIFQX9GDQBBASENQQEgBUEBayAFQQJqIgMgBUEDcCIIGyIWdCEUIBMoAgAiDCAWQQN2Qfz///8BcWohJUEAIQkgCEEARyADQX9HciEmIAUhAwJAA0ACQCAMIANBA3ZB/P///wFxaigCACADdkEBcQ0AIBMoAkAoAgwgA0ECdGooAgAiCEF/Rg0AIAhBAWoiDkEDcCEPIB4oAgAiBiATKAIcIgogCEECdGooAgBBAnRqKAIAIhIgC04NACAGIAogDiAIQQJrIA8bQQJ0aigCAEECdGooAgAiDiALTg0AIAYgCkF/QQIgCEEDcBsgCGpBAnRqKAIAQQJ0aigCACIGIAtODQACQCAERQ0AIAdBEGogCUEMbGooAgAhCCAEIAZsIQogBCAObCEOIAQgEmwhD0EAIQZBACEQIB0EQANAIAggBkECdGogAiAGIApqQQJ0aigCACACIAYgDmpBAnRqKAIAaiACIAYgD2pBAnRqKAIAazYCACAIIAZBAXIiEkECdGogAiAKIBJqQQJ0aigCACACIA4gEmpBAnRqKAIAaiACIA8gEmpBAnRqKAIAazYCACAGQQJqIQYgEEECaiIQIBpHDQALCyAbRQ0AIAggBkECdGogAiAGIApqQQJ0aigCACACIAYgDmpBAnRqKAIAaiACIAYgD2pBAnRqKAIAazYCAAtBBCEIIAlBAWoiCUEERg0CCwJAIA1BAXEEQCADQQJrIQYgA0EBaiEIQX8hAyAIIAYgCEEDcBsiCEF/Rg0BIAwgCEEDdkH8////AXFqKAIAIAh2QQFxDQEgEygCQCgCDCAIQQJ0aigCACIIQX9GDQEgCEEBaiIDIAhBAmsgA0EDcBshAwwBCwJAIANBA3AEQCADQQFrIQYMAQsgA0ECaiEGQX8hAyAGQX9GDQELQX8hAyAMIAZBA3ZB/P///wFxaigCACAGdkEBcQ0AIBMoAkAoAgwgBkECdGooAgAiCEF/Rg0AIAhBA3AEQCAIQQFrIQMMAQsgCEECaiEDCwJAIAMgBUYNACANIANBf0ZxBEAgJkUNASAlKAIAIBRxDQEgEygCQCgCDCAWQQJ0aigCACIDQX9GDQFBACENIANBAWsgA0ECaiADQQNwGyEDCyADQX9HDQELCyAJIghBAEwNAQsgBARAIBFBACAjEAcaCyAYIAhBAWsiA0ECdGohDiAAIANBDGxqIgMhEiADQUBrKAIAIRZBACENIAcoAgAhA0EAIQUDQCAOIA4oAgAiCUEBajYCACAJIBZPDQkCQCASKAI8IAlBA3ZB/P///wFxaigCACAJdkEBcQ0AIAVBAWohBSAERQ0AIAdBEGogDUEMbGooAgAhDEEAIQlBACEGQQAhDyAkRQRAA0AgAyAGQQJ0IgpqIhAgCiAMaigCACAQKAIAajYCACADIApBBHIiEGoiFCAMIBBqKAIAIBQoAgBqNgIAIAMgCkEIciIQaiIUIAwgEGooAgAgFCgCAGo2AgAgAyAKQQxyIgpqIhAgCiAMaigCACAQKAIAajYCACAGQQRqIQYgD0EEaiIPICJHDQALCyAcRQ0AA0AgAyAGQQJ0IgpqIg8gCiAMaigCACAPKAIAajYCACAGQQFqIQYgCUEBaiIJIBxHDQALCyANQQFqIg0gCEcNAAsgBCALbCIJIAVFDQEaIARFDQVBACEGQQAhAyAdDQMMBAsgBCALbAshAyAAKAIIQQBMDQQgAiADQQJ0IghqIQ0gAiALQQFrIARsQQJ0aiEMIBcoAgAhCUEAIQYDQAJAIAwgBkECdCIDaigCACIFIAAoAhAiCkoEQCADIAlqIAo2AgAMAQsgAyAJaiEDIAAoAgwiCiAFSgRAIAMgCjYCAAwBCyADIAU2AgALIAZBAWoiBiAAKAIIIgVIDQALQQAhAyAFQQBMDQQgASAIaiEIA0AgDSADQQJ0IgVqIgYgBSAIaigCACAFIAlqKAIAaiIFNgIAAkAgBgJ/IAAoAhAgBUgEQCAFIAAoAhRrDAELIAUgACgCDE4NASAAKAIUIAVqCzYCAAsgA0EBaiIDIAAoAghIDQALDAQLEA4ACwNAIBEgBkECdCIIaiINIA0oAgAgBW02AgAgESAIQQRyaiIIIAgoAgAgBW02AgAgBkECaiEGIANBAmoiAyAaRw0ACwsgG0UNACARIAZBAnRqIgMgAygCACAFbTYCAAsgACgCCEEATA0AIAIgCUECdCIIaiENIBcoAgAhCUEAIQYDQAJAIBEgBkECdCIDaigCACIFIAAoAhAiDEoEQCADIAlqIAw2AgAMAQsgAyAJaiEDIAAoAgwiDCAFSgRAIAMgDDYCAAwBCyADIAU2AgALIAZBAWoiBiAAKAIIIgVIDQALQQAhAyAFQQBMDQAgASAIaiEIA0AgDSADQQJ0IgVqIgYgBSAIaigCACAFIAlqKAIAaiIFNgIAAkAgBgJ/IAAoAhAgBUgEQCAFIAAoAhRrDAELIAUgACgCDE4NASAAKAIUIAVqCzYCAAsgA0EBaiIDIAAoAghIDQALCyALQQFqIgsgFU4hGSALICBHDQALCyAHKAIAIgAEQCAAEAQLIBgQBCAHKAI0IgAEQCAHIAA2AjggABAECyAHKAIoIgAEQCAHIAA2AiwgABAECyAHKAIcIgAEQCAHIAA2AiAgABAECyAHKAIQIgAEQCAHIAA2AhQgABAECyAHQUBrJAAgGQ8LEAgAC5MHAgd/A34jAEEgayIFJAACQAJAQQEgBUEcaiABECNFDQAgBSgCHCIEIAAoAjAoAkAiAigCBCACKAIAa0ECdUsNAAJAIAQEQEEAIQIgAEE8aiAEECIgBUEIaiIDQgA3AgAgA0IANwAFIAMiByABEBVFDQEDQEEBIAJ0IQMgBxARIQggACgCPCACQQN2Qfz///8BcWoiBgJ/IAgEQCAGKAIAIANyDAELIAYoAgAgA0F/c3ELNgIAIAJBAWoiAiAERw0ACwtBASAFQRxqIAEQI0UNASAFKAIcIgQgACgCMCgCQCICKAIEIAIoAgBrQQJ1Sw0BIAQEQEEAIQIgAEHIAGogBBAiIAVBCGoiA0IANwIAIANCADcABSADIgcgARAVRQ0BA0BBASACdCEDIAcQESEIIAAoAkggAkEDdkH8////AXFqIgYCfyAIRQRAIAYoAgAgA0F/c3EMAQsgBigCACADcgs2AgAgAkEBaiICIARHDQALC0EBIAVBHGogARAjRQ0BIAUoAhwiBCAAKAIwKAJAIgIoAgQgAigCAGtBAnVLDQEgBARAQQAhAiAAQdQAaiAEECIgBUEIaiIDQgA3AgAgA0IANwAFIAMiByABEBVFDQEDQEEBIAJ0IQMgBxARIQggACgCVCACQQN2Qfz///8BcWoiBgJ/IAhFBEAgBigCACADQX9zcQwBCyAGKAIAIANyCzYCACACQQFqIgIgBEcNAAsLQQEgBUEcaiABECNFDQEgBSgCHCIEIAAoAjAoAkAiAigCBCACKAIAa0ECdUsNASAEBEBBACECIABB4ABqIAQQIiAFQQhqIgNCADcCACADQgA3AAUgAyIHIAEQFUUNAQNAQQEgAnQhAyAHEBEhCCAAKAJgIAJBA3ZB/P///wFxaiIGAn8gCEUEQCAGKAIAIANBf3NxDAELIAYoAgAgA3ILNgIAIAJBAWoiAiAERw0ACwtBACECIAEpAwgiCyABKQMQIglCBHwiClMNAiABKAIAIgMgCadqKAAAIQQgASAKNwMQIAsgCUIIfCIJUw0CIAMgCqdqKAAAIQMgASAJNwMQIAMgBEgNAiAAIAM2AhAgACAENgIMIAOsIASsfSIJQv7///8HVg0CQQEhAiAAIAmnQQFqIgE2AhQgACABQQF2IgQ2AhggAEEAIARrNgIcIAFBAXENAiAAIARBAWs2AhgMAgsLQQAhAgsgBUEgaiQAIAILZQEBfyAAQcgXNgIAIAAoAmAiAQRAIAEQBAsgACgCVCIBBEAgARAECyAAKAJIIgEEQCABEAQLIAAoAjwiAQRAIAEQBAsgAEGQFzYCACAAKAIgIgEEQCAAIAE2AiQgARAECyAAEAQLYwEBfyAAQcgXNgIAIAAoAmAiAQRAIAEQBAsgACgCVCIBBEAgARAECyAAKAJIIgEEQCABEAQLIAAoAjwiAQRAIAEQBAsgAEGQFzYCACAAKAIgIgEEQCAAIAE2AiQgARAECyAAC40LARB/IAAgBDYCCAJ/IAQgACgCJCAAQSBqIg4oAgAiBWtBAnUiA0sEQCAOIAQgA2sQCyAAKAIIDAELIAQgAyAETQ0AGiAAIAUgBEECdGo2AiQgBAshAyAAKAI0IREgACgCMCEPQQAhBUF/IARBAnQgBEH/////A0sbIggQBUEAIAgQByENAkAgA0EATA0AIAAoAiAhCANAAkAgDSAFQQJ0IgNqKAIAIgcgACgCECIGSgRAIAMgCGogBjYCAAwBCyADIAhqIQMgACgCDCIGIAdKBEAgAyAGNgIADAELIAMgBzYCAAsgBUEBaiIFIAAoAggiA0gNAAsgA0EATA0AQQAhBQNAIAIgBUECdCIDaiIHIAEgA2ooAgAgAyAIaigCAGoiAzYCAAJAIAcCfyAAKAIQIANIBEAgAyAAKAIUawwBCyADIAAoAgxODQEgACgCFCADags2AgALIAVBAWoiBSAAKAIIIgNIDQALCyAAKAI4IgUoAgQgBSgCACISayIFQQVOBEBBAiAFQQJ2IhAgEEECTRshEyAEQX5xIRQgBEEBcSEVQQEhCANAAkACQCAIIBBHBEAgBCAIbCELIBIgCEECdGooAgAiBUF/Rg0BIA8oAgAgBUEDdkH8////AXFqKAIAIAV2QQFxDQEgDygCQCgCDCAFQQJ0aigCACIFQX9GDQEgBUEBaiIJQQNwIQogESgCACIHIA8oAhwiBiAFQQJ0aigCAEECdGooAgAiDCAITg0BIAcgBiAJIAVBAmsgChtBAnRqKAIAQQJ0aigCACIJIAhODQEgByAGQX9BAiAFQQNwGyAFakECdGooAgBBAnRqKAIAIgUgCE4NAQJAIARBAEwNACAEIAVsIQcgBCAJbCEGIAQgDGwhCUEAIQVBACEMIARBAUcEQANAIA0gBUECdGogAiAFIAdqQQJ0aigCACACIAUgBmpBAnRqKAIAaiACIAUgCWpBAnRqKAIAazYCACANIAVBAXIiCkECdGogAiAHIApqQQJ0aigCACACIAYgCmpBAnRqKAIAaiACIAkgCmpBAnRqKAIAazYCACAFQQJqIQUgDEECaiIMIBRHDQALCyAVRQ0AIA0gBUECdGogAiAFIAdqQQJ0aigCACACIAUgBmpBAnRqKAIAaiACIAUgCWpBAnRqKAIAazYCAAsgA0EATA0CIAIgC0ECdCIJaiEKIA4oAgAhB0EAIQUDQAJAIA0gBUECdCIDaigCACIGIAAoAhAiC0oEQCADIAdqIAs2AgAMAQsgAyAHaiEDIAAoAgwiCyAGSgRAIAMgCzYCAAwBCyADIAY2AgALIAVBAWoiBSAAKAIIIgNIDQALQQAhBSADQQBMDQIgASAJaiEGA0AgCiAFQQJ0IgNqIgkgAyAGaigCACADIAdqKAIAaiIDNgIAAkAgCQJ/IAAoAhAgA0gEQCADIAAoAhRrDAELIAMgACgCDE4NASAAKAIUIANqCzYCAAsgBUEBaiIFIAAoAggiA0gNAAsMAgsQDgALIANBAEwNACACIAtBAnQiCWohCiACIAhBAWsgBGxBAnRqIQsgDigCACEHQQAhBQNAAkAgCyAFQQJ0IgNqKAIAIgYgACgCECIMSgRAIAMgB2ogDDYCAAwBCyADIAdqIQMgACgCDCIMIAZKBEAgAyAMNgIADAELIAMgBjYCAAsgBUEBaiIFIAAoAggiA0gNAAtBACEFIANBAEwNACABIAlqIQYDQCAKIAVBAnQiA2oiCSADIAZqKAIAIAMgB2ooAgBqIgM2AgACQCAJAn8gACgCECADSARAIAMgACgCFGsMAQsgAyAAKAIMTg0BIAAoAhQgA2oLNgIACyAFQQFqIgUgACgCCCIDSA0ACwsgCEEBaiIIIBNHDQALCyANEARBAQu1AQIDfgN/AkAgASkDCCIEIAEpAxAiAkIEfCIDUw0AIAEoAgAiBiACp2ooAAAhBSABIAM3AxAgBCACQgh8IgJTDQAgBiADp2ooAAAhBiABIAI3AxAgBSAGSg0AIAAgBjYCECAAIAU2AgwgBqwgBax9IgJC/v///wdWDQBBASEHIAAgAqdBAWoiATYCFCAAIAFBAXYiBTYCGCAAQQAgBWs2AhwgAUEBcQ0AIAAgBUEBazYCGAsgBwsjAQF/IABBkBc2AgAgACgCICIBBEAgACABNgIkIAEQBAsgAAsKACAAKAIILQAYC6AUAQ1/AkACQAJAAkACQAJAAkACQCAAIgYoAggiACgCHEEBaw4GAQADAgUEBwsgAC0AGCIEEAUhAyAGKAIQIgAoAlAEfyAAKAIAKAIAIAAoAjBqBUEACyEIIAFFDQUgBARAIARB/AFxIQogBEEDcSEJIARBBEkhDQNAQQAhAEEAIQUgDUUEQANAIAAgA2ogCCACQQJ0aiIHKAIAOgAAIAMgAEEBcmogBygCBDoAACADIABBAnJqIAcoAgg6AAAgAyAAQQNyaiAHKAIMOgAAIABBBGohACACQQRqIQIgBUEEaiIFIApHDQALC0EAIQUgCQRAA0AgACADaiAIIAJBAnRqKAIAOgAAIABBAWohACACQQFqIQIgBUEBaiIFIAlHDQALCyAGKAIIKAJAKAIAIAxqIAMgBBAGGiAEIAxqIQwgC0EBaiILIAFHDQALDAYLQQAhACABQQFHBEAgAUF+cSEFA0AgBigCCCgCQCgCACAAaiADIAQQBhogACAEaiIAIAYoAggoAkAoAgBqIAMgBBAGGiAAIARqIQAgAkECaiICIAVHDQALCyABQQFxRQ0FIAYoAggoAkAoAgAgAGogAyAEEAYaDAULIAAtABgiBBAFIQMgBigCECIAKAJQBH8gACgCACgCACAAKAIwagVBAAshCCABRQ0EIAQEQCAEQfwBcSEKIARBA3EhCSAEQQRJIQ0DQEEAIQBBACEFIA1FBEADQCAAIANqIAggAkECdGoiBygCADoAACADIABBAXJqIAcoAgQ6AAAgAyAAQQJyaiAHKAIIOgAAIAMgAEEDcmogBygCDDoAACAAQQRqIQAgAkEEaiECIAVBBGoiBSAKRw0ACwtBACEFIAkEQANAIAAgA2ogCCACQQJ0aigCADoAACAAQQFqIQAgAkEBaiECIAVBAWoiBSAJRw0ACwsgBigCCCgCQCgCACAMaiADIAQQBhogBCAMaiEMIAtBAWoiCyABRw0ACwwFC0EAIQAgAUEBRwRAIAFBfnEhBQNAIAYoAggoAkAoAgAgAGogAyAEEAYaIAAgBGoiACAGKAIIKAJAKAIAaiADIAQQBhogACAEaiEAIAJBAmoiAiAFRw0ACwsgAUEBcUUNBCAGKAIIKAJAKAIAIABqIAMgBBAGGgwECyAALQAYIgBBAXQiBBAFIQMgBigCECICKAJQBH8gAigCACgCACACKAIwagVBAAshCSABRQ0DIAAEQCAAQfwBcSENIABBA3EhCkEAIQIgAEEESSEOA0BBACEAQQAhBSAORQRAA0AgAyAAQQF0IgdqIAkgAkECdGoiCCgCADsBACADIAdBAnJqIAgoAgQ7AQAgAyAHQQRyaiAIKAIIOwEAIAMgB0EGcmogCCgCDDsBACAAQQRqIQAgAkEEaiECIAVBBGoiBSANRw0ACwtBACEFIAoEQANAIAMgAEEBdGogCSACQQJ0aigCADsBACAAQQFqIQAgAkEBaiECIAVBAWoiBSAKRw0ACwsgBigCCCgCQCgCACALaiADIAQQBhogBCALaiELIAxBAWoiDCABRw0ACwwEC0EAIQAgAUEBRwRAIAFBfnEhBUEAIQIDQCAGKAIIKAJAKAIAIABqIAMgBBAGGiAAIARqIgAgBigCCCgCQCgCAGogAyAEEAYaIAAgBGohACACQQJqIgIgBUcNAAsLIAFBAXFFDQMgBigCCCgCQCgCACAAaiADIAQQBhoMAwsgAC0AGCIAQQF0IgQQBSEDIAYoAhAiAigCUAR/IAIoAgAoAgAgAigCMGoFQQALIQkgAUUNAiAABEAgAEH8AXEhDSAAQQNxIQpBACECIABBBEkhDgNAQQAhAEEAIQUgDkUEQANAIAMgAEEBdCIHaiAJIAJBAnRqIggoAgA7AQAgAyAHQQJyaiAIKAIEOwEAIAMgB0EEcmogCCgCCDsBACADIAdBBnJqIAgoAgw7AQAgAEEEaiEAIAJBBGohAiAFQQRqIgUgDUcNAAsLQQAhBSAKBEADQCADIABBAXRqIAkgAkECdGooAgA7AQAgAEEBaiEAIAJBAWohAiAFQQFqIgUgCkcNAAsLIAYoAggoAkAoAgAgC2ogAyAEEAYaIAQgC2ohCyAMQQFqIgwgAUcNAAsMAwtBACEAIAFBAUcEQCABQX5xIQVBACECA0AgBigCCCgCQCgCACAAaiADIAQQBhogACAEaiIAIAYoAggoAkAoAgBqIAMgBBAGGiAAIARqIQAgAkECaiICIAVHDQALCyABQQFxRQ0CIAYoAggoAkAoAgAgAGogAyAEEAYaDAILIAAtABgiAEECdCIEEAUhAyAGKAIQIgIoAlAEfyACKAIAKAIAIAIoAjBqBUEACyEJIAFFDQEgAARAIABB/AFxIQ0gAEEDcSEKQQAhAiAAQQRJIQ4DQEEAIQBBACEFIA5FBEADQCADIABBAnQiB2ogCSACQQJ0aiIIKAIANgIAIAMgB0EEcmogCCgCBDYCACADIAdBCHJqIAgoAgg2AgAgAyAHQQxyaiAIKAIMNgIAIABBBGohACACQQRqIQIgBUEEaiIFIA1HDQALC0EAIQUgCgRAA0AgAyAAQQJ0aiAJIAJBAnRqKAIANgIAIABBAWohACACQQFqIQIgBUEBaiIFIApHDQALCyAGKAIIKAJAKAIAIAtqIAMgBBAGGiAEIAtqIQsgDEEBaiIMIAFHDQALDAILQQAhACABQQFHBEAgAUF+cSEFQQAhAgNAIAYoAggoAkAoAgAgAGogAyAEEAYaIAAgBGoiACAGKAIIKAJAKAIAaiADIAQQBhogACAEaiEAIAJBAmoiAiAFRw0ACwsgAUEBcUUNASAGKAIIKAJAKAIAIABqIAMgBBAGGgwBCyAALQAYIgBBAnQiBBAFIQMgBigCECICKAJQBH8gAigCACgCACACKAIwagVBAAshCSABRQ0AIAAEQCAAQfwBcSENIABBA3EhCkEAIQIgAEEESSEOA0BBACEAQQAhBSAORQRAA0AgAyAAQQJ0IgdqIAkgAkECdGoiCCgCADYCACADIAdBBHJqIAgoAgQ2AgAgAyAHQQhyaiAIKAIINgIAIAMgB0EMcmogCCgCDDYCACAAQQRqIQAgAkEEaiECIAVBBGoiBSANRw0ACwtBACEFIAoEQANAIAMgAEECdGogCSACQQJ0aigCADYCACAAQQFqIQAgAkEBaiECIAVBAWoiBSAKRw0ACwsgBigCCCgCQCgCACALaiADIAQQBhogBCALaiELIAxBAWoiDCABRw0ACwwBC0EAIQAgAUEBRwRAIAFBfnEhBUEAIQIDQCAGKAIIKAJAKAIAIABqIAMgBBAGGiAAIARqIgAgBigCCCgCQCgCAGogAyAEEAYaIAAgBGohACACQQJqIgIgBUcNAAsLIAFBAXFFDQAgBigCCCgCQCgCACAAaiADIAQQBhoLIAMQBEEBIQMLIAMLyRQBCH8jAEEwayIIJAACQCACQQFHDQAgACgCBCEEIAAoAgwhBiAIQQA2AiggCEIANwMgIAhCADcDGCAIQgA3AxAgCEIANwMIAn8gCEEIaiECAkACQCABQX5GDQAgBCgCBCgCCCAGQQJ0aigCACEKIAQgBCgCACgCCBEAAEEBRgRAAn8gBC8BJBojAEEgayIHJAAgBCgCBCgCCCAGQQJ0aigCACEFIAQgBCgCACgCCBEAACEAAkACQCABQQFrQQVLDQAgAEEBRw0AIAQgBCgCACgCJBEAACEJIAQgBiAEKAIAKAIsEQEAIQAgCUUNACAARQ0AIAQgBiAEKAIAKAIoEQEAIgMEQCAEKAIsIQQgByADNgIMIAcgBDYCCCAHIAA2AhQgByAAQQxqNgIQAn8gB0EIaiEEQQAhAAJAAkACQAJAAkACQCABQQFrDgYABAQBAgMEC0E8EAUiASAFNgIEIAFBkBc2AgAgASACKQIANwIIIAEgAikCCDcCECABIAIpAhA3AhggAUEANgIoIAFCADcCICACKAIcIgUgAigCGCIARwRAIAUgAGsiBkEASA0JIAEgBhAFIgM2AiAgASADIAZBfHFqNgIoA0AgAyAAKAIANgIAIANBBGohAyAAQQRqIgAgBUcNAAsgASADNgIkCyABIAQpAgA3AiwgASAEKQIINwI0IAFBzBE2AgAgAQwFC0HwABAFIgEgBTYCBCABQZAXNgIAIAEgAikCADcCCCABIAIpAgg3AhAgASACKQIQNwIYIAFBADYCKCABQgA3AiAgAigCHCIFIAIoAhgiAEcEQCAFIABrIgZBAEgNCCABIAYQBSIDNgIgIAEgAyAGQXxxajYCKANAIAMgACgCADYCACADQQRqIQMgAEEEaiIAIAVHDQALIAEgAzYCJAsgASAEKQIANwIsIAEgBCkCCDcCNCABQgA3AjwgAUHIFzYCACABQgA3AkQgAUIANwJMIAFCADcCVCABQgA3AlwgAUIANwJkIAFBADYCbCABDAQLQegAEAUiASAFNgIEIAFBkBc2AgAgASACKQIANwIIIAEgAikCCDcCECABIAIpAhA3AhggAUEANgIoIAFCADcCICACKAIcIgUgAigCGCIARwRAIAUgAGsiBkEASA0DIAEgBhAFIgM2AiAgASADIAZBfHFqNgIoA0AgAyAAKAIANgIAIANBBGohAyAAQQRqIgAgBUcNAAsgASADNgIkCyABIAQpAgA3AiwgASAEKQIINwI0IAFBADYCVCABQgA3AkwgAUIANwI8IAFBwBk2AgAgASAEKQIANwJYIAEgBCkCCDcCYCABDAMLAn9BgAEQBSIAIAU2AgQgAEGQFzYCACAAIAIpAgA3AgggACACKQIINwIQIAAgAikCEDcCGCAAQQA2AiggAEIANwIgAkAgAigCHCIBIAIoAhgiA0cEQCABIANrIgNBAEgNASAAIAMQBSIBNgIkIAAgATYCICAAIAEgA0F8cWo2AiggAigCGCIDIAIoAhwiBUcEQANAIAEgAygCADYCACABQQRqIQEgA0EEaiIDIAVHDQALCyAAIAE2AiQLIABB2BY2AgAgACAEKQIANwIsIAAgBCkCCDcCNCAAQUBrQgA3AgAgAEGgIDYCPCAAQawbNgIAIAAgBCkCADcCSCAAIAQpAgg3AlAgAEKAgID8czcCaCAAQn83AmAgAEKBgICAcDcCWCAAQZgdNgI8IABCADcCcCAAQgA3AHUgAAwBCxAIAAshAAsgAAwBCwwDCyEDDAELIAQoAiwhBCAHIAk2AgwgByAENgIIIAcgADYCFCAHIABBDGo2AhACfyAHQQhqIQRBACEAAkACQAJAAkACQAJAIAFBAWsOBgAEBAECAwQLQTwQBSIBIAU2AgQgAUGQFzYCACABIAIpAgA3AgggASACKQIINwIQIAEgAikCEDcCGCABQQA2AiggAUIANwIgIAIoAhwiBSACKAIYIgBHBEAgBSAAayIGQQBIDQggASAGEAUiAzYCICABIAMgBkF8cWo2AigDQCADIAAoAgA2AgAgA0EEaiEDIABBBGoiACAFRw0ACyABIAM2AiQLIAEgBCkCADcCLCABIAQpAgg3AjQgAUG8IDYCACABDAULQfAAEAUiASAFNgIEIAFBkBc2AgAgASACKQIANwIIIAEgAikCCDcCECABIAIpAhA3AhggAUEANgIoIAFCADcCICACKAIcIgUgAigCGCIARwRAIAUgAGsiBkEASA0HIAEgBhAFIgM2AiAgASADIAZBfHFqNgIoA0AgAyAAKAIANgIAIANBBGohAyAAQQRqIgAgBUcNAAsgASADNgIkCyABIAQpAgA3AiwgASAEKQIINwI0IAFCADcCPCABQeQjNgIAIAFCADcCRCABQgA3AkwgAUIANwJUIAFCADcCXCABQgA3AmQgAUEANgJsIAEMBAtB6AAQBSIBIAU2AgQgAUGQFzYCACABIAIpAgA3AgggASACKQIINwIQIAEgAikCEDcCGCABQQA2AiggAUIANwIgIAIoAhwiBSACKAIYIgBHBEAgBSAAayIGQQBIDQMgASAGEAUiAzYCICABIAMgBkF8cWo2AigDQCADIAAoAgA2AgAgA0EEaiEDIABBBGoiACAFRw0ACyABIAM2AiQLIAEgBCkCADcCLCABIAQpAgg3AjQgAUEANgJUIAFCADcCTCABQgA3AjwgAUHQJTYCACABIAQpAgA3AlggASAEKQIINwJgIAEMAwsCf0GAARAFIgAgBTYCBCAAQZAXNgIAIAAgAikCADcCCCAAIAIpAgg3AhAgACACKQIQNwIYIABBADYCKCAAQgA3AiACQCACKAIcIgEgAigCGCIDRwRAIAEgA2siA0EASA0BIAAgAxAFIgE2AiQgACABNgIgIAAgASADQXxxajYCKCACKAIYIgMgAigCHCIFRwRAA0AgASADKAIANgIAIAFBBGohASADQQRqIgMgBUcNAAsLIAAgATYCJAsgAEGsIzYCACAAIAQpAgA3AiwgACAEKQIINwI0IABBQGtCADcCACAAQfgrNgI8IABBsCc2AgAgACAEKQIANwJIIAAgBCkCCDcCUCAAQoCAgPxzNwJoIABCfzcCYCAAQoGAgIBwNwJYIABBjCk2AjwgAEIANwJwIABCADcAdSAADAELEAgACyEACyAADAELDAILIQMLIAdBIGokACADDAELEAgACyIDDQELQSwQBSIDIAo2AgQgA0GQFzYCACADIAIpAgA3AgggAyACKQIINwIQIAMgAikCEDcCGCADQQA2AiggA0IANwIgIAIoAhwiACACKAIYIgJHBEAgACACayIBQQBIDQIgAyABEAUiBDYCICADIAQgAUF8cWo2AigDQCAEIAIoAgA2AgAgBEEEaiEEIAJBBGoiAiAARw0ACyADIAQ2AiQLIANBlCw2AgALIAMMAQsQCAALIQQgCCgCICIARQ0AIAggADYCJCAAEAQLIAhBMGokACAEC88BAgN/A34CQCACKQMIIgggAikDECIGVw0AIAIoAgAiBCAGp2osAAAhAyACIAZCAXwiBzcDEAJAIANBfkYNACAHIAhZDQEgBCAHp2osAAAhBCACIAZCAnw3AxAgBEEEa0H/AXFB+wFJDQEgACADIAQgACgCACgCKBEDACEEIAAoAhQhAyAAIAQ2AhQgA0UNACADIAMoAgAoAgQRAgALIAAoAhQiAwRAIAAgAyAAKAIAKAIcEQEARQ0BCyAA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IABBf0cL6gICB38BfgJAIAAgARCdAUUNACAAQSRqIQYCQCAAIAAoAgAoAhgRAAAiBSAAKAIoIgMgACgCJCIEa0ECdSICSwRAIAYgBSACaxBaDAELIAIgBU0NACAEIAVBAnRqIgQgA0cEQANAIANBBGsiAygCACECIANBADYCACACBEAgAiACKAIAKAIEEQIACyADIARHDQALCyAAIAQ2AigLQQEhAiAFQQBMDQBBACEDA0ACQCABKQMQIgkgASkDCFkNACABKAIAIAmnai0AACECIAEgCUIBfDcDECAAIAIgACgCACgCMBEBACEEIANBAnQiByAAKAIkaiIIKAIAIQIgCCAENgIAIAIEQCACIAIoAgAoAgQRAgALIAYoAgAgB2ooAgAiAkUNACACIAAgACgCACgCHBEAACAAIAMgACgCACgCFBEBACACKAIAKAIIEQMARQ0AQQEhAiAFIANBAWoiA0cNAQwCCwtBACECCyACCycBAX8gAEGADzYCACAAKAIQIQEgAEEANgIQIAEEQCABEBILIAAQBAslAQF/IABBgA82AgAgACgCECEBIABBADYCECABBEAgARASCyAAC90BAgZ/A34gASgCACEDIAEoAgQhAUF/IAAoAggpAygiCaciBCAEQQBIGxAFIQUCf0EBIAEgA2siA0EESA0AGkEAIgEgAikDECIKIAlC/////w+DIgt8IgkgAikDCFUNABpBASADQQJ1IgYgBkEBTBshB0EAIQMDQAJAIAUgAigCACAKp2ogBBAGIQggAiAJNwMQIAAoAggoAkAoAgAgAWogCCAEEAYaIANBAWoiAyAHRg0AIAEgBGohASACKQMQIgogC3wiCSACKQMIVw0BCwsgAyAGTgshACAFEAQgAAvTAQEGf0EBIQQCQCABIAEoAgAoAhQRAABBAEwNAANAQQAhBCAAKAIEKAIEIAEgBSABKAIAKAIYEQEAEJIBIgJBf0YNASAAKAIEIQNBACEGAkAgAkEASA0AIAMoAgQiBygCDCAHKAIIa0ECdSACTA0AIAMoAgggAygCFCACQQJ0aigCAEECdGooAgAiAyACIAMoAgAoAiARAQAhBgsgBiICRQ0BIAEgAiABKAIAKAIcEQEARQ0BQQEhBCABIAEoAgAoAhQRAAAgBUEBaiIFSg0ACwsgBAsEAEEBCz4BAn8CQCAAKAII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IAAgB2o2AgQgAyAHNgIAIAFFDQEgARAEDAELIAAgB08NACADIAAgAWo2AgQLIAtFBEBBASEBDAMLIAVFBEBBACEBQQAhAANAIAIgAi0AVAR/IAAFIAIoAkQgAEECdGooAgALIAIsABggBhBMRQ0EIABBAWoiACALTyEBIAAgC0cNAAsMAwsgBUH8AXEhCCAFQQNxIQdBACEBIAVBBEkhCUEAIQUDQCACIAItAFQEfyAFBSACKAJEIAVBAnRqKAIACyACLAAYIAYQTEUNA0EAIQFBACEAQQAhCiAJRQRAA0AgAygCACAEaiAAIAZqLQAAOgAAIAQgAygCAGogBiAAQQFyai0AADoAASAEIAMoAgBqIAYgAEECcmotAAA6AAIgBCADKAIAaiAGIABBA3JqLQAAOgADIABBBGohACAEQQRqIQQgCkEEaiIKIAhHDQALCyAHBEADQCADKAIAIARqIAAgBmotAAA6AAAgAEEBaiEAIARBAWohBCABQQFqIgEgB0cNAAsLIAVBAWoiBSALTyEBIAUgC0cNAAsMAwsQCAALEAgACyAGRQ0BCyAGEAQLIAxBEGokACABQQFxC5AGAQl/IwBBEGsiDCQAIAEoAlAiCyACLQAYIgVsIQACQAJAAkACQAJAIAIoAhwiAUEBRyABQQJHcQ0AIAItAFRFDQAgAigCMCEBIAIoAgAoAgAhAiAMQQA2AgggDEIANwMAIAAEQCAAQQBIDQIgABAFIgYgASACaiAAEAYgAGohBAsgAygCACIABEAgAyAANgIEIAAQBAsgAyAENgIIIAMgBDYCBCADIAY2AgBBASEBDAQLIAUEQCAFEAUiBkEAIAUQBxoLAkACQCADKAIEIgggAygCACIBayIHIABJBEAgACAHayIKIAMoAggiCSAIa00EQCADIAhBACAKEAcgCmo2AgQMAgsgAEEASA0CQf////8HIAkgAWsiCEEBdCIJIAAgACAJSRsgCEH/////A08bIggQBSIJIAdqQQAgChAHGiADIAkgASAHEAoiByAIajYCCCADIAAgB2o2AgQgAyAHNgIAIAFFDQEgARAEDAELIAAgB08NACADIAAgAWo2AgQLIAtFBEBBASEBDAMLIAVFBEBBACEBQQAhAANAIAIgAi0AVAR/IAAFIAIoAkQgAEECdGooAgALIAIsABggBhBNRQ0EIABBAWoiACALTyEBIAAgC0cNAAsMAwsgBUH8AXEhCCAFQQNxIQdBACEBIAVBBEkhCUEAIQUDQCACIAItAFQEfyAFBSACKAJEIAVBAnRqKAIACyACLAAYIAYQTUUNA0EAIQFBACEAQQAhCiAJRQRAA0AgAygCACAEaiAAIAZqLQAAOgAAIAQgAygCAGogBiAAQQFyai0AADoAASAEIAMoAgBqIAYgAEECcmotAAA6AAIgBCADKAIAaiAGIABBA3JqLQAAOgADIABBBGohACAEQQRqIQQgCkEEaiIKIAhHDQALCyAHBEADQCADKAIAIARqIAAgBmotAAA6AAAgAEEBaiEAIARBAWohBCABQQFqIgEgB0cNAAsLIAVBAWoiBSALTyEBIAUgC0cNAAsMAwsQCAALEAgACyAGRQ0BCyAGEAQLIAxBEGokACABQQFxC/AEAQt/IAEoAlAiCCACLQAYIgFsIQYCQCABRQ0AIAFBAnQiCRAFIgUhACABQQdxIgoEQANAIABBgICAgHw2AgAgAEEEaiEAIARBAWoiBCAKRw0ACwsgAUEBa0H/////A3FBB0kNACAFIAlqIQQDQCAAQoCAgICMgICAQDcCGCAAQoCAgICMgICAQDcCECAAQoCAgICMgICAQDcCCCAAQoCAgICMgICAQDcCACAAQSBqIgAgBEcNAAsLAkAgAygCBCADKAIAIgRrQQJ1IgAgBkkEQCADIAYgAGsQCwwBCyAAIAZNDQAgAyAEIAZBAnRqNgIECwJAAkACQCAIRQRAQQEhBwwBCyABRQRAQQAhAANAIAIgAi0AVAR/IAAFIAIoAkQgAEECdGooAgALIAIsABggBRA8RQ0CIABBAWoiACAITyEHIAAgCEcNAAsMAQsgAUH8AXEhDSABQQNxIQogAUEESSEOQQAhBEEAIQEDQCACIAItAFQEfyABBSACKAJEIAFBAnRqKAIACyACLAAYIAUQPEUNASADKAIAIQtBACEHQQAhAEEAIQwgDkUEQANAIAsgBEECdGoiBiAFIABBAnQiCWoqAgA4AgAgBiAFIAlBBHJqKgIAOAIEIAYgBSAJQQhyaioCADgCCCAGIAUgCUEMcmoqAgA4AgwgAEEEaiEAIARBBGohBCAMQQRqIgwgDUcNAAsLIAoEQANAIAsgBEECdGogBSAAQQJ0aioCADgCACAAQQFqIQAgBEEBaiEEIAdBAWoiByAKRw0ACwsgAUEBaiIBIAhPIQcgASAIRw0ACwwBCyAFRQ0BCyAFEAQLIAcLkQEBA38jAEEQayIAJAAgASwAGCEFIABB6M8AKQMANwMIIABB4M8AKQMANwMAIAEgAiAFIAAQPCIGBEBBACEBIAUEQCAFQf8BcUECdCICEAUiASAAIAIQBiACaiEECyADKAIAIgIEQCADIAI2AgQgAhAECyADIAQ2AgggAyAENgIEIAMgATYCAAsgAEEQaiQAIAYLgQIBB38CQCABKAJkIgAgASgCYCIBayIHIAJHDQAgACABRg0AQQEgAkEMbSIEIARBAU0bIgVBAXEhCEEAIQAgBEECTwRAIAVBfnEhCUEAIQQDQCADIABBDGwiBWoiCiABIAVqIgYoAgA2AgAgAyAFQQRyaiAGKAIENgIAIAogBigCCDYCCCADIABBAXJBDGwiBmoiBSABIAZqIgYoAgA2AgAgBSAGKAIENgIEIAUgBigCCDYCCCAAQQJqIQAgBEECaiIEIAlHDQALCyAIRQ0AIAMgAEEMbCIEaiIAIAEgBGoiASgCADYCACAAIAEoAgQ2AgQgACABKAIINgIICyACIAdGC58CAQZ/AkAgASgCUEH//wNLDQAgASgCZCIAIAEoAmAiAWtBDG0iBEEGbCIFIAJGIQYgACABRg0AIAIgBUcNAEEBIQZBASAEIARBAU0bIgJBAXEhB0EAIQAgBEECTwRAIAJBfnEhCEEAIQIDQCADIABBBmwiBWoiCSABIABBDGxqIgQoAgA7AQAgAyAFQQJyaiAEKAIEOwEAIAkgBCgCCDsBBCADIABBAXIiBUEGbGoiBCABIAVBDGxqIgUoAgA7AQAgBCAFKAIEOwECIAQgBSgCCDsBBCAAQQJqIQAgAkECaiICIAhHDQALCyAHRQ0AIAMgAEEGbGoiAiABIABBDGxqIgAoAgA7AQAgAiAAKAIEOwECIAIgACgCCDsBBAsgBguYNAIffwF+IAIhGEEAIQIjAEHgAGsiDCQAIAxBEGoiCkEAQcwAEAcaIAxBfzYCXCAMQQA2AgggDEIANwMAIwBBEGsiESQAIApCADcCRCAKIAE2AgACfyMAQRBrIhMkAAJAIAEiFCgCGCABKAIUIgBrQQBMDQAgACgCACIAQX9GDQAgFCgCCCAAQQJ0aigCACECCwJAAkAgAkUEQEEAIQAMAQsgFCgCZCEAIBQoAmAhAyATQQA2AgggE0IANwMAIAAgA2siBUEMbSEBAkAgACADRg0AIAFB1qrVqgFPDQIgEyAFEAUiBDYCACATIAQgAUEMbGo2AghBACEAIBMgBEEAIAVBDGsiBSAFQQxwa0EMaiIEEAciBSAEajYCBCACLQBUBEBBASABIAFBAU0bIgJBAXEhBCABQQJPBEAgAkF+cSEBQQAhAgNAIAMgAEEMbCIHaiIIKQIAISIgBSAHaiIHIAgoAgg2AgggByAiNwIAIAMgAEEBckEMbCIHaiIIKQIAISIgBSAHaiIHIAgoAgg2AgggByAiNwIAIABBAmohACACQQJqIgIgAUcNAAsLIARFDQEgAyAAQQxsIgBqIgEpAgAhIiAAIAVqIgAgASgCCDYCCCAAICI3AgAMAQtBASABIAFBAU0bIQcgAigCRCEAQQAhAgNAIAAgAyACQQxsIgRqIgEoAgBBAnRqKAIAIQggACABKAIEQQJ0aigCACELIAQgBWoiBCAAIAEoAghBAnRqKAIANgIIIAQgCzYCBCAEIAg2AgAgAkEBaiICIAdHDQALCwJ/QQAhBSMAQRBrIh4kAEHYABAFIgYQZBojAEEQayIaJAAgBkIANwJQIAYoAkwhACAGQQA2AkwgAARAIAAQBAsgBkIANwJEIAZBQGsiASgCACEAIAFBADYCACAABEAgABAECwJAIBMoAgQiBCATKAIAIgFrQQxtIgJBA2wiACAGKAIEIAYoAgAiB2tBAnUiA0sEQCAGIAAgA2sQqwEgEygCBCIEIBMoAgAiAWtBDG0hAgwBCyAAIANPDQAgBiAHIABBAnRqNgIECwJAIAEgBEYNAEEBIAIgAkEBTRsiA0EBcSEHIAYoAgAhACACQQJPBEAgA0F+cSEIQQAhAgNAIAAgBUEMbCIDaiILIAEgA2oiBCgCADYCACAAIANBBHJqIAQoAgQ2AgAgCyAEKAIINgIIIAAgBUEBckEMbCIEaiIDIAEgBGoiBCgCADYCACADIAQoAgQ2AgQgAyAEKAIINgIIIAVBAmohBSACQQJqIgIgCEcNAAsLIAdFDQAgACAFQQxsIgJqIgAgASACaiIBKAIANgIAIAAgASgCBDYCBCAAIAEoAgg2AggLIBpBfzYCDEEAIQBBACEDQQAhBCMAQSBrIgskAAJAAkAgGkEMaiIQRQ0AAkAgBigCBCICIAYoAgAiCGsiBUECdSIHIAYoAhAgBigCDCIJa0ECdSIBSwRAIAZBDGogByABa0H0zwAQMSAGKAIEIgIgBigCACIIayIFQQJ1IQcMAQsgASAHTQ0AIAYgCSAHQQJ0ajYCEAsgC0EANgIYIAtCADcDECACIAhGIgFFBEAgBUEASA0CIAsgBRAFIgM2AhQgCyADNgIQIAsgAyAHQQJ0ajYCGAsCQAJAAkACQAJAIAUEQANAAkAgCCAAQQJ0aigCACIHIAsoAhQgA2tBAnUiAUkNACALQQA2AgAgASAHQQFqIgVJBEAgC0EQaiAFIAFrIAsQGiAGKAIAIQggBigCBCECIAsoAhAhAwwBCyABIAVNDQAgCyADIAVBAnRqNgIUCyADIAdBAnRqIgEgASgCAEEBajYCACAAQQFqIgAgAiAIayIFQQJ1IgdJDQALDAELQQAhBSABRQ0BDAILIAIgCEYEQEEAIQUMAgsgBUH9////B08NAgsgBUEBdBAFIgVB/wEgB0EDdBAHGgsgC0EANgIIIAtCADcDACALKAIUIgEgA2siAEECdSECAkACQCABIANGDQAgAEEASA0BIAsgABAFIhI2AgAgCyASIAJBAnRqNgIIIAsgEkEAIAAQByIBIABqNgIEQQEgAiACQQFNGyIJQQNxIQ9BACEAIAlBAWtBA08EQCAJQXxxIRUDQCABIARBAnQiCWogADYCACABIAlBBHIiFmogAyAJaigCACAAaiIANgIAIAEgCUEIciIXaiADIBZqKAIAIABqIgA2AgAgASAJQQxyIglqIAMgF2ooAgAgAGoiADYCACADIAlqKAIAIABqIQAgBEEEaiEEIA5BBGoiDiAVRw0ACwsgD0UNAANAIAEgBEECdCIJaiAANgIAIARBAWohBCADIAlqKAIAIABqIQAgDUEBaiINIA9HDQALCyAHRQ0CIAYoAighFSAGKAIMIRZBACEJA0AgCCAJQQJ0Ih9qIQBBfyENIAlBAWoiFyAJQQJrIBdBA3AbIgFBf0cEQCAIIAFBAnRqKAIAIQ0LIAAoAgAhAQJ/AkAgCUEDcEUEQEF/IQ4gCUECaiIAQX9HBEAgCCAAQQJ0aigCACEOCwJAIAEgDUYNACABIA5GDQAgDSAORw0CCyAGIBVBAWoiFTYCKCAJQQNqDAILIABBBGsoAgAhDgsCQAJAIAMgDkECdCIAaigCACIbQQBMDQAgACASaigCACEAQQAhBANAIAUgAEEDdGoiDygCACIcQX9GDQECQCANIBxHDQAgDygCBCIPQX9HBH8gCCAPQQJ0aigCAAVBfwsgAUYNAANAAkAgACEBIARBAWoiBCAbTg0AIAUgAUEBaiIAQQN0aiIgKAIAIRwgBSABQQN0aiIhICAoAgQ2AgQgISAcNgIAIBxBf0cNAQsLIAUgAUEDdGpBfzYCACAPQX9GDQIgFiAfaiAPNgIAIBYgD0ECdGogCTYCAAwDCyAAQQFqIQAgBEEBaiIEIBtHDQALCyADIA1BAnQiAGooAgAiDUEATA0AIAAgEmooAgAhAEEAIQQDQCAFIABBA3RqIgEoAgBBf0YEQCABIA42AgAgASAJNgIEDAILIABBAWohACAEQQFqIgQgDUcNAAsLIBcLIgkgB0kNAAsMAgsMAwsQCAALIBAgAjYCACASBEAgEhAECyAFBEAgBRAECyALKAIQIgBFDQAgCyAANgIUIAAQBAsgC0EgaiQAIBBBAEciFgRAIwBBIGsiCSQAIAYoAgAhACAGKAIEIQQgCUEANgIYIAlCADcDECAAIARGBH8gBAUgBCAAayIAQQBIDQIgAEECdSIAQQFrQQV2QQFqIgFBAnQQBSECIAkgATYCGCAJQQA2AhQgCSACNgIQIAlBEGogABBjIAYoAgAhBCAGKAIECyECIAlBADYCCCAJQQA2AgADQAJAQQAhEEEAIQcgAiAERg0AA0ACQCAJKAIQIgEgB0EDdkH8////AXFqKAIAIAd2QQFxDQAgCSAJKAIAIgI2AgQgBigCDCEDIAchAANAAkAgACIFQQFqIgAgBUECayAAQQNwGyIAQX9GDQAgAyAAQQJ0aigCACIAQX9GDQAgAEEBaiIEIABBAmsgBEEDcBsiACAHRg0AIABBf0YNACABIABBA3ZB/P///wFxaigCACAAdkEBcUUNAQsLIAUhCAJ/AkACQANAIAkoAhAgCEEDdkH8////AXFqIgAgACgCAEEBIAh0cjYCACAIQQFqIgAgCEECayAAQQNwGyESIAYoAgAhBEF/QQIgCEEDcCIXGyAIaiEBAkAgCSgCACILIAJGIhsNACAEIBJBAnRqKAIAIRUgBigCDCENIAshACABQX9HBEAgDSABQQJ0aiEDA0ACQCAAKAIAIBVHDQAgAygCACIPIAAoAgQiDkYNACABIQNBfyECQX8gDkF/Rg0HGgwGCyAAQQhqIgAgAkcNAAsMAQsDQCAVIAAoAgBGBEBBfyEPQX8hAyAAKAIEIg5Bf0cNBQsgAEEIaiIAIAJHDQALCyAEIAFBAnRqKAIAIQECQCAJKAIIIAJHBEAgAiABrSASrUIghoQ3AgAgCSACQQhqIgI2AgQMAQsgAiALayIAQQN1IgRBAWoiA0GAgICAAk8NCkH/////ASAAQQJ2Ig4gAyADIA5JGyAAQfj///8HTxsiAwR/IANBgICAgAJPDQMgA0EDdBAFBUEACyIOIARBA3RqIgAgAa0gEq1CIIaENwIAIABBCGohASAbRQRAA0AgAEEIayIAIAJBCGsiAikCADcCACACIAtHDQALIAkoAgAhAgsgCSAOIANBA3RqNgIIIAkgATYCBCAJIAA2AgAgAgRAIAIQBAsgASECCwJAAkAgFwRAIAhBAWshAAwBCyAIQQJqIgBBf0YNAQsgBigCDCAAQQJ0aigCACIAQX9GDQAgAEF/QQIgAEEDcBtqIgggBUYNACAIQX9HDQELCyAGKAIAIQQMAwsQCQALIA0gDkECdGooAgAhAiADIQEgDgshACAPQX9HBEAgDSAPQQJ0akF/NgIACyACQX9HBEAgDSACQQJ0akF/NgIACyANIAFBAnRqQX82AgAgDSAAQQJ0akF/NgIAQQEhEAsgB0EBaiIHIAYoAgQiAiAEa0ECdUkNAAsgEA0BCwsgCSgCACIABEAgABAECyAJKAIQIgAEQCAAEAQLIAlBIGokACAaKAIMIQNBACEJIwBBIGsiCCQAIAYgAzYCJCAGQRhqIQsCQAJAIAMgBigCHCAGKAIYIgFrQQJ1IgBLBEAgCyADIABrQfTPABAxIAhBADYCGCAIQgA3AxAMAQsgACADSwRAIAYgASADQQJ0ajYCHAsgCEEANgIYIAhCADcDECADRQ0BCyADQQBIDQIgA0EBa0EFdkEBaiIAQQJ0EAUhASAIIAA2AhggCEEANgIUIAggATYCECAIQRBqIAMQYwsgBigCACEAIAYoAgQhASAIQQA2AgggCEIANwMAAkAgACABRgR/IAEFIAEgAGsiAEEASA0DIABBAnUiAEEBa0EFdkEBaiIBQQJ0EAUhAiAIIAE2AgggCEEANgIEIAggAjYCACAIIAAQYyAGKAIAIQEgBigCBAsiACABa0EMSQ0AAkADQCABIAlBA2wiDkECdGoiBCgCACEFQX8hAiAOQQFqIgdBf0cEQCABIAdBAnRqKAIAIQILAkAgAiAFRg0AIAUgBCgCCCIERg0AIAIgBEYNAEEAIQ0gCCgCACEHA0AgByANIA5qIgRBA3ZB/P///wFxaigCACAEdkEBcUUEQEEBIAEgBEECdGooAgAiAHQiAiAIKAIQIgUgAEEFdiIBQQJ0aigCACIHcSISBEACQCAGKAIcIgIgBigCIEcEQCACQX82AgAgBiACQQRqNgIcDAELIAIgCygCACIBayIFQQJ1Ig9BAWoiB0GAgICABE8NCUH/////AyAFQQF2IhAgByAHIBBJGyAFQfz///8HTxsiBwR/IAdBgICAgARPDQcgB0ECdBAFBUEACyIQIA9BAnRqIgVBfzYCACAFQQRqIQ8gASACRwRAA0AgBUEEayIFIAJBBGsiAigCADYCACABIAJHDQALCyAGIBAgB0ECdGo2AiAgBiAPNgIcIAYgBTYCGCABRQ0AIAEQBAsCQCAGKAI0IgIgBigCOEcEQCACIAA2AgAgBiACQQRqNgI0DAELIAIgBigCMCIBayIFQQJ1Ig9BAWoiB0GAgICABE8NCUH/////AyAFQQF2IhAgByAHIBBJGyAFQfz///8HTxsiBwR/IAdBgICAgARPDQcgB0ECdBAFBUEACyIQIA9BAnRqIgUgADYCACAFQQRqIQAgASACRwRAA0AgBUEEayIFIAJBBGsiAigCADYCACABIAJHDQALCyAGIBAgB0ECdGo2AjggBiAANgI0IAYgBTYCMCABRQ0AIAEQBAsgCCgCFCICIAgoAhgiAEEFdEYEQCACQQFqQQBIDQkgCEEQaiACQf7///8DTQR/IABBBnQiACACQWBxQSBqIgEgACABSxsFQf////8HCxAwIAgoAhQhAgsgCCACQQFqNgIUIAgoAhAiBSACQQN2Qfz///8BcWoiACAAKAIAQX4gAndxNgIAQQEgA3QhAiAFIANBBXYiAUECdGooAgAhByADIgBBAWohAwsgBSABQQJ0aiACIAdyNgIAIAYoAhggAEECdGohDyAGKAIMIQUgBigCACEBIAgoAgAhByAEIQICQAJAAkADQCACQX9GDQEgByACQQN2Qfz///8BcWoiECAQKAIAQQEgAnRyNgIAIA8gAjYCACASBEAgASACQQJ0aiAANgIACyAEAn9BfyACQQFqIhAgAkECayAQQQNwGyICQX9GDQAaQX8gBSACQQJ0aigCACICQX9GDQAaIAJBAWoiECACQQJrIBBBA3AbCyICRw0ACyAEQX9HDQJBASECDAELIARBA3AEQCAEQQFrIQIMAQsgBEECaiICQX9GDQELIAUgAkECdGooAgAiAkF/Rg0AAkAgAkEDcARAIAJBAWshAgwBCyACQQJqIgJBf0YNAQsgBigCDCEFIAYoAgAhAQNAIAcgAkEDdkH8////AXFqIgQgBCgCAEEBIAJ0cjYCACASBEAgASACQQJ0aiAANgIACwJAIAJBA3AEQCACQQFrIQIMAQsgAkECaiICQX9GDQILIAUgAkECdGooAgAiAkF/Rg0BIAJBf0ECIAJBA3AbaiICQX9HDQALCwsgDUEBaiINQQNHDQALIAYoAgAhASAGKAIEIQALIAlBAWoiCSAAIAFrQQJ1QQNuSQ0ACwwBCxAJAAtBACECIAZBADYCLCAIKAIQIQAgCCgCFCIBBEAgAUEfcSEDIAAgAUEDdkH8////AXFqIQEgACEFQQAhBwNAIAUoAgAgAnZBAXFFBEAgBiAHQQFqIgc2AiwLQQAgAkEBaiACQR9GIgQbIQIgBSAEQQJ0aiIFIAFHDQAgAiADRw0ACwsgCCgCACIBBEAgARAEIAgoAhAhAAsgAARAIAAQBAsgCEEgaiQACyAaQRBqJAAgFkUEQCAeQQA2AgggBhAuQQAhBgsgHkEQaiQAIAYMAQsQCAALIQAgEygCACIBRQ0AIBMgATYCBCABEAQLIBNBEGokACAADAELEAgACyEBIAooAgQhACAKIAE2AgQgAARAIAAQLiAKKAIEIQELAkAgAUUNACAUKAJkIQAgFCgCYCECIBFBADoADCAKQThqIAAgAmtBDG0gEUEMahAZIBQoAmQiACAUKAJgIgJGDQADQCAKKAI4IBlBA3ZB/P///wFxaigCACAZdkEBcUUEQCAKQQAgGUEDbCIAEGAgCigCCCECIAooAgwhAyAKQQEgAEEBahBgIAooAhQhBSAKKAIYIQQgCkECIABBAmoQYEECQQFBf0EAIAIgA0YbIAQgBWtBAnUiACADIAJrQQJ1IgJLIgMbIAooAiQgCigCIGtBAnUgACACIAMbSxshAAJAIAooAkRBAEwNACARIAooAkw2AgwgESAMNgIIIBFBCGogEUEMahAlIBEgCiAAQQJ0aigCLCICQQBIBH9BfwUgCigCACgCYCACQQNuIgNBDGxqIAIgA0EDbGtBAnRqKAIACyICNgIMIBEgDDYCCCARQQhqIBFBDGoQJSAKIAooAkgiA0ECajYCSCADQQFxRQ0AIBEgAjYCDCARIAw2AgggEUEIaiARQQxqECUgCiAKKAJIQQFqNgJIC0EAIQUjAEEQayIDJAAgCiAKKAJEQQFqNgJEIAogAEEMbGoiAigCDCACKAIIayICQQBKBEBBASACQQJ2IgIgAkEBTRshByAKIABBAnRqKAIsIQIDQCAKKAI4QX8gAiIAQQNuIgIgAEF/RiIEGyIIQQN2Qfz///8BcWoiCyALKAIAQQEgCHRyNgIAIAogCigCSEEBajYCSAJ/AkACQAJAAkAgBUUEQAJAIABBAE4EQCADIAooAgAoAmAgAkEMbGogAEEDcEECdGooAgA2AgwgAyAMNgIIIANBCGogA0EMahAlDAELIANBfzYCDCADIAw2AgggA0EIaiADQQxqECUgBA0CC0F/IQIgAyAAQQFqIgQgAEECayAEQQNwGyIEQQBOBH8gCigCACgCYCAEQQNuIghBDGxqIAQgCEEDbGtBAnRqKAIABUF/CzYCDCADIAw2AgggA0EIaiADQQxqECVBf0ECIABBA3AbIABqIgRBAEgNAiAKKAIAKAJgIARBA24iAkEMbGogBCACQQNsa0ECdGooAgAhAgwCCyAKIABBAEgEf0F/BSAKKAIAKAJgIAJBDGxqIABBA3BBAnRqKAIACyIENgJMIAMgBDYCDCADIAw2AgggA0EIaiADQQxqECUgBUEBcQRAQX8gAEF/Rg0FGiACQQNsIABHBEAgAEEBayEADAULIABBAmohAAwDC0F/IABBf0YNBBogAEEBaiICIABBAmsgAkEDcBshAAwCC0F/IQIgA0F/NgIMIAMgDDYCCCADQQhqIANBDGoQJQsgCiACNgJMIAMgAjYCDCADIAw2AgggA0EIaiADQQxqECULQX8gAEF/Rg0BGgsgCigCBCgCDCAAQQJ0aigCAAshAiAFQQFqIgUgB0cNAAsLIANBEGokACAUKAJgIQIgFCgCZCEACyAZQQFqIhkgACACa0EMbUkNAAsLIBFBEGokAAJAIAEEQCAYKAIAIgAEQCAYIAA2AgQgABAECyAYIAwoAgA2AgAgGCAMKAIENgIEIBggDCgCCDYCCCAMKAJUIR0MAQsgDCgCACIARQ0AIAwgADYCBCAAEAQLIAwoAkgiAARAIAAQBAsgDCgCMCIABEAgDCAANgI0IAAQBAsgDCgCJCIABEAgDCAANgIoIAAQBAsgDCgCGCIABEAgDCAANgIcIAAQBAsgDCgCFCEAIAxBADYCFCAABEAgABAuCyAMQeAAaiQAIB0LWgAgASgCYCEBQQwQBSIAIAEgAkEMbGoiASkCADcCACAAIAEoAgg2AgggAygCACIBBEAgAyABNgIEIAEQBAsgAyAANgIAIAMgAEEMaiIANgIIIAMgADYCBEEBC2oBAX8Cf0EAIAEoAgQiA0UNABpBACABKAIIIAJBAnRqKAIAKAI8IgFBAEgNABpBACADKAIYIgAgAygCHCICRg0AGgJAA0AgACgCACIDKAIYIAFGDQEgAEEEaiIAIAJHDQALQQAMAQsgAwsLBwAgASgCBAtoAQJ/An9BACABKAIMIgAgASgCCCIBRg0AGkEBIAAgAWtBAnUiACAAQQFNGyEDQQAhAAJAA0AgASAAQQJ0aigCACIEKAI8IAJGDQEgAEEBaiIAIANHDQALQQAMAQsgBEEAIABBf0cbCwsQACABKAIIIAJBAnRqKAIAC+gCAQN/An8jAEEgayIEJAACQCACEBMiBUHw////B0kEQAJAAkAgBUELTwRAIAVBD3JBAWoiABAFIQYgBCAAQYCAgIB4cjYCGCAEIAY2AhAgBCAFNgIUIAUgBmohAAwBCyAEIAU6ABsgBEEQaiIGIAVqIQAgBUUNAQsgBiACIAUQBhoLIABBADoAACADEBMiBUHw////B08NAQJAAkAgBUELTwRAIAVBD3JBAWoiAhAFIQAgBCACQYCAgIB4cjYCCCAEIAA2AgAgBCAFNgIEIAAgBWohBgwBCyAEIAU6AAsgBCAFaiEGIAQhACAFRQ0BCyAAIAMgBRAGGgsgBkEAOgAAAn9BfyABKAIEIgBFDQAaQX8gACAEQRBqIAQQlgEiAEUNABogASAAKAIYEJEBCyEAIAQsAAtBAEgEQCAEKAIAEAQLIAQsABtBAEgEQCAEKAIQEAQLIARBIGokACAADAILEBQACxAUAAsLhAIBA38CfyMAQSBrIgAkACACEBMiA0Hw////B0kEQAJAAkAgA0ELTwRAIANBD3JBAWoiBBAFIQUgACAEQYCAgIB4cjYCGCAAIAU2AhAgACADNgIUIAMgBWohBAwBCyAAIAM6ABsgAEEQaiIFIANqIQQgA0UNAQsgBSACIAMQBhoLIARBADoAACAAQQA6AAQgAEHuwrWrBjYCACAAQQQ6AAsCf0F/IAEoAgQiAkUNABpBfyACIAAgAEEQahCWASICRQ0AGiABIAIoAhgQkQELIQEgACwAC0EASARAIAAoAgAQBAsgACwAG0EASARAIAAoAhAQBAsgAEEgaiQAIAEMAQsQFAALCwkAIAEgAhCSAQvfAQEDfyMAQUBqIgQkACAEQQhqEB4iBUIANwMQIAUgATYCACAFIAKtNwMIIARBMGoiASAAIAUgAxDHASAAIAQoAjA2AhgCQCABIABBGGoiBUYNACAAQRxqIQEgBEEwakEEciECIAQtAD8iBsAhAyAALAAnQQBOBEAgA0EATgRAIAEgAikCADcCACABIAIoAgg2AggMAgsgASAEKAI0IAQoAjgQQQwBCyABIAQoAjQgAiADQQBIIgAbIAQoAjggBiAAGxBCCyAELAA/QQBIBEAgBCgCNBAECyAEQUBrJAAgBQvZAQEDfyMAQUBqIgMkACADQQhqEB4iBEIANwMQIAQgATYCACAEIAKtNwMIIANBMGoiARDGASAAIAMoAjA2AhgCQCABIABBGGoiBUYNACAAQRxqIQEgA0EwakEEciECIAMtAD8iBsAhBCAALAAnQQBOBEAgBEEATgRAIAEgAikCADcCACABIAIoAgg2AggMAgsgASADKAI0IAMoAjgQQQwBCyABIAMoAjQgAiAEQQBIIgAbIAMoAjggBiAAGxBCCyADLAA/QQBIBEAgAygCNBAECyADQUBrJAAgBQs8AQJ/QSgQBSIAQgA3AgQgAEIANwIYIABBEGoiAUIANwIAIAAgAEEEajYCACAAIAE2AgwgAEIANwIgIAALcgEDfyAABEAgACwAG0EASARAIAAoAhAQBAsgACgCACICBEAgACgCBCIDIAIiAUcEQANAIANBDGshASADQQFrLAAAQQBIBEAgASgCABAECyABIgMgAkcNAAsgACgCACEBCyAA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KAIAEAQLIANBEGokACAADAELEBQACwv8AgEHfwJ/IwBBEGsiAyQAIAIQEyIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIGEAUhACADIAZBgICAgHhyNgIIIAMgADYCACADIAQ2AgQgACAEaiEGDAELIAMgBDoACyADIARqIQYgAyEAIARFDQELIAAgAiAEEAYaCyAGQQA6AAAgAy0ACyIAwCEJAn9BACABKAIEIgVFDQAaIAMoAgQgACAJQQBIIgAbIQcgAygCACADIAAbIQQDQAJAAkACQAJAAkACQCAFKAIUIAUtABsiACAAwEEASCIAGyIIIAcgByAISyICGyIGBEAgBCAFKAIQIAVBEGogABsiASAGEA0iAA0BIAcgCE8NAgwGCyAHIAhPDQIMBQsgAEEASA0ECyABIAQgBhANIgANAQsgAg0BQQEMBAsgAEEASA0AQQEMAwsgBUEEaiEFCyAFKAIAIgUNAAtBAAshACAJQQBIBEAgAygCABAECyADQRBqJAAgAAwBCxAUAAsLJgEBf0EcEAUiAEIANwIAIABBADYCGCAAQgA3AhAgAEIANwIIIAALEAAgACgCACABQQF0ai8BAAsQACAAKAIAIAFBAXRqLgEACw0AIAAoAgAgAWotAAALDQAgACgCACABaiwAAAsQACAAKAIAIAFBAnRqKgIAC9gDAgV/AX4gAygCUCEFIwBBMGsiBCQAAkAgACgCBCIAQQJrIghBHEsNACADKAIAKAIAIAMoAjBqIQYgBCAANgIQIARBfyAAdCIAQX9zNgIUIARBfiAAayIANgIYIAQgAEECbTYCICAEQwAAAEAgALKVOAIcIAIoAgAiByACKAIERwRAQQAhAEEAIQMDQCAHIANBAnRqKAIAIQUgBEEkaiIHIAEoAgAoAgAgASkDMCABKQMoIgkgAS0AVAR/IAUFIAEoAkQgBUECdGooAgALrX58p2ogCacQBhogBEEQaiAHIARBDGogBEEIahCMASAGIABBAnQiBWogBCgCDDYCACAGIAVBBHJqIAQoAgg2AgAgAEECaiEAIANBAWoiAyACKAIEIAIoAgAiB2tBAnVJDQALDAELIAVFDQBBACEDQQAhAANAIARBJGoiAiABKAIAKAIAIAEpAzAgASkDKCIJIAEtAFQEfyAABSABKAJEIABBAnRqKAIAC61+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IAAoAjAhASAAQQA2AjAgAQRAIAEgASgCACgCBBECAAsgAEGwzgA2AgAgACgCFCIBBEAgACABNgIYIAEQBAsgACgCCCIBBEAgACgCDCIDIAEiAkcEQANAIANBBGsiAygCACECIANBADYCACACBEAgAiACKAIAKAIEEQIACyABIANHDQALIAAoAgghAgsgACABNgIMIAIQBAsgABAEC6YBAQN/IABB8D82AgAgACgCMCEBIABBADYCMCABBEAgASABKAIAKAIEEQIACyAAQbDOADYCACAAKAIUIgEEQCAAIAE2AhggARAECyAAKAIIIgEEQCAAKAIMIgMgASICRwRAA0AgA0EEayIDKAIAIQIgA0EANgIAIAIEQCACIAIoAgAoAgQRAgALIAEgA0cNAAsgACgCCCECCyAAIAE2AgwgAhAECyAACxQAIAAoAjAiACAAKAIAKAIcEQAACxQAIAAoAjAiACAAKAIAKAIYEQAAC9UFAgJ/AX4gACgCICIBKQMIIAEpAxAiA1UEfyABKAIAIAOnai0AACECIAEgA0IBfDcDECAAKAIwIQEgAEEANgIwIAEEQCABIAEoAgAoAgQRAgALAkACQAJ/AkACQCACDgMAAwEDC0GAAxAFIgFB3MAANgIAIAFBBGpBAEHQABAHGiABQgA3A2AgAUF/NgJcIAFCfzcCVCABQgA3A2ggAUIANwNwIAFCADcDeCABQgA3A4ABIAFCADcDiAEgAUIANwOQASABQgA3ApwBIAFBgICA/AM2ApgBIAFCADcCpAEgAUIANwKsASABQgA3ArQBIAFCADcCvAEgAUIANwLEASABQgA3AswBIAFC/////w83AtQBIAFCADcC3AEgAUHoAWoQHhogAUGQAmoQHhogAUG4AmoiAkIANwIAIAJCADcABSABQcgCahAeGiABQQA2AvgCIAFCADcD8AIgAQwBC0G4AxAFIgFBkMEANgIAIAFBBGpBAEHQABAHGiABQgA3A2AgAUF/NgJcIAFCfzcCVCABQgA3A2ggAUIANwNwIAFCADcDeCABQgA3A4ABIAFCADcDiAEgAUIANwOQASABQgA3ApwBIAFBgICA/AM2ApgBIAFCADcCpAEgAUIANwKsASABQgA3ArQBIAFCADcCvAEgAUIANwLEASABQgA3AswBIAFC/////w83AtQBIAFCADcC3AEgAUHoAWoQHhogAUGQAmoQHhogAUG4AmoiAkIANwIAIAJCADcABSABQcgCahAeGiABQgA3A4gDIAFCADcDgAMgAUIANwP4AiABQgA3A/ACIAFCADcDoAMgAUKCgICA8AA3A5gDIAFCfzcDkAMgAUIANwOoAyABQgA3A7ADIAELIQEgACgCMCECIAAgATYCMCACRQ0BIAIgAigCACgCBBECAAsgACgCMCIBDQBBAA8LIAEgACABKAIAKAIIEQEABUEACwsWACAAKAIwIgAgASAAKAIAKAIUEQEAC34BA38gAEGwzgA2AgAgACgCFCICBEAgACACNgIYIAIQBAsgACgCCCICBEAgACgCDCIDIAIiAUcEQANAIANBBGsiAygCACEBIANBADYCACABBEAgASABKAIAKAIEEQIACyACIANHDQALIAAoAgghAQsgACACNgIMIAEQBAsgAAsbACAAKAIsRQRAQQAPCyAAIAAoAgAoAjARAAAL7wIBCX8CQCABKAJYIgNFDQAgAygCAEEBRw0AIAAgAygCCCIGKAAANgIEIABBCGohBAJAIAAoAgwgACgCCCIHa0ECdSIFIAEtABgiAkkEQCAEIAIgBWsQCyABLQAYIQIgAygCCCEGDAELIAIgBU8NACAAIAcgAkECdGo2AgwLAkAgAkUEQEEEIQEMAQsgAkEDcSEHIAQoAgAhAwJAIAJBAWtBA0kEQEEEIQFBACECDAELIAJB/AFxIQpBACECQQQhAQNAIAMgAkECdCIEaiABIAZqIgUqAAA4AgAgAyAEQQRyaiAFKgAEOAIAIAMgBEEIcmogBSoACDgCACADIARBDHJqIAUqAAw4AgAgAkEEaiECIAFBEGohASAJQQRqIgkgCkcNAAsLIAdFDQADQCADIAJBAnRqIAEgBmoqAAA4AgAgAkEBaiECIAFBBGohASAIQQFqIgggB0cNAAsLIAAgASAGaioAADgCFEEBIQILIAIL7xUBGH8jAEEQayIOJAAgDiABNgIMIA5BIBAFIgE2AgAgDkKYgICAgISAgIB/NwIEIAFBqAkpAAA3ABAgAUGgCSkAADcACCABQZgJKQAANwAAIAFBADoAGCMAQTBrIgwkACAOKAIMIQUCQAJAIAAiAUEQaiIDKAIAIgJFDQAgAyEAA0AgACACIAIoAhAgBUgiBBshACACQQRqIAIgBBso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QQJHDQAgACABKAIIKAAANgIEQQEhAgsgAgsL31IHAEGECAuxPWAEAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAABONWRyYWNvMjhBdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtRQAA2CsAADgEAADgBgAAX19uZXh0X3ByaW1lIG92ZXJmbG93AHZlY3RvcgBzdGQ6OmV4Y2VwdGlvbgBza2lwX2F0dHJpYnV0ZV90cmFuc2Zvcm0AYmFkX2FycmF5X25ld19sZW5ndGgAYmFzaWNfc3RyaW5nAHN0ZDo6YmFkX2FsbG9jAERSQUNPAFVzaW5nIGluY29tcGF0aWJsZSBkZWNvZGVyIGZvciB0aGUgaW5wdXQgZ2VvbWV0cnkuAEZhaWxlZCB0byBkZWNvZGUgcG9pbnQgYXR0cmlidXRlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGRlY29kZXIuAFVuc3VwcG9ydGVkIG1pbm9yIHZlcnNpb24uAFVuc3VwcG9ydGVkIG1ham9yIHZlcnNpb24uAElucHV0IGlzIG5vdCBhIG1lc2guAFVuc3VwcG9ydGVkIGdlb21ldHJ5IHR5cGUuAE5vdCBhIERyYWNvIGZpbGUuAFVuc3VwcG9ydGVkIGVuY29kaW5nIG1ldGhvZC4ARmFpbGVkIHRvIGRlY29kZSBtZXRhZGF0YS4ARmFpbGVkIHRvIGRlY29kZSBnZW9tZXRyeSBkYXRhLgBQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQAAAAAAAAC0BgAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAACwAAABgAAAAZAAAATjVkcmFjbzMwQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtRQAAAADYKwAAiAYAAOAGAABONWRyYWNvMThBdHRyaWJ1dGVUcmFuc2Zvcm1FAAAAALArAADABgAAAAAAAGwHAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAABONWRyYWNvMTdBdHRyaWJ1dGVzRGVjb2RlckUATjVkcmFjbzI2QXR0cmlidXRlc0RlY29kZXJJbnRlcmZhY2VFAAAAALArAAA8BwAA2CsAACAHAABkBwAAAAAAAMwHAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAABONWRyYWNvMjZTZXF1ZW50aWFsQXR0cmlidXRlRGVjb2RlckUAAAAAsCsAAKQHAAD/////AAAAAEQIAAAvAAAAMAAAABwAAAAxAAAAMgAAAB8AAAAgAAAAIQAAADMAAAA0AAAANQAAADYAAAA3AAAATjVkcmFjbzM3U2VxdWVudGlhbEF0dHJpYnV0ZURlY29kZXJzQ29udHJvbGxlckUA2CsAABQIAABsBwAAAAAAALgIAAA4AAAAOQAAADoAAAApAAAAKgAAACsAAAA7AAAALQAAADwAAAA9AAAAPgAAAD8AAABAAAAATjVkcmFjbzMzU2VxdWVudGlhbEludGVnZXJBdHRyaWJ1dGVEZWNvZGVyRQDYKwAAjAgAAMwHAAAAAAAARAsAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE41ZHJhY280ME1lc2hQcmVkaWN0aW9uU2NoZW1lUGFyYWxsZWxvZ3JhbURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjNQcmVkaWN0aW9uU2NoZW1lRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVFRQBONWRyYWNvMzdQcmVkaWN0aW9uU2NoZW1lVHlwZWREZWNvZGVySW50ZXJmYWNlSWlpRUUATjVkcmFjbzMyUHJlZGljdGlvblNjaGVtZURlY29kZXJJbnRlcmZhY2VFAE41ZHJhY28yNVByZWRpY3Rpb25TY2hlbWVJbnRlcmZhY2VFALArAADoCgAA2CsAAL0KAAAMCwAA2CsAAIkKAAAUCwAA2CsAADUKAAAgCwAA2CsAAJ8JAAAsCwAA2CsAAPwIAAA4CwAAAAAAADgLAABBAAAATQAAACMAAABEAAAAIwAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAACMAAAAAAAAALAsAAEEAAABOAAAAIwAAAEQAAAAjAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAAIwAAAAAAAACsDAAATwAAAFAAAABRAAAARAAAAFIAAABGAAAARwAAAEgAAABJAAAASgAAAFMAAABUAAAATjVkcmFjbzU2TWVzaFByZWRpY3Rpb25TY2hlbWVDb25zdHJhaW5lZE11bHRpUGFyYWxsZWxvZ3JhbURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAA2CsAAPgLAAA4CwAAAAAAAJgNAABVAAAAVgAAAFcAAABEAAAAWAAAAFkAAABaAAAAWwAAAEkAAABKAAAAXAAAAF0AAABONWRyYWNvNDRNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc1BvcnRhYmxlRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAADYKwAA8AwAADgLAAAAAAAAhA4AAF4AAABfAAAAYAAAAEQAAABhAAAAYgAAAGMAAABkAAAASQAAAEoAAABlAAAAZgAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAAAAANgrAADcDQAAOAsAAAAAAAAMEAAAZwAAAGgAAABpAAAAagAAAGsAAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckJhc2VJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQAAALArAABXDwAA2CsAAKwOAAAEEAAAAAAAAAQQAABnAAAAbAAAACMAAABqAAAAIwAAAAAAAACYEQAAQQAAAG0AAABuAAAARAAAAG8AAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABwAAAATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRGVjb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQAA2CsAAAIRAAAsCwAA2CsAAGwQAACMEQAAAAAAAIwRAABBAAAAcQAAACMAAABEAAAAIwAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAACMAAAAAAAAAvBIAAHIAAABzAAAAdAAAAEQAAAB1AAAARgAAAEcAAABIAAAASQAAAEoAAAB2AAAAdwAAAE41ZHJhY281Nk1lc2hQcmVkaWN0aW9uU2NoZW1lQ29uc3RyYWluZWRNdWx0aVBhcmFsbGVsb2dyYW1EZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQAAANgrAAAUEgAAjBEAAAAAAACcEwAAeAAAAHkAAAB6AAAARAAAAHsAAAB8AAAAfQAAAH4AAABJAAAASgAAAH8AAACAAAAATjVkcmFjbzQ0TWVzaFByZWRpY3Rpb25TY2hlbWVUZXhDb29yZHNQb3J0YWJsZURlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAAAA2CsAAAATAACMEQAAAAAAAHgUAACBAAAAggAAAIMAAABEAAAAhAAAAIUAAACGAAAAhwAAAEkAAABKAAAAiAAAAIkAAABONWRyYWNvNDJNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbERlY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFANgrAADgEwAAjBEAAAAAAADkFQAAigAAAIsAAACMAAAAjQAAAI4AAABONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBEZWNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcERlY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUAsCsAAD4VAADYKwAAoBQAANwVAAAAAAAA3BUAAIoAAACPAAAAIwAAAI0AAAAjAAAAAAAAAKAWAABBAAAAkAAAAJEAAABEAAAAkgAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAJMAAABONWRyYWNvMjhQcmVkaWN0aW9uU2NoZW1lRGVsdGFEZWNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRGVjb2RpbmdUcmFuc2Zvcm1JaWlFRUVFAAAAANgrAABEFgAALAsAAAAAAAAUFwAAlAAAAJUAAACWAAAAKQAAACoAAACXAAAAOwAAAC0AAAA8AAAAmAAAAJkAAACaAAAAmwAAAE41ZHJhY28zMlNlcXVlbnRpYWxOb3JtYWxBdHRyaWJ1dGVEZWNvZGVyRQAA2CsAAOgWAAC4CAAAAAAAAEgZAACcAAAAnQAAAJ4AAACfAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAAKcAAABONWRyYWNvNDJNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbERlY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZURlY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjNQcmVkaWN0aW9uU2NoZW1lRGVjb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVFRQAA2CsAAMMYAAAgCwAA2CsAABUYAAAwGQAA2CsAAFgXAAA8GQAAAAAAAAAbAACoAAAAqQAAAKoAAACrAAAArAAAAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQXJlYUlpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAAAAsCsAADMaAADYKwAAcBkAAPgaAAAAAAAApBwAAK0AAACuAAAArwAAAJ8AAACwAAAAsQAAALIAAACzAAAApAAAAKUAAAC0AAAAtQAAAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRGVjb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWREZWNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVEZWNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQAAAADYKwAA9BsAADAZAADYKwAARBsAAJgcAAAAAAAAQB4AALYAAAC3AAAAuAAAALkAAAC6AAAATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckJhc2VJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRGVjb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFALArAACCHQAA2CsAAMwcAAA4HgAAAAAAAPgeAAC7AAAAvAAAAL0AAACfAAAAvgAAAL8AAADAAAAAwQAAAKQAAAClAAAAwgAAAMMAAABONWRyYWNvMjhQcmVkaWN0aW9uU2NoZW1lRGVsdGFEZWNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZERlY29kaW5nVHJhbnNmb3JtSWlFRUVFAAAAANgrAACEHgAAMBkAAAAAAAB8HwAAxAAAAMUAAADGAAAAKQAAACoAAADHAAAAOwAAAC0AAAA8AAAAyAAAAD4AAAA/AAAAyQAAAMoAAADLAAAATjVkcmFjbzM4U2VxdWVudGlhbFF1YW50aXphdGlvbkF0dHJpYnV0ZURlY29kZXJFAAAAANgrAABIHwAAuAgAAAAAAADcHwAAzAAAAM0AAADOAAAAzwAAACMAAADQAAAA0QAAANIAAADTAAAA1AAAANUAAADWAAAAIwAAAE41ZHJhY28xMU1lc2hEZWNvZGVyRQAAANgrAADEHwAAnCcAAAAAAABIIAAA1wAAANgAAADOAAAA2QAAANoAAADQAAAA0QAAANIAAADbAAAA3AAAAN0AAADeAAAA3wAAAE41ZHJhY28yMk1lc2hFZGdlYnJlYWtlckRlY29kZXJFAAAAANgrAAAkIAAA3B8AAAAAAAA8IQAA4AAAAOEAAADiAAAA4wAAAOQAAADlAAAA5gAAAOcAAADoAAAA6QAAAP////8AAAAAnCEAAOoAAADrAAAA7AAAAO0AAADuAAAA7wAAAPAAAADxAAAA8gAAAPMAAABONWRyYWNvMjZNZXNoRWRnZWJyZWFrZXJEZWNvZGVySW1wbElOU18zMU1lc2hFZGdlYnJlYWtlclRyYXZlcnNhbERlY29kZXJFRUUATjVkcmFjbzM1TWVzaEVkZ2VicmVha2VyRGVjb2RlckltcGxJbnRlcmZhY2VFAAAAsCsAAAQhAADYKwAAuCAAADQhAABONWRyYWNvMjZNZXNoRWRnZWJyZWFrZXJEZWNvZGVySW1wbElOU18zOE1lc2hFZGdlYnJlYWtlclRyYXZlcnNhbFZhbGVuY2VEZWNvZGVyRUVFAADYKwAASCEAADQhAAAAAAAAmCIAAPQAAAD1AAAA9gAAAE41ZHJhY28xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQBONWRyYWNvMTNUcmF2ZXJzZXJCYXNlSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUAsCsAACkiAADYKwAAvCEAAJAiAAAAAAAAkCIAAPcAAAD4AAAA9gBBxMUAC7YHAQAAAAMAAAAFAAAABwAAAAAAAACYIwAA+QAAAPoAAAD7AAAA/AAAAE41ZHJhY28yMk1lc2hUcmF2ZXJzYWxTZXF1ZW5jZXJJTlNfMjhNYXhQcmVkaWN0aW9uRGVncmVlVHJhdmVyc2VySU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzJfRUVFRUVFAE41ZHJhY28xNVBvaW50c1NlcXVlbmNlckUAAAAAsCsAAHMjAADYKwAA7CIAAJAjAAD/////AAAAAIgkAAD9AAAA/gAAAP8AAABONWRyYWNvMjhNYXhQcmVkaWN0aW9uRGVncmVlVHJhdmVyc2VySU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQBONWRyYWNvMTNUcmF2ZXJzZXJCYXNlSU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQAAsCsAACUkAADYKwAAvCMAAIAkAAAAAAAAgCQAAAABAAABAQAA/wAAAAAAAABAJQAAAgEAAAMBAAAEAQAABQEAAE41ZHJhY28yMk1lc2hUcmF2ZXJzYWxTZXF1ZW5jZXJJTlNfMTlEZXB0aEZpcnN0VHJhdmVyc2VySU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzJfRUVFRUVFAAAA2CsAAMAkAACQIwAAAAAAAMAlAAAGAQAABwEAAP8AAABONWRyYWNvMTlEZXB0aEZpcnN0VHJhdmVyc2VySU5TXzExQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQDYKwAAYCUAAIAkAAAAAAAAcCYAAAgBAAAJAQAACgEAAAsBAABONWRyYWNvMjJNZXNoVHJhdmVyc2FsU2VxdWVuY2VySU5TXzE5RGVwdGhGaXJzdFRyYXZlcnNlcklOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVOU18zNk1lc2hBdHRyaWJ1dGVJbmRpY2VzRW5jb2RpbmdPYnNlcnZlcklTMl9FRUVFRUUAANgrAADkJQAAkCMAQYTNAAvNAdwmAADMAAAADAEAAM4AAADPAAAADQEAANAAAADRAAAA0gAAANMAAADUAAAA1QAAANYAAAAOAQAATjVkcmFjbzIxTWVzaFNlcXVlbnRpYWxEZWNvZGVyRQDYKwAAvCYAANwfAAAAAAAAHCcAAA8BAAAQAQAAEQEAABIBAABONWRyYWNvMTVMaW5lYXJTZXF1ZW5jZXJFAAAA2CsAAAAnAACQIwAAAAAAAJwnAADMAAAAEwEAABQBAADPAAAAIwAAABUBAADRAAAA0gAAANMAQeDOAAttRmFpbGVkIHRvIHBhcnNlIERyYWNvIGhlYWRlci4ATjVkcmFjbzE3UG9pbnRDbG91ZERlY29kZXJFAAAAsCsAAH4nAAABAAAAAQAAAAIAAAACAAAABAAAAAQAAAAIAAAACAAAAAQAAAAIAAAAAQBB488AC4cBwAAAAMAAAADAAAAAwP//////////AAAAACAoAAAWAQAAFwEAABgBAAAZAQAATjVkcmFjbzRNZXNoRQAAANgrAAAQKAAAZCgAAP////8AAAAAAAAAAGQoAAAaAQAAGwEAABwBAAAdAQAATjVkcmFjbzEwUG9pbnRDbG91ZEUAAAAAsCsAAEwoAEH00AAL/gkCAAAAAwAAAAUAAAAHAAAACwAAAA0AAAARAAAAEwAAABcAAAAdAAAAHwAAACUAAAApAAAAKwAAAC8AAAA1AAAAOwAAAD0AAABDAAAARwAAAEkAAABPAAAAUwAAAFkAAABhAAAAZQAAAGcAAABrAAAAbQAAAHEAAAB/AAAAgwAAAIkAAACLAAAAlQAAAJcAAACdAAAAowAAAKcAAACtAAAAswAAALUAAAC/AAAAwQAAAMUAAADHAAAA0wAAAAEAAAALAAAADQAAABEAAAATAAAAFwAAAB0AAAAfAAAAJQAAACkAAAArAAAALwAAADUAAAA7AAAAPQAAAEMAAABHAAAASQAAAE8AAABTAAAAWQAAAGEAAABlAAAAZwAAAGsAAABtAAAAcQAAAHkAAAB/AAAAgwAAAIkAAACLAAAAjwAAAJUAAACXAAAAnQAAAKMAAACnAAAAqQAAAK0AAACzAAAAtQAAALsAAAC/AAAAwQAAAMUAAADHAAAA0QAAAAAAAAAKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BQDKmjsAAAAAAAAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5TjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAA2CsAAOgqAABsLQAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAA2CsAABgrAAAMKwAATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAAAA2CsAAEgrAAAMKwAATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UA2CsAAHgrAABsKwAAAAAAADwrAAAeAQAAHwEAACABAAAhAQAAIgEAACMBAAAkAQAAJQEAAAAAAAAgLAAAHgEAACYBAAAgAQAAIQEAACIBAAAnAQAAKAEAACkBAABOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UAAAAA2CsAAPgrAAA8KwAAAAAAAJAsAAAOAAAAKgEAACsBAAAAAAAAuCwAAA4AAAAsAQAALQEAAAAAAAB4LAAADgAAAC4BAAAvAQAAU3Q5ZXhjZXB0aW9uAAAAALArAABoLAAAU3Q5YmFkX2FsbG9jAAAAANgrAACALAAAeCwAAFN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aAAAAADYKwAAnCwAAJAsAAAAAAAA6CwAAAEAAAAwAQAAMQEAAFN0MTFsb2dpY19lcnJvcgDYKwAA2CwAAHgsAAAAAAAAHC0AAAEAAAAyAQAAMQEAAFN0MTJsZW5ndGhfZXJyb3IAAAAA2CsAAAgtAADoLAAAAAAAAFAtAAABAAAAMwEAADEBAABTdDEyb3V0X29mX3JhbmdlAAAAANgrAAA8LQAA6CwAAFN0OXR5cGVfaW5mbwAAAACwKwAAXC0AQfTaAAsD8C8B", "dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGgpe3ZhciBuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG48aC5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6aFtuKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oaCl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChoKX19OyRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGgpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmhbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwoaCk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGgpfTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTsKJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihoKXtoPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsaCwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIG49MDtuPGgubGVuZ3RoOysrbil7dmFyIGs9aFtuXTtpZihrJiZrLk1hdGg9PU1hdGgpcmV0dXJuIGt9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOwokanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihoLG4sayl7aWYoaD09QXJyYXkucHJvdG90eXBlfHxoPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBoO2hbbl09ay52YWx1ZTtyZXR1cm4gaH07JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTskanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjsKdmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGgsbil7dmFyIGs9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbbl07aWYobnVsbD09aylyZXR1cm4gaFtuXTtrPWhba107cmV0dXJuIHZvaWQgMCE9PWs/azpoW25dfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGgsbixrLHApe24mJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChoLG4sayxwKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChoLG4sayxwKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihoLG4sayxwKXtrPSRqc2NvbXAuZ2xvYmFsO2g9aC5zcGxpdCgiLiIpO2ZvcihwPTA7cDxoLmxlbmd0aC0xO3ArKyl7dmFyIGw9aFtwXTtpZighKGwgaW4gaykpcmV0dXJuO2s9a1tsXX1oPWhbaC5sZW5ndGgtMV07cD1rW2hdO249bihwKTtuIT1wJiZudWxsIT1uJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGssaCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm59KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihoLG4sayxwKXt2YXIgbD1oLnNwbGl0KCIuIik7aD0xPT09bC5sZW5ndGg7cD1sWzBdO3A9IWgmJnAgaW4gJGpzY29tcC5wb2x5ZmlsbHM/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciB5PTA7eTxsLmxlbmd0aC0xO3krKyl7dmFyIGY9bFt5XTtpZighKGYgaW4gcCkpcmV0dXJuO3A9cFtmXX1sPWxbbC5sZW5ndGgtMV07az0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09az9wW2xdOm51bGw7bj1uKGspO251bGwhPW4mJihoPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsbCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm59KTpuIT09ayYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2xdJiYoaz0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbbF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2wobCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgraysiJCIrbCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShwLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2xdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bn0pKSl9OwokanNjb21wLnBvbHlmaWxsKCJQcm9taXNlIixmdW5jdGlvbihoKXtmdW5jdGlvbiBuKCl7dGhpcy5iYXRjaF89bnVsbH1mdW5jdGlvbiBrKGYpe3JldHVybiBmIGluc3RhbmNlb2YgbD9mOm5ldyBsKGZ1bmN0aW9uKHEsdSl7cShmKX0pfWlmKGgmJighKCRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRXx8JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTiYmInVuZGVmaW5lZCI9PT10eXBlb2YgJGpzY29tcC5nbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KXx8ISRqc2NvbXAuZ2xvYmFsLlByb21pc2V8fC0xPT09JGpzY29tcC5nbG9iYWwuUHJvbWlzZS50b1N0cmluZygpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGg7bi5wcm90b3R5cGUuYXN5bmNFeGVjdXRlPWZ1bmN0aW9uKGYpe2lmKG51bGw9PXRoaXMuYmF0Y2hfKXt0aGlzLmJhdGNoXz1bXTt2YXIgcT10aGlzO3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXtxLmV4ZWN1dGVCYXRjaF8oKX0pfXRoaXMuYmF0Y2hfLnB1c2goZil9Owp2YXIgcD0kanNjb21wLmdsb2JhbC5zZXRUaW1lb3V0O24ucHJvdG90eXBlLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uPWZ1bmN0aW9uKGYpe3AoZiwwKX07bi5wcm90b3R5cGUuZXhlY3V0ZUJhdGNoXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5iYXRjaF8mJnRoaXMuYmF0Y2hfLmxlbmd0aDspe3ZhciBmPXRoaXMuYmF0Y2hfO3RoaXMuYmF0Y2hfPVtdO2Zvcih2YXIgcT0wO3E8Zi5sZW5ndGg7KytxKXt2YXIgdT1mW3FdO2ZbcV09bnVsbDt0cnl7dSgpfWNhdGNoKEEpe3RoaXMuYXN5bmNUaHJvd18oQSl9fX10aGlzLmJhdGNoXz1udWxsfTtuLnByb3RvdHlwZS5hc3luY1Rocm93Xz1mdW5jdGlvbihmKXt0aGlzLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uKGZ1bmN0aW9uKCl7dGhyb3cgZjt9KX07dmFyIGw9ZnVuY3Rpb24oZil7dGhpcy5zdGF0ZV89MDt0aGlzLnJlc3VsdF89dm9pZCAwO3RoaXMub25TZXR0bGVkQ2FsbGJhY2tzXz1bXTt0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF89ITE7dmFyIHE9dGhpcy5jcmVhdGVSZXNvbHZlQW5kUmVqZWN0XygpOwp0cnl7ZihxLnJlc29sdmUscS5yZWplY3QpfWNhdGNoKHUpe3EucmVqZWN0KHUpfX07bC5wcm90b3R5cGUuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKEEpe3JldHVybiBmdW5jdGlvbihGKXt1fHwodT0hMCxBLmNhbGwocSxGKSl9fXZhciBxPXRoaXMsdT0hMTtyZXR1cm57cmVzb2x2ZTpmKHRoaXMucmVzb2x2ZVRvXykscmVqZWN0OmYodGhpcy5yZWplY3RfKX19O2wucHJvdG90eXBlLnJlc29sdmVUb189ZnVuY3Rpb24oZil7aWYoZj09PXRoaXMpdGhpcy5yZWplY3RfKG5ldyBUeXBlRXJyb3IoIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk7ZWxzZSBpZihmIGluc3RhbmNlb2YgbCl0aGlzLnNldHRsZVNhbWVBc1Byb21pc2VfKGYpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGYpe2Nhc2UgIm9iamVjdCI6dmFyIHE9bnVsbCE9ZjticmVhayBhO2Nhc2UgImZ1bmN0aW9uIjpxPSEwO2JyZWFrIGE7ZGVmYXVsdDpxPSExfXE/dGhpcy5yZXNvbHZlVG9Ob25Qcm9taXNlT2JqXyhmKToKdGhpcy5mdWxmaWxsXyhmKX19O2wucHJvdG90eXBlLnJlc29sdmVUb05vblByb21pc2VPYmpfPWZ1bmN0aW9uKGYpe3ZhciBxPXZvaWQgMDt0cnl7cT1mLnRoZW59Y2F0Y2godSl7dGhpcy5yZWplY3RfKHUpO3JldHVybn0iZnVuY3Rpb24iPT10eXBlb2YgcT90aGlzLnNldHRsZVNhbWVBc1RoZW5hYmxlXyhxLGYpOnRoaXMuZnVsZmlsbF8oZil9O2wucHJvdG90eXBlLnJlamVjdF89ZnVuY3Rpb24oZil7dGhpcy5zZXR0bGVfKDIsZil9O2wucHJvdG90eXBlLmZ1bGZpbGxfPWZ1bmN0aW9uKGYpe3RoaXMuc2V0dGxlXygxLGYpfTtsLnByb3RvdHlwZS5zZXR0bGVfPWZ1bmN0aW9uKGYscSl7aWYoMCE9dGhpcy5zdGF0ZV8pdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIitmKyIsICIrcSsiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuc3RhdGVfKTt0aGlzLnN0YXRlXz1mO3RoaXMucmVzdWx0Xz1xOzI9PT10aGlzLnN0YXRlXyYmdGhpcy5zY2hlZHVsZVVuaGFuZGxlZFJlamVjdGlvbkNoZWNrXygpOwp0aGlzLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfKCl9O2wucHJvdG90eXBlLnNjaGVkdWxlVW5oYW5kbGVkUmVqZWN0aW9uQ2hlY2tfPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcztwKGZ1bmN0aW9uKCl7aWYoZi5ub3RpZnlVbmhhbmRsZWRSZWplY3Rpb25fKCkpe3ZhciBxPSRqc2NvbXAuZ2xvYmFsLmNvbnNvbGU7InVuZGVmaW5lZCIhPT10eXBlb2YgcSYmcS5lcnJvcihmLnJlc3VsdF8pfX0sMSl9O2wucHJvdG90eXBlLm5vdGlmeVVuaGFuZGxlZFJlamVjdGlvbl89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF8pcmV0dXJuITE7dmFyIGY9JGpzY29tcC5nbG9iYWwuQ3VzdG9tRXZlbnQscT0kanNjb21wLmdsb2JhbC5FdmVudCx1PSRqc2NvbXAuZ2xvYmFsLmRpc3BhdGNoRXZlbnQ7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgdSlyZXR1cm4hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGY/Zj1uZXcgZigidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOgoiZnVuY3Rpb24iPT09dHlwZW9mIHE/Zj1uZXcgcSgidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOihmPSRqc2NvbXAuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpLGYuaW5pdEN1c3RvbUV2ZW50KCJ1bmhhbmRsZWRyZWplY3Rpb24iLCExLCEwLGYpKTtmLnByb21pc2U9dGhpcztmLnJlYXNvbj10aGlzLnJlc3VsdF87cmV0dXJuIHUoZil9O2wucHJvdG90eXBlLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5vblNldHRsZWRDYWxsYmFja3NfKXtmb3IodmFyIGY9MDtmPHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5sZW5ndGg7KytmKXkuYXN5bmNFeGVjdXRlKHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzX1tmXSk7dGhpcy5vblNldHRsZWRDYWxsYmFja3NfPW51bGx9fTt2YXIgeT1uZXcgbjtsLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNQcm9taXNlXz1mdW5jdGlvbihmKXt2YXIgcT10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7CmYuY2FsbFdoZW5TZXR0bGVkXyhxLnJlc29sdmUscS5yZWplY3QpfTtsLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNUaGVuYWJsZV89ZnVuY3Rpb24oZixxKXt2YXIgdT10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7dHJ5e2YuY2FsbChxLHUucmVzb2x2ZSx1LnJlamVjdCl9Y2F0Y2goQSl7dS5yZWplY3QoQSl9fTtsLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGYscSl7ZnVuY3Rpb24gdSh3LEIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB3P2Z1bmN0aW9uKFIpe3RyeXtBKHcoUikpfWNhdGNoKFope0YoWil9fTpCfXZhciBBLEYsdj1uZXcgbChmdW5jdGlvbih3LEIpe0E9dztGPUJ9KTt0aGlzLmNhbGxXaGVuU2V0dGxlZF8odShmLEEpLHUocSxGKSk7cmV0dXJuIHZ9O2wucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGYpfTtsLnByb3RvdHlwZS5jYWxsV2hlblNldHRsZWRfPWZ1bmN0aW9uKGYscSl7ZnVuY3Rpb24gdSgpe3N3aXRjaChBLnN0YXRlXyl7Y2FzZSAxOmYoQS5yZXN1bHRfKTsKYnJlYWs7Y2FzZSAyOnEoQS5yZXN1bHRfKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJVbmV4cGVjdGVkIHN0YXRlOiAiK0Euc3RhdGVfKTt9fXZhciBBPXRoaXM7bnVsbD09dGhpcy5vblNldHRsZWRDYWxsYmFja3NfP3kuYXN5bmNFeGVjdXRlKHUpOnRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5wdXNoKHUpO3RoaXMuaXNSZWplY3Rpb25IYW5kbGVkXz0hMH07bC5yZXNvbHZlPWs7bC5yZWplY3Q9ZnVuY3Rpb24oZil7cmV0dXJuIG5ldyBsKGZ1bmN0aW9uKHEsdSl7dShmKX0pfTtsLnJhY2U9ZnVuY3Rpb24oZil7cmV0dXJuIG5ldyBsKGZ1bmN0aW9uKHEsdSl7Zm9yKHZhciBBPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGYpLEY9QS5uZXh0KCk7IUYuZG9uZTtGPUEubmV4dCgpKWsoRi52YWx1ZSkuY2FsbFdoZW5TZXR0bGVkXyhxLHUpfSl9O2wuYWxsPWZ1bmN0aW9uKGYpe3ZhciBxPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGYpLHU9cS5uZXh0KCk7cmV0dXJuIHUuZG9uZT9rKFtdKTpuZXcgbChmdW5jdGlvbihBLApGKXtmdW5jdGlvbiB2KFIpe3JldHVybiBmdW5jdGlvbihaKXt3W1JdPVo7Qi0tOzA9PUImJkEodyl9fXZhciB3PVtdLEI9MDtkbyB3LnB1c2godm9pZCAwKSxCKyssayh1LnZhbHVlKS5jYWxsV2hlblNldHRsZWRfKHYody5sZW5ndGgtMSksRiksdT1xLm5leHQoKTt3aGlsZSghdS5kb25lKX0pfTtyZXR1cm4gbH0sImVzNiIsImVzMyIpOyRqc2NvbXAub3ducz1mdW5jdGlvbihoLG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaCxuKX07JGpzY29tcC5hc3NpZ249JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGgsbil7Zm9yKHZhciBrPTE7azxhcmd1bWVudHMubGVuZ3RoO2srKyl7dmFyIHA9YXJndW1lbnRzW2tdO2lmKHApZm9yKHZhciBsIGluIHApJGpzY29tcC5vd25zKHAsbCkmJihoW2xdPXBbbF0pfXJldHVybiBofTsKJGpzY29tcC5wb2x5ZmlsbCgiT2JqZWN0LmFzc2lnbiIsZnVuY3Rpb24oaCl7cmV0dXJuIGh8fCRqc2NvbXAuYXNzaWdufSwiZXM2IiwiZXMzIik7JGpzY29tcC5jaGVja1N0cmluZ0FyZ3M9ZnVuY3Rpb24oaCxuLGspe2lmKG51bGw9PWgpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlICd0aGlzJyB2YWx1ZSBmb3IgU3RyaW5nLnByb3RvdHlwZS4iK2srIiBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO2lmKG4gaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS4iK2srIiBtdXN0IG5vdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiIpO3JldHVybiBoKyIifTsKJGpzY29tcC5wb2x5ZmlsbCgiU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIixmdW5jdGlvbihoKXtyZXR1cm4gaD9oOmZ1bmN0aW9uKG4sayl7dmFyIHA9JGpzY29tcC5jaGVja1N0cmluZ0FyZ3ModGhpcyxuLCJzdGFydHNXaXRoIik7bis9IiI7dmFyIGw9cC5sZW5ndGgseT1uLmxlbmd0aDtrPU1hdGgubWF4KDAsTWF0aC5taW4oa3wwLHAubGVuZ3RoKSk7Zm9yKHZhciBmPTA7Zjx5JiZrPGw7KWlmKHBbaysrXSE9bltmKytdKXJldHVybiExO3JldHVybiBmPj15fX0sImVzNiIsImVzMyIpOwokanNjb21wLnBvbHlmaWxsKCJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsZnVuY3Rpb24oaCl7ZnVuY3Rpb24gbihrKXtrPU51bWJlcihrKTtyZXR1cm4gSW5maW5pdHk9PT1rfHwtSW5maW5pdHk9PT1rP2s6a3wwfXJldHVybiBoP2g6ZnVuY3Rpb24oayxwLGwpe3ZhciB5PXRoaXMubGVuZ3RoO2s9bihrKTtwPW4ocCk7bD12b2lkIDA9PT1sP3k6bihsKTtrPTA+az9NYXRoLm1heCh5K2ssMCk6TWF0aC5taW4oayx5KTtwPTA+cD9NYXRoLm1heCh5K3AsMCk6TWF0aC5taW4ocCx5KTtsPTA+bD9NYXRoLm1heCh5K2wsMCk6TWF0aC5taW4obCx5KTtpZihrPHApZm9yKDtwPGw7KXAgaW4gdGhpcz90aGlzW2srK109dGhpc1twKytdOihkZWxldGUgdGhpc1trKytdLHArKyk7ZWxzZSBmb3IobD1NYXRoLm1pbihsLHkrcC1rKSxrKz1sLXA7bD5wOyktLWwgaW4gdGhpcz90aGlzWy0ta109dGhpc1tsXTpkZWxldGUgdGhpc1stLWtdO3JldHVybiB0aGlzfX0sImVzNiIsImVzMyIpOwokanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluPWZ1bmN0aW9uKGgpe3JldHVybiBoP2g6QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW59OyRqc2NvbXAucG9seWZpbGwoIkludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiVWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIkludDE2QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOwokanNjb21wLnBvbHlmaWxsKCJVaW50MTZBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiSW50MzJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiVWludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLCRqc2NvbXAudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpOyRqc2NvbXAucG9seWZpbGwoIkZsb2F0MzJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsJGpzY29tcC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7JGpzY29tcC5wb2x5ZmlsbCgiRmxvYXQ2NEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIiwkanNjb21wLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTsKdmFyIERyYWNvRGVjb2Rlck1vZHVsZT1mdW5jdGlvbigpe3ZhciBoPSJ1bmRlZmluZWQiIT09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5jdXJyZW50U2NyaXB0P2RvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjOnZvaWQgMDsidW5kZWZpbmVkIiE9PXR5cGVvZiBfX2ZpbGVuYW1lJiYoaD1ofHxfX2ZpbGVuYW1lKTtyZXR1cm4gZnVuY3Rpb24obil7ZnVuY3Rpb24gayhlKXtyZXR1cm4gYS5sb2NhdGVGaWxlP2EubG9jYXRlRmlsZShlLFUpOlUrZX1mdW5jdGlvbiBwKGUsYil7aWYoZSl7dmFyIGM9aWE7dmFyIGQ9ZStiO2ZvcihiPWU7Y1tiXSYmIShiPj1kKTspKytiO2lmKDE2PGItZSYmYy5idWZmZXImJnJhKWM9cmEuZGVjb2RlKGMuc3ViYXJyYXkoZSxiKSk7ZWxzZXtmb3IoZD0iIjtlPGI7KXt2YXIgZz1jW2UrK107aWYoZyYxMjgpe3ZhciB0PWNbZSsrXSY2MztpZigxOTI9PShnJjIyNCkpZCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoZyYzMSk8PDZ8dCk7ZWxzZXt2YXIgYWE9Y1tlKytdJgo2MztnPTIyND09KGcmMjQwKT8oZyYxNSk8PDEyfHQ8PDZ8YWE6KGcmNyk8PDE4fHQ8PDEyfGFhPDw2fGNbZSsrXSY2Mzs2NTUzNj5nP2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk6KGctPTY1NTM2LGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Zz4+MTAsNTYzMjB8ZyYxMDIzKSl9fWVsc2UgZCs9U3RyaW5nLmZyb21DaGFyQ29kZShnKX1jPWR9fWVsc2UgYz0iIjtyZXR1cm4gY31mdW5jdGlvbiBsKCl7dmFyIGU9amEuYnVmZmVyO2EuSEVBUDg9Vz1uZXcgSW50OEFycmF5KGUpO2EuSEVBUDE2PW5ldyBJbnQxNkFycmF5KGUpO2EuSEVBUDMyPWNhPW5ldyBJbnQzMkFycmF5KGUpO2EuSEVBUFU4PWlhPW5ldyBVaW50OEFycmF5KGUpO2EuSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoZSk7YS5IRUFQVTMyPVk9bmV3IFVpbnQzMkFycmF5KGUpO2EuSEVBUEYzMj1uZXcgRmxvYXQzMkFycmF5KGUpO2EuSEVBUEY2ND1uZXcgRmxvYXQ2NEFycmF5KGUpfWZ1bmN0aW9uIHkoZSl7aWYoYS5vbkFib3J0KWEub25BYm9ydChlKTsKZT0iQWJvcnRlZCgiK2UrIikiO2RhKGUpO3NhPSEwO2U9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKyIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIik7a2EoZSk7dGhyb3cgZTt9ZnVuY3Rpb24gZihlKXt0cnl7aWYoZT09UCYmZWEpcmV0dXJuIG5ldyBVaW50OEFycmF5KGVhKTtpZihtYSlyZXR1cm4gbWEoZSk7dGhyb3ciYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQiO31jYXRjaChiKXt5KGIpfX1mdW5jdGlvbiBxKCl7aWYoIWVhJiYodGF8fGZhKSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGZldGNoJiYhUC5zdGFydHNXaXRoKCJmaWxlOi8vIikpcmV0dXJuIGZldGNoKFAse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKGZ1bmN0aW9uKGUpe2lmKCFlLm9rKXRocm93ImZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJyIrUCsiJyI7cmV0dXJuIGUuYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIGYoUCl9KTsKaWYobmEpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsYil7bmEoUCxmdW5jdGlvbihjKXtlKG5ldyBVaW50OEFycmF5KGMpKX0sYil9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBmKFApfSl9ZnVuY3Rpb24gdShlKXtmb3IoOzA8ZS5sZW5ndGg7KWUuc2hpZnQoKShhKX1mdW5jdGlvbiBBKGUpe3RoaXMuZXhjUHRyPWU7dGhpcy5wdHI9ZS0yNDt0aGlzLnNldF90eXBlPWZ1bmN0aW9uKGIpe1lbdGhpcy5wdHIrND4+Ml09Yn07dGhpcy5nZXRfdHlwZT1mdW5jdGlvbigpe3JldHVybiBZW3RoaXMucHRyKzQ+PjJdfTt0aGlzLnNldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKGIpe1lbdGhpcy5wdHIrOD4+Ml09Yn07dGhpcy5nZXRfZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBZW3RoaXMucHRyKzg+PjJdfTt0aGlzLnNldF9yZWZjb3VudD1mdW5jdGlvbihiKXtjYVt0aGlzLnB0cj4+Ml09Yn07dGhpcy5zZXRfY2F1Z2h0PWZ1bmN0aW9uKGIpe1dbdGhpcy5wdHIrCjEyPj4wXT1iPzE6MH07dGhpcy5nZXRfY2F1Z2h0PWZ1bmN0aW9uKCl7cmV0dXJuIDAhPVdbdGhpcy5wdHIrMTI+PjBdfTt0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihiKXtXW3RoaXMucHRyKzEzPj4wXT1iPzE6MH07dGhpcy5nZXRfcmV0aHJvd249ZnVuY3Rpb24oKXtyZXR1cm4gMCE9V1t0aGlzLnB0cisxMz4+MF19O3RoaXMuaW5pdD1mdW5jdGlvbihiLGMpe3RoaXMuc2V0X2FkanVzdGVkX3B0cigwKTt0aGlzLnNldF90eXBlKGIpO3RoaXMuc2V0X2Rlc3RydWN0b3IoYyk7dGhpcy5zZXRfcmVmY291bnQoMCk7dGhpcy5zZXRfY2F1Z2h0KCExKTt0aGlzLnNldF9yZXRocm93bighMSl9O3RoaXMuYWRkX3JlZj1mdW5jdGlvbigpe2NhW3RoaXMucHRyPj4yXSs9MX07dGhpcy5yZWxlYXNlX3JlZj1mdW5jdGlvbigpe3ZhciBiPWNhW3RoaXMucHRyPj4yXTtjYVt0aGlzLnB0cj4+Ml09Yi0xO3JldHVybiAxPT09Yn07dGhpcy5zZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKGIpe1lbdGhpcy5wdHIrCjE2Pj4yXT1ifTt0aGlzLmdldF9hZGp1c3RlZF9wdHI9ZnVuY3Rpb24oKXtyZXR1cm4gWVt0aGlzLnB0cisxNj4+Ml19O3RoaXMuZ2V0X2V4Y2VwdGlvbl9wdHI9ZnVuY3Rpb24oKXtpZih1YSh0aGlzLmdldF90eXBlKCkpKXJldHVybiBZW3RoaXMuZXhjUHRyPj4yXTt2YXIgYj10aGlzLmdldF9hZGp1c3RlZF9wdHIoKTtyZXR1cm4gMCE9PWI/Yjp0aGlzLmV4Y1B0cn19ZnVuY3Rpb24gRigpe2Z1bmN0aW9uIGUoKXtpZighbGEmJihsYT0hMCxhLmNhbGxlZFJ1bj0hMCwhc2EpKXt2YT0hMDt1KG9hKTt3YShhKTtpZihhLm9uUnVudGltZUluaXRpYWxpemVkKWEub25SdW50aW1lSW5pdGlhbGl6ZWQoKTtpZihhLnBvc3RSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2EucG9zdFJ1bi5sZW5ndGg7KXhhLnVuc2hpZnQoYS5wb3N0UnVuLnNoaWZ0KCkpO3UoeGEpfX1pZighKDA8YmEpKXtpZihhLnByZVJ1bilmb3IoImZ1bmN0aW9uIj09CnR5cGVvZiBhLnByZVJ1biYmKGEucHJlUnVuPVthLnByZVJ1bl0pO2EucHJlUnVuLmxlbmd0aDspeWEudW5zaGlmdChhLnByZVJ1bi5zaGlmdCgpKTt1KHlhKTswPGJhfHwoYS5zZXRTdGF0dXM/KGEuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnNldFN0YXR1cygiIil9LDEpO2UoKX0sMSkpOmUoKSl9fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gdyhlKXtyZXR1cm4oZXx8dikuX19jYWNoZV9ffWZ1bmN0aW9uIEIoZSxiKXt2YXIgYz13KGIpLGQ9Y1tlXTtpZihkKXJldHVybiBkO2Q9T2JqZWN0LmNyZWF0ZSgoYnx8dikucHJvdG90eXBlKTtkLnB0cj1lO3JldHVybiBjW2VdPWR9ZnVuY3Rpb24gUihlKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXtmb3IodmFyIGI9MCxjPTA7YzxlLmxlbmd0aDsrK2Mpe3ZhciBkPWUuY2hhckNvZGVBdChjKTsxMjc+PWQ/YisrOjIwNDc+PWQ/Yis9Mjo1NTI5Njw9ZCYmNTczNDM+PQpkPyhiKz00LCsrYyk6Yis9M31iPUFycmF5KGIrMSk7Yz0wO2Q9Yi5sZW5ndGg7aWYoMDxkKXtkPWMrZC0xO2Zvcih2YXIgZz0wO2c8ZS5sZW5ndGg7KytnKXt2YXIgdD1lLmNoYXJDb2RlQXQoZyk7aWYoNTUyOTY8PXQmJjU3MzQzPj10KXt2YXIgYWE9ZS5jaGFyQ29kZUF0KCsrZyk7dD02NTUzNisoKHQmMTAyMyk8PDEwKXxhYSYxMDIzfWlmKDEyNz49dCl7aWYoYz49ZClicmVhaztiW2MrK109dH1lbHNle2lmKDIwNDc+PXQpe2lmKGMrMT49ZClicmVhaztiW2MrK109MTkyfHQ+PjZ9ZWxzZXtpZig2NTUzNT49dCl7aWYoYysyPj1kKWJyZWFrO2JbYysrXT0yMjR8dD4+MTJ9ZWxzZXtpZihjKzM+PWQpYnJlYWs7YltjKytdPTI0MHx0Pj4xODtiW2MrK109MTI4fHQ+PjEyJjYzfWJbYysrXT0xMjh8dD4+NiY2M31iW2MrK109MTI4fHQmNjN9fWJbY109MH1lPXIuYWxsb2MoYixXKTtyLmNvcHkoYixXLGUpO3JldHVybiBlfXJldHVybiBlfWZ1bmN0aW9uIFooZSl7aWYoIm9iamVjdCI9PT0KdHlwZW9mIGUpe3ZhciBiPXIuYWxsb2MoZSxXKTtyLmNvcHkoZSxXLGIpO3JldHVybiBifXJldHVybiBlfWZ1bmN0aW9uIFgoKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgVm9pZFB0ciwgbm8gY29uc3RydWN0b3IgaW4gSURMIjt9ZnVuY3Rpb24gUygpe3RoaXMucHRyPXphKCk7dyhTKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBRKCl7dGhpcy5wdHI9QWEoKTt3KFEpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFYoKXt0aGlzLnB0cj1CYSgpO3coVilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24geCgpe3RoaXMucHRyPUNhKCk7dyh4KVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBEKCl7dGhpcy5wdHI9RGEoKTt3KEQpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEcoKXt0aGlzLnB0cj1FYSgpO3coRylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gSCgpe3RoaXMucHRyPUZhKCk7dyhIKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBFKCl7dGhpcy5wdHI9R2EoKTt3KEUpW3RoaXMucHRyXT0KdGhpc31mdW5jdGlvbiBUKCl7dGhpcy5wdHI9SGEoKTt3KFQpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEMoKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgU3RhdHVzLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiO31mdW5jdGlvbiBJKCl7dGhpcy5wdHI9SWEoKTt3KEkpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEooKXt0aGlzLnB0cj1KYSgpO3coSilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gSygpe3RoaXMucHRyPUthKCk7dyhLKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBMKCl7dGhpcy5wdHI9TGEoKTt3KEwpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIE0oKXt0aGlzLnB0cj1NYSgpO3coTSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gTigpe3RoaXMucHRyPU5hKCk7dyhOKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBPKCl7dGhpcy5wdHI9T2EoKTt3KE8pW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIHooKXt0aGlzLnB0cj1QYSgpO3coeilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gbSgpe3RoaXMucHRyPQpRYSgpO3cobSlbdGhpcy5wdHJdPXRoaXN9bj12b2lkIDA9PT1uP3t9Om47dmFyIGE9InVuZGVmaW5lZCIhPXR5cGVvZiBuP246e30sd2Esa2E7YS5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihlLGIpe3dhPWU7a2E9Yn0pO3ZhciBSYT0hMSxTYT0hMTthLm9uUnVudGltZUluaXRpYWxpemVkPWZ1bmN0aW9uKCl7UmE9ITA7aWYoU2EmJiJmdW5jdGlvbiI9PT10eXBlb2YgYS5vbk1vZHVsZUxvYWRlZClhLm9uTW9kdWxlTG9hZGVkKGEpfTthLm9uTW9kdWxlUGFyc2VkPWZ1bmN0aW9uKCl7U2E9ITA7aWYoUmEmJiJmdW5jdGlvbiI9PT10eXBlb2YgYS5vbk1vZHVsZUxvYWRlZClhLm9uTW9kdWxlTG9hZGVkKGEpfTthLmlzVmVyc2lvblN1cHBvcnRlZD1mdW5jdGlvbihlKXtpZigic3RyaW5nIiE9PXR5cGVvZiBlKXJldHVybiExO2U9ZS5zcGxpdCgiLiIpO3JldHVybiAyPmUubGVuZ3RofHwzPGUubGVuZ3RoPyExOjE9PWVbMF0mJjA8PWVbMV0mJjU+PWVbMV0/ITA6MCE9ZVswXXx8MTA8CmVbMV0/ITE6ITB9O3ZhciBUYT1PYmplY3QuYXNzaWduKHt9LGEpLHRhPSJvYmplY3QiPT10eXBlb2Ygd2luZG93LGZhPSJmdW5jdGlvbiI9PXR5cGVvZiBpbXBvcnRTY3JpcHRzLFVhPSJvYmplY3QiPT10eXBlb2YgcHJvY2VzcyYmIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzLnZlcnNpb25zJiYic3RyaW5nIj09dHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZSxVPSIiO2lmKFVhKXt2YXIgVmE9cmVxdWlyZSgiZnMiKSxwYT1yZXF1aXJlKCJwYXRoIik7VT1mYT9wYS5kaXJuYW1lKFUpKyIvIjpfX2Rpcm5hbWUrIi8iO3ZhciBXYT1mdW5jdGlvbihlLGIpe2U9ZS5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChlKTpwYS5ub3JtYWxpemUoZSk7cmV0dXJuIFZhLnJlYWRGaWxlU3luYyhlLGI/dm9pZCAwOiJ1dGY4Iil9O3ZhciBtYT1mdW5jdGlvbihlKXtlPVdhKGUsITApO2UuYnVmZmVyfHwoZT1uZXcgVWludDhBcnJheShlKSk7cmV0dXJuIGV9O3ZhciBuYT1mdW5jdGlvbihlLApiLGMpe2U9ZS5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChlKTpwYS5ub3JtYWxpemUoZSk7VmEucmVhZEZpbGUoZSxmdW5jdGlvbihkLGcpe2Q/YyhkKTpiKGcuYnVmZmVyKX0pfTsxPHByb2Nlc3MuYXJndi5sZW5ndGgmJnByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIik7cHJvY2Vzcy5hcmd2LnNsaWNlKDIpO2EuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9fWVsc2UgaWYodGF8fGZhKWZhP1U9c2VsZi5sb2NhdGlvbi5ocmVmOiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihVPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKSxoJiYoVT1oKSxVPTAhPT1VLmluZGV4T2YoImJsb2I6Iik/VS5zdWJzdHIoMCxVLnJlcGxhY2UoL1s/I10uKi8sIiIpLmxhc3RJbmRleE9mKCIvIikrMSk6IiIsV2E9ZnVuY3Rpb24oZSl7dmFyIGI9bmV3IFhNTEh0dHBSZXF1ZXN0O2Iub3BlbigiR0VUIiwKZSwhMSk7Yi5zZW5kKG51bGwpO3JldHVybiBiLnJlc3BvbnNlVGV4dH0sZmEmJihtYT1mdW5jdGlvbihlKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJHRVQiLGUsITEpO2IucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7Yi5zZW5kKG51bGwpO3JldHVybiBuZXcgVWludDhBcnJheShiLnJlc3BvbnNlKX0pLG5hPWZ1bmN0aW9uKGUsYixjKXt2YXIgZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKCJHRVQiLGUsITApO2QucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7ZC5vbmxvYWQ9ZnVuY3Rpb24oKXsyMDA9PWQuc3RhdHVzfHwwPT1kLnN0YXR1cyYmZC5yZXNwb25zZT9iKGQucmVzcG9uc2UpOmMoKX07ZC5vbmVycm9yPWM7ZC5zZW5kKG51bGwpfTthLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO3ZhciBkYT1hLnByaW50RXJyfHxjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtPYmplY3QuYXNzaWduKGEsVGEpO1RhPW51bGw7dmFyIGVhO2Eud2FzbUJpbmFyeSYmCihlYT1hLndhc21CaW5hcnkpOyJvYmplY3QiIT10eXBlb2YgV2ViQXNzZW1ibHkmJnkoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgamEsc2E9ITEscmE9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDAsVyxpYSxjYSxZLHlhPVtdLG9hPVtdLHhhPVtdLHZhPSExLGJhPTAscWE9bnVsbCxoYT1udWxsO3ZhciBQPSJkcmFjb19kZWNvZGVyX2dsdGYud2FzbSI7UC5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIil8fChQPWsoUCkpO3ZhciBwZD0wLHFkPXtiOmZ1bmN0aW9uKGUsYixjKXsobmV3IEEoZSkpLmluaXQoYixjKTtwZCsrO3Rocm93IGU7fSxhOmZ1bmN0aW9uKCl7eSgiIil9LGQ6ZnVuY3Rpb24oZSxiLGMpe2lhLmNvcHlXaXRoaW4oZSxiLGIrYyl9LGM6ZnVuY3Rpb24oZSl7dmFyIGI9aWEubGVuZ3RoO2U+Pj49MDtpZigyMTQ3NDgzNjQ4PGUpcmV0dXJuITE7CmZvcih2YXIgYz0xOzQ+PWM7Yyo9Mil7dmFyIGQ9YiooMSsuMi9jKTtkPU1hdGgubWluKGQsZSsxMDA2NjMyOTYpO3ZhciBnPU1hdGg7ZD1NYXRoLm1heChlLGQpO2c9Zy5taW4uY2FsbChnLDIxNDc0ODM2NDgsZCsoNjU1MzYtZCU2NTUzNiklNjU1MzYpO2E6e2Q9amEuYnVmZmVyO3RyeXtqYS5ncm93KGctZC5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpO2woKTt2YXIgdD0xO2JyZWFrIGF9Y2F0Y2goYWEpe310PXZvaWQgMH1pZih0KXJldHVybiEwfXJldHVybiExfX07KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShnLHQpe2EuYXNtPWcuZXhwb3J0cztqYT1hLmFzbS5lO2woKTtvYS51bnNoaWZ0KGEuYXNtLmYpO2JhLS07YS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZhLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoYmEpOzA9PWJhJiYobnVsbCE9PXFhJiYoY2xlYXJJbnRlcnZhbChxYSkscWE9bnVsbCksaGEmJihnPWhhLGhhPW51bGwsZygpKSl9ZnVuY3Rpb24gYihnKXtlKGcuaW5zdGFuY2UpfQpmdW5jdGlvbiBjKGcpe3JldHVybiBxKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodCxkKX0pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHR9KS50aGVuKGcsZnVuY3Rpb24odCl7ZGEoImZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICIrdCk7eSh0KX0pfXZhciBkPXthOnFkfTtiYSsrO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmYS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKGJhKTtpZihhLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIGEuaW5zdGFudGlhdGVXYXNtKGQsZSl9Y2F0Y2goZyl7ZGEoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIrZyksa2EoZyl9KGZ1bmN0aW9uKCl7cmV0dXJuIGVhfHwiZnVuY3Rpb24iIT10eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmd8fFAuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpfHwKUC5zdGFydHNXaXRoKCJmaWxlOi8vIil8fFVhfHwiZnVuY3Rpb24iIT10eXBlb2YgZmV0Y2g/YyhiKTpmZXRjaChQLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihnKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZyxkKS50aGVuKGIsZnVuY3Rpb24odCl7ZGEoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK3QpO2RhKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpO3JldHVybiBjKGIpfSl9KX0pKCkuY2F0Y2goa2EpO3JldHVybnt9fSkoKTt2YXIgWGE9YS5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihYYT1hLl9lbXNjcmlwdGVuX2JpbmRfVm9pZFB0cl9fX2Rlc3Ryb3lfX18wPWEuYXNtLmgpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0semE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfRGVjb2RlckJ1ZmZlcl8wPQpmdW5jdGlvbigpe3JldHVybih6YT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9EZWNvZGVyQnVmZmVyXzA9YS5hc20uaSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZYT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9Jbml0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oWWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfSW5pdF8yPWEuYXNtLmopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihaYT1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9fX2Rlc3Ryb3lfX18wPWEuYXNtLmspLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWE9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEFhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD0KYS5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkYT1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV90cmFuc2Zvcm1fdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKCRhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX3RyYW5zZm9ybV90eXBlXzA9YS5hc20ubSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKGFiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX19fZGVzdHJveV9fXzA9YS5hc20ubikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxCYT1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfR2VvbWV0cnlBdHRyaWJ1dGVfMD1mdW5jdGlvbigpe3JldHVybihCYT1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfR2VvbWV0cnlBdHRyaWJ1dGVfMD0KYS5hc20ubykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiYj1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihiYj1hLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1hLmFzbS5wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENhPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9Qb2ludEF0dHJpYnV0ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKENhPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9Qb2ludEF0dHJpYnV0ZV8wPWEuYXNtLnEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2I9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3NpemVfMD1mdW5jdGlvbigpe3JldHVybihjYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfc2l6ZV8wPWEuYXNtLnIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD0KZnVuY3Rpb24oKXtyZXR1cm4oZGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1hLmFzbS5zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGViPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGViPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWEuYXNtLnQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZmI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2RhdGFfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGZiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9kYXRhX3R5cGVfMD1hLmFzbS51KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPWZ1bmN0aW9uKCl7cmV0dXJuKGdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPQphLmFzbS52KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ub3JtYWxpemVkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaGI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX25vcm1hbGl6ZWRfMD1hLmFzbS53KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGliPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX3N0cmlkZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGliPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX3N0cmlkZV8wPWEuYXNtLngpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfb2Zmc2V0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oamI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfb2Zmc2V0XzA9YS5hc20ueSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxrYj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfdW5pcXVlX2lkXzA9CmZ1bmN0aW9uKCl7cmV0dXJuKGtiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV91bmlxdWVfaWRfMD1hLmFzbS56KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKGxiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPWEuYXNtLkEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGE9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fMD1mdW5jdGlvbigpe3JldHVybihEYT1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV8wPWEuYXNtLkIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPQpmdW5jdGlvbigpe3JldHVybihtYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9YS5hc20uQykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxuYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4obmI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPWEuYXNtLkQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2I9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9taW5fdmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihvYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX21pbl92YWx1ZV8xPWEuYXNtLkUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scGI9CmEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcmFuZ2VfMD1mdW5jdGlvbigpe3JldHVybihwYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3JhbmdlXzA9YS5hc20uRikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocWI9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPWEuYXNtLkcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWE9YS5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEVhPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fMD0KYS5hc20uSCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxyYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9YS5hc20uSSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzYj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPWZ1bmN0aW9uKCl7cmV0dXJuKHNiPWEuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9YS5hc20uSikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx0Yj1hLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHRiPQphLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPWEuYXNtLkspLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRmE9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfUG9pbnRDbG91ZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEZhPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX1BvaW50Q2xvdWRfMD1hLmFzbS5MKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHViPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9hdHRyaWJ1dGVzXzA9ZnVuY3Rpb24oKXtyZXR1cm4odWI9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfbnVtX2F0dHJpYnV0ZXNfMD1hLmFzbS5NKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZiPWEuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybih2Yj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fcG9pbnRzXzA9YS5hc20uTikuYXBwbHkobnVsbCwKYXJndW1lbnRzKX0sd2I9YS5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih3Yj1hLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9fX2Rlc3Ryb3lfX18wPWEuYXNtLk8pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR2E9YS5fZW1zY3JpcHRlbl9iaW5kX01lc2hfTWVzaF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdhPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX01lc2hfMD1hLmFzbS5QKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9mYWNlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKHhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9mYWNlc18wPWEuYXNtLlEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWI9YS5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2F0dHJpYnV0ZXNfMD1mdW5jdGlvbigpe3JldHVybih5Yj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fYXR0cmlidXRlc18wPQphLmFzbS5SKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybih6Yj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fcG9pbnRzXzA9YS5hc20uUykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBYj1hLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEFiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX19fZGVzdHJveV9fXzA9YS5hc20uVCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfTWV0YWRhdGFfMD1mdW5jdGlvbigpe3JldHVybihIYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfTWV0YWRhdGFfMD1hLmFzbS5VKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YV9fX2Rlc3Ryb3lfX18wPQphLmFzbS5WKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKENiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWEuYXNtLlcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGI9YS5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19va18wPWZ1bmN0aW9uKCl7cmV0dXJuKERiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfb2tfMD1hLmFzbS5YKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEViPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfZXJyb3JfbXNnXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRWI9YS5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19lcnJvcl9tc2dfMD1hLmFzbS5ZKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZiPWEuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihGYj1hLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX19fZGVzdHJveV9fXzA9CmEuYXNtLlopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oSWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9YS5hc20uXykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihHYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfR2V0VmFsdWVfMT1hLmFzbS4kKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X3NpemVfMD1hLmFzbS5hYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJYj0KYS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X19fZGVzdHJveV9fXzA9YS5hc20uYmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0RyYWNvSW50OEFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oSmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0RyYWNvSW50OEFycmF5XzA9YS5hc20uY2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X0dldFZhbHVlXzE9YS5hc20uZGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD0KZnVuY3Rpb24oKXtyZXR1cm4oS2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD1hLmFzbS5lYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihMYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS5mYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0RyYWNvVUludDhBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEthPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfRHJhY29VSW50OEFycmF5XzA9YS5hc20uZ2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKE1iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfR2V0VmFsdWVfMT0KYS5hc20uaGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9YS5hc20uaWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT2I9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKE9iPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS5qYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0RyYWNvSW50MTZBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKExhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfRHJhY29JbnQxNkFycmF5XzA9YS5hc20ua2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9HZXRWYWx1ZV8xPQpmdW5jdGlvbigpe3JldHVybihQYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0dldFZhbHVlXzE9YS5hc20ubGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9zaXplXzA9YS5hc20ubWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFJiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS5uYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9EcmFjb1VJbnQxNkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oTWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfRHJhY29VSW50MTZBcnJheV8wPQphLmFzbS5vYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxTYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFNiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0dldFZhbHVlXzE9YS5hc20ucGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFRiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X3NpemVfMD1hLmFzbS5xYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFViPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X19fZGVzdHJveV9fXzA9YS5hc20ucmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD0KZnVuY3Rpb24oKXtyZXR1cm4oTmE9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD1hLmFzbS5zYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVmI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9HZXRWYWx1ZV8xPWEuYXNtLnRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFdiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfc2l6ZV8wPWEuYXNtLnVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihYYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X19fZGVzdHJveV9fXzA9CmEuYXNtLnZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9hPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0RyYWNvVUludDMyQXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihPYT1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9EcmFjb1VJbnQzMkFycmF5XzA9YS5hc20ud2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWWI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihZYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9HZXRWYWx1ZV8xPWEuYXNtLnhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFpiPWEuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihaYj1hLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9zaXplXzA9YS5hc20ueWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD0KZnVuY3Rpb24oKXtyZXR1cm4oJGI9YS5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD1hLmFzbS56YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQYT1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFBhPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTWV0YWRhdGFRdWVyaWVyXzA9YS5hc20uQWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9IYXNFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGFjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfSGFzRW50cnlfMj1hLmFzbS5CYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4oYmM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRJbnRFbnRyeV8yPQphLmFzbS5DYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybihjYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz1hLmFzbS5EYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldERvdWJsZUVudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4oZGM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXREb3VibGVFbnRyeV8yPWEuYXNtLkVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0U3RyaW5nRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihlYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldFN0cmluZ0VudHJ5XzI9YS5hc20uRmEpLmFwcGx5KG51bGwsCmFyZ3VtZW50cyl9LGZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTnVtRW50cmllc18xPWZ1bmN0aW9uKCl7cmV0dXJuKGZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTnVtRW50cmllc18xPWEuYXNtLkdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RW50cnlOYW1lXzI9ZnVuY3Rpb24oKXtyZXR1cm4oZ2M9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRFbnRyeU5hbWVfMj1hLmFzbS5IYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxoYz1hLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaGM9YS5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9fX2Rlc3Ryb3lfX18wPWEuYXNtLklhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFhPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZXJfMD0KZnVuY3Rpb24oKXtyZXR1cm4oUWE9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2Rlcl8wPWEuYXNtLkphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9ZnVuY3Rpb24oKXtyZXR1cm4oaWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWRfMz1hLmFzbS5LYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKGpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9NZXNoXzM9YS5hc20uTGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRfMj1mdW5jdGlvbigpe3JldHVybihrYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZF8yPQphLmFzbS5NYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGxjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlOYW1lXzI9YS5hc20uTmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnlfMz1mdW5jdGlvbigpe3JldHVybihtYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TWV0YWRhdGFFbnRyeV8zPWEuYXNtLk9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKG5jPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZV8yPWEuYXNtLlBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LApvYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkXzI9ZnVuY3Rpb24oKXtyZXR1cm4ob2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlQnlVbmlxdWVJZF8yPWEuYXNtLlFhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldE1ldGFkYXRhXzE9ZnVuY3Rpb24oKXtyZXR1cm4ocGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0TWV0YWRhdGFfMT1hLmFzbS5SYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVNZXRhZGF0YV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHFjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZU1ldGFkYXRhXzI9YS5hc20uU2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0RmFjZUZyb21NZXNoXzM9CmZ1bmN0aW9uKCl7cmV0dXJuKHJjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWEuYXNtLlRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2hfMj1mdW5jdGlvbigpe3JldHVybihzYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoXzI9YS5hc20uVWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDE2QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybih0Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZXNVSW50MTZBcnJheV8zPWEuYXNtLlZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9ZnVuY3Rpb24oKXtyZXR1cm4odWM9CmEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9YS5hc20uV2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRfMz1mdW5jdGlvbigpe3JldHVybih2Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdF8zPWEuYXNtLlhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4od2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHNfMz1hLmFzbS5ZYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybih4Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHNfMz0KYS5hc20uWmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKHljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHNfMz1hLmFzbS5fYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6Yz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKHpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzXzM9YS5hc20uJGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihBYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50c18zPQphLmFzbS5hYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxCYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihCYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1hLmFzbS5iYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKENjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzXzM9YS5hc20uY2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oRGM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9CmEuYXNtLmRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50c181PWZ1bmN0aW9uKCl7cmV0dXJuKEVjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50c181PWEuYXNtLmViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX1NraXBBdHRyaWJ1dGVUcmFuc2Zvcm1fMT1mdW5jdGlvbigpe3JldHVybihGYz1hLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9Ta2lwQXR0cmlidXRlVHJhbnNmb3JtXzE9YS5hc20uZmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkXzE9ZnVuY3Rpb24oKXtyZXR1cm4oR2M9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkXzE9CmEuYXNtLmdiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZF8yPWZ1bmN0aW9uKCl7cmV0dXJuKEhjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZF8yPWEuYXNtLmhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvTWVzaF8yPWZ1bmN0aW9uKCl7cmV0dXJuKEljPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUJ1ZmZlclRvTWVzaF8yPWEuYXNtLmliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpjPWEuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSmM9YS5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfX19kZXN0cm95X19fMD1hLmFzbS5qYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfSU5WQUxJRF9UUkFOU0ZPUk09CmZ1bmN0aW9uKCl7cmV0dXJuKEtjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1hLmFzbS5rYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKExjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9OT19UUkFOU0ZPUk09YS5hc20ubGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09ZnVuY3Rpb24oKXtyZXR1cm4oTWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09CmEuYXNtLm1iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE5jPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT1mdW5jdGlvbigpe3JldHVybihOYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfT0NUQUhFRFJPTl9UUkFOU0ZPUk09YS5hc20ubmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT2M9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfSU5WQUxJRD1mdW5jdGlvbigpe3JldHVybihPYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9JTlZBTElEPWEuYXNtLm9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1BPU0lUSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKFBjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1BPU0lUSU9OPQphLmFzbS5wYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9OT1JNQUw9ZnVuY3Rpb24oKXtyZXR1cm4oUWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfTk9STUFMPWEuYXNtLnFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0NPTE9SPWZ1bmN0aW9uKCl7cmV0dXJuKFJjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0NPTE9SPWEuYXNtLnJiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1RFWF9DT09SRD1mdW5jdGlvbigpe3JldHVybihTYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9URVhfQ09PUkQ9CmEuYXNtLnNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9ZnVuY3Rpb24oKXtyZXR1cm4oVGM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfR0VORVJJQz1hLmFzbS50YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9JTlZBTElEX0dFT01FVFJZX1RZUEU9ZnVuY3Rpb24oKXtyZXR1cm4oVWM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfSU5WQUxJRF9HRU9NRVRSWV9UWVBFPWEuYXNtLnViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFZjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPWZ1bmN0aW9uKCl7cmV0dXJuKFZjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPQphLmFzbS52YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9UUklBTkdVTEFSX01FU0g9ZnVuY3Rpb24oKXtyZXR1cm4oV2M9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfVFJJQU5HVUxBUl9NRVNIPWEuYXNtLndiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlZBTElEPWZ1bmN0aW9uKCl7cmV0dXJuKFhjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlZBTElEPWEuYXNtLnhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFljPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ4PWZ1bmN0aW9uKCl7cmV0dXJuKFljPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ4PWEuYXNtLnliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFpjPQphLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDg9ZnVuY3Rpb24oKXtyZXR1cm4oWmM9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ4PWEuYXNtLnpiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRjPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQxNj1mdW5jdGlvbigpe3JldHVybigkYz1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMTY9YS5hc20uQWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQxNj1mdW5jdGlvbigpe3JldHVybihhZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDE2PWEuYXNtLkJiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGJkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQzMj1mdW5jdGlvbigpe3JldHVybihiZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMzI9CmEuYXNtLkNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4oY2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQzMj1hLmFzbS5EYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oZGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDY0PWEuYXNtLkViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oZWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ2ND1hLmFzbS5GYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQzMj0KZnVuY3Rpb24oKXtyZXR1cm4oZmQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUMzI9YS5hc20uR2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oZ2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUNjQ9YS5hc20uSGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0JPT0w9ZnVuY3Rpb24oKXtyZXR1cm4oaGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0JPT0w9YS5hc20uSWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1RZUEVTX0NPVU5UPWZ1bmN0aW9uKCl7cmV0dXJuKGlkPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9UWVBFU19DT1VOVD0KYS5hc20uSmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfT0s9ZnVuY3Rpb24oKXtyZXR1cm4oamQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfT0s9YS5hc20uS2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfRFJBQ09fRVJST1I9ZnVuY3Rpb24oKXtyZXR1cm4oa2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfRFJBQ09fRVJST1I9YS5hc20uTGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfSU9fRVJST1I9ZnVuY3Rpb24oKXtyZXR1cm4obGQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfSU9fRVJST1I9YS5hc20uTWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfSU5WQUxJRF9QQVJBTUVURVI9CmZ1bmN0aW9uKCl7cmV0dXJuKG1kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPWEuYXNtLk5iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5kPWEuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOU1VQUE9SVEVEX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4obmQ9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5TVVBQT1JURURfVkVSU0lPTj1hLmFzbS5PYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvZD1hLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9VTktOT1dOX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4ob2Q9YS5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5LTk9XTl9WRVJTSU9OPWEuYXNtLlBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O2EuX21hbGxvYz1mdW5jdGlvbigpe3JldHVybihhLl9tYWxsb2M9YS5hc20uUWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07CmEuX2ZyZWU9ZnVuY3Rpb24oKXtyZXR1cm4oYS5fZnJlZT1hLmFzbS5SYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgdWE9ZnVuY3Rpb24oKXtyZXR1cm4odWE9YS5hc20uU2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07YS5fX19zdGFydF9lbV9qcz0xMTY2MDthLl9fX3N0b3BfZW1fanM9MTE3NTg7dmFyIGxhO2hhPWZ1bmN0aW9uIGIoKXtsYXx8RigpO2xhfHwoaGE9Yil9O2lmKGEucHJlSW5pdClmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGEucHJlSW5pdCYmKGEucHJlSW5pdD1bYS5wcmVJbml0XSk7MDxhLnByZUluaXQubGVuZ3RoOylhLnByZUluaXQucG9wKCkoKTtGKCk7di5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7di5wcm90b3R5cGUuY29uc3RydWN0b3I9djt2LnByb3RvdHlwZS5fX2NsYXNzX189djt2Ll9fY2FjaGVfXz17fTthLldyYXBwZXJPYmplY3Q9djthLmdldENhY2hlPXc7YS53cmFwUG9pbnRlcj1CO2EuY2FzdE9iamVjdD1mdW5jdGlvbihiLApjKXtyZXR1cm4gQihiLnB0cixjKX07YS5OVUxMPUIoMCk7YS5kZXN0cm95PWZ1bmN0aW9uKGIpe2lmKCFiLl9fZGVzdHJveV9fKXRocm93IkVycm9yOiBDYW5ub3QgZGVzdHJveSBvYmplY3QuIChEaWQgeW91IGNyZWF0ZSBpdCB5b3Vyc2VsZj8pIjtiLl9fZGVzdHJveV9fKCk7ZGVsZXRlIHcoYi5fX2NsYXNzX18pW2IucHRyXX07YS5jb21wYXJlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIucHRyPT09Yy5wdHJ9O2EuZ2V0UG9pbnRlcj1mdW5jdGlvbihiKXtyZXR1cm4gYi5wdHJ9O2EuZ2V0Q2xhc3M9ZnVuY3Rpb24oYil7cmV0dXJuIGIuX19jbGFzc19ffTt2YXIgcj17YnVmZmVyOjAsc2l6ZTowLHBvczowLHRlbXBzOltdLG5lZWRlZDowLHByZXBhcmU6ZnVuY3Rpb24oKXtpZihyLm5lZWRlZCl7Zm9yKHZhciBiPTA7YjxyLnRlbXBzLmxlbmd0aDtiKyspYS5fZnJlZShyLnRlbXBzW2JdKTtyLnRlbXBzLmxlbmd0aD0wO2EuX2ZyZWUoci5idWZmZXIpO3IuYnVmZmVyPTA7ci5zaXplKz0Kci5uZWVkZWQ7ci5uZWVkZWQ9MH1yLmJ1ZmZlcnx8KHIuc2l6ZSs9MTI4LHIuYnVmZmVyPWEuX21hbGxvYyhyLnNpemUpLHIuYnVmZmVyfHx5KHZvaWQgMCkpO3IucG9zPTB9LGFsbG9jOmZ1bmN0aW9uKGIsYyl7ci5idWZmZXJ8fHkodm9pZCAwKTtiPWIubGVuZ3RoKmMuQllURVNfUEVSX0VMRU1FTlQ7Yj1iKzcmLTg7ci5wb3MrYj49ci5zaXplPygwPGJ8fHkodm9pZCAwKSxyLm5lZWRlZCs9YixjPWEuX21hbGxvYyhiKSxyLnRlbXBzLnB1c2goYykpOihjPXIuYnVmZmVyK3IucG9zLHIucG9zKz1iKTtyZXR1cm4gY30sY29weTpmdW5jdGlvbihiLGMsZCl7ZD4+Pj0wO3N3aXRjaChjLkJZVEVTX1BFUl9FTEVNRU5UKXtjYXNlIDI6ZD4+Pj0xO2JyZWFrO2Nhc2UgNDpkPj4+PTI7YnJlYWs7Y2FzZSA4OmQ+Pj49M31mb3IodmFyIGc9MDtnPGIubGVuZ3RoO2crKyljW2QrZ109YltnXX19O1gucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO1gucHJvdG90eXBlLmNvbnN0cnVjdG9yPQpYO1gucHJvdG90eXBlLl9fY2xhc3NfXz1YO1guX19jYWNoZV9fPXt9O2EuVm9pZFB0cj1YO1gucHJvdG90eXBlLl9fZGVzdHJveV9fPVgucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7WGEodGhpcy5wdHIpfTtTLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtTLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TO1MucHJvdG90eXBlLl9fY2xhc3NfXz1TO1MuX19jYWNoZV9fPXt9O2EuRGVjb2RlckJ1ZmZlcj1TO1MucHJvdG90eXBlLkluaXQ9Uy5wcm90b3R5cGUuSW5pdD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpOyJvYmplY3QiPT10eXBlb2YgYiYmKGI9WihiKSk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO1lhKGQsYixjKX07Uy5wcm90b3R5cGUuX19kZXN0cm95X189Uy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtaYSh0aGlzLnB0cil9O1EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpOwpRLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RO1EucHJvdG90eXBlLl9fY2xhc3NfXz1RO1EuX19jYWNoZV9fPXt9O2EuQXR0cmlidXRlVHJhbnNmb3JtRGF0YT1RO1EucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPVEucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuICRhKHRoaXMucHRyKX07US5wcm90b3R5cGUuX19kZXN0cm95X189US5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXthYih0aGlzLnB0cil9O1YucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO1YucHJvdG90eXBlLmNvbnN0cnVjdG9yPVY7Vi5wcm90b3R5cGUuX19jbGFzc19fPVY7Vi5fX2NhY2hlX189e307YS5HZW9tZXRyeUF0dHJpYnV0ZT1WO1YucHJvdG90eXBlLl9fZGVzdHJveV9fPVYucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7YmIodGhpcy5wdHIpfTt4LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTt4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0KeDt4LnByb3RvdHlwZS5fX2NsYXNzX189eDt4Ll9fY2FjaGVfXz17fTthLlBvaW50QXR0cmlidXRlPXg7eC5wcm90b3R5cGUuc2l6ZT14LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMucHRyKX07eC5wcm90b3R5cGUuR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YT14LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIEIoZGIodGhpcy5wdHIpLFEpfTt4LnByb3RvdHlwZS5hdHRyaWJ1dGVfdHlwZT14LnByb3RvdHlwZS5hdHRyaWJ1dGVfdHlwZT1mdW5jdGlvbigpe3JldHVybiBlYih0aGlzLnB0cil9O3gucHJvdG90eXBlLmRhdGFfdHlwZT14LnByb3RvdHlwZS5kYXRhX3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gZmIodGhpcy5wdHIpfTt4LnByb3RvdHlwZS5udW1fY29tcG9uZW50cz14LnByb3RvdHlwZS5udW1fY29tcG9uZW50cz1mdW5jdGlvbigpe3JldHVybiBnYih0aGlzLnB0cil9O3gucHJvdG90eXBlLm5vcm1hbGl6ZWQ9CngucHJvdG90eXBlLm5vcm1hbGl6ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIWhiKHRoaXMucHRyKX07eC5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9eC5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaWIodGhpcy5wdHIpfTt4LnByb3RvdHlwZS5ieXRlX29mZnNldD14LnByb3RvdHlwZS5ieXRlX29mZnNldD1mdW5jdGlvbigpe3JldHVybiBqYih0aGlzLnB0cil9O3gucHJvdG90eXBlLnVuaXF1ZV9pZD14LnByb3RvdHlwZS51bmlxdWVfaWQ9ZnVuY3Rpb24oKXtyZXR1cm4ga2IodGhpcy5wdHIpfTt4LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz14LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2xiKHRoaXMucHRyKX07RC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7RC5wcm90b3R5cGUuY29uc3RydWN0b3I9RDtELnByb3RvdHlwZS5fX2NsYXNzX189RDtELl9fY2FjaGVfXz17fTthLkF0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybT0KRDtELnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1ELnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuISFtYihjLGIpfTtELnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1ELnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1mdW5jdGlvbigpe3JldHVybiBuYih0aGlzLnB0cil9O0QucHJvdG90eXBlLm1pbl92YWx1ZT1ELnByb3RvdHlwZS5taW5fdmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBvYihjLGIpfTtELnByb3RvdHlwZS5yYW5nZT1ELnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbigpe3JldHVybiBwYih0aGlzLnB0cil9O0QucHJvdG90eXBlLl9fZGVzdHJveV9fPUQucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7cWIodGhpcy5wdHIpfTtHLnByb3RvdHlwZT0KT2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7Ry5wcm90b3R5cGUuY29uc3RydWN0b3I9RztHLnByb3RvdHlwZS5fX2NsYXNzX189RztHLl9fY2FjaGVfXz17fTthLkF0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm09RztHLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1HLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuISFyYihjLGIpfTtHLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1HLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1mdW5jdGlvbigpe3JldHVybiBzYih0aGlzLnB0cil9O0cucHJvdG90eXBlLl9fZGVzdHJveV9fPUcucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7dGIodGhpcy5wdHIpfTtILnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtILnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IO0gucHJvdG90eXBlLl9fY2xhc3NfXz0KSDtILl9fY2FjaGVfXz17fTthLlBvaW50Q2xvdWQ9SDtILnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1ILnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiB1Yih0aGlzLnB0cil9O0gucHJvdG90eXBlLm51bV9wb2ludHM9SC5wcm90b3R5cGUubnVtX3BvaW50cz1mdW5jdGlvbigpe3JldHVybiB2Yih0aGlzLnB0cil9O0gucHJvdG90eXBlLl9fZGVzdHJveV9fPUgucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7d2IodGhpcy5wdHIpfTtFLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtFLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FO0UucHJvdG90eXBlLl9fY2xhc3NfXz1FO0UuX19jYWNoZV9fPXt9O2EuTWVzaD1FO0UucHJvdG90eXBlLm51bV9mYWNlcz1FLnByb3RvdHlwZS5udW1fZmFjZXM9ZnVuY3Rpb24oKXtyZXR1cm4geGIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1FLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz0KZnVuY3Rpb24oKXtyZXR1cm4geWIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5udW1fcG9pbnRzPUUucHJvdG90eXBlLm51bV9wb2ludHM9ZnVuY3Rpb24oKXtyZXR1cm4gemIodGhpcy5wdHIpfTtFLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1FLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0FiKHRoaXMucHRyKX07VC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7VC5wcm90b3R5cGUuY29uc3RydWN0b3I9VDtULnByb3RvdHlwZS5fX2NsYXNzX189VDtULl9fY2FjaGVfXz17fTthLk1ldGFkYXRhPVQ7VC5wcm90b3R5cGUuX19kZXN0cm95X189VC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtCYih0aGlzLnB0cil9O0MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO0MucHJvdG90eXBlLmNvbnN0cnVjdG9yPUM7Qy5wcm90b3R5cGUuX19jbGFzc19fPUM7Qy5fX2NhY2hlX189e307YS5TdGF0dXM9QztDLnByb3RvdHlwZS5jb2RlPQpDLnByb3RvdHlwZS5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIENiKHRoaXMucHRyKX07Qy5wcm90b3R5cGUub2s9Qy5wcm90b3R5cGUub2s9ZnVuY3Rpb24oKXtyZXR1cm4hIURiKHRoaXMucHRyKX07Qy5wcm90b3R5cGUuZXJyb3JfbXNnPUMucHJvdG90eXBlLmVycm9yX21zZz1mdW5jdGlvbigpe3JldHVybiBwKEViKHRoaXMucHRyKSl9O0MucHJvdG90eXBlLl9fZGVzdHJveV9fPUMucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7RmIodGhpcy5wdHIpfTtJLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtJLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1JO0kucHJvdG90eXBlLl9fY2xhc3NfXz1JO0kuX19jYWNoZV9fPXt9O2EuRHJhY29GbG9hdDMyQXJyYXk9STtJLnByb3RvdHlwZS5HZXRWYWx1ZT1JLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIEdiKGMsCmIpfTtJLnByb3RvdHlwZS5zaXplPUkucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gSGIodGhpcy5wdHIpfTtJLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1JLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0liKHRoaXMucHRyKX07Si5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7Si5wcm90b3R5cGUuY29uc3RydWN0b3I9SjtKLnByb3RvdHlwZS5fX2NsYXNzX189SjtKLl9fY2FjaGVfXz17fTthLkRyYWNvSW50OEFycmF5PUo7Si5wcm90b3R5cGUuR2V0VmFsdWU9Si5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBKYihjLGIpfTtKLnByb3RvdHlwZS5zaXplPUoucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gS2IodGhpcy5wdHIpfTtKLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1KLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0xiKHRoaXMucHRyKX07CksucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO0sucHJvdG90eXBlLmNvbnN0cnVjdG9yPUs7Sy5wcm90b3R5cGUuX19jbGFzc19fPUs7Sy5fX2NhY2hlX189e307YS5EcmFjb1VJbnQ4QXJyYXk9SztLLnByb3RvdHlwZS5HZXRWYWx1ZT1LLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIE1iKGMsYil9O0sucHJvdG90eXBlLnNpemU9Sy5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBOYih0aGlzLnB0cil9O0sucHJvdG90eXBlLl9fZGVzdHJveV9fPUsucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7T2IodGhpcy5wdHIpfTtMLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTtMLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MO0wucHJvdG90eXBlLl9fY2xhc3NfXz1MO0wuX19jYWNoZV9fPXt9O2EuRHJhY29JbnQxNkFycmF5PQpMO0wucHJvdG90eXBlLkdldFZhbHVlPUwucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gUGIoYyxiKX07TC5wcm90b3R5cGUuc2l6ZT1MLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFFiKHRoaXMucHRyKX07TC5wcm90b3R5cGUuX19kZXN0cm95X189TC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtSYih0aGlzLnB0cil9O00ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO00ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU07TS5wcm90b3R5cGUuX19jbGFzc19fPU07TS5fX2NhY2hlX189e307YS5EcmFjb1VJbnQxNkFycmF5PU07TS5wcm90b3R5cGUuR2V0VmFsdWU9TS5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO3JldHVybiBTYihjLGIpfTsKTS5wcm90b3R5cGUuc2l6ZT1NLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFRiKHRoaXMucHRyKX07TS5wcm90b3R5cGUuX19kZXN0cm95X189TS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtVYih0aGlzLnB0cil9O04ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO04ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU47Ti5wcm90b3R5cGUuX19jbGFzc19fPU47Ti5fX2NhY2hlX189e307YS5EcmFjb0ludDMyQXJyYXk9TjtOLnByb3RvdHlwZS5HZXRWYWx1ZT1OLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIFZiKGMsYil9O04ucHJvdG90eXBlLnNpemU9Ti5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBXYih0aGlzLnB0cil9O04ucHJvdG90eXBlLl9fZGVzdHJveV9fPU4ucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7WGIodGhpcy5wdHIpfTsKTy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSk7Ty5wcm90b3R5cGUuY29uc3RydWN0b3I9TztPLnByb3RvdHlwZS5fX2NsYXNzX189TztPLl9fY2FjaGVfXz17fTthLkRyYWNvVUludDMyQXJyYXk9TztPLnByb3RvdHlwZS5HZXRWYWx1ZT1PLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIFliKGMsYil9O08ucHJvdG90eXBlLnNpemU9Ty5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBaYih0aGlzLnB0cil9O08ucHJvdG90eXBlLl9fZGVzdHJveV9fPU8ucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7JGIodGhpcy5wdHIpfTt6LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKTt6LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj16O3oucHJvdG90eXBlLl9fY2xhc3NfXz16O3ouX19jYWNoZV9fPXt9O2EuTWV0YWRhdGFRdWVyaWVyPQp6O3oucHJvdG90eXBlLkhhc0VudHJ5PXoucHJvdG90eXBlLkhhc0VudHJ5PWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7ci5wcmVwYXJlKCk7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLnB0cjpSKGMpO3JldHVybiEhYWMoZCxiLGMpfTt6LnByb3RvdHlwZS5HZXRJbnRFbnRyeT16LnByb3RvdHlwZS5HZXRJbnRFbnRyeT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtyZXR1cm4gYmMoZCxiLGMpfTt6LnByb3RvdHlwZS5HZXRJbnRFbnRyeUFycmF5PXoucHJvdG90eXBlLkdldEludEVudHJ5QXJyYXk9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09CnR5cGVvZiBjP2MucHRyOlIoYyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO2NjKGcsYixjLGQpfTt6LnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT16LnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtyZXR1cm4gZGMoZCxiLGMpfTt6LnByb3RvdHlwZS5HZXRTdHJpbmdFbnRyeT16LnByb3RvdHlwZS5HZXRTdHJpbmdFbnRyeT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtyZXR1cm4gcChlYyhkLGIsYykpfTt6LnByb3RvdHlwZS5OdW1FbnRyaWVzPXoucHJvdG90eXBlLk51bUVudHJpZXM9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wdHI7CmImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtyZXR1cm4gZmMoYyxiKX07ei5wcm90b3R5cGUuR2V0RW50cnlOYW1lPXoucHJvdG90eXBlLkdldEVudHJ5TmFtZT1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7cmV0dXJuIHAoZ2MoZCxiLGMpKX07ei5wcm90b3R5cGUuX19kZXN0cm95X189ei5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtoYyh0aGlzLnB0cil9O20ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodi5wcm90b3R5cGUpO20ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW07bS5wcm90b3R5cGUuX19jbGFzc19fPW07bS5fX2NhY2hlX189e307YS5EZWNvZGVyPW07bS5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWQ9bS5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWQ9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPQp0aGlzLnB0cjtyLnByZXBhcmUoKTsib2JqZWN0Ij09dHlwZW9mIGImJihiPVooYikpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuIEIoaWMoZyxiLGMsZCksQyl9O20ucHJvdG90eXBlLkRlY29kZUFycmF5VG9NZXNoPW0ucHJvdG90eXBlLkRlY29kZUFycmF5VG9NZXNoPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtyLnByZXBhcmUoKTsib2JqZWN0Ij09dHlwZW9mIGImJihiPVooYikpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuIEIoamMoZyxiLGMsZCksQyl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJgooYz1jLnB0cik7cmV0dXJuIGtjKGQsYixjKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU5hbWU9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU5hbWU9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtyLnByZXBhcmUoKTtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MucHRyOlIoYyk7cmV0dXJuIGxjKGQsYixjKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO3IucHJlcGFyZSgpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5wdHI6UihjKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5wdHI6UihkKTtyZXR1cm4gbWMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZT0KbS5wcm90b3R5cGUuR2V0QXR0cmlidXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtyZXR1cm4gQihuYyhkLGIsYykseCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUJ5VW5pcXVlSWQ9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7cmV0dXJuIEIob2MoZCxiLGMpLHgpfTttLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1tLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIEIocGMoYyxiKSxUKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9CmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtyZXR1cm4gQihxYyhkLGIsYyksVCl9O20ucHJvdG90eXBlLkdldEZhY2VGcm9tTWVzaD1tLnByb3RvdHlwZS5HZXRGYWNlRnJvbU1lc2g9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhcmMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2g9bS5wcm90b3R5cGUuR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7CnJldHVybiBzYyhkLGIsYyl9O20ucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PW0ucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIXRjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1tLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISF1YyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9CmZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIXZjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cz1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISF3YyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7CmImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEheGMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISF5YyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9ZnVuY3Rpb24oYixjLGQpe3ZhciBnPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPQpiLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIXpjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1tLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMucHRyKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFBYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCl7dmFyIGc9dGhpcy5wdHI7YiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKGI9Yi5wdHIpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJgooYz1jLnB0cik7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5wdHIpO3JldHVybiEhQmMoZyxiLGMsZCl9O20ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtyZXR1cm4hIUNjKGcsYixjLGQpfTttLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHM9bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09CnR5cGVvZiBkJiYoZD1kLnB0cik7cmV0dXJuISFEYyhnLGIsYyxkKX07bS5wcm90b3R5cGUuR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzPW0ucHJvdG90eXBlLkdldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50cz1mdW5jdGlvbihiLGMsZCxnLHQpe3ZhciBhYT10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQucHRyKTtnJiYib2JqZWN0Ij09PXR5cGVvZiBnJiYoZz1nLnB0cik7dCYmIm9iamVjdCI9PT10eXBlb2YgdCYmKHQ9dC5wdHIpO3JldHVybiEhRWMoYWEsYixjLGQsZyx0KX07bS5wcm90b3R5cGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybT1tLnByb3RvdHlwZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtGYyhjLApiKX07bS5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkPW0ucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZD1mdW5jdGlvbihiKXt2YXIgYz10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7cmV0dXJuIEdjKGMsYil9O20ucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZD1tLnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWQ9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnB0cjtiJiYib2JqZWN0Ij09PXR5cGVvZiBiJiYoYj1iLnB0cik7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBCKEhjKGQsYixjKSxDKX07bS5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9NZXNoPW0ucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvTWVzaD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMucHRyO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJihiPWIucHRyKTtjJiYib2JqZWN0Ij09PQp0eXBlb2YgYyYmKGM9Yy5wdHIpO3JldHVybiBCKEljKGQsYixjKSxDKX07bS5wcm90b3R5cGUuX19kZXN0cm95X189bS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtKYyh0aGlzLnB0cil9OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXthLkFUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1LYygpO2EuQVRUUklCVVRFX05PX1RSQU5TRk9STT1MYygpO2EuQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09TWMoKTthLkFUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT1OYygpO2EuSU5WQUxJRD1PYygpO2EuUE9TSVRJT049UGMoKTthLk5PUk1BTD1RYygpO2EuQ09MT1I9UmMoKTthLlRFWF9DT09SRD1TYygpO2EuR0VORVJJQz1UYygpO2EuSU5WQUxJRF9HRU9NRVRSWV9UWVBFPVVjKCk7YS5QT0lOVF9DTE9VRD1WYygpO2EuVFJJQU5HVUxBUl9NRVNIPVdjKCk7YS5EVF9JTlZBTElEPVhjKCk7YS5EVF9JTlQ4PVljKCk7YS5EVF9VSU5UOD1aYygpO2EuRFRfSU5UMTY9CiRjKCk7YS5EVF9VSU5UMTY9YWQoKTthLkRUX0lOVDMyPWJkKCk7YS5EVF9VSU5UMzI9Y2QoKTthLkRUX0lOVDY0PWRkKCk7YS5EVF9VSU5UNjQ9ZWQoKTthLkRUX0ZMT0FUMzI9ZmQoKTthLkRUX0ZMT0FUNjQ9Z2QoKTthLkRUX0JPT0w9aGQoKTthLkRUX1RZUEVTX0NPVU5UPWlkKCk7YS5PSz1qZCgpO2EuRFJBQ09fRVJST1I9a2QoKTthLklPX0VSUk9SPWxkKCk7YS5JTlZBTElEX1BBUkFNRVRFUj1tZCgpO2EuVU5TVVBQT1JURURfVkVSU0lPTj1uZCgpO2EuVU5LTk9XTl9WRVJTSU9OPW9kKCl9dmE/YigpOm9hLnVuc2hpZnQoYil9KSgpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYS5vbk1vZHVsZVBhcnNlZClhLm9uTW9kdWxlUGFyc2VkKCk7YS5EZWNvZGVyLnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlPWZ1bmN0aW9uKGIpe2lmKGIuX19jbGFzc19fJiZiLl9fY2xhc3NfXz09PWEuRGVjb2RlckJ1ZmZlcilyZXR1cm4gYS5EZWNvZGVyLnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWQoYik7CmlmKDg+Yi5ieXRlTGVuZ3RoKXJldHVybiBhLklOVkFMSURfR0VPTUVUUllfVFlQRTtzd2l0Y2goYls3XSl7Y2FzZSAwOnJldHVybiBhLlBPSU5UX0NMT1VEO2Nhc2UgMTpyZXR1cm4gYS5UUklBTkdVTEFSX01FU0g7ZGVmYXVsdDpyZXR1cm4gYS5JTlZBTElEX0dFT01FVFJZX1RZUEV9fTtyZXR1cm4gbi5yZWFkeX19KCk7Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPURyYWNvRGVjb2Rlck1vZHVsZToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gRHJhY29EZWNvZGVyTW9kdWxlfSk6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cyYmKGV4cG9ydHMuRHJhY29EZWNvZGVyTW9kdWxlPURyYWNvRGVjb2Rlck1vZHVsZSk7Cg==", "import DRACO_DECODER_WASM from \"base64:three/examples/jsm/libs/draco/gltf/draco_decoder.wasm\";\nimport DRACO_WASM_WRAPPER from \"base64:three/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js\";\nimport { AnimationClip, FileLoader, Group, LoadingManager } from \"three\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { DRACOLoader } from \"three/addons/loaders/DRACOLoader.js\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\nimport { FBXLoader } from \"three/examples/jsm/loaders/FBXLoader.js\";\nimport { GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader.js\";\n\nconst textDecoder = new TextDecoder();\n\nfunction convertArrayBufferToString(buffer: ArrayBuffer, from?: number, to?: number) {\n if (from === undefined) {\n from = 0;\n }\n if (to === undefined) {\n to = buffer.byteLength;\n }\n\n return textDecoder.decode(new Uint8Array(buffer, from, to));\n}\n\nconst fbxBinaryHeader = \"Kaydara\\u0020FBX\\u0020Binary\\u0020\\u0020\\0\";\nfunction IsFBXBinary(buffer: ArrayBuffer): boolean {\n return (\n buffer.byteLength >= fbxBinaryHeader.length &&\n fbxBinaryHeader === convertArrayBufferToString(buffer, 0, fbxBinaryHeader.length)\n );\n}\n\nconst gtlfBinaryHeader = \"glTF\";\nfunction IsGLB(buffer: ArrayBuffer): boolean {\n return buffer.byteLength >= 4 && gtlfBinaryHeader === convertArrayBufferToString(buffer, 0, 4);\n}\n\nconst fbxTextHeader = [\n \"K\",\n \"a\",\n \"y\",\n \"d\",\n \"a\",\n \"r\",\n \"a\",\n \"\\\\\",\n \"F\",\n \"B\",\n \"X\",\n \"\\\\\",\n \"B\",\n \"i\",\n \"n\",\n \"a\",\n \"r\",\n \"y\",\n \"\\\\\",\n \"\\\\\",\n];\nfunction isFbxFormatASCII(text: string): boolean {\n let cursor = 0;\n\n function read(offset: number) {\n const result = text[offset - 1];\n text = text.slice(cursor + offset);\n cursor++;\n return result;\n }\n\n for (let i = 0; i < fbxTextHeader.length; ++i) {\n const num = read(1);\n if (num !== fbxTextHeader[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type ModelLoadResult = { group: Group; animations: Array };\n\nexport class ModelLoader {\n private fbxLoader: FBXLoader;\n private gltfLoader: GLTFLoader;\n private static dracoLoader: DRACOLoader | null = null;\n\n private static getDracoLoader() {\n if (ModelLoader.dracoLoader) {\n return ModelLoader.dracoLoader;\n }\n ModelLoader.dracoLoader = new DRACOLoader({\n /*\n Implement the methods of the LoadingManager interface so that we can inject the embedded Draco decoder\n rather than retrieve it from the network by overriding the resolveURL method to return data URIs.\n */\n resolveURL: (url: string) => {\n if (url === \"draco_wasm_wrapper.js\") {\n return \"data:text/javascript;base64,\" + DRACO_WASM_WRAPPER;\n } else if (url === \"draco_decoder.wasm\") {\n return \"data:application/wasm;base64,\" + DRACO_DECODER_WASM;\n }\n return url;\n },\n itemStart: () => {\n // no-op\n },\n itemEnd: () => {\n // no-op\n },\n itemError: () => {\n // no-op\n },\n }).preload();\n return ModelLoader.dracoLoader;\n }\n\n constructor(\n private manager?: LoadingManager,\n private options: { requestHeader?: Record; withCredentials?: boolean } = {},\n ) {\n this.gltfLoader = new GLTFLoader(this.manager)\n .setMeshoptDecoder(MeshoptDecoder)\n .setDRACOLoader(ModelLoader.getDracoLoader());\n\n this.fbxLoader = new FBXLoader(this.manager);\n }\n\n public async load(url: string, onProgress?: (loaded: number, total: number) => void) {\n return new Promise((resolve, reject) => {\n const resourcePath = ModelLoader.extractUrlBase(url);\n\n this.manager?.itemStart(url);\n\n const _onError = (e: Error) => {\n reject(e);\n\n this.manager?.itemError(url);\n this.manager?.itemEnd(url);\n };\n\n const loader = new FileLoader(this.manager);\n loader.setResponseType(\"arraybuffer\");\n if (this.options.requestHeader) {\n loader.setRequestHeader(this.options.requestHeader);\n }\n if (this.options.withCredentials !== undefined) {\n loader.setWithCredentials(this.options.withCredentials);\n }\n\n loader.load(\n url,\n async (data: ArrayBuffer) => {\n try {\n const loadResult = await this.loadFromBuffer(data, resourcePath);\n this.manager?.itemEnd(url);\n resolve(loadResult);\n } catch (e) {\n _onError(e);\n }\n },\n (progressEvent) => {\n if (onProgress && progressEvent.lengthComputable) {\n onProgress(progressEvent.loaded, progressEvent.total);\n }\n },\n _onError,\n );\n });\n }\n\n private static extractUrlBase(url: string): string {\n const index = url.lastIndexOf(\"/\");\n\n if (index === -1) {\n return \"./\";\n }\n\n return url.slice(0, index + 1);\n }\n\n public async loadFromBuffer(buffer: ArrayBuffer, pathName: string): Promise {\n // fbx binary\n if (IsFBXBinary(buffer)) {\n const group = this.fbxLoader.parse(buffer, pathName);\n return { group, animations: [] };\n }\n\n // gltf/glb binary\n if (IsGLB(buffer)) {\n const gltf = await this.gltfLoader.parseAsync(buffer, pathName);\n return { group: gltf.scene, animations: gltf.animations };\n }\n\n const text = convertArrayBufferToString(buffer);\n // fbx text\n if (isFbxFormatASCII(text)) {\n const group = this.fbxLoader.parse(text, pathName);\n return { group, animations: [] };\n }\n\n // gltf text\n const gltf = await this.gltfLoader.parseAsync(text, pathName);\n return { group: gltf.scene, animations: gltf.animations };\n }\n}\n", "import { Audio, MAudioProps } from \"@mml-io/mml-web\";\nimport { AudioGraphics } from \"@mml-io/mml-web\";\nimport { LoadingInstanceManager } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\nimport { PositionalAudioHelper } from \"three/addons/helpers/PositionalAudioHelper.js\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nconst debugAudioSphereSize = 0.25;\nconst debugAudioGeometry = new THREE.SphereGeometry(debugAudioSphereSize, 4, 2);\nconst debugAudioMaterial = new THREE.MeshBasicMaterial({\n wireframe: true,\n fog: false,\n toneMapped: false,\n color: 0x00ff00,\n});\nconst audioRefDistance = 1;\nconst audioRolloffFactor = 1;\n\nfunction extendAudioToDuration(\n context: AudioContext,\n buffer: AudioBuffer,\n seconds: number,\n): AudioBuffer {\n const updatedBuffer = context.createBuffer(\n buffer.numberOfChannels,\n Math.ceil(seconds * buffer.sampleRate),\n buffer.sampleRate,\n );\n for (let channelNumber = 0; channelNumber < buffer.numberOfChannels; channelNumber++) {\n const channelData = buffer.getChannelData(channelNumber);\n const updatedChannelData = updatedBuffer.getChannelData(channelNumber);\n updatedChannelData.set(channelData, 0);\n }\n return updatedBuffer;\n}\n\nexport class ThreeJSAudio extends AudioGraphics {\n private audioDebugHelper: THREE.Mesh | null = null;\n private audioDebugConeX: PositionalAudioHelper | null;\n private audioDebugConeY: PositionalAudioHelper | null;\n private audioContextStateChangedListener = () => {\n this.syncAudioTime();\n };\n\n private documentTimeListener: { remove: () => void };\n private delayedPauseTimer: NodeJS.Timeout | null = null;\n private srcLoadingInstanceManager = new LoadingInstanceManager(`${Audio.tagName}.src`);\n\n private positionalAudio: THREE.PositionalAudio;\n\n private loadedAudioState: {\n loadedAudio:\n | {\n mode: \"LOADED\";\n buffer: AudioBuffer;\n currentSource: {\n sourceNode: AudioBufferSourceNode;\n contextStartTime: number;\n } | null;\n paddedBuffer?: {\n buffer: AudioBuffer;\n totalDuration: number;\n };\n }\n | {\n mode: \"LOADING\";\n srcLoadPromise: Promise;\n abortController: AbortController;\n }\n | null;\n currentSrc: string;\n } | null = null;\n\n constructor(private audio: Audio) {\n super(audio);\n\n this.documentTimeListener = this.audio.addDocumentTimeListener(() => {\n if (this.loadedAudioState) {\n this.syncAudioTime();\n }\n });\n\n const audioListener = this.getAudioListener();\n this.positionalAudio = new THREE.PositionalAudio(audioListener);\n this.positionalAudio.context.addEventListener(\n \"statechange\",\n this.audioContextStateChangedListener,\n );\n this.positionalAudio.setVolume(this.audio.props.volume);\n this.positionalAudio.setDirectionalCone(\n this.audio.props.coneFalloffAngle ?? 360,\n this.audio.props.coneAngle,\n 0,\n );\n this.positionalAudio.setRefDistance(audioRefDistance);\n this.positionalAudio.setRolloffFactor(audioRolloffFactor);\n this.audio.getContainer().add(this.positionalAudio);\n\n this.updateAudio();\n this.updateDebugVisualisation();\n }\n\n disable(): void {}\n\n enable(): void {}\n\n public syncAudioTime() {\n const audioContext = this.positionalAudio.context;\n if (audioContext.state !== \"running\") {\n return;\n }\n\n if (this.delayedPauseTimer !== null) {\n clearTimeout(this.delayedPauseTimer);\n this.delayedPauseTimer = null;\n }\n\n if (\n !this.loadedAudioState ||\n !this.loadedAudioState.loadedAudio ||\n this.loadedAudioState.loadedAudio.mode !== \"LOADED\"\n ) {\n return;\n }\n\n const loadedAudio = this.loadedAudioState.loadedAudio;\n const audioBuffer = loadedAudio.buffer;\n let currentSource = loadedAudio.currentSource;\n\n if (!this.audio.props.enabled || this.audio.isDisabled()) {\n if (currentSource) {\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n }\n return;\n }\n\n const documentTime = this.audio.getDocumentTime();\n if (this.audio.props.pauseTime !== null) {\n const timeUntilPause = this.audio.props.pauseTime - documentTime;\n if (timeUntilPause < 2) {\n // The audio should be paused because the pauseTime is in the past or very close\n if (currentSource) {\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n }\n return;\n } else {\n // The pause time is in the future\n const delayedPauseTimer = setTimeout(() => {\n if (this.delayedPauseTimer === delayedPauseTimer) {\n this.delayedPauseTimer = null;\n }\n this.syncAudioTime();\n }, timeUntilPause);\n this.delayedPauseTimer = delayedPauseTimer;\n }\n }\n\n const currentTime = (documentTime - this.audio.props.startTime) / 1000;\n const audioDuration = audioBuffer.duration;\n\n let loopDurationSeconds: number | null = null;\n if (this.audio.props.loopDuration !== null && this.audio.props.loopDuration > 0) {\n loopDurationSeconds = this.audio.props.loopDuration / 1000;\n }\n\n let desiredAudioTime: number;\n if (this.audio.props.loop) {\n if (currentTime < 0) {\n desiredAudioTime = currentTime;\n } else {\n if (loopDurationSeconds === null) {\n desiredAudioTime = currentTime % audioDuration;\n } else {\n desiredAudioTime = currentTime % loopDurationSeconds;\n }\n }\n } else {\n desiredAudioTime = currentTime;\n if (desiredAudioTime > audioDuration) {\n // The audio should stop because it has reached the end\n if (currentSource) {\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n }\n return;\n }\n }\n\n const loopDurationLongerThanAudioDuration =\n loopDurationSeconds && loopDurationSeconds > audioDuration;\n const playbackLength = loopDurationSeconds ? loopDurationSeconds : audioDuration;\n\n if (currentSource) {\n if (currentSource.sourceNode.loop !== this.audio.props.loop) {\n // The loop setting has changed - remove the existing audio source and a new one will be created\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n currentSource = null;\n } else if (\n loopDurationSeconds !== null &&\n loopDurationLongerThanAudioDuration &&\n (!loadedAudio.paddedBuffer || loadedAudio.paddedBuffer.totalDuration < loopDurationSeconds)\n ) {\n /*\n The loop duration is set, and it is longer than the audio file, and\n either there is no existing padding, or the existing padding is too\n short. Dispose of the existing audio source and create a new one.\n */\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n currentSource = null;\n } else if (\n loopDurationSeconds === null &&\n currentSource.sourceNode.loopEnd !== audioBuffer.duration\n ) {\n // The loop duration has been removed - reset the loop end to the audio duration\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n currentSource = null;\n } else {\n if (this.audio.props.startTime > documentTime) {\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n currentSource = null;\n } else {\n const unloopedCurrentAudioPoint =\n (audioContext.currentTime - currentSource.contextStartTime) /\n currentSource.sourceNode.playbackRate.value;\n\n if (unloopedCurrentAudioPoint < 0) {\n // Audio should not be playing yet, so stop it and it will be rescheduled\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n currentSource = null;\n } else {\n if (\n loopDurationSeconds !== null &&\n currentSource.sourceNode.loopEnd !== loopDurationSeconds\n ) {\n currentSource.sourceNode.loopEnd = loopDurationSeconds;\n }\n\n const currentAudioPoint = unloopedCurrentAudioPoint % playbackLength;\n\n let delta = desiredAudioTime - currentAudioPoint;\n if (this.audio.props.loop) {\n // Check if the delta wrapping around is smaller (i.e. the desired and current are closer together if we wrap around)\n const loopedDelta = delta - playbackLength;\n if (Math.abs(delta) > Math.abs(loopedDelta)) {\n delta = loopedDelta;\n }\n }\n\n if (Math.abs(delta) > 0.5) {\n // We need to skip to the correct point as playback has drifted too far. Remove the audio source and a new one will be created\n currentSource.sourceNode.stop();\n loadedAudio.currentSource = null;\n currentSource = null;\n } else {\n if (Math.abs(delta) < 0.1) {\n // Do nothing - this is close enough - set the playback rate to 1\n currentSource.sourceNode.playbackRate.value = 1;\n } else {\n if (delta > 0) {\n currentSource.sourceNode.playbackRate.value = 1.01;\n } else {\n currentSource.sourceNode.playbackRate.value = 0.99;\n }\n }\n // Calculate a start time that produces the current time as calculated time the next time it is checked\n currentSource.contextStartTime =\n audioContext.currentTime -\n currentAudioPoint / currentSource.sourceNode.playbackRate.value;\n }\n }\n }\n }\n }\n\n if (!currentSource) {\n // There is no current source (or it was removed) - create a new one\n const currentSourceNode = this.positionalAudio.context.createBufferSource();\n\n let buffer = audioBuffer;\n if (loopDurationSeconds && loopDurationLongerThanAudioDuration) {\n // The loop duration requires longer audio than the original audio - pad it with silence\n if (\n loadedAudio.paddedBuffer &&\n loadedAudio.paddedBuffer.totalDuration === loopDurationSeconds\n ) {\n // The padding is already the correct length\n buffer = loadedAudio.paddedBuffer.buffer;\n } else {\n const paddedBuffer = extendAudioToDuration(\n this.positionalAudio.context,\n audioBuffer,\n loopDurationSeconds,\n );\n loadedAudio.paddedBuffer = {\n buffer: paddedBuffer,\n totalDuration: loopDurationSeconds,\n };\n buffer = paddedBuffer;\n }\n }\n\n currentSourceNode.buffer = buffer;\n currentSourceNode.loop = this.audio.props.loop;\n currentSourceNode.loopStart = 0;\n if (loopDurationSeconds) {\n currentSourceNode.loopEnd = loopDurationSeconds;\n } else {\n currentSourceNode.loopEnd = audioBuffer.duration;\n }\n let contextStartTime;\n if (desiredAudioTime < 0) {\n // The audio should not have started yet - schedule it to start in the future\n const timeFromNowToStart = -desiredAudioTime;\n contextStartTime = audioContext.currentTime + timeFromNowToStart;\n currentSourceNode.start(contextStartTime);\n } else {\n /*\n The audio should have been playing already. Start playing from an\n offset into the file and set the contextStartTime to when it should\n have started\n */\n contextStartTime = audioContext.currentTime - desiredAudioTime;\n currentSourceNode.start(0, desiredAudioTime);\n }\n loadedAudio.currentSource = {\n sourceNode: currentSourceNode,\n contextStartTime,\n };\n this.positionalAudio.setNodeSource(currentSourceNode);\n }\n }\n\n private clearAudio() {\n if (this.loadedAudioState) {\n if (this.loadedAudioState.loadedAudio) {\n if (this.loadedAudioState.loadedAudio.mode === \"LOADING\") {\n this.loadedAudioState.loadedAudio.abortController.abort();\n } else {\n if (this.loadedAudioState.loadedAudio.currentSource?.sourceNode) {\n this.loadedAudioState.loadedAudio.currentSource.sourceNode.stop();\n }\n }\n }\n this.loadedAudioState = null;\n }\n }\n\n private updateAudio() {\n if (!this.audio.isConnected) {\n return;\n }\n\n const audioListener = this.getAudioListener();\n const audioContext = audioListener.context;\n\n if (!this.audio.props.src) {\n this.clearAudio();\n } else {\n const contentAddress = this.audio.contentSrcToContentAddress(this.audio.props.src);\n if (this.loadedAudioState && this.loadedAudioState.currentSrc === contentAddress) {\n // Already loaded this audio src\n } else {\n this.clearAudio();\n\n const abortController = new AbortController();\n\n this.srcLoadingInstanceManager.start(\n this.audio.getLoadingProgressManager(),\n contentAddress,\n );\n const srcLoadPromise = this.asyncLoadSourceAsset(\n contentAddress,\n abortController,\n audioContext,\n (loaded, total) => {\n this.srcLoadingInstanceManager.setProgress(loaded / total);\n },\n );\n this.loadedAudioState = {\n loadedAudio: {\n mode: \"LOADING\",\n abortController,\n srcLoadPromise,\n },\n currentSrc: contentAddress,\n };\n srcLoadPromise\n .then((buffer) => {\n if (\n this.loadedAudioState &&\n this.loadedAudioState.loadedAudio?.mode === \"LOADING\" &&\n this.loadedAudioState.loadedAudio.srcLoadPromise === srcLoadPromise\n ) {\n this.loadedAudioState.loadedAudio = {\n mode: \"LOADED\",\n buffer,\n currentSource: null,\n };\n this.srcLoadingInstanceManager.finish();\n this.syncAudioTime();\n }\n })\n .catch((e) => {\n if (\n this.loadedAudioState &&\n this.loadedAudioState.loadedAudio?.mode === \"LOADING\" &&\n this.loadedAudioState.loadedAudio.srcLoadPromise === srcLoadPromise\n ) {\n console.error(\"Failed to load audio\", e);\n this.srcLoadingInstanceManager.error(e);\n this.clearAudio();\n }\n });\n }\n }\n\n this.syncAudioTime();\n }\n\n async asyncLoadSourceAsset(\n contentAddress: string,\n abortController: AbortController,\n audioContext: AudioContext,\n // TODO - implement progress\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onProgress: (loaded: number, total: number) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n (async () => {\n if (contentAddress.startsWith(\"data:\")) {\n // Construct an AudioBuffer from the data URL\n const base64 = contentAddress.split(\",\", 2)[1];\n if (!base64) {\n reject(new Error(\"Invalid data URL\"));\n return;\n }\n let arrayBuffer;\n\n try {\n const binary = atob(base64);\n const uint8Array = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n uint8Array[i] = binary.charCodeAt(i);\n }\n arrayBuffer = uint8Array.buffer;\n } catch (e) {\n console.error(\"Failed to decode base64 data URL\", e);\n return;\n }\n audioContext\n .decodeAudioData(arrayBuffer)\n .then((audioBuffer) => {\n if (abortController.signal.aborted) {\n return;\n }\n resolve(audioBuffer);\n })\n .catch((e) => {\n console.error(\"Failed to decode data URI audio data\", e);\n });\n return;\n }\n\n const response = await fetch(contentAddress, {\n signal: abortController.signal,\n });\n\n if (response.ok) {\n response\n .arrayBuffer()\n .then((buffer) => {\n if (abortController.signal.aborted) {\n return;\n }\n audioContext.decodeAudioData(buffer).then((audioBuffer) => {\n if (abortController.signal.aborted) {\n return;\n }\n resolve(audioBuffer);\n });\n })\n .catch((e) => {\n console.error(\"Failed to decode fetched audio data\", e);\n });\n } else {\n console.error(\"Failed to fetch audio data\", response);\n }\n })();\n });\n }\n\n setSrc(): void {\n this.updateAudio();\n }\n setStartTime(): void {\n if (this.loadedAudioState) {\n this.syncAudioTime();\n }\n }\n setPauseTime(): void {\n if (this.loadedAudioState) {\n this.syncAudioTime();\n }\n }\n setLoopDuration(): void {\n if (this.loadedAudioState) {\n this.syncAudioTime();\n }\n }\n setLoop(): void {\n this.updateAudio();\n }\n setEnabled(): void {\n this.updateAudio();\n }\n setVolume(volume: number): void {\n this.positionalAudio.setVolume(volume);\n }\n setConeAngle(coneAngle: number | null, mAudioProps: MAudioProps): void {\n this.positionalAudio.setDirectionalCone(\n mAudioProps.coneAngle,\n mAudioProps.coneFalloffAngle ?? 360,\n 0,\n );\n this.updateDebugVisualisation();\n }\n setConeFalloffAngle(coneFalloffAngle: number | null, mAudioProps: MAudioProps): void {\n this.positionalAudio.setDirectionalCone(\n mAudioProps.coneAngle,\n mAudioProps.coneFalloffAngle ?? 360,\n 0,\n );\n this.updateDebugVisualisation();\n }\n\n setDebug(): void {\n this.updateDebugVisualisation();\n }\n\n dispose() {\n if (this.positionalAudio) {\n this.positionalAudio.context.removeEventListener(\n \"statechange\",\n this.audioContextStateChangedListener,\n );\n this.positionalAudio.disconnect();\n this.positionalAudio.removeFromParent();\n }\n\n this.clearAudio();\n\n if (this.delayedPauseTimer) {\n clearTimeout(this.delayedPauseTimer);\n this.delayedPauseTimer = null;\n }\n this.documentTimeListener.remove();\n this.clearDebugVisualisation();\n this.srcLoadingInstanceManager.dispose();\n }\n\n private clearDebugVisualisation() {\n if (this.audioDebugHelper) {\n this.audioDebugHelper.removeFromParent();\n this.audioDebugHelper = null;\n }\n if (this.audioDebugConeX) {\n this.audioDebugConeX.removeFromParent();\n this.audioDebugConeX = null;\n this.audioDebugConeY?.removeFromParent();\n this.audioDebugConeY = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.audio.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (!this.audioDebugHelper) {\n this.audioDebugHelper = new THREE.Mesh(debugAudioGeometry, debugAudioMaterial);\n this.audio.getContainer().add(this.audioDebugHelper);\n }\n if (!this.audioDebugConeX && this.audio.props.coneAngle) {\n this.audioDebugConeX = new PositionalAudioHelper(this.positionalAudio, 10);\n this.positionalAudio.add(this.audioDebugConeX);\n this.audioDebugConeY = new PositionalAudioHelper(this.positionalAudio, 10);\n this.audioDebugConeY.rotation.z = Math.PI / 2;\n this.positionalAudio.add(this.audioDebugConeY);\n }\n if (!this.audio.props.coneAngle && this.audioDebugConeX) {\n this.audioDebugConeX.removeFromParent();\n this.audioDebugConeX = null;\n this.audioDebugConeY?.removeFromParent();\n this.audioDebugConeY = null;\n }\n }\n this.audioDebugConeX?.update();\n this.audioDebugConeY?.update();\n }\n\n private getAudioListener() {\n return this.audio.getScene().getGraphicsAdapter().getAudioListener();\n }\n}\n", "import { ChatProbe } from \"@mml-io/mml-web\";\nimport { ChatProbeGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSChatProbe extends ChatProbeGraphics {\n private static DebugGeometry = new THREE.SphereGeometry(1, 16, 16, 1);\n private static DebugMaterial = new THREE.MeshBasicMaterial({\n color: 0xffff00,\n wireframe: true,\n transparent: true,\n opacity: 0.3,\n });\n\n private debugMesh: THREE.Mesh | null = null;\n\n constructor(private chatProbe: ChatProbe) {\n super(chatProbe);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setRange(): void {\n this.updateDebugVisualisation();\n }\n\n setDebug() {\n this.updateDebugVisualisation();\n }\n\n private clearDebugVisualisation() {\n if (this.debugMesh) {\n this.debugMesh.removeFromParent();\n this.debugMesh = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.chatProbe.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (this.chatProbe.isConnected && !this.debugMesh) {\n const mesh = new THREE.Mesh(ThreeJSChatProbe.DebugGeometry, ThreeJSChatProbe.DebugMaterial);\n mesh.castShadow = false;\n mesh.receiveShadow = false;\n this.debugMesh = mesh;\n this.chatProbe.getContainer().add(this.debugMesh);\n }\n\n if (this.debugMesh) {\n this.debugMesh.scale.set(\n this.chatProbe.props.range,\n this.chatProbe.props.range,\n this.chatProbe.props.range,\n );\n }\n }\n }\n\n dispose() {\n this.clearDebugVisualisation();\n }\n}\n", "import { Cube } from \"@mml-io/mml-web\";\nimport { CubeGraphics } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSCube extends CubeGraphics {\n static boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n private mesh: THREE.Mesh>;\n private material: THREE.MeshStandardMaterial;\n constructor(private cube: Cube) {\n super(cube);\n\n this.material = new THREE.MeshStandardMaterial({\n color: new THREE.Color(cube.props.color.r, cube.props.color.g, cube.props.color.b),\n });\n this.mesh = new THREE.Mesh(ThreeJSCube.boxGeometry, this.material);\n this.mesh.castShadow = cube.props.castShadows;\n this.mesh.receiveShadow = true;\n this.cube.getContainer().add(this.mesh);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): THREE.Object3D {\n return this.mesh;\n }\n\n setColor(color: MMLColor): void {\n this.material.color = new THREE.Color(color.r, color.g, color.b);\n }\n\n setWidth(width: number): void {\n this.mesh.scale.x = width;\n }\n\n setHeight(height: number): void {\n this.mesh.scale.y = height;\n }\n\n setDepth(depth: number): void {\n this.mesh.scale.z = depth;\n }\n\n setCastShadows(castShadows: boolean): void {\n this.mesh.castShadow = castShadows;\n }\n\n setOpacity(opacity: number): void {\n const needsUpdate = this.material.transparent === (opacity === 1);\n this.material.transparent = opacity !== 1;\n this.material.needsUpdate = needsUpdate;\n this.material.opacity = opacity;\n }\n\n dispose() {}\n}\n", "import { Cylinder, CylinderGraphics, MMLColor } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSCylinder extends CylinderGraphics {\n static cylinderGeometry = new THREE.CylinderGeometry(0.5, 0.5, 1);\n private mesh: THREE.Mesh>;\n private material: THREE.MeshStandardMaterial;\n\n constructor(private cylinder: Cylinder) {\n super(cylinder);\n\n this.material = new THREE.MeshStandardMaterial({\n color: new THREE.Color(\n cylinder.props.color.r,\n cylinder.props.color.g,\n cylinder.props.color.b,\n ),\n });\n this.mesh = new THREE.Mesh(ThreeJSCylinder.cylinderGeometry, this.material);\n this.mesh.castShadow = cylinder.props.castShadows;\n this.mesh.receiveShadow = true;\n this.cylinder.getContainer().add(this.mesh);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): THREE.Object3D {\n return this.mesh;\n }\n\n setColor(color: MMLColor): void {\n this.material.color = new THREE.Color(color.r, color.g, color.b);\n }\n\n setRadius(radius: number): void {\n this.mesh.scale.x = radius * 2;\n this.mesh.scale.z = radius * 2;\n }\n\n setHeight(height: number): void {\n this.mesh.scale.y = height;\n }\n\n setCastShadows(castShadows: boolean): void {\n this.mesh.castShadow = castShadows;\n }\n\n setOpacity(opacity: number): void {\n const needsUpdate = this.material.transparent === (opacity === 1);\n this.material.transparent = opacity !== 1;\n this.material.needsUpdate = needsUpdate;\n this.material.opacity = opacity;\n }\n\n dispose() {}\n}\n", "import { DebugHelper, DebugHelperGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSDebugHelper extends DebugHelperGraphics {\n private debugAxes: THREE.AxesHelper | null = null;\n\n constructor(private debugHelper: DebugHelper) {\n super(debugHelper);\n this.debugAxes = new THREE.AxesHelper(1);\n this.debugHelper.getContainer().add(this.debugAxes);\n }\n\n dispose() {\n if (this.debugAxes) {\n this.debugHelper.getContainer().remove(this.debugAxes);\n }\n this.debugAxes = null;\n }\n}\n", "import { Frame } from \"@mml-io/mml-web\";\nimport { FrameGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nfunction setMeshToBoundingBox(\n mesh: THREE.Mesh,\n minX: number,\n maxX: number,\n minY: number,\n maxY: number,\n minZ: number,\n maxZ: number,\n) {\n mesh.scale.set(maxX - minX, maxY - minY, maxZ - minZ);\n mesh.position.set((maxX + minX) / 2, (maxY + minY) / 2, (maxZ + minZ) / 2);\n}\n\nexport class ThreeJSFrame extends FrameGraphics {\n private static DebugBoxGeometry = new THREE.BoxGeometry(1, 1, 1, 1, 1, 1);\n private static DebugConstraintMaterial = new THREE.MeshBasicMaterial({\n color: 0xff0000,\n wireframe: true,\n transparent: true,\n opacity: 0.3,\n });\n private static DebugLoadRangeMaterial = new THREE.MeshBasicMaterial({\n color: 0x00ff00,\n wireframe: true,\n transparent: true,\n opacity: 0.3,\n });\n private static DebugUnloadRangeMaterial = new THREE.MeshBasicMaterial({\n color: 0x0000ff,\n wireframe: true,\n transparent: true,\n opacity: 0.3,\n });\n\n private debugMeshes: {\n debugBoxConstraintMesh: THREE.Mesh;\n debugBoxLoadRangeMesh: THREE.Mesh;\n debugBoxUnloadRangeMesh: THREE.Mesh;\n } | null = null;\n\n constructor(private frame: Frame) {\n super(frame);\n }\n\n setSrc() {\n // no-op\n }\n\n setDebug(): void {\n this.updateDebugVisualisation();\n }\n setLoadRange(): void {\n this.updateDebugVisualisation();\n }\n setUnloadRange(): void {\n this.updateDebugVisualisation();\n }\n setMinX(): void {\n this.updateDebugVisualisation();\n }\n setMaxX(): void {\n this.updateDebugVisualisation();\n }\n setMinY(): void {\n this.updateDebugVisualisation();\n }\n setMaxY(): void {\n this.updateDebugVisualisation();\n }\n setMinZ(): void {\n this.updateDebugVisualisation();\n }\n setMaxZ(): void {\n this.updateDebugVisualisation();\n }\n\n disable(): void {}\n\n enable(): void {}\n\n dispose() {}\n\n private clearDebugVisualisation() {\n if (this.debugMeshes) {\n this.debugMeshes.debugBoxConstraintMesh.removeFromParent();\n this.debugMeshes.debugBoxLoadRangeMesh.removeFromParent();\n this.debugMeshes.debugBoxUnloadRangeMesh.removeFromParent();\n this.debugMeshes = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.frame.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (!this.frame.isConnected) {\n return;\n }\n if (!this.debugMeshes) {\n this.debugMeshes = {\n debugBoxConstraintMesh: new THREE.Mesh(\n ThreeJSFrame.DebugBoxGeometry,\n ThreeJSFrame.DebugConstraintMaterial,\n ),\n debugBoxLoadRangeMesh: new THREE.Mesh(\n ThreeJSFrame.DebugBoxGeometry,\n ThreeJSFrame.DebugLoadRangeMaterial,\n ),\n debugBoxUnloadRangeMesh: new THREE.Mesh(\n ThreeJSFrame.DebugBoxGeometry,\n ThreeJSFrame.DebugUnloadRangeMaterial,\n ),\n };\n this.frame.getContainer().add(this.debugMeshes.debugBoxConstraintMesh);\n this.frame.getContainer().add(this.debugMeshes.debugBoxLoadRangeMesh);\n this.frame.getContainer().add(this.debugMeshes.debugBoxUnloadRangeMesh);\n }\n\n let boxBounds = this.frame.getDefinedBoxBounds();\n if (!boxBounds) {\n boxBounds = [0, 0, 0, 0, 0, 0];\n }\n\n const [minX, maxX, minY, maxY, minZ, maxZ] = boxBounds;\n this.debugMeshes.debugBoxConstraintMesh.visible = true;\n this.debugMeshes.debugBoxLoadRangeMesh.visible = true;\n this.debugMeshes.debugBoxUnloadRangeMesh.visible = true;\n\n setMeshToBoundingBox(\n this.debugMeshes.debugBoxConstraintMesh,\n minX,\n maxX,\n minY,\n maxY,\n minZ,\n maxZ,\n );\n\n if (this.frame.props.loadRange === null) {\n this.debugMeshes.debugBoxLoadRangeMesh.visible = false;\n this.debugMeshes.debugBoxUnloadRangeMesh.visible = false;\n } else {\n this.debugMeshes.debugBoxLoadRangeMesh.visible = true;\n this.debugMeshes.debugBoxUnloadRangeMesh.visible = true;\n\n setMeshToBoundingBox(\n this.debugMeshes.debugBoxLoadRangeMesh,\n minX - this.frame.props.loadRange,\n maxX + this.frame.props.loadRange,\n minY - this.frame.props.loadRange,\n maxY + this.frame.props.loadRange,\n minZ - this.frame.props.loadRange,\n maxZ + this.frame.props.loadRange,\n );\n\n setMeshToBoundingBox(\n this.debugMeshes.debugBoxUnloadRangeMesh,\n minX - this.frame.props.loadRange - this.frame.props.unloadRange,\n maxX + this.frame.props.loadRange + this.frame.props.unloadRange,\n minY - this.frame.props.loadRange - this.frame.props.unloadRange,\n maxY + this.frame.props.loadRange + this.frame.props.unloadRange,\n minZ - this.frame.props.loadRange - this.frame.props.unloadRange,\n maxZ + this.frame.props.loadRange + this.frame.props.unloadRange,\n );\n }\n }\n }\n}\n", "import {\n calculateContentSize,\n Image,\n ImageGraphics,\n LoadingInstanceManager,\n} from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSImage extends ImageGraphics {\n private static planeGeometry = new THREE.PlaneGeometry(1, 1);\n private mesh: THREE.Mesh>;\n private material: THREE.MeshStandardMaterial;\n private static imageLoader = new THREE.ImageLoader();\n\n private srcApplyPromise: Promise | null = null;\n private loadedImage: HTMLImageElement | null;\n private loadedImageHasTransparency = false;\n private srcLoadingInstanceManager = new LoadingInstanceManager(`${Image.tagName}.src`);\n constructor(\n private image: Image,\n private updateMeshCallback: () => void,\n ) {\n super(image, updateMeshCallback);\n\n this.material = new THREE.MeshStandardMaterial({\n color: 0xffffff,\n transparent: this.image.props.opacity !== 1 || this.loadedImageHasTransparency,\n opacity: this.image.props.opacity,\n side: THREE.DoubleSide,\n });\n this.mesh = new THREE.Mesh(ThreeJSImage.planeGeometry, this.material);\n this.mesh.castShadow = image.props.castShadows;\n this.mesh.receiveShadow = true;\n this.image.getContainer().add(this.mesh);\n }\n\n public getWidthAndHeight(): { width: number; height: number } {\n return {\n width: this.mesh.scale.x,\n height: this.mesh.scale.y,\n };\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): THREE.Object3D {\n return this.mesh;\n }\n\n setWidth(): void {\n this.updateWidthAndHeight();\n }\n\n setHeight(): void {\n this.updateWidthAndHeight();\n }\n\n setCastShadows(castShadows: boolean): void {\n this.mesh.castShadow = castShadows;\n }\n\n setOpacity(opacity: number): void {\n const needsUpdate = this.material.transparent === (opacity === 1);\n this.material.transparent = opacity !== 1;\n this.material.needsUpdate = needsUpdate;\n this.material.opacity = opacity;\n }\n\n setEmissive() {\n this.updateMaterialEmissiveIntensity();\n }\n\n private updateMaterialEmissiveIntensity() {\n if (this.material) {\n const map = this.material.map as THREE.Texture;\n if (this.image.props.emissive > 0) {\n this.material.emissive = new THREE.Color(0xffffff);\n this.material.emissiveMap = map;\n this.material.emissiveIntensity = this.image.props.emissive;\n this.material.needsUpdate = true;\n } else {\n this.material.emissive = new THREE.Color(0x000000);\n this.material.emissiveMap = null;\n this.material.emissiveIntensity = 1;\n this.material.needsUpdate = true;\n }\n }\n }\n\n setSrc(newValue: string | null): void {\n const src = (newValue || \"\").trim();\n const isDataUri = src.startsWith(\"data:image/\");\n if (this.loadedImage !== null && !isDataUri) {\n // if the image has already been loaded, remove the image data from the THREE material\n this.clearImage();\n }\n if (!src) {\n // if the src attribute is empty, reset the dimensions and return\n this.updateWidthAndHeight();\n this.srcLoadingInstanceManager.abortIfLoading();\n return;\n }\n if (!this.material) {\n // if the element is not yet connected, return\n return;\n }\n\n if (isDataUri) {\n // if the src is a data url, load it directly rather than using the loader - this avoids a potential frame skip\n const image = document.createElement(\"img\");\n image.src = src;\n this.applyImage(image);\n this.srcLoadingInstanceManager.abortIfLoading();\n return;\n }\n\n const contentSrc = this.image.contentSrcToContentAddress(src);\n const srcApplyPromise = loadImageAsPromise(\n ThreeJSImage.imageLoader,\n contentSrc,\n (loaded, total) => {\n this.srcLoadingInstanceManager.setProgress(loaded / total);\n },\n );\n this.srcLoadingInstanceManager.start(this.image.getLoadingProgressManager(), contentSrc);\n this.srcApplyPromise = srcApplyPromise;\n srcApplyPromise\n .then((image: HTMLImageElement) => {\n if (this.srcApplyPromise !== srcApplyPromise || !this.material) {\n // If we've loaded a different image since, or we're no longer connected, ignore this image\n return;\n }\n this.applyImage(image);\n this.srcLoadingInstanceManager.finish();\n })\n .catch((error) => {\n console.error(\"Error loading image:\", newValue, error);\n if (this.srcApplyPromise !== srcApplyPromise || !this.material) {\n // If we've loaded a different image since, or we're no longer connected, ignore this image\n return;\n }\n this.clearImage();\n this.srcLoadingInstanceManager.error(error);\n });\n }\n\n private updateWidthAndHeight() {\n const mesh = this.mesh;\n\n const { width, height } = calculateContentSize({\n content: this.loadedImage\n ? { width: this.loadedImage.width, height: this.loadedImage.height }\n : undefined,\n width: this.image.props.width,\n height: this.image.props.height,\n });\n mesh.scale.x = width;\n mesh.scale.y = height;\n\n this.updateMeshCallback();\n }\n\n private applyImage(image: HTMLImageElement) {\n this.loadedImage = image;\n if (!image.complete) {\n // Wait for the image to be fully loaded (most likely a data uri that has not yet been decoded)\n image.addEventListener(\"load\", () => {\n if (this.loadedImage !== image) {\n // if the image has changed since we started loading, ignore this image\n return;\n }\n this.applyImage(image);\n });\n return;\n }\n this.loadedImageHasTransparency = hasTransparency(this.loadedImage);\n if (!this.material) {\n return;\n }\n if (this.loadedImageHasTransparency) {\n this.material.alphaMap = new THREE.CanvasTexture(this.loadedImage);\n this.material.alphaTest = 0.01;\n } else {\n this.material.alphaMap = null;\n this.material.alphaTest = 0;\n }\n this.material.transparent = this.image.props.opacity !== 1 || this.loadedImageHasTransparency;\n this.material.map = new THREE.CanvasTexture(this.loadedImage);\n this.material.needsUpdate = true;\n this.updateMaterialEmissiveIntensity();\n this.updateWidthAndHeight();\n }\n\n private clearImage() {\n this.loadedImage = null;\n this.srcApplyPromise = null;\n if (this.material && this.material.map) {\n this.material.map.dispose();\n this.material.needsUpdate = true;\n this.material.map = null;\n this.material.alphaMap = null;\n this.material.alphaTest = 0;\n }\n this.updateWidthAndHeight();\n }\n\n dispose() {\n if (this.material.map) {\n this.material.map.dispose();\n this.material.map = null;\n }\n if (this.material.emissiveMap) {\n this.material.emissiveMap.dispose();\n this.material.emissiveMap = null;\n }\n this.material.dispose();\n this.loadedImage = null;\n this.srcLoadingInstanceManager.dispose();\n }\n}\n\nexport function loadImageAsPromise(\n imageLoader: THREE.ImageLoader,\n path: string,\n onProgress?: (loaded: number, total: number) => void,\n): Promise {\n return new Promise((resolve, reject) => {\n imageLoader.load(\n path,\n (image: HTMLImageElement) => {\n resolve(image);\n },\n (xhr: ProgressEvent) => {\n if (onProgress) {\n onProgress(xhr.loaded, xhr.total);\n }\n },\n (error: ErrorEvent) => {\n reject(error);\n },\n );\n });\n}\n\nfunction hasTransparency(image: HTMLImageElement) {\n if (image.width === 0 || image.height === 0) {\n return false;\n }\n const canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n ctx.drawImage(image, 0, 0);\n\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\n\n for (let i = 3, n = imageData.length; i < n; i += 4) {\n if (imageData[i] < 255) {\n return true;\n }\n }\n return false;\n}\n", "import { Interaction } from \"@mml-io/mml-web\";\nimport { InteractionGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSInteraction extends InteractionGraphics {\n private static DebugGeometry = new THREE.SphereGeometry(1, 16, 16, 1);\n private static DebugMaterial = new THREE.MeshBasicMaterial({\n color: 0x00aa00,\n wireframe: true,\n transparent: true,\n opacity: 0.3,\n });\n\n private debugMesh: THREE.Mesh | null = null;\n\n constructor(private positionProbe: Interaction) {\n super(positionProbe);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setRange(): void {\n this.updateDebugVisualisation();\n }\n\n setInFocus(): void {\n // no-op\n }\n\n setLineOfSight(): void {\n // no-op\n }\n\n setPriority(): void {\n // no-op\n }\n\n setPrompt(): void {\n // no-op\n }\n\n setDebug() {\n this.updateDebugVisualisation();\n }\n\n private clearDebugVisualisation() {\n if (this.debugMesh) {\n this.debugMesh.removeFromParent();\n this.debugMesh = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.positionProbe.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (this.positionProbe.isConnected && !this.debugMesh) {\n const mesh = new THREE.Mesh(\n ThreeJSInteraction.DebugGeometry,\n ThreeJSInteraction.DebugMaterial,\n );\n mesh.castShadow = false;\n mesh.receiveShadow = false;\n this.debugMesh = mesh;\n this.positionProbe.getContainer().add(this.debugMesh);\n }\n\n if (this.debugMesh) {\n this.debugMesh.scale.set(\n this.positionProbe.props.range,\n this.positionProbe.props.range,\n this.positionProbe.props.range,\n );\n }\n }\n }\n\n dispose() {\n this.clearDebugVisualisation();\n }\n}\n", "import { CanvasText, Label, LabelGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSLabel extends LabelGraphics {\n static labelGeometry = new THREE.PlaneGeometry(1, 1);\n private mesh: THREE.Mesh>;\n private material: THREE.MeshStandardMaterial | null = null;\n private canvasText: CanvasText = new CanvasText();\n\n constructor(private label: Label) {\n super(label);\n\n this.material = new THREE.MeshStandardMaterial({\n transparent: false,\n });\n this.mesh = new THREE.Mesh(ThreeJSLabel.labelGeometry, this.material);\n this.mesh.material = this.material;\n this.mesh.scale.x = this.label.props.width;\n this.mesh.scale.y = this.label.props.height;\n this.mesh.castShadow = this.label.props.castShadows;\n this.mesh.receiveShadow = true;\n this.redrawText();\n this.label.getContainer().add(this.mesh);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): THREE.Object3D {\n return this.mesh;\n }\n\n setContent(): void {\n this.redrawText();\n }\n\n setAlignment(): void {\n this.redrawText();\n }\n\n setFontSize(): void {\n this.redrawText();\n }\n\n setPadding(): void {\n this.redrawText();\n }\n\n setFontColor(): void {\n this.redrawText();\n }\n\n setEmissive(): void {\n this.updateMaterialEmissiveIntensity();\n }\n\n setColor(): void {\n this.redrawText();\n }\n\n setWidth(width: number): void {\n this.mesh.scale.x = width;\n this.redrawText();\n }\n\n setHeight(height: number): void {\n this.mesh.scale.y = height;\n this.redrawText();\n }\n\n setCastShadows(castShadows: boolean): void {\n this.mesh.castShadow = castShadows;\n }\n\n private redrawText() {\n if (!this.material) {\n return;\n }\n if (this.material.map) {\n this.material.map.dispose();\n }\n\n const canvas = this.canvasText.renderText(this.label.props.content, {\n bold: true,\n fontSize: this.label.props.fontSize * 2,\n paddingPx: this.label.props.padding,\n textColorRGB255A1: {\n r: this.label.props.fontColor.r * 255,\n g: this.label.props.fontColor.g * 255,\n b: this.label.props.fontColor.b * 255,\n a: this.label.props.fontColor.a ?? 1,\n },\n backgroundColorRGB255A1: {\n r: this.label.props.color.r * 255,\n g: this.label.props.color.g * 255,\n b: this.label.props.color.b * 255,\n a: this.label.props.color.a ?? 1,\n },\n dimensions: {\n width: this.label.props.width * 200,\n height: this.label.props.height * 200,\n },\n alignment: this.label.props.alignment,\n });\n\n this.material.map = new THREE.CanvasTexture(canvas);\n this.material.transparent = (this.label.props.color.a ?? 1) < 1;\n this.updateMaterialEmissiveIntensity();\n }\n\n private updateMaterialEmissiveIntensity() {\n if (this.material) {\n const map = this.material.map as THREE.Texture;\n if (this.label.props.emissive > 0) {\n this.material.emissive = new THREE.Color(0xffffff);\n this.material.emissiveMap = map;\n this.material.emissiveIntensity = this.label.props.emissive;\n this.material.needsUpdate = true;\n } else {\n this.material.emissive = new THREE.Color(0x000000);\n this.material.emissiveMap = null;\n this.material.emissiveIntensity = 1;\n this.material.needsUpdate = true;\n }\n }\n }\n\n dispose() {\n this.mesh.geometry.dispose();\n if (this.material) {\n if (this.material.map) {\n this.material.map.dispose();\n }\n this.material.dispose();\n this.material = null;\n }\n }\n}\n", "import { Light, LightTypes } from \"@mml-io/mml-web\";\nimport { LightGraphics } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\ndeclare type LightHelper = THREE.PointLightHelper | THREE.SpotLightHelper;\n\nconst debugSphereSize = 0.25;\n\nexport class ThreeJSLight extends LightGraphics {\n private threeLight: THREE.PointLight | THREE.SpotLight;\n private threeLightHelper: LightHelper | null;\n\n constructor(private light: Light) {\n super(light);\n this.createLight();\n }\n\n private createLight() {\n if (this.threeLight) {\n this.threeLight.removeFromParent();\n }\n\n const { r, g, b } = this.light.props.color;\n const color = new THREE.Color(r, g, b);\n\n switch (this.light.props.type) {\n case LightTypes.spotlight: {\n const light = new THREE.SpotLight(\n color,\n this.light.props.intensity,\n this.light.props.distance ?? undefined,\n THREE.MathUtils.degToRad(this.light.props.angleDeg),\n );\n // create a target\n const target = new THREE.Object3D();\n target.position.set(0, -1, 0);\n light.position.set(0, 0, 0);\n light.add(target);\n light.target = target;\n this.threeLight = light;\n break;\n }\n case LightTypes.point:\n this.threeLight = new THREE.PointLight(\n color,\n this.light.props.intensity,\n this.light.props.distance ?? undefined,\n );\n break;\n }\n\n if (this.threeLight.shadow) {\n this.threeLight.castShadow = this.light.props.castShadows;\n this.threeLight.shadow.mapSize.width = 512;\n this.threeLight.shadow.mapSize.height = 512;\n if (this.threeLight.shadow.camera instanceof THREE.PerspectiveCamera) {\n this.threeLight.shadow.camera.near = 0.5;\n this.threeLight.shadow.camera.far = 500;\n }\n this.threeLight.shadow.bias = -0.001;\n this.threeLight.shadow.normalBias = 0.01;\n const d = 10;\n const c = this.threeLight.shadow.camera as any;\n c.left = -d;\n c.right = d;\n c.top = d;\n c.bottom = -d;\n }\n\n this.threeLight.intensity = this.light.props.intensity;\n\n this.light.getContainer().add(this.threeLight);\n\n if (this.threeLightHelper) {\n this.makeLightHelper();\n }\n if (!this.light.props.enabled) {\n this.threeLight.visible = false;\n if (this.threeLightHelper) {\n this.threeLightHelper.visible = false;\n }\n }\n }\n\n private makeLightHelper() {\n if (this.threeLightHelper) {\n this.threeLightHelper.removeFromParent();\n this.threeLightHelper = null;\n }\n\n if (this.light instanceof THREE.PointLight) {\n this.threeLightHelper = new THREE.PointLightHelper(this.light, debugSphereSize);\n } else if (this.light instanceof THREE.SpotLight) {\n this.threeLightHelper = new THREE.SpotLightHelper(this.light);\n }\n\n if (this.threeLightHelper) {\n this.light.getContainer().add(this.threeLightHelper);\n this.threeLightHelper.matrix = this.threeLight.matrix;\n this.threeLightHelper.visible = this.threeLight.visible;\n }\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setEnabled(enabled: boolean): void {\n this.threeLight.visible = enabled;\n if (this.threeLightHelper) {\n this.threeLightHelper.visible = enabled;\n }\n }\n\n setCastShadows(castShadows: boolean) {\n this.threeLight.castShadow = castShadows;\n }\n\n setAngle(angle: number) {\n if (this.threeLight instanceof THREE.SpotLight) {\n (this.threeLight as THREE.SpotLight).angle = THREE.MathUtils.degToRad(angle);\n }\n }\n\n setIntensity(intensity: number) {\n this.threeLight.intensity = intensity;\n }\n\n setDistance(distance: number) {\n this.threeLight.distance = distance;\n }\n\n setType(): void {\n this.createLight();\n }\n\n setDebug(debug: boolean): void {\n if (debug && !this.threeLightHelper) {\n this.makeLightHelper();\n } else if (!debug && this.threeLightHelper) {\n this.threeLightHelper.removeFromParent();\n this.threeLightHelper = null;\n }\n }\n\n setColor(color: MMLColor): void {\n this.threeLight.color.set(new THREE.Color(color.r, color.g, color.b));\n if (this.threeLightHelper) {\n this.threeLightHelper.color = new THREE.Color(color.r, color.g, color.b);\n }\n }\n\n dispose() {\n this.light.getContainer().remove(this.threeLight);\n if (this.threeLightHelper) {\n this.threeLightHelper.removeFromParent();\n }\n }\n}\n", "import { Link } from \"@mml-io/mml-web\";\nimport { LinkGraphics } from \"@mml-io/mml-web\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSLink extends LinkGraphics {\n constructor(private link: Link) {\n super(link);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setHref(): void {\n // no-op\n }\n\n setTarget(): void {\n // no-op\n }\n\n dispose() {}\n}\n", "import { MElement, MELEMENT_PROPERTY_NAME } from \"@mml-io/mml-web\";\nimport { MElementGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSMElement extends MElementGraphics {\n protected container: THREE.Object3D;\n private currentParentContainer: THREE.Object3D | null = null;\n\n constructor(private element: MElement) {\n super(element);\n this.container = new THREE.Group();\n this.container.name = this.constructor.name;\n (this.container as any)[MELEMENT_PROPERTY_NAME] = element;\n\n if (this.currentParentContainer !== null) {\n throw new Error(\"Already connected to a parent\");\n }\n\n const mElementParent = this.element.getMElementParent();\n if (mElementParent) {\n this.currentParentContainer = mElementParent.getContainer();\n this.currentParentContainer.add(this.container);\n return;\n }\n\n // If none of the ancestors are MElements then this element may be directly connected to the body (without a wrapper).\n // Attempt to use a global scene that has been configured to attach this element to.\n const scene = this.element.getScene();\n this.currentParentContainer = scene.getRootContainer();\n this.currentParentContainer.add(this.container);\n }\n\n public getContainer(): THREE.Object3D {\n return this.container;\n }\n\n public dispose() {\n if (this.currentParentContainer === null) {\n throw new Error(\"Was not connected to a parent\");\n }\n\n this.currentParentContainer.remove(this.container);\n this.currentParentContainer = null;\n }\n}\n", "import { MElement, Model, TransformableElement } from \"@mml-io/mml-web\";\nimport { ModelGraphics } from \"@mml-io/mml-web\";\nimport { LoadingInstanceManager } from \"@mml-io/mml-web\";\nimport { IVect3 } from \"@mml-io/mml-web\";\nimport { ModelLoader, ModelLoadResult } from \"@mml-io/model-loader\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\ntype ThreeJSModelLoadState = {\n group: THREE.Object3D;\n bones: Map;\n boundingBox: {\n size: THREE.Vector3;\n centerOffset: THREE.Vector3;\n };\n};\n\ntype ThreeJSModelAnimState = {\n currentAnimationClip: THREE.AnimationClip;\n appliedAnimation: {\n animationGroup: THREE.AnimationObjectGroup;\n animationMixer: THREE.AnimationMixer;\n animationAction: THREE.AnimationAction;\n } | null;\n};\n\nexport class ThreeJSModel extends ModelGraphics {\n private static modelLoader = new ModelLoader();\n private srcLoadingInstanceManager = new LoadingInstanceManager(`${Model.tagName}.src`);\n private animLoadingInstanceManager = new LoadingInstanceManager(`${Model.tagName}.anim`);\n private latestSrcModelPromise: Promise | null = null;\n private latestAnimPromise: Promise | null = null;\n\n private socketChildrenByBone = new Map>>();\n\n private attachments = new Map<\n Model,\n {\n animationGroup: THREE.AnimationObjectGroup;\n animationMixer: THREE.AnimationMixer;\n animationAction: THREE.AnimationAction;\n } | null\n >();\n private registeredParentAttachment: Model | null = null;\n\n private static DebugBoundingBoxGeometry = new THREE.BoxGeometry(1, 1, 1, 1, 1, 1);\n private static DebugBoundingBoxMaterial = new THREE.MeshBasicMaterial({\n color: 0xff0000,\n wireframe: true,\n transparent: true,\n opacity: 0.3,\n });\n private debugBoundingBox: THREE.Mesh | null = null;\n\n protected loadedState: ThreeJSModelLoadState | null = null;\n protected animState: ThreeJSModelAnimState | null = null;\n\n private documentTimeTickListener: null | { remove: () => void } = null;\n\n constructor(\n private model: Model,\n private updateMeshCallback: () => void,\n ) {\n super(model, updateMeshCallback);\n }\n\n hasLoadedModel(): boolean {\n return !!this.loadedState?.group;\n }\n\n hasLoadedAnimation(): boolean {\n return !!this.animState?.appliedAnimation;\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getBoundingBox(): { centerOffset: IVect3; size: IVect3 } | null {\n if (this.loadedState) {\n return {\n centerOffset: this.loadedState.boundingBox.centerOffset,\n size: this.loadedState.boundingBox.size,\n };\n }\n return null;\n }\n\n getCollisionElement(): THREE.Object3D {\n return this.loadedState?.group ?? new THREE.Object3D();\n }\n\n setDebug(): void {\n this.updateDebugVisualisation();\n }\n\n setCastShadows(castShadows: boolean) {\n if (this.loadedState) {\n this.loadedState.group.traverse((object) => {\n if ((object as THREE.Mesh).isMesh) {\n const mesh = object as THREE.Mesh;\n mesh.castShadow = castShadows;\n }\n });\n }\n }\n\n setAnim(anim: string): void {\n this.resetAnimationMixer();\n this.animState = null;\n for (const [attachment, animState] of this.attachments) {\n if (animState) {\n animState.animationMixer.stopAllAction();\n this.attachments.set(attachment, null);\n }\n }\n\n if (!anim) {\n this.latestAnimPromise = null;\n this.animLoadingInstanceManager.abortIfLoading();\n\n // If the animation is removed then the model can be added to the parent attachment if the model is loaded\n if (this.loadedState && !this.registeredParentAttachment) {\n const parent = this.model.parentElement;\n if (parent instanceof Model) {\n this.registeredParentAttachment = parent;\n (parent.modelGraphics as ThreeJSModel).registerAttachment(this.model);\n }\n }\n return;\n }\n\n if (this.registeredParentAttachment) {\n (this.registeredParentAttachment.modelGraphics as ThreeJSModel).unregisterAttachment(\n this.model,\n );\n this.registeredParentAttachment = null;\n }\n\n const animSrc = this.model.contentSrcToContentAddress(anim);\n const animPromise = this.asyncLoadSourceAsset(animSrc, (loaded, total) => {\n this.animLoadingInstanceManager.setProgress(loaded / total);\n });\n this.animLoadingInstanceManager.start(this.model.getLoadingProgressManager(), animSrc);\n this.latestAnimPromise = animPromise;\n animPromise\n .then((result) => {\n if (this.latestAnimPromise !== animPromise || !this.model.isConnected) {\n return;\n }\n this.latestAnimPromise = null;\n this.playAnimation(result.animations[0]);\n\n for (const [model] of this.attachments) {\n this.registerAttachment(model);\n }\n\n this.animLoadingInstanceManager.finish();\n })\n .catch((err) => {\n console.error(\"Error loading m-model.anim\", err);\n this.latestAnimPromise = null;\n this.animLoadingInstanceManager.error(err);\n });\n }\n\n setAnimEnabled(): void {\n // no-op - property is observed in animation tick\n }\n\n setAnimLoop(): void {\n // no-op - property is observed in animation tick\n }\n\n setAnimStartTime(): void {\n // no-op - property is observed in animation tick\n }\n\n setAnimPauseTime(): void {\n // no-op - property is observed in animation tick\n }\n\n transformed(): void {\n // no-op\n }\n\n setSrc(src: string): void {\n if (this.loadedState !== null) {\n this.loadedState.group.removeFromParent();\n if (this.registeredParentAttachment) {\n (this.registeredParentAttachment.modelGraphics as ThreeJSModel).unregisterAttachment(\n this.model,\n );\n this.registeredParentAttachment = null;\n }\n ThreeJSModel.disposeOfGroup(this.loadedState.group);\n this.loadedState = null;\n this.updateMeshCallback();\n this.updateDebugVisualisation();\n }\n if (!src) {\n this.srcLoadingInstanceManager.abortIfLoading();\n this.socketChildrenByBone.forEach((children) => {\n children.forEach((child) => {\n this.model.getContainer().add(child.getContainer());\n });\n });\n this.updateMeshCallback();\n this.updateDebugVisualisation();\n return;\n }\n\n const contentSrc = this.model.contentSrcToContentAddress(src);\n const srcModelPromise = this.asyncLoadSourceAsset(contentSrc, (loaded, total) => {\n this.srcLoadingInstanceManager.setProgress(loaded / total);\n });\n this.srcLoadingInstanceManager.start(this.model.getLoadingProgressManager(), contentSrc);\n this.latestSrcModelPromise = srcModelPromise;\n srcModelPromise\n .then((result) => {\n if (this.latestSrcModelPromise !== srcModelPromise || !this.model.isConnected) {\n // If we've loaded a different model since, or we're no longer connected, dispose of this one\n ThreeJSModel.disposeOfGroup(result.group);\n return;\n }\n result.group.traverse((child) => {\n if ((child as THREE.Mesh).isMesh) {\n child.castShadow = this.model.props.castShadows;\n child.receiveShadow = true;\n }\n });\n this.latestSrcModelPromise = null;\n const group = result.group;\n const bones = new Map();\n group.traverse((object) => {\n if (object instanceof THREE.Bone) {\n bones.set(object.name, object);\n }\n });\n const boundingBox = new THREE.Box3();\n group.updateWorldMatrix(true, true);\n boundingBox.expandByObject(group);\n\n this.loadedState = {\n group,\n bones,\n boundingBox: {\n size: boundingBox.getSize(new THREE.Vector3(0, 0, 0)),\n centerOffset: boundingBox.getCenter(new THREE.Vector3(0, 0, 0)),\n },\n };\n this.model.getContainer().add(group);\n\n for (const [boneName, children] of this.socketChildrenByBone) {\n const bone = bones.get(boneName);\n if (bone) {\n children.forEach((child) => {\n bone.add(child.getContainer());\n });\n }\n }\n\n this.updateMeshCallback();\n\n const parent = this.model.parentElement;\n if (parent instanceof Model) {\n if (!this.latestAnimPromise && !this.animState) {\n this.registeredParentAttachment = parent;\n (parent.modelGraphics as ThreeJSModel).registerAttachment(this.model);\n }\n }\n\n if (this.animState) {\n this.playAnimation(this.animState.currentAnimationClip);\n }\n this.srcLoadingInstanceManager.finish();\n\n this.updateDebugVisualisation();\n })\n .catch((err) => {\n console.error(\"Error loading m-model.src\", err);\n this.srcLoadingInstanceManager.error(err);\n });\n }\n\n public registerAttachment(attachment: Model) {\n let animState = null;\n if (this.animState) {\n const attachmentLoadedState = (attachment.modelGraphics as ThreeJSModel).loadedState;\n if (!attachmentLoadedState) {\n throw new Error(\"Attachment must be loaded before registering\");\n }\n const animationGroup = new THREE.AnimationObjectGroup();\n const animationMixer = new THREE.AnimationMixer(animationGroup);\n const action = animationMixer.clipAction(this.animState.currentAnimationClip);\n animState = {\n animationGroup,\n animationMixer,\n animationAction: action,\n };\n animationGroup.add(attachmentLoadedState.group);\n action.play();\n }\n this.attachments.set(attachment, animState);\n }\n\n public unregisterAttachment(attachment: Model) {\n const attachmentState = this.attachments.get(attachment);\n if (attachmentState) {\n attachmentState.animationMixer.stopAllAction();\n }\n this.attachments.delete(attachment);\n }\n\n private updateDebugVisualisation() {\n if (!this.model.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (!this.debugBoundingBox) {\n this.debugBoundingBox = new THREE.Mesh(\n ThreeJSModel.DebugBoundingBoxGeometry,\n ThreeJSModel.DebugBoundingBoxMaterial,\n );\n this.model.getContainer().add(this.debugBoundingBox);\n }\n if (this.loadedState) {\n const boundingBox = this.loadedState.boundingBox;\n if (boundingBox.centerOffset) {\n this.debugBoundingBox.position.copy(boundingBox.centerOffset);\n } else {\n this.debugBoundingBox.position.set(0, 0, 0);\n }\n this.debugBoundingBox.scale.copy(boundingBox.size);\n } else {\n this.debugBoundingBox.scale.set(0, 0, 0);\n }\n }\n }\n\n private clearDebugVisualisation() {\n if (this.debugBoundingBox) {\n this.debugBoundingBox.removeFromParent();\n this.debugBoundingBox = null;\n }\n }\n\n async asyncLoadSourceAsset(\n url: string,\n onProgress: (loaded: number, total: number) => void,\n ): Promise {\n return await ThreeJSModel.modelLoader.load(url, onProgress);\n }\n\n private resetAnimationMixer() {\n if (this.documentTimeTickListener) {\n this.documentTimeTickListener.remove();\n this.documentTimeTickListener = null;\n }\n if (this.animState) {\n const appliedAnimation = this.animState.appliedAnimation;\n if (appliedAnimation) {\n appliedAnimation.animationMixer.stopAllAction();\n }\n this.animState.appliedAnimation = null;\n }\n }\n\n public registerSocketChild(\n child: TransformableElement,\n socketName: string,\n ): void {\n let children = this.socketChildrenByBone.get(socketName);\n if (!children) {\n children = new Set>();\n this.socketChildrenByBone.set(socketName, children);\n }\n children.add(child);\n\n if (this.loadedState) {\n const bone = this.loadedState.bones.get(socketName);\n if (bone) {\n bone.add(child.getContainer());\n } else {\n this.model.getContainer().add(child.getContainer());\n }\n }\n }\n\n public unregisterSocketChild(\n child: TransformableElement,\n socketName: string,\n addToRoot: boolean = true,\n ): void {\n const socketChildren = this.socketChildrenByBone.get(socketName);\n if (socketChildren) {\n socketChildren.delete(child);\n if (addToRoot) {\n this.model.getContainer().add(child.getContainer());\n }\n if (socketChildren.size === 0) {\n this.socketChildrenByBone.delete(socketName);\n }\n }\n }\n\n private triggerSocketedChildrenTransformed() {\n // Socketed children need to be updated when the animation is updated as their position may have updated\n this.socketChildrenByBone.forEach((children) => {\n children.forEach((child) => {\n if (child instanceof TransformableElement) {\n child.didUpdateTransformation();\n }\n });\n });\n }\n\n private playAnimation(anim: THREE.AnimationClip) {\n this.resetAnimationMixer();\n this.animState = {\n currentAnimationClip: anim,\n appliedAnimation: null,\n };\n const animationGroup = new THREE.AnimationObjectGroup();\n const animationMixer = new THREE.AnimationMixer(animationGroup);\n const action = animationMixer.clipAction(anim);\n this.animState.appliedAnimation = {\n animationGroup,\n animationMixer,\n animationAction: action,\n };\n if (this.loadedState) {\n animationGroup.add(this.loadedState.group);\n }\n action.play();\n if (!this.documentTimeTickListener) {\n this.documentTimeTickListener = this.model.addDocumentTimeTickListener(\n (documentTime: number) => {\n this.updateAnimation(documentTime);\n },\n );\n }\n }\n\n private updateAnimation(docTimeMs: number, force: boolean = false) {\n if (this.animState) {\n if (!this.model.props.animEnabled && this.animState.appliedAnimation) {\n this.resetAnimationMixer();\n this.triggerSocketedChildrenTransformed();\n } else {\n if (!this.animState.appliedAnimation) {\n this.playAnimation(this.animState.currentAnimationClip);\n }\n let animationTimeMs = docTimeMs - this.model.props.animStartTime;\n if (docTimeMs < this.model.props.animStartTime) {\n animationTimeMs = 0;\n } else if (this.model.props.animPauseTime !== null) {\n if (docTimeMs > this.model.props.animPauseTime) {\n animationTimeMs = this.model.props.animPauseTime - this.model.props.animStartTime;\n }\n }\n\n const clip = this.animState.currentAnimationClip;\n if (clip !== null) {\n if (!this.model.props.animLoop) {\n if (animationTimeMs > clip.duration * 1000) {\n animationTimeMs = clip.duration * 1000;\n }\n }\n }\n\n for (const [model, attachmentState] of this.attachments) {\n if (attachmentState) {\n attachmentState.animationMixer.setTime(animationTimeMs / 1000);\n (model.modelGraphics as ThreeJSModel).triggerSocketedChildrenTransformed();\n }\n }\n\n if (force) {\n this.animState.appliedAnimation?.animationMixer.setTime((animationTimeMs + 1) / 1000);\n }\n this.animState.appliedAnimation?.animationMixer.setTime(animationTimeMs / 1000);\n this.triggerSocketedChildrenTransformed();\n }\n }\n }\n\n dispose() {\n if (this.documentTimeTickListener) {\n this.documentTimeTickListener.remove();\n this.documentTimeTickListener = null;\n }\n if (this.registeredParentAttachment) {\n (this.registeredParentAttachment?.modelGraphics as ThreeJSModel)?.unregisterAttachment(\n this.model,\n );\n this.registeredParentAttachment = null;\n }\n if (this.loadedState) {\n this.loadedState.group.removeFromParent();\n ThreeJSModel.disposeOfGroup(this.loadedState.group);\n this.loadedState = null;\n }\n this.clearDebugVisualisation();\n this.animLoadingInstanceManager.dispose();\n this.srcLoadingInstanceManager.dispose();\n }\n\n private static disposeOfGroup(group: THREE.Object3D) {\n group.traverse((child) => {\n if ((child as THREE.Mesh).isMesh) {\n const mesh = child as THREE.Mesh;\n mesh.geometry.dispose();\n if (Array.isArray(mesh.material)) {\n for (const material of mesh.material) {\n ThreeJSModel.disposeOfMaterial(material);\n }\n } else if (mesh.material) {\n ThreeJSModel.disposeOfMaterial(mesh.material);\n }\n }\n });\n }\n\n private static disposeOfMaterial(material: THREE.Material) {\n material.dispose();\n for (const key of Object.keys(material)) {\n const value = (material as any)[key];\n if (value && typeof value === \"object\" && \"minFilter\" in value) {\n value.dispose();\n }\n }\n }\n}\n", "import { Plane } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport { PlaneGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSPlane extends PlaneGraphics {\n static planeGeometry = new THREE.PlaneGeometry(1, 1);\n private mesh: THREE.Mesh>;\n private material: THREE.MeshStandardMaterial;\n\n constructor(private plane: Plane) {\n super(plane);\n\n this.material = new THREE.MeshStandardMaterial({\n color: new THREE.Color(plane.props.color.r, plane.props.color.g, plane.props.color.b),\n });\n this.mesh = new THREE.Mesh(ThreeJSPlane.planeGeometry, this.material);\n this.mesh.castShadow = plane.props.castShadows;\n this.mesh.receiveShadow = true;\n this.plane.getContainer().add(this.mesh);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): THREE.Object3D {\n return this.mesh;\n }\n\n setColor(color: MMLColor): void {\n this.material.color = new THREE.Color(color.r, color.g, color.b);\n }\n\n setWidth(width: number): void {\n this.mesh.scale.x = width;\n }\n\n setHeight(height: number): void {\n this.mesh.scale.y = height;\n }\n\n setCastShadows(castShadows: boolean): void {\n this.mesh.castShadow = castShadows;\n }\n\n setOpacity(opacity: number): void {\n const needsUpdate = this.material.transparent === (opacity === 1);\n this.material.transparent = opacity !== 1;\n this.material.needsUpdate = needsUpdate;\n this.material.opacity = opacity;\n }\n\n dispose() {}\n}\n", "import { PositionProbe } from \"@mml-io/mml-web\";\nimport { PositionProbeGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSPositionProbe extends PositionProbeGraphics {\n private static DebugGeometry = new THREE.SphereGeometry(1, 16, 16, 1);\n private static DebugMaterial = new THREE.MeshBasicMaterial({\n color: 0xff0000,\n wireframe: true,\n transparent: true,\n opacity: 0.3,\n });\n\n private debugMesh: THREE.Mesh | null = null;\n\n constructor(private positionProbe: PositionProbe) {\n super(positionProbe);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setRange(): void {\n this.updateDebugVisualisation();\n }\n\n setDebug() {\n this.updateDebugVisualisation();\n }\n\n private clearDebugVisualisation() {\n if (this.debugMesh) {\n this.debugMesh.removeFromParent();\n this.debugMesh = null;\n }\n }\n\n private updateDebugVisualisation() {\n if (!this.positionProbe.props.debug) {\n this.clearDebugVisualisation();\n } else {\n if (this.positionProbe.isConnected && !this.debugMesh) {\n const mesh = new THREE.Mesh(\n ThreeJSPositionProbe.DebugGeometry,\n ThreeJSPositionProbe.DebugMaterial,\n );\n mesh.castShadow = false;\n mesh.receiveShadow = false;\n this.debugMesh = mesh;\n this.positionProbe.getContainer().add(this.debugMesh);\n }\n\n if (this.debugMesh) {\n this.debugMesh.scale.set(\n this.positionProbe.props.range,\n this.positionProbe.props.range,\n this.positionProbe.props.range,\n );\n }\n }\n }\n\n dispose() {\n this.clearDebugVisualisation();\n }\n}\n", "import { Prompt } from \"@mml-io/mml-web\";\nimport { PromptGraphics } from \"@mml-io/mml-web\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSPrompt extends PromptGraphics {\n constructor(private prompt: Prompt) {\n super(prompt);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n setMessage(): void {\n // no-op\n }\n\n setPlaceholder(): void {\n // no-op\n }\n\n setPrefill(): void {\n // no-op\n }\n\n setDebug(): void {\n // no-op\n }\n\n dispose() {}\n}\n", "import { RemoteDocument, RemoteDocumentGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\nimport { getThreeJSReconnectingStatus } from \"../ThreeJSReconnectingStatus\";\n\nexport class ThreeJSRemoteDocument extends RemoteDocumentGraphics {\n private statusUI: THREE.Mesh | null = null;\n\n constructor(private element: RemoteDocument) {\n super(element);\n }\n\n public showError(showError: boolean): void {\n if (!showError) {\n if (this.statusUI !== null) {\n this.element.getContainer().remove(this.statusUI);\n this.statusUI = null;\n }\n } else {\n if (this.statusUI === null) {\n const { geometry, material, height } = getThreeJSReconnectingStatus();\n const mesh: THREE.Mesh = new THREE.Mesh(\n geometry,\n material,\n );\n mesh.position.set(0, height / 2, 0);\n this.statusUI = mesh;\n this.element.getContainer().add(this.statusUI);\n }\n }\n }\n\n public dispose() {}\n}\n", "import { CanvasText } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nfunction createReconnectingStatus() {\n const canvas = new CanvasText().renderText(\"Reconnecting\", {\n bold: true,\n fontSize: 32,\n paddingPx: 10,\n textColorRGB255A1: {\n r: 255,\n g: 0,\n b: 0,\n a: 1.0,\n },\n backgroundColorRGB255A1: {\n r: 255,\n g: 255,\n b: 255,\n a: 1.0,\n },\n alignment: \"center\",\n });\n\n const texture = new THREE.Texture(canvas);\n texture.minFilter = THREE.LinearFilter;\n texture.magFilter = THREE.LinearFilter;\n texture.format = THREE.RGBAFormat;\n texture.needsUpdate = true;\n\n const width = canvas.width;\n const height = canvas.height;\n\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n side: THREE.DoubleSide,\n });\n const geometry = new THREE.PlaneGeometry(width / 100, height / 100, 1, 1);\n return { geometry, material, width: width / 100, height: height / 100 };\n}\n\nexport type ThreeJSReconnectingStatus = {\n geometry: THREE.PlaneGeometry;\n material: THREE.MeshBasicMaterial;\n width: number;\n height: number;\n};\n\nlet reconnectingStatus: ThreeJSReconnectingStatus | null = null;\n\nexport function getThreeJSReconnectingStatus(): ThreeJSReconnectingStatus {\n if (!reconnectingStatus) {\n reconnectingStatus = createReconnectingStatus();\n }\n return reconnectingStatus;\n}\n", "import { Sphere } from \"@mml-io/mml-web\";\nimport { MMLColor } from \"@mml-io/mml-web\";\nimport { SphereGraphics } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nconst defaultSphereWidthSegments = 16;\nconst defaultSphereHeightSegments = 16;\n\nexport class ThreeJSSphere extends SphereGraphics {\n static sphereGeometry = new THREE.SphereGeometry(\n 0.5,\n defaultSphereWidthSegments,\n defaultSphereHeightSegments,\n );\n private mesh: THREE.Mesh>;\n private material: THREE.MeshStandardMaterial;\n\n constructor(private sphere: Sphere) {\n super(sphere);\n\n this.material = new THREE.MeshStandardMaterial({\n color: new THREE.Color(sphere.props.color.r, sphere.props.color.g, sphere.props.color.b),\n });\n this.mesh = new THREE.Mesh(ThreeJSSphere.sphereGeometry, this.material);\n this.mesh.castShadow = sphere.props.castShadows;\n this.mesh.receiveShadow = true;\n this.sphere.getContainer().add(this.mesh);\n }\n\n disable(): void {}\n\n enable(): void {}\n\n getCollisionElement(): THREE.Object3D {\n return this.mesh;\n }\n\n setColor(color: MMLColor): void {\n this.material.color = new THREE.Color(color.r, color.g, color.b);\n }\n\n setRadius(radius: number): void {\n this.mesh.scale.x = radius * 2;\n this.mesh.scale.y = radius * 2;\n this.mesh.scale.z = radius * 2;\n }\n\n setCastShadows(castShadows: boolean): void {\n this.mesh.castShadow = castShadows;\n }\n\n setOpacity(opacity: number): void {\n const needsUpdate = this.material.transparent === (opacity === 1);\n this.material.transparent = opacity !== 1;\n this.material.needsUpdate = needsUpdate;\n this.material.opacity = opacity;\n }\n\n dispose() {}\n}\n", "import {\n Matr4,\n Matr4Data,\n Model,\n TransformableElement,\n TransformableGraphics,\n} from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\nimport { ThreeJSModel } from \"./ThreeJSModel\";\n\nexport class ThreeJSTransformable extends TransformableGraphics {\n private socketName: string | null = null;\n private registeredSocketParent: ThreeJSModel | null = null;\n\n constructor(private transformableElement: TransformableElement) {\n super(transformableElement);\n }\n\n getWorldMatrix(): Matr4 {\n // TODO - optimize/reduce calls to updateWorldMatrix\n const container = this.getContainer();\n container.updateWorldMatrix(true, false);\n return new Matr4(container.matrixWorld.elements as Matr4Data);\n }\n\n setVisible(visible: boolean): void {\n this.getContainer().visible = visible;\n }\n\n setSocket(socketName: string | null): void {\n if (this.socketName !== socketName) {\n if (this.socketName !== null && this.registeredSocketParent) {\n this.registeredSocketParent.unregisterSocketChild(\n this.transformableElement,\n this.socketName,\n );\n }\n this.socketName = socketName;\n if (socketName !== null) {\n this.registerWithParentModel(socketName);\n }\n } else {\n this.socketName = socketName;\n }\n }\n\n private registerWithParentModel(socketName: string): void {\n if (\n (this.transformableElement.parentElement as Model | undefined)\n ?.isModel\n ) {\n const parentModel = this.transformableElement.parentElement as Model;\n this.registeredSocketParent = parentModel.modelGraphics as ThreeJSModel;\n this.registeredSocketParent.registerSocketChild(this.transformableElement, socketName);\n }\n }\n\n private getContainer(): THREE.Group {\n return this.transformableElement.getContainer() as THREE.Group;\n }\n\n setX(x: number): void {\n this.getContainer().position.x = x;\n }\n\n setY(y: number): void {\n this.getContainer().position.y = y;\n }\n\n setZ(z: number): void {\n this.getContainer().position.z = z;\n }\n\n setRotationX(rotationX: number): void {\n this.getContainer().rotation.x = rotationX * THREE.MathUtils.DEG2RAD;\n }\n\n setRotationY(rotationY: number): void {\n this.getContainer().rotation.y = rotationY * THREE.MathUtils.DEG2RAD;\n }\n\n setRotationZ(rotationZ: number): void {\n this.getContainer().rotation.z = rotationZ * THREE.MathUtils.DEG2RAD;\n }\n\n setScaleX(scaleX: number): void {\n this.getContainer().scale.x = scaleX;\n }\n\n setScaleY(scaleY: number): void {\n this.getContainer().scale.y = scaleY;\n }\n\n setScaleZ(scaleZ: number): void {\n this.getContainer().scale.z = scaleZ;\n }\n\n dispose() {\n if (this.socketName && this.registeredSocketParent !== null) {\n this.registeredSocketParent.unregisterSocketChild(\n this.transformableElement,\n this.socketName,\n false,\n );\n }\n }\n}\n", "import {\n calculateContentSize,\n StaticFileVideoSource,\n Video,\n VideoGraphics,\n VideoSource,\n WHEPVideoSource,\n} from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"../ThreeJSGraphicsAdapter\";\n\nconst audioRefDistance = 1;\nconst audioRolloffFactor = 1;\n\nconst disabledVideoMaterial = new THREE.MeshStandardMaterial({\n color: 0x000000,\n side: THREE.DoubleSide,\n});\n\nexport class ThreeJSVideo extends VideoGraphics {\n private videoSource: VideoSource | null = null;\n private videoMaterial: THREE.MeshStandardMaterial;\n\n private mesh: THREE.Mesh<\n THREE.PlaneGeometry,\n THREE.MeshStandardMaterial | THREE.MeshBasicMaterial\n >;\n\n private loadedVideoState: {\n video: HTMLVideoElement;\n audio: THREE.PositionalAudio;\n videoTexture: THREE.VideoTexture | null;\n } | null = null;\n\n constructor(\n private video: Video,\n private updateMeshCallback: () => void,\n ) {\n super(video, updateMeshCallback);\n\n const geometry = new THREE.PlaneGeometry(1, 1, 1, 1);\n // Video material is only applied once a video is played\n this.videoMaterial = new THREE.MeshStandardMaterial({\n color: 0xffffff,\n transparent: false,\n side: THREE.DoubleSide,\n });\n this.mesh = new THREE.Mesh(geometry, disabledVideoMaterial);\n this.mesh.castShadow = true;\n this.mesh.receiveShadow = false;\n this.video.getContainer().add(this.mesh);\n }\n\n public getWidthAndHeight(): { width: number; height: number } {\n return {\n width: this.mesh.scale.x,\n height: this.mesh.scale.y,\n };\n }\n\n public syncVideoTime() {\n if (this.loadedVideoState) {\n const videoTag = this.loadedVideoState.video;\n if (videoTag.readyState === 0) {\n return;\n }\n\n const audioListener = this.getAudioListener();\n const audioContext = audioListener.context;\n if (audioContext.state === \"running\") {\n videoTag.muted = false;\n }\n\n if (this.video.isDisabled()) {\n videoTag.muted = true;\n }\n\n if (this.videoSource) {\n this.videoSource.syncVideoSource(this.video.props);\n }\n }\n }\n\n private getAudioListener() {\n return this.video.getScene().getGraphicsAdapter().getAudioListener();\n }\n\n public enable(): void {\n this.updateVideo();\n }\n public disable(): void {\n this.updateVideo();\n }\n\n public getCollisionElement(): THREE.Object3D {\n return this.mesh;\n }\n\n public setSrc(): void {\n this.updateVideo();\n }\n\n public setWidth(): void {\n this.updateWidthAndHeight();\n }\n\n public setHeight(): void {\n this.updateWidthAndHeight();\n }\n\n public setEnabled(): void {\n this.updateVideo();\n }\n\n public setCastShadows(): void {\n this.updateVideo();\n }\n\n public setLoop(): void {\n this.updateVideo();\n }\n\n public setVolume(): void {\n if (this.loadedVideoState) {\n this.loadedVideoState.audio.setVolume(this.video.props.volume);\n }\n }\n\n public setEmissive(): void {\n this.updateVideo();\n this.updateMaterialEmissiveIntensity();\n }\n\n public setStartTime(): void {\n this.updateVideo();\n }\n\n public setPauseTime(): void {\n this.updateVideo();\n }\n\n private updateVideo() {\n if (!this.video.isConnected) {\n return;\n }\n\n if (!this.video.props.enabled) {\n this.clearSource();\n return;\n }\n\n if (!this.video.props.src) {\n this.clearSource();\n } else {\n const contentAddress = this.video.contentSrcToContentAddress(this.video.props.src);\n if (this.videoSource === null || this.videoSource.getContentAddress() !== contentAddress) {\n this.clearSource();\n\n const video = document.createElement(\"video\");\n video.playsInline = true;\n // Muted allows autoplay immediately without the user needing to interact with the document\n // Video will be unmuted when the audiocontext is available\n video.muted = true;\n video.autoplay = true;\n video.crossOrigin = \"anonymous\";\n\n const audioListener = this.getAudioListener();\n const audioContext = audioListener.context;\n\n const audio = new THREE.PositionalAudio(audioListener);\n audio.setMediaElementSource(video);\n audio.setVolume(this.video.props.volume);\n audio.setRefDistance(audioRefDistance);\n audio.setRolloffFactor(audioRolloffFactor);\n this.loadedVideoState = {\n video,\n audio,\n videoTexture: null,\n };\n this.updateMaterialEmissiveIntensity();\n this.video.getContainer().add(audio);\n\n const url = new URL(contentAddress);\n if (WHEPVideoSource.isWHEPURL(url)) {\n this.videoSource = new WHEPVideoSource(url, video);\n } else {\n this.videoSource = new StaticFileVideoSource(url, video, this.video.props, () => {\n return this.video.getDocumentTime();\n });\n }\n\n audioContext.addEventListener(\"statechange\", () => {\n this.syncVideoTime();\n });\n video.addEventListener(\"loadeddata\", () => {\n if (!this.loadedVideoState || this.loadedVideoState.video !== video) {\n // Video was changed before it loaded\n return;\n }\n\n const videoTexture = new THREE.VideoTexture(video);\n this.videoMaterial.map = videoTexture;\n this.videoMaterial.needsUpdate = true;\n this.mesh.material = this.videoMaterial;\n this.loadedVideoState.videoTexture = videoTexture;\n\n this.syncVideoTime();\n this.updateWidthAndHeight();\n this.updateMaterialEmissiveIntensity();\n });\n }\n }\n\n if (this.videoSource) {\n this.syncVideoTime();\n }\n }\n\n private clearSource() {\n if (this.videoSource) {\n this.videoSource.dispose();\n this.videoSource = null;\n }\n if (this.loadedVideoState) {\n const tag = this.loadedVideoState.video;\n // There is an existing src - stop playing to allow changing it\n tag.pause();\n tag.src = \"\";\n tag.load();\n this.loadedVideoState = null;\n this.mesh.material = disabledVideoMaterial;\n this.updateWidthAndHeight();\n }\n }\n\n dispose() {\n this.clearSource();\n if (this.loadedVideoState) {\n this.loadedVideoState = null;\n }\n }\n\n private updateMaterialEmissiveIntensity() {\n if (this.loadedVideoState && this.loadedVideoState.videoTexture) {\n if (this.video.props.emissive > 0) {\n this.videoMaterial.emissive = new THREE.Color(0xffffff);\n this.videoMaterial.emissiveMap = this.loadedVideoState.videoTexture;\n this.videoMaterial.emissiveIntensity = this.video.props.emissive;\n this.videoMaterial.needsUpdate = true;\n } else {\n this.videoMaterial.emissive = new THREE.Color(0x000000);\n this.videoMaterial.emissiveMap = null;\n this.videoMaterial.emissiveIntensity = 1;\n this.videoMaterial.needsUpdate = true;\n }\n }\n }\n\n private updateWidthAndHeight() {\n const mesh = this.mesh;\n\n const { width, height } = calculateContentSize({\n content: this.loadedVideoState\n ? {\n width: this.loadedVideoState.video.videoWidth,\n height: this.loadedVideoState.video.videoHeight,\n }\n : undefined,\n width: this.video.props.width,\n height: this.video.props.height,\n });\n mesh.scale.x = width;\n mesh.scale.y = height;\n\n this.updateMeshCallback();\n }\n}\n", "import {\n EventHandlerCollection,\n getRelativePositionAndRotationRelativeToObject,\n MElement,\n TransformableElement,\n} from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nconst mouseMovePixelsThreshold = 10;\nconst mouseMoveTimeThresholdMilliseconds = 500;\n\n/**\n * The ThreeJSClickTrigger class is responsible for handling click events on the MML scene and raycasts into the scene to\n * determine which object was clicked and then dispatches events to those elements.\n */\nexport class ThreeJSClickTrigger {\n private eventHandlerCollection: EventHandlerCollection = new EventHandlerCollection();\n private raycaster: THREE.Raycaster;\n private mouseDownTime: number | null = null;\n private mouseMoveDelta = 0;\n\n static init(\n clickTarget: Document | HTMLElement,\n rootContainer: THREE.Object3D,\n camera: THREE.Camera,\n ): ThreeJSClickTrigger {\n return new ThreeJSClickTrigger(clickTarget, rootContainer, camera);\n }\n\n private constructor(\n private clickTarget: Document | HTMLElement,\n private rootContainer: THREE.Object3D,\n private camera: THREE.Camera,\n ) {\n this.raycaster = new THREE.Raycaster();\n\n this.eventHandlerCollection.add(clickTarget, \"mousedown\", this.handleMouseDown.bind(this));\n this.eventHandlerCollection.add(clickTarget, \"mouseup\", this.handleMouseUp.bind(this));\n this.eventHandlerCollection.add(clickTarget, \"mousemove\", this.handleMouseMove.bind(this));\n }\n\n private handleMouseDown() {\n this.mouseDownTime = Date.now();\n this.mouseMoveDelta = 0;\n }\n\n private handleMouseUp(event: MouseEvent) {\n if (!this.mouseDownTime) {\n return;\n }\n const duration = Date.now() - this.mouseDownTime;\n this.mouseDownTime = null;\n if (\n this.mouseMoveDelta < mouseMovePixelsThreshold &&\n duration < mouseMoveTimeThresholdMilliseconds\n ) {\n this.handleClick(event);\n }\n }\n\n private handleMouseMove(event: MouseEvent) {\n if (this.mouseDownTime) {\n this.mouseMoveDelta += Math.abs(event.movementX) + Math.abs(event.movementY);\n }\n }\n\n private handleClick(event: MouseEvent) {\n if ((event.detail as any).element) {\n // Avoid infinite loop of handling click events that originated from this trigger\n return;\n }\n let x = 0;\n let y = 0;\n if (!document.pointerLockElement) {\n let width = window.innerWidth;\n let height = window.innerHeight;\n if (this.clickTarget instanceof HTMLElement) {\n width = this.clickTarget.offsetWidth;\n height = this.clickTarget.offsetHeight;\n }\n x = (event.offsetX / width) * 2 - 1;\n y = -((event.offsetY / height) * 2 - 1);\n }\n this.raycaster.setFromCamera(new THREE.Vector2(x, y), this.camera);\n const intersections = this.raycaster.intersectObject(this.rootContainer, true);\n if (intersections.length > 0) {\n for (const intersection of intersections) {\n let obj: THREE.Object3D | null = intersection.object;\n while (obj) {\n /*\n Ignore scene objects that have a transparent or wireframe material\n */\n if (this.isMaterialIgnored(obj)) {\n break;\n }\n\n const mElement = MElement.getMElementFromObject(obj);\n if (mElement && mElement instanceof TransformableElement && mElement.isClickable()) {\n // let's get the intersection point relative to the element origin\n\n const elementRelative = getRelativePositionAndRotationRelativeToObject(\n {\n position: intersection.point,\n rotation: {\n x: 0,\n y: 0,\n z: 0,\n },\n },\n mElement,\n );\n\n mElement.dispatchEvent(\n new CustomEvent(\"click\", {\n bubbles: true,\n detail: {\n position: {\n ...elementRelative.position,\n },\n },\n }),\n );\n return;\n }\n obj = obj.parent;\n }\n }\n }\n }\n\n dispose() {\n this.eventHandlerCollection.clear();\n }\n\n private isMaterialIgnored(obj: THREE.Object3D): boolean {\n const mesh = obj as THREE.Mesh;\n if (mesh) {\n if (\n ((mesh.material as THREE.Material) &&\n (mesh.material as THREE.Material).transparent &&\n (mesh.material as THREE.Material).opacity < 1) ||\n ((mesh.material as THREE.MeshLambertMaterial) &&\n (mesh.material as THREE.MeshLambertMaterial).wireframe) ||\n ((mesh.material as THREE.MeshPhongMaterial) &&\n (mesh.material as THREE.MeshPhongMaterial).wireframe) ||\n ((mesh.material as THREE.MeshPhysicalMaterial) &&\n (mesh.material as THREE.MeshPhysicalMaterial).wireframe) ||\n ((mesh.material as THREE.MeshStandardMaterial) &&\n (mesh.material as THREE.MeshStandardMaterial).wireframe) ||\n ((mesh.material as THREE.LineBasicMaterial) &&\n (mesh.material as THREE.LineBasicMaterial).isLineBasicMaterial)\n ) {\n return true;\n }\n }\n return false;\n }\n}\n", "import { MMLGraphicsInterface } from \"@mml-io/mml-web\";\n\nimport * as ThreeJSElements from \"./elements\";\nimport { ThreeJSGraphicsAdapter } from \"./ThreeJSGraphicsAdapter\";\n\nexport const ThreeJSGraphicsInterface: MMLGraphicsInterface = {\n MElementGraphicsInterface: (element) => new ThreeJSElements.ThreeJSMElement(element),\n MMLDebugHelperGraphicsInterface: (debugHelper) =>\n new ThreeJSElements.ThreeJSDebugHelper(debugHelper),\n MMLAudioGraphicsInterface: (element) => new ThreeJSElements.ThreeJSAudio(element),\n MMLChatProbeGraphicsInterface: (element) => new ThreeJSElements.ThreeJSChatProbe(element),\n MMLCubeGraphicsInterface: (element) => new ThreeJSElements.ThreeJSCube(element),\n MMLCylinderGraphicsInterface: (element) => new ThreeJSElements.ThreeJSCylinder(element),\n MMLFrameGraphicsInterface: (element) => new ThreeJSElements.ThreeJSFrame(element),\n MMLImageGraphicsInterface: (element, updateMeshCallback) =>\n new ThreeJSElements.ThreeJSImage(element, updateMeshCallback),\n MMLInteractionGraphicsInterface: (element) => new ThreeJSElements.ThreeJSInteraction(element),\n MMLLabelGraphicsInterface: (element) => new ThreeJSElements.ThreeJSLabel(element),\n MMLLightGraphicsInterface: (element) => new ThreeJSElements.ThreeJSLight(element),\n MMLLinkGraphicsInterface: (element) => new ThreeJSElements.ThreeJSLink(element),\n MMLModelGraphicsInterface: (element, updateMeshCallback) =>\n new ThreeJSElements.ThreeJSModel(element, updateMeshCallback),\n MMLPlaneGraphicsInterface: (element) => new ThreeJSElements.ThreeJSPlane(element),\n MMLPositionProbeGraphicsInterface: (element) => new ThreeJSElements.ThreeJSPositionProbe(element),\n MMLPromptGraphicsInterface: (element) => new ThreeJSElements.ThreeJSPrompt(element),\n MMLSphereGraphicsInterface: (element) => new ThreeJSElements.ThreeJSSphere(element),\n MMLTransformableGraphicsInterface: (element) => new ThreeJSElements.ThreeJSTransformable(element),\n MMLVideoGraphicsInterface: (element, updateMeshCallback: () => void) =>\n new ThreeJSElements.ThreeJSVideo(element, updateMeshCallback),\n RemoteDocumentGraphicsInterface: (element) => new ThreeJSElements.ThreeJSRemoteDocument(element),\n};\n", "import { Interaction } from \"@mml-io/mml-web\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSGraphicsAdapter } from \"./ThreeJSGraphicsAdapter\";\n\nexport class ThreeJSInteractionAdapter {\n private static worldPos = new THREE.Vector3();\n\n private static matrix = new THREE.Matrix4();\n private static frustum = new THREE.Frustum();\n\n private static raycaster = new THREE.Raycaster();\n private static intersections = new Array>();\n private static direction = new THREE.Vector3();\n\n static interactionShouldShowDistance(\n interaction: Interaction,\n camera: THREE.Camera,\n scene: THREE.Scene,\n ): number | null {\n const worldPos = interaction\n .getContainer()\n .getWorldPosition(ThreeJSInteractionAdapter.worldPos);\n\n const cameraPos = camera.position;\n const distance = cameraPos.distanceTo(worldPos);\n if (distance > interaction.props.range) {\n return null;\n }\n\n if (interaction.props.inFocus) {\n ThreeJSInteractionAdapter.matrix.multiplyMatrices(\n camera.projectionMatrix,\n camera.matrixWorldInverse,\n );\n ThreeJSInteractionAdapter.frustum.setFromProjectionMatrix(ThreeJSInteractionAdapter.matrix);\n if (!ThreeJSInteractionAdapter.frustum.containsPoint(worldPos)) {\n return null;\n }\n }\n\n if (interaction.props.lineOfSight) {\n const raycastResults = ThreeJSInteractionAdapter.getRaycastResults(\n cameraPos,\n worldPos,\n distance,\n scene,\n );\n if (raycastResults.length > 0) {\n for (const result of raycastResults) {\n if (!ThreeJSInteractionAdapter.hasAncestor(result.object, interaction.getContainer())) {\n return null;\n }\n }\n }\n }\n\n return distance;\n }\n\n static getRaycastResults(\n a: THREE.Vector3,\n b: THREE.Vector3,\n distance: number,\n scene: THREE.Scene,\n ) {\n ThreeJSInteractionAdapter.direction.copy(b);\n ThreeJSInteractionAdapter.direction.sub(a);\n ThreeJSInteractionAdapter.direction.normalize();\n\n ThreeJSInteractionAdapter.raycaster.set(a, ThreeJSInteractionAdapter.direction);\n ThreeJSInteractionAdapter.raycaster.near = 0;\n ThreeJSInteractionAdapter.raycaster.far = distance;\n\n ThreeJSInteractionAdapter.intersections.length = 0;\n ThreeJSInteractionAdapter.raycaster.intersectObject(\n scene,\n true,\n ThreeJSInteractionAdapter.intersections,\n );\n return ThreeJSInteractionAdapter.intersections;\n }\n\n static hasAncestor(object: THREE.Object3D, ancestor: THREE.Object3D): boolean {\n let parent = object.parent;\n while (parent !== null) {\n if (parent === ancestor) {\n return true;\n }\n parent = parent.parent;\n }\n return false;\n }\n}\n", "import { EventHandlerCollection, IVect3, Matr4, Quat } from \"@mml-io/mml-web\";\nimport { PerspectiveCamera, Vector3 } from \"three\";\n\nimport { ThreeJSControls } from \"./ThreeJSControls\";\n\nconst up = { x: 0, y: 1, z: 0 };\nconst right = { x: 1, y: 0, z: 0 };\nconst quaternion = new Quat();\nconst qPitch = new Quat();\nconst qYaw = new Quat();\n\nconst tempVector = new Vector3();\n\n// Creates a set of 5DOF flight controls that requires dragging the mouse to move the rotation and position of the camera\nexport class ThreeJSDragFlyCameraControls implements ThreeJSControls {\n public readonly type = \"drag-fly\";\n\n private enabled = false;\n\n private yaw = 0;\n private pitch = 0;\n\n private forward = false;\n private backward = false;\n private left = false;\n private right = false;\n private up = false;\n private down = false;\n\n // Set to constrain the pitch of the camera\n private minPolarAngle = 0 * (Math.PI / 180);\n private maxPolarAngle = 180 * (Math.PI / 180);\n\n private invertedMouseY = false;\n\n private eventHandlerCollection: EventHandlerCollection = new EventHandlerCollection();\n private mouseDown = false;\n\n constructor(\n private camera: PerspectiveCamera,\n private domElement: HTMLElement,\n private speed = 15.0,\n ) {\n this.domElement.style.userSelect = \"none\";\n }\n\n public fitContent(boundingBox: { min: IVect3; max: IVect3 }) {\n const center = {\n x: (boundingBox.min.x + boundingBox.max.x) / 2,\n y: (boundingBox.min.y + boundingBox.max.y) / 2,\n z: (boundingBox.min.z + boundingBox.max.z) / 2,\n };\n const size = {\n x: boundingBox.max.x - boundingBox.min.x,\n y: boundingBox.max.y - boundingBox.min.y,\n z: boundingBox.max.z - boundingBox.min.z,\n };\n const fov = this.camera.fov;\n const maximumDimension = Math.max(size.x, size.y, size.z);\n const distance = Math.abs(maximumDimension / 4 / Math.tan(fov / 2));\n const currentCameraRay = this.camera.getWorldDirection(new Vector3()).normalize();\n currentCameraRay.multiplyScalar(-distance);\n this.camera.position.set(\n center.x + currentCameraRay.x,\n center.y + currentCameraRay.y,\n center.z + currentCameraRay.z,\n );\n this.setLookAt(center.x, center.y, center.z);\n }\n\n public enable() {\n if (this.enabled) {\n return;\n }\n this.enabled = true;\n this.eventHandlerCollection.add(document, \"keydown\", this.onKeyDown.bind(this));\n this.eventHandlerCollection.add(document, \"keyup\", this.onKeyUp.bind(this));\n this.eventHandlerCollection.add(window, \"blur\", this.onBlur.bind(this));\n this.eventHandlerCollection.add(document, \"mousemove\", this.onMouseMove.bind(this));\n this.eventHandlerCollection.add(this.domElement, \"mousedown\", this.onMouseDown.bind(this));\n this.eventHandlerCollection.add(document, \"mouseup\", this.onMouseUp.bind(this));\n this.eventHandlerCollection.add(document, \"wheel\", this.onMouseWheel.bind(this));\n }\n\n public disable() {\n if (!this.enabled) {\n return;\n }\n this.eventHandlerCollection.clear();\n this.enabled = false;\n }\n\n public setInvert(invert: boolean) {\n this.invertedMouseY = invert;\n }\n\n public dispose() {\n this.disable();\n }\n\n public update(dt: number) {\n if (!this.mouseDown) {\n return;\n }\n\n tempVector.set(\n (Number(this.right) - Number(this.left)) * dt * 30,\n (Number(this.up) - Number(this.down)) * dt * 30,\n (Number(this.backward) - Number(this.forward)) * dt * 30,\n );\n tempVector.applyQuaternion(this.camera.quaternion);\n this.camera.position.add(tempVector);\n }\n\n private onKeyDown(event: KeyboardEvent) {\n if (!this.mouseDown) {\n return;\n }\n switch (event.code) {\n case \"ArrowUp\":\n case \"KeyW\":\n this.forward = true;\n break;\n case \"ArrowLeft\":\n case \"KeyA\":\n this.left = true;\n break;\n case \"ArrowDown\":\n case \"KeyS\":\n this.backward = true;\n break;\n case \"ArrowRight\":\n case \"KeyD\":\n this.right = true;\n break;\n case \"Space\":\n this.up = true;\n break;\n case \"ShiftLeft\":\n this.down = true;\n break;\n }\n event.preventDefault();\n }\n\n private onKeyUp(event: KeyboardEvent) {\n switch (event.code) {\n case \"ArrowUp\":\n case \"KeyW\":\n this.forward = false;\n break;\n case \"ArrowLeft\":\n case \"KeyA\":\n this.left = false;\n break;\n case \"ArrowDown\":\n case \"KeyS\":\n this.backward = false;\n break;\n case \"ArrowRight\":\n case \"KeyD\":\n this.right = false;\n break;\n case \"Space\":\n this.up = false;\n break;\n case \"ShiftLeft\":\n this.down = false;\n break;\n }\n }\n\n private onBlur() {\n this.mouseDown = false;\n this.forward = false;\n this.left = false;\n this.backward = false;\n this.right = false;\n this.up = false;\n this.down = false;\n }\n\n private onMouseDown() {\n this.mouseDown = true;\n }\n\n public setCameraPosition(x: number, y: number, z: number) {\n this.camera.position.set(x, y, z);\n }\n\n public setLookAt(x: number, y: number, z: number) {\n this.camera.lookAt(new Vector3(x, y, z));\n const q1 = new Quat().setFromEulerXYZ(this.camera.rotation);\n const { yaw, pitch } = getYawPitchFromQuaternion(q1);\n this.yaw = yaw;\n this.pitch = pitch;\n this.updateCameraFromYawAndPitch();\n }\n\n private onMouseMove(event: MouseEvent) {\n if (!this.mouseDown) {\n return;\n }\n const movementX = event.movementX;\n let movementY = event.movementY;\n\n if (this.invertedMouseY) {\n movementY *= -1;\n }\n\n this.yaw += movementX * -0.002;\n this.pitch += movementY * -0.002;\n\n this.updateCameraFromYawAndPitch();\n }\n\n private updateCameraFromYawAndPitch() {\n this.yaw = this.yaw % (Math.PI * 2);\n this.pitch = this.pitch % (Math.PI * 2);\n this.pitch = Math.max(\n Math.PI / 2 - this.maxPolarAngle,\n Math.min(Math.PI / 2 - this.minPolarAngle, this.pitch),\n );\n\n qPitch.setFromAxisAngle(right, this.pitch);\n qYaw.setFromAxisAngle(up, this.yaw);\n\n quaternion.set(0, 0, 0, 1);\n quaternion.multiply(qYaw);\n quaternion.multiply(qPitch);\n\n this.camera.quaternion.set(quaternion.x, quaternion.y, quaternion.z, quaternion.w);\n }\n\n private onMouseUp() {\n this.mouseDown = false;\n }\n\n private onMouseWheel(event: WheelEvent) {\n if (!this.mouseDown) {\n return;\n }\n this.speed -= event.deltaY * 0.1;\n\n // restrict to a reasonable min and max\n this.speed = Math.max(5, Math.min(this.speed, 1000));\n }\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction getYawPitchFromQuaternion(quaternion: Quat) {\n const matr4 = new Matr4();\n matr4.setRotationFromQuaternion(quaternion);\n\n const d = matr4.data;\n const m11 = d[0];\n const m13 = d[8];\n const m23 = d[9];\n const m31 = d[2];\n const m33 = d[10];\n\n const yaw = Math.abs(m23) < 0.9999999 ? Math.atan2(m13, m33) : Math.atan2(-m31, m11);\n const pitch = Math.asin(-clamp(m23, -1, 1));\n return { yaw, pitch };\n}\n", "import { EventHandlerCollection, IVect3 } from \"@mml-io/mml-web\";\nimport { PerspectiveCamera, Spherical, Vector3 } from \"three\";\n\nimport { ThreeJSControls } from \"./ThreeJSControls\";\n\nconst tempSpherical = new Spherical();\n\nexport class ThreeJSOrbitCameraControls implements ThreeJSControls {\n public readonly type = \"orbit\";\n\n private enabled = false;\n\n private degreesPerSecond = 10;\n private yaw = 0;\n private pitch = Math.PI * 0.4;\n\n // Set to constrain the pitch of the camera\n private minPolarAngle = -89.9999 * (Math.PI / 180);\n private maxPolarAngle = 89.9999 * (Math.PI / 180);\n\n private invertedMouseY = false;\n\n private eventHandlerCollection: EventHandlerCollection = new EventHandlerCollection();\n private mouseDown = false;\n private cameraLookAt: Vector3 = new Vector3();\n\n constructor(\n private camera: PerspectiveCamera,\n private domElement: HTMLElement,\n private distance = 15.0,\n ) {\n this.domElement.style.userSelect = \"none\";\n }\n\n public fitContent(boundingBox: { min: IVect3; max: IVect3 }) {\n const center = {\n x: (boundingBox.min.x + boundingBox.max.x) / 2,\n y: (boundingBox.min.y + boundingBox.max.y) / 2,\n z: (boundingBox.min.z + boundingBox.max.z) / 2,\n };\n const size = {\n x: boundingBox.max.x - boundingBox.min.x,\n y: boundingBox.max.y - boundingBox.min.y,\n z: boundingBox.max.z - boundingBox.min.z,\n };\n const fov = this.camera.fov || 1;\n const maximumDimension = Math.max(size.x, size.y, size.z);\n this.distance = Math.abs(maximumDimension / 4 / Math.tan(fov / 2));\n this.setLookAt(center.x, center.y, center.z);\n this.update();\n }\n\n public enable() {\n if (this.enabled) {\n return;\n }\n this.enabled = true;\n this.eventHandlerCollection.add(window, \"blur\", this.onBlur.bind(this));\n this.eventHandlerCollection.add(document, \"mousemove\", this.onMouseMove.bind(this));\n this.eventHandlerCollection.add(this.domElement, \"mousedown\", this.onMouseDown.bind(this));\n this.eventHandlerCollection.add(document, \"mouseup\", this.onMouseUp.bind(this));\n this.eventHandlerCollection.add(document, \"wheel\", this.onMouseWheel.bind(this));\n }\n\n public disable() {\n if (!this.enabled) {\n return;\n }\n this.eventHandlerCollection.clear();\n this.enabled = false;\n }\n\n public setInvert(invert: boolean) {\n this.invertedMouseY = invert;\n }\n\n public dispose() {\n this.disable();\n }\n\n private getBaseYaw(): number {\n return (-((Date.now() / 1000) * this.degreesPerSecond) % 360) * (Math.PI / 180);\n }\n\n public update() {\n const baseYaw = this.getBaseYaw();\n const yaw = baseYaw + this.yaw;\n\n tempSpherical.set(this.distance, this.pitch, yaw);\n this.camera.position.setFromSpherical(tempSpherical);\n this.camera.position.add(this.cameraLookAt);\n\n this.camera.lookAt(this.cameraLookAt.x, this.cameraLookAt.y, this.cameraLookAt.z);\n }\n\n private onBlur() {\n this.mouseDown = false;\n }\n\n private onMouseDown() {\n this.mouseDown = true;\n }\n\n public setDegreesPerSecond(degreesPerSecond: number) {\n this.degreesPerSecond = degreesPerSecond;\n }\n\n public setLookAt(x: number, y: number, z: number) {\n this.cameraLookAt.set(x, y, z);\n }\n\n public setDistance(distance: number) {\n this.distance = distance;\n }\n\n public setPitchDegrees(pitch: number) {\n this.pitch = pitch * (Math.PI / 180);\n this.pitch = this.pitch % (Math.PI * 2);\n }\n\n private onMouseMove(event: MouseEvent) {\n if (!this.mouseDown) {\n return;\n }\n const movementX = event.movementX;\n let movementY = event.movementY;\n\n if (this.invertedMouseY) {\n movementY *= -1;\n }\n\n this.yaw += movementX * -0.002;\n this.pitch += movementY * -0.002;\n this.yaw = this.yaw % (Math.PI * 2);\n this.pitch = this.pitch % (Math.PI * 2);\n this.pitch = Math.max(\n Math.PI / 2 - this.maxPolarAngle,\n Math.min(Math.PI / 2 - this.minPolarAngle, this.pitch),\n );\n }\n private onMouseUp() {\n this.mouseDown = false;\n }\n\n private onMouseWheel(event: WheelEvent) {\n this.distance += event.deltaY * 0.1;\n this.distance = Math.max(0.01, Math.min(this.distance, 1000));\n }\n}\n", "import { Interaction, MElement, MMLGraphicsInterface, radToDeg } from \"@mml-io/mml-web\";\nimport {\n ThreeJSClickTrigger,\n ThreeJSGraphicsAdapter,\n ThreeJSGraphicsInterface,\n ThreeJSInteractionAdapter,\n} from \"@mml-io/mml-web-threejs\";\nimport * as THREE from \"three\";\n\nimport { ThreeJSControls } from \"./controls/ThreeJSControls\";\nimport { ThreeJSDragFlyCameraControls } from \"./controls/ThreeJSDragFlyCameraControls\";\nimport { ThreeJSOrbitCameraControls } from \"./controls/ThreeJSOrbitCameraControls\";\n\nexport enum StandaloneThreeJSAdapterControlsType {\n None,\n DragFly,\n Orbit,\n}\n\nexport type StandaloneThreeJSAdapterOptions = {\n controlsType?: StandaloneThreeJSAdapterControlsType;\n};\n\nexport class StandaloneThreeJSAdapter implements ThreeJSGraphicsAdapter {\n collisionType: THREE.Object3D;\n containerType: THREE.Object3D;\n\n private rootContainer: THREE.Object3D;\n private threeScene: THREE.Scene;\n private camera: THREE.PerspectiveCamera;\n private renderer: THREE.WebGLRenderer;\n private audioListener: THREE.AudioListener;\n private animationFrameCallback: () => void;\n private animationFrameRequest: number;\n private clickTrigger: ThreeJSClickTrigger;\n public controls: ThreeJSControls | null = null;\n\n private constructor(\n private element: HTMLElement,\n private options: StandaloneThreeJSAdapterOptions,\n ) {}\n\n public static async create(\n element: HTMLElement,\n options: StandaloneThreeJSAdapterOptions,\n ): Promise {\n const adapter = new StandaloneThreeJSAdapter(element, options);\n await adapter.init();\n return adapter;\n }\n\n public interactionShouldShowDistance(interaction: Interaction): number | null {\n return ThreeJSInteractionAdapter.interactionShouldShowDistance(\n interaction,\n this.camera,\n this.threeScene,\n );\n }\n\n getThreeScene(): THREE.Scene {\n return this.threeScene;\n }\n\n getRenderer(): THREE.WebGLRenderer {\n return this.renderer;\n }\n\n public setCameraFOV(fov: number) {\n this.camera.fov = fov;\n this.camera.updateProjectionMatrix();\n }\n\n public getGraphicsAdapterFactory(): MMLGraphicsInterface {\n return ThreeJSGraphicsInterface as MMLGraphicsInterface;\n }\n\n async init(): Promise {\n return new Promise((resolve) => {\n this.rootContainer = new THREE.Group();\n this.threeScene = new THREE.Scene();\n this.threeScene.add(this.rootContainer);\n\n this.camera = new THREE.PerspectiveCamera(\n 75,\n window.innerWidth / window.innerHeight,\n 0.01,\n 1000,\n );\n this.clickTrigger = ThreeJSClickTrigger.init(this.element, this.rootContainer, this.camera);\n\n this.renderer = this.createRenderer();\n\n this.audioListener = new THREE.AudioListener();\n if (this.audioListener.context.state === \"suspended\") {\n const resumeAudio = () => {\n this.audioListener.context.resume();\n document.removeEventListener(\"click\", resumeAudio);\n document.removeEventListener(\"touchstart\", resumeAudio);\n };\n document.addEventListener(\"click\", resumeAudio);\n document.addEventListener(\"touchstart\", resumeAudio);\n }\n this.camera.add(this.audioListener);\n this.camera.position.z = 10;\n this.camera.position.y = 5;\n\n THREE.Cache.enabled = true;\n\n this.setControlsType(this.options.controlsType);\n\n const clock = new THREE.Clock();\n this.animationFrameCallback = () => {\n this.animationFrameRequest = requestAnimationFrame(this.animationFrameCallback);\n if (this.controls) {\n this.controls.update(clock.getDelta());\n }\n this.renderer.render(this.threeScene, this.camera);\n };\n this.element.appendChild(this.renderer.domElement);\n resolve();\n });\n }\n\n public setControlsType(type?: StandaloneThreeJSAdapterControlsType) {\n if (this.controls) {\n this.controls.dispose();\n this.controls = null;\n }\n switch (type) {\n case StandaloneThreeJSAdapterControlsType.None:\n break;\n case StandaloneThreeJSAdapterControlsType.Orbit:\n this.controls = new ThreeJSOrbitCameraControls(this.camera, this.element);\n break;\n case StandaloneThreeJSAdapterControlsType.DragFly:\n default:\n this.controls = new ThreeJSDragFlyCameraControls(this.camera, this.element);\n break;\n }\n if (this.controls) {\n this.controls.enable();\n }\n }\n\n private createRenderer() {\n let renderer;\n if (navigator.userAgent.includes(\"jsdom\")) {\n renderer = {\n domElement: document.createElement(\"canvas\"),\n setSize: () => void 0,\n render: () => void 0,\n } as unknown as THREE.WebGLRenderer;\n } else {\n renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.outputColorSpace = THREE.SRGBColorSpace;\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n }\n renderer.domElement.style.pointerEvents = \"none\";\n return renderer;\n }\n\n start() {\n this.animationFrameRequest = requestAnimationFrame(this.animationFrameCallback);\n }\n\n getUserPositionAndRotation() {\n const position = this.camera.position;\n const rotation = this.camera.rotation;\n return {\n position: {\n x: position.x,\n y: position.y,\n z: position.z,\n },\n rotation: {\n x: radToDeg(rotation.x),\n y: radToDeg(rotation.y),\n z: radToDeg(rotation.z),\n },\n };\n }\n\n public getAudioListener() {\n return this.audioListener;\n }\n\n resize(width: number, height: number) {\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(width, height);\n }\n\n dispose() {\n this.clickTrigger.dispose();\n if (this.controls) {\n this.controls.dispose();\n this.controls = null;\n }\n cancelAnimationFrame(this.animationFrameRequest);\n }\n\n getRootContainer() {\n return this.rootContainer;\n }\n\n getCamera() {\n return this.camera;\n }\n\n public getBoundingBoxForElement(element: HTMLElement): {\n x: number;\n y: number;\n width: number;\n height: number;\n } | null {\n const camera = this.camera;\n const renderer = this.renderer;\n\n if (!(element instanceof MElement)) {\n return null;\n }\n\n const object = element.getContainer();\n\n // Create a Box3 for the 3D bounding box\n const box3 = new THREE.Box3().setFromObject(object);\n\n // Custom function to convert 3D Vector3 to 2D canvas coordinates\n const toCanvasCoords = (point: THREE.Vector3) => {\n const vec = point.clone().project(camera);\n vec.x = ((vec.x + 1) / 2) * renderer.domElement.clientWidth;\n vec.y = ((-vec.y + 1) / 2) * renderer.domElement.clientHeight;\n return vec;\n };\n\n // Project the 3D bounding box corners into 2D canvas coordinates\n const corners3D = [\n new THREE.Vector3(box3.min.x, box3.min.y, box3.min.z),\n new THREE.Vector3(box3.max.x, box3.min.y, box3.min.z),\n new THREE.Vector3(box3.max.x, box3.min.y, box3.max.z),\n new THREE.Vector3(box3.min.x, box3.min.y, box3.max.z),\n new THREE.Vector3(box3.min.x, box3.max.y, box3.min.z),\n new THREE.Vector3(box3.max.x, box3.max.y, box3.min.z),\n new THREE.Vector3(box3.max.x, box3.max.y, box3.max.z),\n new THREE.Vector3(box3.min.x, box3.max.y, box3.max.z),\n ];\n const corners2D = corners3D.map(toCanvasCoords);\n\n // Calculate the 2D bounding box from the projected canvas coordinates\n const minX = Math.min(...corners2D.map((corner) => corner.x));\n const maxX = Math.max(...corners2D.map((corner) => corner.x));\n const minY = Math.min(...corners2D.map((corner) => corner.y));\n const maxY = Math.max(...corners2D.map((corner) => corner.y));\n\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\n", "/**\n * @monogrid/gainmap-js v3.0.6\n * With \u2764\uFE0F, by MONOGRID \n */\n\nimport { RGBAFormat, LinearFilter, ClampToEdgeWrapping, Scene, OrthographicCamera, HalfFloatType, FloatType, Mesh, PlaneGeometry, WebGLRenderTarget, UVMapping, WebGLRenderer, DataTexture, LinearSRGBColorSpace, ShaderMaterial, Texture, IntType, ShortType, ByteType, UnsignedIntType, UnsignedByteType, MeshBasicMaterial } from 'three';\n\nconst getBufferForType = (type, width, height) => {\n let out;\n switch (type) {\n case UnsignedByteType:\n out = new Uint8ClampedArray(width * height * 4);\n break;\n case HalfFloatType:\n out = new Uint16Array(width * height * 4);\n break;\n case UnsignedIntType:\n out = new Uint32Array(width * height * 4);\n break;\n case ByteType:\n out = new Int8Array(width * height * 4);\n break;\n case ShortType:\n out = new Int16Array(width * height * 4);\n break;\n case IntType:\n out = new Int32Array(width * height * 4);\n break;\n case FloatType:\n out = new Float32Array(width * height * 4);\n break;\n default:\n throw new Error('Unsupported data type');\n }\n return out;\n};\nlet _canReadPixelsResult;\n/**\n * Test if this browser implementation can correctly read pixels from the specified\n * Render target type.\n *\n * Runs only once\n *\n * @param type\n * @param renderer\n * @param camera\n * @param renderTargetOptions\n * @returns\n */\nconst canReadPixels = (type, renderer, camera, renderTargetOptions) => {\n if (_canReadPixelsResult !== undefined)\n return _canReadPixelsResult;\n const testRT = new WebGLRenderTarget(1, 1, renderTargetOptions);\n renderer.setRenderTarget(testRT);\n const mesh = new Mesh(new PlaneGeometry(), new MeshBasicMaterial({ color: 0xffffff }));\n renderer.render(mesh, camera);\n renderer.setRenderTarget(null);\n const out = getBufferForType(type, testRT.width, testRT.height);\n renderer.readRenderTargetPixels(testRT, 0, 0, testRT.width, testRT.height, out);\n testRT.dispose();\n mesh.geometry.dispose();\n mesh.material.dispose();\n _canReadPixelsResult = out[0] !== 0;\n return _canReadPixelsResult;\n};\n/**\n * Utility class used for rendering a texture with a material\n *\n * @category Core\n * @group Core\n */\nclass QuadRenderer {\n /**\n * Constructs a new QuadRenderer\n *\n * @param options Parameters for this QuadRenderer\n */\n constructor(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n this._rendererIsDisposable = false;\n this._supportsReadPixels = true;\n /**\n * Renders the input texture using the specified material\n */\n this.render = () => {\n this._renderer.setRenderTarget(this._renderTarget);\n try {\n this._renderer.render(this._scene, this._camera);\n }\n catch (e) {\n this._renderer.setRenderTarget(null);\n throw e;\n }\n this._renderer.setRenderTarget(null);\n };\n this._width = options.width;\n this._height = options.height;\n this._type = options.type;\n this._colorSpace = options.colorSpace;\n const rtOptions = {\n // fixed options\n format: RGBAFormat,\n depthBuffer: false,\n stencilBuffer: false,\n // user options\n type: this._type, // set in class property\n colorSpace: this._colorSpace, // set in class property\n anisotropy: ((_a = options.renderTargetOptions) === null || _a === void 0 ? void 0 : _a.anisotropy) !== undefined ? (_b = options.renderTargetOptions) === null || _b === void 0 ? void 0 : _b.anisotropy : 1,\n generateMipmaps: ((_c = options.renderTargetOptions) === null || _c === void 0 ? void 0 : _c.generateMipmaps) !== undefined ? (_d = options.renderTargetOptions) === null || _d === void 0 ? void 0 : _d.generateMipmaps : false,\n magFilter: ((_e = options.renderTargetOptions) === null || _e === void 0 ? void 0 : _e.magFilter) !== undefined ? (_f = options.renderTargetOptions) === null || _f === void 0 ? void 0 : _f.magFilter : LinearFilter,\n minFilter: ((_g = options.renderTargetOptions) === null || _g === void 0 ? void 0 : _g.minFilter) !== undefined ? (_h = options.renderTargetOptions) === null || _h === void 0 ? void 0 : _h.minFilter : LinearFilter,\n samples: ((_j = options.renderTargetOptions) === null || _j === void 0 ? void 0 : _j.samples) !== undefined ? (_k = options.renderTargetOptions) === null || _k === void 0 ? void 0 : _k.samples : undefined,\n wrapS: ((_l = options.renderTargetOptions) === null || _l === void 0 ? void 0 : _l.wrapS) !== undefined ? (_m = options.renderTargetOptions) === null || _m === void 0 ? void 0 : _m.wrapS : ClampToEdgeWrapping,\n wrapT: ((_o = options.renderTargetOptions) === null || _o === void 0 ? void 0 : _o.wrapT) !== undefined ? (_p = options.renderTargetOptions) === null || _p === void 0 ? void 0 : _p.wrapT : ClampToEdgeWrapping\n };\n this._material = options.material;\n if (options.renderer) {\n this._renderer = options.renderer;\n }\n else {\n this._renderer = QuadRenderer.instantiateRenderer();\n this._rendererIsDisposable = true;\n }\n this._scene = new Scene();\n this._camera = new OrthographicCamera();\n this._camera.position.set(0, 0, 10);\n this._camera.left = -0.5;\n this._camera.right = 0.5;\n this._camera.top = 0.5;\n this._camera.bottom = -0.5;\n this._camera.updateProjectionMatrix();\n if (!canReadPixels(this._type, this._renderer, this._camera, rtOptions)) {\n let alternativeType;\n switch (this._type) {\n case HalfFloatType:\n alternativeType = this._renderer.extensions.has('EXT_color_buffer_float') ? FloatType : undefined;\n break;\n }\n if (alternativeType !== undefined) {\n console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${FloatType}`);\n this._type = alternativeType;\n }\n else {\n this._supportsReadPixels = false;\n console.warn('This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown');\n }\n }\n this._quad = new Mesh(new PlaneGeometry(), this._material);\n this._quad.geometry.computeBoundingBox();\n this._scene.add(this._quad);\n this._renderTarget = new WebGLRenderTarget(this.width, this.height, rtOptions);\n this._renderTarget.texture.mapping = ((_q = options.renderTargetOptions) === null || _q === void 0 ? void 0 : _q.mapping) !== undefined ? (_r = options.renderTargetOptions) === null || _r === void 0 ? void 0 : _r.mapping : UVMapping;\n }\n /**\n * Instantiates a temporary renderer\n *\n * @returns\n */\n static instantiateRenderer() {\n const renderer = new WebGLRenderer();\n renderer.setSize(128, 128);\n // renderer.outputColorSpace = SRGBColorSpace\n // renderer.toneMapping = LinearToneMapping\n // renderer.debug.checkShaderErrors = false\n // this._rendererIsDisposable = true\n return renderer;\n }\n /**\n * Obtains a Buffer containing the rendered texture.\n *\n * @throws Error if the browser cannot read pixels from this RenderTarget type.\n * @returns a TypedArray containing RGBA values from this renderer\n */\n toArray() {\n if (!this._supportsReadPixels)\n throw new Error('Can\\'t read pixels in this browser');\n const out = getBufferForType(this._type, this._width, this._height);\n this._renderer.readRenderTargetPixels(this._renderTarget, 0, 0, this._width, this._height, out);\n return out;\n }\n /**\n * Performs a readPixel operation in the renderTarget\n * and returns a DataTexture containing the read data\n *\n * @param options options\n * @returns\n */\n toDataTexture(options) {\n const returnValue = new DataTexture(\n // fixed values\n this.toArray(), this.width, this.height, RGBAFormat, this._type, \n // user values\n (options === null || options === void 0 ? void 0 : options.mapping) || UVMapping, (options === null || options === void 0 ? void 0 : options.wrapS) || ClampToEdgeWrapping, (options === null || options === void 0 ? void 0 : options.wrapT) || ClampToEdgeWrapping, (options === null || options === void 0 ? void 0 : options.magFilter) || LinearFilter, (options === null || options === void 0 ? void 0 : options.minFilter) || LinearFilter, (options === null || options === void 0 ? void 0 : options.anisotropy) || 1, \n // fixed value\n LinearSRGBColorSpace);\n // set this afterwards, we can't set it in constructor\n returnValue.generateMipmaps = (options === null || options === void 0 ? void 0 : options.generateMipmaps) !== undefined ? options === null || options === void 0 ? void 0 : options.generateMipmaps : false;\n return returnValue;\n }\n /**\n * If using a disposable renderer, it will dispose it.\n */\n disposeOnDemandRenderer() {\n this._renderer.setRenderTarget(null);\n if (this._rendererIsDisposable) {\n this._renderer.dispose();\n this._renderer.forceContextLoss();\n }\n }\n /**\n * Will dispose of **all** assets used by this renderer.\n *\n *\n * @param disposeRenderTarget will dispose of the renderTarget which will not be usable later\n * set this to true if you passed the `renderTarget.texture` to a `PMREMGenerator`\n * or are otherwise done with it.\n *\n * @example\n * ```js\n * const loader = new HDRJPGLoader(renderer)\n * const result = await loader.loadAsync('gainmap.jpeg')\n * const mesh = new Mesh(geometry, new MeshBasicMaterial({ map: result.renderTarget.texture }) )\n * // DO NOT dispose the renderTarget here,\n * // it is used directly in the material\n * result.dispose()\n * ```\n *\n * @example\n * ```js\n * const loader = new HDRJPGLoader(renderer)\n * const pmremGenerator = new PMREMGenerator( renderer );\n * const result = await loader.loadAsync('gainmap.jpeg')\n * const envMap = pmremGenerator.fromEquirectangular(result.renderTarget.texture)\n * const mesh = new Mesh(geometry, new MeshStandardMaterial({ envMap }) )\n * // renderTarget can be disposed here\n * // because it was used to generate a PMREM texture\n * result.dispose(true)\n * ```\n */\n dispose(disposeRenderTarget) {\n this.disposeOnDemandRenderer();\n if (disposeRenderTarget) {\n this.renderTarget.dispose();\n }\n // dispose shader material texture uniforms\n if (this.material instanceof ShaderMaterial) {\n Object.values(this.material.uniforms).forEach(v => {\n if (v.value instanceof Texture)\n v.value.dispose();\n });\n }\n // dispose other material properties\n Object.values(this.material).forEach(value => {\n if (value instanceof Texture)\n value.dispose();\n });\n this.material.dispose();\n this._quad.geometry.dispose();\n }\n /**\n * Width of the texture\n */\n get width() { return this._width; }\n set width(value) {\n this._width = value;\n this._renderTarget.setSize(this._width, this._height);\n }\n /**\n * Height of the texture\n */\n get height() { return this._height; }\n set height(value) {\n this._height = value;\n this._renderTarget.setSize(this._width, this._height);\n }\n /**\n * The renderer used\n */\n get renderer() { return this._renderer; }\n /**\n * The `WebGLRenderTarget` used.\n */\n get renderTarget() { return this._renderTarget; }\n set renderTarget(value) {\n this._renderTarget = value;\n this._width = value.width;\n this._height = value.height;\n // this._type = value.texture.type\n }\n /**\n * The `Material` used.\n */\n get material() { return this._material; }\n /**\n *\n */\n get type() { return this._type; }\n get colorSpace() { return this._colorSpace; }\n}\n\nexport { QuadRenderer as Q };\n", "/**\n * @monogrid/gainmap-js v3.0.6\n * With \u2764\uFE0F, by MONOGRID \n */\n\nimport { Q as QuadRenderer } from './QuadRenderer-B3h-sJtp.js';\nimport { ShaderMaterial, Vector3, NoBlending, SRGBColorSpace, LinearSRGBColorSpace, HalfFloatType, Loader, LoadingManager, Texture, UVMapping, ClampToEdgeWrapping, LinearFilter, LinearMipMapLinearFilter, RGBAFormat, UnsignedByteType, FileLoader } from 'three';\n\nconst vertexShader = /* glsl */ `\nvarying vec2 vUv;\n\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n`;\nconst fragmentShader = /* glsl */ `\n// min half float value\n#define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 )\n// max half float value\n#define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 )\n\nuniform sampler2D sdr;\nuniform sampler2D gainMap;\nuniform vec3 gamma;\nuniform vec3 offsetHdr;\nuniform vec3 offsetSdr;\nuniform vec3 gainMapMin;\nuniform vec3 gainMapMax;\nuniform float weightFactor;\n\nvarying vec2 vUv;\n\nvoid main() {\n vec3 rgb = texture2D( sdr, vUv ).rgb;\n vec3 recovery = texture2D( gainMap, vUv ).rgb;\n vec3 logRecovery = pow( recovery, gamma );\n vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery;\n vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr;\n vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor ));\n gl_FragColor = vec4( clampedHdrColor , 1.0 );\n}\n`;\n/**\n * A Material which is able to decode the Gainmap into a full HDR Representation\n *\n * @category Materials\n * @group Materials\n */\nclass GainMapDecoderMaterial extends ShaderMaterial {\n /**\n *\n * @param params\n */\n constructor({ gamma, offsetHdr, offsetSdr, gainMapMin, gainMapMax, maxDisplayBoost, hdrCapacityMin, hdrCapacityMax, sdr, gainMap }) {\n super({\n name: 'GainMapDecoderMaterial',\n vertexShader,\n fragmentShader,\n uniforms: {\n sdr: { value: sdr },\n gainMap: { value: gainMap },\n gamma: { value: new Vector3(1.0 / gamma[0], 1.0 / gamma[1], 1.0 / gamma[2]) },\n offsetHdr: { value: new Vector3().fromArray(offsetHdr) },\n offsetSdr: { value: new Vector3().fromArray(offsetSdr) },\n gainMapMin: { value: new Vector3().fromArray(gainMapMin) },\n gainMapMax: { value: new Vector3().fromArray(gainMapMax) },\n weightFactor: {\n value: (Math.log2(maxDisplayBoost) - hdrCapacityMin) / (hdrCapacityMax - hdrCapacityMin)\n }\n },\n blending: NoBlending,\n depthTest: false,\n depthWrite: false\n });\n this._maxDisplayBoost = maxDisplayBoost;\n this._hdrCapacityMin = hdrCapacityMin;\n this._hdrCapacityMax = hdrCapacityMax;\n this.needsUpdate = true;\n this.uniformsNeedUpdate = true;\n }\n get sdr() { return this.uniforms.sdr.value; }\n set sdr(value) { this.uniforms.sdr.value = value; }\n get gainMap() { return this.uniforms.gainMap.value; }\n set gainMap(value) { this.uniforms.gainMap.value = value; }\n /**\n * @see {@link GainMapMetadata.offsetHdr}\n */\n get offsetHdr() { return this.uniforms.offsetHdr.value.toArray(); }\n set offsetHdr(value) { this.uniforms.offsetHdr.value.fromArray(value); }\n /**\n * @see {@link GainMapMetadata.offsetSdr}\n */\n get offsetSdr() { return this.uniforms.offsetSdr.value.toArray(); }\n set offsetSdr(value) { this.uniforms.offsetSdr.value.fromArray(value); }\n /**\n * @see {@link GainMapMetadata.gainMapMin}\n */\n get gainMapMin() { return this.uniforms.gainMapMin.value.toArray(); }\n set gainMapMin(value) { this.uniforms.gainMapMin.value.fromArray(value); }\n /**\n * @see {@link GainMapMetadata.gainMapMax}\n */\n get gainMapMax() { return this.uniforms.gainMapMax.value.toArray(); }\n set gainMapMax(value) { this.uniforms.gainMapMax.value.fromArray(value); }\n /**\n * @see {@link GainMapMetadata.gamma}\n */\n get gamma() {\n const g = this.uniforms.gamma.value;\n return [1 / g.x, 1 / g.y, 1 / g.z];\n }\n set gamma(value) {\n const g = this.uniforms.gamma.value;\n g.x = 1.0 / value[0];\n g.y = 1.0 / value[1];\n g.z = 1.0 / value[2];\n }\n /**\n * @see {@link GainMapMetadata.hdrCapacityMin}\n * @remarks Logarithmic space\n */\n get hdrCapacityMin() { return this._hdrCapacityMin; }\n set hdrCapacityMin(value) {\n this._hdrCapacityMin = value;\n this.calculateWeight();\n }\n /**\n * @see {@link GainMapMetadata.hdrCapacityMin}\n * @remarks Logarithmic space\n */\n get hdrCapacityMax() { return this._hdrCapacityMax; }\n set hdrCapacityMax(value) {\n this._hdrCapacityMax = value;\n this.calculateWeight();\n }\n /**\n * @see {@link GainmapDecodingParameters.maxDisplayBoost}\n * @remarks Non Logarithmic space\n */\n get maxDisplayBoost() { return this._maxDisplayBoost; }\n set maxDisplayBoost(value) {\n this._maxDisplayBoost = Math.max(1, Math.min(65504, value));\n this.calculateWeight();\n }\n calculateWeight() {\n const val = (Math.log2(this._maxDisplayBoost) - this._hdrCapacityMin) / (this._hdrCapacityMax - this._hdrCapacityMin);\n this.uniforms.weightFactor.value = Math.max(0, Math.min(1, val));\n }\n}\n\n/**\n * Decodes a gain map using a WebGLRenderTarget\n *\n * @category Decoding Functions\n * @group Decoding Functions\n * @example\n * import { decode } from '@monogrid/gainmap-js'\n * import {\n * Mesh,\n * MeshBasicMaterial,\n * PerspectiveCamera,\n * PlaneGeometry,\n * Scene,\n * TextureLoader,\n * WebGLRenderer\n * } from 'three'\n *\n * const renderer = new WebGLRenderer()\n *\n * const textureLoader = new TextureLoader()\n *\n * // load SDR Representation\n * const sdr = await textureLoader.loadAsync('sdr.jpg')\n * // load Gain map recovery image\n * const gainMap = await textureLoader.loadAsync('gainmap.jpg')\n * // load metadata\n * const metadata = await (await fetch('metadata.json')).json()\n *\n * const result = await decode({\n * sdr,\n * gainMap,\n * // this allows to use `result.renderTarget.texture` directly\n * renderer,\n * // this will restore the full HDR range\n * maxDisplayBoost: Math.pow(2, metadata.hdrCapacityMax),\n * ...metadata\n * })\n *\n * const scene = new Scene()\n * // `result` can be used to populate a Texture\n * const mesh = new Mesh(\n * new PlaneGeometry(),\n * new MeshBasicMaterial({ map: result.renderTarget.texture })\n * )\n * scene.add(mesh)\n * renderer.render(scene, new PerspectiveCamera())\n *\n * // result must be manually disposed\n * // when you are done using it\n * result.dispose()\n *\n * @param params\n * @returns\n * @throws {Error} if the WebGLRenderer fails to render the gain map\n */\nconst decode = (params) => {\n const { sdr, gainMap, renderer } = params;\n if (sdr.colorSpace !== SRGBColorSpace) {\n console.warn('SDR Colorspace needs to be *SRGBColorSpace*, setting it automatically');\n sdr.colorSpace = SRGBColorSpace;\n }\n sdr.needsUpdate = true;\n if (gainMap.colorSpace !== LinearSRGBColorSpace) {\n console.warn('Gainmap Colorspace needs to be *LinearSRGBColorSpace*, setting it automatically');\n gainMap.colorSpace = LinearSRGBColorSpace;\n }\n gainMap.needsUpdate = true;\n const material = new GainMapDecoderMaterial({\n ...params,\n sdr,\n gainMap\n });\n const quadRenderer = new QuadRenderer({\n // TODO: three types are generic, eslint complains here, see how we can solve\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n width: sdr.image.width,\n // TODO: three types are generic, eslint complains here, see how we can solve\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n height: sdr.image.height,\n type: HalfFloatType,\n colorSpace: LinearSRGBColorSpace,\n material,\n renderer,\n renderTargetOptions: params.renderTargetOptions\n });\n try {\n quadRenderer.render();\n }\n catch (e) {\n quadRenderer.disposeOnDemandRenderer();\n throw e;\n }\n return quadRenderer;\n};\n\nclass GainMapNotFoundError extends Error {\n}\n\nclass XMPMetadataNotFoundError extends Error {\n}\n\nconst getAttribute = (description, name, defaultValue) => {\n var _a;\n let returnValue;\n const parsedValue = (_a = description.attributes.getNamedItem(name)) === null || _a === void 0 ? void 0 : _a.nodeValue;\n if (!parsedValue) {\n const node = description.getElementsByTagName(name)[0];\n if (node) {\n const values = node.getElementsByTagName('rdf:li');\n if (values.length === 3) {\n returnValue = Array.from(values).map(v => v.innerHTML);\n }\n else {\n throw new Error(`Gainmap metadata contains an array of items for ${name} but its length is not 3`);\n }\n }\n else {\n if (defaultValue)\n return defaultValue;\n else\n throw new Error(`Can't find ${name} in gainmap metadata`);\n }\n }\n else {\n returnValue = parsedValue;\n }\n return returnValue;\n};\n/**\n *\n * @param input\n * @returns\n */\nconst extractXMP = (input) => {\n var _a, _b;\n let str;\n // support node test environment\n if (typeof TextDecoder !== 'undefined')\n str = new TextDecoder().decode(input);\n else\n str = input.toString();\n let start = str.indexOf('', start);\n str.slice(start, end + 10);\n const xmpBlock = str.slice(start, end + 10);\n try {\n const xmlDocument = parser.parseFromString(xmpBlock, 'text/xml');\n const description = xmlDocument.getElementsByTagName('rdf:Description')[0];\n const gainMapMin = getAttribute(description, 'hdrgm:GainMapMin', '0');\n const gainMapMax = getAttribute(description, 'hdrgm:GainMapMax');\n const gamma = getAttribute(description, 'hdrgm:Gamma', '1');\n const offsetSDR = getAttribute(description, 'hdrgm:OffsetSDR', '0.015625');\n const offsetHDR = getAttribute(description, 'hdrgm:OffsetHDR', '0.015625');\n let hdrCapacityMin = (_a = description.attributes.getNamedItem('hdrgm:HDRCapacityMin')) === null || _a === void 0 ? void 0 : _a.nodeValue;\n if (!hdrCapacityMin)\n hdrCapacityMin = '0';\n const hdrCapacityMax = (_b = description.attributes.getNamedItem('hdrgm:HDRCapacityMax')) === null || _b === void 0 ? void 0 : _b.nodeValue;\n if (!hdrCapacityMax)\n throw new Error('Incomplete gainmap metadata');\n return {\n gainMapMin: Array.isArray(gainMapMin) ? gainMapMin.map(v => parseFloat(v)) : [parseFloat(gainMapMin), parseFloat(gainMapMin), parseFloat(gainMapMin)],\n gainMapMax: Array.isArray(gainMapMax) ? gainMapMax.map(v => parseFloat(v)) : [parseFloat(gainMapMax), parseFloat(gainMapMax), parseFloat(gainMapMax)],\n gamma: Array.isArray(gamma) ? gamma.map(v => parseFloat(v)) : [parseFloat(gamma), parseFloat(gamma), parseFloat(gamma)],\n offsetSdr: Array.isArray(offsetSDR) ? offsetSDR.map(v => parseFloat(v)) : [parseFloat(offsetSDR), parseFloat(offsetSDR), parseFloat(offsetSDR)],\n offsetHdr: Array.isArray(offsetHDR) ? offsetHDR.map(v => parseFloat(v)) : [parseFloat(offsetHDR), parseFloat(offsetHDR), parseFloat(offsetHDR)],\n hdrCapacityMin: parseFloat(hdrCapacityMin),\n hdrCapacityMax: parseFloat(hdrCapacityMax)\n };\n }\n catch (e) {\n }\n start = str.indexOf(' {\n const debug = this.options.debug;\n const dataView = new DataView(imageArrayBuffer.buffer);\n // If you're executing this line on a big endian machine, it'll be reversed.\n // bigEnd further down though, refers to the endianness of the image itself.\n if (dataView.getUint16(0) !== 0xffd8) {\n reject(new Error('Not a valid jpeg'));\n return;\n }\n const length = dataView.byteLength;\n let offset = 2;\n let loops = 0;\n let marker; // APP# marker\n while (offset < length) {\n if (++loops > 250) {\n reject(new Error(`Found no marker after ${loops} loops \uD83D\uDE35`));\n return;\n }\n if (dataView.getUint8(offset) !== 0xff) {\n reject(new Error(`Not a valid marker at offset 0x${offset.toString(16)}, found: 0x${dataView.getUint8(offset).toString(16)}`));\n return;\n }\n marker = dataView.getUint8(offset + 1);\n if (debug)\n console.log(`Marker: ${marker.toString(16)}`);\n if (marker === 0xe2) {\n if (debug)\n console.log('Found APP2 marker (0xffe2)');\n // Works for iPhone 8 Plus, X, and XSMax. Or any photos of MPF format.\n // Great way to visualize image information in html is using Exiftool. E.g.:\n // ./exiftool.exe -htmldump -wantTrailer photo.jpg > photo.html\n const formatPt = offset + 4;\n /*\n * Structure of the MP Format Identifier\n *\n * Offset Addr. | Code (Hex) | Description\n * +00 ff Marker Prefix <-- offset\n * +01 e2 APP2\n * +02 #n APP2 Field Length\n * +03 #n APP2 Field Length\n * +04 4d 'M' <-- formatPt\n * +05 50 'P'\n * +06 46 'F'\n * +07 00 NULL\n * <-- tiffOffset\n */\n if (dataView.getUint32(formatPt) === 0x4d504600) {\n // Found MPF tag, so we start dig out sub images\n const tiffOffset = formatPt + 4;\n let bigEnd; // Endianness from TIFF header\n // Test for TIFF validity and endianness\n // 0x4949 and 0x4D4D ('II' and 'MM') marks Little Endian and Big Endian\n if (dataView.getUint16(tiffOffset) === 0x4949) {\n bigEnd = false;\n }\n else if (dataView.getUint16(tiffOffset) === 0x4d4d) {\n bigEnd = true;\n }\n else {\n reject(new Error('No valid endianness marker found in TIFF header'));\n return;\n }\n if (dataView.getUint16(tiffOffset + 2, !bigEnd) !== 0x002a) {\n reject(new Error('Not valid TIFF data! (no 0x002A marker)'));\n return;\n }\n // 32 bit number stating the offset from the start of the 8 Byte MP Header\n // to MP Index IFD Least possible value is thus 8 (means 0 offset)\n const firstIFDOffset = dataView.getUint32(tiffOffset + 4, !bigEnd);\n if (firstIFDOffset < 0x00000008) {\n reject(new Error('Not valid TIFF data! (First offset less than 8)'));\n return;\n }\n // Move ahead to MP Index IFD\n // Assume we're at the first IFD, so firstIFDOffset points to\n // MP Index IFD and not MP Attributes IFD. (If we try extract from a sub image,\n // we fail silently here due to this assumption)\n // Count (2 Byte) | MP Index Fields a.k.a. MP Entries (count * 12 Byte) | Offset of Next IFD (4 Byte)\n const dirStart = tiffOffset + firstIFDOffset; // Start of IFD (Image File Directory)\n const count = dataView.getUint16(dirStart, !bigEnd); // Count of MPEntries (2 Byte)\n // Extract info from MPEntries (starting after Count)\n const entriesStart = dirStart + 2;\n let numberOfImages = 0;\n for (let i = entriesStart; i < entriesStart + 12 * count; i += 12) {\n // Each entry is 12 Bytes long\n // Check MP Index IFD tags, here we only take tag 0xb001 = Number of images\n if (dataView.getUint16(i, !bigEnd) === 0xb001) {\n // stored in Last 4 bytes of its 12 Byte entry.\n numberOfImages = dataView.getUint32(i + 8, !bigEnd);\n }\n }\n const nextIFDOffsetLen = 4; // 4 Byte offset field that appears after MP Index IFD tags\n const MPImageListValPt = dirStart + 2 + count * 12 + nextIFDOffsetLen;\n const images = [];\n for (let i = MPImageListValPt; i < MPImageListValPt + numberOfImages * 16; i += 16) {\n const image = {\n MPType: dataView.getUint32(i, !bigEnd),\n size: dataView.getUint32(i + 4, !bigEnd),\n // This offset is specified relative to the address of the MP Endian\n // field in the MP Header, unless the image is a First Individual Image,\n // in which case the value of the offset shall be NULL (0x00000000).\n dataOffset: dataView.getUint32(i + 8, !bigEnd),\n dependantImages: dataView.getUint32(i + 12, !bigEnd),\n start: -1,\n end: -1,\n isFII: false\n };\n if (!image.dataOffset) {\n // dataOffset is 0x00000000 for First Individual Image\n image.start = 0;\n image.isFII = true;\n }\n else {\n image.start = tiffOffset + image.dataOffset;\n image.isFII = false;\n }\n image.end = image.start + image.size;\n images.push(image);\n }\n if (this.options.extractNonFII && images.length) {\n const bufferBlob = new Blob([dataView]);\n const imgs = [];\n for (const image of images) {\n if (image.isFII && !this.options.extractFII) {\n continue; // Skip FII\n }\n const imageBlob = bufferBlob.slice(image.start, image.end + 1, 'image/jpeg');\n // we don't need this\n // const imageUrl = URL.createObjectURL(imageBlob)\n // image.img = document.createElement('img')\n // image.img.src = imageUrl\n imgs.push(imageBlob);\n }\n resolve(imgs);\n }\n }\n }\n offset += 2 + dataView.getUint16(offset + 2);\n }\n });\n }\n}\n\n/**\n * Extracts XMP Metadata and the gain map recovery image\n * from a single JPEG file.\n *\n * @category Decoding Functions\n * @group Decoding Functions\n * @param jpegFile an `Uint8Array` containing and encoded JPEG file\n * @returns an sdr `Uint8Array` compressed in JPEG, a gainMap `Uint8Array` compressed in JPEG and the XMP parsed XMP metadata\n * @throws Error if XMP Metadata is not found\n * @throws Error if Gain map image is not found\n * @example\n * import { FileLoader } from 'three'\n * import { extractGainmapFromJPEG } from '@monogrid/gainmap-js'\n *\n * const jpegFile = await new FileLoader()\n * .setResponseType('arraybuffer')\n * .loadAsync('image.jpg')\n *\n * const { sdr, gainMap, metadata } = extractGainmapFromJPEG(jpegFile)\n */\nconst extractGainmapFromJPEG = async (jpegFile) => {\n const metadata = extractXMP(jpegFile);\n if (!metadata)\n throw new XMPMetadataNotFoundError('Gain map XMP metadata not found');\n const mpfExtractor = new MPFExtractor({ extractFII: true, extractNonFII: true });\n const images = await mpfExtractor.extract(jpegFile);\n if (images.length !== 2)\n throw new GainMapNotFoundError('Gain map recovery image not found');\n return {\n sdr: new Uint8Array(await images[0].arrayBuffer()),\n gainMap: new Uint8Array(await images[1].arrayBuffer()),\n metadata\n };\n};\n\n/**\n * private function, async get image from blob\n *\n * @param blob\n * @returns\n */\nconst getHTMLImageFromBlob = (blob) => {\n return new Promise((resolve, reject) => {\n const img = document.createElement('img');\n img.onload = () => { resolve(img); };\n img.onerror = (e) => { reject(e); };\n img.src = URL.createObjectURL(blob);\n });\n};\n\nclass LoaderBase extends Loader {\n /**\n *\n * @param renderer\n * @param manager\n */\n constructor(renderer, manager) {\n super(manager);\n if (renderer)\n this._renderer = renderer;\n this._internalLoadingManager = new LoadingManager();\n }\n /**\n * Specify the renderer to use when rendering the gain map\n *\n * @param renderer\n * @returns\n */\n setRenderer(renderer) {\n this._renderer = renderer;\n return this;\n }\n /**\n * Specify the renderTarget options to use when rendering the gain map\n *\n * @param options\n * @returns\n */\n setRenderTargetOptions(options) {\n this._renderTargetOptions = options;\n return this;\n }\n /**\n * @private\n * @returns\n */\n prepareQuadRenderer() {\n if (!this._renderer)\n console.warn('WARNING: An existing WebGL Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer.');\n // temporary values\n const material = new GainMapDecoderMaterial({\n gainMapMax: [1, 1, 1],\n gainMapMin: [0, 0, 0],\n gamma: [1, 1, 1],\n offsetHdr: [1, 1, 1],\n offsetSdr: [1, 1, 1],\n hdrCapacityMax: 1,\n hdrCapacityMin: 0,\n maxDisplayBoost: 1,\n gainMap: new Texture(),\n sdr: new Texture()\n });\n return new QuadRenderer({\n width: 16,\n height: 16,\n type: HalfFloatType,\n colorSpace: LinearSRGBColorSpace,\n material,\n renderer: this._renderer,\n renderTargetOptions: this._renderTargetOptions\n });\n }\n /**\n * @private\n * @param quadRenderer\n * @param metadata\n * @param sdrBuffer\n * @param gainMapBuffer\n */\n async render(quadRenderer, metadata, sdrBuffer, gainMapBuffer) {\n // this is optional, will render a black gain-map if not present\n const gainMapBlob = gainMapBuffer ? new Blob([gainMapBuffer], { type: 'image/jpeg' }) : undefined;\n const sdrBlob = new Blob([sdrBuffer], { type: 'image/jpeg' });\n let sdrImage;\n let gainMapImage;\n let needsFlip = false;\n if (typeof createImageBitmap === 'undefined') {\n const res = await Promise.all([\n gainMapBlob ? getHTMLImageFromBlob(gainMapBlob) : Promise.resolve(undefined),\n getHTMLImageFromBlob(sdrBlob)\n ]);\n gainMapImage = res[0];\n sdrImage = res[1];\n needsFlip = true;\n }\n else {\n const res = await Promise.all([\n gainMapBlob ? createImageBitmap(gainMapBlob, { imageOrientation: 'flipY' }) : Promise.resolve(undefined),\n createImageBitmap(sdrBlob, { imageOrientation: 'flipY' })\n ]);\n gainMapImage = res[0];\n sdrImage = res[1];\n }\n const gainMap = new Texture(gainMapImage || new ImageData(2, 2), UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, LinearMipMapLinearFilter, RGBAFormat, UnsignedByteType, 1, LinearSRGBColorSpace);\n gainMap.flipY = needsFlip;\n gainMap.needsUpdate = true;\n const sdr = new Texture(sdrImage, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, LinearMipMapLinearFilter, RGBAFormat, UnsignedByteType, 1, SRGBColorSpace);\n sdr.flipY = needsFlip;\n sdr.needsUpdate = true;\n quadRenderer.width = sdrImage.width;\n quadRenderer.height = sdrImage.height;\n quadRenderer.material.gainMap = gainMap;\n quadRenderer.material.sdr = sdr;\n quadRenderer.material.gainMapMin = metadata.gainMapMin;\n quadRenderer.material.gainMapMax = metadata.gainMapMax;\n quadRenderer.material.offsetHdr = metadata.offsetHdr;\n quadRenderer.material.offsetSdr = metadata.offsetSdr;\n quadRenderer.material.gamma = metadata.gamma;\n quadRenderer.material.hdrCapacityMin = metadata.hdrCapacityMin;\n quadRenderer.material.hdrCapacityMax = metadata.hdrCapacityMax;\n quadRenderer.material.maxDisplayBoost = Math.pow(2, metadata.hdrCapacityMax);\n quadRenderer.material.needsUpdate = true;\n quadRenderer.render();\n }\n}\n\n/**\n * A Three.js Loader for the gain map format.\n *\n * @category Loaders\n * @group Loaders\n *\n * @example\n * import { GainMapLoader } from '@monogrid/gainmap-js'\n * import {\n * EquirectangularReflectionMapping,\n * LinearFilter,\n * Mesh,\n * MeshBasicMaterial,\n * PerspectiveCamera,\n * PlaneGeometry,\n * Scene,\n * WebGLRenderer\n * } from 'three'\n *\n * const renderer = new WebGLRenderer()\n *\n * const loader = new GainMapLoader(renderer)\n *\n * const result = await loader.loadAsync(['sdr.jpeg', 'gainmap.jpeg', 'metadata.json'])\n * // `result` can be used to populate a Texture\n *\n * const scene = new Scene()\n * const mesh = new Mesh(\n * new PlaneGeometry(),\n * new MeshBasicMaterial({ map: result.renderTarget.texture })\n * )\n * scene.add(mesh)\n * renderer.render(scene, new PerspectiveCamera())\n *\n * // Starting from three.js r159\n * // `result.renderTarget.texture` can\n * // also be used as Equirectangular scene background\n * //\n * // it was previously needed to convert it\n * // to a DataTexture with `result.toDataTexture()`\n * scene.background = result.renderTarget.texture\n * scene.background.mapping = EquirectangularReflectionMapping\n *\n * // result must be manually disposed\n * // when you are done using it\n * result.dispose()\n *\n */\nclass GainMapLoader extends LoaderBase {\n /**\n * Loads a gainmap using separate data\n * * sdr image\n * * gain map image\n * * metadata json\n *\n * useful for webp gain maps\n *\n * @param urls An array in the form of [sdr.jpg, gainmap.jpg, metadata.json]\n * @param onLoad Load complete callback, will receive the result\n * @param onProgress Progress callback, will receive a {@link ProgressEvent}\n * @param onError Error callback\n * @returns\n */\n load([sdrUrl, gainMapUrl, metadataUrl], onLoad, onProgress, onError) {\n const quadRenderer = this.prepareQuadRenderer();\n let sdr;\n let gainMap;\n let metadata;\n const loadCheck = async () => {\n if (sdr && gainMap && metadata) {\n // solves #16\n try {\n await this.render(quadRenderer, metadata, sdr, gainMap);\n }\n catch (error) {\n this.manager.itemError(sdrUrl);\n this.manager.itemError(gainMapUrl);\n this.manager.itemError(metadataUrl);\n if (typeof onError === 'function')\n onError(error);\n quadRenderer.disposeOnDemandRenderer();\n return;\n }\n if (typeof onLoad === 'function')\n onLoad(quadRenderer);\n this.manager.itemEnd(sdrUrl);\n this.manager.itemEnd(gainMapUrl);\n this.manager.itemEnd(metadataUrl);\n quadRenderer.disposeOnDemandRenderer();\n }\n };\n let sdrLengthComputable = true;\n let sdrTotal = 0;\n let sdrLoaded = 0;\n let gainMapLengthComputable = true;\n let gainMapTotal = 0;\n let gainMapLoaded = 0;\n let metadataLengthComputable = true;\n let metadataTotal = 0;\n let metadataLoaded = 0;\n const progressHandler = () => {\n if (typeof onProgress === 'function') {\n const total = sdrTotal + gainMapTotal + metadataTotal;\n const loaded = sdrLoaded + gainMapLoaded + metadataLoaded;\n const lengthComputable = sdrLengthComputable && gainMapLengthComputable && metadataLengthComputable;\n onProgress(new ProgressEvent('progress', { lengthComputable, loaded, total }));\n }\n };\n this.manager.itemStart(sdrUrl);\n this.manager.itemStart(gainMapUrl);\n this.manager.itemStart(metadataUrl);\n const sdrLoader = new FileLoader(this._internalLoadingManager);\n sdrLoader.setResponseType('arraybuffer');\n sdrLoader.setRequestHeader(this.requestHeader);\n sdrLoader.setPath(this.path);\n sdrLoader.setWithCredentials(this.withCredentials);\n sdrLoader.load(sdrUrl, async (buffer) => {\n /* istanbul ignore if\n this condition exists only because of three.js types + strict mode\n */\n if (typeof buffer === 'string')\n throw new Error('Invalid sdr buffer');\n sdr = buffer;\n await loadCheck();\n }, (e) => {\n sdrLengthComputable = e.lengthComputable;\n sdrLoaded = e.loaded;\n sdrTotal = e.total;\n progressHandler();\n }, (error) => {\n this.manager.itemError(sdrUrl);\n if (typeof onError === 'function')\n onError(error);\n });\n const gainMapLoader = new FileLoader(this._internalLoadingManager);\n gainMapLoader.setResponseType('arraybuffer');\n gainMapLoader.setRequestHeader(this.requestHeader);\n gainMapLoader.setPath(this.path);\n gainMapLoader.setWithCredentials(this.withCredentials);\n gainMapLoader.load(gainMapUrl, async (buffer) => {\n /* istanbul ignore if\n this condition exists only because of three.js types + strict mode\n */\n if (typeof buffer === 'string')\n throw new Error('Invalid gainmap buffer');\n gainMap = buffer;\n await loadCheck();\n }, (e) => {\n gainMapLengthComputable = e.lengthComputable;\n gainMapLoaded = e.loaded;\n gainMapTotal = e.total;\n progressHandler();\n }, (error) => {\n this.manager.itemError(gainMapUrl);\n if (typeof onError === 'function')\n onError(error);\n });\n const metadataLoader = new FileLoader(this._internalLoadingManager);\n // metadataLoader.setResponseType('json')\n metadataLoader.setRequestHeader(this.requestHeader);\n metadataLoader.setPath(this.path);\n metadataLoader.setWithCredentials(this.withCredentials);\n metadataLoader.load(metadataUrl, async (json) => {\n /* istanbul ignore if\n this condition exists only because of three.js types + strict mode\n */\n if (typeof json !== 'string')\n throw new Error('Invalid metadata string');\n // TODO: implement check on JSON file and remove this eslint disable\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n metadata = JSON.parse(json);\n await loadCheck();\n }, (e) => {\n metadataLengthComputable = e.lengthComputable;\n metadataLoaded = e.loaded;\n metadataTotal = e.total;\n progressHandler();\n }, (error) => {\n this.manager.itemError(metadataUrl);\n if (typeof onError === 'function')\n onError(error);\n });\n return quadRenderer;\n }\n}\n\n/**\n * A Three.js Loader for a JPEG with embedded gainmap metadata.\n *\n * @category Loaders\n * @group Loaders\n *\n * @example\n * import { HDRJPGLoader } from '@monogrid/gainmap-js'\n * import {\n * EquirectangularReflectionMapping,\n * LinearFilter,\n * Mesh,\n * MeshBasicMaterial,\n * PerspectiveCamera,\n * PlaneGeometry,\n * Scene,\n * WebGLRenderer\n * } from 'three'\n *\n * const renderer = new WebGLRenderer()\n *\n * const loader = new HDRJPGLoader(renderer)\n *\n * const result = await loader.loadAsync('gainmap.jpeg')\n * // `result` can be used to populate a Texture\n *\n * const scene = new Scene()\n * const mesh = new Mesh(\n * new PlaneGeometry(),\n * new MeshBasicMaterial({ map: result.renderTarget.texture })\n * )\n * scene.add(mesh)\n * renderer.render(scene, new PerspectiveCamera())\n *\n * // Starting from three.js r159\n * // `result.renderTarget.texture` can\n * // also be used as Equirectangular scene background\n * //\n * // it was previously needed to convert it\n * // to a DataTexture with `result.toDataTexture()`\n * scene.background = result.renderTarget.texture\n * scene.background.mapping = EquirectangularReflectionMapping\n *\n * // result must be manually disposed\n * // when you are done using it\n * result.dispose()\n *\n */\nclass HDRJPGLoader extends LoaderBase {\n /**\n * Loads a JPEG containing gain map metadata\n * Renders a normal SDR image if gainmap data is not found\n *\n * @param url An array in the form of [sdr.jpg, gainmap.jpg, metadata.json]\n * @param onLoad Load complete callback, will receive the result\n * @param onProgress Progress callback, will receive a {@link ProgressEvent}\n * @param onError Error callback\n * @returns\n */\n load(url, onLoad, onProgress, onError) {\n const quadRenderer = this.prepareQuadRenderer();\n const loader = new FileLoader(this._internalLoadingManager);\n loader.setResponseType('arraybuffer');\n loader.setRequestHeader(this.requestHeader);\n loader.setPath(this.path);\n loader.setWithCredentials(this.withCredentials);\n this.manager.itemStart(url);\n loader.load(url, async (jpeg) => {\n /* istanbul ignore if\n this condition exists only because of three.js types + strict mode\n */\n if (typeof jpeg === 'string')\n throw new Error('Invalid buffer, received [string], was expecting [ArrayBuffer]');\n const jpegBuffer = new Uint8Array(jpeg);\n let sdrJPEG;\n let gainMapJPEG;\n let metadata;\n try {\n const extractionResult = await extractGainmapFromJPEG(jpegBuffer);\n // gain map is successfully reconstructed\n sdrJPEG = extractionResult.sdr;\n gainMapJPEG = extractionResult.gainMap;\n metadata = extractionResult.metadata;\n }\n catch (e) {\n // render the SDR version if this is not a gainmap\n if (e instanceof XMPMetadataNotFoundError || e instanceof GainMapNotFoundError) {\n console.warn(`Failure to reconstruct an HDR image from ${url}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`);\n metadata = {\n gainMapMin: [0, 0, 0],\n gainMapMax: [1, 1, 1],\n gamma: [1, 1, 1],\n hdrCapacityMin: 0,\n hdrCapacityMax: 1,\n offsetHdr: [0, 0, 0],\n offsetSdr: [0, 0, 0]\n };\n sdrJPEG = jpegBuffer;\n }\n else {\n throw e;\n }\n }\n // solves #16\n try {\n await this.render(quadRenderer, metadata, sdrJPEG, gainMapJPEG);\n }\n catch (error) {\n this.manager.itemError(url);\n if (typeof onError === 'function')\n onError(error);\n quadRenderer.disposeOnDemandRenderer();\n return;\n }\n if (typeof onLoad === 'function')\n onLoad(quadRenderer);\n this.manager.itemEnd(url);\n quadRenderer.disposeOnDemandRenderer();\n }, onProgress, (error) => {\n this.manager.itemError(url);\n if (typeof onError === 'function')\n onError(error);\n });\n return quadRenderer;\n }\n}\n\nexport { GainMapDecoderMaterial, GainMapLoader, HDRJPGLoader, HDRJPGLoader as JPEGRLoader, MPFExtractor, QuadRenderer, decode, extractGainmapFromJPEG, extractXMP };\n", "import {\n FullScreenMMLScene,\n MMLNetworkSource,\n NetworkedDOMWebsocketStatus,\n NetworkedDOMWebsocketStatusToString,\n parseColorAttribute,\n StatusUI,\n} from \"@mml-io/mml-web\";\nimport {\n StandaloneThreeJSAdapter,\n StandaloneThreeJSAdapterControlsType,\n ThreeJSDragFlyCameraControls,\n ThreeJSOrbitCameraControls,\n} from \"@mml-io/mml-web-threejs-standalone\";\nimport { HDRJPGLoader } from \"@monogrid/gainmap-js\";\nimport * as THREE from \"three\";\n\nimport { calculateContentBounds } from \"./calculateContentBounds\";\nimport { envMaps } from \"./env-maps\";\nimport { FormIteration } from \"./FormIteration\";\nimport { MMLSourceDefinition } from \"./MMLSourceDefinition\";\nimport { parseXYZ } from \"./parseXYZ\";\nimport { setDebugGlobals } from \"./setDebugGlobals\";\nimport {\n ambientLightColorField,\n ambientLightField,\n backgroundColorField,\n cameraFitContents,\n cameraFovField,\n cameraLookAtField,\n cameraModeField,\n cameraOrbitDistanceField,\n cameraOrbitPitchField,\n cameraOrbitSpeedField,\n cameraPositionField,\n environmentMapField,\n} from \"./ui/fields\";\n\nexport class ThreeJSModeInternal {\n private disposed = false;\n\n private loadedState: {\n mmlNetworkSource: MMLNetworkSource;\n graphicsAdapter: StandaloneThreeJSAdapter;\n fullScreenMMLScene: FullScreenMMLScene;\n statusUI: StatusUI;\n } | null = null;\n\n private ambientLight: THREE.AmbientLight | null = null;\n\n public readonly type = \"three\";\n private environmentMap: string | null = null;\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSourceDefinition: MMLSourceDefinition,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n private async init() {\n const fullScreenMMLScene = new FullScreenMMLScene();\n document.body.append(fullScreenMMLScene.element);\n const graphicsAdapter = await StandaloneThreeJSAdapter.create(fullScreenMMLScene.element, {\n controlsType: StandaloneThreeJSAdapterControlsType.DragFly,\n });\n if (this.disposed) {\n graphicsAdapter.dispose();\n return;\n }\n\n fullScreenMMLScene.init(graphicsAdapter);\n const statusUI = new StatusUI();\n const mmlNetworkSource = MMLNetworkSource.create({\n mmlScene: fullScreenMMLScene,\n statusUpdated: (status: NetworkedDOMWebsocketStatus) => {\n if (status === NetworkedDOMWebsocketStatus.Connected) {\n statusUI.setNoStatus();\n } else {\n statusUI.setStatus(NetworkedDOMWebsocketStatusToString(status));\n }\n },\n url: this.mmlSourceDefinition.url,\n windowTarget: this.windowTarget,\n targetForWrappers: this.targetForWrappers,\n });\n setDebugGlobals({\n mmlScene: fullScreenMMLScene,\n remoteDocumentWrapper: mmlNetworkSource.remoteDocumentWrapper,\n });\n const loadingCallback = () => {\n const [, completedLoading] = fullScreenMMLScene.getLoadingProgressManager().toRatio();\n if (completedLoading) {\n fullScreenMMLScene.getLoadingProgressManager().removeProgressCallback(loadingCallback);\n\n const fitContent = this.formIteration.getFieldValue(cameraFitContents);\n if (fitContent === \"true\") {\n graphicsAdapter.controls?.fitContent(calculateContentBounds(this.targetForWrappers));\n }\n }\n };\n fullScreenMMLScene.getLoadingProgressManager().addProgressCallback(loadingCallback);\n this.loadedState = {\n mmlNetworkSource,\n graphicsAdapter,\n fullScreenMMLScene,\n statusUI,\n };\n this.update(this.formIteration);\n }\n\n update(formIteration: FormIteration) {\n this.formIteration = formIteration;\n if (!this.loadedState) {\n return;\n }\n\n const graphicsAdapter = this.loadedState.graphicsAdapter;\n const threeScene = graphicsAdapter.getThreeScene();\n const threeRenderer = graphicsAdapter.getRenderer();\n\n this.setBackgroundColor(formIteration, threeRenderer);\n this.setAmbientLight(formIteration, threeScene);\n this.setAmbientLightColor(formIteration);\n this.setEnvironmentMap(formIteration, threeRenderer, threeScene);\n\n this.setCameraMode(formIteration, graphicsAdapter);\n\n formIteration.completed();\n }\n\n private setEnvironmentMap(\n formIteration: FormIteration,\n threeRenderer: THREE.WebGLRenderer,\n threeScene: THREE.Scene,\n ) {\n let environmentMap = formIteration.getFieldValue(environmentMapField);\n const foundEnvMap = envMaps[environmentMap];\n if (foundEnvMap) {\n environmentMap = foundEnvMap.url;\n }\n if (!environmentMap) {\n threeScene.environment = null;\n threeScene.background = null;\n this.environmentMap = null;\n return;\n }\n if (environmentMap === this.environmentMap) {\n return;\n }\n\n const pmremGenerator = new THREE.PMREMGenerator(threeRenderer);\n const loader = new HDRJPGLoader(threeRenderer);\n loader.loadAsync(environmentMap).then((result) => {\n const hdrJpg = result.renderTarget.texture;\n hdrJpg.mapping = THREE.EquirectangularReflectionMapping;\n\n const envMap = pmremGenerator.fromEquirectangular(hdrJpg).texture;\n threeScene.backgroundIntensity = 1;\n threeScene.backgroundBlurriness = 0;\n threeScene.backgroundRotation = new THREE.Euler(0, -Math.PI / 2, 0);\n threeScene.background = envMap;\n threeScene.environment = envMap;\n result.dispose();\n });\n }\n\n private setAmbientLightColor(formIteration: FormIteration) {\n const ambientLightColorString = formIteration.getFieldValue(ambientLightColorField);\n const color = parseColorAttribute(ambientLightColorString, {\n r: 1,\n g: 1,\n b: 1,\n });\n if (this.ambientLight) {\n this.ambientLight.color.setRGB(color.r, color.g, color.b);\n }\n }\n\n private setAmbientLight(formIteration: FormIteration, threeScene: THREE.Scene) {\n const ambientLightIntensityString = formIteration.getFieldValue(ambientLightField);\n let ambientLightIntensity = parseFloat(ambientLightIntensityString);\n if (isNaN(ambientLightIntensity)) {\n ambientLightIntensity = 0;\n }\n if (ambientLightIntensity < 0) {\n ambientLightIntensity = 0;\n }\n if (this.ambientLight && ambientLightIntensity <= 0) {\n this.ambientLight.removeFromParent();\n this.ambientLight = null;\n }\n if (!this.ambientLight && ambientLightIntensity > 0) {\n this.ambientLight = new THREE.AmbientLight(0xffffff, ambientLightIntensity);\n threeScene.add(this.ambientLight);\n } else if (this.ambientLight) {\n this.ambientLight.intensity = ambientLightIntensity;\n }\n }\n\n private setBackgroundColor(formIteration: FormIteration, threeRenderer: THREE.WebGLRenderer) {\n const backgroundColorString = formIteration.getFieldValue(backgroundColorField);\n const color = parseColorAttribute(backgroundColorString, {\n r: 1,\n g: 1,\n b: 1,\n a: 0,\n });\n threeRenderer.setClearColor(new THREE.Color(color.r, color.g, color.b), color.a);\n }\n\n public dispose() {\n this.disposed = true;\n if (this.loadedState) {\n this.loadedState.mmlNetworkSource.dispose();\n this.loadedState.graphicsAdapter.dispose();\n this.loadedState.fullScreenMMLScene.dispose();\n this.loadedState.statusUI.dispose();\n this.loadedState = null;\n }\n }\n\n private setCameraMode(formIteration: FormIteration, graphicsAdapter: StandaloneThreeJSAdapter) {\n let cameraFOV = parseFloat(formIteration.getFieldValue(cameraFovField));\n if (isNaN(cameraFOV)) {\n cameraFOV = 75;\n }\n graphicsAdapter.setCameraFOV(cameraFOV);\n\n const cameraMode = formIteration.getFieldValue(cameraModeField);\n if (cameraMode === \"orbit\") {\n if (graphicsAdapter.controls?.type !== \"orbit\") {\n graphicsAdapter.setControlsType(StandaloneThreeJSAdapterControlsType.Orbit);\n }\n const controls = graphicsAdapter.controls as ThreeJSOrbitCameraControls;\n let orbitSpeed = parseFloat(formIteration.getFieldValue(cameraOrbitSpeedField));\n if (isNaN(orbitSpeed)) {\n orbitSpeed = 0;\n }\n controls.setDegreesPerSecond(orbitSpeed);\n\n let orbitPitch = parseFloat(formIteration.getFieldValue(cameraOrbitPitchField));\n\n if (isNaN(orbitPitch)) {\n orbitPitch = 0;\n }\n controls.setPitchDegrees(orbitPitch);\n\n const fitContent = formIteration.getFieldValue(cameraFitContents);\n if (fitContent === \"true\") {\n controls.fitContent(calculateContentBounds(this.targetForWrappers));\n } else {\n const lookAt = parseXYZ(formIteration.getFieldValue(cameraLookAtField));\n controls.setLookAt(lookAt[0], lookAt[1], lookAt[2]);\n\n let orbitDistance = parseFloat(formIteration.getFieldValue(cameraOrbitDistanceField));\n if (isNaN(orbitDistance)) {\n orbitDistance = 1;\n }\n controls.setDistance(orbitDistance);\n }\n } else if (cameraMode === \"drag-fly\") {\n if (graphicsAdapter.controls?.type !== \"drag-fly\") {\n graphicsAdapter.setControlsType(StandaloneThreeJSAdapterControlsType.DragFly);\n }\n const controls = graphicsAdapter.controls as ThreeJSDragFlyCameraControls;\n\n const cameraPosition = parseXYZ(formIteration.getFieldValue(cameraPositionField));\n controls.setCameraPosition(cameraPosition[0], cameraPosition[1], cameraPosition[2]);\n\n const lookAt = parseXYZ(formIteration.getFieldValue(cameraLookAtField));\n controls.setLookAt(lookAt[0], lookAt[1], lookAt[2]);\n\n const fitContent = formIteration.getFieldValue(cameraFitContents);\n if (fitContent === \"true\") {\n controls.fitContent(calculateContentBounds(this.targetForWrappers));\n }\n } else if (cameraMode === \"none\" && graphicsAdapter.controls !== null) {\n graphicsAdapter.setControlsType(StandaloneThreeJSAdapterControlsType.None);\n }\n }\n}\n"], + "mappings": "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", + "names": ["max", "radToDeg", "max", "quaternion", "max", "sign", "up", "right", "data", "indices", "intersects", "intersect", "width", "height", "depth", "fov", "aspect", "renderer", "scene", "alpha", "attributes", "precision", "right", "x", "max", "vertexShader", "fragmentShader", "self", "drawBuffers", "scissor", "viewport", "_canvas", "err", "texture", "i", "cameraL", "cameraR", "right2", "cameras", "cameraXR", "info", "_projScreenMatrix", "_vector2", "_vector3", "context", "stencil", "bits", "materials", "currentRenderList", "parameters", "framebuffer", "intersects", "intersect", "intersects", "vertex", "sign", "vertex", "right", "err", "fov", "aspect", "up", "Audio", "now", "intersects", "_color", "worker", "l", "right", "r", "j", "child", "aspect", "fov", "material", "skeleton", "up", "vertex", "quaternion", "textDecoder", "self", "res", "td", "URL", "sourceURI", "node", "max", "accessor", "convertArrayBufferToString", "isFbxFormatASCII", "_ModelLoader", "_a", "_b", "gltf", "_a", "_b", "_ThreeJSChatProbe", "_ThreeJSCube", "_ThreeJSCylinder", "_ThreeJSFrame", "_ThreeJSImage", "LoadingInstanceManager", "Image", "_ThreeJSInteraction", "_ThreeJSLabel", "_ThreeJSModel", "err", "_ThreeJSPlane", "_ThreeJSPositionProbe", "CanvasText", "_ThreeJSSphere", "audioRefDistance", "audioRolloffFactor", "calculateContentSize", "MElement", "TransformableElement", "_ThreeJSInteractionAdapter", "fov", "clamp", "max", "quaternion", "EventHandlerCollection", "Vector3", "StandaloneThreeJSAdapterControlsType", "_a", "_b", "_q", "_a", "_b"] +} diff --git a/pull/212/v1/chunk-CPWJBFSW.js b/pull/212/v1/chunk-CPWJBFSW.js new file mode 100644 index 00000000..728152f4 --- /dev/null +++ b/pull/212/v1/chunk-CPWJBFSW.js @@ -0,0 +1,78 @@ +import { + TransformableElement +} from "./chunk-OGDCF6KN.js"; + +// src/calculateContentBounds.ts +function calculateContentBounds(rootElement) { + let minX = null; + let minY = null; + let minZ = null; + let maxX = null; + let maxY = null; + let maxZ = null; + const traverse = (element) => { + if (element instanceof TransformableElement) { + const bounds = element.getContentBounds(); + if (bounds) { + bounds.getCorners().forEach((corner) => { + if (minX === null || corner.x < minX) { + minX = corner.x; + } + if (minY === null || corner.y < minY) { + minY = corner.y; + } + if (minZ === null || corner.z < minZ) { + minZ = corner.z; + } + if (maxX === null || corner.x > maxX) { + maxX = corner.x; + } + if (maxY === null || corner.y > maxY) { + maxY = corner.y; + } + if (maxZ === null || corner.z > maxZ) { + maxZ = corner.z; + } + }); + } + } + element.childNodes.forEach((child) => { + traverse(child); + }); + }; + traverse(rootElement); + if (minX === null || minY === null || minZ === null || maxX === null || maxY === null || maxZ === null) { + return { + min: { x: -0.5, y: -0.5, z: -0.5 }, + max: { x: 0.5, y: 0.5, z: 0.5 } + }; + } + return { + min: { x: minX, y: minY, z: minZ }, + max: { x: maxX, y: maxY, z: maxZ } + }; +} + +// src/env-maps/cloudysky_2k.jpg +var cloudysky_2k_default = "./cloudysky_2k-WS2HEI54.jpg"; + +// src/env-maps/index.ts +var envMaps = { + cloudysky: { + name: "Cloudy Sky", + url: cloudysky_2k_default + } +}; + +// src/parseXYZ.ts +function parseXYZ(str) { + const asNumbers = str.split(",").slice(0, 3).map(parseFloat).map((v) => isNaN(v) ? 0 : v); + return [asNumbers[0] || 0, asNumbers[1] || 0, asNumbers[2] || 0]; +} + +export { + calculateContentBounds, + envMaps, + parseXYZ +}; +//# sourceMappingURL=chunk-CPWJBFSW.js.map diff --git a/pull/212/v1/chunk-CPWJBFSW.js.map b/pull/212/v1/chunk-CPWJBFSW.js.map new file mode 100644 index 00000000..91830e34 --- /dev/null +++ b/pull/212/v1/chunk-CPWJBFSW.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../src/calculateContentBounds.ts", "../src/env-maps/index.ts", "../src/parseXYZ.ts"], + "sourcesContent": ["import { IVect3, TransformableElement } from \"@mml-io/mml-web\";\n\nexport function calculateContentBounds(rootElement: Element): { min: IVect3; max: IVect3 } {\n let minX: number | null = null;\n let minY: number | null = null;\n let minZ: number | null = null;\n let maxX: number | null = null;\n let maxY: number | null = null;\n let maxZ: number | null = null;\n const traverse = (element: ChildNode) => {\n if (element instanceof TransformableElement) {\n const bounds = element.getContentBounds();\n if (bounds) {\n bounds.getCorners().forEach((corner) => {\n if (minX === null || corner.x < minX) {\n minX = corner.x;\n }\n if (minY === null || corner.y < minY) {\n minY = corner.y;\n }\n if (minZ === null || corner.z < minZ) {\n minZ = corner.z;\n }\n if (maxX === null || corner.x > maxX) {\n maxX = corner.x;\n }\n if (maxY === null || corner.y > maxY) {\n maxY = corner.y;\n }\n if (maxZ === null || corner.z > maxZ) {\n maxZ = corner.z;\n }\n });\n }\n }\n element.childNodes.forEach((child) => {\n traverse(child);\n });\n };\n traverse(rootElement);\n if (\n minX === null ||\n minY === null ||\n minZ === null ||\n maxX === null ||\n maxY === null ||\n maxZ === null\n ) {\n // Return a default bounding box if no content was found\n return {\n min: { x: -0.5, y: -0.5, z: -0.5 },\n max: { x: 0.5, y: 0.5, z: 0.5 },\n };\n }\n\n return {\n min: { x: minX, y: minY, z: minZ },\n max: { x: maxX, y: maxY, z: maxZ },\n };\n}\n", "type EnvMap = {\n name: string;\n url: string;\n};\n\nimport cloudysky from \"./cloudysky_2k.jpg\";\n\nexport const envMaps: {\n [key: string]: EnvMap;\n} = {\n cloudysky: {\n name: \"Cloudy Sky\",\n url: cloudysky,\n },\n};\n", "export function parseXYZ(str: string): [number, number, number] {\n const asNumbers = str\n .split(\",\")\n .slice(0, 3)\n .map(parseFloat)\n .map((v) => (isNaN(v) ? 0 : v)) as [number, number, number];\n return [asNumbers[0] || 0, asNumbers[1] || 0, asNumbers[2] || 0];\n}\n"], + "mappings": ";;;;;AAEO,SAAS,uBAAuB,aAAoD;AACzF,MAAI,OAAsB;AAC1B,MAAI,OAAsB;AAC1B,MAAI,OAAsB;AAC1B,MAAI,OAAsB;AAC1B,MAAI,OAAsB;AAC1B,MAAI,OAAsB;AAC1B,QAAM,WAAW,CAAC,YAAuB;AACvC,QAAI,mBAAmB,sBAAsB;AAC3C,YAAM,SAAS,QAAQ,iBAAiB;AACxC,UAAI,QAAQ;AACV,eAAO,WAAW,EAAE,QAAQ,CAAC,WAAW;AACtC,cAAI,SAAS,QAAQ,OAAO,IAAI,MAAM;AACpC,mBAAO,OAAO;AAAA,UAChB;AACA,cAAI,SAAS,QAAQ,OAAO,IAAI,MAAM;AACpC,mBAAO,OAAO;AAAA,UAChB;AACA,cAAI,SAAS,QAAQ,OAAO,IAAI,MAAM;AACpC,mBAAO,OAAO;AAAA,UAChB;AACA,cAAI,SAAS,QAAQ,OAAO,IAAI,MAAM;AACpC,mBAAO,OAAO;AAAA,UAChB;AACA,cAAI,SAAS,QAAQ,OAAO,IAAI,MAAM;AACpC,mBAAO,OAAO;AAAA,UAChB;AACA,cAAI,SAAS,QAAQ,OAAO,IAAI,MAAM;AACpC,mBAAO,OAAO;AAAA,UAChB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,YAAQ,WAAW,QAAQ,CAAC,UAAU;AACpC,eAAS,KAAK;AAAA,IAChB,CAAC;AAAA,EACH;AACA,WAAS,WAAW;AACpB,MACE,SAAS,QACT,SAAS,QACT,SAAS,QACT,SAAS,QACT,SAAS,QACT,SAAS,MACT;AAEA,WAAO;AAAA,MACL,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,MACjC,KAAK,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI;AAAA,IAChC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,IACjC,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,EACnC;AACF;;;;;;ACpDO,IAAM,UAET;AAAA,EACF,WAAW;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,EACP;AACF;;;ACdO,SAAS,SAAS,KAAuC;AAC9D,QAAM,YAAY,IACf,MAAM,GAAG,EACT,MAAM,GAAG,CAAC,EACV,IAAI,UAAU,EACd,IAAI,CAAC,MAAO,MAAM,CAAC,IAAI,IAAI,CAAE;AAChC,SAAO,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AACjE;", + "names": [] +} diff --git a/pull/212/v1/chunk-OGDCF6KN.js b/pull/212/v1/chunk-OGDCF6KN.js new file mode 100644 index 00000000..1082239f --- /dev/null +++ b/pull/212/v1/chunk-OGDCF6KN.js @@ -0,0 +1,9500 @@ +// ../../node_modules/@mml-io/networked-dom-protocol/build/index.js +var networkedDOMProtocolSubProtocol_v0_1 = "networked-dom-v0.1"; +var textDecoder = new TextDecoder(); +var BufferReader = class { + constructor(buffer) { + this.buffer = buffer; + this.offset = 0; + } + readUInt8() { + return this.buffer[this.offset++]; + } + readBoolean() { + return this.readUInt8() === 1; + } + readUVarint(signed = false) { + let lo = 0; + let hi = 0; + let i = 0; + for (; i < 4; ++i) { + lo = (lo | (this.buffer[this.offset] & 127) << i * 7) >>> 0; + if (this.buffer[this.offset++] < 128) { + return signed ? loAndHiAsSigned(lo, hi) : loAndHiAsUnsigned(lo, hi); + } + } + lo = (lo | (this.buffer[this.offset] & 127) << 28) >>> 0; + hi = (hi | (this.buffer[this.offset] & 127) >> 4) >>> 0; + if (this.buffer[this.offset++] < 128) { + return signed ? loAndHiAsSigned(lo, hi) : loAndHiAsUnsigned(lo, hi); + } + i = 0; + for (; i < 5; ++i) { + hi = (hi | (this.buffer[this.offset] & 127) << i * 7 + 3) >>> 0; + if (this.buffer[this.offset++] < 128) { + return signed ? loAndHiAsSigned(lo, hi) : loAndHiAsUnsigned(lo, hi); + } + } + throw Error("invalid varint encoding"); + } + readUVarintPrefixedString() { + const readLength = this.readUVarint(); + let string = ""; + let hasNonAscii = false; + for (let i = 0; i < readLength; i++) { + const charValue = this.buffer[this.offset + i]; + if (charValue < 128) { + string += String.fromCharCode(charValue); + } else { + hasNonAscii = true; + break; + } + } + if (!hasNonAscii) { + this.offset += readLength; + return string; + } + const result = textDecoder.decode(this.buffer.subarray(this.offset, this.offset + readLength)); + this.offset += readLength; + return result; + } + // returns the string and a boolean indicating if the string was negative length + readVarintPrefixedString() { + const length = this.readVarint(); + const negativeLength = length < 0; + const readLength = negativeLength ? -length : length; + let string = ""; + let hasNonAscii = false; + for (let i = 0; i < readLength; i++) { + const charValue = this.buffer[this.offset + i]; + if (charValue < 128) { + string += String.fromCharCode(charValue); + } else { + hasNonAscii = true; + break; + } + } + if (!hasNonAscii) { + this.offset += readLength; + return [string, negativeLength]; + } + const result = textDecoder.decode(this.buffer.subarray(this.offset, this.offset + readLength)); + this.offset += readLength; + return [result, negativeLength]; + } + readVarint() { + return this.readUVarint(true); + } + isEnd() { + return this.offset >= this.buffer.length; + } +}; +function loAndHiAsSigned(lo, hi) { + const value = lo + hi * 4294967296; + if (value & 1) { + return -(value + 1) / 2; + } + return value / 2; +} +function loAndHiAsUnsigned(lo, hi) { + return lo + hi * 4294967296; +} +var textEncoder = new TextEncoder(); +var BufferWriter = class { + constructor(initialLength) { + this.buffer = new Uint8Array(initialLength); + this.offset = 0; + } + // Write an unsigned 8-bit integer + writeUint8(value) { + this.ensureCapacity(1); + this.buffer[this.offset] = value & 255; + this.offset += 1; + } + writeBoolean(bool) { + this.writeUint8(bool ? 1 : 0); + } + // Write an array of bytes + writeBytes(bytes) { + this.ensureCapacity(bytes.byteLength); + this.buffer.set(bytes, this.offset); + this.offset += bytes.byteLength; + } + // Get the written bytes as a Uint8Array + getBuffer() { + return this.buffer.subarray(0, this.offset); + } + getWrittenLength() { + return this.offset; + } + // Ensure there is enough capacity in the buffer + ensureCapacity(neededSpace) { + while (this.offset + neededSpace > this.buffer.length) { + this.expandBuffer(); + } + } + // Expand the buffer by doubling its current length + expandBuffer() { + const newBuffer = new Uint8Array(this.buffer.length * 2); + newBuffer.set(this.buffer); + this.buffer = newBuffer; + } + writeUVarint(x) { + if (x <= 268435455) { + this.ensureCapacity(4); + while (x >= 128) { + this.buffer[this.offset] = x & 127 | 128; + this.offset++; + x >>>= 7; + } + this.buffer[this.offset] = x & 127; + this.offset++; + return; + } + this.ensureCapacity(10); + let lo = 0; + let hi = 0; + if (x !== 0) { + lo = x >>> 0; + hi = (x - lo) / 4294967296 >>> 0; + } + while (hi) { + this.buffer[this.offset++] = lo & 127 | 128; + lo = (lo >>> 7 | hi << 25) >>> 0; + hi >>>= 7; + } + while (lo > 127) { + this.buffer[this.offset++] = lo & 127 | 128; + lo = lo >>> 7; + } + this.buffer[this.offset++] = lo; + } + writeVarint(x) { + if (x >= 0) { + this.writeUVarint(x * 2); + } else { + this.writeUVarint(-x * 2 - 1); + } + } + writeLengthPrefixedString(value, varint = false, negativeLength = false) { + const originalOffset = this.offset; + if (varint) { + this.writeVarint(negativeLength ? -value.length : value.length); + } else { + this.writeUVarint(value.length); + } + this.ensureCapacity(value.length); + let nonAscii = false; + for (let i = 0; i < value.length; i++) { + const charCode = value.charCodeAt(i); + if (charCode > 127) { + nonAscii = true; + break; + } + this.buffer[this.offset++] = charCode; + } + if (!nonAscii) { + return; + } + this.offset = originalOffset; + let encodedLength = value.length; + this.ensureCapacity(encodedLength); + while (true) { + this.offset = originalOffset; + if (varint) { + this.writeVarint(negativeLength ? -encodedLength : encodedLength); + } else { + this.writeUVarint(encodedLength); + } + const offsetAfterVarint = this.offset; + const varintLength = offsetAfterVarint - originalOffset; + const writeBuffer = new Uint8Array(this.buffer.buffer, this.offset); + const { read, written } = textEncoder.encodeInto(value, writeBuffer); + if (read !== value.length) { + this.expandBuffer(); + continue; + } + if (written !== encodedLength) { + encodedLength = written; + this.offset = originalOffset; + if (varint) { + this.writeVarint(negativeLength ? -encodedLength : encodedLength); + } else { + this.writeUVarint(encodedLength); + } + const newOffsetAfterVarint = this.offset; + const actualVarintLength = newOffsetAfterVarint - originalOffset; + if (actualVarintLength !== varintLength) { + continue; + } else { + } + } + this.offset += written; + return; + } + } +}; +function decodeAttributes(buffer) { + const attributesLength = buffer.readUVarint(); + const attributes = []; + for (let i = 0; i < attributesLength; i++) { + const [key, negativeLength] = buffer.readVarintPrefixedString(); + if (negativeLength) { + attributes.push([key, null]); + continue; + } + const value = buffer.readUVarintPrefixedString(); + attributes.push([key, value]); + } + return attributes; +} +function decodeNodeDescription(buffer) { + const nodeId = buffer.readUVarint(); + const tag = buffer.readUVarintPrefixedString(); + if (tag === "") { + const text = buffer.readUVarintPrefixedString(); + return { type: "text", nodeId, text }; + } + const attributes = decodeAttributes(buffer); + const visibleToLength = buffer.readUVarint(); + let visibleTo; + if (visibleToLength !== 0) { + visibleTo = []; + for (let i = 0; i < visibleToLength; i++) { + visibleTo.push(buffer.readUVarint()); + } + } + const hiddenFromLength = buffer.readUVarint(); + let hiddenFrom; + if (hiddenFromLength !== 0) { + hiddenFrom = []; + for (let i = 0; i < hiddenFromLength; i++) { + hiddenFrom.push(buffer.readUVarint()); + } + } + const childrenLength = buffer.readUVarint(); + const children = []; + for (let i = 0; i < childrenLength; i++) { + children.push(decodeNodeDescription(buffer)); + } + const node = { + type: "element", + nodeId, + tag, + attributes, + children + }; + if (visibleTo) { + node.visibleTo = visibleTo; + } + if (hiddenFrom) { + node.hiddenFrom = hiddenFrom; + } + return node; +} +var networkedDOMProtocolSubProtocol_v0_2 = "networked-dom-v0.2"; +var SnapshotMessageType = 1; +var BatchStartMessageType = 2; +var DocumentTimeMessageType = 3; +var ChildrenAddedMessageType = 4; +var ChildrenRemovedMessageType = 5; +var AttributesChangedMessageType = 6; +var ChangeVisibleToMessageType = 7; +var ChangeHiddenFromMessageType = 8; +var TextChangedMessageType = 9; +var BatchEndMessageType = 10; +var PingMessageType = 11; +var WarningMessageType = 12; +var ErrorMessageType = 13; +var ConnectUsersMessageType = 14; +var DisconnectUsersMessageType = 15; +var EventMessageType = 16; +var PongMessageType = 17; +function encodeConnectUsers(connectUsersMessage, writer) { + const connectionIdsLength = connectUsersMessage.connectionIds.length; + writer.writeUint8(ConnectUsersMessageType); + writer.writeUVarint(connectionIdsLength); + for (let i = 0; i < connectionIdsLength; i++) { + writer.writeUVarint(connectUsersMessage.connectionIds[i]); + } +} +function encodeDisconnectUsers(disconnectUsersMessage, writer) { + const connectionIdsLength = disconnectUsersMessage.connectionIds.length; + writer.writeUint8(DisconnectUsersMessageType); + writer.writeUVarint(connectionIdsLength); + for (let i = 0; i < connectionIdsLength; i++) { + writer.writeUVarint(disconnectUsersMessage.connectionIds[i]); + } +} +function encodeEvent(event, writer) { + writer.writeUint8(EventMessageType); + writer.writeUVarint(event.nodeId); + writer.writeUVarint(event.connectionId); + writer.writeLengthPrefixedString(event.name); + writer.writeBoolean(event.bubbles); + writer.writeLengthPrefixedString(JSON.stringify(event.params)); +} +function encodePong(pongMessage, writer) { + writer.writeUint8(PongMessageType); + writer.writeUVarint(pongMessage.pong); +} +function decodeAttributesChanged(buffer) { + const nodeId = buffer.readUVarint(); + const attributes = decodeAttributes(buffer); + return { + type: "attributesChanged", + nodeId, + attributes + }; +} +var batchEndMessage = { + type: "batchEnd" +}; +var batchStartMessage = { + type: "batchStart" +}; +function decodeChangeHiddenFrom(buffer) { + const nodeId = buffer.readUVarint(); + const addHiddenFromLength = buffer.readUVarint(); + const addHiddenFrom = []; + for (let i = 0; i < addHiddenFromLength; i++) { + addHiddenFrom.push(buffer.readUVarint()); + } + const removeHiddenFromLength = buffer.readUVarint(); + const removeHiddenFrom = []; + for (let i = 0; i < removeHiddenFromLength; i++) { + removeHiddenFrom.push(buffer.readUVarint()); + } + return { + type: "changeHiddenFrom", + nodeId, + addHiddenFrom, + removeHiddenFrom + }; +} +function decodeChangeVisibleTo(buffer) { + const nodeId = buffer.readUVarint(); + const addVisibleToLength = buffer.readUVarint(); + const addVisibleTo = []; + for (let i = 0; i < addVisibleToLength; i++) { + addVisibleTo.push(buffer.readUVarint()); + } + const removeVisibleToLength = buffer.readUVarint(); + const removeVisibleTo = []; + for (let i = 0; i < removeVisibleToLength; i++) { + removeVisibleTo.push(buffer.readUVarint()); + } + return { + type: "changeVisibleTo", + nodeId, + addVisibleTo, + removeVisibleTo + }; +} +function decodeChildrenAdded(buffer) { + const nodeId = buffer.readUVarint(); + const previousNodeId = buffer.readUVarint(); + const childrenLength = buffer.readUVarint(); + const children = []; + for (let i = 0; i < childrenLength; i++) { + children.push(decodeNodeDescription(buffer)); + } + return { + type: "childrenAdded", + nodeId, + previousNodeId: previousNodeId === 0 ? null : previousNodeId, + addedNodes: children + }; +} +function decodeChildrenRemoved(buffer) { + const nodeId = buffer.readUVarint(); + const removedNodesLength = buffer.readUVarint(); + const removedNodes = []; + for (let i = 0; i < removedNodesLength; i++) { + removedNodes.push(buffer.readUVarint()); + } + return { + type: "childrenRemoved", + nodeId, + removedNodes + }; +} +function decodeDocumentTime(buffer) { + return { + type: "documentTime", + documentTime: buffer.readUVarint() + }; +} +function decodeError(buffer) { + const message = buffer.readUVarintPrefixedString(); + return { + type: "error", + message + }; +} +function decodePing(buffer) { + const ping = buffer.readUVarint(); + const documentTime = buffer.readUVarint(); + return { + type: "ping", + ping, + documentTime + }; +} +function decodeSnapshot(buffer) { + return { + type: "snapshot", + snapshot: decodeNodeDescription(buffer), + documentTime: buffer.readUVarint() + }; +} +function decodeTextChanged(buffer) { + const nodeId = buffer.readUVarint(); + const text = buffer.readUVarintPrefixedString(); + return { + type: "textChanged", + nodeId, + text + }; +} +function decodeWarning(buffer) { + const message = buffer.readUVarintPrefixedString(); + return { + type: "warning", + message + }; +} +function decodeServerMessages(buffer) { + const messages = []; + while (!buffer.isEnd()) { + const messageType = buffer.readUInt8(); + switch (messageType) { + case SnapshotMessageType: + messages.push(decodeSnapshot(buffer)); + break; + case DocumentTimeMessageType: + messages.push(decodeDocumentTime(buffer)); + break; + case ChildrenAddedMessageType: + messages.push(decodeChildrenAdded(buffer)); + break; + case ChildrenRemovedMessageType: + messages.push(decodeChildrenRemoved(buffer)); + break; + case AttributesChangedMessageType: + messages.push(decodeAttributesChanged(buffer)); + break; + case TextChangedMessageType: + messages.push(decodeTextChanged(buffer)); + break; + case ChangeVisibleToMessageType: + messages.push(decodeChangeVisibleTo(buffer)); + break; + case ChangeHiddenFromMessageType: + messages.push(decodeChangeHiddenFrom(buffer)); + break; + case BatchStartMessageType: + messages.push(batchStartMessage); + break; + case BatchEndMessageType: + messages.push(batchEndMessage); + break; + case PingMessageType: + messages.push(decodePing(buffer)); + break; + case WarningMessageType: + messages.push(decodeWarning(buffer)); + break; + case ErrorMessageType: + messages.push(decodeError(buffer)); + break; + default: + throw new Error(`Unknown message type: ${messageType}`); + } + } + return messages; +} +function encodeClientMessage(message, writer) { + const type = message.type; + switch (type) { + case "connectUsers": + return encodeConnectUsers(message, writer); + case "disconnectUsers": + return encodeDisconnectUsers(message, writer); + case "event": + return encodeEvent(message, writer); + case "pong": + return encodePong(message, writer); + default: + throw new Error(`Unknown message type: ${type}`); + } +} + +// ../../node_modules/@mml-io/networked-dom-web/build/index.js +var DOMSanitizer = class _DOMSanitizer { + static sanitise(node, options = {}) { + if (node.getAttributeNames) { + for (const attr of node.getAttributeNames()) { + if (!_DOMSanitizer.IsValidAttributeName(attr)) { + node.removeAttribute(attr); + } + } + } + if (node instanceof HTMLElement) { + if (options.tagPrefix) { + const tag = node.nodeName.toLowerCase(); + if (!tag.startsWith(options.tagPrefix.toLowerCase())) { + node = _DOMSanitizer.replaceNodeTagName( + node, + options.replacementTagPrefix ? options.replacementTagPrefix + tag : `x-${tag}` + ); + } + } + } + if (node.nodeName === "SCRIPT" || node.nodeName === "OBJECT" || node.nodeName === "IFRAME") { + node.innerHTML = ""; + _DOMSanitizer.stripAllAttributes(node); + } else { + if (node.getAttributeNames) { + for (const attr of node.getAttributeNames()) { + if (!_DOMSanitizer.shouldAcceptAttribute(attr)) { + node.removeAttribute(attr); + } + } + } + for (let i = 0; i < node.childNodes.length; i++) { + _DOMSanitizer.sanitise(node.childNodes[i], options); + } + } + return node; + } + static replaceNodeTagName(node, newTagName) { + var _a; + const replacementNode = document.createElement(newTagName); + let index; + while (node.firstChild) { + replacementNode.appendChild(node.firstChild); + } + for (index = node.attributes.length - 1; index >= 0; --index) { + replacementNode.setAttribute(node.attributes[index].name, node.attributes[index].value); + } + (_a = node.parentNode) == null ? void 0 : _a.replaceChild(replacementNode, node); + return replacementNode; + } + static stripAllAttributes(node) { + if (node.getAttributeNames) { + for (const attr of node.getAttributeNames()) { + node.removeAttribute(attr); + } + } + } + static IsASCIIDigit(c) { + return c >= "0" && c <= "9"; + } + static IsASCIIAlpha(c) { + return c >= "a" && c <= "z"; + } + static IsValidAttributeName(characters) { + const c = characters[0]; + if (!(_DOMSanitizer.IsASCIIAlpha(c) || c === ":" || c === "_")) { + return false; + } + for (let i = 1; i < characters.length; i++) { + const c2 = characters[i]; + if (!(_DOMSanitizer.IsASCIIDigit(c2) || _DOMSanitizer.IsASCIIAlpha(c2) || c2 === ":" || c2 === "_" || c2 === "-" || c2 === ".")) { + return false; + } + } + return true; + } + static shouldAcceptAttribute(attribute) { + if (!_DOMSanitizer.IsValidAttributeName(attribute)) { + console.warn("Invalid attribute name", attribute); + return false; + } + return !attribute.startsWith("on"); + } +}; +var NetworkedDOMWebsocketV01Adapter = class { + constructor(websocket, parentElement, connectedCallback, timeCallback, options = {}) { + this.websocket = websocket; + this.parentElement = parentElement; + this.connectedCallback = connectedCallback; + this.timeCallback = timeCallback; + this.options = options; + this.idToElement = /* @__PURE__ */ new Map(); + this.elementToId = /* @__PURE__ */ new Map(); + this.currentRoot = null; + this.websocket.binaryType = "arraybuffer"; + } + handleEvent(element, event) { + const nodeId = this.elementToId.get(element); + if (nodeId === void 0 || nodeId === null) { + throw new Error("Element not found"); + } + const detailWithoutElement = { + ...event.detail + }; + delete detailWithoutElement.element; + const remoteEvent = { + type: "event", + nodeId, + name: event.type, + bubbles: event.bubbles, + params: detailWithoutElement + }; + this.send(remoteEvent); + } + send(fromClientMessage) { + this.websocket.send(JSON.stringify(fromClientMessage)); + } + clearContents() { + this.idToElement.clear(); + this.elementToId.clear(); + if (this.currentRoot) { + this.currentRoot.remove(); + this.currentRoot = null; + return true; + } + return false; + } + receiveMessage(event) { + const messages = JSON.parse(event.data); + for (const message of messages) { + switch (message.type) { + case "error": + console.error("Error from server", message); + break; + case "warning": + console.warn("Warning from server", message); + break; + default: { + if (message.documentTime) { + if (this.timeCallback) { + this.timeCallback(message.documentTime); + } + } + switch (message.type) { + case "snapshot": + this.handleSnapshot(message); + this.connectedCallback(); + break; + case "attributeChange": + this.handleAttributeChange(message); + break; + case "childrenChanged": + this.handleChildrenChanged(message); + break; + case "textChanged": + this.handleTextChanged(message); + break; + case "ping": + this.send({ + type: "pong", + pong: message.ping + }); + break; + default: + console.warn("unknown message type", message); + break; + } + } + } + } + } + handleTextChanged(message) { + const { nodeId, text } = message; + if (nodeId === void 0 || nodeId === null) { + console.warn("No nodeId in textChanged message"); + return; + } + const node = this.idToElement.get(nodeId); + if (!node) { + throw new Error("No node found for textChanged message"); + } + if (!isText(node, this.parentElement)) { + throw new Error("Node for textChanged message is not a Text node"); + } + node.textContent = text; + } + handleChildrenChanged(message) { + const { nodeId, addedNodes, removedNodes, previousNodeId } = message; + if (nodeId === void 0 || nodeId === null) { + console.warn("No nodeId in childrenChanged message"); + return; + } + const parent = this.idToElement.get(nodeId); + if (!parent) { + throw new Error("No parent found for childrenChanged message"); + } + if (!parent.isConnected) { + console.error("Parent is not connected", parent); + } + if (!isHTMLElement(parent, this.parentElement)) { + throw new Error("Parent is not an HTMLElement (that supports children)"); + } + let nextElement = null; + let previousElement = null; + if (previousNodeId) { + previousElement = this.idToElement.get(previousNodeId); + if (!previousElement) { + throw new Error("No previous element found for childrenChanged message"); + } + nextElement = previousElement.nextSibling; + } + const elementsToAdd = []; + for (const addedNode of addedNodes) { + const childElement = this.handleNewElement(addedNode); + if (childElement) { + elementsToAdd.push(childElement); + } + } + if (elementsToAdd.length) { + if (previousElement) { + if (nextElement) { + const docFrag = new DocumentFragment(); + docFrag.append(...elementsToAdd); + parent.insertBefore(docFrag, nextElement); + } else { + parent.append(...elementsToAdd); + } + } else { + parent.prepend(...elementsToAdd); + } + } + for (const removedNode of removedNodes) { + const childElement = this.idToElement.get(removedNode); + if (!childElement) { + throw new Error(`Child element not found: ${removedNode}`); + } + this.elementToId.delete(childElement); + this.idToElement.delete(removedNode); + parent.removeChild(childElement); + if (isHTMLElement(childElement, this.parentElement)) { + this.removeChildElementIds(childElement); + } + } + } + removeChildElementIds(parent) { + for (let i = 0; i < parent.children.length; i++) { + const child = parent.children[i]; + const childId = this.elementToId.get(child); + if (!childId) { + console.error("Inner child of removed element had no id", child); + } else { + this.elementToId.delete(child); + this.idToElement.delete(childId); + } + this.removeChildElementIds(child); + } + } + handleSnapshot(message) { + if (this.currentRoot) { + this.currentRoot.remove(); + this.currentRoot = null; + this.elementToId.clear(); + this.idToElement.clear(); + } + const element = this.handleNewElement(message.snapshot); + if (!element) { + throw new Error("Snapshot element not created"); + } + if (!isHTMLElement(element, this.parentElement)) { + throw new Error("Snapshot element is not an HTMLElement"); + } + this.currentRoot = element; + this.parentElement.append(element); + } + handleAttributeChange(message) { + const { nodeId, attribute, newValue } = message; + if (nodeId === void 0 || nodeId === null) { + console.warn("No nodeId in attributeChange message"); + return; + } + const element = this.idToElement.get(nodeId); + if (element) { + if (isHTMLElement(element, this.parentElement)) { + if (newValue === null) { + element.removeAttribute(attribute); + } else { + if (DOMSanitizer.shouldAcceptAttribute(attribute)) { + element.setAttribute(attribute, newValue); + } + } + } else { + console.error("Element is not an HTMLElement and cannot support attributes", element); + } + } else { + console.error("No element found for attributeChange message"); + } + } + handleNewElement(message) { + if (message.type === "text") { + const { nodeId: nodeId2, text: text2 } = message; + const textNode = document.createTextNode(""); + textNode.textContent = text2; + this.idToElement.set(nodeId2, textNode); + this.elementToId.set(textNode, nodeId2); + return textNode; + } + const { tag, nodeId, attributes, children, text } = message; + if (nodeId === void 0 || nodeId === null) { + console.warn("No nodeId in handleNewElement message", message); + return null; + } + if (this.idToElement.has(nodeId)) { + console.error( + "Received nodeId to add that is already present", + nodeId, + this.idToElement.get(nodeId) + ); + } + if (tag === "#text") { + const textNode = document.createTextNode(""); + textNode.textContent = text || null; + this.idToElement.set(nodeId, textNode); + this.elementToId.set(textNode, nodeId); + return textNode; + } + let element; + try { + let filteredTag = tag; + if (this.options.tagPrefix) { + if (!tag.toLowerCase().startsWith(this.options.tagPrefix.toLowerCase())) { + filteredTag = this.options.replacementTagPrefix ? this.options.replacementTagPrefix + tag : `x-${tag}`; + } + } + element = document.createElement(filteredTag); + } catch (e) { + console.error(`Error creating element: (${tag})`, e); + element = document.createElement("x-div"); + } + this.idToElement.set(nodeId, element); + this.elementToId.set(element, nodeId); + for (const key in attributes) { + if (DOMSanitizer.shouldAcceptAttribute(key)) { + const value = attributes[key]; + element.setAttribute(key, value); + } + } + if (children) { + for (const child of children) { + const childElement = this.handleNewElement(child); + if (childElement) { + element.append(childElement); + } + } + } + return element; + } +}; +var connectionId = 1; +var hiddenTag = "x-hidden"; +var NetworkedDOMWebsocketV02Adapter = class { + constructor(websocket, parentElement, connectedCallback, timeCallback, options = {}) { + this.websocket = websocket; + this.parentElement = parentElement; + this.connectedCallback = connectedCallback; + this.timeCallback = timeCallback; + this.options = options; + this.idToElement = /* @__PURE__ */ new Map(); + this.elementToId = /* @__PURE__ */ new Map(); + this.hiddenPlaceholderElements = /* @__PURE__ */ new Map(); + this.currentRoot = null; + this.batchMode = false; + this.batchMessages = []; + this.websocket.binaryType = "arraybuffer"; + this.send({ type: "connectUsers", connectionIds: [connectionId] }); + } + handleEvent(element, event) { + const nodeId = this.elementToId.get(element); + if (nodeId === void 0 || nodeId === null) { + throw new Error("Element not found"); + } + const detailWithoutElement = { + ...event.detail + }; + delete detailWithoutElement.element; + const remoteEvent = { + type: "event", + nodeId, + connectionId, + name: event.type, + bubbles: event.bubbles, + params: detailWithoutElement + }; + this.send(remoteEvent); + } + send(message) { + const writer = new BufferWriter(256); + encodeClientMessage(message, writer); + this.websocket.send(writer.getBuffer()); + } + clearContents() { + this.idToElement.clear(); + this.elementToId.clear(); + if (this.currentRoot) { + this.currentRoot.remove(); + this.currentRoot = null; + return true; + } + return false; + } + receiveMessage(event) { + const reader = new BufferReader(new Uint8Array(event.data)); + const messages = decodeServerMessages(reader); + for (const message of messages) { + if (message.type === "batchStart") { + this.batchMode = true; + } else if (message.type === "batchEnd") { + this.batchMode = false; + for (const message2 of this.batchMessages) { + this.applyMessage(message2); + } + this.batchMessages = []; + } else { + if (this.batchMode) { + this.batchMessages.push(message); + } else { + this.applyMessage(message); + } + } + } + } + applyMessage(message) { + switch (message.type) { + case "error": + console.error("Error from server", message); + break; + case "warning": + console.warn("Warning from server", message); + break; + case "snapshot": + this.handleSnapshot(message); + this.connectedCallback(); + break; + case "attributesChanged": + this.handleAttributeChange(message); + break; + case "documentTime": + this.handleDocumentTime(message); + break; + case "childrenAdded": + this.handleChildrenAdded(message); + break; + case "changeHiddenFrom": + this.handleChangeHiddenFrom(message); + break; + case "childrenRemoved": + this.handleChildrenRemoved(message); + break; + case "textChanged": + this.handleTextChanged(message); + break; + case "ping": + this.handlePing(message); + break; + default: + console.warn("unknown message type", message); + break; + } + } + handleTextChanged(message) { + const { nodeId, text } = message; + if (nodeId === void 0 || nodeId === null) { + console.warn("No nodeId in textChanged message"); + return; + } + const node = this.idToElement.get(nodeId); + if (!node) { + throw new Error("No node found for textChanged message"); + } + if (!isText(node, this.parentElement)) { + throw new Error("Node for textChanged message is not a Text node"); + } + node.textContent = text; + } + handleChangeHiddenFrom(message) { + const { nodeId, addHiddenFrom, removeHiddenFrom } = message; + const node = this.idToElement.get(nodeId); + const hiddenElement = this.hiddenPlaceholderElements.get(nodeId); + if (addHiddenFrom.length > 0 && addHiddenFrom.indexOf(connectionId) !== -1) { + if (hiddenElement) { + return; + } + if (!node) { + throw new Error("No node found for changeHiddenFrom message"); + } + const parent = node.parentElement; + if (!parent) { + throw new Error("Node has no parent"); + } + const placeholder = document.createElement(hiddenTag); + parent.replaceChild(placeholder, node); + this.hiddenPlaceholderElements.set(nodeId, { placeholder, element: node }); + } else if (removeHiddenFrom.length > 0 && removeHiddenFrom.indexOf(connectionId) !== -1) { + if (!hiddenElement) { + return; + } + const { placeholder, element } = hiddenElement; + const parent = placeholder.parentElement; + if (!parent) { + throw new Error("Placeholder has no parent"); + } + parent.replaceChild(element, placeholder); + this.hiddenPlaceholderElements.delete(nodeId); + } + } + handleChildrenAdded(message) { + const { nodeId, addedNodes, previousNodeId } = message; + if (nodeId === void 0 || nodeId === null) { + console.warn("No nodeId in childrenChanged message"); + return; + } + let parent = this.idToElement.get(nodeId); + if (!parent) { + throw new Error("No parent found for childrenChanged message"); + } + const hiddenParent = this.hiddenPlaceholderElements.get(nodeId); + if (hiddenParent) { + parent = hiddenParent.element; + } else { + if (!parent.isConnected) { + console.error("Parent is not connected", parent); + } + } + if (!isHTMLElement(parent, this.parentElement)) { + throw new Error("Parent is not an HTMLElement (that supports children)"); + } + let nextElement = null; + let previousElement = null; + if (previousNodeId) { + previousElement = this.idToElement.get(previousNodeId); + if (!previousElement) { + throw new Error("No previous element found for childrenChanged message"); + } + nextElement = previousElement.nextSibling; + } + const elementsToAdd = []; + for (const addedNode of addedNodes) { + const childElement = this.handleNewElement(addedNode); + if (childElement) { + elementsToAdd.push(childElement); + } + } + if (elementsToAdd.length) { + if (previousElement) { + if (nextElement) { + const docFrag = new DocumentFragment(); + docFrag.append(...elementsToAdd); + parent.insertBefore(docFrag, nextElement); + } else { + parent.append(...elementsToAdd); + } + } else { + parent.prepend(...elementsToAdd); + } + } + } + handleChildrenRemoved(message) { + const { nodeId, removedNodes } = message; + if (nodeId === void 0 || nodeId === null) { + console.warn("No nodeId in childrenChanged message"); + return; + } + const parent = this.idToElement.get(nodeId); + if (!parent) { + throw new Error("No parent found for childrenChanged message"); + } + if (!parent.isConnected) { + console.error("Parent is not connected", parent); + } + if (!isHTMLElement(parent, this.parentElement)) { + throw new Error("Parent is not an HTMLElement (that supports children)"); + } + for (const removedNode of removedNodes) { + const childElement = this.idToElement.get(removedNode); + if (!childElement) { + throw new Error(`Child element not found: ${removedNode}`); + } + this.elementToId.delete(childElement); + this.idToElement.delete(removedNode); + this.hiddenPlaceholderElements.delete(removedNode); + parent.removeChild(childElement); + if (isHTMLElement(childElement, this.parentElement)) { + this.removeChildElementIds(childElement); + } + } + } + removeChildElementIds(parent) { + for (let i = 0; i < parent.children.length; i++) { + const child = parent.children[i]; + const childId = this.elementToId.get(child); + if (!childId) { + console.error("Inner child of removed element had no id", child); + } else { + this.elementToId.delete(child); + this.idToElement.delete(childId); + this.hiddenPlaceholderElements.delete(childId); + } + this.removeChildElementIds(child); + } + } + handleSnapshot(message) { + var _a; + if (this.currentRoot) { + this.currentRoot.remove(); + this.currentRoot = null; + this.elementToId.clear(); + this.idToElement.clear(); + } + (_a = this.timeCallback) == null ? void 0 : _a.call(this, message.documentTime); + const element = this.handleNewElement(message.snapshot); + if (!element) { + throw new Error("Snapshot element not created"); + } + if (!isHTMLElement(element, this.parentElement)) { + throw new Error("Snapshot element is not an HTMLElement"); + } + this.currentRoot = element; + this.parentElement.append(element); + } + handleDocumentTime(message) { + var _a; + (_a = this.timeCallback) == null ? void 0 : _a.call(this, message.documentTime); + } + handleAttributeChange(message) { + const { nodeId, attributes } = message; + if (nodeId === void 0 || nodeId === null) { + console.warn("No nodeId in attributeChange message"); + return; + } + let element = this.idToElement.get(nodeId); + const hiddenElement = this.hiddenPlaceholderElements.get(nodeId); + if (hiddenElement) { + element = hiddenElement.element; + } + if (element) { + if (isHTMLElement(element, this.parentElement)) { + for (const [key, newValue] of attributes) { + if (newValue === null) { + element.removeAttribute(key); + } else { + if (DOMSanitizer.shouldAcceptAttribute(key)) { + element.setAttribute(key, newValue); + } + } + } + } else { + console.error("Element is not an HTMLElement and cannot support attributes", element); + } + } else { + console.error("No element found for attributeChange message"); + } + } + handleNewElement(message) { + if (message.type === "text") { + const { nodeId: nodeId2, text: text2 } = message; + const textNode = document.createTextNode(""); + textNode.textContent = text2; + this.idToElement.set(nodeId2, textNode); + this.elementToId.set(textNode, nodeId2); + return textNode; + } + const { tag, nodeId, attributes, children, text, hiddenFrom } = message; + if (this.idToElement.has(nodeId)) { + console.error( + "Received nodeId to add that is already present", + nodeId, + this.idToElement.get(nodeId) + ); + return null; + } + if (tag === "#text") { + const textNode = document.createTextNode(""); + textNode.textContent = text || null; + this.idToElement.set(nodeId, textNode); + this.elementToId.set(textNode, nodeId); + return textNode; + } + let element; + try { + let filteredTag = tag; + if (this.options.tagPrefix) { + if (!tag.toLowerCase().startsWith(this.options.tagPrefix.toLowerCase())) { + filteredTag = this.options.replacementTagPrefix ? this.options.replacementTagPrefix + tag : `x-${tag}`; + } + } + element = document.createElement(filteredTag); + } catch (e) { + console.error(`Error creating element: (${tag})`, e); + element = document.createElement("x-div"); + } + for (const [key, value] of attributes) { + if (value !== null) { + if (DOMSanitizer.shouldAcceptAttribute(key)) { + element.setAttribute(key, value); + } + } + } + if (children) { + for (const child of children) { + const childElement = this.handleNewElement(child); + if (childElement) { + element.append(childElement); + } + } + } + if (hiddenFrom && hiddenFrom.length > 0 && hiddenFrom.indexOf(connectionId) !== -1) { + const placeholder = document.createElement(hiddenTag); + this.idToElement.set(nodeId, placeholder); + this.elementToId.set(placeholder, nodeId); + this.hiddenPlaceholderElements.set(nodeId, { placeholder, element }); + return placeholder; + } else { + this.idToElement.set(nodeId, element); + this.elementToId.set(element, nodeId); + return element; + } + } + handlePing(message) { + var _a; + (_a = this.timeCallback) == null ? void 0 : _a.call(this, message.documentTime); + this.send({ + type: "pong", + pong: message.ping + }); + } +}; +var startingBackoffTimeMilliseconds = 100; +var maximumBackoffTimeMilliseconds = 1e4; +var maximumWebsocketConnectionTimeout = 5e3; +var NetworkedDOMWebsocketStatus = /* @__PURE__ */ ((NetworkedDOMWebsocketStatus2) => { + NetworkedDOMWebsocketStatus2[NetworkedDOMWebsocketStatus2["Connecting"] = 0] = "Connecting"; + NetworkedDOMWebsocketStatus2[NetworkedDOMWebsocketStatus2["ConnectionOpen"] = 1] = "ConnectionOpen"; + NetworkedDOMWebsocketStatus2[NetworkedDOMWebsocketStatus2["Connected"] = 2] = "Connected"; + NetworkedDOMWebsocketStatus2[NetworkedDOMWebsocketStatus2["Reconnecting"] = 3] = "Reconnecting"; + NetworkedDOMWebsocketStatus2[NetworkedDOMWebsocketStatus2["Disconnected"] = 4] = "Disconnected"; + return NetworkedDOMWebsocketStatus2; +})(NetworkedDOMWebsocketStatus || {}); +function NetworkedDOMWebsocketStatusToString(status) { + switch (status) { + case 0: + return "Connecting..."; + case 1: + return "Connection Open"; + case 2: + return "Connected"; + case 3: + return "Reconnecting..."; + case 4: + return "Disconnected"; + default: + return "Unknown"; + } +} +var NetworkedDOMWebsocket = class { + constructor(url, websocketFactory, parentElement, timeCallback, statusUpdateCallback, options = {}) { + this.url = url; + this.websocketFactory = websocketFactory; + this.parentElement = parentElement; + this.timeCallback = timeCallback; + this.statusUpdateCallback = statusUpdateCallback; + this.options = options; + this.websocket = null; + this.websocketAdapter = null; + this.stopped = false; + this.backoffTime = startingBackoffTimeMilliseconds; + this.status = null; + this.setStatus( + 0 + /* Connecting */ + ); + this.startWebSocketConnectionAttempt(); + } + static createWebSocket(url) { + return new WebSocket(url, [ + networkedDOMProtocolSubProtocol_v0_2, + networkedDOMProtocolSubProtocol_v0_1 + ]); + } + setStatus(status) { + if (this.status !== status) { + this.status = status; + if (this.statusUpdateCallback) { + this.statusUpdateCallback(status); + } + } + } + createWebsocketWithTimeout(timeout) { + return new Promise((resolve, reject) => { + const timeoutId = setTimeout(() => { + reject(new Error("websocket connection timed out")); + }, timeout); + const websocket = this.websocketFactory(this.url); + websocket.binaryType = "arraybuffer"; + websocket.addEventListener("open", () => { + clearTimeout(timeoutId); + this.websocket = websocket; + const isV02 = websocket.protocol === networkedDOMProtocolSubProtocol_v0_2; + let websocketAdapter; + if (isV02) { + websocketAdapter = new NetworkedDOMWebsocketV02Adapter( + websocket, + this.parentElement, + () => { + this.backoffTime = startingBackoffTimeMilliseconds; + this.setStatus( + 2 + /* Connected */ + ); + }, + this.timeCallback, + this.options + ); + } else { + websocketAdapter = new NetworkedDOMWebsocketV01Adapter( + websocket, + this.parentElement, + () => { + this.backoffTime = startingBackoffTimeMilliseconds; + this.setStatus( + 2 + /* Connected */ + ); + }, + this.timeCallback, + this.options + ); + } + this.websocketAdapter = websocketAdapter; + websocket.addEventListener("message", (event) => { + if (websocket !== this.websocket) { + console.log("Ignoring websocket message event because it is no longer current"); + websocket.close(); + return; + } + websocketAdapter.receiveMessage(event); + }); + const onWebsocketClose = async () => { + let hadContents = false; + if (this.websocketAdapter) { + hadContents = this.websocketAdapter.clearContents(); + } + if (this.stopped) { + this.setStatus( + 4 + /* Disconnected */ + ); + return; + } + if (!hadContents) { + await this.waitBackoffTime(); + } + this.setStatus( + 3 + /* Reconnecting */ + ); + this.startWebSocketConnectionAttempt(); + }; + websocket.addEventListener("close", () => { + if (websocket !== this.websocket) { + console.warn("Ignoring websocket close event because it is no longer current"); + return; + } + onWebsocketClose(); + }); + websocket.addEventListener("error", (e) => { + if (websocket !== this.websocket) { + console.log("Ignoring websocket error event because it is no longer current"); + return; + } + console.error("NetworkedDOMWebsocket error", e); + onWebsocketClose(); + }); + this.setStatus( + 1 + /* ConnectionOpen */ + ); + resolve(websocket); + }); + websocket.addEventListener("error", (e) => { + clearTimeout(timeoutId); + reject(e); + }); + }); + } + async waitBackoffTime() { + console.warn(`Websocket connection to '${this.url}' failed: retrying in ${this.backoffTime}ms`); + await new Promise((resolve) => setTimeout(resolve, this.backoffTime)); + this.backoffTime = Math.min( + // Introduce a small amount of randomness to prevent clients from retrying in lockstep + this.backoffTime * (1.5 + Math.random() * 0.5), + maximumBackoffTimeMilliseconds + ); + } + async startWebSocketConnectionAttempt() { + if (this.stopped) { + return; + } + while (true) { + if (this.stopped) { + return; + } + try { + await this.createWebsocketWithTimeout(maximumWebsocketConnectionTimeout); + break; + } catch (e) { + console.error("Websocket connection failed", e); + this.setStatus( + 3 + /* Reconnecting */ + ); + await this.waitBackoffTime(); + } + } + } + stop() { + this.stopped = true; + if (this.websocket !== null) { + this.websocket.close(); + this.websocket = null; + } + } + handleEvent(element, event) { + if (this.websocketAdapter) { + this.websocketAdapter.handleEvent(element, event); + } + } +}; +function isHTMLElement(node, rootNode) { + if (node instanceof HTMLElement) { + return true; + } + if (!rootNode.ownerDocument.defaultView) { + return false; + } + return node instanceof rootNode.ownerDocument.defaultView.HTMLElement; +} +function isText(node, rootNode) { + if (node instanceof Text) { + return true; + } + if (!rootNode.ownerDocument.defaultView) { + return false; + } + return node instanceof rootNode.ownerDocument.defaultView.Text; +} + +// ../../node_modules/@mml-io/mml-web/build/index.js +function lerpHSL(colorA, colorB, alpha) { + const hslA = getHSL(colorA); + const hslB = getHSL(colorB); + const h = hslA.h + (hslB.h - hslA.h) * alpha; + const s = hslA.s + (hslB.s - hslA.s) * alpha; + const l = hslA.l + (hslB.l - hslA.l) * alpha; + return hslToRGB(h, s, l); +} +function hue2RGB(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t); + return p; +} +function euclideanModulo(n, m) { + return (n % m + m) % m; +} +function hslToRGB(h, s, l) { + h = euclideanModulo(h, 1); + s = Math.max(0, Math.min(s, 1)); + l = Math.max(0, Math.min(l, 1)); + if (s === 0) { + return { r: l, g: l, b: l }; + } else { + const p = l <= 0.5 ? l * (1 + s) : l + s - l * s; + const q = 2 * l - p; + return { + r: hue2RGB(q, p, h + 1 / 3), + g: hue2RGB(q, p, h), + b: hue2RGB(q, p, h - 1 / 3) + }; + } +} +function getHSL(source) { + const r = source.r, g = source.g, b = source.b; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let hue = 0; + let saturation = 0; + const lightness = (min + max) / 2; + if (min === max) { + hue = 0; + saturation = 0; + } else { + const delta = max - min; + saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min); + switch (max) { + case r: + hue = (g - b) / delta + (g < b ? 6 : 0); + break; + case g: + hue = (b - r) / delta + 2; + break; + case b: + hue = (r - g) / delta + 4; + break; + } + hue /= 6; + } + return { + h: hue, + s: saturation, + l: lightness + }; +} +var colors = { + aliceblue: [240 / 255, 248 / 255, 255 / 255], + antiquewhite: [250 / 255, 235 / 255, 215 / 255], + aqua: [0 / 255, 255 / 255, 255 / 255], + aquamarine: [127 / 255, 255 / 255, 212 / 255], + azure: [240 / 255, 255 / 255, 255 / 255], + beige: [245 / 255, 245 / 255, 220 / 255], + bisque: [255 / 255, 228 / 255, 196 / 255], + black: [0 / 255, 0 / 255, 0 / 255], + blanchedalmond: [255 / 255, 235 / 255, 205 / 255], + blue: [0 / 255, 0 / 255, 255 / 255], + blueviolet: [138 / 255, 43 / 255, 226 / 255], + brown: [165 / 255, 42 / 255, 42 / 255], + burlywood: [222 / 255, 184 / 255, 135 / 255], + cadetblue: [95 / 255, 158 / 255, 160 / 255], + chartreuse: [127 / 255, 255 / 255, 0 / 255], + chocolate: [210 / 255, 105 / 255, 30 / 255], + coral: [255 / 255, 127 / 255, 80 / 255], + cornflowerblue: [100 / 255, 149 / 255, 237 / 255], + cornsilk: [255 / 255, 248 / 255, 220 / 255], + crimson: [220 / 255, 20 / 255, 60 / 255], + cyan: [0 / 255, 255 / 255, 255 / 255], + darkblue: [0 / 255, 0 / 255, 139 / 255], + darkcyan: [0 / 255, 139 / 255, 139 / 255], + darkgoldenrod: [184 / 255, 134 / 255, 11 / 255], + darkgray: [169 / 255, 169 / 255, 169 / 255], + darkgreen: [0 / 255, 100 / 255, 0 / 255], + darkgrey: [169 / 255, 169 / 255, 169 / 255], + darkkhaki: [189 / 255, 183 / 255, 107 / 255], + darkmagenta: [139 / 255, 0 / 255, 139 / 255], + darkolivegreen: [85 / 255, 107 / 255, 47 / 255], + darkorange: [255 / 255, 140 / 255, 0 / 255], + darkorchid: [153 / 255, 50 / 255, 204 / 255], + darkred: [139 / 255, 0 / 255, 0 / 255], + darksalmon: [233 / 255, 150 / 255, 122 / 255], + darkseagreen: [143 / 255, 188 / 255, 143 / 255], + darkslateblue: [72 / 255, 61 / 255, 139 / 255], + darkslategray: [47 / 255, 79 / 255, 79 / 255], + darkslategrey: [47 / 255, 79 / 255, 79 / 255], + darkturquoise: [0 / 255, 206 / 255, 209 / 255], + darkviolet: [148 / 255, 0 / 255, 211 / 255], + deeppink: [255 / 255, 20 / 255, 147 / 255], + deepskyblue: [0 / 255, 191 / 255, 255 / 255], + dimgray: [105 / 255, 105 / 255, 105 / 255], + dimgrey: [105 / 255, 105 / 255, 105 / 255], + dodgerblue: [30 / 255, 144 / 255, 255 / 255], + firebrick: [178 / 255, 34 / 255, 34 / 255], + floralwhite: [255 / 255, 250 / 255, 240 / 255], + forestgreen: [34 / 255, 139 / 255, 34 / 255], + fuchsia: [255 / 255, 0 / 255, 255 / 255], + gainsboro: [220 / 255, 220 / 255, 220 / 255], + ghostwhite: [248 / 255, 248 / 255, 255 / 255], + gold: [255 / 255, 215 / 255, 0 / 255], + goldenrod: [218 / 255, 165 / 255, 32 / 255], + gray: [128 / 255, 128 / 255, 128 / 255], + green: [0 / 255, 128 / 255, 0 / 255], + greenyellow: [173 / 255, 255 / 255, 47 / 255], + grey: [128 / 255, 128 / 255, 128 / 255], + honeydew: [240 / 255, 255 / 255, 240 / 255], + hotpink: [255 / 255, 105 / 255, 180 / 255], + indianred: [205 / 255, 92 / 255, 92 / 255], + indigo: [75 / 255, 0 / 255, 130 / 255], + ivory: [255 / 255, 255 / 255, 240 / 255], + khaki: [240 / 255, 230 / 255, 140 / 255], + lavender: [230 / 255, 230 / 255, 250 / 255], + lavenderblush: [255 / 255, 240 / 255, 245 / 255], + lawngreen: [124 / 255, 252 / 255, 0 / 255], + lemonchiffon: [255 / 255, 250 / 255, 205 / 255], + lightblue: [173 / 255, 216 / 255, 230 / 255], + lightcoral: [240 / 255, 128 / 255, 128 / 255], + lightcyan: [224 / 255, 255 / 255, 255 / 255], + lightgoldenrodyellow: [250 / 255, 250 / 255, 210 / 255], + lightgray: [211 / 255, 211 / 255, 211 / 255], + lightgreen: [144 / 255, 238 / 255, 144 / 255], + lightgrey: [211 / 255, 211 / 255, 211 / 255], + lightpink: [255 / 255, 182 / 255, 193 / 255], + lightsalmon: [255 / 255, 160 / 255, 122 / 255], + lightseagreen: [32 / 255, 178 / 255, 170 / 255], + lightskyblue: [135 / 255, 206 / 255, 250 / 255], + lightslategray: [119 / 255, 136 / 255, 153 / 255], + lightslategrey: [119 / 255, 136 / 255, 153 / 255], + lightsteelblue: [176 / 255, 196 / 255, 222 / 255], + lightyellow: [255 / 255, 255 / 255, 224 / 255], + lime: [0 / 255, 255 / 255, 0 / 255], + limegreen: [50 / 255, 205 / 255, 50 / 255], + linen: [250 / 255, 240 / 255, 230 / 255], + magenta: [255 / 255, 0 / 255, 255 / 255], + maroon: [128 / 255, 0 / 255, 0 / 255], + mediumaquamarine: [102 / 255, 205 / 255, 170 / 255], + mediumblue: [0 / 255, 0 / 255, 205 / 255], + mediumorchid: [186 / 255, 85 / 255, 211 / 255], + mediumpurple: [147 / 255, 112 / 255, 219 / 255], + mediumseagreen: [60 / 255, 179 / 255, 113 / 255], + mediumslateblue: [123 / 255, 104 / 255, 238 / 255], + mediumspringgreen: [0 / 255, 250 / 255, 154 / 255], + mediumturquoise: [72 / 255, 209 / 255, 204 / 255], + mediumvioletred: [199 / 255, 21 / 255, 133 / 255], + midnightblue: [25 / 255, 25 / 255, 112 / 255], + mintcream: [245 / 255, 255 / 255, 250 / 255], + mistyrose: [255 / 255, 228 / 255, 225 / 255], + moccasin: [255 / 255, 228 / 255, 181 / 255], + navajowhite: [255 / 255, 222 / 255, 173 / 255], + navy: [0 / 255, 0 / 255, 128 / 255], + oldlace: [253 / 255, 245 / 255, 230 / 255], + olive: [128 / 255, 128 / 255, 0 / 255], + olivedrab: [107 / 255, 142 / 255, 35 / 255], + orange: [255 / 255, 165 / 255, 0 / 255], + orangered: [255 / 255, 69 / 255, 0 / 255], + orchid: [218 / 255, 112 / 255, 214 / 255], + palegoldenrod: [238 / 255, 232 / 255, 170 / 255], + palegreen: [152 / 255, 251 / 255, 152 / 255], + paleturquoise: [175 / 255, 238 / 255, 238 / 255], + palevioletred: [219 / 255, 112 / 255, 147 / 255], + papayawhip: [255 / 255, 239 / 255, 213 / 255], + peachpuff: [255 / 255, 218 / 255, 185 / 255], + peru: [205 / 255, 133 / 255, 63 / 255], + pink: [255 / 255, 192 / 255, 203 / 255], + plum: [221 / 255, 160 / 255, 221 / 255], + powderblue: [176 / 255, 224 / 255, 230 / 255], + purple: [128 / 255, 0 / 255, 128 / 255], + rebeccapurple: [102 / 255, 51 / 255, 153 / 255], + red: [255 / 255, 0 / 255, 0 / 255], + rosybrown: [188 / 255, 143 / 255, 143 / 255], + royalblue: [65 / 255, 105 / 255, 225 / 255], + saddlebrown: [139 / 255, 69 / 255, 19 / 255], + salmon: [250 / 255, 128 / 255, 114 / 255], + sandybrown: [244 / 255, 164 / 255, 96 / 255], + seagreen: [46 / 255, 139 / 255, 87 / 255], + seashell: [255 / 255, 245 / 255, 238 / 255], + sienna: [160 / 255, 82 / 255, 45 / 255], + silver: [192 / 255, 192 / 255, 192 / 255], + skyblue: [135 / 255, 206 / 255, 235 / 255], + slateblue: [106 / 255, 90 / 255, 205 / 255], + slategray: [112 / 255, 128 / 255, 144 / 255], + slategrey: [112 / 255, 128 / 255, 144 / 255], + snow: [255 / 255, 250 / 255, 250 / 255], + springgreen: [0 / 255, 255 / 255, 127 / 255], + steelblue: [70 / 255, 130 / 255, 180 / 255], + tan: [210 / 255, 180 / 255, 140 / 255], + teal: [0 / 255, 128 / 255, 128 / 255], + thistle: [216 / 255, 191 / 255, 216 / 255], + tomato: [255 / 255, 99 / 255, 71 / 255], + turquoise: [64 / 255, 224 / 255, 208 / 255], + violet: [238 / 255, 130 / 255, 238 / 255], + wheat: [245 / 255, 222 / 255, 179 / 255], + white: [255 / 255, 255 / 255, 255 / 255], + whitesmoke: [245 / 255, 245 / 255, 245 / 255], + yellow: [255 / 255, 255 / 255, 0 / 255], + yellowgreen: [154 / 255, 205 / 255, 50 / 255] +}; +var AttributeHandler = class { + constructor(map) { + this.map = map; + } + getAttributes() { + return Object.keys(this.map); + } + handle(instance, name, newValue) { + const handler = this.map[name]; + if (handler) { + handler(instance, newValue); + return true; + } + return false; + } +}; +function parseColorAttribute(value, defaultValue) { + return parseAttribute(value, defaultValue, (value2) => { + const colorNameValues = colors[value2]; + if (colorNameValues) { + return { + r: colorNameValues[0], + g: colorNameValues[1], + b: colorNameValues[2] + }; + } + if (value2.length === 7) { + const hex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(value2); + if (hex) { + return { + r: parseInt(hex[1], 16) / 255, + g: parseInt(hex[2], 16) / 255, + b: parseInt(hex[3], 16) / 255 + }; + } + } + if (value2.length === 4) { + const hex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i.exec(value2); + if (hex) { + return { + r: parseInt(hex[1] + hex[1], 16) / 255, + g: parseInt(hex[2] + hex[2], 16) / 255, + b: parseInt(hex[3] + hex[3], 16) / 255 + }; + } + } + if (value2.indexOf("rgb(") === 0) { + const rgb = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/.exec(value2); + if (rgb) { + return { + r: parseInt(rgb[1], 10) / 255, + g: parseInt(rgb[2], 10) / 255, + b: parseInt(rgb[3], 10) / 255 + }; + } + } + if (value2.indexOf("rgba(") === 0) { + const rgba = /^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d*\.?\d+)\)$/.exec(value2); + if (rgba) { + return { + r: parseInt(rgba[1], 10) / 255, + g: parseInt(rgba[2], 10) / 255, + b: parseInt(rgba[3], 10) / 255, + a: parseFloat(rgba[4]) + }; + } + } + if (value2.indexOf("hsl(") === 0) { + const hsl = /^hsl\(\s*(\d+)\s*,\s*(\d+(?:\.\d+)?%)\s*,\s*(\d+(?:\.\d+)?%)\)$/.exec(value2); + if (hsl) { + let h = parseFloat(hsl[1]) / 360; + if (h === 0) { + h = 1e-4; + } else if (h === 1) { + h = 0.9999; + } + let s = parseFloat(hsl[2]) / 100; + if (s === 0) { + s = 1e-4; + } else if (s === 1) { + s = 0.9999; + } + let l = parseFloat(hsl[3]) / 100; + if (l === 0) { + l = 1e-4; + } else if (l === 1) { + l = 0.9999; + } + return hslToRGB(h, s, l); + } + } + if (value2.indexOf("hsla(") === 0) { + const hsla = /^hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?%)\s*,\s*(\d+(?:\.\d+)?%),\s*(\d+(?:\.\d+)?)\)$/.exec( + value2 + ); + if (hsla) { + let h = parseFloat(hsla[1]) / 360; + if (h === 0) { + h = 1e-4; + } else if (h === 1) { + h = 0.9999; + } + let s = parseFloat(hsla[2]) / 100; + if (s === 0) { + s = 1e-4; + } else if (s === 1) { + s = 0.9999; + } + let l = parseFloat(hsla[3]) / 100; + if (l === 0) { + l = 1e-4; + } else if (l === 1) { + l = 0.9999; + } + return hslToRGB(h, s, l); + } + } + return null; + }); +} +function parseAttribute(value, defaultValue, parser) { + if (value === null) { + return defaultValue; + } + const parsed = parser(value); + if (parsed === null) { + return defaultValue; + } + return parsed; +} +function floatParser(value) { + const parsed = parseFloat(value); + if (isNaN(parsed)) { + return null; + } + return parsed; +} +function boolParser(value) { + if (value === "true") { + return true; + } else if (value === "false") { + return false; + } + return null; +} +function parseFloatAttribute(value, defaultValue) { + return parseAttribute(value, defaultValue, floatParser); +} +function parseBoolAttribute(value, defaultValue) { + return parseAttribute(value, defaultValue, boolParser); +} +function parseEnumAttribute(value, enumValues, defaultValue) { + return parseAttribute(value, defaultValue, (value2) => { + if (Object.keys(enumValues).indexOf(value2) === -1) { + return null; + } + return value2; + }); +} +var scene = null; +var documentTimeManager = null; +function getGlobalMMLScene() { + if (!scene) { + throw new Error("GlobalMMLScene not set"); + } + return scene; +} +function getGlobalDocumentTimeManager() { + if (!documentTimeManager) { + throw new Error("GlobalMMLScene not set"); + } + return documentTimeManager; +} +var MELEMENT_PROPERTY_NAME = "m-element-property"; +var consumeEventEventName = "consume-event"; +var MElement = class _MElement extends HTMLElement { + constructor() { + super(); + this.mElementGraphics = null; + } + // This allows switching which document this HTMLElement subclass extends so that it can be placed into iframes + static overwriteSuperclass(newSuperclass) { + _MElement.__proto__ = newSuperclass; + } + static get observedAttributes() { + return []; + } + static getMElementFromObject(object) { + return object[MELEMENT_PROPERTY_NAME] || null; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + addSideEffectChild(child) { + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + removeSideEffectChild(child) { + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + attributeChangedCallback(name, oldValue, newValue) { + } + getScene() { + const remoteDocumentElement = this.getInitiatedRemoteDocument(); + if (remoteDocumentElement) { + return remoteDocumentElement.getMMLScene(); + } + const globalScene = getGlobalMMLScene(); + if (!globalScene) { + throw new Error("No scene attachment found and no global scene found"); + } + return globalScene; + } + getInitiatedRemoteDocument() { + for (let parentNode = this; parentNode; parentNode = parentNode.parentNode) { + if (parentNode.nodeName === "M-REMOTE-DOCUMENT" && parentNode.getMMLScene()) { + return parentNode; + } + } + return null; + } + contentSrcToContentAddress(src) { + const documentLocation = this.getDocumentHost(); + try { + const url = new URL(src); + return url.toString(); + } catch { + } + let protocol = documentLocation.protocol; + if (protocol === "ws:") { + protocol = "http:"; + } else if (protocol === "wss:") { + protocol = "https:"; + } + if (src.startsWith("/")) { + return `${protocol}//${documentLocation.host}${src}`; + } else { + const path = documentLocation.pathname; + const lastSlashIndex = path.lastIndexOf("/"); + if (lastSlashIndex === -1) { + return `${protocol}//${documentLocation.host}/${src}`; + } + const pathWithoutFilename = path.substring(0, lastSlashIndex + 1); + return `${protocol}//${documentLocation.host}${pathWithoutFilename}${src}`; + } + } + getDocumentHost() { + const remoteDocument = this.getInitiatedRemoteDocument(); + if (remoteDocument) { + const remoteDocumentAddress = remoteDocument.getDocumentAddress(); + if (remoteDocumentAddress) { + const url = new URL(remoteDocumentAddress); + return url; + } + } + return window.location; + } + getDocumentTime() { + const documentTimeContextProvider = this.getDocumentTimeManager(); + if (documentTimeContextProvider) { + return documentTimeContextProvider.getDocumentTime(); + } + return Number(document.timeline.currentTime); + } + getWindowTime() { + const documentTimeContextProvider = this.getDocumentTimeManager(); + if (documentTimeContextProvider) { + return documentTimeContextProvider.getWindowTime(); + } + return Number(document.timeline.currentTime); + } + getLoadingProgressManager() { + var _a; + const scene2 = this.getScene(); + if (scene2) { + return ((_a = scene2.getLoadingProgressManager) == null ? void 0 : _a.call(scene2)) || null; + } + return null; + } + getDocumentTimeManager() { + const remoteDocument = this.getInitiatedRemoteDocument(); + if (remoteDocument) { + return remoteDocument.getDocumentTimeManager(); + } + const globalDocumentTimeManager = getGlobalDocumentTimeManager(); + if (globalDocumentTimeManager) { + return globalDocumentTimeManager; + } + return null; + } + addDocumentTimeListener(cb) { + const documentTimeManager2 = this.getDocumentTimeManager(); + if (documentTimeManager2) { + documentTimeManager2.addDocumentTimeListenerCallback(cb); + return { + remove: () => { + documentTimeManager2.removeDocumentTimeListenerCallback(cb); + } + }; + } else { + console.warn("No document time context provider found to add listener to"); + return { + remove: () => { + } + }; + } + } + addDocumentTimeTickListener(cb) { + const documentTimeManager2 = this.getDocumentTimeManager(); + if (documentTimeManager2) { + documentTimeManager2.addDocumentTimeTickListenerCallback(cb); + return { + remove: () => { + documentTimeManager2.removeDocumentTimeTickListenerCallback(cb); + } + }; + } else { + console.warn("No document time context provider found to add listener to"); + return { + remove: () => { + } + }; + } + } + getContainer() { + var _a; + const container = (_a = this.mElementGraphics) == null ? void 0 : _a.getContainer(); + if (!container) { + throw new Error("No container found"); + } + return container; + } + getUserPositionAndRotation() { + const remoteDocument = this.getScene(); + if (!remoteDocument) { + throw new Error("No scene to retrieve user position from"); + } + return remoteDocument.getUserPositionAndRotation(); + } + dispatchEvent(event) { + const remoteDocument = this.getInitiatedRemoteDocument(); + if (remoteDocument) { + remoteDocument.dispatchEvent( + new CustomEvent(consumeEventEventName, { + bubbles: false, + detail: { element: this, originalEvent: event } + }) + ); + return super.dispatchEvent(event); + } else { + if (event.type !== "click") { + const script = this.getAttribute("on" + event.type.toLowerCase()); + if (script) { + const handler = window["eval"](`(function(event){ ${script} })`); + handler.apply(this, [event]); + } + } + return super.dispatchEvent(event); + } + } + getMElementParent() { + let parentNode = this.parentNode; + while (parentNode != null) { + if (parentNode instanceof _MElement) { + return parentNode; + } + parentNode = parentNode.parentNode; + } + return null; + } + connectedCallback() { + if (!this.getScene().hasGraphicsAdapter() || this.mElementGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.mElementGraphics = graphicsAdapter.getGraphicsAdapterFactory().MElementGraphicsInterface(this); + } + disconnectedCallback() { + var _a; + (_a = this.mElementGraphics) == null ? void 0 : _a.dispose(); + this.mElementGraphics = null; + } +}; +var defaultAttribute = null; +var defaultStart = 0; +var defaultEnd = 0; +var defaultLoop = true; +var defaultPingPong = false; +var defaultEasing = ""; +var defaultStartTime = 0; +var defaultPauseTime = null; +var defaultAnimDuration = 1e3; +var defaultPingPongDelay = 0; +var defaultColor = { r: 1, g: 1, b: 1 }; +var _AttributeAnimation = class _AttributeAnimation2 extends MElement { + constructor() { + super(); + this.props = { + attr: defaultAttribute, + start: defaultStart, + end: defaultEnd, + loop: defaultLoop, + pingPong: defaultPingPong, + pingPongDelay: defaultPingPongDelay, + easing: defaultEasing, + startTime: defaultStartTime, + pauseTime: defaultPauseTime, + animDuration: defaultAnimDuration + }; + this.registeredParentAttachment = null; + } + static get observedAttributes() { + return [..._AttributeAnimation2.attributeHandler.getAttributes()]; + } + enable() { + } + disable() { + } + getContentBounds() { + return null; + } + getAnimatedAttributeName() { + return this.props.attr; + } + parentTransformed() { + } + isClickable() { + return false; + } + attributeChangedCallback(name, oldValue, newValue) { + super.attributeChangedCallback(name, oldValue, newValue); + _AttributeAnimation2.attributeHandler.handle(this, name, newValue); + } + connectedCallback() { + super.connectedCallback(); + if (this.parentElement && this.parentElement instanceof MElement) { + this.registeredParentAttachment = this.parentElement; + if (this.props.attr) { + this.registeredParentAttachment.addSideEffectChild(this); + } + } + } + disconnectedCallback() { + if (this.registeredParentAttachment && this.props.attr) { + this.registeredParentAttachment.removeSideEffectChild(this); + } + this.registeredParentAttachment = null; + super.disconnectedCallback(); + } + getColorValueForTime(docTimeMs) { + const [ratio, state] = getEasedRatioForTime(docTimeMs, this.props); + if (typeof this.props.start !== "object" || typeof this.props.end !== "object") { + return [defaultColor, state]; + } + if (ratio === StartOfAnimationSymbol) { + return [this.props.start, state]; + } else if (ratio === EndOfAnimationSymbol) { + return [this.props.end, state]; + } else { + const value = lerpHSL(this.props.start, this.props.end, ratio); + return [value, state]; + } + } + getFloatValueForTime(docTimeMs) { + const [ratio, state] = getEasedRatioForTime(docTimeMs, this.props); + if (typeof this.props.start !== "number" || typeof this.props.end !== "number") { + return [0, state]; + } + if (ratio === StartOfAnimationSymbol) { + return [this.props.start, state]; + } else if (ratio === EndOfAnimationSymbol) { + return [this.props.end, state]; + } else { + const value = ratio * (this.props.end - this.props.start) + this.props.start; + return [value, state]; + } + } +}; +_AttributeAnimation.tagName = "m-attr-anim"; +_AttributeAnimation.attributeHandler = new AttributeHandler({ + attr: (instance, newValue) => { + if (instance.registeredParentAttachment && instance.props.attr) { + instance.registeredParentAttachment.removeSideEffectChild(instance); + } + instance.props.attr = newValue || defaultAttribute; + if (instance.registeredParentAttachment && instance.props.attr) { + instance.registeredParentAttachment.addSideEffectChild(instance); + } + }, + start: (instance, newValue) => { + let parsedValue = parseFloatAttribute(newValue, null); + if (parsedValue === null) { + parsedValue = parseColorAttribute(newValue, null); + } + if (parsedValue === null) { + instance.props.start = defaultStart; + } else { + instance.props.start = parsedValue; + } + }, + end: (instance, newValue) => { + let parsedValue = parseFloatAttribute(newValue, null); + if (parsedValue === null) { + parsedValue = parseColorAttribute(newValue, null); + } + if (parsedValue === null) { + instance.props.end = defaultStart; + } else { + instance.props.end = parsedValue; + } + }, + loop: (instance, newValue) => { + instance.props.loop = parseBoolAttribute(newValue, defaultLoop); + }, + "ping-pong": (instance, newValue) => { + instance.props.pingPong = parseBoolAttribute(newValue, defaultPingPong); + }, + "ping-pong-delay": (instance, newValue) => { + instance.props.pingPongDelay = parseFloatAttribute(newValue, defaultPingPongDelay); + }, + easing: (instance, newValue) => { + instance.props.easing = newValue || defaultEasing; + }, + "start-time": (instance, newValue) => { + instance.props.startTime = parseFloatAttribute(newValue, defaultStartTime); + }, + "pause-time": (instance, newValue) => { + instance.props.pauseTime = parseFloatAttribute(newValue, defaultPauseTime); + }, + duration: (instance, newValue) => { + instance.props.animDuration = parseFloatAttribute(newValue, defaultAnimDuration); + } +}); +var AttributeAnimation = _AttributeAnimation; +var defaultAttribute2 = "all"; +var defaultEasing2 = ""; +var defaultLerpDuration = 1e3; +var _AttributeLerp = class _AttributeLerp2 extends MElement { + constructor() { + super(); + this.props = { + attr: defaultAttribute2, + easing: defaultEasing2, + lerpDuration: defaultLerpDuration + }; + this.registeredParentAttachment = null; + } + static get observedAttributes() { + return [..._AttributeLerp2.attributeHandler.getAttributes()]; + } + enable() { + } + disable() { + } + getContentBounds() { + return null; + } + getAnimatedAttributeName() { + return this.props.attr; + } + parentTransformed() { + } + isClickable() { + return false; + } + attributeChangedCallback(name, oldValue, newValue) { + super.attributeChangedCallback(name, oldValue, newValue); + _AttributeLerp2.attributeHandler.handle(this, name, newValue); + } + connectedCallback() { + super.connectedCallback(); + if (this.parentElement && this.parentElement instanceof MElement) { + this.registeredParentAttachment = this.parentElement; + this.registeredParentAttachment.addSideEffectChild(this); + } + } + disconnectedCallback() { + if (this.registeredParentAttachment) { + this.registeredParentAttachment.removeSideEffectChild(this); + } + this.registeredParentAttachment = null; + super.disconnectedCallback(); + } + getColorValueForTime(windowTime, elementValueSetTime, elementValue, previousValue) { + const ratio = this.getLerpRatio(windowTime, elementValueSetTime); + if (ratio >= 1) { + return elementValue; + } + return lerpHSL(previousValue, elementValue, ratio); + } + getFloatValueForTime(windowTime, elementValueSetTime, elementValue, previousValue) { + const from = previousValue; + const to = elementValue; + const ratio = this.getLerpRatio(windowTime, elementValueSetTime); + if (ratio >= 1) { + return to; + } + return from + (to - from) * ratio; + } + getLerpRatio(windowTime, elementValueSetTime) { + const duration = this.props.lerpDuration; + const timePassed = (windowTime || 0) - elementValueSetTime; + const ratioOfTimePassed = Math.min(timePassed / duration, 1); + const easing = this.props.easing; + let ratio; + const easingFunction = easingsByName[easing]; + if (easingFunction) { + ratio = easingFunction(ratioOfTimePassed, 0, 1, 1); + } else { + ratio = ratioOfTimePassed; + } + return ratio; + } +}; +_AttributeLerp.tagName = "m-attr-lerp"; +_AttributeLerp.attributeHandler = new AttributeHandler({ + attr: (instance, newValue) => { + if (instance.registeredParentAttachment) { + instance.registeredParentAttachment.removeSideEffectChild(instance); + } + instance.props.attr = newValue !== null ? newValue : defaultAttribute2; + if (instance.registeredParentAttachment) { + instance.registeredParentAttachment.addSideEffectChild(instance); + } + }, + easing: (instance, newValue) => { + instance.props.easing = newValue || defaultEasing2; + }, + duration: (instance, newValue) => { + instance.props.lerpDuration = Math.max(0, parseFloatAttribute(newValue, defaultLerpDuration)); + } +}); +var AttributeLerp = _AttributeLerp; +function TupleToState(tuple) { + return { + previousValue: null, + elementValue: null, + elementValueSetTime: null, + type: tuple[0], + latestValue: tuple[1], + defaultValue: tuple[1], + handler: tuple[2] + }; +} +function updateIfChangedValue(state, newValue) { + if (newValue === null) { + newValue = state.attributeState.defaultValue; + } + if (state.attributeState.latestValue !== newValue) { + state.attributeState.latestValue = newValue; + state.attributeState.handler(newValue); + } +} +function isColorAttribute(attributeState) { + return attributeState.type === 1; +} +function isNumberAttribute(attributeState) { + return attributeState.type === 0; +} +var AnimatedAttributeHelper = class { + constructor(element, handlers) { + this.element = element; + this.handlers = handlers; + this.stateByAttribute = {}; + this.allAnimations = /* @__PURE__ */ new Set(); + this.allLerps = /* @__PURE__ */ new Set(); + this.documentTimeTickListener = null; + this.hasTicked = false; + this.element = element; + this.reset(); + } + addSideEffectChild(child) { + if (child instanceof AttributeAnimation) { + const attr = child.getAnimatedAttributeName(); + if (attr) { + this.addAnimation(child, attr); + } + } else if (child instanceof AttributeLerp) { + const attr = child.getAnimatedAttributeName(); + if (attr) { + this.addLerp(child, attr); + } + } + } + removeSideEffectChild(child) { + if (child instanceof AttributeAnimation) { + const attr = child.getAnimatedAttributeName(); + if (attr) { + this.removeAnimation(child, attr); + } + } else if (child instanceof AttributeLerp) { + const attr = child.getAnimatedAttributeName(); + if (attr) { + this.removeLerp(child, attr); + } + } + } + elementSetAttribute(key, newValue) { + const state = this.stateByAttribute[key]; + if (!state) { + return; + } + state.attributeState.elementValue = newValue; + if (this.hasTicked) { + state.attributeState.previousValue = state.attributeState.latestValue; + } else { + state.attributeState.previousValue = newValue; + } + if (this.element.isConnected) { + state.attributeState.elementValueSetTime = this.element.getWindowTime(); + } else { + state.attributeState.elementValueSetTime = null; + } + if (state.animationsSet.size > 0 || state.lerpsSet.size > 0) { + return; + } + updateIfChangedValue(state, newValue); + } + getAttributesForAttributeValue(attr) { + if (attr === "all") { + return Object.keys(this.stateByAttribute); + } + return attr.split(",").map((a) => a.trim()).filter((a) => this.stateByAttribute[a]); + } + addLerp(lerp, attributeValue) { + const attributes = this.getAttributesForAttributeValue(attributeValue); + for (const key of attributes) { + const state = this.stateByAttribute[key]; + if (!state) { + return; + } + if (state.animationsSet.size === 0 && state.lerpsSet.size === 0) { + this.documentTimeTickListener = this.element.addDocumentTimeTickListener((documentTime) => { + this.updateTime(documentTime); + }); + } + this.allLerps.add(lerp); + state.lerpsSet.add(lerp); + state.lerpsInOrder = []; + const elementChildren = Array.from(this.element.children); + for (const child of elementChildren) { + if (state.lerpsSet.has(child)) { + state.lerpsInOrder.push(child); + } + } + } + } + removeLerp(lerp, attributeValue) { + const attributes = this.getAttributesForAttributeValue(attributeValue); + for (const key of attributes) { + const state = this.stateByAttribute[key]; + if (!state) { + return; + } + state.lerpsInOrder.splice(state.lerpsInOrder.indexOf(lerp), 1); + state.lerpsSet.delete(lerp); + if (state.animationsSet.size === 0) { + updateIfChangedValue(state, state.attributeState.elementValue); + } + this.allLerps.delete(lerp); + if (this.allLerps.size === 0) { + if (this.documentTimeTickListener) { + this.documentTimeTickListener.remove(); + this.documentTimeTickListener = null; + } + } + } + } + addAnimation(animation, key) { + const state = this.stateByAttribute[key]; + if (!state) { + return; + } + if (state.animationsSet.size === 0 && state.lerpsSet.size === 0) { + this.documentTimeTickListener = this.element.addDocumentTimeTickListener((documentTime) => { + this.updateTime(documentTime); + }); + } + this.allAnimations.add(animation); + state.animationsSet.add(animation); + state.animationsInOrder = []; + const elementChildren = Array.from(this.element.children); + for (const child of elementChildren) { + if (state.animationsSet.has(child)) { + state.animationsInOrder.push(child); + } + } + } + removeAnimation(animation, key) { + const state = this.stateByAttribute[key]; + if (!state) { + return; + } + state.animationsInOrder.splice(state.animationsInOrder.indexOf(animation), 1); + state.animationsSet.delete(animation); + if (state.animationsSet.size === 0) { + updateIfChangedValue(state, state.attributeState.elementValue); + } + this.allAnimations.delete(animation); + if (this.allAnimations.size === 0) { + if (this.documentTimeTickListener) { + this.documentTimeTickListener.remove(); + this.documentTimeTickListener = null; + } + } + } + updateTime(documentTime) { + this.hasTicked = true; + for (const key in this.stateByAttribute) { + let stale = null; + const state = this.stateByAttribute[key]; + for (const animation of state.animationsInOrder) { + const [newValue, active] = state.attributeState.type === 1 ? animation.getColorValueForTime(documentTime) : animation.getFloatValueForTime(documentTime); + if (active === 0) { + updateIfChangedValue(state, newValue); + stale = null; + break; + } else { + if (stale === null) { + stale = { value: newValue, state: active }; + } else { + const isAboutToStartRatherThanEnded = stale.state > 0 && active < 0; + const isMoreRecentEnd = stale.state > 0 && active > 0 && stale.state > active; + const isSoonerToStart = stale.state < 0 && active < 0 && stale.state < active; + if (isAboutToStartRatherThanEnded || isMoreRecentEnd || isSoonerToStart) { + stale = { value: newValue, state: active }; + } + } + } + } + if (stale !== null) { + updateIfChangedValue(state, stale.value); + continue; + } + if (state.lerpsInOrder.length > 0) { + const lerp = state.lerpsInOrder[0]; + const config = state.attributeState; + if (config.elementValueSetTime !== null && config.previousValue !== null && config.elementValue !== null) { + if (isColorAttribute(config)) { + updateIfChangedValue( + state, + lerp.getColorValueForTime( + this.element.getWindowTime(), + config.elementValueSetTime, + config.elementValue, + config.previousValue + ) + ); + } else if (isNumberAttribute(config)) { + updateIfChangedValue( + state, + lerp.getFloatValueForTime( + this.element.getWindowTime(), + config.elementValueSetTime, + config.elementValue, + config.previousValue + ) + ); + } + } + } + } + } + reset() { + for (const key in this.handlers) { + const state = TupleToState(this.handlers[key]); + this.stateByAttribute[key] = { + attributeState: state, + animationsInOrder: [], + animationsSet: /* @__PURE__ */ new Set(), + lerpsInOrder: [], + lerpsSet: /* @__PURE__ */ new Set() + }; + } + } +}; +var easingFunctions = { + easeInQuad(t, b, c, d) { + return c * (t /= d) * t + b; + }, + easeOutQuad(t, b, c, d) { + return -c * (t /= d) * (t - 2) + b; + }, + easeInOutQuad(t, b, c, d) { + if ((t /= d / 2) < 1) return c / 2 * t * t + b; + return -c / 2 * (--t * (t - 2) - 1) + b; + }, + easeInCubic(t, b, c, d) { + return c * (t /= d) * t * t + b; + }, + easeOutCubic(t, b, c, d) { + return c * ((t = t / d - 1) * t * t + 1) + b; + }, + easeInOutCubic(t, b, c, d) { + if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; + return c / 2 * ((t -= 2) * t * t + 2) + b; + }, + easeInQuart(t, b, c, d) { + return c * (t /= d) * t * t * t + b; + }, + easeOutQuart(t, b, c, d) { + return -c * ((t = t / d - 1) * t * t * t - 1) + b; + }, + easeInOutQuart(t, b, c, d) { + if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; + return -c / 2 * ((t -= 2) * t * t * t - 2) + b; + }, + easeInQuint(t, b, c, d) { + return c * (t /= d) * t * t * t * t + b; + }, + easeOutQuint(t, b, c, d) { + return c * ((t = t / d - 1) * t * t * t * t + 1) + b; + }, + easeInOutQuint(t, b, c, d) { + if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; + return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; + }, + easeInSine(t, b, c, d) { + return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; + }, + easeOutSine(t, b, c, d) { + return c * Math.sin(t / d * (Math.PI / 2)) + b; + }, + easeInOutSine(t, b, c, d) { + return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; + }, + easeInExpo(t, b, c, d) { + return t === 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; + }, + easeOutExpo(t, b, c, d) { + return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; + }, + easeInOutExpo(t, b, c, d) { + if (t === 0) return b; + if (t === d) return b + c; + if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; + return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b; + }, + easeInCirc(t, b, c, d) { + return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b; + }, + easeOutCirc(t, b, c, d) { + return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; + }, + easeInOutCirc(t, b, c, d) { + if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; + return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; + }, + easeInElastic(t, b, c, d) { + let s = 1.70158; + let p = 0; + let a = c; + if (t === 0) return b; + if ((t /= d) === 1) return b + c; + if (!p) p = d * 0.3; + if (a < Math.abs(c)) { + a = c; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(c / a); + } + return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; + }, + easeOutElastic(t, b, c, d) { + let s = 1.70158; + let p = 0; + let a = c; + if (t === 0) return b; + if ((t /= d) === 1) return b + c; + if (!p) p = d * 0.3; + if (a < Math.abs(c)) { + a = c; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(c / a); + } + return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b; + }, + easeInOutElastic(t, b, c, d) { + let s = 1.70158; + let p = 0; + let a = c; + if (t === 0) return b; + if ((t /= d / 2) === 2) return b + c; + if (!p) p = d * (0.3 * 1.5); + if (a < Math.abs(c)) { + a = c; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(c / a); + } + if (t < 1) + return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; + return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b; + }, + easeInBack(t, b, c, d) { + const s = 1.70158; + return c * (t /= d) * t * ((s + 1) * t - s) + b; + }, + easeOutBack(t, b, c, d) { + const s = 1.70158; + return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; + }, + easeInOutBack(t, b, c, d) { + let s = 1.70158; + if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b; + return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b; + }, + easeInBounce(t, b, c, d) { + return c - easingFunctions.easeOutBounce(d - t, 0, c, d) + b; + }, + easeOutBounce(t, b, c, d) { + if ((t /= d) < 1 / 2.75) { + return c * (7.5625 * t * t) + b; + } else if (t < 2 / 2.75) { + return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b; + } else if (t < 2.5 / 2.75) { + return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b; + } else { + return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b; + } + }, + easeInOutBounce(t, b, c, d) { + if (t < d / 2) return easingFunctions.easeInBounce(t * 2, 0, c, d) * 0.5 + b; + return easingFunctions.easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b; + } +}; +var easingsByName = easingFunctions; +var StartOfAnimationSymbol = Symbol("Start"); +var EndOfAnimationSymbol = Symbol("End"); +function getEasedRatioForTime(docTimeMs, props) { + if (props.pauseTime !== null && docTimeMs >= props.pauseTime) { + docTimeMs = props.pauseTime; + } + let elapsedTime = docTimeMs - props.startTime; + if (elapsedTime < 0) { + return [StartOfAnimationSymbol, elapsedTime]; + } else if (elapsedTime < props.animDuration || props.loop) { + if (props.loop) { + elapsedTime = elapsedTime % props.animDuration; + } + let elapsedRatio = elapsedTime / props.animDuration; + if (props.pingPong) { + let pingPongDelayRatio = props.pingPongDelay / props.animDuration; + if (pingPongDelayRatio < 0) { + pingPongDelayRatio = 0; + } + if (pingPongDelayRatio > 0.5) { + pingPongDelayRatio = 0.5; + } + if (elapsedRatio < pingPongDelayRatio / 2) { + elapsedRatio = 0; + } else if (elapsedRatio > 0.5 - pingPongDelayRatio / 2 && elapsedRatio < 0.5 + pingPongDelayRatio / 2) { + elapsedRatio = 1; + } else if (elapsedRatio > 1 - pingPongDelayRatio / 2) { + elapsedRatio = 0; + } else { + if (elapsedRatio > 0.5) { + elapsedRatio = (elapsedRatio - 0.5 - pingPongDelayRatio / 2) * 2 / (1 - pingPongDelayRatio * 2); + elapsedRatio = 1 - elapsedRatio; + } else { + elapsedRatio = (elapsedRatio - pingPongDelayRatio / 2) * 2 / (1 - pingPongDelayRatio * 2); + } + } + } + let newValue; + const easingFunction = easingsByName[props.easing]; + if (easingFunction) { + newValue = easingFunction(elapsedRatio, 0, 1, 1); + } else { + newValue = elapsedRatio; + } + return [newValue, 0]; + } else { + if (props.pingPong) { + return [StartOfAnimationSymbol, elapsedTime - props.animDuration]; + } + return [EndOfAnimationSymbol, elapsedTime - props.animDuration]; + } +} +var Quat = class _Quat { + constructor(x, y, z, w) { + if (x instanceof _Quat) { + this.x = x.x; + this.y = x.y; + this.z = x.z; + this.w = x.w; + return; + } + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = w || 1; + } + copy(other) { + this.x = other.x || 0; + this.y = other.y || 0; + this.z = other.z || 0; + this.w = other.w || 0; + return this; + } + multiply(q) { + return this.multiplyQuaternions(this, q); + } + premultiply(q) { + return this.multiplyQuaternions(q, this); + } + multiplyQuaternions(a, b) { + const qax = a.x; + const qay = a.y; + const qaz = a.z; + const qaw = a.w; + const qbx = b.x; + const qby = b.y; + const qbz = b.z; + const qbw = b.w; + this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + return this; + } + setFromEulerXYZ(euler) { + const x = euler.x; + const y = euler.y; + const z = euler.z; + const cos = Math.cos; + const sin = Math.sin; + const c1 = cos(x / 2); + const c2 = cos(y / 2); + const c3 = cos(z / 2); + const s1 = sin(x / 2); + const s2 = sin(y / 2); + const s3 = sin(z / 2); + this.x = s1 * c2 * c3 + c1 * s2 * s3; + this.y = c1 * s2 * c3 - s1 * c2 * s3; + this.z = c1 * c2 * s3 + s1 * s2 * c3; + this.w = c1 * c2 * c3 - s1 * s2 * s3; + return this; + } + setFromRotationMatrix(m) { + const te = m.data, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33; + if (trace > 0) { + const s = 0.5 / Math.sqrt(trace + 1); + this.w = 0.25 / s; + this.x = (m32 - m23) * s; + this.y = (m13 - m31) * s; + this.z = (m21 - m12) * s; + } else if (m11 > m22 && m11 > m33) { + const s = 2 * Math.sqrt(1 + m11 - m22 - m33); + this.w = (m32 - m23) / s; + this.x = 0.25 * s; + this.y = (m12 + m21) / s; + this.z = (m13 + m31) / s; + } else if (m22 > m33) { + const s = 2 * Math.sqrt(1 + m22 - m11 - m33); + this.w = (m13 - m31) / s; + this.x = (m12 + m21) / s; + this.y = 0.25 * s; + this.z = (m23 + m32) / s; + } else { + const s = 2 * Math.sqrt(1 + m33 - m11 - m22); + this.w = (m21 - m12) / s; + this.x = (m13 + m31) / s; + this.y = (m23 + m32) / s; + this.z = 0.25 * s; + } + return this; + } + setFromAxisAngle(axis, angle) { + const halfAngle = angle / 2; + const s = Math.sin(halfAngle); + this.x = axis.x * s; + this.y = axis.y * s; + this.z = axis.z * s; + this.w = Math.cos(halfAngle); + return this; + } + clone() { + return new _Quat(this); + } + set(x, y, z, w) { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + return this; + } +}; +var Vect3 = class _Vect3 { + constructor(x, y, z) { + if (x && typeof x === "object") { + this.x = x.x; + this.y = x.y; + this.z = x.z; + return; + } + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + } + copy(other) { + this.x = other.x || 0; + this.y = other.y || 0; + this.z = other.z || 0; + return this; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + lengthSquared() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + clone() { + return new _Vect3(this); + } + set(x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + } + applyMatrix4(matrix) { + const x = this.x; + const y = this.y; + const z = this.z; + const e = matrix.data; + const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]); + this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w; + this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w; + this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w; + return this; + } + add(other) { + this.x += other.x || 0; + this.y += other.y || 0; + this.z += other.z || 0; + return this; + } + sub(other) { + this.x -= other.x || 0; + this.y -= other.y || 0; + this.z -= other.z || 0; + return this; + } +}; +var Vect3Zeroes = { x: 0, y: 0, z: 0 }; +var Vect3Ones = { x: 1, y: 1, z: 1 }; +var _Matr4 = class _Matr42 { + constructor(data) { + if (data instanceof _Matr42) { + this.data = [...data.data]; + } else if (data instanceof Array) { + this.data = [...data]; + } else if (data instanceof Float32Array) { + this.data = [...data]; + } else { + this.data = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; + } + } + identity() { + this.data = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; + return this; + } + copy(m) { + this.data = [...m.data]; + return this; + } + set(...args) { + if (args[0] instanceof Array) { + this.data = args[0]; + } else { + this.data = args; + } + return this; + } + setRotationFromQuaternion(q) { + return this.compose(Vect3Zeroes, q, Vect3Ones); + } + clone() { + return new _Matr42(this.data); + } + determinant() { + const te = this.data; + const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12]; + const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13]; + const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14]; + const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15]; + return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31); + } + makeRotationX(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1); + return this; + } + makeRotationY(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1); + return this; + } + makeRotationZ(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + return this; + } + makeTranslation(x, y, z) { + this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1); + return this; + } + makeScale(x, y, z) { + this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1); + return this; + } + compose(position, quaternion, scale) { + const te = this.data; + const x = quaternion.x, y = quaternion.y, z = quaternion.z, w = quaternion.w; + const x2 = x + x, y2 = y + y, z2 = z + z; + const xx = x * x2, xy = x * y2, xz = x * z2; + const yy = y * y2, yz = y * z2, zz = z * z2; + const wx = w * x2, wy = w * y2, wz = w * z2; + const sx = scale.x, sy = scale.y, sz = scale.z; + te[0] = (1 - (yy + zz)) * sx; + te[1] = (xy + wz) * sx; + te[2] = (xz - wy) * sx; + te[3] = 0; + te[4] = (xy - wz) * sy; + te[5] = (1 - (xx + zz)) * sy; + te[6] = (yz + wx) * sy; + te[7] = 0; + te[8] = (xz + wy) * sz; + te[9] = (yz - wx) * sz; + te[10] = (1 - (xx + yy)) * sz; + te[11] = 0; + te[12] = position.x; + te[13] = position.y; + te[14] = position.z; + te[15] = 1; + return this; + } + decompose(position, quaternion, scale) { + const te = this.data; + const _v1 = _Matr42.tempVect3; + let sx = _v1.set(te[0], te[1], te[2]).length(); + const sy = _v1.set(te[4], te[5], te[6]).length(); + const sz = _v1.set(te[8], te[9], te[10]).length(); + const det = this.determinant(); + if (det < 0) sx = -sx; + position.x = te[12]; + position.y = te[13]; + position.z = te[14]; + const _m1 = _Matr42.tempMatr4; + _m1.copy(this); + const invSX = 1 / sx; + const invSY = 1 / sy; + const invSZ = 1 / sz; + _m1.data[0] *= invSX; + _m1.data[1] *= invSX; + _m1.data[2] *= invSX; + _m1.data[4] *= invSY; + _m1.data[5] *= invSY; + _m1.data[6] *= invSY; + _m1.data[8] *= invSZ; + _m1.data[9] *= invSZ; + _m1.data[10] *= invSZ; + const _q1 = _Matr42.tempQuat; + _q1.setFromRotationMatrix(_m1); + quaternion.x = _q1.x; + quaternion.y = _q1.y; + quaternion.z = _q1.z; + quaternion.w = _q1.w; + scale.x = sx; + scale.y = sy; + scale.z = sz; + return this; + } + multiply(m) { + return this.multiplyMatrices(this, m); + } + premultiply(m) { + return this.multiplyMatrices(m, this); + } + multiplyMatrices(a, b) { + const ae = a.data; + const be = b.data; + const te = this.data; + const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12]; + const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13]; + const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14]; + const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15]; + const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12]; + const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13]; + const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14]; + const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15]; + te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + return this; + } + invert() { + const te = this.data, n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3], n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7], n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11], n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + if (det === 0) { + return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + } + const detInv = 1 / det; + te[0] = t11 * detInv; + te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv; + te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv; + te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv; + te[4] = t12 * detInv; + te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv; + te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv; + te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv; + te[8] = t13 * detInv; + te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv; + te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv; + te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv; + te[12] = t14 * detInv; + te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv; + te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv; + te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv; + return this; + } +}; +_Matr4.tempMatr4 = new _Matr4(); +_Matr4.tempVect3 = new Vect3(); +_Matr4.tempQuat = new Quat(); +var Matr4 = _Matr4; +var epsilon = 1e-4; +var matrix1 = new Matr4(); +var vector1 = new Vect3(); +var OrientedBoundingBox = class _OrientedBoundingBox { + constructor(size, matr4, centerOffset = null) { + this.size = size; + this.matr4 = matr4; + this.centerOffset = centerOffset; + } + static fromSizeAndMatrixWorld(size, matr4) { + return new _OrientedBoundingBox(size, matr4); + } + static fromSizeMatrixWorldAndCenter(size, matr4, centerOffset) { + return new _OrientedBoundingBox(size, matr4, centerOffset); + } + static fromMatrixWorld(matr4) { + return new _OrientedBoundingBox(new Vect3(), matr4); + } + getCorners() { + const corners = []; + for (let x = -1; x <= 1; x += 2) { + for (let y = -1; y <= 1; y += 2) { + for (let z = -1; z <= 1; z += 2) { + const point = vector1.set( + x * (this.size.x / 2), + y * (this.size.y / 2), + z * (this.size.z / 2) + ); + if (this.centerOffset !== null) { + point.add(this.centerOffset); + } + point.applyMatrix4(this.matr4); + corners.push(point.clone()); + } + } + } + return corners; + } + completelyContainsBoundingBox(childOBB) { + const invertedMatrix = matrix1.copy(this.matr4).invert(); + for (let x = -1; x <= 1; x += 2) { + for (let y = -1; y <= 1; y += 2) { + for (let z = -1; z <= 1; z += 2) { + const point = vector1.set( + x * (childOBB.size.x / 2), + y * (childOBB.size.y / 2), + z * (childOBB.size.z / 2) + ); + if (childOBB.centerOffset !== null) { + point.add(childOBB.centerOffset); + } + point.applyMatrix4(childOBB.matr4); + const localPoint = point.applyMatrix4(invertedMatrix); + if (this.centerOffset !== null) { + localPoint.sub(this.centerOffset); + } + const isWithin = Math.abs(localPoint.x) <= this.size.x / 2 + epsilon && Math.abs(localPoint.y) <= this.size.y / 2 + epsilon && Math.abs(localPoint.z) <= this.size.z / 2 + epsilon; + if (!isWithin) { + return false; + } + } + } + } + return true; + } + containsPoint(point) { + const invertedMatrix = matrix1.copy(this.matr4).invert(); + const localPoint = vector1.copy(point).applyMatrix4(invertedMatrix); + if (this.centerOffset !== null) { + localPoint.sub(this.centerOffset); + } + return Math.abs(localPoint.x) <= this.size.x / 2 + epsilon && Math.abs(localPoint.y) <= this.size.y / 2 + epsilon && Math.abs(localPoint.z) <= this.size.z / 2 + epsilon; + } +}; +var CanvasText = class { + constructor() { + this.canvas = document.createElement("canvas"); + this.context = this.canvas.getContext("2d"); + } + renderText(message, options) { + const fontsize = options.fontSize; + const textColor = options.textColorRGB255A1; + const backgroundColor = options.backgroundColorRGB255A1 || { r: 255, g: 255, b: 255, a: 1 }; + const padding = options.paddingPx || 0; + const font = options.font || "Arial"; + const fontString = (options.bold ? "bold " : "") + fontsize + "px " + font; + const textAlign = options.alignment ?? "left"; + if (options.dimensions) { + this.canvas.width = options.dimensions.width; + this.canvas.height = options.dimensions.height; + this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); + this.context.font = fontString; + this.context.textAlign = textAlign; + this.context.fillStyle = `rgba(${backgroundColor.r}, ${backgroundColor.g}, ${backgroundColor.b}, ${backgroundColor.a})`; + this.context.lineWidth = 0; + this.context.fillRect(0, 0, this.canvas.width, this.canvas.height); + this.context.fillStyle = `rgba(${textColor.r}, ${textColor.g}, ${textColor.b}, ${textColor.a})`; + this.context.font = fontString; + printAtWordWrap( + this.context, + message, + textAlign, + fontsize, + fontsize, + this.canvas.width, + padding + ); + } else { + this.context.font = fontString; + const metrics = this.context.measureText(message); + const textWidth = metrics.width; + const textHeight = metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent; + this.canvas.width = textWidth + padding * 2; + this.canvas.height = textHeight + padding; + this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); + this.context.font = fontString; + this.context.textAlign = textAlign; + this.context.fillStyle = `rgba(${backgroundColor.r}, ${backgroundColor.g}, ${backgroundColor.b}, ${backgroundColor.a})`; + this.context.lineWidth = 0; + this.context.fillRect(0, 0, this.canvas.width, this.canvas.height); + this.context.fillStyle = `rgba(${textColor.r}, ${textColor.g}, ${textColor.b}, ${textColor.a})`; + this.context.font = fontString; + this.context.fillText( + message, + padding + getTextAlignOffset(textAlign, textWidth), + textHeight + ); + } + return this.canvas; + } +}; +function printAtWordWrap(context, fullText, textAlign, y, lineHeight, fitWidth, padding) { + const x = getTextAlignOffset(textAlign, fitWidth - padding * 2); + const lines = fullText.split("\n"); + let currentLine = 0; + for (const text of lines) { + fitWidth = fitWidth || 0; + if (fitWidth <= 0) { + context.fillText(text, x, y + lineHeight * currentLine); + currentLine++; + continue; + } + let words = text.split(" "); + let lastWordIndex = 1; + while (words.length > 0 && lastWordIndex <= words.length) { + const str = words.slice(0, lastWordIndex).join(" "); + const textWidth = context.measureText(str).width; + if (textWidth + padding * 2 > fitWidth) { + if (lastWordIndex === 1) { + lastWordIndex = 2; + } + context.fillText( + words.slice(0, lastWordIndex - 1).join(" "), + x + padding, + y + lineHeight * currentLine + padding + ); + currentLine++; + words = words.splice(lastWordIndex - 1); + lastWordIndex = 1; + } else { + lastWordIndex++; + } + } + if (lastWordIndex > 0 && words.length > 0) { + context.fillText(words.join(" "), x + padding, y + lineHeight * currentLine + padding); + currentLine++; + } + } +} +function getTextAlignOffset(textAlign, width) { + switch (textAlign) { + case "center": + return width / 2; + case "right": + return width; + default: + return 0; + } +} +var collideAttributeName = "collide"; +var collisionIntervalAttributeName = "collision-interval"; +var defaultCollideable = true; +var _CollideableHelper = class _CollideableHelper2 { + constructor(element) { + this.props = { + collide: defaultCollideable + }; + this.scene = null; + this.collider = null; + this.added = false; + this.enabled = true; + this.element = element; + } + enable() { + if (this.enabled) { + return; + } + this.enabled = true; + this.updateCollider(this.collider); + } + disable() { + if (!this.enabled) { + return; + } + this.enabled = false; + this.updateCollider(this.collider); + } + updateCollider(collider) { + var _a, _b, _c, _d, _e, _f, _g, _h; + if (!this.element.isConnected) { + this.collider = collider; + return; + } + this.scene = this.element.getScene(); + const previousCollider = this.collider; + const colliderChanged = previousCollider !== collider; + if (colliderChanged) { + this.added = false; + } + this.collider = collider; + const shouldEnableCollider = this.props.collide && this.enabled; + if (!shouldEnableCollider && previousCollider === null) { + this.added = false; + return; + } + if (shouldEnableCollider) { + if (colliderChanged && previousCollider !== null) { + (_b = (_a = this.scene).removeCollider) == null ? void 0 : _b.call(_a, previousCollider, this.element); + } + if (collider !== null) { + if (this.added) { + (_d = (_c = this.scene).updateCollider) == null ? void 0 : _d.call(_c, collider, this.element); + } else { + this.added = true; + (_f = (_e = this.scene).addCollider) == null ? void 0 : _f.call(_e, collider, this.element); + } + } + } else { + if (previousCollider !== null) { + this.added = false; + (_h = (_g = this.scene).removeCollider) == null ? void 0 : _h.call(_g, previousCollider, this.element); + } + } + } + removeColliders() { + var _a; + const scene2 = this.scene; + if (!scene2) { + return; + } + if (!this.collider) { + return; + } + (_a = scene2.removeCollider) == null ? void 0 : _a.call(scene2, this.collider, this.element); + this.scene = null; + } + handle(name, newValue) { + _CollideableHelper2.AttributeHandler.handle(this, name, newValue); + } + parentTransformed() { + this.updateCollider(this.collider); + } +}; +_CollideableHelper.AttributeHandler = new AttributeHandler({ + [collideAttributeName]: (instance, newValue) => { + const collide = parseBoolAttribute(newValue, defaultCollideable); + if (collide !== instance.props.collide) { + instance.props.collide = collide; + instance.updateCollider(instance.collider); + } + }, + [collisionIntervalAttributeName]: () => { + } +}); +_CollideableHelper.observedAttributes = _CollideableHelper.AttributeHandler.getAttributes(); +var CollideableHelper = _CollideableHelper; +var debugAttributeName = "debug"; +var DebugHelper = class { + constructor(element) { + this.element = element; + this.debugGraphics = null; + } + getContainer() { + return this.element.getContainer(); + } + handle(name, newValue) { + var _a; + if (name === debugAttributeName) { + if (parseBoolAttribute(newValue, false)) { + if (!this.debugGraphics) { + this.debugGraphics = this.element.getScene().getGraphicsAdapter().getGraphicsAdapterFactory().MMLDebugHelperGraphicsInterface(this); + } + } else { + (_a = this.debugGraphics) == null ? void 0 : _a.dispose(); + this.debugGraphics = null; + } + } + } +}; +DebugHelper.observedAttributes = [debugAttributeName]; +function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); +} +var _EulXYZ = class _EulXYZ2 { + constructor(x, y, z) { + if (x instanceof _EulXYZ2) { + this.x = x.x; + this.y = x.y; + this.z = x.z; + return; + } + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + } + setFromRotationMatrix(m) { + const d = m.data; + const m11 = d[0]; + const m12 = d[4]; + const m13 = d[8]; + const m22 = d[5]; + const m23 = d[9]; + const m32 = d[6]; + const m33 = d[10]; + this.y = Math.asin(clamp(m13, -1, 1)); + if (Math.abs(m13) < 0.9999999) { + this.x = Math.atan2(-m23, m33); + this.z = Math.atan2(-m12, m11); + } else { + this.x = Math.atan2(m32, m22); + this.z = 0; + } + return this; + } + setFromQuaternion(q) { + const matrix = _EulXYZ2.tempMatrix; + matrix.setRotationFromQuaternion(q); + return this.setFromRotationMatrix(matrix); + } + copy(other) { + this.x = other.x || 0; + this.y = other.y || 0; + this.z = other.z || 0; + return this; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + lengthSquared() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + clone() { + return new _EulXYZ2(this); + } + set(x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + } +}; +_EulXYZ.tempMatrix = new Matr4(); +var EulXYZ = _EulXYZ; +function radToDeg(rad) { + return rad * (180 / Math.PI); +} +function degToRad(deg) { + return deg * (Math.PI / 180); +} +function minimumNonZero(value) { + return value === 0 ? 1e-6 : value; +} +var defaultVisible = true; +var _TransformableElement = class _TransformableElement2 extends MElement { + constructor() { + super(...arguments); + this.transformableElementProps = { + socket: null, + x: 0, + y: 0, + z: 0, + rx: 0, + ry: 0, + rz: 0, + sx: 1, + sy: 1, + sz: 1 + }; + this.desiredVisible = defaultVisible; + this.appliedBounds = /* @__PURE__ */ new Map(); + this.directlyDisabledByBounds = false; + this.disabledByParent = false; + this.transformableElementGraphics = null; + this.transformableAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + x: [ + 0, + 0, + (newValue) => { + var _a; + this.transformableElementProps.x = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setX(newValue, this.transformableElementProps); + this.didUpdateTransformation(); + } + ], + y: [ + 0, + 0, + (newValue) => { + var _a; + this.transformableElementProps.y = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setY(newValue, this.transformableElementProps); + this.didUpdateTransformation(); + } + ], + z: [ + 0, + 0, + (newValue) => { + var _a; + this.transformableElementProps.z = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setZ(newValue, this.transformableElementProps); + this.didUpdateTransformation(); + } + ], + rx: [ + 0, + 0, + (newValue) => { + var _a; + this.transformableElementProps.rx = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setRotationX(newValue, this.transformableElementProps); + this.didUpdateTransformation(); + } + ], + ry: [ + 0, + 0, + (newValue) => { + var _a; + this.transformableElementProps.ry = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setRotationY(newValue, this.transformableElementProps); + this.didUpdateTransformation(); + } + ], + rz: [ + 0, + 0, + (newValue) => { + var _a; + this.transformableElementProps.rz = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setRotationZ(newValue, this.transformableElementProps); + this.didUpdateTransformation(); + } + ], + sx: [ + 0, + 1, + (newValue) => { + var _a; + this.transformableElementProps.sx = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setScaleX( + minimumNonZero(newValue), + this.transformableElementProps + ); + this.didUpdateTransformation(); + } + ], + sy: [ + 0, + 1, + (newValue) => { + var _a; + this.transformableElementProps.sy = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setScaleY( + minimumNonZero(newValue), + this.transformableElementProps + ); + this.didUpdateTransformation(); + } + ], + sz: [ + 0, + 1, + (newValue) => { + var _a; + this.transformableElementProps.sz = newValue; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setScaleZ( + minimumNonZero(newValue), + this.transformableElementProps + ); + this.didUpdateTransformation(); + } + ] + }); + this.debugHelper = new DebugHelper(this); + } + getTransformableElementParent() { + let parentNode = this.parentNode; + while (parentNode != null) { + if (parentNode instanceof _TransformableElement2) { + return parentNode; + } + parentNode = parentNode.parentNode; + } + return null; + } + calculateLocalMatrix(matrix) { + const pos = { + x: this.transformableElementProps.x, + y: this.transformableElementProps.y, + z: this.transformableElementProps.z + }; + const eulerXYZRotation = { + x: degToRad(this.transformableElementProps.rx), + y: degToRad(this.transformableElementProps.ry), + z: degToRad(this.transformableElementProps.rz) + }; + const scale = { + x: this.transformableElementProps.sx, + y: this.transformableElementProps.sy, + z: this.transformableElementProps.sz + }; + const quaternion = _TransformableElement2.tempQuat; + quaternion.setFromEulerXYZ(eulerXYZRotation); + matrix.compose(pos, quaternion, scale); + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.transformableElementGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.transformableElementGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLTransformableGraphicsInterface(this); + const mElementParent = this.getTransformableElementParent(); + if (mElementParent) { + const parentBounds = mElementParent.getAppliedBounds(); + parentBounds.forEach((orientedBox, ref) => { + this.addOrUpdateParentBound(ref, orientedBox); + }); + return; + } + } + disconnectedCallback() { + var _a; + this.transformableAnimatedAttributeHelper.reset(); + (_a = this.transformableElementGraphics) == null ? void 0 : _a.dispose(); + this.transformableElementGraphics = null; + super.disconnectedCallback(); + } + static get observedAttributes() { + return [ + ..._TransformableElement2.TransformableElementAttributeHandler.getAttributes(), + ...DebugHelper.observedAttributes + ]; + } + addSideEffectChild(child) { + this.transformableAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.transformableAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + applyBounds() { + if (!this.transformableElementGraphics) { + return; + } + const appliedBounds = this.getAppliedBounds(); + if (appliedBounds.size > 0) { + const thisElementBounds = this.getContentBounds(); + if (thisElementBounds) { + for (const [, orientedBox] of appliedBounds) { + if (!orientedBox.completelyContainsBoundingBox(thisElementBounds)) { + if (!this.directlyDisabledByBounds) { + this.disabledByBounds(); + } + return; + } + } + } + } + this.reenableByBounds(); + } + didUpdateTransformation() { + this.applyBounds(); + this.parentTransformed(); + traverseImmediateTransformableElementChildren(this, (child) => { + child.didUpdateTransformation(); + }); + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.transformableElementGraphics) { + return; + } + _TransformableElement2.TransformableElementAttributeHandler.handle(this, name, newValue); + this.debugHelper.handle(name, newValue); + } + getAppliedBounds() { + return this.appliedBounds; + } + addOrUpdateParentBound(ref, orientedBox) { + this.appliedBounds.set(ref, orientedBox); + traverseImmediateTransformableElementChildren(this, (child) => { + child.addOrUpdateParentBound(ref, orientedBox); + }); + this.applyBounds(); + } + removeParentBound(ref) { + this.appliedBounds.delete(ref); + traverseImmediateTransformableElementChildren(this, (child) => { + child.removeParentBound(ref); + }); + this.applyBounds(); + } + disabledByBounds() { + if (this.directlyDisabledByBounds) { + return; + } + this.directlyDisabledByBounds = true; + this.updateVisibility(); + if (this.disabledByParent) { + return; + } + this.disable(); + traverseImmediateTransformableElementChildren(this, (child) => { + child.disabledByParentBounds(); + }); + } + isDisabled() { + return this.directlyDisabledByBounds || this.disabledByParent; + } + disabledByParentBounds() { + if (this.disabledByParent) { + return; + } + this.disabledByParent = true; + this.updateVisibility(); + if (this.directlyDisabledByBounds) { + return; + } + this.disable(); + traverseImmediateTransformableElementChildren(this, (child) => { + child.disabledByParentBounds(); + }); + } + reenableByBounds() { + if (!this.directlyDisabledByBounds) { + return; + } + this.directlyDisabledByBounds = false; + if (!this.disabledByParent) { + this.updateVisibility(); + this.enable(); + traverseImmediateTransformableElementChildren(this, (child) => { + child.reenableByParentBounds(); + }); + } + } + reenableByParentBounds() { + if (!this.disabledByParent) { + return; + } + this.disabledByParent = false; + if (!this.directlyDisabledByBounds) { + this.updateVisibility(); + this.enable(); + traverseImmediateTransformableElementChildren(this, (child) => { + child.reenableByParentBounds(); + }); + } + } + updateVisibility() { + var _a; + (_a = this.transformableElementGraphics) == null ? void 0 : _a.setVisible( + this.desiredVisible && !this.isDisabled(), + this.transformableElementProps + ); + } +}; +_TransformableElement.tempQuat = new Quat(); +_TransformableElement.TransformableElementAttributeHandler = new AttributeHandler({ + x: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "x", + parseFloatAttribute(newValue, 0) + ); + }, + y: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "y", + parseFloatAttribute(newValue, 0) + ); + }, + z: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "z", + parseFloatAttribute(newValue, 0) + ); + }, + rx: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "rx", + parseFloatAttribute(newValue, 0) + ); + }, + ry: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "ry", + parseFloatAttribute(newValue, 0) + ); + }, + rz: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "rz", + parseFloatAttribute(newValue, 0) + ); + }, + sx: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "sx", + parseFloatAttribute(newValue, 1) + ); + }, + sy: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "sy", + parseFloatAttribute(newValue, 1) + ); + }, + sz: (instance, newValue) => { + instance.transformableAnimatedAttributeHelper.elementSetAttribute( + "sz", + parseFloatAttribute(newValue, 1) + ); + }, + visible: (instance, newValue) => { + instance.desiredVisible = parseBoolAttribute(newValue, defaultVisible); + instance.updateVisibility(); + }, + socket: (instance, newValue) => { + var _a; + instance.transformableElementProps.socket = newValue; + (_a = instance.transformableElementGraphics) == null ? void 0 : _a.setSocket( + newValue, + instance.transformableElementProps + ); + instance.applyBounds(); + } +}); +var TransformableElement = _TransformableElement; +function traverseImmediateTransformableElementChildren(element, callback) { + element.childNodes.forEach((child) => { + if (child instanceof TransformableElement) { + callback(child); + } else { + traverseImmediateTransformableElementChildren(child, callback); + } + }); +} +var defaultAudioVolume = 1; +var defaultAudioLoop = true; +var defaultAudioEnabled = true; +var defaultAudioStartTime = 0; +var defaultAudioPauseTime = null; +var defaultAudioSrc = null; +var defaultAudioInnerConeAngle = 360; +var defaultAudioOuterConeAngle = 0; +var defaultAudioDebug = false; +function clampAudioConeAngle(angle) { + return Math.max(Math.min(angle, 360), 0); +} +var _Audio = class _Audio2 extends TransformableElement { + constructor() { + super(); + this.props = { + src: defaultAudioSrc, + startTime: defaultAudioStartTime, + pauseTime: defaultAudioPauseTime, + loop: defaultAudioLoop, + loopDuration: null, + enabled: defaultAudioEnabled, + volume: defaultAudioVolume, + coneAngle: defaultAudioInnerConeAngle, + coneFalloffAngle: defaultAudioOuterConeAngle, + debug: false + }; + this.audioGraphics = null; + this.audioAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + volume: [ + 0, + defaultAudioVolume, + (newValue) => { + var _a; + this.props.volume = newValue; + (_a = this.audioGraphics) == null ? void 0 : _a.setVolume(newValue, this.props); + } + ], + "cone-angle": [ + 0, + defaultAudioInnerConeAngle, + (newValue) => { + var _a; + this.props.coneAngle = newValue === null ? defaultAudioInnerConeAngle : clampAudioConeAngle(newValue); + (_a = this.audioGraphics) == null ? void 0 : _a.setConeAngle(this.props.coneAngle, this.props); + } + ], + "cone-falloff-angle": [ + 0, + defaultAudioOuterConeAngle, + (newValue) => { + var _a; + this.props.coneFalloffAngle = clampAudioConeAngle(newValue); + (_a = this.audioGraphics) == null ? void 0 : _a.setConeFalloffAngle(this.props.coneFalloffAngle, this.props); + } + ] + }); + } + static get observedAttributes() { + return [...TransformableElement.observedAttributes, ..._Audio2.attributeHandler.getAttributes()]; + } + enable() { + var _a; + (_a = this.audioGraphics) == null ? void 0 : _a.syncAudioTime(); + } + disable() { + var _a; + (_a = this.audioGraphics) == null ? void 0 : _a.syncAudioTime(); + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromMatrixWorld(this.transformableElementGraphics.getWorldMatrix()); + } + addSideEffectChild(child) { + this.audioAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.audioAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.audioGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Audio2.attributeHandler.handle(this, name, newValue); + } + documentTimeChanged() { + var _a; + (_a = this.audioGraphics) == null ? void 0 : _a.syncAudioTime(); + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.audioGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.audioGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLAudioGraphicsInterface(this); + this.documentTimeListener = this.addDocumentTimeListener(() => { + this.documentTimeChanged(); + }); + for (const name of _Audio2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + } + disconnectedCallback() { + var _a; + this.audioAnimatedAttributeHelper.reset(); + (_a = this.audioGraphics) == null ? void 0 : _a.dispose(); + this.audioGraphics = null; + this.documentTimeListener.remove(); + super.disconnectedCallback(); + } +}; +_Audio.tagName = "m-audio"; +_Audio.attributeHandler = new AttributeHandler({ + enabled: (instance, newValue) => { + var _a; + instance.props.enabled = parseBoolAttribute(newValue, defaultAudioEnabled); + (_a = instance.audioGraphics) == null ? void 0 : _a.setEnabled(instance.props.enabled, instance.props); + }, + loop: (instance, newValue) => { + var _a; + instance.props.loop = parseBoolAttribute(newValue, defaultAudioLoop); + (_a = instance.audioGraphics) == null ? void 0 : _a.setLoop(instance.props.loop, instance.props); + }, + "loop-duration": (instance, newValue) => { + var _a; + instance.props.loopDuration = parseFloatAttribute(newValue, null); + (_a = instance.audioGraphics) == null ? void 0 : _a.setLoopDuration(instance.props.loopDuration, instance.props); + }, + "start-time": (instance, newValue) => { + var _a; + instance.props.startTime = parseFloatAttribute(newValue, defaultAudioStartTime); + (_a = instance.audioGraphics) == null ? void 0 : _a.setStartTime(instance.props.startTime, instance.props); + }, + "pause-time": (instance, newValue) => { + var _a; + instance.props.pauseTime = parseFloatAttribute(newValue, defaultAudioPauseTime); + (_a = instance.audioGraphics) == null ? void 0 : _a.setPauseTime(instance.props.pauseTime, instance.props); + }, + src: (instance, newValue) => { + var _a; + instance.props.src = newValue; + (_a = instance.audioGraphics) == null ? void 0 : _a.setSrc(newValue, instance.props); + }, + volume: (instance, newValue) => { + instance.audioAnimatedAttributeHelper.elementSetAttribute( + "volume", + parseFloatAttribute(newValue, defaultAudioVolume) + ); + }, + "cone-angle": (instance, newValue) => { + instance.audioAnimatedAttributeHelper.elementSetAttribute( + "cone-angle", + parseFloatAttribute(newValue, null) + ); + }, + "cone-falloff-angle": (instance, newValue) => { + instance.audioAnimatedAttributeHelper.elementSetAttribute( + "cone-falloff-angle", + parseFloatAttribute(newValue, defaultAudioOuterConeAngle) + ); + }, + debug: (instance, newValue) => { + var _a; + instance.props.debug = parseBoolAttribute(newValue, defaultAudioDebug); + (_a = instance.audioGraphics) == null ? void 0 : _a.setDebug(instance.props.debug, instance.props); + } +}); +var Audio = _Audio; +var defaultModelSrc = null; +var defaultModelAnim = null; +var defaultModelAnimLoop = true; +var defaultModelAnimEnabled = true; +var defaultModelAnimStartTime = 0; +var defaultModelAnimPauseTime = null; +var defaultModelCastShadows = true; +var defaultModelDebug = false; +var _Model = class _Model2 extends TransformableElement { + constructor() { + super(); + this.props = { + src: defaultModelSrc, + anim: defaultModelAnim, + animStartTime: defaultModelAnimStartTime, + animPauseTime: defaultModelAnimPauseTime, + animLoop: defaultModelAnimLoop, + animEnabled: defaultModelAnimEnabled, + castShadows: defaultModelCastShadows, + debug: defaultModelDebug + }; + this.isModel = true; + this.collideableHelper = new CollideableHelper(this); + this.modelGraphics = null; + } + enable() { + this.collideableHelper.enable(); + } + disable() { + this.collideableHelper.disable(); + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._Model2.attributeHandler.getAttributes(), + ...CollideableHelper.observedAttributes + ]; + } + getContentBounds() { + var _a; + if (!this.transformableElementGraphics) { + return null; + } + const boundingBox = (_a = this.modelGraphics) == null ? void 0 : _a.getBoundingBox(); + if (boundingBox) { + return OrientedBoundingBox.fromSizeMatrixWorldAndCenter( + boundingBox.size, + this.transformableElementGraphics.getWorldMatrix(), + boundingBox.centerOffset + ); + } + return null; + } + parentTransformed() { + var _a; + this.collideableHelper.parentTransformed(); + (_a = this.modelGraphics) == null ? void 0 : _a.transformed(); + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.modelGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Model2.attributeHandler.handle(this, name, newValue); + this.collideableHelper.handle(name, newValue); + if (TransformableElement.observedAttributes.includes(name)) { + this.modelGraphics.transformed(); + } + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.modelGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.modelGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLModelGraphicsInterface(this, () => { + var _a; + this.applyBounds(); + this.collideableHelper.updateCollider((_a = this.modelGraphics) == null ? void 0 : _a.getCollisionElement()); + }); + for (const name of _Model2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + } + disconnectedCallback() { + var _a; + this.collideableHelper.removeColliders(); + (_a = this.modelGraphics) == null ? void 0 : _a.dispose(); + this.modelGraphics = null; + super.disconnectedCallback(); + } +}; +_Model.tagName = "m-model"; +_Model.attributeHandler = new AttributeHandler({ + src: (instance, newValue) => { + var _a; + instance.props.src = newValue; + (_a = instance.modelGraphics) == null ? void 0 : _a.setSrc(newValue, instance.props); + }, + anim: (instance, newValue) => { + var _a; + instance.props.anim = newValue; + (_a = instance.modelGraphics) == null ? void 0 : _a.setAnim(newValue, instance.props); + }, + debug: (instance, newValue) => { + var _a; + instance.props.debug = parseBoolAttribute(newValue, defaultModelDebug); + (_a = instance.modelGraphics) == null ? void 0 : _a.setDebug(instance.props.debug, instance.props); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultModelCastShadows); + (_a = instance.modelGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + }, + "anim-enabled": (instance, newValue) => { + var _a; + instance.props.animEnabled = parseBoolAttribute(newValue, defaultModelAnimEnabled); + (_a = instance.modelGraphics) == null ? void 0 : _a.setAnimEnabled(instance.props.animEnabled, instance.props); + }, + "anim-loop": (instance, newValue) => { + var _a; + instance.props.animLoop = parseBoolAttribute(newValue, defaultModelAnimLoop); + (_a = instance.modelGraphics) == null ? void 0 : _a.setAnimLoop(instance.props.animLoop, instance.props); + }, + "anim-start-time": (instance, newValue) => { + var _a; + instance.props.animStartTime = parseFloatAttribute(newValue, defaultModelAnimStartTime); + (_a = instance.modelGraphics) == null ? void 0 : _a.setAnimStartTime(instance.props.animStartTime, instance.props); + }, + "anim-pause-time": (instance, newValue) => { + var _a; + instance.props.animPauseTime = parseFloatAttribute(newValue, defaultModelAnimPauseTime); + (_a = instance.modelGraphics) == null ? void 0 : _a.setAnimPauseTime(instance.props.animPauseTime, instance.props); + } +}); +var Model = _Model; +var Character = class extends Model { + static get observedAttributes() { + return [...Model.observedAttributes]; + } + constructor() { + super(); + } + parentTransformed() { + } + isClickable() { + return true; + } + connectedCallback() { + super.connectedCallback(); + } + disconnectedCallback() { + super.disconnectedCallback(); + } +}; +Character.tagName = "m-character"; +var tempContainerMatrix = new Matr4(); +var tempTargetMatrix = new Matr4(); +var tempPositionVector = new Vect3(); +var tempRotationEuler = new EulXYZ(); +var tempRotationQuaternion = new Quat(); +var tempScaleVector = new Vect3(); +function getRelativePositionAndRotationRelativeToObject(positionAndRotation, container) { + const { x, y, z } = positionAndRotation.position; + const { x: rx, y: ry, z: rz } = positionAndRotation.rotation; + tempContainerMatrix.identity(); + const tempMatr4 = new Matr4(); + for (let obj = container; obj; obj = obj.parentNode) { + if (obj instanceof TransformableElement) { + obj.calculateLocalMatrix(tempMatr4); + tempContainerMatrix.premultiply(tempMatr4); + } + } + tempContainerMatrix.invert(); + tempPositionVector.set(x, y, z); + tempRotationEuler.set(degToRad(rx), degToRad(ry), degToRad(rz)); + tempRotationQuaternion.setFromEulerXYZ(tempRotationEuler); + tempScaleVector.set(1, 1, 1); + tempTargetMatrix.compose(tempPositionVector, tempRotationQuaternion, tempScaleVector); + tempTargetMatrix.premultiply(tempContainerMatrix); + tempTargetMatrix.decompose(tempPositionVector, tempRotationQuaternion, tempScaleVector); + tempRotationEuler.setFromQuaternion(tempRotationQuaternion); + return { + position: { + x: tempPositionVector.x, + y: tempPositionVector.y, + z: tempPositionVector.z + }, + rotation: { + x: radToDeg(tempRotationEuler.x), + y: radToDeg(tempRotationEuler.y), + z: radToDeg(tempRotationEuler.z) + } + }; +} +var defaultChatProbeRange = 10; +var defaultChatProbeDebug = false; +var chatProbeChatEventName = "chat"; +var _ChatProbe = class _ChatProbe2 extends TransformableElement { + constructor() { + super(); + this.chatProbeGraphics = null; + this.registeredScene = null; + this.chatProbeAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + range: [ + 0, + defaultChatProbeRange, + (newValue) => { + var _a; + this.props.range = newValue; + (_a = this.chatProbeGraphics) == null ? void 0 : _a.setRange(newValue, this.props); + this.applyBounds(); + } + ] + }); + this.props = { + debug: defaultChatProbeDebug, + range: defaultChatProbeRange + }; + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._ChatProbe2.attributeHandler.getAttributes() + ]; + } + enable() { + } + disable() { + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(this.props.range * 2, this.props.range * 2, this.props.range * 2), + this.transformableElementGraphics.getWorldMatrix() + ); + } + addSideEffectChild(child) { + this.chatProbeAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.chatProbeAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + var _a, _b; + (_b = (_a = this.registeredScene) == null ? void 0 : _a.updateChatProbe) == null ? void 0 : _b.call(_a, this); + } + isClickable() { + return false; + } + attributeChangedCallback(name, oldValue, newValue) { + super.attributeChangedCallback(name, oldValue, newValue); + _ChatProbe2.attributeHandler.handle(this, name, newValue); + } + trigger(message) { + const userPositionAndRotation = this.getUserPositionAndRotation(); + const elementRelative = getRelativePositionAndRotationRelativeToObject( + userPositionAndRotation, + this + ); + const distance = new Vect3().copy(elementRelative.position).length(); + let withinBounds = true; + this.getAppliedBounds().forEach((bounds) => { + if (!bounds.containsPoint(userPositionAndRotation.position)) { + withinBounds = false; + } + }); + if (withinBounds && distance <= this.props.range) { + this.dispatchEvent( + new CustomEvent(chatProbeChatEventName, { + detail: { + message + } + }) + ); + } + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.chatProbeGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.chatProbeGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLChatProbeGraphicsInterface(this); + for (const name of _ChatProbe2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.applyBounds(); + this.registerChatProbe(); + } + disconnectedCallback() { + var _a; + this.unregisterChatProbe(); + this.chatProbeAnimatedAttributeHelper.reset(); + (_a = this.chatProbeGraphics) == null ? void 0 : _a.dispose(); + this.chatProbeGraphics = null; + super.disconnectedCallback(); + } + registerChatProbe() { + var _a; + const scene2 = this.getScene(); + this.registeredScene = scene2; + (_a = scene2.addChatProbe) == null ? void 0 : _a.call(scene2, this); + } + unregisterChatProbe() { + var _a, _b; + if (this.registeredScene !== null) { + (_b = (_a = this.registeredScene).removeChatProbe) == null ? void 0 : _b.call(_a, this); + this.registeredScene = null; + } + } +}; +_ChatProbe.tagName = "m-chat-probe"; +_ChatProbe.attributeHandler = new AttributeHandler({ + range: (instance, newValue) => { + instance.chatProbeAnimatedAttributeHelper.elementSetAttribute( + "range", + parseFloatAttribute(newValue, defaultChatProbeRange) + ); + }, + debug: (instance, newValue) => { + var _a; + instance.props.debug = parseBoolAttribute(newValue, defaultChatProbeDebug); + (_a = instance.chatProbeGraphics) == null ? void 0 : _a.setDebug(instance.props.debug, instance.props); + } +}); +var ChatProbe = _ChatProbe; +var defaultCubeColor = { r: 1, g: 1, b: 1 }; +var defaultCubeWidth = 1; +var defaultCubeHeight = 1; +var defaultCubeDepth = 1; +var defaultCubeOpacity = 1; +var defaultCubeCastShadows = true; +var _Cube = class _Cube2 extends TransformableElement { + constructor() { + super(); + this.cubeGraphics = null; + this.props = { + width: defaultCubeWidth, + height: defaultCubeHeight, + depth: defaultCubeDepth, + color: defaultCubeColor, + opacity: defaultCubeOpacity, + castShadows: defaultCubeCastShadows + }; + this.cubeAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + color: [ + 1, + defaultCubeColor, + (newValue) => { + var _a; + this.props.color = newValue; + (_a = this.cubeGraphics) == null ? void 0 : _a.setColor(newValue, this.props); + } + ], + width: [ + 0, + defaultCubeWidth, + (newValue) => { + var _a, _b; + this.props.width = newValue; + (_a = this.cubeGraphics) == null ? void 0 : _a.setWidth(newValue, this.props); + this.applyBounds(); + this.collideableHelper.updateCollider((_b = this.cubeGraphics) == null ? void 0 : _b.getCollisionElement()); + } + ], + height: [ + 0, + defaultCubeHeight, + (newValue) => { + var _a, _b; + this.props.height = newValue; + (_a = this.cubeGraphics) == null ? void 0 : _a.setHeight(newValue, this.props); + this.applyBounds(); + this.collideableHelper.updateCollider((_b = this.cubeGraphics) == null ? void 0 : _b.getCollisionElement()); + } + ], + depth: [ + 0, + defaultCubeDepth, + (newValue) => { + var _a, _b; + this.props.depth = newValue; + (_a = this.cubeGraphics) == null ? void 0 : _a.setDepth(newValue, this.props); + this.applyBounds(); + this.collideableHelper.updateCollider((_b = this.cubeGraphics) == null ? void 0 : _b.getCollisionElement()); + } + ], + opacity: [ + 0, + defaultCubeOpacity, + (newValue) => { + var _a; + this.props.opacity = newValue; + (_a = this.cubeGraphics) == null ? void 0 : _a.setOpacity(newValue, this.props); + } + ] + }); + this.collideableHelper = new CollideableHelper(this); + } + enable() { + this.collideableHelper.enable(); + } + disable() { + this.collideableHelper.disable(); + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(this.props.width, this.props.height, this.props.depth), + this.transformableElementGraphics.getWorldMatrix() + ); + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._Cube2.attributeHandler.getAttributes(), + ...CollideableHelper.observedAttributes + ]; + } + addSideEffectChild(child) { + this.cubeAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.cubeAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + this.collideableHelper.parentTransformed(); + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.cubeGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Cube2.attributeHandler.handle(this, name, newValue); + this.collideableHelper.handle(name, newValue); + } + connectedCallback() { + var _a; + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.cubeGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.cubeGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLCubeGraphicsInterface(this); + for (const name of _Cube2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.applyBounds(); + this.collideableHelper.updateCollider((_a = this.cubeGraphics) == null ? void 0 : _a.getCollisionElement()); + } + disconnectedCallback() { + var _a; + this.collideableHelper.removeColliders(); + this.cubeAnimatedAttributeHelper.reset(); + (_a = this.cubeGraphics) == null ? void 0 : _a.dispose(); + this.cubeGraphics = null; + super.disconnectedCallback(); + } +}; +_Cube.tagName = "m-cube"; +_Cube.attributeHandler = new AttributeHandler({ + width: (instance, newValue) => { + instance.cubeAnimatedAttributeHelper.elementSetAttribute( + "width", + parseFloatAttribute(newValue, defaultCubeWidth) + ); + }, + height: (instance, newValue) => { + instance.cubeAnimatedAttributeHelper.elementSetAttribute( + "height", + parseFloatAttribute(newValue, defaultCubeHeight) + ); + }, + depth: (instance, newValue) => { + instance.cubeAnimatedAttributeHelper.elementSetAttribute( + "depth", + parseFloatAttribute(newValue, defaultCubeDepth) + ); + }, + color: (instance, newValue) => { + instance.cubeAnimatedAttributeHelper.elementSetAttribute( + "color", + parseColorAttribute(newValue, defaultCubeColor) + ); + }, + opacity: (instance, newValue) => { + instance.cubeAnimatedAttributeHelper.elementSetAttribute( + "opacity", + parseFloatAttribute(newValue, defaultCubeOpacity) + ); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultCubeCastShadows); + (_a = instance.cubeGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + } +}); +var Cube = _Cube; +var defaultCylinderColor = { r: 1, g: 1, b: 1 }; +var defaultCylinderRadius = 0.5; +var defaultCylinderHeight = 1; +var defaultCylinderOpacity = 1; +var defaultCylinderCastShadows = true; +var _Cylinder = class _Cylinder2 extends TransformableElement { + constructor() { + super(); + this.props = { + radius: defaultCylinderRadius, + height: defaultCylinderHeight, + color: defaultCylinderColor, + opacity: defaultCylinderOpacity, + castShadows: defaultCylinderCastShadows + }; + this.cylinderAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + color: [ + 1, + defaultCylinderColor, + (newValue) => { + var _a; + this.props.color = newValue; + (_a = this.cylinderGraphics) == null ? void 0 : _a.setColor(newValue, this.props); + } + ], + radius: [ + 0, + defaultCylinderRadius, + (newValue) => { + var _a, _b; + this.props.radius = newValue; + (_a = this.cylinderGraphics) == null ? void 0 : _a.setRadius(newValue, this.props); + this.applyBounds(); + this.collideableHelper.updateCollider((_b = this.cylinderGraphics) == null ? void 0 : _b.getCollisionElement()); + } + ], + height: [ + 0, + defaultCylinderHeight, + (newValue) => { + var _a, _b; + this.props.height = newValue; + (_a = this.cylinderGraphics) == null ? void 0 : _a.setHeight(newValue, this.props); + this.applyBounds(); + this.collideableHelper.updateCollider((_b = this.cylinderGraphics) == null ? void 0 : _b.getCollisionElement()); + } + ], + opacity: [ + 0, + defaultCylinderOpacity, + (newValue) => { + var _a; + this.props.opacity = newValue; + (_a = this.cylinderGraphics) == null ? void 0 : _a.setOpacity(newValue, this.props); + } + ] + }); + this.collideableHelper = new CollideableHelper(this); + } + enable() { + this.collideableHelper.enable(); + } + disable() { + this.collideableHelper.disable(); + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(this.props.radius * 2, this.props.height, this.props.radius * 2), + this.transformableElementGraphics.getWorldMatrix() + ); + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._Cylinder2.attributeHandler.getAttributes(), + ...CollideableHelper.observedAttributes + ]; + } + addSideEffectChild(child) { + this.cylinderAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.cylinderAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + this.collideableHelper.parentTransformed(); + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.cylinderGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Cylinder2.attributeHandler.handle(this, name, newValue); + this.collideableHelper.handle(name, newValue); + } + connectedCallback() { + var _a; + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.cylinderGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.cylinderGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLCylinderGraphicsInterface(this); + for (const name of _Cylinder2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.applyBounds(); + this.collideableHelper.updateCollider((_a = this.cylinderGraphics) == null ? void 0 : _a.getCollisionElement()); + } + disconnectedCallback() { + var _a; + this.collideableHelper.removeColliders(); + this.cylinderAnimatedAttributeHelper.reset(); + (_a = this.cylinderGraphics) == null ? void 0 : _a.dispose(); + this.cylinderGraphics = null; + super.disconnectedCallback(); + } +}; +_Cylinder.tagName = "m-cylinder"; +_Cylinder.attributeHandler = new AttributeHandler({ + radius: (instance, newValue) => { + instance.cylinderAnimatedAttributeHelper.elementSetAttribute( + "radius", + parseFloatAttribute(newValue, defaultCylinderRadius) + ); + }, + height: (instance, newValue) => { + instance.cylinderAnimatedAttributeHelper.elementSetAttribute( + "height", + parseFloatAttribute(newValue, defaultCylinderHeight) + ); + }, + color: (instance, newValue) => { + instance.cylinderAnimatedAttributeHelper.elementSetAttribute( + "color", + parseColorAttribute(newValue, defaultCylinderColor) + ); + }, + opacity: (instance, newValue) => { + instance.cylinderAnimatedAttributeHelper.elementSetAttribute( + "opacity", + parseFloatAttribute(newValue, defaultCylinderOpacity) + ); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultCylinderCastShadows); + (_a = instance.cylinderGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + } +}); +var Cylinder = _Cylinder; +function createWrappedScene(scene2, loadingProgressManager) { + return { + addCollider(collider, element) { + if (scene2.addCollider) { + scene2.addCollider(collider, element); + } + }, + updateCollider(collider, element) { + if (scene2.updateCollider) { + scene2.updateCollider(collider, element); + } + }, + removeCollider(collider, element) { + if (scene2.removeCollider) { + scene2.removeCollider(collider, element); + } + }, + addInteraction(interaction) { + if (scene2.addInteraction) { + scene2.addInteraction(interaction); + } + }, + updateInteraction(interaction) { + if (scene2.updateInteraction) { + scene2.updateInteraction(interaction); + } + }, + removeInteraction(interaction) { + if (scene2.removeInteraction) { + scene2.removeInteraction(interaction); + } + }, + addChatProbe(chatProbe) { + if (scene2.addChatProbe) { + scene2.addChatProbe(chatProbe); + } + }, + updateChatProbe(chatProbe) { + if (scene2.updateChatProbe) { + scene2.updateChatProbe(chatProbe); + } + }, + removeChatProbe(chatProbe) { + if (scene2.removeChatProbe) { + scene2.removeChatProbe(chatProbe); + } + }, + hasGraphicsAdapter() { + return scene2.hasGraphicsAdapter(); + }, + getGraphicsAdapter() { + return scene2.getGraphicsAdapter(); + }, + prompt(promptProps, abortSignal, callback) { + scene2.prompt(promptProps, abortSignal, callback); + }, + link(linkProps, abortSignal, windowCallback) { + scene2.link(linkProps, abortSignal, windowCallback); + }, + getRootContainer: () => { + throw new Error("Wrapped scenes do not have a root container"); + }, + getUserPositionAndRotation: () => { + return scene2.getUserPositionAndRotation(); + }, + getLoadingProgressManager: () => { + return loadingProgressManager; + } + }; +} +var noManagerSymbol = Symbol("NoLoadingProgressManagerProvided"); +var LoadingInstanceManager = class { + constructor(type) { + this.type = type; + this.currentlyLoadingProgressManager = null; + } + start(loadingProgressManager, url) { + if (this.currentlyLoadingProgressManager !== null) { + if (this.currentlyLoadingProgressManager === noManagerSymbol && !loadingProgressManager) { + return; + } + if (this.currentlyLoadingProgressManager !== loadingProgressManager) { + throw new Error("Already loading with a different progress manager"); + } + } else { + if (!loadingProgressManager) { + this.currentlyLoadingProgressManager = noManagerSymbol; + } else { + this.currentlyLoadingProgressManager = loadingProgressManager; + this.currentlyLoadingProgressManager.addLoadingAsset(this, url, this.type); + } + } + } + setProgress(ratio) { + if (!this.currentlyLoadingProgressManager) { + throw new Error("Not currently loading - cannot finish"); + } + if (this.currentlyLoadingProgressManager !== noManagerSymbol) { + this.currentlyLoadingProgressManager.updateAssetProgress(this, ratio); + } + } + // The content being loaded is no longer needed, but the instance may still request content load start again + abortIfLoading() { + if (this.currentlyLoadingProgressManager && this.currentlyLoadingProgressManager !== noManagerSymbol) { + this.currentlyLoadingProgressManager.disposeOfLoadingAsset(this); + } + this.currentlyLoadingProgressManager = null; + } + // The instance is no longer needed, and will not request content load start again (content may not be loading) + dispose() { + this.abortIfLoading(); + } + finish() { + if (!this.currentlyLoadingProgressManager) { + throw new Error("Not currently loading - cannot finish"); + } + if (this.currentlyLoadingProgressManager !== noManagerSymbol) { + this.currentlyLoadingProgressManager.completedLoadingAsset(this); + } + } + error(err) { + if (!this.currentlyLoadingProgressManager) { + throw new Error("Not currently loading - cannot error"); + } + if (this.currentlyLoadingProgressManager !== noManagerSymbol) { + if (err) { + this.currentlyLoadingProgressManager.errorLoadingAsset(this, err); + } else { + this.currentlyLoadingProgressManager.errorLoadingAsset(this, new Error("Unknown error")); + } + } + } +}; +var LoadingProgressManager = class { + constructor() { + this.summary = { + totalLoaded: 0, + totalErrored: 0, + totalToLoad: 0 + }; + this.initialLoad = false; + this.loadingAssets = /* @__PURE__ */ new Map(); + this.summaryByType = /* @__PURE__ */ new Map(); + this.loadingDocuments = /* @__PURE__ */ new Map(); + this.onProgressCallbacks = /* @__PURE__ */ new Set(); + } + addProgressCallback(callback) { + this.onProgressCallbacks.add(callback); + } + removeProgressCallback(callback) { + this.onProgressCallbacks.delete(callback); + } + onProgress() { + for (const callback of this.onProgressCallbacks) { + callback(); + } + } + addLoadingAsset(ref, url, type) { + if (this.loadingAssets.has(ref)) { + throw new Error("Asset reference already exists"); + } + const assetRecord = { type, assetUrl: url, progressRatio: 0, loadStatus: false }; + this.loadingAssets.set(ref, assetRecord); + let typeSummary = this.summaryByType.get(type); + if (!typeSummary) { + typeSummary = { totalLoaded: 0, totalToLoad: 0, totalErrored: 0, assets: /* @__PURE__ */ new Map() }; + this.summaryByType.set(type, typeSummary); + } + typeSummary.assets.set(ref, assetRecord); + typeSummary.totalToLoad++; + this.summary.totalToLoad++; + this.onProgress(); + } + setInitialLoad(result) { + if (result instanceof Error) { + this.initialLoad = result; + } else { + this.initialLoad = true; + } + this.onProgress(); + } + disposeOfLoadingAsset(ref) { + const asset = this.loadingAssets.get(ref); + if (asset) { + this.loadingAssets.delete(ref); + const { type, loadStatus } = asset; + const typeSummary = this.summaryByType.get(type); + if (typeSummary) { + typeSummary.assets.delete(ref); + typeSummary.totalToLoad--; + this.summary.totalToLoad--; + if (loadStatus === true) { + typeSummary.totalLoaded--; + this.summary.totalLoaded--; + } else if (loadStatus instanceof Error) { + typeSummary.totalErrored--; + this.summary.totalErrored--; + } + this.onProgress(); + } + } + } + errorLoadingAsset(ref, err) { + const asset = this.loadingAssets.get(ref); + if (asset) { + const { type } = asset; + asset.loadStatus = err; + const typeSummary = this.summaryByType.get(type); + if (typeSummary) { + typeSummary.totalErrored++; + this.summary.totalErrored++; + this.onProgress(); + } + } + } + updateAssetProgress(ref, progressRatio) { + const asset = this.loadingAssets.get(ref); + if (asset) { + asset.progressRatio = progressRatio; + this.onProgress(); + } + } + completedLoadingAsset(ref) { + const asset = this.loadingAssets.get(ref); + if (asset) { + const { type } = asset; + asset.loadStatus = true; + const typeSummary = this.summaryByType.get(type); + if (typeSummary) { + typeSummary.totalLoaded++; + this.summary.totalLoaded++; + this.onProgress(); + } + } + } + addLoadingDocument(ref, documentUrl, progressManager) { + this.loadingDocuments.set(ref, { documentUrl, progressManager }); + this.onProgress(); + } + removeLoadingDocument(ref) { + this.loadingDocuments.delete(ref); + this.onProgress(); + } + updateDocumentProgress(ref) { + const loadingDocument = this.loadingDocuments.get(ref); + if (loadingDocument) { + this.onProgress(); + } + } + toSummary() { + const loadingProgressSummary = { + initialLoad: this.initialLoad, + summary: { ...this.summary }, + summaryByType: {}, + innerDocuments: [] + }; + for (const [key, ofType] of this.summaryByType) { + const ofTypeSummary = { + totalToLoad: ofType.totalToLoad, + totalLoaded: ofType.totalLoaded, + totalErrored: ofType.totalErrored, + assetErrors: [] + }; + if (ofType.totalErrored > 0) { + for (const [, asset] of ofType.assets) { + if (asset.loadStatus instanceof Error) { + ofTypeSummary.assetErrors.push([asset.assetUrl, asset.loadStatus]); + } + } + } + loadingProgressSummary.summaryByType[key] = ofTypeSummary; + } + for (const [, innerDocProgress] of this.loadingDocuments) { + loadingProgressSummary.innerDocuments.push([ + innerDocProgress.documentUrl, + innerDocProgress.progressManager.toSummary() + ]); + } + return loadingProgressSummary; + } + static LoadingProgressSummaryToString(loadingProgressSummary) { + const text = []; + const showDocProgress = (docUrl, docProgress) => { + if (docProgress.initialLoad instanceof Error) { + text.push(`${docUrl}: Error: ${docProgress.initialLoad.message}`); + return; + } else if (!docProgress.initialLoad) { + text.push(`${docUrl}: Loading...`); + return; + } + text.push( + `${docUrl}: (${docProgress.summary.totalLoaded} loaded, ${docProgress.summary.totalErrored} errors) / (${docProgress.summary.totalToLoad} to load) = ${docProgress.summary.totalLoaded + docProgress.summary.totalErrored}/${docProgress.summary.totalToLoad}` + ); + for (const key in docProgress.summaryByType) { + const ofType = docProgress.summaryByType[key]; + text.push( + ` - ${key}: (${ofType.totalLoaded} loaded, ${ofType.totalErrored} errors) / (${ofType.totalToLoad} to load) = ${ofType.totalLoaded + ofType.totalErrored}/${ofType.totalToLoad}` + ); + if (ofType.totalErrored > 0) { + text.push(` - Errors:`); + for (const [assetUrl, error] of ofType.assetErrors) { + text.push(` - ${assetUrl}: ${error.message}`); + } + } + } + for (const [innerDocumentUrl, innerDocProgress] of docProgress.innerDocuments) { + showDocProgress(innerDocumentUrl, innerDocProgress); + } + }; + showDocProgress("root", loadingProgressSummary); + return text.join("\n"); + } + toRatio() { + if (!this.initialLoad) { + return [0, false]; + } + if (this.initialLoad instanceof Error) { + return [1, true]; + } + let totalRatio = 0; + let complete = true; + let numberOfDocuments = this.loadingDocuments.size; + if (this.summary.totalToLoad > 0) { + numberOfDocuments += 1; + const loadedAndErrored = this.summary.totalLoaded + this.summary.totalErrored; + complete = complete && loadedAndErrored === this.summary.totalToLoad; + let directAssetsLoadedRatio = 0; + for (const [, asset] of this.loadingAssets) { + if (asset.loadStatus instanceof Error || asset.loadStatus) { + directAssetsLoadedRatio += 1; + } else { + directAssetsLoadedRatio += asset.progressRatio; + } + } + directAssetsLoadedRatio /= this.summary.totalToLoad; + totalRatio += directAssetsLoadedRatio / numberOfDocuments; + } else if (this.loadingDocuments.size === 0) { + return [1, true]; + } + for (const [, innerDocument] of this.loadingDocuments) { + const [innerDocumentRatio, innerDocumentComplete] = innerDocument.progressManager.toRatio(); + totalRatio += innerDocumentRatio / numberOfDocuments; + complete = complete && innerDocumentComplete; + } + return [totalRatio, complete]; + } +}; +var LoadingProgressBar = class { + constructor(loadingProgressManager) { + this.loadingProgressManager = loadingProgressManager; + this.hasCompleted = false; + this.element = document.createElement("div"); + this.element.addEventListener("click", (event) => { + event.stopPropagation(); + }); + this.element.addEventListener("mousedown", (event) => { + event.stopPropagation(); + }); + this.element.addEventListener("mousemove", (event) => { + event.stopPropagation(); + }); + this.element.addEventListener("mouseup", (event) => { + event.stopPropagation(); + }); + this.progressDebugView = document.createElement("div"); + this.progressDebugView.style.position = "absolute"; + this.progressDebugView.style.backgroundColor = "rgba(128, 128, 128, 0.25)"; + this.progressDebugView.style.top = "20px"; + this.progressDebugView.style.left = "0"; + this.progressDebugView.style.border = "1px solid black"; + this.progressDebugView.style.maxHeight = "calc(100% - 20px)"; + this.progressDebugView.style.maxWidth = "100%"; + this.progressDebugView.style.overflow = "auto"; + this.element.append(this.progressDebugView); + this.debugCheckbox = document.createElement("input"); + this.debugCheckbox.type = "checkbox"; + this.debugCheckbox.addEventListener("change", () => { + this.progressDebugElement.style.display = this.debugCheckbox.checked ? "block" : "none"; + if (this.hasCompleted) { + this.dispose(); + } + }); + this.debugLabel = document.createElement("label"); + this.debugLabel.textContent = "Debug loading"; + this.debugLabel.style.fontFamily = "sans-serif"; + this.debugLabel.style.padding = "5px"; + this.debugLabel.style.display = "inline-block"; + this.debugLabel.style.userSelect = "none"; + this.debugLabel.append(this.debugCheckbox); + this.progressDebugView.append(this.debugLabel); + this.progressDebugElement = document.createElement("pre"); + this.progressDebugElement.style.margin = "0"; + this.progressDebugElement.style.display = this.debugCheckbox.checked ? "block" : "none"; + this.progressDebugView.append(this.progressDebugElement); + this.progressBarHolder = document.createElement("div"); + this.progressBarHolder.style.position = "absolute"; + this.progressBarHolder.style.top = "0"; + this.progressBarHolder.style.left = "0"; + this.progressBarHolder.style.width = "100%"; + this.progressBarHolder.style.backgroundColor = "gray"; + this.progressBarHolder.style.height = "20px"; + this.element.append(this.progressBarHolder); + this.progressBar = document.createElement("div"); + this.progressBar.style.position = "absolute"; + this.progressBar.style.top = "0"; + this.progressBar.style.left = "0"; + this.progressBar.style.width = "0"; + this.progressBar.style.height = "100%"; + this.progressBar.style.backgroundColor = "#0050a4"; + this.progressBarHolder.append(this.progressBar); + this.loadingStatusText = document.createElement("div"); + this.loadingStatusText.style.position = "absolute"; + this.loadingStatusText.style.top = "0"; + this.loadingStatusText.style.left = "0"; + this.loadingStatusText.style.width = "100%"; + this.loadingStatusText.style.height = "100%"; + this.loadingStatusText.style.color = "white"; + this.loadingStatusText.style.textAlign = "center"; + this.loadingStatusText.style.verticalAlign = "middle"; + this.loadingStatusText.style.lineHeight = "20px"; + this.loadingStatusText.style.fontFamily = "sans-serif"; + this.loadingStatusText.textContent = "Loading..."; + this.progressBarHolder.append(this.loadingStatusText); + this.loadingCallback = () => { + const [loadingRatio, completedLoading] = this.loadingProgressManager.toRatio(); + if (completedLoading) { + if (!this.hasCompleted) { + this.hasCompleted = true; + if (!this.debugCheckbox.checked) { + this.dispose(); + } + } + this.loadingStatusText.textContent = "Completed"; + this.progressBar.style.width = "100%"; + } else { + this.loadingStatusText.textContent = `Loading... ${(loadingRatio * 100).toFixed(2)}%`; + this.progressBar.style.width = `${loadingRatio * 100}%`; + } + this.progressDebugElement.textContent = LoadingProgressManager.LoadingProgressSummaryToString( + this.loadingProgressManager.toSummary() + ); + }; + this.loadingProgressManager.addProgressCallback(this.loadingCallback); + } + dispose() { + this.loadingProgressManager.removeProgressCallback(this.loadingCallback); + this.element.remove(); + } +}; +var domParser; +async function fetchRemoteStaticMML(address) { + const response = await fetch(address); + const text = await response.text(); + if (!domParser) { + domParser = new DOMParser(); + } + const remoteDocumentAsHTMLNode = domParser.parseFromString(text, "text/html"); + return DOMSanitizer.sanitise(remoteDocumentAsHTMLNode.body, { + tagPrefix: "m-", + replacementTagPrefix: "x-" + }); +} +var RemoteDocumentWrapper = class { + constructor(address, targetWindow, mmlScene, handleEvent) { + this.remoteDocument = targetWindow.document.createElement( + RemoteDocument.tagName + ); + this.remoteDocument.addEventListener(consumeEventEventName, (wrappedEvent) => { + const { originalEvent, element } = wrappedEvent.detail; + handleEvent(element, originalEvent); + }); + this.remoteDocument.init(mmlScene, address); + } + setDocumentTime(documentTime) { + this.remoteDocument.getDocumentTimeManager().setDocumentTime(documentTime); + } + overrideDocumentTime(documentTime) { + this.remoteDocument.getDocumentTimeManager().overrideDocumentTime(documentTime); + } +}; +var StaticHTMLFrameInstance = class { + constructor(targetElement, src, scene2) { + var _a, _b; + this.targetForWrapper = targetElement; + this.src = src; + this.scene = scene2; + const windowTarget = targetElement.ownerDocument.defaultView; + this.loadingProgressManager = new LoadingProgressManager(); + this.loadingProgressManager.addProgressCallback(() => { + var _a2, _b2; + (_b2 = (_a2 = scene2.getLoadingProgressManager) == null ? void 0 : _a2.call(scene2)) == null ? void 0 : _b2.updateDocumentProgress(this); + }); + const address = this.targetForWrapper.contentSrcToContentAddress(this.src); + (_b = (_a = scene2.getLoadingProgressManager) == null ? void 0 : _a.call(scene2)) == null ? void 0 : _b.addLoadingDocument(this, address, this.loadingProgressManager); + const wrappedScene = createWrappedScene(this.scene, this.loadingProgressManager); + this.remoteDocumentWrapper = new RemoteDocumentWrapper( + address, + windowTarget, + wrappedScene, + () => { + } + ); + this.targetForWrapper.append(this.remoteDocumentWrapper.remoteDocument); + fetchRemoteStaticMML(address).then((remoteDocumentBody) => { + this.remoteDocumentWrapper.remoteDocument.append(remoteDocumentBody); + this.loadingProgressManager.setInitialLoad(true); + }).catch((err) => { + this.loadingProgressManager.setInitialLoad(err); + }); + } + dispose() { + this.targetForWrapper.removeChild(this.remoteDocumentWrapper.remoteDocument); + this.loadingProgressManager.removeLoadingDocument(this); + } +}; +var WebSocketFrameInstance = class { + constructor(targetElement, src, scene2) { + var _a, _b; + this.targetForWrapper = targetElement; + this.src = src; + this.scene = scene2; + const windowTarget = targetElement.ownerDocument.defaultView; + let overriddenHandler = null; + const eventHandler = (element, event) => { + if (!overriddenHandler) { + throw new Error("overriddenHandler not set"); + } + overriddenHandler(element, event); + }; + this.loadingProgressManager = new LoadingProgressManager(); + this.loadingProgressManager.addProgressCallback(() => { + var _a2, _b2; + (_b2 = (_a2 = scene2.getLoadingProgressManager) == null ? void 0 : _a2.call(scene2)) == null ? void 0 : _b2.updateDocumentProgress(this); + }); + const websocketAddress = this.srcToAddress(this.src); + (_b = (_a = scene2.getLoadingProgressManager) == null ? void 0 : _a.call(scene2)) == null ? void 0 : _b.addLoadingDocument(this, websocketAddress, this.loadingProgressManager); + const wrappedScene = createWrappedScene(this.scene, this.loadingProgressManager); + this.remoteDocumentWrapper = new RemoteDocumentWrapper( + websocketAddress, + windowTarget, + wrappedScene, + () => { + } + ); + this.targetForWrapper.append(this.remoteDocumentWrapper.remoteDocument); + this.remoteDocumentWrapper.remoteDocument.addEventListener( + consumeEventEventName, + (wrappedEvent) => { + const { originalEvent, element } = wrappedEvent.detail; + eventHandler(element, originalEvent); + } + ); + this.domWebsocket = new NetworkedDOMWebsocket( + websocketAddress, + NetworkedDOMWebsocket.createWebSocket, + this.remoteDocumentWrapper.remoteDocument, + (time) => { + this.remoteDocumentWrapper.remoteDocument.getDocumentTimeManager().setDocumentTime(time); + }, + (status) => { + if (status === NetworkedDOMWebsocketStatus.Reconnecting) { + this.remoteDocumentWrapper.remoteDocument.showError(true); + this.loadingProgressManager.setInitialLoad(new Error("Failed to connect")); + } else if (status === NetworkedDOMWebsocketStatus.Connected) { + this.remoteDocumentWrapper.remoteDocument.showError(false); + this.loadingProgressManager.setInitialLoad(true); + } else { + this.remoteDocumentWrapper.remoteDocument.showError(false); + } + }, + { + tagPrefix: "m-" + } + ); + overriddenHandler = (element, event) => { + this.domWebsocket.handleEvent(element, event); + }; + } + srcToAddress(src) { + const insecurePrefix = "ws:///"; + const securePrefix = "wss:///"; + if (src.startsWith(insecurePrefix)) { + return `ws://${this.getDocumentHost()}/${src.substring(insecurePrefix.length)}`; + } else if (src.startsWith(securePrefix)) { + return `wss://${this.getDocumentHost()}/${src.substring(securePrefix.length)}`; + } else { + return src; + } + } + getDocumentHost() { + const remoteDocument = this.targetForWrapper.getInitiatedRemoteDocument(); + if (remoteDocument) { + const remoteDocumentAddress = remoteDocument.getDocumentAddress(); + if (remoteDocumentAddress) { + const url = new URL(remoteDocumentAddress); + return url.host; + } + } + return window.location.host; + } + dispose() { + var _a, _b, _c; + this.domWebsocket.stop(); + this.targetForWrapper.removeChild(this.remoteDocumentWrapper.remoteDocument); + (_c = (_b = (_a = this.scene).getLoadingProgressManager) == null ? void 0 : _b.call(_a)) == null ? void 0 : _c.removeLoadingDocument(this); + } +}; +var defaultUnloadRange = 1; +var defaultFrameDebug = false; +var _Frame = class _Frame2 extends TransformableElement { + constructor() { + super(); + this.frameContentsInstance = null; + this.isActivelyLoaded = false; + this.timer = null; + this.props = { + src: null, + loadRange: null, + unloadRange: defaultUnloadRange, + debug: defaultFrameDebug, + minX: null, + maxX: null, + minY: null, + maxY: null, + minZ: null, + maxZ: null + }; + } + enable() { + } + disable() { + } + boundsUpdated() { + if (!this.transformableElementGraphics) { + return; + } + const boxBounds = this.getDefinedBoxBounds(); + if (boxBounds) { + const [minX, maxX, minY, maxY, minZ, maxZ] = boxBounds; + const obb = OrientedBoundingBox.fromSizeMatrixWorldAndCenter( + new Vect3(maxX - minX, maxY - minY, maxZ - minZ), + this.transformableElementGraphics.getWorldMatrix(), + new Vect3((maxX + minX) / 2, (maxY + minY) / 2, (maxZ + minZ) / 2) + ); + this.addOrUpdateParentBound(this, obb); + } else { + this.removeParentBound(this); + } + } + shouldBeLoaded() { + if (!this.isConnected) { + return false; + } + if (this.props.loadRange === null) { + return true; + } + const userPositionAndRotation = this.getUserPositionAndRotation(); + const elementRelative = getRelativePositionAndRotationRelativeToObject( + userPositionAndRotation, + this + ); + let boxBounds = this.getDefinedBoxBounds(); + if (!boxBounds) { + boxBounds = [0, 0, 0, 0, 0, 0]; + } + const [minX, maxX, minY, maxY, minZ, maxZ] = boxBounds; + if (elementRelative.position.x >= minX - this.props.loadRange && elementRelative.position.x <= maxX + this.props.loadRange && elementRelative.position.y >= minY - this.props.loadRange && elementRelative.position.y <= maxY + this.props.loadRange && elementRelative.position.z >= minZ - this.props.loadRange && elementRelative.position.z <= maxZ + this.props.loadRange) { + return true; + } + if (elementRelative.position.x >= minX - this.props.loadRange - this.props.unloadRange && elementRelative.position.x <= maxX + this.props.loadRange + this.props.unloadRange && elementRelative.position.y >= minY - this.props.loadRange - this.props.unloadRange && elementRelative.position.y <= maxY + this.props.loadRange + this.props.unloadRange && elementRelative.position.z >= minZ - this.props.loadRange - this.props.unloadRange && elementRelative.position.z <= maxZ + this.props.loadRange + this.props.unloadRange) { + return this.isActivelyLoaded; + } + } + syncLoadState() { + const shouldBeLoaded = this.shouldBeLoaded(); + if (shouldBeLoaded && !this.isActivelyLoaded) { + if (this.props.src) { + this.isActivelyLoaded = true; + this.createFrameContentsInstance(this.props.src); + } + } else if (!shouldBeLoaded && this.isActivelyLoaded) { + this.isActivelyLoaded = false; + this.disposeInstance(); + } + } + static get observedAttributes() { + return [...TransformableElement.observedAttributes, ..._Frame2.attributeHandler.getAttributes()]; + } + getContentBounds() { + return null; + } + parentTransformed() { + this.boundsUpdated(); + } + isClickable() { + return true; + } + startEmitting() { + if (this.timer) { + clearInterval(this.timer); + } + this.timer = setInterval(() => { + this.syncLoadState(); + }, 100); + } + createFrameContentsInstance(src) { + if (this.frameContentsInstance) { + if (this.frameContentsInstance.src !== src) { + console.error("Instance already existed with a different src"); + this.disposeInstance(); + } else { + return; + } + } + if (src.startsWith("ws://") || src.startsWith("wss://")) { + this.frameContentsInstance = new WebSocketFrameInstance(this, src, this.getScene()); + } else { + this.frameContentsInstance = new StaticHTMLFrameInstance(this, src, this.getScene()); + } + } + getDefinedBoxBounds() { + if (this.props.minX !== null || this.props.maxX !== null || this.props.minY !== null || this.props.maxY !== null || this.props.minZ !== null || this.props.maxZ !== null) { + const minX = this.props.minX ?? this.props.maxX ?? 0; + let maxX = this.props.maxX ?? this.props.minX ?? 0; + const minY = this.props.minY ?? this.props.maxY ?? 0; + let maxY = this.props.maxY ?? this.props.minY ?? 0; + const minZ = this.props.minZ ?? this.props.maxZ ?? 0; + let maxZ = this.props.maxZ ?? this.props.minZ ?? 0; + if (minX > maxX) { + maxX = minX; + } + if (minY > maxY) { + maxY = minY; + } + if (minZ > maxZ) { + maxZ = minZ; + } + return [minX, maxX, minY, maxY, minZ, maxZ]; + } + return null; + } + disposeInstance() { + if (this.frameContentsInstance !== null) { + this.frameContentsInstance.dispose(); + this.frameContentsInstance = null; + this.isActivelyLoaded = false; + } + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.frameGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Frame2.attributeHandler.handle(this, name, newValue); + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.frameGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.startEmitting(); + this.syncLoadState(); + this.frameGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLFrameGraphicsInterface(this); + for (const name of _Frame2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.applyBounds(); + } + disconnectedCallback() { + var _a; + (_a = this.frameGraphics) == null ? void 0 : _a.dispose(); + this.frameGraphics = null; + if (this.timer) { + clearInterval(this.timer); + } + this.disposeInstance(); + super.disconnectedCallback(); + } +}; +_Frame.tagName = "m-frame"; +_Frame.attributeHandler = new AttributeHandler({ + src: (instance, newValue) => { + var _a; + instance.props.src = newValue; + if (instance.frameContentsInstance) { + instance.disposeInstance(); + } + instance.syncLoadState(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setSrc(instance.props.src, instance.props); + }, + "load-range": (instance, newValue) => { + var _a; + instance.props.loadRange = parseFloatAttribute(newValue, null); + instance.syncLoadState(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setLoadRange(instance.props.loadRange, instance.props); + }, + "unload-range": (instance, newValue) => { + var _a; + instance.props.unloadRange = parseFloatAttribute(newValue, defaultUnloadRange); + instance.syncLoadState(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setUnloadRange(instance.props.unloadRange, instance.props); + }, + debug: (instance, newValue) => { + var _a; + instance.props.debug = parseBoolAttribute(newValue, defaultFrameDebug); + (_a = instance.frameGraphics) == null ? void 0 : _a.setDebug(instance.props.debug, instance.props); + }, + "min-x": (instance, newValue) => { + var _a; + instance.props.minX = parseFloatAttribute(newValue, null); + instance.boundsUpdated(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setMinX(instance.props.minX, instance.props); + }, + "max-x": (instance, newValue) => { + var _a; + instance.props.maxX = parseFloatAttribute(newValue, null); + instance.boundsUpdated(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setMaxX(instance.props.maxX, instance.props); + }, + "min-y": (instance, newValue) => { + var _a; + instance.props.minY = parseFloatAttribute(newValue, null); + instance.boundsUpdated(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setMinY(instance.props.minY, instance.props); + }, + "max-y": (instance, newValue) => { + var _a; + instance.props.maxY = parseFloatAttribute(newValue, null); + instance.boundsUpdated(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setMaxY(instance.props.maxY, instance.props); + }, + "min-z": (instance, newValue) => { + var _a; + instance.props.minZ = parseFloatAttribute(newValue, null); + instance.boundsUpdated(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setMinZ(instance.props.minZ, instance.props); + }, + "max-z": (instance, newValue) => { + var _a; + instance.props.maxZ = parseFloatAttribute(newValue, null); + instance.boundsUpdated(); + (_a = instance.frameGraphics) == null ? void 0 : _a.setMaxZ(instance.props.maxZ, instance.props); + } +}); +var Frame = _Frame; +var _Group = class _Group2 extends TransformableElement { + static get observedAttributes() { + return [...TransformableElement.observedAttributes]; + } + enable() { + } + disable() { + } + constructor() { + super(); + } + getContentBounds() { + return null; + } + parentTransformed() { + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.transformableElementGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter()) { + return; + } + for (const name of _Group2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + } +}; +_Group.tagName = "m-group"; +var Group = _Group; +var defaultImageSrc = null; +var defaultImageWidth = null; +var defaultImageHeight = null; +var defaultImageOpacity = 1; +var defaultImageCastShadows = true; +var defaultImageEmissive = 0; +var _Image = class _Image2 extends TransformableElement { + constructor() { + super(); + this.props = { + src: defaultImageSrc, + width: defaultImageWidth, + height: defaultImageHeight, + opacity: defaultImageOpacity, + castShadows: defaultImageCastShadows, + emissive: defaultImageEmissive + }; + this.imageAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + width: [ + 0, + defaultImageWidth, + (newValue) => { + var _a; + this.props.width = newValue; + (_a = this.imageGraphics) == null ? void 0 : _a.setWidth(newValue, this.props); + } + ], + height: [ + 0, + defaultImageHeight, + (newValue) => { + var _a; + this.props.height = newValue; + (_a = this.imageGraphics) == null ? void 0 : _a.setHeight(newValue, this.props); + } + ], + opacity: [ + 0, + defaultImageOpacity, + (newValue) => { + var _a; + this.props.opacity = newValue; + (_a = this.imageGraphics) == null ? void 0 : _a.setOpacity(newValue, this.props); + } + ], + emissive: [ + 0, + defaultImageEmissive, + (newValue) => { + var _a; + this.props.emissive = newValue; + (_a = this.imageGraphics) == null ? void 0 : _a.setEmissive(newValue, this.props); + } + ] + }); + this.collideableHelper = new CollideableHelper(this); + } + enable() { + this.collideableHelper.enable(); + } + disable() { + this.collideableHelper.disable(); + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._Image2.attributeHandler.getAttributes(), + ...CollideableHelper.observedAttributes + ]; + } + getContentBounds() { + var _a; + if (!this.transformableElementGraphics) { + return null; + } + const { width, height } = ((_a = this.imageGraphics) == null ? void 0 : _a.getWidthAndHeight()) || { width: 0, height: 0 }; + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(width, height, 0), + this.transformableElementGraphics.getWorldMatrix() + ); + } + addSideEffectChild(child) { + this.imageAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.imageAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + this.collideableHelper.parentTransformed(); + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.imageGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Image2.attributeHandler.handle(this, name, newValue); + this.collideableHelper.handle(name, newValue); + } + connectedCallback() { + var _a; + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.imageGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.imageGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLImageGraphicsInterface(this, () => { + var _a2; + this.applyBounds(); + this.collideableHelper.updateCollider((_a2 = this.imageGraphics) == null ? void 0 : _a2.getCollisionElement()); + }); + for (const name of _Image2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.collideableHelper.updateCollider((_a = this.imageGraphics) == null ? void 0 : _a.getCollisionElement()); + } + disconnectedCallback() { + var _a; + this.imageAnimatedAttributeHelper.reset(); + (_a = this.imageGraphics) == null ? void 0 : _a.dispose(); + this.imageGraphics = null; + super.disconnectedCallback(); + this.collideableHelper.removeColliders(); + } +}; +_Image.tagName = "m-image"; +_Image.attributeHandler = new AttributeHandler({ + width: (instance, newValue) => { + instance.imageAnimatedAttributeHelper.elementSetAttribute( + "width", + parseFloatAttribute(newValue, defaultImageWidth) + ); + }, + height: (instance, newValue) => { + instance.imageAnimatedAttributeHelper.elementSetAttribute( + "height", + parseFloatAttribute(newValue, defaultImageHeight) + ); + }, + src: (instance, newValue) => { + var _a; + instance.props.src = newValue; + (_a = instance.imageGraphics) == null ? void 0 : _a.setSrc(newValue, instance.props); + }, + opacity: (instance, newValue) => { + instance.imageAnimatedAttributeHelper.elementSetAttribute( + "opacity", + parseFloatAttribute(newValue, defaultImageOpacity) + ); + }, + emissive: (instance, newValue) => { + instance.imageAnimatedAttributeHelper.elementSetAttribute( + "emissive", + parseFloatAttribute(newValue, defaultImageEmissive) + ); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultImageCastShadows); + (_a = instance.imageGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + } +}); +var Image = _Image; +var defaultInteractionRange = 5; +var defaultInteractionInFocus = true; +var defaultInteractionLineOfSight = false; +var defaultInteractionPriority = 1; +var defaultInteractionPrompt = null; +var defaultInteractionDebug = false; +var _Interaction = class _Interaction2 extends TransformableElement { + constructor() { + super(); + this.interactionAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + range: [ + 0, + defaultInteractionRange, + (newValue) => { + var _a; + this.props.range = newValue; + this.applyBounds(); + (_a = this.interactionGraphics) == null ? void 0 : _a.setRange(newValue, this.props); + } + ] + }); + this.props = { + range: defaultInteractionRange, + inFocus: defaultInteractionInFocus, + lineOfSight: defaultInteractionLineOfSight, + priority: defaultInteractionPriority, + prompt: defaultInteractionPrompt, + debug: defaultInteractionDebug + }; + this.registeredScene = null; + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._Interaction2.attributeHandler.getAttributes() + ]; + } + enable() { + } + disable() { + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(this.props.range * 2, this.props.range * 2, this.props.range * 2), + this.transformableElementGraphics.getWorldMatrix() + ); + } + addSideEffectChild(child) { + this.interactionAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.interactionAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + var _a, _b; + (_b = (_a = this.registeredScene) == null ? void 0 : _a.updateInteraction) == null ? void 0 : _b.call(_a, this); + } + isClickable() { + return false; + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.interactionGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.interactionGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLInteractionGraphicsInterface(this); + for (const name of _Interaction2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.registerInteraction(); + } + disconnectedCallback() { + var _a; + this.unregisterInteraction(); + this.interactionAnimatedAttributeHelper.reset(); + (_a = this.interactionGraphics) == null ? void 0 : _a.dispose(); + this.interactionGraphics = null; + super.disconnectedCallback(); + } + attributeChangedCallback(name, oldValue, newValue) { + var _a, _b; + super.attributeChangedCallback(name, oldValue, newValue); + if (_Interaction2.attributeHandler.handle(this, name, newValue)) { + if (this.registeredScene !== null) { + (_b = (_a = this.registeredScene).updateInteraction) == null ? void 0 : _b.call(_a, this); + } + } + } + trigger() { + this.dispatchEvent(new CustomEvent("interact", { detail: {} })); + } + registerInteraction() { + var _a; + const scene2 = this.getScene(); + this.registeredScene = scene2; + (_a = scene2.addInteraction) == null ? void 0 : _a.call(scene2, this); + } + unregisterInteraction() { + var _a, _b; + if (this.registeredScene !== null) { + (_b = (_a = this.registeredScene).removeInteraction) == null ? void 0 : _b.call(_a, this); + this.registeredScene = null; + } + } +}; +_Interaction.tagName = "m-interaction"; +_Interaction.attributeHandler = new AttributeHandler({ + range: (instance, newValue) => { + instance.interactionAnimatedAttributeHelper.elementSetAttribute( + "range", + parseFloatAttribute(newValue, defaultInteractionRange) + ); + }, + "in-focus": (instance, newValue) => { + var _a; + instance.props.inFocus = parseBoolAttribute(newValue, defaultInteractionInFocus); + (_a = instance.interactionGraphics) == null ? void 0 : _a.setInFocus(instance.props.inFocus, instance.props); + }, + "line-of-sight": (instance, newValue) => { + var _a; + instance.props.lineOfSight = parseBoolAttribute(newValue, defaultInteractionLineOfSight); + (_a = instance.interactionGraphics) == null ? void 0 : _a.setLineOfSight(instance.props.lineOfSight, instance.props); + }, + priority: (instance, newValue) => { + var _a; + instance.props.priority = parseFloatAttribute(newValue, defaultInteractionPriority); + (_a = instance.interactionGraphics) == null ? void 0 : _a.setPriority(instance.props.priority, instance.props); + }, + prompt: (instance, newValue) => { + var _a; + instance.props.prompt = newValue; + (_a = instance.interactionGraphics) == null ? void 0 : _a.setPrompt(instance.props.prompt, instance.props); + }, + debug: (instance, newValue) => { + var _a; + instance.props.debug = parseBoolAttribute(newValue, defaultInteractionDebug); + (_a = instance.interactionGraphics) == null ? void 0 : _a.setDebug(instance.props.debug, instance.props); + } +}); +var Interaction = _Interaction; +var MLabelAlignment = /* @__PURE__ */ ((MLabelAlignment2) => { + MLabelAlignment2["left"] = "left"; + MLabelAlignment2["center"] = "center"; + MLabelAlignment2["right"] = "right"; + return MLabelAlignment2; +})(MLabelAlignment || {}); +var defaultLabelColor = { r: 1, g: 1, b: 1 }; +var defaultFontColor = { r: 0, g: 0, b: 0 }; +var defaultLabelAlignment = "left"; +var defaultLabelFontSize = 24; +var defaultLabelPadding = 8; +var defaultLabelWidth = 1; +var defaultLabelHeight = 1; +var defaultLabelCastShadows = true; +var defaultEmissive = 0; +var _Label = class _Label2 extends TransformableElement { + constructor() { + super(); + this.collideableHelper = new CollideableHelper(this); + this.labelAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + color: [ + 1, + defaultLabelColor, + (newValue) => { + var _a; + this.props.color = newValue; + (_a = this.labelGraphics) == null ? void 0 : _a.setColor(this.props.color, this.props); + } + ], + "font-color": [ + 1, + defaultFontColor, + (newValue) => { + var _a; + this.props.fontColor = newValue; + (_a = this.labelGraphics) == null ? void 0 : _a.setFontColor(this.props.fontColor, this.props); + } + ], + width: [ + 0, + defaultLabelWidth, + (newValue) => { + var _a; + this.props.width = newValue; + (_a = this.labelGraphics) == null ? void 0 : _a.setWidth(this.props.width, this.props); + } + ], + height: [ + 0, + defaultLabelHeight, + (newValue) => { + var _a; + this.props.height = newValue; + (_a = this.labelGraphics) == null ? void 0 : _a.setHeight(this.props.height, this.props); + } + ], + padding: [ + 0, + defaultLabelPadding, + (newValue) => { + var _a; + this.props.padding = newValue; + (_a = this.labelGraphics) == null ? void 0 : _a.setPadding(this.props.padding, this.props); + } + ], + "font-size": [ + 0, + defaultLabelFontSize, + (newValue) => { + var _a; + this.props.fontSize = newValue; + (_a = this.labelGraphics) == null ? void 0 : _a.setFontSize(this.props.fontSize, this.props); + } + ] + }); + this.props = { + content: "", + alignment: defaultLabelAlignment, + width: defaultLabelWidth, + height: defaultLabelHeight, + fontSize: defaultLabelFontSize, + padding: defaultLabelPadding, + color: defaultLabelColor, + fontColor: defaultFontColor, + castShadows: defaultLabelCastShadows, + emissive: defaultEmissive + }; + } + enable() { + } + disable() { + } + static get observedAttributes() { + return [...TransformableElement.observedAttributes, ..._Label2.attributeHandler.getAttributes()]; + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(this.props.width, this.props.height, 0), + this.transformableElementGraphics.getWorldMatrix() + ); + } + addSideEffectChild(child) { + this.labelAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.labelAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.labelGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Label2.attributeHandler.handle(this, name, newValue); + this.collideableHelper.handle(name, newValue); + } + connectedCallback() { + var _a; + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.labelGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.labelGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLLabelGraphicsInterface(this); + for (const name of _Label2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.applyBounds(); + this.collideableHelper.updateCollider((_a = this.labelGraphics) == null ? void 0 : _a.getCollisionElement()); + } + disconnectedCallback() { + var _a; + this.collideableHelper.removeColliders(); + this.labelAnimatedAttributeHelper.reset(); + (_a = this.labelGraphics) == null ? void 0 : _a.dispose(); + this.labelGraphics = null; + super.disconnectedCallback(); + } +}; +_Label.tagName = "m-label"; +_Label.attributeHandler = new AttributeHandler({ + width: (instance, newValue) => { + instance.labelAnimatedAttributeHelper.elementSetAttribute( + "width", + parseFloatAttribute(newValue, defaultLabelWidth) + ); + }, + height: (instance, newValue) => { + instance.labelAnimatedAttributeHelper.elementSetAttribute( + "height", + parseFloatAttribute(newValue, defaultLabelHeight) + ); + }, + color: (instance, newValue) => { + instance.labelAnimatedAttributeHelper.elementSetAttribute( + "color", + parseColorAttribute(newValue, defaultLabelColor) + ); + }, + "font-color": (instance, newValue) => { + instance.labelAnimatedAttributeHelper.elementSetAttribute( + "font-color", + parseColorAttribute(newValue, defaultFontColor) + ); + }, + "font-size": (instance, newValue) => { + instance.labelAnimatedAttributeHelper.elementSetAttribute( + "font-size", + parseFloatAttribute(newValue, defaultLabelFontSize) + ); + }, + padding: (instance, newValue) => { + instance.labelAnimatedAttributeHelper.elementSetAttribute( + "padding", + parseFloatAttribute(newValue, defaultLabelPadding) + ); + }, + content: (instance, newValue) => { + var _a; + instance.props.content = newValue || ""; + (_a = instance.labelGraphics) == null ? void 0 : _a.setContent(instance.props.content, instance.props); + }, + alignment: (instance, newValue) => { + var _a; + instance.props.alignment = parseEnumAttribute( + newValue, + MLabelAlignment, + defaultLabelAlignment + ); + (_a = instance.labelGraphics) == null ? void 0 : _a.setAlignment(instance.props.alignment, instance.props); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultLabelCastShadows); + (_a = instance.labelGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + }, + emissive: (instance, newValue) => { + var _a; + instance.props.emissive = parseFloatAttribute(newValue, defaultEmissive); + (_a = instance.labelGraphics) == null ? void 0 : _a.setEmissive(instance.props.emissive, instance.props); + } +}); +var Label = _Label; +var LightTypes = /* @__PURE__ */ ((LightTypes2) => { + LightTypes2["spotlight"] = "spotlight"; + LightTypes2["point"] = "point"; + return LightTypes2; +})(LightTypes || {}); +var defaultLightColor = { r: 1, g: 1, b: 1 }; +var defaultLightIntensity = 1; +var defaultLightAngle = 45; +var defaultLightEnabled = true; +var defaultLightDebug = false; +var defaultLightDistance = null; +var defaultLightCastShadows = true; +var defaultLightType = "spotlight"; +var _Light = class _Light2 extends TransformableElement { + constructor() { + super(); + this.lightAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + color: [ + 1, + defaultLightColor, + (newValue) => { + var _a; + this.props.color = newValue; + (_a = this.lightGraphics) == null ? void 0 : _a.setColor(newValue, this.props); + } + ], + intensity: [ + 0, + defaultLightIntensity, + (newValue) => { + var _a; + this.props.intensity = newValue; + (_a = this.lightGraphics) == null ? void 0 : _a.setIntensity(newValue, this.props); + } + ], + angle: [ + 0, + defaultLightAngle, + (newValue) => { + var _a; + this.props.angleDeg = newValue; + (_a = this.lightGraphics) == null ? void 0 : _a.setAngle(newValue, this.props); + } + ], + distance: [ + 0, + defaultLightDistance, + (newValue) => { + var _a; + this.props.distance = newValue; + (_a = this.lightGraphics) == null ? void 0 : _a.setDistance(newValue, this.props); + } + ] + }); + this.props = { + color: defaultLightColor, + intensity: defaultLightIntensity, + enabled: defaultLightEnabled, + angleDeg: defaultLightAngle, + distance: defaultLightDistance, + castShadows: defaultLightCastShadows, + debug: defaultLightDebug, + type: defaultLightType + }; + } + static get observedAttributes() { + return [...TransformableElement.observedAttributes, ..._Light2.attributeHandler.getAttributes()]; + } + enable() { + } + disable() { + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromMatrixWorld(this.transformableElementGraphics.getWorldMatrix()); + } + addSideEffectChild(child) { + if (child instanceof AttributeAnimation) { + const attr = child.getAnimatedAttributeName(); + if (attr) { + this.lightAnimatedAttributeHelper.addAnimation(child, attr); + } + } + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + if (child instanceof AttributeAnimation) { + const attr = child.getAnimatedAttributeName(); + if (attr) { + this.lightAnimatedAttributeHelper.removeAnimation(child, attr); + } + } + super.removeSideEffectChild(child); + } + parentTransformed() { + } + isClickable() { + return false; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.lightGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Light2.attributeHandler.handle(this, name, newValue); + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.lightGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.lightGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLLightGraphicsInterface(this); + for (const name of _Light2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + } + disconnectedCallback() { + var _a; + this.lightAnimatedAttributeHelper.reset(); + (_a = this.lightGraphics) == null ? void 0 : _a.dispose(); + this.lightGraphics = null; + super.disconnectedCallback(); + } +}; +_Light.tagName = "m-light"; +_Light.attributeHandler = new AttributeHandler({ + color: (instance, newValue) => { + instance.lightAnimatedAttributeHelper.elementSetAttribute( + "color", + parseColorAttribute(newValue, defaultLightColor) + ); + }, + intensity: (instance, newValue) => { + instance.lightAnimatedAttributeHelper.elementSetAttribute( + "intensity", + parseFloatAttribute(newValue, defaultLightIntensity) + ); + }, + angle: (instance, newValue) => { + instance.lightAnimatedAttributeHelper.elementSetAttribute( + "angle", + parseFloatAttribute(newValue, defaultLightAngle) + ); + }, + distance: (instance, newValue) => { + instance.lightAnimatedAttributeHelper.elementSetAttribute( + "distance", + parseFloatAttribute(newValue, defaultLightDistance) + ); + }, + enabled: (instance, newValue) => { + var _a; + instance.props.enabled = parseBoolAttribute(newValue, defaultLightEnabled); + (_a = instance.lightGraphics) == null ? void 0 : _a.setEnabled(instance.props.enabled, instance.props); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultLightCastShadows); + (_a = instance.lightGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + }, + debug: (instance, newValue) => { + var _a; + instance.props.debug = parseBoolAttribute(newValue, defaultLightDebug); + (_a = instance.lightGraphics) == null ? void 0 : _a.setDebug(instance.props.debug, instance.props); + }, + type: (instance, newValue) => { + var _a; + instance.props.type = parseEnumAttribute(newValue, LightTypes, defaultLightType); + (_a = instance.lightGraphics) == null ? void 0 : _a.setType(instance.props.type, instance.props); + } +}); +var Light = _Light; +var _Link = class _Link2 extends TransformableElement { + constructor() { + super(); + this.abortController = null; + this.props = { + href: null, + target: null + }; + this.addEventListener("click", () => { + if (this.props.href) { + const href = this.props.href; + if (!_Link2.isAcceptableHref(href)) { + console.warn( + `Refusing to navigate to ${href} as it does not meet the acceptable href criteria.` + ); + return; + } + if (this.abortController) { + this.abortController.abort(); + this.abortController = null; + } + this.abortController = new AbortController(); + this.getScene().link( + { href, target: this.props.target ?? void 0, popup: false }, + this.abortController.signal, + () => { + this.abortController = null; + } + ); + } + }); + } + static get observedAttributes() { + return [...TransformableElement.observedAttributes, ..._Link2.attributeHandler.getAttributes()]; + } + /* + This is a simple check to ensure that the href is an acceptable URL and is + not a "javascript:alert('foo')" URL or something other than a navigable URL. + */ + static isAcceptableHref(href) { + const url = new URL(href, window.location.href); + if (url.protocol === "http:" || url.protocol === "https:") { + return true; + } + return false; + } + parentTransformed() { + } + isClickable() { + return false; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.transformableElementGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Link2.attributeHandler.handle(this, name, newValue); + } + disable() { + } + enable() { + } + getContentBounds() { + return null; + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.linkGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.linkGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLLinkGraphicsInterface(this); + for (const name of _Link2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + } + disconnectedCallback() { + var _a; + (_a = this.linkGraphics) == null ? void 0 : _a.dispose(); + this.linkGraphics = null; + super.disconnectedCallback(); + } +}; +_Link.tagName = "m-link"; +_Link.attributeHandler = new AttributeHandler({ + href: (instance, newValue) => { + instance.props.href = newValue !== null ? newValue : null; + }, + target: (instance, newValue) => { + instance.props.target = newValue !== null ? newValue : null; + } +}); +var Link = _Link; +var defaultPlaneColor = { r: 1, g: 1, b: 1 }; +var defaultPlaneWidth = 1; +var defaultPlaneHeight = 1; +var defaultPlaneOpacity = 1; +var defaultPlaneCastShadows = true; +var _Plane = class _Plane2 extends TransformableElement { + constructor() { + super(); + this.props = { + width: defaultPlaneWidth, + height: defaultPlaneHeight, + color: defaultPlaneColor, + opacity: defaultPlaneOpacity, + castShadows: defaultPlaneCastShadows + }; + this.planeAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + color: [ + 1, + defaultPlaneColor, + (newValue) => { + var _a; + this.props.color = newValue; + (_a = this.planeGraphics) == null ? void 0 : _a.setColor(newValue, this.props); + } + ], + width: [ + 0, + defaultPlaneWidth, + (newValue) => { + var _a, _b; + this.props.width = newValue; + (_a = this.planeGraphics) == null ? void 0 : _a.setWidth(newValue, this.props); + this.applyBounds(); + this.collideableHelper.updateCollider((_b = this.planeGraphics) == null ? void 0 : _b.getCollisionElement()); + } + ], + height: [ + 0, + defaultPlaneHeight, + (newValue) => { + var _a, _b; + this.props.height = newValue; + (_a = this.planeGraphics) == null ? void 0 : _a.setHeight(newValue, this.props); + this.applyBounds(); + this.collideableHelper.updateCollider((_b = this.planeGraphics) == null ? void 0 : _b.getCollisionElement()); + } + ], + opacity: [ + 0, + defaultPlaneOpacity, + (newValue) => { + var _a; + this.props.opacity = newValue; + (_a = this.planeGraphics) == null ? void 0 : _a.setOpacity(newValue, this.props); + } + ] + }); + this.collideableHelper = new CollideableHelper(this); + } + enable() { + this.collideableHelper.enable(); + } + disable() { + this.collideableHelper.disable(); + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(this.props.width, this.props.height, 0), + this.transformableElementGraphics.getWorldMatrix() + ); + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._Plane2.attributeHandler.getAttributes(), + ...CollideableHelper.observedAttributes + ]; + } + addSideEffectChild(child) { + this.planeAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.planeAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + this.collideableHelper.parentTransformed(); + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.planeGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Plane2.attributeHandler.handle(this, name, newValue); + this.collideableHelper.handle(name, newValue); + } + connectedCallback() { + var _a; + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.planeGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.planeGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLPlaneGraphicsInterface(this); + for (const name of _Plane2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.applyBounds(); + this.collideableHelper.updateCollider((_a = this.planeGraphics) == null ? void 0 : _a.getCollisionElement()); + } + disconnectedCallback() { + var _a; + this.collideableHelper.removeColliders(); + this.planeAnimatedAttributeHelper.reset(); + (_a = this.planeGraphics) == null ? void 0 : _a.dispose(); + this.planeGraphics = null; + super.disconnectedCallback(); + } +}; +_Plane.tagName = "m-plane"; +_Plane.attributeHandler = new AttributeHandler({ + width: (instance, newValue) => { + instance.planeAnimatedAttributeHelper.elementSetAttribute( + "width", + parseFloatAttribute(newValue, defaultPlaneWidth) + ); + }, + height: (instance, newValue) => { + instance.planeAnimatedAttributeHelper.elementSetAttribute( + "height", + parseFloatAttribute(newValue, defaultPlaneHeight) + ); + }, + color: (instance, newValue) => { + instance.planeAnimatedAttributeHelper.elementSetAttribute( + "color", + parseColorAttribute(newValue, defaultPlaneColor) + ); + }, + opacity: (instance, newValue) => { + instance.planeAnimatedAttributeHelper.elementSetAttribute( + "opacity", + parseFloatAttribute(newValue, defaultPlaneOpacity) + ); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultPlaneCastShadows); + (_a = instance.planeGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + } +}); +var Plane = _Plane; +var defaultPositionProbeRange = 10; +var defaultPositionProbeInterval = 1e3; +var defaultPositionProbeMinimumInterval = 100; +var defaultPositionProbeDebug = false; +var positionProbeEnterEventName = "positionenter"; +var positionProbePositionMoveEventName = "positionmove"; +var positionProbeLeaveEventName = "positionleave"; +var _PositionProbe = class _PositionProbe2 extends TransformableElement { + constructor() { + super(); + this.positionProbeAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + range: [ + 0, + defaultPositionProbeRange, + (newValue) => { + var _a; + this.props.range = newValue; + (_a = this.positionProbeGraphics) == null ? void 0 : _a.setRange(newValue, this.props); + this.applyBounds(); + } + ] + }); + this.props = { + intervalMs: defaultPositionProbeInterval, + debug: defaultPositionProbeDebug, + range: defaultPositionProbeRange + }; + this.timer = null; + this.currentlyInRange = false; + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._PositionProbe2.attributeHandler.getAttributes() + ]; + } + enable() { + } + disable() { + } + parentTransformed() { + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(this.props.range * 2, this.props.range * 2, this.props.range * 2), + this.transformableElementGraphics.getWorldMatrix() + ); + } + addSideEffectChild(child) { + this.positionProbeAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.positionProbeAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + isClickable() { + return false; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.positionProbeGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _PositionProbe2.attributeHandler.handle(this, name, newValue); + } + emitPosition() { + const userPositionAndRotation = this.getUserPositionAndRotation(); + const elementRelative = getRelativePositionAndRotationRelativeToObject( + userPositionAndRotation, + this + ); + const distance = new Vect3().copy(elementRelative.position).length(); + let withinBounds = true; + this.getAppliedBounds().forEach((bounds) => { + if (!bounds.containsPoint(userPositionAndRotation.position)) { + withinBounds = false; + } + }); + if (withinBounds && distance <= this.props.range) { + const elementRelativePositionAndRotation = { + position: elementRelative.position, + rotation: { + x: elementRelative.rotation.x, + y: elementRelative.rotation.y, + z: elementRelative.rotation.z + } + }; + let documentRoot = null; + const remoteDocument = this.getInitiatedRemoteDocument(); + if (remoteDocument) { + documentRoot = remoteDocument; + } + const documentRelative = documentRoot !== null ? getRelativePositionAndRotationRelativeToObject(userPositionAndRotation, documentRoot) : userPositionAndRotation; + const documentRelativePositionAndRotation = { + position: documentRelative.position, + rotation: { + x: documentRelative.rotation.x, + y: documentRelative.rotation.y, + z: documentRelative.rotation.z + } + }; + if (!this.currentlyInRange) { + this.currentlyInRange = true; + this.dispatchEvent( + new CustomEvent(positionProbeEnterEventName, { + detail: { + elementRelative: elementRelativePositionAndRotation, + documentRelative: documentRelativePositionAndRotation + } + }) + ); + } else { + this.dispatchEvent( + new CustomEvent(positionProbePositionMoveEventName, { + detail: { + elementRelative: elementRelativePositionAndRotation, + documentRelative: documentRelativePositionAndRotation + } + }) + ); + } + } else { + if (this.currentlyInRange) { + this.currentlyInRange = false; + this.dispatchEvent(new CustomEvent(positionProbeLeaveEventName, {})); + } + } + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.positionProbeGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.positionProbeGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLPositionProbeGraphicsInterface(this); + for (const name of _PositionProbe2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.applyBounds(); + this.startEmitting(); + } + disconnectedCallback() { + var _a; + if (this.timer) { + clearInterval(this.timer); + } + this.positionProbeAnimatedAttributeHelper.reset(); + (_a = this.positionProbeGraphics) == null ? void 0 : _a.dispose(); + this.positionProbeGraphics = null; + super.disconnectedCallback(); + } + startEmitting() { + if (this.timer) { + clearInterval(this.timer); + } + this.timer = setInterval(() => { + this.emitPosition(); + }, this.props.intervalMs); + } +}; +_PositionProbe.tagName = "m-position-probe"; +_PositionProbe.attributeHandler = new AttributeHandler({ + range: (instance, newValue) => { + instance.positionProbeAnimatedAttributeHelper.elementSetAttribute( + "range", + parseFloatAttribute(newValue, defaultPositionProbeRange) + ); + }, + interval: (instance, newValue) => { + instance.props.intervalMs = Math.max( + defaultPositionProbeMinimumInterval, + parseFloatAttribute(newValue, defaultPositionProbeInterval) + ); + instance.startEmitting(); + }, + debug: (instance, newValue) => { + var _a; + instance.props.debug = parseBoolAttribute(newValue, defaultPositionProbeDebug); + (_a = instance.positionProbeGraphics) == null ? void 0 : _a.setDebug(instance.props.debug, instance.props); + } +}); +var PositionProbe = _PositionProbe; +var _Prompt = class _Prompt2 extends TransformableElement { + constructor() { + super(); + this.abortController = null; + this.props = { + message: void 0, + placeholder: void 0, + prefill: void 0 + }; + this.addEventListener("click", () => { + this.trigger(); + }); + } + enable() { + } + disable() { + } + static get observedAttributes() { + return [...TransformableElement.observedAttributes, ..._Prompt2.attributeHandler.getAttributes()]; + } + getContentBounds() { + return null; + } + parentTransformed() { + } + isClickable() { + return false; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.promptGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Prompt2.attributeHandler.handle(this, name, newValue); + } + trigger() { + if (this.abortController) { + this.abortController.abort(); + this.abortController = null; + } + this.abortController = new AbortController(); + this.getScene().prompt(this.props, this.abortController.signal, (result) => { + if (!this.isConnected) { + return; + } + if (result !== null) { + this.dispatchEvent( + new CustomEvent("prompt", { bubbles: false, detail: { value: result } }) + ); + } + }); + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.promptGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.promptGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLPromptGraphicsInterface(this); + for (const name of _Prompt2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + } + disconnectedCallback() { + var _a; + (_a = this.promptGraphics) == null ? void 0 : _a.dispose(); + this.promptGraphics = null; + super.disconnectedCallback(); + } +}; +_Prompt.tagName = "m-prompt"; +_Prompt.attributeHandler = new AttributeHandler({ + message: (instance, newValue) => { + var _a; + instance.props.message = newValue !== null ? newValue : void 0; + (_a = instance.promptGraphics) == null ? void 0 : _a.setMessage(instance.props.message, instance.props); + }, + placeholder: (instance, newValue) => { + var _a; + instance.props.placeholder = newValue !== null ? newValue : void 0; + (_a = instance.promptGraphics) == null ? void 0 : _a.setPlaceholder(instance.props.placeholder, instance.props); + }, + prefill: (instance, newValue) => { + var _a; + instance.props.prefill = newValue !== null ? newValue : void 0; + (_a = instance.promptGraphics) == null ? void 0 : _a.setPrefill(instance.props.prefill, instance.props); + } +}); +var Prompt = _Prompt; +var MMLDocumentTimeManager = class { + constructor() { + this.relativeDocumentStartTime = 0; + this.overridenDocumentTime = null; + this.documentTimeListeners = /* @__PURE__ */ new Set(); + this.documentTimeTickListeners = /* @__PURE__ */ new Set(); + } + tick() { + const documentTime = this.getDocumentTime(); + for (const cb of this.documentTimeTickListeners) { + cb(documentTime); + } + } + getDocumentTime() { + if (this.overridenDocumentTime !== null) { + return this.overridenDocumentTime; + } + return document.timeline.currentTime - this.relativeDocumentStartTime; + } + getWindowTime() { + if (this.overridenDocumentTime !== null) { + return this.overridenDocumentTime; + } + return document.timeline.currentTime; + } + addDocumentTimeListenerCallback(cb) { + this.documentTimeListeners.add(cb); + } + removeDocumentTimeListenerCallback(cb) { + this.documentTimeListeners.delete(cb); + } + addDocumentTimeTickListenerCallback(cb) { + this.documentTimeTickListeners.add(cb); + } + removeDocumentTimeTickListenerCallback(cb) { + this.documentTimeTickListeners.delete(cb); + } + setDocumentTime(documentTime) { + if (this.overridenDocumentTime !== null) { + return; + } + this.relativeDocumentStartTime = document.timeline.currentTime - documentTime; + for (const cb of this.documentTimeListeners) { + cb(documentTime); + } + } + // This method is used for testing to allow overriding the document time + overrideDocumentTime(documentTime) { + this.overridenDocumentTime = documentTime; + for (const cb of this.documentTimeListeners) { + cb(documentTime); + } + } +}; +var RemoteDocument = class extends MElement { + constructor() { + super(); + this.scene = null; + this.documentAddress = null; + this.animationFrameCallback = null; + this.documentTimeManager = new MMLDocumentTimeManager(); + this.addEventListener(consumeEventEventName, (wrappedEvent) => { + wrappedEvent.stopPropagation(); + }); + } + showError(showError) { + var _a; + (_a = this.remoteDocumentGraphics) == null ? void 0 : _a.showError(showError); + } + enable() { + } + disable() { + } + getContentBounds() { + return null; + } + parentTransformed() { + } + isClickable() { + return false; + } + getDocumentTimeManager() { + return this.documentTimeManager; + } + connectedCallback() { + this.style.display = "none"; + if (!this.isConnected) { + return; + } + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.remoteDocumentGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.remoteDocumentGraphics = graphicsAdapter.getGraphicsAdapterFactory().RemoteDocumentGraphicsInterface(this); + this.animationFrameCallback = window.requestAnimationFrame(() => { + this.tick(); + }); + } + disconnectedCallback() { + var _a; + if (this.animationFrameCallback) { + window.cancelAnimationFrame(this.animationFrameCallback); + this.animationFrameCallback = null; + } + (_a = this.remoteDocumentGraphics) == null ? void 0 : _a.dispose(); + this.remoteDocumentGraphics = null; + super.disconnectedCallback(); + } + dispatchEvent(event) { + if (this.contains(event.detail.element)) { + return HTMLElement.prototype.dispatchEvent.call(this, event); + } else { + return false; + } + } + init(mmlScene, documentAddress) { + if (this.scene) { + throw new Error("Scene already set"); + } + this.scene = mmlScene; + this.documentAddress = documentAddress; + this.connectedCallback(); + } + getDocumentAddress() { + return this.documentAddress; + } + getMMLScene() { + if (!this.scene) { + return null; + } + return this.scene; + } + tick() { + this.documentTimeManager.tick(); + this.animationFrameCallback = window.requestAnimationFrame(() => { + this.tick(); + }); + } +}; +RemoteDocument.tagName = "m-remote-document"; +var defaultSphereColor = { r: 1, g: 1, b: 1 }; +var defaultSphereRadius = 0.5; +var defaultSphereOpacity = 1; +var defaultSphereCastShadows = true; +var _Sphere = class _Sphere2 extends TransformableElement { + constructor() { + super(); + this.props = { + radius: defaultSphereRadius, + color: defaultSphereColor, + opacity: defaultSphereOpacity, + castShadows: defaultSphereCastShadows + }; + this.sphereAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + color: [ + 1, + defaultSphereColor, + (newValue) => { + var _a; + this.props.color = newValue; + (_a = this.sphereGraphics) == null ? void 0 : _a.setColor(newValue, this.props); + } + ], + radius: [ + 0, + defaultSphereRadius, + (newValue) => { + var _a, _b; + this.props.radius = newValue; + (_a = this.sphereGraphics) == null ? void 0 : _a.setRadius(newValue, this.props); + this.applyBounds(); + this.collideableHelper.updateCollider((_b = this.sphereGraphics) == null ? void 0 : _b.getCollisionElement()); + } + ], + opacity: [ + 0, + defaultSphereOpacity, + (newValue) => { + var _a; + this.props.opacity = newValue; + (_a = this.sphereGraphics) == null ? void 0 : _a.setOpacity(newValue, this.props); + } + ] + }); + this.collideableHelper = new CollideableHelper(this); + } + enable() { + this.collideableHelper.enable(); + } + disable() { + this.collideableHelper.disable(); + } + getContentBounds() { + if (!this.transformableElementGraphics) { + return null; + } + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(this.props.radius * 2, this.props.radius * 2, this.props.radius * 2), + this.transformableElementGraphics.getWorldMatrix() + ); + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._Sphere2.attributeHandler.getAttributes(), + ...CollideableHelper.observedAttributes + ]; + } + addSideEffectChild(child) { + this.sphereAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.sphereAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + this.collideableHelper.parentTransformed(); + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.sphereGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Sphere2.attributeHandler.handle(this, name, newValue); + this.collideableHelper.handle(name, newValue); + } + connectedCallback() { + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.sphereGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.sphereGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLSphereGraphicsInterface(this); + for (const name of _Sphere2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.applyBounds(); + this.collideableHelper.updateCollider(this.sphereGraphics.getCollisionElement()); + } + disconnectedCallback() { + var _a; + this.collideableHelper.removeColliders(); + this.sphereAnimatedAttributeHelper.reset(); + (_a = this.sphereGraphics) == null ? void 0 : _a.dispose(); + this.sphereGraphics = null; + super.disconnectedCallback(); + } +}; +_Sphere.tagName = "m-sphere"; +_Sphere.attributeHandler = new AttributeHandler({ + radius: (instance, newValue) => { + instance.sphereAnimatedAttributeHelper.elementSetAttribute( + "radius", + parseFloatAttribute(newValue, defaultSphereRadius) + ); + }, + color: (instance, newValue) => { + instance.sphereAnimatedAttributeHelper.elementSetAttribute( + "color", + parseColorAttribute(newValue, defaultSphereColor) + ); + }, + opacity: (instance, newValue) => { + instance.sphereAnimatedAttributeHelper.elementSetAttribute( + "opacity", + parseFloatAttribute(newValue, defaultSphereOpacity) + ); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultSphereCastShadows); + (_a = instance.sphereGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + } +}); +var Sphere = _Sphere; +var defaultVideoWidth = null; +var defaultVideoHeight = null; +var defaultVideoVolume = 1; +var defaultVideoLoop = true; +var defaultVideoEnabled = true; +var defaultVideoStartTime = 0; +var defaultVideoPauseTime = null; +var defaultVideoSrc = null; +var defaultVideoCastShadows = true; +var defaultVideoEmissive = 0; +var _Video = class _Video2 extends TransformableElement { + constructor() { + super(); + this.videoAnimatedAttributeHelper = new AnimatedAttributeHelper(this, { + width: [ + 0, + defaultVideoWidth, + (newValue) => { + var _a; + this.props.width = newValue; + (_a = this.videoGraphics) == null ? void 0 : _a.setWidth(newValue, this.props); + } + ], + height: [ + 0, + defaultVideoHeight, + (newValue) => { + var _a; + this.props.height = newValue; + (_a = this.videoGraphics) == null ? void 0 : _a.setHeight(newValue, this.props); + } + ], + emissive: [ + 0, + defaultVideoEmissive, + (newValue) => { + var _a; + this.props.emissive = newValue; + (_a = this.videoGraphics) == null ? void 0 : _a.setEmissive(newValue, this.props); + } + ] + }); + this.collideableHelper = new CollideableHelper(this); + this.props = { + startTime: defaultVideoStartTime, + pauseTime: defaultVideoPauseTime, + src: defaultVideoSrc, + loop: defaultVideoLoop, + enabled: defaultVideoEnabled, + volume: defaultVideoVolume, + width: defaultVideoWidth, + height: defaultVideoHeight, + castShadows: defaultVideoCastShadows, + emissive: defaultVideoEmissive + }; + } + static get observedAttributes() { + return [ + ...TransformableElement.observedAttributes, + ..._Video2.attributeHandler.getAttributes(), + ...CollideableHelper.observedAttributes + ]; + } + enable() { + var _a; + (_a = this.videoGraphics) == null ? void 0 : _a.syncVideoTime(); + } + disable() { + var _a; + (_a = this.videoGraphics) == null ? void 0 : _a.syncVideoTime(); + } + getContentBounds() { + if (!this.videoGraphics || !this.transformableElementGraphics) { + return null; + } + const { width, height } = this.videoGraphics.getWidthAndHeight() || { width: 0, height: 0 }; + return OrientedBoundingBox.fromSizeAndMatrixWorld( + new Vect3(width, height, 0), + this.transformableElementGraphics.getWorldMatrix() + ); + } + addSideEffectChild(child) { + this.videoAnimatedAttributeHelper.addSideEffectChild(child); + super.addSideEffectChild(child); + } + removeSideEffectChild(child) { + this.videoAnimatedAttributeHelper.removeSideEffectChild(child); + super.removeSideEffectChild(child); + } + parentTransformed() { + this.collideableHelper.parentTransformed(); + } + isClickable() { + return true; + } + attributeChangedCallback(name, oldValue, newValue) { + if (!this.videoGraphics) { + return; + } + super.attributeChangedCallback(name, oldValue, newValue); + _Video2.attributeHandler.handle(this, name, newValue); + this.collideableHelper.handle(name, newValue); + } + documentTimeChanged() { + var _a; + (_a = this.videoGraphics) == null ? void 0 : _a.syncVideoTime(); + } + connectedCallback() { + var _a; + super.connectedCallback(); + if (!this.getScene().hasGraphicsAdapter() || this.videoGraphics) { + return; + } + const graphicsAdapter = this.getScene().getGraphicsAdapter(); + this.videoGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLVideoGraphicsInterface(this, () => { + var _a2; + this.applyBounds(); + this.collideableHelper.updateCollider((_a2 = this.videoGraphics) == null ? void 0 : _a2.getCollisionElement()); + }); + this.documentTimeListener = this.addDocumentTimeListener(() => { + this.documentTimeChanged(); + }); + for (const name of _Video2.observedAttributes) { + const value = this.getAttribute(name); + if (value !== null) { + this.attributeChangedCallback(name, null, value); + } + } + this.collideableHelper.updateCollider((_a = this.videoGraphics) == null ? void 0 : _a.getCollisionElement()); + } + disconnectedCallback() { + var _a; + this.videoAnimatedAttributeHelper.reset(); + (_a = this.videoGraphics) == null ? void 0 : _a.dispose(); + this.videoGraphics = null; + this.documentTimeListener.remove(); + this.collideableHelper.removeColliders(); + super.disconnectedCallback(); + } +}; +_Video.tagName = "m-video"; +_Video.attributeHandler = new AttributeHandler({ + width: (instance, newValue) => { + instance.videoAnimatedAttributeHelper.elementSetAttribute( + "width", + parseFloatAttribute(newValue, defaultVideoWidth) + ); + }, + height: (instance, newValue) => { + instance.videoAnimatedAttributeHelper.elementSetAttribute( + "height", + parseFloatAttribute(newValue, defaultVideoHeight) + ); + }, + enabled: (instance, newValue) => { + var _a; + instance.props.enabled = parseBoolAttribute(newValue, defaultVideoEnabled); + (_a = instance.videoGraphics) == null ? void 0 : _a.setEnabled(instance.props.enabled, instance.props); + }, + loop: (instance, newValue) => { + var _a; + instance.props.loop = parseBoolAttribute(newValue, defaultVideoLoop); + (_a = instance.videoGraphics) == null ? void 0 : _a.setLoop(instance.props.loop, instance.props); + }, + "start-time": (instance, newValue) => { + var _a; + instance.props.startTime = parseFloatAttribute(newValue, defaultVideoStartTime); + (_a = instance.videoGraphics) == null ? void 0 : _a.setStartTime(instance.props.startTime, instance.props); + }, + "pause-time": (instance, newValue) => { + var _a; + instance.props.pauseTime = parseFloatAttribute(newValue, defaultVideoPauseTime); + (_a = instance.videoGraphics) == null ? void 0 : _a.setPauseTime(instance.props.pauseTime, instance.props); + }, + src: (instance, newValue) => { + var _a; + instance.props.src = newValue; + (_a = instance.videoGraphics) == null ? void 0 : _a.setSrc(newValue, instance.props); + }, + volume: (instance, newValue) => { + var _a; + instance.props.volume = parseFloatAttribute(newValue, defaultVideoVolume); + (_a = instance.videoGraphics) == null ? void 0 : _a.setVolume(instance.props.volume, instance.props); + }, + "cast-shadows": (instance, newValue) => { + var _a; + instance.props.castShadows = parseBoolAttribute(newValue, defaultVideoCastShadows); + (_a = instance.videoGraphics) == null ? void 0 : _a.setCastShadows(instance.props.castShadows, instance.props); + }, + emissive: (instance, newValue) => { + instance.videoAnimatedAttributeHelper.elementSetAttribute( + "emissive", + parseFloatAttribute(newValue, defaultVideoEmissive) + ); + } +}); +var Video = _Video; +function registerCustomElementsToWindow(targetWindow) { + const targetHTMLElement = targetWindow["HTMLElement"]; + MElement.overwriteSuperclass(targetHTMLElement); + targetWindow.customElements.define(RemoteDocument.tagName, RemoteDocument); + targetWindow.customElements.define(Light.tagName, Light); + targetWindow.customElements.define(Model.tagName, Model); + targetWindow.customElements.define(Character.tagName, Character); + targetWindow.customElements.define(Cube.tagName, Cube); + targetWindow.customElements.define(Frame.tagName, Frame); + targetWindow.customElements.define(Cylinder.tagName, Cylinder); + targetWindow.customElements.define(Plane.tagName, Plane); + targetWindow.customElements.define(Label.tagName, Label); + targetWindow.customElements.define(Group.tagName, Group); + targetWindow.customElements.define(Prompt.tagName, Prompt); + targetWindow.customElements.define(Link.tagName, Link); + targetWindow.customElements.define(Sphere.tagName, Sphere); + targetWindow.customElements.define(Image.tagName, Image); + targetWindow.customElements.define(Video.tagName, Video); + targetWindow.customElements.define(Audio.tagName, Audio); + targetWindow.customElements.define(PositionProbe.tagName, PositionProbe); + targetWindow.customElements.define(ChatProbe.tagName, ChatProbe); + targetWindow.customElements.define(Interaction.tagName, Interaction); + targetWindow.customElements.define(AttributeAnimation.tagName, AttributeAnimation); + targetWindow.customElements.define(AttributeLerp.tagName, AttributeLerp); +} +var EventHandlerCollection = class _EventHandlerCollection { + constructor() { + this.eventsByTarget = /* @__PURE__ */ new Map(); + } + add(target, key, listener, options) { + target.addEventListener(key, listener, options); + let existingTarget = this.eventsByTarget.get(target); + if (existingTarget === void 0) { + existingTarget = /* @__PURE__ */ new Map(); + this.eventsByTarget.set(target, existingTarget); + } + let existingKey = existingTarget.get(key); + if (existingKey === void 0) { + existingKey = /* @__PURE__ */ new Set(); + existingTarget.set(key, existingKey); + } + existingKey.add(listener); + return this; + } + clear() { + this.eventsByTarget.forEach((keyMap, target) => { + keyMap.forEach((listenerSet, key) => { + listenerSet.forEach((listenerFunc) => { + target.removeEventListener(key, listenerFunc); + }); + }); + }); + this.eventsByTarget.clear(); + } + static create(initial) { + const instance = new _EventHandlerCollection(); + if (initial !== void 0) { + initial.forEach(([target, key, listenerFunc, options]) => { + instance.add(target, key, listenerFunc, options); + }); + } + return instance; + } +}; +function createInteractionsHolder(onPrev, onNext, onClose) { + const holderElement = document.createElement("div"); + holderElement.setAttribute("data-test-id", "interactions-holder"); + holderElement.style.zIndex = "100"; + holderElement.style.position = "absolute"; + holderElement.style.backgroundColor = "white"; + holderElement.style.padding = "10px"; + holderElement.style.display = "none"; + holderElement.style.border = "1px solid #AAA"; + holderElement.style.fontFamily = "sans-serif"; + holderElement.style.top = "50%"; + holderElement.style.left = "50%"; + holderElement.style.transform = "translate(-50%, -50%)"; + const closeButtonHolder = document.createElement("div"); + closeButtonHolder.style.display = "flex"; + closeButtonHolder.style.justifyContent = "flex-end"; + holderElement.appendChild(closeButtonHolder); + const title = document.createElement("h3"); + title.style.textAlign = "center"; + title.textContent = "Interactions"; + holderElement.appendChild(title); + const closeButton = document.createElement("button"); + closeButton.textContent = "Close"; + closeButton.style.cursor = "pointer"; + closeButton.addEventListener("click", () => { + onClose(); + }); + closeButtonHolder.appendChild(closeButton); + const listElement = document.createElement("div"); + listElement.setAttribute("data-test-id", "interactions-list"); + holderElement.appendChild(listElement); + const buttonHolder = document.createElement("div"); + buttonHolder.style.display = "flex"; + buttonHolder.style.justifyContent = "space-between"; + holderElement.appendChild(buttonHolder); + const prevButton = document.createElement("button"); + prevButton.textContent = "Prev"; + prevButton.style.cursor = "pointer"; + prevButton.addEventListener("click", onPrev); + buttonHolder.appendChild(prevButton); + const statusHolder = document.createElement("div"); + statusHolder.style.display = "flex"; + statusHolder.style.justifyContent = "center"; + statusHolder.style.padding = "5px"; + buttonHolder.appendChild(statusHolder); + const nextButton = document.createElement("button"); + nextButton.textContent = "Next"; + nextButton.style.cursor = "pointer"; + nextButton.addEventListener("click", onNext); + buttonHolder.appendChild(nextButton); + return { holderElement, listElement, prevButton, statusHolder, nextButton }; +} +function createInteractionPrompt() { + const interactionPrompt = document.createElement("div"); + interactionPrompt.setAttribute("data-test-id", "interactions-prompt"); + interactionPrompt.style.zIndex = "101"; + interactionPrompt.style.position = "absolute"; + interactionPrompt.style.top = "10px"; + interactionPrompt.style.left = "10px"; + interactionPrompt.style.display = "none"; + interactionPrompt.style.padding = "12px 10px"; + interactionPrompt.style.fontFamily = "Helvetica"; + interactionPrompt.style.color = "white"; + interactionPrompt.style.backgroundColor = "#222222b2"; + interactionPrompt.innerHTML = "Press E to interact"; + return interactionPrompt; +} +var _InteractionManager = class _InteractionManager2 { + constructor(container, interactionShouldShowDistance) { + this.container = container; + this.interactionShouldShowDistance = interactionShouldShowDistance; + this.pageOffset = 0; + this.eventCollection = new EventHandlerCollection(); + this.possibleActions = /* @__PURE__ */ new Map(); + this.visibleActions = /* @__PURE__ */ new Set(); + this.tickInterval = null; + this.sortedActions = []; + this.container = container; + const { holderElement, listElement, prevButton, statusHolder, nextButton } = createInteractionsHolder( + () => { + this.pageOffset--; + this.displayInteractions(); + }, + () => { + this.pageOffset++; + this.displayInteractions(); + }, + () => { + this.hideHolder(); + } + ); + this.prevButton = prevButton; + this.statusHolder = statusHolder; + this.nextButton = nextButton; + this.interactionListElement = listElement; + this.interactionHolderElement = holderElement; + this.container.appendChild(this.interactionHolderElement); + this.interactionPromptElement = createInteractionPrompt(); + this.container.appendChild(this.interactionPromptElement); + this.eventCollection.add(document, "keydown", (e) => { + if (e.code === "KeyE") { + if (this.interactionHolderElement.style.display === "block") { + this.hideHolder(); + return; + } + if (this.visibleActions.size > 0) { + this.showHolder(); + } + } else if (e.code === "Escape") { + this.hideHolder(); + } + }); + } + static createButtonText(interaction) { + return `${interaction.props.prompt ?? "Interact"}`; + } + getInteractionListener() { + return { + addInteraction: (interaction) => { + this.possibleActions.set(interaction, { + interaction + }); + }, + removeInteraction: (interaction) => { + const interactionState = this.possibleActions.get(interaction); + if (!interactionState) { + console.warn("Interaction not found", interaction); + return; + } + if (interactionState.button) { + interactionState.button.remove(); + } + this.possibleActions.delete(interaction); + if (this.visibleActions.has(interactionState)) { + this.visibleActions.delete(interactionState); + if (this.visibleActions.size === 0) { + this.hidePrompt(); + } + } + }, + updateInteraction: (interaction) => { + const interactionState = this.possibleActions.get(interaction); + if (!interactionState) { + console.warn("Interaction not found", interaction); + return; + } + if (interactionState.button) { + interactionState.button.textContent = _InteractionManager2.createButtonText(interaction); + } + } + }; + } + static init(container, interactionShouldShowDistance) { + const interactionManager = new _InteractionManager2(container, interactionShouldShowDistance); + interactionManager.startTick(); + return { interactionManager, interactionListener: interactionManager.getInteractionListener() }; + } + dispose() { + if (this.tickInterval) { + clearInterval(this.tickInterval); + } + this.eventCollection.clear(); + this.interactionListElement.remove(); + this.interactionHolderElement.remove(); + this.interactionPromptElement.remove(); + } + startTick() { + this.tickInterval = setInterval(() => { + this.possibleActions.forEach((interactionState, interaction) => { + const showDistance = this.interactionShouldShowDistance(interaction); + if (showDistance !== null) { + interactionState.distance = showDistance; + this.visibleActions.add(interactionState); + } else { + this.visibleActions.delete(interactionState); + } + }); + if (this.visibleActions.size === 0) { + this.hidePrompt(); + this.hideHolder(); + return; + } else { + this.showPrompt(); + } + this.sortedActions = Array.from(this.visibleActions).sort( + (a, b) => { + const priorityDiff = a.interaction.props.priority - b.interaction.props.priority; + if (priorityDiff !== 0) { + return priorityDiff; + } + if (a.distance && b.distance) { + const distanceDiff = a.distance - b.distance; + if (Math.abs(distanceDiff) > 0.1) { + return distanceDiff; + } + } + return 0; + } + ); + this.displayInteractions(); + }, 1e3); + } + displayInteractions() { + this.interactionListElement.innerHTML = ""; + const maximumPageOffset = Math.floor( + (this.sortedActions.length - 1) / _InteractionManager2.pageLimit + ); + if (this.pageOffset > maximumPageOffset) { + this.pageOffset = maximumPageOffset; + } + if (this.pageOffset < 0) { + this.pageOffset = 0; + } + const startIndex = this.pageOffset * _InteractionManager2.pageLimit; + const pagedItems = this.sortedActions.slice( + startIndex, + startIndex + _InteractionManager2.pageLimit + ); + if (this.pageOffset > 0) { + this.prevButton.removeAttribute("disabled"); + } else { + this.prevButton.setAttribute("disabled", "true"); + } + if (this.pageOffset < maximumPageOffset) { + this.nextButton.removeAttribute("disabled"); + } else { + this.nextButton.setAttribute("disabled", "true"); + } + this.statusHolder.textContent = `Page ${this.pageOffset + 1} of ${maximumPageOffset + 1}`; + pagedItems.forEach((interactionState) => { + if (!interactionState.button) { + const interactionText = _InteractionManager2.createButtonText(interactionState.interaction); + const button = document.createElement("button"); + button.style.display = "block"; + button.style.marginBottom = "5px"; + button.style.cursor = "pointer"; + button.style.textOverflow = "ellipsis"; + button.style.overflow = "hidden"; + button.style.whiteSpace = "nowrap"; + button.style.maxWidth = "200px"; + button.setAttribute("data-test-id", `interaction-${interactionText}`); + button.textContent = interactionText; + button.addEventListener("click", () => { + interactionState.interaction.trigger(); + this.hideHolder(); + }); + interactionState.button = button; + } + this.interactionListElement.appendChild(interactionState.button); + }); + } + hideHolder() { + this.interactionHolderElement.style.display = "none"; + } + showHolder() { + this.interactionHolderElement.style.display = "block"; + } + hidePrompt() { + this.interactionPromptElement.style.display = "none"; + } + showPrompt() { + this.interactionPromptElement.style.display = "block"; + } +}; +_InteractionManager.pageLimit = 3; +var InteractionManager = _InteractionManager; +var Modal = class { + constructor() { + this.element = document.createElement("div"); + this.element.style.display = "block"; + this.element.style.border = "1px solid #AAA"; + this.element.style.fontFamily = "sans-serif"; + this.element.style.color = "black"; + this.element.style.boxShadow = "0px 4px 4px rgba(0, 0, 0, 0.1)"; + this.element.style.backdropFilter = "blur(4px)"; + this.element.style.borderRadius = "4px"; + this.titleElement = document.createElement("div"); + this.titleElement.style.background = "rgba(255, 255, 255, 0.8)"; + this.titleElement.style.padding = "8px"; + this.titleElement.style.fontWeight = "bold"; + this.titleElement.style.borderBottom = "1px solid #AAA"; + this.contentsElement = document.createElement("div"); + this.contentsElement.style.background = "rgba(255, 255, 255, 0.6)"; + this.contentsElement.style.padding = "8px"; + this.element.append(this.titleElement, this.contentsElement); + this.element.addEventListener("keydown", (e) => { + e.stopPropagation(); + }); + } + dispose() { + this.element.remove(); + } +}; +var ConfirmModal = class extends Modal { + constructor(title, message, callback) { + super(); + this.titleElement.textContent = title; + this.confirmContentsElement = document.createElement("div"); + this.messageElement = document.createElement("div"); + this.messageElement.textContent = message; + this.messageElement.style.marginBottom = "8px"; + this.confirmContentsElement.appendChild(this.messageElement); + this.contentsElement.appendChild(this.confirmContentsElement); + this.buttonsHolder = document.createElement("div"); + this.buttonsHolder.style.display = "flex"; + this.buttonsHolder.style.justifyContent = "space-between"; + this.buttonsHolder.style.marginTop = "8px"; + this.cancelButton = document.createElement("button"); + this.cancelButton.setAttribute("data-test-id", "confirm-modal-cancel-button"); + this.cancelButton.style.cursor = "pointer"; + this.cancelButton.textContent = "Cancel"; + this.cancelButton.addEventListener("click", () => { + callback(false); + this.dispose(); + }); + this.buttonsHolder.appendChild(this.cancelButton); + this.okButton = document.createElement("button"); + this.okButton.setAttribute("data-test-id", "confirm-modal-ok-button"); + this.okButton.style.cursor = "pointer"; + this.okButton.textContent = "OK"; + this.okButton.addEventListener("click", () => { + callback(true); + this.dispose(); + }); + this.buttonsHolder.appendChild(this.okButton); + this.contentsElement.appendChild(this.buttonsHolder); + } +}; +var PromptModal = class extends Modal { + constructor(promptProps, callback) { + super(); + this.eventHandlerCollection = new EventHandlerCollection(); + this.callback = callback; + this.titleElement.textContent = "Prompt"; + this.promptContentsElement = document.createElement("div"); + this.promptMessageElement = document.createElement("div"); + this.promptMessageElement.textContent = promptProps.message || "Enter a value"; + this.promptMessageElement.style.marginBottom = "8px"; + this.promptContentsElement.appendChild(this.promptMessageElement); + this.promptInputElement = document.createElement("input"); + this.promptInputElement.type = "text"; + this.promptInputElement.style.width = "80vw"; + this.promptInputElement.style.maxWidth = "300px"; + this.promptInputElement.setAttribute("data-test-id", "prompt-input"); + this.promptInputElement.setAttribute("placeholder", promptProps.placeholder || ""); + this.promptInputElement.setAttribute("value", promptProps.prefill || ""); + this.promptInputElement.addEventListener("change", () => { + this.checkValue(); + }); + this.promptInputElement.addEventListener("keyup", (event) => { + if (event.key === "Enter") { + if (this.promptInputElement.value.length > 0) { + this.dispose(); + this.callback(this.promptInputElement.value); + } + } + this.checkValue(); + }); + this.eventHandlerCollection.add(document, "keydown", (e) => { + if (e.code === "Escape") { + this.dispose(); + this.callback(null); + } + this.checkValue(); + }); + this.promptContentsElement.appendChild(this.promptInputElement); + this.contentsElement.appendChild(this.promptContentsElement); + this.buttonsHolder = document.createElement("div"); + this.buttonsHolder.style.display = "flex"; + this.buttonsHolder.style.justifyContent = "space-between"; + this.buttonsHolder.style.marginTop = "8px"; + this.cancelButton = document.createElement("button"); + this.cancelButton.setAttribute("data-test-id", "prompt-cancel-button"); + this.cancelButton.style.cursor = "pointer"; + this.cancelButton.textContent = "Cancel"; + this.cancelButton.addEventListener("click", () => { + this.dispose(); + this.callback(null); + }); + this.buttonsHolder.appendChild(this.cancelButton); + this.okButton = document.createElement("button"); + this.okButton.setAttribute("data-test-id", "prompt-ok-button"); + this.okButton.style.cursor = "pointer"; + this.okButton.textContent = "OK"; + this.okButton.addEventListener("click", () => { + this.dispose(); + this.callback(this.promptInputElement.value); + }); + this.buttonsHolder.appendChild(this.okButton); + this.contentsElement.appendChild(this.buttonsHolder); + } + focus() { + this.promptInputElement.focus(); + this.promptInputElement.setSelectionRange( + this.promptInputElement.value.length, + this.promptInputElement.value.length + ); + this.checkValue(); + } + dispose() { + this.eventHandlerCollection.clear(); + super.dispose(); + } + checkValue() { + if (this.promptInputElement.value.length > 0) { + this.okButton.disabled = false; + } else { + this.okButton.disabled = true; + } + } +}; +var PromptManager = class _PromptManager { + constructor(container) { + this.container = container; + this.queue = new Array(); + this.currentPrompt = null; + this.currentModal = null; + const holderElement = document.createElement("div"); + holderElement.setAttribute("data-test-id", "prompt-holder"); + holderElement.style.zIndex = "100"; + holderElement.style.position = "absolute"; + holderElement.style.top = "50%"; + holderElement.style.left = "50%"; + holderElement.style.transform = "translate(-50%, -50%)"; + this.promptHolderElement = holderElement; + this.container.appendChild(this.promptHolderElement); + } + static init(container) { + return new _PromptManager(container); + } + dispose() { + this.promptHolderElement.remove(); + } + showPrompt(promptState) { + this.currentPrompt = promptState; + if ("href" in promptState) { + const confirmModal = new ConfirmModal( + "Confirm Navigation", + `Open ${promptState.href}?`, + (result) => { + this.currentPrompt = null; + this.currentModal = null; + if (result) { + let features; + if (promptState.popup) { + const popupWidth = 500; + const popupHeight = 500; + const screenLeft = window.screenLeft !== void 0 ? window.screenLeft : window.screenX; + const screenTop = window.screenTop !== void 0 ? window.screenTop : window.screenY; + const windowWidth = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; + const windowHeight = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; + const left = (windowWidth - popupWidth) / 2 + screenLeft; + const top = (windowHeight - popupHeight) / 2 + screenTop; + features = `toolbar=no,menubar=no,width=${popupWidth},height=${popupHeight},left=${left},top=${top}`; + } + const openedWindow = window.open( + promptState.href, + promptState.target ?? "_blank", + features + ); + promptState.windowCallback(openedWindow); + } + this.showNextPromptIfAny(); + } + ); + this.currentModal = confirmModal; + this.promptHolderElement.appendChild(confirmModal.element); + } else { + const promptModal = new PromptModal(promptState.promptProps, (result) => { + this.currentPrompt = null; + this.currentModal = null; + promptState.resolve(result); + this.showNextPromptIfAny(); + }); + this.currentModal = promptModal; + this.promptHolderElement.appendChild(promptModal.element); + promptModal.focus(); + } + } + prompt(promptProps, abortSignal, callback) { + abortSignal.addEventListener("abort", () => { + var _a; + if (this.currentPrompt === promptState) { + this.currentPrompt = null; + (_a = this.currentModal) == null ? void 0 : _a.dispose(); + this.showNextPromptIfAny(); + } else { + this.queue = this.queue.filter((item) => item !== promptState); + } + }); + const promptState = { + promptProps, + resolve: callback + }; + if (this.currentPrompt !== null) { + this.queue.push(promptState); + return; + } + this.showPrompt(promptState); + } + link(linkProps, abortSignal, windowCallback) { + abortSignal.addEventListener("abort", () => { + var _a; + if (this.currentPrompt === linkState) { + this.currentPrompt = null; + (_a = this.currentModal) == null ? void 0 : _a.dispose(); + this.currentModal = null; + this.showNextPromptIfAny(); + } else { + this.queue = this.queue.filter((item) => item !== linkState); + } + }); + const linkState = { + href: linkProps.href, + target: linkProps.target, + popup: linkProps.popup ?? false, + windowCallback + }; + if (this.currentPrompt !== null) { + this.queue.push(linkState); + return; + } + this.showPrompt(linkState); + } + showNextPromptIfAny() { + const nextPrompt = this.queue.shift(); + if (nextPrompt !== void 0) { + this.showPrompt(nextPrompt); + } + } +}; +var MMLScene = class { + constructor(element) { + this.element = element; + this.colliders = /* @__PURE__ */ new Set(); + this.interactions = /* @__PURE__ */ new Set(); + this.interactionListeners = /* @__PURE__ */ new Set(); + this.chatProbes = /* @__PURE__ */ new Set(); + this.chatProbeListeners = /* @__PURE__ */ new Set(); + this.graphicsAdapter = null; + this.loadingProgressManager = new LoadingProgressManager(); + } + init(graphicsAdapter) { + this.graphicsAdapter = graphicsAdapter; + this.graphicsAdapter.start(); + this.resizeObserver = new ResizeObserver(() => { + this.fitContainer(); + }); + this.resizeObserver.observe(this.element); + this.promptManager = PromptManager.init(this.element); + const { interactionManager, interactionListener } = InteractionManager.init( + this.element, + this.graphicsAdapter.interactionShouldShowDistance.bind(this.graphicsAdapter) + ); + this.interactionManager = interactionManager; + this.addInteractionListener(interactionListener); + this.resizeListener = () => { + this.fitContainer(); + }; + window.addEventListener("resize", this.resizeListener, false); + this.fitContainer(); + } + hasGraphicsAdapter() { + return this.graphicsAdapter !== null; + } + getGraphicsAdapter() { + if (!this.graphicsAdapter) { + throw new Error("MMLScene not initialized with a graphics adapter. Call init() first."); + } + return this.graphicsAdapter; + } + getRootContainer() { + if (!this.graphicsAdapter) { + throw new Error("MMLScene not initialized with a graphics adapter"); + } + return this.graphicsAdapter.getRootContainer(); + } + getUserPositionAndRotation() { + if (!this.graphicsAdapter) { + throw new Error("MMLScene not initialized with a graphics adapter"); + } + return this.graphicsAdapter.getUserPositionAndRotation(); + } + fitContainer() { + if (!this.graphicsAdapter) { + throw new Error("MMLScene not initialized with a graphics adapter"); + } + const width = this.element.clientWidth; + const height = this.element.clientHeight; + this.graphicsAdapter.resize(width, height); + } + dispose() { + window.removeEventListener("resize", this.resizeListener); + this.resizeObserver.disconnect(); + this.promptManager.dispose(); + this.interactionManager.dispose(); + } + prompt(promptProps, abortSignal, callback) { + if (!this) { + console.error("MMLScene not initialized"); + return; + } + this.promptManager.prompt(promptProps, abortSignal, callback); + } + link(linkProps, abortSignal, windowCallback) { + this.promptManager.link(linkProps, abortSignal, windowCallback); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + addCollider(collider, element) { + this.colliders.add(collider); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + updateCollider(collider) { + } + removeCollider(collider) { + this.colliders.delete(collider); + } + addInteraction(interaction) { + this.interactions.add(interaction); + for (const listener of this.interactionListeners) { + listener.addInteraction(interaction); + } + } + updateInteraction(interaction) { + for (const listener of this.interactionListeners) { + listener.updateInteraction(interaction); + } + } + removeInteraction(interaction) { + this.interactions.delete(interaction); + for (const listener of this.interactionListeners) { + listener.removeInteraction(interaction); + } + } + getInteractions() { + return this.interactions; + } + addInteractionListener(listener, addExistingInteractions = true) { + this.interactionListeners.add(listener); + if (addExistingInteractions) { + for (const interaction of this.interactions) { + listener.addInteraction(interaction); + } + } + } + removeInteractionListener(listener) { + this.interactionListeners.delete(listener); + } + addChatProbe(chatProbe) { + this.chatProbes.add(chatProbe); + for (const listener of this.chatProbeListeners) { + listener.addChatProbe(chatProbe); + } + } + updateChatProbe(chatProbe) { + for (const listener of this.chatProbeListeners) { + listener.updateChatProbe(chatProbe); + } + } + removeChatProbe(chatProbe) { + this.chatProbes.delete(chatProbe); + for (const listener of this.chatProbeListeners) { + listener.removeChatProbe(chatProbe); + } + } + getLoadingProgressManager() { + return this.loadingProgressManager; + } + getChatProbes() { + return this.chatProbes; + } + addChatProbeListener(listener, addExistingChatProbes = true) { + this.chatProbeListeners.add(listener); + if (addExistingChatProbes) { + for (const chatProbe of this.chatProbes) { + listener.addChatProbe(chatProbe); + } + } + } + removeChatProbeListener(listener) { + this.chatProbeListeners.delete(listener); + } +}; +var FullScreenMMLScene = class extends MMLScene { + constructor() { + super(document.createElement("div")); + this.element = document.createElement("div"); + this.element.style.width = "100%"; + this.element.style.height = "100%"; + this.element.style.position = "relative"; + const loadingProgressManager = this.getLoadingProgressManager(); + this.loadingProgressBar = new LoadingProgressBar(loadingProgressManager); + this.element.append(this.loadingProgressBar.element); + this.configureWindowStyling(); + } + configureWindowStyling() { + document.documentElement.style.width = "100%"; + document.documentElement.style.height = "100%"; + document.documentElement.style.overflow = "hidden"; + document.documentElement.style.overscrollBehaviorX = "contain"; + document.documentElement.style.margin = "0"; + const onload = () => { + document.body.style.margin = "0"; + document.body.style.height = "100%"; + }; + if (document.body) { + onload(); + } else { + window.addEventListener("load", () => { + onload(); + }); + } + } + dispose() { + super.dispose(); + this.element.remove(); + } +}; +var AudioGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var ChatProbeGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var CubeGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var CylinderGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var DebugHelperGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(debugHelper) { + } +}; +var FrameGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var ImageGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element, updateMeshCallback) { + } +}; +var InteractionGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var LabelGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var LightGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var LinkGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var MElementGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var ModelGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element, updateMeshCallback) { + } +}; +var PlaneGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var PositionProbeGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var PromptGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var RemoteDocumentGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var SphereGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var TransformableGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element) { + } +}; +var VideoGraphics = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(element, updateMeshCallback) { + } +}; +var IframeWrapper = class _IframeWrapper { + constructor() { + this.iframe = document.createElement("iframe"); + this.iframe.style.position = "fixed"; + this.iframe.style.top = "0"; + this.iframe.style.left = "0"; + this.iframe.style.width = "0"; + this.iframe.style.height = "0"; + this.iframe.style.border = "none"; + this.iframe.style.visibility = "hidden"; + } + static async create() { + return new Promise((resolve) => { + const iframeWrapper = new _IframeWrapper(); + document.body.append(iframeWrapper.iframe); + const ready = iframeWrapper.iframe.contentWindow ? iframeWrapper.iframe.contentWindow.document.readyState === "complete" : false; + const onLoad = () => { + const iframe = iframeWrapper.iframe; + const iframeWindow = iframe.contentWindow; + resolve({ + iframeWrapper, + iframeWindow, + iframeDocument: iframeWindow.document, + iframeBody: iframeWindow.document.body + }); + }; + if (ready) { + setTimeout(() => { + onLoad(); + }); + } else { + iframeWrapper.iframe.addEventListener("load", () => { + onLoad(); + }); + } + }); + } + dispose() { + this.iframe.remove(); + } +}; +var MMLNetworkSource = class _MMLNetworkSource { + constructor(options) { + this.options = options; + this.websocket = null; + } + static create(options) { + const mmlNetworkSource = new _MMLNetworkSource(options); + mmlNetworkSource.init(); + return mmlNetworkSource; + } + init() { + let overriddenHandler = null; + const eventHandler = (element, event) => { + if (!overriddenHandler) { + throw new Error("overriddenHandler not set"); + } + overriddenHandler(element, event); + }; + const src = this.options.url; + this.remoteDocumentWrapper = new RemoteDocumentWrapper( + src, + this.options.windowTarget, + this.options.mmlScene, + eventHandler + ); + this.options.targetForWrappers.append(this.remoteDocumentWrapper.remoteDocument); + let loadingProgressManager; + if (this.options.mmlScene.getLoadingProgressManager) { + loadingProgressManager = this.options.mmlScene.getLoadingProgressManager(); + } + const isWebsocket = src.startsWith("ws://") || src.startsWith("wss://"); + if (isWebsocket) { + const websocket = new NetworkedDOMWebsocket( + this.options.url, + NetworkedDOMWebsocket.createWebSocket, + this.remoteDocumentWrapper.remoteDocument, + (time) => { + this.remoteDocumentWrapper.setDocumentTime(time); + }, + (status) => { + if (status === NetworkedDOMWebsocketStatus.Connected) { + loadingProgressManager == null ? void 0 : loadingProgressManager.setInitialLoad(true); + } + this.options.statusUpdated(status); + }, + { + tagPrefix: "m-" + } + ); + this.websocket = websocket; + overriddenHandler = (element, event) => { + websocket.handleEvent(element, event); + }; + } else { + fetchRemoteStaticMML(this.options.url).then((remoteDocumentBody) => { + this.remoteDocumentWrapper.remoteDocument.append(remoteDocumentBody); + loadingProgressManager == null ? void 0 : loadingProgressManager.setInitialLoad(true); + }).catch((err) => { + loadingProgressManager == null ? void 0 : loadingProgressManager.setInitialLoad(err); + }); + overriddenHandler = () => { + }; + } + } + dispose() { + if (this.websocket) { + this.websocket.stop(); + this.websocket = null; + } + this.remoteDocumentWrapper.remoteDocument.remove(); + } +}; +var StatusUI = class { + constructor() { + this.element = document.createElement("div"); + this.element.style.position = "fixed"; + this.element.style.top = "50%"; + this.element.style.left = "50%"; + this.element.style.transform = "translate(-50%, -50%)"; + this.element.style.zIndex = "1000"; + this.element.style.backgroundColor = "rgba(0, 0, 0, 0.5)"; + this.element.style.color = "white"; + this.element.style.padding = "1em"; + this.element.style.fontFamily = "sans-serif"; + this.element.style.fontSize = "1.5em"; + this.element.style.fontWeight = "bold"; + this.element.style.pointerEvents = "none"; + this.element.style.display = "none"; + document.body.append(this.element); + } + setStatus(text) { + this.element.textContent = text; + this.element.style.display = "block"; + } + setNoStatus() { + this.element.textContent = ""; + this.element.style.display = "none"; + } + dispose() { + this.element.remove(); + } +}; +var tagAdapterDefaultTheme = { + background: "#1D2331", + brackets: "#D4D2C8", + tag: "#73D0FF", + attribute: "#FFD173", + unrecognizedAttribute: "#FF9800", + value: "#D5FF80", + appliedValue: "#B800FF", + equals: "#FFAD66", + quote: "#D5FF80" +}; +var TagDebugAdapterDebugHelper = class { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(debugHelper) { + } + dispose() { + } +}; +function TagDebugAdapterElement(functionToAttribute, additionalFunctions) { + return (element) => { + const result = {}; + for (const key in functionToAttribute) { + const attributeName = functionToAttribute[key]; + result[key] = (val) => { + var _a; + (_a = element.getContainer()) == null ? void 0 : _a.setAppliedAttributeValue(attributeName, val); + }; + } + return { + ...result, + enable: () => { + }, + disable: () => { + }, + getCollisionElement() { + return null; + }, + dispose: () => { + }, + ...additionalFunctions + }; + }; +} +var TagDebugAttribute = class { + constructor(key, value, theme, isObserved) { + this.key = key; + this.value = value; + this.theme = theme; + this.isObserved = isObserved; + this.appliedValue = null; + this.element = document.createElement("span"); + if (!isObserved) { + this.element.style.borderBottomStyle = "dotted"; + this.element.style.borderWidth = "2px"; + this.element.style.borderColor = this.theme.unrecognizedAttribute; + } + const keySpan = document.createElement("span"); + keySpan.textContent = ` ${key}`; + keySpan.style.color = this.theme.attribute; + const equalsSpan = document.createElement("span"); + equalsSpan.textContent = "="; + equalsSpan.style.color = this.theme.equals; + const quoteSpan = document.createElement("span"); + quoteSpan.textContent = `"`; + quoteSpan.style.color = this.theme.quote; + this.valueSpan = document.createElement("span"); + this.valueSpan.textContent = value; + this.valueSpan.style.color = this.theme.value; + const endQuoteSpan = document.createElement("span"); + endQuoteSpan.textContent = `"`; + endQuoteSpan.style.color = this.theme.quote; + this.appliedValueSpan = document.createElement("span"); + this.appliedValueSpan.className = "no-copy"; + this.appliedValueSpan.style.color = this.theme.appliedValue; + this.appliedValueSpan.style.display = "none"; + this.element.append( + keySpan, + equalsSpan, + quoteSpan, + this.valueSpan, + endQuoteSpan, + this.appliedValueSpan + ); + } + setValue(value) { + this.value = value; + if (value === null) { + this.valueSpan.textContent = ""; + this.appliedValueSpan.style.display = "none"; + if (this.appliedValue !== null) { + this.appliedValueSpan.style.display = "inline"; + } + return; + } + this.valueSpan.textContent = `${value}`; + if (this.appliedValue !== null) { + if (this.appliedValue.asString === value) { + this.appliedValueSpan.style.display = "none"; + } else { + this.appliedValueSpan.style.display = "inline"; + } + } + } + setAppliedValue(value) { + if (value === null) { + this.appliedValueSpan.style.display = "none"; + this.appliedValue = null; + return; + } + if (typeof value === "object") { + this.appliedValueSpan.style.display = "inline"; + this.appliedValueSpan.textContent = `\u2588(${value.r}, ${value.g}, ${value.b}${value.a ? `, ${value.a}` : ""})`; + const average = (value.r + value.g + value.b) / 3; + this.appliedValueSpan.style.color = `rgb(${value.r * 255}, ${value.g * 255}, ${value.b * 255})`; + this.appliedValueSpan.style.backgroundColor = average > 0.5 ? "black" : "white"; + } else { + const asString = value.toString(); + let displayString = asString; + if (typeof value === "number") { + const asFixed = value.toFixed(6); + if (asString.length > asFixed.length) { + displayString = asFixed; + } + } + this.appliedValue = { + raw: value, + asString, + displayString + }; + if (this.value !== null) { + if (this.value === asString) { + this.appliedValueSpan.style.display = "none"; + return; + } + } + this.appliedValueSpan.style.display = "inline"; + this.appliedValueSpan.textContent = `(${displayString})`; + } + } + hasAppliedValue() { + return this.appliedValue !== null; + } + hasValue() { + return this.value !== null; + } +}; +var ignoredAttributes = /* @__PURE__ */ new Set(["style"]); +var TagDebugMElement = class _TagDebugMElement { + constructor(mElement) { + this.mElement = mElement; + this.currentParent = null; + this.attributes = {}; + this.observedAttributes = /* @__PURE__ */ new Set(); + var _a, _b, _c; + const observedAttributesArray = ((_b = (_a = mElement.__proto__) == null ? void 0 : _a.constructor) == null ? void 0 : _b.observedAttributes) ?? []; + this.observedAttributes = /* @__PURE__ */ new Set([...observedAttributesArray, "id", "class"]); + const graphicAdapter = mElement.getScene().getGraphicsAdapter(); + this.theme = graphicAdapter.theme; + this.container = document.createElement("div"); + this.container.style.fontFamily = "monospace"; + this.container.style.lineHeight = "1.5em"; + const mElementParent = this.mElement.getMElementParent(); + if (mElementParent) { + this.currentParent = mElementParent.getContainer(); + (_c = this.currentParent) == null ? void 0 : _c.childElementHolder.append(this.container); + this.indentLevel = this.currentParent.indentLevel + 1; + } else { + const scene2 = this.mElement.getScene(); + this.currentParent = scene2; + scene2.getRootContainer().append(this.container); + this.indentLevel = 0; + } + const firstLine = document.createElement("div"); + firstLine.style.textWrap = "nowrap"; + const openingLineBreak = document.createElement("span"); + openingLineBreak.textContent = "\n"; + const openingBracket = document.createElement("span"); + const indent = Array(this.indentLevel * 4).fill(" ").join(""); + openingBracket.textContent = `${indent}<`; + openingBracket.style.color = this.theme.brackets; + openingBracket.style.whiteSpace = "pre"; + const openingTag = document.createElement("span"); + openingTag.textContent = mElement.tagName.toLowerCase(); + openingTag.style.color = this.theme.tag; + this.attributesHolder = document.createElement("span"); + const openingTagEnd = document.createElement("span"); + openingTagEnd.textContent = ">"; + openingTagEnd.style.color = this.theme.brackets; + firstLine.append( + openingLineBreak, + openingBracket, + openingTag, + this.attributesHolder, + openingTagEnd + ); + this.childElementHolder = document.createElement("div"); + const closingTag = document.createElement("div"); + closingTag.style.textWrap = "nowrap"; + const closingLineBreak = document.createElement("span"); + closingLineBreak.textContent = "\n"; + const closingTagOpeningBracket = document.createElement("span"); + closingTagOpeningBracket.textContent = `${indent}"; + closingTagEnd.style.color = this.theme.brackets; + closingTag.append(closingLineBreak, closingTagOpeningBracket, closingTagName, closingTagEnd); + this.container.append(firstLine, this.childElementHolder, closingTag); + this.mutationObserver = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + if (mutation.type === "attributes") { + const attributeName = mutation.attributeName; + if (ignoredAttributes.has(attributeName)) { + return; + } + const attributeValue = this.mElement.getAttribute(attributeName); + const existingAttribute = this.attributes[attributeName]; + if (attributeValue === null) { + if (existingAttribute) { + if (!existingAttribute.hasAppliedValue()) { + existingAttribute.element.remove(); + delete this.attributes[attributeName]; + } else { + existingAttribute.setValue(null); + } + } + } else { + if (existingAttribute) { + existingAttribute.setValue(attributeValue); + } else { + this.createAttributeElement(attributeName, attributeValue); + } + } + } + }); + }); + for (let i = 0; i < mElement.attributes.length; i++) { + const attribute = mElement.attributes[i]; + if (ignoredAttributes.has(attribute.name)) { + continue; + } + this.createAttributeElement(attribute.name, attribute.value); + } + this.mutationObserver.observe(mElement, { attributes: true }); + } + createAttributeElement(attributeName, value) { + const newAttribute = new TagDebugAttribute( + attributeName, + value, + this.theme, + this.observedAttributes.has(attributeName) + ); + this.attributes[attributeName] = newAttribute; + this.attributesHolder.append(newAttribute.element); + return newAttribute; + } + setAppliedAttributeValue(attributeName, value) { + const existingAttribute = this.attributes[attributeName]; + if (existingAttribute) { + existingAttribute.setAppliedValue(value); + if (value === null && !existingAttribute.hasValue()) { + existingAttribute.element.remove(); + delete this.attributes[attributeName]; + } + } else if (value !== null) { + const newAttribute = this.createAttributeElement(attributeName, null); + newAttribute.setAppliedValue(value); + } + } + getContainer() { + return this; + } + dispose() { + this.mutationObserver.disconnect(); + if (this.currentParent === null) { + throw new Error("Was not connected to a parent"); + } + if (this.currentParent instanceof _TagDebugMElement) { + this.currentParent.childElementHolder.removeChild(this.container); + this.currentParent = null; + } else { + this.currentParent.getRootContainer().removeChild(this.container); + this.currentParent = null; + } + } +}; +var TagDebugAdapterGraphicsInterface = { + MElementGraphicsInterface: (element) => new TagDebugMElement(element), + MMLDebugHelperGraphicsInterface: (debugHelper) => new TagDebugAdapterDebugHelper(debugHelper), + MMLCubeGraphicsInterface: TagDebugAdapterElement( + { + setWidth: "width", + setHeight: "height", + setDepth: "depth", + setCastShadows: "cast-shadows", + setColor: "color", + setOpacity: "opacity" + }, + {} + ), + MMLSphereGraphicsInterface: TagDebugAdapterElement( + { + setRadius: "radius", + setCastShadows: "cast-shadows", + setColor: "color", + setOpacity: "opacity" + }, + {} + ), + MMLPlaneGraphicsInterface: TagDebugAdapterElement( + { + setWidth: "width", + setHeight: "height", + setCastShadows: "cast-shadows", + setColor: "color", + setOpacity: "opacity" + }, + {} + ), + MMLImageGraphicsInterface: TagDebugAdapterElement( + { + setSrc: "src", + setWidth: "width", + setHeight: "height", + setEmissive: "emissive", + setCastShadows: "cast-shadows", + setOpacity: "opacity" + }, + { + getWidthAndHeight: () => ({ width: 0, height: 0 }) + } + ), + MMLAudioGraphicsInterface: TagDebugAdapterElement( + { + setSrc: "src", + setEnabled: "enabled", + setLoop: "loop", + setLoopDuration: "loop-duration", + setVolume: "volume", + setStartTime: "start-time", + setPauseTime: "pause-time", + setConeAngle: "cone-angle", + setConeFalloffAngle: "cone-falloff-angle", + setDebug: "debug" + }, + { + syncAudioTime: () => { + } + } + ), + MMLCylinderGraphicsInterface: TagDebugAdapterElement( + { + setRadius: "radius", + setHeight: "height", + setCastShadows: "cast-shadows", + setColor: "color", + setOpacity: "opacity" + }, + {} + ), + MMLTransformableGraphicsInterface: TagDebugAdapterElement( + { + setX: "x", + setY: "y", + setZ: "z", + setRotationX: "rx", + setRotationY: "ry", + setRotationZ: "rz", + setScaleX: "sx", + setScaleY: "sy", + setScaleZ: "sz", + setVisible: "visible", + setSocket: "socket" + }, + { + getWorldMatrix: () => { + return new Matr4(); + } + } + ), + RemoteDocumentGraphicsInterface: TagDebugAdapterElement( + {}, + { + showError() { + }, + dispose() { + } + } + ), + MMLLightGraphicsInterface: TagDebugAdapterElement( + { + setEnabled: "enabled", + setDebug: "debug", + setCastShadows: "cast-shadows", + setAngle: "angle", + setIntensity: "intensity", + setDistance: "distance", + setType: "type", + setColor: "color" + }, + {} + ), + MMLLinkGraphicsInterface: TagDebugAdapterElement( + { + setHref: "href", + setTarget: "target" + }, + {} + ), + MMLModelGraphicsInterface: TagDebugAdapterElement( + { + setSrc: "src", + setDebug: "debug", + setCastShadows: "cast-shadows", + setAnim: "anim", + setAnimEnabled: "anim-enabled", + setAnimStartTime: "anim-start-time", + setAnimPauseTime: "anim-pause-time", + setAnimLoop: "anim-loop" + }, + { + getBoundingBox: () => ({ + centerOffset: { x: 0, y: 0, z: 0 }, + size: { x: 0, y: 0, z: 0 } + }), + hasLoadedAnimation: () => false, + hasLoadedModel: () => false, + transformed: () => false + } + ), + MMLVideoGraphicsInterface: TagDebugAdapterElement( + { + setSrc: "src", + setWidth: "width", + setHeight: "height", + setEnabled: "enabled", + setCastShadows: "cast-shadows", + setLoop: "loop", + setVolume: "volume", + setEmissive: "emissive", + setStartTime: "start-time", + setPauseTime: "pause-time" + }, + { + syncVideoTime: () => { + }, + getWidthAndHeight: () => ({ width: 0, height: 0 }) + } + ), + MMLFrameGraphicsInterface: TagDebugAdapterElement( + { + setSrc: "src", + setDebug: "debug", + setLoadRange: "load-range", + setUnloadRange: "unload-range", + setMinX: "min-x", + setMaxX: "max-x", + setMinY: "min-y", + setMaxY: "max-y", + setMinZ: "min-z", + setMaxZ: "max-z" + }, + {} + ), + MMLLabelGraphicsInterface: TagDebugAdapterElement( + { + setContent: "content", + setFontSize: "font-size", + setAlignment: "alignment", + setPadding: "padding", + setColor: "color", + setFontColor: "font-color", + setEmissive: "emissive", + setWidth: "width", + setHeight: "height", + setCastShadows: "cast-shadows" + }, + {} + ), + MMLPromptGraphicsInterface: TagDebugAdapterElement( + { + setMessage: "message", + setPlaceholder: "placeholder", + setPrefill: "prefill", + setDebug: "debug" + }, + {} + ), + MMLInteractionGraphicsInterface: TagDebugAdapterElement( + { + setRange: "range", + setInFocus: "in-focus", + setLineOfSight: "line-of-sight", + setPriority: "priority", + setPrompt: "prompt", + setDebug: "debug" + }, + {} + ), + MMLChatProbeGraphicsInterface: TagDebugAdapterElement( + { + setRange: "range", + setDebug: "debug" + }, + {} + ), + MMLPositionProbeGraphicsInterface: TagDebugAdapterElement( + { + setRange: "range", + setDebug: "debug" + }, + {} + ) +}; +var StandaloneTagDebugAdapter = class _StandaloneTagDebugAdapter { + constructor(element) { + this.element = element; + this.theme = tagAdapterDefaultTheme; + this.element.style.background = this.theme.background; + element.addEventListener("copy", function(e) { + var _a; + e.preventDefault(); + const selection = window.getSelection(); + if (selection) { + const range = selection.getRangeAt(0); + const div = document.createElement("div"); + div.appendChild(range.cloneContents()); + const noCopyElements = div.querySelectorAll(".no-copy"); + noCopyElements.forEach((element2) => element2.remove()); + const asText = div.textContent; + if (asText) { + (_a = e.clipboardData) == null ? void 0 : _a.setData("text/plain", asText); + } + } + }); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + interactionShouldShowDistance(interaction) { + return null; + } + getGraphicsAdapterFactory() { + return TagDebugAdapterGraphicsInterface; + } + static async create(element) { + element.style.overflow = "auto"; + const adapter = new _StandaloneTagDebugAdapter(element); + await adapter.init(); + return adapter; + } + async init() { + return Promise.resolve(); + } + start() { + } + getUserPositionAndRotation() { + return { + position: { + x: 0, + y: 0, + z: 0 + }, + rotation: { + x: 0, + y: 0, + z: 0 + } + }; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + resize(width, height) { + } + dispose() { + } + getRootContainer() { + return this.element; + } +}; +function calculateContentSize(opts) { + if (opts.content) { + const height = opts.height; + const width = opts.width; + const loadedWidth = Math.max(opts.content.width, 1); + const loadedHeight = Math.max(opts.content.height, 1); + if (height && width) { + return { width, height }; + } else if (height && !width) { + return { + // compute width from height and content aspect ratio + width: height * loadedWidth / loadedHeight, + height + }; + } else if (!height && width) { + return { + width, + // compute height from width and content aspect ratio + height: width * loadedHeight / loadedWidth + }; + } else { + return { + width: 1, + // compute height from content aspect ratio + height: loadedHeight / loadedWidth + }; + } + } else { + return { + width: opts.width !== null ? opts.width : 1, + height: opts.height !== null ? opts.height : 1 + }; + } +} +var StaticFileVideoSource = class { + constructor(srcURL, videoTag, videoSourceProps, getDocumentTime) { + this.srcURL = srcURL; + this.videoTag = videoTag; + this.videoSourceProps = videoSourceProps; + this.getDocumentTime = getDocumentTime; + this.delayedStartTimer = null; + this.delayedPauseTimer = null; + this.shouldBePaused = false; + this.pauseListener = () => { + if (this.shouldBePaused) { + return; + } + if (this.videoSourceProps) { + this.syncVideoSource(this.videoSourceProps); + } + }; + videoTag.addEventListener("pause", this.pauseListener); + try { + videoTag.src = srcURL.toString(); + } catch (e) { + console.error("src failed to switch", e); + } + } + getContentAddress() { + return this.srcURL.toString(); + } + dispose() { + this.videoTag.removeEventListener("pause", this.pauseListener); + this.videoTag.src = ""; + if (this.delayedPauseTimer !== null) { + clearTimeout(this.delayedPauseTimer); + this.delayedPauseTimer = null; + } + if (this.delayedStartTimer !== null) { + clearTimeout(this.delayedStartTimer); + this.delayedStartTimer = null; + } + } + syncVideoSource(props) { + const documentTimeMilliseconds = this.getDocumentTime(); + this.videoSourceProps = props; + if (this.delayedStartTimer) { + clearTimeout(this.delayedStartTimer); + this.delayedStartTimer = null; + } + if (this.delayedPauseTimer !== null) { + clearTimeout(this.delayedPauseTimer); + this.delayedPauseTimer = null; + } + const startTimeMilliseconds = props.startTime ? props.startTime : 0; + const pauseTimeMilliseconds = props.pauseTime; + if (pauseTimeMilliseconds !== null) { + if (documentTimeMilliseconds !== null && pauseTimeMilliseconds > documentTimeMilliseconds) { + const delayedPauseTimer = setTimeout(() => { + if (this.delayedPauseTimer === delayedPauseTimer) { + this.delayedPauseTimer = null; + } + this.syncVideoSource(this.videoSourceProps); + }, pauseTimeMilliseconds - documentTimeMilliseconds); + this.delayedPauseTimer = delayedPauseTimer; + } else { + let totalPlaybackTimeSeconds = (pauseTimeMilliseconds - startTimeMilliseconds) / 1e3; + if (totalPlaybackTimeSeconds < 0) { + totalPlaybackTimeSeconds = 0; + } + if (props.loop) { + totalPlaybackTimeSeconds = totalPlaybackTimeSeconds % this.videoTag.duration; + } else if (totalPlaybackTimeSeconds > this.videoTag.duration) { + totalPlaybackTimeSeconds = this.videoTag.duration; + } + this.shouldBePaused = true; + this.videoTag.pause(); + this.videoTag.currentTime = totalPlaybackTimeSeconds; + return; + } + } + let currentTimeSeconds = 0; + if (documentTimeMilliseconds) { + currentTimeSeconds = (documentTimeMilliseconds - startTimeMilliseconds) / 1e3; + } else { + currentTimeSeconds = startTimeMilliseconds / 1e3; + } + let desiredVideoTimeSeconds; + if (currentTimeSeconds < 0) { + this.videoTag.currentTime = 0; + this.shouldBePaused = true; + this.videoTag.pause(); + const delayedStartTimer = setTimeout(() => { + if (this.delayedStartTimer === delayedStartTimer) { + this.delayedStartTimer = null; + } + this.syncVideoSource(this.videoSourceProps); + }, -currentTimeSeconds * 1e3); + this.delayedStartTimer = delayedStartTimer; + return; + } else if (props.loop) { + desiredVideoTimeSeconds = currentTimeSeconds % this.videoTag.duration; + } else { + desiredVideoTimeSeconds = currentTimeSeconds; + } + let delta = desiredVideoTimeSeconds - this.videoTag.currentTime; + if (props.loop) { + const loopedDelta = delta - this.videoTag.duration; + if (Math.abs(delta) > Math.abs(loopedDelta)) { + delta = loopedDelta; + } + } + if (Math.abs(delta) < 0.1) { + this.videoTag.playbackRate = 1; + } else if (Math.abs(delta) > 0.5) { + this.videoTag.currentTime = desiredVideoTimeSeconds; + this.videoTag.playbackRate = 1; + } else { + if (delta > 0) { + this.videoTag.playbackRate = 1.02; + } else { + this.videoTag.playbackRate = 0.98; + } + } + if (desiredVideoTimeSeconds >= this.videoTag.duration) { + this.shouldBePaused = true; + this.videoTag.pause(); + return; + } else { + this.shouldBePaused = false; + if (this.videoTag.paused) { + this.videoTag.play().catch((e) => { + console.error("failed to play", e); + }); + } + return; + } + } +}; +async function negotiateConnectionWithClientOffer(peerConnection, endpoint) { + const offer = await peerConnection.createOffer(); + await peerConnection.setLocalDescription(offer); + const ofr = await waitToCompleteICEGathering(peerConnection); + if (!ofr) { + throw Error("failed to gather ICE candidates for offer"); + } + while (peerConnection.connectionState !== "closed") { + const response = await postSDPOffer(endpoint, ofr.sdp); + if (response.status === 201) { + const answerSDP = await response.text(); + await peerConnection.setRemoteDescription( + new RTCSessionDescription({ type: "answer", sdp: answerSDP }) + ); + return response.headers.get("Location"); + } else if (response.status === 405) { + console.log("Remember to update the URL passed into the WHIP or WHEP client"); + } else { + const errorMessage = await response.text(); + console.error("WHEP error in negotiation response", errorMessage); + } + await new Promise((r) => setTimeout(r, 5e3)); + } +} +async function postSDPOffer(endpoint, data) { + return await fetch(endpoint, { + method: "POST", + mode: "cors", + headers: { + "content-type": "application/sdp" + }, + body: data + }); +} +async function waitToCompleteICEGathering(peerConnection) { + return new Promise((resolve) => { + setTimeout(function() { + resolve(peerConnection.localDescription); + }, 1e3); + peerConnection.onicegatheringstatechange = () => peerConnection.iceGatheringState === "complete" && resolve(peerConnection.localDescription); + }); +} +var WHEPVideoSource = class { + constructor(srcURL, videoTag) { + this.srcURL = srcURL; + this.videoTag = videoTag; + const endpoint = new URL(srcURL); + endpoint.protocol = "https:"; + this.stream = new MediaStream(); + this.peerConnection = new RTCPeerConnection({ + iceServers: [ + { + urls: "stun:stun.cloudflare.com:3478" + } + ], + bundlePolicy: "max-bundle" + }); + this.peerConnection.addTransceiver("video", { + direction: "recvonly" + }); + this.peerConnection.addTransceiver("audio", { + direction: "recvonly" + }); + this.peerConnection.ontrack = (event) => { + const track = event.track; + const currentTracks = this.stream.getTracks(); + const streamAlreadyHasVideoTrack = currentTracks.some((track2) => track2.kind === "video"); + const streamAlreadyHasAudioTrack = currentTracks.some((track2) => track2.kind === "audio"); + switch (track.kind) { + case "video": + if (streamAlreadyHasVideoTrack) { + break; + } + this.stream.addTrack(track); + break; + case "audio": + if (streamAlreadyHasAudioTrack) { + break; + } + this.stream.addTrack(track); + break; + default: + console.warn("got unknown track " + track); + } + }; + this.peerConnection.addEventListener("connectionstatechange", () => { + if (this.peerConnection.connectionState !== "connected") { + return; + } + this.videoTag.srcObject = this.stream; + }); + this.peerConnection.addEventListener("negotiationneeded", async () => { + try { + await negotiateConnectionWithClientOffer(this.peerConnection, endpoint.toString()); + } catch (err) { + console.error("Failed to negotiate with WHEP endpoint", err); + } + }); + } + getContentAddress() { + return this.srcURL.toString(); + } + dispose() { + this.peerConnection.close(); + this.videoTag.srcObject = null; + } + syncVideoSource() { + this.videoTag.play().catch((err) => { + console.error("play error", err); + }); + } + static isWHEPURL(url) { + return url.protocol === "whep:"; + } +}; + +// src/ui/fields.ts +var sourceGroup = { + name: "source", + label: "Source" +}; +var rendererGroup = { + name: "renderer", + label: "Renderer" +}; +var environmentGroup = { + name: "environment", + label: "Environment" +}; +var cameraGroup = { + name: "camera", + label: "Camera" +}; +var lightGroup = { + name: "light", + label: "Light" +}; +var allGroups = [sourceGroup, rendererGroup, cameraGroup, lightGroup, environmentGroup]; +var cameraModeField = { + name: "cameraMode", + label: "Camera Mode", + type: "string", + options: ["orbit", "drag-fly", "none"], + defaultValue: "drag-fly", + groupDefinition: cameraGroup +}; +var cameraOrbitSpeedField = { + name: "cameraOrbitSpeed", + label: "Camera Orbit Speed (degrees per second)", + type: "number", + defaultValue: 10, + groupDefinition: cameraGroup +}; +var cameraOrbitDistanceField = { + name: "cameraOrbitDistance", + label: "Camera Orbit Distance", + type: "number", + defaultValue: 10, + groupDefinition: cameraGroup +}; +var cameraOrbitPitchField = { + name: "cameraOrbitPitch", + label: "Camera Orbit Pitch", + type: "number", + defaultValue: 60, + groupDefinition: cameraGroup +}; +var cameraFitContents = { + name: "cameraFitContents", + label: "Camera Fit Contents", + type: "string", + options: ["true", "false"], + defaultValue: "false", + groupDefinition: cameraGroup +}; +var cameraLookAtField = { + name: "cameraLookAt", + label: "Camera Look At", + type: "x,y,z", + defaultValue: "0,0,0", + groupDefinition: cameraGroup +}; +var cameraPositionField = { + name: "cameraPosition", + label: "Camera Position", + type: "x,y,z", + defaultValue: "0,5,10", + groupDefinition: cameraGroup +}; +var cameraFovField = { + name: "cameraFov", + label: "Camera FOV", + type: "number", + defaultValue: 75, + groupDefinition: cameraGroup +}; +var urlField = { + name: "url", + label: "URL", + type: "string", + defaultValue: "", + requireSubmission: true, + groupDefinition: sourceGroup +}; +var rendererField = { + name: "renderer", + label: "Renderer", + type: "string", + options: ["threejs", "playcanvas", "tags"], + defaultValue: "threejs", + groupDefinition: rendererGroup +}; +var backgroundColorField = { + name: "backgroundColor", + label: "Background Color", + type: "color", + defaultValue: "rgba(255, 255, 255, 0)", + groupDefinition: rendererGroup +}; +var environmentMapField = { + name: "environmentMap", + label: "Environment Map", + type: "string", + defaultValue: "", + requireSubmission: true, + groupDefinition: environmentGroup +}; +var ambientLightField = { + name: "ambientLight", + label: "Ambient Light", + type: "number", + defaultValue: 0, + groupDefinition: lightGroup +}; +var ambientLightColorField = { + name: "ambientLightColor", + label: "Ambient Light Color", + type: "color", + defaultValue: "white", + groupDefinition: lightGroup +}; +var allFields = [ + cameraModeField, + cameraFitContents, + cameraLookAtField, + cameraOrbitDistanceField, + cameraOrbitPitchField, + cameraOrbitSpeedField, + cameraPositionField, + cameraFovField, + environmentMapField, + urlField, + rendererField, + backgroundColorField, + ambientLightField, + ambientLightColorField +]; + +// src/setDebugGlobals.ts +function setDebugGlobals({ + mmlScene, + remoteDocumentWrapper +}) { + window["mml-web-client"] = { + mmlScene, + remoteDocumentWrapper + }; +} + +export { + NetworkedDOMWebsocketStatus, + NetworkedDOMWebsocketStatusToString, + parseColorAttribute, + parseBoolAttribute, + MELEMENT_PROPERTY_NAME, + MElement, + Quat, + Vect3, + Matr4, + CanvasText, + radToDeg, + TransformableElement, + Audio, + Model, + getRelativePositionAndRotationRelativeToObject, + LoadingInstanceManager, + Image, + LightTypes, + registerCustomElementsToWindow, + EventHandlerCollection, + FullScreenMMLScene, + AudioGraphics, + ChatProbeGraphics, + CubeGraphics, + CylinderGraphics, + DebugHelperGraphics, + FrameGraphics, + ImageGraphics, + InteractionGraphics, + LabelGraphics, + LightGraphics, + LinkGraphics, + MElementGraphics, + ModelGraphics, + PlaneGraphics, + PositionProbeGraphics, + PromptGraphics, + RemoteDocumentGraphics, + SphereGraphics, + TransformableGraphics, + VideoGraphics, + IframeWrapper, + MMLNetworkSource, + StatusUI, + StandaloneTagDebugAdapter, + calculateContentSize, + StaticFileVideoSource, + WHEPVideoSource, + allGroups, + cameraModeField, + cameraOrbitSpeedField, + cameraOrbitDistanceField, + cameraOrbitPitchField, + cameraFitContents, + cameraLookAtField, + cameraPositionField, + cameraFovField, + urlField, + rendererField, + backgroundColorField, + environmentMapField, + ambientLightField, + ambientLightColorField, + allFields, + setDebugGlobals +}; +//# sourceMappingURL=chunk-OGDCF6KN.js.map diff --git a/pull/212/v1/chunk-OGDCF6KN.js.map b/pull/212/v1/chunk-OGDCF6KN.js.map new file mode 100644 index 00000000..062dc4ab --- /dev/null +++ b/pull/212/v1/chunk-OGDCF6KN.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.1/constants.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/BufferReader.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/BufferWriter.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/common-structs/attributes.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/common-structs/nodeDescription.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/constants.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messageTypes.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-client/connectUsers.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-client/disconnectUsers.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-client/event.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-client/pong.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/decodeClientMessages.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/attributesChanged.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/batchEnd.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/batchStart.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/changeHiddenFrom.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/changeVisibleTo.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/childrenAdded.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/childrenRemoved.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/documentTime.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/error.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/ping.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/snapshot.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/textChanged.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/messages/from-server/warning.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/decodeServerMessages.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/encodeClientMessage.ts", "../../../node_modules/@mml-io/networked-dom-protocol/src/networked-dom-v0.2/encodeServerMessage.ts", "../../../node_modules/@mml-io/networked-dom-web/src/DOMSanitizer.ts", "../../../node_modules/@mml-io/networked-dom-web/src/NetworkedDOMWebsocket.ts", "../../../node_modules/@mml-io/networked-dom-web/src/NetworkedDOMWebsocketV01Adapter.ts", "../../../node_modules/@mml-io/networked-dom-web/src/NetworkedDOMWebsocketV02Adapter.ts", "../../../node_modules/@mml-io/mml-web/src/color/color-utils.ts", "../../../node_modules/@mml-io/mml-web/src/color/colors.ts", "../../../node_modules/@mml-io/mml-web/src/attributes/attribute-handling.ts", "../../../node_modules/@mml-io/mml-web/src/global/global.ts", "../../../node_modules/@mml-io/mml-web/src/elements/MElement.ts", "../../../node_modules/@mml-io/mml-web/src/elements/AttributeAnimation.ts", "../../../node_modules/@mml-io/mml-web/src/elements/AttributeLerp.ts", "../../../node_modules/@mml-io/mml-web/src/attribute-animation/AnimatedAttributeHelper.ts", "../../../node_modules/@mml-io/mml-web/src/attribute-animation/easingFunctions.ts", "../../../node_modules/@mml-io/mml-web/src/attribute-animation/easings.ts", "../../../node_modules/@mml-io/mml-web/src/attribute-animation/animation-timings.ts", "../../../node_modules/@mml-io/mml-web/src/math/Quat.ts", "../../../node_modules/@mml-io/mml-web/src/math/Vect3.ts", "../../../node_modules/@mml-io/mml-web/src/math/Matr4.ts", "../../../node_modules/@mml-io/mml-web/src/bounding-box/OrientedBoundingBox.ts", "../../../node_modules/@mml-io/mml-web/src/canvas-text/CanvasText.ts", "../../../node_modules/@mml-io/mml-web/src/collision/CollideableHelper.ts", "../../../node_modules/@mml-io/mml-web/src/collision/MMLCollisionTrigger.ts", "../../../node_modules/@mml-io/mml-web/src/debug-helper/DebugHelper.ts", "../../../node_modules/@mml-io/mml-web/src/math/EulXYZ.ts", "../../../node_modules/@mml-io/mml-web/src/math/radToDeg.ts", "../../../node_modules/@mml-io/mml-web/src/elements/TransformableElement.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Audio.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Model.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Character.ts", "../../../node_modules/@mml-io/mml-web/src/position/position-utils.ts", "../../../node_modules/@mml-io/mml-web/src/elements/ChatProbe.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Cube.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Cylinder.ts", "../../../node_modules/@mml-io/mml-web/src/frame/CreateWrappedScene.ts", "../../../node_modules/@mml-io/mml-web/src/loading/LoadingInstanceManager.ts", "../../../node_modules/@mml-io/mml-web/src/loading/LoadingProgressManager.ts", "../../../node_modules/@mml-io/mml-web/src/loading/LoadingProgressBar.ts", "../../../node_modules/@mml-io/mml-web/src/remote-document/fetchRemoteStaticMML.ts", "../../../node_modules/@mml-io/mml-web/src/remote-document/RemoteDocumentWrapper.ts", "../../../node_modules/@mml-io/mml-web/src/frame/StaticHTMLFrameInstance.ts", "../../../node_modules/@mml-io/mml-web/src/frame/WebSocketFrameInstance.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Frame.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Group.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Image.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Interaction.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Label.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Light.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Link.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Plane.ts", "../../../node_modules/@mml-io/mml-web/src/elements/PositionProbe.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Prompt.ts", "../../../node_modules/@mml-io/mml-web/src/time/MMLDocumentTimeManager.ts", "../../../node_modules/@mml-io/mml-web/src/elements/RemoteDocument.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Sphere.ts", "../../../node_modules/@mml-io/mml-web/src/elements/Video.ts", "../../../node_modules/@mml-io/mml-web/src/elements/register-custom-elements.ts", "../../../node_modules/@mml-io/mml-web/src/utils/EventHandlerCollection.ts", "../../../node_modules/@mml-io/mml-web/src/interaction-ui/InteractionManager.ts", "../../../node_modules/@mml-io/mml-web/src/prompt-ui/Modal.ts", "../../../node_modules/@mml-io/mml-web/src/prompt-ui/ConfirmModal.ts", "../../../node_modules/@mml-io/mml-web/src/prompt-ui/PromptModal.ts", "../../../node_modules/@mml-io/mml-web/src/prompt-ui/PromptManager.ts", "../../../node_modules/@mml-io/mml-web/src/scene/MMLScene.ts", "../../../node_modules/@mml-io/mml-web/src/scene/FullScreenMMLScene.ts", "../../../node_modules/@mml-io/mml-web/src/configure-window-for-mml.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/AudioGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/ChatProbeGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/CubeGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/CylinderGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/DebugHelperGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/FrameGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/ImageGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/InteractionGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/LabelGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/LightGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/LinkGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/MElementGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/ModelGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/PlaneGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/PositionProbeGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/PromptGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/RemoteDocumentGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/SphereGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/TransformableGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/graphics/VideoGraphics.ts", "../../../node_modules/@mml-io/mml-web/src/iframe/IframeWrapper.ts", "../../../node_modules/@mml-io/mml-web/src/network/MMLNetworkSource.ts", "../../../node_modules/@mml-io/mml-web/src/status-ui/StatusUI.ts", "../../../node_modules/@mml-io/mml-web/src/tag-debug-adapter/TagAdapterThemeColors.ts", "../../../node_modules/@mml-io/mml-web/src/tag-debug-adapter/TagDebugAdapterDebugHelper.ts", "../../../node_modules/@mml-io/mml-web/src/tag-debug-adapter/TagDebugAdapterElement.ts", "../../../node_modules/@mml-io/mml-web/src/tag-debug-adapter/TagDebugAttribute.ts", "../../../node_modules/@mml-io/mml-web/src/tag-debug-adapter/TagDebugMElement.ts", "../../../node_modules/@mml-io/mml-web/src/tag-debug-adapter/TagDebugAdapterGraphicsInterface.ts", "../../../node_modules/@mml-io/mml-web/src/tag-debug-adapter/StandaloneTagDebugAdapter.ts", "../../../node_modules/@mml-io/mml-web/src/utils/calculateContentSize.ts", "../../../node_modules/@mml-io/mml-web/src/video/StaticFileVideoSource.ts", "../../../node_modules/@mml-io/mml-web/src/video/negotiateConnectionWithClientOffer.ts", "../../../node_modules/@mml-io/mml-web/src/video/WHEPVideoSource.ts", "../../../node_modules/@mml-io/mml-web/src/index.ts", "../src/ui/fields.ts", "../src/setDebugGlobals.ts"], + "sourcesContent": ["export const networkedDOMProtocolSubProtocol_v0_1 = \"networked-dom-v0.1\";\n", "const textDecoder = new TextDecoder();\n\nexport class BufferReader {\n private buffer: Uint8Array;\n private offset: number;\n\n constructor(buffer: Uint8Array) {\n this.buffer = buffer;\n this.offset = 0;\n }\n\n public readUInt8(): number {\n return this.buffer[this.offset++];\n }\n\n public readBoolean(): boolean {\n return this.readUInt8() === 1;\n }\n\n public readUVarint(signed = false): number {\n let lo = 0;\n let hi = 0;\n let i = 0;\n for (; i < 4; ++i) {\n lo = (lo | ((this.buffer[this.offset] & 127) << (i * 7))) >>> 0;\n if (this.buffer[this.offset++] < 128) {\n return signed ? loAndHiAsSigned(lo, hi) : loAndHiAsUnsigned(lo, hi);\n }\n }\n lo = (lo | ((this.buffer[this.offset] & 127) << 28)) >>> 0;\n hi = (hi | ((this.buffer[this.offset] & 127) >> 4)) >>> 0;\n if (this.buffer[this.offset++] < 128) {\n return signed ? loAndHiAsSigned(lo, hi) : loAndHiAsUnsigned(lo, hi);\n }\n i = 0;\n for (; i < 5; ++i) {\n hi = (hi | ((this.buffer[this.offset] & 127) << (i * 7 + 3))) >>> 0;\n if (this.buffer[this.offset++] < 128) {\n return signed ? loAndHiAsSigned(lo, hi) : loAndHiAsUnsigned(lo, hi);\n }\n }\n\n throw Error(\"invalid varint encoding\");\n }\n\n public readUVarintPrefixedString(): string {\n const readLength = this.readUVarint();\n\n let string = \"\";\n let hasNonAscii = false;\n for (let i = 0; i < readLength; i++) {\n const charValue = this.buffer[this.offset + i];\n if (charValue < 0x80) {\n string += String.fromCharCode(charValue);\n } else {\n hasNonAscii = true;\n break;\n }\n }\n if (!hasNonAscii) {\n this.offset += readLength;\n return string;\n }\n\n // Slow path - decode the string using TextDecoder\n const result = textDecoder.decode(this.buffer.subarray(this.offset, this.offset + readLength));\n this.offset += readLength;\n return result;\n }\n\n // returns the string and a boolean indicating if the string was negative length\n public readVarintPrefixedString(): [string, boolean] {\n const length = this.readVarint();\n const negativeLength = length < 0;\n const readLength = negativeLength ? -length : length;\n\n let string = \"\";\n let hasNonAscii = false;\n for (let i = 0; i < readLength; i++) {\n const charValue = this.buffer[this.offset + i];\n if (charValue < 0x80) {\n string += String.fromCharCode(charValue);\n } else {\n hasNonAscii = true;\n break;\n }\n }\n if (!hasNonAscii) {\n this.offset += readLength;\n return [string, negativeLength];\n }\n\n // Slow path - decode the string using TextDecoder\n const result = textDecoder.decode(this.buffer.subarray(this.offset, this.offset + readLength));\n this.offset += readLength;\n return [result, negativeLength];\n }\n\n public readVarint(): number {\n return this.readUVarint(true);\n }\n\n public isEnd() {\n return this.offset >= this.buffer.length;\n }\n}\n\nfunction loAndHiAsSigned(lo: number, hi: number) {\n const value = lo + hi * 4294967296;\n if (value & 1) {\n return -(value + 1) / 2;\n }\n return value / 2;\n}\n\nfunction loAndHiAsUnsigned(lo: number, hi: number) {\n return lo + hi * 4294967296;\n}\n", "const textEncoder = new TextEncoder();\n\nexport class BufferWriter {\n private buffer: Uint8Array;\n private offset: number;\n\n constructor(initialLength: number) {\n this.buffer = new Uint8Array(initialLength);\n this.offset = 0;\n }\n\n // Write an unsigned 8-bit integer\n public writeUint8(value: number): void {\n this.ensureCapacity(1);\n this.buffer[this.offset] = value & 0xff;\n this.offset += 1;\n }\n\n public writeBoolean(bool: boolean) {\n this.writeUint8(bool ? 1 : 0);\n }\n\n // Write an array of bytes\n public writeBytes(bytes: Uint8Array): void {\n this.ensureCapacity(bytes.byteLength);\n this.buffer.set(bytes, this.offset);\n this.offset += bytes.byteLength;\n }\n\n // Get the written bytes as a Uint8Array\n public getBuffer(): Uint8Array {\n return this.buffer.subarray(0, this.offset);\n }\n\n public getWrittenLength(): number {\n return this.offset;\n }\n\n // Ensure there is enough capacity in the buffer\n private ensureCapacity(neededSpace: number): void {\n while (this.offset + neededSpace > this.buffer.length) {\n this.expandBuffer();\n }\n }\n\n // Expand the buffer by doubling its current length\n private expandBuffer(): void {\n const newBuffer = new Uint8Array(this.buffer.length * 2);\n newBuffer.set(this.buffer);\n this.buffer = newBuffer;\n }\n\n public writeUVarint(x: number) {\n if (x <= 268435455) {\n // Simple case that can be handled without hi and lo\n this.ensureCapacity(4);\n while (x >= 0x80) {\n this.buffer[this.offset] = (x & 0x7f) | 0x80; // Extract least significant 7 bits and set continuation bit\n this.offset++;\n x >>>= 7; // Use unsigned shift here\n }\n this.buffer[this.offset] = x & 0x7f; // No need for 0xff here since we're limiting it to 7 bits\n this.offset++;\n return;\n }\n this.ensureCapacity(10);\n\n let lo = 0;\n let hi = 0;\n if (x !== 0) {\n lo = x >>> 0;\n hi = ((x - lo) / 4294967296) >>> 0;\n }\n\n while (hi) {\n this.buffer[this.offset++] = (lo & 127) | 128;\n lo = ((lo >>> 7) | (hi << 25)) >>> 0;\n hi >>>= 7;\n }\n while (lo > 127) {\n this.buffer[this.offset++] = (lo & 127) | 128;\n lo = lo >>> 7;\n }\n this.buffer[this.offset++] = lo;\n }\n\n public writeVarint(x: number) {\n if (x >= 0) {\n this.writeUVarint(x * 2);\n } else {\n this.writeUVarint(-x * 2 - 1);\n }\n }\n\n public writeLengthPrefixedString(value: string, varint = false, negativeLength = false) {\n /*\n Try fast case first - no non-ascii characters and byte length is string length.\n\n Even if this case fails (non-ascii character found) the data will always be\n shorter so it can be overwritten\n */\n const originalOffset = this.offset; // store this in case we need to overwrite from here\n // Just write the length of the string (not the known encoded length)\n if (varint) {\n this.writeVarint(negativeLength ? -value.length : value.length);\n } else {\n this.writeUVarint(value.length);\n }\n this.ensureCapacity(value.length); // Ensure we have enough space for the string\n let nonAscii = false;\n for (let i = 0; i < value.length; i++) {\n const charCode = value.charCodeAt(i);\n if (charCode > 0x7f) {\n nonAscii = true;\n break;\n }\n this.buffer[this.offset++] = charCode;\n }\n\n if (!nonAscii) {\n return;\n }\n\n /*\n If we have non-ascii characters, we need to encode the string respecting\n utf-8 and overwrite the buffer from the original offset\n */\n this.offset = originalOffset; // overwrite the length\n let encodedLength = value.length; // This will be overwritten once we know the actual length\n this.ensureCapacity(encodedLength); // This will be at least the required length, but it gives the chance of initially creating a large enough buffer\n while (true) {\n this.offset = originalOffset;\n if (varint) {\n this.writeVarint(negativeLength ? -encodedLength : encodedLength);\n } else {\n this.writeUVarint(encodedLength);\n }\n const offsetAfterVarint = this.offset;\n const varintLength = offsetAfterVarint - originalOffset;\n\n const writeBuffer = new Uint8Array(this.buffer.buffer, this.offset);\n const { read, written } = textEncoder.encodeInto(value, writeBuffer);\n if (read !== value.length) {\n // Need more space and try again\n this.expandBuffer();\n continue;\n }\n if (written !== encodedLength) {\n encodedLength = written;\n // We need to overwrite the varint with the correct length\n this.offset = originalOffset;\n if (varint) {\n this.writeVarint(negativeLength ? -encodedLength : encodedLength);\n } else {\n this.writeUVarint(encodedLength);\n }\n const newOffsetAfterVarint = this.offset;\n const actualVarintLength = newOffsetAfterVarint - originalOffset;\n if (actualVarintLength !== varintLength) {\n // The varint length changed and it has overwritten the string\n // We need to write the string again\n continue;\n } else {\n // The varint length is the same so the string is intact\n }\n }\n // String written successfully - update the offset\n this.offset += written;\n return;\n }\n }\n}\n", "import { BufferReader } from \"../BufferReader\";\nimport { BufferWriter } from \"../BufferWriter\";\n\nexport function encodeAttribute(writer: BufferWriter, key: string, value: string | null) {\n if (value === null) {\n writer.writeLengthPrefixedString(key, true, true);\n } else {\n writer.writeLengthPrefixedString(key, true, false);\n writer.writeLengthPrefixedString(value);\n }\n}\n\nexport function encodeAttributes(writer: BufferWriter, attributes: Array<[string, string | null]>) {\n writer.writeUVarint(attributes.length);\n\n for (let i = 0; i < attributes.length; i++) {\n encodeAttribute(writer, attributes[i][0], attributes[i][1]);\n }\n}\n\nexport function decodeAttributes(buffer: BufferReader): Array<[string, string | null]> {\n const attributesLength = buffer.readUVarint();\n const attributes: Array<[string, string | null]> = [];\n for (let i = 0; i < attributesLength; i++) {\n const [key, negativeLength] = buffer.readVarintPrefixedString();\n if (negativeLength) {\n attributes.push([key, null]);\n continue;\n }\n const value = buffer.readUVarintPrefixedString();\n attributes.push([key, value]);\n }\n return attributes;\n}\n", "import { BufferReader } from \"../BufferReader\";\nimport { BufferWriter } from \"../BufferWriter\";\nimport { decodeAttributes, encodeAttributes } from \"./attributes\";\n\nexport type NetworkedDOMV02TextNodeDescription = {\n type: \"text\";\n nodeId: number;\n text: string;\n};\n\nexport type NetworkedDOMV02ElementNodeDescription = {\n type: \"element\";\n nodeId: number;\n tag: string;\n attributes: Array<[string, string | null]>;\n children: Array;\n visibleTo?: Array;\n hiddenFrom?: Array;\n text?: string;\n};\n\nexport type NetworkedDOMV02NodeDescription =\n | NetworkedDOMV02ElementNodeDescription\n | NetworkedDOMV02TextNodeDescription;\n\nexport function encodeNodeDescription(\n writer: BufferWriter,\n nodeDescription: NetworkedDOMV02NodeDescription,\n): void {\n writer.writeUVarint(nodeDescription.nodeId);\n\n if (nodeDescription.type === \"text\") {\n writer.writeLengthPrefixedString(\"\"); // Empty tag indicates text node\n writer.writeLengthPrefixedString(nodeDescription.text);\n return;\n }\n\n writer.writeLengthPrefixedString(nodeDescription.tag);\n\n encodeAttributes(writer, nodeDescription.attributes);\n\n if (!nodeDescription.visibleTo) {\n writer.writeUVarint(0);\n } else {\n writer.writeUVarint(nodeDescription.visibleTo.length);\n for (let i = 0; i < nodeDescription.visibleTo.length; i++) {\n writer.writeUVarint(nodeDescription.visibleTo[i]);\n }\n }\n\n if (!nodeDescription.hiddenFrom) {\n writer.writeUVarint(0);\n } else {\n writer.writeUVarint(nodeDescription.hiddenFrom.length);\n for (let i = 0; i < nodeDescription.hiddenFrom.length; i++) {\n writer.writeUVarint(nodeDescription.hiddenFrom[i]);\n }\n }\n\n writer.writeUVarint(nodeDescription.children.length);\n for (let i = 0; i < nodeDescription.children.length; i++) {\n encodeNodeDescription(writer, nodeDescription.children[i]);\n }\n}\n\nexport function decodeNodeDescription(buffer: BufferReader): NetworkedDOMV02NodeDescription {\n const nodeId = buffer.readUVarint();\n const tag = buffer.readUVarintPrefixedString();\n if (tag === \"\") {\n // Text node\n const text = buffer.readUVarintPrefixedString();\n return { type: \"text\", nodeId, text };\n }\n\n const attributes = decodeAttributes(buffer);\n\n const visibleToLength = buffer.readUVarint();\n let visibleTo: number[] | undefined;\n if (visibleToLength !== 0) {\n visibleTo = [];\n for (let i = 0; i < visibleToLength; i++) {\n visibleTo.push(buffer.readUVarint());\n }\n }\n\n const hiddenFromLength = buffer.readUVarint();\n let hiddenFrom: number[] | undefined;\n if (hiddenFromLength !== 0) {\n hiddenFrom = [];\n for (let i = 0; i < hiddenFromLength; i++) {\n hiddenFrom.push(buffer.readUVarint());\n }\n }\n\n const childrenLength = buffer.readUVarint();\n const children: NetworkedDOMV02NodeDescription[] = [];\n for (let i = 0; i < childrenLength; i++) {\n children.push(decodeNodeDescription(buffer));\n }\n\n const node: NetworkedDOMV02ElementNodeDescription = {\n type: \"element\",\n nodeId,\n tag,\n attributes,\n children,\n };\n\n if (visibleTo) {\n node.visibleTo = visibleTo;\n }\n if (hiddenFrom) {\n node.hiddenFrom = hiddenFrom;\n }\n\n return node;\n}\n", "export const networkedDOMProtocolSubProtocol_v0_2 = \"networked-dom-v0.2\";\n", "// Server -> Client\nexport const SnapshotMessageType = 1;\nexport const BatchStartMessageType = 2;\nexport const DocumentTimeMessageType = 3;\nexport const ChildrenAddedMessageType = 4;\nexport const ChildrenRemovedMessageType = 5;\nexport const AttributesChangedMessageType = 6;\nexport const ChangeVisibleToMessageType = 7;\nexport const ChangeHiddenFromMessageType = 8;\nexport const TextChangedMessageType = 9;\nexport const BatchEndMessageType = 10;\nexport const PingMessageType = 11;\nexport const WarningMessageType = 12;\nexport const ErrorMessageType = 13;\n\n// Client -> Server\nexport const ConnectUsersMessageType = 14;\nexport const DisconnectUsersMessageType = 15;\nexport const EventMessageType = 16;\nexport const PongMessageType = 17;\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { ConnectUsersMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02ConnectUsersMessage = {\n type: \"connectUsers\";\n connectionIds: Array;\n};\n\nexport function encodeConnectUsers(\n connectUsersMessage: NetworkedDOMV02ConnectUsersMessage,\n writer: BufferWriter,\n) {\n const connectionIdsLength = connectUsersMessage.connectionIds.length;\n writer.writeUint8(ConnectUsersMessageType);\n writer.writeUVarint(connectionIdsLength);\n for (let i = 0; i < connectionIdsLength; i++) {\n writer.writeUVarint(connectUsersMessage.connectionIds[i]);\n }\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeConnectUsers(buffer: BufferReader): NetworkedDOMV02ConnectUsersMessage {\n const connectionIds: number[] = [];\n const connectionIdsLength = buffer.readUVarint();\n for (let i = 0; i < connectionIdsLength; i++) {\n connectionIds.push(buffer.readUVarint());\n }\n return {\n type: \"connectUsers\",\n connectionIds,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { DisconnectUsersMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02DisconnectUsersMessage = {\n type: \"disconnectUsers\";\n connectionIds: Array;\n};\n\nexport function encodeDisconnectUsers(\n disconnectUsersMessage: NetworkedDOMV02DisconnectUsersMessage,\n writer: BufferWriter,\n) {\n const connectionIdsLength = disconnectUsersMessage.connectionIds.length;\n writer.writeUint8(DisconnectUsersMessageType);\n writer.writeUVarint(connectionIdsLength);\n for (let i = 0; i < connectionIdsLength; i++) {\n writer.writeUVarint(disconnectUsersMessage.connectionIds[i]);\n }\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeDisconnectUsers(buffer: BufferReader): NetworkedDOMV02DisconnectUsersMessage {\n const connectionIds: number[] = [];\n const connectionIdsLength = buffer.readUVarint();\n for (let i = 0; i < connectionIdsLength; i++) {\n connectionIds.push(buffer.readUVarint());\n }\n return {\n type: \"disconnectUsers\",\n connectionIds,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { EventMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02RemoteEvent = {\n type: \"event\";\n connectionId: number;\n nodeId: number;\n name: string;\n bubbles: boolean;\n params: any;\n};\n\nexport function encodeEvent(event: NetworkedDOMV02RemoteEvent, writer: BufferWriter) {\n writer.writeUint8(EventMessageType);\n writer.writeUVarint(event.nodeId);\n writer.writeUVarint(event.connectionId);\n writer.writeLengthPrefixedString(event.name);\n writer.writeBoolean(event.bubbles);\n writer.writeLengthPrefixedString(JSON.stringify(event.params));\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeEvent(buffer: BufferReader): NetworkedDOMV02RemoteEvent {\n const nodeId = buffer.readUVarint();\n const connectionId = buffer.readUVarint();\n const name = buffer.readUVarintPrefixedString();\n const bubbles = buffer.readBoolean();\n const paramsJSONString = buffer.readUVarintPrefixedString();\n const params = JSON.parse(paramsJSONString);\n return {\n type: \"event\",\n nodeId,\n connectionId,\n name,\n bubbles,\n params,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { PongMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02PongMessage = {\n type: \"pong\";\n pong: number;\n};\n\nexport function encodePong(pongMessage: NetworkedDOMV02PongMessage, writer: BufferWriter) {\n writer.writeUint8(PongMessageType);\n writer.writeUVarint(pongMessage.pong);\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodePong(buffer: BufferReader): NetworkedDOMV02PongMessage {\n const pong = buffer.readUVarint();\n return {\n type: \"pong\",\n pong,\n };\n}\n", "import { BufferReader } from \"./BufferReader\";\nimport { NetworkedDOMV02ClientMessage } from \"./messages\";\nimport { decodeConnectUsers } from \"./messages/from-client/connectUsers\";\nimport { decodeDisconnectUsers } from \"./messages/from-client/disconnectUsers\";\nimport { decodeEvent } from \"./messages/from-client/event\";\nimport { decodePong } from \"./messages/from-client/pong\";\nimport {\n ConnectUsersMessageType,\n DisconnectUsersMessageType,\n EventMessageType,\n PongMessageType,\n} from \"./messageTypes\";\n\nexport function decodeClientMessages(buffer: BufferReader): Array {\n const messages: NetworkedDOMV02ClientMessage[] = [];\n while (!buffer.isEnd()) {\n const messageType = buffer.readUInt8();\n switch (messageType) {\n case ConnectUsersMessageType:\n messages.push(decodeConnectUsers(buffer));\n break;\n case DisconnectUsersMessageType:\n messages.push(decodeDisconnectUsers(buffer));\n break;\n case EventMessageType:\n messages.push(decodeEvent(buffer));\n break;\n case PongMessageType:\n messages.push(decodePong(buffer));\n break;\n default:\n throw new Error(`Unknown message type: ${messageType}`);\n }\n }\n return messages;\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { decodeAttributes, encodeAttributes } from \"../../common-structs/attributes\";\nimport { AttributesChangedMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02AttributesChangedDiff = {\n type: \"attributesChanged\";\n nodeId: number;\n attributes: Array<[string, string | null]>;\n documentTime?: number;\n};\n\nexport function encodeAttributesChanged(\n msg: NetworkedDOMV02AttributesChangedDiff,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(AttributesChangedMessageType);\n writer.writeUVarint(msg.nodeId);\n encodeAttributes(writer, msg.attributes);\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeAttributesChanged(\n buffer: BufferReader,\n): NetworkedDOMV02AttributesChangedDiff {\n const nodeId = buffer.readUVarint();\n const attributes = decodeAttributes(buffer);\n return {\n type: \"attributesChanged\",\n nodeId,\n attributes,\n };\n}\n", "import { BufferWriter } from \"../../BufferWriter\";\nimport { BatchEndMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02BatchEndMessage = {\n type: \"batchEnd\";\n};\n\nexport function encodeBatchEnd(writer: BufferWriter = new BufferWriter(1)): BufferWriter {\n writer.writeUint8(BatchEndMessageType);\n return writer;\n}\n\nexport const batchEndMessage: NetworkedDOMV02BatchEndMessage = {\n type: \"batchEnd\",\n};\n", "import { BufferWriter } from \"../../BufferWriter\";\nimport { BatchStartMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02BatchStartMessage = {\n type: \"batchStart\";\n};\n\nexport function encodeBatchStart(writer: BufferWriter = new BufferWriter(1)): BufferWriter {\n writer.writeUint8(BatchStartMessageType);\n return writer;\n}\n\nexport const batchStartMessage: NetworkedDOMV02BatchStartMessage = {\n type: \"batchStart\",\n};\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { ChangeHiddenFromMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02ChangeHiddenFromDiff = {\n type: \"changeHiddenFrom\";\n nodeId: number;\n addHiddenFrom: Array;\n removeHiddenFrom: Array;\n};\n\nexport function encodeChangeHiddenFrom(\n msg: NetworkedDOMV02ChangeHiddenFromDiff,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(ChangeHiddenFromMessageType);\n writer.writeUVarint(msg.nodeId);\n\n if (msg.addHiddenFrom) {\n writer.writeUVarint(msg.addHiddenFrom.length);\n\n for (const key of msg.addHiddenFrom) {\n writer.writeUVarint(key);\n }\n } else {\n // If there are no addHiddenFrom, we still need to send a 0 to indicate that there are no entries\n writer.writeUVarint(0);\n }\n if (msg.removeHiddenFrom) {\n writer.writeUVarint(msg.removeHiddenFrom.length);\n\n for (const key of msg.removeHiddenFrom) {\n writer.writeUVarint(key);\n }\n } else {\n // If there are no removeHiddenFrom, we still need to send a 0 to indicate that there are no entries\n writer.writeUVarint(0);\n }\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeChangeHiddenFrom(buffer: BufferReader): NetworkedDOMV02ChangeHiddenFromDiff {\n const nodeId = buffer.readUVarint();\n const addHiddenFromLength = buffer.readUVarint();\n const addHiddenFrom: number[] = [];\n for (let i = 0; i < addHiddenFromLength; i++) {\n addHiddenFrom.push(buffer.readUVarint());\n }\n\n const removeHiddenFromLength = buffer.readUVarint();\n const removeHiddenFrom: number[] = [];\n for (let i = 0; i < removeHiddenFromLength; i++) {\n removeHiddenFrom.push(buffer.readUVarint());\n }\n\n return {\n type: \"changeHiddenFrom\",\n nodeId,\n addHiddenFrom,\n removeHiddenFrom,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { ChangeVisibleToMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02ChangeVisibleToDiff = {\n type: \"changeVisibleTo\";\n nodeId: number;\n /*\n The semantics are that if there are no visibleTo limitations then the node is visible to everyone.\n\n It is advisable to apply the addVisibleTo first before the removeVisibleTo to avoid even a temporary state where a node is visible to everyone between the two operations.\n */\n addVisibleTo: Array;\n removeVisibleTo: Array;\n};\n\nexport function encodeChangeVisibleTo(\n msg: NetworkedDOMV02ChangeVisibleToDiff,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(ChangeVisibleToMessageType);\n writer.writeUVarint(msg.nodeId);\n\n if (msg.addVisibleTo) {\n writer.writeUVarint(msg.addVisibleTo.length);\n\n for (const key of msg.addVisibleTo) {\n writer.writeUVarint(key);\n }\n } else {\n // If there are no addVisibleTo, we still need to send a 0 to indicate that there are no entries\n writer.writeUVarint(0);\n }\n if (msg.removeVisibleTo) {\n writer.writeUVarint(msg.removeVisibleTo.length);\n\n for (const key of msg.removeVisibleTo) {\n writer.writeUVarint(key);\n }\n } else {\n // If there are no removeVisibleTo, we still need to send a 0 to indicate that there are no entries\n writer.writeUVarint(0);\n }\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeChangeVisibleTo(buffer: BufferReader): NetworkedDOMV02ChangeVisibleToDiff {\n const nodeId = buffer.readUVarint();\n const addVisibleToLength = buffer.readUVarint();\n const addVisibleTo: number[] = [];\n for (let i = 0; i < addVisibleToLength; i++) {\n addVisibleTo.push(buffer.readUVarint());\n }\n\n const removeVisibleToLength = buffer.readUVarint();\n const removeVisibleTo: number[] = [];\n for (let i = 0; i < removeVisibleToLength; i++) {\n removeVisibleTo.push(buffer.readUVarint());\n }\n\n return {\n type: \"changeVisibleTo\",\n nodeId,\n addVisibleTo,\n removeVisibleTo,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport {\n decodeNodeDescription,\n encodeNodeDescription,\n NetworkedDOMV02NodeDescription,\n} from \"../../common-structs/nodeDescription\";\nimport { ChildrenAddedMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02ChildrenAddedDiff = {\n type: \"childrenAdded\";\n nodeId: number;\n previousNodeId: number | null;\n addedNodes: Array;\n};\n\nexport function encodeChildrenAdded(\n msg: NetworkedDOMV02ChildrenAddedDiff,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(ChildrenAddedMessageType);\n writer.writeUVarint(msg.nodeId);\n writer.writeUVarint(msg.previousNodeId ?? 0);\n writer.writeUVarint(msg.addedNodes.length);\n for (let i = 0; i < msg.addedNodes.length; i++) {\n encodeNodeDescription(writer, msg.addedNodes[i]);\n }\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeChildrenAdded(buffer: BufferReader): NetworkedDOMV02ChildrenAddedDiff {\n const nodeId = buffer.readUVarint();\n const previousNodeId = buffer.readUVarint();\n const childrenLength = buffer.readUVarint();\n const children: NetworkedDOMV02NodeDescription[] = [];\n for (let i = 0; i < childrenLength; i++) {\n children.push(decodeNodeDescription(buffer));\n }\n return {\n type: \"childrenAdded\",\n nodeId,\n previousNodeId: previousNodeId === 0 ? null : previousNodeId,\n addedNodes: children,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { ChildrenRemovedMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02ChildrenRemovedDiff = {\n type: \"childrenRemoved\";\n nodeId: number;\n removedNodes: Array;\n documentTime?: number;\n};\n\nexport function encodeChildrenRemoved(\n msg: NetworkedDOMV02ChildrenRemovedDiff,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(ChildrenRemovedMessageType);\n writer.writeUVarint(msg.nodeId);\n writer.writeUVarint(msg.removedNodes.length);\n for (const nodeId of msg.removedNodes) {\n writer.writeUVarint(nodeId);\n }\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeChildrenRemoved(buffer: BufferReader): NetworkedDOMV02ChildrenRemovedDiff {\n const nodeId = buffer.readUVarint();\n const removedNodesLength = buffer.readUVarint();\n const removedNodes: number[] = [];\n for (let i = 0; i < removedNodesLength; i++) {\n removedNodes.push(buffer.readUVarint());\n }\n return {\n type: \"childrenRemoved\",\n nodeId,\n removedNodes,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { DocumentTimeMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02DocumentTimeMessage = {\n type: \"documentTime\";\n documentTime: number;\n};\n\nexport function encodeDocumentTime(\n msg: NetworkedDOMV02DocumentTimeMessage,\n writer: BufferWriter = new BufferWriter(8),\n): BufferWriter {\n writer.writeUint8(DocumentTimeMessageType);\n writer.writeUVarint(msg.documentTime);\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeDocumentTime(buffer: BufferReader): NetworkedDOMV02DocumentTimeMessage {\n return {\n type: \"documentTime\",\n documentTime: buffer.readUVarint(),\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { ErrorMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02ErrorMessage = {\n type: \"error\";\n message: string;\n};\n\nexport function encodeError(\n msg: NetworkedDOMV02ErrorMessage,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(ErrorMessageType);\n writer.writeLengthPrefixedString(msg.message);\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeError(buffer: BufferReader): NetworkedDOMV02ErrorMessage {\n const message = buffer.readUVarintPrefixedString();\n return {\n type: \"error\",\n message,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { PingMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02PingMessage = {\n type: \"ping\";\n ping: number;\n documentTime: number;\n};\n\nexport function encodePing(\n pingMessage: NetworkedDOMV02PingMessage,\n writer: BufferWriter = new BufferWriter(8),\n): BufferWriter {\n writer.writeUint8(PingMessageType);\n writer.writeUVarint(pingMessage.ping);\n writer.writeUVarint(pingMessage.documentTime);\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodePing(buffer: BufferReader): NetworkedDOMV02PingMessage {\n const ping = buffer.readUVarint();\n const documentTime = buffer.readUVarint();\n return {\n type: \"ping\",\n ping,\n documentTime,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport {\n decodeNodeDescription,\n encodeNodeDescription,\n NetworkedDOMV02ElementNodeDescription,\n NetworkedDOMV02NodeDescription,\n} from \"../../common-structs/nodeDescription\";\nimport { SnapshotMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02SnapshotMessage = {\n type: \"snapshot\";\n snapshot: NetworkedDOMV02NodeDescription;\n documentTime: number;\n};\n\nexport function encodeSnapshot(\n msg: NetworkedDOMV02SnapshotMessage,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(SnapshotMessageType);\n encodeNodeDescription(writer, msg.snapshot as NetworkedDOMV02ElementNodeDescription);\n writer.writeUVarint(msg.documentTime);\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeSnapshot(buffer: BufferReader): NetworkedDOMV02SnapshotMessage {\n return {\n type: \"snapshot\",\n snapshot: decodeNodeDescription(buffer),\n documentTime: buffer.readUVarint(),\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { TextChangedMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02TextChangedDiff = {\n type: \"textChanged\";\n nodeId: number;\n text: string;\n};\n\nexport function encodeTextChanged(\n msg: NetworkedDOMV02TextChangedDiff,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(TextChangedMessageType);\n writer.writeUVarint(msg.nodeId);\n writer.writeLengthPrefixedString(msg.text);\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeTextChanged(buffer: BufferReader): NetworkedDOMV02TextChangedDiff {\n const nodeId = buffer.readUVarint();\n const text = buffer.readUVarintPrefixedString();\n return {\n type: \"textChanged\",\n nodeId,\n text,\n };\n}\n", "import { BufferReader } from \"../../BufferReader\";\nimport { BufferWriter } from \"../../BufferWriter\";\nimport { WarningMessageType } from \"../../messageTypes\";\n\nexport type NetworkedDOMV02WarningMessage = {\n type: \"warning\";\n message: string;\n};\n\nexport function encodeWarning(\n msg: NetworkedDOMV02WarningMessage,\n writer: BufferWriter = new BufferWriter(64),\n): BufferWriter {\n writer.writeUint8(WarningMessageType);\n writer.writeLengthPrefixedString(msg.message);\n return writer;\n}\n\n// Assumes that the first byte has already been read (the message type)\nexport function decodeWarning(buffer: BufferReader): NetworkedDOMV02WarningMessage {\n const message = buffer.readUVarintPrefixedString();\n return {\n type: \"warning\",\n message,\n };\n}\n", "import { BufferReader } from \"./BufferReader\";\nimport {\n batchEndMessage,\n batchStartMessage,\n decodeAttributesChanged,\n decodeChangeHiddenFrom,\n decodeChangeVisibleTo,\n decodeChildrenAdded,\n decodeChildrenRemoved,\n decodeError,\n decodePing,\n decodeSnapshot,\n decodeTextChanged,\n decodeWarning,\n NetworkedDOMV02ServerMessage,\n} from \"./messages\";\nimport { decodeDocumentTime } from \"./messages/from-server/documentTime\";\nimport {\n AttributesChangedMessageType,\n BatchEndMessageType,\n BatchStartMessageType,\n ChangeHiddenFromMessageType,\n ChangeVisibleToMessageType,\n ChildrenAddedMessageType,\n ChildrenRemovedMessageType,\n DocumentTimeMessageType,\n ErrorMessageType,\n PingMessageType,\n SnapshotMessageType,\n TextChangedMessageType,\n WarningMessageType,\n} from \"./messageTypes\";\n\nexport function decodeServerMessages(buffer: BufferReader): Array {\n const messages: NetworkedDOMV02ServerMessage[] = [];\n while (!buffer.isEnd()) {\n const messageType = buffer.readUInt8();\n switch (messageType) {\n case SnapshotMessageType:\n messages.push(decodeSnapshot(buffer));\n break;\n case DocumentTimeMessageType:\n messages.push(decodeDocumentTime(buffer));\n break;\n case ChildrenAddedMessageType:\n messages.push(decodeChildrenAdded(buffer));\n break;\n case ChildrenRemovedMessageType:\n messages.push(decodeChildrenRemoved(buffer));\n break;\n case AttributesChangedMessageType:\n messages.push(decodeAttributesChanged(buffer));\n break;\n case TextChangedMessageType:\n messages.push(decodeTextChanged(buffer));\n break;\n case ChangeVisibleToMessageType:\n messages.push(decodeChangeVisibleTo(buffer));\n break;\n case ChangeHiddenFromMessageType:\n messages.push(decodeChangeHiddenFrom(buffer));\n break;\n case BatchStartMessageType:\n messages.push(batchStartMessage);\n break;\n case BatchEndMessageType:\n messages.push(batchEndMessage);\n break;\n case PingMessageType:\n messages.push(decodePing(buffer));\n break;\n case WarningMessageType:\n messages.push(decodeWarning(buffer));\n break;\n case ErrorMessageType:\n messages.push(decodeError(buffer));\n break;\n default:\n throw new Error(`Unknown message type: ${messageType}`);\n }\n }\n return messages;\n}\n", "import { BufferWriter } from \"./BufferWriter\";\nimport {\n encodeConnectUsers,\n encodeDisconnectUsers,\n encodeEvent,\n encodePong,\n NetworkedDOMV02ClientMessage,\n} from \"./messages\";\n\nexport function encodeClientMessage(message: NetworkedDOMV02ClientMessage, writer: BufferWriter) {\n const type = message.type;\n switch (type) {\n case \"connectUsers\":\n return encodeConnectUsers(message, writer);\n case \"disconnectUsers\":\n return encodeDisconnectUsers(message, writer);\n case \"event\":\n return encodeEvent(message, writer);\n case \"pong\":\n return encodePong(message, writer);\n default:\n throw new Error(`Unknown message type: ${type}`);\n }\n}\n", "import { BufferWriter } from \"./BufferWriter\";\nimport {\n encodeBatchEnd,\n encodeBatchStart,\n encodeTextChanged,\n NetworkedDOMV02ServerMessage,\n} from \"./messages\";\nimport { encodeAttributesChanged } from \"./messages/from-server/attributesChanged\";\nimport { encodeChangeHiddenFrom } from \"./messages/from-server/changeHiddenFrom\";\nimport { encodeChangeVisibleTo } from \"./messages/from-server/changeVisibleTo\";\nimport { encodeChildrenAdded } from \"./messages/from-server/childrenAdded\";\nimport { encodeChildrenRemoved } from \"./messages/from-server/childrenRemoved\";\nimport { encodeDocumentTime } from \"./messages/from-server/documentTime\";\nimport { encodeError } from \"./messages/from-server/error\";\nimport { encodePing } from \"./messages/from-server/ping\";\nimport { encodeSnapshot } from \"./messages/from-server/snapshot\";\nimport { encodeWarning } from \"./messages/from-server/warning\";\n\nexport function encodeServerMessage(\n message: NetworkedDOMV02ServerMessage,\n writer?: BufferWriter,\n): BufferWriter {\n switch (message.type) {\n case \"snapshot\":\n return encodeSnapshot(message, writer);\n case \"documentTime\":\n return encodeDocumentTime(message, writer);\n case \"childrenAdded\":\n return encodeChildrenAdded(message, writer);\n case \"childrenRemoved\":\n return encodeChildrenRemoved(message, writer);\n case \"attributesChanged\":\n return encodeAttributesChanged(message, writer);\n case \"textChanged\":\n return encodeTextChanged(message, writer);\n case \"changeVisibleTo\":\n return encodeChangeVisibleTo(message, writer);\n case \"changeHiddenFrom\":\n return encodeChangeHiddenFrom(message, writer);\n case \"batchStart\":\n return encodeBatchStart(writer);\n case \"batchEnd\":\n return encodeBatchEnd(writer);\n case \"ping\":\n return encodePing(message, writer);\n case \"warning\":\n return encodeWarning(message, writer);\n case \"error\":\n return encodeError(message, writer);\n default:\n throw new Error(`Unknown message type: ${(message as any).type}`);\n }\n}\n", "export type DOMSanitizerOptions = {\n tagPrefix?: string; // e.g. \"m-\" to restrict to only custom elements with a tag name starting with \"m-\"\n replacementTagPrefix?: string; // e.g. \"x-\" to replace non-prefixed tags with a new prefix (e.g. \"div\" -> \"x-div\")\n};\n\nexport class DOMSanitizer {\n static sanitise(node: HTMLElement, options: DOMSanitizerOptions = {}) {\n if (node.getAttributeNames) {\n for (const attr of node.getAttributeNames()) {\n if (!DOMSanitizer.IsValidAttributeName(attr)) {\n node.removeAttribute(attr);\n }\n }\n }\n\n if (node instanceof HTMLElement) {\n if (options.tagPrefix) {\n const tag = node.nodeName.toLowerCase();\n if (!tag.startsWith(options.tagPrefix.toLowerCase())) {\n node = DOMSanitizer.replaceNodeTagName(\n node,\n options.replacementTagPrefix ? options.replacementTagPrefix + tag : `x-${tag}`,\n );\n }\n }\n }\n\n if (node.nodeName === \"SCRIPT\" || node.nodeName === \"OBJECT\" || node.nodeName === \"IFRAME\") {\n // set contents to empty string\n node.innerHTML = \"\";\n DOMSanitizer.stripAllAttributes(node);\n } else {\n if (node.getAttributeNames) {\n for (const attr of node.getAttributeNames()) {\n if (!DOMSanitizer.shouldAcceptAttribute(attr)) {\n node.removeAttribute(attr);\n }\n }\n }\n for (let i = 0; i < node.childNodes.length; i++) {\n DOMSanitizer.sanitise(node.childNodes[i] as HTMLElement, options);\n }\n }\n return node;\n }\n\n static replaceNodeTagName(node: HTMLElement, newTagName: string) {\n const replacementNode = document.createElement(newTagName);\n let index;\n while (node.firstChild) {\n replacementNode.appendChild(node.firstChild);\n }\n for (index = node.attributes.length - 1; index >= 0; --index) {\n replacementNode.setAttribute(node.attributes[index].name, node.attributes[index].value);\n }\n node.parentNode?.replaceChild(replacementNode, node);\n return replacementNode;\n }\n\n static stripAllAttributes(node: HTMLElement) {\n if (node.getAttributeNames) {\n for (const attr of node.getAttributeNames()) {\n node.removeAttribute(attr);\n }\n }\n }\n\n static IsASCIIDigit(c: string): boolean {\n return c >= \"0\" && c <= \"9\";\n }\n\n static IsASCIIAlpha(c: string) {\n return c >= \"a\" && c <= \"z\";\n }\n\n static IsValidAttributeName(characters: string): boolean {\n const c = characters[0];\n if (!(DOMSanitizer.IsASCIIAlpha(c) || c === \":\" || c === \"_\")) {\n return false;\n }\n\n for (let i = 1; i < characters.length; i++) {\n const c = characters[i];\n if (\n !(\n DOMSanitizer.IsASCIIDigit(c) ||\n DOMSanitizer.IsASCIIAlpha(c) ||\n c === \":\" ||\n c === \"_\" ||\n c === \"-\" ||\n c === \".\"\n )\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n static shouldAcceptAttribute(attribute: string) {\n if (!DOMSanitizer.IsValidAttributeName(attribute)) {\n console.warn(\"Invalid attribute name\", attribute);\n return false;\n }\n\n // TODO - this might be overly restrictive - apologies to someone that finds this because you have a non-event attribute filtered by this\n return !attribute.startsWith(\"on\");\n }\n}\n", "import {\n networkedDOMProtocolSubProtocol_v0_1,\n networkedDOMProtocolSubProtocol_v0_2,\n} from \"@mml-io/networked-dom-protocol\";\n\nimport { NetworkedDOMWebsocketV01Adapter } from \"./NetworkedDOMWebsocketV01Adapter\";\nimport { NetworkedDOMWebsocketV02Adapter } from \"./NetworkedDOMWebsocketV02Adapter\";\n\nconst startingBackoffTimeMilliseconds = 100;\nconst maximumBackoffTimeMilliseconds = 10000;\nconst maximumWebsocketConnectionTimeout = 5000;\n\nexport type NetworkedDOMWebsocketFactory = (url: string) => WebSocket;\n\nexport enum NetworkedDOMWebsocketStatus {\n Connecting,\n ConnectionOpen, // The websocket is open and connected, but no messages have been received yet\n Connected, // The websocket is open and connected, and messages are being received\n Reconnecting,\n Disconnected,\n}\n\nexport function NetworkedDOMWebsocketStatusToString(status: NetworkedDOMWebsocketStatus): string {\n switch (status) {\n case NetworkedDOMWebsocketStatus.Connecting:\n return \"Connecting...\";\n case NetworkedDOMWebsocketStatus.ConnectionOpen:\n return \"Connection Open\";\n case NetworkedDOMWebsocketStatus.Connected:\n return \"Connected\";\n case NetworkedDOMWebsocketStatus.Reconnecting:\n return \"Reconnecting...\";\n case NetworkedDOMWebsocketStatus.Disconnected:\n return \"Disconnected\";\n default:\n return \"Unknown\";\n }\n}\n\nexport type NetworkedDOMWebsocketOptions = {\n tagPrefix?: string; // e.g. \"m-\" to restrict to only custom elements with a tag name starting with \"m-\"\n replacementTagPrefix?: string; // e.g. \"x-\" to replace non-prefixed tags with a new prefix (e.g. \"div\" -> \"x-div\")\n};\n\nexport type NetworkedDOMWebsocketAdapter = {\n receiveMessage: (message: MessageEvent) => void;\n handleEvent: (element: HTMLElement, event: CustomEvent<{ element: HTMLElement }>) => void;\n clearContents: () => boolean;\n};\n\n/**\n * NetworkedDOMWebsocket is a client for a NetworkedDOMServer. It connects to a server on the provided url and receives\n * updates to the DOM. It also sends events to the server for interactions with the DOM.\n *\n * The NetworkedDOMWebsocket is attached to a parentElement and synchronizes the received DOM under that element.\n */\nexport class NetworkedDOMWebsocket {\n private websocket: WebSocket | null = null;\n private websocketAdapter: NetworkedDOMWebsocketAdapter | null = null;\n\n private stopped = false;\n private backoffTime = startingBackoffTimeMilliseconds;\n private status: NetworkedDOMWebsocketStatus | null = null;\n\n public static createWebSocket(url: string): WebSocket {\n return new WebSocket(url, [\n networkedDOMProtocolSubProtocol_v0_2,\n networkedDOMProtocolSubProtocol_v0_1,\n ]);\n }\n\n constructor(\n private url: string,\n private websocketFactory: NetworkedDOMWebsocketFactory,\n private parentElement: HTMLElement,\n private timeCallback?: (time: number) => void,\n private statusUpdateCallback?: (status: NetworkedDOMWebsocketStatus) => void,\n private options: NetworkedDOMWebsocketOptions = {},\n ) {\n this.setStatus(NetworkedDOMWebsocketStatus.Connecting);\n this.startWebSocketConnectionAttempt();\n }\n\n private setStatus(status: NetworkedDOMWebsocketStatus) {\n if (this.status !== status) {\n this.status = status;\n if (this.statusUpdateCallback) {\n this.statusUpdateCallback(status);\n }\n }\n }\n\n private createWebsocketWithTimeout(timeout: number): Promise {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new Error(\"websocket connection timed out\"));\n }, timeout);\n const websocket = this.websocketFactory(this.url);\n websocket.binaryType = \"arraybuffer\";\n websocket.addEventListener(\"open\", () => {\n clearTimeout(timeoutId);\n\n this.websocket = websocket;\n const isV02 = websocket.protocol === networkedDOMProtocolSubProtocol_v0_2;\n let websocketAdapter: NetworkedDOMWebsocketAdapter;\n if (isV02) {\n websocketAdapter = new NetworkedDOMWebsocketV02Adapter(\n websocket,\n this.parentElement,\n () => {\n this.backoffTime = startingBackoffTimeMilliseconds;\n this.setStatus(NetworkedDOMWebsocketStatus.Connected);\n },\n this.timeCallback,\n this.options,\n );\n } else {\n websocketAdapter = new NetworkedDOMWebsocketV01Adapter(\n websocket,\n this.parentElement,\n () => {\n this.backoffTime = startingBackoffTimeMilliseconds;\n this.setStatus(NetworkedDOMWebsocketStatus.Connected);\n },\n this.timeCallback,\n this.options,\n );\n }\n this.websocketAdapter = websocketAdapter;\n\n websocket.addEventListener(\"message\", (event) => {\n if (websocket !== this.websocket) {\n console.log(\"Ignoring websocket message event because it is no longer current\");\n websocket.close();\n return;\n }\n websocketAdapter.receiveMessage(event);\n });\n\n const onWebsocketClose = async () => {\n let hadContents = false;\n if (this.websocketAdapter) {\n hadContents = this.websocketAdapter.clearContents();\n }\n if (this.stopped) {\n // This closing is expected. The client closed the websocket.\n this.setStatus(NetworkedDOMWebsocketStatus.Disconnected);\n return;\n }\n if (!hadContents) {\n // The websocket did not deliver any contents. It may have been successfully opened, but immediately closed. This client should back off to prevent this happening in a rapid loop.\n await this.waitBackoffTime();\n }\n // The websocket closed unexpectedly. Try to reconnect.\n this.setStatus(NetworkedDOMWebsocketStatus.Reconnecting);\n this.startWebSocketConnectionAttempt();\n };\n\n websocket.addEventListener(\"close\", () => {\n if (websocket !== this.websocket) {\n console.warn(\"Ignoring websocket close event because it is no longer current\");\n return;\n }\n onWebsocketClose();\n });\n websocket.addEventListener(\"error\", (e) => {\n if (websocket !== this.websocket) {\n console.log(\"Ignoring websocket error event because it is no longer current\");\n return;\n }\n console.error(\"NetworkedDOMWebsocket error\", e);\n onWebsocketClose();\n });\n\n this.setStatus(NetworkedDOMWebsocketStatus.ConnectionOpen);\n resolve(websocket);\n });\n websocket.addEventListener(\"error\", (e) => {\n clearTimeout(timeoutId);\n reject(e);\n });\n });\n }\n\n private async waitBackoffTime(): Promise {\n console.warn(`Websocket connection to '${this.url}' failed: retrying in ${this.backoffTime}ms`);\n await new Promise((resolve) => setTimeout(resolve, this.backoffTime));\n this.backoffTime = Math.min(\n // Introduce a small amount of randomness to prevent clients from retrying in lockstep\n this.backoffTime * (1.5 + Math.random() * 0.5),\n maximumBackoffTimeMilliseconds,\n );\n }\n\n private async startWebSocketConnectionAttempt() {\n if (this.stopped) {\n return;\n }\n while (true) {\n if (this.stopped) {\n return;\n }\n try {\n await this.createWebsocketWithTimeout(maximumWebsocketConnectionTimeout);\n break;\n } catch (e) {\n console.error(\"Websocket connection failed\", e);\n // Connection failed, retry with backoff\n this.setStatus(NetworkedDOMWebsocketStatus.Reconnecting);\n await this.waitBackoffTime();\n }\n }\n }\n\n public stop() {\n this.stopped = true;\n if (this.websocket !== null) {\n this.websocket.close();\n this.websocket = null;\n }\n }\n\n public handleEvent(element: HTMLElement, event: CustomEvent<{ element: HTMLElement }>) {\n if (this.websocketAdapter) {\n this.websocketAdapter.handleEvent(element, event);\n }\n }\n}\n\nexport function isHTMLElement(node: unknown, rootNode: HTMLElement): node is HTMLElement {\n if (node instanceof HTMLElement) {\n return true;\n }\n if (!rootNode.ownerDocument.defaultView) {\n return false;\n }\n return node instanceof rootNode.ownerDocument.defaultView.HTMLElement;\n}\n\nexport function isText(node: unknown, rootNode: HTMLElement): node is Text {\n if (node instanceof Text) {\n return true;\n }\n if (!rootNode.ownerDocument.defaultView) {\n return false;\n }\n return node instanceof rootNode.ownerDocument.defaultView.Text;\n}\n", "import {\n NetworkedDOMV01AttributeChangedDiff,\n NetworkedDOMV01ChildrenChangedDiff,\n NetworkedDOMV01ClientMessage,\n NetworkedDOMV01NodeDescription,\n NetworkedDOMV01RemoteEvent,\n NetworkedDOMV01ServerMessage,\n NetworkedDOMV01SnapshotMessage,\n NetworkedDOMV01TextChangedDiff,\n} from \"@mml-io/networked-dom-protocol\";\n\nimport { DOMSanitizer } from \"./DOMSanitizer\";\nimport {\n isHTMLElement,\n isText,\n NetworkedDOMWebsocketAdapter,\n NetworkedDOMWebsocketOptions,\n} from \"./NetworkedDOMWebsocket\";\n\nexport class NetworkedDOMWebsocketV01Adapter implements NetworkedDOMWebsocketAdapter {\n private idToElement = new Map();\n private elementToId = new Map();\n private currentRoot: HTMLElement | null = null;\n\n constructor(\n private websocket: WebSocket,\n private parentElement: HTMLElement,\n private connectedCallback: () => void,\n private timeCallback?: (time: number) => void,\n private options: NetworkedDOMWebsocketOptions = {},\n ) {\n this.websocket.binaryType = \"arraybuffer\";\n }\n\n public handleEvent(element: HTMLElement, event: CustomEvent<{ element: HTMLElement }>) {\n const nodeId = this.elementToId.get(element);\n if (nodeId === undefined || nodeId === null) {\n throw new Error(\"Element not found\");\n }\n\n const detailWithoutElement: Partial = {\n ...event.detail,\n };\n delete detailWithoutElement.element;\n\n const remoteEvent: NetworkedDOMV01RemoteEvent = {\n type: \"event\",\n nodeId,\n name: event.type,\n bubbles: event.bubbles,\n params: detailWithoutElement,\n };\n\n this.send(remoteEvent);\n }\n\n private send(fromClientMessage: NetworkedDOMV01ClientMessage) {\n this.websocket.send(JSON.stringify(fromClientMessage));\n }\n\n public clearContents(): boolean {\n this.idToElement.clear();\n this.elementToId.clear();\n if (this.currentRoot) {\n this.currentRoot.remove();\n this.currentRoot = null;\n return true;\n }\n return false;\n }\n\n receiveMessage(event: MessageEvent) {\n const messages = JSON.parse(event.data) as Array;\n for (const message of messages) {\n switch (message.type) {\n case \"error\":\n console.error(\"Error from server\", message);\n break;\n case \"warning\":\n console.warn(\"Warning from server\", message);\n break;\n default: {\n if (message.documentTime) {\n if (this.timeCallback) {\n this.timeCallback(message.documentTime);\n }\n }\n switch (message.type) {\n case \"snapshot\":\n this.handleSnapshot(message);\n this.connectedCallback();\n break;\n case \"attributeChange\":\n this.handleAttributeChange(message);\n break;\n case \"childrenChanged\":\n this.handleChildrenChanged(message);\n break;\n case \"textChanged\":\n this.handleTextChanged(message);\n break;\n case \"ping\":\n this.send({\n type: \"pong\",\n pong: message.ping,\n });\n break;\n default:\n console.warn(\"unknown message type\", message);\n break;\n }\n }\n }\n }\n }\n\n private handleTextChanged(message: NetworkedDOMV01TextChangedDiff) {\n const { nodeId, text } = message;\n\n if (nodeId === undefined || nodeId === null) {\n console.warn(\"No nodeId in textChanged message\");\n return;\n }\n const node = this.idToElement.get(nodeId);\n if (!node) {\n throw new Error(\"No node found for textChanged message\");\n }\n if (!isText(node, this.parentElement)) {\n throw new Error(\"Node for textChanged message is not a Text node\");\n }\n node.textContent = text;\n }\n\n private handleChildrenChanged(message: NetworkedDOMV01ChildrenChangedDiff) {\n const { nodeId, addedNodes, removedNodes, previousNodeId } = message;\n if (nodeId === undefined || nodeId === null) {\n console.warn(\"No nodeId in childrenChanged message\");\n return;\n }\n const parent = this.idToElement.get(nodeId);\n if (!parent) {\n throw new Error(\"No parent found for childrenChanged message\");\n }\n if (!parent.isConnected) {\n console.error(\"Parent is not connected\", parent);\n }\n if (!isHTMLElement(parent, this.parentElement)) {\n throw new Error(\"Parent is not an HTMLElement (that supports children)\");\n }\n let nextElement = null;\n let previousElement = null;\n if (previousNodeId) {\n previousElement = this.idToElement.get(previousNodeId);\n if (!previousElement) {\n throw new Error(\"No previous element found for childrenChanged message\");\n }\n nextElement = previousElement.nextSibling;\n }\n\n const elementsToAdd = [];\n for (const addedNode of addedNodes) {\n const childElement = this.handleNewElement(addedNode);\n if (childElement) {\n elementsToAdd.push(childElement);\n }\n }\n if (elementsToAdd.length) {\n if (previousElement) {\n if (nextElement) {\n // There is a previous and next element - insertBefore the next element\n const docFrag = new DocumentFragment();\n docFrag.append(...elementsToAdd);\n parent.insertBefore(docFrag, nextElement);\n } else {\n // No next element - must be the last children\n parent.append(...elementsToAdd);\n }\n } else {\n // No previous element - must be the first children\n parent.prepend(...elementsToAdd);\n }\n }\n for (const removedNode of removedNodes) {\n const childElement = this.idToElement.get(removedNode);\n if (!childElement) {\n throw new Error(`Child element not found: ${removedNode}`);\n }\n this.elementToId.delete(childElement);\n this.idToElement.delete(removedNode);\n parent.removeChild(childElement);\n if (isHTMLElement(childElement, this.parentElement)) {\n // If child is capable of supporting children then remove any that exist\n this.removeChildElementIds(childElement);\n }\n }\n }\n\n private removeChildElementIds(parent: HTMLElement) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n const childId = this.elementToId.get(child as HTMLElement);\n if (!childId) {\n console.error(\"Inner child of removed element had no id\", child);\n } else {\n this.elementToId.delete(child);\n this.idToElement.delete(childId);\n }\n this.removeChildElementIds(child as HTMLElement);\n }\n }\n\n private handleSnapshot(message: NetworkedDOMV01SnapshotMessage) {\n // This websocket is successfully connected. Reset the backoff time.\n if (this.currentRoot) {\n this.currentRoot.remove();\n this.currentRoot = null;\n this.elementToId.clear();\n this.idToElement.clear();\n }\n\n // create a tree of DOM elements\n // NOTE: the MElement constructors are not executed during this stage\n const element = this.handleNewElement(message.snapshot);\n if (!element) {\n throw new Error(\"Snapshot element not created\");\n }\n if (!isHTMLElement(element, this.parentElement)) {\n throw new Error(\"Snapshot element is not an HTMLElement\");\n }\n this.currentRoot = element;\n // appending to the tree causes MElements to be constructed\n this.parentElement.append(element);\n }\n\n private handleAttributeChange(message: NetworkedDOMV01AttributeChangedDiff) {\n const { nodeId, attribute, newValue } = message;\n if (nodeId === undefined || nodeId === null) {\n console.warn(\"No nodeId in attributeChange message\");\n return;\n }\n const element = this.idToElement.get(nodeId);\n if (element) {\n if (isHTMLElement(element, this.parentElement)) {\n if (newValue === null) {\n element.removeAttribute(attribute);\n } else {\n if (DOMSanitizer.shouldAcceptAttribute(attribute)) {\n element.setAttribute(attribute, newValue);\n }\n }\n } else {\n console.error(\"Element is not an HTMLElement and cannot support attributes\", element);\n }\n } else {\n console.error(\"No element found for attributeChange message\");\n }\n }\n\n private handleNewElement(message: NetworkedDOMV01NodeDescription): Node | null {\n if (message.type === \"text\") {\n const { nodeId, text } = message;\n const textNode = document.createTextNode(\"\");\n textNode.textContent = text;\n this.idToElement.set(nodeId, textNode);\n this.elementToId.set(textNode, nodeId);\n return textNode;\n }\n const { tag, nodeId, attributes, children, text } = message;\n if (nodeId === undefined || nodeId === null) {\n console.warn(\"No nodeId in handleNewElement message\", message);\n return null;\n }\n if (this.idToElement.has(nodeId)) {\n console.error(\n \"Received nodeId to add that is already present\",\n nodeId,\n this.idToElement.get(nodeId),\n );\n }\n if (tag === \"#text\") {\n const textNode = document.createTextNode(\"\");\n textNode.textContent = text || null;\n this.idToElement.set(nodeId, textNode);\n this.elementToId.set(textNode, nodeId);\n return textNode;\n }\n\n let element;\n try {\n let filteredTag = tag;\n if (this.options.tagPrefix) {\n if (!tag.toLowerCase().startsWith(this.options.tagPrefix.toLowerCase())) {\n filteredTag = this.options.replacementTagPrefix\n ? this.options.replacementTagPrefix + tag\n : `x-${tag}`;\n }\n }\n element = document.createElement(filteredTag);\n } catch (e) {\n console.error(`Error creating element: (${tag})`, e);\n element = document.createElement(\"x-div\");\n }\n this.idToElement.set(nodeId, element);\n this.elementToId.set(element, nodeId);\n for (const key in attributes) {\n if (DOMSanitizer.shouldAcceptAttribute(key)) {\n const value = attributes[key];\n element.setAttribute(key, value);\n }\n }\n if (children) {\n for (const child of children) {\n const childElement = this.handleNewElement(child);\n if (childElement) {\n element.append(childElement);\n }\n }\n }\n return element;\n }\n}\n", "import {\n BufferReader,\n BufferWriter,\n decodeServerMessages,\n encodeClientMessage,\n NetworkedDOMV02AttributesChangedDiff,\n NetworkedDOMV02ChangeHiddenFromDiff,\n NetworkedDOMV02ChildrenAddedDiff,\n NetworkedDOMV02ChildrenRemovedDiff,\n NetworkedDOMV02ClientMessage,\n NetworkedDOMV02DocumentTimeMessage,\n NetworkedDOMV02NodeDescription,\n NetworkedDOMV02PingMessage,\n NetworkedDOMV02RemoteEvent,\n NetworkedDOMV02ServerMessage,\n NetworkedDOMV02SnapshotMessage,\n NetworkedDOMV02TextChangedDiff,\n} from \"@mml-io/networked-dom-protocol\";\n\nimport { DOMSanitizer } from \"./DOMSanitizer\";\nimport {\n isHTMLElement,\n isText,\n NetworkedDOMWebsocketAdapter,\n NetworkedDOMWebsocketOptions,\n} from \"./NetworkedDOMWebsocket\";\n\n// This client uses a single connection id\nconst connectionId = 1;\n\n// If an element should not be visible to this client, it will be replaced with this tag and attributes will be stored ready to be applied if it is unhidden.\nconst hiddenTag = \"x-hidden\";\n\nexport class NetworkedDOMWebsocketV02Adapter implements NetworkedDOMWebsocketAdapter {\n private idToElement = new Map();\n private elementToId = new Map();\n private hiddenPlaceholderElements = new Map<\n number,\n {\n placeholder: Node;\n element: Node;\n }\n >();\n private currentRoot: HTMLElement | null = null;\n private batchMode = false;\n private batchMessages: Array = [];\n\n constructor(\n private websocket: WebSocket,\n private parentElement: HTMLElement,\n private connectedCallback: () => void,\n private timeCallback?: (time: number) => void,\n private options: NetworkedDOMWebsocketOptions = {},\n ) {\n this.websocket.binaryType = \"arraybuffer\";\n this.send({ type: \"connectUsers\", connectionIds: [connectionId] });\n }\n\n public handleEvent(element: HTMLElement, event: CustomEvent<{ element: HTMLElement }>) {\n const nodeId = this.elementToId.get(element);\n if (nodeId === undefined || nodeId === null) {\n throw new Error(\"Element not found\");\n }\n\n const detailWithoutElement: Partial = {\n ...event.detail,\n };\n delete detailWithoutElement.element;\n\n const remoteEvent: NetworkedDOMV02RemoteEvent = {\n type: \"event\",\n nodeId,\n connectionId,\n name: event.type,\n bubbles: event.bubbles,\n params: detailWithoutElement,\n };\n\n this.send(remoteEvent);\n }\n\n private send(message: NetworkedDOMV02ClientMessage) {\n const writer = new BufferWriter(256);\n encodeClientMessage(message, writer);\n this.websocket.send(writer.getBuffer());\n }\n\n public clearContents(): boolean {\n this.idToElement.clear();\n this.elementToId.clear();\n if (this.currentRoot) {\n this.currentRoot.remove();\n this.currentRoot = null;\n return true;\n }\n return false;\n }\n\n public receiveMessage(event: MessageEvent) {\n const reader = new BufferReader(new Uint8Array(event.data));\n const messages = decodeServerMessages(reader);\n for (const message of messages) {\n if (message.type === \"batchStart\") {\n // Need to wait for batchEnd before applying messages\n this.batchMode = true;\n } else if (message.type === \"batchEnd\") {\n // Apply all messages\n this.batchMode = false;\n for (const message of this.batchMessages) {\n this.applyMessage(message);\n }\n this.batchMessages = [];\n } else {\n if (this.batchMode) {\n this.batchMessages.push(message);\n } else {\n this.applyMessage(message);\n }\n }\n }\n }\n\n private applyMessage(message: NetworkedDOMV02ServerMessage) {\n switch (message.type) {\n case \"error\":\n console.error(\"Error from server\", message);\n break;\n case \"warning\":\n console.warn(\"Warning from server\", message);\n break;\n case \"snapshot\":\n this.handleSnapshot(message);\n this.connectedCallback();\n break;\n case \"attributesChanged\":\n this.handleAttributeChange(message);\n break;\n case \"documentTime\":\n this.handleDocumentTime(message);\n break;\n case \"childrenAdded\":\n this.handleChildrenAdded(message);\n break;\n case \"changeHiddenFrom\":\n this.handleChangeHiddenFrom(message);\n break;\n case \"childrenRemoved\":\n this.handleChildrenRemoved(message);\n break;\n case \"textChanged\":\n this.handleTextChanged(message);\n break;\n case \"ping\":\n this.handlePing(message);\n break;\n default:\n console.warn(\"unknown message type\", message);\n break;\n }\n }\n\n private handleTextChanged(message: NetworkedDOMV02TextChangedDiff) {\n const { nodeId, text } = message;\n\n if (nodeId === undefined || nodeId === null) {\n console.warn(\"No nodeId in textChanged message\");\n return;\n }\n const node = this.idToElement.get(nodeId);\n if (!node) {\n throw new Error(\"No node found for textChanged message\");\n }\n if (!isText(node, this.parentElement)) {\n throw new Error(\"Node for textChanged message is not a Text node\");\n }\n node.textContent = text;\n }\n\n private handleChangeHiddenFrom(message: NetworkedDOMV02ChangeHiddenFromDiff) {\n const { nodeId, addHiddenFrom, removeHiddenFrom } = message;\n const node = this.idToElement.get(nodeId);\n const hiddenElement = this.hiddenPlaceholderElements.get(nodeId);\n if (addHiddenFrom.length > 0 && addHiddenFrom.indexOf(connectionId) !== -1) {\n // This element is being hidden\n if (hiddenElement) {\n // This element is already hidden\n return;\n }\n if (!node) {\n throw new Error(\"No node found for changeHiddenFrom message\");\n }\n const parent = node.parentElement;\n if (!parent) {\n throw new Error(\"Node has no parent\");\n }\n const placeholder = document.createElement(hiddenTag);\n parent.replaceChild(placeholder, node);\n this.hiddenPlaceholderElements.set(nodeId, { placeholder, element: node });\n } else if (removeHiddenFrom.length > 0 && removeHiddenFrom.indexOf(connectionId) !== -1) {\n // This element is being unhidden\n if (!hiddenElement) {\n // This element is not hidden\n return;\n }\n const { placeholder, element } = hiddenElement;\n const parent = placeholder.parentElement;\n if (!parent) {\n throw new Error(\"Placeholder has no parent\");\n }\n parent.replaceChild(element, placeholder);\n this.hiddenPlaceholderElements.delete(nodeId);\n }\n }\n\n private handleChildrenAdded(message: NetworkedDOMV02ChildrenAddedDiff) {\n const { nodeId, addedNodes, previousNodeId } = message;\n if (nodeId === undefined || nodeId === null) {\n console.warn(\"No nodeId in childrenChanged message\");\n return;\n }\n let parent = this.idToElement.get(nodeId);\n if (!parent) {\n throw new Error(\"No parent found for childrenChanged message\");\n }\n\n const hiddenParent = this.hiddenPlaceholderElements.get(nodeId);\n if (hiddenParent) {\n // This element is hidden - add the children to the hidden element (not the placeholder)\n parent = hiddenParent.element;\n } else {\n if (!parent.isConnected) {\n console.error(\"Parent is not connected\", parent);\n }\n }\n if (!isHTMLElement(parent, this.parentElement)) {\n throw new Error(\"Parent is not an HTMLElement (that supports children)\");\n }\n let nextElement = null;\n let previousElement = null;\n if (previousNodeId) {\n previousElement = this.idToElement.get(previousNodeId);\n if (!previousElement) {\n throw new Error(\"No previous element found for childrenChanged message\");\n }\n nextElement = previousElement.nextSibling;\n }\n\n const elementsToAdd = [];\n for (const addedNode of addedNodes) {\n const childElement = this.handleNewElement(addedNode);\n if (childElement) {\n elementsToAdd.push(childElement);\n }\n }\n if (elementsToAdd.length) {\n if (previousElement) {\n if (nextElement) {\n // There is a previous and next element - insertBefore the next element\n const docFrag = new DocumentFragment();\n docFrag.append(...elementsToAdd);\n parent.insertBefore(docFrag, nextElement);\n } else {\n // No next element - must be the last children\n parent.append(...elementsToAdd);\n }\n } else {\n // No previous element - must be the first children\n parent.prepend(...elementsToAdd);\n }\n }\n }\n\n private handleChildrenRemoved(message: NetworkedDOMV02ChildrenRemovedDiff) {\n const { nodeId, removedNodes } = message;\n if (nodeId === undefined || nodeId === null) {\n console.warn(\"No nodeId in childrenChanged message\");\n return;\n }\n const parent = this.idToElement.get(nodeId);\n if (!parent) {\n throw new Error(\"No parent found for childrenChanged message\");\n }\n if (!parent.isConnected) {\n console.error(\"Parent is not connected\", parent);\n }\n if (!isHTMLElement(parent, this.parentElement)) {\n throw new Error(\"Parent is not an HTMLElement (that supports children)\");\n }\n\n for (const removedNode of removedNodes) {\n const childElement = this.idToElement.get(removedNode);\n if (!childElement) {\n throw new Error(`Child element not found: ${removedNode}`);\n }\n this.elementToId.delete(childElement);\n this.idToElement.delete(removedNode);\n this.hiddenPlaceholderElements.delete(removedNode);\n parent.removeChild(childElement);\n if (isHTMLElement(childElement, this.parentElement)) {\n // If child is capable of supporting children then remove any that exist\n this.removeChildElementIds(childElement);\n }\n }\n }\n\n private removeChildElementIds(parent: HTMLElement) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n const childId = this.elementToId.get(child as HTMLElement);\n if (!childId) {\n console.error(\"Inner child of removed element had no id\", child);\n } else {\n this.elementToId.delete(child);\n this.idToElement.delete(childId);\n this.hiddenPlaceholderElements.delete(childId);\n }\n this.removeChildElementIds(child as HTMLElement);\n }\n }\n\n private handleSnapshot(message: NetworkedDOMV02SnapshotMessage) {\n // This websocket is successfully connected. Reset the backoff time.\n if (this.currentRoot) {\n this.currentRoot.remove();\n this.currentRoot = null;\n this.elementToId.clear();\n this.idToElement.clear();\n }\n\n this.timeCallback?.(message.documentTime);\n\n // create a tree of DOM elements\n // NOTE: the MElement constructors are not executed during this stage\n const element = this.handleNewElement(message.snapshot);\n if (!element) {\n throw new Error(\"Snapshot element not created\");\n }\n if (!isHTMLElement(element, this.parentElement)) {\n throw new Error(\"Snapshot element is not an HTMLElement\");\n }\n this.currentRoot = element;\n // appending to the tree causes MElements to be constructed\n this.parentElement.append(element);\n }\n\n private handleDocumentTime(message: NetworkedDOMV02DocumentTimeMessage) {\n this.timeCallback?.(message.documentTime);\n }\n\n private handleAttributeChange(message: NetworkedDOMV02AttributesChangedDiff) {\n const { nodeId, attributes } = message;\n if (nodeId === undefined || nodeId === null) {\n console.warn(\"No nodeId in attributeChange message\");\n return;\n }\n let element = this.idToElement.get(nodeId);\n const hiddenElement = this.hiddenPlaceholderElements.get(nodeId);\n if (hiddenElement) {\n // This element is hidden - apply the attributes to the hidden element\n element = hiddenElement.element;\n }\n if (element) {\n if (isHTMLElement(element, this.parentElement)) {\n for (const [key, newValue] of attributes) {\n if (newValue === null) {\n element.removeAttribute(key);\n } else {\n if (DOMSanitizer.shouldAcceptAttribute(key)) {\n element.setAttribute(key, newValue);\n }\n }\n }\n } else {\n console.error(\"Element is not an HTMLElement and cannot support attributes\", element);\n }\n } else {\n console.error(\"No element found for attributeChange message\");\n }\n }\n\n private handleNewElement(message: NetworkedDOMV02NodeDescription): Node | null {\n if (message.type === \"text\") {\n const { nodeId, text } = message;\n const textNode = document.createTextNode(\"\");\n textNode.textContent = text;\n this.idToElement.set(nodeId, textNode);\n this.elementToId.set(textNode, nodeId);\n return textNode;\n }\n const { tag, nodeId, attributes, children, text, hiddenFrom } = message;\n if (this.idToElement.has(nodeId)) {\n console.error(\n \"Received nodeId to add that is already present\",\n nodeId,\n this.idToElement.get(nodeId),\n );\n return null;\n }\n\n if (tag === \"#text\") {\n const textNode = document.createTextNode(\"\");\n textNode.textContent = text || null;\n this.idToElement.set(nodeId, textNode);\n this.elementToId.set(textNode, nodeId);\n return textNode;\n }\n\n let element;\n try {\n let filteredTag = tag;\n if (this.options.tagPrefix) {\n if (!tag.toLowerCase().startsWith(this.options.tagPrefix.toLowerCase())) {\n filteredTag = this.options.replacementTagPrefix\n ? this.options.replacementTagPrefix + tag\n : `x-${tag}`;\n }\n }\n element = document.createElement(filteredTag);\n } catch (e) {\n console.error(`Error creating element: (${tag})`, e);\n element = document.createElement(\"x-div\");\n }\n for (const [key, value] of attributes) {\n if (value !== null) {\n if (DOMSanitizer.shouldAcceptAttribute(key)) {\n element.setAttribute(key, value);\n }\n }\n }\n if (children) {\n for (const child of children) {\n const childElement = this.handleNewElement(child);\n if (childElement) {\n element.append(childElement);\n }\n }\n }\n\n if (hiddenFrom && hiddenFrom.length > 0 && hiddenFrom.indexOf(connectionId) !== -1) {\n // This element is hidden - create a placeholder that will be in the DOM to maintain structure, but keep the underlying element hidden\n const placeholder = document.createElement(hiddenTag);\n this.idToElement.set(nodeId, placeholder);\n this.elementToId.set(placeholder, nodeId);\n this.hiddenPlaceholderElements.set(nodeId, { placeholder, element });\n return placeholder;\n } else {\n this.idToElement.set(nodeId, element);\n this.elementToId.set(element, nodeId);\n return element;\n }\n }\n\n private handlePing(message: NetworkedDOMV02PingMessage) {\n this.timeCallback?.(message.documentTime);\n this.send({\n type: \"pong\",\n pong: message.ping,\n });\n }\n}\n", "import { MMLColor } from \"./MMLColor\";\n\nexport function lerpHSL(colorA: MMLColor, colorB: MMLColor, alpha: number): MMLColor {\n const hslA = getHSL(colorA);\n const hslB = getHSL(colorB);\n const h = hslA.h + (hslB.h - hslA.h) * alpha;\n const s = hslA.s + (hslB.s - hslA.s) * alpha;\n const l = hslA.l + (hslB.l - hslA.l) * alpha;\n return hslToRGB(h, s, l);\n}\n\nfunction hue2RGB(p: number, q: number, t: number) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t);\n return p;\n}\n\nfunction euclideanModulo(n: number, m: number) {\n return ((n % m) + m) % m;\n}\n\nexport function hslToRGB(h: number, s: number, l: number): MMLColor {\n h = euclideanModulo(h, 1);\n s = Math.max(0, Math.min(s, 1));\n l = Math.max(0, Math.min(l, 1));\n\n if (s === 0) {\n return { r: l, g: l, b: l };\n } else {\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n\n return {\n r: hue2RGB(q, p, h + 1 / 3),\n g: hue2RGB(q, p, h),\n b: hue2RGB(q, p, h - 1 / 3),\n };\n }\n}\n\nfunction getHSL(source: MMLColor): { h: number; s: number; l: number } {\n // h,s,l ranges are in 0.0 - 1.0\n\n const r = source.r,\n g = source.g,\n b = source.b;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let hue = 0;\n let saturation = 0;\n const lightness = (min + max) / 2.0;\n\n if (min === max) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max - min;\n\n saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n\n switch (max) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n\n hue /= 6;\n }\n\n return {\n h: hue,\n s: saturation,\n l: lightness,\n };\n}\n", "export const colors: { [key: string]: [number, number, number] } = {\n aliceblue: [0xf0 / 255, 0xf8 / 255, 0xff / 255],\n antiquewhite: [0xfa / 255, 0xeb / 255, 0xd7 / 255],\n aqua: [0x00 / 255, 0xff / 255, 0xff / 255],\n aquamarine: [0x7f / 255, 0xff / 255, 0xd4 / 255],\n azure: [0xf0 / 255, 0xff / 255, 0xff / 255],\n beige: [0xf5 / 255, 0xf5 / 255, 0xdc / 255],\n bisque: [0xff / 255, 0xe4 / 255, 0xc4 / 255],\n black: [0x00 / 255, 0x00 / 255, 0x00 / 255],\n blanchedalmond: [0xff / 255, 0xeb / 255, 0xcd / 255],\n blue: [0x00 / 255, 0x00 / 255, 0xff / 255],\n blueviolet: [0x8a / 255, 0x2b / 255, 0xe2 / 255],\n brown: [0xa5 / 255, 0x2a / 255, 0x2a / 255],\n burlywood: [0xde / 255, 0xb8 / 255, 0x87 / 255],\n cadetblue: [0x5f / 255, 0x9e / 255, 0xa0 / 255],\n chartreuse: [0x7f / 255, 0xff / 255, 0x00 / 255],\n chocolate: [0xd2 / 255, 0x69 / 255, 0x1e / 255],\n coral: [0xff / 255, 0x7f / 255, 0x50 / 255],\n cornflowerblue: [0x64 / 255, 0x95 / 255, 0xed / 255],\n cornsilk: [0xff / 255, 0xf8 / 255, 0xdc / 255],\n crimson: [0xdc / 255, 0x14 / 255, 0x3c / 255],\n cyan: [0x00 / 255, 0xff / 255, 0xff / 255],\n darkblue: [0x00 / 255, 0x00 / 255, 0x8b / 255],\n darkcyan: [0x00 / 255, 0x8b / 255, 0x8b / 255],\n darkgoldenrod: [0xb8 / 255, 0x86 / 255, 0x0b / 255],\n darkgray: [0xa9 / 255, 0xa9 / 255, 0xa9 / 255],\n darkgreen: [0x00 / 255, 0x64 / 255, 0x00 / 255],\n darkgrey: [0xa9 / 255, 0xa9 / 255, 0xa9 / 255],\n darkkhaki: [0xbd / 255, 0xb7 / 255, 0x6b / 255],\n darkmagenta: [0x8b / 255, 0x00 / 255, 0x8b / 255],\n darkolivegreen: [0x55 / 255, 0x6b / 255, 0x2f / 255],\n darkorange: [0xff / 255, 0x8c / 255, 0x00 / 255],\n darkorchid: [0x99 / 255, 0x32 / 255, 0xcc / 255],\n darkred: [0x8b / 255, 0x00 / 255, 0x00 / 255],\n darksalmon: [0xe9 / 255, 0x96 / 255, 0x7a / 255],\n darkseagreen: [0x8f / 255, 0xbc / 255, 0x8f / 255],\n darkslateblue: [0x48 / 255, 0x3d / 255, 0x8b / 255],\n darkslategray: [0x2f / 255, 0x4f / 255, 0x4f / 255],\n darkslategrey: [0x2f / 255, 0x4f / 255, 0x4f / 255],\n darkturquoise: [0x00 / 255, 0xce / 255, 0xd1 / 255],\n darkviolet: [0x94 / 255, 0x00 / 255, 0xd3 / 255],\n deeppink: [0xff / 255, 0x14 / 255, 0x93 / 255],\n deepskyblue: [0x00 / 255, 0xbf / 255, 0xff / 255],\n dimgray: [0x69 / 255, 0x69 / 255, 0x69 / 255],\n dimgrey: [0x69 / 255, 0x69 / 255, 0x69 / 255],\n dodgerblue: [0x1e / 255, 0x90 / 255, 0xff / 255],\n firebrick: [0xb2 / 255, 0x22 / 255, 0x22 / 255],\n floralwhite: [0xff / 255, 0xfa / 255, 0xf0 / 255],\n forestgreen: [0x22 / 255, 0x8b / 255, 0x22 / 255],\n fuchsia: [0xff / 255, 0x00 / 255, 0xff / 255],\n gainsboro: [0xdc / 255, 0xdc / 255, 0xdc / 255],\n ghostwhite: [0xf8 / 255, 0xf8 / 255, 0xff / 255],\n gold: [0xff / 255, 0xd7 / 255, 0x00 / 255],\n goldenrod: [0xda / 255, 0xa5 / 255, 0x20 / 255],\n gray: [0x80 / 255, 0x80 / 255, 0x80 / 255],\n green: [0x00 / 255, 0x80 / 255, 0x00 / 255],\n greenyellow: [0xad / 255, 0xff / 255, 0x2f / 255],\n grey: [0x80 / 255, 0x80 / 255, 0x80 / 255],\n honeydew: [0xf0 / 255, 0xff / 255, 0xf0 / 255],\n hotpink: [0xff / 255, 0x69 / 255, 0xb4 / 255],\n indianred: [0xcd / 255, 0x5c / 255, 0x5c / 255],\n indigo: [0x4b / 255, 0x00 / 255, 0x82 / 255],\n ivory: [0xff / 255, 0xff / 255, 0xf0 / 255],\n khaki: [0xf0 / 255, 0xe6 / 255, 0x8c / 255],\n lavender: [0xe6 / 255, 0xe6 / 255, 0xfa / 255],\n lavenderblush: [0xff / 255, 0xf0 / 255, 0xf5 / 255],\n lawngreen: [0x7c / 255, 0xfc / 255, 0x00 / 255],\n lemonchiffon: [0xff / 255, 0xfa / 255, 0xcd / 255],\n lightblue: [0xad / 255, 0xd8 / 255, 0xe6 / 255],\n lightcoral: [0xf0 / 255, 0x80 / 255, 0x80 / 255],\n lightcyan: [0xe0 / 255, 0xff / 255, 0xff / 255],\n lightgoldenrodyellow: [0xfa / 255, 0xfa / 255, 0xd2 / 255],\n lightgray: [0xd3 / 255, 0xd3 / 255, 0xd3 / 255],\n lightgreen: [0x90 / 255, 0xee / 255, 0x90 / 255],\n lightgrey: [0xd3 / 255, 0xd3 / 255, 0xd3 / 255],\n lightpink: [0xff / 255, 0xb6 / 255, 0xc1 / 255],\n lightsalmon: [0xff / 255, 0xa0 / 255, 0x7a / 255],\n lightseagreen: [0x20 / 255, 0xb2 / 255, 0xaa / 255],\n lightskyblue: [0x87 / 255, 0xce / 255, 0xfa / 255],\n lightslategray: [0x77 / 255, 0x88 / 255, 0x99 / 255],\n lightslategrey: [0x77 / 255, 0x88 / 255, 0x99 / 255],\n lightsteelblue: [0xb0 / 255, 0xc4 / 255, 0xde / 255],\n lightyellow: [0xff / 255, 0xff / 255, 0xe0 / 255],\n lime: [0x00 / 255, 0xff / 255, 0x00 / 255],\n limegreen: [0x32 / 255, 0xcd / 255, 0x32 / 255],\n linen: [0xfa / 255, 0xf0 / 255, 0xe6 / 255],\n magenta: [0xff / 255, 0x00 / 255, 0xff / 255],\n maroon: [0x80 / 255, 0x00 / 255, 0x00 / 255],\n mediumaquamarine: [0x66 / 255, 0xcd / 255, 0xaa / 255],\n mediumblue: [0x00 / 255, 0x00 / 255, 0xcd / 255],\n mediumorchid: [0xba / 255, 0x55 / 255, 0xd3 / 255],\n mediumpurple: [0x93 / 255, 0x70 / 255, 0xdb / 255],\n mediumseagreen: [0x3c / 255, 0xb3 / 255, 0x71 / 255],\n mediumslateblue: [0x7b / 255, 0x68 / 255, 0xee / 255],\n mediumspringgreen: [0x00 / 255, 0xfa / 255, 0x9a / 255],\n mediumturquoise: [0x48 / 255, 0xd1 / 255, 0xcc / 255],\n mediumvioletred: [0xc7 / 255, 0x15 / 255, 0x85 / 255],\n midnightblue: [0x19 / 255, 0x19 / 255, 0x70 / 255],\n mintcream: [0xf5 / 255, 0xff / 255, 0xfa / 255],\n mistyrose: [0xff / 255, 0xe4 / 255, 0xe1 / 255],\n moccasin: [0xff / 255, 0xe4 / 255, 0xb5 / 255],\n navajowhite: [0xff / 255, 0xde / 255, 0xad / 255],\n navy: [0x00 / 255, 0x00 / 255, 0x80 / 255],\n oldlace: [0xfd / 255, 0xf5 / 255, 0xe6 / 255],\n olive: [0x80 / 255, 0x80 / 255, 0x00 / 255],\n olivedrab: [0x6b / 255, 0x8e / 255, 0x23 / 255],\n orange: [0xff / 255, 0xa5 / 255, 0x00 / 255],\n orangered: [0xff / 255, 0x45 / 255, 0x00 / 255],\n orchid: [0xda / 255, 0x70 / 255, 0xd6 / 255],\n palegoldenrod: [0xee / 255, 0xe8 / 255, 0xaa / 255],\n palegreen: [0x98 / 255, 0xfb / 255, 0x98 / 255],\n paleturquoise: [0xaf / 255, 0xee / 255, 0xee / 255],\n palevioletred: [0xdb / 255, 0x70 / 255, 0x93 / 255],\n papayawhip: [0xff / 255, 0xef / 255, 0xd5 / 255],\n peachpuff: [0xff / 255, 0xda / 255, 0xb9 / 255],\n peru: [0xcd / 255, 0x85 / 255, 0x3f / 255],\n pink: [0xff / 255, 0xc0 / 255, 0xcb / 255],\n plum: [0xdd / 255, 0xa0 / 255, 0xdd / 255],\n powderblue: [0xb0 / 255, 0xe0 / 255, 0xe6 / 255],\n purple: [0x80 / 255, 0x00 / 255, 0x80 / 255],\n rebeccapurple: [0x66 / 255, 0x33 / 255, 0x99 / 255],\n red: [0xff / 255, 0x00 / 255, 0x00 / 255],\n rosybrown: [0xbc / 255, 0x8f / 255, 0x8f / 255],\n royalblue: [0x41 / 255, 0x69 / 255, 0xe1 / 255],\n saddlebrown: [0x8b / 255, 0x45 / 255, 0x13 / 255],\n salmon: [0xfa / 255, 0x80 / 255, 0x72 / 255],\n sandybrown: [0xf4 / 255, 0xa4 / 255, 0x60 / 255],\n seagreen: [0x2e / 255, 0x8b / 255, 0x57 / 255],\n seashell: [0xff / 255, 0xf5 / 255, 0xee / 255],\n sienna: [0xa0 / 255, 0x52 / 255, 0x2d / 255],\n silver: [0xc0 / 255, 0xc0 / 255, 0xc0 / 255],\n skyblue: [0x87 / 255, 0xce / 255, 0xeb / 255],\n slateblue: [0x6a / 255, 0x5a / 255, 0xcd / 255],\n slategray: [0x70 / 255, 0x80 / 255, 0x90 / 255],\n slategrey: [0x70 / 255, 0x80 / 255, 0x90 / 255],\n snow: [0xff / 255, 0xfa / 255, 0xfa / 255],\n springgreen: [0x00 / 255, 0xff / 255, 0x7f / 255],\n steelblue: [0x46 / 255, 0x82 / 255, 0xb4 / 255],\n tan: [0xd2 / 255, 0xb4 / 255, 0x8c / 255],\n teal: [0x00 / 255, 0x80 / 255, 0x80 / 255],\n thistle: [0xd8 / 255, 0xbf / 255, 0xd8 / 255],\n tomato: [0xff / 255, 0x63 / 255, 0x47 / 255],\n turquoise: [0x40 / 255, 0xe0 / 255, 0xd0 / 255],\n violet: [0xee / 255, 0x82 / 255, 0xee / 255],\n wheat: [0xf5 / 255, 0xde / 255, 0xb3 / 255],\n white: [0xff / 255, 0xff / 255, 0xff / 255],\n whitesmoke: [0xf5 / 255, 0xf5 / 255, 0xf5 / 255],\n yellow: [0xff / 255, 0xff / 255, 0x00 / 255],\n yellowgreen: [0x9a / 255, 0xcd / 255, 0x32 / 255],\n};\n", "import { colors, hslToRGB, MMLColor } from \"../color\";\n\nexport type AttributeHandlerMap = {\n [key: string]: (instance: T, newValue: string | null) => void;\n};\n\nexport class AttributeHandler {\n private map: AttributeHandlerMap;\n\n constructor(map: AttributeHandlerMap) {\n this.map = map;\n }\n\n public getAttributes() {\n return Object.keys(this.map);\n }\n\n public handle(instance: T, name: string, newValue: string): boolean {\n const handler = this.map[name];\n if (handler) {\n handler(instance, newValue);\n return true;\n }\n return false;\n }\n}\n\nexport function parseColorAttribute(value: string | null, defaultValue: null): MMLColor | null;\nexport function parseColorAttribute(value: string | null, defaultValue: MMLColor): MMLColor;\nexport function parseColorAttribute(\n value: string | null,\n defaultValue: MMLColor | null,\n): MMLColor | null {\n return parseAttribute(value, defaultValue, (value) => {\n const colorNameValues = colors[value];\n if (colorNameValues) {\n return {\n r: colorNameValues[0],\n g: colorNameValues[1],\n b: colorNameValues[2],\n };\n }\n\n if (value.length === 7) {\n const hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(value);\n if (hex) {\n // e.g. #ff00ff\n return {\n r: parseInt(hex[1], 16) / 255,\n g: parseInt(hex[2], 16) / 255,\n b: parseInt(hex[3], 16) / 255,\n };\n }\n }\n\n if (value.length === 4) {\n const hex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i.exec(value);\n if (hex) {\n // e.g. #f0f\n return {\n r: parseInt(hex[1] + hex[1], 16) / 255,\n g: parseInt(hex[2] + hex[2], 16) / 255,\n b: parseInt(hex[3] + hex[3], 16) / 255,\n };\n }\n }\n\n if (value.indexOf(\"rgb(\") === 0) {\n const rgb = /^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/.exec(value);\n if (rgb) {\n // e.g. rgb(255,0,255)\n return {\n r: parseInt(rgb[1], 10) / 255,\n g: parseInt(rgb[2], 10) / 255,\n b: parseInt(rgb[3], 10) / 255,\n };\n }\n }\n\n if (value.indexOf(\"rgba(\") === 0) {\n const rgba = /^rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*(\\d*\\.?\\d+)\\)$/.exec(value);\n if (rgba) {\n // e.g. rgba(255,0,255,0.5)\n return {\n r: parseInt(rgba[1], 10) / 255,\n g: parseInt(rgba[2], 10) / 255,\n b: parseInt(rgba[3], 10) / 255,\n a: parseFloat(rgba[4]),\n };\n }\n }\n\n if (value.indexOf(\"hsl(\") === 0) {\n const hsl = /^hsl\\(\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\)$/.exec(value);\n if (hsl) {\n let h = parseFloat(hsl[1]) / 360;\n // special case for hsl/hsla to change the behaviour at extremes such that animations can differentiate (and therefore lerp) between 0 and 360 degrees\n if (h === 0) {\n h = 0.0001;\n } else if (h === 1) {\n h = 0.9999;\n }\n let s = parseFloat(hsl[2]) / 100;\n if (s === 0) {\n s = 0.0001;\n } else if (s === 1) {\n s = 0.9999;\n }\n let l = parseFloat(hsl[3]) / 100;\n if (l === 0) {\n l = 0.0001;\n } else if (l === 1) {\n l = 0.9999;\n }\n return hslToRGB(h, s, l);\n }\n }\n\n if (value.indexOf(\"hsla(\") === 0) {\n const hsla =\n /^hsla\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\s*,\\s*(\\d+(?:\\.\\d+)?%),\\s*(\\d+(?:\\.\\d+)?)\\)$/.exec(\n value,\n );\n if (hsla) {\n let h = parseFloat(hsla[1]) / 360;\n // special case for hsl/hsla to change the behaviour at extremes such that animations can differentiate (and therefore lerp) between 0 and 360 degrees\n if (h === 0) {\n h = 0.0001;\n } else if (h === 1) {\n h = 0.9999;\n }\n let s = parseFloat(hsla[2]) / 100;\n if (s === 0) {\n s = 0.0001;\n } else if (s === 1) {\n s = 0.9999;\n }\n let l = parseFloat(hsla[3]) / 100;\n if (l === 0) {\n l = 0.0001;\n } else if (l === 1) {\n l = 0.9999;\n }\n return hslToRGB(h, s, l);\n }\n }\n return null;\n });\n}\n\nexport function parseAttribute(\n value: string | null,\n defaultValue: T,\n parser: (value: string) => T | null,\n): T {\n if (value === null) {\n return defaultValue;\n }\n const parsed = parser(value);\n if (parsed === null) {\n return defaultValue;\n }\n return parsed;\n}\n\nexport function floatParser(value: string): number | null {\n const parsed = parseFloat(value);\n if (isNaN(parsed)) {\n return null;\n }\n return parsed;\n}\n\nexport function boolParser(value: string): boolean | null {\n if (value === \"true\") {\n return true;\n } else if (value === \"false\") {\n return false;\n }\n return null;\n}\n\nexport function parseFloatAttribute(value: string | null, defaultValue: null): number | null;\nexport function parseFloatAttribute(value: string | null, defaultValue: number): number;\n\nexport function parseFloatAttribute(\n value: string | null,\n defaultValue: number | null,\n): number | null {\n return parseAttribute(value, defaultValue, floatParser);\n}\n\nexport function parseBoolAttribute(value: string | null, defaultValue: boolean): boolean {\n return parseAttribute(value, defaultValue, boolParser);\n}\n\nexport function parseEnumAttribute(\n value: string | null,\n enumValues: Record,\n defaultValue: T,\n): T {\n return parseAttribute(value, defaultValue, (value) => {\n if (Object.keys(enumValues).indexOf(value as T) === -1) {\n return null;\n }\n return value as T;\n });\n}\n", "import { GraphicsAdapter } from \"../graphics\";\nimport { IMMLScene } from \"../scene\";\nimport { MMLDocumentTimeManager } from \"../time\";\n\nlet scene: IMMLScene | null = null;\nlet documentTimeManager: MMLDocumentTimeManager | null = null;\n\nexport function setGlobalMMLScene(sceneArg: IMMLScene) {\n if (scene) {\n throw new Error(\"GlobalMMLScene already set\");\n }\n scene = sceneArg;\n}\n\nexport function getGlobalMMLScene(): IMMLScene {\n if (!scene) {\n throw new Error(\"GlobalMMLScene not set\");\n }\n return scene;\n}\n\nexport function setGlobalDocumentTimeManager(documentTimeManagerArg: MMLDocumentTimeManager) {\n if (documentTimeManager) {\n throw new Error(\"GlobalDocumentTimeManager already set\");\n }\n documentTimeManager = documentTimeManagerArg;\n}\n\nexport function getGlobalDocumentTimeManager(): MMLDocumentTimeManager {\n if (!documentTimeManager) {\n throw new Error(\"GlobalMMLScene not set\");\n }\n return documentTimeManager;\n}\n", "import { getGlobalDocumentTimeManager, getGlobalMMLScene } from \"../global\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { MElementGraphics } from \"../graphics\";\nimport { LoadingProgressManager } from \"../loading\";\nimport { IMMLScene, PositionAndRotation } from \"../scene\";\nimport { MMLDocumentTimeManager } from \"../time\";\nimport type { RemoteDocument } from \"./RemoteDocument\";\n\nexport const MELEMENT_PROPERTY_NAME = \"m-element-property\";\nexport const consumeEventEventName = \"consume-event\";\n\nexport abstract class MElement extends HTMLElement {\n // This allows switching which document this HTMLElement subclass extends so that it can be placed into iframes\n static overwriteSuperclass(newSuperclass: typeof HTMLElement) {\n (MElement as any).__proto__ = newSuperclass;\n }\n\n static get observedAttributes(): Array {\n return [];\n }\n\n private mElementGraphics: MElementGraphics | null = null;\n\n constructor() {\n super();\n }\n\n static getMElementFromObject(object: unknown): MElement | null {\n return (object as any)[MELEMENT_PROPERTY_NAME] || null;\n }\n\n public abstract isClickable(): boolean;\n\n public abstract parentTransformed(): void;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public addSideEffectChild(child: MElement): void {\n // no-op\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public removeSideEffectChild(child: MElement): void {\n // no-op\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n // no-op\n }\n\n public getScene(): IMMLScene {\n const remoteDocumentElement = this.getInitiatedRemoteDocument();\n if (remoteDocumentElement) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return (remoteDocumentElement as RemoteDocument).getMMLScene()!;\n }\n const globalScene = getGlobalMMLScene() as IMMLScene;\n if (!globalScene) {\n throw new Error(\"No scene attachment found and no global scene found\");\n }\n return globalScene;\n }\n\n public getInitiatedRemoteDocument(): RemoteDocument | null {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n for (let parentNode: ParentNode | null = this; parentNode; parentNode = parentNode.parentNode) {\n if (\n parentNode.nodeName === \"M-REMOTE-DOCUMENT\" &&\n (parentNode as RemoteDocument).getMMLScene()\n ) {\n // Return the first remote document that has an explicit scene set\n return parentNode as RemoteDocument;\n }\n }\n return null;\n }\n\n public contentSrcToContentAddress(src: string): string {\n // Convert the potentially relative src to an absolute address using the document host\n const documentLocation = this.getDocumentHost();\n // First check if the src is a host-relative path\n try {\n // Check if the src is a valid URL - if so then it's already absolute\n const url = new URL(src);\n return url.toString();\n } catch {\n // Do nothing\n }\n let protocol = documentLocation.protocol;\n if (protocol === \"ws:\") {\n protocol = \"http:\";\n } else if (protocol === \"wss:\") {\n protocol = \"https:\";\n }\n if (src.startsWith(\"/\")) {\n // If the src is host-relative then we can just use the document host\n return `${protocol}//${documentLocation.host}${src}`;\n } else {\n // Otherwise we need to use the document host as a base\n const path = documentLocation.pathname;\n const lastSlashIndex = path.lastIndexOf(\"/\");\n if (lastSlashIndex === -1) {\n return `${protocol}//${documentLocation.host}/${src}`;\n }\n const pathWithoutFilename = path.substring(0, lastSlashIndex + 1);\n return `${protocol}//${documentLocation.host}${pathWithoutFilename}${src}`;\n }\n }\n\n private getDocumentHost(): URL | Location {\n const remoteDocument = this.getInitiatedRemoteDocument();\n if (remoteDocument) {\n const remoteDocumentAddress = remoteDocument.getDocumentAddress();\n if (remoteDocumentAddress) {\n const url = new URL(remoteDocumentAddress);\n return url;\n }\n }\n return window.location;\n }\n\n public getDocumentTime(): number {\n const documentTimeContextProvider = this.getDocumentTimeManager();\n if (documentTimeContextProvider) {\n return documentTimeContextProvider.getDocumentTime();\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return Number(document.timeline.currentTime!);\n }\n\n public getWindowTime(): number {\n const documentTimeContextProvider = this.getDocumentTimeManager();\n if (documentTimeContextProvider) {\n return documentTimeContextProvider.getWindowTime();\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return Number(document.timeline.currentTime!);\n }\n\n public getLoadingProgressManager(): LoadingProgressManager | null {\n const scene = this.getScene();\n if (scene) {\n return scene.getLoadingProgressManager?.() || null;\n }\n return null;\n }\n\n protected getDocumentTimeManager(): MMLDocumentTimeManager | null {\n const remoteDocument = this.getInitiatedRemoteDocument();\n if (remoteDocument) {\n return remoteDocument.getDocumentTimeManager();\n }\n const globalDocumentTimeManager = getGlobalDocumentTimeManager();\n if (globalDocumentTimeManager) {\n return globalDocumentTimeManager;\n }\n return null;\n }\n\n public addDocumentTimeListener(cb: (documentTime: number) => void): {\n remove: () => void;\n } {\n const documentTimeManager = this.getDocumentTimeManager();\n if (documentTimeManager) {\n documentTimeManager.addDocumentTimeListenerCallback(cb);\n return {\n remove: () => {\n documentTimeManager.removeDocumentTimeListenerCallback(cb);\n },\n };\n } else {\n console.warn(\"No document time context provider found to add listener to\");\n return {\n remove: () => {\n // no-op\n },\n };\n }\n }\n\n public addDocumentTimeTickListener(cb: (documentTime: number) => void): {\n remove: () => void;\n } {\n const documentTimeManager = this.getDocumentTimeManager();\n if (documentTimeManager) {\n documentTimeManager.addDocumentTimeTickListenerCallback(cb);\n return {\n remove: () => {\n documentTimeManager.removeDocumentTimeTickListenerCallback(cb);\n },\n };\n } else {\n console.warn(\"No document time context provider found to add listener to\");\n return {\n remove: () => {\n // no-op\n },\n };\n }\n }\n\n getContainer(): G[\"containerType\"] {\n const container = this.mElementGraphics?.getContainer();\n if (!container) {\n throw new Error(\"No container found\");\n }\n return container;\n }\n\n getUserPositionAndRotation(): PositionAndRotation {\n const remoteDocument = this.getScene();\n if (!remoteDocument) {\n throw new Error(\"No scene to retrieve user position from\");\n }\n return remoteDocument.getUserPositionAndRotation();\n }\n\n dispatchEvent(event: Event): boolean {\n const remoteDocument = this.getInitiatedRemoteDocument();\n if (remoteDocument) {\n remoteDocument.dispatchEvent(\n new CustomEvent(consumeEventEventName, {\n bubbles: false,\n detail: { element: this, originalEvent: event },\n }),\n );\n return super.dispatchEvent(event);\n } else {\n if (event.type !== \"click\") {\n const script = this.getAttribute(\"on\" + event.type.toLowerCase());\n if (script) {\n const handler = window[\"eval\"](`(function(event){ ${script} })`);\n handler.apply(this, [event]);\n }\n }\n return super.dispatchEvent(event);\n }\n }\n\n public getMElementParent(): MElement | null {\n let parentNode = this.parentNode;\n while (parentNode != null) {\n if (parentNode instanceof MElement) {\n return parentNode;\n }\n parentNode = parentNode.parentNode;\n }\n return null;\n }\n\n public connectedCallback(): void {\n if (!this.getScene().hasGraphicsAdapter() || this.mElementGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.mElementGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MElementGraphicsInterface(this);\n }\n\n disconnectedCallback() {\n this.mElementGraphics?.dispose();\n this.mElementGraphics = null;\n }\n}\n", "import {\n EndOfAnimationSymbol,\n getEasedRatioForTime,\n StartOfAnimationSymbol,\n} from \"../attribute-animation\";\nimport {\n AttributeHandler,\n parseBoolAttribute,\n parseColorAttribute,\n parseFloatAttribute,\n} from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { lerpHSL } from \"../color\";\nimport { MMLColor } from \"../color\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { MElement } from \"./MElement\";\n\nconst defaultAttribute: string | null = null;\nconst defaultStart = 0;\nconst defaultEnd = 0;\nconst defaultLoop = true;\nconst defaultPingPong = false;\nconst defaultEasing = \"\";\nconst defaultStartTime = 0;\nconst defaultPauseTime = null;\nconst defaultAnimDuration = 1000;\nconst defaultPingPongDelay = 0;\n\nexport enum AnimationType {\n Number,\n Color,\n}\n\nconst defaultColor: MMLColor = { r: 1, g: 1, b: 1 };\n\n/*\n Attribute animations are applied with the following precedence:\n 1. The first child m-attr-anim that is running (start time has passed, and duration is not exceeded / is looping)\n 2. The next-to-start m-attr-anim that is not yet running (start time has not passed). If equal timing then the first occurring child is used.\n 3. The last m-attr-anim to end (duration has been exceeded, and is not looping). If equal timing then the first occurring child is used.\n 4. The element's attribute value.\n */\n\nexport class AttributeAnimation extends MElement {\n static tagName = \"m-attr-anim\";\n\n private props = {\n attr: defaultAttribute,\n start: defaultStart as number | MMLColor,\n end: defaultEnd as number | MMLColor,\n loop: defaultLoop,\n pingPong: defaultPingPong,\n pingPongDelay: defaultPingPongDelay,\n easing: defaultEasing,\n startTime: defaultStartTime,\n pauseTime: defaultPauseTime as number | null,\n animDuration: defaultAnimDuration,\n };\n\n private registeredParentAttachment: MElement | null = null;\n\n private static attributeHandler = new AttributeHandler>({\n attr: (instance, newValue) => {\n if (instance.registeredParentAttachment && instance.props.attr) {\n instance.registeredParentAttachment.removeSideEffectChild(instance);\n }\n instance.props.attr = newValue || defaultAttribute;\n if (instance.registeredParentAttachment && instance.props.attr) {\n instance.registeredParentAttachment.addSideEffectChild(instance);\n }\n },\n start: (instance, newValue) => {\n let parsedValue: number | MMLColor | null = parseFloatAttribute(newValue, null);\n if (parsedValue === null) {\n parsedValue = parseColorAttribute(newValue, null);\n }\n if (parsedValue === null) {\n instance.props.start = defaultStart;\n } else {\n instance.props.start = parsedValue;\n }\n },\n end: (instance, newValue) => {\n let parsedValue: number | MMLColor | null = parseFloatAttribute(newValue, null);\n if (parsedValue === null) {\n parsedValue = parseColorAttribute(newValue, null);\n }\n if (parsedValue === null) {\n instance.props.end = defaultStart;\n } else {\n instance.props.end = parsedValue;\n }\n },\n loop: (instance, newValue) => {\n instance.props.loop = parseBoolAttribute(newValue, defaultLoop);\n },\n \"ping-pong\": (instance, newValue) => {\n instance.props.pingPong = parseBoolAttribute(newValue, defaultPingPong);\n },\n \"ping-pong-delay\": (instance, newValue) => {\n instance.props.pingPongDelay = parseFloatAttribute(newValue, defaultPingPongDelay);\n },\n easing: (instance, newValue) => {\n instance.props.easing = newValue || defaultEasing;\n },\n \"start-time\": (instance, newValue) => {\n instance.props.startTime = parseFloatAttribute(newValue, defaultStartTime);\n },\n \"pause-time\": (instance, newValue) => {\n instance.props.pauseTime = parseFloatAttribute(newValue, defaultPauseTime);\n },\n duration: (instance, newValue) => {\n instance.props.animDuration = parseFloatAttribute(newValue, defaultAnimDuration);\n },\n });\n\n static get observedAttributes(): Array {\n return [...AttributeAnimation.attributeHandler.getAttributes()];\n }\n constructor() {\n super();\n }\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n return null;\n }\n\n public getAnimatedAttributeName(): string | null {\n return this.props.attr;\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n super.attributeChangedCallback(name, oldValue, newValue);\n AttributeAnimation.attributeHandler.handle(this, name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n if (this.parentElement && this.parentElement instanceof MElement) {\n this.registeredParentAttachment = this.parentElement;\n if (this.props.attr) {\n this.registeredParentAttachment.addSideEffectChild(this);\n }\n }\n }\n\n disconnectedCallback() {\n if (this.registeredParentAttachment && this.props.attr) {\n this.registeredParentAttachment.removeSideEffectChild(this);\n }\n this.registeredParentAttachment = null;\n super.disconnectedCallback();\n }\n\n public getColorValueForTime(docTimeMs: number): [MMLColor, number] {\n const [ratio, state] = getEasedRatioForTime(docTimeMs, this.props);\n if (typeof this.props.start !== \"object\" || typeof this.props.end !== \"object\") {\n return [defaultColor, state];\n }\n if (ratio === StartOfAnimationSymbol) {\n return [this.props.start, state];\n } else if (ratio === EndOfAnimationSymbol) {\n return [this.props.end, state];\n } else {\n const value = lerpHSL(this.props.start, this.props.end, ratio);\n return [value, state];\n }\n }\n\n public getFloatValueForTime(docTimeMs: number): [number, number] {\n const [ratio, state] = getEasedRatioForTime(docTimeMs, this.props);\n if (typeof this.props.start !== \"number\" || typeof this.props.end !== \"number\") {\n return [0, state];\n }\n if (ratio === StartOfAnimationSymbol) {\n return [this.props.start as number, state];\n } else if (ratio === EndOfAnimationSymbol) {\n return [this.props.end as number, state];\n } else {\n const value = ratio * (this.props.end - this.props.start) + this.props.start;\n return [value, state];\n }\n }\n}\n", "import { easingsByName } from \"../attribute-animation\";\nimport { AttributeHandler, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { lerpHSL, MMLColor } from \"../color\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { MElement } from \"./MElement\";\n\nconst defaultAttribute: string = \"all\";\nconst defaultEasing = \"\";\nconst defaultLerpDuration = 1000;\n\nexport class AttributeLerp extends MElement {\n static tagName = \"m-attr-lerp\";\n\n private props = {\n attr: defaultAttribute,\n easing: defaultEasing,\n lerpDuration: defaultLerpDuration,\n };\n\n private registeredParentAttachment: MElement | null = null;\n\n private static attributeHandler = new AttributeHandler>({\n attr: (instance, newValue) => {\n if (instance.registeredParentAttachment) {\n instance.registeredParentAttachment.removeSideEffectChild(instance);\n }\n instance.props.attr = newValue !== null ? newValue : defaultAttribute;\n if (instance.registeredParentAttachment) {\n instance.registeredParentAttachment.addSideEffectChild(instance);\n }\n },\n easing: (instance, newValue) => {\n instance.props.easing = newValue || defaultEasing;\n },\n duration: (instance, newValue) => {\n instance.props.lerpDuration = Math.max(0, parseFloatAttribute(newValue, defaultLerpDuration));\n },\n });\n\n static get observedAttributes(): Array {\n return [...AttributeLerp.attributeHandler.getAttributes()];\n }\n\n constructor() {\n super();\n }\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n return null;\n }\n\n public getAnimatedAttributeName(): string | null {\n return this.props.attr;\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n super.attributeChangedCallback(name, oldValue, newValue);\n AttributeLerp.attributeHandler.handle(this, name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n if (this.parentElement && this.parentElement instanceof MElement) {\n this.registeredParentAttachment = this.parentElement;\n this.registeredParentAttachment.addSideEffectChild(this);\n }\n }\n\n disconnectedCallback() {\n if (this.registeredParentAttachment) {\n this.registeredParentAttachment.removeSideEffectChild(this);\n }\n this.registeredParentAttachment = null;\n super.disconnectedCallback();\n }\n\n public getColorValueForTime(\n windowTime: number,\n elementValueSetTime: number,\n elementValue: MMLColor,\n previousValue: MMLColor,\n ) {\n const ratio = this.getLerpRatio(windowTime, elementValueSetTime);\n if (ratio >= 1) {\n return elementValue;\n }\n return lerpHSL(previousValue, elementValue, ratio);\n }\n\n public getFloatValueForTime(\n windowTime: number,\n elementValueSetTime: number,\n elementValue: number,\n previousValue: number,\n ) {\n const from = previousValue;\n const to = elementValue;\n const ratio = this.getLerpRatio(windowTime, elementValueSetTime);\n if (ratio >= 1) {\n return to;\n }\n return from + (to - from) * ratio;\n }\n\n private getLerpRatio(windowTime: number, elementValueSetTime: number) {\n const duration = this.props.lerpDuration;\n const timePassed = (windowTime || 0) - elementValueSetTime;\n const ratioOfTimePassed = Math.min(timePassed / duration, 1);\n const easing = this.props.easing;\n let ratio;\n const easingFunction = easingsByName[easing];\n if (easingFunction) {\n ratio = easingFunction(ratioOfTimePassed, 0, 1, 1);\n } else {\n ratio = ratioOfTimePassed;\n }\n return ratio;\n }\n}\n", "import { MMLColor } from \"../color\";\nimport { AnimationType, AttributeAnimation } from \"../elements/AttributeAnimation\";\nimport { AttributeLerp } from \"../elements/AttributeLerp\";\nimport { MElement } from \"../elements/MElement\";\nimport { GraphicsAdapter } from \"../graphics\";\n\ntype AttributeTuple = T extends AnimationType.Number\n ? [\n AnimationType.Number,\n AnimationTypeToValueType | null,\n (newValue: AnimationTypeToValueType | null) => void,\n ]\n : [\n AnimationType.Color,\n AnimationTypeToValueType | null,\n (newValue: AnimationTypeToValueType | null) => void,\n ];\n\nexport type AttributeHandlerRecord = Record<\n string,\n AttributeTuple | AttributeTuple\n>;\n\ntype AnimationTypeToValueType = T extends AnimationType.Number\n ? number\n : MMLColor;\n\ntype AttributeState = {\n type: T;\n previousValue: AnimationTypeToValueType | null;\n elementValue: AnimationTypeToValueType | null;\n elementValueSetTime: number | null;\n latestValue: AnimationTypeToValueType | null;\n defaultValue: AnimationTypeToValueType | null;\n handler: (newValue: AnimationTypeToValueType | null) => void;\n};\n\ntype AnimationStateRecord = {\n attributeState: AttributeState;\n animationsInOrder: Array>;\n animationsSet: Set>;\n lerpsInOrder: Array>;\n lerpsSet: Set>;\n};\n\nfunction TupleToState(tuple: AttributeTuple): AttributeState {\n return {\n previousValue: null,\n elementValue: null,\n elementValueSetTime: null,\n type: tuple[0],\n latestValue: tuple[1],\n defaultValue: tuple[1],\n handler: tuple[2],\n } as AttributeState;\n}\n\nfunction updateIfChangedValue(\n state: AnimationStateRecord,\n newValue: AnimationTypeToValueType | null,\n) {\n if (newValue === null) {\n // There is no value from the source (likely there are no animations and no attribute value), so use the default.\n newValue = state.attributeState.defaultValue;\n }\n if (state.attributeState.latestValue !== newValue) {\n state.attributeState.latestValue = newValue;\n state.attributeState.handler(newValue);\n }\n}\n\nfunction isColorAttribute(\n attributeState: AttributeState,\n): attributeState is AttributeState {\n return attributeState.type === AnimationType.Color;\n}\n\nfunction isNumberAttribute(\n attributeState: AttributeState,\n): attributeState is AttributeState {\n return attributeState.type === AnimationType.Number;\n}\n\n/**\n * The AnimatedAttributeHelper is a utility class that manages the application of attribute animations to an element.\n *\n * It is used by an MElement that has animateable attributes and is responsible for applying the animations to the\n * element according to the precedence rules defined in the AttributeAnimation class, and falling back to the element's\n * attribute value if no animations are active.\n */\nexport class AnimatedAttributeHelper {\n private stateByAttribute: {\n [p: string]: AnimationStateRecord;\n } = {};\n\n private allAnimations: Set> = new Set();\n private allLerps: Set> = new Set();\n\n private documentTimeTickListener: null | { remove: () => void } = null;\n\n // Track if this helper has ticked at least once.\n private hasTicked = false;\n\n constructor(\n private element: MElement,\n private handlers: AttributeHandlerRecord,\n ) {\n this.element = element;\n this.reset();\n }\n\n public addSideEffectChild(child: MElement): void {\n if (child instanceof AttributeAnimation) {\n const attr = child.getAnimatedAttributeName();\n if (attr) {\n this.addAnimation(child, attr);\n }\n } else if (child instanceof AttributeLerp) {\n const attr = child.getAnimatedAttributeName();\n if (attr) {\n this.addLerp(child, attr);\n }\n }\n }\n\n public removeSideEffectChild(child: MElement): void {\n if (child instanceof AttributeAnimation) {\n const attr = child.getAnimatedAttributeName();\n if (attr) {\n this.removeAnimation(child, attr);\n }\n } else if (child instanceof AttributeLerp) {\n const attr = child.getAnimatedAttributeName();\n if (attr) {\n this.removeLerp(child, attr);\n }\n }\n }\n\n public elementSetAttribute(\n key: string,\n newValue: AnimationTypeToValueType | null,\n ) {\n const state = this.stateByAttribute[key] as AnimationStateRecord;\n if (!state) {\n return;\n }\n state.attributeState.elementValue = newValue;\n if (this.hasTicked) {\n state.attributeState.previousValue = state.attributeState.latestValue;\n } else {\n // If the element has not ticked yet, set the previous value to the new value to avoid lerping from the default value.\n state.attributeState.previousValue = newValue;\n }\n\n if (this.element.isConnected) {\n state.attributeState.elementValueSetTime = this.element.getWindowTime();\n } else {\n state.attributeState.elementValueSetTime = null;\n }\n if (state.animationsSet.size > 0 || state.lerpsSet.size > 0) {\n return;\n }\n updateIfChangedValue(state, newValue);\n }\n\n public getAttributesForAttributeValue(attr: string): Array {\n // attr is in the format \"some-attr, another-attr\" or \"all\". Only return attributes that exist\n if (attr === \"all\") {\n return Object.keys(this.stateByAttribute);\n }\n return attr\n .split(\",\")\n .map((a) => a.trim())\n .filter((a) => this.stateByAttribute[a]);\n }\n\n public addLerp(lerp: AttributeLerp, attributeValue: string) {\n const attributes = this.getAttributesForAttributeValue(attributeValue);\n for (const key of attributes) {\n const state = this.stateByAttribute[key];\n if (!state) {\n return;\n }\n if (state.animationsSet.size === 0 && state.lerpsSet.size === 0) {\n // start listening to document time\n this.documentTimeTickListener = this.element.addDocumentTimeTickListener((documentTime) => {\n this.updateTime(documentTime);\n });\n }\n this.allLerps.add(lerp);\n state.lerpsSet.add(lerp);\n state.lerpsInOrder = [];\n const elementChildren = Array.from(this.element.children);\n for (const child of elementChildren) {\n if (state.lerpsSet.has(child as AttributeLerp)) {\n state.lerpsInOrder.push(child as AttributeLerp);\n }\n }\n }\n }\n\n public removeLerp(lerp: AttributeLerp, attributeValue: string) {\n const attributes = this.getAttributesForAttributeValue(attributeValue);\n for (const key of attributes) {\n const state = this.stateByAttribute[key];\n if (!state) {\n return;\n }\n state.lerpsInOrder.splice(state.lerpsInOrder.indexOf(lerp), 1);\n state.lerpsSet.delete(lerp);\n if (state.animationsSet.size === 0) {\n updateIfChangedValue(state, state.attributeState.elementValue);\n }\n this.allLerps.delete(lerp);\n if (this.allLerps.size === 0) {\n // stop listening to document time\n if (this.documentTimeTickListener) {\n this.documentTimeTickListener.remove();\n this.documentTimeTickListener = null;\n }\n }\n }\n }\n\n public addAnimation(animation: AttributeAnimation, key: string) {\n const state = this.stateByAttribute[key];\n if (!state) {\n return;\n }\n if (state.animationsSet.size === 0 && state.lerpsSet.size === 0) {\n // start listening to document time\n this.documentTimeTickListener = this.element.addDocumentTimeTickListener((documentTime) => {\n this.updateTime(documentTime);\n });\n }\n this.allAnimations.add(animation);\n state.animationsSet.add(animation);\n state.animationsInOrder = [];\n const elementChildren = Array.from(this.element.children);\n for (const child of elementChildren) {\n if (state.animationsSet.has(child as AttributeAnimation)) {\n state.animationsInOrder.push(child as AttributeAnimation);\n }\n }\n }\n\n public removeAnimation(animation: AttributeAnimation, key: string) {\n const state = this.stateByAttribute[key];\n if (!state) {\n return;\n }\n state.animationsInOrder.splice(state.animationsInOrder.indexOf(animation), 1);\n state.animationsSet.delete(animation);\n if (state.animationsSet.size === 0) {\n updateIfChangedValue(state, state.attributeState.elementValue);\n }\n this.allAnimations.delete(animation);\n if (this.allAnimations.size === 0) {\n // stop listening to document time\n if (this.documentTimeTickListener) {\n this.documentTimeTickListener.remove();\n this.documentTimeTickListener = null;\n }\n }\n }\n\n public updateTime(documentTime: number) {\n this.hasTicked = true;\n\n for (const key in this.stateByAttribute) {\n let stale: { value: number | MMLColor; state: number } | null = null;\n const state = this.stateByAttribute[key];\n for (const animation of state.animationsInOrder) {\n const [newValue, active] =\n state.attributeState.type === AnimationType.Color\n ? animation.getColorValueForTime(documentTime)\n : animation.getFloatValueForTime(documentTime);\n\n if (active === 0) {\n updateIfChangedValue(state, newValue);\n stale = null;\n break;\n } else {\n if (stale === null) {\n stale = { value: newValue, state: active };\n } else {\n const isAboutToStartRatherThanEnded = stale.state > 0 && active < 0;\n const isMoreRecentEnd = stale.state > 0 && active > 0 && stale.state > active;\n const isSoonerToStart = stale.state < 0 && active < 0 && stale.state < active;\n\n if (isAboutToStartRatherThanEnded || isMoreRecentEnd || isSoonerToStart) {\n stale = { value: newValue, state: active };\n }\n }\n }\n }\n\n if (stale !== null) {\n updateIfChangedValue(state, stale.value);\n continue;\n }\n\n if (state.lerpsInOrder.length > 0) {\n const lerp = state.lerpsInOrder[0];\n const config = state.attributeState;\n if (\n config.elementValueSetTime !== null &&\n config.previousValue !== null &&\n config.elementValue !== null\n ) {\n if (isColorAttribute(config)) {\n updateIfChangedValue(\n state,\n lerp.getColorValueForTime(\n this.element.getWindowTime(),\n config.elementValueSetTime,\n config.elementValue,\n config.previousValue,\n ),\n );\n } else if (isNumberAttribute(config)) {\n updateIfChangedValue(\n state,\n lerp.getFloatValueForTime(\n this.element.getWindowTime(),\n config.elementValueSetTime,\n config.elementValue,\n config.previousValue,\n ),\n );\n }\n }\n }\n }\n }\n\n reset() {\n for (const key in this.handlers) {\n const state = TupleToState(this.handlers[key]);\n this.stateByAttribute[key] = {\n attributeState: state,\n animationsInOrder: [],\n animationsSet: new Set(),\n lerpsInOrder: [],\n lerpsSet: new Set(),\n };\n }\n }\n}\n", "/* ============================================================\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\n *\n * Open source under the BSD License.\n *\n * Copyright \u00A9 2008 George McGinley Smith\n * All rights reserved.\n * https://raw.github.com/danro/jquery-easing/master/LICENSE\n * ======================================================== */\n\nexport const easingFunctions = {\n easeInQuad(t: number, b: number, c: number, d: number): number {\n return c * (t /= d) * t + b;\n },\n easeOutQuad(t: number, b: number, c: number, d: number): number {\n return -c * (t /= d) * (t - 2) + b;\n },\n easeInOutQuad(t: number, b: number, c: number, d: number): number {\n if ((t /= d / 2) < 1) return (c / 2) * t * t + b;\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n easeInCubic(t: number, b: number, c: number, d: number): number {\n return c * (t /= d) * t * t + b;\n },\n easeOutCubic(t: number, b: number, c: number, d: number): number {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n },\n easeInOutCubic(t: number, b: number, c: number, d: number): number {\n if ((t /= d / 2) < 1) return (c / 2) * t * t * t + b;\n return (c / 2) * ((t -= 2) * t * t + 2) + b;\n },\n easeInQuart(t: number, b: number, c: number, d: number): number {\n return c * (t /= d) * t * t * t + b;\n },\n easeOutQuart(t: number, b: number, c: number, d: number): number {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n },\n easeInOutQuart(t: number, b: number, c: number, d: number): number {\n if ((t /= d / 2) < 1) return (c / 2) * t * t * t * t + b;\n return (-c / 2) * ((t -= 2) * t * t * t - 2) + b;\n },\n easeInQuint(t: number, b: number, c: number, d: number): number {\n return c * (t /= d) * t * t * t * t + b;\n },\n easeOutQuint(t: number, b: number, c: number, d: number): number {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n easeInOutQuint(t: number, b: number, c: number, d: number): number {\n if ((t /= d / 2) < 1) return (c / 2) * t * t * t * t * t + b;\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n easeInSine(t: number, b: number, c: number, d: number): number {\n return -c * Math.cos((t / d) * (Math.PI / 2)) + c + b;\n },\n easeOutSine(t: number, b: number, c: number, d: number): number {\n return c * Math.sin((t / d) * (Math.PI / 2)) + b;\n },\n easeInOutSine(t: number, b: number, c: number, d: number): number {\n return (-c / 2) * (Math.cos((Math.PI * t) / d) - 1) + b;\n },\n easeInExpo(t: number, b: number, c: number, d: number): number {\n return t === 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;\n },\n easeOutExpo(t: number, b: number, c: number, d: number): number {\n return t === d ? b + c : c * (-Math.pow(2, (-10 * t) / d) + 1) + b;\n },\n easeInOutExpo(t: number, b: number, c: number, d: number): number {\n if (t === 0) return b;\n if (t === d) return b + c;\n if ((t /= d / 2) < 1) return (c / 2) * Math.pow(2, 10 * (t - 1)) + b;\n return (c / 2) * (-Math.pow(2, -10 * --t) + 2) + b;\n },\n easeInCirc(t: number, b: number, c: number, d: number): number {\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n },\n easeOutCirc(t: number, b: number, c: number, d: number): number {\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n },\n easeInOutCirc(t: number, b: number, c: number, d: number): number {\n if ((t /= d / 2) < 1) return (-c / 2) * (Math.sqrt(1 - t * t) - 1) + b;\n return (c / 2) * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n },\n easeInElastic(t: number, b: number, c: number, d: number): number {\n let s = 1.70158;\n let p = 0;\n let a = c;\n if (t === 0) return b;\n if ((t /= d) === 1) return b + c;\n if (!p) p = d * 0.3;\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b;\n },\n easeOutElastic(t: number, b: number, c: number, d: number): number {\n let s = 1.70158;\n let p = 0;\n let a = c;\n if (t === 0) return b;\n if ((t /= d) === 1) return b + c;\n if (!p) p = d * 0.3;\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) + c + b;\n },\n easeInOutElastic(t: number, b: number, c: number, d: number): number {\n let s = 1.70158;\n let p = 0;\n let a = c;\n if (t === 0) return b;\n if ((t /= d / 2) === 2) return b + c;\n if (!p) p = d * (0.3 * 1.5);\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1)\n return (\n -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b\n );\n return (\n a * Math.pow(2, -10 * (t -= 1)) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) * 0.5 + c + b\n );\n },\n easeInBack(t: number, b: number, c: number, d: number) {\n const s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n easeOutBack(t: number, b: number, c: number, d: number) {\n const s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n easeInOutBack(t: number, b: number, c: number, d: number) {\n let s = 1.70158;\n if ((t /= d / 2) < 1) return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n easeInBounce(t: number, b: number, c: number, d: number): number {\n return c - easingFunctions.easeOutBounce(d - t, 0, c, d) + b;\n },\n easeOutBounce(t: number, b: number, c: number, d: number): number {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n } else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n } else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n } else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n easeInOutBounce(t: number, b: number, c: number, d: number): number {\n if (t < d / 2) return easingFunctions.easeInBounce(t * 2, 0, c, d) * 0.5 + b;\n return easingFunctions.easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n },\n};\n/*\n *\n * TERMS OF USE - EASING EQUATIONS\n *\n * Open source under the BSD License.\n *\n * Copyright \u00A9 2001 Robert Penner\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n */\n", "import { easingFunctions } from \"./easingFunctions\";\n\nexport const easingsByName: Record<\n string,\n (amount: number, base: number, change: number, duration: number) => number\n> = easingFunctions;\n", "import { easingsByName } from \"./easings\";\n\nexport const StartOfAnimationSymbol = Symbol(\"Start\");\nexport const EndOfAnimationSymbol = Symbol(\"End\");\n\n// Returns [current ratio | start | end symbols, state (negative if before start, zero if running, positive if after end)]\nexport function getEasedRatioForTime(\n docTimeMs: number,\n props: {\n startTime: number;\n pauseTime: number | null;\n animDuration: number;\n loop: boolean;\n pingPong: boolean;\n pingPongDelay: number;\n easing: string;\n },\n): [typeof StartOfAnimationSymbol | number | typeof EndOfAnimationSymbol, number] {\n if (props.pauseTime !== null && docTimeMs >= props.pauseTime) {\n docTimeMs = props.pauseTime;\n }\n let elapsedTime = docTimeMs - props.startTime;\n if (elapsedTime < 0) {\n return [StartOfAnimationSymbol, elapsedTime];\n } else if (elapsedTime < props.animDuration || props.loop) {\n if (props.loop) {\n elapsedTime = elapsedTime % props.animDuration;\n }\n let elapsedRatio = elapsedTime / props.animDuration;\n if (props.pingPong) {\n let pingPongDelayRatio = props.pingPongDelay / props.animDuration;\n if (pingPongDelayRatio < 0) {\n pingPongDelayRatio = 0;\n }\n if (pingPongDelayRatio > 0.5) {\n pingPongDelayRatio = 0.5;\n }\n\n /*\n ping-pong-delay describes how long the animation should stay at the start and end values.\n The attribute describes the delay at each end - therefore a ping-pong-delay of 1000 on a duration of 10000 means\n that the animation should stay at the start value for 500ms, then animate to the end value up until 4500ms,\n before waiting for 1000ms at the end value, and then animating back to the start value until 9500ms\n */\n\n if (elapsedRatio < pingPongDelayRatio / 2) {\n elapsedRatio = 0;\n } else if (\n elapsedRatio > 0.5 - pingPongDelayRatio / 2 &&\n elapsedRatio < 0.5 + pingPongDelayRatio / 2\n ) {\n elapsedRatio = 1;\n } else if (elapsedRatio > 1 - pingPongDelayRatio / 2) {\n elapsedRatio = 0;\n } else {\n // The loop should reach the end value at half the time and then return\n // to the start value at the end of the loop.\n if (elapsedRatio > 0.5) {\n elapsedRatio =\n ((elapsedRatio - 0.5 - pingPongDelayRatio / 2) * 2) / (1 - pingPongDelayRatio * 2);\n elapsedRatio = 1 - elapsedRatio;\n } else {\n elapsedRatio =\n ((elapsedRatio - pingPongDelayRatio / 2) * 2) / (1 - pingPongDelayRatio * 2);\n }\n }\n }\n let newValue;\n const easingFunction = easingsByName[props.easing];\n if (easingFunction) {\n newValue = easingFunction(elapsedRatio, 0, 1, 1);\n } else {\n newValue = elapsedRatio;\n }\n return [newValue, 0];\n } else {\n if (props.pingPong) {\n // ping-pong animations return to the start value at the end of their duration so the \"final\" state should be the start value.\n return [StartOfAnimationSymbol, elapsedTime - props.animDuration];\n }\n return [EndOfAnimationSymbol, elapsedTime - props.animDuration];\n }\n}\n", "// Largely based on https://github.com/mrdoob/three.js/blob/master/src/math/Quaternion.js\n\nimport { Matr4 } from \"./Matr4\";\n\nexport class Quat {\n public x: number;\n public y: number;\n public z: number;\n public w: number;\n\n constructor(x?: number | Quat, y?: number, z?: number, w?: number) {\n if (x instanceof Quat) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n this.w = x.w;\n return;\n }\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n this.w = w || 1;\n }\n\n copy(other: { x?: number; y?: number; z?: number; w?: number }): this {\n this.x = other.x || 0;\n this.y = other.y || 0;\n this.z = other.z || 0;\n this.w = other.w || 0;\n return this;\n }\n\n multiply(q: { x: number; y: number; z: number; w: number }): this {\n return this.multiplyQuaternions(this, q);\n }\n\n premultiply(q: { x: number; y: number; z: number; w: number }): this {\n return this.multiplyQuaternions(q, this);\n }\n\n multiplyQuaternions(\n a: { x: number; y: number; z: number; w: number },\n b: { x: number; y: number; z: number; w: number },\n ): this {\n const qax = a.x;\n const qay = a.y;\n const qaz = a.z;\n const qaw = a.w;\n const qbx = b.x;\n const qby = b.y;\n const qbz = b.z;\n const qbw = b.w;\n\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n return this;\n }\n\n setFromEulerXYZ(euler: { x: number; y: number; z: number }): this {\n const x = euler.x;\n const y = euler.y;\n const z = euler.z;\n\n const cos = Math.cos;\n const sin = Math.sin;\n\n const c1 = cos(x / 2);\n const c2 = cos(y / 2);\n const c3 = cos(z / 2);\n\n const s1 = sin(x / 2);\n const s2 = sin(y / 2);\n const s3 = sin(z / 2);\n\n this.x = s1 * c2 * c3 + c1 * s2 * s3;\n this.y = c1 * s2 * c3 - s1 * c2 * s3;\n this.z = c1 * c2 * s3 + s1 * s2 * c3;\n this.w = c1 * c2 * c3 - s1 * s2 * s3;\n\n return this;\n }\n\n setFromRotationMatrix(m: Matr4): this {\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n const te = m.data,\n m11 = te[0],\n m12 = te[4],\n m13 = te[8],\n m21 = te[1],\n m22 = te[5],\n m23 = te[9],\n m31 = te[2],\n m32 = te[6],\n m33 = te[10],\n trace = m11 + m22 + m33;\n\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1.0);\n\n this.w = 0.25 / s;\n this.x = (m32 - m23) * s;\n this.y = (m13 - m31) * s;\n this.z = (m21 - m12) * s;\n } else if (m11 > m22 && m11 > m33) {\n const s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n\n this.w = (m32 - m23) / s;\n this.x = 0.25 * s;\n this.y = (m12 + m21) / s;\n this.z = (m13 + m31) / s;\n } else if (m22 > m33) {\n const s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n\n this.w = (m13 - m31) / s;\n this.x = (m12 + m21) / s;\n this.y = 0.25 * s;\n this.z = (m23 + m32) / s;\n } else {\n const s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n\n this.w = (m21 - m12) / s;\n this.x = (m13 + m31) / s;\n this.y = (m23 + m32) / s;\n this.z = 0.25 * s;\n }\n\n return this;\n }\n\n setFromAxisAngle(axis: { x: number; y: number; z: number }, angle: number): this {\n // assumes axis is normalized\n\n const halfAngle = angle / 2;\n const s = Math.sin(halfAngle);\n\n this.x = axis.x * s;\n this.y = axis.y * s;\n this.z = axis.z * s;\n this.w = Math.cos(halfAngle);\n\n return this;\n }\n\n clone(): Quat {\n return new Quat(this);\n }\n\n set(x: number, y: number, z: number, w: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n}\n", "import { Matr4Data } from \"./Matr4\";\n\nexport type IVect3 = { x: number; y: number; z: number };\n\nexport class Vect3 {\n public x: number;\n public y: number;\n public z: number;\n\n constructor(x?: number | IVect3, y?: number, z?: number) {\n if (x && typeof x === \"object\") {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n return;\n }\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n }\n\n copy(other: IVect3): this {\n this.x = other.x || 0;\n this.y = other.y || 0;\n this.z = other.z || 0;\n return this;\n }\n\n length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n\n lengthSquared(): number {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n }\n\n clone(): Vect3 {\n return new Vect3(this);\n }\n\n set(x: number, y: number, z: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n\n applyMatrix4(matrix: { data: Matr4Data }): this {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n const e = matrix.data;\n\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n\n return this;\n }\n\n add(other: IVect3) {\n this.x += other.x || 0;\n this.y += other.y || 0;\n this.z += other.z || 0;\n return this;\n }\n\n sub(other: IVect3) {\n this.x -= other.x || 0;\n this.y -= other.y || 0;\n this.z -= other.z || 0;\n return this;\n }\n}\n", "// Largely based on https://github.com/mrdoob/three.js/blob/master/src/math/Matrix4.js\nimport { Quat } from \"./Quat\";\nimport { Vect3 } from \"./Vect3\";\n\nconst Vect3Zeroes = { x: 0, y: 0, z: 0 };\nconst Vect3Ones = { x: 1, y: 1, z: 1 };\n\nexport type Matr4Data = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\nexport class Matr4 {\n static tempMatr4 = new Matr4();\n static tempVect3 = new Vect3();\n static tempQuat = new Quat();\n\n public data: Matr4Data;\n\n constructor(data?: Matr4Data | Matr4 | Float32Array) {\n if (data instanceof Matr4) {\n this.data = [...data.data];\n } else if (data instanceof Array) {\n this.data = [...data];\n } else if (data instanceof Float32Array) {\n this.data = [...data] as Matr4Data;\n } else {\n this.data = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n }\n }\n\n identity(): this {\n this.data = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n return this;\n }\n\n copy(m: Matr4): Matr4 {\n this.data = [...m.data];\n return this;\n }\n\n set(...args: Matr4Data | [Matr4Data]): this {\n if (args[0] instanceof Array) {\n this.data = args[0];\n } else {\n this.data = args as Matr4Data;\n }\n return this;\n }\n\n public setRotationFromQuaternion(q: { x: number; y: number; z: number; w: number }): this {\n return this.compose(Vect3Zeroes, q, Vect3Ones);\n }\n\n clone(): Matr4 {\n return new Matr4(this.data);\n }\n\n determinant(): number {\n const te = this.data;\n\n const n11 = te[0],\n n12 = te[4],\n n13 = te[8],\n n14 = te[12];\n const n21 = te[1],\n n22 = te[5],\n n23 = te[9],\n n24 = te[13];\n const n31 = te[2],\n n32 = te[6],\n n33 = te[10],\n n34 = te[14];\n const n41 = te[3],\n n42 = te[7],\n n43 = te[11],\n n44 = te[15];\n\n return (\n n41 *\n (+n14 * n23 * n32 -\n n13 * n24 * n32 -\n n14 * n22 * n33 +\n n12 * n24 * n33 +\n n13 * n22 * n34 -\n n12 * n23 * n34) +\n n42 *\n (+n11 * n23 * n34 -\n n11 * n24 * n33 +\n n14 * n21 * n33 -\n n13 * n21 * n34 +\n n13 * n24 * n31 -\n n14 * n23 * n31) +\n n43 *\n (+n11 * n24 * n32 -\n n11 * n22 * n34 -\n n14 * n21 * n32 +\n n12 * n21 * n34 +\n n14 * n22 * n31 -\n n12 * n24 * n31) +\n n44 *\n (-n13 * n22 * n31 -\n n11 * n23 * n32 +\n n11 * n22 * n33 +\n n13 * n21 * n32 -\n n12 * n21 * n33 +\n n12 * n23 * n31)\n );\n }\n\n makeRotationX(theta: number) {\n const c = Math.cos(theta),\n s = Math.sin(theta);\n\n this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1);\n\n return this;\n }\n\n makeRotationY(theta: number) {\n const c = Math.cos(theta),\n s = Math.sin(theta);\n\n this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1);\n\n return this;\n }\n\n makeRotationZ(theta: number) {\n const c = Math.cos(theta),\n s = Math.sin(theta);\n\n this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n return this;\n }\n\n makeTranslation(x: number, y: number, z: number) {\n this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);\n return this;\n }\n\n makeScale(x: number, y: number, z: number) {\n this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n return this;\n }\n\n compose(\n position: { x: number; y: number; z: number },\n quaternion: { x: number; y: number; z: number; w: number },\n scale: { x: number; y: number; z: number },\n ): this {\n const te = this.data;\n\n const x = quaternion.x,\n y = quaternion.y,\n z = quaternion.z,\n w = quaternion.w;\n const x2 = x + x,\n y2 = y + y,\n z2 = z + z;\n const xx = x * x2,\n xy = x * y2,\n xz = x * z2;\n const yy = y * y2,\n yz = y * z2,\n zz = z * z2;\n const wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n const sx = scale.x,\n sy = scale.y,\n sz = scale.z;\n\n te[0] = (1 - (yy + zz)) * sx;\n te[1] = (xy + wz) * sx;\n te[2] = (xz - wy) * sx;\n te[3] = 0;\n\n te[4] = (xy - wz) * sy;\n te[5] = (1 - (xx + zz)) * sy;\n te[6] = (yz + wx) * sy;\n te[7] = 0;\n\n te[8] = (xz + wy) * sz;\n te[9] = (yz - wx) * sz;\n te[10] = (1 - (xx + yy)) * sz;\n te[11] = 0;\n\n te[12] = position.x;\n te[13] = position.y;\n te[14] = position.z;\n te[15] = 1;\n\n return this;\n }\n\n decompose(\n position: { x: number; y: number; z: number },\n quaternion: { x: number; y: number; z: number; w: number },\n scale: { x: number; y: number; z: number },\n ): this {\n const te = this.data;\n\n const _v1 = Matr4.tempVect3;\n let sx = _v1.set(te[0], te[1], te[2]).length();\n const sy = _v1.set(te[4], te[5], te[6]).length();\n const sz = _v1.set(te[8], te[9], te[10]).length();\n\n // if determine is negative, we need to invert one scale\n const det = this.determinant();\n if (det < 0) sx = -sx;\n\n position.x = te[12];\n position.y = te[13];\n position.z = te[14];\n\n // scale the rotation part\n const _m1 = Matr4.tempMatr4;\n _m1.copy(this);\n\n const invSX = 1 / sx;\n const invSY = 1 / sy;\n const invSZ = 1 / sz;\n\n _m1.data[0] *= invSX;\n _m1.data[1] *= invSX;\n _m1.data[2] *= invSX;\n\n _m1.data[4] *= invSY;\n _m1.data[5] *= invSY;\n _m1.data[6] *= invSY;\n\n _m1.data[8] *= invSZ;\n _m1.data[9] *= invSZ;\n _m1.data[10] *= invSZ;\n\n const _q1 = Matr4.tempQuat;\n _q1.setFromRotationMatrix(_m1);\n\n quaternion.x = _q1.x;\n quaternion.y = _q1.y;\n quaternion.z = _q1.z;\n quaternion.w = _q1.w;\n\n scale.x = sx;\n scale.y = sy;\n scale.z = sz;\n\n return this;\n }\n\n multiply(m: Matr4): this {\n return this.multiplyMatrices(this, m);\n }\n\n premultiply(m: Matr4): this {\n return this.multiplyMatrices(m, this);\n }\n\n multiplyMatrices(a: Matr4, b: Matr4): this {\n const ae = a.data;\n const be = b.data;\n const te = this.data;\n\n const a11 = ae[0],\n a12 = ae[4],\n a13 = ae[8],\n a14 = ae[12];\n const a21 = ae[1],\n a22 = ae[5],\n a23 = ae[9],\n a24 = ae[13];\n const a31 = ae[2],\n a32 = ae[6],\n a33 = ae[10],\n a34 = ae[14];\n const a41 = ae[3],\n a42 = ae[7],\n a43 = ae[11],\n a44 = ae[15];\n\n const b11 = be[0],\n b12 = be[4],\n b13 = be[8],\n b14 = be[12];\n const b21 = be[1],\n b22 = be[5],\n b23 = be[9],\n b24 = be[13];\n const b31 = be[2],\n b32 = be[6],\n b33 = be[10],\n b34 = be[14];\n const b41 = be[3],\n b42 = be[7],\n b43 = be[11],\n b44 = be[15];\n\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n return this;\n }\n\n invert(): this {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n const te = this.data,\n n11 = te[0],\n n21 = te[1],\n n31 = te[2],\n n41 = te[3],\n n12 = te[4],\n n22 = te[5],\n n32 = te[6],\n n42 = te[7],\n n13 = te[8],\n n23 = te[9],\n n33 = te[10],\n n43 = te[11],\n n14 = te[12],\n n24 = te[13],\n n34 = te[14],\n n44 = te[15],\n t11 =\n n23 * n34 * n42 -\n n24 * n33 * n42 +\n n24 * n32 * n43 -\n n22 * n34 * n43 -\n n23 * n32 * n44 +\n n22 * n33 * n44,\n t12 =\n n14 * n33 * n42 -\n n13 * n34 * n42 -\n n14 * n32 * n43 +\n n12 * n34 * n43 +\n n13 * n32 * n44 -\n n12 * n33 * n44,\n t13 =\n n13 * n24 * n42 -\n n14 * n23 * n42 +\n n14 * n22 * n43 -\n n12 * n24 * n43 -\n n13 * n22 * n44 +\n n12 * n23 * n44,\n t14 =\n n14 * n23 * n32 -\n n13 * n24 * n32 -\n n14 * n22 * n33 +\n n12 * n24 * n33 +\n n13 * n22 * n34 -\n n12 * n23 * n34;\n\n const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n\n const detInv = 1 / det;\n\n te[0] = t11 * detInv;\n te[1] =\n (n24 * n33 * n41 -\n n23 * n34 * n41 -\n n24 * n31 * n43 +\n n21 * n34 * n43 +\n n23 * n31 * n44 -\n n21 * n33 * n44) *\n detInv;\n te[2] =\n (n22 * n34 * n41 -\n n24 * n32 * n41 +\n n24 * n31 * n42 -\n n21 * n34 * n42 -\n n22 * n31 * n44 +\n n21 * n32 * n44) *\n detInv;\n te[3] =\n (n23 * n32 * n41 -\n n22 * n33 * n41 -\n n23 * n31 * n42 +\n n21 * n33 * n42 +\n n22 * n31 * n43 -\n n21 * n32 * n43) *\n detInv;\n\n te[4] = t12 * detInv;\n te[5] =\n (n13 * n34 * n41 -\n n14 * n33 * n41 +\n n14 * n31 * n43 -\n n11 * n34 * n43 -\n n13 * n31 * n44 +\n n11 * n33 * n44) *\n detInv;\n te[6] =\n (n14 * n32 * n41 -\n n12 * n34 * n41 -\n n14 * n31 * n42 +\n n11 * n34 * n42 +\n n12 * n31 * n44 -\n n11 * n32 * n44) *\n detInv;\n te[7] =\n (n12 * n33 * n41 -\n n13 * n32 * n41 +\n n13 * n31 * n42 -\n n11 * n33 * n42 -\n n12 * n31 * n43 +\n n11 * n32 * n43) *\n detInv;\n\n te[8] = t13 * detInv;\n te[9] =\n (n14 * n23 * n41 -\n n13 * n24 * n41 -\n n14 * n21 * n43 +\n n11 * n24 * n43 +\n n13 * n21 * n44 -\n n11 * n23 * n44) *\n detInv;\n te[10] =\n (n12 * n24 * n41 -\n n14 * n22 * n41 +\n n14 * n21 * n42 -\n n11 * n24 * n42 -\n n12 * n21 * n44 +\n n11 * n22 * n44) *\n detInv;\n te[11] =\n (n13 * n22 * n41 -\n n12 * n23 * n41 -\n n13 * n21 * n42 +\n n11 * n23 * n42 +\n n12 * n21 * n43 -\n n11 * n22 * n43) *\n detInv;\n\n te[12] = t14 * detInv;\n te[13] =\n (n13 * n24 * n31 -\n n14 * n23 * n31 +\n n14 * n21 * n33 -\n n11 * n24 * n33 -\n n13 * n21 * n34 +\n n11 * n23 * n34) *\n detInv;\n te[14] =\n (n14 * n22 * n31 -\n n12 * n24 * n31 -\n n14 * n21 * n32 +\n n11 * n24 * n32 +\n n12 * n21 * n34 -\n n11 * n22 * n34) *\n detInv;\n te[15] =\n (n12 * n23 * n31 -\n n13 * n22 * n31 +\n n13 * n21 * n32 -\n n11 * n23 * n32 -\n n12 * n21 * n33 +\n n11 * n22 * n33) *\n detInv;\n\n return this;\n }\n}\n", "import { Matr4 } from \"../math/Matr4\";\nimport { IVect3, Vect3 } from \"../math/Vect3\";\n\n// Amount to tolerate on bounds (to avoid floating point errors)\nconst epsilon = 0.0001;\n\nconst matrix1 = new Matr4();\nconst vector1 = new Vect3();\n\nexport class OrientedBoundingBox {\n private constructor(\n public size: IVect3,\n public matr4: Matr4,\n public centerOffset: IVect3 | null = null,\n ) {}\n\n static fromSizeAndMatrixWorld(size: Vect3, matr4: Matr4): OrientedBoundingBox {\n return new OrientedBoundingBox(size, matr4);\n }\n\n static fromSizeMatrixWorldAndCenter(\n size: IVect3,\n matr4: Matr4,\n centerOffset: IVect3,\n ): OrientedBoundingBox {\n return new OrientedBoundingBox(size, matr4, centerOffset);\n }\n\n static fromMatrixWorld(matr4: Matr4): OrientedBoundingBox {\n return new OrientedBoundingBox(new Vect3(), matr4);\n }\n\n public getCorners(): Vect3[] {\n const corners: Vect3[] = [];\n for (let x = -1; x <= 1; x += 2) {\n for (let y = -1; y <= 1; y += 2) {\n for (let z = -1; z <= 1; z += 2) {\n const point = vector1.set(\n x * (this.size.x / 2),\n y * (this.size.y / 2),\n z * (this.size.z / 2),\n );\n\n if (this.centerOffset !== null) {\n point.add(this.centerOffset);\n }\n\n point.applyMatrix4(this.matr4);\n corners.push(point.clone());\n }\n }\n }\n return corners;\n }\n\n public completelyContainsBoundingBox(childOBB: OrientedBoundingBox): boolean {\n const invertedMatrix = matrix1.copy(this.matr4).invert();\n\n for (let x = -1; x <= 1; x += 2) {\n for (let y = -1; y <= 1; y += 2) {\n for (let z = -1; z <= 1; z += 2) {\n const point = vector1.set(\n x * (childOBB.size.x / 2),\n y * (childOBB.size.y / 2),\n z * (childOBB.size.z / 2),\n );\n\n if (childOBB.centerOffset !== null) {\n point.add(childOBB.centerOffset);\n }\n\n point.applyMatrix4(childOBB.matr4);\n\n const localPoint = point.applyMatrix4(invertedMatrix);\n if (this.centerOffset !== null) {\n localPoint.sub(this.centerOffset);\n }\n const isWithin =\n Math.abs(localPoint.x) <= this.size.x / 2 + epsilon &&\n Math.abs(localPoint.y) <= this.size.y / 2 + epsilon &&\n Math.abs(localPoint.z) <= this.size.z / 2 + epsilon;\n\n if (!isWithin) {\n return false;\n }\n }\n }\n }\n\n return true;\n }\n\n public containsPoint(point: { x: number; y: number; z: number }): boolean {\n const invertedMatrix = matrix1.copy(this.matr4).invert();\n\n const localPoint = vector1.copy(point).applyMatrix4(invertedMatrix);\n if (this.centerOffset !== null) {\n localPoint.sub(this.centerOffset);\n }\n return (\n Math.abs(localPoint.x) <= this.size.x / 2 + epsilon &&\n Math.abs(localPoint.y) <= this.size.y / 2 + epsilon &&\n Math.abs(localPoint.z) <= this.size.z / 2 + epsilon\n );\n }\n}\n", "export type RGBA = {\n r: number;\n g: number;\n b: number;\n a: number;\n};\n\nexport type CanvasTextOptions = {\n fontSize: number;\n textColorRGB255A1: RGBA;\n backgroundColorRGB255A1?: RGBA;\n font?: string;\n bold?: boolean;\n paddingPx?: number;\n alignment?: string;\n dimensions?: {\n width: number;\n height: number;\n };\n};\n\nexport class CanvasText {\n private canvas: HTMLCanvasElement;\n private context: CanvasRenderingContext2D;\n\n constructor() {\n this.canvas = document.createElement(\"canvas\");\n this.context = this.canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n }\n\n public renderText(message: string, options: CanvasTextOptions): HTMLCanvasElement {\n const fontsize = options.fontSize;\n const textColor = options.textColorRGB255A1;\n const backgroundColor = options.backgroundColorRGB255A1 || { r: 255, g: 255, b: 255, a: 1 };\n const padding = options.paddingPx || 0;\n const font = options.font || \"Arial\";\n const fontString = (options.bold ? \"bold \" : \"\") + fontsize + \"px \" + font;\n\n // calculate text alignment offset\n const textAlign = (options.alignment as CanvasTextAlign) ?? \"left\";\n\n if (options.dimensions) {\n // NOTE: setting the canvas dimensions resets the context properties, so\n // we always do it first\n this.canvas.width = options.dimensions.width;\n this.canvas.height = options.dimensions.height;\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.context.font = fontString;\n this.context.textAlign = textAlign;\n this.context.fillStyle = `rgba(${backgroundColor.r}, ${backgroundColor.g}, ${backgroundColor.b}, ${backgroundColor.a})`;\n this.context.lineWidth = 0;\n this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n this.context.fillStyle = `rgba(${textColor.r}, ${textColor.g}, ${textColor.b}, ${textColor.a})`;\n this.context.font = fontString;\n printAtWordWrap(\n this.context,\n message,\n textAlign,\n fontsize,\n fontsize,\n this.canvas.width,\n padding,\n );\n } else {\n // NOTE: setting the this.canvas dimensions resets the context properties, so\n // we always do it first. However, we also need to take into account the\n // font size to measure the text in the first place.\n this.context.font = fontString;\n const metrics = this.context.measureText(message);\n const textWidth = metrics.width;\n const textHeight = metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n this.canvas.width = textWidth + padding * 2;\n this.canvas.height = textHeight + padding;\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.context.font = fontString;\n this.context.textAlign = textAlign;\n this.context.fillStyle = `rgba(${backgroundColor.r}, ${backgroundColor.g}, ${backgroundColor.b}, ${backgroundColor.a})`;\n this.context.lineWidth = 0;\n this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n this.context.fillStyle = `rgba(${textColor.r}, ${textColor.g}, ${textColor.b}, ${textColor.a})`;\n this.context.font = fontString;\n this.context.fillText(\n message,\n padding + getTextAlignOffset(textAlign, textWidth),\n textHeight,\n );\n }\n\n return this.canvas;\n }\n}\n\nfunction printAtWordWrap(\n context: CanvasRenderingContext2D,\n fullText: string,\n textAlign: CanvasTextAlign,\n y: number,\n lineHeight: number,\n fitWidth: number,\n padding: number,\n) {\n const x = getTextAlignOffset(textAlign, fitWidth - padding * 2);\n const lines = fullText.split(\"\\n\");\n let currentLine = 0;\n for (const text of lines) {\n fitWidth = fitWidth || 0;\n\n if (fitWidth <= 0) {\n context.fillText(text, x, y + lineHeight * currentLine);\n currentLine++;\n continue;\n }\n let words = text.split(\" \");\n let lastWordIndex = 1;\n while (words.length > 0 && lastWordIndex <= words.length) {\n const str = words.slice(0, lastWordIndex).join(\" \");\n const textWidth = context.measureText(str).width;\n if (textWidth + padding * 2 > fitWidth) {\n if (lastWordIndex === 1) {\n lastWordIndex = 2;\n }\n context.fillText(\n words.slice(0, lastWordIndex - 1).join(\" \"),\n x + padding,\n y + lineHeight * currentLine + padding,\n );\n currentLine++;\n words = words.splice(lastWordIndex - 1);\n lastWordIndex = 1;\n } else {\n lastWordIndex++;\n }\n }\n if (lastWordIndex > 0 && words.length > 0) {\n context.fillText(words.join(\" \"), x + padding, y + lineHeight * currentLine + padding);\n currentLine++;\n }\n }\n}\n\nfunction getTextAlignOffset(textAlign: CanvasTextAlign, width: number) {\n switch (textAlign) {\n case \"center\":\n return width / 2;\n case \"right\":\n return width;\n default:\n return 0;\n }\n}\n", "import { AttributeHandler, parseBoolAttribute } from \"../attributes\";\nimport { MElement } from \"../elements\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { IMMLScene } from \"../scene\";\n\nconst collideAttributeName = \"collide\";\nconst collisionIntervalAttributeName = \"collision-interval\";\nconst defaultCollideable = true;\n\n/**\n * CollideableHelper is a helper class for MML elements that have meshes that should be able to be collided with.\n *\n * It reacts to the attribute values for the collide and collision-interval attributes and adds, updates, or removes the\n * collider from the MMLScene as appropriate.\n */\nexport class CollideableHelper {\n private element: MElement;\n\n private props = {\n collide: defaultCollideable,\n };\n\n static AttributeHandler = new AttributeHandler>({\n [collideAttributeName]: (instance, newValue) => {\n const collide = parseBoolAttribute(newValue, defaultCollideable);\n if (collide !== instance.props.collide) {\n instance.props.collide = collide;\n instance.updateCollider(instance.collider);\n }\n },\n [collisionIntervalAttributeName]: () => {\n // Collision interval is handled by the MMLCollisionTrigger, but is here for completeness of attribute handling\n },\n });\n static observedAttributes = CollideableHelper.AttributeHandler.getAttributes();\n\n constructor(element: MElement) {\n this.element = element;\n }\n\n private scene: IMMLScene | null = null;\n private collider: unknown | null = null;\n private added: boolean = false;\n private enabled: boolean = true;\n\n public enable() {\n if (this.enabled) {\n return;\n }\n\n this.enabled = true;\n this.updateCollider(this.collider);\n }\n\n public disable() {\n if (!this.enabled) {\n return;\n }\n\n this.enabled = false;\n this.updateCollider(this.collider);\n }\n\n public updateCollider(collider: unknown | null) {\n if (!this.element.isConnected) {\n //element not connected to scene yet - keep track of the collider for when it is connected\n this.collider = collider;\n return;\n }\n\n // store the scene so that colliders can be removed from it even after this node has been removed from the DOM.\n this.scene = this.element.getScene();\n\n const previousCollider = this.collider;\n const colliderChanged = previousCollider !== collider;\n if (colliderChanged) {\n this.added = false;\n }\n this.collider = collider;\n\n const shouldEnableCollider = this.props.collide && this.enabled;\n if (!shouldEnableCollider && previousCollider === null) {\n this.added = false;\n return;\n }\n\n if (shouldEnableCollider) {\n if (colliderChanged && previousCollider !== null) {\n this.scene.removeCollider?.(previousCollider, this.element);\n }\n if (collider !== null) {\n if (this.added) {\n this.scene.updateCollider?.(collider, this.element);\n } else {\n this.added = true;\n this.scene.addCollider?.(collider, this.element);\n }\n }\n } else {\n if (previousCollider !== null) {\n this.added = false;\n this.scene.removeCollider?.(previousCollider, this.element);\n }\n }\n }\n\n public removeColliders() {\n const scene = this.scene;\n if (!scene) {\n // colliders were never added or the scene was already torn down\n return;\n }\n\n if (!this.collider) {\n // no primary object yet, so nothing to collide with\n return;\n }\n\n scene.removeCollider?.(this.collider, this.element);\n\n this.scene = null;\n }\n\n public handle(name: string, newValue: string) {\n CollideableHelper.AttributeHandler.handle(this, name, newValue);\n }\n\n public parentTransformed() {\n this.updateCollider(this.collider);\n }\n}\n", "import { MElement } from \"../elements\";\nimport { GraphicsAdapter } from \"../graphics\";\n\nexport type CollisionData = {\n position: { x: number; y: number; z: number };\n};\n\nexport type ColliderData = {\n collider: T;\n mElement: MElement;\n currentlyColliding: boolean;\n lastUpdate: number;\n};\n\nconst collisionIntervalMinimumMilliseconds = 100;\nconst collisionIntervalAttrName = \"collision-interval\";\nexport const collisionStartEventName = \"collisionstart\";\nexport const collisionMoveEventName = \"collisionmove\";\nexport const collisionEndEventName = \"collisionend\";\n\nexport function getCollisionInterval(mElement: MElement): null | number {\n const collisionEventsAttr = mElement.getAttribute(collisionIntervalAttrName);\n if (collisionEventsAttr === null) {\n return null;\n }\n const parsed = parseFloat(collisionEventsAttr);\n if (isNaN(parsed)) {\n return null;\n }\n return parsed;\n}\n\n/**\n * The MMLCollisionTrigger class is responsible for keeping track of which colliders the \"user\" (avatar) is currently\n * colliding with, and dispatches events to the elements if they are listening for collisions.\n */\nexport class MMLCollisionTrigger {\n private colliderToElementMap = new Map>();\n private currentCollidingColliders = new Set();\n\n static init(): MMLCollisionTrigger {\n return new MMLCollisionTrigger();\n }\n\n public setCurrentCollisions(currentCollisions: Map | null) {\n const currentTime = performance.now();\n if (currentCollisions) {\n for (const [collider, collisionData] of currentCollisions) {\n const colliderData = this.colliderToElementMap.get(collider);\n if (colliderData) {\n let listeningInterval = getCollisionInterval(colliderData.mElement);\n if (listeningInterval === null) {\n // Not listening for collisions - if colliding then record stopping\n if (colliderData.currentlyColliding) {\n colliderData.lastUpdate = currentTime;\n colliderData.currentlyColliding = false;\n }\n } else {\n if (listeningInterval < collisionIntervalMinimumMilliseconds) {\n listeningInterval = collisionIntervalMinimumMilliseconds;\n }\n if (colliderData.lastUpdate < currentTime - listeningInterval) {\n colliderData.lastUpdate = currentTime;\n if (!colliderData.currentlyColliding) {\n colliderData.currentlyColliding = true;\n colliderData.mElement.dispatchEvent(\n new CustomEvent(collisionStartEventName, {\n bubbles: true,\n detail: {\n position: collisionData.position,\n },\n }),\n );\n this.currentCollidingColliders.add(collider);\n } else {\n colliderData.mElement.dispatchEvent(\n new CustomEvent(collisionMoveEventName, {\n bubbles: true,\n detail: {\n position: collisionData.position,\n },\n }),\n );\n }\n }\n }\n }\n }\n }\n for (const collider of this.currentCollidingColliders) {\n if (!currentCollisions?.has(collider)) {\n this.currentCollidingColliders.delete(collider);\n const colliderData = this.colliderToElementMap.get(collider);\n if (colliderData) {\n colliderData.lastUpdate = currentTime;\n colliderData.currentlyColliding = false;\n colliderData.mElement.dispatchEvent(\n new CustomEvent(collisionEndEventName, {\n bubbles: true,\n detail: {},\n }),\n );\n }\n }\n }\n }\n\n public addCollider(collider: T, mElement: MElement) {\n this.colliderToElementMap.set(collider, {\n collider,\n currentlyColliding: false,\n mElement,\n lastUpdate: 0,\n });\n }\n\n public removeCollider(collider: T) {\n this.colliderToElementMap.delete(collider);\n this.currentCollidingColliders.delete(collider);\n }\n}\n", "import { parseBoolAttribute } from \"../attributes\";\nimport { MElement } from \"../elements\";\nimport { DebugHelperGraphics, GraphicsAdapter } from \"../graphics\";\n\nconst debugAttributeName = \"debug\";\n\nexport class DebugHelper {\n static observedAttributes = [debugAttributeName];\n\n private debugGraphics: DebugHelperGraphics | null = null;\n\n constructor(public element: MElement) {}\n\n public getContainer(): G[\"containerType\"] {\n return this.element.getContainer();\n }\n\n public handle(name: string, newValue: string) {\n if (name === debugAttributeName) {\n if (parseBoolAttribute(newValue, false)) {\n if (!this.debugGraphics) {\n this.debugGraphics = this.element\n .getScene()\n .getGraphicsAdapter()\n .getGraphicsAdapterFactory()\n .MMLDebugHelperGraphicsInterface(this);\n }\n } else {\n this.debugGraphics?.dispose();\n this.debugGraphics = null;\n }\n }\n }\n}\n", "// Largely based on https://github.com/mrdoob/three.js/blob/master/src/math/Euler.js\nimport { Matr4 } from \"./Matr4\";\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport class EulXYZ {\n private static tempMatrix = new Matr4();\n public x: number;\n public y: number;\n public z: number;\n\n constructor(x?: number | EulXYZ, y?: number, z?: number) {\n if (x instanceof EulXYZ) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n return;\n }\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n }\n\n setFromRotationMatrix(m: Matr4): this {\n const d = m.data;\n const m11 = d[0];\n const m12 = d[4];\n const m13 = d[8];\n const m22 = d[5];\n const m23 = d[9];\n const m32 = d[6];\n const m33 = d[10];\n\n this.y = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < 0.9999999) {\n this.x = Math.atan2(-m23, m33);\n this.z = Math.atan2(-m12, m11);\n } else {\n this.x = Math.atan2(m32, m22);\n this.z = 0;\n }\n\n return this;\n }\n\n setFromQuaternion(q: { x: number; y: number; z: number; w: number }): this {\n const matrix = EulXYZ.tempMatrix;\n matrix.setRotationFromQuaternion(q);\n return this.setFromRotationMatrix(matrix);\n }\n\n copy(other: { x?: number; y?: number; z?: number }): this {\n this.x = other.x || 0;\n this.y = other.y || 0;\n this.z = other.z || 0;\n return this;\n }\n\n length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n\n lengthSquared(): number {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n }\n\n clone(): EulXYZ {\n return new EulXYZ(this);\n }\n\n set(x: number, y: number, z: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n}\n", "export function radToDeg(rad: number): number {\n return rad * (180 / Math.PI);\n}\n\nexport function degToRad(deg: number): number {\n return deg * (Math.PI / 180);\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { DebugHelper } from \"../debug-helper\";\nimport { GraphicsAdapter, TransformableGraphics } from \"../graphics\";\nimport { degToRad, Matr4, Quat } from \"../math\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\n\n// Workaround for zero-scale values breaking audio playback in THREE PositionalAudio\nfunction minimumNonZero(value: number): number {\n return value === 0 ? 0.000001 : value;\n}\n\nconst defaultVisible = true;\n\nexport type TransformableElementProps = {\n socket: string | null;\n x: number;\n y: number;\n z: number;\n rx: number;\n ry: number;\n rz: number;\n sx: number;\n sy: number;\n sz: number;\n};\n\nexport abstract class TransformableElement<\n G extends GraphicsAdapter = GraphicsAdapter,\n> extends MElement {\n private static tempQuat = new Quat();\n\n private transformableElementProps: TransformableElementProps = {\n socket: null,\n x: 0,\n y: 0,\n z: 0,\n rx: 0,\n ry: 0,\n rz: 0,\n sx: 1,\n sy: 1,\n sz: 1,\n };\n\n private desiredVisible = defaultVisible;\n private appliedBounds = new Map();\n protected directlyDisabledByBounds = false;\n protected disabledByParent = false;\n\n protected transformableElementGraphics: TransformableGraphics | null = null;\n\n private getTransformableElementParent(): TransformableElement | null {\n let parentNode = this.parentNode;\n while (parentNode != null) {\n if (parentNode instanceof TransformableElement) {\n return parentNode;\n }\n parentNode = parentNode.parentNode;\n }\n return null;\n }\n\n calculateLocalMatrix(matrix: Matr4): void {\n const pos = {\n x: this.transformableElementProps.x,\n y: this.transformableElementProps.y,\n z: this.transformableElementProps.z,\n };\n const eulerXYZRotation = {\n x: degToRad(this.transformableElementProps.rx),\n y: degToRad(this.transformableElementProps.ry),\n z: degToRad(this.transformableElementProps.rz),\n };\n const scale = {\n x: this.transformableElementProps.sx,\n y: this.transformableElementProps.sy,\n z: this.transformableElementProps.sz,\n };\n const quaternion = TransformableElement.tempQuat;\n quaternion.setFromEulerXYZ(eulerXYZRotation);\n matrix.compose(pos, quaternion, scale);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.transformableElementGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.transformableElementGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLTransformableGraphicsInterface(this);\n\n const mElementParent = this.getTransformableElementParent();\n if (mElementParent) {\n const parentBounds = mElementParent.getAppliedBounds();\n parentBounds.forEach((orientedBox, ref) => {\n this.addOrUpdateParentBound(ref, orientedBox);\n });\n return;\n }\n }\n\n disconnectedCallback(): void {\n this.transformableAnimatedAttributeHelper.reset();\n this.transformableElementGraphics?.dispose();\n this.transformableElementGraphics = null;\n super.disconnectedCallback();\n }\n\n private transformableAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n x: [\n AnimationType.Number,\n 0,\n (newValue: number) => {\n this.transformableElementProps.x = newValue;\n this.transformableElementGraphics?.setX(newValue, this.transformableElementProps);\n this.didUpdateTransformation();\n },\n ],\n y: [\n AnimationType.Number,\n 0,\n (newValue: number) => {\n this.transformableElementProps.y = newValue;\n this.transformableElementGraphics?.setY(newValue, this.transformableElementProps);\n this.didUpdateTransformation();\n },\n ],\n z: [\n AnimationType.Number,\n 0,\n (newValue: number) => {\n this.transformableElementProps.z = newValue;\n this.transformableElementGraphics?.setZ(newValue, this.transformableElementProps);\n this.didUpdateTransformation();\n },\n ],\n rx: [\n AnimationType.Number,\n 0,\n (newValue: number) => {\n this.transformableElementProps.rx = newValue;\n this.transformableElementGraphics?.setRotationX(newValue, this.transformableElementProps);\n this.didUpdateTransformation();\n },\n ],\n ry: [\n AnimationType.Number,\n 0,\n (newValue: number) => {\n this.transformableElementProps.ry = newValue;\n this.transformableElementGraphics?.setRotationY(newValue, this.transformableElementProps);\n this.didUpdateTransformation();\n },\n ],\n rz: [\n AnimationType.Number,\n 0,\n (newValue: number) => {\n this.transformableElementProps.rz = newValue;\n this.transformableElementGraphics?.setRotationZ(newValue, this.transformableElementProps);\n this.didUpdateTransformation();\n },\n ],\n sx: [\n AnimationType.Number,\n 1,\n (newValue: number) => {\n this.transformableElementProps.sx = newValue;\n this.transformableElementGraphics?.setScaleX(\n minimumNonZero(newValue),\n this.transformableElementProps,\n );\n this.didUpdateTransformation();\n },\n ],\n sy: [\n AnimationType.Number,\n 1,\n (newValue: number) => {\n this.transformableElementProps.sy = newValue;\n this.transformableElementGraphics?.setScaleY(\n minimumNonZero(newValue),\n this.transformableElementProps,\n );\n this.didUpdateTransformation();\n },\n ],\n sz: [\n AnimationType.Number,\n 1,\n (newValue: number) => {\n this.transformableElementProps.sz = newValue;\n this.transformableElementGraphics?.setScaleZ(\n minimumNonZero(newValue),\n this.transformableElementProps,\n );\n this.didUpdateTransformation();\n },\n ],\n });\n\n private static TransformableElementAttributeHandler = new AttributeHandler<\n TransformableElement\n >({\n x: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"x\",\n parseFloatAttribute(newValue, 0),\n );\n },\n y: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"y\",\n parseFloatAttribute(newValue, 0),\n );\n },\n z: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"z\",\n parseFloatAttribute(newValue, 0),\n );\n },\n rx: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"rx\",\n parseFloatAttribute(newValue, 0),\n );\n },\n ry: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"ry\",\n parseFloatAttribute(newValue, 0),\n );\n },\n rz: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"rz\",\n parseFloatAttribute(newValue, 0),\n );\n },\n sx: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"sx\",\n parseFloatAttribute(newValue, 1),\n );\n },\n sy: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"sy\",\n parseFloatAttribute(newValue, 1),\n );\n },\n sz: (instance, newValue) => {\n instance.transformableAnimatedAttributeHelper.elementSetAttribute(\n \"sz\",\n parseFloatAttribute(newValue, 1),\n );\n },\n visible: (instance, newValue) => {\n instance.desiredVisible = parseBoolAttribute(newValue, defaultVisible);\n instance.updateVisibility();\n },\n socket: (instance, newValue) => {\n instance.transformableElementProps.socket = newValue;\n instance.transformableElementGraphics?.setSocket(\n newValue,\n instance.transformableElementProps,\n );\n instance.applyBounds();\n },\n });\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.TransformableElementAttributeHandler.getAttributes(),\n ...DebugHelper.observedAttributes,\n ];\n }\n\n private debugHelper = new DebugHelper(this);\n\n public abstract getContentBounds(): OrientedBoundingBox | null;\n\n public addSideEffectChild(child: MElement): void {\n this.transformableAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.transformableAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n protected applyBounds() {\n if (!this.transformableElementGraphics) {\n // This element hasn't been connected yet - ignore the bounds application as it will be applied when connected\n return;\n }\n const appliedBounds = this.getAppliedBounds();\n if (appliedBounds.size > 0) {\n const thisElementBounds = this.getContentBounds();\n if (thisElementBounds) {\n for (const [, orientedBox] of appliedBounds) {\n if (!orientedBox.completelyContainsBoundingBox(thisElementBounds)) {\n if (!this.directlyDisabledByBounds) {\n this.disabledByBounds();\n }\n return;\n }\n }\n }\n }\n this.reenableByBounds();\n }\n\n public didUpdateTransformation() {\n this.applyBounds();\n this.parentTransformed();\n traverseImmediateTransformableElementChildren(this, (child) => {\n child.didUpdateTransformation();\n });\n }\n\n public attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.transformableElementGraphics) {\n return;\n }\n\n TransformableElement.TransformableElementAttributeHandler.handle(this, name, newValue);\n this.debugHelper.handle(name, newValue);\n }\n\n protected getAppliedBounds(): Map {\n return this.appliedBounds;\n }\n\n public addOrUpdateParentBound(ref: unknown, orientedBox: OrientedBoundingBox): void {\n this.appliedBounds.set(ref, orientedBox);\n traverseImmediateTransformableElementChildren(this, (child) => {\n child.addOrUpdateParentBound(ref, orientedBox);\n });\n this.applyBounds();\n }\n\n public removeParentBound(ref: unknown): void {\n this.appliedBounds.delete(ref);\n traverseImmediateTransformableElementChildren(this, (child) => {\n child.removeParentBound(ref);\n });\n this.applyBounds();\n }\n\n protected disabledByBounds() {\n if (this.directlyDisabledByBounds) {\n return;\n }\n this.directlyDisabledByBounds = true;\n this.updateVisibility();\n if (this.disabledByParent) {\n return;\n }\n this.disable();\n\n traverseImmediateTransformableElementChildren(this, (child) => {\n child.disabledByParentBounds();\n });\n }\n\n public isDisabled() {\n return this.directlyDisabledByBounds || this.disabledByParent;\n }\n\n protected disabledByParentBounds() {\n if (this.disabledByParent) {\n return;\n }\n this.disabledByParent = true;\n this.updateVisibility();\n if (this.directlyDisabledByBounds) {\n return;\n }\n this.disable();\n\n traverseImmediateTransformableElementChildren(this, (child) => {\n child.disabledByParentBounds();\n });\n }\n\n protected abstract disable(): void;\n\n protected reenableByBounds() {\n if (!this.directlyDisabledByBounds) {\n return;\n }\n\n this.directlyDisabledByBounds = false;\n\n if (!this.disabledByParent) {\n this.updateVisibility();\n this.enable();\n\n traverseImmediateTransformableElementChildren(this, (child) => {\n child.reenableByParentBounds();\n });\n }\n }\n\n protected reenableByParentBounds() {\n if (!this.disabledByParent) {\n return;\n }\n this.disabledByParent = false;\n\n if (!this.directlyDisabledByBounds) {\n this.updateVisibility();\n this.enable();\n\n traverseImmediateTransformableElementChildren(this, (child) => {\n child.reenableByParentBounds();\n });\n }\n }\n\n protected abstract enable(): void;\n\n private updateVisibility() {\n this.transformableElementGraphics?.setVisible(\n this.desiredVisible && !this.isDisabled(),\n this.transformableElementProps,\n );\n }\n}\n\nfunction traverseImmediateTransformableElementChildren(\n element: ChildNode,\n callback: (element: TransformableElement) => void,\n) {\n element.childNodes.forEach((child) => {\n if (child instanceof TransformableElement) {\n callback(child);\n } else {\n traverseImmediateTransformableElementChildren(child, callback);\n }\n });\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { AudioGraphics } from \"../graphics/AudioGraphics\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultAudioVolume = 1;\nconst defaultAudioLoop = true;\nconst defaultAudioEnabled = true;\nconst defaultAudioStartTime = 0;\nconst defaultAudioPauseTime = null;\nconst defaultAudioSrc = null;\nconst defaultAudioInnerConeAngle: number = 360;\nconst defaultAudioOuterConeAngle = 0;\nconst defaultAudioDebug = false;\n\nfunction clampAudioConeAngle(angle: number) {\n return Math.max(Math.min(angle, 360), 0);\n}\n\nexport type MAudioProps = {\n src: string | null;\n startTime: number;\n pauseTime: number | null;\n loop: boolean;\n loopDuration: number | null;\n enabled: boolean;\n volume: number;\n coneAngle: number;\n coneFalloffAngle: number | null;\n debug: boolean;\n};\n\nexport class Audio extends TransformableElement {\n static tagName = \"m-audio\";\n\n public props: MAudioProps = {\n src: defaultAudioSrc as string | null,\n startTime: defaultAudioStartTime,\n pauseTime: defaultAudioPauseTime as number | null,\n loop: defaultAudioLoop,\n loopDuration: null,\n enabled: defaultAudioEnabled,\n volume: defaultAudioVolume,\n coneAngle: defaultAudioInnerConeAngle,\n coneFalloffAngle: defaultAudioOuterConeAngle as number | null,\n debug: false,\n };\n\n private audioGraphics: AudioGraphics | null = null;\n\n private audioAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n volume: [\n AnimationType.Number,\n defaultAudioVolume,\n (newValue: number) => {\n this.props.volume = newValue;\n this.audioGraphics?.setVolume(newValue, this.props);\n },\n ],\n \"cone-angle\": [\n AnimationType.Number,\n defaultAudioInnerConeAngle,\n (newValue: number | null) => {\n this.props.coneAngle =\n newValue === null ? defaultAudioInnerConeAngle : clampAudioConeAngle(newValue);\n this.audioGraphics?.setConeAngle(this.props.coneAngle, this.props);\n },\n ],\n \"cone-falloff-angle\": [\n AnimationType.Number,\n defaultAudioOuterConeAngle,\n (newValue: number) => {\n this.props.coneFalloffAngle = clampAudioConeAngle(newValue);\n this.audioGraphics?.setConeFalloffAngle(this.props.coneFalloffAngle, this.props);\n },\n ],\n });\n\n private documentTimeListener: { remove: () => void };\n\n static get observedAttributes(): Array {\n return [...TransformableElement.observedAttributes, ...Audio.attributeHandler.getAttributes()];\n }\n\n private static attributeHandler = new AttributeHandler>({\n enabled: (instance, newValue) => {\n instance.props.enabled = parseBoolAttribute(newValue, defaultAudioEnabled);\n instance.audioGraphics?.setEnabled(instance.props.enabled, instance.props);\n },\n loop: (instance, newValue) => {\n instance.props.loop = parseBoolAttribute(newValue, defaultAudioLoop);\n instance.audioGraphics?.setLoop(instance.props.loop, instance.props);\n },\n \"loop-duration\": (instance, newValue) => {\n instance.props.loopDuration = parseFloatAttribute(newValue, null);\n instance.audioGraphics?.setLoopDuration(instance.props.loopDuration, instance.props);\n },\n \"start-time\": (instance, newValue) => {\n instance.props.startTime = parseFloatAttribute(newValue, defaultAudioStartTime);\n instance.audioGraphics?.setStartTime(instance.props.startTime, instance.props);\n },\n \"pause-time\": (instance, newValue) => {\n instance.props.pauseTime = parseFloatAttribute(newValue, defaultAudioPauseTime);\n instance.audioGraphics?.setPauseTime(instance.props.pauseTime, instance.props);\n },\n src: (instance, newValue) => {\n instance.props.src = newValue;\n instance.audioGraphics?.setSrc(newValue, instance.props);\n },\n volume: (instance, newValue) => {\n instance.audioAnimatedAttributeHelper.elementSetAttribute(\n \"volume\",\n parseFloatAttribute(newValue, defaultAudioVolume),\n );\n },\n \"cone-angle\": (instance, newValue) => {\n instance.audioAnimatedAttributeHelper.elementSetAttribute(\n \"cone-angle\",\n parseFloatAttribute(newValue, null),\n );\n },\n \"cone-falloff-angle\": (instance, newValue) => {\n instance.audioAnimatedAttributeHelper.elementSetAttribute(\n \"cone-falloff-angle\",\n parseFloatAttribute(newValue, defaultAudioOuterConeAngle),\n );\n },\n debug: (instance, newValue) => {\n instance.props.debug = parseBoolAttribute(newValue, defaultAudioDebug);\n instance.audioGraphics?.setDebug(instance.props.debug, instance.props);\n },\n });\n\n constructor() {\n super();\n }\n\n protected enable() {\n this.audioGraphics?.syncAudioTime();\n }\n\n protected disable() {\n this.audioGraphics?.syncAudioTime();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromMatrixWorld(this.transformableElementGraphics.getWorldMatrix());\n }\n\n public addSideEffectChild(child: MElement): void {\n this.audioAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.audioAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.audioGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Audio.attributeHandler.handle(this, name, newValue);\n }\n\n private documentTimeChanged() {\n this.audioGraphics?.syncAudioTime();\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.audioGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.audioGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLAudioGraphicsInterface(this);\n\n this.documentTimeListener = this.addDocumentTimeListener(() => {\n this.documentTimeChanged();\n });\n\n for (const name of Audio.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n }\n\n disconnectedCallback() {\n this.audioAnimatedAttributeHelper.reset();\n this.audioGraphics?.dispose();\n this.audioGraphics = null;\n this.documentTimeListener.remove();\n super.disconnectedCallback();\n }\n}\n", "import { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { CollideableHelper } from \"../collision\";\nimport { GraphicsAdapter, ModelGraphics } from \"../graphics\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultModelSrc = null;\nconst defaultModelAnim = null;\nconst defaultModelAnimLoop = true;\nconst defaultModelAnimEnabled = true;\nconst defaultModelAnimStartTime = 0;\nconst defaultModelAnimPauseTime = null;\nconst defaultModelCastShadows = true;\nconst defaultModelDebug = false;\n\nexport type MModelProps = {\n src: string | null;\n anim: string | null;\n animLoop: boolean;\n animEnabled: boolean;\n animStartTime: number;\n animPauseTime: number | null;\n castShadows: boolean;\n debug: boolean;\n};\n\nexport class Model extends TransformableElement {\n static tagName = \"m-model\";\n\n public props: MModelProps = {\n src: defaultModelSrc,\n anim: defaultModelAnim,\n animStartTime: defaultModelAnimStartTime,\n animPauseTime: defaultModelAnimPauseTime as number | null,\n animLoop: defaultModelAnimLoop,\n animEnabled: defaultModelAnimEnabled,\n castShadows: defaultModelCastShadows,\n debug: defaultModelDebug,\n };\n\n public isModel = true;\n\n private collideableHelper = new CollideableHelper(this);\n\n private static attributeHandler = new AttributeHandler>({\n src: (instance, newValue) => {\n instance.props.src = newValue;\n instance.modelGraphics?.setSrc(newValue, instance.props);\n },\n anim: (instance, newValue) => {\n instance.props.anim = newValue;\n instance.modelGraphics?.setAnim(newValue, instance.props);\n },\n debug: (instance, newValue) => {\n instance.props.debug = parseBoolAttribute(newValue, defaultModelDebug);\n instance.modelGraphics?.setDebug(instance.props.debug, instance.props);\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultModelCastShadows);\n instance.modelGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n \"anim-enabled\": (instance, newValue) => {\n instance.props.animEnabled = parseBoolAttribute(newValue, defaultModelAnimEnabled);\n instance.modelGraphics?.setAnimEnabled(instance.props.animEnabled, instance.props);\n },\n \"anim-loop\": (instance, newValue) => {\n instance.props.animLoop = parseBoolAttribute(newValue, defaultModelAnimLoop);\n instance.modelGraphics?.setAnimLoop(instance.props.animLoop, instance.props);\n },\n \"anim-start-time\": (instance, newValue) => {\n instance.props.animStartTime = parseFloatAttribute(newValue, defaultModelAnimStartTime);\n instance.modelGraphics?.setAnimStartTime(instance.props.animStartTime, instance.props);\n },\n \"anim-pause-time\": (instance, newValue) => {\n instance.props.animPauseTime = parseFloatAttribute(newValue, defaultModelAnimPauseTime);\n instance.modelGraphics?.setAnimPauseTime(instance.props.animPauseTime, instance.props);\n },\n });\n public modelGraphics: ModelGraphics | null = null;\n\n protected enable() {\n this.collideableHelper.enable();\n }\n\n protected disable() {\n this.collideableHelper.disable();\n }\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...Model.attributeHandler.getAttributes(),\n ...CollideableHelper.observedAttributes,\n ];\n }\n\n constructor() {\n super();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n const boundingBox = this.modelGraphics?.getBoundingBox();\n if (boundingBox) {\n return OrientedBoundingBox.fromSizeMatrixWorldAndCenter(\n boundingBox.size,\n this.transformableElementGraphics.getWorldMatrix(),\n boundingBox.centerOffset,\n );\n }\n return null;\n }\n\n public parentTransformed(): void {\n this.collideableHelper.parentTransformed();\n this.modelGraphics?.transformed();\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.modelGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Model.attributeHandler.handle(this, name, newValue);\n this.collideableHelper.handle(name, newValue);\n if (TransformableElement.observedAttributes.includes(name)) {\n // The element might have moved/scaled, so we need to call transformed\n this.modelGraphics.transformed();\n }\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.modelGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.modelGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLModelGraphicsInterface(this, () => {\n this.applyBounds();\n this.collideableHelper.updateCollider(this.modelGraphics?.getCollisionElement());\n });\n\n for (const name of Model.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n }\n\n disconnectedCallback() {\n // stop listening to document time ticking\n this.collideableHelper.removeColliders();\n this.modelGraphics?.dispose();\n this.modelGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "import { GraphicsAdapter } from \"../graphics\";\nimport { Model } from \"./Model\";\n\nexport class Character extends Model {\n static tagName = \"m-character\";\n\n static get observedAttributes(): Array {\n return [...Model.observedAttributes];\n }\n\n constructor() {\n super();\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n public connectedCallback() {\n super.connectedCallback();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n}\n", "import { MElement, TransformableElement } from \"../elements\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { degToRad, EulXYZ, Matr4, Quat, radToDeg, Vect3 } from \"../math\";\nimport { PositionAndRotation } from \"../scene\";\n\nconst tempContainerMatrix = new Matr4();\nconst tempTargetMatrix = new Matr4();\nconst tempPositionVector = new Vect3();\nconst tempRotationEuler = new EulXYZ();\nconst tempRotationQuaternion = new Quat();\nconst tempScaleVector = new Vect3();\n\nexport function getRelativePositionAndRotationRelativeToObject(\n positionAndRotation: PositionAndRotation,\n container: MElement,\n): PositionAndRotation {\n const { x, y, z } = positionAndRotation.position;\n\n // Rotation in degrees\n const { x: rx, y: ry, z: rz } = positionAndRotation.rotation;\n\n tempContainerMatrix.identity();\n const tempMatr4 = new Matr4();\n for (let obj: ParentNode | null = container; obj; obj = obj.parentNode) {\n if (obj instanceof TransformableElement) {\n obj.calculateLocalMatrix(tempMatr4);\n tempContainerMatrix.premultiply(tempMatr4);\n }\n }\n\n tempContainerMatrix.invert();\n\n tempPositionVector.set(x, y, z);\n tempRotationEuler.set(degToRad(rx), degToRad(ry), degToRad(rz));\n tempRotationQuaternion.setFromEulerXYZ(tempRotationEuler);\n tempScaleVector.set(1, 1, 1);\n tempTargetMatrix.compose(tempPositionVector, tempRotationQuaternion, tempScaleVector);\n\n tempTargetMatrix.premultiply(tempContainerMatrix);\n tempTargetMatrix.decompose(tempPositionVector, tempRotationQuaternion, tempScaleVector);\n tempRotationEuler.setFromQuaternion(tempRotationQuaternion);\n\n return {\n position: {\n x: tempPositionVector.x,\n y: tempPositionVector.y,\n z: tempPositionVector.z,\n },\n rotation: {\n x: radToDeg(tempRotationEuler.x),\n y: radToDeg(tempRotationEuler.y),\n z: radToDeg(tempRotationEuler.z),\n },\n };\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { ChatProbeGraphics } from \"../graphics/ChatProbeGraphics\";\nimport { Vect3 } from \"../math/Vect3\";\nimport { getRelativePositionAndRotationRelativeToObject } from \"../position\";\nimport { IMMLScene } from \"../scene\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultChatProbeRange = 10;\nconst defaultChatProbeDebug = false;\nconst chatProbeChatEventName = \"chat\";\n\nexport type MChatProbeProps = {\n debug: boolean;\n range: number;\n};\n\nexport class ChatProbe<\n G extends GraphicsAdapter = GraphicsAdapter,\n> extends TransformableElement {\n static tagName = \"m-chat-probe\";\n private chatProbeGraphics: ChatProbeGraphics | null = null;\n private registeredScene: IMMLScene | null = null;\n\n private chatProbeAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n range: [\n AnimationType.Number,\n defaultChatProbeRange,\n (newValue: number) => {\n this.props.range = newValue;\n this.chatProbeGraphics?.setRange(newValue, this.props);\n this.applyBounds();\n },\n ],\n });\n\n public props: MChatProbeProps = {\n debug: defaultChatProbeDebug,\n range: defaultChatProbeRange,\n };\n\n private static attributeHandler = new AttributeHandler>({\n range: (instance, newValue) => {\n instance.chatProbeAnimatedAttributeHelper.elementSetAttribute(\n \"range\",\n parseFloatAttribute(newValue, defaultChatProbeRange),\n );\n },\n debug: (instance, newValue) => {\n instance.props.debug = parseBoolAttribute(newValue, defaultChatProbeDebug);\n instance.chatProbeGraphics?.setDebug(instance.props.debug, instance.props);\n },\n });\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...ChatProbe.attributeHandler.getAttributes(),\n ];\n }\n\n constructor() {\n super();\n }\n\n protected enable() {\n // no-op (the probe only sends events if the position is within range)\n }\n\n protected disable() {\n // no-op (the probe only sends events if the position is within range)\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(this.props.range * 2, this.props.range * 2, this.props.range * 2),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n public addSideEffectChild(child: MElement): void {\n this.chatProbeAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.chatProbeAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n this.registeredScene?.updateChatProbe?.(this);\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n super.attributeChangedCallback(name, oldValue, newValue);\n ChatProbe.attributeHandler.handle(this, name, newValue);\n }\n\n public trigger(message: string) {\n const userPositionAndRotation = this.getUserPositionAndRotation();\n const elementRelative = getRelativePositionAndRotationRelativeToObject(\n userPositionAndRotation,\n this,\n );\n\n // Check if the position is within range\n const distance = new Vect3().copy(elementRelative.position).length();\n\n let withinBounds = true;\n this.getAppliedBounds().forEach((bounds) => {\n if (!bounds.containsPoint(userPositionAndRotation.position)) {\n withinBounds = false;\n }\n });\n\n if (withinBounds && distance <= this.props.range) {\n this.dispatchEvent(\n new CustomEvent(chatProbeChatEventName, {\n detail: {\n message,\n },\n }),\n );\n }\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.chatProbeGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.chatProbeGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLChatProbeGraphicsInterface(this);\n\n for (const name of ChatProbe.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.applyBounds();\n this.registerChatProbe();\n }\n\n public disconnectedCallback(): void {\n this.unregisterChatProbe();\n this.chatProbeAnimatedAttributeHelper.reset();\n this.chatProbeGraphics?.dispose();\n this.chatProbeGraphics = null;\n super.disconnectedCallback();\n }\n\n private registerChatProbe() {\n const scene = this.getScene();\n this.registeredScene = scene;\n scene.addChatProbe?.(this);\n }\n\n private unregisterChatProbe() {\n if (this.registeredScene !== null) {\n this.registeredScene.removeChatProbe?.(this);\n this.registeredScene = null;\n }\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport {\n AttributeHandler,\n parseBoolAttribute,\n parseColorAttribute,\n parseFloatAttribute,\n} from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { CollideableHelper } from \"../collision\";\nimport { MMLColor } from \"../color\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { CubeGraphics } from \"../graphics/CubeGraphics\";\nimport { Vect3 } from \"../math/Vect3\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultCubeColor: MMLColor = { r: 1, g: 1, b: 1 };\nconst defaultCubeWidth = 1;\nconst defaultCubeHeight = 1;\nconst defaultCubeDepth = 1;\nconst defaultCubeOpacity = 1;\nconst defaultCubeCastShadows = true;\n\nexport type MCubeProps = {\n width: number;\n height: number;\n depth: number;\n color: MMLColor;\n opacity: number;\n castShadows: boolean;\n};\n\nexport class Cube extends TransformableElement {\n static tagName = \"m-cube\";\n private cubeGraphics: CubeGraphics | null = null;\n\n public props: MCubeProps = {\n width: defaultCubeWidth,\n height: defaultCubeHeight,\n depth: defaultCubeDepth,\n color: defaultCubeColor,\n opacity: defaultCubeOpacity,\n castShadows: defaultCubeCastShadows,\n };\n\n private cubeAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n color: [\n AnimationType.Color,\n defaultCubeColor,\n (newValue: MMLColor) => {\n this.props.color = newValue;\n this.cubeGraphics?.setColor(newValue, this.props);\n },\n ],\n width: [\n AnimationType.Number,\n defaultCubeWidth,\n (newValue: number) => {\n this.props.width = newValue;\n this.cubeGraphics?.setWidth(newValue, this.props);\n this.applyBounds();\n this.collideableHelper.updateCollider(this.cubeGraphics?.getCollisionElement());\n },\n ],\n height: [\n AnimationType.Number,\n defaultCubeHeight,\n (newValue: number) => {\n this.props.height = newValue;\n this.cubeGraphics?.setHeight(newValue, this.props);\n this.applyBounds();\n this.collideableHelper.updateCollider(this.cubeGraphics?.getCollisionElement());\n },\n ],\n depth: [\n AnimationType.Number,\n defaultCubeDepth,\n (newValue: number) => {\n this.props.depth = newValue;\n this.cubeGraphics?.setDepth(newValue, this.props);\n this.applyBounds();\n this.collideableHelper.updateCollider(this.cubeGraphics?.getCollisionElement());\n },\n ],\n opacity: [\n AnimationType.Number,\n defaultCubeOpacity,\n (newValue: number) => {\n this.props.opacity = newValue;\n this.cubeGraphics?.setOpacity(newValue, this.props);\n },\n ],\n });\n private collideableHelper = new CollideableHelper(this);\n\n private static attributeHandler = new AttributeHandler>({\n width: (instance, newValue) => {\n instance.cubeAnimatedAttributeHelper.elementSetAttribute(\n \"width\",\n parseFloatAttribute(newValue, defaultCubeWidth),\n );\n },\n height: (instance, newValue) => {\n instance.cubeAnimatedAttributeHelper.elementSetAttribute(\n \"height\",\n parseFloatAttribute(newValue, defaultCubeHeight),\n );\n },\n depth: (instance, newValue) => {\n instance.cubeAnimatedAttributeHelper.elementSetAttribute(\n \"depth\",\n parseFloatAttribute(newValue, defaultCubeDepth),\n );\n },\n color: (instance, newValue) => {\n instance.cubeAnimatedAttributeHelper.elementSetAttribute(\n \"color\",\n parseColorAttribute(newValue, defaultCubeColor),\n );\n },\n opacity: (instance, newValue) => {\n instance.cubeAnimatedAttributeHelper.elementSetAttribute(\n \"opacity\",\n parseFloatAttribute(newValue, defaultCubeOpacity),\n );\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultCubeCastShadows);\n instance.cubeGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n });\n\n protected enable() {\n this.collideableHelper.enable();\n }\n\n protected disable() {\n this.collideableHelper.disable();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(this.props.width, this.props.height, this.props.depth),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...Cube.attributeHandler.getAttributes(),\n ...CollideableHelper.observedAttributes,\n ];\n }\n\n constructor() {\n super();\n }\n\n public addSideEffectChild(child: MElement): void {\n this.cubeAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.cubeAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n this.collideableHelper.parentTransformed();\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n public attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.cubeGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Cube.attributeHandler.handle(this, name, newValue);\n this.collideableHelper.handle(name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.cubeGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.cubeGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLCubeGraphicsInterface(this);\n\n for (const name of Cube.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.applyBounds();\n this.collideableHelper.updateCollider(this.cubeGraphics?.getCollisionElement());\n }\n\n public disconnectedCallback(): void {\n this.collideableHelper.removeColliders();\n this.cubeAnimatedAttributeHelper.reset();\n this.cubeGraphics?.dispose();\n this.cubeGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport {\n AttributeHandler,\n parseBoolAttribute,\n parseColorAttribute,\n parseFloatAttribute,\n} from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { CollideableHelper } from \"../collision\";\nimport { MMLColor } from \"../color\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { CylinderGraphics } from \"../graphics/CylinderGraphics\";\nimport { Vect3 } from \"../math/Vect3\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultCylinderColor: MMLColor = { r: 1, g: 1, b: 1 };\nconst defaultCylinderRadius = 0.5;\nconst defaultCylinderHeight = 1;\nconst defaultCylinderOpacity = 1;\nconst defaultCylinderCastShadows = true;\n\nexport type MCylinderProps = {\n radius: number;\n height: number;\n color: MMLColor;\n opacity: number;\n castShadows: boolean;\n};\n\nexport class Cylinder extends TransformableElement {\n static tagName = \"m-cylinder\";\n private cylinderGraphics: CylinderGraphics | null;\n\n public props: MCylinderProps = {\n radius: defaultCylinderRadius,\n height: defaultCylinderHeight,\n color: defaultCylinderColor,\n opacity: defaultCylinderOpacity,\n castShadows: defaultCylinderCastShadows,\n };\n\n private cylinderAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n color: [\n AnimationType.Color,\n defaultCylinderColor,\n (newValue: MMLColor) => {\n this.props.color = newValue;\n this.cylinderGraphics?.setColor(newValue, this.props);\n },\n ],\n radius: [\n AnimationType.Number,\n defaultCylinderRadius,\n (newValue: number) => {\n this.props.radius = newValue;\n this.cylinderGraphics?.setRadius(newValue, this.props);\n this.applyBounds();\n this.collideableHelper.updateCollider(this.cylinderGraphics?.getCollisionElement());\n },\n ],\n height: [\n AnimationType.Number,\n defaultCylinderHeight,\n (newValue: number) => {\n this.props.height = newValue;\n this.cylinderGraphics?.setHeight(newValue, this.props);\n this.applyBounds();\n this.collideableHelper.updateCollider(this.cylinderGraphics?.getCollisionElement());\n },\n ],\n opacity: [\n AnimationType.Number,\n defaultCylinderOpacity,\n (newValue: number) => {\n this.props.opacity = newValue;\n this.cylinderGraphics?.setOpacity(newValue, this.props);\n },\n ],\n });\n private collideableHelper = new CollideableHelper(this);\n\n private static attributeHandler = new AttributeHandler>({\n radius: (instance, newValue) => {\n instance.cylinderAnimatedAttributeHelper.elementSetAttribute(\n \"radius\",\n parseFloatAttribute(newValue, defaultCylinderRadius),\n );\n },\n height: (instance, newValue) => {\n instance.cylinderAnimatedAttributeHelper.elementSetAttribute(\n \"height\",\n parseFloatAttribute(newValue, defaultCylinderHeight),\n );\n },\n color: (instance, newValue) => {\n instance.cylinderAnimatedAttributeHelper.elementSetAttribute(\n \"color\",\n parseColorAttribute(newValue, defaultCylinderColor),\n );\n },\n opacity: (instance, newValue) => {\n instance.cylinderAnimatedAttributeHelper.elementSetAttribute(\n \"opacity\",\n parseFloatAttribute(newValue, defaultCylinderOpacity),\n );\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultCylinderCastShadows);\n instance.cylinderGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n });\n\n protected enable() {\n this.collideableHelper.enable();\n }\n\n protected disable() {\n this.collideableHelper.disable();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(this.props.radius * 2, this.props.height, this.props.radius * 2),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...Cylinder.attributeHandler.getAttributes(),\n ...CollideableHelper.observedAttributes,\n ];\n }\n\n constructor() {\n super();\n }\n\n public addSideEffectChild(child: MElement): void {\n this.cylinderAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.cylinderAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n this.collideableHelper.parentTransformed();\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n public attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.cylinderGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Cylinder.attributeHandler.handle(this, name, newValue);\n this.collideableHelper.handle(name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.cylinderGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.cylinderGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLCylinderGraphicsInterface(this);\n\n for (const name of Cylinder.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.applyBounds();\n this.collideableHelper.updateCollider(this.cylinderGraphics?.getCollisionElement());\n }\n\n public disconnectedCallback(): void {\n this.collideableHelper.removeColliders();\n this.cylinderAnimatedAttributeHelper.reset();\n this.cylinderGraphics?.dispose();\n this.cylinderGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "import { ChatProbe, Interaction, MElement } from \"../elements\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { LoadingProgressManager } from \"../loading\";\nimport { IMMLScene, LinkProps, PromptProps } from \"../scene\";\n\nexport function createWrappedScene(\n scene: IMMLScene,\n loadingProgressManager: LoadingProgressManager | null,\n): IMMLScene {\n return {\n addCollider(collider: unknown, element: MElement): void {\n if (scene.addCollider) {\n scene.addCollider(collider, element);\n }\n },\n updateCollider(collider: unknown, element: MElement): void {\n if (scene.updateCollider) {\n scene.updateCollider(collider, element);\n }\n },\n removeCollider(collider: unknown, element: MElement): void {\n if (scene.removeCollider) {\n scene.removeCollider(collider, element);\n }\n },\n addInteraction(interaction: Interaction): void {\n if (scene.addInteraction) {\n scene.addInteraction(interaction);\n }\n },\n updateInteraction(interaction: Interaction): void {\n if (scene.updateInteraction) {\n scene.updateInteraction(interaction);\n }\n },\n removeInteraction(interaction: Interaction): void {\n if (scene.removeInteraction) {\n scene.removeInteraction(interaction);\n }\n },\n addChatProbe(chatProbe: ChatProbe): void {\n if (scene.addChatProbe) {\n scene.addChatProbe(chatProbe);\n }\n },\n updateChatProbe(chatProbe: ChatProbe): void {\n if (scene.updateChatProbe) {\n scene.updateChatProbe(chatProbe);\n }\n },\n removeChatProbe(chatProbe: ChatProbe): void {\n if (scene.removeChatProbe) {\n scene.removeChatProbe(chatProbe);\n }\n },\n hasGraphicsAdapter() {\n return scene.hasGraphicsAdapter();\n },\n getGraphicsAdapter() {\n return scene.getGraphicsAdapter();\n },\n prompt(\n promptProps: PromptProps,\n abortSignal: AbortSignal,\n callback: (result: string | null) => void,\n ) {\n scene.prompt(promptProps, abortSignal, callback);\n },\n link(\n linkProps: LinkProps,\n abortSignal: AbortSignal,\n windowCallback: (openedWindow: Window | null) => void,\n ) {\n scene.link(linkProps, abortSignal, windowCallback);\n },\n getRootContainer: () => {\n throw new Error(\"Wrapped scenes do not have a root container\");\n },\n getUserPositionAndRotation: () => {\n return scene.getUserPositionAndRotation();\n },\n getLoadingProgressManager: () => {\n return loadingProgressManager;\n },\n };\n}\n", "import { LoadingProgressManager } from \"./LoadingProgressManager\";\n\nconst noManagerSymbol = Symbol(\"NoLoadingProgressManagerProvided\");\n\nexport class LoadingInstanceManager {\n // Only set if the instance is loading / has loaded / has errored\n private currentlyLoadingProgressManager: LoadingProgressManager | typeof noManagerSymbol | null =\n null;\n\n constructor(private type: string) {}\n\n public start(loadingProgressManager: LoadingProgressManager | null, url: string) {\n if (this.currentlyLoadingProgressManager !== null) {\n if (this.currentlyLoadingProgressManager === noManagerSymbol && !loadingProgressManager) {\n // Already loading with no progress manager, and no progress manager provided - do nothing\n return;\n }\n if (this.currentlyLoadingProgressManager !== loadingProgressManager) {\n throw new Error(\"Already loading with a different progress manager\");\n }\n // else the instance is already reported as loading with this progress manager (could be a change in content)\n } else {\n // This instance is now loading - report to the progress manager\n if (!loadingProgressManager) {\n this.currentlyLoadingProgressManager = noManagerSymbol;\n } else {\n this.currentlyLoadingProgressManager = loadingProgressManager;\n this.currentlyLoadingProgressManager.addLoadingAsset(this, url, this.type);\n }\n }\n }\n\n public setProgress(ratio: number) {\n if (!this.currentlyLoadingProgressManager) {\n throw new Error(\"Not currently loading - cannot finish\");\n }\n if (this.currentlyLoadingProgressManager !== noManagerSymbol) {\n this.currentlyLoadingProgressManager.updateAssetProgress(this, ratio);\n }\n }\n\n // The content being loaded is no longer needed, but the instance may still request content load start again\n public abortIfLoading() {\n if (\n this.currentlyLoadingProgressManager &&\n this.currentlyLoadingProgressManager !== noManagerSymbol\n ) {\n this.currentlyLoadingProgressManager.disposeOfLoadingAsset(this);\n }\n this.currentlyLoadingProgressManager = null;\n }\n\n // The instance is no longer needed, and will not request content load start again (content may not be loading)\n public dispose() {\n this.abortIfLoading();\n }\n\n public finish() {\n if (!this.currentlyLoadingProgressManager) {\n throw new Error(\"Not currently loading - cannot finish\");\n }\n if (this.currentlyLoadingProgressManager !== noManagerSymbol) {\n this.currentlyLoadingProgressManager.completedLoadingAsset(this);\n }\n }\n\n public error(err?: Error | null) {\n if (!this.currentlyLoadingProgressManager) {\n throw new Error(\"Not currently loading - cannot error\");\n }\n if (this.currentlyLoadingProgressManager !== noManagerSymbol) {\n if (err) {\n this.currentlyLoadingProgressManager.errorLoadingAsset(this, err);\n } else {\n this.currentlyLoadingProgressManager.errorLoadingAsset(this, new Error(\"Unknown error\"));\n }\n }\n }\n}\n", "type AssetStatus = {\n type: string;\n assetUrl: string;\n progressRatio: number;\n loadStatus: boolean | Error;\n};\n\ntype LoadingCountSummary = {\n totalLoaded: number;\n totalErrored: number;\n totalToLoad: number;\n};\n\ntype LoadingProgressSummary = {\n initialLoad: boolean | Error;\n summary: LoadingCountSummary;\n summaryByType: { [key: string]: LoadingCountSummary & { assetErrors: Array<[string, Error]> } };\n innerDocuments: Array<[string, LoadingProgressSummary]>;\n};\n\nexport class LoadingProgressManager {\n public summary: LoadingCountSummary = {\n totalLoaded: 0,\n totalErrored: 0,\n totalToLoad: 0,\n };\n\n public initialLoad: boolean | Error = false;\n\n public loadingAssets = new Map();\n public summaryByType = new Map<\n string,\n LoadingCountSummary & {\n assets: Map;\n }\n >();\n public loadingDocuments = new Map<\n unknown,\n { documentUrl: string; progressManager: LoadingProgressManager }\n >();\n\n private onProgressCallbacks = new Set<() => void>();\n\n constructor() {}\n\n public addProgressCallback(callback: () => void): void {\n this.onProgressCallbacks.add(callback);\n }\n\n public removeProgressCallback(callback: () => void): void {\n this.onProgressCallbacks.delete(callback);\n }\n\n private onProgress(): void {\n for (const callback of this.onProgressCallbacks) {\n callback();\n }\n }\n\n public addLoadingAsset(ref: unknown, url: string, type: string): void {\n if (this.loadingAssets.has(ref)) {\n throw new Error(\"Asset reference already exists\");\n }\n const assetRecord: AssetStatus = { type, assetUrl: url, progressRatio: 0, loadStatus: false };\n this.loadingAssets.set(ref, assetRecord);\n\n let typeSummary = this.summaryByType.get(type);\n if (!typeSummary) {\n typeSummary = { totalLoaded: 0, totalToLoad: 0, totalErrored: 0, assets: new Map() };\n this.summaryByType.set(type, typeSummary);\n }\n typeSummary.assets.set(ref, assetRecord);\n typeSummary.totalToLoad++;\n this.summary.totalToLoad++;\n this.onProgress();\n }\n\n public setInitialLoad(result: true | Error): void {\n if (result instanceof Error) {\n this.initialLoad = result;\n } else {\n this.initialLoad = true;\n }\n this.onProgress();\n }\n\n public disposeOfLoadingAsset(ref: unknown): void {\n const asset = this.loadingAssets.get(ref);\n if (asset) {\n this.loadingAssets.delete(ref);\n const { type, loadStatus } = asset;\n const typeSummary = this.summaryByType.get(type);\n if (typeSummary) {\n typeSummary.assets.delete(ref);\n typeSummary.totalToLoad--;\n this.summary.totalToLoad--;\n if (loadStatus === true) {\n typeSummary.totalLoaded--;\n this.summary.totalLoaded--;\n } else if (loadStatus instanceof Error) {\n typeSummary.totalErrored--;\n this.summary.totalErrored--;\n }\n this.onProgress();\n }\n }\n }\n\n public errorLoadingAsset(ref: unknown, err: Error) {\n const asset = this.loadingAssets.get(ref);\n if (asset) {\n const { type } = asset;\n asset.loadStatus = err;\n const typeSummary = this.summaryByType.get(type);\n if (typeSummary) {\n typeSummary.totalErrored++;\n this.summary.totalErrored++;\n this.onProgress();\n }\n }\n }\n\n public updateAssetProgress(ref: unknown, progressRatio: number): void {\n const asset = this.loadingAssets.get(ref);\n if (asset) {\n asset.progressRatio = progressRatio;\n this.onProgress();\n }\n }\n\n public completedLoadingAsset(ref: unknown): void {\n const asset = this.loadingAssets.get(ref);\n if (asset) {\n const { type } = asset;\n asset.loadStatus = true;\n const typeSummary = this.summaryByType.get(type);\n if (typeSummary) {\n typeSummary.totalLoaded++;\n this.summary.totalLoaded++;\n this.onProgress();\n }\n }\n }\n\n public addLoadingDocument(\n ref: unknown,\n documentUrl: string,\n progressManager: LoadingProgressManager,\n ): void {\n this.loadingDocuments.set(ref, { documentUrl, progressManager });\n this.onProgress();\n }\n\n public removeLoadingDocument(ref: unknown): void {\n this.loadingDocuments.delete(ref);\n this.onProgress();\n }\n\n public updateDocumentProgress(ref: unknown): void {\n const loadingDocument = this.loadingDocuments.get(ref);\n if (loadingDocument) {\n this.onProgress();\n }\n }\n\n public toSummary(): LoadingProgressSummary {\n const loadingProgressSummary: LoadingProgressSummary = {\n initialLoad: this.initialLoad,\n summary: { ...this.summary },\n summaryByType: {},\n innerDocuments: [],\n };\n\n for (const [key, ofType] of this.summaryByType) {\n const ofTypeSummary: LoadingCountSummary & { assetErrors: Array<[string, Error]> } = {\n totalToLoad: ofType.totalToLoad,\n totalLoaded: ofType.totalLoaded,\n totalErrored: ofType.totalErrored,\n assetErrors: [],\n };\n if (ofType.totalErrored > 0) {\n for (const [, asset] of ofType.assets) {\n if (asset.loadStatus instanceof Error) {\n ofTypeSummary.assetErrors.push([asset.assetUrl, asset.loadStatus]);\n }\n }\n }\n loadingProgressSummary.summaryByType[key] = ofTypeSummary;\n }\n for (const [, innerDocProgress] of this.loadingDocuments) {\n loadingProgressSummary.innerDocuments.push([\n innerDocProgress.documentUrl,\n innerDocProgress.progressManager.toSummary(),\n ]);\n }\n return loadingProgressSummary;\n }\n\n public static LoadingProgressSummaryToString(\n loadingProgressSummary: LoadingProgressSummary,\n ): string {\n const text: Array = [];\n const showDocProgress = (docUrl: string, docProgress: LoadingProgressSummary) => {\n if (docProgress.initialLoad instanceof Error) {\n text.push(`${docUrl}: Error: ${docProgress.initialLoad.message}`);\n return;\n } else if (!docProgress.initialLoad) {\n text.push(`${docUrl}: Loading...`);\n return;\n }\n text.push(\n `${docUrl}: (${docProgress.summary.totalLoaded} loaded, ${\n docProgress.summary.totalErrored\n } errors) / (${docProgress.summary.totalToLoad} to load) = ${\n docProgress.summary.totalLoaded + docProgress.summary.totalErrored\n }/${docProgress.summary.totalToLoad}`,\n );\n for (const key in docProgress.summaryByType) {\n const ofType = docProgress.summaryByType[key];\n text.push(\n ` - ${key}: (${ofType.totalLoaded} loaded, ${ofType.totalErrored} errors) / (${\n ofType.totalToLoad\n } to load) = ${ofType.totalLoaded + ofType.totalErrored}/${ofType.totalToLoad}`,\n );\n if (ofType.totalErrored > 0) {\n text.push(` - Errors:`);\n for (const [assetUrl, error] of ofType.assetErrors) {\n text.push(` - ${assetUrl}: ${error.message}`);\n }\n }\n }\n for (const [innerDocumentUrl, innerDocProgress] of docProgress.innerDocuments) {\n showDocProgress(innerDocumentUrl, innerDocProgress);\n }\n };\n showDocProgress(\"root\", loadingProgressSummary);\n return text.join(\"\\n\");\n }\n\n public toRatio(): [number, boolean] {\n if (!this.initialLoad) {\n return [0, false];\n }\n if (this.initialLoad instanceof Error) {\n return [1, true];\n }\n\n let totalRatio = 0;\n let complete = true;\n\n let numberOfDocuments = this.loadingDocuments.size;\n\n if (this.summary.totalToLoad > 0) {\n numberOfDocuments += 1;\n const loadedAndErrored = this.summary.totalLoaded + this.summary.totalErrored;\n complete = complete && loadedAndErrored === this.summary.totalToLoad;\n let directAssetsLoadedRatio = 0;\n for (const [, asset] of this.loadingAssets) {\n if (asset.loadStatus instanceof Error || asset.loadStatus) {\n directAssetsLoadedRatio += 1;\n } else {\n directAssetsLoadedRatio += asset.progressRatio;\n }\n }\n directAssetsLoadedRatio /= this.summary.totalToLoad;\n totalRatio += directAssetsLoadedRatio / numberOfDocuments;\n } else if (this.loadingDocuments.size === 0) {\n // There are no assets to load and no inner documents, so loading is complete\n return [1, true];\n }\n\n for (const [, innerDocument] of this.loadingDocuments) {\n const [innerDocumentRatio, innerDocumentComplete] = innerDocument.progressManager.toRatio();\n totalRatio += innerDocumentRatio / numberOfDocuments;\n complete = complete && innerDocumentComplete;\n }\n\n return [totalRatio, complete];\n }\n}\n", "import { LoadingProgressManager } from \"./LoadingProgressManager\";\n\nexport class LoadingProgressBar {\n public readonly element: HTMLDivElement;\n\n private progressBarHolder: HTMLDivElement;\n private progressBar: HTMLDivElement;\n private loadingStatusText: HTMLDivElement;\n\n private progressDebugView: HTMLDivElement;\n private progressDebugElement: HTMLPreElement;\n\n private debugLabel: HTMLLabelElement;\n private debugCheckbox: HTMLInputElement;\n\n private hasCompleted = false;\n private loadingCallback: () => void;\n\n constructor(private loadingProgressManager: LoadingProgressManager) {\n this.element = document.createElement(\"div\");\n this.element.addEventListener(\"click\", (event) => {\n event.stopPropagation();\n });\n this.element.addEventListener(\"mousedown\", (event) => {\n event.stopPropagation();\n });\n this.element.addEventListener(\"mousemove\", (event) => {\n event.stopPropagation();\n });\n this.element.addEventListener(\"mouseup\", (event) => {\n event.stopPropagation();\n });\n\n this.progressDebugView = document.createElement(\"div\");\n this.progressDebugView.style.position = \"absolute\";\n this.progressDebugView.style.backgroundColor = \"rgba(128, 128, 128, 0.25)\";\n this.progressDebugView.style.top = \"20px\";\n this.progressDebugView.style.left = \"0\";\n this.progressDebugView.style.border = \"1px solid black\";\n this.progressDebugView.style.maxHeight = \"calc(100% - 20px)\";\n this.progressDebugView.style.maxWidth = \"100%\";\n this.progressDebugView.style.overflow = \"auto\";\n this.element.append(this.progressDebugView);\n\n this.debugCheckbox = document.createElement(\"input\");\n this.debugCheckbox.type = \"checkbox\";\n this.debugCheckbox.addEventListener(\"change\", () => {\n this.progressDebugElement.style.display = this.debugCheckbox.checked ? \"block\" : \"none\";\n if (this.hasCompleted) {\n this.dispose();\n }\n });\n\n this.debugLabel = document.createElement(\"label\");\n this.debugLabel.textContent = \"Debug loading\";\n this.debugLabel.style.fontFamily = \"sans-serif\";\n this.debugLabel.style.padding = \"5px\";\n this.debugLabel.style.display = \"inline-block\";\n this.debugLabel.style.userSelect = \"none\";\n this.debugLabel.append(this.debugCheckbox);\n this.progressDebugView.append(this.debugLabel);\n\n this.progressDebugElement = document.createElement(\"pre\");\n this.progressDebugElement.style.margin = \"0\";\n this.progressDebugElement.style.display = this.debugCheckbox.checked ? \"block\" : \"none\";\n this.progressDebugView.append(this.progressDebugElement);\n\n this.progressBarHolder = document.createElement(\"div\");\n this.progressBarHolder.style.position = \"absolute\";\n this.progressBarHolder.style.top = \"0\";\n this.progressBarHolder.style.left = \"0\";\n this.progressBarHolder.style.width = \"100%\";\n this.progressBarHolder.style.backgroundColor = \"gray\";\n this.progressBarHolder.style.height = \"20px\";\n this.element.append(this.progressBarHolder);\n\n this.progressBar = document.createElement(\"div\");\n this.progressBar.style.position = \"absolute\";\n this.progressBar.style.top = \"0\";\n this.progressBar.style.left = \"0\";\n this.progressBar.style.width = \"0\";\n this.progressBar.style.height = \"100%\";\n this.progressBar.style.backgroundColor = \"#0050a4\";\n this.progressBarHolder.append(this.progressBar);\n\n this.loadingStatusText = document.createElement(\"div\");\n this.loadingStatusText.style.position = \"absolute\";\n this.loadingStatusText.style.top = \"0\";\n this.loadingStatusText.style.left = \"0\";\n this.loadingStatusText.style.width = \"100%\";\n this.loadingStatusText.style.height = \"100%\";\n this.loadingStatusText.style.color = \"white\";\n this.loadingStatusText.style.textAlign = \"center\";\n this.loadingStatusText.style.verticalAlign = \"middle\";\n this.loadingStatusText.style.lineHeight = \"20px\";\n this.loadingStatusText.style.fontFamily = \"sans-serif\";\n this.loadingStatusText.textContent = \"Loading...\";\n this.progressBarHolder.append(this.loadingStatusText);\n\n this.loadingCallback = () => {\n const [loadingRatio, completedLoading] = this.loadingProgressManager.toRatio();\n if (completedLoading) {\n if (!this.hasCompleted) {\n this.hasCompleted = true;\n if (!this.debugCheckbox.checked) {\n this.dispose();\n }\n }\n this.loadingStatusText.textContent = \"Completed\";\n this.progressBar.style.width = \"100%\";\n } else {\n this.loadingStatusText.textContent = `Loading... ${(loadingRatio * 100).toFixed(2)}%`;\n this.progressBar.style.width = `${loadingRatio * 100}%`;\n }\n this.progressDebugElement.textContent = LoadingProgressManager.LoadingProgressSummaryToString(\n this.loadingProgressManager.toSummary(),\n );\n };\n\n this.loadingProgressManager.addProgressCallback(this.loadingCallback);\n }\n\n public dispose() {\n this.loadingProgressManager.removeProgressCallback(this.loadingCallback);\n this.element.remove();\n }\n}\n", "import { DOMSanitizer } from \"@mml-io/networked-dom-web\";\n\nlet domParser: DOMParser;\n\nexport async function fetchRemoteStaticMML(address: string): Promise {\n const response = await fetch(address);\n const text = await response.text();\n if (!domParser) {\n domParser = new DOMParser();\n }\n const remoteDocumentAsHTMLNode = domParser.parseFromString(text, \"text/html\");\n return DOMSanitizer.sanitise(remoteDocumentAsHTMLNode.body, {\n tagPrefix: \"m-\",\n replacementTagPrefix: \"x-\",\n });\n}\n", "import { consumeEventEventName } from \"../elements\";\nimport { RemoteDocument } from \"../elements\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { IMMLScene } from \"../scene\";\n\n/**\n * The RemoteDocumentWrapper class creates an m-remote-document (RemoteDocument) element and initialises it with the\n * given address. It is expected that the `remoteDocument` element will be added to the DOM by the caller.\n */\nexport class RemoteDocumentWrapper {\n public readonly remoteDocument: RemoteDocument;\n\n constructor(\n address: string,\n targetWindow: Window,\n mmlScene: IMMLScene,\n handleEvent: (element: HTMLElement, event: CustomEvent) => void,\n ) {\n this.remoteDocument = targetWindow.document.createElement(\n RemoteDocument.tagName,\n ) as RemoteDocument;\n this.remoteDocument.addEventListener(consumeEventEventName, (wrappedEvent: CustomEvent) => {\n const { originalEvent, element } = wrappedEvent.detail;\n handleEvent(element, originalEvent);\n });\n this.remoteDocument.init(mmlScene, address);\n }\n\n public setDocumentTime(documentTime: number) {\n this.remoteDocument.getDocumentTimeManager().setDocumentTime(documentTime);\n }\n\n public overrideDocumentTime(documentTime: number) {\n this.remoteDocument.getDocumentTimeManager().overrideDocumentTime(documentTime);\n }\n}\n", "import { MElement } from \"../elements\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { LoadingProgressManager } from \"../loading\";\nimport { fetchRemoteStaticMML, RemoteDocumentWrapper } from \"../remote-document\";\nimport { IMMLScene } from \"../scene\";\nimport { createWrappedScene } from \"./CreateWrappedScene\";\n\nexport class StaticHTMLFrameInstance {\n public readonly src: string;\n private readonly remoteDocumentWrapper: RemoteDocumentWrapper;\n private readonly targetForWrapper: MElement;\n private readonly scene: IMMLScene;\n private loadingProgressManager: LoadingProgressManager;\n\n constructor(targetElement: MElement, src: string, scene: IMMLScene) {\n this.targetForWrapper = targetElement;\n this.src = src;\n this.scene = scene;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const windowTarget = targetElement.ownerDocument.defaultView!;\n\n this.loadingProgressManager = new LoadingProgressManager();\n this.loadingProgressManager.addProgressCallback(() => {\n scene.getLoadingProgressManager?.()?.updateDocumentProgress(this);\n });\n\n const address = this.targetForWrapper.contentSrcToContentAddress(this.src);\n\n scene\n .getLoadingProgressManager?.()\n ?.addLoadingDocument(this, address, this.loadingProgressManager);\n\n const wrappedScene: IMMLScene = createWrappedScene(this.scene, this.loadingProgressManager);\n\n this.remoteDocumentWrapper = new RemoteDocumentWrapper(\n address,\n windowTarget,\n wrappedScene,\n () => {\n // Events targeting static MML frames should not be sent\n },\n );\n this.targetForWrapper.append(this.remoteDocumentWrapper.remoteDocument);\n // Promise is intentionally ignored here\n fetchRemoteStaticMML(address)\n .then((remoteDocumentBody) => {\n this.remoteDocumentWrapper.remoteDocument.append(remoteDocumentBody);\n this.loadingProgressManager.setInitialLoad(true);\n })\n .catch((err) => {\n this.loadingProgressManager.setInitialLoad(err);\n });\n }\n\n public dispose() {\n this.targetForWrapper.removeChild(this.remoteDocumentWrapper.remoteDocument);\n this.loadingProgressManager.removeLoadingDocument(this);\n }\n}\n", "import { NetworkedDOMWebsocket, NetworkedDOMWebsocketStatus } from \"@mml-io/networked-dom-web\";\n\nimport { consumeEventEventName, MElement } from \"../elements\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { LoadingProgressManager } from \"../loading\";\nimport { RemoteDocumentWrapper } from \"../remote-document\";\nimport { IMMLScene } from \"../scene\";\nimport { createWrappedScene } from \"./CreateWrappedScene\";\n\nexport class WebSocketFrameInstance {\n public readonly src: string;\n private domWebsocket: NetworkedDOMWebsocket;\n private targetForWrapper: MElement;\n private readonly remoteDocumentWrapper: RemoteDocumentWrapper;\n private scene: IMMLScene;\n private loadingProgressManager: LoadingProgressManager;\n\n constructor(targetElement: MElement, src: string, scene: IMMLScene) {\n this.targetForWrapper = targetElement;\n this.src = src;\n this.scene = scene;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const windowTarget = targetElement.ownerDocument.defaultView!;\n\n let overriddenHandler: ((element: MElement, event: CustomEvent) => void) | null = null;\n const eventHandler = (element: MElement, event: CustomEvent) => {\n if (!overriddenHandler) {\n throw new Error(\"overriddenHandler not set\");\n }\n overriddenHandler(element, event);\n };\n\n this.loadingProgressManager = new LoadingProgressManager();\n this.loadingProgressManager.addProgressCallback(() => {\n scene.getLoadingProgressManager?.()?.updateDocumentProgress(this);\n });\n\n const websocketAddress = this.srcToAddress(this.src);\n\n scene\n .getLoadingProgressManager?.()\n ?.addLoadingDocument(this, websocketAddress, this.loadingProgressManager);\n\n const wrappedScene: IMMLScene = createWrappedScene(this.scene, this.loadingProgressManager);\n\n this.remoteDocumentWrapper = new RemoteDocumentWrapper(\n websocketAddress,\n windowTarget,\n wrappedScene,\n () => {\n // Events targeting static MML frames should not be sent\n },\n );\n\n this.targetForWrapper.append(this.remoteDocumentWrapper.remoteDocument);\n\n this.remoteDocumentWrapper.remoteDocument.addEventListener(\n consumeEventEventName,\n (wrappedEvent: CustomEvent) => {\n const { originalEvent, element } = wrappedEvent.detail;\n eventHandler(element, originalEvent);\n },\n );\n\n this.domWebsocket = new NetworkedDOMWebsocket(\n websocketAddress,\n NetworkedDOMWebsocket.createWebSocket,\n this.remoteDocumentWrapper.remoteDocument,\n (time: number) => {\n this.remoteDocumentWrapper.remoteDocument.getDocumentTimeManager().setDocumentTime(time);\n },\n (status: NetworkedDOMWebsocketStatus) => {\n if (status === NetworkedDOMWebsocketStatus.Reconnecting) {\n this.remoteDocumentWrapper.remoteDocument.showError(true);\n this.loadingProgressManager.setInitialLoad(new Error(\"Failed to connect\"));\n } else if (status === NetworkedDOMWebsocketStatus.Connected) {\n this.remoteDocumentWrapper.remoteDocument.showError(false);\n this.loadingProgressManager.setInitialLoad(true);\n } else {\n this.remoteDocumentWrapper.remoteDocument.showError(false);\n }\n },\n {\n tagPrefix: \"m-\",\n },\n );\n overriddenHandler = (element: MElement, event: CustomEvent) => {\n this.domWebsocket.handleEvent(element, event);\n };\n }\n\n private srcToAddress(src: string): string {\n const insecurePrefix = \"ws:///\";\n const securePrefix = \"wss:///\";\n if (src.startsWith(insecurePrefix)) {\n // Relative insecure websocket path\n return `ws://${this.getDocumentHost()}/${src.substring(insecurePrefix.length)}`;\n } else if (src.startsWith(securePrefix)) {\n // Relative secure websocket path\n return `wss://${this.getDocumentHost()}/${src.substring(securePrefix.length)}`;\n } else {\n return src;\n }\n }\n\n private getDocumentHost(): string {\n const remoteDocument = this.targetForWrapper.getInitiatedRemoteDocument();\n if (remoteDocument) {\n const remoteDocumentAddress = remoteDocument.getDocumentAddress();\n if (remoteDocumentAddress) {\n const url = new URL(remoteDocumentAddress);\n return url.host;\n }\n }\n return window.location.host;\n }\n\n dispose() {\n this.domWebsocket.stop();\n this.targetForWrapper.removeChild(this.remoteDocumentWrapper.remoteDocument);\n this.scene.getLoadingProgressManager?.()?.removeLoadingDocument(this);\n }\n}\n", "import { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { StaticHTMLFrameInstance, WebSocketFrameInstance } from \"../frame\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { FrameGraphics } from \"../graphics/FrameGraphics\";\nimport { Vect3 } from \"../math/Vect3\";\nimport { getRelativePositionAndRotationRelativeToObject } from \"../position\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultUnloadRange = 1;\nconst defaultFrameDebug = false;\n\nexport type MFrameProps = {\n src: string | null;\n loadRange: number | null;\n unloadRange: number;\n\n debug: boolean;\n\n minX: number | null;\n maxX: number | null;\n minY: number | null;\n maxY: number | null;\n minZ: number | null;\n maxZ: number | null;\n};\n\nexport class Frame extends TransformableElement {\n static tagName = \"m-frame\";\n private frameGraphics: FrameGraphics | null;\n\n private static attributeHandler = new AttributeHandler>({\n src: (instance, newValue) => {\n instance.props.src = newValue;\n if (instance.frameContentsInstance) {\n instance.disposeInstance();\n }\n instance.syncLoadState();\n instance.frameGraphics?.setSrc(instance.props.src, instance.props);\n },\n \"load-range\": (instance, newValue) => {\n instance.props.loadRange = parseFloatAttribute(newValue, null);\n instance.syncLoadState();\n instance.frameGraphics?.setLoadRange(instance.props.loadRange, instance.props);\n },\n \"unload-range\": (instance, newValue) => {\n instance.props.unloadRange = parseFloatAttribute(newValue, defaultUnloadRange);\n instance.syncLoadState();\n instance.frameGraphics?.setUnloadRange(instance.props.unloadRange, instance.props);\n },\n debug: (instance, newValue) => {\n instance.props.debug = parseBoolAttribute(newValue, defaultFrameDebug);\n instance.frameGraphics?.setDebug(instance.props.debug, instance.props);\n },\n \"min-x\": (instance, newValue) => {\n instance.props.minX = parseFloatAttribute(newValue, null);\n instance.boundsUpdated();\n instance.frameGraphics?.setMinX(instance.props.minX, instance.props);\n },\n \"max-x\": (instance, newValue) => {\n instance.props.maxX = parseFloatAttribute(newValue, null);\n instance.boundsUpdated();\n instance.frameGraphics?.setMaxX(instance.props.maxX, instance.props);\n },\n \"min-y\": (instance, newValue) => {\n instance.props.minY = parseFloatAttribute(newValue, null);\n instance.boundsUpdated();\n instance.frameGraphics?.setMinY(instance.props.minY, instance.props);\n },\n \"max-y\": (instance, newValue) => {\n instance.props.maxY = parseFloatAttribute(newValue, null);\n instance.boundsUpdated();\n instance.frameGraphics?.setMaxY(instance.props.maxY, instance.props);\n },\n \"min-z\": (instance, newValue) => {\n instance.props.minZ = parseFloatAttribute(newValue, null);\n instance.boundsUpdated();\n instance.frameGraphics?.setMinZ(instance.props.minZ, instance.props);\n },\n \"max-z\": (instance, newValue) => {\n instance.props.maxZ = parseFloatAttribute(newValue, null);\n instance.boundsUpdated();\n instance.frameGraphics?.setMaxZ(instance.props.maxZ, instance.props);\n },\n });\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n private frameContentsInstance: WebSocketFrameInstance | StaticHTMLFrameInstance | null =\n null;\n private isActivelyLoaded = false;\n private timer: NodeJS.Timeout | null = null;\n\n private boundsUpdated() {\n if (!this.transformableElementGraphics) {\n return;\n }\n const boxBounds = this.getDefinedBoxBounds();\n if (boxBounds) {\n const [minX, maxX, minY, maxY, minZ, maxZ] = boxBounds;\n const obb = OrientedBoundingBox.fromSizeMatrixWorldAndCenter(\n new Vect3(maxX - minX, maxY - minY, maxZ - minZ),\n this.transformableElementGraphics.getWorldMatrix(),\n new Vect3((maxX + minX) / 2, (maxY + minY) / 2, (maxZ + minZ) / 2),\n );\n this.addOrUpdateParentBound(this, obb);\n } else {\n this.removeParentBound(this);\n }\n }\n\n public props: MFrameProps = {\n src: null,\n loadRange: null,\n unloadRange: defaultUnloadRange,\n\n debug: defaultFrameDebug,\n\n minX: null,\n maxX: null,\n minY: null,\n maxY: null,\n minZ: null,\n maxZ: null,\n };\n\n private shouldBeLoaded() {\n if (!this.isConnected) {\n return false;\n }\n if (this.props.loadRange === null) {\n return true;\n }\n\n const userPositionAndRotation = this.getUserPositionAndRotation();\n const elementRelative = getRelativePositionAndRotationRelativeToObject(\n userPositionAndRotation,\n this,\n );\n\n let boxBounds = this.getDefinedBoxBounds();\n if (!boxBounds) {\n boxBounds = [0, 0, 0, 0, 0, 0];\n }\n const [minX, maxX, minY, maxY, minZ, maxZ] = boxBounds;\n if (\n elementRelative.position.x >= minX - this.props.loadRange &&\n elementRelative.position.x <= maxX + this.props.loadRange &&\n elementRelative.position.y >= minY - this.props.loadRange &&\n elementRelative.position.y <= maxY + this.props.loadRange &&\n elementRelative.position.z >= minZ - this.props.loadRange &&\n elementRelative.position.z <= maxZ + this.props.loadRange\n ) {\n return true;\n }\n // If the user is within the unload-range range, keep the current state\n if (\n elementRelative.position.x >= minX - this.props.loadRange - this.props.unloadRange &&\n elementRelative.position.x <= maxX + this.props.loadRange + this.props.unloadRange &&\n elementRelative.position.y >= minY - this.props.loadRange - this.props.unloadRange &&\n elementRelative.position.y <= maxY + this.props.loadRange + this.props.unloadRange &&\n elementRelative.position.z >= minZ - this.props.loadRange - this.props.unloadRange &&\n elementRelative.position.z <= maxZ + this.props.loadRange + this.props.unloadRange\n ) {\n return this.isActivelyLoaded;\n }\n }\n\n private syncLoadState() {\n const shouldBeLoaded = this.shouldBeLoaded();\n if (shouldBeLoaded && !this.isActivelyLoaded) {\n if (this.props.src) {\n this.isActivelyLoaded = true;\n this.createFrameContentsInstance(this.props.src);\n }\n } else if (!shouldBeLoaded && this.isActivelyLoaded) {\n this.isActivelyLoaded = false;\n this.disposeInstance();\n }\n }\n\n static get observedAttributes(): Array {\n return [...TransformableElement.observedAttributes, ...Frame.attributeHandler.getAttributes()];\n }\n\n constructor() {\n super();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n return null;\n }\n\n public parentTransformed(): void {\n this.boundsUpdated();\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n private startEmitting() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.timer = setInterval(() => {\n this.syncLoadState();\n }, 100);\n }\n\n private createFrameContentsInstance(src: string) {\n if (this.frameContentsInstance) {\n if (this.frameContentsInstance.src !== src) {\n console.error(\"Instance already existed with a different src\");\n this.disposeInstance();\n } else {\n return;\n }\n }\n\n if (src.startsWith(\"ws://\") || src.startsWith(\"wss://\")) {\n this.frameContentsInstance = new WebSocketFrameInstance(this, src, this.getScene());\n } else {\n this.frameContentsInstance = new StaticHTMLFrameInstance(this, src, this.getScene());\n }\n }\n\n public getDefinedBoxBounds(): [number, number, number, number, number, number] | null {\n if (\n this.props.minX !== null ||\n this.props.maxX !== null ||\n this.props.minY !== null ||\n this.props.maxY !== null ||\n this.props.minZ !== null ||\n this.props.maxZ !== null\n ) {\n const minX = this.props.minX ?? this.props.maxX ?? 0;\n let maxX = this.props.maxX ?? this.props.minX ?? 0;\n const minY = this.props.minY ?? this.props.maxY ?? 0;\n let maxY = this.props.maxY ?? this.props.minY ?? 0;\n const minZ = this.props.minZ ?? this.props.maxZ ?? 0;\n let maxZ = this.props.maxZ ?? this.props.minZ ?? 0;\n // If any bounds are incorrect make them equal (and therefore not able to contain anything, but visually debuggable)\n if (minX > maxX) {\n maxX = minX;\n }\n if (minY > maxY) {\n maxY = minY;\n }\n if (minZ > maxZ) {\n maxZ = minZ;\n }\n return [minX, maxX, minY, maxY, minZ, maxZ];\n }\n return null;\n }\n\n private disposeInstance() {\n if (this.frameContentsInstance !== null) {\n this.frameContentsInstance.dispose();\n this.frameContentsInstance = null;\n this.isActivelyLoaded = false;\n }\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.frameGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Frame.attributeHandler.handle(this, name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.frameGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.startEmitting();\n this.syncLoadState();\n\n this.frameGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLFrameGraphicsInterface(this);\n\n for (const name of Frame.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.applyBounds();\n }\n\n public disconnectedCallback(): void {\n this.frameGraphics?.dispose();\n this.frameGraphics = null;\n\n if (this.timer) {\n clearInterval(this.timer);\n }\n this.disposeInstance();\n super.disconnectedCallback();\n }\n}\n", "import { OrientedBoundingBox } from \"../bounding-box\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nexport class Group extends TransformableElement {\n static tagName = \"m-group\";\n static get observedAttributes(): Array {\n return [...TransformableElement.observedAttributes];\n }\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n constructor() {\n super();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n return null;\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.transformableElementGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter()) {\n return;\n }\n\n for (const name of Group.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { CollideableHelper } from \"../collision\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { ImageGraphics } from \"../graphics/ImageGraphics\";\nimport { Vect3 } from \"../math/Vect3\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultImageSrc = null;\nconst defaultImageWidth = null;\nconst defaultImageHeight = null;\nconst defaultImageOpacity = 1;\nconst defaultImageCastShadows = true;\nconst defaultImageEmissive = 0;\n\nexport type MImageProps = {\n src: string | null;\n width: number | null;\n height: number | null;\n opacity: number;\n castShadows: boolean;\n emissive: number;\n};\n\nexport class Image extends TransformableElement {\n static tagName = \"m-image\";\n\n public props: MImageProps = {\n src: defaultImageSrc,\n width: defaultImageWidth,\n height: defaultImageHeight,\n opacity: defaultImageOpacity,\n castShadows: defaultImageCastShadows,\n emissive: defaultImageEmissive as number,\n };\n\n private imageAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n width: [\n AnimationType.Number,\n defaultImageWidth,\n (newValue: number) => {\n this.props.width = newValue;\n this.imageGraphics?.setWidth(newValue, this.props);\n },\n ],\n height: [\n AnimationType.Number,\n defaultImageHeight,\n (newValue: number) => {\n this.props.height = newValue;\n this.imageGraphics?.setHeight(newValue, this.props);\n },\n ],\n opacity: [\n AnimationType.Number,\n defaultImageOpacity,\n (newValue: number) => {\n this.props.opacity = newValue;\n this.imageGraphics?.setOpacity(newValue, this.props);\n },\n ],\n emissive: [\n AnimationType.Number,\n defaultImageEmissive,\n (newValue: number) => {\n this.props.emissive = newValue;\n this.imageGraphics?.setEmissive(newValue, this.props);\n },\n ],\n });\n\n private collideableHelper = new CollideableHelper(this);\n\n private static attributeHandler = new AttributeHandler>({\n width: (instance, newValue) => {\n instance.imageAnimatedAttributeHelper.elementSetAttribute(\n \"width\",\n parseFloatAttribute(newValue, defaultImageWidth),\n );\n },\n height: (instance, newValue) => {\n instance.imageAnimatedAttributeHelper.elementSetAttribute(\n \"height\",\n parseFloatAttribute(newValue, defaultImageHeight),\n );\n },\n src: (instance, newValue) => {\n instance.props.src = newValue;\n instance.imageGraphics?.setSrc(newValue, instance.props);\n },\n opacity: (instance, newValue) => {\n instance.imageAnimatedAttributeHelper.elementSetAttribute(\n \"opacity\",\n parseFloatAttribute(newValue, defaultImageOpacity),\n );\n },\n emissive: (instance, newValue) => {\n instance.imageAnimatedAttributeHelper.elementSetAttribute(\n \"emissive\",\n parseFloatAttribute(newValue, defaultImageEmissive),\n );\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultImageCastShadows);\n instance.imageGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n });\n private imageGraphics: ImageGraphics | null;\n\n protected enable() {\n this.collideableHelper.enable();\n }\n\n protected disable() {\n this.collideableHelper.disable();\n }\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...Image.attributeHandler.getAttributes(),\n ...CollideableHelper.observedAttributes,\n ];\n }\n\n constructor() {\n super();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n const { width, height } = this.imageGraphics?.getWidthAndHeight() || { width: 0, height: 0 };\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(width, height, 0),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n public addSideEffectChild(child: MElement): void {\n this.imageAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.imageAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n this.collideableHelper.parentTransformed();\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.imageGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Image.attributeHandler.handle(this, name, newValue);\n this.collideableHelper.handle(name, newValue);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.imageGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.imageGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLImageGraphicsInterface(this, () => {\n this.applyBounds();\n this.collideableHelper.updateCollider(this.imageGraphics?.getCollisionElement());\n });\n\n for (const name of Image.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.collideableHelper.updateCollider(this.imageGraphics?.getCollisionElement());\n }\n\n disconnectedCallback() {\n this.imageAnimatedAttributeHelper.reset();\n this.imageGraphics?.dispose();\n this.imageGraphics = null;\n super.disconnectedCallback();\n this.collideableHelper.removeColliders();\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { GraphicsAdapter, InteractionGraphics } from \"../graphics\";\nimport { Vect3 } from \"../math\";\nimport { IMMLScene } from \"../scene\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultInteractionRange = 5;\nconst defaultInteractionInFocus = true;\nconst defaultInteractionLineOfSight = false;\nconst defaultInteractionPriority = 1;\nconst defaultInteractionPrompt = null;\nconst defaultInteractionDebug = false;\n\nexport type MInteractionProps = {\n range: number;\n inFocus: boolean;\n lineOfSight: boolean;\n priority: number;\n prompt: string | null;\n debug: boolean;\n};\n\nexport class Interaction<\n G extends GraphicsAdapter = GraphicsAdapter,\n> extends TransformableElement {\n static tagName = \"m-interaction\";\n private interactionGraphics: InteractionGraphics | null;\n\n private interactionAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n range: [\n AnimationType.Number,\n defaultInteractionRange,\n (newValue: number) => {\n this.props.range = newValue;\n this.applyBounds();\n this.interactionGraphics?.setRange(newValue, this.props);\n },\n ],\n });\n\n private static attributeHandler = new AttributeHandler>({\n range: (instance, newValue) => {\n instance.interactionAnimatedAttributeHelper.elementSetAttribute(\n \"range\",\n parseFloatAttribute(newValue, defaultInteractionRange),\n );\n },\n \"in-focus\": (instance, newValue) => {\n instance.props.inFocus = parseBoolAttribute(newValue, defaultInteractionInFocus);\n instance.interactionGraphics?.setInFocus(instance.props.inFocus, instance.props);\n },\n \"line-of-sight\": (instance, newValue) => {\n instance.props.lineOfSight = parseBoolAttribute(newValue, defaultInteractionLineOfSight);\n instance.interactionGraphics?.setLineOfSight(instance.props.lineOfSight, instance.props);\n },\n priority: (instance, newValue) => {\n instance.props.priority = parseFloatAttribute(newValue, defaultInteractionPriority);\n instance.interactionGraphics?.setPriority(instance.props.priority, instance.props);\n },\n prompt: (instance, newValue) => {\n instance.props.prompt = newValue;\n instance.interactionGraphics?.setPrompt(instance.props.prompt, instance.props);\n },\n debug: (instance, newValue) => {\n instance.props.debug = parseBoolAttribute(newValue, defaultInteractionDebug);\n instance.interactionGraphics?.setDebug(instance.props.debug, instance.props);\n },\n });\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...Interaction.attributeHandler.getAttributes(),\n ];\n }\n\n public props: MInteractionProps = {\n range: defaultInteractionRange as number,\n inFocus: defaultInteractionInFocus as boolean,\n lineOfSight: defaultInteractionLineOfSight as boolean,\n priority: defaultInteractionPriority as number,\n prompt: defaultInteractionPrompt as string | null,\n debug: defaultInteractionDebug as boolean,\n };\n\n private registeredScene: IMMLScene | null = null;\n\n constructor() {\n super();\n }\n\n protected enable() {\n // TODO\n }\n\n protected disable() {\n // TODO\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(this.props.range * 2, this.props.range * 2, this.props.range * 2),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n public addSideEffectChild(child: MElement): void {\n this.interactionAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.interactionAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n this.registeredScene?.updateInteraction?.(this);\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.interactionGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.interactionGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLInteractionGraphicsInterface(this);\n\n for (const name of Interaction.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.registerInteraction();\n }\n\n public disconnectedCallback(): void {\n this.unregisterInteraction();\n this.interactionAnimatedAttributeHelper.reset();\n this.interactionGraphics?.dispose();\n this.interactionGraphics = null;\n super.disconnectedCallback();\n }\n\n public attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n super.attributeChangedCallback(name, oldValue, newValue);\n if (Interaction.attributeHandler.handle(this, name, newValue)) {\n if (this.registeredScene !== null) {\n this.registeredScene.updateInteraction?.(this);\n }\n }\n }\n\n public trigger() {\n this.dispatchEvent(new CustomEvent(\"interact\", { detail: {} }));\n }\n\n private registerInteraction() {\n const scene = this.getScene();\n this.registeredScene = scene;\n scene.addInteraction?.(this);\n }\n\n private unregisterInteraction() {\n if (this.registeredScene !== null) {\n this.registeredScene.removeInteraction?.(this);\n this.registeredScene = null;\n }\n }\n}\n", "import * as THREE from \"three\";\n\nimport { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport {\n AttributeHandler,\n parseBoolAttribute,\n parseColorAttribute,\n parseEnumAttribute,\n parseFloatAttribute,\n} from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { CollideableHelper } from \"../collision\";\nimport { MMLColor } from \"../color\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { LabelGraphics } from \"../graphics\";\nimport { Vect3 } from \"../math\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nexport enum MLabelAlignment {\n left = \"left\",\n center = \"center\",\n right = \"right\",\n}\n\nconst defaultLabelColor = { r: 1, g: 1, b: 1 };\nconst defaultFontColor = { r: 0, g: 0, b: 0 };\nconst defaultLabelAlignment = MLabelAlignment.left;\nconst defaultLabelFontSize = 24;\nconst defaultLabelPadding = 8;\nconst defaultLabelWidth = 1;\nconst defaultLabelHeight = 1;\nconst defaultLabelCastShadows = true;\nconst defaultEmissive = 0;\n\nexport type MLabelProps = {\n content: string;\n alignment: MLabelAlignment;\n width: number;\n height: number;\n fontSize: number;\n padding: number;\n color: MMLColor;\n fontColor: MMLColor;\n castShadows: boolean;\n emissive: number;\n};\n\nexport class Label extends TransformableElement {\n static tagName = \"m-label\";\n private labelGraphics: LabelGraphics | null;\n private collideableHelper = new CollideableHelper(this);\n\n private labelAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n color: [\n AnimationType.Color,\n defaultLabelColor,\n (newValue: THREE.Color) => {\n this.props.color = newValue;\n this.labelGraphics?.setColor(this.props.color, this.props);\n },\n ],\n \"font-color\": [\n AnimationType.Color,\n defaultFontColor,\n (newValue: THREE.Color) => {\n this.props.fontColor = newValue;\n this.labelGraphics?.setFontColor(this.props.fontColor, this.props);\n },\n ],\n width: [\n AnimationType.Number,\n defaultLabelWidth,\n (newValue: number) => {\n this.props.width = newValue;\n this.labelGraphics?.setWidth(this.props.width, this.props);\n },\n ],\n height: [\n AnimationType.Number,\n defaultLabelHeight,\n (newValue: number) => {\n this.props.height = newValue;\n this.labelGraphics?.setHeight(this.props.height, this.props);\n },\n ],\n padding: [\n AnimationType.Number,\n defaultLabelPadding,\n (newValue: number) => {\n this.props.padding = newValue;\n this.labelGraphics?.setPadding(this.props.padding, this.props);\n },\n ],\n \"font-size\": [\n AnimationType.Number,\n defaultLabelFontSize,\n (newValue: number) => {\n this.props.fontSize = newValue;\n this.labelGraphics?.setFontSize(this.props.fontSize, this.props);\n },\n ],\n });\n\n public props: MLabelProps = {\n content: \"\",\n alignment: defaultLabelAlignment,\n width: defaultLabelWidth,\n height: defaultLabelHeight,\n fontSize: defaultLabelFontSize,\n padding: defaultLabelPadding,\n color: defaultLabelColor,\n fontColor: defaultFontColor,\n castShadows: defaultLabelCastShadows,\n emissive: defaultEmissive as number,\n };\n\n private static attributeHandler = new AttributeHandler>({\n width: (instance, newValue) => {\n instance.labelAnimatedAttributeHelper.elementSetAttribute(\n \"width\",\n parseFloatAttribute(newValue, defaultLabelWidth),\n );\n },\n height: (instance, newValue) => {\n instance.labelAnimatedAttributeHelper.elementSetAttribute(\n \"height\",\n parseFloatAttribute(newValue, defaultLabelHeight),\n );\n },\n color: (instance, newValue) => {\n instance.labelAnimatedAttributeHelper.elementSetAttribute(\n \"color\",\n parseColorAttribute(newValue, defaultLabelColor),\n );\n },\n \"font-color\": (instance, newValue) => {\n instance.labelAnimatedAttributeHelper.elementSetAttribute(\n \"font-color\",\n parseColorAttribute(newValue, defaultFontColor),\n );\n },\n \"font-size\": (instance, newValue) => {\n instance.labelAnimatedAttributeHelper.elementSetAttribute(\n \"font-size\",\n parseFloatAttribute(newValue, defaultLabelFontSize),\n );\n },\n padding: (instance, newValue) => {\n instance.labelAnimatedAttributeHelper.elementSetAttribute(\n \"padding\",\n parseFloatAttribute(newValue, defaultLabelPadding),\n );\n },\n content: (instance, newValue) => {\n instance.props.content = newValue || \"\";\n instance.labelGraphics?.setContent(instance.props.content, instance.props);\n },\n alignment: (instance, newValue) => {\n instance.props.alignment = parseEnumAttribute(\n newValue,\n MLabelAlignment,\n defaultLabelAlignment,\n );\n instance.labelGraphics?.setAlignment(instance.props.alignment, instance.props);\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultLabelCastShadows);\n instance.labelGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n emissive: (instance, newValue) => {\n instance.props.emissive = parseFloatAttribute(newValue, defaultEmissive);\n instance.labelGraphics?.setEmissive(instance.props.emissive, instance.props);\n },\n });\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n static get observedAttributes(): Array {\n return [...TransformableElement.observedAttributes, ...Label.attributeHandler.getAttributes()];\n }\n\n constructor() {\n super();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(this.props.width, this.props.height, 0),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n public addSideEffectChild(child: MElement): void {\n this.labelAnimatedAttributeHelper.addSideEffectChild(child);\n\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.labelAnimatedAttributeHelper.removeSideEffectChild(child);\n\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n public attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.labelGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Label.attributeHandler.handle(this, name, newValue);\n this.collideableHelper.handle(name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.labelGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.labelGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLLabelGraphicsInterface(this);\n\n for (const name of Label.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.applyBounds();\n this.collideableHelper.updateCollider(this.labelGraphics?.getCollisionElement());\n }\n\n public disconnectedCallback(): void {\n this.collideableHelper.removeColliders();\n this.labelAnimatedAttributeHelper.reset();\n this.labelGraphics?.dispose();\n this.labelGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport {\n AttributeHandler,\n parseBoolAttribute,\n parseColorAttribute,\n parseEnumAttribute,\n parseFloatAttribute,\n} from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { MMLColor } from \"../color\";\nimport { GraphicsAdapter, LightGraphics } from \"../graphics\";\nimport { AnimationType, AttributeAnimation } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nexport enum LightTypes {\n spotlight = \"spotlight\",\n point = \"point\",\n}\n\nconst defaultLightColor: MMLColor = { r: 1, g: 1, b: 1 };\nconst defaultLightIntensity = 1;\nconst defaultLightAngle = 45;\nconst defaultLightEnabled = true;\nconst defaultLightDebug = false;\nconst defaultLightDistance = null;\nconst defaultLightCastShadows = true;\nconst defaultLightType = LightTypes.spotlight;\n\nexport type MLightProps = {\n color: MMLColor;\n intensity: number;\n enabled: boolean;\n angleDeg: number;\n distance: number | null;\n castShadows: boolean;\n debug: boolean;\n type: LightTypes;\n};\n\nexport class Light extends TransformableElement {\n static tagName = \"m-light\";\n\n private lightGraphics: LightGraphics | null;\n\n private lightAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n color: [\n AnimationType.Color,\n defaultLightColor,\n (newValue: MMLColor) => {\n this.props.color = newValue;\n this.lightGraphics?.setColor(newValue, this.props);\n },\n ],\n intensity: [\n AnimationType.Number,\n defaultLightIntensity,\n (newValue: number) => {\n this.props.intensity = newValue;\n this.lightGraphics?.setIntensity(newValue, this.props);\n },\n ],\n angle: [\n AnimationType.Number,\n defaultLightAngle,\n (newValue: number) => {\n this.props.angleDeg = newValue;\n this.lightGraphics?.setAngle(newValue, this.props);\n },\n ],\n distance: [\n AnimationType.Number,\n defaultLightDistance,\n (newValue: number) => {\n this.props.distance = newValue;\n this.lightGraphics?.setDistance(newValue, this.props);\n },\n ],\n });\n\n public props: MLightProps = {\n color: defaultLightColor,\n intensity: defaultLightIntensity,\n enabled: defaultLightEnabled,\n angleDeg: defaultLightAngle,\n distance: defaultLightDistance,\n castShadows: defaultLightCastShadows,\n debug: defaultLightDebug,\n type: defaultLightType as LightTypes,\n };\n\n private static attributeHandler = new AttributeHandler>({\n color: (instance, newValue) => {\n instance.lightAnimatedAttributeHelper.elementSetAttribute(\n \"color\",\n parseColorAttribute(newValue, defaultLightColor),\n );\n },\n intensity: (instance, newValue) => {\n instance.lightAnimatedAttributeHelper.elementSetAttribute(\n \"intensity\",\n parseFloatAttribute(newValue, defaultLightIntensity),\n );\n },\n angle: (instance, newValue) => {\n instance.lightAnimatedAttributeHelper.elementSetAttribute(\n \"angle\",\n parseFloatAttribute(newValue, defaultLightAngle),\n );\n },\n distance: (instance, newValue) => {\n instance.lightAnimatedAttributeHelper.elementSetAttribute(\n \"distance\",\n parseFloatAttribute(newValue, defaultLightDistance),\n );\n },\n enabled: (instance, newValue) => {\n instance.props.enabled = parseBoolAttribute(newValue, defaultLightEnabled);\n instance.lightGraphics?.setEnabled(instance.props.enabled, instance.props);\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultLightCastShadows);\n instance.lightGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n debug: (instance, newValue) => {\n instance.props.debug = parseBoolAttribute(newValue, defaultLightDebug);\n instance.lightGraphics?.setDebug(instance.props.debug, instance.props);\n },\n type: (instance, newValue) => {\n instance.props.type = parseEnumAttribute(newValue, LightTypes, defaultLightType);\n instance.lightGraphics?.setType(instance.props.type, instance.props);\n },\n });\n\n static get observedAttributes(): Array {\n return [...TransformableElement.observedAttributes, ...Light.attributeHandler.getAttributes()];\n }\n\n constructor() {\n super();\n }\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromMatrixWorld(this.transformableElementGraphics.getWorldMatrix());\n }\n\n public addSideEffectChild(child: MElement): void {\n if (child instanceof AttributeAnimation) {\n const attr = child.getAnimatedAttributeName();\n if (attr) {\n this.lightAnimatedAttributeHelper.addAnimation(child, attr);\n }\n }\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n if (child instanceof AttributeAnimation) {\n const attr = child.getAnimatedAttributeName();\n if (attr) {\n this.lightAnimatedAttributeHelper.removeAnimation(child, attr);\n }\n }\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.lightGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Light.attributeHandler.handle(this, name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.lightGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.lightGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLLightGraphicsInterface(this);\n\n for (const name of Light.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n }\n\n public disconnectedCallback() {\n this.lightAnimatedAttributeHelper.reset();\n this.lightGraphics?.dispose();\n this.lightGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "import { AttributeHandler } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { GraphicsAdapter, LinkGraphics } from \"../graphics\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nexport type MLinkProps = {\n href: string | null;\n target: string | null;\n};\n\nexport class Link extends TransformableElement {\n static tagName = \"m-link\";\n private linkGraphics: LinkGraphics | null;\n\n private abortController: AbortController | null = null;\n\n public props: MLinkProps = {\n href: null,\n target: null,\n };\n\n private static attributeHandler = new AttributeHandler>({\n href: (instance, newValue) => {\n instance.props.href = newValue !== null ? newValue : null;\n },\n target: (instance, newValue) => {\n instance.props.target = newValue !== null ? newValue : null;\n },\n });\n\n static get observedAttributes(): Array {\n return [...TransformableElement.observedAttributes, ...Link.attributeHandler.getAttributes()];\n }\n\n /*\n This is a simple check to ensure that the href is an acceptable URL and is\n not a \"javascript:alert('foo')\" URL or something other than a navigable URL.\n */\n static isAcceptableHref(href: string): boolean {\n const url = new URL(href, window.location.href);\n if (url.protocol === \"http:\" || url.protocol === \"https:\") {\n return true;\n }\n return false;\n }\n\n constructor() {\n super();\n\n this.addEventListener(\"click\", () => {\n if (this.props.href) {\n const href = this.props.href;\n if (!Link.isAcceptableHref(href)) {\n console.warn(\n `Refusing to navigate to ${href} as it does not meet the acceptable href criteria.`,\n );\n return;\n }\n\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null;\n }\n this.abortController = new AbortController();\n this.getScene().link(\n { href, target: this.props.target ?? undefined, popup: false },\n this.abortController.signal,\n () => {\n this.abortController = null;\n },\n );\n }\n });\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.transformableElementGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Link.attributeHandler.handle(this, name, newValue);\n }\n\n protected disable(): void {\n // no-op\n }\n\n protected enable(): void {\n // no-op\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n return null;\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.linkGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.linkGraphics = graphicsAdapter.getGraphicsAdapterFactory().MMLLinkGraphicsInterface(this);\n\n for (const name of Link.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n }\n\n public disconnectedCallback(): void {\n this.linkGraphics?.dispose();\n this.linkGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport {\n AttributeHandler,\n parseBoolAttribute,\n parseColorAttribute,\n parseFloatAttribute,\n} from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { CollideableHelper } from \"../collision\";\nimport { MMLColor } from \"../color\";\nimport { GraphicsAdapter, PlaneGraphics } from \"../graphics\";\nimport { Vect3 } from \"../math\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultPlaneColor: MMLColor = { r: 1, g: 1, b: 1 };\nconst defaultPlaneWidth = 1;\nconst defaultPlaneHeight = 1;\nconst defaultPlaneOpacity = 1;\nconst defaultPlaneCastShadows = true;\n\nexport type MPlaneProps = {\n width: number;\n height: number;\n color: MMLColor;\n opacity: number;\n castShadows: boolean;\n};\n\nexport class Plane extends TransformableElement {\n static tagName = \"m-plane\";\n private planeGraphics: PlaneGraphics | null;\n\n public props: MPlaneProps = {\n width: defaultPlaneWidth,\n height: defaultPlaneHeight,\n color: defaultPlaneColor,\n opacity: defaultPlaneOpacity,\n castShadows: defaultPlaneCastShadows,\n };\n\n private planeAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n color: [\n AnimationType.Color,\n defaultPlaneColor,\n (newValue: MMLColor) => {\n this.props.color = newValue;\n this.planeGraphics?.setColor(newValue, this.props);\n },\n ],\n width: [\n AnimationType.Number,\n defaultPlaneWidth,\n (newValue: number) => {\n this.props.width = newValue;\n this.planeGraphics?.setWidth(newValue, this.props);\n this.applyBounds();\n this.collideableHelper.updateCollider(this.planeGraphics?.getCollisionElement());\n },\n ],\n height: [\n AnimationType.Number,\n defaultPlaneHeight,\n (newValue: number) => {\n this.props.height = newValue;\n this.planeGraphics?.setHeight(newValue, this.props);\n this.applyBounds();\n this.collideableHelper.updateCollider(this.planeGraphics?.getCollisionElement());\n },\n ],\n opacity: [\n AnimationType.Number,\n defaultPlaneOpacity,\n (newValue: number) => {\n this.props.opacity = newValue;\n this.planeGraphics?.setOpacity(newValue, this.props);\n },\n ],\n });\n private collideableHelper = new CollideableHelper(this);\n\n private static attributeHandler = new AttributeHandler>({\n width: (instance, newValue) => {\n instance.planeAnimatedAttributeHelper.elementSetAttribute(\n \"width\",\n parseFloatAttribute(newValue, defaultPlaneWidth),\n );\n },\n height: (instance, newValue) => {\n instance.planeAnimatedAttributeHelper.elementSetAttribute(\n \"height\",\n parseFloatAttribute(newValue, defaultPlaneHeight),\n );\n },\n color: (instance, newValue) => {\n instance.planeAnimatedAttributeHelper.elementSetAttribute(\n \"color\",\n parseColorAttribute(newValue, defaultPlaneColor),\n );\n },\n opacity: (instance, newValue) => {\n instance.planeAnimatedAttributeHelper.elementSetAttribute(\n \"opacity\",\n parseFloatAttribute(newValue, defaultPlaneOpacity),\n );\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultPlaneCastShadows);\n instance.planeGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n });\n\n protected enable() {\n this.collideableHelper.enable();\n }\n\n protected disable() {\n this.collideableHelper.disable();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(this.props.width, this.props.height, 0),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...Plane.attributeHandler.getAttributes(),\n ...CollideableHelper.observedAttributes,\n ];\n }\n\n constructor() {\n super();\n }\n\n public addSideEffectChild(child: MElement): void {\n this.planeAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.planeAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n this.collideableHelper.parentTransformed();\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n public attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.planeGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Plane.attributeHandler.handle(this, name, newValue);\n this.collideableHelper.handle(name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.planeGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.planeGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLPlaneGraphicsInterface(this);\n\n for (const name of Plane.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.applyBounds();\n this.collideableHelper.updateCollider(this.planeGraphics?.getCollisionElement());\n }\n\n public disconnectedCallback(): void {\n this.collideableHelper.removeColliders();\n this.planeAnimatedAttributeHelper.reset();\n this.planeGraphics?.dispose();\n this.planeGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { GraphicsAdapter, PositionProbeGraphics } from \"../graphics\";\nimport { Vect3 } from \"../math\";\nimport { getRelativePositionAndRotationRelativeToObject } from \"../position\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultPositionProbeRange = 10;\nconst defaultPositionProbeInterval = 1000;\nconst defaultPositionProbeMinimumInterval = 100;\nconst defaultPositionProbeDebug = false;\nconst positionProbeEnterEventName = \"positionenter\";\nconst positionProbePositionMoveEventName = \"positionmove\";\nconst positionProbeLeaveEventName = \"positionleave\";\n\nexport type MPositionProbeProps = {\n intervalMs: number;\n debug: boolean;\n range: number;\n};\n\nexport class PositionProbe<\n G extends GraphicsAdapter = GraphicsAdapter,\n> extends TransformableElement {\n static tagName = \"m-position-probe\";\n private positionProbeGraphics: PositionProbeGraphics | null;\n\n private positionProbeAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n range: [\n AnimationType.Number,\n defaultPositionProbeRange,\n (newValue: number) => {\n this.props.range = newValue;\n this.positionProbeGraphics?.setRange(newValue, this.props);\n this.applyBounds();\n },\n ],\n });\n\n public props: MPositionProbeProps = {\n intervalMs: defaultPositionProbeInterval,\n debug: defaultPositionProbeDebug,\n range: defaultPositionProbeRange,\n };\n\n private static attributeHandler = new AttributeHandler>({\n range: (instance, newValue) => {\n instance.positionProbeAnimatedAttributeHelper.elementSetAttribute(\n \"range\",\n parseFloatAttribute(newValue, defaultPositionProbeRange),\n );\n },\n interval: (instance, newValue) => {\n instance.props.intervalMs = Math.max(\n defaultPositionProbeMinimumInterval,\n parseFloatAttribute(newValue, defaultPositionProbeInterval),\n );\n instance.startEmitting();\n },\n debug: (instance, newValue) => {\n instance.props.debug = parseBoolAttribute(newValue, defaultPositionProbeDebug);\n instance.positionProbeGraphics?.setDebug(instance.props.debug, instance.props);\n },\n });\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...PositionProbe.attributeHandler.getAttributes(),\n ];\n }\n\n private timer: NodeJS.Timeout | null = null;\n\n private currentlyInRange = false;\n\n constructor() {\n super();\n }\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n public parentTransformed() {\n // no-op\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(this.props.range * 2, this.props.range * 2, this.props.range * 2),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n public addSideEffectChild(child: MElement): void {\n this.positionProbeAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.positionProbeAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.positionProbeGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n PositionProbe.attributeHandler.handle(this, name, newValue);\n }\n\n private emitPosition() {\n const userPositionAndRotation = this.getUserPositionAndRotation();\n const elementRelative = getRelativePositionAndRotationRelativeToObject(\n userPositionAndRotation,\n this,\n );\n\n // Check if the position is within range\n const distance = new Vect3().copy(elementRelative.position).length();\n\n let withinBounds = true;\n this.getAppliedBounds().forEach((bounds) => {\n if (!bounds.containsPoint(userPositionAndRotation.position)) {\n withinBounds = false;\n }\n });\n\n if (withinBounds && distance <= this.props.range) {\n const elementRelativePositionAndRotation = {\n position: elementRelative.position,\n rotation: {\n x: elementRelative.rotation.x,\n y: elementRelative.rotation.y,\n z: elementRelative.rotation.z,\n },\n };\n\n let documentRoot: MElement | null = null;\n const remoteDocument = this.getInitiatedRemoteDocument();\n if (remoteDocument) {\n documentRoot = remoteDocument;\n }\n const documentRelative =\n documentRoot !== null\n ? getRelativePositionAndRotationRelativeToObject(userPositionAndRotation, documentRoot)\n : userPositionAndRotation;\n\n const documentRelativePositionAndRotation = {\n position: documentRelative.position,\n rotation: {\n x: documentRelative.rotation.x,\n y: documentRelative.rotation.y,\n z: documentRelative.rotation.z,\n },\n };\n if (!this.currentlyInRange) {\n this.currentlyInRange = true;\n this.dispatchEvent(\n new CustomEvent(positionProbeEnterEventName, {\n detail: {\n elementRelative: elementRelativePositionAndRotation,\n documentRelative: documentRelativePositionAndRotation,\n },\n }),\n );\n } else {\n this.dispatchEvent(\n new CustomEvent(positionProbePositionMoveEventName, {\n detail: {\n elementRelative: elementRelativePositionAndRotation,\n documentRelative: documentRelativePositionAndRotation,\n },\n }),\n );\n }\n } else {\n if (this.currentlyInRange) {\n this.currentlyInRange = false;\n this.dispatchEvent(new CustomEvent(positionProbeLeaveEventName, {}));\n }\n }\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.positionProbeGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.positionProbeGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLPositionProbeGraphicsInterface(this);\n\n for (const name of PositionProbe.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.applyBounds();\n this.startEmitting();\n }\n\n public disconnectedCallback(): void {\n if (this.timer) {\n clearInterval(this.timer);\n }\n this.positionProbeAnimatedAttributeHelper.reset();\n this.positionProbeGraphics?.dispose();\n this.positionProbeGraphics = null;\n super.disconnectedCallback();\n }\n\n private startEmitting() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.timer = setInterval(() => {\n this.emitPosition();\n }, this.props.intervalMs);\n }\n}\n", "import { AttributeHandler } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { GraphicsAdapter, PromptGraphics } from \"../graphics\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nexport type MPromptProps = {\n message: string | undefined;\n placeholder: string | undefined;\n prefill: string | undefined;\n};\n\nexport class Prompt extends TransformableElement {\n static tagName = \"m-prompt\";\n private promptGraphics: PromptGraphics | null;\n\n private abortController: AbortController | null = null;\n\n public props: MPromptProps = {\n message: undefined as string | undefined,\n placeholder: undefined as string | undefined,\n prefill: undefined as string | undefined,\n };\n\n private static attributeHandler = new AttributeHandler>({\n message: (instance, newValue) => {\n instance.props.message = newValue !== null ? newValue : undefined;\n instance.promptGraphics?.setMessage(instance.props.message, instance.props);\n },\n placeholder: (instance, newValue) => {\n instance.props.placeholder = newValue !== null ? newValue : undefined;\n instance.promptGraphics?.setPlaceholder(instance.props.placeholder, instance.props);\n },\n prefill: (instance, newValue) => {\n instance.props.prefill = newValue !== null ? newValue : undefined;\n instance.promptGraphics?.setPrefill(instance.props.prefill, instance.props);\n },\n });\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n static get observedAttributes(): Array {\n return [...TransformableElement.observedAttributes, ...Prompt.attributeHandler.getAttributes()];\n }\n\n constructor() {\n super();\n\n this.addEventListener(\"click\", () => {\n this.trigger();\n });\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n return null;\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.promptGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Prompt.attributeHandler.handle(this, name, newValue);\n }\n\n private trigger(): void {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null;\n }\n this.abortController = new AbortController();\n this.getScene().prompt(this.props, this.abortController.signal, (result) => {\n if (!this.isConnected) {\n return;\n }\n if (result !== null) {\n this.dispatchEvent(\n new CustomEvent(\"prompt\", { bubbles: false, detail: { value: result } }),\n );\n }\n });\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.promptGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.promptGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLPromptGraphicsInterface(this);\n\n for (const name of Prompt.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n }\n\n public disconnectedCallback(): void {\n this.promptGraphics?.dispose();\n this.promptGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "/**\n * The MMLDocumentTimeManager class is responsible for tracking the current document time and notifying listeners of\n * either shifts in time (e.g. media synced to time) and also ticking (e.g. for elements that are animating) when the\n * document time changes.\n */\nexport class MMLDocumentTimeManager {\n private relativeDocumentStartTime = 0;\n private overridenDocumentTime: number | null = null;\n private documentTimeListeners = new Set<(time: number) => void>();\n private documentTimeTickListeners = new Set<(time: number) => void>();\n\n constructor() {}\n\n public tick() {\n const documentTime = this.getDocumentTime();\n for (const cb of this.documentTimeTickListeners) {\n cb(documentTime);\n }\n }\n\n public getDocumentTime(): number {\n if (this.overridenDocumentTime !== null) {\n return this.overridenDocumentTime;\n }\n return (document.timeline.currentTime as number) - this.relativeDocumentStartTime;\n }\n\n public getWindowTime(): number {\n if (this.overridenDocumentTime !== null) {\n return this.overridenDocumentTime;\n }\n return document.timeline.currentTime as number;\n }\n\n public addDocumentTimeListenerCallback(cb: (time: number) => void) {\n this.documentTimeListeners.add(cb);\n }\n\n public removeDocumentTimeListenerCallback(cb: (time: number) => void) {\n this.documentTimeListeners.delete(cb);\n }\n\n public addDocumentTimeTickListenerCallback(cb: (time: number) => void) {\n this.documentTimeTickListeners.add(cb);\n }\n\n public removeDocumentTimeTickListenerCallback(cb: (time: number) => void) {\n this.documentTimeTickListeners.delete(cb);\n }\n\n public setDocumentTime(documentTime: number) {\n if (this.overridenDocumentTime !== null) {\n return;\n }\n this.relativeDocumentStartTime = (document.timeline.currentTime as number) - documentTime;\n\n for (const cb of this.documentTimeListeners) {\n cb(documentTime);\n }\n }\n\n // This method is used for testing to allow overriding the document time\n public overrideDocumentTime(documentTime: number) {\n this.overridenDocumentTime = documentTime;\n\n for (const cb of this.documentTimeListeners) {\n cb(documentTime);\n }\n }\n}\n", "import { OrientedBoundingBox } from \"../bounding-box\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { RemoteDocumentGraphics } from \"../graphics\";\nimport { IMMLScene } from \"../scene\";\nimport { MMLDocumentTimeManager } from \"../time\";\nimport { consumeEventEventName, MElement } from \"./MElement\";\n\nexport class RemoteDocument extends MElement {\n static tagName = \"m-remote-document\";\n\n private scene: IMMLScene | null = null;\n private documentAddress: string | null = null;\n private documentTimeManager: MMLDocumentTimeManager;\n private animationFrameCallback: number | null = null;\n private remoteDocumentGraphics: RemoteDocumentGraphics | null;\n\n constructor() {\n super();\n this.documentTimeManager = new MMLDocumentTimeManager();\n\n this.addEventListener(consumeEventEventName, (wrappedEvent: CustomEvent) => {\n wrappedEvent.stopPropagation();\n });\n }\n\n public showError(showError: boolean) {\n this.remoteDocumentGraphics?.showError(showError);\n }\n\n protected enable() {\n // no-op\n }\n\n protected disable() {\n // no-op\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n return null;\n }\n\n public parentTransformed(): void {\n // no-op\n }\n\n public isClickable(): boolean {\n return false;\n }\n\n public getDocumentTimeManager(): MMLDocumentTimeManager {\n return this.documentTimeManager;\n }\n\n public connectedCallback(): void {\n this.style.display = \"none\";\n if (!this.isConnected) {\n return;\n }\n\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.remoteDocumentGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.remoteDocumentGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .RemoteDocumentGraphicsInterface(this);\n this.animationFrameCallback = window.requestAnimationFrame(() => {\n this.tick();\n });\n }\n\n public disconnectedCallback() {\n if (this.animationFrameCallback) {\n window.cancelAnimationFrame(this.animationFrameCallback);\n this.animationFrameCallback = null;\n }\n this.remoteDocumentGraphics?.dispose();\n this.remoteDocumentGraphics = null;\n super.disconnectedCallback();\n }\n\n public dispatchEvent(event: CustomEvent): boolean {\n if (this.contains(event.detail.element)) {\n return HTMLElement.prototype.dispatchEvent.call(this, event);\n } else {\n return false;\n }\n }\n\n public init(mmlScene: IMMLScene, documentAddress: string) {\n if (this.scene) {\n throw new Error(\"Scene already set\");\n }\n this.scene = mmlScene;\n this.documentAddress = documentAddress;\n this.connectedCallback();\n }\n\n public getDocumentAddress(): string | null {\n return this.documentAddress;\n }\n\n public getMMLScene(): IMMLScene | null {\n if (!this.scene) {\n return null;\n }\n return this.scene;\n }\n\n public tick() {\n this.documentTimeManager.tick();\n this.animationFrameCallback = window.requestAnimationFrame(() => {\n this.tick();\n });\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport {\n AttributeHandler,\n parseBoolAttribute,\n parseColorAttribute,\n parseFloatAttribute,\n} from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { CollideableHelper } from \"../collision\";\nimport { MMLColor } from \"../color\";\nimport { GraphicsAdapter, SphereGraphics } from \"../graphics\";\nimport { Vect3 } from \"../math\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultSphereColor: MMLColor = { r: 1, g: 1, b: 1 };\nconst defaultSphereRadius = 0.5;\nconst defaultSphereOpacity = 1;\nconst defaultSphereCastShadows = true;\n\nexport type MSphereProps = {\n radius: number;\n color: MMLColor;\n opacity: number;\n castShadows: boolean;\n};\n\nexport class Sphere extends TransformableElement {\n static tagName = \"m-sphere\";\n\n public props: MSphereProps = {\n radius: defaultSphereRadius,\n color: defaultSphereColor,\n opacity: defaultSphereOpacity,\n castShadows: defaultSphereCastShadows,\n };\n\n private sphereAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n color: [\n AnimationType.Color,\n defaultSphereColor,\n (newValue: MMLColor) => {\n this.props.color = newValue;\n this.sphereGraphics?.setColor(newValue, this.props);\n },\n ],\n radius: [\n AnimationType.Number,\n defaultSphereRadius,\n (newValue: number) => {\n this.props.radius = newValue;\n this.sphereGraphics?.setRadius(newValue, this.props);\n this.applyBounds();\n this.collideableHelper.updateCollider(this.sphereGraphics?.getCollisionElement());\n },\n ],\n opacity: [\n AnimationType.Number,\n defaultSphereOpacity,\n (newValue: number) => {\n this.props.opacity = newValue;\n this.sphereGraphics?.setOpacity(newValue, this.props);\n },\n ],\n });\n private collideableHelper = new CollideableHelper(this);\n\n private static attributeHandler = new AttributeHandler>({\n radius: (instance, newValue) => {\n instance.sphereAnimatedAttributeHelper.elementSetAttribute(\n \"radius\",\n parseFloatAttribute(newValue, defaultSphereRadius),\n );\n },\n color: (instance, newValue) => {\n instance.sphereAnimatedAttributeHelper.elementSetAttribute(\n \"color\",\n parseColorAttribute(newValue, defaultSphereColor),\n );\n },\n opacity: (instance, newValue) => {\n instance.sphereAnimatedAttributeHelper.elementSetAttribute(\n \"opacity\",\n parseFloatAttribute(newValue, defaultSphereOpacity),\n );\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultSphereCastShadows);\n instance.sphereGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n });\n private sphereGraphics: SphereGraphics | null;\n\n protected enable() {\n this.collideableHelper.enable();\n }\n\n protected disable() {\n this.collideableHelper.disable();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.transformableElementGraphics) {\n return null;\n }\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(this.props.radius * 2, this.props.radius * 2, this.props.radius * 2),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...Sphere.attributeHandler.getAttributes(),\n ...CollideableHelper.observedAttributes,\n ];\n }\n\n constructor() {\n super();\n }\n\n public addSideEffectChild(child: MElement): void {\n this.sphereAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.sphereAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n this.collideableHelper.parentTransformed();\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n public attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.sphereGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Sphere.attributeHandler.handle(this, name, newValue);\n this.collideableHelper.handle(name, newValue);\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.sphereGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.sphereGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLSphereGraphicsInterface(this);\n\n for (const name of Sphere.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.applyBounds();\n this.collideableHelper.updateCollider(this.sphereGraphics.getCollisionElement());\n }\n\n public disconnectedCallback(): void {\n this.collideableHelper.removeColliders();\n this.sphereAnimatedAttributeHelper.reset();\n this.sphereGraphics?.dispose();\n this.sphereGraphics = null;\n super.disconnectedCallback();\n }\n}\n", "import { AnimatedAttributeHelper } from \"../attribute-animation\";\nimport { AttributeHandler, parseBoolAttribute, parseFloatAttribute } from \"../attributes\";\nimport { OrientedBoundingBox } from \"../bounding-box\";\nimport { CollideableHelper } from \"../collision\";\nimport { GraphicsAdapter, VideoGraphics } from \"../graphics\";\nimport { Vect3 } from \"../math\";\nimport { AnimationType } from \"./AttributeAnimation\";\nimport { MElement } from \"./MElement\";\nimport { TransformableElement } from \"./TransformableElement\";\n\nconst defaultVideoWidth = null;\nconst defaultVideoHeight = null;\nconst defaultVideoVolume = 1;\nconst defaultVideoLoop = true;\nconst defaultVideoEnabled = true;\nconst defaultVideoStartTime = 0;\nconst defaultVideoPauseTime = null;\nconst defaultVideoSrc = null;\nconst defaultVideoCastShadows = true;\nconst defaultVideoEmissive = 0;\n\nexport type MVideoProps = {\n width: number | null;\n height: number | null;\n enabled: boolean;\n loop: boolean;\n startTime: number;\n pauseTime: number | null;\n src: string | null;\n volume: number;\n castShadows: boolean;\n emissive: number;\n};\n\nexport class Video extends TransformableElement {\n static tagName = \"m-video\";\n\n private videoAnimatedAttributeHelper = new AnimatedAttributeHelper(this, {\n width: [\n AnimationType.Number,\n defaultVideoWidth,\n (newValue: number) => {\n this.props.width = newValue;\n this.videoGraphics?.setWidth(newValue, this.props);\n },\n ],\n height: [\n AnimationType.Number,\n defaultVideoHeight,\n (newValue: number) => {\n this.props.height = newValue;\n this.videoGraphics?.setHeight(newValue, this.props);\n },\n ],\n emissive: [\n AnimationType.Number,\n defaultVideoEmissive,\n (newValue: number) => {\n this.props.emissive = newValue;\n this.videoGraphics?.setEmissive(newValue, this.props);\n },\n ],\n });\n\n static get observedAttributes(): Array {\n return [\n ...TransformableElement.observedAttributes,\n ...Video.attributeHandler.getAttributes(),\n ...CollideableHelper.observedAttributes,\n ];\n }\n\n private documentTimeListener: { remove: () => void };\n private collideableHelper = new CollideableHelper(this);\n\n // Parsed attribute values\n public props: MVideoProps = {\n startTime: defaultVideoStartTime,\n pauseTime: defaultVideoPauseTime,\n src: defaultVideoSrc,\n loop: defaultVideoLoop,\n enabled: defaultVideoEnabled,\n volume: defaultVideoVolume,\n width: defaultVideoWidth,\n height: defaultVideoHeight,\n castShadows: defaultVideoCastShadows,\n emissive: defaultVideoEmissive,\n };\n\n private static attributeHandler = new AttributeHandler>({\n width: (instance, newValue) => {\n instance.videoAnimatedAttributeHelper.elementSetAttribute(\n \"width\",\n parseFloatAttribute(newValue, defaultVideoWidth),\n );\n },\n height: (instance, newValue) => {\n instance.videoAnimatedAttributeHelper.elementSetAttribute(\n \"height\",\n parseFloatAttribute(newValue, defaultVideoHeight),\n );\n },\n enabled: (instance, newValue) => {\n instance.props.enabled = parseBoolAttribute(newValue, defaultVideoEnabled);\n instance.videoGraphics?.setEnabled(instance.props.enabled, instance.props);\n },\n loop: (instance, newValue) => {\n instance.props.loop = parseBoolAttribute(newValue, defaultVideoLoop);\n instance.videoGraphics?.setLoop(instance.props.loop, instance.props);\n },\n \"start-time\": (instance, newValue) => {\n instance.props.startTime = parseFloatAttribute(newValue, defaultVideoStartTime);\n instance.videoGraphics?.setStartTime(instance.props.startTime, instance.props);\n },\n \"pause-time\": (instance, newValue) => {\n instance.props.pauseTime = parseFloatAttribute(newValue, defaultVideoPauseTime);\n instance.videoGraphics?.setPauseTime(instance.props.pauseTime, instance.props);\n },\n src: (instance, newValue) => {\n instance.props.src = newValue;\n instance.videoGraphics?.setSrc(newValue, instance.props);\n },\n volume: (instance, newValue) => {\n instance.props.volume = parseFloatAttribute(newValue, defaultVideoVolume);\n instance.videoGraphics?.setVolume(instance.props.volume, instance.props);\n },\n \"cast-shadows\": (instance, newValue) => {\n instance.props.castShadows = parseBoolAttribute(newValue, defaultVideoCastShadows);\n instance.videoGraphics?.setCastShadows(instance.props.castShadows, instance.props);\n },\n emissive: (instance, newValue) => {\n instance.videoAnimatedAttributeHelper.elementSetAttribute(\n \"emissive\",\n parseFloatAttribute(newValue, defaultVideoEmissive),\n );\n },\n });\n private videoGraphics: VideoGraphics | null;\n\n protected enable() {\n this.videoGraphics?.syncVideoTime();\n }\n\n protected disable() {\n this.videoGraphics?.syncVideoTime();\n }\n\n constructor() {\n super();\n }\n\n public getContentBounds(): OrientedBoundingBox | null {\n if (!this.videoGraphics || !this.transformableElementGraphics) {\n return null;\n }\n const { width, height } = this.videoGraphics.getWidthAndHeight() || { width: 0, height: 0 };\n return OrientedBoundingBox.fromSizeAndMatrixWorld(\n new Vect3(width, height, 0),\n this.transformableElementGraphics.getWorldMatrix(),\n );\n }\n\n public addSideEffectChild(child: MElement): void {\n this.videoAnimatedAttributeHelper.addSideEffectChild(child);\n super.addSideEffectChild(child);\n }\n\n public removeSideEffectChild(child: MElement): void {\n this.videoAnimatedAttributeHelper.removeSideEffectChild(child);\n super.removeSideEffectChild(child);\n }\n\n public parentTransformed(): void {\n this.collideableHelper.parentTransformed();\n }\n\n public isClickable(): boolean {\n return true;\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string) {\n if (!this.videoGraphics) {\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n Video.attributeHandler.handle(this, name, newValue);\n this.collideableHelper.handle(name, newValue);\n }\n\n private documentTimeChanged() {\n this.videoGraphics?.syncVideoTime();\n }\n\n public connectedCallback(): void {\n super.connectedCallback();\n\n if (!this.getScene().hasGraphicsAdapter() || this.videoGraphics) {\n return;\n }\n const graphicsAdapter = this.getScene().getGraphicsAdapter();\n\n this.videoGraphics = graphicsAdapter\n .getGraphicsAdapterFactory()\n .MMLVideoGraphicsInterface(this, () => {\n this.applyBounds();\n this.collideableHelper.updateCollider(this.videoGraphics?.getCollisionElement());\n });\n\n this.documentTimeListener = this.addDocumentTimeListener(() => {\n this.documentTimeChanged();\n });\n\n for (const name of Video.observedAttributes) {\n const value = this.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(name, null, value);\n }\n }\n\n this.collideableHelper.updateCollider(this.videoGraphics?.getCollisionElement());\n }\n\n disconnectedCallback() {\n this.videoAnimatedAttributeHelper.reset();\n this.videoGraphics?.dispose();\n this.videoGraphics = null;\n this.documentTimeListener.remove();\n this.collideableHelper.removeColliders();\n super.disconnectedCallback();\n }\n}\n", "import { AttributeAnimation } from \"./AttributeAnimation\";\nimport { AttributeLerp } from \"./AttributeLerp\";\nimport { Audio } from \"./Audio\";\nimport { Character } from \"./Character\";\nimport { ChatProbe } from \"./ChatProbe\";\nimport { Cube } from \"./Cube\";\nimport { Cylinder } from \"./Cylinder\";\nimport { Frame } from \"./Frame\";\nimport { Group } from \"./Group\";\nimport { Image } from \"./Image\";\nimport { Interaction } from \"./Interaction\";\nimport { Label } from \"./Label\";\nimport { Light } from \"./Light\";\nimport { Link } from \"./Link\";\nimport { MElement } from \"./MElement\";\nimport { Model } from \"./Model\";\nimport { Plane } from \"./Plane\";\nimport { PositionProbe } from \"./PositionProbe\";\nimport { Prompt } from \"./Prompt\";\nimport { RemoteDocument } from \"./RemoteDocument\";\nimport { Sphere } from \"./Sphere\";\nimport { Video } from \"./Video\";\n\nexport function registerCustomElementsToWindow(targetWindow: Window) {\n // TODO - copy the classes to generate window-specific classes rather than overwriting the superclass on each call\n const targetHTMLElement = (targetWindow as any)[\"HTMLElement\"] as typeof HTMLElement;\n MElement.overwriteSuperclass(targetHTMLElement);\n targetWindow.customElements.define(RemoteDocument.tagName, RemoteDocument);\n targetWindow.customElements.define(Light.tagName, Light);\n targetWindow.customElements.define(Model.tagName, Model);\n targetWindow.customElements.define(Character.tagName, Character);\n targetWindow.customElements.define(Cube.tagName, Cube);\n targetWindow.customElements.define(Frame.tagName, Frame);\n targetWindow.customElements.define(Cylinder.tagName, Cylinder);\n targetWindow.customElements.define(Plane.tagName, Plane);\n targetWindow.customElements.define(Label.tagName, Label);\n targetWindow.customElements.define(Group.tagName, Group);\n targetWindow.customElements.define(Prompt.tagName, Prompt);\n targetWindow.customElements.define(Link.tagName, Link);\n targetWindow.customElements.define(Sphere.tagName, Sphere);\n targetWindow.customElements.define(Image.tagName, Image);\n targetWindow.customElements.define(Video.tagName, Video);\n targetWindow.customElements.define(Audio.tagName, Audio);\n targetWindow.customElements.define(PositionProbe.tagName, PositionProbe);\n targetWindow.customElements.define(ChatProbe.tagName, ChatProbe);\n targetWindow.customElements.define(Interaction.tagName, Interaction);\n targetWindow.customElements.define(AttributeAnimation.tagName, AttributeAnimation);\n targetWindow.customElements.define(AttributeLerp.tagName, AttributeLerp);\n}\n", "type ListenerFunc = (...args: any[]) => void;\n\ntype EventSpecificationTuple = [EventTarget, string, ListenerFunc, AddEventListenerOptions?];\n\n/**\n * The EventHandlerCollection is a utility class that allows you to add event listeners to a collection of targets and\n * then clear them all at once.\n *\n * This avoids the caller needing to keep references to the functions applied to the event listeners.\n */\nexport class EventHandlerCollection {\n private eventsByTarget: Map>> = new Map();\n\n public add(\n target: EventTarget,\n key: string,\n listener: ListenerFunc,\n options?: AddEventListenerOptions,\n ): this {\n target.addEventListener(key, listener, options);\n\n let existingTarget = this.eventsByTarget.get(target);\n if (existingTarget === undefined) {\n existingTarget = new Map();\n this.eventsByTarget.set(target, existingTarget);\n }\n let existingKey = existingTarget.get(key);\n if (existingKey === undefined) {\n existingKey = new Set();\n existingTarget.set(key, existingKey);\n }\n existingKey.add(listener);\n\n return this;\n }\n\n public clear() {\n this.eventsByTarget.forEach((keyMap, target) => {\n keyMap.forEach((listenerSet, key) => {\n listenerSet.forEach((listenerFunc) => {\n target.removeEventListener(key, listenerFunc);\n });\n });\n });\n this.eventsByTarget.clear();\n }\n\n static create(initial?: Array): EventHandlerCollection {\n const instance = new EventHandlerCollection();\n if (initial !== undefined) {\n initial.forEach(([target, key, listenerFunc, options]) => {\n instance.add(target, key, listenerFunc, options);\n });\n }\n return instance;\n }\n}\n", "import { Interaction } from \"../elements\";\nimport { GraphicsAdapter } from \"../graphics\";\nimport { InteractionListener } from \"../scene\";\nimport { EventHandlerCollection } from \"../utils/EventHandlerCollection\";\n\ntype InteractionState = {\n interaction: Interaction;\n distance?: number;\n button?: HTMLButtonElement;\n};\n\nfunction createInteractionsHolder(\n onPrev: () => void,\n onNext: () => void,\n onClose: () => void,\n): {\n holderElement: HTMLDivElement;\n listElement: HTMLDivElement;\n prevButton: HTMLButtonElement;\n statusHolder: HTMLDivElement;\n nextButton: HTMLButtonElement;\n} {\n const holderElement = document.createElement(\"div\");\n holderElement.setAttribute(\"data-test-id\", \"interactions-holder\");\n holderElement.style.zIndex = \"100\";\n holderElement.style.position = \"absolute\";\n holderElement.style.backgroundColor = \"white\";\n holderElement.style.padding = \"10px\";\n holderElement.style.display = \"none\";\n holderElement.style.border = \"1px solid #AAA\";\n holderElement.style.fontFamily = \"sans-serif\";\n holderElement.style.top = \"50%\";\n holderElement.style.left = \"50%\";\n holderElement.style.transform = \"translate(-50%, -50%)\";\n\n const closeButtonHolder = document.createElement(\"div\");\n closeButtonHolder.style.display = \"flex\";\n closeButtonHolder.style.justifyContent = \"flex-end\";\n holderElement.appendChild(closeButtonHolder);\n\n const title = document.createElement(\"h3\");\n title.style.textAlign = \"center\";\n title.textContent = \"Interactions\";\n holderElement.appendChild(title);\n\n const closeButton = document.createElement(\"button\");\n closeButton.textContent = \"Close\";\n closeButton.style.cursor = \"pointer\";\n closeButton.addEventListener(\"click\", () => {\n onClose();\n });\n closeButtonHolder.appendChild(closeButton);\n\n const listElement = document.createElement(\"div\");\n listElement.setAttribute(\"data-test-id\", \"interactions-list\");\n holderElement.appendChild(listElement);\n\n const buttonHolder = document.createElement(\"div\");\n buttonHolder.style.display = \"flex\";\n buttonHolder.style.justifyContent = \"space-between\";\n holderElement.appendChild(buttonHolder);\n\n const prevButton = document.createElement(\"button\");\n prevButton.textContent = \"Prev\";\n prevButton.style.cursor = \"pointer\";\n prevButton.addEventListener(\"click\", onPrev);\n buttonHolder.appendChild(prevButton);\n\n const statusHolder = document.createElement(\"div\");\n statusHolder.style.display = \"flex\";\n statusHolder.style.justifyContent = \"center\";\n statusHolder.style.padding = \"5px\";\n buttonHolder.appendChild(statusHolder);\n\n const nextButton = document.createElement(\"button\");\n nextButton.textContent = \"Next\";\n nextButton.style.cursor = \"pointer\";\n nextButton.addEventListener(\"click\", onNext);\n buttonHolder.appendChild(nextButton);\n\n return { holderElement, listElement, prevButton, statusHolder, nextButton };\n}\n\nfunction createInteractionPrompt() {\n const interactionPrompt = document.createElement(\"div\");\n interactionPrompt.setAttribute(\"data-test-id\", \"interactions-prompt\");\n interactionPrompt.style.zIndex = \"101\";\n interactionPrompt.style.position = \"absolute\";\n interactionPrompt.style.top = \"10px\";\n interactionPrompt.style.left = \"10px\";\n interactionPrompt.style.display = \"none\";\n interactionPrompt.style.padding = \"12px 10px\";\n interactionPrompt.style.fontFamily = \"Helvetica\";\n interactionPrompt.style.color = \"white\";\n interactionPrompt.style.backgroundColor = \"#222222b2\";\n interactionPrompt.innerHTML = \"Press E to interact\";\n return interactionPrompt;\n}\n\nexport class InteractionManager {\n private static pageLimit = 3;\n private pageOffset = 0;\n\n private eventCollection = new EventHandlerCollection();\n\n private interactionListElement: HTMLDivElement;\n private interactionHolderElement: HTMLDivElement;\n private prevButton: HTMLButtonElement;\n private statusHolder: HTMLDivElement;\n private nextButton: HTMLButtonElement;\n private interactionPromptElement: HTMLDivElement;\n\n private possibleActions = new Map, InteractionState>();\n private visibleActions = new Set();\n private tickInterval: NodeJS.Timeout | null = null;\n private sortedActions: InteractionState[] = [];\n\n private static createButtonText(interaction: Interaction) {\n return `${interaction.props.prompt ?? \"Interact\"}`;\n }\n\n private constructor(\n private container: HTMLElement,\n private interactionShouldShowDistance: (\n interaction: Interaction,\n ) => number | null,\n ) {\n this.container = container;\n const { holderElement, listElement, prevButton, statusHolder, nextButton } =\n createInteractionsHolder(\n () => {\n this.pageOffset--;\n this.displayInteractions();\n },\n () => {\n this.pageOffset++;\n this.displayInteractions();\n },\n () => {\n this.hideHolder();\n },\n );\n this.prevButton = prevButton;\n this.statusHolder = statusHolder;\n this.nextButton = nextButton;\n this.interactionListElement = listElement;\n this.interactionHolderElement = holderElement;\n this.container.appendChild(this.interactionHolderElement);\n\n this.interactionPromptElement = createInteractionPrompt();\n this.container.appendChild(this.interactionPromptElement);\n\n this.eventCollection.add(document, \"keydown\", (e: KeyboardEvent) => {\n // if the e key is pressed, show the UI\n if (e.code === \"KeyE\") {\n if (this.interactionHolderElement.style.display === \"block\") {\n this.hideHolder();\n return;\n }\n if (this.visibleActions.size > 0) {\n this.showHolder();\n }\n } else if (e.code === \"Escape\") {\n this.hideHolder();\n }\n });\n }\n\n private getInteractionListener(): InteractionListener {\n return {\n addInteraction: (interaction: Interaction) => {\n this.possibleActions.set(interaction, {\n interaction,\n });\n },\n removeInteraction: (interaction: Interaction) => {\n const interactionState = this.possibleActions.get(interaction);\n if (!interactionState) {\n console.warn(\"Interaction not found\", interaction);\n return;\n }\n\n if (interactionState.button) {\n interactionState.button.remove();\n }\n this.possibleActions.delete(interaction);\n if (this.visibleActions.has(interactionState)) {\n this.visibleActions.delete(interactionState);\n if (this.visibleActions.size === 0) {\n this.hidePrompt();\n }\n }\n },\n updateInteraction: (interaction: Interaction) => {\n const interactionState = this.possibleActions.get(interaction);\n if (!interactionState) {\n console.warn(\"Interaction not found\", interaction);\n return;\n }\n if (interactionState.button) {\n interactionState.button.textContent = InteractionManager.createButtonText(interaction);\n }\n },\n };\n }\n\n static init(\n container: HTMLElement,\n interactionShouldShowDistance: (interaction: Interaction) => number | null,\n ): {\n interactionManager: InteractionManager;\n interactionListener: InteractionListener;\n } {\n const interactionManager = new InteractionManager(container, interactionShouldShowDistance);\n interactionManager.startTick();\n return { interactionManager, interactionListener: interactionManager.getInteractionListener() };\n }\n\n public dispose() {\n if (this.tickInterval) {\n clearInterval(this.tickInterval);\n }\n this.eventCollection.clear();\n this.interactionListElement.remove();\n this.interactionHolderElement.remove();\n this.interactionPromptElement.remove();\n }\n\n private startTick() {\n this.tickInterval = setInterval(() => {\n this.possibleActions.forEach((interactionState, interaction) => {\n const showDistance = this.interactionShouldShowDistance(interaction);\n if (showDistance !== null) {\n interactionState.distance = showDistance;\n this.visibleActions.add(interactionState);\n } else {\n this.visibleActions.delete(interactionState);\n }\n });\n\n if (this.visibleActions.size === 0) {\n this.hidePrompt();\n this.hideHolder();\n return;\n } else {\n this.showPrompt();\n }\n\n this.sortedActions = Array.from(this.visibleActions).sort(\n (a: InteractionState, b: InteractionState) => {\n // sort by priority first\n const priorityDiff = a.interaction.props.priority - b.interaction.props.priority;\n if (priorityDiff !== 0) {\n return priorityDiff;\n }\n\n // Otherwise sort by distance if available\n if (a.distance && b.distance) {\n const distanceDiff = a.distance - b.distance;\n if (Math.abs(distanceDiff) > 0.1) {\n return distanceDiff;\n }\n }\n return 0;\n },\n );\n\n this.displayInteractions();\n }, 1000);\n }\n\n private displayInteractions() {\n this.interactionListElement.innerHTML = \"\";\n const maximumPageOffset = Math.floor(\n (this.sortedActions.length - 1) / InteractionManager.pageLimit,\n );\n if (this.pageOffset > maximumPageOffset) {\n this.pageOffset = maximumPageOffset;\n }\n if (this.pageOffset < 0) {\n this.pageOffset = 0;\n }\n const startIndex = this.pageOffset * InteractionManager.pageLimit;\n\n const pagedItems = this.sortedActions.slice(\n startIndex,\n startIndex + InteractionManager.pageLimit,\n );\n\n if (this.pageOffset > 0) {\n this.prevButton.removeAttribute(\"disabled\");\n } else {\n this.prevButton.setAttribute(\"disabled\", \"true\");\n }\n\n if (this.pageOffset < maximumPageOffset) {\n this.nextButton.removeAttribute(\"disabled\");\n } else {\n this.nextButton.setAttribute(\"disabled\", \"true\");\n }\n\n this.statusHolder.textContent = `Page ${this.pageOffset + 1} of ${maximumPageOffset + 1}`;\n\n pagedItems.forEach((interactionState) => {\n if (!interactionState.button) {\n const interactionText = InteractionManager.createButtonText(interactionState.interaction);\n const button = document.createElement(\"button\");\n button.style.display = \"block\";\n button.style.marginBottom = \"5px\";\n button.style.cursor = \"pointer\";\n button.style.textOverflow = \"ellipsis\";\n button.style.overflow = \"hidden\";\n button.style.whiteSpace = \"nowrap\";\n button.style.maxWidth = \"200px\";\n button.setAttribute(\"data-test-id\", `interaction-${interactionText}`);\n button.textContent = interactionText;\n button.addEventListener(\"click\", () => {\n interactionState.interaction.trigger();\n this.hideHolder();\n });\n interactionState.button = button;\n }\n this.interactionListElement.appendChild(interactionState.button);\n });\n }\n\n private hideHolder() {\n this.interactionHolderElement.style.display = \"none\";\n }\n\n private showHolder() {\n this.interactionHolderElement.style.display = \"block\";\n }\n\n private hidePrompt() {\n this.interactionPromptElement.style.display = \"none\";\n }\n\n private showPrompt() {\n this.interactionPromptElement.style.display = \"block\";\n }\n}\n", "export class Modal {\n public element: HTMLDivElement;\n public titleElement: HTMLDivElement;\n public contentsElement: HTMLDivElement;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.style.display = \"block\";\n this.element.style.border = \"1px solid #AAA\";\n this.element.style.fontFamily = \"sans-serif\";\n this.element.style.color = \"black\";\n\n this.element.style.boxShadow = \"0px 4px 4px rgba(0, 0, 0, 0.1)\";\n this.element.style.backdropFilter = \"blur(4px)\";\n this.element.style.borderRadius = \"4px\";\n\n this.titleElement = document.createElement(\"div\");\n this.titleElement.style.background = \"rgba(255, 255, 255, 0.8)\";\n this.titleElement.style.padding = \"8px\";\n this.titleElement.style.fontWeight = \"bold\";\n this.titleElement.style.borderBottom = \"1px solid #AAA\";\n\n this.contentsElement = document.createElement(\"div\");\n this.contentsElement.style.background = \"rgba(255, 255, 255, 0.6)\";\n this.contentsElement.style.padding = \"8px\";\n this.element.append(this.titleElement, this.contentsElement);\n\n this.element.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n e.stopPropagation();\n });\n }\n\n dispose() {\n this.element.remove();\n }\n}\n", "import { Modal } from \"./Modal\";\n\nexport class ConfirmModal extends Modal {\n private confirmContentsElement: HTMLDivElement;\n private messageElement: HTMLDivElement;\n private buttonsHolder: HTMLDivElement;\n private cancelButton: HTMLButtonElement;\n private okButton: HTMLButtonElement;\n\n constructor(title: string, message: string, callback: (result: boolean) => void) {\n super();\n\n this.titleElement.textContent = title;\n\n this.confirmContentsElement = document.createElement(\"div\");\n this.messageElement = document.createElement(\"div\");\n this.messageElement.textContent = message;\n this.messageElement.style.marginBottom = \"8px\";\n this.confirmContentsElement.appendChild(this.messageElement);\n this.contentsElement.appendChild(this.confirmContentsElement);\n\n this.buttonsHolder = document.createElement(\"div\");\n this.buttonsHolder.style.display = \"flex\";\n this.buttonsHolder.style.justifyContent = \"space-between\";\n this.buttonsHolder.style.marginTop = \"8px\";\n\n this.cancelButton = document.createElement(\"button\");\n this.cancelButton.setAttribute(\"data-test-id\", \"confirm-modal-cancel-button\");\n this.cancelButton.style.cursor = \"pointer\";\n this.cancelButton.textContent = \"Cancel\";\n this.cancelButton.addEventListener(\"click\", () => {\n callback(false);\n this.dispose();\n });\n this.buttonsHolder.appendChild(this.cancelButton);\n\n this.okButton = document.createElement(\"button\");\n this.okButton.setAttribute(\"data-test-id\", \"confirm-modal-ok-button\");\n this.okButton.style.cursor = \"pointer\";\n this.okButton.textContent = \"OK\";\n this.okButton.addEventListener(\"click\", () => {\n callback(true);\n this.dispose();\n });\n this.buttonsHolder.appendChild(this.okButton);\n this.contentsElement.appendChild(this.buttonsHolder);\n }\n}\n", "import { PromptProps } from \"../scene\";\nimport { EventHandlerCollection } from \"../utils/EventHandlerCollection\";\nimport { Modal } from \"./Modal\";\n\nexport class PromptModal extends Modal {\n private promptContentsElement: HTMLDivElement;\n private promptMessageElement: HTMLDivElement;\n private promptInputElement: HTMLInputElement;\n private buttonsHolder: HTMLDivElement;\n private cancelButton: HTMLButtonElement;\n private okButton: HTMLButtonElement;\n private callback: (result: string | null) => void;\n private eventHandlerCollection = new EventHandlerCollection();\n\n constructor(promptProps: PromptProps, callback: (result: string | null) => void) {\n super();\n\n this.callback = callback;\n\n this.titleElement.textContent = \"Prompt\";\n\n this.promptContentsElement = document.createElement(\"div\");\n this.promptMessageElement = document.createElement(\"div\");\n this.promptMessageElement.textContent = promptProps.message || \"Enter a value\";\n this.promptMessageElement.style.marginBottom = \"8px\";\n this.promptContentsElement.appendChild(this.promptMessageElement);\n\n this.promptInputElement = document.createElement(\"input\");\n this.promptInputElement.type = \"text\";\n this.promptInputElement.style.width = \"80vw\";\n this.promptInputElement.style.maxWidth = \"300px\";\n this.promptInputElement.setAttribute(\"data-test-id\", \"prompt-input\");\n this.promptInputElement.setAttribute(\"placeholder\", promptProps.placeholder || \"\");\n this.promptInputElement.setAttribute(\"value\", promptProps.prefill || \"\");\n this.promptInputElement.addEventListener(\"change\", () => {\n this.checkValue();\n });\n this.promptInputElement.addEventListener(\"keyup\", (event) => {\n if (event.key === \"Enter\") {\n if (this.promptInputElement.value.length > 0) {\n this.dispose();\n this.callback(this.promptInputElement.value);\n }\n }\n this.checkValue();\n });\n this.eventHandlerCollection.add(document, \"keydown\", (e: KeyboardEvent) => {\n if (e.code === \"Escape\") {\n this.dispose();\n this.callback(null);\n }\n this.checkValue();\n });\n this.promptContentsElement.appendChild(this.promptInputElement);\n this.contentsElement.appendChild(this.promptContentsElement);\n\n this.buttonsHolder = document.createElement(\"div\");\n this.buttonsHolder.style.display = \"flex\";\n this.buttonsHolder.style.justifyContent = \"space-between\";\n this.buttonsHolder.style.marginTop = \"8px\";\n\n this.cancelButton = document.createElement(\"button\");\n this.cancelButton.setAttribute(\"data-test-id\", \"prompt-cancel-button\");\n this.cancelButton.style.cursor = \"pointer\";\n this.cancelButton.textContent = \"Cancel\";\n this.cancelButton.addEventListener(\"click\", () => {\n this.dispose();\n this.callback(null);\n });\n this.buttonsHolder.appendChild(this.cancelButton);\n\n this.okButton = document.createElement(\"button\");\n this.okButton.setAttribute(\"data-test-id\", \"prompt-ok-button\");\n this.okButton.style.cursor = \"pointer\";\n this.okButton.textContent = \"OK\";\n this.okButton.addEventListener(\"click\", () => {\n this.dispose();\n this.callback(this.promptInputElement.value);\n });\n this.buttonsHolder.appendChild(this.okButton);\n this.contentsElement.appendChild(this.buttonsHolder);\n }\n\n public focus() {\n this.promptInputElement.focus();\n this.promptInputElement.setSelectionRange(\n this.promptInputElement.value.length,\n this.promptInputElement.value.length,\n );\n this.checkValue();\n }\n\n dispose() {\n this.eventHandlerCollection.clear();\n super.dispose();\n }\n\n private checkValue() {\n if (this.promptInputElement.value.length > 0) {\n this.okButton.disabled = false;\n } else {\n this.okButton.disabled = true;\n }\n }\n}\n", "import { LinkProps, PromptProps } from \"../scene\";\nimport { ConfirmModal } from \"./ConfirmModal\";\nimport { Modal } from \"./Modal\";\nimport { PromptModal } from \"./PromptModal\";\n\ntype PromptState = {\n prompt?: PromptModal;\n promptProps: PromptProps;\n resolve: (result: string | null) => void;\n};\n\ntype LinkState = {\n href: string;\n target?: string;\n popup: boolean;\n windowCallback: (openedWindow: Window | null) => void;\n};\n\nexport class PromptManager {\n private promptHolderElement: HTMLDivElement;\n\n private queue = new Array();\n private currentPrompt: PromptState | LinkState | null = null;\n private currentModal: Modal | null = null;\n\n private constructor(private container: HTMLElement) {\n const holderElement = document.createElement(\"div\");\n holderElement.setAttribute(\"data-test-id\", \"prompt-holder\");\n holderElement.style.zIndex = \"100\";\n holderElement.style.position = \"absolute\";\n holderElement.style.top = \"50%\";\n holderElement.style.left = \"50%\";\n holderElement.style.transform = \"translate(-50%, -50%)\";\n this.promptHolderElement = holderElement;\n this.container.appendChild(this.promptHolderElement);\n }\n\n static init(container: HTMLElement): PromptManager {\n return new PromptManager(container);\n }\n\n public dispose() {\n this.promptHolderElement.remove();\n }\n\n private showPrompt(promptState: PromptState | LinkState) {\n this.currentPrompt = promptState;\n if (\"href\" in promptState) {\n const confirmModal = new ConfirmModal(\n \"Confirm Navigation\",\n `Open ${promptState.href}?`,\n (result: boolean) => {\n this.currentPrompt = null;\n this.currentModal = null;\n if (result) {\n let features;\n if (promptState.popup) {\n const popupWidth = 500;\n const popupHeight = 500;\n\n const screenLeft =\n window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const screenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n const windowWidth = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : screen.width;\n const windowHeight = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : screen.height;\n\n const left = (windowWidth - popupWidth) / 2 + screenLeft;\n const top = (windowHeight - popupHeight) / 2 + screenTop;\n features = `toolbar=no,menubar=no,width=${popupWidth},height=${popupHeight},left=${left},top=${top}`;\n }\n\n const openedWindow = window.open(\n promptState.href,\n promptState.target ?? \"_blank\",\n features,\n );\n promptState.windowCallback(openedWindow);\n }\n this.showNextPromptIfAny();\n },\n );\n this.currentModal = confirmModal;\n this.promptHolderElement.appendChild(confirmModal.element);\n } else {\n const promptModal = new PromptModal(promptState.promptProps, (result: string | null) => {\n this.currentPrompt = null;\n this.currentModal = null;\n promptState.resolve(result);\n this.showNextPromptIfAny();\n });\n this.currentModal = promptModal;\n this.promptHolderElement.appendChild(promptModal.element);\n promptModal.focus();\n }\n }\n\n public prompt(\n promptProps: PromptProps,\n abortSignal: AbortSignal,\n callback: (message: string | null) => void,\n ) {\n abortSignal.addEventListener(\"abort\", () => {\n if (this.currentPrompt === promptState) {\n // The current prompt is the one we are aborting\n this.currentPrompt = null;\n this.currentModal?.dispose();\n this.showNextPromptIfAny();\n } else {\n // Remove the link from the queue\n this.queue = this.queue.filter((item) => item !== promptState);\n }\n });\n const promptState: PromptState = {\n promptProps,\n resolve: callback,\n };\n if (this.currentPrompt !== null) {\n this.queue.push(promptState);\n return;\n }\n this.showPrompt(promptState);\n }\n\n public link(\n linkProps: LinkProps,\n abortSignal: AbortSignal,\n windowCallback: (openedWindow: Window | null) => void,\n ) {\n abortSignal.addEventListener(\"abort\", () => {\n if (this.currentPrompt === linkState) {\n // The current prompt is the one we are aborting\n this.currentPrompt = null;\n this.currentModal?.dispose();\n this.currentModal = null;\n this.showNextPromptIfAny();\n } else {\n // Remove the link from the queue\n this.queue = this.queue.filter((item) => item !== linkState);\n }\n });\n const linkState: LinkState = {\n href: linkProps.href,\n target: linkProps.target,\n popup: linkProps.popup ?? false,\n windowCallback,\n };\n if (this.currentPrompt !== null) {\n this.queue.push(linkState);\n return;\n }\n this.showPrompt(linkState);\n }\n\n private showNextPromptIfAny() {\n const nextPrompt = this.queue.shift();\n if (nextPrompt !== undefined) {\n this.showPrompt(nextPrompt);\n }\n }\n}\n", "import { DebugHelper } from \"../debug-helper\";\nimport {\n Audio,\n ChatProbe,\n Cube,\n Cylinder,\n Frame,\n Image,\n Interaction,\n Label,\n Light,\n Link,\n MElement,\n Model,\n Plane,\n PositionProbe,\n Prompt,\n RemoteDocument,\n Sphere,\n TransformableElement,\n Video,\n} from \"../elements\";\nimport {\n AudioGraphics,\n ChatProbeGraphics,\n CubeGraphics,\n CylinderGraphics,\n DebugHelperGraphics,\n FrameGraphics,\n ImageGraphics,\n InteractionGraphics,\n LabelGraphics,\n LightGraphics,\n LinkGraphics,\n MElementGraphics,\n ModelGraphics,\n PlaneGraphics,\n PositionProbeGraphics,\n PromptGraphics,\n RemoteDocumentGraphics,\n SphereGraphics,\n TransformableGraphics,\n VideoGraphics,\n} from \"../graphics\";\nimport { GraphicsAdapter, StandaloneGraphicsAdapter } from \"../graphics\";\nimport { InteractionManager } from \"../interaction-ui\";\nimport { LoadingProgressManager } from \"../loading\";\nimport { PromptManager } from \"../prompt-ui\";\n\nexport interface MMLGraphicsInterface {\n MMLDebugHelperGraphicsInterface(debugHelper: DebugHelper): DebugHelperGraphics;\n RemoteDocumentGraphicsInterface: (element: RemoteDocument) => RemoteDocumentGraphics;\n MElementGraphicsInterface: (element: MElement) => MElementGraphics;\n MMLTransformableGraphicsInterface: (element: TransformableElement) => TransformableGraphics;\n MMLImageGraphicsInterface: (\n element: Image,\n updateMeshCallback: () => void,\n ) => ImageGraphics;\n MMLVideoGraphicsInterface: (\n element: Video,\n updateMeshCallback: () => void,\n ) => VideoGraphics;\n MMLAudioGraphicsInterface: (element: Audio) => AudioGraphics;\n MMLCubeGraphicsInterface: (element: Cube) => CubeGraphics;\n MMLLabelGraphicsInterface: (element: Label) => LabelGraphics;\n MMLLinkGraphicsInterface: (element: Link) => LinkGraphics;\n MMLPlaneGraphicsInterface: (element: Plane) => PlaneGraphics;\n MMLPromptGraphicsInterface: (element: Prompt) => PromptGraphics;\n MMLInteractionGraphicsInterface: (element: Interaction) => InteractionGraphics;\n MMLChatProbeGraphicsInterface: (element: ChatProbe) => ChatProbeGraphics;\n MMLPositionProbeGraphicsInterface: (element: PositionProbe) => PositionProbeGraphics;\n MMLSphereGraphicsInterface: (element: Sphere) => SphereGraphics;\n MMLCylinderGraphicsInterface: (element: Cylinder) => CylinderGraphics;\n MMLLightGraphicsInterface: (element: Light) => LightGraphics;\n MMLFrameGraphicsInterface: (element: Frame) => FrameGraphics;\n MMLModelGraphicsInterface: (\n element: Model,\n updateMeshCallback: () => void,\n ) => ModelGraphics;\n}\n\nexport type PositionAndRotation = {\n position: { x: number; y: number; z: number };\n // rotation in degrees\n rotation: { x: number; y: number; z: number };\n};\n\nexport type InteractionListener = {\n addInteraction(interaction: Interaction): void;\n updateInteraction(interaction: Interaction): void;\n removeInteraction(interaction: Interaction): void;\n};\n\nexport type ChatProbeListener = {\n addChatProbe(chatProbe: ChatProbe): void;\n updateChatProbe(chatProbe: ChatProbe): void;\n removeChatProbe(chatProbe: ChatProbe): void;\n};\n\nexport type PromptProps = {\n message?: string;\n placeholder?: string;\n prefill?: string;\n};\n\nexport type LinkProps = {\n href: string;\n target?: string;\n popup?: boolean;\n};\n\n/**\n * The IMMLScene interface is the public interface for attaching content (E.g.\n * an MML Document) into the underlyingScene, but it can be implemented by\n * classes other than MMLScene.\n */\nexport type IMMLScene = {\n getGraphicsAdapter: () => G;\n hasGraphicsAdapter: () => boolean;\n\n getRootContainer: () => ReturnType;\n\n addCollider?: (collider: unknown, element: MElement) => void;\n updateCollider?: (collider: unknown, element: MElement) => void;\n removeCollider?: (collider: unknown, element: MElement) => void;\n\n addInteraction?: (interaction: Interaction) => void;\n updateInteraction?: (interaction: Interaction) => void;\n removeInteraction?: (interaction: Interaction) => void;\n\n addChatProbe?: (chatProbe: ChatProbe) => void;\n updateChatProbe?: (chatProbe: ChatProbe) => void;\n removeChatProbe?: (chatProbe: ChatProbe) => void;\n\n getUserPositionAndRotation(): PositionAndRotation;\n\n prompt: (\n promptProps: PromptProps,\n abortSignal: AbortSignal,\n callback: (message: string | null) => void,\n ) => void;\n\n link: (\n linkProps: LinkProps,\n abortSignal: AbortSignal,\n windowCallback: (openedWindow: Window | null) => void,\n ) => void;\n\n getLoadingProgressManager?: () => LoadingProgressManager | null;\n};\n\n/**\n * The MMLScene class creates a HTML Element that renders a scene and includes the various manager instances\n * for handling clicks, interaction events, and controls.\n *\n * It is the default implementation of the IMMLScene interface and presents a fly camera with drag controls.\n */\nexport class MMLScene> implements IMMLScene {\n private colliders = new Set();\n\n private interactions = new Set>();\n private interactionListeners = new Set>();\n\n private chatProbes = new Set>();\n private chatProbeListeners = new Set>();\n\n private resizeListener: () => void;\n private promptManager: PromptManager;\n private interactionManager: InteractionManager;\n private resizeObserver: ResizeObserver;\n private loadingProgressManager: LoadingProgressManager;\n\n private graphicsAdapter: G | null = null;\n\n constructor(public element: HTMLElement) {\n this.loadingProgressManager = new LoadingProgressManager();\n }\n\n public init(graphicsAdapter: G) {\n this.graphicsAdapter = graphicsAdapter;\n this.graphicsAdapter.start();\n\n this.resizeObserver = new ResizeObserver(() => {\n this.fitContainer();\n });\n this.resizeObserver.observe(this.element);\n\n this.promptManager = PromptManager.init(this.element);\n const { interactionManager, interactionListener } = InteractionManager.init(\n this.element,\n this.graphicsAdapter.interactionShouldShowDistance.bind(this.graphicsAdapter),\n );\n this.interactionManager = interactionManager;\n this.addInteractionListener(interactionListener);\n\n this.resizeListener = () => {\n this.fitContainer();\n };\n window.addEventListener(\"resize\", this.resizeListener, false);\n\n this.fitContainer();\n }\n\n public hasGraphicsAdapter(): boolean {\n return this.graphicsAdapter !== null;\n }\n\n public getGraphicsAdapter(): G {\n if (!this.graphicsAdapter) {\n throw new Error(\"MMLScene not initialized with a graphics adapter. Call init() first.\");\n }\n return this.graphicsAdapter;\n }\n\n public getRootContainer(): G[\"containerType\"] {\n if (!this.graphicsAdapter) {\n throw new Error(\"MMLScene not initialized with a graphics adapter\");\n }\n return this.graphicsAdapter.getRootContainer();\n }\n\n public getUserPositionAndRotation(): PositionAndRotation {\n if (!this.graphicsAdapter) {\n throw new Error(\"MMLScene not initialized with a graphics adapter\");\n }\n return this.graphicsAdapter.getUserPositionAndRotation();\n }\n\n public fitContainer() {\n if (!this.graphicsAdapter) {\n throw new Error(\"MMLScene not initialized with a graphics adapter\");\n }\n const width = this.element.clientWidth;\n const height = this.element.clientHeight;\n this.graphicsAdapter.resize(width, height);\n }\n\n public dispose() {\n window.removeEventListener(\"resize\", this.resizeListener);\n this.resizeObserver.disconnect();\n this.promptManager.dispose();\n this.interactionManager.dispose();\n }\n\n public prompt(\n promptProps: PromptProps,\n abortSignal: AbortSignal,\n callback: (message: string | null) => void,\n ) {\n if (!this) {\n console.error(\"MMLScene not initialized\");\n return;\n }\n this.promptManager.prompt(promptProps, abortSignal, callback);\n }\n\n public link(\n linkProps: LinkProps,\n abortSignal: AbortSignal,\n windowCallback: (openedWindow: Window | null) => void,\n ) {\n this.promptManager.link(linkProps, abortSignal, windowCallback);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public addCollider(collider: unknown, element: MElement): void {\n this.colliders.add(collider);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public updateCollider(collider: unknown): void {\n // no-op\n }\n\n public removeCollider(collider: unknown): void {\n this.colliders.delete(collider);\n }\n\n public addInteraction(interaction: Interaction): void {\n this.interactions.add(interaction);\n for (const listener of this.interactionListeners) {\n listener.addInteraction(interaction);\n }\n }\n\n public updateInteraction(interaction: Interaction): void {\n for (const listener of this.interactionListeners) {\n listener.updateInteraction(interaction);\n }\n }\n\n public removeInteraction(interaction: Interaction): void {\n this.interactions.delete(interaction);\n for (const listener of this.interactionListeners) {\n listener.removeInteraction(interaction);\n }\n }\n\n public getInteractions(): Set> {\n return this.interactions;\n }\n\n public addInteractionListener(\n listener: InteractionListener,\n addExistingInteractions = true,\n ): void {\n this.interactionListeners.add(listener);\n if (addExistingInteractions) {\n for (const interaction of this.interactions) {\n listener.addInteraction(interaction);\n }\n }\n }\n\n public removeInteractionListener(listener: InteractionListener): void {\n this.interactionListeners.delete(listener);\n }\n\n public addChatProbe(chatProbe: ChatProbe): void {\n this.chatProbes.add(chatProbe);\n for (const listener of this.chatProbeListeners) {\n listener.addChatProbe(chatProbe);\n }\n }\n\n public updateChatProbe(chatProbe: ChatProbe): void {\n for (const listener of this.chatProbeListeners) {\n listener.updateChatProbe(chatProbe);\n }\n }\n\n public removeChatProbe(chatProbe: ChatProbe): void {\n this.chatProbes.delete(chatProbe);\n for (const listener of this.chatProbeListeners) {\n listener.removeChatProbe(chatProbe);\n }\n }\n\n public getLoadingProgressManager(): LoadingProgressManager {\n return this.loadingProgressManager;\n }\n\n public getChatProbes(): Set> {\n return this.chatProbes;\n }\n\n public addChatProbeListener(listener: ChatProbeListener, addExistingChatProbes = true): void {\n this.chatProbeListeners.add(listener);\n if (addExistingChatProbes) {\n for (const chatProbe of this.chatProbes) {\n listener.addChatProbe(chatProbe);\n }\n }\n }\n\n public removeChatProbeListener(listener: ChatProbeListener): void {\n this.chatProbeListeners.delete(listener);\n }\n}\n", "import { StandaloneGraphicsAdapter } from \"../graphics\";\nimport { LoadingProgressBar } from \"../loading\";\nimport { MMLScene } from \"./MMLScene\";\n\nexport class FullScreenMMLScene extends MMLScene {\n private loadingProgressBar: LoadingProgressBar;\n\n constructor() {\n super(document.createElement(\"div\"));\n this.element = document.createElement(\"div\");\n this.element.style.width = \"100%\";\n this.element.style.height = \"100%\";\n this.element.style.position = \"relative\";\n\n const loadingProgressManager = this.getLoadingProgressManager();\n this.loadingProgressBar = new LoadingProgressBar(loadingProgressManager);\n this.element.append(this.loadingProgressBar.element);\n\n this.configureWindowStyling();\n }\n\n private configureWindowStyling() {\n document.documentElement.style.width = \"100%\";\n document.documentElement.style.height = \"100%\";\n document.documentElement.style.overflow = \"hidden\";\n document.documentElement.style.overscrollBehaviorX = \"contain\";\n document.documentElement.style.margin = \"0\";\n\n const onload = () => {\n document.body.style.margin = \"0\";\n document.body.style.height = \"100%\";\n };\n if (document.body) {\n onload();\n } else {\n window.addEventListener(\"load\", () => {\n onload();\n });\n }\n }\n\n dispose() {\n super.dispose();\n this.element.remove();\n }\n}\n", "import { MElement, registerCustomElementsToWindow } from \"./elements\";\nimport { setGlobalDocumentTimeManager, setGlobalMMLScene } from \"./global\";\nimport { StandaloneGraphicsAdapter } from \"./graphics\";\nimport { FullScreenMMLScene } from \"./scene\";\nimport { MMLDocumentTimeManager } from \"./time\";\n\nexport function configureWindowForMML(\n window: Window,\n getGraphicsAdapter: (element: HTMLElement) => Promise,\n) {\n const fullScreenMMLScene = new FullScreenMMLScene();\n const mmlDocumentTimeManager = new MMLDocumentTimeManager();\n setGlobalMMLScene(fullScreenMMLScene);\n setGlobalDocumentTimeManager(mmlDocumentTimeManager);\n registerCustomElementsToWindow(window);\n const onload = async () => {\n window.document.body.append(fullScreenMMLScene.element);\n\n const graphicsAdapter = await getGraphicsAdapter(fullScreenMMLScene.element);\n\n fullScreenMMLScene.init(graphicsAdapter);\n\n // Traverse all the elements in the document and add them to the scene\n const traverse = (element: Element | Document) => {\n for (const i in element.children) {\n const child = element.children[i];\n if (child instanceof MElement) {\n child.connectedCallback?.();\n }\n traverse(child);\n }\n };\n traverse(window.document);\n\n fullScreenMMLScene.getLoadingProgressManager().setInitialLoad(true);\n\n const tick = () => {\n mmlDocumentTimeManager.tick();\n window.requestAnimationFrame(tick);\n };\n tick();\n };\n\n if (window.document.body) {\n onload();\n } else {\n // Wait for the window to load\n window.addEventListener(\"load\", onload);\n }\n}\n", "import { Audio, MAudioProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class AudioGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Audio) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract setSrc(src: string | null, mAudioProps: MAudioProps): void;\n\n abstract setStartTime(startTime: number, mAudioProps: MAudioProps): void;\n\n abstract setPauseTime(pauseTime: number | null, mAudioProps: MAudioProps): void;\n\n abstract setLoopDuration(loopDuration: number | null, mAudioProps: MAudioProps): void;\n\n abstract setLoop(loop: boolean, mAudioProps: MAudioProps): void;\n\n abstract setEnabled(enabled: boolean, mAudioProps: MAudioProps): void;\n\n abstract setVolume(volume: number, mAudioProps: MAudioProps): void;\n\n abstract setConeAngle(coneAngle: number | null, mAudioProps: MAudioProps): void;\n\n abstract setConeFalloffAngle(coneFalloffAngle: number | null, mAudioProps: MAudioProps): void;\n\n abstract setDebug(debug: boolean, mAudioProps: MAudioProps): void;\n\n abstract syncAudioTime(): void;\n\n abstract dispose(): void;\n}\n", "import { ChatProbe, MChatProbeProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class ChatProbeGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: ChatProbe) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract setRange(range: number, mChatProbeProps: MChatProbeProps): void;\n\n abstract setDebug(debug: boolean, mChatProbeProps: MChatProbeProps): void;\n\n abstract dispose(): void;\n}\n", "import { MMLColor } from \"../color\";\nimport { Cube, MCubeProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class CubeGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Cube) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract getCollisionElement(): G[\"collisionType\"];\n\n abstract setWidth(width: number, mCubeProps: MCubeProps): void;\n\n abstract setHeight(height: number, mCubeProps: MCubeProps): void;\n\n abstract setDepth(depth: number, mCubeProps: MCubeProps): void;\n\n abstract setColor(color: MMLColor, mCubeProps: MCubeProps): void;\n\n abstract setOpacity(opacity: number, mCubeProps: MCubeProps): void;\n\n abstract setCastShadows(castShadows: boolean, mCubeProps: MCubeProps): void;\n\n abstract dispose(): void;\n}\n", "import { MMLColor } from \"../color\";\nimport { Cylinder, MCylinderProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class CylinderGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Cylinder) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract getCollisionElement(): G[\"collisionType\"];\n\n abstract setRadius(radius: number, mCylinderProps: MCylinderProps): void;\n\n abstract setHeight(height: number, mCylinderProps: MCylinderProps): void;\n\n abstract setColor(color: MMLColor, mCylinderProps: MCylinderProps): void;\n\n abstract setOpacity(opacity: number, mCylinderProps: MCylinderProps): void;\n\n abstract setCastShadows(castShadows: boolean, mCylinderProps: MCylinderProps): void;\n\n abstract dispose(): void;\n}\n", "import { DebugHelper } from \"../debug-helper/DebugHelper\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class DebugHelperGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(debugHelper: DebugHelper) {}\n\n abstract dispose(): void;\n}\n", "import { Frame, MFrameProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class FrameGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Frame) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract setSrc(src: string | null, mFrameProps: MFrameProps): void;\n\n abstract setDebug(debug: boolean, mFrameProps: MFrameProps): void;\n\n abstract setLoadRange(loadRange: number | null, mFrameProps: MFrameProps): void;\n\n abstract setUnloadRange(unloadRange: number, mFrameProps: MFrameProps): void;\n\n abstract setMinX(minX: number | null, mFrameProps: MFrameProps): void;\n\n abstract setMaxX(maxX: number | null, mFrameProps: MFrameProps): void;\n\n abstract setMinY(minY: number | null, mFrameProps: MFrameProps): void;\n\n abstract setMaxY(maxY: number | null, mFrameProps: MFrameProps): void;\n\n abstract setMinZ(minZ: number | null, mFrameProps: MFrameProps): void;\n\n abstract setMaxZ(maxZ: number | null, mFrameProps: MFrameProps): void;\n\n abstract dispose(): void;\n}\n", "import { Image, MImageProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class ImageGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Image, updateMeshCallback: () => void) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract getCollisionElement(): G[\"collisionType\"];\n\n abstract getWidthAndHeight(): { width: number; height: number };\n\n abstract setSrc(src: string | null, mImageProps: MImageProps): void;\n\n abstract setWidth(width: number | null, mImageProps: MImageProps): void;\n\n abstract setHeight(height: number | null, mImageProps: MImageProps): void;\n\n abstract setOpacity(opacity: number, mImageProps: MImageProps): void;\n\n abstract setEmissive(opacity: number, mImageProps: MImageProps): void;\n\n abstract setCastShadows(castShadows: boolean, mImageProps: MImageProps): void;\n\n abstract dispose(): void;\n}\n", "import { Interaction, MInteractionProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class InteractionGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Interaction) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract setRange(range: number, mInteractionProps: MInteractionProps): void;\n\n abstract setInFocus(inFocus: boolean, mInteractionProps: MInteractionProps): void;\n\n abstract setLineOfSight(lineOfSight: boolean, mInteractionProps: MInteractionProps): void;\n\n abstract setPriority(priority: number, mInteractionProps: MInteractionProps): void;\n\n abstract setPrompt(prompt: string | null, mInteractionProps: MInteractionProps): void;\n\n abstract setDebug(debug: boolean, mInteractionProps: MInteractionProps): void;\n\n abstract dispose(): void;\n}\n", "import { MMLColor } from \"../color\";\nimport { Label, MLabelAlignment, MLabelProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class LabelGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Label) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract getCollisionElement(): G[\"collisionType\"];\n\n abstract setContent(content: string, mLabelProps: MLabelProps): void;\n\n abstract setAlignment(alignment: MLabelAlignment, mLabelProps: MLabelProps): void;\n\n abstract setWidth(width: number, mLabelProps: MLabelProps): void;\n\n abstract setHeight(height: number, mLabelProps: MLabelProps): void;\n\n abstract setFontSize(fontSize: number, mLabelProps: MLabelProps): void;\n\n abstract setPadding(padding: number, mLabelProps: MLabelProps): void;\n\n abstract setColor(color: MMLColor, mLabelProps: MLabelProps): void;\n\n abstract setFontColor(fontColor: MMLColor, mLabelProps: MLabelProps): void;\n\n abstract setCastShadows(castShadows: boolean, mLabelProps: MLabelProps): void;\n\n abstract setEmissive(emissive: number, mLabelProps: MLabelProps): void;\n\n abstract dispose(): void;\n}\n", "import { MMLColor } from \"../color\";\nimport { Light, LightTypes, MLightProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class LightGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Light) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract setEnabled(enabled: boolean, mLightProps: MLightProps): void;\n\n abstract setDebug(debug: boolean, mLightProps: MLightProps): void;\n\n abstract setCastShadows(castShadows: boolean, mLightProps: MLightProps): void;\n\n abstract setAngle(angle: number, mLightProps: MLightProps): void;\n\n abstract setIntensity(intensity: number, mLightProps: MLightProps): void;\n\n abstract setDistance(distance: number, mLightProps: MLightProps): void;\n\n abstract setType(type: LightTypes, mLightProps: MLightProps): void;\n\n abstract setColor(color: MMLColor, mLightProps: MLightProps): void;\n\n abstract dispose(): void;\n}\n", "import { Link, MLinkProps } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class LinkGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Link) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract setHref(href: string | null, props: MLinkProps): void;\n\n abstract setTarget(target: string | null, props: MLinkProps): void;\n\n abstract dispose(): void;\n}\n", "import { MElement } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class MElementGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: MElement) {}\n\n abstract getContainer(): G[\"containerType\"];\n\n abstract dispose(): void;\n}\n", "import { MModelProps, Model } from \"../elements\";\nimport { IVect3 } from \"../math/Vect3\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class ModelGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Model, updateMeshCallback: () => void) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract getBoundingBox(): {\n centerOffset: IVect3;\n size: IVect3;\n } | null;\n\n abstract transformed(): void;\n\n abstract getCollisionElement(): G[\"collisionType\"];\n\n abstract hasLoadedModel(): boolean;\n\n abstract hasLoadedAnimation(): boolean;\n\n abstract setSrc(src: string | null, mModelProps: MModelProps): void;\n\n abstract setAnim(anim: string | null, mModelProps: MModelProps): void;\n\n abstract setAnimEnabled(animEnabled: boolean | null, mModelProps: MModelProps): void;\n\n abstract setAnimLoop(animLoop: boolean | null, mModelProps: MModelProps): void;\n\n abstract setAnimStartTime(animStartTime: number | null, mModelProps: MModelProps): void;\n\n abstract setAnimPauseTime(animPauseTime: number | null, mModelProps: MModelProps): void;\n\n abstract setDebug(debug: boolean, mModelProps: MModelProps): void;\n\n abstract setCastShadows(castShadows: boolean, mModelProps: MModelProps): void;\n\n abstract dispose(): void;\n}\n", "import { MMLColor } from \"../color\";\nimport { MPlaneProps, Plane } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class PlaneGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Plane) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract getCollisionElement(): G[\"collisionType\"];\n\n abstract setWidth(width: number, mPlaneProps: MPlaneProps): void;\n\n abstract setHeight(height: number, mPlaneProps: MPlaneProps): void;\n\n abstract setColor(color: MMLColor, mPlaneProps: MPlaneProps): void;\n\n abstract setOpacity(opacity: number, mPlaneProps: MPlaneProps): void;\n\n abstract setCastShadows(castShadows: boolean, mPlaneProps: MPlaneProps): void;\n\n abstract dispose(): void;\n}\n", "import { MPositionProbeProps, PositionProbe } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class PositionProbeGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: PositionProbe) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract setRange(range: number, mPositionProbeProps: MPositionProbeProps): void;\n\n abstract setDebug(debug: boolean, mPositionProbeProps: MPositionProbeProps): void;\n\n abstract dispose(): void;\n}\n", "import { MPromptProps, Prompt } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class PromptGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Prompt) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract setMessage(message: string | undefined, mPromptProps: MPromptProps): void;\n\n abstract setPlaceholder(placeholder: string | undefined, mPromptProps: MPromptProps): void;\n\n abstract setPrefill(prefill: string | undefined, mPromptProps: MPromptProps): void;\n\n abstract setDebug(debug: boolean, mPromptProps: MPromptProps): void;\n\n abstract dispose(): void;\n}\n", "import { RemoteDocument } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class RemoteDocumentGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: RemoteDocument) {}\n\n abstract showError(showError: boolean): void;\n\n abstract dispose(): void;\n}\n", "import { MMLColor } from \"../color\";\nimport { MSphereProps, Sphere } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class SphereGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Sphere) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract getCollisionElement(): G[\"collisionType\"];\n\n abstract setRadius(width: number, mSphereProps: MSphereProps): void;\n\n abstract setColor(color: MMLColor, mSphereProps: MSphereProps): void;\n\n abstract setOpacity(opacity: number, mSphereProps: MSphereProps): void;\n\n abstract setCastShadows(castShadows: boolean, mSphereProps: MSphereProps): void;\n\n abstract dispose(): void;\n}\n", "import { TransformableElement, TransformableElementProps } from \"../elements\";\nimport { Matr4 } from \"../math/Matr4\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class TransformableGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: TransformableElement) {}\n\n abstract getWorldMatrix(): Matr4;\n\n abstract setSocket(\n socket: string | null,\n transformableElementProps: TransformableElementProps,\n ): void;\n\n abstract setX(x: number, transformableElementProps: TransformableElementProps): void;\n\n abstract setY(y: number, transformableElementProps: TransformableElementProps): void;\n\n abstract setZ(z: number, transformableElementProps: TransformableElementProps): void;\n\n abstract setRotationX(\n rotationX: number,\n transformableElementProps: TransformableElementProps,\n ): void;\n\n abstract setRotationY(\n rotationY: number,\n transformableElementProps: TransformableElementProps,\n ): void;\n\n abstract setRotationZ(\n rotationZ: number,\n transformableElementProps: TransformableElementProps,\n ): void;\n\n abstract setScaleX(scaleX: number, transformableElementProps: TransformableElementProps): void;\n\n abstract setScaleY(scaleY: number, transformableElementProps: TransformableElementProps): void;\n\n abstract setScaleZ(scaleZ: number, transformableElementProps: TransformableElementProps): void;\n\n abstract setVisible(visible: boolean, transformableElementProps: TransformableElementProps): void;\n\n abstract dispose(): void;\n}\n", "import { MVideoProps, Video } from \"../elements\";\nimport { GraphicsAdapter } from \"./GraphicsAdapter\";\n\nexport abstract class VideoGraphics {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(element: Video, updateMeshCallback: () => void) {}\n\n abstract enable(): void;\n\n abstract disable(): void;\n\n abstract getCollisionElement(): G[\"collisionType\"];\n\n abstract getWidthAndHeight(): { width: number; height: number };\n\n abstract setSrc(src: string | null, mVideoProps: MVideoProps): void;\n\n abstract setWidth(width: number | null, mVideoProps: MVideoProps): void;\n\n abstract setHeight(height: number | null, mVideoProps: MVideoProps): void;\n\n abstract setEnabled(enabled: boolean, mVideoProps: MVideoProps): void;\n\n abstract setCastShadows(castShadows: boolean, mVideoProps: MVideoProps): void;\n\n abstract setLoop(loop: boolean, mVideoProps: MVideoProps): void;\n\n abstract setVolume(volume: number, mVideoProps: MVideoProps): void;\n\n abstract setEmissive(emissive: number, mVideoProps: MVideoProps): void;\n\n abstract setStartTime(startTime: number, mVideoProps: MVideoProps): void;\n\n abstract setPauseTime(pauseTime: number | null, mVideoProps: MVideoProps): void;\n\n abstract syncVideoTime(): void;\n\n abstract dispose(): void;\n}\n", "export type IframeWrapperResult = {\n iframeWrapper: IframeWrapper;\n iframeWindow: Window;\n iframeDocument: Document;\n iframeBody: HTMLElement;\n};\n\n/**\n * The IframeWrapper class creates an iframe that can be used to load a document and then be disposed of. This is useful\n * for running a full NetworkedDOM document in an iframe and then disposing of it when it is no longer needed which will\n * clear up the + + diff --git a/pull/212/v1/index.js b/pull/212/v1/index.js new file mode 100644 index 00000000..b5d4868c --- /dev/null +++ b/pull/212/v1/index.js @@ -0,0 +1,781 @@ +import { + FullScreenMMLScene, + IframeWrapper, + MMLNetworkSource, + NetworkedDOMWebsocketStatus, + NetworkedDOMWebsocketStatusToString, + StandaloneTagDebugAdapter, + StatusUI, + allFields, + allGroups, + parseBoolAttribute, + registerCustomElementsToWindow, + rendererField, + setDebugGlobals, + urlField +} from "./chunk-OGDCF6KN.js"; + +// src/ui/setUrlParam.ts +function setUrlParam(name, value) { + const params = new URLSearchParams(window.location.search); + if (value === "" || value === null) { + params.delete(name); + } else { + params.set(name, value); + } + window.history.replaceState({}, "", `${window.location.pathname}?${params}`); + window.dispatchEvent(new PopStateEvent("popstate")); +} + +// src/ui/shared-styles.module.css +var shared_styles_default = { + "button": "shared-styles-module__button_Y_AOrq__0190", + "header": "shared-styles-module__header_Y_AOrq__0190" +}; + +// src/ui/UIElement.ts +var UIElement = class { + constructor() { + this.element = document.createElement("div"); + } + dispose() { + } +}; + +// src/ui/UIField.module.css +var UIField_default = { + "label": "UIField-module__label_lh-KDa__0190", + "labelFocused": "UIField-module__label-focused_lh-KDa__0190", + "selectInput": "UIField-module__select-input_lh-KDa__0190", + "submitButton": "UIField-module__submit-button_lh-KDa__0190", + "textInput": "UIField-module__text-input_lh-KDa__0190", + "uiField": "UIField-module__ui-field_lh-KDa__0190" +}; + +// src/ui/UIField.ts +var UIField = class extends UIElement { + constructor(fieldDefinition, group) { + super(); + this.fieldDefinition = fieldDefinition; + this.group = group; + this.element.className = UIField_default.uiField; + this.label = document.createElement("label"); + this.label.className = UIField_default.label; + this.label.textContent = fieldDefinition.label; + this.element.append(this.label); + if (fieldDefinition.options) { + const selectElement = document.createElement("select"); + this.selectElement = selectElement; + this.selectElement.className = UIField_default.selectInput; + const unsetOption = document.createElement("option"); + unsetOption.textContent = "Unset (default: " + fieldDefinition.defaultValue + ")"; + unsetOption.value = ""; + this.selectElement.append(unsetOption); + this.element.append(this.selectElement); + for (const option of fieldDefinition.options) { + const optionElement = document.createElement("option"); + optionElement.textContent = option; + this.selectElement.append(optionElement); + } + if (fieldDefinition.requireSubmission) { + this.submitButton = document.createElement("button"); + this.submitButton.classList.add(shared_styles_default.button, UIField_default.submitButton); + this.submitButton.textContent = "Submit"; + this.submitButton.addEventListener("click", () => { + this.onChange(selectElement.value); + }); + this.element.append(this.submitButton); + } else { + this.selectElement.addEventListener("change", () => { + this.onChange(selectElement.value); + }); + } + } else { + const input = document.createElement("input"); + this.input = input; + this.input.className = UIField_default.textInput; + this.input.placeholder = `Default: ${fieldDefinition.defaultValue.toString()}`; + this.input.addEventListener("focus", () => { + this.label.classList.add(UIField_default.labelFocused); + }); + this.input.addEventListener("blur", () => { + this.label.classList.remove(UIField_default.labelFocused); + }); + this.input.addEventListener("keydown", (event) => { + if (event.key === "Enter") { + this.onChange(input.value); + } + }); + if (fieldDefinition.type === "number") { + this.input.step = "0.01"; + this.input.type = "number"; + } else if (fieldDefinition.type === "color") { + this.input.type = "text"; + } else { + this.input.type = "text"; + } + this.element.append(this.input); + if (fieldDefinition.requireSubmission) { + this.submitButton = document.createElement("button"); + this.submitButton.classList.add(shared_styles_default.button, UIField_default.submitButton); + this.submitButton.textContent = "Submit"; + this.submitButton.addEventListener("click", () => { + if (this.input) { + this.onChange(this.input.value); + } else if (this.selectElement) { + this.onChange(this.selectElement.value); + } + }); + this.element.append(this.submitButton); + } else { + if (this.input) { + const input2 = this.input; + this.input.addEventListener("input", () => { + this.onChange(input2.value); + }); + } else if (this.selectElement) { + const selectElement = this.selectElement; + this.selectElement.addEventListener("change", () => { + this.onChange(selectElement.value); + }); + } + } + } + const params = new URLSearchParams(window.location.search); + const value = params.get(fieldDefinition.name); + if (value) { + this.setValue(value); + } + } + setValue(value) { + if (this.selectElement) { + this.selectElement.value = value; + } else if (this.input) { + this.input.value = value; + } + } + onChange(value) { + setUrlParam(this.fieldDefinition.name, value); + } +}; + +// src/ui/UIGroup.module.css +var UIGroup_default = { + "uiGroup": "UIGroup-module__ui-group_WUqfdq__0190" +}; + +// src/ui/UIGroup.ts +var UIGroup = class extends UIElement { + constructor(groupDefinition) { + super(); + this.groupDefinition = groupDefinition; + this.fields = new Array(); + this.element.className = UIGroup_default.uiGroup; + this.header = document.createElement("div"); + this.header.className = shared_styles_default.header; + this.header.textContent = groupDefinition.label; + this.element.append(this.header); + this.contents = document.createElement("div"); + this.contents.className = UIGroup_default.contents; + this.element.append(this.contents); + } + addField(uiField) { + if (this.fields.includes(uiField)) { + return; + } + this.fields.push(uiField); + this.fields.sort( + (a, b) => allFields.indexOf(a.fieldDefinition) - allFields.indexOf(b.fieldDefinition) + ); + const index = this.fields.indexOf(uiField); + if (index === this.fields.length - 1) { + this.contents.append(uiField.element); + } else { + const nextGroup = this.fields[index + 1]; + this.contents.insertBefore(uiField.element, nextGroup.element); + } + } + removeField(uiField) { + this.fields = this.fields.filter((f) => f !== uiField); + this.contents.removeChild(uiField.element); + } + dispose() { + for (const element of this.fields) { + element.dispose(); + } + this.fields = []; + } + isEmpty() { + return this.fields.length === 0; + } +}; + +// src/FormIteration.ts +var FormIteration = class { + constructor(queryParamState, viewerUI, previousFormIteration) { + this.queryParamState = queryParamState; + this.viewerUI = viewerUI; + this.unmatchedFields = /* @__PURE__ */ new Map(); + this.fields = /* @__PURE__ */ new Map(); + this.groups = /* @__PURE__ */ new Map(); + if (previousFormIteration) { + this.unmatchedFields = new Map(previousFormIteration.fields); + this.fields = new Map(previousFormIteration.fields); + } + } + getFieldValue(fieldDefinition) { + const unmatchedField = this.unmatchedFields.get(fieldDefinition); + if (unmatchedField) { + const uiGroup = unmatchedField.group; + this.groups.set(uiGroup.groupDefinition, uiGroup); + this.unmatchedFields.delete(fieldDefinition); + } + let field = this.fields.get(fieldDefinition); + if (!field) { + const groupDefinition = fieldDefinition.groupDefinition; + let uiGroup = this.groups.get(groupDefinition); + if (!uiGroup) { + uiGroup = new UIGroup(groupDefinition); + this.groups.set(groupDefinition, uiGroup); + this.viewerUI.addGroup(uiGroup); + } + field = new UIField(fieldDefinition, uiGroup); + uiGroup.addField(field); + this.fields.set(fieldDefinition, field); + } + const readValue = this.queryParamState.read(fieldDefinition.name); + if (readValue !== null) { + field.setValue(readValue); + return readValue; + } + return fieldDefinition.defaultValue.toString(); + } + clearUnmatchedFields() { + for (const field of this.unmatchedFields.values()) { + const group = field.group; + group.removeField(field); + field.dispose(); + if (group.isEmpty()) { + group.dispose(); + this.viewerUI.removeGroup(group); + this.groups.delete(group.groupDefinition); + } + this.fields.delete(field.fieldDefinition); + } + this.unmatchedFields.clear(); + } + completed() { + this.clearUnmatchedFields(); + this.viewerUI.showUnusedParams(Array.from(this.queryParamState.getUnusedParams())); + } +}; + +// src/PlayCanvasMode.ts +var PlayCanvasMode = class { + constructor(windowTarget, targetForWrappers, mmlSource, formIteration) { + this.windowTarget = windowTarget; + this.targetForWrappers = targetForWrappers; + this.mmlSource = mmlSource; + this.formIteration = formIteration; + this.disposed = false; + this.internalMode = null; + this.type = "playcanvas"; + this.init(); + } + async init() { + this.internalMode = await (async () => { + const { PlayCanvasModeInternal } = await import("./PlayCanvasModeInternal-6JRQ32LR.js"); + return new PlayCanvasModeInternal( + this.windowTarget, + this.targetForWrappers, + this.mmlSource, + this.formIteration + ); + })(); + if (this.disposed) { + this.dispose(); + return; + } + } + dispose() { + this.disposed = true; + if (this.internalMode) { + this.internalMode.dispose(); + } + } + update(formIteration) { + this.formIteration = formIteration; + if (!this.internalMode) { + return; + } + this.internalMode.update(formIteration); + } +}; + +// src/QueryParamState.ts +var QueryParamState = class _QueryParamState { + constructor(arg = /* @__PURE__ */ new Map()) { + this.params = /* @__PURE__ */ new Map(); + this.usedParams = /* @__PURE__ */ new Set(); + if (typeof arg === "string") { + this.params = new Map(new URLSearchParams(arg)); + } else { + this.params = new Map(arg); + } + } + cloneWithAdditionalParams(params) { + const newParams = new Map(this.params); + params.forEach((value, key) => { + newParams.set(key, value); + }); + return new _QueryParamState(newParams); + } + read(key) { + this.usedParams.add(key); + return this.params.get(key) ?? null; + } + getUnusedParams() { + const unusedParams = new Set(this.params.keys()); + this.usedParams.forEach((key) => { + unusedParams.delete(key); + }); + return unusedParams; + } + toString() { + const searchParams = new URLSearchParams(); + this.params.forEach((value, key) => { + searchParams.set(key, value); + }); + return searchParams.toString(); + } +}; + +// src/TagsMode.ts +var TagsMode = class { + constructor(windowTarget, targetForWrappers, mmlSourceDefinition, formIteration) { + this.windowTarget = windowTarget; + this.targetForWrappers = targetForWrappers; + this.mmlSourceDefinition = mmlSourceDefinition; + this.formIteration = formIteration; + this.disposed = false; + this.loadedState = null; + this.type = "tags"; + this.init(); + } + async init() { + const fullScreenMMLScene = new FullScreenMMLScene(); + document.body.append(fullScreenMMLScene.element); + const graphicsAdapter = await StandaloneTagDebugAdapter.create(fullScreenMMLScene.element); + if (this.disposed) { + graphicsAdapter.dispose(); + return; + } + fullScreenMMLScene.init(graphicsAdapter); + const statusUI = new StatusUI(); + const mmlNetworkSource = MMLNetworkSource.create({ + mmlScene: fullScreenMMLScene, + statusUpdated: (status) => { + if (status === NetworkedDOMWebsocketStatus.Connected) { + statusUI.setNoStatus(); + } else { + statusUI.setStatus(NetworkedDOMWebsocketStatusToString(status)); + } + }, + url: this.mmlSourceDefinition.url, + windowTarget: this.windowTarget, + targetForWrappers: this.targetForWrappers + }); + setDebugGlobals({ + mmlScene: fullScreenMMLScene, + remoteDocumentWrapper: mmlNetworkSource.remoteDocumentWrapper + }); + this.loadedState = { + mmlNetworkSource, + graphicsAdapter, + fullScreenMMLScene, + statusUI + }; + this.update(this.formIteration); + } + dispose() { + this.disposed = true; + if (this.loadedState) { + this.loadedState.mmlNetworkSource.dispose(); + this.loadedState.graphicsAdapter.dispose(); + this.loadedState.fullScreenMMLScene.dispose(); + this.loadedState.statusUI.dispose(); + this.loadedState = null; + } + } + update(formIteration) { + formIteration.completed(); + } +}; + +// src/ThreeJSMode.ts +var ThreeJSMode = class { + constructor(windowTarget, targetForWrappers, mmlSource, formIteration) { + this.windowTarget = windowTarget; + this.targetForWrappers = targetForWrappers; + this.mmlSource = mmlSource; + this.formIteration = formIteration; + this.disposed = false; + this.internalMode = null; + this.type = "threejs"; + this.init(); + } + async init() { + this.internalMode = await (async () => { + const { ThreeJSModeInternal } = await import("./ThreeJSModeInternal-OES4PZ5X.js"); + return new ThreeJSModeInternal( + this.windowTarget, + this.targetForWrappers, + this.mmlSource, + this.formIteration + ); + })(); + if (this.disposed) { + this.dispose(); + return; + } + } + dispose() { + this.disposed = true; + if (this.internalMode) { + this.internalMode.dispose(); + } + } + update(formIteration) { + this.formIteration = formIteration; + if (!this.internalMode) { + return; + } + this.internalMode.update(formIteration); + } +}; + +// ../../branding/src/svg/logotype/mml-logotype-white.svg +var mml_logotype_white_default = "./mml-logotype-white-YIZ3ZTFD.svg"; + +// src/ui/github-mark-white.svg +var github_mark_white_default = "./github-mark-white-DC6LPEI2.svg"; + +// src/ui/HideUISection.module.css +var HideUISection_default = { + "hidden": "HideUISection-module__hidden_ygtI5G__0190", + "hideUiSection": "HideUISection-module__hide-ui-section_ygtI5G__0190", + "hideUiSectionContents": "HideUISection-module__hide-ui-section-contents_ygtI5G__0190" +}; + +// src/ui/tooltip.module.css +var tooltip_default = { + "tooltip": "tooltip-module__tooltip_qonKzG__0190", + "tooltipInitiator": "tooltip-module__tooltip-initiator_qonKzG__0190", + "tooltipItem": "tooltip-module__tooltip-item_qonKzG__0190" +}; + +// src/ui/HideUISection.ts +var HideUISection = class { + constructor() { + this.element = document.createElement("div"); + this.element.className = HideUISection_default.hideUiSection; + this.hideUiHeader = document.createElement("div"); + this.hideUiHeader.textContent = "Hide UI"; + this.hideUiHeader.className = shared_styles_default.header; + this.element.append(this.hideUiHeader); + this.hideUiSectionContents = document.createElement("div"); + this.hideUiSectionContents.className = HideUISection_default.hideUiSectionContents; + this.element.append(this.hideUiSectionContents); + this.hideUiButton = document.createElement("button"); + this.hideUiButton.className = shared_styles_default.button; + this.hideUiButton.textContent = "Hide UI"; + this.hideUiButton.addEventListener("click", () => { + setUrlParam("noUI", "true"); + }); + this.hideUiSectionContents.append(this.hideUiButton); + const warningIcon = document.createElement("span"); + warningIcon.className = tooltip_default.tooltip; + warningIcon.setAttribute("data-direction", "left"); + const warningIconText = document.createElement("span"); + warningIconText.className = tooltip_default.tooltipInitiator; + warningIconText.textContent = "\u26A0\uFE0F"; + warningIcon.append(warningIconText); + const warningTooltip = document.createElement("span"); + warningTooltip.className = tooltip_default.tooltipItem; + warningTooltip.textContent = "If you hide the UI, it can only be shown again by removing the noUI parameter from the URL"; + warningIcon.append(warningTooltip); + this.hideUiSectionContents.append(warningIcon); + } + show() { + this.element.classList.remove(HideUISection_default.hidden); + } + hide() { + this.element.classList.add(HideUISection_default.hidden); + } +}; + +// src/ui/UnusedParameters.module.css +var UnusedParameters_default = { + "header": "UnusedParameters-module__header_BZL2TW__0190", + "hidden": "UnusedParameters-module__hidden_BZL2TW__0190", + "paramListItem": "UnusedParameters-module__param-list-item_BZL2TW__0190", + "unusedParameters": "UnusedParameters-module__unused-parameters_BZL2TW__0190" +}; + +// src/ui/UnusedParameters.ts +var UnusedParameters = class { + constructor() { + this.element = document.createElement("div"); + this.element.classList.add(UnusedParameters_default.unusedParameters, UnusedParameters_default.hidden); + this.header = document.createElement("div"); + this.header.textContent = "Unused Parameters"; + this.header.className = shared_styles_default.header; + this.element.append(this.header); + const warningIcon = document.createElement("span"); + warningIcon.className = tooltip_default.tooltip; + warningIcon.setAttribute("data-direction", "left"); + const warningIconText = document.createElement("span"); + warningIconText.className = tooltip_default.tooltipInitiator; + warningIconText.textContent = "\u26A0\uFE0F"; + warningIcon.append(warningIconText); + const warningTooltip = document.createElement("span"); + warningTooltip.className = tooltip_default.tooltipItem; + warningTooltip.textContent = "These parameters are not used by the viewer in the current mode"; + warningIcon.append(warningTooltip); + this.header.append(warningIcon); + this.paramsHolder = document.createElement("div"); + this.element.append(this.paramsHolder); + } + setParams(params) { + this.paramsHolder.innerHTML = ""; + if (params.length === 0) { + this.element.classList.add(UnusedParameters_default.hidden); + return; + } + this.element.classList.remove(UnusedParameters_default.hidden); + for (const param of params) { + const listItem = document.createElement("div"); + listItem.className = UnusedParameters_default.paramListItem; + const paramName = document.createElement("div"); + paramName.textContent = param; + listItem.append(paramName); + const removeButton = document.createElement("button"); + removeButton.className = shared_styles_default.button; + removeButton.textContent = "Remove"; + removeButton.addEventListener("click", () => { + setUrlParam(param, null); + }); + listItem.append(removeButton); + this.paramsHolder.append(listItem); + } + } +}; + +// src/ui/ViewerUI.module.css +var ViewerUI_default = { + "contents": "ViewerUI-module__contents_ne7v1W__0190", + "emptyState": "ViewerUI-module__empty-state_ne7v1W__0190", + "githubLink": "ViewerUI-module__github-link_ne7v1W__0190", + "githubLogo": "ViewerUI-module__github-logo_ne7v1W__0190", + "header": "ViewerUI-module__header_ne7v1W__0190", + "logo": "ViewerUI-module__logo_ne7v1W__0190", + "menuButton": "ViewerUI-module__menu-button_ne7v1W__0190", + "title": "ViewerUI-module__title_ne7v1W__0190", + "viewerUi": "ViewerUI-module__viewer-ui_ne7v1W__0190" +}; + +// src/ui/ViewerUI.ts +var ViewerUI = class { + constructor() { + this.groups = []; + this.element = document.createElement("div"); + this.element.className = ViewerUI_default.viewerUi; + this.element.addEventListener("wheel", (e) => e.stopPropagation()); + document.body.append(this.element); + this.contents = document.createElement("div"); + this.contents.className = ViewerUI_default.contents; + this.contents.style.display = "none"; + this.element.append(this.contents); + this.header = document.createElement("div"); + this.header.className = ViewerUI_default.header; + const title = document.createElement("div"); + title.className = ViewerUI_default.title; + const logoLink = document.createElement("a"); + logoLink.target = "_blank"; + logoLink.href = "https://mml.io"; + const logo = document.createElement("img"); + logo.classList.add(ViewerUI_default.logo); + logo.src = mml_logotype_white_default; + logo.alt = "MML"; + logoLink.append(logo); + title.append(logoLink); + const span = document.createElement("span"); + span.textContent = " Viewer (Alpha)"; + title.append(span); + this.header.append(title); + const githubLink = document.createElement("a"); + githubLink.target = "_blank"; + githubLink.className = ViewerUI_default.githubLink; + githubLink.href = "https://github.com/mml-io/mml/tree/main/packages/mml-viewer"; + const githubLogo = document.createElement("img"); + githubLogo.classList.add(ViewerUI_default.githubLogo); + githubLogo.src = github_mark_white_default; + githubLogo.alt = "GitHub"; + githubLink.append(githubLogo); + const githubSpan = document.createElement("span"); + githubSpan.textContent = "View Source"; + githubLink.append(githubSpan); + this.header.append(githubLink); + this.contents.append(this.header); + this.groupHolder = document.createElement("div"); + this.contents.append(this.groupHolder); + this.unusedParameters = new UnusedParameters(); + this.contents.append(this.unusedParameters.element); + this.hideUISection = new HideUISection(); + this.contents.append(this.hideUISection.element); + const menuIcon = document.createElement("button"); + menuIcon.classList.add(ViewerUI_default.menuButton, "no-copy"); + menuIcon.textContent = "\u2261"; + menuIcon.addEventListener("click", () => { + this.contents.style.display = this.contents.style.display === "none" ? "block" : "none"; + }); + this.element.append(menuIcon); + } + addGroup(uiGroup) { + this.groups.push(uiGroup); + this.groups.sort( + (a, b) => allGroups.indexOf(a.groupDefinition) - allGroups.indexOf(b.groupDefinition) + ); + const index = this.groups.indexOf(uiGroup); + if (index === this.groups.length - 1) { + this.groupHolder.append(uiGroup.element); + } else { + const nextGroup = this.groups[index + 1]; + this.groupHolder.insertBefore(uiGroup.element, nextGroup.element); + } + } + showUnusedParams(params) { + this.unusedParameters.setParams(params); + } + showAddressMenu() { + this.element.classList.add(ViewerUI_default.emptyState); + this.contents.style.display = "block"; + this.hideUISection.hide(); + } + hideAddressMenu() { + this.element.classList.remove(ViewerUI_default.emptyState); + this.hideUISection.show(); + } + removeGroup(group) { + this.groupHolder.removeChild(group.element); + this.groups = this.groups.filter((g) => g !== group); + } + show() { + this.element.style.display = "block"; + } + hide() { + this.element.style.display = "none"; + } +}; + +// src/StandaloneViewer.ts +var StandaloneViewer = class { + constructor(windowTarget, targetForWrappers) { + this.windowTarget = windowTarget; + this.targetForWrappers = targetForWrappers; + this.viewerUI = new ViewerUI(); + this.graphicsMode = null; + this.formIteration = null; + this.source = null; + window.addEventListener("popstate", () => { + this.handleParams(); + }); + this.handleParams(); + } + handleParams() { + const queryParamState = new QueryParamState(window.location.search); + const formIteration = new FormIteration(queryParamState, this.viewerUI, this.formIteration); + this.formIteration = formIteration; + const url = formIteration.getFieldValue(urlField); + const renderer = formIteration.getFieldValue(rendererField); + const noUI = parseBoolAttribute(queryParamState.read("noUI"), false); + if (noUI) { + this.viewerUI.hide(); + } else { + this.viewerUI.show(); + } + let source; + if (url) { + source = { url }; + if (this.source && this.source.url !== url) { + if (this.graphicsMode) { + this.graphicsMode.dispose(); + this.graphicsMode = null; + } + } + this.source = source; + } else { + if (this.graphicsMode) { + this.graphicsMode.dispose(); + this.graphicsMode = null; + } + this.viewerUI.showAddressMenu(); + this.formIteration.completed(); + return; + } + this.viewerUI.hideAddressMenu(); + if (this.graphicsMode && this.graphicsMode.type !== renderer) { + this.graphicsMode.dispose(); + this.graphicsMode = null; + } + if (!this.graphicsMode) { + if (renderer === "playcanvas") { + this.graphicsMode = new PlayCanvasMode( + this.windowTarget, + this.targetForWrappers, + source, + formIteration + ); + } else if (renderer === "threejs") { + this.graphicsMode = new ThreeJSMode( + this.windowTarget, + this.targetForWrappers, + source, + formIteration + ); + } else if (renderer === "tags") { + this.graphicsMode = new TagsMode( + this.windowTarget, + this.targetForWrappers, + source, + formIteration + ); + } + } else { + this.graphicsMode.update(formIteration); + } + } +}; + +// src/index.ts +window.addEventListener("load", () => { + (async () => { + const { iframeWindow, iframeBody } = await IframeWrapper.create(); + const windowTarget = iframeWindow; + const targetForWrappers = iframeBody; + registerCustomElementsToWindow(windowTarget); + const transparentPixel = document.createElement("div"); + transparentPixel.style.width = "1px"; + transparentPixel.style.height = "1px"; + transparentPixel.style.position = "absolute"; + transparentPixel.style.top = "1px"; + transparentPixel.style.left = "1px"; + transparentPixel.style.userSelect = "none"; + transparentPixel.style.pointerEvents = "none"; + transparentPixel.style.backdropFilter = "blur(1px)"; + document.body.append(transparentPixel); + const standaloneViewer = new StandaloneViewer(windowTarget, targetForWrappers); + window["mml-viewer"] = standaloneViewer; + })(); +}); +//# sourceMappingURL=index.js.map diff --git a/pull/212/v1/index.js.map b/pull/212/v1/index.js.map new file mode 100644 index 00000000..7024a67b --- /dev/null +++ b/pull/212/v1/index.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../src/ui/setUrlParam.ts", "../src/ui/shared-styles.module.css", "../src/ui/UIElement.ts", "../src/ui/UIField.module.css", "../src/ui/UIField.ts", "../src/ui/UIGroup.module.css", "../src/ui/UIGroup.ts", "../src/FormIteration.ts", "../src/PlayCanvasMode.ts", "../src/QueryParamState.ts", "../src/TagsMode.ts", "../src/ThreeJSMode.ts", "../src/ui/HideUISection.module.css", "../src/ui/tooltip.module.css", "../src/ui/HideUISection.ts", "../src/ui/UnusedParameters.module.css", "../src/ui/UnusedParameters.ts", "../src/ui/ViewerUI.module.css", "../src/ui/ViewerUI.ts", "../src/StandaloneViewer.ts", "../src/index.ts"], + "sourcesContent": ["export function setUrlParam(name: string, value: string | null) {\n const params = new URLSearchParams(window.location.search);\n if (value === \"\" || value === null) {\n params.delete(name);\n } else {\n params.set(name, value);\n }\n window.history.replaceState({}, \"\", `${window.location.pathname}?${params}`);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/shared-styles.module.css\";\n\nexport default {\n \"button\": \"shared-styles-module__button_Y_AOrq__0190\",\n \"header\": \"shared-styles-module__header_Y_AOrq__0190\"\n};\n ", "export class UIElement {\n public readonly element = document.createElement(\"div\");\n\n dispose() {}\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UIField.module.css\";\n\nexport default {\n \"label\": \"UIField-module__label_lh-KDa__0190\",\n \"labelFocused\": \"UIField-module__label-focused_lh-KDa__0190\",\n \"selectInput\": \"UIField-module__select-input_lh-KDa__0190\",\n \"submitButton\": \"UIField-module__submit-button_lh-KDa__0190\",\n \"textInput\": \"UIField-module__text-input_lh-KDa__0190\",\n \"uiField\": \"UIField-module__ui-field_lh-KDa__0190\"\n};\n ", "import { FieldDefinition } from \"./FieldDefinition\";\nimport { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport { UIElement } from \"./UIElement\";\nimport styles from \"./UIField.module.css\";\nimport { UIGroup } from \"./UIGroup\";\n\nexport class UIField extends UIElement {\n private label: HTMLLabelElement;\n private input?: HTMLInputElement;\n\n private selectElement?: HTMLSelectElement;\n\n private submitButton?: HTMLButtonElement;\n\n constructor(\n public fieldDefinition: FieldDefinition,\n public readonly group: UIGroup,\n ) {\n super();\n this.element.className = styles.uiField;\n\n this.label = document.createElement(\"label\");\n this.label.className = styles.label;\n this.label.textContent = fieldDefinition.label;\n this.element.append(this.label);\n\n if (fieldDefinition.options) {\n const selectElement = document.createElement(\"select\");\n this.selectElement = selectElement;\n this.selectElement.className = styles.selectInput;\n\n const unsetOption = document.createElement(\"option\");\n unsetOption.textContent = \"Unset (default: \" + fieldDefinition.defaultValue + \")\";\n unsetOption.value = \"\";\n this.selectElement.append(unsetOption);\n this.element.append(this.selectElement);\n\n for (const option of fieldDefinition.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option;\n this.selectElement.append(optionElement);\n }\n\n if (fieldDefinition.requireSubmission) {\n this.submitButton = document.createElement(\"button\");\n this.submitButton.classList.add(sharedStyles.button, styles.submitButton);\n this.submitButton.textContent = \"Submit\";\n this.submitButton.addEventListener(\"click\", () => {\n this.onChange(selectElement.value);\n });\n this.element.append(this.submitButton);\n } else {\n this.selectElement.addEventListener(\"change\", () => {\n this.onChange(selectElement.value);\n });\n }\n } else {\n const input = document.createElement(\"input\");\n this.input = input;\n this.input.className = styles.textInput;\n this.input.placeholder = `Default: ${fieldDefinition.defaultValue.toString()}`;\n this.input.addEventListener(\"focus\", () => {\n this.label.classList.add(styles.labelFocused);\n });\n this.input.addEventListener(\"blur\", () => {\n this.label.classList.remove(styles.labelFocused);\n });\n this.input.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n this.onChange(input.value);\n }\n });\n if (fieldDefinition.type === \"number\") {\n this.input.step = \"0.01\";\n this.input.type = \"number\";\n } else if (fieldDefinition.type === \"color\") {\n this.input.type = \"text\";\n } else {\n this.input.type = \"text\";\n }\n this.element.append(this.input);\n\n if (fieldDefinition.requireSubmission) {\n this.submitButton = document.createElement(\"button\");\n this.submitButton.classList.add(sharedStyles.button, styles.submitButton);\n this.submitButton.textContent = \"Submit\";\n this.submitButton.addEventListener(\"click\", () => {\n if (this.input) {\n this.onChange(this.input.value);\n } else if (this.selectElement) {\n this.onChange(this.selectElement.value);\n }\n });\n this.element.append(this.submitButton);\n } else {\n if (this.input) {\n const input = this.input;\n this.input.addEventListener(\"input\", () => {\n this.onChange(input.value);\n });\n } else if (this.selectElement) {\n const selectElement = this.selectElement;\n this.selectElement.addEventListener(\"change\", () => {\n this.onChange(selectElement.value);\n });\n }\n }\n }\n\n const params = new URLSearchParams(window.location.search);\n const value = params.get(fieldDefinition.name);\n if (value) {\n this.setValue(value);\n }\n }\n\n setValue(value: string) {\n if (this.selectElement) {\n this.selectElement.value = value;\n } else if (this.input) {\n this.input.value = value;\n }\n }\n\n onChange(value: string) {\n setUrlParam(this.fieldDefinition.name, value);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UIGroup.module.css\";\n\nexport default {\n \"uiGroup\": \"UIGroup-module__ui-group_WUqfdq__0190\"\n};\n ", "import { GroupDefinition } from \"./FieldDefinition\";\nimport { allFields } from \"./fields\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport { UIElement } from \"./UIElement\";\nimport { UIField } from \"./UIField\";\nimport styles from \"./UIGroup.module.css\";\n\nexport class UIGroup extends UIElement {\n private header: HTMLDivElement;\n private contents: HTMLDivElement;\n\n constructor(public readonly groupDefinition: GroupDefinition) {\n super();\n this.element.className = styles.uiGroup;\n this.header = document.createElement(\"div\");\n this.header.className = sharedStyles.header;\n this.header.textContent = groupDefinition.label;\n this.element.append(this.header);\n\n this.contents = document.createElement(\"div\");\n this.contents.className = styles.contents;\n this.element.append(this.contents);\n }\n\n private fields: Array = new Array();\n\n addField(uiField: UIField) {\n if (this.fields.includes(uiField)) {\n return;\n }\n\n this.fields.push(uiField);\n this.fields.sort(\n (a, b) => allFields.indexOf(a.fieldDefinition) - allFields.indexOf(b.fieldDefinition),\n );\n const index = this.fields.indexOf(uiField);\n if (index === this.fields.length - 1) {\n this.contents.append(uiField.element);\n } else {\n const nextGroup = this.fields[index + 1];\n this.contents.insertBefore(uiField.element, nextGroup.element);\n }\n }\n\n removeField(uiField: UIField) {\n this.fields = this.fields.filter((f) => f !== uiField);\n this.contents.removeChild(uiField.element);\n }\n\n dispose() {\n for (const element of this.fields) {\n element.dispose();\n }\n this.fields = [];\n }\n\n isEmpty() {\n return this.fields.length === 0;\n }\n}\n", "import { QueryParamState } from \"./QueryParamState\";\nimport { FieldDefinition, GroupDefinition } from \"./ui/FieldDefinition\";\nimport { UIField } from \"./ui/UIField\";\nimport { UIGroup } from \"./ui/UIGroup\";\nimport { ViewerUI } from \"./ui/ViewerUI\";\n\nexport class FormIteration {\n private unmatchedFields = new Map();\n\n private fields = new Map();\n private groups = new Map();\n\n constructor(\n private queryParamState: QueryParamState,\n private viewerUI: ViewerUI,\n previousFormIteration: FormIteration | null,\n ) {\n if (previousFormIteration) {\n this.unmatchedFields = new Map(previousFormIteration.fields);\n this.fields = new Map(previousFormIteration.fields);\n }\n }\n\n getFieldValue(fieldDefinition: FieldDefinition): string {\n const unmatchedField = this.unmatchedFields.get(fieldDefinition);\n if (unmatchedField) {\n const uiGroup = unmatchedField.group;\n this.groups.set(uiGroup.groupDefinition, uiGroup);\n this.unmatchedFields // We've used this existing field. Mark it as matched.\n .delete(fieldDefinition);\n }\n let field = this.fields.get(fieldDefinition);\n if (!field) {\n const groupDefinition = fieldDefinition.groupDefinition;\n let uiGroup = this.groups.get(groupDefinition);\n if (!uiGroup) {\n uiGroup = new UIGroup(groupDefinition);\n this.groups.set(groupDefinition, uiGroup);\n this.viewerUI.addGroup(uiGroup);\n }\n field = new UIField(fieldDefinition, uiGroup);\n uiGroup.addField(field);\n this.fields.set(fieldDefinition, field);\n }\n\n const readValue = this.queryParamState.read(fieldDefinition.name);\n if (readValue !== null) {\n field.setValue(readValue);\n return readValue;\n }\n return fieldDefinition.defaultValue.toString();\n }\n\n private clearUnmatchedFields() {\n for (const field of this.unmatchedFields.values()) {\n const group = field.group;\n group.removeField(field);\n field.dispose();\n if (group.isEmpty()) {\n group.dispose();\n this.viewerUI.removeGroup(group);\n this.groups.delete(group.groupDefinition);\n }\n this.fields.delete(field.fieldDefinition);\n }\n this.unmatchedFields.clear();\n }\n\n completed() {\n this.clearUnmatchedFields();\n this.viewerUI.showUnusedParams(Array.from(this.queryParamState.getUnusedParams()));\n }\n}\n", "import { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSourceDefinition } from \"./MMLSourceDefinition\";\n\nexport class PlayCanvasMode implements GraphicsMode {\n private disposed = false;\n private internalMode: GraphicsMode | null = null;\n\n public readonly type = \"playcanvas\";\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSource: MMLSourceDefinition,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n private async init() {\n this.internalMode = await (async () => {\n const { PlayCanvasModeInternal } = await import(\"./PlayCanvasModeInternal\");\n return new PlayCanvasModeInternal(\n this.windowTarget,\n this.targetForWrappers,\n this.mmlSource,\n this.formIteration,\n );\n })();\n if (this.disposed) {\n this.dispose();\n return;\n }\n }\n\n dispose() {\n this.disposed = true;\n if (this.internalMode) {\n this.internalMode.dispose();\n }\n }\n\n update(formIteration: FormIteration) {\n this.formIteration = formIteration;\n if (!this.internalMode) {\n return;\n }\n this.internalMode.update(formIteration);\n }\n}\n", "export class QueryParamState {\n private params: Map = new Map();\n private usedParams: Set = new Set();\n\n constructor(arg: string | Map = new Map()) {\n if (typeof arg === \"string\") {\n this.params = new Map(new URLSearchParams(arg));\n } else {\n this.params = new Map(arg);\n }\n }\n\n public cloneWithAdditionalParams(params: Map): QueryParamState {\n const newParams = new Map(this.params);\n params.forEach((value, key) => {\n newParams.set(key, value);\n });\n return new QueryParamState(newParams);\n }\n\n public read(key: string): string | null {\n this.usedParams.add(key);\n return this.params.get(key) ?? null;\n }\n\n public getUnusedParams(): Set {\n const unusedParams = new Set(this.params.keys());\n this.usedParams.forEach((key) => {\n unusedParams.delete(key);\n });\n return unusedParams;\n }\n\n public toString(): string {\n const searchParams = new URLSearchParams();\n this.params.forEach((value, key) => {\n searchParams.set(key, value);\n });\n return searchParams.toString();\n }\n}\n", "import {\n FullScreenMMLScene,\n MMLNetworkSource,\n NetworkedDOMWebsocketStatus,\n NetworkedDOMWebsocketStatusToString,\n StandaloneTagDebugAdapter,\n StatusUI,\n} from \"@mml-io/mml-web\";\n\nimport { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSourceDefinition } from \"./MMLSourceDefinition\";\nimport { setDebugGlobals } from \"./setDebugGlobals\";\n\nexport class TagsMode implements GraphicsMode {\n private disposed = false;\n\n private loadedState: {\n mmlNetworkSource: MMLNetworkSource;\n graphicsAdapter: StandaloneTagDebugAdapter;\n fullScreenMMLScene: FullScreenMMLScene;\n statusUI: StatusUI;\n } | null = null;\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSourceDefinition: MMLSourceDefinition,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n public readonly type = \"tags\";\n\n private async init() {\n const fullScreenMMLScene = new FullScreenMMLScene();\n document.body.append(fullScreenMMLScene.element);\n const graphicsAdapter = await StandaloneTagDebugAdapter.create(fullScreenMMLScene.element);\n if (this.disposed) {\n graphicsAdapter.dispose();\n return;\n }\n\n fullScreenMMLScene.init(graphicsAdapter);\n const statusUI = new StatusUI();\n const mmlNetworkSource = MMLNetworkSource.create({\n mmlScene: fullScreenMMLScene,\n statusUpdated: (status: NetworkedDOMWebsocketStatus) => {\n if (status === NetworkedDOMWebsocketStatus.Connected) {\n statusUI.setNoStatus();\n } else {\n statusUI.setStatus(NetworkedDOMWebsocketStatusToString(status));\n }\n },\n url: this.mmlSourceDefinition.url,\n windowTarget: this.windowTarget,\n targetForWrappers: this.targetForWrappers,\n });\n setDebugGlobals({\n mmlScene: fullScreenMMLScene,\n remoteDocumentWrapper: mmlNetworkSource.remoteDocumentWrapper,\n });\n this.loadedState = {\n mmlNetworkSource,\n graphicsAdapter,\n fullScreenMMLScene,\n statusUI,\n };\n this.update(this.formIteration);\n }\n\n public dispose() {\n this.disposed = true;\n if (this.loadedState) {\n this.loadedState.mmlNetworkSource.dispose();\n this.loadedState.graphicsAdapter.dispose();\n this.loadedState.fullScreenMMLScene.dispose();\n this.loadedState.statusUI.dispose();\n this.loadedState = null;\n }\n }\n\n update(formIteration: FormIteration) {\n formIteration.completed();\n }\n}\n", "import { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSourceDefinition } from \"./MMLSourceDefinition\";\n\nexport class ThreeJSMode implements GraphicsMode {\n private disposed = false;\n private internalMode: GraphicsMode | null = null;\n\n public readonly type = \"threejs\";\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSource: MMLSourceDefinition,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n private async init() {\n this.internalMode = await (async () => {\n const { ThreeJSModeInternal } = await import(\"./ThreeJSModeInternal\");\n return new ThreeJSModeInternal(\n this.windowTarget,\n this.targetForWrappers,\n this.mmlSource,\n this.formIteration,\n );\n })();\n if (this.disposed) {\n this.dispose();\n return;\n }\n }\n\n public dispose() {\n this.disposed = true;\n if (this.internalMode) {\n this.internalMode.dispose();\n }\n }\n\n update(formIteration: FormIteration) {\n this.formIteration = formIteration;\n if (!this.internalMode) {\n return;\n }\n this.internalMode.update(formIteration);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/HideUISection.module.css\";\n\nexport default {\n \"hidden\": \"HideUISection-module__hidden_ygtI5G__0190\",\n \"hideUiSection\": \"HideUISection-module__hide-ui-section_ygtI5G__0190\",\n \"hideUiSectionContents\": \"HideUISection-module__hide-ui-section-contents_ygtI5G__0190\"\n};\n ", "import \"esbuild-css-modules-plugin-ns-css:src/ui/tooltip.module.css\";\n\nexport default {\n \"tooltip\": \"tooltip-module__tooltip_qonKzG__0190\",\n \"tooltipInitiator\": \"tooltip-module__tooltip-initiator_qonKzG__0190\",\n \"tooltipItem\": \"tooltip-module__tooltip-item_qonKzG__0190\"\n};\n ", "import styles from \"./HideUISection.module.css\";\nimport { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport tooltipStyles from \"./tooltip.module.css\";\n\nexport class HideUISection {\n public readonly element: HTMLDivElement;\n private hideUiButton: HTMLButtonElement;\n private hideUiHeader: HTMLDivElement;\n private hideUiSectionContents: HTMLDivElement;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.className = styles.hideUiSection;\n\n this.hideUiHeader = document.createElement(\"div\");\n this.hideUiHeader.textContent = \"Hide UI\";\n this.hideUiHeader.className = sharedStyles.header;\n this.element.append(this.hideUiHeader);\n\n this.hideUiSectionContents = document.createElement(\"div\");\n this.hideUiSectionContents.className = styles.hideUiSectionContents;\n this.element.append(this.hideUiSectionContents);\n\n this.hideUiButton = document.createElement(\"button\");\n this.hideUiButton.className = sharedStyles.button;\n this.hideUiButton.textContent = \"Hide UI\";\n this.hideUiButton.addEventListener(\"click\", () => {\n setUrlParam(\"noUI\", \"true\");\n });\n this.hideUiSectionContents.append(this.hideUiButton);\n\n const warningIcon = document.createElement(\"span\");\n warningIcon.className = tooltipStyles.tooltip;\n warningIcon.setAttribute(\"data-direction\", \"left\");\n const warningIconText = document.createElement(\"span\");\n warningIconText.className = tooltipStyles.tooltipInitiator;\n warningIconText.textContent = \"\u26A0\uFE0F\";\n warningIcon.append(warningIconText);\n const warningTooltip = document.createElement(\"span\");\n warningTooltip.className = tooltipStyles.tooltipItem;\n warningTooltip.textContent =\n \"If you hide the UI, it can only be shown again by removing the noUI parameter from the URL\";\n warningIcon.append(warningTooltip);\n this.hideUiSectionContents.append(warningIcon);\n }\n\n show() {\n this.element.classList.remove(styles.hidden);\n }\n\n hide() {\n this.element.classList.add(styles.hidden);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UnusedParameters.module.css\";\n\nexport default {\n \"header\": \"UnusedParameters-module__header_BZL2TW__0190\",\n \"hidden\": \"UnusedParameters-module__hidden_BZL2TW__0190\",\n \"paramListItem\": \"UnusedParameters-module__param-list-item_BZL2TW__0190\",\n \"unusedParameters\": \"UnusedParameters-module__unused-parameters_BZL2TW__0190\"\n};\n ", "import { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport tooltipStyles from \"./tooltip.module.css\";\nimport styles from \"./UnusedParameters.module.css\";\n\nexport class UnusedParameters {\n public readonly element: HTMLDivElement;\n private header: HTMLDivElement;\n private paramsHolder: HTMLDivElement;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.classList.add(styles.unusedParameters, styles.hidden);\n\n this.header = document.createElement(\"div\");\n this.header.textContent = \"Unused Parameters\";\n this.header.className = sharedStyles.header;\n this.element.append(this.header);\n\n const warningIcon = document.createElement(\"span\");\n warningIcon.className = tooltipStyles.tooltip;\n warningIcon.setAttribute(\"data-direction\", \"left\");\n const warningIconText = document.createElement(\"span\");\n warningIconText.className = tooltipStyles.tooltipInitiator;\n warningIconText.textContent = \"\u26A0\uFE0F\";\n warningIcon.append(warningIconText);\n const warningTooltip = document.createElement(\"span\");\n warningTooltip.className = tooltipStyles.tooltipItem;\n warningTooltip.textContent = \"These parameters are not used by the viewer in the current mode\";\n warningIcon.append(warningTooltip);\n this.header.append(warningIcon);\n\n this.paramsHolder = document.createElement(\"div\");\n this.element.append(this.paramsHolder);\n }\n\n setParams(params: string[]) {\n this.paramsHolder.innerHTML = \"\";\n if (params.length === 0) {\n this.element.classList.add(styles.hidden);\n return;\n }\n\n this.element.classList.remove(styles.hidden);\n\n for (const param of params) {\n const listItem = document.createElement(\"div\");\n listItem.className = styles.paramListItem;\n const paramName = document.createElement(\"div\");\n paramName.textContent = param;\n listItem.append(paramName);\n const removeButton = document.createElement(\"button\");\n removeButton.className = sharedStyles.button;\n removeButton.textContent = \"Remove\";\n removeButton.addEventListener(\"click\", () => {\n setUrlParam(param, null);\n });\n listItem.append(removeButton);\n this.paramsHolder.append(listItem);\n }\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/ViewerUI.module.css\";\n\nexport default {\n \"contents\": \"ViewerUI-module__contents_ne7v1W__0190\",\n \"emptyState\": \"ViewerUI-module__empty-state_ne7v1W__0190\",\n \"githubLink\": \"ViewerUI-module__github-link_ne7v1W__0190\",\n \"githubLogo\": \"ViewerUI-module__github-logo_ne7v1W__0190\",\n \"header\": \"ViewerUI-module__header_ne7v1W__0190\",\n \"logo\": \"ViewerUI-module__logo_ne7v1W__0190\",\n \"menuButton\": \"ViewerUI-module__menu-button_ne7v1W__0190\",\n \"title\": \"ViewerUI-module__title_ne7v1W__0190\",\n \"viewerUi\": \"ViewerUI-module__viewer-ui_ne7v1W__0190\"\n};\n ", "import MMLLogoSVG from \"../../../../branding/src/svg/logotype/mml-logotype-white.svg\";\nimport { allGroups } from \"./fields\";\nimport GitHubLogoSVG from \"./github-mark-white.svg\";\nimport { HideUISection } from \"./HideUISection\";\nimport { UIGroup } from \"./UIGroup\";\nimport { UnusedParameters } from \"./UnusedParameters\";\nimport styles from \"./ViewerUI.module.css\";\n\nexport class ViewerUI {\n private element: HTMLDivElement;\n private contents: HTMLDivElement;\n\n private header: HTMLDivElement;\n private groups: Array = [];\n private groupHolder: HTMLDivElement;\n\n private unusedParameters: UnusedParameters;\n private hideUISection: HideUISection;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.className = styles.viewerUi;\n this.element.addEventListener(\"wheel\", (e) => e.stopPropagation());\n document.body.append(this.element);\n\n this.contents = document.createElement(\"div\");\n this.contents.className = styles.contents;\n this.contents.style.display = \"none\";\n this.element.append(this.contents);\n\n this.header = document.createElement(\"div\");\n this.header.className = styles.header;\n\n const title = document.createElement(\"div\");\n title.className = styles.title;\n const logoLink = document.createElement(\"a\");\n logoLink.target = \"_blank\";\n logoLink.href = \"https://mml.io\";\n const logo = document.createElement(\"img\");\n logo.classList.add(styles.logo);\n logo.src = MMLLogoSVG;\n logo.alt = \"MML\";\n logoLink.append(logo);\n title.append(logoLink);\n const span = document.createElement(\"span\");\n span.textContent = \" Viewer (Alpha)\";\n title.append(span);\n this.header.append(title);\n\n const githubLink = document.createElement(\"a\");\n githubLink.target = \"_blank\";\n githubLink.className = styles.githubLink;\n githubLink.href = \"https://github.com/mml-io/mml/tree/main/packages/mml-viewer\";\n const githubLogo = document.createElement(\"img\");\n githubLogo.classList.add(styles.githubLogo);\n githubLogo.src = GitHubLogoSVG;\n githubLogo.alt = \"GitHub\";\n githubLink.append(githubLogo);\n const githubSpan = document.createElement(\"span\");\n githubSpan.textContent = \"View Source\";\n githubLink.append(githubSpan);\n this.header.append(githubLink);\n\n this.contents.append(this.header);\n\n this.groupHolder = document.createElement(\"div\");\n this.contents.append(this.groupHolder);\n\n this.unusedParameters = new UnusedParameters();\n this.contents.append(this.unusedParameters.element);\n\n this.hideUISection = new HideUISection();\n this.contents.append(this.hideUISection.element);\n\n const menuIcon = document.createElement(\"button\");\n menuIcon.classList.add(styles.menuButton, \"no-copy\");\n menuIcon.textContent = \"\u2261\";\n menuIcon.addEventListener(\"click\", () => {\n this.contents.style.display = this.contents.style.display === \"none\" ? \"block\" : \"none\";\n });\n this.element.append(menuIcon);\n }\n\n addGroup(uiGroup: UIGroup) {\n this.groups.push(uiGroup);\n this.groups.sort(\n (a, b) => allGroups.indexOf(a.groupDefinition) - allGroups.indexOf(b.groupDefinition),\n );\n const index = this.groups.indexOf(uiGroup);\n if (index === this.groups.length - 1) {\n this.groupHolder.append(uiGroup.element);\n } else {\n const nextGroup = this.groups[index + 1];\n this.groupHolder.insertBefore(uiGroup.element, nextGroup.element);\n }\n }\n\n showUnusedParams(params: string[]) {\n this.unusedParameters.setParams(params);\n }\n\n showAddressMenu() {\n this.element.classList.add(styles.emptyState);\n this.contents.style.display = \"block\";\n this.hideUISection.hide();\n }\n\n hideAddressMenu() {\n this.element.classList.remove(styles.emptyState);\n this.hideUISection.show();\n }\n\n removeGroup(group: UIGroup) {\n this.groupHolder.removeChild(group.element);\n this.groups = this.groups.filter((g) => g !== group);\n }\n\n show() {\n this.element.style.display = \"block\";\n }\n\n hide() {\n this.element.style.display = \"none\";\n }\n}\n", "import { parseBoolAttribute } from \"@mml-io/mml-web\";\n\nimport { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSourceDefinition } from \"./MMLSourceDefinition\";\nimport { PlayCanvasMode } from \"./PlayCanvasMode\";\nimport { QueryParamState } from \"./QueryParamState\";\nimport { TagsMode } from \"./TagsMode\";\nimport { ThreeJSMode } from \"./ThreeJSMode\";\nimport { rendererField, urlField } from \"./ui/fields\";\nimport { ViewerUI } from \"./ui/ViewerUI\";\n\nexport class StandaloneViewer {\n private viewerUI = new ViewerUI();\n private graphicsMode: GraphicsMode | null = null;\n private formIteration: FormIteration | null = null;\n private source: MMLSourceDefinition | null = null;\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n ) {\n window.addEventListener(\"popstate\", () => {\n this.handleParams();\n });\n this.handleParams();\n }\n\n private handleParams() {\n const queryParamState = new QueryParamState(window.location.search);\n const formIteration = new FormIteration(queryParamState, this.viewerUI, this.formIteration);\n this.formIteration = formIteration;\n\n const url = formIteration.getFieldValue(urlField);\n const renderer = formIteration.getFieldValue(rendererField);\n const noUI = parseBoolAttribute(queryParamState.read(\"noUI\"), false);\n if (noUI) {\n this.viewerUI.hide();\n } else {\n this.viewerUI.show();\n }\n\n let source: MMLSourceDefinition;\n if (url) {\n source = { url };\n if (this.source && this.source.url !== url) {\n if (this.graphicsMode) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n }\n this.source = source;\n } else {\n if (this.graphicsMode) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n this.viewerUI.showAddressMenu();\n this.formIteration.completed();\n return;\n }\n this.viewerUI.hideAddressMenu();\n\n if (this.graphicsMode && this.graphicsMode.type !== renderer) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n if (!this.graphicsMode) {\n if (renderer === \"playcanvas\") {\n this.graphicsMode = new PlayCanvasMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n } else if (renderer === \"threejs\") {\n this.graphicsMode = new ThreeJSMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n } else if (renderer === \"tags\") {\n this.graphicsMode = new TagsMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n }\n } else {\n this.graphicsMode.update(formIteration);\n }\n }\n}\n", "import { IframeWrapper, registerCustomElementsToWindow } from \"@mml-io/mml-web\";\n\nimport { StandaloneViewer } from \"./StandaloneViewer\";\n\ndeclare global {\n interface Window {\n \"mml-viewer\": StandaloneViewer;\n }\n}\n\nwindow.addEventListener(\"load\", () => {\n (async () => {\n const { iframeWindow, iframeBody } = await IframeWrapper.create();\n const windowTarget = iframeWindow;\n const targetForWrappers = iframeBody;\n registerCustomElementsToWindow(windowTarget);\n\n /*\n Add a transparent pixel with a backdrop filter to force the background to\n be white in Chrome (and potentially other browsers). Without this the\n background is grey unless the menu UI is opened.\n */\n const transparentPixel = document.createElement(\"div\");\n transparentPixel.style.width = \"1px\";\n transparentPixel.style.height = \"1px\";\n transparentPixel.style.position = \"absolute\";\n transparentPixel.style.top = \"1px\";\n transparentPixel.style.left = \"1px\";\n transparentPixel.style.userSelect = \"none\";\n transparentPixel.style.pointerEvents = \"none\";\n transparentPixel.style.backdropFilter = \"blur(1px)\";\n document.body.append(transparentPixel);\n\n const standaloneViewer = new StandaloneViewer(windowTarget, targetForWrappers);\n window[\"mml-viewer\"] = standaloneViewer;\n })();\n});\n"], + "mappings": "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", + "names": ["input"] +} diff --git a/pull/212/v1/mml-logotype-white-YIZ3ZTFD.svg b/pull/212/v1/mml-logotype-white-YIZ3ZTFD.svg new file mode 100644 index 00000000..319d8ec3 --- /dev/null +++ b/pull/212/v1/mml-logotype-white-YIZ3ZTFD.svg @@ -0,0 +1,8 @@ + + + + + + + +